changeset 1512:244ad1e4e76a

reorganization of folders
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 07 Jul 2020 16:21:02 +0200
parents 9dfeee74c1e6
children 24068dd8c445
files Docs/stone-object-model-reference.md Framework/Deprecated/GuiAdapter.cpp Framework/Deprecated/GuiAdapter.h Framework/Deprecated/Layers/CircleMeasureTracker.cpp Framework/Deprecated/Layers/CircleMeasureTracker.h Framework/Deprecated/Layers/ColorFrameRenderer.cpp Framework/Deprecated/Layers/ColorFrameRenderer.h Framework/Deprecated/Layers/DicomSeriesVolumeSlicer.cpp Framework/Deprecated/Layers/DicomSeriesVolumeSlicer.h Framework/Deprecated/Layers/DicomStructureSetSlicer.cpp Framework/Deprecated/Layers/DicomStructureSetSlicer.h Framework/Deprecated/Layers/FrameRenderer.cpp Framework/Deprecated/Layers/FrameRenderer.h Framework/Deprecated/Layers/GrayscaleFrameRenderer.cpp Framework/Deprecated/Layers/GrayscaleFrameRenderer.h Framework/Deprecated/Layers/ILayerRenderer.h Framework/Deprecated/Layers/IVolumeSlicer.h Framework/Deprecated/Layers/LineLayerRenderer.cpp Framework/Deprecated/Layers/LineLayerRenderer.h Framework/Deprecated/Layers/LineMeasureTracker.cpp Framework/Deprecated/Layers/LineMeasureTracker.h Framework/Deprecated/Layers/RenderStyle.cpp Framework/Deprecated/Layers/RenderStyle.h Framework/Deprecated/Layers/SeriesFrameRendererFactory.cpp Framework/Deprecated/Layers/SeriesFrameRendererFactory.h Framework/Deprecated/Layers/SingleFrameRendererFactory.cpp Framework/Deprecated/Layers/SingleFrameRendererFactory.h Framework/Deprecated/Layers/SliceOutlineRenderer.cpp Framework/Deprecated/Layers/SliceOutlineRenderer.h Framework/Deprecated/Loaders/DicomStructureSetLoader2.cpp Framework/Deprecated/Loaders/DicomStructureSetLoader2.h Framework/Deprecated/Messages/LockingEmitter.cpp Framework/Deprecated/Messages/LockingEmitter.h Framework/Deprecated/Radiography/RadiographyAlphaLayer.cpp Framework/Deprecated/Radiography/RadiographyAlphaLayer.h Framework/Deprecated/Radiography/RadiographyDicomLayer.cpp Framework/Deprecated/Radiography/RadiographyDicomLayer.h Framework/Deprecated/Radiography/RadiographyLayer.cpp Framework/Deprecated/Radiography/RadiographyLayer.h Framework/Deprecated/Radiography/RadiographyLayerCropTracker.cpp Framework/Deprecated/Radiography/RadiographyLayerCropTracker.h Framework/Deprecated/Radiography/RadiographyLayerMaskTracker.cpp Framework/Deprecated/Radiography/RadiographyLayerMaskTracker.h Framework/Deprecated/Radiography/RadiographyLayerMoveTracker.cpp Framework/Deprecated/Radiography/RadiographyLayerMoveTracker.h Framework/Deprecated/Radiography/RadiographyLayerResizeTracker.cpp Framework/Deprecated/Radiography/RadiographyLayerResizeTracker.h Framework/Deprecated/Radiography/RadiographyLayerRotateTracker.cpp Framework/Deprecated/Radiography/RadiographyLayerRotateTracker.h Framework/Deprecated/Radiography/RadiographyMaskLayer.cpp Framework/Deprecated/Radiography/RadiographyMaskLayer.h Framework/Deprecated/Radiography/RadiographyScene.cpp Framework/Deprecated/Radiography/RadiographyScene.h Framework/Deprecated/Radiography/RadiographySceneCommand.cpp Framework/Deprecated/Radiography/RadiographySceneCommand.h Framework/Deprecated/Radiography/RadiographySceneReader.cpp Framework/Deprecated/Radiography/RadiographySceneReader.h Framework/Deprecated/Radiography/RadiographySceneWriter.cpp Framework/Deprecated/Radiography/RadiographySceneWriter.h Framework/Deprecated/Radiography/RadiographyTextLayer.cpp Framework/Deprecated/Radiography/RadiographyTextLayer.h Framework/Deprecated/Radiography/RadiographyWidget.cpp Framework/Deprecated/Radiography/RadiographyWidget.h Framework/Deprecated/Radiography/RadiographyWindowingTracker.cpp Framework/Deprecated/Radiography/RadiographyWindowingTracker.h Framework/Deprecated/SmartLoader.cpp Framework/Deprecated/SmartLoader.h Framework/Deprecated/Toolbox/BaseWebService.cpp Framework/Deprecated/Toolbox/BaseWebService.h Framework/Deprecated/Toolbox/DicomFrameConverter.cpp Framework/Deprecated/Toolbox/DicomFrameConverter.h Framework/Deprecated/Toolbox/DownloadStack.cpp Framework/Deprecated/Toolbox/DownloadStack.h Framework/Deprecated/Toolbox/IDelayedCallExecutor.h Framework/Deprecated/Toolbox/ISeriesLoader.h Framework/Deprecated/Toolbox/IWebService.cpp Framework/Deprecated/Toolbox/IWebService.h Framework/Deprecated/Toolbox/MessagingToolbox.cpp Framework/Deprecated/Toolbox/MessagingToolbox.h Framework/Deprecated/Toolbox/OrthancApiClient.cpp Framework/Deprecated/Toolbox/OrthancApiClient.h Framework/Deprecated/Toolbox/OrthancSlicesLoader.cpp Framework/Deprecated/Toolbox/OrthancSlicesLoader.h Framework/Deprecated/Toolbox/ParallelSlices.cpp Framework/Deprecated/Toolbox/ParallelSlices.h Framework/Deprecated/Toolbox/ParallelSlicesCursor.cpp Framework/Deprecated/Toolbox/ParallelSlicesCursor.h Framework/Deprecated/Toolbox/Slice.cpp Framework/Deprecated/Toolbox/Slice.h Framework/Deprecated/Toolbox/ViewportGeometry.cpp Framework/Deprecated/Toolbox/ViewportGeometry.h Framework/Deprecated/Viewport/CairoFont.cpp Framework/Deprecated/Viewport/CairoFont.h Framework/Deprecated/Viewport/IMouseTracker.h Framework/Deprecated/Viewport/IStatusBar.h Framework/Deprecated/Viewport/IViewport.h Framework/Deprecated/Viewport/WidgetViewport.cpp Framework/Deprecated/Viewport/WidgetViewport.h Framework/Deprecated/Volumes/ISlicedVolume.h Framework/Deprecated/Volumes/IVolumeLoader.h Framework/Deprecated/Volumes/StructureSetLoader.cpp Framework/Deprecated/Volumes/StructureSetLoader.h Framework/Deprecated/Widgets/CairoWidget.cpp Framework/Deprecated/Widgets/CairoWidget.h Framework/Deprecated/Widgets/EmptyWidget.cpp Framework/Deprecated/Widgets/EmptyWidget.h Framework/Deprecated/Widgets/IWidget.h Framework/Deprecated/Widgets/IWorldSceneInteractor.h Framework/Deprecated/Widgets/IWorldSceneMouseTracker.h Framework/Deprecated/Widgets/LayoutWidget.cpp Framework/Deprecated/Widgets/LayoutWidget.h Framework/Deprecated/Widgets/PanMouseTracker.cpp Framework/Deprecated/Widgets/PanMouseTracker.h Framework/Deprecated/Widgets/PanZoomMouseTracker.cpp Framework/Deprecated/Widgets/PanZoomMouseTracker.h Framework/Deprecated/Widgets/SliceViewerWidget.cpp Framework/Deprecated/Widgets/SliceViewerWidget.h Framework/Deprecated/Widgets/TestCairoWidget.cpp Framework/Deprecated/Widgets/TestCairoWidget.h Framework/Deprecated/Widgets/TestWorldSceneWidget.cpp Framework/Deprecated/Widgets/TestWorldSceneWidget.h Framework/Deprecated/Widgets/WidgetBase.cpp Framework/Deprecated/Widgets/WidgetBase.h Framework/Deprecated/Widgets/WorldSceneWidget.cpp Framework/Deprecated/Widgets/WorldSceneWidget.h Framework/Deprecated/Widgets/ZoomMouseTracker.cpp Framework/Deprecated/Widgets/ZoomMouseTracker.h Framework/Deprecated/dev.h Framework/Fonts/FontRenderer.cpp Framework/Fonts/FontRenderer.h Framework/Fonts/Glyph.cpp Framework/Fonts/Glyph.h Framework/Fonts/GlyphAlphabet.cpp Framework/Fonts/GlyphAlphabet.h Framework/Fonts/GlyphBitmapAlphabet.cpp Framework/Fonts/GlyphBitmapAlphabet.h Framework/Fonts/GlyphTextureAlphabet.cpp Framework/Fonts/GlyphTextureAlphabet.h Framework/Fonts/OpenGLTextCoordinates.cpp Framework/Fonts/OpenGLTextCoordinates.h Framework/Fonts/TextBoundingBox.cpp Framework/Fonts/TextBoundingBox.h Framework/Loaders/BasicFetchingItemsSorter.cpp Framework/Loaders/BasicFetchingItemsSorter.h Framework/Loaders/BasicFetchingStrategy.cpp Framework/Loaders/BasicFetchingStrategy.h Framework/Loaders/DicomResourcesLoader.cpp Framework/Loaders/DicomResourcesLoader.h Framework/Loaders/DicomSource.cpp Framework/Loaders/DicomSource.h Framework/Loaders/DicomStructureSetLoader.cpp Framework/Loaders/DicomStructureSetLoader.h Framework/Loaders/DicomVolumeLoader.cpp Framework/Loaders/DicomVolumeLoader.h Framework/Loaders/GenericLoadersContext.cpp Framework/Loaders/GenericLoadersContext.h Framework/Loaders/IFetchingItemsSorter.h Framework/Loaders/IFetchingStrategy.h Framework/Loaders/ILoaderFactory.h Framework/Loaders/ILoadersContext.h Framework/Loaders/LoadedDicomResources.cpp Framework/Loaders/LoadedDicomResources.h Framework/Loaders/LoaderCache.cpp Framework/Loaders/LoaderCache.h Framework/Loaders/LoaderStateMachine.cpp Framework/Loaders/LoaderStateMachine.h Framework/Loaders/OracleScheduler.cpp Framework/Loaders/OracleScheduler.h Framework/Loaders/OrthancMultiframeVolumeLoader.cpp Framework/Loaders/OrthancMultiframeVolumeLoader.h Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h Framework/Loaders/SeriesFramesLoader.cpp Framework/Loaders/SeriesFramesLoader.h Framework/Loaders/SeriesMetadataLoader.cpp Framework/Loaders/SeriesMetadataLoader.h Framework/Loaders/SeriesOrderedFrames.cpp Framework/Loaders/SeriesOrderedFrames.h Framework/Loaders/SeriesThumbnailsLoader.cpp Framework/Loaders/SeriesThumbnailsLoader.h Framework/Loaders/WebAssemblyLoadersContext.cpp Framework/Loaders/WebAssemblyLoadersContext.h Framework/Messages/ICallable.h Framework/Messages/IMessage.h Framework/Messages/IMessageEmitter.h Framework/Messages/IObservable.cpp Framework/Messages/IObservable.h Framework/Messages/IObserver.h Framework/Messages/ObserverBase.h Framework/OpenGL/IOpenGLContext.h Framework/OpenGL/OpenGLIncludes.h Framework/OpenGL/OpenGLProgram.cpp Framework/OpenGL/OpenGLProgram.h Framework/OpenGL/OpenGLShader.cpp Framework/OpenGL/OpenGLShader.h Framework/OpenGL/OpenGLTexture.cpp Framework/OpenGL/OpenGLTexture.h Framework/OpenGL/SdlOpenGLContext.cpp Framework/OpenGL/SdlOpenGLContext.h Framework/OpenGL/WebAssemblyOpenGLContext.cpp Framework/OpenGL/WebAssemblyOpenGLContext.h Framework/Oracle/GenericOracleRunner.cpp Framework/Oracle/GenericOracleRunner.h Framework/Oracle/GetOrthancImageCommand.cpp Framework/Oracle/GetOrthancImageCommand.h Framework/Oracle/GetOrthancWebViewerJpegCommand.cpp Framework/Oracle/GetOrthancWebViewerJpegCommand.h Framework/Oracle/HttpCommand.cpp Framework/Oracle/HttpCommand.h Framework/Oracle/IOracle.h Framework/Oracle/IOracleCommand.h Framework/Oracle/OracleCommandBase.cpp Framework/Oracle/OracleCommandBase.h Framework/Oracle/OracleCommandExceptionMessage.h Framework/Oracle/OrthancRestApiCommand.cpp Framework/Oracle/OrthancRestApiCommand.h Framework/Oracle/ParseDicomFromFileCommand.cpp Framework/Oracle/ParseDicomFromFileCommand.h Framework/Oracle/ParseDicomFromWadoCommand.cpp Framework/Oracle/ParseDicomFromWadoCommand.h Framework/Oracle/ParseDicomSuccessMessage.cpp Framework/Oracle/ParseDicomSuccessMessage.h Framework/Oracle/ReadFileCommand.h Framework/Oracle/SleepOracleCommand.h Framework/Oracle/ThreadedOracle.cpp Framework/Oracle/ThreadedOracle.h Framework/Oracle/WebAssemblyOracle.cpp Framework/Oracle/WebAssemblyOracle.h Framework/OrthancStone.h Framework/Scene2D/CairoCompositor.cpp Framework/Scene2D/CairoCompositor.h Framework/Scene2D/Color.h Framework/Scene2D/ColorSceneLayer.h Framework/Scene2D/ColorTextureSceneLayer.cpp Framework/Scene2D/ColorTextureSceneLayer.h Framework/Scene2D/FloatTextureSceneLayer.cpp Framework/Scene2D/FloatTextureSceneLayer.h Framework/Scene2D/GrayscaleStyleConfigurator.cpp Framework/Scene2D/GrayscaleStyleConfigurator.h Framework/Scene2D/ICompositor.h Framework/Scene2D/ILayerStyleConfigurator.h Framework/Scene2D/IPointerTracker.h Framework/Scene2D/ISceneLayer.h Framework/Scene2D/InfoPanelSceneLayer.cpp Framework/Scene2D/InfoPanelSceneLayer.h Framework/Scene2D/Internals/CairoBaseRenderer.h Framework/Scene2D/Internals/CairoColorTextureRenderer.cpp Framework/Scene2D/Internals/CairoColorTextureRenderer.h Framework/Scene2D/Internals/CairoFloatTextureRenderer.cpp Framework/Scene2D/Internals/CairoFloatTextureRenderer.h Framework/Scene2D/Internals/CairoInfoPanelRenderer.cpp Framework/Scene2D/Internals/CairoInfoPanelRenderer.h Framework/Scene2D/Internals/CairoLookupTableTextureRenderer.cpp Framework/Scene2D/Internals/CairoLookupTableTextureRenderer.h Framework/Scene2D/Internals/CairoPolylineRenderer.cpp Framework/Scene2D/Internals/CairoPolylineRenderer.h Framework/Scene2D/Internals/CairoTextRenderer.cpp Framework/Scene2D/Internals/CairoTextRenderer.h Framework/Scene2D/Internals/CompositorHelper.cpp Framework/Scene2D/Internals/CompositorHelper.h Framework/Scene2D/Internals/FixedPointAligner.cpp Framework/Scene2D/Internals/FixedPointAligner.h Framework/Scene2D/Internals/ICairoContextProvider.h Framework/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.cpp Framework/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.h Framework/Scene2D/Internals/OpenGLBasicPolylineRenderer.cpp Framework/Scene2D/Internals/OpenGLBasicPolylineRenderer.h Framework/Scene2D/Internals/OpenGLColorTextureProgram.cpp Framework/Scene2D/Internals/OpenGLColorTextureProgram.h Framework/Scene2D/Internals/OpenGLColorTextureRenderer.cpp Framework/Scene2D/Internals/OpenGLColorTextureRenderer.h Framework/Scene2D/Internals/OpenGLFloatTextureProgram.cpp Framework/Scene2D/Internals/OpenGLFloatTextureProgram.h Framework/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp Framework/Scene2D/Internals/OpenGLFloatTextureRenderer.h Framework/Scene2D/Internals/OpenGLInfoPanelRenderer.cpp Framework/Scene2D/Internals/OpenGLInfoPanelRenderer.h Framework/Scene2D/Internals/OpenGLLinesProgram.cpp Framework/Scene2D/Internals/OpenGLLinesProgram.h Framework/Scene2D/Internals/OpenGLLookupTableTextureRenderer.cpp Framework/Scene2D/Internals/OpenGLLookupTableTextureRenderer.h Framework/Scene2D/Internals/OpenGLShaderVersionDirective.h Framework/Scene2D/Internals/OpenGLTextProgram.cpp Framework/Scene2D/Internals/OpenGLTextProgram.h Framework/Scene2D/Internals/OpenGLTextRenderer.cpp Framework/Scene2D/Internals/OpenGLTextRenderer.h Framework/Scene2D/Internals/OpenGLTextureProgram.cpp Framework/Scene2D/Internals/OpenGLTextureProgram.h Framework/Scene2D/LookupTableStyleConfigurator.cpp Framework/Scene2D/LookupTableStyleConfigurator.h Framework/Scene2D/LookupTableTextureSceneLayer.cpp Framework/Scene2D/LookupTableTextureSceneLayer.h Framework/Scene2D/NullLayer.h Framework/Scene2D/OpenGLCompositor.cpp Framework/Scene2D/OpenGLCompositor.h Framework/Scene2D/PanSceneTracker.cpp Framework/Scene2D/PanSceneTracker.h Framework/Scene2D/PointerEvent.cpp Framework/Scene2D/PointerEvent.h Framework/Scene2D/PolylineSceneLayer.cpp Framework/Scene2D/PolylineSceneLayer.h Framework/Scene2D/RotateSceneTracker.cpp Framework/Scene2D/RotateSceneTracker.h Framework/Scene2D/Scene2D.cpp Framework/Scene2D/Scene2D.h Framework/Scene2D/ScenePoint2D.h Framework/Scene2D/TextSceneLayer.cpp Framework/Scene2D/TextSceneLayer.h Framework/Scene2D/TextureBaseSceneLayer.cpp Framework/Scene2D/TextureBaseSceneLayer.h Framework/Scene2D/ZoomSceneTracker.cpp Framework/Scene2D/ZoomSceneTracker.h Framework/Scene2DViewport/AngleMeasureTool.cpp Framework/Scene2DViewport/AngleMeasureTool.h Framework/Scene2DViewport/CreateAngleMeasureCommand.cpp Framework/Scene2DViewport/CreateAngleMeasureCommand.h Framework/Scene2DViewport/CreateAngleMeasureTracker.cpp Framework/Scene2DViewport/CreateAngleMeasureTracker.h Framework/Scene2DViewport/CreateCircleMeasureTracker.cpp Framework/Scene2DViewport/CreateCircleMeasureTracker.h Framework/Scene2DViewport/CreateLineMeasureCommand.cpp Framework/Scene2DViewport/CreateLineMeasureCommand.h Framework/Scene2DViewport/CreateLineMeasureTracker.cpp Framework/Scene2DViewport/CreateLineMeasureTracker.h Framework/Scene2DViewport/CreateMeasureTracker.cpp Framework/Scene2DViewport/CreateMeasureTracker.h Framework/Scene2DViewport/CreateSimpleTrackerAdapter.cpp Framework/Scene2DViewport/EditAngleMeasureCommand.cpp Framework/Scene2DViewport/EditAngleMeasureCommand.h Framework/Scene2DViewport/EditAngleMeasureTracker.cpp Framework/Scene2DViewport/EditAngleMeasureTracker.h Framework/Scene2DViewport/EditLineMeasureCommand.cpp Framework/Scene2DViewport/EditLineMeasureCommand.h Framework/Scene2DViewport/EditLineMeasureTracker.cpp Framework/Scene2DViewport/EditLineMeasureTracker.h Framework/Scene2DViewport/IFlexiblePointerTracker.h Framework/Scene2DViewport/LayerHolder.cpp Framework/Scene2DViewport/LayerHolder.h Framework/Scene2DViewport/LineMeasureTool.cpp Framework/Scene2DViewport/LineMeasureTool.h Framework/Scene2DViewport/MeasureCommands.cpp Framework/Scene2DViewport/MeasureCommands.h Framework/Scene2DViewport/MeasureTool.cpp Framework/Scene2DViewport/MeasureTool.h Framework/Scene2DViewport/MeasureToolsToolbox.cpp Framework/Scene2DViewport/MeasureToolsToolbox.h Framework/Scene2DViewport/MeasureTrackers.cpp Framework/Scene2DViewport/MeasureTrackers.h Framework/Scene2DViewport/OneGesturePointerTracker.cpp Framework/Scene2DViewport/OneGesturePointerTracker.h Framework/Scene2DViewport/PredeclaredTypes.h Framework/Scene2DViewport/UndoStack.cpp Framework/Scene2DViewport/UndoStack.h Framework/Scene2DViewport/ViewportController.cpp Framework/Scene2DViewport/ViewportController.h Framework/StoneEnumerations.cpp Framework/StoneEnumerations.h Framework/StoneException.h Framework/StoneInitialization.cpp Framework/StoneInitialization.h Framework/Toolbox/AffineTransform2D.cpp Framework/Toolbox/AffineTransform2D.h Framework/Toolbox/CoordinateSystem3D.cpp Framework/Toolbox/CoordinateSystem3D.h Framework/Toolbox/DicomInstanceParameters.cpp Framework/Toolbox/DicomInstanceParameters.h Framework/Toolbox/DicomStructure2.cpp Framework/Toolbox/DicomStructure2.h Framework/Toolbox/DicomStructurePolygon2.cpp Framework/Toolbox/DicomStructurePolygon2.h Framework/Toolbox/DicomStructureSet.cpp Framework/Toolbox/DicomStructureSet.h Framework/Toolbox/DicomStructureSet2.cpp Framework/Toolbox/DicomStructureSet2.h Framework/Toolbox/DicomStructureSetUtils.cpp Framework/Toolbox/DicomStructureSetUtils.h Framework/Toolbox/DisjointDataSet.h Framework/Toolbox/DynamicBitmap.cpp Framework/Toolbox/DynamicBitmap.h Framework/Toolbox/Extent2D.cpp Framework/Toolbox/Extent2D.h Framework/Toolbox/FiniteProjectiveCamera.cpp Framework/Toolbox/FiniteProjectiveCamera.h Framework/Toolbox/GenericToolbox.cpp Framework/Toolbox/GenericToolbox.h Framework/Toolbox/GeometryToolbox.cpp Framework/Toolbox/GeometryToolbox.h Framework/Toolbox/ImageGeometry.cpp Framework/Toolbox/ImageGeometry.h Framework/Toolbox/ImageToolbox.cpp Framework/Toolbox/ImageToolbox.h Framework/Toolbox/LinearAlgebra.cpp Framework/Toolbox/LinearAlgebra.h Framework/Toolbox/OrthancDatasets/DicomDatasetReader.cpp Framework/Toolbox/OrthancDatasets/DicomDatasetReader.h Framework/Toolbox/OrthancDatasets/DicomPath.cpp Framework/Toolbox/OrthancDatasets/DicomPath.h Framework/Toolbox/OrthancDatasets/FullOrthancDataset.cpp Framework/Toolbox/OrthancDatasets/FullOrthancDataset.h Framework/Toolbox/OrthancDatasets/IDicomDataset.h Framework/Toolbox/OrthancDatasets/IOrthancConnection.cpp Framework/Toolbox/OrthancDatasets/IOrthancConnection.h Framework/Toolbox/OrthancDatasets/NOTES.txt Framework/Toolbox/OrthancDatasets/OrthancHttpConnection.cpp Framework/Toolbox/OrthancDatasets/OrthancHttpConnection.h Framework/Toolbox/OrthancDatasets/SimplifiedOrthancDataset.cpp Framework/Toolbox/OrthancDatasets/SimplifiedOrthancDataset.h Framework/Toolbox/ParsedDicomCache.cpp Framework/Toolbox/ParsedDicomCache.h Framework/Toolbox/ParsedDicomDataset.cpp Framework/Toolbox/ParsedDicomDataset.h Framework/Toolbox/PixelTestPatterns.h Framework/Toolbox/ShearWarpProjectiveTransform.cpp Framework/Toolbox/ShearWarpProjectiveTransform.h Framework/Toolbox/SlicesSorter.cpp Framework/Toolbox/SlicesSorter.h Framework/Toolbox/SortedFrames.cpp Framework/Toolbox/SortedFrames.h Framework/Toolbox/SubpixelReader.h Framework/Toolbox/SubvoxelReader.h Framework/Toolbox/TextRenderer.cpp Framework/Toolbox/TextRenderer.h Framework/Toolbox/UndoRedoStack.cpp Framework/Toolbox/UndoRedoStack.h Framework/Viewport/IViewport.h Framework/Viewport/SdlViewport.cpp Framework/Viewport/SdlViewport.h Framework/Viewport/SdlWindow.cpp Framework/Viewport/SdlWindow.h Framework/Viewport/WebAssemblyCairoViewport.cpp Framework/Viewport/WebAssemblyCairoViewport.h Framework/Viewport/WebAssemblyViewport.cpp Framework/Viewport/WebAssemblyViewport.h Framework/Viewport/WebGLViewport.cpp Framework/Viewport/WebGLViewport.h Framework/Viewport/WebGLViewportsRegistry.cpp Framework/Viewport/WebGLViewportsRegistry.h Framework/Volumes/DicomStructureSetSlicer2.cpp Framework/Volumes/DicomStructureSetSlicer2.h Framework/Volumes/DicomVolumeImage.cpp Framework/Volumes/DicomVolumeImage.h Framework/Volumes/DicomVolumeImageMPRSlicer.cpp Framework/Volumes/DicomVolumeImageMPRSlicer.h Framework/Volumes/DicomVolumeImageReslicer.cpp Framework/Volumes/DicomVolumeImageReslicer.h Framework/Volumes/IGeometryProvider.h Framework/Volumes/IVolumeSlicer.cpp Framework/Volumes/IVolumeSlicer.h Framework/Volumes/ImageBuffer3D.cpp Framework/Volumes/ImageBuffer3D.h Framework/Volumes/OrientedVolumeBoundingBox.cpp Framework/Volumes/OrientedVolumeBoundingBox.h Framework/Volumes/VolumeImageGeometry.cpp Framework/Volumes/VolumeImageGeometry.h Framework/Volumes/VolumeReslicer.cpp Framework/Volumes/VolumeReslicer.h Framework/Volumes/VolumeSceneLayerSource.cpp Framework/Volumes/VolumeSceneLayerSource.h Framework/Wrappers/CairoContext.cpp Framework/Wrappers/CairoContext.h Framework/Wrappers/CairoSurface.cpp Framework/Wrappers/CairoSurface.h OrthancStone/Docs/stone-object-model-reference.md OrthancStone/Resources/CMake/CairoConfiguration.cmake OrthancStone/Resources/CMake/FreetypeConfiguration.cmake OrthancStone/Resources/CMake/GlewConfiguration.cmake OrthancStone/Resources/CMake/LinuxStandardBaseUic.py OrthancStone/Resources/CMake/OrthancStoneConfiguration.cmake OrthancStone/Resources/CMake/OrthancStoneParameters.cmake OrthancStone/Resources/CMake/PixmanConfiguration.cmake OrthancStone/Resources/CMake/PixmanConfiguration.patch OrthancStone/Resources/CMake/SdlConfiguration.cmake OrthancStone/Resources/CMake/Version.cmake OrthancStone/Resources/CMake/cairo-features.h OrthancStone/Resources/Colormaps/GenerateColormaps.py OrthancStone/Resources/Colormaps/blue.lut OrthancStone/Resources/Colormaps/green.lut OrthancStone/Resources/Colormaps/hot.lut OrthancStone/Resources/Colormaps/jet.lut OrthancStone/Resources/Colormaps/red.lut OrthancStone/Resources/Computations/ComputeShearOnSlice.py OrthancStone/Resources/Computations/ComputeShearParameters.py OrthancStone/Resources/Computations/ComputeWarp.py OrthancStone/Resources/Computations/IntersectSegmentAndHorizontalLine.py OrthancStone/Resources/Computations/IntersectSegmentAndVerticalLine.py OrthancStone/Resources/Conventions.txt OrthancStone/Resources/Graveyard/Deprecated/Applications/Commands/BaseCommands.yml OrthancStone/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationContext.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationContext.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationRunner.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationRunner.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Generic/Scene2DInteractor.h OrthancStone/Resources/Graveyard/Deprecated/Applications/IStoneApplication.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QCairoWidget.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QCairoWidget.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QStoneMainWindow.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QStoneMainWindow.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QtStoneApplicationRunner.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QtStoneApplicationRunner.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/BasicPetCtFusionApplication.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/CMakeLists.txt OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/CMakeLists.txt.old OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/EmptyApplication.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/LayoutPetCtFusionApplication.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.ui OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.ui OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleQtApplicationRunner.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleApplicationBase.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleInteractor.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleList.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleMainNative.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleMainWasm.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Samples-status.md OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/AppStatus.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.ui OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/mainQt.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/mainWasm.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/simple-viewer.html OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/simple-viewer.ts OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/styles.css OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/tsconfig-simple-viewer.json OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewerApplicationSingleFile.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleFrameApplication.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleFrameEditorApplication.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleVolumeApplication.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands.yml OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generate.py OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generated.hpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generated.ts OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SynchronizedSeriesApplication.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/TestPatternApplication.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/index.html OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/samples-styles.css OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.html OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.ts OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.tsconfig.json OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.html OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.ts OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.tsconfig.json OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.html OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.ts OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.tsconfig.json OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/tsconfig-samples.json OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-wasm.sh OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-wasm.sh.old OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-web-ext.sh OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-web.sh OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/get-requirements-windows.ps1 OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/nginx.local.conf OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/package-lock.json OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/CMakeLists.txt OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-sdl-msvc15.ps1 OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-wasm.sh OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-web.sh OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/index.html OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/main.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/nginx.local.conf OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.html OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.ts OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.tsconfig.json OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/samples-styles.css OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/start-serving-files.sh OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/stop-serving-files.sh OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/tsconfig-samples.json OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/tsconfig-stone.json OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlCairoSurface.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlCairoSurface.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlEngine.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlEngine.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlOrthancSurface.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlOrthancSurface.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlStoneApplicationRunner.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlStoneApplicationRunner.h OrthancStone/Resources/Graveyard/Deprecated/Applications/StoneApplicationContext.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/StoneApplicationContext.h OrthancStone/Resources/Graveyard/Deprecated/Applications/Wasm/StartupParametersBuilder.cpp OrthancStone/Resources/Graveyard/Deprecated/Applications/Wasm/StartupParametersBuilder.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/DelayedCallCommand.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/DelayedCallCommand.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/IOracleCommand.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/Oracle.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/Oracle.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/OracleDelayedCallExecutor.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/OracleWebService.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/OracleWebService.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceCommandBase.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceCommandBase.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceDeleteCommand.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceDeleteCommand.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceGetCommand.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceGetCommand.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServicePostCommand.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServicePostCommand.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/Defaults.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/Defaults.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.js OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmPlatformApplicationAdapter.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmPlatformApplicationAdapter.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmViewport.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmViewport.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.cpp OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.h OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.js OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/default-library.js OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/logger.ts OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/stone-framework-loader.ts OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/tsconfig-stone.json OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/wasm-application-runner.ts OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/wasm-viewport.ts OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground.ts OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground2.ts OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground3.ts OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground4.py OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/runts.ps1 OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/test_stonegen.html OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/test_stonegen.ts OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/tsconfig.json OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/README.md OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/stonegentool.py OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/stonegentool_test.py OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/template.in.h.j2 OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/template.in.ts.j2 OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/CMakeLists.txt OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/README.md OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/conanfile.txt OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/main.cpp OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/test_data/test_Message2.json OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/CMakeLists.txt OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/DefaultLibrary.js OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/build-web.sh OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/build.sh OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/json/json-forwards.h OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/json/json.h OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/jsoncpp.cpp OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/main.cpp OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/serve.py OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/styles.css OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/testWasmIntegrated.html OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/testWasmIntegrated.ts OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/test_data/test2.yaml OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/test_data/testTestStoneCodeGen.yaml OrthancStone/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/BasicScene.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/BasicScene.h OrthancStone/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/mainQt.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/mainSdl.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.h OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.ui OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/CMakeLists.txt OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/QStoneOpenGlWidget.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/QStoneOpenGlWidget.h OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/Scene2DInteractor.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/Scene2DInteractor.h OrthancStone/Resources/Graveyard/Deprecated/Samples/README.md OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/BasicScene.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/CMakeLists.txt OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/FusionMprSdl.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/FusionMprSdl.h OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/Loader.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/RadiographyEditor.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSample.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSampleApp.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSampleApp.h OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/cpp.hint OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicMPR.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicMPR.html OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicScene.cpp OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicScene.html OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/CMakeLists.txt OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/Configuration.json OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/ConfigurationLocalSJO.json OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/NOTES.txt OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/app.js OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/dev.h OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/index.html OrthancStone/Resources/Graveyard/Messaging/CurlOrthancConnection.cpp OrthancStone/Resources/Graveyard/Messaging/CurlOrthancConnection.h OrthancStone/Resources/Graveyard/Messaging/IOrthancConnection.h OrthancStone/Resources/Graveyard/ReferenceLineFactory.cpp OrthancStone/Resources/Graveyard/ReferenceLineFactory.h OrthancStone/Resources/Graveyard/Threading/BinarySemaphore.cpp OrthancStone/Resources/Graveyard/Threading/BinarySemaphore.h OrthancStone/Resources/Graveyard/Threading/IThreadSafety.h OrthancStone/Resources/Graveyard/Threading/SdlBuffering.cpp OrthancStone/Resources/Graveyard/Threading/SdlBuffering.h OrthancStone/Resources/Graveyard/Threading/SharedValue.h OrthancStone/Resources/Graveyard/Toolbox/DicomDataset.cpp OrthancStone/Resources/Graveyard/Toolbox/DicomDataset.h OrthancStone/Resources/Orthanc/CMake/AutoGeneratedCode.cmake OrthancStone/Resources/Orthanc/CMake/Compiler.cmake OrthancStone/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake OrthancStone/Resources/Orthanc/CMake/DownloadPackage.cmake OrthancStone/Resources/Orthanc/CMake/EmbedResources.py OrthancStone/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake OrthancStone/Resources/Orthanc/README.txt OrthancStone/Resources/Orthanc/Toolchains/LinuxStandardBaseToolchain.cmake OrthancStone/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain32.cmake OrthancStone/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake OrthancStone/Resources/Orthanc/Toolchains/MinGWToolchain.cmake OrthancStone/Resources/OrthancLogoDocumentation.png OrthancStone/Resources/OrthancStone.doxygen OrthancStone/Resources/SyncOrthancFolder.py OrthancStone/Samples/Common/RtViewerApp.cpp OrthancStone/Samples/Common/RtViewerApp.h OrthancStone/Samples/Common/RtViewerView.cpp OrthancStone/Samples/Common/RtViewerView.h OrthancStone/Samples/Common/SampleHelpers.h OrthancStone/Samples/README.md OrthancStone/Samples/Sdl/BoostExtendedConfiguration.cmake OrthancStone/Samples/Sdl/CMakeLists.txt OrthancStone/Samples/Sdl/RtViewer/CMakeLists.txt OrthancStone/Samples/Sdl/RtViewer/CMakeSettings.json OrthancStone/Samples/Sdl/RtViewer/RtViewerSdl.cpp OrthancStone/Samples/Sdl/SdlHelpers.h OrthancStone/Samples/Sdl/SingleFrameViewer/CMakeLists.txt OrthancStone/Samples/Sdl/SingleFrameViewer/CMakeSettings.json OrthancStone/Samples/Sdl/SingleFrameViewer/SdlSimpleViewer.cpp OrthancStone/Samples/Sdl/SingleFrameViewer/SdlSimpleViewerApplication.h OrthancStone/Samples/Sdl/Utilities.cmake OrthancStone/Samples/WebAssembly/CMakeLists.txt OrthancStone/Samples/WebAssembly/NOTES.txt OrthancStone/Samples/WebAssembly/RtViewer/CMakeLists.txt OrthancStone/Samples/WebAssembly/RtViewer/OBSOLETE.cpp OrthancStone/Samples/WebAssembly/RtViewer/RtViewerWasm.cpp OrthancStone/Samples/WebAssembly/RtViewer/RtViewerWasmApp.js OrthancStone/Samples/WebAssembly/RtViewer/RtViewerWasmWrapper.js OrthancStone/Samples/WebAssembly/RtViewer/index.html OrthancStone/Samples/WebAssembly/SingleFrameViewer/CMakeLists.txt OrthancStone/Samples/WebAssembly/SingleFrameViewer/CMakeSettings.json OrthancStone/Samples/WebAssembly/SingleFrameViewer/SingleFrameViewer.cpp OrthancStone/Samples/WebAssembly/SingleFrameViewer/SingleFrameViewerApp.js OrthancStone/Samples/WebAssembly/SingleFrameViewer/SingleFrameViewerApplication.h OrthancStone/Samples/WebAssembly/SingleFrameViewer/index.html OrthancStone/Samples/WebAssembly/docker-build.sh OrthancStone/Samples/WebAssembly/docker-internal.sh OrthancStone/Samples/build-wasm-samples.sh OrthancStone/Sources/Deprecated/GuiAdapter.cpp OrthancStone/Sources/Deprecated/GuiAdapter.h OrthancStone/Sources/Deprecated/Layers/CircleMeasureTracker.cpp OrthancStone/Sources/Deprecated/Layers/CircleMeasureTracker.h OrthancStone/Sources/Deprecated/Layers/ColorFrameRenderer.cpp OrthancStone/Sources/Deprecated/Layers/ColorFrameRenderer.h OrthancStone/Sources/Deprecated/Layers/DicomSeriesVolumeSlicer.cpp OrthancStone/Sources/Deprecated/Layers/DicomSeriesVolumeSlicer.h OrthancStone/Sources/Deprecated/Layers/DicomStructureSetSlicer.cpp OrthancStone/Sources/Deprecated/Layers/DicomStructureSetSlicer.h OrthancStone/Sources/Deprecated/Layers/FrameRenderer.cpp OrthancStone/Sources/Deprecated/Layers/FrameRenderer.h OrthancStone/Sources/Deprecated/Layers/GrayscaleFrameRenderer.cpp OrthancStone/Sources/Deprecated/Layers/GrayscaleFrameRenderer.h OrthancStone/Sources/Deprecated/Layers/ILayerRenderer.h OrthancStone/Sources/Deprecated/Layers/IVolumeSlicer.h OrthancStone/Sources/Deprecated/Layers/LineLayerRenderer.cpp OrthancStone/Sources/Deprecated/Layers/LineLayerRenderer.h OrthancStone/Sources/Deprecated/Layers/LineMeasureTracker.cpp OrthancStone/Sources/Deprecated/Layers/LineMeasureTracker.h OrthancStone/Sources/Deprecated/Layers/RenderStyle.cpp OrthancStone/Sources/Deprecated/Layers/RenderStyle.h OrthancStone/Sources/Deprecated/Layers/SeriesFrameRendererFactory.cpp OrthancStone/Sources/Deprecated/Layers/SeriesFrameRendererFactory.h OrthancStone/Sources/Deprecated/Layers/SingleFrameRendererFactory.cpp OrthancStone/Sources/Deprecated/Layers/SingleFrameRendererFactory.h OrthancStone/Sources/Deprecated/Layers/SliceOutlineRenderer.cpp OrthancStone/Sources/Deprecated/Layers/SliceOutlineRenderer.h OrthancStone/Sources/Deprecated/Loaders/DicomStructureSetLoader2.cpp OrthancStone/Sources/Deprecated/Loaders/DicomStructureSetLoader2.h OrthancStone/Sources/Deprecated/Messages/LockingEmitter.cpp OrthancStone/Sources/Deprecated/Messages/LockingEmitter.h OrthancStone/Sources/Deprecated/Radiography/RadiographyAlphaLayer.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyAlphaLayer.h OrthancStone/Sources/Deprecated/Radiography/RadiographyDicomLayer.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyDicomLayer.h OrthancStone/Sources/Deprecated/Radiography/RadiographyLayer.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyLayer.h OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerCropTracker.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerCropTracker.h OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerMaskTracker.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerMaskTracker.h OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerMoveTracker.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerMoveTracker.h OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerResizeTracker.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerResizeTracker.h OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerRotateTracker.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerRotateTracker.h OrthancStone/Sources/Deprecated/Radiography/RadiographyMaskLayer.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyMaskLayer.h OrthancStone/Sources/Deprecated/Radiography/RadiographyScene.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyScene.h OrthancStone/Sources/Deprecated/Radiography/RadiographySceneCommand.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographySceneCommand.h OrthancStone/Sources/Deprecated/Radiography/RadiographySceneReader.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographySceneReader.h OrthancStone/Sources/Deprecated/Radiography/RadiographySceneWriter.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographySceneWriter.h OrthancStone/Sources/Deprecated/Radiography/RadiographyTextLayer.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyTextLayer.h OrthancStone/Sources/Deprecated/Radiography/RadiographyWidget.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyWidget.h OrthancStone/Sources/Deprecated/Radiography/RadiographyWindowingTracker.cpp OrthancStone/Sources/Deprecated/Radiography/RadiographyWindowingTracker.h OrthancStone/Sources/Deprecated/SmartLoader.cpp OrthancStone/Sources/Deprecated/SmartLoader.h OrthancStone/Sources/Deprecated/Toolbox/BaseWebService.cpp OrthancStone/Sources/Deprecated/Toolbox/BaseWebService.h OrthancStone/Sources/Deprecated/Toolbox/DicomFrameConverter.cpp OrthancStone/Sources/Deprecated/Toolbox/DicomFrameConverter.h OrthancStone/Sources/Deprecated/Toolbox/DownloadStack.cpp OrthancStone/Sources/Deprecated/Toolbox/DownloadStack.h OrthancStone/Sources/Deprecated/Toolbox/IDelayedCallExecutor.h OrthancStone/Sources/Deprecated/Toolbox/ISeriesLoader.h OrthancStone/Sources/Deprecated/Toolbox/IWebService.cpp OrthancStone/Sources/Deprecated/Toolbox/IWebService.h OrthancStone/Sources/Deprecated/Toolbox/MessagingToolbox.cpp OrthancStone/Sources/Deprecated/Toolbox/MessagingToolbox.h OrthancStone/Sources/Deprecated/Toolbox/OrthancApiClient.cpp OrthancStone/Sources/Deprecated/Toolbox/OrthancApiClient.h OrthancStone/Sources/Deprecated/Toolbox/OrthancSlicesLoader.cpp OrthancStone/Sources/Deprecated/Toolbox/OrthancSlicesLoader.h OrthancStone/Sources/Deprecated/Toolbox/ParallelSlices.cpp OrthancStone/Sources/Deprecated/Toolbox/ParallelSlices.h OrthancStone/Sources/Deprecated/Toolbox/ParallelSlicesCursor.cpp OrthancStone/Sources/Deprecated/Toolbox/ParallelSlicesCursor.h OrthancStone/Sources/Deprecated/Toolbox/Slice.cpp OrthancStone/Sources/Deprecated/Toolbox/Slice.h OrthancStone/Sources/Deprecated/Toolbox/ViewportGeometry.cpp OrthancStone/Sources/Deprecated/Toolbox/ViewportGeometry.h OrthancStone/Sources/Deprecated/Viewport/CairoFont.cpp OrthancStone/Sources/Deprecated/Viewport/CairoFont.h OrthancStone/Sources/Deprecated/Viewport/IMouseTracker.h OrthancStone/Sources/Deprecated/Viewport/IStatusBar.h OrthancStone/Sources/Deprecated/Viewport/IViewport.h OrthancStone/Sources/Deprecated/Viewport/WidgetViewport.cpp OrthancStone/Sources/Deprecated/Viewport/WidgetViewport.h OrthancStone/Sources/Deprecated/Volumes/ISlicedVolume.h OrthancStone/Sources/Deprecated/Volumes/IVolumeLoader.h OrthancStone/Sources/Deprecated/Volumes/StructureSetLoader.cpp OrthancStone/Sources/Deprecated/Volumes/StructureSetLoader.h OrthancStone/Sources/Deprecated/Widgets/CairoWidget.cpp OrthancStone/Sources/Deprecated/Widgets/CairoWidget.h OrthancStone/Sources/Deprecated/Widgets/EmptyWidget.cpp OrthancStone/Sources/Deprecated/Widgets/EmptyWidget.h OrthancStone/Sources/Deprecated/Widgets/IWidget.h OrthancStone/Sources/Deprecated/Widgets/IWorldSceneInteractor.h OrthancStone/Sources/Deprecated/Widgets/IWorldSceneMouseTracker.h OrthancStone/Sources/Deprecated/Widgets/LayoutWidget.cpp OrthancStone/Sources/Deprecated/Widgets/LayoutWidget.h OrthancStone/Sources/Deprecated/Widgets/PanMouseTracker.cpp OrthancStone/Sources/Deprecated/Widgets/PanMouseTracker.h OrthancStone/Sources/Deprecated/Widgets/PanZoomMouseTracker.cpp OrthancStone/Sources/Deprecated/Widgets/PanZoomMouseTracker.h OrthancStone/Sources/Deprecated/Widgets/SliceViewerWidget.cpp OrthancStone/Sources/Deprecated/Widgets/SliceViewerWidget.h OrthancStone/Sources/Deprecated/Widgets/TestCairoWidget.cpp OrthancStone/Sources/Deprecated/Widgets/TestCairoWidget.h OrthancStone/Sources/Deprecated/Widgets/TestWorldSceneWidget.cpp OrthancStone/Sources/Deprecated/Widgets/TestWorldSceneWidget.h OrthancStone/Sources/Deprecated/Widgets/WidgetBase.cpp OrthancStone/Sources/Deprecated/Widgets/WidgetBase.h OrthancStone/Sources/Deprecated/Widgets/WorldSceneWidget.cpp OrthancStone/Sources/Deprecated/Widgets/WorldSceneWidget.h OrthancStone/Sources/Deprecated/Widgets/ZoomMouseTracker.cpp OrthancStone/Sources/Deprecated/Widgets/ZoomMouseTracker.h OrthancStone/Sources/Deprecated/dev.h OrthancStone/Sources/Fonts/FontRenderer.cpp OrthancStone/Sources/Fonts/FontRenderer.h OrthancStone/Sources/Fonts/Glyph.cpp OrthancStone/Sources/Fonts/Glyph.h OrthancStone/Sources/Fonts/GlyphAlphabet.cpp OrthancStone/Sources/Fonts/GlyphAlphabet.h OrthancStone/Sources/Fonts/GlyphBitmapAlphabet.cpp OrthancStone/Sources/Fonts/GlyphBitmapAlphabet.h OrthancStone/Sources/Fonts/GlyphTextureAlphabet.cpp OrthancStone/Sources/Fonts/GlyphTextureAlphabet.h OrthancStone/Sources/Fonts/OpenGLTextCoordinates.cpp OrthancStone/Sources/Fonts/OpenGLTextCoordinates.h OrthancStone/Sources/Fonts/TextBoundingBox.cpp OrthancStone/Sources/Fonts/TextBoundingBox.h OrthancStone/Sources/Loaders/BasicFetchingItemsSorter.cpp OrthancStone/Sources/Loaders/BasicFetchingItemsSorter.h OrthancStone/Sources/Loaders/BasicFetchingStrategy.cpp OrthancStone/Sources/Loaders/BasicFetchingStrategy.h OrthancStone/Sources/Loaders/DicomResourcesLoader.cpp OrthancStone/Sources/Loaders/DicomResourcesLoader.h OrthancStone/Sources/Loaders/DicomSource.cpp OrthancStone/Sources/Loaders/DicomSource.h OrthancStone/Sources/Loaders/DicomStructureSetLoader.cpp OrthancStone/Sources/Loaders/DicomStructureSetLoader.h OrthancStone/Sources/Loaders/DicomVolumeLoader.cpp OrthancStone/Sources/Loaders/DicomVolumeLoader.h OrthancStone/Sources/Loaders/GenericLoadersContext.cpp OrthancStone/Sources/Loaders/GenericLoadersContext.h OrthancStone/Sources/Loaders/IFetchingItemsSorter.h OrthancStone/Sources/Loaders/IFetchingStrategy.h OrthancStone/Sources/Loaders/ILoaderFactory.h OrthancStone/Sources/Loaders/ILoadersContext.h OrthancStone/Sources/Loaders/LoadedDicomResources.cpp OrthancStone/Sources/Loaders/LoadedDicomResources.h OrthancStone/Sources/Loaders/LoaderCache.cpp OrthancStone/Sources/Loaders/LoaderCache.h OrthancStone/Sources/Loaders/LoaderStateMachine.cpp OrthancStone/Sources/Loaders/LoaderStateMachine.h OrthancStone/Sources/Loaders/OracleScheduler.cpp OrthancStone/Sources/Loaders/OracleScheduler.h OrthancStone/Sources/Loaders/OrthancMultiframeVolumeLoader.cpp OrthancStone/Sources/Loaders/OrthancMultiframeVolumeLoader.h OrthancStone/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp OrthancStone/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.h OrthancStone/Sources/Loaders/SeriesFramesLoader.cpp OrthancStone/Sources/Loaders/SeriesFramesLoader.h OrthancStone/Sources/Loaders/SeriesMetadataLoader.cpp OrthancStone/Sources/Loaders/SeriesMetadataLoader.h OrthancStone/Sources/Loaders/SeriesOrderedFrames.cpp OrthancStone/Sources/Loaders/SeriesOrderedFrames.h OrthancStone/Sources/Loaders/SeriesThumbnailsLoader.cpp OrthancStone/Sources/Loaders/SeriesThumbnailsLoader.h OrthancStone/Sources/Loaders/WebAssemblyLoadersContext.cpp OrthancStone/Sources/Loaders/WebAssemblyLoadersContext.h OrthancStone/Sources/Messages/ICallable.h OrthancStone/Sources/Messages/IMessage.h OrthancStone/Sources/Messages/IMessageEmitter.h OrthancStone/Sources/Messages/IObservable.cpp OrthancStone/Sources/Messages/IObservable.h OrthancStone/Sources/Messages/IObserver.h OrthancStone/Sources/Messages/ObserverBase.h OrthancStone/Sources/OpenGL/IOpenGLContext.h OrthancStone/Sources/OpenGL/OpenGLIncludes.h OrthancStone/Sources/OpenGL/OpenGLProgram.cpp OrthancStone/Sources/OpenGL/OpenGLProgram.h OrthancStone/Sources/OpenGL/OpenGLShader.cpp OrthancStone/Sources/OpenGL/OpenGLShader.h OrthancStone/Sources/OpenGL/OpenGLTexture.cpp OrthancStone/Sources/OpenGL/OpenGLTexture.h OrthancStone/Sources/OpenGL/SdlOpenGLContext.cpp OrthancStone/Sources/OpenGL/SdlOpenGLContext.h OrthancStone/Sources/OpenGL/WebAssemblyOpenGLContext.cpp OrthancStone/Sources/OpenGL/WebAssemblyOpenGLContext.h OrthancStone/Sources/Oracle/GenericOracleRunner.cpp OrthancStone/Sources/Oracle/GenericOracleRunner.h OrthancStone/Sources/Oracle/GetOrthancImageCommand.cpp OrthancStone/Sources/Oracle/GetOrthancImageCommand.h OrthancStone/Sources/Oracle/GetOrthancWebViewerJpegCommand.cpp OrthancStone/Sources/Oracle/GetOrthancWebViewerJpegCommand.h OrthancStone/Sources/Oracle/HttpCommand.cpp OrthancStone/Sources/Oracle/HttpCommand.h OrthancStone/Sources/Oracle/IOracle.h OrthancStone/Sources/Oracle/IOracleCommand.h OrthancStone/Sources/Oracle/OracleCommandBase.cpp OrthancStone/Sources/Oracle/OracleCommandBase.h OrthancStone/Sources/Oracle/OracleCommandExceptionMessage.h OrthancStone/Sources/Oracle/OrthancRestApiCommand.cpp OrthancStone/Sources/Oracle/OrthancRestApiCommand.h OrthancStone/Sources/Oracle/ParseDicomFromFileCommand.cpp OrthancStone/Sources/Oracle/ParseDicomFromFileCommand.h OrthancStone/Sources/Oracle/ParseDicomFromWadoCommand.cpp OrthancStone/Sources/Oracle/ParseDicomFromWadoCommand.h OrthancStone/Sources/Oracle/ParseDicomSuccessMessage.cpp OrthancStone/Sources/Oracle/ParseDicomSuccessMessage.h OrthancStone/Sources/Oracle/ReadFileCommand.h OrthancStone/Sources/Oracle/SleepOracleCommand.h OrthancStone/Sources/Oracle/ThreadedOracle.cpp OrthancStone/Sources/Oracle/ThreadedOracle.h OrthancStone/Sources/Oracle/WebAssemblyOracle.cpp OrthancStone/Sources/Oracle/WebAssemblyOracle.h OrthancStone/Sources/OrthancStone.h OrthancStone/Sources/Scene2D/CairoCompositor.cpp OrthancStone/Sources/Scene2D/CairoCompositor.h OrthancStone/Sources/Scene2D/Color.h OrthancStone/Sources/Scene2D/ColorSceneLayer.h OrthancStone/Sources/Scene2D/ColorTextureSceneLayer.cpp OrthancStone/Sources/Scene2D/ColorTextureSceneLayer.h OrthancStone/Sources/Scene2D/FloatTextureSceneLayer.cpp OrthancStone/Sources/Scene2D/FloatTextureSceneLayer.h OrthancStone/Sources/Scene2D/GrayscaleStyleConfigurator.cpp OrthancStone/Sources/Scene2D/GrayscaleStyleConfigurator.h OrthancStone/Sources/Scene2D/ICompositor.h OrthancStone/Sources/Scene2D/ILayerStyleConfigurator.h OrthancStone/Sources/Scene2D/IPointerTracker.h OrthancStone/Sources/Scene2D/ISceneLayer.h OrthancStone/Sources/Scene2D/InfoPanelSceneLayer.cpp OrthancStone/Sources/Scene2D/InfoPanelSceneLayer.h OrthancStone/Sources/Scene2D/Internals/CairoBaseRenderer.h OrthancStone/Sources/Scene2D/Internals/CairoColorTextureRenderer.cpp OrthancStone/Sources/Scene2D/Internals/CairoColorTextureRenderer.h OrthancStone/Sources/Scene2D/Internals/CairoFloatTextureRenderer.cpp OrthancStone/Sources/Scene2D/Internals/CairoFloatTextureRenderer.h OrthancStone/Sources/Scene2D/Internals/CairoInfoPanelRenderer.cpp OrthancStone/Sources/Scene2D/Internals/CairoInfoPanelRenderer.h OrthancStone/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.cpp OrthancStone/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.h OrthancStone/Sources/Scene2D/Internals/CairoPolylineRenderer.cpp OrthancStone/Sources/Scene2D/Internals/CairoPolylineRenderer.h OrthancStone/Sources/Scene2D/Internals/CairoTextRenderer.cpp OrthancStone/Sources/Scene2D/Internals/CairoTextRenderer.h OrthancStone/Sources/Scene2D/Internals/CompositorHelper.cpp OrthancStone/Sources/Scene2D/Internals/CompositorHelper.h OrthancStone/Sources/Scene2D/Internals/FixedPointAligner.cpp OrthancStone/Sources/Scene2D/Internals/FixedPointAligner.h OrthancStone/Sources/Scene2D/Internals/ICairoContextProvider.h OrthancStone/Sources/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.h OrthancStone/Sources/Scene2D/Internals/OpenGLBasicPolylineRenderer.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLBasicPolylineRenderer.h OrthancStone/Sources/Scene2D/Internals/OpenGLColorTextureProgram.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLColorTextureProgram.h OrthancStone/Sources/Scene2D/Internals/OpenGLColorTextureRenderer.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLColorTextureRenderer.h OrthancStone/Sources/Scene2D/Internals/OpenGLFloatTextureProgram.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLFloatTextureProgram.h OrthancStone/Sources/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLFloatTextureRenderer.h OrthancStone/Sources/Scene2D/Internals/OpenGLInfoPanelRenderer.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLInfoPanelRenderer.h OrthancStone/Sources/Scene2D/Internals/OpenGLLinesProgram.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLLinesProgram.h OrthancStone/Sources/Scene2D/Internals/OpenGLLookupTableTextureRenderer.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLLookupTableTextureRenderer.h OrthancStone/Sources/Scene2D/Internals/OpenGLShaderVersionDirective.h OrthancStone/Sources/Scene2D/Internals/OpenGLTextProgram.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLTextProgram.h OrthancStone/Sources/Scene2D/Internals/OpenGLTextRenderer.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLTextRenderer.h OrthancStone/Sources/Scene2D/Internals/OpenGLTextureProgram.cpp OrthancStone/Sources/Scene2D/Internals/OpenGLTextureProgram.h OrthancStone/Sources/Scene2D/LookupTableStyleConfigurator.cpp OrthancStone/Sources/Scene2D/LookupTableStyleConfigurator.h OrthancStone/Sources/Scene2D/LookupTableTextureSceneLayer.cpp OrthancStone/Sources/Scene2D/LookupTableTextureSceneLayer.h OrthancStone/Sources/Scene2D/NullLayer.h OrthancStone/Sources/Scene2D/OpenGLCompositor.cpp OrthancStone/Sources/Scene2D/OpenGLCompositor.h OrthancStone/Sources/Scene2D/PanSceneTracker.cpp OrthancStone/Sources/Scene2D/PanSceneTracker.h OrthancStone/Sources/Scene2D/PointerEvent.cpp OrthancStone/Sources/Scene2D/PointerEvent.h OrthancStone/Sources/Scene2D/PolylineSceneLayer.cpp OrthancStone/Sources/Scene2D/PolylineSceneLayer.h OrthancStone/Sources/Scene2D/RotateSceneTracker.cpp OrthancStone/Sources/Scene2D/RotateSceneTracker.h OrthancStone/Sources/Scene2D/Scene2D.cpp OrthancStone/Sources/Scene2D/Scene2D.h OrthancStone/Sources/Scene2D/ScenePoint2D.h OrthancStone/Sources/Scene2D/TextSceneLayer.cpp OrthancStone/Sources/Scene2D/TextSceneLayer.h OrthancStone/Sources/Scene2D/TextureBaseSceneLayer.cpp OrthancStone/Sources/Scene2D/TextureBaseSceneLayer.h OrthancStone/Sources/Scene2D/ZoomSceneTracker.cpp OrthancStone/Sources/Scene2D/ZoomSceneTracker.h OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.cpp OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.h OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureCommand.cpp OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureCommand.h OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureTracker.cpp OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureTracker.h OrthancStone/Sources/Scene2DViewport/CreateCircleMeasureTracker.cpp OrthancStone/Sources/Scene2DViewport/CreateCircleMeasureTracker.h OrthancStone/Sources/Scene2DViewport/CreateLineMeasureCommand.cpp OrthancStone/Sources/Scene2DViewport/CreateLineMeasureCommand.h OrthancStone/Sources/Scene2DViewport/CreateLineMeasureTracker.cpp OrthancStone/Sources/Scene2DViewport/CreateLineMeasureTracker.h OrthancStone/Sources/Scene2DViewport/CreateMeasureTracker.cpp OrthancStone/Sources/Scene2DViewport/CreateMeasureTracker.h OrthancStone/Sources/Scene2DViewport/CreateSimpleTrackerAdapter.cpp OrthancStone/Sources/Scene2DViewport/EditAngleMeasureCommand.cpp OrthancStone/Sources/Scene2DViewport/EditAngleMeasureCommand.h OrthancStone/Sources/Scene2DViewport/EditAngleMeasureTracker.cpp OrthancStone/Sources/Scene2DViewport/EditAngleMeasureTracker.h OrthancStone/Sources/Scene2DViewport/EditLineMeasureCommand.cpp OrthancStone/Sources/Scene2DViewport/EditLineMeasureCommand.h OrthancStone/Sources/Scene2DViewport/EditLineMeasureTracker.cpp OrthancStone/Sources/Scene2DViewport/EditLineMeasureTracker.h OrthancStone/Sources/Scene2DViewport/IFlexiblePointerTracker.h OrthancStone/Sources/Scene2DViewport/LayerHolder.cpp OrthancStone/Sources/Scene2DViewport/LayerHolder.h OrthancStone/Sources/Scene2DViewport/LineMeasureTool.cpp OrthancStone/Sources/Scene2DViewport/LineMeasureTool.h OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp OrthancStone/Sources/Scene2DViewport/MeasureCommands.h OrthancStone/Sources/Scene2DViewport/MeasureTool.cpp OrthancStone/Sources/Scene2DViewport/MeasureTool.h OrthancStone/Sources/Scene2DViewport/MeasureToolsToolbox.cpp OrthancStone/Sources/Scene2DViewport/MeasureToolsToolbox.h OrthancStone/Sources/Scene2DViewport/MeasureTrackers.cpp OrthancStone/Sources/Scene2DViewport/MeasureTrackers.h OrthancStone/Sources/Scene2DViewport/OneGesturePointerTracker.cpp OrthancStone/Sources/Scene2DViewport/OneGesturePointerTracker.h OrthancStone/Sources/Scene2DViewport/PredeclaredTypes.h OrthancStone/Sources/Scene2DViewport/UndoStack.cpp OrthancStone/Sources/Scene2DViewport/UndoStack.h OrthancStone/Sources/Scene2DViewport/ViewportController.cpp OrthancStone/Sources/Scene2DViewport/ViewportController.h OrthancStone/Sources/StoneEnumerations.cpp OrthancStone/Sources/StoneEnumerations.h OrthancStone/Sources/StoneException.h OrthancStone/Sources/StoneInitialization.cpp OrthancStone/Sources/StoneInitialization.h OrthancStone/Sources/Toolbox/AffineTransform2D.cpp OrthancStone/Sources/Toolbox/AffineTransform2D.h OrthancStone/Sources/Toolbox/CoordinateSystem3D.cpp OrthancStone/Sources/Toolbox/CoordinateSystem3D.h OrthancStone/Sources/Toolbox/DicomInstanceParameters.cpp OrthancStone/Sources/Toolbox/DicomInstanceParameters.h OrthancStone/Sources/Toolbox/DicomStructure2.cpp OrthancStone/Sources/Toolbox/DicomStructure2.h OrthancStone/Sources/Toolbox/DicomStructurePolygon2.cpp OrthancStone/Sources/Toolbox/DicomStructurePolygon2.h OrthancStone/Sources/Toolbox/DicomStructureSet.cpp OrthancStone/Sources/Toolbox/DicomStructureSet.h OrthancStone/Sources/Toolbox/DicomStructureSet2.cpp OrthancStone/Sources/Toolbox/DicomStructureSet2.h OrthancStone/Sources/Toolbox/DicomStructureSetUtils.cpp OrthancStone/Sources/Toolbox/DicomStructureSetUtils.h OrthancStone/Sources/Toolbox/DisjointDataSet.h OrthancStone/Sources/Toolbox/DynamicBitmap.cpp OrthancStone/Sources/Toolbox/DynamicBitmap.h OrthancStone/Sources/Toolbox/Extent2D.cpp OrthancStone/Sources/Toolbox/Extent2D.h OrthancStone/Sources/Toolbox/FiniteProjectiveCamera.cpp OrthancStone/Sources/Toolbox/FiniteProjectiveCamera.h OrthancStone/Sources/Toolbox/GenericToolbox.cpp OrthancStone/Sources/Toolbox/GenericToolbox.h OrthancStone/Sources/Toolbox/GeometryToolbox.cpp OrthancStone/Sources/Toolbox/GeometryToolbox.h OrthancStone/Sources/Toolbox/ImageGeometry.cpp OrthancStone/Sources/Toolbox/ImageGeometry.h OrthancStone/Sources/Toolbox/ImageToolbox.cpp OrthancStone/Sources/Toolbox/ImageToolbox.h OrthancStone/Sources/Toolbox/LinearAlgebra.cpp OrthancStone/Sources/Toolbox/LinearAlgebra.h OrthancStone/Sources/Toolbox/OrthancDatasets/DicomDatasetReader.cpp OrthancStone/Sources/Toolbox/OrthancDatasets/DicomDatasetReader.h OrthancStone/Sources/Toolbox/OrthancDatasets/DicomPath.cpp OrthancStone/Sources/Toolbox/OrthancDatasets/DicomPath.h OrthancStone/Sources/Toolbox/OrthancDatasets/FullOrthancDataset.cpp OrthancStone/Sources/Toolbox/OrthancDatasets/FullOrthancDataset.h OrthancStone/Sources/Toolbox/OrthancDatasets/IDicomDataset.h OrthancStone/Sources/Toolbox/OrthancDatasets/IOrthancConnection.cpp OrthancStone/Sources/Toolbox/OrthancDatasets/IOrthancConnection.h OrthancStone/Sources/Toolbox/OrthancDatasets/NOTES.txt OrthancStone/Sources/Toolbox/OrthancDatasets/OrthancHttpConnection.cpp OrthancStone/Sources/Toolbox/OrthancDatasets/OrthancHttpConnection.h OrthancStone/Sources/Toolbox/OrthancDatasets/SimplifiedOrthancDataset.cpp OrthancStone/Sources/Toolbox/OrthancDatasets/SimplifiedOrthancDataset.h OrthancStone/Sources/Toolbox/ParsedDicomCache.cpp OrthancStone/Sources/Toolbox/ParsedDicomCache.h OrthancStone/Sources/Toolbox/ParsedDicomDataset.cpp OrthancStone/Sources/Toolbox/ParsedDicomDataset.h OrthancStone/Sources/Toolbox/PixelTestPatterns.h OrthancStone/Sources/Toolbox/ShearWarpProjectiveTransform.cpp OrthancStone/Sources/Toolbox/ShearWarpProjectiveTransform.h OrthancStone/Sources/Toolbox/SlicesSorter.cpp OrthancStone/Sources/Toolbox/SlicesSorter.h OrthancStone/Sources/Toolbox/SortedFrames.cpp OrthancStone/Sources/Toolbox/SortedFrames.h OrthancStone/Sources/Toolbox/SubpixelReader.h OrthancStone/Sources/Toolbox/SubvoxelReader.h OrthancStone/Sources/Toolbox/TextRenderer.cpp OrthancStone/Sources/Toolbox/TextRenderer.h OrthancStone/Sources/Toolbox/UndoRedoStack.cpp OrthancStone/Sources/Toolbox/UndoRedoStack.h OrthancStone/Sources/Viewport/IViewport.h OrthancStone/Sources/Viewport/SdlViewport.cpp OrthancStone/Sources/Viewport/SdlViewport.h OrthancStone/Sources/Viewport/SdlWindow.cpp OrthancStone/Sources/Viewport/SdlWindow.h OrthancStone/Sources/Viewport/WebAssemblyCairoViewport.cpp OrthancStone/Sources/Viewport/WebAssemblyCairoViewport.h OrthancStone/Sources/Viewport/WebAssemblyViewport.cpp OrthancStone/Sources/Viewport/WebAssemblyViewport.h OrthancStone/Sources/Viewport/WebGLViewport.cpp OrthancStone/Sources/Viewport/WebGLViewport.h OrthancStone/Sources/Viewport/WebGLViewportsRegistry.cpp OrthancStone/Sources/Viewport/WebGLViewportsRegistry.h OrthancStone/Sources/Volumes/DicomStructureSetSlicer2.cpp OrthancStone/Sources/Volumes/DicomStructureSetSlicer2.h OrthancStone/Sources/Volumes/DicomVolumeImage.cpp OrthancStone/Sources/Volumes/DicomVolumeImage.h OrthancStone/Sources/Volumes/DicomVolumeImageMPRSlicer.cpp OrthancStone/Sources/Volumes/DicomVolumeImageMPRSlicer.h OrthancStone/Sources/Volumes/DicomVolumeImageReslicer.cpp OrthancStone/Sources/Volumes/DicomVolumeImageReslicer.h OrthancStone/Sources/Volumes/IGeometryProvider.h OrthancStone/Sources/Volumes/IVolumeSlicer.cpp OrthancStone/Sources/Volumes/IVolumeSlicer.h OrthancStone/Sources/Volumes/ImageBuffer3D.cpp OrthancStone/Sources/Volumes/ImageBuffer3D.h OrthancStone/Sources/Volumes/OrientedVolumeBoundingBox.cpp OrthancStone/Sources/Volumes/OrientedVolumeBoundingBox.h OrthancStone/Sources/Volumes/VolumeImageGeometry.cpp OrthancStone/Sources/Volumes/VolumeImageGeometry.h OrthancStone/Sources/Volumes/VolumeReslicer.cpp OrthancStone/Sources/Volumes/VolumeReslicer.h OrthancStone/Sources/Volumes/VolumeSceneLayerSource.cpp OrthancStone/Sources/Volumes/VolumeSceneLayerSource.h OrthancStone/Sources/Wrappers/CairoContext.cpp OrthancStone/Sources/Wrappers/CairoContext.h OrthancStone/Sources/Wrappers/CairoSurface.cpp OrthancStone/Sources/Wrappers/CairoSurface.h OrthancStone/UnitTestsSources/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json OrthancStone/UnitTestsSources/GenericToolboxTests.cpp OrthancStone/UnitTestsSources/ImageToolboxTests.cpp OrthancStone/UnitTestsSources/PixelTestPatternsTests.cpp OrthancStone/UnitTestsSources/SortedFramesCreateTest.py OrthancStone/UnitTestsSources/SortedFramesTests.cpp OrthancStone/UnitTestsSources/TestCommands.cpp OrthancStone/UnitTestsSources/TestMessageBroker.cpp OrthancStone/UnitTestsSources/TestStrategy.cpp OrthancStone/UnitTestsSources/TestStructureSet.cpp OrthancStone/UnitTestsSources/UnitTestsMain.cpp Resources/CMake/CairoConfiguration.cmake Resources/CMake/FreetypeConfiguration.cmake Resources/CMake/GlewConfiguration.cmake Resources/CMake/LinuxStandardBaseUic.py Resources/CMake/OrthancStoneConfiguration.cmake Resources/CMake/OrthancStoneParameters.cmake Resources/CMake/PixmanConfiguration.cmake Resources/CMake/PixmanConfiguration.patch Resources/CMake/SdlConfiguration.cmake Resources/CMake/Version.cmake Resources/CMake/cairo-features.h Resources/Colormaps/GenerateColormaps.py Resources/Colormaps/blue.lut Resources/Colormaps/green.lut Resources/Colormaps/hot.lut Resources/Colormaps/jet.lut Resources/Colormaps/red.lut Resources/Computations/ComputeShearOnSlice.py Resources/Computations/ComputeShearParameters.py Resources/Computations/ComputeWarp.py Resources/Computations/IntersectSegmentAndHorizontalLine.py Resources/Computations/IntersectSegmentAndVerticalLine.py Resources/Conventions.txt Resources/Graveyard/Deprecated/Applications/Commands/BaseCommands.yml Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationContext.cpp Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationContext.h Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationRunner.cpp Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationRunner.h Resources/Graveyard/Deprecated/Applications/Generic/Scene2DInteractor.h Resources/Graveyard/Deprecated/Applications/IStoneApplication.h Resources/Graveyard/Deprecated/Applications/Qt/QCairoWidget.cpp Resources/Graveyard/Deprecated/Applications/Qt/QCairoWidget.h Resources/Graveyard/Deprecated/Applications/Qt/QStoneMainWindow.cpp Resources/Graveyard/Deprecated/Applications/Qt/QStoneMainWindow.h Resources/Graveyard/Deprecated/Applications/Qt/QtStoneApplicationRunner.cpp Resources/Graveyard/Deprecated/Applications/Qt/QtStoneApplicationRunner.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/BasicPetCtFusionApplication.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/CMakeLists.txt Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/CMakeLists.txt.old Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/EmptyApplication.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/LayoutPetCtFusionApplication.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.ui Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.ui Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleQtApplicationRunner.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleApplicationBase.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleInteractor.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleList.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleMainNative.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleMainWasm.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Samples-status.md Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/AppStatus.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.ui Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/mainQt.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/mainWasm.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/simple-viewer.html Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/simple-viewer.ts Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/styles.css Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/tsconfig-simple-viewer.json Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewerApplicationSingleFile.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleFrameApplication.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleFrameEditorApplication.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleVolumeApplication.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands.yml Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generate.py Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generated.hpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generated.ts Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SynchronizedSeriesApplication.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/TestPatternApplication.h Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/index.html Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/samples-styles.css Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.html Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.ts Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.tsconfig.json Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.html Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.ts Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.tsconfig.json Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.html Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.ts Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.tsconfig.json Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/tsconfig-samples.json Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-wasm.sh Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-wasm.sh.old Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-web-ext.sh Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-web.sh Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/get-requirements-windows.ps1 Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/nginx.local.conf Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/package-lock.json Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/CMakeLists.txt Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-sdl-msvc15.ps1 Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-wasm.sh Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-web.sh Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/index.html Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/main.cpp Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/nginx.local.conf Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.html Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.ts Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.tsconfig.json Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/samples-styles.css Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/start-serving-files.sh Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/stop-serving-files.sh Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/tsconfig-samples.json Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/tsconfig-stone.json Resources/Graveyard/Deprecated/Applications/Sdl/SdlCairoSurface.cpp Resources/Graveyard/Deprecated/Applications/Sdl/SdlCairoSurface.h Resources/Graveyard/Deprecated/Applications/Sdl/SdlEngine.cpp Resources/Graveyard/Deprecated/Applications/Sdl/SdlEngine.h Resources/Graveyard/Deprecated/Applications/Sdl/SdlOrthancSurface.cpp Resources/Graveyard/Deprecated/Applications/Sdl/SdlOrthancSurface.h Resources/Graveyard/Deprecated/Applications/Sdl/SdlStoneApplicationRunner.cpp Resources/Graveyard/Deprecated/Applications/Sdl/SdlStoneApplicationRunner.h Resources/Graveyard/Deprecated/Applications/StoneApplicationContext.cpp Resources/Graveyard/Deprecated/Applications/StoneApplicationContext.h Resources/Graveyard/Deprecated/Applications/Wasm/StartupParametersBuilder.cpp Resources/Graveyard/Deprecated/Applications/Wasm/StartupParametersBuilder.h Resources/Graveyard/Deprecated/Platforms/Generic/DelayedCallCommand.cpp Resources/Graveyard/Deprecated/Platforms/Generic/DelayedCallCommand.h Resources/Graveyard/Deprecated/Platforms/Generic/IOracleCommand.h Resources/Graveyard/Deprecated/Platforms/Generic/Oracle.cpp Resources/Graveyard/Deprecated/Platforms/Generic/Oracle.h Resources/Graveyard/Deprecated/Platforms/Generic/OracleDelayedCallExecutor.h Resources/Graveyard/Deprecated/Platforms/Generic/OracleWebService.cpp Resources/Graveyard/Deprecated/Platforms/Generic/OracleWebService.h Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceCommandBase.cpp Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceCommandBase.h Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceDeleteCommand.cpp Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceDeleteCommand.h Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceGetCommand.cpp Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceGetCommand.h Resources/Graveyard/Deprecated/Platforms/Generic/WebServicePostCommand.cpp Resources/Graveyard/Deprecated/Platforms/Generic/WebServicePostCommand.h Resources/Graveyard/Deprecated/Platforms/Wasm/Defaults.cpp Resources/Graveyard/Deprecated/Platforms/Wasm/Defaults.h Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.cpp Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.h Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.js Resources/Graveyard/Deprecated/Platforms/Wasm/WasmPlatformApplicationAdapter.cpp Resources/Graveyard/Deprecated/Platforms/Wasm/WasmPlatformApplicationAdapter.h Resources/Graveyard/Deprecated/Platforms/Wasm/WasmViewport.cpp Resources/Graveyard/Deprecated/Platforms/Wasm/WasmViewport.h Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.cpp Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.h Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.js Resources/Graveyard/Deprecated/Platforms/Wasm/default-library.js Resources/Graveyard/Deprecated/Platforms/Wasm/logger.ts Resources/Graveyard/Deprecated/Platforms/Wasm/stone-framework-loader.ts Resources/Graveyard/Deprecated/Platforms/Wasm/tsconfig-stone.json Resources/Graveyard/Deprecated/Platforms/Wasm/wasm-application-runner.ts Resources/Graveyard/Deprecated/Platforms/Wasm/wasm-viewport.ts Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground.ts Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground2.ts Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground3.ts Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground4.py Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/runts.ps1 Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/test_stonegen.html Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/test_stonegen.ts Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/tsconfig.json Resources/Graveyard/Deprecated/Resources/CodeGeneration/README.md Resources/Graveyard/Deprecated/Resources/CodeGeneration/stonegentool.py Resources/Graveyard/Deprecated/Resources/CodeGeneration/stonegentool_test.py Resources/Graveyard/Deprecated/Resources/CodeGeneration/template.in.h.j2 Resources/Graveyard/Deprecated/Resources/CodeGeneration/template.in.ts.j2 Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/CMakeLists.txt Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/README.md Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/conanfile.txt Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/main.cpp Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/test_data/test_Message2.json Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/CMakeLists.txt Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/DefaultLibrary.js Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/build-web.sh Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/build.sh Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/json/json-forwards.h Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/json/json.h Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/jsoncpp.cpp Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/main.cpp Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/serve.py Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/styles.css Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/testWasmIntegrated.html Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/testWasmIntegrated.ts Resources/Graveyard/Deprecated/Resources/CodeGeneration/test_data/test2.yaml Resources/Graveyard/Deprecated/Resources/CodeGeneration/test_data/testTestStoneCodeGen.yaml Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/BasicScene.cpp Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/BasicScene.h Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/mainQt.cpp Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/mainSdl.cpp Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.cpp Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.h Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.ui Resources/Graveyard/Deprecated/Samples/Qt/CMakeLists.txt Resources/Graveyard/Deprecated/Samples/Qt/QStoneOpenGlWidget.cpp Resources/Graveyard/Deprecated/Samples/Qt/QStoneOpenGlWidget.h Resources/Graveyard/Deprecated/Samples/Qt/Scene2DInteractor.cpp Resources/Graveyard/Deprecated/Samples/Qt/Scene2DInteractor.h Resources/Graveyard/Deprecated/Samples/README.md Resources/Graveyard/Deprecated/Samples/Sdl/BasicScene.cpp Resources/Graveyard/Deprecated/Samples/Sdl/CMakeLists.txt Resources/Graveyard/Deprecated/Samples/Sdl/FusionMprSdl.cpp Resources/Graveyard/Deprecated/Samples/Sdl/FusionMprSdl.h Resources/Graveyard/Deprecated/Samples/Sdl/Loader.cpp Resources/Graveyard/Deprecated/Samples/Sdl/RadiographyEditor.cpp Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSample.cpp Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSampleApp.cpp Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSampleApp.h Resources/Graveyard/Deprecated/Samples/Sdl/cpp.hint Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicMPR.cpp Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicMPR.html Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicScene.cpp Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicScene.html Resources/Graveyard/Deprecated/Samples/WebAssembly/CMakeLists.txt Resources/Graveyard/Deprecated/Samples/WebAssembly/Configuration.json Resources/Graveyard/Deprecated/Samples/WebAssembly/ConfigurationLocalSJO.json Resources/Graveyard/Deprecated/Samples/WebAssembly/NOTES.txt Resources/Graveyard/Deprecated/Samples/WebAssembly/app.js Resources/Graveyard/Deprecated/Samples/WebAssembly/dev.h Resources/Graveyard/Deprecated/Samples/WebAssembly/index.html Resources/Graveyard/Messaging/CurlOrthancConnection.cpp Resources/Graveyard/Messaging/CurlOrthancConnection.h Resources/Graveyard/Messaging/IOrthancConnection.h Resources/Graveyard/ReferenceLineFactory.cpp Resources/Graveyard/ReferenceLineFactory.h Resources/Graveyard/Threading/BinarySemaphore.cpp Resources/Graveyard/Threading/BinarySemaphore.h Resources/Graveyard/Threading/IThreadSafety.h Resources/Graveyard/Threading/SdlBuffering.cpp Resources/Graveyard/Threading/SdlBuffering.h Resources/Graveyard/Threading/SharedValue.h Resources/Graveyard/Toolbox/DicomDataset.cpp Resources/Graveyard/Toolbox/DicomDataset.h Resources/Orthanc/CMake/AutoGeneratedCode.cmake Resources/Orthanc/CMake/Compiler.cmake Resources/Orthanc/CMake/DownloadOrthancFramework.cmake Resources/Orthanc/CMake/DownloadPackage.cmake Resources/Orthanc/CMake/EmbedResources.py Resources/Orthanc/CMake/GoogleTestConfiguration.cmake Resources/Orthanc/README.txt Resources/Orthanc/Toolchains/LinuxStandardBaseToolchain.cmake Resources/Orthanc/Toolchains/MinGW-W64-Toolchain32.cmake Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake Resources/Orthanc/Toolchains/MinGWToolchain.cmake Resources/OrthancLogoDocumentation.png Resources/OrthancStone.doxygen Resources/SyncOrthancFolder.py Samples/Common/RtViewerApp.cpp Samples/Common/RtViewerApp.h Samples/Common/RtViewerView.cpp Samples/Common/RtViewerView.h Samples/Common/SampleHelpers.h Samples/README.md Samples/Sdl/BoostExtendedConfiguration.cmake Samples/Sdl/CMakeLists.txt Samples/Sdl/RtViewer/CMakeLists.txt Samples/Sdl/RtViewer/CMakeSettings.json Samples/Sdl/RtViewer/RtViewerSdl.cpp Samples/Sdl/SdlHelpers.h Samples/Sdl/SingleFrameViewer/CMakeLists.txt Samples/Sdl/SingleFrameViewer/CMakeSettings.json Samples/Sdl/SingleFrameViewer/SdlSimpleViewer.cpp Samples/Sdl/SingleFrameViewer/SdlSimpleViewerApplication.h Samples/Sdl/Utilities.cmake Samples/WebAssembly/CMakeLists.txt Samples/WebAssembly/NOTES.txt Samples/WebAssembly/RtViewer/CMakeLists.txt Samples/WebAssembly/RtViewer/OBSOLETE.cpp Samples/WebAssembly/RtViewer/RtViewerWasm.cpp Samples/WebAssembly/RtViewer/RtViewerWasmApp.js Samples/WebAssembly/RtViewer/RtViewerWasmWrapper.js Samples/WebAssembly/RtViewer/index.html Samples/WebAssembly/SingleFrameViewer/CMakeLists.txt Samples/WebAssembly/SingleFrameViewer/CMakeSettings.json Samples/WebAssembly/SingleFrameViewer/SingleFrameViewer.cpp Samples/WebAssembly/SingleFrameViewer/SingleFrameViewerApp.js Samples/WebAssembly/SingleFrameViewer/SingleFrameViewerApplication.h Samples/WebAssembly/SingleFrameViewer/index.html Samples/WebAssembly/docker-build.sh Samples/WebAssembly/docker-internal.sh Samples/build-wasm-samples.sh StoneWebViewer/Plugin/CMakeLists.txt StoneWebViewer/WebAssembly/CMakeLists.txt StoneWebViewer/WebAssembly/Test.cpp UnitTestsSources/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json UnitTestsSources/GenericToolboxTests.cpp UnitTestsSources/ImageToolboxTests.cpp UnitTestsSources/PixelTestPatternsTests.cpp UnitTestsSources/SortedFramesCreateTest.py UnitTestsSources/SortedFramesTests.cpp UnitTestsSources/TestCommands.cpp UnitTestsSources/TestMessageBroker.cpp UnitTestsSources/TestStrategy.cpp UnitTestsSources/TestStructureSet.cpp UnitTestsSources/UnitTestsMain.cpp
diffstat 1527 files changed, 173181 insertions(+), 173169 deletions(-) [+]
line wrap: on
line diff
--- a/Docs/stone-object-model-reference.md	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,429 +0,0 @@
-## Scene2D and viewport-related object reference
-
-### `Scene2D` 
-
-Represents a collection of layers that display 2D data.
-
-These layers must implement `ISceneLayer`
-
-The layers must be created externally and set to a specific Z-order index 
-with the `SetLayer` method.
-
-The `Scene2D` object merely acts as a layer container. It has no rendering 
-or layer creation facility on its own.
-
-The `Scene2D` contains an `AffineTransform2D` structure that defines how 
-the various layer item coordinates are transformed before being displayed 
-on the viewport (aka canvas)
-
-It is up to each layer type-specific renderer to choose how this transformation
-is used. See the various kinds of layer below for more details.
-
-Examining the `Scene2D` contents can be done either by implementing the 
-`Scene2D::IVisitor` interface and calling `Apply(IVisitor& visitor)` or by 
-iterating between `GetMinDepth()` and `GetMaxDepth()` and calling the 
-`ISceneLayer& GetLayer(int depth)` getter.
-
-### `ISceneLayer` 
-
-Interface that must be implemented by `Scene2D` layers. This is a closed list
-that, as of 2020-03, contains:
-
-```
-  Type_InfoPanel,
-  Type_ColorTexture,
-  Type_Polyline,
-  Type_Text,
-  Type_FloatTexture,
-  Type_LookupTableTexture
-```
-
-Please note that this interface mandates the implementation of a `GetRevision`
-method returning an `uint64_t`. 
-
-The idea is that when a model gets converted to a set of `ISceneLayer` 
-instances, changes in the model that result in changes to the layers must 
-increase the revision number of these layers.
-
-That allows the rendering process to safely assume that a given layers whose
-revision does not change hasn't been modified (this helps with caching).
-
-Every mutable method in `ISceneLayer` instances that possibly change the visual
-representation of an `ISceneLayer` must increase this revision number.
-
-### Implementation: `FloatTextureSceneLayer`
-
-Layer that renders an `Orthanc::ImageAccessor` object that must be convertible
-to `Float32` image.
-
-The constructor only uses the image accessor to perform a copy. It can safely 
-be deleted afterwards.
-
-The input values are mapped to the output values by taking into account various
-properties that can be modified with:
-
-- `SetWindowing`: uses windowing presets like "bone" or "lung"
-- `SetCustomWindowing`: with manual window center and width
-- `SetInverted`: toggles black <-> white inversion after windowing
-- `SetApplyLog`: uses a non-linear response curve described in 
-  https://theailearner.com/2019/01/01/log-transformation/ that expands contrast
-  in dark areas while compressing contrast in bright ones. This is **not** 
-  implemented in the OpenGL renderer!
-
-The corresponding renderers are `OpenGLFloatTextureRenderer` and 
-`CairoFloatTextureRenderer`. The scene transformation is applied during
-rendering.
-
-### Implementation: `ColorTextureSceneLayer`
-
-Layer that renders an `Orthanc::ImageAccessor` object an RGBA image (alpha must
-be premultiplied). 
-
-The constructor only uses the image accessor to perform a copy. It can safely 
-be deleted afterwards.
-
-The corresponding renderers are `OpenGLColorTextureRenderer` and 
-`CairoColorTextureRenderer`. The scene transformation is applied during
-rendering.
-
-### Implementation: `LookupTableTextureSceneLayer`
-
-Layer that renders an `Orthanc::ImageAccessor` object that must be convertible
-to `Float32` image.
-
-The constructor only uses the image accessor to perform a copy. It can safely 
-be deleted afterwards.
-
-The final on-screen color of each pixel is determined by passing the input 
-`Float32` value through a 256-entry look-up table (LUT) that can be passed as 
-an array of either 256 x 3 bytes (for opaque RGB colors) or 256 x 4 bytes (for
-RGBA pixels). The LUT is not specified at construction time, but with 
-calls to `SetLookupTable` or `SetLookupTableGrayscale` (that fills the LUT 
-with a gradient from black to white, fully opaque)
-
-The range of input values that is mapped to the entirety of the LUT is, by
-default, the full image range, but can be customized with `SetRange`.
-
-The corresponding renderers are `OpenGLLookupTableTextureRenderer` and
-`CairoLookupTableTextureRenderer`. The scene transformation is applied during
-rendering.
-
-### Implementation: `PolylineSceneLayer`
-
-Layer that renders vector-based polygonal lines. 
-
-Polylines can be added with the `AddChain` method, that accepts a `Chain`, that
-is a typedef to `std::vector<ScenePoint2D>`, a flag to specify whether the 
-chain must be automatically close (last point of the vector connected to the
-first one) and the chain color (a `Color` structure).
-
-Please note that the line thickness is, contrary to the color, specified 
-per-chain but rather per-layer. 
-
-If you need multiple line thicknesses, multiple `PolylineSceneLayer` must be
-created.
-
-The corresponding renderers are `OpenGLAdvancedPolylineRenderer` and
-`CairoPolylineRenderer`. The scene transformation is applied during
-rendering.
-
-### Implementation: `TextSceneLayer`
-
-This layers renders a paragraph of text. 
-
-The inputs to the layer can be changed after creation and are:
-- The text iself, supplied as an UTF-8 encoded string in `SetText`
-- The font used for rendering, set by `SetFontIndex`.
-- The text anchoring, through `SetAnchor`: the text can be anchored to 
-  various positions, such as top lef, center, bottom center,... These 
-  various anchors are part of the `BitmapAnchor` enumeration.
-- The text position, relative to its anchor, through `SetPosition`.
-
-The font is supplied as an index. This is an index in the set of fonts 
-that has been registered in the viewport compositor. The following code 
-shows how to set such a font:
-
-```
-std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_.Lock());
-lock->GetCompositor().SetFont(0, 
-                              Orthanc::EmbeddedResources::UBUNTU_FONT, 
-                              32, Orthanc::Encoding_Latin1);
-// where 32 is the font size in pixels
-```
-
-This call uses the embedded `UBUNTU_FONT` resource that has been defined in
-the `CMakeLists.txt` file with:
-
-```
-EmbedResources(
-  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
-)
-```
-
-Please note that you must supply a font: there is no default font provided by
-the OpenGL or Cairo compositors.
-
-The corresponding renderers are `OpenGLTextRenderer` and
-`CairoTextRenderer`. The scene transformation is not applied during rendering,
-because the text anchoring, position and scaling are computed relative to the
-viewport/canvas.
-
-### Implementation: `InfoPanelSceneLayer`
-
-This layer is designed to display an image, supplied through an 
-`Orthanc::ImageAccessor` reference (only used at construction time).
-
-The image is not transformed according to the normal layer transformation but 
-is rather positioned relative to the canvas, with the same mechanism as the
-`TextSceneLayer` described above.
-
-The image position is specified with the sole means of the `SetAnchor` method.
-
-The corresponding renderers are `OpenGLInfoPanelRenderer` and 
-`CairoInfoPanelRenderer`.
-
-### `IViewport`
-
-https://bitbucket.org/sjodogne/orthanc-stone/src/broker/Framework/Viewport/IViewport.h
-
-(**not** the one in `Deprecated`)
-- Implemented by classes that:
-  - manage the on-screen display of a `Scene2D` trough a compositor.
-  - Own the `ICompositor` object that performs the rendering. 
-  - Own the `Scene2D` (TODO: currently through `ViewportController` --> `Scene2D`)
-  - Provide a `Lock` method that returns a RAII, that must be kept alive when 
-    modifying the underlying objects (controller, compositor, scene), but not 
-    longer.
-
-#### Implementation: `SdlOpenGLViewport`
-- Implementation of a viewport rendered on a SDL window, that uses OpenGL for 
-  rendering.
-- Instantiating this object creates an SDL window. Automatic scaling for hiDPI
-  displays can be toggled on or off. 
-
-#### Implementation: `WebGLViewport`
-- Implementation of a viewport rendered on a DOM canvas, that uses OpenGL for 
-  rendering.
-- Contrary to the SDL OpenGL viewport, the canvas must already be existing 
-  when the ctor is called.
-
-### `ICompositor`
-The interface providing a rendering service for `Scene2D` objects. 
-
-**Subclasses:** `CairoCompositor`, `OpenGLCompositor`
- 
-You do not need to create compositor instances. They are created for you when
-instantiating a viewport.
-
-### `ViewportController`
-This concrete class is instantiated by its `IViewport` owner. 
-
-**TODO:** its functionality is not well defined and should be moved into the 
-viewport base class. Support for measuring tools should be moved to a special
-interactor.
-
-- contains:
-  - array of `MeasureTool`
-  - ref to `IViewport`
-  - `activeTracker_`
-  - owns a `Scene2D`
-  - weak ref to `UndoStack`
-  - cached `canvasToSceneFactor_`
-
-- contains logic to:
-  - pass commands to undostack (trivial)
-  - logic to locate `MeasureTool` in the HitTest
-  - OTOH, the meat of the measuring tool logic (highlighting etc..) is 
-    done in app-specific code (`VolumeSlicerWidget`)
-  - accept new Scene transform and notify listeners
-  - **the code that uses the interactor** (`HandleMousePress`) is only 
-    called by the new `WebAssemblyViewport` !!! **TODO** clean this mess
-
-### `IViewportInteractor`
-- must provide logic to respond to `CreateTracker`
-
-### `DefaultViewportInteractor`
-- provides Pan+Rotate+Zoom trackers
-
-### `WebGLViewportsRegistry`
-
-This class is a singleton (accessible through `GetWebGLViewportsRegistry()` 
-that deals with context losses in the WebGL contexts.
-
-You use it by creating a WebGLViewport in the following fashion:
-
-```
-boost::shared_ptr<OrthancStone::WebGLViewport> viewport(
-  OrthancStone::GetWebGLViewportsRegistry().Add(canvasId));
-```
-
-## Source data related
-
-### `IVolumeSlicer`
-
-A very simple interface with a single method:
-`IVolumeSlicer::IExtractedSlice* ExtractSlice(const CoordinateSystem3D& cuttingPlane)`
-
-### `IVolumeSlicer::IExtractedSlice`
-
-On a slice has been extracted from a volume by an `IVolumeSlicer`, it can
-report its *revision number*. 
-
-If another call to `ExtractSlice` with the same cutting plane is made, but 
-the returned slice revision is different, it means that the volume has 
-changed and the scene layer must be refreshed.
-
-Please see `VolumeSceneLayerSource::Update` to check how this logic is 
-implemented.
-
-
-### `OrthancSeriesVolumeProgressiveLoader`
-
-This class implements `IVolumeSlicer` (and `IObservable`) and can be used to 
-load a volume stored in a Dicom series on an Orthanc server.
-
-Over the course of the series loading, various notifications are sent:
-
-The first one is `OrthancStone::DicomVolumeImage::GeometryReadyMessage` that
-is sent when the volume extent and geometric properties are known.
-
-Then, as slices get loaded and the volume is filled,  
-`OrthancStone::DicomVolumeImage::ContentUpdatedMessage` are sent.
-
-Once all the highest-quality slices have been loaded, the 
-`OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality` 
-notification is sent.
-
-Please note that calling `ExtractSlice` *before* the geometry is loaded will
-yield an instance of `InvalidSlice` that cannot be used to create a layer.
-
-On the other hand, 
-
-### `VolumeSceneLayerSource`
-
-This class makes the bridge between a volume (supplied by an `IVolumeSlicer`
-interface) and a `Scene2D`. 
-
-Please note that the bulk of the work is done the objects implementing 
-`IVolumeSlicer` and this object merely connects things together.
-
-For instance, deciding whether an image (texture) or vector (polyline) layer
-is done by the `IVolumeSlicer` implementation.
-
-- contains:
-  - reference to Scene2D
-  - `layerIndex_` (fixed at ctor) that is the index, in the Scene2D layer 
-    stack, of the layer that will be created/updated
-  - `IVolumeSlicer`
-
-- contains logic to:
-  - extract a slice from the slicer and set/refresh the Scene2D layer at 
-    the supplied `layerIndex_`
-  - refresh this based on the slice revision or configuration revision
-  - accept a configuration that will be applied to the layer
-  - the `Update()` method will 
-
-## Updates and the configurators
-
-`ISceneLayer` does not expose mutable methods. 
-
-The way to change a layer once it has been created is through configurator 
-objets.
-
-If you plan to set (even only once) or modify some layer properties after 
-layer creation, you need to create a matching configurator objet.
-
-For instance, in the `VolumeSceneLayerSource`, the `SetConfigurator` method
-will store a `ILayerStyleConfigurator* configurator_`.
-
-In the `OrthancView` ctor, you can see how it is used:
-
-```
-std::unique_ptr<GrayscaleStyleConfigurator> style(
-  new GrayscaleStyleConfigurator);
-
-style->SetLinearInterpolation(true);
-
-...<some more code>...
-
-std::unique_ptr<LookupTableStyleConfigurator> config(
-  new LookupTableStyleConfigurator);
-
-config->SetLookupTable(Orthanc::EmbeddedResources::COLORMAP_HOT);
-
-```
-
-The configurator type are created according to the type of layer.¸
-
-Later, in `VolumeSceneLayerSource::Update(const CoordinateSystem3D& plane)`, 
-if the cutting plane has **not** changed and if the layer revision has **not**
-changed, we test `configurator_->GetRevision() != lastConfiguratorRevision_` 
-and, if different, we call `configurator_->ApplyStyle(scene_.GetLayer(layerDepth_));`
-
-This allows to change layer properties that do not depend on the layer model
-contents.
-
-On the other hand, if the layer revision has changed, when compared to the 
-last time it has been rendered (stored in `lastRevision_`), then we need to 
-ask the slice to create a brand new layer.
-
-Another way to see it is that layer rendering depend on model data and view 
-data. The model data is not mutable in the layer and, if the model changes, the 
-layer must be recreated.
-
-If only the view properties change (the configurator), we call ApplyStyle 
-(that **will** mutate some of the layer internals)
-
-Please note that the renderer does **not** know about the configurator : the 
-renderer uses properies in the layer and does not care whether those have 
-been set once at construction time or at every frame (configuration time).
-
-
-## Cookbook
-
-### Simple application
-
-#### Building
-
-In order to create a Stone application, you need to:
-
-- CMake-based application:
-    ```
-    include(${STONE_SOURCES_DIR}/Resources/CMake/OrthancStoneConfiguration.cmake)
-    ```
-  with this library target that you have to define:
-    ```
-    add_library(OrthancStone STATIC ${ORTHANC_STONE_SOURCES})
-    ```
-  then link with this library:
-    ```
-    target_link_libraries(MyStoneApplication OrthancStone)
-    ```
-
-Building is supported with emscripten, Visual C++ (>= 9.0), gcc...
-
-emscripten recommended version >= 1.38.41
-
-These are very rough guidelines. See the `Samples` folder for actual examples.
-
-#### Structure
-
-The code requires a loader (object that )
-
-Initialize:
-
-```
-Orthanc::Logging::Initialize();
-Orthanc::Logging::EnableInfoLevel(true);
-```
-Call, in WASM:
-```
-DISPATCH_JAVASCRIPT_EVENT("StoneInitialized");
-```
-
-# Notes
-
-- It is NOT possible to abandon the existing loaders : they contain too much loader-specific getters
-
-
-
--- a/Framework/Deprecated/GuiAdapter.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1139 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "GuiAdapter.h"
-
-#if ORTHANC_ENABLE_OPENGL == 1
-#  include "../OpenGL/OpenGLIncludes.h"
-#endif
-
-#if ORTHANC_ENABLE_SDL == 1
-#  include <SDL_video.h>
-#  include <SDL_render.h>
-#  include <SDL.h>
-#endif
-
-#include <Compatibility.h>
-
-namespace OrthancStone
-{
-  std::ostream& operator<<(
-    std::ostream& os, const GuiAdapterKeyboardEvent& event)
-  {
-    os << "sym: " << event.sym << " (" << (int)(event.sym[0]) << ") ctrl: " << event.ctrlKey << ", " <<
-      "shift: " << event.shiftKey << ", " <<
-      "alt: " << event.altKey;
-    return os;
-  }
-
-  std::ostream& operator<<(
-    std::ostream& os, const GuiAdapterMouseEvent& event)
-  {
-    os << "targetX: " << event.targetX << " targetY: " << event.targetY << " button: " << event.button
-      << "ctrlKey: " << event.ctrlKey << "shiftKey: " << event.shiftKey << "altKey: " << event.altKey;
-      
-    return os;
-  }
-
-  int GuiAdapter::s_instanceCount = 0;
-
-#if ORTHANC_ENABLE_WASM == 1
-  void GuiAdapter::Run(GuiAdapterRunFunc /*func*/, void* /*cookie*/)
-  {
-  }
-
-  void ConvertFromPlatform(
-    GuiAdapterUiEvent& dest,
-    int                      eventType,
-    const EmscriptenUiEvent& src)
-  {
-    // no data for now
-  }
-
-  void ConvertFromPlatform(
-    GuiAdapterMouseEvent& dest,
-    int                         eventType,
-    const EmscriptenMouseEvent& src)
-  {
-    memset(&dest, 0, sizeof(GuiAdapterMouseEvent));
-    switch (eventType)
-    {
-    case EMSCRIPTEN_EVENT_CLICK:
-      LOG(ERROR) << "Emscripten EMSCRIPTEN_EVENT_CLICK is not supported";
-      ORTHANC_ASSERT(false, "Not supported");
-      break;
-    case EMSCRIPTEN_EVENT_MOUSEDOWN:
-      dest.type = GUIADAPTER_EVENT_MOUSEDOWN;
-      break;
-    case EMSCRIPTEN_EVENT_DBLCLICK:
-      dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK;
-      break;
-    case EMSCRIPTEN_EVENT_MOUSEMOVE:
-      dest.type = GUIADAPTER_EVENT_MOUSEMOVE;
-      break;
-    case EMSCRIPTEN_EVENT_MOUSEUP:
-      dest.type = GUIADAPTER_EVENT_MOUSEUP;
-      break;
-    case EMSCRIPTEN_EVENT_WHEEL:
-      dest.type = GUIADAPTER_EVENT_WHEEL;
-      break;
-
-    default:
-      LOG(ERROR) << "Emscripten event: " << eventType << " is not supported";
-      ORTHANC_ASSERT(false, "Not supported");
-    }
-    //dest.timestamp = src.timestamp;
-    //dest.screenX = src.screenX;
-    //dest.screenY = src.screenY;
-    //dest.clientX = src.clientX;
-    //dest.clientY = src.clientY;
-    dest.ctrlKey = src.ctrlKey;
-    dest.shiftKey = src.shiftKey;
-    dest.altKey = src.altKey;
-    //dest.metaKey = src.metaKey;
-    dest.button = src.button;
-    //dest.buttons = src.buttons;
-    //dest.movementX = src.movementX;
-    //dest.movementY = src.movementY;
-    dest.targetX = src.targetX;
-    dest.targetY = src.targetY;
-    //dest.canvasX = src.canvasX;
-    //dest.canvasY = src.canvasY;
-    //dest.padding = src.padding;
-  }
-
-  void ConvertFromPlatform( GuiAdapterWheelEvent& dest, int eventType, const EmscriptenWheelEvent& src)
-  {
-    ConvertFromPlatform(dest.mouse, eventType, src.mouse);
-    dest.deltaX = src.deltaX;
-    dest.deltaY = src.deltaY;
-    switch (src.deltaMode)
-    {
-    case DOM_DELTA_PIXEL:
-      dest.deltaMode = GUIADAPTER_DELTA_PIXEL;
-      break;
-    case DOM_DELTA_LINE:
-      dest.deltaMode = GUIADAPTER_DELTA_LINE;
-      break;
-    case DOM_DELTA_PAGE:
-      dest.deltaMode = GUIADAPTER_DELTA_PAGE;
-      break;
-    default:
-      ORTHANC_ASSERT(false, "Unknown deltaMode: " << src.deltaMode <<
-        " in wheel event...");
-    }
-    dest.deltaMode = src.deltaMode;
-  }
-
-  void ConvertFromPlatform(GuiAdapterKeyboardEvent& dest, const EmscriptenKeyboardEvent& src)
-  {
-    dest.sym[0] = src.key[0];
-    dest.sym[1] = 0;
-    dest.ctrlKey = src.ctrlKey;
-    dest.shiftKey = src.shiftKey;
-    dest.altKey = src.altKey;
-  }
-
-  template<typename GenericFunc>
-  struct FuncAdapterPayload
-  {
-    std::string canvasCssSelector;
-    void* userData;
-    GenericFunc callback;
-  };
-
-  template<typename GenericFunc,
-    typename GuiAdapterEvent,
-    typename EmscriptenEvent>
-    EM_BOOL OnEventAdapterFunc(
-      int eventType, const EmscriptenEvent* emEvent, void* userData)
-  {
-    // userData is OnMouseWheelFuncAdapterPayload
-    FuncAdapterPayload<GenericFunc>* payload =
-      reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData);
-    // LOG(INFO) << "OnEventAdapterFunc";
-    // LOG(INFO) << "------------------";
-    // LOG(INFO) << "eventType: " << eventType << " wheelEvent: " << 
-    //   (int)wheelEvent << " userData: " << userData << 
-    //   " payload->userData: " << payload->userData;
-
-    GuiAdapterEvent guiEvent;
-    ConvertFromPlatform(guiEvent, eventType, *emEvent);
-    bool ret = (*(payload->callback))(payload->canvasCssSelector, &guiEvent, payload->userData);
-    return static_cast<EM_BOOL>(ret);
-  }
-
-  template<typename GenericFunc,
-    typename GuiAdapterEvent,
-    typename EmscriptenEvent>
-    EM_BOOL OnEventAdapterFunc2(
-      int /*eventType*/, const EmscriptenEvent* wheelEvent, void* userData)
-  {
-    // userData is OnMouseWheelFuncAdapterPayload
-    FuncAdapterPayload<GenericFunc>* payload =
-      reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData);
-
-    GuiAdapterEvent guiEvent;
-    ConvertFromPlatform(guiEvent, *wheelEvent);
-    bool ret = (*(payload->callback))(payload->canvasCssSelector, &guiEvent, payload->userData);
-    return static_cast<EM_BOOL>(ret);
-  }
-
-  template<typename GenericFunc>
-  EM_BOOL OnEventAdapterFunc3(
-    double time, void* userData)
-  {
-    // userData is OnMouseWheelFuncAdapterPayload
-    FuncAdapterPayload<GenericFunc>* payload =
-      reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData);
-    //std::unique_ptr< FuncAdapterPayload<GenericFunc> > deleter(payload);
-    bool ret = (*(payload->callback))(time, payload->userData);
-    return static_cast<EM_BOOL>(ret);
-  }
-
-  /*
-  
-  Explanation
-  ===========
-
-  - in "older" Emscripten, where DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR doesn't exist or is set to 0,
-    the following strings need to be used to register events:
-    - for canvas, the canvas DOM id. In case of <canvas id="mycanvas1" width='640' ...></canvas>", the string needs 
-      to be "mycanvas"
-    - for the window (for key events), the string needs to be "#window"
-  - in newer Emscripten where DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR==1 (or maybe is not there anymore, in the
-    future as of 2020-04-20)
-    - for canvas, the canvas DOM id. In case of <canvas id="mycanvas1" width='640' ...></canvas>", the string needs
-      to be "#mycanvas"  (notice the "number sign", aka "hash", NOT AKA "sharp", as can be read on https://en.wikipedia.org/wiki/Number_sign)
-    - for the window (for key events), the string needs to be EMSCRIPTEN_EVENT_TARGET_WINDOW. I do not mean 
-      "EMSCRIPTEN_EVENT_TARGET_WINDOW", but the #define EMSCRIPTEN_EVENT_TARGET_WINDOW         ((const char*)2) that
-      can be found in emscripten/html5.h
-
-  The code below converts the input canvasId (as in the old emscripten) to the emscripten-compliant one, with the
-  following compile condition : #if DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR == 1
-
-  If the DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR build parameter disappears, you might want to refactor this code
-  or continue to pass the DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR compile macro (which is different from the CMake
-  variable)     
-
-  What we are doing below:
-  - in older Emscripten, the registration functions will receive "mycanvas" and "#window" and the callbacks will receive 
-    the same std::string in their payload ("mycanvas" and "#window")
-
-  - in newer Emscripten, the registration functions will receive "#mycanvas" and EMSCRIPTEN_EVENT_TARGET_WINDOW, but 
-    the callbacks will receive "#mycanvas" and "#window" (since it is not possible to store the EMSCRIPTEN_EVENT_TARGET_WINDOW
-    magic value in an std::string, while we still want the callback to be able to change its behavior according to the
-    target element.
-  
-  */
-
-  void convertElementTarget(const char*& outCanvasCssSelectorSz, std::string& outCanvasCssSelector, const std::string& canvasId)
-  {
-    // only "#window" can start with a #
-    if (canvasId[0] == '#')
-    {
-      ORTHANC_ASSERT(canvasId == "#window");
-    }
-#if DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR == 1
-    if (canvasId == "#window")
-    {
-      // we store this in the payload so that the callback can 
-      outCanvasCssSelector = "#window";
-      outCanvasCssSelectorSz = EMSCRIPTEN_EVENT_TARGET_WINDOW;
-    }
-    else
-    {
-      outCanvasCssSelector = "#" + canvasId;
-      outCanvasCssSelectorSz = outCanvasCssSelector.c_str();
-    }
-#else
-    if (canvasId == "#window")
-    {
-      // we store this in the payload so that the callback can 
-      outCanvasCssSelector = "#window";
-      outCanvasCssSelectorSz = outCanvasCssSelector.c_str();;
-    }
-    else
-    {
-      outCanvasCssSelector = canvasId;
-      outCanvasCssSelectorSz = outCanvasCssSelector.c_str();;
-    }
-#endif
-  }
-
-  // resize: (const char* target, void* userData, EM_BOOL useCapture, em_ui_callback_func callback)
-  template<
-    typename GenericFunc,
-    typename GuiAdapterEvent,
-    typename EmscriptenEvent,
-    typename EmscriptenSetCallbackFunc>
-    static void SetCallback(
-      EmscriptenSetCallbackFunc emFunc,
-      std::string canvasId, void* userData, bool capture, GenericFunc func)
-  {
-    std::string canvasCssSelector;
-    const char* canvasCssSelectorSz = NULL;
-    convertElementTarget(canvasCssSelectorSz, canvasCssSelector, canvasId);
-
-    // TODO: write RemoveCallback with an int id that gets returned from here
-
-    // create userdata payload
-    std::unique_ptr<FuncAdapterPayload<GenericFunc> > payload(new FuncAdapterPayload<GenericFunc>());
-    payload->canvasCssSelector = canvasCssSelector;
-    payload->callback = func;
-    payload->userData = userData;
-    void* userDataRaw = reinterpret_cast<void*>(payload.release());
-
-    // call the registration function
-    (*emFunc)(
-      canvasCssSelectorSz,
-      userDataRaw,
-      static_cast<EM_BOOL>(capture),
-      &OnEventAdapterFunc<GenericFunc, GuiAdapterEvent, EmscriptenEvent>,
-      EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD);
-  }
-
-  template<
-    typename GenericFunc,
-    typename GuiAdapterEvent,
-    typename EmscriptenEvent,
-    typename EmscriptenSetCallbackFunc>
-    static void SetCallback2(
-      EmscriptenSetCallbackFunc emFunc,
-      std::string canvasId, void* userData, bool capture, GenericFunc func)
-  {
-    std::string canvasCssSelector;
-    const char* canvasCssSelectorSz = NULL;
-    convertElementTarget(canvasCssSelectorSz, canvasCssSelector, canvasId);
-
-    // TODO: write RemoveCallback with an int id that gets returned from here
-
-    // create userdata payload
-    std::unique_ptr<FuncAdapterPayload<GenericFunc> > payload(new FuncAdapterPayload<GenericFunc>());
-    payload->canvasCssSelector = canvasCssSelector;
-    payload->callback = func;
-    payload->userData = userData;
-    void* userDataRaw = reinterpret_cast<void*>(payload.release());
-
-    // call the registration function
-    (*emFunc)(
-      canvasCssSelectorSz,
-      userDataRaw,
-      static_cast<EM_BOOL>(capture),
-      &OnEventAdapterFunc2<GenericFunc, GuiAdapterEvent, EmscriptenEvent>,
-      EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD);
-  }
-
-  template<
-    typename GenericFunc,
-    typename EmscriptenSetCallbackFunc>
-    static void SetAnimationFrameCallback(
-      EmscriptenSetCallbackFunc emFunc,
-      void* userData, GenericFunc func)
-  {
-    std::unique_ptr<FuncAdapterPayload<GenericFunc> > payload(
-      new FuncAdapterPayload<GenericFunc>()
-    );
-    payload->canvasCssSelector = "UNDEFINED";
-    payload->callback = func;
-    payload->userData = userData;
-    void* userDataRaw = reinterpret_cast<void*>(payload.release());
-    (*emFunc)(
-      &OnEventAdapterFunc3<GenericFunc>,
-      userDataRaw);
-  }
-
-  void GuiAdapter::SetWheelCallback(
-    std::string canvasId, void* userData, bool capture, OnMouseWheelFunc func)
-  {
-    SetCallback<OnMouseWheelFunc, GuiAdapterWheelEvent, EmscriptenWheelEvent>(
-      &emscripten_set_wheel_callback_on_thread,
-      canvasId,
-      userData,
-      capture,
-      func);
-  }
-
-  
-  void GuiAdapter::SetMouseDblClickCallback(
-      std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
-  {
-    SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
-      &emscripten_set_dblclick_callback_on_thread,
-      canvasId,
-      userData,
-      capture,
-      func);
-  }
-
-
-  void GuiAdapter::SetMouseDownCallback(
-    std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
-  {
-    SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
-      &emscripten_set_mousedown_callback_on_thread,
-      canvasId,
-      userData,
-      capture,
-      func);
-  }
-
-  void GuiAdapter::SetMouseMoveCallback(
-    std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
-  {
-    // LOG(INFO) << "SetMouseMoveCallback -- " << "supplied userData: " << 
-    //   userData;
-
-    SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
-      &emscripten_set_mousemove_callback_on_thread,
-      canvasId,
-      userData,
-      capture,
-      func);
-  }
-
-  void GuiAdapter::SetMouseUpCallback(
-    std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
-  {
-    SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
-      &emscripten_set_mouseup_callback_on_thread,
-      canvasId,
-      userData,
-      capture,
-      func);
-  }
-
-  void GuiAdapter::SetKeyDownCallback(
-    std::string canvasId, void* userData, bool capture, OnKeyDownFunc func)
-  {
-    SetCallback2<OnKeyDownFunc, GuiAdapterKeyboardEvent, EmscriptenKeyboardEvent>(
-      &emscripten_set_keydown_callback_on_thread,
-      canvasId,
-      userData,
-      capture,
-      func);
-  }
-
-  void GuiAdapter::SetKeyUpCallback(
-    std::string canvasId, void* userData, bool capture, OnKeyUpFunc func)
-  {
-    SetCallback2<OnKeyUpFunc, GuiAdapterKeyboardEvent, EmscriptenKeyboardEvent>(
-      &emscripten_set_keyup_callback_on_thread,
-      canvasId,
-      userData,
-      capture,
-      func);
-  }
-
-#if 0
-  // useless under Wasm where canvas resize is handled automatically
-  void GuiAdapter::SetResizeCallback(
-    std::string canvasId, void* userData, bool capture, OnWindowResizeFunc func)
-  {
-    SetCallback<OnWindowResizeFunc, GuiAdapterUiEvent, EmscriptenUiEvent>(
-      &emscripten_set_resize_callback_on_thread,
-      canvasId,
-      userData,
-      capture,
-      func);
-  }
-#endif
-
-  void GuiAdapter::RequestAnimationFrame(
-    OnAnimationFrameFunc func, void* userData)
-  {
-    SetAnimationFrameCallback<OnAnimationFrameFunc>(
-      &emscripten_request_animation_frame_loop,
-      userData,
-      func);
-  }
-
-#if 0
-  void GuiAdapter::SetKeyDownCallback(
-    std::string canvasId, void* userData, bool capture, OnKeyDownFunc func)
-  {
-    emscripten_set_keydown_callback(canvasId.c_str(), userData, static_cast<EM_BOOL>(capture), func);
-  }
-  void GuiAdapter::SetKeyUpCallback(
-    std::string canvasId, void* userData, bool capture, OnKeyUpFunc func)
-  {
-    emscripten_set_keyup_callback(canvasId.c_str(), userData, static_cast<EM_BOOL>(capture), func);
-  }
-
-  // handled from within WebAssemblyViewport
-  //void GuiAdapter::SetResizeCallback(std::string canvasId, void* userData, bool capture, OnWindowResizeFunc func)
-  //{
-  //  emscripten_set_resize_callback(canvasId.c_str(), userData, static_cast<EM_BOOL>(capture), func);
-  //}
-
-  void GuiAdapter::RequestAnimationFrame(OnAnimationFrameFunc func, void* userData)
-  {
-    emscripten_request_animation_frame_loop(func, userData);
-  }
-#endif
-
-
-#else
-
-  // SDL ONLY
-  void ConvertFromPlatform(GuiAdapterMouseEvent& dest, bool ctrlPressed, bool shiftPressed, bool altPressed, const SDL_Event& source)
-  {
-    memset(&dest, 0, sizeof(GuiAdapterMouseEvent));
-    switch (source.type)
-    {
-    case SDL_MOUSEBUTTONDOWN:
-      if (source.button.clicks == 1) {
-        dest.type = GUIADAPTER_EVENT_MOUSEDOWN;
-      } else if (source.button.clicks == 2) {
-        dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK;
-      } else {
-        dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK;
-        LOG(WARNING) << "Multiple-click ignored.";
-      }
-      break;
-    case SDL_MOUSEMOTION:
-      dest.type = GUIADAPTER_EVENT_MOUSEMOVE;
-      break;
-    case SDL_MOUSEBUTTONUP:
-      dest.type = GUIADAPTER_EVENT_MOUSEUP;
-      break;
-    case SDL_MOUSEWHEEL:
-      dest.type = GUIADAPTER_EVENT_WHEEL;
-      break;
-    default:
-      LOG(ERROR) << "SDL event: " << source.type << " is not supported";
-      ORTHANC_ASSERT(false, "Not supported");
-    }
-    //dest.timestamp = src.timestamp;
-    //dest.screenX = src.screenX;
-    //dest.screenY = src.screenY;
-    //dest.clientX = src.clientX;
-    //dest.clientY = src.clientY;
-    dest.ctrlKey = ctrlPressed;
-    dest.shiftKey = shiftPressed;
-    dest.altKey = altPressed;
-    //dest.metaKey = src.metaKey;
-    switch (source.button.button)
-    {
-    case SDL_BUTTON_MIDDLE:
-      dest.button =GUIADAPTER_MOUSEBUTTON_MIDDLE;
-      break;
-
-    case SDL_BUTTON_RIGHT:
-      dest.button = GUIADAPTER_MOUSEBUTTON_RIGHT;
-      break;
-
-    case SDL_BUTTON_LEFT:
-      dest.button = GUIADAPTER_MOUSEBUTTON_LEFT;
-      break;
-
-    default:
-      break;
-    }
-    //dest.buttons = src.buttons;
-    //dest.movementX = src.movementX;
-    //dest.movementY = src.movementY;
-    dest.targetX = source.button.x;
-    dest.targetY = source.button.y;
-    //dest.canvasX = src.canvasX;
-    //dest.canvasY = src.canvasY;
-    //dest.padding = src.padding;
-  }
-
-  void ConvertFromPlatform(
-    GuiAdapterWheelEvent& dest,
-    bool ctrlPressed, bool shiftPressed, bool altPressed,
-    const SDL_Event& source)
-  {
-    ConvertFromPlatform(dest.mouse, ctrlPressed, shiftPressed, altPressed, source);
-    dest.deltaX = source.wheel.x;
-    dest.deltaY = source.wheel.y;
-  }
-
-  void ConvertFromPlatform(GuiAdapterKeyboardEvent& dest, const SDL_Event& src)
-  {
-    memset(&dest, 0, sizeof(GuiAdapterMouseEvent));
-    switch (src.type)
-    {
-    case SDL_KEYDOWN:
-      dest.type = GUIADAPTER_EVENT_KEYDOWN;
-      break;
-    case SDL_KEYUP:
-      dest.type = GUIADAPTER_EVENT_KEYUP;
-      break;
-    default:
-      LOG(ERROR) << "SDL event: " << src.type << " is not supported";
-      ORTHANC_ASSERT(false, "Not supported");
-    }
-    dest.sym[0] = src.key.keysym.sym;
-    dest.sym[1] = 0;
-
-    if (src.key.keysym.mod & KMOD_CTRL)
-      dest.ctrlKey = true;
-    else
-      dest.ctrlKey = false;
-
-    if (src.key.keysym.mod & KMOD_SHIFT)
-      dest.shiftKey = true;
-    else
-      dest.shiftKey = false;
-
-    if (src.key.keysym.mod & KMOD_ALT)
-      dest.altKey = true;
-    else
-      dest.altKey = false;
-  }
-
-  // SDL ONLY
-  void GuiAdapter::SetSdlResizeCallback(
-    std::string canvasId, void* userData, bool capture, OnSdlWindowResizeFunc func)
-  {
-    resizeHandlers_.push_back(EventHandlerData<OnSdlWindowResizeFunc>(canvasId, func, userData));
-  }
-
-  // SDL ONLY
-  void GuiAdapter::SetMouseDownCallback(
-    std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
-  {
-    mouseDownHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData));
-  }
-
-  // SDL ONLY
-  void GuiAdapter::SetMouseDblClickCallback(
-    std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
-  {
-    mouseDblCickHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData));
-  }
-
-  // SDL ONLY
-  void GuiAdapter::SetMouseMoveCallback(
-    std::string canvasId, void* userData, bool capture, OnMouseEventFunc  func)
-  {
-    mouseMoveHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData));
-  }
-
-  // SDL ONLY
-  void GuiAdapter::SetMouseUpCallback(
-    std::string canvasId, void* userData, bool capture, OnMouseEventFunc  func)
-  {
-    mouseUpHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData));
-  }
-
-  // SDL ONLY
-  void GuiAdapter::SetWheelCallback(
-    std::string canvasId, void* userData, bool capture, OnMouseWheelFunc  func)
-  {
-    mouseWheelHandlers_.push_back(EventHandlerData<OnMouseWheelFunc>(canvasId, func, userData));
-  }
-
-  // SDL ONLY
-  void GuiAdapter::SetKeyDownCallback(
-    std::string canvasId, void* userData, bool capture, OnKeyDownFunc   func)
-  {
-    keyDownHandlers_.push_back(EventHandlerData<OnKeyDownFunc>(canvasId, func, userData));
-  }
-
-  // SDL ONLY
-  void GuiAdapter::SetKeyUpCallback(
-    std::string canvasId, void* userData, bool capture, OnKeyUpFunc    func)
-  {
-    keyUpHandlers_.push_back(EventHandlerData<OnKeyUpFunc>(canvasId, func, userData));
-  }
-
-  // SDL ONLY
-  void GuiAdapter::SetGenericSdlEventCallback(
-    std::string canvasId, void* userData, bool capture, OnSdlEventCallback func)
-  {
-    sdlEventHandlers_.push_back(EventHandlerData<OnSdlEventCallback>(canvasId, func, userData));
-  }
-
-  // SDL ONLY
-  void GuiAdapter::OnAnimationFrame()
-  {
-    std::vector<size_t> disabledAnimationHandlers;
-    for (size_t i = 0; i < animationFrameHandlers_.size(); i++)
-    {
-      // TODO: fix time 
-      bool goOn = (*(animationFrameHandlers_[i].first))(0, animationFrameHandlers_[i].second);
-
-      // If the function returns false, we need to emulate what happens in Web 
-      // and remove the function from the handlers...
-      if (!goOn)
-        disabledAnimationHandlers.push_back(i);
-    }
-    for (size_t i = 0; i < disabledAnimationHandlers.size(); i++)
-    {
-      ORTHANC_ASSERT(animationFrameHandlers_.begin() + disabledAnimationHandlers[i] < animationFrameHandlers_.end());
-      animationFrameHandlers_.erase(animationFrameHandlers_.begin() + disabledAnimationHandlers[i]);
-    }
-  }
-
-  // SDL ONLY
-  void GuiAdapter::OnResize(unsigned int width, unsigned int height)
-  {
-    for (size_t i = 0; i < resizeHandlers_.size(); i++)
-    {
-      (*(resizeHandlers_[i].func))(
-        resizeHandlers_[i].canvasName, NULL, width, height, resizeHandlers_[i].userData);
-    }
-  }
-
-
-
-  void GuiAdapter::OnSdlGenericEvent(const SDL_Event& sdlEvent)
-  {
-    // Events related to a window are only sent to the related canvas
-    // User events are sent to everyone (we can't filter them here)
-    
-    /*
-    SDL_WindowEvent    SDL_WINDOWEVENT
-    SDL_KeyboardEvent     SDL_KEYDOWN
-                          SDL_KEYUP
-    SDL_TextEditingEvent  SDL_TEXTEDITING
-    SDL_TextInputEvent    SDL_TEXTINPUT
-    SDL_MouseMotionEvent  SDL_MOUSEMOTION
-    SDL_MouseButtonEvent  SDL_MOUSEBUTTONDOWN 
-                          SDL_MOUSEBUTTONUP
-    SDL_MouseWheelEvent   SDL_MOUSEWHEEL
-    SDL_UserEvent         SDL_USEREVENT through ::SDL_LASTEVENT-1
-    */
-
-    // if this string is left empty, it means the message will be sent to
-    // all widgets.
-    // otherwise, it contains the originating message window title
-
-    std::string windowTitle;
-    uint32_t windowId = 0;
-
-    if (sdlEvent.type == SDL_WINDOWEVENT)
-      windowId = sdlEvent.window.windowID;
-    else if (sdlEvent.type == SDL_KEYDOWN || sdlEvent.type == SDL_KEYUP)
-      windowId = sdlEvent.key.windowID;
-    else if (sdlEvent.type == SDL_TEXTEDITING)
-      windowId = sdlEvent.edit.windowID;
-    else if (sdlEvent.type == SDL_TEXTINPUT)
-      windowId = sdlEvent.text.windowID;
-    else if (sdlEvent.type == SDL_MOUSEMOTION)
-      windowId = sdlEvent.motion.windowID;
-    else if (sdlEvent.type == SDL_MOUSEBUTTONDOWN || sdlEvent.type == SDL_MOUSEBUTTONUP)
-      windowId = sdlEvent.button.windowID;
-    else if (sdlEvent.type == SDL_MOUSEWHEEL)
-      windowId = sdlEvent.wheel.windowID;
-    else if (sdlEvent.type >= SDL_USEREVENT && sdlEvent.type <= (SDL_LASTEVENT-1))
-      windowId = sdlEvent.user.windowID;
-
-    if (windowId != 0)
-    {
-      SDL_Window* sdlWindow = SDL_GetWindowFromID(windowId);
-      ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowId << "\" is not a valid SDL window ID!");
-      const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
-      ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowId << "\" has a NULL window title!");
-      windowTitle = windowTitleSz;
-      ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowId << "\" has an empty window title!");
-    }
-
-    for (size_t i = 0; i < sdlEventHandlers_.size(); i++)
-    {
-      // normally, the handlers return a bool indicating whether they
-      // have handled the event or not, but we don't really care about this
-      std::string& canvasName = sdlEventHandlers_[i].canvasName;
-      
-      bool sendEvent = true;
-
-      if (windowTitle != "" && (canvasName != windowTitle))
-        sendEvent = false;
-
-      if (sendEvent)
-      {
-        OnSdlEventCallback func = sdlEventHandlers_[i].func;
-        (*func)(canvasName, sdlEvent, sdlEventHandlers_[i].userData);
-      }
-    }
-  }
-
-  // SDL ONLY
-  void GuiAdapter::OnMouseWheelEvent(uint32_t windowID, const GuiAdapterWheelEvent& event)
-  {
-    // the SDL window name IS the canvas name ("canvas" is used because this lib
-    // is designed for Wasm
-    SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
-    ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowID << "\" is not a valid SDL window ID!");
-
-    const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
-    ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowID << "\" has a NULL window title!");
-
-    std::string windowTitle(windowTitleSz);
-    ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowID << "\" has an empty window title!");
-
-    switch (event.mouse.type)
-    {
-    case GUIADAPTER_EVENT_WHEEL:
-      for (size_t i = 0; i < mouseWheelHandlers_.size(); i++)
-      {
-        if (mouseWheelHandlers_[i].canvasName == windowTitle)
-          (*(mouseWheelHandlers_[i].func))(windowTitle, &event, mouseWheelHandlers_[i].userData);
-      }
-      break;
-    default:
-      ORTHANC_ASSERT(false, "Wrong event.type: " << event.mouse.type << " in GuiAdapter::OnMouseWheelEvent(...)");
-      break;
-    }
-  }
-
-
-  void GuiAdapter::OnKeyboardEvent(uint32_t windowID, const GuiAdapterKeyboardEvent& event)
-  {
-    // only one-letter (ascii) keyboard events supported for now
-    ORTHANC_ASSERT(event.sym[0] != 0);
-    ORTHANC_ASSERT(event.sym[1] == 0);
-
-    SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
-    ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowID << "\" is not a valid SDL window ID!");
-
-    const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
-    ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowID << "\" has a NULL window title!");
-
-    std::string windowTitle(windowTitleSz);
-    ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowID << "\" has an empty window title!");
-
-    switch (event.type)
-    {
-    case GUIADAPTER_EVENT_KEYDOWN:
-      for (size_t i = 0; i < keyDownHandlers_.size(); i++)
-      {
-        (*(keyDownHandlers_[i].func))(windowTitle, &event, keyDownHandlers_[i].userData);
-      }
-      break;
-    case GUIADAPTER_EVENT_KEYUP:
-      for (size_t i = 0; i < keyUpHandlers_.size(); i++)
-      {
-        (*(keyUpHandlers_[i].func))(windowTitle, &event, keyUpHandlers_[i].userData);
-      }
-      break;
-    default:
-      ORTHANC_ASSERT(false, "Wrong event.type: " << event.type << " in GuiAdapter::OnKeyboardEvent(...)");
-      break;
-    }
-  }
-
-  // SDL ONLY
-  void GuiAdapter::OnMouseEvent(uint32_t windowID, const GuiAdapterMouseEvent& event)
-  {
-    if (windowID == 0)
-    {
-      LOG(WARNING) << "GuiAdapter::OnMouseEvent -- windowID == 0 and event won't be routed!";
-    }
-    else
-    {
-      // the SDL window name IS the canvas name ("canvas" is used because this lib
-      // is designed for Wasm
-      SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
-
-      ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowID << "\" is not a valid SDL window ID!");
-
-      const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
-      ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowID << "\" has a NULL window title!");
-
-      std::string windowTitle(windowTitleSz);
-      ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowID << "\" has an empty window title!");
-
-      switch (event.type)
-      {
-      case GUIADAPTER_EVENT_MOUSEDOWN:
-        for (size_t i = 0; i < mouseDownHandlers_.size(); i++)
-        {
-          if (mouseDownHandlers_[i].canvasName == windowTitle)
-            (*(mouseDownHandlers_[i].func))(windowTitle, &event, mouseDownHandlers_[i].userData);
-        }
-        break;
-      case GUIADAPTER_EVENT_MOUSEDBLCLICK:
-        for (size_t i = 0; i < mouseDblCickHandlers_.size(); i++)
-        {
-          if (mouseDblCickHandlers_[i].canvasName == windowTitle)
-            (*(mouseDblCickHandlers_[i].func))(windowTitle, &event, mouseDblCickHandlers_[i].userData);
-        }
-        break;
-      case GUIADAPTER_EVENT_MOUSEMOVE:
-        for (size_t i = 0; i < mouseMoveHandlers_.size(); i++)
-        {
-          if (mouseMoveHandlers_[i].canvasName == windowTitle)
-            (*(mouseMoveHandlers_[i].func))(windowTitle, &event, mouseMoveHandlers_[i].userData);
-        }
-        break;
-      case GUIADAPTER_EVENT_MOUSEUP:
-        for (size_t i = 0; i < mouseUpHandlers_.size(); i++)
-        {
-          if (mouseUpHandlers_[i].canvasName == windowTitle)
-            (*(mouseUpHandlers_[i].func))(windowTitle, &event, mouseUpHandlers_[i].userData);
-        }
-        break;
-      default:
-        ORTHANC_ASSERT(false, "Wrong event.type: " << event.type << " in GuiAdapter::OnMouseEvent(...)");
-        break;
-      }
-    }
-  }
-
-
-  // extern void Debug_SetContextToBeKilled(std::string title);
-  // extern void Debug_SetContextToBeRestored(std::string title);
-
-  // SDL ONLY
-  void GuiAdapter::RequestAnimationFrame(OnAnimationFrameFunc func, void* userData)
-  {
-    animationFrameHandlers_.push_back(std::make_pair(func, userData));
-  }
-
-# if ORTHANC_ENABLE_OPENGL == 1 && !defined(__APPLE__)   /* OpenGL debug is not available on OS X */
-
-  // SDL ONLY
-  static void GLAPIENTRY
-    OpenGLMessageCallback(GLenum source,
-      GLenum type,
-      GLuint id,
-      GLenum severity,
-      GLsizei length,
-      const GLchar * message,
-      const void* userParam)
-  {
-    if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
-    {
-      fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
-        (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
-        type, severity, message);
-    }
-  }
-# endif
-
-#if 0
-  // TODO: remove this when generic sdl event handlers are implemented in 
-  // the DoseView
-  // SDL ONLY
-  bool GuiAdapter::IsSdlViewPortRefreshEvent(const SDL_Event& event) const
-  {
-    SDL_Window* sdlWindow = SDL_GetWindowFromID(event.window.windowID);
-
-    ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << event.window.windowID << "\" is not a valid SDL window ID!");
-
-    const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
-
-    // now we need to find the DoseView from from the canvas name!
-    // (and retrieve the SdlViewport)
-    boost::shared_ptr<IGuiAdapterWidget> foundWidget;
-    VisitWidgets([&foundWidget, windowTitleSz](auto widget)
-    {
-      if (widget->GetCanvasIdentifier() == std::string(windowTitleSz))
-        foundWidget = widget;
-    });
-    ORTHANC_ASSERT(foundWidget, "The window named: \"" << windowTitleSz << "\" was not found in the registered widgets!");
-    return foundWidget->GetSdlViewport().IsRefreshEvent(event);
-  }
-#endif
-
-  // SDL ONLY
-  void GuiAdapter::Run(GuiAdapterRunFunc func, void* cookie)
-  {
-#if 1
-    // TODO: MAKE THIS DYNAMIC !!! See SdlOpenGLViewport vs Cairo in ViewportWrapper
-# if ORTHANC_ENABLE_OPENGL == 1 && !defined(__APPLE__)
-    glEnable(GL_DEBUG_OUTPUT);
-    glDebugMessageCallback(OpenGLMessageCallback, 0);
-# endif
-#endif
-
-    // Uint32 SDL_GetWindowID(SDL_Window* window)
-    // SDL_Window* SDL_GetWindowFromID(Uint32 id)   // may return NULL
-
-    bool stop = false;
-    while (!stop)
-    {
-      {
-        // TODO: lock all viewports here! (use a scoped object)
-        if(func != NULL)
-          (*func)(cookie);
-        OnAnimationFrame(); // in SDL we must call it
-      }
-
-      while (!stop)
-      {
-        std::vector<SDL_Event> sdlEvents;
-        std::map<Uint32,SDL_Event> userEventsMap;
-        
-        SDL_Event sdlEvent;
-
-        // FIRST: collect all pending events
-        while (SDL_PollEvent(&sdlEvent) != 0)
-        {
-          if ( (sdlEvent.type >= SDL_USEREVENT) && 
-               (sdlEvent.type < SDL_LASTEVENT) )
-          {
-            // we don't want to have multiple events with the same event.type
-            userEventsMap[sdlEvent.type] = sdlEvent;
-          }
-          else
-          {
-            sdlEvents.push_back(sdlEvent);
-          }
-        }
-
-        // SECOND: collect all user events
-        for (std::map<Uint32,SDL_Event>::const_iterator it = userEventsMap.begin(); it != userEventsMap.end(); ++it)
-          sdlEvents.push_back(it->second);
-                
-        // now process the events
-        for (std::vector<SDL_Event>::const_iterator it = sdlEvents.begin(); it != sdlEvents.end(); ++it)
-        {
-          const SDL_Event& sdlEvent = *it;
-          // TODO: lock all viewports here! (use a scoped object)
-
-          if (sdlEvent.type == SDL_QUIT)
-          {
-            // TODO: call exit callbacks here
-            stop = true;
-            break;
-          }
-          else if ((sdlEvent.type == SDL_MOUSEMOTION) ||
-            (sdlEvent.type == SDL_MOUSEBUTTONDOWN) ||
-                   (sdlEvent.type == SDL_MOUSEBUTTONUP))
-          {
-            int scancodeCount = 0;
-            const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
-            bool ctrlPressed(false);
-            bool shiftPressed(false);
-            bool altPressed(false);
-
-            if (SDL_SCANCODE_LCTRL < scancodeCount && keyboardState[SDL_SCANCODE_LCTRL])
-              ctrlPressed = true;
-            if (SDL_SCANCODE_RCTRL < scancodeCount && keyboardState[SDL_SCANCODE_RCTRL])
-              ctrlPressed = true;
-            if (SDL_SCANCODE_LSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_LSHIFT])
-              shiftPressed = true;
-            if (SDL_SCANCODE_RSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_RSHIFT])
-              shiftPressed = true;
-            if (SDL_SCANCODE_LALT < scancodeCount && keyboardState[SDL_SCANCODE_LALT])
-              altPressed = true;
-
-            GuiAdapterMouseEvent dest;
-            ConvertFromPlatform(dest, ctrlPressed, shiftPressed, altPressed, sdlEvent);
-            OnMouseEvent(sdlEvent.window.windowID, dest);
-  #if 0
-            // for reference, how to create trackers
-            if (tracker)
-            {
-              PointerEvent e;
-              e.AddPosition(compositor.GetPixelCenterCoordinates(
-                sdlEvent.button.x, sdlEvent.button.y));
-              tracker->PointerMove(e);
-            }
-  #endif
-          }
-          else if (sdlEvent.type == SDL_MOUSEWHEEL)
-          {
-
-            int scancodeCount = 0;
-            const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
-            bool ctrlPressed(false);
-            bool shiftPressed(false);
-            bool altPressed(false);
-
-            if (SDL_SCANCODE_LCTRL < scancodeCount && keyboardState[SDL_SCANCODE_LCTRL])
-              ctrlPressed = true;
-            if (SDL_SCANCODE_RCTRL < scancodeCount && keyboardState[SDL_SCANCODE_RCTRL])
-              ctrlPressed = true;
-            if (SDL_SCANCODE_LSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_LSHIFT])
-              shiftPressed = true;
-            if (SDL_SCANCODE_RSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_RSHIFT])
-              shiftPressed = true;
-            if (SDL_SCANCODE_LALT < scancodeCount && keyboardState[SDL_SCANCODE_LALT])
-              altPressed = true;
-
-            GuiAdapterWheelEvent dest;
-            ConvertFromPlatform(dest, ctrlPressed, shiftPressed, altPressed, sdlEvent);
-            OnMouseWheelEvent(sdlEvent.window.windowID, dest);
-
-            //KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
-
-            //int x, y;
-            //SDL_GetMouseState(&x, &y);
-
-            //if (sdlEvent.wheel.y > 0)
-            //{
-            //  locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Up, x, y, modifiers);
-            //}
-            //else if (sdlEvent.wheel.y < 0)
-            //{
-            //  locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Down, x, y, modifiers);
-            //}
-          }
-          else if (sdlEvent.type == SDL_WINDOWEVENT &&
-            (sdlEvent.window.event == SDL_WINDOWEVENT_RESIZED ||
-             sdlEvent.window.event == SDL_WINDOWEVENT_SIZE_CHANGED))
-          {
-  #if 0
-            tracker.reset();
-  #endif
-            OnResize(sdlEvent.window.data1, sdlEvent.window.data2);
-          }
-          else if (sdlEvent.type == SDL_KEYDOWN && sdlEvent.key.repeat == 0 /* Ignore key bounce */)
-          {
-            switch (sdlEvent.key.keysym.sym)
-            {
-            case SDLK_f:
-              // window.GetWindow().ToggleMaximize(); //TODO: move to particular handler
-              break;
-
-            // This commented out code was used to debug the context
-            // loss/restoring code (2019-08-10)
-            // case SDLK_k:
-            //   {
-            //     SDL_Window* window = SDL_GetWindowFromID(sdlEvent.window.windowID);
-            //     std::string windowTitle(SDL_GetWindowTitle(window));
-            //     Debug_SetContextToBeKilled(windowTitle);
-            //   }
-            //   break;
-            // case SDLK_l:
-            //   {
-            //     SDL_Window* window = SDL_GetWindowFromID(sdlEvent.window.windowID);
-            //     std::string windowTitle(SDL_GetWindowTitle(window));
-            //     Debug_SetContextToBeRestored(windowTitle);
-            //   }
-            //   break;
-
-            case SDLK_q:
-              stop = true;
-              break;
-
-            default:
-              GuiAdapterKeyboardEvent dest;
-              ConvertFromPlatform(dest, sdlEvent);
-              OnKeyboardEvent(sdlEvent.window.windowID, dest);
-              break;
-            }
-          }
-        
-          OnSdlGenericEvent(sdlEvent);
-        }
-        SDL_Delay(1);
-      }
-    }
-  }
-#endif
-}
-
--- a/Framework/Deprecated/GuiAdapter.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,377 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include <string>
-
-#if ORTHANC_ENABLE_WASM != 1
-# ifdef __EMSCRIPTEN__
-#   error __EMSCRIPTEN__ is defined and ORTHANC_ENABLE_WASM != 1
-# endif
-#endif
-
-#if ORTHANC_ENABLE_WASM == 1
-# ifndef __EMSCRIPTEN__
-#   error __EMSCRIPTEN__ is not defined and ORTHANC_ENABLE_WASM == 1
-# endif
-#endif
-
-#if ORTHANC_ENABLE_WASM == 1
-# include <emscripten/html5.h>
-#else
-# if ORTHANC_ENABLE_SDL == 1
-#   include <SDL.h>
-# endif
-#endif
-
-#include "../StoneException.h"
-
-#include <vector>
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-
-namespace OrthancStone
-{
-#if ORTHANC_ENABLE_SDL == 1
-  class SdlViewport;
-#endif
-
-#if 0
-
-  /**
-  This interface is used to store the widgets that are controlled by the 
-  GuiAdapter and receive event callbacks.
-  The callbacks may possibly be downcast (using dynamic_cast, for safety) \
-  to the actual widget type
-  */
-  class IGuiAdapterWidget
-  {
-  public:
-    virtual ~IGuiAdapterWidget() {}
-    
-#if #if ORTHANC_ENABLE_SDL == 1
-    /**
-    Returns the SdlViewport that this widget contains. If the underlying 
-    viewport type is *not* SDL, then an error is returned.
-    */
-    virtual SdlViewport& GetSdlViewport() = 0;
-#endif
-  };
-
-#endif
-
-  enum GuiAdapterMouseButtonType
-  {
-    GUIADAPTER_MOUSEBUTTON_LEFT = 0,
-    GUIADAPTER_MOUSEBUTTON_MIDDLE = 1,
-    GUIADAPTER_MOUSEBUTTON_RIGHT = 2
-  };
-
-
-  enum GuiAdapterHidEventType
-  {
-    GUIADAPTER_EVENT_MOUSEDOWN      = 1973,
-    GUIADAPTER_EVENT_MOUSEMOVE      = 1974,
-    GUIADAPTER_EVENT_MOUSEDBLCLICK  = 1975,
-    GUIADAPTER_EVENT_MOUSEUP        = 1976,
-    GUIADAPTER_EVENT_WHEEL          = 1977,
-    GUIADAPTER_EVENT_KEYDOWN        = 1978,
-    GUIADAPTER_EVENT_KEYUP          = 1979,
-  };
-
-  const unsigned int GUIADAPTER_DELTA_PIXEL = 2973;
-  const unsigned int GUIADAPTER_DELTA_LINE  = 2974;
-  const unsigned int GUIADAPTER_DELTA_PAGE  = 2975;
-
-  struct GuiAdapterUiEvent;
-  struct GuiAdapterMouseEvent;
-  struct GuiAdapterWheelEvent;
-  struct GuiAdapterKeyboardEvent;
-
-#if 1
-  typedef bool (*OnMouseEventFunc)    (std::string canvasId, const GuiAdapterMouseEvent* mouseEvent, void* userData);
-  typedef bool (*OnMouseWheelFunc)    (std::string canvasId, const GuiAdapterWheelEvent* wheelEvent, void* userData);
-  typedef bool (*OnKeyDownFunc)       (std::string canvasId, const GuiAdapterKeyboardEvent*   keyEvent,   void* userData);
-  typedef bool (*OnKeyUpFunc)         (std::string canvasId, const GuiAdapterKeyboardEvent*   keyEvent,   void* userData);
-  typedef bool (*OnAnimationFrameFunc)(double time, void* userData);
-  
-#if ORTHANC_ENABLE_SDL == 1
-  typedef bool (*OnSdlEventCallback)  (std::string canvasId, const SDL_Event& sdlEvent, void* userData);
-
-  typedef bool (*OnSdlWindowResizeFunc)(std::string canvasId, 
-                                        const GuiAdapterUiEvent* uiEvent, 
-                                        unsigned int width, 
-                                        unsigned int height, 
-                                        void* userData);
-
-
-#endif
-
-#else
-
-#if ORTHANC_ENABLE_WASM == 1
-  typedef EM_BOOL (*OnMouseEventFunc)(int eventType, const EmscriptenMouseEvent* mouseEvent, void* userData);
-  typedef EM_BOOL (*OnMouseWheelFunc)(int eventType, const EmscriptenWheelEvent* wheelEvent, void* userData);
-  typedef EM_BOOL (*OnKeyDownFunc)   (int eventType, const EmscriptenKeyboardEvent* keyEvent, void* userData);
-  typedef EM_BOOL (*OnKeyUpFunc)     (int eventType, const EmscriptenKeyboardEvent* keyEvent, void* userData);
-
-  typedef EM_BOOL (*OnAnimationFrameFunc)(double time, void* userData);
-  typedef EM_BOOL (*OnWindowResizeFunc)(int eventType, const EmscriptenUiEvent* uiEvent, void* userData);
-#else
-  typedef bool    (*OnMouseEventFunc)(int eventType, const SDL_Event* mouseEvent, void* userData);
-  typedef bool    (*OnMouseWheelFunc)(int eventType, const SDL_Event* wheelEvent, void* userData);
-  typedef bool    (*OnKeyDownFunc)   (int eventType, const SDL_Event* keyEvent,   void* userData);
-  typedef bool    (*OnKeyUpFunc)     (int eventType, const SDL_Event* keyEvent,   void* userData);
-
-  typedef bool    (*OnAnimationFrameFunc)(double time, void* userData);
-  typedef bool    (*OnWindowResizeFunc)(int eventType, const GuiAdapterUiEvent* uiEvent, void* userData);
-#endif
-
-#endif
-  struct GuiAdapterMouseEvent
-  {
-    GuiAdapterHidEventType type;
-    //double                   timestamp;
-    //long                     screenX;
-    //long                     screenY;
-    //long                     clientX;
-    //long                     clientY;
-    bool                     ctrlKey;
-    bool                     shiftKey;
-    bool                     altKey;
-    //bool                     metaKey;
-    unsigned short           button;
-    //unsigned short           buttons;
-    //long                     movementX;
-    //long                     movementY;
-    long                     targetX;
-    long                     targetY;
-    // canvasX and canvasY are deprecated - there no longer exists a Module['canvas'] object, so canvasX/Y are no longer reported (register a listener on canvas directly to get canvas coordinates, or translate manually)
-    //long                     canvasX;
-    //long                     canvasY;
-    //long                     padding;
-
-  public:
-    GuiAdapterMouseEvent()
-      : ctrlKey(false),
-        shiftKey(false),
-        altKey(false)
-    {
-    }
-  };
-
-  struct GuiAdapterWheelEvent {
-    GuiAdapterMouseEvent mouse;
-    double deltaX;
-    double deltaY;
-    unsigned long deltaMode;
-  };
-
-  // we don't use any data now
-  struct GuiAdapterUiEvent {};
-
-  // EmscriptenKeyboardEvent
-  struct GuiAdapterKeyboardEvent
-  {
-    GuiAdapterHidEventType type;
-    char sym[32];
-    bool ctrlKey;
-    bool shiftKey;
-    bool altKey;
-  };
-
-  std::ostream& operator<<(std::ostream& os, const GuiAdapterKeyboardEvent& event);
-  std::ostream& operator<<(std::ostream& os, const GuiAdapterMouseEvent& event);
-
-  /*
-    Mousedown event trigger when either the left or right (or middle) mouse is pressed 
-    on the object;
-
-    Mouseup event trigger when either the left or right (or middle) mouse is released
-    above the object after triggered mousedown event and held.
-
-    Click event trigger when the only left mouse button is pressed and released on the
-    same object, requires the Mousedown and Mouseup event happened before Click event.
-
-    The normal expect trigger order: onMousedown >> onMouseup >> onClick
-
-    Testing in Chrome v58, the time between onMouseup and onClick events are around 
-    7ms to 15ms
-
-    FROM: https://codingrepo.com/javascript/2017/05/19/javascript-difference-mousedown-mouseup-click-events/
-  */
-#if ORTHANC_ENABLE_WASM == 1
-  void ConvertFromPlatform(GuiAdapterUiEvent& dest, int eventType, const EmscriptenUiEvent& src);
-
-  void ConvertFromPlatform(GuiAdapterMouseEvent& dest, int eventType, const EmscriptenMouseEvent& src);
-  
-  void ConvertFromPlatform(GuiAdapterWheelEvent& dest, int eventType, const EmscriptenWheelEvent& src);
-
-  void ConvertFromPlatform(GuiAdapterKeyboardEvent& dest, const EmscriptenKeyboardEvent& src);
-#else
-
-# if ORTHANC_ENABLE_SDL == 1
-  void ConvertFromPlatform(GuiAdapterMouseEvent& dest, bool ctrlPressed, bool shiftPressed, bool altPressed, const SDL_Event& source);
-
-  void ConvertFromPlatform(GuiAdapterWheelEvent& dest, bool ctrlPressed, bool shiftPressed, bool altPressed, const SDL_Event& source);
-
-  void ConvertFromPlatform(GuiAdapterKeyboardEvent& dest, const SDL_Event& source);
-
-# endif
-
-#endif
-
-  typedef void (*GuiAdapterRunFunc)(void*);
-
-  class GuiAdapter
-  {
-  public:
-    GuiAdapter()
-    {
-      ORTHANC_ASSERT(s_instanceCount == 0);
-      s_instanceCount = 1;
-    }
-
-    ~GuiAdapter()
-    {
-      s_instanceCount -= 1;
-    }
-
-    /**
-      emscripten_set_resize_callback("EMSCRIPTEN_EVENT_TARGET_WINDOW", NULL, false, OnWindowResize);
-
-      emscripten_set_wheel_callback("#mycanvas1", widget1_.get(), false, OnXXXMouseWheel);
-      emscripten_set_wheel_callback("#mycanvas2", widget2_.get(), false, OnXXXMouseWheel);
-      emscripten_set_wheel_callback("#mycanvas3", widget3_.get(), false, OnXXXMouseWheel);
-
-      emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyDown); ---> NO!
-      emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyUp);
-
-      emscripten_request_animation_frame_loop(OnAnimationFrame, NULL);
-    
-      SDL:
-      see https://wiki.libsdl.org/SDL_CaptureMouse
-
-    */
-
-    void SetMouseDownCallback       (std::string canvasId, void* userData, bool capture, OnMouseEventFunc   func);
-    void SetMouseDblClickCallback   (std::string canvasId, void* userData, bool capture, OnMouseEventFunc   func);
-    void SetMouseMoveCallback       (std::string canvasId, void* userData, bool capture, OnMouseEventFunc   func);
-    void SetMouseUpCallback         (std::string canvasId, void* userData, bool capture, OnMouseEventFunc   func);
-    void SetWheelCallback           (std::string canvasId, void* userData, bool capture, OnMouseWheelFunc   func);
-    void SetKeyDownCallback         (std::string canvasId, void* userData, bool capture, OnKeyDownFunc      func);
-    void SetKeyUpCallback           (std::string canvasId, void* userData, bool capture, OnKeyUpFunc        func);
-
-#if ORTHANC_ENABLE_SDL == 1
-
-    void SetGenericSdlEventCallback (std::string canvasId, void* userData, bool capture, OnSdlEventCallback func);
-
-    typedef bool (*OnSdlEventCallback)  (std::string canvasId, const SDL_Event& sdlEvent, void* userData);
-
-    // if you pass "#window", then any Window resize will trigger the callback
-    // (this special string is converted to EMSCRIPTEN_EVENT_TARGET_WINDOW in DOM, when DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1)
-    void SetSdlResizeCallback(std::string canvasId, 
-                              void* userData, 
-                              bool capture, 
-                              OnSdlWindowResizeFunc func);
-#endif
-
-    void RequestAnimationFrame(OnAnimationFrameFunc func, void* userData);
-
-    // TODO: implement and call to remove canvases [in SDL, although code should be generic]
-    void SetOnExitCallback();
-
-    /**
-    Under SDL, this function does NOT return until all windows have been closed.
-    Under wasm, it returns without doing anything, since the event loop is managed
-    by the browser.
-    */
-    void Run(GuiAdapterRunFunc func = NULL, void* cookie = NULL);
-
-  private:
-
-#if ORTHANC_ENABLE_SDL == 1
-    /**
-    Gives observers a chance to react based on generic event handlers. This 
-    is used, for instance, when the viewport lock interface is invalidated.
-    */
-    void OnSdlGenericEvent(const SDL_Event& sdlEvent);
-#endif
-
-    /**
-    In SDL, this executes all the registered headers
-    */
-    void OnAnimationFrame();
-
-    //void RequestAnimationFrame(OnAnimationFrameFunc func, void* userData);
-    std::vector<std::pair<OnAnimationFrameFunc, void*> >  
-      animationFrameHandlers_;
-    
-    void OnResize(unsigned int width, unsigned int height);
-
-#if ORTHANC_ENABLE_SDL == 1
-    template<typename Func>
-    struct EventHandlerData
-    {
-      EventHandlerData(std::string canvasName, Func func, void* userData) 
-        : canvasName(canvasName)
-        , func(func)
-        , userData(userData)
-      {
-      }
-
-      std::string canvasName;
-      Func        func;
-      void*       userData;
-    };
-    std::vector<EventHandlerData<OnSdlWindowResizeFunc> > resizeHandlers_;
-    std::vector<EventHandlerData<OnMouseEventFunc  > >    mouseDownHandlers_;
-    std::vector<EventHandlerData<OnMouseEventFunc  > >    mouseDblCickHandlers_;
-    std::vector<EventHandlerData<OnMouseEventFunc  > >    mouseMoveHandlers_;
-    std::vector<EventHandlerData<OnMouseEventFunc  > >    mouseUpHandlers_;
-    std::vector<EventHandlerData<OnMouseWheelFunc  > >    mouseWheelHandlers_;
-    std::vector<EventHandlerData<OnKeyDownFunc > >        keyDownHandlers_;
-    std::vector<EventHandlerData<OnKeyUpFunc > >          keyUpHandlers_;
-    std::vector<EventHandlerData<OnSdlEventCallback > >   sdlEventHandlers_;
-
-    /**
-    This executes all the registered headers if needed (in wasm, the browser
-    deals with this)
-    */
-    void OnMouseEvent(uint32_t windowID, const GuiAdapterMouseEvent& event);
-
-    void OnKeyboardEvent(uint32_t windowID, const GuiAdapterKeyboardEvent& event);
-
-    /**
-    Same remark as OnMouseEvent
-    */
-    void OnMouseWheelEvent(uint32_t windowID, const GuiAdapterWheelEvent& event);
-
-#endif
-
-    /**
-    This executes all the registered headers if needed (in wasm, the browser
-    deals with this)
-    */
-    void ViewportsUpdateSize();
-
-    static int s_instanceCount;
-  };
-}
--- a/Framework/Deprecated/Layers/CircleMeasureTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CircleMeasureTracker.h"
-
-#include <stdio.h>
-#include <boost/math/constants/constants.hpp>
-
-namespace Deprecated
-{
-  CircleMeasureTracker::CircleMeasureTracker(IStatusBar* statusBar,
-                                             const OrthancStone::CoordinateSystem3D& slice,
-                                             double x, 
-                                             double y,
-                                             uint8_t red,
-                                             uint8_t green,
-                                             uint8_t blue,
-                                             const Orthanc::Font& font) :
-    statusBar_(statusBar),
-    slice_(slice),
-    x1_(x),
-    y1_(y),
-    x2_(x),
-    y2_(y),
-    font_(font)
-  {
-    color_[0] = red;
-    color_[1] = green;
-    color_[2] = blue;
-  }
-    
-
-  void CircleMeasureTracker::Render(OrthancStone::CairoContext& context,
-                                    double zoom)
-  {
-    double x = (x1_ + x2_) / 2.0;
-    double y = (y1_ + y2_) / 2.0;
-
-    OrthancStone::Vector tmp;
-    OrthancStone::LinearAlgebra::AssignVector(tmp, x2_ - x1_, y2_ - y1_);
-    double r = boost::numeric::ublas::norm_2(tmp) / 2.0;
-
-    context.SetSourceColor(color_[0], color_[1], color_[2]);
-
-    cairo_t* cr = context.GetObject();
-    cairo_save(cr);
-    cairo_set_line_width(cr, 2.0 / zoom);
-    cairo_translate(cr, x, y);
-    cairo_arc(cr, 0, 0, r, 0, 2.0 * boost::math::constants::pi<double>());
-    cairo_stroke_preserve(cr);
-    cairo_stroke(cr);
-    cairo_restore(cr);
-
-    context.DrawText(font_, FormatRadius(), x, y, OrthancStone::BitmapAnchor_Center);
-  }
-    
-
-  double CircleMeasureTracker::GetRadius() const  // In millimeters
-  {
-    OrthancStone::Vector a = slice_.MapSliceToWorldCoordinates(x1_, y1_);
-    OrthancStone::Vector b = slice_.MapSliceToWorldCoordinates(x2_, y2_);
-    return boost::numeric::ublas::norm_2(b - a) / 2.0;
-  }
-
-
-  std::string CircleMeasureTracker::FormatRadius() const
-  {
-    char buf[64];
-    sprintf(buf, "%0.01f cm", GetRadius() / 10.0);
-    return buf;
-  }
-
-  void CircleMeasureTracker::MouseMove(int displayX,
-                                       int displayY,
-                                       double x,
-                                       double y,
-                                       const std::vector<Touch>& displayTouches,
-                                       const std::vector<Touch>& sceneTouches)
-  {
-    x2_ = x;
-    y2_ = y;
-
-    if (statusBar_ != NULL)
-    {
-      statusBar_->SetMessage("Circle radius: " + FormatRadius());
-    }
-  }
-}
--- a/Framework/Deprecated/Layers/CircleMeasureTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Widgets/IWorldSceneMouseTracker.h"
-#include "../Viewport/IStatusBar.h"
-#include "../../Toolbox/CoordinateSystem3D.h"
-
-#include <Images/Font.h>
-
-namespace Deprecated
-{
-  class CircleMeasureTracker : public IWorldSceneMouseTracker
-  {
-  private:
-    IStatusBar*           statusBar_;
-    OrthancStone::CoordinateSystem3D    slice_;
-    double                x1_;
-    double                y1_;
-    double                x2_;
-    double                y2_;
-    uint8_t               color_[3];
-    const Orthanc::Font&  font_;
-
-  public:
-    CircleMeasureTracker(IStatusBar* statusBar,
-                         const OrthancStone::CoordinateSystem3D& slice,
-                         double x, 
-                         double y,
-                         uint8_t red,
-                         uint8_t green,
-                         uint8_t blue,
-                         const Orthanc::Font& font);
-    
-    virtual bool HasRender() const
-    {
-      return true;
-    }
-
-    virtual void Render(OrthancStone::CairoContext& context,
-                        double zoom);
-    
-    double GetRadius() const;  // In millimeters
-
-    std::string FormatRadius() const;
-
-    virtual void MouseUp()
-    {
-      // Possibly create a new landmark "volume" with the circle in subclasses
-    }
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double x,
-                           double y,
-                           const std::vector<Touch>& displayTouches,
-                           const std::vector<Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/Layers/ColorFrameRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ColorFrameRenderer.h"
-
-#include <OrthancException.h>
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-
-namespace Deprecated
-{
-  OrthancStone::CairoSurface* ColorFrameRenderer::GenerateDisplay(const RenderStyle& style)
-  {
-    std::unique_ptr<OrthancStone::CairoSurface> display
-      (new OrthancStone::CairoSurface(frame_->GetWidth(), frame_->GetHeight(), false /* no alpha */));
-
-    Orthanc::ImageAccessor target;
-    display->GetWriteableAccessor(target);
-    
-    Orthanc::ImageProcessing::Convert(target, *frame_);
-
-    return display.release();
-  }
-
-
-  ColorFrameRenderer::ColorFrameRenderer(const Orthanc::ImageAccessor& frame,
-                                         const OrthancStone::CoordinateSystem3D& framePlane,
-                                         double pixelSpacingX,
-                                         double pixelSpacingY,
-                                         bool isFullQuality) :
-    FrameRenderer(framePlane, pixelSpacingX, pixelSpacingY, isFullQuality),
-    frame_(Orthanc::Image::Clone(frame))
-  {
-    if (frame_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (frame_->GetFormat() != Orthanc::PixelFormat_RGB24)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-  }
-}
--- a/Framework/Deprecated/Layers/ColorFrameRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "FrameRenderer.h"
-
-namespace Deprecated
-{
-  class ColorFrameRenderer : public FrameRenderer
-  {
-  private:
-    std::unique_ptr<Orthanc::ImageAccessor>   frame_;  // In RGB24
-
-  protected:
-    virtual OrthancStone::CairoSurface* GenerateDisplay(const RenderStyle& style);
-
-  public:
-    ColorFrameRenderer(const Orthanc::ImageAccessor& frame,
-                       const OrthancStone::CoordinateSystem3D& framePlane,
-                       double pixelSpacingX,
-                       double pixelSpacingY,
-                       bool isFullQuality);
-  };
-}
--- a/Framework/Deprecated/Layers/DicomSeriesVolumeSlicer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomSeriesVolumeSlicer.h"
-
-#include "FrameRenderer.h"
-#include "../Toolbox/DicomFrameConverter.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-#include <boost/lexical_cast.hpp>
-
-namespace Deprecated
-{
-
-  void DicomSeriesVolumeSlicer::OnSliceGeometryReady(const OrthancSlicesLoader::SliceGeometryReadyMessage& message)
-  {
-    if (message.GetOrigin().GetSlicesCount() > 0)
-    {
-      BroadcastMessage(IVolumeSlicer::GeometryReadyMessage(*this));
-    }
-    else
-    {
-      BroadcastMessage(IVolumeSlicer::GeometryErrorMessage(*this));
-    }
-  }
-
-  void DicomSeriesVolumeSlicer::OnSliceGeometryError(const OrthancSlicesLoader::SliceGeometryErrorMessage& message)
-  {
-    BroadcastMessage(IVolumeSlicer::GeometryErrorMessage(*this));
-  }
-
-
-  class DicomSeriesVolumeSlicer::RendererFactory : public LayerReadyMessage::IRendererFactory
-  {
-  private:
-    const OrthancSlicesLoader::SliceImageReadyMessage&  message_;
-
-  public:
-    RendererFactory(const OrthancSlicesLoader::SliceImageReadyMessage& message) :
-      message_(message)
-    {
-    }
-
-    virtual ILayerRenderer* CreateRenderer() const
-    {
-      bool isFull = (message_.GetEffectiveQuality() == SliceImageQuality_FullPng ||
-                     message_.GetEffectiveQuality() == SliceImageQuality_FullPam);
-
-      return FrameRenderer::CreateRenderer(message_.GetImage(), message_.GetSlice(), isFull);
-    }
-  };
-
-  void DicomSeriesVolumeSlicer::OnSliceImageReady(const OrthancSlicesLoader::SliceImageReadyMessage& message)
-  {
-    // first notify that the pixel data of the frame is ready (targeted to, i.e: an image cache)
-    BroadcastMessage(FrameReadyMessage(*this, message.GetImage(), 
-                                  message.GetEffectiveQuality(), message.GetSlice()));
-
-    // then notify that the layer is ready for rendering
-    RendererFactory factory(message);
-    BroadcastMessage(IVolumeSlicer::LayerReadyMessage(*this, factory, message.GetSlice().GetGeometry()));
-  }
-
-  void DicomSeriesVolumeSlicer::OnSliceImageError(const OrthancSlicesLoader::SliceImageErrorMessage& message)
-  {
-    BroadcastMessage(IVolumeSlicer::LayerErrorMessage(*this, message.GetSlice().GetGeometry()));
-  }
-
-
-  DicomSeriesVolumeSlicer::DicomSeriesVolumeSlicer() :
-    quality_(SliceImageQuality_FullPng)
-  {
-  }
-
-  void DicomSeriesVolumeSlicer::Connect(boost::shared_ptr<OrthancApiClient> orthanc)
-  {
-    loader_.reset(new OrthancSlicesLoader(orthanc));
-    Register<OrthancSlicesLoader::SliceGeometryReadyMessage>(*loader_, &DicomSeriesVolumeSlicer::OnSliceGeometryReady);
-    Register<OrthancSlicesLoader::SliceGeometryErrorMessage>(*loader_, &DicomSeriesVolumeSlicer::OnSliceGeometryError);
-    Register<OrthancSlicesLoader::SliceImageReadyMessage>(*loader_, &DicomSeriesVolumeSlicer::OnSliceImageReady);
-    Register<OrthancSlicesLoader::SliceImageErrorMessage>(*loader_, &DicomSeriesVolumeSlicer::OnSliceImageError);
-  }
-  
-  void DicomSeriesVolumeSlicer::LoadSeries(const std::string& seriesId)
-  {
-    if (loader_.get() == NULL)
-    {
-      // Should have called "Connect()"
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    
-    loader_->ScheduleLoadSeries(seriesId);
-  }
-
-
-  void DicomSeriesVolumeSlicer::LoadInstance(const std::string& instanceId)
-  {
-    if (loader_.get() == NULL)
-    {
-      // Should have called "Connect()"
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    
-    loader_->ScheduleLoadInstance(instanceId);
-  }
-
-
-  void DicomSeriesVolumeSlicer::LoadFrame(const std::string& instanceId,
-                                          unsigned int frame)
-  {
-    if (loader_.get() == NULL)
-    {
-      // Should have called "Connect()"
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    
-    loader_->ScheduleLoadFrame(instanceId, frame);
-  }
-
-
-  bool DicomSeriesVolumeSlicer::GetExtent(std::vector<OrthancStone::Vector>& points,
-                                          const OrthancStone::CoordinateSystem3D& viewportSlice)
-  {
-    if (loader_.get() == NULL)
-    {
-      // Should have called "Connect()"
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    
-    size_t index;
-
-    if (loader_->IsGeometryReady() &&
-        loader_->LookupSlice(index, viewportSlice))
-    {
-      loader_->GetSlice(index).GetExtent(points);
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-  
-  void DicomSeriesVolumeSlicer::ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice)
-  {
-    if (loader_.get() == NULL)
-    {
-      // Should have called "Connect()"
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    
-    size_t index;
-
-    if (loader_->IsGeometryReady() &&
-        loader_->LookupSlice(index, viewportSlice))
-    {
-      loader_->ScheduleLoadSliceImage(index, quality_);
-    }
-  }
-}
--- a/Framework/Deprecated/Layers/DicomSeriesVolumeSlicer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IVolumeSlicer.h"
-#include "../../Messages/ObserverBase.h"
-#include "../Toolbox/IWebService.h"
-#include "../Toolbox/OrthancSlicesLoader.h"
-#include "../Toolbox/OrthancApiClient.h"
-
-namespace Deprecated
-{  
-  // this class is in charge of loading a Frame.
-  // once it's been loaded (first the geometry and then the image),
-  // messages are sent to observers so they can use it
-  class DicomSeriesVolumeSlicer :
-    public IVolumeSlicer,
-    public OrthancStone::ObserverBase<DicomSeriesVolumeSlicer>
-    //private OrthancSlicesLoader::ISliceLoaderObserver
-  {
-  public:
-    // TODO: Add "frame" and "instanceId"
-    class FrameReadyMessage : public OrthancStone::OriginMessage<DicomSeriesVolumeSlicer>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const Orthanc::ImageAccessor&  frame_;
-      SliceImageQuality              imageQuality_;
-      const Slice&                   slice_;
-
-    public:
-      FrameReadyMessage(DicomSeriesVolumeSlicer& origin,
-                        const Orthanc::ImageAccessor& frame,
-                        SliceImageQuality imageQuality,
-                        const Slice& slice) :
-        OriginMessage(origin),
-        frame_(frame),
-        imageQuality_(imageQuality),
-        slice_(slice)
-      {
-      }
-
-      const Orthanc::ImageAccessor& GetFrame() const
-      {
-        return frame_;
-      }
-
-      SliceImageQuality GetImageQuality() const
-      {
-        return imageQuality_;
-      }
-
-      const Slice& GetSlice() const
-      {
-        return slice_;
-      }
-    };
-
-    
-  private:
-    class RendererFactory;
-    
-    boost::shared_ptr<OrthancSlicesLoader> loader_;
-    SliceImageQuality    quality_;
-
-  public:
-    DicomSeriesVolumeSlicer();
-
-    void Connect(boost::shared_ptr<OrthancApiClient> orthanc);
-    
-    void LoadSeries(const std::string& seriesId);
-
-    void LoadInstance(const std::string& instanceId);
-
-    void LoadFrame(const std::string& instanceId,
-                   unsigned int frame);
-
-    void SetImageQuality(SliceImageQuality quality)
-    {
-      quality_ = quality;
-    }
-
-    SliceImageQuality GetImageQuality() const
-    {
-      return quality_;
-    }
-
-    size_t GetSlicesCount() const
-    {
-      return loader_->GetSlicesCount();
-    }
-
-    const Slice& GetSlice(size_t slice) const 
-    {
-      return loader_->GetSlice(slice);
-    }
-
-    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
-                           const OrthancStone::CoordinateSystem3D& viewportSlice);
-
-    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice);
-
-protected:
-    void OnSliceGeometryReady(const OrthancSlicesLoader::SliceGeometryReadyMessage& message);
-    void OnSliceGeometryError(const OrthancSlicesLoader::SliceGeometryErrorMessage& message);
-    void OnSliceImageReady(const OrthancSlicesLoader::SliceImageReadyMessage& message);
-    void OnSliceImageError(const OrthancSlicesLoader::SliceImageErrorMessage& message);
-  };
-}
--- a/Framework/Deprecated/Layers/DicomStructureSetSlicer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "DicomStructureSetSlicer.h"
-
-#include "../../Toolbox/DicomStructureSet.h"
-
-namespace Deprecated
-{
-  class DicomStructureSetSlicer::Renderer : public ILayerRenderer
-  {
-  private:
-    class Structure
-    {
-    private:
-      bool         visible_;
-      uint8_t      red_;
-      uint8_t      green_;
-      uint8_t      blue_;
-      std::string  name_;
-
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-      std::vector< std::vector<OrthancStone::Point2D> > polygons_;
-#else
-      std::vector< std::pair<OrthancStone::Point2D, OrthancStone::Point2D> > segments_;
-#endif
-      
-    public:
-      Structure(OrthancStone::DicomStructureSet& structureSet,
-                const OrthancStone::CoordinateSystem3D& plane,
-                size_t index) :
-        name_(structureSet.GetStructureName(index))
-      {
-        structureSet.GetStructureColor(red_, green_, blue_, index);
-
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-        visible_ = structureSet.ProjectStructure(polygons_, index, plane);
-#else
-        visible_ = structureSet.ProjectStructure(segments_, index, plane);
-#endif
-      }
-
-      void Render(OrthancStone::CairoContext& context)
-      {
-        if (visible_)
-        {
-          cairo_t* cr = context.GetObject();
-        
-          context.SetSourceColor(red_, green_, blue_);
-
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-          for (size_t i = 0; i < polygons_.size(); i++)
-          {
-            cairo_move_to(cr, polygons_[i][0].x, polygons_[i][0].y);
-            for (size_t j = 0; j < polygons_[i].size(); j++)
-            {
-              cairo_line_to(cr, polygons_[i][j].x, polygons_[i][j].y);
-            }
-            cairo_line_to(cr, polygons_[i][0].x, polygons_[i][0].y);
-            cairo_stroke(cr);
-          }
-#else
-          for (size_t i = 0; i < segments_.size(); i++)
-          {
-            cairo_move_to(cr, segments_[i].first.x, segments_[i].first.y);
-            cairo_line_to(cr, segments_[i].second.x, segments_[i].second.y);
-            cairo_stroke(cr);
-          }
-#endif
-        }
-      }
-    };
-
-    typedef std::list<Structure*>  Structures;
-    
-    OrthancStone::CoordinateSystem3D  plane_;
-    Structures          structures_;
-    
-  public:
-    Renderer(OrthancStone::DicomStructureSet& structureSet,
-             const OrthancStone::CoordinateSystem3D& plane) :
-      plane_(plane)
-    {
-      for (size_t k = 0; k < structureSet.GetStructuresCount(); k++)
-      {
-        structures_.push_back(new Structure(structureSet, plane, k));
-      }
-    }
-
-    virtual ~Renderer()
-    {
-      for (Structures::iterator it = structures_.begin();
-           it != structures_.end(); ++it)
-      {
-        delete *it;
-      }
-    }
-
-    virtual bool RenderLayer(OrthancStone::CairoContext& context,
-                             const ViewportGeometry& view)
-    {
-      cairo_set_line_width(context.GetObject(), 2.0f / view.GetZoom());
-
-      for (Structures::const_iterator it = structures_.begin();
-           it != structures_.end(); ++it)
-      {
-        assert(*it != NULL);
-        (*it)->Render(context);
-      }
-
-      return true;
-    }
-
-    virtual const OrthancStone::CoordinateSystem3D& GetLayerPlane()
-    {
-      return plane_;
-    }
-
-    virtual void SetLayerStyle(const RenderStyle& style)
-    {
-    }
-    
-    virtual bool IsFullQuality()
-    {
-      return true;
-    }
-  };
-
-
-  class DicomStructureSetSlicer::RendererFactory : public LayerReadyMessage::IRendererFactory
-  {
-  private:
-    OrthancStone::DicomStructureSet&         structureSet_;
-    const OrthancStone::CoordinateSystem3D&  plane_;
-
-  public:
-    RendererFactory(OrthancStone::DicomStructureSet& structureSet,
-                    const OrthancStone::CoordinateSystem3D&  plane) :
-      structureSet_(structureSet),
-      plane_(plane)
-    {
-    }
-
-    virtual ILayerRenderer* CreateRenderer() const
-    {
-      return new Renderer(structureSet_, plane_);
-    }
-  };
-  
-
-  DicomStructureSetSlicer::DicomStructureSetSlicer(StructureSetLoader& loader) :
-    loader_(loader)
-  {
-    Register<StructureSetLoader::ContentChangedMessage>(loader_, &DicomStructureSetSlicer::OnStructureSetLoaded);
-  }
-
-
-  void DicomStructureSetSlicer::ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportPlane)
-  {
-    if (loader_.HasStructureSet())
-    {
-      RendererFactory factory(loader_.GetStructureSet(), viewportPlane);
-      BroadcastMessage(IVolumeSlicer::LayerReadyMessage(*this, factory, viewportPlane));
-    }
-  }
-}
--- a/Framework/Deprecated/Layers/DicomStructureSetSlicer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IVolumeSlicer.h"
-#include "../Volumes/StructureSetLoader.h"
-
-namespace Deprecated
-{
-  class DicomStructureSetSlicer :
-    public IVolumeSlicer,
-    public OrthancStone::ObserverBase<DicomStructureSetSlicer>
-  {
-  private:
-    class Renderer;
-    class RendererFactory;
-
-    StructureSetLoader& loader_;
-
-    void OnStructureSetLoaded(const IVolumeLoader::ContentChangedMessage& message)
-    {
-      BroadcastMessage(IVolumeSlicer::ContentChangedMessage(*this));
-    }
-
-  public:
-    DicomStructureSetSlicer(StructureSetLoader& loader);
-
-    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
-                           const OrthancStone::CoordinateSystem3D& viewportPlane)
-    {
-      return false;
-    }
-
-    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportPlane);
-  };
-}
--- a/Framework/Deprecated/Layers/FrameRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "FrameRenderer.h"
-
-#include "GrayscaleFrameRenderer.h"
-#include "ColorFrameRenderer.h"
-
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  FrameRenderer::FrameRenderer(const OrthancStone::CoordinateSystem3D& framePlane,
-                               double pixelSpacingX,
-                               double pixelSpacingY,
-                               bool isFullQuality) :
-    framePlane_(framePlane),
-    pixelSpacingX_(pixelSpacingX),
-    pixelSpacingY_(pixelSpacingY),
-    isFullQuality_(isFullQuality)
-  {
-  }
-
-
-  bool FrameRenderer::RenderLayer(OrthancStone::CairoContext& context,
-                                  const ViewportGeometry& view)
-  {    
-    if (!style_.visible_)
-    {
-      return true;
-    }
-
-    if (display_.get() == NULL)
-    {
-      display_.reset(GenerateDisplay(style_));
-    }
-
-    assert(display_.get() != NULL);
-
-    cairo_t *cr = context.GetObject();
-
-    cairo_save(cr);
-
-    cairo_matrix_t transform;
-    cairo_matrix_init_identity(&transform);
-    cairo_matrix_scale(&transform, pixelSpacingX_, pixelSpacingY_);
-    cairo_matrix_translate(&transform, -0.5, -0.5);
-    cairo_transform(cr, &transform);
-
-    //cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
-    cairo_set_source_surface(cr, display_->GetObject(), 0, 0);
-
-    switch (style_.interpolation_)
-    {
-      case OrthancStone::ImageInterpolation_Nearest:
-        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);
-        break;
-
-      case OrthancStone::ImageInterpolation_Bilinear:
-        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_BILINEAR);
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    cairo_paint_with_alpha(cr, style_.alpha_);
-
-    if (style_.drawGrid_)
-    {
-      context.SetSourceColor(style_.drawColor_);
-      cairo_set_line_width(cr, 0.5 / view.GetZoom());
-
-      for (unsigned int x = 0; x <= display_->GetWidth(); x++)
-      {
-        cairo_move_to(cr, x, 0);
-        cairo_line_to(cr, x, display_->GetHeight());
-      }
-
-      for (unsigned int y = 0; y <= display_->GetHeight(); y++)
-      {
-        cairo_move_to(cr, 0, y);
-        cairo_line_to(cr, display_->GetWidth(), y);
-      }
-
-      cairo_stroke(cr);
-    }
-
-    cairo_restore(cr);
-
-    return true;
-  }
-
-
-  void FrameRenderer::SetLayerStyle(const RenderStyle& style)
-  {
-    style_ = style;
-    display_.reset(NULL);
-  }
-
-
-  ILayerRenderer* FrameRenderer::CreateRenderer(const Orthanc::ImageAccessor& frame,
-                                                const Deprecated::Slice& framePlane,
-                                                bool isFullQuality)
-  {
-    if (frame.GetFormat() == Orthanc::PixelFormat_RGB24)
-    {
-      return new ColorFrameRenderer(frame,
-                                    framePlane.GetGeometry(), 
-                                    framePlane.GetPixelSpacingX(),
-                                    framePlane.GetPixelSpacingY(), isFullQuality);
-    }
-    else
-    {
-      return new GrayscaleFrameRenderer(frame,
-                                        framePlane.GetConverter(),
-                                        framePlane.GetGeometry(), 
-                                        framePlane.GetPixelSpacingX(),
-                                        framePlane.GetPixelSpacingY(), isFullQuality);
-    }
-  }
-}
--- a/Framework/Deprecated/Layers/FrameRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ILayerRenderer.h"
-
-#include "../Toolbox/Slice.h"
-
-namespace Deprecated
-{
-  class FrameRenderer : public ILayerRenderer
-  {
-  private:
-    OrthancStone::CoordinateSystem3D            framePlane_;
-    double                        pixelSpacingX_;
-    double                        pixelSpacingY_;
-    RenderStyle                   style_;
-    bool                          isFullQuality_;
-    std::unique_ptr<OrthancStone::CairoSurface>   display_;
-
-  protected:
-    virtual OrthancStone::CairoSurface* GenerateDisplay(const RenderStyle& style) = 0;
-
-  public:
-    FrameRenderer(const OrthancStone::CoordinateSystem3D& framePlane,
-                  double pixelSpacingX,
-                  double pixelSpacingY,
-                  bool isFullQuality);
-
-    virtual bool RenderLayer(OrthancStone::CairoContext& context,
-                             const ViewportGeometry& view);
-
-    virtual const OrthancStone::CoordinateSystem3D& GetLayerPlane()
-    {
-      return framePlane_;
-    }
-
-    virtual void SetLayerStyle(const RenderStyle& style);
-
-    virtual bool IsFullQuality() 
-    {
-      return isFullQuality_;
-    }
-
-    // TODO: Avoid cloning the "frame"
-    static ILayerRenderer* CreateRenderer(const Orthanc::ImageAccessor& frame,
-                                          const Deprecated::Slice& framePlane,
-                                          bool isFullQuality);
-  };
-}
--- a/Framework/Deprecated/Layers/GrayscaleFrameRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GrayscaleFrameRenderer.h"
-
-#include <Images/Image.h>
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  OrthancStone::CairoSurface* GrayscaleFrameRenderer::GenerateDisplay(const RenderStyle& style)
-  {
-    assert(frame_->GetFormat() == Orthanc::PixelFormat_Float32);
-
-    std::unique_ptr<OrthancStone::CairoSurface> result;
-
-    float windowCenter, windowWidth;
-    style.ComputeWindowing(windowCenter, windowWidth,
-                           defaultWindowCenter_, defaultWindowWidth_);
-
-    float x0 = windowCenter - windowWidth / 2.0f;
-    float x1 = windowCenter + windowWidth / 2.0f;
-
-    //LOG(INFO) << "Window: " << x0 << " => " << x1;
-
-    result.reset(new OrthancStone::CairoSurface(frame_->GetWidth(), frame_->GetHeight(), false /* no alpha */));
-
-    const uint8_t* lut = NULL;
-    if (style.applyLut_)
-    {
-      if (Orthanc::EmbeddedResources::GetFileResourceSize(style.lut_) != 3 * 256)
-      {
-        // Invalid colormap
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      lut = reinterpret_cast<const uint8_t*>(Orthanc::EmbeddedResources::GetFileResourceBuffer(style.lut_));
-    }
-
-    Orthanc::ImageAccessor target;
-    result->GetWriteableAccessor(target);
-    
-    const unsigned int width = target.GetWidth();
-    const unsigned int height = target.GetHeight();
-    
-    for (unsigned int y = 0; y < height; y++)
-    {
-      const float* p = reinterpret_cast<const float*>(frame_->GetConstRow(y));
-      uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
-
-      for (unsigned int x = 0; x < width; x++, p++, q += 4)
-      {
-        uint8_t v = 0;
-        if (windowWidth >= 0.001f)  // Avoid division by zero
-        {
-          if (*p >= x1)
-          {
-            v = 255;
-          }
-          else if (*p <= x0)
-          {
-            v = 0;
-          }
-          else
-          {
-            // https://en.wikipedia.org/wiki/Linear_interpolation
-            v = static_cast<uint8_t>(255.0f * (*p - x0) / (x1 - x0));
-          }
-
-          if (style.reverse_ ^ (photometric_ == Orthanc::PhotometricInterpretation_Monochrome1))
-          {
-            v = 255 - v;
-          }
-        }
-
-        if (style.applyLut_)
-        {
-          assert(lut != NULL);
-          q[3] = 255;
-          q[2] = lut[3 * v];
-          q[1] = lut[3 * v + 1];
-          q[0] = lut[3 * v + 2];
-        }
-        else
-        {
-          q[3] = 255;
-          q[2] = v;
-          q[1] = v;
-          q[0] = v;
-        }
-      }
-    }
-
-    return result.release();
-  }
-
-
-  GrayscaleFrameRenderer::GrayscaleFrameRenderer(const Orthanc::ImageAccessor& frame,
-                                                 const Deprecated::DicomFrameConverter& converter,
-                                                 const OrthancStone::CoordinateSystem3D& framePlane,
-                                                 double pixelSpacingX,
-                                                 double pixelSpacingY,
-                                                 bool isFullQuality) :
-    FrameRenderer(framePlane, pixelSpacingX, pixelSpacingY, isFullQuality),
-    frame_(Orthanc::Image::Clone(frame)),
-    defaultWindowCenter_(static_cast<float>(converter.GetDefaultWindowCenter())),
-    defaultWindowWidth_(static_cast<float>(converter.GetDefaultWindowWidth())),
-    photometric_(converter.GetPhotometricInterpretation())
-  {
-    if (frame_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    converter.ConvertFrameInplace(frame_);
-    assert(frame_.get() != NULL);
-
-    if (frame_->GetFormat() != Orthanc::PixelFormat_Float32)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-  }
-}
--- a/Framework/Deprecated/Layers/GrayscaleFrameRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "FrameRenderer.h"
-#include "../Toolbox/DicomFrameConverter.h"
-
-namespace Deprecated
-{
-  class GrayscaleFrameRenderer : public FrameRenderer
-  {
-  private:
-    std::unique_ptr<Orthanc::ImageAccessor>   frame_;  // In Float32
-    float                                   defaultWindowCenter_;
-    float                                   defaultWindowWidth_;
-    Orthanc::PhotometricInterpretation      photometric_;
-
-  protected:
-    virtual OrthancStone::CairoSurface* GenerateDisplay(const RenderStyle& style);
-
-  public:
-    GrayscaleFrameRenderer(const Orthanc::ImageAccessor& frame,
-                           const Deprecated::DicomFrameConverter& converter,
-                           const OrthancStone::CoordinateSystem3D& framePlane,
-                           double pixelSpacingX,
-                           double pixelSpacingY,
-                           bool isFullQuality);
-  };
-}
--- a/Framework/Deprecated/Layers/ILayerRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Wrappers/CairoContext.h"
-#include "../../Toolbox/CoordinateSystem3D.h"
-#include "../Toolbox/ViewportGeometry.h"
-#include "RenderStyle.h"
-
-namespace Deprecated
-{
-  class ILayerRenderer : public boost::noncopyable
-  {
-  public:
-    virtual ~ILayerRenderer()
-    {
-    }
-    
-    virtual bool RenderLayer(OrthancStone::CairoContext& context,
-                             const ViewportGeometry& view) = 0;
-
-    virtual void SetLayerStyle(const RenderStyle& style) = 0;
-
-    virtual const OrthancStone::CoordinateSystem3D& GetLayerPlane() = 0;
-    
-    virtual bool IsFullQuality() = 0;
-  };
-}
--- a/Framework/Deprecated/Layers/IVolumeSlicer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ILayerRenderer.h"
-#include "../Toolbox/Slice.h"
-#include "../../Messages/IObservable.h"
-#include "../../Messages/IMessage.h"
-#include "Images/Image.h"
-#include <boost/shared_ptr.hpp>
-
-namespace Deprecated
-{
-  class IVolumeSlicer : public OrthancStone::IObservable
-  {
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryReadyMessage, IVolumeSlicer);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryErrorMessage, IVolumeSlicer);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ContentChangedMessage, IVolumeSlicer);
-
-    class SliceContentChangedMessage : public OrthancStone::OriginMessage<IVolumeSlicer>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const Deprecated::Slice& slice_;
-
-    public:
-      SliceContentChangedMessage(IVolumeSlicer& origin,
-                                 const Deprecated::Slice& slice) :
-        OriginMessage(origin),
-        slice_(slice)
-      {
-      }
-
-      const Deprecated::Slice& GetSlice() const
-      {
-        return slice_;
-      }
-    };
-    
-
-    class LayerReadyMessage : public OrthancStone::OriginMessage<IVolumeSlicer>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    public:
-      class IRendererFactory : public boost::noncopyable
-      {
-      public:
-        virtual ~IRendererFactory()
-        {
-        }
-
-        virtual ILayerRenderer* CreateRenderer() const = 0;
-      };
-    
-    private:
-      const IRendererFactory&    factory_;
-      const OrthancStone::CoordinateSystem3D&  slice_;
-
-    public:
-      LayerReadyMessage(IVolumeSlicer& origin,
-                        const IRendererFactory& rendererFactory,
-                        const OrthancStone::CoordinateSystem3D& slice) :
-        OriginMessage(origin),
-        factory_(rendererFactory),
-        slice_(slice)
-      {
-      }
-
-      ILayerRenderer* CreateRenderer() const
-      {
-        return factory_.CreateRenderer();
-      }
-
-      const OrthancStone::CoordinateSystem3D& GetSlice() const
-      {
-        return slice_;
-      }
-    };
-
-
-    class LayerErrorMessage : public OrthancStone::OriginMessage<IVolumeSlicer>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const OrthancStone::CoordinateSystem3D&  slice_;
-
-    public:
-      LayerErrorMessage(IVolumeSlicer& origin,
-                        const OrthancStone::CoordinateSystem3D& slice) :
-        OriginMessage(origin),
-        slice_(slice)
-      {
-      }
-
-      const OrthancStone::CoordinateSystem3D& GetSlice() const
-      {
-        return slice_;
-      }
-    };
-
-
-    virtual ~IVolumeSlicer()
-    {
-    }
-
-    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
-                           const OrthancStone::CoordinateSystem3D& viewportSlice) = 0;
-
-    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice) = 0;
-  };
-}
--- a/Framework/Deprecated/Layers/LineLayerRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "LineLayerRenderer.h"
-
-namespace Deprecated
-{
-  LineLayerRenderer::LineLayerRenderer(double x1,
-                                       double y1,
-                                       double x2,
-                                       double y2,
-                                       const OrthancStone::CoordinateSystem3D& plane) : 
-    x1_(x1),
-    y1_(y1),
-    x2_(x2),
-    y2_(y2),
-    plane_(plane)
-  {
-    RenderStyle style;
-    SetLayerStyle(style);
-  }
-
-
-  bool LineLayerRenderer::RenderLayer(OrthancStone::CairoContext& context,
-                                      const ViewportGeometry& view)
-  {
-    if (visible_)
-    {
-      context.SetSourceColor(color_);
-
-      cairo_t *cr = context.GetObject();
-      cairo_set_line_width(cr, 1.0 / view.GetZoom());
-      cairo_move_to(cr, x1_, y1_);
-      cairo_line_to(cr, x2_, y2_);
-      cairo_stroke(cr);
-    }
-
-    return true;
-  }
-
-
-  void LineLayerRenderer::SetLayerStyle(const RenderStyle& style)
-  {
-    visible_ = style.visible_;
-    color_[0] = style.drawColor_[0];
-    color_[1] = style.drawColor_[1];
-    color_[2] = style.drawColor_[2];
-  }
-}
--- a/Framework/Deprecated/Layers/LineLayerRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ILayerRenderer.h"
-
-namespace Deprecated
-{
-  class LineLayerRenderer : public ILayerRenderer
-  {
-  private:
-    double              x1_;
-    double              y1_;
-    double              x2_;
-    double              y2_;
-    OrthancStone::CoordinateSystem3D  plane_;
-    bool                visible_;
-    uint8_t             color_[3];
-
-  public:
-    LineLayerRenderer(double x1,
-                      double y1,
-                      double x2,
-                      double y2,
-                      const OrthancStone::CoordinateSystem3D& plane);
-
-    virtual bool RenderLayer(OrthancStone::CairoContext& context,
-                             const ViewportGeometry& view);
-
-    virtual void SetLayerStyle(const RenderStyle& style);
-
-    virtual const OrthancStone::CoordinateSystem3D& GetLayerPlane()
-    {
-      return plane_;
-    }
-    
-    virtual bool IsFullQuality()
-    {
-      return true;
-    }
-  };
-}
--- a/Framework/Deprecated/Layers/LineMeasureTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "LineMeasureTracker.h"
-
-#include <stdio.h>
-
-namespace Deprecated
-{
-  LineMeasureTracker::LineMeasureTracker(IStatusBar* statusBar,
-                                         const OrthancStone::CoordinateSystem3D& slice,
-                                         double x, 
-                                         double y,
-                                         uint8_t red,
-                                         uint8_t green,
-                                         uint8_t blue,
-                                         const Orthanc::Font& font) :
-    statusBar_(statusBar),
-    slice_(slice),
-    x1_(x),
-    y1_(y),
-    x2_(x),
-    y2_(y),
-    font_(font)
-  {
-    color_[0] = red;
-    color_[1] = green;
-    color_[2] = blue;
-  }
-    
-
-  void LineMeasureTracker::Render(OrthancStone::CairoContext& context,
-                                  double zoom)
-  {
-    context.SetSourceColor(color_[0], color_[1], color_[2]);
-
-    cairo_t* cr = context.GetObject();
-    cairo_set_line_width(cr, 2.0 / zoom);
-    cairo_move_to(cr, x1_, y1_);
-    cairo_line_to(cr, x2_, y2_);
-    cairo_stroke(cr);
-
-    if (y2_ - y1_ < 0)
-    {
-      context.DrawText(font_, FormatLength(), x2_, y2_ - 5, OrthancStone::BitmapAnchor_BottomCenter);
-    }
-    else
-    {
-      context.DrawText(font_, FormatLength(), x2_, y2_ + 5, OrthancStone::BitmapAnchor_TopCenter);
-    }
-  }
-    
-
-  double LineMeasureTracker::GetLength() const  // In millimeters
-  {
-    OrthancStone::Vector a = slice_.MapSliceToWorldCoordinates(x1_, y1_);
-    OrthancStone::Vector b = slice_.MapSliceToWorldCoordinates(x2_, y2_);
-    return boost::numeric::ublas::norm_2(b - a);
-  }
-
-
-  std::string LineMeasureTracker::FormatLength() const
-  {
-    char buf[64];
-    sprintf(buf, "%0.01f cm", GetLength() / 10.0);
-    return buf;
-  }
-
-  void LineMeasureTracker::MouseMove(int displayX,
-                                     int displayY,
-                                     double x,
-                                     double y,
-                                     const std::vector<Touch>& displayTouches,
-                                     const std::vector<Touch>& sceneTouches)
-  {
-    x2_ = x;
-    y2_ = y;
-
-    if (statusBar_ != NULL)
-    {
-      statusBar_->SetMessage("Line length: " + FormatLength());
-    }
-  }
-}
--- a/Framework/Deprecated/Layers/LineMeasureTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Widgets/IWorldSceneMouseTracker.h"
-
-#include "../Viewport/IStatusBar.h"
-#include "../../Toolbox/CoordinateSystem3D.h"
-
-namespace Deprecated
-{
-  class LineMeasureTracker : public IWorldSceneMouseTracker
-  {
-  private:
-    IStatusBar*           statusBar_;
-    OrthancStone::CoordinateSystem3D    slice_;
-    double                x1_;
-    double                y1_;
-    double                x2_;
-    double                y2_;
-    uint8_t               color_[3];
-    unsigned int          fontSize_;
-    const Orthanc::Font&  font_;
-
-  public:
-    LineMeasureTracker(IStatusBar* statusBar,
-                       const OrthancStone::CoordinateSystem3D& slice,
-                       double x, 
-                       double y,
-                       uint8_t red,
-                       uint8_t green,
-                       uint8_t blue,
-                       const Orthanc::Font& font);
-
-    virtual bool HasRender() const
-    {
-      return true;
-    }
-
-    virtual void Render(OrthancStone::CairoContext& context,
-                        double zoom);
-    
-    double GetLength() const;  // In millimeters
-
-    std::string FormatLength() const;
-
-    virtual void MouseUp()
-    {
-      // Possibly create a new landmark "volume" with the line in subclasses
-    }
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double x,
-                           double y,
-                           const std::vector<Touch>& displayTouches,
-                           const std::vector<Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/Layers/RenderStyle.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RenderStyle.h"
-
-#include "../../Volumes/ImageBuffer3D.h"
-#include "../Toolbox/DicomFrameConverter.h"
-
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  RenderStyle::RenderStyle()
-  {
-    visible_ = true;
-    reverse_ = false;
-    windowing_ = OrthancStone::ImageWindowing_Custom;
-    alpha_ = 1;
-    applyLut_ = false;
-    lut_ = Orthanc::EmbeddedResources::COLORMAP_HOT;
-    drawGrid_ = false;
-    drawColor_[0] = 255;
-    drawColor_[1] = 255;
-    drawColor_[2] = 255;
-    customWindowCenter_ = 128;
-    customWindowWidth_ = 256;
-    interpolation_ = OrthancStone::ImageInterpolation_Nearest;
-    fontSize_ = 14;
-  }
-
-
-  void RenderStyle::ComputeWindowing(float& targetCenter,
-                                     float& targetWidth,
-                                     float defaultCenter,
-                                     float defaultWidth) const
-  {
-    if (windowing_ == OrthancStone::ImageWindowing_Custom)
-    {
-      targetCenter = customWindowCenter_;
-      targetWidth = customWindowWidth_;
-    }
-    else
-    {
-      return ::OrthancStone::ComputeWindowing
-        (targetCenter, targetWidth, windowing_, defaultCenter, defaultWidth);
-    }
-  }
-
-  
-  void RenderStyle::SetColor(uint8_t red,
-                             uint8_t green,
-                             uint8_t blue)
-  {
-    drawColor_[0] = red;
-    drawColor_[1] = green;
-    drawColor_[2] = blue;
-  }
-
-
-  bool RenderStyle::FitRange(const OrthancStone::ImageBuffer3D& image,
-                             const DicomFrameConverter& converter)
-  {
-    float minValue, maxValue;
-
-    windowing_ = OrthancStone::ImageWindowing_Custom;
-
-    if (image.GetRange(minValue, maxValue))
-    {  
-      // casting the narrower type to wider before calling the + operator
-      // will prevent overflowing (this is why the cast to double is only 
-      // done on the first operand)
-      customWindowCenter_ = static_cast<float>(
-        converter.Apply((static_cast<double>(minValue) + maxValue) / 2.0));
-      
-      customWindowWidth_ = static_cast<float>(
-        converter.Apply(static_cast<double>(maxValue) - minValue));
-      
-      if (customWindowWidth_ > 1)
-      {
-        return true;
-      }
-    }
-
-    customWindowCenter_ = 128.0;
-    customWindowWidth_ = 256.0;
-    return false;
-  }
-}
--- a/Framework/Deprecated/Layers/RenderStyle.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../StoneEnumerations.h"
-#include "../../Volumes/ImageBuffer3D.h"
-#include "../Toolbox/DicomFrameConverter.h"
-
-#include <EmbeddedResources.h>
-
-#include <stdint.h>
-
-namespace Deprecated
-{
-  struct RenderStyle
-  {
-    bool visible_;
-    bool reverse_;
-    OrthancStone::ImageWindowing windowing_;
-    float alpha_;   // In [0,1]
-    bool applyLut_;
-    Orthanc::EmbeddedResources::FileResourceId  lut_;
-    bool drawGrid_;
-    uint8_t drawColor_[3];
-    float customWindowCenter_;
-    float customWindowWidth_;
-    OrthancStone::ImageInterpolation interpolation_;
-    unsigned int fontSize_;
-    
-    RenderStyle();
-
-    void ComputeWindowing(float& targetCenter,
-                          float& targetWidth,
-                          float defaultCenter,
-                          float defaultWidth) const;
-
-    void SetColor(uint8_t red,
-                  uint8_t green,
-                  uint8_t blue);
-
-    bool FitRange(const OrthancStone::ImageBuffer3D& image,
-                  const DicomFrameConverter& converter);
-  };
-}
--- a/Framework/Deprecated/Layers/SeriesFrameRendererFactory.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SeriesFrameRendererFactory.h"
-
-#include "FrameRenderer.h"
-
-#include <OrthancException.h>
-#include <Logging.h>
-#include <Toolbox.h>
-#include <OrthancPluginException.h>
-#include <DicomDatasetReader.h>
-
-
-namespace Deprecated
-{
-  void SeriesFrameRendererFactory::ReadCurrentFrameDataset(size_t frame)
-  {
-    if (currentDataset_.get() != NULL &&
-        (fast_ || currentFrame_ == frame))
-    {
-      // The frame has not changed since the previous call, no need to
-      // update the DICOM dataset
-      return; 
-    }
-      
-    currentDataset_.reset(loader_->DownloadDicom(frame));
-    currentFrame_ = frame;
-
-    if (currentDataset_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-  void SeriesFrameRendererFactory::GetCurrentPixelSpacing(double& spacingX,
-                                                          double& spacingY) const
-  {
-    if (currentDataset_.get() == NULL)
-    {
-      // There was no previous call "ReadCurrentFrameDataset()"
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-    
-    GeometryToolbox::GetPixelSpacing(spacingX, spacingY, *currentDataset_);
-  }
-
-
-  double SeriesFrameRendererFactory::GetCurrentSliceThickness() const
-  {
-    if (currentDataset_.get() == NULL)
-    {
-      // There was no previous call "ReadCurrentFrameDataset()"
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-    
-    try
-    {
-      OrthancPlugins::DicomDatasetReader reader(*currentDataset_);
-
-      double thickness;
-      if (reader.GetDoubleValue(thickness, OrthancPlugins::DICOM_TAG_SLICE_THICKNESS))
-      {
-        return thickness;
-      }
-    }
-    catch (ORTHANC_PLUGINS_EXCEPTION_CLASS& e)
-    {
-    }
-
-    // Some arbitrary large slice thickness
-    return std::numeric_limits<double>::infinity();
-  }
-
-
-  SeriesFrameRendererFactory::SeriesFrameRendererFactory(ISeriesLoader* loader,   // Takes ownership
-                                                         bool fast) :
-    loader_(loader),
-    currentFrame_(0),
-    fast_(fast)
-  {
-    if (loader == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-  bool SeriesFrameRendererFactory::GetExtent(double& x1,
-                                             double& y1,
-                                             double& x2,
-                                             double& y2,
-                                             const SliceGeometry& viewportSlice)
-  {
-    if (currentDataset_.get() == NULL)
-    {
-      // There has been no previous call to
-      // "CreateLayerRenderer". Read some arbitrary DICOM frame, the
-      // one at the middle of the series.
-      unsigned int depth = loader_->GetGeometry().GetSliceCount();
-      ReadCurrentFrameDataset(depth / 2);
-    }
-
-    double spacingX, spacingY;
-    GetCurrentPixelSpacing(spacingX, spacingY);
-
-    return FrameRenderer::ComputeFrameExtent(x1, y1, x2, y2, 
-                                             viewportSlice, 
-                                             loader_->GetGeometry().GetSlice(0), 
-                                             loader_->GetWidth(), 
-                                             loader_->GetHeight(),
-                                             spacingX, spacingY);
-  }
-
-
-  ILayerRenderer* SeriesFrameRendererFactory::CreateLayerRenderer(const SliceGeometry& viewportSlice)
-  {
-    size_t closest;
-    double distance;
-
-    bool isOpposite;
-    if (!GeometryToolbox::IsParallelOrOpposite(isOpposite, loader_->GetGeometry().GetNormal(), viewportSlice.GetNormal()) ||
-        !loader_->GetGeometry().ComputeClosestSlice(closest, distance, viewportSlice.GetOrigin()))
-    {
-      // Unable to compute the slice in the series that is the
-      // closest to the slice displayed by the viewport
-      return NULL;
-    }
-
-    ReadCurrentFrameDataset(closest);
-    assert(currentDataset_.get() != NULL);
-        
-    double spacingX, spacingY;
-    GetCurrentPixelSpacing(spacingX, spacingY);
-
-    if (distance <= GetCurrentSliceThickness() / 2.0)
-    {
-      SliceGeometry frameSlice(*currentDataset_);
-      return FrameRenderer::CreateRenderer(loader_->DownloadFrame(closest), 
-                                           frameSlice,
-                                           *currentDataset_, 
-                                           spacingX, spacingY,
-                                           true);
-    }
-    else
-    {
-      // The closest slice of the series is too far away from the
-      // slice displayed by the viewport
-      return NULL;
-    }
-  }
-
-
-  ISliceableVolume& SeriesFrameRendererFactory::GetSourceVolume() const
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-  }
-}
--- a/Framework/Deprecated/Layers/SeriesFrameRendererFactory.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ILayerRendererFactory.h"
-
-#include "../Toolbox/ISeriesLoader.h"
-
-namespace Deprecated
-{
-  class SeriesFrameRendererFactory : public ILayerRendererFactory
-  {
-  private:
-    std::unique_ptr<ISeriesLoader>  loader_;
-    size_t                        currentFrame_;
-    bool                          fast_;
-
-    std::unique_ptr<OrthancPlugins::IDicomDataset>  currentDataset_;
-
-    void ReadCurrentFrameDataset(size_t frame);
-
-    void GetCurrentPixelSpacing(double& spacingX,
-                                double& spacingY) const;
-
-    double GetCurrentSliceThickness() const;
-
-  public:
-    SeriesFrameRendererFactory(ISeriesLoader* loader,   // Takes ownership
-                               bool fast);
-
-    virtual bool GetExtent(double& x1,
-                           double& y1,
-                           double& x2,
-                           double& y2,
-                           const SliceGeometry& viewportSlice);
-
-    virtual ILayerRenderer* CreateLayerRenderer(const SliceGeometry& viewportSlice);
-
-    virtual bool HasSourceVolume() const
-    {
-      return false;
-    }
-
-    virtual ISliceableVolume& GetSourceVolume() const;
-  };
-}
--- a/Framework/Deprecated/Layers/SingleFrameRendererFactory.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SingleFrameRendererFactory.h"
-
-#include "FrameRenderer.h"
-#include "../Toolbox/MessagingToolbox.h"
-#include "../Toolbox/DicomFrameConverter.h"
-
-#include <OrthancException.h>
-#include <FullOrthancDataset.h>
-#include <DicomDatasetReader.h>
-
-namespace Deprecated
-{
-  SingleFrameRendererFactory::SingleFrameRendererFactory(OrthancPlugins::IOrthancConnection& orthanc,
-                                                         const std::string& instanceId,
-                                                         unsigned int frame) :
-    orthanc_(orthanc),
-    instance_(instanceId),
-    frame_(frame)
-  {
-    dicom_.reset(new OrthancPlugins::FullOrthancDataset(orthanc, "/instances/" + instanceId + "/tags"));
-
-    DicomFrameConverter converter;
-    converter.ReadParameters(*dicom_);
-    format_ = converter.GetExpectedPixelFormat();
-  }
-
-
-  bool SingleFrameRendererFactory::GetExtent(double& x1,
-                                             double& y1,
-                                             double& x2,
-                                             double& y2,
-                                             const SliceGeometry& viewportSlice)
-  {
-    // Assume that PixelSpacingX == PixelSpacingY == 1
-
-    OrthancPlugins::DicomDatasetReader reader(*dicom_);
-
-    unsigned int width, height;
-
-    if (!reader.GetUnsignedIntegerValue(width, OrthancPlugins::DICOM_TAG_COLUMNS) ||
-        !reader.GetUnsignedIntegerValue(height, OrthancPlugins::DICOM_TAG_ROWS))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    x1 = 0;
-    y1 = 0;
-    x2 = static_cast<double>(width);
-    y2 = static_cast<double>(height);
-
-    return true;
-  }
-
-
-  ILayerRenderer* SingleFrameRendererFactory::CreateLayerRenderer(const SliceGeometry& viewportSlice)
-  {
-    SliceGeometry frameSlice(*dicom_);
-    return FrameRenderer::CreateRenderer(MessagingToolbox::DecodeFrame(orthanc_, instance_, frame_, format_), 
-                                         frameSlice, *dicom_, 1, 1, true);
-  }
-
-
-  ISliceableVolume& SingleFrameRendererFactory::GetSourceVolume() const
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-}
--- a/Framework/Deprecated/Layers/SingleFrameRendererFactory.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ILayerRendererFactory.h"
-#include <IOrthancConnection.h>
-
-namespace Deprecated
-{
-  class SingleFrameRendererFactory : public ILayerRendererFactory
-  {
-  private:
-    OrthancPlugins::IOrthancConnection&           orthanc_;
-    std::unique_ptr<OrthancPlugins::IDicomDataset>  dicom_;
-
-    std::string           instance_;
-    unsigned int          frame_;
-    Orthanc::PixelFormat  format_;
-
-  public:
-    SingleFrameRendererFactory(OrthancPlugins::IOrthancConnection& orthanc,
-                               const std::string& instanceId,
-                               unsigned int frame);
-
-    const OrthancPlugins::IDicomDataset& GetDataset() const
-    {
-      return *dicom_;
-    }
-
-    SliceGeometry GetSliceGeometry()
-    {
-      return SliceGeometry(*dicom_);
-    }
-
-    virtual bool GetExtent(double& x1,
-                           double& y1,
-                           double& x2,
-                           double& y2,
-                           const SliceGeometry& viewportSlice);
-
-    virtual ILayerRenderer* CreateLayerRenderer(const SliceGeometry& viewportSlice);
-
-    virtual bool HasSourceVolume() const
-    {
-      return false;
-    }
-
-    virtual ISliceableVolume& GetSourceVolume() const;
-  };
-}
--- a/Framework/Deprecated/Layers/SliceOutlineRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SliceOutlineRenderer.h"
-
-namespace Deprecated
-{
-  bool SliceOutlineRenderer::RenderLayer(OrthancStone::CairoContext& context,
-                                         const ViewportGeometry& view)
-  {
-    if (style_.visible_)
-    {
-      cairo_t *cr = context.GetObject();
-      cairo_save(cr);
-
-      context.SetSourceColor(style_.drawColor_);
-
-      double x1 = -0.5 * pixelSpacingX_;
-      double y1 = -0.5 * pixelSpacingY_;
-        
-      cairo_set_line_width(cr, 1.0 / view.GetZoom());
-      cairo_rectangle(cr, x1, y1,
-                      static_cast<double>(width_) * pixelSpacingX_,
-                      static_cast<double>(height_) * pixelSpacingY_);
-
-      double handleSize = 10.0f / view.GetZoom();
-      cairo_move_to(cr, x1 + handleSize, y1);
-      cairo_line_to(cr, x1, y1 + handleSize);
-
-      cairo_stroke(cr);
-      cairo_restore(cr);
-    }
-
-    return true;
-  }
-}
--- a/Framework/Deprecated/Layers/SliceOutlineRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ILayerRenderer.h"
-#include "../Toolbox/Slice.h"
-
-namespace Deprecated
-{
-  class SliceOutlineRenderer : public ILayerRenderer
-  {
-  private:
-    OrthancStone::CoordinateSystem3D  geometry_;
-    double              pixelSpacingX_;
-    double              pixelSpacingY_;
-    unsigned int        width_;
-    unsigned int        height_;
-    RenderStyle         style_;
-
-  public:
-    SliceOutlineRenderer(const Slice& slice) :
-      geometry_(slice.GetGeometry()),
-      pixelSpacingX_(slice.GetPixelSpacingX()),
-      pixelSpacingY_(slice.GetPixelSpacingY()),
-      width_(slice.GetWidth()),
-      height_(slice.GetHeight())
-    {
-    }
-
-    virtual bool RenderLayer(OrthancStone::CairoContext& context,
-                             const ViewportGeometry& view);
-
-    virtual void SetLayerStyle(const RenderStyle& style)
-    {
-      style_ = style;
-    }
-
-    virtual const OrthancStone::CoordinateSystem3D& GetLayerSlice()
-    {
-      return geometry_;
-    }
-
-    virtual bool IsFullQuality()
-    {
-      return true;
-    }
-  };
-}
--- a/Framework/Deprecated/Loaders/DicomStructureSetLoader2.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#include "DicomStructureSetLoader2.h"
-
-#include "../Messages/IObservable.h"
-#include "../Oracle/IOracle.h"
-#include "../Oracle/OracleCommandExceptionMessage.h"
-
-namespace Deprecated
-{
-
-  DicomStructureSetLoader2::DicomStructureSetLoader2(
-    DicomStructureSet2& structureSet
-    , IOracle& oracle
-    , IObservable& oracleObservable)
-    : IObserver(oracleObservable.GetBroker())
-    , IObservable(oracleObservable.GetBroker())
-    , structureSet_(structureSet)
-    , oracle_(oracle)
-    , oracleObservable_(oracleObservable)
-    , structuresReady_(false)
-  {
-    LOG(TRACE) << "DicomStructureSetLoader2(" << std::hex << this << std::dec << ")::DicomStructureSetLoader2()";
-
-    oracleObservable.RegisterObserverCallback(
-      new Callable<DicomStructureSetLoader2, OrthancRestApiCommand::SuccessMessage>
-      (*this, &DicomStructureSetLoader2::HandleSuccessMessage));
-
-    oracleObservable.RegisterObserverCallback(
-      new Callable<DicomStructureSetLoader2, OracleCommandExceptionMessage>
-      (*this, &DicomStructureSetLoader2::HandleExceptionMessage));
-  }
-
-  DicomStructureSetLoader2::~DicomStructureSetLoader2()
-  {
-    LOG(TRACE) << "DicomStructureSetLoader2(" << std::hex << this << std::dec << ")::~DicomStructureSetLoader2()";
-    oracleObservable_.Unregister(this);
-  }
-
-  void DicomStructureSetLoader2::LoadInstanceFromString(const std::string& body)
-  {
-    OrthancPlugins::FullOrthancDataset dicom(body);
-    //loader.content_.reset(new DicomStructureSet(dicom));
-    structureSet_.Clear();
-    structureSet_.SetContents(dicom);
-    SetStructuresReady();
-  }
-
-  void DicomStructureSetLoader2::HandleSuccessMessage(const OrthancRestApiCommand::SuccessMessage& message)
-  {
-    const std::string& body = message.GetAnswer();
-    LoadInstanceFromString(body);
-  }
-
-  void DicomStructureSetLoader2::HandleExceptionMessage(const OracleCommandExceptionMessage& message)
-  {
-    LOG(ERROR) << "DicomStructureSetLoader2::HandleExceptionMessage: error when trying to load data. "
-      << "Error: " << message.GetException().What() << " Details: "
-      << message.GetException().GetDetails();
-  }
-
-  void DicomStructureSetLoader2::LoadInstance(const std::string& instanceId)
-  {
-    std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
-    command->SetHttpHeader("Accept-Encoding", "gzip");
-
-    std::string uri = "/instances/" + instanceId + "/tags?ignore-length=3006-0050";
-
-    command->SetUri(uri);
-    oracle_.Schedule(*this, command.release());
-  }
-
-  void DicomStructureSetLoader2::SetStructuresReady()
-  {
-    structuresReady_ = true;
-  }
-
-  bool DicomStructureSetLoader2::AreStructuresReady() const
-  {
-    return structuresReady_;
-  }
-
-  /*
-
-    void LoaderStateMachine::HandleExceptionMessage(const OracleCommandExceptionMessage& message)
-    {
-      LOG(ERROR) << "LoaderStateMachine::HandleExceptionMessage: error in the state machine, stopping all processing";
-      LOG(ERROR) << "Error: " << message.GetException().What() << " Details: " <<
-        message.GetException().GetDetails();
-        Clear();
-    }
-
-    LoaderStateMachine::~LoaderStateMachine()
-    {
-      Clear();
-    }
-
-
-  */
-
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
--- a/Framework/Deprecated/Loaders/DicomStructureSetLoader2.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#include "../Toolbox/DicomStructureSet2.h"
-#include "../Messages/IMessage.h"
-#include "../Messages/IObserver.h"
-#include "../Messages/IObservable.h"
-#include "../Oracle/OrthancRestApiCommand.h"
-
-#include <boost/noncopyable.hpp>
-
-namespace Deprecated
-{
-  class IOracle;
-  class IObservable;
-  class OrthancRestApiCommand;
-  class OracleCommandExceptionMessage;
-
-  class DicomStructureSetLoader2 : public IObserver, public IObservable
-  {
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, StructuresReady, DicomStructureSetLoader2);
-
-    /**
-    Warning: the structureSet, oracle and oracleObservable objects must live
-    at least as long as this object (TODO: shared_ptr?)
-    */
-    DicomStructureSetLoader2(DicomStructureSet2& structureSet, IOracle& oracle, IObservable& oracleObservable);
-
-    ~DicomStructureSetLoader2();
-
-    void LoadInstance(const std::string& instanceId);
-
-    /** Internal use */
-    void LoadInstanceFromString(const std::string& body);
-
-    void SetStructuresReady();
-    bool AreStructuresReady() const;
-  
-  private:
-    /**
-    Called back by the oracle when data is ready!
-    */
-    void HandleSuccessMessage(const OrthancRestApiCommand::SuccessMessage& message);
-
-    /**
-    Called back by the oracle when shit hits the fan
-    */
-    void HandleExceptionMessage(const OracleCommandExceptionMessage& message);
-
-    /**
-    The structure set that will be (cleared and) filled with data from the 
-    loader
-    */
-    DicomStructureSet2& structureSet_;
-
-    IOracle&            oracle_;
-    IObservable&        oracleObservable_;
-    bool                structuresReady_;
-  };
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-
--- a/Framework/Deprecated/Messages/LockingEmitter.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "LockingEmitter.h"
-
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  void LockingEmitter::EmitMessage(boost::weak_ptr<OrthancStone::IObserver> observer,
-                                   const OrthancStone::IMessage& message)
-  {
-    try
-    {
-      boost::unique_lock<boost::shared_mutex>  lock(mutex_);
-      oracleObservable_.EmitMessage(observer, message);
-    }
-    catch (Orthanc::OrthancException& e)
-    {
-      LOG(ERROR) << "Exception while emitting a message: " << e.What();
-    }
-  }
-}
--- a/Framework/Deprecated/Messages/LockingEmitter.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include <Enumerations.h>
-#include <OrthancException.h>
-
-#include "../../Messages/IMessageEmitter.h"
-#include "../../Messages/IObservable.h"
-
-#include <boost/thread/shared_mutex.hpp>
-
-namespace Deprecated
-{
-  /**
-   * This class is used when using the ThreadedOracle : since messages
-   * can be sent from multiple Oracle threads, this IMessageEmitter
-   * implementation serializes the callbacks.
-   * 
-   * The internal mutex used in Oracle messaging can also be used to 
-   * protect the application data. Thus, this class can be used as a single
-   * application-wide mutex.
-   */
-  class LockingEmitter : public OrthancStone::IMessageEmitter
-  {
-  private:
-    boost::shared_mutex        mutex_;
-    OrthancStone::IObservable  oracleObservable_;
-
-  public:
-    virtual void EmitMessage(boost::weak_ptr<OrthancStone::IObserver> observer,
-                             const OrthancStone::IMessage& message) ORTHANC_OVERRIDE;
-
-
-    class ReaderLock : public boost::noncopyable
-    {
-    private:
-      LockingEmitter& that_;
-      boost::shared_lock<boost::shared_mutex>  lock_;
-
-    public:
-      ReaderLock(LockingEmitter& that) :
-        that_(that),
-        lock_(that.mutex_)
-      {
-      }
-    };
-
-
-    class WriterLock : public boost::noncopyable
-    {
-    private:
-      LockingEmitter& that_;
-      boost::unique_lock<boost::shared_mutex>  lock_;
-
-    public:
-      WriterLock(LockingEmitter& that) :
-        that_(that),
-        lock_(that.mutex_)
-      {
-      }
-
-      OrthancStone::IObservable& GetOracleObservable()
-      {
-        return that_.oracleObservable_;
-      }
-    };
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyAlphaLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyAlphaLayer.h"
-
-#include "RadiographyScene.h"
-#include "../Toolbox/ImageGeometry.h"
-
-#include <Compatibility.h>
-#include <Images/Image.h>
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-
-  void RadiographyAlphaLayer::SetAlpha(Orthanc::ImageAccessor* image)
-  {
-    std::unique_ptr<Orthanc::ImageAccessor> raii(image);
-
-    if (image == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    if (image->GetFormat() != Orthanc::PixelFormat_Grayscale8)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    SetSize(image->GetWidth(), image->GetHeight());
-
-#if __cplusplus < 201103L
-    alpha_.reset(raii.release());
-#else
-    alpha_ = std::move(raii);
-#endif
-
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-  void RadiographyAlphaLayer::Render(Orthanc::ImageAccessor& buffer,
-                                     const AffineTransform2D& viewTransform,
-                                     ImageInterpolation interpolation,
-                                     float windowCenter,
-                                     float windowWidth,
-                                     bool applyWindowing) const
-  {
-    if (alpha_.get() == NULL)
-    {
-      return;
-    }
-
-    if (buffer.GetFormat() != Orthanc::PixelFormat_Float32)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    unsigned int cropX, cropY, cropWidth, cropHeight;
-    GetCrop(cropX, cropY, cropWidth, cropHeight);
-
-    const AffineTransform2D t = AffineTransform2D::Combine(
-          viewTransform, GetTransform(),
-          AffineTransform2D::CreateOffset(cropX, cropY));
-
-    Orthanc::ImageAccessor cropped;
-    alpha_->GetRegion(cropped, cropX, cropY, cropWidth, cropHeight);
-
-    Orthanc::Image tmp(Orthanc::PixelFormat_Grayscale8, buffer.GetWidth(), buffer.GetHeight(), false);
-
-    unsigned int x1, y1, x2, y2;
-
-    if (!OrthancStone::GetProjectiveTransformExtent(x1, y1, x2, y2,
-                                                    t.GetHomogeneousMatrix(),
-                                                    cropped.GetWidth(),
-                                                    cropped.GetHeight(),
-                                                    buffer.GetWidth(),
-                                                    buffer.GetHeight()))
-    {
-      return;  // layer is outside the buffer
-    }
-
-    t.Apply(tmp, cropped, interpolation, true /* clear */);
-
-    float value = foreground_;
-
-    if (!applyWindowing) // if applying the windowing, it means we are ie rendering the image for a realtime visualization -> the foreground_ value is the value we want to see on the screen -> don't change it
-    {
-      // if not applying the windowing, it means ie that we are saving a dicom image to file and the windowing will be applied by a viewer later on -> we want the "foreground" value to be correct once the windowing will be applied
-      value = windowCenter - windowWidth/2 + (foreground_ / 65535.0f) * windowWidth;
-
-      if (value < 0.0f)
-      {
-        value = 0.0f;
-      }
-      if (value > 65535.0f)
-      {
-        value = 65535.0f;
-      }
-    }
-
-    for (unsigned int y = y1; y <= y2; y++)
-    {
-      float *q = reinterpret_cast<float*>(buffer.GetRow(y)) + x1;
-      const uint8_t *p = reinterpret_cast<uint8_t*>(tmp.GetRow(y)) + x1;
-
-      for (unsigned int x = x1; x <= x2; x++, p++, q++)
-      {
-        float a = static_cast<float>(*p) / 255.0f;
-
-        *q = (a * value + (1.0f - a) * (*q));
-      }
-    }
-  }
-
-  bool RadiographyAlphaLayer::GetRange(float& minValue,
-                                       float& maxValue) const
-  {
-    minValue = 0;
-    maxValue = 0;
-
-    if (foreground_ < 0)
-    {
-      minValue = foreground_;
-    }
-
-    if (foreground_ > 0)
-    {
-      maxValue = foreground_;
-    }
-
-    return true;
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographyAlphaLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "RadiographyLayer.h"
-
-#include <Compatibility.h>
-
-namespace OrthancStone
-{
-  class RadiographyScene;
-
-  // creates a transparent layer whose alpha channel is provided as a UINT8 image to SetAlpha.
-  // The color of the "mask" is either defined by a ForegroundValue or by the center value of the
-  // windowing from the scene.
-  class RadiographyAlphaLayer : public RadiographyLayer
-  {
-  private:
-    std::unique_ptr<Orthanc::ImageAccessor>  alpha_;       // Grayscale8 in the range [0, 255]  0 = transparent, 255 = opaque -> the foreground value will be displayed
-    float                                  foreground_;  // in the range [0.0, 65535.0]
-
-  public:
-    RadiographyAlphaLayer(const RadiographyScene& scene) :
-      RadiographyLayer(scene),
-      foreground_(0)
-    {
-    }
-
-
-    void SetForegroundValue(float foreground)
-    {
-      foreground_ = foreground;
-    }
-
-    float GetForegroundValue() const
-    {
-      return foreground_;
-    }
-
-    void SetAlpha(Orthanc::ImageAccessor* image);
-
-    virtual bool GetDefaultWindowing(float& center,
-                                     float& width) const
-    {
-      return false;
-    }
-
-
-    virtual void Render(Orthanc::ImageAccessor& buffer,
-                        const AffineTransform2D& viewTransform,
-                        ImageInterpolation interpolation,
-                        float windowCenter,
-                        float windowWidth,
-                        bool applyWindowing) const;
-
-    virtual bool GetRange(float& minValue,
-                          float& maxValue) const;
-
-    const Orthanc::ImageAccessor& GetAlpha() const
-    {
-      return *(alpha_.get());
-    }
-
-
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyDicomLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,264 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyDicomLayer.h"
-
-#include "RadiographyScene.h"
-#include "../Deprecated/Toolbox/DicomFrameConverter.h"
-#include "../Toolbox/ImageGeometry.h"
-
-#include <OrthancException.h>
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <DicomDatasetReader.h>
-
-static OrthancPlugins::DicomTag  ConvertTag(const Orthanc::DicomTag& tag)
-{
-  return OrthancPlugins::DicomTag(tag.GetGroup(), tag.GetElement());
-}
-
-namespace OrthancStone
-{
-
-  void RadiographyDicomLayer::ApplyConverter()
-  {
-    if (source_.get() != NULL &&
-        converter_.get() != NULL)
-    {
-      converted_.reset(converter_->ConvertFrame(*source_));
-    }
-  }
-
-
-  RadiographyDicomLayer::RadiographyDicomLayer(const RadiographyScene& scene) :
-    RadiographyLayer(scene)
-  {
-
-  }
-
-  void RadiographyDicomLayer::SetDicomTags(const OrthancPlugins::FullOrthancDataset& dataset)
-  {
-    converter_.reset(new Deprecated::DicomFrameConverter);
-    converter_->ReadParameters(dataset);
-    ApplyConverter();
-
-    std::string tmp;
-    Vector pixelSpacing;
-
-    if (dataset.GetStringValue(tmp, ConvertTag(Orthanc::DICOM_TAG_PIXEL_SPACING)) &&
-        LinearAlgebra::ParseVector(pixelSpacing, tmp) &&
-        pixelSpacing.size() == 2)
-    {
-      SetPixelSpacing(pixelSpacing[0], pixelSpacing[1]);
-    }
-
-    OrthancPlugins::DicomDatasetReader reader(dataset);
-
-    unsigned int width, height;
-    if (!reader.GetUnsignedIntegerValue(width, ConvertTag(Orthanc::DICOM_TAG_COLUMNS)) ||
-        !reader.GetUnsignedIntegerValue(height, ConvertTag(Orthanc::DICOM_TAG_ROWS)))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    else
-    {
-      SetSize(width, height);
-    }
-
-    if (dataset.GetStringValue(tmp, ConvertTag(Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION)))
-    {
-      if (tmp == "MONOCHROME1")
-      {
-        SetPreferredPhotomotricDisplayMode(RadiographyPhotometricDisplayMode_Monochrome1);
-      }
-      else if (tmp == "MONOCHROME2")
-      {
-        SetPreferredPhotomotricDisplayMode(RadiographyPhotometricDisplayMode_Monochrome2);
-      }
-    }
-  }
-
-  void RadiographyDicomLayer::SetSourceImage(Orthanc::ImageAccessor* image)   // Takes ownership
-  {
-    std::unique_ptr<Orthanc::ImageAccessor> raii(image);
-
-    if (image == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    SetSize(image->GetWidth(), image->GetHeight());
-
-#if __cplusplus < 201103L
-      source_.reset(raii.release());
-#else
-      source_ = std::move(raii);
-#endif
-
-    ApplyConverter();
-
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-  void RadiographyDicomLayer::SetSourceImage(Orthanc::ImageAccessor* image, double newPixelSpacingX, double newPixelSpacingY, bool emitLayerEditedEvent)   // Takes ownership
-  {
-    std::unique_ptr<Orthanc::ImageAccessor> raii(image);
-
-    if (image == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    SetSize(image->GetWidth(), image->GetHeight(), false);
-
-#if __cplusplus < 201103L
-    source_.reset(raii.release());
-#else
-    source_ = std::move(raii);
-#endif
-
-    ApplyConverter();
-
-    SetPixelSpacing(newPixelSpacingX, newPixelSpacingY, false);
-
-    if (emitLayerEditedEvent)
-    {
-      BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-    }
-  }
-
-
-  void RadiographyDicomLayer::SetDicomFrameConverter(Deprecated::DicomFrameConverter* converter)
-  {
-    converter_.reset(converter);
-  }
-
-  void RadiographyDicomLayer::Render(Orthanc::ImageAccessor& buffer,
-                                     const AffineTransform2D& viewTransform,
-                                     ImageInterpolation interpolation,
-                                     float windowCenter,
-                                     float windowWidth,
-                                     bool applyWindowing) const
-  {
-    if (converted_.get() != NULL)
-    {
-      if (converted_->GetFormat() != Orthanc::PixelFormat_Float32)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      unsigned int cropX, cropY, cropWidth, cropHeight;
-      GetCrop(cropX, cropY, cropWidth, cropHeight);
-
-      AffineTransform2D t = AffineTransform2D::Combine(
-            viewTransform, GetTransform(),
-            AffineTransform2D::CreateOffset(cropX, cropY));
-
-      Orthanc::ImageAccessor cropped;
-      converted_->GetRegion(cropped, cropX, cropY, cropWidth, cropHeight);
-
-      unsigned int x1, y1, x2, y2;
-      if (!OrthancStone::GetProjectiveTransformExtent(x1, y1, x2, y2,
-                                                      t.GetHomogeneousMatrix(),
-                                                      cropped.GetWidth(),
-                                                      cropped.GetHeight(),
-                                                      buffer.GetWidth(),
-                                                      buffer.GetHeight()))
-      {
-        return;  // layer is outside the buffer
-      }
-
-      t.Apply(buffer, cropped, interpolation, false);
-
-      if (applyWindowing)
-      {
-        // apply windowing but stay in the range [0.0, 65535.0]
-        float w0 = windowCenter - windowWidth / 2.0f;
-        float w1 = windowCenter + windowWidth / 2.0f;
-
-        if (windowWidth >= 0.001f)  // Avoid division by zero at (*)
-        {
-          float scaling = 1.0f / (w1 - w0) * 65535.0f;
-          for (unsigned int y = y1; y <= y2; y++)
-          {
-            float* p = reinterpret_cast<float*>(buffer.GetRow(y)) + x1;
-
-            for (unsigned int x = x1; x <= x2; x++, p++)
-            {
-              if (*p >= w1)
-              {
-                *p = 65535.0;
-              }
-              else if (*p <= w0)
-              {
-                *p = 0;
-              }
-              else
-              {
-                // https://en.wikipedia.org/wiki/Linear_interpolation
-                *p = scaling * (*p - w0);  // (*)
-              }
-            }
-          }
-        }
-      }
-
-    }
-  }
-
-
-  bool RadiographyDicomLayer::GetDefaultWindowing(float& center,
-                                                  float& width) const
-  {
-    if (converter_.get() != NULL &&
-        converter_->HasDefaultWindow())
-    {
-      center = static_cast<float>(converter_->GetDefaultWindowCenter());
-      width = static_cast<float>(converter_->GetDefaultWindowWidth());
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-  bool RadiographyDicomLayer::GetRange(float& minValue,
-                                       float& maxValue) const
-  {
-    if (converted_.get() != NULL)
-    {
-      if (converted_->GetFormat() != Orthanc::PixelFormat_Float32)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue, maxValue, *converted_);
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-}
--- a/Framework/Deprecated/Radiography/RadiographyDicomLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Deprecated/Toolbox/DicomFrameConverter.h"
-#include "RadiographyLayer.h"
-
-#include <FullOrthancDataset.h>
-
-namespace OrthancStone
-{
-  class RadiographyScene;
-
-  class RadiographyDicomLayer : public RadiographyLayer
-  {
-  private:
-    std::unique_ptr<Orthanc::ImageAccessor>  source_;  // Content of PixelData
-    std::unique_ptr<Deprecated::DicomFrameConverter>     converter_;
-    std::unique_ptr<Orthanc::ImageAccessor>  converted_;  // Float32
-    std::string                            instanceId_;
-    unsigned int                           frame_;
-
-    void ApplyConverter();
-
-  public:
-    RadiographyDicomLayer(const RadiographyScene& scene);
-
-    void SetInstance(const std::string& instanceId, unsigned int frame)
-    {
-      instanceId_ = instanceId;
-      frame_ = frame;
-    }
-
-    std::string GetInstanceId() const
-    {
-      return instanceId_;
-    }
-
-    unsigned int GetFrame() const
-    {
-      return frame_;
-    }
-
-    virtual size_t GetApproximateMemoryUsage() const
-    {
-      size_t size = 0;
-      if (source_.get() != NULL)
-      {
-        size += source_->GetPitch() * source_->GetHeight();
-      }
-      if (converted_.get() != NULL)
-      {
-        size += converted_->GetPitch() * converted_->GetHeight();
-      }
-
-      return size;
-    }
-
-
-    void SetDicomTags(const OrthancPlugins::FullOrthancDataset& dataset);
-
-    void SetSourceImage(Orthanc::ImageAccessor* image);   // Takes ownership
-
-    void SetSourceImage(Orthanc::ImageAccessor* image, double newPixelSpacingX, double newPixelSpacingY, bool emitLayerEditedEvent = true);   // Takes ownership
-
-    const Orthanc::ImageAccessor* GetSourceImage() const {return source_.get();}  // currently need this access to serialize scene in plain old data to send to a WASM worker
-
-    const Deprecated::DicomFrameConverter& GetDicomFrameConverter() const {return *converter_;} // currently need this access to serialize scene in plain old data to send to a WASM worker
-    
-     // Takes ownership
-    void SetDicomFrameConverter(Deprecated::DicomFrameConverter* converter);
-
-    virtual void Render(Orthanc::ImageAccessor& buffer,
-                        const AffineTransform2D& viewTransform,
-                        ImageInterpolation interpolation,
-                        float windowCenter,
-                        float windowWidth,
-                        bool applyWindowing) const;
-
-    virtual bool GetDefaultWindowing(float& center,
-                                     float& width) const;
-
-    virtual bool GetRange(float& minValue,
-                          float& maxValue) const;
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyLayer.h"
-
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-  static double Square(double x)
-  {
-    return x * x;
-  }
-
-
-  RadiographyLayer::Geometry::Geometry() :
-    hasCrop_(false),
-    flipVertical_(false),
-    flipHorizontal_(false),
-    panX_(0),
-    panY_(0),
-    angle_(0),
-    resizeable_(false),
-    pixelSpacingX_(1),
-    pixelSpacingY_(1)
-  {
-
-  }
-
-  void RadiographyLayer::Geometry::GetCrop(unsigned int &x, unsigned int &y, unsigned int &width, unsigned int &height) const
-  {
-    if (!hasCrop_)
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);  // you should probably use RadiographyLayer::GetCrop() or at least call HasCrop() before
-
-    x = cropX_;
-    y = cropY_;
-    width = cropWidth_;
-    height = cropHeight_;
-  }
-
-  void RadiographyLayer::UpdateTransform()
-  {
-    // important to update transform_ before getting the center to use the right scaling !!!
-    transform_ = AffineTransform2D::CreateScaling(geometry_.GetScalingX(), geometry_.GetScalingY());
-
-    double centerX, centerY;
-    GetCenter(centerX, centerY);
-
-    transform_ = AffineTransform2D::Combine(
-          AffineTransform2D::CreateOffset(geometry_.GetPanX(), geometry_.GetPanY()),
-          AffineTransform2D::CreateRotation(geometry_.GetAngle(), centerX, centerY),
-          transform_);
-
-    transformInverse_ = AffineTransform2D::Invert(transform_);
-  }
-
-
-  void RadiographyLayer::AddToExtent(Extent2D& extent,
-                                     double x,
-                                     double y) const
-  {
-    GetTransform().Apply(x, y);
-    extent.AddPoint(x, y);
-  }
-
-  bool RadiographyLayer::Contains(double x,
-                                  double y) const
-  {
-    GetTransformInverse().Apply(x, y);
-
-    unsigned int cropX, cropY, cropWidth, cropHeight;
-    GetCrop(cropX, cropY, cropWidth, cropHeight);
-
-    return (x >= cropX && x <= cropX + cropWidth &&
-            y >= cropY && y <= cropY + cropHeight);
-  }
-
-
-  void RadiographyLayer::DrawBorders(CairoContext& context,
-                                     double zoom)
-  {
-    if (GetControlPointCount() < 3 )
-      return;
-
-    cairo_t* cr = context.GetObject();
-    cairo_set_line_width(cr, 2.0 / zoom);
-
-    ControlPoint cp;
-    GetControlPoint(cp, 0);
-    cairo_move_to(cr, cp.x, cp.y);
-
-    for (size_t i = 0; i < GetControlPointCount(); i++)
-    {
-      GetControlPoint(cp, i);
-      cairo_line_to(cr, cp.x, cp.y);
-    }
-
-    cairo_close_path(cr);
-    cairo_stroke(cr);
-  }
-
-
-  RadiographyLayer::RadiographyLayer(const RadiographyScene& scene) :
-    index_(0),
-    hasSize_(false),
-    width_(0),
-    height_(0),
-    prefferedPhotometricDisplayMode_(RadiographyPhotometricDisplayMode_Default),
-    scene_(scene)
-  {
-    UpdateTransform();
-  }
-
-  void RadiographyLayer::ResetCrop()
-  {
-    geometry_.ResetCrop();
-    UpdateTransform();
-  }
-
-  void RadiographyLayer::SetPreferredPhotomotricDisplayMode(RadiographyPhotometricDisplayMode  prefferedPhotometricDisplayMode)
-  {
-    prefferedPhotometricDisplayMode_ = prefferedPhotometricDisplayMode;
-
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-  void RadiographyLayer::SetCrop(unsigned int x,
-                                 unsigned int y,
-                                 unsigned int width,
-                                 unsigned int height)
-  {
-    if (!hasSize_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    if (x + width > width_ ||
-        y + height > height_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    geometry_.SetCrop(x, y, width, height);
-    UpdateTransform();
-
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-  void RadiographyLayer::SetGeometry(const Geometry& geometry)
-  {
-    geometry_ = geometry;
-
-    if (hasSize_)
-    {
-      UpdateTransform();
-    }
-
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-
-  void RadiographyLayer::GetCrop(unsigned int& x,
-                                 unsigned int& y,
-                                 unsigned int& width,
-                                 unsigned int& height) const
-  {
-    if (GetGeometry().HasCrop())
-    {
-      GetGeometry().GetCrop(x, y, width, height);
-    }
-    else
-    {
-      x = 0;
-      y = 0;
-      width = width_;
-      height = height_;
-    }
-  }
-
-  
-  void RadiographyLayer::SetAngle(double angle)
-  {
-    geometry_.SetAngle(angle);
-    UpdateTransform();
-
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-  void RadiographyLayer::SetFlipVertical(bool flip)
-  {
-    geometry_.SetFlipVertical(flip);
-    UpdateTransform();
-
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-  void RadiographyLayer::SetFlipHorizontal(bool flip)
-  {
-    geometry_.SetFlipHorizontal(flip);
-    UpdateTransform();
-
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-  void RadiographyLayer::SetSize(unsigned int width,
-                                 unsigned int height,
-                                 bool emitLayerEditedEvent)
-  {
-    hasSize_ = true;
-    width_ = width;
-    height_ = height;
-
-    UpdateTransform();
-
-    if (emitLayerEditedEvent)
-    {
-      BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-    }
-  }
-
-  Extent2D RadiographyLayer::GetSceneExtent(bool /*minimal*/) const
-  {
-    Extent2D extent;
-
-    unsigned int x, y, width, height;
-    GetCrop(x, y, width, height);
-
-    double dx = static_cast<double>(x);
-    double dy = static_cast<double>(y);
-    double dwidth = static_cast<double>(width);
-    double dheight = static_cast<double>(height);
-
-    // AddToExtent transforms the coordinates from image to scene
-    AddToExtent(extent, dx, dy);
-    AddToExtent(extent, dx + dwidth, dy);
-    AddToExtent(extent, dx, dy + dheight);
-    AddToExtent(extent, dx + dwidth, dy + dheight);
-
-    return extent;
-  }
-
-
-  bool RadiographyLayer::GetPixel(unsigned int& imageX,
-                                  unsigned int& imageY,
-                                  double sceneX,
-                                  double sceneY) const
-  {
-    if (width_ == 0 ||
-        height_ == 0)
-    {
-      return false;
-    }
-    else
-    {
-      GetTransformInverse().Apply(sceneX, sceneY);
-
-      int x = static_cast<int>(std::floor(sceneX));
-      int y = static_cast<int>(std::floor(sceneY));
-
-      if (x < 0)
-      {
-        imageX = 0;
-      }
-      else if (x >= static_cast<int>(width_))
-      {
-        imageX = width_;
-      }
-      else
-      {
-        imageX = static_cast<unsigned int>(x);
-      }
-
-      if (y < 0)
-      {
-        imageY = 0;
-      }
-      else if (y >= static_cast<int>(height_))
-      {
-        imageY = height_;
-      }
-      else
-      {
-        imageY = static_cast<unsigned int>(y);
-      }
-
-      return true;
-    }
-  }
-
-
-  void RadiographyLayer::SetPan(double x,
-                                double y)
-  {
-    geometry_.SetPan(x, y);
-    UpdateTransform();
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-
-  void RadiographyLayer::SetPixelSpacing(double x,
-                                         double y,
-                                         bool emitLayerEditedEvent)
-  {
-    geometry_.SetPixelSpacing(x, y);
-    UpdateTransform();
-    if (emitLayerEditedEvent)
-    {
-      BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-    }
-  }
-
-
-  void RadiographyLayer::GetCenter(double& centerX,
-                                   double& centerY) const
-  {
-    centerX = static_cast<double>(width_) / 2.0;
-    centerY = static_cast<double>(height_) / 2.0;
-    GetTransform().Apply(centerX, centerY);
-  }
-
-
-
-  size_t RadiographyLayer::GetControlPointCount() const {return 4;}
-
-  void RadiographyLayer::GetControlPoint(ControlPoint& cpScene /* out in scene coordinates */,
-                                         size_t index) const
-  {
-    unsigned int cropX, cropY, cropWidth, cropHeight;
-    GetCrop(cropX, cropY, cropWidth, cropHeight);
-
-    ControlPoint cp;
-    switch (index)
-    {
-      case RadiographyControlPointType_TopLeftCorner:
-        cp = ControlPoint(cropX, cropY, RadiographyControlPointType_TopLeftCorner);
-        break;
-
-      case RadiographyControlPointType_TopRightCorner:
-        cp = ControlPoint(cropX + cropWidth, cropY, RadiographyControlPointType_TopRightCorner);
-        break;
-
-      case RadiographyControlPointType_BottomLeftCorner:
-        cp = ControlPoint(cropX, cropY + cropHeight, RadiographyControlPointType_BottomLeftCorner);
-        break;
-
-      case RadiographyControlPointType_BottomRightCorner:
-        cp = ControlPoint(cropX + cropWidth, cropY + cropHeight, RadiographyControlPointType_BottomRightCorner);
-        break;
-
-    default:
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    // transforms image coordinates into scene coordinates
-    GetTransform().Apply(cp.x, cp.y);
-    cpScene = cp;
-  }
-
-  bool RadiographyLayer::LookupControlPoint(ControlPoint& cpScene /* out */,
-                                            double x,
-                                            double y,
-                                            double zoom,
-                                            double viewportDistance) const
-  {
-    double threshold = Square(viewportDistance / zoom);
-
-    for (size_t i = 0; i < GetControlPointCount(); i++)
-    {
-      ControlPoint cp;
-      GetControlPoint(cp, i);
-
-      double d = Square(cp.x - x) + Square(cp.y - y);
-
-      if (d <= threshold)
-      {
-        cpScene = cp;
-        return true;
-      }
-    }
-
-    return false;
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,395 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <algorithm>
-
-#include "../Toolbox/AffineTransform2D.h"
-#include "../Toolbox/Extent2D.h"
-#include "../Wrappers/CairoContext.h"
-#include "../Messages/IMessage.h"
-#include "../Messages/IObservable.h"
-
-namespace OrthancStone
-{
-  class RadiographyScene;
-
-  enum RadiographyControlPointType
-  {
-    RadiographyControlPointType_TopLeftCorner = 0,
-    RadiographyControlPointType_TopRightCorner = 1,
-    RadiographyControlPointType_BottomRightCorner = 2,
-    RadiographyControlPointType_BottomLeftCorner = 3
-  };
-
-  enum RadiographyPhotometricDisplayMode
-  {
-    RadiographyPhotometricDisplayMode_Default,
-
-    RadiographyPhotometricDisplayMode_Monochrome1,
-    RadiographyPhotometricDisplayMode_Monochrome2
-  };
-
-  
-  struct ControlPoint
-  {
-    double x;
-    double y;
-    size_t index;
-
-    ControlPoint(double x, double y, size_t index)
-      : x(x),
-        y(y),
-        index(index)
-    {}
-
-    ControlPoint()
-      : x(0),
-        y(0),
-        index(std::numeric_limits<size_t>::max())
-    {}
-  };
-
-  class RadiographyLayer : public IObservable
-  {
-    friend class RadiographyScene;
-
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, LayerEditedMessage, RadiographyLayer);
-
-    class Geometry
-    {
-      bool               hasCrop_;
-      unsigned int       cropX_;
-      unsigned int       cropY_;
-      unsigned int       cropWidth_;
-      unsigned int       cropHeight_;
-      bool               flipVertical_;
-      bool               flipHorizontal_;
-      double             panX_;
-      double             panY_;
-      double             angle_;
-      bool               resizeable_;
-      double             pixelSpacingX_;
-      double             pixelSpacingY_;
-
-    public:
-      Geometry();
-
-      void ResetCrop()
-      {
-        hasCrop_ = false;
-      }
-
-      void SetCrop(unsigned int x,
-                   unsigned int y,
-                   unsigned int width,
-                   unsigned int height)
-      {
-        hasCrop_ = true;
-        cropX_ = x;
-        cropY_ = y;
-        cropWidth_ = width;
-        cropHeight_ = height;
-      }
-
-      bool HasCrop() const
-      {
-        return hasCrop_;
-      }
-
-      void GetCrop(unsigned int& x,
-                   unsigned int& y,
-                   unsigned int& width,
-                   unsigned int& height) const;
-
-      void SetAngle(double angle)
-      {
-        angle_ = angle;
-      }
-
-      double GetAngle() const
-      {
-        return angle_;
-      }
-
-      void SetPan(double x,
-                  double y)
-      {
-        panX_ = x;
-        panY_ = y;
-      }
-
-      double GetPanX() const
-      {
-        return panX_;
-      }
-
-      double GetPanY() const
-      {
-        return panY_;
-      }
-
-      bool IsResizeable() const
-      {
-        return resizeable_;
-      }
-
-      void SetResizeable(bool resizeable)
-      {
-        resizeable_ = resizeable;
-      }
-
-      void SetPixelSpacing(double x,
-                           double y)
-      {
-        pixelSpacingX_ = x;
-        pixelSpacingY_ = y;
-      }
-
-      double GetPixelSpacingX() const
-      {
-        return pixelSpacingX_;
-      }
-
-      double GetPixelSpacingY() const
-      {
-        return pixelSpacingY_;
-      }
-
-      void SetFlipVertical(bool flip) //  mirrors image around an horizontal axis (note: flip is applied before the rotation !)
-      {
-        flipVertical_ = flip;
-      }
-
-      void SetFlipHorizontal(bool flip) //  mirrors image around a vertical axis (note: flip is applied before the rotation !)
-      {
-        flipHorizontal_ = flip;
-      }
-
-      bool GetFlipVertical() const
-      {
-        return flipVertical_;
-      }
-
-      bool GetFlipHorizontal() const
-      {
-        return flipHorizontal_;
-      }
-
-      double GetScalingX() const
-      {
-        return (flipHorizontal_ ? - pixelSpacingX_: pixelSpacingX_);
-      }
-
-      double GetScalingY() const
-      {
-        return (flipVertical_ ? - pixelSpacingY_: pixelSpacingY_);
-      }
-    };
-
-  private:
-    size_t             index_;
-    bool               hasSize_;
-    unsigned int       width_;
-    unsigned int       height_;
-    AffineTransform2D  transform_;
-    AffineTransform2D  transformInverse_;
-    Geometry           geometry_;
-    RadiographyPhotometricDisplayMode  prefferedPhotometricDisplayMode_;
-    const RadiographyScene&   scene_;
-
-  protected:
-    void SetPreferredPhotomotricDisplayMode(RadiographyPhotometricDisplayMode  prefferedPhotometricDisplayMode);
-
-  private:
-    void UpdateTransform();
-
-    void AddToExtent(Extent2D& extent,
-                     double x,
-                     double y) const;
-
-    void SetIndex(size_t index)
-    {
-      index_ = index;
-    }
-
-    bool Contains(double x,
-                  double y) const;
-
-    void DrawBorders(CairoContext& context,
-                     double zoom);
-
-  public:
-    RadiographyLayer(const RadiographyScene& scene);
-
-    virtual ~RadiographyLayer()
-    {
-    }
-
-    virtual const AffineTransform2D& GetTransform() const
-    {
-      return transform_;
-    }
-
-    virtual const AffineTransform2D& GetTransformInverse() const
-    {
-      return transformInverse_;
-    }
-
-    size_t GetIndex() const
-    {
-      return index_;
-    }
-
-    const RadiographyScene& GetScene() const
-    {
-      return scene_;
-    }
-
-    const Geometry& GetGeometry() const
-    {
-      return geometry_;
-    }
-
-    void SetGeometry(const Geometry& geometry);
-
-    void ResetCrop();
-
-    void SetCrop(unsigned int x,       // those are pixel coordinates/size
-                 unsigned int y,
-                 unsigned int width,
-                 unsigned int height);
-
-    void SetCrop(const Extent2D& sceneExtent)
-    {
-      Extent2D imageCrop;
-
-      {
-        double x = sceneExtent.GetX1();
-        double y = sceneExtent.GetY1();
-        GetTransformInverse().Apply(x, y);
-        imageCrop.AddPoint(x, y);
-      }
-
-      {
-        double x = sceneExtent.GetX2();
-        double y = sceneExtent.GetY2();
-        GetTransformInverse().Apply(x, y);
-        imageCrop.AddPoint(x, y);
-      }
-
-      SetCrop(static_cast<unsigned int>(std::max(0.0, std::floor(imageCrop.GetX1()))),
-              static_cast<unsigned int>(std::max(0.0, std::floor(imageCrop.GetY1()))),
-              std::min(width_, static_cast<unsigned int>(std::ceil(imageCrop.GetWidth()))),
-              std::min(height_, static_cast<unsigned int>(std::ceil(imageCrop.GetHeight())))
-              );
-    }
-
-
-    void GetCrop(unsigned int& x,
-                 unsigned int& y,
-                 unsigned int& width,
-                 unsigned int& height) const;
-
-    void SetAngle(double angle);
-
-    void SetPan(double x,
-                double y);
-
-    void SetFlipVertical(bool flip); //  mirrors image around an horizontal axis (note: flip is applied before the rotation !)
-
-    void SetFlipHorizontal(bool flip); //  mirrors image around a vertical axis (note: flip is applied before the rotation !)
-
-    void SetResizeable(bool resizeable)
-    {
-      geometry_.SetResizeable(resizeable);
-    }
-
-    void SetSize(unsigned int width,
-                 unsigned int height,
-                 bool emitLayerEditedEvent = true);
-
-    bool HasSize() const
-    {
-      return hasSize_;
-    }
-
-    unsigned int GetWidth() const
-    {
-      return width_;
-    }
-
-    unsigned int GetHeight() const
-    {
-      return height_;
-    }
-
-    virtual Extent2D GetSceneExtent(bool minimal) const;
-
-    virtual bool GetPixel(unsigned int& imageX,
-                          unsigned int& imageY,
-                          double sceneX,
-                          double sceneY) const;
-
-    void SetPixelSpacing(double x,
-                         double y,
-                         bool emitLayerEditedEvent = true);
-
-    void GetCenter(double& centerX,
-                   double& centerY) const;
-
-    virtual void GetControlPoint(ControlPoint& cpScene /* out in scene coordinates */,
-                                 size_t index) const;
-
-    virtual size_t GetControlPointCount() const;
-
-    bool LookupControlPoint(ControlPoint& cpScene /* out */,
-                            double x,
-                            double y,
-                            double zoom,
-                            double viewportDistance) const;
-
-    virtual bool GetDefaultWindowing(float& center,
-                                     float& width) const = 0;
-
-    RadiographyPhotometricDisplayMode GetPreferredPhotomotricDisplayMode() const
-    {
-      return prefferedPhotometricDisplayMode_;
-    }
-
-    virtual void Render(Orthanc::ImageAccessor& buffer,
-                        const AffineTransform2D& viewTransform,
-                        ImageInterpolation interpolation,
-                        float windowCenter,
-                        float windowWidth,
-                        bool applyWindowing) const = 0;
-
-    virtual bool GetRange(float& minValue,
-                          float& maxValue) const = 0;
-
-    virtual size_t GetApproximateMemoryUsage() const // this is used to limit the number of scenes loaded in RAM when resources are limited (we actually only count the size used by the images, not the C structs)
-    {
-      return 0;
-    }
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayerCropTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyLayerCropTracker.h"
-
-#include "RadiographySceneCommand.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  class RadiographyLayerCropTracker::UndoRedoCommand : public RadiographySceneCommand
-  {
-  private:
-    unsigned int  sourceCropX_;
-    unsigned int  sourceCropY_;
-    unsigned int  sourceCropWidth_;
-    unsigned int  sourceCropHeight_;
-    unsigned int  targetCropX_;
-    unsigned int  targetCropY_;
-    unsigned int  targetCropWidth_;
-    unsigned int  targetCropHeight_;
-
-  protected:
-    virtual void UndoInternal(RadiographyLayer& layer) const
-    {
-      layer.SetCrop(sourceCropX_, sourceCropY_, sourceCropWidth_, sourceCropHeight_);
-    }
-
-    virtual void RedoInternal(RadiographyLayer& layer) const
-    {
-      layer.SetCrop(targetCropX_, targetCropY_, targetCropWidth_, targetCropHeight_);
-    }
-
-  public:
-    UndoRedoCommand(const RadiographyLayerCropTracker& tracker) :
-      RadiographySceneCommand(tracker.accessor_),
-      sourceCropX_(tracker.cropX_),
-      sourceCropY_(tracker.cropY_),
-      sourceCropWidth_(tracker.cropWidth_),
-      sourceCropHeight_(tracker.cropHeight_)
-    {
-      tracker.accessor_.GetLayer().GetCrop(targetCropX_, targetCropY_,
-                                           targetCropWidth_, targetCropHeight_);
-    }
-  };
-
-
-  RadiographyLayerCropTracker::RadiographyLayerCropTracker(UndoRedoStack& undoRedoStack,
-                                                           RadiographyScene& scene,
-                                                           const Deprecated::ViewportGeometry& view,
-                                                           size_t layer,
-                                                           const ControlPoint& startControlPoint) :
-    undoRedoStack_(undoRedoStack),
-    accessor_(scene, layer),
-    startControlPoint_(startControlPoint)
-  {
-    if (accessor_.IsValid())
-    {
-      accessor_.GetLayer().GetCrop(cropX_, cropY_, cropWidth_, cropHeight_);
-    }
-  }
-
-
-  void RadiographyLayerCropTracker::Render(CairoContext& context,
-                                           double zoom)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-
-
-  void RadiographyLayerCropTracker::MouseUp()
-  {
-    if (accessor_.IsValid())
-    {
-      undoRedoStack_.Add(new UndoRedoCommand(*this));
-    }
-  }
-
-  
-  void RadiographyLayerCropTracker::MouseMove(int displayX,
-                                              int displayY,
-                                              double sceneX,
-                                              double sceneY,
-                                              const std::vector<Deprecated::Touch>& displayTouches,
-                                              const std::vector<Deprecated::Touch>& sceneTouches)
-  {
-    if (accessor_.IsValid())
-    {
-      unsigned int x, y;
-        
-      RadiographyLayer& layer = accessor_.GetLayer();
-      if (layer.GetPixel(x, y, sceneX, sceneY))
-      {
-        unsigned int targetX, targetWidth;
-
-        if (startControlPoint_.index == RadiographyControlPointType_TopLeftCorner ||
-            startControlPoint_.index == RadiographyControlPointType_BottomLeftCorner)
-        {
-          targetX = std::min(x, cropX_ + cropWidth_);
-          targetWidth = cropX_ + cropWidth_ - targetX;
-        }
-        else
-        {
-          targetX = cropX_;
-          targetWidth = std::max(x, cropX_) - cropX_;
-        }
-
-        unsigned int targetY, targetHeight;
-
-        if (startControlPoint_.index == RadiographyControlPointType_TopLeftCorner ||
-            startControlPoint_.index == RadiographyControlPointType_TopRightCorner)
-        {
-          targetY = std::min(y, cropY_ + cropHeight_);
-          targetHeight = cropY_ + cropHeight_ - targetY;
-        }
-        else
-        {
-          targetY = cropY_;
-          targetHeight = std::max(y, cropY_) - cropY_;
-        }
-
-        layer.SetCrop(targetX, targetY, targetWidth, targetHeight);
-      }
-    }
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayerCropTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/UndoRedoStack.h"
-#include "../Deprecated/Toolbox/ViewportGeometry.h"
-#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
-#include "RadiographyScene.h"
-
-namespace OrthancStone
-{
-  class RadiographyLayerCropTracker : public Deprecated::IWorldSceneMouseTracker
-  {
-  private:
-    class UndoRedoCommand;
-
-    UndoRedoStack&                   undoRedoStack_;
-    RadiographyScene::LayerAccessor  accessor_;
-    ControlPoint                     startControlPoint_;
-    unsigned int                     cropX_;
-    unsigned int                     cropY_;
-    unsigned int                     cropWidth_;
-    unsigned int                     cropHeight_;
-
-  public:
-    RadiographyLayerCropTracker(UndoRedoStack& undoRedoStack,
-                                RadiographyScene& scene,
-                                const Deprecated::ViewportGeometry& view,
-                                size_t layer,
-                                const ControlPoint& startControlPoint);
-
-    virtual bool HasRender() const
-    {
-      return false;
-    }
-
-    virtual void Render(CairoContext& context,
-                        double zoom);
-
-    virtual void MouseUp();
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double sceneX,
-                           double sceneY,
-                           const std::vector<Deprecated::Touch>& displayTouches,
-                           const std::vector<Deprecated::Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayerMaskTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyLayerMaskTracker.h"
-#include "RadiographyMaskLayer.h"
-
-#include "RadiographySceneCommand.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  class RadiographyLayerMaskTracker::UndoRedoCommand : public RadiographySceneCommand
-  {
-  private:
-    ControlPoint sourceSceneCp_;
-    ControlPoint targetSceneCp_;
-
-  protected:
-    virtual void UndoInternal(RadiographyLayer& layer) const
-    {
-      RadiographyMaskLayer* maskLayer = dynamic_cast<RadiographyMaskLayer*>(&layer);
-      if (maskLayer == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-      unsigned int ix, iy; // image coordinates
-      if (maskLayer->GetPixel(ix, iy, sourceSceneCp_.x, sourceSceneCp_.y))
-      {
-        maskLayer->SetCorner(Orthanc::ImageProcessing::ImagePoint((int32_t)ix, (int32_t)iy), sourceSceneCp_.index);
-      }
-    }
-
-    virtual void RedoInternal(RadiographyLayer& layer) const
-    {
-      RadiographyMaskLayer* maskLayer = dynamic_cast<RadiographyMaskLayer*>(&layer);
-      if (maskLayer == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-      unsigned int ix, iy; // image coordinates
-      if (maskLayer->GetPixel(ix, iy, targetSceneCp_.x, targetSceneCp_.y))
-      {
-        maskLayer->SetCorner(Orthanc::ImageProcessing::ImagePoint((int32_t)ix, (int32_t)iy), targetSceneCp_.index);
-      }
-    }
-
-  public:
-    UndoRedoCommand(const RadiographyLayerMaskTracker& tracker) :
-      RadiographySceneCommand(tracker.accessor_),
-      sourceSceneCp_(tracker.startSceneCp_),
-      targetSceneCp_(tracker.endSceneCp_)
-    {
-      RadiographyMaskLayer* maskLayer = dynamic_cast<RadiographyMaskLayer*>(&(tracker.accessor_.GetLayer()));
-      if (maskLayer == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-      unsigned int ix, iy; // image coordinates
-      if (maskLayer->GetPixel(ix, iy, targetSceneCp_.x, targetSceneCp_.y))
-      {
-        maskLayer->SetCorner(Orthanc::ImageProcessing::ImagePoint((int32_t)ix, (int32_t)iy), targetSceneCp_.index);
-      }
-    }
-  };
-
-
-  RadiographyLayerMaskTracker::RadiographyLayerMaskTracker(UndoRedoStack& undoRedoStack,
-                                                           RadiographyScene& scene,
-                                                           const Deprecated::ViewportGeometry& view,
-                                                           size_t layer,
-                                                           const ControlPoint& startSceneControlPoint) :
-    undoRedoStack_(undoRedoStack),
-    accessor_(scene, layer),
-    startSceneCp_(startSceneControlPoint),
-    endSceneCp_(startSceneControlPoint)
-  {
-  }
-
-
-  void RadiographyLayerMaskTracker::Render(CairoContext& context,
-                                           double zoom)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-
-
-  void RadiographyLayerMaskTracker::MouseUp()
-  {
-    if (accessor_.IsValid() && startSceneCp_.x != endSceneCp_.x && startSceneCp_.y != endSceneCp_.y)
-    {
-      undoRedoStack_.Add(new UndoRedoCommand(*this));
-    }
-  }
-
-  
-  void RadiographyLayerMaskTracker::MouseMove(int displayX,
-                                              int displayY,
-                                              double sceneX,
-                                              double sceneY,
-                                              const std::vector<Deprecated::Touch>& displayTouches,
-                                              const std::vector<Deprecated::Touch>& sceneTouches)
-  {
-    if (accessor_.IsValid())
-    {
-      unsigned int ix, iy; // image coordinates
-
-      RadiographyLayer& layer = accessor_.GetLayer();
-      if (layer.GetPixel(ix, iy, sceneX, sceneY))
-      {
-        endSceneCp_ = ControlPoint(sceneX, sceneY, startSceneCp_.index);
-
-        RadiographyMaskLayer* maskLayer = dynamic_cast<RadiographyMaskLayer*>(&layer);
-        if (maskLayer == NULL)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-        }
-        maskLayer->SetCorner(Orthanc::ImageProcessing::ImagePoint((int32_t)ix, (int32_t)iy), startSceneCp_.index);
-      }
-    }
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayerMaskTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/UndoRedoStack.h"
-#include "../Deprecated/Toolbox/ViewportGeometry.h"
-#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
-#include "RadiographyScene.h"
-
-namespace OrthancStone
-{
-  class RadiographyLayerMaskTracker : public Deprecated::IWorldSceneMouseTracker
-  {
-  private:
-    class UndoRedoCommand;
-
-    UndoRedoStack&                   undoRedoStack_;
-    RadiographyScene::LayerAccessor  accessor_;
-    ControlPoint                     startSceneCp_;
-    ControlPoint                     endSceneCp_;
-
-  public:
-    RadiographyLayerMaskTracker(UndoRedoStack& undoRedoStack,
-                                RadiographyScene& scene,
-                                const Deprecated::ViewportGeometry& view,
-                                size_t layer,
-                                const ControlPoint& startSceneControlPoint);
-
-    virtual bool HasRender() const
-    {
-      return false;
-    }
-
-    virtual void Render(CairoContext& context,
-                        double zoom);
-
-    virtual void MouseUp();
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double sceneX,
-                           double sceneY,
-                           const std::vector<Deprecated::Touch>& displayTouches,
-                           const std::vector<Deprecated::Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayerMoveTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyLayerMoveTracker.h"
-
-#include "RadiographySceneCommand.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  class RadiographyLayerMoveTracker::UndoRedoCommand : public RadiographySceneCommand
-  {
-  private:
-    double  sourceX_;
-    double  sourceY_;
-    double  targetX_;
-    double  targetY_;
-
-  protected:
-    virtual void UndoInternal(RadiographyLayer& layer) const
-    {
-      layer.SetPan(sourceX_, sourceY_);
-    }
-
-    virtual void RedoInternal(RadiographyLayer& layer) const
-    {
-      layer.SetPan(targetX_, targetY_);
-    }
-
-  public:
-    UndoRedoCommand(const RadiographyLayerMoveTracker& tracker) :
-      RadiographySceneCommand(tracker.accessor_),
-      sourceX_(tracker.panX_),
-      sourceY_(tracker.panY_),
-      targetX_(tracker.accessor_.GetLayer().GetGeometry().GetPanX()),
-      targetY_(tracker.accessor_.GetLayer().GetGeometry().GetPanY())
-    {
-    }
-  };
-
-
-  RadiographyLayerMoveTracker::RadiographyLayerMoveTracker(UndoRedoStack& undoRedoStack,
-                                                           RadiographyScene& scene,
-                                                           size_t layer,
-                                                           double x,
-                                                           double y,
-                                                           bool oneAxis) :
-    undoRedoStack_(undoRedoStack),
-    accessor_(scene, layer),
-    clickX_(x),
-    clickY_(y),
-    oneAxis_(oneAxis)
-  {
-    if (accessor_.IsValid())
-    {
-      panX_ = accessor_.GetLayer().GetGeometry().GetPanX();
-      panY_ = accessor_.GetLayer().GetGeometry().GetPanY();
-    }
-  }
-
-
-  void RadiographyLayerMoveTracker::Render(CairoContext& context,
-                                           double zoom)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-
-  
-  void RadiographyLayerMoveTracker::MouseUp()
-  {
-    if (accessor_.IsValid())
-    {
-      undoRedoStack_.Add(new UndoRedoCommand(*this));
-    }
-  }
-
-  
-  void RadiographyLayerMoveTracker::MouseMove(int displayX,
-                                              int displayY,
-                                              double sceneX,
-                                              double sceneY,
-                                              const std::vector<Deprecated::Touch>& displayTouches,
-                                              const std::vector<Deprecated::Touch>& sceneTouches)
-  {
-    if (accessor_.IsValid())
-    {
-      double dx = sceneX - clickX_;
-      double dy = sceneY - clickY_;
-
-      if (oneAxis_)
-      {
-        if (fabs(dx) > fabs(dy))
-        {
-          accessor_.GetLayer().SetPan(dx + panX_, panY_);
-        }
-        else
-        {
-          accessor_.GetLayer().SetPan(panX_, dy + panY_);
-        }
-      }
-      else
-      {
-        accessor_.GetLayer().SetPan(dx + panX_, dy + panY_);
-      }
-    }
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayerMoveTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/UndoRedoStack.h"
-#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
-#include "RadiographyScene.h"
-
-namespace OrthancStone
-{
-  class RadiographyLayerMoveTracker : public Deprecated::IWorldSceneMouseTracker
-  {
-  private:
-    class UndoRedoCommand;
-    
-    UndoRedoStack&                   undoRedoStack_;
-    RadiographyScene::LayerAccessor  accessor_;
-    double                           clickX_;
-    double                           clickY_;
-    double                           panX_;
-    double                           panY_;
-    bool                             oneAxis_;
-
-  public:
-    RadiographyLayerMoveTracker(UndoRedoStack& undoRedoStack,
-                                RadiographyScene& scene,
-                                size_t layer,
-                                double x,
-                                double y,
-                                bool oneAxis);
-
-    virtual bool HasRender() const
-    {
-      return false;
-    }
-
-    virtual void Render(CairoContext& context,
-                        double zoom);
-
-    virtual void MouseUp();
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double sceneX,
-                           double sceneY,
-                           const std::vector<Deprecated::Touch>& displayTouches,
-                           const std::vector<Deprecated::Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayerResizeTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyLayerResizeTracker.h"
-
-#include "RadiographySceneCommand.h"
-
-#include <OrthancException.h>
-
-#include <boost/math/special_functions/round.hpp>
-
-
-namespace OrthancStone
-{
-  static double ComputeDistance(double x1,
-                                double y1,
-                                double x2,
-                                double y2)
-  {
-    double dx = x1 - x2;
-    double dy = y1 - y2;
-    return sqrt(dx * dx + dy * dy);
-  }
-      
-
-  class RadiographyLayerResizeTracker::UndoRedoCommand : public RadiographySceneCommand
-  {
-  private:
-    double   sourceSpacingX_;
-    double   sourceSpacingY_;
-    double   sourcePanX_;
-    double   sourcePanY_;
-    double   targetSpacingX_;
-    double   targetSpacingY_;
-    double   targetPanX_;
-    double   targetPanY_;
-
-  protected:
-    virtual void UndoInternal(RadiographyLayer& layer) const
-    {
-      layer.SetPixelSpacing(sourceSpacingX_, sourceSpacingY_);
-      layer.SetPan(sourcePanX_, sourcePanY_);
-    }
-
-    virtual void RedoInternal(RadiographyLayer& layer) const
-    {
-      layer.SetPixelSpacing(targetSpacingX_, targetSpacingY_);
-      layer.SetPan(targetPanX_, targetPanY_);
-    }
-
-  public:
-    UndoRedoCommand(const RadiographyLayerResizeTracker& tracker) :
-      RadiographySceneCommand(tracker.accessor_),
-      sourceSpacingX_(tracker.originalSpacingX_),
-      sourceSpacingY_(tracker.originalSpacingY_),
-      sourcePanX_(tracker.originalPanX_),
-      sourcePanY_(tracker.originalPanY_),
-      targetSpacingX_(tracker.accessor_.GetLayer().GetGeometry().GetPixelSpacingX()),
-      targetSpacingY_(tracker.accessor_.GetLayer().GetGeometry().GetPixelSpacingY()),
-      targetPanX_(tracker.accessor_.GetLayer().GetGeometry().GetPanX()),
-      targetPanY_(tracker.accessor_.GetLayer().GetGeometry().GetPanY())
-    {
-    }
-  };
-
-
-  RadiographyLayerResizeTracker::RadiographyLayerResizeTracker(UndoRedoStack& undoRedoStack,
-                                                               RadiographyScene& scene,
-                                                               size_t layer,
-                                                               const ControlPoint& startControlPoint,
-                                                               bool roundScaling) :
-    undoRedoStack_(undoRedoStack),
-    accessor_(scene, layer),
-    roundScaling_(roundScaling)
-  {
-    if (accessor_.IsValid() &&
-        accessor_.GetLayer().GetGeometry().IsResizeable())
-    {
-      originalSpacingX_ = accessor_.GetLayer().GetGeometry().GetPixelSpacingX();
-      originalSpacingY_ = accessor_.GetLayer().GetGeometry().GetPixelSpacingY();
-      originalPanX_ = accessor_.GetLayer().GetGeometry().GetPanX();
-      originalPanY_ = accessor_.GetLayer().GetGeometry().GetPanY();
-
-      size_t oppositeControlPointType;
-      switch (startControlPoint.index)
-      {
-        case RadiographyControlPointType_TopLeftCorner:
-          oppositeControlPointType = RadiographyControlPointType_BottomRightCorner;
-          break;
-
-        case RadiographyControlPointType_TopRightCorner:
-          oppositeControlPointType = RadiographyControlPointType_BottomLeftCorner;
-          break;
-
-        case RadiographyControlPointType_BottomLeftCorner:
-          oppositeControlPointType = RadiographyControlPointType_TopRightCorner;
-          break;
-
-        case RadiographyControlPointType_BottomRightCorner:
-          oppositeControlPointType = RadiographyControlPointType_TopLeftCorner;
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      accessor_.GetLayer().GetControlPoint(startOppositeControlPoint_, oppositeControlPointType);
-
-      double d = ComputeDistance(startControlPoint.x, startControlPoint.y, startOppositeControlPoint_.x, startOppositeControlPoint_.y);
-      if (d >= std::numeric_limits<float>::epsilon())
-      {
-        baseScaling_ = 1.0 / d;
-      }
-      else
-      {
-        // Avoid division by zero in extreme cases
-        accessor_.Invalidate();
-      }
-    }
-  }
-
-
-  void RadiographyLayerResizeTracker::Render(CairoContext& context,
-                                             double zoom)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-
-
-  void RadiographyLayerResizeTracker::MouseUp()
-  {
-    if (accessor_.IsValid() &&
-        accessor_.GetLayer().GetGeometry().IsResizeable())
-    {
-      undoRedoStack_.Add(new UndoRedoCommand(*this));
-    }
-  }
-
-  
-  void RadiographyLayerResizeTracker::MouseMove(int displayX,
-                                                int displayY,
-                                                double sceneX,
-                                                double sceneY,
-                                                const std::vector<Deprecated::Touch>& displayTouches,
-                                                const std::vector<Deprecated::Touch>& sceneTouches)
-  {
-    static const double ROUND_SCALING = 0.1;
-        
-    if (accessor_.IsValid() &&
-        accessor_.GetLayer().GetGeometry().IsResizeable())
-    {
-      double scaling = ComputeDistance(startOppositeControlPoint_.x, startOppositeControlPoint_.y, sceneX, sceneY) * baseScaling_;
-
-      if (roundScaling_)
-      {
-        scaling = boost::math::round<double>((scaling / ROUND_SCALING) * ROUND_SCALING);
-      }
-          
-      RadiographyLayer& layer = accessor_.GetLayer();
-      layer.SetPixelSpacing(scaling * originalSpacingX_,
-                            scaling * originalSpacingY_);
-
-      // Keep the opposite corner at a fixed location
-      ControlPoint currentOppositeCorner;
-      layer.GetControlPoint(currentOppositeCorner, startOppositeControlPoint_.index);
-      layer.SetPan(layer.GetGeometry().GetPanX() + startOppositeControlPoint_.x - currentOppositeCorner.x,
-                   layer.GetGeometry().GetPanY() + startOppositeControlPoint_.y - currentOppositeCorner.y);
-    }
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayerResizeTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/UndoRedoStack.h"
-#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
-#include "RadiographyScene.h"
-
-namespace OrthancStone
-{
-  class RadiographyLayerResizeTracker : public Deprecated::IWorldSceneMouseTracker
-  {
-  private:
-    class UndoRedoCommand;
-
-    UndoRedoStack&                   undoRedoStack_;
-    RadiographyScene::LayerAccessor  accessor_;
-    bool                             roundScaling_;
-    double                           originalSpacingX_;
-    double                           originalSpacingY_;
-    double                           originalPanX_;
-    double                           originalPanY_;
-    ControlPoint                     startOppositeControlPoint_;
-    double                           baseScaling_;
-
-  public:
-    RadiographyLayerResizeTracker(UndoRedoStack& undoRedoStack,
-                                  RadiographyScene& scene,
-                                  size_t layer,
-                                  const ControlPoint& startControlPoint,
-                                  bool roundScaling);
-
-    virtual bool HasRender() const
-    {
-      return false;
-    }
-
-    virtual void Render(CairoContext& context,
-                        double zoom);
-
-    virtual void MouseUp();
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double sceneX,
-                           double sceneY,
-                           const std::vector<Deprecated::Touch>& displayTouches,
-                           const std::vector<Deprecated::Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayerRotateTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyLayerRotateTracker.h"
-
-#include "RadiographySceneCommand.h"
-
-#include <OrthancException.h>
-
-#include <boost/math/constants/constants.hpp>
-#include <boost/math/special_functions/round.hpp>
-
-namespace OrthancStone
-{
-  class RadiographyLayerRotateTracker::UndoRedoCommand : public RadiographySceneCommand
-  {
-  private:
-    double  sourceAngle_;
-    double  targetAngle_;
-
-    static int ToDegrees(double angle)
-    {
-      return boost::math::iround(angle * 180.0 / boost::math::constants::pi<double>());
-    }
-      
-  protected:
-    virtual void UndoInternal(RadiographyLayer& layer) const
-    {
-      LOG(INFO) << "Undo - Set angle to " << ToDegrees(sourceAngle_) << " degrees";
-      layer.SetAngle(sourceAngle_);
-    }
-
-    virtual void RedoInternal(RadiographyLayer& layer) const
-    {
-      LOG(INFO) << "Redo - Set angle to " << ToDegrees(sourceAngle_) << " degrees";
-      layer.SetAngle(targetAngle_);
-    }
-
-  public:
-    UndoRedoCommand(const RadiographyLayerRotateTracker& tracker) :
-      RadiographySceneCommand(tracker.accessor_),
-      sourceAngle_(tracker.originalAngle_),
-      targetAngle_(tracker.accessor_.GetLayer().GetGeometry().GetAngle())
-    {
-    }
-  };
-
-
-  bool RadiographyLayerRotateTracker::ComputeAngle(double& angle /* out */,
-                                                   double sceneX,
-                                                   double sceneY) const
-  {
-    Vector u;
-    LinearAlgebra::AssignVector(u, sceneX - centerX_, sceneY - centerY_);
-
-    double nu = boost::numeric::ublas::norm_2(u);
-
-    if (!LinearAlgebra::IsCloseToZero(nu))
-    {
-      u /= nu;
-      angle = atan2(u[1], u[0]);
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-  RadiographyLayerRotateTracker::RadiographyLayerRotateTracker(UndoRedoStack& undoRedoStack,
-                                                               RadiographyScene& scene,
-                                                               const Deprecated::ViewportGeometry& view,
-                                                               size_t layer,
-                                                               double x,
-                                                               double y,
-                                                               bool roundAngles) :
-    undoRedoStack_(undoRedoStack),
-    accessor_(scene, layer),
-    roundAngles_(roundAngles)
-  {
-    if (accessor_.IsValid())
-    {
-      accessor_.GetLayer().GetCenter(centerX_, centerY_);
-      originalAngle_ = accessor_.GetLayer().GetGeometry().GetAngle();
-
-      double sceneX, sceneY;
-      view.MapDisplayToScene(sceneX, sceneY, x, y);
-
-      if (!ComputeAngle(clickAngle_, x, y))
-      {
-        accessor_.Invalidate();
-      }
-    }
-  }
-
-
-  void RadiographyLayerRotateTracker::Render(CairoContext& context,
-                                             double zoom)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-
-
-  void RadiographyLayerRotateTracker::MouseUp()
-  {
-    if (accessor_.IsValid())
-    {
-      undoRedoStack_.Add(new UndoRedoCommand(*this));
-    }
-  }
-
-  
-  void RadiographyLayerRotateTracker::MouseMove(int displayX,
-                                                int displayY,
-                                                double sceneX,
-                                                double sceneY,
-                                                const std::vector<Deprecated::Touch>& displayTouches,
-                                                const std::vector<Deprecated::Touch>& sceneTouches)
-  {
-    static const double ROUND_ANGLE = 15.0 / 180.0 * boost::math::constants::pi<double>(); 
-        
-    double angle;
-        
-    if (accessor_.IsValid() &&
-        ComputeAngle(angle, sceneX, sceneY))
-    {
-      angle = angle - clickAngle_ + originalAngle_;
-
-      if (roundAngles_)
-      {
-        angle = boost::math::round<double>((angle / ROUND_ANGLE) * ROUND_ANGLE);
-      }
-          
-      accessor_.GetLayer().SetAngle(angle);
-    }
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographyLayerRotateTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/UndoRedoStack.h"
-#include "../Deprecated/Toolbox/ViewportGeometry.h"
-#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
-#include "RadiographyScene.h"
-
-
-namespace OrthancStone
-{
-  class RadiographyLayerRotateTracker : public Deprecated::IWorldSceneMouseTracker
-  {
-  private:
-    class UndoRedoCommand;
-
-    UndoRedoStack&                   undoRedoStack_;
-    RadiographyScene::LayerAccessor  accessor_;
-    double                           centerX_;
-    double                           centerY_;
-    double                           originalAngle_;
-    double                           clickAngle_;
-    bool                             roundAngles_;
-
-    bool ComputeAngle(double& angle /* out */,
-                      double sceneX,
-                      double sceneY) const;
-
-  public:
-    RadiographyLayerRotateTracker(UndoRedoStack& undoRedoStack,
-                                  RadiographyScene& scene,
-                                  const Deprecated::ViewportGeometry& view,
-                                  size_t layer,
-                                  double x,
-                                  double y,
-                                  bool roundAngles);
-
-    virtual bool HasRender() const
-    {
-      return false;
-    }
-
-    virtual void Render(CairoContext& context,
-                        double zoom);
-
-    virtual void MouseUp();
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double sceneX,
-                           double sceneY,
-                           const std::vector<Deprecated::Touch>& displayTouches,
-                           const std::vector<Deprecated::Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyMaskLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyMaskLayer.h"
-#include "RadiographyDicomLayer.h"
-
-#include "RadiographyScene.h"
-#include "../Toolbox/ImageGeometry.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  const unsigned char IN_MASK_VALUE = 0x77;
-  const unsigned char OUT_MASK_VALUE = 0xFF;
-
-  const AffineTransform2D& RadiographyMaskLayer::GetTransform() const
-  {
-    return dicomLayer_.GetTransform();
-  }
-
-  const AffineTransform2D& RadiographyMaskLayer::GetTransformInverse() const
-  {
-    return dicomLayer_.GetTransformInverse();
-  }
-
-  bool RadiographyMaskLayer::GetPixel(unsigned int& imageX,
-                        unsigned int& imageY,
-                        double sceneX,
-                        double sceneY) const
-  {
-    return dicomLayer_.GetPixel(imageX, imageY, sceneX, sceneY);
-  }
-
-  std::string RadiographyMaskLayer::GetInstanceId() const
-  {
-    return dicomLayer_.GetInstanceId();
-  }
-
-  void RadiographyMaskLayer::SetCorner(const Orthanc::ImageProcessing::ImagePoint& corner, size_t index)
-  {
-    if (index < corners_.size())
-      corners_[index] = corner;
-    else
-      corners_.push_back(corner);
-    invalidated_ = true;
-
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-  void RadiographyMaskLayer::SetCorners(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners)
-  {
-    corners_ = corners;
-    invalidated_ = true;
-
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
-  }
-
-  Extent2D RadiographyMaskLayer::GetSceneExtent(bool minimal) const
-  {
-    if (!minimal)
-    {
-      return RadiographyLayer::GetSceneExtent(minimal);
-    }
-    else
-    { // get the extent of the in-mask area
-      Extent2D sceneExtent;
-
-      for (std::vector<Orthanc::ImageProcessing::ImagePoint>::const_iterator corner = corners_.begin(); corner != corners_.end(); ++corner)
-      {
-        double x = static_cast<double>(corner->GetX());
-        double y = static_cast<double>(corner->GetY());
-
-        dicomLayer_.GetTransform().Apply(x, y);
-        sceneExtent.AddPoint(x, y);
-      }
-      return sceneExtent;
-    }
-  }
-
-
-
-  void RadiographyMaskLayer::Render(Orthanc::ImageAccessor& buffer,
-                                    const AffineTransform2D& viewTransform,
-                                    ImageInterpolation interpolation,
-                                    float windowCenter,
-                                    float windowWidth,
-                                    bool applyWindowing) const
-  {
-    if (dicomLayer_.GetWidth() == 0 || dicomLayer_.GetSourceImage() == NULL) // nothing to do if the DICOM layer is not displayed (or not loaded)
-      return;
-
-    if (invalidated_)
-    {
-      mask_.reset(new Orthanc::Image(Orthanc::PixelFormat_Grayscale8, dicomLayer_.GetWidth(), dicomLayer_.GetHeight(), false));
-
-      DrawMask();
-
-      invalidated_ = false;
-    }
-
-    {// rendering
-      if (buffer.GetFormat() != Orthanc::PixelFormat_Float32)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-      }
-
-      unsigned int cropX, cropY, cropWidth, cropHeight;
-      dicomLayer_.GetCrop(cropX, cropY, cropWidth, cropHeight);
-
-      const AffineTransform2D t = AffineTransform2D::Combine(
-            viewTransform, dicomLayer_.GetTransform(),
-            AffineTransform2D::CreateOffset(cropX, cropY));
-
-      Orthanc::ImageAccessor cropped;
-      mask_->GetRegion(cropped, cropX, cropY, cropWidth, cropHeight);
-
-      Orthanc::Image tmp(Orthanc::PixelFormat_Grayscale8, buffer.GetWidth(), buffer.GetHeight(), false);
-
-
-      unsigned int x1, y1, x2, y2;
-      if (!OrthancStone::GetProjectiveTransformExtent(x1, y1, x2, y2,
-                                                      t.GetHomogeneousMatrix(),
-                                                      cropped.GetWidth(),
-                                                      cropped.GetHeight(),
-                                                      buffer.GetWidth(),
-                                                      buffer.GetHeight()))
-      {
-        return;  // layer is outside the buffer
-      }
-
-      t.Apply(tmp, cropped, ImageInterpolation_Nearest, true /* clear */);
-
-      // we have observed vertical lines at the image border (probably due to bilinear filtering of the DICOM image when it is not aligned with the buffer pixels)
-      // -> draw the mask one line further on each side
-      if (x1 >= 1)
-      {
-        x1 = x1 - 1;
-      }
-      if (x2 < buffer.GetWidth() - 2)
-      {
-        x2 = x2 + 1;
-      }
-
-      // Blit
-      for (unsigned int y = y1; y <= y2; y++)
-      {
-        float *q = reinterpret_cast<float*>(buffer.GetRow(y)) + x1;
-        const uint8_t *p = reinterpret_cast<uint8_t*>(tmp.GetRow(y)) + x1;
-
-        for (unsigned int x = x1; x <= x2; x++, p++, q++)
-        {
-          if (*p != IN_MASK_VALUE)
-            *q = foreground_;
-          // else keep the underlying pixel value
-        }
-      }
-
-    }
-  }
-
-  void RadiographyMaskLayer::DrawMask() const
-  {
-    // first fill the complete image
-    Orthanc::ImageProcessing::Set(*mask_, OUT_MASK_VALUE);
-
-    // clip corners
-    std::vector<Orthanc::ImageProcessing::ImagePoint> clippedCorners;
-    for (size_t i = 0; i < corners_.size(); i++)
-    {
-      clippedCorners.push_back(corners_[i]);
-      clippedCorners[i].ClipTo(0, mask_->GetWidth() - 1, 0, mask_->GetHeight() - 1);
-    }
-
-    // fill mask
-    Orthanc::ImageProcessing::FillPolygon(*mask_, clippedCorners, IN_MASK_VALUE);
-
-  }
-
-}
--- a/Framework/Deprecated/Radiography/RadiographyMaskLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "RadiographyLayer.h"
-
-#include <Compatibility.h>
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-
-namespace OrthancStone
-{
-  class RadiographyScene;
-  class RadiographyDicomLayer;
-
-  class RadiographyMaskLayer : public RadiographyLayer
-  {
-  private:
-    std::vector<Orthanc::ImageProcessing::ImagePoint>            corners_;
-    const RadiographyDicomLayer&      dicomLayer_;
-    mutable bool                      invalidated_;
-    float                             foreground_;
-
-    mutable std::unique_ptr<Orthanc::ImageAccessor>  mask_;
-  public:
-    RadiographyMaskLayer(const RadiographyScene& scene, const RadiographyDicomLayer& dicomLayer,
-                         float foreground) :
-      RadiographyLayer(scene),
-      dicomLayer_(dicomLayer),
-      invalidated_(true),
-      foreground_(foreground)
-    {
-    }
-
-    virtual size_t GetApproximateMemoryUsage() const
-    {
-      size_t size = 0;
-      if (mask_.get() != NULL)
-      {
-        size += mask_->GetPitch() * mask_->GetHeight();
-      }
-
-      return size;
-    }
-
-
-    void SetCorners(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners);
-    void SetCorner(const Orthanc::ImageProcessing::ImagePoint& corner, size_t index);
-
-    const std::vector<Orthanc::ImageProcessing::ImagePoint>& GetCorners() const
-    {
-      return corners_;
-    }
-
-    float GetForeground() const
-    {
-      return foreground_;
-    }
-
-    virtual void Render(Orthanc::ImageAccessor& buffer,
-                        const AffineTransform2D& viewTransform,
-                        ImageInterpolation interpolation,
-                        float windowCenter,
-                        float windowWidth,
-                        bool applyWindowing) const;
-
-    std::string GetInstanceId() const;
-
-    virtual size_t GetControlPointCount() const
-    {
-      return corners_.size();
-    }
-
-    virtual void GetControlPoint(ControlPoint& cpScene,
-                                         size_t index) const
-    {
-      ControlPoint cp(corners_[index].GetX(), corners_[index].GetY(), index);
-
-      // transforms image coordinates into scene coordinates
-      GetTransform().Apply(cp.x, cp.y);
-      cpScene = cp;
-    }
-
-    virtual Extent2D GetSceneExtent(bool minimal) const;
-
-    virtual bool GetDefaultWindowing(float& center,
-                                     float& width) const
-    {
-      return false;
-    }
-
-    virtual bool GetRange(float& minValue,
-                          float& maxValue) const
-    {
-      minValue = 0;
-      maxValue = 0;
-
-      if (foreground_ < 0)
-      {
-        minValue = foreground_;
-      }
-
-      if (foreground_ > 0)
-      {
-        maxValue = foreground_;
-      }
-
-      return true;
-
-    }
-
-    virtual bool GetPixel(unsigned int& imageX,
-                          unsigned int& imageY,
-                          double sceneX,
-                          double sceneY) const;
-
-  protected:
-    virtual const AffineTransform2D& GetTransform() const;
-
-    virtual const AffineTransform2D& GetTransformInverse() const;
-
-
-  private:
-    void DrawMask() const;
-
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyScene.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,968 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyScene.h"
-
-#include "RadiographyAlphaLayer.h"
-#include "RadiographyDicomLayer.h"
-#include "RadiographyTextLayer.h"
-#include "RadiographyMaskLayer.h"
-#include "../Deprecated/Toolbox/DicomFrameConverter.h"
-#include "../Scene2D/CairoCompositor.h"
-#include "../Scene2D/FloatTextureSceneLayer.h"
-#include "../Scene2D/TextSceneLayer.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <Images/PamReader.h>
-#include <Images/PamWriter.h>
-#include <Images/PngWriter.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-#include <DicomDatasetReader.h>
-#include <FullOrthancDataset.h>
-
-#include <boost/math/special_functions/round.hpp>
-
-
-namespace OrthancStone
-{
-  RadiographyScene::LayerAccessor::LayerAccessor(RadiographyScene& scene,
-                                                 size_t index) :
-    scene_(scene),
-    index_(index)
-  {
-    Layers::iterator layer = scene.layers_.find(index);
-    if (layer == scene.layers_.end())
-    {
-      layer_ = NULL;
-    }
-    else
-    {
-      assert(layer->second != NULL);
-      layer_ = layer->second;
-    }
-  }
-
-
-  RadiographyScene::LayerAccessor::LayerAccessor(RadiographyScene& scene,
-                                                 double x,
-                                                 double y) :
-    scene_(scene),
-    index_(0)  // Dummy initialization
-  {
-    if (scene.LookupLayer(index_, x, y))
-    {
-      Layers::iterator layer = scene.layers_.find(index_);
-
-      if (layer == scene.layers_.end())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-      else
-      {
-        assert(layer->second != NULL);
-        layer_ = layer->second;
-      }
-    }
-    else
-    {
-      layer_ = NULL;
-    }
-  }
-
-
-  RadiographyScene& RadiographyScene::LayerAccessor::GetScene() const
-  {
-    if (IsValid())
-    {
-      return scene_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  size_t RadiographyScene::LayerAccessor::GetIndex() const
-  {
-    if (IsValid())
-    {
-      return index_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  
-  RadiographyLayer& RadiographyScene::LayerAccessor::GetLayer() const
-  {
-    if (IsValid())
-    {
-      return *layer_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  void RadiographyScene::_RegisterLayer(RadiographyLayer* layer)
-  {
-    std::unique_ptr<RadiographyLayer> raii(layer);
-
-    // LOG(INFO) << "Registering layer: " << countLayers_;
-
-    size_t index = nextLayerIndex_++;
-    raii->SetIndex(index);
-    layers_[index] = raii.release();
-  }
-
-  RadiographyLayer& RadiographyScene::RegisterLayer(RadiographyLayer* layer)
-  {
-    if (layer == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    _RegisterLayer(layer);
-
-    BroadcastMessage(GeometryChangedMessage(*this, *layer));
-    BroadcastMessage(ContentChangedMessage(*this, *layer));
-    Register<RadiographyLayer::LayerEditedMessage>(*layer, &RadiographyScene::OnLayerEdited);
-
-    return *layer;
-  }
-
-  size_t RadiographyScene::GetApproximateMemoryUsage() const
-  {
-    size_t size = 0;
-    for (Layers::const_iterator it = layers_.begin(); it != layers_.end(); it++)
-    {
-      size += it->second->GetApproximateMemoryUsage();
-    }
-    return size;
-  }
-
-  void RadiographyScene::OnLayerEdited(const RadiographyLayer::LayerEditedMessage& message)
-  {
-    BroadcastMessage(RadiographyScene::LayerEditedMessage(*this, message.GetOrigin()));
-  }
-
-  
-  RadiographyScene::RadiographyScene() :
-    nextLayerIndex_(0),
-    hasWindowing_(false),
-    windowingCenter_(0),  // Dummy initialization
-    windowingWidth_(0)    // Dummy initialization
-  {
-  }
-
-
-  RadiographyScene::~RadiographyScene()
-  {
-    for (Layers::iterator it = layers_.begin(); it != layers_.end(); it++)
-    {
-      assert(it->second != NULL);
-      delete it->second;
-    }
-  }
-
-  RadiographyPhotometricDisplayMode RadiographyScene::GetPreferredPhotomotricDisplayMode() const
-  {
-    // return the mode of the first layer who "cares" about its display mode (normaly, the one and only layer that is a DicomLayer)
-    for (Layers::const_iterator it = layers_.begin(); it != layers_.end(); it++)
-    {
-      if (it->second->GetPreferredPhotomotricDisplayMode() != RadiographyPhotometricDisplayMode_Default)
-      {
-        return it->second->GetPreferredPhotomotricDisplayMode();
-      }
-    }
-
-    return RadiographyPhotometricDisplayMode_Default;
-  }
-
-
-  void RadiographyScene::GetLayersIndexes(std::vector<size_t>& output) const
-  {
-    for (Layers::const_iterator it = layers_.begin(); it != layers_.end(); it++)
-    {
-      output.push_back(it->first);
-    }
-  }
-
-  void RadiographyScene::RemoveLayer(size_t layerIndex)
-  {
-    LOG(INFO) << "Removing layer: " << layerIndex;
-
-    Layers::iterator found = layers_.find(layerIndex);
-
-    if (found == layers_.end())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      assert(found->second != NULL);
-      delete found->second;
-      
-      layers_.erase(found);
-      
-      LOG(INFO) << "Removing layer, there are now : " << layers_.size() << " layers";
-
-      _OnLayerRemoved();
-
-      BroadcastMessage(RadiographyScene::LayerRemovedMessage(*this, layerIndex));
-    }
-  }
-
-  const RadiographyLayer& RadiographyScene::GetLayer(size_t layerIndex) const
-  {
-    Layers::const_iterator found = layers_.find(layerIndex);
-    
-    if (found == layers_.end())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      assert(found->second != NULL);
-      return *found->second;
-    }
-  }
-
-  RadiographyLayer& RadiographyScene::GetLayer(size_t layerIndex)
-  {
-    Layers::const_iterator found = layers_.find(layerIndex);
-
-    if (found == layers_.end())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      assert(found->second != NULL);
-      return *found->second;
-    }
-  }
-
-  bool RadiographyScene::GetWindowing(float& center,
-                                      float& width) const
-  {
-    if (hasWindowing_)
-    {
-      center = windowingCenter_;
-      width = windowingWidth_;
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-  void RadiographyScene::GetWindowingWithDefault(float& center,
-                                                 float& width) const
-  {
-    if (!GetWindowing(center, width))
-    {
-      center = 128;
-      width = 256;
-    }
-  }
-
-
-  void RadiographyScene::SetWindowing(float center,
-                                      float width)
-  {
-    hasWindowing_ = true;
-    windowingCenter_ = center;
-    windowingWidth_ = width;
-
-    BroadcastMessage(RadiographyScene::WindowingChangedMessage(*this));
-  }
-
-
-  RadiographyLayer& RadiographyScene::UpdateText(size_t layerIndex,
-                                                 const std::string& utf8,
-                                                 const std::string& font,
-                                                 unsigned int fontSize,
-                                                 uint8_t foreground)
-  {
-    RadiographyTextLayer& textLayer = dynamic_cast<RadiographyTextLayer&>(GetLayer(layerIndex));
-    textLayer.SetText(utf8, font, fontSize, foreground);
-
-    BroadcastMessage(RadiographyScene::ContentChangedMessage(*this, textLayer));
-    BroadcastMessage(RadiographyScene::LayerEditedMessage(*this, textLayer));
-    return textLayer;
-  }
-
-
-  RadiographyLayer& RadiographyScene::LoadText(const std::string& utf8,
-                                               const std::string& font,
-                                               unsigned int fontSize,
-                                               uint8_t foreground,
-                                               RadiographyLayer::Geometry* centerGeometry,
-                                               bool isCenterGeometry)
-  {
-    std::unique_ptr<RadiographyTextLayer>  alpha(new RadiographyTextLayer(*this));
-    alpha->SetText(utf8, font, fontSize, foreground);
-    if (centerGeometry != NULL)
-    {
-      if (isCenterGeometry)
-      {
-        // modify geometry to reference the top left corner
-        double tlx = centerGeometry->GetPanX();
-        double tly = centerGeometry->GetPanY();
-        Extent2D textExtent = alpha->GetSceneExtent(false);
-        tlx = tlx - (textExtent.GetWidth() / 2) * centerGeometry->GetPixelSpacingX();
-        tly = tly - (textExtent.GetHeight() / 2) * centerGeometry->GetPixelSpacingY();
-        centerGeometry->SetPan(tlx, tly);
-      }
-      alpha->SetGeometry(*centerGeometry);
-    }
-
-    RadiographyLayer& registeredLayer = RegisterLayer(alpha.release());
-
-    BroadcastMessage(RadiographyScene::LayerEditedMessage(*this, registeredLayer));
-    return registeredLayer;
-  }
-
-
-  RadiographyLayer& RadiographyScene::LoadTestBlock(unsigned int width,
-                                                    unsigned int height,
-                                                    RadiographyLayer::Geometry* geometry)
-  {
-    std::unique_ptr<Orthanc::Image>  block(new Orthanc::Image(Orthanc::PixelFormat_Grayscale8, width, height, false));
-
-    for (unsigned int padding = 0;
-         (width > 2 * padding) && (height > 2 * padding);
-         padding++)
-    {
-      uint8_t color;
-      if (255 > 10 * padding)
-      {
-        color = 255 - 10 * padding;
-      }
-      else
-      {
-        color = 0;
-      }
-
-      Orthanc::ImageAccessor region;
-      block->GetRegion(region, padding, padding, width - 2 * padding, height - 2 * padding);
-      Orthanc::ImageProcessing::Set(region, color);
-    }
-
-    return LoadAlphaBitmap(block.release(), geometry);
-  }
-
-  RadiographyLayer& RadiographyScene::LoadMask(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners,
-                                               const RadiographyDicomLayer& dicomLayer,
-                                               float foreground,
-                                               RadiographyLayer::Geometry* geometry)
-  {
-    std::unique_ptr<RadiographyMaskLayer>  mask(new RadiographyMaskLayer(*this, dicomLayer, foreground));
-    mask->SetCorners(corners);
-    if (geometry != NULL)
-    {
-      mask->SetGeometry(*geometry);
-    }
-
-    return RegisterLayer(mask.release());
-  }
-
-
-  RadiographyLayer& RadiographyScene::LoadAlphaBitmap(Orthanc::ImageAccessor* bitmap, RadiographyLayer::Geometry *geometry)
-  {
-    std::unique_ptr<RadiographyAlphaLayer>  alpha(new RadiographyAlphaLayer(*this));
-    alpha->SetAlpha(bitmap);
-    if (geometry != NULL)
-    {
-      alpha->SetGeometry(*geometry);
-    }
-
-    return RegisterLayer(alpha.release());
-  }
-
-  RadiographyLayer& RadiographyScene::LoadDicomImage(Orthanc::ImageAccessor* dicomImage, // takes ownership
-                                                     const std::string& instance,
-                                                     unsigned int frame,
-                                                     Deprecated::DicomFrameConverter* converter,  // takes ownership
-                                                     RadiographyPhotometricDisplayMode preferredPhotometricDisplayMode,
-                                                     RadiographyLayer::Geometry* geometry)
-  {
-    RadiographyDicomLayer& layer = dynamic_cast<RadiographyDicomLayer&>(RegisterLayer(new RadiographyDicomLayer(*this)));
-
-    layer.SetInstance(instance, frame);
-
-    if (geometry != NULL)
-    {
-      layer.SetGeometry(*geometry);
-    }
-
-    layer.SetDicomFrameConverter(converter);
-    layer.SetSourceImage(dicomImage);
-    layer.SetPreferredPhotomotricDisplayMode(preferredPhotometricDisplayMode);
-
-    return layer;
-  }
-
-  RadiographyLayer& RadiographyScene::LoadDicomFrame(Deprecated::OrthancApiClient& orthanc,
-                                                     const std::string& instance,
-                                                     unsigned int frame,
-                                                     bool httpCompression,
-                                                     RadiographyLayer::Geometry* geometry)
-  {
-    RadiographyDicomLayer& layer = dynamic_cast<RadiographyDicomLayer&>(RegisterLayer(new RadiographyDicomLayer( *this)));
-    layer.SetInstance(instance, frame);
-
-    if (geometry != NULL)
-    {
-      layer.SetGeometry(*geometry);
-    }
-
-    {
-      Deprecated::IWebService::HttpHeaders headers;
-      std::string uri = "/instances/" + instance + "/tags";
-
-      orthanc.GetBinaryAsync(
-            uri, headers,
-            new Deprecated::DeprecatedCallable<RadiographyScene, Deprecated::OrthancApiClient::BinaryResponseReadyMessage>
-            (GetSharedObserver(), &RadiographyScene::OnTagsReceived), NULL,
-            new Orthanc::SingleValueObject<size_t>(layer.GetIndex()));
-    }
-
-    {
-      Deprecated::IWebService::HttpHeaders headers;
-      headers["Accept"] = "image/x-portable-arbitrarymap";
-
-      if (httpCompression)
-      {
-        headers["Accept-Encoding"] = "gzip";
-      }
-
-      std::string uri = ("/instances/" + instance + "/frames/" +
-                         boost::lexical_cast<std::string>(frame) + "/image-uint16");
-
-      orthanc.GetBinaryAsync(
-            uri, headers,
-            new Deprecated::DeprecatedCallable<RadiographyScene, Deprecated::OrthancApiClient::BinaryResponseReadyMessage>
-            (GetSharedObserver(), &RadiographyScene::OnFrameReceived), NULL,
-            new Orthanc::SingleValueObject<size_t>(layer.GetIndex()));
-    }
-
-    return layer;
-  }
-
-
-  RadiographyLayer& RadiographyScene::LoadDicomWebFrame(Deprecated::IWebService& web)
-  {
-    RadiographyLayer& layer = RegisterLayer(new RadiographyDicomLayer(*this));
-
-
-    return layer;
-  }
-
-
-
-  void RadiographyScene::OnTagsReceived(const Deprecated::OrthancApiClient::BinaryResponseReadyMessage& message)
-  {
-    size_t index = dynamic_cast<const Orthanc::SingleValueObject<size_t>&>
-        (message.GetPayload()).GetValue();
-
-    VLOG(1) << "JSON received: " << message.GetUri().c_str()
-            << " (" << message.GetAnswerSize() << " bytes) for layer " << index;
-
-    Layers::iterator layer = layers_.find(index);
-    if (layer != layers_.end())
-    {
-      assert(layer->second != NULL);
-
-      OrthancPlugins::FullOrthancDataset dicom(message.GetAnswer(), message.GetAnswerSize());
-      dynamic_cast<RadiographyDicomLayer*>(layer->second)->SetDicomTags(dicom);
-
-      float c, w;
-      if (!hasWindowing_ &&
-          layer->second->GetDefaultWindowing(c, w))
-      {
-        hasWindowing_ = true;
-        windowingCenter_ = c;
-        windowingWidth_ = w;
-      }
-
-      BroadcastMessage(GeometryChangedMessage(*this, *(layer->second)));
-    }
-  }
-
-
-  void RadiographyScene::OnFrameReceived(const Deprecated::OrthancApiClient::BinaryResponseReadyMessage& message)
-  {
-    size_t index = dynamic_cast<const Orthanc::SingleValueObject<size_t>&>(message.GetPayload()).GetValue();
-
-    VLOG(1) << "DICOM frame received: " << message.GetUri().c_str()
-            << " (" << message.GetAnswerSize() << " bytes) for layer " << index;
-
-    Layers::iterator layer = layers_.find(index);
-    if (layer != layers_.end())
-    {
-      assert(layer->second != NULL);
-
-      std::string content;
-      if (message.GetAnswerSize() > 0)
-      {
-        content.assign(reinterpret_cast<const char*>(message.GetAnswer()), message.GetAnswerSize());
-      }
-
-      std::unique_ptr<Orthanc::PamReader> reader(new Orthanc::PamReader);
-      reader->ReadFromMemory(content);
-      dynamic_cast<RadiographyDicomLayer*>(layer->second)->SetSourceImage(reader.release());
-
-      BroadcastMessage(ContentChangedMessage(*this, *(layer->second)));
-    }
-  }
-
-
-  Extent2D RadiographyScene::GetSceneExtent(bool minimal) const
-  {
-    Extent2D extent;
-
-    for (Layers::const_iterator it = layers_.begin();
-         it != layers_.end(); ++it)
-    {
-      assert(it->second != NULL);
-      extent.Union(it->second->GetSceneExtent(minimal));
-    }
-
-    return extent;
-  }
-
-
-  void RadiographyScene::Render(Orthanc::ImageAccessor& buffer,
-                                const AffineTransform2D& viewTransform,
-                                ImageInterpolation interpolation,
-                                bool applyWindowing) const
-  {
-    // Render layers in the background-to-foreground order
-    for (size_t index = 0; index < nextLayerIndex_; index++)
-    {
-      try
-      {
-        Layers::const_iterator it = layers_.find(index);
-        if (it != layers_.end())
-        {
-          assert(it->second != NULL);
-          it->second->Render(buffer, viewTransform, interpolation, windowingCenter_, windowingWidth_, applyWindowing);
-        }
-      }
-      catch (Orthanc::OrthancException& ex)
-      {
-        LOG(ERROR) << "RadiographyScene::Render: " << index << ", OrthancException: " << ex.GetDetails();
-        throw ex; // rethrow because we want it to crash to see there's a problem !
-      }
-      catch (...)
-      {
-        LOG(ERROR) << "RadiographyScene::Render: " << index << ", unkown exception: ";
-        throw; // rethrow because we want it to crash to see there's a problem !
-      }
-    }
-  }
-
-
-  bool RadiographyScene::LookupLayer(size_t& index /* out */,
-                                     double x,
-                                     double y) const
-  {
-    // Render layers in the foreground-to-background order
-    for (size_t i = nextLayerIndex_; i > 0; i--)
-    {
-      index = i - 1;
-      Layers::const_iterator it = layers_.find(index);
-      if (it != layers_.end())
-      {
-        assert(it->second != NULL);
-        if (it->second->Contains(x, y))
-        {
-          return true;
-        }
-      }
-    }
-
-    return false;
-  }
-
-
-  void RadiographyScene::DrawBorder(CairoContext& context,
-                                    unsigned int layer,
-                                    double zoom)
-  {
-    Layers::const_iterator found = layers_.find(layer);
-
-    if (found != layers_.end())
-    {
-      context.SetSourceColor(255, 0, 0);
-      found->second->DrawBorders(context, zoom);
-    }
-  }
-
-
-  void RadiographyScene::GetRange(float& minValue,
-                                  float& maxValue) const
-  {
-    bool first = true;
-
-    for (Layers::const_iterator it = layers_.begin();
-         it != layers_.end(); it++)
-    {
-      assert(it->second != NULL);
-
-      float a, b;
-      if (it->second->GetRange(a, b))
-      {
-        if (first)
-        {
-          minValue = a;
-          maxValue = b;
-          first = false;
-        }
-        else
-        {
-          minValue = std::min(a, minValue);
-          maxValue = std::max(b, maxValue);
-        }
-      }
-    }
-
-    if (first)
-    {
-      minValue = 0;
-      maxValue = 0;
-    }
-  }
-
-  void RadiographyScene::ExtractLayerFromRenderedScene(Orthanc::ImageAccessor& layer,
-                                                       const Orthanc::ImageAccessor& renderedScene,
-                                                       size_t layerIndex,
-                                                       bool isCropped,
-                                                       ImageInterpolation interpolation)
-  {
-    Extent2D sceneExtent = GetSceneExtent(isCropped);
-
-    double pixelSpacingX = sceneExtent.GetWidth() / renderedScene.GetWidth();
-    double pixelSpacingY = sceneExtent.GetHeight() / renderedScene.GetHeight();
-
-    AffineTransform2D view = AffineTransform2D::Combine(
-          AffineTransform2D::CreateScaling(1.0 / pixelSpacingX, 1.0 / pixelSpacingY),
-          AffineTransform2D::CreateOffset(-sceneExtent.GetX1(), -sceneExtent.GetY1()));
-
-    AffineTransform2D layerToSceneTransform = AffineTransform2D::Combine(
-          view,
-          GetLayer(layerIndex).GetTransform());
-
-    AffineTransform2D sceneToLayerTransform = AffineTransform2D::Invert(layerToSceneTransform);
-    sceneToLayerTransform.Apply(layer, renderedScene, interpolation, false);
-  }
-
-  Orthanc::Image* RadiographyScene::ExportToImage(double pixelSpacingX,
-                                                  double pixelSpacingY,
-                                                  ImageInterpolation interpolation,
-                                                  bool invert,
-                                                  int64_t maxValue /* for inversion */,
-                                                  bool autoCrop,
-                                                  bool applyWindowing)
-  {
-    if (pixelSpacingX <= 0 ||
-        pixelSpacingY <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    Extent2D extent = GetSceneExtent(autoCrop);
-
-    int w = boost::math::iround(extent.GetWidth() / pixelSpacingX);
-    int h = boost::math::iround(extent.GetHeight() / pixelSpacingY);
-
-    if (w < 0 || h < 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    Orthanc::Image layers(Orthanc::PixelFormat_Float32,
-                          static_cast<unsigned int>(w),
-                          static_cast<unsigned int>(h), false);
-
-    AffineTransform2D view = AffineTransform2D::Combine(
-          AffineTransform2D::CreateScaling(1.0 / pixelSpacingX, 1.0 / pixelSpacingY),
-          AffineTransform2D::CreateOffset(-extent.GetX1(), -extent.GetY1()));
-
-    // wipe background before rendering
-    if (GetPreferredPhotomotricDisplayMode() == RadiographyPhotometricDisplayMode_Monochrome1)
-    {
-      Orthanc::ImageProcessing::Set(layers, 65535);
-    }
-    else
-    {
-      Orthanc::ImageProcessing::Set(layers, 0);
-    }
-
-    Render(layers, view, interpolation, applyWindowing);
-
-    std::unique_ptr<Orthanc::Image> rendered(new Orthanc::Image(Orthanc::PixelFormat_Grayscale16,
-                                                              layers.GetWidth(), layers.GetHeight(), false));
-
-    Orthanc::ImageProcessing::Convert(*rendered, layers);
-    if (invert)
-      Orthanc::ImageProcessing::Invert(*rendered, maxValue);
-
-    return rendered.release();
-  }
-
-
-  Orthanc::Image* RadiographyScene::ExportToCreateDicomRequestAndImage(Json::Value& createDicomRequestContent,
-                                                                       const Json::Value& dicomTags,
-                                                                       const std::string& parentOrthancId,
-                                                                       double pixelSpacingX,
-                                                                       double pixelSpacingY,
-                                                                       bool invert,
-                                                                       bool autoCrop,
-                                                                       ImageInterpolation interpolation)
-  {
-    LOG(INFO) << "Exporting RadiographyScene to DICOM";
-
-    std::unique_ptr<Orthanc::Image> rendered(ExportToImage(pixelSpacingX, pixelSpacingY, interpolation, autoCrop, false)); // note: we don't invert the image in the pixels data because we'll set the PhotometricDisplayMode correctly in the DICOM tags
-
-    createDicomRequestContent["Tags"] = dicomTags;
-
-    RadiographyPhotometricDisplayMode photometricMode = GetPreferredPhotomotricDisplayMode();
-    if ((invert && photometricMode != RadiographyPhotometricDisplayMode_Monochrome2) ||
-        (!invert && photometricMode == RadiographyPhotometricDisplayMode_Monochrome1))
-    {
-      createDicomRequestContent["Tags"]["PhotometricInterpretation"] = "MONOCHROME1";
-    }
-    else
-    {
-      createDicomRequestContent["Tags"]["PhotometricInterpretation"] = "MONOCHROME2";
-    }
-
-    // WARNING: The order of PixelSpacing is Y/X. We use "%0.8f" to
-    // avoid floating-point numbers to grow over 16 characters,
-    // which would be invalid according to DICOM standard
-    // ("dciodvfy" would complain).
-    char buf[32];
-    sprintf(buf, "%0.8f\\%0.8f", pixelSpacingY, pixelSpacingX);
-
-    createDicomRequestContent["Tags"]["PixelSpacing"] = buf;
-
-    float center, width;
-    if (GetWindowing(center, width))
-    {
-      createDicomRequestContent["Tags"]["WindowCenter"] =
-          boost::lexical_cast<std::string>(boost::math::iround(center));
-
-      createDicomRequestContent["Tags"]["WindowWidth"] =
-          boost::lexical_cast<std::string>(boost::math::iround(width));
-    }
-
-    if (!parentOrthancId.empty())
-    {
-      createDicomRequestContent["Parent"] = parentOrthancId;
-    }
-
-    return rendered.release();
-  }
-
-
-  void RadiographyScene::ExportToCreateDicomRequest(Json::Value& createDicomRequestContent,
-                                                    const Json::Value& dicomTags,
-                                                    const std::string& parentOrthancId,
-                                                    double pixelSpacingX,
-                                                    double pixelSpacingY,
-                                                    bool invert,
-                                                    bool autoCrop,
-                                                    ImageInterpolation interpolation,
-                                                    bool usePam)
-  {
-    LOG(INFO) << "Exporting RadiographyScene to DICOM";
-    VLOG(1) << "Exporting RadiographyScene to: export to image";
-
-    std::unique_ptr<Orthanc::Image> rendered(ExportToCreateDicomRequestAndImage(createDicomRequestContent, dicomTags, parentOrthancId, pixelSpacingX, pixelSpacingY, invert, autoCrop, interpolation));
-
-    // convert the image into base64 for inclusing in the createDicomRequest
-    std::string base64;
-
-    {
-      std::string content;
-
-      if (usePam)
-      {
-        VLOG(1) << "Exporting RadiographyScene: convert to PAM";
-        Orthanc::PamWriter writer;
-        writer.WriteToMemory(content, *rendered);
-      }
-      else
-      {
-        Orthanc::PngWriter writer;
-        writer.WriteToMemory(content, *rendered);
-      }
-
-      VLOG(1) << "Exporting RadiographyScene: encoding to base64";
-      Orthanc::Toolbox::EncodeBase64(base64, content);
-    }
-
-    // This is Data URI scheme: https://en.wikipedia.org/wiki/Data_URI_scheme
-    createDicomRequestContent["Content"] = ("data:" +
-                                            std::string(usePam ? Orthanc::MIME_PAM : Orthanc::MIME_PNG) +
-                                            ";base64," + base64);
-
-    VLOG(1) << "Exporting RadiographyScene: create-dicom request is ready";
-  }
-
-
-  void RadiographyScene::ExportDicom(Deprecated::OrthancApiClient& orthanc,
-                                     const Json::Value& dicomTags,
-                                     const std::string& parentOrthancId,
-                                     double pixelSpacingX,
-                                     double pixelSpacingY,
-                                     bool invert,
-                                     bool autoCrop,
-                                     ImageInterpolation interpolation,
-                                     bool usePam)
-  {
-    Json::Value createDicomRequestContent;
-
-    ExportToCreateDicomRequest(createDicomRequestContent, dicomTags, parentOrthancId, pixelSpacingX, pixelSpacingY, invert, autoCrop, interpolation, usePam);
-
-    orthanc.PostJsonAsyncExpectJson(
-          "/tools/create-dicom", createDicomRequestContent,
-          new Deprecated::DeprecatedCallable<RadiographyScene, Deprecated::OrthancApiClient::JsonResponseReadyMessage>
-          (GetSharedObserver(), &RadiographyScene::OnDicomExported),
-          NULL, NULL);
-
-  }
-
-
-  // Export using PAM is faster than using PNG, but requires Orthanc
-  // core >= 1.4.3
-  void RadiographyScene::ExportDicom(Deprecated::OrthancApiClient& orthanc,
-                                     const Orthanc::DicomMap& dicom,
-                                     const std::string& parentOrthancId,
-                                     double pixelSpacingX,
-                                     double pixelSpacingY,
-                                     bool invert,
-                                     bool autoCrop,
-                                     ImageInterpolation interpolation,
-                                     bool usePam)
-  {
-    std::set<Orthanc::DicomTag> tags;
-    dicom.GetTags(tags);
-
-    Json::Value jsonTags = Json::objectValue;
-
-    for (std::set<Orthanc::DicomTag>::const_iterator
-         tag = tags.begin(); tag != tags.end(); ++tag)
-    {
-      const Orthanc::DicomValue& value = dicom.GetValue(*tag);
-      if (!value.IsNull() &&
-          !value.IsBinary())
-      {
-        jsonTags[tag->Format()] = value.GetContent();
-      }
-    }
-
-    ExportDicom(orthanc, jsonTags, parentOrthancId, pixelSpacingX, pixelSpacingY, invert, autoCrop, interpolation, usePam);
-  }
-
-  void RadiographyScene::OnDicomExported(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    LOG(INFO) << "DICOM export was successful: "
-              << message.GetJson().toStyledString();
-  }
-
-
-  void RadiographyScene::OnDicomWebReceived(const Deprecated::IWebService::HttpRequestSuccessMessage& message)
-  {
-    LOG(INFO) << "DICOMweb WADO-RS received: " << message.GetAnswerSize() << " bytes";
-
-    const Deprecated::IWebService::HttpHeaders& h = message.GetAnswerHttpHeaders();
-    for (Deprecated::IWebService::HttpHeaders::const_iterator
-         it = h.begin(); it != h.end(); ++it)
-    {
-      printf("[%s] = [%s]\n", it->first.c_str(), it->second.c_str());
-    }
-  }
-
-  void RadiographyScene::ExportToScene2D(Scene2D& output) const
-  {
-    int depth = 0;
-    for (Layers::const_iterator it = layers_.begin();
-         it != layers_.end(); ++it)
-    {
-      assert(it->second != NULL);
-
-      std::unique_ptr<ISceneLayer> layer;
-      if (dynamic_cast<RadiographyDicomLayer*>(it->second))
-      {
-        RadiographyDicomLayer* oldLayer = dynamic_cast<RadiographyDicomLayer*>(it->second);
-
-        std::unique_ptr<FloatTextureSceneLayer> newLayer(new FloatTextureSceneLayer(*(oldLayer->GetSourceImage())));
-
-        newLayer->SetOrigin(oldLayer->GetGeometry().GetPanX(),
-                            oldLayer->GetGeometry().GetPanY()
-                            );
-        newLayer->SetAngle(oldLayer->GetGeometry().GetAngle());
-
-        layer.reset(newLayer.release());
-
-        // TODO: windowing dynamic_cast
-      }
-      else if (dynamic_cast<RadiographyTextLayer*>(it->second))
-      {
-        RadiographyTextLayer* oldLayer = dynamic_cast<RadiographyTextLayer*>(it->second);
-
-        std::unique_ptr<TextSceneLayer> newLayer(new TextSceneLayer());
-
-        newLayer->SetText(oldLayer->GetText());
-        newLayer->SetColor(oldLayer->GetForegroundGreyLevel(),
-                           oldLayer->GetForegroundGreyLevel(),
-                           oldLayer->GetForegroundGreyLevel()
-                           );
-        newLayer->SetPosition(oldLayer->GetGeometry().GetPanX(),
-                              oldLayer->GetGeometry().GetPanY()
-                              );
-        newLayer->SetFontIndex(1);
-        newLayer->SetAnchor(BitmapAnchor_TopLeft);
-        //newLayer->SetAngle(oldLayer->GetGeometry().GetAngle());
-
-        layer.reset(newLayer.release());
-      }
-
-      output.SetLayer(depth++, layer.release());
-
-    }
-
-  }
-
-}
-
--- a/Framework/Deprecated/Radiography/RadiographyScene.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,371 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "RadiographyLayer.h"
-#include "../Messages/ObserverBase.h"
-#include "../Deprecated/Toolbox/DicomFrameConverter.h"
-#include "../Deprecated/Toolbox/OrthancApiClient.h"
-#include "../StoneEnumerations.h"
-#include "../Scene2D/Scene2D.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-
-
-namespace OrthancStone
-{
-  class RadiographyDicomLayer;
-
-  class RadiographyScene :
-    public ObserverBase<RadiographyScene>,
-    public IObservable
-  {
-    friend class RadiographySceneGeometryReader;
-  public:
-    class GeometryChangedMessage : public OriginMessage<RadiographyScene>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      RadiographyLayer&        layer_;
-
-    public:
-      GeometryChangedMessage(const RadiographyScene& origin,
-                             RadiographyLayer& layer) :
-        OriginMessage(origin),
-        layer_(layer)
-      {
-      }
-
-      RadiographyLayer& GetLayer() const
-      {
-        return layer_;
-      }
-    };
-
-    class ContentChangedMessage : public OriginMessage<RadiographyScene>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      RadiographyLayer&        layer_;
-
-    public:
-      ContentChangedMessage(const RadiographyScene& origin,
-                            RadiographyLayer& layer) :
-        OriginMessage(origin),
-        layer_(layer)
-      {
-      }
-
-      RadiographyLayer& GetLayer() const
-      {
-        return layer_;
-      }
-    };
-
-    class LayerEditedMessage : public OriginMessage<RadiographyScene>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      const RadiographyLayer&        layer_;
-
-    public:
-      LayerEditedMessage(const RadiographyScene& origin,
-                         const RadiographyLayer& layer) :
-        OriginMessage(origin),
-        layer_(layer)
-      {
-      }
-
-      const RadiographyLayer& GetLayer() const
-      {
-        return layer_;
-      }
-    };
-
-    class LayerRemovedMessage : public OriginMessage<RadiographyScene>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      size_t&        layerIndex_;
-
-    public:
-      LayerRemovedMessage(const RadiographyScene& origin,
-                          size_t& layerIndex) :
-        OriginMessage(origin),
-        layerIndex_(layerIndex)
-      {
-      }
-
-      size_t& GetLayerIndex() const
-      {
-        return layerIndex_;
-      }
-    };
-
-
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, WindowingChangedMessage, RadiographyScene);
-
-    
-    class LayerAccessor : public boost::noncopyable
-    {
-    private:
-      RadiographyScene&  scene_;
-      size_t             index_;
-      RadiographyLayer*  layer_;
-
-    public:
-      LayerAccessor(RadiographyScene& scene,
-                    size_t index);
-
-      LayerAccessor(RadiographyScene& scene,
-                    double x,
-                    double y);
-
-      void Invalidate()
-      {
-        layer_ = NULL;
-      }
-
-      bool IsValid() const
-      {
-        return layer_ != NULL;
-      }
-
-      RadiographyScene& GetScene() const;
-
-      size_t GetIndex() const;
-
-      RadiographyLayer& GetLayer() const;
-    };
-
-
-  protected:
-    typedef std::map<size_t, RadiographyLayer*>  Layers;
-
-    size_t  nextLayerIndex_;
-    bool    hasWindowing_;
-    float   windowingCenter_;
-    float   windowingWidth_;
-    Layers  layers_;
-
-  public:
-    RadiographyLayer& RegisterLayer(RadiographyLayer* layer);
-
-  protected:
-    virtual void _RegisterLayer(RadiographyLayer* layer);
-    virtual void _OnLayerRemoved() {}
-
-    void SetLayerIndex(RadiographyLayer* layer, size_t index)
-    {
-      layer->SetIndex(index);
-    }
-
-    virtual void OnTagsReceived(const Deprecated::OrthancApiClient::BinaryResponseReadyMessage& message);
-
-    virtual void OnFrameReceived(const Deprecated::OrthancApiClient::BinaryResponseReadyMessage& message);
-    
-    void OnDicomExported(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message);
-
-    void OnDicomWebReceived(const Deprecated::IWebService::HttpRequestSuccessMessage& message);
-
-    virtual void OnLayerEdited(const RadiographyLayer::LayerEditedMessage& message);
-
-  public:
-    RadiographyScene();
-    
-    virtual ~RadiographyScene();
-
-    virtual size_t GetApproximateMemoryUsage() const;
-
-    bool GetWindowing(float& center,
-                      float& width) const;
-
-    void GetWindowingWithDefault(float& center,
-                                 float& width) const;
-
-    virtual void SetWindowing(float center,
-                              float width);
-
-    RadiographyPhotometricDisplayMode GetPreferredPhotomotricDisplayMode() const;
-
-    RadiographyLayer& LoadText(const std::string& utf8,
-                               const std::string& font,
-                               unsigned int fontSize,
-                               uint8_t foreground,
-                               RadiographyLayer::Geometry* geometry,
-                               bool isCenterGeometry);
-
-    RadiographyLayer& UpdateText(size_t layerIndex,
-                                 const std::string& font,
-                                 const std::string& utf8,
-                                 unsigned int fontSize,
-                                 uint8_t foreground);
-
-    RadiographyLayer& LoadTestBlock(unsigned int width,
-                                    unsigned int height,
-                                    RadiographyLayer::Geometry* geometry);
-
-    RadiographyLayer& LoadMask(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners,
-                               const RadiographyDicomLayer& dicomLayer,
-                               float foreground,
-                               RadiographyLayer::Geometry* geometry);
-
-    RadiographyLayer& LoadAlphaBitmap(Orthanc::ImageAccessor* bitmap,  // takes ownership
-                                      RadiographyLayer::Geometry* geometry);
-
-    virtual RadiographyLayer& LoadDicomImage(Orthanc::ImageAccessor* dicomImage, // takes ownership
-                                             const std::string& instance,
-                                             unsigned int frame,
-                                             Deprecated::DicomFrameConverter* converter,  // takes ownership
-                                             RadiographyPhotometricDisplayMode preferredPhotometricDisplayMode,
-                                             RadiographyLayer::Geometry* geometry);
-
-    virtual RadiographyLayer& LoadDicomFrame(Deprecated::OrthancApiClient& orthanc,
-                                             const std::string& instance,
-                                             unsigned int frame,
-                                             bool httpCompression,
-                                             RadiographyLayer::Geometry* geometry); // pass NULL if you want default geometry
-
-    RadiographyLayer& LoadDicomWebFrame(Deprecated::IWebService& web);
-
-    void RemoveLayer(size_t layerIndex);
-
-    RadiographyLayer& GetLayer(size_t layerIndex);
-
-    const RadiographyLayer& GetLayer(size_t layerIndex) const;
-
-    template <typename TypeLayer>
-    TypeLayer* GetTypedLayer(size_t indexOfType = 0)
-    {
-      std::vector<size_t> layerIndexes;
-      GetLayersIndexes(layerIndexes);
-
-      size_t count = 0;
-
-      for (size_t i = 0; i < layerIndexes.size(); ++i)
-      {
-        TypeLayer* typedLayer = dynamic_cast<TypeLayer*>(layers_[layerIndexes[i]]);
-        if (typedLayer != NULL)
-        {
-          if (count == indexOfType)
-          {
-            return typedLayer;
-          }
-          count++;
-        }
-      }
-
-      return NULL;
-    }
-
-    void GetLayersIndexes(std::vector<size_t>& output) const;
-
-    virtual Extent2D GetSceneExtent(bool minimal) const;
-
-    virtual void Render(Orthanc::ImageAccessor& buffer,
-                        const AffineTransform2D& viewTransform,
-                        ImageInterpolation interpolation,
-                        bool applyWindowing) const;
-
-    bool LookupLayer(size_t& index /* out */,
-                     double x,
-                     double y) const;
-    
-    void DrawBorder(CairoContext& context,
-                    unsigned int layer,
-                    double zoom);
-
-    void GetRange(float& minValue,
-                  float& maxValue) const;
-
-    void ExportToScene2D(Scene2D& output) const;
-
-    // Export using PAM is faster than using PNG, but requires Orthanc
-    // core >= 1.4.3
-    void ExportDicom(Deprecated::OrthancApiClient& orthanc,
-                     const Orthanc::DicomMap& dicom,
-                     const std::string& parentOrthancId,
-                     double pixelSpacingX,
-                     double pixelSpacingY,
-                     bool invert,
-                     bool autoCrop,
-                     ImageInterpolation interpolation,
-                     bool usePam);
-
-    void ExportDicom(Deprecated::OrthancApiClient& orthanc,
-                     const Json::Value& dicomTags,
-                     const std::string& parentOrthancId,
-                     double pixelSpacingX,
-                     double pixelSpacingY,
-                     bool invert,
-                     bool autoCrop,
-                     ImageInterpolation interpolation,
-                     bool usePam);
-
-    void ExportToCreateDicomRequest(Json::Value& createDicomRequestContent,
-                                    const Json::Value& dicomTags,
-                                    const std::string& parentOrthancId,
-                                    double pixelSpacingX,
-                                    double pixelSpacingY,
-                                    bool invert,
-                                    bool autoCrop,
-                                    ImageInterpolation interpolation,
-                                    bool usePam);
-
-    Orthanc::Image* ExportToCreateDicomRequestAndImage(Json::Value& createDicomRequestContent,
-                                                       const Json::Value& dicomTags,
-                                                       const std::string& parentOrthancId,
-                                                       double pixelSpacingX,
-                                                       double pixelSpacingY,
-                                                       bool invert,
-                                                       bool autoCrop,
-                                                       ImageInterpolation interpolation);
-
-    Orthanc::Image* ExportToImage(double pixelSpacingX,
-                                  double pixelSpacingY,
-                                  ImageInterpolation interpolation,
-                                  bool autoCrop,
-                                  bool applyWindowing)
-    {
-      return ExportToImage(pixelSpacingX, pixelSpacingY, interpolation, false, 0, autoCrop, applyWindowing);
-    }
-
-    Orthanc::Image* ExportToImage(double pixelSpacingX,
-                                  double pixelSpacingY,
-                                  ImageInterpolation interpolation,
-                                  bool invert,
-                                  int64_t maxValue /* for inversion */,
-                                  bool autoCrop,
-                                  bool applyWindowing);
-
-    void ExtractLayerFromRenderedScene(Orthanc::ImageAccessor& layer,
-                                       const Orthanc::ImageAccessor& renderedScene,
-                                       size_t layerIndex,
-                                       bool isCropped,
-                                       ImageInterpolation interpolation);
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographySceneCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographySceneCommand.h"
-
-
-namespace OrthancStone
-{
-  RadiographySceneCommand::RadiographySceneCommand(RadiographyScene& scene,
-                                                   size_t layer) :
-    scene_(scene),
-    layer_(layer)
-  {
-  }
-
-  
-  RadiographySceneCommand::RadiographySceneCommand(const RadiographyScene::LayerAccessor& accessor) :
-    scene_(accessor.GetScene()),
-    layer_(accessor.GetIndex())
-  {
-  }
-
-  
-  void RadiographySceneCommand::Undo() const
-  {
-    RadiographyScene::LayerAccessor accessor(scene_, layer_);
-
-    if (accessor.IsValid())
-    {
-      UndoInternal(accessor.GetLayer());
-    }
-  }
-
-  
-  void RadiographySceneCommand::Redo() const
-  {
-    RadiographyScene::LayerAccessor accessor(scene_, layer_);
-
-    if (accessor.IsValid())
-    {
-      RedoInternal(accessor.GetLayer());
-    }
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographySceneCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/UndoRedoStack.h"
-#include "RadiographyScene.h"
-
-namespace OrthancStone
-{
-  class RadiographySceneCommand : public UndoRedoStack::ICommand
-  {
-  private:
-    RadiographyScene&  scene_;
-    size_t             layer_;
-
-  protected:
-    virtual void UndoInternal(RadiographyLayer& layer) const = 0;
-
-    virtual void RedoInternal(RadiographyLayer& layer) const = 0;
-
-  public:
-    RadiographySceneCommand(RadiographyScene& scene,
-                            size_t layer);
-
-    RadiographySceneCommand(const RadiographyScene::LayerAccessor& accessor);
-
-    virtual void Undo() const;
-
-    virtual void Redo() const;
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographySceneReader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographySceneReader.h"
-
-#include "../Deprecated/Toolbox/DicomFrameConverter.h"
-
-#include <Images/FontRegistry.h>
-#include <Images/PngReader.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-namespace OrthancStone
-{
-
-  void RadiographySceneBuilder::Read(const Json::Value& input, Orthanc::ImageAccessor* dicomImage /* takes ownership */,
-                                     Deprecated::DicomFrameConverter* dicomFrameConverter  /* takes ownership */,
-                                     RadiographyPhotometricDisplayMode preferredPhotometricDisplayMode
-                                     )
-  {
-    dicomImage_.reset(dicomImage);
-    dicomFrameConverter_.reset(dicomFrameConverter);
-    preferredPhotometricDisplayMode_ = preferredPhotometricDisplayMode;
-    Read(input);
-  }
-
-  RadiographyDicomLayer* RadiographySceneBuilder::LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry)
-  {
-    return dynamic_cast<RadiographyDicomLayer*>(&(scene_.LoadDicomImage(dicomImage_.release(), instanceId, frame, dicomFrameConverter_.release(), preferredPhotometricDisplayMode_, geometry)));
-  }
-
-
-  RadiographyDicomLayer* RadiographySceneReader::LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry)
-  {
-    return dynamic_cast<RadiographyDicomLayer*>(&(scene_.LoadDicomFrame(orthancApiClient_, instanceId, frame, false, geometry)));
-  }
-
-  RadiographyDicomLayer* RadiographySceneGeometryReader::LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry)
-  {
-    std::unique_ptr<RadiographyPlaceholderLayer>  layer(new RadiographyPlaceholderLayer(scene_));
-    layer->SetGeometry(*geometry);
-    layer->SetSize(dicomImageWidth_, dicomImageHeight_);
-    scene_.RegisterLayer(layer.get());
-
-    return layer.release();
-  }
-
-  void RadiographySceneBuilder::Read(const Json::Value& input)
-  {
-    unsigned int version = input["version"].asUInt();
-
-    if (version != 1)
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-
-    if (input.isMember("hasWindowing") && input["hasWindowing"].asBool())
-    {
-      scene_.SetWindowing(input["windowCenter"].asFloat(), input["windowWidth"].asFloat());
-    }
-
-    RadiographyDicomLayer* dicomLayer = NULL;
-    for(size_t layerIndex = 0; layerIndex < input["layers"].size(); layerIndex++)
-    {
-      const Json::Value& jsonLayer = input["layers"][(int)layerIndex];
-      RadiographyLayer::Geometry geometry;
-
-      if (jsonLayer["type"].asString() == "dicom")
-      {
-        ReadLayerGeometry(geometry, jsonLayer);
-        dicomLayer = LoadDicom(jsonLayer["instanceId"].asString(), jsonLayer["frame"].asUInt(), &geometry);
-      }
-      else if (jsonLayer["type"].asString() == "mask")
-      {
-        if (dicomLayer == NULL)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); // we always assumed the dicom layer was read before the mask
-        }
-        ReadLayerGeometry(geometry, jsonLayer);
-
-        float foreground = jsonLayer["foreground"].asFloat();
-        std::vector<Orthanc::ImageProcessing::ImagePoint> corners;
-        for (size_t i = 0; i < jsonLayer["corners"].size(); i++)
-        {
-          Orthanc::ImageProcessing::ImagePoint corner(jsonLayer["corners"][(int)i]["x"].asInt(),
-              jsonLayer["corners"][(int)i]["y"].asInt());
-          corners.push_back(corner);
-        }
-
-        scene_.LoadMask(corners, *dicomLayer, foreground, &geometry);
-      }
-      else if (jsonLayer["type"].asString() == "text")
-      {
-        ReadLayerGeometry(geometry, jsonLayer);
-        scene_.LoadText(jsonLayer["text"].asString(), jsonLayer["font"].asString(), jsonLayer["fontSize"].asUInt(), static_cast<uint8_t>(jsonLayer["foreground"].asUInt()), &geometry, false);
-      }
-      else if (jsonLayer["type"].asString() == "alpha")
-      {
-        ReadLayerGeometry(geometry, jsonLayer);
-
-        const std::string& pngContentBase64 = jsonLayer["content"].asString();
-        std::string pngContent;
-        std::string mimeType;
-        Orthanc::Toolbox::DecodeDataUriScheme(mimeType, pngContent, pngContentBase64);
-
-        std::unique_ptr<Orthanc::ImageAccessor>  image;
-        if (mimeType == "image/png")
-        {
-          image.reset(new Orthanc::PngReader());
-          dynamic_cast<Orthanc::PngReader*>(image.get())->ReadFromMemory(pngContent);
-        }
-        else
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-
-        RadiographyAlphaLayer& layer = dynamic_cast<RadiographyAlphaLayer&>(scene_.LoadAlphaBitmap(image.release(), &geometry));
-
-        if (!jsonLayer["isUsingWindowing"].asBool())
-        {
-          layer.SetForegroundValue((float)(jsonLayer["foreground"].asDouble()));
-        }
-      }
-      else
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-
-
-
-
-  void RadiographySceneBuilder::ReadDicomLayerGeometry(RadiographyLayer::Geometry& geometry, const Json::Value& input)
-  {
-    for(size_t layerIndex = 0; layerIndex < input["layers"].size(); layerIndex++)
-    {
-      const Json::Value& jsonLayer = input["layers"][(int)layerIndex];
-      if (jsonLayer["type"].asString() == "dicom")
-      {
-        ReadLayerGeometry(geometry, jsonLayer);
-        return;
-      }
-    }
-  }
-
-  void RadiographySceneBuilder::ReadLayerGeometry(RadiographyLayer::Geometry& geometry, const Json::Value& jsonLayer)
-  {
-    {// crop
-      unsigned int x, y, width, height;
-      if (jsonLayer["crop"]["hasCrop"].asBool())
-      {
-        x = jsonLayer["crop"]["x"].asUInt();
-        y = jsonLayer["crop"]["y"].asUInt();
-        width = jsonLayer["crop"]["width"].asUInt();
-        height = jsonLayer["crop"]["height"].asUInt();
-        geometry.SetCrop(x, y, width, height);
-      }
-    }
-
-    geometry.SetAngle(jsonLayer["angle"].asDouble());
-    geometry.SetResizeable(jsonLayer["isResizable"].asBool());
-    geometry.SetPan(jsonLayer["pan"]["x"].asDouble(), jsonLayer["pan"]["y"].asDouble());
-    geometry.SetPixelSpacing(jsonLayer["pixelSpacing"]["x"].asDouble(), jsonLayer["pixelSpacing"]["y"].asDouble());
-
-    // these fields were introduced later -> they might not exist
-    if (jsonLayer.isMember("flipVertical"))
-    {
-      geometry.SetFlipVertical(jsonLayer["flipVertical"].asBool());
-    }
-    if (jsonLayer.isMember("flipHorizontal"))
-    {
-      geometry.SetFlipHorizontal(jsonLayer["flipHorizontal"].asBool());
-    }
-
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographySceneReader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "RadiographyScene.h"
-#include "RadiographyAlphaLayer.h"
-#include "RadiographyDicomLayer.h"
-#include "RadiographyMaskLayer.h"
-#include "RadiographyTextLayer.h"
-#include "../Deprecated/Toolbox/OrthancApiClient.h"
-
-#include <json/value.h>
-#include <Images/FontRegistry.h>
-
-namespace OrthancStone
-{
-  // a layer containing only the geometry of a DICOM layer (bit hacky !)
-  class RadiographyPlaceholderLayer : public RadiographyDicomLayer
-  {
-  public:
-    RadiographyPlaceholderLayer(const RadiographyScene& scene) :
-      RadiographyDicomLayer(scene)
-    {
-    }
-
-  };
-
-
-  // HACK: I had to introduce this builder class in order to be able to recreate a RadiographyScene
-  // from a serialized scene that is passed to web-workers.
-  // It needs some architecturing...
-  class RadiographySceneBuilder : public boost::noncopyable
-  {
-  protected:
-    RadiographyScene&                               scene_;
-    std::unique_ptr<Orthanc::ImageAccessor>           dicomImage_;
-    std::unique_ptr<Deprecated::DicomFrameConverter>  dicomFrameConverter_;
-    RadiographyPhotometricDisplayMode               preferredPhotometricDisplayMode_;
-
-  public:
-    RadiographySceneBuilder(RadiographyScene& scene) :
-      scene_(scene)
-    {
-    }
-
-    void Read(const Json::Value& input);
-    void Read(const Json::Value& input,
-              Orthanc::ImageAccessor* dicomImage, // takes ownership
-              Deprecated::DicomFrameConverter* dicomFrameConverter, // takes ownership
-              RadiographyPhotometricDisplayMode preferredPhotometricDisplayMode
-              );
-
-    static void ReadLayerGeometry(RadiographyLayer::Geometry& geometry, const Json::Value& input);
-    static void ReadDicomLayerGeometry(RadiographyLayer::Geometry& geometry, const Json::Value& input);
-
-  protected:
-    virtual RadiographyDicomLayer* LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry);
-
-  };
-
-
-  class RadiographySceneReader : public RadiographySceneBuilder
-  {
-    Deprecated::OrthancApiClient&             orthancApiClient_;
-
-  public:
-    RadiographySceneReader(RadiographyScene& scene, Deprecated::OrthancApiClient& orthancApiClient) :
-      RadiographySceneBuilder(scene),
-      orthancApiClient_(orthancApiClient)
-    {
-    }
-
-  protected:
-    virtual RadiographyDicomLayer*  LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry);
-  };
-
-  // reads the whole scene but the DICOM image such that we have the full geometry
-  class RadiographySceneGeometryReader : public RadiographySceneBuilder
-  {
-    unsigned int dicomImageWidth_;
-    unsigned int dicomImageHeight_;
-
-  public:
-    RadiographySceneGeometryReader(RadiographyScene& scene, unsigned int dicomImageWidth, unsigned int dicomImageHeight) :
-      RadiographySceneBuilder(scene),
-      dicomImageWidth_(dicomImageWidth),
-      dicomImageHeight_(dicomImageHeight)
-    {
-    }
-
-  protected:
-    virtual RadiographyDicomLayer*  LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry);
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographySceneWriter.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographySceneWriter.h"
-
-#include <OrthancException.h>
-#include <Images/PngWriter.h>
-#include <Toolbox.h>
-
-namespace OrthancStone
-{
-  void RadiographySceneWriter::Write(Json::Value& output, const RadiographyScene& scene)
-  {
-    output["version"] = 1;
-    float windowCenter, windowWidth;
-    bool hasWindowing = scene.GetWindowing(windowCenter, windowWidth);
-    output["hasWindowing"] = hasWindowing;
-    if (hasWindowing)
-    {
-      output["windowCenter"] = windowCenter;
-      output["windowWidth"] = windowWidth;
-    }
-    output["layers"] = Json::arrayValue;
-
-    std::vector<size_t> layersIndexes;
-    scene.GetLayersIndexes(layersIndexes);
-
-    for (std::vector<size_t>::iterator itLayerIndex = layersIndexes.begin(); itLayerIndex < layersIndexes.end(); itLayerIndex++)
-    {
-      Json::Value layer;
-      WriteLayer(layer, scene.GetLayer(*itLayerIndex));
-      output["layers"].append(layer);
-    }
-  }
-
-  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyDicomLayer& layer)
-  {
-    output["type"] = "dicom";
-    output["instanceId"] = layer.GetInstanceId();
-    output["frame"] = layer.GetFrame();
-  }
-
-  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyTextLayer& layer)
-  {
-    output["type"] = "text";
-    output["text"] = layer.GetText();
-    output["font"] = layer.GetFont();
-    output["fontSize"] = layer.GetFontSize();
-    output["foreground"] = layer.GetForegroundGreyLevel();
-  }
-
-  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyMaskLayer& layer)
-  {
-    output["type"] = "mask";
-    output["instanceId"] = layer.GetInstanceId(); // the dicom layer it's being linked to
-    output["foreground"] = layer.GetForeground();
-    output["corners"] = Json::arrayValue;
-    const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners = layer.GetCorners();
-    for (size_t i = 0; i < corners.size(); i++)
-    {
-      Json::Value corner;
-      corner["x"] = corners[i].GetX();
-      corner["y"] = corners[i].GetY();
-      output["corners"].append(corner);
-    }
-  }
-
-  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyAlphaLayer& layer)
-  {
-    output["type"] = "alpha";
-
-    //output["bitmap"] =
-    const Orthanc::ImageAccessor& alpha = layer.GetAlpha();
-
-    Orthanc::PngWriter pngWriter;
-    std::string pngContent;
-    std::string pngContentBase64;
-    pngWriter.WriteToMemory(pngContent, alpha);
-
-    Orthanc::Toolbox::EncodeDataUriScheme(pngContentBase64, "image/png", pngContent);
-    output["content"] = pngContentBase64;
-    output["foreground"] = layer.GetForegroundValue();
-  }
-
-  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyLayer& layer)
-  {
-    const RadiographyLayer::Geometry& geometry = layer.GetGeometry();
-
-    {// crop
-      Json::Value crop;
-      if (geometry.HasCrop())
-      {
-        unsigned int x, y, width, height;
-        geometry.GetCrop(x, y, width, height);
-        crop["hasCrop"] = true;
-        crop["x"] = x;
-        crop["y"] = y;
-        crop["width"] = width;
-        crop["height"] = height;
-      }
-      else
-      {
-        crop["hasCrop"] = false;
-      }
-
-      output["crop"] = crop;
-    }
-
-    output["angle"] = geometry.GetAngle();
-    output["isResizable"] = geometry.IsResizeable();
-
-    {// pan
-      Json::Value pan;
-      pan["x"] = geometry.GetPanX();
-      pan["y"] = geometry.GetPanY();
-      output["pan"] = pan;
-    }
-
-    {// pixelSpacing
-      Json::Value pan;
-      pan["x"] = geometry.GetPixelSpacingX();
-      pan["y"] = geometry.GetPixelSpacingY();
-      output["pixelSpacing"] = pan;
-    }
-
-    output["flipVertical"] = geometry.GetFlipVertical();
-    output["flipHorizontal"] = geometry.GetFlipHorizontal();
-
-    if (dynamic_cast<const RadiographyTextLayer*>(&layer) != NULL)
-    {
-      WriteLayer(output, dynamic_cast<const RadiographyTextLayer&>(layer));
-    }
-    else if (dynamic_cast<const RadiographyDicomLayer*>(&layer) != NULL)
-    {
-      WriteLayer(output, dynamic_cast<const RadiographyDicomLayer&>(layer));
-    }
-    else if (dynamic_cast<const RadiographyAlphaLayer*>(&layer) != NULL)
-    {
-      WriteLayer(output, dynamic_cast<const RadiographyAlphaLayer&>(layer));
-    }
-    else if (dynamic_cast<const RadiographyMaskLayer*>(&layer) != NULL)
-    {
-      WriteLayer(output, dynamic_cast<const RadiographyMaskLayer&>(layer));
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographySceneWriter.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "RadiographyScene.h"
-#include "RadiographyAlphaLayer.h"
-#include "RadiographyDicomLayer.h"
-#include "RadiographyTextLayer.h"
-#include "RadiographyMaskLayer.h"
-#include <json/value.h>
-
-namespace OrthancStone
-{
-  class RadiographyScene;
-
-  class RadiographySceneWriter : public boost::noncopyable
-  {
-
-  public:
-    RadiographySceneWriter()
-    {
-    }
-
-    void Write(Json::Value& output, const RadiographyScene& scene);
-
-  private:
-    void WriteLayer(Json::Value& output, const RadiographyLayer& layer);
-    void WriteLayer(Json::Value& output, const RadiographyDicomLayer& layer);
-    void WriteLayer(Json::Value& output, const RadiographyTextLayer& layer);
-    void WriteLayer(Json::Value& output, const RadiographyAlphaLayer& layer);
-    void WriteLayer(Json::Value& output, const RadiographyMaskLayer& layer);
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyTextLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "RadiographyTextLayer.h"
-
-#include "RadiographyScene.h"
-#include "../Toolbox/TextRenderer.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  std::map<std::string, Orthanc::EmbeddedResources::FileResourceId> RadiographyTextLayer::fonts_;
-
-  void RadiographyTextLayer::SetText(const std::string& utf8,
-                                     const std::string& font,
-                                     unsigned int fontSize,
-                                     uint8_t foregroundGreyLevel)
-  {
-    if (fonts_.find(font) == fonts_.end())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, "The font has not been registered");
-    }
-
-    text_ = utf8;
-    font_ = font;
-    fontSize_ = fontSize;
-    foregroundGreyLevel_ = foregroundGreyLevel;
-
-    SetAlpha(TextRenderer::Render(fonts_[font_],
-                                  fontSize_,
-                                  text_));
-
-    SetForegroundValue(foregroundGreyLevel * 256.0f);
-  }
-
-}
--- a/Framework/Deprecated/Radiography/RadiographyTextLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "RadiographyAlphaLayer.h"
-
-namespace OrthancStone
-{
-  class RadiographyScene;
-
-  class RadiographyTextLayer : public RadiographyAlphaLayer
-  {
-  private:
-    std::string                 text_;
-    std::string                 font_;
-    unsigned int                fontSize_;
-    uint8_t                     foregroundGreyLevel_;
-
-    static std::map<std::string, Orthanc::EmbeddedResources::FileResourceId>  fonts_;
-  public:
-    RadiographyTextLayer(const RadiographyScene& scene) :
-      RadiographyAlphaLayer(scene)
-    {
-    }
-
-    void SetText(const std::string& utf8, const std::string& font, unsigned int fontSize, uint8_t foregroundGreyLevel);
-
-    const std::string& GetText() const
-    {
-      return text_;
-    }
-
-    const std::string& GetFont() const
-    {
-      return font_;
-    }
-
-    unsigned int GetFontSize() const
-    {
-      return fontSize_;
-    }
-
-    uint8_t GetForegroundGreyLevel() const
-    {
-      return foregroundGreyLevel_;
-    }
-
-    static void RegisterFont(const std::string& name, Orthanc::EmbeddedResources::FileResourceId fontResourceId)
-    {
-      fonts_[name] = fontResourceId;
-    }
-  };
-}
--- a/Framework/Deprecated/Radiography/RadiographyWidget.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,284 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyWidget.h"
-
-#include <OrthancException.h>
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-
-#include "RadiographyMaskLayer.h"
-
-namespace OrthancStone
-{
-
-  bool RadiographyWidget::IsInvertedInternal() const
-  {
-    // MONOCHROME1 images must be inverted and the user can invert the 
-    // image, too -> XOR the two
-    return (scene_->GetPreferredPhotomotricDisplayMode() == 
-            RadiographyPhotometricDisplayMode_Monochrome1) ^ invert_; 
-  }
-
-  void RadiographyWidget::RenderBackground(
-    Orthanc::ImageAccessor& image, float minValue, float maxValue)
-  {
-    // wipe background before rendering
-    float backgroundValue = minValue;
-
-    switch (scene_->GetPreferredPhotomotricDisplayMode())
-    {
-    case RadiographyPhotometricDisplayMode_Monochrome1:
-    case RadiographyPhotometricDisplayMode_Default:
-      if (IsInvertedInternal())
-        backgroundValue = maxValue;
-      else
-        backgroundValue = minValue;
-      break;
-    case RadiographyPhotometricDisplayMode_Monochrome2:
-      if (IsInvertedInternal())
-        backgroundValue = minValue;
-      else
-        backgroundValue = maxValue;
-      break;
-    default:
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-
-    Orthanc::ImageProcessing::Set(image, static_cast<int64_t>(backgroundValue));
-  }
-
-  bool RadiographyWidget::RenderInternal(unsigned int width,
-                                         unsigned int height,
-                                         ImageInterpolation interpolation)
-  {
-    if (floatBuffer_.get() == NULL ||
-        floatBuffer_->GetWidth() != width ||
-        floatBuffer_->GetHeight() != height)
-    {
-      floatBuffer_.reset(new Orthanc::Image(
-        Orthanc::PixelFormat_Float32, width, height, false));
-
-      if (floatBuffer_.get() == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotEnoughMemory, "RadiographyWidget::RenderInternal: unable to allocate float buffer");
-      }
-    }
-
-    if (cairoBuffer_.get() == NULL ||
-        cairoBuffer_->GetWidth() != width ||
-        cairoBuffer_->GetHeight() != height)
-    {
-      cairoBuffer_.reset(new CairoSurface(width, height, false /* no alpha */));
-
-      if (cairoBuffer_.get() == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotEnoughMemory, "RadiographyWidget::RenderInternal: unable to allocate cairo buffer");
-      }
-    }
-
-    RenderBackground(*floatBuffer_, 0.0, 65535.0);
-
-    scene_->Render(*floatBuffer_, GetView().GetMatrix(), interpolation, true);
-
-    // Conversion from Float32 to BGRA32 (cairo). Very similar to
-    // GrayscaleFrameRenderer => TODO MERGE?
-    Orthanc::ImageAccessor target;
-    cairoBuffer_->GetWriteableAccessor(target);
-
-    bool invert = IsInvertedInternal();
-
-    for (unsigned int y = 0; y < height; y++)
-    {
-      const float* p = reinterpret_cast<const float*>(floatBuffer_->GetConstRow(y));
-      uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
-
-      for (unsigned int x = 0; x < width; x++, p++, q += 4)
-      {
-        uint8_t v = 0;
-        if (*p >= 65535.0)
-        {
-          v = 255;
-        }
-        else if (*p <= 0.0)
-        {
-          v = 0;
-        }
-        else
-        {
-          v = static_cast<uint8_t>(*p / 256.0);
-        }
-
-        if (invert)
-        {
-          v = 255 - v;
-        }
-
-        q[0] = v;
-        q[1] = v;
-        q[2] = v;
-        q[3] = 255;
-      }
-    }
-
-    return true;
-  }
-
-
-  bool RadiographyWidget::RenderScene(CairoContext& context,
-                                      const Deprecated::ViewportGeometry& view)
-  {
-    cairo_t* cr = context.GetObject();
-
-    if (RenderInternal(context.GetWidth(), context.GetHeight(), interpolation_))
-    {
-      // https://www.cairographics.org/FAQ/#paint_from_a_surface
-      cairo_save(cr);
-      cairo_identity_matrix(cr);
-      cairo_set_source_surface(cr, cairoBuffer_->GetObject(), 0, 0);
-      cairo_paint(cr);
-      cairo_restore(cr);
-    }
-    else
-    {
-      // https://www.cairographics.org/FAQ/#clear_a_surface
-      context.SetSourceColor(0, 0, 0);
-      cairo_paint(cr);
-    }
-
-    if (hasSelection_)
-    {
-      scene_->DrawBorder(
-        context, static_cast<unsigned int>(selectedLayer_), view.GetZoom());
-    }
-
-    return true;
-  }
-
-
-  RadiographyWidget::RadiographyWidget(boost::shared_ptr<RadiographyScene> scene,
-                                       const std::string& name) :
-    WorldSceneWidget(name),
-    invert_(false),
-    interpolation_(ImageInterpolation_Nearest),
-    hasSelection_(false),
-    selectedLayer_(0)    // Dummy initialization
-  {
-    SetScene(scene);
-  }
-
-
-  void RadiographyWidget::Select(size_t layer)
-  {
-    hasSelection_ = true;
-    selectedLayer_ = layer;
-
-    NotifyContentChanged();
-    BroadcastMessage(SelectionChangedMessage(*this));
-  }
-
-  void RadiographyWidget::Unselect()
-  {
-    hasSelection_ = false;
-
-    NotifyContentChanged();
-    BroadcastMessage(SelectionChangedMessage(*this));
-  }
-
-  bool RadiographyWidget::LookupSelectedLayer(size_t& layer) const
-  {
-    if (hasSelection_)
-    {
-      layer = selectedLayer_;
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-  
-  void RadiographyWidget::OnGeometryChanged(const RadiographyScene::GeometryChangedMessage& message)
-  {
-//    LOG(INFO) << "Scene geometry has changed";
-    FitContent();
-  }
-
-  
-  void RadiographyWidget::OnContentChanged(const RadiographyScene::ContentChangedMessage& message)
-  {
-//    LOG(INFO) << "Scene content has changed";
-    NotifyContentChanged();
-  }
-
-  void RadiographyWidget::OnLayerRemoved(const RadiographyScene::LayerRemovedMessage& message)
-  {
-    size_t removedLayerIndex = message.GetLayerIndex();
-    if (hasSelection_ && selectedLayer_ == removedLayerIndex)
-    {
-      Unselect();
-    }
-    NotifyContentChanged();
-  }
-  
-  void RadiographyWidget::SetInvert(bool invert)
-  {
-    if (invert_ != invert)
-    {
-      invert_ = invert;
-      NotifyContentChanged();
-    }
-  }
-
-  
-    void RadiographyWidget::SwitchInvert()
-  {
-    invert_ = !invert_;
-    NotifyContentChanged();
-  }
-
-
-  void RadiographyWidget::SetInterpolation(ImageInterpolation interpolation)
-  {
-    if (interpolation_ != interpolation)
-    {
-      interpolation_ = interpolation;
-      NotifyContentChanged();
-    }
-  }
-
-  void RadiographyWidget::SetScene(boost::shared_ptr<RadiographyScene> scene)
-  {
-    scene_ = scene;
-
-    Register<RadiographyScene::GeometryChangedMessage>(*scene_, &RadiographyWidget::OnGeometryChanged);
-    Register<RadiographyScene::ContentChangedMessage>(*scene_, &RadiographyWidget::OnContentChanged);
-    Register<RadiographyScene::LayerRemovedMessage>(*scene_, &RadiographyWidget::OnLayerRemoved);
-
-    Unselect();
-
-    NotifyContentChanged();
-
-    // force redraw
-    FitContent();
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographyWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Deprecated/Widgets/WorldSceneWidget.h"
-#include "../Messages/ObserverBase.h"
-#include "RadiographyScene.h"
-
-
-namespace OrthancStone
-{
-  class RadiographyMaskLayer;
-
-  class RadiographyWidget :
-    public Deprecated::WorldSceneWidget,
-    public ObserverBase<RadiographyWidget>,
-    public IObservable
-  {
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, SelectionChangedMessage, RadiographyWidget);
-
-  private:
-    boost::shared_ptr<RadiographyScene>    scene_;
-    std::unique_ptr<Orthanc::ImageAccessor>  floatBuffer_;
-    std::unique_ptr<CairoSurface>            cairoBuffer_;
-    bool                                   invert_;
-    ImageInterpolation                     interpolation_;
-    bool                                   hasSelection_;
-    size_t                                 selectedLayer_;
-
-    bool RenderInternal(unsigned int width,
-                        unsigned int height,
-                        ImageInterpolation interpolation);
-
-  protected:
-    virtual Extent2D GetSceneExtent()
-    {
-      return scene_->GetSceneExtent(false);
-    }
-
-    virtual bool RenderScene(CairoContext& context,
-                             const Deprecated::ViewportGeometry& view);
-
-    virtual void RenderBackground(Orthanc::ImageAccessor& image, float minValue, float maxValue);
-
-    bool IsInvertedInternal() const;
-
-  public:
-    RadiographyWidget(boost::shared_ptr<RadiographyScene> scene,  // TODO: check how we can avoid boost::shared_ptr here since we don't want them in the public API (app is keeping a boost::shared_ptr to this right now)
-                      const std::string& name);
-
-    RadiographyScene& GetScene() const
-    {
-      return *scene_;
-    }
-
-    void SetScene(boost::shared_ptr<RadiographyScene> scene);
-
-    void Select(size_t layer);
-
-    void Unselect();
-
-    template<typename LayerType> bool SelectLayerByType(size_t index = 0);
-
-    bool LookupSelectedLayer(size_t& layer) const;
-
-    void OnGeometryChanged(const RadiographyScene::GeometryChangedMessage& message);
-
-    void OnContentChanged(const RadiographyScene::ContentChangedMessage& message);
-
-    void OnLayerRemoved(const RadiographyScene::LayerRemovedMessage& message);
-
-    void SetInvert(bool invert);
-
-    void SwitchInvert();
-
-    bool IsInverted() const
-    {
-      return invert_;
-    }
-
-    void SetInterpolation(ImageInterpolation interpolation);
-
-    ImageInterpolation GetInterpolation() const
-    {
-      return interpolation_;
-    }
-  };
-
-  template<typename LayerType> bool RadiographyWidget::SelectLayerByType(size_t index)
-  {
-    std::vector<size_t> layerIndexes;
-    size_t count = 0;
-    scene_->GetLayersIndexes(layerIndexes);
-
-    for (size_t i = 0; i < layerIndexes.size(); ++i)
-    {
-      const LayerType* typedLayer = dynamic_cast<const LayerType*>(&(scene_->GetLayer(layerIndexes[i])));
-      if (typedLayer != NULL)
-      {
-        if (count == index)
-        {
-          Select(layerIndexes[i]);
-          return true;
-        }
-        count++;
-      }
-    }
-
-    return false;
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographyWindowingTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "RadiographyWindowingTracker.h"
-#include "RadiographyWidget.h"
-
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-  class RadiographyWindowingTracker::UndoRedoCommand : public UndoRedoStack::ICommand
-  {
-  private:
-    RadiographyScene&  scene_;
-    float              sourceCenter_;
-    float              sourceWidth_;
-    float              targetCenter_;
-    float              targetWidth_;
-
-  public:
-    UndoRedoCommand(const RadiographyWindowingTracker& tracker) :
-      scene_(tracker.scene_),
-      sourceCenter_(tracker.sourceCenter_),
-      sourceWidth_(tracker.sourceWidth_)
-    {
-      scene_.GetWindowingWithDefault(targetCenter_, targetWidth_);
-    }
-
-    virtual void Undo() const
-    {
-      scene_.SetWindowing(sourceCenter_, sourceWidth_);
-    }
-      
-    virtual void Redo() const
-    {
-      scene_.SetWindowing(targetCenter_, targetWidth_);
-    }
-  };
-
-
-  void RadiographyWindowingTracker::ComputeAxisEffect(int& deltaCenter,
-                                                      int& deltaWidth,
-                                                      int delta,
-                                                      Action actionNegative,
-                                                      Action actionPositive)
-  {
-    if (delta < 0)
-    {
-      switch (actionNegative)
-      {
-        case Action_IncreaseWidth:
-          deltaWidth = -delta;
-          break;
-
-        case Action_DecreaseWidth:
-          deltaWidth = delta;
-          break;
-
-        case Action_IncreaseCenter:
-          deltaCenter = -delta;
-          break;
-
-        case Action_DecreaseCenter:
-          deltaCenter = delta;
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-    else if (delta > 0)
-    {
-      switch (actionPositive)
-      {
-        case Action_IncreaseWidth:
-          deltaWidth = delta;
-          break;
-
-        case Action_DecreaseWidth:
-          deltaWidth = -delta;
-          break;
-
-        case Action_IncreaseCenter:
-          deltaCenter = delta;
-          break;
-
-        case Action_DecreaseCenter:
-          deltaCenter = -delta;
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-  }
-    
-    
-  RadiographyWindowingTracker::RadiographyWindowingTracker(UndoRedoStack& undoRedoStack,
-                                                           RadiographyScene& scene,
-                                                           RadiographyWidget& widget,
-                                                           ImageInterpolation interpolationDuringTracking,
-                                                           int x,
-                                                           int y,
-                                                           Action leftAction,
-                                                           Action rightAction,
-                                                           Action upAction,
-                                                           Action downAction) :
-    undoRedoStack_(undoRedoStack),
-    scene_(scene),
-    widget_(widget),
-    initialWidgetInterpolation_(widget.GetInterpolation()),
-    clickX_(x),
-    clickY_(y),
-    leftAction_(leftAction),
-    rightAction_(rightAction),
-    upAction_(upAction),
-    downAction_(downAction)
-  {
-    scene_.GetWindowingWithDefault(sourceCenter_, sourceWidth_);
-    widget_.SetInterpolation(interpolationDuringTracking);
-
-    float minValue, maxValue;
-    scene.GetRange(minValue, maxValue);
-
-    assert(minValue <= maxValue);
-
-    float delta = (maxValue - minValue);
-    strength_ = delta / 1000.0f; // 1px move will change the ww/wc by 0.1%
-
-    if (strength_ < 1)
-    {
-      strength_ = 1;
-    }
-  }
-
-
-  void RadiographyWindowingTracker::Render(CairoContext& context,
-                                           double zoom)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-  
-
-  void RadiographyWindowingTracker::MouseUp()
-  {
-    widget_.SetInterpolation(initialWidgetInterpolation_);
-    undoRedoStack_.Add(new UndoRedoCommand(*this));
-  }
-
-
-  void RadiographyWindowingTracker::MouseMove(int displayX,
-                                              int displayY,
-                                              double sceneX,
-                                              double sceneY,
-                                              const std::vector<Deprecated::Touch>& displayTouches,
-                                              const std::vector<Deprecated::Touch>& sceneTouches)
-  {
-    // This follows the behavior of the Osimis Web viewer:
-    // https://bitbucket.org/osimis/osimis-webviewer-plugin/src/master/frontend/src/app/viewport/image-plugins/windowing-viewport-tool.class.js
-
-    static const float SCALE = 1.0;
-      
-    int deltaCenter = 0;
-    int deltaWidth = 0;
-
-    ComputeAxisEffect(deltaCenter, deltaWidth, displayX - clickX_, leftAction_, rightAction_);
-    ComputeAxisEffect(deltaCenter, deltaWidth, displayY - clickY_, upAction_, downAction_);
-
-    float newCenter = sourceCenter_ + (deltaCenter / SCALE * strength_);
-    float newWidth = sourceWidth_ + (deltaWidth / SCALE * strength_);
-    scene_.SetWindowing(newCenter, newWidth);
-  }
-}
--- a/Framework/Deprecated/Radiography/RadiographyWindowingTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/UndoRedoStack.h"
-#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
-#include "RadiographyScene.h"
-
-namespace OrthancStone
-{
-
-  class RadiographyWidget;
-
-  class RadiographyWindowingTracker : public Deprecated::IWorldSceneMouseTracker
-  {   
-  public:
-    enum Action
-    {
-      Action_IncreaseWidth,
-      Action_DecreaseWidth,
-      Action_IncreaseCenter,
-      Action_DecreaseCenter
-    };
-    
-  private:
-    class UndoRedoCommand;
-
-    UndoRedoStack&      undoRedoStack_;
-    RadiographyScene&   scene_;
-    RadiographyWidget&  widget_;
-    ImageInterpolation  initialWidgetInterpolation_;
-    int                 clickX_;
-    int                 clickY_;
-    Action              leftAction_;
-    Action              rightAction_;
-    Action              upAction_;
-    Action              downAction_;
-    float               strength_;
-    float               sourceCenter_;
-    float               sourceWidth_;
-
-    static void ComputeAxisEffect(int& deltaCenter,
-                                  int& deltaWidth,
-                                  int delta,
-                                  Action actionNegative,
-                                  Action actionPositive);    
-    
-  public:
-    RadiographyWindowingTracker(UndoRedoStack& undoRedoStack,
-                                RadiographyScene& scene,
-                                RadiographyWidget& widget,
-                                ImageInterpolation interpolationDuringTracking,
-                                int x,
-                                int y,
-                                Action leftAction,
-                                Action rightAction,
-                                Action upAction,
-                                Action downAction);
-    
-    virtual bool HasRender() const
-    {
-      return false;
-    }
-
-    virtual void Render(CairoContext& context,
-                        double zoom);
-
-    virtual void MouseUp();
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double sceneX,
-                           double sceneY,
-                           const std::vector<Deprecated::Touch>& displayTouches,
-                           const std::vector<Deprecated::Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/SmartLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,285 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SmartLoader.h"
-
-#include "../StoneException.h"
-#include "Layers/DicomSeriesVolumeSlicer.h"
-#include "Layers/FrameRenderer.h"
-#include "Widgets/SliceViewerWidget.h"
-
-#include <Images/Image.h>
-#include <Logging.h>
-
-namespace Deprecated
-{
-  enum CachedSliceStatus
-  {
-    CachedSliceStatus_ScheduledToLoad,
-    CachedSliceStatus_GeometryLoaded,
-    CachedSliceStatus_ImageLoaded
-  };
-
-  class SmartLoader::CachedSlice : public IVolumeSlicer
-  {
-  public:
-    class RendererFactory : public LayerReadyMessage::IRendererFactory
-    {
-    private:
-      const CachedSlice&  that_;
-
-    public:
-      RendererFactory(const CachedSlice& that) :
-        that_(that)
-      {
-      }
-
-      virtual ILayerRenderer* CreateRenderer() const
-      {
-        bool isFull = (that_.effectiveQuality_ == SliceImageQuality_FullPng ||
-                       that_.effectiveQuality_ == SliceImageQuality_FullPam);
-
-        return FrameRenderer::CreateRenderer(*that_.image_, *that_.slice_, isFull);
-      }
-    };
-    
-    unsigned int                    sliceIndex_;
-    std::unique_ptr<Slice>            slice_;
-    boost::shared_ptr<Orthanc::ImageAccessor>   image_;
-    SliceImageQuality               effectiveQuality_;
-    CachedSliceStatus               status_;
-
-  public:
-    virtual ~CachedSlice()
-    {
-    }
-
-    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
-                           const OrthancStone::CoordinateSystem3D& viewportSlice)
-    {
-      // TODO: viewportSlice is not used !!!!
-      slice_->GetExtent(points);
-      return true;
-    }
-
-    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice)
-    {
-      // TODO: viewportSlice is not used !!!!
-
-      // it has already been loaded -> trigger the "layer ready" message immediately otherwise, do nothing now.  The LayerReady will be triggered
-      // once the VolumeSlicer is ready
-      if (status_ == CachedSliceStatus_ImageLoaded)
-      {
-        LOG(WARNING) << "ScheduleLayerCreation for CachedSlice (image is loaded): " << slice_->GetOrthancInstanceId();
-
-        RendererFactory factory(*this);   
-        BroadcastMessage(IVolumeSlicer::LayerReadyMessage(*this, factory, slice_->GetGeometry()));
-      }
-      else
-      {
-        LOG(WARNING) << "ScheduleLayerCreation for CachedSlice (image is not loaded yet): " << slice_->GetOrthancInstanceId();
-      }
-    }
-
-    CachedSlice* Clone() const
-    {
-      CachedSlice* output = new CachedSlice;
-      output->sliceIndex_ = sliceIndex_;
-      output->slice_.reset(slice_->Clone());
-      output->image_ = image_;
-      output->effectiveQuality_ = effectiveQuality_;
-      output->status_ = status_;
-
-      return output;
-    }
-
-  };
-
-
-  SmartLoader::SmartLoader(boost::shared_ptr<OrthancApiClient> orthancApiClient) :
-    imageQuality_(SliceImageQuality_FullPam),
-    orthancApiClient_(orthancApiClient)
-  {
-  }
-
-  void SmartLoader::SetFrameInWidget(SliceViewerWidget& sliceViewer, 
-                                     size_t layerIndex, 
-                                     const std::string& instanceId, 
-                                     unsigned int frame)
-  {
-    // TODO: check if this frame has already been loaded or is already being loaded.
-    // - if already loaded: create a "clone" that will emit the GeometryReady/ImageReady messages "immediately"
-    //   (it can not be immediate because Observers needs to register first and this is done after this method returns)
-    // - if currently loading, we need to return an object that will observe the existing VolumeSlicer and forward
-    //   the messages to its observables
-    // in both cases, we must be carefull about objects lifecycle !!!
-
-    boost::shared_ptr<IVolumeSlicer> layerSource;
-    std::string sliceKeyId = instanceId + ":" + boost::lexical_cast<std::string>(frame);
-    SmartLoader::CachedSlice* cachedSlice = NULL;
-
-    if (cachedSlices_.find(sliceKeyId) != cachedSlices_.end()) // && cachedSlices_[sliceKeyId]->status_ == CachedSliceStatus_Loaded)
-    {
-      layerSource.reset(cachedSlices_[sliceKeyId]->Clone());
-      cachedSlice = dynamic_cast<SmartLoader::CachedSlice*>(layerSource.get());
-    }
-    else
-    {
-      layerSource.reset(new DicomSeriesVolumeSlicer);
-      dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->Connect(orthancApiClient_);
-      dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->SetImageQuality(imageQuality_);
-      Register<IVolumeSlicer::GeometryReadyMessage>(*layerSource, &SmartLoader::OnLayerGeometryReady);
-      Register<DicomSeriesVolumeSlicer::FrameReadyMessage>(*layerSource, &SmartLoader::OnFrameReady);
-      Register<IVolumeSlicer::LayerReadyMessage>(*layerSource, &SmartLoader::OnLayerReady);
-      dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->LoadFrame(instanceId, frame);
-    }
-
-    // make sure that the widget registers the events before we trigger them
-    if (sliceViewer.GetLayerCount() == layerIndex)
-    {
-      sliceViewer.AddLayer(layerSource);
-    }
-    else if (sliceViewer.GetLayerCount() > layerIndex)
-    {
-      sliceViewer.ReplaceLayer(layerIndex, layerSource);
-    }
-    else
-    {
-      throw OrthancStone::StoneException(OrthancStone::ErrorCode_CanOnlyAddOneLayerAtATime);
-    }
-
-    if (cachedSlice != NULL)
-    {
-      BroadcastMessage(IVolumeSlicer::GeometryReadyMessage(*cachedSlice));
-    }
-
-  }
-
-  void SmartLoader::PreloadSlice(const std::string instanceId, 
-                                 unsigned int frame)
-  {
-    // TODO: reactivate -> need to be able to ScheduleLayerLoading in IVolumeSlicer without calling ScheduleLayerCreation
-    return;
-    // TODO: check if it is already in the cache
-
-
-
-    // create the slice in the cache with "empty" data
-    boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice);
-    cachedSlice->slice_.reset(new Slice(instanceId, frame));
-    cachedSlice->status_ = CachedSliceStatus_ScheduledToLoad;
-    std::string sliceKeyId = instanceId + ":" + boost::lexical_cast<std::string>(frame);
-
-    LOG(WARNING) << "Will preload: " << sliceKeyId;
-
-    cachedSlices_[sliceKeyId] = boost::shared_ptr<CachedSlice>(cachedSlice);
-
-    std::unique_ptr<IVolumeSlicer> layerSource(new DicomSeriesVolumeSlicer);
-    dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->Connect(orthancApiClient_);
-    dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->SetImageQuality(imageQuality_);
-    Register<IVolumeSlicer::GeometryReadyMessage>(*layerSource, &SmartLoader::OnLayerGeometryReady);
-    Register<DicomSeriesVolumeSlicer::FrameReadyMessage>(*layerSource, &SmartLoader::OnFrameReady);
-    Register<IVolumeSlicer::LayerReadyMessage>(*layerSource, &SmartLoader::OnLayerReady);
-    dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->LoadFrame(instanceId, frame);
-
-    // keep a ref to the VolumeSlicer until the slice is fully loaded and saved to cache
-    preloadingInstances_[sliceKeyId] = boost::shared_ptr<IVolumeSlicer>(layerSource.release());
-  }
-
-
-//  void PreloadStudy(const std::string studyId)
-//  {
-//    /* TODO */
-//  }
-
-//  void PreloadSeries(const std::string seriesId)
-//  {
-//    /* TODO */
-//  }
-
-
-  void SmartLoader::OnLayerGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message)
-  {
-    const DicomSeriesVolumeSlicer& source =
-      dynamic_cast<const DicomSeriesVolumeSlicer&>(message.GetOrigin());
-
-    // save/replace the slice in cache
-    const Slice& slice = source.GetSlice(0); // TODO handle GetSliceCount()
-    std::string sliceKeyId = (slice.GetOrthancInstanceId() + ":" + 
-                              boost::lexical_cast<std::string>(slice.GetFrame()));
-
-    LOG(WARNING) << "Geometry ready: " << sliceKeyId;
-
-    boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice);
-    cachedSlice->slice_.reset(slice.Clone());
-    cachedSlice->effectiveQuality_ = source.GetImageQuality();
-    cachedSlice->status_ = CachedSliceStatus_GeometryLoaded;
-
-    cachedSlices_[sliceKeyId] = boost::shared_ptr<CachedSlice>(cachedSlice);
-
-    // re-emit original Layer message to observers
-    BroadcastMessage(message);
-  }
-
-
-  void SmartLoader::OnFrameReady(const DicomSeriesVolumeSlicer::FrameReadyMessage& message)
-  {
-    // save/replace the slice in cache
-    const Slice& slice = message.GetSlice();
-    std::string sliceKeyId = (slice.GetOrthancInstanceId() + ":" + 
-                              boost::lexical_cast<std::string>(slice.GetFrame()));
-
-    LOG(WARNING) << "Image ready: " << sliceKeyId;
-
-    boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice);
-    cachedSlice->image_.reset(Orthanc::Image::Clone(message.GetFrame()));
-    cachedSlice->effectiveQuality_ = message.GetImageQuality();
-    cachedSlice->slice_.reset(message.GetSlice().Clone());
-    cachedSlice->status_ = CachedSliceStatus_ImageLoaded;
-
-    cachedSlices_[sliceKeyId] = cachedSlice;
-
-    // re-emit original Layer message to observers
-    BroadcastMessage(message);
-  }
-
-
-  void SmartLoader::OnLayerReady(const IVolumeSlicer::LayerReadyMessage& message)
-  {
-    const DicomSeriesVolumeSlicer& source =
-      dynamic_cast<const DicomSeriesVolumeSlicer&>(message.GetOrigin());
-    
-    const Slice& slice = source.GetSlice(0); // TODO handle GetSliceCount() ?
-    std::string sliceKeyId = (slice.GetOrthancInstanceId() + ":" + 
-                              boost::lexical_cast<std::string>(slice.GetFrame()));
-
-    LOG(WARNING) << "Layer ready: " << sliceKeyId;
-
-    // remove the slice from the preloading slices now that it has been fully loaded and it is referenced in the cache
-    if (preloadingInstances_.find(sliceKeyId) != preloadingInstances_.end())
-    {
-      preloadingInstances_.erase(sliceKeyId);
-    }
-
-    // re-emit original Layer message to observers
-    BroadcastMessage(message);
-  }
-}
--- a/Framework/Deprecated/SmartLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-#include <map>
-
-#include "Layers/DicomSeriesVolumeSlicer.h"
-#include "../Messages/IObservable.h"
-#include "Toolbox/OrthancApiClient.h"
-
-namespace Deprecated
-{
-  class SliceViewerWidget;
-
-  class SmartLoader : public OrthancStone::IObservable, public OrthancStone::ObserverBase<SmartLoader>
-  {
-    class CachedSlice;
-
-  protected:
-    typedef std::map<std::string, boost::shared_ptr<SmartLoader::CachedSlice> > CachedSlices;
-    CachedSlices cachedSlices_;
-
-    typedef std::map<std::string, boost::shared_ptr<IVolumeSlicer> > PreloadingInstances;
-    PreloadingInstances preloadingInstances_;
-
-    SliceImageQuality     imageQuality_;
-    boost::shared_ptr<OrthancApiClient>  orthancApiClient_;
-
-  public:
-    SmartLoader(boost::shared_ptr<OrthancApiClient> orthancApiClient);  // TODO: add maxPreloadStorageSizeInBytes
-
-//    void PreloadStudy(const std::string studyId);
-//    void PreloadSeries(const std::string seriesId);
-    void PreloadSlice(const std::string instanceId, unsigned int frame);
-
-    void SetImageQuality(SliceImageQuality imageQuality) { imageQuality_ = imageQuality; }
-
-    void SetFrameInWidget(SliceViewerWidget& sliceViewer, size_t layerIndex, const std::string& instanceId, unsigned int frame);
-
-    void GetFirstInstanceIdForSeries(std::string& output, const std::string& seriesId);
-
-  private:
-    void OnLayerGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message);
-    void OnFrameReady(const DicomSeriesVolumeSlicer::FrameReadyMessage& message);
-    void OnLayerReady(const IVolumeSlicer::LayerReadyMessage& message);
-
-  };
-
-}
--- a/Framework/Deprecated/Toolbox/BaseWebService.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "BaseWebService.h"
-
-#include "../../Messages/IObservable.h"
-#include "../../../Platforms/Generic/IOracleCommand.h"
-
-#include <OrthancException.h>
-
-#include <boost/shared_ptr.hpp>
-#include <algorithm>
-#include <Logging.h>
-
-namespace Deprecated
-{
-
-
-  class BaseWebService::BaseWebServicePayload : public Orthanc::IDynamicObject
-  {
-  private:
-    std::unique_ptr< MessageHandler<IWebService::HttpRequestSuccessMessage> >   userSuccessHandler_;
-    std::unique_ptr< MessageHandler<IWebService::HttpRequestErrorMessage> >     userFailureHandler_;
-    std::unique_ptr< Orthanc::IDynamicObject>                                   userPayload_;
-
-  public:
-    BaseWebServicePayload(MessageHandler<IWebService::HttpRequestSuccessMessage>* userSuccessHandler,
-                          MessageHandler<IWebService::HttpRequestErrorMessage>* userFailureHandler,
-                          Orthanc::IDynamicObject* userPayload) :
-      userSuccessHandler_(userSuccessHandler),
-      userFailureHandler_(userFailureHandler),
-      userPayload_(userPayload)
-    {
-    }
-
-    void HandleSuccess(const IWebService::HttpRequestSuccessMessage& message) const
-    {
-      if (userSuccessHandler_.get() != NULL)
-      {
-        // recreate a success message with the user payload
-        IWebService::HttpRequestSuccessMessage successMessage(message.GetUri(),
-                                                              message.GetAnswer(),
-                                                              message.GetAnswerSize(),
-                                                              message.GetAnswerHttpHeaders(),
-                                                              userPayload_.get());
-        userSuccessHandler_->Apply(successMessage);
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-
-    void HandleFailure(const IWebService::HttpRequestErrorMessage& message) const
-    {
-      if (userFailureHandler_.get() != NULL)
-      {
-        // recreate a failure message with the user payload
-        IWebService::HttpRequestErrorMessage failureMessage(message.GetUri(),
-                                                            message.GetHttpStatus(),
-                                                            userPayload_.get());
-
-        userFailureHandler_->Apply(failureMessage);
-      }
-    }
-
-  };
-
-
-  void BaseWebService::GetAsync(const std::string& uri,
-                                const HttpHeaders& headers,
-                                Orthanc::IDynamicObject* payload  /* takes ownership */,
-                                MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
-                                MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
-                                unsigned int timeoutInSeconds)
-  {
-    if (!cacheEnabled_ || cache_.find(uri) == cache_.end())
-    {
-      GetAsyncInternal(uri, headers,
-                       new BaseWebService::BaseWebServicePayload(successCallback, failureCallback, payload), // ownership is transfered
-                       new DeprecatedCallable<BaseWebService, IWebService::HttpRequestSuccessMessage>
-                       (GetSharedObserver(), &BaseWebService::CacheAndNotifyHttpSuccess),
-                       new DeprecatedCallable<BaseWebService, IWebService::HttpRequestErrorMessage>
-                       (GetSharedObserver(), &BaseWebService::NotifyHttpError),
-                       timeoutInSeconds);
-    }
-    else
-    {
-      // put the uri on top of the most recently accessed list
-      std::deque<std::string>::iterator it = std::find(orderedCacheKeys_.begin(), orderedCacheKeys_.end(), uri);
-      if (it != orderedCacheKeys_.end())
-      {
-        std::string uri = *it;
-        orderedCacheKeys_.erase(it);
-        orderedCacheKeys_.push_front(uri);
-      }
-
-      // create a command and "post" it to the Oracle so it is executed and commited "later"
-      NotifyHttpSuccessLater(cache_[uri], payload, successCallback);
-    }
-
-  }
-
-
-
-  void BaseWebService::NotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message)
-  {
-    if (message.HasPayload())
-    {
-      dynamic_cast<const BaseWebServicePayload&>(message.GetPayload()).HandleSuccess(message);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-  void BaseWebService::CacheAndNotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message)
-  {
-    if (cacheEnabled_)
-    {
-      while (cacheCurrentSize_ + message.GetAnswerSize() > cacheMaxSize_ && orderedCacheKeys_.size() > 0)
-      {
-        VLOG(1) << "BaseWebService: clearing cache: " << cacheCurrentSize_ << "/" << cacheMaxSize_ << "(" << message.GetAnswerSize() << ")";
-        const std::string& oldestUri = orderedCacheKeys_.back();
-        HttpCache::iterator it = cache_.find(oldestUri);
-        if (it != cache_.end())
-        {
-          cacheCurrentSize_ -= it->second->GetAnswerSize();
-          cache_.erase(it);
-        }
-        orderedCacheKeys_.pop_back();
-
-      }
-
-      boost::shared_ptr<CachedHttpRequestSuccessMessage> cachedMessage(new CachedHttpRequestSuccessMessage(message));
-      cache_[message.GetUri()] = cachedMessage;
-      orderedCacheKeys_.push_front(message.GetUri());
-      cacheCurrentSize_ += message.GetAnswerSize();
-    }
-
-    NotifyHttpSuccess(message);
-  }
-
-  void BaseWebService::NotifyHttpError(const IWebService::HttpRequestErrorMessage& message)
-  {
-    if (message.HasPayload())
-    {
-      dynamic_cast<const BaseWebServicePayload&>(message.GetPayload()).HandleFailure(message);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-
-
-}
--- a/Framework/Deprecated/Toolbox/BaseWebService.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IWebService.h"
-#include "../../Messages/ObserverBase.h"
-
-#include <string>
-#include <map>
-#include <deque>
-
-namespace Deprecated
-{
-  // This is an intermediate of IWebService that implements some caching on
-  // the HTTP GET requests
-  class BaseWebService : public IWebService, public OrthancStone::ObserverBase<BaseWebService>
-  {
-  public:
-    class CachedHttpRequestSuccessMessage
-    {
-    protected:
-      std::string                    uri_;
-      void*                          answer_;
-      size_t                         answerSize_;
-      IWebService::HttpHeaders       answerHeaders_;
-
-    public:
-      CachedHttpRequestSuccessMessage(const IWebService::HttpRequestSuccessMessage& message) :
-        uri_(message.GetUri()),
-        answerSize_(message.GetAnswerSize()),
-        answerHeaders_(message.GetAnswerHttpHeaders())
-      {
-        answer_ =  malloc(answerSize_);
-        memcpy(answer_, message.GetAnswer(), answerSize_);
-      }
-
-      ~CachedHttpRequestSuccessMessage()
-      {
-        free(answer_);
-      }
-
-      const std::string& GetUri() const
-      {
-        return uri_;
-      }
-
-      const void* GetAnswer() const
-      {
-        return answer_;
-      }
-
-      size_t GetAnswerSize() const
-      {
-        return answerSize_;
-      }
-
-      const IWebService::HttpHeaders&  GetAnswerHttpHeaders() const
-      {
-        return answerHeaders_;
-      }
-
-    };
-  protected:
-    class BaseWebServicePayload;
-
-    bool          cacheEnabled_;
-    size_t        cacheCurrentSize_;
-    size_t        cacheMaxSize_;
-
-    typedef std::map<std::string, boost::shared_ptr<CachedHttpRequestSuccessMessage> > HttpCache;
-    HttpCache cache_;
-    std::deque<std::string> orderedCacheKeys_;
-
-  public:
-    BaseWebService() :
-      cacheEnabled_(false),
-      cacheCurrentSize_(0),
-      cacheMaxSize_(100*1024*1024)
-    {
-    }
-
-    virtual ~BaseWebService()
-    {
-    }
-
-    virtual void EnableCache(bool enable)
-    {
-      cacheEnabled_ = enable;
-    }
-
-    virtual void GetAsync(const std::string& uri,
-                          const HttpHeaders& headers,
-                          Orthanc::IDynamicObject* payload  /* takes ownership */,
-                          MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
-                          MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                          unsigned int timeoutInSeconds = 60);
-
-  protected:
-    virtual void GetAsyncInternal(const std::string& uri,
-                          const HttpHeaders& headers,
-                          Orthanc::IDynamicObject* payload  /* takes ownership */,
-                          MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
-                          MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                          unsigned int timeoutInSeconds = 60) = 0;
-
-    virtual void NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedHttpMessage,
-                                        Orthanc::IDynamicObject* payload, // takes ownership
-                                        MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback) = 0;
-
-  private:
-    void NotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message);
-
-    void NotifyHttpError(const IWebService::HttpRequestErrorMessage& message);
-
-    void CacheAndNotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message);
-
-  };
-}
--- a/Framework/Deprecated/Toolbox/DicomFrameConverter.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,282 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomFrameConverter.h"
-
-#include "../../Toolbox/LinearAlgebra.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-namespace Deprecated
-{
-  static const Orthanc::DicomTag IMAGE_TAGS[] =
-  {
-    Orthanc::DICOM_TAG_BITS_STORED,
-    Orthanc::DICOM_TAG_DOSE_GRID_SCALING,
-    Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION,
-    Orthanc::DICOM_TAG_PIXEL_REPRESENTATION,
-    Orthanc::DICOM_TAG_RESCALE_INTERCEPT,
-    Orthanc::DICOM_TAG_RESCALE_SLOPE,
-    Orthanc::DICOM_TAG_WINDOW_CENTER,
-    Orthanc::DICOM_TAG_WINDOW_WIDTH
-  };
-
-  
-  void DicomFrameConverter::SetDefaultParameters()
-  {
-    isSigned_ = true;
-    isColor_ = false;
-    hasRescale_ = false;
-    rescaleIntercept_ = 0;
-    rescaleSlope_ = 1;
-    hasDefaultWindow_ = false;
-    defaultWindowCenter_ = 128;
-    defaultWindowWidth_ = 256;
-    expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale16;
-  }
-
-
-  void DicomFrameConverter::ReadParameters(const Orthanc::DicomMap& dicom)
-  {
-    SetDefaultParameters();
-
-    OrthancStone::Vector c, w;
-    if (OrthancStone::LinearAlgebra::ParseVector(c, dicom, Orthanc::DICOM_TAG_WINDOW_CENTER) &&
-        OrthancStone::LinearAlgebra::ParseVector(w, dicom, Orthanc::DICOM_TAG_WINDOW_WIDTH) &&
-        c.size() > 0 && 
-        w.size() > 0)
-    {
-      hasDefaultWindow_ = true;
-      defaultWindowCenter_ = static_cast<float>(c[0]);
-      defaultWindowWidth_ = static_cast<float>(w[0]);
-    }
-
-    int32_t tmp;
-    if (!dicom.ParseInteger32(tmp, Orthanc::DICOM_TAG_PIXEL_REPRESENTATION))
-    {
-      // Type 1 tag, must be present
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    isSigned_ = (tmp == 1);
-
-    double doseGridScaling;
-    bool isRTDose = false;
-    
-    if (dicom.ParseDouble(rescaleIntercept_, Orthanc::DICOM_TAG_RESCALE_INTERCEPT) &&
-        dicom.ParseDouble(rescaleSlope_, Orthanc::DICOM_TAG_RESCALE_SLOPE))
-    {
-      hasRescale_ = true;
-    }
-    else if (dicom.ParseDouble(doseGridScaling, Orthanc::DICOM_TAG_DOSE_GRID_SCALING))
-    {
-      // This is for RT-DOSE
-      hasRescale_ = true;
-      isRTDose = true;
-      rescaleIntercept_ = 0;
-      rescaleSlope_ = doseGridScaling;
-
-      if (!dicom.ParseInteger32(tmp, Orthanc::DICOM_TAG_BITS_STORED))
-      {
-        // Type 1 tag, must be present
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-
-      switch (tmp)
-      {
-        case 16:
-          expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale16;
-          break;
-
-        case 32:
-          expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale32;
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-    }
-
-    std::string photometric;
-    if (dicom.LookupStringValue(photometric, Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION, false))
-    {
-      photometric = Orthanc::Toolbox::StripSpaces(photometric);
-    }
-    else
-    {
-      // Type 1 tag, must be present
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    photometric_ = Orthanc::StringToPhotometricInterpretation(photometric.c_str());
-    
-    isColor_ = (photometric != "MONOCHROME1" &&
-                photometric != "MONOCHROME2");
-
-    // TODO Add more checks, e.g. on the number of bytes per value
-    // (cf. DicomImageInformation.h in Orthanc)
-
-    if (!isRTDose)
-    {
-      if (isColor_)
-      {
-        expectedPixelFormat_ = Orthanc::PixelFormat_RGB24;
-      }
-      else if (isSigned_)
-      {
-        expectedPixelFormat_ = Orthanc::PixelFormat_SignedGrayscale16;
-      }
-      else
-      {
-        expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale16;
-      }
-    }
-  }
-
-  
-  void DicomFrameConverter::ReadParameters(const OrthancPlugins::IDicomDataset& dicom)
-  {
-    Orthanc::DicomMap converted;
-
-    for (size_t i = 0; i < sizeof(IMAGE_TAGS) / sizeof(Orthanc::DicomTag); i++)
-    {
-      OrthancPlugins::DicomTag tag(IMAGE_TAGS[i].GetGroup(), IMAGE_TAGS[i].GetElement());
-    
-      std::string value;
-      if (dicom.GetStringValue(value, tag))
-      {
-        converted.SetValue(IMAGE_TAGS[i], value, false);
-      }
-    }
-
-    ReadParameters(converted);
-  }
-    
-
-  void DicomFrameConverter::ConvertFrameInplace(std::unique_ptr<Orthanc::ImageAccessor>& source) const
-  {
-    assert(sizeof(float) == 4);
-
-    if (source.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (source->GetFormat() == GetExpectedPixelFormat() &&
-        source->GetFormat() == Orthanc::PixelFormat_RGB24)
-    {
-      // No conversion has to be done, check out (*)
-      return;
-    }
-    else
-    {
-      source.reset(ConvertFrame(*source));
-    }
-  }
-
-
-  Orthanc::ImageAccessor* DicomFrameConverter::ConvertFrame(const Orthanc::ImageAccessor& source) const
-  {
-    assert(sizeof(float) == 4);
-
-    Orthanc::PixelFormat sourceFormat = source.GetFormat();
-
-    if (sourceFormat != GetExpectedPixelFormat())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    if (sourceFormat == Orthanc::PixelFormat_RGB24)
-    {
-      // This is the case of a color image. No conversion has to be done (*)
-      std::unique_ptr<Orthanc::Image> converted(new Orthanc::Image(Orthanc::PixelFormat_RGB24, 
-                                                                 source.GetWidth(), 
-                                                                 source.GetHeight(),
-                                                                 false));
-      Orthanc::ImageProcessing::Copy(*converted, source);
-      return converted.release();
-    }
-    else
-    {
-      assert(sourceFormat == Orthanc::PixelFormat_Grayscale16 ||
-             sourceFormat == Orthanc::PixelFormat_Grayscale32 ||
-             sourceFormat == Orthanc::PixelFormat_SignedGrayscale16);
-
-      // This is the case of a grayscale frame. Convert it to Float32.
-      std::unique_ptr<Orthanc::Image> converted(new Orthanc::Image(Orthanc::PixelFormat_Float32, 
-                                                                 source.GetWidth(), 
-                                                                 source.GetHeight(),
-                                                                 false));
-      Orthanc::ImageProcessing::Convert(*converted, source);
-
-      // Correct rescale slope/intercept if need be
-      ApplyRescale(*converted, sourceFormat != Orthanc::PixelFormat_Grayscale32);
-      
-      return converted.release();
-    }
-  }
-
-
-  void DicomFrameConverter::ApplyRescale(Orthanc::ImageAccessor& image,
-                                         bool useDouble) const
-  {
-    if (image.GetFormat() != Orthanc::PixelFormat_Float32)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-    
-    if (hasRescale_)
-    {
-      for (unsigned int y = 0; y < image.GetHeight(); y++)
-      {
-        float* p = reinterpret_cast<float*>(image.GetRow(y));
-
-        if (useDouble)
-        {
-          // Slower, accurate implementation using double
-          for (unsigned int x = 0; x < image.GetWidth(); x++, p++)
-          {
-            double value = static_cast<double>(*p);
-            *p = static_cast<float>(value * rescaleSlope_ + rescaleIntercept_);
-          }
-        }
-        else
-        {
-          // Fast, approximate implementation using float
-          for (unsigned int x = 0; x < image.GetWidth(); x++, p++)
-          {
-            *p = (*p) * static_cast<float>(rescaleSlope_) + static_cast<float>(rescaleIntercept_);
-          }
-        }
-      }
-    }
-  }
-
-  
-  double DicomFrameConverter::Apply(double x) const
-  {
-    return x * rescaleSlope_ + rescaleIntercept_;
-  }
-
-}
--- a/Framework/Deprecated/Toolbox/DicomFrameConverter.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <IDicomDataset.h>
-#include <Compatibility.h>
-#include <DicomFormat/DicomMap.h>
-#include <Images/ImageAccessor.h>
-
-#include <memory>
-
-namespace Deprecated
-{
-  /**
-   * This class is responsible for converting the pixel format of a
-   * DICOM frame coming from Orthanc, into a pixel format that is
-   * suitable for Stone, given the relevant DICOM tags:
-   * - Color frames will stay in the RGB24 format.
-   * - Grayscale frames will be converted to the Float32 format.
-   **/
-  class DicomFrameConverter
-  {
-  private:
-    bool    isSigned_;
-    bool    isColor_;
-    bool    hasRescale_;
-    double  rescaleIntercept_;
-    double  rescaleSlope_;
-    bool    hasDefaultWindow_;
-    double  defaultWindowCenter_;
-    double  defaultWindowWidth_;
-    
-    Orthanc::PhotometricInterpretation  photometric_;
-    Orthanc::PixelFormat                expectedPixelFormat_;
-
-    void SetDefaultParameters();
-
-  public:
-    DicomFrameConverter()
-    {
-      SetDefaultParameters();
-    }
-
-    ~DicomFrameConverter()
-    {
-      // TODO: check whether this dtor is called or not
-      // An MSVC warning explains that declaring an
-      // std::unique_ptr with a forward-declared type
-      // prevents its dtor from being called. Does not
-      // seem an issue here (only POD types inside), but
-      // definitely something to keep an eye on.
-      (void)0;
-    }
-
-    // AM: this is required to serialize/deserialize it
-    DicomFrameConverter(
-        bool isSigned,
-        bool isColor,
-        bool hasRescale,
-        double rescaleIntercept,
-        double rescaleSlope,
-        bool hasDefaultWindow,
-        double defaultWindowCenter,
-        double defaultWindowWidth,
-        Orthanc::PhotometricInterpretation photometric,
-        Orthanc::PixelFormat expectedPixelFormat
-        ):
-      isSigned_(isSigned),
-      isColor_(isColor),
-      hasRescale_(hasRescale),
-      rescaleIntercept_(rescaleIntercept),
-      rescaleSlope_(rescaleSlope),
-      hasDefaultWindow_(hasDefaultWindow),
-      defaultWindowCenter_(defaultWindowCenter),
-      defaultWindowWidth_(defaultWindowWidth),
-      photometric_(photometric),
-      expectedPixelFormat_(expectedPixelFormat)
-    {}
-
-    void GetParameters(bool& isSigned,
-                       bool& isColor,
-                       bool& hasRescale,
-                       double& rescaleIntercept,
-                       double& rescaleSlope,
-                       bool& hasDefaultWindow,
-                       double& defaultWindowCenter,
-                       double& defaultWindowWidth,
-                       Orthanc::PhotometricInterpretation& photometric,
-                       Orthanc::PixelFormat& expectedPixelFormat) const
-    {
-      isSigned = isSigned_;
-      isColor = isColor_;
-      hasRescale = hasRescale_;
-      rescaleIntercept = rescaleIntercept_;
-      rescaleSlope = rescaleSlope_;
-      hasDefaultWindow = hasDefaultWindow_;
-      defaultWindowCenter = defaultWindowCenter_;
-      defaultWindowWidth = defaultWindowWidth_;
-      photometric = photometric_;
-      expectedPixelFormat = expectedPixelFormat_;
-    }
-
-    Orthanc::PixelFormat GetExpectedPixelFormat() const
-    {
-      return expectedPixelFormat_;
-    }
-
-    Orthanc::PhotometricInterpretation GetPhotometricInterpretation() const
-    {
-      return photometric_;
-    }
-
-    void ReadParameters(const Orthanc::DicomMap& dicom);
-
-    void ReadParameters(const OrthancPlugins::IDicomDataset& dicom);
-
-    bool HasDefaultWindow() const
-    {
-      return hasDefaultWindow_;
-    }
-    
-    double GetDefaultWindowCenter() const
-    {
-      return defaultWindowCenter_;
-    }
-    
-    double GetDefaultWindowWidth() const
-    {
-      return defaultWindowWidth_;
-    }
-
-    double GetRescaleIntercept() const
-    {
-      return rescaleIntercept_;
-    }
-
-    double GetRescaleSlope() const
-    {
-      return rescaleSlope_;
-    }
-
-    void ConvertFrameInplace(std::unique_ptr<Orthanc::ImageAccessor>& source) const;
-
-    Orthanc::ImageAccessor* ConvertFrame(const Orthanc::ImageAccessor& source) const;
-
-    void ApplyRescale(Orthanc::ImageAccessor& image,
-                      bool useDouble) const;
-
-    double Apply(double x) const;
-  };
-}
--- a/Framework/Deprecated/Toolbox/DownloadStack.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DownloadStack.h"
-
-#include <OrthancException.h>
-
-#include <cassert>
-
-namespace Deprecated
-{
-  bool DownloadStack::CheckInvariants() const
-  {
-    std::vector<bool> dequeued(nodes_.size(), true);
-
-    int i = firstNode_;
-    while (i != NIL)
-    {
-      const Node& node = nodes_[i];
-
-      dequeued[i] = false;
-
-      if (node.next_ != NIL &&
-          nodes_[node.next_].prev_ != i)
-      {
-        return false;
-      }
-
-      if (node.prev_ != NIL &&
-          nodes_[node.prev_].next_ != i)
-      {
-        return false;
-      }
-
-      i = nodes_[i].next_;
-    }
-
-    for (size_t i = 0; i < nodes_.size(); i++)
-    {
-      if (nodes_[i].dequeued_ != dequeued[i])
-      {
-        return false;
-      }
-    }
-
-    return true;
-  }
-
-
-  DownloadStack::DownloadStack(unsigned int size)
-  {
-    nodes_.resize(size);
-
-    if (size == 0)
-    {
-      firstNode_ = NIL;
-    }
-    else
-    {
-      for (size_t i = 0; i < size; i++)
-      {
-        nodes_[i].prev_ = static_cast<int>(i - 1);
-        nodes_[i].next_ = static_cast<int>(i + 1);
-        nodes_[i].dequeued_ = false;
-      }
-
-      nodes_.front().prev_ = NIL;
-      nodes_.back().next_ = NIL;
-      firstNode_ = 0;
-    }
-
-    assert(CheckInvariants());
-  }
-
-
-  DownloadStack::~DownloadStack()
-  {
-    assert(CheckInvariants());    
-  }
-
-
-  bool DownloadStack::Pop(unsigned int& value)
-  {
-    assert(CheckInvariants());
-
-    if (firstNode_ == NIL)
-    {
-      for (size_t i = 0; i < nodes_.size(); i++)
-      {
-        assert(nodes_[i].dequeued_);
-      }
-
-      return false;
-    }
-    else
-    {
-      assert(firstNode_ >= 0 && firstNode_ < static_cast<int>(nodes_.size()));
-      value = firstNode_;
-
-      Node& node = nodes_[firstNode_];
-      assert(node.prev_ == NIL);
-      assert(!node.dequeued_);
-
-      node.dequeued_ = true;
-      firstNode_ = node.next_;
-
-      if (firstNode_ != NIL)
-      {
-        nodes_[firstNode_].prev_ = NIL;
-      }
-
-      return true;
-    }
-  }
-
-
-  void DownloadStack::SetTopNodeInternal(unsigned int value)
-  {
-    assert(CheckInvariants());
-
-    Node& node = nodes_[value];
-
-    if (node.dequeued_)
-    {
-      // This node has already been processed by the download thread, nothing to do
-      return;
-    }
-
-    // Remove the node from the list
-    if (node.prev_ == NIL)
-    {
-      assert(firstNode_ == static_cast<int>(value));
-      
-      // This is already the top node in the list, nothing to do
-      return;
-    }
-
-    nodes_[node.prev_].next_ = node.next_;
-
-    if (node.next_ != NIL)
-    {
-      nodes_[node.next_].prev_ = node.prev_;
-    }
-
-    // Add back the node at the top of the list
-    assert(firstNode_ != NIL);
-
-    Node& old = nodes_[firstNode_];
-    assert(old.prev_ == NIL);
-    assert(!old.dequeued_);
-    node.prev_ = NIL;
-    node.next_ = firstNode_;
-    old.prev_ = value;
-
-    firstNode_ = value;
-  }
-
-  
-  void DownloadStack::SetTopNode(unsigned int value)
-  {
-    if (value >= nodes_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    SetTopNodeInternal(value);
-  }
-
-
-  void DownloadStack::SetTopNodePermissive(int value)
-  {
-    if (value >= 0 &&
-        value < static_cast<int>(nodes_.size()))
-    {
-      SetTopNodeInternal(value);
-    }
-  }
-}
--- a/Framework/Deprecated/Toolbox/DownloadStack.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <vector>
-#include <boost/noncopyable.hpp>
-
-namespace Deprecated
-{
-  class DownloadStack : public boost::noncopyable
-  {
-  private:
-    static const int NIL = -1;
-
-    // This is a doubly-linked list
-    struct Node
-    {
-      int   next_;
-      int   prev_;
-      bool  dequeued_;
-    };
-
-    std::vector<Node>   nodes_;
-    int                 firstNode_;
-
-    bool CheckInvariants() const;
-
-    void SetTopNodeInternal(unsigned int value);  
-
-  public:
-    DownloadStack(unsigned int size);
-
-    ~DownloadStack();
-
-    bool Pop(unsigned int& value);
-
-    void SetTopNode(unsigned int value);  
-
-    void SetTopNodePermissive(int value);
-  };
-}
--- a/Framework/Deprecated/Toolbox/IDelayedCallExecutor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IWebService.h"
-#include "../../Messages/IObserver.h"
-#include "../../Messages/ICallable.h"
-
-#include <IDynamicObject.h>
-#include <Logging.h>
-
-#include <string>
-#include <map>
-
-namespace Deprecated
-{
-  // The IDelayedCall executes a callback after a delay (equivalent to timeout() function in javascript).
-  class IDelayedCallExecutor : public boost::noncopyable
-  {
-  public:
-    ORTHANC_STONE_DEFINE_EMPTY_MESSAGE(__FILE__, __LINE__, TimeoutMessage);
-
-    virtual ~IDelayedCallExecutor()
-    {
-    }
-    
-    virtual void Schedule(MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,
-                          unsigned int timeoutInMs = 1000) = 0;
-  };
-}
--- a/Framework/Deprecated/Toolbox/ISeriesLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ParallelSlices.h"
-
-#include <Images/ImageAccessor.h>
-#include <IDicomDataset.h>
-
-namespace Deprecated
-{
-  class ISeriesLoader : public boost::noncopyable
-  {
-  public:
-    virtual ~ISeriesLoader()
-    {
-    }
-    
-    virtual ParallelSlices& GetGeometry() = 0;
-
-    virtual Orthanc::PixelFormat GetPixelFormat() = 0;
-
-    virtual unsigned int GetWidth() = 0;
-
-    virtual unsigned int GetHeight() = 0;
-
-    virtual OrthancPlugins::IDicomDataset* DownloadDicom(size_t index) = 0;
-
-    // This downloads the frame from Orthanc. The resulting pixel
-    // format must be Grayscale8, Grayscale16, SignedGrayscale16 or
-    // RGB24. Orthanc Stone assumes the conversion of the photometric
-    // interpretation is done by Orthanc.
-    virtual Orthanc::ImageAccessor* DownloadFrame(size_t index) = 0;
-
-    virtual Orthanc::ImageAccessor* DownloadJpegFrame(size_t index,
-                                                      unsigned int quality) = 0;
-
-    virtual bool IsJpegAvailable() = 0;
-  };
-}
--- a/Framework/Deprecated/Toolbox/IWebService.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "IWebService.h"
-
-#include <OrthancException.h>
-
-
-namespace Deprecated
-{
-  const Orthanc::IDynamicObject&
-  IWebService::HttpRequestSuccessMessage::GetPayload() const
-  {
-    if (HasPayload())
-    {
-      return *payload_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-    
-
-  const Orthanc::IDynamicObject&
-  IWebService::HttpRequestErrorMessage::GetPayload() const
-  {
-    if (HasPayload())
-    {
-      return *payload_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-}
--- a/Framework/Deprecated/Toolbox/IWebService.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Messages/IObserver.h"
-#include "../../Messages/ICallable.h"
-
-#include <Enumerations.h>
-#include <IDynamicObject.h>
-#include <Logging.h>
-
-#include <string>
-#include <map>
-
-namespace Deprecated
-{
-  template <typename TMessage>
-  class MessageHandler : public OrthancStone::ICallable
-  {
-  };
-
-
-  template <typename TObserver,
-            typename TMessage>
-  class DeprecatedCallable : public MessageHandler<TMessage>
-  {
-  private:
-    typedef void (TObserver::* MemberMethod) (const TMessage&);
-
-    boost::weak_ptr<OrthancStone::IObserver>  observer_;
-    MemberMethod                function_;
-
-  public:
-    DeprecatedCallable(boost::shared_ptr<TObserver> observer,
-                       MemberMethod function) :
-      observer_(observer),
-      function_(function)
-    {
-    }
-
-    virtual void Apply(const OrthancStone::IMessage& message)
-    {
-      boost::shared_ptr<OrthancStone::IObserver> lock(observer_);
-      if (lock)
-      {
-        TObserver& observer = dynamic_cast<TObserver&>(*lock);
-        const TMessage& typedMessage = dynamic_cast<const TMessage&>(message);
-        (observer.*function_) (typedMessage);
-      }
-    }
-
-    virtual const OrthancStone::MessageIdentifier& GetMessageIdentifier()
-    {
-      return TMessage::GetStaticIdentifier();
-    }
-
-    virtual boost::weak_ptr<OrthancStone::IObserver> GetObserver() const
-    {
-      return observer_;
-    }
-  };
-
-
-  // The IWebService performs HTTP requests.
-  // Since applications can run in native or WASM environment and, since
-  // in a WASM environment, the WebService is asynchronous, the IWebservice
-  // also implements an asynchronous interface: you must schedule a request
-  // and you'll be notified when the response/error is ready.
-  class IWebService : public boost::noncopyable
-  {
-  public:
-    typedef std::map<std::string, std::string> HttpHeaders;
-
-    class HttpRequestSuccessMessage : public OrthancStone::IMessage
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      const std::string&             uri_;
-      const void*                    answer_;
-      size_t                         answerSize_;
-      const HttpHeaders&             answerHeaders_;
-      const Orthanc::IDynamicObject* payload_;
-
-    public:
-      HttpRequestSuccessMessage(const std::string& uri,
-                                const void* answer,
-                                size_t answerSize,
-                                const HttpHeaders& answerHeaders,
-                                const Orthanc::IDynamicObject* payload) :
-        uri_(uri),
-        answer_(answer),
-        answerSize_(answerSize),
-        answerHeaders_(answerHeaders),
-        payload_(payload)
-      {
-      }
-
-      const std::string& GetUri() const
-      {
-        return uri_;
-      }
-
-      const void* GetAnswer() const
-      {
-        return answer_;
-      }
-
-      size_t GetAnswerSize() const
-      {
-        return answerSize_;
-      }
-
-      const HttpHeaders&  GetAnswerHttpHeaders() const
-      {
-        return answerHeaders_;
-      }
-
-      bool HasPayload() const
-      {
-        return payload_ != NULL;
-      }
-
-      const Orthanc::IDynamicObject& GetPayload() const;
-    };
-    
-
-    class HttpRequestErrorMessage : public OrthancStone::IMessage
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      const std::string&              uri_;
-      const Orthanc::IDynamicObject*  payload_;
-      Orthanc::HttpStatus             httpStatus_;
-
-    public:
-      HttpRequestErrorMessage(const std::string& uri,
-                              Orthanc::HttpStatus httpStatus,
-                              const Orthanc::IDynamicObject* payload) :
-        uri_(uri),
-        payload_(payload),
-        httpStatus_(httpStatus)
-      {
-      }
-
-      const std::string& GetUri() const
-      {
-        return uri_;
-      }
-
-      Orthanc::HttpStatus GetHttpStatus() const
-      {
-        return httpStatus_;
-      }
-
-      bool HasPayload() const
-      {
-        return payload_ != NULL;
-      }
-
-      const Orthanc::IDynamicObject& GetPayload() const;
-    };
-
-
-    virtual ~IWebService()
-    {
-    }
-
-    virtual void EnableCache(bool enable) = 0;
-    
-    virtual void GetAsync(const std::string& uri,
-                          const HttpHeaders& headers,
-                          Orthanc::IDynamicObject* payload  /* takes ownership */,
-                          MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
-                          MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                          unsigned int timeoutInSeconds = 60) = 0;
-
-    virtual void PostAsync(const std::string& uri,
-                           const HttpHeaders& headers,
-                           const std::string& body,
-                           Orthanc::IDynamicObject* payload  /* takes ownership */,
-                           MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
-                           MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                           unsigned int timeoutInSeconds = 60) = 0;
-
-    virtual void DeleteAsync(const std::string& uri,
-                             const HttpHeaders& headers,
-                             Orthanc::IDynamicObject* payload  /* takes ownership */,
-                             MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
-                             MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                             unsigned int timeoutInSeconds = 60) = 0;
-  };
-}
--- a/Framework/Deprecated/Toolbox/MessagingToolbox.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,462 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "MessagingToolbox.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <Images/JpegReader.h>
-#include <Images/PngReader.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-#include <Logging.h>
-
-#include <boost/lexical_cast.hpp>
-
-#ifdef _MSC_VER
-// 'Json::Reader': Use CharReader and CharReaderBuilder instead
-#pragma warning(disable:4996)
-#endif
-
-#include <json/reader.h>
-#include <json/writer.h>
-
-
-namespace Deprecated
-{
-  namespace MessagingToolbox
-  {
-    static bool ParseVersion(std::string& version,
-                             unsigned int& major,
-                             unsigned int& minor,
-                             unsigned int& patch,
-                             const Json::Value& info)
-    {
-      if (info.type() != Json::objectValue ||
-          !info.isMember("Version") ||
-          info["Version"].type() != Json::stringValue)
-      {
-        return false;
-      }
-
-      version = info["Version"].asString();
-      if (version == "mainline")
-      {
-        // Some arbitrary high values Orthanc versions will never reach ;)
-        major = 999;
-        minor = 999;
-        patch = 999;
-        return true;
-      }
-
-      std::vector<std::string> tokens;
-      Orthanc::Toolbox::TokenizeString(tokens, version, '.');
-      
-      if (tokens.size() != 2 &&
-          tokens.size() != 3)
-      {
-        return false;
-      }
-
-      int a, b, c;
-      try
-      {
-        a = boost::lexical_cast<int>(tokens[0]);
-        b = boost::lexical_cast<int>(tokens[1]);
-
-        if (tokens.size() == 3)
-        {
-          c = boost::lexical_cast<int>(tokens[2]);
-        }
-        else
-        {
-          c = 0;
-        }
-      }
-      catch (boost::bad_lexical_cast&)
-      {
-        return false;
-      }
-
-      if (a < 0 ||
-          b < 0 ||
-          c < 0)
-      {
-        return false;
-      }
-      else
-      {
-        major = static_cast<unsigned int>(a);
-        minor = static_cast<unsigned int>(b);
-        patch = static_cast<unsigned int>(c);
-        return true;
-      }         
-    }
-
-
-    bool ParseJson(Json::Value& target,
-                   const void* content,
-                   size_t size)
-    {
-      Json::Reader reader;
-      return reader.parse(reinterpret_cast<const char*>(content),
-                          reinterpret_cast<const char*>(content) + size,
-                          target);
-    }
-
-    void JsonToString(std::string& target,
-                      const Json::Value& source)
-    {
-      Json::FastWriter writer;
-      target = writer.write(source);
-    }
-
-    static void ParseJsonException(Json::Value& target,
-                                   const std::string& source)
-    {
-      Json::Reader reader;
-      if (!reader.parse(source, target))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-    }
-
-
-    void RestApiGet(Json::Value& target,
-                    OrthancPlugins::IOrthancConnection& orthanc,
-                    const std::string& uri)
-    {
-      std::string tmp;
-      orthanc.RestApiGet(tmp, uri);
-      ParseJsonException(target, tmp);
-    }
-
-
-    void RestApiPost(Json::Value& target,
-                     OrthancPlugins::IOrthancConnection& orthanc,
-                     const std::string& uri,
-                     const std::string& body)
-    {
-      std::string tmp;
-      orthanc.RestApiPost(tmp, uri, body);
-      ParseJsonException(target, tmp);
-    }
-
-
-    bool HasWebViewerInstalled(OrthancPlugins::IOrthancConnection& orthanc)
-    {
-      try
-      {
-        Json::Value json;
-        RestApiGet(json, orthanc, "/plugins/web-viewer");
-        return json.type() == Json::objectValue;
-      }
-      catch (Orthanc::OrthancException&)
-      {
-        return false;
-      }
-    }
-
-
-    bool CheckOrthancVersion(OrthancPlugins::IOrthancConnection& orthanc)
-    {
-      Json::Value json;
-      std::string version;
-      unsigned int major, minor, patch;
-
-      try
-      {
-        RestApiGet(json, orthanc, "/system");
-      }
-      catch (Orthanc::OrthancException&)
-      {
-        LOG(ERROR) << "Cannot connect to your Orthanc server";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-        
-      if (!ParseVersion(version, major, minor, patch, json))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-
-      LOG(WARNING) << "Version of the Orthanc core (must be above 1.3.1): " << version;
-
-      // Stone is only compatible with Orthanc >= 1.3.1
-      if (major < 1 ||
-          (major == 1 && minor < 3) ||
-          (major == 1 && minor == 3 && patch < 1))
-      {
-        return false;
-      }
-
-      try
-      {
-        RestApiGet(json, orthanc, "/plugins/web-viewer");       
-      }
-      catch (Orthanc::OrthancException&)
-      {
-        // The Web viewer is not installed, this is OK
-        LOG(WARNING) << "The Web viewer plugin is not installed, progressive download is disabled";
-        return true;
-      }
-
-      if (!ParseVersion(version, major, minor, patch, json))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-
-      LOG(WARNING) << "Version of the Web viewer plugin (must be above 2.2): " << version;
-
-      return (major >= 3 ||
-              (major == 2 && minor >= 2));
-    }
-
-
-    Orthanc::ImageAccessor* DecodeFrame(OrthancPlugins::IOrthancConnection& orthanc,
-                                        const std::string& instance,
-                                        unsigned int frame,
-                                        Orthanc::PixelFormat targetFormat)
-    {
-      std::string uri = ("instances/" + instance + "/frames/" + 
-                         boost::lexical_cast<std::string>(frame));
-
-      std::string compressed;
-
-      switch (targetFormat)
-      {
-        case Orthanc::PixelFormat_RGB24:
-          orthanc.RestApiGet(compressed, uri + "/preview");
-          break;
-
-        case Orthanc::PixelFormat_Grayscale16:
-          orthanc.RestApiGet(compressed, uri + "/image-uint16");
-          break;
-
-        case Orthanc::PixelFormat_SignedGrayscale16:
-          orthanc.RestApiGet(compressed, uri + "/image-int16");
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-      
-      std::unique_ptr<Orthanc::PngReader> result(new Orthanc::PngReader);
-      result->ReadFromMemory(compressed);
-
-      if (targetFormat == Orthanc::PixelFormat_SignedGrayscale16)
-      {
-        if (result->GetFormat() == Orthanc::PixelFormat_Grayscale16)
-        {
-          result->SetFormat(Orthanc::PixelFormat_SignedGrayscale16);
-        }
-        else
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-        }
-      }
-
-      return result.release();
-    }
-
-
-    Orthanc::ImageAccessor* DecodeJpegFrame(OrthancPlugins::IOrthancConnection& orthanc,
-                                            const std::string& instance,
-                                            unsigned int frame,
-                                            unsigned int quality,
-                                            Orthanc::PixelFormat targetFormat)
-    {
-      if (quality <= 0 || 
-          quality > 100)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      // This requires the official Web viewer plugin to be installed!
-      std::string uri = ("web-viewer/instances/jpeg" + 
-                         boost::lexical_cast<std::string>(quality) + 
-                         "-" + instance + "_" + 
-                         boost::lexical_cast<std::string>(frame));
-
-      Json::Value encoded;
-      RestApiGet(encoded, orthanc, uri);
-
-      if (encoded.type() != Json::objectValue ||
-          !encoded.isMember("Orthanc") ||
-          encoded["Orthanc"].type() != Json::objectValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-
-      Json::Value& info = encoded["Orthanc"];
-      if (!info.isMember("PixelData") ||
-          !info.isMember("Stretched") ||
-          !info.isMember("Compression") ||
-          info["Compression"].type() != Json::stringValue ||
-          info["PixelData"].type() != Json::stringValue ||
-          info["Stretched"].type() != Json::booleanValue ||
-          info["Compression"].asString() != "Jpeg")
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }          
-
-      bool isSigned = false;
-      bool isStretched = info["Stretched"].asBool();
-
-      if (info.isMember("IsSigned"))
-      {
-        if (info["IsSigned"].type() != Json::booleanValue)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-        }          
-        else
-        {
-          isSigned = info["IsSigned"].asBool();
-        }
-      }
-
-      std::string jpeg;
-      Orthanc::Toolbox::DecodeBase64(jpeg, info["PixelData"].asString());
-
-      std::unique_ptr<Orthanc::JpegReader> reader(new Orthanc::JpegReader);
-      reader->ReadFromMemory(jpeg);
-
-      if (reader->GetFormat() == Orthanc::PixelFormat_RGB24)  // This is a color image
-      {
-        if (targetFormat != Orthanc::PixelFormat_RGB24)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-        }
-
-        if (isSigned || isStretched)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        else
-        {
-          return reader.release();
-        }
-      }
-
-      if (reader->GetFormat() != Orthanc::PixelFormat_Grayscale8)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-
-      if (!isStretched)
-      {
-        if (targetFormat != reader->GetFormat())
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-        }
-
-        return reader.release();
-      }
-
-      int32_t stretchLow = 0;
-      int32_t stretchHigh = 0;
-
-      if (!info.isMember("StretchLow") ||
-          !info.isMember("StretchHigh") ||
-          info["StretchLow"].type() != Json::intValue ||
-          info["StretchHigh"].type() != Json::intValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-
-      stretchLow = info["StretchLow"].asInt();
-      stretchHigh = info["StretchHigh"].asInt();
-
-      if (stretchLow < -32768 ||
-          stretchHigh > 65535 ||
-          (stretchLow < 0 && stretchHigh > 32767))
-      {
-        // This range cannot be represented with a uint16_t or an int16_t
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);          
-      }
-
-      // Decode a grayscale JPEG 8bpp image coming from the Web viewer
-      std::unique_ptr<Orthanc::ImageAccessor> image
-        (new Orthanc::Image(targetFormat, reader->GetWidth(), reader->GetHeight(), false));
-
-      float scaling = static_cast<float>(stretchHigh - stretchLow) / 255.0f;
-      float offset = static_cast<float>(stretchLow) / scaling;
-      
-      Orthanc::ImageProcessing::Convert(*image, *reader);
-      Orthanc::ImageProcessing::ShiftScale(*image, offset, scaling, true);
-
-#if 0
-      /*info.removeMember("PixelData");
-        std::cout << info.toStyledString();*/
-      
-      int64_t a, b;
-      Orthanc::ImageProcessing::GetMinMaxValue(a, b, *image);
-      std::cout << stretchLow << "->" << stretchHigh << " = " << a << "->" << b << std::endl;
-#endif
-
-      return image.release();
-    }
-
-
-    static void AddTag(Orthanc::DicomMap& target,
-                       const OrthancPlugins::IDicomDataset& source,
-                       const Orthanc::DicomTag& tag)
-    {
-      OrthancPlugins::DicomTag key(tag.GetGroup(), tag.GetElement());
-      
-      std::string value;
-      if (source.GetStringValue(value, key))
-      {
-        target.SetValue(tag, value, false);
-      }
-    }
-
-    
-    void ConvertDataset(Orthanc::DicomMap& target,
-                        const OrthancPlugins::IDicomDataset& source)
-    {
-      target.Clear();
-
-      AddTag(target, source, Orthanc::DICOM_TAG_BITS_ALLOCATED);
-      AddTag(target, source, Orthanc::DICOM_TAG_BITS_STORED);
-      AddTag(target, source, Orthanc::DICOM_TAG_COLUMNS);
-      AddTag(target, source, Orthanc::DICOM_TAG_DOSE_GRID_SCALING);
-      AddTag(target, source, Orthanc::DICOM_TAG_FRAME_INCREMENT_POINTER);
-      AddTag(target, source, Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR);
-      AddTag(target, source, Orthanc::DICOM_TAG_HIGH_BIT);
-      AddTag(target, source, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT);
-      AddTag(target, source, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT);
-      AddTag(target, source, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES);
-      AddTag(target, source, Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION);
-      AddTag(target, source, Orthanc::DICOM_TAG_PIXEL_REPRESENTATION);
-      AddTag(target, source, Orthanc::DICOM_TAG_PIXEL_SPACING);
-      AddTag(target, source, Orthanc::DICOM_TAG_PLANAR_CONFIGURATION);
-      AddTag(target, source, Orthanc::DICOM_TAG_RESCALE_INTERCEPT);
-      AddTag(target, source, Orthanc::DICOM_TAG_RESCALE_SLOPE);
-      AddTag(target, source, Orthanc::DICOM_TAG_ROWS);
-      AddTag(target, source, Orthanc::DICOM_TAG_SAMPLES_PER_PIXEL);
-      AddTag(target, source, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID);
-      AddTag(target, source, Orthanc::DICOM_TAG_SLICE_THICKNESS);
-      AddTag(target, source, Orthanc::DICOM_TAG_SOP_CLASS_UID);
-      AddTag(target, source, Orthanc::DICOM_TAG_SOP_INSTANCE_UID);
-      AddTag(target, source, Orthanc::DICOM_TAG_WINDOW_CENTER);
-      AddTag(target, source, Orthanc::DICOM_TAG_WINDOW_WIDTH);
-    }
-  }
-}
--- a/Framework/Deprecated/Toolbox/MessagingToolbox.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../StoneEnumerations.h"
-
-#include <DicomFormat/DicomMap.h>
-#include <Images/ImageAccessor.h>
-#include <IDicomDataset.h>
-#include <IOrthancConnection.h>
-
-#include <json/value.h>
-
-namespace Deprecated
-{
-  namespace MessagingToolbox
-  {
-    bool ParseJson(Json::Value& target,
-                   const void* content,
-                   size_t size);
-
-    void JsonToString(std::string& target,
-                      const Json::Value& source);
-
-
-    void RestApiGet(Json::Value& target,
-                    OrthancPlugins::IOrthancConnection& orthanc,
-                    const std::string& uri);
-
-    void RestApiPost(Json::Value& target,
-                     OrthancPlugins::IOrthancConnection& orthanc,
-                     const std::string& uri,
-                     const std::string& body);
-
-    bool HasWebViewerInstalled(OrthancPlugins::IOrthancConnection& orthanc);
-
-    bool CheckOrthancVersion(OrthancPlugins::IOrthancConnection& orthanc);
-
-    // This downloads the image from Orthanc and keeps its pixel
-    // format unchanged (will be either Grayscale8, Grayscale16,
-    // SignedGrayscale16, or RGB24)
-    Orthanc::ImageAccessor* DecodeFrame(OrthancPlugins::IOrthancConnection& orthanc,
-                                        const std::string& instance,
-                                        unsigned int frame,
-                                        Orthanc::PixelFormat targetFormat);
-
-    Orthanc::ImageAccessor* DecodeJpegFrame(OrthancPlugins::IOrthancConnection& orthanc,
-                                            const std::string& instance,
-                                            unsigned int frame,
-                                            unsigned int quality,
-                                            Orthanc::PixelFormat targetFormat);
-
-    void ConvertDataset(Orthanc::DicomMap& target,
-                        const OrthancPlugins::IDicomDataset& source);
-  }
-}
--- a/Framework/Deprecated/Toolbox/OrthancApiClient.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,334 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "OrthancApiClient.h"
-
-#include "../Toolbox/MessagingToolbox.h"
-
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  const Orthanc::IDynamicObject& OrthancApiClient::JsonResponseReadyMessage::GetPayload() const
-  {
-    if (HasPayload())
-    {
-      return *payload_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-  
-  
-  const Orthanc::IDynamicObject& OrthancApiClient::BinaryResponseReadyMessage::GetPayload() const
-  {
-    if (HasPayload())
-    {
-      return *payload_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-  
-  
-  const Orthanc::IDynamicObject& OrthancApiClient::EmptyResponseReadyMessage::GetPayload() const
-  {
-    if (HasPayload())
-    {
-      return *payload_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-  
-  
-  class OrthancApiClient::WebServicePayload : public Orthanc::IDynamicObject
-  {
-  private:
-    std::unique_ptr< MessageHandler<EmptyResponseReadyMessage> >             emptyHandler_;
-    std::unique_ptr< MessageHandler<JsonResponseReadyMessage> >              jsonHandler_;
-    std::unique_ptr< MessageHandler<BinaryResponseReadyMessage> >            binaryHandler_;
-    std::unique_ptr< MessageHandler<IWebService::HttpRequestErrorMessage> >  failureHandler_;
-    std::unique_ptr< Orthanc::IDynamicObject >                               userPayload_;
-
-    void NotifyConversionError(const IWebService::HttpRequestSuccessMessage& message) const
-    {
-      if (failureHandler_.get() != NULL)
-      {
-        failureHandler_->Apply(IWebService::HttpRequestErrorMessage
-                               (message.GetUri(), Orthanc::HttpStatus_None, userPayload_.get()));
-      }
-    }
-    
-  public:
-    WebServicePayload(MessageHandler<EmptyResponseReadyMessage>* handler,
-                      MessageHandler<IWebService::HttpRequestErrorMessage>* failureHandler,
-                      Orthanc::IDynamicObject* userPayload) :
-      emptyHandler_(handler),
-      failureHandler_(failureHandler),
-      userPayload_(userPayload)
-
-    {
-      if (handler == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    WebServicePayload(MessageHandler<BinaryResponseReadyMessage>* handler,
-                      MessageHandler<IWebService::HttpRequestErrorMessage>* failureHandler,
-                      Orthanc::IDynamicObject* userPayload) :
-      binaryHandler_(handler),
-      failureHandler_(failureHandler),
-      userPayload_(userPayload)
-    {
-      if (handler == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    WebServicePayload(MessageHandler<JsonResponseReadyMessage>* handler,
-                      MessageHandler<IWebService::HttpRequestErrorMessage>* failureHandler,
-                      Orthanc::IDynamicObject* userPayload) :
-      jsonHandler_(handler),
-      failureHandler_(failureHandler),
-      userPayload_(userPayload)
-    {
-      if (handler == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    void HandleSuccess(const IWebService::HttpRequestSuccessMessage& message) const
-    {
-      if (emptyHandler_.get() != NULL)
-      {
-        emptyHandler_->Apply(OrthancApiClient::EmptyResponseReadyMessage
-                             (message.GetUri(), userPayload_.get()));
-      }
-      else if (binaryHandler_.get() != NULL)
-      {
-        binaryHandler_->Apply(OrthancApiClient::BinaryResponseReadyMessage
-                              (message.GetUri(), message.GetAnswer(),
-                               message.GetAnswerSize(), userPayload_.get()));
-      }
-      else if (jsonHandler_.get() != NULL)
-      {
-        Json::Value response;
-        if (MessagingToolbox::ParseJson(response, message.GetAnswer(), message.GetAnswerSize()))
-        {
-          jsonHandler_->Apply(OrthancApiClient::JsonResponseReadyMessage
-                              (message.GetUri(), response, userPayload_.get()));
-        }
-        else
-        {
-          NotifyConversionError(message);
-        }
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-
-    void HandleFailure(const IWebService::HttpRequestErrorMessage& message) const
-    {
-      if (failureHandler_.get() != NULL)
-      {
-        failureHandler_->Apply(IWebService::HttpRequestErrorMessage
-                               (message.GetUri(), message.GetHttpStatus(), userPayload_.get()));
-      }
-    }
-  };
-
-
-  OrthancApiClient::OrthancApiClient(IWebService& web,
-                                     const std::string& baseUrl) :
-    web_(web),
-    baseUrl_(baseUrl)
-  {
-  }
-
-
-  void OrthancApiClient::GetJsonAsync(
-      const std::string& uri,
-      MessageHandler<JsonResponseReadyMessage>* successCallback,
-      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
-      Orthanc::IDynamicObject* payload)
-  {
-    IWebService::HttpHeaders emptyHeaders;
-    web_.GetAsync(baseUrl_ + uri,
-                  emptyHeaders,
-                  new WebServicePayload(successCallback, failureCallback, payload),
-                  new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestSuccessMessage>
-                  (GetSharedObserver(), &OrthancApiClient::NotifyHttpSuccess),
-                  new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestErrorMessage>
-                  (GetSharedObserver(), &OrthancApiClient::NotifyHttpError));
-  }
-
-
-  void OrthancApiClient::GetBinaryAsync(
-      const std::string& uri,
-      const std::string& contentType,
-      MessageHandler<BinaryResponseReadyMessage>* successCallback,
-      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
-      Orthanc::IDynamicObject* payload)
-  {
-    IWebService::HttpHeaders headers;
-    headers["Accept"] = contentType;
-    GetBinaryAsync(uri, headers, successCallback, failureCallback, payload);
-  }
-
-  void OrthancApiClient::GetBinaryAsync(
-      const std::string& uri,
-      const IWebService::HttpHeaders& headers,
-      MessageHandler<BinaryResponseReadyMessage>* successCallback,
-      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
-      Orthanc::IDynamicObject* payload)
-  {
-    // printf("GET [%s] [%s]\n", baseUrl_.c_str(), uri.c_str());
-
-    web_.GetAsync(baseUrl_ + uri, headers,
-                  new WebServicePayload(successCallback, failureCallback, payload),
-                  new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestSuccessMessage>
-                  (GetSharedObserver(), &OrthancApiClient::NotifyHttpSuccess),
-                  new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestErrorMessage>
-                  (GetSharedObserver(), &OrthancApiClient::NotifyHttpError));
-  }
-
-  
-  void OrthancApiClient::PostBinaryAsyncExpectJson(
-      const std::string& uri,
-      const std::string& body,
-      MessageHandler<JsonResponseReadyMessage>* successCallback,
-      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
-      Orthanc::IDynamicObject* payload)
-  {
-    web_.PostAsync(baseUrl_ + uri, IWebService::HttpHeaders(), body,
-                   new WebServicePayload(successCallback, failureCallback, payload),
-                   new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestSuccessMessage>
-                   (GetSharedObserver(), &OrthancApiClient::NotifyHttpSuccess),
-                   new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestErrorMessage>
-                   (GetSharedObserver(), &OrthancApiClient::NotifyHttpError));
-
-  }
-
-  void OrthancApiClient::PostBinaryAsync(
-      const std::string& uri,
-      const std::string& body)
-  {
-    web_.PostAsync(baseUrl_ + uri, IWebService::HttpHeaders(), body, NULL, NULL, NULL);
-  }
-
-  void OrthancApiClient::PostBinaryAsync(
-      const std::string& uri,
-      const std::string& body,
-      MessageHandler<EmptyResponseReadyMessage>* successCallback,
-      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
-      Orthanc::IDynamicObject* payload   /* takes ownership */)
-  {
-    web_.PostAsync(baseUrl_ + uri, IWebService::HttpHeaders(), body,
-                   new WebServicePayload(successCallback, failureCallback, payload),
-                   new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestSuccessMessage>
-                   (GetSharedObserver(), &OrthancApiClient::NotifyHttpSuccess),
-                   new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestErrorMessage>
-                   (GetSharedObserver(), &OrthancApiClient::NotifyHttpError));
-  }
-
-  void OrthancApiClient::PostJsonAsyncExpectJson(
-      const std::string& uri,
-      const Json::Value& data,
-      MessageHandler<JsonResponseReadyMessage>* successCallback,
-      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
-      Orthanc::IDynamicObject* payload)
-  {
-    std::string body;
-    MessagingToolbox::JsonToString(body, data);
-    return PostBinaryAsyncExpectJson(uri, body, successCallback, failureCallback, payload);
-  }
-
-  void OrthancApiClient::PostJsonAsync(
-      const std::string& uri,
-      const Json::Value& data)
-  {
-    std::string body;
-    MessagingToolbox::JsonToString(body, data);
-    return PostBinaryAsync(uri, body);
-  }
-
-  void OrthancApiClient::PostJsonAsync(
-      const std::string& uri,
-      const Json::Value& data,
-      MessageHandler<EmptyResponseReadyMessage>* successCallback,
-      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
-      Orthanc::IDynamicObject* payload   /* takes ownership */)
-  {
-    std::string body;
-    MessagingToolbox::JsonToString(body, data);
-    return PostBinaryAsync(uri, body, successCallback, failureCallback, payload);
-  }
-
-  void OrthancApiClient::DeleteAsync(
-      const std::string& uri,
-      MessageHandler<EmptyResponseReadyMessage>* successCallback,
-      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
-      Orthanc::IDynamicObject* payload)
-  {
-    web_.DeleteAsync(baseUrl_ + uri, IWebService::HttpHeaders(),
-                     new WebServicePayload(successCallback, failureCallback, payload),
-                     new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestSuccessMessage>
-                     (GetSharedObserver(), &OrthancApiClient::NotifyHttpSuccess),
-                     new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestErrorMessage>
-                     (GetSharedObserver(), &OrthancApiClient::NotifyHttpError));
-  }
-
-
-  void OrthancApiClient::NotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message)
-  {
-    if (message.HasPayload())
-    {
-      dynamic_cast<const WebServicePayload&>(message.GetPayload()).HandleSuccess(message);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-  void OrthancApiClient::NotifyHttpError(const IWebService::HttpRequestErrorMessage& message)
-  {
-    if (message.HasPayload())
-    {
-      dynamic_cast<const WebServicePayload&>(message.GetPayload()).HandleFailure(message);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-}
--- a/Framework/Deprecated/Toolbox/OrthancApiClient.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,252 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <json/json.h>
-
-#include "IWebService.h"
-#include "../../Messages/ObserverBase.h"
-
-namespace Deprecated
-{
-  enum SliceImageQuality
-  {
-    SliceImageQuality_FullPng,  // smaller to transmit but longer to generate on Orthanc side (better choice when on low bandwidth)
-    SliceImageQuality_FullPam,  // bigger to transmit but faster to generate on Orthanc side (better choice when on localhost or LAN)
-    SliceImageQuality_Jpeg50,
-    SliceImageQuality_Jpeg90,
-    SliceImageQuality_Jpeg95,
-
-    SliceImageQuality_InternalRaw   // downloads the raw pixels data as they are stored in the DICOM file (internal use only)
-  };  
-
-  class OrthancApiClient :
-      public OrthancStone::IObservable,
-      public OrthancStone::ObserverBase<OrthancApiClient>
-  {
-  public:
-    class JsonResponseReadyMessage : public OrthancStone::IMessage
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      const std::string&              uri_;
-      const Json::Value&              json_;
-      const Orthanc::IDynamicObject*  payload_;
-
-    public:
-      JsonResponseReadyMessage(const std::string& uri,
-                               const Json::Value& json,
-                               const Orthanc::IDynamicObject* payload) :
-        uri_(uri),
-        json_(json),
-        payload_(payload)
-      {
-      }
-
-      const std::string& GetUri() const
-      {
-        return uri_;
-      }
-
-      const Json::Value& GetJson() const
-      {
-        return json_;
-      }
-
-      bool HasPayload() const
-      {
-        return payload_ != NULL;
-      }
-
-      const Orthanc::IDynamicObject& GetPayload() const;
-    };
-    
-
-    class BinaryResponseReadyMessage : public OrthancStone::IMessage
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      const std::string&              uri_;
-      const void*                     answer_;
-      size_t                          answerSize_;
-      const Orthanc::IDynamicObject*  payload_;
-
-    public:
-      BinaryResponseReadyMessage(const std::string& uri,
-                                 const void* answer,
-                                 size_t answerSize,
-                                 const Orthanc::IDynamicObject* payload) :
-        uri_(uri),
-        answer_(answer),
-        answerSize_(answerSize),
-        payload_(payload)
-      {
-      }
-
-      const std::string& GetUri() const
-      {
-        return uri_;
-      }
-
-      const void* GetAnswer() const
-      {
-        return answer_;
-      }
-
-      size_t GetAnswerSize() const
-      {
-        return answerSize_;
-      }
-
-      bool HasPayload() const
-      {
-        return payload_ != NULL;
-      }
-
-      const Orthanc::IDynamicObject& GetPayload() const;
-    };
-
-
-    class EmptyResponseReadyMessage : public OrthancStone::IMessage
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      const std::string&              uri_;
-      const Orthanc::IDynamicObject*  payload_;
-
-    public:
-      EmptyResponseReadyMessage(const std::string& uri,
-                                const Orthanc::IDynamicObject* payload) :
-        uri_(uri),
-        payload_(payload)
-      {
-      }
-
-      const std::string& GetUri() const
-      {
-        return uri_;
-      }
-
-      bool HasPayload() const
-      {
-        return payload_ != NULL;
-      }
-
-      const Orthanc::IDynamicObject& GetPayload() const;
-    };
-
-    
-
-  private:
-    class WebServicePayload;
-
-  protected:
-    IWebService&  web_;
-    std::string   baseUrl_;
-
-  public:
-    OrthancApiClient(IWebService& web,
-                     const std::string& baseUrl);
-    
-    virtual ~OrthancApiClient()
-    {
-    }
-
-    const std::string& GetBaseUrl() const {return baseUrl_;}
-
-    // schedule a GET request expecting a JSON response.
-    void GetJsonAsync(const std::string& uri,
-                      MessageHandler<JsonResponseReadyMessage>* successCallback,
-                      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                      Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
-
-    // schedule a GET request expecting a binary response.
-    void GetBinaryAsync(const std::string& uri,
-                        const std::string& contentType,
-                        MessageHandler<BinaryResponseReadyMessage>* successCallback,
-                        MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                        Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
-
-    // schedule a GET request expecting a binary response.
-    void GetBinaryAsync(const std::string& uri,
-                        const IWebService::HttpHeaders& headers,
-                        MessageHandler<BinaryResponseReadyMessage>* successCallback,
-                        MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                        Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
-
-    // schedule a POST request expecting a JSON response.
-    void PostBinaryAsyncExpectJson(const std::string& uri,
-                                   const std::string& body,
-                                   MessageHandler<JsonResponseReadyMessage>* successCallback,
-                                   MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                                   Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
-
-    // schedule a POST request expecting a JSON response.
-    void PostJsonAsyncExpectJson(const std::string& uri,
-                                 const Json::Value& data,
-                                 MessageHandler<JsonResponseReadyMessage>* successCallback,
-                                 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                                 Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
-
-    // schedule a POST request and don't mind the response.
-    void PostJsonAsync(const std::string& uri,
-                       const Json::Value& data);
-
-    // schedule a POST request and don't expect any response.
-    void PostJsonAsync(const std::string& uri,
-                       const Json::Value& data,
-                       MessageHandler<EmptyResponseReadyMessage>* successCallback,
-                       MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                       Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
-
-
-    // schedule a POST request and don't mind the response.
-    void PostBinaryAsync(const std::string& uri,
-                         const std::string& body);
-
-    // schedule a POST request and don't expect any response.
-    void PostBinaryAsync(const std::string& uri,
-                         const std::string& body,
-                         MessageHandler<EmptyResponseReadyMessage>* successCallback,
-                         MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                         Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
-
-    // schedule a DELETE request expecting an empty response.
-    void DeleteAsync(const std::string& uri,
-                     MessageHandler<EmptyResponseReadyMessage>* successCallback,
-                     MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                     Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
-
-    void NotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message);
-
-    void NotifyHttpError(const IWebService::HttpRequestErrorMessage& message);
-
-  private:
-    void HandleFromCache(const std::string& uri,
-                         const IWebService::HttpHeaders& headers,
-                         Orthanc::IDynamicObject* payload /* takes ownership */);
-  };
-}
--- a/Framework/Deprecated/Toolbox/OrthancSlicesLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,901 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OrthancSlicesLoader.h"
-
-#include "../Toolbox/MessagingToolbox.h"
-
-#include <Compression/GzipCompressor.h>
-#include <Endianness.h>
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <Images/JpegReader.h>
-#include <Images/PngReader.h>
-#include <Images/PamReader.h>
-#include <Logging.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-#include <FullOrthancDataset.h>
-
-#include <boost/lexical_cast.hpp>
-
-
-
-/**
- * TODO This is a SLOW implementation of base64 decoding, because
- * "Orthanc::Toolbox::DecodeBase64()" does not work properly with
- * WASM. UNDERSTAND WHY.
- * https://stackoverflow.com/a/34571089/881731
- **/
-static std::string base64_decode(const std::string &in)
-{
-  std::string out;
-  
-  std::vector<int> T(256,-1);
-  for (int i=0; i<64; i++) T["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[i]] = i;
-  
-  int val=0, valb=-8;
-  for (size_t i = 0; i < in.size(); i++) {
-    unsigned char c = in[i];
-    if (T[c] == -1) break;
-    val = (val<<6) + T[c];
-    valb += 6;
-    if (valb>=0) {
-      out.push_back(char((val>>valb)&0xFF));
-      valb-=8;
-    }
-  }
-  return out;
-}
-
-
-
-namespace Deprecated
-{
-  class OrthancSlicesLoader::Operation : public Orthanc::IDynamicObject
-  {
-  private:
-    Mode               mode_;
-    unsigned int       frame_;
-    unsigned int       sliceIndex_;
-    const Slice*       slice_;
-    std::string        instanceId_;
-    SliceImageQuality  quality_;
-
-    Operation(Mode mode) :
-      mode_(mode)
-    {
-    }
-
-  public:
-    Mode GetMode() const
-    {
-      return mode_;
-    }
-
-    SliceImageQuality GetQuality() const
-    {
-      assert(mode_ == Mode_LoadImage ||
-             mode_ == Mode_LoadRawImage);
-      return quality_;
-    }
-
-    unsigned int GetSliceIndex() const
-    {
-      assert(mode_ == Mode_LoadImage ||
-             mode_ == Mode_LoadRawImage);
-      return sliceIndex_;
-    }
-
-    const Slice& GetSlice() const
-    {
-      assert(mode_ == Mode_LoadImage ||
-             mode_ == Mode_LoadRawImage);
-      assert(slice_ != NULL);
-      return *slice_;
-    }
-
-    unsigned int GetFrame() const
-    {
-      assert(mode_ == Mode_FrameGeometry);
-      return frame_;
-    }
-
-    const std::string& GetInstanceId() const
-    {
-      assert(mode_ == Mode_FrameGeometry ||
-             mode_ == Mode_InstanceGeometry);
-      return instanceId_;
-    }
-
-    static Operation* DownloadInstanceGeometry(const std::string& instanceId)
-    {
-      std::unique_ptr<Operation> operation(new Operation(Mode_InstanceGeometry));
-      operation->instanceId_ = instanceId;
-      return operation.release();
-    }
-
-    static Operation* DownloadFrameGeometry(const std::string& instanceId,
-                                            unsigned int frame)
-    {
-      std::unique_ptr<Operation> operation(new Operation(Mode_FrameGeometry));
-      operation->instanceId_ = instanceId;
-      operation->frame_ = frame;
-      return operation.release();
-    }
-
-    static Operation* DownloadSliceImage(unsigned int  sliceIndex,
-                                         const Slice&  slice,
-                                         SliceImageQuality quality)
-    {
-      std::unique_ptr<Operation> tmp(new Operation(Mode_LoadImage));
-      tmp->sliceIndex_ = sliceIndex;
-      tmp->slice_ = &slice;
-      tmp->quality_ = quality;
-      return tmp.release();
-    }
-
-    static Operation* DownloadSliceRawImage(unsigned int  sliceIndex,
-                                            const Slice&  slice)
-    {
-      std::unique_ptr<Operation> tmp(new Operation(Mode_LoadRawImage));
-      tmp->sliceIndex_ = sliceIndex;
-      tmp->slice_ = &slice;
-      tmp->quality_ = SliceImageQuality_InternalRaw;
-      return tmp.release();
-    }
-
-    static Operation* DownloadDicomFile(const Slice&  slice)
-    {
-      std::unique_ptr<Operation> tmp(new Operation(Mode_LoadDicomFile));
-      tmp->slice_ = &slice;
-      return tmp.release();
-    }
-
-  };
-
-  void OrthancSlicesLoader::NotifySliceImageSuccess(const Operation& operation,
-                                                    const Orthanc::ImageAccessor& image)
-  {
-    OrthancSlicesLoader::SliceImageReadyMessage msg
-      (*this, operation.GetSliceIndex(), operation.GetSlice(), image, operation.GetQuality());
-    BroadcastMessage(msg);
-  }
-  
-  
-  void OrthancSlicesLoader::NotifySliceImageError(const Operation& operation)
-  {
-    OrthancSlicesLoader::SliceImageErrorMessage msg
-      (*this, operation.GetSliceIndex(), operation.GetSlice(), operation.GetQuality());
-    BroadcastMessage(msg);
-  }
-  
-  
-  void OrthancSlicesLoader::SortAndFinalizeSlices()
-  {
-    bool ok = slices_.Sort();
-    
-    state_ = State_GeometryReady;
-    
-    if (ok)
-    {
-      LOG(INFO) << "Loaded a series with " << slices_.GetSlicesCount() << " slice(s)";
-      BroadcastMessage(SliceGeometryReadyMessage(*this));
-    }
-    else
-    {
-      LOG(ERROR) << "This series is empty";
-      BroadcastMessage(SliceGeometryErrorMessage(*this));
-    }
-  }
-  
-  void OrthancSlicesLoader::OnGeometryError(const IWebService::HttpRequestErrorMessage& message)
-  {
-    BroadcastMessage(SliceGeometryErrorMessage(*this));
-    state_ = State_Error;
-  }
-
-  void OrthancSlicesLoader::OnSliceImageError(const IWebService::HttpRequestErrorMessage& message)
-  {
-    NotifySliceImageError(dynamic_cast<const Operation&>(message.GetPayload()));
-    state_ = State_Error;
-  }
-
-  void OrthancSlicesLoader::ParseSeriesGeometry(const OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    const Json::Value& series = message.GetJson();
-    Json::Value::Members instances = series.getMemberNames();
-    
-    slices_.Reserve(instances.size());
-    
-    for (size_t i = 0; i < instances.size(); i++)
-    {
-      OrthancPlugins::FullOrthancDataset dataset(series[instances[i]]);
-      
-      Orthanc::DicomMap dicom;
-      MessagingToolbox::ConvertDataset(dicom, dataset);
-      
-      unsigned int frames;
-      if (!dicom.ParseUnsignedInteger32(frames, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
-      {
-        frames = 1;
-      }
-      
-      for (unsigned int frame = 0; frame < frames; frame++)
-      {
-        std::unique_ptr<Slice> slice(new Slice);
-        if (slice->ParseOrthancFrame(dicom, instances[i], frame))
-        {
-          OrthancStone::CoordinateSystem3D geometry = slice->GetGeometry();
-          slices_.AddSlice(geometry, slice.release());
-        }
-        else
-        {
-          LOG(WARNING) << "Skipping invalid frame " << frame << " within instance " << instances[i];
-        }
-      }
-    }
-    
-    SortAndFinalizeSlices();
-  }
-  
-  void OrthancSlicesLoader::ParseInstanceGeometry(const OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    const Json::Value& tags = message.GetJson();
-    const std::string& instanceId = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload()).GetInstanceId();
-
-    OrthancPlugins::FullOrthancDataset dataset(tags);
-    
-    Orthanc::DicomMap dicom;
-    MessagingToolbox::ConvertDataset(dicom, dataset);
-
-    unsigned int frames;
-    if (!dicom.ParseUnsignedInteger32(frames, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
-    {
-      frames = 1;
-    }
-    
-    LOG(INFO) << "Instance " << instanceId << " contains " << frames << " frame(s)";
-    
-    for (unsigned int frame = 0; frame < frames; frame++)
-    {
-      std::unique_ptr<Slice> slice(new Slice);
-      if (slice->ParseOrthancFrame(dicom, instanceId, frame))
-      {
-        OrthancStone::CoordinateSystem3D geometry = slice->GetGeometry();
-        slices_.AddSlice(geometry, slice.release());
-      }
-      else
-      {
-        LOG(WARNING) << "Skipping invalid multi-frame instance " << instanceId;
-        BroadcastMessage(SliceGeometryErrorMessage(*this));
-        return;
-      }
-    }
-    
-    SortAndFinalizeSlices();
-  }
-  
-  
-  void OrthancSlicesLoader::ParseFrameGeometry(const OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    const Json::Value& tags = message.GetJson();
-    const std::string& instanceId = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload()).GetInstanceId();
-    unsigned int frame = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload()).GetFrame();
-
-    OrthancPlugins::FullOrthancDataset dataset(tags);
-    
-    state_ = State_GeometryReady;
-    
-    Orthanc::DicomMap dicom;
-    MessagingToolbox::ConvertDataset(dicom, dataset);
-    
-    std::unique_ptr<Slice> slice(new Slice);
-    if (slice->ParseOrthancFrame(dicom, instanceId, frame))
-    {
-      LOG(INFO) << "Loaded instance geometry " << instanceId;
-
-      OrthancStone::CoordinateSystem3D geometry = slice->GetGeometry();
-      slices_.AddSlice(geometry, slice.release());
-      
-      BroadcastMessage(SliceGeometryReadyMessage(*this));
-    }
-    else
-    {
-      LOG(WARNING) << "Skipping invalid instance " << instanceId;
-      BroadcastMessage(SliceGeometryErrorMessage(*this));
-    }
-  }
-  
-  
-  void OrthancSlicesLoader::ParseSliceImagePng(const OrthancApiClient::BinaryResponseReadyMessage& message)
-  {
-    const Operation& operation = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload());
-    std::unique_ptr<Orthanc::ImageAccessor>  image;
-    
-    try
-    {
-      image.reset(new Orthanc::PngReader);
-      dynamic_cast<Orthanc::PngReader&>(*image).ReadFromMemory(message.GetAnswer(), message.GetAnswerSize());
-    }
-    catch (Orthanc::OrthancException&)
-    {
-      NotifySliceImageError(operation);
-      return;
-    }
-    
-    if (image->GetWidth() != operation.GetSlice().GetWidth() ||
-        image->GetHeight() != operation.GetSlice().GetHeight())
-    {
-      NotifySliceImageError(operation);
-      return;
-    }
-
-    if (operation.GetSlice().GetConverter().GetExpectedPixelFormat() ==
-        Orthanc::PixelFormat_SignedGrayscale16)
-    {
-      if (image->GetFormat() == Orthanc::PixelFormat_Grayscale16)
-      {
-        image->SetFormat(Orthanc::PixelFormat_SignedGrayscale16);
-      }
-      else
-      {
-        NotifySliceImageError(operation);
-        return;
-      }
-    }
-    
-    NotifySliceImageSuccess(operation, *image);
-  }
-  
-  void OrthancSlicesLoader::ParseSliceImagePam(const OrthancApiClient::BinaryResponseReadyMessage& message)
-  {
-    const Operation& operation = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload());
-    std::unique_ptr<Orthanc::ImageAccessor>  image;
-
-    try
-    {
-      image.reset(new Orthanc::PamReader);
-      dynamic_cast<Orthanc::PamReader&>(*image).ReadFromMemory(message.GetAnswer(), message.GetAnswerSize());
-    }
-    catch (Orthanc::OrthancException&)
-    {
-      NotifySliceImageError(operation);
-      return;
-    }
-
-    if (image->GetWidth() != operation.GetSlice().GetWidth() ||
-        image->GetHeight() != operation.GetSlice().GetHeight())
-    {
-      NotifySliceImageError(operation);
-      return;
-    }
-
-    if (operation.GetSlice().GetConverter().GetExpectedPixelFormat() ==
-        Orthanc::PixelFormat_SignedGrayscale16)
-    {
-      if (image->GetFormat() == Orthanc::PixelFormat_Grayscale16)
-      {
-        image->SetFormat(Orthanc::PixelFormat_SignedGrayscale16);
-      }
-      else
-      {
-        NotifySliceImageError(operation);
-        return;
-      }
-    }
-
-    NotifySliceImageSuccess(operation, *image);
-  }
-
-
-  void OrthancSlicesLoader::ParseSliceImageJpeg(const OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    const Operation& operation = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload());
-
-    const Json::Value& encoded = message.GetJson();
-    if (encoded.type() != Json::objectValue ||
-        !encoded.isMember("Orthanc") ||
-        encoded["Orthanc"].type() != Json::objectValue)
-    {
-      NotifySliceImageError(operation);
-      return;
-    }
-    
-    const Json::Value& info = encoded["Orthanc"];
-    if (!info.isMember("PixelData") ||
-        !info.isMember("Stretched") ||
-        !info.isMember("Compression") ||
-        info["Compression"].type() != Json::stringValue ||
-        info["PixelData"].type() != Json::stringValue ||
-        info["Stretched"].type() != Json::booleanValue ||
-        info["Compression"].asString() != "Jpeg")
-    {
-      NotifySliceImageError(operation);
-      return;
-    }
-    
-    bool isSigned = false;
-    bool isStretched = info["Stretched"].asBool();
-    
-    if (info.isMember("IsSigned"))
-    {
-      if (info["IsSigned"].type() != Json::booleanValue)
-      {
-        NotifySliceImageError(operation);
-        return;
-      }
-      else
-      {
-        isSigned = info["IsSigned"].asBool();
-      }
-    }
-    
-    std::unique_ptr<Orthanc::ImageAccessor> reader;
-    
-    {
-      std::string jpeg;
-      //Orthanc::Toolbox::DecodeBase64(jpeg, info["PixelData"].asString());
-      jpeg = base64_decode(info["PixelData"].asString());
-      
-      try
-      {
-        reader.reset(new Orthanc::JpegReader);
-        dynamic_cast<Orthanc::JpegReader&>(*reader).ReadFromMemory(jpeg);
-      }
-      catch (Orthanc::OrthancException&)
-      {
-        NotifySliceImageError(operation);
-        return;
-      }
-    }
-    
-    Orthanc::PixelFormat expectedFormat =
-      operation.GetSlice().GetConverter().GetExpectedPixelFormat();
-    
-    if (reader->GetFormat() == Orthanc::PixelFormat_RGB24)  // This is a color image
-    {
-      if (expectedFormat != Orthanc::PixelFormat_RGB24)
-      {
-        NotifySliceImageError(operation);
-        return;
-      }
-      
-      if (isSigned || isStretched)
-      {
-        NotifySliceImageError(operation);
-        return;
-      }
-      else
-      {
-        NotifySliceImageSuccess(operation, *reader);
-        return;
-      }
-    }
-    
-    if (reader->GetFormat() != Orthanc::PixelFormat_Grayscale8)
-    {
-      NotifySliceImageError(operation);
-      return;
-    }
-    
-    if (!isStretched)
-    {
-      if (expectedFormat != reader->GetFormat())
-      {
-        NotifySliceImageError(operation);
-        return;
-      }
-      else
-      {
-        NotifySliceImageSuccess(operation, *reader);
-        return;
-      }
-    }
-    
-    int32_t stretchLow = 0;
-    int32_t stretchHigh = 0;
-    
-    if (!info.isMember("StretchLow") ||
-        !info.isMember("StretchHigh") ||
-        info["StretchLow"].type() != Json::intValue ||
-        info["StretchHigh"].type() != Json::intValue)
-    {
-      NotifySliceImageError(operation);
-      return;
-    }
-    
-    stretchLow = info["StretchLow"].asInt();
-    stretchHigh = info["StretchHigh"].asInt();
-    
-    if (stretchLow < -32768 ||
-        stretchHigh > 65535 ||
-        (stretchLow < 0 && stretchHigh > 32767))
-    {
-      // This range cannot be represented with a uint16_t or an int16_t
-      NotifySliceImageError(operation);
-      return;
-    }
-    
-    // Decode a grayscale JPEG 8bpp image coming from the Web viewer
-    std::unique_ptr<Orthanc::ImageAccessor> image
-      (new Orthanc::Image(expectedFormat, reader->GetWidth(), reader->GetHeight(), false));
-
-    Orthanc::ImageProcessing::Convert(*image, *reader);
-    reader.reset();
-    
-    float scaling = static_cast<float>(stretchHigh - stretchLow) / 255.0f;
-    
-    if (!OrthancStone::LinearAlgebra::IsCloseToZero(scaling))
-    {
-      float offset = static_cast<float>(stretchLow) / scaling;
-      Orthanc::ImageProcessing::ShiftScale(*image, offset, scaling, true);
-    }
-    
-    NotifySliceImageSuccess(operation, *image);
-  }
-
-
-  class StringImage : public Orthanc::ImageAccessor
-  {
-  private:
-    std::string  buffer_;
-    
-  public:
-    StringImage(Orthanc::PixelFormat format,
-                unsigned int width,
-                unsigned int height,
-                std::string& buffer)
-    {
-      if (buffer.size() != Orthanc::GetBytesPerPixel(format) * width * height)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-      }
-      
-      buffer_.swap(buffer);  // The source buffer is now empty
-      
-      void* data = (buffer_.empty() ? NULL : &buffer_[0]);
-      
-      AssignWritable(format, width, height,
-                     Orthanc::GetBytesPerPixel(format) * width, data);
-    }
-  };
-  
-  void OrthancSlicesLoader::ParseSliceRawImage(const OrthancApiClient::BinaryResponseReadyMessage& message)
-  {
-    const Operation& operation = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload());
-    Orthanc::GzipCompressor compressor;
-    
-    std::string raw;
-    compressor.Uncompress(raw, message.GetAnswer(), message.GetAnswerSize());
-    
-    const Orthanc::DicomImageInformation& info = operation.GetSlice().GetImageInformation();
-    
-    if (info.GetBitsAllocated() == 32 &&
-        info.GetBitsStored() == 32 &&
-        info.GetHighBit() == 31 &&
-        info.GetChannelCount() == 1 &&
-        !info.IsSigned() &&
-        info.GetPhotometricInterpretation() == Orthanc::PhotometricInterpretation_Monochrome2 &&
-        raw.size() == info.GetWidth() * info.GetHeight() * 4)
-    {
-      // This is the case of RT-DOSE (uint32_t values)
-      
-      std::unique_ptr<Orthanc::ImageAccessor> image
-        (new StringImage(Orthanc::PixelFormat_Grayscale32, info.GetWidth(),
-                         info.GetHeight(), raw));
-      
-      // TODO - Only for big endian
-      for (unsigned int y = 0; y < image->GetHeight(); y++)
-      {
-        uint32_t *p = reinterpret_cast<uint32_t*>(image->GetRow(y));
-        for (unsigned int x = 0; x < image->GetWidth(); x++, p++)
-        {
-          *p = le32toh(*p);
-        }
-      }
-      
-      NotifySliceImageSuccess(operation, *image);
-    }
-    else if (info.GetBitsAllocated() == 16 &&
-             info.GetBitsStored() == 16 &&
-             info.GetHighBit() == 15 &&
-             info.GetChannelCount() == 1 &&
-             !info.IsSigned() &&
-             info.GetPhotometricInterpretation() == Orthanc::PhotometricInterpretation_Monochrome2 &&
-             raw.size() == info.GetWidth() * info.GetHeight() * 2)
-    {
-      std::unique_ptr<Orthanc::ImageAccessor> image
-        (new StringImage(Orthanc::PixelFormat_Grayscale16, info.GetWidth(),
-                         info.GetHeight(), raw));
-      
-      // TODO - Big endian ?
-      
-      NotifySliceImageSuccess(operation, *image);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-
-  }
-  
-  
-  OrthancSlicesLoader::OrthancSlicesLoader(boost::shared_ptr<OrthancApiClient> orthanc) :
-    orthanc_(orthanc),
-    state_(State_Initialization)
-  {
-  }
-  
-  
-  void OrthancSlicesLoader::ScheduleLoadSeries(const std::string& seriesId)
-  {
-    if (state_ != State_Initialization)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      state_ = State_LoadingGeometry;
-      orthanc_->GetJsonAsync("/series/" + seriesId + "/instances-tags",
-                             new DeprecatedCallable<OrthancSlicesLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &OrthancSlicesLoader::ParseSeriesGeometry),
-                             new DeprecatedCallable<OrthancSlicesLoader, IWebService::HttpRequestErrorMessage>(GetSharedObserver(), &OrthancSlicesLoader::OnGeometryError),
-                             NULL);
-    }
-  }
-  
-  void OrthancSlicesLoader::ScheduleLoadInstance(const std::string& instanceId)
-  {
-    if (state_ != State_Initialization)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      state_ = State_LoadingGeometry;
-      
-      // Tag "3004-000c" is "Grid Frame Offset Vector", which is
-      // mandatory to read RT DOSE, but is too long to be returned by default
-      orthanc_->GetJsonAsync("/instances/" + instanceId + "/tags?ignore-length=3004-000c",
-                             new DeprecatedCallable<OrthancSlicesLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &OrthancSlicesLoader::ParseInstanceGeometry),
-                             new DeprecatedCallable<OrthancSlicesLoader, IWebService::HttpRequestErrorMessage>(GetSharedObserver(), &OrthancSlicesLoader::OnGeometryError),
-                             Operation::DownloadInstanceGeometry(instanceId));
-    }
-  }
-  
-  
-  void OrthancSlicesLoader::ScheduleLoadFrame(const std::string& instanceId,
-                                              unsigned int frame)
-  {
-    if (state_ != State_Initialization)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      state_ = State_LoadingGeometry;
-
-      orthanc_->GetJsonAsync("/instances/" + instanceId + "/tags",
-                             new DeprecatedCallable<OrthancSlicesLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &OrthancSlicesLoader::ParseFrameGeometry),
-                             new DeprecatedCallable<OrthancSlicesLoader, IWebService::HttpRequestErrorMessage>(GetSharedObserver(), &OrthancSlicesLoader::OnGeometryError),
-                             Operation::DownloadFrameGeometry(instanceId, frame));
-    }
-  }
-  
-  
-  bool OrthancSlicesLoader::IsGeometryReady() const
-  {
-    return state_ == State_GeometryReady;
-  }
-  
-  
-  size_t OrthancSlicesLoader::GetSlicesCount() const
-  {
-    if (state_ != State_GeometryReady)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    
-    return slices_.GetSlicesCount();
-  }
-  
-  
-  const Slice& OrthancSlicesLoader::GetSlice(size_t index) const
-  {
-    if (state_ != State_GeometryReady)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    return dynamic_cast<const Slice&>(slices_.GetSlicePayload(index));
-  }
-  
-  
-  bool OrthancSlicesLoader::LookupSlice(size_t& index,
-                                        const OrthancStone::CoordinateSystem3D& plane) const
-  {
-    if (state_ != State_GeometryReady)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    double distance;
-    return (slices_.LookupClosestSlice(index, distance, plane) &&
-            distance <= GetSlice(index).GetThickness() / 2.0);
-  }
-  
-  
-  void OrthancSlicesLoader::ScheduleSliceImagePng(const Slice& slice,
-                                                  size_t index)
-  {
-    std::string uri = ("/instances/" + slice.GetOrthancInstanceId() + "/frames/" +
-                       boost::lexical_cast<std::string>(slice.GetFrame()));
-    
-    switch (slice.GetConverter().GetExpectedPixelFormat())
-    {
-      case Orthanc::PixelFormat_RGB24:
-        uri += "/preview";
-        break;
-      
-      case Orthanc::PixelFormat_Grayscale16:
-        uri += "/image-uint16";
-        break;
-      
-      case Orthanc::PixelFormat_SignedGrayscale16:
-        uri += "/image-int16";
-        break;
-      
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    
-    orthanc_->GetBinaryAsync(uri, "image/png",
-                             new DeprecatedCallable<OrthancSlicesLoader, 
-                             OrthancApiClient::BinaryResponseReadyMessage>
-                             (GetSharedObserver(), &OrthancSlicesLoader::ParseSliceImagePng),
-                             new DeprecatedCallable<OrthancSlicesLoader, 
-                             IWebService::HttpRequestErrorMessage>
-                             (GetSharedObserver(), &OrthancSlicesLoader::OnSliceImageError),
-                             Operation::DownloadSliceImage(
-                               static_cast<unsigned int>(index), slice, SliceImageQuality_FullPng));
-  }
-  
-  void OrthancSlicesLoader::ScheduleSliceImagePam(const Slice& slice,
-                                                  size_t index)
-  {
-    std::string uri = 
-      ("/instances/" + slice.GetOrthancInstanceId() + "/frames/" +
-       boost::lexical_cast<std::string>(slice.GetFrame()));
-
-    switch (slice.GetConverter().GetExpectedPixelFormat())
-    {
-      case Orthanc::PixelFormat_RGB24:
-        uri += "/preview";
-        break;
-
-      case Orthanc::PixelFormat_Grayscale16:
-        uri += "/image-uint16";
-        break;
-
-      case Orthanc::PixelFormat_SignedGrayscale16:
-        uri += "/image-int16";
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    orthanc_->GetBinaryAsync(uri, "image/x-portable-arbitrarymap",
-                             new DeprecatedCallable<OrthancSlicesLoader, 
-                             OrthancApiClient::BinaryResponseReadyMessage>
-                             (GetSharedObserver(), &OrthancSlicesLoader::ParseSliceImagePam),
-                             new DeprecatedCallable<OrthancSlicesLoader, 
-                             IWebService::HttpRequestErrorMessage>
-                             (GetSharedObserver(), &OrthancSlicesLoader::OnSliceImageError),
-                             Operation::DownloadSliceImage(static_cast<unsigned int>(index), 
-                                                           slice, SliceImageQuality_FullPam));
-  }
-
-
-  
-  void OrthancSlicesLoader::ScheduleSliceImageJpeg(const Slice& slice,
-                                                   size_t index,
-                                                   SliceImageQuality quality)
-  {
-    unsigned int value;
-    
-    switch (quality)
-    {
-      case SliceImageQuality_Jpeg50:
-        value = 50;
-        break;
-
-      case SliceImageQuality_Jpeg90:
-        value = 90;
-        break;
-
-      case SliceImageQuality_Jpeg95:
-        value = 95;
-        break;
-      
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    
-    // This requires the official Web viewer plugin to be installed!
-    std::string uri = ("/web-viewer/instances/jpeg" +
-                       boost::lexical_cast<std::string>(value) +
-                       "-" + slice.GetOrthancInstanceId() + "_" +
-                       boost::lexical_cast<std::string>(slice.GetFrame()));
-
-    orthanc_->GetJsonAsync(uri,
-                           new DeprecatedCallable<OrthancSlicesLoader, 
-                           OrthancApiClient::JsonResponseReadyMessage>
-                           (GetSharedObserver(), &OrthancSlicesLoader::ParseSliceImageJpeg),
-                           new DeprecatedCallable<OrthancSlicesLoader, 
-                           IWebService::HttpRequestErrorMessage>
-                           (GetSharedObserver(), &OrthancSlicesLoader::OnSliceImageError),
-                           Operation::DownloadSliceImage(
-                             static_cast<unsigned int>(index), slice, quality));
-  }
-  
-  
-  
-  void OrthancSlicesLoader::ScheduleLoadSliceImage(size_t index,
-                                                   SliceImageQuality quality)
-  {
-    if (state_ != State_GeometryReady)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    
-    const Slice& slice = GetSlice(index);
-    
-    if (slice.HasOrthancDecoding())
-    {
-      switch (quality)
-      {
-        case SliceImageQuality_FullPng:
-          ScheduleSliceImagePng(slice, index);
-          break;
-        case SliceImageQuality_FullPam:
-          ScheduleSliceImagePam(slice, index);
-          break;
-        default:
-          ScheduleSliceImageJpeg(slice, index, quality);
-      }
-    }
-    else
-    {
-      std::string uri = ("/instances/" + slice.GetOrthancInstanceId() + "/frames/" +
-                         boost::lexical_cast<std::string>(slice.GetFrame()) + "/raw.gz");
-      orthanc_->GetBinaryAsync(uri, IWebService::HttpHeaders(),
-                               new DeprecatedCallable<OrthancSlicesLoader, 
-                               OrthancApiClient::BinaryResponseReadyMessage>
-                               (GetSharedObserver(), &OrthancSlicesLoader::ParseSliceRawImage),
-                               new DeprecatedCallable<OrthancSlicesLoader,
-                               IWebService::HttpRequestErrorMessage>
-                               (GetSharedObserver(), &OrthancSlicesLoader::OnSliceImageError),
-                               Operation::DownloadSliceRawImage(
-                                 static_cast<unsigned int>(index), slice));
-    }
-  }
-}
--- a/Framework/Deprecated/Toolbox/OrthancSlicesLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Messages/IObservable.h"
-#include "../../Messages/ObserverBase.h"
-#include "../../StoneEnumerations.h"
-#include "../../Toolbox/SlicesSorter.h"
-#include "IWebService.h"
-#include "OrthancApiClient.h"
-#include "Slice.h"
-
-#include <Images/Image.h>
-
-
-namespace Deprecated
-{
-  class OrthancSlicesLoader :
-    public OrthancStone::IObservable,
-    public OrthancStone::ObserverBase<OrthancSlicesLoader>
-  {
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, SliceGeometryReadyMessage, OrthancSlicesLoader);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, SliceGeometryErrorMessage, OrthancSlicesLoader);
-
-    
-    class SliceImageReadyMessage : public OrthancStone::OriginMessage<OrthancSlicesLoader>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      unsigned int                   sliceIndex_;
-      const Slice&                   slice_;
-      const Orthanc::ImageAccessor&  image_;
-      SliceImageQuality              effectiveQuality_;
-
-    public:
-      SliceImageReadyMessage(const OrthancSlicesLoader& origin,
-                             unsigned int sliceIndex,
-                             const Slice& slice,
-                             const Orthanc::ImageAccessor& image,
-                             SliceImageQuality effectiveQuality) :
-        OriginMessage(origin),
-        sliceIndex_(sliceIndex),
-        slice_(slice),
-        image_(image),
-        effectiveQuality_(effectiveQuality)
-      {
-      }
-
-      unsigned int GetSliceIndex() const
-      {
-        return sliceIndex_;
-      }
-
-      const Slice& GetSlice() const
-      {
-        return slice_;
-      }
-
-      const Orthanc::ImageAccessor& GetImage() const
-      {
-        return image_;
-      }
-
-      SliceImageQuality GetEffectiveQuality() const
-      {
-        return effectiveQuality_;
-      }        
-    };
-    
-
-    class SliceImageErrorMessage : public OrthancStone::OriginMessage<OrthancSlicesLoader>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const Slice&       slice_;
-      unsigned int       sliceIndex_;
-      SliceImageQuality  effectiveQuality_;
-
-    public:
-      SliceImageErrorMessage(const OrthancSlicesLoader& origin,
-                             unsigned int sliceIndex,
-                             const Slice& slice,
-                             SliceImageQuality effectiveQuality) :
-        OriginMessage(origin),
-        slice_(slice),
-        sliceIndex_(sliceIndex),
-        effectiveQuality_(effectiveQuality)
-      {
-      }
-      unsigned int GetSliceIndex() const
-      {
-        return sliceIndex_;
-      }
-
-      const Slice& GetSlice() const
-      {
-        return slice_;
-      }
-
-      SliceImageQuality GetEffectiveQuality() const
-      {
-        return effectiveQuality_;
-      }        
-    };
-    
-  private:
-    enum State
-    {
-      State_Error,
-      State_Initialization,
-      State_LoadingGeometry,
-      State_GeometryReady
-    };
-    
-    enum Mode
-    {
-      Mode_SeriesGeometry,
-      Mode_InstanceGeometry,
-      Mode_FrameGeometry,
-      Mode_LoadImage,
-      Mode_LoadRawImage,
-      Mode_LoadDicomFile
-    };
-
-    class Operation;
-
-    boost::shared_ptr<OrthancApiClient>  orthanc_;
-    State         state_;
-    OrthancStone::SlicesSorter  slices_;
-
-    void NotifySliceImageSuccess(const Operation& operation,
-                                 const Orthanc::ImageAccessor& image);
-    
-    void NotifySliceImageError(const Operation& operation);
-
-    void OnGeometryError(const IWebService::HttpRequestErrorMessage& message);
-
-    void OnSliceImageError(const IWebService::HttpRequestErrorMessage& message);
-
-    void ParseSeriesGeometry(const OrthancApiClient::JsonResponseReadyMessage& message);
-
-    void ParseInstanceGeometry(const OrthancApiClient::JsonResponseReadyMessage& message);
-
-    void ParseFrameGeometry(const OrthancApiClient::JsonResponseReadyMessage& message);
-
-    void ParseSliceImagePng(const OrthancApiClient::BinaryResponseReadyMessage& message);
-
-    void ParseSliceImagePam(const OrthancApiClient::BinaryResponseReadyMessage& message);
-
-    void ParseSliceImageJpeg(const OrthancApiClient::JsonResponseReadyMessage& message);
-
-    void ParseSliceRawImage(const OrthancApiClient::BinaryResponseReadyMessage& message);
-
-    void ScheduleSliceImagePng(const Slice& slice,
-                               size_t index);
-
-    void ScheduleSliceImagePam(const Slice& slice,
-                               size_t index);
-
-    void ScheduleSliceImageJpeg(const Slice& slice,
-                                size_t index,
-                                SliceImageQuality quality);
-
-    void SortAndFinalizeSlices();
-    
-  public:
-    OrthancSlicesLoader(//ISliceLoaderObserver& callback,
-      boost::shared_ptr<OrthancApiClient> orthancApi);
-
-    void ScheduleLoadSeries(const std::string& seriesId);
-
-    void ScheduleLoadInstance(const std::string& instanceId);
-
-    void ScheduleLoadFrame(const std::string& instanceId,
-                           unsigned int frame);
-
-    bool IsGeometryReady() const;
-
-    size_t GetSlicesCount() const;
-
-    const Slice& GetSlice(size_t index) const;
-
-    bool LookupSlice(size_t& index,
-                     const OrthancStone::CoordinateSystem3D& plane) const;
-
-    void ScheduleLoadSliceImage(size_t index,
-                                SliceImageQuality requestedQuality);
-  };
-}
--- a/Framework/Deprecated/Toolbox/ParallelSlices.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,215 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ParallelSlices.h"
-
-#include "../../Toolbox/GeometryToolbox.h"
-#include "../../Volumes/ImageBuffer3D.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  ParallelSlices::ParallelSlices()
-  {
-    Clear();
-  }
-
-
-  ParallelSlices::ParallelSlices(const ParallelSlices& other)
-  {
-    normal_ = other.normal_;
-
-    slices_.resize(other.slices_.size());
-
-    for (size_t i = 0; i < slices_.size(); i++)
-    {
-      assert(other.slices_[i] != NULL);
-      slices_[i] = new OrthancStone::CoordinateSystem3D(*other.slices_[i]);
-    }
-  }
-
-
-  void ParallelSlices::Clear()
-  {
-    for (size_t i = 0; i < slices_.size(); i++)
-    {
-      if (slices_[i] != NULL)
-      {
-        delete slices_[i];
-        slices_[i] = NULL;
-      }
-    }
-
-    slices_.clear();
-    OrthancStone::LinearAlgebra::AssignVector(normal_, 0, 0, 1);
-  }
-  
-
-  ParallelSlices::~ParallelSlices()
-  {
-    Clear();
-  }
-
-
-  void ParallelSlices::AddSlice(const OrthancStone::CoordinateSystem3D& slice)
-  {
-    if (slices_.empty())
-    {
-      normal_ = slice.GetNormal();
-      slices_.push_back(new OrthancStone::CoordinateSystem3D(slice));
-    }
-    else if (OrthancStone::GeometryToolbox::IsParallel(slice.GetNormal(), normal_))
-    {
-      slices_.push_back(new OrthancStone::CoordinateSystem3D(slice));
-    }
-    else
-    {
-      LOG(ERROR) << "Trying to add a slice that is not parallel to the previous ones";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  void ParallelSlices::AddSlice(const OrthancStone::Vector& origin,
-                                const OrthancStone::Vector& axisX,
-                                const OrthancStone::Vector& axisY)
-  {
-    OrthancStone::CoordinateSystem3D slice(origin, axisX, axisY);
-    AddSlice(slice);
-  }
-
-
-  const OrthancStone::CoordinateSystem3D& ParallelSlices::GetSlice(size_t index) const
-  {
-    if (index >= slices_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      return *slices_[index];
-    }
-  }
-
-
-  bool ParallelSlices::ComputeClosestSlice(size_t& closestSlice,
-                                           double& closestDistance,
-                                           const OrthancStone::Vector& origin) const
-  {
-    if (slices_.empty())
-    {
-      return false;
-    }
-
-    double reference = boost::numeric::ublas::inner_prod(origin, normal_);
-
-    closestSlice = 0;
-    closestDistance = std::numeric_limits<double>::infinity();
-
-    for (size_t i = 0; i < slices_.size(); i++)
-    {
-      double distance = fabs(boost::numeric::ublas::inner_prod(slices_[i]->GetOrigin(), normal_) - reference);
-
-      if (distance < closestDistance)
-      {
-        closestSlice = i;
-        closestDistance = distance;
-      }
-    }
-
-    return true;
-  }
-
-
-  ParallelSlices* ParallelSlices::Reverse() const
-  {
-    std::unique_ptr<ParallelSlices> reversed(new ParallelSlices);
-
-    for (size_t i = slices_.size(); i > 0; i--)
-    {
-      const OrthancStone::CoordinateSystem3D& slice = *slices_[i - 1];
-
-      reversed->AddSlice(slice.GetOrigin(),
-                         -slice.GetAxisX(),
-                         slice.GetAxisY());
-    }
-
-    return reversed.release();
-  }
-
-
-  ParallelSlices* ParallelSlices::FromVolumeImage(const OrthancStone::VolumeImageGeometry& geometry,
-                                                  OrthancStone::VolumeProjection projection)
-  {
-    const OrthancStone::Vector dimensions = geometry.GetVoxelDimensions(OrthancStone::VolumeProjection_Axial);
-    const OrthancStone::CoordinateSystem3D& axial = geometry.GetAxialGeometry();
-    
-    std::unique_ptr<ParallelSlices> result(new ParallelSlices);
-
-    switch (projection)
-    {
-      case OrthancStone::VolumeProjection_Axial:
-        for (unsigned int z = 0; z < geometry.GetDepth(); z++)
-        {
-          OrthancStone::Vector origin = axial.GetOrigin();
-          origin += static_cast<double>(z) * dimensions[2] * axial.GetNormal();
-
-          result->AddSlice(origin,
-                           axial.GetAxisX(),
-                           axial.GetAxisY());
-        }
-        break;
-
-      case OrthancStone::VolumeProjection_Coronal:
-        for (unsigned int y = 0; y < geometry.GetHeight(); y++)
-        {
-          OrthancStone::Vector origin = axial.GetOrigin();
-          origin += static_cast<double>(y) * dimensions[1] * axial.GetAxisY();
-          origin += static_cast<double>(geometry.GetDepth() - 1) * dimensions[2] * axial.GetNormal();
-
-          result->AddSlice(origin,
-                           axial.GetAxisX(),
-                           -axial.GetNormal());
-        }
-        break;
-
-      case OrthancStone::VolumeProjection_Sagittal:
-        for (unsigned int x = 0; x < geometry.GetWidth(); x++)
-        {
-          OrthancStone::Vector origin = axial.GetOrigin();
-          origin += static_cast<double>(x) * dimensions[0] * axial.GetAxisX();
-          origin += static_cast<double>(geometry.GetDepth() - 1) * dimensions[2] * axial.GetNormal();
-
-          result->AddSlice(origin,
-                           axial.GetAxisY(),
-                           -axial.GetNormal());
-        }
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    return result.release();
-  }
-}
--- a/Framework/Deprecated/Toolbox/ParallelSlices.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Toolbox/CoordinateSystem3D.h"
-#include "../../Volumes/VolumeImageGeometry.h"
-
-namespace Deprecated
-{
-  class ParallelSlices : public boost::noncopyable
-  {
-  private:
-    OrthancStone::Vector  normal_;
-    std::vector<OrthancStone::CoordinateSystem3D*>  slices_;
-    
-    ParallelSlices& operator= (const ParallelSlices& other);  // Forbidden
-
-    void Clear();
-
-  public:
-    ParallelSlices();
-
-    ParallelSlices(const ParallelSlices& other);
-
-    ~ParallelSlices();
-
-    const OrthancStone::Vector& GetNormal() const
-    {
-      return normal_;
-    }
-
-    void AddSlice(const OrthancStone::CoordinateSystem3D& slice);
-
-    void AddSlice(const OrthancStone::Vector& origin,
-                  const OrthancStone::Vector& axisX,
-                  const OrthancStone::Vector& axisY);
-
-    size_t GetSliceCount() const
-    {
-      return slices_.size();
-    }
-
-    const OrthancStone::CoordinateSystem3D& GetSlice(size_t index) const;
-
-    bool ComputeClosestSlice(size_t& closestSlice,
-                             double& closestDistance,
-                             const OrthancStone::Vector& origin) const;
-
-    ParallelSlices* Reverse() const;
-
-    static ParallelSlices* FromVolumeImage(const OrthancStone::VolumeImageGeometry& geometry,
-                                           OrthancStone::VolumeProjection projection);
-  };
-}
--- a/Framework/Deprecated/Toolbox/ParallelSlicesCursor.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ParallelSlicesCursor.h"
-
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  size_t ParallelSlicesCursor::GetDefaultSlice()
-  {
-    if (slices_.get() == NULL)
-    {
-      return 0;
-    }
-    else
-    {
-      return slices_->GetSliceCount() / 2;
-    }
-  }
-
-
-  size_t ParallelSlicesCursor::GetSliceCount()
-  {
-    if (slices_.get() == NULL)
-    {
-      return 0;
-    }
-    else
-    {
-      return slices_->GetSliceCount();
-    }
-  }
-
-
-  OrthancStone::CoordinateSystem3D ParallelSlicesCursor::GetSlice(size_t slice)
-  {
-    if (slices_.get() == NULL)
-    {
-      return OrthancStone::CoordinateSystem3D();
-    }
-    else
-    {
-      return slices_->GetSlice(slice);
-    }
-  }
-
-
-  void ParallelSlicesCursor::SetGeometry(const ParallelSlices& slices)
-  {
-    slices_.reset(new ParallelSlices(slices));
-
-    currentSlice_ = GetDefaultSlice();
-  }
-
-
-  OrthancStone::CoordinateSystem3D ParallelSlicesCursor::GetCurrentSlice()
-  {
-    if (slices_.get() != NULL &&
-        currentSlice_ < slices_->GetSliceCount())
-    {
-      return slices_->GetSlice(currentSlice_);
-    }
-    else
-    {
-      return OrthancStone::CoordinateSystem3D();  // No slice is available, return the canonical geometry
-    }
-  }
-
-
-  bool ParallelSlicesCursor::SetDefaultSlice()
-  {
-    size_t slice = GetDefaultSlice();
-
-    if (currentSlice_ != slice)
-    {
-      currentSlice_ = slice;
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-  bool ParallelSlicesCursor::ApplyOffset(OrthancStone::SliceOffsetMode mode,
-                                         int offset)
-  {
-    if (slices_.get() == NULL)
-    {
-      return false;
-    }
-
-    int count = static_cast<int>(slices_->GetSliceCount());
-    if (count == 0)
-    {
-      return false;
-    }
-
-    int slice;
-    if (static_cast<int>(currentSlice_) >= count)
-    {
-      slice = count - 1;
-    }
-    else
-    {
-      slice = static_cast<int>(currentSlice_);
-    }
-
-    switch (mode)
-    {
-      case OrthancStone::SliceOffsetMode_Absolute:
-      {
-        slice = offset;
-        break;
-      }
-
-      case OrthancStone::SliceOffsetMode_Relative:
-      {
-        slice += offset;
-        break;
-      }
-
-      case OrthancStone::SliceOffsetMode_Loop:
-      {
-        slice += offset;
-        while (slice < 0)
-        {
-          slice += count;
-        }
-
-        while (slice >= count)
-        {
-          slice -= count;
-        }
-
-        break;
-      }
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (slice < 0)
-    {
-      slice = 0;
-    }
-
-    if (slice >= count)
-    {
-      slice = count - 1;
-    }
-
-    if (slice != static_cast<int>(currentSlice_))
-    {
-      currentSlice_ = static_cast<int>(slice);
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-  bool ParallelSlicesCursor::ApplyWheelEvent(OrthancStone::MouseWheelDirection direction,
-                                             OrthancStone::KeyboardModifiers modifiers)
-  {
-    int offset = (modifiers & OrthancStone::KeyboardModifiers_Control ? 10 : 1);
-
-    switch (direction)
-    {
-      case OrthancStone::MouseWheelDirection_Down:
-        return ApplyOffset(OrthancStone::SliceOffsetMode_Relative, -offset);
-
-      case OrthancStone::MouseWheelDirection_Up:
-        return ApplyOffset(OrthancStone::SliceOffsetMode_Relative, offset);
-
-      default:
-        return false;
-    }
-  }
-
-
-  bool ParallelSlicesCursor::LookupSliceContainingPoint(const OrthancStone::Vector& p)
-  {
-    size_t slice;
-    double distance;
-
-    if (slices_.get() != NULL &&
-        slices_->ComputeClosestSlice(slice, distance, p))
-    {
-      if (currentSlice_ != slice)
-      {
-        currentSlice_ = slice;
-        return true;
-      }
-    }
-
-    return false;
-  }
-}
--- a/Framework/Deprecated/Toolbox/ParallelSlicesCursor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ParallelSlices.h"
-#include "../../StoneEnumerations.h"
-
-#include <Compatibility.h>
-
-namespace Deprecated
-{
-  class ParallelSlicesCursor : public boost::noncopyable
-  {
-  private:
-    std::unique_ptr<ParallelSlices>  slices_;
-    size_t                         currentSlice_;
-
-    size_t GetDefaultSlice();
-
-  public:
-    ParallelSlicesCursor() :
-      currentSlice_(0)
-    {
-    }
-
-    void SetGeometry(const ParallelSlices& slices);
-
-    size_t GetSliceCount();
-
-    OrthancStone::CoordinateSystem3D GetSlice(size_t slice);
-
-    OrthancStone::CoordinateSystem3D GetCurrentSlice();
-
-    // Returns "true" iff. the slice has actually changed
-    bool SetDefaultSlice();
-
-    // Returns "true" iff. the slice has actually changed
-    bool ApplyOffset(OrthancStone::SliceOffsetMode mode,
-                     int offset);
-
-    // Returns "true" iff. the slice has actually changed
-    bool ApplyWheelEvent(OrthancStone::MouseWheelDirection direction,
-                         OrthancStone::KeyboardModifiers modifiers);
-
-    // Returns "true" iff. the slice has actually changed
-    bool LookupSliceContainingPoint(const OrthancStone::Vector& p);
-  };
-}
--- a/Framework/Deprecated/Toolbox/Slice.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "Slice.h"
-
-#include "../../StoneEnumerations.h"
-#include "../../Toolbox/GeometryToolbox.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-#include <boost/lexical_cast.hpp>
-
-namespace Deprecated
-{
-  static bool ParseDouble(double& target,
-                          const std::string& source)
-  {
-    try
-    {
-      target = boost::lexical_cast<double>(source);
-      return true;
-    }
-    catch (boost::bad_lexical_cast&)
-    {
-      return false;
-    }
-  }
-
-  Slice* Slice::Clone() const
-  {
-    std::unique_ptr<Slice> target(new Slice());
-
-    target->type_ = type_;
-    target->orthancInstanceId_ = orthancInstanceId_;
-    target->sopClassUid_ = sopClassUid_;
-    target->frame_ = frame_;
-    target->frameCount_ = frameCount_;
-    target->geometry_ = geometry_;
-    target->pixelSpacingX_ = pixelSpacingX_;
-    target->pixelSpacingY_ = pixelSpacingY_;
-    target->thickness_ = thickness_;
-    target->width_ = width_;
-    target->height_ = height_;
-    target->converter_ = converter_;
-    if (imageInformation_.get() != NULL)
-      target->imageInformation_.reset(imageInformation_->Clone());
-
-    return target.release();
-  }
-  
-  bool Slice::ComputeRTDoseGeometry(const Orthanc::DicomMap& dataset,
-                                    unsigned int frame)
-  {
-    // http://dicom.nema.org/medical/Dicom/2016a/output/chtml/part03/sect_C.8.8.3.2.html
-
-    {
-      std::string increment;
-
-      if (dataset.LookupStringValue(increment, Orthanc::DICOM_TAG_FRAME_INCREMENT_POINTER, false))
-      {
-        Orthanc::Toolbox::ToUpperCase(increment);
-        if (increment != "3004,000C")  // This is the "Grid Frame Offset Vector" tag
-        {
-          LOG(ERROR) << "Bad value for the \"FrameIncrementPointer\" tag";
-          return false;
-        }
-      }
-    }
-
-    std::string offsetTag;
-
-    if (!dataset.LookupStringValue(offsetTag, Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR, false) ||
-        offsetTag.empty())
-    {
-      LOG(ERROR) << "Cannot read the \"GridFrameOffsetVector\" tag, check you are using Orthanc >= 1.3.1";
-      return false;
-    }
-
-    std::vector<std::string> offsets;
-    Orthanc::Toolbox::TokenizeString(offsets, offsetTag, '\\');
-
-    if (frameCount_ <= 1 ||
-        offsets.size() < frameCount_ ||
-        offsets.size() < 2 ||
-        frame >= frameCount_)
-    {
-      LOG(ERROR) << "No information about the 3D location of some slice(s) in a RT DOSE";
-      return false;
-    }
-
-    double offset0, offset1, z;
-
-    if (!ParseDouble(offset0, offsets[0]) ||
-        !ParseDouble(offset1, offsets[1]) ||
-        !ParseDouble(z, offsets[frame]))
-    {
-      LOG(ERROR) << "Invalid syntax";
-      return false;
-    }
-
-    if (!OrthancStone::LinearAlgebra::IsCloseToZero(offset0))
-    {
-      LOG(ERROR) << "Invalid syntax";
-      return false;
-    }
-
-    geometry_ = OrthancStone::CoordinateSystem3D(geometry_.GetOrigin() + z * geometry_.GetNormal(),
-                                                 //+ 650 * geometry_.GetAxisX(),
-                                                 geometry_.GetAxisX(),
-                                                 geometry_.GetAxisY());
-
-    thickness_ = offset1 - offset0;
-    if (thickness_ < 0)
-    {
-      thickness_ = -thickness_;
-    }
-
-    return true;
-  }
-
-  
-  bool Slice::ParseOrthancFrame(const Orthanc::DicomMap& dataset,
-                                const std::string& instanceId,
-                                unsigned int frame)
-  {
-    orthancInstanceId_ = instanceId;
-    frame_ = frame;
-    type_ = Type_OrthancDecodableFrame;
-    imageInformation_.reset(new Orthanc::DicomImageInformation(dataset));
-
-    if (!dataset.LookupStringValue(sopClassUid_, Orthanc::DICOM_TAG_SOP_CLASS_UID, false) ||
-        sopClassUid_.empty())
-    {
-      LOG(ERROR) << "Instance without a SOP class UID";
-      return false; 
-    }
-
-    if (!dataset.ParseUnsignedInteger32(frameCount_, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
-    {
-      frameCount_ = 1;   // Assume instance with one frame
-    }
-
-    if (frame >= frameCount_)
-    {
-      return false;
-    }
-
-    if (!dataset.ParseUnsignedInteger32(width_, Orthanc::DICOM_TAG_COLUMNS) ||
-        !dataset.ParseUnsignedInteger32(height_, Orthanc::DICOM_TAG_ROWS))
-    {
-      return false;
-    }
-
-    thickness_ = 100.0 * std::numeric_limits<double>::epsilon();
-
-    std::string tmp;
-    if (dataset.LookupStringValue(tmp, Orthanc::DICOM_TAG_SLICE_THICKNESS, false))
-    {
-      if (!tmp.empty() &&
-          !ParseDouble(thickness_, tmp))
-      {
-        return false;  // Syntax error
-      }
-    }
-    
-    converter_.ReadParameters(dataset);
-
-    OrthancStone::GeometryToolbox::GetPixelSpacing(pixelSpacingX_, pixelSpacingY_, dataset);
-
-    std::string position, orientation;
-    if (dataset.LookupStringValue(position, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, false) &&
-        dataset.LookupStringValue(orientation, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, false))
-    {
-      geometry_ = OrthancStone::CoordinateSystem3D(position, orientation);
-
-      bool ok = true;
-
-      switch (OrthancStone::StringToSopClassUid(sopClassUid_))
-      {
-        case OrthancStone::SopClassUid_RTDose:
-          type_ = Type_OrthancRawFrame;
-          ok = ComputeRTDoseGeometry(dataset, frame);
-          break;
-            
-        default:
-          break;
-      }
-
-      if (!ok)
-      {
-        LOG(ERROR) << "Cannot deduce the 3D location of frame " << frame
-                   << " in instance " << instanceId << ", whose SOP class UID is: " << sopClassUid_;
-        return false;
-      }
-    }
-
-    return true;
-  }
-
-  
-  const std::string Slice::GetOrthancInstanceId() const
-  {
-    if (type_ == Type_OrthancDecodableFrame ||
-        type_ == Type_OrthancRawFrame)
-    {
-      return orthancInstanceId_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }   
-  }
-
-  
-  unsigned int Slice::GetFrame() const
-  {
-    if (type_ == Type_Invalid)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-        
-    return frame_;
-  }
-
-  
-  const OrthancStone::CoordinateSystem3D& Slice::GetGeometry() const
-  {
-    if (type_ == Type_Invalid)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-        
-    return geometry_;
-  }
-
-  
-  double Slice::GetThickness() const
-  {
-    if (type_ == Type_Invalid)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-        
-    return thickness_;
-  }
-
-  
-  double Slice::GetPixelSpacingX() const
-  {
-    if (type_ == Type_Invalid)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-        
-    return pixelSpacingX_;
-  }
-
-  
-  double Slice::GetPixelSpacingY() const
-  {
-    if (type_ == Type_Invalid)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-        
-    return pixelSpacingY_;
-  }
-
-  
-  unsigned int Slice::GetWidth() const
-  {
-    if (type_ == Type_Invalid)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-        
-    return width_;
-  }
-
-  
-  unsigned int Slice::GetHeight() const
-  {
-    if (type_ == Type_Invalid)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-        
-    return height_;
-  }
-
-
-  const DicomFrameConverter& Slice::GetConverter() const
-  {
-    if (type_ == Type_Invalid)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-        
-    return converter_;
-  }
-
-
-  bool Slice::ContainsPlane(const OrthancStone::CoordinateSystem3D& plane) const
-  {
-    if (type_ == Type_Invalid)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    bool opposite;
-    return (OrthancStone::GeometryToolbox::IsParallelOrOpposite(opposite,
-                                                                GetGeometry().GetNormal(),
-                                                                plane.GetNormal()) &&
-            OrthancStone::LinearAlgebra::IsNear(GetGeometry().ProjectAlongNormal(GetGeometry().GetOrigin()),
-                                                GetGeometry().ProjectAlongNormal(plane.GetOrigin()),
-                                                thickness_ / 2.0));
-  }
-
-  
-  void Slice::GetExtent(std::vector<OrthancStone::Vector>& points) const
-  {
-    double sx = GetPixelSpacingX();
-    double sy = GetPixelSpacingY();
-    double w = static_cast<double>(GetWidth());
-    double h = static_cast<double>(GetHeight());
-
-    points.clear();
-    points.push_back(GetGeometry().MapSliceToWorldCoordinates(-0.5      * sx, -0.5      * sy));
-    points.push_back(GetGeometry().MapSliceToWorldCoordinates((w - 0.5) * sx, -0.5      * sy));
-    points.push_back(GetGeometry().MapSliceToWorldCoordinates(-0.5      * sx, (h - 0.5) * sy));
-    points.push_back(GetGeometry().MapSliceToWorldCoordinates((w - 0.5) * sx, (h - 0.5) * sy));
-  }
-
-
-  const Orthanc::DicomImageInformation& Slice::GetImageInformation() const
-  {
-    if (imageInformation_.get() == NULL)
-    {
-      // Only available if constructing the "Slice" object with a DICOM map
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return *imageInformation_;
-    }
-  }
-}
--- a/Framework/Deprecated/Toolbox/Slice.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Toolbox/CoordinateSystem3D.h"
-#include "DicomFrameConverter.h"
-
-#include <DicomFormat/DicomImageInformation.h>
-#include <IDynamicObject.h>
-
-namespace Deprecated
-{
-  // TODO - Remove this class
-  class Slice :
-    public Orthanc::IDynamicObject  /* to be used as a payload of SlicesSorter */
-  {
-  private:
-    enum Type
-    {
-      Type_Invalid,
-      Type_Standalone,
-      Type_OrthancDecodableFrame,
-      Type_OrthancRawFrame
-      // TODO A slice could come from some DICOM file (URL)
-    };
-
-    bool ComputeRTDoseGeometry(const Orthanc::DicomMap& dataset,
-                               unsigned int frame);
-
-    Type                 type_;
-    std::string          orthancInstanceId_;
-    std::string          sopClassUid_;
-    unsigned int         frame_;
-    unsigned int         frameCount_;   // TODO : Redundant with "imageInformation_"
-    OrthancStone::CoordinateSystem3D   geometry_;
-    double               pixelSpacingX_;
-    double               pixelSpacingY_;
-    double               thickness_;
-    unsigned int         width_;   // TODO : Redundant with "imageInformation_"
-    unsigned int         height_;   // TODO : Redundant with "imageInformation_"
-    DicomFrameConverter  converter_;   // TODO : Partially redundant with "imageInformation_"
-
-    std::unique_ptr<Orthanc::DicomImageInformation>  imageInformation_;
-
-  public:
-    Slice() :
-      type_(Type_Invalid)
-    {
-    }
-
-
-    // this constructor is used to reference, i.e, a slice that is being loaded
-    Slice(const std::string& orthancInstanceId,
-          unsigned int frame) :
-      type_(Type_Invalid),
-      orthancInstanceId_(orthancInstanceId),
-      frame_(frame)
-    {        
-    }
-
-    // TODO Is this constructor the best way to go to tackle missing
-    // layers within SliceViewerWidget?
-    Slice(const OrthancStone::CoordinateSystem3D& plane,
-          double thickness) :
-      type_(Type_Standalone),
-      frame_(0),
-      frameCount_(0),
-      geometry_(plane),
-      pixelSpacingX_(1),
-      pixelSpacingY_(1),
-      thickness_(thickness),
-      width_(0),
-      height_(0)
-    {      
-    }
-
-    Slice(const OrthancStone::CoordinateSystem3D& plane,
-          double pixelSpacingX,
-          double pixelSpacingY,
-          double thickness,
-          unsigned int width,
-          unsigned int height,
-          const DicomFrameConverter& converter) :
-      type_(Type_Standalone),
-      frameCount_(1),
-      geometry_(plane),
-      pixelSpacingX_(pixelSpacingX),
-      pixelSpacingY_(pixelSpacingY),
-      thickness_(thickness),
-      width_(width),
-      height_(height),
-      converter_(converter)
-    {
-    }
-
-    bool IsValid() const
-    {
-      return type_ != Type_Invalid;
-    } 
-
-    bool ParseOrthancFrame(const Orthanc::DicomMap& dataset,
-                           const std::string& instanceId,
-                           unsigned int frame);
-
-    bool HasOrthancDecoding() const
-    {
-      return type_ == Type_OrthancDecodableFrame;
-    }
-
-    const std::string GetOrthancInstanceId() const;
-
-    unsigned int GetFrame() const;
-
-    const OrthancStone::CoordinateSystem3D& GetGeometry() const;
-
-    double GetThickness() const;
-
-    double GetPixelSpacingX() const;
-
-    double GetPixelSpacingY() const;
-
-    unsigned int GetWidth() const;
-
-    unsigned int GetHeight() const;
-
-    const DicomFrameConverter& GetConverter() const;
-
-    bool ContainsPlane(const OrthancStone::CoordinateSystem3D& plane) const;
-
-    void GetExtent(std::vector<OrthancStone::Vector>& points) const;
-
-    const Orthanc::DicomImageInformation& GetImageInformation() const;
-
-    Slice* Clone() const;
-  };
-}
--- a/Framework/Deprecated/Toolbox/ViewportGeometry.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,217 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ViewportGeometry.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-#include <boost/math/special_functions/round.hpp>
-
-namespace Deprecated
-{
-  void ViewportGeometry::ComputeTransform()
-  {
-    // The following lines must be read in reverse order!
-    cairo_matrix_t tmp;
-    
-    // Bring the center of the scene to the center of the view
-    cairo_matrix_init_translate(&transform_, 
-                                panX_ + static_cast<double>(width_) / 2.0, 
-                                panY_ + static_cast<double>(height_) / 2.0);
-
-    // Apply the zoom around (0,0)
-    cairo_matrix_init_scale(&tmp, zoom_, zoom_);
-    cairo_matrix_multiply(&transform_, &tmp, &transform_);
-
-    // Bring the center of the scene to (0,0)
-    cairo_matrix_init_translate(&tmp,
-                                -(sceneExtent_.GetX1() + sceneExtent_.GetX2()) / 2.0,
-                                -(sceneExtent_.GetY1() + sceneExtent_.GetY2()) / 2.0);
-    cairo_matrix_multiply(&transform_, &tmp, &transform_);
-  }
-
-
-  ViewportGeometry::ViewportGeometry()
-  {
-    width_ = 0;
-    height_ = 0;
-
-    zoom_ = 1;
-    panX_ = 0;
-    panY_ = 0;
-
-    ComputeTransform();
-  }
-
-
-  void ViewportGeometry::SetDisplaySize(unsigned int width,
-                                        unsigned int height)
-  {
-    if (width_ != width ||
-        height_ != height)
-    {
-      LOG(INFO) << "New display size: " << width << "x" << height;
-
-      width_ = width;
-      height_ = height;
-
-      ComputeTransform();
-    }
-  }
-
-
-  void ViewportGeometry::SetSceneExtent(const OrthancStone::Extent2D& extent)
-  {
-//    LOG(INFO) << "New scene extent: ("
-//              << extent.GetX1() << "," << extent.GetY1() << ") => ("
-//              << extent.GetX2() << "," << extent.GetY2() << ")";
-
-    sceneExtent_ = extent;
-    ComputeTransform();
-  }
-
-
-  void ViewportGeometry::MapDisplayToScene(double& sceneX /* out */,
-                                           double& sceneY /* out */,
-                                           double x,
-                                           double y) const
-  {
-    cairo_matrix_t transform = transform_;
-
-    if (cairo_matrix_invert(&transform) != CAIRO_STATUS_SUCCESS)
-    {
-      LOG(ERROR) << "Cannot invert singular matrix";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    sceneX = x;
-    sceneY = y;
-    cairo_matrix_transform_point(&transform, &sceneX, &sceneY);
-  }
-
-
-  void ViewportGeometry::MapSceneToDisplay(int& displayX /* out */,
-                                           int& displayY /* out */,
-                                           double x,
-                                           double y) const
-  {
-    cairo_matrix_transform_point(&transform_, &x, &y);
-
-    displayX = static_cast<int>(boost::math::iround(x));
-    displayY = static_cast<int>(boost::math::iround(y));
-  }
-
-
-  void ViewportGeometry::MapPixelCenterToScene(std::vector<Touch>& sceneTouches /* out */,
-                                               const std::vector<Touch>& displayTouches) const
-  {
-    double sceneX, sceneY;
-    sceneTouches.clear();
-    for (size_t t = 0; t < displayTouches.size(); t++)
-    {
-      MapPixelCenterToScene(
-        sceneX,
-        sceneY, 
-        static_cast<int>(displayTouches[t].x), 
-        static_cast<int>(displayTouches[t].y));
-      
-      sceneTouches.push_back(Touch((float)sceneX, (float)sceneY));
-    }
-  }
-
-  void ViewportGeometry::MapPixelCenterToScene(double& sceneX,
-                                               double& sceneY,
-                                               int x,
-                                               int y) const
-  {
-    // Take the center of the pixel
-    MapDisplayToScene(sceneX, sceneY,
-                      static_cast<double>(x) + 0.5,
-                      static_cast<double>(y) + 0.5);
-  }
-
-
-  void ViewportGeometry::FitContent()
-  {
-    if (width_ > 0 &&
-        height_ > 0 &&
-        !sceneExtent_.IsEmpty())
-    {
-      double zoomX = static_cast<double>(width_) / (sceneExtent_.GetX2() - sceneExtent_.GetX1());
-      double zoomY = static_cast<double>(height_) / (sceneExtent_.GetY2() - sceneExtent_.GetY1());
-      zoom_ = zoomX < zoomY ? zoomX : zoomY;
-
-      panX_ = 0;
-      panY_ = 0;
-
-      ComputeTransform();
-    }
-  }
-
-
-  void ViewportGeometry::ApplyTransform(OrthancStone::CairoContext& context) const
-  {
-    cairo_set_matrix(context.GetObject(), &transform_);
-  }
-
-
-  void ViewportGeometry::GetPan(double& x,
-                                double& y) const
-  {
-    x = panX_;
-    y = panY_;
-  }
-
-
-  void ViewportGeometry::SetPan(double x,
-                                double y)
-  {
-    panX_ = x;
-    panY_ = y;
-    ComputeTransform();
-  }
-
-
-  void ViewportGeometry::SetZoom(double zoom)
-  {
-    zoom_ = zoom;
-    ComputeTransform();
-  }
-
-
-  OrthancStone::Matrix ViewportGeometry::GetMatrix() const
-  {
-    OrthancStone::Matrix m(3, 3);
-
-    m(0, 0) = transform_.xx;
-    m(0, 1) = transform_.xy;
-    m(0, 2) = transform_.x0;
-    m(1, 0) = transform_.yx;
-    m(1, 1) = transform_.yy;
-    m(1, 2) = transform_.y0;
-    m(2, 0) = 0;
-    m(2, 1) = 0;
-    m(2, 2) = 1;
-    
-    return m;
-  }
-}
--- a/Framework/Deprecated/Toolbox/ViewportGeometry.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Wrappers/CairoContext.h"
-#include "../../Toolbox/Extent2D.h"
-#include "../../Toolbox/LinearAlgebra.h"
-#include "../Viewport/IMouseTracker.h"  // to include "Touch" definition
-
-namespace Deprecated
-{
-  class ViewportGeometry
-  {
-  private:
-    // Extent of the scene (in world units)
-    OrthancStone::Extent2D   sceneExtent_;
-
-    // Size of the display (in pixels)
-    unsigned int  width_;
-    unsigned int  height_;
-
-    // Zoom/pan
-    double   zoom_;
-    double   panX_;  // In pixels (display units)
-    double   panY_;
-
-    cairo_matrix_t  transform_;  // Scene-to-display transformation
-
-    void ComputeTransform();
-
-  public:
-    ViewportGeometry();
-
-    void SetDisplaySize(unsigned int width,
-                        unsigned int height);
-
-    void SetSceneExtent(const OrthancStone::Extent2D& extent);
-
-    const OrthancStone::Extent2D& GetSceneExtent() const
-    {
-      return sceneExtent_;
-    }
-
-    void MapDisplayToScene(double& sceneX /* out */,
-                           double& sceneY /* out */,
-                           double x,
-                           double y) const;
-
-    void MapPixelCenterToScene(double& sceneX /* out */,
-                               double& sceneY /* out */,
-                               int x,
-                               int y) const;
-
-    void MapPixelCenterToScene(std::vector<Touch>& sceneTouches /* out */,
-                               const std::vector<Touch>& displayTouches) const;
-
-    void MapSceneToDisplay(int& displayX /* out */,
-                           int& displayY /* out */,
-                           double x,
-                           double y) const;
-
-    unsigned int GetDisplayWidth() const
-    {
-      return width_;
-    }
-
-    unsigned int GetDisplayHeight() const
-    {
-      return height_;
-    }
-
-    double GetZoom() const
-    {
-      return zoom_;
-    }
-
-    void FitContent();
-
-    void ApplyTransform(OrthancStone::CairoContext& context) const;
-
-    void GetPan(double& x,
-                double& y) const;
-
-    void SetPan(double x,
-                double y);
-
-    void SetZoom(double zoom);
-
-    OrthancStone::Matrix GetMatrix() const;
-  };
-}
--- a/Framework/Deprecated/Viewport/CairoFont.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoFont.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  CairoFont::CairoFont(const char* family,
-                       cairo_font_slant_t slant,
-                       cairo_font_weight_t weight)
-  {
-    font_ = cairo_toy_font_face_create(family, slant, weight);
-    if (font_ == NULL)
-    {
-      LOG(ERROR) << "Unknown font: " << family;
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource);
-    }
-  }
-
-
-  CairoFont::~CairoFont()
-  {
-    if (font_ != NULL)
-    {
-      cairo_font_face_destroy(font_);
-    }
-  }
-
-
-  void CairoFont::Draw(OrthancStone::CairoContext& context,
-                       const std::string& text,
-                       double size)
-  {
-    if (size <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    cairo_t* cr = context.GetObject();
-    cairo_set_font_face(cr, font_);
-    cairo_set_font_size(cr, size);
-    cairo_show_text(cr, text.c_str());    
-  }
-}
--- a/Framework/Deprecated/Viewport/CairoFont.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if !defined(ORTHANC_SANDBOXED)
-#  error The macro ORTHANC_SANDBOXED must be defined
-#endif
-
-#if ORTHANC_SANDBOXED == 1
-#  error The class CairoFont cannot be used in sandboxed environments
-#endif
-
-#include "../../Wrappers/CairoContext.h"
-
-namespace Deprecated
-{
-  class CairoFont : public boost::noncopyable
-  {
-  private:
-    cairo_font_face_t*  font_;
-
-  public:
-    CairoFont(const char* family,
-              cairo_font_slant_t slant,
-              cairo_font_weight_t weight);
-
-    ~CairoFont();
-
-    void Draw(OrthancStone::CairoContext& context,
-              const std::string& text,
-              double size);
-  };
-}
--- a/Framework/Deprecated/Viewport/IMouseTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Wrappers/CairoSurface.h"
-#include <vector>
-
-namespace Deprecated
-{
-  struct Touch
-  {
-    float x;
-    float y;
-
-    Touch(float x, float y)
-    : x(x),
-      y(y)
-    {
-    }
-    Touch()
-      : x(0.0f),
-        y(0.0f)
-    {
-    }
-  };
-
-
-  // this is tracking a mouse in screen coordinates/pixels unlike
-  // the IWorldSceneMouseTracker that is tracking a mouse
-  // in scene coordinates/mm.
-  class IMouseTracker : public boost::noncopyable
-  {
-  public:
-    virtual ~IMouseTracker()
-    {
-    }
-    
-    virtual void Render(Orthanc::ImageAccessor& surface) = 0;
-
-    virtual void MouseUp() = 0;
-
-    // Returns "true" iff. the background scene must be repainted
-    virtual void MouseMove(int x, 
-                           int y,
-                           const std::vector<Touch>& displayTouches) = 0;
-  };
-}
--- a/Framework/Deprecated/Viewport/IStatusBar.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <string>
-#include <boost/noncopyable.hpp>
-
-namespace Deprecated
-{
-  class IStatusBar : public boost::noncopyable
-  {
-  public:
-    virtual ~IStatusBar()
-    {
-    }
-    
-    virtual void ClearMessage() = 0;
-
-    virtual void SetMessage(const std::string& message) = 0;
-  };
-}
--- a/Framework/Deprecated/Viewport/IViewport.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IStatusBar.h"
-#include "../../StoneEnumerations.h"
-#include "../../Messages/IObservable.h"
-#include "../Viewport/IMouseTracker.h" // only to get the "Touch" definition
-
-#include <Images/ImageAccessor.h>
-
-
-namespace Deprecated
-{
-  class IWidget;   // Forward declaration
-  
-  class IViewport : public OrthancStone::IObservable
-  {
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ViewportChangedMessage, IViewport);
-
-    virtual void FitContent() = 0;
-
-    virtual void SetStatusBar(IStatusBar& statusBar) = 0;
-
-    virtual void SetSize(unsigned int width,
-                         unsigned int height) = 0;
-
-    // The function returns "true" iff. a new frame was rendered
-    virtual bool Render(Orthanc::ImageAccessor& surface) = 0;
-
-    virtual void MouseDown(OrthancStone::MouseButton button,
-                           int x,
-                           int y,
-                           OrthancStone::KeyboardModifiers modifiers,
-                           const std::vector<Touch>& touches) = 0;
-
-    virtual void MouseUp() = 0;
-
-    virtual void MouseMove(int x, 
-                           int y,
-                           const std::vector<Touch>& displayTouches) = 0;
-
-    virtual void MouseEnter() = 0;
-
-    virtual void MouseLeave() = 0;
-
-    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
-                            int x,
-                            int y,
-                            OrthancStone::KeyboardModifiers modifiers) = 0;
-
-    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
-                            char keyChar,
-                            OrthancStone::KeyboardModifiers modifiers) = 0;
-
-    virtual bool HasAnimation() = 0;
-
-    virtual void DoAnimation() = 0;
-
-    // Should only be called from IWidget
-    // TODO Why should this be virtual?
-    virtual void NotifyContentChanged()
-    {
-      BroadcastMessage(ViewportChangedMessage(*this));
-    }
-  };
-}
--- a/Framework/Deprecated/Viewport/WidgetViewport.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,286 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WidgetViewport.h"
-
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  WidgetViewport::WidgetViewport() :
-    statusBar_(NULL),
-    isMouseOver_(false),
-    lastMouseX_(0),
-    lastMouseY_(0),
-    backgroundChanged_(false)
-  {
-  }
-
-
-  void WidgetViewport::FitContent()
-  {
-    if (centralWidget_.get() != NULL)
-    {
-      centralWidget_->FitContent();
-    }
-  }
-
-
-  void WidgetViewport::SetStatusBar(IStatusBar& statusBar)
-  {
-    statusBar_ = &statusBar;
-
-    if (centralWidget_.get() != NULL)
-    {
-      centralWidget_->SetStatusBar(statusBar);
-    }
-  }
-
-
-  void WidgetViewport::SetCentralWidget(boost::shared_ptr<IWidget> widget)
-  {
-    if (widget == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    mouseTracker_.reset(NULL);
-
-    centralWidget_ = widget;
-    centralWidget_->SetViewport(*this);
-
-    if (statusBar_ != NULL)
-    {
-      centralWidget_->SetStatusBar(*statusBar_);
-    }
-
-    NotifyBackgroundChanged();
-  }
-
-
-  void WidgetViewport::NotifyBackgroundChanged()
-  {
-    backgroundChanged_ = true;
-    NotifyContentChanged();
-  }
-
-
-  void WidgetViewport::SetSize(unsigned int width,
-                               unsigned int height)
-  {
-    background_.SetSize(width, height, false /* no alpha */);
-
-    if (centralWidget_.get() != NULL)
-    {
-      centralWidget_->SetSize(width, height);
-    }
-
-    NotifyBackgroundChanged();
-  }
-
-
-  bool WidgetViewport::Render(Orthanc::ImageAccessor& surface)
-  {
-    if (centralWidget_.get() == NULL)
-    {
-      return false;
-    }
-
-    Orthanc::ImageAccessor background;
-    background_.GetWriteableAccessor(background);
-
-    if (backgroundChanged_ &&
-        !centralWidget_->Render(background))
-    {
-      return false;
-    }
-    
-    if (background.GetWidth() != surface.GetWidth() ||
-        background.GetHeight() != surface.GetHeight())
-    {
-      return false;
-    }
-
-    Orthanc::ImageProcessing::Convert(surface, background);
-    
-    if (mouseTracker_.get() != NULL)
-    {
-      mouseTracker_->Render(surface);
-    }
-    else if (isMouseOver_)
-    {
-      centralWidget_->RenderMouseOver(surface, lastMouseX_, lastMouseY_);
-    }
-
-    return true;
-  }
-
-  void WidgetViewport::TouchStart(const std::vector<Touch>& displayTouches)
-  {
-    MouseDown(OrthancStone::MouseButton_Left, (int)displayTouches[0].x, (int)displayTouches[0].y, OrthancStone::KeyboardModifiers_None, displayTouches); // one touch is equivalent to a mouse tracker without left button -> set the mouse coordinates to the first touch coordinates
-  }
-      
-  void WidgetViewport::TouchMove(const std::vector<Touch>& displayTouches)
-  {
-    MouseMove((int)displayTouches[0].x, (int)displayTouches[0].y, displayTouches); // one touch is equivalent to a mouse tracker without left button -> set the mouse coordinates to the first touch coordinates
-  }
-      
-  void WidgetViewport::TouchEnd(const std::vector<Touch>& displayTouches)
-  {
-    // note: TouchEnd is not triggered when a single touch gesture ends (it is only triggered when
-    // going from 2 touches to 1 touch, ...)
-    MouseUp();
-  }
-
-  void WidgetViewport::MouseDown(OrthancStone::MouseButton button,
-                                 int x,
-                                 int y,
-                                 OrthancStone::KeyboardModifiers modifiers,
-                                 const std::vector<Touch>& displayTouches
-                                 )
-  {
-    lastMouseX_ = x;
-    lastMouseY_ = y;
-
-    if (centralWidget_.get() != NULL)
-    {
-      mouseTracker_.reset(centralWidget_->CreateMouseTracker(button, x, y, modifiers, displayTouches));
-    }
-    else
-    {
-      mouseTracker_.reset(NULL);
-    }      
-
-    NotifyContentChanged();
-  }
-
-
-  void WidgetViewport::MouseUp()
-  {
-    if (mouseTracker_.get() != NULL)
-    {
-      mouseTracker_->MouseUp();
-      mouseTracker_.reset(NULL);
-      NotifyContentChanged();
-    }
-  }
-
-
-  void WidgetViewport::MouseMove(int x, 
-                                 int y,
-                                 const std::vector<Touch>& displayTouches)
-  {
-    if (centralWidget_.get() == NULL)
-    {
-      return;
-    }
-
-    lastMouseX_ = x;
-    lastMouseY_ = y;
-
-    bool repaint = false;
-    
-    if (mouseTracker_.get() != NULL)
-    {
-      mouseTracker_->MouseMove(x, y, displayTouches);
-      repaint = true;
-    }
-    else
-    {
-      repaint = centralWidget_->HasRenderMouseOver();
-    }
-
-    if (repaint)
-    {
-      // The scene must be repainted, notify the observers
-      NotifyContentChanged();
-    }
-  }
-
-
-  void WidgetViewport::MouseEnter()
-  {
-    isMouseOver_ = true;
-    NotifyContentChanged();
-  }
-
-
-  void WidgetViewport::MouseLeave()
-  {
-    isMouseOver_ = false;
-
-    if (mouseTracker_.get() != NULL)
-    {
-      mouseTracker_->MouseUp();
-      mouseTracker_.reset(NULL);
-    }
-
-    NotifyContentChanged();
-  }
-
-
-  void WidgetViewport::MouseWheel(OrthancStone::MouseWheelDirection direction,
-                                  int x,
-                                  int y,
-                                  OrthancStone::KeyboardModifiers modifiers)
-  {
-    if (centralWidget_.get() != NULL &&
-        mouseTracker_.get() == NULL)
-    {
-      centralWidget_->MouseWheel(direction, x, y, modifiers);
-    }
-  }
-
-
-  void WidgetViewport::KeyPressed(OrthancStone::KeyboardKeys key,
-                                  char keyChar,
-                                  OrthancStone::KeyboardModifiers modifiers)
-  {
-    if (centralWidget_.get() != NULL &&
-        mouseTracker_.get() == NULL)
-    {
-      centralWidget_->KeyPressed(key, keyChar, modifiers);
-    }
-  }
-
-
-  bool WidgetViewport::HasAnimation()
-  {
-    if (centralWidget_.get() != NULL)
-    {
-      return centralWidget_->HasAnimation();
-    }
-    else
-    {
-      return false;
-    }
-  }
-   
-
-  void WidgetViewport::DoAnimation()
-  {
-    if (centralWidget_.get() != NULL)
-    {
-      centralWidget_->DoAnimation();
-    }
-  }
-}
--- a/Framework/Deprecated/Viewport/WidgetViewport.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IViewport.h"
-#include "../Widgets/IWidget.h"
-
-#include <Compatibility.h>
-
-#include <memory>
-
-namespace Deprecated
-{
-  class WidgetViewport : public IViewport
-  {
-  private:
-    boost::shared_ptr<IWidget>    centralWidget_;
-    IStatusBar*                   statusBar_;
-    std::unique_ptr<IMouseTracker>  mouseTracker_;
-    bool                          isMouseOver_;
-    int                           lastMouseX_;
-    int                           lastMouseY_;
-    OrthancStone::CairoSurface    background_;
-    bool                          backgroundChanged_;
-
-  public:
-    WidgetViewport();
-
-    virtual void FitContent();
-
-    virtual void SetStatusBar(IStatusBar& statusBar);
-
-    void SetCentralWidget(boost::shared_ptr<IWidget> widget);
-
-    virtual void NotifyBackgroundChanged();
-
-    virtual void SetSize(unsigned int width,
-                         unsigned int height);
-
-    virtual bool Render(Orthanc::ImageAccessor& surface);
-
-    virtual void MouseDown(OrthancStone::MouseButton button,
-                           int x,
-                           int y,
-                           OrthancStone::KeyboardModifiers modifiers,
-                           const std::vector<Touch>& displayTouches);
-
-    virtual void MouseUp();
-
-    virtual void MouseMove(int x, 
-                           int y,
-                           const std::vector<Touch>& displayTouches);
-
-    virtual void MouseEnter();
-
-    virtual void MouseLeave();
-
-    virtual void TouchStart(const std::vector<Touch>& touches);
-    
-    virtual void TouchMove(const std::vector<Touch>& touches);
-    
-    virtual void TouchEnd(const std::vector<Touch>& touches);
-
-    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
-                            int x,
-                            int y,
-                            OrthancStone::KeyboardModifiers modifiers);
-
-    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
-                            char keyChar,
-                            OrthancStone::KeyboardModifiers modifiers);
-
-    virtual bool HasAnimation();
-
-    virtual void DoAnimation();
-  };
-}
--- a/Framework/Deprecated/Volumes/ISlicedVolume.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Messages/IObservable.h"
-#include "../Toolbox/Slice.h"
-
-namespace Deprecated
-{
-  class ISlicedVolume : public OrthancStone::IObservable
-  {
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ContentChangedMessage, ISlicedVolume);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryErrorMessage, ISlicedVolume);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryReadyMessage, ISlicedVolume);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, VolumeReadyMessage, ISlicedVolume);
-
-
-    class SliceContentChangedMessage : public OrthancStone::OriginMessage<ISlicedVolume>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      size_t        sliceIndex_;
-      const Slice&  slice_;
-      
-    public:
-      SliceContentChangedMessage(ISlicedVolume& origin,
-                                 size_t sliceIndex,
-                                 const Slice& slice) :
-        OriginMessage(origin),
-        sliceIndex_(sliceIndex),
-        slice_(slice)
-      {
-      }
-
-      size_t GetSliceIndex() const
-      {
-        return sliceIndex_;
-      }
-
-      const Slice& GetSlice() const
-      {
-        return slice_;
-      }
-    };
-
-
-    virtual size_t GetSliceCount() const = 0;
-
-    virtual const Slice& GetSlice(size_t slice) const = 0;
-  };
-}
--- a/Framework/Deprecated/Volumes/IVolumeLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Messages/IObservable.h"
-
-namespace Deprecated
-{
-  class IVolumeLoader : public OrthancStone::IObservable
-  {
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryReadyMessage, IVolumeLoader);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryErrorMessage, IVolumeLoader);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ContentChangedMessage, IVolumeLoader);
-  };
-}
--- a/Framework/Deprecated/Volumes/StructureSetLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "StructureSetLoader.h"
-
-#include "../Toolbox/MessagingToolbox.h"
-
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  StructureSetLoader::StructureSetLoader(OrthancApiClient& orthanc) :
-    orthanc_(orthanc)
-  {
-  }
-  
-
-  void StructureSetLoader::OnReferencedSliceLoaded(const OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    OrthancPlugins::FullOrthancDataset dataset(message.GetJson());
-
-    Orthanc::DicomMap slice;
-    MessagingToolbox::ConvertDataset(slice, dataset);
-    structureSet_->AddReferencedSlice(slice);
-
-    BroadcastMessage(ContentChangedMessage(*this));
-  }
-  
-
-  void StructureSetLoader::OnStructureSetLoaded(const OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    OrthancPlugins::FullOrthancDataset dataset(message.GetJson());
-    structureSet_.reset(new OrthancStone::DicomStructureSet(dataset));
-
-    std::set<std::string> instances;
-    structureSet_->GetReferencedInstances(instances);
-
-    for (std::set<std::string>::const_iterator it = instances.begin();
-         it != instances.end(); ++it)
-    {
-      orthanc_.PostBinaryAsyncExpectJson("/tools/lookup", *it,
-                                         new DeprecatedCallable<StructureSetLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &StructureSetLoader::OnLookupCompleted));
-    }
-
-    BroadcastMessage(GeometryReadyMessage(*this));
-  }
-
-  
-  void StructureSetLoader::OnLookupCompleted(const OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    const Json::Value& lookup = message.GetJson();
-
-    if (lookup.type() != Json::arrayValue ||
-        lookup.size() != 1 ||
-        !lookup[0].isMember("Type") ||
-        !lookup[0].isMember("Path") ||
-        lookup[0]["Type"].type() != Json::stringValue ||
-        lookup[0]["ID"].type() != Json::stringValue ||
-        lookup[0]["Type"].asString() != "Instance")
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-    }
-
-    const std::string& instance = lookup[0]["ID"].asString();
-    orthanc_.GetJsonAsync("/instances/" + instance + "/tags",
-                          new DeprecatedCallable<StructureSetLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &StructureSetLoader::OnReferencedSliceLoaded));
-  }
-
-  
-  void StructureSetLoader::ScheduleLoadInstance(const std::string& instance)
-  {
-    if (structureSet_.get() != NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      orthanc_.GetJsonAsync("/instances/" + instance + "/tags?ignore-length=3006-0050",
-                            new DeprecatedCallable<StructureSetLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &StructureSetLoader::OnStructureSetLoaded));
-    }
-  }
-
-
-  OrthancStone::DicomStructureSet& StructureSetLoader::GetStructureSet()
-  {
-    if (structureSet_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return *structureSet_;
-    }
-  }
-
-
-  OrthancStone::DicomStructureSet* StructureSetLoader::SynchronousLoad(
-    OrthancPlugins::IOrthancConnection& orthanc,
-    const std::string& instanceId)
-  {
-    const std::string uri = "/instances/" + instanceId + "/tags?ignore-length=3006-0050";
-    OrthancPlugins::FullOrthancDataset dataset(orthanc, uri);
-
-    std::unique_ptr<OrthancStone::DicomStructureSet> result
-      (new OrthancStone::DicomStructureSet(dataset));
-
-    std::set<std::string> instances;
-    result->GetReferencedInstances(instances);
-
-    for (std::set<std::string>::const_iterator it = instances.begin();
-         it != instances.end(); ++it)
-    {
-      Json::Value lookup;
-      MessagingToolbox::RestApiPost(lookup, orthanc, "/tools/lookup", *it);
-
-      if (lookup.type() != Json::arrayValue ||
-          lookup.size() != 1 ||
-          !lookup[0].isMember("Type") ||
-          !lookup[0].isMember("Path") ||
-          lookup[0]["Type"].type() != Json::stringValue ||
-          lookup[0]["ID"].type() != Json::stringValue ||
-          lookup[0]["Type"].asString() != "Instance")
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource);          
-      }
-
-      OrthancPlugins::FullOrthancDataset slice
-        (orthanc, "/instances/" + lookup[0]["ID"].asString() + "/tags");
-      Orthanc::DicomMap m;
-      MessagingToolbox::ConvertDataset(m, slice);
-      result->AddReferencedSlice(m);
-    }
-
-    result->CheckReferencedSlices();
-
-    return result.release();
-  }
-}
--- a/Framework/Deprecated/Volumes/StructureSetLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Messages/ObserverBase.h"
-#include "../../Toolbox/DicomStructureSet.h"
-#include "../Toolbox/OrthancApiClient.h"
-#include "IVolumeLoader.h"
-
-#include <Compatibility.h>
-
-namespace Deprecated
-{
-  class StructureSetLoader :
-    public IVolumeLoader,
-    public OrthancStone::ObserverBase<StructureSetLoader>
-  {
-  private:
-    OrthancApiClient&                 orthanc_;
-    std::unique_ptr<OrthancStone::DicomStructureSet>  structureSet_;
-
-    void OnReferencedSliceLoaded(const OrthancApiClient::JsonResponseReadyMessage& message);
-
-    void OnStructureSetLoaded(const OrthancApiClient::JsonResponseReadyMessage& message);
-
-    void OnLookupCompleted(const OrthancApiClient::JsonResponseReadyMessage& message);
-
-  public:
-    StructureSetLoader(OrthancApiClient& orthanc);
-
-    void ScheduleLoadInstance(const std::string& instance);
-
-    bool HasStructureSet() const
-    {
-      return structureSet_.get() != NULL;
-    }
-
-    OrthancStone::DicomStructureSet& GetStructureSet();
-
-    static OrthancStone::DicomStructureSet* SynchronousLoad(
-      OrthancPlugins::IOrthancConnection& orthanc,
-      const std::string& instanceId);
-  };
-}
--- a/Framework/Deprecated/Widgets/CairoWidget.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoWidget.h"
-
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  static bool IsAligned(const Orthanc::ImageAccessor& target)
-  {
-    // TODO
-    return true;
-  }
-
-  CairoWidget::CairoWidget(const std::string& name) :
-    WidgetBase(name)
-  {
-  }
-
-  void CairoWidget::SetSize(unsigned int width,
-                            unsigned int height)
-  {
-    surface_.SetSize(width, height, false /* no alpha */);
-  }
-  
-
-  bool CairoWidget::Render(Orthanc::ImageAccessor& target)
-  {
-    // Don't call the base class here, as
-    // "ClearBackgroundCairo()" is a faster alternative
-
-    if (IsAligned(target))
-    {
-      OrthancStone::CairoSurface surface(target, false /* no alpha */);
-      OrthancStone::CairoContext context(surface);
-      ClearBackgroundCairo(context);
-      return RenderCairo(context);
-    }
-    else
-    {
-      OrthancStone::CairoContext context(surface_);
-      ClearBackgroundCairo(context);
-
-      if (RenderCairo(context))
-      {
-        Orthanc::ImageAccessor surface;
-        surface_.GetReadOnlyAccessor(surface);
-        Orthanc::ImageProcessing::Copy(target, surface);
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-  }
-
-
-  void CairoWidget::RenderMouseOver(Orthanc::ImageAccessor& target,
-                                    int x,
-                                    int y)
-  {
-    if (IsAligned(target))
-    {
-      OrthancStone::CairoSurface surface(target, false /* no alpha */);
-      OrthancStone::CairoContext context(surface);
-      RenderMouseOverCairo(context, x, y);
-    }
-    else
-    {
-      Orthanc::ImageAccessor accessor;
-      surface_.GetWriteableAccessor(accessor);
-      Orthanc::ImageProcessing::Copy(accessor, target);
-
-      OrthancStone::CairoContext context(surface_);
-      RenderMouseOverCairo(context, x, y);
-
-      Orthanc::ImageProcessing::Copy(target, accessor);
-    }
-  }
-}
--- a/Framework/Deprecated/Widgets/CairoWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WidgetBase.h"
-
-namespace Deprecated
-{
-  class CairoWidget : public WidgetBase
-  {
-  private:
-    OrthancStone::CairoSurface   surface_;
-
-  protected:
-    virtual bool RenderCairo(OrthancStone::CairoContext& context) = 0;
-    
-    virtual void RenderMouseOverCairo(OrthancStone::CairoContext& context,
-                                      int x,
-                                      int y) = 0;
-    
-  public:
-    CairoWidget(const std::string& name);
-
-    virtual void SetSize(unsigned int width,
-                         unsigned int height);
-
-    virtual bool Render(Orthanc::ImageAccessor& target);
-
-    virtual void RenderMouseOver(Orthanc::ImageAccessor& target,
-                                 int x,
-                                 int y);  
-  };
-}
--- a/Framework/Deprecated/Widgets/EmptyWidget.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "EmptyWidget.h"
-
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  bool EmptyWidget::Render(Orthanc::ImageAccessor& surface)
-  {
-    // Note: This call is slow
-    Orthanc::ImageProcessing::Set(surface, red_, green_, blue_, 255);
-    return true;
-  }
-
-
-  void EmptyWidget::DoAnimation()
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-}
--- a/Framework/Deprecated/Widgets/EmptyWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IWidget.h"
-
-namespace Deprecated
-{
-  /**
-   * This is a test widget that simply fills its surface with an
-   * uniform color.
-   **/
-  class EmptyWidget : public IWidget
-  {
-  private:
-    uint8_t  red_;
-    uint8_t  green_;
-    uint8_t  blue_;
-
-  public:
-    EmptyWidget(uint8_t red,
-                uint8_t green,
-                uint8_t blue) :
-      red_(red),
-      green_(green),
-      blue_(blue)
-    {
-    }
-
-    virtual void FitContent()
-    {
-    }
-
-    virtual void SetParent(IWidget& widget)
-    {
-    }
-
-    virtual void SetViewport(WidgetViewport& viewport)
-    {
-    }
-
-    virtual void NotifyContentChanged()
-    {
-    }
-
-    virtual void SetStatusBar(IStatusBar& statusBar)
-    {
-    }
-
-    virtual void SetSize(unsigned int width,
-                         unsigned int height)
-    {
-    }
-
-    virtual bool Render(Orthanc::ImageAccessor& surface);
-
-    virtual IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
-                                              int x,
-                                              int y,
-                                              OrthancStone::KeyboardModifiers modifiers,
-                                              const std::vector<Touch>& touches)
-    {
-      return NULL;
-    }
-
-    virtual void RenderMouseOver(Orthanc::ImageAccessor& target,
-                                 int x,
-                                 int y)
-    {
-    }
-
-    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
-                            int x,
-                            int y,
-                            OrthancStone::KeyboardModifiers modifiers)
-    {
-    }
-
-    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
-                            char keyChar,
-                            OrthancStone::KeyboardModifiers modifiers)
-    {
-    }
-
-    virtual bool HasAnimation() const
-    {
-      return false;
-    }
-
-    virtual void DoAnimation();
-
-    virtual bool HasRenderMouseOver()
-    {
-      return false;
-    }
-  };
-}
--- a/Framework/Deprecated/Widgets/IWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../StoneEnumerations.h"
-#include "../Viewport/IMouseTracker.h"
-#include "../Viewport/IStatusBar.h"
-
-namespace Deprecated
-{
-  class WidgetViewport;  // Forward declaration
-  
-  class IWidget : public boost::noncopyable
-  {
-  public:
-    virtual ~IWidget()
-    {
-    }
-
-    virtual void FitContent() = 0;
-
-    virtual void SetParent(IWidget& parent) = 0;
-    
-    virtual void SetViewport(WidgetViewport& viewport) = 0;
-
-    virtual void SetStatusBar(IStatusBar& statusBar) = 0;
-
-    virtual void SetSize(unsigned int width, 
-                         unsigned int height) = 0;
- 
-    virtual bool Render(Orthanc::ImageAccessor& surface) = 0;
-
-    virtual IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
-                                              int x,
-                                              int y,
-                                              OrthancStone::KeyboardModifiers modifiers,
-                                              const std::vector<Touch>& touches) = 0;
-
-    virtual void RenderMouseOver(Orthanc::ImageAccessor& target,
-                                 int x,
-                                 int y) = 0;
-
-    virtual bool HasRenderMouseOver() = 0;
-
-    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
-                            int x,
-                            int y,
-                            OrthancStone::KeyboardModifiers modifiers) = 0;
-
-    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
-                            char keyChar,
-                            OrthancStone::KeyboardModifiers modifiers) = 0;
-
-    virtual bool HasAnimation() const = 0;
-
-    virtual void DoAnimation() = 0;
-
-    // Subclasses can call this method to signal the display of the
-    // widget must be refreshed
-    virtual void NotifyContentChanged() = 0;
-  };
-}
--- a/Framework/Deprecated/Widgets/IWorldSceneInteractor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IWorldSceneMouseTracker.h"
-
-#include "../Toolbox/ViewportGeometry.h"
-#include "../../StoneEnumerations.h"
-#include "../Viewport/IStatusBar.h"
-
-namespace Deprecated
-{
-    class WorldSceneWidget;
-
-    class IWorldSceneInteractor : public boost::noncopyable
-    {
-    public:
-        virtual ~IWorldSceneInteractor()
-        {
-        }
-
-        virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
-                                                            const ViewportGeometry& view,
-                                                            OrthancStone::MouseButton button,
-                                                            OrthancStone::KeyboardModifiers modifiers,
-                                                            int viewportX,
-                                                            int viewportY,
-                                                            double x,
-                                                            double y,
-                                                            IStatusBar* statusBar,
-                                                            const std::vector<Touch>& touches) = 0;
-
-        virtual void MouseOver(OrthancStone::CairoContext& context,
-                               WorldSceneWidget& widget,
-                               const ViewportGeometry& view,
-                               double x,
-                               double y,
-                               IStatusBar* statusBar) = 0;
-
-        virtual void MouseWheel(WorldSceneWidget& widget,
-                                OrthancStone::MouseWheelDirection direction,
-                                OrthancStone::KeyboardModifiers modifiers,
-                                IStatusBar* statusBar) = 0;
-
-        virtual void KeyPressed(WorldSceneWidget& widget,
-                                OrthancStone::KeyboardKeys key,
-                                char keyChar,
-                                OrthancStone::KeyboardModifiers modifiers,
-                                IStatusBar* statusBar) = 0;
-    };
-}
--- a/Framework/Deprecated/Widgets/IWorldSceneMouseTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Wrappers/CairoContext.h"
-#include "../Viewport/IMouseTracker.h" // only to get the "Touch" definition
-
-namespace Deprecated
-{
-
-  // this is tracking a mouse in scene coordinates/mm unlike
-  // the IMouseTracker that is tracking a mouse
-  // in screen coordinates/pixels.
-  class IWorldSceneMouseTracker : public boost::noncopyable
-  {
-  public:
-    virtual ~IWorldSceneMouseTracker()
-    {
-    }
-
-    virtual bool HasRender() const = 0;
-
-    virtual void Render(OrthancStone::CairoContext& context,
-                        double zoom) = 0;
-
-    virtual void MouseUp() = 0;
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double sceneX,
-                           double sceneY,
-                           const std::vector<Touch>& displayTouches,
-                           const std::vector<Touch>& sceneTouches) = 0;
-  };
-}
--- a/Framework/Deprecated/Widgets/LayoutWidget.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,501 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "LayoutWidget.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-#include <boost/math/special_functions/round.hpp>
-
-namespace Deprecated
-{
-  class LayoutWidget::LayoutMouseTracker : public IMouseTracker
-  {
-  private:
-    std::unique_ptr<IMouseTracker>   tracker_;
-    int                            left_;
-    int                            top_;
-    unsigned int                   width_;
-    unsigned int                   height_;
-
-  public:
-    LayoutMouseTracker(IMouseTracker* tracker,
-                       int left,
-                       int top,
-                       unsigned int width,
-                       unsigned int height) :
-      tracker_(tracker),
-      left_(left),
-      top_(top),
-      width_(width),
-      height_(height)
-    {
-      if (tracker == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-
-    virtual void Render(Orthanc::ImageAccessor& surface)
-    {
-      Orthanc::ImageAccessor accessor;
-      surface.GetRegion(accessor, left_, top_, width_, height_);
-      tracker_->Render(accessor);
-    }
-
-    virtual void MouseUp()
-    {
-      tracker_->MouseUp();
-    }
-
-    virtual void MouseMove(int x, 
-                           int y,
-                           const std::vector<Touch>& displayTouches)
-    {
-      std::vector<Touch> relativeTouches;
-      for (size_t t = 0; t < displayTouches.size(); t++)
-      {
-        relativeTouches.push_back(Touch(displayTouches[t].x - left_, displayTouches[t].y - top_));
-      }
-
-      tracker_->MouseMove(x - left_, y - top_, relativeTouches);
-    }
-  };
-
-
-  class LayoutWidget::ChildWidget : public boost::noncopyable
-  {
-  private:
-    boost::shared_ptr<IWidget>  widget_;
-    int                     left_;
-    int                     top_;
-    unsigned int            width_;
-    unsigned int            height_;
-
-  public:
-    ChildWidget(boost::shared_ptr<IWidget> widget) :
-      widget_(widget)
-    {
-      assert(widget != NULL);
-      SetEmpty();
-    }
-
-    void DoAnimation()
-    {
-      if (widget_->HasAnimation())
-      {
-        widget_->DoAnimation();
-      }
-    }
-
-    IWidget& GetWidget() const
-    {
-      return *widget_;
-    }
-
-    void SetRectangle(unsigned int left, 
-                      unsigned int top,
-                      unsigned int width,
-                      unsigned int height)
-    {
-      left_ = left;
-      top_ = top;
-      width_ = width;
-      height_ = height;
-
-      widget_->SetSize(width, height);
-    }
-
-    void SetEmpty()
-    {
-      SetRectangle(0, 0, 0, 0);
-    }
-
-    bool Contains(int x, 
-                  int y) const
-    {
-      return (x >= left_ && 
-              y >= top_ &&
-              x < left_ + static_cast<int>(width_) &&
-              y < top_ + static_cast<int>(height_));
-    }      
-
-    bool Render(Orthanc::ImageAccessor& target)
-    {
-      if (width_ == 0 ||
-          height_ == 0)
-      {
-        return true;
-      }
-      else 
-      {
-        Orthanc::ImageAccessor accessor;
-        target.GetRegion(accessor, left_, top_, width_, height_);
-        return widget_->Render(accessor);
-      }
-    }
-
-    IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
-                                      int x,
-                                      int y,
-                                      OrthancStone::KeyboardModifiers modifiers,
-                                      const std::vector<Touch>& touches)
-    {
-      if (Contains(x, y))
-      {
-        IMouseTracker* tracker = widget_->CreateMouseTracker(button, 
-                                                             x - left_, 
-                                                             y - top_, 
-                                                             modifiers,
-                                                             touches);
-        if (tracker)
-        {
-          return new LayoutMouseTracker(tracker, left_, top_, width_, height_);
-        }
-      }
-
-      return NULL;
-    }
-
-    void RenderMouseOver(Orthanc::ImageAccessor& target,
-                         int x,
-                         int y)
-    {
-      if (Contains(x, y))
-      {
-        Orthanc::ImageAccessor accessor;
-        target.GetRegion(accessor, left_, top_, width_, height_);
-
-        widget_->RenderMouseOver(accessor, x - left_, y - top_);
-      }
-    }
-
-    void MouseWheel(OrthancStone::MouseWheelDirection direction,
-                    int x,
-                    int y,
-                    OrthancStone::KeyboardModifiers modifiers)
-    {
-      if (Contains(x, y))
-      {
-        widget_->MouseWheel(direction, x - left_, y - top_, modifiers);
-      }
-    }
-    
-    bool HasRenderMouseOver()
-    {
-      return widget_->HasRenderMouseOver();
-    }
-  };
-
-
-  void LayoutWidget::ComputeChildrenExtents()
-  {
-    if (children_.size() == 0)
-    {
-      return;
-    }
-
-    float internal = static_cast<float>(paddingInternal_);
-
-    if (width_ <= paddingLeft_ + paddingRight_ ||
-        height_ <= paddingTop_ + paddingBottom_)
-    {
-      for (size_t i = 0; i < children_.size(); i++)
-      {
-        children_[i]->SetEmpty();          
-      }
-    }
-    else if (isHorizontal_)
-    {
-      unsigned int padding = paddingLeft_ + paddingRight_ + (static_cast<unsigned int>(children_.size()) - 1) * paddingInternal_;
-      float childWidth = ((static_cast<float>(width_) - static_cast<float>(padding)) / 
-                          static_cast<float>(children_.size()));
-        
-      for (size_t i = 0; i < children_.size(); i++)
-      {
-        float left = static_cast<float>(paddingLeft_) + static_cast<float>(i) * (childWidth + internal);
-        float right = left + childWidth;
-
-        if (left >= right)
-        {
-          children_[i]->SetEmpty();
-        }
-        else
-        {
-          children_[i]->SetRectangle(static_cast<unsigned int>(left), 
-                                     paddingTop_, 
-                                     boost::math::iround(right - left),
-                                     height_ - paddingTop_ - paddingBottom_);
-        }
-      }
-    }
-    else
-    {
-      unsigned int padding = paddingTop_ + paddingBottom_ + (static_cast<unsigned int>(children_.size()) - 1) * paddingInternal_;
-      float childHeight = ((static_cast<float>(height_) - static_cast<float>(padding)) / 
-                           static_cast<float>(children_.size()));
-        
-      for (size_t i = 0; i < children_.size(); i++)
-      {
-        float top = static_cast<float>(paddingTop_) + static_cast<float>(i) * (childHeight + internal);
-        float bottom = top + childHeight;
-
-        if (top >= bottom)
-        {
-          children_[i]->SetEmpty();
-        }
-        else
-        {
-          children_[i]->SetRectangle(paddingTop_, 
-                                     static_cast<unsigned int>(top), 
-                                     width_ - paddingLeft_ - paddingRight_,
-                                     boost::math::iround(bottom - top));
-        }
-      }
-    }
-
-    NotifyContentChanged(*this);
-  }
-
-
-  LayoutWidget::LayoutWidget(const std::string& name) :
-    WidgetBase(name),
-    isHorizontal_(true),
-    width_(0),
-    height_(0),
-    paddingLeft_(0),
-    paddingTop_(0),
-    paddingRight_(0),
-    paddingBottom_(0),
-    paddingInternal_(0)
-  {
-  }
-
-
-  LayoutWidget::~LayoutWidget()
-  {
-    for (size_t i = 0; i < children_.size(); i++)
-    {
-      delete children_[i];
-    }
-  }
-
-
-  void LayoutWidget::FitContent()
-  {
-    for (size_t i = 0; i < children_.size(); i++)
-    {
-      children_[i]->GetWidget().FitContent();
-    }
-  }
-  
-
-  void LayoutWidget::NotifyContentChanged(const IWidget& widget)
-  {
-    // One of the children has changed
-    WidgetBase::NotifyContentChanged();
-  }
-
-
-  void LayoutWidget::SetHorizontal()
-  {
-    isHorizontal_ = true;
-    ComputeChildrenExtents();
-  }
-
-
-  void LayoutWidget::SetVertical()
-  {
-    isHorizontal_ = false;
-    ComputeChildrenExtents();
-  }
-
-
-  void LayoutWidget::SetPadding(unsigned int left,
-                                unsigned int top,
-                                unsigned int right,
-                                unsigned int bottom,
-                                unsigned int spacing)
-  {
-    paddingLeft_ = left;
-    paddingTop_ = top;
-    paddingRight_ = right;
-    paddingBottom_ = bottom;
-    paddingInternal_ = spacing;
-  }
-    
-
-  void LayoutWidget::SetPadding(unsigned int padding)
-  {
-    paddingLeft_ = padding;
-    paddingTop_ = padding;
-    paddingRight_ = padding;
-    paddingBottom_ = padding;
-    paddingInternal_ = padding;
-  }
-
-
-  void LayoutWidget::AddWidget(boost::shared_ptr<IWidget> widget)  // Takes ownership
-  {
-    if (widget == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (GetStatusBar() != NULL)
-    {
-      widget->SetStatusBar(*GetStatusBar());
-    }
-
-    children_.push_back(new ChildWidget(widget));
-    widget->SetParent(*this);
-
-    ComputeChildrenExtents();
-
-    if (widget->HasAnimation())
-    {
-      hasAnimation_ = true;
-    }
-  }
-
-
-  void LayoutWidget::SetStatusBar(IStatusBar& statusBar)
-  {
-    WidgetBase::SetStatusBar(statusBar);
-
-    for (size_t i = 0; i < children_.size(); i++)
-    {
-      children_[i]->GetWidget().SetStatusBar(statusBar);
-    }
-  }
-
-
-  void LayoutWidget::SetSize(unsigned int width,
-                             unsigned int height)
-  {
-    width_ = width;
-    height_ = height;
-    ComputeChildrenExtents();
-  }
-
-
-  bool LayoutWidget::Render(Orthanc::ImageAccessor& surface)
-  {
-    if (!WidgetBase::Render(surface))
-    {
-      return false;
-    }
-
-    for (size_t i = 0; i < children_.size(); i++)
-    {
-      if (!children_[i]->Render(surface))
-      {
-        return false;
-      }
-    }
-
-    return true;
-  }
-
-    
-  IMouseTracker* LayoutWidget::CreateMouseTracker(OrthancStone::MouseButton button,
-                                                  int x,
-                                                  int y,
-                                                  OrthancStone::KeyboardModifiers modifiers,
-                                                  const std::vector<Touch>& touches)
-  {
-    for (size_t i = 0; i < children_.size(); i++)
-    {
-      IMouseTracker* tracker = children_[i]->CreateMouseTracker(button, x, y, modifiers, touches);
-      if (tracker != NULL)
-      {
-        return tracker;
-      }
-    }
-
-    return NULL;
-  }
-
-
-  void LayoutWidget::RenderMouseOver(Orthanc::ImageAccessor& target,
-                                     int x,
-                                     int y)
-  {
-    for (size_t i = 0; i < children_.size(); i++)
-    {
-      children_[i]->RenderMouseOver(target, x, y);
-    }
-  }
-
-
-  void LayoutWidget::MouseWheel(OrthancStone::MouseWheelDirection direction,
-                                int x,
-                                int y,
-                                OrthancStone::KeyboardModifiers modifiers)
-  {
-    for (size_t i = 0; i < children_.size(); i++)
-    {
-      children_[i]->MouseWheel(direction, x, y, modifiers);
-    }
-  }
-
-
-  void LayoutWidget::KeyPressed(OrthancStone::KeyboardKeys key,
-                                char keyChar,
-                                OrthancStone::KeyboardModifiers modifiers)
-  {
-    for (size_t i = 0; i < children_.size(); i++)
-    {
-      children_[i]->GetWidget().KeyPressed(key, keyChar, modifiers);
-    }
-  }
-
-  
-  void LayoutWidget::DoAnimation()
-  {
-    if (hasAnimation_)
-    {
-      for (size_t i = 0; i < children_.size(); i++)
-      {
-        children_[i]->DoAnimation();
-      }
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-  bool LayoutWidget::HasRenderMouseOver()
-  {
-    for (size_t i = 0; i < children_.size(); i++)
-    {
-      if (children_[i]->HasRenderMouseOver())
-      {
-        return true;
-      }
-    }
-
-    return false;
-  }
-}
--- a/Framework/Deprecated/Widgets/LayoutWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WidgetBase.h"
-
-#include <vector>
-#include <memory>
-
-namespace Deprecated
-{
-  class LayoutWidget : public WidgetBase
-  {
-  private:
-    class LayoutMouseTracker;
-    class ChildWidget;
-
-    std::vector<ChildWidget*>     children_;
-    bool                          isHorizontal_;
-    unsigned int                  width_;
-    unsigned int                  height_;
-    std::unique_ptr<IMouseTracker>  mouseTracker_;
-    unsigned int                  paddingLeft_;
-    unsigned int                  paddingTop_;
-    unsigned int                  paddingRight_;
-    unsigned int                  paddingBottom_;
-    unsigned int                  paddingInternal_;
-    bool                          hasAnimation_;
-
-    void ComputeChildrenExtents();
-
-  public:
-    LayoutWidget(const std::string& name);
-
-    virtual ~LayoutWidget();
-
-    virtual void FitContent();
-
-    virtual void NotifyContentChanged(const IWidget& widget);
-
-    void SetHorizontal();
-
-    void SetVertical();
-
-    void SetPadding(unsigned int left,
-                    unsigned int top,
-                    unsigned int right,
-                    unsigned int bottom,
-                    unsigned int spacing);
-    
-    void SetPadding(unsigned int padding);
-
-    unsigned int GetPaddingLeft() const
-    {
-      return paddingLeft_;
-    }
-
-    unsigned int GetPaddingTop() const
-    {
-      return paddingTop_;
-    }
-
-    unsigned int GetPaddingRight() const
-    {
-      return paddingRight_;
-    }
-
-    unsigned int GetPaddingBottom() const
-    {
-      return paddingBottom_;
-    }
-
-    unsigned int GetPaddingInternal() const
-    {
-      return paddingInternal_;
-    }
-
-    void AddWidget(boost::shared_ptr<IWidget> widget);
-
-    virtual void SetStatusBar(IStatusBar& statusBar);
-
-    virtual void SetSize(unsigned int width,
-                         unsigned int height);
-
-    virtual bool Render(Orthanc::ImageAccessor& surface);
-    
-    virtual IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
-                                              int x,
-                                              int y,
-                                              OrthancStone::KeyboardModifiers modifiers,
-                                              const std::vector<Touch>& touches);
-
-    virtual void RenderMouseOver(Orthanc::ImageAccessor& target,
-                                 int x,
-                                 int y);
-
-    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
-                            int x,
-                            int y,
-                            OrthancStone::KeyboardModifiers modifiers);
-
-    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
-                            char keyChar,
-                            OrthancStone::KeyboardModifiers modifiers);
-
-    virtual bool HasAnimation() const
-    {
-      return hasAnimation_;
-    }
-
-    virtual void DoAnimation();
-
-    virtual bool HasRenderMouseOver();
-  };
-}
--- a/Framework/Deprecated/Widgets/PanMouseTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "PanMouseTracker.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  PanMouseTracker::PanMouseTracker(WorldSceneWidget& that,
-                                   int x,
-                                   int y) :
-    that_(that)
-  {
-    that.GetView().GetPan(originalPanX_, originalPanY_);
-    that.GetView().MapPixelCenterToScene(downX_, downY_, x, y);
-  }
-    
-
-  void PanMouseTracker::Render(OrthancStone::CairoContext& context,
-                               double zoom)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-
-
-  void PanMouseTracker::MouseMove(int displayX,
-                                  int displayY,
-                                  double x,
-                                  double y,
-                                  const std::vector<Touch>& displayTouches,
-                                  const std::vector<Touch>& sceneTouches)
-  {
-    ViewportGeometry view = that_.GetView();
-    view.SetPan(originalPanX_ + (x - downX_) * view.GetZoom(),
-                originalPanY_ + (y - downY_) * view.GetZoom());
-    that_.SetView(view);
-  }
-}
--- a/Framework/Deprecated/Widgets/PanMouseTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WorldSceneWidget.h"
-
-namespace Deprecated
-{
-  class PanMouseTracker : public IWorldSceneMouseTracker
-  {
-  private:
-    WorldSceneWidget&  that_;
-    double             originalPanX_;
-    double             originalPanY_;
-    double             downX_;
-    double             downY_;
-    
-  public:
-    PanMouseTracker(WorldSceneWidget& that,
-                    int x,
-                    int y);
-    
-    virtual bool HasRender() const
-    {
-      return false;
-    }
-
-    virtual void MouseUp()
-    {
-    }
-
-    virtual void Render(OrthancStone::CairoContext& context,
-                        double zoom);
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double x,
-                           double y,
-                           const std::vector<Touch>& displayTouches,
-                           const std::vector<Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/Widgets/PanZoomMouseTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "PanZoomMouseTracker.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-#include <math.h>
-
-namespace Deprecated
-{
-  Touch GetCenter(const std::vector<Touch>& touches)
-  {
-    return Touch((touches[0].x + touches[1].x) / 2.0f, (touches[0].y + touches[1].y) / 2.0f);
-  }
-
-  double GetDistance(const std::vector<Touch>& touches)
-  {
-    float dx = touches[0].x - touches[1].x;
-    float dy = touches[0].y - touches[1].y;
-    return sqrt((double)(dx * dx) + (double)(dy * dy));
-  }
-
-
-  PanZoomMouseTracker::PanZoomMouseTracker(WorldSceneWidget& that,
-                                           const std::vector<Touch>& startTouches)
-    : that_(that),
-      originalZoom_(that.GetView().GetZoom())
-  {
-    that.GetView().GetPan(originalPanX_, originalPanY_);
-    that.GetView().MapPixelCenterToScene(originalSceneTouches_, startTouches);
-
-    originalDisplayCenter_ = GetCenter(startTouches);
-    originalSceneCenter_ = GetCenter(originalSceneTouches_);
-    originalDisplayDistanceBetweenTouches_ = GetDistance(startTouches);
-
-//    printf("original Pan %f %f\n", originalPanX_, originalPanY_);
-//    printf("original Zoom %f \n", originalZoom_);
-//    printf("original distance %f \n", (float)originalDisplayDistanceBetweenTouches_);
-//    printf("original display touches 0 %f %f\n", startTouches[0].x, startTouches[0].y);
-//    printf("original display touches 1 %f %f\n", startTouches[1].x, startTouches[1].y);
-//    printf("original Scene center %f %f\n", originalSceneCenter_.x, originalSceneCenter_.y);
-
-    unsigned int height = that.GetView().GetDisplayHeight();
-
-    if (height <= 3)
-    {
-      idle_ = true;
-      LOG(WARNING) << "image is too small to zoom (current height = " << height << ")";
-    }
-    else
-    {
-      idle_ = false;
-      normalization_ = 1.0 / static_cast<double>(height - 1);
-    }
-
-  }
-
-
-  void PanZoomMouseTracker::Render(OrthancStone::CairoContext& context,
-                                   double zoom)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-
-
-  void PanZoomMouseTracker::MouseMove(int displayX,
-                                      int displayY,
-                                      double x,
-                                      double y,
-                                      const std::vector<Touch>& displayTouches,
-                                      const std::vector<Touch>& sceneTouches)
-  {
-    ViewportGeometry view = that_.GetView();
-
-//    printf("Display touches 0 %f %f\n", displayTouches[0].x, displayTouches[0].y);
-//    printf("Display touches 1 %f %f\n", displayTouches[1].x, displayTouches[1].y);
-//    printf("Scene touches 0 %f %f\n", sceneTouches[0].x, sceneTouches[0].y);
-//    printf("Scene touches 1 %f %f\n", sceneTouches[1].x, sceneTouches[1].y);
-
-//    printf("zoom = %f\n", view.GetZoom());
-    Touch currentSceneCenter = GetCenter(sceneTouches);
-    double panX = originalPanX_ + (currentSceneCenter.x - originalSceneCenter_.x) * view.GetZoom();
-    double panY = originalPanY_ + (currentSceneCenter.y - originalSceneCenter_.y) * view.GetZoom();
-
-    view.SetPan(panX, panY);
-
-    static const double MIN_ZOOM = -4;
-    static const double MAX_ZOOM = 4;
-
-    if (!idle_)
-    {
-      double currentDistanceBetweenTouches = GetDistance(displayTouches);
-
-      double dy = static_cast<double>(currentDistanceBetweenTouches - originalDisplayDistanceBetweenTouches_) * normalization_;  // In the range [-1,1]
-      double z;
-
-      // Linear interpolation from [-1, 1] to [MIN_ZOOM, MAX_ZOOM]
-      if (dy < -1.0)
-      {
-        z = MIN_ZOOM;
-      }
-      else if (dy > 1.0)
-      {
-        z = MAX_ZOOM;
-      }
-      else
-      {
-        z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0;
-      }
-
-      z = pow(2.0, z);
-
-      view.SetZoom(z * originalZoom_);
-    }
-
-    that_.SetView(view);
-  }
-}
--- a/Framework/Deprecated/Widgets/PanZoomMouseTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WorldSceneWidget.h"
-
-namespace Deprecated
-{
-  class PanZoomMouseTracker : public IWorldSceneMouseTracker
-  {
-  private:
-    WorldSceneWidget&  that_;
-    std::vector<Touch> originalSceneTouches_;
-    Touch              originalSceneCenter_;
-    Touch              originalDisplayCenter_;
-    double             originalPanX_;
-    double             originalPanY_;
-    double             originalZoom_;
-    double             originalDisplayDistanceBetweenTouches_;
-    bool               idle_;
-    double             normalization_;
-
-  public:
-    PanZoomMouseTracker(WorldSceneWidget& that,
-                        const std::vector<Touch>& startTouches);
-    
-    virtual bool HasRender() const
-    {
-      return false;
-    }
-
-    virtual void MouseUp()
-    {
-    }
-
-    virtual void Render(OrthancStone::CairoContext& context,
-                        double zoom);
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double x,
-                           double y,
-                           const std::vector<Touch>& displayTouches,
-                           const std::vector<Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/Widgets/SliceViewerWidget.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,616 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SliceViewerWidget.h"
-
-#include "../Layers/SliceOutlineRenderer.h"
-#include "../../Toolbox/GeometryToolbox.h"
-#include "../Layers/FrameRenderer.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-#include <boost/math/constants/constants.hpp>
-
-
-static const double THIN_SLICE_THICKNESS = 100.0 * std::numeric_limits<double>::epsilon();
-
-namespace Deprecated
-{
-  void SliceViewerWidget::Scene::DeleteLayer(size_t index)
-  {
-    if (index >= renderers_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    assert(countMissing_ <= renderers_.size());
-
-    if (renderers_[index] != NULL)
-    {
-      assert(countMissing_ < renderers_.size());
-      delete renderers_[index];
-      renderers_[index] = NULL;
-      countMissing_++;
-    }
-  }
-
-  
-  SliceViewerWidget::Scene::Scene(const OrthancStone::CoordinateSystem3D& plane,
-                                  double thickness,
-                                  size_t countLayers) :
-    plane_(plane),
-    thickness_(thickness),
-    countMissing_(countLayers),
-    renderers_(countLayers, NULL)
-  {
-    if (thickness <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-  
-  SliceViewerWidget::Scene::~Scene()
-  {
-    for (size_t i = 0; i < renderers_.size(); i++)
-    {
-      DeleteLayer(i);
-    }
-  }
-
-  void SliceViewerWidget::Scene::SetLayer(size_t index,
-                                          ILayerRenderer* renderer)  // Takes ownership
-  {
-    if (renderer == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    DeleteLayer(index);
-
-    renderers_[index] = renderer;
-    countMissing_--;
-  }
-
-
-  bool SliceViewerWidget::Scene::RenderScene(OrthancStone::CairoContext& context,
-                                             const ViewportGeometry& view,
-                                             const OrthancStone::CoordinateSystem3D& viewportPlane)
-  {
-    bool fullQuality = true;
-    cairo_t *cr = context.GetObject();
-
-    for (size_t i = 0; i < renderers_.size(); i++)
-    {
-      if (renderers_[i] != NULL)
-      {
-        const OrthancStone::CoordinateSystem3D& framePlane = renderers_[i]->GetLayerPlane();
-          
-        double x0, y0, x1, y1, x2, y2;
-        viewportPlane.ProjectPoint(x0, y0, framePlane.GetOrigin());
-        viewportPlane.ProjectPoint(x1, y1, framePlane.GetOrigin() + framePlane.GetAxisX());
-        viewportPlane.ProjectPoint(x2, y2, framePlane.GetOrigin() + framePlane.GetAxisY());
-
-        /**
-         * Now we solve the system of linear equations Ax + b = x', given:
-         *   A [0 ; 0] + b = [x0 ; y0]
-         *   A [1 ; 0] + b = [x1 ; y1]
-         *   A [0 ; 1] + b = [x2 ; y2]
-         * <=>
-         *   b = [x0 ; y0]
-         *   A [1 ; 0] = [x1 ; y1] - b = [x1 - x0 ; y1 - y0]
-         *   A [0 ; 1] = [x2 ; y2] - b = [x2 - x0 ; y2 - y0]
-         * <=>
-         *   b = [x0 ; y0]
-         *   [a11 ; a21] = [x1 - x0 ; y1 - y0]
-         *   [a12 ; a22] = [x2 - x0 ; y2 - y0]
-         **/
-
-        cairo_matrix_t transform;
-        cairo_matrix_init(&transform, x1 - x0, y1 - y0, x2 - x0, y2 - y0, x0, y0);
-
-        cairo_save(cr);
-        cairo_transform(cr, &transform);
-          
-        if (!renderers_[i]->RenderLayer(context, view))
-        {
-          cairo_restore(cr);
-          return false;
-        }
-
-        cairo_restore(cr);
-      }
-
-      if (renderers_[i] != NULL &&
-          !renderers_[i]->IsFullQuality())
-      {
-        fullQuality = false;
-      }
-    }
-
-    if (!fullQuality)
-    {
-      double x, y;
-      view.MapDisplayToScene(x, y, static_cast<double>(view.GetDisplayWidth()) / 2.0, 10);
-
-      cairo_translate(cr, x, y);
-
-#if 1
-      double s = 5.0 / view.GetZoom();
-      cairo_rectangle(cr, -s, -s, 2.0 * s, 2.0 * s);
-#else
-      // TODO Drawing filled circles makes WebAssembly crash!
-      cairo_arc(cr, 0, 0, 5.0 / view.GetZoom(), 0, 2.0 * boost::math::constants::pi<double>());
-#endif
-        
-      cairo_set_line_width(cr, 2.0 / view.GetZoom());
-      cairo_set_source_rgb(cr, 1, 1, 1);
-      cairo_stroke_preserve(cr);
-      cairo_set_source_rgb(cr, 1, 0, 0);
-      cairo_fill(cr);
-    }
-
-    return true;
-  }
-
-  void SliceViewerWidget::Scene::SetLayerStyle(size_t index,
-                                               const RenderStyle& style)
-  {
-    if (renderers_[index] != NULL)
-    {
-      renderers_[index]->SetLayerStyle(style);
-    }
-  }
-
-  bool SliceViewerWidget::Scene::ContainsPlane(const OrthancStone::CoordinateSystem3D& plane) const
-  {
-    bool isOpposite;
-    if (!OrthancStone::GeometryToolbox::IsParallelOrOpposite(isOpposite,
-                                                             plane.GetNormal(),
-                                                             plane_.GetNormal()))
-    {
-      return false;
-    }
-    else
-    {
-      double z = (plane_.ProjectAlongNormal(plane.GetOrigin()) -
-                  plane_.ProjectAlongNormal(plane_.GetOrigin()));
-
-      if (z < 0)
-      {
-        z = -z;
-      }
-
-      return z <= thickness_;
-    }
-  }
-
-  
-  bool SliceViewerWidget::LookupLayer(size_t& index /* out */,
-                                      const IVolumeSlicer& layer) const
-  {
-    LayersIndex::const_iterator found = layersIndex_.find(&layer);
-
-    if (found == layersIndex_.end())
-    {
-      return false;
-    }
-    else
-    {
-      index = found->second;
-      assert(index < layers_.size() &&
-             layers_[index].get() == &layer);
-      return true;
-    }
-  }
-
-
-  void SliceViewerWidget::GetLayerExtent(OrthancStone::Extent2D& extent,
-                                         IVolumeSlicer& source) const
-  {
-    extent.Reset();
-
-    std::vector<OrthancStone::Vector> points;
-    if (source.GetExtent(points, plane_))
-    {
-      for (size_t i = 0; i < points.size(); i++)
-      {
-        double x, y;
-        plane_.ProjectPoint(x, y, points[i]);
-        extent.AddPoint(x, y);
-      }
-    }
-  }
-
-
-  OrthancStone::Extent2D SliceViewerWidget::GetSceneExtent()
-  {
-    OrthancStone::Extent2D sceneExtent;
-
-    for (size_t i = 0; i < layers_.size(); i++)
-    {
-      assert(layers_[i] != NULL);
-      OrthancStone::Extent2D layerExtent;
-      GetLayerExtent(layerExtent, *layers_[i]);
-
-      sceneExtent.Union(layerExtent);
-    }
-
-    return sceneExtent;
-  }
-
-  
-  bool SliceViewerWidget::RenderScene(OrthancStone::CairoContext& context,
-                                      const ViewportGeometry& view)
-  {
-    if (currentScene_.get() != NULL)
-    {
-      return currentScene_->RenderScene(context, view, plane_);
-    }
-    else
-    {
-      return true;
-    }
-  }
-
-  
-  void SliceViewerWidget::ResetPendingScene()
-  {
-    double thickness;
-    if (pendingScene_.get() == NULL)
-    {
-      thickness = 1.0;
-    }
-    else
-    {
-      thickness = pendingScene_->GetThickness();
-    }
-    
-    pendingScene_.reset(new Scene(plane_, thickness, layers_.size()));
-  }
-  
-
-  void SliceViewerWidget::UpdateLayer(size_t index,
-                                      ILayerRenderer* renderer,
-                                      const OrthancStone::CoordinateSystem3D& plane)
-  {
-    LOG(INFO) << "Updating layer " << index;
-    
-    std::unique_ptr<ILayerRenderer> tmp(renderer);
-
-    if (renderer == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    if (index >= layers_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    assert(layers_.size() == styles_.size());
-    renderer->SetLayerStyle(styles_[index]);
-
-    if (currentScene_.get() != NULL &&
-        currentScene_->ContainsPlane(plane))
-    {
-      currentScene_->SetLayer(index, tmp.release());
-      NotifyContentChanged();
-    }
-    else if (pendingScene_.get() != NULL &&
-             pendingScene_->ContainsPlane(plane))
-    {
-      pendingScene_->SetLayer(index, tmp.release());
-
-      if (currentScene_.get() == NULL ||
-          !currentScene_->IsComplete() ||
-          pendingScene_->IsComplete())
-      {
-#if __cplusplus < 201103L
-        currentScene_.reset(pendingScene_.release());
-#else
-        currentScene_ = std::move(pendingScene_);
-#endif
-
-        NotifyContentChanged();
-      }
-    }
-  }
-
-  
-  SliceViewerWidget::SliceViewerWidget(const std::string& name) :
-    WorldSceneWidget(name),
-    started_(false)
-  {
-    SetBackgroundCleared(true);
-  }
-  
-  
-  void SliceViewerWidget::ObserveLayer(IVolumeSlicer& layer)
-  {
-    // currently ignoring errors of type IVolumeSlicer::GeometryErrorMessage
-
-    Register<IVolumeSlicer::GeometryReadyMessage>(layer, &SliceViewerWidget::OnGeometryReady);
-    Register<IVolumeSlicer::SliceContentChangedMessage>(layer, &SliceViewerWidget::OnSliceChanged);
-    Register<IVolumeSlicer::ContentChangedMessage>(layer, &SliceViewerWidget::OnContentChanged);
-    Register<IVolumeSlicer::LayerReadyMessage>(layer, &SliceViewerWidget::OnLayerReady);
-    Register<IVolumeSlicer::LayerErrorMessage>(layer, &SliceViewerWidget::OnLayerError);
-  }
-
-
-  size_t SliceViewerWidget::AddLayer(boost::shared_ptr<IVolumeSlicer> layer)
-  {
-    if (layer == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    size_t index = layers_.size();
-    layers_.push_back(layer);
-    styles_.push_back(RenderStyle());
-    layersIndex_[layer.get()] = index;
-
-    ResetPendingScene();
-
-    ObserveLayer(*layer);
-
-    ResetChangedLayers();
-
-    return index;
-  }
-
-
-  void SliceViewerWidget::ReplaceLayer(size_t index,
-                                       boost::shared_ptr<IVolumeSlicer> layer)
-  {
-    if (layer == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    if (index >= layers_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    layers_[index] = layer;
-    layersIndex_[layer.get()] = index;
-
-    ResetPendingScene();
-
-    ObserveLayer(*layer);
-
-    InvalidateLayer(index);
-  }
-
-
-  void SliceViewerWidget::RemoveLayer(size_t index)
-  {
-    if (index >= layers_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    IVolumeSlicer* previousLayer = layers_[index].get();
-    layersIndex_.erase(layersIndex_.find(previousLayer));
-    layers_.erase(layers_.begin() + index);
-    changedLayers_.erase(changedLayers_.begin() + index);
-    styles_.erase(styles_.begin() + index);
-
-    layers_[index].reset();
-
-    currentScene_->DeleteLayer(index);
-    ResetPendingScene();
-
-    NotifyContentChanged();
-  }
-
-
-  const RenderStyle& SliceViewerWidget::GetLayerStyle(size_t layer) const
-  {
-    if (layer >= layers_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    assert(layers_.size() == styles_.size());
-    return styles_[layer];
-  }
-  
-
-  void SliceViewerWidget::SetLayerStyle(size_t layer,
-                                        const RenderStyle& style)
-  {
-    if (layer >= layers_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    assert(layers_.size() == styles_.size());
-    styles_[layer] = style;
-
-    if (currentScene_.get() != NULL)
-    {
-      currentScene_->SetLayerStyle(layer, style);
-    }
-
-    if (pendingScene_.get() != NULL)
-    {
-      pendingScene_->SetLayerStyle(layer, style);
-    }
-
-    NotifyContentChanged();
-  }
-  
-
-  void SliceViewerWidget::SetSlice(const OrthancStone::CoordinateSystem3D& plane)
-  {
-    LOG(INFO) << "Setting slice origin: (" << plane.GetOrigin()[0]
-              << "," << plane.GetOrigin()[1]
-              << "," << plane.GetOrigin()[2] << ")";
-    
-    Deprecated::Slice displayedSlice(plane_, THIN_SLICE_THICKNESS);
-
-    //if (!displayedSlice.ContainsPlane(slice))
-    {
-      if (currentScene_.get() == NULL ||
-          (pendingScene_.get() != NULL &&
-           pendingScene_->IsComplete()))
-      {
-#if __cplusplus < 201103L
-        currentScene_.reset(pendingScene_.release());
-#else
-        currentScene_ = std::move(pendingScene_);
-#endif
-      }
-
-      plane_ = plane;
-      ResetPendingScene();
-
-      InvalidateAllLayers();   // TODO Removing this line avoid loading twice the image in WASM
-    }
-
-    BroadcastMessage(DisplayedSliceMessage(*this, displayedSlice));
-  }
-
-
-  void SliceViewerWidget::OnGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message)
-  {
-    size_t i;
-    if (LookupLayer(i, message.GetOrigin()))
-    {
-      LOG(INFO) << ": Geometry ready for layer " << i << " in " << GetName();
-
-      changedLayers_[i] = true;
-      //layers_[i]->ScheduleLayerCreation(plane_);
-    }
-    BroadcastMessage(GeometryChangedMessage(*this));
-  }
-  
-
-  void SliceViewerWidget::InvalidateAllLayers()
-  {
-    for (size_t i = 0; i < layers_.size(); i++)
-    {
-      assert(layers_[i] != NULL);
-      changedLayers_[i] = true;
-      
-      //layers_[i]->ScheduleLayerCreation(plane_);
-    }
-  }
-
-
-  void SliceViewerWidget::InvalidateLayer(size_t layer)
-  {
-    if (layer >= layers_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    assert(layers_[layer] != NULL);
-    changedLayers_[layer] = true;
-
-    //layers_[layer]->ScheduleLayerCreation(plane_);
-  }
-
-
-  void SliceViewerWidget::OnContentChanged(const IVolumeSlicer::ContentChangedMessage& message)
-  {
-    size_t index;
-    if (LookupLayer(index, message.GetOrigin()))
-    {
-      InvalidateLayer(index);
-    }
-    
-    BroadcastMessage(SliceViewerWidget::ContentChangedMessage(*this));
-  }
-  
-
-  void SliceViewerWidget::OnSliceChanged(const IVolumeSlicer::SliceContentChangedMessage& message)
-  {
-    if (message.GetSlice().ContainsPlane(plane_))
-    {
-      size_t index;
-      if (LookupLayer(index, message.GetOrigin()))
-      {
-        InvalidateLayer(index);
-      }
-    }
-    
-    BroadcastMessage(SliceViewerWidget::ContentChangedMessage(*this));
-  }
-  
-  
-  void SliceViewerWidget::OnLayerReady(const IVolumeSlicer::LayerReadyMessage& message)
-  {
-    size_t index;
-    if (LookupLayer(index, message.GetOrigin()))
-    {
-      LOG(INFO) << "Renderer ready for layer " << index;
-      UpdateLayer(index, message.CreateRenderer(), message.GetSlice());
-    }
-    
-    BroadcastMessage(SliceViewerWidget::ContentChangedMessage(*this));
-  }
-
-
-  void SliceViewerWidget::OnLayerError(const IVolumeSlicer::LayerErrorMessage& message)
-  {
-    size_t index;
-    if (LookupLayer(index, message.GetOrigin()))
-    {
-      LOG(ERROR) << "Using error renderer on layer " << index;
-
-      // TODO
-      //UpdateLayer(index, new SliceOutlineRenderer(slice), slice);
-
-      BroadcastMessage(SliceViewerWidget::ContentChangedMessage(*this));
-    }
-  }
-
-
-  void SliceViewerWidget::ResetChangedLayers()
-  {
-    changedLayers_.resize(layers_.size());
-
-    for (size_t i = 0; i < changedLayers_.size(); i++)
-    {
-      changedLayers_[i] = false;
-    }
-  }
-
-
-  void SliceViewerWidget::DoAnimation()
-  {
-    assert(changedLayers_.size() <= layers_.size());
-    
-    for (size_t i = 0; i < changedLayers_.size(); i++)
-    {
-      if (changedLayers_[i])
-      {
-        layers_[i]->ScheduleLayerCreation(plane_);
-      }
-    }
-    
-    ResetChangedLayers();
-  }
-}
--- a/Framework/Deprecated/Widgets/SliceViewerWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WorldSceneWidget.h"
-#include "../Layers/IVolumeSlicer.h"
-#include "../../Toolbox/Extent2D.h"
-#include "../../Messages/ObserverBase.h"
-
-#include <map>
-
-namespace Deprecated
-{
-  class SliceViewerWidget :
-    public WorldSceneWidget,
-    public OrthancStone::ObserverBase<SliceViewerWidget>,
-    public OrthancStone::IObservable
-  {
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryChangedMessage, SliceViewerWidget);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ContentChangedMessage, SliceViewerWidget);
-
-
-    // TODO - Use this message in ReferenceLineSource
-    class DisplayedSliceMessage : public OrthancStone::OriginMessage<SliceViewerWidget>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const Deprecated::Slice& slice_;
-
-    public:
-      DisplayedSliceMessage(SliceViewerWidget& origin,
-                            const Deprecated::Slice& slice) :
-        OriginMessage(origin),
-        slice_(slice)
-      {
-      }
-
-      const Deprecated::Slice& GetSlice() const
-      {
-        return slice_;
-      }
-    };
-
-  private:
-    SliceViewerWidget(const SliceViewerWidget&);
-    SliceViewerWidget& operator=(const SliceViewerWidget&);
-
-    class Scene : public boost::noncopyable
-    {
-    private:
-      OrthancStone::CoordinateSystem3D  plane_;
-      double                            thickness_;
-      size_t                            countMissing_;
-      std::vector<ILayerRenderer*>      renderers_;
-
-    public:
-      void DeleteLayer(size_t index);
-
-      Scene(const OrthancStone::CoordinateSystem3D& plane,
-            double thickness,
-            size_t countLayers);
-
-      ~Scene();
-
-      void SetLayer(size_t index,
-                    ILayerRenderer* renderer);  // Takes ownership
-
-      const OrthancStone::CoordinateSystem3D& GetPlane() const
-      {
-        return plane_;
-      }
-
-      bool HasRenderer(size_t index)
-      {
-        return renderers_[index] != NULL;
-      }
-
-      bool IsComplete() const
-      {
-        return countMissing_ == 0;
-      }
-
-      unsigned int GetCountMissing() const
-      {
-        return static_cast<unsigned int>(countMissing_);
-      }
-
-      bool RenderScene(OrthancStone::CairoContext& context,
-                       const ViewportGeometry& view,
-                       const OrthancStone::CoordinateSystem3D& viewportPlane);
-
-      void SetLayerStyle(size_t index,
-                         const RenderStyle& style);
-
-      bool ContainsPlane(const OrthancStone::CoordinateSystem3D& plane) const;
-
-      double GetThickness() const
-      {
-        return thickness_;
-      }
-    };
-
-    
-    typedef std::map<const IVolumeSlicer*, size_t>  LayersIndex;
-
-    bool                         started_;
-    LayersIndex                  layersIndex_;
-    std::vector<boost::shared_ptr<IVolumeSlicer> >  layers_;
-    std::vector<RenderStyle>     styles_;
-    OrthancStone::CoordinateSystem3D           plane_;
-    std::unique_ptr<Scene>         currentScene_;
-    std::unique_ptr<Scene>         pendingScene_;
-    std::vector<bool>            changedLayers_;
-
-    bool LookupLayer(size_t& index /* out */,
-                     const IVolumeSlicer& layer) const;
-
-    void GetLayerExtent(OrthancStone::Extent2D& extent,
-                        IVolumeSlicer& source) const;
-
-    void OnGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message);
-
-    virtual void OnContentChanged(const IVolumeSlicer::ContentChangedMessage& message);
-
-    virtual void OnSliceChanged(const IVolumeSlicer::SliceContentChangedMessage& message);
-
-    virtual void OnLayerReady(const IVolumeSlicer::LayerReadyMessage& message);
-
-    virtual void OnLayerError(const IVolumeSlicer::LayerErrorMessage& message);
-
-    void ObserveLayer(IVolumeSlicer& source);
-
-    void ResetChangedLayers();
-
-  public:
-    SliceViewerWidget(const std::string& name);
-
-    virtual OrthancStone::Extent2D GetSceneExtent();
-
-  protected:
-    virtual bool RenderScene(OrthancStone::CairoContext& context,
-                             const ViewportGeometry& view);
-
-    void ResetPendingScene();
-
-    void UpdateLayer(size_t index,
-                     ILayerRenderer* renderer,
-                     const OrthancStone::CoordinateSystem3D& plane);
-
-    void InvalidateAllLayers();
-
-    void InvalidateLayer(size_t layer);
-    
-  public:
-    virtual ~SliceViewerWidget()
-    {
-    }
-
-    size_t AddLayer(boost::shared_ptr<IVolumeSlicer> layer);
-
-    void ReplaceLayer(size_t layerIndex, boost::shared_ptr<IVolumeSlicer> layer); // Takes ownership
-
-    void RemoveLayer(size_t layerIndex);
-
-    size_t GetLayerCount() const
-    {
-      return layers_.size();
-    }
-
-    const RenderStyle& GetLayerStyle(size_t layer) const;
-
-    void SetLayerStyle(size_t layer,
-                       const RenderStyle& style);
-
-    void SetSlice(const OrthancStone::CoordinateSystem3D& plane);
-
-    const OrthancStone::CoordinateSystem3D& GetSlice() const
-    {
-      return plane_;
-    }
-
-    virtual bool HasAnimation() const
-    {
-      return true;
-    }
-
-    virtual void DoAnimation();
-  };
-}
--- a/Framework/Deprecated/Widgets/TestCairoWidget.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "TestCairoWidget.h"
-
-#include <stdio.h>
-
-
-namespace Deprecated
-{
-  namespace Samples
-  {
-    void TestCairoWidget::DoAnimation() 
-    {
-      value_ -= 0.01f;
-      if (value_ < 0)
-      {
-        value_ = 1;
-      }
-
-      NotifyContentChanged();
-    }
-
-
-    bool TestCairoWidget::RenderCairo(OrthancStone::CairoContext& context)
-    {
-      cairo_t* cr = context.GetObject();
-
-      cairo_set_source_rgb (cr, .3, 0, 0);
-      cairo_paint(cr);
-
-      cairo_set_source_rgb(cr, 0, 1, 0);
-      cairo_rectangle(cr, width_ / 4, height_ / 4, width_ / 2, height_ / 2);
-      cairo_set_line_width(cr, 1.0);
-      cairo_fill(cr);
-
-      cairo_set_source_rgb(cr, 0, 1, value_);
-      cairo_rectangle(cr, width_ / 2 - 50, height_ / 2 - 50, 100, 100);
-      cairo_fill(cr);
-
-      return true;
-    }
-
-
-    void TestCairoWidget::RenderMouseOverCairo(OrthancStone::CairoContext& context,
-                                               int x,
-                                               int y)
-    {
-      cairo_t* cr = context.GetObject();
-
-      cairo_set_source_rgb (cr, 1, 0, 0);
-      cairo_rectangle(cr, x - 5, y - 5, 10, 10);
-      cairo_set_line_width(cr, 1.0);
-      cairo_stroke(cr);
-
-      char buf[64];
-      sprintf(buf, "(%d,%d)", x, y);
-      UpdateStatusBar(buf);
-    }
-
-
-    TestCairoWidget::TestCairoWidget(const std::string& name, bool animate) :
-      CairoWidget(name),
-      width_(0),
-      height_(0),
-      value_(1),
-      animate_(animate)
-    {
-    }
-
-
-    void TestCairoWidget::SetSize(unsigned int width, 
-                                  unsigned int height)
-    {
-      CairoWidget::SetSize(width, height);
-      width_ = width;
-      height_ = height;
-    }
- 
-
-    IMouseTracker* TestCairoWidget::CreateMouseTracker(OrthancStone::MouseButton button,
-                                                       int x,
-                                                       int y,
-                                                       OrthancStone::KeyboardModifiers modifiers,
-                                                       const std::vector<Touch>& touches)
-    {
-      UpdateStatusBar("Click");
-      return NULL;
-    }
-
-
-    void TestCairoWidget::MouseWheel(OrthancStone::MouseWheelDirection direction,
-                                     int x,
-                                     int y,
-                                     OrthancStone::KeyboardModifiers modifiers) 
-    {
-      UpdateStatusBar(direction == OrthancStone::MouseWheelDirection_Down ? "Wheel down" : "Wheel up");
-    }
-
-    
-    void TestCairoWidget::KeyPressed(OrthancStone::KeyboardKeys key,
-                                     char keyChar,
-                                     OrthancStone::KeyboardModifiers modifiers)
-    {
-      UpdateStatusBar("Key pressed: \"" + std::string(1, keyChar) + "\"");
-    }
-  }
-}
--- a/Framework/Deprecated/Widgets/TestCairoWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "CairoWidget.h"
-
-namespace Deprecated
-{
-  namespace Samples
-  {
-    class TestCairoWidget : public CairoWidget
-    {
-    private:
-      unsigned int  width_;
-      unsigned int  height_;
-      float         value_;
-      bool          animate_;
-
-    protected:
-      virtual bool RenderCairo(OrthancStone::CairoContext& context);
-
-      virtual void RenderMouseOverCairo(OrthancStone::CairoContext& context,
-                                        int x,
-                                        int y);
-
-    public:
-      TestCairoWidget(const std::string& name, bool animate);
-
-      virtual void SetSize(unsigned int width, 
-                           unsigned int height);
- 
-      virtual IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
-                                                int x,
-                                                int y,
-                                                OrthancStone::KeyboardModifiers modifiers,
-                                                const std::vector<Touch>& touches);
-
-      virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
-                              int x,
-                              int y,
-                              OrthancStone::KeyboardModifiers modifiers);
-    
-      virtual void KeyPressed(OrthancStone::KeyboardKeys key,
-                              char keyChar,
-                              OrthancStone::KeyboardModifiers modifiers);
-
-      virtual bool HasAnimation() const
-      {
-        return animate_;
-      }
-      
-      virtual void DoAnimation();
-
-      virtual bool HasRenderMouseOver()
-      {
-        return true;
-      }
-    };
-  }
-}
--- a/Framework/Deprecated/Widgets/TestWorldSceneWidget.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "TestWorldSceneWidget.h"
-
-#include <OrthancException.h>
-
-#include <math.h>
-#include <stdio.h>
-
-namespace Deprecated
-{
-  namespace Samples
-  {
-    class TestWorldSceneWidget::Interactor : public IWorldSceneInteractor
-    {
-    public:
-      virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
-                                                          const ViewportGeometry& view,
-                                                          OrthancStone::MouseButton button,
-                                                          OrthancStone::KeyboardModifiers modifiers,
-                                                          int viewportX,
-                                                          int viewportY,
-                                                          double x,
-                                                          double y,
-                                                          IStatusBar* statusBar,
-                                                          const std::vector<Touch>& touches)
-      {
-        if (statusBar)
-        {
-          char buf[64];
-          sprintf(buf, "X = %0.2f, Y = %0.2f", x, y);
-          statusBar->SetMessage(buf);
-        }
-
-        return NULL;
-      }
-
-      virtual void MouseOver(OrthancStone::CairoContext& context,
-                             WorldSceneWidget& widget,
-                             const ViewportGeometry& view,
-                             double x,
-                             double y,
-                             IStatusBar* statusBar)
-      {
-        double S = 0.5;
-
-        if (fabs(x) <= S &&
-            fabs(y) <= S)
-        {
-          cairo_t* cr = context.GetObject();
-          cairo_set_source_rgb(cr, 1, 0, 0);
-          cairo_rectangle(cr, -S, -S , 2.0 * S, 2.0 * S);
-          cairo_set_line_width(cr, 1.0 / view.GetZoom());
-          cairo_stroke(cr);
-        }
-      }
-
-      virtual void MouseWheel(WorldSceneWidget& widget,
-                              OrthancStone::MouseWheelDirection direction,
-                              OrthancStone::KeyboardModifiers modifiers,
-                              IStatusBar* statusBar)
-      {
-        if (statusBar)
-        {
-          statusBar->SetMessage(direction == OrthancStone::MouseWheelDirection_Down ? "Wheel down" : "Wheel up");
-        }
-      }
-
-      virtual void KeyPressed(WorldSceneWidget& widget,
-                              OrthancStone::KeyboardKeys key,
-                              char keyChar,
-                              OrthancStone::KeyboardModifiers modifiers,
-                              IStatusBar* statusBar)
-      {
-        if (statusBar)
-        {
-          statusBar->SetMessage("Key pressed: \"" + std::string(1, keyChar) + "\"");
-        }
-      }
-    };
-
-
-    bool TestWorldSceneWidget::RenderScene(OrthancStone::CairoContext& context,
-                                           const ViewportGeometry& view)
-    {
-      cairo_t* cr = context.GetObject();
-
-      // Clear background
-      cairo_set_source_rgb(cr, 0, 0, 0);
-      cairo_paint(cr);
-
-      float color = static_cast<float>(count_ % 16) / 15.0f;
-      cairo_set_source_rgb(cr, 0, 1.0f - color, color);
-      cairo_rectangle(cr, -10, -.5, 20, 1);
-      cairo_fill(cr);
-
-      return true;
-    }
-
-
-    TestWorldSceneWidget::TestWorldSceneWidget(const std::string& name, bool animate) :
-      WorldSceneWidget(name),
-      interactor_(new Interactor),
-      animate_(animate),
-      count_(0)
-    {
-      SetInteractor(*interactor_);
-    }
-
-
-    OrthancStone::Extent2D TestWorldSceneWidget::GetSceneExtent()
-    {
-      return OrthancStone::Extent2D(-10, -.5, 10, .5);
-    }
-
-
-    void TestWorldSceneWidget::DoAnimation()
-    {
-      if (animate_)
-      {
-        count_++;
-        NotifyContentChanged();
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-    }
-  }
-}
--- a/Framework/Deprecated/Widgets/TestWorldSceneWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WorldSceneWidget.h"
-
-#include <memory>
-
-namespace Deprecated
-{
-  namespace Samples
-  {
-    class TestWorldSceneWidget : public WorldSceneWidget
-    {
-    private:
-      class Interactor;
-
-      std::unique_ptr<Interactor>   interactor_;
-      bool                        animate_;
-      unsigned int                count_;
-
-    protected:
-      virtual bool RenderScene(OrthancStone::CairoContext& context,
-                               const ViewportGeometry& view);
-
-    public:
-      TestWorldSceneWidget(const std::string& name, bool animate);
-
-      virtual OrthancStone::Extent2D GetSceneExtent();
-
-      virtual bool HasAnimation() const
-      {
-        return animate_;
-      }
-
-      virtual void DoAnimation();
-
-      virtual bool HasRenderMouseOver()
-      {
-        return true;
-      }
-    };
-  }
-}
--- a/Framework/Deprecated/Widgets/WidgetBase.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WidgetBase.h"
-
-#include <OrthancException.h>
-#include <Images/ImageProcessing.h>
-#include <Logging.h>
-
-namespace Deprecated
-{
-  void WidgetBase::NotifyContentChanged()
-  {
-    if (parent_ != NULL)
-    {
-      parent_->NotifyContentChanged();
-    }
-
-    if (viewport_ != NULL)
-    {
-      viewport_->NotifyBackgroundChanged();
-    }
-  }
-
-
-  void WidgetBase::SetParent(IWidget& parent)
-  {
-    if (parent_ != NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      parent_ = &parent;
-    }
-  }    
-
-  
-  void WidgetBase::ClearBackgroundOrthanc(Orthanc::ImageAccessor& target) const 
-  {
-    // Clear the background using Orthanc
-
-    if (backgroundCleared_)
-    {
-      Orthanc::ImageProcessing::Set(target, 
-                                    backgroundColor_[0],
-                                    backgroundColor_[1],
-                                    backgroundColor_[2],
-                                    255 /* alpha */);
-    }
-  }
-
-
-  void WidgetBase::ClearBackgroundCairo(OrthancStone::CairoContext& context) const
-  {
-    // Clear the background using Cairo
-
-    if (IsBackgroundCleared())
-    {
-      uint8_t red, green, blue;
-      GetBackgroundColor(red, green, blue);
-
-      context.SetSourceColor(red, green, blue);
-      cairo_paint(context.GetObject());
-    }
-  }
-
-
-  void WidgetBase::ClearBackgroundCairo(Orthanc::ImageAccessor& target) const
-  {
-    OrthancStone::CairoSurface surface(target, false /* no alpha */);
-    OrthancStone::CairoContext context(surface);
-    ClearBackgroundCairo(context);
-  }
-
-
-  void WidgetBase::UpdateStatusBar(const std::string& message)
-  {
-    if (statusBar_ != NULL)
-    {
-      statusBar_->SetMessage(message);
-    }
-  }
-
-
-  WidgetBase::WidgetBase(const std::string& name) :
-    parent_(NULL),
-    viewport_(NULL),
-    statusBar_(NULL),
-    backgroundCleared_(false),
-    transmitMouseOver_(false),
-    name_(name)
-  {
-    backgroundColor_[0] = 0;
-    backgroundColor_[1] = 0;
-    backgroundColor_[2] = 0;
-  }
-
-
-  void WidgetBase::SetViewport(WidgetViewport& viewport)
-  {
-    if (viewport_ != NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      viewport_ = &viewport;
-    }
-  }
-
-  
-  void WidgetBase::SetBackgroundColor(uint8_t red,
-                                      uint8_t green,
-                                      uint8_t blue)
-  {
-    backgroundColor_[0] = red;
-    backgroundColor_[1] = green;
-    backgroundColor_[2] = blue;
-  }
-
-  void WidgetBase::GetBackgroundColor(uint8_t& red,
-                                      uint8_t& green,
-                                      uint8_t& blue) const
-  {
-    red = backgroundColor_[0];
-    green = backgroundColor_[1];
-    blue = backgroundColor_[2];
-  }
-
-
-  bool WidgetBase::Render(Orthanc::ImageAccessor& surface)
-  {
-#if 0
-    ClearBackgroundOrthanc(surface);
-#else
-    ClearBackgroundCairo(surface);  // Faster than Orthanc
-#endif
-
-    return true;
-  }
-
-  
-  void WidgetBase::DoAnimation()
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-}
--- a/Framework/Deprecated/Widgets/WidgetBase.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IWidget.h"
-
-#include "../../Wrappers/CairoContext.h"
-#include "../Viewport/WidgetViewport.h"
-
-namespace Deprecated
-{
-  class WidgetBase : public IWidget
-  {
-  private:
-    IWidget*         parent_;
-    WidgetViewport*  viewport_;
-    IStatusBar*      statusBar_;
-    bool             backgroundCleared_;
-    uint8_t          backgroundColor_[3];
-    bool             transmitMouseOver_;
-    std::string      name_;
-
-  protected:
-    void ClearBackgroundOrthanc(Orthanc::ImageAccessor& target) const;
-
-    void ClearBackgroundCairo(OrthancStone::CairoContext& context) const;
-
-    void ClearBackgroundCairo(Orthanc::ImageAccessor& target) const;
-
-    void UpdateStatusBar(const std::string& message);
-
-    IStatusBar* GetStatusBar() const
-    {
-      return statusBar_;
-    }
-
-  public:
-    WidgetBase(const std::string& name);
-
-    virtual void FitContent()
-    {
-    }
-  
-    virtual void SetParent(IWidget& parent);
-    
-    virtual void SetViewport(WidgetViewport& viewport);
-
-    void SetBackgroundCleared(bool clear)
-    {
-      backgroundCleared_ = clear;
-    }
-
-    bool IsBackgroundCleared() const
-    {
-      return backgroundCleared_;
-    }
-
-    void SetTransmitMouseOver(bool transmit)
-    {
-      transmitMouseOver_ = transmit;
-    }
-
-    void SetBackgroundColor(uint8_t red,
-                            uint8_t green,
-                            uint8_t blue);
-
-    void GetBackgroundColor(uint8_t& red,
-                            uint8_t& green,
-                            uint8_t& blue) const;
-
-    virtual void SetStatusBar(IStatusBar& statusBar)
-    {
-      statusBar_ = &statusBar;
-    }
-
-    virtual bool Render(Orthanc::ImageAccessor& surface);
-
-    virtual bool HasAnimation() const
-    {
-      return false;
-    }
-
-    virtual void DoAnimation();
-
-    virtual bool HasRenderMouseOver()
-    {
-      return transmitMouseOver_;
-    }
-
-    virtual void NotifyContentChanged();
-
-    const std::string& GetName() const
-    {
-      return name_;
-    }
-
-  };
-}
--- a/Framework/Deprecated/Widgets/WorldSceneWidget.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,229 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WorldSceneWidget.h"
-
-#include "PanMouseTracker.h"
-#include "ZoomMouseTracker.h"
-#include "PanZoomMouseTracker.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-#include <math.h>
-#include <memory>
-#include <cassert>
-
-namespace Deprecated
-{
-  // this is an adapter between a IWorldSceneMouseTracker
-  // that is tracking a mouse in scene coordinates/mm and
-  // an IMouseTracker that is tracking a mouse
-  // in screen coordinates/pixels.
-  class WorldSceneWidget::SceneMouseTracker : public IMouseTracker
-  {
-  private:
-    ViewportGeometry                        view_;
-    std::unique_ptr<IWorldSceneMouseTracker>  tracker_;
-
-  public:
-    SceneMouseTracker(const ViewportGeometry& view,
-                      IWorldSceneMouseTracker* tracker) :
-      view_(view),
-      tracker_(tracker)
-    {
-      if (tracker == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    virtual void Render(Orthanc::ImageAccessor& target)
-    {
-      if (tracker_->HasRender())
-      {
-        OrthancStone::CairoSurface surface(target, false /* no alpha */);
-        OrthancStone::CairoContext context(surface);
-        view_.ApplyTransform(context);
-        tracker_->Render(context, view_.GetZoom());
-      }
-    }
-
-    virtual void MouseUp()
-    {
-      tracker_->MouseUp();
-    }
-
-    virtual void MouseMove(int x,
-                           int y,
-                           const std::vector<Touch>& displayTouches)
-    {
-      double sceneX, sceneY;
-      view_.MapPixelCenterToScene(sceneX, sceneY, x, y);
-
-      std::vector<Touch> sceneTouches;
-      for (size_t t = 0; t < displayTouches.size(); t++)
-      {
-        double sx, sy;
-        
-        view_.MapPixelCenterToScene(
-          sx, sy, (int)displayTouches[t].x, (int)displayTouches[t].y);
-        
-        sceneTouches.push_back(
-          Touch(static_cast<float>(sx), static_cast<float>(sy)));
-      }
-      tracker_->MouseMove(x, y, sceneX, sceneY, displayTouches, sceneTouches);
-    }
-  };
-
-
-  bool WorldSceneWidget::RenderCairo(OrthancStone::CairoContext& context)
-  {
-    view_.ApplyTransform(context);
-    return RenderScene(context, view_);
-  }
-
-
-  void WorldSceneWidget::RenderMouseOverCairo(OrthancStone::CairoContext& context,
-                                              int x,
-                                              int y)
-  {
-    ViewportGeometry view = GetView();
-    view.ApplyTransform(context);
-
-    double sceneX, sceneY;
-    view.MapPixelCenterToScene(sceneX, sceneY, x, y);
-
-    if (interactor_)
-    {
-      interactor_->MouseOver(context, *this, view, sceneX, sceneY, GetStatusBar());
-    }
-  }
-
-
-  void WorldSceneWidget::SetSceneExtent(ViewportGeometry& view)
-  {
-    view.SetSceneExtent(GetSceneExtent());
-  }
-
-
-  void WorldSceneWidget::SetSize(unsigned int width,
-                                 unsigned int height)
-  {
-    CairoWidget::SetSize(width, height);
-    view_.SetDisplaySize(width, height);
-  }
-
-
-  void WorldSceneWidget::SetInteractor(IWorldSceneInteractor& interactor)
-  {
-    interactor_ = &interactor;
-  }
-
-
-  void WorldSceneWidget::FitContent()
-  {
-    SetSceneExtent(view_);
-    view_.FitContent();
-
-    NotifyContentChanged();
-  }
-
-
-  void WorldSceneWidget::SetView(const ViewportGeometry& view)
-  {
-    view_ = view;
-
-    NotifyContentChanged();
-  }
-
-
-  IMouseTracker* WorldSceneWidget::CreateMouseTracker(OrthancStone::MouseButton button,
-                                                      int x,
-                                                      int y,
-                                                      OrthancStone::KeyboardModifiers modifiers,
-                                                      const std::vector<Touch>& touches)
-  {
-    double sceneX, sceneY;
-    view_.MapPixelCenterToScene(sceneX, sceneY, x, y);
-
-    // asks the Widget Interactor to provide a mouse tracker
-    std::unique_ptr<IWorldSceneMouseTracker> tracker;
-
-    if (interactor_)
-    {
-      tracker.reset(interactor_->CreateMouseTracker(*this, view_, button, modifiers, x, y, sceneX, sceneY, GetStatusBar(), touches));
-    }
-    
-    if (tracker.get() != NULL)
-    {
-      return new SceneMouseTracker(view_, tracker.release());
-    }
-    else if (hasDefaultMouseEvents_)
-    {
-      if (touches.size() == 2)
-      {
-        return new SceneMouseTracker(view_, new PanZoomMouseTracker(*this, touches));
-      }
-      else
-      {
-        switch (button)
-        {
-          case OrthancStone::MouseButton_Middle:
-            return new SceneMouseTracker(view_, new PanMouseTracker(*this, x, y));
-
-          case OrthancStone::MouseButton_Right:
-            return new SceneMouseTracker(view_, new ZoomMouseTracker(*this, x, y));
-
-          default:
-            return NULL;
-        }
-      }
-    }
-    else
-    {
-      return NULL;
-    }
-  }
-
-
-  void WorldSceneWidget::MouseWheel(OrthancStone::MouseWheelDirection direction,
-                                    int x,
-                                    int y,
-                                    OrthancStone::KeyboardModifiers modifiers)
-  {
-    if (interactor_)
-    {
-      interactor_->MouseWheel(*this, direction, modifiers, GetStatusBar());
-    }
-  }
-
-
-  void WorldSceneWidget::KeyPressed(OrthancStone::KeyboardKeys key,
-                                    char keyChar,
-                                    OrthancStone::KeyboardModifiers modifiers)
-  {
-    if (interactor_)
-    {
-      interactor_->KeyPressed(*this, key, keyChar, modifiers, GetStatusBar());
-    }
-  }
-}
--- a/Framework/Deprecated/Widgets/WorldSceneWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "CairoWidget.h"
-#include "IWorldSceneInteractor.h"
-
-#include "../Toolbox/ViewportGeometry.h"
-
-namespace Deprecated
-{
-  class WorldSceneWidget : public CairoWidget
-  {
-  private:
-    class SceneMouseTracker;
-
-    ViewportGeometry       view_;
-    IWorldSceneInteractor* interactor_;
-    bool                   hasDefaultMouseEvents_;
-
-  protected:
-    virtual OrthancStone::Extent2D GetSceneExtent() = 0;
-
-    virtual bool RenderScene(OrthancStone::CairoContext& context,
-                             const ViewportGeometry& view) = 0;
-
-    // From CairoWidget
-    virtual bool RenderCairo(OrthancStone::CairoContext& context);
-
-    // From CairoWidget
-    virtual void RenderMouseOverCairo(OrthancStone::CairoContext& context,
-                                      int x,
-                                      int y);
-
-    void SetSceneExtent(ViewportGeometry& geometry);
-
-  public:
-    WorldSceneWidget(const std::string& name) :
-      CairoWidget(name),
-      interactor_(NULL),
-      hasDefaultMouseEvents_(true)
-    {
-    }
-
-    void SetDefaultMouseEvents(bool value)
-    {
-      hasDefaultMouseEvents_ = value;
-    }
-
-    bool HasDefaultMouseEvents() const
-    {
-      return hasDefaultMouseEvents_;
-    }
-
-    void SetInteractor(IWorldSceneInteractor& interactor);
-
-    void SetView(const ViewportGeometry& view);
-
-    const ViewportGeometry& GetView() const
-    {
-      return view_;
-    }
-
-    virtual void SetSize(unsigned int width,
-                         unsigned int height);
-
-    virtual void FitContent();
-
-    virtual IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
-                                              int x,
-                                              int y,
-                                              OrthancStone::KeyboardModifiers modifiers,
-                                              const std::vector<Touch>& touches);
-
-    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
-                            int x,
-                            int y,
-                            OrthancStone::KeyboardModifiers modifiers);
-
-    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
-                            char keyChar,
-                            OrthancStone::KeyboardModifiers modifiers);
-  };
-}
--- a/Framework/Deprecated/Widgets/ZoomMouseTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ZoomMouseTracker.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-namespace Deprecated
-{
-  ZoomMouseTracker::ZoomMouseTracker(WorldSceneWidget& that,
-                                     int x,
-                                     int y) :
-    that_(that),
-    originalZoom_(that.GetView().GetZoom()),
-    downX_(x),
-    downY_(y)
-  {
-    that.GetView().MapPixelCenterToScene(centerX_, centerY_, x, y);
-
-    unsigned int height = that.GetView().GetDisplayHeight();
-      
-    if (height <= 3)
-    {
-      idle_ = true;
-      LOG(WARNING) << "image is too small to zoom (current height = " << height << ")";
-    }
-    else
-    {
-      idle_ = false;
-      normalization_ = 1.0 / static_cast<double>(height - 1);
-    }
-  }
-    
-
-  void ZoomMouseTracker::Render(OrthancStone::CairoContext& context,
-                                double zoom)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-
-
-  void ZoomMouseTracker::MouseMove(int displayX,
-                                   int displayY,
-                                   double x,
-                                   double y,
-                                   const std::vector<Touch>& displayTouches,
-                                   const std::vector<Touch>& sceneTouches)
-  {
-    static const double MIN_ZOOM = -4;
-    static const double MAX_ZOOM = 4;
-
-      
-    if (!idle_)
-    {
-      double dy = static_cast<double>(displayY - downY_) * normalization_;  // In the range [-1,1]
-      double z;
-
-      // Linear interpolation from [-1, 1] to [MIN_ZOOM, MAX_ZOOM]
-      if (dy < -1.0)
-      {
-        z = MIN_ZOOM;
-      }
-      else if (dy > 1.0)
-      {
-        z = MAX_ZOOM;
-      }
-      else
-      {
-        z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0;
-      }
-
-      z = pow(2.0, z);
-
-      ViewportGeometry view = that_.GetView();
-        
-      view.SetZoom(z * originalZoom_);
-        
-      // Correct the pan so that the original click point is kept at
-      // the same location on the display
-      double panX, panY;
-      view.GetPan(panX, panY);
-
-      int tx, ty;
-      view.MapSceneToDisplay(tx, ty, centerX_, centerY_);
-      view.SetPan(panX + static_cast<double>(downX_ - tx),
-                  panY + static_cast<double>(downY_ - ty));
-        
-      that_.SetView(view);
-    }
-  }
-}
--- a/Framework/Deprecated/Widgets/ZoomMouseTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WorldSceneWidget.h"
-
-namespace Deprecated
-{
-  class ZoomMouseTracker : public IWorldSceneMouseTracker
-  {
-  private:
-    WorldSceneWidget&  that_;
-    double             originalZoom_;
-    int                downX_;
-    int                downY_;
-    double             centerX_;
-    double             centerY_;
-    bool               idle_;
-    double             normalization_;
-    
-  public:
-    ZoomMouseTracker(WorldSceneWidget& that,
-                     int x,
-                     int y);
-    
-    virtual bool HasRender() const
-    {
-      return false;
-    }
-
-    virtual void MouseUp()
-    {
-    }
-
-    virtual void Render(OrthancStone::CairoContext& context,
-                        double zoom);
-
-    virtual void MouseMove(int displayX,
-                           int displayY,
-                           double x,
-                           double y,
-                           const std::vector<Touch>& displayTouches,
-                           const std::vector<Touch>& sceneTouches);
-  };
-}
--- a/Framework/Deprecated/dev.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,958 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "Layers/FrameRenderer.h"
-#include "Layers/LineLayerRenderer.h"
-#include "Layers/SliceOutlineRenderer.h"
-#include "Toolbox/DownloadStack.h"
-#include "Toolbox/GeometryToolbox.h"
-#include "Toolbox/OrthancSlicesLoader.h"
-#include "Volumes/ISlicedVolume.h"
-#include "Volumes/ImageBuffer3D.h"
-#include "Widgets/SliceViewerWidget.h"
-
-#include <Logging.h>
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-
-#include <boost/math/special_functions/round.hpp>
-
-
-namespace Deprecated
-{
-  // TODO: Handle errors while loading
-  class OrthancVolumeImage :
-    public ISlicedVolume,
-    public OrthancStone::IObserver
-  {
-  private:
-    OrthancSlicesLoader           loader_;
-    std::unique_ptr<OrthancStone::ImageBuffer3D>  image_;
-    std::unique_ptr<DownloadStack>  downloadStack_;
-    bool                          computeRange_;
-    size_t                        pendingSlices_;
-
-    void ScheduleSliceDownload()
-    {
-      assert(downloadStack_.get() != NULL);
-
-      unsigned int slice;
-      if (downloadStack_->Pop(slice))
-      {
-        loader_.ScheduleLoadSliceImage(slice, OrthancStone::SliceImageQuality_Jpeg90);
-      }
-    }
-
-
-    static bool IsCompatible(const Slice& a,
-                             const Slice& b)
-    {
-      if (!OrthancStone::GeometryToolbox::IsParallel(a.GetGeometry().GetNormal(),
-                                                     b.GetGeometry().GetNormal()))
-      {
-        LOG(ERROR) << "A slice in the volume image is not parallel to the others.";
-        return false;
-      }
-
-      if (a.GetConverter().GetExpectedPixelFormat() != b.GetConverter().GetExpectedPixelFormat())
-      {
-        LOG(ERROR) << "The pixel format changes across the slices of the volume image.";
-        return false;
-      }
-
-      if (a.GetWidth() != b.GetWidth() ||
-          a.GetHeight() != b.GetHeight())
-      {
-        LOG(ERROR) << "The slices dimensions (width/height) are varying throughout the volume image";
-        return false;
-      }
-
-      if (!OrthancStone::LinearAlgebra::IsNear(a.GetPixelSpacingX(), b.GetPixelSpacingX()) ||
-          !OrthancStone::LinearAlgebra::IsNear(a.GetPixelSpacingY(), b.GetPixelSpacingY()))
-      {
-        LOG(ERROR) << "The pixel spacing of the slices change across the volume image";
-        return false;
-      }
-
-      return true;
-    }
-
-
-    static double GetDistance(const Slice& a,
-                              const Slice& b)
-    {
-      return fabs(a.GetGeometry().ProjectAlongNormal(a.GetGeometry().GetOrigin()) -
-                  a.GetGeometry().ProjectAlongNormal(b.GetGeometry().GetOrigin()));
-    }
-
-
-    void OnSliceGeometryReady(const OrthancSlicesLoader::SliceGeometryReadyMessage& message)
-    {
-      assert(&message.GetOrigin() == &loader_);
-
-      if (loader_.GetSlicesCount() == 0)
-      {
-        LOG(ERROR) << "Empty volume image";
-        BroadcastMessage(ISlicedVolume::GeometryErrorMessage(*this));
-        return;
-      }
-
-      for (size_t i = 1; i < loader_.GetSlicesCount(); i++)
-      {
-        if (!IsCompatible(loader_.GetSlice(0), loader_.GetSlice(i)))
-        {
-          BroadcastMessage(ISlicedVolume::GeometryErrorMessage(*this));
-          return;
-        }
-      }
-
-      double spacingZ;
-
-      if (loader_.GetSlicesCount() > 1)
-      {
-        spacingZ = GetDistance(loader_.GetSlice(0), loader_.GetSlice(1));
-      }
-      else
-      {
-        // This is a volume with one single slice: Choose a dummy
-        // z-dimension for voxels
-        spacingZ = 1;
-      }
-
-      for (size_t i = 1; i < loader_.GetSlicesCount(); i++)
-      {
-        if (!OrthancStone::LinearAlgebra::IsNear(spacingZ, GetDistance(loader_.GetSlice(i - 1), loader_.GetSlice(i)),
-                                                 0.001 /* this is expressed in mm */))
-        {
-          LOG(ERROR) << "The distance between successive slices is not constant in a volume image";
-          BroadcastMessage(ISlicedVolume::GeometryErrorMessage(*this));
-          return;
-        }
-      }
-
-      unsigned int width = loader_.GetSlice(0).GetWidth();
-      unsigned int height = loader_.GetSlice(0).GetHeight();
-      Orthanc::PixelFormat format = loader_.GetSlice(0).GetConverter().GetExpectedPixelFormat();
-      LOG(INFO) << "Creating a volume image of size " << width << "x" << height
-                << "x" << loader_.GetSlicesCount() << " in " << Orthanc::EnumerationToString(format);
-
-      image_.reset(new OrthancStone::ImageBuffer3D(format, width, height, static_cast<unsigned int>(loader_.GetSlicesCount()), computeRange_));
-      image_->GetGeometry().SetAxialGeometry(loader_.GetSlice(0).GetGeometry());
-      image_->GetGeometry().SetVoxelDimensions(loader_.GetSlice(0).GetPixelSpacingX(),
-                                               loader_.GetSlice(0).GetPixelSpacingY(), spacingZ);
-      image_->Clear();
-
-      downloadStack_.reset(new DownloadStack(static_cast<unsigned int>(loader_.GetSlicesCount())));
-      pendingSlices_ = loader_.GetSlicesCount();
-
-      for (unsigned int i = 0; i < 4; i++)  // Limit to 4 simultaneous downloads
-      {
-        ScheduleSliceDownload();
-      }
-
-      // TODO Check the DicomFrameConverter are constant
-
-      BroadcastMessage(ISlicedVolume::GeometryReadyMessage(*this));
-    }
-
-
-    void OnSliceGeometryError(const OrthancSlicesLoader::SliceGeometryErrorMessage& message)
-    {
-      assert(&message.GetOrigin() == &loader_);
-
-      LOG(ERROR) << "Unable to download a volume image";
-      BroadcastMessage(ISlicedVolume::GeometryErrorMessage(*this));
-    }
-
-
-    void OnSliceImageReady(const OrthancSlicesLoader::SliceImageReadyMessage& message)
-    {
-      assert(&message.GetOrigin() == &loader_);
-
-      {
-        OrthancStone::ImageBuffer3D::SliceWriter writer(*image_, OrthancStone::VolumeProjection_Axial, message.GetSliceIndex());
-        Orthanc::ImageProcessing::Copy(writer.GetAccessor(), message.GetImage());
-      }
-
-      BroadcastMessage(ISlicedVolume::SliceContentChangedMessage
-                       (*this, message.GetSliceIndex(), message.GetSlice()));
-
-      if (pendingSlices_ == 1)
-      {
-        BroadcastMessage(ISlicedVolume::VolumeReadyMessage(*this));
-        pendingSlices_ = 0;
-      }
-      else if (pendingSlices_ > 1)
-      {
-        pendingSlices_ -= 1;
-      }
-
-      ScheduleSliceDownload();
-    }
-
-
-    void OnSliceImageError(const OrthancSlicesLoader::SliceImageErrorMessage& message)
-    {
-      assert(&message.GetOrigin() == &loader_);
-
-      LOG(ERROR) << "Cannot download slice " << message.GetSliceIndex() << " in a volume image";
-      ScheduleSliceDownload();
-    }
-
-
-  public:
-    OrthancVolumeImage(OrthancStone::MessageBroker& broker,
-                       OrthancApiClient& orthanc,
-                       bool computeRange) :
-      ISlicedVolume(broker),
-      IObserver(broker),
-      loader_(broker, orthanc),
-      computeRange_(computeRange),
-      pendingSlices_(0)
-    {
-      loader_.RegisterObserverCallback(
-        new OrthancStone::Callable<OrthancVolumeImage, OrthancSlicesLoader::SliceGeometryReadyMessage>
-        (*this, &OrthancVolumeImage::OnSliceGeometryReady));
-
-      loader_.RegisterObserverCallback(
-        new OrthancStone::Callable<OrthancVolumeImage, OrthancSlicesLoader::SliceGeometryErrorMessage>
-        (*this, &OrthancVolumeImage::OnSliceGeometryError));
-
-      loader_.RegisterObserverCallback(
-        new OrthancStone::Callable<OrthancVolumeImage, OrthancSlicesLoader::SliceImageReadyMessage>
-        (*this, &OrthancVolumeImage::OnSliceImageReady));
-
-      loader_.RegisterObserverCallback(
-        new OrthancStone::Callable<OrthancVolumeImage, OrthancSlicesLoader::SliceImageErrorMessage>
-        (*this, &OrthancVolumeImage::OnSliceImageError));
-    }
-
-    void ScheduleLoadSeries(const std::string& seriesId)
-    {
-      loader_.ScheduleLoadSeries(seriesId);
-    }
-
-    void ScheduleLoadInstance(const std::string& instanceId)
-    {
-      loader_.ScheduleLoadInstance(instanceId);
-    }
-
-    void ScheduleLoadFrame(const std::string& instanceId,
-                           unsigned int frame)
-    {
-      loader_.ScheduleLoadFrame(instanceId, frame);
-    }
-
-    virtual size_t GetSlicesCount() const
-    {
-      return loader_.GetSlicesCount();
-    }
-
-    virtual const Slice& GetSlice(size_t index) const
-    {
-      return loader_.GetSlice(index);
-    }
-
-    OrthancStone::ImageBuffer3D& GetImage() const
-    {
-      if (image_.get() == NULL)
-      {
-        // The geometry is not ready yet
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      else
-      {
-        return *image_;
-      }
-    }
-
-    bool FitWindowingToRange(RenderStyle& style,
-                             const DicomFrameConverter& converter) const
-    {
-      if (image_.get() == NULL)
-      {
-        return false;
-      }
-      else
-      {
-        return image_->FitWindowingToRange(style, converter);
-      }
-    }
-  };
-
-
-  class VolumeImageGeometry
-  {
-  private:
-    unsigned int         width_;
-    unsigned int         height_;
-    size_t               depth_;
-    double               pixelSpacingX_;
-    double               pixelSpacingY_;
-    double               sliceThickness_;
-    OrthancStone::CoordinateSystem3D   reference_;
-    DicomFrameConverter  converter_;
-
-    double ComputeAxialThickness(const OrthancVolumeImage& volume) const
-    {
-      double thickness;
-
-      size_t n = volume.GetSlicesCount();
-      if (n > 1)
-      {
-        const Slice& a = volume.GetSlice(0);
-        const Slice& b = volume.GetSlice(n - 1);
-        thickness = ((reference_.ProjectAlongNormal(b.GetGeometry().GetOrigin()) -
-                      reference_.ProjectAlongNormal(a.GetGeometry().GetOrigin())) /
-                     (static_cast<double>(n) - 1.0));
-      }
-      else
-      {
-        thickness = volume.GetSlice(0).GetThickness();
-      }
-
-      if (thickness <= 0)
-      {
-        // The slices should have been sorted with increasing Z
-        // (along the normal) by the OrthancSlicesLoader
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-      else
-      {
-        return thickness;
-      }
-    }
-
-    void SetupAxial(const OrthancVolumeImage& volume)
-    {
-      const Slice& axial = volume.GetSlice(0);
-
-      width_ = axial.GetWidth();
-      height_ = axial.GetHeight();
-      depth_ = volume.GetSlicesCount();
-
-      pixelSpacingX_ = axial.GetPixelSpacingX();
-      pixelSpacingY_ = axial.GetPixelSpacingY();
-      sliceThickness_ = ComputeAxialThickness(volume);
-
-      reference_ = axial.GetGeometry();
-    }
-
-    void SetupCoronal(const OrthancVolumeImage& volume)
-    {
-      const Slice& axial = volume.GetSlice(0);
-      double axialThickness = ComputeAxialThickness(volume);
-
-      width_ = axial.GetWidth();
-      height_ = static_cast<unsigned int>(volume.GetSlicesCount());
-      depth_ = axial.GetHeight();
-
-      pixelSpacingX_ = axial.GetPixelSpacingX();
-      pixelSpacingY_ = axialThickness;
-      sliceThickness_ = axial.GetPixelSpacingY();
-
-      OrthancStone::Vector origin = axial.GetGeometry().GetOrigin();
-      origin += (static_cast<double>(volume.GetSlicesCount() - 1) *
-                 axialThickness * axial.GetGeometry().GetNormal());
-
-      reference_ = OrthancStone::CoordinateSystem3D(origin,
-                                                    axial.GetGeometry().GetAxisX(),
-                                                    - axial.GetGeometry().GetNormal());
-    }
-
-    void SetupSagittal(const OrthancVolumeImage& volume)
-    {
-      const Slice& axial = volume.GetSlice(0);
-      double axialThickness = ComputeAxialThickness(volume);
-
-      width_ = axial.GetHeight();
-      height_ = static_cast<unsigned int>(volume.GetSlicesCount());
-      depth_ = axial.GetWidth();
-
-      pixelSpacingX_ = axial.GetPixelSpacingY();
-      pixelSpacingY_ = axialThickness;
-      sliceThickness_ = axial.GetPixelSpacingX();
-
-      OrthancStone::Vector origin = axial.GetGeometry().GetOrigin();
-      origin += (static_cast<double>(volume.GetSlicesCount() - 1) *
-                 axialThickness * axial.GetGeometry().GetNormal());
-
-      reference_ = OrthancStone::CoordinateSystem3D(origin,
-                                                    axial.GetGeometry().GetAxisY(),
-                                                    axial.GetGeometry().GetNormal());
-    }
-
-  public:
-    VolumeImageGeometry(const OrthancVolumeImage& volume,
-                        OrthancStone::VolumeProjection projection)
-    {
-      if (volume.GetSlicesCount() == 0)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      converter_ = volume.GetSlice(0).GetConverter();
-
-      switch (projection)
-      {
-        case OrthancStone::VolumeProjection_Axial:
-          SetupAxial(volume);
-          break;
-
-        case OrthancStone::VolumeProjection_Coronal:
-          SetupCoronal(volume);
-          break;
-
-        case OrthancStone::VolumeProjection_Sagittal:
-          SetupSagittal(volume);
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-    }
-
-    size_t GetSlicesCount() const
-    {
-      return depth_;
-    }
-
-    const OrthancStone::Vector& GetNormal() const
-    {
-      return reference_.GetNormal();
-    }
-
-    bool LookupSlice(size_t& index,
-                     const OrthancStone::CoordinateSystem3D& slice) const
-    {
-      bool opposite;
-      if (!OrthancStone::GeometryToolbox::IsParallelOrOpposite(opposite,
-                                                               reference_.GetNormal(),
-                                                               slice.GetNormal()))
-      {
-        return false;
-      }
-
-      double z = (reference_.ProjectAlongNormal(slice.GetOrigin()) -
-                  reference_.ProjectAlongNormal(reference_.GetOrigin())) / sliceThickness_;
-
-      int s = static_cast<int>(boost::math::iround(z));
-
-      if (s < 0 ||
-          s >= static_cast<int>(depth_))
-      {
-        return false;
-      }
-      else
-      {
-        index = static_cast<size_t>(s);
-        return true;
-      }
-    }
-
-    Slice* GetSlice(size_t slice) const
-    {
-      if (slice >= depth_)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-      else
-      {
-        OrthancStone::CoordinateSystem3D origin(reference_.GetOrigin() +
-                                                static_cast<double>(slice) * sliceThickness_ * reference_.GetNormal(),
-                                                reference_.GetAxisX(),
-                                                reference_.GetAxisY());
-
-        return new Slice(origin, pixelSpacingX_, pixelSpacingY_, sliceThickness_,
-                         width_, height_, converter_);
-      }
-    }
-  };
-
-
-
-  class VolumeImageMPRSlicer :
-    public IVolumeSlicer,
-    public OrthancStone::IObserver
-  {
-  private:
-    class RendererFactory : public LayerReadyMessage::IRendererFactory
-    {
-    private:
-      const Orthanc::ImageAccessor&  frame_;
-      const Slice&                   slice_;
-      bool                           isFullQuality_;
-
-    public:
-      RendererFactory(const Orthanc::ImageAccessor& frame,
-                      const Slice& slice,
-                      bool isFullQuality) :
-        frame_(frame),
-        slice_(slice),
-        isFullQuality_(isFullQuality)
-      {
-      }
-
-      virtual ILayerRenderer* CreateRenderer() const
-      {
-        return FrameRenderer::CreateRenderer(frame_, slice_, isFullQuality_);
-      }
-    };
-
-
-    OrthancVolumeImage&                 volume_;
-    std::unique_ptr<VolumeImageGeometry>  axialGeometry_;
-    std::unique_ptr<VolumeImageGeometry>  coronalGeometry_;
-    std::unique_ptr<VolumeImageGeometry>  sagittalGeometry_;
-
-
-    bool IsGeometryReady() const
-    {
-      return axialGeometry_.get() != NULL;
-    }
-
-    void OnGeometryReady(const ISlicedVolume::GeometryReadyMessage& message)
-    {
-      assert(&message.GetOrigin() == &volume_);
-
-      // These 3 values are only used to speed up the IVolumeSlicer
-      axialGeometry_.reset(new VolumeImageGeometry(volume_, OrthancStone::VolumeProjection_Axial));
-      coronalGeometry_.reset(new VolumeImageGeometry(volume_, OrthancStone::VolumeProjection_Coronal));
-      sagittalGeometry_.reset(new VolumeImageGeometry(volume_, OrthancStone::VolumeProjection_Sagittal));
-
-      BroadcastMessage(IVolumeSlicer::GeometryReadyMessage(*this));
-    }
-
-    void OnGeometryError(const ISlicedVolume::GeometryErrorMessage& message)
-    {
-      assert(&message.GetOrigin() == &volume_);
-
-      BroadcastMessage(IVolumeSlicer::GeometryErrorMessage(*this));
-    }
-
-    void OnContentChanged(const ISlicedVolume::ContentChangedMessage& message)
-    {
-      assert(&message.GetOrigin() == &volume_);
-
-      BroadcastMessage(IVolumeSlicer::ContentChangedMessage(*this));
-    }
-
-    void OnSliceContentChanged(const ISlicedVolume::SliceContentChangedMessage& message)
-    {
-      assert(&message.GetOrigin() == &volume_);
-
-      //IVolumeSlicer::OnSliceContentChange(slice);
-
-      // TODO Improve this?
-      BroadcastMessage(IVolumeSlicer::ContentChangedMessage(*this));
-    }
-
-    const VolumeImageGeometry& GetProjectionGeometry(OrthancStone::VolumeProjection projection)
-    {
-      if (!IsGeometryReady())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-
-      switch (projection)
-      {
-        case OrthancStone::VolumeProjection_Axial:
-          return *axialGeometry_;
-
-        case OrthancStone::VolumeProjection_Sagittal:
-          return *sagittalGeometry_;
-
-        case OrthancStone::VolumeProjection_Coronal:
-          return *coronalGeometry_;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-
-
-    bool DetectProjection(OrthancStone::VolumeProjection& projection,
-                          const OrthancStone::CoordinateSystem3D& viewportSlice)
-    {
-      bool isOpposite;  // Ignored
-
-      if (OrthancStone::GeometryToolbox::IsParallelOrOpposite(isOpposite,
-                                                              viewportSlice.GetNormal(),
-                                                              axialGeometry_->GetNormal()))
-      {
-        projection = OrthancStone::VolumeProjection_Axial;
-        return true;
-      }
-      else if (OrthancStone::GeometryToolbox::IsParallelOrOpposite(isOpposite,
-                                                                   viewportSlice.GetNormal(),
-                                                                   sagittalGeometry_->GetNormal()))
-      {
-        projection = OrthancStone::VolumeProjection_Sagittal;
-        return true;
-      }
-      else if (OrthancStone::GeometryToolbox::IsParallelOrOpposite(isOpposite,
-                                                                   viewportSlice.GetNormal(),
-                                                                   coronalGeometry_->GetNormal()))
-      {
-        projection = OrthancStone::VolumeProjection_Coronal;
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-
-
-  public:
-    VolumeImageMPRSlicer(OrthancStone::MessageBroker& broker,
-                         OrthancVolumeImage&  volume) :
-      IVolumeSlicer(broker),
-      IObserver(broker),
-      volume_(volume)
-    {
-      volume_.RegisterObserverCallback(
-        new OrthancStone::Callable<VolumeImageMPRSlicer, ISlicedVolume::GeometryReadyMessage>
-        (*this, &VolumeImageMPRSlicer::OnGeometryReady));
-
-      volume_.RegisterObserverCallback(
-        new OrthancStone::Callable<VolumeImageMPRSlicer, ISlicedVolume::GeometryErrorMessage>
-        (*this, &VolumeImageMPRSlicer::OnGeometryError));
-
-      volume_.RegisterObserverCallback(
-        new OrthancStone::Callable<VolumeImageMPRSlicer, ISlicedVolume::ContentChangedMessage>
-        (*this, &VolumeImageMPRSlicer::OnContentChanged));
-
-      volume_.RegisterObserverCallback(
-        new OrthancStone::Callable<VolumeImageMPRSlicer, ISlicedVolume::SliceContentChangedMessage>
-        (*this, &VolumeImageMPRSlicer::OnSliceContentChanged));
-    }
-
-    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
-                           const OrthancStone::CoordinateSystem3D& viewportSlice) ORTHANC_OVERRIDE
-    {
-      OrthancStone::VolumeProjection projection;
-
-      if (!IsGeometryReady() ||
-          !DetectProjection(projection, viewportSlice))
-      {
-        return false;
-      }
-      else
-      {
-        // As the slices of the volumic image are arranged in a box,
-        // we only consider one single reference slice (the one with index 0).
-        std::unique_ptr<Slice> slice(GetProjectionGeometry(projection).GetSlice(0));
-        slice->GetExtent(points);
-
-        return true;
-      }
-    }
-
-    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice) ORTHANC_OVERRIDE
-    {
-      OrthancStone::VolumeProjection projection;
-
-      if (IsGeometryReady() &&
-          DetectProjection(projection, viewportSlice))
-      {
-        const VolumeImageGeometry& geometry = GetProjectionGeometry(projection);
-
-        size_t closest;
-
-        if (geometry.LookupSlice(closest, viewportSlice))
-        {
-          bool isFullQuality = true;  // TODO
-
-          std::unique_ptr<Orthanc::Image> frame;
-
-          {
-            OrthancStone::ImageBuffer3D::SliceReader reader(volume_.GetImage(), projection, static_cast<unsigned int>(closest));
-
-            // TODO Transfer ownership if non-axial, to avoid memcpy
-            frame.reset(Orthanc::Image::Clone(reader.GetAccessor()));
-          }
-
-          std::unique_ptr<Slice> slice(geometry.GetSlice(closest));
-
-          RendererFactory factory(*frame, *slice, isFullQuality);
-
-          BroadcastMessage(IVolumeSlicer::LayerReadyMessage(*this, factory, slice->GetGeometry()));
-          return;
-        }
-      }
-
-      // Error
-      OrthancStone::CoordinateSystem3D slice;
-      BroadcastMessage(IVolumeSlicer::LayerErrorMessage(*this, slice));
-    }
-  };
-
-
-  class VolumeImageInteractor :
-    public IWorldSceneInteractor,
-    public OrthancStone::IObserver
-  {
-  private:
-    SliceViewerWidget&                  widget_;
-    OrthancStone::VolumeProjection      projection_;
-    std::unique_ptr<VolumeImageGeometry>  slices_;
-    size_t                              slice_;
-
-  protected:
-    void OnGeometryReady(const ISlicedVolume::GeometryReadyMessage& message)
-    {
-      if (slices_.get() == NULL)
-      {
-        const OrthancVolumeImage& image =
-          dynamic_cast<const OrthancVolumeImage&>(message.GetOrigin());
-
-        slices_.reset(new VolumeImageGeometry(image, projection_));
-        SetSlice(slices_->GetSlicesCount() / 2);
-
-        widget_.FitContent();
-      }
-    }
-
-    virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
-                                                        const ViewportGeometry& view,
-                                                        OrthancStone::MouseButton button,
-                                                        OrthancStone::KeyboardModifiers modifiers,
-                                                        int viewportX,
-                                                        int viewportY,
-                                                        double x,
-                                                        double y,
-                                                        IStatusBar* statusBar,
-                                                        const std::vector<Touch>& touches) ORTHANC_OVERRIDE
-    {
-      return  NULL;
-    }
-
-    virtual void MouseOver(OrthancStone::CairoContext& context,
-                           WorldSceneWidget& widget,
-                           const ViewportGeometry& view,
-                           double x,
-                           double y,
-                           IStatusBar* statusBar) ORTHANC_OVERRIDE
-    {
-    }
-
-    virtual void MouseWheel(WorldSceneWidget& widget,
-                            OrthancStone::MouseWheelDirection direction,
-                            OrthancStone::KeyboardModifiers modifiers,
-                            IStatusBar* statusBar) ORTHANC_OVERRIDE
-    {
-      int scale = (modifiers & OrthancStone::KeyboardModifiers_Control ? 10 : 1);
-
-      switch (direction)
-      {
-        case OrthancStone::MouseWheelDirection_Up:
-          OffsetSlice(-scale);
-          break;
-
-        case OrthancStone::MouseWheelDirection_Down:
-          OffsetSlice(scale);
-          break;
-
-        default:
-          break;
-      }
-    }
-
-    virtual void KeyPressed(WorldSceneWidget& widget,
-                            OrthancStone::KeyboardKeys key,
-                            char keyChar,
-                            OrthancStone::KeyboardModifiers modifiers,
-                            IStatusBar* statusBar) ORTHANC_OVERRIDE
-    {
-      switch (keyChar)
-      {
-        case 's':
-          widget.FitContent();
-          break;
-
-        default:
-          break;
-      }
-    }
-
-  public:
-    VolumeImageInteractor(OrthancStone::MessageBroker& broker,
-                          OrthancVolumeImage& volume,
-                          SliceViewerWidget& widget,
-                          OrthancStone::VolumeProjection projection) :
-      IObserver(broker),
-      widget_(widget),
-      projection_(projection)
-    {
-      widget.SetInteractor(*this);
-
-      volume.RegisterObserverCallback(
-        new OrthancStone::Callable<VolumeImageInteractor, ISlicedVolume::GeometryReadyMessage>
-        (*this, &VolumeImageInteractor::OnGeometryReady));
-    }
-
-    bool IsGeometryReady() const
-    {
-      return slices_.get() != NULL;
-    }
-
-    size_t GetSlicesCount() const
-    {
-      if (slices_.get() == NULL)
-      {
-        return 0;
-      }
-      else
-      {
-        return slices_->GetSlicesCount();
-      }
-    }
-
-    void OffsetSlice(int offset)
-    {
-      if (slices_.get() != NULL)
-      {
-        int slice = static_cast<int>(slice_) + offset;
-
-        if (slice < 0)
-        {
-          slice = 0;
-        }
-
-        if (slice >= static_cast<int>(slices_->GetSlicesCount()))
-        {
-          slice = static_cast<unsigned int>(slices_->GetSlicesCount()) - 1;
-        }
-
-        if (slice != static_cast<int>(slice_))
-        {
-          SetSlice(slice);
-        }
-      }
-    }
-
-    void SetSlice(size_t slice)
-    {
-      if (slices_.get() != NULL)
-      {
-        slice_ = slice;
-
-        std::unique_ptr<Slice> tmp(slices_->GetSlice(slice_));
-        widget_.SetSlice(tmp->GetGeometry());
-      }
-    }
-  };
-
-
-
-  class ReferenceLineSource : public IVolumeSlicer
-  {
-  private:
-    class RendererFactory : public LayerReadyMessage::IRendererFactory
-    {
-    private:
-      double                     x1_;
-      double                     y1_;
-      double                     x2_;
-      double                     y2_;
-      const OrthancStone::CoordinateSystem3D&  slice_;
-
-    public:
-      RendererFactory(double x1,
-                      double y1,
-                      double x2,
-                      double y2,
-                      const OrthancStone::CoordinateSystem3D& slice) :
-        x1_(x1),
-        y1_(y1),
-        x2_(x2),
-        y2_(y2),
-        slice_(slice)
-      {
-      }
-
-      virtual ILayerRenderer* CreateRenderer() const
-      {
-        return new LineLayerRenderer(x1_, y1_, x2_, y2_, slice_);
-      }
-    };
-
-    SliceViewerWidget&  otherPlane_;
-
-  public:
-    ReferenceLineSource(OrthancStone::MessageBroker& broker,
-                        SliceViewerWidget&  otherPlane) :
-      IVolumeSlicer(broker),
-      otherPlane_(otherPlane)
-    {
-      BroadcastMessage(IVolumeSlicer::GeometryReadyMessage(*this));
-    }
-
-    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
-                           const OrthancStone::CoordinateSystem3D& viewportSlice)
-    {
-      return false;
-    }
-
-    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice)
-    {
-      Slice reference(viewportSlice, 0.001);
-
-      OrthancStone::Vector p, d;
-
-      const OrthancStone::CoordinateSystem3D& slice = otherPlane_.GetSlice();
-
-      // Compute the line of intersection between the two slices
-      if (!OrthancStone::GeometryToolbox::IntersectTwoPlanes(p, d,
-                                                             slice.GetOrigin(), slice.GetNormal(),
-                                                             viewportSlice.GetOrigin(), viewportSlice.GetNormal()))
-      {
-        // The two slice are parallel, don't try and display the intersection
-        BroadcastMessage(IVolumeSlicer::LayerErrorMessage(*this, reference.GetGeometry()));
-      }
-      else
-      {
-        double x1, y1, x2, y2;
-        viewportSlice.ProjectPoint(x1, y1, p);
-        viewportSlice.ProjectPoint(x2, y2, p + 1000.0 * d);
-
-        const OrthancStone::Extent2D extent = otherPlane_.GetSceneExtent();
-
-        if (OrthancStone::GeometryToolbox::ClipLineToRectangle(x1, y1, x2, y2,
-                                                               x1, y1, x2, y2,
-                                                               extent.GetX1(), extent.GetY1(),
-                                                               extent.GetX2(), extent.GetY2()))
-        {
-          RendererFactory factory(x1, y1, x2, y2, slice);
-          BroadcastMessage(IVolumeSlicer::LayerReadyMessage(*this, factory, reference.GetGeometry()));
-        }
-        else
-        {
-          // Error: Parallel slices
-          BroadcastMessage(IVolumeSlicer::LayerErrorMessage(*this, reference.GetGeometry()));
-        }
-      }
-    }
-  };
-}
--- a/Framework/Fonts/FontRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "FontRenderer.h"
-
-#include "../Toolbox/DynamicBitmap.h"
-
-#include <OrthancException.h>
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_GLYPH_H
-
-
-// https://stackoverflow.com/questions/31161284/how-can-i-get-the-corresponding-error-string-from-an-ft-error-code
-static std::string GetErrorMessage(FT_Error err)
-{
-#undef __FTERRORS_H__
-#define FT_ERRORDEF( e, v, s )  case e: return s;
-#define FT_ERROR_START_LIST     switch (err) {
-#define FT_ERROR_END_LIST       }
-#include FT_ERRORS_H
-  return "(Unknown error)";
-}
-
-
-static void CheckError(FT_Error err)
-{
-  if (err != 0)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                    "Error in FreeType: " + GetErrorMessage(err));
-  }
-}
-
-
-namespace OrthancStone
-{
-  class FontRenderer::PImpl : public boost::noncopyable
-  {
-  private:
-    std::string  fontContent_;
-    FT_Library   library_;
-    FT_Face      face_;
-
-    void Clear()
-    {
-      if (face_ != NULL)
-      {
-        FT_Done_Face(face_);        
-        face_ = NULL;
-      }
-
-      fontContent_.clear();
-    }
-
-  public:
-    PImpl() :
-      library_(NULL),
-      face_(NULL)
-    {
-      CheckError(FT_Init_FreeType(&library_));
-    }
-
-    
-    ~PImpl()
-    {
-      Clear();
-      FT_Done_FreeType(library_);
-    }
-
-    
-    void LoadFont(const std::string& fontContent,
-                  unsigned int fontSize)
-    {
-      Clear();
-
-      // It is necessary to make a private copy of the font, as
-      // Freetype makes the assumption that the buffer containing the
-      // font is never deleted
-      fontContent_.assign(fontContent);
-      
-      const FT_Byte* data = reinterpret_cast<const FT_Byte*>(fontContent_.c_str());
-
-      CheckError(FT_New_Memory_Face(
-        library_, data, static_cast<FT_Long>(fontContent_.size()), 0, &face_));
-
-      CheckError(FT_Set_Char_Size(face_,         // handle to face object  
-                                  0,             // char_width in 1/64th of points  
-                                  fontSize * 64, // char_height in 1/64th of points 
-                                  72,            // horizontal device resolution 
-                                  72));          // vertical device resolution
-
-      CheckError(FT_Select_Charmap(face_, FT_ENCODING_UNICODE));
-    }
-    
-
-    Glyph* Render(uint32_t unicode)
-    {
-      if (face_ == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                        "First call LoadFont()");
-      }
-      else if (FT_Load_Char(face_, unicode, FT_LOAD_RENDER) != 0)
-      {
-        // This character is not available
-        return NULL;
-      }
-      else
-      {
-        if (face_->glyph->format != FT_GLYPH_FORMAT_BITMAP)                 
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-          //CheckError(FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1));
-        }
-
-        Orthanc::ImageAccessor bitmap;
-        bitmap.AssignReadOnly(Orthanc::PixelFormat_Grayscale8,
-                              face_->glyph->bitmap.width,
-                              face_->glyph->bitmap.rows,
-                              face_->glyph->bitmap.pitch,
-                              face_->glyph->bitmap.buffer);
-
-        std::unique_ptr<Glyph> glyph(
-          new Glyph(bitmap.GetWidth(),
-                    bitmap.GetHeight(),
-                    face_->glyph->bitmap_left,
-                    -face_->glyph->bitmap_top,  // Positive for an upwards vertical distance
-                    face_->glyph->advance.x >> 6,
-                    face_->glyph->metrics.vertAdvance >> 6));
-
-        glyph->SetPayload(new DynamicBitmap(bitmap));
-        
-        return glyph.release();
-      }
-    }
-  };
-
-
-
-  FontRenderer::FontRenderer() :
-    pimpl_(new PImpl)
-  {
-  }
-
-  
-  void FontRenderer::LoadFont(const std::string& fontContent,
-                              unsigned int fontSize)
-  {
-    pimpl_->LoadFont(fontContent, fontSize);
-  }
-
-  
-  Glyph* FontRenderer::Render(uint32_t unicode)
-  {
-    return pimpl_->Render(unicode);
-  }
-}
--- a/Framework/Fonts/FontRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "Glyph.h"
-
-#include <stdint.h>
-#include <boost/shared_ptr.hpp>
-
-
-namespace OrthancStone
-{
-  class FontRenderer : public boost::noncopyable
-  {
-  private:
-    class PImpl;
-    boost::shared_ptr<PImpl>  pimpl_;
-    
-  public:
-    FontRenderer();
-
-    void LoadFont(const std::string& fontContent,
-                  unsigned int fontSize);
-    
-    Glyph* Render(uint32_t unicode);
-  };
-}
--- a/Framework/Fonts/Glyph.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "Glyph.h"
-
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-  Glyph::Glyph(const Glyph& other) : 
-    width_(other.width_),
-    height_(other.height_),
-    offsetLeft_(other.offsetLeft_),
-    offsetTop_(other.offsetTop_),
-    advanceX_(other.advanceX_),
-    lineHeight_(other.lineHeight_)
-  {
-  }
-  
-    
-  Glyph::Glyph(unsigned int width,
-               unsigned int height,
-               int offsetLeft,
-               int offsetTop,
-               int advanceX,
-               unsigned int lineHeight) :
-    width_(width),
-    height_(height),
-    offsetLeft_(offsetLeft),
-    offsetTop_(offsetTop),
-    advanceX_(advanceX),
-    lineHeight_(lineHeight)
-  {
-  }
-
-  
-  void Glyph::SetPayload(Orthanc::IDynamicObject* payload)  // Takes ownership
-  {
-    if (payload == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-    else
-    {
-      payload_.reset(payload);
-    }
-  }
-
-      
-  const Orthanc::IDynamicObject& Glyph::GetPayload() const
-  {
-    if (payload_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return *payload_;
-    }
-  }
-
-  
-  Orthanc::IDynamicObject* Glyph::ReleasePayload()
-  {
-    if (payload_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return payload_.release();
-    }
-  }
-}
--- a/Framework/Fonts/Glyph.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <Compatibility.h>
-#include <IDynamicObject.h>
-
-#include <memory>
-
-
-namespace OrthancStone
-{
-  class Glyph : public boost::noncopyable
-  {
-  private:
-    unsigned int   width_;
-    unsigned int   height_;
-    int            offsetLeft_;
-    int            offsetTop_;
-    int            advanceX_;
-    unsigned int   lineHeight_;
-      
-    std::unique_ptr<Orthanc::IDynamicObject>  payload_;
-
-  public:
-    // WARNING: This does not copy the payload
-    Glyph(const Glyph& other);
-    
-    Glyph(unsigned int width,
-          unsigned int height,
-          int offsetLeft,
-          int offsetTop,
-          int advanceX,
-          unsigned int lineHeight);
-
-    void SetPayload(Orthanc::IDynamicObject* payload);
-
-    int GetOffsetLeft() const
-    {
-      return offsetLeft_;
-    }
-
-    int GetOffsetTop() const
-    {
-      return offsetTop_;
-    }
-
-    unsigned int GetWidth() const
-    {
-      return width_;
-    }
-
-    unsigned int GetHeight() const
-    {
-      return height_;
-    }
-
-    unsigned int GetAdvanceX() const
-    {
-      return advanceX_;
-    }
-
-    unsigned int GetLineHeight() const
-    {
-      return lineHeight_;
-    }
-
-    bool HasPayload() const
-    {
-      return payload_.get() != NULL;
-    }
-      
-    const Orthanc::IDynamicObject& GetPayload() const;
-      
-    Orthanc::IDynamicObject* ReleasePayload();
-  };
-}
--- a/Framework/Fonts/GlyphAlphabet.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GlyphAlphabet.h"
-
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-
-namespace OrthancStone
-{
-  void GlyphAlphabet::Clear()
-  {
-    for (Content::const_iterator it = content_.begin(); it != content_.end(); ++it)
-    {
-      assert(it->second != NULL);
-      delete it->second;
-    }
-    content_.clear();
-    lineHeight_ = 0;
-  }
-    
-    
-  void GlyphAlphabet::Register(uint32_t unicode,
-                               const Glyph& glyph,
-                               Orthanc::IDynamicObject* payload)
-  {
-    std::unique_ptr<Orthanc::IDynamicObject> protection(payload);
-      
-    // Don't add twice the same character
-    if (content_.find(unicode) == content_.end())
-    {
-      std::unique_ptr<Glyph> raii(new Glyph(glyph));
-        
-      if (payload != NULL)
-      {
-        raii->SetPayload(protection.release());
-      }
-
-      content_[unicode] = raii.release();
-
-      lineHeight_ = std::max(lineHeight_, glyph.GetLineHeight());
-    }
-  }
-
-
-  void GlyphAlphabet::Register(FontRenderer& renderer,
-                               uint32_t unicode)
-  {
-    std::unique_ptr<Glyph>  glyph(renderer.Render(unicode));
-      
-    if (glyph.get() != NULL)
-    {
-      Register(unicode, *glyph, glyph->ReleasePayload());
-    }
-  }
-    
-
-#if ORTHANC_ENABLE_LOCALE == 1
-  bool GlyphAlphabet::GetUnicodeFromCodepage(uint32_t& unicode,
-                                             unsigned int index,
-                                             Orthanc::Encoding encoding)
-  {
-    if (index > 255)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-      
-    std::string character;
-    character.resize(1);
-    character[0] = static_cast<unsigned char>(index);
-    
-    std::string utf8 = Orthanc::Toolbox::ConvertToUtf8(character, encoding, false /* no code extensions */);
-      
-    if (utf8.empty())
-    {
-      // This character is not available in this codepage
-      return false;
-    }
-    else
-    {
-      size_t length;
-      Orthanc::Toolbox::Utf8ToUnicodeCharacter(unicode, length, utf8, 0);
-      assert(length != 0);
-      return true;
-    }
-  }
-#endif
-
-
-  void GlyphAlphabet::Apply(IGlyphVisitor& visitor) const
-  {
-    for (Content::const_iterator it = content_.begin(); it != content_.end(); ++it)
-    {
-      assert(it->second != NULL);
-      visitor.Visit(it->first, *it->second);
-    }
-  }
-
-
-  void GlyphAlphabet::Apply(ITextVisitor& visitor,
-                            const std::string& utf8) const
-  {
-    size_t pos = 0;
-    int x = 0;
-    int y = 0;
-
-    while (pos < utf8.size())
-    {
-      if (utf8[pos] == '\r')
-      {
-        // Ignore carriage return
-        pos++;
-      }
-      else if (utf8[pos] == '\n')
-      {
-        // This is a newline character
-        x = 0;
-        y += static_cast<int>(lineHeight_);
-
-        pos++;
-      }
-      else
-      {         
-        uint32_t unicode;
-        size_t length;
-        Orthanc::Toolbox::Utf8ToUnicodeCharacter(unicode, length, utf8, pos);
-
-        Content::const_iterator glyph = content_.find(unicode);
-
-        if (glyph != content_.end())
-        {
-          assert(glyph->second != NULL);
-          const Orthanc::IDynamicObject* payload =
-            (glyph->second->HasPayload() ? &glyph->second->GetPayload() : NULL);
-            
-          visitor.Visit(unicode,
-                        x + glyph->second->GetOffsetLeft(),
-                        y + glyph->second->GetOffsetTop(),
-                        glyph->second->GetWidth(),
-                        glyph->second->GetHeight(),
-                        payload);
-          x += glyph->second->GetAdvanceX();
-        }
-        
-        assert(length != 0);
-        pos += length;
-      }
-    }
-  }
-}
--- a/Framework/Fonts/GlyphAlphabet.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "FontRenderer.h"
-
-#include <Enumerations.h>
-
-#include <map>
-
-namespace OrthancStone
-{
-  class GlyphAlphabet : public boost::noncopyable
-  {
-  public:
-    class ITextVisitor : public boost::noncopyable
-    {
-    public:
-      virtual ~ITextVisitor()
-      {
-      }
-
-      virtual void Visit(uint32_t unicode,
-                         int x,
-                         int y,
-                         unsigned int width,
-                         unsigned int height,
-                         const Orthanc::IDynamicObject* payload /* can be NULL */) = 0;
-    };
-
-
-    class IGlyphVisitor : public boost::noncopyable
-    {
-    public:
-      virtual ~IGlyphVisitor()
-      {
-      }
-
-      virtual void Visit(uint32_t unicode,
-                         const Glyph& glyph) = 0;
-    };
-
-    
-  private:
-    typedef std::map<uint32_t, Glyph*>  Content;
-
-    Content        content_;
-    unsigned int   lineHeight_;
-
-  public:
-    GlyphAlphabet() :
-      lineHeight_(0)
-    {
-    }
-
-    ~GlyphAlphabet()
-    {
-      Clear();
-    }
-    
-    void Clear();
-    
-    void Register(uint32_t unicode,
-                  const Glyph& glyph,
-                  Orthanc::IDynamicObject* payload);
-
-    void Register(FontRenderer& renderer,
-                  uint32_t unicode);
-
-#if ORTHANC_ENABLE_LOCALE == 1
-    static bool GetUnicodeFromCodepage(uint32_t& unicode,
-                                       unsigned int index,
-                                       Orthanc::Encoding encoding);
-#endif
-
-    size_t GetSize() const
-    {
-      return content_.size();
-    }
-
-    void Apply(IGlyphVisitor& visitor) const;
-
-    void Apply(ITextVisitor& visitor,
-               const std::string& utf8) const;
-  };
-}
--- a/Framework/Fonts/GlyphBitmapAlphabet.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GlyphBitmapAlphabet.h"
-
-#include "TextBoundingBox.h"
-#include "../Toolbox/DynamicBitmap.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-
-namespace OrthancStone
-{
-  class GlyphBitmapAlphabet::RenderTextVisitor : public GlyphAlphabet::ITextVisitor
-  {
-  private:
-    Orthanc::ImageAccessor&     target_;
-    const GlyphBitmapAlphabet&  that_;
-    int                         offsetX_;
-    int                         offsetY_;
-      
-  public:
-    RenderTextVisitor(Orthanc::ImageAccessor&  target,
-                      const GlyphBitmapAlphabet&  that,
-                      int  offsetX,
-                      int  offsetY) :
-      target_(target),
-      that_(that),
-      offsetX_(offsetX),
-      offsetY_(offsetY)
-    {
-    }
-
-    virtual void Visit(uint32_t unicode,
-                       int x,
-                       int y,
-                       unsigned int width,
-                       unsigned int height,
-                       const Orthanc::IDynamicObject* payload)
-    {
-      int left = x + offsetX_;
-      int top = y + offsetY_;
-
-      assert(payload != NULL);
-      const DynamicBitmap& glyph = *dynamic_cast<const DynamicBitmap*>(payload);
-        
-      assert(left >= 0 &&
-             top >= 0 &&
-             static_cast<unsigned int>(left) + width <= target_.GetWidth() &&
-             static_cast<unsigned int>(top) + height <= target_.GetHeight() &&
-             width == glyph.GetBitmap().GetWidth() &&
-             height == glyph.GetBitmap().GetHeight());
-        
-      {
-        Orthanc::ImageAccessor region;
-        target_.GetRegion(region, left, top, width, height);
-        Orthanc::ImageProcessing::Copy(region, glyph.GetBitmap());
-      }
-    }
-  };
-  
-    
-#if ORTHANC_ENABLE_LOCALE == 1
-  void GlyphBitmapAlphabet::LoadCodepage(FontRenderer& renderer,
-                                         Orthanc::Encoding codepage)
-  {
-    for (unsigned int i = 0; i < 256; i++)
-    {
-      uint32_t unicode;
-      if (GlyphAlphabet::GetUnicodeFromCodepage(unicode, i, codepage))
-      {
-        AddUnicodeCharacter(renderer, unicode);
-      }
-    }
-  }
-#endif
-
-    
-  Orthanc::ImageAccessor* GlyphBitmapAlphabet::RenderText(const std::string& utf8) const
-  {
-    TextBoundingBox box(alphabet_, utf8);
-
-    std::unique_ptr<Orthanc::ImageAccessor> bitmap(
-      new Orthanc::Image(Orthanc::PixelFormat_Grayscale8,
-                         box.GetWidth(), box.GetHeight(),
-                         true /* force minimal pitch */));
-
-    Orthanc::ImageProcessing::Set(*bitmap, 0);
-
-    RenderTextVisitor visitor(*bitmap, *this, -box.GetLeft(), -box.GetTop());
-    alphabet_.Apply(visitor, utf8);
-
-    return bitmap.release();
-  }
-}
--- a/Framework/Fonts/GlyphBitmapAlphabet.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "GlyphAlphabet.h"
-
-#include <Images/ImageAccessor.h>
-
-namespace OrthancStone
-{
-  class GlyphBitmapAlphabet : public boost::noncopyable
-  {
-  private:
-    class RenderTextVisitor;
-
-    GlyphAlphabet  alphabet_;
-
-  public:
-    const GlyphAlphabet& GetAlphabet() const
-    {
-      return alphabet_;
-    }    
-    
-    void AddUnicodeCharacter(FontRenderer& renderer,
-                             uint32_t unicode)
-    {
-      alphabet_.Register(renderer, unicode);
-    }
-
-
-#if ORTHANC_ENABLE_LOCALE == 1
-    void LoadCodepage(FontRenderer& renderer,
-                      Orthanc::Encoding codepage);
-#endif
-    
-    
-    Orthanc::ImageAccessor* RenderText(const std::string& utf8) const;
-  };
-}
--- a/Framework/Fonts/GlyphTextureAlphabet.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,304 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GlyphTextureAlphabet.h"
-
-#include "TextBoundingBox.h"
-#include "../Toolbox/DynamicBitmap.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-
-#if defined(__EMSCRIPTEN__)
-/* 
-Avoid this error:
-.../boost/math/special_functions/round.hpp:86:12: warning: implicit conversion from 'std::__2::numeric_limits<int>::type' (aka 'int') to 'float' changes value from 2147483647 to 2147483648 [-Wimplicit-int-float-conversion]
-.../boost/math/special_functions/round.hpp:93:11: note: in instantiation of function template specialization 'boost::math::iround<float, boost::math::policies::policy<boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >' requested here
-.../orthanc-stone/Framework/Fonts/GlyphTextureAlphabet.cpp:92:28: note: in instantiation of function template specialization 'boost::math::iround<float>' requested here
-*/
-#pragma GCC diagnostic ignored "-Wimplicit-int-float-conversion"
-#endif 
-
-#include <boost/math/special_functions/round.hpp>
-
-namespace OrthancStone
-{
-  class GlyphTextureAlphabet::GlyphSizeVisitor : public GlyphAlphabet::IGlyphVisitor
-  {
-  private:
-    unsigned int maxWidth_;
-    unsigned int maxHeight_;
-
-  public:
-    GlyphSizeVisitor() :
-      maxWidth_(0),
-      maxHeight_(0)
-    {
-    }
-      
-    virtual void Visit(uint32_t unicode,
-                       const Glyph& glyph)
-    {
-      maxWidth_ = std::max(maxWidth_, glyph.GetWidth());
-      maxHeight_ = std::max(maxHeight_, glyph.GetHeight());
-    }
-
-    unsigned int GetMaxWidth() const
-    {
-      return maxWidth_;
-    }
-
-    unsigned int GetMaxHeight() const
-    {
-      return maxHeight_;
-    }
-  };
-
-    
-  class GlyphTextureAlphabet::TextureGenerator : public GlyphAlphabet::IGlyphVisitor
-  {
-  private:
-    std::unique_ptr<Orthanc::ImageAccessor>  texture_;
-
-    unsigned int    countColumns_;
-    unsigned int    countRows_;
-    GlyphAlphabet&  targetAlphabet_;
-    unsigned int    glyphMaxWidth_;
-    unsigned int    glyphMaxHeight_;
-    unsigned int    column_;
-    unsigned int    row_;
-
-  public:
-    TextureGenerator(GlyphAlphabet& targetAlphabet,
-                     unsigned int countGlyphs,
-                     unsigned int glyphMaxWidth,
-                     unsigned int glyphMaxHeight) :
-      targetAlphabet_(targetAlphabet),
-      glyphMaxWidth_(glyphMaxWidth),
-      glyphMaxHeight_(glyphMaxHeight),
-      column_(0),
-      row_(0)
-    {
-      int c = boost::math::iround<float>(sqrt(static_cast<float>(countGlyphs)));
-
-      if (c <= 0)
-      {
-        countColumns_ = 1;
-      }
-      else
-      {
-        countColumns_ = static_cast<unsigned int>(c);
-      }
-
-      countRows_ = countGlyphs / countColumns_;
-      if (countGlyphs % countColumns_ != 0)
-      {
-        countRows_++;
-      }
-
-      texture_.reset(new Orthanc::Image(Orthanc::PixelFormat_RGBA32,
-                                        countColumns_ * glyphMaxWidth_,
-                                        countRows_ * glyphMaxHeight_,
-                                        true /* force minimal pitch */));
-
-      Orthanc::ImageProcessing::Set(*texture_, 0, 0, 0, 0);
-    }
-      
-      
-    virtual void Visit(uint32_t unicode,
-                       const Glyph& glyph)
-    {
-      if (!glyph.HasPayload())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-
-      if (column_ >= countColumns_ ||
-          row_ >= countRows_)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      unsigned int x = column_ * glyphMaxWidth_;
-      unsigned int y = row_ * glyphMaxHeight_;
-
-      const Orthanc::ImageAccessor& source = dynamic_cast<const DynamicBitmap&>(glyph.GetPayload()).GetBitmap();
-
-      if (source.GetFormat() != Orthanc::PixelFormat_Grayscale8)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-        
-      targetAlphabet_.Register(unicode, glyph, new TextureLocation(x, y));
-
-      Orthanc::ImageAccessor target;
-      texture_->GetRegion(target, x, y, source.GetWidth(), source.GetHeight());
-
-      //Orthanc::ImageProcessing::Copy(target, bitmap->GetBitmap());
-
-      for (unsigned int y = 0; y < source.GetHeight(); y++)
-      {
-        const uint8_t* p = reinterpret_cast<const uint8_t*>(source.GetConstRow(y));
-        uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
-
-        for (unsigned int x = 0; x < source.GetWidth(); x++)
-        {
-          // Premultiplied alpha
-          q[0] = 0;
-          q[1] = 0;
-          q[2] = 0;
-          q[3] = *p;
-            
-          p++;
-          q += 4;
-        }
-      }
-        
-      column_++;
-      if (column_ == countColumns_)
-      {
-        column_ = 0;
-        row_++;
-      }
-    }
-
-
-    Orthanc::ImageAccessor* ReleaseTexture()
-    {
-      return texture_.release();
-    }
-  };
-
-
-  class GlyphTextureAlphabet::RenderTextVisitor : public GlyphAlphabet::ITextVisitor
-  {
-  private:
-    Orthanc::ImageAccessor&        target_;
-    const Orthanc::ImageAccessor&  texture_;
-    int                            offsetX_;
-    int                            offsetY_;
-      
-  public:
-    RenderTextVisitor(Orthanc::ImageAccessor&  target,
-                      const GlyphTextureAlphabet&  that,
-                      int  offsetX,
-                      int  offsetY) :
-      target_(target),
-      texture_(that.GetTexture()),
-      offsetX_(offsetX),
-      offsetY_(offsetY)
-    {
-    }
-
-    virtual void Visit(uint32_t unicode,
-                       int x,
-                       int y,
-                       unsigned int width,
-                       unsigned int height,
-                       const Orthanc::IDynamicObject* payload)
-    {
-      int left = x + offsetX_;
-      int top = y + offsetY_;
-
-      assert(payload != NULL);
-      const TextureLocation& location = *dynamic_cast<const TextureLocation*>(payload);
-        
-      assert(left >= 0 &&
-             top >= 0 &&
-             static_cast<unsigned int>(left) + width <= target_.GetWidth() &&
-             static_cast<unsigned int>(top) + height <= target_.GetHeight());
-        
-      {
-        Orthanc::ImageAccessor to;
-        target_.GetRegion(to, left, top, width, height);
-
-        Orthanc::ImageAccessor from;
-        texture_.GetRegion(from, location.GetX(), location.GetY(), width, height);
-                                       
-        Orthanc::ImageProcessing::Copy(to, from);
-      }
-    }
-  };
-
-    
-  GlyphTextureAlphabet::GlyphTextureAlphabet(const GlyphBitmapAlphabet& sourceAlphabet) :
-    textureWidth_(0),
-    textureHeight_(0)
-  {
-    GlyphSizeVisitor size;
-    sourceAlphabet.GetAlphabet().Apply(size);
-
-    TextureGenerator generator(alphabet_,
-      static_cast<unsigned int>(sourceAlphabet.GetAlphabet().GetSize()),
-      size.GetMaxWidth(),
-      size.GetMaxHeight());
-    sourceAlphabet.GetAlphabet().Apply(generator);
-
-    texture_.reset(generator.ReleaseTexture());
-    textureWidth_ = texture_->GetWidth();
-    textureHeight_ = texture_->GetHeight();
-  }
-
-    
-  const Orthanc::ImageAccessor& GlyphTextureAlphabet::GetTexture() const
-  {
-    if (texture_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return *texture_;
-    }
-  }
-    
-    
-  Orthanc::ImageAccessor* GlyphTextureAlphabet::ReleaseTexture()
-  {
-    if (texture_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return texture_.release();
-    }
-  }
-    
-
-  Orthanc::ImageAccessor* GlyphTextureAlphabet::RenderText(const std::string& utf8)
-  {
-    TextBoundingBox box(alphabet_, utf8);
-
-    std::unique_ptr<Orthanc::ImageAccessor> bitmap(
-      new Orthanc::Image(Orthanc::PixelFormat_RGBA32,
-                         box.GetWidth(), box.GetHeight(),
-                         true /* force minimal pitch */));
-
-    Orthanc::ImageProcessing::Set(*bitmap, 0, 0, 0, 0);
-
-    RenderTextVisitor visitor(*bitmap, *this, -box.GetLeft(), -box.GetTop());
-    alphabet_.Apply(visitor, utf8);
-
-    return bitmap.release();
-  }
-}
--- a/Framework/Fonts/GlyphTextureAlphabet.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "GlyphBitmapAlphabet.h"
-
-#include <Images/ImageAccessor.h>
-
-namespace OrthancStone
-{
-  class GlyphTextureAlphabet : public boost::noncopyable
-  {
-  public:
-    class TextureLocation : public Orthanc::IDynamicObject
-    {
-    private:
-      unsigned int  x_;
-      unsigned int  y_;
-
-    public:
-      TextureLocation(unsigned int x,
-                      unsigned int y) :
-        x_(x),
-        y_(y)
-      {
-      }
-
-      unsigned int GetX() const
-      {
-        return x_;
-      }
-
-      unsigned int GetY() const
-      {
-        return y_;
-      }
-    };
-
-  private:
-    class GlyphSizeVisitor;
-    class TextureGenerator;
-    class RenderTextVisitor;
-    
-    GlyphAlphabet                          alphabet_;
-    std::unique_ptr<Orthanc::ImageAccessor>  texture_;
-    unsigned int                           textureWidth_;
-    unsigned int                           textureHeight_;
-    
-  public:
-    GlyphTextureAlphabet(const GlyphBitmapAlphabet& sourceAlphabet);
-    
-    const Orthanc::ImageAccessor& GetTexture() const;
-    
-    Orthanc::ImageAccessor* ReleaseTexture();
-
-    Orthanc::ImageAccessor* RenderText(const std::string& utf8);
-
-    const GlyphAlphabet& GetAlphabet() const
-    {
-      return alphabet_;
-    }
-
-    unsigned int GetTextureWidth() const
-    {
-      return textureWidth_;
-    }
-
-    unsigned int GetTextureHeight() const
-    {
-      return textureHeight_;
-    }
-  };
-}
--- a/Framework/Fonts/OpenGLTextCoordinates.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLTextCoordinates.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    void OpenGLTextCoordinates::Visit(uint32_t unicode,
-                                      int x,
-                                      int y,
-                                      unsigned int width,
-                                      unsigned int height,
-                                      const Orthanc::IDynamicObject* payload)
-    {
-      // Rendering coordinates
-      float rx1 = static_cast<float>(x - box_.GetLeft());
-      float ry1 = static_cast<float>(y - box_.GetTop());
-      float rx2 = rx1 + static_cast<float>(width);
-      float ry2 = ry1 + static_cast<float>(height);
-
-      // Texture coordinates
-      assert(payload != NULL);
-      const GlyphTextureAlphabet::TextureLocation& location =
-        *dynamic_cast<const GlyphTextureAlphabet::TextureLocation*>(payload);
-
-      float tx1 = location.GetX() / textureWidth_;
-      float ty1 = location.GetY() / textureHeight_;
-      float tx2 = tx1 + (static_cast<float>(width) / textureWidth_);
-      float ty2 = ty1 + (static_cast<float>(height) / textureHeight_);
-
-      const float rpos[6][2] = {
-        { rx1, ry1 },
-        { rx1, ry2 },
-        { rx2, ry1 },
-        { rx2, ry1 },
-        { rx1, ry2 },
-        { rx2, ry2 }
-      };
-
-      const float tpos[6][2] = {
-        { tx1, ty1 },
-        { tx1, ty2 },
-        { tx2, ty1 },
-        { tx2, ty1 },
-        { tx1, ty2 },
-        { tx2, ty2 }
-      };
-
-      for (unsigned int i = 0; i < 6; i++)
-      {
-        renderingCoords_.push_back(rpos[i][0]);
-        renderingCoords_.push_back(rpos[i][1]);
-        textureCoords_.push_back(tpos[i][0]);
-        textureCoords_.push_back(tpos[i][1]);
-      }
-    }
-
-
-    OpenGLTextCoordinates::OpenGLTextCoordinates(const GlyphTextureAlphabet& alphabet,
-                                                 const std::string& utf8) :
-      box_(alphabet.GetAlphabet(), utf8),
-      textureWidth_(static_cast<float>(alphabet.GetTextureWidth())),
-      textureHeight_(static_cast<float>(alphabet.GetTextureHeight()))
-    {
-      if (textureWidth_ <= 0 ||
-          textureHeight_ <= 0)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-      
-      width_ = static_cast<float>(box_.GetWidth());
-      height_ = static_cast<float>(box_.GetHeight());
-
-      // Each character is made of two 2D triangles (= 2 * 3 * 2 = 12)
-      renderingCoords_.reserve(box_.GetCharactersCount() * 12);
-      textureCoords_.reserve(box_.GetCharactersCount() * 12);
-
-      alphabet.GetAlphabet().Apply(*this, utf8);
-    }
-
-
-    const std::vector<float>& OpenGLTextCoordinates::GetRenderingCoords() const
-    {
-      assert(renderingCoords_.size() == textureCoords_.size());
-      return renderingCoords_;
-    }
-
-    
-    const std::vector<float>& OpenGLTextCoordinates::GetTextureCoords() const
-    {
-      assert(renderingCoords_.size() == textureCoords_.size());
-      return textureCoords_;
-    }
-  }
-}
--- a/Framework/Fonts/OpenGLTextCoordinates.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "GlyphTextureAlphabet.h"
-#include "TextBoundingBox.h"
-
-#include <vector>
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    class OpenGLTextCoordinates : protected GlyphAlphabet::ITextVisitor
-    {
-    private:
-      TextBoundingBox     box_;
-      float               width_;
-      float               height_;
-      std::vector<float>  renderingCoords_;
-      std::vector<float>  textureCoords_;
-      float               textureWidth_;
-      float               textureHeight_;
-    
-    protected:
-      virtual void Visit(uint32_t unicode,
-                         int x,
-                         int y,
-                         unsigned int width,
-                         unsigned int height,
-                         const Orthanc::IDynamicObject* payload);
-
-    public:
-      OpenGLTextCoordinates(const GlyphTextureAlphabet& alphabet,
-                            const std::string& utf8);
-
-      unsigned int GetTextWidth() const
-      {
-        return box_.GetWidth();
-      }
-
-      unsigned int GetTextHeight() const
-      {
-        return box_.GetHeight();
-      }
-
-      bool IsEmpty() const
-      {
-        return renderingCoords_.empty();
-      }
-
-      const std::vector<float>& GetRenderingCoords() const;
-
-      const std::vector<float>& GetTextureCoords() const;
-    };
-  }
-}
--- a/Framework/Fonts/TextBoundingBox.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "TextBoundingBox.h"
-
-namespace OrthancStone
-{
-  void TextBoundingBox::AddPoint(int x,
-                                 int y)
-  {
-    left_ = std::min(left_, x);
-    right_ = std::max(right_, x);
-    top_ = std::min(top_, y);
-    bottom_ = std::max(bottom_, y);
-  }
-
-
-  void TextBoundingBox::Clear()
-  {
-    left_ = 0;
-    top_ = 0;
-    right_ = 0;
-    bottom_ = 0;
-    countCharacters_ = 0;
-  }
-
-
-  void TextBoundingBox::Visit(uint32_t unicode,
-                              int x,
-                              int y,
-                              unsigned int width,
-                              unsigned int height,
-                              const Orthanc::IDynamicObject* payload /* ignored */)
-  {
-    AddPoint(x, y);
-    AddPoint(x + static_cast<int>(width),
-             y + static_cast<int>(height));
-    countCharacters_++;
-  }
-
-
-  TextBoundingBox::TextBoundingBox(const GlyphAlphabet& alphabet,
-                                   const std::string& utf8)
-  {
-    Clear();
-    alphabet.Apply(*this, utf8);
-  }
-
-
-  unsigned int TextBoundingBox::GetWidth() const
-  {
-    assert(left_ <= right_);
-    return static_cast<unsigned int>(right_ - left_ + 1);
-  }
-
-  
-  unsigned int TextBoundingBox::GetHeight() const
-  {
-    assert(top_ <= bottom_);
-    return static_cast<unsigned int>(bottom_ - top_ + 1);
-  }
-}
--- a/Framework/Fonts/TextBoundingBox.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "GlyphAlphabet.h"
-
-namespace OrthancStone
-{
-  class TextBoundingBox : protected GlyphAlphabet::ITextVisitor
-  {
-  private:
-    int          left_;
-    int          top_;
-    int          right_;
-    int          bottom_;
-    unsigned int countCharacters_;
-
-    void AddPoint(int x,
-                  int y);
-
-    void Clear();
-
-  protected:
-    virtual void Visit(uint32_t unicode,
-                       int x,
-                       int y,
-                       unsigned int width,
-                       unsigned int height,
-                       const Orthanc::IDynamicObject* payload /* ignored */);
-
-  public:
-    TextBoundingBox(const GlyphAlphabet& alphabet,
-                    const std::string& utf8);
-
-    int GetLeft() const
-    {
-      return left_;
-    }
-
-    int GetTop() const
-    {
-      return top_;
-    }
-
-    unsigned int GetWidth() const;
-
-    unsigned int GetHeight() const;
-
-    unsigned int GetCharactersCount() const
-    {
-      return countCharacters_;
-    }
-  };
-}
--- a/Framework/Loaders/BasicFetchingItemsSorter.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "BasicFetchingItemsSorter.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  BasicFetchingItemsSorter::BasicFetchingItemsSorter(unsigned int itemsCount) :
-    itemsCount_(itemsCount)
-  {
-    if (itemsCount == 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  void BasicFetchingItemsSorter::Sort(std::vector<unsigned int>& target,
-                                      unsigned int current)
-  {
-    if (current >= itemsCount_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    target.clear();
-    target.reserve(itemsCount_);
-    target.push_back(current);
-
-    const unsigned int countBelow = current;
-    const unsigned int countAbove = (itemsCount_ - 1) - current;
-    const unsigned int n = std::min(countBelow, countAbove);
-
-    for (unsigned int i = 1; i <= n; i++)
-    {
-      assert(current + i < itemsCount_ &&
-             current >= i);
-      target.push_back(current + i);
-      target.push_back(current - i);
-    }
-
-    for (unsigned int i = current - n; i > 0; i--)
-    {
-      target.push_back(i - 1);
-    }
-
-    for (unsigned int i = current + n + 1; i < itemsCount_; i++)
-    {
-      target.push_back(i);
-    }
-
-    assert(target.size() == itemsCount_);
-  }
-}
--- a/Framework/Loaders/BasicFetchingItemsSorter.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IFetchingItemsSorter.h"
-
-namespace OrthancStone
-{
-  class BasicFetchingItemsSorter : public IFetchingItemsSorter
-  {
-  private:
-    unsigned int  itemsCount_;
-
-  public:
-    class Factory : public IFactory
-    {
-    public:
-      virtual IFetchingItemsSorter* CreateSorter(unsigned int itemsCount) const
-      {
-        return new BasicFetchingItemsSorter(itemsCount);
-      }
-    };
-
-    BasicFetchingItemsSorter(unsigned int itemsCount);
-
-    virtual unsigned int GetItemsCount() const
-    {
-      return itemsCount_;
-    }
-
-    virtual void Sort(std::vector<unsigned int>& target,
-                      unsigned int current);
-  };
-}
--- a/Framework/Loaders/BasicFetchingStrategy.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "BasicFetchingStrategy.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  void BasicFetchingStrategy::Schedule(unsigned int item,
-                                       unsigned int quality)
-  {
-    assert(item < GetItemsCount() &&
-           quality <= maxQuality_);
-      
-    if (nextQuality_[item] <= quality)
-    {
-      content_.push_back(ContentItem(item, quality));
-    }
-  }
-    
-
-  BasicFetchingStrategy::BasicFetchingStrategy(IFetchingItemsSorter* sorter,   // Takes ownership
-                                               unsigned int maxQuality) :
-    sorter_(sorter),
-    maxQuality_(maxQuality),
-    position_(0),
-    blockSize_(2)
-  {
-    if (sorter == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    nextQuality_.resize(sorter_->GetItemsCount(), 0);   // Does not change along calls to "SetCurrent()"
-      
-    SetCurrent(0);
-  }
-
-
-  void BasicFetchingStrategy::SetBlockSize(unsigned int size)
-  {
-    if (size <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    blockSize_ = size;
-  }
-
-  
-  bool BasicFetchingStrategy::GetNext(unsigned int& item,
-                                      unsigned int& quality)
-  {
-    if (position_ >= content_.size())
-    {
-      return false;
-    }
-    else
-    {
-      item = content_[position_].GetItem();       
-      quality = content_[position_].GetQuality();
-
-      assert(nextQuality_[item] <= quality);
-      nextQuality_[item] = quality + 1;
-
-      position_ ++;
-      return true;
-    }
-  }
-
-  
-  void BasicFetchingStrategy::SetCurrent(unsigned int item)
-  {
-    // TODO - This function is O(N) complexity where "N" is the
-    // number of items times the max quality. Could use a LRU index.
-
-    position_ = 0;
-      
-    std::vector<unsigned int> v;
-    sorter_->Sort(v, item);
-
-    assert(v.size() == GetItemsCount());
-
-    if (v.size() == 0)
-    {
-      return;
-    }
-      
-    content_.clear();
-    content_.reserve(v.size() * maxQuality_);
-
-    Schedule(v.front(), maxQuality_);
-
-    for (unsigned int q = 0; q <= maxQuality_; q++)
-    {
-      unsigned int start = 1 + q * blockSize_;
-      unsigned int end = start + blockSize_;
-
-      if (q == maxQuality_ ||
-          end > v.size())
-      {
-        end = static_cast<int>(v.size());
-      }
-
-      unsigned int a = 0;
-      if (maxQuality_ >= q + 1)
-      {
-        a = maxQuality_ - q - 1;
-      }
-        
-      for (unsigned int j = a; j <= maxQuality_; j++)
-      {
-        for (unsigned int i = start; i < end; i++)
-        {
-          Schedule(v[i], j);
-        }
-      }
-    }
-  }
-
-  
-  void BasicFetchingStrategy::RecycleFurthest(unsigned int& item)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-  }
-}
--- a/Framework/Loaders/BasicFetchingStrategy.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IFetchingItemsSorter.h"
-#include "IFetchingStrategy.h"
-
-#include <Compatibility.h>
-
-#include <memory>
-
-namespace OrthancStone
-{
-  class BasicFetchingStrategy : public IFetchingStrategy
-  {
-  private:
-    class ContentItem
-    {
-    private:
-      unsigned int  item_;
-      unsigned int  quality_;
-
-    public:
-      ContentItem(unsigned int item,
-           unsigned int quality) :
-        item_(item),
-        quality_(quality)
-      {
-      }
-
-      unsigned int GetItem() const
-      {
-        return item_;
-      }
-
-      unsigned int GetQuality() const
-      {
-        return quality_;
-      }
-    };
-
-    std::unique_ptr<IFetchingItemsSorter>  sorter_;
-    std::vector<unsigned int>            nextQuality_;
-    unsigned int                         maxQuality_;
-    std::vector<ContentItem>             content_;
-    size_t                               position_;
-    unsigned int                         blockSize_;
-
-    void Schedule(unsigned int item,
-                  unsigned int quality);
-    
-  public:
-    BasicFetchingStrategy(IFetchingItemsSorter* sorter,   // Takes ownership
-                          unsigned int maxQuality);
-
-    virtual unsigned int GetItemsCount() const
-    {
-      return sorter_->GetItemsCount();
-    }
-
-    virtual unsigned int GetMaxQuality() const
-    {
-      return maxQuality_;
-    }
-
-    // WARNING - This parameters is only considered during the next
-    // call to SetCurrent().
-    void SetBlockSize(unsigned int size);
-
-    virtual bool GetNext(unsigned int& item,
-                         unsigned int& quality);
-    
-    virtual void SetCurrent(unsigned int item);
-
-    virtual void RecycleFurthest(unsigned int& item);
-  };
-}
--- a/Framework/Loaders/DicomResourcesLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,910 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomResourcesLoader.h"
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error The macro ORTHANC_ENABLE_DCMTK must be defined
-#endif
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include "../Oracle/ParseDicomFromFileCommand.h"
-#  include <DicomParsing/ParsedDicomDir.h>
-#  include <DicomParsing/ParsedDicomFile.h>
-#endif
-
-#include <boost/filesystem/path.hpp>
-
-namespace OrthancStone
-{
-  static std::string GetUri(Orthanc::ResourceType level)
-  {
-    switch (level)
-    {
-      case Orthanc::ResourceType_Patient:
-        return "patients";
-        
-      case Orthanc::ResourceType_Study:
-        return "studies";
-        
-      case Orthanc::ResourceType_Series:
-        return "series";
-        
-      case Orthanc::ResourceType_Instance:
-        return "instances";
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  class DicomResourcesLoader::Handler : public Orthanc::IDynamicObject
-  {
-  private:
-    boost::shared_ptr<DicomResourcesLoader>     loader_;
-    boost::shared_ptr<LoadedDicomResources>     target_;
-    int                                         priority_;
-    DicomSource                                 source_;
-    boost::shared_ptr<Orthanc::IDynamicObject>  userPayload_;
-
-  public:
-    Handler(boost::shared_ptr<DicomResourcesLoader> loader,
-            boost::shared_ptr<LoadedDicomResources> target,
-            int priority,
-            const DicomSource& source,
-            boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
-      loader_(loader),
-      target_(target),
-      priority_(priority),
-      source_(source),
-      userPayload_(userPayload)
-    {
-      if (!loader ||
-          !target)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-      
-    virtual ~Handler()
-    {
-    }
-
-    void BroadcastSuccess()
-    {
-      SuccessMessage message(*loader_, target_, priority_, source_, userPayload_.get());
-      loader_->BroadcastMessage(message);
-    }
-
-    boost::shared_ptr<DicomResourcesLoader> GetLoader()
-    {
-      assert(loader_);
-      return loader_;
-    }
-
-    boost::shared_ptr<LoadedDicomResources> GetTarget()
-    {
-      assert(target_);
-      return target_;
-    }
-
-    int GetPriority() const
-    {
-      return priority_;
-    }
-
-    const DicomSource& GetSource() const
-    {
-      return source_;
-    }
-
-    const boost::shared_ptr<Orthanc::IDynamicObject> GetUserPayload() const
-    {
-      return userPayload_;
-    }
-  };
-
-
-  class DicomResourcesLoader::StringHandler : public DicomResourcesLoader::Handler
-  {
-  public:
-    StringHandler(boost::shared_ptr<DicomResourcesLoader> loader,
-                  boost::shared_ptr<LoadedDicomResources> target,
-                  int priority,
-                  const DicomSource& source,
-                  boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
-      Handler(loader, target, priority, source, userPayload)
-    {
-    }
-
-    virtual void HandleJson(const Json::Value& body) = 0;
-      
-    virtual void HandleString(const std::string& body)
-    {
-      Json::Reader reader;
-      Json::Value value;
-      if (reader.parse(body, value))
-      {
-        HandleJson(value);
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-    }
-  };
-
-
-  class DicomResourcesLoader::DicomWebHandler : public StringHandler
-  {
-  public:
-    DicomWebHandler(boost::shared_ptr<DicomResourcesLoader> loader,
-                    boost::shared_ptr<LoadedDicomResources> target,
-                    int priority,
-                    const DicomSource& source,
-                    boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
-      StringHandler(loader, target, priority, source, userPayload)
-    {
-    }
-
-    virtual void HandleJson(const Json::Value& body)
-    {
-      GetTarget()->AddFromDicomWeb(body);
-      BroadcastSuccess();
-    }
-  };
-
-
-  class DicomResourcesLoader::OrthancHandler : public StringHandler
-  {
-  private:
-    boost::shared_ptr<unsigned int>  remainingCommands_;
-
-  protected:
-    void CloseCommand()
-    {
-      assert(remainingCommands_);
-        
-      if (*remainingCommands_ == 0)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-
-      (*remainingCommands_) --;
-
-      if (*remainingCommands_ == 0)
-      {
-        BroadcastSuccess();
-      }
-    }
-      
-  public:
-    OrthancHandler(boost::shared_ptr<DicomResourcesLoader> loader,
-                   boost::shared_ptr<LoadedDicomResources> target,
-                   int priority,
-                   const DicomSource& source,
-                   boost::shared_ptr<unsigned int> remainingCommands,
-                   boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
-      StringHandler(loader, target, priority, source, userPayload),
-      remainingCommands_(remainingCommands)
-    {
-      if (!remainingCommands)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-
-      (*remainingCommands) ++;
-    }
-
-    boost::shared_ptr<unsigned int> GetRemainingCommands()
-    {
-      assert(remainingCommands_);
-      return remainingCommands_;
-    }
-  };
-
-    
-  class DicomResourcesLoader::OrthancInstanceTagsHandler : public OrthancHandler
-  {
-  public:
-    OrthancInstanceTagsHandler(boost::shared_ptr<DicomResourcesLoader> loader,
-                               boost::shared_ptr<LoadedDicomResources> target,
-                               int priority,
-                               const DicomSource& source,
-                               boost::shared_ptr<unsigned int> remainingCommands,
-                               boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
-      OrthancHandler(loader, target, priority, source, remainingCommands, userPayload)
-    {
-    }
-
-    virtual void HandleJson(const Json::Value& body)
-    {
-      GetTarget()->AddFromOrthanc(body);
-      CloseCommand();
-    }
-  };
-
-    
-  class DicomResourcesLoader::OrthancOneChildInstanceHandler : public OrthancHandler
-  {
-  public:
-    OrthancOneChildInstanceHandler(boost::shared_ptr<DicomResourcesLoader> loader,
-                                   boost::shared_ptr<LoadedDicomResources> target,
-                                   int  priority,
-                                   const DicomSource& source,
-                                   boost::shared_ptr<unsigned int> remainingCommands,
-                                   boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
-      OrthancHandler(loader, target, priority, source, remainingCommands, userPayload)
-    {
-    }
-
-    virtual void HandleJson(const Json::Value& body)
-    {
-      static const char* const ID = "ID";
-      
-      if (body.type() == Json::arrayValue)
-      {
-        if (body.size() > 0)
-        {
-          if (body[0].type() == Json::objectValue &&
-              body[0].isMember(ID) &&
-              body[0][ID].type() == Json::stringValue)
-          {
-            GetLoader()->ScheduleLoadOrthancInstanceTags
-              (GetTarget(), GetPriority(), GetSource(), body[0][ID].asString(), GetRemainingCommands(), GetUserPayload());
-            CloseCommand();
-          }
-          else
-          {
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-          }
-        }
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-    }
-  };
-
-
-  class DicomResourcesLoader::OrthancAllChildrenInstancesHandler : public OrthancHandler
-  {
-  private:
-    Orthanc::ResourceType  bottomLevel_;
-
-  public:
-    OrthancAllChildrenInstancesHandler(boost::shared_ptr<DicomResourcesLoader> loader,
-                                       boost::shared_ptr<LoadedDicomResources> target,
-                                       int  priority,
-                                       const DicomSource& source,
-                                       boost::shared_ptr<unsigned int> remainingCommands,
-                                       Orthanc::ResourceType bottomLevel,
-                                       boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
-      OrthancHandler(loader, target, priority, source, remainingCommands, userPayload),
-      bottomLevel_(bottomLevel)
-    {
-    }
-
-    virtual void HandleJson(const Json::Value& body)
-    {
-      static const char* const ID = "ID";
-      static const char* const INSTANCES = "Instances";
-
-      if (body.type() == Json::arrayValue)
-      {
-        for (Json::Value::ArrayIndex i = 0; i < body.size(); i++)
-        {
-          switch (bottomLevel_)
-          {
-            case Orthanc::ResourceType_Patient:
-            case Orthanc::ResourceType_Study:
-              if (body[i].type() == Json::objectValue &&
-                  body[i].isMember(ID) &&
-                  body[i][ID].type() == Json::stringValue)
-              {
-                GetLoader()->ScheduleLoadOrthancOneChildInstance
-                  (GetTarget(), GetPriority(), GetSource(), bottomLevel_,
-                   body[i][ID].asString(), GetRemainingCommands(), GetUserPayload());
-              }
-              else
-              {
-                throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-              }
-              
-              break;
-            
-            case Orthanc::ResourceType_Series:
-              // At the series level, avoid a call to
-              // "/series/.../instances", as we already have this
-              // information in the JSON
-              if (body[i].type() == Json::objectValue &&
-                  body[i].isMember(INSTANCES) &&
-                  body[i][INSTANCES].type() == Json::arrayValue)
-              {
-                if (body[i][INSTANCES].size() > 0)
-                {
-                  if (body[i][INSTANCES][0].type() == Json::stringValue)
-                  {
-                    GetLoader()->ScheduleLoadOrthancInstanceTags
-                      (GetTarget(), GetPriority(), GetSource(),
-                       body[i][INSTANCES][0].asString(), GetRemainingCommands(), GetUserPayload());
-                  }
-                  else
-                  {
-                    throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-                  }
-                }
-              }
-
-              break;
-
-            case Orthanc::ResourceType_Instance:
-              if (body[i].type() == Json::objectValue &&
-                  body[i].isMember(ID) &&
-                  body[i][ID].type() == Json::stringValue)
-              {
-                GetLoader()->ScheduleLoadOrthancInstanceTags
-                  (GetTarget(), GetPriority(), GetSource(),
-                   body[i][ID].asString(), GetRemainingCommands(), GetUserPayload());
-              }
-              else
-              {
-                throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-              }
-
-              break;
-
-            default:
-              throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-          }
-        }
-      }
-      
-      CloseCommand();
-    }
-  };
-
-
-#if ORTHANC_ENABLE_DCMTK == 1
-  static void ExploreDicomDir(OrthancStone::LoadedDicomResources& instances,
-                              const Orthanc::ParsedDicomDir& dicomDir,
-                              Orthanc::ResourceType level,
-                              size_t index,
-                              const Orthanc::DicomMap& parent)
-  {
-    std::string expectedType;
-
-    switch (level)
-    {
-      case Orthanc::ResourceType_Patient:
-        expectedType = "PATIENT";
-        break;
-
-      case Orthanc::ResourceType_Study:
-        expectedType = "STUDY";
-        break;
-
-      case Orthanc::ResourceType_Series:
-        expectedType = "SERIES";
-        break;
-
-      case Orthanc::ResourceType_Instance:
-        expectedType = "IMAGE";
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    for (;;)
-    {
-      std::unique_ptr<Orthanc::DicomMap> current(dicomDir.GetItem(index).Clone());
-      current->RemoveBinaryTags();
-      current->Merge(parent);
-
-      std::string type;
-      if (!current->LookupStringValue(type, Orthanc::DICOM_TAG_DIRECTORY_RECORD_TYPE, false))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-
-      if (type == expectedType)
-      {
-        if (level == Orthanc::ResourceType_Instance)
-        {
-          instances.AddResource(*current);
-        }
-        else
-        {
-          size_t lower;
-          if (dicomDir.LookupLower(lower, index))
-          {
-            ExploreDicomDir(instances, dicomDir, Orthanc::GetChildResourceType(level), lower, *current);
-          }
-        }
-      }
-
-      size_t next;
-      if (dicomDir.LookupNext(next, index))
-      {
-        index = next;
-      }
-      else
-      {
-        return;
-      }
-    }
-  }
-#endif
-
-
-#if ORTHANC_ENABLE_DCMTK == 1
-  void DicomResourcesLoader::GetDicomDirInstances(LoadedDicomResources& target,
-                                                  const Orthanc::ParsedDicomDir& dicomDir)
-  {
-    Orthanc::DicomMap parent;
-    ExploreDicomDir(target, dicomDir, Orthanc::ResourceType_Patient, 0, parent);
-  }
-#endif
-
-
-#if ORTHANC_ENABLE_DCMTK == 1
-  class DicomResourcesLoader::DicomDirHandler : public StringHandler
-  {
-  public:
-    DicomDirHandler(boost::shared_ptr<DicomResourcesLoader> loader,
-                    boost::shared_ptr<LoadedDicomResources> target,
-                    int priority,
-                    const DicomSource& source,
-                    boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
-      StringHandler(loader, target, priority, source, userPayload)
-    {
-    }
-
-    virtual void HandleJson(const Json::Value& body)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-      
-    virtual void HandleString(const std::string& body)
-    {
-      Orthanc::ParsedDicomDir dicomDir(body);
-      GetDicomDirInstances(*GetTarget(), dicomDir);
-      BroadcastSuccess();
-    }
-  };
-#endif
-  
-    
-  void DicomResourcesLoader::Handle(const HttpCommand::SuccessMessage& message)
-  {
-    if (message.GetOrigin().HasPayload())
-    {
-      dynamic_cast<StringHandler&>(message.GetOrigin().GetPayload()).HandleString(message.GetAnswer());
-    }
-  }
-
-
-  void DicomResourcesLoader::Handle(const OrthancRestApiCommand::SuccessMessage& message)
-  {
-    if (message.GetOrigin().HasPayload())
-    {
-      dynamic_cast<StringHandler&>(message.GetOrigin().GetPayload()).HandleString(message.GetAnswer());
-    }
-  }
-
-
-  void DicomResourcesLoader::Handle(const ReadFileCommand::SuccessMessage& message)
-  {
-    if (message.GetOrigin().HasPayload())
-    {
-      dynamic_cast<StringHandler&>(message.GetOrigin().GetPayload()).HandleString(message.GetContent());
-    }
-  }
-
-
-#if ORTHANC_ENABLE_DCMTK == 1
-  void DicomResourcesLoader::Handle(const ParseDicomSuccessMessage& message)
-  {
-    if (message.GetOrigin().HasPayload())
-    {
-      Handler& handler = dynamic_cast<Handler&>(message.GetOrigin().GetPayload());
-
-      std::set<Orthanc::DicomTag> ignoreTagLength;
-      ignoreTagLength.insert(Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR);  // Needed for RT-DOSE
-
-      Orthanc::DicomMap summary;
-      message.GetDicom().ExtractDicomSummary(summary, ignoreTagLength);
-      handler.GetTarget()->AddResource(summary);
-
-      handler.BroadcastSuccess();
-    }
-  }
-#endif
-
-
-  void DicomResourcesLoader::Handle(const OracleCommandExceptionMessage& message)
-  {
-    // TODO
-    LOG(ERROR) << "Exception: " << message.GetException().What();
-  }
-    
-
-  void DicomResourcesLoader::ScheduleLoadOrthancInstanceTags(boost::shared_ptr<LoadedDicomResources> target,
-                                                             int priority,
-                                                             const DicomSource& source,
-                                                             const std::string& instanceId,
-                                                             boost::shared_ptr<unsigned int> remainingCommands,
-                                                             boost::shared_ptr<Orthanc::IDynamicObject> userPayload)
-  {
-    std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
-    command->SetUri("/instances/" + instanceId + "/tags");
-    command->AcquirePayload(new OrthancInstanceTagsHandler(shared_from_this(), target, priority,
-                                                           source, remainingCommands, userPayload));
-
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-      lock->Schedule(GetSharedObserver(), priority, command.release());
-    }
-  }
-
-
-  void DicomResourcesLoader::ScheduleLoadOrthancOneChildInstance(boost::shared_ptr<LoadedDicomResources> target,
-                                                                 int priority,
-                                                                 const DicomSource& source,
-                                                                 Orthanc::ResourceType level,
-                                                                 const std::string& id,
-                                                                 boost::shared_ptr<unsigned int> remainingCommands,
-                                                                 boost::shared_ptr<Orthanc::IDynamicObject> userPayload)
-  {
-    std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
-    command->SetUri("/" + GetUri(level) + "/" + id + "/instances");
-    command->AcquirePayload(new OrthancOneChildInstanceHandler(shared_from_this(), target, priority,
-                                                               source, remainingCommands, userPayload));
-
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-      lock->Schedule(GetSharedObserver(), priority, command.release());
-    }
-  }
-    
-    
-
-  const Orthanc::IDynamicObject& DicomResourcesLoader::SuccessMessage::GetUserPayload() const
-  {
-    if (userPayload_ == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return *userPayload_;
-    }
-  }
-
-
-  boost::shared_ptr<DicomResourcesLoader> DicomResourcesLoader::Create(ILoadersContext::ILock& stone)
-  {
-    boost::shared_ptr<DicomResourcesLoader> result(new DicomResourcesLoader(stone.GetContext()));
-    result->Register<HttpCommand::SuccessMessage>(stone.GetOracleObservable(), &DicomResourcesLoader::Handle);
-    result->Register<OracleCommandExceptionMessage>(stone.GetOracleObservable(), &DicomResourcesLoader::Handle);
-    result->Register<OrthancRestApiCommand::SuccessMessage>(stone.GetOracleObservable(), &DicomResourcesLoader::Handle);
-    result->Register<ReadFileCommand::SuccessMessage>(stone.GetOracleObservable(), &DicomResourcesLoader::Handle);
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    result->Register<ParseDicomSuccessMessage>(stone.GetOracleObservable(), &DicomResourcesLoader::Handle);
-#endif
-    
-    return result;
-  }
-
-
-  static void SetIncludeTags(std::map<std::string, std::string>& arguments,
-                             const std::set<Orthanc::DicomTag>& includeTags)
-  {
-    if (!includeTags.empty())
-    {
-      std::string s;
-      bool first = true;
-
-      for (std::set<Orthanc::DicomTag>::const_iterator
-             it = includeTags.begin(); it != includeTags.end(); ++it)
-      {
-        if (first)
-        {
-          first = false;
-        }
-        else
-        {
-          s += ",";
-        }
-
-        char buf[16];
-        sprintf(buf, "%04X%04X", it->GetGroup(), it->GetElement());
-        s += std::string(buf);
-      }
-
-      arguments["includefield"] = s;
-    }    
-  }
-  
-  
-  void DicomResourcesLoader::ScheduleGetDicomWeb(boost::shared_ptr<LoadedDicomResources> target,
-                                                 int priority,
-                                                 const DicomSource& source,
-                                                 const std::string& uri,
-                                                 const std::set<Orthanc::DicomTag>& includeTags,
-                                                 Orthanc::IDynamicObject* userPayload)
-  {
-    boost::shared_ptr<Orthanc::IDynamicObject> protection(userPayload);
-    
-    if (!source.IsDicomWeb())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, "Not a DICOMweb source");
-    }
-
-    std::map<std::string, std::string> arguments, headers;
-    SetIncludeTags(arguments, includeTags);
-  
-    std::unique_ptr<IOracleCommand> command(
-      source.CreateDicomWebCommand(uri, arguments, headers, 
-                                   new DicomWebHandler(shared_from_this(), target, priority, source, protection)));
-      
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-      lock->Schedule(GetSharedObserver(), priority, command.release());
-    }
-  }
-  
-
-  void DicomResourcesLoader::ScheduleQido(boost::shared_ptr<LoadedDicomResources> target,
-                                          int priority,
-                                          const DicomSource& source,
-                                          Orthanc::ResourceType level,
-                                          const Orthanc::DicomMap& filter,
-                                          const std::set<Orthanc::DicomTag>& includeTags,
-                                          Orthanc::IDynamicObject* userPayload)
-  {
-    boost::shared_ptr<Orthanc::IDynamicObject> protection(userPayload);
-    
-    if (!source.IsDicomWeb())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, "Not a DICOMweb source");
-    }
-
-    std::string uri;
-    switch (level)
-    {
-      case Orthanc::ResourceType_Study:
-        uri = "/studies";
-        break;
-
-      case Orthanc::ResourceType_Series:
-        uri = "/series";
-        break;
-
-      case Orthanc::ResourceType_Instance:
-        uri = "/instances";
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    std::set<Orthanc::DicomTag> tags;
-    filter.GetTags(tags);
-
-    std::map<std::string, std::string> arguments, headers;
-
-    for (std::set<Orthanc::DicomTag>::const_iterator it = tags.begin(); it != tags.end(); ++it)
-    {
-      std::string s;
-      if (filter.LookupStringValue(s, *it, false /* no binary */))
-      {
-        char buf[16];
-        sprintf(buf, "%04X%04X", it->GetGroup(), it->GetElement());
-        arguments[buf] = s;
-      }
-    }
-
-    SetIncludeTags(arguments, includeTags);
-
-    std::unique_ptr<IOracleCommand> command(
-      source.CreateDicomWebCommand(uri, arguments, headers, 
-                                   new DicomWebHandler(shared_from_this(), target, priority, source, protection)));
-
-
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-      lock->Schedule(GetSharedObserver(), priority, command.release());
-    }
-  }
-
-    
-  void DicomResourcesLoader::ScheduleLoadOrthancResources(boost::shared_ptr<LoadedDicomResources> target,
-                                                          int priority,
-                                                          const DicomSource& source,
-                                                          Orthanc::ResourceType topLevel,
-                                                          const std::string& topId,
-                                                          Orthanc::ResourceType bottomLevel,
-                                                          Orthanc::IDynamicObject* userPayload)
-  {
-    boost::shared_ptr<Orthanc::IDynamicObject> protection(userPayload);
-    
-    if (!source.IsOrthanc())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, "Not an Orthanc source");
-    }
-
-    bool ok = false;
-
-    switch (topLevel)
-    {
-      case Orthanc::ResourceType_Patient:
-        ok = (bottomLevel == Orthanc::ResourceType_Patient ||
-              bottomLevel == Orthanc::ResourceType_Study ||
-              bottomLevel == Orthanc::ResourceType_Series ||
-              bottomLevel == Orthanc::ResourceType_Instance);
-        break;
-              
-      case Orthanc::ResourceType_Study:
-        ok = (bottomLevel == Orthanc::ResourceType_Study ||
-              bottomLevel == Orthanc::ResourceType_Series ||
-              bottomLevel == Orthanc::ResourceType_Instance);
-        break;
-              
-      case Orthanc::ResourceType_Series:
-        ok = (bottomLevel == Orthanc::ResourceType_Series ||
-              bottomLevel == Orthanc::ResourceType_Instance);
-        break;
-              
-      case Orthanc::ResourceType_Instance:
-        ok = (bottomLevel == Orthanc::ResourceType_Instance);
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (!ok)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    boost::shared_ptr<unsigned int> remainingCommands(new unsigned int(0));
-
-    if (topLevel == Orthanc::ResourceType_Instance)
-    {
-      ScheduleLoadOrthancInstanceTags(target, priority, source, topId, remainingCommands, protection);
-    }
-    else if (topLevel == bottomLevel)
-    {
-      ScheduleLoadOrthancOneChildInstance(target, priority, source, topLevel, topId, remainingCommands, protection);
-    }
-    else 
-    {
-      std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
-      command->SetUri("/" + GetUri(topLevel) + "/" + topId + "/" + GetUri(bottomLevel));
-      command->AcquirePayload(new OrthancAllChildrenInstancesHandler
-                              (shared_from_this(), target, priority, source,
-                               remainingCommands, bottomLevel, protection));
-
-      {
-        std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-
-        // GetSharedObserver() means "this" (for use as an IObserver), as a 
-        // shared_ptr
-        // The oracle will thus call "this" 
-        lock->Schedule(GetSharedObserver(), priority, command.release());
-      }
-    }
-  }
-
-
-  void DicomResourcesLoader::ScheduleLoadDicomDir(boost::shared_ptr<LoadedDicomResources> target,
-                                                  int priority,
-                                                  const DicomSource& source,
-                                                  const std::string& path,
-                                                  Orthanc::IDynamicObject* userPayload)
-  {
-    boost::shared_ptr<Orthanc::IDynamicObject> protection(userPayload);
-    
-    if (!source.IsDicomDir())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, "Not a DICOMDIR source");
-    }
-
-    if (target->GetIndexedTag() == Orthanc::DICOM_TAG_SOP_INSTANCE_UID)
-    {
-      LOG(WARNING) << "If loading DICOMDIR, it is advised to index tag "
-                   << "ReferencedSopInstanceUidInFile (0004,1511)";
-    }
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    std::unique_ptr<ReadFileCommand> command(new ReadFileCommand(path));
-    command->AcquirePayload(new DicomDirHandler(shared_from_this(), target, priority, source, protection));
-
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
-      lock->Schedule(GetSharedObserver(), priority, command.release());
-    }
-#else
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                    "DCMTK is disabled, cannot load DICOMDIR");
-#endif
-  }
-
-
-  void DicomResourcesLoader::ScheduleLoadDicomFile(boost::shared_ptr<LoadedDicomResources> target,
-                                                   int priority,
-                                                   const DicomSource& source,
-                                                   const std::string& path,
-                                                   bool includePixelData,
-                                                   Orthanc::IDynamicObject* userPayload)
-  {
-    boost::shared_ptr<Orthanc::IDynamicObject> protection(userPayload);
-    
-#if ORTHANC_ENABLE_DCMTK == 1
-    std::unique_ptr<ParseDicomFromFileCommand> command(new ParseDicomFromFileCommand(source, path));
-    command->SetPixelDataIncluded(includePixelData);
-    command->AcquirePayload(new Handler(shared_from_this(), target, priority, source, protection));
-
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-      lock->Schedule(GetSharedObserver(), priority, command.release());
-    }
-#else
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                    "DCMTK is disabled, cannot load DICOM files");
-#endif
-  }
-
-
-  bool DicomResourcesLoader::ScheduleLoadDicomFile(boost::shared_ptr<LoadedDicomResources> target,
-                                                   int priority,
-                                                   const DicomSource& source,
-                                                   const std::string& dicomDirPath,
-                                                   const Orthanc::DicomMap& dicomDirEntry,
-                                                   bool includePixelData,
-                                                   Orthanc::IDynamicObject* userPayload)
-  {
-    std::unique_ptr<Orthanc::IDynamicObject> protection(userPayload);
-    
-#if ORTHANC_ENABLE_DCMTK == 1
-    std::string file;
-    if (dicomDirEntry.LookupStringValue(file, Orthanc::DICOM_TAG_REFERENCED_FILE_ID, false))
-    {
-      ScheduleLoadDicomFile(target, priority, source, ParseDicomFromFileCommand::GetDicomDirPath(dicomDirPath, file),
-                            includePixelData, protection.release());
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-#else
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                    "DCMTK is disabled, cannot load DICOM files");
-#endif
-  }
-}
--- a/Framework/Loaders/DicomResourcesLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,234 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../OrthancStone.h"
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error The macro ORTHANC_ENABLE_DCMTK must be defined
-#endif
-
-#include "../Oracle/HttpCommand.h"
-#include "../Oracle/OracleCommandExceptionMessage.h"
-#include "../Oracle/OrthancRestApiCommand.h"
-#include "../Oracle/ReadFileCommand.h"
-#include "DicomSource.h"
-#include "ILoaderFactory.h"
-#include "LoadedDicomResources.h"
-#include "OracleScheduler.h"
-
-namespace Orthanc
-{
-#if ORTHANC_ENABLE_DCMTK == 1
-  class ParsedDicomDir;
-#endif
-}
-
-namespace OrthancStone
-{
-#if ORTHANC_ENABLE_DCMTK == 1
-  class ParseDicomFromFileCommand;
-#endif
-  
-  class DicomResourcesLoader :
-    public ObserverBase<DicomResourcesLoader>,
-    public IObservable
-  {
-  private:
-    class Handler;
-    class StringHandler;
-    class DicomWebHandler;
-    class OrthancHandler;
-    class OrthancInstanceTagsHandler;    
-    class OrthancOneChildInstanceHandler;
-    class OrthancAllChildrenInstancesHandler;
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    class DicomDirHandler;
-#endif
-
-    void Handle(const HttpCommand::SuccessMessage& message);
-
-    void Handle(const OrthancRestApiCommand::SuccessMessage& message);
-
-    void Handle(const ReadFileCommand::SuccessMessage& message);
-
-    void Handle(const OracleCommandExceptionMessage& message);
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    void Handle(const ParseDicomSuccessMessage& message);
-#endif
-
-    void ScheduleLoadOrthancInstanceTags(boost::shared_ptr<LoadedDicomResources> target,
-                                         int priority,
-                                         const DicomSource& source,
-                                         const std::string& instanceId,
-                                         boost::shared_ptr<unsigned int> remainingCommands,
-                                         boost::shared_ptr<Orthanc::IDynamicObject> userPayload);
-
-    void ScheduleLoadOrthancOneChildInstance(boost::shared_ptr<LoadedDicomResources> target,
-                                             int priority,
-                                             const DicomSource& source,
-                                             Orthanc::ResourceType level,
-                                             const std::string& id,
-                                             boost::shared_ptr<unsigned int> remainingCommands,
-                                             boost::shared_ptr<Orthanc::IDynamicObject> userPayload);
-    
-    DicomResourcesLoader(ILoadersContext& context) :
-      context_(context)
-    {
-    }
-
-    ILoadersContext&  context_;
-
-
-  public:
-    class SuccessMessage : public OrthancStone::OriginMessage<DicomResourcesLoader>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      boost::shared_ptr<LoadedDicomResources>  resources_;
-      int                                      priority_;
-      const DicomSource&                       source_;
-      const Orthanc::IDynamicObject*           userPayload_;
-      
-    public:
-      SuccessMessage(const DicomResourcesLoader& origin,
-                     boost::shared_ptr<LoadedDicomResources> resources,
-                     int priority,
-                     const DicomSource& source,
-                     const Orthanc::IDynamicObject* userPayload) :
-        OriginMessage(origin),
-        resources_(resources),
-        priority_(priority),
-        source_(source),
-        userPayload_(userPayload)
-      {
-      }
-
-      int GetPriority() const
-      {
-        return priority_;
-      }
-
-      const boost::shared_ptr<LoadedDicomResources> GetResources() const
-      {
-        return resources_;
-      }
-
-      const DicomSource& GetDicomSource() const
-      {
-        return source_;
-      }
-
-      bool HasUserPayload() const
-      {
-        return userPayload_ != NULL;
-      }
-
-      const Orthanc::IDynamicObject& GetUserPayload() const;
-    };
-
-
-    class Factory : public ILoaderFactory
-    {
-    public:
-      virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& stone)
-      {
-        return DicomResourcesLoader::Create(stone);
-      }
-    };
-
-
-    static boost::shared_ptr<DicomResourcesLoader> Create(ILoadersContext::ILock& stone);
-
-    void ScheduleGetDicomWeb(boost::shared_ptr<LoadedDicomResources> target,
-                             int priority,
-                             const DicomSource& source,
-                             const std::string& uri,
-                             const std::set<Orthanc::DicomTag>& includeTags,
-                             Orthanc::IDynamicObject* userPayload);
-
-    void ScheduleGetDicomWeb(boost::shared_ptr<LoadedDicomResources> target,
-                             int priority,
-                             const DicomSource& source,
-                             const std::string& uri,
-                             Orthanc::IDynamicObject* userPayload)
-    {
-      std::set<Orthanc::DicomTag> includeTags;
-      ScheduleGetDicomWeb(target, priority, source, uri, includeTags, userPayload);
-    }        
-
-    void ScheduleQido(boost::shared_ptr<LoadedDicomResources> target,
-                      int priority,
-                      const DicomSource& source,
-                      Orthanc::ResourceType level,
-                      const Orthanc::DicomMap& filter,
-                      const std::set<Orthanc::DicomTag>& includeTags,
-                      Orthanc::IDynamicObject* userPayload);
-
-    void ScheduleLoadOrthancResources(boost::shared_ptr<LoadedDicomResources> target,
-                                      int priority,
-                                      const DicomSource& source,
-                                      Orthanc::ResourceType topLevel,
-                                      const std::string& topId,
-                                      Orthanc::ResourceType bottomLevel,
-                                      Orthanc::IDynamicObject* userPayload);
-
-    void ScheduleLoadOrthancResource(boost::shared_ptr<LoadedDicomResources> target,
-                                     int priority,
-                                     const DicomSource& source,
-                                     Orthanc::ResourceType level,
-                                     const std::string& id,
-                                     Orthanc::IDynamicObject* userPayload)
-    {
-      ScheduleLoadOrthancResources(target, priority, source, level, id, level, userPayload);
-    }
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    static void GetDicomDirInstances(LoadedDicomResources& target,
-                                     const Orthanc::ParsedDicomDir& dicomDir);
-#endif
-
-    void ScheduleLoadDicomDir(boost::shared_ptr<LoadedDicomResources> target,
-                              int priority,
-                              const DicomSource& source,
-                              const std::string& path,
-                              Orthanc::IDynamicObject* userPayload);
-    
-    void ScheduleLoadDicomFile(boost::shared_ptr<LoadedDicomResources> target,
-                               int priority,
-                               const DicomSource& source,
-                               const std::string& path,
-                               bool includePixelData,
-                               Orthanc::IDynamicObject* userPayload);
-
-    bool ScheduleLoadDicomFile(boost::shared_ptr<LoadedDicomResources> target,
-                               int priority,
-                               const DicomSource& source,
-                               const std::string& dicomDirPath,
-                               const Orthanc::DicomMap& dicomDirEntry,
-                               bool includePixelData,
-                               Orthanc::IDynamicObject* userPayload);
-  };
-}
--- a/Framework/Loaders/DicomSource.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,356 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomSource.h"
-
-#include "../Oracle/HttpCommand.h"
-#include "../Oracle/OrthancRestApiCommand.h"
-
-#include <OrthancException.h>
-
-#include <boost/algorithm/string/predicate.hpp>
-
-namespace OrthancStone
-{
-  static std::string EncodeGetArguments(const std::string& uri,
-                                        const std::map<std::string, std::string>& arguments)
-  {
-    std::string s = uri;
-    bool first = true;
-
-    for (std::map<std::string, std::string>::const_iterator
-           it = arguments.begin(); it != arguments.end(); ++it)
-    {
-      if (first)
-      {
-        s += "?";
-        first = false;
-      }
-      else
-      {
-        s += "&";
-      }
-
-      s += it->first + "=" + it->second;
-    }
-
-    // TODO: Call Orthanc::Toolbox::UriEncode() ?
-
-    return s;
-  }
-
-
-  void DicomSource::SetOrthancSource(const Orthanc::WebServiceParameters& parameters)
-  {
-    type_ = DicomSourceType_Orthanc;
-    webService_ = parameters;
-    hasOrthancWebViewer1_ = false;
-    hasOrthancAdvancedPreview_ = false;
-  }
-
-
-  void DicomSource::SetOrthancSource()
-  {
-    Orthanc::WebServiceParameters parameters;
-    parameters.SetUrl("http://localhost:8042/");
-    SetOrthancSource(parameters);
-  }
-
-
-  const Orthanc::WebServiceParameters& DicomSource::GetOrthancParameters() const
-  {
-    if (type_ == DicomSourceType_Orthanc ||
-        type_ == DicomSourceType_DicomWebThroughOrthanc)
-    {
-      return webService_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  void DicomSource::SetDicomDirSource()
-  {
-    type_ = DicomSourceType_DicomDir;
-  }
-
-
-  void DicomSource::SetDicomWebSource(const std::string& baseUrl)
-  {
-    type_ = DicomSourceType_DicomWeb;
-    webService_.SetUrl(baseUrl);
-    webService_.ClearCredentials();
-  }
-
-  
-  void DicomSource::SetDicomWebSource(const std::string& baseUrl,
-                                      const std::string& username,
-                                      const std::string& password)
-  {
-    type_ = DicomSourceType_DicomWeb;
-    webService_.SetUrl(baseUrl);
-    webService_.SetCredentials(username, password);
-  }
-
-  
-  void DicomSource::SetDicomWebThroughOrthancSource(const Orthanc::WebServiceParameters& orthancParameters,
-                                                    const std::string& dicomWebRoot,
-                                                    const std::string& serverName)
-  {
-    type_ = DicomSourceType_DicomWebThroughOrthanc;
-    webService_ = orthancParameters;
-    orthancDicomWebRoot_ = dicomWebRoot;
-    serverName_ = serverName;
-  }
-
-  
-  void DicomSource::SetDicomWebThroughOrthancSource(const std::string& serverName)
-  {
-    Orthanc::WebServiceParameters orthanc;
-    orthanc.SetUrl("http://localhost:8042/");
-    SetDicomWebThroughOrthancSource(orthanc, "/dicom-web/", serverName);
-  }
-
-  
-  bool DicomSource::IsDicomWeb() const
-  {
-    return (type_ == DicomSourceType_DicomWeb ||
-            type_ == DicomSourceType_DicomWebThroughOrthanc);
-  }
-
-
-  IOracleCommand* DicomSource::CreateDicomWebCommand(const std::string& uri,
-                                                     const std::map<std::string, std::string>& arguments,
-                                                     const std::map<std::string, std::string>& headers,
-                                                     Orthanc::IDynamicObject* payload) const
-  {
-    std::unique_ptr<Orthanc::IDynamicObject> protection(payload);
-
-    switch (type_)
-    {
-      case DicomSourceType_DicomWeb:
-      {
-        std::unique_ptr<HttpCommand> command(new HttpCommand);
-        
-        command->SetMethod(Orthanc::HttpMethod_Get);
-        command->SetUrl(webService_.GetUrl() + EncodeGetArguments(uri, arguments));
-        command->SetHttpHeaders(webService_.GetHttpHeaders());
-
-        for (std::map<std::string, std::string>::const_iterator
-               it = headers.begin(); it != headers.end(); ++it)
-        {
-          command->SetHttpHeader(it->first, it->second);
-        }
-      
-        if (!webService_.GetUsername().empty())
-        {
-          command->SetCredentials(webService_.GetUsername(), webService_.GetPassword());
-        }         
-
-        if (protection.get())
-        {
-          command->AcquirePayload(protection.release());
-        }
-        
-        return command.release();
-      }
-
-      case DicomSourceType_DicomWebThroughOrthanc:
-      {
-        Json::Value args = Json::objectValue;
-        for (std::map<std::string, std::string>::const_iterator
-               it = arguments.begin(); it != arguments.end(); ++it)
-        {
-          args[it->first] = it->second;
-        }
-          
-        Json::Value h = Json::objectValue;
-        for (std::map<std::string, std::string>::const_iterator
-               it = headers.begin(); it != headers.end(); ++it)
-        {
-          h[it->first] = it->second;
-        }
-        
-        Json::Value body = Json::objectValue;
-        body["Uri"] = uri;
-        body["Arguments"] = args;
-        body["HttpHeaders"] = h;
-
-        std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
-        command->SetMethod(Orthanc::HttpMethod_Post);
-        command->SetUri(orthancDicomWebRoot_ + "/servers/" + serverName_ + "/get");
-        command->SetBody(body);
-
-        if (protection.get())
-        {
-          command->AcquirePayload(protection.release());
-        }
-        
-        return command.release();
-      }
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  void DicomSource::AutodetectOrthancFeatures(const std::string& system,
-                                              const std::string& plugins)
-  {
-    static const char* const REST_API_VERSION = "ApiVersion";
-
-    if (IsDicomWeb())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    Json::Value a, b;
-    Json::Reader reader;
-    if (reader.parse(system, a) &&
-        reader.parse(plugins, b) &&
-        a.type() == Json::objectValue &&
-        b.type() == Json::arrayValue &&
-        a.isMember(REST_API_VERSION) &&
-        a[REST_API_VERSION].type() == Json::intValue)
-    {
-      SetOrthancAdvancedPreview(a[REST_API_VERSION].asInt() >= 5);
-
-      hasOrthancWebViewer1_ = false;
-
-      for (Json::Value::ArrayIndex i = 0; i < b.size(); i++)
-      {
-        if (b[i].type() != Json::stringValue)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-        }
-
-        if (boost::iequals(b[i].asString(), "web-viewer"))
-        {
-          hasOrthancWebViewer1_ = true;
-        }
-      }
-    }
-    else
-    {
-      printf("[%s] [%s]\n", system.c_str(), plugins.c_str());
-
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  void DicomSource::SetOrthancWebViewer1(bool hasPlugin)
-  {
-    if (IsOrthanc())
-    {
-      hasOrthancWebViewer1_ = hasPlugin;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  bool DicomSource::HasOrthancWebViewer1() const
-  {
-    if (IsOrthanc())
-    {
-      return hasOrthancWebViewer1_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  void DicomSource::SetOrthancAdvancedPreview(bool hasFeature)
-  {
-    if (IsOrthanc())
-    {
-      hasOrthancAdvancedPreview_ = hasFeature;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  bool DicomSource::HasOrthancAdvancedPreview() const
-  {
-    if (IsOrthanc())
-    {
-      return hasOrthancAdvancedPreview_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  void DicomSource::SetDicomWebRendered(bool hasFeature)
-  {
-    if (IsDicomWeb())
-    {
-      hasDicomWebRendered_ = hasFeature;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  bool DicomSource::HasDicomWebRendered() const
-  {
-    if (IsDicomWeb())
-    {
-      return hasDicomWebRendered_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  unsigned int DicomSource::GetQualityCount() const
-  {
-    if (IsDicomWeb())
-    {
-      return (HasDicomWebRendered() ? 2 : 1);
-    }
-    else if (IsOrthanc())
-    {
-      return (HasOrthancWebViewer1() || 
-              HasOrthancAdvancedPreview() ? 2 : 1);
-    }
-    else if (IsDicomDir())
-    {
-      return 1;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-}
--- a/Framework/Loaders/DicomSource.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Oracle/IOracleCommand.h"
-
-#include <WebServiceParameters.h>
-
-namespace OrthancStone
-{
-  enum DicomSourceType
-  {
-    DicomSourceType_Orthanc,
-    DicomSourceType_DicomWeb,
-    DicomSourceType_DicomWebThroughOrthanc,
-    DicomSourceType_DicomDir
-  };
-
-
-  class DicomSource
-  {
-  private:
-    DicomSourceType                type_;
-    Orthanc::WebServiceParameters  webService_;
-    std::string                    orthancDicomWebRoot_;
-    std::string                    serverName_;
-    bool                           hasOrthancWebViewer1_;
-    bool                           hasOrthancAdvancedPreview_;
-    bool                           hasDicomWebRendered_;
-
-  public:
-    DicomSource() :
-      hasOrthancWebViewer1_(false),
-      hasOrthancAdvancedPreview_(false),
-      hasDicomWebRendered_(false)
-    {
-      SetOrthancSource();
-    }
-
-    DicomSourceType GetType() const
-    {
-      return type_;
-    }
-
-    void SetOrthancSource();
-
-    void SetOrthancSource(const Orthanc::WebServiceParameters& parameters);
-
-    const Orthanc::WebServiceParameters& GetOrthancParameters() const;
-
-    void SetDicomDirSource();
-
-    void SetDicomWebSource(const std::string& baseUrl);
-
-    void SetDicomWebSource(const std::string& baseUrl,
-                           const std::string& username,
-                           const std::string& password);
-
-    void SetDicomWebThroughOrthancSource(const Orthanc::WebServiceParameters& orthancParameters,
-                                         const std::string& dicomWebRoot,
-                                         const std::string& serverName);
-    
-    void SetDicomWebThroughOrthancSource(const std::string& serverName);
-    
-    bool IsDicomWeb() const;
-
-    bool IsOrthanc() const
-    {
-      return type_ == DicomSourceType_Orthanc;
-    }
-
-    bool IsDicomDir() const
-    {
-      return type_ == DicomSourceType_DicomDir;
-    }
-
-    IOracleCommand* CreateDicomWebCommand(const std::string& uri,
-                                          const std::map<std::string, std::string>& arguments,
-                                          const std::map<std::string, std::string>& headers,
-                                          Orthanc::IDynamicObject* payload /* takes ownership */) const;
-    
-    IOracleCommand* CreateDicomWebCommand(const std::string& uri,
-                                          Orthanc::IDynamicObject* payload /* takes ownership */) const
-    {
-      std::map<std::string, std::string> none;
-      return CreateDicomWebCommand(uri, none, none, payload);
-    }
-    
-    void AutodetectOrthancFeatures(const std::string& system,
-                                   const std::string& plugins);
-
-    void SetOrthancWebViewer1(bool hasPlugin);
-
-    bool HasOrthancWebViewer1() const;
-
-    void SetOrthancAdvancedPreview(bool hasFeature);
-
-    bool HasOrthancAdvancedPreview() const;
-
-    void SetDicomWebRendered(bool hasFeature);
-
-    bool HasDicomWebRendered() const;
-
-    unsigned int GetQualityCount() const;
-  };
-}
--- a/Framework/Loaders/DicomStructureSetLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,495 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomStructureSetLoader.h"
-
-#include "../Scene2D/PolylineSceneLayer.h"
-#include "../StoneException.h"
-#include "../Toolbox/GeometryToolbox.h"
-
-#include <Toolbox.h>
-
-#include <algorithm>
-
-namespace OrthancStone
-{
-
-#if 0
-  void DumpDicomMap(std::ostream& o, const Orthanc::DicomMap& dicomMap)
-  {
-    using namespace std;
-    //ios_base::fmtflags state = o.flags();
-    //o.flags(ios::right | ios::hex);
-    //o << "(" << setfill('0') << setw(4) << tag.GetGroup()
-    //  << "," << setw(4) << tag.GetElement() << ")";
-    //o.flags(state);
-    Json::Value val;
-    dicomMap.Serialize(val);
-    o << val;
-    //return o;
-  }
-#endif
-
-  // implementation of IInstanceLookupHandler that uses Orthanc REST API calls to retrive the 
-  // geometry of referenced instances
-  class DicomStructureSetLoader::RestInstanceLookupHandler : public DicomStructureSetLoader::IInstanceLookupHandler,
-    public LoaderStateMachine
-  {
-  public:
-    static boost::shared_ptr<RestInstanceLookupHandler > Create(DicomStructureSetLoader& loader)
-    {
-      boost::shared_ptr<RestInstanceLookupHandler> obj(new RestInstanceLookupHandler(loader));
-      obj->LoaderStateMachine::PostConstructor();
-      return obj;
-    }
-
-  protected:
-    RestInstanceLookupHandler(DicomStructureSetLoader& loader) 
-      : LoaderStateMachine(loader.loadersContext_)
-      , loader_(loader)
-    {
-    }
-
-    virtual void RetrieveReferencedSlices(const std::set<std::string>& nonEmptyInstances) ORTHANC_OVERRIDE;
-
-  private:
-    // these subclasses hold the loading state
-    class AddReferencedInstance;   // 2nd state
-    class LookupInstance;          // 1st state
-
-    DicomStructureSetLoader& loader_;
-  };
-
-  class DicomStructureSetLoader::RestInstanceLookupHandler::AddReferencedInstance : public LoaderStateMachine::State
-  {
-  private:
-    std::string instanceId_;
-      
-  public:
-    AddReferencedInstance(DicomStructureSetLoader& that,
-                          const std::string& instanceId) :
-      State(that),
-      instanceId_(instanceId)
-    {
-    }
-
-    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
-    {
-      Json::Value tags;
-      message.ParseJsonBody(tags);
-        
-      Orthanc::DicomMap dicom;
-      dicom.FromDicomAsJson(tags);
-
-      DicomStructureSetLoader& loader = GetLoader<DicomStructureSetLoader>();
-    
-      loader.AddReferencedSlice(dicom);
-    }
-  };
-
-
-  // State that converts a "SOP Instance UID" to an Orthanc identifier
-  class DicomStructureSetLoader::RestInstanceLookupHandler::LookupInstance : public LoaderStateMachine::State
-  {
-  private:
-    std::string  sopInstanceUid_;
-      
-  public:
-    LookupInstance(DicomStructureSetLoader& that,
-                   const std::string& sopInstanceUid) :
-      State(that),
-      sopInstanceUid_(sopInstanceUid)
-    {
-    }
-
-    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
-    {
-      DicomStructureSetLoader& loader = GetLoader<DicomStructureSetLoader>();
-
-      Json::Value lookup;
-      message.ParseJsonBody(lookup);
-
-      if (lookup.type() != Json::arrayValue ||
-          lookup.size() != 1 ||
-          !lookup[0].isMember("Type") ||
-          !lookup[0].isMember("Path") ||
-          lookup[0]["Type"].type() != Json::stringValue ||
-          lookup[0]["ID"].type() != Json::stringValue ||
-          lookup[0]["Type"].asString() != "Instance")
-      {
-        std::stringstream msg;
-        msg << "Unknown resource! message.GetAnswer() = " << message.GetAnswer() << " message.GetAnswerHeaders() = ";
-        for (OrthancStone::OrthancRestApiCommand::HttpHeaders::const_iterator it = message.GetAnswerHeaders().begin();
-             it != message.GetAnswerHeaders().end(); ++it)
-        {
-          msg << "\nkey: \"" << it->first << "\" value: \"" << it->second << "\"\n";
-        }
-        const std::string msgStr = msg.str();
-        LOG(ERROR) << msgStr;
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource);          
-      }
-
-      const std::string instanceId = lookup[0]["ID"].asString();
-
-      {
-        std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
-        command->SetHttpHeader("Accept-Encoding", "gzip");
-        std::string uri = "/instances/" + instanceId + "/tags";
-        command->SetUri(uri);
-        command->AcquirePayload(new AddReferencedInstance(loader, instanceId));
-        Schedule(command.release());
-      }
-    }
-  };
-
-  void DicomStructureSetLoader::RestInstanceLookupHandler::RetrieveReferencedSlices(
-    const std::set<std::string>& nonEmptyInstances)
-  {
-    for (std::set<std::string>::const_iterator it = nonEmptyInstances.begin(); 
-         it != nonEmptyInstances.end(); 
-         ++it)
-    {
-      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
-      command->SetUri("/tools/lookup");
-      command->SetMethod(Orthanc::HttpMethod_Post);
-      command->SetBody(*it);
-      command->AcquirePayload(new LookupInstance(loader_, *it));
-      Schedule(command.release());
-    }
-  }
-
-  class DicomStructureSetLoader::LoadStructure : public LoaderStateMachine::State
-  {
-  public:
-    LoadStructure(DicomStructureSetLoader& that) :
-    State(that)
-    {
-    }
-    
-    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
-    {
-      DicomStructureSetLoader& loader = GetLoader<DicomStructureSetLoader>();
-
-      // Set the actual structure set content
-      {
-        FullOrthancDataset dicom(message.GetAnswer());
-
-        loader.content_.reset(new OrthancStone::DicomStructureSet(dicom));
-      }
-
-      // initialize visibility flags
-      SetDefaultStructureVisibility();
-
-      // retrieve the (non-empty) referenced instances (the CT slices containing the corresponding structures)
-      // Some (admittedly invalid) Dicom files have empty values in the 
-      // 0008,1155 tag. We try our best to cope with this.
-      // this is why we use `nonEmptyInstances` and not `instances`
-      std::set<std::string> instances;
-      std::set<std::string> nonEmptyInstances;
-
-      // this traverses the polygon collection for all structures and retrieve the SOPInstanceUID of 
-      // the referenced instances
-      loader.content_->GetReferencedInstances(instances);
-
-      for (std::set<std::string>::const_iterator
-        it = instances.begin(); it != instances.end(); ++it)
-      {
-        std::string instance = Orthanc::Toolbox::StripSpaces(*it);
-        if(instance != "")
-          nonEmptyInstances.insert(instance);
-      }
-
-      loader.RetrieveReferencedSlices(nonEmptyInstances);
-    }
-
-    void SetDefaultStructureVisibility()
-    {
-      DicomStructureSetLoader& loader = GetLoader<DicomStructureSetLoader>();
-
-      size_t structureCount = loader.content_->GetStructuresCount();
-
-      loader.structureVisibility_.resize(structureCount);
-      bool everythingVisible = false;
-      if ((loader.initiallyVisibleStructures_.size() == 1)
-          && (loader.initiallyVisibleStructures_[0].size() == 1)
-          && (loader.initiallyVisibleStructures_[0][0] == '*'))
-      {
-        everythingVisible = true;
-      }
-
-      for (size_t i = 0; i < structureCount; ++i)
-      {
-        // if a single "*" string is supplied, this means we want everything 
-        // to be visible...
-        if (everythingVisible)
-        {
-          loader.structureVisibility_.at(i) = true;
-        }
-        else
-        {
-          // otherwise, we only enable visibility for those structures whose 
-          // names are mentioned in the initiallyVisibleStructures_ array
-          const std::string& structureName = loader.content_->GetStructureName(i);
-
-          std::vector<std::string>::iterator foundIt =
-            std::find(
-              loader.initiallyVisibleStructures_.begin(),
-              loader.initiallyVisibleStructures_.end(),
-              structureName);
-          std::vector<std::string>::iterator endIt = loader.initiallyVisibleStructures_.end();
-          if (foundIt != endIt)
-            loader.structureVisibility_.at(i) = true;
-          else
-            loader.structureVisibility_.at(i) = false;
-        }
-      }
-    }
-
-    private:
-
-
-  };
-    
-
-  class DicomStructureSetLoader::Slice : public IExtractedSlice
-  {
-  private:
-    const OrthancStone::DicomStructureSet&  content_;
-    uint64_t                  revision_;
-    bool                      isValid_;
-    std::vector<bool>         visibility_;
-      
-  public:
-    /**
-    The visibility vector must either:
-    - be empty
-    or
-    - contain the same number of items as the number of structures in the 
-      structure set.
-    In the first case (empty vector), all the structures are displayed.
-    In the second case, the visibility of each structure is defined by the 
-    content of the vector at the corresponding index.
-    */
-    Slice(const OrthancStone::DicomStructureSet& content,
-          uint64_t revision,
-          const OrthancStone::CoordinateSystem3D& cuttingPlane,
-          std::vector<bool> visibility = std::vector<bool>()) 
-      : content_(content)
-      , revision_(revision)
-      , visibility_(visibility)
-    {
-      ORTHANC_ASSERT((visibility_.size() == content_.GetStructuresCount())
-        || (visibility_.size() == 0u));
-
-      bool opposite;
-
-      const OrthancStone::Vector normal = content.GetNormal();
-      isValid_ = (
-        OrthancStone::GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetNormal()) ||
-        OrthancStone::GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetAxisX()) ||
-        OrthancStone::GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetAxisY()));
-    }
-      
-    virtual bool IsValid()
-    {
-      return isValid_;
-    }
-
-    virtual uint64_t GetRevision()
-    {
-      return revision_;
-    }
-
-    virtual OrthancStone::ISceneLayer* CreateSceneLayer(
-      const OrthancStone::ILayerStyleConfigurator* configurator,
-      const OrthancStone::CoordinateSystem3D& cuttingPlane)
-    {
-      assert(isValid_);
-
-      std::unique_ptr<OrthancStone::PolylineSceneLayer> layer(new OrthancStone::PolylineSceneLayer);
-      layer->SetThickness(2);
-
-      for (size_t i = 0; i < content_.GetStructuresCount(); i++)
-      {
-        if ((visibility_.size() == 0) || visibility_.at(i))
-        {
-          const OrthancStone::Color& color = content_.GetStructureColor(i);
-
-#ifdef USE_BOOST_UNION_FOR_POLYGONS 
-          std::vector< std::vector<OrthancStone::Point2D> > polygons;
-
-          if (content_.ProjectStructure(polygons, i, cuttingPlane))
-          {
-            for (size_t j = 0; j < polygons.size(); j++)
-            {
-              PolylineSceneLayer::Chain chain;
-              chain.resize(polygons[j].size());
-
-              for (size_t k = 0; k < polygons[j].size(); k++)
-              {
-                chain[k] = ScenePoint2D(polygons[j][k].x, polygons[j][k].y);
-    }
-
-              layer->AddChain(chain, true /* closed */, color);
-  }
-        }
-#else
-          std::vector< std::pair<OrthancStone::Point2D, OrthancStone::Point2D> > segments;
-
-          if (content_.ProjectStructure(segments, i, cuttingPlane))
-          {
-            for (size_t j = 0; j < segments.size(); j++)
-            {
-              OrthancStone::PolylineSceneLayer::Chain chain;
-              chain.resize(2);
-
-              chain[0] = OrthancStone::ScenePoint2D(segments[j].first.x, segments[j].first.y);
-              chain[1] = OrthancStone::ScenePoint2D(segments[j].second.x, segments[j].second.y);
-
-              layer->AddChain(chain, false /* NOT closed */, color);
-            }
-          }
-#endif        
-        }
-      }
-
-      return layer.release();
-    }
-  };
-    
-
-  DicomStructureSetLoader::DicomStructureSetLoader(
-    OrthancStone::ILoadersContext& loadersContext) 
-    : LoaderStateMachine(loadersContext)
-    , loadersContext_(loadersContext)
-    , revision_(0)
-    , countProcessedInstances_(0)
-    , countReferencedInstances_(0)
-    , structuresReady_(false)
-  {
-    // the default handler to retrieve slice geometry is RestInstanceLookupHandler
-    instanceLookupHandler_ = RestInstanceLookupHandler::Create(*this);
-  }
-    
-  boost::shared_ptr<OrthancStone::DicomStructureSetLoader> DicomStructureSetLoader::Create(OrthancStone::ILoadersContext& loadersContext)
-  {
-    boost::shared_ptr<DicomStructureSetLoader> obj(
-      new DicomStructureSetLoader(
-        loadersContext));
-    obj->LoaderStateMachine::PostConstructor();
-    return obj;
-  }
-
-  void DicomStructureSetLoader::AddReferencedSlice(const Orthanc::DicomMap& dicom)
-  {
-    content_->AddReferencedSlice(dicom);
-    countProcessedInstances_ ++;
-    assert(countProcessedInstances_ <= countReferencedInstances_);
-
-    revision_++;
-    SetStructuresUpdated();
-
-    if (countProcessedInstances_ == countReferencedInstances_)
-    {
-      // All the referenced instances have been loaded, finalize the RT-STRUCT
-      content_->CheckReferencedSlices();
-      revision_++;
-      SetStructuresReady();
-    }
-  }
-
-  void DicomStructureSetLoader::RetrieveReferencedSlices(const std::set<std::string>& nonEmptyInstances)
-  {
-    // we set the number of referenced instances. This allows to know, in the method above, when we're done
-    countReferencedInstances_ = static_cast<unsigned int>(nonEmptyInstances.size());
-    instanceLookupHandler_->RetrieveReferencedSlices(nonEmptyInstances);
-  }
-
-  void DicomStructureSetLoader::SetStructureDisplayState(size_t structureIndex, bool display)
-  {
-    structureVisibility_.at(structureIndex) = display;
-    revision_++;
-  }
-
-  DicomStructureSetLoader::~DicomStructureSetLoader()
-  {
-    LOG(TRACE) << "DicomStructureSetLoader::~DicomStructureSetLoader()";
-  }
-
-  void DicomStructureSetLoader::LoadInstance(
-    const std::string& instanceId, 
-    const std::vector<std::string>& initiallyVisibleStructures)
-  {
-    Start();
-      
-    instanceId_ = instanceId;
-    initiallyVisibleStructures_ = initiallyVisibleStructures;
-
-    {
-      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
-      command->SetHttpHeader("Accept-Encoding", "gzip");
-
-      std::string uri = "/instances/" + instanceId + "/tags?ignore-length=3006-0050";
-
-      command->SetUri(uri);
-      command->AcquirePayload(new LoadStructure(*this));
-      Schedule(command.release());
-    }
-  }
-
-  void DicomStructureSetLoader::LoadInstanceFullVisibility(const std::string& instanceId)
-  {
-    std::vector<std::string> initiallyVisibleStructures;
-    initiallyVisibleStructures.push_back("*"); // wildcard to make all structure sets visible
-    LoadInstance(instanceId, initiallyVisibleStructures);
-  }
-
-  OrthancStone::IVolumeSlicer::IExtractedSlice* DicomStructureSetLoader::ExtractSlice(const OrthancStone::CoordinateSystem3D& cuttingPlane)
-  {
-    if (content_.get() == NULL)
-    {
-      // Geometry is not available yet
-      return new OrthancStone::IVolumeSlicer::InvalidSlice;
-    }
-    else
-    {
-      return new Slice(*content_, revision_, cuttingPlane, structureVisibility_);
-    }
-  }
-
-  void DicomStructureSetLoader::SetStructuresUpdated()
-  {
-    BroadcastMessage(DicomStructureSetLoader::StructuresUpdated(*this));
-  }
-
-  void DicomStructureSetLoader::SetStructuresReady()
-  {
-    ORTHANC_ASSERT(!structuresReady_);
-    structuresReady_ = true;
-    BroadcastMessage(DicomStructureSetLoader::StructuresReady(*this));
-  }
-
-  bool DicomStructureSetLoader::AreStructuresReady() const
-  {
-    return structuresReady_;
-  }
-
-}
--- a/Framework/Loaders/DicomStructureSetLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/DicomStructureSet.h"
-#include "../Volumes/IVolumeSlicer.h"
-#include "../Loaders/ILoadersContext.h"
-#include "LoaderStateMachine.h"
-
-#include <vector>
-
-namespace OrthancStone
-{
-  class DicomStructureSetLoader :
-    public LoaderStateMachine,
-    public OrthancStone::IVolumeSlicer,
-    public OrthancStone::IObservable
-  {
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, StructuresReady, DicomStructureSetLoader);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, StructuresUpdated, DicomStructureSetLoader);
-
-    /**
-    
-    Once the structure set has been loaded (the LoadStructure state), we need to fill it with geometry information
-    from the referenced slices (tag (0008,1155) described here:
-    https://dicom.innolitics.com/ciods/rt-structure-set/general-reference/00081140/00081155
-
-    This interface allows to customize how this information can be gathered. By default, the RestInstanceLookupHandler
-    will perform a REST call to the Orthanc API to retrieve this information.
-
-    Injecting another implementation of this interface is useful when where this information can be supplied in 
-    another (faster) way (for instance, if a separate loader for the CT series can be used to supply the slice geometry)
-    */
-    class IInstanceLookupHandler
-    {
-    public:
-      virtual void RetrieveReferencedSlices(const std::set<std::string>& instances) = 0;
-    };
-
-    // predeclaration of the default IInstanceLookupHandler implementation
-    class RestInstanceLookupHandler;
-
-    static boost::shared_ptr<DicomStructureSetLoader> Create(
-      OrthancStone::ILoadersContext& loadersContext);
-
-    void SetInstanceLookupHandler(boost::shared_ptr<IInstanceLookupHandler> instanceLookupHandler)
-    {
-      instanceLookupHandler_ = instanceLookupHandler;
-    }
-
-    OrthancStone::DicomStructureSet* GetContent()
-    {
-      return content_.get();
-    }
-
-    void SetStructureDisplayState(size_t structureIndex, bool display);
-    
-    bool GetStructureDisplayState(size_t structureIndex) const
-    {
-      return structureVisibility_.at(structureIndex);
-    }
-
-    ~DicomStructureSetLoader();
-    
-    void LoadInstance(const std::string& instanceId, 
-                      const std::vector<std::string>& initiallyVisibleStructures = std::vector<std::string>());
-
-    void LoadInstanceFullVisibility(const std::string& instanceId);
-
-
-    virtual IExtractedSlice* ExtractSlice(const OrthancStone::CoordinateSystem3D& cuttingPlane) ORTHANC_OVERRIDE;
-
-    void SetStructuresReady();
-    void SetStructuresUpdated();
-
-    bool AreStructuresReady() const;
-
-    /**
-      Called by the IInstanceLookupHandler when slice referenced instance information is available. 
-      When the last referenced slice is received, this method will perform a final check and will warn observers
-    */
-    void AddReferencedSlice(const Orthanc::DicomMap& dicom);
-
-  private:
-    class Slice;
-
-    // Only state of LoaderStateMachine
-    class LoadStructure;           // 1st state
-    
-    OrthancStone::ILoadersContext&                    loadersContext_;
-    std::unique_ptr<OrthancStone::DicomStructureSet>  content_;
-    uint64_t                                          revision_;
-    std::string                                       instanceId_;
-    unsigned int                                      countProcessedInstances_;
-    unsigned int                                      countReferencedInstances_;  
-
-    // will be set to true once the loading is finished
-    bool                                              structuresReady_;
-
-    /**
-    At load time, these strings are used to initialize the structureVisibility_ 
-    vector.
-
-    As a special case, if initiallyVisibleStructures_ contains a single string
-    that is '*', ALL structures will be made visible.
-    */
-    std::vector<std::string> initiallyVisibleStructures_;
-
-    /**
-    Contains the "Should this structure be displayed?" flag for all structures.
-    Only filled when structures are loaded.
-
-    Changing this value directly affects the rendering
-    */
-    std::vector<bool>                  structureVisibility_;
-
-
-    boost::shared_ptr<IInstanceLookupHandler> instanceLookupHandler_;
-
-  private:
-    void RetrieveReferencedSlices(const std::set<std::string>& nonEmptyInstances);
-
-  protected:
-    DicomStructureSetLoader(OrthancStone::ILoadersContext& loadersContext);
-  };
-}
--- a/Framework/Loaders/DicomVolumeLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomVolumeLoader.h"
-
-#include <Images/ImageProcessing.h>
-
-namespace OrthancStone
-{
-  DicomVolumeLoader::DicomVolumeLoader(boost::shared_ptr<SeriesFramesLoader>& framesLoader,
-                                       bool computeRange) :
-    framesLoader_(framesLoader),
-    isValid_(false),
-    started_(false),
-    remaining_(0)
-  {
-    volume_.reset(new OrthancStone::DicomVolumeImage);
-
-    const SeriesOrderedFrames& frames = framesLoader_->GetOrderedFrames();
-
-    if (frames.IsRegular3DVolume() &&
-        frames.GetFramesCount() > 0)
-    {
-      // TODO - Is "0" the good choice for the reference frame?
-      // Shouldn't we use "count - 1" depending on the direction
-      // of the normal?
-      const OrthancStone::DicomInstanceParameters& parameters = frames.GetInstanceParameters(0);
-
-      OrthancStone::CoordinateSystem3D plane(frames.GetInstance(0));
-
-      OrthancStone::VolumeImageGeometry geometry;
-      geometry.SetSizeInVoxels(parameters.GetImageInformation().GetWidth(),
-                               parameters.GetImageInformation().GetHeight(),
-                               static_cast<unsigned int>(frames.GetFramesCount()));
-      geometry.SetAxialGeometry(plane);
-
-      double spacing;
-      if (parameters.GetSopClassUid() == SopClassUid_RTDose)
-      {
-        if (!parameters.ComputeRegularSpacing(spacing))
-        {
-          LOG(WARNING) << "Unable to compute the spacing in a RT-DOSE instance";
-          spacing = frames.GetSpacingBetweenSlices();
-        }
-      }
-      else
-      {
-        spacing = frames.GetSpacingBetweenSlices();
-      }
-
-      geometry.SetVoxelDimensions(parameters.GetPixelSpacingX(),
-                                  parameters.GetPixelSpacingY(), spacing);
-      volume_->Initialize(geometry, parameters.GetExpectedPixelFormat(), computeRange);
-      volume_->GetPixelData().Clear();
-      volume_->SetDicomParameters(parameters);
-
-      remaining_ = frames.GetFramesCount();
-      isValid_ = true;
-    }
-    else
-    {
-      LOG(WARNING) << "Not a regular 3D volume";
-    }
-  }
-
-
-  void DicomVolumeLoader::Handle(const OrthancStone::SeriesFramesLoader::FrameLoadedMessage& message)
-  {
-    if (remaining_ == 0 ||
-        !message.HasUserPayload())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    if (message.GetImage().GetWidth() != volume_->GetPixelData().GetWidth() ||
-        message.GetImage().GetHeight() != volume_->GetPixelData().GetHeight())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize);
-    }
-
-    if (message.GetImage().GetFormat() != volume_->GetPixelData().GetFormat())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    if (message.GetFrameIndex() >= volume_->GetPixelData().GetDepth())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    size_t frameIndex = dynamic_cast<const Orthanc::SingleValueObject<size_t>&>
-    (message.GetUserPayload()).GetValue();
-
-    {
-      ImageBuffer3D::SliceWriter writer(volume_->GetPixelData(), 
-                                        VolumeProjection_Axial, 
-                                        static_cast<unsigned int>(frameIndex));
-      
-      Orthanc::ImageProcessing::Copy(writer.GetAccessor(), message.GetImage());
-    }
-
-    volume_->IncrementRevision();
-
-    {
-      VolumeUpdatedMessage updated(*this, 
-                                   static_cast<unsigned int>(frameIndex));
-      
-      BroadcastMessage(updated);
-    }
-
-    remaining_--;
-
-    if (remaining_ == 0)
-    {
-      VolumeReadyMessage ready(*this);
-      BroadcastMessage(ready);
-    }
-  }
-
-
-  DicomVolumeLoader::Factory::Factory(LoadedDicomResources& instances) :
-    framesFactory_(instances),
-    computeRange_(false)
-  {
-  }
-
-  DicomVolumeLoader::Factory::Factory(const SeriesMetadataLoader::SuccessMessage& metadata) :
-    framesFactory_(metadata.GetInstances()),
-    computeRange_(false)
-  {
-    SetDicomDir(metadata.GetDicomDirPath(), metadata.GetDicomDir());  // Only useful for DICOMDIR sources
-  }
-
-
-  boost::shared_ptr<IObserver> DicomVolumeLoader::Factory::Create(ILoadersContext::ILock& context)
-  { 
-    boost::shared_ptr<SeriesFramesLoader> frames =
-      boost::dynamic_pointer_cast<SeriesFramesLoader>(framesFactory_.Create(context));
-
-    boost::shared_ptr<DicomVolumeLoader> volume(new DicomVolumeLoader(frames, computeRange_));
-    volume->Register<SeriesFramesLoader::FrameLoadedMessage>(*frames, &DicomVolumeLoader::Handle);
-
-    return volume;
-  }
-
-  void DicomVolumeLoader::Start(int priority,
-                                const DicomSource& source)
-  {
-    if (started_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    started_ = true;
-
-    if (IsValid())
-    {
-      for (size_t i = 0; i < GetOrderedFrames().GetFramesCount(); i++)
-      {
-        framesLoader_->ScheduleLoadFrame(priority, source, i, source.GetQualityCount() - 1,
-                                         new Orthanc::SingleValueObject<size_t>(i));
-      }
-    }
-    else
-    {
-      VolumeReadyMessage ready(*this);
-      BroadcastMessage(ready);
-    }
-  }
-}
--- a/Framework/Loaders/DicomVolumeLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Volumes/DicomVolumeImage.h"
-#include "SeriesFramesLoader.h"
-#include "SeriesMetadataLoader.h"
-
-namespace OrthancStone
-{
-  class DicomVolumeLoader : 
-    public ObserverBase<DicomVolumeLoader>,
-    public IObservable
-  {
-  private:
-    boost::shared_ptr<SeriesFramesLoader>  framesLoader_;
-    boost::shared_ptr<DicomVolumeImage>    volume_;
-    bool                                   isValid_;
-    bool                                   started_;
-    size_t                                 remaining_;
-
-    DicomVolumeLoader(boost::shared_ptr<SeriesFramesLoader>& framesLoader,
-                      bool computeRange);
-
-    void Handle(const OrthancStone::SeriesFramesLoader::FrameLoadedMessage& message);
-
-  public:
-    class VolumeReadyMessage : public OriginMessage<DicomVolumeLoader>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    public:
-      VolumeReadyMessage(const DicomVolumeLoader& loader) :
-        OriginMessage(loader)
-      {
-      }
-
-      const DicomVolumeImage& GetVolume() const
-      {
-        assert(GetOrigin().GetVolume());
-        return *GetOrigin().GetVolume();
-      }
-    };
-
-
-    class VolumeUpdatedMessage : public OriginMessage<DicomVolumeLoader>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      unsigned int   axial_;
-
-    public:
-      VolumeUpdatedMessage(const DicomVolumeLoader& loader,
-                           unsigned int axial) :
-        OriginMessage(loader),
-        axial_(axial)
-      {
-      }
-
-      unsigned int GetAxialIndex() const
-      {
-        return axial_;
-      }
-
-      const DicomVolumeImage& GetVolume() const
-      {
-        assert(GetOrigin().GetVolume());
-        return *GetOrigin().GetVolume();
-      }
-    };
-
-
-    class Factory : public ILoaderFactory
-    {
-    private:
-      SeriesFramesLoader::Factory  framesFactory_;
-      bool                         computeRange_;
-
-    public:
-      Factory(LoadedDicomResources& instances);
-
-      Factory(const SeriesMetadataLoader::SuccessMessage& metadata);
-
-      void SetComputeRange(bool computeRange)
-      {
-        computeRange_ = computeRange;
-      }
-
-      void SetDicomDir(const std::string& dicomDirPath,
-                       boost::shared_ptr<LoadedDicomResources> dicomDir)
-      {
-        framesFactory_.SetDicomDir(dicomDirPath, dicomDir);
-      }
-
-      virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& context) ORTHANC_OVERRIDE;
-    };
-
-    bool IsValid() const
-    {
-      return isValid_;
-    }
-
-    bool IsFullyLoaded() const
-    {
-      return remaining_ == 0;
-    }
-
-    boost::shared_ptr<DicomVolumeImage> GetVolume() const
-    {
-      return volume_;
-    }
-
-    const SeriesOrderedFrames& GetOrderedFrames() const
-    {
-      return framesLoader_->GetOrderedFrames();
-    }
-
-    void Start(int priority,
-               const DicomSource& source);
-  };
-}
--- a/Framework/Loaders/GenericLoadersContext.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GenericLoadersContext.h"
-
-namespace OrthancStone
-{
-  class GenericLoadersContext::Locker : public ILoadersContext::ILock
-  {
-  private:
-    GenericLoadersContext& that_;
-    boost::recursive_mutex::scoped_lock lock_;
-
-  public:
-    Locker(GenericLoadersContext& that) :
-      that_(that),
-      lock_(that.mutex_)
-    {
-      if (!that_.scheduler_)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-      
-    virtual ILoadersContext& GetContext() const ORTHANC_OVERRIDE
-    {
-      return that_;
-    };
-
-    virtual void AddLoader(boost::shared_ptr<IObserver> loader) ORTHANC_OVERRIDE
-    {
-      that_.loaders_.push_back(loader);
-    }
-
-    virtual IObservable& GetOracleObservable() const ORTHANC_OVERRIDE
-    {
-      return that_.oracleObservable_;
-    }
-
-    virtual void Schedule(boost::shared_ptr<IObserver> receiver,
-                          int priority,
-                          IOracleCommand* command /* Takes ownership */) ORTHANC_OVERRIDE
-    {
-      that_.scheduler_->Schedule(receiver, priority, command);
-    };
-
-    virtual void CancelRequests(boost::shared_ptr<IObserver> receiver) ORTHANC_OVERRIDE
-    {
-      that_.scheduler_->CancelRequests(receiver);
-    }
-
-    virtual void CancelAllRequests() ORTHANC_OVERRIDE
-    {
-      that_.scheduler_->CancelAllRequests();
-    }
-
-    virtual void GetStatistics(uint64_t& scheduledCommands,
-                               uint64_t& processedCommands) ORTHANC_OVERRIDE
-    {
-      scheduledCommands = that_.scheduler_->GetTotalScheduled();
-      processedCommands = that_.scheduler_->GetTotalProcessed();
-    }
-  };
-
-
-  void GenericLoadersContext::EmitMessage(boost::weak_ptr<IObserver> observer,
-                                          const IMessage& message)
-  {
-    boost::recursive_mutex::scoped_lock lock(mutex_);
-    //LOG(INFO) << "  inside emit lock: " << message.GetIdentifier().AsString();
-    oracleObservable_.EmitMessage(observer, message);
-    //LOG(INFO) << "  outside emit lock";
-  }
-
-
-  GenericLoadersContext::GenericLoadersContext(unsigned int maxHighPriority,
-                                               unsigned int maxStandardPriority,
-                                               unsigned int maxLowPriority)
-  {
-    oracle_.reset(new ThreadedOracle(*this));
-    scheduler_ = OracleScheduler::Create(*oracle_, oracleObservable_, *this,
-                                         maxHighPriority, maxStandardPriority, maxLowPriority);
-
-    if (!scheduler_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-  GenericLoadersContext::~GenericLoadersContext()
-  {
-    LOG(INFO) << "scheduled commands: " << scheduler_->GetTotalScheduled()
-                 << ", processed commands: " << scheduler_->GetTotalProcessed();
-    scheduler_.reset();
-    //LOG(INFO) << "counter: " << scheduler_.use_count();
-  }
-
-  
-  void GenericLoadersContext::SetOrthancParameters(const Orthanc::WebServiceParameters& parameters)
-  {
-    boost::recursive_mutex::scoped_lock lock(mutex_);
-    oracle_->SetOrthancParameters(parameters);
-  }
-
-  
-  void GenericLoadersContext::SetRootDirectory(const std::string& root)
-  {
-    boost::recursive_mutex::scoped_lock lock(mutex_);
-    oracle_->SetRootDirectory(root);
-  }
-
-  
-  void GenericLoadersContext::SetDicomCacheSize(size_t size)
-  {
-    boost::recursive_mutex::scoped_lock lock(mutex_);
-    oracle_->SetDicomCacheSize(size);
-  }
-
-  
-  void GenericLoadersContext::StartOracle()
-  {
-    boost::recursive_mutex::scoped_lock lock(mutex_);
-    oracle_->Start();
-    //LOG(INFO) << "STARTED ORACLE";
-  }
-
-  
-  void GenericLoadersContext::StopOracle()
-  {
-    /**
-     * DON'T lock "mutex_" here, otherwise Stone won't be able to
-     * stop if one command being executed by the oracle has to emit
-     * a message (method "EmitMessage()" would have to lock the
-     * mutex too).
-     **/
-      
-    //LOG(INFO) << "STOPPING ORACLE";
-    oracle_->Stop();
-    //LOG(INFO) << "STOPPED ORACLE";
-  }
-
-  
-  void GenericLoadersContext::WaitUntilComplete()
-  {
-    for (;;)
-    {
-      {
-        boost::recursive_mutex::scoped_lock lock(mutex_);
-        if (scheduler_ &&
-            scheduler_->GetTotalScheduled() == scheduler_->GetTotalProcessed())
-        {
-          return;
-        }
-      }
-
-      boost::this_thread::sleep(boost::posix_time::milliseconds(100));
-    }
-  }
-   
-  ILoadersContext::ILock* GenericLoadersContext::Lock()
-  {
-    return new Locker(*this);
-  }
-}
--- a/Framework/Loaders/GenericLoadersContext.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "../Messages/IMessageEmitter.h"
-#include "../Oracle/ThreadedOracle.h"
-#include "ILoadersContext.h"
-#include "DicomSource.h"
-#include "OracleScheduler.h"
-
-#include <boost/thread/recursive_mutex.hpp>
-
-namespace OrthancStone
-{
-  class GenericLoadersContext : 
-    public ILoadersContext,
-    private IMessageEmitter
-  {
-  private:
-    class Locker;
-
-    // "Recursive mutex" is necessary, to be able to run
-    // "ILoaderFactory" from a message handler triggered by
-    // "EmitMessage()"
-    boost::recursive_mutex  mutex_;
-
-    IObservable                         oracleObservable_;
-    std::unique_ptr<ThreadedOracle>     oracle_;
-    boost::shared_ptr<OracleScheduler>  scheduler_;
-
-    // Necessary to keep the loaders persistent (including global
-    // function promises), after the function that created them is
-    // left. This avoids creating one global variable for each loader.
-    std::list< boost::shared_ptr<IObserver> >  loaders_; 
-
-    virtual void EmitMessage(boost::weak_ptr<IObserver> observer,
-                             const IMessage& message) ORTHANC_OVERRIDE;
-
-  public:
-    GenericLoadersContext(unsigned int maxHighPriority,
-                          unsigned int maxStandardPriority,
-                          unsigned int maxLowPriority);
-
-    virtual ~GenericLoadersContext();
-   
-    virtual ILock* Lock() ORTHANC_OVERRIDE;
-
-    void SetOrthancParameters(const Orthanc::WebServiceParameters& parameters);
-
-    void SetRootDirectory(const std::string& root);
-    
-    void SetDicomCacheSize(size_t size);
-
-    void StartOracle();
-
-    void StopOracle();
-
-    void WaitUntilComplete();
-  };
-}
--- a/Framework/Loaders/IFetchingItemsSorter.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/noncopyable.hpp>
-#include <vector>
-
-namespace OrthancStone
-{
-  class IFetchingItemsSorter : public boost::noncopyable
-  {
-  public:
-    class IFactory : public boost::noncopyable
-    {
-    public:
-      virtual ~IFactory()
-      {
-      }
-
-      virtual IFetchingItemsSorter* CreateSorter(unsigned int itemsCount) const = 0;
-    };
-
-    virtual ~IFetchingItemsSorter()
-    {
-    }
-
-    virtual unsigned int GetItemsCount() const = 0;
-
-    // Sort a set of items given the current item
-    virtual void Sort(std::vector<unsigned int>& target,
-                      unsigned int current) = 0;
-  };
-};
--- a/Framework/Loaders/IFetchingStrategy.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/noncopyable.hpp>
-
-namespace OrthancStone
-{
-  class IFetchingStrategy : public boost::noncopyable
-  {
-  public:
-    virtual ~IFetchingStrategy()
-    {
-    }
-
-    virtual unsigned int GetItemsCount() const = 0;
-
-    virtual unsigned int GetMaxQuality() const = 0;
-
-    virtual bool GetNext(unsigned int& item,
-                         unsigned int& quality) = 0;
-
-    virtual void SetCurrent(unsigned int item) = 0;
-
-    // Ask the strategy to re-schedule the item with the lowest
-    // priority in the fetching order. This allows to know which item
-    // should be dropped from a cache.
-    virtual void RecycleFurthest(unsigned int& item) = 0;
-  };
-};
--- a/Framework/Loaders/ILoaderFactory.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ILoadersContext.h"
-
-namespace OrthancStone
-{
-  class ILoaderFactory : public boost::noncopyable
-  {
-  public:
-    virtual ~ILoaderFactory()
-    {
-    }
-
-    /**
-     * Factory function that creates a new loader, to be used by the
-     * Stone loaders context.
-     **/
-    virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& context) = 0;
-  };
-}
--- a/Framework/Loaders/ILoadersContext.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IObserver.h"
-#include "../Messages/IObservable.h"
-#include "../Oracle/IOracleCommand.h"
-
-#include <boost/shared_ptr.hpp>
-
-namespace OrthancStone
-{
-  class ILoadersContext : public boost::noncopyable
-  {
-  public:
-    class ILock : public boost::noncopyable
-    {
-    public:
-      virtual ~ILock()
-      {
-      }
-
-      /**
-       * This method is useful for loaders that must be able to
-       * re-lock the Stone loaders context in the future (for instance
-       * to schedule new commands once some command is processed).
-       **/
-      virtual ILoadersContext& GetContext() const = 0;
-
-      /**
-       * Get a reference to the observable against which a loader must
-       * listen to be informed of messages issued by the oracle once
-       * some command is processed.
-       **/
-      virtual IObservable& GetOracleObservable() const = 0;
-
-      /**
-       * Schedule a new command for further processing by the
-       * oracle. The "receiver" argument indicates to which object the
-       * notification messages are sent by the oracle upon completion
-       * of the command. The command is possibly not directly sent to
-       * the oracle: Instead, an internal "OracleScheduler" object is
-       * often used as a priority queue to rule the order in which
-       * commands are actually sent to the oracle. Hence the
-       * "priority" argument (commands with lower value are executed
-       * first).
-       **/
-      virtual void Schedule(boost::shared_ptr<IObserver> receiver,
-                            int priority,
-                            IOracleCommand* command /* Takes ownership */) = 0;
-
-      /**
-       * Cancel all the commands that are waiting in the
-       * "OracleScheduler" queue and that are linked to the given
-       * receiver (i.e. the observer that was specified at the time
-       * method "Schedule()" was called). This is useful for real-time
-       * processing, as it allows to replace commands that were
-       * scheduled in the past by more urgent commands.
-       *
-       * Note that this call does not affect commands that would have
-       * already be sent to the oracle. As a consequence, the receiver
-       * might still receive messages that were sent to the oracle
-       * before the cancellation (be prepared to handle such
-       * messages).
-       **/
-      virtual void CancelRequests(boost::shared_ptr<IObserver> receiver) = 0;
-
-      /**
-       * Same as "CancelRequests()", but targets all the receivers.
-       **/
-      virtual void CancelAllRequests() = 0;
-
-      /**
-       * Add a reference to the given observer in the Stone loaders
-       * context. This can be used to match the lifetime of a loader
-       * with the lifetime of the Stone context: This is useful if
-       * your Stone application does not keep a reference to the
-       * loader by itself (typically in global promises), which would
-       * make the loader disappear as soon as the scope of the
-       * variable is left.
-       **/
-      virtual void AddLoader(boost::shared_ptr<IObserver> loader) = 0;
-
-      /**
-       * Returns the number of commands that were scheduled and
-       * processed using the "Schedule()" method. By "processed"
-       * commands, we refer to the number of commands that were either
-       * executed by the oracle, or canceled by the user. So the
-       * counting sequences are monotonically increasing over time.
-       **/
-      virtual void GetStatistics(uint64_t& scheduledCommands,
-                                 uint64_t& processedCommands) = 0;
-    };
-
-    virtual ~ILoadersContext()
-    {
-    }
-
-    /**
-     * Locks the Stone loaders context, to give access to its
-     * underlying features. This is important for Stone applications
-     * running in a multi-threaded environment, for which a global
-     * mutex is locked.
-     **/
-    virtual ILock* Lock() = 0;
-  };
-}
--- a/Framework/Loaders/LoadedDicomResources.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "LoadedDicomResources.h"
-
-#include <OrthancException.h>
-
-#include <cassert>
-
-
-namespace OrthancStone
-{
-  void LoadedDicomResources::Flatten()
-  {
-    // Lazy generation of a "std::vector" from the "std::map"
-    if (flattened_.empty())
-    {
-      flattened_.resize(resources_.size());
-
-      size_t pos = 0;
-      for (Resources::const_iterator it = resources_.begin(); it != resources_.end(); ++it)
-      {
-        assert(it->second != NULL);
-        flattened_[pos++] = it->second;
-      }
-    }
-    else
-    {
-      // No need to flatten
-      assert(flattened_.size() == resources_.size());
-    }
-  }
-
-
-  void LoadedDicomResources::AddFromDicomWebInternal(const Json::Value& dicomweb)
-  {
-    assert(dicomweb.type() == Json::objectValue);
-    Orthanc::DicomMap dicom;
-    dicom.FromDicomWeb(dicomweb);
-    AddResource(dicom);
-  }
-
-  
-  LoadedDicomResources::LoadedDicomResources(const LoadedDicomResources& other,
-                                             const Orthanc::DicomTag& indexedTag) :
-    indexedTag_(indexedTag)
-  {
-    for (Resources::const_iterator it = other.resources_.begin();
-         it != other.resources_.end(); ++it)
-    {
-      assert(it->second != NULL);
-      AddResource(*it->second);
-    }
-  }
-
-  void LoadedDicomResources::Clear()
-  {
-    for (Resources::iterator it = resources_.begin(); it != resources_.end(); ++it)
-    {
-      assert(it->second != NULL);
-      delete it->second;
-    }
-
-    resources_.clear();
-    flattened_.clear();
-  }
-
-
-  Orthanc::DicomMap& LoadedDicomResources::GetResource(size_t index)
-  {
-    Flatten();
-
-    if (index >= flattened_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      assert(flattened_[index] != NULL);
-      return *flattened_[index];
-    }
-  }
-
-
-  void LoadedDicomResources::MergeResource(Orthanc::DicomMap& target,
-                                           const std::string& id) const
-  {
-    Resources::const_iterator it = resources_.find(id);
-    
-    if (it == resources_.end())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem);
-    }
-    else
-    {
-      assert(it->second != NULL);
-      target.Merge(*it->second);
-    }
-  }
-  
-
-  bool LoadedDicomResources::LookupStringValue(std::string& target,
-                                               const std::string& id,
-                                               const Orthanc::DicomTag& tag) const
-  {
-    Resources::const_iterator found = resources_.find(id);
-
-    if (found == resources_.end())
-    {
-      return false;
-    }
-    else
-    {
-      assert(found->second != NULL);
-      return found->second->LookupStringValue(target, tag, false);
-    }  
-  }
-
-  
-  void LoadedDicomResources::AddResource(const Orthanc::DicomMap& dicom)
-  {
-    std::string id;
-    
-    if (dicom.LookupStringValue(id, indexedTag_, false /* no binary value */) &&
-        resources_.find(id) == resources_.end() /* Don't index twice the same resource */)
-    {
-      resources_[id] = dicom.Clone();
-      flattened_.clear();   // Invalidate the flattened version 
-    }
-  }
-
-
-  void LoadedDicomResources::AddFromOrthanc(const Json::Value& tags)
-  {
-    Orthanc::DicomMap dicom;
-    dicom.FromDicomAsJson(tags);
-    AddResource(dicom);
-  }
-
-
-  void LoadedDicomResources::AddFromDicomWeb(const Json::Value& dicomweb)
-  {
-    if (dicomweb.type() == Json::objectValue)
-    {
-      AddFromDicomWebInternal(dicomweb);
-    }
-    else if (dicomweb.type() == Json::arrayValue)
-    {
-      for (Json::Value::ArrayIndex i = 0; i < dicomweb.size(); i++)
-      {
-        if (dicomweb[i].type() == Json::objectValue)
-        {
-          AddFromDicomWebInternal(dicomweb[i]);
-        }
-        else
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-        }
-      }
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-    }
-  }
-
-
-  bool LoadedDicomResources::LookupTagValueConsensus(std::string& target,
-                                                     const Orthanc::DicomTag& tag) const
-  {
-    typedef std::map<std::string, unsigned int>  Counter;
-
-    Counter counter;
-
-    for (Resources::const_iterator it = resources_.begin(); it != resources_.end(); ++it)
-    {
-      assert(it->second != NULL);
-      
-      std::string value;
-      if (it->second->LookupStringValue(value, tag, false))
-      {
-        Counter::iterator found = counter.find(value);
-        if (found == counter.end())
-        {
-          counter[value] = 1;
-        }
-        else
-        {
-          found->second ++;
-        }
-      }
-    }
-
-    Counter::const_iterator best = counter.end();
-    
-    for (Counter::const_iterator it = counter.begin(); it != counter.end(); ++it)
-    {
-      if (best == counter.end() ||
-          best->second < it->second)
-      {
-        best = it;
-      }
-    }
-
-    if (best == counter.end())
-    {
-      return false;
-    }
-    else
-    {
-      target = best->first;
-      return true;
-    }
-  }
-}
--- a/Framework/Loaders/LoadedDicomResources.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <DicomFormat/DicomMap.h>
-
-
-namespace OrthancStone
-{
-  /**
-    Stores an indexed collection of DicomMap objects. The index is a 
-    user-specified DicomTag.
-  */
-  class LoadedDicomResources : public boost::noncopyable
-  {
-  private:
-    typedef std::map<std::string, Orthanc::DicomMap*>  Resources;
-
-    Orthanc::DicomTag                indexedTag_;
-    Resources                        resources_;
-    std::vector<Orthanc::DicomMap*>  flattened_;
-
-    void Flatten();
-
-    void AddFromDicomWebInternal(const Json::Value& dicomweb);
-
-  public:
-    LoadedDicomResources(const Orthanc::DicomTag& indexedTag) :
-      indexedTag_(indexedTag)
-    {
-    }
-
-    // Re-index another set of resources using another tag
-    LoadedDicomResources(const LoadedDicomResources& other,
-                         const Orthanc::DicomTag& indexedTag);
-
-    ~LoadedDicomResources()
-    {
-      Clear();
-    }
-
-    const Orthanc::DicomTag& GetIndexedTag() const
-    {
-      return indexedTag_;
-    }
-  
-    void Clear();
-
-    size_t GetSize() const
-    {
-      return resources_.size();
-    }
-
-    Orthanc::DicomMap& GetResource(size_t index);
-
-    bool HasResource(const std::string& id) const
-    {
-      return resources_.find(id) != resources_.end();
-    }
-
-    void MergeResource(Orthanc::DicomMap& target,
-                       const std::string& id) const;
-  
-    bool LookupStringValue(std::string& target,
-                           const std::string& id,
-                           const Orthanc::DicomTag& tag) const;
-
-    void AddResource(const Orthanc::DicomMap& dicom);
-
-    void AddFromOrthanc(const Json::Value& tags);
-  
-    void AddFromDicomWeb(const Json::Value& dicomweb);
-
-    bool LookupTagValueConsensus(std::string& target,
-                                 const Orthanc::DicomTag& tag) const;
-  };
-}
--- a/Framework/Loaders/LoaderCache.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "LoaderCache.h"
-
-#include "../StoneException.h"
-#include "OrthancSeriesVolumeProgressiveLoader.h"
-#include "OrthancMultiframeVolumeLoader.h"
-#include "DicomStructureSetLoader.h"
-
-#include "../Loaders/ILoadersContext.h"
-
-#if ORTHANC_ENABLE_WASM == 1
-# include <unistd.h>
-# include "../Oracle/WebAssemblyOracle.h"
-#else
-# include "../Oracle/ThreadedOracle.h"
-#endif
-
-#include "../Volumes/DicomVolumeImage.h"
-#include "../Volumes/DicomVolumeImageMPRSlicer.h"
-
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-namespace OrthancStone
-{
-  LoaderCache::LoaderCache(OrthancStone::ILoadersContext& loadersContext, bool useCtProgressiveQuality)
-    : loadersContext_(loadersContext)
-    , useCtProgressiveQuality_(useCtProgressiveQuality)
-
-  {
-
-  }
-
-  boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> 
-    LoaderCache::GetSeriesVolumeProgressiveLoader(std::string seriesUuid)
-  {
-    try
-    {
-      // normalize keys a little
-      NormalizeUuid(seriesUuid);
-
-      // find in cache
-      if (seriesVolumeProgressiveLoaders_.find(seriesUuid) == seriesVolumeProgressiveLoaders_.end())
-      {
-        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
-
-        boost::shared_ptr<OrthancStone::DicomVolumeImage> volumeImage(new OrthancStone::DicomVolumeImage);
-        boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> loader;
-      
-        // true means "use progressive quality"
-        // false means "load high quality slices only"
-        loader = OrthancSeriesVolumeProgressiveLoader::Create(loadersContext_, volumeImage, useCtProgressiveQuality_);
-        loader->LoadSeries(seriesUuid);
-        seriesVolumeProgressiveLoaders_[seriesUuid] = loader;
-      }
-      else
-      {
-//        LOG(TRACE) << "LoaderCache::GetSeriesVolumeProgressiveLoader : returning cached loader for seriesUUid = " << seriesUuid;
-      }
-      return seriesVolumeProgressiveLoaders_[seriesUuid];
-    }
-    catch (const Orthanc::OrthancException& e)
-    {
-      if (e.HasDetails())
-      {
-        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What() << " Details: " << e.GetDetails();
-      }
-      else
-      {
-        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What();
-      }
-      throw;
-    }
-    catch (const std::exception& e)
-    {
-      LOG(ERROR) << "std::exception in LoaderCache: " << e.what();
-      throw;
-    }
-    catch (...)
-    {
-      LOG(ERROR) << "Unknown exception in LoaderCache";
-      throw;
-    }
-  }
-
-  boost::shared_ptr<OrthancMultiframeVolumeLoader> LoaderCache::GetMultiframeVolumeLoader(std::string instanceUuid)
-  {
-    // normalize keys a little
-    NormalizeUuid(instanceUuid);
-
-    // if the loader is not available, let's trigger its creation
-    if(multiframeVolumeLoaders_.find(instanceUuid) == multiframeVolumeLoaders_.end())
-    {
-      GetMultiframeDicomVolumeImageMPRSlicer(instanceUuid);
-    }
-    ORTHANC_ASSERT(multiframeVolumeLoaders_.find(instanceUuid) != multiframeVolumeLoaders_.end());
-
-    return multiframeVolumeLoaders_[instanceUuid];
-  }
-
-  boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer> LoaderCache::GetMultiframeDicomVolumeImageMPRSlicer(std::string instanceUuid)
-  {
-    try
-    {
-      // normalize keys a little
-      NormalizeUuid(instanceUuid);
-
-      // find in cache
-      if (dicomVolumeImageMPRSlicers_.find(instanceUuid) == dicomVolumeImageMPRSlicers_.end())
-      {
-        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
-        boost::shared_ptr<OrthancStone::DicomVolumeImage> volumeImage(new OrthancStone::DicomVolumeImage);
-        boost::shared_ptr<OrthancMultiframeVolumeLoader> loader;
-        {
-          loader = OrthancMultiframeVolumeLoader::Create(loadersContext_, volumeImage);
-          loader->LoadInstance(instanceUuid);
-        }
-        multiframeVolumeLoaders_[instanceUuid] = loader;
-        boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer> mprSlicer(new OrthancStone::DicomVolumeImageMPRSlicer(volumeImage));
-        dicomVolumeImageMPRSlicers_[instanceUuid] = mprSlicer;
-      }
-      return dicomVolumeImageMPRSlicers_[instanceUuid];
-    }
-    catch (const Orthanc::OrthancException& e)
-    {
-      if (e.HasDetails())
-      {
-        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What() << " Details: " << e.GetDetails();
-      }
-      else
-      {
-        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What();
-      }
-      throw;
-    }
-    catch (const std::exception& e)
-    {
-      LOG(ERROR) << "std::exception in LoaderCache: " << e.what();
-      throw;
-    }
-    catch (...)
-    {
-      LOG(ERROR) << "Unknown exception in LoaderCache";
-      throw;
-    }
-  }
-  
-  std::string LoaderCache::BuildDicomStructureSetLoaderKey(
-    const std::string& instanceUuid,
-    const std::string& uniqueKey)
-  {
-    return instanceUuid + "_" + uniqueKey;
-  }
-
-  boost::shared_ptr<DicomStructureSetLoader> LoaderCache::GetDicomStructureSetLoader(
-      std::string inInstanceUuid, 
-      const std::vector<std::string>& initiallyVisibleStructures,
-      const std::string& uniqueKey)
-  {
-    try
-    {
-      // normalize keys a little
-      NormalizeUuid(inInstanceUuid);
-
-      std::string entryKey = BuildDicomStructureSetLoaderKey(inInstanceUuid, uniqueKey);
-
-      // find in cache
-      if (dicomStructureSetLoaders_.find(entryKey) == dicomStructureSetLoaders_.end())
-      {
-        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
-
-        boost::shared_ptr<DicomStructureSetLoader> loader;
-        {
-          loader = DicomStructureSetLoader::Create(loadersContext_);
-          loader->LoadInstance(inInstanceUuid, initiallyVisibleStructures);
-        }
-        dicomStructureSetLoaders_[entryKey] = loader;
-      }
-      return dicomStructureSetLoaders_[entryKey];
-    }
-    catch (const Orthanc::OrthancException& e)
-    {
-      if (e.HasDetails())
-      {
-        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What() << " Details: " << e.GetDetails();
-      }
-      else
-      {
-        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What();
-      }
-      throw;
-    }
-    catch (const std::exception& e)
-    {
-      LOG(ERROR) << "std::exception in LoaderCache: " << e.what();
-      throw;
-    }
-    catch (...)
-    {
-      LOG(ERROR) << "Unknown exception in LoaderCache";
-      throw;
-    }
-  }
-
-  void LoaderCache::ClearCache()
-  {
-    std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
-    
-#ifndef NDEBUG
-    // ISO way of checking for debug builds
-    DebugDisplayObjRefCounts();
-#endif
-    seriesVolumeProgressiveLoaders_.clear();
-    multiframeVolumeLoaders_.clear();
-    dicomVolumeImageMPRSlicers_.clear();
-    dicomStructureSetLoaders_.clear();
-
-  }
-
-  template<typename T> void DebugDisplayObjRefCountsInMap(
-    const std::string& name, const std::map<std::string, boost::shared_ptr<T> >& myMap)
-  {
-    LOG(TRACE) << "Map \"" << name << "\" ref counts:";
-    size_t i = 0;
-    for (typename std::map<std::string, boost::shared_ptr<T> >::const_iterator 
-           it = myMap.begin(); it != myMap.end(); ++it)
-    {
-      LOG(TRACE) << "  element #" << i << ": ref count = " << it->second.use_count();
-      i++;
-    }
-  }
-
-  void LoaderCache::DebugDisplayObjRefCounts()
-  {
-    DebugDisplayObjRefCountsInMap("seriesVolumeProgressiveLoaders_", seriesVolumeProgressiveLoaders_);
-    DebugDisplayObjRefCountsInMap("multiframeVolumeLoaders_", multiframeVolumeLoaders_);
-    DebugDisplayObjRefCountsInMap("dicomVolumeImageMPRSlicers_", dicomVolumeImageMPRSlicers_);
-    DebugDisplayObjRefCountsInMap("dicomStructureSetLoaders_", dicomStructureSetLoaders_);
-  }
-
-  /**
-  This method could have been called StripSpacesAndChangeToLower but we might want to 
-  add some UUID validation to the argument
-  */
-  void LoaderCache::NormalizeUuid(std::string& uuid)
-  {
-    std::string temp = Orthanc::Toolbox::StripSpaces(uuid);
-    Orthanc::Toolbox::ToLowerCase(temp);
-    uuid.swap(temp);
-  }
-}
--- a/Framework/Loaders/LoaderCache.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "../Volumes/DicomVolumeImageMPRSlicer.h"
-#include "OrthancSeriesVolumeProgressiveLoader.h"
-#include "OrthancMultiframeVolumeLoader.h"
-#include "DicomStructureSetLoader.h"
-
-#include <boost/shared_ptr.hpp>
-
-#include <map>
-#include <string>
-#include <vector>
-
-namespace OrthancStone
-{
-  class ILoadersContext;
-}
-
-namespace OrthancStone
-{
-  class LoaderCache
-  {
-  public:
-
-    virtual ~LoaderCache() {}
-
-    /**
-    By default, the CT loader in loader cache will only download the highest quality slices.
-    If you pass true for useCtProgressiveQuality, jpeg (50/100 quality), then jpeg (90/100 quality) 
-    then eventually uncompressed 16-bit images will be loaded. 
-    */
-    LoaderCache(OrthancStone::ILoadersContext& loadersContext, bool useCtProgressiveQuality = false);
-
-    boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader>
-      GetSeriesVolumeProgressiveLoader      (std::string seriesUuid);
-    
-    boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer>
-      GetMultiframeDicomVolumeImageMPRSlicer(std::string instanceUuid);
-
-    boost::shared_ptr<OrthancMultiframeVolumeLoader>
-      GetMultiframeVolumeLoader(std::string instanceUuid);
-
-    /**
-    The DicomStructureSetLoader instances are stored in a map and indexed
-    by a key built from instanceUuid and uniqueKey.
-
-    If instanceUuid and uniqueKey correspond to an already existing loader, it is returned.
-
-    Please note that initiallyVisibleStructures is only used if the call results in the creation
-    of a new loader. In that case, the value is passed to the constructor.
-    */
-    boost::shared_ptr<DicomStructureSetLoader>
-      GetDicomStructureSetLoader(
-        std::string instanceUuid,
-        const std::vector<std::string>& initiallyVisibleStructures,
-        const std::string& uniqueKey = "");
-
-    std::string BuildDicomStructureSetLoaderKey(
-        const std::string& instanceUuid,
-        const std::string& uniqueKey = "");
-
-    void ClearCache();
-
-    /**
-    Service method static and exposed for unit tests.
-    */
-    static void NormalizeUuid(std::string& uuid);
-
-  protected:
-    
-    void DebugDisplayObjRefCounts();
-
-    OrthancStone::ILoadersContext& loadersContext_;
-    bool                           useCtProgressiveQuality_;
-
-    std::map<std::string, boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> >
-      seriesVolumeProgressiveLoaders_;
-    std::map<std::string, boost::shared_ptr<OrthancMultiframeVolumeLoader> >
-      multiframeVolumeLoaders_;
-    std::map<std::string, boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer> >
-      dicomVolumeImageMPRSlicers_;
-    std::map<std::string, boost::shared_ptr<DicomStructureSetLoader> >
-      dicomStructureSetLoaders_;
-  };
-}
-
--- a/Framework/Loaders/LoaderStateMachine.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "LoaderStateMachine.h"
-
-#include "../Loaders/ILoadersContext.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  void LoaderStateMachine::State::Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-  }
-      
-
-  void LoaderStateMachine::State::Handle(const OrthancStone::GetOrthancImageCommand::SuccessMessage& message)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-  }
-
-      
-  void LoaderStateMachine::State::Handle(const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-  }
-
-
-  void LoaderStateMachine::Schedule(OrthancStone::OracleCommandBase* command)
-  {
-    LOG(TRACE) << "LoaderStateMachine(" << std::hex << this << std::dec << ")::Schedule()";
-
-    std::unique_ptr<OrthancStone::OracleCommandBase> protection(command);
-
-    if (command == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-      
-    if (!command->HasPayload())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange,
-                                      "The payload must contain the next state");
-    }
-    pendingCommands_.push_back(protection.release());
-
-    Step();
-  }
-
-
-  void LoaderStateMachine::Start()
-  {
-    LOG(TRACE) << "LoaderStateMachine(" << std::hex << this << std::dec << ")::Start()";
-
-    if (active_)
-    {
-      LOG(TRACE) << "LoaderStateMachine::Start() called while active_ is true";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    active_ = true;
-
-    for (size_t i = 0; i < simultaneousDownloads_; i++)
-    {
-      Step();
-    }
-  }
-
-
-  void LoaderStateMachine::Step()
-  {
-    if (!pendingCommands_.empty() &&
-        activeCommands_ < simultaneousDownloads_)
-    {
-
-      OrthancStone::IOracleCommand* nextCommand = pendingCommands_.front();
-
-      LOG(TRACE) << "    LoaderStateMachine(" << std::hex << this << std::dec << 
-        ")::Step(): activeCommands_ (" << activeCommands_ << 
-        ") < simultaneousDownloads_ (" << simultaneousDownloads_ << 
-        ") --> will Schedule command addr " << std::hex << nextCommand << std::dec;
-
-      {
-        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
-        boost::shared_ptr<IObserver> observer(GetSharedObserver());
-        lock->Schedule(observer, 0, nextCommand); // TODO: priority!
-      }
-      pendingCommands_.pop_front();
-
-      activeCommands_++;
-    }
-    else
-    {
-      LOG(TRACE) << "    LoaderStateMachine(" << std::hex << this << std::dec << 
-        ")::Step(): activeCommands_ (" << activeCommands_ << 
-        ") >= simultaneousDownloads_ (" << simultaneousDownloads_ << 
-        ") --> will NOT Schedule command";
-    }
-  }
-
-
-  void LoaderStateMachine::Clear()
-  {
-    LOG(TRACE) << "LoaderStateMachine(" << std::hex << this << std::dec << ")::Clear()";
-    for (PendingCommands::iterator it = pendingCommands_.begin();
-         it != pendingCommands_.end(); ++it)
-    {
-      delete *it;
-    }
-
-    pendingCommands_.clear();
-  }
-  
-
-  void LoaderStateMachine::HandleExceptionMessage(const OrthancStone::OracleCommandExceptionMessage& message)
-  {
-    LOG(ERROR) << "LoaderStateMachine::HandleExceptionMessage: error in the state machine, stopping all processing";
-    LOG(ERROR) << "Error: " << message.GetException().What() << " Details: " <<
-      message.GetException().GetDetails();
-      Clear();
-  }
-
-  template <typename T>
-  void LoaderStateMachine::HandleSuccessMessage(const T& message)
-  {
-    if (activeCommands_ <= 0) {
-      LOG(ERROR) << "LoaderStateMachine(" << std::hex << this << std::dec << ")::HandleSuccessMessage : activeCommands_ should be > 0 but is: " << activeCommands_;
-    }
-    else {
-      activeCommands_--;
-      try
-      {
-        dynamic_cast<State&>(message.GetOrigin().GetPayload()).Handle(message);
-        Step();
-      }
-      catch (Orthanc::OrthancException& e)
-      {
-        LOG(ERROR) << "Error in the state machine, stopping all processing: " <<
-          e.What() << " Details: " << e.GetDetails();
-        Clear();
-      }
-    }
-  }
-
-
-  LoaderStateMachine::LoaderStateMachine(
-    OrthancStone::ILoadersContext& loadersContext)
-    : loadersContext_(loadersContext)
-    , active_(false)
-    , simultaneousDownloads_(4)
-    , activeCommands_(0)
-  {
-    using OrthancStone::ILoadersContext;
-
-    LOG(TRACE) 
-      << "LoaderStateMachine(" << std::hex << this 
-      << std::dec << ")::LoaderStateMachine()";
-  }
-
-  void LoaderStateMachine::PostConstructor()
-  {
-    std::unique_ptr<OrthancStone::ILoadersContext::ILock>
-      lock(loadersContext_.Lock());
-
-    OrthancStone::IObservable& observable = lock->GetOracleObservable();
-
-    // TODO => Move this out of constructor
-    Register<OrthancStone::OrthancRestApiCommand::SuccessMessage>(
-      observable, &LoaderStateMachine::HandleSuccessMessage);
-    Register<OrthancStone::GetOrthancImageCommand::SuccessMessage>(
-      observable, &LoaderStateMachine::HandleSuccessMessage);
-    Register<OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage>(
-      observable, &LoaderStateMachine::HandleSuccessMessage);
-    Register<OrthancStone::OracleCommandExceptionMessage>(
-      observable, &LoaderStateMachine::HandleExceptionMessage);
-  }
-
-  LoaderStateMachine::~LoaderStateMachine()
-  {
-    LOG(TRACE) << "LoaderStateMachine(" << std::hex << this << std::dec << ")::~LoaderStateMachine()";
-    Clear();
-  }
-
-  void LoaderStateMachine::SetSimultaneousDownloads(unsigned int count)
-  {
-    if (active_)
-    {
-      LOG(ERROR) << "LoaderStateMachine::SetSimultaneousDownloads called while active_ is true";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else if (count == 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);        
-    }
-    else
-    {
-      simultaneousDownloads_ = count;
-    }
-  }
-}
--- a/Framework/Loaders/LoaderStateMachine.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IObservable.h"
-#include "../Messages/ObserverBase.h"
-#include "../Oracle/GetOrthancImageCommand.h"
-#include "../Oracle/GetOrthancWebViewerJpegCommand.h"
-#include "../Oracle/IOracle.h"
-#include "../Oracle/OracleCommandExceptionMessage.h"
-#include "../Oracle/OrthancRestApiCommand.h"
-
-#include <IDynamicObject.h>
-
-#include <list>
-
-namespace OrthancStone
-{
-  class ILoadersContext;
-
-  /**
-     This class is supplied with Oracle commands and will schedule up to 
-     simultaneousDownloads_ of them at the same time, then will schedule the 
-     rest once slots become available. It is used, a.o., by the 
-     OrtancMultiframeVolumeLoader class.
-
-     To use it, you need to create commands that derive from State.
-
-     You need to initialize them with the object that must be called when 
-     an answer is received. 
-  */
-
-  class LoaderStateMachine : public OrthancStone::ObserverBase<LoaderStateMachine>
-  {
-  public:
-    class State : public Orthanc::IDynamicObject
-    {
-    private:
-      LoaderStateMachine&  that_;
-
-    public:
-      State(LoaderStateMachine& that) :
-      that_(that)
-      {
-      }
-
-      State(const State& currentState) :
-      that_(currentState.that_)
-      {
-      }
-
-      void Schedule(OrthancStone::OracleCommandBase* command) const
-      {
-        that_.Schedule(command);
-      }
-
-      template <typename T>
-      T& GetLoader() const
-      {
-        return dynamic_cast<T&>(that_);
-      }
-      
-      virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message);
-      
-      virtual void Handle(const OrthancStone::GetOrthancImageCommand::SuccessMessage& message);
-      
-      virtual void Handle(const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message);
-    };
-
-    void Schedule(OrthancStone::OracleCommandBase* command);
-
-    void Start();
-
-  private:
-    void Step();
-
-    void Clear();
-
-    void HandleExceptionMessage(const OrthancStone::OracleCommandExceptionMessage& message);
-
-    template <typename T>
-    void HandleSuccessMessage(const T& message);
-
-    typedef std::list<OrthancStone::IOracleCommand*>  PendingCommands;
-
-    OrthancStone::ILoadersContext&  loadersContext_;
-    bool                            active_;
-    unsigned int                    simultaneousDownloads_;
-    PendingCommands                 pendingCommands_;
-    unsigned int                    activeCommands_;
-
-
-  public:
-    LoaderStateMachine(OrthancStone::ILoadersContext& loadersContext);
-
-    void PostConstructor();
-
-    virtual ~LoaderStateMachine();
-
-    bool IsActive() const
-    {
-      return active_;
-    }
-
-    void SetSimultaneousDownloads(unsigned int count);  
-  };
-}
--- a/Framework/Loaders/OracleScheduler.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,557 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OracleScheduler.h"
-
-#include "../Oracle/ParseDicomFromFileCommand.h"
-
-namespace OrthancStone
-{
-  class OracleScheduler::ReceiverPayload : public Orthanc::IDynamicObject
-  {
-  private:
-    Priority   priority_;
-    boost::weak_ptr<IObserver>  receiver_;
-    std::unique_ptr<IOracleCommand>  command_;
-
-  public:
-    ReceiverPayload(Priority priority,
-                    boost::weak_ptr<IObserver> receiver,
-                    IOracleCommand* command) :
-      priority_(priority),
-      receiver_(receiver),
-      command_(command)
-    {
-      if (command == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    Priority GetActivePriority() const
-    {
-      return priority_;
-    }
-
-    boost::weak_ptr<IObserver> GetOriginalReceiver() const
-    {
-      return receiver_;
-    }
-
-    const IOracleCommand& GetOriginalCommand() const
-    {
-      assert(command_.get() != NULL);
-      return *command_;
-    }
-  }; 
-
-
-  class OracleScheduler::ScheduledCommand : public boost::noncopyable
-  {
-  private:
-    boost::weak_ptr<IObserver>     receiver_;
-    std::unique_ptr<IOracleCommand>  command_;
-
-  public:
-    ScheduledCommand(boost::shared_ptr<IObserver> receiver,
-                     IOracleCommand* command) :
-      receiver_(receiver),
-      command_(command)
-    {
-      if (command == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    boost::weak_ptr<IObserver> GetReceiver() 
-    {
-      return receiver_;
-    }
-  
-    bool IsSameReceiver(boost::shared_ptr<OrthancStone::IObserver> receiver) const
-    {
-      boost::shared_ptr<IObserver> lock(receiver_.lock());
-
-      return (lock &&
-              lock.get() == receiver.get());
-    }
-
-    IOracleCommand* WrapCommand(Priority priority)
-    {
-      if (command_.get() == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      else
-      {
-        std::unique_ptr<IOracleCommand> wrapped(command_->Clone());
-        dynamic_cast<OracleCommandBase&>(*wrapped).AcquirePayload(new ReceiverPayload(priority, receiver_, command_.release()));
-        return wrapped.release();
-      }
-    }
-  };
-
-
-
-  void OracleScheduler::ClearQueue(Queue& queue)
-  {
-    for (Queue::iterator it = queue.begin(); it != queue.end(); ++it)
-    {
-      assert(it->second != NULL);
-      delete it->second;
-
-      totalProcessed_ ++;
-    }
-
-    queue.clear();
-  }
-
-  
-  void OracleScheduler::RemoveReceiverFromQueue(Queue& queue,
-                                                boost::shared_ptr<IObserver> receiver)
-  {
-    if (!receiver)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-    
-    Queue tmp;
-  
-    for (Queue::iterator it = queue.begin(); it != queue.end(); ++it)
-    {
-      assert(it->second != NULL);
-
-      if (!(it->second->IsSameReceiver(receiver)))
-      {
-        // This promise is still active
-        tmp.insert(std::make_pair(it->first, it->second));
-      }
-      else
-      {
-        delete it->second;
-        
-        totalProcessed_ ++;
-      }
-    }
-
-    queue = tmp;
-  }
-
-  
-  void OracleScheduler::CheckInvariants() const
-  {
-#ifndef NDEBUG
-    /*char buf[1024];
-      sprintf(buf, "active: %d %d %d ; pending: %lu %lu %lu", 
-      activeHighPriorityCommands_, activeStandardPriorityCommands_, activeLowPriorityCommands_,
-      highPriorityQueue_.size(), standardPriorityQueue_.size(), lowPriorityQueue_.size());
-      LOG(INFO) << buf;*/
-  
-    assert(activeHighPriorityCommands_ <= maxHighPriorityCommands_);
-    assert(activeStandardPriorityCommands_ <= maxStandardPriorityCommands_);
-    assert(activeLowPriorityCommands_ <= maxLowPriorityCommands_);
-    assert(totalProcessed_ <= totalScheduled_);
-    
-    for (Queue::const_iterator it = standardPriorityQueue_.begin(); it != standardPriorityQueue_.end(); ++it)
-    {
-      assert(it->first > PRIORITY_HIGH &&
-             it->first < PRIORITY_LOW);
-    }
-
-    for (Queue::const_iterator it = highPriorityQueue_.begin(); it != highPriorityQueue_.end(); ++it)
-    {
-      assert(it->first <= PRIORITY_HIGH);
-    }
-
-    for (Queue::const_iterator it = lowPriorityQueue_.begin(); it != lowPriorityQueue_.end(); ++it)
-    {
-      assert(it->first >= PRIORITY_LOW);
-    }
-#endif
-  }
-
-  
-  void OracleScheduler::SpawnFromQueue(Queue& queue,
-                                       Priority priority)
-  {
-    CheckInvariants();
-
-    Queue::iterator item = queue.begin();
-    assert(item != queue.end());
-
-    std::unique_ptr<ScheduledCommand> command(dynamic_cast<ScheduledCommand*>(item->second));
-    queue.erase(item);
-
-    if (command.get() != NULL)
-    {
-      /**
-       * Only schedule the command for execution in the oracle, if its
-       * receiver has not been destroyed yet.
-       **/
-      boost::shared_ptr<IObserver> observer(command->GetReceiver().lock());
-      if (observer)
-      {
-        if (oracle_.Schedule(GetSharedObserver(), command->WrapCommand(priority)))
-        {
-          /**
-           * Executing this code if "Schedule()" returned "false"
-           * above, will result in a memory leak within
-           * "OracleScheduler", as the scheduler believes that some
-           * command is still active (i.e. pending to be executed by
-           * the oracle), hereby stalling the scheduler during its
-           * destruction, and not freeing the
-           * "shared_ptr<OracleScheduler>" of the Stone context (check
-           * out "sjo-playground/WebViewer/Backend/Leak")
-           **/
-
-          switch (priority)
-          {
-            case Priority_High:
-              activeHighPriorityCommands_ ++;
-              break;
-
-            case Priority_Standard:
-              activeStandardPriorityCommands_ ++;
-              break;
-
-            case Priority_Low:
-              activeLowPriorityCommands_ ++;
-              break;
-
-            default:
-              throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-          }
-        }
-        else
-        {
-          totalProcessed_ ++;
-        }
-      }
-    }
-    else
-    {
-      LOG(ERROR) << "NULL command, should never happen";
-    }
-
-    CheckInvariants();
-  }
-
-  
-  void OracleScheduler::SpawnCommands()
-  {
-    // Send as many commands as possible to the oracle
-    while (!highPriorityQueue_.empty())
-    {
-      if (activeHighPriorityCommands_ < maxHighPriorityCommands_)
-      {
-        // First fill the high-priority lane
-        SpawnFromQueue(highPriorityQueue_, Priority_High);
-      }
-      else if (activeStandardPriorityCommands_ < maxStandardPriorityCommands_)
-      {
-        // There remain too many high-priority commands for the
-        // high-priority lane, schedule them to the standard-priority lanes
-        SpawnFromQueue(highPriorityQueue_, Priority_Standard);
-      }
-      else if (activeLowPriorityCommands_ < maxLowPriorityCommands_)
-      {
-        SpawnFromQueue(highPriorityQueue_, Priority_Low);
-      }
-      else
-      {
-        return;   // No slot available
-      }
-    }
-  
-    while (!standardPriorityQueue_.empty())
-    {
-      if (activeStandardPriorityCommands_ < maxStandardPriorityCommands_)
-      {
-        SpawnFromQueue(standardPriorityQueue_, Priority_Standard);
-      }
-      else if (activeLowPriorityCommands_ < maxLowPriorityCommands_)
-      {
-        SpawnFromQueue(standardPriorityQueue_, Priority_Low);
-      }
-      else
-      {
-        return;
-      }
-    }
-  
-    while (!lowPriorityQueue_.empty())
-    {
-      if (activeLowPriorityCommands_ < maxLowPriorityCommands_)
-      {
-        SpawnFromQueue(lowPriorityQueue_, Priority_Low);
-      }
-      else
-      {
-        return;
-      }
-    }  
-  }
-  
-
-  void OracleScheduler::RemoveActiveCommand(const ReceiverPayload& payload)
-  {
-    CheckInvariants();
-
-    totalProcessed_ ++;
-
-    switch (payload.GetActivePriority())
-    {
-      case Priority_High:
-        assert(activeHighPriorityCommands_ > 0);
-        activeHighPriorityCommands_ --;
-        break;
-
-      case Priority_Standard:
-        assert(activeStandardPriorityCommands_ > 0);
-        activeStandardPriorityCommands_ --;
-        break;
-
-      case Priority_Low:
-        assert(activeLowPriorityCommands_ > 0);
-        activeLowPriorityCommands_ --;
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    SpawnCommands();
-
-    CheckInvariants();
-  }
-
-  
-  void OracleScheduler::Handle(const GetOrthancImageCommand::SuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
-    
-    RemoveActiveCommand(payload);
-
-    GetOrthancImageCommand::SuccessMessage bis(
-      dynamic_cast<const GetOrthancImageCommand&>(payload.GetOriginalCommand()),
-      message.GetImage(), message.GetMimeType());
-    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
-  }
-  
-
-  void OracleScheduler::Handle(const GetOrthancWebViewerJpegCommand::SuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
-    
-    RemoveActiveCommand(payload);
-
-    GetOrthancWebViewerJpegCommand::SuccessMessage bis(
-      dynamic_cast<const GetOrthancWebViewerJpegCommand&>(payload.GetOriginalCommand()),
-      message.GetImage());
-    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
-  }
-
-  
-  void OracleScheduler::Handle(const HttpCommand::SuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
-    
-    RemoveActiveCommand(payload);
-
-    HttpCommand::SuccessMessage bis(
-      dynamic_cast<const HttpCommand&>(payload.GetOriginalCommand()),
-      message.GetAnswerHeaders(), message.GetAnswer());
-    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
-  }
-
-  
-  void OracleScheduler::Handle(const OrthancRestApiCommand::SuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
-    
-    RemoveActiveCommand(payload);
-
-    OrthancRestApiCommand::SuccessMessage bis(
-      dynamic_cast<const OrthancRestApiCommand&>(payload.GetOriginalCommand()),
-      message.GetAnswerHeaders(), message.GetAnswer());
-    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
-  }
-
-  
-#if ORTHANC_ENABLE_DCMTK == 1
-  void OracleScheduler::Handle(const ParseDicomSuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
-    
-    RemoveActiveCommand(payload);
-
-    ParseDicomSuccessMessage bis(
-      dynamic_cast<const OracleCommandBase&>(payload.GetOriginalCommand()),
-      message.GetSource(), message.GetDicom(), message.GetFileSize(), message.HasPixelData());
-    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
-  }
-#endif
-  
-
-  void OracleScheduler::Handle(const ReadFileCommand::SuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
-    
-    RemoveActiveCommand(payload);
-
-    ReadFileCommand::SuccessMessage bis(
-      dynamic_cast<const ReadFileCommand&>(payload.GetOriginalCommand()),
-      message.GetContent());
-    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
-  }
-  
-
-  void OracleScheduler::Handle(const OracleCommandExceptionMessage& message)
-  {
-    const OracleCommandBase& command = dynamic_cast<const OracleCommandBase&>(message.GetOrigin());
-    
-    assert(command.HasPayload());
-    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(command.GetPayload());
-    
-    RemoveActiveCommand(payload);
-
-    OracleCommandExceptionMessage bis(payload.GetOriginalCommand(), message.GetException());
-    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
-  }  
-
-  
-  OracleScheduler::OracleScheduler(IOracle& oracle,
-                                   IMessageEmitter& emitter,
-                                   unsigned int maxHighPriority,
-                                   unsigned int maxStandardPriority,
-                                   unsigned int maxLowPriority) :
-    oracle_(oracle),
-    emitter_(emitter),
-    maxHighPriorityCommands_(maxHighPriority),
-    maxStandardPriorityCommands_(maxStandardPriority),
-    maxLowPriorityCommands_(maxLowPriority),
-    activeHighPriorityCommands_(0),
-    activeStandardPriorityCommands_(0),
-    activeLowPriorityCommands_(0),
-    totalScheduled_(0),
-    totalProcessed_(0)
-  {
-    assert(PRIORITY_HIGH < 0 &&
-           PRIORITY_LOW > 0);
-
-    if (maxLowPriority <= 0)
-    {
-      // There must be at least 1 lane available to deal with low-priority commands
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-    
-  boost::shared_ptr<OracleScheduler> OracleScheduler::Create(IOracle& oracle,
-                                                             IObservable& oracleObservable,
-                                                             IMessageEmitter& emitter,
-                                                             unsigned int maxHighPriority,
-                                                             unsigned int maxStandardPriority,
-                                                             unsigned int maxLowPriority)
-  {
-    boost::shared_ptr<OracleScheduler> scheduler
-      (new OracleScheduler(oracle, emitter, maxHighPriority, maxStandardPriority, maxLowPriority));
-    scheduler->Register<GetOrthancImageCommand::SuccessMessage>(oracleObservable, &OracleScheduler::Handle);
-    scheduler->Register<GetOrthancWebViewerJpegCommand::SuccessMessage>(oracleObservable, &OracleScheduler::Handle);
-    scheduler->Register<HttpCommand::SuccessMessage>(oracleObservable, &OracleScheduler::Handle);
-    scheduler->Register<OrthancRestApiCommand::SuccessMessage>(oracleObservable, &OracleScheduler::Handle);
-    scheduler->Register<ReadFileCommand::SuccessMessage>(oracleObservable, &OracleScheduler::Handle);
-    scheduler->Register<OracleCommandExceptionMessage>(oracleObservable, &OracleScheduler::Handle);
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    scheduler->Register<ParseDicomSuccessMessage>(oracleObservable, &OracleScheduler::Handle);
-#endif
-
-    return scheduler;
-  }
-    
-
-  OracleScheduler::~OracleScheduler()
-  {      
-    CancelAllRequests();
-  }
-
-
-  void OracleScheduler::CancelRequests(boost::shared_ptr<IObserver> receiver)
-  {
-    RemoveReceiverFromQueue(standardPriorityQueue_, receiver);
-    RemoveReceiverFromQueue(highPriorityQueue_, receiver);
-    RemoveReceiverFromQueue(lowPriorityQueue_, receiver);
-  }
-
-  
-  void OracleScheduler::CancelAllRequests()
-  {      
-    ClearQueue(standardPriorityQueue_);
-    ClearQueue(highPriorityQueue_);
-    ClearQueue(lowPriorityQueue_);
-  }
-
-
-  void OracleScheduler::Schedule(boost::shared_ptr<IObserver> receiver,
-                                 int priority,
-                                 IOracleCommand* command /* Takes ownership */)
-  {
-    std::unique_ptr<ScheduledCommand> pending(new ScheduledCommand(receiver, dynamic_cast<IOracleCommand*>(command)));
-
-    /**
-     * Safeguard to remember that a new "Handle()" method and a call
-     * to "scheduler->Register()" must be implemented for each
-     * possible oracle command.
-     **/
-    assert(command->GetType() == IOracleCommand::Type_GetOrthancImage ||
-           command->GetType() == IOracleCommand::Type_GetOrthancWebViewerJpeg ||
-           command->GetType() == IOracleCommand::Type_Http ||
-           command->GetType() == IOracleCommand::Type_OrthancRestApi ||
-           command->GetType() == IOracleCommand::Type_ParseDicomFromFile ||
-           command->GetType() == IOracleCommand::Type_ParseDicomFromWado ||
-           command->GetType() == IOracleCommand::Type_ReadFile);
-
-    if (priority <= PRIORITY_HIGH)
-    {
-      highPriorityQueue_.insert(std::make_pair(priority, pending.release()));
-    }
-    else if (priority >= PRIORITY_LOW)
-    {
-      lowPriorityQueue_.insert(std::make_pair(priority, pending.release()));
-    }
-    else
-    {
-      standardPriorityQueue_.insert(std::make_pair(priority, pending.release()));
-    }
-
-    totalScheduled_ ++;
-
-    SpawnCommands();
-  }
-}
--- a/Framework/Loaders/OracleScheduler.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../OrthancStone.h"
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error The macro ORTHANC_ENABLE_DCMTK must be defined
-#endif
-
-#include "../Messages/IMessageEmitter.h"
-#include "../Messages/ObserverBase.h"
-#include "../Oracle/GetOrthancImageCommand.h"
-#include "../Oracle/GetOrthancWebViewerJpegCommand.h"
-#include "../Oracle/HttpCommand.h"
-#include "../Oracle/IOracle.h"
-#include "../Oracle/OracleCommandExceptionMessage.h"
-#include "../Oracle/OrthancRestApiCommand.h"
-#include "../Oracle/ReadFileCommand.h"
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include "../Oracle/ParseDicomSuccessMessage.h"
-#endif
-
-namespace OrthancStone
-{
-  class OracleScheduler : public ObserverBase<OracleScheduler>
-  {
-  public:
-    static const int PRIORITY_HIGH = -1;
-    static const int PRIORITY_LOW = 100;
-  
-  private:
-    enum Priority
-    {
-      Priority_Low,
-      Priority_Standard,
-      Priority_High
-    };
-
-    class ReceiverPayload;
-    class ScheduledCommand;
-
-    typedef std::multimap<int, ScheduledCommand*>  Queue;
-
-    IOracle&  oracle_;
-    IMessageEmitter&  emitter_;
-    Queue          standardPriorityQueue_;
-    Queue          highPriorityQueue_;
-    Queue          lowPriorityQueue_;
-    unsigned int   maxHighPriorityCommands_;  // Used if priority <= PRIORITY_HIGH
-    unsigned int   maxStandardPriorityCommands_;
-    unsigned int   maxLowPriorityCommands_;  // Used if priority >= PRIORITY_LOW
-    unsigned int   activeHighPriorityCommands_;
-    unsigned int   activeStandardPriorityCommands_;
-    unsigned int   activeLowPriorityCommands_;
-    uint64_t       totalScheduled_;
-    uint64_t       totalProcessed_;
-
-    void ClearQueue(Queue& queue);
-
-    void RemoveReceiverFromQueue(Queue& queue,
-                                 boost::shared_ptr<IObserver> receiver);
-
-    void CheckInvariants() const;
-
-    void SpawnFromQueue(Queue& queue,
-                        Priority priority);
-
-    void SpawnCommands();
-
-    void RemoveActiveCommand(const ReceiverPayload& payload);
-
-    void Handle(const GetOrthancImageCommand::SuccessMessage& message);
-
-    void Handle(const GetOrthancWebViewerJpegCommand::SuccessMessage& message);
-
-    void Handle(const HttpCommand::SuccessMessage& message);
-
-    void Handle(const OrthancRestApiCommand::SuccessMessage& message);
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    void Handle(const ParseDicomSuccessMessage& message);
-#endif
-
-    void Handle(const ReadFileCommand::SuccessMessage& message);
-
-    void Handle(const OracleCommandExceptionMessage& message);
-
-    OracleScheduler(IOracle& oracle,
-                    IMessageEmitter& emitter,
-                    unsigned int maxHighPriority,
-                    unsigned int maxStandardPriority,
-                    unsigned int maxLowPriority);
-    
-  public:
-    static boost::shared_ptr<OracleScheduler> Create(IOracle& oracle,
-                                                     IObservable& oracleObservable,
-                                                     IMessageEmitter& emitter)
-    {
-      return Create(oracle, oracleObservable, emitter, 1, 4, 1);
-    }
-
-    static boost::shared_ptr<OracleScheduler> Create(IOracle& oracle,
-                                                     IObservable& oracleObservable,
-                                                     IMessageEmitter& emitter,
-                                                     unsigned int maxHighPriority,
-                                                     unsigned int maxStandardPriority,
-                                                     unsigned int maxLowPriority);
-
-    ~OracleScheduler();
-
-    unsigned int GetMaxHighPriorityCommands() const
-    {
-      return maxHighPriorityCommands_;
-    }
-
-    unsigned int GetMaxStandardPriorityCommands() const
-    {
-      return maxStandardPriorityCommands_;
-    }
-
-    unsigned int GetMaxLowPriorityCommands() const
-    {
-      return maxLowPriorityCommands_;
-    }
-
-    uint64_t GetTotalScheduled() const
-    {
-      return totalScheduled_;
-    }
-
-    uint64_t GetTotalProcessed() const
-    {
-      return totalProcessed_;
-    }
-
-    // Cancel the HTTP requests that are still pending in the queues,
-    // and that are associated with the given receiver. Note that the
-    // receiver might still receive answers to HTTP requests that were
-    // already submitted to the oracle.
-    void CancelRequests(boost::shared_ptr<IObserver> receiver);
-
-    void CancelAllRequests();
-
-    void Schedule(boost::shared_ptr<IObserver> receiver,
-                  int priority,
-                  IOracleCommand* command /* Takes ownership */);
-  };
-}
--- a/Framework/Loaders/OrthancMultiframeVolumeLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,615 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OrthancMultiframeVolumeLoader.h"
-
-#include <Endianness.h>
-#include <Toolbox.h>
-
-namespace OrthancStone
-{
-  class OrthancMultiframeVolumeLoader::LoadRTDoseGeometry : public LoaderStateMachine::State
-  {
-  private:
-    std::unique_ptr<Orthanc::DicomMap>  dicom_;
-
-  public:
-    LoadRTDoseGeometry(OrthancMultiframeVolumeLoader& that,
-                       Orthanc::DicomMap* dicom) :
-      State(that),
-      dicom_(dicom)
-    {
-      if (dicom == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-
-    }
-
-    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
-    {
-      // Complete the DICOM tags with just-received "Grid Frame Offset Vector"
-      std::string s = Orthanc::Toolbox::StripSpaces(message.GetAnswer());
-      dicom_->SetValue(Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR, s, false);
-
-      GetLoader<OrthancMultiframeVolumeLoader>().SetGeometry(*dicom_);
-    }      
-  };
-
-
-  static std::string GetSopClassUid(const Orthanc::DicomMap& dicom)
-  {
-    std::string s;
-    if (!dicom.LookupStringValue(s, Orthanc::DICOM_TAG_SOP_CLASS_UID, false))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
-                                      "DICOM file without SOP class UID");
-    }
-    else
-    {
-      return s;
-    }
-  }
-    
-
-  class OrthancMultiframeVolumeLoader::LoadGeometry : public State
-  {
-  public:
-    LoadGeometry(OrthancMultiframeVolumeLoader& that) :
-    State(that)
-    {
-    }
-      
-    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
-    {
-      OrthancMultiframeVolumeLoader& loader = GetLoader<OrthancMultiframeVolumeLoader>();
-        
-      Json::Value body;
-      message.ParseJsonBody(body);
-        
-      if (body.type() != Json::objectValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-
-      std::unique_ptr<Orthanc::DicomMap> dicom(new Orthanc::DicomMap);
-      dicom->FromDicomAsJson(body);
-
-      if (OrthancStone::StringToSopClassUid(GetSopClassUid(*dicom)) == OrthancStone::SopClassUid_RTDose)
-      {
-        // Download the "Grid Frame Offset Vector" DICOM tag, that is
-        // mandatory for RT-DOSE, but is too long to be returned by default
-          
-        std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
-        command->SetUri("/instances/" + loader.GetInstanceId() + "/content/" +
-                        Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR.Format());
-        command->AcquirePayload(new LoadRTDoseGeometry(loader, dicom.release()));
-
-        Schedule(command.release());
-      }
-      else
-      {
-        loader.SetGeometry(*dicom);
-      }
-    }
-  };
-
-  class OrthancMultiframeVolumeLoader::LoadTransferSyntax : public State
-  {
-  public:
-    LoadTransferSyntax(OrthancMultiframeVolumeLoader& that) :
-    State(that)
-    {
-    }
-      
-    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
-    {
-      GetLoader<OrthancMultiframeVolumeLoader>().SetTransferSyntax(message.GetAnswer());
-    }
-  };
-
-  class OrthancMultiframeVolumeLoader::LoadUncompressedPixelData : public State
-  {
-  public:
-    LoadUncompressedPixelData(OrthancMultiframeVolumeLoader& that) :
-    State(that)
-    {
-    }
-      
-    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
-    {
-      GetLoader<OrthancMultiframeVolumeLoader>().SetUncompressedPixelData(message.GetAnswer());
-    }
-  };
-
-  const std::string& OrthancMultiframeVolumeLoader::GetInstanceId() const
-  {
-    if (IsActive())
-    {
-      return instanceId_;
-    }
-    else
-    {
-      LOG(ERROR) << "OrthancMultiframeVolumeLoader::GetInstanceId(): (!IsActive())";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  void OrthancMultiframeVolumeLoader::ScheduleFrameDownloads()
-  {
-    if (transferSyntaxUid_.empty() ||
-        !volume_->HasGeometry())
-    {
-      return;
-    }
-    /*
-      1.2.840.10008.1.2	Implicit VR Endian: Default Transfer Syntax for DICOM
-      1.2.840.10008.1.2.1	Explicit VR Little Endian
-      1.2.840.10008.1.2.2	Explicit VR Big Endian
-
-      See https://www.dicomlibrary.com/dicom/transfer-syntax/
-    */
-    if (transferSyntaxUid_ == "1.2.840.10008.1.2" ||
-        transferSyntaxUid_ == "1.2.840.10008.1.2.1" ||
-        transferSyntaxUid_ == "1.2.840.10008.1.2.2")
-    {
-      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
-      command->SetHttpHeader("Accept-Encoding", "gzip");
-      command->SetUri("/instances/" + instanceId_ + "/content/" +
-                      Orthanc::DICOM_TAG_PIXEL_DATA.Format() + "/0");
-      command->AcquirePayload(new LoadUncompressedPixelData(*this));
-      Schedule(command.release());
-    }
-    else
-    {
-      throw Orthanc::OrthancException(
-        Orthanc::ErrorCode_NotImplemented,
-        "No support for multiframe instances with transfer syntax: " + transferSyntaxUid_);
-    }
-  }
-
-  void OrthancMultiframeVolumeLoader::SetTransferSyntax(const std::string& transferSyntax)
-  {
-    transferSyntaxUid_ = Orthanc::Toolbox::StripSpaces(transferSyntax);
-    ScheduleFrameDownloads();
-  }
-
-  void OrthancMultiframeVolumeLoader::SetGeometry(const Orthanc::DicomMap& dicom)
-  {
-    OrthancStone::DicomInstanceParameters parameters(dicom);
-    volume_->SetDicomParameters(parameters);
-      
-    Orthanc::PixelFormat format;
-    if (!parameters.GetImageInformation().ExtractPixelFormat(format, true))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-
-    double spacingZ;
-    switch (parameters.GetSopClassUid())
-    {
-      case OrthancStone::SopClassUid_RTDose:
-        spacingZ = parameters.GetThickness();
-        break;
-
-      default:
-        throw Orthanc::OrthancException(
-          Orthanc::ErrorCode_NotImplemented,
-          "No support for multiframe instances with SOP class UID: " + GetSopClassUid(dicom));
-    }
-
-    const unsigned int width = parameters.GetImageInformation().GetWidth();
-    const unsigned int height = parameters.GetImageInformation().GetHeight();
-    const unsigned int depth = parameters.GetImageInformation().GetNumberOfFrames();
-
-    {
-      OrthancStone::VolumeImageGeometry geometry;
-      geometry.SetSizeInVoxels(width, height, depth);
-      geometry.SetAxialGeometry(parameters.GetGeometry());
-      geometry.SetVoxelDimensions(parameters.GetPixelSpacingX(),
-                                  parameters.GetPixelSpacingY(), spacingZ);
-      volume_->Initialize(geometry, format, true /* Do compute range */);
-    }
-
-    volume_->GetPixelData().Clear();
-
-    ScheduleFrameDownloads();
-
-
-
-    BroadcastMessage(OrthancStone::DicomVolumeImage::GeometryReadyMessage(*volume_));
-  }
-
-
-  ORTHANC_FORCE_INLINE
-  static void CopyPixel(uint32_t& target, const void* source)
-  {
-    // TODO - check alignement?
-    target = le32toh(*reinterpret_cast<const uint32_t*>(source));
-  }
-
-  ORTHANC_FORCE_INLINE
-    static void CopyPixel(uint16_t& target, const void* source)
-  {
-    // TODO - check alignement?
-    target = le16toh(*reinterpret_cast<const uint16_t*>(source));
-  }
-
-  ORTHANC_FORCE_INLINE
-    static void CopyPixel(int16_t& target, const void* source)
-  {
-    // byte swapping is the same for unsigned and signed integers
-    // (the sign bit is always stored with the MSByte)
-    uint16_t* targetUp = reinterpret_cast<uint16_t*>(&target);
-    CopyPixel(*targetUp, source);
-  }
-
-  template <typename T>
-  void OrthancMultiframeVolumeLoader::CopyPixelDataAndComputeDistribution(
-    const std::string& pixelData, std::map<T,uint64_t>& distribution)
-  {
-    OrthancStone::ImageBuffer3D& target = volume_->GetPixelData();
-      
-    const unsigned int bpp = target.GetBytesPerPixel();
-    const unsigned int width = target.GetWidth();
-    const unsigned int height = target.GetHeight();
-    const unsigned int depth = target.GetDepth();
-
-    if (pixelData.size() != bpp * width * height * depth)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
-                                      "The pixel data has not the proper size");
-    }
-
-    if (pixelData.empty())
-    {
-      return;
-    }
-
-    // first pass to initialize map
-    {
-      const uint8_t* source = reinterpret_cast<const uint8_t*>(pixelData.c_str());
-
-      for (unsigned int z = 0; z < depth; z++)
-      {
-        for (unsigned int y = 0; y < height; y++)
-        {
-          for (unsigned int x = 0; x < width; x++)
-          {
-            T value;
-            CopyPixel(value, source);
-            distribution[value] = 0;
-            source += bpp;
-          }
-        }
-      }
-    }
-
-    {
-      const uint8_t* source = reinterpret_cast<const uint8_t*>(pixelData.c_str());
-
-      for (unsigned int z = 0; z < depth; z++)
-      {
-        OrthancStone::ImageBuffer3D::SliceWriter writer(target, OrthancStone::VolumeProjection_Axial, z);
-
-        assert(writer.GetAccessor().GetWidth() == width &&
-          writer.GetAccessor().GetHeight() == height);
-#if 0
-        for (unsigned int y = 0; y < height; y++)
-        {
-          assert(sizeof(T) == Orthanc::GetBytesPerPixel(target.GetFormat()));
-
-          T* target = reinterpret_cast<T*>(writer.GetAccessor().GetRow(y));
-
-          for (unsigned int x = 0; x < width; x++)
-          {
-            CopyPixel(*target, source);
-
-            distribution[*target] += 1;
-
-            target++;
-            source += bpp;
-          }
-        }
-#else
-        // optimized version (fixed) as of 2020-04-15
-        unsigned int pitch = writer.GetAccessor().GetPitch();
-        T* targetAddrLine = reinterpret_cast<T*>(writer.GetAccessor().GetRow(0));
-        assert(sizeof(T) == Orthanc::GetBytesPerPixel(target.GetFormat()));
-
-        for (unsigned int y = 0; y < height; y++)
-        {
-          T* targetAddrPix = targetAddrLine;
-          for (unsigned int x = 0; x < width; x++)
-          {
-            CopyPixel(*targetAddrPix, source);
-
-            distribution[*targetAddrPix] += 1;
-
-            targetAddrPix++;
-            source += bpp;
-          }
-          uint8_t* targetAddrLineBytes = reinterpret_cast<uint8_t*>(targetAddrLine) + pitch;
-          targetAddrLine = reinterpret_cast<T*>(targetAddrLineBytes);
-        }
-#endif
-      }
-    }
-  }
-
-  template <typename T>
-  void OrthancMultiframeVolumeLoader::ComputeMinMaxWithOutlierRejection(
-    const std::map<T, uint64_t>& distribution)
-  {
-    if (distribution.size() == 0)
-    {
-      LOG(ERROR) << "ComputeMinMaxWithOutlierRejection -- Volume image empty.";
-    }
-    else
-    {
-      OrthancStone::ImageBuffer3D& target = volume_->GetPixelData();
-
-      const uint64_t width = target.GetWidth();
-      const uint64_t height = target.GetHeight();
-      const uint64_t depth = target.GetDepth();
-      const uint64_t voxelCount = width * height * depth;
-
-      // now that we have distribution[pixelValue] == numberOfPixelsWithValue
-      // compute number of values and check (assertion) that it is equal to 
-      // width * height * depth 
-      {
-        typename std::map<T, uint64_t>::const_iterator it = distribution.begin();
-        uint64_t totalCount = 0;
-        distributionRawMin_ = static_cast<float>(it->first);
-
-        while (it != distribution.end())
-        {
-          T pixelValue = it->first;
-          uint64_t count = it->second;
-          totalCount += count;
-          it++;
-          if (it == distribution.end())
-            distributionRawMax_ = static_cast<float>(pixelValue);
-        }
-        LOG(INFO) << "Volume image. First distribution value = " 
-          << static_cast<float>(distributionRawMin_) 
-          << " | Last distribution value = " 
-          << static_cast<float>(distributionRawMax_);
-
-        if (totalCount != voxelCount)
-        {
-          LOG(ERROR) << "Internal error in dose distribution computation. TC (" 
-            << totalCount << ") != VoxC (" << voxelCount;
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-        }
-      }
-
-      // compute the number of voxels to reject at each end of the distribution
-      uint64_t endRejectionCount = static_cast<uint64_t>(
-        outliersHalfRejectionRate_ * voxelCount);
-
-      if (endRejectionCount > voxelCount)
-      {
-        LOG(ERROR) << "Internal error in dose distribution computation."
-          << " endRejectionCount = " << endRejectionCount
-          << " | voxelCount = " << voxelCount;
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      // this will contain the actual distribution minimum after outlier 
-      // rejection
-      T resultMin = 0;
-
-      // then start from start and remove pixel values up to 
-      // endRejectionCount voxels rejected
-      {
-        typename std::map<T, uint64_t>::const_iterator it = distribution.begin();
-        
-        uint64_t currentCount = 0;
-
-        while (it != distribution.end())
-        {
-          T pixelValue = it->first;
-          uint64_t count = it->second;
-
-          // if this pixelValue crosses the rejection threshold, let's set it
-          // and exit the loop
-          if ((currentCount <= endRejectionCount) &&
-              (currentCount + count > endRejectionCount))
-          {
-            resultMin = pixelValue;
-            break;
-          }
-          else
-          {
-            currentCount += count;
-          }
-          // and continue walking along the distribution
-          it++;
-        }
-      }
-
-      // this will contain the actual distribution maximum after outlier 
-      // rejection
-      T resultMax = 0;
-      // now start from END and remove pixel values up to 
-      // endRejectionCount voxels rejected
-      {
-        typename std::map<T, uint64_t>::const_reverse_iterator it = distribution.rbegin();
-
-        uint64_t currentCount = 0;
-
-        while (it != distribution.rend())
-        {
-          T pixelValue = it->first;
-          uint64_t count = it->second;
-
-          if ((currentCount <= endRejectionCount) &&
-              (currentCount + count > endRejectionCount))
-          {
-            resultMax = pixelValue;
-            break;
-          }
-          else
-          {
-            currentCount += count;
-          }
-          // and continue walking along the distribution
-          it++;
-        }
-      }
-      if (resultMin > resultMax)
-      {
-        LOG(ERROR) << "Internal error in dose distribution computation! " << 
-          "resultMin (" << resultMin << ") > resultMax (" << resultMax << ")";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-      computedDistributionMin_ = static_cast<float>(resultMin);
-      computedDistributionMax_ = static_cast<float>(resultMax);
-    }
-  }
-
-  template <typename T>
-  void OrthancMultiframeVolumeLoader::CopyPixelDataAndComputeMinMax(
-    const std::string& pixelData)
-  {
-    std::map<T, uint64_t> distribution;
-    CopyPixelDataAndComputeDistribution(pixelData, distribution);
-    ComputeMinMaxWithOutlierRejection(distribution);
-  }
-
-  void OrthancMultiframeVolumeLoader::SetUncompressedPixelData(const std::string& pixelData)
-  {
-    switch (volume_->GetPixelData().GetFormat())
-    {
-      case Orthanc::PixelFormat_Grayscale32:
-        CopyPixelDataAndComputeMinMax<uint32_t>(pixelData);
-        break;
-      case Orthanc::PixelFormat_Grayscale16:
-        CopyPixelDataAndComputeMinMax<uint16_t>(pixelData);
-        break;
-      case Orthanc::PixelFormat_SignedGrayscale16:
-        CopyPixelDataAndComputeMinMax<int16_t>(pixelData);
-        break;
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-
-    volume_->IncrementRevision();
-
-    pixelDataLoaded_ = true;
-    BroadcastMessage(OrthancStone::DicomVolumeImage::ContentUpdatedMessage(*volume_));
-  }
-  
-  bool OrthancMultiframeVolumeLoader::HasGeometry() const
-  {
-    return volume_->HasGeometry();
-  }
-
-  const OrthancStone::VolumeImageGeometry& OrthancMultiframeVolumeLoader::GetImageGeometry() const
-  {
-    return volume_->GetGeometry();
-  }
-
-  OrthancMultiframeVolumeLoader::OrthancMultiframeVolumeLoader(
-    OrthancStone::ILoadersContext& loadersContext,
-    boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
-    float outliersHalfRejectionRate) 
-    : LoaderStateMachine(loadersContext)
-    , volume_(volume)
-    , pixelDataLoaded_(false)
-    , outliersHalfRejectionRate_(outliersHalfRejectionRate)
-    , distributionRawMin_(0)
-    , distributionRawMax_(0)
-    , computedDistributionMin_(0)
-    , computedDistributionMax_(0)
-  {
-    if (volume.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-  }
-
-
-  boost::shared_ptr<OrthancMultiframeVolumeLoader>
-    OrthancMultiframeVolumeLoader::Create(
-      OrthancStone::ILoadersContext& loadersContext, 
-      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume, 
-      float outliersHalfRejectionRate /*= 0.0005*/)
-  {
-    boost::shared_ptr<OrthancMultiframeVolumeLoader> obj(
-      new OrthancMultiframeVolumeLoader(
-        loadersContext,
-        volume,
-        outliersHalfRejectionRate));
-    obj->LoaderStateMachine::PostConstructor();
-    return obj;
-  }
-
-  OrthancMultiframeVolumeLoader::~OrthancMultiframeVolumeLoader()
-  {
-    LOG(TRACE) << "OrthancMultiframeVolumeLoader::~OrthancMultiframeVolumeLoader()";
-  }
-  
-  void OrthancMultiframeVolumeLoader::GetDistributionMinMax
-  (float& minValue, float& maxValue) const
-  {
-    if (distributionRawMin_ == 0 && distributionRawMax_ == 0)
-    {
-      LOG(WARNING) << "GetDistributionMinMaxWithOutliersRejection called before computation!";
-    }
-    minValue = distributionRawMin_;
-    maxValue = distributionRawMax_;
-  }
-  
-  void OrthancMultiframeVolumeLoader::GetDistributionMinMaxWithOutliersRejection
-    (float& minValue, float& maxValue) const
-  {
-    if (computedDistributionMin_ == 0 && computedDistributionMax_ == 0)
-    {
-      LOG(WARNING) << "GetDistributionMinMaxWithOutliersRejection called before computation!";
-    }
-    minValue = computedDistributionMin_;
-    maxValue = computedDistributionMax_;
-  }
-
-  void OrthancMultiframeVolumeLoader::LoadInstance(const std::string& instanceId)
-  {
-    Start();
-
-    instanceId_ = instanceId;
-
-    {
-      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
-      command->SetHttpHeader("Accept-Encoding", "gzip");
-      command->SetUri("/instances/" + instanceId + "/tags");
-      command->AcquirePayload(new LoadGeometry(*this));
-      Schedule(command.release());
-    }
-
-    {
-      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
-      command->SetUri("/instances/" + instanceId + "/metadata/TransferSyntax");
-      command->AcquirePayload(new LoadTransferSyntax(*this));
-      Schedule(command.release());
-    }
-  }
-}
--- a/Framework/Loaders/OrthancMultiframeVolumeLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "LoaderStateMachine.h"
-#include "../Volumes/DicomVolumeImage.h"
-#include "../Volumes/IGeometryProvider.h"
-
-#include <boost/shared_ptr.hpp>
-
-namespace OrthancStone
-{
-  class OrthancMultiframeVolumeLoader :
-    public LoaderStateMachine,
-    public OrthancStone::IObservable,
-    public IGeometryProvider
-  {
-  private:
-    class LoadRTDoseGeometry;
-    class LoadGeometry;
-    class LoadTransferSyntax;    
-    class LoadUncompressedPixelData;
-
-    boost::shared_ptr<OrthancStone::DicomVolumeImage>  volume_;
-    std::string                          instanceId_;
-    std::string                          transferSyntaxUid_;
-    bool                                 pixelDataLoaded_;
-    float                                outliersHalfRejectionRate_;
-    float                                distributionRawMin_;
-    float                                distributionRawMax_;
-    float                                computedDistributionMin_;
-    float                                computedDistributionMax_;
-
-    const std::string& GetInstanceId() const;
-
-    void ScheduleFrameDownloads();
-
-    void SetTransferSyntax(const std::string& transferSyntax);
-
-    void SetGeometry(const Orthanc::DicomMap& dicom);
-
-
-    /**
-    This method will :
-    
-    - copy the pixel values from the response to the volume image
-    - compute the maximum and minimum value while discarding the
-      outliersHalfRejectionRate_ fraction of the outliers from both the start 
-      and the end of the distribution.
-
-      In English, this means that, if the volume dataset contains a few extreme
-      values very different from the rest (outliers) that we want to get rid of,
-      this method allows to do so.
-
-      If you supply 0.005, for instance, it means 1% of the extreme values will
-      be rejected (0.5% on each side of the distribution)
-    */
-    template <typename T>
-    void CopyPixelDataAndComputeMinMax(const std::string& pixelData);
-      
-    /** Service method for CopyPixelDataAndComputeMinMax*/
-    template <typename T>
-    void CopyPixelDataAndComputeDistribution(
-      const std::string& pixelData, 
-      std::map<T, uint64_t>& distribution);
-
-    /** Service method for CopyPixelDataAndComputeMinMax*/
-    template <typename T>
-    void ComputeMinMaxWithOutlierRejection(
-      const std::map<T, uint64_t>& distribution);
-
-    void SetUncompressedPixelData(const std::string& pixelData);
-
-  protected:
-    OrthancMultiframeVolumeLoader(
-      OrthancStone::ILoadersContext& loadersContext,
-      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
-      float outliersHalfRejectionRate);
-  public:
-
-    static boost::shared_ptr<OrthancMultiframeVolumeLoader> Create(
-      OrthancStone::ILoadersContext& loadersContext,
-      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
-      float outliersHalfRejectionRate = 0.0005);
-
-    virtual ~OrthancMultiframeVolumeLoader();
-
-    bool HasGeometry() const;
-    const OrthancStone::VolumeImageGeometry& GetImageGeometry() const;
-
-    bool IsPixelDataLoaded() const
-    {
-      return pixelDataLoaded_;
-    }
-
-    void GetDistributionMinMax
-      (float& minValue, float& maxValue) const;
-
-    void GetDistributionMinMaxWithOutliersRejection
-      (float& minValue, float& maxValue) const;
-
-    void LoadInstance(const std::string& instanceId);
-  };
-}
--- a/Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,611 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OrthancSeriesVolumeProgressiveLoader.h"
-
-#include "../StoneException.h"
-#include "../Loaders/ILoadersContext.h"
-#include "../Loaders/BasicFetchingItemsSorter.h"
-#include "../Loaders/BasicFetchingStrategy.h"
-#include "../Toolbox/GeometryToolbox.h"
-#include "../Volumes/DicomVolumeImageMPRSlicer.h"
-
-#include <Compatibility.h>
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-  using OrthancStone::ILoadersContext;
-
-  class OrthancSeriesVolumeProgressiveLoader::ExtractedSlice : public OrthancStone::DicomVolumeImageMPRSlicer::Slice
-  {
-  private:
-    const OrthancSeriesVolumeProgressiveLoader&  that_;
-
-  public:
-    ExtractedSlice(const OrthancSeriesVolumeProgressiveLoader& that,
-                   const OrthancStone::CoordinateSystem3D& plane) :
-      OrthancStone::DicomVolumeImageMPRSlicer::Slice(*that.volume_, plane),
-      that_(that)
-    {
-      if (IsValid())
-      {
-        if (GetProjection() == OrthancStone::VolumeProjection_Axial)
-        {
-          // For coronal and sagittal projections, we take the global
-          // revision of the volume because even if a single slice changes,
-          // this means the projection will yield a different result --> 
-          // we must increase the revision as soon as any slice changes 
-          SetRevision(that_.seriesGeometry_.GetSliceRevision(GetSliceIndex()));
-        }
-      
-        if (that_.strategy_.get() != NULL &&
-            GetProjection() == OrthancStone::VolumeProjection_Axial)
-        {
-          that_.strategy_->SetCurrent(GetSliceIndex());
-        }
-      }
-    }
-  };
-    
-  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::CheckSlice(
-    size_t index, const OrthancStone::DicomInstanceParameters& reference) const
-  {
-    const OrthancStone::DicomInstanceParameters& slice = *slices_[index];
-      
-    if (!OrthancStone::GeometryToolbox::IsParallel(
-          reference.GetGeometry().GetNormal(),
-          slice.GetGeometry().GetNormal()))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadGeometry,
-                                      "A slice in the volume image is not parallel to the others");
-    }
-
-    if (reference.GetExpectedPixelFormat() != slice.GetExpectedPixelFormat())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat,
-                                      "The pixel format changes across the slices of the volume image");
-    }
-
-    if (reference.GetImageInformation().GetWidth() != slice.GetImageInformation().GetWidth() ||
-        reference.GetImageInformation().GetHeight() != slice.GetImageInformation().GetHeight())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize,
-                                      "The width/height of slices are not constant in the volume image");
-    }
-
-    if (!OrthancStone::LinearAlgebra::IsNear(reference.GetPixelSpacingX(), slice.GetPixelSpacingX()) ||
-        !OrthancStone::LinearAlgebra::IsNear(reference.GetPixelSpacingY(), slice.GetPixelSpacingY()))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadGeometry,
-                                      "The pixel spacing of the slices change across the volume image");
-    }
-  }
-
-    
-  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::CheckVolume() const
-  {
-    for (size_t i = 0; i < slices_.size(); i++)
-    {
-      assert(slices_[i] != NULL);
-      if (slices_[i]->GetImageInformation().GetNumberOfFrames() != 1)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadGeometry,
-                                        "This class does not support multi-frame images");
-      }
-    }
-
-    if (slices_.size() != 0)
-    {
-      const OrthancStone::DicomInstanceParameters& reference = *slices_[0];
-
-      for (size_t i = 1; i < slices_.size(); i++)
-      {
-        CheckSlice(i, reference);
-      }
-    }
-  }
-
-
-  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::Clear()
-  {
-    for (size_t i = 0; i < slices_.size(); i++)
-    {
-      assert(slices_[i] != NULL);
-      delete slices_[i];
-    }
-
-    slices_.clear();
-    slicesRevision_.clear();
-  }
-
-
-  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::CheckSliceIndex(size_t index) const
-  {
-    if (!HasGeometry())
-    {
-      LOG(ERROR) << "OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::CheckSliceIndex(size_t index): (!HasGeometry())";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else if (index >= slices_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      assert(slices_.size() == GetImageGeometry().GetDepth() &&
-             slices_.size() == slicesRevision_.size());
-    }
-  }
-
-
-  // WARNING: The payload of "slices" must be of class "DicomInstanceParameters"
-  // (called with the slices created in LoadGeometry)
-  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::ComputeGeometry(OrthancStone::SlicesSorter& slices)
-  {
-    Clear();
-      
-    if (!slices.Sort())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange,
-                                      "Cannot sort the 3D slices of a DICOM series");          
-    }
-
-    if (slices.GetSlicesCount() == 0)
-    {
-      geometry_.reset(new OrthancStone::VolumeImageGeometry);
-    }
-    else
-    {
-      slices_.reserve(slices.GetSlicesCount());
-      slicesRevision_.resize(slices.GetSlicesCount(), 0);
-
-      for (size_t i = 0; i < slices.GetSlicesCount(); i++)
-      {
-        const OrthancStone::DicomInstanceParameters& slice =
-          dynamic_cast<const OrthancStone::DicomInstanceParameters&>(slices.GetSlicePayload(i));
-        slices_.push_back(new OrthancStone::DicomInstanceParameters(slice));
-      }
-
-      CheckVolume();
-
-      double spacingZ;
-
-      if (slices.ComputeSpacingBetweenSlices(spacingZ))
-      {
-        LOG(TRACE) << "Computed spacing between slices: " << spacingZ << "mm";
-      
-        const OrthancStone::DicomInstanceParameters& parameters = *slices_[0];
-
-        geometry_.reset(new OrthancStone::VolumeImageGeometry);
-        geometry_->SetSizeInVoxels(parameters.GetImageInformation().GetWidth(),
-                                   parameters.GetImageInformation().GetHeight(),
-                                   static_cast<unsigned int>(slices.GetSlicesCount()));
-        geometry_->SetAxialGeometry(slices.GetSliceGeometry(0));
-        geometry_->SetVoxelDimensions(parameters.GetPixelSpacingX(),
-                                      parameters.GetPixelSpacingY(), spacingZ);
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadGeometry,
-                                        "The origins of the slices of a volume image are not regularly spaced");
-     }
-    }
-  }
-
-
-  const OrthancStone::VolumeImageGeometry& OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::GetImageGeometry() const
-  {
-    if (!HasGeometry())
-    {
-      LOG(ERROR) << "OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::GetImageGeometry(): (!HasGeometry())";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      assert(slices_.size() == geometry_->GetDepth());
-      return *geometry_;
-    }
-  }
-
-
-  const OrthancStone::DicomInstanceParameters& OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::GetSliceParameters(size_t index) const
-  {
-    CheckSliceIndex(index);
-    return *slices_[index];
-  }
-
-
-  uint64_t OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::GetSliceRevision(size_t index) const
-  {
-    CheckSliceIndex(index);
-    return slicesRevision_[index];
-  }
-
-
-  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::IncrementSliceRevision(size_t index)
-  {
-    CheckSliceIndex(index);
-    slicesRevision_[index] ++;
-  }
-
-
-  static unsigned int GetSliceIndexPayload(const OrthancStone::OracleCommandBase& command)
-  {
-    assert(command.HasPayload());
-    return dynamic_cast< const Orthanc::SingleValueObject<unsigned int>& >(command.GetPayload()).GetValue();
-  }
-
-
-  void OrthancSeriesVolumeProgressiveLoader::ScheduleNextSliceDownload()
-  {
-    assert(strategy_.get() != NULL);
-      
-    unsigned int sliceIndex = 0, quality = 0;
-      
-    if (strategy_->GetNext(sliceIndex, quality))
-    {
-      if (!progressiveQuality_)
-      {
-        ORTHANC_ASSERT(quality == QUALITY_00, "INTERNAL ERROR. quality != QUALITY_00 in "
-                       << "OrthancSeriesVolumeProgressiveLoader::ScheduleNextSliceDownload");
-      }
-
-      const OrthancStone::DicomInstanceParameters& slice = seriesGeometry_.GetSliceParameters(sliceIndex);
-          
-      const std::string& instance = slice.GetOrthancInstanceIdentifier();
-      if (instance.empty())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      std::unique_ptr<OrthancStone::OracleCommandBase> command;
-        
-      if (!progressiveQuality_ || quality == QUALITY_02)
-      {
-        std::unique_ptr<OrthancStone::GetOrthancImageCommand> tmp(new OrthancStone::GetOrthancImageCommand);
-        // TODO: review the following comment. 
-        // - Commented out by bgo on 2019-07-19 | reason: Alain has seen cases 
-        //   where gzipping the uint16 image took 11 sec to produce 5mb. 
-        //   The unzipped request was much much faster.
-        // - Re-enabled on 2019-07-30. Reason: in Web Assembly, the browser 
-        //   does not use the Accept-Encoding header and always requests
-        //   compression. Furthermore, NOT 
-        tmp->SetHttpHeader("Accept-Encoding", "gzip");
-        tmp->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Pam)));
-        tmp->SetInstanceUri(instance, slice.GetExpectedPixelFormat());
-        tmp->SetExpectedPixelFormat(slice.GetExpectedPixelFormat());
-        //LOG(INFO) 
-        //  << "OrthancSeriesVolumeProgressiveLoader.ScheduleNextSliceDownload()"
-        //  << " sliceIndex = " << sliceIndex << " slice quality = " << quality 
-        //  << " URI = " << tmp->GetUri();
-        command.reset(tmp.release());
-      }
-      else // progressive mode is true AND quality is not final (different from QUALITY_02
-      {
-        std::unique_ptr<OrthancStone::GetOrthancWebViewerJpegCommand> tmp(
-          new OrthancStone::GetOrthancWebViewerJpegCommand);
-
-        // TODO: review the following comment. Commented out by bgo on 2019-07-19
-        // (gzip for jpeg seems overkill)
-        //tmp->SetHttpHeader("Accept-Encoding", "gzip");
-        tmp->SetInstance(instance);
-        tmp->SetQuality((quality == 0 ? 50 : 90)); // QUALITY_00 is Jpeg50 while QUALITY_01 is Jpeg90
-        tmp->SetExpectedPixelFormat(slice.GetExpectedPixelFormat());
-        LOG(TRACE)
-          << "OrthancSeriesVolumeProgressiveLoader.ScheduleNextSliceDownload()"
-          << " sliceIndex = " << sliceIndex << " slice quality = " << quality;
-        command.reset(tmp.release());
-      }
-
-      command->AcquirePayload(new Orthanc::SingleValueObject<unsigned int>(sliceIndex));
-      
-      {
-        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
-        boost::shared_ptr<IObserver> observer(GetSharedObserver());
-        lock->Schedule(observer, sliceSchedulingPriority_, command.release());
-      }
-    }
-    else
-    {
-      // loading is finished!
-      volumeImageReadyInHighQuality_ = true;
-      BroadcastMessage(OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality(*this));
-    }
-  }
-
-/**
-   This is called in response to GET "/series/XXXXXXXXXXXXX/instances-tags"
-*/
-  void OrthancSeriesVolumeProgressiveLoader::LoadGeometry(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
-  {
-    Json::Value body;
-    message.ParseJsonBody(body);
-      
-    if (body.type() != Json::objectValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-    }
-
-    {
-      Json::Value::Members instances = body.getMemberNames();
-
-      OrthancStone::SlicesSorter slices;
-        
-      for (size_t i = 0; i < instances.size(); i++)
-      {
-        Orthanc::DicomMap dicom;
-        dicom.FromDicomAsJson(body[instances[i]]);
-
-        std::unique_ptr<OrthancStone::DicomInstanceParameters> instance(new OrthancStone::DicomInstanceParameters(dicom));
-        instance->SetOrthancInstanceIdentifier(instances[i]);
-
-        // the 3D plane corresponding to the slice
-        OrthancStone::CoordinateSystem3D geometry = instance->GetGeometry();
-        slices.AddSlice(geometry, instance.release());
-
-        if (slicePostProcessor_)
-          slicePostProcessor_->ProcessCTDicomSlice(dicom);
-      }
-
-      seriesGeometry_.ComputeGeometry(slices);
-    }
-
-    size_t slicesCount = seriesGeometry_.GetImageGeometry().GetDepth();
-
-    if (slicesCount == 0)
-    {
-      volume_->Initialize(seriesGeometry_.GetImageGeometry(), Orthanc::PixelFormat_Grayscale8);
-    }
-    else
-    {
-      const OrthancStone::DicomInstanceParameters& parameters = seriesGeometry_.GetSliceParameters(0);
-        
-      volume_->Initialize(seriesGeometry_.GetImageGeometry(), parameters.GetExpectedPixelFormat());
-      volume_->SetDicomParameters(parameters);
-      volume_->GetPixelData().Clear();
-
-      // If we are in progressive mode, the Fetching strategy will first request QUALITY_00, then QUALITY_01, then
-      // QUALITY_02... Otherwise, it's only QUALITY_00
-      unsigned int maxQuality = QUALITY_00;
-      if (progressiveQuality_)
-        maxQuality = QUALITY_02;
-
-      strategy_.reset(new OrthancStone::BasicFetchingStrategy(
-        sorter_->CreateSorter(static_cast<unsigned int>(slicesCount)),
-        maxQuality));
-
-      assert(simultaneousDownloads_ != 0);
-      for (unsigned int i = 0; i < simultaneousDownloads_; i++)
-      {
-        ScheduleNextSliceDownload();
-      }
-    }
-
-    slicesQuality_.resize(slicesCount, 0);
-
-    BroadcastMessage(OrthancStone::DicomVolumeImage::GeometryReadyMessage(*volume_));
-  }
-
-
-  void OrthancSeriesVolumeProgressiveLoader::SetSliceContent(unsigned int sliceIndex,
-                                                             const Orthanc::ImageAccessor& image,
-                                                             unsigned int quality)
-  {
-    ORTHANC_ASSERT(sliceIndex < slicesQuality_.size() &&
-           slicesQuality_.size() == volume_->GetPixelData().GetDepth());
-      
-    if (!progressiveQuality_)
-    {
-      ORTHANC_ASSERT(quality                    == QUALITY_00);
-      ORTHANC_ASSERT(slicesQuality_[sliceIndex] == QUALITY_00);
-    }
-
-    if (quality >= slicesQuality_[sliceIndex])
-    {
-      {
-        OrthancStone::ImageBuffer3D::SliceWriter writer(volume_->GetPixelData(), 
-                                                        OrthancStone::VolumeProjection_Axial, 
-                                                        sliceIndex);
-        
-        Orthanc::ImageProcessing::Copy(writer.GetAccessor(), image);
-      }
-
-      volume_->IncrementRevision();
-      seriesGeometry_.IncrementSliceRevision(sliceIndex);
-      slicesQuality_[sliceIndex] = quality;
-
-      BroadcastMessage(OrthancStone::DicomVolumeImage::ContentUpdatedMessage(*volume_));
-    }
-    LOG(TRACE) << "SetSliceContent sliceIndex = " << sliceIndex << " -- will "
-      << " now call ScheduleNextSliceDownload()";
-    ScheduleNextSliceDownload();
-  }
-
-  void OrthancSeriesVolumeProgressiveLoader::LoadBestQualitySliceContent(
-    const OrthancStone::GetOrthancImageCommand::SuccessMessage& message)
-  {
-    unsigned int quality = QUALITY_00;
-    if (progressiveQuality_)
-      quality = QUALITY_02;
-
-    SetSliceContent(GetSliceIndexPayload(message.GetOrigin()), 
-                                         message.GetImage(),
-                                         quality);
-  }
-
-  void OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent(
-    const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message)
-  {
-    ORTHANC_ASSERT(progressiveQuality_, "INTERNAL ERROR: OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent"
-                   << " called while progressiveQuality_ is false!");
-
-    LOG(TRACE) << "OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent";
-    unsigned int quality;
-      
-    switch (dynamic_cast<const OrthancStone::GetOrthancWebViewerJpegCommand&>(message.GetOrigin()).GetQuality())
-    {
-      case 50:
-        quality = QUALITY_00;
-        break;
-
-      case 90:
-        quality = QUALITY_01;
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-      
-    SetSliceContent(GetSliceIndexPayload(message.GetOrigin()), message.GetImage(), quality);
-  }
-
-
-  void  OrthancSeriesVolumeProgressiveLoader::SetMetadataSchedulingPriority(int p)
-  {
-    medadataSchedulingPriority_ = p;
-  }
-
-  int   OrthancSeriesVolumeProgressiveLoader::GetMetadataSchedulingPriority() const
-  {
-    return medadataSchedulingPriority_;
-  }
-
-  void  OrthancSeriesVolumeProgressiveLoader::SetSliceSchedulingPriority(int p)
-  {
-    sliceSchedulingPriority_ = p;
-  }
-    
-  int   OrthancSeriesVolumeProgressiveLoader::GetSliceSchedulingPriority() const
-  {
-    return sliceSchedulingPriority_;
-  }
-
-  void  OrthancSeriesVolumeProgressiveLoader::SetSchedulingPriority(int p)
-  {
-    medadataSchedulingPriority_ = p;
-    sliceSchedulingPriority_ = p;
-  }
-
-  OrthancSeriesVolumeProgressiveLoader::OrthancSeriesVolumeProgressiveLoader(
-    OrthancStone::ILoadersContext& loadersContext,
-    boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
-    bool progressiveQuality)
-    : loadersContext_(loadersContext)
-    , active_(false)
-    , progressiveQuality_(progressiveQuality)
-    , simultaneousDownloads_(4)
-    , volume_(volume)
-    , sorter_(new OrthancStone::BasicFetchingItemsSorter::Factory)
-    , volumeImageReadyInHighQuality_(false)
-    , medadataSchedulingPriority_(0)
-    , sliceSchedulingPriority_(0)
-  {
-  }
-
-  boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> 
-    OrthancSeriesVolumeProgressiveLoader::Create(
-      OrthancStone::ILoadersContext& loadersContext,
-      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
-      bool progressiveQuality)
-  {
-    std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext.Lock());
-
-    boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> obj(
-        new OrthancSeriesVolumeProgressiveLoader(
-          loadersContext, volume, progressiveQuality));
-
-    obj->Register<OrthancStone::OrthancRestApiCommand::SuccessMessage>(
-      lock->GetOracleObservable(),
-      &OrthancSeriesVolumeProgressiveLoader::LoadGeometry);
-
-    obj->Register<OrthancStone::GetOrthancImageCommand::SuccessMessage>(
-      lock->GetOracleObservable(),
-      &OrthancSeriesVolumeProgressiveLoader::LoadBestQualitySliceContent);
-
-    obj->Register<OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage>(
-      lock->GetOracleObservable(),
-      &OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent);
-
-    return obj;
-  }
-
-
-  OrthancSeriesVolumeProgressiveLoader::~OrthancSeriesVolumeProgressiveLoader()
-  {
-    LOG(TRACE) << "OrthancSeriesVolumeProgressiveLoader::~OrthancSeriesVolumeProgressiveLoader()";
-  }
-
-  void OrthancSeriesVolumeProgressiveLoader::SetSimultaneousDownloads(unsigned int count)
-  {
-    if (active_)
-    {
-      LOG(ERROR) << "OrthancSeriesVolumeProgressiveLoader::SetSimultaneousDownloads(): (active_)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else if (count == 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);        
-    }
-    else
-    {
-      simultaneousDownloads_ = count;
-    }
-  }
-
-
-  void OrthancSeriesVolumeProgressiveLoader::LoadSeries(const std::string& seriesId)
-  {
-    if (active_)
-    {
-      LOG(ERROR) << "OrthancSeriesVolumeProgressiveLoader::LoadSeries(const std::string& seriesId): (active_)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      active_ = true;
-
-      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
-      command->SetUri("/series/" + seriesId + "/instances-tags");
-      {
-        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
-        boost::shared_ptr<IObserver> observer(GetSharedObserver());
-        lock->Schedule(observer, medadataSchedulingPriority_, command.release());
-      }
-    }
-  }
-  
-
-  OrthancStone::IVolumeSlicer::IExtractedSlice* 
-  OrthancSeriesVolumeProgressiveLoader::ExtractSlice(const OrthancStone::CoordinateSystem3D& cuttingPlane)
-  {
-    if (volume_->HasGeometry())
-    {
-      return new ExtractedSlice(*this, cuttingPlane);
-    }
-    else
-    {
-      return new IVolumeSlicer::InvalidSlice;
-    }
-  }
-}
--- a/Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Loaders/IFetchingItemsSorter.h"
-#include "../Loaders/IFetchingStrategy.h"
-#include "../Messages/IObservable.h"
-#include "../Messages/ObserverBase.h"
-#include "../Oracle/GetOrthancImageCommand.h"
-#include "../Oracle/GetOrthancWebViewerJpegCommand.h"
-#include "../Oracle/IOracle.h"
-#include "../Oracle/OrthancRestApiCommand.h"
-#include "../Toolbox/SlicesSorter.h"
-#include "../Volumes/DicomVolumeImage.h"
-#include "../Volumes/IVolumeSlicer.h"
-
-#include "../Volumes/IGeometryProvider.h"
-
-
-#include <boost/shared_ptr.hpp>
-
-namespace OrthancStone
-{
-  class ILoadersContext;
-  /**
-    This class is used to manage the progressive loading of a volume that
-    is stored in a Dicom series.
-  */
-  class OrthancSeriesVolumeProgressiveLoader : 
-    public OrthancStone::ObserverBase<OrthancSeriesVolumeProgressiveLoader>,
-    public OrthancStone::IObservable,
-    public OrthancStone::IVolumeSlicer,
-    public IGeometryProvider
-  {
-  public:
-    class ISlicePostProcessor
-    {
-    public:
-      virtual void ProcessCTDicomSlice(const Orthanc::DicomMap& dicom) = 0;
-    };
-
-  private:
-    static const unsigned int QUALITY_00 = 0;
-    static const unsigned int QUALITY_01 = 1;
-    static const unsigned int QUALITY_02 = 2;
-        
-    class ExtractedSlice;
-
-   
-    /** Helper class internal to OrthancSeriesVolumeProgressiveLoader */
-    class SeriesGeometry : public boost::noncopyable
-    {
-    private:
-      void CheckSlice(size_t index,
-                      const OrthancStone::DicomInstanceParameters& reference) const;
-    
-      void CheckVolume() const;
-
-      void Clear();
-
-      void CheckSliceIndex(size_t index) const;
-
-      std::unique_ptr<OrthancStone::VolumeImageGeometry>     geometry_;
-      std::vector<OrthancStone::DicomInstanceParameters*>  slices_;
-      std::vector<uint64_t>                  slicesRevision_;
-
-    public:
-      ~SeriesGeometry()
-      {
-        Clear();
-      }
-
-      void ComputeGeometry(OrthancStone::SlicesSorter& slices);
-
-      virtual bool HasGeometry() const
-      {
-        return geometry_.get() != NULL;
-      }
-
-      virtual const OrthancStone::VolumeImageGeometry& GetImageGeometry() const;
-
-      const OrthancStone::DicomInstanceParameters& GetSliceParameters(size_t index) const;
-
-      uint64_t GetSliceRevision(size_t index) const;
-
-      void IncrementSliceRevision(size_t index);
-    };
-
-    void ScheduleNextSliceDownload();
-
-    void LoadGeometry(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message);
-
-    void SetSliceContent(unsigned int sliceIndex,
-                         const Orthanc::ImageAccessor& image,
-                         unsigned int quality);
-
-    void LoadBestQualitySliceContent(const OrthancStone::GetOrthancImageCommand::SuccessMessage& message);
-
-    void LoadJpegSliceContent(const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message);
-
-    OrthancStone::ILoadersContext&  loadersContext_;
-    bool                            active_;
-    bool                            progressiveQuality_;
-    unsigned int                    simultaneousDownloads_;
-    SeriesGeometry                  seriesGeometry_;
-    boost::shared_ptr<OrthancStone::DicomVolumeImage>             volume_;
-    std::unique_ptr<OrthancStone::IFetchingItemsSorter::IFactory> sorter_;
-    std::unique_ptr<OrthancStone::IFetchingStrategy>              strategy_;
-    
-    std::vector<unsigned int>     slicesQuality_;
-    bool                          volumeImageReadyInHighQuality_;
-    
-    boost::shared_ptr<ISlicePostProcessor>  slicePostProcessor_;
-
-    /** See priority setters/getters below */
-    int medadataSchedulingPriority_;
-
-    /** See priority setters/getters below */
-    int sliceSchedulingPriority_;
-
-    OrthancSeriesVolumeProgressiveLoader(
-      OrthancStone::ILoadersContext& loadersContext,
-      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
-      bool progressiveQuality);
-  
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, VolumeImageReadyInHighQuality, OrthancSeriesVolumeProgressiveLoader);
-
-    /**
-    See doc for the progressiveQuality_ field
-    */
-    static boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> Create(
-      OrthancStone::ILoadersContext& context,
-      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
-      bool progressiveQuality = false);
-
-    virtual ~OrthancSeriesVolumeProgressiveLoader();
-
-    void SetSimultaneousDownloads(unsigned int count);
-
-    /**
-      Sets the relative priority of the requests for metadata.
-      - if p < PRIORITY_HIGH (-1)                 , the requests will be high priority
-      - if PRIORITY_LOW (100) > p > PRIORITY_HIGH , the requests will be medium priority
-      - if p > PRIORITY_LOW                       , the requests will be low priority
-
-      Default is 0 (medium)
-    */
-    void  SetMetadataSchedulingPriority(int p);
-
-    /** @see SetMetadataSchedulingPriority */
-    int   GetMetadataSchedulingPriority() const;
-
-    /** Same as SetMetadataSchedulingPriority, for slices. Default is 0. */
-    void  SetSliceSchedulingPriority(int p);
-    
-    /** @see SetSliceSchedulingPriority */
-    int   GetSliceSchedulingPriority() const;
-
-    /** Sets priorities for all requests. @see SetMetadataSchedulingPriority */
-    void  SetSchedulingPriority(int p);
-
-    void SetDicomSlicePostProcessor(boost::shared_ptr<ISlicePostProcessor> slicePostProcessor)
-    {
-      // this will delete the previously stored slice processor, if any
-      slicePostProcessor_ = slicePostProcessor;
-    }
-
-    boost::shared_ptr<ISlicePostProcessor> GetDicomSlicePostProcessor()
-    {
-      // this could be empty!
-      return slicePostProcessor_;
-    }
-
-    bool IsVolumeImageReadyInHighQuality() const
-    {
-      return volumeImageReadyInHighQuality_;
-    }
-
-    void LoadSeries(const std::string& seriesId);
-
-    /**
-    This getter is used by clients that do not receive the geometry through
-    subscribing, for instance if they are created or listening only AFTER the
-    "geometry loaded" message is broadcast 
-    */
-    bool HasGeometry() const ORTHANC_OVERRIDE
-    {
-      return seriesGeometry_.HasGeometry();
-    }
-
-    /**
-    Same remark as HasGeometry
-    */
-    const OrthancStone::VolumeImageGeometry& GetImageGeometry() const ORTHANC_OVERRIDE
-    {
-      return seriesGeometry_.GetImageGeometry();
-    }
-
-    /**
-    When a slice is requested, the strategy algorithm (that defines the 
-    sequence of resources to be loaded from the server) is modified to 
-    take into account this request (this is done in the ExtractedSlice ctor)
-    */
-    virtual IExtractedSlice*
-      ExtractSlice(const OrthancStone::CoordinateSystem3D& cuttingPlane) ORTHANC_OVERRIDE;
-  };
-}
--- a/Framework/Loaders/SeriesFramesLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,550 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SeriesFramesLoader.h"
-
-#include "../Oracle/ParseDicomFromFileCommand.h"
-#include "../Oracle/ParseDicomFromWadoCommand.h"
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include <DicomParsing/Internals/DicomImageDecoder.h>
-#endif
-
-#include <DicomFormat/DicomInstanceHasher.h>
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <Images/JpegReader.h>
-
-#include <boost/algorithm/string/predicate.hpp>
-
-namespace OrthancStone
-{  
-  class SeriesFramesLoader::Payload : public Orthanc::IDynamicObject
-  {
-  private:
-    DicomSource   source_;
-    size_t        seriesIndex_;
-    std::string   sopInstanceUid_;  // Only used for debug purpose
-    unsigned int  quality_;
-    bool          hasWindowing_;
-    float         windowingCenter_;
-    float         windowingWidth_;
-    std::unique_ptr<Orthanc::IDynamicObject>  userPayload_;
-
-  public:
-    Payload(const DicomSource& source,
-            size_t seriesIndex,
-            const std::string& sopInstanceUid,
-            unsigned int quality,
-            Orthanc::IDynamicObject* userPayload) :
-      source_(source),
-      seriesIndex_(seriesIndex),
-      sopInstanceUid_(sopInstanceUid),
-      quality_(quality),
-      hasWindowing_(false),
-      userPayload_(userPayload)
-    {
-    }
-
-    size_t GetSeriesIndex() const
-    {
-      return seriesIndex_;
-    }
-
-    const std::string& GetSopInstanceUid() const
-    {
-      return sopInstanceUid_;
-    }
-
-    unsigned int GetQuality() const
-    {
-      return quality_;
-    }
-
-    void SetWindowing(float center,
-                      float width)
-    {
-      hasWindowing_ = true;
-      windowingCenter_ = center;
-      windowingWidth_ = width;
-    }
-
-    bool HasWindowing() const
-    {
-      return hasWindowing_;
-    }
-
-    float GetWindowingCenter() const
-    {
-      if (hasWindowing_)
-      {
-        return windowingCenter_;
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-    }
-
-    float GetWindowingWidth() const
-    {
-      if (hasWindowing_)
-      {
-        return windowingWidth_;
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-    }
-
-    const DicomSource& GetSource() const
-    {
-      return source_;
-    }
-
-    Orthanc::IDynamicObject* GetUserPayload() const
-    {
-      return userPayload_.get();
-    }
-  };
-    
-
-  SeriesFramesLoader::SeriesFramesLoader(ILoadersContext& context,
-                                         LoadedDicomResources& instances,
-                                         const std::string& dicomDirPath,
-                                         boost::shared_ptr<LoadedDicomResources> dicomDir) :
-    context_(context),
-    frames_(instances),
-    dicomDirPath_(dicomDirPath),
-    dicomDir_(dicomDir)
-  {
-  }
-
-
-  void SeriesFramesLoader::EmitMessage(const Payload& payload,
-                                       const Orthanc::ImageAccessor& image)
-  {
-    const DicomInstanceParameters& parameters = frames_.GetInstanceParameters(payload.GetSeriesIndex());
-    const Orthanc::DicomMap& instance = frames_.GetInstance(payload.GetSeriesIndex());
-    size_t frameIndex = frames_.GetFrameIndex(payload.GetSeriesIndex());
-
-    if (frameIndex >= parameters.GetImageInformation().GetNumberOfFrames() ||
-        payload.GetSopInstanceUid() != parameters.GetSopInstanceUid())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }      
-
-    LOG(TRACE) << "Decoded instance " << payload.GetSopInstanceUid() << ", frame "
-               << frameIndex << ": " << image.GetWidth() << "x"
-               << image.GetHeight() << ", " << Orthanc::EnumerationToString(image.GetFormat())
-               << ", quality " << payload.GetQuality();
-      
-    FrameLoadedMessage message(*this, frameIndex, payload.GetQuality(), image, instance, parameters, payload.GetUserPayload());
-    BroadcastMessage(message);
-  }
-
-
-#if ORTHANC_ENABLE_DCMTK == 1
-  void SeriesFramesLoader::HandleDicom(const Payload& payload,
-                                       Orthanc::ParsedDicomFile& dicom)
-  {     
-    size_t frameIndex = frames_.GetFrameIndex(payload.GetSeriesIndex());
-
-    std::unique_ptr<Orthanc::ImageAccessor> decoded;
-    decoded.reset(Orthanc::DicomImageDecoder::Decode(
-      dicom, 
-      static_cast<unsigned int>(frameIndex)));
-
-    if (decoded.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    EmitMessage(payload, *decoded);
-  }
-#endif
-
-    
-  void SeriesFramesLoader::HandleDicomWebRendered(const Payload& payload,
-                                                  const std::string& body,
-                                                  const std::map<std::string, std::string>& headers)
-  {
-    assert(payload.GetSource().IsDicomWeb() &&
-           payload.HasWindowing());
-
-    bool ok = false;
-    for (std::map<std::string, std::string>::const_iterator it = headers.begin();
-         it != headers.end(); ++it)
-    {
-      if (boost::iequals("content-type", it->first) &&
-          boost::iequals(Orthanc::MIME_JPEG, it->second))
-      {
-        ok = true;
-        break;
-      }
-    }
-
-    if (!ok)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
-                                      "The WADO-RS server has not generated a JPEG image on /rendered");
-    }
-
-    Orthanc::JpegReader reader;
-    reader.ReadFromMemory(body);
-
-    switch (reader.GetFormat())
-    {
-      case Orthanc::PixelFormat_RGB24:
-        EmitMessage(payload, reader);
-        break;
-
-      case Orthanc::PixelFormat_Grayscale8:
-      {
-        const DicomInstanceParameters& parameters = frames_.GetInstanceParameters(payload.GetSeriesIndex());
-
-        Orthanc::Image scaled(parameters.GetExpectedPixelFormat(), reader.GetWidth(), reader.GetHeight(), false);
-        Orthanc::ImageProcessing::Convert(scaled, reader);
-          
-        float w = payload.GetWindowingWidth();
-        if (w <= 0.01f)
-        {
-          w = 0.01f;  // Prevent division by zero
-        }
-
-        const float c = payload.GetWindowingCenter();
-        const float scaling = w / 255.0f;
-        const float offset = (c - w / 2.0f) / scaling;
-
-        Orthanc::ImageProcessing::ShiftScale(scaled, offset, scaling, false /* truncation to speed up */);
-        EmitMessage(payload, scaled);
-        break;
-      }
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-
-
-#if ORTHANC_ENABLE_DCMTK == 1
-  void SeriesFramesLoader::Handle(const ParseDicomSuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-
-    const Payload& payload = dynamic_cast<const Payload&>(message.GetOrigin().GetPayload());
-    if ((payload.GetSource().IsDicomDir() ||
-         payload.GetSource().IsDicomWeb()) &&
-        message.HasPixelData())
-    {
-      HandleDicom(dynamic_cast<const Payload&>(message.GetOrigin().GetPayload()), message.GetDicom());
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-#endif
-
-
-  void SeriesFramesLoader::Handle(const GetOrthancImageCommand::SuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-
-    const Payload& payload = dynamic_cast<const Payload&>(message.GetOrigin().GetPayload());
-    assert(payload.GetSource().IsOrthanc());
-
-    EmitMessage(payload, message.GetImage());
-  }
-
-
-  void SeriesFramesLoader::Handle(const GetOrthancWebViewerJpegCommand::SuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-
-    const Payload& payload = dynamic_cast<const Payload&>(message.GetOrigin().GetPayload());
-    assert(payload.GetSource().IsOrthanc());
-
-    EmitMessage(payload, message.GetImage());
-  }
-
-
-  void SeriesFramesLoader::Handle(const OrthancRestApiCommand::SuccessMessage& message)
-  {
-    // This is to handle "/rendered" in DICOMweb
-    assert(message.GetOrigin().HasPayload());
-    HandleDicomWebRendered(dynamic_cast<const Payload&>(message.GetOrigin().GetPayload()),
-                           message.GetAnswer(), message.GetAnswerHeaders());
-  }
-
-
-  void SeriesFramesLoader::Handle(const HttpCommand::SuccessMessage& message)
-  {
-    // This is to handle "/rendered" in DICOMweb
-    assert(message.GetOrigin().HasPayload());
-    HandleDicomWebRendered(dynamic_cast<const Payload&>(message.GetOrigin().GetPayload()),
-                           message.GetAnswer(), message.GetAnswerHeaders());
-  }
-
-
-  void SeriesFramesLoader::GetPreviewWindowing(float& center,
-                                               float& width,
-                                               size_t index) const
-  {
-    const Orthanc::DicomMap& instance = frames_.GetInstance(index);
-    const DicomInstanceParameters& parameters = frames_.GetInstanceParameters(index);
-
-    if (parameters.HasDefaultWindowing())
-    {
-      // TODO - Handle multiple presets (take the largest width)
-      center = parameters.GetDefaultWindowingCenter();
-      width = parameters.GetDefaultWindowingWidth();
-    }
-    else
-    {
-      float a, b;
-      if (instance.ParseFloat(a, Orthanc::DICOM_TAG_SMALLEST_IMAGE_PIXEL_VALUE) &&
-          instance.ParseFloat(b, Orthanc::DICOM_TAG_LARGEST_IMAGE_PIXEL_VALUE) &&
-          a < b)
-      {
-        center = (a + b) / 2.0f;
-        width = (b - a);
-      }
-      else
-      {
-        // Cannot infer a suitable windowing from the available tags
-        center = 128.0f;
-        width = 256.0f;
-      }
-    }
-  }
-
-  
-  Orthanc::IDynamicObject& SeriesFramesLoader::FrameLoadedMessage::GetUserPayload() const
-  {
-    if (userPayload_)
-    {
-      return *userPayload_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  void SeriesFramesLoader::Factory::SetDicomDir(const std::string& dicomDirPath,
-                                                boost::shared_ptr<LoadedDicomResources> dicomDir)
-  {
-    dicomDirPath_ = dicomDirPath;
-    dicomDir_ = dicomDir;
-  }
-
-
-  boost::shared_ptr<IObserver> SeriesFramesLoader::Factory::Create(ILoadersContext::ILock& stone)
-  {
-    boost::shared_ptr<SeriesFramesLoader> loader(
-      new SeriesFramesLoader(stone.GetContext(), instances_, dicomDirPath_, dicomDir_));
-    loader->Register<GetOrthancImageCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesFramesLoader::Handle);
-    loader->Register<GetOrthancWebViewerJpegCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesFramesLoader::Handle);
-    loader->Register<HttpCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesFramesLoader::Handle);
-    loader->Register<OrthancRestApiCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesFramesLoader::Handle);
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    loader->Register<ParseDicomSuccessMessage>(stone.GetOracleObservable(), &SeriesFramesLoader::Handle);
-#endif
-
-    return loader;
-  }
-
-
-  void SeriesFramesLoader::ScheduleLoadFrame(int priority,
-                                             const DicomSource& source,
-                                             size_t index,
-                                             unsigned int quality,
-                                             Orthanc::IDynamicObject* userPayload)
-  {
-    std::unique_ptr<Orthanc::IDynamicObject> protection(userPayload);
-    
-    if (index >= frames_.GetFramesCount() ||
-        quality >= source.GetQualityCount())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    const Orthanc::DicomMap& instance = frames_.GetInstance(index);
-
-    std::string sopInstanceUid;
-    if (!instance.LookupStringValue(sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
-                                      "Missing SOPInstanceUID in a DICOM instance");
-    }
-      
-    if (source.IsDicomDir())
-    {
-      if (dicomDir_.get() == NULL)
-      {
-        // Should have been set in the factory
-        throw Orthanc::OrthancException(
-          Orthanc::ErrorCode_BadSequenceOfCalls,
-          "SeriesFramesLoader::Factory::SetDicomDir() should have been called");
-      }
-        
-      assert(quality == 0);
-        
-      std::string file;
-      if (dicomDir_->LookupStringValue(file, sopInstanceUid, Orthanc::DICOM_TAG_REFERENCED_FILE_ID))
-      {
-        std::unique_ptr<ParseDicomFromFileCommand> command(new ParseDicomFromFileCommand(source, dicomDirPath_, file));
-        command->SetPixelDataIncluded(true);
-        command->AcquirePayload(new Payload(source, index, sopInstanceUid, quality, protection.release()));
-
-        {
-          std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-          lock->Schedule(GetSharedObserver(), priority, command.release());
-        }
-      }
-      else
-      {
-        LOG(WARNING) << "Missing tag ReferencedFileID in a DICOMDIR entry";
-      }
-    }
-    else if (source.IsDicomWeb())
-    {
-      std::string studyInstanceUid, seriesInstanceUid;
-      if (!instance.LookupStringValue(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) ||
-          !instance.LookupStringValue(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
-                                        "Missing StudyInstanceUID or SeriesInstanceUID in a DICOM instance");
-      }
-
-      const std::string uri = ("/studies/" + studyInstanceUid +
-                               "/series/" + seriesInstanceUid +
-                               "/instances/" + sopInstanceUid);
-
-      if (source.HasDicomWebRendered() &&
-          quality == 0)
-      {
-        float c, w;
-        GetPreviewWindowing(c, w, index);
-
-        std::map<std::string, std::string> arguments, headers;
-        arguments["window"] = (boost::lexical_cast<std::string>(c) + "," +
-                               boost::lexical_cast<std::string>(w) + ",linear");
-        headers["Accept"] = "image/jpeg";
-
-        std::unique_ptr<Payload> payload(new Payload(source, index, sopInstanceUid, quality, protection.release()));
-        payload->SetWindowing(c, w);
-
-        {
-          std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-          lock->Schedule(GetSharedObserver(), priority,
-                         source.CreateDicomWebCommand(uri + "/rendered", arguments, headers, payload.release()));
-        }
-      }
-      else
-      {
-        assert((source.HasDicomWebRendered() && quality == 1) ||
-               (!source.HasDicomWebRendered() && quality == 0));
-
-#if ORTHANC_ENABLE_DCMTK == 1
-        std::unique_ptr<Payload> payload(new Payload(source, index, sopInstanceUid, quality, protection.release()));
-
-        const std::map<std::string, std::string> empty;
-
-        std::unique_ptr<ParseDicomFromWadoCommand> command(
-          new ParseDicomFromWadoCommand(source, sopInstanceUid, source.CreateDicomWebCommand(uri, empty, empty, NULL)));
-        command->AcquirePayload(payload.release());
-
-        {
-          std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-          lock->Schedule(GetSharedObserver(), priority, command.release());
-        }
-#else
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
-                                        "DCMTK is not enabled, cannot parse a DICOM instance");
-#endif
-      }
-    }
-    else if (source.IsOrthanc())
-    {
-      std::string orthancId;
-
-      {
-        std::string patientId, studyInstanceUid, seriesInstanceUid;
-        if (!instance.LookupStringValue(patientId, Orthanc::DICOM_TAG_PATIENT_ID, false) ||
-            !instance.LookupStringValue(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) ||
-            !instance.LookupStringValue(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
-                                          "Missing StudyInstanceUID or SeriesInstanceUID in a DICOM instance");
-        }
-
-        Orthanc::DicomInstanceHasher hasher(patientId, studyInstanceUid, seriesInstanceUid, sopInstanceUid);
-        orthancId = hasher.HashInstance();
-      }
-
-      const DicomInstanceParameters& parameters = frames_.GetInstanceParameters(index);
-
-      if (quality == 0 && source.HasOrthancWebViewer1())
-      {
-        std::unique_ptr<GetOrthancWebViewerJpegCommand> command(new GetOrthancWebViewerJpegCommand);
-        command->SetInstance(orthancId);
-        command->SetExpectedPixelFormat(parameters.GetExpectedPixelFormat());
-        command->AcquirePayload(new Payload(source, index, sopInstanceUid, quality, protection.release()));
-
-        {
-          std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-          lock->Schedule(GetSharedObserver(), priority, command.release());
-        }
-      }
-      else if (quality == 0 && source.HasOrthancAdvancedPreview())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-      else
-      {
-        assert(quality <= 1);
-        assert(quality == 0 || 
-               source.HasOrthancWebViewer1() || 
-               source.HasOrthancAdvancedPreview());
-
-        std::unique_ptr<GetOrthancImageCommand> command(new GetOrthancImageCommand);
-        command->SetFrameUri(orthancId, frames_.GetFrameIndex(index), parameters.GetExpectedPixelFormat());
-        command->SetExpectedPixelFormat(parameters.GetExpectedPixelFormat());
-        command->SetHttpHeader("Accept", Orthanc::MIME_PAM);
-        command->AcquirePayload(new Payload(source, index, sopInstanceUid, quality, protection.release()));
-
-        {
-          std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-          lock->Schedule(GetSharedObserver(), priority, command.release());
-        }
-      }
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-}
--- a/Framework/Loaders/SeriesFramesLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../OrthancStone.h"
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error The macro ORTHANC_ENABLE_DCMTK must be defined
-#endif
-
-#include "OracleScheduler.h"
-#include "DicomSource.h"
-#include "SeriesOrderedFrames.h"
-#include "ILoaderFactory.h"
-
-namespace OrthancStone
-{  
-  class SeriesFramesLoader : 
-    public ObserverBase<SeriesFramesLoader>,
-    public IObservable
-  {
-  private:
-    class Payload;
-
-    ILoadersContext&                         context_;
-    SeriesOrderedFrames                      frames_;
-    std::string                              dicomDirPath_;
-    boost::shared_ptr<LoadedDicomResources>  dicomDir_;
-
-    SeriesFramesLoader(ILoadersContext& context,
-                       LoadedDicomResources& instances,
-                       const std::string& dicomDirPath,
-                       boost::shared_ptr<LoadedDicomResources> dicomDir);
-
-    void EmitMessage(const Payload& payload,
-                     const Orthanc::ImageAccessor& image);
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    void HandleDicom(const Payload& payload,
-                     Orthanc::ParsedDicomFile& dicom);
-#endif
-    
-    void HandleDicomWebRendered(const Payload& payload,
-                                const std::string& body,
-                                const std::map<std::string, std::string>& headers);
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    void Handle(const ParseDicomSuccessMessage& message);
-#endif
-
-    void Handle(const GetOrthancImageCommand::SuccessMessage& message);
-
-    void Handle(const GetOrthancWebViewerJpegCommand::SuccessMessage& message);
-
-    void Handle(const OrthancRestApiCommand::SuccessMessage& message);
-
-    void Handle(const HttpCommand::SuccessMessage& message);
-
-    void GetPreviewWindowing(float& center,
-                             float& width,
-                             size_t index) const;
-
-  public:
-    class FrameLoadedMessage : public OriginMessage<SeriesFramesLoader>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      size_t                          frameIndex_;
-      unsigned int                    quality_;
-      const Orthanc::ImageAccessor&   image_;
-      const Orthanc::DicomMap&        instance_;
-      const DicomInstanceParameters&  parameters_;
-      Orthanc::IDynamicObject*        userPayload_; // Ownership is maintained by the caller
-
-    public:
-      FrameLoadedMessage(const SeriesFramesLoader& loader,
-                         size_t frameIndex,
-                         unsigned int quality,
-                         const Orthanc::ImageAccessor& image,
-                         const Orthanc::DicomMap& instance,
-                         const DicomInstanceParameters&  parameters,
-                         Orthanc::IDynamicObject* userPayload) :
-        OriginMessage(loader),
-        frameIndex_(frameIndex),
-        quality_(quality),
-        image_(image),
-        instance_(instance),
-        parameters_(parameters),
-        userPayload_(userPayload)
-      {
-      }
-
-      size_t GetFrameIndex() const
-      {
-        return frameIndex_;
-      }
-
-      unsigned int GetQuality() const
-      {
-        return quality_;
-      }
-
-      const Orthanc::ImageAccessor& GetImage() const
-      {
-        return image_;
-      }
-
-      const Orthanc::DicomMap& GetInstance() const
-      {
-        return instance_;
-      }
-
-      const DicomInstanceParameters& GetInstanceParameters() const
-      {
-        return parameters_;
-      }
-
-      bool HasUserPayload() const
-      {
-        return userPayload_ != NULL;
-      }
-
-      Orthanc::IDynamicObject& GetUserPayload() const;
-    };
-
-
-    class Factory : public ILoaderFactory
-    {
-    private:
-      LoadedDicomResources&                    instances_;
-      std::string                              dicomDirPath_;
-      boost::shared_ptr<LoadedDicomResources>  dicomDir_;
-
-    public:
-      // No "const" because "LoadedDicomResources::GetResource()" will call "Flatten()"
-      Factory(LoadedDicomResources& instances) :
-      instances_(instances)
-      {
-      }
-
-      void SetDicomDir(const std::string& dicomDirPath,
-                       boost::shared_ptr<LoadedDicomResources> dicomDir);
-
-      virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& context);
-    };
-
-    const SeriesOrderedFrames& GetOrderedFrames() const
-    {
-      return frames_;
-    }
-
-    void ScheduleLoadFrame(int priority,
-                           const DicomSource& source,
-                           size_t index,
-                           unsigned int quality,
-                           Orthanc::IDynamicObject* userPayload /* transfer ownership */);
-  };
-}
--- a/Framework/Loaders/SeriesMetadataLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,346 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SeriesMetadataLoader.h"
-
-#include <DicomFormat/DicomInstanceHasher.h>
-
-namespace OrthancStone
-{
-  SeriesMetadataLoader::SeriesMetadataLoader(boost::shared_ptr<DicomResourcesLoader>& loader) :
-    loader_(loader),
-    state_(State_Setup)
-  {
-  }
-
-
-  bool SeriesMetadataLoader::IsScheduledWithHigherPriority(const std::string& seriesInstanceUid,
-                                                           int priority) const
-  {
-    if (series_.find(seriesInstanceUid) != series_.end())
-    {
-      // This series is readily available
-      return true;
-    }
-    else
-    {
-      std::map<std::string, int>::const_iterator found = scheduled_.find(seriesInstanceUid);
-
-      return (found != scheduled_.end() &&
-              found->second < priority);
-    }
-  }
-
-
-  void SeriesMetadataLoader::Handle(const DicomResourcesLoader::SuccessMessage& message)
-  {
-    assert(message.GetResources());
-
-    switch (state_)
-    {
-      case State_Setup:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-
-      case State_Default:
-      {
-        std::string studyInstanceUid;
-        std::string seriesInstanceUid;
-
-        if (message.GetResources()->LookupTagValueConsensus(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID) &&
-            message.GetResources()->LookupTagValueConsensus(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID))
-        {
-          series_[seriesInstanceUid] = message.GetResources();
-
-          SuccessMessage loadedMessage(*this, message.GetDicomSource(), studyInstanceUid,
-                                       seriesInstanceUid, *message.GetResources());
-          BroadcastMessage(loadedMessage);
-        }
-
-        break;
-      }
-
-      case State_DicomDir:
-      {
-        assert(!dicomDir_);
-        assert(seriesSize_.empty());
-
-        dicomDir_ = message.GetResources();
-            
-        for (size_t i = 0; i < message.GetResources()->GetSize(); i++)
-        {
-          std::string seriesInstanceUid;
-          if (message.GetResources()->GetResource(i).LookupStringValue
-              (seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
-          {
-            boost::shared_ptr<OrthancStone::LoadedDicomResources> target
-              (new OrthancStone::LoadedDicomResources(Orthanc::DICOM_TAG_SOP_INSTANCE_UID));
-
-            if (loader_->ScheduleLoadDicomFile(target, message.GetPriority(), message.GetDicomSource(), dicomDirPath_, 
-                                               message.GetResources()->GetResource(i), false /* no need for pixel data */,
-                                               NULL /* TODO PAYLOAD */))
-            {
-              std::map<std::string, unsigned int>::iterator found = seriesSize_.find(seriesInstanceUid);
-              if (found == seriesSize_.end())
-              {
-                series_[seriesInstanceUid].reset
-                  (new OrthancStone::LoadedDicomResources(Orthanc::DICOM_TAG_SOP_INSTANCE_UID));
-                seriesSize_[seriesInstanceUid] = 1;
-              }
-              else
-              {
-                found->second ++;
-              }
-            }
-          }
-        }
-
-        LOG(INFO) << "Read a DICOMDIR containing " << seriesSize_.size() << " series";            
-
-        state_ = State_DicomFile;
-        break;
-      }
-
-      case State_DicomFile:
-      {
-        assert(dicomDir_);
-        assert(message.GetResources()->GetSize() <= 1);  // Could be zero if corrupted DICOM instance
-
-        if (message.GetResources()->GetSize() == 1)
-        {
-          const Orthanc::DicomMap& instance = message.GetResources()->GetResource(0);
-
-          std::string studyInstanceUid;
-          std::string seriesInstanceUid;
-          if (instance.LookupStringValue(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) &&
-              instance.LookupStringValue(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
-          {
-            Series::const_iterator series = series_.find(seriesInstanceUid);
-            std::map<std::string, unsigned int>::const_iterator size = seriesSize_.find(seriesInstanceUid);
-
-            if (series == series_.end() ||
-                size == seriesSize_.end())
-            {
-              throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-            }
-            else
-            {
-              series->second->AddResource(instance);
-
-              if (series->second->GetSize() > size->second)
-              {
-                throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-              }
-              else if (series->second->GetSize() == size->second)
-              {
-                // The series is complete
-                SuccessMessage loadedMessage(
-                  *this, message.GetDicomSource(),
-                  studyInstanceUid, seriesInstanceUid, *series->second);
-                loadedMessage.SetDicomDir(dicomDirPath_, dicomDir_);
-                BroadcastMessage(loadedMessage);
-              }
-            }
-          }
-        }
-
-        break;
-      }
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-  SeriesMetadataLoader::SuccessMessage::SuccessMessage(
-    const SeriesMetadataLoader& loader,
-    const DicomSource& source,
-    const std::string& studyInstanceUid,
-    const std::string& seriesInstanceUid,
-    LoadedDicomResources& instances) :
-    OriginMessage(loader),
-    source_(source),
-    studyInstanceUid_(studyInstanceUid),
-    seriesInstanceUid_(seriesInstanceUid),
-    instances_(instances)
-  {
-    LOG(INFO) << "Loaded series " << seriesInstanceUid
-              << ", number of instances: " << instances_.GetSize();
-  }
-
-
-  boost::shared_ptr<SeriesMetadataLoader> SeriesMetadataLoader::Create(ILoadersContext::ILock& context)
-  {
-    boost::shared_ptr<DicomResourcesLoader> loader(DicomResourcesLoader::Create(context));
-      
-    boost::shared_ptr<SeriesMetadataLoader> obj(new SeriesMetadataLoader(loader));
-    obj->Register<DicomResourcesLoader::SuccessMessage>(*loader, &SeriesMetadataLoader::Handle);
-    return obj;
-  }
-
-
-  SeriesMetadataLoader::Accessor::Accessor(SeriesMetadataLoader& that,
-                                           const std::string& seriesInstanceUid)
-  {
-    Series::const_iterator found = that.series_.find(seriesInstanceUid);
-    if (found != that.series_.end())
-    {
-      assert(found->second != NULL);
-      series_ = found->second;
-    }
-  }
-
-
-  size_t SeriesMetadataLoader::Accessor::GetInstancesCount() const
-  {
-    if (IsComplete())
-    {
-      return series_->GetSize();
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  const Orthanc::DicomMap& SeriesMetadataLoader::Accessor::GetInstance(size_t index) const
-  {
-    if (IsComplete())
-    {
-      return series_->GetResource(index);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }     
-  }
-
-
-  void SeriesMetadataLoader::ScheduleLoadSeries(int priority,
-                                                const DicomSource& source,
-                                                const std::string& studyInstanceUid,
-                                                const std::string& seriesInstanceUid)
-  {
-    if (state_ != State_Setup &&
-        state_ != State_Default)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                      "The loader is working in DICOMDIR state");
-    }
-
-    state_ = State_Default;
-
-    // Only re-schedule the loading if the previous loading was with lower priority
-    if (!IsScheduledWithHigherPriority(seriesInstanceUid, priority))
-    {
-      if (source.IsDicomWeb())
-      {
-        boost::shared_ptr<LoadedDicomResources> target
-          (new LoadedDicomResources(Orthanc::DICOM_TAG_SOP_INSTANCE_UID));
-        loader_->ScheduleGetDicomWeb(
-          target, priority, source,
-          "/studies/" + studyInstanceUid + "/series/" + seriesInstanceUid + "/metadata",
-          NULL /* TODO PAYLOAD */);
-
-        scheduled_[seriesInstanceUid] = priority;
-      }
-      else if (source.IsOrthanc())
-      {
-        // This flavor of the method is only available with DICOMweb, as
-        // Orthanc requires the "PatientID" to be known
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                        "The PatientID must be provided on Orthanc sources");
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-    }
-  }
-
-
-  void SeriesMetadataLoader::ScheduleLoadSeries(int priority,
-                                                const DicomSource& source,
-                                                const std::string& patientId,
-                                                const std::string& studyInstanceUid,
-                                                const std::string& seriesInstanceUid)
-  {
-    if (state_ != State_Setup &&
-        state_ != State_Default)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                      "The loader is working in DICOMDIR state");
-    }
-
-    state_ = State_Default;
-
-    if (source.IsDicomWeb())
-    {
-      ScheduleLoadSeries(priority, source, studyInstanceUid, seriesInstanceUid);
-    }
-    else if (!IsScheduledWithHigherPriority(seriesInstanceUid, priority))
-    {
-      if (source.IsOrthanc())
-      {
-        // Dummy SOP Instance UID, as we are working at the "series" level
-        Orthanc::DicomInstanceHasher hasher(patientId, studyInstanceUid, seriesInstanceUid, "dummy");
-
-        boost::shared_ptr<LoadedDicomResources> target
-          (new LoadedDicomResources(Orthanc::DICOM_TAG_SOP_INSTANCE_UID));
-        
-        loader_->ScheduleLoadOrthancResources(target, priority, source, Orthanc::ResourceType_Series,
-                                              hasher.HashSeries(), Orthanc::ResourceType_Instance,
-                                              NULL /* TODO PAYLOAD */);
-
-        scheduled_[seriesInstanceUid] = priority;
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-    }
-  }
-
-
-  void SeriesMetadataLoader::ScheduleLoadDicomDir(int priority,
-                                                  const DicomSource& source,
-                                                  const std::string& path)
-  {
-    if (!source.IsDicomDir())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    if (state_ != State_Setup)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                      "The loader cannot load two different DICOMDIR");
-    }
-
-    state_ = State_DicomDir;
-    dicomDirPath_ = path;
-    boost::shared_ptr<LoadedDicomResources> dicomDir
-      (new LoadedDicomResources(Orthanc::DICOM_TAG_REFERENCED_SOP_INSTANCE_UID_IN_FILE));
-    loader_->ScheduleLoadDicomDir(dicomDir, priority, source, path,
-                                  NULL /* TODO PAYLOAD */);
-  }
-}
--- a/Framework/Loaders/SeriesMetadataLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "DicomResourcesLoader.h"
-
-namespace OrthancStone
-{
-  class SeriesMetadataLoader :
-    public ObserverBase<SeriesMetadataLoader>,
-    public IObservable
-  {
-  private:
-    enum State
-    {
-      State_Setup,
-      State_Default,
-      State_DicomDir,
-      State_DicomFile
-    };
-
-    typedef std::map<std::string, boost::shared_ptr<LoadedDicomResources> >  Series;
-
-    boost::shared_ptr<DicomResourcesLoader>  loader_;
-    State                                    state_;
-    std::map<std::string, int>               scheduled_;   // Maps a "SeriesInstanceUID" to a priority
-    Series                                   series_;
-    boost::shared_ptr<LoadedDicomResources>  dicomDir_;
-    std::string                              dicomDirPath_;
-    std::map<std::string, unsigned int>      seriesSize_;
-
-    SeriesMetadataLoader(boost::shared_ptr<DicomResourcesLoader>& loader);
-
-    bool IsScheduledWithHigherPriority(const std::string& seriesInstanceUid,
-                                       int priority) const;
-
-    void Handle(const DicomResourcesLoader::SuccessMessage& message);
-
-  public:
-    class SuccessMessage : public OriginMessage<SeriesMetadataLoader>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-    private:
-      const DicomSource&     source_;
-      const std::string&     studyInstanceUid_;
-      const std::string&     seriesInstanceUid_;
-      LoadedDicomResources&  instances_;
-      std::string            dicomDirPath_;
-      boost::shared_ptr<LoadedDicomResources>  dicomDir_;
-
-    public:
-      SuccessMessage(const SeriesMetadataLoader& loader,
-                     const DicomSource& source,
-                     const std::string& studyInstanceUid,
-                     const std::string& seriesInstanceUid,
-                     LoadedDicomResources& instances);
-
-      const DicomSource& GetDicomSource() const
-      {
-        return source_;
-      }
-      
-      const std::string& GetStudyInstanceUid() const
-      {
-        return studyInstanceUid_;
-      }
-
-      const std::string& GetSeriesInstanceUid() const
-      {
-        return seriesInstanceUid_;
-      }
-
-      size_t GetInstancesCount() const
-      {
-        return instances_.GetSize();
-      }
-
-      const Orthanc::DicomMap& GetInstance(size_t index) const
-      {
-        return instances_.GetResource(index);
-      }
-
-      LoadedDicomResources& GetInstances() const
-      {
-        return instances_;
-      }
-
-      void SetDicomDir(const std::string& dicomDirPath,
-                       boost::shared_ptr<LoadedDicomResources> dicomDir)
-      {
-        dicomDirPath_ = dicomDirPath;
-        dicomDir_ = dicomDir;
-      }
-
-      const std::string& GetDicomDirPath() const
-      {
-        return dicomDirPath_;
-      }
-
-      // Will be NULL on non-DICOMDIR sources
-      boost::shared_ptr<LoadedDicomResources> GetDicomDir() const
-      {
-        return dicomDir_;
-      }
-    };
-
-  
-    class Factory : public ILoaderFactory
-    {
-    public:
-      virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& context)
-      {
-        return SeriesMetadataLoader::Create(context);
-      }
-    };
-
-
-    static boost::shared_ptr<SeriesMetadataLoader> Create(ILoadersContext::ILock& context);
-
-  
-    class Accessor : public boost::noncopyable
-    {
-    private:
-      boost::shared_ptr<LoadedDicomResources>  series_;
-
-    public:
-      Accessor(SeriesMetadataLoader& that,
-               const std::string& seriesInstanceUid);
-
-      bool IsComplete() const
-      {
-        return series_ != NULL;
-      }
-
-      size_t GetInstancesCount() const;
-
-      const Orthanc::DicomMap& GetInstance(size_t index) const;
-    };
-
-
-    void ScheduleLoadSeries(int priority,
-                            const DicomSource& source,
-                            const std::string& studyInstanceUid,
-                            const std::string& seriesInstanceUid);
-
-    void ScheduleLoadSeries(int priority,
-                            const DicomSource& source,
-                            const std::string& patientId,
-                            const std::string& studyInstanceUid,
-                            const std::string& seriesInstanceUid);
-
-    void ScheduleLoadDicomDir(int priority,
-                              const DicomSource& source,
-                              const std::string& path);
-  };
-}
--- a/Framework/Loaders/SeriesOrderedFrames.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,345 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "../Toolbox/SlicesSorter.h"
-#include "SeriesOrderedFrames.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  class SeriesOrderedFrames::Instance : public boost::noncopyable
-  {
-  private:
-    std::unique_ptr<Orthanc::DicomMap>  dicom_;
-    DicomInstanceParameters           parameters_;
-
-  public:
-    Instance(const Orthanc::DicomMap& dicom) :
-      dicom_(dicom.Clone()),
-      parameters_(dicom)
-    {
-    }
-    
-    const Orthanc::DicomMap& GetInstance() const
-    {
-      return *dicom_;
-    }
-    
-    const DicomInstanceParameters& GetInstanceParameters() const
-    {
-      return parameters_;
-    }
-
-    bool Lookup3DGeometry(CoordinateSystem3D& target) const
-    {
-      try
-      {
-        std::string imagePositionPatient, imageOrientationPatient;
-        if (dicom_->LookupStringValue(imagePositionPatient, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, false) &&
-            dicom_->LookupStringValue(imageOrientationPatient, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, false))
-        {
-          target = CoordinateSystem3D(imagePositionPatient, imageOrientationPatient);
-          return true;
-        }
-      }
-      catch (Orthanc::OrthancException&)
-      {
-      }
-
-      return false;
-    }
-
-    bool LookupIndexInSeries(int& target) const
-    {
-      std::string value;
-
-      if (dicom_->LookupStringValue(value, Orthanc::DICOM_TAG_INSTANCE_NUMBER, false) ||
-          dicom_->LookupStringValue(value, Orthanc::DICOM_TAG_IMAGE_INDEX, false))
-      {
-        try
-        {
-          target = boost::lexical_cast<int>(value);
-          return true;
-        }
-        catch (boost::bad_lexical_cast&)
-        {
-        }
-      }
-
-      return false;
-    }
-  };
-
-
-  class SeriesOrderedFrames::Frame : public boost::noncopyable
-  {
-  private:
-    const Instance*  instance_;
-    unsigned int     frameIndex_;
-
-  public:
-    Frame(const Instance& instance,
-          unsigned int frameIndex) :
-      instance_(&instance),
-      frameIndex_(frameIndex)
-    {
-      if (frameIndex_ >= instance.GetInstanceParameters().GetImageInformation().GetNumberOfFrames())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-    }
-
-    const Orthanc::DicomMap& GetInstance() const
-    {
-      assert(instance_ != NULL);
-      return instance_->GetInstance();
-    }
-    
-    const DicomInstanceParameters& GetInstanceParameters() const
-    {
-      assert(instance_ != NULL);
-      return instance_->GetInstanceParameters();
-    }
-
-    unsigned int GetFrameIndex() const
-    {
-      return frameIndex_;
-    }
-  };
-
-
-  class SeriesOrderedFrames::InstanceWithIndexInSeries
-  {
-  private:
-    const Instance* instance_;  // Don't use a reference to make "std::sort()" happy
-    int             index_;
-
-  public:
-    InstanceWithIndexInSeries(const Instance& instance) :
-    instance_(&instance)
-    {
-      if (!instance_->LookupIndexInSeries(index_))
-      {
-        index_ = std::numeric_limits<int>::max();
-      }
-    }
-
-    const Instance& GetInstance() const
-    {
-      return *instance_;
-    }
-
-    int GetIndexInSeries() const
-    {
-      return index_;
-    }
-
-    bool operator< (const InstanceWithIndexInSeries& other) const
-    {
-      return (index_ < other.index_);
-    }
-  };
-
-
-  void SeriesOrderedFrames::Clear()
-  {
-    for (size_t i = 0; i < instances_.size(); i++)
-    {
-      assert(instances_[i] != NULL);
-      delete instances_[i];
-    }
-
-    for (size_t i = 0; i < orderedFrames_.size(); i++)
-    {
-      assert(orderedFrames_[i] != NULL);
-      delete orderedFrames_[i];
-    }
-
-    instances_.clear();
-    orderedFrames_.clear();
-  }
-
-
-  bool SeriesOrderedFrames::Sort3DVolume()
-  {
-    SlicesSorter sorter;
-    sorter.Reserve(instances_.size());
-
-    for (size_t i = 0; i < instances_.size(); i++)
-    {
-      CoordinateSystem3D geometry;
-      if (instances_[i]->Lookup3DGeometry(geometry))
-      {
-        sorter.AddSlice(geometry, new Orthanc::SingleValueObject<Instance*>(instances_[i]));
-      }
-      else
-      {
-        return false;   // Not a 3D volume
-      }
-    }
-
-    if (!sorter.Sort() ||
-        sorter.GetSlicesCount() != instances_.size() ||
-        !sorter.AreAllSlicesDistinct())
-    {
-      return false;
-    }
-    else
-    {
-      for (size_t i = 0; i < sorter.GetSlicesCount(); i++)
-      {
-        assert(sorter.HasSlicePayload(i));
-
-        const Orthanc::SingleValueObject<Instance*>& payload =
-          dynamic_cast<const Orthanc::SingleValueObject<Instance*>&>(sorter.GetSlicePayload(i));
-              
-        assert(payload.GetValue() != NULL);
-              
-        for (size_t j = 0; j < payload.GetValue()->GetInstanceParameters().GetImageInformation().GetNumberOfFrames(); j++)
-        {
-          orderedFrames_.push_back(new Frame(*payload.GetValue(), 
-                                             static_cast<unsigned int>(j)));
-        }
-      }
-
-      isRegular_ = sorter.ComputeSpacingBetweenSlices(spacingBetweenSlices_);
-      return true;
-    }
-  }
-
-
-  void SeriesOrderedFrames::SortIndexInSeries()
-  {
-    std::vector<InstanceWithIndexInSeries> tmp;
-    tmp.reserve(instances_.size());      
-        
-    for (size_t i = 0; i < instances_.size(); i++)
-    {
-      assert(instances_[i] != NULL);
-      tmp.push_back(InstanceWithIndexInSeries(*instances_[i]));
-    }
-
-    std::sort(tmp.begin(), tmp.end());
-
-    for (size_t i = 0; i < tmp.size(); i++)
-    {
-      for (size_t j = 0; j < tmp[i].GetInstance().GetInstanceParameters().GetImageInformation().GetNumberOfFrames(); j++)
-      {
-        orderedFrames_.push_back(new Frame(tmp[i].GetInstance(), 
-                                           static_cast<unsigned int>(j)));
-      }
-    }
-  }
-
-
-  const SeriesOrderedFrames::Frame& SeriesOrderedFrames::GetFrame(size_t seriesIndex) const
-  {
-    if (seriesIndex >= orderedFrames_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      assert(orderedFrames_[seriesIndex] != NULL);
-      return *(orderedFrames_[seriesIndex]);
-    }
-  }
-  
-
-  SeriesOrderedFrames::SeriesOrderedFrames(LoadedDicomResources& instances) :
-    isVolume_(false),
-    isRegular_(false),
-    spacingBetweenSlices_(0)
-  {
-    instances_.reserve(instances.GetSize());
-
-    size_t numberOfFrames = 0;
-      
-    for (size_t i = 0; i < instances.GetSize(); i++)
-    {
-      try
-      {
-        std::unique_ptr<Instance> instance(new Instance(instances.GetResource(i)));
-        numberOfFrames += instance->GetInstanceParameters().GetImageInformation().GetNumberOfFrames();
-        instances_.push_back(instance.release());
-      }
-      catch (Orthanc::OrthancException&)
-      {
-        // The instance has not all the required DICOM tags, skip it
-      }
-    }
-
-    orderedFrames_.reserve(numberOfFrames);
-      
-    if (Sort3DVolume())
-    {
-      isVolume_ = true;
-
-      if (isRegular_)
-      {
-        LOG(INFO) << "Regular 3D volume detected";
-      }
-      else
-      {
-        LOG(INFO) << "Non-regular 3D volume detected";
-      }
-    }
-    else
-    {
-      LOG(INFO) << "Series is not a 3D volume, sorting by index";
-      SortIndexInSeries();
-    }
-
-    LOG(INFO) << "Number of frames: " << orderedFrames_.size();
-  }
-
-
-  unsigned int SeriesOrderedFrames::GetFrameIndex(size_t seriesIndex) const
-  {
-    return GetFrame(seriesIndex).GetFrameIndex();
-  }
-
-
-  const Orthanc::DicomMap& SeriesOrderedFrames::GetInstance(size_t seriesIndex) const
-  {
-    return GetFrame(seriesIndex).GetInstance();
-  }
-
-
-  const DicomInstanceParameters& SeriesOrderedFrames::GetInstanceParameters(size_t seriesIndex) const
-  {
-    return GetFrame(seriesIndex).GetInstanceParameters();
-  }
-
-
-  double SeriesOrderedFrames::GetSpacingBetweenSlices() const
-  {
-    if (IsRegular3DVolume())
-    {
-      return spacingBetweenSlices_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-}
--- a/Framework/Loaders/SeriesOrderedFrames.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "LoadedDicomResources.h"
-
-#include "../Toolbox/DicomInstanceParameters.h"
-
-namespace OrthancStone
-{
-  class SeriesOrderedFrames : public boost::noncopyable
-  {
-  private:
-    class Instance;
-    class Frame;
-    class InstanceWithIndexInSeries;
-
-    std::vector<Instance*>  instances_;
-    std::vector<Frame*>     orderedFrames_;
-    bool                    isVolume_;
-    bool                    isRegular_;
-    double                  spacingBetweenSlices_;
-
-    void Clear();
-
-    bool Sort3DVolume();
-
-    void SortIndexInSeries();
-
-    const Frame& GetFrame(size_t seriesIndex) const;
-
-  public:
-    SeriesOrderedFrames(LoadedDicomResources& instances);
-
-    ~SeriesOrderedFrames()
-    {
-      Clear();
-    }
-
-    size_t GetFramesCount() const
-    {
-      return orderedFrames_.size();
-    }
-
-    unsigned int GetFrameIndex(size_t seriesIndex) const;
-
-    const Orthanc::DicomMap& GetInstance(size_t seriesIndex) const;
-
-    const DicomInstanceParameters& GetInstanceParameters(size_t seriesIndex) const;
-
-    // Are all frames parallel and aligned?
-    bool Is3DVolume() const
-    {
-      return isVolume_;
-    }
-
-    // Are all frames parallel, aligned and evenly spaced?
-    bool IsRegular3DVolume() const
-    {
-      return isRegular_;
-    }
-
-    // Only available on regular 3D volumes
-    double GetSpacingBetweenSlices() const;
-  };
-}
--- a/Framework/Loaders/SeriesThumbnailsLoader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,773 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SeriesThumbnailsLoader.h"
-
-#include "LoadedDicomResources.h"
-#include "../Oracle/ParseDicomFromWadoCommand.h"
-#include "../Toolbox/ImageToolbox.h"
-
-#include <DicomFormat/DicomMap.h>
-#include <DicomFormat/DicomInstanceHasher.h>
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <Images/JpegReader.h>
-#include <Images/JpegWriter.h>
-#include <OrthancException.h>
-
-#include <boost/algorithm/string/predicate.hpp>
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include <DicomParsing/ParsedDicomFile.h>
-#  include <DicomParsing/Internals/DicomImageDecoder.h>
-#endif 
-
-
-static const unsigned int JPEG_QUALITY = 70;  // Only used for Orthanc source
-
-namespace OrthancStone
-{
-  static SeriesThumbnailType ExtractSopClassUid(const std::string& sopClassUid)
-  {
-    if (sopClassUid == "1.2.840.10008.5.1.4.1.1.104.1")  // Encapsulated PDF Storage
-    {
-      return SeriesThumbnailType_Pdf;
-    }
-    else if (sopClassUid == "1.2.840.10008.5.1.4.1.1.77.1.1.1" ||  // Video Endoscopic Image Storage
-             sopClassUid == "1.2.840.10008.5.1.4.1.1.77.1.2.1" ||  // Video Microscopic Image Storage
-             sopClassUid == "1.2.840.10008.5.1.4.1.1.77.1.4.1")    // Video Photographic Image Storage
-    {
-      return SeriesThumbnailType_Video;
-    }
-    else
-    {
-      return SeriesThumbnailType_Unsupported;
-    }
-  }
-
-
-  SeriesThumbnailsLoader::Thumbnail::Thumbnail(const std::string& image,
-                                               const std::string& mime) :
-    type_(SeriesThumbnailType_Image),
-    image_(image),
-    mime_(mime)
-  {
-  }
-
-
-  SeriesThumbnailsLoader::Thumbnail::Thumbnail(SeriesThumbnailType type) :
-    type_(type)
-  {
-    if (type == SeriesThumbnailType_Image)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  Orthanc::ImageAccessor* SeriesThumbnailsLoader::SuccessMessage::DecodeImage() const
-  {
-    if (GetType() != SeriesThumbnailType_Image)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    Orthanc::MimeType mime;
-    if (!Orthanc::LookupMimeType(mime, GetMime()))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
-                                      "Unsupported MIME type for thumbnail: " + GetMime());
-    }
-
-    switch (mime)
-    {
-      case Orthanc::MimeType_Jpeg:
-      {
-        std::unique_ptr<Orthanc::JpegReader> reader(new Orthanc::JpegReader);
-        reader->ReadFromMemory(GetEncodedImage());
-        return reader.release();
-      }
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
-                                        "Cannot decode MIME type for thumbnail: " + GetMime());
-    }
-  }
-
-
-
-  void SeriesThumbnailsLoader::AcquireThumbnail(const DicomSource& source,
-                                                const std::string& studyInstanceUid,
-                                                const std::string& seriesInstanceUid,
-                                                SeriesThumbnailsLoader::Thumbnail* thumbnail)
-  {
-    assert(thumbnail != NULL);
-  
-    std::unique_ptr<Thumbnail> protection(thumbnail);
-
-    Thumbnails::iterator found = thumbnails_.find(seriesInstanceUid);
-    if (found == thumbnails_.end())
-    {
-      thumbnails_[seriesInstanceUid] = protection.release();
-    }
-    else
-    {
-      assert(found->second != NULL);
-      if (protection->GetType() == SeriesThumbnailType_NotLoaded ||
-          protection->GetType() == SeriesThumbnailType_Unsupported)
-      {
-        // Don't replace an old entry if the current one is worse
-        return;
-      }
-      else
-      {
-        delete found->second;
-        found->second = protection.release();
-      }
-    }
-
-    LOG(INFO) << "Thumbnail updated for series: " << seriesInstanceUid << ": " << thumbnail->GetType();
-    
-    SuccessMessage message(*this, source, studyInstanceUid, seriesInstanceUid, *thumbnail);
-    BroadcastMessage(message);
-  }
-
-
-  class SeriesThumbnailsLoader::Handler : public Orthanc::IDynamicObject
-  {
-  private:
-    boost::shared_ptr<SeriesThumbnailsLoader>  loader_;
-    DicomSource                                source_;
-    std::string                                studyInstanceUid_;
-    std::string                                seriesInstanceUid_;
-
-  public:
-    Handler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
-            const DicomSource& source,
-            const std::string& studyInstanceUid,
-            const std::string& seriesInstanceUid) :
-      loader_(loader),
-      source_(source),
-      studyInstanceUid_(studyInstanceUid),
-      seriesInstanceUid_(seriesInstanceUid)
-    {
-      if (!loader)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    boost::shared_ptr<SeriesThumbnailsLoader> GetLoader()
-    {
-      return loader_;
-    }
-
-    const DicomSource& GetSource() const
-    {
-      return source_;
-    }
-
-    const std::string& GetStudyInstanceUid() const
-    {
-      return studyInstanceUid_;
-    }
-
-    const std::string& GetSeriesInstanceUid() const
-    {
-      return seriesInstanceUid_;
-    }
-
-    virtual void HandleSuccess(const std::string& body,
-                               const std::map<std::string, std::string>& headers) = 0;
-
-    virtual void HandleError()
-    {
-      LOG(INFO) << "Cannot generate thumbnail for SeriesInstanceUID: " << seriesInstanceUid_;
-    }
-  };
-
-
-  class SeriesThumbnailsLoader::DicomWebSopClassHandler : public SeriesThumbnailsLoader::Handler
-  {
-  private:
-    static bool GetSopClassUid(std::string& sopClassUid,
-                               const Json::Value& json)
-    {
-      Orthanc::DicomMap dicom;
-      dicom.FromDicomWeb(json);
-
-      return dicom.LookupStringValue(sopClassUid, Orthanc::DICOM_TAG_SOP_CLASS_UID, false);
-    }
-  
-  public:
-    DicomWebSopClassHandler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
-                            const DicomSource& source,
-                            const std::string& studyInstanceUid,
-                            const std::string& seriesInstanceUid) :
-      Handler(loader, source, studyInstanceUid, seriesInstanceUid)
-    {
-    }
-
-    virtual void HandleSuccess(const std::string& body,
-                               const std::map<std::string, std::string>& headers)
-    {
-      Json::Reader reader;
-      Json::Value value;
-
-      if (!reader.parse(body, value) ||
-          value.type() != Json::arrayValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-      else
-      {
-        SeriesThumbnailType type = SeriesThumbnailType_Unsupported;
-
-        std::string sopClassUid;
-        if (value.size() > 0 &&
-            GetSopClassUid(sopClassUid, value[0]))
-        {
-          bool ok = true;
-        
-          for (Json::Value::ArrayIndex i = 1; i < value.size() && ok; i++)
-          {
-            std::string s;
-            if (!GetSopClassUid(s, value[i]) ||
-                s != sopClassUid)
-            {
-              ok = false;
-            }
-          }
-
-          if (ok)
-          {
-            type = ExtractSopClassUid(sopClassUid);
-          }
-        }
-      
-        GetLoader()->AcquireThumbnail(GetSource(), GetStudyInstanceUid(),
-                                      GetSeriesInstanceUid(), new Thumbnail(type));
-      }
-    }
-  };
-
-
-  class SeriesThumbnailsLoader::DicomWebThumbnailHandler : public SeriesThumbnailsLoader::Handler
-  {
-  public:
-    DicomWebThumbnailHandler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
-                             const DicomSource& source,
-                             const std::string& studyInstanceUid,
-                             const std::string& seriesInstanceUid) :
-      Handler(loader, source, studyInstanceUid, seriesInstanceUid)
-    {
-    }
-
-    virtual void HandleSuccess(const std::string& body,
-                               const std::map<std::string, std::string>& headers)
-    {
-      std::string mime = Orthanc::MIME_JPEG;
-      for (std::map<std::string, std::string>::const_iterator
-             it = headers.begin(); it != headers.end(); ++it)
-      {
-        if (boost::iequals(it->first, "content-type"))
-        {
-          mime = it->second;
-        }
-      }
-
-      GetLoader()->AcquireThumbnail(GetSource(), GetStudyInstanceUid(),
-                                    GetSeriesInstanceUid(), new Thumbnail(body, mime));
-    }
-
-    virtual void HandleError()
-    {
-      // The DICOMweb wasn't able to generate a thumbnail, try to
-      // retrieve the SopClassUID tag using QIDO-RS
-
-      std::map<std::string, std::string> arguments, headers;
-      arguments["0020000D"] = GetStudyInstanceUid();
-      arguments["0020000E"] = GetSeriesInstanceUid();
-      arguments["includefield"] = "00080016";  // SOP Class UID
-      
-      std::unique_ptr<IOracleCommand> command(
-        GetSource().CreateDicomWebCommand(
-          "/instances", arguments, headers, new DicomWebSopClassHandler(
-            GetLoader(), GetSource(), GetStudyInstanceUid(), GetSeriesInstanceUid())));
-      GetLoader()->Schedule(command.release());
-    }
-  };
-
-
-  class SeriesThumbnailsLoader::ThumbnailInformation : public Orthanc::IDynamicObject
-  {
-  private:
-    DicomSource  source_;
-    std::string  studyInstanceUid_;
-    std::string  seriesInstanceUid_;
-
-  public:
-    ThumbnailInformation(const DicomSource& source,
-                         const std::string& studyInstanceUid,
-                         const std::string& seriesInstanceUid) :
-      source_(source),
-      studyInstanceUid_(studyInstanceUid),
-      seriesInstanceUid_(seriesInstanceUid)
-    {
-    }
-
-    const DicomSource& GetDicomSource() const
-    {
-      return source_;
-    }
-
-    const std::string& GetStudyInstanceUid() const
-    {
-      return studyInstanceUid_;
-    }
-
-    const std::string& GetSeriesInstanceUid() const
-    {
-      return seriesInstanceUid_;
-    }
-  };
-
-
-  class SeriesThumbnailsLoader::OrthancSopClassHandler : public SeriesThumbnailsLoader::Handler
-  {
-  private:
-    std::string instanceId_;
-      
-  public:
-    OrthancSopClassHandler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
-                           const DicomSource& source,
-                           const std::string& studyInstanceUid,
-                           const std::string& seriesInstanceUid,
-                           const std::string& instanceId) :
-      Handler(loader, source, studyInstanceUid, seriesInstanceUid),
-      instanceId_(instanceId)
-    {
-    }
-
-    virtual void HandleSuccess(const std::string& body,
-                               const std::map<std::string, std::string>& headers)
-    {
-      SeriesThumbnailType type = ExtractSopClassUid(body);
-
-      if (type == SeriesThumbnailType_Pdf ||
-          type == SeriesThumbnailType_Video)
-      {
-        GetLoader()->AcquireThumbnail(GetSource(), GetStudyInstanceUid(),
-                                      GetSeriesInstanceUid(), new Thumbnail(type));
-      }
-      else
-      {
-        std::unique_ptr<GetOrthancImageCommand> command(new GetOrthancImageCommand);
-        command->SetUri("/instances/" + instanceId_ + "/preview");
-        command->SetHttpHeader("Accept", Orthanc::MIME_JPEG);
-        command->AcquirePayload(new ThumbnailInformation(
-                                  GetSource(), GetStudyInstanceUid(), GetSeriesInstanceUid()));
-        GetLoader()->Schedule(command.release());
-      }
-    }
-  };
-
-
-  class SeriesThumbnailsLoader::SelectOrthancInstanceHandler : public SeriesThumbnailsLoader::Handler
-  {
-  public:
-    SelectOrthancInstanceHandler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
-                                 const DicomSource& source,
-                                 const std::string& studyInstanceUid,
-                                 const std::string& seriesInstanceUid) :
-      Handler(loader, source, studyInstanceUid, seriesInstanceUid)
-    {
-    }
-
-    virtual void HandleSuccess(const std::string& body,
-                               const std::map<std::string, std::string>& headers)
-    {
-      static const char* const INSTANCES = "Instances";
-      
-      Json::Value json;
-      Json::Reader reader;
-      if (!reader.parse(body, json) ||
-          json.type() != Json::objectValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-
-      if (json.isMember(INSTANCES) &&
-          json[INSTANCES].type() == Json::arrayValue &&
-          json[INSTANCES].size() > 0)
-      {
-        // Select one instance of the series to generate the thumbnail
-        Json::Value::ArrayIndex index = json[INSTANCES].size() / 2;
-        if (json[INSTANCES][index].type() == Json::stringValue)
-        {
-          std::map<std::string, std::string> arguments, headers;
-          arguments["quality"] = boost::lexical_cast<std::string>(JPEG_QUALITY);
-          headers["Accept"] = Orthanc::MIME_JPEG;
-
-          const std::string instance = json[INSTANCES][index].asString();
-
-          std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
-          command->SetUri("/instances/" + instance + "/metadata/SopClassUid");
-          command->AcquirePayload(
-            new OrthancSopClassHandler(
-              GetLoader(), GetSource(), GetStudyInstanceUid(), GetSeriesInstanceUid(), instance));
-          GetLoader()->Schedule(command.release());
-        }
-      }
-    }
-  };
-
-    
-#if ORTHANC_ENABLE_DCMTK == 1
-  class SeriesThumbnailsLoader::SelectDicomWebInstanceHandler : public SeriesThumbnailsLoader::Handler
-  {
-  public:
-    SelectDicomWebInstanceHandler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
-                                  const DicomSource& source,
-                                  const std::string& studyInstanceUid,
-                                  const std::string& seriesInstanceUid) :
-      Handler(loader, source, studyInstanceUid, seriesInstanceUid)
-    {
-    }
-
-    virtual void HandleSuccess(const std::string& body,
-                               const std::map<std::string, std::string>& headers)
-    {
-      Json::Value json;
-      Json::Reader reader;
-      if (!reader.parse(body, json) ||
-          json.type() != Json::arrayValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-
-      LoadedDicomResources instances(Orthanc::DICOM_TAG_SOP_INSTANCE_UID);
-      instances.AddFromDicomWeb(json);
-      
-      std::string sopInstanceUid;      
-      if (instances.GetSize() == 0 ||
-          !instances.GetResource(0).LookupStringValue(sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
-      {
-        LOG(ERROR) << "Series without an instance: " << GetSeriesInstanceUid();
-      }
-      else
-      {
-        GetLoader()->Schedule(
-          ParseDicomFromWadoCommand::Create(
-            GetSource(), GetStudyInstanceUid(), GetSeriesInstanceUid(), sopInstanceUid, false,
-            Orthanc::DicomTransferSyntax_LittleEndianExplicit /* useless, as no transcoding */,
-            new ThumbnailInformation(
-              GetSource(), GetStudyInstanceUid(), GetSeriesInstanceUid())));
-      }
-    }
-  };
-#endif
-
-    
-  void SeriesThumbnailsLoader::Schedule(IOracleCommand* command)
-  {
-    std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-    lock->Schedule(GetSharedObserver(), priority_, command);
-  }    
-
-  
-  void SeriesThumbnailsLoader::Handle(const HttpCommand::SuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-    dynamic_cast<Handler&>(message.GetOrigin().GetPayload()).HandleSuccess(message.GetAnswer(), message.GetAnswerHeaders());
-  }
-
-
-  void SeriesThumbnailsLoader::Handle(const OrthancRestApiCommand::SuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-    dynamic_cast<Handler&>(message.GetOrigin().GetPayload()).HandleSuccess(message.GetAnswer(), message.GetAnswerHeaders());
-  }
-
-
-  void SeriesThumbnailsLoader::Handle(const GetOrthancImageCommand::SuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-    const ThumbnailInformation& info = dynamic_cast<ThumbnailInformation&>(message.GetOrigin().GetPayload());
-
-    std::unique_ptr<Orthanc::ImageAccessor> resized(Orthanc::ImageProcessing::FitSize(message.GetImage(), width_, height_));
-
-    std::string jpeg;
-    Orthanc::JpegWriter writer;
-    writer.SetQuality(JPEG_QUALITY);
-    writer.WriteToMemory(jpeg, *resized);
-
-    AcquireThumbnail(info.GetDicomSource(), info.GetStudyInstanceUid(),
-                     info.GetSeriesInstanceUid(), new Thumbnail(jpeg, Orthanc::MIME_JPEG));      
-  }
-
-
-#if ORTHANC_ENABLE_DCMTK == 1
-  void SeriesThumbnailsLoader::Handle(const ParseDicomSuccessMessage& message)
-  {
-    assert(message.GetOrigin().HasPayload());
-    const ParseDicomFromWadoCommand& origin =
-      dynamic_cast<const ParseDicomFromWadoCommand&>(message.GetOrigin());
-    const ThumbnailInformation& info = dynamic_cast<ThumbnailInformation&>(origin.GetPayload());
-
-    std::string tmp;
-    Orthanc::DicomTransferSyntax transferSyntax;
-    if (!message.GetDicom().LookupTransferSyntax(tmp))
-    {
-      
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
-                                      "DICOM instance without a transfer syntax: " + origin.GetSopInstanceUid());
-    }
-    else if (!Orthanc::LookupTransferSyntax(transferSyntax, tmp) ||
-             !ImageToolbox::IsDecodingSupported(transferSyntax))
-    {
-      LOG(INFO) << "Asking the DICOMweb server to transcode, "
-                << "as I don't support this transfer syntax: " << tmp;
-
-      Schedule(ParseDicomFromWadoCommand::Create(
-                 origin.GetSource(), info.GetStudyInstanceUid(), info.GetSeriesInstanceUid(),
-                 origin.GetSopInstanceUid(), true, Orthanc::DicomTransferSyntax_LittleEndianExplicit,
-                 new ThumbnailInformation(
-                   origin.GetSource(), info.GetStudyInstanceUid(), info.GetSeriesInstanceUid())));
-    }
-    else
-    {
-      std::unique_ptr<Orthanc::ImageAccessor> frame(
-        Orthanc::DicomImageDecoder::Decode(message.GetDicom(), 0));
-
-      std::unique_ptr<Orthanc::ImageAccessor> thumbnail;
-
-      if (frame->GetFormat() == Orthanc::PixelFormat_RGB24)
-      {
-        thumbnail.reset(Orthanc::ImageProcessing::FitSizeKeepAspectRatio(*frame, width_, height_));
-      }
-      else
-      {
-        std::unique_ptr<Orthanc::ImageAccessor> converted(
-          new Orthanc::Image(Orthanc::PixelFormat_Float32, frame->GetWidth(), frame->GetHeight(), false));
-        Orthanc::ImageProcessing::Convert(*converted, *frame);
-
-        std::unique_ptr<Orthanc::ImageAccessor> resized(
-          Orthanc::ImageProcessing::FitSizeKeepAspectRatio(*converted, width_, height_));
-      
-        float minValue, maxValue;
-        Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue, maxValue, *resized);
-        if (minValue + 0.01f < maxValue)
-        {
-          Orthanc::ImageProcessing::ShiftScale(*resized, -minValue, 255.0f / (maxValue - minValue), false);
-        }
-        else
-        {
-          Orthanc::ImageProcessing::Set(*resized, 0);
-        }
-
-        converted.reset(NULL);
-
-        thumbnail.reset(new Orthanc::Image(Orthanc::PixelFormat_Grayscale8, width_, height_, false));
-        Orthanc::ImageProcessing::Convert(*thumbnail, *resized);
-      }
-    
-      std::string jpeg;
-      Orthanc::JpegWriter writer;
-      writer.SetQuality(JPEG_QUALITY);
-      writer.WriteToMemory(jpeg, *thumbnail);
-
-      AcquireThumbnail(info.GetDicomSource(), info.GetStudyInstanceUid(),
-                       info.GetSeriesInstanceUid(), new Thumbnail(jpeg, Orthanc::MIME_JPEG));
-    }
-  }
-#endif
-
-
-  void SeriesThumbnailsLoader::Handle(const OracleCommandExceptionMessage& message)
-  {
-    const OracleCommandBase& command = dynamic_cast<const OracleCommandBase&>(message.GetOrigin());
-    assert(command.HasPayload());
-
-    if (command.GetType() == IOracleCommand::Type_GetOrthancImage)
-    {
-      // This is presumably a HTTP status 301 (Moved permanently)
-      // because of an unsupported DICOM file in "/preview"
-      const ThumbnailInformation& info = dynamic_cast<const ThumbnailInformation&>(command.GetPayload());
-      AcquireThumbnail(info.GetDicomSource(), info.GetStudyInstanceUid(),
-                       info.GetSeriesInstanceUid(), new Thumbnail(SeriesThumbnailType_Unsupported));
-    }
-    else
-    {
-      dynamic_cast<Handler&>(command.GetPayload()).HandleError();
-    }
-  }
-
-
-  SeriesThumbnailsLoader::SeriesThumbnailsLoader(ILoadersContext& context,
-                                                 int priority) :
-    context_(context),
-    priority_(priority),
-    width_(128),
-    height_(128)
-  {
-  }
-    
-  
-  boost::shared_ptr<SeriesThumbnailsLoader> SeriesThumbnailsLoader::Create(ILoadersContext::ILock& stone,
-                                                                           int priority)
-  {
-    boost::shared_ptr<SeriesThumbnailsLoader> result(new SeriesThumbnailsLoader(stone.GetContext(), priority));
-    result->Register<GetOrthancImageCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
-    result->Register<HttpCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
-    result->Register<OracleCommandExceptionMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
-    result->Register<OrthancRestApiCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    result->Register<ParseDicomSuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
-#endif
-    
-    return result;
-  }
-
-
-  void SeriesThumbnailsLoader::SetThumbnailSize(unsigned int width,
-                                                unsigned int height)
-  {
-    if (width <= 0 ||
-        height <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      width_ = width;
-      height_ = height;
-    }
-  }
-
-    
-  void SeriesThumbnailsLoader::Clear()
-  {
-    for (Thumbnails::iterator it = thumbnails_.begin(); it != thumbnails_.end(); ++it)
-    {
-      assert(it->second != NULL);
-      delete it->second;
-    }
-
-    thumbnails_.clear();
-  }
-
-    
-  SeriesThumbnailType SeriesThumbnailsLoader::GetSeriesThumbnail(std::string& image,
-                                                                 std::string& mime,
-                                                                 const std::string& seriesInstanceUid) const
-  {
-    Thumbnails::const_iterator found = thumbnails_.find(seriesInstanceUid);
-
-    if (found == thumbnails_.end())
-    {
-      return SeriesThumbnailType_NotLoaded;
-    }
-    else
-    {
-      assert(found->second != NULL);
-      image.assign(found->second->GetImage());
-      mime.assign(found->second->GetMime());
-      return found->second->GetType();
-    }
-  }
-
-
-  void SeriesThumbnailsLoader::ScheduleLoadThumbnail(const DicomSource& source,
-                                                     const std::string& patientId,
-                                                     const std::string& studyInstanceUid,
-                                                     const std::string& seriesInstanceUid)
-  {
-    if (IsScheduledSeries(seriesInstanceUid))
-    {
-      return;
-    }
-
-    if (source.IsDicomWeb())
-    {
-      if (!source.HasDicomWebRendered())
-      {
-#if ORTHANC_ENABLE_DCMTK == 1
-        // Issue a QIDO-RS request to select one of the instances in the series
-        std::map<std::string, std::string> arguments, headers;
-        arguments["0020000D"] = studyInstanceUid;
-        arguments["0020000E"] = seriesInstanceUid;
-        arguments["includefield"] = "00080018";  // SOP Instance UID is mandatory
-        
-        std::unique_ptr<IOracleCommand> command(
-          source.CreateDicomWebCommand(
-            "/instances", arguments, headers, new SelectDicomWebInstanceHandler(
-              GetSharedObserver(), source, studyInstanceUid, seriesInstanceUid)));
-        Schedule(command.release());
-#else
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
-                                        "Stone of Orthanc was built without support to decode DICOM images");
-#endif
-      }
-      else
-      {
-        const std::string uri = ("/studies/" + studyInstanceUid +
-                                 "/series/" + seriesInstanceUid + "/rendered");
-
-        std::map<std::string, std::string> arguments, headers;
-        arguments["viewport"] = (boost::lexical_cast<std::string>(width_) + "," +
-                                 boost::lexical_cast<std::string>(height_));
-
-        // Needed to set this header explicitly, as long as emscripten
-        // does not include macro "EMSCRIPTEN_FETCH_RESPONSE_HEADERS"
-        // https://github.com/emscripten-core/emscripten/pull/8486
-        headers["Accept"] = Orthanc::MIME_JPEG;
-
-        std::unique_ptr<IOracleCommand> command(
-          source.CreateDicomWebCommand(
-            uri, arguments, headers, new DicomWebThumbnailHandler(
-              GetSharedObserver(), source, studyInstanceUid, seriesInstanceUid)));
-        Schedule(command.release());
-      }
-
-      scheduledSeries_.insert(seriesInstanceUid);
-    }
-    else if (source.IsOrthanc())
-    {
-      // Dummy SOP Instance UID, as we are working at the "series" level
-      Orthanc::DicomInstanceHasher hasher(patientId, studyInstanceUid, seriesInstanceUid, "dummy");
-
-      std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
-      command->SetUri("/series/" + hasher.HashSeries());
-      command->AcquirePayload(new SelectOrthancInstanceHandler(
-                                GetSharedObserver(), source, studyInstanceUid, seriesInstanceUid));
-      Schedule(command.release());
-
-      scheduledSeries_.insert(seriesInstanceUid);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
-                                      "Can only load thumbnails from Orthanc or DICOMweb");
-    }
-  }
-}
--- a/Framework/Loaders/SeriesThumbnailsLoader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,240 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../OrthancStone.h"
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error Macro ORTHANC_ENABLE_DCMTK must be defined
-#endif 
-
-
-#include "../Oracle/GetOrthancImageCommand.h"
-#include "../Oracle/HttpCommand.h"
-#include "../Oracle/OracleCommandExceptionMessage.h"
-#include "../Oracle/OrthancRestApiCommand.h"
-#include "DicomSource.h"
-#include "ILoaderFactory.h"
-#include "OracleScheduler.h"
-
-
-namespace OrthancStone
-{
-  enum SeriesThumbnailType
-  {
-    SeriesThumbnailType_NotLoaded = 1,  // The remote server cannot decode this image
-    SeriesThumbnailType_Unsupported = 2,  // The remote server cannot decode this image
-    SeriesThumbnailType_Pdf = 3,
-    SeriesThumbnailType_Video = 4,
-    SeriesThumbnailType_Image = 5
-  };
-  
-
-  class SeriesThumbnailsLoader :
-    public IObservable,
-    public ObserverBase<SeriesThumbnailsLoader>
-  {
-  private:
-    class Thumbnail : public boost::noncopyable
-    {
-    private:
-      SeriesThumbnailType  type_;
-      std::string          image_;
-      std::string          mime_;
-
-    public:
-      Thumbnail(const std::string& image,
-                const std::string& mime);
-
-      Thumbnail(SeriesThumbnailType type);
-
-      SeriesThumbnailType GetType() const
-      {
-        return type_;
-      }
-
-      const std::string& GetImage() const
-      {
-        return image_;
-      }
-
-      const std::string& GetMime() const
-      {
-        return mime_;
-      }
-    };
-
-  public:
-    class SuccessMessage : public OriginMessage<SeriesThumbnailsLoader>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const DicomSource&   source_;
-      const std::string&   studyInstanceUid_;
-      const std::string&   seriesInstanceUid_;
-      const Thumbnail&     thumbnail_;
-
-    public:
-      SuccessMessage(const SeriesThumbnailsLoader& origin,
-                     const DicomSource& source,
-                     const std::string& studyInstanceUid,
-                     const std::string& seriesInstanceUid,
-                     const Thumbnail& thumbnail) :
-        OriginMessage(origin),
-        source_(source),
-        studyInstanceUid_(studyInstanceUid),
-        seriesInstanceUid_(seriesInstanceUid),
-        thumbnail_(thumbnail)
-      {
-      }
-
-      const DicomSource& GetDicomSource() const
-      {
-        return source_;
-      }
-
-      SeriesThumbnailType GetType() const
-      {
-        return thumbnail_.GetType();
-      }
-
-      const std::string& GetStudyInstanceUid() const
-      {
-        return studyInstanceUid_;
-      }
-
-      const std::string& GetSeriesInstanceUid() const
-      {
-        return seriesInstanceUid_;
-      }
-
-      const std::string& GetEncodedImage() const
-      {
-        return thumbnail_.GetImage();
-      }
-
-      const std::string& GetMime() const
-      {
-        return thumbnail_.GetMime();
-      }
-
-      Orthanc::ImageAccessor* DecodeImage() const;
-    };
-
-  private:
-    class Handler;
-    class DicomWebSopClassHandler;
-    class DicomWebThumbnailHandler;
-    class ThumbnailInformation;
-    class OrthancSopClassHandler;
-    class SelectOrthancInstanceHandler;
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    class SelectDicomWebInstanceHandler;
-#endif
-    
-    // Maps a "Series Instance UID" to a thumbnail
-    typedef std::map<std::string, Thumbnail*>  Thumbnails;
-
-    ILoadersContext&       context_;
-    Thumbnails             thumbnails_;
-    int                    priority_;
-    unsigned int           width_;
-    unsigned int           height_;
-    std::set<std::string>  scheduledSeries_;
-
-    void AcquireThumbnail(const DicomSource& source,
-                          const std::string& studyInstanceUid,
-                          const std::string& seriesInstanceUid,
-                          Thumbnail* thumbnail /* takes ownership */);
-
-    void Schedule(IOracleCommand* command);
-  
-    void Handle(const HttpCommand::SuccessMessage& message);
-
-    void Handle(const OrthancRestApiCommand::SuccessMessage& message);
-
-    void Handle(const GetOrthancImageCommand::SuccessMessage& message);
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    void Handle(const ParseDicomSuccessMessage& message);
-#endif
-
-    void Handle(const OracleCommandExceptionMessage& message);
-
-    SeriesThumbnailsLoader(ILoadersContext& context,
-                           int priority);
-    
-  public:
-    class Factory : public ILoaderFactory
-    {
-    private:
-      int priority_;
-
-    public:
-      Factory() :
-        priority_(0)
-      {
-      }
-
-      void SetPriority(int priority)
-      {
-        priority_ = priority;
-      }
-
-      virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& context)
-      {
-        return SeriesThumbnailsLoader::Create(context, priority_);
-      }
-    };
-
-
-    virtual ~SeriesThumbnailsLoader()
-    {
-      Clear();
-    }
-
-
-    static boost::shared_ptr<SeriesThumbnailsLoader> Create(ILoadersContext::ILock& context,
-                                                            int priority);
-
-    void SetThumbnailSize(unsigned int width,
-                          unsigned int height);
-    
-    void Clear();
-    
-    SeriesThumbnailType GetSeriesThumbnail(std::string& image,
-                                           std::string& mime,
-                                           const std::string& seriesInstanceUid) const;
-
-    void ScheduleLoadThumbnail(const DicomSource& source,
-                               const std::string& patientId,
-                               const std::string& studyInstanceUid,
-                               const std::string& seriesInstanceUid);
-
-    bool IsScheduledSeries(const std::string& seriesInstanceUid) const
-    {
-      return scheduledSeries_.find(seriesInstanceUid) != scheduledSeries_.end();
-    }
-  };
-}
--- a/Framework/Loaders/WebAssemblyLoadersContext.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebAssemblyLoadersContext.h"
-
-namespace OrthancStone
-{
-  class WebAssemblyLoadersContext::Locker : public ILoadersContext::ILock
-  {
-  private:
-    WebAssemblyLoadersContext&  that_;
-
-  public:
-    Locker(WebAssemblyLoadersContext& that) :
-      that_(that)
-    {
-    }      
-      
-    virtual ILoadersContext& GetContext() const ORTHANC_OVERRIDE
-    {
-      return that_;
-    }
-
-    virtual IObservable& GetOracleObservable() const ORTHANC_OVERRIDE
-    {
-      return that_.oracle_.GetOracleObservable();
-    }
-
-    virtual void Schedule(boost::shared_ptr<IObserver> receiver,
-                          int priority,
-                          IOracleCommand* command /* Takes ownership */) ORTHANC_OVERRIDE
-    {
-      that_.scheduler_->Schedule(receiver, priority, command);
-    }
-
-    virtual void CancelRequests(boost::shared_ptr<IObserver> receiver) ORTHANC_OVERRIDE
-    {
-      that_.scheduler_->CancelRequests(receiver);
-    }
-
-    virtual void CancelAllRequests() ORTHANC_OVERRIDE
-    {
-      that_.scheduler_->CancelAllRequests();
-    }
-
-    virtual void AddLoader(boost::shared_ptr<IObserver> loader) ORTHANC_OVERRIDE
-    {
-      that_.loaders_.push_back(loader);
-    }
-
-    virtual void GetStatistics(uint64_t& scheduledCommands,
-                               uint64_t& processedCommands) ORTHANC_OVERRIDE
-    {
-      scheduledCommands = that_.scheduler_->GetTotalScheduled();
-      processedCommands = that_.scheduler_->GetTotalProcessed();
-    }
-  };
-    
-
-  WebAssemblyLoadersContext::WebAssemblyLoadersContext(unsigned int maxHighPriority,
-                                                       unsigned int maxStandardPriority,
-                                                       unsigned int maxLowPriority)
-  {
-    oracle_.GetOracleObservable();
-    scheduler_ = OracleScheduler::Create(oracle_, oracle_.GetOracleObservable(), oracle_,
-                                         maxHighPriority, maxStandardPriority, maxLowPriority);
-
-    if (!scheduler_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-  ILoadersContext::ILock* WebAssemblyLoadersContext::Lock()
-  {
-    return new Locker(*this);
-  }
-}
--- a/Framework/Loaders/WebAssemblyLoadersContext.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ILoadersContext.h"
-#include "../Oracle/WebAssemblyOracle.h"
-#include "OracleScheduler.h"
-
-#include <list>
-
-namespace OrthancStone
-{
-  class WebAssemblyLoadersContext : public ILoadersContext
-  {
-  private:
-    class Locker;
-    
-    WebAssemblyOracle                          oracle_;
-    boost::shared_ptr<OracleScheduler>         scheduler_;
-    std::list< boost::shared_ptr<IObserver> >  loaders_;
-    
-  public:
-    WebAssemblyLoadersContext(unsigned int maxHighPriority,
-                              unsigned int maxStandardPriority,
-                              unsigned int maxLowPriority);
-
-    void SetLocalOrthanc(const std::string& root)
-    {
-      oracle_.SetLocalOrthanc(root);
-    }
-
-    void SetRemoteOrthanc(const Orthanc::WebServiceParameters& orthanc)
-    {
-      oracle_.SetRemoteOrthanc(orthanc);
-    }
-
-    void SetDicomCacheSize(size_t size)
-    {
-      oracle_.SetDicomCacheSize(size);
-    }
-
-    virtual ILock* Lock() ORTHANC_OVERRIDE;
-  };
-}
--- a/Framework/Messages/ICallable.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IMessage.h"
-#include "IObserver.h"
-
-#include <Logging.h>
-
-#include <boost/noncopyable.hpp>
-#include <boost/weak_ptr.hpp>
-
-#include <string>
-#include <stdint.h>
-
-namespace OrthancStone 
-{
-  // This is referencing an object and member function that can be notified
-  // by an IObservable.  The object must derive from IO
-  // The member functions must be of type "void Method(const IMessage& message)" or reference a derived class of IMessage
-  class ICallable : public boost::noncopyable
-  {
-  public:
-    virtual ~ICallable()
-    {
-    }
-
-    virtual void Apply(const IMessage& message) = 0;
-
-    virtual const MessageIdentifier& GetMessageIdentifier() = 0;
-
-    // TODO - Is this needed?
-    virtual boost::weak_ptr<IObserver> GetObserver() const = 0;
-  };
-
-
-  template <typename TObserver,
-            typename TMessage>
-  class Callable : public ICallable
-  {
-  private:
-    typedef void (TObserver::* MemberMethod) (const TMessage&);
-
-    boost::weak_ptr<IObserver>  observer_;
-    MemberMethod                function_;
-
-  public:
-    Callable(boost::shared_ptr<TObserver> observer,
-             MemberMethod function) :
-      observer_(observer),
-      function_(function)
-    {
-    }
-
-    virtual void Apply(const IMessage& message)
-    {
-      boost::shared_ptr<IObserver> lock(observer_);
-      if (lock)
-      {
-        TObserver& observer = dynamic_cast<TObserver&>(*lock);
-        const TMessage& typedMessage = dynamic_cast<const TMessage&>(message);
-        (observer.*function_) (typedMessage);
-      }
-    }
-
-    virtual const MessageIdentifier& GetMessageIdentifier()
-    {
-      return TMessage::GetStaticIdentifier();
-    }
-
-    virtual boost::weak_ptr<IObserver> GetObserver() const
-    {
-      return observer_;
-    }
-  };
-}
--- a/Framework/Messages/IMessage.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/lexical_cast.hpp>
-#include <boost/noncopyable.hpp>
-
-#include <string.h>
-
-namespace OrthancStone 
-{
-  class MessageIdentifier
-  {
-  private:
-    const char*  file_;
-    int          line_;
-
-    bool IsEqual(const MessageIdentifier& other) const
-    {
-      return (line_ == other.line_ &&
-              strcmp(file_, other.file_) == 0);
-    }
-
-  public:
-    MessageIdentifier(const char* file,
-                      int line) :
-      file_(file),
-      line_(line)
-    {
-    }
-
-    MessageIdentifier() :
-      file_(NULL),
-      line_(0)
-    {
-    }
-
-    std::string AsString() const
-    {
-      return std::string(file_) + ":" + boost::lexical_cast<std::string>(line_);
-    }
-
-    bool operator< (const MessageIdentifier& other) const
-    {
-      if (file_ == NULL)
-      {
-        return false;
-      }
-      else if (line_ != other.line_)
-      {
-        return line_ < other.line_;
-      }
-      else
-      {
-        return strcmp(file_, other.file_) < 0;
-      }
-    }
-
-    bool operator== (const MessageIdentifier& other) const
-    {
-      return IsEqual(other);
-    }
-
-    bool operator!= (const MessageIdentifier& other) const
-    {
-      return !IsEqual(other);
-    }
-  };
-
-    
-  /**
-   * Base messages that are exchanged between IObservable and
-   * IObserver. Messages are distinguished by the "__FILE__" and
-   * "__LINE__" macro, as in "Orthanc::SQLite::StatementId".
-   **/
-  class IMessage : public boost::noncopyable
-  {
-  public:
-    virtual ~IMessage()
-    {
-    }
-
-    virtual const MessageIdentifier& GetIdentifier() const = 0;
-  };
-
-
-  /**
-   * Simple message implementation when no payload is needed but the
-   * origin is required. Sample usage:
-   * typedef OriginMessage<OrthancSlicesLoader> SliceGeometryErrorMessage;
-   **/
-  template <typename TOrigin>
-  class OriginMessage : public IMessage
-  {
-  private:
-    const TOrigin&  origin_;
-
-  public:
-    OriginMessage(const TOrigin& origin) :
-      origin_(origin)
-    {
-    }
-
-    const TOrigin& GetOrigin() const
-    {
-      return origin_;
-    }
-  };
-}
-
-
-#define ORTHANC_STONE_MESSAGE(FILE, LINE)                               \
-  public:                                                               \
-  static const ::OrthancStone::MessageIdentifier& GetStaticIdentifier() \
-  {                                                                     \
-    static const ::OrthancStone::MessageIdentifier id(FILE, LINE);      \
-    return id;                                                          \
-  }                                                                     \
-                                                                        \
-  virtual const ::OrthancStone::MessageIdentifier& GetIdentifier() const \
-  {                                                                     \
-    return GetStaticIdentifier();                                       \
-  }
-
-
-#define ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(FILE, LINE, NAME, ORIGIN)   \
-  class NAME : public ::OrthancStone::OriginMessage<ORIGIN>             \
-  {                                                                     \
-    ORTHANC_STONE_MESSAGE(FILE, LINE);                                  \
-                                                                        \
-    NAME(const ORIGIN& origin) :                                        \
-      OriginMessage(origin)                                             \
-    {                                                                   \
-    }                                                                   \
-  };
-
-
-#define ORTHANC_STONE_DEFINE_EMPTY_MESSAGE(FILE, LINE, NAME)            \
-  class NAME : public ::OrthancStone::IMessage                          \
-  {                                                                     \
-    ORTHANC_STONE_MESSAGE(FILE, LINE);                                  \
-  };
--- a/Framework/Messages/IMessageEmitter.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IObserver.h"
-#include "IMessage.h"
-
-#include <boost/weak_ptr.hpp>
-
-namespace OrthancStone
-{
-  /**
-   This class may be used to customize the way the messages are sent between
-   a source and a destination, for instance by the ThreadedOracle.
-
-   See the concrete class LockingEmitter for an example of when it is useful.
-   */
-  class IMessageEmitter : public boost::noncopyable
-  {
-  public:
-    virtual ~IMessageEmitter()
-    {
-    }
-
-    virtual void EmitMessage(boost::weak_ptr<IObserver> observer,
-                             const IMessage& message) = 0;
-  };
-}
--- a/Framework/Messages/IObservable.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "IObservable.h"
-
-#include "../StoneException.h"
-
-#include <Logging.h>
-
-#include <cassert>
-
-namespace OrthancStone 
-{
-  IObservable::~IObservable()
-  {
-    // delete all callables (this will also unregister them from the broker)
-    for (Callables::const_iterator it = callables_.begin();
-         it != callables_.end(); ++it)
-    {
-      for (std::set<ICallable*>::const_iterator
-             it2 = it->second.begin(); it2 != it->second.end(); ++it2)
-      {
-        delete *it2;
-      }
-    }
-  }
-  
-
-  void IObservable::RegisterCallable(ICallable* callable)
-  {
-    if (callable == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-    
-    const MessageIdentifier& id = callable->GetMessageIdentifier();
-    callables_[id].insert(callable);
-  }
-
-  void IObservable::EmitMessageInternal(const IObserver* receiver,
-                                        const IMessage& message)
-  {
-    //LOG(TRACE) << "IObservable::EmitMessageInternal receiver = " << std::hex << receiver << std::dec;
-    Callables::const_iterator found = callables_.find(message.GetIdentifier());
-
-    if (found != callables_.end())
-    {
-      for (std::set<ICallable*>::const_iterator
-             it = found->second.begin(); it != found->second.end(); ++it)
-      {
-        assert(*it != NULL);
-
-        boost::shared_ptr<IObserver> observer((*it)->GetObserver().lock());
-
-        if (observer)
-        {
-          if (receiver == NULL ||    // Are we broadcasting?
-              observer.get() == receiver)  // Not broadcasting, but this is the receiver
-          {
-            try
-            {
-              (*it)->Apply(message);
-            }
-            catch (Orthanc::OrthancException& e)
-            {
-              LOG(ERROR) << "Exception on callable: " << e.What();
-            }
-            catch (StoneException& e)
-            {
-              LOG(ERROR) << "Exception on callable: " << e.What();
-            }
-            catch (...)
-            {
-              LOG(ERROR) << "Native exception on callable";
-            }
-          }
-        }
-        else
-        {
-          // TODO => Remove "it" from the list of callables => This
-          // allows to suppress the need for "Unregister()"
-        }
-      }
-    }
-  }
-
-
-  void IObservable::BroadcastMessage(const IMessage& message)
-  {
-    EmitMessageInternal(NULL, message);
-  }
-
-  
-  void IObservable::EmitMessage(boost::weak_ptr<IObserver> observer,
-                                const IMessage& message)
-  {
-    //LOG(TRACE) << "IObservable::EmitMessage observer = " << std::hex << observer.get() << std::dec;
-
-    boost::shared_ptr<IObserver> lock(observer.lock());
-    if (lock)
-    {
-      EmitMessageInternal(lock.get(), message);
-    }
-  }
-}
--- a/Framework/Messages/IObservable.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../StoneEnumerations.h"
-#include "ICallable.h"
-#include "IObserver.h"
-
-#include <set>
-#include <map>
-
-namespace OrthancStone 
-{
-  class IObservable : public boost::noncopyable
-  {
-  private:
-    typedef std::map<MessageIdentifier, std::set<ICallable*> >  Callables;
-
-    Callables       callables_;
-
-    void EmitMessageInternal(const IObserver* receiver,
-                             const IMessage& message);
-
-  public:
-    virtual ~IObservable();
-
-    // Takes ownership of the callable
-    void RegisterCallable(ICallable* callable);
-
-    void BroadcastMessage(const IMessage& message);
-
-    void EmitMessage(boost::weak_ptr<IObserver> observer,
-                     const IMessage& message);
-  };
-}
--- a/Framework/Messages/IObserver.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/noncopyable.hpp>
-
-#include <stdint.h>
-
-namespace OrthancStone 
-{
-  class IObserver : public boost::noncopyable
-  {
-  public:
-    IObserver()
-    {
-    }
-
-    virtual ~IObserver()
-    {
-    }
-  };
-}
--- a/Framework/Messages/ObserverBase.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ICallable.h"
-#include "IObserver.h"
-#include "IObservable.h"
-
-#include <OrthancException.h>
-
-#include <boost/enable_shared_from_this.hpp>
-
-namespace OrthancStone 
-{
-  template <typename TObserver>
-  class ObserverBase : 
-    public IObserver,
-    public boost::enable_shared_from_this<TObserver>
-  {
-  public:
-    boost::shared_ptr<TObserver> GetSharedObserver()
-    {
-      try
-      {
-        return this->shared_from_this();
-      }
-      catch (boost::bad_weak_ptr&)
-      {
-        throw Orthanc::OrthancException(
-          Orthanc::ErrorCode_InternalError,
-          "Cannot get a shared pointer to an observer from its constructor, "
-          "or the observer is not created as a shared pointer");
-      }
-    }
-
-    template <typename TMessage>
-    ICallable* CreateCallable(void (TObserver::* MemberMethod) (const TMessage&))
-    {
-      return new Callable<TObserver, TMessage>(GetSharedObserver(), MemberMethod);
-    }
-
-    template <typename TMessage>
-    void Register(IObservable& observable,
-                  void (TObserver::* MemberMethod) (const TMessage&))
-    {
-      observable.RegisterCallable(CreateCallable(MemberMethod));
-    }
-  };
-}
--- a/Framework/OpenGL/IOpenGLContext.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/noncopyable.hpp>
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    class IOpenGLContext : public boost::noncopyable
-    {
-    public:
-      virtual ~IOpenGLContext()
-      {
-      }
-
-      virtual bool IsContextLost() = 0;
-
-      virtual void MakeCurrent() = 0;
-
-      virtual void SwapBuffer() = 0;
-
-      virtual unsigned int GetCanvasWidth() const = 0;
-
-      virtual unsigned int GetCanvasHeight() const = 0;
-
-      // Getting the size of the canvas can be expensive, especially
-      // in WebAssembly => avoid calling this method too often
-      // (e.g. on each refresh)
-      virtual void RefreshCanvasSize() = 0;
-    };
-  }
-}
--- a/Framework/OpenGL/OpenGLIncludes.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../OrthancStone.h"
-
-#if !defined(ORTHANC_ENABLE_OPENGL)
-#  error The macro ORTHANC_ENABLE_OPENGL must be defined
-#endif
-
-#if ORTHANC_ENABLE_OPENGL != 1
-#  error Support for OpenGL is disabled
-#endif
-
-#if defined(__APPLE__)
-#  include <OpenGL/gl.h>
-#  include <OpenGL/glext.h>
-#elif defined(QT_VERSION_MAJOR) && (QT_VERSION >= 5)
-// Qt5 takes care of the inclusions
-#elif defined(_WIN32)
-// On Windows, use the compatibility headers provided by glew
-#  include <GL/glew.h>
-#else
-#  include <GL/gl.h>
-#  include <GL/glext.h>
-#endif
-
-#if ORTHANC_ENABLE_SDL == 1
-# include <SDL_video.h>
-
-# ifdef NDEBUG
-
-// glGetError is very expensive!
-
-#   define ORTHANC_OPENGL_CHECK(name)
-#   define ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT(msg)
-
-# else 
-
-#   define ORTHANC_OPENGL_CHECK(name) \
-if(true)                                                                                                                                \
-{                                                                                                                                       \
-  GLenum error = glGetError();                                                                                                          \
-  if (error != GL_NO_ERROR) {                                                                                                           \
-    SDL_GLContext ctx = SDL_GL_GetCurrentContext();                                                                                     \
-    LOG(ERROR) << "Error when calling " << name << " | current context is: 0x" << std::hex << ctx <<  " | error code is " << error;     \
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,"OpenGL error in " name " | See log.");                            \
-  }                                                                                                                                     \
-} else (void)0
-
-#   define ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT(msg)                          \
-if(true)                                                                   \
-{                                                                          \
-  SDL_GLContext ctx = SDL_GL_GetCurrentContext();                          \
-  LOG(TRACE) << msg << " | Current OpenGL context is " << std::hex << ctx; \
-} else (void)0
-
-# endif
-
-#endif
-
-#if ORTHANC_ENABLE_WASM == 1
-#include <emscripten/html5.h>
-
-#define ORTHANC_OPENGL_CHECK(name) \
-if(true)                                                                                                                                                                                    \
-{                                                                                                                                                                                           \
-  GLenum error = glGetError();                                                                                                                                                              \
-  if (error != GL_NO_ERROR) {                                                                                                                                                               \
-    EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_get_current_context();                                                                                                           \
-    EM_BOOL lost = emscripten_is_webgl_context_lost(ctx);                                                                                                                                   \
-    LOG(ERROR) << "Error when calling " << name << " | current context is: 0x" << std::hex << ctx <<  " | error code is " << error << " | emscripten_is_webgl_context_lost = " << lost;     \
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,"OpenGL error in " name " | See log.");                                                                                \
-  }                                                                                                                                                                                         \
-} else (void)0
-
-#define ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT(msg)                                 \
-if(true)                                                                          \
-{                                                                                 \
-  EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_get_current_context();   \
-  LOG(TRACE) << msg << " | Current OpenGL context is " << std::hex << ctx;        \
-} else (void)0
-
-#define ORTHANC_CHECK_CURRENT_CONTEXT(context)                                                                                                         \
-if(true)                                                                                                                                               \
-{                                                                                                                                                      \
-  EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_get_current_context();                                                                        \
-  void* actualCtx = reinterpret_cast<void*>(ctx);                                                                                                      \
-  void* expectedCtx = context.DebugGetInternalContext();                                                                                               \
-  if(expectedCtx != actualCtx)                                                                                                                         \
-  {                                                                                                                                                    \
-    LOG(ERROR) << "Expected context was " << std::hex << expectedCtx << " while actual context is " << std::hex << actualCtx;                          \
-  }                                                                                                                                                    \
-} else (void)0
-
-#endif
-
--- a/Framework/OpenGL/OpenGLProgram.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLProgram.h"
-
-#include "OpenGLShader.h"
-#include "IOpenGLContext.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    OpenGLProgram::OpenGLProgram(OpenGL::IOpenGLContext& context)
-      : context_(context)
-    {
-      program_ = glCreateProgram();
-      ORTHANC_OPENGL_CHECK("glCreateProgram");
-      if (program_ == 0)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                        "Cannot create an OpenGL program");
-      }
-    }
-
-
-    OpenGLProgram::~OpenGLProgram()
-    {
-      try
-      {
-        if (!context_.IsContextLost())
-        {
-          ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteProgram");
-          assert(program_ != 0);
-          glDeleteProgram(program_);
-          ORTHANC_OPENGL_CHECK("glDeleteProgram");
-        }
-      }
-      catch (const Orthanc::OrthancException& e)
-      {
-        if (e.HasDetails())
-        {
-          LOG(ERROR) << "OrthancException in ~OpenGLProgram: " << e.What() << " Details: " << e.GetDetails();
-        }
-        else
-        {
-          LOG(ERROR) << "OrthancException in ~OpenGLProgram: " << e.What();
-        }
-      }
-      catch (const std::exception& e)
-      {
-        LOG(ERROR) << "std::exception in ~OpenGLProgram: " << e.what();
-      }
-      catch (...)
-      {
-        LOG(ERROR) << "Unknown exception in ~OpenGLProgram";
-      }
-    }
-
-    void OpenGLProgram::Use()
-    {
-      //ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glUseProgram");
-      glUseProgram(program_);
-      ORTHANC_OPENGL_CHECK("glUseProgram");
-    }
-        
-    void OpenGLProgram::CompileShaders(const std::string& vertexCode,
-                                       const std::string& fragmentCode)
-    {
-      assert(program_ != 0);
-
-      OpenGLShader vertexShader(GL_VERTEX_SHADER, vertexCode);
-      OpenGLShader fragmentShader(GL_FRAGMENT_SHADER, fragmentCode);
-
-      glAttachShader(program_, vertexShader.Release());
-      ORTHANC_OPENGL_CHECK("glAttachShader");
-      glAttachShader(program_, fragmentShader.Release());
-      ORTHANC_OPENGL_CHECK("glAttachShader");
-      glLinkProgram(program_);
-      ORTHANC_OPENGL_CHECK("glLinkProgram");
-      glValidateProgram(program_);
-      ORTHANC_OPENGL_CHECK("glValidateProgram");
-    }
-
-    GLint OpenGLProgram::GetUniformLocation(const std::string& name)
-    { 
-      GLint location = glGetUniformLocation(program_, name.c_str());
-      ORTHANC_OPENGL_CHECK("glGetUniformLocation");
-
-      if (location == -1)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem,
-                                        "Inexistent uniform variable in shader: " + name);
-      }
-      else
-      {
-        return location;
-      }
-    }
-
-    
-    GLint OpenGLProgram::GetAttributeLocation(const std::string& name)
-    { 
-      GLint location = glGetAttribLocation(program_, name.c_str());
-      ORTHANC_OPENGL_CHECK("glGetAttribLocation");
-
-      if (location == -1)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem,
-                                        "Inexistent attribute in shader: " + name);
-      }
-      else
-      {
-        return location;
-      }
-    }
-  }
-}
--- a/Framework/OpenGL/OpenGLProgram.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OpenGLIncludes.h"
-
-#include <string>
-#include <boost/noncopyable.hpp>
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    class IOpenGLContext;
-
-    class OpenGLProgram : public boost::noncopyable
-    {
-    public:
-      // WARNING: A global OpenGL context must be active to create this object!
-      // the context is only passed so that it can be checked for loss
-      // when destructing the program resource
-      OpenGLProgram(OpenGL::IOpenGLContext& context);
-
-      ~OpenGLProgram();
-
-      void Use();
-
-      // WARNING: A global OpenGL context must be active to run this method!
-      void CompileShaders(const std::string& vertexCode,
-                          const std::string& fragmentCode);
-
-      GLint GetUniformLocation(const std::string& name);
-
-      GLint GetAttributeLocation(const std::string& name);
-    private:
-      GLuint  program_;
-      OpenGL::IOpenGLContext& context_;
-    };
-  }
-}
--- a/Framework/OpenGL/OpenGLShader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLShader.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    static GLuint CompileShader(GLenum type,
-                                const std::string& source) 
-    {
-      // Create shader object
-      const GLchar* sourceString[1];
-      GLint sourceStringLengths[1];
-
-      sourceString[0] = source.c_str();
-      sourceStringLengths[0] = static_cast<GLint>(source.length());
-      GLuint shader = glCreateShader(type);
-      ORTHANC_OPENGL_CHECK("glCreateShader");
-
-      if (shader == 0)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                        "Cannot create an OpenGL shader");
-      }
-      else
-      {
-        // Assign and compile the source to the shader object
-        glShaderSource(shader, 1, sourceString, sourceStringLengths);
-        ORTHANC_OPENGL_CHECK("glShaderSource");
-        glCompileShader(shader);
-        ORTHANC_OPENGL_CHECK("glCompileShader");
-
-        // Check if there were errors
-        int infoLen = 0;
-        glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
-        ORTHANC_OPENGL_CHECK("glGetShaderiv");
-
-        if (infoLen > 1)  // Might be equal to 1, which amounts to no error
-        {
-          std::string infoLog;
-          infoLog.resize(infoLen + 1);
-          glGetShaderInfoLog(shader, infoLen, NULL, &infoLog[0]);
-          ORTHANC_OPENGL_CHECK("glGetShaderInfoLog");
-          ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteShader");
-          glDeleteShader(shader);
-          ORTHANC_OPENGL_CHECK("glDeleteShader");
-
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                          "Error while creating an OpenGL shader: " + infoLog);
-        }
-        else
-        {
-          return shader;
-        }
-      }
-    }
-
-
-    OpenGLShader::OpenGLShader(GLenum type,
-                               const std::string& source)
-    {
-      shader_ = CompileShader(type, source);
-      isValid_ = true;
-    }
-
-    
-    OpenGLShader::~OpenGLShader()
-    {
-      try
-      {
-        if (isValid_)
-        {
-          ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteShader");
-          glDeleteShader(shader_);
-          ORTHANC_OPENGL_CHECK("glDeleteShader");
-        }
-      }
-      catch (const Orthanc::OrthancException& e)
-      {
-        if (e.HasDetails())
-        {
-          LOG(ERROR) << "OrthancException in ~OpenGLShader: " << e.What() << " Details: " << e.GetDetails();
-        }
-        else
-        {
-          LOG(ERROR) << "OrthancException in ~OpenGLShader: " << e.What();
-        }
-      }
-      catch (const std::exception& e)
-      {
-        LOG(ERROR) << "std::exception in ~OpenGLShader: " << e.what();
-      }
-      catch (...)
-      {
-        LOG(ERROR) << "Unknown exception in ~OpenGLShader";
-      }
-    }
-
-    GLuint OpenGLShader::Release()
-    {
-      if (isValid_)
-      {
-        isValid_ = false;
-        return shader_;
-      }
-      else
-      {
-        LOG(ERROR) << "OpenGLShader::Release(): (!isValid_)";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-    }
-  }
-}
--- a/Framework/OpenGL/OpenGLShader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OpenGLIncludes.h"
-
-#include <string>
-#include <boost/noncopyable.hpp>
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    class OpenGLShader : public boost::noncopyable
-    {
-    private:
-      bool     isValid_;
-      GLuint   shader_;
-
-    public:
-      OpenGLShader(GLenum type,
-                   const std::string& source);
-
-      ~OpenGLShader();
-
-      bool IsValid() const
-      {
-        return isValid_;
-      }
-
-      GLuint Release();
-    };
-  }
-}
--- a/Framework/OpenGL/OpenGLTexture.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLTexture.h"
-#include "IOpenGLContext.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    OpenGLTexture::OpenGLTexture(OpenGL::IOpenGLContext& context)
-      : width_(0)
-      , height_(0)
-      , context_(context)
-    {
-      if (!context_.IsContextLost())
-      {
-        // Generate a texture object
-        glGenTextures(1, &texture_);
-        if (texture_ == 0)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-            "Cannot create an OpenGL program");
-        }
-      }
-    }
-
-    OpenGLTexture::~OpenGLTexture()
-    {
-      try
-      {
-        if (!context_.IsContextLost())
-        {
-          assert(texture_ != 0);
-          ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteTextures");
-          glDeleteTextures(1, &texture_);
-        }
-      }
-      catch (const Orthanc::OrthancException& e)
-      {
-        if (e.HasDetails())
-        {
-          LOG(ERROR) << "OrthancException in ~OpenGLTexture: " << e.What() << " Details: " << e.GetDetails();
-        }
-        else
-        {
-          LOG(ERROR) << "OrthancException in ~OpenGLTexture: " << e.What();
-        }
-      }
-      catch (const std::exception& e)
-      {
-        LOG(ERROR) << "std::exception in ~OpenGLTexture: " << e.what();
-      }
-      catch (...)
-      {
-        LOG(ERROR) << "Unknown exception in ~OpenGLTexture";
-      }
-    }
-
-    void OpenGLTexture::Load(const Orthanc::ImageAccessor& image,
-                             bool isLinearInterpolation)
-    {
-      if (!context_.IsContextLost())
-      {
-        glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // Disable byte-alignment restriction
-
-        if (image.GetPitch() != image.GetBytesPerPixel() * image.GetWidth())
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
-            "Unsupported non-zero padding");
-        }
-
-        // Bind it
-        glActiveTexture(GL_TEXTURE0);
-        glBindTexture(GL_TEXTURE_2D, texture_);
-
-        GLenum sourceFormat, internalFormat;
-
-        switch (image.GetFormat())
-        {
-        case Orthanc::PixelFormat_Grayscale8:
-          sourceFormat = GL_RED;
-          internalFormat = GL_RED;
-          break;
-
-        case Orthanc::PixelFormat_RGB24:
-          sourceFormat = GL_RGB;
-          internalFormat = GL_RGB;
-          break;
-
-        case Orthanc::PixelFormat_RGBA32:
-          sourceFormat = GL_RGBA;
-          internalFormat = GL_RGBA;
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
-            "No support for this format in OpenGL textures: " +
-            std::string(EnumerationToString(image.GetFormat())));
-        }
-
-        width_ = image.GetWidth();
-        height_ = image.GetHeight();
-
-        GLint interpolation = (isLinearInterpolation ? GL_LINEAR : GL_NEAREST);
-
-        // Load the texture from the image buffer
-        glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, image.GetWidth(), image.GetHeight(),
-          0, sourceFormat, GL_UNSIGNED_BYTE, image.GetBuffer());
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, interpolation);
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, interpolation);
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-      }
-    }
-
-
-    void OpenGLTexture::Bind(GLint location)
-    {
-      glActiveTexture(GL_TEXTURE0);
-      glBindTexture(GL_TEXTURE_2D, texture_);
-      glUniform1i(location, 0 /* texture unit */);
-    }
-  }
-}
--- a/Framework/OpenGL/OpenGLTexture.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OpenGLIncludes.h"
-
-#include <Images/ImageAccessor.h>
-
-#include <boost/noncopyable.hpp>
-
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    class IOpenGLContext;
-
-    class OpenGLTexture : public boost::noncopyable
-    {
-    private:
-      GLuint        texture_;
-      unsigned int  width_;
-      unsigned int  height_;
-      OpenGL::IOpenGLContext& context_;
-
-    public:
-      OpenGLTexture(OpenGL::IOpenGLContext& context);
-
-      ~OpenGLTexture();
-
-      unsigned int GetWidth() const
-      {
-        return width_;
-      }
-
-      unsigned int GetHeight() const
-      {
-        return height_;
-      }
-
-      void Load(const Orthanc::ImageAccessor& image,
-                bool isLinearInterpolation);
-
-      void Bind(GLint location);
-    };
-  }
-}
--- a/Framework/OpenGL/SdlOpenGLContext.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SdlOpenGLContext.h"
-#include "../../Framework/StoneException.h"
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#if !defined(ORTHANC_ENABLE_GLEW)
-#  error Macro ORTHANC_ENABLE_GLEW must be defined
-#endif
-
-#if ORTHANC_ENABLE_GLEW == 1
-#  include <GL/glew.h>
-#endif
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  SdlOpenGLContext::SdlOpenGLContext(const char* title,
-                                     unsigned int width,
-                                     unsigned int height,
-                                     bool allowDpiScaling) 
-    : window_(title, width, height, true /* enable OpenGL */, allowDpiScaling)
-    , context_(NULL)
-  {
-    context_ = SDL_GL_CreateContext(window_.GetObject());
-    
-    if (context_ == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                      "Cannot initialize OpenGL");
-    }
-
-#if ORTHANC_ENABLE_GLEW == 1
-    // The initialization function of glew (i.e. "glewInit()") can
-    // only be called once an OpenGL is setup.
-    // https://stackoverflow.com/a/45033669/881731
-    {
-      static boost::mutex  mutex_;
-      static bool          isGlewInitialized_ = false;
-  
-      boost::mutex::scoped_lock lock(mutex_);
-
-      if (!isGlewInitialized_)
-      {
-        LOG(INFO) << "Initializing glew";
-        
-        GLenum err = glewInit();
-        if (GLEW_OK != err)
-        {
-          LOG(ERROR) << glewGetErrorString(err);
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                          "Cannot initialize glew");
-        }
-
-        isGlewInitialized_ = true;
-      }
-    }    
-#endif
-  }
-
-  
-  SdlOpenGLContext::~SdlOpenGLContext()
-  {
-    SDL_GL_DeleteContext(context_);
-  }
-
-  void SdlOpenGLContext::MakeCurrent()
-  {
-    if (SDL_GL_MakeCurrent(window_.GetObject(), context_) != 0)
-    {
-      const char* errText = SDL_GetError();
-      std::stringstream ss;
-      ss << "Cannot set current OpenGL context. SDL error text: " << errText;
-      std::string errStr = ss.str();
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, errStr.c_str());
-    }
-
-    // This makes our buffer swap synchronized with the monitor's vertical refresh
-    SDL_GL_SetSwapInterval(1);
-  }
-
-  
-  void SdlOpenGLContext::SwapBuffer()
-  {
-    // Swap our buffer to display the current contents of buffer on screen
-    SDL_GL_SwapWindow(window_.GetObject());
-  }
-
-  
-  unsigned int SdlOpenGLContext::GetCanvasWidth() const
-  {
-    int w = 0;
-    SDL_GL_GetDrawableSize(window_.GetObject(), &w, NULL);
-    return static_cast<unsigned int>(w);
-  }
-
-  
-  unsigned int SdlOpenGLContext::GetCanvasHeight() const
-  {
-    int h = 0;
-    SDL_GL_GetDrawableSize(window_.GetObject(), NULL, &h);
-    return static_cast<unsigned int>(h);
-  }
-}
-
-#endif
--- a/Framework/OpenGL/SdlOpenGLContext.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include "IOpenGLContext.h"
-#include "../Viewport/SdlWindow.h"
-
-#include <SDL_render.h>
-
-#include <Enumerations.h>
-
-namespace OrthancStone
-{
-  class SdlOpenGLContext : public OpenGL::IOpenGLContext
-  {
-  private:
-    SdlWindow      window_;
-    SDL_GLContext  context_;
-
-  public:
-    SdlOpenGLContext(const char* title,
-                     unsigned int width,
-                     unsigned int height,
-                     bool allowDpiScaling = true);
-
-    ~SdlOpenGLContext();
-
-    SdlWindow& GetWindow()
-    {
-      return window_;
-    }
-
-    virtual bool IsContextLost() ORTHANC_OVERRIDE
-    {
-      // On desktop applications, an OpenGL context should never be lost
-      return false;
-    }
-
-    virtual void MakeCurrent() ORTHANC_OVERRIDE;
-
-    virtual void SwapBuffer() ORTHANC_OVERRIDE;
-
-    virtual unsigned int GetCanvasWidth() const ORTHANC_OVERRIDE;
-
-    virtual unsigned int GetCanvasHeight() const ORTHANC_OVERRIDE;
-
-    void ToggleMaximize()
-    {
-      window_.ToggleMaximize();
-    }
-
-    virtual void RefreshCanvasSize() ORTHANC_OVERRIDE
-    {
-      // Nothing to do for SDL
-    }
-  };
-}
-
-#endif
--- a/Framework/OpenGL/WebAssemblyOpenGLContext.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,271 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebAssemblyOpenGLContext.h"
-
-#include "../StoneException.h"
-
-#include <OrthancException.h>
-
-#include <emscripten/html5.h>
-#include <emscripten/em_asm.h>
-
-#include <boost/math/special_functions/round.hpp>
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    class WebAssemblyOpenGLContext::PImpl
-    {
-    private:
-      std::string                     canvasSelector_;
-      EMSCRIPTEN_WEBGL_CONTEXT_HANDLE context_;
-      unsigned int                    canvasWidth_;
-      unsigned int                    canvasHeight_;
-      bool                            isContextLost_;
-
-    public:
-      PImpl(const std::string& canvasSelector)
-        : canvasSelector_(canvasSelector)
-        , isContextLost_(false)
-      {
-        // Context configuration
-        EmscriptenWebGLContextAttributes attr; 
-        emscripten_webgl_init_context_attributes(&attr);
-
-        context_ = emscripten_webgl_create_context(canvasSelector.c_str(), &attr);
-        if (context_ == 0)
-        {
-          std::string message("Cannot create an OpenGL context for the element with the following CSS selector: \"");
-          message += canvasSelector;
-          message += "\"  Please make sure the -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 flag has been passed to Emscripten when building.";
-          LOG(ERROR) << message;
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, message);
-        }
-
-        UpdateSize();
-      }
-
-      void* DebugGetInternalContext() const
-      {
-        return reinterpret_cast<void*>(context_);
-      }
-
-      bool IsContextLost()
-      {
-        //LOG(TRACE) << "IsContextLost() for context " << std::hex << context_ << std::dec;
-        bool apiFlag = (emscripten_is_webgl_context_lost(context_) != 0);
-        isContextLost_ = apiFlag;
-        return isContextLost_;
-      }
-
-      void SetLostContext()
-      {
-        isContextLost_ = true;
-      }
-
-      ~PImpl()
-      {
-        try
-        {
-          EMSCRIPTEN_RESULT result = emscripten_webgl_destroy_context(context_);
-          if (result != EMSCRIPTEN_RESULT_SUCCESS)
-          {
-            LOG(ERROR) << "emscripten_webgl_destroy_context returned code " << result;
-          }
-        }
-        catch (const Orthanc::OrthancException& e)
-        {
-          if (e.HasDetails())
-          {
-            LOG(ERROR) << "OrthancException in WebAssemblyOpenGLContext::~PImpl: " << e.What() << " Details: " << e.GetDetails();
-          }
-          else
-          {
-            LOG(ERROR) << "OrthancException in WebAssemblyOpenGLContext::~PImpl: " << e.What();
-          }
-        }
-        catch (const std::exception& e)
-        {
-          LOG(ERROR) << "std::exception in WebAssemblyOpenGLContext::~PImpl: " << e.what();
-        }
-        catch (...)
-        {
-          LOG(ERROR) << "Unknown exception in WebAssemblyOpenGLContext::~PImpl";
-        }
-      }
-
-      const std::string& GetCanvasSelector() const
-      {
-        return canvasSelector_;
-      }
-
-      void MakeCurrent()
-      {
-        if (IsContextLost())
-        {
-          LOG(ERROR) << "MakeCurrent() called on lost context " << context_;
-          throw StoneException(ErrorCode_WebGLContextLost);
-        }
-
-        if (emscripten_is_webgl_context_lost(context_))
-        {
-          LOG(ERROR) << "OpenGL context has been lost for canvas selector: " << canvasSelector_;
-          SetLostContext();
-          throw StoneException(ErrorCode_WebGLContextLost);
-        }
-
-        if (emscripten_webgl_make_context_current(context_) != EMSCRIPTEN_RESULT_SUCCESS)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                          "Cannot set the OpenGL context");
-        }
-      }
-
-      void SwapBuffer() 
-      {
-        /**
-         * "Rendered WebGL content is implicitly presented (displayed to
-         * the user) on the canvas when the event handler that renders with
-         * WebGL returns back to the browser event loop."
-         * https://emscripten.org/docs/api_reference/html5.h.html#webgl-context
-         *
-         * Could call "emscripten_webgl_commit_frame()" if
-         * "explicitSwapControl" option were set to "true".
-         **/
-      }
-
-      unsigned int GetCanvasWidth() const
-      {
-        return canvasWidth_;
-      }
-
-      unsigned int GetCanvasHeight() const
-      {
-        return canvasHeight_;
-      }
-
-      void UpdateSize()
-      {
-        double w, h;
-        emscripten_get_element_css_size(canvasSelector_.c_str(), &w, &h);
-
-        /**
-         * Emscripten has the function emscripten_get_element_css_size()
-         * to query the width and height of a named HTML element. I'm
-         * calling this first to get the initial size of the canvas DOM
-         * element, and then call emscripten_set_canvas_size() to
-         * initialize the framebuffer size of the canvas to the same
-         * size as its DOM element.
-         * https://floooh.github.io/2017/02/22/emsc-html.html
-         **/
-
-        if (w <= 0 ||
-            h <= 0)
-        {
-          canvasWidth_ = 0;
-          canvasHeight_ = 0;
-        }
-        else
-        {
-          canvasWidth_ = static_cast<unsigned int>(boost::math::iround(w));
-          canvasHeight_ = static_cast<unsigned int>(boost::math::iround(h));
-        }
-        
-        emscripten_set_canvas_element_size(canvasSelector_.c_str(), canvasWidth_, canvasHeight_);
-      }
-    };
-
-
-    WebAssemblyOpenGLContext::WebAssemblyOpenGLContext(const std::string& canvasSelector) :
-      pimpl_(new PImpl(canvasSelector))
-    {
-    }
-
-    bool WebAssemblyOpenGLContext::IsContextLost()
-    {
-      return pimpl_->IsContextLost();
-    }
-
-    void WebAssemblyOpenGLContext::SetLostContext()
-    {
-      pimpl_->SetLostContext();
-    }
-
-    void* WebAssemblyOpenGLContext::DebugGetInternalContext() const
-    {
-      return pimpl_->DebugGetInternalContext();
-    }
-    
-    void WebAssemblyOpenGLContext::MakeCurrent()
-    {
-      assert(pimpl_.get() != NULL);
-      pimpl_->MakeCurrent();
-    }
-
-    void WebAssemblyOpenGLContext::SwapBuffer() 
-    {
-      assert(pimpl_.get() != NULL);
-      pimpl_->SwapBuffer();
-    }
-
-    unsigned int WebAssemblyOpenGLContext::GetCanvasWidth() const
-    {
-      assert(pimpl_.get() != NULL);
-      return pimpl_->GetCanvasWidth();
-    }
-
-    unsigned int WebAssemblyOpenGLContext::GetCanvasHeight() const
-    {
-      assert(pimpl_.get() != NULL);
-      return pimpl_->GetCanvasHeight();
-    }
-
-    void WebAssemblyOpenGLContext::RefreshCanvasSize()
-    {
-      assert(pimpl_.get() != NULL);
-
-      try
-      {
-        pimpl_->UpdateSize();
-      }
-      catch (const StoneException& e)
-      {
-        // Ignore problems about the loss of the WebGL context (edge case)
-        if (e.GetErrorCode() == ErrorCode_WebGLContextLost)
-        {
-          return;
-        }
-        else
-        {
-          throw;
-        }
-      }
-    }
-
-    const std::string& WebAssemblyOpenGLContext::GetCanvasSelector() const
-    {
-      assert(pimpl_.get() != NULL);
-      return pimpl_->GetCanvasSelector();
-    }
-  }
-}
--- a/Framework/OpenGL/WebAssemblyOpenGLContext.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if !defined(ORTHANC_ENABLE_WASM)
-#  error Macro ORTHANC_ENABLE_WASM must be defined
-#endif
-
-#if ORTHANC_ENABLE_WASM != 1
-#  error This file can only be used if targeting WebAssembly
-#endif
-
-#if !defined(ORTHANC_ENABLE_OPENGL)
-#  error The macro ORTHANC_ENABLE_OPENGL must be defined
-#endif
-
-#if ORTHANC_ENABLE_OPENGL != 1
-#  error Support for OpenGL is disabled
-#endif
-
-#include "IOpenGLContext.h"
-
-#include <Enumerations.h>
-
-#include <boost/shared_ptr.hpp>
-
-namespace OrthancStone
-{
-  namespace OpenGL
-  {
-    class WebAssemblyOpenGLContext : public OpenGL::IOpenGLContext
-    {
-    private:
-      class PImpl;
-      boost::shared_ptr<PImpl>  pimpl_;
-
-    public:
-      WebAssemblyOpenGLContext(const std::string& canvasSelector);
-
-      virtual bool IsContextLost() ORTHANC_OVERRIDE;
-
-      virtual void MakeCurrent() ORTHANC_OVERRIDE;
-
-      virtual void SwapBuffer() ORTHANC_OVERRIDE;
-
-      virtual unsigned int GetCanvasWidth() const ORTHANC_OVERRIDE;
-
-      virtual unsigned int GetCanvasHeight() const ORTHANC_OVERRIDE;
-
-      /**
-      Returns true if the underlying context has been successfully recreated
-      */
-      //bool TryRecreate();
-
-      virtual void RefreshCanvasSize() ORTHANC_OVERRIDE;
-
-      const std::string& GetCanvasSelector() const;
-
-
-      /**
-       * This is for manual context loss (debug purposes)
-       **/
-      void* DebugGetInternalContext() const;
-      void SetLostContext();
-    };
-  }
-}
--- a/Framework/Oracle/GenericOracleRunner.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,524 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GenericOracleRunner.h"
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error The macro ORTHANC_ENABLE_DCMTK must be defined
-#endif
-
-#include "GetOrthancImageCommand.h"
-#include "GetOrthancWebViewerJpegCommand.h"
-#include "HttpCommand.h"
-#include "OracleCommandExceptionMessage.h"
-#include "OrthancRestApiCommand.h"
-#include "ParseDicomFromFileCommand.h"
-#include "ParseDicomFromWadoCommand.h"
-#include "ReadFileCommand.h"
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include "ParseDicomSuccessMessage.h"
-#  include <dcmtk/dcmdata/dcdeftag.h>
-#  include <dcmtk/dcmdata/dcfilefo.h>
-static unsigned int BUCKET_DICOMDIR = 0;
-static unsigned int BUCKET_SOP = 1;
-#endif
-
-#include <Compression/GzipCompressor.h>
-#include <HttpClient.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-#include <SystemToolbox.h>
-
-#include <boost/filesystem.hpp>
-
-
-
-namespace OrthancStone
-{
-  static void CopyHttpHeaders(Orthanc::HttpClient& client,
-                              const Orthanc::HttpClient::HttpHeaders& headers)
-  {
-    for (Orthanc::HttpClient::HttpHeaders::const_iterator
-           it = headers.begin(); it != headers.end(); it++ )
-    {
-      client.AddHeader(it->first, it->second);
-    }
-  }
-
-
-  static void DecodeAnswer(std::string& answer,
-                           const Orthanc::HttpClient::HttpHeaders& headers)
-  {
-    Orthanc::HttpCompression contentEncoding = Orthanc::HttpCompression_None;
-
-    for (Orthanc::HttpClient::HttpHeaders::const_iterator it = headers.begin(); 
-         it != headers.end(); ++it)
-    {
-      std::string s;
-      Orthanc::Toolbox::ToLowerCase(s, it->first);
-
-      if (s == "content-encoding")
-      {
-        if (it->second == "gzip")
-        {
-          contentEncoding = Orthanc::HttpCompression_Gzip;
-        }
-        else 
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
-                                          "Unsupported HTTP Content-Encoding: " + it->second);
-        }
-
-        break;
-      }
-    }
-
-    if (contentEncoding == Orthanc::HttpCompression_Gzip)
-    {
-      std::string compressed;
-      answer.swap(compressed);
-          
-      Orthanc::GzipCompressor compressor;
-      compressor.Uncompress(answer, compressed.c_str(), compressed.size());
-
-      LOG(INFO) << "Uncompressing gzip Encoding: from " << compressed.size()
-                << " to " << answer.size() << " bytes";
-    }
-  }
-
-
-  static void RunHttpCommand(std::string& answer,
-                             Orthanc::HttpClient::HttpHeaders& answerHeaders,
-                             const HttpCommand& command)
-  {
-    Orthanc::HttpClient client;
-    client.SetUrl(command.GetUrl());
-    client.SetMethod(command.GetMethod());
-    client.SetTimeout(command.GetTimeout());
-
-    CopyHttpHeaders(client, command.GetHttpHeaders());
-
-    if (command.HasCredentials())
-    {
-      client.SetCredentials(command.GetUsername().c_str(), command.GetPassword().c_str());
-    }
-
-    if (command.GetMethod() == Orthanc::HttpMethod_Post ||
-        command.GetMethod() == Orthanc::HttpMethod_Put)
-    {
-      client.SetBody(command.GetBody());
-    }
-
-    client.ApplyAndThrowException(answer, answerHeaders);
-    DecodeAnswer(answer, answerHeaders);
-  }
-
-
-  static void RunInternal(boost::weak_ptr<IObserver> receiver,
-                          IMessageEmitter& emitter,
-                          const HttpCommand& command)
-  {
-    std::string answer;
-    Orthanc::HttpClient::HttpHeaders answerHeaders;
-    RunHttpCommand(answer, answerHeaders, command);
-    
-    HttpCommand::SuccessMessage message(command, answerHeaders, answer);
-    emitter.EmitMessage(receiver, message);
-  }
-
-  
-  static void RunOrthancRestApiCommand(std::string& answer,
-                                       Orthanc::HttpClient::HttpHeaders& answerHeaders,
-                                       const Orthanc::WebServiceParameters& orthanc,
-                                       const OrthancRestApiCommand& command)
-  {
-    Orthanc::HttpClient client(orthanc, command.GetUri());
-    client.SetRedirectionFollowed(false);
-    client.SetMethod(command.GetMethod());
-    client.SetTimeout(command.GetTimeout());
-
-    CopyHttpHeaders(client, command.GetHttpHeaders());
-
-    if (command.GetMethod() == Orthanc::HttpMethod_Post ||
-        command.GetMethod() == Orthanc::HttpMethod_Put)
-    {
-      client.SetBody(command.GetBody());
-    }
-
-    client.ApplyAndThrowException(answer, answerHeaders);
-    DecodeAnswer(answer, answerHeaders);
-  }
-
-  
-  static void RunInternal(boost::weak_ptr<IObserver> receiver,
-                          IMessageEmitter& emitter,
-                          const Orthanc::WebServiceParameters& orthanc,
-                          const OrthancRestApiCommand& command)
-  {
-    std::string answer;
-    Orthanc::HttpClient::HttpHeaders answerHeaders;
-    RunOrthancRestApiCommand(answer, answerHeaders, orthanc, command);
-
-    OrthancRestApiCommand::SuccessMessage message(command, answerHeaders, answer);
-    emitter.EmitMessage(receiver, message);
-  }
-
-
-  static void RunInternal(boost::weak_ptr<IObserver> receiver,
-                          IMessageEmitter& emitter,
-                          const Orthanc::WebServiceParameters& orthanc,
-                          const GetOrthancImageCommand& command)
-  {
-    Orthanc::HttpClient client(orthanc, command.GetUri());
-    client.SetRedirectionFollowed(false);
-    client.SetTimeout(command.GetTimeout());
-
-    CopyHttpHeaders(client, command.GetHttpHeaders());
-    
-    std::string answer;
-    Orthanc::HttpClient::HttpHeaders answerHeaders;
-    client.ApplyAndThrowException(answer, answerHeaders);
-
-    DecodeAnswer(answer, answerHeaders);
-
-    command.ProcessHttpAnswer(receiver, emitter, answer, answerHeaders);
-  }
-
-
-  static void RunInternal(boost::weak_ptr<IObserver> receiver,
-                          IMessageEmitter& emitter,
-                          const Orthanc::WebServiceParameters& orthanc,
-                          const GetOrthancWebViewerJpegCommand& command)
-  {
-    Orthanc::HttpClient client(orthanc, command.GetUri());
-    client.SetRedirectionFollowed(false);
-    client.SetTimeout(command.GetTimeout());
-
-    CopyHttpHeaders(client, command.GetHttpHeaders());
-
-    std::string answer;
-    Orthanc::HttpClient::HttpHeaders answerHeaders;
-    client.ApplyAndThrowException(answer, answerHeaders);
-
-    DecodeAnswer(answer, answerHeaders);
-
-    command.ProcessHttpAnswer(receiver, emitter, answer);
-  }
-
-
-  static std::string GetPath(const std::string& root,
-                             const std::string& file)
-  {
-    boost::filesystem::path a(root);
-    boost::filesystem::path b(file);
-
-    boost::filesystem::path c;
-    if (b.is_absolute())
-    {
-      c = b;
-    }
-    else
-    {
-      c = a / b;
-    }
-
-    return c.string();
-  }
-
-
-  static void RunInternal(boost::weak_ptr<IObserver> receiver,
-                          IMessageEmitter& emitter,
-                          const std::string& root,
-                          const ReadFileCommand& command)
-  {
-    std::string path = GetPath(root, command.GetPath());
-    LOG(TRACE) << "Oracle reading file: " << path;
-
-    std::string content;
-    Orthanc::SystemToolbox::ReadFile(content, path, true /* log */);
-
-    ReadFileCommand::SuccessMessage message(command, content);
-    emitter.EmitMessage(receiver, message);
-  }
-
-
-#if ORTHANC_ENABLE_DCMTK == 1
-  static Orthanc::ParsedDicomFile* ParseDicom(uint64_t& fileSize,  /* OUT */
-                                              const std::string& path,
-                                              bool isPixelData)
-  {
-    if (!Orthanc::SystemToolbox::IsRegularFile(path))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentFile);
-    }
-    
-    LOG(TRACE) << "Parsing DICOM file, " << (isPixelData ? "with" : "without")
-               << " pixel data: " << path;
-    
-    boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();
-    
-    fileSize = Orthanc::SystemToolbox::GetFileSize(path);
-    
-    // Check for 32bit systems
-    if (fileSize != static_cast<uint64_t>(static_cast<size_t>(fileSize)))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotEnoughMemory);
-    }
-    
-    DcmFileFormat dicom;
-    bool ok;
-    
-    if (isPixelData)
-    {
-      ok = dicom.loadFile(path.c_str()).good();
-    }
-    else
-    {
-#if DCMTK_VERSION_NUMBER >= 362
-      /**
-       * NB : We could stop at (0x3007, 0x0000) instead of
-       * DCM_PixelData as the Stone framework does not use further
-       * tags (cf. the Orthanc::DICOM_TAG_* constants), but we still
-       * use "PixelData" as this does not change the runtime much, and
-       * as it is more explicit.
-       **/
-      static const DcmTagKey STOP = DCM_PixelData;
-      //static const DcmTagKey STOP(0x3007, 0x0000);
-
-      ok = dicom.loadFileUntilTag(path.c_str(), EXS_Unknown, EGL_noChange,
-                                  DCM_MaxReadLength, ERM_autoDetect, STOP).good();
-#else
-      // The primitive "loadFileUntilTag" was introduced in DCMTK 3.6.2
-      ok = dicom.loadFile(path.c_str()).good();
-#endif
-    }
-
-    if (ok)
-    {
-      std::unique_ptr<Orthanc::ParsedDicomFile> result(new Orthanc::ParsedDicomFile(dicom));
-
-      boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();
-      LOG(TRACE) << path << ": parsed in " << (end-start).total_milliseconds() << " ms";
-
-      return result.release();
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
-                                      "Cannot parse file: " + path);
-    }
-  }
-
-  
-  static void RunInternal(boost::weak_ptr<IObserver> receiver,
-                          IMessageEmitter& emitter,
-                          boost::shared_ptr<ParsedDicomCache> cache,
-                          const std::string& root,
-                          const ParseDicomFromFileCommand& command)
-  {
-    const std::string path = GetPath(root, command.GetPath());
-
-    if (cache)
-    {
-      ParsedDicomCache::Reader reader(*cache, BUCKET_DICOMDIR, path);
-      if (reader.IsValid() &&
-          (!command.IsPixelDataIncluded() ||
-           reader.HasPixelData()))
-      {
-        // Reuse the DICOM file from the cache
-        ParseDicomSuccessMessage message(command, command.GetSource(), reader.GetDicom(),
-                                         reader.GetFileSize(), reader.HasPixelData());
-        emitter.EmitMessage(receiver, message);
-        return;
-      }
-    }
-
-    uint64_t fileSize;
-    std::unique_ptr<Orthanc::ParsedDicomFile> parsed(ParseDicom(fileSize, path, command.IsPixelDataIncluded()));
-
-    if (fileSize != static_cast<size_t>(fileSize))
-    {
-      // Cannot load such a large file on 32-bit architecture
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotEnoughMemory);
-    }
-    
-    {
-      ParseDicomSuccessMessage message
-        (command, command.GetSource(), *parsed,
-         static_cast<size_t>(fileSize), command.IsPixelDataIncluded());
-      emitter.EmitMessage(receiver, message);
-    }
-
-    if (cache)
-    {
-      // Store it into the cache for future use
-      
-      // Invalidate to overwrite DICOM instance that would already
-      // be stored without pixel data
-      cache->Invalidate(BUCKET_DICOMDIR, path);
-      
-      cache->Acquire(BUCKET_DICOMDIR, path, parsed.release(),
-                     static_cast<size_t>(fileSize), command.IsPixelDataIncluded());
-    }
-  }
-
-  
-  static void RunInternal(boost::weak_ptr<IObserver> receiver,
-                          IMessageEmitter& emitter,
-                          boost::shared_ptr<ParsedDicomCache> cache,
-                          const Orthanc::WebServiceParameters& orthanc,
-                          const ParseDicomFromWadoCommand& command)
-  {
-    if (cache)
-    {
-      ParsedDicomCache::Reader reader(*cache, BUCKET_SOP, command.GetSopInstanceUid());
-      if (reader.IsValid() &&
-          reader.HasPixelData())
-      {
-        // Reuse the DICOM file from the cache
-        ParseDicomSuccessMessage message(command, command.GetSource(), reader.GetDicom(),
-                                         reader.GetFileSize(), reader.HasPixelData());
-        emitter.EmitMessage(receiver, message);
-        return;
-      }
-    }
-
-    std::string answer;
-    Orthanc::HttpClient::HttpHeaders answerHeaders;
-
-    switch (command.GetRestCommand().GetType())
-    {
-      case IOracleCommand::Type_Http:
-        RunHttpCommand(answer, answerHeaders, dynamic_cast<const HttpCommand&>(command.GetRestCommand()));
-        break;
-        
-      case IOracleCommand::Type_OrthancRestApi:
-        RunOrthancRestApiCommand(answer, answerHeaders, orthanc,
-                                 dynamic_cast<const OrthancRestApiCommand&>(command.GetRestCommand()));
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-
-    size_t fileSize;
-    std::unique_ptr<Orthanc::ParsedDicomFile> parsed(ParseDicomSuccessMessage::ParseWadoAnswer(fileSize, answer, answerHeaders));
-
-    {
-      ParseDicomSuccessMessage message(command, command.GetSource(), *parsed, fileSize,
-                                       true /* pixel data always is included in WADO-RS */);
-      emitter.EmitMessage(receiver, message);
-    }
-
-    if (cache)
-    {
-      // Store it into the cache for future use
-      cache->Acquire(BUCKET_SOP, command.GetSopInstanceUid(), parsed.release(), fileSize, true);
-    }
-  }
-#endif
-
-
-  void GenericOracleRunner::Run(boost::weak_ptr<IObserver> receiver,
-                                IMessageEmitter& emitter,
-                                const IOracleCommand& command)
-  {
-    Orthanc::ErrorCode error = Orthanc::ErrorCode_Success;
-    
-    try
-    {
-      switch (command.GetType())
-      {
-        case IOracleCommand::Type_Sleep:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType,
-                                          "Sleep command cannot be executed by the runner");
-
-        case IOracleCommand::Type_Http:
-          RunInternal(receiver, emitter, dynamic_cast<const HttpCommand&>(command));
-          break;
-
-        case IOracleCommand::Type_OrthancRestApi:
-          RunInternal(receiver, emitter, orthanc_,
-                      dynamic_cast<const OrthancRestApiCommand&>(command));
-          break;
-
-        case IOracleCommand::Type_GetOrthancImage:
-          RunInternal(receiver, emitter, orthanc_,
-                      dynamic_cast<const GetOrthancImageCommand&>(command));
-          break;
-
-        case IOracleCommand::Type_GetOrthancWebViewerJpeg:
-          RunInternal(receiver, emitter, orthanc_,
-                      dynamic_cast<const GetOrthancWebViewerJpegCommand&>(command));
-          break;
-
-        case IOracleCommand::Type_ReadFile:
-          RunInternal(receiver, emitter, rootDirectory_,
-                      dynamic_cast<const ReadFileCommand&>(command));
-          break;
-
-        case IOracleCommand::Type_ParseDicomFromFile:
-        case IOracleCommand::Type_ParseDicomFromWado:
-#if ORTHANC_ENABLE_DCMTK == 1
-          switch (command.GetType())
-          {
-            case IOracleCommand::Type_ParseDicomFromFile:
-              RunInternal(receiver, emitter, dicomCache_, rootDirectory_,
-                          dynamic_cast<const ParseDicomFromFileCommand&>(command));
-              break;
-
-            case IOracleCommand::Type_ParseDicomFromWado:
-              RunInternal(receiver, emitter, dicomCache_, orthanc_,
-                          dynamic_cast<const ParseDicomFromWadoCommand&>(command));
-              break;
-
-            default:
-              throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-          }            
-          break;
-#else
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
-                                          "DCMTK must be enabled to parse DICOM files");
-#endif
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-    }
-    catch (Orthanc::OrthancException& e)
-    {
-      LOG(ERROR) << "Exception within the oracle: " << e.What();
-      error = e.GetErrorCode();
-    }
-    catch (...)
-    {
-      LOG(ERROR) << "Threaded exception within the oracle";
-      error = Orthanc::ErrorCode_InternalError;
-    }
-
-    if (error != Orthanc::ErrorCode_Success)
-    {
-      OracleCommandExceptionMessage message(command, error);
-      emitter.EmitMessage(receiver, message);
-    }
-  }
-}
--- a/Framework/Oracle/GenericOracleRunner.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <OrthancFramework.h>  // To have the macros properly defined
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error The macro ORTHANC_ENABLE_DCMTK must be defined
-#endif
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include "../Toolbox/ParsedDicomCache.h"
-#endif
-
-#include "IOracleCommand.h"
-#include "../Messages/IMessageEmitter.h"
-
-#include <Enumerations.h>  // For ORTHANC_OVERRIDE
-#include <WebServiceParameters.h>
-
-namespace OrthancStone
-{
-  class GenericOracleRunner : public boost::noncopyable
-  {
-  private:
-    Orthanc::WebServiceParameters  orthanc_;
-    std::string                    rootDirectory_;
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    boost::shared_ptr<ParsedDicomCache>  dicomCache_;
-#endif
-
-  public:
-    GenericOracleRunner() :
-      rootDirectory_(".")
-    {
-    }
-
-    void SetOrthanc(const Orthanc::WebServiceParameters& orthanc)
-    {
-      orthanc_ = orthanc;
-    }
-
-    const Orthanc::WebServiceParameters& GetOrthanc() const
-    {
-      return orthanc_;
-    }
-
-    void SetRootDirectory(const std::string& rootDirectory)
-    {
-      rootDirectory_ = rootDirectory;
-    }
-
-    const std::string GetRootDirectory() const
-    {
-      return rootDirectory_;
-    }
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    void SetDicomCache(boost::shared_ptr<ParsedDicomCache> cache)
-    {
-      dicomCache_ = cache;
-    }
-#endif
-
-    void Run(boost::weak_ptr<IObserver> receiver,
-             IMessageEmitter& emitter,
-             const IOracleCommand& command);
-  };
-}
--- a/Framework/Oracle/GetOrthancImageCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GetOrthancImageCommand.h"
-
-#include <Images/JpegReader.h>
-#include <Images/PamReader.h>
-#include <Images/PngReader.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-namespace OrthancStone
-{
-  GetOrthancImageCommand::GetOrthancImageCommand() :
-    uri_("/"),
-    timeout_(600),
-    hasExpectedFormat_(false)
-  {
-  }
-
-
-  void GetOrthancImageCommand::SetExpectedPixelFormat(Orthanc::PixelFormat format)
-  {
-    hasExpectedFormat_ = true;
-    expectedFormat_ = format;
-  }
-
-
-  static std::string GetFormatSuffix(Orthanc::PixelFormat pixelFormat)
-  {
-    switch (pixelFormat)
-    {
-      case Orthanc::PixelFormat_RGB24:
-        return "preview";
-      
-      case Orthanc::PixelFormat_Grayscale16:
-        return "image-uint16";
-      
-      case Orthanc::PixelFormat_SignedGrayscale16:
-        return "image-int16";
-      
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  void GetOrthancImageCommand::SetInstanceUri(const std::string& instance,
-                                              Orthanc::PixelFormat pixelFormat)
-  {
-    uri_ = "/instances/" + instance + "/" + GetFormatSuffix(pixelFormat);
-  }
-
-
-  void GetOrthancImageCommand::SetFrameUri(const std::string& instance,
-                                           unsigned int frame,
-                                           Orthanc::PixelFormat pixelFormat)
-  {
-    uri_ = ("/instances/" + instance + "/frames/" +
-            boost::lexical_cast<std::string>(frame) + "/" + GetFormatSuffix(pixelFormat));
-  }
-
-
-  void GetOrthancImageCommand::ProcessHttpAnswer(boost::weak_ptr<IObserver> receiver,
-                                                 IMessageEmitter& emitter,
-                                                 const std::string& answer,
-                                                 const HttpHeaders& answerHeaders) const
-  {
-    for (HttpHeaders::const_iterator it = answerHeaders.begin(); it != answerHeaders.end(); ++it)
-    {
-      std::string key = Orthanc::Toolbox::StripSpaces(it->first);
-      Orthanc::Toolbox::ToLowerCase(key);
-        
-      if (key == "content-disposition" &&
-          it->second == "filename=\"unsupported.png\"")
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat,
-                                        "Orthanc cannot decode this image");
-      }
-    }
-    
-    Orthanc::MimeType contentType = Orthanc::MimeType_Binary;
-
-    for (HttpHeaders::const_iterator it = answerHeaders.begin(); 
-         it != answerHeaders.end(); ++it)
-    {
-      std::string s;
-      Orthanc::Toolbox::ToLowerCase(s, it->first);
-
-      if (s == "content-type")
-      {
-        contentType = Orthanc::StringToMimeType(it->second);
-        break;
-      }
-    }
-
-    std::unique_ptr<Orthanc::ImageAccessor> image;
-
-    switch (contentType)
-    {
-      case Orthanc::MimeType_Png:
-      {
-        image.reset(new Orthanc::PngReader);
-        dynamic_cast<Orthanc::PngReader&>(*image).ReadFromMemory(answer);
-        break;
-      }
-
-      case Orthanc::MimeType_Pam:
-      {
-#ifdef __EMSCRIPTEN__
-        // "true" means we ask the PamReader to make an extra copy so that
-        // the resulting Orthanc::ImageAccessor is aligned (as malloc is).
-        // Indeed, even though alignment is not required in Web Assembly,
-        // Emscripten seems to check it and bail out if addresses are "odd"
-        image.reset(new Orthanc::PamReader(true));
-#else
-        // potentially unaligned, with is faster and consumes less heap memory
-        image.reset(new Orthanc::PamReader);
-#endif
-        dynamic_cast<Orthanc::PamReader&>(*image).ReadFromMemory(answer);
-        break;
-      }
-
-      case Orthanc::MimeType_Jpeg:
-      {
-        image.reset(new Orthanc::JpegReader);
-        dynamic_cast<Orthanc::JpegReader&>(*image).ReadFromMemory(answer);
-        break;
-      }
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
-                                        "Unsupported HTTP Content-Type for an image: " + 
-                                        std::string(Orthanc::EnumerationToString(contentType)));
-    }
-
-    if (hasExpectedFormat_)
-    {
-      if (expectedFormat_ == Orthanc::PixelFormat_SignedGrayscale16 &&
-          image->GetFormat() == Orthanc::PixelFormat_Grayscale16)
-      {
-        image->SetFormat(Orthanc::PixelFormat_SignedGrayscale16);
-      }
-
-      if (expectedFormat_ != image->GetFormat())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-      }
-    }
-
-    //{
-    //  // DEBUG DISPLAY IMAGE PROPERTIES BGO 2020-04-11
-    //  const Orthanc::ImageAccessor& source = *image;
-    //  const void* sourceBuffer = source.GetConstBuffer();
-    //  intptr_t sourceBufferInt = reinterpret_cast<intptr_t>(sourceBuffer);
-    //  int sourceWidth = source.GetWidth();
-    //  int sourceHeight = source.GetHeight();
-    //  int sourcePitch = source.GetPitch();
-
-    //  // TODO: turn error into trace below
-    //  LOG(ERROR) << "GetOrthancImageCommand::ProcessHttpAnswer | source:"
-    //    << " W = " << sourceWidth << " H = " << sourceHeight
-    //    << " P = " << sourcePitch << " B = " << sourceBufferInt
-    //    << " B % 4 == " << sourceBufferInt % 4;
-    //}
-
-
-    SuccessMessage message(*this, *image, contentType);
-    emitter.EmitMessage(receiver, message);
-  }
-}
--- a/Framework/Oracle/GetOrthancImageCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IMessageEmitter.h"
-#include "OracleCommandBase.h"
-
-#include <Images/ImageAccessor.h>
-
-#include <map>
-
-namespace OrthancStone
-{
-  class GetOrthancImageCommand : public OracleCommandBase
-  {
-  public:
-    typedef std::map<std::string, std::string>  HttpHeaders;
-
-    class SuccessMessage : public OriginMessage<GetOrthancImageCommand>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const Orthanc::ImageAccessor&  image_;
-      Orthanc::MimeType              mime_;
-
-    public:
-      SuccessMessage(const GetOrthancImageCommand& command,
-                     const Orthanc::ImageAccessor& image,
-                     Orthanc::MimeType mime) :
-        OriginMessage(command),
-        image_(image),
-        mime_(mime)
-      {
-      }
-
-      const Orthanc::ImageAccessor& GetImage() const
-      {
-        return image_;
-      }
-
-      Orthanc::MimeType GetMimeType() const
-      {
-        return mime_;
-      }
-    };
-
-
-  private:
-    std::string           uri_;
-    HttpHeaders           headers_;
-    unsigned int          timeout_;
-    bool                  hasExpectedFormat_;
-    Orthanc::PixelFormat  expectedFormat_;
-
-    GetOrthancImageCommand(const GetOrthancImageCommand& other) :
-      uri_(other.uri_),
-      headers_(other.headers_),
-      timeout_(other.timeout_),
-      hasExpectedFormat_(other.hasExpectedFormat_),
-      expectedFormat_(other.expectedFormat_)
-    {
-    }
-
-  public:
-    GetOrthancImageCommand();
-
-    virtual Type GetType() const
-    {
-      return Type_GetOrthancImage;
-    }
-
-    virtual IOracleCommand* Clone() const
-    {
-      return new GetOrthancImageCommand(*this);
-    }
-
-    void SetExpectedPixelFormat(Orthanc::PixelFormat format);
-
-    void SetUri(const std::string& uri)
-    {
-      uri_ = uri;
-    }
-
-    void SetInstanceUri(const std::string& instance,
-                        Orthanc::PixelFormat pixelFormat);
-
-    void SetFrameUri(const std::string& instance,
-                     unsigned int frame,
-                     Orthanc::PixelFormat pixelFormat);
-
-    void SetHttpHeader(const std::string& key,
-                       const std::string& value)
-    {
-      headers_[key] = value;
-    }
-
-    const std::string& GetUri() const
-    {
-      return uri_;
-    }
-
-    const HttpHeaders& GetHttpHeaders() const
-    {
-      return headers_;
-    }
-
-    void SetTimeout(unsigned int seconds)
-    {
-      timeout_ = seconds;
-    }
-
-    unsigned int GetTimeout() const
-    {
-      return timeout_;
-    }
-
-    void ProcessHttpAnswer(boost::weak_ptr<IObserver> receiver,
-                           IMessageEmitter& emitter,
-                           const std::string& answer,
-                           const HttpHeaders& answerHeaders) const;
-  };
-}
--- a/Framework/Oracle/GetOrthancWebViewerJpegCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GetOrthancWebViewerJpegCommand.h"
-
-#include "../Toolbox/LinearAlgebra.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <Images/JpegReader.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-#ifdef _MSC_VER
-// 'Json::Reader': Use CharReader and CharReaderBuilder instead
-#pragma warning(disable:4996)
-#endif
-
-#include <json/reader.h>
-#include <json/value.h>
-
-namespace OrthancStone
-{
-  GetOrthancWebViewerJpegCommand::GetOrthancWebViewerJpegCommand() :
-    frame_(0),
-    quality_(95),
-    timeout_(600),
-    expectedFormat_(Orthanc::PixelFormat_Grayscale8)
-  {
-  }
-
-
-  void GetOrthancWebViewerJpegCommand::SetQuality(unsigned int quality)
-  {
-    if (quality <= 0 ||
-        quality > 100)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      quality_ = quality;
-    }
-  }
-
-
-  std::string GetOrthancWebViewerJpegCommand::GetUri() const
-  {
-    return ("/web-viewer/instances/jpeg" + boost::lexical_cast<std::string>(quality_) +
-            "-" + instanceId_ + "_" + boost::lexical_cast<std::string>(frame_));
-  }
-
-
-  void GetOrthancWebViewerJpegCommand::ProcessHttpAnswer(boost::weak_ptr<IObserver> receiver,
-                                                         IMessageEmitter& emitter,
-                                                         const std::string& answer) const
-  {
-    // This code comes from older "OrthancSlicesLoader::ParseSliceImageJpeg()"
-      
-    Json::Value encoded;
-
-    {
-      Json::Reader reader;
-      if (!reader.parse(answer, encoded))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-    }
-
-    if (encoded.type() != Json::objectValue ||
-        !encoded.isMember("Orthanc") ||
-        encoded["Orthanc"].type() != Json::objectValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    
-    const Json::Value& info = encoded["Orthanc"];
-    if (!info.isMember("PixelData") ||
-        !info.isMember("Stretched") ||
-        !info.isMember("Compression") ||
-        info["Compression"].type() != Json::stringValue ||
-        info["PixelData"].type() != Json::stringValue ||
-        info["Stretched"].type() != Json::booleanValue ||
-        info["Compression"].asString() != "Jpeg")
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    
-    bool isSigned = false;
-    bool isStretched = info["Stretched"].asBool();
-    
-    if (info.isMember("IsSigned"))
-    {
-      if (info["IsSigned"].type() != Json::booleanValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-      else
-      {
-        isSigned = info["IsSigned"].asBool();
-      }
-    }
-    
-    std::unique_ptr<Orthanc::ImageAccessor> reader;
-    
-    {
-      std::string jpeg;
-      Orthanc::Toolbox::DecodeBase64(jpeg, info["PixelData"].asString());
-      
-      reader.reset(new Orthanc::JpegReader);
-      dynamic_cast<Orthanc::JpegReader&>(*reader).ReadFromMemory(jpeg);
-    }
-    
-    if (reader->GetFormat() == Orthanc::PixelFormat_RGB24)  // This is a color image
-    {
-      if (expectedFormat_ != Orthanc::PixelFormat_RGB24)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-      
-      if (isSigned || isStretched)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-      else
-      {
-        SuccessMessage message(*this, *reader);
-        emitter.EmitMessage(receiver, message);
-        return;
-      }
-    }
-    
-    if (reader->GetFormat() != Orthanc::PixelFormat_Grayscale8)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    
-    if (!isStretched)
-    {
-      if (expectedFormat_ != reader->GetFormat())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-      else
-      {
-        SuccessMessage message(*this, *reader);
-        emitter.EmitMessage(receiver, message);
-        return;
-      }
-    }
-    
-    int32_t stretchLow = 0;
-    int32_t stretchHigh = 0;
-    
-    if (!info.isMember("StretchLow") ||
-        !info.isMember("StretchHigh") ||
-        info["StretchLow"].type() != Json::intValue ||
-        info["StretchHigh"].type() != Json::intValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    
-    stretchLow = info["StretchLow"].asInt();
-    stretchHigh = info["StretchHigh"].asInt();
-    
-    if (stretchLow < -32768 ||
-        stretchHigh > 65535 ||
-        (stretchLow < 0 && stretchHigh > 32767))
-    {
-      // This range cannot be represented with a uint16_t or an int16_t
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    
-    // Decode a grayscale JPEG 8bpp image coming from the Web viewer
-    std::unique_ptr<Orthanc::ImageAccessor> image
-      (new Orthanc::Image(expectedFormat_, reader->GetWidth(), reader->GetHeight(), false));
-
-    Orthanc::ImageProcessing::Convert(*image, *reader);
-    reader.reset();
-    
-    float scaling = static_cast<float>(stretchHigh - stretchLow) / 255.0f;
-    
-    if (!LinearAlgebra::IsCloseToZero(scaling))
-    {
-      float offset = static_cast<float>(stretchLow) / scaling;
-      Orthanc::ImageProcessing::ShiftScale(*image, offset, scaling, true);
-    }
-
-    SuccessMessage message(*this, *image);
-    emitter.EmitMessage(receiver, message);
-  }
-}
--- a/Framework/Oracle/GetOrthancWebViewerJpegCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IMessageEmitter.h"
-#include "OracleCommandBase.h"
-
-#include <Images/ImageAccessor.h>
-
-#include <map>
-
-namespace OrthancStone
-{
-  class GetOrthancWebViewerJpegCommand : public OracleCommandBase
-  {
-  public:
-    typedef std::map<std::string, std::string>  HttpHeaders;
-
-    class SuccessMessage : public OriginMessage<GetOrthancWebViewerJpegCommand>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const Orthanc::ImageAccessor&  image_;
-
-    public:
-      SuccessMessage(const GetOrthancWebViewerJpegCommand& command,
-                     const Orthanc::ImageAccessor& image) :
-        OriginMessage(command),
-        image_(image)
-      {
-      }
-
-      const Orthanc::ImageAccessor& GetImage() const
-      {
-        return image_;
-      }
-    };
-
-  private:
-    std::string           instanceId_;
-    unsigned int          frame_;
-    unsigned int          quality_;
-    HttpHeaders           headers_;
-    unsigned int          timeout_;
-    Orthanc::PixelFormat  expectedFormat_;
-
-    GetOrthancWebViewerJpegCommand(const GetOrthancWebViewerJpegCommand& other) :
-      instanceId_(other.instanceId_),
-      frame_(other.frame_),
-      quality_(other.quality_),
-      headers_(other.headers_),
-      timeout_(other.timeout_),
-      expectedFormat_(other.expectedFormat_)
-    {
-    }
-    
-  public:
-    GetOrthancWebViewerJpegCommand();
-
-    virtual Type GetType() const
-    {
-      return Type_GetOrthancWebViewerJpeg;
-    }
-
-    virtual IOracleCommand* Clone() const
-    {
-      return new GetOrthancWebViewerJpegCommand(*this);
-    }
-
-    void SetExpectedPixelFormat(Orthanc::PixelFormat format)
-    {
-      expectedFormat_ = format;
-    }
-
-    void SetInstance(const std::string& instanceId)
-    {
-      instanceId_ = instanceId;
-    }
-
-    void SetFrame(unsigned int frame)
-    {
-      frame_ = frame;
-    }
-
-    void SetQuality(unsigned int quality);
-
-    void SetHttpHeader(const std::string& key,
-                       const std::string& value)
-    {
-      headers_[key] = value;
-    }
-
-    Orthanc::PixelFormat GetExpectedPixelFormat() const
-    {
-      return expectedFormat_;
-    }
-
-    const std::string& GetInstanceId() const
-    {
-      return instanceId_;
-    }
-
-    unsigned int GetFrame() const
-    {
-      return frame_;
-    }
-
-    unsigned int GetQuality() const
-    {
-      return quality_;
-    }
-
-    const HttpHeaders& GetHttpHeaders() const
-    {
-      return headers_;
-    }
-
-    void SetTimeout(unsigned int seconds)
-    {
-      timeout_ = seconds;
-    }
-
-    unsigned int GetTimeout() const
-    {
-      return timeout_;
-    }
-
-    std::string GetUri() const;
-
-    void ProcessHttpAnswer(boost::weak_ptr<IObserver> receiver,
-                           IMessageEmitter& emitter,
-                           const std::string& answer) const;
-  };
-}
--- a/Framework/Oracle/HttpCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "HttpCommand.h"
-
-#include <OrthancException.h>
-
-#ifdef _MSC_VER
-// 'Json::Reader': Use CharReader and CharReaderBuilder instead
-#pragma warning(disable:4996)
-#endif
-
-#include <json/reader.h>
-#include <json/writer.h>
-
-namespace OrthancStone
-{
-  void HttpCommand::SuccessMessage::ParseJsonBody(Json::Value& target) const
-  {
-    Json::Reader reader;
-    if (!reader.parse(answer_, target))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  HttpCommand::HttpCommand() :
-    method_(Orthanc::HttpMethod_Get),
-    url_("/"),
-    timeout_(600)
-  {
-  }
-
-
-  void HttpCommand::SetBody(const Json::Value& json)
-  {
-    Json::FastWriter writer;
-    body_ = writer.write(json);
-  }
-
-
-  const std::string& HttpCommand::GetBody() const
-  {
-    if (method_ == Orthanc::HttpMethod_Post ||
-        method_ == Orthanc::HttpMethod_Put)
-    {
-      return body_;
-    }
-    else
-    {
-      LOG(ERROR) << "HttpCommand::GetBody(): method_  not _Post or _Put";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  const std::string& HttpCommand::GetUsername() const
-  {
-    if (HasCredentials())
-    {
-      return username_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  const std::string& HttpCommand::GetPassword() const
-  {
-    if (HasCredentials())
-    {
-      return password_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-}
--- a/Framework/Oracle/HttpCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IMessage.h"
-#include "OracleCommandBase.h"
-
-#include <Enumerations.h>
-
-#include <map>
-#include <json/value.h>
-
-namespace OrthancStone
-{
-  class HttpCommand : public OracleCommandBase
-  {
-  public:
-    typedef std::map<std::string, std::string>  HttpHeaders;
-
-    class SuccessMessage : public OriginMessage<HttpCommand>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const HttpHeaders&  headers_;
-      const std::string&  answer_;
-
-    public:
-      SuccessMessage(const HttpCommand& command,
-                     const HttpHeaders& answerHeaders,
-                     const std::string& answer) :
-        OriginMessage(command),
-        headers_(answerHeaders),
-        answer_(answer)
-      {
-      }
-
-      const std::string& GetAnswer() const
-      {
-        return answer_;
-      }
-
-      void ParseJsonBody(Json::Value& target) const;
-
-      const HttpHeaders& GetAnswerHeaders() const
-      {
-        return headers_;
-      }
-    };
-
-
-  private:
-    Orthanc::HttpMethod  method_;
-    std::string          url_;
-    std::string          body_;
-    HttpHeaders          headers_;
-    unsigned int         timeout_;
-    std::string          username_;
-    std::string          password_;
-
-    HttpCommand(const HttpCommand& other) :
-      method_(other.method_),
-      url_(other.url_),
-      body_(other.body_),
-      headers_(other.headers_),
-      timeout_(other.timeout_),
-      username_(other.username_),
-      password_(other.password_)
-    {
-    }
-
-  public:
-    HttpCommand();
-
-    virtual Type GetType() const
-    {
-      return Type_Http;
-    }
-
-    virtual IOracleCommand* Clone() const
-    {
-      return new HttpCommand(*this);
-    }
-
-    void SetMethod(Orthanc::HttpMethod method)
-    {
-      method_ = method;
-    }
-
-    void SetUrl(const std::string& url)
-    {
-      url_ = url;
-    }
-
-    void SetBody(const std::string& body)
-    {
-      body_ = body;
-    }
-
-    void SetBody(const Json::Value& json);
-
-    void SwapBody(std::string& body)
-    {
-      body_.swap(body);
-    }
-
-    void SetHttpHeaders(const HttpHeaders& headers)
-    {
-      headers_ = headers;
-    }
-
-    void SetHttpHeader(const std::string& key,
-                       const std::string& value)
-    {
-      headers_[key] = value;
-    }
-
-    Orthanc::HttpMethod GetMethod() const
-    {
-      return method_;
-    }
-
-    const std::string& GetUrl() const
-    {
-      return url_;
-    }
-
-    const std::string& GetBody() const;
-
-    const HttpHeaders& GetHttpHeaders() const
-    {
-      return headers_;
-    }
-
-    void SetTimeout(unsigned int seconds)
-    {
-      timeout_ = seconds;
-    }
-
-    unsigned int GetTimeout() const
-    {
-      return timeout_;
-    }
-
-    void SetCredentials(const std::string& username,
-                        const std::string& password)
-    {
-      username_ = username;
-      password_ = password;
-    }
-
-    void ClearCredentials()
-    {
-      username_.clear();
-      password_.clear();
-    }
-
-    bool HasCredentials() const
-    {
-      return !username_.empty();
-    }
-
-    const std::string& GetUsername() const;
-
-    const std::string& GetPassword() const;
-  };
-}
--- a/Framework/Oracle/IOracle.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IObserver.h"
-#include "IOracleCommand.h"
-
-#include <boost/shared_ptr.hpp>
-
-namespace OrthancStone
-{
-  class IOracle : public boost::noncopyable
-  {
-  public:
-    virtual ~IOracle()
-    {
-    }
-
-    /**
-     * Returns "true" iff the command has actually been queued. If
-     * "false" is returned, the command has been freed, and it won't
-     * be processed (this is the case if the oracle is stopped).
-     **/
-    virtual bool Schedule(boost::shared_ptr<IObserver> receiver,
-                          IOracleCommand* command) = 0;  // Takes ownership
-  };
-}
--- a/Framework/Oracle/IOracleCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <IDynamicObject.h>
-
-namespace OrthancStone
-{
-  class IOracleCommand : public boost::noncopyable
-  {
-  public:
-    enum Type
-    {
-      Type_GetOrthancImage,
-      Type_GetOrthancWebViewerJpeg,
-      Type_Http,
-      Type_OrthancRestApi,
-      Type_ParseDicomFromFile,
-      Type_ParseDicomFromWado,
-      Type_ReadFile,
-      Type_Sleep
-    };
-
-    virtual ~IOracleCommand()
-    {
-    }
-
-    virtual Type GetType() const = 0;
-
-    // This only clones the command, *not* its possibly associated payload
-    virtual IOracleCommand* Clone() const = 0;
-  };
-}
--- a/Framework/Oracle/OracleCommandBase.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OracleCommandBase.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  void OracleCommandBase::AcquirePayload(Orthanc::IDynamicObject* payload)
-  {
-    if (payload == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-    else
-    {
-      payload_.reset(payload);
-    }    
-  }
-
-
-  Orthanc::IDynamicObject& OracleCommandBase::GetPayload() const
-  {
-    if (HasPayload())
-    {
-      return *payload_;
-    }
-    else
-    {
-      LOG(ERROR) << "OracleCommandBase::GetPayload(): (!HasPayload())";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  Orthanc::IDynamicObject* OracleCommandBase::ReleasePayload()
-  {
-    if (HasPayload())
-    {
-      return payload_.release();
-    }
-    else
-    {
-      LOG(ERROR) << "OracleCommandBase::ReleasePayload(): (!HasPayload())";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-}
--- a/Framework/Oracle/OracleCommandBase.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IOracleCommand.h"
-
-#include <Compatibility.h>
-#include <IDynamicObject.h>
-
-#include <memory>
-
-namespace OrthancStone
-{
-  class OracleCommandBase : public IOracleCommand
-  {
-  private:
-    std::unique_ptr<Orthanc::IDynamicObject>  payload_;
-
-  public:
-    void AcquirePayload(Orthanc::IDynamicObject* payload);
-
-    virtual bool HasPayload() const
-    {
-      return (payload_.get() != NULL);
-    }
-
-    virtual Orthanc::IDynamicObject& GetPayload() const;
-
-    Orthanc::IDynamicObject* ReleasePayload();
-  };
-}
--- a/Framework/Oracle/OracleCommandExceptionMessage.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IMessage.h"
-#include "IOracleCommand.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  class OracleCommandExceptionMessage : public OriginMessage<IOracleCommand>
-  {
-    ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-  private:
-    Orthanc::OrthancException  exception_;
-
-  public:
-    OracleCommandExceptionMessage(const IOracleCommand& command,
-                                  const Orthanc::ErrorCode& error) :
-      OriginMessage(command),
-      exception_(error)
-    {
-    }
-
-    OracleCommandExceptionMessage(const IOracleCommand& command,
-                                  const Orthanc::OrthancException& exception) :
-      OriginMessage(command),
-      exception_(exception)
-    {
-    }
-
-    const Orthanc::OrthancException& GetException() const
-    {
-      return exception_;
-    }
-  };
-}
--- a/Framework/Oracle/OrthancRestApiCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OrthancRestApiCommand.h"
-
-#include <OrthancException.h>
-
-#ifdef _MSC_VER
-// 'Json::Reader': Use CharReader and CharReaderBuilder instead
-#pragma warning(disable:4996)
-#endif
-
-#include <json/reader.h>
-#include <json/writer.h>
-
-namespace OrthancStone
-{
-  void OrthancRestApiCommand::SuccessMessage::ParseJsonBody(Json::Value& target) const
-  {
-    Json::Reader reader;
-    if (!reader.parse(answer_, target))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  OrthancRestApiCommand::OrthancRestApiCommand() :
-    method_(Orthanc::HttpMethod_Get),
-    uri_("/"),
-    timeout_(600),
-    applyPlugins_(false)
-  {
-  }
-
-
-  void OrthancRestApiCommand::SetBody(const Json::Value& json)
-  {
-    Json::FastWriter writer;
-    body_ = writer.write(json);
-  }
-
-
-  const std::string& OrthancRestApiCommand::GetBody() const
-  {
-    if (method_ == Orthanc::HttpMethod_Post ||
-        method_ == Orthanc::HttpMethod_Put)
-    {
-      return body_;
-    }
-    else
-    {
-      LOG(ERROR) << "OrthancRestApiCommand::GetBody(): method_  not _Post or _Put";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-}
--- a/Framework/Oracle/OrthancRestApiCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,172 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IMessage.h"
-#include "OracleCommandBase.h"
-
-#include <Enumerations.h>
-
-#include <map>
-#include <json/value.h>
-
-namespace OrthancStone
-{
-  class OrthancRestApiCommand : public OracleCommandBase
-  {
-  public:
-    typedef std::map<std::string, std::string>  HttpHeaders;
-
-    class SuccessMessage : public OriginMessage<OrthancRestApiCommand>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const HttpHeaders&  headers_;
-      const std::string&  answer_;
-
-    public:
-      SuccessMessage(const OrthancRestApiCommand& command,
-                     const HttpHeaders& answerHeaders,
-                     const std::string& answer) :
-        OriginMessage(command),
-        headers_(answerHeaders),
-        answer_(answer)
-      {
-      }
-      
-      const std::string& GetAnswer() const
-      {
-        return answer_;
-      }
-
-      void ParseJsonBody(Json::Value& target) const;
-
-      const HttpHeaders&  GetAnswerHeaders() const
-      {
-        return headers_;
-      }
-    };
-
-
-  private:
-    Orthanc::HttpMethod  method_;
-    std::string          uri_;
-    std::string          body_;
-    HttpHeaders          headers_;
-    unsigned int         timeout_;
-    bool                 applyPlugins_;  // Only makes sense for Stone as an Orthanc plugin
-
-    OrthancRestApiCommand(const OrthancRestApiCommand& other) :
-      method_(other.method_),
-      uri_(other.uri_),
-      body_(other.body_),
-      headers_(other.headers_),
-      timeout_(other.timeout_),
-      applyPlugins_(other.applyPlugins_)
-    {
-    }
-    
-  public:
-    OrthancRestApiCommand();
-
-    virtual Type GetType() const
-    {
-      return Type_OrthancRestApi;
-    }
-
-    virtual IOracleCommand* Clone() const
-    {
-      return new OrthancRestApiCommand(*this);
-    }
-
-    void SetMethod(Orthanc::HttpMethod method)
-    {
-      method_ = method;
-    }
-
-    void SetUri(const std::string& uri)
-    {
-      uri_ = uri;
-    }
-
-    void SetBody(const std::string& body)
-    {
-      body_ = body;
-    }
-
-    void SetBody(const Json::Value& json);
-
-    void SwapBody(std::string& body)
-    {
-      body_.swap(body);
-    }
-
-    void SetHttpHeaders(const HttpHeaders& headers)
-    {
-      headers_ = headers;
-    }
-
-    void SetHttpHeader(const std::string& key,
-                       const std::string& value)
-    {
-      headers_[key] = value;
-    }
-
-    Orthanc::HttpMethod GetMethod() const
-    {
-      return method_;
-    }
-
-    const std::string& GetUri() const
-    {
-      return uri_;
-    }
-
-    const std::string& GetBody() const;
-
-    const HttpHeaders& GetHttpHeaders() const
-    {
-      return headers_;
-    }
-
-    void SetTimeout(unsigned int seconds)
-    {
-      timeout_ = seconds;
-    }
-
-    unsigned int GetTimeout() const
-    {
-      return timeout_;
-    }
-
-    void SetApplyPlugins(bool applyPlugins)
-    {
-      applyPlugins_ = applyPlugins;
-    }
-
-    bool IsApplyPlugins() const
-    {
-      return applyPlugins_;
-    }
-  };
-}
--- a/Framework/Oracle/ParseDicomFromFileCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ParseDicomFromFileCommand.h"
-
-#include <OrthancException.h>
-
-#include <boost/filesystem/path.hpp>
-
-namespace OrthancStone
-{
-  std::string ParseDicomFromFileCommand::GetDicomDirPath(const std::string& dicomDirPath,
-                                                         const std::string& file)
-  {
-    std::string tmp = file;
-
-#if !defined(_WIN32)
-    std::replace(tmp.begin(), tmp.end(), '\\', '/');
-#endif
-
-    boost::filesystem::path base = boost::filesystem::path(dicomDirPath).parent_path();
-
-    return (base / tmp).string();
-  }
-}
--- a/Framework/Oracle/ParseDicomFromFileCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OracleCommandBase.h"
-#include "../Loaders/DicomSource.h"
-
-#include <string>
-
-namespace OrthancStone
-{
-  class ParseDicomFromFileCommand : public OracleCommandBase
-  {
-  private:
-    DicomSource  source_;
-    std::string  path_;
-    bool         pixelDataIncluded_;
-
-    ParseDicomFromFileCommand(const ParseDicomFromFileCommand& other) :
-      source_(other.source_),
-      path_(other.path_),
-      pixelDataIncluded_(other.pixelDataIncluded_)
-    {
-    }
-
-  public:
-    ParseDicomFromFileCommand(const DicomSource& source,
-                              const std::string& path) :
-      source_(source),
-      path_(path),
-      pixelDataIncluded_(true)
-    {
-    }
-
-    ParseDicomFromFileCommand(const DicomSource& source,
-                              const std::string& dicomDirPath,
-                              const std::string& file) :
-      source_(source),
-      path_(GetDicomDirPath(dicomDirPath, file)),
-      pixelDataIncluded_(true)
-    {
-    }
-    
-    static std::string GetDicomDirPath(const std::string& dicomDirPath,
-                                       const std::string& file);
-
-    virtual Type GetType() const
-    {
-      return Type_ParseDicomFromFile;
-    }
-
-    virtual IOracleCommand* Clone() const
-    {
-      return new ParseDicomFromFileCommand(*this);
-    }
-
-    const DicomSource& GetSource() const
-    {
-      return source_;
-    }
-
-    const std::string& GetPath() const
-    {
-      return path_;
-    }
-
-    bool IsPixelDataIncluded() const
-    {
-      return pixelDataIncluded_;
-    }
-
-    void SetPixelDataIncluded(bool included)
-    {
-      pixelDataIncluded_ = included;
-    }
-  };
-}
--- a/Framework/Oracle/ParseDicomFromWadoCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ParseDicomFromWadoCommand.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  ParseDicomFromWadoCommand::ParseDicomFromWadoCommand(const DicomSource& source,
-                                                       const std::string& sopInstanceUid,
-                                                       IOracleCommand* restCommand) :
-    source_(source),
-    sopInstanceUid_(sopInstanceUid),
-    restCommand_(restCommand)
-  {
-    if (restCommand == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    if (restCommand_->GetType() != Type_Http &&
-        restCommand_->GetType() != Type_OrthancRestApi)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType);
-    }        
-  }
-
-  
-  IOracleCommand* ParseDicomFromWadoCommand::Clone() const
-  {
-    assert(restCommand_.get() != NULL);
-    return new ParseDicomFromWadoCommand(source_, sopInstanceUid_, restCommand_->Clone());
-  }
-
-
-  const IOracleCommand& ParseDicomFromWadoCommand::GetRestCommand() const
-  {
-    assert(restCommand_.get() != NULL);
-    return *restCommand_;
-  }
-
-
-  ParseDicomFromWadoCommand* ParseDicomFromWadoCommand::Create(
-    const DicomSource& source,
-    const std::string& studyInstanceUid,
-    const std::string& seriesInstanceUid,
-    const std::string& sopInstanceUid,
-    bool transcode,
-    Orthanc::DicomTransferSyntax transferSyntax,
-    Orthanc::IDynamicObject* payload)
-  {
-    std::unique_ptr<Orthanc::IDynamicObject> protection(payload);
-    
-    const std::string uri = ("/studies/" + studyInstanceUid +
-                             "/series/" + seriesInstanceUid +
-                             "/instances/" + sopInstanceUid);
-
-    std::string s;
-    if (transcode)
-    {
-      s = Orthanc::GetTransferSyntaxUid(transferSyntax);      
-    }
-    else
-    {
-      s = "*";  // No transcoding, keep source transfer syntax
-    }
-    
-    std::map<std::string, std::string> arguments, headers;
-    headers["Accept"] = ("multipart/related; type=\"application/dicom\"; transfer-syntax=" + s);
-                         
-    std::unique_ptr<IOracleCommand> rest(
-      source.CreateDicomWebCommand(uri, arguments, headers, NULL));
-
-    std::unique_ptr<ParseDicomFromWadoCommand> command(
-      new ParseDicomFromWadoCommand(source, sopInstanceUid, rest.release()));
-
-    if (protection.get() != NULL)
-    {
-      command->AcquirePayload(protection.release());
-    }
-                            
-    return command.release();
-  }
-}
--- a/Framework/Oracle/ParseDicomFromWadoCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OracleCommandBase.h"
-#include "../Loaders/DicomSource.h"
-
-#include <Enumerations.h>
-
-#include <string>
-
-namespace OrthancStone
-{
-  class ParseDicomFromWadoCommand : public OracleCommandBase
-  {
-  private:
-    DicomSource                      source_;
-    std::string                      sopInstanceUid_;
-    std::unique_ptr<IOracleCommand>  restCommand_;
-
-  public:
-    ParseDicomFromWadoCommand(const DicomSource& source,
-                              const std::string& sopInstanceUid,
-                              IOracleCommand* restCommand);
-
-    virtual Type GetType() const
-    {
-      return Type_ParseDicomFromWado;
-    }
-
-    virtual IOracleCommand* Clone() const;
-
-    const DicomSource& GetSource() const
-    {
-      return source_;
-    }
-    
-    const std::string& GetSopInstanceUid() const
-    {
-      return sopInstanceUid_;
-    }
-    
-    const IOracleCommand& GetRestCommand() const;
-
-    static ParseDicomFromWadoCommand* Create(const DicomSource& source,
-                                             const std::string& studyInstanceUid,
-                                             const std::string& seriesInstanceUid,
-                                             const std::string& sopInstanceUid,
-                                             bool transcode,
-                                             Orthanc::DicomTransferSyntax transferSyntax,
-                                             Orthanc::IDynamicObject* payload);
-  };
-}
--- a/Framework/Oracle/ParseDicomSuccessMessage.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ParseDicomSuccessMessage.h"
-
-#include <DicomParsing/ParsedDicomFile.h>
-#include <HttpServer/MultipartStreamReader.h>
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  class MultipartHandler : public Orthanc::MultipartStreamReader::IHandler
-  {
-  private:
-    std::unique_ptr<Orthanc::ParsedDicomFile>  dicom_;
-    size_t                                   size_;
-
-  public:
-    MultipartHandler() :
-      size_(0)
-    {
-    }
-      
-    virtual void HandlePart(const std::map<std::string, std::string>& headers,
-                            const void* part,
-                            size_t size)
-    {
-      if (dicom_.get())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
-                                        "Multiple DICOM instances were contained in a WADO-RS request");
-      }
-      else
-      {
-        dicom_.reset(new Orthanc::ParsedDicomFile(part, size));
-        size_ = size;
-      }
-    }
-
-    Orthanc::ParsedDicomFile* ReleaseDicom()
-    {
-      if (dicom_.get())
-      {
-        return dicom_.release();
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
-                                        "WADO-RS request didn't contain any DICOM instance");
-      }
-    }
-
-    size_t GetSize() const
-    {
-      return size_;
-    }
-  };
-
-  
-  Orthanc::ParsedDicomFile* ParseDicomSuccessMessage::ParseWadoAnswer(
-    size_t& fileSize /* OUT */,
-    const std::string& answer,
-    const std::map<std::string, std::string>& headers)
-  {
-    std::string contentType, subType, boundary, header;
-    if (Orthanc::MultipartStreamReader::GetMainContentType(header, headers) &&
-        Orthanc::MultipartStreamReader::ParseMultipartContentType(contentType, subType, boundary, header) &&
-        contentType == "multipart/related" &&
-        subType == "application/dicom")
-    {
-      MultipartHandler handler;
-
-      {
-        Orthanc::MultipartStreamReader reader(boundary);
-        reader.SetHandler(handler);
-        reader.AddChunk(answer);
-        reader.CloseStream();
-      }
-
-      fileSize = handler.GetSize();
-      return handler.ReleaseDicom();
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
-                                      "Multipart/related answer of application/dicom was expected from DICOMweb server");
-    }
-  }
-}
--- a/Framework/Oracle/ParseDicomSuccessMessage.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../OrthancStone.h"
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error The macro ORTHANC_ENABLE_DCMTK must be defined
-#endif
-
-#if ORTHANC_ENABLE_DCMTK != 1
-#  error Support for DCMTK must be enabled to use ParseDicomFromFileCommand
-#endif
-
-#include "OracleCommandBase.h"
-#include "../Messages/IMessageEmitter.h"
-#include "../Messages/IObserver.h"
-
-#include <map>
-
-namespace Orthanc
-{
-  class ParsedDicomFile;
-}
-
-namespace OrthancStone
-{
-  class DicomSource;
-  
-  class ParseDicomSuccessMessage : public OriginMessage<OracleCommandBase>
-  {
-    ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-    
-  private:
-    const DicomSource&         source_;
-    Orthanc::ParsedDicomFile&  dicom_;
-    size_t                     fileSize_;
-    bool                       hasPixelData_;
-    
-  public:
-    ParseDicomSuccessMessage(const OracleCommandBase& command,
-                             const DicomSource& source,
-                             Orthanc::ParsedDicomFile& dicom,
-                             size_t fileSize,
-                             bool hasPixelData) :
-      OriginMessage(command),
-      source_(source),
-      dicom_(dicom),
-      fileSize_(fileSize),
-      hasPixelData_(hasPixelData)
-    {
-    }
-
-    const DicomSource& GetSource() const
-    {
-      return source_;
-    }
-
-    Orthanc::ParsedDicomFile& GetDicom() const
-    {
-      return dicom_;
-    }
-
-    size_t GetFileSize() const
-    {
-      return fileSize_;
-    }
-
-    bool HasPixelData() const
-    {
-      return hasPixelData_;
-    }
-    
-    static Orthanc::ParsedDicomFile* ParseWadoAnswer(size_t& fileSize /* OUT */,
-                                                     const std::string& answer,
-                                                     const std::map<std::string, std::string>& headers);
-  };
-}
--- a/Framework/Oracle/ReadFileCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IMessage.h"
-#include "OracleCommandBase.h"
-
-namespace OrthancStone
-{
-  class ReadFileCommand : public OracleCommandBase
-  {
-  public:
-    class SuccessMessage : public OriginMessage<ReadFileCommand>
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-      
-    private:
-      const std::string& content_;
-
-    public:
-      SuccessMessage(const ReadFileCommand& command,
-                     const std::string& content) :
-        OriginMessage(command),
-        content_(content)
-      {
-      }
-
-      const std::string& GetContent() const
-      {
-        return content_;
-      }
-    };
-
-
-  private:
-    std::string  path_;
-
-  public:
-    ReadFileCommand(const std::string& path) : 
-      path_(path)
-    {
-    }
-
-    virtual Type GetType() const
-    {
-      return Type_ReadFile;
-    }
-
-    virtual IOracleCommand* Clone() const
-    {
-      return new ReadFileCommand(path_);
-    }
-
-    const std::string& GetPath() const
-    {
-      return path_;
-    }
-  };
-}
--- a/Framework/Oracle/SleepOracleCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IMessage.h"
-#include "OracleCommandBase.h"
-
-namespace OrthancStone
-{
-  class SleepOracleCommand : public OracleCommandBase
-  {
-  private:
-    unsigned int  milliseconds_;
-
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, TimeoutMessage, SleepOracleCommand);
-
-    SleepOracleCommand(unsigned int milliseconds) : 
-      milliseconds_(milliseconds)
-    {
-    }
-
-    virtual Type GetType() const
-    {
-      return Type_Sleep;
-    }
-
-    virtual IOracleCommand* Clone() const
-    {
-      return new SleepOracleCommand(milliseconds_);
-    }
-
-    unsigned int GetDelay() const
-    {
-      return milliseconds_;
-    }
-  };
-}
--- a/Framework/Oracle/ThreadedOracle.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,433 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ThreadedOracle.h"
-
-#include "SleepOracleCommand.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  class ThreadedOracle::Item : public Orthanc::IDynamicObject
-  {
-  private:
-    boost::weak_ptr<IObserver>      receiver_;
-    std::unique_ptr<IOracleCommand>   command_;
-
-  public:
-    Item(boost::weak_ptr<IObserver> receiver,
-         IOracleCommand* command) :
-      receiver_(receiver),
-      command_(command)
-    {
-      if (command == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    boost::weak_ptr<IObserver> GetReceiver()
-    {
-      return receiver_;
-    }
-
-    IOracleCommand& GetCommand()
-    {
-      assert(command_.get() != NULL);
-      return *command_;
-    }
-  };
-
-
-  class ThreadedOracle::SleepingCommands : public boost::noncopyable
-  {
-  private:
-    class Item
-    {
-    private:
-      boost::weak_ptr<IObserver>         receiver_;
-      std::unique_ptr<SleepOracleCommand>  command_;
-      boost::posix_time::ptime           expiration_;
-
-    public:
-      Item(boost::weak_ptr<IObserver> receiver,
-           SleepOracleCommand* command) :
-        receiver_(receiver),
-        command_(command)
-      {
-        if (command == NULL)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-        }
-
-        expiration_ = (boost::posix_time::microsec_clock::local_time() + 
-                       boost::posix_time::milliseconds(command_->GetDelay()));
-      }
-
-      const boost::posix_time::ptime& GetExpirationTime() const
-      {
-        return expiration_;
-      }
-
-      void Awake(IMessageEmitter& emitter)
-      {
-        assert(command_.get() != NULL);
-
-        SleepOracleCommand::TimeoutMessage message(*command_);
-        emitter.EmitMessage(receiver_, message);
-      }
-    };
-
-    typedef std::list<Item*>  Content;
-
-    boost::mutex  mutex_;
-    Content       content_;
-
-  public:
-    ~SleepingCommands()
-    {
-      for (Content::iterator it = content_.begin(); it != content_.end(); ++it)
-      {
-        if (*it != NULL)
-        {
-          delete *it;
-        }
-      }
-    }
-
-    void Add(boost::weak_ptr<IObserver> receiver,
-             SleepOracleCommand* command)   // Takes ownership
-    {
-      boost::mutex::scoped_lock lock(mutex_);
-
-      content_.push_back(new Item(receiver, command));
-    }
-
-    void AwakeExpired(IMessageEmitter& emitter)
-    {
-      boost::mutex::scoped_lock lock(mutex_);
-
-      const boost::posix_time::ptime now = boost::posix_time::microsec_clock::local_time();
-
-      Content  stillSleeping;
-        
-      for (Content::iterator it = content_.begin(); it != content_.end(); ++it)
-      {
-        if (*it != NULL &&
-            (*it)->GetExpirationTime() <= now)
-        {
-          (*it)->Awake(emitter);
-          delete *it;
-          *it = NULL;
-        }
-        else
-        {
-          stillSleeping.push_back(*it);
-        }
-      }
-
-      // Compact the still-sleeping commands
-      content_ = stillSleeping;
-    }
-  };
-
-
-  void ThreadedOracle::Step()
-  {
-    std::unique_ptr<Orthanc::IDynamicObject>  object(queue_.Dequeue(100));
-
-    if (object.get() != NULL)
-    {
-      Item& item = dynamic_cast<Item&>(*object);
-
-      if (item.GetCommand().GetType() == IOracleCommand::Type_Sleep)
-      {
-        SleepOracleCommand& command = dynamic_cast<SleepOracleCommand&>(item.GetCommand());
-          
-        std::unique_ptr<SleepOracleCommand> copy(new SleepOracleCommand(command.GetDelay()));
-          
-        if (command.HasPayload())
-        {
-          copy->AcquirePayload(command.ReleasePayload());
-        }
-          
-        sleepingCommands_->Add(item.GetReceiver(), copy.release());
-      }
-      else
-      {
-        GenericOracleRunner runner;
-
-        {
-          boost::mutex::scoped_lock lock(mutex_);
-          runner.SetOrthanc(orthanc_);
-          runner.SetRootDirectory(rootDirectory_);
-
-#if ORTHANC_ENABLE_DCMTK == 1
-          if (dicomCache_)
-          {
-            runner.SetDicomCache(dicomCache_);
-          }
-#endif
-        }
-
-        runner.Run(item.GetReceiver(), emitter_, item.GetCommand());
-      }
-    }
-  }
-
-
-  void ThreadedOracle::Worker(ThreadedOracle* that)
-  {
-    assert(that != NULL);
-      
-    for (;;)
-    {
-      {
-        boost::mutex::scoped_lock lock(that->mutex_);
-        if (that->state_ != State_Running)
-        {
-          return;
-        }
-      }
-
-      that->Step();
-    }
-  }
-
-
-  void ThreadedOracle::SleepingWorker(ThreadedOracle* that)
-  {
-    assert(that != NULL);
-      
-    for (;;)
-    {
-      {
-        boost::mutex::scoped_lock lock(that->mutex_);
-        if (that->state_ != State_Running)
-        {
-          return;
-        }
-      }
-
-      that->sleepingCommands_->AwakeExpired(that->emitter_);
-
-      boost::this_thread::sleep(boost::posix_time::milliseconds(that->sleepingTimeResolution_));
-    }
-  }
-
-
-  void ThreadedOracle::StopInternal()
-  {
-    {
-      boost::mutex::scoped_lock lock(mutex_);
-
-      if (state_ == State_Setup ||
-          state_ == State_Stopped)
-      {
-        return;
-      }
-      else
-      {
-        state_ = State_Stopped;
-      }
-    }
-
-    if (sleepingWorker_.joinable())
-    {
-      sleepingWorker_.join();
-    }
-
-    for (size_t i = 0; i < workers_.size(); i++)
-    {
-      if (workers_[i] != NULL)
-      {
-        if (workers_[i]->joinable())
-        {
-          workers_[i]->join();
-        }
-
-        delete workers_[i];
-      }
-    } 
-  }
-
-
-  ThreadedOracle::ThreadedOracle(IMessageEmitter& emitter) :
-    emitter_(emitter),
-    rootDirectory_("."),
-    state_(State_Setup),
-    workers_(4),
-    sleepingCommands_(new SleepingCommands),
-    sleepingTimeResolution_(50)  // By default, time resolution of 50ms
-  {
-  }
-
-
-  ThreadedOracle::~ThreadedOracle()
-  {
-    if (state_ == State_Running)
-    {
-      LOG(ERROR) << "The threaded oracle is still running, explicit call to "
-                 << "Stop() is mandatory to avoid crashes";
-    }
-
-    try
-    {
-      StopInternal();
-    }
-    catch (Orthanc::OrthancException& e)
-    {
-      LOG(ERROR) << "Exception while stopping the threaded oracle: " << e.What();
-    }
-    catch (...)
-    {
-      LOG(ERROR) << "Native exception while stopping the threaded oracle";
-    }
-  }
-
-  
-  void ThreadedOracle::SetOrthancParameters(const Orthanc::WebServiceParameters& orthanc)
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-    orthanc_ = orthanc;
-  }
-
-
-  void ThreadedOracle::SetRootDirectory(const std::string& rootDirectory)
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-    rootDirectory_ = rootDirectory;
-  }
-
-
-  void ThreadedOracle::SetThreadsCount(unsigned int count)
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-
-    if (count <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else if (state_ != State_Setup)
-    {
-      LOG(ERROR) << "ThreadedOracle::SetThreadsCount(): (state_ != State_Setup)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      workers_.resize(count);
-    }
-  }
-
-
-  void ThreadedOracle::SetSleepingTimeResolution(unsigned int milliseconds)
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-
-    if (milliseconds <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else if (state_ != State_Setup)
-    {
-      LOG(ERROR) << "ThreadedOracle::SetSleepingTimeResolution(): (state_ != State_Setup)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      sleepingTimeResolution_ = milliseconds;
-    }
-  }
-
-
-  void ThreadedOracle::SetDicomCacheSize(size_t size)
-  {
-#if ORTHANC_ENABLE_DCMTK == 1
-    boost::mutex::scoped_lock lock(mutex_);
-
-    if (state_ != State_Setup)
-    {
-      LOG(ERROR) << "ThreadedOracle::SetDicomCacheSize(): (state_ != State_Setup)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      if (size == 0)
-      {
-        dicomCache_.reset();
-      }
-      else
-      {
-        dicomCache_.reset(new ParsedDicomCache(size));
-      }
-    }
-#endif
-  }
-
-
-  void ThreadedOracle::Start()
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-
-    if (state_ != State_Setup)
-    {
-      LOG(ERROR) << "ThreadedOracle::Start(): (state_ != State_Setup)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      LOG(INFO) << "Starting oracle with " << workers_.size() << " worker threads";
-      state_ = State_Running;
-
-      for (unsigned int i = 0; i < workers_.size(); i++)
-      {
-        workers_[i] = new boost::thread(Worker, this);
-      }
-
-      sleepingWorker_ = boost::thread(SleepingWorker, this);
-    }      
-  }
-
-
-  bool ThreadedOracle::Schedule(boost::shared_ptr<IObserver> receiver,
-                                IOracleCommand* command)
-  {
-    std::unique_ptr<Item> item(new Item(receiver, command));
-
-    {
-      boost::mutex::scoped_lock lock(mutex_);
-
-      if (state_ == State_Running)
-      {
-        //LOG(INFO) << "New oracle command queued";
-        queue_.Enqueue(item.release());
-        return true;
-      }
-      else
-      {
-        LOG(TRACE) << "Command not enqueued, as the oracle has stopped";
-        return false;
-      }
-    }
-  }
-}
--- a/Framework/Oracle/ThreadedOracle.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <OrthancFramework.h>  // To have the macros properly defined
-
-#if !defined(ORTHANC_ENABLE_THREADS)
-#  error The macro ORTHANC_ENABLE_THREADS must be defined
-#endif
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error The macro ORTHANC_ENABLE_DCMTK must be defined
-#endif
-
-#if ORTHANC_ENABLE_THREADS != 1
-#  error This file can only compiled for native targets
-#endif
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include "../Toolbox/ParsedDicomCache.h"
-#endif
-
-#include "IOracle.h"
-#include "GenericOracleRunner.h"
-#include "../Messages/IMessageEmitter.h"
-
-#include <MultiThreading/SharedMessageQueue.h>
-
-
-namespace OrthancStone
-{
-  class ThreadedOracle : public IOracle
-  {
-  private:
-    enum State
-    {
-      State_Setup,
-      State_Running,
-      State_Stopped
-    };
-
-    class Item;
-    class SleepingCommands;
-
-    IMessageEmitter&                     emitter_;
-    Orthanc::WebServiceParameters        orthanc_;
-    std::string                          rootDirectory_;
-    Orthanc::SharedMessageQueue          queue_;
-    State                                state_;
-    boost::mutex                         mutex_;
-    std::vector<boost::thread*>          workers_;
-    boost::shared_ptr<SleepingCommands>  sleepingCommands_;
-    boost::thread                        sleepingWorker_;
-    unsigned int                         sleepingTimeResolution_;
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    boost::shared_ptr<ParsedDicomCache>  dicomCache_;
-#endif
-    
-    void Step();
-
-    static void Worker(ThreadedOracle* that);
-
-    static void SleepingWorker(ThreadedOracle* that);
-
-    void StopInternal();
-
-  public:
-    ThreadedOracle(IMessageEmitter& emitter);
-
-    virtual ~ThreadedOracle();
-
-    void SetOrthancParameters(const Orthanc::WebServiceParameters& orthanc);
-
-    void SetRootDirectory(const std::string& rootDirectory);
-
-    void SetThreadsCount(unsigned int count);
-
-    void SetSleepingTimeResolution(unsigned int milliseconds);
-
-    void SetDicomCacheSize(size_t size);
-
-    void Start();
-
-    void Stop()
-    {
-      StopInternal();
-    }
-
-    virtual bool Schedule(boost::shared_ptr<IObserver> receiver,
-                          IOracleCommand* command) ORTHANC_OVERRIDE;
-  };
-}
--- a/Framework/Oracle/WebAssemblyOracle.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,817 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebAssemblyOracle.h"
-
-#include "OracleCommandExceptionMessage.h"
-#include "SleepOracleCommand.h"
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include "ParseDicomSuccessMessage.h"
-static unsigned int BUCKET_SOP = 1;
-#endif
-
-#include "GetOrthancImageCommand.h"
-#include "GetOrthancWebViewerJpegCommand.h"
-#include "HttpCommand.h"
-#include "OrthancRestApiCommand.h"
-#include "ParseDicomFromWadoCommand.h"
-
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-#include <emscripten.h>
-#include <emscripten/html5.h>
-#include <emscripten/fetch.h>
-
-namespace OrthancStone
-{
-  class WebAssemblyOracle::TimeoutContext
-  {
-  private:
-    WebAssemblyOracle&                 oracle_;
-    boost::weak_ptr<IObserver>         receiver_;
-    std::unique_ptr<SleepOracleCommand>  command_;
-
-  public:
-    TimeoutContext(WebAssemblyOracle& oracle,
-                   boost::weak_ptr<IObserver> receiver,
-                   IOracleCommand* command) :
-      oracle_(oracle),
-      receiver_(receiver)
-    {
-      if (command == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-      else
-      {
-        command_.reset(dynamic_cast<SleepOracleCommand*>(command));
-      }
-    }
-
-    void EmitMessage()
-    {      
-      assert(command_.get() != NULL);
-
-      SleepOracleCommand::TimeoutMessage message(*command_);
-      oracle_.EmitMessage(receiver_, message);
-    }
-
-    static void Callback(void *userData)
-    {
-      std::unique_ptr<TimeoutContext> context(reinterpret_cast<TimeoutContext*>(userData));
-      context->EmitMessage();
-    }
-  };
-    
-
-  /**
-  This object is created on the heap for every http request.
-  It is deleted in the success (or error) callbacks.
-
-  This object references the receiver of the request. Since this is a raw
-  reference, we need additional checks to make sure we send the response to
-  the same object, for the object can be deleted and a new one recreated at the
-  same address (it often happens in the [single-threaded] browser context).
-  */
-  class WebAssemblyOracle::FetchContext : public boost::noncopyable
-  {
-  private:
-    WebAssemblyOracle&             oracle_;
-    boost::weak_ptr<IObserver>     receiver_;
-    std::unique_ptr<IOracleCommand>  command_;
-    std::string                    expectedContentType_;
-
-  public:
-    FetchContext(WebAssemblyOracle& oracle,
-                 boost::weak_ptr<IObserver> receiver,
-                 IOracleCommand* command,
-                 const std::string& expectedContentType) :
-      oracle_(oracle),
-      receiver_(receiver),
-      command_(command),
-      expectedContentType_(expectedContentType)
-    {
-      if (Orthanc::Logging::IsTraceLevelEnabled())
-      {
-        // Calling "receiver.lock()" is expensive, hence the quick check if TRACE is enabled
-        LOG(TRACE) << "WebAssemblyOracle::FetchContext::FetchContext() | "
-                   << "receiver address = " << std::hex << receiver.lock().get();
-      }
-
-      if (command == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    const std::string& GetExpectedContentType() const
-    {
-      return expectedContentType_;
-    }
-
-    IMessageEmitter& GetEmitter() const
-    {
-      return oracle_;
-    }
-
-    boost::weak_ptr<IObserver> GetReceiver() const
-    {
-      return receiver_;
-    }
-
-    void EmitMessage(const IMessage& message)
-    {
-      if (Orthanc::Logging::IsTraceLevelEnabled())
-      {
-        // Calling "receiver_.lock()" is expensive, hence the quick check if TRACE is enabled
-        LOG(TRACE) << "WebAssemblyOracle::FetchContext::EmitMessage receiver_ = "
-                   << std::hex << receiver_.lock().get() << std::dec;
-      }
-      
-      oracle_.EmitMessage(receiver_, message);
-    }
-
-    IOracleCommand& GetCommand() const
-    {
-      return *command_;
-    }
-
-    template <typename T>
-    const T& GetTypedCommand() const
-    {
-      return dynamic_cast<T&>(*command_);
-    }
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    void StoreInCache(const std::string& sopInstanceUid,
-                      std::unique_ptr<Orthanc::ParsedDicomFile>& dicom,
-                      size_t fileSize)
-    {
-      if (oracle_.dicomCache_.get())
-      {
-        // Store it into the cache for future use
-        oracle_.dicomCache_->Acquire(BUCKET_SOP, sopInstanceUid,
-                                     dicom.release(), fileSize, true);
-      }              
-    }
-#endif
-
-    static void SuccessCallback(emscripten_fetch_t *fetch)
-    {
-      /**
-       * Firstly, make a local copy of the fetched information, and
-       * free data associated with the fetch.
-       **/
-      
-      if (fetch->userData == NULL)
-      {
-        LOG(ERROR) << "WebAssemblyOracle::FetchContext::SuccessCallback fetch->userData is NULL!!!!!!!";
-        return;
-      }
-
-      std::unique_ptr<FetchContext> context(reinterpret_cast<FetchContext*>(fetch->userData));
-
-      std::string answer;
-      if (fetch->numBytes > 0)
-      {
-        answer.assign(fetch->data, fetch->numBytes);
-      }
-
-
-      /**
-       * Retrieving the headers of the HTTP answer.
-       **/
-      HttpHeaders headers;
-
-#if (__EMSCRIPTEN_major__ < 1 ||                                        \
-     (__EMSCRIPTEN_major__ == 1 && __EMSCRIPTEN_minor__ < 38) ||        \
-     (__EMSCRIPTEN_major__ == 1 && __EMSCRIPTEN_minor__ == 38 && __EMSCRIPTEN_tiny__ < 37))
-#  warning Consider upgrading Emscripten to a version above 1.38.37, incomplete support of Fetch API
-
-      /**
-       * HACK - If emscripten < 1.38.37, the fetch API does not
-       * contain a way to retrieve the HTTP headers of the answer. We
-       * make the assumption that the "Content-Type" header of the
-       * response is the same as the "Accept" header of the
-       * query. This is fixed thanks to the
-       * "emscripten_fetch_get_response_headers()" function that was
-       * added to "fetch.h" at emscripten-1.38.37 on 2019-06-26.
-       *
-       * https://github.com/emscripten-core/emscripten/blob/1.38.37/system/include/emscripten/fetch.h
-       * https://github.com/emscripten-core/emscripten/pull/8486
-       **/
-      if (fetch->userData != NULL)
-      {
-        if (!context->GetExpectedContentType().empty())
-        {
-          headers["Content-Type"] = context->GetExpectedContentType();
-        }
-      }
-#else
-      {
-        size_t size = emscripten_fetch_get_response_headers_length(fetch);
-
-        std::string plainHeaders(size + 1, '\0');
-        emscripten_fetch_get_response_headers(fetch, &plainHeaders[0], size + 1);
-
-        std::vector<std::string> tokens;
-        Orthanc::Toolbox::TokenizeString(tokens, plainHeaders, '\n');
-
-        for (size_t i = 0; i < tokens.size(); i++)
-        {
-          size_t p = tokens[i].find(':');
-          if (p != std::string::npos)
-          {
-            std::string key = Orthanc::Toolbox::StripSpaces(tokens[i].substr(0, p));
-            std::string value = Orthanc::Toolbox::StripSpaces(tokens[i].substr(p + 1));
-            headers[key] = value;
-          }
-        }
-      }
-#endif
-      
-      LOG(TRACE) << "About to call emscripten_fetch_close";
-      emscripten_fetch_close(fetch);
-      LOG(TRACE) << "Successfully called emscripten_fetch_close";
-
-      /**
-       * Secondly, use the retrieved data.
-       * IMPORTANT NOTE: the receiver might be dead. This is prevented 
-       * by the object responsible for zombie check, later on.
-       **/
-      try
-      {
-        if (context.get() == NULL)
-        {
-          LOG(ERROR) << "WebAssemblyOracle::FetchContext::SuccessCallback: (context.get() == NULL)";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-        }
-        else
-        {
-          switch (context->GetCommand().GetType())
-          {
-            case IOracleCommand::Type_Http:
-            {
-              HttpCommand::SuccessMessage message(context->GetTypedCommand<HttpCommand>(), headers, answer);
-              context->EmitMessage(message);
-              break;
-            }
-
-            case IOracleCommand::Type_OrthancRestApi:
-            {
-              LOG(TRACE) << "WebAssemblyOracle::FetchContext::SuccessCallback. About to call context->EmitMessage(message);";
-              OrthancRestApiCommand::SuccessMessage message
-                (context->GetTypedCommand<OrthancRestApiCommand>(), headers, answer);
-              context->EmitMessage(message);
-              break;
-            }
-
-            case IOracleCommand::Type_GetOrthancImage:
-            {
-              context->GetTypedCommand<GetOrthancImageCommand>().ProcessHttpAnswer
-                (context->GetReceiver(), context->GetEmitter(), answer, headers);
-              break;
-            }
-
-            case IOracleCommand::Type_GetOrthancWebViewerJpeg:
-            {
-              context->GetTypedCommand<GetOrthancWebViewerJpegCommand>().ProcessHttpAnswer
-                (context->GetReceiver(), context->GetEmitter(), answer);
-              break;
-            }
-
-            case IOracleCommand::Type_ParseDicomFromWado:
-            {
-#if ORTHANC_ENABLE_DCMTK == 1
-              const ParseDicomFromWadoCommand& command =
-                context->GetTypedCommand<ParseDicomFromWadoCommand>();
-              
-              size_t fileSize;
-              std::unique_ptr<Orthanc::ParsedDicomFile> dicom
-                (ParseDicomSuccessMessage::ParseWadoAnswer(fileSize, answer, headers));
-
-              {
-                ParseDicomSuccessMessage message(command, command.GetSource(), *dicom, fileSize, true);
-                context->EmitMessage(message);
-              }
-
-              context->StoreInCache(command.GetSopInstanceUid(), dicom, fileSize);
-#else
-              throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-#endif
-              break;
-            }
-
-            default:
-              LOG(ERROR) << "Command type not implemented by the WebAssembly Oracle (in SuccessCallback): "
-                         << context->GetCommand().GetType();
-              throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-          }
-        }
-      }
-      catch (Orthanc::OrthancException& e)
-      {
-        LOG(INFO) << "Error while processing a fetch answer in the oracle: " << e.What();
-
-        {
-          OracleCommandExceptionMessage message(context->GetCommand(), e);
-          context->EmitMessage(message);
-        }
-      }
-    }
-
-    static void FailureCallback(emscripten_fetch_t *fetch)
-    {
-      std::unique_ptr<FetchContext> context(reinterpret_cast<FetchContext*>(fetch->userData));
-
-      {
-        const size_t kEmscriptenStatusTextSize = sizeof(emscripten_fetch_t::statusText);
-        char message[kEmscriptenStatusTextSize + 1];
-        memcpy(message, fetch->statusText, kEmscriptenStatusTextSize);
-        message[kEmscriptenStatusTextSize] = 0;
-
-        /*LOG(ERROR) << "Fetching " << fetch->url
-                   << " failed, HTTP failure status code: " << fetch->status
-                   << " | statusText = " << message
-                   << " | numBytes = " << fetch->numBytes
-                   << " | totalBytes = " << fetch->totalBytes
-                   << " | readyState = " << fetch->readyState;*/
-      }
-
-      {
-        OracleCommandExceptionMessage message
-          (context->GetCommand(), Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol));
-        context->EmitMessage(message);
-      }
-      
-      /**
-       * TODO - The following code leads to an infinite recursion, at
-       * least with Firefox running on incognito mode => WHY?
-       **/      
-      emscripten_fetch_close(fetch); // Also free data on failure.
-    }
-  };
-    
-
-
-  class WebAssemblyOracle::FetchCommand : public boost::noncopyable
-  {
-  private:
-    WebAssemblyOracle&             oracle_;
-    boost::weak_ptr<IObserver>     receiver_;
-    std::unique_ptr<IOracleCommand>  command_;
-    Orthanc::HttpMethod            method_;
-    std::string                    url_;
-    std::string                    body_;
-    HttpHeaders                    headers_;
-    unsigned int                   timeout_;
-    std::string                    expectedContentType_;
-    bool                           hasCredentials_;
-    std::string                    username_;
-    std::string                    password_;
-
-  public:
-    FetchCommand(WebAssemblyOracle& oracle,
-                 boost::weak_ptr<IObserver> receiver,
-                 IOracleCommand* command) :
-      oracle_(oracle),
-      receiver_(receiver),
-      command_(command),
-      method_(Orthanc::HttpMethod_Get),
-      timeout_(0),
-      hasCredentials_(false)
-    {
-      if (command == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    void SetMethod(Orthanc::HttpMethod method)
-    {
-      method_ = method;
-    }
-
-    void SetUrl(const std::string& url)
-    {
-      url_ = url;
-    }
-
-    void SetBody(std::string& body /* will be swapped */)
-    {
-      body_.swap(body);
-    }
-
-    void AddHttpHeaders(const HttpHeaders& headers)
-    {
-      for (HttpHeaders::const_iterator it = headers.begin(); it != headers.end(); ++it)
-      {
-        headers_[it->first] = it->second;
-      }
-    }
-
-    void SetTimeout(unsigned int timeout)
-    {
-      timeout_ = timeout;
-    }
-
-    void SetCredentials(const std::string& username,
-                        const std::string& password)
-    {
-      hasCredentials_ = true;
-      username_ = username;
-      password_ = password;
-    }
-
-    void Execute()
-    {
-      if (command_.get() == NULL)
-      {
-        // Cannot call Execute() twice
-        LOG(ERROR) << "WebAssemblyOracle::Execute(): (command_.get() == NULL)";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-
-      emscripten_fetch_attr_t attr;
-      emscripten_fetch_attr_init(&attr);
-
-      const char* method;
-      
-      switch (method_)
-      {
-        case Orthanc::HttpMethod_Get:
-          method = "GET";
-          break;
-
-        case Orthanc::HttpMethod_Post:
-          method = "POST";
-          break;
-
-        case Orthanc::HttpMethod_Delete:
-          method = "DELETE";
-          break;
-
-        case Orthanc::HttpMethod_Put:
-          method = "PUT";
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-
-      strcpy(attr.requestMethod, method);
-
-      attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY | EMSCRIPTEN_FETCH_REPLACE;
-      attr.onsuccess = FetchContext::SuccessCallback;
-      attr.onerror = FetchContext::FailureCallback;
-      attr.timeoutMSecs = timeout_ * 1000;
-
-      if (hasCredentials_)
-      {
-        attr.withCredentials = EM_TRUE;
-        attr.userName = username_.c_str();
-        attr.password = password_.c_str();
-      }
-      
-      std::vector<const char*> headers;
-      headers.reserve(2 * headers_.size() + 1);
-
-      std::string expectedContentType;
-        
-      for (HttpHeaders::const_iterator it = headers_.begin(); it != headers_.end(); ++it)
-      {
-        std::string key;
-        Orthanc::Toolbox::ToLowerCase(key, it->first);
-          
-        if (key == "accept")
-        {
-          expectedContentType = it->second;
-        }
-
-        if (key != "accept-encoding")  // Web browsers forbid the modification of this HTTP header
-        {
-          headers.push_back(it->first.c_str());
-          headers.push_back(it->second.c_str());
-        }
-      }
-        
-      headers.push_back(NULL);  // Termination of the array of HTTP headers
-
-      attr.requestHeaders = &headers[0];
-
-      char* requestData = NULL;
-      if (!body_.empty())
-        requestData = reinterpret_cast<char*>(malloc(body_.size()));
-        
-      try 
-      {
-        if (!body_.empty())
-        {
-          memcpy(requestData, &(body_[0]), body_.size());
-          attr.requestDataSize = body_.size();
-          attr.requestData = requestData;
-        }
-        attr.userData = new FetchContext(oracle_, receiver_, command_.release(), expectedContentType);
-
-        // Must be the last call to prevent memory leak on error
-        emscripten_fetch(&attr, url_.c_str());
-      }        
-      catch(...)
-      {
-        if(requestData != NULL)
-          free(requestData);
-        throw;
-      }
-    }
-  };
-
-
-  void WebAssemblyOracle::SetOrthancUrl(FetchCommand& command,
-                                        const std::string& uri) const
-  {
-    if (isLocalOrthanc_)
-    {
-      command.SetUrl(localOrthancRoot_ + uri);
-    }
-    else
-    {
-      command.SetUrl(remoteOrthanc_.GetUrl() + uri);
-      command.AddHttpHeaders(remoteOrthanc_.GetHttpHeaders());
-      
-      if (!remoteOrthanc_.GetUsername().empty())
-      {
-        command.SetCredentials(remoteOrthanc_.GetUsername(), remoteOrthanc_.GetPassword());
-      }
-    }
-  }
-    
-
-  void WebAssemblyOracle::Execute(boost::weak_ptr<IObserver> receiver,
-                                  HttpCommand* command)
-  {
-    FetchCommand fetch(*this, receiver, command);
-    
-    fetch.SetMethod(command->GetMethod());
-    fetch.SetUrl(command->GetUrl());
-    fetch.AddHttpHeaders(command->GetHttpHeaders());
-    fetch.SetTimeout(command->GetTimeout());
-    
-    if (command->GetMethod() == Orthanc::HttpMethod_Post ||
-        command->GetMethod() == Orthanc::HttpMethod_Put)
-    {
-      std::string body;
-      command->SwapBody(body);
-      fetch.SetBody(body);
-    }
-    
-    fetch.Execute();
-  }
-  
-
-  void WebAssemblyOracle::Execute(boost::weak_ptr<IObserver> receiver,
-                                  OrthancRestApiCommand* command)
-  {
-    try
-    {
-      //LOG(TRACE) << "*********** WebAssemblyOracle::Execute.";
-      //LOG(TRACE) << "WebAssemblyOracle::Execute | command = " << command;
-      FetchCommand fetch(*this, receiver, command);
-
-      fetch.SetMethod(command->GetMethod());
-      SetOrthancUrl(fetch, command->GetUri());
-      fetch.AddHttpHeaders(command->GetHttpHeaders());
-      fetch.SetTimeout(command->GetTimeout());
-
-      if (command->GetMethod() == Orthanc::HttpMethod_Post ||
-        command->GetMethod() == Orthanc::HttpMethod_Put)
-      {
-        std::string body;
-        command->SwapBody(body);
-        fetch.SetBody(body);
-      }
-
-      fetch.Execute();
-      //LOG(TRACE) << "*********** successful end of WebAssemblyOracle::Execute.";
-    }
-    catch (const Orthanc::OrthancException& e)
-    {
-      if (e.HasDetails())
-      {
-        LOG(ERROR) << "OrthancException in WebAssemblyOracle::Execute: " << e.What() << " Details: " << e.GetDetails();
-      }
-      else
-      {
-        LOG(ERROR) << "OrthancException in WebAssemblyOracle::Execute: " << e.What();
-      }
-      //LOG(TRACE) << "*********** failing end of WebAssemblyOracle::Execute.";
-      throw;
-    }
-    catch (const std::exception& e)
-    {
-      LOG(ERROR) << "std::exception in WebAssemblyOracle::Execute: " << e.what();
-//       LOG(TRACE) << "*********** failing end of WebAssemblyOracle::Execute.";
-      throw;
-    }
-    catch (...)
-    {
-      LOG(ERROR) << "Unknown exception in WebAssemblyOracle::Execute";
-//       LOG(TRACE) << "*********** failing end of WebAssemblyOracle::Execute.";
-      throw;
-    }
-  }
-    
-    
-  void WebAssemblyOracle::Execute(boost::weak_ptr<IObserver> receiver,
-                                  GetOrthancImageCommand* command)
-  {
-    FetchCommand fetch(*this, receiver, command);
-
-    SetOrthancUrl(fetch, command->GetUri());
-    fetch.AddHttpHeaders(command->GetHttpHeaders());
-    fetch.SetTimeout(command->GetTimeout());
-      
-    fetch.Execute();
-  }
-    
-    
-  void WebAssemblyOracle::Execute(boost::weak_ptr<IObserver> receiver,
-                                  GetOrthancWebViewerJpegCommand* command)
-  {
-    FetchCommand fetch(*this, receiver, command);
-
-    SetOrthancUrl(fetch, command->GetUri());
-    fetch.AddHttpHeaders(command->GetHttpHeaders());
-    fetch.SetTimeout(command->GetTimeout());
-      
-    fetch.Execute();
-  }
-
-
-  void WebAssemblyOracle::Execute(boost::weak_ptr<IObserver> receiver,
-                                  ParseDicomFromWadoCommand* command)
-  {
-    std::unique_ptr<ParseDicomFromWadoCommand> protection(command);
-    
-#if ORTHANC_ENABLE_DCMTK == 1
-    if (dicomCache_.get())
-    {
-      ParsedDicomCache::Reader reader(*dicomCache_, BUCKET_SOP, protection->GetSopInstanceUid());
-      if (reader.IsValid() &&
-          reader.HasPixelData())
-      {
-        // Reuse the DICOM file from the cache
-        ParseDicomSuccessMessage message(*protection, protection->GetSource(), reader.GetDicom(),
-                                         reader.GetFileSize(), reader.HasPixelData());
-        EmitMessage(receiver, message);
-        return;
-      }
-    }
-#endif
-
-    switch (command->GetRestCommand().GetType())
-    {
-      case IOracleCommand::Type_Http:
-      {
-        const HttpCommand& rest =
-          dynamic_cast<const HttpCommand&>(protection->GetRestCommand());
-        
-        FetchCommand fetch(*this, receiver, protection.release());
-    
-        fetch.SetMethod(rest.GetMethod());
-        fetch.SetUrl(rest.GetUrl());
-        fetch.AddHttpHeaders(rest.GetHttpHeaders());
-        fetch.SetTimeout(rest.GetTimeout());
-    
-        if (rest.GetMethod() == Orthanc::HttpMethod_Post ||
-            rest.GetMethod() == Orthanc::HttpMethod_Put)
-        {
-          std::string body = rest.GetBody();
-          fetch.SetBody(body);
-        }
-    
-        fetch.Execute();
-        break;
-      }
-
-      case IOracleCommand::Type_OrthancRestApi:
-      {
-        const OrthancRestApiCommand& rest =
-          dynamic_cast<const OrthancRestApiCommand&>(protection->GetRestCommand());
-        
-        FetchCommand fetch(*this, receiver, protection.release());
-
-        fetch.SetMethod(rest.GetMethod());
-        SetOrthancUrl(fetch, rest.GetUri());
-        fetch.AddHttpHeaders(rest.GetHttpHeaders());
-        fetch.SetTimeout(rest.GetTimeout());
-
-        if (rest.GetMethod() == Orthanc::HttpMethod_Post ||
-            rest.GetMethod() == Orthanc::HttpMethod_Put)
-        {
-          std::string body = rest.GetBody();
-          fetch.SetBody(body);
-        }
-
-        fetch.Execute();
-        break;
-      }
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-
-
-  bool WebAssemblyOracle::Schedule(boost::shared_ptr<IObserver> receiver,
-                                   IOracleCommand* command)
-  {
-    LOG(TRACE) << "WebAssemblyOracle::Schedule : receiver = "
-               << std::hex << receiver.get();
-    
-    std::unique_ptr<IOracleCommand> protection(command);
-
-    if (command == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    switch (command->GetType())
-    {
-      case IOracleCommand::Type_Http:
-        Execute(receiver, dynamic_cast<HttpCommand*>(protection.release()));
-        break;
-        
-      case IOracleCommand::Type_OrthancRestApi:
-        Execute(receiver, dynamic_cast<OrthancRestApiCommand*>(protection.release()));
-        break;
-        
-      case IOracleCommand::Type_GetOrthancImage:
-        Execute(receiver, dynamic_cast<GetOrthancImageCommand*>(protection.release()));
-        break;
-
-      case IOracleCommand::Type_GetOrthancWebViewerJpeg:
-        break;          
-            
-      case IOracleCommand::Type_Sleep:
-      {
-        unsigned int timeoutMS = dynamic_cast<SleepOracleCommand*>(command)->GetDelay();
-        emscripten_set_timeout(TimeoutContext::Callback, timeoutMS,
-                               new TimeoutContext(*this, receiver, protection.release()));
-        break;
-      }
-            
-      case IOracleCommand::Type_ParseDicomFromWado:
-#if ORTHANC_ENABLE_DCMTK == 1
-        Execute(receiver, dynamic_cast<ParseDicomFromWadoCommand*>(protection.release()));
-#else
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
-                                          "DCMTK must be enabled to parse DICOM files");
-#endif
-        break;
-            
-      default:
-        LOG(ERROR) << "Command type not implemented by the WebAssembly Oracle (in Schedule): "
-                   << command->GetType();
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-
-    return true;
-  }
-
-
-  void WebAssemblyOracle::SetDicomCacheSize(size_t size)
-  {
-#if ORTHANC_ENABLE_DCMTK == 1
-    if (size == 0)
-    {
-      dicomCache_.reset();
-    }
-    else
-    {
-      dicomCache_.reset(new ParsedDicomCache(size));
-    }
-#else
-    LOG(INFO) << "DCMTK support is disabled, the DICOM cache is disabled";
-#endif
-  }
-}
--- a/Framework/Oracle/WebAssemblyOracle.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../OrthancStone.h"
-
-#if !defined(ORTHANC_ENABLE_WASM)
-#  error The macro ORTHANC_ENABLE_WASM must be defined
-#endif
-
-#if ORTHANC_ENABLE_WASM != 1
-#  error This file can only compiled for WebAssembly
-#endif
-
-#include "../Messages/IObservable.h"
-#include "../Messages/IMessageEmitter.h"
-#include "IOracle.h"
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include "../Toolbox/ParsedDicomCache.h"
-#endif
-
-#include <WebServiceParameters.h>
-
-#include <Enumerations.h>
-
-namespace OrthancStone
-{
-  class GetOrthancImageCommand;
-  class GetOrthancWebViewerJpegCommand;
-  class HttpCommand;
-  class OrthancRestApiCommand;
-  class ParseDicomFromWadoCommand;
-  
-  class WebAssemblyOracle :
-    public IOracle,
-    public IMessageEmitter
-  {
-  private:
-    typedef std::map<std::string, std::string>  HttpHeaders;
-    
-    class TimeoutContext;
-    class FetchContext;
-    class FetchCommand;
-
-    void SetOrthancUrl(FetchCommand& command,
-                       const std::string& uri) const;
-    
-    void Execute(boost::weak_ptr<IObserver> receiver,
-                 HttpCommand* command);    
-    
-    void Execute(boost::weak_ptr<IObserver> receiver,
-                 OrthancRestApiCommand* command);    
-    
-    void Execute(boost::weak_ptr<IObserver> receiver,
-                 GetOrthancImageCommand* command);    
-    
-    void Execute(boost::weak_ptr<IObserver> receiver,
-                 GetOrthancWebViewerJpegCommand* command);
-    
-    void Execute(boost::weak_ptr<IObserver> receiver,
-                 ParseDicomFromWadoCommand* command);
-
-    IObservable                    oracleObservable_;
-    bool                           isLocalOrthanc_;
-    std::string                    localOrthancRoot_;
-    Orthanc::WebServiceParameters  remoteOrthanc_;
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    std::unique_ptr<ParsedDicomCache>  dicomCache_;
-#endif
-
-  public:
-    WebAssemblyOracle() :
-      isLocalOrthanc_(false)
-    {
-    }
-    
-    virtual void EmitMessage(boost::weak_ptr<IObserver> observer,
-                             const IMessage& message) ORTHANC_OVERRIDE
-    {
-      oracleObservable_.EmitMessage(observer, message);
-    }
-    
-    virtual bool Schedule(boost::shared_ptr<IObserver> receiver,
-                          IOracleCommand* command) ORTHANC_OVERRIDE;
-
-    IObservable& GetOracleObservable()
-    {
-      return oracleObservable_;
-    }
-
-    void SetLocalOrthanc(const std::string& root)
-    {
-      isLocalOrthanc_ = true;
-      localOrthancRoot_ = root;
-    }
-
-    void SetRemoteOrthanc(const Orthanc::WebServiceParameters& orthanc)
-    {
-      isLocalOrthanc_ = false;
-      remoteOrthanc_ = orthanc;
-    }
-
-    void SetDicomCacheSize(size_t size);
-  };
-}
--- a/Framework/OrthancStone.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#pragma once
-
-/**
- * Besides the "pragma once" above that only protects this file,
- * define a macro to prevent including different versions of
- * "OrthancStone.h"
- **/
-#ifndef __ORTHANC_STONE_H
-#define __ORTHANC_STONE_H
-
-#include <OrthancFramework.h>
-
-#if ORTHANC_ENABLE_OPENGL == 1
-#  define GL_GLEXT_PROTOTYPES 1
-#endif
-
-
-#endif /* __ORTHANC_STONE_H */
--- a/Framework/Scene2D/CairoCompositor.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoCompositor.h"
-
-#include "Internals/CairoColorTextureRenderer.h"
-#include "Internals/CairoFloatTextureRenderer.h"
-#include "Internals/CairoInfoPanelRenderer.h"
-#include "Internals/CairoLookupTableTextureRenderer.h"
-#include "Internals/CairoPolylineRenderer.h"
-#include "Internals/CairoTextRenderer.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  cairo_t* CairoCompositor::GetCairoContext()
-  {
-    if (context_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return context_->GetObject();
-    }
-  }
-
-  Internals::CompositorHelper::ILayerRenderer* CairoCompositor::Create(const ISceneLayer& layer)
-  {
-    switch (layer.GetType())
-    {
-      case ISceneLayer::Type_Polyline:
-        return new Internals::CairoPolylineRenderer(*this, layer);
-
-      case ISceneLayer::Type_InfoPanel:
-        return new Internals::CairoInfoPanelRenderer(*this, layer);
-
-      case ISceneLayer::Type_ColorTexture:
-        return new Internals::CairoColorTextureRenderer(*this, layer);
-
-      case ISceneLayer::Type_FloatTexture:
-        return new Internals::CairoFloatTextureRenderer(*this, layer);
-
-      case ISceneLayer::Type_LookupTableTexture:
-        return new Internals::CairoLookupTableTextureRenderer(*this, layer);
-
-      case ISceneLayer::Type_Text:
-      {
-        const TextSceneLayer& l = dynamic_cast<const TextSceneLayer&>(layer);
-
-        Fonts::const_iterator found = fonts_.find(l.GetFontIndex());
-        if (found == fonts_.end())
-        {
-          return NULL;
-        }
-        else
-        {
-          assert(found->second != NULL);
-          return new Internals::CairoTextRenderer(*this, *found->second, l);
-        }
-      }
-
-      default:
-        return NULL;
-    }
-  }
-
-
-  CairoCompositor::CairoCompositor(unsigned int canvasWidth,
-                                   unsigned int canvasHeight)
-  {
-    ResetScene();
-    UpdateSize(canvasWidth, canvasHeight);
-  }
-
-  void CairoCompositor::UpdateSize(unsigned int canvasWidth,
-                                   unsigned int canvasHeight)
-  {
-    canvas_.SetSize(canvasWidth, canvasHeight, false);
-  }
-    
-  CairoCompositor::~CairoCompositor()
-  {
-    for (Fonts::iterator it = fonts_.begin(); it != fonts_.end(); ++it)
-    {
-      assert(it->second != NULL);
-      delete it->second;
-    }
-  }
-
-
-  void CairoCompositor::SetFont(size_t index,
-                                GlyphBitmapAlphabet* dict)  // Takes ownership
-  {
-    if (dict == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-    else
-    {
-      std::unique_ptr<GlyphBitmapAlphabet> protection(dict);
-      
-      Fonts::iterator found = fonts_.find(index);
-
-      if (found == fonts_.end())
-      {
-        fonts_[index] = protection.release();
-      }
-      else
-      {
-        assert(found->second != NULL);
-        delete found->second;
-
-        found->second = protection.release();
-      }
-    }
-  }
-    
-
-#if ORTHANC_ENABLE_LOCALE == 1
-  void CairoCompositor::SetFont(size_t index,
-                                const std::string& ttf,
-                                unsigned int fontSize,
-                                Orthanc::Encoding codepage)
-  {
-    FontRenderer renderer;
-    renderer.LoadFont(ttf, fontSize);
-
-    std::unique_ptr<GlyphBitmapAlphabet> alphabet(new GlyphBitmapAlphabet);
-    alphabet->LoadCodepage(renderer, codepage);
-
-    SetFont(index, alphabet.release());
-  }
-#endif
-
-
-  void CairoCompositor::Refresh(const Scene2D& scene)
-  {
-    context_.reset(new CairoContext(canvas_));
-
-    // https://www.cairographics.org/FAQ/#clear_a_surface
-    cairo_set_source_rgba(context_->GetObject(), 0, 0, 0, 255);
-    cairo_paint(context_->GetObject());
-
-    helper_->Refresh(scene, canvas_.GetWidth(), canvas_.GetHeight());
-    context_.reset();
-  }
-
-
-  Orthanc::ImageAccessor* CairoCompositor::RenderText(size_t fontIndex,
-                                                      const std::string& utf8) const
-  {
-    Fonts::const_iterator found = fonts_.find(fontIndex);
-
-    if (found == fonts_.end())
-    {
-      return NULL;
-    }
-    else
-    {
-      assert(found->second != NULL);
-      return found->second->RenderText(utf8);
-    }
-  }
-}
--- a/Framework/Scene2D/CairoCompositor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ICompositor.h"
-#include "../Fonts/GlyphBitmapAlphabet.h"
-#include "../Wrappers/CairoContext.h"
-#include "Internals/CompositorHelper.h"
-#include "Internals/ICairoContextProvider.h"
-
-namespace OrthancStone
-{
-  class CairoCompositor :
-      public ICompositor,
-      private Internals::CompositorHelper::IRendererFactory,
-      private Internals::ICairoContextProvider
-  {
-  private:
-    typedef std::map<size_t, GlyphBitmapAlphabet*>   Fonts;
-
-    std::unique_ptr<Internals::CompositorHelper>  helper_;
-    CairoSurface                 canvas_;
-    Fonts                        fonts_;
-
-    // Only valid during a call to "Refresh()"
-    std::unique_ptr<CairoContext>  context_;
-
-    virtual cairo_t* GetCairoContext() ORTHANC_OVERRIDE;
-
-    virtual Internals::CompositorHelper::ILayerRenderer* Create(const ISceneLayer& layer) ORTHANC_OVERRIDE;
-
-  public:
-    CairoCompositor(unsigned int canvasWidth,
-                    unsigned int canvasHeight);
-    
-    virtual ~CairoCompositor();
-
-    const CairoSurface& GetCanvas() const
-    {
-      return canvas_;
-    }
-
-    virtual void RefreshCanvasSize() ORTHANC_OVERRIDE
-    {
-      // The canvas size is constant in Cairo, except if
-      // "UpdateSize()" is called
-    }
-
-    virtual unsigned int GetCanvasWidth() const ORTHANC_OVERRIDE
-    {
-      return canvas_.GetWidth();
-    }
-
-    virtual unsigned int GetCanvasHeight() const ORTHANC_OVERRIDE
-    {
-      return canvas_.GetHeight();
-    }
-    
-    void SetFont(size_t index,
-                 GlyphBitmapAlphabet* dict); // Takes ownership
-
-#if ORTHANC_ENABLE_LOCALE == 1
-    virtual void SetFont(size_t index,
-                         const std::string& ttf,
-                         unsigned int fontSize,
-                         Orthanc::Encoding codepage) ORTHANC_OVERRIDE;
-#endif
-
-    virtual void Refresh(const Scene2D& scene) ORTHANC_OVERRIDE;
-
-    virtual void ResetScene() ORTHANC_OVERRIDE
-    {
-      helper_.reset(new Internals::CompositorHelper(*this));
-    }
-
-    void UpdateSize(unsigned int canvasWidth,
-                    unsigned int canvasHeight);
-
-    Orthanc::ImageAccessor* RenderText(size_t fontIndex,
-                                       const std::string& utf8) const;
-  };
-}
--- a/Framework/Scene2D/Color.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <stdint.h>
-
-namespace OrthancStone
-{
-  class Color
-  {
-  private:
-    uint8_t  red_;
-    uint8_t  green_;
-    uint8_t  blue_;
-
-  public:
-    Color() :
-      red_(255),
-      green_(255),
-      blue_(255)
-    {
-    }
-
-    Color(uint8_t red,
-          uint8_t green,
-          uint8_t blue) :
-      red_(red),
-      green_(green),
-      blue_(blue)
-    {
-    }
-
-    uint8_t GetRed() const
-    {
-      return red_;
-    }
-
-    uint8_t GetGreen() const
-    {
-      return green_;
-    }
-
-    uint8_t GetBlue() const
-    {
-      return blue_;
-    }
-
-    float GetRedAsFloat() const
-    {
-      return static_cast<float>(red_) / 255.0f;
-    }
-
-    float GetGreenAsFloat() const
-    {
-      return static_cast<float>(green_) / 255.0f;
-    }
-
-    float GetBlueAsFloat() const
-    {
-      return static_cast<float>(blue_) / 255.0f;
-    }
-  };
-}
--- a/Framework/Scene2D/ColorSceneLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ISceneLayer.h"
-#include "Color.h"
-
-#include <Enumerations.h>  // For ORTHANC_OVERRIDE
-
-namespace OrthancStone
-{
-  // TODO - Is this needed?
-  class ColorSceneLayer : public ISceneLayer
-  {
-  private:
-    Color    color_;
-    uint64_t revision_;
-
-  protected:
-    void BumpRevision()
-    {
-      // this is *not* thread-safe!!!  => (SJO) no problem, Stone assumes mono-threading
-      revision_++;
-    }
-
-  public:
-    ColorSceneLayer() :
-      revision_(0)
-    {
-    }
-
-    virtual uint64_t GetRevision() const ORTHANC_OVERRIDE
-    {
-      return revision_;
-    }
-
-    void SetColor(uint8_t red,
-                  uint8_t green,
-                  uint8_t blue)
-    {
-      color_ = Color(red, green, blue);
-      BumpRevision();
-    }
-
-    void SetColor(const Color& color)
-    {
-      color_ = color;
-      BumpRevision();
-    }
-
-    const Color& GetColor() const
-    {
-      return color_;
-    }
-  };
-}
--- a/Framework/Scene2D/ColorTextureSceneLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ColorTextureSceneLayer.h"
-
-#include <OrthancException.h>
-#include <Images/Image.h>
-
-
-namespace OrthancStone
-{
-  ColorTextureSceneLayer::ColorTextureSceneLayer(const Orthanc::ImageAccessor& texture)
-  {
-    if (texture.GetFormat() != Orthanc::PixelFormat_Grayscale8 &&
-        texture.GetFormat() != Orthanc::PixelFormat_RGBA32 &&
-        texture.GetFormat() != Orthanc::PixelFormat_RGB24)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-      
-    SetTexture(Orthanc::Image::Clone(texture));
-  }
-
-
-  ISceneLayer* ColorTextureSceneLayer::Clone() const
-  {
-    std::unique_ptr<ColorTextureSceneLayer> cloned(new ColorTextureSceneLayer(GetTexture()));
-    cloned->CopyParameters(*this);
-    return cloned.release();
-  }
-}
--- a/Framework/Scene2D/ColorTextureSceneLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "TextureBaseSceneLayer.h"
-
-namespace OrthancStone
-{
-  class ColorTextureSceneLayer : public TextureBaseSceneLayer
-  {
-  public:
-    // If using RGBA32, premultiplied alpha is assumed
-    ColorTextureSceneLayer(const Orthanc::ImageAccessor& texture);
-
-    virtual ISceneLayer* Clone() const;
-
-    virtual Type GetType() const
-    {
-      return Type_ColorTexture;
-    }
-  };
-}
--- a/Framework/Scene2D/FloatTextureSceneLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "FloatTextureSceneLayer.h"
-
-#include "../Toolbox/ImageToolbox.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  FloatTextureSceneLayer::FloatTextureSceneLayer(const Orthanc::ImageAccessor& texture) :
-    inverted_(false),
-    applyLog_(false)
-  {
-    {
-      std::unique_ptr<Orthanc::ImageAccessor> t(
-        new Orthanc::Image(Orthanc::PixelFormat_Float32, 
-                           texture.GetWidth(), 
-                           texture.GetHeight(), 
-                           false));
-
-      Orthanc::ImageProcessing::Convert(*t, texture);
-
-      SetTexture(t.release());
-    }
-
-    SetCustomWindowing(128, 256);
-  }
-
-
-  void FloatTextureSceneLayer::SetWindowing(ImageWindowing windowing)
-  {
-    if (windowing_ != windowing)
-    {
-      if (windowing == ImageWindowing_Custom)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-      else
-      {
-        windowing_ = windowing;
-        IncrementRevision();
-      }
-    }
-  }
-
-  void FloatTextureSceneLayer::SetCustomWindowing(float customCenter,
-                                                  float customWidth)
-  {
-    if (customWidth <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      windowing_ = ImageWindowing_Custom;
-      customCenter_ = customCenter;
-      customWidth_ = customWidth;
-      IncrementRevision();
-    }
-  }
-
-  
-  void FloatTextureSceneLayer::GetWindowing(float& targetCenter,
-                                            float& targetWidth) const
-  {
-    ::OrthancStone::ComputeWindowing(targetCenter, targetWidth,
-                                     windowing_, customCenter_, customWidth_);
-  }
-
-
-  void FloatTextureSceneLayer::SetInverted(bool inverted)
-  {
-    inverted_ = inverted;
-    IncrementRevision();
-  }
-
-
-  void FloatTextureSceneLayer::SetApplyLog(bool apply)
-  {
-    applyLog_ = apply;
-    IncrementRevision();
-  }
-
-
-  void FloatTextureSceneLayer::FitRange()
-  {
-    float minValue, maxValue;
-    Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue, maxValue, GetTexture());
-
-    float width;
-
-    assert(minValue <= maxValue);
-    if (LinearAlgebra::IsCloseToZero(maxValue - minValue))
-    {
-      width = 1;
-    }
-    else
-    {
-      width = maxValue - minValue;
-    }
-
-    SetCustomWindowing((minValue + maxValue) / 2.0f, width);
-  }
-
-    
-  ISceneLayer* FloatTextureSceneLayer::Clone() const
-  {
-    std::unique_ptr<FloatTextureSceneLayer> cloned
-      (new FloatTextureSceneLayer(GetTexture()));
-
-    cloned->CopyParameters(*this);
-    cloned->windowing_ = windowing_;
-    cloned->customCenter_ = customCenter_;
-    cloned->customWidth_ = customWidth_;
-    cloned->inverted_ = inverted_;
-    cloned->applyLog_ = applyLog_;
-
-    return cloned.release();
-  }
-}
--- a/Framework/Scene2D/FloatTextureSceneLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "TextureBaseSceneLayer.h"
-
-namespace OrthancStone
-{
-  class FloatTextureSceneLayer : public TextureBaseSceneLayer
-  {
-  private:
-    ImageWindowing   windowing_;
-    float            customCenter_;
-    float            customWidth_;
-    bool             inverted_;
-    bool             applyLog_;
-
-  public:
-    // The pixel format must be convertible to "Float32"
-    FloatTextureSceneLayer(const Orthanc::ImageAccessor& texture);
-
-    void SetWindowing(ImageWindowing windowing);
-
-    void SetCustomWindowing(float customCenter,
-                            float customWidth);
-
-    void GetWindowing(float& targetCenter,
-                      float& targetWidth) const;
-
-    ImageWindowing GetWindowingType() const
-    {
-      return windowing_;
-    }
-
-    // To achieve MONOCHROME1 photometric interpretation
-    void SetInverted(bool inverted);
-
-    bool IsInverted() const
-    {
-      return inverted_;
-    }
-
-    void FitRange();
-
-    void SetApplyLog(bool apply);
-
-    bool IsApplyLog() const
-    {
-      return applyLog_;
-    }
-
-    virtual ISceneLayer* Clone() const;
-
-    virtual Type GetType() const
-    {
-      return Type_FloatTexture;
-    }
-  };
-}
--- a/Framework/Scene2D/GrayscaleStyleConfigurator.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GrayscaleStyleConfigurator.h"
-
-#include "FloatTextureSceneLayer.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  GrayscaleStyleConfigurator::GrayscaleStyleConfigurator() :
-    revision_(0),
-    linearInterpolation_(false),
-    hasWindowingOverride_(false),
-    customWindowWidth_(0),
-    customWindowCenter_(0),
-    hasInversionOverride_(false),
-    inverted_(false),
-    applyLog_(false)
-  {
-  }
-
-  void GrayscaleStyleConfigurator::SetWindowing(ImageWindowing windowing)
-  {
-    hasWindowingOverride_ = true;
-    windowing_ = windowing;
-    revision_++;
-  }
-
-  void GrayscaleStyleConfigurator::SetCustomWindowing(float windowCenter, float windowWidth)
-  {
-    SetWindowing(ImageWindowing_Custom);
-    customWindowCenter_ = windowCenter;
-    customWindowWidth_ = windowWidth;
-  }
-
-  void GrayscaleStyleConfigurator::GetCustomWindowing(float& windowCenter, float& windowWidth) const
-  {
-    windowCenter = customWindowCenter_;
-    windowWidth  = customWindowWidth_;
-  }
-
-  void GrayscaleStyleConfigurator::SetInverted(bool inverted)
-  {
-    hasInversionOverride_ = true;
-    inverted_ = inverted;
-    revision_++;
-  }
-
-  void GrayscaleStyleConfigurator::SetLinearInterpolation(bool enabled)
-  {
-    linearInterpolation_ = enabled;
-    revision_++;
-  }
-
-  void GrayscaleStyleConfigurator::SetApplyLog(bool apply)
-  {
-    applyLog_ = apply;
-    revision_++;
-  }
-
-  TextureBaseSceneLayer* GrayscaleStyleConfigurator::CreateTextureFromImage(
-    const Orthanc::ImageAccessor& image) const
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-  }
-
-  TextureBaseSceneLayer* GrayscaleStyleConfigurator::CreateTextureFromDicom(
-    const Orthanc::ImageAccessor& frame,
-    const DicomInstanceParameters& parameters) const
-  {
-    std::unique_ptr<TextureBaseSceneLayer> layer(parameters.CreateTexture(frame));
-
-    if (layer.get() == NULL ||
-        layer->GetTexture().GetFormat() != Orthanc::PixelFormat_Float32)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-    else
-    {
-      return layer.release();
-    }
-  }
-
-  void GrayscaleStyleConfigurator::ApplyStyle(ISceneLayer& layer) const
-  {
-    FloatTextureSceneLayer& l = dynamic_cast<FloatTextureSceneLayer&>(layer);
-    
-    l.SetLinearInterpolation(linearInterpolation_);
-
-    if (hasWindowingOverride_)
-    {
-      if (windowing_ != ImageWindowing_Custom)
-      {
-        l.SetWindowing(windowing_);
-      }
-      else
-      {
-        l.SetCustomWindowing(customWindowCenter_, customWindowWidth_);
-      }
-    }
-
-    if (hasInversionOverride_)
-    {
-      l.SetInverted(inverted_);
-    }
-
-    l.SetApplyLog(applyLog_);
-  }
-}
--- a/Framework/Scene2D/GrayscaleStyleConfigurator.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ILayerStyleConfigurator.h"
-
-namespace OrthancStone
-{
-  /**
-  Creates layers to display the supplied image in grayscale. No dynamic 
-  style is available.
-  */
-  class GrayscaleStyleConfigurator : public ILayerStyleConfigurator
-  {
-  private:
-    uint64_t        revision_;
-    bool            linearInterpolation_;
-    bool            hasWindowingOverride_;
-    ImageWindowing  windowing_;
-    float           customWindowWidth_;
-    float           customWindowCenter_;
-    bool            hasInversionOverride_;
-    bool            inverted_;
-    bool            applyLog_;
-    
-  public:
-    GrayscaleStyleConfigurator();
-
-    void SetWindowing(ImageWindowing windowing);
-
-    void SetCustomWindowing(float windowCenter, float windowWidth);
-
-    void GetCustomWindowing(float& windowCenter, float& windowWidth) const;
-
-    void SetInverted(bool inverted);
-
-    void SetLinearInterpolation(bool enabled);
-
-    bool IsLinearInterpolation() const
-    {
-      return linearInterpolation_;
-    }
-
-    void SetApplyLog(bool apply);
-
-    bool IsApplyLog() const
-    {
-      return applyLog_;
-    }
-
-    virtual uint64_t GetRevision() const
-    {
-      return revision_;
-    }
-    
-    virtual TextureBaseSceneLayer* CreateTextureFromImage(
-      const Orthanc::ImageAccessor& image) const;
-
-    virtual TextureBaseSceneLayer* CreateTextureFromDicom(
-      const Orthanc::ImageAccessor& frame,
-      const DicomInstanceParameters& parameters) const;
-
-    virtual void ApplyStyle(ISceneLayer& layer) const;
-  };
-}
--- a/Framework/Scene2D/ICompositor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "Scene2D.h"
-#include "ScenePoint2D.h"
-
-namespace OrthancStone
-{
-  class ICompositor : public boost::noncopyable
-  {
-  public:
-    virtual ~ICompositor() 
-    {
-    }
-
-    // This function can be expensive (notably in wasm)
-    virtual void RefreshCanvasSize() = 0; 
-    
-    virtual unsigned int GetCanvasWidth() const = 0;
-
-    virtual unsigned int GetCanvasHeight() const = 0;
-
-    /**
-     * WARNING: "Refresh()" must always be called with the same
-     * scene. If the scene changes, a call to "ResetScene()" must be
-     * done to reset the tracking of the revisions of the layers.
-     **/
-    virtual void Refresh(const Scene2D& scene) = 0;
-
-    virtual void ResetScene() = 0;
-
-#if ORTHANC_ENABLE_LOCALE == 1
-    virtual void SetFont(size_t index,
-                         const std::string& ttf,
-                         unsigned int fontSize,
-                         Orthanc::Encoding codepage) = 0;
-#endif
-
-    // Get the center of the given pixel, in canvas coordinates
-    ScenePoint2D GetPixelCenterCoordinates(int x, int y) const
-    {
-      return ScenePoint2D(
-        static_cast<double>(x) + 0.5 - static_cast<double>(GetCanvasWidth()) / 2.0,
-        static_cast<double>(y) + 0.5 - static_cast<double>(GetCanvasHeight()) / 2.0);
-    }
-
-    void FitContent(Scene2D& scene) const
-    {
-      scene.FitContent(GetCanvasWidth(), GetCanvasHeight());
-    }
-  };
-}
--- a/Framework/Scene2D/ILayerStyleConfigurator.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/DicomInstanceParameters.h"
-
-namespace OrthancStone
-{
-  /**
-  This interface is implemented by objects able to create an ISceneLayer 
-  suitable to display the Orthanc image supplied to the CreateTextureXX 
-  factory methods (taking Dicom parameters into account if relevant).
-
-  It can also refresh the style of an existing layer afterwards, to match
-  the configurator settings.
-  */
-  class ILayerStyleConfigurator
-  {
-  public:
-    virtual ~ILayerStyleConfigurator()
-    {
-    }
-    
-    virtual uint64_t GetRevision() const = 0;
-    
-    virtual TextureBaseSceneLayer* CreateTextureFromImage(const Orthanc::ImageAccessor& image) const = 0;
-
-    virtual TextureBaseSceneLayer* CreateTextureFromDicom(const Orthanc::ImageAccessor& frame,
-                                                          const DicomInstanceParameters& parameters) const = 0;
-
-    virtual void ApplyStyle(ISceneLayer& layer) const = 0;
-  };
-}
--- a/Framework/Scene2D/IPointerTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if 0
-
-#include "PointerEvent.h"
-
-namespace OrthancStone
-{
-  class IPointerTracker : public boost::noncopyable
-  {
-  public:
-    virtual ~IPointerTracker()
-    {
-    }
-
-    /**
-    This method will be repeatedly called during user interaction
-    */
-    virtual void Update(const PointerEvent& event) = 0;
-
-    /**
-    This method will be called when the tracker should commit its result
-    before being destroyed.
-    */
-    virtual void Release() = 0;
-  };
-}
-
-#endif
--- a/Framework/Scene2D/ISceneLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/Extent2D.h"
-
-#include <boost/noncopyable.hpp>
-#include <stdint.h>
-
-namespace OrthancStone
-{
-  class ISceneLayer : public boost::noncopyable
-  {
-  public:
-    enum Type
-    {
-      Type_NullLayer,
-      Type_InfoPanel,
-      Type_ColorTexture,
-      Type_Polyline,
-      Type_Text,
-      Type_FloatTexture,
-      Type_LookupTableTexture
-    };
-
-    virtual ~ISceneLayer()
-    {
-    }
-
-    virtual ISceneLayer* Clone() const = 0;
-
-    virtual Type GetType() const = 0;
-
-    virtual bool GetBoundingBox(Extent2D& target) const = 0;
-
-    virtual uint64_t GetRevision() const = 0;
-  };
-}
--- a/Framework/Scene2D/InfoPanelSceneLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "InfoPanelSceneLayer.h"
-
-#include <Images/Image.h>
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  InfoPanelSceneLayer::InfoPanelSceneLayer(const Orthanc::ImageAccessor& texture,
-                                           BitmapAnchor anchor,
-                                           bool isLinearInterpolation,
-                                           bool applySceneRotation) :
-    texture_(Orthanc::Image::Clone(texture)),
-    anchor_(anchor),
-    isLinearInterpolation_(isLinearInterpolation),
-    applySceneRotation_(applySceneRotation)
-  {
-    if (texture_->GetFormat() != Orthanc::PixelFormat_RGBA32 &&
-        texture_->GetFormat() != Orthanc::PixelFormat_RGB24)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-  }
-
-
-  void InfoPanelSceneLayer::ComputeAnchorLocation(int& x,
-                                                  int& y,
-                                                  BitmapAnchor anchor,
-                                                  unsigned int textureWidth,
-                                                  unsigned int textureHeight,
-                                                  unsigned int canvasWidth,
-                                                  unsigned int canvasHeight)
-  {
-    int tw = static_cast<int>(textureWidth);
-    int th = static_cast<int>(textureHeight);
-    int cw = static_cast<int>(canvasWidth);
-    int ch = static_cast<int>(canvasHeight);
-    
-    switch (anchor)
-    {
-      case BitmapAnchor_TopLeft:
-      case BitmapAnchor_CenterLeft:
-      case BitmapAnchor_BottomLeft:
-        x = 0;
-        break;
-          
-      case BitmapAnchor_TopCenter:
-      case BitmapAnchor_Center:
-      case BitmapAnchor_BottomCenter:
-        x = (cw - tw) / 2;
-        break;
-          
-      case BitmapAnchor_TopRight:
-      case BitmapAnchor_CenterRight:
-      case BitmapAnchor_BottomRight:
-        x = cw - tw;
-        break;
-          
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    switch (anchor)
-    {
-      case BitmapAnchor_TopLeft:
-      case BitmapAnchor_TopCenter:
-      case BitmapAnchor_TopRight:
-        y = 0;
-        break;
-          
-      case BitmapAnchor_CenterLeft:
-      case BitmapAnchor_Center:
-      case BitmapAnchor_CenterRight:
-        y = (ch - th) / 2;
-        break;
-          
-      case BitmapAnchor_BottomLeft:
-      case BitmapAnchor_BottomCenter:
-      case BitmapAnchor_BottomRight:
-        y = ch - th;
-        break;
-          
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-}
--- a/Framework/Scene2D/InfoPanelSceneLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ISceneLayer.h"
-#include "../StoneEnumerations.h"
-
-#include <Compatibility.h>
-#include <Images/ImageAccessor.h>
-
-#include <memory>
-
-namespace OrthancStone
-{
-  class InfoPanelSceneLayer : public ISceneLayer
-  {
-  private:
-    std::unique_ptr<Orthanc::ImageAccessor>  texture_;
-    BitmapAnchor                           anchor_;
-    bool                                   isLinearInterpolation_;
-    bool                                   applySceneRotation_;
-
-  public:
-  /**
-   * If you supply `true` for `applySceneRotation`, then, in addition to 
-   * a translation to bring it at the desired anchoring location, the image
-   * will be rotated around its center by the same rotation as the scene
-   * transformation.
-   */
-    InfoPanelSceneLayer(const Orthanc::ImageAccessor& texture,
-                        BitmapAnchor anchor,
-                        bool isLinearInterpolation,
-                        bool applySceneRotation = false);
-
-    virtual ISceneLayer* Clone() const
-    {
-      return new InfoPanelSceneLayer(*texture_, 
-                                     anchor_, 
-                                     isLinearInterpolation_, 
-                                     applySceneRotation_);
-    }
-
-    const Orthanc::ImageAccessor& GetTexture() const
-    {
-      return *texture_;
-    }
-
-    BitmapAnchor GetAnchor() const
-    {
-      return anchor_;
-    }
-
-    bool ShouldApplySceneRotation() const
-    {
-      return applySceneRotation_;
-    }
-
-    bool IsLinearInterpolation() const
-    {
-      return isLinearInterpolation_;
-    }
-
-    virtual Type GetType() const
-    {
-      return Type_InfoPanel;
-    }
-
-    virtual bool GetBoundingBox(Extent2D& target) const
-    {
-      return false;
-    }
-
-    virtual uint64_t GetRevision() const
-    {
-      return 0;
-    }
-
-    static void ComputeAnchorLocation(int& x,
-                                      int& y,
-                                      BitmapAnchor anchor,
-                                      unsigned int textureWidth,
-                                      unsigned int textureHeight,
-                                      unsigned int canvasWidth,
-                                      unsigned int canvasHeight);
-  };
-}
--- a/Framework/Scene2D/Internals/CairoBaseRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ICairoContextProvider.h"
-#include "CompositorHelper.h"
-
-#include <Compatibility.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class CairoBaseRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      ICairoContextProvider&      target_;
-      std::unique_ptr<ISceneLayer>  layer_;
-
-    protected:
-      template<typename T>
-      const T& GetLayer() const
-      {
-        return dynamic_cast<T&>(*layer_);
-      }
-
-      cairo_t* GetCairoContext() const
-      {
-        return target_.GetCairoContext();
-      }
-    
-    public:
-      CairoBaseRenderer(ICairoContextProvider& target,
-                        const ISceneLayer& layer) :
-        target_(target)
-      {
-        Update(layer);
-      }
-
-      virtual void Update(const ISceneLayer& layer)
-      {
-        layer_.reset(layer.Clone());
-      }
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/CairoColorTextureRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoColorTextureRenderer.h"
-
-#include "../ColorTextureSceneLayer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    CairoColorTextureRenderer::CairoColorTextureRenderer(ICairoContextProvider& target,
-                                                         const ISceneLayer& layer) :
-      target_(target)
-    {
-      Update(layer);
-    }
-
-    
-    void CairoColorTextureRenderer::Update(const ISceneLayer& layer)
-    {
-      const ColorTextureSceneLayer& l = dynamic_cast<const ColorTextureSceneLayer&>(layer);
-
-      texture_.Copy(l.GetTexture(), true);
-      textureTransform_ = l.GetTransform();
-      isLinearInterpolation_ = l.IsLinearInterpolation();
-    }
-
-
-    void CairoColorTextureRenderer::RenderColorTexture(ICairoContextProvider& target,
-                                                       const AffineTransform2D& transform,
-                                                       CairoSurface& texture,
-                                                       const AffineTransform2D& textureTransform,
-                                                       bool isLinearInterpolation)
-    {
-      cairo_t* cr = target.GetCairoContext();
-
-      AffineTransform2D t =
-        AffineTransform2D::Combine(transform, textureTransform);
-      Matrix h = t.GetHomogeneousMatrix();
-      
-      cairo_save(cr);
-
-      cairo_matrix_t m;
-      cairo_matrix_init(&m, h(0, 0), h(1, 0), h(0, 1), h(1, 1), h(0, 2), h(1, 2));
-      cairo_transform(cr, &m);
-
-      cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
-      cairo_set_source_surface(cr, texture.GetObject(), 0, 0);
-
-      if (isLinearInterpolation)
-      {
-        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_BILINEAR);
-      }
-      else
-      {
-        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);
-      }
-
-      cairo_paint(cr);
-
-      cairo_restore(cr);
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/CairoColorTextureRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Wrappers/CairoSurface.h"
-#include "CompositorHelper.h"
-#include "ICairoContextProvider.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class CairoColorTextureRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      ICairoContextProvider&  target_;
-      CairoSurface            texture_;
-      AffineTransform2D       textureTransform_;
-      bool                    isLinearInterpolation_;
-    
-    public:
-      CairoColorTextureRenderer(ICairoContextProvider& target,
-                                const ISceneLayer& layer);
-
-      virtual void Update(const ISceneLayer& layer);
-    
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight)
-      {
-        RenderColorTexture(target_, transform, texture_,
-                           textureTransform_, isLinearInterpolation_);
-      }
-
-      static void RenderColorTexture(ICairoContextProvider& target,
-                                     const AffineTransform2D& transform,
-                                     CairoSurface& texture,
-                                     const AffineTransform2D& textureTransform,
-                                     bool isLinearInterpolation);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/CairoFloatTextureRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoFloatTextureRenderer.h"
-
-#include "CairoColorTextureRenderer.h"
-#include "../FloatTextureSceneLayer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void CairoFloatTextureRenderer::Update(const ISceneLayer& layer)
-    {
-      const FloatTextureSceneLayer& l = dynamic_cast<const FloatTextureSceneLayer&>(layer);
-
-      textureTransform_ = l.GetTransform();
-      isLinearInterpolation_ = l.IsLinearInterpolation();
-
-      float windowCenter, windowWidth;
-      l.GetWindowing(windowCenter, windowWidth);
-
-      const float a = windowCenter - windowWidth / 2.0f;
-      const float slope = 256.0f / windowWidth;
-
-      const Orthanc::ImageAccessor& source = l.GetTexture();
-      const unsigned int width = source.GetWidth();
-      const unsigned int height = source.GetHeight();
-      texture_.SetSize(width, height, false);
-
-      Orthanc::ImageAccessor target;
-      texture_.GetWriteableAccessor(target);
-
-      assert(source.GetFormat() == Orthanc::PixelFormat_Float32 &&
-             target.GetFormat() == Orthanc::PixelFormat_BGRA32 &&
-             sizeof(float) == 4);
-
-      static const float LOG_NORMALIZATION = 255.0f / log(1.0f + 255.0f);
-      
-      for (unsigned int y = 0; y < height; y++)
-      {
-        const float* p = reinterpret_cast<const float*>(source.GetConstRow(y));
-        uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
-
-        for (unsigned int x = 0; x < width; x++)
-        {
-          float v = (*p - a) * slope;
-          if (v <= 0)
-          {
-            v = 0;
-          }
-          else if (v >= 255)
-          {
-            v = 255;
-          }
-
-          if (l.IsApplyLog())
-          {
-            // https://theailearner.com/2019/01/01/log-transformation/
-            v = LOG_NORMALIZATION * log(1.0f + static_cast<float>(v));
-          }
-
-          assert(v >= 0.0f && v <= 255.0f);
-
-          uint8_t vv = static_cast<uint8_t>(v);
-
-          if (l.IsInverted())
-          {
-            vv = 255 - vv;
-          }
-
-          q[0] = vv;
-          q[1] = vv;
-          q[2] = vv;
-
-          p++;
-          q += 4;
-        }
-      }
-    }
-
-      
-    void CairoFloatTextureRenderer::Render(const AffineTransform2D& transform,
-                                           unsigned int canvasWidth,
-                                           unsigned int canvasHeight)
-    {
-      CairoColorTextureRenderer::RenderColorTexture(target_, transform, texture_,
-                                                    textureTransform_, isLinearInterpolation_);
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/CairoFloatTextureRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Wrappers/CairoSurface.h"
-#include "CompositorHelper.h"
-#include "ICairoContextProvider.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class CairoFloatTextureRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      ICairoContextProvider&  target_;
-      CairoSurface            texture_;
-      AffineTransform2D       textureTransform_;
-      bool                    isLinearInterpolation_;
-    
-    public:
-      CairoFloatTextureRenderer(ICairoContextProvider& target,
-                                const ISceneLayer& layer) :
-        target_(target)
-      {
-        Update(layer);
-      }
-
-      virtual void Update(const ISceneLayer& layer);
-    
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/CairoInfoPanelRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoInfoPanelRenderer.h"
-
-#include "../InfoPanelSceneLayer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void CairoInfoPanelRenderer::Update(const ISceneLayer& layer)
-    {
-      const InfoPanelSceneLayer& l = dynamic_cast<const InfoPanelSceneLayer&>(layer);
-
-      texture_.Copy(l.GetTexture(), true);
-      anchor_ = l.GetAnchor();
-      isLinearInterpolation_ = l.IsLinearInterpolation();
-      applySceneRotation_ = l.ShouldApplySceneRotation();
-    }
-
-    void CairoInfoPanelRenderer::Render(const AffineTransform2D& transform,
-                                        unsigned int canvasWidth,
-                                        unsigned int canvasHeight)
-    {
-      int dx, dy;
-      InfoPanelSceneLayer::ComputeAnchorLocation(
-        dx, dy, anchor_, texture_.GetWidth(), texture_.GetHeight(),
-        canvasWidth, canvasHeight);
-
-      cairo_t* cr = target_.GetCairoContext();
-      cairo_save(cr);
-
-      if (applySceneRotation_)
-      {
-        // the transformation is as follows:
-        // - originally, the image is aligned so that its top left corner
-        // is at 0,0
-        // - first, we translate the image by -w/2,-h/2 
-        // - then we rotate it, so that the next rotation will make the  
-        //   image rotate around its center.
-        // - then, we translate the image by +w/2,+h/2 to put it
-        //   back in place
-        // - the fourth and last transform is the one that brings the 
-        //   image to its desired anchored location.
-
-        int32_t halfWidth =
-          static_cast<int32_t>(0.5 * texture_.GetWidth());
-
-        int32_t halfHeight =
-          static_cast<int32_t>(0.5 * texture_.GetHeight());
-
-        AffineTransform2D translation1 =
-          AffineTransform2D::CreateOffset(-halfWidth, -halfHeight);
-
-        const Matrix& sceneTransformM = transform.GetHomogeneousMatrix();
-        Matrix r;
-        Matrix q;
-        LinearAlgebra::RQDecomposition3x3(r, q, sceneTransformM);
-
-        // first, put the scene rotation in a cairo matrix
-        cairo_matrix_t m;
-        cairo_matrix_init(
-          &m, q(0, 0), q(1, 0), q(0, 1), q(1, 1), q(0, 2), q(1, 2));
-
-        // now let's build the transform piece by piece
-        // first translation (directly written in `transform`)
-        cairo_matrix_t transform;
-        cairo_matrix_init_identity(&transform);
-        cairo_matrix_translate(&transform, -halfWidth, -halfHeight);
-
-        // then the rotation
-        cairo_matrix_multiply(&transform, &transform, &m);
-
-        // then the second translation
-        {
-          cairo_matrix_t translation2;
-          cairo_matrix_init_translate(&translation2, halfWidth, halfHeight);
-          cairo_matrix_multiply(&transform, &transform, &m);
-        }
-
-        // then the last translation
-        {
-          cairo_matrix_t translation3;
-          cairo_matrix_init_translate(&translation3, dx, dy);
-          cairo_matrix_multiply(&transform, &transform, &translation3);
-        }
-        cairo_transform(cr, &transform);
-      } 
-      else
-      {
-        cairo_matrix_t t;
-        cairo_matrix_init_identity(&t);
-        cairo_matrix_translate(&t, dx, dy);
-        cairo_transform(cr, &t);
-      }
-      cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
-      cairo_set_source_surface(cr, texture_.GetObject(), 0, 0);
-
-      if (isLinearInterpolation_)
-      {
-        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_BILINEAR);
-      }
-      else
-      {
-        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);
-      }
-
-      cairo_paint(cr);
-
-      cairo_restore(cr);
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/CairoInfoPanelRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Wrappers/CairoSurface.h"
-#include "CompositorHelper.h"
-#include "ICairoContextProvider.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class CairoInfoPanelRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      ICairoContextProvider& target_;
-      CairoSurface           texture_;
-      BitmapAnchor           anchor_;
-      bool                   isLinearInterpolation_;
-      bool                   applySceneRotation_;
-
-    public:
-      CairoInfoPanelRenderer(ICairoContextProvider& target,
-                             const ISceneLayer& layer) :
-        target_(target),
-        anchor_(BitmapAnchor_TopLeft),
-        applySceneRotation_(false)
-
-      {
-        Update(layer);
-      }
-
-      virtual void Update(const ISceneLayer& layer);
-      
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/CairoLookupTableTextureRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoLookupTableTextureRenderer.h"
-
-#include "CairoColorTextureRenderer.h"
-#include "../LookupTableTextureSceneLayer.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void CairoLookupTableTextureRenderer::Update(const ISceneLayer& layer)
-    {
-      const LookupTableTextureSceneLayer& l = dynamic_cast<const LookupTableTextureSceneLayer&>(layer);
-
-      textureTransform_ = l.GetTransform();
-      isLinearInterpolation_ = l.IsLinearInterpolation();
-
-      const Orthanc::ImageAccessor& source = l.GetTexture();
-      const unsigned int width = source.GetWidth();
-      const unsigned int height = source.GetHeight();
-      texture_.SetSize(width, height, true /* alpha channel is enabled */);
-
-      Orthanc::ImageAccessor target;
-      texture_.GetWriteableAccessor(target);
-      l.Render(target);
-      
-      cairo_surface_mark_dirty(texture_.GetObject());
-    }
-
-    void CairoLookupTableTextureRenderer::Render(const AffineTransform2D& transform,
-                                                 unsigned int canvasWidth,
-                                                 unsigned int canvasHeight)
-    {
-      CairoColorTextureRenderer::RenderColorTexture(target_, transform, texture_,
-                                                    textureTransform_, isLinearInterpolation_);
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/CairoLookupTableTextureRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Wrappers/CairoSurface.h"
-#include "CompositorHelper.h"
-#include "ICairoContextProvider.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class CairoLookupTableTextureRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      ICairoContextProvider&  target_;
-      CairoSurface            texture_;
-      AffineTransform2D       textureTransform_;
-      bool                    isLinearInterpolation_;
-    
-    public:
-      CairoLookupTableTextureRenderer(ICairoContextProvider& target,
-                                      const ISceneLayer& layer) :
-        target_(target)
-      {
-        Update(layer);
-      }
-
-      virtual void Update(const ISceneLayer& layer);
-    
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/CairoPolylineRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoPolylineRenderer.h"
-
-#include "../PolylineSceneLayer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void CairoPolylineRenderer::Render(const AffineTransform2D& transform,
-                                       unsigned int canvasWidth,
-                                       unsigned int canvasHeight)
-    {
-      const PolylineSceneLayer& layer = GetLayer<PolylineSceneLayer>();
-      
-      cairo_t* cr = GetCairoContext();
-
-      cairo_set_line_width(cr, layer.GetThickness());
-      
-      for (size_t i = 0; i < layer.GetChainsCount(); i++)
-      {
-        const Color& color = layer.GetColor(i);
-        cairo_set_source_rgb(cr, color.GetRedAsFloat(),
-                             color.GetGreenAsFloat(),
-                             color.GetBlueAsFloat());
-
-        const PolylineSceneLayer::Chain& chain = layer.GetChain(i);
-
-        if (!chain.empty())
-        {
-          for (size_t j = 0; j < chain.size(); j++)
-          {
-            ScenePoint2D p = chain[j].Apply(transform);
-
-            if (j == 0)
-            {
-              cairo_move_to(cr, p.GetX(), p.GetY());
-            }
-            else
-            {
-              cairo_line_to(cr, p.GetX(), p.GetY());
-            }
-          }
-
-          if (layer.IsClosedChain(i))
-          {
-            ScenePoint2D p = chain[0].Apply(transform);
-            cairo_line_to(cr, p.GetX(), p.GetY());
-          }
-        }
-
-        cairo_stroke(cr);
-      }
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/CairoPolylineRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "CairoBaseRenderer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class CairoPolylineRenderer : public CairoBaseRenderer
-    {
-    public:
-      CairoPolylineRenderer(ICairoContextProvider& target,
-                            const ISceneLayer& layer) :
-        CairoBaseRenderer(target, layer)
-      {
-      }
-    
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/CairoTextRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoTextRenderer.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    CairoTextRenderer::CairoTextRenderer(ICairoContextProvider& target,
-                                         const GlyphBitmapAlphabet& alphabet,
-                                         const TextSceneLayer& layer) :
-      CairoBaseRenderer(target, layer)
-    {
-      std::unique_ptr<Orthanc::ImageAccessor> source(alphabet.RenderText(layer.GetText()));
-
-      if (source.get() != NULL)
-      {
-        text_.SetSize(source->GetWidth(), source->GetHeight(), true);
-
-        Orthanc::ImageAccessor target;
-        text_.GetWriteableAccessor(target);
-        
-        if (source->GetFormat() != Orthanc::PixelFormat_Grayscale8 ||
-            target.GetFormat() != Orthanc::PixelFormat_BGRA32)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-        }
-        
-        const unsigned int width = source->GetWidth();
-        const Color& color = layer.GetColor();
-
-        for (unsigned int y = 0; y < source->GetHeight(); y++)
-        {
-          const uint8_t* p = reinterpret_cast<const uint8_t*>(source->GetConstRow(y));
-          uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
-          
-          for (unsigned int x = 0; x < width; x++)
-          {
-            unsigned int alpha = *p;
-
-            // Premultiplied alpha
-            q[0] = static_cast<uint8_t>((color.GetBlue() * alpha) / 255);
-            q[1] = static_cast<uint8_t>((color.GetGreen() * alpha) / 255);
-            q[2] = static_cast<uint8_t>((color.GetRed() * alpha) / 255);
-            q[3] = *p;
-            
-            p++;
-            q += 4;
-          }
-        }
-
-        cairo_surface_mark_dirty(text_.GetObject());
-      }
-    }
-
-      
-    void CairoTextRenderer::Render(const AffineTransform2D& transform,
-                                   unsigned int canvasWidth,
-                                   unsigned int canvasHeight)
-    {
-      if (text_.GetWidth() != 0 &&
-          text_.GetHeight() != 0)
-      {
-        const TextSceneLayer& layer = GetLayer<TextSceneLayer>();
-      
-        cairo_t* cr = GetCairoContext();
-        cairo_set_source_rgb(cr, layer.GetColor().GetRedAsFloat(),
-                             layer.GetColor().GetGreenAsFloat(),
-                             layer.GetColor().GetBlueAsFloat());
-
-        double dx, dy;  // In pixels
-        ComputeAnchorTranslation(dx, dy, layer.GetAnchor(), text_.GetWidth(),
-                                 text_.GetHeight(), layer.GetBorder());
-      
-        double x = layer.GetX();
-        double y = layer.GetY();
-        transform.Apply(x, y);
-
-        cairo_save(cr);
-
-        cairo_matrix_t t;
-        cairo_matrix_init_identity(&t);
-        cairo_matrix_translate(&t, x + dx, y + dy);
-        cairo_transform(cr, &t);
-
-        cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
-        cairo_set_source_surface(cr, text_.GetObject(), 0, 0);
-        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_BILINEAR);
-        cairo_paint(cr);
-
-        cairo_restore(cr);
-      }
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/CairoTextRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Fonts/GlyphBitmapAlphabet.h"
-#include "../../Wrappers/CairoSurface.h"
-#include "../TextSceneLayer.h"
-#include "CairoBaseRenderer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class CairoTextRenderer : public CairoBaseRenderer
-    {
-    private:
-      CairoSurface  text_;
-    
-    public:
-      CairoTextRenderer(ICairoContextProvider& target,
-                        const GlyphBitmapAlphabet& alphabet,
-                        const TextSceneLayer& layer);
-    
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/CompositorHelper.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CompositorHelper.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class CompositorHelper::Item : public boost::noncopyable
-    {
-    private:
-      std::unique_ptr<ILayerRenderer>  renderer_;
-      const ISceneLayer&             layer_;
-      uint64_t                       layerIdentifier_;
-      uint64_t                       lastRevision_;
-
-    public:
-      Item(ILayerRenderer* renderer,     // Takes ownership
-           const ISceneLayer& layer,
-           uint64_t layerIdentifier) :
-        renderer_(renderer),
-        layer_(layer),
-        layerIdentifier_(layerIdentifier),
-        lastRevision_(layer.GetRevision())
-      {
-        if (renderer == NULL)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-        }
-      }
-
-      ILayerRenderer& GetRenderer() const
-      {
-        assert(renderer_.get() != NULL);
-        return *renderer_;
-      }
-
-      const ISceneLayer& GetLayer() const
-      {
-        return layer_;
-      }
-
-      uint64_t GetLayerIdentifier() const
-      {
-        return layerIdentifier_;
-      }
-
-      uint64_t GetLastRevision() const
-      {
-        return lastRevision_;
-      }
-
-      void UpdateRenderer()
-      {
-        assert(renderer_.get() != NULL);
-        renderer_->Update(layer_);
-        lastRevision_ = layer_.GetRevision();
-      }
-    };
-
-
-    void CompositorHelper::Visit(const Scene2D& scene,
-                                 const ISceneLayer& layer,
-                                 uint64_t layerIdentifier,
-                                 int depth)
-    {
-      // "Visit()" is only applied to layers existing in the scene
-      assert(scene.HasLayer(depth)); 
-
-      Content::iterator found = content_.find(depth);
-
-      assert(found == content_.end() ||
-             found->second != NULL);
-
-      if (found == content_.end() ||
-          found->second->GetLayerIdentifier() != layerIdentifier)
-      {
-        // This is the first time this layer is rendered, or the layer
-        // is not the same as before
-        if (found != content_.end())
-        {
-          delete found->second;
-          content_.erase(found);
-        }
-
-        // the returned renderer can be NULL in case of an unknown layer
-        // or a NullLayer
-        std::unique_ptr<ILayerRenderer> renderer(factory_.Create(layer));
-
-        if (renderer.get() != NULL)
-        {
-          renderer->Render(sceneTransform_, canvasWidth_, canvasHeight_);
-          content_[depth] = new Item(renderer.release(), layer, layerIdentifier);
-        }
-      }
-      else
-      {
-        // This layer has already been rendered
-        assert(found->second->GetLastRevision() <= layer.GetRevision());
-
-        if (found->second->GetLastRevision() < layer.GetRevision())
-        {
-          found->second->UpdateRenderer();
-        }
-
-        found->second->GetRenderer().Render(sceneTransform_, canvasWidth_, canvasHeight_);
-      }
-
-      // Check invariants
-      assert(content_.find(depth) == content_.end() ||
-             (content_[depth]->GetLayerIdentifier() == layerIdentifier &&
-              content_[depth]->GetLastRevision() == layer.GetRevision()));
-    }
-
-
-    CompositorHelper::~CompositorHelper()
-    {
-      for (Content::iterator it = content_.begin(); it != content_.end(); ++it)
-      {
-        assert(it->second != NULL);
-        delete it->second;
-      }
-    }
-
-  
-    void CompositorHelper::Refresh(const Scene2D& scene,
-                                   unsigned int canvasWidth,
-                                   unsigned int canvasHeight)
-    {
-      /**
-       * Safeguard mechanism to enforce the fact that the same scene
-       * is always used with the compositor. Note that the safeguard
-       * is not 100% bullet-proof, as a new scene might reuse the same
-       * address as a previous scene.
-       **/
-      if (lastScene_ != NULL &&
-          lastScene_ != &scene)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                        "ICompositor::ResetScene() should have been called");
-      }
-
-      lastScene_ = &scene;
-
-      // Bring coordinate (0,0) to the center of the canvas
-      AffineTransform2D offset = AffineTransform2D::CreateOffset(
-        static_cast<double>(canvasWidth) / 2.0,
-        static_cast<double>(canvasHeight) / 2.0);
-
-      sceneTransform_ = AffineTransform2D::Combine(offset, scene.GetSceneToCanvasTransform());
-      canvasWidth_ = canvasWidth;
-      canvasHeight_ = canvasHeight;
-      scene.Apply(*this);
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/CompositorHelper.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Scene2D.h"
-#include "../ScenePoint2D.h"
-#include <boost/noncopyable.hpp>
-
-#include <map>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class CompositorHelper : protected Scene2D::IVisitor
-    {
-    public:
-      class ILayerRenderer : public boost::noncopyable
-      {
-      public:
-        virtual ~ILayerRenderer()
-        {
-        }
-
-        virtual void Render(const AffineTransform2D& transform,
-                            unsigned int canvasWidth,
-                            unsigned int canvasHeight) = 0;
-
-        // "Update()" is only called if the type of the layer has not changed
-        virtual void Update(const ISceneLayer& layer) = 0;
-      };
-
-      class IRendererFactory : public boost::noncopyable
-      {
-      public:
-        virtual ~IRendererFactory()
-        {
-        }
-
-        virtual ILayerRenderer* Create(const ISceneLayer& layer) = 0;
-      };
-
-    private:
-      class Item;
-
-      typedef std::map<int, Item*>  Content;
-
-      IRendererFactory&  factory_;
-      Content            content_;
-      const Scene2D*     lastScene_;   // This is only a safeguard, don't use it!
-
-      // Only valid during a call to Refresh()
-      AffineTransform2D  sceneTransform_;
-      unsigned int       canvasWidth_;
-      unsigned int       canvasHeight_;
-      
-    protected:
-      virtual void Visit(const Scene2D& scene,
-                         const ISceneLayer& layer,
-                         uint64_t layerIdentifier,
-                         int depth);
-
-    public:
-      CompositorHelper(IRendererFactory& factory) :
-      factory_(factory),
-      lastScene_(NULL)
-      {
-      }
-
-      ~CompositorHelper();
-
-      void Refresh(const Scene2D& scene,
-                   unsigned int canvasWidth,
-                   unsigned int canvasHeight);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/FixedPointAligner.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "../../Scene2DViewport/ViewportController.h"
-#include "FixedPointAligner.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    FixedPointAligner::FixedPointAligner(boost::shared_ptr<IViewport> viewport,
-                                         const ScenePoint2D& p) 
-      : viewport_(viewport)
-      , canvas_(p)
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      pivot_ = canvas_.Apply(lock->GetController().GetCanvasToSceneTransform());
-    }
-
-    
-    void FixedPointAligner::Apply()
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      ScenePoint2D p = canvas_.Apply(
-        lock->GetController().GetCanvasToSceneTransform());
-
-      lock->GetController().SetSceneToCanvasTransform(
-        AffineTransform2D::Combine(
-          lock->GetController().GetSceneToCanvasTransform(),
-          AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(),
-                                          p.GetY() - pivot_.GetY())));
-      lock->Invalidate();
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/FixedPointAligner.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "../../Scene2DViewport/PredeclaredTypes.h"
-#include "../../Scene2D/ScenePoint2D.h"
-#include "../../Viewport/IViewport.h"
-
-#include <boost/weak_ptr.hpp>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    // During a mouse event that modifies the view of a scene, keeps
-    // one point (the pivot) at a fixed position on the canvas
-    class FixedPointAligner : public boost::noncopyable
-    {
-    private:
-      boost::shared_ptr<IViewport> viewport_;
-      ScenePoint2D           pivot_;
-      ScenePoint2D           canvas_;
-
-    public:
-      FixedPointAligner(boost::shared_ptr<IViewport> viewport,
-                        const ScenePoint2D& p);
-
-      void Apply();
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/ICairoContextProvider.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/noncopyable.hpp>
-#include <cairo.h>
-#include <stdint.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class ICairoContextProvider : public boost::noncopyable
-    {
-    public:
-      virtual ~ICairoContextProvider()
-      {
-      }
-
-      virtual cairo_t* GetCairoContext() = 0;
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLAdvancedPolylineRenderer.h"
-
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void OpenGLAdvancedPolylineRenderer::LoadLayer(const PolylineSceneLayer& layer)
-    {
-      data_.reset(new OpenGLLinesProgram::Data(context_, layer));
-
-      if (data_.get() == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-
-    OpenGLAdvancedPolylineRenderer::OpenGLAdvancedPolylineRenderer(OpenGL::IOpenGLContext& context,
-                                                                   OpenGLLinesProgram& program,
-                                                                   const PolylineSceneLayer& layer) :
-      context_(context),
-      program_(program)
-    {
-      LoadLayer(layer);
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "CompositorHelper.h"
-#include "OpenGLLinesProgram.h"
-
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLAdvancedPolylineRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      OpenGL::IOpenGLContext&                  context_;
-      OpenGLLinesProgram&                      program_;
-      std::unique_ptr<OpenGLLinesProgram::Data>  data_;
-
-      void LoadLayer(const PolylineSceneLayer& layer);
-
-    public:
-      OpenGLAdvancedPolylineRenderer(OpenGL::IOpenGLContext& context,
-                                     OpenGLLinesProgram& program,
-                                     const PolylineSceneLayer& layer);
-
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight)
-      {
-        if (!context_.IsContextLost())
-        {
-          program_.Apply(*data_, transform, true, true);
-        }
-      }
-
-      virtual void Update(const ISceneLayer& layer)
-      {
-        LoadLayer(dynamic_cast<const PolylineSceneLayer&>(layer));
-      }
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLBasicPolylineRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLBasicPolylineRenderer.h"
-
-#include "../../OpenGL/OpenGLIncludes.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    OpenGLBasicPolylineRenderer::OpenGLBasicPolylineRenderer(OpenGL::IOpenGLContext& context,
-                                                             const PolylineSceneLayer& layer) :
-      context_(context)
-    {
-      layer_.Copy(layer);
-    }
-
-    void OpenGLBasicPolylineRenderer::Render(const AffineTransform2D& transform)
-    {
-      if (!context_.IsContextLost())
-      {
-        AffineTransform2D t = AffineTransform2D::Combine(
-          AffineTransform2D::CreateOpenGLClipspace(context_.GetCanvasWidth(), context_.GetCanvasHeight()),
-          transform);
-
-        glUseProgram(0);
-
-        glBegin(GL_LINES);
-
-        for (size_t i = 0; i < layer_.GetChainsCount(); i++)
-        {
-          const Color& color = layer_.GetColor(i);
-          glColor3ub(color.GetRed(), color.GetGreen(), color.GetBlue());
-
-          const PolylineSceneLayer::Chain& chain = layer_.GetChain(i);
-
-          if (chain.size() > 1)
-          {
-            ScenePoint2D previous = chain[0].Apply(t);
-
-            for (size_t j = 1; j < chain.size(); j++)
-            {
-              ScenePoint2D p = chain[j].Apply(t);
-
-              glVertex2f(static_cast<GLfloat>(previous.GetX()),
-                static_cast<GLfloat>(previous.GetY()));
-              glVertex2f(static_cast<GLfloat>(p.GetX()),
-                static_cast<GLfloat>(p.GetY()));
-
-              previous = p;
-            }
-
-            if (layer_.IsClosedChain(i))
-            {
-              ScenePoint2D p = chain[0].Apply(t);
-
-              glVertex2f(static_cast<GLfloat>(previous.GetX()),
-                static_cast<GLfloat>(previous.GetY()));
-              glVertex2f(static_cast<GLfloat>(p.GetX()),
-                static_cast<GLfloat>(p.GetY()));
-            }
-          }
-        }
-
-        glEnd();
-      }
-    }
-
-
-    void OpenGLBasicPolylineRenderer::Update(const ISceneLayer& layer)
-    {
-      layer_.Copy(dynamic_cast<const PolylineSceneLayer&>(layer));
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLBasicPolylineRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../OpenGL/IOpenGLContext.h"
-#include "../PolylineSceneLayer.h"
-#include "CompositorHelper.h"
-
-#include <Compatibility.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLBasicPolylineRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      OpenGL::IOpenGLContext&  context_;
-      PolylineSceneLayer       layer_;
-
-    public:
-      OpenGLBasicPolylineRenderer(OpenGL::IOpenGLContext& context,
-                                  const PolylineSceneLayer& layer);
-
-      virtual void Render(const AffineTransform2D& transform);
-
-      virtual void Update(const ISceneLayer& layer);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLColorTextureProgram.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLColorTextureProgram.h"
-#include "OpenGLShaderVersionDirective.h"
-
-static const char* FRAGMENT_SHADER = 
-  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
-  "uniform sampler2D u_texture;                       \n"
-  "varying vec2 v_texcoord;                           \n"
-  "void main()                                        \n"
-  "{                                                  \n"
-  "  gl_FragColor = texture2D(u_texture, v_texcoord); \n"
-  "}";
-
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    OpenGLColorTextureProgram::OpenGLColorTextureProgram(OpenGL::IOpenGLContext&  context)
-      : program_(context, FRAGMENT_SHADER)
-      , context_(context)
-    {
-    }
-
-    
-    void OpenGLColorTextureProgram::Apply(OpenGL::OpenGLTexture& texture,
-                                          const AffineTransform2D& transform,
-                                          bool useAlpha)
-    {
-      if (!context_.IsContextLost())
-      {
-        OpenGLTextureProgram::Execution execution(program_, texture, transform);
-
-        if (useAlpha)
-        {
-          glEnable(GL_BLEND);
-          glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
-          execution.DrawTriangles();
-          glDisable(GL_BLEND);
-        }
-        else
-        {
-          execution.DrawTriangles();
-        }
-      }
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLColorTextureProgram.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OpenGLTextureProgram.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLColorTextureProgram : public boost::noncopyable
-    {
-    public:
-      OpenGLColorTextureProgram(OpenGL::IOpenGLContext&  context);
-
-      void Apply(OpenGL::OpenGLTexture& texture,
-                 const AffineTransform2D& transform,
-                 bool useAlpha);
-    private:
-      OpenGLTextureProgram  program_;
-      OpenGL::IOpenGLContext& context_;
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLColorTextureRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLColorTextureRenderer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void OpenGLColorTextureRenderer::LoadTexture(const ColorTextureSceneLayer& layer)
-    {
-      if (!context_.IsContextLost())
-      {
-        context_.MakeCurrent();
-        texture_.reset(new OpenGL::OpenGLTexture(context_));
-        texture_->Load(layer.GetTexture(), layer.IsLinearInterpolation());
-        layerTransform_ = layer.GetTransform();
-      }
-    }
-
-
-    OpenGLColorTextureRenderer::OpenGLColorTextureRenderer(OpenGL::IOpenGLContext& context,
-                                                           OpenGLColorTextureProgram& program,
-                                                           const ColorTextureSceneLayer& layer) :
-      context_(context),
-      program_(program)
-    {
-      LoadTexture(layer);
-    }
-
-    
-    void OpenGLColorTextureRenderer::Render(const AffineTransform2D& transform,
-                                            unsigned int canvasWidth,
-                                            unsigned int canvasHeight)
-    {
-      if (!context_.IsContextLost() && texture_.get() != NULL)
-      {
-        program_.Apply(*texture_, AffineTransform2D::Combine(transform, layerTransform_), true);
-      }
-    }
-
-    
-    void OpenGLColorTextureRenderer::Update(const ISceneLayer& layer)
-    {
-      // Should never happen (no revisions in color textures)
-      LoadTexture(dynamic_cast<const ColorTextureSceneLayer&>(layer));
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLColorTextureRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OpenGLColorTextureProgram.h"
-#include "CompositorHelper.h"
-#include "../ColorTextureSceneLayer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLColorTextureRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      OpenGL::IOpenGLContext&               context_;
-      OpenGLColorTextureProgram&            program_;
-      std::unique_ptr<OpenGL::OpenGLTexture>  texture_;
-      AffineTransform2D                     layerTransform_;
-
-      void LoadTexture(const ColorTextureSceneLayer& layer);
-
-    public:
-      OpenGLColorTextureRenderer(OpenGL::IOpenGLContext& context,
-                                 OpenGLColorTextureProgram& program,
-                                 const ColorTextureSceneLayer& layer);
-
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight);
-
-      virtual void Update(const ISceneLayer& layer);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLFloatTextureProgram.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLFloatTextureProgram.h"
-#include "OpenGLShaderVersionDirective.h"
-
-#include <OrthancException.h>
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-
-
-static const char* FRAGMENT_SHADER = 
-  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
-  "uniform float u_offset;                           \n"
-  "uniform float u_slope;                            \n"
-  "uniform float u_windowCenter;                     \n"
-  "uniform float u_windowWidth;                      \n"
-  "uniform bool  u_invert;                           \n"
-  "uniform sampler2D u_texture;                      \n"
-  "varying vec2 v_texcoord;                          \n"
-  "void main()                                       \n"
-  "{                                                 \n"
-  "  vec4 t = texture2D(u_texture, v_texcoord);      \n"
-  "  float v = (t.r * 256.0 + t.g) * 256.0;          \n"
-  "  v = v * u_slope + u_offset;                     \n"  // (*)
-  "  float a = u_windowCenter - u_windowWidth / 2.0; \n"
-  "  float dy = 1.0 / u_windowWidth;                 \n"
-  "  if (v <= a)                                     \n"
-  "    v = 0.0;                                      \n"
-  "  else                                            \n"
-  "  {                                               \n"
-  "    v = (v - a) * dy;                             \n"
-  "    if (v >= 1.0)                                 \n"
-  "      v = 1.0;                                    \n"
-  "  }                                               \n"
-  "  if (u_invert)                                   \n"
-  "      v = 1.0 - v;                                \n"
-  "  gl_FragColor = vec4(v, v, v, 1);                \n"
-  "}";
-
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    OpenGLFloatTextureProgram::Data::Data(
-        OpenGL::IOpenGLContext& context
-      , const Orthanc::ImageAccessor& texture
-      , bool isLinearInterpolation) 
-      : texture_(context)
-      , offset_(0.0f)
-      , slope_(0.0f)
-    {
-      if (texture.GetFormat() != Orthanc::PixelFormat_Float32)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-      }
-
-      float minValue, maxValue;
-      Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue, maxValue, texture);
-
-      offset_ = minValue;
-
-      if (LinearAlgebra::IsCloseToZero(maxValue - minValue))
-      {
-        slope_ = 1;
-      }
-      else
-      {
-        slope_ = (maxValue - minValue) / 65536.0f;
-        assert(!LinearAlgebra::IsCloseToZero(slope_));
-      }
-
-      const unsigned int width = texture.GetWidth();
-      const unsigned int height = texture.GetHeight();
-
-      Orthanc::Image converted(Orthanc::PixelFormat_RGB24, width, height, true);
-
-      for (unsigned int y = 0; y < height; y++)
-      {
-        const float *p = reinterpret_cast<const float*>(texture.GetConstRow(y));
-        uint8_t *q = reinterpret_cast<uint8_t*>(converted.GetRow(y));
-
-        for (unsigned int x = 0; x < width; x++)
-        {
-          /**
-           * At (*), the floating-point "value" is reconstructed as
-           * "value = texture * slope + offset".
-           * <=> texture = (value - offset) / slope
-           **/
-
-          float texture = (*p - offset_) / slope_;
-          if (texture < 0)
-          {
-            texture = 0;
-          }
-          else if (texture >= 65535.0f)
-          {
-            texture = 65535.0f;
-          }
-
-          uint16_t t = static_cast<uint16_t>(texture);
-
-          q[0] = t / 256;  // red
-          q[1] = t % 256;  // green
-          q[2] = 0;        // blue is unused
-
-          p++;
-          q += 3;
-        }
-      }
-
-      texture_.Load(converted, isLinearInterpolation);
-    }
-
-    
-    OpenGLFloatTextureProgram::OpenGLFloatTextureProgram(OpenGL::IOpenGLContext&  context) 
-      : program_(context, FRAGMENT_SHADER)
-      , context_(context)
-    {
-    }
-
-
-    void OpenGLFloatTextureProgram::Apply(Data& data,
-                                          const AffineTransform2D& transform,
-                                          float windowCenter,
-                                          float windowWidth,
-                                          bool invert)
-    {
-      if (!context_.IsContextLost())
-      {
-        OpenGLTextureProgram::Execution execution(program_, data.GetTexture(), transform);
-
-        glUniform1f(execution.GetUniformLocation("u_slope"), data.GetSlope());
-        glUniform1f(execution.GetUniformLocation("u_offset"), data.GetOffset());
-        glUniform1f(execution.GetUniformLocation("u_windowCenter"), windowCenter);
-        glUniform1f(execution.GetUniformLocation("u_windowWidth"), windowWidth);
-        glUniform1f(execution.GetUniformLocation("u_invert"), invert);
-
-        execution.DrawTriangles();
-      }
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLFloatTextureProgram.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OpenGLTextureProgram.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLFloatTextureProgram : public boost::noncopyable
-    {
-    public:
-      class Data : public boost::noncopyable
-      {
-      private:
-        OpenGL::OpenGLTexture  texture_;
-        float                  offset_;
-        float                  slope_;
-
-      public:
-        Data(OpenGL::IOpenGLContext& context, const Orthanc::ImageAccessor& texture,
-             bool isLinearInterpolation);
-
-        float GetOffset() const
-        {
-          return offset_;
-        }
-
-        float GetSlope() const
-        {
-          return slope_;
-        }
-
-        OpenGL::OpenGLTexture& GetTexture()
-        {
-          return texture_;
-        }
-      };
-
-    public:
-      OpenGLFloatTextureProgram(OpenGL::IOpenGLContext&  context);
-
-      void Apply(Data& data,
-                 const AffineTransform2D& transform,
-                 float windowCenter,
-                 float windowWidth,
-                 bool  invert);
-    private:
-      OpenGLTextureProgram  program_;
-      OpenGL::IOpenGLContext& context_;
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLFloatTextureRenderer.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void OpenGLFloatTextureRenderer::UpdateInternal(const FloatTextureSceneLayer& layer,
-                                                    bool loadTexture)
-    {
-      if (!context_.IsContextLost())
-      {
-        if (loadTexture)
-        {
-          if (layer.IsApplyLog())
-          {
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-          }
-          
-          context_.MakeCurrent();
-          texture_.reset(new OpenGLFloatTextureProgram::Data(
-            context_, layer.GetTexture(), layer.IsLinearInterpolation()));
-        }
-
-        layerTransform_ = layer.GetTransform();
-        layer.GetWindowing(windowCenter_, windowWidth_);
-        invert_ = layer.IsInverted();
-      }
-    }
-
-
-    OpenGLFloatTextureRenderer::OpenGLFloatTextureRenderer(OpenGL::IOpenGLContext& context,
-                                                           OpenGLFloatTextureProgram& program,
-                                                           const FloatTextureSceneLayer& layer) :
-      context_(context),
-      program_(program)
-    {
-      UpdateInternal(layer, true);
-    }
-
-
-    void OpenGLFloatTextureRenderer::Render(const AffineTransform2D& transform,
-                                            unsigned int canvasWidth,
-                                            unsigned int canvasHeight)
-    {
-      if (!context_.IsContextLost() && texture_.get() != NULL)
-      {
-        program_.Apply(*texture_, AffineTransform2D::Combine(transform, layerTransform_), 
-                       windowCenter_, windowWidth_, invert_);
-      }
-    }
-
-
-    void OpenGLFloatTextureRenderer::Update(const ISceneLayer& layer)
-    {
-      UpdateInternal(dynamic_cast<const FloatTextureSceneLayer&>(layer), false);
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLFloatTextureRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "CompositorHelper.h"
-#include "OpenGLFloatTextureProgram.h"
-#include "../FloatTextureSceneLayer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLFloatTextureRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      OpenGL::IOpenGLContext&                         context_;
-      OpenGLFloatTextureProgram&                      program_;
-      std::unique_ptr<OpenGLFloatTextureProgram::Data>  texture_;
-      AffineTransform2D                               layerTransform_;
-      float                                           windowCenter_;
-      float                                           windowWidth_;
-      bool                                            invert_;
-
-      void UpdateInternal(const FloatTextureSceneLayer& layer,
-                          bool loadTexture);
-
-    public:
-      OpenGLFloatTextureRenderer(OpenGL::IOpenGLContext& context,
-                                 OpenGLFloatTextureProgram& program,
-                                 const FloatTextureSceneLayer& layer);
-
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight);
-
-      virtual void Update(const ISceneLayer& layer);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLInfoPanelRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLInfoPanelRenderer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void OpenGLInfoPanelRenderer::LoadTexture(const InfoPanelSceneLayer& layer)
-    {
-      if (!context_.IsContextLost())
-      {
-        context_.MakeCurrent();
-        texture_.reset(new OpenGL::OpenGLTexture(context_));
-        texture_->Load(layer.GetTexture(), layer.IsLinearInterpolation());
-        applySceneRotation_ = layer.ShouldApplySceneRotation();
-        anchor_ = layer.GetAnchor();
-      }
-    }
-
-    OpenGLInfoPanelRenderer::OpenGLInfoPanelRenderer(OpenGL::IOpenGLContext& context,
-                                                     OpenGLColorTextureProgram& program,
-                                                     const InfoPanelSceneLayer& layer) :
-      context_(context),
-      program_(program),
-      anchor_(BitmapAnchor_TopLeft),
-      applySceneRotation_(false)
-    {
-      LoadTexture(layer);
-    }
-    
-    void OpenGLInfoPanelRenderer::Render(const AffineTransform2D& transform,
-                                         unsigned int canvasWidth,
-                                         unsigned int canvasHeight)
-    {
-      if (!context_.IsContextLost() && texture_.get() != NULL)
-      {
-        int dx = 0, dy = 0;
-        InfoPanelSceneLayer::ComputeAnchorLocation(
-          dx, dy, anchor_, texture_->GetWidth(), texture_->GetHeight(),
-          canvasWidth, canvasHeight);
-
-        // The position of this type of layer is layer: Ignore the
-        // "transform" coming from the scene
-        AffineTransform2D actualTransform = 
-          AffineTransform2D::CreateOffset(dx, dy);
-
-        if (applySceneRotation_)
-        {
-          // the transformation is as follows:
-          // - originally, the image is aligned so that its top left corner
-          // is at 0,0
-          // - first, we translate the image by -w/2,-h/2 
-          // - then we rotate it, so that the next rotation will make the  
-          //   image rotate around its center.
-          // - then, we translate the image by +w/2,+h/2 to put it
-          //   back in place
-          // - the fourth and last transform is the one that brings the 
-          //   image to its desired anchored location.
-
-          int32_t halfWidth = 
-            static_cast<int32_t>(0.5 * texture_->GetWidth());
-
-          int32_t halfHeight=
-            static_cast<int32_t>(0.5 * texture_->GetHeight());
-
-          AffineTransform2D translation1 =
-            AffineTransform2D::CreateOffset(-halfWidth, -halfHeight);
-
-          const Matrix& sceneTransformM = transform.GetHomogeneousMatrix();
-          Matrix r;
-          Matrix q;
-          LinearAlgebra::RQDecomposition3x3(r, q, sceneTransformM);
-
-          // counterintuitively, q is the rotation and r is the upper
-          // triangular
-          AffineTransform2D rotation(q);
-
-          AffineTransform2D translation2 =
-            AffineTransform2D::CreateOffset(halfWidth, halfHeight);
-
-          // please note that the last argument is the 1st applied 
-          // transformation (rationale: if arguments are a, b and c, then
-          // the resulting matrix is a*b*c:
-          // x2 = (a*b*c)*x1 = (a*(b*(c*x1))) (you can see that the result
-          // of c*x1 is transformed by b, and the result of b*c*x1 is trans-
-          // formed by a)
-          actualTransform = AffineTransform2D::Combine(actualTransform,
-                                                       translation2,
-                                                       rotation,
-                                                       translation1);
-        }
-
-        program_.Apply(*texture_, actualTransform, true);
-      }
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLInfoPanelRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "CompositorHelper.h"
-#include "OpenGLColorTextureProgram.h"
-#include "../InfoPanelSceneLayer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLInfoPanelRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      OpenGL::IOpenGLContext&               context_;
-      OpenGLColorTextureProgram&            program_;
-      std::unique_ptr<OpenGL::OpenGLTexture>  texture_;
-      BitmapAnchor                          anchor_;
-      bool                                  applySceneRotation_;
-
-      void LoadTexture(const InfoPanelSceneLayer& layer);
-
-    public:
-      OpenGLInfoPanelRenderer(OpenGL::IOpenGLContext& context,
-                              OpenGLColorTextureProgram& program,
-                              const InfoPanelSceneLayer& layer);
-
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight);
-
-      virtual void Update(const ISceneLayer& layer)
-      {
-        LoadTexture(dynamic_cast<const InfoPanelSceneLayer&>(layer));
-      }
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLLinesProgram.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,511 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLLinesProgram.h"
-#include "OpenGLShaderVersionDirective.h"
-
-#include <OrthancException.h>
-
-
-static const unsigned int COMPONENTS_POSITION = 3;
-static const unsigned int COMPONENTS_COLOR = 3;
-static const unsigned int COMPONENTS_MITER = 2;
-
-
-static const char* VERTEX_SHADER = 
-  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
-  "attribute vec2 a_miter_direction; \n"
-  "attribute vec4 a_position;        \n"
-  "attribute vec3 a_color;           \n"
-  "uniform float u_thickness;        \n"
-  "uniform mat4 u_matrix;            \n"
-  "varying float v_distance;         \n"
-  "varying vec3 v_color;             \n"
-  "void main()                       \n"
-  "{                                 \n"
-  "  v_distance = a_position.z;      \n"
-  "  v_color = a_color;              \n"
-  "  gl_Position = u_matrix * vec4(a_position.xy + a_position.z * a_miter_direction * u_thickness, 0, 1); \n"
-  "}";
-
-
-static const char* FRAGMENT_SHADER = 
-  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
-  "uniform bool u_antialiasing;           \n"
-  "uniform float u_antialiasing_start;    \n"
-  "varying float v_distance;              \n"   // Distance of the point to the segment
-  "varying vec3 v_color;                  \n"
-  "void main()                            \n"
-  "{                                      \n"
-  "  float d = abs(v_distance);           \n"
-  "  if (!u_antialiasing ||               \n"
-  "      d <= u_antialiasing_start)       \n"
-  "    gl_FragColor = vec4(v_color, 1);   \n"
-  "  else if (d >= 1.0)                   \n"
-  "    gl_FragColor = vec4(0, 0, 0, 0);   \n"
-  "  else                                 \n"
-  "  {                                    \n"
-  "    float alpha = 1.0 - smoothstep(u_antialiasing_start, 1.0, d); \n"
-  "    gl_FragColor = vec4(v_color * alpha, alpha); \n"
-  "  }                                    \n"
-  "}";
-
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLLinesProgram::Data::Segment
-    {
-    private:
-      bool    isEmpty_;
-      double  x1_;
-      double  y1_;
-      double  x2_;
-      double  y2_;
-      double  miterX1_;
-      double  miterY1_;
-      double  miterX2_;
-      double  miterY2_;
-
-      Vector  lineAbove_;  // In homogeneous coordinates (size = 3)
-      Vector  lineBelow_;
-
-    public:
-      Segment(const PolylineSceneLayer::Chain& chain,
-              size_t index1,
-              size_t index2) :
-        isEmpty_(false)
-      {
-        if (index1 >= chain.size() ||
-            index2 >= chain.size())
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-        else
-        {
-          const ScenePoint2D& p = chain[index1];
-          const ScenePoint2D& q = chain[index2];
-        
-          x1_ = p.GetX();
-          y1_ = p.GetY();
-          x2_ = q.GetX();
-          y2_ = q.GetY();
-
-          const double dx = x2_ - x1_;
-          const double dy = y2_ - y1_;
-          const double norm = sqrt(dx * dx + dy * dy);
-
-          if (LinearAlgebra::IsCloseToZero(norm))
-          {
-            isEmpty_ = true;
-          }
-          else
-          {
-            isEmpty_ = false;
-            const double normalX = -dy / norm;
-            const double normalY = dx / norm;
-
-            miterX1_ = normalX;
-            miterY1_ = normalY;
-            miterX2_ = normalX;
-            miterY2_ = normalY;
-
-            Vector a = LinearAlgebra::CreateVector(x1_ + normalX, y1_ + normalY, 1);
-            Vector b = LinearAlgebra::CreateVector(x2_ + normalX, y2_ + normalY, 1);
-            LinearAlgebra::CrossProduct(lineAbove_, a, b);
-
-            a = LinearAlgebra::CreateVector(x1_ - normalX, y1_ - normalY, 1);
-            b = LinearAlgebra::CreateVector(x2_ - normalX, y2_ - normalY, 1);
-            LinearAlgebra::CrossProduct(lineBelow_, a, b);
-          }
-        }
-      }
-
-      bool IsEmpty() const
-      {
-        return isEmpty_;
-      }
-
-      static double ComputeSignedArea(double x1,
-                                      double y1,
-                                      double x2,
-                                      double y2,
-                                      double x3,
-                                      double y3)
-      {
-        // This computes the signed area of a 2D triangle. This
-        // formula is e.g. used in the sorting algorithm of Graham's
-        // scan to compute the convex hull.
-        // https://en.wikipedia.org/wiki/Graham_scan
-        return (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1);
-      }
-
-      static void CreateMiter(Segment& left,
-                              Segment& right)
-      {
-        if (!left.IsEmpty() &&
-            !right.IsEmpty())
-        {
-          Vector above, below;
-          LinearAlgebra::CrossProduct(above, left.lineAbove_, right.lineAbove_);
-          LinearAlgebra::CrossProduct(below, left.lineBelow_, right.lineBelow_);
-
-          if (!LinearAlgebra::IsCloseToZero(above[2]) &&
-              !LinearAlgebra::IsCloseToZero(below[2]))
-          {
-            // Back to inhomogeneous 2D coordinates
-            above /= above[2];
-            below /= below[2];
-
-            // Check whether "above" and "below" intersection points
-            // are on the half-plane defined by the endpoints of the
-            // two segments. This is an indicator of whether the angle
-            // is too acute.
-            double s1 = ComputeSignedArea(left.x1_, left.y1_,
-                                          above[0], above[1],
-                                          right.x2_, right.y2_);
-            double s2 = ComputeSignedArea(left.x1_, left.y1_,
-                                          below[0], below[1],
-                                          right.x2_, right.y2_);
-            
-            // The two signed areas must have the same sign
-            if (s1 * s2 >= 0)
-            {
-              left.miterX2_ = above[0] - left.x2_;
-              left.miterY2_ = above[1] - left.y2_;
-
-              right.miterX1_ = left.miterX2_;
-              right.miterY1_ = left.miterY2_;
-            }
-          }
-        }
-      }
-
-      void AddTriangles(std::vector<float>& coords,
-                        std::vector<float>& miterDirections,
-                        std::vector<float>& colors,
-                        const Color& color)
-      {
-        if (isEmpty_)
-        {
-          LOG(ERROR) << "OpenGLLinesProgram -- AddTriangles: (isEmpty_)";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-        }
-
-        // First triangle
-        coords.push_back(static_cast<float>(x1_));
-        coords.push_back(static_cast<float>(y1_));
-        coords.push_back(static_cast<float>(1));
-        coords.push_back(static_cast<float>(x2_));
-        coords.push_back(static_cast<float>(y2_));
-        coords.push_back(static_cast<float>(-1));
-        coords.push_back(static_cast<float>(x2_));
-        coords.push_back(static_cast<float>(y2_));
-        coords.push_back(static_cast<float>(1));
-
-        miterDirections.push_back(static_cast<float>(miterX1_));
-        miterDirections.push_back(static_cast<float>(miterY1_));
-        miterDirections.push_back(static_cast<float>(miterX2_));
-        miterDirections.push_back(static_cast<float>(miterY2_));
-        miterDirections.push_back(static_cast<float>(miterX2_));
-        miterDirections.push_back(static_cast<float>(miterY2_));
-        
-        // Second triangle
-        coords.push_back(static_cast<float>(x1_));
-        coords.push_back(static_cast<float>(y1_));
-        coords.push_back(static_cast<float>(1));
-        coords.push_back(static_cast<float>(x1_));
-        coords.push_back(static_cast<float>(y1_));
-        coords.push_back(static_cast<float>(-1));
-        coords.push_back(static_cast<float>(x2_));
-        coords.push_back(static_cast<float>(y2_));
-        coords.push_back(static_cast<float>(-1));
-
-        miterDirections.push_back(static_cast<float>(miterX1_));
-        miterDirections.push_back(static_cast<float>(miterY1_));
-        miterDirections.push_back(static_cast<float>(miterX1_));
-        miterDirections.push_back(static_cast<float>(miterY1_));
-        miterDirections.push_back(static_cast<float>(miterX2_));
-        miterDirections.push_back(static_cast<float>(miterY2_));
-
-        // Add the colors of the 2 triangles (leading to 2 * 3 values)
-        for (unsigned int i = 0; i < 6; i++)
-        {
-          colors.push_back(color.GetRedAsFloat());
-          colors.push_back(color.GetGreenAsFloat());
-          colors.push_back(color.GetBlueAsFloat());
-        }
-      }        
-    };
-
-
-    OpenGLLinesProgram::Data::Data(OpenGL::IOpenGLContext& context,
-                                   const PolylineSceneLayer& layer) :
-      context_(context),
-      verticesCount_(0),
-      thickness_(static_cast<float>(layer.GetThickness()))
-    {
-      if (!context_.IsContextLost())
-      {
-        // High-level reference:
-        // https://mattdesl.svbtle.com/drawing-lines-is-hard
-        // https://forum.libcinder.org/topic/smooth-thick-lines-using-geometry-shader
-
-        size_t countVertices = 0;
-        for (size_t i = 0; i < layer.GetChainsCount(); i++)
-        {
-          size_t countSegments = layer.GetChain(i).size() - 1;
-
-          if (layer.IsClosedChain(i))
-          {
-            countSegments++;
-          }
-
-          // Each segment is made of 2 triangles. One triangle is
-          // defined by 3 points in 2D => 6 vertices per segment.
-          countVertices += countSegments * 2 * 3;
-        }
-
-        std::vector<float>  coords, colors, miterDirections;
-        coords.reserve(countVertices * COMPONENTS_POSITION);
-        colors.reserve(countVertices * COMPONENTS_COLOR);
-        miterDirections.reserve(countVertices * COMPONENTS_MITER);
-
-        for (size_t i = 0; i < layer.GetChainsCount(); i++)
-        {
-          const PolylineSceneLayer::Chain& chain = layer.GetChain(i);
-
-          if (chain.size() > 1)
-          {
-            std::vector<Segment> segments;
-            for (size_t j = 1; j < chain.size(); j++)
-            {
-              segments.push_back(Segment(chain, j - 1, j));
-            }
-
-            if (layer.IsClosedChain(i))
-            {
-              segments.push_back(Segment(chain, chain.size() - 1, 0));
-            }
-
-            // Try and create nice miters
-            for (size_t j = 1; j < segments.size(); j++)
-            {
-              Segment::CreateMiter(segments[j - 1], segments[j]);
-            }
-
-            if (layer.IsClosedChain(i))
-            {
-              Segment::CreateMiter(segments.back(), segments.front());
-            }
-
-            for (size_t j = 0; j < segments.size(); j++)
-            {
-              if (!segments[j].IsEmpty())
-              {
-                segments[j].AddTriangles(coords, miterDirections, colors, layer.GetColor(i));
-              }
-            }
-          }
-        }
-
-        assert(coords.size() == colors.size());
-
-        if (!coords.empty())
-        {
-          verticesCount_ = coords.size() / COMPONENTS_POSITION;
-
-          context_.MakeCurrent();
-          glGenBuffers(3, buffers_);
-
-          glBindBuffer(GL_ARRAY_BUFFER, buffers_[0]);
-          glBufferData(GL_ARRAY_BUFFER, sizeof(float) * coords.size(), &coords[0], GL_STATIC_DRAW);
-
-          glBindBuffer(GL_ARRAY_BUFFER, buffers_[1]);
-          glBufferData(GL_ARRAY_BUFFER, sizeof(float) * miterDirections.size(), &miterDirections[0], GL_STATIC_DRAW);
-
-          glBindBuffer(GL_ARRAY_BUFFER, buffers_[2]);
-          glBufferData(GL_ARRAY_BUFFER, sizeof(float) * colors.size(), &colors[0], GL_STATIC_DRAW);
-        }
-      }
-    }
-
-    
-    OpenGLLinesProgram::Data::~Data()
-    {
-      if (!context_.IsContextLost() && !IsEmpty())
-      {
-        context_.MakeCurrent();
-        ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteBuffers");
-        glDeleteBuffers(3, buffers_);
-      }
-    }
-
-    GLuint OpenGLLinesProgram::Data::GetVerticesBuffer() const
-    {
-      if (IsEmpty())
-      {
-        LOG(ERROR) << "OpenGLLinesProgram::Data::GetVerticesBuffer(): (IsEmpty())";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      else
-      {
-        return buffers_[0];
-      }
-    }
-
-    
-    GLuint OpenGLLinesProgram::Data::GetMiterDirectionsBuffer() const
-    {
-      if (IsEmpty())
-      {
-        LOG(ERROR) << "OpenGLLinesProgram::Data::GetMiterDirectionsBuffer(): (IsEmpty())";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      else
-      {
-        return buffers_[1];
-      }
-    }
-
-
-    GLuint OpenGLLinesProgram::Data::GetColorsBuffer() const
-    {
-      if (IsEmpty())
-      {
-        LOG(ERROR) << "OpenGLLinesProgram::Data::GetColorsBuffer(): (IsEmpty())";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      else
-      {
-        return buffers_[2];
-      }
-    }
-
-
-    OpenGLLinesProgram::OpenGLLinesProgram(OpenGL::IOpenGLContext&  context) :
-      context_(context)
-    {
-      if (!context_.IsContextLost())
-      {
-        context_.MakeCurrent();
-        program_.reset(new OpenGL::OpenGLProgram(context_));
-        program_->CompileShaders(VERTEX_SHADER, FRAGMENT_SHADER);
-      }
-    }
-
-    void OpenGLLinesProgram::Apply(const Data& data,
-                                   const AffineTransform2D& transform,
-                                   bool antialiasing,
-                                   bool scaleIndependantThickness)
-    {
-      if (!context_.IsContextLost() && !data.IsEmpty())
-      {
-        context_.MakeCurrent();
-        program_->Use();
-
-        GLint locationPosition = program_->GetAttributeLocation("a_position");
-        GLint locationMiterDirection = program_->GetAttributeLocation("a_miter_direction");
-        GLint locationColor = program_->GetAttributeLocation("a_color");
-
-        float m[16];
-        transform.ConvertToOpenGLMatrix(m, context_.GetCanvasWidth(), context_.GetCanvasHeight());
-
-        glUniformMatrix4fv(program_->GetUniformLocation("u_matrix"), 1, GL_FALSE, m);
-
-        glBindBuffer(GL_ARRAY_BUFFER, data.GetVerticesBuffer());
-        glEnableVertexAttribArray(locationPosition);
-        glVertexAttribPointer(locationPosition, COMPONENTS_POSITION, GL_FLOAT, GL_FALSE, 0, 0);
-
-        glBindBuffer(GL_ARRAY_BUFFER, data.GetMiterDirectionsBuffer());
-        glEnableVertexAttribArray(locationMiterDirection);
-        glVertexAttribPointer(locationMiterDirection, COMPONENTS_MITER, GL_FLOAT, GL_FALSE, 0, 0);
-
-        glBindBuffer(GL_ARRAY_BUFFER, data.GetColorsBuffer());
-        glEnableVertexAttribArray(locationColor);
-        glVertexAttribPointer(locationColor, COMPONENTS_COLOR, GL_FLOAT, GL_FALSE, 0, 0);
-
-        glUniform1i(program_->GetUniformLocation("u_antialiasing"), (antialiasing ? 1 : 0));
-
-        const double zoom = transform.ComputeZoom();
-        const double thickness = data.GetThickness() / 2.0;
-        const double aliasingBorder = 2.0;  // Border for antialiasing ramp, in pixels
-        assert(aliasingBorder > 0);  // Prevent division by zero with "t1"
-              
-        if (scaleIndependantThickness)
-        {
-          if (antialiasing)
-          {
-            double t1 = std::max(thickness, aliasingBorder);
-            double t0 = std::max(0.0, thickness - aliasingBorder);
-            
-            glUniform1f(program_->GetUniformLocation("u_thickness"), 
-              static_cast<GLfloat>(t1 / zoom));
-            glUniform1f(program_->GetUniformLocation("u_antialiasing_start"), 
-              static_cast<GLfloat>(t0 / t1));
-          }
-          else
-          {
-            glUniform1f(program_->GetUniformLocation("u_thickness"), 
-              static_cast<GLfloat>(thickness / zoom));
-          }
-        }
-        else
-        {
-          if (antialiasing)
-          {
-            double t1 = std::max(thickness, aliasingBorder / zoom);
-            double t0 = std::max(0.0, thickness - aliasingBorder / zoom);
-
-            glUniform1f(program_->GetUniformLocation("u_thickness"), 
-              static_cast<GLfloat>(t1));
-            glUniform1f(program_->GetUniformLocation("u_antialiasing_start"), 
-              static_cast<GLfloat>(t0 / t1));
-          }
-          else
-          {
-            glUniform1f(program_->GetUniformLocation("u_thickness"), 
-              static_cast<GLfloat>(thickness));
-          }
-        }
-
-        if (antialiasing)
-        {
-          glEnable(GL_BLEND);
-          glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
-          glDrawArrays(GL_TRIANGLES, 0, 
-            static_cast<GLsizei>(data.GetVerticesCount()));
-          glDisable(GL_BLEND);
-        }
-        else
-        {
-          glDrawArrays(GL_TRIANGLES, 0, 
-            static_cast<GLsizei>(data.GetVerticesCount()));
-        }
-
-        glDisableVertexAttribArray(locationPosition);
-        glDisableVertexAttribArray(locationMiterDirection);
-        glDisableVertexAttribArray(locationColor);
-      }
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLLinesProgram.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../OpenGL/IOpenGLContext.h"
-#include "../../OpenGL/OpenGLProgram.h"
-#include "../../Toolbox/AffineTransform2D.h"
-#include "../PolylineSceneLayer.h"
-
-#include <Compatibility.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLLinesProgram : public boost::noncopyable
-    {
-    public:
-      class Data : public boost::noncopyable
-      {
-      private:
-        class Segment;
-        
-        OpenGL::IOpenGLContext&  context_;
-        GLuint                   buffers_[3];
-        size_t                   verticesCount_;
-        float                    thickness_;
-
-      public:
-        Data(OpenGL::IOpenGLContext& context,
-             const PolylineSceneLayer& layer);
-        
-        ~Data();
-
-        bool IsEmpty() const
-        {
-          return verticesCount_ == 0;
-        }
-
-        const size_t GetVerticesCount() const
-        {
-          return verticesCount_;
-        }
-
-        GLuint GetVerticesBuffer() const;
-
-        GLuint GetMiterDirectionsBuffer() const;
-
-        GLuint GetColorsBuffer() const;
-
-        float GetThickness() const
-        {
-          return thickness_;
-        }
-      };
-      
-    private:
-      OpenGL::IOpenGLContext&               context_;
-      std::unique_ptr<OpenGL::OpenGLProgram>  program_;
-
-    public:
-      OpenGLLinesProgram(OpenGL::IOpenGLContext&  context);
-
-      void Apply(const Data& data,
-                 const AffineTransform2D& transform,
-                 bool antialiasing,
-                 bool scaleIndependantThickness);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLLookupTableTextureRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLLookupTableTextureRenderer.h"
-
-#include "../../Toolbox/ImageToolbox.h"
-
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void OpenGLLookupTableTextureRenderer::LoadTexture(
-      const LookupTableTextureSceneLayer& layer)
-    {
-      if (!context_.IsContextLost())
-      {
-        const Orthanc::ImageAccessor& source = layer.GetTexture();
-        const unsigned int width = source.GetWidth();
-        const unsigned int height = source.GetHeight();
-
-        if (texture_.get() == NULL ||
-            texture_->GetWidth() != width ||
-            texture_->GetHeight() != height)
-        {
-          texture_.reset(new Orthanc::Image(Orthanc::PixelFormat_RGBA32, width, height, false));
-        }
-
-        layer.Render(*texture_);
-
-        context_.MakeCurrent();
-        glTexture_.reset(new OpenGL::OpenGLTexture(context_));
-        glTexture_->Load(*texture_, layer.IsLinearInterpolation());
-        layerTransform_ = layer.GetTransform();
-      }
-    }
-
-    OpenGLLookupTableTextureRenderer::OpenGLLookupTableTextureRenderer(
-      OpenGL::IOpenGLContext&                 context,
-      OpenGLColorTextureProgram&              program,
-      const LookupTableTextureSceneLayer&     layer)
-      : context_(context)
-      , program_(program)
-    {
-      LoadTexture(layer);
-    }
-
-    
-    void OpenGLLookupTableTextureRenderer::Render(const AffineTransform2D& transform,
-                                                  unsigned int canvasWidth,
-                                                  unsigned int canvasHeight)
-    {
-      if (!context_.IsContextLost() && glTexture_.get() != NULL)
-      {
-        program_.Apply(
-          *glTexture_, 
-          AffineTransform2D::Combine(transform, layerTransform_), 
-          true);
-      }
-    }
-
-    
-    void OpenGLLookupTableTextureRenderer::Update(const ISceneLayer& layer)
-    {
-      // Should never happen (no revisions in color textures)
-      LoadTexture(dynamic_cast<const LookupTableTextureSceneLayer&>(layer));
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLLookupTableTextureRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OpenGLColorTextureProgram.h"
-#include "CompositorHelper.h"
-#include "../LookupTableTextureSceneLayer.h"
-
-#include <Images/Image.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLLookupTableTextureRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      OpenGL::IOpenGLContext&                context_;
-      OpenGLColorTextureProgram&             program_;
-      std::unique_ptr<OpenGL::OpenGLTexture>   glTexture_;
-      std::unique_ptr<Orthanc::Image>          texture_;
-      AffineTransform2D                      layerTransform_;
-
-      void LoadTexture(const LookupTableTextureSceneLayer& layer);
-
-    public:
-      OpenGLLookupTableTextureRenderer(
-        OpenGL::IOpenGLContext&             context,
-        OpenGLColorTextureProgram&          program,
-        const LookupTableTextureSceneLayer& layer);
-
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight);
-
-      virtual void Update(const ISceneLayer& layer);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLShaderVersionDirective.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if ORTHANC_ENABLE_WASM == 1
-// https://emscripten.org/docs/optimizing/Optimizing-WebGL.html
-#  define ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE "precision mediump float;\n"
-#else
-#  define ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE "#version 110\n"
-#endif
--- a/Framework/Scene2D/Internals/OpenGLTextProgram.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,229 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLTextProgram.h"
-#include "OpenGLShaderVersionDirective.h"
-
-#include "../../Fonts/OpenGLTextCoordinates.h"
-
-#include <OrthancException.h>
-
-
-static const unsigned int COMPONENTS = 2;
-
-static const char* VERTEX_SHADER = 
-  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
-  "attribute vec2 a_texcoord;             \n"
-  "attribute vec4 a_position;             \n"
-  "uniform mat4 u_matrix;                 \n"
-  "varying vec2 v_texcoord;               \n"
-  "void main()                            \n"
-  "{                                      \n"
-  "  gl_Position = u_matrix * a_position; \n"
-  "  v_texcoord = a_texcoord;             \n"
-  "}";
-
-static const char* FRAGMENT_SHADER = 
-  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
-  "uniform sampler2D u_texture;                  \n"
-  "uniform vec3 u_color;                         \n"
-  "varying vec2 v_texcoord;                      \n"
-  "void main()                                   \n"
-  "{                                             \n"
-  "  vec4 v = texture2D(u_texture, v_texcoord);  \n"
-  "  gl_FragColor = vec4(u_color * v.w, v.w);    \n"   // Premultiplied alpha
-  "}";
-
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    OpenGLTextProgram::OpenGLTextProgram(OpenGL::IOpenGLContext&  context) :
-      context_(context)
-    {
-      if (!context_.IsContextLost())
-      {
-        context_.MakeCurrent();
-
-        program_.reset(new OpenGL::OpenGLProgram(context_));
-        program_->CompileShaders(VERTEX_SHADER, FRAGMENT_SHADER);
-
-        positionLocation_ = program_->GetAttributeLocation("a_position");
-        textureLocation_ = program_->GetAttributeLocation("a_texcoord");
-      }
-    }
-
-
-    OpenGLTextProgram::Data::Data(OpenGL::IOpenGLContext& context,
-                                  const GlyphTextureAlphabet& alphabet,
-                                  const TextSceneLayer& layer) :
-      context_(context),
-      red_(layer.GetColor().GetRedAsFloat()),
-      green_(layer.GetColor().GetGreenAsFloat()),
-      blue_(layer.GetColor().GetBlueAsFloat()),
-      x_(layer.GetX()),
-      y_(layer.GetY()),
-      border_(layer.GetBorder()),
-      anchor_(layer.GetAnchor())
-    {
-      OpenGL::OpenGLTextCoordinates coordinates(alphabet, layer.GetText());
-      textWidth_ = coordinates.GetTextWidth();
-      textHeight_ = coordinates.GetTextHeight();
-
-      if (coordinates.IsEmpty())
-      {
-        coordinatesCount_ = 0;
-      }
-      else
-      {
-        coordinatesCount_ = coordinates.GetRenderingCoords().size();
-
-        if (!context_.IsContextLost())
-        {
-          context_.MakeCurrent();
-          glGenBuffers(2, buffers_);
-          ORTHANC_OPENGL_CHECK("glGenBuffers");
-
-          glBindBuffer(GL_ARRAY_BUFFER, buffers_[0]);
-          ORTHANC_OPENGL_CHECK("glBindBuffer");
-          glBufferData(GL_ARRAY_BUFFER, sizeof(float) * coordinatesCount_,
-            &coordinates.GetRenderingCoords()[0], GL_STATIC_DRAW);
-          ORTHANC_OPENGL_CHECK("glBufferData");
-
-          glBindBuffer(GL_ARRAY_BUFFER, buffers_[1]);
-          ORTHANC_OPENGL_CHECK("glBindBuffer");
-          glBufferData(GL_ARRAY_BUFFER, sizeof(float) * coordinatesCount_,
-            &coordinates.GetTextureCoords()[0], GL_STATIC_DRAW);
-          ORTHANC_OPENGL_CHECK("glBufferData");
-        }
-      }
-    }
-
-    
-    OpenGLTextProgram::Data::~Data()
-    {
-      if (!context_.IsContextLost() && !IsEmpty())
-      {
-        try
-        {
-          context_.MakeCurrent();
-          ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteBuffers");
-          glDeleteBuffers(2, buffers_);
-          ORTHANC_OPENGL_CHECK("glDeleteBuffers");
-        }
-        catch (const Orthanc::OrthancException& e)
-        {
-          if (e.HasDetails())
-          {
-            LOG(ERROR) << "OrthancException in ~Data: " << e.What() << " Details: " << e.GetDetails();
-          }
-          else
-          {
-            LOG(ERROR) << "OrthancException in ~Data: " << e.What();
-          }
-        }
-        catch (const std::exception& e)
-        {
-          LOG(ERROR) << "std::exception in ~Data: " << e.what();
-        }
-        catch (...)
-        {
-          LOG(ERROR) << "Unknown exception in ~Data";
-        }
-      }
-    }
-
-
-    GLuint OpenGLTextProgram::Data::GetSceneLocationsBuffer() const
-    {
-      if (IsEmpty())
-      {
-        LOG(ERROR) << "OpenGLTextProgram::Data::GetSceneLocationsBuffer(): (IsEmpty())";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      else
-      {
-        return buffers_[0];
-      }
-    }
-
-    GLuint OpenGLTextProgram::Data::GetTextureLocationsBuffer() const
-    {
-      if (IsEmpty())
-      {
-        LOG(ERROR) << "OpenGLTextProgram::Data::GetTextureLocationsBuffer(): (IsEmpty())";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      else
-      {
-        return buffers_[1];
-      }
-    }
-
-    void OpenGLTextProgram::Apply(OpenGL::OpenGLTexture& fontTexture,
-                                  const Data& data,
-                                  const AffineTransform2D& transform)
-    {
-      if (!context_.IsContextLost() && !data.IsEmpty())
-      {
-        context_.MakeCurrent();
-        program_->Use();
-
-        double dx, dy;  // In pixels
-        ComputeAnchorTranslation(dx, dy, data.GetAnchor(), 
-                                 data.GetTextWidth(), data.GetTextHeight(),
-                                 static_cast<unsigned int>(data.GetBorder()));
-      
-        double x = data.GetX();
-        double y = data.GetY();
-        transform.Apply(x, y);
-
-        const AffineTransform2D t = AffineTransform2D::CreateOffset(x + dx, y + dy);
-
-        float m[16];
-        t.ConvertToOpenGLMatrix(m, context_.GetCanvasWidth(), context_.GetCanvasHeight());
-
-        fontTexture.Bind(program_->GetUniformLocation("u_texture"));
-        glUniformMatrix4fv(program_->GetUniformLocation("u_matrix"), 1, GL_FALSE, m);
-        glUniform3f(program_->GetUniformLocation("u_color"), 
-                    data.GetRed(), data.GetGreen(), data.GetBlue());
-
-        glBindBuffer(GL_ARRAY_BUFFER, data.GetSceneLocationsBuffer());
-        glEnableVertexAttribArray(positionLocation_);
-        glVertexAttribPointer(positionLocation_, COMPONENTS, GL_FLOAT, GL_FALSE, 0, 0);
-
-        glBindBuffer(GL_ARRAY_BUFFER, data.GetTextureLocationsBuffer());
-        glEnableVertexAttribArray(textureLocation_);
-        glVertexAttribPointer(textureLocation_, COMPONENTS, GL_FLOAT, GL_FALSE, 0, 0);
-
-        glEnable(GL_BLEND);
-        glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
-        glDrawArrays(GL_TRIANGLES, 0, 
-          static_cast<GLsizei>(data.GetCoordinatesCount() / COMPONENTS));
-        glDisable(GL_BLEND);
-
-        glDisableVertexAttribArray(positionLocation_);
-        glDisableVertexAttribArray(textureLocation_);
-      }
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLTextProgram.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Fonts/GlyphTextureAlphabet.h"
-#include "../../OpenGL/IOpenGLContext.h"
-#include "../../OpenGL/OpenGLProgram.h"
-#include "../../OpenGL/OpenGLTexture.h"
-#include "../../Toolbox/AffineTransform2D.h"
-#include "../TextSceneLayer.h"
-
-#include <Compatibility.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLTextProgram : public boost::noncopyable
-    {
-    public:
-      class Data : public boost::noncopyable
-      {
-      private:
-        OpenGL::IOpenGLContext&  context_;
-        size_t                   coordinatesCount_;
-        GLuint                   buffers_[2];
-        float                    red_;
-        float                    green_;
-        float                    blue_;
-        double                   x_;
-        double                   y_;
-        double                   border_;
-        unsigned int             textWidth_;
-        unsigned int             textHeight_;
-        BitmapAnchor             anchor_;
-
-      public:
-        Data(OpenGL::IOpenGLContext& context,
-             const GlyphTextureAlphabet& alphabet,
-             const TextSceneLayer& layer);
-
-        ~Data();
-
-        bool IsEmpty() const
-        {
-          return coordinatesCount_ == 0;
-        }
-
-        size_t GetCoordinatesCount() const
-        {
-          return coordinatesCount_;
-        }
-
-        GLuint GetSceneLocationsBuffer() const;
-
-        GLuint GetTextureLocationsBuffer() const;
-
-        float GetRed() const
-        {
-          return red_;
-        }
-
-        float GetGreen() const
-        {
-          return green_;
-        }
-
-        float GetBlue() const
-        {
-          return blue_;
-        }
-
-        double GetX() const
-        {
-          return x_;
-        }
-
-        double GetY() const
-        {
-          return y_;
-        }
-
-        double GetBorder() const
-        {
-          return border_;
-        }
-
-        unsigned int GetTextWidth() const
-        {
-          return textWidth_;
-        }
-
-        unsigned int GetTextHeight() const
-        {
-          return textHeight_;
-        }
-
-        BitmapAnchor GetAnchor() const
-        {
-          return anchor_;
-        }
-      };
-      
-    private:
-      OpenGL::IOpenGLContext&               context_;
-      std::unique_ptr<OpenGL::OpenGLProgram>  program_;
-      GLint                                 positionLocation_;
-      GLint                                 textureLocation_;
-
-    public:
-      OpenGLTextProgram(OpenGL::IOpenGLContext&  context);
-
-      void Apply(OpenGL::OpenGLTexture& fontTexture,
-                 const Data& data,
-                 const AffineTransform2D& transform);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLTextRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLTextRenderer.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void OpenGLTextRenderer::LoadLayer(const TextSceneLayer& layer)
-    {
-      if (!context_.IsContextLost())
-        data_.reset(new OpenGLTextProgram::Data(context_, alphabet_, layer));
-      else
-        data_.reset(NULL);
-    }
-
-
-    OpenGLTextRenderer::OpenGLTextRenderer(OpenGL::IOpenGLContext& context,
-                                           OpenGLTextProgram& program,
-                                           const GlyphTextureAlphabet& alphabet,
-                                           OpenGL::OpenGLTexture& texture,
-                                           const TextSceneLayer& layer) :
-      context_(context),
-      program_(program),
-      alphabet_(alphabet),
-      texture_(texture)
-    {
-      LoadLayer(layer);
-    }
-
-      
-    void OpenGLTextRenderer::Render(const AffineTransform2D& transform,
-                                    unsigned int canvasWidth,
-                                    unsigned int canvasHeight)
-    {
-      if (!context_.IsContextLost() && data_.get() != NULL)
-      {
-        program_.Apply(texture_, *data_, transform);
-      }
-    }
-
-    void OpenGLTextRenderer::Update(const ISceneLayer& layer)
-    {
-      LoadLayer(dynamic_cast<const TextSceneLayer&>(layer));
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLTextRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "CompositorHelper.h"
-#include "OpenGLTextProgram.h"
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLTextRenderer : public CompositorHelper::ILayerRenderer
-    {
-    private:
-      OpenGL::IOpenGLContext&                 context_;
-      OpenGLTextProgram&                      program_;
-      const GlyphTextureAlphabet&             alphabet_;
-      OpenGL::OpenGLTexture&                  texture_;
-      std::unique_ptr<OpenGLTextProgram::Data>  data_;
-
-      void LoadLayer(const TextSceneLayer& layer);
-
-    public:
-      OpenGLTextRenderer(OpenGL::IOpenGLContext& context,
-                         OpenGLTextProgram& program,
-                         const GlyphTextureAlphabet& alphabet,
-                         OpenGL::OpenGLTexture& texture,
-                         const TextSceneLayer& layer);
-
-      virtual void Render(const AffineTransform2D& transform,
-                          unsigned int canvasWidth,
-                          unsigned int canvasHeight);
-
-      virtual void Update(const ISceneLayer& layer);
-    };
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLTextureProgram.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OpenGLTextureProgram.h"
-#include "OpenGLShaderVersionDirective.h"
-
-#include <OrthancException.h>
-
-static const unsigned int COMPONENTS = 2;
-static const unsigned int COUNT = 6;  // 2 triangles in 2D
-
-static const char* VERTEX_SHADER = 
-  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
-  "attribute vec2 a_texcoord;             \n"
-  "attribute vec4 a_position;             \n"
-  "uniform mat4 u_matrix;                 \n"
-  "varying vec2 v_texcoord;               \n"
-  "void main()                            \n"
-  "{                                      \n"
-  "  gl_Position = u_matrix * a_position; \n"
-  "  v_texcoord = a_texcoord;             \n"
-  "}";
-
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    void OpenGLTextureProgram::InitializeExecution(OpenGL::OpenGLTexture& texture,
-                                                   const AffineTransform2D& transform)
-    {
-      if (!context_.IsContextLost())
-      {
-        context_.MakeCurrent();
-        program_->Use();
-
-        AffineTransform2D scale = AffineTransform2D::CreateScaling
-        (texture.GetWidth(), texture.GetHeight());
-
-        AffineTransform2D t = AffineTransform2D::Combine(transform, scale);
-
-        float m[16];
-        t.ConvertToOpenGLMatrix(m, context_.GetCanvasWidth(), context_.GetCanvasHeight());
-
-        texture.Bind(program_->GetUniformLocation("u_texture"));
-        glUniformMatrix4fv(program_->GetUniformLocation("u_matrix"), 1, GL_FALSE, m);
-
-        glBindBuffer(GL_ARRAY_BUFFER, buffers_[0]);
-        glEnableVertexAttribArray(positionLocation_);
-        glVertexAttribPointer(positionLocation_, COMPONENTS, GL_FLOAT, GL_FALSE, 0, 0);
-
-        glBindBuffer(GL_ARRAY_BUFFER, buffers_[1]);
-        glEnableVertexAttribArray(textureLocation_);
-        glVertexAttribPointer(textureLocation_, COMPONENTS, GL_FLOAT, GL_FALSE, 0, 0);
-      }
-    }
-
-    void OpenGLTextureProgram::FinalizeExecution()
-    {
-      if (!context_.IsContextLost())
-      {
-        glDisableVertexAttribArray(positionLocation_);
-        glDisableVertexAttribArray(textureLocation_);
-      }
-    }
-
-    OpenGLTextureProgram::OpenGLTextureProgram(OpenGL::IOpenGLContext& context,
-                                               const char* fragmentShader) :
-      context_(context)
-    {
-      static const float POSITIONS[COMPONENTS * COUNT] = {
-        0, 0,
-        0, 1,
-        1, 0,
-        1, 0,
-        0, 1,
-        1, 1
-      };
-
-      if (!context_.IsContextLost())
-      {
-        context_.MakeCurrent();
-
-        program_.reset(new OpenGL::OpenGLProgram(context_));
-        program_->CompileShaders(VERTEX_SHADER, fragmentShader);
-
-        positionLocation_ = program_->GetAttributeLocation("a_position");
-        textureLocation_ = program_->GetAttributeLocation("a_texcoord");
-
-        glGenBuffers(2, buffers_);
-
-        glBindBuffer(GL_ARRAY_BUFFER, buffers_[0]);
-        glBufferData(GL_ARRAY_BUFFER, sizeof(float) * COMPONENTS * COUNT, POSITIONS, GL_STATIC_DRAW);
-
-        glBindBuffer(GL_ARRAY_BUFFER, buffers_[1]);
-        glBufferData(GL_ARRAY_BUFFER, sizeof(float) * COMPONENTS * COUNT, POSITIONS, GL_STATIC_DRAW);
-      }
-    }
-
-    OpenGLTextureProgram::~OpenGLTextureProgram()
-    {
-      if (!context_.IsContextLost())
-      {
-        ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("OpenGLTextureProgram::~OpenGLTextureProgram() | About to call glDeleteBuffers");
-        context_.MakeCurrent();
-        glDeleteBuffers(2, buffers_);
-      }
-    }
-
-
-    void OpenGLTextureProgram::Execution::DrawTriangles()
-    {
-      if (!that_.context_.IsContextLost())
-      {
-        glDrawArrays(GL_TRIANGLES, 0, COUNT);
-      }
-    }
-  }
-}
--- a/Framework/Scene2D/Internals/OpenGLTextureProgram.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../OpenGL/IOpenGLContext.h"
-#include "../../OpenGL/OpenGLProgram.h"
-#include "../../OpenGL/OpenGLTexture.h"
-#include "../../Toolbox/AffineTransform2D.h"
-
-#include <Compatibility.h>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class OpenGLTextureProgram : public boost::noncopyable
-    {
-    private:
-      OpenGL::IOpenGLContext&               context_;
-      std::unique_ptr<OpenGL::OpenGLProgram>  program_;
-      GLint                                 positionLocation_;
-      GLint                                 textureLocation_;
-      GLuint                                buffers_[2];
-
-      void InitializeExecution(OpenGL::OpenGLTexture& texture,
-                               const AffineTransform2D& transform);
-
-      void FinalizeExecution();
-
-    public:
-      OpenGLTextureProgram(OpenGL::IOpenGLContext& context,
-                           const char* fragmentShader);
-
-      ~OpenGLTextureProgram();
-
-      class Execution : public boost::noncopyable
-      {
-      private:
-        OpenGLTextureProgram&  that_;
-
-      public:
-        Execution(OpenGLTextureProgram& that,
-                  OpenGL::OpenGLTexture& texture,
-                  const AffineTransform2D& transform) :
-          that_(that)
-        {
-          that_.InitializeExecution(texture, transform);
-        }
-
-        ~Execution()
-        {
-          that_.FinalizeExecution();
-        }
-
-        void DrawTriangles();
-
-        GLint GetUniformLocation(const std::string& name)
-        {
-          return that_.program_->GetUniformLocation(name);
-        }
-      };
-    };
-  }
-}
--- a/Framework/Scene2D/LookupTableStyleConfigurator.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "LookupTableStyleConfigurator.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  static void StringToVector(std::vector<uint8_t>& target,
-    const std::string& source)
-  {
-    target.resize(source.size());
-
-    for (size_t i = 0; i < source.size(); i++)
-    {
-      target[i] = source[i];
-    }
-  }
-
-  LookupTableStyleConfigurator::LookupTableStyleConfigurator() :
-    revision_(0),
-    hasLut_(false),
-    hasRange_(false),
-    applyLog_(false)
-  {
-  }
-
-  void LookupTableStyleConfigurator::SetLookupTable(const std::vector<uint8_t>& lut)
-  {
-    hasLut_ = true;
-    lut_ = lut;
-    revision_++;
-  }
-
-  void LookupTableStyleConfigurator::SetLookupTable(const std::string& lut)
-  {
-    std::vector<uint8_t> tmp;
-    StringToVector(tmp, lut);
-    SetLookupTable(tmp);
-  }
-
-  void LookupTableStyleConfigurator::SetRange(float minValue,
-                                              float maxValue)
-  {
-    if (minValue > maxValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      if ((!hasRange_) || (minValue_ != minValue) || (maxValue_ != maxValue))
-        revision_++;
-      hasRange_ = true;
-      minValue_ = minValue;
-      maxValue_ = maxValue;
-    }
-  }
-
-  void LookupTableStyleConfigurator::SetApplyLog(bool apply)
-  {
-    applyLog_ = apply;
-    revision_++;
-  }
-
-  TextureBaseSceneLayer* LookupTableStyleConfigurator::CreateTextureFromImage(const Orthanc::ImageAccessor& image) const
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-  }
-
-  void LookupTableStyleConfigurator::ApplyStyle(ISceneLayer& layer) const
-  {
-    LookupTableTextureSceneLayer& l = dynamic_cast<LookupTableTextureSceneLayer&>(layer);
-      
-    if (hasLut_)
-    {
-      l.SetLookupTable(lut_);
-    }
-
-    if (hasRange_)
-    {
-      l.SetRange(minValue_, maxValue_);
-    }
-    else
-    {
-      l.FitRange();
-    }
-
-    l.SetApplyLog(applyLog_);
-  }
-}
--- a/Framework/Scene2D/LookupTableStyleConfigurator.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ILayerStyleConfigurator.h"
-
-namespace OrthancStone
-{
-  /**
-  This configurator supplies an API to set a display range and a LUT.
-  */
-  class LookupTableStyleConfigurator : public ILayerStyleConfigurator
-  {
-  private:
-    uint64_t              revision_;
-    bool                  hasLut_;
-    std::vector<uint8_t>  lut_;
-    bool                  hasRange_;
-    float                 minValue_;
-    float                 maxValue_;
-    bool                  applyLog_;
-
-  public:
-    LookupTableStyleConfigurator();
-
-    void SetLookupTable(const std::string& lut);
-
-    /**
-     See the SetLookupTable(const std::vector<uint8_t>& lut) method in the
-     LookupTableTextureSceneLayer class.
-     */
-    void SetLookupTable(const std::vector<uint8_t>& lut);
-
-    void SetRange(float minValue, float maxValue);
-
-    void SetApplyLog(bool apply);
-
-    bool IsApplyLog() const
-    {
-      return applyLog_;
-    }
-    
-    virtual uint64_t GetRevision() const
-    {
-      return revision_;
-    }
-
-    virtual TextureBaseSceneLayer* CreateTextureFromImage(const Orthanc::ImageAccessor& image) const;
-
-    virtual TextureBaseSceneLayer* CreateTextureFromDicom(const Orthanc::ImageAccessor& frame,
-                                                          const DicomInstanceParameters& parameters) const
-    {
-      return parameters.CreateLookupTableTexture(frame);
-    }
-
-    virtual void ApplyStyle(ISceneLayer& layer) const;
-  };
-}
--- a/Framework/Scene2D/LookupTableTextureSceneLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,311 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "LookupTableTextureSceneLayer.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  LookupTableTextureSceneLayer::LookupTableTextureSceneLayer(const Orthanc::ImageAccessor& texture) :
-    applyLog_(false)
-  {
-    {
-      std::unique_ptr<Orthanc::ImageAccessor> t(
-        new Orthanc::Image(Orthanc::PixelFormat_Float32, 
-                           texture.GetWidth(), 
-                           texture.GetHeight(), 
-                           false));
-
-      Orthanc::ImageProcessing::Convert(*t, texture);
-      SetTexture(t.release());
-    }
-
-    SetLookupTableGrayscale(); // simple ramp between 0 and 255
-    SetRange(0, 1);
-  }
-
-
-  void LookupTableTextureSceneLayer::SetLookupTableGrayscale()
-  {
-    std::vector<uint8_t> rgb(3 * 256);
-
-    for (size_t i = 0; i < 256; i++)
-    {
-      rgb[3 * i]     = static_cast<uint8_t>(i);
-      rgb[3 * i + 1] = static_cast<uint8_t>(i);
-      rgb[3 * i + 2] = static_cast<uint8_t>(i);
-    }
-
-    SetLookupTableRgb(rgb);
-  }  
-
-
-  void LookupTableTextureSceneLayer::SetLookupTableRgb(const std::vector<uint8_t>& lut)
-  {
-    if (lut.size() != 3 * 256)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    lut_.resize(4 * 256);
-
-    for (size_t i = 0; i < 256; i++)
-    {
-      // Premultiplied alpha
-      
-      if (i == 0)
-      {
-        // Make zero transparent
-        lut_[4 * i] = 0;        // R
-        lut_[4 * i + 1] = 0;    // G
-        lut_[4 * i + 2] = 0;    // B
-        lut_[4 * i + 3] = 0;    // A
-      }
-      else
-      {
-        float a = static_cast<float>(i) / 255.0f;
-        
-        float r = static_cast<float>(lut[3 * i]) * a;
-        float g = static_cast<float>(lut[3 * i + 1]) * a;
-        float b = static_cast<float>(lut[3 * i + 2]) * a;
-        
-        lut_[4 * i] = static_cast<uint8_t>(std::floor(r));
-        lut_[4 * i + 1] = static_cast<uint8_t>(std::floor(g));
-        lut_[4 * i + 2] = static_cast<uint8_t>(std::floor(b));
-        lut_[4 * i + 3] = static_cast<uint8_t>(std::floor(a * 255.0f));
-      }
-    }
-
-    IncrementRevision();
-  }
-
-
-  void LookupTableTextureSceneLayer::SetLookupTable(const std::vector<uint8_t>& lut)
-  {
-    if (lut.size() == 4 * 256)
-    {
-      lut_ = lut;
-      IncrementRevision();
-    }
-    else if (lut.size() == 3 * 256)
-    {
-      SetLookupTableRgb(lut);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-  void LookupTableTextureSceneLayer::SetRange(float minValue,
-                                              float maxValue)
-  {
-    if (minValue > maxValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      minValue_ = minValue;
-      maxValue_ = maxValue;
-      IncrementRevision();
-    }
-  }
-
-  void LookupTableTextureSceneLayer::SetApplyLog(bool apply)
-  {
-    applyLog_ = apply;
-    IncrementRevision();
-  }
-
-  void LookupTableTextureSceneLayer::FitRange()
-  {
-    Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue_, maxValue_, GetTexture());
-    assert(minValue_ <= maxValue_);
-    // TODO: debug to be removed
-    if (fabs(maxValue_ - minValue_) < 0.0001) {
-      LOG(INFO) << "LookupTableTextureSceneLayer::FitRange(): minValue_ = " << minValue_ << " maxValue_ = " << maxValue_;
-    }
-    IncrementRevision();
-  }
-
-    
-  ISceneLayer* LookupTableTextureSceneLayer::Clone() const
-  {
-    std::unique_ptr<LookupTableTextureSceneLayer> cloned
-      (new LookupTableTextureSceneLayer(GetTexture()));
-
-
-    // TODO: why is windowing_ not copied??????
-    cloned->CopyParameters(*this);
-    cloned->minValue_ = minValue_;
-    cloned->maxValue_ = maxValue_;
-    cloned->lut_ = lut_;
-
-    return cloned.release();
-  }
-
-
-  // Templatized function to speed up computations, by avoiding
-  // testing conditions on each pixel
-  template <bool IsApplyLog,
-            Orthanc::PixelFormat TargetFormat>
-  static void RenderInternal(Orthanc::ImageAccessor& target,
-                             const Orthanc::ImageAccessor& source,
-                             float minValue,
-                             float slope,
-                             const std::vector<uint8_t>& lut)
-  {
-    static const float LOG_NORMALIZATION = 255.0f / log(1.0f + 255.0f);
-
-    const unsigned int width = source.GetWidth();
-    const unsigned int height = source.GetHeight();
-    
-    for (unsigned int y = 0; y < height; y++)
-    {
-      const float* p = reinterpret_cast<const float*>(source.GetConstRow(y));
-      uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
-
-      for (unsigned int x = 0; x < width; x++)
-      {
-        float v = (*p - minValue) * slope;
-        if (v <= 0)
-        {
-          v = 0;
-        }
-        else if (v >= 255)
-        {
-          v = 255;
-        }
-
-        if (IsApplyLog)
-        {
-          // https://theailearner.com/2019/01/01/log-transformation/
-          v = LOG_NORMALIZATION * log(1.0f + static_cast<float>(v));
-        }
-
-        assert(v >= 0.0f && v <= 255.0f);
-
-        uint8_t vv = static_cast<uint8_t>(v);
-
-        switch (TargetFormat)
-        {
-          case Orthanc::PixelFormat_BGRA32:
-            // For Cairo surfaces
-            q[0] = lut[4 * vv + 2];  // B
-            q[1] = lut[4 * vv + 1];  // G
-            q[2] = lut[4 * vv + 0];  // R
-            q[3] = lut[4 * vv + 3];  // A
-            break;
-
-          case Orthanc::PixelFormat_RGBA32:
-            // For OpenGL
-            q[0] = lut[4 * vv + 0];  // R
-            q[1] = lut[4 * vv + 1];  // G
-            q[2] = lut[4 * vv + 2];  // B
-            q[3] = lut[4 * vv + 3];  // A
-            break;
-
-          default:
-            assert(0);
-        }
-            
-        p++;
-        q += 4;
-      }
-    }
-  }
-  
-
-  void LookupTableTextureSceneLayer::Render(Orthanc::ImageAccessor& target) const
-  {
-    assert(sizeof(float) == 4);
-
-    if (!HasTexture())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    const Orthanc::ImageAccessor& source = GetTexture();
-    
-    if (source.GetFormat() != Orthanc::PixelFormat_Float32 ||
-        (target.GetFormat() != Orthanc::PixelFormat_RGBA32 &&
-         target.GetFormat() != Orthanc::PixelFormat_BGRA32))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    if (source.GetWidth() != target.GetWidth() ||
-        source.GetHeight() != target.GetHeight())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize);
-    }
-
-    const float minValue = GetMinValue();
-    float slope;
-
-    if (GetMinValue() >= GetMaxValue())
-    {
-      slope = 0;
-    }
-    else
-    {
-      slope = 256.0f / (GetMaxValue() - GetMinValue());
-    }
-
-    const std::vector<uint8_t>& lut = GetLookupTable();
-    if (lut.size() != 4 * 256)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    switch (target.GetFormat())
-    {
-      case Orthanc::PixelFormat_RGBA32:
-        if (applyLog_)
-        {
-          RenderInternal<true, Orthanc::PixelFormat_RGBA32>(target, source, minValue, slope, lut);
-        }
-        else
-        {
-          RenderInternal<false, Orthanc::PixelFormat_RGBA32>(target, source, minValue, slope, lut);
-        }
-        break;
-
-      case Orthanc::PixelFormat_BGRA32:
-        if (applyLog_)
-        {
-          RenderInternal<true, Orthanc::PixelFormat_BGRA32>(target, source, minValue, slope, lut);
-        }
-        else
-        {
-          RenderInternal<false, Orthanc::PixelFormat_BGRA32>(target, source, minValue, slope, lut);
-        }
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-}
--- a/Framework/Scene2D/LookupTableTextureSceneLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "TextureBaseSceneLayer.h"
-
-namespace OrthancStone
-{
-  class LookupTableTextureSceneLayer : public TextureBaseSceneLayer
-  {
-  private:
-    ImageWindowing        windowing_;
-    float                 minValue_;
-    float                 maxValue_;
-    std::vector<uint8_t>  lut_;
-    bool                  applyLog_;
-
-    void SetLookupTableRgb(const std::vector<uint8_t>& lut);
-
-  public:
-    // The pixel format must be convertible to Float32
-    LookupTableTextureSceneLayer(const Orthanc::ImageAccessor& texture);
-
-    void SetLookupTableGrayscale();
-
-    // The vector must contain either 3 * 256 values (RGB), or 4 * 256
-    // (RGBA). In the RGB case, an alpha channel will be automatically added.
-    void SetLookupTable(const std::vector<uint8_t>& lut);
-
-    void SetRange(float minValue,
-                  float maxValue);
-    
-    void FitRange();
-
-    float GetMinValue() const
-    {
-      return minValue_;
-    }
-
-    float GetMaxValue() const
-    {
-      return maxValue_;
-    }
-
-    // This returns a vector of 4 * 256 values between 0 and 255, in RGBA.
-    const std::vector<uint8_t>& GetLookupTable() const
-    {
-      return lut_;
-    }
-
-    void SetApplyLog(bool apply);
-
-    bool IsApplyLog() const
-    {
-      return applyLog_;
-    }
-
-    virtual ISceneLayer* Clone() const;
-
-    virtual Type GetType() const
-    {
-      return Type_LookupTableTexture;
-    }
-
-    // Render the texture to a color image of format BGRA32 (Cairo
-    // surfaces) or RGBA32 (OpenGL)
-    void Render(Orthanc::ImageAccessor& target) const;
-  };
-}
--- a/Framework/Scene2D/NullLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "ISceneLayer.h"
-
-#include <Enumerations.h>
-
-#include <stdint.h>
-
-/**
- This layer can be used when a z-index needs to be booked inside a Scene2D.
-
- It can later be replaced by the actual layer.
-*/
-namespace OrthancStone
-{
-  class NullLayer : public ISceneLayer
-  {
-  public:
-    NullLayer() {}
-
-    virtual ISceneLayer* Clone() const ORTHANC_OVERRIDE
-    {
-      return new NullLayer();
-    }
-
-    virtual Type GetType() const ORTHANC_OVERRIDE
-    {
-      return Type_NullLayer;
-    }
-
-    virtual bool GetBoundingBox(Extent2D& target) const ORTHANC_OVERRIDE
-    {
-      target = Extent2D();
-      return false; 
-    }
-
-    virtual uint64_t GetRevision() const ORTHANC_OVERRIDE
-    {
-      return 0;
-    }
-  };
-}
--- a/Framework/Scene2D/OpenGLCompositor.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "OpenGLCompositor.h"
-
-#include "Internals/OpenGLAdvancedPolylineRenderer.h"
-#include "Internals/OpenGLBasicPolylineRenderer.h"
-#include "Internals/OpenGLColorTextureRenderer.h"
-#include "Internals/OpenGLFloatTextureRenderer.h"
-#include "Internals/OpenGLInfoPanelRenderer.h"
-#include "Internals/OpenGLLookupTableTextureRenderer.h"
-#include "Internals/OpenGLTextRenderer.h"
-
-namespace OrthancStone
-{
-  class OpenGLCompositor::Font : public boost::noncopyable
-  {
-  private:
-    std::unique_ptr<GlyphTextureAlphabet>   alphabet_;
-    std::unique_ptr<OpenGL::OpenGLTexture>  texture_;
-
-  public:
-    Font(OpenGL::IOpenGLContext& context, const GlyphBitmapAlphabet& dict)
-    {
-      alphabet_.reset(new GlyphTextureAlphabet(dict));
-      texture_.reset(new OpenGL::OpenGLTexture(context));
-
-      std::unique_ptr<Orthanc::ImageAccessor> bitmap(alphabet_->ReleaseTexture());
-      texture_->Load(*bitmap, true /* enable linear interpolation */);
-    }
-
-    OpenGL::OpenGLTexture& GetTexture() const
-    {
-      assert(texture_.get() != NULL);
-      return *texture_;
-    }
-
-    const GlyphTextureAlphabet& GetAlphabet() const
-    {
-      assert(alphabet_.get() != NULL);
-      return *alphabet_;
-    }
-  };
-
-  const OpenGLCompositor::Font* OpenGLCompositor::GetFont(size_t fontIndex) const
-  {
-    Fonts::const_iterator found = fonts_.find(fontIndex);
-
-    if (found == fonts_.end())
-    {
-      return NULL;  // Unknown font, nothing should be drawn
-    }
-    else
-    {
-      assert(found->second != NULL);
-      return found->second;
-    }
-  }
-
-  Internals::CompositorHelper::ILayerRenderer* OpenGLCompositor::Create(const ISceneLayer& layer)
-  {
-    if (!context_.IsContextLost())
-    {
-      switch (layer.GetType())
-      {
-      case ISceneLayer::Type_InfoPanel:
-        return new Internals::OpenGLInfoPanelRenderer
-        (context_, colorTextureProgram_, dynamic_cast<const InfoPanelSceneLayer&>(layer));
-
-      case ISceneLayer::Type_ColorTexture:
-        return new Internals::OpenGLColorTextureRenderer
-        (context_, colorTextureProgram_, dynamic_cast<const ColorTextureSceneLayer&>(layer));
-
-      case ISceneLayer::Type_FloatTexture:
-        return new Internals::OpenGLFloatTextureRenderer
-        (context_, floatTextureProgram_, dynamic_cast<const FloatTextureSceneLayer&>(layer));
-
-      case ISceneLayer::Type_LookupTableTexture:
-        return new Internals::OpenGLLookupTableTextureRenderer
-        (context_, colorTextureProgram_, dynamic_cast<const LookupTableTextureSceneLayer&>(layer));
-
-      case ISceneLayer::Type_Polyline:
-        return new Internals::OpenGLAdvancedPolylineRenderer
-        (context_, linesProgram_, dynamic_cast<const PolylineSceneLayer&>(layer));
-        //return new Internals::OpenGLBasicPolylineRenderer(context_, dynamic_cast<const PolylineSceneLayer&>(layer));
-
-      case ISceneLayer::Type_Text:
-      {
-        const TextSceneLayer& l = dynamic_cast<const TextSceneLayer&>(layer);
-        const Font* font = GetFont(l.GetFontIndex());
-        if (font == NULL)
-        {
-          LOG(WARNING) << "There is no font at index " << l.GetFontIndex();
-          return NULL;
-        }
-        else
-        {
-          return new Internals::OpenGLTextRenderer
-          (context_, textProgram_, font->GetAlphabet(), font->GetTexture(), l);
-        }
-      }
-
-      default:
-        return NULL;
-      }
-    }
-    else
-    {
-      // context is lost. returning null.
-      return NULL;
-    }
-  }
-
-  OpenGLCompositor::OpenGLCompositor(OpenGL::IOpenGLContext& context) :
-    context_(context),
-    colorTextureProgram_(context),
-    floatTextureProgram_(context),
-    linesProgram_(context),
-    textProgram_(context),
-    canvasWidth_(0),
-    canvasHeight_(0)
-  {
-    if (!context_.IsContextLost())
-    {
-      canvasWidth_ = context_.GetCanvasWidth();
-      canvasHeight_ = context_.GetCanvasHeight();
-    }
-
-    ResetScene();
-  }
-
-  OpenGLCompositor::~OpenGLCompositor()
-  {
-    if (!context_.IsContextLost())
-    {
-      try
-      {
-        try
-        {
-          context_.MakeCurrent(); // this can throw if context lost!
-        }
-        catch (...)
-        {
-          LOG(ERROR) << "context_.MakeCurrent() failed in OpenGLCompositor::~OpenGLCompositor()!";
-        }
-
-        for (Fonts::iterator it = fonts_.begin(); it != fonts_.end(); ++it)
-        {
-          try
-          {
-
-            assert(it->second != NULL);
-            delete it->second;
-          }
-          catch (...)
-          {
-            LOG(ERROR) << "Exception thrown while deleting OpenGL-based font!";
-          }
-        }
-      }
-      catch (...)
-      {
-        // logging threw an exception!
-      }
-    }
-  }
-
-  void OpenGLCompositor::Refresh(const Scene2D& scene)
-  {
-    if (!context_.IsContextLost())
-    {
-      context_.MakeCurrent(); // this can throw if context lost!
-      canvasWidth_ = context_.GetCanvasWidth();
-      canvasHeight_ = context_.GetCanvasHeight();
-
-      glViewport(0, 0, canvasWidth_, canvasHeight_);
-      glClearColor(0, 0, 0, 1);
-      glClear(GL_COLOR_BUFFER_BIT);
-
-      helper_->Refresh(scene, canvasWidth_, canvasHeight_);
-
-      context_.SwapBuffer();
-    }
-  }
-
-  void OpenGLCompositor::SetFont(size_t index,
-                                 const GlyphBitmapAlphabet& dict)
-  {
-    if (!context_.IsContextLost())
-    {
-      context_.MakeCurrent(); // this can throw if context lost
-
-      std::unique_ptr<Font> font(new Font(context_, dict));
-
-      Fonts::iterator found = fonts_.find(index);
-
-      if (found == fonts_.end())
-      {
-        fonts_[index] = font.release();
-      }
-      else
-      {
-        assert(found->second != NULL);
-        delete found->second;
-
-        found->second = font.release();
-      }
-    }
-  }
-
-#if ORTHANC_ENABLE_LOCALE == 1
-  void OpenGLCompositor::SetFont(size_t index,
-                                 const std::string& ttf,
-                                 unsigned int fontSize,
-                                 Orthanc::Encoding codepage)
-  {
-    if (!context_.IsContextLost())
-    {
-      FontRenderer renderer;
-      renderer.LoadFont(ttf, fontSize);
-
-      GlyphBitmapAlphabet dict;
-      dict.LoadCodepage(renderer, codepage);
-
-      SetFont(index, dict);
-    }
-  }
-#endif
-
-
-  void OpenGLCompositor::RefreshCanvasSize()
-  {
-    if (!context_.IsContextLost())
-    {
-      context_.MakeCurrent(); // this can throw if context lost!
-      context_.RefreshCanvasSize();  // Difference with Refresh(scene)
-      canvasWidth_ = context_.GetCanvasWidth();
-      canvasHeight_ = context_.GetCanvasHeight();
-    }
-  }
-}
--- a/Framework/Scene2D/OpenGLCompositor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ICompositor.h"
-#include "Internals/CompositorHelper.h"
-#include "Internals/OpenGLColorTextureProgram.h"
-#include "Internals/OpenGLFloatTextureProgram.h"
-#include "Internals/OpenGLLinesProgram.h"
-#include "Internals/OpenGLTextProgram.h"
-
-namespace OrthancStone
-{
-  class OpenGLCompositor : public ICompositor, private Internals::CompositorHelper::IRendererFactory
-  {
-  private:
-    class Font;
-
-    typedef std::map<size_t, Font*>  Fonts;
-
-    OpenGL::IOpenGLContext&                     context_;
-    Fonts                                       fonts_;
-    std::unique_ptr<Internals::CompositorHelper>  helper_;
-    Internals::OpenGLColorTextureProgram        colorTextureProgram_;
-    Internals::OpenGLFloatTextureProgram        floatTextureProgram_;
-    Internals::OpenGLLinesProgram               linesProgram_;
-    Internals::OpenGLTextProgram                textProgram_;
-    unsigned int                                canvasWidth_;
-    unsigned int                                canvasHeight_;
-
-    const Font* GetFont(size_t fontIndex) const;
-
-    virtual Internals::CompositorHelper::ILayerRenderer* Create(const ISceneLayer& layer) ORTHANC_OVERRIDE;
-
-  public:
-    OpenGLCompositor(OpenGL::IOpenGLContext& context);
-
-    virtual ~OpenGLCompositor();
-
-    virtual void Refresh(const Scene2D& scene) ORTHANC_OVERRIDE;
-
-    virtual void ResetScene() ORTHANC_OVERRIDE
-    {
-      helper_.reset(new Internals::CompositorHelper(*this));
-    }
-
-    void SetFont(size_t index, const GlyphBitmapAlphabet& dict);
-
-#if ORTHANC_ENABLE_LOCALE == 1
-    void SetFont(size_t index,
-                 const std::string& ttf,
-                 unsigned int fontSize,
-                 Orthanc::Encoding codepage) ORTHANC_OVERRIDE;
-#endif
-
-    virtual void RefreshCanvasSize() ORTHANC_OVERRIDE;
-
-    virtual unsigned int GetCanvasWidth() const ORTHANC_OVERRIDE
-    {
-      return canvasWidth_;
-    }
-
-    virtual unsigned int GetCanvasHeight() const ORTHANC_OVERRIDE
-    {
-      return canvasHeight_;
-    }
-  };
-}
--- a/Framework/Scene2D/PanSceneTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "PanSceneTracker.h"
-#include "../Viewport/IViewport.h"
-#include "../Scene2DViewport/ViewportController.h"
-
-#include <memory>
-
-namespace OrthancStone
-{
-  PanSceneTracker::PanSceneTracker(boost::shared_ptr<IViewport> viewport,
-                                   const PointerEvent& event)
-    : OneGesturePointerTracker(viewport)
-  {
-    
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-
-    originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform();
-    originalCanvasToScene_ = lock->GetController().GetCanvasToSceneTransform();
-
-    pivot_ = event.GetMainPosition().Apply(originalCanvasToScene_);
-  }
-
-
-  void PanSceneTracker::PointerMove(const PointerEvent& event)
-  {
-    ScenePoint2D p = event.GetMainPosition().Apply(originalCanvasToScene_);
-
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-
-    lock->GetController().SetSceneToCanvasTransform(
-      AffineTransform2D::Combine(
-        originalSceneToCanvas_,
-        AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(),
-                                        p.GetY() - pivot_.GetY())));
-    lock->Invalidate();
-  }
-
-  void PanSceneTracker::Cancel()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_);
-  }
-}
--- a/Framework/Scene2D/PanSceneTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Scene2DViewport/OneGesturePointerTracker.h"
-
-namespace OrthancStone
-{
-  class PanSceneTracker : public OneGesturePointerTracker
-  {
-  public:
-    PanSceneTracker(boost::shared_ptr<IViewport> viewport,
-                    const PointerEvent& event);
-
-    virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE;
-    virtual void Cancel() ORTHANC_OVERRIDE;
-
-  private:
-    ScenePoint2D           pivot_;
-    AffineTransform2D      originalSceneToCanvas_;
-    AffineTransform2D      originalCanvasToScene_;
-  };
-}
--- a/Framework/Scene2D/PointerEvent.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "PointerEvent.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  PointerEvent::PointerEvent() :
-    button_(MouseButton_None),
-    hasAltModifier_(false),
-    hasControlModifier_(false),
-    hasShiftModifier_(false)
-  {
-  }
-
-  
-  ScenePoint2D PointerEvent::GetMainPosition() const
-  {
-    if (positions_.empty())
-    {
-      return ScenePoint2D(0, 0);
-    }
-    else
-    {
-      return positions_[0];
-    }
-  }
-    
-
-  ScenePoint2D PointerEvent::GetPosition(size_t index) const
-  {
-    if (index < positions_.size())
-    {
-      return positions_[index];
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-}
--- a/Framework/Scene2D/PointerEvent.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ScenePoint2D.h"
-
-#include <boost/noncopyable.hpp>
-#include <stdint.h>
-
-namespace OrthancStone
-{
-  class PointerEvent : public boost::noncopyable
-  {
-  private:
-    MouseButton                button_;
-    std::vector<ScenePoint2D>  positions_;
-    bool                       hasAltModifier_;
-    bool                       hasControlModifier_;
-    bool                       hasShiftModifier_;
-
-  public:
-    PointerEvent();
-
-    ScenePoint2D GetMainPosition() const;
-    
-    void AddPosition(const ScenePoint2D& p)
-    {
-      positions_.push_back(p);
-    }
-
-    void AddPosition(double x,
-                     double y)
-    {
-      positions_.push_back(ScenePoint2D(x, y));
-    }
-
-    size_t GetPositionsCount() const
-    {
-      return positions_.size();
-    }
-    
-    ScenePoint2D GetPosition(size_t index) const;
-
-    void SetAltModifier(bool value)
-    {
-      hasAltModifier_ = value;
-    }
-
-    bool HasAltModifier() const
-    {
-      return hasAltModifier_;
-    }
-
-    void SetControlModifier(bool value)
-    {
-      hasControlModifier_ = value;
-    }
-
-    bool HasControlModifier() const
-    {
-      return hasControlModifier_;
-    }
-
-    void SetShiftModifier(bool value)
-    {
-      hasShiftModifier_ = value;
-    }
-
-    bool HasShiftModifier() const
-    {
-      return hasShiftModifier_;
-    }
-
-    void SetMouseButton(MouseButton button)
-    {
-      button_ = button;
-    }
-
-    MouseButton GetMouseButton() const
-    {
-      return button_;
-    }
-  };
-}
--- a/Framework/Scene2D/PolylineSceneLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "PolylineSceneLayer.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  void PolylineSceneLayer::Copy(const PolylineSceneLayer& other)
-  {
-    items_ = other.items_;
-    thickness_ = other.thickness_;
-    revision_ ++;
-  }
-
-  
-  ISceneLayer* PolylineSceneLayer::Clone() const
-  {
-    std::unique_ptr<PolylineSceneLayer> cloned(new PolylineSceneLayer);
-    cloned->Copy(*this);
-    return cloned.release();
-  }
-    
-
-  void PolylineSceneLayer::SetThickness(double thickness)
-  {
-    if (thickness <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      thickness_ = thickness;
-      revision_++;
-    }
-  }
-
-
-  void PolylineSceneLayer::AddChain(const Chain& chain,
-                                    bool isClosed,
-                                    uint8_t red,
-                                    uint8_t green,
-                                    uint8_t blue)
-  {
-    if (!chain.empty())
-    {
-      items_.push_back(Item());
-      items_.back().chain_ = chain;
-      items_.back().closed_ = isClosed;
-      items_.back().color_ = Color(red, green, blue);
-
-      revision_++;
-    }
-  }
-
-
-  void PolylineSceneLayer::ClearAllChains()
-  {
-    items_.clear();
-    revision_++;
-  }
-
-  const PolylineSceneLayer::Item& PolylineSceneLayer::GetItem(size_t i) const
-  {
-    if (i < items_.size())
-    {
-      return items_[i];
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-  
-  bool PolylineSceneLayer::GetBoundingBox(Extent2D& target) const
-  {
-    target.Reset();
-
-    for (size_t i = 0; i < items_.size(); i++)
-    {
-      for (size_t j = 0; j < items_[i].chain_.size(); j++)
-      {
-        const ScenePoint2D& p = items_[i].chain_[j];
-        target.AddPoint(p.GetX(), p.GetY());
-      }
-    }
-
-    return true;
-  }
-}
--- a/Framework/Scene2D/PolylineSceneLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "Color.h"
-#include "ScenePoint2D.h"
-#include "ISceneLayer.h"
-
-#include <vector>
-
-namespace OrthancStone
-{
-  class PolylineSceneLayer : public ISceneLayer
-  {
-  public:
-    typedef std::vector<ScenePoint2D>  Chain;
-
-  private:
-    struct Item
-    {
-      Chain  chain_;
-      bool   closed_;
-      Color  color_;
-    };
-    
-    std::vector<Item>  items_;
-    double             thickness_;
-    uint64_t           revision_;
-
-    const Item& GetItem(size_t i) const;
-
-  public:
-    PolylineSceneLayer() :
-      thickness_(1.0),
-      revision_(0)
-    {
-    }
-
-    void Copy(const PolylineSceneLayer& other);
-
-    virtual uint64_t GetRevision() const
-    {
-      return revision_;
-    }
-
-    virtual ISceneLayer* Clone() const;
-
-    void SetThickness(double thickness);
-
-    double GetThickness() const
-    {
-      return thickness_;
-    }
-
-    void Reserve(size_t countChains)
-    {
-      items_.reserve(countChains);
-    }
-
-    void AddChain(const Chain& chain,
-                  bool isClosed,
-                  uint8_t red,
-                  uint8_t green,
-                  uint8_t blue);
-
-    void AddChain(const Chain& chain,
-                  bool isClosed,
-                  const Color& color)
-    {
-      AddChain(chain, isClosed, color.GetRed(), color.GetGreen(), color.GetBlue());
-    }
-
-    void ClearAllChains();
-
-    size_t GetChainsCount() const
-    {
-      return items_.size();
-    }
-
-    const Chain& GetChain(size_t i) const
-    {
-      return GetItem(i).chain_;
-    }
-
-    bool IsClosedChain(size_t i) const
-    {
-      return GetItem(i).closed_;
-    }
-
-    const Color& GetColor(size_t i) const
-    {
-      return GetItem(i).color_;
-    }
-
-    virtual Type GetType() const
-    {
-      return Type_Polyline;
-    }
-
-    virtual bool GetBoundingBox(Extent2D& target) const;
-   
-  };
-}
--- a/Framework/Scene2D/RotateSceneTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "RotateSceneTracker.h"
-#include "../Scene2DViewport/ViewportController.h"
-
-namespace OrthancStone
-{
-  RotateSceneTracker::RotateSceneTracker(boost::shared_ptr<IViewport> viewport,
-                                         const PointerEvent& event)
-    : OneGesturePointerTracker(viewport)
-    , click_(event.GetMainPosition())
-    , aligner_(viewport, click_)
-    , isFirst_(true)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform();
-
-  }
-
-  void RotateSceneTracker::PointerMove(const PointerEvent& event)
-  {
-    ScenePoint2D p = event.GetMainPosition();
-    double dx = p.GetX() - click_.GetX();
-    double dy = p.GetY() - click_.GetY();
-
-    if (std::abs(dx) > 5.0 ||
-        std::abs(dy) > 5.0)
-    {
-      double a = atan2(dy, dx);
-
-      if (isFirst_)
-      {
-        referenceAngle_ = a;
-        isFirst_ = false;
-      }
-
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-
-      lock->GetController().SetSceneToCanvasTransform(
-        AffineTransform2D::Combine(
-          AffineTransform2D::CreateRotation(a - referenceAngle_),
-          originalSceneToCanvas_));
-      aligner_.Apply();
-      lock->Invalidate();
-    }
-  }
-
-  void RotateSceneTracker::Cancel()
-  {
-    // See remark above
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_);
-    lock->Invalidate();
-  }
-}
--- a/Framework/Scene2D/RotateSceneTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Scene2DViewport/OneGesturePointerTracker.h"
-#include "Internals/FixedPointAligner.h"
-#include <memory>
-
-namespace OrthancStone
-{
-  class RotateSceneTracker : public OneGesturePointerTracker
-  {
-  public:
-    RotateSceneTracker(boost::shared_ptr<IViewport> viewport,
-                       const PointerEvent& event);
-
-    virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE;
-    virtual void Cancel() ORTHANC_OVERRIDE;
-
-  private:
-    ScenePoint2D                 click_;
-    Internals::FixedPointAligner aligner_;
-    double                       referenceAngle_;
-    bool                         isFirst_;
-    AffineTransform2D            originalSceneToCanvas_;
-  };
-}
--- a/Framework/Scene2D/Scene2D.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "Scene2D.h"
-
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-  class Scene2D::Item
-  {
-  private:
-    std::unique_ptr<ISceneLayer>  layer_;
-    uint64_t                    identifier_;
-
-  public:
-    Item(ISceneLayer* layer,
-         uint64_t identifier) :
-      layer_(layer),
-      identifier_(identifier)
-    {
-      if (layer == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    ISceneLayer& GetLayer() const
-    {
-      if (layer_.get() == NULL)
-      {
-        LOG(ERROR) << "Scene2D::Item::GetLayer(): (layer_.get() == NULL)";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      else
-      {
-        return *layer_;
-      }
-    }
-
-    ISceneLayer* ReleaseLayer()
-    {
-      if (layer_.get() == NULL)
-      {
-        LOG(ERROR) << "Scene2D::Item::ReleaseLayer(): (layer_.get() == NULL)";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      else
-      {
-        return layer_.release();
-      }
-    }
-
-    uint64_t GetIdentifier() const
-    {
-      return identifier_;
-    }
-  };
-  
-  
-  Scene2D::Scene2D(const Scene2D& other) 
-    : sceneToCanvas_(other.sceneToCanvas_)
-    , canvasToScene_(other.canvasToScene_)
-    , layerCounter_(0)
-  {
-    for (Content::const_iterator it = other.content_.begin();
-         it != other.content_.end(); ++it)
-    {
-      content_[it->first] = new Item(it->second->GetLayer().Clone(), layerCounter_++);
-    }
-  }
-
-    
-  Scene2D::~Scene2D()
-  {
-    for (Content::iterator it = content_.begin(); 
-         it != content_.end(); ++it)
-    {
-      assert(it->second != NULL);
-      delete it->second;
-    }
-  }
-
-
-  void Scene2D::SetLayer(int depth,
-                         ISceneLayer* layer)  // Takes ownership
-  {
-    LOG(TRACE) << "SetLayer(" << depth << ", " << reinterpret_cast<intptr_t>(layer) << ")";
-    std::unique_ptr<Item> item(new Item(layer, layerCounter_++));
-
-    if (layer == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    Content::iterator found = content_.find(depth);
-
-    if (found == content_.end())
-    {
-      content_[depth] = item.release();
-    }
-    else
-    {
-      assert(found->second != NULL);
-      delete found->second;
-      found->second = item.release();
-    }
-  }
-
-
-  void Scene2D::DeleteLayer(int depth)
-  {
-
-    Content::iterator found = content_.find(depth);
-
-    if (found != content_.end())
-    {
-      LOG(TRACE) << "DeleteLayer --found-- (" << depth << ")";
-      assert(found->second != NULL);
-      delete found->second;
-      content_.erase(found);
-    }    
-  }
-
-  
-  bool Scene2D::HasLayer(int depth) const
-  {
-    return (content_.find(depth) != content_.end());
-  }
-
-
-  ISceneLayer& Scene2D::GetLayer(int depth) const
-  {
-    Content::const_iterator found = content_.find(depth);
-
-    if (found == content_.end())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      assert(found->second != NULL);
-      return found->second->GetLayer();
-    }
-  }
-
-  
-  int Scene2D::GetMinDepth() const
-  {
-    if (content_.size() == 0)
-      return 0;
-    else
-      return content_.begin()->first;
-  }
-
-
-  int Scene2D::GetMaxDepth() const
-  {
-    if (content_.size() == 0)
-      return 0;
-    else
-      return content_.rbegin()->first;
-  }
-
-  ISceneLayer* Scene2D::ReleaseLayer(int depth)
-  {
-    Content::iterator found = content_.find(depth);
-
-    if (found == content_.end())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      assert(found->second != NULL);
-
-      std::unique_ptr<ISceneLayer> layer(found->second->ReleaseLayer());
-      assert(layer.get() != NULL);
-
-      content_.erase(found);
-
-      return layer.release();
-    }    
-  }
-
-  void Scene2D::Apply(IVisitor& visitor) const
-  {
-    for (Content::const_iterator it = content_.begin(); 
-         it != content_.end(); ++it)
-    {
-      assert(it->second != NULL);
-      visitor.Visit(*this, it->second->GetLayer(), it->second->GetIdentifier(), it->first);
-    }
-  }
-
-
-  void Scene2D::SetSceneToCanvasTransform(const AffineTransform2D& transform)
-  {
-    // Make sure the transform is invertible before making any change
-    AffineTransform2D inverse = AffineTransform2D::Invert(transform);
-
-    sceneToCanvas_ = transform;
-    canvasToScene_ = inverse;
-  }
-
-  void Scene2D::GetBoundingBox(Extent2D &target) const
-  {
-    target.Reset();
-
-    for (Content::const_iterator it = content_.begin();
-         it != content_.end(); ++it)
-    {
-      assert(it->second != NULL);
-
-      Extent2D tmp;
-      if (it->second->GetLayer().GetBoundingBox(tmp))
-      {
-        target.Union(tmp);
-      }
-    }
-  }
-
-  void Scene2D::FitContent(unsigned int canvasWidth,
-                           unsigned int canvasHeight)
-  {
-    Extent2D extent;
-
-    GetBoundingBox(extent);
-
-    if (!extent.IsEmpty())
-    {
-      double zoomX = static_cast<double>(canvasWidth) / extent.GetWidth();
-      double zoomY = static_cast<double>(canvasHeight) / extent.GetHeight();
-
-      double zoom = std::min(zoomX, zoomY);
-      if (LinearAlgebra::IsCloseToZero(zoom))
-      {
-        zoom = 1;
-      }
-
-      double panX = extent.GetCenterX();
-      double panY = extent.GetCenterY();
-
-      // Bring the center of the scene to (0,0)
-      AffineTransform2D t1 = AffineTransform2D::CreateOffset(-panX, -panY);
-      
-      // Scale the scene
-      AffineTransform2D t2 = AffineTransform2D::CreateScaling(zoom, zoom);
-
-      SetSceneToCanvasTransform(AffineTransform2D::Combine(t2, t1));
-    }
-  }
-}
--- a/Framework/Scene2D/Scene2D.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ISceneLayer.h"
-#include "../Toolbox/AffineTransform2D.h"
-#include "../Messages/IObservable.h"
-#include "../Messages/IMessage.h"
-
-#include <map>
-
-namespace OrthancStone
-{
-  class Scene2D : public boost::noncopyable
-  {
-  public:
-    class IVisitor : public boost::noncopyable
-    {
-    public:
-      virtual ~IVisitor()
-      {
-      }
-
-      virtual void Visit(const Scene2D& scene,
-                         const ISceneLayer& layer,
-                         uint64_t layerIdentifier,
-                         int depth) = 0;
-    };
-
-  private:
-    class Item;
-    
-    typedef std::map<int, Item*>  Content;
-
-    Content            content_;
-    AffineTransform2D  sceneToCanvas_;
-    AffineTransform2D  canvasToScene_;
-    uint64_t           layerCounter_;
-
-    Scene2D(const Scene2D& other);
-    
-  public:
-    Scene2D() : layerCounter_(0)
-    {
-    }
-    
-    ~Scene2D();
-
-    Scene2D* Clone() const
-    {
-      return new Scene2D(*this);
-    }
-
-    void SetLayer(int depth,
-                  ISceneLayer* layer);  // Takes ownership
-
-    /**
-    Removes the layer at specified depth and deletes the underlying object
-    */
-    void DeleteLayer(int depth);
-
-    bool HasLayer(int depth) const;
-
-    ISceneLayer& GetLayer(int depth) const;
-
-    /**
-    Returns the minimum depth among all layers or 0 if there are no layers
-    */
-    int GetMinDepth() const;
-
-    /**
-    Returns the minimum depth among all layers or 0 if there are no layers
-    */
-    int GetMaxDepth() const;
-
-    /**
-    Removes the layer at specified depth and transfers the object 
-    ownership to the caller
-    */
-    ISceneLayer* ReleaseLayer(int depth);
-
-    void Apply(IVisitor& visitor) const;
-
-    const AffineTransform2D& GetSceneToCanvasTransform() const
-    {
-      return sceneToCanvas_;
-    }
-
-    const AffineTransform2D& GetCanvasToSceneTransform() const
-    {
-      return canvasToScene_;
-    }
-
-    void SetSceneToCanvasTransform(const AffineTransform2D& transform);
-
-    void FitContent(unsigned int canvasWidth,
-                    unsigned int canvasHeight);
-
-    void GetBoundingBox(Extent2D& target) const;
-  };
-}
--- a/Framework/Scene2D/ScenePoint2D.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,179 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/AffineTransform2D.h"
-#include "../Toolbox/LinearAlgebra.h"
-
-namespace OrthancStone
-{
-  class ScenePoint2D
-  {
-  private:
-    double  x_;
-    double  y_;
-
-  public:
-    ScenePoint2D() :
-      x_(0),
-      y_(0)
-    {
-    }
-
-    ScenePoint2D(double x,
-      double y) :
-      x_(x),
-      y_(y)
-    {
-    }
-
-    double GetX() const
-    {
-      return x_;
-    }
-
-    double GetY() const
-    {
-      return y_;
-    }
-
-    ScenePoint2D Apply(const AffineTransform2D& t) const
-    {
-      double x = x_;
-      double y = y_;
-      t.Apply(x, y);
-      return ScenePoint2D(x, y);
-    }
-
-    const ScenePoint2D operator-(const ScenePoint2D& a) const
-    {
-      ScenePoint2D v;
-      v.x_ = x_ - a.x_;
-      v.y_ = y_ - a.y_;
-
-      return v;
-    }
-
-    const ScenePoint2D operator+(const ScenePoint2D& a) const
-    {
-      ScenePoint2D v;
-      v.x_ = x_ + a.x_;
-      v.y_ = y_ + a.y_;
-
-      return v;
-    }
-
-    const ScenePoint2D operator*(double a) const
-    {
-      ScenePoint2D v;
-      v.x_ = x_ * a;
-      v.y_ = y_ * a;
-
-      return v;
-    }
-
-    const ScenePoint2D operator/(double a) const
-    {
-      ScenePoint2D v;
-      v.x_ = x_ / a;
-      v.y_ = y_ / a;
-
-      return v;
-    }
-
-    static void MidPoint(ScenePoint2D& result, const ScenePoint2D& a, const ScenePoint2D& b)
-    {
-      result.x_ = 0.5 * (a.x_ + b.x_);
-      result.y_ = 0.5 * (a.y_ + b.y_);
-    }
-
-    static double Dot(const ScenePoint2D& a, const ScenePoint2D& b)
-    {
-      return a.x_ * b.x_ + a.y_ * b.y_;
-    }
-
-    static double SquaredMagnitude(const ScenePoint2D& v)
-    {
-      return v.x_ * v.x_ + v.y_ * v.y_;
-    }
-
-    static double Magnitude(const ScenePoint2D& v)
-    {
-      double squaredMagnitude = SquaredMagnitude(v);
-      if (LinearAlgebra::IsCloseToZero(squaredMagnitude))
-        return 0.0;
-      return sqrt(squaredMagnitude);
-    }
-
-    static double SquaredDistancePtPt(const ScenePoint2D& a, const ScenePoint2D& b)
-    {
-      ScenePoint2D n = b - a;
-      return Dot(n, n);
-    }
-
-    static double DistancePtPt(const ScenePoint2D& a, const ScenePoint2D& b)
-    {
-      double squaredDist = SquaredDistancePtPt(a, b);
-      return sqrt(squaredDist);
-    }
-
-    /**
-    Distance from point p to [a,b] segment
-
-    Rewritten from https://www.randygaul.net/2014/07/23/distance-point-to-line-segment/
-    */
-    static double SquaredDistancePtSegment(const ScenePoint2D& a, const ScenePoint2D& b, const ScenePoint2D& p)
-    {
-      ScenePoint2D n = b - a;
-      ScenePoint2D pa = a - p;
-
-      double c = Dot(n, pa);
-
-      // Closest point is a
-      if (c > 0.0)
-        return Dot(pa, pa);
-
-      ScenePoint2D bp = p - b;
-
-      // Closest point is b
-      if (Dot(n, bp) > 0.0)
-        return Dot(bp, bp);
-
-      // if segment length is very short, we approximate distance to the
-      // distance with a
-      double nq = Dot(n, n);
-      if (LinearAlgebra::IsCloseToZero(nq))
-      {
-        // segment is very small: approximate distance from point to segment
-        // with distance from p to a
-        return Dot(pa, pa);
-      }
-      else
-      {
-        // Closest point is between a and b
-        ScenePoint2D e = pa - n * (c / nq);
-        return Dot(e, e);
-      }
-    }
-  };
-}
-
--- a/Framework/Scene2D/TextSceneLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "TextSceneLayer.h"
-
-#include <Compatibility.h>
-
-namespace OrthancStone
-{
-  TextSceneLayer::TextSceneLayer() :
-    x_(0),
-    y_(0),
-    fontIndex_(0),
-    anchor_(BitmapAnchor_Center),
-    border_(0),
-    revision_(0)
-  {
-  }
-
-
-  ISceneLayer* TextSceneLayer::Clone() const
-  {
-    std::unique_ptr<TextSceneLayer> cloned(new TextSceneLayer);
-    cloned->SetColor(GetColor());
-    cloned->x_ = x_;
-    cloned->y_ = y_;
-    cloned->utf8_ = utf8_;
-    cloned->fontIndex_ = fontIndex_;
-    cloned->anchor_ = anchor_;
-    cloned->border_ = border_;
-    return cloned.release();
-  }
-
-  void TextSceneLayer::SetPosition(double x,
-                                   double y)
-  {
-    if (x != x_ || y != y_)
-    {
-      x_ = x;
-      y_ = y;
-      revision_++;
-    }
-  }
-
-  void TextSceneLayer::SetText(const std::string& utf8)
-  {
-    if (utf8 != utf8_)
-    {
-      utf8_ = utf8;
-      revision_++;
-    }
-  }
-
-  void TextSceneLayer::SetFontIndex(size_t fontIndex)
-  {
-    if (fontIndex != fontIndex_)
-    {
-      fontIndex_ = fontIndex;
-      revision_++;
-    }
-  }
-
-  void TextSceneLayer::SetAnchor(BitmapAnchor anchor)
-  {
-    if (anchor != anchor_)
-    {
-      anchor_ = anchor;
-      revision_++;
-    }
-  }
-
-  void TextSceneLayer::SetBorder(unsigned int border)
-  {
-    if (border != border_)
-    {
-      border_ = border;
-      revision_++;
-    }
-  }
-}
--- a/Framework/Scene2D/TextSceneLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ColorSceneLayer.h"
-#include "../StoneEnumerations.h"
-
-#include <memory>
-#include <string>
-
-namespace OrthancStone
-{
-  class TextSceneLayer : public ColorSceneLayer
-  {
-  private:
-    double         x_;
-    double         y_;
-    std::string    utf8_;
-    size_t         fontIndex_;
-    BitmapAnchor   anchor_;
-    unsigned int   border_;
-    uint64_t       revision_;
-  
-  public:
-    TextSceneLayer();
-
-    virtual ISceneLayer* Clone() const;
-
-    void SetPosition(double x,
-                     double y);
-
-    void SetText(const std::string& utf8);
-
-    void SetFontIndex(size_t fontIndex);
-
-    void SetAnchor(BitmapAnchor anchor);
-
-    void SetBorder(unsigned int border);
-
-    double GetX() const
-    {
-      return x_;
-    }
-    
-    double GetY() const
-    {
-      return y_;
-    }
-
-    unsigned int GetBorder() const
-    {
-      return border_;
-    }
-  
-    const std::string& GetText() const
-    {
-      return utf8_;
-    }
-
-    size_t GetFontIndex() const
-    {
-      return fontIndex_;
-    }
-
-    BitmapAnchor GetAnchor() const
-    {
-      return anchor_;
-    }
-
-    virtual Type GetType() const
-    {
-      return Type_Text;
-    }
-
-    virtual bool GetBoundingBox(Extent2D& target) const
-    {
-      return false;
-    }
-
-    virtual uint64_t GetRevision() const
-    {
-      return revision_;
-    }
-  };
-}
--- a/Framework/Scene2D/TextureBaseSceneLayer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "TextureBaseSceneLayer.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  void TextureBaseSceneLayer::SetTexture(Orthanc::ImageAccessor* texture)
-  {
-    if (texture == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-    else
-    {
-      texture_.reset(texture);
-      IncrementRevision();
-    }
-  }
-
-
-  void TextureBaseSceneLayer::CopyParameters(const TextureBaseSceneLayer& other)
-  {
-    originX_ = other.originX_;
-    originY_ = other.originY_;
-    pixelSpacingX_ = other.pixelSpacingX_;
-    pixelSpacingY_ = other.pixelSpacingY_;
-    angle_ = other.angle_;
-    isLinearInterpolation_ = other.isLinearInterpolation_;
-  }
-
-
-  TextureBaseSceneLayer::TextureBaseSceneLayer() :
-    originX_(0),
-    originY_(0),
-    pixelSpacingX_(1),
-    pixelSpacingY_(1),
-    angle_(0),
-    isLinearInterpolation_(false),
-    revision_(0)
-  {
-    if (pixelSpacingX_ <= 0 ||
-        pixelSpacingY_ <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-  
-  void TextureBaseSceneLayer::SetOrigin(double x,
-                                        double y)
-  {
-    originX_ = x;
-    originY_ = y;
-    IncrementRevision();
-  }
-
-
-  void TextureBaseSceneLayer::SetPixelSpacing(double sx,
-                                              double sy)
-  {
-    if (sx <= 0 ||
-        sy <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      pixelSpacingX_ = sx;
-      pixelSpacingY_ = sy;
-      IncrementRevision();
-    }
-  }
-
-  
-  void TextureBaseSceneLayer::SetAngle(double angle)
-  {
-    angle_ = angle;
-    IncrementRevision();
-  }
-
-  
-  void TextureBaseSceneLayer::SetLinearInterpolation(bool isLinearInterpolation)
-  {
-    isLinearInterpolation_ = isLinearInterpolation;
-    IncrementRevision();
-  }
-    
-
-  const Orthanc::ImageAccessor& TextureBaseSceneLayer::GetTexture() const
-  {
-    if (!HasTexture())
-    {
-      LOG(ERROR) << "TextureBaseSceneLayer::GetTexture(): (!HasTexture())";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return *texture_;
-    }
-  }
-
-  
-  AffineTransform2D TextureBaseSceneLayer::GetTransform() const
-  {
-    return AffineTransform2D::Combine(
-      AffineTransform2D::CreateOffset(originX_, originY_),
-      AffineTransform2D::CreateRotation(angle_),
-      AffineTransform2D::CreateScaling(pixelSpacingX_, pixelSpacingY_),
-      AffineTransform2D::CreateOffset(-0.5, -0.5));
-  }
-
-  
-  bool TextureBaseSceneLayer::GetBoundingBox(Extent2D& target) const
-  {
-    if (texture_.get() == NULL)
-    {
-      return false;
-    }
-    else
-    {
-      const AffineTransform2D t = GetTransform();
-
-      target.Reset();
-    
-      double x, y;
-
-      x = 0;
-      y = 0;
-      t.Apply(x, y);
-      target.AddPoint(x, y);
-
-      x = static_cast<double>(texture_->GetWidth());
-      y = 0;
-      t.Apply(x, y);
-      target.AddPoint(x, y);
-
-      x = 0;
-      y = static_cast<double>(texture_->GetHeight());
-      t.Apply(x, y);
-      target.AddPoint(x, y);
-
-      x = static_cast<double>(texture_->GetWidth());
-      y = static_cast<double>(texture_->GetHeight());
-      t.Apply(x, y);
-      target.AddPoint(x, y);    
-
-      return true;
-    }
-  }
-}
--- a/Framework/Scene2D/TextureBaseSceneLayer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "ISceneLayer.h"
-#include "../Toolbox/AffineTransform2D.h"
-
-#include <Compatibility.h>
-#include <Images/ImageAccessor.h>
-
-namespace OrthancStone
-{
-  class TextureBaseSceneLayer : public ISceneLayer
-  {
-  private:
-    std::unique_ptr<Orthanc::ImageAccessor>  texture_;
-    double                                 originX_;
-    double                                 originY_;
-    double                                 pixelSpacingX_;
-    double                                 pixelSpacingY_;
-    double                                 angle_;
-    bool                                   isLinearInterpolation_;
-    uint64_t                               revision_;
-
-  protected:
-    void SetTexture(Orthanc::ImageAccessor* texture);
-
-    void IncrementRevision() 
-    {
-      revision_++;
-    }
-
-    void CopyParameters(const TextureBaseSceneLayer& other);
-
-  public:
-    TextureBaseSceneLayer();
-
-    // Center of the top-left pixel
-    void SetOrigin(double x,
-                   double y);
-
-    void SetPixelSpacing(double sx,
-                         double sy);
-
-    // In radians
-    void SetAngle(double angle);
-
-    void SetLinearInterpolation(bool isLinearInterpolation);
-    
-    double GetOriginX() const
-    {
-      return originX_;
-    }
-
-    double GetOriginY() const
-    {
-      return originY_;
-    }
-
-    double GetPixelSpacingX() const
-    {
-      return pixelSpacingX_;
-    }
-
-    double GetPixelSpacingY() const
-    {
-      return pixelSpacingY_;
-    }
-
-    double GetAngle() const
-    {
-      return angle_;
-    }
-
-    bool IsLinearInterpolation() const
-    {
-      return isLinearInterpolation_;
-    }
-
-    bool HasTexture() const
-    {
-      return (texture_.get() != NULL);
-    }
-
-    const Orthanc::ImageAccessor& GetTexture() const;
-
-    AffineTransform2D GetTransform() const;
-    
-    virtual bool GetBoundingBox(Extent2D& target) const;
-
-    virtual uint64_t GetRevision() const
-    {
-      return revision_;
-    }
-  };
-}
--- a/Framework/Scene2D/ZoomSceneTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ZoomSceneTracker.h"
-#include "../Scene2DViewport/ViewportController.h"
-
-namespace OrthancStone
-{
-  ZoomSceneTracker::ZoomSceneTracker(boost::shared_ptr<IViewport> viewport,
-                                     const PointerEvent& event,
-                                     unsigned int canvasHeight)
-    : OneGesturePointerTracker(viewport)
-    , clickY_(event.GetMainPosition().GetY())
-    , aligner_(viewport, event.GetMainPosition())
-  {
-    
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform();
-
-    if (canvasHeight <= 3)
-    {
-      active_ = false;
-    }
-    else
-    {
-      normalization_ = 1.0 / static_cast<double>(canvasHeight - 1);
-      active_ = true;
-    }
-  }
-  
-  void ZoomSceneTracker::PointerMove(const PointerEvent& event)
-  {
-    static const double MIN_ZOOM = -4;
-    static const double MAX_ZOOM = 4;
-      
-    if (active_)
-    {
-      double y = event.GetMainPosition().GetY();
-      
-      // In the range [-1,1]
-      double dy = static_cast<double>(y - clickY_) * normalization_;  
-      
-      double z;
-
-      // Linear interpolation from [-1, 1] to [MIN_ZOOM, MAX_ZOOM]
-      if (dy < -1.0)
-      {
-        z = MIN_ZOOM;
-      }
-      else if (dy > 1.0)
-      {
-        z = MAX_ZOOM;
-      }
-      else
-      {
-        z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0;
-      }
-
-      double zoom = pow(2.0, z);
-
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      lock->GetController().SetSceneToCanvasTransform(
-        AffineTransform2D::Combine(
-          AffineTransform2D::CreateScaling(zoom, zoom),
-          originalSceneToCanvas_));
-      aligner_.Apply();
-      lock->Invalidate();
-    }
-  }
-
-  void ZoomSceneTracker::Cancel()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_);
-    lock->Invalidate();
-  }
-}
--- a/Framework/Scene2D/ZoomSceneTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-
-#include "../Scene2DViewport/OneGesturePointerTracker.h"
-#include "../Viewport/IViewport.h"
-#include "Internals/FixedPointAligner.h"
-
-#include <boost/weak_ptr.hpp>
-
-namespace OrthancStone
-{
-  class ZoomSceneTracker : public OneGesturePointerTracker
-  {
-  public:
-    ZoomSceneTracker(boost::shared_ptr<IViewport> viewport,
-                     const PointerEvent& event,
-                     unsigned int canvasHeight);
-
-    virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE;
-    virtual void Cancel() ORTHANC_OVERRIDE;
-  
-  private:
-    double                        clickY_;
-    bool                          active_;
-    double                        normalization_;
-    Internals::FixedPointAligner  aligner_;
-    AffineTransform2D             originalSceneToCanvas_;
-
-  };
-}
--- a/Framework/Scene2DViewport/AngleMeasureTool.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,427 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "AngleMeasureTool.h"
-#include "MeasureToolsToolbox.h"
-#include "EditAngleMeasureTracker.h"
-#include "LayerHolder.h"
-#include "../StoneException.h"
-
-#include <Logging.h>
-
-#include <boost/math/constants/constants.hpp>
-#include <boost/make_shared.hpp>
-
-//// <HACK>
-//// REMOVE THIS
-//#ifndef NDEBUG
-//extern void 
-//TrackerSample_SetInfoDisplayMessage(std::string key, std::string value);
-//#endif
-//// </HACK>
-
-namespace OrthancStone
-{
-  // the params in the LayerHolder ctor specify the number of polyline and text
-  // layers
-  AngleMeasureTool::AngleMeasureTool(
-    boost::shared_ptr<IViewport> viewport)
-    : MeasureTool(viewport)
-#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
-    , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,5)))
-#else
-    , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,1)))
-#endif
-    , angleHighlightArea_(AngleHighlightArea_None)
-  {
-  }
-
-  boost::shared_ptr<AngleMeasureTool> AngleMeasureTool::Create(boost::shared_ptr<IViewport> viewport)
-  {
-    boost::shared_ptr<AngleMeasureTool> obj(new AngleMeasureTool(viewport));
-    obj->MeasureTool::PostConstructor();
-    obj->RefreshScene();
-    return obj;
-  }
-
-  AngleMeasureTool::~AngleMeasureTool()
-  {
-    // this measuring tool is a RABI for the corresponding visual layers
-    // stored in the 2D scene
-    Disable();
-    RemoveFromScene();
-  }
-
-  void AngleMeasureTool::RemoveFromScene()
-  {
-    if (layerHolder_->AreLayersCreated() && IsSceneAlive())
-    {
-      layerHolder_->DeleteLayers();
-    }
-  }
-
-  void AngleMeasureTool::SetSide1End(ScenePoint2D pt)
-  {
-    side1End_ = pt;
-    RefreshScene();
-  }
-
-  void AngleMeasureTool::SetSide2End(ScenePoint2D pt)
-  {
-    side2End_ = pt;
-    RefreshScene();
-  }
-
-  void AngleMeasureTool::SetAngleHighlightArea(AngleHighlightArea area)
-  {
-    if (angleHighlightArea_ != area)
-    {
-      angleHighlightArea_ = area;
-      RefreshScene();
-    }
-  }
-
-  void AngleMeasureTool::ResetHighlightState()
-  {
-    SetAngleHighlightArea(AngleHighlightArea_None);
-  }
-
-
-  boost::shared_ptr<OrthancStone::MeasureToolMemento> AngleMeasureTool::GetMemento() const
-  {
-    boost::shared_ptr<AngleMeasureToolMemento> memento(new AngleMeasureToolMemento());
-    memento->center_ = center_;
-    memento->side1End_ = side1End_;
-    memento->side2End_ = side2End_;
-    return memento;
-  }
-  
-  void AngleMeasureTool::SetMemento(boost::shared_ptr<MeasureToolMemento> mementoBase)
-  {
-    boost::shared_ptr<AngleMeasureToolMemento> memento = 
-      boost::dynamic_pointer_cast<AngleMeasureToolMemento>(mementoBase);
-
-    ORTHANC_ASSERT(memento.get() != NULL, "Internal error: wrong (or bad) memento");
-    center_   = memento->center_;
-    side1End_ = memento->side1End_;
-    side2End_ = memento->side2End_;
-    RefreshScene();
-  }
-
-  std::string AngleMeasureTool::GetDescription()
-  {
-    std::stringstream ss;
-    ss << "AngleMeasureTool. Center = " << center_ << " Side1End = " 
-       << side1End_ << " Side2End = " << side2End_;
-    return ss.str();
-  }
-
-  void AngleMeasureTool::Highlight(ScenePoint2D p)
-  {
-    AngleHighlightArea angleHighlightArea = AngleHitTest(p);
-    SetAngleHighlightArea(angleHighlightArea);
-  }
-
-  AngleMeasureTool::AngleHighlightArea AngleMeasureTool::AngleHitTest(ScenePoint2D p) const
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    const double pixelToScene = scene.GetCanvasToSceneTransform().ComputeZoom();
-
-    const double SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD = 
-      pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD * 
-      pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD;
-
-    {
-      const double sqDistanceFromSide1End = 
-        ScenePoint2D::SquaredDistancePtPt(p, side1End_);
-
-      if (sqDistanceFromSide1End <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
-        return AngleHighlightArea_Side1End;
-    }
-
-    {
-      const double sqDistanceFromSide2End = 
-        ScenePoint2D::SquaredDistancePtPt(p, side2End_);
-
-      if (sqDistanceFromSide2End <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
-        return AngleHighlightArea_Side2End;
-    }
-
-    {
-      const double sqDistanceFromCenter = 
-        ScenePoint2D::SquaredDistancePtPt(p, center_);
-      if (sqDistanceFromCenter <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
-        return AngleHighlightArea_Center;
-    }
-
-    {
-      const double sqDistanceFromSide1 = 
-        ScenePoint2D::SquaredDistancePtSegment(center_, side1End_, p);
-
-      if (sqDistanceFromSide1 <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
-        return AngleHighlightArea_Side1;
-    }
-
-    {
-      const double sqDistanceFromSide2 = 
-        ScenePoint2D::SquaredDistancePtSegment(center_, side2End_, p);
-
-      if (sqDistanceFromSide2 <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
-        return AngleHighlightArea_Side2;
-    }
-
-    return AngleHighlightArea_None;
-  }
-
-  bool AngleMeasureTool::HitTest(ScenePoint2D p)
-  {
-    return AngleHitTest(p) != AngleHighlightArea_None;
-  }
-
-
-  boost::shared_ptr<IFlexiblePointerTracker> AngleMeasureTool::CreateEditionTracker(const PointerEvent& e)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    ScenePoint2D scenePos = e.GetMainPosition().Apply(
-      scene.GetCanvasToSceneTransform());
-
-    if (!HitTest(scenePos))
-      return boost::shared_ptr<IFlexiblePointerTracker>();
-
-    /**
-      new EditLineMeasureTracker(
-        boost::shared_ptr<LineMeasureTool> measureTool;
-        MessageBroker & broker,
-        boost::shared_ptr<IViewport>          viewport,
-        const PointerEvent & e);
-    */
-
-    boost::shared_ptr<EditAngleMeasureTracker> editAngleMeasureTracker(
-      new EditAngleMeasureTracker(shared_from_this(), viewport_, e));
-    return editAngleMeasureTracker;
-  }
-
-  void AngleMeasureTool::SetCenter(ScenePoint2D pt)
-  {
-    center_ = pt;
-    RefreshScene();
-  }
-  
-  void AngleMeasureTool::RefreshScene()
-  {
-    if (IsSceneAlive())
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      ViewportController& controller = lock->GetController();
-      Scene2D& scene = controller.GetScene();
-
-      if (IsEnabled())
-      {
-        layerHolder_->CreateLayersIfNeeded();
-
-        {
-          // Fill the polyline layer with the measurement lines
-          PolylineSceneLayer* polylineLayer = layerHolder_->GetPolylineLayer(0);
-          if (polylineLayer)
-          {
-            polylineLayer->ClearAllChains();
-
-            const Color color(TOOL_ANGLE_LINES_COLOR_RED, 
-                              TOOL_ANGLE_LINES_COLOR_GREEN, 
-                              TOOL_ANGLE_LINES_COLOR_BLUE);
-
-            const Color highlightColor(TOOL_ANGLE_LINES_HL_COLOR_RED, 
-                                       TOOL_ANGLE_LINES_HL_COLOR_GREEN, 
-                                       TOOL_ANGLE_LINES_HL_COLOR_BLUE);
-
-            // sides
-            {
-              {
-                PolylineSceneLayer::Chain chain;
-                chain.push_back(side1End_);
-                chain.push_back(center_);
-
-                if ((angleHighlightArea_ == AngleHighlightArea_Side1) ||
-                    (angleHighlightArea_ == AngleHighlightArea_Side2))
-                {
-                  polylineLayer->AddChain(chain, false, highlightColor);
-                } 
-                else
-                {
-                  polylineLayer->AddChain(chain, false, color);
-                }
-              }
-              {
-                PolylineSceneLayer::Chain chain;
-                chain.push_back(side2End_);
-                chain.push_back(center_);
-                if ((angleHighlightArea_ == AngleHighlightArea_Side1) ||
-                  (angleHighlightArea_ == AngleHighlightArea_Side2))
-                {
-                  polylineLayer->AddChain(chain, false, highlightColor);
-                }
-                else
-                {
-                  polylineLayer->AddChain(chain, false, color);
-                }
-              }
-            }
-
-            // Create the handles
-            {
-              {
-                PolylineSceneLayer::Chain chain;
-                //TODO: take DPI into account
-                AddSquare(chain, controller.GetScene(), side1End_, 
-                          controller.GetHandleSideLengthS());
-              
-                if (angleHighlightArea_ == AngleHighlightArea_Side1End)
-                  polylineLayer->AddChain(chain, true, highlightColor);
-                else
-                  polylineLayer->AddChain(chain, true, color);
-              
-              }
-              {
-                PolylineSceneLayer::Chain chain;
-                //TODO: take DPI into account
-                AddSquare(chain, controller.GetScene(), side2End_, 
-                          controller.GetHandleSideLengthS());
-
-                if (angleHighlightArea_ == AngleHighlightArea_Side2End)
-                  polylineLayer->AddChain(chain, true, highlightColor);
-                else
-                  polylineLayer->AddChain(chain, true, color);
-              }
-            }
-
-            // Create the arc
-            {
-              PolylineSceneLayer::Chain chain;
-
-              AddShortestArc(chain, side1End_, center_, side2End_,
-                             controller.GetAngleToolArcRadiusS());
-              if (angleHighlightArea_ == AngleHighlightArea_Center)
-                polylineLayer->AddChain(chain, false, highlightColor);
-              else
-                polylineLayer->AddChain(chain, false, color);
-            }
-          }
-        }
-        {
-          // Set the text layer
-
-          double p1cAngle = atan2(
-            side1End_.GetY() - center_.GetY(),
-            side1End_.GetX() - center_.GetX());
-
-          double p2cAngle = atan2(
-            side2End_.GetY() - center_.GetY(),
-            side2End_.GetX() - center_.GetX());
-
-          double delta = NormalizeAngle(p2cAngle - p1cAngle);
-          double theta = p1cAngle + delta / 2;
-
-          double ox = controller.GetAngleTopTextLabelDistanceS() * cos(theta);
-          double oy = controller.GetAngleTopTextLabelDistanceS() * sin(theta);
-
-          double pointX = center_.GetX() + ox;
-          double pointY = center_.GetY() + oy;
-
-          char buf[64];
-          double angleDeg = RadiansToDegrees(delta);
-
-          // http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=00B0&mode=hex
-          sprintf(buf, "%0.02f\xc2\xb0", angleDeg);
-
-#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
-          SetTextLayerOutlineProperties(
-            scene, layerHolder_, buf, ScenePoint2D(pointX, pointY), 0);
-#else
-          SetTextLayerProperties(
-            scene, layerHolder_, buf, ScenePoint2D(pointX, pointY) , 0);
-#endif
-
-#if 0
-          // TODO:make it togglable
-          bool enableInfoDisplay = true;
-          if (enableInfoDisplay)
-          {
-            TrackerSample_SetInfoDisplayMessage("center_.GetX()",
-              boost::lexical_cast<std::string>(center_.GetX()));
-
-            TrackerSample_SetInfoDisplayMessage("center_.GetY()",
-              boost::lexical_cast<std::string>(center_.GetY()));
-
-            TrackerSample_SetInfoDisplayMessage("side1End_.GetX()",
-              boost::lexical_cast<std::string>(side1End_.GetX()));
-
-            TrackerSample_SetInfoDisplayMessage("side1End_.GetY()",
-              boost::lexical_cast<std::string>(side1End_.GetY()));
-
-            TrackerSample_SetInfoDisplayMessage("side2End_.GetX()",
-              boost::lexical_cast<std::string>(side2End_.GetX()));
-
-            TrackerSample_SetInfoDisplayMessage("side2End_.GetY()",
-              boost::lexical_cast<std::string>(side2End_.GetY()));
-
-            TrackerSample_SetInfoDisplayMessage("p1cAngle (deg)",
-              boost::lexical_cast<std::string>(RadiansToDegrees(p1cAngle)));
-
-            TrackerSample_SetInfoDisplayMessage("delta (deg)",
-              boost::lexical_cast<std::string>(RadiansToDegrees(delta)));
-
-            TrackerSample_SetInfoDisplayMessage("theta (deg)",
-              boost::lexical_cast<std::string>(RadiansToDegrees(theta)));
-
-            TrackerSample_SetInfoDisplayMessage("p2cAngle (deg)",
-              boost::lexical_cast<std::string>(RadiansToDegrees(p2cAngle)));
-
-            TrackerSample_SetInfoDisplayMessage("ox (scene)",
-              boost::lexical_cast<std::string>(ox));
-
-            TrackerSample_SetInfoDisplayMessage("offsetY (scene)",
-              boost::lexical_cast<std::string>(oy));
-
-            TrackerSample_SetInfoDisplayMessage("pointX",
-              boost::lexical_cast<std::string>(pointX));
-
-            TrackerSample_SetInfoDisplayMessage("pointY",
-              boost::lexical_cast<std::string>(pointY));
-
-            TrackerSample_SetInfoDisplayMessage("angleDeg",
-              boost::lexical_cast<std::string>(angleDeg));
-          }
-#endif
-        }
-      }
-      else
-      {
-        RemoveFromScene();
-      }
-      lock->Invalidate();
-    }
-  }
-}
--- a/Framework/Scene2DViewport/AngleMeasureTool.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "MeasureTool.h"
-
-#include "../Scene2DViewport/LayerHolder.h"
-#include "../Scene2D/Scene2D.h"
-#include "../Scene2D/ScenePoint2D.h"
-#include "../Scene2D/PolylineSceneLayer.h"
-#include "../Scene2D/TextSceneLayer.h"
-
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include <vector>
-#include <cmath>
-
-namespace OrthancStone
-{
-  class AngleMeasureTool : public MeasureTool
-  {
-  public:
-    static boost::shared_ptr<AngleMeasureTool> Create(boost::shared_ptr<IViewport> viewport);
-
-    ~AngleMeasureTool();
-
-    void SetSide1End(ScenePoint2D start);
-    void SetCenter(ScenePoint2D start);
-    void SetSide2End(ScenePoint2D start);
-
-    virtual bool HitTest(ScenePoint2D p) ORTHANC_OVERRIDE;
-    virtual void Highlight(ScenePoint2D p) ORTHANC_OVERRIDE;
-    virtual void ResetHighlightState() ORTHANC_OVERRIDE;
-    virtual boost::shared_ptr<IFlexiblePointerTracker> CreateEditionTracker(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual boost::shared_ptr<MeasureToolMemento> GetMemento() const ORTHANC_OVERRIDE;
-    virtual void SetMemento(boost::shared_ptr<MeasureToolMemento>) ORTHANC_OVERRIDE;
-    virtual std::string GetDescription() ORTHANC_OVERRIDE;
-
-    enum AngleHighlightArea
-    {
-      AngleHighlightArea_None,
-      AngleHighlightArea_Side1End,
-      AngleHighlightArea_Side1,
-      AngleHighlightArea_Side2End,
-      AngleHighlightArea_Side2,
-      AngleHighlightArea_Center
-    };
-
-
-    AngleHighlightArea AngleHitTest(ScenePoint2D p) const;
-
-  private:
-    AngleMeasureTool(boost::shared_ptr<IViewport> viewport);
-
-    virtual void        RefreshScene() ORTHANC_OVERRIDE;
-    void                RemoveFromScene();
-    void                SetAngleHighlightArea(AngleHighlightArea area);
-
-  private:
-    ScenePoint2D                    side1End_;
-    ScenePoint2D                    side2End_;
-    ScenePoint2D                    center_;
-    boost::shared_ptr<LayerHolder>  layerHolder_;
-    AngleHighlightArea              angleHighlightArea_;
-  };
-
-  class AngleMeasureToolMemento : public MeasureToolMemento
-  {
-  public:
-    ScenePoint2D                    side1End_;
-    ScenePoint2D                    side2End_;
-    ScenePoint2D                    center_;
-  };
-}
-
-
--- a/Framework/Scene2DViewport/CreateAngleMeasureCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "CreateAngleMeasureCommand.h"
-
-#include <boost/make_shared.hpp>
-#include <boost/ref.hpp>
-
-namespace OrthancStone
-{
-  CreateAngleMeasureCommand::CreateAngleMeasureCommand(
-    boost::shared_ptr<IViewport> viewport,
-    ScenePoint2D           point)
-    : CreateMeasureCommand(viewport)
-    , measureTool_(AngleMeasureTool::Create(viewport))
-  {
-    
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-
-    controller.AddMeasureTool(measureTool_);
-    measureTool_->SetSide1End(point);
-    measureTool_->SetCenter(point);
-    measureTool_->SetSide2End(point);
-  }
-
-  /** This method sets center*/
-  void CreateAngleMeasureCommand::SetCenter(ScenePoint2D scenePos)
-  {
-    measureTool_->SetCenter(scenePos);
-  }
-
-  /** This method sets end of side 2*/
-  void CreateAngleMeasureCommand::SetSide2End(ScenePoint2D scenePos)
-  {
-    measureTool_->SetSide2End(scenePos);
-  }
-}
--- a/Framework/Scene2DViewport/CreateAngleMeasureCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include "MeasureCommands.h"
-
-namespace OrthancStone
-{
-  class CreateAngleMeasureCommand : public CreateMeasureCommand
-  {
-  public:
-    /** Ctor sets end of side 1*/
-    CreateAngleMeasureCommand(
-      boost::shared_ptr<IViewport> viewport,
-      ScenePoint2D           point);
-
-    /** This method sets center*/
-    void SetCenter(ScenePoint2D scenePos);
-
-    /** This method sets end of side 2*/
-    void SetSide2End(ScenePoint2D scenePos);
-
-  private:
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() ORTHANC_OVERRIDE
-    {
-      return measureTool_;
-    }
-    boost::shared_ptr<AngleMeasureTool> measureTool_;
-  };
-}
--- a/Framework/Scene2DViewport/CreateAngleMeasureTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "CreateAngleMeasureTracker.h"
-#include "CreateAngleMeasureCommand.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  CreateAngleMeasureTracker::CreateAngleMeasureTracker(
-    boost::shared_ptr<IViewport> viewport,
-    const PointerEvent& e)
-    : CreateMeasureTracker(viewport)
-    , state_(CreatingSide1)
-  {
-    ScenePoint2D point = e.GetMainPosition();
-    {    
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      Scene2D& scene = lock->GetController().GetScene();
-      point = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform());
-    }
-    command_.reset(new CreateAngleMeasureCommand(viewport, point));
-  }
-
-  CreateAngleMeasureTracker::~CreateAngleMeasureTracker()
-  {
-  }
-
-  void CreateAngleMeasureTracker::PointerMove(const PointerEvent& event)
-  {
-    if (!alive_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-        "Internal error: wrong state in CreateAngleMeasureTracker::"
-        "PointerMove: active_ == false");
-    }
-
-    
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      ViewportController& controller = lock->GetController();
-
-      ScenePoint2D scenePos = event.GetMainPosition().Apply(
-        controller.GetScene().GetCanvasToSceneTransform());
-
-      switch (state_)
-      {
-        case CreatingSide1:
-          GetCommand()->SetCenter(scenePos);
-          break;
-        case CreatingSide2:
-          GetCommand()->SetSide2End(scenePos);
-          break;
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                          "Wrong state in CreateAngleMeasureTracker::"
-                                          "PointerMove: state_ invalid");
-      }
-      //LOG(TRACE) << "scenePos.GetX() = " << scenePos.GetX() << "     " <<
-      //  "scenePos.GetY() = " << scenePos.GetY();
-      lock->Invalidate();
-    }
-  }
-
-  void CreateAngleMeasureTracker::PointerUp(const PointerEvent& e)
-  {
-    // TODO: the current app does not prevent multiple PointerDown AND
-    // PointerUp to be sent to the tracker.
-    // Unless we augment the PointerEvent structure with the button index, 
-    // we cannot really tell if this pointer up event matches the initial
-    // pointer down event. Let's make it simple for now.
-
-    switch (state_)
-    {
-    case CreatingSide1:
-      state_ = CreatingSide2;
-      break;
-    case CreatingSide2:
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-        "Wrong state in CreateAngleMeasureTracker::"
-        "PointerUp: state_ == CreatingSide2 ; this should not happen");
-      break;
-    default:
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-        "Wrong state in CreateAngleMeasureTracker::"
-        "PointerMove: state_ invalid");
-    }
-  }
-
-  void CreateAngleMeasureTracker::PointerDown(const PointerEvent& e)
-  {
-    switch (state_)
-    {
-    case CreatingSide1:
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-        "Wrong state in CreateAngleMeasureTracker::"
-        "PointerDown: state_ == CreatingSide1 ; this should not happen");
-      break;
-    case CreatingSide2:
-      // we are done
-      alive_ = false;
-      break;
-    default:
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-        "Wrong state in CreateAngleMeasureTracker::"
-        "PointerMove: state_ invalid");
-    }
-  }
-
-  boost::shared_ptr<CreateAngleMeasureCommand> CreateAngleMeasureTracker::GetCommand()
-  {
-    return boost::dynamic_pointer_cast<CreateAngleMeasureCommand>(command_);
-  }
-
-}
--- a/Framework/Scene2DViewport/CreateAngleMeasureTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "MeasureTrackers.h"
-#include "MeasureCommands.h"
-
-#include <vector>
-
-namespace OrthancStone
-{
-  class CreateAngleMeasureTracker : public CreateMeasureTracker
-  {
-  public:
-    /**
-    When you create this tracker, you need to supply it with the undo stack
-    where it will store the commands that perform the actual measure tool
-    creation and modification.
-    In turn, a container for these commands to store the actual measuring
-    must be supplied, too
-    */
-    CreateAngleMeasureTracker(
-      boost::shared_ptr<IViewport>          viewport,
-      const PointerEvent&             e);
-
-    ~CreateAngleMeasureTracker();
-
-    virtual void PointerMove(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual void PointerUp(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual void PointerDown(const PointerEvent& e) ORTHANC_OVERRIDE;
-
-  private:
-    boost::shared_ptr<CreateAngleMeasureCommand> GetCommand();
-
-    enum State
-    {
-      CreatingSide1,
-      CreatingSide2,
-      Finished // just for debug
-    };
-    State state_;
-
-  };
-}
--- a/Framework/Scene2DViewport/CreateCircleMeasureTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-namespace OrthancStone
-{
-}
--- a/Framework/Scene2DViewport/CreateCircleMeasureTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-namespace OrthancStone
-{
-}
--- a/Framework/Scene2DViewport/CreateLineMeasureCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "CreateLineMeasureCommand.h"
-
-#include <boost/make_shared.hpp>
-#include <boost/ref.hpp>
-
-namespace OrthancStone
-{
-  CreateLineMeasureCommand::CreateLineMeasureCommand(
-    boost::shared_ptr<IViewport> viewport,
-    ScenePoint2D           point)
-    : CreateMeasureCommand(viewport)
-    , measureTool_(LineMeasureTool::Create(viewport))
-  {
-    
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    controller.AddMeasureTool(measureTool_);
-    measureTool_->Set(point, point);
-    lock->Invalidate();
-  }
-
-  void CreateLineMeasureCommand::SetEnd(ScenePoint2D scenePos)
-  {
-    measureTool_->SetEnd(scenePos);
-  }
-}
--- a/Framework/Scene2DViewport/CreateLineMeasureCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include "MeasureCommands.h"
-
-namespace OrthancStone
-{
-  class CreateLineMeasureCommand : public CreateMeasureCommand
-  {
-  public:
-    CreateLineMeasureCommand(
-      boost::shared_ptr<IViewport> viewport,
-      ScenePoint2D           point);
-
-    // the starting position is set in the ctor
-    void SetEnd(ScenePoint2D scenePos);
-
-  private:
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() ORTHANC_OVERRIDE
-    {
-      return measureTool_;
-    }
-    boost::shared_ptr<LineMeasureTool> measureTool_;
-  };
-}
-
-
--- a/Framework/Scene2DViewport/CreateLineMeasureTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "CreateLineMeasureTracker.h"
-#include "CreateLineMeasureCommand.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  CreateLineMeasureTracker::CreateLineMeasureTracker(
-    boost::shared_ptr<IViewport>          viewport,
-    const PointerEvent&             e)
-    : CreateMeasureTracker(viewport)
-  {
-    ScenePoint2D point = e.GetMainPosition();
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      ViewportController& controller = lock->GetController();
-      point = e.GetMainPosition().Apply(controller.GetScene().GetCanvasToSceneTransform());
-    }
-    command_.reset(new CreateLineMeasureCommand(viewport, point));
-  }
-
-  CreateLineMeasureTracker::~CreateLineMeasureTracker()
-  {
-
-  }
-
-  void CreateLineMeasureTracker::PointerMove(const PointerEvent& event)
-  {
-    if (!alive_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-        "Internal error: wrong state in CreateLineMeasureTracker::"
-        "PointerMove: active_ == false");
-    }
-
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-
-    ScenePoint2D scenePos = event.GetMainPosition().Apply(
-      controller.GetScene().GetCanvasToSceneTransform());
-      
-    //LOG(TRACE) << "scenePos.GetX() = " << scenePos.GetX() << "     " <<
-    //  "scenePos.GetY() = " << scenePos.GetY();
-      
-    CreateLineMeasureTracker* concreteThis =
-      dynamic_cast<CreateLineMeasureTracker*>(this);
-    assert(concreteThis != NULL);
-    GetCommand()->SetEnd(scenePos);
-  }
-
-  void CreateLineMeasureTracker::PointerUp(const PointerEvent& e)
-  {
-    // TODO: the current app does not prevent multiple PointerDown AND
-    // PointerUp to be sent to the tracker.
-    // Unless we augment the PointerEvent structure with the button index, 
-    // we cannot really tell if this pointer up event matches the initial
-    // pointer down event. Let's make it simple for now.
-    alive_ = false;
-  }
-
-  void CreateLineMeasureTracker::PointerDown(const PointerEvent& e)
-  {
-    LOG(WARNING) << "Additional touches (fingers, pen, mouse buttons...) "
-      "are ignored when the line measure creation tracker is active";
-  }
-
-  boost::shared_ptr<CreateLineMeasureCommand> CreateLineMeasureTracker::GetCommand()
-  {
-    return boost::dynamic_pointer_cast<CreateLineMeasureCommand>(command_);
-  }
-}
--- a/Framework/Scene2DViewport/CreateLineMeasureTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "MeasureTrackers.h"
-
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-
-namespace OrthancStone
-{
-  class CreateLineMeasureTracker : public CreateMeasureTracker
-  {
-  public:
-    /**
-    When you create this tracker, you need to supply it with the undo stack
-    where it will store the commands that perform the actual measure tool
-    creation and modification.
-    In turn, a container for these commands to store the actual measuring
-    must be supplied, too
-    */
-    CreateLineMeasureTracker(
-      boost::shared_ptr<IViewport>          viewport,
-      const PointerEvent&             e);
-
-    ~CreateLineMeasureTracker();
-
-    virtual void PointerMove(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual void PointerUp(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual void PointerDown(const PointerEvent& e) ORTHANC_OVERRIDE;
-
-  private:
-    boost::shared_ptr<CreateLineMeasureCommand> GetCommand();
-  };
-}
--- a/Framework/Scene2DViewport/CreateMeasureTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
--- a/Framework/Scene2DViewport/CreateMeasureTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
--- a/Framework/Scene2DViewport/CreateSimpleTrackerAdapter.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "IFlexiblePointerTracker.h"
-#include "../Scene2D/IPointerTracker.h"
-
-
-namespace OrthancStone
-{
-#if 0
-  namespace
-  {
-    class SimpleTrackerAdapter : public IFlexiblePointerTracker
-    {
-    public:
-      SimpleTrackerAdapter(boost::shared_ptr<IPointerTracker> wrappedTracker)
-        : wrappedTracker_(wrappedTracker)
-        , active_(true)
-      {
-      }
-
-      virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE
-      {
-        if(active_)
-          wrappedTracker_->Update(event);
-      };
-      virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE
-      {
-        if (wrappedTracker_)
-        {
-          wrappedTracker_->Release();
-          wrappedTracker_ = NULL;
-        }
-        active_ = false;
-      }
-      virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE
-      {
-        // nothing to do atm
-      }
-      virtual bool IsActive() const ORTHANC_OVERRIDE
-      {
-        return active_;
-      }
-
-      virtual void Cancel() ORTHANC_OVERRIDE
-      {
-        wrappedTracker_ = NULL;
-        active_ = false;
-      }
-
-    private:
-      boost::shared_ptr<IPointerTracker> wrappedTracker_;
-      bool active_;
-    };
-  }
-
-  boost::shared_ptr<IFlexiblePointerTracker> CreateSimpleTrackerAdapter(boost::shared_ptr<IPointerTracker> t)
-  {
-    return boost::shared_ptr<IFlexiblePointerTracker>(new SimpleTrackerAdapter(t));
-  }
-#endif
-}
--- a/Framework/Scene2DViewport/EditAngleMeasureCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "EditAngleMeasureCommand.h"
-
-namespace OrthancStone
-{
-  EditAngleMeasureCommand::EditAngleMeasureCommand(
-    boost::shared_ptr<MeasureTool>  measureTool,
-    boost::shared_ptr<IViewport> viewport)
-    : EditMeasureCommand(measureTool, viewport)
-    , measureTool_(measureTool)
-  {
-  }
-
-  void EditAngleMeasureCommand::SetCenter(ScenePoint2D scenePos)
-  {
-    dynamic_cast<AngleMeasureTool&>(*measureTool_).SetCenter(scenePos);
-    mementoModified_ = measureTool_->GetMemento();
-  }
-
-
-  void EditAngleMeasureCommand::SetSide1End(ScenePoint2D scenePos)
-  {
-    dynamic_cast<AngleMeasureTool&>(*measureTool_).SetSide1End(scenePos);
-    mementoModified_ = measureTool_->GetMemento();
-  }
-
-
-  void EditAngleMeasureCommand::SetSide2End(ScenePoint2D scenePos)
-  {
-    dynamic_cast<AngleMeasureTool&>(*measureTool_).SetSide2End(scenePos);
-    mementoModified_ = measureTool_->GetMemento();
-  }
-}
--- a/Framework/Scene2DViewport/EditAngleMeasureCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include "MeasureCommands.h"
-
-namespace OrthancStone
-{
-  class EditAngleMeasureCommand : public EditMeasureCommand
-  {
-  public:
-    /** Ctor sets end of side 1*/
-    EditAngleMeasureCommand(
-      boost::shared_ptr<MeasureTool>  measureTool,
-      boost::shared_ptr<IViewport> viewport);
-
-    /** This method sets center*/
-    void SetCenter(ScenePoint2D scenePos);
-
-    /** This method sets end of side 1*/
-    void SetSide1End(ScenePoint2D scenePos);
-
-    /** This method sets end of side 2*/
-    void SetSide2End(ScenePoint2D scenePos);
-
-  private:
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() ORTHANC_OVERRIDE
-    {
-      return measureTool_;
-    }
-    boost::shared_ptr<MeasureTool> measureTool_;
-  };
-}
--- a/Framework/Scene2DViewport/EditAngleMeasureTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "EditAngleMeasureTracker.h"
-#include "EditAngleMeasureCommand.h"
-
-#include "../StoneException.h"
-
-namespace OrthancStone
-{
-  EditAngleMeasureTracker::EditAngleMeasureTracker(
-    boost::shared_ptr<MeasureTool>  measureTool,
-    boost::shared_ptr<IViewport> viewport,
-    const PointerEvent& e)
-    : EditMeasureTracker(viewport, e)
-  {
-    ScenePoint2D scenePos = e.GetMainPosition();
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      ViewportController& controller = lock->GetController();
-      scenePos = e.GetMainPosition().Apply(controller.GetScene().GetCanvasToSceneTransform());
-    }
-    modifiedZone_ = dynamic_cast<AngleMeasureTool&>(*measureTool).AngleHitTest(scenePos);
-    command_.reset(new EditAngleMeasureCommand(measureTool, viewport));
-  }
-
-  EditAngleMeasureTracker::~EditAngleMeasureTracker()
-  {
-
-  }
-
-  void EditAngleMeasureTracker::PointerMove(const PointerEvent& e)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    ScenePoint2D scenePos = e.GetMainPosition().Apply(
-      scene.GetCanvasToSceneTransform());
-
-    ScenePoint2D delta = scenePos - GetOriginalClickPosition();
-
-    boost::shared_ptr<AngleMeasureToolMemento> memento =
-      boost::dynamic_pointer_cast<AngleMeasureToolMemento>(command_->mementoOriginal_);
-
-    ORTHANC_ASSERT(memento.get() != NULL);
-
-    switch (modifiedZone_)
-    {
-      case AngleMeasureTool::AngleHighlightArea_Center:
-      {
-        ScenePoint2D newCenter = memento->center_ + delta;
-        GetCommand()->SetCenter(newCenter);
-      }
-      break;
-      case AngleMeasureTool::AngleHighlightArea_Side1:
-      case AngleMeasureTool::AngleHighlightArea_Side2:
-      {
-        ScenePoint2D newCenter = memento->center_ + delta;
-        ScenePoint2D newSide1End = memento->side1End_ + delta;
-        ScenePoint2D newSide2End = memento->side2End_ + delta;
-        GetCommand()->SetCenter(newCenter);
-        GetCommand()->SetSide1End(newSide1End);
-        GetCommand()->SetSide2End(newSide2End);
-      }
-      break;
-      case AngleMeasureTool::AngleHighlightArea_Side1End:
-      {
-        ScenePoint2D newSide1End = memento->side1End_ + delta;
-        GetCommand()->SetSide1End(newSide1End);
-      }
-      break;
-      case AngleMeasureTool::AngleHighlightArea_Side2End:
-      {
-        ScenePoint2D newSide2End = memento->side2End_ + delta;
-        GetCommand()->SetSide2End(newSide2End);
-      }
-      break;
-      default:
-        LOG(WARNING) << "Warning: please retry the measuring tool editing operation!";
-        break;
-    }
-  }
-
-  void EditAngleMeasureTracker::PointerUp(const PointerEvent& e)
-  {
-    alive_ = false;
-  }
-
-  void EditAngleMeasureTracker::PointerDown(const PointerEvent& e)
-  {
-    LOG(WARNING) << "Additional touches (fingers, pen, mouse buttons...) "
-      "are ignored when the edit angle tracker is active";
-  }
-
-  boost::shared_ptr<EditAngleMeasureCommand> EditAngleMeasureTracker::GetCommand()
-  {
-    boost::shared_ptr<EditAngleMeasureCommand> ret = boost::dynamic_pointer_cast<EditAngleMeasureCommand>(command_);
-    ORTHANC_ASSERT(ret.get() != NULL, "Internal error in EditAngleMeasureTracker::GetCommand()");
-    return ret;
-  }
-}
--- a/Framework/Scene2DViewport/EditAngleMeasureTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "MeasureTrackers.h"
-
-namespace OrthancStone
-{
-  class EditAngleMeasureCommand;
-
-  class EditAngleMeasureTracker : public EditMeasureTracker
-  {
-  public:
-    /**
-    When you create this tracker, you need to supply it with the undo stack
-    where it will store the commands that perform the actual measure tool
-    creation and modification.
-    In turn, a container for these commands to store the actual measuring
-    must be supplied, too
-    */
-    EditAngleMeasureTracker(
-      boost::shared_ptr<MeasureTool>  measureTool,
-      boost::shared_ptr<IViewport> viewport,
-      const PointerEvent& e);
-
-    ~EditAngleMeasureTracker();
-
-    virtual void PointerMove(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual void PointerUp(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual void PointerDown(const PointerEvent& e) ORTHANC_OVERRIDE;
-
-  private:
-    AngleMeasureTool::AngleHighlightArea modifiedZone_;
-
-    boost::shared_ptr<EditAngleMeasureCommand> GetCommand();
-  };
-}
--- a/Framework/Scene2DViewport/EditLineMeasureCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "EditLineMeasureCommand.h"
-
-namespace OrthancStone
-{
-  EditLineMeasureCommand::EditLineMeasureCommand(
-    boost::shared_ptr<MeasureTool>  measureTool,
-    boost::shared_ptr<IViewport> viewport)
-    : EditMeasureCommand(measureTool, viewport)
-    , measureTool_(measureTool)
-  {
-  }
-
-
-  void EditLineMeasureCommand::SetStart(ScenePoint2D scenePos)
-  {
-    dynamic_cast<LineMeasureTool&>(*measureTool_).SetStart(scenePos);
-    mementoModified_ = measureTool_->GetMemento();
-  }
-
-
-  void EditLineMeasureCommand::SetEnd(ScenePoint2D scenePos)
-  {
-    dynamic_cast<LineMeasureTool&>(*measureTool_).SetEnd(scenePos);
-    mementoModified_ = measureTool_->GetMemento();
-  }
-}
--- a/Framework/Scene2DViewport/EditLineMeasureCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include "MeasureCommands.h"
-
-namespace OrthancStone
-{
-  class EditLineMeasureCommand : public EditMeasureCommand
-  {
-  public:
-    EditLineMeasureCommand(
-      boost::shared_ptr<MeasureTool>  measureTool,
-      boost::shared_ptr<IViewport> viewport);
-
-    void SetStart(ScenePoint2D scenePos);
-    void SetEnd(ScenePoint2D scenePos);
-
-  private:
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() ORTHANC_OVERRIDE
-    {
-      return measureTool_;
-    }
-    boost::shared_ptr<MeasureTool> measureTool_;
-  };
-}
--- a/Framework/Scene2DViewport/EditLineMeasureTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "EditLineMeasureTracker.h"
-#include "EditLineMeasureCommand.h"
-
-#include "../StoneException.h"
-
-
-namespace OrthancStone
-{
-  EditLineMeasureTracker::EditLineMeasureTracker(
-    boost::shared_ptr<MeasureTool>  measureTool,
-    boost::shared_ptr<IViewport> viewport,
-    const PointerEvent& e)
-    : EditMeasureTracker(viewport, e)
-  {
-    ScenePoint2D scenePos = e.GetMainPosition();
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      Scene2D& scene = lock->GetController().GetScene();
-      scenePos = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform());
-    }
-    modifiedZone_ = dynamic_cast<LineMeasureTool&>(*measureTool).LineHitTest(scenePos);
-    command_.reset(new EditLineMeasureCommand(measureTool, viewport));
-  }
-
-  EditLineMeasureTracker::~EditLineMeasureTracker()
-  {
-
-  }
-
-  void EditLineMeasureTracker::PointerMove(const PointerEvent& e)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    ScenePoint2D scenePos = e.GetMainPosition().Apply(
-      scene.GetCanvasToSceneTransform());
-
-    ScenePoint2D delta = scenePos - GetOriginalClickPosition();
-
-    boost::shared_ptr<LineMeasureToolMemento> memento =
-      boost::dynamic_pointer_cast<LineMeasureToolMemento>(command_->mementoOriginal_);
-
-    ORTHANC_ASSERT(memento.get() != NULL);
-
-    switch (modifiedZone_)
-    {
-    case LineMeasureTool::LineHighlightArea_Start:
-    {
-      ScenePoint2D newStart = memento->start_ + delta;
-      GetCommand()->SetStart(newStart);
-    }
-    break;
-    case LineMeasureTool::LineHighlightArea_End:
-    {
-      ScenePoint2D newEnd = memento->end_ + delta;
-      GetCommand()->SetEnd(newEnd);
-    }
-    break;
-    case LineMeasureTool::LineHighlightArea_Segment:
-    {
-      ScenePoint2D newStart = memento->start_ + delta;
-      ScenePoint2D newEnd = memento->end_ + delta;
-      GetCommand()->SetStart(newStart);
-      GetCommand()->SetEnd(newEnd);
-    }
-    break;
-    default:
-      LOG(WARNING) << "Warning: please retry the measuring tool editing operation!";
-      break;
-    }
-  }
-
-  void EditLineMeasureTracker::PointerUp(const PointerEvent& e)
-  {
-    alive_ = false;
-  }
-
-  void EditLineMeasureTracker::PointerDown(const PointerEvent& e)
-  {
-    LOG(WARNING) << "Additional touches (fingers, pen, mouse buttons...) "
-      "are ignored when the edit line tracker is active";
-  }
-
-  boost::shared_ptr<EditLineMeasureCommand> EditLineMeasureTracker::GetCommand()
-  {
-    boost::shared_ptr<EditLineMeasureCommand> ret = boost::dynamic_pointer_cast<EditLineMeasureCommand>(command_);
-    ORTHANC_ASSERT(ret.get() != NULL, "Internal error in EditLineMeasureTracker::GetCommand()");
-    return ret;
-  }
-
-}
--- a/Framework/Scene2DViewport/EditLineMeasureTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "MeasureTrackers.h"
-
-namespace OrthancStone
-{
-  class EditLineMeasureCommand;
-
-  class EditLineMeasureTracker : public EditMeasureTracker
-  {
-  public:
-    /**
-    When you create this tracker, you need to supply it with the undo stack
-    where it will store the commands that perform the actual measure tool
-    creation and modification.
-    In turn, a container for these commands to store the actual measuring
-    must be supplied, too
-    */
-    EditLineMeasureTracker(
-      boost::shared_ptr<MeasureTool>  measureTool,
-      boost::shared_ptr<IViewport> viewport,
-      const PointerEvent&                 e);
-
-    ~EditLineMeasureTracker();
-
-    virtual void PointerMove(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual void PointerUp(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual void PointerDown(const PointerEvent& e) ORTHANC_OVERRIDE;
-
-  private:
-    LineMeasureTool::LineHighlightArea modifiedZone_;
-
-    boost::shared_ptr<EditLineMeasureCommand> GetCommand();
-  };
-}
--- a/Framework/Scene2DViewport/IFlexiblePointerTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "PredeclaredTypes.h"
-
-#include "../Scene2D/PointerEvent.h"
-
-
-namespace OrthancStone
-{
-  /**
-  This interface represents a flexible mouse tracker that can respond to 
-  several events and is not automatically deleted upon mouse up or when touch
-  interaction is suspended : for instance, a stateful tracker with a two-step 
-  interaction like: click & drag --> mouse up --> drag --> mouse click 
-  (for instance, for an angle measuring tracker or an ellipse tracker)
-  */
-  class IFlexiblePointerTracker : public boost::noncopyable
-  {
-  public:
-    virtual ~IFlexiblePointerTracker() {}
-
-    /**
-    This method will be repeatedly called during user interaction
-    */
-    virtual void PointerMove(const PointerEvent& event) = 0;
-
-    /**
-    This method will be called when a touch/pointer is removed (mouse up, 
-    pen lift, finger removed...)
-    */
-    virtual void PointerUp(const PointerEvent& event) = 0;
-
-    /**
-    This method will be called when a touch/pointer is added (mouse down, 
-    pen or finger press)
-
-    Important note: the initial pointer down that leads to creating the 
-    tracker is NOT sent to the tracker.
-
-    Thus, if you count the PointerDown vs PointerUp, there will be an extra
-    PointerUp.
-    */
-    virtual void PointerDown(const PointerEvent& event) = 0;
-
-    /**
-    This method will be repeatedly called by the tracker owner (for instance,
-    the application) to check whether the tracker must keep on receiving 
-    interaction or if its job is done and it should be deleted.
-    */
-    virtual bool IsAlive() const = 0;
-
-    /**
-    This will be called if the tracker needs to be dismissed without committing
-    its changes to the underlying model. If the model has been modified during
-    tracker lifetime, it must be restored to its initial value
-    */
-    virtual void Cancel() = 0;
-  };
-
-
-  /**
-  This factory adopts the supplied simple tracker and creates a flexible 
-  tracker wrapper around it.
-  */
-  boost::shared_ptr<IFlexiblePointerTracker> CreateSimpleTrackerAdapter(boost::shared_ptr<IPointerTracker>);
-}
-
--- a/Framework/Scene2DViewport/LayerHolder.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "LayerHolder.h"
-#include "../Scene2D/TextSceneLayer.h"
-#include "../Scene2D/PolylineSceneLayer.h"
-#include "../Scene2D/Scene2D.h"
-#include "../Viewport/IViewport.h"
-#include "../StoneException.h"
-
-namespace OrthancStone
-{
-  LayerHolder::LayerHolder(
-    boost::shared_ptr<IViewport> viewport,
-    int        polylineLayerCount,
-    int        textLayerCount,
-    int        infoTextCount)
-    : textLayerCount_(textLayerCount)
-    , polylineLayerCount_(polylineLayerCount)
-    , infoTextCount_(infoTextCount)
-    , viewport_(viewport)
-    , baseLayerIndex_(-1)
-  {
-
-  }
-
-  void LayerHolder::CreateLayers()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    assert(baseLayerIndex_ == -1);
-
-    baseLayerIndex_ = scene.GetMaxDepth() + 100;
-
-    for (int i = 0; i < polylineLayerCount_; ++i)
-    {
-      std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer());
-      scene.SetLayer(baseLayerIndex_ + i, layer.release());
-    }
-
-    for (int i = 0; i < textLayerCount_; ++i)
-    {
-      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer());
-      scene.SetLayer(baseLayerIndex_ + polylineLayerCount_ + i, layer.release());
-    }
-    lock->Invalidate();
-  }
-
-  void LayerHolder::CreateLayersIfNeeded()
-  {
-    if (baseLayerIndex_ == -1)
-      CreateLayers();
-  }
-
-  bool LayerHolder::AreLayersCreated() const
-  {
-    return (baseLayerIndex_ != -1);
-  }
-
-  void LayerHolder::DeleteLayersIfNeeded()
-  {
-    if (baseLayerIndex_ != -1)
-      DeleteLayers();
-  }
-  
-  void LayerHolder::DeleteLayers()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    Scene2D& scene = lock->GetController().GetScene();
-
-    for (int i = 0; i < textLayerCount_ + polylineLayerCount_; ++i)
-    {
-      ORTHANC_ASSERT(scene.HasLayer(baseLayerIndex_ + i), "No layer");
-      scene.DeleteLayer(baseLayerIndex_ + i);
-    }
-    baseLayerIndex_ = -1;
-    lock->Invalidate();
-  }
-  
-  PolylineSceneLayer* LayerHolder::GetPolylineLayer(int index /*= 0*/)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    Scene2D& scene = lock->GetController().GetScene();
-
-    using namespace Orthanc;
-    ORTHANC_ASSERT(baseLayerIndex_ != -1);
-    ORTHANC_ASSERT(scene.HasLayer(GetPolylineLayerIndex(index)));
-    ISceneLayer* layer = &(scene.GetLayer(GetPolylineLayerIndex(index)));
-      
-    PolylineSceneLayer* concreteLayer =
-      dynamic_cast<PolylineSceneLayer*>(layer);
-      
-    ORTHANC_ASSERT(concreteLayer != NULL);
-    return concreteLayer;
-  }
-
-  TextSceneLayer* LayerHolder::GetTextLayer(int index /*= 0*/)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    Scene2D& scene = lock->GetController().GetScene();
-
-    using namespace Orthanc;
-    ORTHANC_ASSERT(baseLayerIndex_ != -1);
-    ORTHANC_ASSERT(scene.HasLayer(GetTextLayerIndex(index)));
-    ISceneLayer* layer = &(scene.GetLayer(GetTextLayerIndex(index)));
-      
-    TextSceneLayer* concreteLayer =
-      dynamic_cast<TextSceneLayer*>(layer);
-      
-    ORTHANC_ASSERT(concreteLayer != NULL);
-    return concreteLayer;
-  }
-
-  int LayerHolder::GetPolylineLayerIndex(int index /*= 0*/)
-  {
-    using namespace Orthanc;
-    ORTHANC_ASSERT(index < polylineLayerCount_);
-    return baseLayerIndex_ + index;
-  }
-  
-  int LayerHolder::GetTextLayerIndex(int index /*= 0*/)
-  {
-    using namespace Orthanc;
-    ORTHANC_ASSERT(index < textLayerCount_);
-
-    // the text layers are placed right after the polyline layers
-    // this means they are drawn ON TOP
-    return baseLayerIndex_ + polylineLayerCount_ + index;
-  }
-}
--- a/Framework/Scene2DViewport/LayerHolder.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "PredeclaredTypes.h"
-
-#include <boost/noncopyable.hpp>
-#include <boost/weak_ptr.hpp>
-#include <boost/shared_ptr.hpp>
-
-namespace OrthancStone
-{
-  class PolylineSceneLayer;
-  class TextSceneLayer;
-
-  /**
-  This class holds the indices of a set a layer and supplies
-  getters to the concrete layer objects. Sounds very ad hoc, and it is.
-  */
-  class LayerHolder : public boost::noncopyable
-  {
-  public:
-    /**
-    This ctor merely stores the scene and layer counts. No layer creation
-    performed at this time
-    */
-    LayerHolder(
-      boost::shared_ptr<IViewport> viewport,
-      int polylineLayerCount, int textLayerCount, int infoTextCount = 0);
-
-    /**
-    This actually creates the layers
-    */
-    void CreateLayers();
-
-    /**
-    This creates the layers if they are not created yet. Can be useful in 
-    some scenarios
-    */
-    void CreateLayersIfNeeded();
-
-    /**
-    Whether the various text and polylines layers have all been created or 
-    none at all
-    */
-    bool AreLayersCreated() const;
-
-    /**
-    This removes the layers from the scene
-    */
-    void DeleteLayers();
-
-    /**
-    This removes the layers from the scene if they are already created
-    */
-    void DeleteLayersIfNeeded();
-
-    /**
-    Please note that the returned pointer belongs to the scene.Don't you dare
-    storing or deleting it, you fool!
-
-    This throws if the index is not valid or if the layers are not created or
-    have been deleted
-    */
-    PolylineSceneLayer* GetPolylineLayer(int index = 0);
-
-    /**
-    Please note that the returned pointer belongs to the scene. Don't you dare
-    storing or deleting it, you fool!
-
-    This throws if the index is not valid or if the layers are not created or
-    have been deleted
-    */
-    TextSceneLayer* GetTextLayer(int index = 0);
-
-    //TextSceneLayer* GetTextLayer(int index = 0);
-
-  private:
-    int GetPolylineLayerIndex(int index = 0);
-    int GetTextLayerIndex(int index = 0);
-    int GetInfoTextLayerIndex(int index = 0);
-
-    int textLayerCount_;
-    int polylineLayerCount_;
-    int infoTextCount_;
-    boost::shared_ptr<IViewport> viewport_;
-    int baseLayerIndex_;
-  };
-}
-
--- a/Framework/Scene2DViewport/LineMeasureTool.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,293 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "LineMeasureTool.h"
-#include "MeasureToolsToolbox.h"
-#include "EditLineMeasureTracker.h"
-#include "LayerHolder.h"
-#include "../StoneException.h"
-
-#include <Logging.h>
-
-#include <boost/make_shared.hpp>
-
-namespace OrthancStone
-{
-
-  LineMeasureTool::LineMeasureTool(
-    boost::shared_ptr<IViewport> viewport)
-    : MeasureTool(viewport)
-#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
-    , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,5)))
-#else
-    , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,1)))
-#endif
-    , lineHighlightArea_(LineHighlightArea_None)
-  {
-
-  }
-
-  boost::shared_ptr<LineMeasureTool> LineMeasureTool::Create(boost::shared_ptr<IViewport> viewport)
-  {
-    boost::shared_ptr<LineMeasureTool> obj(new LineMeasureTool(viewport));
-    obj->MeasureTool::PostConstructor();
-    obj->RefreshScene();
-    return obj;
-  }
-
-  LineMeasureTool::~LineMeasureTool()
-  {
-    // this measuring tool is a RABI for the corresponding visual layers
-    // stored in the 2D scene
-    Disable();
-    RemoveFromScene();
-  }
-
-  void LineMeasureTool::RemoveFromScene()
-  {
-    if (layerHolder_->AreLayersCreated() && IsSceneAlive())
-    {
-      layerHolder_->DeleteLayers();
-    }
-  }
-  
-  void LineMeasureTool::SetStart(ScenePoint2D start)
-  {
-    start_ = start;
-    RefreshScene();
-  }
-
-  void LineMeasureTool::SetEnd(ScenePoint2D end)
-  {
-    end_ = end;
-    RefreshScene();
-  }
-
-  void LineMeasureTool::Set(ScenePoint2D start, ScenePoint2D end)
-  {
-    start_ = start;
-    end_ = end;
-    RefreshScene();
-  }
-
-  void LineMeasureTool::SetLineHighlightArea(LineHighlightArea area)
-  {
-    if (lineHighlightArea_ != area)
-    {
-      lineHighlightArea_ = area;
-      RefreshScene();
-    }
-  }
-
-  std::string LineMeasureTool::GetDescription()
-  {
-    std::stringstream ss;
-    ss << "LineMeasureTool. Start = " << start_ << " End = " << end_;
-    return ss.str();
-  }
-
-  void LineMeasureTool::ResetHighlightState()
-  {
-    SetLineHighlightArea(LineHighlightArea_None);
-  }
- 
-  void LineMeasureTool::Highlight(ScenePoint2D p)
-  {
-    LineHighlightArea lineHighlightArea = LineHitTest(p);
-    SetLineHighlightArea(lineHighlightArea);
-  }
-
-  LineMeasureTool::LineHighlightArea LineMeasureTool::LineHitTest(ScenePoint2D p)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    const double pixelToScene = scene.GetCanvasToSceneTransform().ComputeZoom();
-    const double SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD = 
-      pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD * 
-      pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD;
-
-    const double sqDistanceFromStart = 
-      ScenePoint2D::SquaredDistancePtPt(p, start_);
-    
-    if (sqDistanceFromStart <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
-      return LineHighlightArea_Start;
-    
-    const double sqDistanceFromEnd = ScenePoint2D::SquaredDistancePtPt(p, end_);
-
-    if (sqDistanceFromEnd <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
-      return LineHighlightArea_End;
-
-    const double sqDistanceFromPtSegment = 
-      ScenePoint2D::SquaredDistancePtSegment(start_, end_, p);
-    
-    if (sqDistanceFromPtSegment <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
-      return LineHighlightArea_Segment;
-
-    return LineHighlightArea_None;
-  }
-
-  bool LineMeasureTool::HitTest(ScenePoint2D p)
-  {
-    return LineHitTest(p) != LineHighlightArea_None;
-  }
-
-  boost::shared_ptr<IFlexiblePointerTracker> LineMeasureTool::CreateEditionTracker(const PointerEvent& e)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    ScenePoint2D scenePos = e.GetMainPosition().Apply(
-      scene.GetCanvasToSceneTransform());
-
-    if (!HitTest(scenePos))
-      return boost::shared_ptr<IFlexiblePointerTracker>();
-
-    boost::shared_ptr<EditLineMeasureTracker> editLineMeasureTracker(
-      new EditLineMeasureTracker(shared_from_this(), viewport_, e));
-    return editLineMeasureTracker;
-  }
-
-  boost::shared_ptr<MeasureToolMemento> LineMeasureTool::GetMemento() const
-  {
-    boost::shared_ptr<LineMeasureToolMemento> memento(new LineMeasureToolMemento());
-    memento->start_ = start_;
-    memento->end_ = end_;
-    return memento;
-  }
-
-  void LineMeasureTool::SetMemento(
-    boost::shared_ptr<MeasureToolMemento> mementoBase)
-  {
-    boost::shared_ptr<LineMeasureToolMemento> memento = 
-      boost::dynamic_pointer_cast<LineMeasureToolMemento>(mementoBase);
-    
-    ORTHANC_ASSERT(memento.get() != NULL, "Internal error: wrong (or bad) memento");
-    
-    start_ = memento->start_;
-    end_ = memento->end_;
-    RefreshScene();
-  }
-
-  void LineMeasureTool::RefreshScene()
-  {
-    if (IsSceneAlive())
-    {
-      if (IsEnabled())
-      {
-        
-        std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-        ViewportController& controller = lock->GetController();
-        Scene2D& scene = controller.GetScene();
-
-        layerHolder_->CreateLayersIfNeeded();
-        {
-          // Fill the polyline layer with the measurement line
-
-          PolylineSceneLayer* polylineLayer = layerHolder_->GetPolylineLayer(0);
-          if (polylineLayer)
-          {
-            polylineLayer->ClearAllChains();
-
-            const Color color(TOOL_LINES_COLOR_RED, 
-                              TOOL_LINES_COLOR_GREEN, 
-                              TOOL_LINES_COLOR_BLUE);
-
-            const Color highlightColor(TOOL_LINES_HL_COLOR_RED,
-                                       TOOL_LINES_HL_COLOR_GREEN,
-                                       TOOL_LINES_HL_COLOR_BLUE);
-
-            {
-              PolylineSceneLayer::Chain chain;
-              chain.push_back(start_);
-              chain.push_back(end_);
-              if(lineHighlightArea_ == LineHighlightArea_Segment)
-                polylineLayer->AddChain(chain, false, highlightColor);
-              else
-                polylineLayer->AddChain(chain, false, color);
-            }
-
-            // handles
-            {
-              {
-                PolylineSceneLayer::Chain chain;
-              
-                //TODO: take DPI into account
-                AddSquare(chain, controller.GetScene(), start_, 
-                          controller.GetHandleSideLengthS());
-              
-                if (lineHighlightArea_ == LineHighlightArea_Start)
-                  polylineLayer->AddChain(chain, true, highlightColor);
-                else
-                  polylineLayer->AddChain(chain, true, color);
-              }
-
-              {
-                PolylineSceneLayer::Chain chain;
-              
-                //TODO: take DPI into account
-                AddSquare(chain, controller.GetScene(), end_, 
-                          controller.GetHandleSideLengthS());
-              
-                if (lineHighlightArea_ == LineHighlightArea_End)
-                  polylineLayer->AddChain(chain, true, highlightColor);
-                else
-                  polylineLayer->AddChain(chain, true, color);
-              }
-            }
-          }
-        }
-        {
-          // Set the text layer propreties
-          double deltaX = end_.GetX() - start_.GetX();
-          double deltaY = end_.GetY() - start_.GetY();
-          double squareDist = deltaX * deltaX + deltaY * deltaY;
-          double dist = sqrt(squareDist);
-          char buf[64];
-          sprintf(buf, "%0.02f mm", dist);
-
-          // TODO: for now we simply position the text overlay at the middle
-          // of the measuring segment
-          double midX = 0.5 * (end_.GetX() + start_.GetX());
-          double midY = 0.5 * (end_.GetY() + start_.GetY());
-
-          {
-
-#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
-            SetTextLayerOutlineProperties(
-              scene, layerHolder_, buf, ScenePoint2D(midX, midY), 0);
-#else
-            SetTextLayerProperties(
-              scene, layerHolder_, buf, ScenePoint2D(midX, midY), 0);
-#endif
-            lock->Invalidate();
-          }
-        }
-        lock->Invalidate();
-      }
-      else
-      {
-        RemoveFromScene();
-      }
-    }
-  }
-}
--- a/Framework/Scene2DViewport/LineMeasureTool.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "../Scene2D/PolylineSceneLayer.h"
-#include "../Scene2D/Scene2D.h"
-#include "../Scene2D/ScenePoint2D.h"
-#include "../Scene2D/TextSceneLayer.h"
-#include "MeasureTool.h"
-
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include <vector>
-#include <cmath>
-
-namespace OrthancStone
-{
-  class LineMeasureTool : public MeasureTool
-  {
-  public:
-    static boost::shared_ptr<LineMeasureTool> Create(boost::shared_ptr<IViewport> viewport);
-
-    ~LineMeasureTool();
-
-    void SetStart(ScenePoint2D start);
-    void SetEnd(ScenePoint2D end);
-    void Set(ScenePoint2D start, ScenePoint2D end);
-
-
-    virtual bool HitTest(ScenePoint2D p) ORTHANC_OVERRIDE;
-    virtual void Highlight(ScenePoint2D p) ORTHANC_OVERRIDE;
-    virtual void ResetHighlightState() ORTHANC_OVERRIDE;
-    virtual boost::shared_ptr<IFlexiblePointerTracker> CreateEditionTracker(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual boost::shared_ptr<MeasureToolMemento> GetMemento() const ORTHANC_OVERRIDE;
-    virtual void SetMemento(boost::shared_ptr<MeasureToolMemento>) ORTHANC_OVERRIDE;
-    virtual std::string GetDescription() ORTHANC_OVERRIDE;
-
-    enum LineHighlightArea
-    {
-      LineHighlightArea_None,
-      LineHighlightArea_Start,
-      LineHighlightArea_End,
-      LineHighlightArea_Segment
-    };
-
-
-    LineHighlightArea LineHitTest(ScenePoint2D p);
-
-  private:
-    LineMeasureTool(boost::shared_ptr<IViewport> viewport);
-
-    virtual void        RefreshScene() ORTHANC_OVERRIDE;
-    void                RemoveFromScene();
-    void                SetLineHighlightArea(LineHighlightArea area);
-
-  private:
-
-  private:
-    ScenePoint2D                    start_;
-    ScenePoint2D                    end_;
-    boost::shared_ptr<LayerHolder>  layerHolder_;
-    int                             baseLayerIndex_;
-    LineHighlightArea               lineHighlightArea_;
-  };
-
-  class LineMeasureToolMemento : public MeasureToolMemento
-  {
-  public:
-    ScenePoint2D                    start_;
-    ScenePoint2D                    end_;
-  };
-
-}
-
--- a/Framework/Scene2DViewport/MeasureCommands.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "MeasureCommands.h"
-
-#include <memory>
-
-#include <boost/make_shared.hpp>
-#include <boost/ref.hpp>
-
-namespace OrthancStone
-{
-  void CreateMeasureCommand::Undo()
-  {
-    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
-    // simply disable the measure tool upon undo
-    GetMeasureTool()->Disable();
-    lock->GetController().RemoveMeasureTool(GetMeasureTool());
-  }
-
-  void CreateMeasureCommand::Redo()
-  {
-    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
-    GetMeasureTool()->Enable();
-    lock->GetController().AddMeasureTool(GetMeasureTool());
-  }
-
-  CreateMeasureCommand::CreateMeasureCommand(boost::shared_ptr<IViewport> viewport)
-    : MeasureCommand(viewport)
-  {
-
-  }
-
-  CreateMeasureCommand::~CreateMeasureCommand()
-  {
-    // deleting the command should not change the model state
-    // we thus leave it as is
-  }
-
-  void DeleteMeasureCommand::Redo()
-  {
-    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
-    // simply disable the measure tool upon undo
-    GetMeasureTool()->Disable();
-    lock->GetController().RemoveMeasureTool(GetMeasureTool());
-  }
-
-  void DeleteMeasureCommand::Undo()
-  {
-    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
-    GetMeasureTool()->Enable();
-    lock->GetController().AddMeasureTool(GetMeasureTool());
-  }
-
-  DeleteMeasureCommand::~DeleteMeasureCommand()
-  {
-    // deleting the command should not change the model state
-    // we thus leave it as is
-  }
-
-  DeleteMeasureCommand::DeleteMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::shared_ptr<IViewport> viewport)
-    : MeasureCommand(viewport)
-    , mementoOriginal_(measureTool->GetMemento())
-    , measureTool_(measureTool)
-    , mementoModified_(measureTool->GetMemento())
-  {
-    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
-    GetMeasureTool()->Disable();
-    lock->GetController().RemoveMeasureTool(GetMeasureTool());
-  }
-
-  EditMeasureCommand::EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::shared_ptr<IViewport> viewport)
-    : MeasureCommand(viewport)
-    , mementoOriginal_(measureTool->GetMemento())
-    , mementoModified_(measureTool->GetMemento())
-  {
-
-  }
-
-  EditMeasureCommand::~EditMeasureCommand()
-  {
-
-  }
-
-  void EditMeasureCommand::Undo()
-  {
-    // simply disable the measure tool upon undo
-    GetMeasureTool()->SetMemento(mementoOriginal_);
-  }
-
-  void EditMeasureCommand::Redo()
-  {
-    GetMeasureTool()->SetMemento(mementoModified_);
-  }
-}
--- a/Framework/Scene2DViewport/MeasureCommands.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include "../Viewport/IViewport.h"
-
-// to be moved into Stone
-#include "PredeclaredTypes.h"
-#include "MeasureTool.h"
-#include "LineMeasureTool.h"
-#include "AngleMeasureTool.h"
-
-#include <boost/shared_ptr.hpp>
-#include <boost/noncopyable.hpp>
-
-namespace OrthancStone
-{
-  class MeasureCommand : public boost::noncopyable
-  {
-  public:
-    MeasureCommand(boost::shared_ptr<IViewport> viewport) : viewport_(viewport)
-    {}
-    virtual void Undo() = 0;
-    virtual void Redo() = 0;
-    
-    virtual ~MeasureCommand() {};
-
-  protected:
-    boost::shared_ptr<IViewport> viewport_;
-  };
-
-  class CreateMeasureCommand : public MeasureCommand
-  {
-  public:
-    CreateMeasureCommand(boost::shared_ptr<IViewport> viewport);
-    virtual ~CreateMeasureCommand();
-    virtual void Undo() ORTHANC_OVERRIDE;
-    virtual void Redo() ORTHANC_OVERRIDE;
-  private:
-    /** Must be implemented by the subclasses that create the actual tool */
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() = 0;
-  };
-  
-  class EditMeasureCommand : public MeasureCommand
-  {
-  public:
-    EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::shared_ptr<IViewport> viewport);
-    virtual ~EditMeasureCommand();
-    virtual void Undo() ORTHANC_OVERRIDE;
-    virtual void Redo() ORTHANC_OVERRIDE;
-
-    /** This memento is the original object state */
-    boost::shared_ptr<MeasureToolMemento> mementoOriginal_;
-
-  private:
-    /** Must be implemented by the subclasses that edit the actual tool */
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() = 0;
-
-  protected:
-
-    /** This memento is updated by the subclasses upon modifications */
-    boost::shared_ptr<MeasureToolMemento> mementoModified_;
-  };
-
-  class DeleteMeasureCommand : public MeasureCommand
-  {
-  public:
-    DeleteMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::shared_ptr<IViewport> viewport);
-    virtual ~DeleteMeasureCommand();
-    virtual void Undo() ORTHANC_OVERRIDE;
-    virtual void Redo() ORTHANC_OVERRIDE;
-
-    /** This memento is the original object state */
-    boost::shared_ptr<MeasureToolMemento> mementoOriginal_;
-
-  private:
-    /** Must be implemented by the subclasses that edit the actual tool */
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool()
-    {
-      return measureTool_;
-    }
-
-    boost::shared_ptr<MeasureTool> measureTool_;
-
-  protected:
-
-    /** This memento is updated by the subclasses upon modifications */
-    boost::shared_ptr<MeasureToolMemento> mementoModified_;
-  };
-}
-
--- a/Framework/Scene2DViewport/MeasureTool.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "MeasureTool.h"
-
-#include <Logging.h>
-#include <Enumerations.h>
-#include <OrthancException.h>
-
-#include <boost/math/constants/constants.hpp>
-
-#include "../Viewport/IViewport.h"
-
-namespace OrthancStone
-{
-  void MeasureTool::Enable()
-  {
-    enabled_ = true;
-    RefreshScene();
-  }
-
-  void MeasureTool::Disable()
-  {
-    enabled_ = false;
-    RefreshScene();
-  }
-
-  bool MeasureTool::IsEnabled() const
-  {
-    return enabled_;
-  }
-
-  MeasureTool::MeasureTool(
-    boost::shared_ptr<IViewport> viewport)
-    : viewport_(viewport)
-    , enabled_(true)
-  {
-
-  }
-
-  void MeasureTool::PostConstructor()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-
-    Register<ViewportController::SceneTransformChanged>(
-      controller, 
-      &MeasureTool::OnSceneTransformChanged);
-  }
-
-  bool MeasureTool::IsSceneAlive() const
-  {
-    // since the lifetimes of the viewport, viewportcontroller (and the
-    // measuring tools inside it) are linked, the scene is always alive as 
-    // long as "this" is alive
-    return true;
-  }
-
-  void MeasureTool::OnSceneTransformChanged(
-    const ViewportController::SceneTransformChanged& message)
-  {
-    RefreshScene();
-  }
-
-
-}
-
--- a/Framework/Scene2DViewport/MeasureTool.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "../Messages/ObserverBase.h"
-#include "../Scene2D/PolylineSceneLayer.h"
-#include "../Scene2D/Scene2D.h"
-#include "../Scene2D/ScenePoint2D.h"
-#include "../Scene2D/TextSceneLayer.h"
-#include "../Scene2DViewport/PredeclaredTypes.h"
-#include "../Scene2DViewport/ViewportController.h"
-
-#include <boost/weak_ptr.hpp>
-
-#include <vector>
-#include <cmath>
-
-namespace OrthancStone
-{
-  class IFlexiblePointerTracker;
-  class MeasureToolMemento;
-
-  class MeasureTool : public ObserverBase<MeasureTool>
-  {
-  public:
-    virtual ~MeasureTool()
-    {
-    }
-
-    /**
-    Enabled tools are rendered in the scene.
-    */
-    void Enable();
-
-    /**
-    Disabled tools are not rendered in the scene. This is useful to be able
-    to use them as their own memento in command stacks (when a measure tool
-    creation command has been undone, the measure remains alive in the
-    command object but is disabled so that it can be redone later on easily)
-    */
-    void Disable();
-
-    /**
-    This method is called when the scene transform changes. It allows to 
-    recompute the visual elements whose content depend upon the scene transform
-    */
-    void OnSceneTransformChanged(
-      const ViewportController::SceneTransformChanged& message);
-    
-    /**
-    This function must be implemented by the measuring tool to return whether
-    a given point in scene coords is close to the measuring tool.
-
-    This is used for mouse hover highlighting.
-
-    It is assumed that if the pointer position leads to this function returning
-    true, then a click at that position will return a tracker to edit the 
-    measuring tool
-    */
-    virtual bool HitTest(ScenePoint2D p) = 0;
-
-    /**
-    This method must return a memento the captures the tool state (not including
-    the highlighting state
-    */
-    virtual boost::shared_ptr<MeasureToolMemento> GetMemento() const = 0;
-
-    /**
-    This method must apply the supplied memento (this requires RTTI to check
-    the type)
-    */
-    virtual void SetMemento(boost::shared_ptr<MeasureToolMemento>) = 0;
-
-    /**
-    This must create an edition tracker suitable for the supplied click position,
-    or an empty pointer if no hit test (although this should have been checked
-    first)
-    */
-    virtual boost::shared_ptr<IFlexiblePointerTracker> CreateEditionTracker(const PointerEvent& e) = 0;
-
-    /**
-    Will change the measuring tool to provide visual feedback on the GUI 
-    element that is in the pointer hit zone
-    */
-    virtual void Highlight(ScenePoint2D p) = 0;
-
-    /**
-    This function must reset the visual highlighted hot zone feedback
-    */
-    virtual void ResetHighlightState() = 0;
-
-    /**
-    A description of the measuring tool, useful in debug logs
-    */
-    virtual std::string GetDescription() = 0;
-
-  protected:
-    MeasureTool(boost::shared_ptr<IViewport> viewport);
-
-    void PostConstructor();
-
-    /**
-    The measuring tool may exist in a standalone fashion, without any available
-    scene (because the controller is dead or dying). This call allows to check 
-    before accessing the scene.
-    */
-    bool IsSceneAlive() const;
-    
-    /**
-    This is the meat of the tool: this method must [create (if needed) and]
-    update the layers and their data according to the measure tool kind and
-    current state. This is repeatedly called during user interaction
-    */
-    virtual void RefreshScene() = 0;
-
-    /**
-    enabled_ is not accessible by subclasses because there is a state machine
-    that we do not wanna mess with
-    */
-    bool IsEnabled() const;
-
-    /**
-    Protected to allow sub-classes to use this weak pointer in factory methods
-    (pass them to created objects)
-    */
-    boost::shared_ptr<IViewport> viewport_;
-
-
-  private:
-    bool     enabled_;
-  };
-
-  class MeasureToolMemento
-  {
-    public:
-      virtual ~MeasureToolMemento() {};
-  };
-
-}
-
- //extern void TrackerSample_SetInfoDisplayMessage(
- //  std::string key, std::string value);
--- a/Framework/Scene2DViewport/MeasureToolsToolbox.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,366 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "MeasureToolsToolbox.h"
-#include "PredeclaredTypes.h"
-#include "LayerHolder.h"
-#include "ViewportController.h"
-
-#include "../Scene2D/TextSceneLayer.h"
-#include "../Scene2D/Scene2D.h"
-#include "../StoneException.h"
-
-#include <boost/math/constants/constants.hpp>
-
-namespace
-{
-  double g_pi = boost::math::constants::pi<double>();
-}
-
-namespace OrthancStone
-{
-  void GetPositionOnBisectingLine(
-    ScenePoint2D& result
-    , const ScenePoint2D& p1
-    , const ScenePoint2D& c
-    , const ScenePoint2D& p2
-    , const double d)
-  {
-    // TODO: fix correct half-plane
-    double p1cAngle = atan2(p1.GetY() - c.GetY(), p1.GetX() - c.GetX());
-    double p2cAngle = atan2(p2.GetY() - c.GetY(), p2.GetX() - c.GetX());
-    double angle = 0.5 * (p1cAngle + p2cAngle);
-    double unitVectorX = cos(angle);
-    double unitVectorY = sin(angle);
-    double posX = c.GetX() + d * unitVectorX;
-    double posY = c.GetX() + d * unitVectorY;
-    result = ScenePoint2D(posX, posY);
-  }
-
-  double RadiansToDegrees(double angleRad)
-  {
-    static const double factor = 180.0 / g_pi;
-    return angleRad * factor;
-  }
-
-  void AddSquare(PolylineSceneLayer::Chain& chain,
-    const Scene2D& scene,
-    const ScenePoint2D& centerS,
-    const double& sideLengthS)
-  {
-    /*
-    The scene is required here because we need to draw the square with its
-    sides parallel to the SCREEN axis, not the SCENE axis
-    */
-
-    // get the scaling factor 
-    const double sceneToCanvas =
-      scene.GetSceneToCanvasTransform().ComputeZoom();
-
-    chain.clear();
-    chain.reserve(4);
-    ScenePoint2D centerC = centerS.Apply(scene.GetSceneToCanvasTransform());
-    //TODO: take DPI into account 
-    double handleLX = centerC.GetX() - sideLengthS * sceneToCanvas * 0.5;
-    double handleTY = centerC.GetY() - sideLengthS * sceneToCanvas * 0.5;
-    double handleRX = centerC.GetX() + sideLengthS * sceneToCanvas * 0.5;
-    double handleBY = centerC.GetY() + sideLengthS * sceneToCanvas * 0.5;
-    ScenePoint2D LTC(handleLX, handleTY);
-    ScenePoint2D RTC(handleRX, handleTY);
-    ScenePoint2D RBC(handleRX, handleBY);
-    ScenePoint2D LBC(handleLX, handleBY);
-
-    ScenePoint2D startLT = LTC.Apply(scene.GetCanvasToSceneTransform());
-    ScenePoint2D startRT = RTC.Apply(scene.GetCanvasToSceneTransform());
-    ScenePoint2D startRB = RBC.Apply(scene.GetCanvasToSceneTransform());
-    ScenePoint2D startLB = LBC.Apply(scene.GetCanvasToSceneTransform());
-
-    chain.push_back(startLT);
-    chain.push_back(startRT);
-    chain.push_back(startRB);
-    chain.push_back(startLB);
-  }
-#if 0
-  void AddArc(
-    PolylineSceneLayer::Chain & chain
-    , const Scene2D & scene
-    , const ScenePoint2D & p1
-    , const ScenePoint2D & c
-    , const ScenePoint2D & p2
-    , const double& radiusS
-    , const bool          clockwise
-    , const int           subdivisionsCount)
-  {
-    double p1cAngle = atan2(p1.GetY() - c.GetY(), p1.GetX() - c.GetX());
-    double p2cAngle = atan2(p2.GetY() - c.GetY(), p2.GetX() - c.GetX());
-    AddArc(
-      chain, scene, c, radiusS, p1cAngle, p2cAngle,
-      clockwise, subdivisionsCount);
-  }
-#endif
-
-  void AddShortestArc(
-    PolylineSceneLayer::Chain& chain
-    , const ScenePoint2D& p1
-    , const ScenePoint2D& c
-    , const ScenePoint2D& p2
-    , const double& radiusS
-    , const int                  subdivisionsCount)
-  {
-    double p1cAngle = atan2(p1.GetY() - c.GetY(), p1.GetX() - c.GetX());
-    double p2cAngle = atan2(p2.GetY() - c.GetY(), p2.GetX() - c.GetX());
-    AddShortestArc(
-      chain, c, radiusS, p1cAngle, p2cAngle, subdivisionsCount);
-  }
-
-  void AddShortestArc(
-    PolylineSceneLayer::Chain& chain
-    , const ScenePoint2D& centerS
-    , const double& radiusS
-    , const double                startAngleRad
-    , const double                endAngleRad
-    , const int                   subdivisionsCount)
-  {
-    // this gives a signed difference between angle which
-    // is the smallest difference (in magnitude) between 
-    // the angles
-    double delta = NormalizeAngle(endAngleRad - startAngleRad);
-
-    chain.clear();
-    chain.reserve(subdivisionsCount + 1);
-
-    double angleIncr = delta / static_cast<double>(subdivisionsCount);
-
-    double theta = startAngleRad;
-    for (int i = 0; i < subdivisionsCount + 1; ++i)
-    {
-      double offsetX = radiusS * cos(theta);
-      double offsetY = radiusS * sin(theta);
-      double pointX = centerS.GetX() + offsetX;
-      double pointY = centerS.GetY() + offsetY;
-      chain.push_back(ScenePoint2D(pointX, pointY));
-      theta += angleIncr;
-    }
-  }
-
-#if 0
-  void AddArc(
-    PolylineSceneLayer::Chain & chain
-    , const Scene2D & scene
-    , const ScenePoint2D & centerS
-    , const double& radiusS
-    , const double        startAngleRad
-    , const double        endAngleRad
-    , const bool          clockwise
-    , const int           subdivisionsCount)
-  {
-    double startAngleRadN = NormalizeAngle(startAngleRad);
-    double endAngleRadN = NormalizeAngle(endAngleRad);
-
-    double angle1Rad = std::min(startAngleRadN, endAngleRadN);
-    double angle2Rad = std::max(startAngleRadN, endAngleRadN);
-
-    // now we are sure angle1Rad < angle2Rad
-    // this means that if we draw from 1 to 2, it will be clockwise (
-    // increasing angles).
-    // let's fix this:
-    if (!clockwise)
-    {
-      angle2Rad -= 2 * g_pi;
-      // now we are sure angle2Rad < angle1Rad (since they were normalized) 
-      // and, thus, going from 1 to 2 means the angle values will DECREASE,
-      // which is the definition of anticlockwise
-    }
-
-    chain.clear();
-    chain.reserve(subdivisionsCount + 1);
-
-    double angleIncr = (angle2Rad - angle1Rad)
-      / static_cast<double>(subdivisionsCount);
-
-    double theta = angle1Rad;
-    for (int i = 0; i < subdivisionsCount + 1; ++i)
-    {
-      double offsetX = radiusS * cos(theta);
-      double offsetY = radiusS * sin(theta);
-      double pointX = centerS.GetX() + offsetX;
-      double pointY = centerS.GetY() + offsetY;
-      chain.push_back(ScenePoint2D(pointX, pointY));
-      theta += angleIncr;
-    }
-  }
-#endif
-
-  void AddCircle(PolylineSceneLayer::Chain& chain,
-                 const ScenePoint2D&        centerS,
-                 const double&              radiusS,
-                 const int                  numSubdivisions)
-  {
-    //ScenePoint2D centerC = centerS.Apply(scene.GetSceneToCanvasTransform());
-    //TODO: take DPI into account
-
-    // TODO: automatically compute the number for segments for smooth 
-    // display based on the radius in pixels.
-
-    chain.clear();
-    chain.reserve(numSubdivisions);
-
-    double angleIncr = (2.0 * g_pi)
-      / static_cast<double>(numSubdivisions);
-
-    double theta = 0;
-    for (int i = 0; i < numSubdivisions; ++i)
-    {
-      double offsetX = radiusS * cos(theta);
-      double offsetY = radiusS * sin(theta);
-      double pointX = centerS.GetX() + offsetX;
-      double pointY = centerS.GetY() + offsetY;
-      chain.push_back(ScenePoint2D(pointX, pointY));
-      theta += angleIncr;
-    }
-  }
-
-  double NormalizeAngle(double angle)
-  {
-    double retAngle = angle;
-    while (retAngle < -1.0 * g_pi)
-      retAngle += 2 * g_pi;
-    while (retAngle >= g_pi)
-      retAngle -= 2 * g_pi;
-    return retAngle;
-  }
-
-  double MeasureAngle(const ScenePoint2D& p1, const ScenePoint2D& c, const ScenePoint2D& p2)
-  {
-    double p1cAngle = atan2(p1.GetY() - c.GetY(), p1.GetX() - c.GetX());
-    double p2cAngle = atan2(p2.GetY() - c.GetY(), p2.GetX() - c.GetX());
-    double delta = p2cAngle - p1cAngle;
-    return NormalizeAngle(delta);
-  }
-
-
-#if 0
-  void AddEllipse(PolylineSceneLayer::Chain & chain,
-    const Scene2D & scene,
-    const ScenePoint2D & centerS,
-    const double& halfHAxis,
-    const double& halfVAxis)
-  {
-    chain.clear();
-    chain.reserve(4);
-    ScenePoint2D centerC = centerS.Apply(scene.GetSceneToCanvasTransform());
-    //TODO: take DPI into account
-    double handleLX = centerC.GetX() - sideLength / 2;
-    double handleTY = centerC.GetY() - sideLength / 2;
-    double handleRX = centerC.GetX() + sideLength / 2;
-    double handleBY = centerC.GetY() + sideLength / 2;
-    ScenePoint2D LTC(handleLX, handleTY);
-    ScenePoint2D RTC(handleRX, handleTY);
-    ScenePoint2D RBC(handleRX, handleBY);
-    ScenePoint2D LBC(handleLX, handleBY);
-
-    ScenePoint2D startLT = LTC.Apply(scene.GetCanvasToSceneTransform());
-    ScenePoint2D startRT = RTC.Apply(scene.GetCanvasToSceneTransform());
-    ScenePoint2D startRB = RBC.Apply(scene.GetCanvasToSceneTransform());
-    ScenePoint2D startLB = LBC.Apply(scene.GetCanvasToSceneTransform());
-
-    chain.push_back(startLT);
-    chain.push_back(startRT);
-    chain.push_back(startRB);
-    chain.push_back(startLB);
-  }
-#endif
-
-#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
-  /**
-  This utility function assumes that the layer holder contains 5 text layers
-  and will use the first four ones for the text background and the fifth one
-  for the actual text
-  */
-  void SetTextLayerOutlineProperties(
-    Scene2D& scene
-    , boost::shared_ptr<LayerHolder> layerHolder
-    , const char* text
-    , ScenePoint2D p
-    , int startingLayerIndex) 
-  {
-    double xoffsets[5] = { 2, 0, -2, 0, 0 };
-    double yoffsets[5] = { 0, -2, 0, 2, 0 };
-
-    // get the scaling factor 
-    const double pixelToScene =
-      scene.GetCanvasToSceneTransform().ComputeZoom();
-
-    for (int i = startingLayerIndex; i < startingLayerIndex + 5; ++i)
-    {
-      TextSceneLayer* textLayer = layerHolder->GetTextLayer(i);
-      if (textLayer != NULL)
-      {
-        textLayer->SetText(text);
-
-        if (i == startingLayerIndex + 4)
-        {
-          textLayer->SetColor(TEXT_COLOR_RED,
-                              TEXT_COLOR_GREEN,
-                              TEXT_COLOR_BLUE);
-        }
-        else
-        {
-          textLayer->SetColor(TEXT_OUTLINE_COLOR_RED,
-                              TEXT_OUTLINE_COLOR_GREEN,
-                              TEXT_OUTLINE_COLOR_BLUE);
-        }
-
-        ScenePoint2D textAnchor;
-        int offIndex = i - startingLayerIndex;
-        ORTHANC_ASSERT(offIndex >= 0 && offIndex < 5);
-        textLayer->SetPosition(
-          p.GetX() + xoffsets[offIndex] * pixelToScene,
-          p.GetY() + yoffsets[offIndex] * pixelToScene);
-      }
-    }
-  }
-#else
-  void SetTextLayerProperties(
-    Scene2D& scene
-    , boost::shared_ptr<LayerHolder> layerHolder
-    , const char* text
-    , ScenePoint2D p
-    , int layerIndex)
-  {
-    TextSceneLayer* textLayer = layerHolder->GetTextLayer(layerIndex);
-    if (textLayer != NULL)
-    {
-      textLayer->SetText(text);
-      textLayer->SetColor(TEXT_COLOR_RED, TEXT_COLOR_GREEN, TEXT_COLOR_BLUE);
-
-      ScenePoint2D textAnchor;
-      textLayer->SetPosition(p.GetX(), p.GetY());
-    }
-  }
-#endif 
-
-  std::ostream& operator<<(std::ostream& os, const ScenePoint2D& p)
-  {
-    os << "x = " << p.GetX() << " , y = " << p.GetY();
-    return os;
-  }
-
-}
--- a/Framework/Scene2DViewport/MeasureToolsToolbox.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "PredeclaredTypes.h"
-#include "../Scene2D/PolylineSceneLayer.h"
-#include "../Scene2D/Scene2D.h"
-
-namespace OrthancStone
-{
-
-  /**
-  This function will create a square around the center point supplied in
-  scene coordinates, with a side length given in canvas coordinates. The
-  square sides are parallel to the canvas boundaries.
-  */
-  void AddSquare(PolylineSceneLayer::Chain& chain,
-                 const Scene2D&             scene,
-                 const ScenePoint2D&        centerS,
-                 const double&              sideLengthS);
-
-  /**
-    Creates an arc centered on c that goes
-    - from a point r1:
-      - so that r1 belongs to the p1,c line
-      - so that the distance from c to r1 equals radius
-    - to a point r2:
-      - so that r2 belongs to the p2,c line
-      - so that the distance from c to r2 equals radius
-    - that follows the shortest among the two possible paths
-
-    Warning: the existing chain content will be wiped out.
-  */
-  void AddShortestArc(
-    PolylineSceneLayer::Chain& chain
-    , const ScenePoint2D& p1
-    , const ScenePoint2D& c
-    , const ScenePoint2D& p2
-    , const double& radiusS
-    , const int                   subdivisionsCount = 63);
-
-  /**
-    Creates an arc (open curve) with "numSubdivisions" (N + 1 points) from
-    start angle to end angle, by following the shortest arc.
-
-    Warning: the existing chain content will be wiped out.
-  */
-  void AddShortestArc(
-    PolylineSceneLayer::Chain& chain
-    , const ScenePoint2D& centerS
-    , const double& radiusS
-    , const double                startAngleRad
-    , const double                endAngleRad
-    , const int                   subdivisionsCount = 63);
-
-#if 0
-  /**
-    Creates an arc centered on c that goes
-    - from a point r1:
-      - so that r1 belongs to the p1,c line
-      - so that the distance from c to r1 equals radius
-    - to a point r2:
-      - so that r2 belongs to the p2,c line
-      - so that the distance from c to r2 equals radius
-
-    if clockwise is true, the arc is drawn from r1 to r2 with increasing
-    angle values. Otherwise, the angle values decrease.
-
-    Warning: the existing chain content will be wiped out.
-  */
-
-  void AddArc(
-    PolylineSceneLayer::Chain & chain
-    , const Scene2D & scene
-    , const ScenePoint2D & p1
-    , const ScenePoint2D & c
-    , const ScenePoint2D & p2
-    , const double& radiusS
-    , const bool                 clockwise
-    , const int                  subdivisionsCount = 63);
-
-  /**
-    Creates an arc (open curve) with "numSubdivisions" (N + 1 points) from
-    start angle to end angle with the supplied radius.
-
-    if clockwise is true, the arc is drawn from start to end by increasing the
-    angle values.
-
-    Otherwise, the angle value decreases from start to end.
-
-    Warning: the existing chain content will be wiped out.
-  */
-  void AddArc(
-    PolylineSceneLayer::Chain& chain
-    , const Scene2D& scene
-    , const ScenePoint2D& centerS
-    , const double& radiusS
-    , const double        startAngleRad
-    , const double        endAngleRad
-    , const bool          clockwise
-    , const int           subdivisionsCount = 63);
-#endif
-  /**
-    Creates a circle (closed curve) with "numSubdivisions"
-    (N points)
-
-    Warning: the existing chain content will be wiped out.
-  */
-  void AddCircle(PolylineSceneLayer::Chain& chain,
-                 const ScenePoint2D&        centerS,
-                 const double&              radiusS,
-                 const int                  numSubdivisions = 63);
-
-  /**
-    Adds or subtracts 2*pi as many times as need to shift the specified
-    angle to a value such as: -pi <= value < pi
-   */
-  double NormalizeAngle(double angle);
-
-  /**
-    Returns the angle magnitude between the p1,c and p2,c lines.
-    The returned angle is between 0 and 2*pi
-
-    If the angle is between 0 and pi, this means that the shortest arc
-    from p1 to p2 is clockwise.
-
-    If the angle is between pi and 2*pi, this means that the shortest arc
-    from p1 to p2 is COUNTERclockwise.
-
-  */
-  double MeasureAngle(
-    const ScenePoint2D& p1, const ScenePoint2D& c, const ScenePoint2D& p2);
-
-  /**
-  RadiansToDegrees
-  */
-  double RadiansToDegrees(double angleRad);
-
-  /**
-  This function will return the coordinates of a point that:
-  - belongs to the two bisecting lines of the p1 c p2 angle.
-  - is a distance d from c.
-  Among the four possible points, the one returned will be the one belonging
-  to the *smallest* half-plane defined by the [c,p1[ and [c,p2[ half-lines.
-  */
-  void GetPositionOnBisectingLine(
-    ScenePoint2D& result
-    , const ScenePoint2D& p1
-    , const ScenePoint2D& c
-    , const ScenePoint2D& p2
-    , const double d);
-
-
-#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
-  /**
-  This helper is used when drawing text with an outline.
-  It set the properties for several text layers at once : first the
-  four outline layers, with a position shift and then the actual main text
-  layer.
-
-  The five text layers are supposed to already exist in the scene, starting
-  from startingLayerIndex, up to (and not including) startingLayerIndex+5.
-  */
-  void SetTextLayerOutlineProperties(
-      Scene2D& scene
-    , boost::shared_ptr<LayerHolder> layerHolder
-    , const char* text
-    , ScenePoint2D p
-    , int startingLayerIndex);
-#else
-  void SetTextLayerProperties(
-    Scene2D& scene
-    , boost::shared_ptr<LayerHolder> layerHolder
-    , const char* text
-    , ScenePoint2D p
-    , int layerIndex);
-#endif
-
-  std::ostream& operator<<(std::ostream& os, const ScenePoint2D& p);
-}
-
--- a/Framework/Scene2DViewport/MeasureTrackers.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "MeasureTrackers.h"
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-
-  CreateMeasureTracker::CreateMeasureTracker(boost::shared_ptr<IViewport> viewport)
-    : viewport_(viewport)
-    , alive_(true)
-    , commitResult_(true)
-  {
-  }
-
-  void CreateMeasureTracker::Cancel()
-  {
-    commitResult_ = false;
-    alive_ = false;
-  }
-
-  bool CreateMeasureTracker::IsAlive() const
-  {
-    return alive_;
-  }
-
-  CreateMeasureTracker::~CreateMeasureTracker()
-  {
-    // if the tracker completes successfully, we add the command
-    // to the undo stack
-    // otherwise, we simply undo it
-
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-
-    if (commitResult_)
-      lock->GetController().PushCommand(command_);
-    else
-      command_->Undo();
-
-    lock->Invalidate();
-  }
-
-  EditMeasureTracker::EditMeasureTracker(boost::shared_ptr<IViewport> viewport, const PointerEvent& e)
-    : viewport_(viewport)
-    , alive_(true)
-    , commitResult_(true)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-
-    originalClickPosition_ = e.GetMainPosition().Apply(
-      lock->GetController().GetScene().GetCanvasToSceneTransform());
-  }
-
-  void EditMeasureTracker::Cancel()
-  {
-    commitResult_ = false;
-    alive_ = false;
-  }
-
-  bool EditMeasureTracker::IsAlive() const
-  {
-    return alive_;
-  }
-
-  EditMeasureTracker::~EditMeasureTracker()
-  {
-    // if the tracker completes successfully, we add the command
-    // to the undo stack
-    // otherwise, we simply undo it
-
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-
-    if (commitResult_)
-      lock->GetController().PushCommand(command_);
-    else
-      command_->Undo();
-
-    lock->Invalidate();
-  }
-}
-
-
--- a/Framework/Scene2DViewport/MeasureTrackers.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "IFlexiblePointerTracker.h"
-#include "../Scene2D/Scene2D.h"
-#include "../Scene2D/PointerEvent.h"
-
-#include "MeasureTool.h"
-#include "MeasureCommands.h"
-
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-
-#include <vector>
-
-namespace OrthancStone
-{
-  class CreateMeasureTracker : public IFlexiblePointerTracker
-  {
-  public:
-    virtual void Cancel() ORTHANC_OVERRIDE;
-    virtual bool IsAlive() const ORTHANC_OVERRIDE;
-  protected:
-    CreateMeasureTracker(boost::shared_ptr<IViewport> viewport);
-
-    ~CreateMeasureTracker();
-  
-  protected:
-    boost::shared_ptr<CreateMeasureCommand>         command_;
-    boost::shared_ptr<IViewport>          viewport_;
-    bool                            alive_;
-
-  private:
-    bool                            commitResult_;
-  };
-
-  class EditMeasureTracker : public IFlexiblePointerTracker
-  {
-  public:
-    virtual void Cancel() ORTHANC_OVERRIDE;
-    virtual bool IsAlive() const ORTHANC_OVERRIDE;
-  protected:
-    EditMeasureTracker(boost::shared_ptr<IViewport> viewport, const PointerEvent& e);
-
-    ~EditMeasureTracker();
-
-  protected:
-    boost::shared_ptr<EditMeasureCommand> command_;
-    boost::shared_ptr<IViewport>   viewport_;
-    bool                                  alive_;
-    
-    ScenePoint2D                          GetOriginalClickPosition() const
-    {
-      return originalClickPosition_;
-    }
-  private:
-    ScenePoint2D                          originalClickPosition_;
-    bool                                  commitResult_;
-  };
-}
-
--- a/Framework/Scene2DViewport/OneGesturePointerTracker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OneGesturePointerTracker.h"
-
-#include <OrthancException.h>
-
-#include "../StoneException.h"
-
-namespace OrthancStone
-{
-  OneGesturePointerTracker::OneGesturePointerTracker(
-    boost::shared_ptr<IViewport> viewport)
-    : viewport_(viewport)
-    , alive_(true)
-    , currentTouchCount_(1)
-  {
-  }
-
-  void OneGesturePointerTracker::PointerUp(const PointerEvent& event)
-  {
-    // pointer up is only called for the LAST up event in case of a multi-touch
-    // gesture
-    ORTHANC_ASSERT(currentTouchCount_ > 0, "Wrong state in tracker");
-    currentTouchCount_--;
-    //LOG(TRACE) << "currentTouchCount_ becomes: " << currentTouchCount_;
-    if (currentTouchCount_ == 0)
-    {
-      //LOG(TRACE) << "currentTouchCount_ == 0 --> alive_ = false";
-      alive_ = false;
-    }
-  }
-
-  void OneGesturePointerTracker::PointerDown(const PointerEvent& event)
-  {
-    // additional touches are not taken into account but we need to count 
-    // the number of active touches
-    currentTouchCount_++;
-    //LOG(TRACE) << "currentTouchCount_ becomes: " << currentTouchCount_;
-
-    /**
-     * 2019-12-06 (SJO): Patch to have consistent behavior when mouse
-     * leaves the canvas while the tracker is still active, then
-     * button is released while out-of-canvas. Such an event is not
-     * caught (at least in WebAssembly), so we delete the tracker on
-     * the next click inside the canvas.
-     **/
-    alive_ = false;
-  }
-
-  bool OneGesturePointerTracker::IsAlive() const
-  {
-    return alive_;
-  }
-}
--- a/Framework/Scene2DViewport/OneGesturePointerTracker.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "IFlexiblePointerTracker.h"
-
-#include "../Viewport/IViewport.h"
-
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-
-namespace OrthancStone
-{
-  /**
-  This base is class allows to write simple trackers that deal with single 
-  drag gestures with only one touch. It is *not* suitable for multi-touch and
-  multi-state trackers where various mouse operations need to be handled.
-
-  In order to write such a tracker:
-  - subclass this class
-  - you may store the initial click/touch position in the constructor
-  - implement PointerMove to react to pointer/touch events
-  - implement Cancel to restore the state at initial tracker creation time
-
-  */
-  class OneGesturePointerTracker : public IFlexiblePointerTracker
-  {
-  public:
-    OneGesturePointerTracker(boost::shared_ptr<IViewport> viewport);
-    virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE;
-    virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE;
-    virtual bool IsAlive() const ORTHANC_OVERRIDE;
-  
-  protected:
-    boost::shared_ptr<IViewport> viewport_;
-
-  private:
-    bool                   alive_;
-    int                    currentTouchCount_;
-  };
-}
-
--- a/Framework/Scene2DViewport/PredeclaredTypes.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-
-namespace OrthancStone
-
-{
-  class Scene2D;
-  class MeasureTool;
-  class LineMeasureTool;
-  class AngleMeasureTool;
-  class IPointerTracker;
-  class IFlexiblePointerTracker;
-  class CreateMeasureCommand;
-  class CreateLineMeasureCommand;
-  class CreateAngleMeasureCommand;
-  class MeasureCommand;
-  class ViewportController;
-  class LayerHolder;
-  class IViewport;
-}
--- a/Framework/Scene2DViewport/UndoStack.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "UndoStack.h"
-
-#include "MeasureCommands.h"
-
-#include "../StoneException.h"
-
-namespace OrthancStone
-{
-  UndoStack::UndoStack() : numAppliedCommands_(0)
-  {}
-
-  void UndoStack::PushCommand(boost::shared_ptr<MeasureCommand> command)
-  {
-    commandStack_.erase(
-      commandStack_.begin() + numAppliedCommands_,
-      commandStack_.end());
-
-    ORTHANC_ASSERT(std::find(commandStack_.begin(), commandStack_.end(), command)
-      == commandStack_.end(), "Duplicate command");
-    commandStack_.push_back(command);
-    numAppliedCommands_++;
-  }
-
-  void UndoStack::Undo()
-  {
-    ORTHANC_ASSERT(CanUndo(), "");
-    commandStack_[numAppliedCommands_ - 1]->Undo();
-    numAppliedCommands_--;
-  }
-
-  void UndoStack::Redo()
-  {
-    ORTHANC_ASSERT(CanRedo(), "");
-    commandStack_[numAppliedCommands_]->Redo();
-    numAppliedCommands_++;
-  }
-
-  bool UndoStack::CanUndo() const
-  {
-    return numAppliedCommands_ > 0;
-  }
-
-  bool UndoStack::CanRedo() const
-  {
-    return numAppliedCommands_ < commandStack_.size();
-  }
-
-}
--- a/Framework/Scene2DViewport/UndoStack.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-#include <vector>
-
-namespace OrthancStone
-{
-  class MeasureCommand;
-
-  class UndoStack
-  {
-  public:
-    UndoStack();
-
-    /**
-    Stores a command :
-    - this first trims the undo stack to keep the first numAppliedCommands_
-    - then it adds the supplied command at the top of the undo stack
-
-    In other words, when a new command is pushed, all the undone (and not
-    redone) commands are removed.
-    */
-    void PushCommand(boost::shared_ptr<MeasureCommand> command);
-
-    /**
-    Undoes the command at the top of the undo stack, or throws if there is no
-    command to undo.
-    You can check "CanUndo" first to protect against extraneous redo.
-    */
-    void Undo();
-
-    /**
-    Redoes the command that is just above the last applied command in the undo
-    stack or throws if there is no command to redo.
-    You can check "CanRedo" first to protect against extraneous redo.
-    */
-    void Redo();
-
-    /** selfexpl */
-    bool CanUndo() const;
-
-    /** selfexpl */
-    bool CanRedo() const;
-  
-  private:
-    std::vector<boost::shared_ptr<MeasureCommand> > commandStack_;
-
-    /**
-    This is always between >= 0 and <= undoStack_.size() and gives the
-    position where the controller is in the undo stack.
-    - If numAppliedCommands_ > 0, one can undo
-    - If numAppliedCommands_ < numAppliedCommands_.size(), one can redo
-    */
-    size_t                      numAppliedCommands_;
-  };
-}
--- a/Framework/Scene2DViewport/ViewportController.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,307 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "ViewportController.h"
-
-#include "UndoStack.h"
-#include "MeasureCommands.h"
-
-#include "../StoneException.h"
-#include "../Scene2D/PanSceneTracker.h"
-#include "../Scene2D/RotateSceneTracker.h"
-#include "../Scene2D/ZoomSceneTracker.h"
-
-#include <boost/make_shared.hpp>
-
-namespace OrthancStone
-{
-  IFlexiblePointerTracker* DefaultViewportInteractor::CreateTracker(
-    boost::shared_ptr<IViewport>          viewport,
-    const PointerEvent& event,
-    unsigned int        viewportWidth,
-    unsigned int        viewportHeight)
-  {
-    switch (event.GetMouseButton())
-    {
-      case MouseButton_Left:
-        return new RotateSceneTracker(viewport, event);
-
-      case MouseButton_Middle:
-        return new PanSceneTracker(viewport, event);
-      
-      case MouseButton_Right:
-      {
-        if (viewportWidth != 0)
-        {
-          return new ZoomSceneTracker(viewport, event, viewportWidth);
-        }
-        else
-        {
-          return NULL;
-        }
-      }
-
-      default:
-        return NULL;
-    }
-  }
-
-  ViewportController::ViewportController(boost::shared_ptr<IViewport> viewport)
-    : viewport_(viewport)
-    , scene_(new Scene2D)
-    , canvasToSceneFactor_(1)
-  {
-    // undoStack_ is not default-initialized, which basically means empty.
-    // The controller must be able to cope with this.
-  }
-
-  ViewportController::~ViewportController()
-  {
-  }
-
-  void ViewportController::PushCommand(
-    boost::shared_ptr<MeasureCommand> command)
-  {
-    boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
-    if (undoStack.get() != NULL)
-    {
-      undoStack->PushCommand(command);
-    }
-    else
-    {
-      LOG(ERROR) << "Internal error: no undo stack!";
-    }
-  }
-
-  void ViewportController::Undo()
-  {
-    boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
-    if (undoStack.get() != NULL)
-    {
-      undoStack->Undo();
-    }
-    else
-    {
-      LOG(ERROR) << "Internal error: no undo stack!";
-    }
-  }
-
-  void ViewportController::Redo()
-  {
-    boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
-    if (undoStack.get() != NULL)
-    {
-      undoStack->Redo();
-    }
-    else
-    {
-      LOG(ERROR) << "Internal error: no undo stack!";
-    }
-  }
-
-  bool ViewportController::CanUndo() const
-  {
-    boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
-    if (undoStack.get() != NULL)
-    {
-      return undoStack->CanUndo();
-    }
-    else
-    {
-      LOG(ERROR) << "Internal error: no undo stack!";
-      return false;
-    }
-  }
-
-  bool ViewportController::CanRedo() const
-  {
-    boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
-    if (undoStack.get() != NULL)
-    {
-      return undoStack->CanRedo();
-    }
-    else
-    {
-      LOG(ERROR) << "Internal error: no undo stack!";
-      return false;
-    }
-  }
-  
-  std::vector<boost::shared_ptr<MeasureTool> > 
-    ViewportController::HitTestMeasureTools(ScenePoint2D p)
-  {
-    std::vector<boost::shared_ptr<MeasureTool> > ret;
-    
-    for (size_t i = 0; i < measureTools_.size(); ++i)
-    {
-      if (measureTools_[i]->HitTest(p))
-        ret.push_back(measureTools_[i]);
-    }
-    return ret;
-  }
-  
-  void ViewportController::ResetMeasuringToolsHighlight()
-  {
-    for (size_t i = 0; i < measureTools_.size(); ++i)
-    {
-      measureTools_[i]->ResetHighlightState();
-    }
-  }
-
-  OrthancStone::AffineTransform2D 
-    ViewportController::GetCanvasToSceneTransform() const
-  {
-    return scene_->GetCanvasToSceneTransform();
-  }
-
-  OrthancStone::AffineTransform2D 
-    ViewportController::GetSceneToCanvasTransform() const
-  {
-    return scene_->GetSceneToCanvasTransform();
-  }
-
-  void ViewportController::SetSceneToCanvasTransform(
-    const AffineTransform2D& transform)
-  {
-    scene_->SetSceneToCanvasTransform(transform);
-
-    canvasToSceneFactor_ = scene_->GetCanvasToSceneTransform().ComputeZoom();
-    BroadcastMessage(SceneTransformChanged(*this));
-  }
-
-  void ViewportController::FitContent(unsigned int viewportWidth,
-                                      unsigned int viewportHeight)
-  {
-    scene_->FitContent(viewportWidth, viewportHeight);
-    canvasToSceneFactor_ = scene_->GetCanvasToSceneTransform().ComputeZoom();
-    BroadcastMessage(SceneTransformChanged(*this));
-  }
-
-  void ViewportController::AddMeasureTool(
-    boost::shared_ptr<MeasureTool> measureTool)
-  {
-    ORTHANC_ASSERT(std::find(measureTools_.begin(), 
-                             measureTools_.end(), 
-                             measureTool) == measureTools_.end(), 
-                  "Duplicate measure tool");
-    measureTools_.push_back(measureTool);
-  }
-
-  void ViewportController::RemoveMeasureTool(
-    boost::shared_ptr<MeasureTool> measureTool)
-  {
-    ORTHANC_ASSERT(std::find(measureTools_.begin(), 
-                             measureTools_.end(), 
-                             measureTool) != measureTools_.end(), 
-                  "Measure tool not found");
-    measureTools_.erase(
-      std::remove(measureTools_.begin(), measureTools_.end(), measureTool), 
-      measureTools_.end());
-  }
-
-  double ViewportController::GetCanvasToSceneFactor() const
-  {
-    return canvasToSceneFactor_;
-  }
-
-  double ViewportController::GetHandleSideLengthS() const
-  {
-    return HANDLE_SIDE_LENGTH_CANVAS_COORD * GetCanvasToSceneFactor();
-  }
-
-  double ViewportController::GetAngleToolArcRadiusS() const
-  {
-    return ARC_RADIUS_CANVAS_COORD * GetCanvasToSceneFactor();
-  }
-
-  double ViewportController::GetHitTestMaximumDistanceS() const
-  {
-    return HIT_TEST_MAX_DISTANCE_CANVAS_COORD * GetCanvasToSceneFactor();
-  }
-
-  double ViewportController::GetAngleTopTextLabelDistanceS() const
-  {
-    return TEXT_CENTER_DISTANCE_CANVAS_COORD * GetCanvasToSceneFactor();
-  }
-
-
-  void ViewportController::HandleMousePress(
-    OrthancStone::IViewportInteractor&  interactor,
-    const PointerEvent&                 event,
-    unsigned int                        viewportWidth,
-    unsigned int                        viewportHeight)
-  {
-    if (activeTracker_)
-    {
-      // We are dealing with a multi-stage tracker (that is made of several 
-      // interactions)
-      activeTracker_->PointerDown(event);
-
-      if (!activeTracker_->IsAlive())
-      {
-        activeTracker_.reset();
-      }
-    }
-    else
-    {
-      // Check whether there is already a measure tool at that position
-      for (size_t i = 0; i < measureTools_.size(); ++i)
-      {
-        if (measureTools_[i]->HitTest(event.GetMainPosition()))
-        {
-          activeTracker_ = measureTools_[i]->CreateEditionTracker(event);
-          return;
-        }
-      }
-
-      // No measure tool, create new tracker from the interactor
-      activeTracker_.reset(interactor.CreateTracker(viewport_, 
-                                                    event, 
-                                                    viewportWidth, 
-                                                    viewportHeight));
-    }
-  }
-
-  bool ViewportController::HandleMouseMove(const PointerEvent& event)
-  {
-    if (activeTracker_)
-    {
-      activeTracker_->PointerMove(event);
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-  void ViewportController::HandleMouseRelease(const PointerEvent& event)
-  {
-    if (activeTracker_)
-    {
-      activeTracker_->PointerUp(event);
-
-      if (!activeTracker_->IsAlive())
-      {
-        activeTracker_.reset();
-      }
-    }
-  }
-}
--- a/Framework/Scene2DViewport/ViewportController.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "PredeclaredTypes.h"
-
-#include "../Messages/IObservable.h"
-#include "../Scene2D/Scene2D.h"
-#include "../Scene2DViewport/IFlexiblePointerTracker.h"
-
-#include <Compatibility.h>
-
-#include <boost/enable_shared_from_this.hpp>
-#include <stack>
-
-namespace OrthancStone
-{
-  // TODO - Move this to another file
-  class IViewportInteractor : public boost::noncopyable
-  {
-  public:
-    virtual ~IViewportInteractor()
-    {
-    }
-
-    virtual IFlexiblePointerTracker* CreateTracker(boost::shared_ptr<IViewport> viewport,
-                                                   const PointerEvent& event,
-                                                   unsigned int viewportWidth,
-                                                   unsigned int viewportHeight) = 0;
-  };
-
-
-  // TODO - Move this to another file
-  class DefaultViewportInteractor : public IViewportInteractor
-  {
-  public:
-    virtual IFlexiblePointerTracker* CreateTracker(boost::shared_ptr<IViewport> viewport,
-                                                   const PointerEvent& event,
-                                                   unsigned int viewportWidth,
-                                                   unsigned int viewportHeight) ORTHANC_OVERRIDE;
-  };
-
-
-  class UndoStack;
-
-  const double ARC_RADIUS_CANVAS_COORD = 30.0;
-  const double TEXT_CENTER_DISTANCE_CANVAS_COORD = 90;
-
-  const double HANDLE_SIDE_LENGTH_CANVAS_COORD = 10.0;
-  const double HIT_TEST_MAX_DISTANCE_CANVAS_COORD = 15.0;
-
-  const uint8_t TEXT_COLOR_RED = 0;
-  const uint8_t TEXT_COLOR_GREEN = 223;
-  const uint8_t TEXT_COLOR_BLUE = 81;
-
-  const uint8_t TOOL_ANGLE_LINES_COLOR_RED = 0;
-  const uint8_t TOOL_ANGLE_LINES_COLOR_GREEN = 183;
-  const uint8_t TOOL_ANGLE_LINES_COLOR_BLUE = 17;
-                     
-  const uint8_t TOOL_ANGLE_LINES_HL_COLOR_RED = 0;
-  const uint8_t TOOL_ANGLE_LINES_HL_COLOR_GREEN = 17;
-  const uint8_t TOOL_ANGLE_LINES_HL_COLOR_BLUE = 183;
-
-  const uint8_t TOOL_LINES_COLOR_RED = 0;
-  const uint8_t TOOL_LINES_COLOR_GREEN = 223;
-  const uint8_t TOOL_LINES_COLOR_BLUE = 21;
-
-  const uint8_t TOOL_LINES_HL_COLOR_RED = 0;
-  const uint8_t TOOL_LINES_HL_COLOR_GREEN = 21;
-  const uint8_t TOOL_LINES_HL_COLOR_BLUE = 223;
-
-  const uint8_t TEXT_OUTLINE_COLOR_RED = 0;
-  const uint8_t TEXT_OUTLINE_COLOR_GREEN = 56;
-  const uint8_t TEXT_OUTLINE_COLOR_BLUE = 21;
-
-  /**
-  This object is responsible for hosting a scene, responding to messages from
-  the model and updating the scene accordingly.
-
-  It contains the list of active measuring tools as well as the stack
-  where measuring tool commands are stored.
-
-  The active tracker is also stored in the viewport controller.
-
-  Each canvas or other GUI area where we want to display a 2D image, either 
-  directly or through slicing must be assigned a ViewportController.
-  */
-  class ViewportController : 
-    public IObservable,
-    public boost::enable_shared_from_this<ViewportController>
-  {
-  public:
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, \
-                                        SceneTransformChanged, \
-                                        ViewportController);
-
-    ViewportController(boost::shared_ptr<IViewport> viewport);
-
-    ~ViewportController();
-
-    /**
-    This method returns the list of measure tools containing the supplied point
-    (in scene coords). A tracker can then be requested from the chosen 
-    measure tool, if needed
-    */
-    std::vector<boost::shared_ptr<MeasureTool> > HitTestMeasureTools(
-      ScenePoint2D p);
-
-    /**
-    This function will traverse the measuring tools and will clear their 
-    highlighted state
-    */
-    void ResetMeasuringToolsHighlight();
-
-    /**
-    With this method, the object takes ownership of the supplied tracker and
-    updates it according to user interaction
-    */
-    void AcquireActiveTracker(IFlexiblePointerTracker* tracker);
-
-    /** Forwarded to the underlying scene */
-    AffineTransform2D GetCanvasToSceneTransform() const;
-
-    /** Forwarded to the underlying scene */
-    AffineTransform2D GetSceneToCanvasTransform() const;
-
-    /** Forwarded to the underlying scene, and broadcasted to the observers */
-    void SetSceneToCanvasTransform(const AffineTransform2D& transform);
-
-    /** Forwarded to the underlying scene, and broadcasted to the observers */
-    void FitContent(unsigned int viewportWidth,
-                    unsigned int viewportHeight);
-
-    /** Adds a new measure tool */
-    void AddMeasureTool(boost::shared_ptr<MeasureTool> measureTool);
-
-    /** Removes a measure tool or throws if it cannot be found */
-    void RemoveMeasureTool(boost::shared_ptr<MeasureTool> measureTool);
-
-    /**
-    The square handle side length in *scene* coordinates
-    */
-    double GetHandleSideLengthS() const;
-
-    /**
-    The angle measure too arc  radius in *scene* coordinates
-
-    Note: you might wonder why this is not part of the AngleMeasureTool itself,
-    but we prefer to put all such constants in the same location, to ease 
-    */
-    double GetAngleToolArcRadiusS() const;
-
-    /**
-    The hit test maximum distance in *scene* coordinates.
-    If a pointer event is less than GetHandleSideLengthS() to a GUI element,
-    the hit test for this GUI element is seen as true
-    */
-    double GetHitTestMaximumDistanceS() const;
-
-    /**
-    Distance between the top of the angle measuring tool and the center of 
-    the label showing the actual measure, in *scene* coordinates
-    */
-    double GetAngleTopTextLabelDistanceS() const;
-
-
-    /** forwarded to the UndoStack */
-    void PushCommand(boost::shared_ptr<MeasureCommand> command);
-
-    /** forwarded to the UndoStack */
-    void Undo();
-
-    /** forwarded to the UndoStack */
-    void Redo();
-
-    /** forwarded to the UndoStack */
-    bool CanUndo() const;
-
-    /** forwarded to the UndoStack */
-    bool CanRedo() const;
-
-
-    // Must be expressed in canvas coordinates
-    void HandleMousePress(IViewportInteractor& interactor,
-                          const PointerEvent& event,
-                          unsigned int viewportWidth,
-                          unsigned int viewportHeight);
-
-    // Must be expressed in canvas coordinates. Returns "true" if the
-    // state has changed, so that "Invalidate()" can be called.
-    bool HandleMouseMove(const PointerEvent& event);
-
-    // Must be expressed in canvas coordinates
-    void HandleMouseRelease(const PointerEvent& event);
-
-    const Scene2D& GetScene() const
-    {
-      return *scene_;
-    }
-
-    Scene2D& GetScene()
-    {
-      return *scene_;
-    }
-
-    /**
-    This method is used in a move pattern: when the ownership of the scene 
-    managed by this viewport controller must be transferred to another 
-    controller.
-    */
-    Scene2D* ReleaseScene()
-    {
-      return scene_.release();
-    }
-
-    /**
-    This method is used when one wishes to replace the scene that is currently
-    managed by the controller. The previous scene is deleted and the controller
-    now has ownership of the new one.
-    */
-    void AcquireScene(Scene2D* scene)
-    {
-      scene_.reset(scene);
-    }
-
-    /**
-    Sets the undo stack that is used by PushCommand, Undo...
-    */
-    void SetUndoStack(boost::weak_ptr<UndoStack> undoStackW)
-    {
-      undoStackW_ = undoStackW;
-    }
-    
-    bool HasActiveTracker() const
-    {
-      return activeTracker_.get() != NULL;
-    }
-
-  private:
-    double GetCanvasToSceneFactor() const;
-
-    boost::shared_ptr<IViewport>                  viewport_;
-    boost::weak_ptr<UndoStack>                    undoStackW_;  // Global stack, possibly shared by all viewports
-    std::vector<boost::shared_ptr<MeasureTool> >  measureTools_;
-    boost::shared_ptr<IFlexiblePointerTracker>    activeTracker_;  // TODO - Couldn't this be a "std::unique_ptr"?
-
-    std::unique_ptr<Scene2D>   scene_;
-
-    // this is cached
-    double  canvasToSceneFactor_;    
-  };
-}
--- a/Framework/StoneEnumerations.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "StoneEnumerations.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-namespace OrthancStone
-{  
-  SopClassUid StringToSopClassUid(const std::string& source)
-  {
-    std::string s = Orthanc::Toolbox::StripSpaces(source);
-
-    if (s == "1.2.840.10008.5.1.4.1.1.481.2")
-    {
-      return SopClassUid_RTDose;
-    }
-    else
-    {
-      //LOG(INFO) << "Other SOP class UID: " << source;
-      return SopClassUid_Other;
-    }
-  }  
-
-
-  void ComputeWindowing(float& targetCenter,
-                        float& targetWidth,
-                        ImageWindowing windowing,
-                        float customCenter,
-                        float customWidth)
-  {
-    switch (windowing)
-    {
-      case ImageWindowing_Custom:
-        targetCenter = customCenter;
-        targetWidth = customWidth;
-        break;
-
-      case ImageWindowing_Bone:
-        targetCenter = 300;
-        targetWidth = 2000;
-        break;
-
-      case ImageWindowing_Lung:
-        targetCenter = -600;
-        targetWidth = 1600;
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-  
-  void ComputeAnchorTranslation(double& deltaX,
-                                double& deltaY,
-                                BitmapAnchor anchor,
-                                unsigned int bitmapWidth,
-                                unsigned int bitmapHeight,
-                                unsigned int border)
-  {
-    double dw = static_cast<double>(bitmapWidth);
-    double dh = static_cast<double>(bitmapHeight);
-
-    switch (anchor)
-    {
-      case BitmapAnchor_TopLeft:
-        deltaX = 0;
-        deltaY = 0;
-        break;
-        
-      case BitmapAnchor_TopCenter:
-        deltaX = -dw / 2.0;
-        deltaY = 0;
-        break;
-        
-      case BitmapAnchor_TopRight:
-        deltaX = -dw;
-        deltaY = 0;
-        break;
-        
-      case BitmapAnchor_CenterLeft:
-        deltaX = 0;
-        deltaY = -dh / 2.0;
-        break;
-        
-      case BitmapAnchor_Center:
-        deltaX = -dw / 2.0;
-        deltaY = -dh / 2.0;
-        break;
-        
-      case BitmapAnchor_CenterRight:
-        deltaX = -dw;
-        deltaY = -dh / 2.0;
-        break;
-        
-      case BitmapAnchor_BottomLeft:
-        deltaX = 0;
-        deltaY = -dh;
-        break;
-        
-      case BitmapAnchor_BottomCenter:
-        deltaX = -dw / 2.0;
-        deltaY = -dh;
-        break;
-        
-      case BitmapAnchor_BottomRight:
-        deltaX = -dw;
-        deltaY = -dh;
-        break;
-        
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }    
-
-    if (border != 0)
-    {
-      double b = static_cast<double>(border);
-
-      switch (anchor)
-      {
-        case BitmapAnchor_TopLeft:
-        case BitmapAnchor_TopCenter:
-        case BitmapAnchor_TopRight:
-          deltaY += b;
-          break;
-        
-        case BitmapAnchor_BottomLeft:
-        case BitmapAnchor_BottomCenter:
-        case BitmapAnchor_BottomRight:
-          deltaY -= b;
-          break;
-        
-        default:
-          break;
-      }    
-
-      switch (anchor)
-      {
-        case BitmapAnchor_TopLeft:
-        case BitmapAnchor_CenterLeft:
-        case BitmapAnchor_BottomLeft:
-          deltaX += b;
-          break;
-
-        case BitmapAnchor_CenterRight:
-        case BitmapAnchor_TopRight:
-        case BitmapAnchor_BottomRight:
-          deltaX -= b;
-          break;
-        
-        default:
-          break;
-      }
-    }
-  }
-}
--- a/Framework/StoneEnumerations.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OrthancFramework.h"
-
-#include <string>
-
-
-namespace OrthancStone
-{
-  enum SliceOffsetMode
-  {
-    SliceOffsetMode_Absolute,
-    SliceOffsetMode_Relative,
-    SliceOffsetMode_Loop
-  };
-
-  enum ImageWindowing
-  {
-    ImageWindowing_Bone,
-    ImageWindowing_Lung,
-    ImageWindowing_Custom
-  };
-
-  enum MouseButton
-  {
-    MouseButton_Left,
-    MouseButton_Right,
-    MouseButton_Middle,
-    MouseButton_None   // For instance, because of touch event
-  };
-
-  enum MouseWheelDirection
-  {
-    MouseWheelDirection_Up,
-    MouseWheelDirection_Down
-  };
-
-  enum VolumeProjection
-  {
-    VolumeProjection_Axial,
-    VolumeProjection_Coronal,
-    VolumeProjection_Sagittal
-  };
-
-  enum ImageInterpolation
-  {
-    ImageInterpolation_Nearest,
-    ImageInterpolation_Bilinear,
-    ImageInterpolation_Trilinear
-  };
-
-  enum KeyboardModifiers
-  {
-    KeyboardModifiers_None = 0,
-    KeyboardModifiers_Shift = (1 << 0),
-    KeyboardModifiers_Control = (1 << 1),
-    KeyboardModifiers_Alt = (1 << 2)
-  };
-
-  enum KeyboardKeys
-  {
-    KeyboardKeys_Generic = 0,
-
-    // let's use the same ids as in javascript to avoid some conversion in WASM: https://css-tricks.com/snippets/javascript/javascript-keycodes/
-    KeyboardKeys_Backspace = 8,
-    KeyboardKeys_Left = 37,
-    KeyboardKeys_Up = 38,
-    KeyboardKeys_Right = 39,
-    KeyboardKeys_Down = 40,
-    KeyboardKeys_Delete = 46,
-
-    KeyboardKeys_F1 = 112,
-    KeyboardKeys_F2 = 113,
-    KeyboardKeys_F3 = 114,
-    KeyboardKeys_F4 = 115,
-    KeyboardKeys_F5 = 116,
-    KeyboardKeys_F6 = 117,
-    KeyboardKeys_F7 = 118,
-    KeyboardKeys_F8 = 119,
-    KeyboardKeys_F9 = 120,
-    KeyboardKeys_F10 = 121,
-    KeyboardKeys_F11 = 122,
-    KeyboardKeys_F12 = 123,
-  };
-
-  enum SopClassUid
-  {
-    SopClassUid_Other,
-    SopClassUid_RTDose
-  };
-
-  enum BitmapAnchor
-  {
-    BitmapAnchor_BottomLeft,
-    BitmapAnchor_BottomCenter,
-    BitmapAnchor_BottomRight,
-    BitmapAnchor_CenterLeft,
-    BitmapAnchor_Center,
-    BitmapAnchor_CenterRight,
-    BitmapAnchor_TopLeft,
-    BitmapAnchor_TopCenter,
-    BitmapAnchor_TopRight
-  };
-
-  enum SliceAction
-  {
-    SliceAction_FastPlus,
-    SliceAction_Plus,
-    SliceAction_None,
-    SliceAction_Minus,
-    SliceAction_FastMinus
-  };
-
-  SopClassUid StringToSopClassUid(const std::string& source);
-
-  void ComputeWindowing(float& targetCenter,
-                        float& targetWidth,
-                        ImageWindowing windowing,
-                        float customCenter,
-                        float customWidth);
-
-  void ComputeAnchorTranslation(double& deltaX /* out */,
-                                double& deltaY /* out */,
-                                BitmapAnchor anchor,
-                                unsigned int bitmapWidth,
-                                unsigned int bitmapHeight,
-                                unsigned int border = 0);
-}
--- a/Framework/StoneException.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "Toolbox/LinearAlgebra.h"
-
-#include <OrthancException.h>
-
-#include <boost/lexical_cast.hpp>
-
-#include <iostream>
-
-namespace OrthancStone
-{
-  enum ErrorCode
-  {
-    ErrorCode_Success,
-    ErrorCode_OrthancError, // this StoneException is actually an OrthancException with an Orthanc error code
-    ErrorCode_ApplicationException, // this StoneException is specific to an application (and should have its own internal error code)
-    ErrorCode_NotImplemented, // case not implemented
-
-    ErrorCode_CanOnlyAddOneLayerAtATime,
-    ErrorCode_CommandJsonInvalidFormat,
-    ErrorCode_WebGLContextLost,
-    ErrorCode_Last
-  };
-
-
-
-  class StoneException
-  {
-  protected:
-    OrthancStone::ErrorCode     errorCode_;
-
-  public:
-    explicit StoneException(ErrorCode errorCode) :
-      errorCode_(errorCode)
-    {
-    }
-
-    virtual ~StoneException() {}
-
-    ErrorCode GetErrorCode() const
-    {
-      return errorCode_;
-    }
-
-    virtual const char* What() const
-    {
-      switch (errorCode_)
-      {
-      case ErrorCode_Success:
-        return "Success";
-        break;
-      case ErrorCode_OrthancError:
-        return "OrthancError";
-        break;
-      case ErrorCode_ApplicationException:
-        return "ApplicationException";
-        break;
-      case ErrorCode_NotImplemented:
-        return "NotImplemented";
-        break;
-      case ErrorCode_CanOnlyAddOneLayerAtATime:
-        return "CanOnlyAddOneLayerAtATime";
-        break;
-      case ErrorCode_CommandJsonInvalidFormat:
-        return "CommandJsonInvalidFormat";
-        break;
-      case ErrorCode_WebGLContextLost:
-        return "WebGLContextLost";
-        break;
-      case ErrorCode_Last:
-        return "Last";
-        break;
-      default:
-        return "Unknown exception code!";
-      }
-    }
-  };
-}
-
-// See https://isocpp.org/wiki/faq/misc-technical-issues#macros-with-multi-stmts
-// (or google "Multiple lines macro C++ faq lite" if link is dead)
-#define ORTHANC_ASSERT2(cond,streamChainMessage) \
-    if (!(cond)) { \
-      std::stringstream sst; \
-      sst << "Assertion failed. Condition = \"" #cond "\" Message = \"" << streamChainMessage << "\""; \
-      std::string sstr = sst.str(); \
-      throw ::Orthanc::OrthancException(::Orthanc::ErrorCode_InternalError,sstr.c_str()); \
-    } else (void)0
-
-#define ORTHANC_ASSERT1(cond) \
-    if (!(cond)) { \
-      std::stringstream sst; \
-      sst << "Assertion failed. Condition = \"" #cond "\""; \
-      std::string sstr = sst.str(); \
-      throw ::Orthanc::OrthancException(::Orthanc::ErrorCode_InternalError,sstr.c_str()); \
-    } else (void)0
-
-# define ORTHANC_EXPAND( x ) x 
-# define GET_ORTHANC_ASSERT(_1,_2,NAME,...) NAME
-# define ORTHANC_ASSERT(...) ORTHANC_EXPAND(GET_ORTHANC_ASSERT(__VA_ARGS__, ORTHANC_ASSERT2, ORTHANC_ASSERT1, UNUSED)(__VA_ARGS__))
-
-
-
-
-
-/*
-Explanation:
-
-ORTHANC_ASSERT(a)
-ORTHANC_EXPAND(GET_ORTHANC_ASSERT(a, ORTHANC_ASSERT2, ORTHANC_ASSERT1, UNUSED)(a))
-ORTHANC_EXPAND(ORTHANC_ASSERT1(a))
-ORTHANC_ASSERT1(a)
-
-ORTHANC_ASSERT(a,b)
-ORTHANC_EXPAND(GET_ORTHANC_ASSERT(a, b, ORTHANC_ASSERT2, ORTHANC_ASSERT1, UNUSED)(a,b))
-ORTHANC_EXPAND(ORTHANC_ASSERT2(a,b))
-ORTHANC_ASSERT2(a,b)
-
-Note: ORTHANC_EXPAND is required for some older compilers (MS v100 cl.exe )
-*/
-
-
-
-
-
-
--- a/Framework/StoneInitialization.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "StoneInitialization.h"
-
-#if !defined(ORTHANC_ENABLE_SDL)
-#  error Macro ORTHANC_ENABLE_SDL must be defined
-#endif
-
-#if !defined(ORTHANC_ENABLE_SSL)
-#  error Macro ORTHANC_ENABLE_SSL must be defined
-#endif
-
-#if !defined(ORTHANC_ENABLE_CURL)
-#  error Macro ORTHANC_ENABLE_CURL must be defined
-#endif
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error Macro ORTHANC_ENABLE_DCMTK must be defined
-#  if !defined(DCMTK_VERSION_NUMBER)
-#    error Macro DCMTK_VERSION_NUMBER must be defined
-#  endif
-#endif
-
-#if ORTHANC_ENABLE_SDL == 1
-#  include "Viewport/SdlWindow.h"
-#endif
-
-#if ORTHANC_ENABLE_CURL == 1
-#  include <HttpClient.h>
-#endif
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include <DicomParsing/FromDcmtkBridge.h>
-#endif
-
-#if ORTHANC_ENABLE_WASM == 1
-static double viewportsTimeout_ = 1000;
-static std::unique_ptr<OrthancStone::WebGLViewportsRegistry>  viewportsRegistry_;
-#endif
-
-#include "Toolbox/LinearAlgebra.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-#include <locale>
-
-
-namespace OrthancStone
-{
-  void StoneInitialize(void* pluginContext)
-  {
-    if (pluginContext != NULL)
-    {
-      Orthanc::Logging::InitializePluginContext(pluginContext);
-    }
-    else
-    {
-      Orthanc::Logging::Initialize();
-    }
-
-#if ORTHANC_ENABLE_SSL == 1
-    // Must be before curl
-    Orthanc::Toolbox::InitializeOpenSsl();
-#endif
-
-#if ORTHANC_ENABLE_CURL == 1
-    Orthanc::HttpClient::GlobalInitialize();
-#  if ORTHANC_ENABLE_SSL == 1
-    Orthanc::HttpClient::ConfigureSsl(false, "");
-#  endif
-#endif
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    Orthanc::FromDcmtkBridge::InitializeDictionary(true);
-    Orthanc::FromDcmtkBridge::InitializeCodecs();
-#  if DCMTK_VERSION_NUMBER <= 360
-    OFLog::configure(OFLogger::FATAL_LOG_LEVEL);
-#  else
-    OFLog::configure(OFLogger::OFF_LOG_LEVEL);
-#  endif
-#endif
-
-    /**
-     * This call is necessary to make "boost::lexical_cast<>" work in
-     * a consistent way in the presence of "double" or "float", and of
-     * a numeric locale that replaces dot (".") by comma (",") as the
-     * decimal separator.
-     * https://stackoverflow.com/a/18981514/881731
-     **/
-    std::locale::global(std::locale::classic());
-
-    {
-      // Run-time checks of locale settings, to be run after Qt has
-      // been initialized, as Qt changes locale settings
-
-      {
-        OrthancStone::Vector v;
-        if (!OrthancStone::LinearAlgebra::ParseVector(v, "1.3671875\\-1.3671875") ||
-            v.size() != 2 ||
-            !OrthancStone::LinearAlgebra::IsNear(1.3671875f, v[0]) ||
-            !OrthancStone::LinearAlgebra::IsNear(-1.3671875f, v[1]))
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                          "Error in the locale settings, giving up");
-        }
-      }
-
-      {
-        Json::Value dicomweb = Json::objectValue;
-        dicomweb["00280030"] = Json::objectValue;
-        dicomweb["00280030"]["vr"] = "DS";
-        dicomweb["00280030"]["Value"] = Json::arrayValue;
-        dicomweb["00280030"]["Value"].append(1.2f);
-        dicomweb["00280030"]["Value"].append(-1.5f);
-
-        Orthanc::DicomMap source;
-        source.FromDicomWeb(dicomweb);
-
-        std::string s;
-        OrthancStone::Vector v;
-        if (!source.LookupStringValue(s, Orthanc::DICOM_TAG_PIXEL_SPACING, false) ||
-            !OrthancStone::LinearAlgebra::ParseVector(v, s) ||
-            v.size() != 2 ||
-            !OrthancStone::LinearAlgebra::IsNear(1.2f, v[0]) ||
-            !OrthancStone::LinearAlgebra::IsNear(-1.5f, v[1]))
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                          "Error in the locale settings, giving up");
-        }
-      }
-    }
-
-#if ORTHANC_ENABLE_SDL == 1
-    OrthancStone::SdlWindow::GlobalInitialize();
-#endif
-  }
-  
-
-  void StoneFinalize()
-  {
-#if ORTHANC_ENABLE_WASM == 1
-    viewportsRegistry_.reset();
-#endif
-    
-#if ORTHANC_ENABLE_SDL == 1
-    OrthancStone::SdlWindow::GlobalFinalize();
-#endif
-    
-#if ORTHANC_ENABLE_DCMTK == 1
-    Orthanc::FromDcmtkBridge::FinalizeCodecs();
-#endif
-
-#if ORTHANC_ENABLE_CURL == 1
-    Orthanc::HttpClient::GlobalFinalize();
-#endif
-
-#if ORTHANC_ENABLE_SSL == 1
-    Orthanc::Toolbox::FinalizeOpenSsl();
-#endif
-
-    Orthanc::Logging::Finalize();
-  }
-
-
-#if ORTHANC_ENABLE_WASM == 1
-  void SetWebGLViewportsRegistryTimeout(double timeout)
-  {
-    if (viewportsRegistry_.get())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      viewportsTimeout_ = timeout;
-    }
-  }
-#endif
-
-
-#if ORTHANC_ENABLE_WASM == 1
-  WebGLViewportsRegistry& GetWebGLViewportsRegistry()
-  {
-    if (viewportsRegistry_.get() == NULL)
-    {
-      viewportsRegistry_.reset(new WebGLViewportsRegistry(viewportsTimeout_));
-    }
-
-    return *viewportsRegistry_;
-  }
-#endif
-}
--- a/Framework/StoneInitialization.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if !defined(ORTHANC_ENABLE_WASM)
-#  error Macro ORTHANC_ENABLE_WASM must be defined
-#endif
-
-#if ORTHANC_ENABLE_WASM == 1
-#  include "Viewport/WebGLViewportsRegistry.h"
-#endif
-
-#include <Logging.h>
-
-namespace OrthancStone
-{
-  void StoneInitialize(void* pluginContext);
-
-  inline void StoneInitialize()
-  {
-    StoneInitialize(NULL);
-  }
-
-  void StoneFinalize();
-
-#if ORTHANC_ENABLE_WASM == 1
-  void SetWebGLViewportsRegistryTimeout(double timeout);
-#endif
-
-#if ORTHANC_ENABLE_WASM == 1
-  WebGLViewportsRegistry& GetWebGLViewportsRegistry();
-#endif
-}
--- a/Framework/Toolbox/AffineTransform2D.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,271 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "AffineTransform2D.h"
-
-#include "ImageGeometry.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  AffineTransform2D::AffineTransform2D() :
-    matrix_(LinearAlgebra::IdentityMatrix(3))
-  {
-  }
-
-  
-  AffineTransform2D::AffineTransform2D(const Matrix& m)
-  {
-    if (m.size1() != 3 ||
-        m.size2() != 3)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize);
-    }
-
-    if (!LinearAlgebra::IsCloseToZero(m(2, 0)) ||
-        !LinearAlgebra::IsCloseToZero(m(2, 1)) ||
-        LinearAlgebra::IsCloseToZero(m(2, 2)))
-    {
-      LOG(ERROR) << "Cannot setup an AffineTransform2D with perspective effects";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    matrix_ = m / m(2, 2);
-  }
-    
-
-  void AffineTransform2D::Apply(double& x /* inout */,
-                                double& y /* inout */) const
-  {
-    Vector p;
-    LinearAlgebra::AssignVector(p, x, y, 1);
-
-    Vector q = LinearAlgebra::Product(matrix_, p);
-
-    if (!LinearAlgebra::IsNear(q[2], 1.0))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-    else
-    {
-      x = q[0];
-      y = q[1];
-    }
-  }
-
-
-  void AffineTransform2D::Apply(Orthanc::ImageAccessor& target,
-                                const Orthanc::ImageAccessor& source,
-                                ImageInterpolation interpolation,
-                                bool clear) const
-  {
-    assert(LinearAlgebra::IsNear(matrix_(2, 0), 0) &&
-           LinearAlgebra::IsNear(matrix_(2, 1), 0) &&
-           LinearAlgebra::IsNear(matrix_(2, 2), 1));
-
-    ApplyAffineTransform(target, source,
-                         matrix_(0, 0), matrix_(0, 1), matrix_(0, 2),
-                         matrix_(1, 0), matrix_(1, 1), matrix_(1, 2),
-                         interpolation, clear);
-  }
-
-
-  void AffineTransform2D::ConvertToOpenGLMatrix(float target[16],
-                                                unsigned int canvasWidth,
-                                                unsigned int canvasHeight) const
-  {
-    const AffineTransform2D t = AffineTransform2D::Combine(
-      CreateOpenGLClipspace(canvasWidth, canvasHeight), *this);
-    
-    const Matrix source = t.GetHomogeneousMatrix();
-  
-    if (source.size1() != 3 ||
-        source.size2() != 3)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    // "z" must be in the [-1,1] range, otherwise the texture does not show up
-    float z = 0;
-
-    // Embed the 3x3 affine transform of the 2D plane into a 4x4
-    // matrix (3D) for OpenGL. The matrix must be transposed.
-
-    target[0] = static_cast<float>(source(0, 0)); 
-    target[1] = static_cast<float>(source(1, 0)); 
-    target[2] = 0; 
-    target[3] = static_cast<float>(source(2, 0));
-    target[4] = static_cast<float>(source(0, 1)); 
-    target[5] = static_cast<float>(source(1, 1));
-    target[6] = 0;
-    target[7] = static_cast<float>(source(2, 1));
-    target[8] = 0; 
-    target[9] = 0; 
-    target[10] = -1; 
-    target[11] = 0;
-    target[12] = static_cast<float>(source(0, 2)); 
-    target[13] = static_cast<float>(source(1, 2));
-    target[14] = -z;
-    target[15] = static_cast<float>(source(2, 2));
-  }
-
-
-  double AffineTransform2D::ComputeZoom() const
-  {
-    // Compute the length of the (0,0)-(1,1) diagonal (whose
-    // length is sqrt(2)) instead of the (0,0)-(1,0) unit segment,
-    // in order to cope with possible anisotropic zooming
-        
-    double x1 = 0;
-    double y1 = 0;
-    Apply(x1, y1);
-
-    double x2 = 1;
-    double y2 = 1;
-    Apply(x2, y2);
-
-    double dx = x2 - x1;
-    double dy = y2 - y1;
-
-    double zoom = sqrt(dx * dx + dy * dy) / sqrt(2.0);
-
-    if (LinearAlgebra::IsCloseToZero(zoom))
-    {
-      return 1;  // Default value if transform is ill-conditioned 
-    }
-    else
-    {
-      return zoom;
-    }
-  }    
-
-
-  AffineTransform2D AffineTransform2D::Invert(const AffineTransform2D& a)
-  {
-    AffineTransform2D t;
-    LinearAlgebra::InvertMatrix(t.matrix_, a.matrix_);
-    return t;
-  }
-
-
-  AffineTransform2D AffineTransform2D::Combine(const AffineTransform2D& a,
-                                               const AffineTransform2D& b)
-  {
-    return AffineTransform2D(LinearAlgebra::Product(a.GetHomogeneousMatrix(),
-                                                    b.GetHomogeneousMatrix()));
-  }
-  
-      
-  AffineTransform2D AffineTransform2D::Combine(const AffineTransform2D& a,
-                                               const AffineTransform2D& b,
-                                               const AffineTransform2D& c)
-  {
-    return AffineTransform2D(LinearAlgebra::Product(a.GetHomogeneousMatrix(),
-                                                    b.GetHomogeneousMatrix(),
-                                                    c.GetHomogeneousMatrix()));
-  }
-  
-      
-  AffineTransform2D AffineTransform2D::Combine(const AffineTransform2D& a,
-                                               const AffineTransform2D& b,
-                                               const AffineTransform2D& c,
-                                               const AffineTransform2D& d)
-  {
-    return AffineTransform2D(LinearAlgebra::Product(a.GetHomogeneousMatrix(),
-                                                    b.GetHomogeneousMatrix(),
-                                                    c.GetHomogeneousMatrix(),
-                                                    d.GetHomogeneousMatrix()));
-  }
-  
-  AffineTransform2D AffineTransform2D::Combine(const AffineTransform2D& a,
-                                               const AffineTransform2D& b,
-                                               const AffineTransform2D& c,
-                                               const AffineTransform2D& d,
-                                               const AffineTransform2D& e)
-  {
-    return AffineTransform2D(LinearAlgebra::Product(a.GetHomogeneousMatrix(),
-                                                    b.GetHomogeneousMatrix(),
-                                                    c.GetHomogeneousMatrix(),
-                                                    d.GetHomogeneousMatrix(),
-                                                    e.GetHomogeneousMatrix()));
-  }
-
-  AffineTransform2D AffineTransform2D::CreateOffset(double dx,
-                                                    double dy)
-  {
-    AffineTransform2D t;
-    t.matrix_(0, 2) = dx;
-    t.matrix_(1, 2) = dy;
-      
-    return t;
-  }
-  
-
-  AffineTransform2D AffineTransform2D::CreateScaling(double sx,
-                                                     double sy)
-  {
-    AffineTransform2D t;
-    t.matrix_(0, 0) = sx;
-    t.matrix_(1, 1) = sy;
-      
-    return t;
-  }
-  
-
-  AffineTransform2D AffineTransform2D::CreateRotation(double angle)
-  {
-    double cosine = cos(angle);
-    double sine = sin(angle);
-      
-    AffineTransform2D t;
-    t.matrix_(0, 0) = cosine;
-    t.matrix_(0, 1) = -sine;
-    t.matrix_(1, 0) = sine;
-    t.matrix_(1, 1) = cosine;
-
-    return t;
-  }
-
-  AffineTransform2D AffineTransform2D::CreateRotation(double angle, // CW rotation
-                                                      double cx,    // rotation center
-                                                      double cy)    // rotation center
-  {
-    return Combine(
-          CreateOffset(cx, cy),
-          CreateRotation(angle),
-          CreateOffset(-cx, -cy)
-          );
-  }
-
-  AffineTransform2D AffineTransform2D::CreateOpenGLClipspace(unsigned int canvasWidth,
-                                                             unsigned int canvasHeight)
-  {
-    AffineTransform2D t;
-    t.matrix_(0, 0) = 2.0 / static_cast<double>(canvasWidth);
-    t.matrix_(0, 2) = -1.0;
-    t.matrix_(1, 1) = -2.0 / static_cast<double>(canvasHeight);
-    t.matrix_(1, 2) = 1.0;
-    
-    return t;
-  }
-}
--- a/Framework/Toolbox/AffineTransform2D.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../StoneEnumerations.h"
-#include "LinearAlgebra.h"
-
-#include <Images/ImageAccessor.h>
-
-namespace OrthancStone
-{
-  class AffineTransform2D
-  {
-  private:
-    Matrix  matrix_;
-
-  public:
-    AffineTransform2D();
-
-    // The matrix must be 3x3, without perspective effects
-    AffineTransform2D(const Matrix& m);
-
-    AffineTransform2D(const AffineTransform2D& other) :
-      matrix_(other.matrix_)
-    {
-    }
-    
-    const Matrix& GetHomogeneousMatrix() const
-    {
-      return matrix_;
-    }
-
-    void Apply(double& x /* inout */,
-               double& y /* inout */) const;
-
-    void Apply(Orthanc::ImageAccessor& target,
-               const Orthanc::ImageAccessor& source,
-               ImageInterpolation interpolation,
-               bool clear) const;
-
-    void ConvertToOpenGLMatrix(float target[16],
-                               unsigned int canvasWidth,
-                               unsigned int canvasHeight) const;
-
-    double ComputeZoom() const;
-    
-    static AffineTransform2D Invert(const AffineTransform2D& a);
-
-    static AffineTransform2D Combine(const AffineTransform2D& a,
-                                     const AffineTransform2D& b);
-      
-    static AffineTransform2D Combine(const AffineTransform2D& a,
-                                     const AffineTransform2D& b,
-                                     const AffineTransform2D& c);
-      
-    static AffineTransform2D Combine(const AffineTransform2D& a,
-                                     const AffineTransform2D& b,
-                                     const AffineTransform2D& c,
-                                     const AffineTransform2D& d);
-
-    // transformations are applied right to left: 
-    // `e` is the first transformation applied and `a` is the last one
-    static AffineTransform2D Combine(const AffineTransform2D& a,
-                                     const AffineTransform2D& b,
-                                     const AffineTransform2D& c,
-                                     const AffineTransform2D& d,
-                                     const AffineTransform2D& e);
-
-    static AffineTransform2D CreateOffset(double dx,
-                                          double dy);
-
-    static AffineTransform2D CreateScaling(double sx,
-                                           double sy);
-
-    static AffineTransform2D CreateRotation(double angle); // CW rotation in radians
-
-    static AffineTransform2D CreateRotation(double angle, // CW rotation in radians
-                                            double cx,    // rotation center
-                                            double cy);   // rotation center
-
-    static AffineTransform2D CreateOpenGLClipspace(unsigned int canvasWidth,
-                                                   unsigned int canvasHeight);
-  };
-}
--- a/Framework/Toolbox/CoordinateSystem3D.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CoordinateSystem3D.h"
-
-#include "LinearAlgebra.h"
-#include "GeometryToolbox.h"
-
-#include <Logging.h>
-#include <Toolbox.h>
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  void CoordinateSystem3D::CheckAndComputeNormal()
-  {
-    // DICOM expects normal vectors to define the axes: "The row and
-    // column direction cosine vectors shall be normal, i.e., the dot
-    // product of each direction cosine vector with itself shall be
-    // unity."
-    // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.2.html
-    if (!LinearAlgebra::IsNear(boost::numeric::ublas::norm_2(axisX_), 1.0) ||
-        !LinearAlgebra::IsNear(boost::numeric::ublas::norm_2(axisY_), 1.0))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    // The vectors within "Image Orientation Patient" must be
-    // orthogonal, according to the DICOM specification: "The row and
-    // column direction cosine vectors shall be orthogonal, i.e.,
-    // their dot product shall be zero."
-    // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.2.html
-    if (!LinearAlgebra::IsCloseToZero(boost::numeric::ublas::inner_prod(axisX_, axisY_)))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    LinearAlgebra::CrossProduct(normal_, axisX_, axisY_);
-
-    d_ = -(normal_[0] * origin_[0] + normal_[1] * origin_[1] + normal_[2] * origin_[2]);
-
-    // Just a sanity check, it should be useless by construction
-    assert(LinearAlgebra::IsNear(boost::numeric::ublas::norm_2(normal_), 1.0));
-  }
-
-
-  void CoordinateSystem3D::SetupCanonical()
-  {
-    LinearAlgebra::AssignVector(origin_, 0, 0, 0);
-    LinearAlgebra::AssignVector(axisX_, 1, 0, 0);
-    LinearAlgebra::AssignVector(axisY_, 0, 1, 0);
-    CheckAndComputeNormal();
-  }
-
-
-  CoordinateSystem3D::CoordinateSystem3D(const Vector& origin,
-                                         const Vector& axisX,
-                                         const Vector& axisY) :
-    origin_(origin),
-    axisX_(axisX),
-    axisY_(axisY)
-  {
-    CheckAndComputeNormal();
-  }
-
-
-  void CoordinateSystem3D::Setup(const std::string& imagePositionPatient,
-                                 const std::string& imageOrientationPatient)
-  {
-    std::string tmpPosition = Orthanc::Toolbox::StripSpaces(imagePositionPatient);
-    std::string tmpOrientation = Orthanc::Toolbox::StripSpaces(imageOrientationPatient);
-
-    Vector orientation;
-    if (!LinearAlgebra::ParseVector(origin_, tmpPosition) ||
-        !LinearAlgebra::ParseVector(orientation, tmpOrientation) ||
-        origin_.size() != 3 ||
-        orientation.size() != 6)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    axisX_.resize(3);
-    axisX_[0] = orientation[0];
-    axisX_[1] = orientation[1];
-    axisX_[2] = orientation[2];
-
-    axisY_.resize(3);
-    axisY_[0] = orientation[3];
-    axisY_[1] = orientation[4];
-    axisY_[2] = orientation[5];
-
-    CheckAndComputeNormal();
-  }   
-
-
-  CoordinateSystem3D::CoordinateSystem3D(const IDicomDataset& dicom)
-  {
-    std::string a, b;
-
-    if (dicom.GetStringValue(a, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT) &&
-        dicom.GetStringValue(b, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT))
-    {
-      Setup(a, b);
-    }
-    else
-    {
-      SetupCanonical();
-    }
-  }
-
-
-  CoordinateSystem3D::CoordinateSystem3D(const Orthanc::DicomMap& dicom)
-  {
-    std::string a, b;
-
-    if (dicom.LookupStringValue(a, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, false) &&
-        dicom.LookupStringValue(b, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, false))
-    {
-      Setup(a, b);
-    }
-    else
-    {
-      SetupCanonical();
-    }    
-  }
-
-
-  void CoordinateSystem3D::SetOrigin(const Vector& origin)
-  {
-    if (origin.size() != 3)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      origin_ = origin;
-    }
-  }
-
-
-  Vector CoordinateSystem3D::MapSliceToWorldCoordinates(double x,
-                                                        double y) const
-  {
-    return origin_ + x * axisX_ + y * axisY_;
-  }
-
-
-  double CoordinateSystem3D::ProjectAlongNormal(const Vector& point) const
-  {
-    return boost::numeric::ublas::inner_prod(point, normal_);
-  }
-
-  void CoordinateSystem3D::ProjectPoint2(double& offsetX, double& offsetY, const Vector& point) const
-  {
-    // Project the point onto the slice
-    double projectionX,projectionY,projectionZ;
-    GeometryToolbox::ProjectPointOntoPlane2(projectionX, projectionY, projectionZ, point, normal_, origin_);
-
-    // As the axes are orthonormal vectors thanks to
-    // CheckAndComputeNormal(), the following dot products give the
-    // offset of the origin of the slice wrt. the origin of the
-    // reference plane https://en.wikipedia.org/wiki/Vector_projection
-    offsetX = axisX_[0] * (projectionX - origin_[0]) + axisX_[1] * (projectionY - origin_[1]) + axisX_[2] * (projectionZ - origin_[2]);
-    offsetY = axisY_[0] * (projectionX - origin_[0]) + axisY_[1] * (projectionY - origin_[1]) + axisY_[2] * (projectionZ - origin_[2]);
-  }
-
-  void CoordinateSystem3D::ProjectPoint(double& offsetX,
-                                        double& offsetY,
-                                        const Vector& point) const
-  {
-    // Project the point onto the slice
-    Vector projection;
-    GeometryToolbox::ProjectPointOntoPlane(projection, point, normal_, origin_);
-
-    // As the axes are orthonormal vectors thanks to
-    // CheckAndComputeNormal(), the following dot products give the
-    // offset of the origin of the slice wrt. the origin of the
-    // reference plane https://en.wikipedia.org/wiki/Vector_projection
-    offsetX = boost::numeric::ublas::inner_prod(axisX_, projection - origin_);
-    offsetY = boost::numeric::ublas::inner_prod(axisY_, projection - origin_);
-  }
-
-  bool CoordinateSystem3D::IntersectSegment(Vector& p,
-                                            const Vector& edgeFrom,
-                                            const Vector& edgeTo) const
-  {
-    return GeometryToolbox::IntersectPlaneAndSegment(p, normal_, d_, edgeFrom, edgeTo);
-  }
-
-
-  bool CoordinateSystem3D::IntersectLine(Vector& p,
-                                         const Vector& origin,
-                                         const Vector& direction) const
-  {
-    return GeometryToolbox::IntersectPlaneAndLine(p, normal_, d_, origin, direction);
-  }
-
-
-  bool CoordinateSystem3D::ComputeDistance(double& distance,
-                                           const CoordinateSystem3D& a,
-                                           const CoordinateSystem3D& b)
-  {
-    bool opposite = false;   // Ignored
-
-    if (OrthancStone::GeometryToolbox::IsParallelOrOpposite(
-          opposite, a.GetNormal(), b.GetNormal()))
-    {
-      distance = std::abs(a.ProjectAlongNormal(a.GetOrigin()) -
-                          a.ProjectAlongNormal(b.GetOrigin()));
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-  std::ostream& operator<< (std::ostream& s, const CoordinateSystem3D& that)
-  {
-    s << "origin: " << that.origin_ << " normal: " << that.normal_ 
-      << " axisX: " << that.axisX_ << " axisY: " << that.axisY_ 
-      << " D: " << that.d_;
-    return s;
-  }
-
-
-  CoordinateSystem3D CoordinateSystem3D::NormalizeCuttingPlane(const CoordinateSystem3D& plane)
-  {
-    double ox, oy;
-    plane.ProjectPoint(ox, oy, LinearAlgebra::CreateVector(0, 0, 0));
-
-    CoordinateSystem3D normalized(plane);
-    normalized.SetOrigin(plane.MapSliceToWorldCoordinates(ox, oy));
-    return normalized;
-  }
-}
--- a/Framework/Toolbox/CoordinateSystem3D.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Scene2D/ScenePoint2D.h"
-#include "LinearAlgebra.h"
-#include "OrthancDatasets/IDicomDataset.h"
-
-#include <iosfwd>
-
-namespace OrthancStone
-{
-  // Geometry of a 3D plane
-  class CoordinateSystem3D
-  {
-  private:
-    Vector    origin_;
-    Vector    normal_;
-    Vector    axisX_;
-    Vector    axisY_;
-    double    d_;
-
-    void CheckAndComputeNormal();
-
-    void Setup(const std::string& imagePositionPatient,
-               const std::string& imageOrientationPatient);
-
-    void SetupCanonical();
-
-    double GetOffset() const;
-
-  public:
-    CoordinateSystem3D()
-    {
-      SetupCanonical();
-    }
-
-    friend std::ostream& operator<< (std::ostream& s, const CoordinateSystem3D& that);
-
-    CoordinateSystem3D(const Vector& origin,
-                       const Vector& axisX,
-                       const Vector& axisY);
-
-    CoordinateSystem3D(const IDicomDataset& dicom);
-
-    CoordinateSystem3D(const std::string& imagePositionPatient,
-                       const std::string& imageOrientationPatient)
-    {
-      Setup(imagePositionPatient, imageOrientationPatient);
-    }
-
-    CoordinateSystem3D(const Orthanc::DicomMap& dicom);
-
-    const Vector& GetNormal() const
-    {
-      return normal_;
-    }
-
-    const Vector& GetOrigin() const  // This is the "Image Position Patient" tag
-    {
-      return origin_;
-    }
-
-    const Vector& GetAxisX() const
-    {
-      return axisX_;
-    }
-
-    const Vector& GetAxisY() const
-    {
-      return axisY_;
-    }
-
-    void SetOrigin(const Vector& origin);
-
-    Vector MapSliceToWorldCoordinates(double x,
-                                      double y) const;
-    
-    Vector MapSliceToWorldCoordinates(const ScenePoint2D& p) const
-    {
-      return MapSliceToWorldCoordinates(p.GetX(), p.GetY());
-    }
-    
-    double ProjectAlongNormal(const Vector& point) const;
-
-    void ProjectPoint(double& offsetX,
-                      double& offsetY,
-                      const Vector& point) const;
-
-    ScenePoint2D ProjectPoint(const Vector& point) const
-    {
-      double x, y;
-      ProjectPoint(x, y, point);
-      return ScenePoint2D(x, y);
-    }
-
-    /*
-    Alternated faster implementation (untested yet)
-    */
-    void ProjectPoint2(double& offsetX, 
-                       double& offsetY, 
-                       const Vector& point) const;
-
-    bool IntersectSegment(Vector& p,
-                          const Vector& edgeFrom,
-                          const Vector& edgeTo) const;
-
-    bool IntersectLine(Vector& p,
-                       const Vector& origin,
-                       const Vector& direction) const;
-
-    // Returns "false" is the two planes are not parallel
-    static bool ComputeDistance(double& distance,
-                                const CoordinateSystem3D& a,
-                                const CoordinateSystem3D& b);
-
-    // Normalize a cutting plane so that the origin (0,0,0) of the 3D
-    // world is mapped to the origin of its (x,y) coordinate system
-    static CoordinateSystem3D NormalizeCuttingPlane(const CoordinateSystem3D& plane);
-  };
-}
--- a/Framework/Toolbox/DicomInstanceParameters.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,530 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomInstanceParameters.h"
-
-#include "../Scene2D/ColorTextureSceneLayer.h"
-#include "../Scene2D/FloatTextureSceneLayer.h"
-#include "../Toolbox/GeometryToolbox.h"
-#include "../Toolbox/ImageToolbox.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <Logging.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-
-namespace OrthancStone
-{
-  void DicomInstanceParameters::Data::ComputeDoseOffsets(const Orthanc::DicomMap& dicom)
-  {
-    // http://dicom.nema.org/medical/Dicom/2016a/output/chtml/part03/sect_C.8.8.3.2.html
-
-    {
-      std::string increment;
-
-      if (dicom.LookupStringValue(increment, Orthanc::DICOM_TAG_FRAME_INCREMENT_POINTER, false))
-      {
-        Orthanc::Toolbox::ToUpperCase(increment);
-        if (increment != "3004,000C")  // This is the "Grid Frame Offset Vector" tag (DICOM_TAG_GRID_FRAME_OFFSET_VECTOR)
-        {
-          LOG(ERROR) << "RT-DOSE: Bad value for the \"FrameIncrementPointer\" tag";
-          return;
-        }
-      }
-    }
-
-    if (!LinearAlgebra::ParseVector(frameOffsets_, dicom, Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR) ||
-        frameOffsets_.size() < imageInformation_.GetNumberOfFrames())
-    {
-      LOG(ERROR) << "RT-DOSE: No information about the 3D location of some slice(s)";
-      frameOffsets_.clear();
-    }
-    else
-    {
-      if (frameOffsets_.size() >= 2)
-      {
-        thickness_ = std::abs(frameOffsets_[1] - frameOffsets_[0]);
-      }
-    }
-  }
-
-
-  DicomInstanceParameters::Data::Data(const Orthanc::DicomMap& dicom) :
-    imageInformation_(dicom)
-  {
-    if (imageInformation_.GetNumberOfFrames() <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    if (!dicom.LookupStringValue(studyInstanceUid_, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) ||
-        !dicom.LookupStringValue(seriesInstanceUid_, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false) ||
-        !dicom.LookupStringValue(sopInstanceUid_, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-        
-    std::string s;
-    if (!dicom.LookupStringValue(s, Orthanc::DICOM_TAG_SOP_CLASS_UID, false))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    else
-    {
-      sopClassUid_ = StringToSopClassUid(s);
-    }
-
-    if (!dicom.ParseDouble(thickness_, Orthanc::DICOM_TAG_SLICE_THICKNESS))
-    {
-      thickness_ = 100.0 * std::numeric_limits<double>::epsilon();
-    }
-
-    GeometryToolbox::GetPixelSpacing(pixelSpacingX_, pixelSpacingY_, dicom);
-
-    std::string position, orientation;
-    if (dicom.LookupStringValue(position, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, false) &&
-        dicom.LookupStringValue(orientation, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, false))
-    {
-      geometry_ = CoordinateSystem3D(position, orientation);
-    }
-
-    if (sopClassUid_ == SopClassUid_RTDose)
-    {
-      ComputeDoseOffsets(dicom);
-
-      static const Orthanc::DicomTag DICOM_TAG_DOSE_UNITS(0x3004, 0x0002);
-
-      if (!dicom.LookupStringValue(doseUnits_, DICOM_TAG_DOSE_UNITS, false))
-      {
-        LOG(ERROR) << "Tag DoseUnits (0x3004, 0x0002) is missing in " << sopInstanceUid_;
-        doseUnits_ = "";
-      }
-    }
-
-    isColor_ = (imageInformation_.GetPhotometricInterpretation() != Orthanc::PhotometricInterpretation_Monochrome1 &&
-                imageInformation_.GetPhotometricInterpretation() != Orthanc::PhotometricInterpretation_Monochrome2);
-
-    if (dicom.ParseDouble(rescaleIntercept_, Orthanc::DICOM_TAG_RESCALE_INTERCEPT) &&
-        dicom.ParseDouble(rescaleSlope_, Orthanc::DICOM_TAG_RESCALE_SLOPE))
-    {
-      if (sopClassUid_ == SopClassUid_RTDose)
-      {
-        LOG(INFO) << "DOSE HAS Rescale*: rescaleIntercept_ = " << rescaleIntercept_ << " rescaleSlope_ = " << rescaleSlope_;
-        // WE SHOULD NOT TAKE THE RESCALE VALUE INTO ACCOUNT IN THE CASE OF DOSES
-        hasRescale_ = false;
-      }
-      else
-      {
-        hasRescale_ = true;
-      }
-      
-    }
-    else
-    {
-      hasRescale_ = false;
-    }
-
-    if (dicom.ParseDouble(doseGridScaling_, Orthanc::DICOM_TAG_DOSE_GRID_SCALING))
-    {
-      if (sopClassUid_ == SopClassUid_RTDose)
-      {
-        LOG(INFO) << "DOSE HAS DoseGridScaling: doseGridScaling_ = " << doseGridScaling_;
-      }
-    }
-    else
-    {
-      doseGridScaling_ = 1.0;
-      if (sopClassUid_ == SopClassUid_RTDose)
-      {
-        LOG(ERROR) << "Tag DoseGridScaling (0x3004, 0x000e) is missing in " << sopInstanceUid_ << " doseGridScaling_ will be set to 1.0";
-      }
-    }
-
-    Vector c, w;
-    if (LinearAlgebra::ParseVector(c, dicom, Orthanc::DICOM_TAG_WINDOW_CENTER) &&
-        LinearAlgebra::ParseVector(w, dicom, Orthanc::DICOM_TAG_WINDOW_WIDTH) &&
-        c.size() > 0 && 
-        w.size() > 0)
-    {
-      hasDefaultWindowing_ = true;
-      defaultWindowingCenter_ = static_cast<float>(c[0]);
-      defaultWindowingWidth_ = static_cast<float>(w[0]);
-    }
-    else
-    {
-      hasDefaultWindowing_ = false;
-      defaultWindowingCenter_ = 0;
-      defaultWindowingWidth_  = 0;
-    }
-
-    if (sopClassUid_ == SopClassUid_RTDose)
-    {
-      switch (imageInformation_.GetBitsStored())
-      {
-        case 16:
-          expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale16;
-          break;
-
-        case 32:
-          expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale32;
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      } 
-    }
-    else if (isColor_)
-    {
-      expectedPixelFormat_ = Orthanc::PixelFormat_RGB24;
-    }
-    else if (imageInformation_.IsSigned())
-    {
-      expectedPixelFormat_ = Orthanc::PixelFormat_SignedGrayscale16;
-    }
-    else
-    {
-      expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale16;
-    }
-
-    // This computes the "IndexInSeries" metadata from Orthanc (check
-    // out "Orthanc::ServerIndex::Store()")
-    hasIndexInSeries_ = (
-      dicom.ParseUnsignedInteger32(indexInSeries_, Orthanc::DICOM_TAG_INSTANCE_NUMBER) ||
-      dicom.ParseUnsignedInteger32(indexInSeries_, Orthanc::DICOM_TAG_IMAGE_INDEX));
-  }
-
-
-  CoordinateSystem3D  DicomInstanceParameters::Data::GetFrameGeometry(unsigned int frame) const
-  {
-    if (frame == 0)
-    {
-      return geometry_;
-    }
-    else if (frame >= imageInformation_.GetNumberOfFrames())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else if (sopClassUid_ == SopClassUid_RTDose)
-    {
-      if (frame >= frameOffsets_.size())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      return CoordinateSystem3D(
-        geometry_.GetOrigin() + frameOffsets_[frame] * geometry_.GetNormal(),
-        geometry_.GetAxisX(),
-        geometry_.GetAxisY());
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-
-
-  bool DicomInstanceParameters::Data::IsPlaneWithinSlice(unsigned int frame,
-                                                         const CoordinateSystem3D& plane) const
-  {
-    if (frame >= imageInformation_.GetNumberOfFrames())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    CoordinateSystem3D tmp = geometry_;
-
-    if (frame != 0)
-    {
-      tmp = GetFrameGeometry(frame);
-    }
-
-    double distance;
-
-    return (CoordinateSystem3D::ComputeDistance(distance, tmp, plane) &&
-            distance <= thickness_ / 2.0);
-  }
-
-  void DicomInstanceParameters::Data::ApplyRescaleAndDoseScaling(Orthanc::ImageAccessor& image,
-                                                                 bool useDouble) const
-  {
-    if (image.GetFormat() != Orthanc::PixelFormat_Float32)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    double factor = doseGridScaling_;
-    double offset = 0.0;
-
-    if (hasRescale_)
-    {
-      factor *= rescaleSlope_;
-      offset = rescaleIntercept_;
-    }
-
-    if ( (factor != 1.0) || (offset != 0.0) )
-    {
-      const unsigned int width = image.GetWidth();
-      const unsigned int height = image.GetHeight();
-        
-      for (unsigned int y = 0; y < height; y++)
-      {
-        float* p = reinterpret_cast<float*>(image.GetRow(y));
-
-        if (useDouble)
-        {
-          // Slower, accurate implementation using double
-          for (unsigned int x = 0; x < width; x++, p++)
-          {
-            double value = static_cast<double>(*p);
-            *p = static_cast<float>(value * factor + offset);
-          }
-        }
-        else
-        {
-          // Fast, approximate implementation using float
-          for (unsigned int x = 0; x < width; x++, p++)
-          {
-            *p = (*p) * static_cast<float>(factor) + static_cast<float>(offset);
-          }
-        }
-      }
-    }
-  }
-
-  double DicomInstanceParameters::GetRescaleIntercept() const
-  {
-    if (data_.hasRescale_)
-    {
-      return data_.rescaleIntercept_;
-    }
-    else
-    {
-      LOG(ERROR) << "DicomInstanceParameters::GetRescaleIntercept(): !data_.hasRescale_";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  double DicomInstanceParameters::GetRescaleSlope() const
-  {
-    if (data_.hasRescale_)
-    {
-      return data_.rescaleSlope_;
-    }
-    else
-    {
-      LOG(ERROR) << "DicomInstanceParameters::GetRescaleSlope(): !data_.hasRescale_";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  float DicomInstanceParameters::GetDefaultWindowingCenter() const
-  {
-    if (data_.hasDefaultWindowing_)
-    {
-      return data_.defaultWindowingCenter_;
-    }
-    else
-    {
-      LOG(ERROR) << "DicomInstanceParameters::GetDefaultWindowingCenter(): no default windowing";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  float DicomInstanceParameters::GetDefaultWindowingWidth() const
-  {
-    if (data_.hasDefaultWindowing_)
-    {
-      return data_.defaultWindowingWidth_;
-    }
-    else
-    {
-      LOG(ERROR) << "DicomInstanceParameters::GetDefaultWindowingWidth(): no default windowing";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  Orthanc::ImageAccessor* DicomInstanceParameters::ConvertToFloat(const Orthanc::ImageAccessor& pixelData) const
-  {
-    std::unique_ptr<Orthanc::Image> converted(new Orthanc::Image(Orthanc::PixelFormat_Float32, 
-                                                               pixelData.GetWidth(), 
-                                                               pixelData.GetHeight(),
-                                                               false));
-    Orthanc::ImageProcessing::Convert(*converted, pixelData);
-
-                                                   
-    // Correct rescale slope/intercept if need be
-    //data_.ApplyRescaleAndDoseScaling(*converted, (pixelData.GetFormat() == Orthanc::PixelFormat_Grayscale32));
-    data_.ApplyRescaleAndDoseScaling(*converted, false);
-
-    return converted.release();
-  }
-
-
-  TextureBaseSceneLayer* DicomInstanceParameters::CreateTexture
-  (const Orthanc::ImageAccessor& pixelData) const
-  {
-    // {
-    //   const Orthanc::ImageAccessor& source = pixelData;
-    //   const void* sourceBuffer = source.GetConstBuffer();
-    //   intptr_t sourceBufferInt = reinterpret_cast<intptr_t>(sourceBuffer);
-    //   int sourceWidth = source.GetWidth();
-    //   int sourceHeight = source.GetHeight();
-    //   int sourcePitch = source.GetPitch();
-
-    //   // TODO: turn error into trace below
-    //   LOG(ERROR) << "ConvertGrayscaleToFloat | source:"
-    //     << " W = " << sourceWidth << " H = " << sourceHeight
-    //     << " P = " << sourcePitch << " B = " << sourceBufferInt
-    //     << " B % 4 == " << sourceBufferInt % 4;
-    // }
-
-    assert(sizeof(float) == 4);
-
-    Orthanc::PixelFormat sourceFormat = pixelData.GetFormat();
-
-    if (sourceFormat != GetExpectedPixelFormat())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    if (sourceFormat == Orthanc::PixelFormat_RGB24)
-    {
-      // This is the case of a color image. No conversion has to be done.
-      return new ColorTextureSceneLayer(pixelData);
-    }
-    else
-    {
-      // This is the case of a grayscale frame. Convert it to Float32.
-      std::unique_ptr<FloatTextureSceneLayer> texture;
-
-      if (pixelData.GetFormat() == Orthanc::PixelFormat_Float32)
-      {
-        texture.reset(new FloatTextureSceneLayer(pixelData));
-      }
-      else
-      {
-        std::unique_ptr<Orthanc::ImageAccessor> converted(ConvertToFloat(pixelData));
-        texture.reset(new FloatTextureSceneLayer(*converted));
-      }
-
-      if (data_.hasDefaultWindowing_)
-      {
-        texture->SetCustomWindowing(data_.defaultWindowingCenter_,
-                                    data_.defaultWindowingWidth_);
-      }
-      
-
-      if (data_.imageInformation_.GetPhotometricInterpretation()
-        == Orthanc::PhotometricInterpretation_Monochrome1)
-      {
-        texture->SetInverted(true);
-      }
-      else if (data_.imageInformation_.GetPhotometricInterpretation()
-        == Orthanc::PhotometricInterpretation_Monochrome2)
-      {
-        texture->SetInverted(false);
-      }
-
-      return texture.release();
-    }
-  }
-
-
-  LookupTableTextureSceneLayer* DicomInstanceParameters::CreateLookupTableTexture
-  (const Orthanc::ImageAccessor& pixelData) const
-  {
-    std::unique_ptr<FloatTextureSceneLayer> texture;
-
-    if (pixelData.GetFormat() == Orthanc::PixelFormat_Float32)
-    {
-      return new LookupTableTextureSceneLayer(pixelData);
-    }
-    else
-    {
-      std::unique_ptr<Orthanc::ImageAccessor> converted(ConvertToFloat(pixelData));
-      return new LookupTableTextureSceneLayer(*converted);
-    }
-  }
-
-  
-  unsigned int DicomInstanceParameters::GetIndexInSeries() const
-  {
-    if (data_.hasIndexInSeries_)
-    {
-      return data_.indexInSeries_;
-    }
-    else
-    {
-      LOG(ERROR) << "DicomInstanceParameters::GetIndexInSeries(): !data_.hasIndexInSeries_";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  double DicomInstanceParameters::Data::ApplyRescale(double value) const
-  {
-    double factor = doseGridScaling_;
-    double offset = 0.0;
-
-    if (hasRescale_)
-    {
-      factor *= rescaleSlope_;
-      offset = rescaleIntercept_;
-    }
-
-    return (value * factor + offset);
-  }
-
-
-  bool DicomInstanceParameters::Data::ComputeRegularSpacing(double& spacing) const
-  {
-    if (frameOffsets_.size() == 0)  // Not a RT-DOSE
-    {
-      return false;
-    }
-    else if (frameOffsets_.size() == 1)
-    {
-      spacing = 1;   // Edge case: RT-DOSE with one single frame
-      return true;
-    }
-    else
-    {
-      spacing = std::abs(frameOffsets_[1] - frameOffsets_[0]);
-
-      for (size_t i = 1; i + 1 < frameOffsets_.size(); i++)
-      {
-        double s = frameOffsets_[i + 1] - frameOffsets_[i];
-        if (!LinearAlgebra::IsNear(spacing, s, 0.001))
-        {
-          return false;
-        }
-      }
-      
-      return true;
-    }
-  }
-}
--- a/Framework/Toolbox/DicomInstanceParameters.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../StoneEnumerations.h"
-#include "../Scene2D/LookupTableTextureSceneLayer.h"
-#include "../Toolbox/CoordinateSystem3D.h"
-
-#include <IDynamicObject.h>
-#include <DicomFormat/DicomImageInformation.h>
-
-namespace OrthancStone
-{
-  class DicomInstanceParameters :
-    public Orthanc::IDynamicObject  /* to be used as a payload to SlicesSorter */
-  {
-    // This class supersedes the deprecated "DicomFrameConverter"
-
-  private:
-    struct Data   // Struct to ease the copy constructor
-    {
-      std::string                       orthancInstanceId_;
-      std::string                       studyInstanceUid_;
-      std::string                       seriesInstanceUid_;
-      std::string                       sopInstanceUid_;
-      Orthanc::DicomImageInformation    imageInformation_;
-      SopClassUid                       sopClassUid_;
-      double                            thickness_;
-      double                            pixelSpacingX_;
-      double                            pixelSpacingY_;
-      CoordinateSystem3D                geometry_;
-      Vector                            frameOffsets_;
-      bool                              isColor_;
-      bool                              hasRescale_;
-      double                            rescaleIntercept_;
-      double                            rescaleSlope_;
-      bool                              hasDefaultWindowing_;
-      float                             defaultWindowingCenter_;
-      float                             defaultWindowingWidth_;
-      Orthanc::PixelFormat              expectedPixelFormat_;
-      bool                              hasIndexInSeries_;
-      unsigned int                      indexInSeries_;
-      std::string                       doseUnits_;
-      double                            doseGridScaling_;
-
-      void ComputeDoseOffsets(const Orthanc::DicomMap& dicom);
-
-      Data(const Orthanc::DicomMap& dicom);
-
-      CoordinateSystem3D  GetFrameGeometry(unsigned int frame) const;
-
-      bool IsPlaneWithinSlice(unsigned int frame,
-                              const CoordinateSystem3D& plane) const;
-      
-      void ApplyRescaleAndDoseScaling(Orthanc::ImageAccessor& image,
-                                      bool useDouble) const;
-
-      double ApplyRescale(double value) const;
-
-      bool ComputeRegularSpacing(double& target) const;
-    };
-
-    
-    Data  data_;
-
-
-  public:
-    DicomInstanceParameters(const DicomInstanceParameters& other) :
-    data_(other.data_)
-    {
-    }
-
-    DicomInstanceParameters(const Orthanc::DicomMap& dicom) :
-      data_(dicom)
-    {
-    }
-
-    DicomInstanceParameters* Clone() const
-    {
-      return new DicomInstanceParameters(*this);
-    }
-
-    void SetOrthancInstanceIdentifier(const std::string& id)
-    {
-      data_.orthancInstanceId_ = id;
-    }
-
-    const std::string& GetOrthancInstanceIdentifier() const
-    {
-      return data_.orthancInstanceId_;
-    }
-
-    const Orthanc::DicomImageInformation& GetImageInformation() const
-    {
-      return data_.imageInformation_;
-    }
-
-    const std::string& GetStudyInstanceUid() const
-    {
-      return data_.studyInstanceUid_;
-    }
-
-    const std::string& GetSeriesInstanceUid() const
-    {
-      return data_.seriesInstanceUid_;
-    }
-
-    const std::string& GetSopInstanceUid() const
-    {
-      return data_.sopInstanceUid_;
-    }
-
-    SopClassUid GetSopClassUid() const
-    {
-      return data_.sopClassUid_;
-    }
-
-    double GetThickness() const
-    {
-      return data_.thickness_;
-    }
-
-    double GetPixelSpacingX() const
-    {
-      return data_.pixelSpacingX_;
-    }
-
-    double GetPixelSpacingY() const
-    {
-      return data_.pixelSpacingY_;
-    }
-
-    const CoordinateSystem3D&  GetGeometry() const
-    {
-      return data_.geometry_;
-    }
-
-    CoordinateSystem3D  GetFrameGeometry(unsigned int frame) const
-    {
-      return data_.GetFrameGeometry(frame);
-    }
-
-    bool IsPlaneWithinSlice(unsigned int frame,
-                            const CoordinateSystem3D& plane) const
-    {
-      return data_.IsPlaneWithinSlice(frame, plane);
-    }
-
-    bool IsColor() const
-    {
-      return data_.isColor_;
-    }
-
-    bool HasRescale() const
-    {
-      return data_.hasRescale_;
-    }
-
-    double GetRescaleIntercept() const;
-
-    double GetRescaleSlope() const;
-
-    bool HasDefaultWindowing() const
-    {
-      return data_.hasDefaultWindowing_;
-    }
-
-    float GetDefaultWindowingCenter() const;
-
-    float GetDefaultWindowingWidth() const;
-
-    Orthanc::PixelFormat GetExpectedPixelFormat() const
-    {
-      return data_.expectedPixelFormat_;
-    }
-
-    Orthanc::ImageAccessor* ConvertToFloat(const Orthanc::ImageAccessor& pixelData) const;
-    
-    TextureBaseSceneLayer* CreateTexture(const Orthanc::ImageAccessor& pixelData) const;
-
-    LookupTableTextureSceneLayer* CreateLookupTableTexture(const Orthanc::ImageAccessor& pixelData) const;
-
-    bool HasIndexInSeries() const
-    {
-      return data_.hasIndexInSeries_;
-    }
-
-    unsigned int GetIndexInSeries() const;
-
-    const std::string& GetDoseUnits() const
-    {
-      return data_.doseUnits_;
-    }
-
-    void SetDoseGridScaling(double value)
-    {
-      data_.doseGridScaling_ = value;
-    }
-
-    double GetDoseGridScaling() const
-    {
-      return data_.doseGridScaling_;
-    }
-
-    double ApplyRescale(double value) const
-    {
-      return data_.ApplyRescale(value);
-    }
-
-    // Required for RT-DOSE
-    bool ComputeRegularSpacing(double& target) const
-    {
-      return data_.ComputeRegularSpacing(target);
-    }
-  };
-}
--- a/Framework/Toolbox/DicomStructure2.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,293 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#include "DicomStructure2.h"
-
-#include "../Toolbox/GeometryToolbox.h"
-#include "../Toolbox/DisjointDataSet.h"
-
-namespace OrthancStone
-{
-  // see header
-  //void DicomStructure2::ComputeNormal()
-  //{
-  //  try
-  //  {
-  //    if (polygons_.size() > 0)
-  //    {
-
-  //      // TODO: check all polygons are OK
-  //      const DicomStructurePolygon2 polygon = polygons_[0];
-  //      $$$$$$$$$$$$$$$$$
-  //        state_ = NormalComputed;
-  //    }
-  //    else
-  //    {
-  //      // bogus! no polygons. Let's assign a "nothing here" value
-  //      LinearAlgebra::AssignVector(normal_, 0, 0, 0);
-  //      state_ = Invalid;
-  //    }
-  //  }
-  //  catch (const Orthanc::OrthancException& e)
-  //  {
-  //    state_ = Invalid;
-  //    if (e.HasDetails())
-  //    {
-  //      LOG(ERROR) << "OrthancException in ComputeNormal: " << e.What() << " Details: " << e.GetDetails();
-  //    }
-  //    else
-  //    {
-  //      LOG(ERROR) << "OrthancException in ComputeNormal: " << e.What();
-  //    }
-  //    throw;
-  //  }
-  //  catch (const std::exception& e)
-  //  {
-  //    state_ = Invalid;
-  //    LOG(ERROR) << "std::exception in ComputeNormal: " << e.what();
-  //    throw;
-  //  }
-  //  catch (...)
-  //  {
-  //    state_ = Invalid;
-  //    LOG(ERROR) << "Unknown exception in ComputeNormal";
-  //    throw;
-  //  }
-  //}
-
-  void DicomStructure2::ComputeSliceThickness()
-  {
-    if (state_ != NormalComputed)
-    {
-      LOG(ERROR) << "DicomStructure2::ComputeSliceThickness - state must be NormalComputed";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    if (polygons_.size() < 2)
-    {
-      // cannot compute thickness if there are not at least 2 slabs (structures)
-      sliceThickness_ = 1.0;
-      state_ = Invalid;
-    }
-    else
-    {
-      // normal can be (1,0,0), (0,1,0) or (0,0,1), nothing else.
-      // these can be compared with == (exact double representation)
-      if (normal_[0] == 1)
-      {
-        // in a single polygon, all the points have the same X
-        sliceThickness_ = fabs(polygons_[0].GetPoint(0)[0] - polygons_[1].GetPoint(0)[0]);
-      }
-      else if (normal_[1] == 1)
-      {
-        // in a single polygon, all the points have the same X
-        sliceThickness_ = fabs(polygons_[0].GetPoint(0)[1] - polygons_[1].GetPoint(0)[1]);
-      }
-      else if (normal_[2] == 1)
-      {
-        // in a single polygon, all the points have the same X
-        sliceThickness_ = fabs(polygons_[0].GetPoint(0)[2] - polygons_[1].GetPoint(0)[2]);
-      }
-      else
-      {
-        ORTHANC_ASSERT(false);
-        state_ = Invalid;
-      }
-    }
-    state_ = Valid;
-  }
-
-  void DicomStructure2::AddPolygon(const DicomStructurePolygon2& polygon)
-  {
-    if (state_ != Building)
-    {
-      LOG(ERROR) << "DicomStructure2::AddPolygon - can only add polygon while building";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    polygons_.push_back(polygon);
-  }
-
-  void DicomStructure2::ComputeDependentProperties()
-  {
-    if (state_ != Building)
-    {
-      LOG(ERROR) << "DicomStructure2::ComputeDependentProperties - can only be called once";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    for (size_t i = 0; i < polygons_.size(); ++i)
-    {
-      // "compute" the polygon normal
-      polygons_[i].ComputeDependentProperties();
-    }
-    if (polygons_.size() > 0)
-    {
-      normal_ = polygons_[0].GetNormal();
-      state_ = NormalComputed;
-    }
-    else
-    {
-      LinearAlgebra::AssignVector(normal_, 0, 0, 0);
-      state_ = Invalid; // THIS MAY HAPPEN !!! (for instance for instance 72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661 :) )
-    }
-    if (polygons_.size() >= 2)
-      ComputeSliceThickness(); // this will change state_ from NormalComputed to Valid
-  }
-
-  OrthancStone::Vector DicomStructure2::GetNormal() const
-  {
-    if (state_ != Valid && state_ != Invalid)
-    {
-      LOG(ERROR) << "DicomStructure2::GetNormal() -- please call ComputeDependentProperties first.";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    if (state_ == Invalid)
-    {
-      LOG(ERROR) << "DicomStructure2::GetNormal() -- The Dicom structure is invalid. The normal is set to 0,0,0";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    return normal_;
-  }
-
-  const DicomStructurePolygon2* DicomStructure2::GetPolygonClosestToSlice(
-    const CoordinateSystem3D& plane) const
-  {
-    ORTHANC_ASSERT(state_ == Valid);
-
-    // we assume 0,0,1 for now
-    ORTHANC_ASSERT(LinearAlgebra::IsNear(plane.GetNormal()[0], 0.0));
-    ORTHANC_ASSERT(LinearAlgebra::IsNear(plane.GetNormal()[1], 0.0));
-
-    for (size_t i = 0; i < polygons_.size(); ++i)
-    {
-      const DicomStructurePolygon2& polygon = polygons_[i];
-
-      // "height" of cutting plane
-      double cutZ = plane.GetOrigin()[2];
-
-      if (LinearAlgebra::IsNear(
-        cutZ, polygon.GetZ(),
-        sliceThickness_ / 2.0 /* in mm */))
-        return &polygon;
-    }
-    return NULL;
-  }
-
-
-    bool DicomStructure2::Project(std::vector< std::pair<Point2D, Point2D> > & segments, const CoordinateSystem3D & plane) const
-    {
-      segments.clear();
-
-      Vector normal = GetNormal();
-
-      size_t totalRectCount = 0;
-
-      // dummy var
-      bool isOpposite = false;
-
-      // This is an axial projection
-      if (GeometryToolbox::IsParallelOrOpposite(isOpposite, normal, plane.GetNormal()))
-      {
-        const DicomStructurePolygon2* polygon = GetPolygonClosestToSlice(plane);
-        if (polygon)
-        {
-          polygon->ProjectOnParallelPlane(segments, plane);
-        }
-      }
-      else
-      {
-        // let's compute the dot product of the plane normal and the polygons
-        // normal.
-        double dot = LinearAlgebra::DotProduct(plane.GetNormal(), normal);
-
-        if (LinearAlgebra::IsNear(dot, 0))
-        {
-          // Coronal or sagittal projection
-
-          // vector of vector of rectangles that will be merged in a single big contour:
-
-          // each polygon slab cut by a perpendicular plane yields 0..* rectangles
-          std::vector< RtStructRectanglesInSlab > rectanglesForEachSlab;
-
-          for (size_t i = 0; i < polygons_.size(); ++i)
-          {
-            // book an entry for this slab
-            rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
-
-            // let's compute the intersection between the polygon and the plane
-            // intersections are in plane coords
-            std::vector<Point2D> intersections;
-
-            polygons_[i].ProjectOnConstantPlane(intersections, plane);
-
-            // for each pair of intersections, we add a rectangle.
-            if ((intersections.size() % 2) != 0)
-            {
-              LOG(WARNING) << "Odd number of intersections between structure "
-                << name_ << ", polygon # " << i
-                << " and plane where X axis is parallel to polygon normal vector";
-            }
-
-            size_t numRects = intersections.size() / 2;
-            
-            // we keep count of the total number of rects for vector pre-allocations
-            totalRectCount += numRects;
-            
-            for (size_t iRect = 0; iRect < numRects; ++iRect)
-            {
-              RtStructRectangleInSlab rectangle;
-              ORTHANC_ASSERT(LinearAlgebra::IsNear(intersections[2 * iRect].y, intersections[2 * iRect + 1].y));
-              ORTHANC_ASSERT((2 * iRect + 1) < intersections.size());
-              double x1 = intersections[2 * iRect].x;
-              double x2 = intersections[2 * iRect + 1].x;
-              double y1 = intersections[2 * iRect].y - sliceThickness_ * 0.5;
-              double y2 = intersections[2 * iRect].y + sliceThickness_ * 0.5;
-
-              rectangle.xmin = std::min(x1, x2);
-              rectangle.xmax = std::max(x1, x2);
-              rectangle.ymin = std::min(y1, y2);
-              rectangle.ymax = std::max(y1, y2);
-
-              // TODO: keep them sorted!!!!
-
-              rectanglesForEachSlab.back().push_back(rectangle);
-            }
-          }
-          // now we need to merge all the slabs into a set of polygons (1 or more)
-          ConvertListOfSlabsToSegments(segments, rectanglesForEachSlab, totalRectCount);
-        }
-        else
-        {
-          // plane is not perpendicular to the polygons
-          // 180.0 / [Math]::Pi = 57.2957795130823
-          double acDot = 57.2957795130823 * acos(dot);
-          LOG(ERROR) << "DicomStructure2::Project -- cutting plane must be "
-            << "perpendicular to the structures, but dot product is: "
-            << dot << " and (180/pi)*acos(dot) = " << acDot;
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-      }
-      return segments.size() != 0;
-    }
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
--- a/Framework/Toolbox/DicomStructure2.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#include "DicomStructurePolygon2.h"
-#include "DicomStructureSetUtils.h"
-
-namespace OrthancStone
-{
-
-  /*
-    A structure has a color, a name, a set of slices..
-
-    Each slice is a polygon.
-  */
-  struct DicomStructure2
-  {
-    DicomStructure2() :
-      red_(0), green_(0), blue_(0), sliceThickness_(0), state_(Building) {}
-
-    void AddPolygon(const DicomStructurePolygon2& polygon);
-
-    /**
-    Once all polygons have been added, this method will determine:
-    - the slice orientation (through the normal vector)
-    - the spacing between slices (slice thickness)
-
-    it will also set up the info required to efficiently compute plane
-    intersections later on.
-    */
-    void ComputeDependentProperties();
-
-    /**
-    Being given a plane that is PARALLEL to the set of polygon structures, this 
-    returns a pointer to the polygon located at that position (if it is closer
-    than thickness/2) or NULL if there is none.
-
-    TODO: use sorted vector to improve
-
-    DO NOT STORE THE RETURNED POINTER!
-    */
-    const DicomStructurePolygon2* GetPolygonClosestToSlice(const CoordinateSystem3D& plane) const;
-
-    Vector GetNormal() const;
-
-    Color GetColor() const
-    {
-      return Color(red_, green_, blue_);
-    }
-
-    bool IsValid() const
-    {
-      return state_ == Valid;
-    }
-
-    /**
-    This method is used to project the 3D structure on a 2D plane.
-
-    A structure is a stack of polygons, representing a volume.
-
-    We need to compute the intersection between this volume and the supplied 
-    cutting plane (the "slice"). This is more than a cutting plane: it is also
-    a 2D-coordinate system (the plane has axes vectors)
-
-    The cutting plane is always parallel to the plane defined by two of the
-    world coordinate system axes.
-    
-    The result is a set of closed polygons.
-
-    If the cut is parallel to the polygons, we pick the polygon closest to 
-    the slice, project it on the slice and return it in slice coordinates.
-
-    If the cut is perpendicular to the polygons, for each polygon, we compute 
-    the intersection between the cutting plane and the polygon slab (imaginary 
-    volume created by extruding the polygon above and below its plane by 
-    thickness/2) :
-    - each slab, intersected by the plane, gives a set of 0..* rectangles \
-      (only one if the polygon is convex)
-    - when doing this for the whole stack of slabs, we get a set of rectangles:
-      To compute these rectangles, for each polygon, we compute the intersection
-      between :
-       - the line defined by the intersection of the polygon plane and the cutting
-         plane
-       - the polygon itself
-      This yields 0 or 2*K points along the line C. These are turned into K
-      rectangles by taking two consecutive points along the line and extruding 
-      this segment by sliceThickness/2 in the orientation of the polygon normal,
-      in both directions.
-
-    Then, once this list of rectangles is computed, we need to group the 
-    connected rectangles together. Connected, here, means sharing at least part
-    of an edge --> union/find data structures and algorithm.
-    */
-    bool Project(std::vector< std::pair<Point2D, Point2D> >& polygons, const CoordinateSystem3D& plane) const;
-
-    std::string                         interpretation_;
-    std::string                         name_;
-    uint8_t                             red_;
-    uint8_t                             green_;
-    uint8_t                             blue_;
-  
-    /** Internal */
-    const std::vector<DicomStructurePolygon2>& GetPolygons() const
-    {
-      return polygons_;
-    }
-
-    /** Internal */
-    double GetSliceThickness() const
-    {
-      return sliceThickness_;
-    }
-
-  private:
-    enum State
-    {
-      Building,
-      NormalComputed,
-      Valid, // When normal components AND slice thickness are computed
-      Invalid
-    };
-
-    void ComputeNormal();
-    void ComputeSliceThickness();
-
-    std::vector<DicomStructurePolygon2> polygons_;
-    Vector3D                            normal_;
-    double                              sliceThickness_;
-
-    /*
-      After creation (and while polygons are added), state is Building.
-      After ComputeDependentProperties() is called, state can either be
-      Valid or Invalid. In any case, the object becomes immutable.
-    */
-    State state_;
-  };
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
--- a/Framework/Toolbox/DicomStructurePolygon2.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,305 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#include "DicomStructurePolygon2.h"
-
-#include "../Toolbox/LinearAlgebra.h"
-
-namespace OrthancStone
-{
-  void DicomStructurePolygon2::ComputeDependentProperties()
-  {
-    ORTHANC_ASSERT(state_ == Building);
-
-    for (size_t j = 0; j < points_.size(); ++j)
-    {
-      // TODO: move to AddPoint!
-      const Point3D& p = points_[j];
-      if (p[0] < minX_)
-        minX_ = p[0];
-      if (p[0] > maxX_)
-        maxX_ = p[0];
-
-      if (p[1] < minY_)
-        minY_ = p[1];
-      if (p[1] > maxY_)
-        maxY_ = p[1];
-
-      if (p[2] < minZ_)
-        minZ_ = p[2];
-      if (p[2] > maxZ_)
-        maxZ_ = p[2];
-    }
-
-    if (LinearAlgebra::IsNear(minX_, maxX_))
-    {
-      LinearAlgebra::AssignVector(normal_, 1, 0, 0);
-      //ORTHANC_ASSERT(!LinearAlgebra::IsNear(minX, maxX));
-      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minY_, maxY_));
-      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minZ_, maxZ_));
-    }
-    else if (LinearAlgebra::IsNear(minY_, maxY_))
-    {
-      LinearAlgebra::AssignVector(normal_, 0, 1, 0);
-      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minX_, maxX_));
-      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minZ_, maxZ_));
-    }
-    else if (LinearAlgebra::IsNear(minZ_, maxZ_))
-    {
-      LinearAlgebra::AssignVector(normal_, 0, 0, 1);
-      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minX_, maxX_));
-      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minY_, maxY_));
-    }
-    else
-    {
-      LOG(ERROR) << "The contour is not coplanar and not parallel to any axis.";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    state_ = Valid;
-  }
-
-
-  void DicomStructurePolygon2::ProjectOnConstantPlane(
-    std::vector<Point2D>& intersections, const CoordinateSystem3D& plane) const
-  {
-    // the plane can either have constant X, or constant Y.
-    // - for constant Z planes, use the ProjectOnParallelPlane method
-    // - other type of planes are not supported
-
-    // V is the coordinate that is constant in the plane
-    double planeV = 0.0;
-
-    // if true, then "u" in the code is "x" and "v" is "y". 
-    // (v is constant in the plane)
-    bool uvxy = false;
-
-    size_t uindex = static_cast<size_t>(-1);
-    size_t vindex = static_cast<size_t>(-1);
-
-    ORTHANC_ASSERT(LinearAlgebra::IsNear(plane.GetNormal()[2], 0.0));
-
-    if (LinearAlgebra::IsNear(plane.GetNormal()[1], 0.0))
-    {
-      // normal is 1,0,0 (or -1,0,0). 
-      // plane is constant X
-      uindex = 1;
-      vindex = 0;
-
-      uvxy = false;
-      planeV = plane.GetOrigin()[0];
-      if (planeV < minX_)
-        return;
-      if (planeV > maxX_)
-        return;
-    }
-    else if (LinearAlgebra::IsNear(plane.GetNormal()[0], 0.0))
-    {
-      // normal is 0,1,0 (or 0,-1,0). 
-      // plane is constant Y
-      uindex = 0;
-      vindex = 1;
-
-      uvxy = true;
-      planeV = plane.GetOrigin()[1];
-      if (planeV < minY_)
-        return;
-      if (planeV > maxY_)
-        return;
-    }
-    else
-    {
-      // if the following assertion(s) fail(s), it means the plane is NOT a constant-X or constant-Y plane
-      LOG(ERROR) << "Plane normal must be (a,0,0) or (0,a,0), with a == -1 or a == 1";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    size_t pointCount = GetPointCount();
-    if (pointCount >= 3)
-    {
-      // this vector will contain the coordinates of the intersection points
-      // between the plane and the polygon.
-      // these are expressed in the U coordinate, that is either X or Y, 
-      // depending upon the plane orientation
-      std::vector<double> uIntersections;
-
-      // we loop on the segments of the polygon (TODO: optimize)
-      // and we compute the intersection between each segment and the cut
-      // cutting plane (slice) has a constant X
-
-      for (size_t iPoint = 0; iPoint < pointCount; ++iPoint)
-      {
-        double u1 = points_[iPoint][uindex];
-        double v1 = points_[iPoint][vindex];
-
-        double u2 = 0;
-        double v2 = 0;
-
-        if (iPoint < pointCount - 1)
-        {
-          u2 = points_[iPoint + 1][uindex];
-          v2 = points_[iPoint + 1][vindex];
-        }
-        else
-        {
-          u2 = points_[0][uindex];
-          v2 = points_[0][vindex];
-        }
-
-        // Check if the segment intersects the plane
-        if ((std::min(v1, v2) <= planeV) && (std::max(v1, v2) >= planeV))
-        {
-          // special case: the segment is parallel to the plane but close to it
-          if (LinearAlgebra::IsNear(v1, v2))
-          {
-            // in that case, we choose to label both points as an intersection
-            double x, y;
-            plane.ProjectPoint(x, y, points_[iPoint]);
-            intersections.push_back(Point2D(x, y));
-
-            plane.ProjectPoint(x, y, points_[iPoint + 1]);
-            intersections.push_back(Point2D(x, y));
-          }
-          else
-          {
-            // we are looking for u so that (u,planeV) belongs to the segment
-            // let's define alpha = (u-u2)/(u1-u2) --> u = alpha*(u1-u2) + u2
-            // alpha = (v2-planeV)/(v2-v1)
-            // because the following two triangles are similar
-            // [ (planeY,x)  , (y2,x2), (planeY,x2) ] or
-            // [ (planeX,y)  , (x2,y2), (planeX,y2) ]
-            // and
-            // [ (y1    ,x1) , (y2,x2), (y1    ,x2) ] or
-            // [ (x1    ,y1) , (x2,y2), (x1    ,y2) ]
-
-            /*
-              void CoordinateSystem3D::ProjectPoint(double& offsetX,
-                double& offsetY,
-                const Vector& point) const
-            */
-            double alpha = (v2 - planeV) / (v2 - v1);
-
-            // get rid of numerical oddities
-            if (alpha < 0.0)
-              alpha = 0.0;
-            if (alpha > 1.0)
-              alpha = 1.0;
-            double u = alpha * (u1 - u2) + u2;
-
-            // here is the intersection in world coordinates
-            Vector intersection;
-            if(uvxy)
-              LinearAlgebra::AssignVector(intersection, u, planeV, minZ_);
-            else
-              LinearAlgebra::AssignVector(intersection, planeV, u, minZ_);
-
-            // and we convert it to plane coordinates
-            {
-              double xi, yi;
-              plane.ProjectPoint(xi, yi, intersection);
-
-              // we consider that the x axis is always parallel to the polygons
-              // TODO: is this hypothesis safe??????
-              uIntersections.insert(std::lower_bound(uIntersections.begin(), uIntersections.end(), xi), xi);
-            }
-          }
-        }
-      } // end of for (size_t iPoint = 0; iPoint < pointCount; ++iPoint)
-    
-      // now we convert the intersections to plane points
-      // we consider that the x axis is always parallel to the polygons
-      // TODO: same hypothesis as above: plane is perpendicular to polygons, 
-      // plane is parallel to the XZ (constant Y) or YZ (constant X) 3D planes
-      for (size_t i = 0; i < uIntersections.size(); ++i)
-      {
-        double x = uIntersections[i];
-        intersections.push_back(Point2D(x, minZ_));
-      }
-    } // end of if (pointCount >= 3)
-    else
-    {
-      LOG(ERROR) << "This polygon has " << pointCount << " vertices, which is less than 3 --> skipping";
-    }
-  } 
-
-void OrthancStone::DicomStructurePolygon2::ProjectOnParallelPlane(
-  std::vector< std::pair<Point2D, Point2D> >& segments, 
-  const CoordinateSystem3D& plane) const
-{
-  if (points_.size() < 3)
-    return;
-
-  // the plane is horizontal
-  ORTHANC_ASSERT(LinearAlgebra::IsNear(plane.GetNormal()[0], 0.0));
-  ORTHANC_ASSERT(LinearAlgebra::IsNear(plane.GetNormal()[1], 0.0));
-
-  segments.clear();
-  segments.reserve(points_.size());
-  // since the returned values need to be expressed in the supplied coordinate
-  // system, we need to subtract origin_ from the returned points
-
-  double planeOriginX = plane.GetOrigin()[0];
-  double planeOriginY = plane.GetOrigin()[1];
-
-  // precondition: points_.size() >= 3
-  for (size_t j = 0; j < points_.size()-1; ++j)
-  {
-    // segment between point j and j+1
-
-    const Point3D& point0 = GetPoint(j);
-    // subtract plane origin x and y
-    Point2D p0(point0[0] - planeOriginX, point0[1] - planeOriginY);
-    
-    const Point3D& point1 = GetPoint(j+1);
-    // subtract plane origin x and y
-    Point2D p1(point1[0] - planeOriginX, point1[1] - planeOriginY);
-
-    segments.push_back(std::pair<Point2D, Point2D>(p0,p1));
-  }
-
-
-  // final segment 
-
-  const Point3D& point0 = GetPoint(points_.size() - 1);
-  // subtract plane origin x and y
-  Point2D p0(point0[0] - planeOriginX, point0[1] - planeOriginY);
-
-  const Point3D& point1 = GetPoint(0);
-  // subtract plane origin x and y
-  Point2D p1(point1[0] - planeOriginX, point1[1] - planeOriginY);
-
-  segments.push_back(std::pair<Point2D, Point2D>(p0, p1));
-}
-
-double OrthancStone::DicomStructurePolygon2::GetZ() const
-{
-  ORTHANC_ASSERT(LinearAlgebra::IsNear(normal_[0], 0.0));
-  ORTHANC_ASSERT(LinearAlgebra::IsNear(normal_[1], 0.0));
-  ORTHANC_ASSERT(LinearAlgebra::IsNear(minZ_, maxZ_));
-  return minZ_;
-}
-
-
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
--- a/Framework/Toolbox/DicomStructurePolygon2.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#include "CoordinateSystem3D.h"
-#include "DicomStructureSetUtils.h"
-#include "Extent2D.h"
-
-#include "../Scene2D/Color.h"
-#include "../StoneException.h"
-
-#include <FullOrthancDataset.h>
-
-#include <list>
-#include <string>
-
-namespace OrthancStone
-{
-
-  /**
-  Only polygons that are planar and parallel to either the X,Y or Z plane
-  ("X plane" == plane where X is equal to a constant for each point) are
-  supported.
-  */
-  class DicomStructurePolygon2
-  {
-  public:
-    enum Type
-    {
-      ClosedPlanar,
-      Unsupported
-    };
-
-    DicomStructurePolygon2(std::string referencedSopInstanceUid, const std::string& type)
-      : referencedSopInstanceUid_(referencedSopInstanceUid)
-      , state_(Building)
-      , minX_(std::numeric_limits<double>::max())
-      , maxX_(-std::numeric_limits<double>::max())
-      , minY_(std::numeric_limits<double>::max())
-      , maxY_(-std::numeric_limits<double>::max())
-      , minZ_(std::numeric_limits<double>::max())
-      , maxZ_(-std::numeric_limits<double>::max())
-      , type_(TypeFromString(type))
-    {
-      ORTHANC_ASSERT(type_ == ClosedPlanar);
-    }
-
-    void ComputeDependentProperties();
-
-    size_t GetPointCount() const
-    {
-      ORTHANC_ASSERT(state_ == Valid);
-      return points_.size();
-    }
-
-    const Point3D& GetPoint(size_t i) const
-    {
-      ORTHANC_ASSERT(state_ == Valid);
-      return points_.at(i);
-    }
-
-    void AddPoint(const Point3D& v)
-    {
-      ORTHANC_ASSERT(state_ == Building);
-      points_.push_back(v);
-    }
-
-    void Reserve(size_t n)
-    {
-      ORTHANC_ASSERT(state_ == Building);
-      points_.reserve(n);
-    }
-
-    /**
-    This method takes a plane+coord system  that is parallel to the polygon
-    and adds to polygons a new vector with the ordered set of points projected
-    on the plane, in the plane coordinate system.
-    */
-    void ProjectOnParallelPlane(
-      std::vector< std::pair<Point2D,Point2D> >& segments,
-      const CoordinateSystem3D& plane) const;
-
-    /**
-    Returns the coordinates of the intersection of the polygon and a plane 
-    that is perpendicular to the polygons (plane has either constant X or 
-    constant Y)
-    */
-    void ProjectOnConstantPlane(
-      std::vector<Point2D>& intersections,
-      const CoordinateSystem3D& plane) const;
-
-    /**
-    This method assumes polygon has a normal equal to 0,0,-1 and 0,0,1 (thus,
-    the polygon is parallel to the XY plane) and returns the Z coordinate of 
-    all the polygon points
-    */
-    double GetZ() const;
-
-    /**
-    The normal sign is left undefined for now
-    */
-    Vector3D GetNormal() const
-    {
-      return normal_;
-    }
-
-    /**
-    This method will compute the intersection between a polygon and
-    a plane where either X, Y or Z is constant.
-    The plane is given with an origin and a normal. If the normal is
-    not parallel to an axis, an error is raised.
-    */
-    void ComputeIntersectionWithPlane(const CoordinateSystem3D& plane);
-
-  private:
-    static Type TypeFromString(const std::string& s)
-    {
-      if (s == "CLOSED_PLANAR")
-        return ClosedPlanar;
-      else
-        return Unsupported;
-    }
-    enum State
-    {
-      Building,
-      Valid
-    };
-    std::string           referencedSopInstanceUid_;
-    CoordinateSystem3D    geometry_;
-    std::vector<Point3D>  points_;
-    Vector3D              normal_; // sign is irrelevant for now
-    State                 state_;
-    double                minX_, maxX_, minY_, maxY_, minZ_, maxZ_;
-    Type                  type_;
-  };
-}
-
-#endif
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-
--- a/Framework/Toolbox/DicomStructureSet.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1067 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomStructureSet.h"
-#include "DicomStructureSetUtils.h"
-
-#include "../Toolbox/GeometryToolbox.h"
-#include "OrthancDatasets/DicomDatasetReader.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-#if defined(_MSC_VER)
-#  pragma warning(push)
-#  pragma warning(disable:4244)
-#endif
-
-#include <limits>
-#include <stdio.h>
-#include <boost/geometry.hpp>
-#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
-
-#if defined(_MSC_VER)
-#  pragma warning(pop)
-#endif
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include "ParsedDicomDataset.h"
-#endif
-
-
-typedef boost::geometry::model::d2::point_xy<double> BoostPoint;
-typedef boost::geometry::model::polygon<BoostPoint> BoostPolygon;
-typedef boost::geometry::model::multi_polygon<BoostPolygon>  BoostMultiPolygon;
-
-
-static void Union(BoostMultiPolygon& output,
-                  std::vector<BoostPolygon>& input)
-{
-  for (size_t i = 0; i < input.size(); i++)
-  {
-    boost::geometry::correct(input[i]);
-  }
-  
-  if (input.size() == 0)
-  {
-    output.clear();
-  }
-  else if (input.size() == 1)
-  {
-    output.resize(1);
-    output[0] = input[0];
-  }
-  else
-  {
-    boost::geometry::union_(input[0], input[1], output);
-
-    for (size_t i = 0; i < input.size(); i++)
-    {
-      BoostMultiPolygon tmp;
-      boost::geometry::union_(output, input[i], tmp);
-      output = tmp;
-    }
-  }
-}
-
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-
-static BoostPolygon CreateRectangle(float x1, float y1,
-                                    float x2, float y2)
-{
-  BoostPolygon r;
-  boost::geometry::append(r, BoostPoint(x1, y1));
-  boost::geometry::append(r, BoostPoint(x1, y2));
-  boost::geometry::append(r, BoostPoint(x2, y2));
-  boost::geometry::append(r, BoostPoint(x2, y1));
-  return r;
-}
-
-#else
-
-namespace OrthancStone
-{
-  static RtStructRectangleInSlab CreateRectangle(float x1, float y1,
-                                                 float x2, float y2)
-  {
-    RtStructRectangleInSlab rect;
-    rect.xmin = std::min(x1, x2);
-    rect.xmax = std::max(x1, x2);
-    rect.ymin = std::min(y1, y2);
-    rect.ymax = std::max(y1, y2);
-    return rect;
-  }
-
-  bool CompareRectanglesForProjection(const std::pair<RtStructRectangleInSlab,double>& r1, const std::pair<RtStructRectangleInSlab, double>& r2)
-  {
-    return r1.second < r2.second;
-  }
-
-  bool CompareSlabsY(const RtStructRectanglesInSlab& r1, const RtStructRectanglesInSlab& r2)
-  {
-    if ((r1.size() == 0) || (r2.size() == 0))
-      return false;
-
-    return r1[0].ymax < r2[0].ymax;
-  }
-}
-
-#endif
-
-namespace OrthancStone
-{
-  static const Orthanc::DicomTag DICOM_TAG_CONTOUR_GEOMETRIC_TYPE(0x3006, 0x0042);
-  static const Orthanc::DicomTag DICOM_TAG_CONTOUR_IMAGE_SEQUENCE(0x3006, 0x0016);
-  static const Orthanc::DicomTag DICOM_TAG_CONTOUR_SEQUENCE(0x3006, 0x0040);
-  static const Orthanc::DicomTag DICOM_TAG_CONTOUR_DATA(0x3006, 0x0050);
-  static const Orthanc::DicomTag DICOM_TAG_NUMBER_OF_CONTOUR_POINTS(0x3006, 0x0046);
-  static const Orthanc::DicomTag DICOM_TAG_REFERENCED_SOP_INSTANCE_UID(0x0008, 0x1155);
-  static const Orthanc::DicomTag DICOM_TAG_ROI_CONTOUR_SEQUENCE(0x3006, 0x0039);
-  static const Orthanc::DicomTag DICOM_TAG_ROI_DISPLAY_COLOR(0x3006, 0x002a);
-  static const Orthanc::DicomTag DICOM_TAG_ROI_NAME(0x3006, 0x0026);
-  static const Orthanc::DicomTag DICOM_TAG_RT_ROI_INTERPRETED_TYPE(0x3006, 0x00a4);
-  static const Orthanc::DicomTag DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE(0x3006, 0x0080);
-  static const Orthanc::DicomTag DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE(0x3006, 0x0020);
-
-
-  static uint8_t ConvertColor(double v)
-  {
-    if (v < 0)
-    {
-      return 0;
-    }
-    else if (v >= 255)
-    {
-      return 255;
-    }
-    else
-    {
-      return static_cast<uint8_t>(v);
-    }
-  }
-
-
-  static bool ParseVector(Vector& target,
-                          const IDicomDataset& dataset,
-                          const DicomPath& tag)
-  {
-    std::string value;
-    return (dataset.GetStringValue(value, tag) &&
-            LinearAlgebra::ParseVector(target, value));
-  }
-
-  void DicomStructureSet::Polygon::CheckPointIsOnSlice(const Vector& v) const
-  {
-    if (hasSlice_)
-    {
-      double magnitude =
-        GeometryToolbox::ProjectAlongNormal(v, geometry_.GetNormal());
-      if(!LinearAlgebra::IsNear(
-           magnitude,
-           projectionAlongNormal_,
-           sliceThickness_ / 2.0 /* in mm */ ))
-      {
-        LOG(ERROR) << "This RT-STRUCT contains a point that is off the "
-                   << "slice of its instance | "
-                   << "magnitude = " << magnitude << " | "
-                   << "projectionAlongNormal_ = " << projectionAlongNormal_ << " | "
-                   << "tolerance (sliceThickness_ / 2.0) = " << (sliceThickness_ / 2.0);
-
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-    }
-  }
-
-  bool DicomStructureSet::Polygon::IsPointOnSliceIfAny(const Vector& v) const
-  {
-    if (hasSlice_)
-    {
-      double magnitude = 
-        GeometryToolbox::ProjectAlongNormal(v, geometry_.GetNormal());
-      bool onSlice = LinearAlgebra::IsNear(
-        magnitude,
-        projectionAlongNormal_,
-        sliceThickness_ / 2.0 /* in mm */);
-      if (!onSlice)
-      {
-        LOG(WARNING) << "This RT-STRUCT contains a point that is off the "
-                     << "slice of its instance | "
-                     << "magnitude = " << magnitude << " | "
-                     << "projectionAlongNormal_ = " << projectionAlongNormal_ << " | "
-                     << "tolerance (sliceThickness_ / 2.0) = " << (sliceThickness_ / 2.0);
-      }
-      return onSlice;
-    }
-    else
-    {
-      return true;
-    }
-  }
-
-  void DicomStructureSet::Polygon::AddPoint(const Vector& v)
-  {
-#if 1
-    // BGO 2019-09-03
-    if (IsPointOnSliceIfAny(v))
-    {
-      points_.push_back(v);
-    }
-#else
-    CheckPoint(v);
-    points_.push_back(v);
-#endif 
-  }
-
-
-  bool DicomStructureSet::Polygon::UpdateReferencedSlice(const ReferencedSlices& slices)
-  {
-    if (hasSlice_)
-    {
-      return true;
-    }
-    else
-    {
-      ReferencedSlices::const_iterator it = slices.find(sopInstanceUid_);
-      
-      if (it == slices.end())
-      {
-        return false;
-      }
-      else
-      {
-        const CoordinateSystem3D& geometry = it->second.geometry_;
-        
-        hasSlice_ = true;
-        geometry_ = geometry;
-        projectionAlongNormal_ = GeometryToolbox::ProjectAlongNormal(geometry.GetOrigin(), geometry.GetNormal());
-        sliceThickness_ = it->second.thickness_;
-
-        extent_.Reset();
-        
-        for (Points::const_iterator it = points_.begin(); it != points_.end(); ++it)
-        {
-          if (IsPointOnSliceIfAny(*it))
-          {
-            double x, y;
-            geometry.ProjectPoint2(x, y, *it);
-            extent_.AddPoint(x, y);
-          }
-        }
-        return true;
-      }
-    }
-  }
-
-  bool DicomStructureSet::Polygon::IsOnSlice(const CoordinateSystem3D& slice) const
-  {
-    bool isOpposite = false;
-
-    if (points_.empty() ||
-        !hasSlice_ ||
-        !GeometryToolbox::IsParallelOrOpposite(isOpposite, slice.GetNormal(), geometry_.GetNormal()))
-    {
-      return false;
-    }
-    
-    double d = GeometryToolbox::ProjectAlongNormal(slice.GetOrigin(), geometry_.GetNormal());
-
-    return (LinearAlgebra::IsNear(d, projectionAlongNormal_,
-                                  sliceThickness_ / 2.0));
-  }
-    
-  bool DicomStructureSet::Polygon::Project(double& x1,
-                                           double& y1,
-                                           double& x2,
-                                           double& y2,
-                                           const CoordinateSystem3D& slice) const
-  {
-    // TODO: optimize this method using a sweep-line algorithm for polygons
-    
-    if (!hasSlice_ ||
-        points_.size() <= 1)
-    {
-      return false;
-    }
-
-    double x, y;
-    geometry_.ProjectPoint2(x, y, slice.GetOrigin());
-      
-    bool isOpposite;
-    if (GeometryToolbox::IsParallelOrOpposite
-        (isOpposite, slice.GetNormal(), geometry_.GetAxisY()))
-    {
-      // plane is constant Y
-
-      if (y < extent_.GetY1() ||
-          y > extent_.GetY2())
-      {
-        // The polygon does not intersect the input slice
-        return false;
-      }
-        
-      bool isFirst = true;
-      double xmin = std::numeric_limits<double>::infinity();
-      double xmax = -std::numeric_limits<double>::infinity();
-
-      double prevX, prevY;
-      geometry_.ProjectPoint2(prevX, prevY, points_[points_.size() - 1]);
-        
-      for (size_t i = 0; i < points_.size(); i++)
-      {
-        // Reference: ../../Resources/Computations/IntersectSegmentAndHorizontalLine.py
-        double curX, curY;
-        geometry_.ProjectPoint2(curX, curY, points_[i]);
-
-        // if prev* and cur* are on opposite sides of y, this means that the
-        // segment intersects the plane.
-        if ((prevY < y && curY > y) ||
-            (prevY > y && curY < y))
-        {
-          double p = (curX * prevY - curY * prevX + y * (prevX - curX)) / (prevY - curY);
-          xmin = std::min(xmin, p);
-          xmax = std::max(xmax, p);
-          isFirst = false;
-
-          // xmin and xmax represent the extent of the rectangle along the 
-          // intersection between the plane and the polygon geometry
-
-        }
-
-        prevX = curX;
-        prevY = curY;
-      }
-        
-      // if NO segment intersects the plane
-      if (isFirst)
-      {
-        return false;
-      }
-      else
-      {
-        // y is the plane y coord in the polygon geometry
-        // xmin and xmax are ALSO expressed in the polygon geometry
-
-        // let's convert them to 3D world geometry...
-        Vector p1 = (geometry_.MapSliceToWorldCoordinates(xmin, y) +
-                     sliceThickness_ / 2.0 * geometry_.GetNormal());
-        Vector p2 = (geometry_.MapSliceToWorldCoordinates(xmax, y) -
-                     sliceThickness_ / 2.0 * geometry_.GetNormal());
-          
-        // then to the cutting plane geometry...
-        slice.ProjectPoint2(x1, y1, p1);
-        slice.ProjectPoint2(x2, y2, p2);
-        return true;
-      }
-    }
-    else if (GeometryToolbox::IsParallelOrOpposite
-             (isOpposite, slice.GetNormal(), geometry_.GetAxisX()))
-    {
-      // plane is constant X => Sagittal view (remember that in the
-      // sagittal projection, the normal must be swapped)
-
-      
-      /*
-        Please read the comments in the section above, by taking into account
-        the fact that, in this case, the plane has a constant X, not Y (in 
-        polygon geometry_ coordinates)
-      */
-
-      if (x < extent_.GetX1() ||
-          x > extent_.GetX2())
-      {
-        return false;
-      }
-
-      bool isFirst = true;
-      double ymin = std::numeric_limits<double>::infinity();
-      double ymax = -std::numeric_limits<double>::infinity();
-
-      double prevX, prevY;
-      geometry_.ProjectPoint2(prevX, prevY, points_[points_.size() - 1]);
-        
-      for (size_t i = 0; i < points_.size(); i++)
-      {
-        // Reference: ../../Resources/Computations/IntersectSegmentAndVerticalLine.py
-        double curX, curY;
-        geometry_.ProjectPoint2(curX, curY, points_[i]);
-
-        if ((prevX < x && curX > x) ||
-            (prevX > x && curX < x))
-        {
-          double p = (curX * prevY - curY * prevX + x * (curY - prevY)) / (curX - prevX);
-          ymin = std::min(ymin, p);
-          ymax = std::max(ymax, p);
-          isFirst = false;
-        }
-
-        prevX = curX;
-        prevY = curY;
-      }
-        
-      if (isFirst)
-      {
-        return false;
-      }
-      else
-      {
-        Vector p1 = (geometry_.MapSliceToWorldCoordinates(x, ymin) +
-                     sliceThickness_ / 2.0 * geometry_.GetNormal());
-        Vector p2 = (geometry_.MapSliceToWorldCoordinates(x, ymax) -
-                     sliceThickness_ / 2.0 * geometry_.GetNormal());
-
-        slice.ProjectPoint2(x1, y1, p1);
-        slice.ProjectPoint2(x2, y2, p2);
-
-        return true;
-      }
-    }
-    else
-    {
-      // Should not happen
-      return false;
-    }
-  }
-
-  
-  const DicomStructureSet::Structure& DicomStructureSet::GetStructure(size_t index) const
-  {
-    if (index >= structures_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    return structures_[index];
-  }
-
-
-  DicomStructureSet::Structure& DicomStructureSet::GetStructure(size_t index)
-  {
-    if (index >= structures_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    return structures_[index];
-  }
-
-  void DicomStructureSet::Setup(const IDicomDataset& tags)
-  {
-    DicomDatasetReader reader(tags);
-    
-    size_t count, tmp;
-    if (!tags.GetSequenceSize(count, DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE) ||
-        !tags.GetSequenceSize(tmp, DICOM_TAG_ROI_CONTOUR_SEQUENCE) ||
-        tmp != count ||
-        !tags.GetSequenceSize(tmp, DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE) ||
-        tmp != count)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    structures_.resize(count);
-    for (size_t i = 0; i < count; i++)
-    {
-      structures_[i].interpretation_ = reader.GetStringValue
-        (DicomPath(DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE, i,
-                   DICOM_TAG_RT_ROI_INTERPRETED_TYPE),
-         "No interpretation");
-
-      structures_[i].name_ = reader.GetStringValue
-        (DicomPath(DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE, i,
-                   DICOM_TAG_ROI_NAME),
-         "No name");
-
-      Vector color;
-      if (ParseVector(color, tags, DicomPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-                                             DICOM_TAG_ROI_DISPLAY_COLOR)) &&
-          color.size() == 3)
-      {
-        structures_[i].red_ = ConvertColor(color[0]);
-        structures_[i].green_ = ConvertColor(color[1]);
-        structures_[i].blue_ = ConvertColor(color[2]);
-      }
-      else
-      {
-        structures_[i].red_ = 255;
-        structures_[i].green_ = 0;
-        structures_[i].blue_ = 0;
-      }
-
-      size_t countSlices;
-      if (!tags.GetSequenceSize(countSlices, DicomPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-                                                       DICOM_TAG_CONTOUR_SEQUENCE)))
-      {
-        countSlices = 0;
-      }
-
-      LOG(INFO) << "New RT structure: \"" << structures_[i].name_ 
-                << "\" with interpretation \"" << structures_[i].interpretation_
-                << "\" containing " << countSlices << " slices (color: " 
-                << static_cast<int>(structures_[i].red_) << "," 
-                << static_cast<int>(structures_[i].green_) << ","
-                << static_cast<int>(structures_[i].blue_) << ")";
-
-      // These temporary variables avoid allocating many vectors in the loop below
-      DicomPath countPointsPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-                                DICOM_TAG_CONTOUR_SEQUENCE, 0,
-                                DICOM_TAG_NUMBER_OF_CONTOUR_POINTS);
-
-      DicomPath geometricTypePath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-                                  DICOM_TAG_CONTOUR_SEQUENCE, 0,
-                                  DICOM_TAG_CONTOUR_GEOMETRIC_TYPE);
-      
-      DicomPath imageSequencePath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-                                  DICOM_TAG_CONTOUR_SEQUENCE, 0,
-                                  DICOM_TAG_CONTOUR_IMAGE_SEQUENCE);
-
-      // (3006,0039)[i] / (0x3006, 0x0040)[0] / (0x3006, 0x0016)[0] / (0x0008, 0x1155)
-      DicomPath referencedInstancePath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-                                       DICOM_TAG_CONTOUR_SEQUENCE, 0,
-                                       DICOM_TAG_CONTOUR_IMAGE_SEQUENCE, 0,
-                                       DICOM_TAG_REFERENCED_SOP_INSTANCE_UID);
-
-      DicomPath contourDataPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-                                DICOM_TAG_CONTOUR_SEQUENCE, 0,
-                                DICOM_TAG_CONTOUR_DATA);
-
-      for (size_t j = 0; j < countSlices; j++)
-      {
-        unsigned int countPoints;
-
-        countPointsPath.SetPrefixIndex(1, j);
-        if (!reader.GetUnsignedIntegerValue(countPoints, countPointsPath))
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-        }
-            
-        //LOG(INFO) << "Parsing slice containing " << countPoints << " vertices";
-
-        geometricTypePath.SetPrefixIndex(1, j);
-        std::string type = reader.GetMandatoryStringValue(geometricTypePath);
-        if (type != "CLOSED_PLANAR")
-        {
-          LOG(WARNING) << "Ignoring contour with geometry type: " << type;
-          continue;
-        }
-
-        size_t size;
-
-        imageSequencePath.SetPrefixIndex(1, j);
-        if (!tags.GetSequenceSize(size, imageSequencePath) || size != 1)
-        {
-          LOG(ERROR) << "The ContourImageSequence sequence (tag 3006,0016) must be present and contain one entry.";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);          
-        }
-
-        referencedInstancePath.SetPrefixIndex(1, j);
-        std::string sopInstanceUid = reader.GetMandatoryStringValue(referencedInstancePath);
-
-        contourDataPath.SetPrefixIndex(1, j);        
-        std::string slicesData = reader.GetMandatoryStringValue(contourDataPath);
-
-        Vector points;
-        if (!LinearAlgebra::ParseVector(points, slicesData) ||
-            points.size() != 3 * countPoints)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);          
-        }
-
-        // seen in real world
-        if(Orthanc::Toolbox::StripSpaces(sopInstanceUid) == "") 
-        {
-          LOG(ERROR) << "WARNING. The following Dicom tag (Referenced SOP Instance UID) contains an empty value : // (3006,0039)[" << i << "] / (0x3006, 0x0040)[0] / (0x3006, 0x0016)[0] / (0x0008, 0x1155)";
-        }
-
-        Polygon polygon(sopInstanceUid);
-        polygon.Reserve(countPoints);
-
-        for (size_t k = 0; k < countPoints; k++)
-        {
-          Vector v(3);
-          v[0] = points[3 * k];
-          v[1] = points[3 * k + 1];
-          v[2] = points[3 * k + 2];
-          polygon.AddPoint(v);
-        }
-
-        structures_[i].polygons_.push_back(polygon);
-      }
-    }
-  }
-
-
-#if ORTHANC_ENABLE_DCMTK == 1
-  DicomStructureSet::DicomStructureSet(Orthanc::ParsedDicomFile& instance)
-  {
-    ParsedDicomDataset dataset(instance);
-    Setup(dataset);
-  }
-#endif
-  
-
-  Vector DicomStructureSet::GetStructureCenter(size_t index) const
-  {
-    const Structure& structure = GetStructure(index);
-
-    Vector center;
-    LinearAlgebra::AssignVector(center, 0, 0, 0);
-    if (structure.polygons_.empty())
-    {
-      return center;
-    }
-
-    double n = static_cast<double>(structure.polygons_.size());
-
-    for (Polygons::const_iterator polygon = structure.polygons_.begin();
-         polygon != structure.polygons_.end(); ++polygon)
-    {
-      if (!polygon->GetPoints().empty())
-      {
-        center += polygon->GetPoints().front() / n;
-      }
-    }
-
-    return center;
-  }
-
-
-  const std::string& DicomStructureSet::GetStructureName(size_t index) const
-  {
-    return GetStructure(index).name_;
-  }
-
-
-  const std::string& DicomStructureSet::GetStructureInterpretation(size_t index) const
-  {
-    return GetStructure(index).interpretation_;
-  }
-
-
-  Color DicomStructureSet::GetStructureColor(size_t index) const
-  {
-    const Structure& s = GetStructure(index);
-    return Color(s.red_, s.green_, s.blue_);
-  }
-  
-    
-  void DicomStructureSet::GetStructureColor(uint8_t& red,
-                                            uint8_t& green,
-                                            uint8_t& blue,
-                                            size_t index) const
-  {
-    const Structure& s = GetStructure(index);
-    red = s.red_;
-    green = s.green_;
-    blue = s.blue_;
-  }
-
-
-  void DicomStructureSet::GetReferencedInstances(std::set<std::string>& instances)
-  {
-    for (Structures::const_iterator structure = structures_.begin();
-         structure != structures_.end(); ++structure)
-    {
-      for (Polygons::const_iterator polygon = structure->polygons_.begin();
-           polygon != structure->polygons_.end(); ++polygon)
-      {
-        instances.insert(polygon->GetSopInstanceUid());
-      }
-    }
-  }
-
-
-  void DicomStructureSet::AddReferencedSlice(const std::string& sopInstanceUid,
-                                             const std::string& seriesInstanceUid,
-                                             const CoordinateSystem3D& geometry,
-                                             double thickness)
-  {
-    if (referencedSlices_.find(sopInstanceUid) != referencedSlices_.end())
-    {
-      // This geometry is already known
-      LOG(ERROR) << "DicomStructureSet::AddReferencedSlice(): (referencedSlices_.find(sopInstanceUid) != referencedSlices_.end()). sopInstanceUid = " << sopInstanceUid;
-     
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      if (thickness < 0)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-        
-      if (!referencedSlices_.empty())
-      {
-        const ReferencedSlice& reference = referencedSlices_.begin()->second;
-
-        if (reference.seriesInstanceUid_ != seriesInstanceUid)
-        {
-          LOG(ERROR) << "This RT-STRUCT refers to several different series";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-        }
-
-        if (!GeometryToolbox::IsParallel(reference.geometry_.GetNormal(), geometry.GetNormal()))
-        {
-          LOG(ERROR) << "The slices in this RT-STRUCT are not parallel";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-        }
-      }
-        
-      referencedSlices_[sopInstanceUid] = ReferencedSlice(seriesInstanceUid, geometry, thickness);
-
-      for (Structures::iterator structure = structures_.begin();
-           structure != structures_.end(); ++structure)
-      {
-        for (Polygons::iterator polygon = structure->polygons_.begin();
-             polygon != structure->polygons_.end(); ++polygon)
-        {
-          polygon->UpdateReferencedSlice(referencedSlices_);
-        }
-      }
-    }
-  }
-
-
-  void DicomStructureSet::AddReferencedSlice(const Orthanc::DicomMap& dataset)
-  {
-    CoordinateSystem3D slice(dataset);
-
-    double thickness = 1;  // 1 mm by default
-
-    std::string s;
-    Vector v;
-    if (dataset.LookupStringValue(s, Orthanc::DICOM_TAG_SLICE_THICKNESS, false) &&
-        LinearAlgebra::ParseVector(v, s) &&
-        v.size() > 0)
-    {
-      thickness = v[0];
-    }
-
-    std::string instance, series;
-    if (dataset.LookupStringValue(instance, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false) &&
-        dataset.LookupStringValue(series, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
-    {
-      AddReferencedSlice(instance, series, slice, thickness);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  void DicomStructureSet::CheckReferencedSlices()
-  {
-    for (Structures::iterator structure = structures_.begin();
-         structure != structures_.end(); ++structure)
-    {
-      for (Polygons::iterator polygon = structure->polygons_.begin();
-           polygon != structure->polygons_.end(); ++polygon)
-      {
-        if (!polygon->UpdateReferencedSlice(referencedSlices_))
-        {
-          std::string sopInstanceUid = polygon->GetSopInstanceUid();
-          if (Orthanc::Toolbox::StripSpaces(sopInstanceUid) == "")
-          {
-            LOG(ERROR) << "DicomStructureSet::CheckReferencedSlices(): "
-                       << " missing information about referenced instance "
-                       << "(sopInstanceUid is empty!)";
-          }
-          else
-          {
-            LOG(ERROR) << "DicomStructureSet::CheckReferencedSlices(): "
-                       << " missing information about referenced instance "
-                       << "(sopInstanceUid = " << sopInstanceUid << ")";
-          }
-          //throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-        }
-      }
-    }
-  }
-
-
-  Vector DicomStructureSet::GetNormal() const
-  {
-    if (referencedSlices_.empty())
-    {
-      Vector v;
-      LinearAlgebra::AssignVector(v, 0, 0, 1);
-      return v;
-    }
-    else
-    {
-      return referencedSlices_.begin()->second.geometry_.GetNormal();
-    }
-  }
-
-  bool DicomStructureSet::ProjectStructure(
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-    std::vector< std::vector<Point2D> >& polygons,
-#else
-    std::vector< std::pair<Point2D, Point2D> >& segments,
-#endif
-    const Structure& structure,
-    const CoordinateSystem3D& sourceSlice) const
-  {
-    const CoordinateSystem3D slice = CoordinateSystem3D::NormalizeCuttingPlane(sourceSlice);
-    
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-    polygons.clear();
-#else
-    segments.clear();
-#endif
-
-    Vector normal = GetNormal();
-    
-    bool isOpposite;    
-    if (GeometryToolbox::IsParallelOrOpposite(isOpposite, normal, slice.GetNormal()))
-    {
-      // This is an axial projection
-
-      for (Polygons::const_iterator polygon = structure.polygons_.begin();
-           polygon != structure.polygons_.end(); ++polygon)
-      {
-        if (polygon->IsOnSlice(slice))
-        {
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-          polygons.push_back(std::vector<Point2D>());
-          
-          for (Points::const_iterator p = polygon->GetPoints().begin();
-               p != polygon->GetPoints().end(); ++p)
-          {
-            double x, y;
-            slice.ProjectPoint2(x, y, *p);
-            polygons.back().push_back(Point2D(x, y));
-          }
-#else
-          // we need to add all the segments corresponding to this polygon
-          const std::vector<Vector>& points3D = polygon->GetPoints();
-          if (points3D.size() >= 3)
-          {
-            Point2D prev2D;
-            {
-              Vector prev = points3D[0];
-              double prevX, prevY;
-              slice.ProjectPoint2(prevX, prevY, prev);
-              prev2D = Point2D(prevX, prevY);
-            }
-
-            size_t pointCount = points3D.size();
-            for (size_t ipt = 1; ipt < pointCount; ++ipt)
-            {
-              Vector next = points3D[ipt];
-              double nextX, nextY;
-              slice.ProjectPoint2(nextX, nextY, next);
-              Point2D next2D(nextX, nextY);
-              segments.push_back(std::pair<Point2D, Point2D>(prev2D, next2D));
-              prev2D = next2D;
-            }
-          }
-          else
-          {
-            LOG(ERROR) << "Contour with less than 3 points!";
-            // !!!
-          }
-#endif
-        }
-      }
-
-      return true;
-    }
-    else if (GeometryToolbox::IsParallelOrOpposite(isOpposite, normal, slice.GetAxisX()) ||
-             GeometryToolbox::IsParallelOrOpposite(isOpposite, normal, slice.GetAxisY()))
-    {
-#if 1
-      // Sagittal or coronal projection
-
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-      std::vector<BoostPolygon> projected;
-
-      for (Polygons::const_iterator polygon = structure.polygons_.begin();
-           polygon != structure.polygons_.end(); ++polygon)
-      {
-        double x1, y1, x2, y2;
-
-        if (polygon->Project(x1, y1, x2, y2, slice))
-        {
-          projected.push_back(CreateRectangle(x1, y1, x2, y2));
-        }
-      }
-#else
-      // this will contain the intersection of the polygon slab with
-      // the cutting plane, projected on the cutting plane coord system 
-      // (that yields a rectangle) + the Z coordinate of the polygon 
-      // (this is required to group polygons with the same Z later)
-      std::vector<std::pair<RtStructRectangleInSlab, double> > projected;
-
-      for (Polygons::const_iterator polygon = structure.polygons_.begin();
-           polygon != structure.polygons_.end(); ++polygon)
-      {
-        double x1, y1, x2, y2;
-
-        if (polygon->Project(x1, y1, x2, y2, slice))
-        {
-          double curZ = polygon->GetGeometryOrigin()[2];
-
-          // x1,y1 and x2,y2 are in "slice" coordinates (the cutting plane 
-          // geometry)
-          projected.push_back(std::make_pair(CreateRectangle(
-                                               static_cast<float>(x1), 
-                                               static_cast<float>(y1), 
-                                               static_cast<float>(x2), 
-                                               static_cast<float>(y2)),curZ));
-        }
-      }
-#endif
-
-#if USE_BOOST_UNION_FOR_POLYGONS != 1
-      // projected contains a set of rectangles specified by two opposite
-      // corners (x1,y1,x2,y2)
-      // we need to merge them 
-      // each slab yields ONE polygon!
-
-      // we need to sorted all the rectangles that originate from the same Z
-      // into lanes. To make sure they are grouped together in the array, we
-      // sort it.
-      std::sort(projected.begin(), projected.end(), CompareRectanglesForProjection);
-
-      std::vector<RtStructRectanglesInSlab> rectanglesForEachSlab;
-      rectanglesForEachSlab.reserve(projected.size());
-
-      double curZ = 0;
-      for (size_t i = 0; i < projected.size(); ++i)
-      {
-#if 0
-        rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
-#else
-        if (i == 0)
-        {
-          curZ = projected[i].second;
-          rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
-        }
-        else
-        {
-          // this check is needed to prevent creating a new slab if 
-          // the new polygon is at the same Z coord than last one
-          if (!LinearAlgebra::IsNear(curZ, projected[i].second))
-          {
-            rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
-            curZ = projected[i].second;
-          }
-        }
-#endif
-
-        rectanglesForEachSlab.back().push_back(projected[i].first);
-
-        // as long as they have the same y, we should put them into the same lane
-        // BUT in Sebastien's code, there is only one polygon per lane.
-
-        //std::cout << "rect: xmin = " << rect.xmin << " xmax = " << rect.xmax << " ymin = " << rect.ymin << " ymax = " << rect.ymax << std::endl;
-      }
-      
-      // now we need to sort the slabs in increasing Y order (see ConvertListOfSlabsToSegments)
-      std::sort(rectanglesForEachSlab.begin(), rectanglesForEachSlab.end(), CompareSlabsY);
-
-      ConvertListOfSlabsToSegments(segments, rectanglesForEachSlab, projected.size());
-#else
-      BoostMultiPolygon merged;
-      Union(merged, projected);
-
-      polygons.resize(merged.size());
-      for (size_t i = 0; i < merged.size(); i++)
-      {
-        const std::vector<BoostPoint>& outer = merged[i].outer();
-
-        polygons[i].resize(outer.size());
-        for (size_t j = 0; j < outer.size(); j++)
-        {
-          polygons[i][j] = Point2D(outer[j].x(), outer[j].y());
-        }
-      }  
-#endif
-
-#else
-      for (Polygons::iterator polygon = structure.polygons_.begin();
-           polygon != structure.polygons_.end(); ++polygon)
-      {
-        double x1, y1, x2, y2;
-        if (polygon->Project(x1, y1, x2, y2, slice))
-        {
-          std::vector<Point2D> p(4);
-          p[0] = std::make_pair(x1, y1);
-          p[1] = std::make_pair(x2, y1);
-          p[2] = std::make_pair(x2, y2);
-          p[3] = std::make_pair(x1, y2);
-          polygons.push_back(p);
-        }
-      }
-#endif
-      
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-  void DicomStructureSet::ProjectOntoLayer(PolylineSceneLayer& layer,
-                                           const CoordinateSystem3D& plane,
-                                           size_t structureIndex,
-                                           const Color& color) const
-  {
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-    std::vector< std::vector<Point2D> > polygons;
-    if (ProjectStructure(polygons, structureIndex, plane))
-    {
-      for (size_t j = 0; j < polygons.size(); j++)
-      {
-        std::vector<ScenePoint2D> chain;
-        chain.reserve(polygons[j].size());
-
-        for (size_t k = 0; k < polygons[j].size(); k++)
-        {
-          chain.push_back(ScenePoint2D(polygons[j][k].x, polygons[j][k].y));
-        }
-
-        layer.AddChain(chain, true, color.GetRed(), color.GetGreen(), color.GetBlue());
-      }
-    }
-    
-#else
-    std::vector< std::pair<Point2D, Point2D> >  segments;
-
-    if (ProjectStructure(segments, structureIndex, plane))
-    {
-      for (size_t j = 0; j < segments.size(); j++)
-      {
-        std::vector<ScenePoint2D> chain(2);
-        chain[0] = ScenePoint2D(segments[j].first.x, segments[j].first.y);
-        chain[1] = ScenePoint2D(segments[j].second.x, segments[j].second.y);
-        layer.AddChain(chain, false, color.GetRed(), color.GetGreen(), color.GetBlue());
-      }
-    }
-#endif
-  }
-}
--- a/Framework/Toolbox/DicomStructureSet.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,236 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../OrthancStone.h"
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error The macro ORTHANC_ENABLE_DCMTK must be defined
-#endif
-
-#include "DicomStructureSetUtils.h"
-#include "CoordinateSystem3D.h"
-#include "Extent2D.h"
-#include "OrthancDatasets/FullOrthancDataset.h"
-#include "../Scene2D/Color.h"
-#include "../Scene2D/PolylineSceneLayer.h"
-
-#if ORTHANC_ENABLE_DCMTK == 1
-#  include <DicomParsing/ParsedDicomFile.h>
-#endif
-
-//#define USE_BOOST_UNION_FOR_POLYGONS 1
-
-
-#include <list>
-
-namespace OrthancStone
-{
-  class DicomStructureSet : public boost::noncopyable
-  {
-  private:
-    struct ReferencedSlice
-    {
-      std::string          seriesInstanceUid_;
-      CoordinateSystem3D   geometry_;
-      double               thickness_;
-
-      ReferencedSlice()
-      {
-      }
-      
-      ReferencedSlice(const std::string& seriesInstanceUid,
-                      const CoordinateSystem3D& geometry,
-                      double thickness) :
-        seriesInstanceUid_(seriesInstanceUid),
-        geometry_(geometry),
-        thickness_(thickness)
-      {
-      }
-    };
-
-    typedef std::map<std::string, ReferencedSlice>  ReferencedSlices;
-    
-    typedef std::vector<Vector>  Points;
-
-    class Polygon
-    {
-    private:
-      std::string         sopInstanceUid_;
-      bool                hasSlice_;
-      CoordinateSystem3D  geometry_;
-      double              projectionAlongNormal_;
-      double              sliceThickness_;  // In millimeters
-      Points              points_;
-      Extent2D            extent_;
-
-      void CheckPointIsOnSlice(const Vector& v) const;
-      bool IsPointOnSliceIfAny(const Vector& v) const;
-
-    public:
-      Polygon(const std::string& sopInstanceUid) :
-        sopInstanceUid_(sopInstanceUid),
-        hasSlice_(false)
-      {
-      }
-
-      void Reserve(size_t n)
-      {
-        points_.reserve(n);
-      }
-
-      void AddPoint(const Vector& v);
-
-      bool UpdateReferencedSlice(const ReferencedSlices& slices);
-
-      bool IsOnSlice(const CoordinateSystem3D& geometry) const;
-
-      const Vector& GetGeometryOrigin() const
-      {
-        return geometry_.GetOrigin();
-      }
-
-      const std::string& GetSopInstanceUid() const
-      {
-        return sopInstanceUid_;
-      }
-
-      const Points& GetPoints() const
-      {
-        return points_;
-      }
-
-      double GetSliceThickness() const
-      {
-        return sliceThickness_;
-      }
-
-      bool Project(double& x1,
-                   double& y1,
-                   double& x2,
-                   double& y2,
-                   const CoordinateSystem3D& slice) const;
-    };
-
-    typedef std::list<Polygon>  Polygons;
-
-    struct Structure
-    {
-      std::string   name_;
-      std::string   interpretation_;
-      Polygons      polygons_;
-      uint8_t       red_;
-      uint8_t       green_;
-      uint8_t       blue_;
-    };
-
-    typedef std::vector<Structure>  Structures;
-
-    Structures        structures_;
-    ReferencedSlices  referencedSlices_;
-
-    void Setup(const IDicomDataset& dataset);
-    
-    const Structure& GetStructure(size_t index) const;
-
-    Structure& GetStructure(size_t index);
-  
-    bool ProjectStructure(
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-      std::vector< std::vector<Point2D> >& polygons,
-#else
-      std::vector< std::pair<Point2D, Point2D> >& segments,
-#endif
-      const Structure& structure,
-      const CoordinateSystem3D& slice) const;
-
-  public:
-    DicomStructureSet(const FullOrthancDataset& instance)
-    {
-      Setup(instance);
-    }
-
-#if ORTHANC_ENABLE_DCMTK == 1
-    DicomStructureSet(Orthanc::ParsedDicomFile& instance);
-#endif
-
-    size_t GetStructuresCount() const
-    {
-      return structures_.size();
-    }
-
-    Vector GetStructureCenter(size_t index) const;
-
-    const std::string& GetStructureName(size_t index) const;
-
-    const std::string& GetStructureInterpretation(size_t index) const;
-
-    Color GetStructureColor(size_t index) const;
-
-    // TODO - remove
-    void GetStructureColor(uint8_t& red,
-                           uint8_t& green,
-                           uint8_t& blue,
-                           size_t index) const;
-
-    void GetReferencedInstances(std::set<std::string>& instances);
-
-    void AddReferencedSlice(const std::string& sopInstanceUid,
-                            const std::string& seriesInstanceUid,
-                            const CoordinateSystem3D& geometry,
-                            double thickness);
-
-    void AddReferencedSlice(const Orthanc::DicomMap& dataset);
-
-    void CheckReferencedSlices();
-
-    Vector GetNormal() const;
-
-#if USE_BOOST_UNION_FOR_POLYGONS == 1
-    bool ProjectStructure(std::vector< std::vector<Point2D> >& polygons,
-                          size_t index,
-                          const CoordinateSystem3D& slice) const
-    {
-      return ProjectStructure(polygons, GetStructure(index), slice);
-    }
-#else
-    bool ProjectStructure(std::vector< std::pair<Point2D, Point2D> >& segments,
-                          size_t index,
-                          const CoordinateSystem3D& slice) const
-    {
-      return ProjectStructure(segments, GetStructure(index), slice);
-    }
-#endif
-
-    void ProjectOntoLayer(PolylineSceneLayer& layer,
-                          const CoordinateSystem3D& plane,
-                          size_t structureIndex,
-                          const Color& color) const;
-
-    void ProjectOntoLayer(PolylineSceneLayer& layer,
-                          const CoordinateSystem3D& plane,
-                          size_t structureIndex) const
-    {
-      ProjectOntoLayer(layer, plane, structureIndex, GetStructureColor(structureIndex));
-    }
-  };
-}
--- a/Framework/Toolbox/DicomStructureSet2.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,311 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#include "DicomStructureSet2.h"
-
-#include "../Toolbox/LinearAlgebra.h"
-#include "../StoneException.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-#include <DicomFormat/DicomTag.h>
-
-#include <FullOrthancDataset.h>
-#include <DicomDatasetReader.h>
-
-namespace OrthancStone
-{
-  static const OrthancPlugins::DicomTag DICOM_TAG_CONTOUR_GEOMETRIC_TYPE(0x3006, 0x0042);
-  static const OrthancPlugins::DicomTag DICOM_TAG_CONTOUR_IMAGE_SEQUENCE(0x3006, 0x0016);
-  static const OrthancPlugins::DicomTag DICOM_TAG_CONTOUR_SEQUENCE(0x3006, 0x0040);
-  static const OrthancPlugins::DicomTag DICOM_TAG_CONTOUR_DATA(0x3006, 0x0050);
-  static const OrthancPlugins::DicomTag DICOM_TAG_NUMBER_OF_CONTOUR_POINTS(0x3006, 0x0046);
-  static const OrthancPlugins::DicomTag DICOM_TAG_REFERENCED_SOP_INSTANCE_UID(0x0008, 0x1155);
-  static const OrthancPlugins::DicomTag DICOM_TAG_ROI_CONTOUR_SEQUENCE(0x3006, 0x0039);
-  static const OrthancPlugins::DicomTag DICOM_TAG_ROI_DISPLAY_COLOR(0x3006, 0x002a);
-  static const OrthancPlugins::DicomTag DICOM_TAG_ROI_NAME(0x3006, 0x0026);
-  static const OrthancPlugins::DicomTag DICOM_TAG_RT_ROI_INTERPRETED_TYPE(0x3006, 0x00a4);
-  static const OrthancPlugins::DicomTag DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE(0x3006, 0x0080);
-  static const OrthancPlugins::DicomTag DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE(0x3006, 0x0020);
-
-  static inline uint8_t ConvertAndClipToByte(double v)
-  {
-    if (v < 0)
-    {
-      return 0;
-    }
-    else if (v >= 255)
-    {
-      return 255;
-    }
-    else
-    {
-      return static_cast<uint8_t>(v);
-    }
-  }
-
-  static bool ReadDicomToVector(Vector& target,
-    const OrthancPlugins::IDicomDataset& dataset,
-    const OrthancPlugins::DicomPath& tag)
-  {
-    std::string value;
-    return (dataset.GetStringValue(value, tag) &&
-      LinearAlgebra::ParseVector(target, value));
-  }
-
-
-  void DicomPathToString(std::string& s, const OrthancPlugins::DicomPath& dicomPath)
-  {
-    std::stringstream tmp;
-    for (size_t i = 0; i < dicomPath.GetPrefixLength(); ++i)
-    {
-      OrthancPlugins::DicomTag tag = dicomPath.GetPrefixTag(i);
-
-      // We use this other object to be able to use GetMainTagsName
-      // and Format
-      Orthanc::DicomTag tag2(tag.GetGroup(), tag.GetElement());
-      size_t index = dicomPath.GetPrefixIndex(i);
-      tmp << tag2.GetMainTagsName() << " (" << tag2.Format() << ") [" << index << "] / ";
-    }
-    const OrthancPlugins::DicomTag& tag = dicomPath.GetFinalTag();
-    Orthanc::DicomTag tag2(tag.GetGroup(), tag.GetElement());
-    tmp << tag2.GetMainTagsName() << " (" << tag2.Format() << ")";
-    s = tmp.str();
-  }
-
-  std::ostream& operator<<(std::ostream& s, const OrthancPlugins::DicomPath& dicomPath)
-  {
-    std::string tmp;
-    DicomPathToString(tmp, dicomPath);
-    s << tmp;
-    return s;
-  }
-
-
-  DicomStructureSet2::DicomStructureSet2()
-  {
-
-  }
-
-
-  DicomStructureSet2::~DicomStructureSet2()
-  {
-
-  }
-
-  void DicomStructureSet2::SetContents(const OrthancPlugins::FullOrthancDataset& tags)
-  {
-    FillStructuresFromDataset(tags);
-    ComputeDependentProperties();
-  }
-
-  void DicomStructureSet2::ComputeDependentProperties()
-  {
-    for (size_t i = 0; i < structures_.size(); ++i)
-    {
-      structures_[i].ComputeDependentProperties();
-    }
-  }
-
-  void DicomStructureSet2::FillStructuresFromDataset(const OrthancPlugins::FullOrthancDataset& tags)
-  {
-    OrthancPlugins::DicomDatasetReader reader(tags);
-
-    // a few sanity checks
-    size_t count = 0, tmp = 0;
-
-    //  DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE (0x3006, 0x0080);
-    //  DICOM_TAG_ROI_CONTOUR_SEQUENCE         (0x3006, 0x0039);
-    //  DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE   (0x3006, 0x0020);
-    if (!tags.GetSequenceSize(count, DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE) ||
-      !tags.GetSequenceSize(tmp, DICOM_TAG_ROI_CONTOUR_SEQUENCE) ||
-      tmp != count ||
-      !tags.GetSequenceSize(tmp, DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE) ||
-      tmp != count)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    // let's now parse the structures stored in the dicom file
-    //  DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE  (0x3006, 0x0080)
-    //  DICOM_TAG_RT_ROI_INTERPRETED_TYPE       (0x3006, 0x00a4)
-    //  DICOM_TAG_ROI_DISPLAY_COLOR             (0x3006, 0x002a)
-    //  DICOM_TAG_ROI_NAME                      (0x3006, 0x0026)
-    structures_.resize(count);
-    for (size_t i = 0; i < count; i++)
-    {
-      // (0x3006, 0x0080)[i]/(0x3006, 0x00a4)
-      structures_[i].interpretation_ = reader.GetStringValue
-      (OrthancPlugins::DicomPath(DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE, i,
-        DICOM_TAG_RT_ROI_INTERPRETED_TYPE),
-        "No interpretation");
-
-      // (0x3006, 0x0020)[i]/(0x3006, 0x0026)
-      structures_[i].name_ = reader.GetStringValue
-      (OrthancPlugins::DicomPath(DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE, i,
-        DICOM_TAG_ROI_NAME),
-        "No name");
-
-      Vector color;
-      // (0x3006, 0x0039)[i]/(0x3006, 0x002a)
-      if (ReadDicomToVector(color, tags, OrthancPlugins::DicomPath(
-        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i, DICOM_TAG_ROI_DISPLAY_COLOR)) 
-        && color.size() == 3)
-      {
-        structures_[i].red_   = ConvertAndClipToByte(color[0]);
-        structures_[i].green_ = ConvertAndClipToByte(color[1]);
-        structures_[i].blue_  = ConvertAndClipToByte(color[2]);
-      }
-      else
-      {
-        structures_[i].red_ = 255;
-        structures_[i].green_ = 0;
-        structures_[i].blue_ = 0;
-      }
-
-      size_t countSlices;
-      //  DICOM_TAG_ROI_CONTOUR_SEQUENCE          (0x3006, 0x0039);
-      //  DICOM_TAG_CONTOUR_SEQUENCE              (0x3006, 0x0040);
-      if (!tags.GetSequenceSize(countSlices, OrthancPlugins::DicomPath(
-        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i, DICOM_TAG_CONTOUR_SEQUENCE)))
-      {
-        LOG(WARNING) << "DicomStructureSet2::SetContents | structure \"" << structures_[i].name_ << "\" has no slices!";
-        countSlices = 0;
-      }
-
-      LOG(INFO) << "New RT structure: \"" << structures_[i].name_
-        << "\" with interpretation \"" << structures_[i].interpretation_
-        << "\" containing " << countSlices << " slices (color: "
-        << static_cast<int>(structures_[i].red_) << ","
-        << static_cast<int>(structures_[i].green_) << ","
-        << static_cast<int>(structures_[i].blue_) << ")";
-
-      // These temporary variables avoid allocating many vectors in the loop below
-      
-      // (0x3006, 0x0039)[i]/(0x3006, 0x0040)[0]/(0x3006, 0x0046)
-      OrthancPlugins::DicomPath countPointsPath(
-        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-        DICOM_TAG_CONTOUR_SEQUENCE, 0,
-        DICOM_TAG_NUMBER_OF_CONTOUR_POINTS);
-
-      OrthancPlugins::DicomPath geometricTypePath(
-        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-        DICOM_TAG_CONTOUR_SEQUENCE, 0,
-        DICOM_TAG_CONTOUR_GEOMETRIC_TYPE);
-
-      OrthancPlugins::DicomPath imageSequencePath(
-        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-        DICOM_TAG_CONTOUR_SEQUENCE, 0,
-        DICOM_TAG_CONTOUR_IMAGE_SEQUENCE);
-
-      // (3006,0039)[i] / (0x3006, 0x0040)[0] / (0x3006, 0x0016)[0] / (0x0008, 0x1155)
-      OrthancPlugins::DicomPath referencedInstancePath(
-        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-        DICOM_TAG_CONTOUR_SEQUENCE, 0,
-        DICOM_TAG_CONTOUR_IMAGE_SEQUENCE, 0,
-        DICOM_TAG_REFERENCED_SOP_INSTANCE_UID);
-
-      OrthancPlugins::DicomPath contourDataPath(
-        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-        DICOM_TAG_CONTOUR_SEQUENCE, 0,
-        DICOM_TAG_CONTOUR_DATA);
-
-      for (size_t j = 0; j < countSlices; j++)
-      {
-        unsigned int countPoints = 0;
-
-        countPointsPath.SetPrefixIndex(1, j);
-        if (!reader.GetUnsignedIntegerValue(countPoints, countPointsPath))
-        {
-          std::string s;
-          DicomPathToString(s, countPointsPath);
-          LOG(ERROR) << "Dicom path " << s << " is not valid (should contain an unsigned integer)";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-        }
-
-        //LOG(INFO) << "Parsing slice containing " << countPoints << " vertices";
-
-        geometricTypePath.SetPrefixIndex(1, j);
-        std::string type = reader.GetMandatoryStringValue(geometricTypePath);
-        if (type != "CLOSED_PLANAR")
-        {
-          // TODO: support points!!
-          LOG(WARNING) << "Ignoring contour with geometry type: " << type;
-          continue;
-        }
-
-        size_t size = 0;
-
-        imageSequencePath.SetPrefixIndex(1, j);
-        if (!tags.GetSequenceSize(size, imageSequencePath) || size != 1)
-        {
-          LOG(ERROR) << "The ContourImageSequence sequence (tag 3006,0016) must be present and contain one entry.";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-
-        referencedInstancePath.SetPrefixIndex(1, j);
-        std::string sopInstanceUid = reader.GetMandatoryStringValue(referencedInstancePath);
-
-        contourDataPath.SetPrefixIndex(1, j);
-        std::string slicesData = reader.GetMandatoryStringValue(contourDataPath);
-
-        Vector points;
-        if (!LinearAlgebra::ParseVector(points, slicesData) ||
-          points.size() != 3 * countPoints)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-        }
-
-        // seen in real world
-        if (Orthanc::Toolbox::StripSpaces(sopInstanceUid) == "")
-        {
-          LOG(ERROR) << "WARNING. The following Dicom tag (Referenced SOP Instance UID) contains an empty value : // (3006,0039)[" << i << "] / (0x3006, 0x0040)[0] / (0x3006, 0x0016)[0] / (0x0008, 0x1155)";
-        }
-
-        DicomStructurePolygon2 polygon(sopInstanceUid,type);
-        polygon.Reserve(countPoints);
-
-        for (size_t k = 0; k < countPoints; k++)
-        {
-          Vector v(3);
-          v[0] = points[3 * k];
-          v[1] = points[3 * k + 1];
-          v[2] = points[3 * k + 2];
-          polygon.AddPoint(v);
-        }
-        structures_[i].AddPolygon(polygon);
-      }
-    }
-  }
-
-
-  void DicomStructureSet2::Clear()
-  {
-    structures_.clear();
-  }
-
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
--- a/Framework/Toolbox/DicomStructureSet2.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#include "DicomStructure2.h"
-#include "CoordinateSystem3D.h"
-#include "Extent2D.h"
-#include "../Scene2D/Color.h"
-
-#include <FullOrthancDataset.h>
-
-#include <list>
-
-namespace OrthancStone
-{
-  class DicomStructureSet2 : public boost::noncopyable
-  {
-  public:
-    DicomStructureSet2();
-    ~DicomStructureSet2();
-   
-    void SetContents(const OrthancPlugins::FullOrthancDataset& tags);
-
-    size_t GetStructuresCount() const
-    {
-      return structures_.size();
-    }
-
-    void Clear();
-
-    const DicomStructure2& GetStructure(size_t i) const
-    {
-      // at() is like []() but with range check
-      return structures_.at(i);
-    }
-
-    /** Internal use only */
-    void FillStructuresFromDataset(const OrthancPlugins::FullOrthancDataset& tags);
-
-    /** Internal use only */
-    void ComputeDependentProperties();
-
-    /** Internal use only */
-    std::vector<DicomStructure2> structures_;
-  };
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-
--- a/Framework/Toolbox/DicomStructureSetUtils.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,276 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "DicomStructureSetUtils.h"
-
-namespace OrthancStone
-{
-
-#if 0
-  void DicomStructure2::PartitionRectangleList(std::vector< std::vector<size_t> > & sets, const std::vector<RtStructRectanglesInSlab> slabCuts)
-  {
-    // map position ( <slabIndex,rectIndex> )--> disjoint set index
-    std::map<std::pair<size_t, size_t>, size_t> posToIndex;
-
-    // disjoint set index --> position
-    std::map<size_t, std::pair<size_t, size_t> > indexToPos;
-
-    size_t nextIndex = 0;
-    for (size_t i = 0; i < slabCuts.size(); ++i)
-    {
-      for (size_t j = 0; j < slabCuts[i].size(); ++j)
-      {
-        std::pair<size_t, size_t> pos(i, j);
-        posToIndex<pos> = nextIndex;
-        indexToPos<nextIndex> = pos;
-      }
-    }
-    // nextIndex is now the total rectangle count
-    DisjointDataSet ds(nextIndex);
-
-    // we loop on all slabs (except the last one) and we connect all rectangles
-    if (slabCuts.size() < 2)
-    {
-#error write special case
-    }
-    else
-    {
-      for (size_t i = 0; i < slabCuts.size() - 1; ++i)
-      {
-        for (size_t j = 0; j < slabCuts[i].size(); ++j)
-        {
-          const RtStructRectangleInSlab& r1 = slabCuts[i][j];
-          const size_t r1i = posToIndex(std::pair<size_t, size_t>(i, j));
-          for (size_t k = 0; k < slabCuts[i + 1].size(); ++k)
-          {
-            const RtStructRectangleInSlab& r2 = slabCuts[i + 1][k];
-            const size_t r2i = posToIndex(std::pair<size_t, size_t>(i, j));
-            // rect.xmin <= rectBottom.xmax && rectBottom.xmin <= rect.xmax
-            if ((r1.xmin <= r2.xmax) && (r2.xmin <= r1.xmax))
-            {
-#error now go!
-            }
-
-          }
-        }
-      }
-    }
-#endif
-
-    /*
-
-      compute list of segments :
-
-      numberOfRectsFromHereOn = 0
-      possibleNext = {in_k,in_kplus1}
-
-      for all boundaries:
-        - we create a vertical segment and we push it
-        - if boundary is a start, numberOfRectsFromHereOn += 1.
-          - if we switch from 0 to 1, we start a segment
-          - if we switch from 1 to 2, we end the current segment and we record it
-        - if boundary is an end, numberOfRectsFromHereOn -= 1.
-          - if we switch from 1 to 0, we end the current segment and we record it
-          - if we switch from 2 to 1, we start a segment
-    */
-
-    // static
-    void AddSlabBoundaries(
-      std::vector<std::pair<double, RectangleBoundaryKind> > & boundaries,
-      const std::vector<RtStructRectanglesInSlab> & slabCuts, size_t iSlab)
-    {
-      if (iSlab < slabCuts.size())
-      {
-        const RtStructRectanglesInSlab& slab = slabCuts[iSlab];
-        for (size_t iRect = 0; iRect < slab.size(); ++iRect)
-        {
-          const RtStructRectangleInSlab& rect = slab[iRect];
-          {
-            std::pair<double, RectangleBoundaryKind> boundary(rect.xmin, RectangleBoundaryKind_Start);
-            boundaries.insert(std::lower_bound(boundaries.begin(), boundaries.end(), boundary), boundary);
-          }
-          {
-            std::pair<double, RectangleBoundaryKind> boundary(rect.xmax, RectangleBoundaryKind_End);
-            boundaries.insert(std::lower_bound(boundaries.begin(), boundaries.end(), boundary), boundary);
-          }
-        }
-      }
-    }
-
-    // static
-    void ProcessBoundaryList(
-      std::vector< std::pair<Point2D, Point2D> > & segments,
-      const std::vector<std::pair<double, RectangleBoundaryKind> > & boundaries,
-      double y)
-    {
-      Point2D start;
-      Point2D end;
-      int curNumberOfSegments = 0; // we count the number of segments. we only draw if it is 1 (not 0 or 2)
-      for (size_t i = 0; i < boundaries.size(); ++i)
-      {
-        switch (boundaries[i].second)
-        {
-        case RectangleBoundaryKind_Start:
-          curNumberOfSegments += 1;
-          switch (curNumberOfSegments)
-          {
-          case 0:
-            assert(false);
-            break;
-          case 1:
-            // a new segment has begun!
-            start.x = boundaries[i].first;
-            start.y = y;
-            break;
-          case 2:
-            // an extra segment has begun : stop the current one (we don't draw overlaps)
-            end.x = boundaries[i].first;
-            end.y = y;
-            segments.push_back(std::pair<Point2D, Point2D>(start, end));
-            break;
-          default:
-            //assert(false); // seen IRL ! 
-            break;
-          }
-          break;
-        case RectangleBoundaryKind_End:
-          curNumberOfSegments -= 1;
-          switch (curNumberOfSegments)
-          {
-          case 0:
-            // a lone (thus active) segment has ended.
-            end.x = boundaries[i].first;
-            end.y = y;
-            segments.push_back(std::pair<Point2D, Point2D>(start, end));
-            break;
-          case 1:
-            // an extra segment has ended : start a new one one
-            start.x = boundaries[i].first;
-            start.y = y;
-            break;
-          default:
-            // this should not happen!
-            //assert(false);
-            break;
-          }
-          break;
-        default:
-          assert(false);
-          break;
-        }
-      }
-    }
-
-#if 0
-    void ConvertListOfSlabsToSegments(
-      std::vector< std::pair<Point2D, Point2D> >& segments,
-      const std::vector<RtStructRectanglesInSlab>& slabCuts,
-      const size_t totalRectCount)
-    {
-#error to delete 
-    }
-#else
-    // See https://www.dropbox.com/s/bllco6q8aazxk44/2019-09-18-rtstruct-cut-algorithm-rect-merge.png
-    void ConvertListOfSlabsToSegments(
-      std::vector< std::pair<Point2D, Point2D> > & segments,
-      const std::vector<RtStructRectanglesInSlab> & slabCuts,
-      const size_t totalRectCount)
-    {
-      if (slabCuts.size() == 0)
-        return;
-
-      if (totalRectCount > 0)
-        segments.reserve(4 * totalRectCount); // worst case, but common.
-
-      /*
-      VERTICAL
-      */
-      for (size_t iSlab = 0; iSlab < slabCuts.size(); ++iSlab)
-      {
-        for (size_t iRect = 0; iRect < slabCuts[iSlab].size(); ++iRect)
-        {
-          const RtStructRectangleInSlab& rect = slabCuts[iSlab][iRect];
-          {
-            Point2D p1(rect.xmin, rect.ymin);
-            Point2D p2(rect.xmin, rect.ymax);
-            segments.push_back(std::pair<Point2D, Point2D>(p1, p2));
-          }
-          {
-            Point2D p1(rect.xmax, rect.ymin);
-            Point2D p2(rect.xmax, rect.ymax);
-            segments.push_back(std::pair<Point2D, Point2D>(p1, p2));
-          }
-        }
-      }
-
-      /*
-      HORIZONTAL
-      */
-
-      // if we have N slabs, we have N+1 potential vertical positions for horizontal segments
-      // - one for top of slab 0
-      // - N-1 for all positions between two slabs
-      // - one for bottom of slab N-1
-
-      // this adds all the horizontal segments for the tops of 3the rectangles
-      // in row 0
-      if (slabCuts[0].size() > 0)
-      {
-        std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-        AddSlabBoundaries(boundaries, slabCuts, 0);
-
-        ProcessBoundaryList(segments, boundaries, slabCuts[0][0].ymin);
-      }
-
-      // this adds all the horizontal segments belonging to two slabs
-      for (size_t iSlab = 0; iSlab < slabCuts.size() - 1; ++iSlab)
-      {
-        std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-        AddSlabBoundaries(boundaries, slabCuts, iSlab);
-        AddSlabBoundaries(boundaries, slabCuts, iSlab + 1);
-        double curY = 0;
-        if (slabCuts[iSlab].size() > 0)
-        {
-          curY = slabCuts[iSlab][0].ymax;
-          ProcessBoundaryList(segments, boundaries, curY);
-        }
-        else if (slabCuts[iSlab + 1].size() > 0)
-        {
-          curY = slabCuts[iSlab + 1][0].ymin;
-          ProcessBoundaryList(segments, boundaries, curY);
-        }
-        else
-        {
-          // nothing to do!! : both slab lists are empty!
-        }
-      }
-
-      // this adds all the horizontal segments for the BOTTOM of the rectangles
-      // on last row 
-      if (slabCuts[slabCuts.size() - 1].size() > 0)
-      {
-        std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-        AddSlabBoundaries(boundaries, slabCuts, slabCuts.size() - 1);
-
-        ProcessBoundaryList(segments, boundaries, slabCuts[slabCuts.size() - 1][0].ymax);
-      }
-    }
-#endif
-  }
--- a/Framework/Toolbox/DicomStructureSetUtils.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include <vector>
-#include <utility>
-
-#include "../Toolbox/LinearAlgebra.h"
-
-namespace OrthancStone
-{
-#if 0
-  struct Point3D
-  {
-    Point3D(double x, double y, double z) : x(x), y(y), z(z) {}
-    Point3D() : x(0), y(0), z(0) {}
-    double x, y, z;
-  };
-
-  struct Vector3D
-  {
-    Vector3D(double x, double y, double z) : x(x), y(y), z(z) {}
-    Vector3D() : x(0), y(0), z(0) {}
-    double x, y, z;
-  };
-#else
-  typedef Vector Vector3D;
-  typedef Vector Point3D;
-#endif
-
-  struct Point2D
-  {
-    Point2D(double x, double y) : x(x), y(y) {}
-    Point2D() : x(0), y(0) {}
-    double x, y;
-  };
-
-
-  /** Internal */
-  struct RtStructRectangleInSlab
-  {
-    double xmin, xmax, ymin, ymax;
-  };
-  typedef std::vector<RtStructRectangleInSlab> RtStructRectanglesInSlab;
-
-  enum RectangleBoundaryKind
-  {
-    RectangleBoundaryKind_Start,
-    RectangleBoundaryKind_End
-  };
-
-#if 0
-  /** Internal */
-  void PartitionRectangleList(std::vector< std::vector<size_t> > & sets, const std::vector<RtStructRectanglesInSlab>);
-#endif
-
-  /** Internal */
-  void ConvertListOfSlabsToSegments(std::vector< std::pair<Point2D, Point2D> >& segments, const std::vector<RtStructRectanglesInSlab>& slabCuts, const size_t totalRectCount);
-
-  /** Internal */
-  void AddSlabBoundaries(std::vector<std::pair<double, RectangleBoundaryKind> >& boundaries, const std::vector<RtStructRectanglesInSlab>& slabCuts, size_t iSlab);
-
-  /** Internal */
-  void ProcessBoundaryList(std::vector< std::pair<Point2D, Point2D> >& segments, const std::vector<std::pair<double, RectangleBoundaryKind> >& boundaries, double y);
-
-}
--- a/Framework/Toolbox/DisjointDataSet.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include <vector> 
-
-#include "../StoneException.h"
-
-namespace OrthancStone
-{
-  class DisjointDataSet
-  {
-  public:
-    DisjointDataSet(size_t itemCount) :
-      parents_(itemCount),
-      ranks_(itemCount)
-    {
-      for (size_t index = 0; index < parents_.size(); index++)
-      {
-        SetParent(index,index);
-        ranks_[index] = 1;
-      }
-    }
-
-    size_t Find(size_t item)
-    {
-      /*
-      If parents_[i] == i, it means i is representative of a set.
-      Otherwise, we go up the tree...
-      */
-      if (GetParent(item) != item)
-      {
-        // if item is not a top item (representative of its set),
-        // we use path compression to improve future lookups 
-        // see: https://en.wikipedia.org/wiki/Disjoint-set_data_structure#Path_compression
-        SetParent(item, Find(parents_[item]));
-      }
-
-      // now that paths have been compressed, we are positively certain
-      // that item's parent is a set ("X is a set" means that X is the 
-      // representative of a set)
-      return GetParent(item);
-    }
-
-    /*
-    This merge the two sets that contains itemA and itemB
-    */
-    void Union(size_t itemA, size_t itemB)
-    {
-      // Find current sets of x and y 
-      size_t setA = Find(itemA);
-      size_t setB = Find(itemB);
-
-      // if setA == setB, it means they are already in the same set and 
-      // do not need to be merged!
-      if (setA != setB)
-      {
-        // we need to merge the sets, which means that the trees representing
-        // the sets needs to be merged (there must be a single top parent to 
-        // all the items originally belonging to setA and setB must be the same)
-
-        // since the algorithm speed is inversely proportional to the tree
-        // height (the rank), we need to combine trees in a way that 
-        // minimizes this rank. See "Union by rank" at 
-        // https://en.wikipedia.org/wiki/Disjoint-set_data_structure#by_rank
-        if (GetRank(setA) < GetRank(setB))
-        {
-          SetParent(setA, setB);
-        }
-        else if (GetRank(setA) > GetRank(setB))
-        {
-          SetParent(setB, setA);
-        }
-        else
-        {
-          SetParent(setB, setA);
-          BumpRank(setA);
-          // the trees had the same height but we attached the whole of setB
-          // under setA (under its parent), so the resulting tree is now 
-          // 1 higher. setB is NOT representative of a set anymore.
-        }
-      }
-    }
-
-  private:
-    size_t GetRank(size_t i) const
-    {
-      ORTHANC_ASSERT(i < ranks_.size());
-      ORTHANC_ASSERT(ranks_.size() == parents_.size());
-      return ranks_[i];
-    }
-
-    size_t GetParent(size_t i) const
-    {
-      ORTHANC_ASSERT(i < parents_.size());
-      ORTHANC_ASSERT(ranks_.size() == parents_.size());
-      return parents_[i];
-    }
-
-    void SetParent(size_t i, size_t parent)
-    {
-      ORTHANC_ASSERT(i < parents_.size());
-      ORTHANC_ASSERT(ranks_.size() == parents_.size());
-      parents_[i] = parent;
-    }
-
-    void BumpRank(size_t i)
-    {
-      ORTHANC_ASSERT(i < ranks_.size());
-      ORTHANC_ASSERT(ranks_.size() == parents_.size());
-      ranks_[i] = ranks_[i] + 1u;
-    }
-
-    /*
-    This vector contains the direct parent of each item
-    */
-    std::vector<size_t> parents_;
-
-    /*
-    This vector contains the tree height of each set. The values in the
-    vector for non-representative items is UNDEFINED!
-    */
-    std::vector<size_t> ranks_;
-  };
-
-}
--- a/Framework/Toolbox/DynamicBitmap.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DynamicBitmap.h"
-
-#include <Images/Image.h>
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  DynamicBitmap::DynamicBitmap(const Orthanc::ImageAccessor& bitmap) :
-    bitmap_(Orthanc::Image::Clone(bitmap))
-  {
-    if (bitmap_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-}
--- a/Framework/Toolbox/DynamicBitmap.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <Compatibility.h>
-#include <IDynamicObject.h>
-#include <Images/ImageAccessor.h>
-
-#include <memory>
-
-namespace OrthancStone
-{
-  class DynamicBitmap : public Orthanc::IDynamicObject
-  {
-  private:
-    std::unique_ptr<Orthanc::ImageAccessor>  bitmap_;
-
-  public:
-    DynamicBitmap(const Orthanc::ImageAccessor& bitmap);
-
-    const Orthanc::ImageAccessor& GetBitmap() const
-    {
-      return *bitmap_;
-    }
-  };
-}
--- a/Framework/Toolbox/Extent2D.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "Extent2D.h"
-
-#include <algorithm>
-#include <cassert>
-#include <limits>
-
-namespace OrthancStone
-{
-  Extent2D::Extent2D(double x1,
-                     double y1,
-                     double x2,
-                     double y2) :
-    empty_(false),
-    x1_(x1),
-    y1_(y1),
-    x2_(x2),
-    y2_(y2)
-  {
-    if (x1_ > x2_)
-    {
-      std::swap(x1_, x2_);
-    }
-
-    if (y1_ > y2_)
-    {
-      std::swap(y1_, y2_);
-    }
-  }
-
-
-  void Extent2D::Reset()
-  {
-    empty_ = true;
-    x1_ = 0;
-    y1_ = 0;
-    x2_ = 0;
-    y2_ = 0;      
-  }
-
-  void Extent2D::AddPoint(double x,
-                          double y)
-  {
-    if (empty_)
-    {
-      x1_ = x;
-      y1_ = y;
-      x2_ = x;
-      y2_ = y;
-      empty_ = false;
-    }
-    else
-    {
-      x1_ = std::min(x1_, x);
-      y1_ = std::min(y1_, y);
-      x2_ = std::max(x2_, x);
-      y2_ = std::max(y2_, y);
-    }
-
-    assert(x1_ <= x2_ &&
-           y1_ <= y2_);    // This is the invariant of the structure
-  }
-
-
-  void Extent2D::Union(const Extent2D& other)
-  {
-    if (other.empty_)
-    {
-      return;
-    }
-
-    if (empty_)
-    {
-      *this = other;
-      return;
-    }
-
-    assert(!empty_);
-
-    x1_ = std::min(x1_, other.x1_);
-    y1_ = std::min(y1_, other.y1_);
-    x2_ = std::max(x2_, other.x2_);
-    y2_ = std::max(y2_, other.y2_);
-
-    assert(x1_ <= x2_ &&
-           y1_ <= y2_);    // This is the invariant of the structure
-  }
-
-
-  bool Extent2D::IsEmpty() const
-  {
-    if (empty_)
-    {
-      return true;
-    }
-    else
-    {
-      assert(x1_ <= x2_ &&
-             y1_ <= y2_);
-      return (x2_ <= x1_ + 10 * std::numeric_limits<double>::epsilon() ||
-              y2_ <= y1_ + 10 * std::numeric_limits<double>::epsilon());
-    }
-  }
-
-
-  bool Extent2D::Contains(double x,
-                          double y) const
-  {
-    if (empty_)
-    {
-      return false;
-    }
-    else
-    {
-      return (x >= x1_ && x <= x2_ &&
-              y >= y1_ && y <= y2_);
-    }
-  }
-}
--- a/Framework/Toolbox/Extent2D.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-namespace OrthancStone
-{
-  class Extent2D
-  {
-  private:
-    bool    empty_;
-    double  x1_;
-    double  y1_;
-    double  x2_;
-    double  y2_;
-
-  public:
-    Extent2D()
-    {
-      Reset();
-    }
-
-    Extent2D(double x1,
-             double y1,
-             double x2,
-             double y2);
-
-    void Reset();
-
-    void AddPoint(double x,
-                  double y);
-
-    void Union(const Extent2D& other);
-
-    bool IsEmpty() const;
-
-    double GetX1() const
-    {
-      return x1_;
-    }
-
-    double GetY1() const
-    {
-      return y1_;
-    }
-
-    double GetX2() const
-    {
-      return x2_;
-    }
-
-    double GetY2() const
-    {
-      return y2_;
-    }
-
-    double GetWidth() const
-    {
-      return x2_ - x1_;
-    }
-
-    double GetHeight() const
-    {
-      return y2_ - y1_;
-    }
-
-    double GetCenterX() const
-    {
-      return (x1_ + x2_) / 2.0;
-    }
-
-    double GetCenterY() const
-    {
-      return (y1_ + y2_) / 2.0;
-    }
-
-    bool Contains(double x,
-                  double y) const;
-  };
-}
--- a/Framework/Toolbox/FiniteProjectiveCamera.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,461 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "FiniteProjectiveCamera.h"
-
-#include "GeometryToolbox.h"
-#include "SubpixelReader.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-
-namespace OrthancStone
-{
-  void FiniteProjectiveCamera::ComputeMInverse()
-  {
-    using namespace boost::numeric::ublas;
-
-    // inv(M) = inv(K * R) = inv(R) * inv(K) = R' * inv(K). This
-    // matrix is always invertible, by definition of finite
-    // projective cameras (page 157).
-    Matrix kinv;
-    LinearAlgebra::InvertUpperTriangularMatrix(kinv, k_);
-    minv_ = prod(trans(r_), kinv);
-  }
-
-    
-  void FiniteProjectiveCamera::Setup(const Matrix& k,
-                                     const Matrix& r,
-                                     const Vector& c)
-  {
-    if (k.size1() != 3 ||
-        k.size2() != 3 ||
-        !LinearAlgebra::IsCloseToZero(k(1, 0)) ||
-        !LinearAlgebra::IsCloseToZero(k(2, 0)) ||
-        !LinearAlgebra::IsCloseToZero(k(2, 1)))
-    {
-      LOG(ERROR) << "Invalid intrinsic parameters";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (r.size1() != 3 ||
-        r.size2() != 3)
-    {
-      LOG(ERROR) << "Invalid size for a 3D rotation matrix";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (!LinearAlgebra::IsRotationMatrix(r, 100.0 * std::numeric_limits<float>::epsilon()))
-    {
-      LOG(ERROR) << "Invalid rotation matrix";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (c.size() != 3)
-    {
-      LOG(ERROR) << "Invalid camera center";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    k_ = k;
-    r_ = r;
-    c_ = c;
-
-    ComputeMInverse();
-      
-    Matrix tmp = LinearAlgebra::IdentityMatrix(3);
-    tmp.resize(3, 4);
-    tmp(0, 3) = -c[0];
-    tmp(1, 3) = -c[1];
-    tmp(2, 3) = -c[2];
-
-    p_ = LinearAlgebra::Product(k, r, tmp);
-
-    assert(p_.size1() == 3 &&
-           p_.size2() == 4);
-
-  }
-
-    
-  void FiniteProjectiveCamera::Setup(const Matrix& p)
-  {
-    if (p.size1() != 3 ||
-        p.size2() != 4)
-    {
-      LOG(ERROR) << "Invalid camera matrix";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    p_ = p;
-
-    // M is the left 3x3 submatrix of "P"
-    Matrix m = p;
-    m.resize(3, 3);
-
-    // p4 is the last column of "P"
-    Vector p4(3);
-    p4[0] = p(0, 3);
-    p4[1] = p(1, 3);
-    p4[2] = p(2, 3);
-
-    // The RQ decomposition is explained on page 157
-    LinearAlgebra::RQDecomposition3x3(k_, r_, m);
-    ComputeMInverse();
-
-    c_ = LinearAlgebra::Product(-minv_, p4);
-  }
-
-
-  FiniteProjectiveCamera::FiniteProjectiveCamera(const double k[9],
-                                                 const double r[9],
-                                                 const double c[3])
-  {
-    Matrix kk, rr;
-    Vector cc;
-
-    LinearAlgebra::FillMatrix(kk, 3, 3, k);
-    LinearAlgebra::FillMatrix(rr, 3, 3, r);
-    LinearAlgebra::FillVector(cc, 3, c);
-
-    Setup(kk, rr, cc);
-  }
-
-
-  FiniteProjectiveCamera::FiniteProjectiveCamera(const double p[12])
-  {
-    Matrix pp;
-    LinearAlgebra::FillMatrix(pp, 3, 4, p);
-    Setup(pp);
-  }
-
-
-  Vector FiniteProjectiveCamera::GetRayDirection(double x,
-                                                 double y) const
-  {
-    // This derives from Equation (6.14) on page 162, taking "mu =
-    // 1" and noticing that "-inv(M)*p4" corresponds to the camera
-    // center in finite projective cameras
-
-    // The (x,y) coordinates on the imaged plane, as an homogeneous vector
-    Vector xx(3);
-    xx[0] = x;
-    xx[1] = y;
-    xx[2] = 1.0;
-
-    return boost::numeric::ublas::prod(minv_, xx);
-  }
-
-
-
-  static Vector SetupApply(const Vector& v,
-                           bool infinityAllowed)
-  {
-    if (v.size() == 3)
-    {
-      // Vector "v" in non-homogeneous coordinates, add the homogeneous component
-      Vector vv;
-      LinearAlgebra::AssignVector(vv, v[0], v[1], v[2], 1.0);
-      return vv;
-    }
-    else if (v.size() == 4)
-    {
-      // Vector "v" is already in homogeneous coordinates
-
-      if (!infinityAllowed &&
-          LinearAlgebra::IsCloseToZero(v[3]))
-      {
-        LOG(ERROR) << "Cannot apply a finite projective camera to a "
-                   << "point at infinity with this method";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      return v;
-    }
-    else
-    {
-      LOG(ERROR) << "The input vector must represent a point in 3D";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-  
-  void FiniteProjectiveCamera::ApplyFinite(double& x,
-                                           double& y,
-                                           const Vector& v) const
-  {
-    Vector p = boost::numeric::ublas::prod(p_, SetupApply(v, false));    
-
-    if (LinearAlgebra::IsCloseToZero(p[2]))
-    {
-      // Point at infinity: Should not happen with a finite input point
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-    else
-    {
-      x = p[0] / p[2];
-      y = p[1] / p[2];
-    }
-  }
-
-  
-  Vector FiniteProjectiveCamera::ApplyGeneral(const Vector& v) const
-  {
-    return boost::numeric::ublas::prod(p_, SetupApply(v, true));
-  }
-
-
-  static Vector AddHomogeneousCoordinate(const Vector& p)
-  {
-    assert(p.size() == 3);
-    return LinearAlgebra::CreateVector(p[0], p[1], p[2], 1);
-  }
-
-
-  FiniteProjectiveCamera::FiniteProjectiveCamera(const Vector& camera,
-                                                 const Vector& principalPoint,
-                                                 double angle,
-                                                 unsigned int imageWidth,
-                                                 unsigned int imageHeight,
-                                                 double pixelSpacingX,
-                                                 double pixelSpacingY)
-  {
-    if (camera.size() != 3 ||
-        principalPoint.size() != 3 ||
-        LinearAlgebra::IsCloseToZero(pixelSpacingX) ||
-        LinearAlgebra::IsCloseToZero(pixelSpacingY))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    
-    const double focal = boost::numeric::ublas::norm_2(camera - principalPoint);
-
-    if (LinearAlgebra::IsCloseToZero(focal))
-    {
-      LOG(ERROR) << "Camera lies on the image plane";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-      
-    Matrix a;
-    GeometryToolbox::AlignVectorsWithRotation(a, camera - principalPoint,
-                                              LinearAlgebra::CreateVector(0, 0, -1));
-
-    Matrix r = LinearAlgebra::Product(GeometryToolbox::CreateRotationMatrixAlongZ(angle), a);
-
-    Matrix k = LinearAlgebra::ZeroMatrix(3, 3);
-    k(0,0) = focal / pixelSpacingX;
-    k(1,1) = focal / pixelSpacingY;
-    k(0,2) = static_cast<double>(imageWidth) / 2.0;
-    k(1,2) = static_cast<double>(imageHeight) / 2.0;
-    k(2,2) = 1;
-
-    Setup(k, r, camera);
- 
-    {
-      // Sanity checks
-      Vector v1 = LinearAlgebra::Product(p_, AddHomogeneousCoordinate(camera));
-      Vector v2 = LinearAlgebra::Product(p_, AddHomogeneousCoordinate(principalPoint));
-
-      if (!LinearAlgebra::IsCloseToZero(v1[2]) ||   // Camera is mapped to singularity
-          LinearAlgebra::IsCloseToZero(v2[2]))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      // The principal point must be mapped to the center of the image
-      v2 /= v2[2];
-
-      if (!LinearAlgebra::IsNear(v2[0], static_cast<double>(imageWidth) / 2.0) ||
-          !LinearAlgebra::IsNear(v2[1], static_cast<double>(imageHeight) / 2.0))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-  }
-
-
-  template <Orthanc::PixelFormat TargetFormat,
-            Orthanc::PixelFormat SourceFormat,
-            bool MIP>
-  static void ApplyRaytracerInternal(Orthanc::ImageAccessor& target,
-                                     const FiniteProjectiveCamera& camera,
-                                     const ImageBuffer3D& source,
-                                     const VolumeImageGeometry& geometry,
-                                     VolumeProjection projection)
-  {
-    if (source.GetFormat() != SourceFormat ||
-        target.GetFormat() != TargetFormat ||
-        !std::numeric_limits<float>::is_iec559 ||
-        sizeof(float) != 4)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    LOG(WARNING) << "Input volume size: " << source.GetWidth() << "x"
-                 << source.GetHeight() << "x" << source.GetDepth();
-    LOG(WARNING) << "Input pixel format: " << Orthanc::EnumerationToString(source.GetFormat());
-    LOG(WARNING) << "Output image size: " << target.GetWidth() << "x" << target.GetHeight();
-    LOG(WARNING) << "Output pixel format: " << Orthanc::EnumerationToString(target.GetFormat());
-
-    const unsigned int slicesCount = geometry.GetProjectionDepth(projection);
-    const OrthancStone::Vector pixelSpacing = geometry.GetVoxelDimensions(projection);
-    const unsigned int targetWidth = target.GetWidth();
-    const unsigned int targetHeight = target.GetHeight();
-
-    Orthanc::Image accumulator(Orthanc::PixelFormat_Float32, targetWidth, targetHeight, false);
-    Orthanc::Image counter(Orthanc::PixelFormat_Grayscale16, targetWidth, targetHeight, false);
-    Orthanc::ImageProcessing::Set(accumulator, 0);
-    Orthanc::ImageProcessing::Set(counter, 0);
-
-    typedef SubpixelReader<SourceFormat, ImageInterpolation_Nearest>  SourceReader;
-    
-    for (unsigned int z = 0; z < slicesCount; z++)
-    {
-      LOG(INFO) << "Applying raytracer on slice: " << z << "/" << slicesCount;
-
-      OrthancStone::CoordinateSystem3D slice = geometry.GetProjectionSlice(projection, z);
-      OrthancStone::ImageBuffer3D::SliceReader sliceReader(source, projection, static_cast<unsigned int>(z));
-
-      SourceReader pixelReader(sliceReader.GetAccessor());
-      
-      for (unsigned int y = 0; y < targetHeight; y++)
-      {
-        float *qacc = reinterpret_cast<float*>(accumulator.GetRow(y));
-        uint16_t *qcount = reinterpret_cast<uint16_t*>(counter.GetRow(y));
-
-        for (unsigned int x = 0; x < targetWidth; x++)
-        {
-          // Backproject the ray originating from the center of the target pixel
-          OrthancStone::Vector direction = camera.GetRayDirection(static_cast<double>(x + 0.5),
-                                                                  static_cast<double>(y + 0.5));
-
-          // Compute the 3D intersection of the ray with the slice plane
-          OrthancStone::Vector p;
-          if (slice.IntersectLine(p, camera.GetCenter(), direction))
-          {
-            // Compute the 2D coordinates of the intersections, in slice coordinates
-            double ix, iy;
-            slice.ProjectPoint(ix, iy, p);
-
-            ix /= pixelSpacing[0];
-            iy /= pixelSpacing[1];
-
-            // Read and accumulate the value of the pixel
-            float pixel;
-            if (pixelReader.GetFloatValue(
-              pixel, static_cast<float>(ix), static_cast<float>(iy)))
-            {
-              if (MIP)
-              {
-                // MIP rendering
-                if (*qcount == 0)
-                {
-                  (*qacc) = pixel;
-                  (*qcount) = 1;
-                }
-                else if (pixel > *qacc)
-                {
-                  (*qacc) = pixel;
-                }
-              }
-              else
-              {
-                // Mean intensity
-                (*qacc) += pixel;
-                (*qcount) ++;
-              }
-            }
-          }
-
-          qacc++;
-          qcount++;
-        }
-      }
-    }
-
-
-    typedef Orthanc::PixelTraits<TargetFormat>  TargetTraits;
-
-    // "Flatten" the accumulator image to create the target image
-    for (unsigned int y = 0; y < targetHeight; y++)
-    {
-      const float *qacc = reinterpret_cast<const float*>(accumulator.GetConstRow(y));
-      const uint16_t *qcount = reinterpret_cast<const uint16_t*>(counter.GetConstRow(y));
-      typename TargetTraits::PixelType *p = reinterpret_cast<typename TargetTraits::PixelType*>(target.GetRow(y));
-
-      for (unsigned int x = 0; x < targetWidth; x++)
-      {
-        if (*qcount == 0)
-        {
-          TargetTraits::SetZero(*p);
-        }
-        else
-        {
-          TargetTraits::FloatToPixel(*p, *qacc / static_cast<float>(*qcount));
-        }
-        
-        p++;
-        qacc++;
-        qcount++;
-      }
-    }
-  }
-
-
-  Orthanc::ImageAccessor*
-  FiniteProjectiveCamera::ApplyRaytracer(const ImageBuffer3D& source,
-                                         const VolumeImageGeometry& geometry,
-                                         Orthanc::PixelFormat targetFormat,
-                                         unsigned int targetWidth,
-                                         unsigned int targetHeight,
-                                         bool mip) const
-  {
-    // TODO - We consider the axial projection of the volume, but we
-    // should choose the projection that is the "most perpendicular"
-    // to the line joining the camera center and the principal point
-    const VolumeProjection projection = VolumeProjection_Axial;
-
-    std::unique_ptr<Orthanc::ImageAccessor> target
-      (new Orthanc::Image(targetFormat, targetWidth, targetHeight, false));
-    
-    if (targetFormat == Orthanc::PixelFormat_Grayscale16 &&
-        source.GetFormat() == Orthanc::PixelFormat_Grayscale16 && mip)
-    {
-      ApplyRaytracerInternal<Orthanc::PixelFormat_Grayscale16,
-                             Orthanc::PixelFormat_Grayscale16, true>
-        (*target, *this, source, geometry, projection);
-    }
-    else if (targetFormat == Orthanc::PixelFormat_Grayscale16 &&
-             source.GetFormat() == Orthanc::PixelFormat_Grayscale16 && !mip)
-    {
-      ApplyRaytracerInternal<Orthanc::PixelFormat_Grayscale16,
-                             Orthanc::PixelFormat_Grayscale16, false>
-        (*target, *this, source, geometry, projection);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-
-    return target.release();
-  }
-}
--- a/Framework/Toolbox/FiniteProjectiveCamera.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "LinearAlgebra.h"
-#include "../Volumes/ImageBuffer3D.h"
-#include "../Volumes/VolumeImageGeometry.h"
-
-namespace OrthancStone
-{
-  // Reference: "Multiple View Geometry in Computer Vision (2nd Edition)"
-  class FiniteProjectiveCamera : public boost::noncopyable
-  {
-  private:
-    Matrix  p_;     // 3x4 matrix - Equation (6.11) - page 157
-    Matrix  k_;     // 3x3 matrix of intrinsic parameters - Equation (6.10) - page 157
-    Matrix  r_;     // 3x3 rotation matrix in 3D space
-    Vector  c_;     // 3x1 vector in 3D space corresponding to camera center
-    Matrix  minv_;  // Inverse of the M = P(1:3,1:3) submatrix
-
-    void ComputeMInverse();
-
-    void Setup(const Matrix& k,
-               const Matrix& r,
-               const Vector& c);
-
-    void Setup(const Matrix& p);
-
-  public:
-    FiniteProjectiveCamera(const Matrix& k,
-                           const Matrix& r,
-                           const Vector& c)
-    {
-      Setup(k, r, c);
-    }
-
-    FiniteProjectiveCamera(const Matrix& p)
-    {
-      Setup(p);
-    }
-
-    FiniteProjectiveCamera(const double k[9],
-                           const double r[9],
-                           const double c[3]);
-
-    FiniteProjectiveCamera(const double p[12]);
-
-    // Constructor that implements camera calibration
-    FiniteProjectiveCamera(const Vector& camera,
-                           const Vector& principalPoint,
-                           double angle,
-                           unsigned int imageWidth,
-                           unsigned int imageHeight,
-                           double pixelSpacingX,
-                           double pixelSpacingY);
-
-    const Matrix& GetMatrix() const
-    {
-      return p_;
-    }
-
-    const Matrix& GetRotation() const
-    {
-      return r_;
-    }
-
-    const Vector& GetCenter() const
-    {
-      return c_;
-    }
-
-    const Matrix& GetIntrinsicParameters() const
-    {
-      return k_;
-    }
-
-    // Computes the 3D vector that represents the direction from the
-    // camera center to the (x,y) imaged point
-    Vector GetRayDirection(double x,
-                           double y) const;
-
-    // Apply the camera to a 3D point "v" that is not at infinity. "v"
-    // can be encoded either as a non-homogeneous vector (3
-    // components), or as a homogeneous vector (4 components).
-    void ApplyFinite(double& x,
-                     double& y,
-                     const Vector& v) const;
-
-    // Apply the camera to a 3D point "v" that is possibly at
-    // infinity. The result is a 2D point in homogeneous coordinates.
-    Vector ApplyGeneral(const Vector& v) const;
-
-    Orthanc::ImageAccessor* ApplyRaytracer(const ImageBuffer3D& source,
-                                           const VolumeImageGeometry& geometry,
-                                           Orthanc::PixelFormat targetFormat,
-                                           unsigned int targetWidth,
-                                           unsigned int targetHeight,
-                                           bool mip) const;
-  };
-}
--- a/Framework/Toolbox/GenericToolbox.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GenericToolbox.h"
-
-#include <boost/regex.hpp>
-
-namespace OrthancStone
-{
-  namespace GenericToolbox
-  {
-    bool GetRgbaValuesFromString(uint8_t& red, uint8_t& green, uint8_t& blue, uint8_t& alpha, const char* text)
-    {
-      boost::regex pattern("\\s*rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)\\s*");
-
-      boost::cmatch what;
-
-      if (boost::regex_match(text, what, pattern))
-      {
-        {
-          std::string redStr = what[1];
-          bool ok = StringToInteger<uint8_t>(red, redStr);
-          if (!ok)
-            return false;
-        }
-        {
-          std::string greenStr = what[2];
-          bool ok = StringToInteger<uint8_t>(green, greenStr);
-          if (!ok)
-            return false;
-        }
-        {
-          std::string blueStr = what[3];
-          bool ok = StringToInteger<uint8_t>(blue, blueStr);
-          if (!ok)
-            return false;
-        }
-        {
-          std::string alphaStr = what[4];
-          bool ok = StringToInteger<uint8_t>(alpha, alphaStr);
-          if (!ok)
-            return false;
-        }
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-    bool GetRgbValuesFromString(uint8_t& red, uint8_t& green, uint8_t& blue, const char* text)
-    {
-      boost::regex pattern("\\s*rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)\\s*");
-
-      boost::cmatch what;
-
-      if (boost::regex_match(text, what, pattern))
-      {
-        {
-          std::string redStr = what[1];
-          bool ok = StringToInteger<uint8_t>(red, redStr);
-          if (!ok)
-            return false;
-        }
-        {
-          std::string greenStr = what[2];
-          bool ok = StringToInteger<uint8_t>(green, greenStr);
-          if (!ok)
-            return false;
-        }
-        {
-          std::string blueStr = what[3];
-          bool ok = StringToInteger<uint8_t>(blue, blueStr);
-          if (!ok)
-            return false;
-        }
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-
-  }
-}
--- a/Framework/Toolbox/GenericToolbox.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,308 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include <Compatibility.h>
-#include <OrthancException.h>
-
-#include <boost/shared_ptr.hpp>
-
-#include <string>
-#include <stdint.h>
-#include <math.h>
-
-#include <memory>
-
-namespace OrthancStone
-{
-  namespace GenericToolbox
-  {
-    /**
-    Fast floating point string validation.
-    No trimming applied, so the input must match regex 
-    /^[-]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$/
-    The following are allowed as edge cases: "" and "-"
-    */
-    inline bool LegitDoubleString(const char* text)
-    {
-      const char* p = text;
-      if(*p == '-')
-        p++;
-      size_t period = 0;
-      while(*p != 0)
-      {
-        if (*p >= '0' && *p <= '9')
-          ++p;
-        else if(*p == '.')
-        {
-          if(period > 0)
-            return false;
-          else
-            period++;
-        ++p;
-        }
-        else if (*p == 'e' || *p == 'E')
-        {
-          ++p;
-          if (*p == '-' || *p == '+')
-            ++p;
-          // "e+"/"E+" "e-"/"E-" or "e"/"E" must be followed by a number
-          if (!(*p >= '0' && *p <= '9'))
-            return false;
-
-          // these must be the last in the string
-          while(*p >= '0' && *p <= '9')
-            ++p;
-
-          return (*p == 0);
-        }
-        else
-        {
-          return false;
-        }
-      }
-      return true;
-    }
-
-    /**
-    Fast integer string validation.
-    No trimming applied, so the input must match regex /^-?[0-9]*$/
-    The following are allowed as edge cases: "" and "-"
-    */
-    inline bool LegitIntegerString(const char* text)
-    {
-      const char* p = text;
-      if (*p == '-')
-        p++;
-      while (*p != 0)
-      {
-        if (*p >= '0' && *p <= '9')
-          ++p;
-        else
-          return false;
-      }
-      return true;
-    }
-
-    /*
-      Fast string --> double conversion.
-      Must pass the LegitDoubleString test
-
-      String to doubles with at most 18 digits
-    */
-    inline bool StringToDouble(double& r, const char* text)
-    {
-      if(!LegitDoubleString(text))
-        return false;
-
-      static const double FRAC_FACTORS[] = 
-      {
-        1.0,
-        0.1,
-        0.01,
-        0.001,
-        0.0001,
-        0.00001,
-        0.000001,
-        0.0000001,
-        0.00000001,
-        0.000000001,
-        0.0000000001,
-        0.00000000001,
-        0.000000000001,
-        0.0000000000001,
-        0.00000000000001,
-        0.000000000000001,
-        0.0000000000000001,
-        0.00000000000000001,
-        0.000000000000000001,
-        0.0000000000000000001
-      };
-      const size_t FRAC_FACTORS_LEN = sizeof(FRAC_FACTORS)/sizeof(double);
-
-      r = 0.0;
-      double neg = 1.0;
-      const char* p = text;
-
-      if (*p == '-')
-      {
-        neg = -1.0;
-        ++p;
-      }
-      // 12345.67890
-      while (*p >= '0' && *p <= '9')
-      {
-          r = (r*10.0) + (*p - '0'); // 1 12 123 123 12345
-        ++p;
-      }
-      if (*p == '.')
-      {
-        double f = 0.0;
-        size_t n = 1;
-        ++p;
-        while (*p >= '0' && *p <= '9' && n < FRAC_FACTORS_LEN)
-        {
-          f += (*p - '0') * FRAC_FACTORS[n];
-          ++p;
-          ++n;
-        }
-        r += f;
-      }
-      r *= neg;
-
-      // skip the remaining numbers until we reach not-a-digit (either the 
-      // end of the string OR the scientific notation symbol)
-      while ((*p >= '0' && *p <= '9'))
-        ++p;
-
-      if (*p == 0 )
-      {
-        return true;
-      }
-      else if ((*p == 'e') || (*p == 'E'))
-      {
-        // process the scientific notation
-        double sign; // no init is safe (read below)
-        ++p;
-        if (*p == '-')
-        {
-          sign = -1.0;
-          // point to first number
-          ++p;
-        }
-        else if (*p == '+')
-        {
-          sign = 1.0;
-          // point to first number
-          ++p;
-        }
-        else if (*p >= '0' && *p <= '9')
-        {
-          sign = 1.0;
-        }
-        else
-        {
-          // only a sign char or a number is allowed
-          return false;
-        }
-        // now p points to the absolute value of the exponent
-        double exp = 0;
-        while (*p >= '0' && *p <= '9')
-        {
-          exp = (exp * 10.0) + static_cast<double>(*p - '0'); // 1 12 123 123 12345
-          ++p;
-        }
-        // now we have our exponent. put a sign on it.
-        exp *= sign;
-        double scFac = ::pow(10.0, exp);
-        r *= scFac;
-
-        // only allowed symbol here is EOS
-        return (*p == 0);
-      }
-      else
-      {
-        // not allowed
-        return false;
-      }
-    }
-
-    inline bool StringToDouble(double& r, const std::string& text)
-    {
-      return StringToDouble(r, text.c_str());
-    }
-
-    /**
-    Fast string to integer conversion. Leading zeroes and minus are accepted,
-    but a leading + sign is NOT.
-    Must pass the LegitIntegerString function test.
-    In addition, an empty string (or lone minus sign) yields 0.
-    */
-
-    template<typename T>
-    inline bool StringToInteger(T& r, const char* text)
-    {
-      if (!LegitIntegerString(text))
-        return false;
-
-      r = 0;
-      T neg = 1;
-      const char* p = text;
-
-      if (*p == '-')
-      {
-        neg = -1;
-        ++p;
-      }
-      while (*p >= '0' && *p <= '9')
-      {
-        r = (r * 10) + (*p - '0'); // 1 12 123 123 12345
-        ++p;
-      }
-      r *= neg;
-      if (*p == 0)
-        return true;
-      else
-        return false;
-    }
-
-    template<typename T>
-    inline bool StringToInteger(T& r, const std::string& text)
-    {
-      return StringToInteger<T>(r, text.c_str());
-    }
-
-    /**
-    if input is "rgb(12,23,255)"  --> function fills `red`, `green` and `blue` and returns true
-    else ("everything else")      --> function returns false and leaves all values untouched
-    */
-    bool GetRgbValuesFromString(uint8_t& red, uint8_t& green, uint8_t& blue, const char* text);
-
-    /**
-    See main overload
-    */
-    inline bool GetRgbValuesFromString(uint8_t& red, uint8_t& green, uint8_t& blue, const std::string& text)
-    {
-      return GetRgbValuesFromString(red, green, blue, text.c_str());
-    }
-
-    /**
-    Same as GetRgbValuesFromString
-    */
-    bool GetRgbaValuesFromString(uint8_t& red,
-                                 uint8_t& green,
-                                 uint8_t& blue,
-                                 uint8_t& alpha,
-                                 const char* text);
-
-    /**
-    Same as GetRgbValuesFromString
-    */
-    inline bool GetRgbaValuesFromString(uint8_t& red, 
-                                        uint8_t& green, 
-                                        uint8_t& blue, 
-                                        uint8_t& alpha, 
-                                        const std::string& text)
-    {
-      return GetRgbaValuesFromString(red, green, blue, alpha, text.c_str());
-    }
-  }
-}
--- a/Framework/Toolbox/GeometryToolbox.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,572 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "GeometryToolbox.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-#include <cassert>
-
-namespace OrthancStone
-{
-  namespace GeometryToolbox
-  {
-    void ProjectPointOntoPlane(Vector& result,
-                               const Vector& point,
-                               const Vector& planeNormal,
-                               const Vector& planeOrigin)
-    {
-      double norm =  boost::numeric::ublas::norm_2(planeNormal);
-      if (LinearAlgebra::IsCloseToZero(norm))
-      {
-        // Division by zero
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      // Make sure the norm of the normal is 1
-      Vector n;
-      n = planeNormal / norm;
-
-      // Algebraic form of line–plane intersection, where the line passes
-      // through "point" along the direction "normal" (thus, l == n)
-      // https://en.wikipedia.org/wiki/Line%E2%80%93plane_intersection#Algebraic_form
-      result = boost::numeric::ublas::inner_prod(planeOrigin - point, n) * n + point;
-    }
-
-    /*
-    undefined results if vector are not 3D
-    */
-    void ProjectPointOntoPlane2(
-      double& resultX,
-      double& resultY,
-      double& resultZ,
-      const Vector& point,
-      const Vector& planeNormal,
-      const Vector& planeOrigin)
-    {
-      double pointX = point[0];
-      double pointY = point[1];
-      double pointZ = point[2];
-
-      double planeNormalX = planeNormal[0];
-      double planeNormalY = planeNormal[1];
-      double planeNormalZ = planeNormal[2];
-
-      double planeOriginX = planeOrigin[0];
-      double planeOriginY = planeOrigin[1];
-      double planeOriginZ = planeOrigin[2];
-
-      double normSq = (planeNormalX * planeNormalX) + (planeNormalY * planeNormalY) + (planeNormalZ * planeNormalZ);
-
-      // Algebraic form of line–plane intersection, where the line passes
-      // through "point" along the direction "normal" (thus, l == n)
-      // https://en.wikipedia.org/wiki/Line%E2%80%93plane_intersection#Algebraic_form
-
-      if (LinearAlgebra::IsNear(1.0, normSq))
-      {
-        double nX = planeNormalX;
-        double nY = planeNormalY;
-        double nZ = planeNormalZ;
-        
-        double prod = (planeOriginX - pointX) * nX + (planeOriginY - pointY) * nY + (planeOriginZ - pointZ) * nZ;
-
-        resultX = prod * nX + pointX; 
-        resultY = prod * nY + pointY; 
-        resultZ = prod * nZ + pointZ;
-      }
-      else
-      {
-        double norm = sqrt(normSq);
-        if (LinearAlgebra::IsCloseToZero(norm))
-        {
-          // Division by zero
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-        double invNorm = 1.0 / norm;
-        double nX = planeNormalX * invNorm;
-        double nY = planeNormalY * invNorm;
-        double nZ = planeNormalZ * invNorm;
-
-        double prod = (planeOriginX - pointX) * nX + (planeOriginY - pointY) * nY + (planeOriginZ - pointZ) * nZ;
-
-        resultX = prod * nX + pointX;
-        resultY = prod * nY + pointY;
-        resultZ = prod * nZ + pointZ;
-      }
-    }
-
-    bool IsParallelOrOpposite(bool& isOpposite,
-                              const Vector& u,
-                              const Vector& v)
-    {
-      // The dot product of the two vectors gives the cosine of the angle
-      // between the vectors
-      // https://en.wikipedia.org/wiki/Dot_product
-
-      double normU = boost::numeric::ublas::norm_2(u);
-      double normV = boost::numeric::ublas::norm_2(v);
-
-      if (LinearAlgebra::IsCloseToZero(normU) ||
-          LinearAlgebra::IsCloseToZero(normV))
-      {
-        return false;
-      }
-
-      double cosAngle = boost::numeric::ublas::inner_prod(u, v) / (normU * normV);
-
-      // The angle must be zero, so the cosine must be almost equal to
-      // cos(0) == 1 (or cos(180) == -1 if allowOppositeDirection == true)
-
-      if (LinearAlgebra::IsCloseToZero(cosAngle - 1.0))
-      {
-        isOpposite = false;
-        return true;
-      }
-      else if (LinearAlgebra::IsCloseToZero(fabs(cosAngle) - 1.0))
-      {
-        isOpposite = true;
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-
-
-    bool IsParallel(const Vector& u,
-                    const Vector& v)
-    {
-      bool isOpposite;
-      return (IsParallelOrOpposite(isOpposite, u, v) &&
-              !isOpposite);
-    }
-
-
-    bool IntersectTwoPlanes(Vector& p,
-                            Vector& direction,
-                            const Vector& origin1,
-                            const Vector& normal1,
-                            const Vector& origin2,
-                            const Vector& normal2)
-    {
-      // This is "Intersection of 2 Planes", possibility "(C) 3 Plane
-      // Intersect Point" of:
-      // http://geomalgorithms.com/a05-_intersect-1.html
-
-      // The direction of the line of intersection is orthogonal to the
-      // normal of both planes
-      LinearAlgebra::CrossProduct(direction, normal1, normal2);
-
-      double norm = boost::numeric::ublas::norm_2(direction);
-      if (LinearAlgebra::IsCloseToZero(norm))
-      {
-        // The two planes are parallel or coincident
-        return false;
-      }
-
-      double d1 = -boost::numeric::ublas::inner_prod(normal1, origin1);
-      double d2 = -boost::numeric::ublas::inner_prod(normal2, origin2);
-      Vector tmp = d2 * normal1 - d1 * normal2;
-
-      LinearAlgebra::CrossProduct(p, tmp, direction);
-      p /= norm;
-
-      return true;
-    }
-
-
-    bool ClipLineToRectangle(double& x1,  // Coordinates of the clipped line (out)
-                             double& y1,
-                             double& x2,
-                             double& y2,
-                             const double ax,  // Two points defining the line (in)
-                             const double ay,
-                             const double bx,
-                             const double by,
-                             const double& xmin,   // Coordinates of the rectangle (in)
-                             const double& ymin,
-                             const double& xmax,
-                             const double& ymax)
-    {
-      // This is Skala algorithm for rectangles, "A new approach to line
-      // and line segment clipping in homogeneous coordinates"
-      // (2005). This is a direct, non-optimized translation of Algorithm
-      // 2 in the paper.
-
-      static const uint8_t tab1[16] = { 255 /* none */,
-                                        0,
-                                        0,
-                                        1,
-                                        1,
-                                        255 /* na */,
-                                        0,
-                                        2,
-                                        2,
-                                        0,
-                                        255 /* na */,
-                                        1,
-                                        1,
-                                        0,
-                                        0,
-                                        255 /* none */ };
-
-
-      static const uint8_t tab2[16] = { 255 /* none */,
-                                        3,
-                                        1,
-                                        3,
-                                        2,
-                                        255 /* na */,
-                                        2,
-                                        3,
-                                        3,
-                                        2,
-                                        255 /* na */,
-                                        2,
-                                        3,
-                                        1,
-                                        3,
-                                        255 /* none */ };
-
-      // Create the coordinates of the rectangle
-      Vector x[4];
-      LinearAlgebra::AssignVector(x[0], xmin, ymin, 1.0);
-      LinearAlgebra::AssignVector(x[1], xmax, ymin, 1.0);
-      LinearAlgebra::AssignVector(x[2], xmax, ymax, 1.0);
-      LinearAlgebra::AssignVector(x[3], xmin, ymax, 1.0);
-
-      // Move to homogoneous coordinates in 2D
-      Vector p;
-
-      {
-        Vector a, b;
-        LinearAlgebra::AssignVector(a, ax, ay, 1.0);
-        LinearAlgebra::AssignVector(b, bx, by, 1.0);
-        LinearAlgebra::CrossProduct(p, a, b);
-      }
-
-      uint8_t c = 0;
-
-      for (unsigned int k = 0; k < 4; k++)
-      {
-        if (boost::numeric::ublas::inner_prod(p, x[k]) >= 0)
-        {
-          c |= (1 << k);
-        }
-      }
-
-      assert(c < 16);
-
-      uint8_t i = tab1[c];
-      uint8_t j = tab2[c];
-
-      if (i == 255 || j == 255)
-      {
-        return false;   // No intersection
-      }
-      else
-      {
-        Vector a, b, e;
-        LinearAlgebra::CrossProduct(e, x[i], x[(i + 1) % 4]);
-        LinearAlgebra::CrossProduct(a, p, e);
-        LinearAlgebra::CrossProduct(e, x[j], x[(j + 1) % 4]);
-        LinearAlgebra::CrossProduct(b, p, e);
-
-        // Go back to non-homogeneous coordinates
-        x1 = a[0] / a[2];
-        y1 = a[1] / a[2];
-        x2 = b[0] / b[2];
-        y2 = b[1] / b[2];
-
-        return true;
-      }
-    }
-
-
-    void GetPixelSpacing(double& spacingX, 
-                         double& spacingY,
-                         const Orthanc::DicomMap& dicom)
-    {
-      Vector v;
-
-      if (LinearAlgebra::ParseVector(v, dicom, Orthanc::DICOM_TAG_PIXEL_SPACING))
-      {
-        if (v.size() != 2 ||
-            v[0] <= 0 ||
-            v[1] <= 0)
-        {
-          LOG(ERROR) << "Bad value for PixelSpacing tag";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-        }
-        else
-        {
-          // WARNING: X/Y are swapped (Y comes first)
-          spacingX = v[1];
-          spacingY = v[0];
-        }
-      }
-      else
-      {
-        // The "PixelSpacing" is of type 1C: It could be absent, use
-        // default value in such a case
-        spacingX = 1;
-        spacingY = 1;
-      }
-    }
-
-    
-    Matrix CreateRotationMatrixAlongX(double a)
-    {
-      // Rotate along X axis (R_x)
-      // https://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations
-      Matrix r(3, 3);
-      r(0,0) = 1;
-      r(0,1) = 0;
-      r(0,2) = 0;
-      r(1,0) = 0;
-      r(1,1) = cos(a);
-      r(1,2) = -sin(a);
-      r(2,0) = 0;
-      r(2,1) = sin(a);
-      r(2,2) = cos(a);
-      return r;
-    }
-    
-
-    Matrix CreateRotationMatrixAlongY(double a)
-    {
-      // Rotate along Y axis (R_y)
-      // https://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations
-      Matrix r(3, 3);
-      r(0,0) = cos(a);
-      r(0,1) = 0;
-      r(0,2) = sin(a);
-      r(1,0) = 0;
-      r(1,1) = 1;
-      r(1,2) = 0;
-      r(2,0) = -sin(a);
-      r(2,1) = 0;
-      r(2,2) = cos(a);
-      return r;
-    }
-
-
-    Matrix CreateRotationMatrixAlongZ(double a)
-    {
-      // Rotate along Z axis (R_z)
-      // https://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations
-      Matrix r(3, 3);
-      r(0,0) = cos(a);
-      r(0,1) = -sin(a);
-      r(0,2) = 0;
-      r(1,0) = sin(a);
-      r(1,1) = cos(a);
-      r(1,2) = 0;
-      r(2,0) = 0;
-      r(2,1) = 0;
-      r(2,2) = 1;
-      return r;
-    }    
-
-
-    Matrix CreateTranslationMatrix(double dx,
-                                   double dy,
-                                   double dz)
-    {
-      Matrix m = LinearAlgebra::IdentityMatrix(4);
-      m(0,3) = dx;
-      m(1,3) = dy;
-      m(2,3) = dz;
-      return m;    
-    }
-
-
-    Matrix CreateScalingMatrix(double sx,
-                               double sy,
-                               double sz)
-    {
-      Matrix m = LinearAlgebra::IdentityMatrix(4);
-      m(0,0) = sx;
-      m(1,1) = sy;
-      m(2,2) = sz;
-      return m;    
-    }
-
-
-    bool IntersectPlaneAndSegment(Vector& p,
-                                  const Vector& normal,
-                                  double d,
-                                  const Vector& edgeFrom,
-                                  const Vector& edgeTo)
-    {
-      // http://geomalgorithms.com/a05-_intersect-1.html#Line-Plane-Intersection
-
-      // Check for parallel line and plane
-      Vector direction = edgeTo - edgeFrom;
-      double denominator = boost::numeric::ublas::inner_prod(direction, normal);
-
-      if (fabs(denominator) < 100.0 * std::numeric_limits<double>::epsilon())
-      {
-        return false;
-      }
-      else
-      {
-        // Compute intersection
-        double t = -(normal[0] * edgeFrom[0] + 
-                     normal[1] * edgeFrom[1] + 
-                     normal[2] * edgeFrom[2] + d) / denominator;
-
-        if (t >= 0 && t <= 1)
-        {
-          // The intersection lies inside edge segment
-          p = edgeFrom + t * direction;
-          return true;
-        }
-        else
-        {
-          return false;
-        }
-      }
-    }
-
-
-    bool IntersectPlaneAndLine(Vector& p,
-                               const Vector& normal,
-                               double d,
-                               const Vector& origin,
-                               const Vector& direction)
-    {
-      // http://geomalgorithms.com/a05-_intersect-1.html#Line-Plane-Intersection
-
-      // Check for parallel line and plane
-      double denominator = boost::numeric::ublas::inner_prod(direction, normal);
-
-      if (fabs(denominator) < 100.0 * std::numeric_limits<double>::epsilon())
-      {
-        return false;
-      }
-      else
-      {
-        // Compute intersection
-        double t = -(normal[0] * origin[0] + 
-                     normal[1] * origin[1] + 
-                     normal[2] * origin[2] + d) / denominator;
-
-        p = origin + t * direction;
-        return true;
-      }
-    }
-
-
-    void AlignVectorsWithRotation(Matrix& r,
-                                  const Vector& a,
-                                  const Vector& b)
-    {
-      // This is Rodrigues' rotation formula:
-      // https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula#Matrix_notation
-
-      // Check also result A4.6 from "Multiple View Geometry in Computer
-      // Vision - 2nd edition" (p. 584)
-  
-      if (a.size() != 3 ||
-          b.size() != 3)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      double aNorm = boost::numeric::ublas::norm_2(a);
-      double bNorm = boost::numeric::ublas::norm_2(b);
-
-      if (LinearAlgebra::IsCloseToZero(aNorm) ||
-          LinearAlgebra::IsCloseToZero(bNorm))
-      {
-        LOG(ERROR) << "Vector with zero norm";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);      
-      }
-
-      Vector aUnit, bUnit;
-      aUnit = a / aNorm;
-      bUnit = b / bNorm;
-
-      Vector v;
-      LinearAlgebra::CrossProduct(v, aUnit, bUnit);
-
-      double cosine = boost::numeric::ublas::inner_prod(aUnit, bUnit);
-
-      if (LinearAlgebra::IsCloseToZero(1 + cosine))
-      {
-        // "a == -b": TODO
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-
-      Matrix k;
-      LinearAlgebra::CreateSkewSymmetric(k, v);
-
-#if 0
-      double sine = boost::numeric::ublas::norm_2(v);
-
-      r = (boost::numeric::ublas::identity_matrix<double>(3) +
-           sine * k + 
-           (1 - cosine) * boost::numeric::ublas::prod(k, k));
-#else
-      r = (boost::numeric::ublas::identity_matrix<double>(3) +
-           k + 
-           boost::numeric::ublas::prod(k, k) / (1 + cosine));
-#endif
-    }
-
-    
-    void ComputeNormalFromCosines(Vector& normal,
-                                  const Vector& cosines)
-    {
-      if (cosines.size() != 6)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-      else
-      {
-        normal.resize(3);
-        normal[0] = cosines[1] * cosines[5] - cosines[2] * cosines[4];
-        normal[1] = cosines[2] * cosines[3] - cosines[0] * cosines[5];
-        normal[2] = cosines[0] * cosines[4] - cosines[1] * cosines[3];
-      }
-    }
-
-    
-    bool ComputeNormal(Vector& normal,
-                       const Orthanc::DicomMap& dicom)
-    {
-      Vector cosines;
-      if (LinearAlgebra::ParseVector(cosines, dicom, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT) &&
-          cosines.size() == 6)
-      {
-        ComputeNormalFromCosines(normal, cosines);
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-  }
-}
--- a/Framework/Toolbox/GeometryToolbox.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "LinearAlgebra.h"
-
-namespace OrthancStone
-{
-  namespace GeometryToolbox
-  {
-    void ProjectPointOntoPlane(Vector& result,
-                               const Vector& point,
-                               const Vector& planeNormal,
-                               const Vector& planeOrigin);
-
-    /*
-    Alternated faster implementation (untested yet)
-    */
-    void ProjectPointOntoPlane2(double& resultX,
-                                double& resultY,
-                                double& resultZ,
-                                const Vector& point,
-                                const Vector& planeNormal,
-                                const Vector& planeOrigin);
-
-    bool IsParallel(const Vector& u,
-                    const Vector& v);
-
-    bool IsParallelOrOpposite(bool& isOpposite,
-                              const Vector& u,
-                              const Vector& v);
-
-    bool IntersectTwoPlanes(Vector& p,
-                            Vector& direction,
-                            const Vector& origin1,
-                            const Vector& normal1,
-                            const Vector& origin2,
-                            const Vector& normal2);
-
-    bool ClipLineToRectangle(double& x1,  // Coordinates of the clipped line (out)
-                             double& y1,
-                             double& x2,
-                             double& y2,
-                             const double ax,  // Two points defining the line (in)
-                             const double ay,
-                             const double bx,
-                             const double by,
-                             const double& xmin,   // Coordinates of the rectangle (in)
-                             const double& ymin,
-                             const double& xmax,
-                             const double& ymax);
-
-    void GetPixelSpacing(double& spacingX, 
-                         double& spacingY,
-                         const Orthanc::DicomMap& dicom);
-
-    inline double ProjectAlongNormal(const Vector& point,
-                                     const Vector& normal)
-    {
-      return boost::numeric::ublas::inner_prod(point, normal);
-    }
-
-    Matrix CreateRotationMatrixAlongX(double a);
-
-    Matrix CreateRotationMatrixAlongY(double a);
-
-    Matrix CreateRotationMatrixAlongZ(double a);
-
-    Matrix CreateTranslationMatrix(double dx,
-                                   double dy,
-                                   double dz);
-
-    Matrix CreateScalingMatrix(double sx,
-                               double sy,
-                               double sz);
-    
-    bool IntersectPlaneAndSegment(Vector& p,
-                                  const Vector& normal,
-                                  double d,
-                                  const Vector& edgeFrom,
-                                  const Vector& edgeTo);
-
-    bool IntersectPlaneAndLine(Vector& p,
-                               const Vector& normal,
-                               double d,
-                               const Vector& origin,
-                               const Vector& direction);
-
-    void AlignVectorsWithRotation(Matrix& r,
-                                  const Vector& a,
-                                  const Vector& b);
-
-    void ComputeNormalFromCosines(Vector& normal,
-                                  const Vector& cosines);
-
-    bool ComputeNormal(Vector& normal,
-                       const Orthanc::DicomMap& dicom);
-
-    inline float ComputeBilinearInterpolationUnitSquare(float x,
-                                                        float y,
-                                                        float f00,    // source(0, 0)
-                                                        float f01,    // source(1, 0)
-                                                        float f10,    // source(0, 1)
-                                                        float f11);   // source(1, 1)
-
-    inline float ComputeTrilinearInterpolationUnitSquare(float x,
-                                                         float y,
-                                                         float z,
-                                                         float f000,   // source(0, 0, 0)
-                                                         float f001,   // source(1, 0, 0)
-                                                         float f010,   // source(0, 1, 0)
-                                                         float f011,   // source(1, 1, 0)
-                                                         float f100,   // source(0, 0, 1)
-                                                         float f101,   // source(1, 0, 1)
-                                                         float f110,   // source(0, 1, 1)
-                                                         float f111);  // source(1, 1, 1)
-  };
-}
-
-
-float OrthancStone::GeometryToolbox::ComputeBilinearInterpolationUnitSquare(float x,
-                                                                            float y,
-                                                                            float f00,
-                                                                            float f01,
-                                                                            float f10,
-                                                                            float f11)
-{
-  // This function only works within the unit square
-  assert(x >= 0 && y >= 0 && x <= 1 && y <= 1);
-
-  // https://en.wikipedia.org/wiki/Bilinear_interpolation#Unit_square
-  return (f00 * (1.0f - x) * (1.0f - y) +
-          f01 * x * (1.0f - y) +
-          f10 * (1.0f - x) * y +
-          f11 * x * y);
-}
-
-
-float OrthancStone::GeometryToolbox::ComputeTrilinearInterpolationUnitSquare(float x,
-                                                                             float y,
-                                                                             float z,
-                                                                             float f000,
-                                                                             float f001,
-                                                                             float f010,
-                                                                             float f011,
-                                                                             float f100,
-                                                                             float f101,
-                                                                             float f110,
-                                                                             float f111)
-{
-  // "In practice, a trilinear interpolation is identical to two
-  // bilinear interpolation combined with a linear interpolation"
-  // https://en.wikipedia.org/wiki/Trilinear_interpolation#Method
-  float a = ComputeBilinearInterpolationUnitSquare(x, y, f000, f001, f010, f011);
-  float b = ComputeBilinearInterpolationUnitSquare(x, y, f100, f101, f110, f111);
-
-  return (1.0f - z) * a + z * b;
-}
--- a/Framework/Toolbox/ImageGeometry.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,594 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ImageGeometry.h"
-
-#include "Extent2D.h"
-#include "SubpixelReader.h"
-
-#include <Images/ImageProcessing.h>
-#include <Logging.h>
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-  static void AddTransformedPoint(Extent2D& extent,
-                                  const Matrix& a,
-                                  double x,
-                                  double y)
-  {
-    assert(a.size1() == 3 &&
-           a.size2() == 3);
-
-    Vector p = LinearAlgebra::Product(a, LinearAlgebra::CreateVector(x, y, 1));
-
-    if (!LinearAlgebra::IsCloseToZero(p[2]))
-    {
-      extent.AddPoint(p[0] / p[2], p[1] / p[2]);
-    }
-  }
-  
-  
-  bool GetProjectiveTransformExtent(unsigned int& x1,
-                                    unsigned int& y1,
-                                    unsigned int& x2,
-                                    unsigned int& y2,
-                                    const Matrix& a,
-                                    unsigned int sourceWidth,
-                                    unsigned int sourceHeight,
-                                    unsigned int targetWidth,
-                                    unsigned int targetHeight)
-  {
-    if (targetWidth == 0 ||
-        targetHeight == 0)
-    {
-      return false;
-    }
-    
-    Extent2D extent;
-    AddTransformedPoint(extent, a, 0, 0);
-    AddTransformedPoint(extent, a, sourceWidth, 0);
-    AddTransformedPoint(extent, a, 0, sourceHeight);
-    AddTransformedPoint(extent, a, sourceWidth, sourceHeight);
-
-    if (extent.IsEmpty())
-    {
-      return false;
-    }
-    else
-    {
-      int tmp = static_cast<int>(std::floor(extent.GetX1()));
-      if (tmp < 0)
-      {
-        x1 = 0;
-      }
-      else
-      {
-        x1 = static_cast<unsigned int>(tmp);
-      }
-
-      tmp = static_cast<int>(std::floor(extent.GetY1()));
-      if (tmp < 0)
-      {
-        y1 = 0;
-      }
-      else
-      {
-        y1 = static_cast<unsigned int>(tmp);
-      }
-
-      tmp = static_cast<int>(std::ceil(extent.GetX2()));
-      if (tmp < 0)
-      {
-        return false;
-      }
-      else if (static_cast<unsigned int>(tmp) >= targetWidth)
-      {
-        x2 = targetWidth - 1;
-      }
-      else
-      {
-        x2 = static_cast<unsigned int>(tmp);
-      }
-
-      tmp = static_cast<int>(std::ceil(extent.GetY2()));
-      if (tmp < 0)
-      {
-        return false;
-      }
-      else if (static_cast<unsigned int>(tmp) >= targetHeight)
-      {
-        y2 = targetHeight - 1;
-      }
-      else
-      {
-        y2 = static_cast<unsigned int>(tmp);
-      }
-
-      return (x1 <= x2 &&
-              y1 <= y2);
-    }
-  }
-
-
-  template <typename Reader,
-            bool HasOffsetX,
-            bool HasOffsetY>
-  static void ApplyAffineTransformToRow(typename Reader::PixelType* p,
-                                        Reader& reader,
-                                        unsigned int x1,
-                                        unsigned int x2,
-                                        float positionX,
-                                        float positionY,
-                                        float offsetX,
-                                        float offsetY)
-  {
-    typename Reader::PixelType value;
-
-    for (unsigned int x = x1; x <= x2; x++, p++)
-    {     
-      if (reader.GetValue(value, positionX, positionY))
-      {
-        *p = value;
-      }
-
-      if (HasOffsetX)
-      {
-        positionX += offsetX;
-      }
-
-      if (HasOffsetY)
-      {
-        positionY += offsetY;
-      }
-    }
-  }
-  
-
-  template <Orthanc::PixelFormat Format,
-            ImageInterpolation Interpolation>
-  static void ApplyAffineInternal(Orthanc::ImageAccessor& target,
-                                  const Orthanc::ImageAccessor& source,
-                                  const Matrix& a,
-                                  bool clear)
-  {
-    assert(target.GetFormat() == Format &&
-           source.GetFormat() == Format);
-    
-    typedef SubpixelReader<Format, Interpolation>  Reader;
-    typedef typename Reader::PixelType             PixelType;
-
-    if (clear)
-    {
-      if (Format == Orthanc::PixelFormat_RGB24)
-      {
-        Orthanc::ImageProcessing::Set(target, 0, 0, 0, 255);
-      }
-      else
-      {
-        Orthanc::ImageProcessing::Set(target, 0);
-      }
-    }
-
-    Matrix inva;
-    if (!LinearAlgebra::InvertMatrixUnsafe(inva, a))
-    {
-      // Singular matrix
-      return;
-    }
-
-    Reader reader(source);
-
-    unsigned int x1, y1, x2, y2;
-
-    if (GetProjectiveTransformExtent(x1, y1, x2, y2, a,
-                                     source.GetWidth(), source.GetHeight(),
-                                     target.GetWidth(), target.GetHeight()))
-    {
-      const size_t targetPitch = target.GetPitch();
-      uint8_t *targetRow = reinterpret_cast<uint8_t*>
-        (reinterpret_cast<PixelType*>(target.GetRow(y1)) + x1);
-
-      for (unsigned int y = y1; y <= y2; y++)
-      {
-        Vector start;
-        LinearAlgebra::AssignVector(start, static_cast<double>(x1) + 0.5,
-                                    static_cast<double>(y) + 0.5, 1);
-        start = boost::numeric::ublas::prod(inva, start);
-        assert(LinearAlgebra::IsNear(1.0, start(2)));
-
-        Vector offset;
-        LinearAlgebra::AssignVector(offset, static_cast<double>(x1) + 1.5,
-                                    static_cast<double>(y) + 0.5, 1);
-        offset = boost::numeric::ublas::prod(inva, offset) - start;
-        assert(LinearAlgebra::IsNear(0.0, offset(2)));
-
-        float startX = static_cast<float>(start[0]);
-        float startY = static_cast<float>(start[1]);
-        float offsetX = static_cast<float>(offset[0]);
-        float offsetY = static_cast<float>(offset[1]);
-
-        PixelType* pixel = reinterpret_cast<PixelType*>(targetRow);
-        if (LinearAlgebra::IsCloseToZero(offsetX))
-        {
-          ApplyAffineTransformToRow<Reader, false, true>
-            (pixel, reader, x1, x2, startX, startY, offsetX, offsetY);
-        }
-        else if (LinearAlgebra::IsCloseToZero(offsetY))
-        {
-          ApplyAffineTransformToRow<Reader, true, false>
-            (pixel, reader, x1, x2, startX, startY, offsetX, offsetY);
-        }
-        else
-        {
-          ApplyAffineTransformToRow<Reader, true, true>
-            (pixel, reader, x1, x2, startX, startY, offsetX, offsetY);
-        }
-
-        targetRow += targetPitch;
-      }
-    }    
-  }
-
-
-  void ApplyAffineTransform(Orthanc::ImageAccessor& target,
-                            const Orthanc::ImageAccessor& source,
-                            double a11,
-                            double a12,
-                            double b1,
-                            double a21,
-                            double a22,
-                            double b2,
-                            ImageInterpolation interpolation,
-                            bool clear)
-  {
-    if (source.GetFormat() != target.GetFormat())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    if (interpolation != ImageInterpolation_Nearest &&
-        interpolation != ImageInterpolation_Bilinear)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    Matrix a;
-    a.resize(3, 3);
-    a(0, 0) = a11;
-    a(0, 1) = a12;
-    a(0, 2) = b1;
-    a(1, 0) = a21;
-    a(1, 1) = a22;
-    a(1, 2) = b2;
-    a(2, 0) = 0;
-    a(2, 1) = 0;
-    a(2, 2) = 1;
-
-    switch (source.GetFormat())
-    {
-      case Orthanc::PixelFormat_Grayscale8:
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ApplyAffineInternal<Orthanc::PixelFormat_Grayscale8, 
-                                ImageInterpolation_Nearest>(target, source, a, clear);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            ApplyAffineInternal<Orthanc::PixelFormat_Grayscale8, 
-                                ImageInterpolation_Bilinear>(target, source, a, clear);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        break;
-
-      case Orthanc::PixelFormat_Grayscale16:
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ApplyAffineInternal<Orthanc::PixelFormat_Grayscale16, 
-                                ImageInterpolation_Nearest>(target, source, a, clear);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            ApplyAffineInternal<Orthanc::PixelFormat_Grayscale16, 
-                                ImageInterpolation_Bilinear>(target, source, a, clear);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        break;
-
-      case Orthanc::PixelFormat_SignedGrayscale16:
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ApplyAffineInternal<Orthanc::PixelFormat_SignedGrayscale16, 
-                                ImageInterpolation_Nearest>(target, source, a, clear);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            ApplyAffineInternal<Orthanc::PixelFormat_SignedGrayscale16, 
-                                ImageInterpolation_Bilinear>(target, source, a, clear);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        break;
-
-      case Orthanc::PixelFormat_Float32:
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ApplyAffineInternal<Orthanc::PixelFormat_Float32, 
-                                ImageInterpolation_Nearest>(target, source, a, clear);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            ApplyAffineInternal<Orthanc::PixelFormat_Float32, 
-                                ImageInterpolation_Bilinear>(target, source, a, clear);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        break;
-
-      case Orthanc::PixelFormat_RGB24:
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ApplyAffineInternal<Orthanc::PixelFormat_RGB24, 
-                                ImageInterpolation_Nearest>(target, source, a, clear);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-
-
-  template <Orthanc::PixelFormat Format,
-            ImageInterpolation Interpolation>
-  static void ApplyProjectiveInternal(Orthanc::ImageAccessor& target,
-                                      const Orthanc::ImageAccessor& source,
-                                      const Matrix& a,
-                                      const Matrix& inva)
-  {
-    assert(target.GetFormat() == Format &&
-           source.GetFormat() == Format);
-    
-    typedef SubpixelReader<Format, Interpolation> Reader;
-    typedef typename Reader::PixelType            PixelType;
-
-    Reader reader(source);
-    unsigned int x1, y1, x2, y2;
-
-    const float floatWidth = static_cast<float>(source.GetWidth());
-    const float floatHeight = static_cast<float>(source.GetHeight());
-
-    if (GetProjectiveTransformExtent(x1, y1, x2, y2, a,
-                                     source.GetWidth(), source.GetHeight(),
-                                     target.GetWidth(), target.GetHeight()))
-    {
-      const size_t targetPitch = target.GetPitch();
-      uint8_t *targetRow = reinterpret_cast<uint8_t*>
-        (reinterpret_cast<PixelType*>(target.GetRow(y1)) + x1);
-
-      for (unsigned int y = y1; y <= y2; y++)
-      {
-        PixelType *p = reinterpret_cast<PixelType*>(targetRow);
-
-        for (unsigned int x = x1; x <= x2; x++)
-        {
-          Vector v;
-          LinearAlgebra::AssignVector(v, static_cast<double>(x) + 0.5, 
-                                      static_cast<double>(y) + 0.5, 1);
-
-          Vector vv = LinearAlgebra::Product(inva, v);
-
-          assert(!LinearAlgebra::IsCloseToZero(vv[2]));
-          const double w = 1.0 / vv[2];
-          const float sourceX = static_cast<float>(vv[0] * w);
-          const float sourceY = static_cast<float>(vv[1] * w);
-          
-          // Make sure no integer overflow will occur after truncation
-          // (the static_cast<unsigned int> could otherwise throw an
-          // exception in WebAssembly if strong projective effects)
-          if (sourceX < floatWidth &&
-              sourceY < floatHeight)
-          { 
-            reader.GetValue(*p, sourceX, sourceY);
-          }
-
-          p++;
-        }
-
-        targetRow += targetPitch;
-      }
-    }
-  }
-
-    
-  void ApplyProjectiveTransform(Orthanc::ImageAccessor& target,
-                                const Orthanc::ImageAccessor& source,
-                                const Matrix& a,
-                                ImageInterpolation interpolation,
-                                bool clear)
-  {
-    if (source.GetFormat() != target.GetFormat())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    if (a.size1() != 3 ||
-        a.size2() != 3)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize);
-    }
-
-    if (interpolation != ImageInterpolation_Nearest &&
-        interpolation != ImageInterpolation_Bilinear)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    // Check whether we are dealing with an affine transform
-    if (LinearAlgebra::IsCloseToZero(a(2, 0)) &&
-        LinearAlgebra::IsCloseToZero(a(2, 1)))
-    {
-      double w = a(2, 2);
-      if (LinearAlgebra::IsCloseToZero(w))
-      {
-        LOG(ERROR) << "Singular projective matrix";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-      else
-      {
-        ApplyAffineTransform(target, source, 
-                             a(0, 0) / w, a(0, 1) / w, a(0, 2) / w,
-                             a(1, 0) / w, a(1, 1) / w, a(1, 2) / w,
-                             interpolation, clear);
-        return;
-      }
-    }
-
-    if (clear)
-    {
-      if (target.GetFormat() == Orthanc::PixelFormat_RGB24)
-      {
-        Orthanc::ImageProcessing::Set(target, 0, 0, 0, 255);
-      }
-      else
-      {
-        Orthanc::ImageProcessing::Set(target, 0);
-      }
-    }
-
-    Matrix inva;
-    if (!LinearAlgebra::InvertMatrixUnsafe(inva, a))
-    {
-      return;
-    }
-
-    switch (source.GetFormat())
-    {
-      case Orthanc::PixelFormat_Grayscale8:
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ApplyProjectiveInternal<Orthanc::PixelFormat_Grayscale8, 
-                                    ImageInterpolation_Nearest>(target, source, a, inva);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            ApplyProjectiveInternal<Orthanc::PixelFormat_Grayscale8, 
-                                    ImageInterpolation_Bilinear>(target, source, a, inva);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        break;
-
-      case Orthanc::PixelFormat_Grayscale16:
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ApplyProjectiveInternal<Orthanc::PixelFormat_Grayscale16, 
-                                    ImageInterpolation_Nearest>(target, source, a, inva);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            ApplyProjectiveInternal<Orthanc::PixelFormat_Grayscale16, 
-                                    ImageInterpolation_Bilinear>(target, source, a, inva);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        break;
-
-      case Orthanc::PixelFormat_SignedGrayscale16:
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ApplyProjectiveInternal<Orthanc::PixelFormat_SignedGrayscale16, 
-                                    ImageInterpolation_Nearest>(target, source, a, inva);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            ApplyProjectiveInternal<Orthanc::PixelFormat_SignedGrayscale16, 
-                                    ImageInterpolation_Bilinear>(target, source, a, inva);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        break;
-
-      case Orthanc::PixelFormat_Float32:
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ApplyProjectiveInternal<Orthanc::PixelFormat_Float32, 
-                                    ImageInterpolation_Nearest>(target, source, a, inva);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            ApplyProjectiveInternal<Orthanc::PixelFormat_Float32, 
-                                    ImageInterpolation_Bilinear>(target, source, a, inva);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        break;
-
-      case Orthanc::PixelFormat_RGB24:
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ApplyProjectiveInternal<Orthanc::PixelFormat_RGB24, 
-                                    ImageInterpolation_Nearest>(target, source, a, inva);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-}
--- a/Framework/Toolbox/ImageGeometry.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../StoneEnumerations.h"
-#include "LinearAlgebra.h"
-
-#include <Images/ImageAccessor.h>
-
-
-namespace OrthancStone
-{
-  // Returns the "useful" portion of the target image when applying a
-  // 3x3 perspective transform "a" (i.e. the bounding box where points
-  // of the source image are mapped to)
-  bool GetProjectiveTransformExtent(unsigned int& x1,
-                                    unsigned int& y1,
-                                    unsigned int& x2,
-                                    unsigned int& y2,
-                                    const Matrix& a,
-                                    unsigned int sourceWidth,
-                                    unsigned int sourceHeight,
-                                    unsigned int targetWidth,
-                                    unsigned int targetHeight);
-
-  void ApplyAffineTransform(Orthanc::ImageAccessor& target,
-                            const Orthanc::ImageAccessor& source,
-                            double a11,
-                            double a12,
-                            double b1,
-                            double a21,
-                            double a22,
-                            double b2,
-                            ImageInterpolation interpolation,
-                            bool clear);
-
-  void ApplyProjectiveTransform(Orthanc::ImageAccessor& target,
-                                const Orthanc::ImageAccessor& source,
-                                const Matrix& a,
-                                ImageInterpolation interpolation,
-                                bool clear);
-}
--- a/Framework/Toolbox/ImageToolbox.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,337 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "../OrthancStone.h"
-#include "ImageToolbox.h"
-
-#include "../StoneException.h"
-
-#include <Images/ImageProcessing.h>
-#include <Images/PixelTraits.h>
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-#include <boost/static_assert.hpp>
-#include <boost/type_traits.hpp>
-
-#include <vector>
-
-#if !defined(ORTHANC_ENABLE_DCMTK)
-#  error ORTHANC_ENABLE_DCMTK is not defined
-#endif
-
-#if !defined(ORTHANC_ENABLE_DCMTK_JPEG)
-#  error ORTHANC_ENABLE_DCMTK_JPEG is not defined
-#endif
-
-#if !defined(ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS)
-#  error ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS is not defined
-#endif
-
-
-namespace OrthancStone
-{
-  namespace
-  {
-    using Orthanc::PixelTraits;
-    using Orthanc::PixelFormat;
-    using Orthanc::ImageAccessor;
-    using Orthanc::PixelFormat;
-
-    template<typename Orthanc::PixelFormat Format>
-    class PixelBinner
-    {
-      // "PixelBinner requires an arithmetic (integer or floating-point) pixel format"
-      typedef typename Orthanc::PixelTraits<Format>::PixelType PixelType;
-      BOOST_STATIC_ASSERT(boost::is_arithmetic<PixelType>::value);
-    
-    public:
-      PixelBinner(HistogramData& hd, double minValue, double maxValue)
-        : hd_(hd)
-        , minValue_(minValue)
-        , maxValue_(maxValue)
-        , division_(1.0 / hd_.binSize)
-      {
-        ORTHANC_ASSERT(hd_.bins.size() > 0);
-        ORTHANC_ASSERT(maxValue > minValue);
-      }
-
-      ORTHANC_FORCE_INLINE void AddPixel(PixelType p)
-      {
-        if (p <= minValue_)
-        {
-          hd_.bins[0] += 1;
-        }
-        else if (p >= maxValue_)
-        {
-          hd_.bins.back() += 1;
-        }
-        else
-        {
-          double distanceFromMin = p - minValue_;
-          size_t binIndex = static_cast<size_t>(
-            std::floor(distanceFromMin * division_));
-          if (binIndex >= hd_.bins.size())
-            binIndex = hd_.bins.size() - 1;
-          hd_.bins[binIndex] += 1;
-        }
-      }
-    private:
-      HistogramData&        hd_;
-      double                minValue_;
-      double                maxValue_;
-      double                division_;
-    };
-
-    template<PixelFormat Format>
-    struct Histogram
-    {
-      typedef typename PixelTraits<Format>::PixelType PixelType;
-
-      static void Apply(const Orthanc::ImageAccessor& img, HistogramData& hd,
-                        double minValue = 0, 
-                        double maxValue = 0)
-      {
-        ORTHANC_ASSERT(Format == img.GetFormat(), 
-                       "Internal error. Wrong template histogram type");
-    
-        const size_t height = img.GetHeight();
-        const size_t width = img.GetHeight();
-
-        if ((minValue == 0) && (maxValue == 0))
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-          //ORTHANC_ASSERT(boost::is_integral<PixelType>::value, 
-          //  "Min and max values must be supplied for float-based histogram");
-          //
-          //PixelTraits<Format>::SetMinValue(minValue);
-          //PixelTraits<Format>::SetMaxValue(maxValue);
-        }
-
-        hd.minValue = minValue;
-
-        // the following code is not really pretty but ensures 
-        size_t numBins = static_cast<size_t>(
-          std::ceil((maxValue - minValue) / hd.binSize));
-
-        hd.bins.resize(numBins);
-        std::fill(hd.bins.begin(), hd.bins.end(), 0);
-
-        PixelBinner<Format> binner(hd, minValue, maxValue);
-        for (uint32_t y = 0; y < height; ++y)
-        {
-          const PixelType* curPix = reinterpret_cast<const PixelType*>(
-            img.GetConstRow(y));
-          
-          for (uint32_t x = 0; x < width; x++, curPix++)
-          {
-            binner.AddPixel(*curPix);
-          }
-        }
-      }
-    };
-
-
-    template<PixelFormat Format>
-    struct ComputeMinMax__
-    {
-      typedef typename PixelTraits<Format>::PixelType PixelType;
-
-      static void Apply(const Orthanc::ImageAccessor& img,
-                        PixelType& minValue, PixelType& maxValue)
-      {
-        ORTHANC_ASSERT(Format == img.GetFormat(), 
-                       "Internal error. Wrong template histogram type");
-
-        const size_t height = img.GetHeight();
-        const size_t width = img.GetHeight();
-
-        if (height * width == 0)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-        }
-
-        // min and max are crossed below. Think about it. This is OK :)
-        PixelTraits<Format>::SetMaxValue(minValue);
-        PixelTraits<Format>::SetMinValue(maxValue);
-
-        for (uint32_t y = 0; y < height; ++y)
-        {
-          const PixelType* curPix = reinterpret_cast<const PixelType*>(
-            img.GetConstRow(y));
-
-          for (uint32_t x = 0; x < width; x++, curPix++)
-          {
-            if (*curPix <= minValue)
-              minValue = *curPix;
-            if (*curPix >= maxValue)
-              maxValue = *curPix;
-          }
-        }
-      }
-    };
-
-    template<PixelFormat Format>
-    void ComputeMinMax_(const Orthanc::ImageAccessor& img, 
-                        double& minValue, double& maxValue)
-    {
-      typedef typename PixelTraits<Format>::PixelType PixelType;
-      PixelType minValuePix = PixelType();
-      PixelType maxValuePix = PixelType();
-      ComputeMinMax__<Format>::Apply(img, minValuePix, maxValuePix);
-      minValue = static_cast<double>(minValuePix);
-      maxValue = static_cast<double>(maxValuePix);
-    }
-    
-    template<PixelFormat Format>
-    void ComputeHistogram_(const Orthanc::ImageAccessor& img, HistogramData& hd)
-    {
-      typedef typename PixelTraits<Format>::PixelType PixelType;
-      PixelType minValue = PixelType();
-      PixelType maxValue = PixelType();
-      ComputeMinMax__<Format>::Apply(img, minValue, maxValue);
-      
-      // make bins a little bigger to center integer pixel values
-      Histogram<Format>::Apply(img, hd, 
-                               static_cast<double>(minValue) - 0.5, 
-                               static_cast<double>(maxValue) + 0.5);
-    }
-  }
-
-  void ComputeHistogram(const Orthanc::ImageAccessor& img,
-                        HistogramData& hd, double binSize)
-  {
-    using namespace Orthanc;
-
-    hd.binSize = binSize;
-
-    // dynamic/static bridge
-    switch (img.GetFormat())
-    {
-    case PixelFormat_Grayscale8:
-      ComputeHistogram_<PixelFormat_Grayscale8>       (img, hd);
-      break;
-    case PixelFormat_Grayscale16:
-      ComputeHistogram_<PixelFormat_Grayscale16>      (img, hd);
-      break;
-    case PixelFormat_SignedGrayscale16:
-      ComputeHistogram_<PixelFormat_SignedGrayscale16>(img, hd);
-      break;
-    case PixelFormat_Float32:
-      ComputeHistogram_<PixelFormat_Float32>          (img, hd);
-      break;
-    case PixelFormat_Grayscale32:
-      ComputeHistogram_<PixelFormat_Grayscale32>      (img, hd);
-      break;
-    case PixelFormat_Grayscale64:
-      ComputeHistogram_<PixelFormat_Grayscale64>      (img, hd);
-      break;
-    default:
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-  }
-
-  void ComputeMinMax(const Orthanc::ImageAccessor& img,
-                     double& minValue, double& maxValue)
-  {
-    using namespace Orthanc;
-
-    // dynamic/static bridge
-    switch (img.GetFormat())
-    {
-    case PixelFormat_Grayscale8:
-      ComputeMinMax_<PixelFormat_Grayscale8>       (img, minValue, maxValue);
-      break;                                                
-    case PixelFormat_Grayscale16:                           
-      ComputeMinMax_<PixelFormat_Grayscale16>      (img, minValue, maxValue);
-      break;                                                
-    case PixelFormat_SignedGrayscale16:                     
-      ComputeMinMax_<PixelFormat_SignedGrayscale16>(img, minValue, maxValue);
-      break;                                                
-    case PixelFormat_Float32:                               
-      ComputeMinMax_<PixelFormat_Float32>          (img, minValue, maxValue);
-      break;                                                
-    case PixelFormat_Grayscale32:                           
-      ComputeMinMax_<PixelFormat_Grayscale32>      (img, minValue, maxValue);
-      break;                                                
-    case PixelFormat_Grayscale64:                           
-      ComputeMinMax_<PixelFormat_Grayscale64>      (img, minValue, maxValue);
-      break;
-    default:
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-  }
-
-  void DumpHistogramResult(std::string& s, const HistogramData& hd)
-  {
-    std::stringstream ss;
-    ss << "Histogram:\n";
-    ss << "==========\n";
-    ss << "\n";
-    ss << "minValue        : " << hd.minValue << "\n";
-    ss << "binSize         : " << hd.binSize << "\n";
-    ss << "bins.size()     : " << hd.bins.size() << "\n";
-    ss << "bins            :\n";
-    double curBinStart = hd.minValue;
-    size_t pixCount = 0;
-    for (size_t i = 0; i < hd.bins.size(); ++i)
-    {
-      ss << "index: " << i << " (from " << curBinStart << " to "
-        << curBinStart + hd.binSize << ") : " << hd.bins[i] << " pixels\n";
-      curBinStart += hd.binSize;
-      pixCount += hd.bins[i];
-    }
-    ss << "total pix. count: " << pixCount << "\n";
-    s = ss.str();
-  }
-
-
-  bool ImageToolbox::IsDecodingSupported(Orthanc::DicomTransferSyntax& transferSyntax)
-  {
-    switch (transferSyntax)
-    {
-      case Orthanc::DicomTransferSyntax_LittleEndianImplicit:
-      case Orthanc::DicomTransferSyntax_LittleEndianExplicit:
-      case Orthanc::DicomTransferSyntax_DeflatedLittleEndianExplicit:
-      case Orthanc::DicomTransferSyntax_BigEndianExplicit:
-      case Orthanc::DicomTransferSyntax_RLELossless:
-        return true;
-
-#if (ORTHANC_ENABLE_DCMTK == 1) && (ORTHANC_ENABLE_DCMTK_JPEG == 1)
-      case Orthanc::DicomTransferSyntax_JPEGProcess1:
-      case Orthanc::DicomTransferSyntax_JPEGProcess2_4:
-      case Orthanc::DicomTransferSyntax_JPEGProcess14:
-      case Orthanc::DicomTransferSyntax_JPEGProcess14SV1:
-        return true;
-#endif
-      
-#if (ORTHANC_ENABLE_DCMTK == 1) && (ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS == 1)
-      case Orthanc::DicomTransferSyntax_JPEGLSLossless:
-      case Orthanc::DicomTransferSyntax_JPEGLSLossy:
-        return true;
-#endif
-      
-      default:
-        return false;
-    }
-  }
-}
--- a/Framework/Toolbox/ImageToolbox.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../StoneEnumerations.h"
-#include "LinearAlgebra.h"
-
-#include <Images/ImageAccessor.h>
-
-namespace OrthancStone
-{
-
-  /**
-  This structure represents the result of an histogram computation
-
-  bins[0]   contains the values in [minValue                , minValue +   binSize [
-  bins[1]   contains the values in [minValue +       binSize, minValue + 2*binSize [
-  bins[2]   contains the values in [minValue +     2*binSize, minValue + 3*binSize [
-  ...
-  bins[N-1] contains the values in [minValue + (N-1)*binSize, minValue + N*binSize [
-
-  */
-  struct HistogramData
-  {
-    std::vector<size_t> bins;
-    double minValue;
-    double binSize;
-  };
-
-  /**
-  Dumps the supplied histogram to the supplied strings
-  */
-  void DumpHistogramResult(std::string& s, const HistogramData& hd);
-  
-  /**
-  This will compute the histogram of the supplied image (count the number of 
-  pixels).
-
-  The image must contain arithmetic pixels (that is, having a single component,
-  integer or float). Compound pixel types like RGB, YUV are not supported and
-  will cause this function to throw an exception.
-
-  The range of available values will be split in sets of size `binSize`, and 
-  each set will contain the number of pixels in the given bin 
-  (see HistogramResult above).
-  */
-  void ComputeHistogram(const Orthanc::ImageAccessor& img,
-                        HistogramData& hd, double binSize);
-
-
-  /**
-  Computes the min max values in an image
-  */
-  void ComputeMinMax(const Orthanc::ImageAccessor& img, 
-                     double& minValue, double& maxValue);
-
-
-  class ImageToolbox
-  {
-  public:
-    static bool IsDecodingSupported(Orthanc::DicomTransferSyntax& transferSyntax);
-  };
-}
--- a/Framework/Toolbox/LinearAlgebra.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,751 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "LinearAlgebra.h"
-
-#include "../StoneException.h"
-#include "GenericToolbox.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-#include <boost/lexical_cast.hpp>
-#include <boost/numeric/ublas/lu.hpp>
-
-#include <stdio.h>
-#include <iostream>
-#include <cstdlib>
-
-namespace OrthancStone
-{
-  namespace LinearAlgebra
-  {
-    void Print(const Vector& v)
-    {
-      for (size_t i = 0; i < v.size(); i++)
-      {
-        printf("%g\n", v[i]);
-        //printf("%8.2f\n", v[i]);
-      }
-      printf("\n");
-    }
-
-
-    void Print(const Matrix& m)
-    {
-      for (size_t i = 0; i < m.size1(); i++)
-      {
-        for (size_t j = 0; j < m.size2(); j++)
-        {
-          printf("%g  ", m(i,j));
-          //printf("%8.2f  ", m(i,j));
-        }
-        printf("\n");        
-      }
-      printf("\n");        
-    }
-
-
-    bool ParseVector(Vector& target,
-                     const std::string& value)
-    {
-      std::vector<std::string> items;
-      Orthanc::Toolbox::TokenizeString(items, Orthanc::Toolbox::StripSpaces(value), '\\');
-
-      target.resize(items.size());
-
-      for (size_t i = 0; i < items.size(); i++)
-      {
-        /**
-         * SJO - 2019-11-19 - WARNING: I reverted from "std::stod()"
-         * to "boost::lexical_cast", as both "std::stod()" and
-         * "std::strtod()" are sensitive to locale settings, making
-         * this code non portable and very dangerous as it fails
-         * silently. A string such as "1.3671875\1.3671875" is
-         * interpreted as "1\1", because "std::stod()" expects a comma
-         * (",") instead of a point ("."). This problem is notably
-         * seen in Qt-based applications, that somehow set locales
-         * aggressively.
-         *
-         * "boost::lexical_cast<>" is also dependent on the locale
-         * settings, but apparently not in a way that makes this
-         * function fail with Qt. The Orthanc core defines macro
-         * "-DBOOST_LEXICAL_CAST_ASSUME_C_LOCALE" in static builds to
-         * this end.
-         **/
-        
-#if 0  // __cplusplus >= 201103L  // Is C++11 enabled?
-        /**
-         * We try and avoid the use of "boost::lexical_cast<>" here,
-         * as it is very slow, and as Stone has to parse many doubles.
-         * https://tinodidriksen.com/2011/05/cpp-convert-string-to-double-speed/
-         **/
-          
-        try
-        {
-          target[i] = std::stod(items[i]);
-        }
-        catch (std::exception&)
-        {
-          target.clear();
-          return false;
-        }
-
-#elif 0
-        /**
-         * "std::strtod()" is the recommended alternative to
-         * "std::stod()". It is apparently as fast as plain-C
-         * "atof()", with more security.
-         **/
-        char* end = NULL;
-        target[i] = std::strtod(items[i].c_str(), &end);
-        if (end == NULL ||
-            end != items[i].c_str() + items[i].size())
-        {
-          return false;
-        }
-
-#elif 1
-        /**
-         * Use of our homemade implementation of
-         * "boost::lexical_cast<double>()". It is much faster than boost.
-         **/
-        if (!GenericToolbox::StringToDouble(target[i], items[i].c_str()))
-        {
-          return false;
-        }
-        
-#else
-        /**
-         * Fallback implementation using Boost (slower, but somehow
-         * independent to locale contrarily to "std::stod()", and
-         * generic as it does not use our custom implementation).
-         **/
-        try
-        {
-          target[i] = boost::lexical_cast<double>(items[i]);
-        }
-        catch (boost::bad_lexical_cast&)
-        {
-          target.clear();
-          return false;
-        }
-#endif
-      }
-
-      return true;
-    }
-
-
-    bool ParseVector(Vector& target,
-                     const Orthanc::DicomMap& dataset,
-                     const Orthanc::DicomTag& tag)
-    {
-      std::string value;
-      return (dataset.LookupStringValue(value, tag, false) &&
-              ParseVector(target, value));
-    }
-
-
-    void NormalizeVector(Vector& u)
-    {
-      double norm = boost::numeric::ublas::norm_2(u);
-      if (!IsCloseToZero(norm))
-      {
-        u = u / norm;
-      }
-    }
-
-    void CrossProduct(Vector& result,
-                      const Vector& u,
-                      const Vector& v)
-    {
-      if (u.size() != 3 ||
-          v.size() != 3)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      result.resize(3);
-
-      result[0] = u[1] * v[2] - u[2] * v[1];
-      result[1] = u[2] * v[0] - u[0] * v[2];
-      result[2] = u[0] * v[1] - u[1] * v[0];
-    }
-
-    double DotProduct(const Vector& u, const Vector& v)
-    {
-      if (u.size() != 3 ||
-          v.size() != 3)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2]);
-    }
-
-    void FillMatrix(Matrix& target,
-                    size_t rows,
-                    size_t columns,
-                    const double values[])
-    {
-      target.resize(rows, columns);
-
-      size_t index = 0;
-
-      for (size_t y = 0; y < rows; y++)
-      {
-        for (size_t x = 0; x < columns; x++, index++)
-        {
-          target(y, x) = values[index];
-        }
-      }
-    }
-
-
-    void FillVector(Vector& target,
-                    size_t size,
-                    const double values[])
-    {
-      target.resize(size);
-
-      for (size_t i = 0; i < size; i++)
-      {
-        target[i] = values[i];
-      }
-    }
-
-
-    void Convert(Matrix& target,
-                 const Vector& source)
-    {
-      const size_t n = source.size();
-
-      target.resize(n, 1);
-
-      for (size_t i = 0; i < n; i++)
-      {
-        target(i, 0) = source[i];
-      }      
-    }
-
-    
-    double ComputeDeterminant(const Matrix& a)
-    {
-      if (a.size1() != a.size2())
-      {
-        LOG(ERROR) << "Determinant only exists for square matrices";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-    
-      // https://en.wikipedia.org/wiki/Rule_of_Sarrus
-      if (a.size1() == 1)
-      {
-        return a(0,0);
-      }
-      else if (a.size1() == 2)
-      {
-        return a(0,0) * a(1,1) - a(0,1) * a(1,0);
-      }
-      else if (a.size1() == 3)
-      {
-        return (a(0,0) * a(1,1) * a(2,2) + 
-                a(0,1) * a(1,2) * a(2,0) +
-                a(0,2) * a(1,0) * a(2,1) -
-                a(2,0) * a(1,1) * a(0,2) -
-                a(2,1) * a(1,2) * a(0,0) -
-                a(2,2) * a(1,0) * a(0,1));
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-    }
-    
-
-    bool IsOrthogonalMatrix(const Matrix& q,
-                            double threshold)
-    {
-      // https://en.wikipedia.org/wiki/Orthogonal_matrix
-
-      if (q.size1() != q.size2())
-      {
-        LOG(ERROR) << "An orthogonal matrix must be squared";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      using namespace boost::numeric::ublas;
-
-      const Matrix check = prod(trans(q), q) - identity_matrix<double>(q.size1());
-
-      type_traits<double>::real_type norm = norm_inf(check);
-
-      return (norm <= threshold);
-    }
-
-
-    bool IsOrthogonalMatrix(const Matrix& q)
-    {
-      return IsOrthogonalMatrix(q, 10.0 * std::numeric_limits<float>::epsilon());
-    }
-
-
-    bool IsRotationMatrix(const Matrix& r,
-                          double threshold)
-    {
-      return (IsOrthogonalMatrix(r, threshold) &&
-              IsNear(ComputeDeterminant(r), 1.0, threshold));
-    }
-
-
-    bool IsRotationMatrix(const Matrix& r)
-    {
-      return IsRotationMatrix(r, 10.0 * std::numeric_limits<float>::epsilon());
-    }
-
-
-    void InvertUpperTriangularMatrix(Matrix& output,
-                                     const Matrix& k)
-    {
-      if (k.size1() != k.size2())
-      {
-        LOG(ERROR) << "Determinant only exists for square matrices";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      output.resize(k.size1(), k.size2());
-
-      for (size_t i = 1; i < k.size1(); i++)
-      {
-        for (size_t j = 0; j < i; j++)
-        {
-          if (!IsCloseToZero(k(i, j)))
-          {
-            LOG(ERROR) << "Not an upper triangular matrix";
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-          }
-
-          output(i, j) = 0;  // The output is also upper triangular
-        }
-      }
-
-      if (k.size1() == 3)
-      {
-        // https://math.stackexchange.com/a/1004181
-        double a = k(0, 0);
-        double b = k(0, 1);
-        double c = k(0, 2);
-        double d = k(1, 1);
-        double e = k(1, 2);
-        double f = k(2, 2);
-
-        if (IsCloseToZero(a) ||
-            IsCloseToZero(d) ||
-            IsCloseToZero(f))
-        {
-          LOG(ERROR) << "Singular upper triangular matrix";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-        else
-        {
-          output(0, 0) = 1.0 / a;
-          output(0, 1) = -b / (a * d);
-          output(0, 2) = (b * e - c * d) / (a * f * d);
-          output(1, 1) = 1.0 / d;
-          output(1, 2) = -e / (f * d);
-          output(2, 2) = 1.0 / f;
-        }
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-    }
-
-
-    static void GetGivensComponent(double& c,
-                                   double& s,
-                                   const Matrix& a,
-                                   size_t i,
-                                   size_t j)
-    {
-      assert(i < 3 && j < 3);
-
-      double x = a(i, i);
-      double y = a(i, j);
-      double n = sqrt(x * x + y * y);
-
-      if (IsCloseToZero(n))
-      {
-        c = 1;
-        s = 0;
-      }
-      else
-      {
-        c = x / n;
-        s = -y / n;
-      }
-    }
-
-
-    /**
-     * This function computes the RQ decomposition of a 3x3 matrix,
-     * using Givens rotations. Reference: Algorithm A4.1 (page 579) of
-     * "Multiple View Geometry in Computer Vision" (2nd edition).  The
-     * output matrix "Q" is a rotation matrix, and "R" is upper
-     * triangular.
-     **/
-    void RQDecomposition3x3(Matrix& r,
-                            Matrix& q,
-                            const Matrix& a)
-    {
-      using namespace boost::numeric::ublas;
-      
-      if (a.size1() != 3 ||
-          a.size2() != 3)
-      {
-        LOG(ERROR) << "Only applicable to a 3x3 matrix";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      r.resize(3, 3);
-      q.resize(3, 3);
-
-      r = a;
-      q = identity_matrix<double>(3);
-
-      {
-        // Set A(2,1) to zero
-        double c, s;
-        GetGivensComponent(c, s, r, 2, 1);
-
-        double v[9] = { 1, 0, 0, 
-                        0, c, -s,
-                        0, s, c };
-
-        Matrix g;
-        FillMatrix(g, 3, 3, v);
-
-        r = prod(r, g);
-        q = prod(trans(g), q);
-      }
-
-
-      {
-        // Set A(2,0) to zero
-        double c, s;
-        GetGivensComponent(c, s, r, 2, 0);
-
-        double v[9] = { c, 0, -s, 
-                        0, 1, 0,
-                        s, 0, c };
-
-        Matrix g;
-        FillMatrix(g, 3, 3, v);
-
-        r = prod(r, g);
-        q = prod(trans(g), q);
-      }
-
-
-      {
-        // Set A(1,0) to zero
-        double c, s;
-        GetGivensComponent(c, s, r, 1, 0);
-
-        double v[9] = { c, -s, 0, 
-                        s, c, 0,
-                        0, 0, 1 };
-
-        Matrix g;
-        FillMatrix(g, 3, 3, v);
-
-        r = prod(r, g);
-        q = prod(trans(g), q);
-      }
-
-      if (!IsCloseToZero(norm_inf(prod(r, q) - a)) ||
-          !IsRotationMatrix(q) ||
-          !IsCloseToZero(r(1, 0)) ||
-          !IsCloseToZero(r(2, 0)) ||
-          !IsCloseToZero(r(2, 1)))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-
-
-    bool InvertMatrixUnsafe(Matrix& target,
-                            const Matrix& source)
-    {
-      if (source.size1() != source.size2())
-      {
-        LOG(ERROR) << "Inverse only exists for square matrices";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      if (source.size1() < 4)
-      {
-        // For matrices with size below 4, use direct computations
-        // instead of LU decomposition
-
-        if (source.size1() == 0)
-        {
-          // By convention, the inverse of the empty matrix, is itself the empty matrix
-          target.resize(0, 0);
-          return true;
-        }
-
-        double determinant = ComputeDeterminant(source);
-
-        if (IsCloseToZero(determinant))
-        {
-          return false;
-        }
-
-        double denominator = 1.0 / determinant;
-
-        target.resize(source.size1(), source.size2());
-
-        if (source.size1() == 1)
-        {
-          target(0, 0) = denominator;
-
-          return true;
-        }
-        else if (source.size1() == 2)
-        {
-          // https://en.wikipedia.org/wiki/Invertible_matrix#Inversion_of_2_%C3%97_2_matrices
-          target(0, 0) =  source(1, 1) * denominator;
-          target(0, 1) = -source(0, 1) * denominator;
-          target(1, 0) = -source(1, 0) * denominator;
-          target(1, 1) =  source(0, 0) * denominator;
-
-          return true;
-        }
-        else if (source.size1() == 3)
-        {
-          // https://en.wikipedia.org/wiki/Invertible_matrix#Inversion_of_3_%C3%97_3_matrices
-          const double a = source(0, 0);
-          const double b = source(0, 1);
-          const double c = source(0, 2);
-          const double d = source(1, 0);
-          const double e = source(1, 1);
-          const double f = source(1, 2);
-          const double g = source(2, 0);
-          const double h = source(2, 1);
-          const double i = source(2, 2);
-        
-          target(0, 0) =  (e * i - f * h) * denominator;
-          target(0, 1) = -(b * i - c * h) * denominator;
-          target(0, 2) =  (b * f - c * e) * denominator;
-          target(1, 0) = -(d * i - f * g) * denominator;
-          target(1, 1) =  (a * i - c * g) * denominator;
-          target(1, 2) = -(a * f - c * d) * denominator;
-          target(2, 0) =  (d * h - e * g) * denominator;
-          target(2, 1) = -(a * h - b * g) * denominator;
-          target(2, 2) =  (a * e - b * d) * denominator;
-
-          return true;
-        }
-        else
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-        }
-      }
-      else
-      {
-        // General case, using LU decomposition
-
-        Matrix a = source;  // Copy the source matrix, as "lu_factorize()" modifies it
-
-        boost::numeric::ublas::permutation_matrix<size_t>  permutation(source.size1());
-        
-        if (boost::numeric::ublas::lu_factorize(a, permutation) != 0)
-        {
-          return false;
-        }
-        else
-        {
-          target = boost::numeric::ublas::identity_matrix<double>(source.size1());
-          lu_substitute(a, permutation, target);
-          return true;
-        }
-      }
-    }
-    
-
-    
-    void InvertMatrix(Matrix& target,
-                      const Matrix& source)
-    {
-      if (!InvertMatrixUnsafe(target, source))
-      {
-        LOG(ERROR) << "Cannot invert singular matrix";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-    }
-
-    
-    void CreateSkewSymmetric(Matrix& s,
-                             const Vector& v)
-    {
-      if (v.size() != 3)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-      }
-
-      s.resize(3, 3);
-      s(0,0) = 0;
-      s(0,1) = -v[2];
-      s(0,2) = v[1];
-      s(1,0) = v[2];
-      s(1,1) = 0;
-      s(1,2) = -v[0];
-      s(2,0) = -v[1];
-      s(2,1) = v[0];
-      s(2,2) = 0;
-    }
-
-  
-    Matrix InvertScalingTranslationMatrix(const Matrix& t)
-    {
-      if (t.size1() != 4 ||
-          t.size2() != 4 ||
-          !LinearAlgebra::IsCloseToZero(t(0,1)) ||
-          !LinearAlgebra::IsCloseToZero(t(0,2)) ||
-          !LinearAlgebra::IsCloseToZero(t(1,0)) ||
-          !LinearAlgebra::IsCloseToZero(t(1,2)) ||
-          !LinearAlgebra::IsCloseToZero(t(2,0)) ||
-          !LinearAlgebra::IsCloseToZero(t(2,1)) ||
-          !LinearAlgebra::IsCloseToZero(t(3,0)) ||
-          !LinearAlgebra::IsCloseToZero(t(3,1)) ||
-          !LinearAlgebra::IsCloseToZero(t(3,2)))
-      {
-        LOG(ERROR) << "This matrix is more than a zoom/translate transform";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      const double sx = t(0,0);
-      const double sy = t(1,1);
-      const double sz = t(2,2);
-      const double w = t(3,3);
-
-      if (LinearAlgebra::IsCloseToZero(sx) ||
-          LinearAlgebra::IsCloseToZero(sy) ||
-          LinearAlgebra::IsCloseToZero(sz) ||
-          LinearAlgebra::IsCloseToZero(w))
-      {
-        LOG(ERROR) << "Singular transform";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    
-      const double tx = t(0,3);
-      const double ty = t(1,3);
-      const double tz = t(2,3);
-    
-      Matrix m = IdentityMatrix(4);
-
-      m(0,0) = 1.0 / sx;
-      m(1,1) = 1.0 / sy;
-      m(2,2) = 1.0 / sz;
-      m(3,3) = 1.0 / w;
-
-      m(0,3) = -tx / (sx * w);
-      m(1,3) = -ty / (sy * w);
-      m(2,3) = -tz / (sz * w);
-
-      return m;
-    }
-
-
-    bool IsShearMatrix(const Matrix& shear)
-    {
-      return (shear.size1() == 4 &&
-              shear.size2() == 4 &&
-              LinearAlgebra::IsNear(1.0, shear(0,0)) &&
-              LinearAlgebra::IsNear(0.0, shear(0,1)) &&
-              LinearAlgebra::IsNear(0.0, shear(0,3)) &&
-              LinearAlgebra::IsNear(0.0, shear(1,0)) &&
-              LinearAlgebra::IsNear(1.0, shear(1,1)) &&
-              LinearAlgebra::IsNear(0.0, shear(1,3)) &&
-              LinearAlgebra::IsNear(0.0, shear(2,0)) &&
-              LinearAlgebra::IsNear(0.0, shear(2,1)) &&
-              LinearAlgebra::IsNear(1.0, shear(2,2)) &&
-              LinearAlgebra::IsNear(0.0, shear(2,3)) &&
-              LinearAlgebra::IsNear(0.0, shear(3,0)) &&
-              LinearAlgebra::IsNear(0.0, shear(3,1)) &&
-              LinearAlgebra::IsNear(1.0, shear(3,3)));
-    }
-  
-
-    Matrix InvertShearMatrix(const Matrix& shear)
-    {
-      if (!IsShearMatrix(shear))
-      {
-        LOG(ERROR) << "Not a valid shear matrix";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      Matrix m = IdentityMatrix(4);
-      m(0,2) = -shear(0,2);
-      m(1,2) = -shear(1,2);
-      m(3,2) = -shear(3,2);
-
-      return m;
-    }
-  }
-
-  std::ostream& operator<<(std::ostream& s, const Vector& vec)
-  {
-    s << "(";
-    for (size_t i = 0; i < vec.size(); ++i)
-    {
-      s << vec(i);
-      if (i < (vec.size() - 1))
-        s << ", ";
-    }
-    s << ")";
-    return s;
-  }
-
-  std::ostream& operator<<(std::ostream& s, const Matrix& m)
-  {
-    ORTHANC_ASSERT(m.size1() == m.size2());
-    s << "(";
-    for (size_t i = 0; i < m.size1(); ++i)
-    {
-      s << "(";
-      for (size_t j = 0; j < m.size2(); ++j)
-      {
-        s << m(i,j);
-        if (j < (m.size2() - 1))
-          s << ", ";
-      }
-      s << ")";
-      if (i < (m.size1() - 1))
-        s << ", ";
-    }
-    s << ")";
-    return s;
-  }
-}
--- a/Framework/Toolbox/LinearAlgebra.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,299 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-// Patch for ublas in Boost 1.64.0
-// https://github.com/dealii/dealii/issues/4302
-#include <boost/version.hpp>
-#if BOOST_VERSION >= 106300  // or 64, need to check
-#  include <boost/serialization/array_wrapper.hpp>
-#endif
-
-#include <DicomFormat/DicomMap.h>
-
-#include <boost/numeric/ublas/matrix.hpp>
-#include <boost/numeric/ublas/vector.hpp>
-
-namespace OrthancStone
-{
-  typedef boost::numeric::ublas::matrix<double>   Matrix;
-  typedef boost::numeric::ublas::vector<double>   Vector;
-
-  // logs, debugging...
-  std::ostream& operator<<(std::ostream& s, const Vector& vec);
-  std::ostream& operator<<(std::ostream& s, const Matrix& m);
-
-  namespace LinearAlgebra
-  {
-    void Print(const Vector& v);
-
-    void Print(const Matrix& m);
-
-    bool ParseVector(Vector& target,
-                     const std::string& s);
-
-    bool ParseVector(Vector& target,
-                     const Orthanc::DicomMap& dataset,
-                     const Orthanc::DicomTag& tag);
-
-    inline void AssignVector(Vector& v,
-                             double v1,
-                             double v2)
-    {
-      v.resize(2);
-      v[0] = v1;
-      v[1] = v2;
-    }
-
-
-    inline void AssignVector(Vector& v,
-                             double v1)
-    {
-      v.resize(1);
-      v[0] = v1;
-    }
-
-
-    inline void AssignVector(Vector& v,
-                             double v1,
-                             double v2,
-                             double v3)
-    {
-      v.resize(3);
-      v[0] = v1;
-      v[1] = v2;
-      v[2] = v3;
-    }
-
-
-    inline void AssignVector(Vector& v,
-                             double v1,
-                             double v2,
-                             double v3,
-                             double v4)
-    {
-      v.resize(4);
-      v[0] = v1;
-      v[1] = v2;
-      v[2] = v3;
-      v[3] = v4;
-    }
-
-
-    inline Vector CreateVector(double v1)
-    {
-      Vector v;
-      AssignVector(v, v1);
-      return v;
-    }
-
-    
-    inline Vector CreateVector(double v1,
-                               double v2)
-    {
-      Vector v;
-      AssignVector(v, v1, v2);
-      return v;
-    }
-
-    
-    inline Vector CreateVector(double v1,
-                               double v2,
-                               double v3)
-    {
-      Vector v;
-      AssignVector(v, v1, v2, v3);
-      return v;
-    }
-
-    
-    inline Vector CreateVector(double v1,
-                               double v2,
-                               double v3,
-                               double v4)
-    {
-      Vector v;
-      AssignVector(v, v1, v2, v3, v4);
-      return v;
-    }
-
-
-    inline bool IsNear(double x,
-                       double y,
-                       double threshold)
-    {
-      return fabs(x - y) <= threshold;
-    }
-
-    inline bool IsNear(double x,
-                       double y)
-    {
-      // As most input is read as single-precision numbers, we take the
-      // epsilon machine for float32 into consideration to compare numbers
-      return IsNear(x, y, 10.0 * std::numeric_limits<float>::epsilon());
-    }
-
-    inline bool IsCloseToZero(double x)
-    {
-      return IsNear(x, 0.0);
-    }
-
-    void NormalizeVector(Vector& u);
-
-    void CrossProduct(Vector& result,
-                      const Vector& u,
-                      const Vector& v);
-
-    double DotProduct(const Vector& u, const Vector& v);
-
-    void FillMatrix(Matrix& target,
-                    size_t rows,
-                    size_t columns,
-                    const double values[]);
-
-    void FillVector(Vector& target,
-                    size_t size,
-                    const double values[]);
-
-    void Convert(Matrix& target,
-                 const Vector& source);
-
-    inline Matrix Transpose(const Matrix& a)
-    {
-      return boost::numeric::ublas::trans(a);
-    }
-
-
-    inline Matrix IdentityMatrix(size_t size)
-    {
-      return boost::numeric::ublas::identity_matrix<double>(size);
-    }
-
-
-    inline Matrix ZeroMatrix(size_t size1,
-                             size_t size2)
-    {
-      return boost::numeric::ublas::zero_matrix<double>(size1, size2);
-    }
-
-
-    inline Matrix Product(const Matrix& a,
-                          const Matrix& b)
-    {
-      return boost::numeric::ublas::prod(a, b);
-    }
-
-
-    inline Vector Product(const Matrix& a,
-                          const Vector& b)
-    {
-      return boost::numeric::ublas::prod(a, b);
-    }
-
-
-    inline Matrix Product(const Matrix& a,
-                          const Matrix& b,
-                          const Matrix& c)
-    {
-      return Product(a, Product(b, c));
-    }
-
-
-    inline Matrix Product(const Matrix& a,
-                          const Matrix& b,
-                          const Matrix& c,
-                          const Matrix& d)
-    {
-      return Product(a, Product(b, c, d));
-    }
-
-
-    inline Matrix Product(const Matrix& a,
-                          const Matrix& b,
-                          const Matrix& c,
-                          const Matrix& d,
-                          const Matrix& e)
-    {
-      return Product(a, Product(b, c, d, e));
-    }
-
-
-    inline Vector Product(const Matrix& a,
-                          const Matrix& b,
-                          const Vector& c)
-    {
-      return Product(Product(a, b), c);
-    }
-
-
-    inline Vector Product(const Matrix& a,
-                          const Matrix& b,
-                          const Matrix& c,
-                          const Vector& d)
-    {
-      return Product(Product(a, b, c), d);
-    }
-
-
-    double ComputeDeterminant(const Matrix& a);
-
-    bool IsOrthogonalMatrix(const Matrix& q,
-                            double threshold);
-
-    bool IsOrthogonalMatrix(const Matrix& q);
-
-    bool IsRotationMatrix(const Matrix& r,
-                          double threshold);
-
-    bool IsRotationMatrix(const Matrix& r);
-
-    void InvertUpperTriangularMatrix(Matrix& output,
-                                     const Matrix& k); 
-
-    /**
-     * This function computes the RQ decomposition of a 3x3 matrix,
-     * using Givens rotations. Reference: Algorithm A4.1 (page 579) of
-     * "Multiple View Geometry in Computer Vision" (2nd edition).  The
-     * output matrix "Q" is a rotation matrix, and "R" is upper
-     * triangular.
-     **/
-    void RQDecomposition3x3(Matrix& r,
-                            Matrix& q,
-                            const Matrix& a);
-
-    void InvertMatrix(Matrix& target,
-                      const Matrix& source);
-
-    // This is the same as "InvertMatrix()", but without exception
-    bool InvertMatrixUnsafe(Matrix& target,
-                            const Matrix& source);
-
-    void CreateSkewSymmetric(Matrix& s,
-                             const Vector& v);
-  
-    Matrix InvertScalingTranslationMatrix(const Matrix& t);
-
-    bool IsShearMatrix(const Matrix& shear);  
-
-    Matrix InvertShearMatrix(const Matrix& shear);
-  };
-}
--- a/Framework/Toolbox/OrthancDatasets/DicomDatasetReader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomDatasetReader.h"
-
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-#include <boost/lexical_cast.hpp>
-
-namespace OrthancStone
-{
-  DicomDatasetReader::DicomDatasetReader(const IDicomDataset& dataset) :
-    dataset_(dataset)
-  {
-  }
-  
-
-  std::string DicomDatasetReader::GetStringValue(const DicomPath& path,
-                                                 const std::string& defaultValue) const
-  {
-    std::string s;
-    if (dataset_.GetStringValue(s, path))
-    {
-      return s;
-    }
-    else
-    {
-      return defaultValue;
-    }
-  }
-
-
-  std::string DicomDatasetReader::GetMandatoryStringValue(const DicomPath& path) const
-  {
-    std::string s;
-    if (dataset_.GetStringValue(s, path))
-    {
-      return s;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentTag);
-    }
-  }
-
-
-  template <typename T>
-  static bool GetValueInternal(T& target,
-                               const IDicomDataset& dataset,
-                               const DicomPath& path)
-  {
-    try
-    {
-      std::string s;
-
-      if (dataset.GetStringValue(s, path))
-      {
-        target = boost::lexical_cast<T>(Orthanc::Toolbox::StripSpaces(s));
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-    catch (boost::bad_lexical_cast&)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
-    }
-  }
-
-
-  bool DicomDatasetReader::GetIntegerValue(int& target,
-                                           const DicomPath& path) const
-  {
-    return GetValueInternal<int>(target, dataset_, path);
-  }
-
-
-  bool DicomDatasetReader::GetUnsignedIntegerValue(unsigned int& target,
-                                                   const DicomPath& path) const
-  {
-    int value;
-
-    if (!GetIntegerValue(value, path))
-    {
-      return false;
-    }
-    else if (value >= 0)
-    {
-      target = static_cast<unsigned int>(value);
-      return true;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  bool DicomDatasetReader::GetFloatValue(float& target,
-                                         const DicomPath& path) const
-  {
-    return GetValueInternal<float>(target, dataset_, path);
-  }
-
-
-  bool DicomDatasetReader::GetDoubleValue(double& target,
-                                          const DicomPath& path) const
-  {
-    return GetValueInternal<double>(target, dataset_, path);
-  }
-}
--- a/Framework/Toolbox/OrthancDatasets/DicomDatasetReader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IDicomDataset.h"
-
-#include <memory>
-#include <vector>
-
-namespace OrthancStone
-{
-  class DicomDatasetReader : public boost::noncopyable
-  {
-  private:
-    const IDicomDataset&  dataset_;
-
-  public:
-    DicomDatasetReader(const IDicomDataset& dataset);
-
-    const IDicomDataset& GetDataset() const
-    {
-      return dataset_;
-    }
-
-    std::string GetStringValue(const DicomPath& path,
-                               const std::string& defaultValue) const;
-
-    std::string GetMandatoryStringValue(const DicomPath& path) const;
-
-    bool GetIntegerValue(int& target,
-                         const DicomPath& path) const;
-
-    bool GetUnsignedIntegerValue(unsigned int& target,
-                                 const DicomPath& path) const;
-
-    bool GetFloatValue(float& target,
-                       const DicomPath& path) const;
-
-    bool GetDoubleValue(double& target,
-                        const DicomPath& path) const;
-  };
-}
--- a/Framework/Toolbox/OrthancDatasets/DicomPath.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomPath.h"
-
-#include <OrthancException.h>
-
-#include <boost/lexical_cast.hpp>
-
-namespace OrthancStone
-{
-  const DicomPath::Prefix& DicomPath::GetPrefixItem(size_t depth) const
-  {
-    if (depth >= prefix_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      return prefix_[depth];
-    }
-  }
-
-
-  DicomPath::Prefix& DicomPath::GetPrefixItem(size_t depth)
-  {
-    if (depth >= prefix_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      return prefix_[depth];
-    }
-  }
-
-
-  DicomPath::DicomPath(const Orthanc::DicomTag& sequence,
-                       size_t index,
-                       const Orthanc::DicomTag& tag) :
-    finalTag_(tag)
-  {
-    AddToPrefix(sequence, index);
-  }
-
-
-  DicomPath::DicomPath(const Orthanc::DicomTag& sequence1,
-                       size_t index1,
-                       const Orthanc::DicomTag& sequence2,
-                       size_t index2,
-                       const Orthanc::DicomTag& tag) :
-    finalTag_(tag)
-  {
-    AddToPrefix(sequence1, index1);
-    AddToPrefix(sequence2, index2);
-  }
-
-
-  DicomPath::DicomPath(const Orthanc::DicomTag& sequence1,
-                       size_t index1,
-                       const Orthanc::DicomTag& sequence2,
-                       size_t index2,
-                       const Orthanc::DicomTag& sequence3,
-                       size_t index3,
-                       const Orthanc::DicomTag& tag) :
-    finalTag_(tag)
-  {
-    AddToPrefix(sequence1, index1);
-    AddToPrefix(sequence2, index2);
-    AddToPrefix(sequence3, index3);
-  }
-
-
-  static std::string FormatHexadecimal(const Orthanc::DicomTag& tag)
-  {
-    char buf[16];
-    sprintf(buf, "(%04x,%04x)", tag.GetGroup(), tag.GetElement());
-    return buf;
-  }
-  
-
-  std::string DicomPath::Format() const
-  {
-    std::string s;
-      
-    for (size_t i = 0; i < GetPrefixLength(); i++)
-    {
-      s += (FormatHexadecimal(GetPrefixTag(i)) + " / " +
-            boost::lexical_cast<std::string>(i) + " / ");
-    }
-
-    return s + FormatHexadecimal(GetFinalTag());
-  }
-}
--- a/Framework/Toolbox/OrthancDatasets/DicomPath.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <DicomFormat/DicomTag.h>
-
-#include <vector>
-#include <stddef.h>
-
-namespace OrthancStone
-{
-  class DicomPath
-  {
-  private:
-    typedef std::pair<Orthanc::DicomTag, size_t>  Prefix;
-
-    std::vector<Prefix>  prefix_;
-    Orthanc::DicomTag    finalTag_;
-
-    const Prefix& GetPrefixItem(size_t depth) const;
-
-    Prefix& GetPrefixItem(size_t depth);
-
-  public:
-    DicomPath(const Orthanc::DicomTag& finalTag) :
-      finalTag_(finalTag)
-    {
-    }
-
-    DicomPath(const Orthanc::DicomTag& sequence,
-              size_t index,
-              const Orthanc::DicomTag& tag);
-
-    DicomPath(const Orthanc::DicomTag& sequence1,
-              size_t index1,
-              const Orthanc::DicomTag& sequence2,
-              size_t index2,
-              const Orthanc::DicomTag& tag);
-
-    DicomPath(const Orthanc::DicomTag& sequence1,
-              size_t index1,
-              const Orthanc::DicomTag& sequence2,
-              size_t index2,
-              const Orthanc::DicomTag& sequence3,
-              size_t index3,
-              const Orthanc::DicomTag& tag);
-
-    void AddToPrefix(const Orthanc::DicomTag& tag,
-                     size_t position)
-    {
-      prefix_.push_back(std::make_pair(tag, position));
-    }
-
-    size_t GetPrefixLength() const
-    {
-      return prefix_.size();
-    }
-    
-    Orthanc::DicomTag GetPrefixTag(size_t depth) const
-    {
-      return GetPrefixItem(depth).first;
-    }
-
-    size_t GetPrefixIndex(size_t depth) const
-    {
-      return GetPrefixItem(depth).second;
-    }
-
-    void SetPrefixIndex(size_t depth,
-                        size_t value)
-    {
-      GetPrefixItem(depth).second = value;
-    }
-    
-    const Orthanc::DicomTag& GetFinalTag() const
-    {
-      return finalTag_;
-    }
-
-    void SetFinalTag(const Orthanc::DicomTag& tag)
-    {
-      finalTag_ = tag;
-    }
-
-    std::string Format() const;
-  };
-}
--- a/Framework/Toolbox/OrthancDatasets/FullOrthancDataset.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,203 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "FullOrthancDataset.h"
-
-#include <OrthancException.h>
-
-#include <stdio.h>
-#include <cassert>
-
-namespace OrthancStone
-{
-  static const Json::Value* AccessTag(const Json::Value& dataset,
-                                      const Orthanc::DicomTag& tag) 
-  {
-    if (dataset.type() != Json::objectValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    char name[16];
-    sprintf(name, "%04x,%04x", tag.GetGroup(), tag.GetElement());
-
-    if (!dataset.isMember(name))
-    {
-      return NULL;
-    }
-
-    const Json::Value& value = dataset[name];
-    if (value.type() != Json::objectValue ||
-        !value.isMember("Name") ||
-        !value.isMember("Type") ||
-        !value.isMember("Value") ||
-        value["Name"].type() != Json::stringValue ||
-        value["Type"].type() != Json::stringValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    return &value;
-  }
-
-
-  static const Json::Value& GetSequenceContent(const Json::Value& sequence)
-  {
-    assert(sequence.type() == Json::objectValue);
-    assert(sequence.isMember("Type"));
-    assert(sequence.isMember("Value"));
-
-    const Json::Value& value = sequence["Value"];
-      
-    if (sequence["Type"].asString() != "Sequence" ||
-        value.type() != Json::arrayValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    else
-    {
-      return value;
-    }
-  }
-
-
-  static bool GetStringInternal(std::string& result,
-                                const Json::Value& tag)
-  {
-    assert(tag.type() == Json::objectValue);
-    assert(tag.isMember("Type"));
-    assert(tag.isMember("Value"));
-
-    const Json::Value& value = tag["Value"];
-      
-    if (tag["Type"].asString() != "String" ||
-        value.type() != Json::stringValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    else
-    {
-      result = value.asString();
-      return true;
-    }
-  }
-
-
-  const Json::Value* FullOrthancDataset::LookupPath(const DicomPath& path) const
-  {
-    const Json::Value* content = &root_;
-                                  
-    for (unsigned int depth = 0; depth < path.GetPrefixLength(); depth++)
-    {
-      const Json::Value* sequence = AccessTag(*content, path.GetPrefixTag(depth));
-      if (sequence == NULL)
-      {
-        return NULL;
-      }
-
-      const Json::Value& nextContent = GetSequenceContent(*sequence);
-
-      size_t index = path.GetPrefixIndex(depth);
-      if (index >= nextContent.size())
-      {
-        return NULL;
-      }
-      else
-      {
-        content = &nextContent[static_cast<Json::Value::ArrayIndex>(index)];
-      }
-    }
-
-    return AccessTag(*content, path.GetFinalTag());
-  }
-
-
-  void FullOrthancDataset::CheckRoot() const
-  {
-    if (root_.type() != Json::objectValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  FullOrthancDataset::FullOrthancDataset(IOrthancConnection& orthanc,
-                                         const std::string& uri)
-  {
-    IOrthancConnection::RestApiGet(root_, orthanc, uri);
-    CheckRoot();
-  }
-
-
-  FullOrthancDataset::FullOrthancDataset(const std::string& content)
-  {
-    IOrthancConnection::ParseJson(root_, content);
-    CheckRoot();
-  }
-
-
-  FullOrthancDataset::FullOrthancDataset(const void* content,
-                                         size_t size)
-  {
-    IOrthancConnection::ParseJson(root_, content, size);
-    CheckRoot();
-  }
-
-
-  FullOrthancDataset::FullOrthancDataset(const Json::Value& root) :
-    root_(root)
-  {
-    CheckRoot();
-  }
-
-
-  bool FullOrthancDataset::GetStringValue(std::string& result,
-                                          const DicomPath& path) const
-  {
-    const Json::Value* value = LookupPath(path);
-
-    if (value == NULL)
-    {
-      return false;
-    }
-    else
-    {
-      return GetStringInternal(result, *value);
-    }
-  }
-
-
-  bool FullOrthancDataset::GetSequenceSize(size_t& size,
-                                           const DicomPath& path) const
-  {
-    const Json::Value* sequence = LookupPath(path);
-
-    if (sequence == NULL)
-    {
-      return false;
-    }
-    else
-    {
-      size = GetSequenceContent(*sequence).size();
-      return true;
-    }
-  }
-}
--- a/Framework/Toolbox/OrthancDatasets/FullOrthancDataset.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IOrthancConnection.h"
-#include "IDicomDataset.h"
-
-#include <json/value.h>
-
-namespace OrthancStone
-{
-  class FullOrthancDataset : public IDicomDataset
-  {
-  private:
-    Json::Value   root_;
-
-    const Json::Value* LookupPath(const DicomPath& path) const;
-
-    void CheckRoot() const;
-
-  public:
-    FullOrthancDataset(IOrthancConnection& orthanc,
-                       const std::string& uri);
-
-    FullOrthancDataset(const std::string& content);
-
-    FullOrthancDataset(const void* content,
-                       size_t size);
-
-    FullOrthancDataset(const Json::Value& root);
-
-    virtual bool GetStringValue(std::string& result,
-                                const DicomPath& path) const;
-
-    virtual bool GetSequenceSize(size_t& size,
-                                 const DicomPath& path) const;
-
-    FullOrthancDataset* Clone() const
-    {
-      return new FullOrthancDataset(this->root_);
-    }
-  };
-}
--- a/Framework/Toolbox/OrthancDatasets/IDicomDataset.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "DicomPath.h"
-
-#include <boost/noncopyable.hpp>
-#include <string>
-
-namespace OrthancStone
-{
-  class IDicomDataset : public boost::noncopyable
-  {
-  public:
-    virtual ~IDicomDataset()
-    {
-    }
-
-    virtual bool GetStringValue(std::string& result,
-                                const DicomPath& path) const = 0;
-
-    virtual bool GetSequenceSize(size_t& size,
-                                 const DicomPath& path) const = 0;
-  };
-}
--- a/Framework/Toolbox/OrthancDatasets/IOrthancConnection.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "IOrthancConnection.h"
-
-#include <OrthancException.h>
-
-#include <json/reader.h>
-
-namespace OrthancStone
-{
-  void IOrthancConnection::ParseJson(Json::Value& result,
-                                     const std::string& content)
-  {
-    Json::Reader reader;
-    
-    if (!reader.parse(content, result))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  void IOrthancConnection::ParseJson(Json::Value& result,
-                                     const void* content,
-                                     size_t size)
-  {
-    Json::Reader reader;
-    
-    if (!reader.parse(reinterpret_cast<const char*>(content),
-                      reinterpret_cast<const char*>(content) + size, result))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  void IOrthancConnection::RestApiGet(Json::Value& result,
-                                      IOrthancConnection& orthanc,
-                                      const std::string& uri)
-  {
-    std::string content;
-    orthanc.RestApiGet(content, uri);
-    ParseJson(result, content);
-  }
-
-
-  void IOrthancConnection::RestApiPost(Json::Value& result,
-                                       IOrthancConnection& orthanc,
-                                       const std::string& uri,
-                                       const std::string& body)
-  {
-    std::string content;
-    orthanc.RestApiPost(content, uri, body);
-    ParseJson(result, content);
-  }
-
-
-  void IOrthancConnection::RestApiPut(Json::Value& result,
-                                      IOrthancConnection& orthanc,
-                                      const std::string& uri,
-                                      const std::string& body)
-  {
-    std::string content;
-    orthanc.RestApiPut(content, uri, body);
-    ParseJson(result, content);
-  }
-}
--- a/Framework/Toolbox/OrthancDatasets/IOrthancConnection.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "DicomPath.h"
-
-#include <boost/noncopyable.hpp>
-#include <string>
-#include <json/value.h>
-
-namespace OrthancStone
-{
-  class IOrthancConnection : public boost::noncopyable
-  {
-  public:
-    virtual ~IOrthancConnection()
-    {
-    }
-
-    virtual void RestApiGet(std::string& result,
-                            const std::string& uri) = 0;
-
-    virtual void RestApiPost(std::string& result,
-                             const std::string& uri,
-                             const std::string& body) = 0;
-
-    virtual void RestApiPut(std::string& result,
-                            const std::string& uri,
-                            const std::string& body) = 0;
-
-    virtual void RestApiDelete(const std::string& uri) = 0;
-
-    static void ParseJson(Json::Value& result,
-                          const std::string& content);
-
-    static void ParseJson(Json::Value& result,
-                          const void* content,
-                          size_t size);
-
-    static void RestApiGet(Json::Value& result,
-                           IOrthancConnection& orthanc,
-                           const std::string& uri);
-
-    static void RestApiPost(Json::Value& result,
-                            IOrthancConnection& orthanc,
-                            const std::string& uri,
-                            const std::string& body);
-
-    static void RestApiPut(Json::Value& result,
-                           IOrthancConnection& orthanc,
-                           const std::string& uri,
-                           const std::string& body);
-  };
-}
--- a/Framework/Toolbox/OrthancDatasets/NOTES.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-The files from this folder were previously (up to Orthanc <= 1.7.1)
-contained in the folder "Plugins/Samples/Common/" from the Orthanc
-source distribution.
--- a/Framework/Toolbox/OrthancDatasets/OrthancHttpConnection.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OrthancHttpConnection.h"
-
-namespace OrthancStone
-{
-  void OrthancHttpConnection::Setup()
-  {
-    url_ = client_.GetUrl();
-
-    // Don't follow 3xx HTTP (avoid redirections to "unsupported.png" in Orthanc)
-    client_.SetRedirectionFollowed(false);  
-  }
-
-
-  OrthancHttpConnection::OrthancHttpConnection() :
-    client_(Orthanc::WebServiceParameters(), "")
-  {
-    Setup();
-  }
-
-
-  OrthancHttpConnection::OrthancHttpConnection(const Orthanc::WebServiceParameters& parameters) :
-    client_(parameters, "")
-  {
-    Setup();
-  }
-
-
-  void OrthancHttpConnection::RestApiGet(std::string& result,
-                                         const std::string& uri)
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-
-    client_.SetMethod(Orthanc::HttpMethod_Get);
-    client_.SetUrl(url_ + uri);
-    client_.ApplyAndThrowException(result);
-  }
-
-
-  void OrthancHttpConnection::RestApiPost(std::string& result,
-                                          const std::string& uri,
-                                          const std::string& body)
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-
-    client_.SetMethod(Orthanc::HttpMethod_Post);
-    client_.SetUrl(url_ + uri);
-    client_.SetBody(body);
-    client_.ApplyAndThrowException(result);
-  }
-
-
-  void OrthancHttpConnection::RestApiPut(std::string& result,
-                                         const std::string& uri,
-                                         const std::string& body)
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-
-    client_.SetMethod(Orthanc::HttpMethod_Put);
-    client_.SetUrl(url_ + uri);
-    client_.SetBody(body);
-    client_.ApplyAndThrowException(result);
-  }
-
-
-  void OrthancHttpConnection::RestApiDelete(const std::string& uri)
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-
-    std::string result;
-
-    client_.SetMethod(Orthanc::HttpMethod_Delete);
-    client_.SetUrl(url_ + uri);
-    client_.ApplyAndThrowException(result);
-  }
-}
--- a/Framework/Toolbox/OrthancDatasets/OrthancHttpConnection.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IOrthancConnection.h"
-
-#include <HttpClient.h>
-
-#include <boost/thread/mutex.hpp>
-
-namespace OrthancStone
-{
-  // This class is thread-safe
-  class OrthancHttpConnection : public IOrthancConnection
-  {
-  private:
-    boost::mutex         mutex_;
-    Orthanc::HttpClient  client_;
-    std::string          url_;
-
-    void Setup();
-
-  public:
-    OrthancHttpConnection();
-
-    OrthancHttpConnection(const Orthanc::WebServiceParameters& parameters);
-
-    virtual void RestApiGet(std::string& result,
-                            const std::string& uri);
-
-    virtual void RestApiPost(std::string& result,
-                             const std::string& uri,
-                             const std::string& body);
-
-    virtual void RestApiPut(std::string& result,
-                            const std::string& uri,
-                            const std::string& body);
-
-    virtual void RestApiDelete(const std::string& uri);
-  };
-}
--- a/Framework/Toolbox/OrthancDatasets/SimplifiedOrthancDataset.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SimplifiedOrthancDataset.h"
-
-namespace OrthancStone
-{
-  const Json::Value* SimplifiedOrthancDataset::LookupPath(const DicomPath& path) const
-  {
-    const Json::Value* content = &root_;
-                                  
-    for (unsigned int depth = 0; depth < path.GetPrefixLength(); depth++)
-    {
-      const char* name = path.GetPrefixTag(depth).GetName();
-      if (content->type() != Json::objectValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-
-      if (!content->isMember(name))
-      {
-        return NULL;
-      }
-
-      const Json::Value& sequence = (*content) [name];
-      if (sequence.type() != Json::arrayValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-      }
-
-      size_t index = path.GetPrefixIndex(depth);
-      if (index >= sequence.size())
-      {
-        return NULL;
-      }
-      else
-      {
-        content = &sequence[static_cast<Json::Value::ArrayIndex>(index)];
-      }
-    }
-
-    const char* name = path.GetFinalTag().GetName();
-
-    if (content->type() != Json::objectValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    if (!content->isMember(name))
-    {
-      return NULL;
-    }
-    else
-    {
-      return &((*content) [name]);
-    }
-  }
-
-
-  void SimplifiedOrthancDataset::CheckRoot() const
-  {
-    if (root_.type() != Json::objectValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  SimplifiedOrthancDataset::SimplifiedOrthancDataset(IOrthancConnection& orthanc,
-                                                     const std::string& uri)
-  {
-    IOrthancConnection::RestApiGet(root_, orthanc, uri);
-    CheckRoot();
-  }
-
-
-  SimplifiedOrthancDataset::SimplifiedOrthancDataset(const std::string& content)
-  {
-    IOrthancConnection::ParseJson(root_, content);
-    CheckRoot();
-  }
-
-
-  bool SimplifiedOrthancDataset::GetStringValue(std::string& result,
-                                                const DicomPath& path) const
-  {
-    const Json::Value* value = LookupPath(path);
-
-    if (value == NULL)
-    {
-      return false;
-    }
-    else if (value->type() != Json::stringValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    else
-    {
-      result = value->asString();
-      return true;
-    }
-  }
-
-
-  bool SimplifiedOrthancDataset::GetSequenceSize(size_t& size,
-                                                 const DicomPath& path) const
-  {
-    const Json::Value* sequence = LookupPath(path);
-
-    if (sequence == NULL)
-    {
-      // Inexistent path
-      return false;
-    }
-    else if (sequence->type() != Json::arrayValue)
-    {
-      // Not a sequence
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    else
-    {
-      size = sequence->size();
-      return true;
-    }
-  }
-}
--- a/Framework/Toolbox/OrthancDatasets/SimplifiedOrthancDataset.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IOrthancConnection.h"
-#include "IDicomDataset.h"
-
-namespace OrthancStone
-{
-  class SimplifiedOrthancDataset : public IDicomDataset
-  {
-  private:
-    Json::Value   root_;
-
-    const Json::Value* LookupPath(const DicomPath& path) const;
-
-    void CheckRoot() const;
-
-  public:
-    SimplifiedOrthancDataset(IOrthancConnection& orthanc,
-                             const std::string& uri);
-
-    SimplifiedOrthancDataset(const std::string& content);
-
-    virtual bool GetStringValue(std::string& result,
-                                const DicomPath& path) const;
-
-    virtual bool GetSequenceSize(size_t& size,
-                                 const DicomPath& path) const;
-  };
-}
--- a/Framework/Toolbox/ParsedDicomCache.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ParsedDicomCache.h"
-
-namespace OrthancStone
-{
-  class ParsedDicomCache::Item : public Orthanc::ICacheable
-  {
-  private:
-    std::unique_ptr<Orthanc::ParsedDicomFile>  dicom_;
-    size_t                                   fileSize_;
-    bool                                     hasPixelData_;
-    
-  public:
-    Item(Orthanc::ParsedDicomFile* dicom,
-         size_t fileSize,
-         bool hasPixelData) :
-      dicom_(dicom),
-      fileSize_(fileSize),
-      hasPixelData_(hasPixelData)
-    {
-      if (dicom == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-           
-    virtual size_t GetMemoryUsage() const
-    {
-      return fileSize_;
-    }
-
-    Orthanc::ParsedDicomFile& GetDicom() const
-    {
-      assert(dicom_.get() != NULL);
-      return *dicom_;
-    }
-
-    bool HasPixelData() const
-    {
-      return hasPixelData_;
-    }
-  };
-    
-
-  std::string ParsedDicomCache::GetIndex(unsigned int bucket,
-                                         const std::string& bucketKey)
-  {
-    return boost::lexical_cast<std::string>(bucket) + "|" + bucketKey;
-  }
-  
-
-  void ParsedDicomCache::Acquire(unsigned int bucket,
-                                 const std::string& bucketKey,
-                                 Orthanc::ParsedDicomFile* dicom,
-                                 size_t fileSize,
-                                 bool hasPixelData)
-  {
-    LOG(TRACE) << "new item stored in cache: bucket " << bucket << ", key " << bucketKey;
-    cache_.Acquire(GetIndex(bucket, bucketKey), new Item(dicom, fileSize, hasPixelData));
-  }
-
-  
-  ParsedDicomCache::Reader::Reader(ParsedDicomCache& cache,
-                                   unsigned int bucket,
-                                   const std::string& bucketKey) :
-    /**
-     * The "DcmFileFormat" object cannot be accessed from multiple
-     * threads, even if using only getters. An unique lock (mutex) is
-     * mandatory.
-     **/
-    accessor_(cache.cache_, GetIndex(bucket, bucketKey), true /* unique */)
-  {
-    if (accessor_.IsValid())
-    {
-      LOG(TRACE) << "accessing item within cache: bucket " << bucket << ", key " << bucketKey;
-      item_ = &dynamic_cast<Item&>(accessor_.GetValue());
-    }
-    else
-    {
-      LOG(TRACE) << "missing item within cache: bucket " << bucket << ", key " << bucketKey;
-      item_ = NULL;
-    }
-  }
-
-
-  bool ParsedDicomCache::Reader::HasPixelData() const
-  {
-    if (item_ == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return item_->HasPixelData();
-    }
-  }
-
-  
-  Orthanc::ParsedDicomFile& ParsedDicomCache::Reader::GetDicom() const
-  {
-    if (item_ == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return item_->GetDicom();
-    }
-  }
-
-  
-  size_t ParsedDicomCache::Reader::GetFileSize() const
-  {
-    if (item_ == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return item_->GetMemoryUsage();
-    }
-  }
-}
--- a/Framework/Toolbox/ParsedDicomCache.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <Cache/MemoryObjectCache.h>
-#include <DicomParsing/ParsedDicomFile.h>
-
-namespace OrthancStone
-{
-  class ParsedDicomCache : public boost::noncopyable
-  {
-  private:
-    class Item;
-
-    static std::string GetIndex(unsigned int bucket,
-                                const std::string& bucketKey);
-    
-    Orthanc::MemoryObjectCache  cache_;
-
-  public:
-    ParsedDicomCache(size_t size)
-    {
-      cache_.SetMaximumSize(size);
-    }
-
-    void Invalidate(unsigned int bucket,
-                    const std::string& bucketKey)
-    {
-      cache_.Invalidate(GetIndex(bucket, bucketKey));
-    }
-    
-    void Acquire(unsigned int bucket,
-                 const std::string& bucketKey,
-                 Orthanc::ParsedDicomFile* dicom,
-                 size_t fileSize,
-                 bool hasPixelData);
-
-    class Reader : public boost::noncopyable
-    {
-    private:
-      Orthanc::MemoryObjectCache::Accessor accessor_;
-      Item*                                item_;
-
-    public:
-      Reader(ParsedDicomCache& cache,
-             unsigned int bucket,
-             const std::string& bucketKey);
-
-      bool IsValid() const
-      {
-        return item_ != NULL;
-      }
-
-      bool HasPixelData() const;
-
-      Orthanc::ParsedDicomFile& GetDicom() const;
-
-      size_t GetFileSize() const;
-    };
-  };
-}
--- a/Framework/Toolbox/ParsedDicomDataset.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ParsedDicomDataset.h"
-
-#include <dcmtk/dcmdata/dcfilefo.h>
-
-namespace OrthancStone
-{
-  static DcmItem* LookupPath(Orthanc::ParsedDicomFile& dicom,
-                             const DicomPath& path)
-  {
-    DcmItem* node = dicom.GetDcmtkObject().getDataset();
-      
-    for (size_t i = 0; i < path.GetPrefixLength(); i++)
-    {
-      const Orthanc::DicomTag& tmp = path.GetPrefixTag(i);
-      DcmTagKey tag(tmp.GetGroup(), tmp.GetElement());
-
-      DcmSequenceOfItems* sequence = NULL;
-      if (!node->findAndGetSequence(tag, sequence).good() ||
-          sequence == NULL)
-      {
-        return NULL;
-      }
-
-      unsigned long pos = path.GetPrefixIndex(i);
-      if (pos >= sequence->card())
-      {
-        return NULL;
-      }
-
-      node = sequence->getItem(pos);
-      if (node == NULL)
-      {
-        return NULL;
-      }
-    }
-
-    return node;
-  }
-
-    
-  bool ParsedDicomDataset::GetStringValue(std::string& result,
-                                          const DicomPath& path) const
-  {
-    DcmItem* node = LookupPath(dicom_, path);
-      
-    if (node != NULL)
-    {
-      DcmTagKey tag(path.GetFinalTag().GetGroup(), path.GetFinalTag().GetElement());
-
-      const char* s = NULL;
-      if (node->findAndGetString(tag, s).good() &&
-          s != NULL)
-      {
-        result.assign(s);
-        return true;
-      }
-    }
-
-    return false;
-  }
-
-
-  bool ParsedDicomDataset::GetSequenceSize(size_t& size,
-                                           const DicomPath& path) const
-  {
-    DcmItem* node = LookupPath(dicom_, path);
-      
-    if (node != NULL)
-    {
-      DcmTagKey tag(path.GetFinalTag().GetGroup(), path.GetFinalTag().GetElement());
-
-      DcmSequenceOfItems* s = NULL;
-      if (node->findAndGetSequence(tag, s).good() &&
-          s != NULL)
-      {
-        size = s->card();
-        return true;
-      }
-    }
-
-    return false;
-  }
-}
--- a/Framework/Toolbox/ParsedDicomDataset.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "OrthancDatasets/IDicomDataset.h"
-
-#include <DicomParsing/ParsedDicomFile.h>
-
-namespace OrthancStone
-{
-  class ParsedDicomDataset : public IDicomDataset
-  {
-  private:
-    Orthanc::ParsedDicomFile&  dicom_;
-
-  public:
-    ParsedDicomDataset(Orthanc::ParsedDicomFile& dicom) :
-      dicom_(dicom)
-    {
-    }
-
-    virtual bool GetStringValue(std::string& result,
-                                const DicomPath& path) const ORTHANC_OVERRIDE;
-
-    virtual bool GetSequenceSize(size_t& size,
-                                 const DicomPath& path) const ORTHANC_OVERRIDE;
-  };
-}
--- a/Framework/Toolbox/PixelTestPatterns.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-// PixelTestPatterns.h
-
-#pragma once
-
-#include "../StoneException.h"
-
-#include <Images/ImageAccessor.h>
-
-#include <string>
-#include <stdint.h>
-#include <math.h>
-
-namespace OrthancStone
-{
-  namespace PixelTestPatterns
-  {
-    template<typename T, typename U>
-    inline uint8_t byteAddClip(T v1, U v2)
-    {
-      double tmp = static_cast<double>(v1) + static_cast<double>(v2);
-      if (tmp > 255.0)
-        tmp = 255;
-      if (tmp < 0.0)
-        tmp = 0;
-      return static_cast<uint8_t>(tmp+0.5);
-    }
-
-    // fills the area with a horizontal gradient.
-    // leftmost pixels are filled with r0 g0 b0
-    // rightmost pixels are filled with r1 g1 b1
-    // linear interpolation in-between
-    inline void fillWithHGradient(Orthanc::ImageAccessor& target,
-      uint8_t r0, uint8_t g0, uint8_t b0,
-      uint8_t r1, uint8_t g1, uint8_t b1)
-    {
-      if (target.GetFormat() != Orthanc::PixelFormat_RGBA32) {
-        ORTHANC_ASSERT(false, "Wrong pixel format");
-      }
-      const unsigned int width = target.GetWidth();
-      const unsigned int height = target.GetHeight();
-
-      ORTHANC_ASSERT(width > 0);
-      ORTHANC_ASSERT(height > 0);
-
-      double invWidth = 1.0 / static_cast<double>(target.GetWidth());
-      double rIncr = (static_cast<double>(r1) - static_cast<double>(r0))* invWidth;
-      double gIncr = (static_cast<double>(g1) - static_cast<double>(g0))* invWidth;
-      double bIncr = (static_cast<double>(b1) - static_cast<double>(b0))* invWidth;
-
-      for (unsigned int y = 0; y < height; y++)
-      {
-        uint8_t r = r0;
-        uint8_t g = g0;
-        uint8_t b = b0;
-        uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
-        for (unsigned int x = 0; x < width; x++)
-        {
-          q[0] = r;
-          q[1] = g;
-          q[2] = b;
-          q[3] = 255;
-          r = byteAddClip(r, rIncr);
-          g = byteAddClip(g, gIncr);
-          b = byteAddClip(b, bIncr);
-          q += 4;
-        }
-      }
-    }
-
-    inline void fillWithVGradient(Orthanc::ImageAccessor& target,
-      uint8_t r0, uint8_t g0, uint8_t b0,
-      uint8_t r1, uint8_t g1, uint8_t b1)
-    {
-      if (target.GetFormat() != Orthanc::PixelFormat_RGBA32) {
-        ORTHANC_ASSERT(false, "Wrong pixel format");
-      }
-      const unsigned int width = target.GetWidth();
-      const unsigned int height = target.GetHeight();
-
-      ORTHANC_ASSERT(width > 0);
-      ORTHANC_ASSERT(height > 0);
-
-      double invHeight = 1.0 / static_cast<double>(target.GetHeight());
-      double rIncr = (static_cast<double>(r1) - static_cast<double>(r0))* invHeight;
-      double gIncr = (static_cast<double>(g1) - static_cast<double>(g0))* invHeight;
-      double bIncr = (static_cast<double>(b1) - static_cast<double>(b0))* invHeight;
-
-      uint8_t r = r0;
-      uint8_t g = g0;
-      uint8_t b = b0;
-      for (unsigned int y = 0; y < height; y++)
-      {
-        uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
-        for (unsigned int x = 0; x < width; x++)
-        {
-          q[0] = r;
-          q[1] = g;
-          q[2] = b;
-          q[3] = 255;
-          q += 4;
-        }
-        r = byteAddClip(r, rIncr);
-        g = byteAddClip(g, gIncr);
-        b = byteAddClip(b, bIncr);
-      }
-    }
-
-  }
-}
-
--- a/Framework/Toolbox/ShearWarpProjectiveTransform.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,664 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ShearWarpProjectiveTransform.h"
-
-#include "ImageGeometry.h"
-#include "Extent2D.h"
-#include "FiniteProjectiveCamera.h"
-#include "GeometryToolbox.h"
-
-#include <Images/PixelTraits.h>
-#include <Images/ImageProcessing.h>
-#include <OrthancException.h>
-#include <Logging.h>
-
-#include <boost/numeric/ublas/matrix_proxy.hpp>
-#include <boost/math/special_functions/round.hpp>
-#include <cassert>
-
-
-namespace OrthancStone
-{
-  static bool IsValidShear(const Matrix& M_shear)
-  {
-    return (LinearAlgebra::IsCloseToZero(M_shear(0, 1)) &&
-            LinearAlgebra::IsCloseToZero(M_shear(1, 0)) &&
-            LinearAlgebra::IsCloseToZero(M_shear(2, 0)) &&
-            LinearAlgebra::IsCloseToZero(M_shear(2, 1)) &&
-            LinearAlgebra::IsNear(1.0,   M_shear(2, 2)) &&
-            LinearAlgebra::IsCloseToZero(M_shear(2, 3)) &&
-            LinearAlgebra::IsCloseToZero(M_shear(3, 0)) &&
-            LinearAlgebra::IsCloseToZero(M_shear(3, 1)) &&
-            LinearAlgebra::IsNear(1.0,   M_shear(3, 3)));
-  }
-
-
-  static void ComputeShearParameters(double& scaling,
-                                     double& offsetX,
-                                     double& offsetY,
-                                     const Matrix& shear,
-                                     double z)
-  {
-    // Check out: ../../Resources/Computations/ComputeShearParameters.py
-    
-    if (!LinearAlgebra::IsShearMatrix(shear))
-    {
-      LOG(ERROR) << "Not a valid shear matrix";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-    
-    scaling = 1.0 / (shear(3,2) * z + 1.0);
-    offsetX = shear(0,2) * z * scaling;
-    offsetY = shear(1,2) * z * scaling;
-  }  
-
-
-  ShearWarpProjectiveTransform::
-  ShearWarpProjectiveTransform(const Matrix& M_view,
-                               //const Matrix& P,           // Permutation applied to the volume
-                               unsigned int volumeWidth,
-                               unsigned int volumeHeight,
-                               unsigned int volumeDepth,
-                               double pixelSpacingX,
-                               double pixelSpacingY,
-                               unsigned int imageWidth,
-                               unsigned int imageHeight)
-  {
-    eye_o.resize(4);
-
-    {
-      // Find back the camera center given the "M_view" matrix
-      const double m11 = M_view(0, 0);
-      const double m12 = M_view(0, 1);
-      const double m13 = M_view(0, 2);
-      const double m14 = M_view(0, 3);
-      const double m21 = M_view(1, 0);
-      const double m22 = M_view(1, 1);
-      const double m23 = M_view(1, 2);
-      const double m24 = M_view(1, 3);
-      const double m41 = M_view(3, 0);
-      const double m42 = M_view(3, 1);
-      const double m43 = M_view(3, 2);
-      const double m44 = M_view(3, 3);
-
-      // Equations (A.8) to (A.11) on page 203. Also check out
-      // "Finding the camera center" in "Multiple View Geometry in
-      // Computer Vision - 2nd edition", page 163.
-      const double vx[9] = { m12, m13, m14, m22, m23, m24, m42, m43, m44 };
-      const double vy[9] = { m11, m13, m14, m21, m23, m24, m41, m43, m44 };
-      const double vz[9] = { m11, m12, m14, m21, m22, m24, m41, m42, m44 };
-      const double vw[9] = { m11, m12, m13, m21, m22, m23, m41, m42, m43 };
-
-      Matrix m;
-
-      LinearAlgebra::FillMatrix(m, 3, 3, vx);
-      eye_o[0] = -LinearAlgebra::ComputeDeterminant(m);
-
-      LinearAlgebra::FillMatrix(m, 3, 3, vy);
-      eye_o[1] = LinearAlgebra::ComputeDeterminant(m);
-
-      LinearAlgebra::FillMatrix(m, 3, 3, vz);
-      eye_o[2] = -LinearAlgebra::ComputeDeterminant(m);
-
-      LinearAlgebra::FillMatrix(m, 3, 3, vw);
-      eye_o[3] = LinearAlgebra::ComputeDeterminant(m);
-
-      if (LinearAlgebra::IsCloseToZero(eye_o[3]))
-      {
-        LOG(ERROR) << "The shear-warp projective transform is not applicable to affine cameras";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-
-#if 0
-    // Assume "T_shift = I" (the eye does not lie on plane k = 0)
-    const Matrix T_shift = LinearAlgebra::IdentityMatrix(4);
-    
-    // Equation (A.13) on page 204, given that the inverse of a
-    // permutation matrix is its transpose (TODO CHECK). If no T_shift
-    // or permutation P is applied, M'_view == M_view
-    const Matrix MM_view = LinearAlgebra::Product(
-      M_view,
-      LinearAlgebra::Transpose(P),
-      LinearAlgebra::InvertScalingTranslationMatrix(T_shift));
-#else
-    // This is a shortcut, as we take "T_shift = I" and "P = I"
-    const Matrix MM_view = M_view;
-#endif
-
-    // Equation (A.14) on page 207
-    Matrix MM_shear = LinearAlgebra::IdentityMatrix(4);
-    MM_shear(0, 2) = -eye_o[0] / eye_o[2];
-    MM_shear(1, 2) = -eye_o[1] / eye_o[2];
-    MM_shear(3, 2) = -eye_o[3] / eye_o[2];
-
-
-    // Compute the extent of the intermediate image
-    Extent2D extent;
-    double maxScaling = 1;
-
-    {
-      // Compute the shearing factors of the two extreme planes of the
-      // volume (z=0 and z=volumeDepth)
-      double scaling, offsetX, offsetY;
-      ComputeShearParameters(scaling, offsetX, offsetY, MM_shear, 0);
-
-      if (scaling > 0)
-      {
-        extent.AddPoint(offsetX, offsetY);
-        extent.AddPoint(offsetX + static_cast<double>(volumeWidth) * scaling,
-                        offsetY + static_cast<double>(volumeHeight) * scaling);
-
-        if (scaling > maxScaling)
-        {
-          maxScaling = scaling;
-        }
-      }
-
-      ComputeShearParameters(scaling, offsetX, offsetY, MM_shear, volumeDepth);
-
-      if (scaling > 0)
-      {
-        extent.AddPoint(offsetX, offsetY);
-        extent.AddPoint(offsetX + static_cast<double>(volumeWidth) * scaling,
-                        offsetY + static_cast<double>(volumeHeight) * scaling);
-
-        if (scaling > maxScaling)
-        {
-          maxScaling = scaling;
-        }
-      }
-    }
-      
-    if (LinearAlgebra::IsCloseToZero(extent.GetWidth()) ||
-        LinearAlgebra::IsCloseToZero(extent.GetHeight()))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    intermediateWidth_ = 
-      static_cast<unsigned int>(std::ceil(extent.GetWidth() / maxScaling));
-    intermediateHeight_ = 
-      static_cast<unsigned int>(std::ceil(extent.GetHeight() / maxScaling));
-
-    // This is the product "T * S" in Equation (A.16) on page 209
-    Matrix TS = LinearAlgebra::Product(
-      GeometryToolbox::CreateTranslationMatrix(
-        static_cast<double>(intermediateWidth_) / 2.0,
-        static_cast<double>(intermediateHeight_) / 2.0, 0),
-      GeometryToolbox::CreateScalingMatrix(
-        1.0 / maxScaling, 1.0 / maxScaling, 1),
-      GeometryToolbox::CreateTranslationMatrix(
-        -extent.GetCenterX(), -extent.GetCenterY(), 0));
-    
-    // This is Equation (A.16) on page 209. WARNING: There is an
-    // error in Lacroute's thesis: "inv(MM_shear)" is used instead
-    // of "MM_shear".
-    M_shear = LinearAlgebra::Product(TS, MM_shear);
-
-    if (!IsValidShear(M_shear))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    // This is Equation (A.17) on page 209
-    Matrix tmp;
-    LinearAlgebra::InvertMatrix(tmp, M_shear);
-    M_warp = LinearAlgebra::Product(MM_view, tmp);
-
-    // Intrinsic parameters of the camera
-    k_ = LinearAlgebra::ZeroMatrix(3, 4);
-    k_(0, 0) = 1.0 / pixelSpacingX;
-    k_(0, 3) = static_cast<double>(imageWidth) / 2.0;
-    k_(1, 1) = 1.0 / pixelSpacingY;
-    k_(1, 3) = static_cast<double>(imageHeight) / 2.0;
-    k_(2, 3) = 1.0;
-  }
-
-
-  FiniteProjectiveCamera *ShearWarpProjectiveTransform::CreateCamera() const
-  {
-    Matrix p = LinearAlgebra::Product(k_, M_warp, M_shear);
-    return new FiniteProjectiveCamera(p);
-  }
-  
-
-  void ShearWarpProjectiveTransform::ComputeShearOnSlice(double& a11,
-                                                         double& b1,
-                                                         double& a22,
-                                                         double& b2,
-                                                         double& shearedZ,
-                                                         const double sourceZ)
-  {
-    // Check out: ../../Resources/Computations/ComputeShearOnSlice.py
-    assert(IsValidShear(M_shear));
-
-    const double s11 = M_shear(0, 0);
-    const double s13 = M_shear(0, 2);
-    const double s14 = M_shear(0, 3);
-    const double s22 = M_shear(1, 1);
-    const double s23 = M_shear(1, 2);
-    const double s24 = M_shear(1, 3);
-    const double s43 = M_shear(3, 2);
-
-    double scaling = 1.0 / (s43 * sourceZ + 1.0);
-    shearedZ = sourceZ * scaling;
-
-    a11 = s11 * scaling;
-    a22 = s22 * scaling;
-
-    b1 = (s13 * sourceZ + s14) * scaling;
-    b2 = (s23 * sourceZ + s24) * scaling;
-  }
-
-
-  Matrix ShearWarpProjectiveTransform::CalibrateView(const Vector& camera,
-                                                     const Vector& principalPoint,
-                                                     double angle)
-  {
-    if (camera.size() != 3 ||
-        principalPoint.size() != 3)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    const double sid = boost::numeric::ublas::norm_2(camera - principalPoint);
-      
-    Matrix a;
-    GeometryToolbox::AlignVectorsWithRotation(a, camera - principalPoint,
-                                              LinearAlgebra::CreateVector(0, 0, -1));
-
-    Matrix r = LinearAlgebra::Product(GeometryToolbox::CreateRotationMatrixAlongZ(angle), a);
-
-    a = LinearAlgebra::ZeroMatrix(4, 4);
-    boost::numeric::ublas::subrange(a, 0, 3, 0, 3) = r;
-
-    const Vector v = LinearAlgebra::Product(r, -camera);
-    a(0, 3) = v[0];
-    a(1, 3) = v[1];
-    a(2, 3) = v[2];
-    a(3, 3) = 1;
-
-    Matrix perspective = LinearAlgebra::ZeroMatrix(4, 4);
-    // https://stackoverflow.com/questions/5267866/calculation-of-a-perspective-transformation-matrix
-    perspective(0, 0) = sid;
-    perspective(1, 1) = sid;
-    perspective(2, 2) = sid;
-    perspective(3, 2) = 1;
-
-    Matrix M_view = LinearAlgebra::Product(perspective, a);
-    assert(M_view.size1() == 4 &&
-           M_view.size2() == 4);
-
-    {
-      // Sanity checks
-      Vector p1 = LinearAlgebra::CreateVector(camera[0], camera[1], camera[2], 1.0);
-      Vector p2 = LinearAlgebra::CreateVector(principalPoint[0], principalPoint[1], principalPoint[2], 1.0);
-      
-      Vector v1 = LinearAlgebra::Product(M_view, p1);
-      Vector v2 = LinearAlgebra::Product(M_view, p2);
-
-      if (!LinearAlgebra::IsCloseToZero(v1[3]) ||  // Must be mapped to singularity (w=0)
-          LinearAlgebra::IsCloseToZero(v2[3]))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      // The principal point must be mapped to (0,0,z,1)
-      v2 /= v2[3];
-      if (!LinearAlgebra::IsCloseToZero(v2[0]) ||
-          !LinearAlgebra::IsCloseToZero(v2[1]))
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }      
-    }
-
-    return M_view;
-  }
-
-
-  template <Orthanc::PixelFormat SourceFormat,
-            Orthanc::PixelFormat TargetFormat,
-            bool MIP>
-  static void ApplyAxialInternal(Orthanc::ImageAccessor& target,
-                                 float& maxValue,
-                                 const Matrix& M_view,
-                                 const ImageBuffer3D& source,
-                                 const VolumeImageGeometry& geometry,
-                                 double pixelSpacing,
-                                 unsigned int countSlices,
-                                 ImageInterpolation shearInterpolation,
-                                 ImageInterpolation warpInterpolation)
-  {
-    typedef Orthanc::PixelTraits<SourceFormat> SourceTraits;
-    typedef Orthanc::PixelTraits<TargetFormat> TargetTraits;
-
-    /**
-     * Step 1: Precompute some information.
-     **/
-       
-    if (target.GetFormat() != TargetFormat ||
-        source.GetFormat() != SourceFormat ||
-        !std::numeric_limits<float>::is_iec559 ||
-        sizeof(float) != 4)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    if (countSlices > source.GetDepth())
-    {
-      countSlices = source.GetDepth();
-    }
-
-    if (countSlices == 0)
-    {
-      maxValue = 0;
-      Orthanc::ImageProcessing::Set(target, 0);
-      return;
-    }
-    
-    LOG(INFO) << "Number of rendered slices: " << countSlices;
-
-
-    /**
-     * Step 2: Extract the shear-warp transform corresponding to
-     * M_view.
-     **/
-    
-    // Compute the "world" matrix that maps the source volume to the
-    // (0,0,0)->(1,1,1) unit cube
-    Vector origin = geometry.GetCoordinates(0, 0, 0);
-    Vector ps = geometry.GetVoxelDimensions(VolumeProjection_Axial);
-    Matrix world = LinearAlgebra::Product(
-      GeometryToolbox::CreateScalingMatrix(1.0 / ps[0], 1.0 / ps[1], 1.0 / ps[2]),
-      GeometryToolbox::CreateTranslationMatrix(-origin[0], -origin[1], -origin[2]));
-
-    Matrix worldInv;
-    LinearAlgebra::InvertMatrix(worldInv, world);
-
-    ShearWarpProjectiveTransform shearWarp(LinearAlgebra::Product(M_view, worldInv),
-                                           /*LinearAlgebra::IdentityMatrix(4),*/
-                                           source.GetWidth(),
-                                           source.GetHeight(),
-                                           source.GetDepth(),
-                                           pixelSpacing, pixelSpacing,
-                                           target.GetWidth(), target.GetHeight());
-    
-    const unsigned int intermediateWidth = shearWarp.GetIntermediateWidth();
-    const unsigned int intermediateHeight = shearWarp.GetIntermediateHeight();
-
-
-    /**
-     * Step 3: Apply the "shear" part of the transform to form the
-     * intermediate image. The sheared images are accumulated into the
-     * Float32 image "accumulator". The number of samples available
-     * for each pixel is stored in the "counter" image.
-     **/
-
-    std::unique_ptr<Orthanc::ImageAccessor> accumulator, counter, intermediate;
-
-    accumulator.reset(new Orthanc::Image(Orthanc::PixelFormat_Float32,
-                                         intermediateWidth, intermediateHeight, false));
-    counter.reset(new Orthanc::Image(Orthanc::PixelFormat_Grayscale16,
-                                     intermediateWidth, intermediateHeight, false)); 
-    intermediate.reset(new Orthanc::Image(SourceFormat, intermediateWidth, intermediateHeight, false));
-
-    Orthanc::ImageProcessing::Set(*accumulator, 0);
-    Orthanc::ImageProcessing::Set(*counter, 0);
-
-    // Loop around the slices of the volume
-    for (unsigned int i = 0; i <= countSlices; i++)
-    {
-      // (3.a) Compute the shear for this specific slice
-      unsigned int z = static_cast<unsigned int>(
-        boost::math::iround(static_cast<double>(i) /
-                            static_cast<double>(countSlices) *
-                            static_cast<double>(source.GetDepth() - 1)));
-      
-      double a11, b1, a22, b2, vz;
-      shearWarp.ComputeShearOnSlice(a11, b1, a22, b2, vz, static_cast<double>(z) + 0.5);
-
-
-      {
-        // (3.b) Detect the "useful" portion of the intermediate image
-        // for this slice (i.e. the bounding box where the source
-        // slice is mapped to by the shear), so as to update "counter"
-        Matrix a = LinearAlgebra::ZeroMatrix(3, 3);
-        a(0,0) = a11;
-        a(0,2) = b1;
-        a(1,1) = a22;
-        a(1,2) = b2;
-        a(2,2) = 1;
-
-        unsigned int x1, y1, x2, y2;
-        if (GetProjectiveTransformExtent(x1, y1, x2, y2, a,
-                                         source.GetWidth(), source.GetHeight(),
-                                         intermediateWidth, intermediateHeight))
-        {
-          for (unsigned int y = y1; y <= y2; y++)
-          {
-            uint16_t* p = reinterpret_cast<uint16_t*>(counter->GetRow(y)) + x1;
-            for (unsigned int x = x1; x <= x2; x++, p++)
-            {
-              if (MIP)
-              {
-                // TODO - In the case of MIP, "counter" could be
-                // reduced to "PixelFormat_Grayscale8" to reduce
-                // memory usage
-                *p = 1;
-              }
-              else
-              {
-                *p += 1;
-              }
-            }
-          }
-        }
-      }
-
-
-      {
-        // (3.c) Shear the source slice into a temporary image
-        ImageBuffer3D::SliceReader reader(source, VolumeProjection_Axial, z);      
-        ApplyAffineTransform(*intermediate, reader.GetAccessor(),
-                             a11, 0,   b1,
-                             0,   a22, b2,
-                             shearInterpolation, true);
-      }
-      
-
-      for (unsigned int y = 0; y < intermediateHeight; y++)
-      {
-        // (3.d) Accumulate the pixels of the sheared image into "accumulator"
-        const typename SourceTraits::PixelType* p =
-          reinterpret_cast<const typename SourceTraits::PixelType*>(intermediate->GetConstRow(y));
-
-        float* q = reinterpret_cast<float*>(accumulator->GetRow(y));
-      
-        for (unsigned int x = 0; x < intermediateWidth; x++)
-        {
-          float pixel = SourceTraits::PixelToFloat(*p);
-          
-          if (MIP)
-          {
-            // Get maximum for MIP
-            if (*q < pixel)
-            {
-              *q = pixel;
-            }
-          }
-          else
-          {
-            *q += pixel;
-          }
-          
-          p++;
-          q++;
-        }
-      }
-    }
-
-
-    /**
-     * Step 4: The intermediate image (that will be transformed by the
-     * "warp") is now available as an accumulator image together with
-     * a counter image. "Flatten" these two images into one.
-     **/
-
-    intermediate.reset(new Orthanc::Image
-                       (TargetFormat, intermediateWidth, intermediateHeight, false));
-
-    maxValue = 0;
-    
-    for (unsigned int y = 0; y < intermediateHeight; y++)
-    {
-      const float *qacc = reinterpret_cast<const float*>(accumulator->GetConstRow(y));
-      const uint16_t *qcount = reinterpret_cast<const uint16_t*>(counter->GetConstRow(y));
-      typename TargetTraits::PixelType *p =
-        reinterpret_cast<typename TargetTraits::PixelType*>(intermediate->GetRow(y));
-
-      for (unsigned int x = 0; x < intermediateWidth; x++)
-      {
-        if (*qcount == 0)
-        {
-          TargetTraits::SetZero(*p);
-        }
-        else
-        {
-          *p = static_cast<typename TargetTraits::PixelType>
-            (*qacc / static_cast<float>(*qcount));
-
-          if (*p > maxValue)
-          {
-            maxValue = *p;
-          }
-        }
-        
-        p++;
-        qacc++;
-        qcount++;
-      }
-    }
-
-    // We don't need the accumulator images anymore
-    accumulator.reset(NULL);
-    counter.reset(NULL);
-
-    
-    /**
-     * Step 6: Apply the "warp" part of the transform to map the
-     * intermediate image to the final image.
-     **/
-
-    Matrix warp;
-
-    {
-      // (5.a) Compute the "warp" matrix by removing the 3rd row and
-      // 3rd column from the GetWarp() matrix
-      // Check out: ../../Resources/Computations/ComputeWarp.py
-    
-      Matrix fullWarp = LinearAlgebra::Product
-        (shearWarp.GetIntrinsicParameters(), shearWarp.GetWarp());
-
-      const double v[] = {
-        fullWarp(0,0), fullWarp(0,1), fullWarp(0,3), 
-        fullWarp(1,0), fullWarp(1,1), fullWarp(1,3), 
-        fullWarp(2,0), fullWarp(2,1), fullWarp(2,3)
-      };
-
-      LinearAlgebra::FillMatrix(warp, 3, 3, v);
-    }
-
-    // (5.b) Apply the projective transform to the image
-    ApplyProjectiveTransform(target, *intermediate, warp, warpInterpolation, true);
-  }
-
-
-  template <Orthanc::PixelFormat SourceFormat,
-            Orthanc::PixelFormat TargetFormat>
-  static void ApplyAxialInternal2(Orthanc::ImageAccessor& target,
-                                  float& maxValue,
-                                  const Matrix& M_view,
-                                  const ImageBuffer3D& source,
-                                  const VolumeImageGeometry& geometry,
-                                  bool mip,
-                                  double pixelSpacing,
-                                  unsigned int countSlices,
-                                  ImageInterpolation shearInterpolation,
-                                  ImageInterpolation warpInterpolation)
-  {
-    if (mip)
-    {
-      ApplyAxialInternal<SourceFormat, TargetFormat, true>
-        (target, maxValue, M_view, source, geometry, pixelSpacing,
-         countSlices, shearInterpolation, warpInterpolation);
-    }
-    else
-    {
-      ApplyAxialInternal<SourceFormat, TargetFormat, false>
-        (target, maxValue, M_view, source, geometry, pixelSpacing,
-         countSlices, shearInterpolation, warpInterpolation);
-    } 
-  }
-  
-
-  Orthanc::ImageAccessor*
-  ShearWarpProjectiveTransform::ApplyAxial(float& maxValue,
-                                           const Matrix& M_view,
-                                           const ImageBuffer3D& source,
-                                           const VolumeImageGeometry& geometry,
-                                           Orthanc::PixelFormat targetFormat,
-                                           unsigned int targetWidth,
-                                           unsigned int targetHeight,
-                                           bool mip,
-                                           double pixelSpacing,
-                                           unsigned int countSlices,
-                                           ImageInterpolation shearInterpolation,
-                                           ImageInterpolation warpInterpolation)
-  {
-    std::unique_ptr<Orthanc::ImageAccessor> target
-      (new Orthanc::Image(targetFormat, targetWidth, targetHeight, false));
-    
-    if (source.GetFormat() == Orthanc::PixelFormat_Grayscale16 &&
-        targetFormat == Orthanc::PixelFormat_Grayscale16)
-    {
-      ApplyAxialInternal2<Orthanc::PixelFormat_Grayscale16,
-                          Orthanc::PixelFormat_Grayscale16>
-        (*target, maxValue, M_view, source, geometry, mip, pixelSpacing,
-         countSlices, shearInterpolation, warpInterpolation);
-    }
-    else if (source.GetFormat() == Orthanc::PixelFormat_SignedGrayscale16 &&
-             targetFormat == Orthanc::PixelFormat_SignedGrayscale16)
-    {
-      ApplyAxialInternal2<Orthanc::PixelFormat_SignedGrayscale16,
-                          Orthanc::PixelFormat_SignedGrayscale16>
-        (*target, maxValue, M_view, source, geometry, mip, pixelSpacing,
-         countSlices, shearInterpolation, warpInterpolation);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-
-    return target.release();
-  }
-}
--- a/Framework/Toolbox/ShearWarpProjectiveTransform.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "FiniteProjectiveCamera.h"
-
-namespace OrthancStone
-{
-  class ShearWarpProjectiveTransform : public boost::noncopyable
-  {
-  private:
-    Matrix        k_;
-    Matrix        M_shear;
-    Matrix        M_warp;
-    Vector        eye_o;
-    unsigned int  intermediateWidth_;
-    unsigned int  intermediateHeight_;
-
-  public:
-    ShearWarpProjectiveTransform(const Matrix& M_view,
-                                 //const Matrix& P,           // Permutation applied to the volume
-                                 unsigned int volumeWidth,
-                                 unsigned int volumeHeight,
-                                 unsigned int volumeDepth,
-                                 double pixelSpacingX,
-                                 double pixelSpacingY,
-                                 unsigned int imageWidth,
-                                 unsigned int imageHeight);
-
-    const Matrix& GetIntrinsicParameters() const
-    {
-      return k_;
-    }
-
-    const Matrix& GetShear() const
-    {
-      return M_shear;
-    }
-
-    const Matrix& GetWarp() const
-    {
-      return M_warp;
-    }
-
-    const Vector& GetCameraCenter() const
-    {
-      return eye_o;
-    }
-
-    unsigned int GetIntermediateWidth() const
-    {
-      return intermediateWidth_;
-    }
-
-    unsigned int GetIntermediateHeight() const
-    {
-      return intermediateHeight_;
-    }
-
-    FiniteProjectiveCamera *CreateCamera() const;
-
-    void ComputeShearOnSlice(double& a11,
-                             double& b1,
-                             double& a22,
-                             double& b2,
-                             double& shearedZ,
-                             const double sourceZ);
-
-    static Matrix CalibrateView(const Vector& camera,
-                                const Vector& principalPoint,
-                                double angle);
-
-    static Orthanc::ImageAccessor* ApplyAxial(float& maxValue,
-                                              const Matrix& M_view,  // cf. "CalibrateView()"
-                                              const ImageBuffer3D& source,
-                                              const VolumeImageGeometry& geometry,
-                                              Orthanc::PixelFormat targetFormat,
-                                              unsigned int targetWidth,
-                                              unsigned int targetHeight,
-                                              bool mip,
-                                              double pixelSpacing,
-                                              unsigned int countSlices,
-                                              ImageInterpolation shearInterpolation,
-                                              ImageInterpolation warpInterpolation);
-  };
-}
--- a/Framework/Toolbox/SlicesSorter.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,357 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SlicesSorter.h"
-
-#include "GeometryToolbox.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  class SlicesSorter::SliceWithDepth : public boost::noncopyable
-  {
-  private:
-    CoordinateSystem3D  geometry_;
-    double              depth_;
-
-    std::unique_ptr<Orthanc::IDynamicObject>   payload_;
-
-  public:
-    SliceWithDepth(const CoordinateSystem3D& geometry,
-                   Orthanc::IDynamicObject* payload) :
-      geometry_(geometry),
-      depth_(0),
-      payload_(payload)
-    {
-    }
-
-    void SetNormal(const Vector& normal)
-    {
-      depth_ = boost::numeric::ublas::inner_prod(geometry_.GetOrigin(), normal);
-    }
-
-    double GetDepth() const
-    {
-      return depth_;
-    }
-
-    const CoordinateSystem3D& GetGeometry() const
-    {
-      return geometry_;
-    }
-
-    bool HasPayload() const
-    {
-      return (payload_.get() != NULL);
-    }
-
-    const Orthanc::IDynamicObject& GetPayload() const
-    {
-      if (HasPayload())
-      {
-        return *payload_;
-      }
-      else
-      {
-        LOG(ERROR) << "SlicesSorter::SliceWithDepth::GetPayload(): (!HasPayload())";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-    }
-  };
-
-
-  struct SlicesSorter::Comparator
-  {
-    bool operator() (const SliceWithDepth* const& a,
-                     const SliceWithDepth* const& b) const
-    {
-      return a->GetDepth() < b->GetDepth();
-    }
-  };
-
-
-  SlicesSorter::~SlicesSorter()
-  {
-    for (size_t i = 0; i < slices_.size(); i++)
-    {
-      assert(slices_[i] != NULL);
-      delete slices_[i];
-    }
-  }
-
-
-  void SlicesSorter::AddSlice(const CoordinateSystem3D& slice,
-                              Orthanc::IDynamicObject* payload)
-  {
-    slices_.push_back(new SliceWithDepth(slice, payload));
-  }
-
-  
-  const SlicesSorter::SliceWithDepth& SlicesSorter::GetSlice(size_t i) const
-  {
-    if (i >= slices_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      assert(slices_[i] != NULL);
-      return *slices_[i];
-    }
-  }
-
-
-  const CoordinateSystem3D& SlicesSorter::GetSliceGeometry(size_t i) const
-  {
-    return GetSlice(i).GetGeometry();
-  }
-  
-  
-  bool SlicesSorter::HasSlicePayload(size_t i) const
-  {
-    return GetSlice(i).HasPayload();
-  }
-  
-    
-  const Orthanc::IDynamicObject& SlicesSorter::GetSlicePayload(size_t i) const
-  {
-    return GetSlice(i).GetPayload();
-  }
-
-  
-  void SlicesSorter::SetNormal(const Vector& normal)
-  {
-    for (size_t i = 0; i < slices_.size(); i++)
-    {
-      slices_[i]->SetNormal(normal);
-    }
-
-    hasNormal_ = true;
-  }
-  
-    
-  void SlicesSorter::SortInternal()
-  {
-    if (!hasNormal_)
-    {
-      LOG(ERROR) << "SlicesSorter::SortInternal(): (!hasNormal_)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    Comparator comparator;
-    std::sort(slices_.begin(), slices_.end(), comparator);
-  }
-  
-
-  void SlicesSorter::FilterNormal(const Vector& normal)
-  {
-    size_t pos = 0;
-
-    for (size_t i = 0; i < slices_.size(); i++)
-    {
-      if (GeometryToolbox::IsParallel(normal, slices_[i]->GetGeometry().GetNormal()))
-      {
-        // This slice is compatible with the selected normal
-        slices_[pos] = slices_[i];
-        pos += 1;
-      }
-      else
-      {
-        delete slices_[i];
-        slices_[i] = NULL;
-      }
-    }
-
-    slices_.resize(pos);
-  }
-  
-    
-  bool SlicesSorter::SelectNormal(Vector& normal) const
-  {
-    std::vector<Vector>  normalCandidates;
-    std::vector<unsigned int>  normalCount;
-
-    bool found = false;
-
-    for (size_t i = 0; !found && i < GetSlicesCount(); i++)
-    {
-      const Vector& normal = GetSlice(i).GetGeometry().GetNormal();
-
-      bool add = true;
-      for (size_t j = 0; add && j < normalCandidates.size(); j++)  // (*)
-      {
-        if (GeometryToolbox::IsParallel(normal, normalCandidates[j]))
-        {
-          normalCount[j] += 1;
-          add = false;
-        }
-      }
-
-      if (add)
-      {
-        if (normalCount.size() > 2)
-        {
-          // To get linear-time complexity in (*). This heuristics
-          // allows the series to have one single frame that is
-          // not parallel to the others (such a frame could be a
-          // generated preview)
-          found = false;
-        }
-        else
-        {
-          normalCandidates.push_back(normal);
-          normalCount.push_back(1);
-        }
-      }
-    }
-
-    for (size_t i = 0; !found && i < normalCandidates.size(); i++)
-    {
-      unsigned int count = normalCount[i];
-      if (count == GetSlicesCount() ||
-          count + 1 == GetSlicesCount())
-      {
-        normal = normalCandidates[i];
-        found = true;
-      }
-    }
-
-    return found;
-  }
-
-
-  bool SlicesSorter::Sort()
-  {
-    if (GetSlicesCount() > 0)
-    {
-      Vector normal;
-      if (SelectNormal(normal))
-      {
-        FilterNormal(normal);
-        SetNormal(normal);
-        SortInternal();
-        return true;
-      }
-    }
-
-    return false;
-  }
-
-
-  bool SlicesSorter::LookupClosestSlice(size_t& index,
-                                        double& distance,
-                                        const CoordinateSystem3D& slice) const
-  {
-    // TODO Turn this linear-time lookup into a log-time lookup,
-    // keeping track of whether the slices are sorted along the normal
-
-    bool found = false;
-    
-    distance = std::numeric_limits<double>::infinity();
-    
-    for (size_t i = 0; i < slices_.size(); i++)
-    {
-      assert(slices_[i] != NULL);
-
-      double tmp;
-      if (CoordinateSystem3D::ComputeDistance(tmp, slices_[i]->GetGeometry(), slice))
-      {
-        if (!found ||
-            tmp < distance)
-        {
-          index = i;
-          distance = tmp;
-          found = true;
-        }
-      }
-    }
-
-    return found;
-  }
-
-
-  bool SlicesSorter::ComputeSpacingBetweenSlices(double& spacing /* out */) const
-  {
-    if (GetSlicesCount() <= 1)
-    {
-      // This is a volume that is empty or that contains one single
-      // slice: Choose a dummy z-dimension for voxels
-      spacing = 1.0;
-      return true;
-    }
-    
-    const OrthancStone::CoordinateSystem3D& reference = GetSliceGeometry(0);
-
-    double referencePosition = reference.ProjectAlongNormal(reference.GetOrigin());
-        
-    double p = reference.ProjectAlongNormal(GetSliceGeometry(1).GetOrigin());
-    spacing = p - referencePosition;
-
-    if (spacing <= 0)
-    {
-      LOG(ERROR) << "SlicesSorter::ComputeSpacingBetweenSlices(): (spacing <= 0)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                      "Please call the Sort() method before");
-    }
-
-    for (size_t i = 1; i < GetSlicesCount(); i++)
-    {
-      OrthancStone::Vector p = reference.GetOrigin() + spacing * static_cast<double>(i) * reference.GetNormal();
-      double d = boost::numeric::ublas::norm_2(p - GetSliceGeometry(i).GetOrigin());
-
-      if (!OrthancStone::LinearAlgebra::IsNear(d, 0, 0.001 /* tolerance expressed in mm */))
-      {
-        return false;
-      }
-    }
-
-    return true;
-  }
-
-
-  bool SlicesSorter::AreAllSlicesDistinct() const
-  {
-    if (GetSlicesCount() <= 1)
-    {
-      return true;
-    }
-    else
-    {
-      const OrthancStone::CoordinateSystem3D& reference = GetSliceGeometry(0);
-      double previousPosition = reference.ProjectAlongNormal(GetSliceGeometry(0).GetOrigin());
-     
-      for (size_t i = 1; i < GetSlicesCount(); i++)
-      {
-        double position = reference.ProjectAlongNormal(GetSliceGeometry(i).GetOrigin());
-
-        if (OrthancStone::LinearAlgebra::IsNear(position, previousPosition, 0.001 /* tolerance expressed in mm */))
-        {
-          return false;
-        }
-
-        previousPosition = position;
-      }
-
-      return true;
-    }
-  }
-}
--- a/Framework/Toolbox/SlicesSorter.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "CoordinateSystem3D.h"
-
-#include <IDynamicObject.h>
-
-namespace OrthancStone
-{
-  // TODO - Rename this as "PlanesSorter"
-  class SlicesSorter : public boost::noncopyable
-  {
-  private:
-    class SliceWithDepth;
-    struct Comparator;
-
-    typedef std::vector<SliceWithDepth*>  Slices;
-
-    Slices  slices_;
-    bool    hasNormal_;
-    
-    const SliceWithDepth& GetSlice(size_t i) const;
-    
-    void SetNormal(const Vector& normal);
-    
-    void SortInternal();
-
-    void FilterNormal(const Vector& normal);
-    
-    bool SelectNormal(Vector& normal) const;
-
-  public:
-    SlicesSorter() : hasNormal_(false)
-    {
-    }
-
-    ~SlicesSorter();
-    
-    void Reserve(size_t count)
-    {
-      slices_.reserve(count);
-    }
-
-    void AddSlice(const CoordinateSystem3D& plane)
-    {
-      AddSlice(plane, NULL);
-    }
-
-    void AddSlice(const CoordinateSystem3D& plane,
-                  Orthanc::IDynamicObject* payload);  // Takes ownership
-
-    size_t GetSlicesCount() const
-    {
-      return slices_.size();
-    }
-
-    const CoordinateSystem3D& GetSliceGeometry(size_t i) const;
-
-    bool HasSlicePayload(size_t i) const;
-    
-    const Orthanc::IDynamicObject& GetSlicePayload(size_t i) const;
-
-    // WARNING - Apply the sorting algorithm can reduce the number of
-    // slices. This is notably the case if all the slices are not
-    // parallel to the reference normal that will be selected.
-    bool Sort();
-
-    // TODO - Remove this
-    bool LookupClosestSlice(size_t& index,
-                            double& distance,
-                            const CoordinateSystem3D& slice) const;
-
-    // WARNING - The slices must have been sorted before calling this method
-    bool ComputeSpacingBetweenSlices(double& spacing /* out */) const;
-
-    // WARNING - The slices must have been sorted before calling this method
-    bool AreAllSlicesDistinct() const;
-  };
-}
--- a/Framework/Toolbox/SortedFrames.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,405 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SortedFrames.h"
-
-#include "GeometryToolbox.h"
-
-#include <OrthancException.h>
-#include <Toolbox.h>
-
-namespace OrthancStone
-{
-  SortedFrames::Instance::Instance(const Orthanc::DicomMap& tags)
-  {
-    tags_.Assign(tags);
-
-    if (!tags.LookupStringValue(sopInstanceUid_, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-
-    uint32_t tmp;
-    if (tags.ParseUnsignedInteger32(tmp, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
-    {
-      numberOfFrames_ = tmp;
-    }
-    else
-    {
-      numberOfFrames_ = 1;
-    }
-
-    std::string photometric;
-    if (tags.LookupStringValue(photometric, Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION, false))
-    {
-      Orthanc::Toolbox::StripSpaces(photometric);
-      monochrome1_ = (photometric == "MONOCHROME1");
-    }
-    else
-    {
-      monochrome1_ = false;
-    }
-
-    hasPosition_ = (
-      LinearAlgebra::ParseVector(position_, tags, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT) &&
-      position_.size() == 3 &&
-      GeometryToolbox::ComputeNormal(normal_, tags));
-  }
-
-
-  const Vector& SortedFrames::Instance::GetNormal() const
-  {
-    if (hasPosition_)
-    {
-      return normal_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  const Vector& SortedFrames::Instance::GetPosition() const
-  {
-    if (hasPosition_)
-    {
-      return position_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  
-  SortedFrames::Frame::Frame(const Instance& instance,
-                             unsigned int frameIndex) :
-    instance_(&instance),
-    frameIndex_(frameIndex)
-  {
-    if (frameIndex >= instance.GetNumberOfFrames())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  const SortedFrames::Instance& SortedFrames::GetInstance(size_t index) const
-  {
-    if (index >= instances_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      assert(instances_[index] != NULL);
-      return *instances_[index];
-    }
-  }
-
-  
-  const SortedFrames::Frame& SortedFrames::GetFrame(size_t index) const
-  {
-    if (!sorted_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                      "Sort() has not been called");
-    }
-    if (index >= frames_.size())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      return frames_[index];
-    }    
-  }
-
-  
-  void SortedFrames::Clear()
-  {
-    for (size_t i = 0; i < instances_.size(); i++)
-    {
-      assert(instances_[i] != NULL);
-      delete instances_[i];
-    }
-
-    studyInstanceUid_.clear();
-    seriesInstanceUid_.clear();
-    frames_.clear();
-    sorted_ = true;
-  }
-
-
-  void SortedFrames::AddInstance(const Orthanc::DicomMap& tags)
-  {
-    std::unique_ptr<Instance> instance(new Instance(tags));
-
-    std::string studyInstanceUid, seriesInstanceUid;
-    if (!tags.LookupStringValue(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) ||
-        !tags.LookupStringValue(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    
-    if (instances_.empty())
-    {
-      studyInstanceUid_ = studyInstanceUid;
-      seriesInstanceUid_ = seriesInstanceUid;
-    }
-    else
-    {
-      if (studyInstanceUid_ != studyInstanceUid ||
-          seriesInstanceUid_ != seriesInstanceUid)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange,
-                                        "Mixing instances from different series");
-      }
-    }
-
-    instances_.push_back(instance.release());
-    sorted_ = false;
-    frames_.clear();
-  }
-
-
-  void SortedFrames::AddFramesOfInstance(std::set<size_t>& remainingInstances,
-                                         size_t index)
-  {
-    assert(instances_[index] != NULL);
-    const Instance& instance = *instances_[index];
-    
-    for (unsigned int i = 0; i < instance.GetNumberOfFrames(); i++)
-    {
-      frames_.push_back(Frame(instance, i));
-    }
-
-    assert(remainingInstances.find(index) != remainingInstances.end());
-    remainingInstances.erase(index);
-  }
-
-
-  namespace
-  {
-    template<typename T>
-    class SortableItem
-    {
-    private:
-      T            value_;
-      size_t       instance_;
-      std::string  sopInstanceUid_;
-
-    public:
-      SortableItem(const T& value,
-                   size_t instance,
-                   const std::string& sopInstanceUid) :
-        value_(value),
-        instance_(instance),
-        sopInstanceUid_(sopInstanceUid)
-      {
-      }
-
-      size_t GetInstanceIndex() const
-      {
-        return instance_;
-      }
-
-      bool operator< (const SortableItem& other) const
-      {
-        return (value_ < other.value_ ||
-                (value_ == other.value_ &&
-                 sopInstanceUid_ < other.sopInstanceUid_));
-      }
-    };
-  }
-
-
-  void SortedFrames::SortUsingIntegerTag(std::set<size_t>& remainingInstances,
-                                         const Orthanc::DicomTag& tag)
-  {
-    std::vector< SortableItem<int32_t> > items;
-    items.reserve(remainingInstances.size());
-
-    for (std::set<size_t>::const_iterator it = remainingInstances.begin();
-         it != remainingInstances.end(); ++it)
-    {
-      assert(instances_[*it] != NULL);
-      const Instance& instance = *instances_[*it];
-
-      int32_t value;
-      std::string sopInstanceUid;
-      if (instance.GetTags().ParseInteger32(value, tag) &&
-          instance.GetTags().LookupStringValue(
-            sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
-      {
-        items.push_back(SortableItem<int32_t>(value, *it, sopInstanceUid));
-      }
-    }
-    
-    std::sort(items.begin(), items.end());
-
-    for (size_t i = 0; i < items.size(); i++)
-    {
-      AddFramesOfInstance(remainingInstances, items[i].GetInstanceIndex());
-    }
-  }
-
-
-  void SortedFrames::SortUsingSopInstanceUid(std::set<size_t>& remainingInstances)
-  {
-    std::vector<SortableItem<int32_t> > items;
-    items.reserve(remainingInstances.size());
-
-    for (std::set<size_t>::const_iterator it = remainingInstances.begin();
-         it != remainingInstances.end(); ++it)
-    {
-      assert(instances_[*it] != NULL);
-      const Instance& instance = *instances_[*it];
-
-      std::string sopInstanceUid;
-      if (instance.GetTags().LookupStringValue(
-            sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
-      {
-        items.push_back(SortableItem<int32_t>(0 /* arbitrary value */, *it, sopInstanceUid));
-      }
-    }
-    
-    std::sort(items.begin(), items.end());
-
-    for (size_t i = 0; i < items.size(); i++)
-    {
-      AddFramesOfInstance(remainingInstances, items[i].GetInstanceIndex());
-    }
-  }
-
-
-  void SortedFrames::SortUsing3DLocation(std::set<size_t>& remainingInstances)
-  {
-    /**
-     * Compute the mean of the normal vectors, using the recursive
-     * formula for arithmetic means for numerical stability.
-     * https://diego.assencio.com/?index=c34d06f4f4de2375658ed41f70177d59
-     **/
-      
-    Vector meanNormal;
-    LinearAlgebra::AssignVector(meanNormal, 0, 0, 0);
-
-    unsigned int n = 0;
-
-    for (std::set<size_t>::const_iterator it = remainingInstances.begin();
-         it != remainingInstances.end(); ++it)
-    {
-      assert(instances_[*it] != NULL);
-      const Instance& instance = *instances_[*it];
-
-      if (instance.HasPosition())
-      {
-        n += 1;
-        meanNormal += (instance.GetNormal() - meanNormal) / static_cast<float>(n);
-      }
-    }
-
-    std::vector<SortableItem<float> > items;
-    items.reserve(n);
-      
-    for (std::set<size_t>::const_iterator it = remainingInstances.begin();
-         it != remainingInstances.end(); ++it)
-    {
-      assert(instances_[*it] != NULL);
-      const Instance& instance = *instances_[*it];
-        
-      std::string sopInstanceUid;
-      if (instance.HasPosition() &&
-          instance.GetTags().LookupStringValue(
-            sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
-      {
-        double p = LinearAlgebra::DotProduct(meanNormal, instance.GetPosition());
-        items.push_back(SortableItem<float>(p, *it, sopInstanceUid));
-      }
-    }
-
-    assert(items.size() <= n);
-    
-    std::sort(items.begin(), items.end());
-
-    for (size_t i = 0; i < items.size(); i++)
-    {
-      AddFramesOfInstance(remainingInstances, items[i].GetInstanceIndex());
-    }
-  }
-
-
-  size_t SortedFrames::GetFramesCount() const
-  {
-    if (sorted_)
-    {
-      return frames_.size();
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                      "Sort() has not been called");
-    }
-  }
-
-
-  void SortedFrames::Sort()
-  {
-    if (!sorted_)
-    {
-      size_t totalFrames = 0;
-      std::set<size_t> remainingInstances;
-      
-      for (size_t i = 0; i < instances_.size(); i++)
-      {
-        assert(instances_[i] != NULL);
-        totalFrames += instances_[i]->GetNumberOfFrames();
-        
-        remainingInstances.insert(i);
-      }
-
-      frames_.clear();
-      frames_.reserve(totalFrames);
-
-      SortUsingIntegerTag(remainingInstances, Orthanc::DICOM_TAG_INSTANCE_NUMBER);  // VR is "IS"
-      SortUsingIntegerTag(remainingInstances, Orthanc::DICOM_TAG_IMAGE_INDEX);  // VR is "US"
-      SortUsing3DLocation(remainingInstances);
-      SortUsingSopInstanceUid(remainingInstances);
-
-      // The following could in theory happen if several instances
-      // have the same SOPInstanceUID, no ordering is available
-      for (std::set<size_t>::const_iterator it = remainingInstances.begin();
-           it != remainingInstances.end(); it++)
-      {
-        AddFramesOfInstance(remainingInstances, *it);
-      }
-
-      if (frames_.size() != totalFrames ||
-          !remainingInstances.empty())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-      
-      sorted_ = true;
-    }
-  }
-}
--- a/Framework/Toolbox/SortedFrames.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "LinearAlgebra.h"
-
-namespace OrthancStone
-{
-  class SortedFrames : public boost::noncopyable
-  {
-  private:
-    class Instance : public boost::noncopyable
-    {
-    private:
-      bool               hasPosition_;
-      Orthanc::DicomMap  tags_;
-      std::string        sopInstanceUid_;
-      unsigned int       numberOfFrames_;
-      Vector             normal_;    // Only used in "Sort()"
-      Vector             position_;  // Only used in "Sort()"
-      bool               monochrome1_;
-
-    public:
-      Instance(const Orthanc::DicomMap& tags);
-
-      const Orthanc::DicomMap& GetTags() const
-      {
-        return tags_;
-      }
-
-      const std::string& GetSopInstanceUid() const
-      {
-        return sopInstanceUid_;
-      }
-
-      unsigned int GetNumberOfFrames() const
-      {
-        return numberOfFrames_;
-      }
-
-      bool HasPosition() const
-      {
-        return hasPosition_;
-      }
-
-      const Vector& GetNormal() const;
-
-      const Vector& GetPosition() const;
-
-      bool IsMonochrome1() const
-      {
-        return monochrome1_;
-      }
-    };
-
-    struct Frame
-    {
-    private:
-      const Instance*  instance_;
-      unsigned int     frameIndex_;
-
-    public:
-      Frame(const Instance& instance,
-            unsigned int frameIndex);
-
-      const Instance& GetInstance() const
-      {
-        return *instance_;
-      }
-
-      unsigned int GetFrameIndex() const
-      {
-        return frameIndex_;
-      }
-    };
-
-    std::string             studyInstanceUid_;
-    std::string             seriesInstanceUid_;
-    std::vector<Instance*>  instances_;
-    std::vector<Frame>      frames_;
-    bool                    sorted_;
-
-    const Instance& GetInstance(size_t index) const;
-
-    const Frame& GetFrame(size_t index) const;
-
-    void AddFramesOfInstance(std::set<size_t>& remainingInstances,
-                             size_t index);
-
-    void SortUsingIntegerTag(std::set<size_t>& remainingInstances,
-                             const Orthanc::DicomTag& tag);
-
-    void SortUsingSopInstanceUid(std::set<size_t>& remainingInstances);
-
-    void SortUsing3DLocation(std::set<size_t>& remainingInstances);
-
-  public:
-    SortedFrames() :
-      sorted_(true)
-    {
-    }
-  
-    ~SortedFrames()
-    {
-      Clear();
-    }
-    
-    void Clear();
-
-    const std::string& GetStudyInstanceUid() const
-    {
-      return studyInstanceUid_;
-    }
-
-    const std::string& GetSeriesInstanceUid() const
-    {
-      return seriesInstanceUid_;
-    }
-
-    void AddInstance(const Orthanc::DicomMap& tags);
-
-    size_t GetInstancesCount() const
-    {
-      return instances_.size();
-    }
-
-    const Orthanc::DicomMap& GetInstanceTags(size_t index) const
-    {
-      return GetInstance(index).GetTags();
-    }
-
-    const std::string& GetSopInstanceUid(size_t index) const
-    {
-      return GetInstance(index).GetSopInstanceUid();
-    }
-
-    bool IsSorted() const
-    {
-      return sorted_;
-    }
-
-    size_t GetFramesCount() const;
-
-    const Orthanc::DicomMap& GetFrameTags(size_t index) const
-    {
-      return GetFrame(index).GetInstance().GetTags();
-    }
-
-    const std::string& GetFrameSopInstanceUid(size_t index) const
-    {
-      return GetFrame(index).GetInstance().GetSopInstanceUid();
-    }
-
-    unsigned int GetFrameSiblingsCount(size_t index) const
-    {
-      return GetFrame(index).GetInstance().GetNumberOfFrames();
-    }
-
-    unsigned int GetFrameIndex(size_t index) const
-    {
-      return GetFrame(index).GetFrameIndex();
-    }
-
-    bool IsFrameMonochrome1(size_t index) const
-    {
-      return GetFrame(index).GetInstance().IsMonochrome1();
-    }
-
-    void Sort();
-  };
-}
--- a/Framework/Toolbox/SubpixelReader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,260 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../StoneEnumerations.h"
-#include "GeometryToolbox.h"
-
-#include <Images/ImageTraits.h>
-
-#include <boost/noncopyable.hpp>
-#include <cmath>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    class SubpixelReaderBase : public boost::noncopyable
-    {
-    private:
-      const Orthanc::ImageAccessor& source_;
-      unsigned int                  width_;
-      unsigned int                  height_;
-
-    public:
-      SubpixelReaderBase(const Orthanc::ImageAccessor& source) :
-        source_(source),
-        width_(source.GetWidth()),
-        height_(source.GetHeight())
-      {
-      }
-
-      ORTHANC_FORCE_INLINE
-      const Orthanc::ImageAccessor& GetSource() const
-      {
-        return source_;
-      }
-      
-      ORTHANC_FORCE_INLINE
-      unsigned int GetWidth() const
-      {
-        return width_;
-      }
-      
-      ORTHANC_FORCE_INLINE
-      unsigned int GetHeight() const
-      {
-        return height_;
-      }
-    };
-  }
-
-    
-  template <Orthanc::PixelFormat Format,
-            ImageInterpolation Interpolation>
-  class SubpixelReader;
-
-    
-  template <Orthanc::PixelFormat Format>
-  class SubpixelReader<Format, ImageInterpolation_Nearest> : 
-    public Internals::SubpixelReaderBase
-  {
-  public:
-    typedef Orthanc::PixelTraits<Format>  Traits;
-    typedef typename Traits::PixelType    PixelType;
-
-    SubpixelReader(const Orthanc::ImageAccessor& source) :
-      SubpixelReaderBase(source)
-    {
-    }
-
-    inline bool GetValue(PixelType& target,
-                         float x,
-                         float y) const;
-
-    inline bool GetFloatValue(float& target,
-                              float x,
-                              float y) const;
-  };
-
-    
-    
-  template <Orthanc::PixelFormat Format>
-  class SubpixelReader<Format, ImageInterpolation_Bilinear> : 
-    public Internals::SubpixelReaderBase
-  {
-  public:
-    typedef Orthanc::PixelTraits<Format>  Traits;
-    typedef typename Traits::PixelType    PixelType;
-
-    SubpixelReader(const Orthanc::ImageAccessor& source) :
-      SubpixelReaderBase(source)
-    {
-    }
-
-    inline bool GetFloatValue(float& target,
-                              float x,
-                              float y) const;
-
-    inline bool GetValue(PixelType& target,
-                         float x,
-                         float y) const;
-  };
-
-
-
-  template <Orthanc::PixelFormat Format>
-  bool SubpixelReader<Format, ImageInterpolation_Nearest>::GetValue(PixelType& target,
-                                                                    float x,
-                                                                    float y) const
-  {
-    if (x < 0 ||
-        y < 0)
-    {
-      return false;
-    }
-    else
-    {
-      unsigned int ux = static_cast<unsigned int>(std::floor(x));
-      unsigned int uy = static_cast<unsigned int>(std::floor(y));
-
-      if (ux < GetWidth() &&
-          uy < GetHeight())
-      {
-        Orthanc::ImageTraits<Format>::GetPixel(target, GetSource(), ux, uy);
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-  }
-
-
-
-  template <Orthanc::PixelFormat Format>
-  bool SubpixelReader<Format, ImageInterpolation_Nearest>::GetFloatValue(float& target,
-                                                                         float x,
-                                                                         float y) const
-  {
-    PixelType value;
-    
-    if (GetValue(value, x, y))
-    {
-      target = Traits::PixelToFloat(value);
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-
-  template <Orthanc::PixelFormat Format>
-  bool SubpixelReader<Format, ImageInterpolation_Bilinear>::GetValue(PixelType& target,
-                                                                     float x,
-                                                                     float y) const
-  {
-    float value;
-
-    if (GetFloatValue(value, x, y))
-    {
-      Traits::FloatToPixel(target, value);
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-
-  template <Orthanc::PixelFormat Format>
-  bool SubpixelReader<Format, ImageInterpolation_Bilinear>::GetFloatValue(float& target,
-                                                                          float x,
-                                                                          float y) const
-  {
-    x -= 0.5f;
-    y -= 0.5f;
-        
-    if (x < 0 ||
-        y < 0)
-    {
-      return false;
-    }
-    else
-    {
-      unsigned int ux = static_cast<unsigned int>(std::floor(x));
-      unsigned int uy = static_cast<unsigned int>(std::floor(y));
-
-      float f00, f01, f10, f11;
-
-      if (ux < GetWidth() &&
-          uy < GetHeight())
-      {
-        f00 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux, uy);
-      }
-      else
-      {
-        return false;
-      }
-
-      if (ux + 1 < GetWidth())
-      {
-        f01 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux + 1, uy);
-      }
-      else
-      {
-        f01 = f00;
-      }
-
-      if (uy + 1 < GetHeight())
-      {
-        f10 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux, uy + 1);
-      }
-      else
-      {
-        f10 = f00;
-      }
-
-      if (ux + 1 < GetWidth() &&
-          uy + 1 < GetHeight())
-      {
-        f11 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux + 1, uy + 1);
-      }
-      else
-      {
-        f11 = f00;
-      }
-
-      float ax = x - static_cast<float>(ux);
-      float ay = y - static_cast<float>(uy);
-      target = GeometryToolbox::ComputeBilinearInterpolationUnitSquare(ax, ay, f00, f01, f10, f11);
-          
-      return true;
-    }
-  }
-}
--- a/Framework/Toolbox/SubvoxelReader.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,470 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Volumes/ImageBuffer3D.h"
-#include "GeometryToolbox.h"
-
-#include <Images/ImageTraits.h>
-
-#include <boost/noncopyable.hpp>
-#include <cmath>
-
-namespace OrthancStone
-{
-  namespace Internals
-  {
-    /*
-    WARNING : the slice order is different between this class and ImageBuffer3D
-
-    See the comment above ImageBuffer3D declaration.
-
-    The slices are supposed to be stored in INCREASING z-order in this class!
-    */
-    class SubvoxelReaderBase : public boost::noncopyable
-    {
-    private:
-      const ImageBuffer3D& source_;
-      unsigned int         width_;
-      unsigned int         height_;
-      unsigned int         depth_;
-
-    public:
-      SubvoxelReaderBase(const ImageBuffer3D& source) :
-        source_(source),
-        width_(source.GetWidth()),
-        height_(source.GetHeight()),
-        depth_(source.GetDepth())
-      {
-      }
-
-      ORTHANC_FORCE_INLINE
-      const Orthanc::ImageAccessor& GetSource() const
-      {
-        return source_.GetInternalImage();
-      }
-      
-      ORTHANC_FORCE_INLINE
-      unsigned int GetWidth() const
-      {
-        return width_;
-      }
-      
-      ORTHANC_FORCE_INLINE
-      unsigned int GetHeight() const
-      {
-        return height_;
-      }
-      
-      ORTHANC_FORCE_INLINE
-      unsigned int GetDepth() const
-      {
-        return depth_;
-      }
-      
-      ORTHANC_FORCE_INLINE
-      unsigned int ComputeRow(unsigned int y,
-                              unsigned int z) const
-      {
-        return z * height_ + y;
-      }
-    };
-  }
-
-    
-  /*
-  WARNING : the slice order is different between this class and ImageBuffer3D
-
-  See the comment above ImageBuffer3D declaration.
-
-  The slices are supposed to be stored in INCREASING z-order in this class!
-  */
-  template <Orthanc::PixelFormat Format,
-            ImageInterpolation Interpolation>
-  class SubvoxelReader;
-
-    
-  /*
-  WARNING : the slice order is different between this class and ImageBuffer3D
-
-  See the comment above ImageBuffer3D declaration.
-
-  The slices are supposed to be stored in INCREASING z-order in this class!
-  */
-  template <Orthanc::PixelFormat Format>
-  class SubvoxelReader<Format, ImageInterpolation_Nearest> : 
-    public Internals::SubvoxelReaderBase
-  {
-  public:
-    typedef Orthanc::PixelTraits<Format>  Traits;
-    typedef typename Traits::PixelType    PixelType;
-
-    SubvoxelReader(const ImageBuffer3D& source) :
-      SubvoxelReaderBase(source)
-    {
-    }
-
-    inline bool GetValue(PixelType& target,
-                         float x,
-                         float y,
-                         float z) const;
-    
-    inline bool GetFloatValue(float& target,
-                              float x,
-                              float y,
-                              float z) const;
-  };
-    
-    
-  /*
-  WARNING : the slice order is different between this class and ImageBuffer3D
-
-  See the comment above ImageBuffer3D declaration.
-
-  The slices are supposed to be stored in INCREASING z-order in this class!
-  */
-  template <Orthanc::PixelFormat Format>
-  class SubvoxelReader<Format, ImageInterpolation_Bilinear> : 
-    public Internals::SubvoxelReaderBase
-  {
-  public:
-    typedef Orthanc::PixelTraits<Format>  Traits;
-    typedef typename Traits::PixelType    PixelType;
-
-    SubvoxelReader(const ImageBuffer3D& source) :
-      SubvoxelReaderBase(source)
-    {
-    }
-
-    inline bool Sample(float& f00,
-                       float& f01,
-                       float& f10,
-                       float& f11,
-                       unsigned int ux,
-                       unsigned int uy,
-                       unsigned int uz) const;
-
-    inline bool GetValue(PixelType& target,
-                         float x,
-                         float y,
-                         float z) const;
-
-    inline bool GetFloatValue(float& target,
-                              float x,
-                              float y,
-                              float z) const;
-  };
-    
-
-  /*
-  WARNING : the slice order is different between this class and ImageBuffer3D
-
-  See the comment above ImageBuffer3D declaration.
-
-  The slices are supposed to be stored in INCREASING z-order in this class!
-  */
-  template <Orthanc::PixelFormat Format>
-  class SubvoxelReader<Format, ImageInterpolation_Trilinear> : 
-    public Internals::SubvoxelReaderBase
-  {
-  private:
-    SubvoxelReader<Format, ImageInterpolation_Bilinear>   bilinear_;
-
-  public:
-    typedef Orthanc::PixelTraits<Format>  Traits;
-    typedef typename Traits::PixelType    PixelType;
-
-    SubvoxelReader(const ImageBuffer3D& source) :
-      SubvoxelReaderBase(source),
-      bilinear_(source)
-    {
-    }
-
-    inline bool GetValue(PixelType& target,
-                         float x,
-                         float y,
-                         float z) const;
-
-    inline bool GetFloatValue(float& target,
-                              float x,
-                              float y,
-                              float z) const;
-  };
-
-
-  /*
-  See important comment above
-  */
-
-  template <Orthanc::PixelFormat Format>
-  bool SubvoxelReader<Format, ImageInterpolation_Nearest>::GetValue(PixelType& target,
-                                                                    float x,
-                                                                    float y,
-                                                                    float z) const
-  {
-    if (x < 0 ||
-        y < 0 ||
-        z < 0)
-    {
-      return false;
-    }
-    else
-    {
-      unsigned int ux = static_cast<unsigned int>(std::floor(x));
-      unsigned int uy = static_cast<unsigned int>(std::floor(y));
-      unsigned int uz = static_cast<unsigned int>(std::floor(z));
-
-      if (ux < GetWidth() &&
-          uy < GetHeight() &&
-          uz < GetDepth())
-      {
-        Orthanc::ImageTraits<Format>::GetPixel(target, GetSource(), ux, ComputeRow(uy, uz));
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-  }
-
-
-  template <Orthanc::PixelFormat Format>
-  bool SubvoxelReader<Format, ImageInterpolation_Nearest>::GetFloatValue(float& target,
-                                                                         float x,
-                                                                         float y,
-                                                                         float z) const
-  {
-    PixelType value;
-    
-    if (GetValue(value, x, y, z))
-    {
-      target = Traits::PixelToFloat(value);
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-  /*
-  See important comment above
-  */
-
-  template <Orthanc::PixelFormat Format>
-  bool SubvoxelReader<Format, ImageInterpolation_Bilinear>::Sample(float& f00,
-                                                                   float& f01,
-                                                                   float& f10,
-                                                                   float& f11,
-                                                                   unsigned int ux,
-                                                                   unsigned int uy,
-                                                                   unsigned int uz) const
-  {
-    if (ux < GetWidth() &&
-        uy < GetHeight() &&
-        uz < GetDepth())
-    {
-      f00 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux, ComputeRow(uy, uz));
-    }
-    else
-    {
-      // Pixel is out of the volume
-      return false;
-    }
-
-    if (ux + 1 < GetWidth())
-    {
-      f01 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux + 1, ComputeRow(uy, uz));
-    }
-    else
-    {
-      f01 = f00;
-    }
-
-    if (uy + 1 < GetHeight())
-    {
-      f10 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux, ComputeRow(uy + 1, uz));
-    }
-    else
-    {
-      f10 = f00;
-    }
-
-    if (ux + 1 < GetWidth() &&
-        uy + 1 < GetHeight())
-    {
-      f11 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux + 1, ComputeRow(uy + 1, uz));
-    }
-    else
-    {
-      f11 = f00;
-    }
-
-    return true;
-  }
-
-
-  /*
-  See important comment above
-  */
-
-  template <Orthanc::PixelFormat Format>
-  bool SubvoxelReader<Format, ImageInterpolation_Bilinear>::GetFloatValue(float& target,
-                                                                          float x,
-                                                                          float y,
-                                                                          float z) const
-  {
-    x -= 0.5f;
-    y -= 0.5f;
-        
-    if (x < 0 ||
-        y < 0 ||
-        z < 0)
-    {
-      return false;
-    }
-    else
-    {
-      unsigned int ux = static_cast<unsigned int>(std::floor(x));
-      unsigned int uy = static_cast<unsigned int>(std::floor(y));
-      unsigned int uz = static_cast<unsigned int>(std::floor(z));
-
-      float f00, f01, f10, f11;
-      if (Sample(f00, f01, f10, f11, ux, uy, uz))
-      {
-        float ax = x - static_cast<float>(ux);
-        float ay = y - static_cast<float>(uy);
-
-        target = GeometryToolbox::ComputeBilinearInterpolationUnitSquare(ax, ay, f00, f01, f10, f11);
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-  }
-
-
-  /*
-  See important comment above
-  */
-
-  template <Orthanc::PixelFormat Format>
-  bool SubvoxelReader<Format, ImageInterpolation_Bilinear>::GetValue(PixelType& target,
-                                                                     float x,
-                                                                     float y,
-                                                                     float z) const
-  {
-    float value;
-
-    if (GetFloatValue(value, x, y, z))
-    {
-      Traits::FloatToPixel(target, value);
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-
-  template <Orthanc::PixelFormat Format>
-  bool SubvoxelReader<Format, ImageInterpolation_Trilinear>::GetFloatValue(float& target,
-                                                                           float x,
-                                                                           float y,
-                                                                           float z) const
-  {
-    x -= 0.5f;
-    y -= 0.5f;
-    z -= 0.5f;
-        
-    if (x < 0 ||
-        y < 0 ||
-        z < 0)
-    {
-      return false;
-    }
-    else
-    {
-      unsigned int ux = static_cast<unsigned int>(std::floor(x));
-      unsigned int uy = static_cast<unsigned int>(std::floor(y));
-      unsigned int uz = static_cast<unsigned int>(std::floor(z));
-
-      float f000, f001, f010, f011;
-      if (bilinear_.Sample(f000, f001, f010, f011, ux, uy, uz))
-      {
-        const float ax = x - static_cast<float>(ux);
-        const float ay = y - static_cast<float>(uy);
-
-        float f100, f101, f110, f111;
-
-        if (bilinear_.Sample(f100, f101, f110, f111, ux, uy, uz + 1))
-        {
-          const float az = z - static_cast<float>(uz);
-          target = GeometryToolbox::ComputeTrilinearInterpolationUnitSquare
-            (ax, ay, az, f000, f001, f010, f011, f100, f101, f110, f111);
-        }
-        else
-        {
-          target = GeometryToolbox::ComputeBilinearInterpolationUnitSquare
-            (ax, ay, f000, f001, f010, f011);
-        }
-
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-  }
-
-
-  /*
-  See important comment above
-  */
-
-
-  template <Orthanc::PixelFormat Format>
-  bool SubvoxelReader<Format, ImageInterpolation_Trilinear>::GetValue(PixelType& target,
-                                                                      float x,
-                                                                      float y,
-                                                                      float z) const
-  {
-    float value;
-
-    if (GetFloatValue(value, x, y, z))
-    {
-      Traits::FloatToPixel(target, value);
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-}
--- a/Framework/Toolbox/TextRenderer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "TextRenderer.h"
-
-#include "../Scene2D/CairoCompositor.h"
-#include "../Scene2D/ColorTextureSceneLayer.h"
-#include "../Scene2D/FloatTextureSceneLayer.h"
-#include "../Scene2D/TextSceneLayer.h"
-#include "../Fonts/GlyphBitmapAlphabet.h"
-#include "../Fonts/FontRenderer.h"
-
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <Images/PngWriter.h>
-#include <Toolbox.h>
-
-namespace OrthancStone
-{
-  Orthanc::ImageAccessor* TextRenderer::Render(const std::string& ttf,
-                                               unsigned int fontSize,
-                                               const std::string& utf8String)
-  {
-    FontRenderer renderer;
-    renderer.LoadFont(ttf, fontSize);
-
-    // add each char to be rendered to the alphabet
-    std::unique_ptr<GlyphBitmapAlphabet> alphabet(new GlyphBitmapAlphabet);
-
-    size_t posInString = 0;
-    uint32_t unicode;
-    size_t utf8CharLength;
-
-    while (posInString < utf8String.size())
-    {
-      Orthanc::Toolbox::Utf8ToUnicodeCharacter(unicode, utf8CharLength, utf8String, posInString);
-      alphabet->AddUnicodeCharacter(renderer, unicode);
-      posInString += utf8CharLength;
-    }
-
-
-    std::unique_ptr<Orthanc::ImageAccessor> renderedText(alphabet->RenderText(utf8String));
-
-    // add a blank line on top of the text (to improve bilinear filtering of the topmost line)
-    std::unique_ptr<Orthanc::Image> renderedTextExtended(new Orthanc::Image(renderedText->GetFormat(), renderedText->GetWidth(), renderedText->GetHeight() + 1, true));
-
-    Orthanc::ImageAccessor textRegion;
-    Orthanc::ImageAccessor firstLineRegion;
-
-    renderedTextExtended->GetRegion(firstLineRegion, 0, 0, renderedText->GetWidth(), 1);
-    Orthanc::ImageProcessing::Set(firstLineRegion, 0);
-
-    renderedTextExtended->GetRegion(textRegion, 0, 1, renderedText->GetWidth(), renderedText->GetHeight());
-    Orthanc::ImageProcessing::Copy(textRegion, *renderedText);
-
-    return renderedTextExtended.release();
-  }
-
-
-  Orthanc::ImageAccessor* TextRenderer::RenderWithAlpha(const std::string& ttf,
-                                                        unsigned int fontSize,
-                                                        const std::string& utf8String,
-                                                        uint8_t foreground)
-  {
-    std::unique_ptr<Orthanc::ImageAccessor> renderedText8(Render(ttf, fontSize, utf8String));
-    std::unique_ptr<Orthanc::Image> target(new Orthanc::Image(Orthanc::PixelFormat_RGBA32, renderedText8->GetWidth(), renderedText8->GetHeight(), true));
-
-    Orthanc::ImageProcessing::Set(*target, foreground, foreground, foreground, *renderedText8);
-    return target.release();
-  }
-
-
-  // currently disabled because the background is actually not transparent once we use the Cairo Compositor !
-  //
-  //  // renders text in color + a border with alpha in a RGBA32 image
-  //  Orthanc::ImageAccessor* TextRenderer::RenderWithAlpha(const std::string& ttf,
-  //                                                        unsigned int fontSize,
-  //                                                        const std::string& utf8String,
-  //                                                        uint8_t foreground,
-  //                                                        uint8_t borderColor)
-  //  {
-  //    std::unique_ptr<Orthanc::ImageAccessor> renderedBorderAlpha(RenderWithAlpha(ttf, fontSize, utf8String, borderColor));
-  //    std::unique_ptr<Orthanc::ImageAccessor> renderedTextAlpha(RenderWithAlpha(ttf, fontSize, utf8String, foreground));
-
-  //    unsigned int textWidth = renderedBorderAlpha->GetWidth();
-  //    unsigned int textHeight = renderedBorderAlpha->GetHeight();
-
-  //    Scene2D targetScene;
-  //    std::unique_ptr<ColorTextureSceneLayer> borderLayerLeft(new ColorTextureSceneLayer(*renderedBorderAlpha));
-  //    std::unique_ptr<ColorTextureSceneLayer> borderLayerRight(new ColorTextureSceneLayer(*renderedBorderAlpha));
-  //    std::unique_ptr<ColorTextureSceneLayer> borderLayerTop(new ColorTextureSceneLayer(*renderedBorderAlpha));
-  //    std::unique_ptr<ColorTextureSceneLayer> borderLayerBottom(new ColorTextureSceneLayer(*renderedBorderAlpha));
-  //    std::unique_ptr<ColorTextureSceneLayer> textLayerCenter(new ColorTextureSceneLayer(*renderedTextAlpha));
-
-  //    borderLayerLeft->SetOrigin(0, 1);
-  //    borderLayerRight->SetOrigin(2, 1);
-  //    borderLayerTop->SetOrigin(1, 0);
-  //    borderLayerBottom->SetOrigin(1, 2);
-  //    textLayerCenter->SetOrigin(1, 1);
-  //    targetScene.SetLayer(1, borderLayerLeft.release());
-  //    targetScene.SetLayer(2, borderLayerRight.release());
-  //    targetScene.SetLayer(3, borderLayerTop.release());
-  //    targetScene.SetLayer(4, borderLayerBottom.release());
-  //    targetScene.SetLayer(5, textLayerCenter.release());
-
-  //    targetScene.FitContent(textWidth + 2, textHeight + 2);
-  //    CairoCompositor compositor(targetScene, textWidth + 2, textHeight + 2);
-  //    compositor.Refresh();
-
-  //    Orthanc::ImageAccessor canvas;
-  //    compositor.GetCanvas().GetReadOnlyAccessor(canvas);
-
-  //    std::unique_ptr<Orthanc::Image> output(new Orthanc::Image(Orthanc::PixelFormat_RGBA32, canvas.GetWidth(), canvas.GetHeight(), false));
-  //    Orthanc::ImageProcessing::Convert(*output, canvas);
-  //    return output.release();
-  //  }
-}
--- a/Framework/Toolbox/TextRenderer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <Images/Image.h>
-
-namespace OrthancStone
-{
-  // Helpers methods to render text in bitmaps.
-  // Compared to the GlyphBitmapAlphabet::RenderText, these methods do not need a
-  // code page.
-  class TextRenderer : public boost::noncopyable
-  {
-  public:
-    // simply renders text in GrayScale8 with a black background and a white text
-    static Orthanc::ImageAccessor* Render(const std::string& ttf,
-                                          unsigned int fontSize,
-                                          const std::string& utf8String);
-
-    // renders text in "color" with alpha in a RGBA32 image
-    static Orthanc::ImageAccessor* RenderWithAlpha(const std::string& ttf,
-                                                   unsigned int fontSize,
-                                                   const std::string& utf8String,
-                                                   uint8_t foreground);
-
-    //    // renders text in color + a border with alpha in a RGBA32 image
-    //    static Orthanc::ImageAccessor* RenderWithAlpha(const std::string& ttf,
-    //                                                   unsigned int fontSize,
-    //                                                   const std::string& utf8String,
-    //                                                   uint8_t foreground,
-    //                                                   uint8_t borderColor);
-  };
-}
--- a/Framework/Toolbox/UndoRedoStack.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "UndoRedoStack.h"
-
-#include <OrthancException.h>
-
-#include <cassert>
-
-namespace OrthancStone
-{
-  void UndoRedoStack::Clear(UndoRedoStack::Stack::iterator from)
-  {
-    for (Stack::iterator it = from; it != stack_.end(); ++it)
-    {
-      assert(*it != NULL);
-      delete *it;
-    }
-
-    stack_.erase(from, stack_.end());
-  }
-
-
-  UndoRedoStack::UndoRedoStack() :
-    current_(stack_.end())
-  {
-  }
-
-  
-  UndoRedoStack::~UndoRedoStack()
-  {
-    Clear(stack_.begin());
-  }
-
-  
-  void UndoRedoStack::Add(ICommand* command)
-  {
-    if (command == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-      
-    Clear(current_);
-
-    stack_.push_back(command);
-    current_ = stack_.end();
-  }
-
-  
-  void UndoRedoStack::Undo()
-  {
-    if (current_ != stack_.begin())
-    {
-      --current_;
-        
-      assert(*current_ != NULL);
-      (*current_)->Undo();
-    }
-  }
-
-  void UndoRedoStack::Redo()
-  {
-    if (current_ != stack_.end())
-    {
-      assert(*current_ != NULL);
-      (*current_)->Redo();
-
-      ++current_;
-    }
-  }
-}
--- a/Framework/Toolbox/UndoRedoStack.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/noncopyable.hpp>
-#include <list>
-
-
-namespace OrthancStone
-{
-  class UndoRedoStack : public boost::noncopyable
-  {
-  public:
-    class ICommand : public boost::noncopyable
-    {
-    public:
-      virtual ~ICommand()
-      {
-      }
-      
-      virtual void Undo() const = 0;
-      
-      virtual void Redo() const = 0;
-    };
-
-  private:
-    typedef std::list<ICommand*>  Stack;
-
-    Stack            stack_;
-    Stack::iterator  current_;
-
-    void Clear(Stack::iterator from);
-
-  public:
-    UndoRedoStack();
-    
-    ~UndoRedoStack();
-    
-    void Add(ICommand* command);
-    
-    void Undo();
-
-    void Redo();
-  };
-}
--- a/Framework/Viewport/IViewport.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "../Scene2D/ICompositor.h"
-#include "../Scene2DViewport/ViewportController.h"
-
-namespace OrthancStone
-{
-  /**
-   * Class that combines a Scene2D with a canvas where to draw the
-   * scene. A call to "Refresh()" will update the content of the
-   * canvas. A "IViewport" can possibly be accessed from several
-   * threads depending on the rendering back-end (e.g. in SDL or Qt):
-   * The "ILock" subclass implements the locking mechanism to modify
-   * the content of the scene. 
-   *
-   * NB: The lock must be a "recursive_mutex", as the viewport
-   * controller can lock it a second time (TODO - Why so?).
-   **/  
-  class IViewport : public boost::noncopyable
-  {
-  public:
-    class ILock : public boost::noncopyable
-    {
-    public:
-      virtual ~ILock()
-      {
-      }
-
-      virtual bool HasCompositor() const = 0;
-
-      /**
-      Do not store the result! Only access the compositor interface through
-      the lock.
-      */
-      virtual ICompositor& GetCompositor() = 0;
-
-      /**
-      Do not store the result! Only access the compositor interface through
-      the lock.
-      */
-      virtual ViewportController& GetController() = 0;
-
-      virtual void Invalidate() = 0;
-    };   
-    
-    virtual ~IViewport()
-    {
-    }
-
-    virtual ILock* Lock() = 0;
-  };
-}
--- a/Framework/Viewport/SdlViewport.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,230 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "SdlViewport.h"
-
-#include <OrthancException.h>
-
-#include <boost/make_shared.hpp>
-
-namespace OrthancStone
-{
-  ICompositor& SdlViewport::SdlLock::GetCompositor()
-  {
-    if (that_.compositor_.get() == NULL)
-    {
-      // The derived class should have called "AcquireCompositor()"
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-    else
-    {
-      return *that_.compositor_;
-    }
-  }
-
-
-  void SdlViewport::AcquireCompositor(ICompositor* compositor /* takes ownership */)
-  {
-    if (compositor == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    compositor_.reset(compositor);
-  }
-
-  SdlViewport::SdlViewport()
-  {
-    refreshEvent_ = SDL_RegisterEvents(1);
-
-    if (refreshEvent_ == static_cast<uint32_t>(-1))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-  
-  void SdlViewport::PostConstructor()
-  {
-    controller_ = boost::make_shared<ViewportController>(shared_from_this());
-  }
-    
-  void SdlViewport::SendRefreshEvent()
-  {
-    SDL_Event event;
-    SDL_memset(&event, 0, sizeof(event));
-    event.type = refreshEvent_;
-    SDL_PushEvent(&event);  // This function is thread-safe, and can be called from other threads safely.
-  }
-
-  
-  SdlOpenGLViewport::SdlOpenGLViewport(const std::string& title,
-                                       unsigned int width,
-                                       unsigned int height,
-                                       bool allowDpiScaling) :
-    context_(title.c_str(), width, height, allowDpiScaling)
-  {
-    AcquireCompositor(new OpenGLCompositor(context_));  // (*)
-  }
-
-  boost::shared_ptr<SdlOpenGLViewport> SdlOpenGLViewport::Create(
-    const std::string& title,
-    unsigned int width,
-    unsigned int height,
-    bool allowDpiScaling)
-  {
-    boost::shared_ptr<SdlOpenGLViewport> that =
-      boost::shared_ptr<SdlOpenGLViewport>(new SdlOpenGLViewport(title, width, height, allowDpiScaling));
-    that->SdlViewport::PostConstructor();
-    return that;
-  }
-
-  uint32_t SdlOpenGLViewport::GetSdlWindowId()
-  {
-    SdlWindow& sdlWindowWrapper = context_.GetWindow();
-    SDL_Window* sdlWindow = sdlWindowWrapper.GetObject();
-    Uint32 sdlWindowId = SDL_GetWindowID(sdlWindow);
-    return sdlWindowId;
-  }
-
-  SdlOpenGLViewport::~SdlOpenGLViewport()
-  {
-    // Make sure that the "OpenGLCompositor" is destroyed BEFORE the
-    // "OpenGLContext" it references (*)
-    ClearCompositor();
-  }
-
-
-  void SdlOpenGLViewport::Paint()
-  {
-    SdlLock lock(*this);
-    lock.GetCompositor().Refresh(lock.GetController().GetScene());
-  }
-
-
-  void SdlOpenGLViewport::UpdateSize(unsigned int width, unsigned int height)
-  {
-    // nothing to do in OpenGL, the OpenGLCompositor::UpdateSize will be called automatically
-    SdlLock lock(*this);
-    lock.Invalidate();
-  }
-
-
-  void SdlOpenGLViewport::ToggleMaximize()
-  {
-    // No need to call "Invalidate()" here, as "UpdateSize()" will
-    // be invoked after event "SDL_WINDOWEVENT_SIZE_CHANGED"
-    SdlLock lock(*this);
-    context_.ToggleMaximize();
-  }
-
-
-
-  SdlCairoViewport::SdlCairoViewport(const char* title,
-                                     unsigned int width,
-                                     unsigned int height,
-                                     bool allowDpiScaling) :
-    window_(title, width, height, false /* enable OpenGL */, allowDpiScaling),
-    sdlSurface_(NULL)
-  {
-    AcquireCompositor(new CairoCompositor(width, height));
-  }
-
-  SdlCairoViewport::~SdlCairoViewport()
-  {
-    if (sdlSurface_)
-    {
-      SDL_FreeSurface(sdlSurface_);
-    }
-  }
-  
-  uint32_t SdlCairoViewport::GetSdlWindowId()
-  {
-    SDL_Window* sdlWindow = window_.GetObject();
-    Uint32 sdlWindowId = SDL_GetWindowID(sdlWindow);
-    return sdlWindowId;
-  }
-
-  void SdlCairoViewport::Paint()
-  {
-    SdlLock lock(*this);
-
-    lock.GetCompositor().Refresh(lock.GetController().GetScene());
-    CreateSdlSurfaceFromCompositor(dynamic_cast<CairoCompositor&>(lock.GetCompositor()));
-    
-    if (sdlSurface_ != NULL)
-    {
-      window_.Render(sdlSurface_);
-    }
-  }
-
-
-  void SdlCairoViewport::UpdateSize(unsigned int width,
-                                    unsigned int height)
-  {
-    SdlLock lock(*this);
-    dynamic_cast<CairoCompositor&>(lock.GetCompositor()).UpdateSize(width, height);
-    lock.Invalidate();
-  }
-  
-
-  void SdlCairoViewport::ToggleMaximize()
-  {
-    // No need to call "Invalidate()" here, as "UpdateSize()" will
-    // be invoked after event "SDL_WINDOWEVENT_SIZE_CHANGED"
-    SdlLock lock(*this);
-    window_.ToggleMaximize();
-  }
-
-  
-  // Assumes that the mutex is locked
-  void SdlCairoViewport::CreateSdlSurfaceFromCompositor(CairoCompositor& compositor)
-  {
-    static const uint32_t rmask = 0x00ff0000;
-    static const uint32_t gmask = 0x0000ff00;
-    static const uint32_t bmask = 0x000000ff;
-
-    const unsigned int width = compositor.GetCanvas().GetWidth();
-    const unsigned int height = compositor.GetCanvas().GetHeight();
-
-    if (sdlSurface_ != NULL)
-    {
-      if (sdlSurface_->pixels == compositor.GetCanvas().GetBuffer() &&
-          sdlSurface_->w == static_cast<int>(width) &&
-          sdlSurface_->h == static_cast<int>(height) &&
-          sdlSurface_->pitch == static_cast<int>(compositor.GetCanvas().GetPitch()))
-      {
-        // The image from the compositor has not changed, no need to update the surface
-        return;
-      }
-      else
-      {
-        SDL_FreeSurface(sdlSurface_);
-      }
-    }
-
-    sdlSurface_ = SDL_CreateRGBSurfaceFrom((void*)(compositor.GetCanvas().GetBuffer()), width, height, 32,
-                                           compositor.GetCanvas().GetPitch(), rmask, gmask, bmask, 0);
-    if (!sdlSurface_)
-    {
-      LOG(ERROR) << "Cannot create a SDL surface from a Cairo surface";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-}
--- a/Framework/Viewport/SdlViewport.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#if !defined(ORTHANC_ENABLE_SDL)
-#  error Macro ORTHANC_ENABLE_SDL must be defined
-#endif
-
-#if ORTHANC_ENABLE_SDL != 1
-#  error SDL must be enabled to use this file
-#endif
-
-#if !defined(ORTHANC_ENABLE_OPENGL)
-#  error The macro ORTHANC_ENABLE_OPENGL must be defined
-#endif
-
-#if ORTHANC_ENABLE_OPENGL != 1
-#  error Support for OpenGL is disabled
-#endif
-
-#include "../OpenGL/SdlOpenGLContext.h"
-#include "../Scene2D/OpenGLCompositor.h"
-#include "../Scene2D/CairoCompositor.h"
-#include "IViewport.h"
-
-#include <SDL_events.h>
-
-// TODO: required for UndoStack injection
-// I don't like it either :)
-#include <boost/weak_ptr.hpp>
-
-#include <boost/thread/recursive_mutex.hpp>
-
-namespace OrthancStone
-{
-  class UndoStack;
-
-  class SdlViewport : public IViewport,
-                      public boost::enable_shared_from_this<SdlViewport>
-  {
-  private:
-    boost::recursive_mutex                 mutex_;
-    uint32_t                               refreshEvent_;
-    boost::shared_ptr<ViewportController>  controller_;
-    std::unique_ptr<ICompositor>           compositor_;
-
-    void SendRefreshEvent();
-
-  protected:
-    class SdlLock : public ILock
-    {
-    private:
-      SdlViewport&                        that_;
-      boost::recursive_mutex::scoped_lock lock_;
-
-    public:
-      SdlLock(SdlViewport& that) :
-      that_(that),
-      lock_(that.mutex_)
-      {
-      }
-
-      virtual bool HasCompositor() const ORTHANC_OVERRIDE
-      {
-        return true;
-      }
-
-      virtual ICompositor& GetCompositor() ORTHANC_OVERRIDE;
-      
-      virtual ViewportController& GetController() ORTHANC_OVERRIDE
-      {
-        return *that_.controller_;
-      }
-
-      virtual void Invalidate() ORTHANC_OVERRIDE
-      {
-        that_.SendRefreshEvent();
-      }
-    };
-
-    void ClearCompositor()
-    {
-      compositor_.reset();
-    }
-
-    void AcquireCompositor(ICompositor* compositor /* takes ownership */);
-
-  protected:
-    SdlViewport();
-    void PostConstructor();
-
-  public:
-
-    bool IsRefreshEvent(const SDL_Event& event) const
-    {
-      return (event.type == refreshEvent_);
-    }
-
-    virtual ILock* Lock() ORTHANC_OVERRIDE
-    {
-      return new SdlLock(*this);
-    }
-
-    virtual uint32_t GetSdlWindowId() = 0;
-
-    virtual void UpdateSize(unsigned int width,
-                            unsigned int height) = 0;
-
-    virtual void ToggleMaximize() = 0;
-
-    // Must be invoked from the main SDL thread
-    virtual void Paint() = 0;
-  };
-
-
-  class SdlOpenGLViewport : public SdlViewport
-  {
-  private:
-    SdlOpenGLContext  context_;
-
-  private:
-    SdlOpenGLViewport(const std::string& title,
-                      unsigned int       width,
-                      unsigned int       height,
-                      bool               allowDpiScaling = true);
-  public:
-    static boost::shared_ptr<SdlOpenGLViewport> Create(const std::string&,
-                                                       unsigned int width,
-                                                       unsigned int height,
-                                                       bool allowDpiScaling = true);
-
-
-    virtual ~SdlOpenGLViewport();
-
-    virtual uint32_t GetSdlWindowId() ORTHANC_OVERRIDE;
-
-    virtual void Paint() ORTHANC_OVERRIDE;
-
-    virtual void UpdateSize(unsigned int width, 
-                            unsigned int height) ORTHANC_OVERRIDE;
-
-    virtual void ToggleMaximize() ORTHANC_OVERRIDE;
-  };
-
-
-  class SdlCairoViewport : public SdlViewport
-  {
-  private:
-    SdlWindow     window_;
-    SDL_Surface*  sdlSurface_;
-
-    void CreateSdlSurfaceFromCompositor(CairoCompositor& compositor);
-
-  private:
-    SdlCairoViewport(const char* title,
-                     unsigned int width,
-                     unsigned int height,
-                     bool allowDpiScaling = true);
-  public:
-    static boost::shared_ptr<SdlCairoViewport> Create(const char* title,
-                     unsigned int width,
-                     unsigned int height,
-                     bool allowDpiScaling = true);
-
-
-    virtual ~SdlCairoViewport();
-
-    virtual uint32_t GetSdlWindowId() ORTHANC_OVERRIDE;
-
-    virtual void Paint() ORTHANC_OVERRIDE;
-
-    virtual void UpdateSize(unsigned int width,
-                            unsigned int height) ORTHANC_OVERRIDE;
-
-    virtual void ToggleMaximize() ORTHANC_OVERRIDE;
-  };
-}
--- a/Framework/Viewport/SdlWindow.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SdlWindow.h"
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-#ifdef WIN32 
-#include <windows.h> // for SetProcessDpiAware
-#endif 
-// WIN32
-
-#include <SDL_render.h>
-#include <SDL_video.h>
-#include <SDL.h>
-
-namespace OrthancStone
-{
-  SdlWindow::SdlWindow(const char* title,
-                       unsigned int width,
-                       unsigned int height,
-                       bool enableOpenGl,
-                       bool allowDpiScaling) :
-    maximized_(false)
-  {
-    // TODO Understand why, with SDL_WINDOW_OPENGL + MinGW32 + Release
-    // build mode, the application crashes whenever the SDL window is
-    // resized or maximized
-
-    uint32_t windowFlags, rendererFlags;
-    if (enableOpenGl)
-    {
-      windowFlags = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE;
-      rendererFlags = SDL_RENDERER_ACCELERATED;
-    }
-    else
-    {
-      windowFlags = SDL_WINDOW_RESIZABLE;
-      rendererFlags = SDL_RENDERER_SOFTWARE;
-    }
-
-// TODO: probably required on MacOS X, too
-#if defined(WIN32) && (_WIN32_WINNT >= 0x0600)
-    if (!allowDpiScaling)
-    {
-      // if we do NOT allow DPI scaling, it means an SDL pixel will be a real
-      // monitor pixel. This is needed for high-DPI applications
-
-      // Enable high-DPI support on Windows
-
-      // THE FOLLOWING HAS BEEN COMMENTED OUT BECAUSE IT WILL CRASH UNDER 
-      // OLD WINDOWS VERSIONS
-      // ADD THIS AT THE TOP TO ENABLE IT:
-      // 
-      //#pragma comment(lib, "Shcore.lib") THIS IS ONLY REQUIRED FOR SetProcessDpiAwareness
-      //#include <windows.h>
-      //#include <ShellScalingAPI.h> THIS IS ONLY REQUIRED FOR SetProcessDpiAwareness
-      //#include <comdef.h> THIS IS ONLY REQUIRED FOR SetProcessDpiAwareness
-      // SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
-      
-      // This is supported on Vista+
-      SetProcessDPIAware();
-
-      windowFlags |= SDL_WINDOW_ALLOW_HIGHDPI;
-    }
-#endif 
-// WIN32
-    
-    window_ = SDL_CreateWindow(title,
-                               SDL_WINDOWPOS_UNDEFINED,
-                               SDL_WINDOWPOS_UNDEFINED,
-                               width, height, windowFlags);
-
-    if (window_ == NULL) 
-    {
-      LOG(ERROR) << "Cannot create the SDL window: " << SDL_GetError();
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    renderer_ = SDL_CreateRenderer(window_, -1, rendererFlags);
-    if (!renderer_)
-    {
-      LOG(ERROR) << "Cannot create the SDL renderer: " << SDL_GetError();
-      SDL_DestroyWindow(window_);
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-  SdlWindow::~SdlWindow()
-  {
-    if (renderer_ != NULL)
-    { 
-      SDL_DestroyRenderer(renderer_);
-    }
-
-    if (window_ != NULL)
-    { 
-      SDL_DestroyWindow(window_);
-    }
-  }
-
-
-  unsigned int SdlWindow::GetWidth() const
-  {
-    int w = -1;
-    SDL_GetWindowSize(window_, &w, NULL);
-
-    if (w < 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-    else
-    {
-      return static_cast<unsigned int>(w);
-    }
-  }
-
-
-  unsigned int SdlWindow::GetHeight() const
-  {
-    int h = -1;
-    SDL_GetWindowSize(window_, NULL, &h);
-
-    if (h < 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-    else
-    {
-      return static_cast<unsigned int>(h);
-    }
-  }
-
-
-  void SdlWindow::Render(SDL_Surface* surface)
-  {
-    /**
-     * "You are strongly encouraged to call SDL_RenderClear() to
-     * initialize the backbuffer before starting each new frame's
-     * drawing, even if you plan to overwrite every pixel."
-     * https://wiki.libsdl.org/SDL_RenderPresent
-     **/
-    SDL_SetRenderDrawColor(renderer_, 0, 0, 0, 255);
-    SDL_RenderClear(renderer_);  // Clear the entire screen to our selected color
-
-    SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer_, surface);
-    if (texture != NULL)
-    {
-      SDL_RenderCopy(renderer_, texture, NULL, NULL);
-      SDL_DestroyTexture(texture);
-    }
-
-    SDL_RenderPresent(renderer_);
-  }
-
-
-  void SdlWindow::ToggleMaximize()
-  {
-    if (maximized_)
-    {
-      SDL_RestoreWindow(window_);
-      maximized_ = false;
-    }
-    else
-    {
-      SDL_MaximizeWindow(window_);
-      maximized_ = true;
-    }
-  }
-
-
-  void SdlWindow::GlobalInitialize()
-  {
-    if (SDL_Init(SDL_INIT_VIDEO) != 0)
-    {
-      LOG(ERROR) << "Cannot initialize SDL";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-  void SdlWindow::GlobalFinalize()
-  {
-    SDL_Quit();
-  }
-}
-
-#endif
--- a/Framework/Viewport/SdlWindow.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include <boost/noncopyable.hpp>
-
-// Forward declaration of SDL type to avoid clashes with DCMTK headers
-// on "typedef Sint8", in "StoneInitialization.cpp"
-struct SDL_Window;
-struct SDL_Renderer;
-struct SDL_Surface;
-
-namespace OrthancStone
-{
-  class SdlWindow : public boost::noncopyable
-  {
-  private:
-    struct SDL_Window   *window_;
-    struct SDL_Renderer *renderer_;
-    bool                 maximized_;
-
-  public:
-    SdlWindow(const char* title,
-              unsigned int width,
-              unsigned int height,
-              bool enableOpenGl,
-              bool allowDpiScaling = true);
-
-    ~SdlWindow();
-
-    SDL_Window *GetObject() const
-    {
-      return window_;
-    }
-
-    unsigned int GetWidth() const;
-
-    unsigned int GetHeight() const;
-
-    /**
-     * WARNING: "Refresh()" cannot only be called from the main SDL
-     * thread, in which the window was created. Otherwise, the
-     * renderer displays nothing!
-     **/
-    void Render(struct SDL_Surface* surface);
-
-    void ToggleMaximize();
-
-    static void GlobalInitialize();
-
-    static void GlobalFinalize();
-  };
-}
-
-#endif
--- a/Framework/Viewport/WebAssemblyCairoViewport.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebAssemblyCairoViewport.h"
-
-#include "../Scene2D/CairoCompositor.h"
-
-#include <Images/Image.h>
-
-#include <boost/math/special_functions/round.hpp>
-
-namespace OrthancStone
-{
-  void WebAssemblyCairoViewport::GetCanvasSize(unsigned int& width,
-                                               unsigned int& height)
-  {
-    double w, h;
-    emscripten_get_element_css_size(GetCanvasCssSelector().c_str(), &w, &h);
-
-    /**
-     * Emscripten has the function emscripten_get_element_css_size()
-     * to query the width and height of a named HTML element. I'm
-     * calling this first to get the initial size of the canvas DOM
-     * element, and then call emscripten_set_canvas_size() to
-     * initialize the framebuffer size of the canvas to the same
-     * size as its DOM element.
-     * https://floooh.github.io/2017/02/22/emsc-html.html
-     **/
-    if (w > 0 &&
-        h > 0)
-    {
-      width = static_cast<unsigned int>(boost::math::iround(w));
-      height = static_cast<unsigned int>(boost::math::iround(h));
-    }
-    else
-    {
-      width = 0;
-      height = 0;
-    }
-  }
-
-
-  void WebAssemblyCairoViewport::Paint(ICompositor& compositor,
-                                       ViewportController& controller)
-  {
-    compositor.Refresh(controller.GetScene());
-
-    // Create a temporary memory buffer for the canvas in JavaScript
-    Orthanc::ImageAccessor cairo;
-    dynamic_cast<CairoCompositor&>(compositor).GetCanvas().GetReadOnlyAccessor(cairo);
-
-    const unsigned int width = cairo.GetWidth();
-    const unsigned int height = cairo.GetHeight();
-
-    if (javascript_.get() == NULL ||
-        javascript_->GetWidth() != width ||
-        javascript_->GetHeight() != height)
-    {
-      javascript_.reset(new Orthanc::Image(Orthanc::PixelFormat_RGBA32, width, height,
-                                           true /* force minimal pitch */));
-    }
-      
-    // Convert from BGRA32 memory layout (only color mode supported
-    // by Cairo, which corresponds to CAIRO_FORMAT_ARGB32) to RGBA32
-    // (as expected by HTML5 canvas). This simply amounts to
-    // swapping the B and R channels. Alpha channel is also set to
-    // full opacity (255).
-    uint8_t* q = reinterpret_cast<uint8_t*>(javascript_->GetBuffer());
-    for (unsigned int y = 0; y < height; y++)
-    {
-      const uint8_t* p = reinterpret_cast<const uint8_t*>(cairo.GetConstRow(y));
-      for (unsigned int x = 0; x < width; x++)
-      {
-        q[0] = p[2];  // R
-        q[1] = p[1];  // G
-        q[2] = p[0];  // B
-        q[3] = 255;   // A
-
-        p += 4;
-        q += 4;
-      }
-    }
-
-    // Execute JavaScript commands to blit the image buffer onto the
-    // 2D drawing context of the HTML5 canvas
-    EM_ASM({
-        const data = new Uint8ClampedArray(Module.HEAP8.buffer, $1, 4 * $2 * $3);
-        const img = new ImageData(data, $2, $3);
-        const ctx = document.getElementById(UTF8ToString($0)).getContext('2d');
-        ctx.putImageData(img, 0, 0);
-      },
-      GetCanvasId().c_str(), // $0
-      javascript_->GetBuffer(),   // $1
-      javascript_->GetWidth(),    // $2
-      javascript_->GetHeight());  // $3
-  }
-    
-
-  void WebAssemblyCairoViewport::UpdateSize(ICompositor& compositor)
-  {
-    unsigned int width, height;
-    GetCanvasSize(width, height);
-    emscripten_set_canvas_element_size(GetCanvasCssSelector().c_str(), width, height);
-
-    dynamic_cast<CairoCompositor&>(compositor).UpdateSize(width, height);
-  }
-
-
-  WebAssemblyCairoViewport::WebAssemblyCairoViewport(
-    const std::string& canvasId) :
-    WebAssemblyViewport(canvasId)
-  {
-    unsigned int width, height;
-    GetCanvasSize(width, height);
-    emscripten_set_canvas_element_size(GetCanvasCssSelector().c_str(), 
-                                       width, 
-                                       height);
-
-    AcquireCompositor(new CairoCompositor(width, height));
-  }
-}
--- a/Framework/Viewport/WebAssemblyCairoViewport.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WebAssemblyViewport.h"
-
-namespace OrthancStone
-{
-  class WebAssemblyCairoViewport : public WebAssemblyViewport
-  {
-  private:
-    std::unique_ptr<Orthanc::ImageAccessor>  javascript_;
-        
-    void GetCanvasSize(unsigned int& width,
-                       unsigned int& height);
-
-  protected:
-    virtual void Paint(ICompositor& compositor,
-                       ViewportController& controller) ORTHANC_OVERRIDE;
-    
-    virtual void UpdateSize(ICompositor& compositor) ORTHANC_OVERRIDE;
-
-  public:
-    WebAssemblyCairoViewport(const std::string& canvasId);
-
-    virtual ~WebAssemblyCairoViewport()
-    {
-      ClearCompositor();
-    }
-  };
-}
--- a/Framework/Viewport/WebAssemblyViewport.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,339 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebAssemblyViewport.h"
-
-#include "../Toolbox/GenericToolbox.h"
-
-#include <OrthancException.h>
-
-#include <boost/make_shared.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-namespace OrthancStone
-{
-  static void ConvertMouseEvent(PointerEvent& target,
-                                const EmscriptenMouseEvent& source,
-                                const ICompositor& compositor)
-  {
-    int x = static_cast<int>(source.targetX);
-    int y = static_cast<int>(source.targetY);
-
-    switch (source.button)
-    {
-      case 0:
-        target.SetMouseButton(MouseButton_Left);
-        break;
-
-      case 1:
-        target.SetMouseButton(MouseButton_Middle);
-        break;
-
-      case 2:
-        target.SetMouseButton(MouseButton_Right);
-        break;
-
-      default:
-        target.SetMouseButton(MouseButton_None);
-        break;
-    }
-      
-    target.AddPosition(compositor.GetPixelCenterCoordinates(x, y));
-    target.SetAltModifier(source.altKey);
-    target.SetControlModifier(source.ctrlKey);
-    target.SetShiftModifier(source.shiftKey);
-  }
-
-
-  class WebAssemblyViewport::WasmLock : public ILock
-  {
-  private:
-    WebAssemblyViewport& that_;
-
-  public:
-    WasmLock(WebAssemblyViewport& that) :
-      that_(that)
-    {
-    }
-
-    virtual bool HasCompositor() const ORTHANC_OVERRIDE
-    {
-      return that_.compositor_.get() != NULL;
-    }
-
-    virtual ICompositor& GetCompositor() ORTHANC_OVERRIDE
-    {
-      if (that_.compositor_.get() == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      else
-      {
-        return *that_.compositor_;
-      }
-    }
-
-    virtual ViewportController& GetController() ORTHANC_OVERRIDE
-    {
-      assert(that_.controller_);
-      return *that_.controller_;
-    }
-
-    virtual void Invalidate() ORTHANC_OVERRIDE
-    {
-      that_.Invalidate();
-    }
-  };
-
-
-  EM_BOOL WebAssemblyViewport::OnRequestAnimationFrame(double time, void *userData)
-  {
-    LOG(TRACE) << __func__;
-    WebAssemblyViewport* that = reinterpret_cast<WebAssemblyViewport*>(userData);
-
-    if (that->compositor_.get() != NULL &&
-        that->controller_ /* should always be true */)
-    {
-      that->Paint(*that->compositor_, *that->controller_);
-    }
-      
-    LOG(TRACE) << "Exiting: " << __func__;
-    return true;
-  }
-
-  EM_BOOL WebAssemblyViewport::OnResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData)
-  {
-    LOG(TRACE) << __func__;
-    WebAssemblyViewport* that = reinterpret_cast<WebAssemblyViewport*>(userData);
-
-    if (that->compositor_.get() != NULL)
-    {
-      that->UpdateSize(*that->compositor_);
-      that->Invalidate();
-    }
-      
-    LOG(TRACE) << "Exiting: " << __func__;
-    return true;
-  }
-
-
-  EM_BOOL WebAssemblyViewport::OnMouseDown(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData)
-  {
-    WebAssemblyViewport* that = reinterpret_cast<WebAssemblyViewport*>(userData);
-
-    LOG(TRACE) << "mouse down: " << that->GetCanvasCssSelector();      
-
-    if (that->compositor_.get() != NULL &&
-        that->interactor_.get() != NULL)
-    {
-      PointerEvent pointer;
-      ConvertMouseEvent(pointer, *mouseEvent, *that->compositor_);
-
-      that->controller_->HandleMousePress(*that->interactor_, pointer,
-                                         that->compositor_->GetCanvasWidth(),
-                                         that->compositor_->GetCanvasHeight());        
-      that->Invalidate();
-    }
-
-    LOG(TRACE) << "Exiting: " << __func__;
-    return true;
-  }
-
-    
-  EM_BOOL WebAssemblyViewport::OnMouseMove(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData)
-  {
-    WebAssemblyViewport* that = reinterpret_cast<WebAssemblyViewport*>(userData);
-
-    if (that->compositor_.get() != NULL &&
-        that->controller_->HasActiveTracker())
-    {
-      PointerEvent pointer;
-      ConvertMouseEvent(pointer, *mouseEvent, *that->compositor_);
-      if (that->controller_->HandleMouseMove(pointer))
-      {
-        that->Invalidate();
-      }
-    }
-
-    LOG(TRACE) << "Exiting: " << __func__;
-    return true;
-  }
-    
-  EM_BOOL WebAssemblyViewport::OnMouseUp(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData)
-  {
-    LOG(TRACE) << __func__;
-    WebAssemblyViewport* that = reinterpret_cast<WebAssemblyViewport*>(userData);
-
-    if (that->compositor_.get() != NULL)
-    {
-      PointerEvent pointer;
-      ConvertMouseEvent(pointer, *mouseEvent, *that->compositor_);
-      that->controller_->HandleMouseRelease(pointer);
-      that->Invalidate();
-    }
-
-    LOG(TRACE) << "Exiting: " << __func__;
-    return true;
-  }
-
-  void WebAssemblyViewport::Invalidate()
-  {
-    emscripten_request_animation_frame(OnRequestAnimationFrame, reinterpret_cast<void*>(this));
-  }
-
-  void WebAssemblyViewport::AcquireCompositor(ICompositor* compositor /* takes ownership */)
-  {
-    if (compositor == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-    else
-    {
-      compositor_.reset(compositor);
-    }
-  }
-
-#if DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR == 1
-// everything OK..... we're using the new setting
-#else
-#pragma message("WARNING: DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR is not defined or equal to 0. Stone will use the OLD Emscripten rules for DOM element selection.")
-#endif
-
-  WebAssemblyViewport::WebAssemblyViewport(
-    const std::string& canvasId, bool enableEmscriptenMouseEvents) :
-    canvasId_(canvasId),
-#if DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR == 1
-    canvasCssSelector_("#" + canvasId),
-#else
-    canvasCssSelector_(canvasId),
-#endif
-    interactor_(new DefaultViewportInteractor),
-    enableEmscriptenMouseEvents_(enableEmscriptenMouseEvents)
-  {
-  }
-
-  void WebAssemblyViewport::PostConstructor()
-  {
-    boost::shared_ptr<IViewport> viewport = shared_from_this();
-    controller_.reset(new ViewportController(viewport));
-
-    LOG(INFO) << "Initializing Stone viewport on HTML canvas: " 
-              << canvasId_;
-
-    if (canvasId_.empty() ||
-        canvasId_[0] == '#')
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange,
-        "The canvas identifier must not start with '#'");
-    }
-
-    // Disable right-click on the canvas (i.e. context menu)
-    EM_ASM({
-        document.getElementById(UTF8ToString($0)).oncontextmenu = 
-        function(event)
-        {
-          event.preventDefault();
-        }
-      },
-      canvasId_.c_str()   // $0
-      );
-
-    // It is not possible to monitor the resizing of individual
-    // canvas, so we track the full window of the browser
-    emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW,
-                                   reinterpret_cast<void*>(this),
-                                   false,
-                                   OnResize);
-
-    if (enableEmscriptenMouseEvents_)
-    {
-
-      // if any of this function causes an error in the console, please
-      // make sure you are using the new (as of 1.39.x) version of 
-      // emscripten element lookup rules( pass 
-      // "-s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1" to the linker.
-
-      emscripten_set_mousedown_callback(canvasCssSelector_.c_str(),
-                                        reinterpret_cast<void*>(this),
-                                        false,
-                                        OnMouseDown);
-
-      emscripten_set_mousemove_callback(canvasCssSelector_.c_str(),
-                                        reinterpret_cast<void*>(this),
-                                        false,
-                                        OnMouseMove);
-
-      emscripten_set_mouseup_callback(canvasCssSelector_.c_str(),
-                                      reinterpret_cast<void*>(this),
-                                      false,
-                                      OnMouseUp);
-    }
-  }
-
-  void WebAssemblyViewport::UpdateCanvasSize()
-  {
-    UpdateSize(*compositor_);
-  }
-
-  WebAssemblyViewport::~WebAssemblyViewport()
-  {
-    emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW,
-                                   reinterpret_cast<void*>(this),
-                                   false,
-                                   NULL);
-
-    if (enableEmscriptenMouseEvents_)
-    {
-
-      emscripten_set_mousedown_callback(canvasCssSelector_.c_str(),
-                                        reinterpret_cast<void*>(this),
-                                        false,
-                                        NULL);
-
-      emscripten_set_mousemove_callback(canvasCssSelector_.c_str(),
-                                        reinterpret_cast<void*>(this),
-                                        false,
-                                        NULL);
-
-      emscripten_set_mouseup_callback(canvasCssSelector_.c_str(),
-                                      reinterpret_cast<void*>(this),
-                                      false,
-                                      NULL);
-    }
-  }
-  
-  IViewport::ILock* WebAssemblyViewport::Lock()
-  {
-    return new WasmLock(*this);
-  }
-  
-  void WebAssemblyViewport::AcquireInteractor(IViewportInteractor* interactor)
-  {
-    if (interactor == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-    else
-    {
-      interactor_.reset(interactor);
-    }
-  }
-}
--- a/Framework/Viewport/WebAssemblyViewport.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if !defined(ORTHANC_ENABLE_WASM)
-#  error Macro ORTHANC_ENABLE_WASM must be defined
-#endif
-
-#if ORTHANC_ENABLE_WASM != 1
-#  error This file can only be used if targeting WebAssembly
-#endif
-
-#include "IViewport.h"
-
-#include <Compatibility.h>
-
-#include <emscripten.h>
-#include <emscripten/html5.h>
-
-#include <memory>
-#include <string>
-
-namespace OrthancStone
-{
-  class WebAssemblyViewport : public IViewport,
-                              public boost::enable_shared_from_this<WebAssemblyViewport>
-
-  {
-  private:
-    class WasmLock;
-    
-    std::string                           canvasId_;
-    std::string                           canvasCssSelector_;
-    std::unique_ptr<ICompositor>          compositor_;
-    std::unique_ptr<ViewportController>   controller_;
-    std::unique_ptr<IViewportInteractor>  interactor_;
-    bool                                  enableEmscriptenMouseEvents_;
-
-    static EM_BOOL OnRequestAnimationFrame(double time, void *userData);
-    
-    static EM_BOOL OnResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData);
-
-    static EM_BOOL OnMouseDown(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData);
-    
-    static EM_BOOL OnMouseMove(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData);
-    
-    static EM_BOOL OnMouseUp(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData);
-
-  protected:
-    void Invalidate();
-    
-    void ClearCompositor()
-    {
-      compositor_.reset();
-    }
-
-    bool HasCompositor() const
-    {
-      return compositor_.get() != NULL;
-    }
-
-    void AcquireCompositor(ICompositor* compositor /* takes ownership */);
-
-    virtual void Paint(ICompositor& compositor,
-                       ViewportController& controller) = 0;
-
-    virtual void UpdateSize(ICompositor& compositor) = 0;
-
-    /**
-    The second argument is temporary and should be deleted once the migration 
-    to interactors is finished.
-    */
-    WebAssemblyViewport(const std::string& canvasId, 
-                        bool enableEmscriptenMouseEvents = true);
-
-    void PostConstructor();
-
-  public:
-    virtual ILock* Lock() ORTHANC_OVERRIDE;
-
-    ~WebAssemblyViewport();
-
-    virtual void UpdateCanvasSize();
-
-    /**
-    This method takes ownership
-    */
-    void AcquireInteractor(IViewportInteractor* interactor);
-
-    const std::string& GetCanvasId() const
-    {
-      return canvasId_;
-    }
-
-    /**
-    emscripten functions requires the css selector for the canvas. This is 
-    different from the canvas id (the syntax is '#mycanvasid')
-    */
-    const std::string& GetCanvasCssSelector() const
-    {
-      return canvasCssSelector_;
-    }
-  };
-}
--- a/Framework/Viewport/WebGLViewport.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebGLViewport.h"
-
-#include "../StoneException.h"
-#include "../Scene2D/OpenGLCompositor.h"
-
-namespace OrthancStone
-{
-  void WebGLViewport::Paint(ICompositor& compositor,
-                            ViewportController& controller)
-  {
-    try
-    {
-      compositor.Refresh(controller.GetScene());
-
-      /**
-       * No need to manually swap the buffer: "Rendered WebGL content
-       * is implicitly presented (displayed to the user) on the canvas
-       * when the event handler that renders with WebGL returns back
-       * to the browser event loop."
-       * https://emscripten.org/docs/api_reference/html5.h.html#webgl-context
-       *
-       * Could call "emscripten_webgl_commit_frame()" if
-       * "explicitSwapControl" option were set to "true".
-       **/
-    }
-    catch (const StoneException& e)
-    {
-      // Ignore problems about the loss of the WebGL context (edge case)
-      if (e.GetErrorCode() == ErrorCode_WebGLContextLost)
-      {
-        return;
-      }
-      else
-      {
-        throw;
-      }
-    }
-  }
-    
-
-  WebGLViewport::WebGLViewport(const std::string& canvasId, bool enableEmscriptenMouseEvents) :
-    WebAssemblyViewport(canvasId,enableEmscriptenMouseEvents),
-    context_(GetCanvasCssSelector())
-  {
-    AcquireCompositor(new OpenGLCompositor(context_));
-  }
-
-  boost::shared_ptr<WebGLViewport> WebGLViewport::Create(
-    const std::string& canvasId, bool enableEmscriptenMouseEvents)
-  {
-    boost::shared_ptr<WebGLViewport> that = boost::shared_ptr<WebGLViewport>(
-        new WebGLViewport(canvasId, enableEmscriptenMouseEvents));
-    
-    that->WebAssemblyViewport::PostConstructor();
-    return that;
-  }
-
-  WebGLViewport::~WebGLViewport()
-  {
-    // Make sure to delete the compositor before its parent "context_" gets
-    // deleted
-    ClearCompositor();
-  }
-}
--- a/Framework/Viewport/WebGLViewport.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WebAssemblyViewport.h"
-#include "../OpenGL/WebAssemblyOpenGLContext.h"
-
-namespace OrthancStone
-{
-  class WebGLViewport : public WebAssemblyViewport
-  {
-  private:
-    OpenGL::WebAssemblyOpenGLContext  context_;
-    
-    WebGLViewport(const std::string& canvasId, bool enableEmscriptenMouseEvents);
-
-  protected:
-    virtual void Paint(ICompositor& compositor,
-                       ViewportController& controller) ORTHANC_OVERRIDE;
-    
-    virtual void UpdateSize(ICompositor& compositor) ORTHANC_OVERRIDE
-    {
-      context_.RefreshCanvasSize();
-    }
-
-  public:
-    static boost::shared_ptr<WebGLViewport> Create(const std::string& canvasId, bool enableEmscriptenMouseEvents = true);
-
-    virtual ~WebGLViewport();
-
-    bool IsContextLost()
-    {
-      return context_.IsContextLost();
-    } 
-  };
-}
--- a/Framework/Viewport/WebGLViewportsRegistry.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebGLViewportsRegistry.h"
-
-#include "../Toolbox/GenericToolbox.h"
-
-#include <OrthancException.h>
-
-#include <boost/make_shared.hpp>
-
-namespace OrthancStone
-{
-  void WebGLViewportsRegistry::LaunchTimer()
-  {
-    timeOutID_ = emscripten_set_timeout(
-      OnTimeoutCallback, 
-      timeoutMS_, 
-      reinterpret_cast<void*>(this));
-  }
-  
-  void WebGLViewportsRegistry::OnTimeout()
-  {
-    for (Viewports::iterator it = viewports_.begin();
-         it != viewports_.end(); 
-         ++it)
-    {
-      if (it->second == NULL ||
-          it->second->IsContextLost())
-      {
-        LOG(INFO) << "WebGL context lost for canvas: " << it->first;
-
-        // Try and duplicate the HTML5 canvas in the DOM
-        EM_ASM({
-            var canvas = document.getElementById(UTF8ToString($0));
-            if (canvas) {
-              var parent = canvas.parentElement;
-              if (parent) {
-                var cloned = canvas.cloneNode(true /* deep copy */);
-                parent.insertBefore(cloned, canvas);
-                parent.removeChild(canvas);
-              }
-            }
-          },
-          it->first.c_str()  // $0 = ID of the canvas
-          );
-
-        // At this point, the old canvas is removed from the DOM and
-        // replaced by a fresh one with the same ID: Recreate the
-        // WebGL context on the new canvas
-        boost::shared_ptr<WebGLViewport> viewport;
-
-        // we need to steal the properties from the old viewport
-        // and set them to the new viewport
-        {
-          std::unique_ptr<IViewport::ILock> lock(it->second->Lock());
-
-          // TODO: remove ViewportController
-          Scene2D* scene = lock->GetController().ReleaseScene();
-          viewport = WebGLViewport::Create(it->first);
-
-          {
-            std::unique_ptr<IViewport::ILock> newLock(viewport->Lock());
-            newLock->GetController().AcquireScene(scene);
-          }
-        }
-
-        // Replace the old WebGL viewport by the new one
-        it->second = viewport;
-
-        // Tag the fresh canvas as needing a repaint
-        {
-          std::unique_ptr<IViewport::ILock> lock(it->second->Lock());
-          lock->Invalidate();
-        }
-      }
-    }
-      
-    LaunchTimer();
-  }
-
-  void WebGLViewportsRegistry::OnTimeoutCallback(void *userData)
-  {
-    // This object dies with the process or tab. 
-    WebGLViewportsRegistry* that = 
-      reinterpret_cast<WebGLViewportsRegistry*>(userData);
-    that->OnTimeout();
-  }
-
-  WebGLViewportsRegistry::WebGLViewportsRegistry(double timeoutMS) :
-    timeoutMS_(timeoutMS),
-    timeOutID_(0)
-  {
-    if (timeoutMS <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }          
-    
-    LaunchTimer();
-  }
-
-  WebGLViewportsRegistry::~WebGLViewportsRegistry()
-  {
-    emscripten_clear_timeout(timeOutID_);
-    Clear();
-  }
-
-  boost::shared_ptr<WebGLViewport> WebGLViewportsRegistry::Add(
-    const std::string& canvasId)
-  {
-    if (viewports_.find(canvasId) != viewports_.end())
-    {
-      LOG(ERROR) << "Canvas was already registered: " << canvasId;
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      boost::shared_ptr<WebGLViewport> viewport = 
-        WebGLViewport::Create(canvasId);
-      viewports_[canvasId] = viewport;
-      return viewport;
-    }
-  }
-      
-  void WebGLViewportsRegistry::Remove(const std::string& canvasId)
-  {
-    Viewports::iterator found = viewports_.find(canvasId);
-
-    if (found == viewports_.end())
-    {
-      LOG(ERROR) << "Cannot remove unregistered canvas: " << canvasId;
-    }
-    else
-    {
-      viewports_.erase(found);
-    }
-  }
-  
-  void WebGLViewportsRegistry::Clear()
-  {
-    viewports_.clear();
-  }
-
-  WebGLViewportsRegistry::Accessor::Accessor(WebGLViewportsRegistry& that,
-                                             const std::string& canvasId) :
-    that_(that)
-  {
-    Viewports::iterator viewport = that.viewports_.find(canvasId);
-    if (viewport != that.viewports_.end() &&
-        viewport->second != NULL)
-    {
-      lock_.reset(viewport->second->Lock());
-    }
-  }
-
-  IViewport::ILock& WebGLViewportsRegistry::Accessor::GetViewport() const
-  {
-    if (IsValid())
-    {
-      return *lock_;
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-}
--- a/Framework/Viewport/WebGLViewportsRegistry.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WebGLViewport.h"
-
-#include <boost/enable_shared_from_this.hpp>
-
-namespace OrthancStone
-{
-  /**
-   * This singleton class must be used if many WebGL viewports are
-   * created by the higher-level application, implying possible loss
-   * of WebGL contexts. The object will run an infinite update loop
-   * that checks whether all the WebGL context are still valid (not
-   * lost). If some WebGL context is lost, it is automatically
-   * reinitialized by created a fresh HTML5 canvas.
-   **/  
-  class WebGLViewportsRegistry : public boost::noncopyable,
-    public boost::enable_shared_from_this<WebGLViewportsRegistry>
-  {
-  private:
-    typedef std::map<std::string, boost::shared_ptr<WebGLViewport> >  Viewports;
-
-    double     timeoutMS_;
-    Viewports  viewports_;
-    long       timeOutID_;
-
-    void LaunchTimer();
-
-    void OnTimeout();
-
-    static void OnTimeoutCallback(void *userData);
-    
-  public:
-    WebGLViewportsRegistry(double timeoutMS /* in milliseconds */);
-    
-    ~WebGLViewportsRegistry();
-
-    boost::shared_ptr<WebGLViewport> Add(const std::string& canvasId);
-
-    void Remove(const std::string& canvasId);
-
-    void Clear();
-
-    class Accessor : public boost::noncopyable
-    {
-    private:
-      WebGLViewportsRegistry&            that_;
-      std::unique_ptr<IViewport::ILock>  lock_;
-
-    public:
-      Accessor(WebGLViewportsRegistry& that,
-               const std::string& canvasId);
-
-      bool IsValid() const
-      {
-        return lock_.get() != NULL;
-      }
-
-      IViewport::ILock& GetViewport() const;
-    };
-  };
-}
--- a/Framework/Volumes/DicomStructureSetSlicer2.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#include "DicomStructureSetSlicer2.h"
-
-#include "../Toolbox/GeometryToolbox.h"
-#include "../Volumes/IVolumeSlicer.h"
-#include "../Scene2D/PolylineSceneLayer.h"
-
-namespace OrthancStone
-{
-  DicomStructureSetSlicer2::DicomStructureSetSlicer2(boost::shared_ptr<DicomStructureSet2> structureSet)
-    : structureSet_(structureSet)
-  {}
-
-  IVolumeSlicer::IExtractedSlice* DicomStructureSetSlicer2::ExtractSlice(const CoordinateSystem3D& cuttingPlane)
-  {
-    // revision is always the same, hence 0
-    return new DicomStructureSetSlice2(structureSet_, 0, cuttingPlane);
-  }
-
-  DicomStructureSetSlice2::DicomStructureSetSlice2(
-    boost::weak_ptr<DicomStructureSet2> structureSet, 
-    uint64_t revision, 
-    const CoordinateSystem3D& cuttingPlane) 
-    : structureSet_(structureSet.lock())
-    , isValid_(false)
-  {
-    bool opposite = false;
-
-    if (structureSet_->GetStructuresCount() == 0)
-    {
-      isValid_ = false;
-    }
-    else
-    {
-      // some structures seen in real life have no polygons. We must be 
-      // careful
-      bool found = false;
-      size_t curStructure = 0;
-      while (!found && curStructure < structureSet_->GetStructuresCount())
-      {
-        if (structureSet_->GetStructure(curStructure).IsValid())
-        {
-          found = true;
-          const Vector normal = structureSet_->GetStructure(0).GetNormal();
-          isValid_ = (
-            GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetNormal()) ||
-            GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetAxisX()) ||
-            GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetAxisY()));
-        }
-      }
-    }
-  }
-
-  ISceneLayer* DicomStructureSetSlice2::CreateSceneLayer(
-    const ILayerStyleConfigurator* configurator,
-    const CoordinateSystem3D& cuttingPlane)
-  {
-    assert(isValid_);
-
-    std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer);
-    layer->SetThickness(2); // thickness of the on-screen line
-
-    for (size_t i = 0; i < structureSet_->GetStructuresCount(); i++)
-    {
-      const DicomStructure2& structure = structureSet_->GetStructure(i);
-      if (structure.IsValid())
-      {
-        const Color& color = structure.GetColor();
-
-        std::vector< std::pair<Point2D, Point2D> > segments;
-
-        if (structure.Project(segments, cuttingPlane))
-        {
-          for (size_t j = 0; j < segments.size(); j++)
-          {
-            PolylineSceneLayer::Chain chain;
-            chain.resize(2);
-
-            chain[0] = ScenePoint2D(segments[j].first.x, segments[j].first.y);
-            chain[1] = ScenePoint2D(segments[j].second.x, segments[j].second.y);
-
-            layer->AddChain(chain, false /* NOT closed */, color);
-          }
-        }
-      }
-    }
-    return layer.release();
-  }
-}
-
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-
--- a/Framework/Volumes/DicomStructureSetSlicer2.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#include "../Toolbox/DicomStructureSet2.h"
-#include "../Volumes/IVolumeSlicer.h"
-
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-
-namespace OrthancStone
-{
-  class DicomStructureSetSlice2 : public IVolumeSlicer::IExtractedSlice
-  {
-  public:
-    DicomStructureSetSlice2(
-      boost::weak_ptr<DicomStructureSet2> structureSet,
-      uint64_t revision,
-      const CoordinateSystem3D& cuttingPlane);
-
-    virtual bool IsValid() ORTHANC_OVERRIDE
-    {
-      return isValid_;
-    }
-
-    virtual uint64_t GetRevision() ORTHANC_OVERRIDE
-    {
-      return revision_;
-    }
-
-    virtual ISceneLayer* CreateSceneLayer(
-      const ILayerStyleConfigurator* configurator,  // possibly absent
-      const CoordinateSystem3D& cuttingPlane) ORTHANC_OVERRIDE;
-
-  private:
-    boost::shared_ptr<DicomStructureSet2> structureSet_;
-    bool isValid_;
-    uint64_t revision_;
-  };
-
-  class DicomStructureSetSlicer2 : public IVolumeSlicer
-  {
-  public:
-    DicomStructureSetSlicer2(boost::shared_ptr<DicomStructureSet2> structureSet);
-
-    /** IVolumeSlicer impl */
-    virtual IExtractedSlice* ExtractSlice(const CoordinateSystem3D& cuttingPlane) ORTHANC_OVERRIDE;
-  private:
-    boost::weak_ptr<DicomStructureSet2> structureSet_;
-  };
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
--- a/Framework/Volumes/DicomVolumeImage.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomVolumeImage.h"
-
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-  void DicomVolumeImage::CheckHasGeometry() const
-  {
-    if (!HasGeometry())
-    {
-      LOG(ERROR) << "DicomVolumeImage::CheckHasGeometry(): (!HasGeometry())";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-    
-
-  void DicomVolumeImage::Initialize(
-    const VolumeImageGeometry& geometry,
-    Orthanc::PixelFormat format, 
-    bool computeRange)
-  {
-    geometry_.reset(new VolumeImageGeometry(geometry));
-    image_.reset(new ImageBuffer3D(format, geometry_->GetWidth(), geometry_->GetHeight(),
-                                   geometry_->GetDepth(), computeRange));
-
-    revision_ ++;
-  }
-
-
-  void DicomVolumeImage::SetDicomParameters(const DicomInstanceParameters& parameters)
-  {
-    parameters_.reset(parameters.Clone());
-    revision_ ++;
-  }
-    
-
-  bool DicomVolumeImage::HasGeometry() const
-  {
-    return (geometry_.get() != NULL &&
-            image_.get() != NULL);
-  }
-
-
-  ImageBuffer3D& DicomVolumeImage::GetPixelData()
-  {
-    CheckHasGeometry();
-    return *image_;
-  }
-
-
-  const ImageBuffer3D& DicomVolumeImage::GetPixelData() const
-  {
-    CheckHasGeometry();
-    return *image_;
-  }
-
-
-  const VolumeImageGeometry& DicomVolumeImage::GetGeometry() const
-  {
-    CheckHasGeometry();
-    return *geometry_;
-  }
-
-
-  const DicomInstanceParameters& DicomVolumeImage::GetDicomParameters() const
-  {
-    if (HasDicomParameters())
-    {
-      return *parameters_;
-    }
-    else
-    {
-      LOG(ERROR) << "DicomVolumeImage::GetDicomParameters(): (!HasDicomParameters())";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }      
-  }
-}
--- a/Framework/Volumes/DicomVolumeImage.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Messages/IMessage.h"
-#include "../Toolbox/DicomInstanceParameters.h"
-#include "ImageBuffer3D.h"
-#include "VolumeImageGeometry.h"
-
-namespace OrthancStone
-{
-  /**
-  This class combines a 3D image buffer, a 3D volume geometry and
-  information about the DICOM parameters of the series.
-  (MPR means MultiPlanar Reconstruction)
-  */ 
-  class DicomVolumeImage : public boost::noncopyable
-  {
-  public:
-    // TODO - Are these messages still useful?
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryReadyMessage, DicomVolumeImage);
-    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ContentUpdatedMessage, DicomVolumeImage);
-
-  private:
-    uint64_t                                revision_;
-    std::unique_ptr<VolumeImageGeometry>      geometry_;
-    std::unique_ptr<ImageBuffer3D>            image_;
-    std::unique_ptr<DicomInstanceParameters>  parameters_;
-
-    void CheckHasGeometry() const;
-    
-  public:
-    DicomVolumeImage() :
-      revision_(0)
-    {
-    }
-
-    void IncrementRevision()
-    {
-      revision_ ++;
-    }
-
-    void Initialize(const VolumeImageGeometry& geometry,
-                    Orthanc::PixelFormat format, 
-                    bool computeRange = false);
-
-    // Used by volume slicers
-    void SetDicomParameters(const DicomInstanceParameters& parameters);
-    
-    uint64_t GetRevision() const
-    {
-      return revision_;
-    }
-
-    bool HasGeometry() const;
-
-    ImageBuffer3D& GetPixelData();
-
-    const ImageBuffer3D& GetPixelData() const;
-
-    const VolumeImageGeometry& GetGeometry() const;
-
-    bool HasDicomParameters() const
-    {
-      return parameters_.get() != NULL;
-    }      
-
-    const DicomInstanceParameters& GetDicomParameters() const;
-  };
-}
--- a/Framework/Volumes/DicomVolumeImageMPRSlicer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomVolumeImageMPRSlicer.h"
-
-#include "../StoneException.h"
-
-#include "../Toolbox/ImageToolbox.h"
-
-#include <OrthancException.h>
-//#include <Images/PngWriter.h>
-#include <Images/JpegWriter.h>
-
-namespace OrthancStone
-{
-  void DicomVolumeImageMPRSlicer::Slice::CheckValid() const
-  {
-    if (!valid_)
-    {
-      LOG(ERROR) << "DicomVolumeImageMPRSlicer::Slice::CheckValid(): (!valid_)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-
-  DicomVolumeImageMPRSlicer::Slice::Slice(const DicomVolumeImage& volume,
-                                          const CoordinateSystem3D& cuttingPlane) :
-    volume_(volume),
-    revision_(volume_.GetRevision())
-  {
-    valid_ = (volume_.HasDicomParameters() &&
-              volume_.GetGeometry().DetectSlice(projection_, sliceIndex_, cuttingPlane));
-  }
-
-
-  VolumeProjection DicomVolumeImageMPRSlicer::Slice::GetProjection() const
-  {
-    CheckValid();
-    return projection_;
-  }
-
-
-  unsigned int DicomVolumeImageMPRSlicer::Slice::GetSliceIndex() const
-  {
-    CheckValid();
-    return sliceIndex_;
-  }
-  
-
-  ISceneLayer* DicomVolumeImageMPRSlicer::Slice::CreateSceneLayer(const ILayerStyleConfigurator* configurator,
-                                                                  const CoordinateSystem3D& cuttingPlane)
-  {
-    CheckValid();
-
-    if (configurator == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer,
-                                      "A style configurator is mandatory for textures");
-    }
-
-    std::unique_ptr<TextureBaseSceneLayer> texture;
-      
-    {
-      const DicomInstanceParameters& parameters = volume_.GetDicomParameters();
-      ImageBuffer3D::SliceReader reader(volume_.GetPixelData(), projection_, sliceIndex_);
-
-      texture.reset(dynamic_cast<TextureBaseSceneLayer*>
-                    (configurator->CreateTextureFromDicom(reader.GetAccessor(), parameters)));
-    }
-    
-    const CoordinateSystem3D& system = volume_.GetGeometry().GetProjectionGeometry(projection_);
-      
-    double x0, y0, x1, y1;
-    cuttingPlane.ProjectPoint(x0, y0, system.GetOrigin());
-    cuttingPlane.ProjectPoint(x1, y1, system.GetOrigin() + system.GetAxisX());
-
-    {
-      double xz, yz;
-      cuttingPlane.ProjectPoint(xz, yz, LinearAlgebra::CreateVector(0, 0, 0));
-      texture->SetOrigin(x0 - xz, y0 - yz);
-    }
-
-    double dx = x1 - x0;
-    double dy = y1 - y0;
-    if (!LinearAlgebra::IsCloseToZero(dx) ||
-        !LinearAlgebra::IsCloseToZero(dy))
-    {
-      texture->SetAngle(atan2(dy, dx));
-    }
-
-    Vector tmp = volume_.GetGeometry().GetVoxelDimensions(projection_);
-    texture->SetPixelSpacing(tmp[0], tmp[1]);
-
-    return texture.release();
-  }
-
-
-  DicomVolumeImageMPRSlicer::~DicomVolumeImageMPRSlicer()
-  {
-    LOG(TRACE) << "DicomVolumeImageMPRSlicer::~DicomVolumeImageMPRSlicer()";
-  }
-
-  IVolumeSlicer::IExtractedSlice*
-  DicomVolumeImageMPRSlicer::ExtractSlice(const CoordinateSystem3D& cuttingPlane)
-  {
-    if (volume_->HasGeometry())
-    {
-      return new Slice(*volume_, cuttingPlane);
-    }
-    else
-    {
-      return new IVolumeSlicer::InvalidSlice;
-    }
-  }
-}
--- a/Framework/Volumes/DicomVolumeImageMPRSlicer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "DicomVolumeImage.h"
-#include "IVolumeSlicer.h"
-
-#include <boost/shared_ptr.hpp>
-
-namespace OrthancStone
-{
-  /**
-     Implements the IVolumeSlicer on Dicom volume data when the cutting plane
-     that is supplied to the slicer is either axial, sagittal or coronal. 
-     Arbitrary planes are *not* supported
-  */
-  class DicomVolumeImageMPRSlicer : public IVolumeSlicer
-  {
-  public:
-    class Slice : public IExtractedSlice
-    {
-    private:
-      const DicomVolumeImage&  volume_;
-      uint64_t                 revision_;
-      bool                     valid_;
-      VolumeProjection         projection_;
-      unsigned int             sliceIndex_;
-
-      void CheckValid() const;
-
-    public:
-      /**
-         Represents a slice of a volume image that is parallel to the 
-         coordinate system axis. 
-         The constructor initializes the type of projection (axial, sagittal or
-         coronal) and the corresponding slice index, from the cutting plane.
-      */
-      Slice(const DicomVolumeImage& volume,
-            const CoordinateSystem3D& cuttingPlane);
-
-      void SetRevision(uint64_t revision)
-      {
-        revision_ = revision;
-      }
-
-      VolumeProjection GetProjection() const;
-
-      unsigned int GetSliceIndex() const;
-
-      virtual bool IsValid()
-      {
-        return valid_;
-      }
-
-      virtual uint64_t GetRevision()
-      {
-        return revision_;
-      }
-
-      virtual ISceneLayer* CreateSceneLayer(const ILayerStyleConfigurator* configurator,
-                                            const CoordinateSystem3D& cuttingPlane);
-    };
-
-  private:
-    boost::shared_ptr<DicomVolumeImage>  volume_;
-
-  public:
-    DicomVolumeImageMPRSlicer(const boost::shared_ptr<DicomVolumeImage>& volume) :
-      volume_(volume)
-    {
-    }
-
-    boost::shared_ptr<const DicomVolumeImage> GetVolume() const
-    {
-      return volume_;
-    }
-
-    virtual ~DicomVolumeImageMPRSlicer();
-
-    virtual IExtractedSlice* ExtractSlice(const CoordinateSystem3D& cuttingPlane) ORTHANC_OVERRIDE;
-  };
-}
--- a/Framework/Volumes/DicomVolumeImageReslicer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomVolumeImageReslicer.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  class DicomVolumeImageReslicer::Slice : public IVolumeSlicer::IExtractedSlice
-  {
-  private:
-    DicomVolumeImageReslicer&  that_;
-    CoordinateSystem3D         cuttingPlane_;
-      
-  public:
-    Slice(DicomVolumeImageReslicer& that,
-          const CoordinateSystem3D& cuttingPlane) :
-      that_(that),
-      cuttingPlane_(cuttingPlane)
-    {
-    }
-      
-    virtual bool IsValid()
-    {
-      return true;
-    }
-
-    virtual uint64_t GetRevision()
-    {
-      return that_.volume_->GetRevision();
-    }
-
-    virtual ISceneLayer* CreateSceneLayer(const ILayerStyleConfigurator* configurator,
-                                          const CoordinateSystem3D& cuttingPlane)
-    {
-      VolumeReslicer& reslicer = that_.reslicer_;
-        
-      if (configurator == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
-                                        "Must provide a layer style configurator");
-      }
-        
-      reslicer.SetOutputFormat(that_.volume_->GetPixelData().GetFormat());
-      reslicer.Apply(that_.volume_->GetPixelData(),
-                     that_.volume_->GetGeometry(),
-                     cuttingPlane);
-
-      if (reslicer.IsSuccess())
-      {
-        std::unique_ptr<TextureBaseSceneLayer> layer
-          (configurator->CreateTextureFromDicom(reslicer.GetOutputSlice(),
-                                                that_.volume_->GetDicomParameters()));
-        if (layer.get() == NULL)
-        {
-          return NULL;
-        }
-
-        double s = reslicer.GetPixelSpacing();
-        layer->SetPixelSpacing(s, s);
-        layer->SetOrigin(reslicer.GetOutputExtent().GetX1() + 0.5 * s,
-                         reslicer.GetOutputExtent().GetY1() + 0.5 * s);
-
-        // TODO - Angle!!
-                           
-        return layer.release();
-      }
-      else
-      {
-        return NULL;
-      }          
-    }
-  };
-    
-
-  DicomVolumeImageReslicer::DicomVolumeImageReslicer(const boost::shared_ptr<DicomVolumeImage>& volume) :
-    volume_(volume)
-  {
-    if (volume.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-  }
-
-    
-  IVolumeSlicer::IExtractedSlice* DicomVolumeImageReslicer::ExtractSlice(const CoordinateSystem3D& cuttingPlane)
-  {
-    if (volume_->HasGeometry())
-    {
-      return new Slice(*this, cuttingPlane);
-    }
-    else
-    {
-      return new IVolumeSlicer::InvalidSlice;
-    }
-  }
-}
--- a/Framework/Volumes/DicomVolumeImageReslicer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "DicomVolumeImage.h"
-#include "IVolumeSlicer.h"
-#include "VolumeReslicer.h"
-
-#include <boost/shared_ptr.hpp>
-
-namespace OrthancStone
-{
-  /**
-  This class is able to supply an extract slice for an arbitrary cutting
-  plane through a volume image
-  */
-  class DicomVolumeImageReslicer : public IVolumeSlicer
-  {
-  private:
-    class Slice;
-    
-    boost::shared_ptr<DicomVolumeImage>  volume_;
-    VolumeReslicer                       reslicer_;
-
-  public:
-    DicomVolumeImageReslicer(const boost::shared_ptr<DicomVolumeImage>& volume);
-
-    ImageInterpolation GetInterpolation() const
-    {
-      return reslicer_.GetInterpolation();
-    }
-
-    void SetInterpolation(ImageInterpolation interpolation)
-    {
-      reslicer_.SetInterpolation(interpolation);
-    }
-
-    bool IsFastMode() const
-    {
-      return reslicer_.IsFastMode();
-    }
-
-    void SetFastMode(bool fast)
-    {
-      reslicer_.EnableFastMode(fast);
-    }
-    
-    virtual IExtractedSlice* ExtractSlice(const CoordinateSystem3D& cuttingPlane);
-  };
-}
--- a/Framework/Volumes/IGeometryProvider.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Volumes/VolumeImageGeometry.h"
-
-namespace OrthancStone
-{
-  class IGeometryProvider
-  {
-  public:
-    virtual ~IGeometryProvider() {}
-    virtual bool HasGeometry() const = 0;
-    virtual const OrthancStone::VolumeImageGeometry& GetImageGeometry() const = 0;
-  };
-}
--- a/Framework/Volumes/IVolumeSlicer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "IVolumeSlicer.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  uint64_t IVolumeSlicer::InvalidSlice::GetRevision()
-  {
-    LOG(ERROR) << "IVolumeSlicer::InvalidSlice::GetRevision()";
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-  }
-
-  ISceneLayer* IVolumeSlicer::InvalidSlice::CreateSceneLayer(const ILayerStyleConfigurator* configurator,
-                                                             const CoordinateSystem3D& cuttingPlane)
-  {
-    LOG(ERROR) << "IVolumeSlicer::InvalidSlice::CreateSceneLayer()";
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-  }
-}
--- a/Framework/Volumes/IVolumeSlicer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Scene2D/ILayerStyleConfigurator.h"
-#include "../Toolbox/CoordinateSystem3D.h"
-
-namespace OrthancStone
-{
-  /**
-  This interface is implemented by objects representing 3D volume data and 
-  that are able to return an object that:
-  - represent a slice of their data 
-  - are able to create the corresponding slice visual representation.
-  */
-  class IVolumeSlicer : public boost::noncopyable
-  {
-  public:
-    /**
-    This interface is implemented by objects representing a slice of 
-    volume data and that are able to create a 2D layer to display a this 
-    slice.
-
-    The CreateSceneLayer factory method is called with an optional
-    configurator that possibly impacts the ISceneLayer subclass that is 
-    created (for instance, if a LUT must be applied on the texture when
-    displaying it)
-    */
-    class IExtractedSlice : public boost::noncopyable
-    {
-    public:
-      virtual ~IExtractedSlice()
-      {
-      }
-
-      /**
-      Invalid slices are created when the data is not ready yet or if the
-      cut is outside of the available geometry.
-      */
-      virtual bool IsValid() = 0;
-
-      /**
-      This retrieves the *revision* that gets incremented every time the 
-      underlying object undergoes a mutable operation (that it, changes its 
-      state).
-      This **must** be a cheap call.
-      */
-      virtual uint64_t GetRevision() = 0;
-
-      /** Creates the slice visual representation */
-      virtual ISceneLayer* CreateSceneLayer(
-        const ILayerStyleConfigurator* configurator,  // possibly absent
-        const CoordinateSystem3D& cuttingPlane) = 0;
-    };
-
-    /**
-    See IExtractedSlice.IsValid()
-    */
-    class InvalidSlice : public IExtractedSlice
-    {
-    public:
-      virtual bool IsValid()
-      {
-        return false;
-      }
-
-      virtual uint64_t GetRevision();
-
-      virtual ISceneLayer* CreateSceneLayer(const ILayerStyleConfigurator* configurator,
-                                            const CoordinateSystem3D& cuttingPlane);
-    };
-
-
-    virtual ~IVolumeSlicer()
-    {
-    }
-
-    /**
-    This method is implemented by the objects representing volumetric data
-    and must returns an IExtractedSlice subclass that contains all the data
-    needed to, later on, create its visual representation through
-    CreateSceneLayer.
-    Subclasses a.o.: 
-    - InvalidSlice, 
-    - DicomVolumeImageMPRSlicer::Slice, 
-    - DicomVolumeImageReslicer::Slice
-    - DicomStructureSetLoader::Slice 
-    */
-    virtual IExtractedSlice* ExtractSlice(const CoordinateSystem3D& cuttingPlane) = 0;
-  };
-}
--- a/Framework/Volumes/ImageBuffer3D.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,311 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ImageBuffer3D.h"
-
-#include <Images/ImageProcessing.h>
-#include <Logging.h>
-#include <OrthancException.h>
-
-#include <string.h>
-
-namespace OrthancStone
-{
-  void ImageBuffer3D::GetAxialSliceAccessor(Orthanc::ImageAccessor& target,
-                                            unsigned int slice,
-                                            bool readOnly) const
-  {
-    if (slice >= depth_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (readOnly)
-    {
-      target.AssignReadOnly(format_, width_, height_, image_.GetPitch(),
-                            image_.GetConstRow(height_ * (depth_ - 1 - slice)));
-    }
-    else
-    {
-      target.AssignWritable(format_, width_, height_, image_.GetPitch(),
-                            image_.GetRow(height_ * (depth_ - 1 - slice)));
-    }
-  }
-
-
-  void ImageBuffer3D::GetCoronalSliceAccessor(Orthanc::ImageAccessor& target,
-                                              unsigned int slice,
-                                              bool readOnly) const
-  {
-    if (slice >= height_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (readOnly)
-    {
-      target.AssignReadOnly(format_, width_, depth_, image_.GetPitch() * height_,
-                            image_.GetConstRow(slice));
-    }
-    else
-    {
-      target.AssignWritable(format_, width_, depth_, image_.GetPitch() * height_,
-                            image_.GetRow(slice));
-    }
-  }
-
-
-  Orthanc::Image*  ImageBuffer3D::ExtractSagittalSlice(unsigned int slice) const
-  {
-    //LOG(TRACE) << "ImageBuffer3D::ExtractSagittalSlice this= " << std::hex << this << std::dec << " width_ = " << width_ << " height_ = " << height_ << " depth_ = " << depth_ << " slice = " << slice;
-    if (slice >= width_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    std::unique_ptr<Orthanc::Image> result(new Orthanc::Image(format_, height_, depth_, false));
-    //LOG(TRACE) << "ImageBuffer3D::ExtractSagittalSlice result will be an image of WIDTH = " << height_ << " and HEIGHT = " << depth_;
-
-    unsigned int bytesPerPixel = Orthanc::GetBytesPerPixel(format_);
-
-    for (unsigned int z = 0; z < depth_; z++)
-    {
-      //uint8_t* target = reinterpret_cast<uint8_t*>(result->GetRow(depth_ - 1 - z));
-      uint8_t* target = reinterpret_cast<uint8_t*>(result->GetRow(z));
-
-      for (unsigned int y = 0; y < height_; y++)
-      {
-        const void* source = (reinterpret_cast<const uint8_t*>(image_.GetConstRow(y + z * height_)) + bytesPerPixel * slice);
-        const uint8_t* byteSrc = reinterpret_cast<const uint8_t*>(source);
-        for (size_t byte = 0; byte < bytesPerPixel; ++byte)
-          target[byte] = byteSrc[byte];
-        target += bytesPerPixel;
-      }
-    }
-
-    return result.release();
-  }
-
-
-  ImageBuffer3D::ImageBuffer3D(Orthanc::PixelFormat format,
-                               unsigned int width,
-                               unsigned int height,
-                               unsigned int depth,
-                               bool computeRange) :
-    image_(format, width, height * depth, false),
-    format_(format),
-    width_(width),
-    height_(height),
-    depth_(depth),
-    computeRange_(computeRange),
-    hasRange_(false)
-  {
-    LOG(TRACE) << "Created a 3D image of size " << width << "x" << height
-              << "x" << depth << " in " << Orthanc::EnumerationToString(format)
-              << " (" << (GetEstimatedMemorySize() / (1024ll * 1024ll)) << "MB)";
-  }
-
-
-  void ImageBuffer3D::Clear()
-  {
-    memset(image_.GetBuffer(), 0, image_.GetHeight() * image_.GetPitch());
-  }
-
-
-  uint64_t ImageBuffer3D::GetEstimatedMemorySize() const
-  {
-    return image_.GetPitch() * image_.GetHeight() * Orthanc::GetBytesPerPixel(format_);
-  }
-
-
-  void ImageBuffer3D::ExtendImageRange(const Orthanc::ImageAccessor& slice)
-  {
-    if (!computeRange_ ||
-        slice.GetWidth() == 0 ||
-        slice.GetHeight() == 0)
-    {
-      return;
-    }
-
-    float sliceMin, sliceMax;
-
-    switch (slice.GetFormat())
-    {
-      case Orthanc::PixelFormat_Grayscale8:
-      case Orthanc::PixelFormat_Grayscale16:
-      case Orthanc::PixelFormat_Grayscale32:
-      case Orthanc::PixelFormat_SignedGrayscale16:
-      {
-        int64_t a, b;
-        Orthanc::ImageProcessing::GetMinMaxIntegerValue(a, b, slice);
-        sliceMin = static_cast<float>(a);
-        sliceMax = static_cast<float>(b);
-        break;
-      }
-
-      case Orthanc::PixelFormat_Float32:
-        Orthanc::ImageProcessing::GetMinMaxFloatValue(sliceMin, sliceMax, slice);
-        break;
-
-      default:
-        return;
-    }
-
-    if (hasRange_)
-    {
-      minValue_ = std::min(minValue_, sliceMin);
-      maxValue_ = std::max(maxValue_, sliceMax);
-    }
-    else
-    {
-      hasRange_ = true;
-      minValue_ = sliceMin;
-      maxValue_ = sliceMax;
-    }
-  }
-
-
-  bool ImageBuffer3D::GetRange(float& minValue,
-                               float& maxValue) const
-  {
-    if (hasRange_)
-    {
-      minValue = minValue_;
-      maxValue = maxValue_;
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-  ImageBuffer3D::SliceReader::SliceReader(const ImageBuffer3D& that,
-                                          VolumeProjection projection,
-                                          unsigned int slice)
-  {
-    switch (projection)
-    {
-      case VolumeProjection_Axial:
-        that.GetAxialSliceAccessor(accessor_, slice, true);
-        break;
-
-      case VolumeProjection_Coronal:
-        that.GetCoronalSliceAccessor(accessor_, slice, true);
-        break;
-
-      case VolumeProjection_Sagittal:
-        sagittal_.reset(that.ExtractSagittalSlice(slice));
-        sagittal_->GetReadOnlyAccessor(accessor_);
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  void ImageBuffer3D::SliceWriter::Flush()
-  {
-    if (modified_)
-    {
-      if (sagittal_.get() != NULL)
-      {
-        // TODO
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-
-      // Update the dynamic range of the underlying image, if
-      // "computeRange_" is set to true
-      that_.ExtendImageRange(accessor_);
-    }
-  }
-
-
-  ImageBuffer3D::SliceWriter::SliceWriter(ImageBuffer3D& that,
-                                          VolumeProjection projection,
-                                          unsigned int slice) :
-    that_(that),
-    modified_(false)
-  {
-    switch (projection)
-    {
-      case VolumeProjection_Axial:
-        that.GetAxialSliceAccessor(accessor_, slice, false);
-        break;
-
-      case VolumeProjection_Coronal:
-        that.GetCoronalSliceAccessor(accessor_, slice, false);
-        break;
-
-      case VolumeProjection_Sagittal:
-        sagittal_.reset(that.ExtractSagittalSlice(slice));
-        sagittal_->GetWriteableAccessor(accessor_);
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  uint8_t ImageBuffer3D::GetVoxelGrayscale8(unsigned int x,
-                                            unsigned int y,
-                                            unsigned int z) const
-  {
-    if (format_ != Orthanc::PixelFormat_Grayscale8)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    if (x >= width_ ||
-        y >= height_ ||
-        z >= depth_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    const void* p = image_.GetConstRow(y + height_ * (depth_ - 1 - z));
-    return reinterpret_cast<const uint8_t*>(p) [x];
-  }
-
-
-  uint16_t ImageBuffer3D::GetVoxelGrayscale16(unsigned int x,
-                                              unsigned int y,
-                                              unsigned int z) const
-  {
-    if (format_ != Orthanc::PixelFormat_Grayscale16)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }
-
-    if (x >= width_ ||
-        y >= height_ ||
-        z >= depth_)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    const void* p = image_.GetConstRow(y + height_ * (depth_ - 1 - z));
-    return reinterpret_cast<const uint16_t*>(p) [x];
-  }
-}
--- a/Framework/Volumes/ImageBuffer3D.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,231 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../StoneEnumerations.h"
-#include "../Toolbox/LinearAlgebra.h"
-
-#include <Compatibility.h>
-#include <Images/Image.h>
-
-namespace OrthancStone
-{
-  /*
-
-  This classes stores volume images sliced across the Z axis, vertically, in the decreasing Z order :
-
-  +---------------+
-  |               |
-  |   SLICE N-1   |
-  |               |
-  +---------------+
-  |               |
-  |   SLICE N-2   |
-  |               |
-  +---------------+
-  |               |
-  |   SLICE N-3   |
-  |               |
-  .               .
-  ......     ......
-  .               .
-  |               |
-  |   SLICE   2   |
-  |               |
-  +---------------+
-  |               |
-  |   SLICE   1   |
-  |               |
-  +---------------+
-  |               |
-  |   SLICE   0   |
-  |               |
-  +---------------+
-
-  As you can see, if the 3d image has size width, height, depth, the 2d image has :
-  - 2d width  = 3d width
-  - 2d height = 3d height * 3d depth
-
-  */
-
-  class ImageBuffer3D : public boost::noncopyable
-  {
-  private:
-    Orthanc::Image         image_;
-    Orthanc::PixelFormat   format_;
-    unsigned int           width_;
-    unsigned int           height_;
-    unsigned int           depth_;
-    bool                   computeRange_;
-    bool                   hasRange_;
-    float                  minValue_;
-    float                  maxValue_;
-    Matrix                 transform_;
-    Matrix                 transformInverse_;
-
-    void ExtendImageRange(const Orthanc::ImageAccessor& slice);
-
-    void GetAxialSliceAccessor(Orthanc::ImageAccessor& target,
-                               unsigned int slice,
-                               bool readOnly) const;
-    
-    void GetCoronalSliceAccessor(Orthanc::ImageAccessor& target,
-                                 unsigned int slice,
-                                 bool readOnly) const;
-
-    Orthanc::Image*  ExtractSagittalSlice(unsigned int slice) const;
-
-    template <typename T>
-    T GetPixelUnchecked(unsigned int x,
-                        unsigned int y,
-                        unsigned int z) const
-    {
-      const uint8_t* buffer = reinterpret_cast<const uint8_t*>(image_.GetConstBuffer());
-      const uint8_t* row = buffer + (y + height_ * (depth_ - 1 - z)) * image_.GetPitch();
-      return reinterpret_cast<const T*>(row) [x];
-    }
-
-  public:
-    ImageBuffer3D(Orthanc::PixelFormat format,
-                  unsigned int width,
-                  unsigned int height,
-                  unsigned int depth,
-                  bool computeRange);
-
-    void Clear();
-
-    const Orthanc::ImageAccessor& GetInternalImage() const
-    {
-      return image_;
-    }
-
-    unsigned int GetWidth() const
-    {
-      return width_;
-    }
-
-    unsigned int GetHeight() const
-    {
-      return height_;
-    }
-
-    unsigned int GetDepth() const
-    {
-      return depth_;
-    }
-
-    Orthanc::PixelFormat GetFormat() const
-    {
-      return format_;
-    }
-
-    unsigned int GetBytesPerPixel() const
-    {
-      return Orthanc::GetBytesPerPixel(format_);
-    }
-
-    uint64_t GetEstimatedMemorySize() const;
-
-    bool GetRange(float& minValue,
-                  float& maxValue) const;
-
-    uint8_t GetVoxelGrayscale8Unchecked(unsigned int x,
-                                        unsigned int y,
-                                        unsigned int z) const
-    {
-      return GetPixelUnchecked<uint8_t>(x, y, z);
-    }
-
-    uint16_t GetVoxelGrayscale16Unchecked(unsigned int x,
-                                          unsigned int y,
-                                          unsigned int z) const
-    {
-      return GetPixelUnchecked<uint16_t>(x, y, z);
-    }
-
-    int16_t GetVoxelSignedGrayscale16Unchecked(unsigned int x,
-                                               unsigned int y,
-                                               unsigned int z) const
-    {
-      return GetPixelUnchecked<int16_t>(x, y, z);
-    }
-
-    uint8_t GetVoxelGrayscale8(unsigned int x,
-                               unsigned int y,
-                               unsigned int z) const;
-
-    uint16_t GetVoxelGrayscale16(unsigned int x,
-                                 unsigned int y,
-                                 unsigned int z) const;
-
-    
-    class SliceReader : public boost::noncopyable
-    {
-    private:
-      Orthanc::ImageAccessor         accessor_;
-      std::unique_ptr<Orthanc::Image>  sagittal_;  // Unused for axial and coronal
-
-    public:
-      SliceReader(const ImageBuffer3D& that,
-                  VolumeProjection projection,
-                  unsigned int slice);
-
-      const Orthanc::ImageAccessor& GetAccessor() const
-      {
-        return accessor_;
-      }
-    };
-
-
-    class SliceWriter : public boost::noncopyable
-    {
-    private:
-      ImageBuffer3D&                 that_;
-      bool                           modified_;
-      Orthanc::ImageAccessor         accessor_;
-      std::unique_ptr<Orthanc::Image>  sagittal_;  // Unused for axial and coronal
-
-      void Flush();
-
-    public:
-      SliceWriter(ImageBuffer3D& that,
-                  VolumeProjection projection,
-                  unsigned int slice);
-
-      ~SliceWriter()
-      {
-        Flush();
-      }
-
-      const Orthanc::ImageAccessor& GetAccessor() const
-      {
-        return accessor_;
-      }
-
-      Orthanc::ImageAccessor& GetAccessor()
-      {
-        modified_ = true;
-        return accessor_;
-      }
-    };
-  };
-}
--- a/Framework/Volumes/OrientedVolumeBoundingBox.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OrientedVolumeBoundingBox.h"
-
-#include "../Toolbox/GeometryToolbox.h"
-#include "ImageBuffer3D.h"
-
-#include <OrthancException.h>
-
-#include <cassert>
-
-namespace OrthancStone
-{
-  OrientedVolumeBoundingBox::OrientedVolumeBoundingBox(const VolumeImageGeometry& geometry)
-  {
-    unsigned int n = geometry.GetDepth();
-    if (n < 1)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize);      
-    }
-
-    Vector dim = geometry.GetVoxelDimensions(VolumeProjection_Axial);
-
-    u_ = geometry.GetAxialGeometry().GetAxisX();
-    v_ = geometry.GetAxialGeometry().GetAxisY();
-    w_ = geometry.GetAxialGeometry().GetNormal();
-
-    hu_ = static_cast<double>(geometry.GetWidth() * dim[0] / 2.0);
-    hv_ = static_cast<double>(geometry.GetHeight() * dim[1] / 2.0);
-    hw_ = static_cast<double>(geometry.GetDepth() * dim[2] / 2.0);
-      
-    c_ = (geometry.GetAxialGeometry().GetOrigin() + 
-          (hu_ - dim[0] / 2.0) * u_ +
-          (hv_ - dim[1] / 2.0) * v_ +
-          (hw_ - dim[2] / 2.0) * w_);
-  }
-
-
-  bool OrientedVolumeBoundingBox::HasIntersectionWithPlane(std::vector<Vector>& points,
-                                                           const Vector& normal,
-                                                           double d) const
-  {
-    assert(normal.size() == 3);
-
-    double r = (hu_ * fabs(boost::numeric::ublas::inner_prod(normal, u_)) +
-                hv_ * fabs(boost::numeric::ublas::inner_prod(normal, v_)) +
-                hw_ * fabs(boost::numeric::ublas::inner_prod(normal, w_)));
-
-    double s = boost::numeric::ublas::inner_prod(normal, c_) + d;
-
-    if (fabs(s) >= r)
-    {
-      // No intersection, or intersection is reduced to a single point
-      return false;
-    }
-    else
-    {
-      Vector p;
-
-      // Loop over all the 12 edges (segments) of the oriented
-      // bounding box, and check whether they intersect the plane
-        
-      // X-aligned edges
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ - u_ * hu_ - v_ * hv_ - w_ * hw_,
-           c_ + u_ * hu_ - v_ * hv_ - w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ - u_ * hu_ + v_ * hv_ - w_ * hw_,
-           c_ + u_ * hu_ + v_ * hv_ - w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ - u_ * hu_ - v_ * hv_ + w_ * hw_,
-           c_ + u_ * hu_ - v_ * hv_ + w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ - u_ * hu_ + v_ * hv_ + w_ * hw_,
-           c_ + u_ * hu_ + v_ * hv_ + w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      // Y-aligned edges
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ - u_ * hu_ - v_ * hv_ - w_ * hw_,
-           c_ - u_ * hu_ + v_ * hv_ - w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ + u_ * hu_ - v_ * hv_ - w_ * hw_,
-           c_ + u_ * hu_ + v_ * hv_ - w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ - u_ * hu_ - v_ * hv_ + w_ * hw_,
-           c_ - u_ * hu_ + v_ * hv_ + w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ + u_ * hu_ - v_ * hv_ + w_ * hw_,
-           c_ + u_ * hu_ + v_ * hv_ + w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      // Z-aligned edges
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ - u_ * hu_ - v_ * hv_ - w_ * hw_,
-           c_ - u_ * hu_ - v_ * hv_ + w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ + u_ * hu_ - v_ * hv_ - w_ * hw_,
-           c_ + u_ * hu_ - v_ * hv_ + w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ - u_ * hu_ + v_ * hv_ - w_ * hw_,
-           c_ - u_ * hu_ + v_ * hv_ + w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      if (GeometryToolbox::IntersectPlaneAndSegment
-          (p, normal, d,
-           c_ + u_ * hu_ + v_ * hv_ - w_ * hw_,
-           c_ + u_ * hu_ + v_ * hv_ + w_ * hw_))
-      {
-        points.push_back(p);
-      }
-
-      return true;
-    }
-  }
-
-
-  bool OrientedVolumeBoundingBox::HasIntersection(std::vector<Vector>& points,
-                                                  const CoordinateSystem3D& plane) const
-  {
-    // From the vector equation of a 3D plane (specified by origin
-    // and normal), to the general equation of a 3D plane (which
-    // looses information about the origin of the coordinate system)
-    const Vector& normal = plane.GetNormal();
-    const Vector& origin = plane.GetOrigin();
-    double d = -(normal[0] * origin[0] + normal[1] * origin[1] + normal[2] * origin[2]);
-
-    return HasIntersectionWithPlane(points, normal, d);
-  }
-  
-
-  bool OrientedVolumeBoundingBox::Contains(const Vector& p) const
-  {
-    assert(p.size() == 3);
-
-    const Vector q = p - c_;
-
-    return (fabs(boost::numeric::ublas::inner_prod(q, u_)) <= hu_ &&
-            fabs(boost::numeric::ublas::inner_prod(q, v_)) <= hv_ &&
-            fabs(boost::numeric::ublas::inner_prod(q, w_)) <= hw_);
-  }
-
-  
-  void OrientedVolumeBoundingBox::FromInternalCoordinates(Vector& target,
-                                                          double x,
-                                                          double y,
-                                                          double z) const
-  {
-    target = (c_ +
-              u_ * 2.0 * hu_ * (x - 0.5) +
-              v_ * 2.0 * hv_ * (y - 0.5) +
-              w_ * 2.0 * hw_ * (z - 0.5));
-  }
-
-  
-  void OrientedVolumeBoundingBox::FromInternalCoordinates(Vector& target,
-                                                          const Vector& source) const
-  {
-    assert(source.size() == 3);
-    FromInternalCoordinates(target, source[0], source[1], source[2]);
-  }
-
-  
-  void OrientedVolumeBoundingBox::ToInternalCoordinates(Vector& target,
-                                                        const Vector& source) const
-  {
-    assert(source.size() == 3);
-    const Vector q = source - c_;
-
-    double x = boost::numeric::ublas::inner_prod(q, u_) / (2.0 * hu_) + 0.5;
-    double y = boost::numeric::ublas::inner_prod(q, v_) / (2.0 * hv_) + 0.5;
-    double z = boost::numeric::ublas::inner_prod(q, w_) / (2.0 * hw_) + 0.5;
-
-    LinearAlgebra::AssignVector(target, x, y, z);
-  }
-
-
-  bool OrientedVolumeBoundingBox::ComputeExtent(Extent2D& extent,
-                                                const CoordinateSystem3D& plane) const
-  {
-    extent.Reset();
-    
-    std::vector<Vector> points;
-    if (HasIntersection(points, plane))
-    {
-      for (size_t i = 0; i < points.size(); i++)
-      {
-        double x, y;
-        plane.ProjectPoint(x, y, points[i]);
-        extent.AddPoint(x, y);
-      }
-      
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-}
--- a/Framework/Volumes/OrientedVolumeBoundingBox.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/CoordinateSystem3D.h"
-#include "../Toolbox/Extent2D.h"
-#include "../Toolbox/LinearAlgebra.h"
-#include "VolumeImageGeometry.h"
-
-namespace OrthancStone
-{
-  class OrientedVolumeBoundingBox : public boost::noncopyable
-  {
-  private:
-    Vector  c_;   // center
-    Vector  u_;   // normalized width vector
-    Vector  v_;   // normalized height vector
-    Vector  w_;   // normalized depth vector
-    double  hu_;  // half width
-    double  hv_;  // half height
-    double  hw_;  // half depth
-
-  public:
-    OrientedVolumeBoundingBox(const VolumeImageGeometry& geometry);
-
-    const Vector& GetCenter() const
-    {
-      return c_;
-    }
-
-    bool HasIntersectionWithPlane(std::vector<Vector>& points,
-                                  const Vector& normal,
-                                  double d) const;
-
-    bool HasIntersection(std::vector<Vector>& points,
-                         const CoordinateSystem3D& plane) const;
-
-    bool Contains(const Vector& p) const;
-
-    void FromInternalCoordinates(Vector& target,
-                                 double x,
-                                 double y,
-                                 double z) const;
-
-    void FromInternalCoordinates(Vector& target,
-                                 const Vector& source) const;
-
-    void ToInternalCoordinates(Vector& target,
-                               const Vector& source) const;
-
-    bool ComputeExtent(Extent2D& extent,
-                       const CoordinateSystem3D& plane) const;
-  };
-}
-
--- a/Framework/Volumes/VolumeImageGeometry.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,356 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "VolumeImageGeometry.h"
-
-#include "../Toolbox/GeometryToolbox.h"
-
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-  void VolumeImageGeometry::Invalidate()
-  {
-    Vector p = (axialGeometry_.GetOrigin() +
-                static_cast<double>(depth_ - 1) * voxelDimensions_[2] * axialGeometry_.GetNormal());
-        
-    coronalGeometry_ = CoordinateSystem3D(p,
-                                          axialGeometry_.GetAxisX(),
-                                          -axialGeometry_.GetNormal());
-    
-    sagittalGeometry_ = CoordinateSystem3D(p,
-                                           axialGeometry_.GetAxisY(),
-                                           -axialGeometry_.GetNormal());
-
-    Vector origin = (
-      axialGeometry_.MapSliceToWorldCoordinates(-0.5 * voxelDimensions_[0],
-                                                -0.5 * voxelDimensions_[1]) -
-      0.5 * voxelDimensions_[2] * axialGeometry_.GetNormal());
-
-    LOG(TRACE) << "VolumeImageGeometry::Invalidate() origin = " << origin(0) << "," << origin(1) << "," << origin(2) << " | width_ = " << width_ << " | height_ = " << height_ << " | depth_ = " << depth_;
-
-    Vector scaling;
-    
-    if (width_ == 0 ||
-        height_ == 0 ||
-        depth_ == 0)
-    {
-      LinearAlgebra::AssignVector(scaling, 1, 1, 1);
-    }
-    else
-    {
-      scaling = (
-        axialGeometry_.GetAxisX() * voxelDimensions_[0] * static_cast<double>(width_) +
-        axialGeometry_.GetAxisY() * voxelDimensions_[1] * static_cast<double>(height_) +
-        axialGeometry_.GetNormal() * voxelDimensions_[2] * static_cast<double>(depth_));
-    }
-
-    transform_ = LinearAlgebra::Product(
-      GeometryToolbox::CreateTranslationMatrix(origin[0], origin[1], origin[2]),
-      GeometryToolbox::CreateScalingMatrix(scaling[0], scaling[1], scaling[2]));
-
-    LinearAlgebra::InvertMatrix(transformInverse_, transform_);
-  }
-
-  
-  VolumeImageGeometry::VolumeImageGeometry() :
-    width_(0),
-    height_(0),
-    depth_(0)
-  {
-    LinearAlgebra::AssignVector(voxelDimensions_, 1, 1, 1);
-    Invalidate();
-  }
-
-
-  void VolumeImageGeometry::SetSizeInVoxels(unsigned int width,
-                                    unsigned int height,
-                                    unsigned int depth)
-  {
-    width_ = width;
-    height_ = height;
-    depth_ = depth;
-    Invalidate();
-  }
-
-  
-  void VolumeImageGeometry::SetAxialGeometry(const CoordinateSystem3D& geometry)
-  {
-    axialGeometry_ = geometry;
-    Invalidate();
-  }
-
-
-  void VolumeImageGeometry::SetVoxelDimensions(double x,
-                                               double y,
-                                               double z)
-  {
-    if (x <= 0 ||
-        y <= 0 ||
-        z <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-    else
-    {
-      LinearAlgebra::AssignVector(voxelDimensions_, x, y, z);
-      Invalidate();
-    }
-  }
-
-
-  const CoordinateSystem3D& VolumeImageGeometry::GetProjectionGeometry(VolumeProjection projection) const
-  {
-    switch (projection)
-    {
-      case VolumeProjection_Axial:
-        return axialGeometry_;
-
-      case VolumeProjection_Coronal:
-        return coronalGeometry_;
-
-      case VolumeProjection_Sagittal:
-        return sagittalGeometry_;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-  
-  Vector VolumeImageGeometry::GetVoxelDimensions(VolumeProjection projection) const
-  {
-    switch (projection)
-    {
-      case VolumeProjection_Axial:
-        return voxelDimensions_;
-
-      case VolumeProjection_Coronal:
-        return LinearAlgebra::CreateVector(voxelDimensions_[0], voxelDimensions_[2], voxelDimensions_[1]);
-
-      case VolumeProjection_Sagittal:
-        return LinearAlgebra::CreateVector(voxelDimensions_[1], voxelDimensions_[2], voxelDimensions_[0]);
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  unsigned int VolumeImageGeometry::GetProjectionWidth(VolumeProjection projection) const
-  {
-    switch (projection)
-    {
-      case VolumeProjection_Axial:
-        return width_;
-
-      case VolumeProjection_Coronal:
-        return width_;
-
-      case VolumeProjection_Sagittal:
-        return height_;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  unsigned int VolumeImageGeometry::GetProjectionHeight(VolumeProjection projection) const
-  {
-    switch (projection)
-    {
-      case VolumeProjection_Axial:
-        return height_;
-
-      case VolumeProjection_Coronal:
-        return depth_;
-
-      case VolumeProjection_Sagittal:
-        return depth_;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-  }
-
-
-  unsigned int VolumeImageGeometry::GetProjectionDepth(VolumeProjection projection) const
-  {
-    switch (projection)
-    {
-      case VolumeProjection_Axial:
-        return depth_;
-
-      case VolumeProjection_Coronal:
-        return height_;
-
-      case VolumeProjection_Sagittal:
-        return width_;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }    
-  }
-
-
-  Vector VolumeImageGeometry::GetCoordinates(float x,
-                                             float y,
-                                             float z) const
-  {
-    Vector p = LinearAlgebra::Product(transform_, LinearAlgebra::CreateVector(x, y, z, 1));
-
-    assert(LinearAlgebra::IsNear(p[3], 1));  // Affine transform, no perspective effect
-
-    // Back to non-homogeneous coordinates
-    return LinearAlgebra::CreateVector(p[0], p[1], p[2]);
-  }
-
-
-  bool VolumeImageGeometry::DetectProjection(VolumeProjection& projection,
-                                             const Vector& planeNormal) const
-  {
-    if (GeometryToolbox::IsParallel(planeNormal, axialGeometry_.GetNormal()))
-    {
-      projection = VolumeProjection_Axial;
-      return true;
-    }
-    else if (GeometryToolbox::IsParallel(planeNormal, coronalGeometry_.GetNormal()))
-    {
-      projection = VolumeProjection_Coronal;
-      return true;
-    }
-    else if (GeometryToolbox::IsParallel(planeNormal, sagittalGeometry_.GetNormal()))
-    {
-      projection = VolumeProjection_Sagittal;
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-  
-  bool VolumeImageGeometry::DetectSlice(VolumeProjection& projection,
-                                        unsigned int& slice,
-                                        const CoordinateSystem3D& plane) const
-  {
-    if (!DetectProjection(projection, plane.GetNormal()))
-    {
-      return false;
-    }
-
-    // Transforms the coordinates of the origin of the plane, into the
-    // coordinates of the axial geometry
-    const Vector& origin = plane.GetOrigin();
-    Vector p = LinearAlgebra::Product(
-      transformInverse_,
-      LinearAlgebra::CreateVector(origin[0], origin[1], origin[2], 1));
-
-    assert(LinearAlgebra::IsNear(p[3], 1));
-
-    double z;
-
-    switch (projection)
-    {
-      case VolumeProjection_Axial:
-        z = p[2];
-        break;
-
-      case VolumeProjection_Coronal:
-        z = p[1];
-        break;
-
-      case VolumeProjection_Sagittal:
-        z = p[0];
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    const unsigned int projectionDepth = GetProjectionDepth(projection);
-    
-    z *= static_cast<double>(projectionDepth);
-    if (z < 0)
-    {
-      return false;
-    }
-    else
-    {
-      unsigned int d = static_cast<unsigned int>(std::floor(z));
-      if (d >= projectionDepth)
-      {
-        return false;
-      }
-      else
-      {
-        slice = d;
-        return true;
-      }
-    }
-  }
-
-
-  CoordinateSystem3D VolumeImageGeometry::GetProjectionSlice(VolumeProjection projection,
-                                                             unsigned int z) const
-  {
-    if (z >= GetProjectionDepth(projection))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    Vector dim = GetVoxelDimensions(projection);
-    CoordinateSystem3D plane = GetProjectionGeometry(projection);
-
-    Vector normal = plane.GetNormal();
-    if (projection == VolumeProjection_Sagittal)
-    {
-      /**
-       * WARNING: In sagittal geometry, the normal points to REDUCING
-       * X-axis in the 3D world. This is necessary to keep the
-       * right-hand coordinate system. Hence the negation.
-       **/
-      normal = -normal;
-    }
-    
-    plane.SetOrigin(plane.GetOrigin() + static_cast<double>(z) * dim[2] * normal);
-
-    return plane;
-  }
-
-  std::ostream& operator<<(std::ostream& s, const VolumeImageGeometry& v)
-  {
-    s << "width: " << v.width_ << " height: " << v.height_
-      << " depth: "             << v.depth_
-      << " axialGeometry: "     << v.axialGeometry_
-      << " coronalGeometry: "   << v.coronalGeometry_
-      << " sagittalGeometry: "  << v.sagittalGeometry_
-      << " voxelDimensions_: "  << v.voxelDimensions_
-      << " height: "            << v.height_
-      << " transform: "         << v.transform_
-      << " transformInverse: "  << v.transformInverse_;
-    return s;
-  }
-
-}
--- a/Framework/Volumes/VolumeImageGeometry.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../StoneEnumerations.h"
-#include "../Toolbox/CoordinateSystem3D.h"
-
-#include <iosfwd>
-
-namespace OrthancStone
-{
-  class VolumeImageGeometry
-  {
-  private:
-    unsigned int           width_;
-    unsigned int           height_;
-    unsigned int           depth_;
-    CoordinateSystem3D     axialGeometry_;
-    CoordinateSystem3D     coronalGeometry_;
-    CoordinateSystem3D     sagittalGeometry_;
-    Vector                 voxelDimensions_;
-    Matrix                 transform_;
-    Matrix                 transformInverse_;
-
-    void Invalidate();
-
-    friend std::ostream& operator<<(std::ostream& s, const VolumeImageGeometry& v);
-
-  public:
-    VolumeImageGeometry();
-
-    unsigned int GetWidth() const
-    {
-      return width_;
-    }
-
-    unsigned int GetHeight() const
-    {
-      return height_;
-    }
-
-    unsigned int GetDepth() const
-    {
-      return depth_;
-    }
-
-    const CoordinateSystem3D& GetAxialGeometry() const
-    {
-      return axialGeometry_;
-    }
-
-    const CoordinateSystem3D& GetCoronalGeometry() const
-    {
-      return coronalGeometry_;
-    }
-
-    const CoordinateSystem3D& GetSagittalGeometry() const
-    {
-      return sagittalGeometry_;
-    }
-
-    const CoordinateSystem3D& GetProjectionGeometry(VolumeProjection projection) const;
-    
-    const Matrix& GetTransform() const
-    {
-      return transform_;
-    }
-
-    const Matrix& GetTransformInverse() const
-    {
-      return transformInverse_;
-    }
-
-    void SetSizeInVoxels(unsigned int width,
-                 unsigned int height,
-                 unsigned int depth);
-
-    // Set the geometry of the first axial slice (i.e. the one whose
-    // depth == 0)
-    void SetAxialGeometry(const CoordinateSystem3D& geometry);
-
-    void SetVoxelDimensions(double x,
-                            double y,
-                            double z);
-
-    Vector GetVoxelDimensions(VolumeProjection projection) const;
-
-    unsigned int GetProjectionWidth(VolumeProjection projection) const;
-
-    unsigned int GetProjectionHeight(VolumeProjection projection) const;
-
-    unsigned int GetProjectionDepth(VolumeProjection projection) const;
-
-    // Get the 3D position of a point in the volume, where x, y and z
-    // lie in the [0;1] range
-    Vector GetCoordinates(float x,
-                          float y,
-                          float z) const;
-
-    bool DetectProjection(VolumeProjection& projection,
-                          const Vector& planeNormal) const;
-
-    /**
-    Being given a cutting plane, this method will determine if it is an
-    axial, sagittal or coronal cut and returns 
-    the slice number corresponding to this cut.
-
-    If the cutting plane is not parallel to the three x = 0, y = 0 or z = 0
-    planes, it is considered as arbitrary and the method returns false. 
-    Otherwise, it returns true.
-    */
-    bool DetectSlice(VolumeProjection& projection,
-                     unsigned int& slice,
-                     const CoordinateSystem3D& plane) const;
-
-    CoordinateSystem3D GetProjectionSlice(VolumeProjection projection,
-                                          unsigned int z) const;
-  };
-}
--- a/Framework/Volumes/VolumeReslicer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,839 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "VolumeReslicer.h"
-
-#include "../Toolbox/GeometryToolbox.h"
-#include "../Toolbox/SubvoxelReader.h"
-
-#include <Images/ImageTraits.h>
-#include <Logging.h>
-#include <OrthancException.h>
-
-#include <boost/math/special_functions/round.hpp>
-
-namespace OrthancStone
-{
-  // Anonymous namespace to avoid clashes between compilation modules
-  namespace
-  {
-    enum TransferFunction
-    {
-      TransferFunction_Copy,
-      TransferFunction_Float,
-      TransferFunction_Linear
-    };
-
-
-    template <Orthanc::PixelFormat InputFormat,
-              Orthanc::PixelFormat OutputFormat,
-              ImageInterpolation Interpolation,
-              TransferFunction Function>
-    class PixelShader;
-
-    
-    template <Orthanc::PixelFormat Format>
-    class PixelShader<Format, 
-                      Format, 
-                      ImageInterpolation_Nearest, 
-                      TransferFunction_Copy>
-    {
-    private:
-      typedef SubvoxelReader<Format, ImageInterpolation_Nearest>  VoxelReader;
-      typedef Orthanc::PixelTraits<Format>                        PixelWriter;
-
-      VoxelReader  reader_;
-      
-    public:
-      PixelShader(const ImageBuffer3D& image,
-                  float /* scaling */,
-                  float /* offset */) :
-        reader_(image)
-      {
-      }
-      
-      ORTHANC_FORCE_INLINE
-      void Apply(typename PixelWriter::PixelType* pixel,
-                 float volumeX,
-                 float volumeY,
-                 float volumeZ)
-      {
-        typename VoxelReader::PixelType value;
-
-        if (!reader_.GetValue(value, volumeX, volumeY, volumeZ))
-        {
-          VoxelReader::Traits::SetMinValue(value);
-        }
-
-        *pixel = value;
-      }        
-    };
-
-    
-    template <Orthanc::PixelFormat InputFormat,
-              Orthanc::PixelFormat OutputFormat>
-    class PixelShader<InputFormat, 
-                      OutputFormat, 
-                      ImageInterpolation_Nearest, 
-                      TransferFunction_Copy>
-    {
-    private:
-      typedef SubvoxelReader<InputFormat, ImageInterpolation_Nearest>  VoxelReader;
-      typedef Orthanc::PixelTraits<OutputFormat>                       PixelWriter;
-
-      VoxelReader  reader_;
-      
-    public:
-      PixelShader(const ImageBuffer3D& image,
-                  float /* scaling */,
-                  float /* offset */) :
-        reader_(image)
-      {
-      }
-      
-      ORTHANC_FORCE_INLINE
-      void Apply(typename PixelWriter::PixelType* pixel,
-                 float volumeX,
-                 float volumeY,
-                 float volumeZ)
-      {
-        typename VoxelReader::PixelType value;
-
-        if (!reader_.GetValue(value, volumeX, volumeY, volumeZ))
-        {
-          VoxelReader::Traits::SetMinValue(value);
-        }
-
-        PixelWriter::FloatToPixel(*pixel, VoxelReader::Traits::PixelToFloat(value));
-      }        
-    };
-
-    
-    template <Orthanc::PixelFormat InputFormat,
-              Orthanc::PixelFormat OutputFormat,
-              ImageInterpolation Interpolation>
-    class PixelShader<InputFormat,
-                      OutputFormat,
-                      Interpolation,
-                      TransferFunction_Float>
-    {
-    private:
-      typedef SubvoxelReader<InputFormat, Interpolation>  VoxelReader;
-      typedef Orthanc::PixelTraits<OutputFormat>          PixelWriter;
-
-      VoxelReader  reader_;
-      float        outOfVolume_;
-      
-    public:
-      PixelShader(const ImageBuffer3D& image,
-                  float /* scaling */,
-                  float /* offset */) :
-        reader_(image),
-        outOfVolume_(static_cast<float>(std::numeric_limits<typename VoxelReader::PixelType>::min()))
-      {
-      }
-      
-      ORTHANC_FORCE_INLINE
-      void Apply(typename PixelWriter::PixelType* pixel,
-                 float volumeX,
-                 float volumeY,
-                 float volumeZ)
-      {
-        float value;
-
-        if (!reader_.GetFloatValue(value, volumeX, volumeY, volumeZ))
-        {
-          value = outOfVolume_;
-        }
-
-        PixelWriter::FloatToPixel(*pixel, value);
-      }
-    };
-
-    
-   template <Orthanc::PixelFormat InputFormat,
-             Orthanc::PixelFormat OutputFormat,
-             ImageInterpolation Interpolation>
-    class PixelShader<InputFormat,
-                      OutputFormat,
-                      Interpolation,
-                      TransferFunction_Linear>
-    {
-    private:
-      typedef SubvoxelReader<InputFormat, Interpolation>  VoxelReader;
-      typedef Orthanc::PixelTraits<OutputFormat>          PixelWriter;
-
-      VoxelReader  reader_;
-      float        scaling_;
-      float        offset_;
-      float        outOfVolume_;
-      
-    public:
-      PixelShader(const ImageBuffer3D& image,
-                  float scaling,
-                  float offset) :
-        reader_(image),
-        scaling_(scaling),
-        offset_(offset),
-        outOfVolume_(static_cast<float>(std::numeric_limits<typename VoxelReader::PixelType>::min()))
-      {
-      }
-      
-      ORTHANC_FORCE_INLINE
-      void Apply(typename PixelWriter::PixelType* pixel,
-                 float volumeX,
-                 float volumeY,
-                 float volumeZ)
-      {
-        float value;
-
-        if (reader_.GetFloatValue(value, volumeX, volumeY, volumeZ))
-        {
-          value = scaling_ * value + offset_;
-        }
-        else
-        {
-          value = outOfVolume_;
-        }
-
-        PixelWriter::FloatToPixel(*pixel, value);
-      }        
-    };
-
-
-
-    class FastRowIterator : public boost::noncopyable
-    {
-    private:
-      float  position_[3];
-      float  offset_[3];
-      
-    public:
-      FastRowIterator(const Orthanc::ImageAccessor& slice,
-                      const Extent2D& extent,
-                      const CoordinateSystem3D& plane,
-                      const OrientedVolumeBoundingBox& box,
-                      unsigned int y)
-      {
-        const double width = static_cast<double>(slice.GetWidth());
-        const double height = static_cast<double>(slice.GetHeight());
-        assert(y < height);
-
-        Vector q1 = plane.MapSliceToWorldCoordinates
-          (extent.GetX1() + extent.GetWidth() * static_cast<double>(0) / static_cast<double>(width + 1),
-           extent.GetY1() + extent.GetHeight() * static_cast<double>(y) / static_cast<double>(height + 1));
-
-        Vector q2 = plane.MapSliceToWorldCoordinates
-          (extent.GetX1() + extent.GetWidth() * static_cast<double>(width - 1) / static_cast<double>(width + 1),
-           extent.GetY1() + extent.GetHeight() * static_cast<double>(y) / static_cast<double>(height + 1));
-
-        Vector r1, r2;
-        box.ToInternalCoordinates(r1, q1);
-        box.ToInternalCoordinates(r2, q2);
-
-        position_[0] = static_cast<float>(r1[0]);
-        position_[1] = static_cast<float>(r1[1]);
-        position_[2] = static_cast<float>(r1[2]);
-        
-        Vector tmp = (r2 - r1) / static_cast<double>(width - 1);
-        offset_[0] = static_cast<float>(tmp[0]);
-        offset_[1] = static_cast<float>(tmp[1]);
-        offset_[2] = static_cast<float>(tmp[2]);
-      }
-
-      ORTHANC_FORCE_INLINE
-      void Next()
-      {
-        position_[0] += offset_[0];
-        position_[1] += offset_[1];
-        position_[2] += offset_[2];
-      }
-
-      ORTHANC_FORCE_INLINE
-      void GetVolumeCoordinates(float& x,
-                                float& y,
-                                float& z) const
-      {
-        x = position_[0];
-        y = position_[1];
-        z = position_[2];
-      }
-    };
-
-
-    class SlowRowIterator : public boost::noncopyable
-    {
-    private:
-      const Orthanc::ImageAccessor&  slice_;
-      const Extent2D&                extent_;
-      const CoordinateSystem3D&      plane_;
-      const OrientedVolumeBoundingBox&     box_;
-      unsigned int                   x_;
-      unsigned int                   y_;
-      
-    public:
-      SlowRowIterator(const Orthanc::ImageAccessor& slice,
-                      const Extent2D& extent,
-                      const CoordinateSystem3D& plane,
-                      const OrientedVolumeBoundingBox& box,
-                      unsigned int y) :
-        slice_(slice),
-        extent_(extent),
-        plane_(plane),
-        box_(box),
-        x_(0),
-        y_(y)
-      {
-        assert(y_ < slice_.GetHeight());
-      }
-
-      void Next()
-      {
-        x_++;
-      }
-
-      void GetVolumeCoordinates(float& x,
-                                float& y,
-                                float& z) const
-      {
-        assert(x_ < slice_.GetWidth());
-        
-        const double width = static_cast<double>(slice_.GetWidth());
-        const double height = static_cast<double>(slice_.GetHeight());
-        
-        Vector q = plane_.MapSliceToWorldCoordinates
-          (extent_.GetX1() + extent_.GetWidth() * static_cast<double>(x_) / (width + 1.0),
-           extent_.GetY1() + extent_.GetHeight() * static_cast<double>(y_) / (height + 1.0));
-
-        Vector r;
-        box_.ToInternalCoordinates(r, q);
-
-        x = static_cast<float>(r[0]);
-        y = static_cast<float>(r[1]);
-        z = static_cast<float>(r[2]);
-      }
-    };
-
-
-    template <typename RowIterator,
-              Orthanc::PixelFormat InputFormat,
-              Orthanc::PixelFormat OutputFormat,
-              ImageInterpolation Interpolation,
-              TransferFunction Function>
-    static void ProcessImage(Orthanc::ImageAccessor& slice,
-                             const Extent2D& extent,
-                             const ImageBuffer3D& source,
-                             const CoordinateSystem3D& plane,
-                             const OrientedVolumeBoundingBox& box,
-                             float scaling,
-                             float offset)
-    {
-      typedef PixelShader<InputFormat, OutputFormat, Interpolation, Function>   Shader;
-
-      const unsigned int outputWidth = slice.GetWidth();
-      const unsigned int outputHeight = slice.GetHeight();
-
-      const float sourceWidth = static_cast<float>(source.GetWidth());
-      const float sourceHeight = static_cast<float>(source.GetHeight());
-      const float sourceDepth = static_cast<float>(source.GetDepth());
-
-      Shader shader(source, scaling, offset);
-
-      for (unsigned int y = 0; y < outputHeight; y++)
-      {
-        typedef typename Orthanc::ImageTraits<OutputFormat>::PixelType PixelType;
-        PixelType* p = reinterpret_cast<PixelType*>(slice.GetRow(y));
-
-        RowIterator it(slice, extent, plane, box, y);
-
-        for (unsigned int x = 0; x < outputWidth; x++, p++)
-        {
-          float volumeX, volumeY, volumeZ;
-          it.GetVolumeCoordinates(volumeX, volumeY, volumeZ);
-
-          shader.Apply(p, 
-                       volumeX * sourceWidth, 
-                       volumeY * sourceHeight, 
-                       volumeZ * sourceDepth);
-          it.Next();
-        }
-      }
-    }
-
-
-    template <typename RowIterator,
-              Orthanc::PixelFormat InputFormat,
-              Orthanc::PixelFormat OutputFormat>
-    static void ProcessImage(Orthanc::ImageAccessor& slice,
-                             const Extent2D& extent,
-                             const ImageBuffer3D& source,
-                             const CoordinateSystem3D& plane,
-                             const OrientedVolumeBoundingBox& box,
-                             ImageInterpolation interpolation,
-                             bool hasLinearFunction,
-                             float scaling,
-                             float offset)
-    {
-      if (hasLinearFunction)
-      {
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ProcessImage<RowIterator, InputFormat, OutputFormat,
-                         ImageInterpolation_Nearest, TransferFunction_Linear>
-              (slice, extent, source, plane, box, scaling, offset);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            ProcessImage<RowIterator, InputFormat, OutputFormat,
-                         ImageInterpolation_Bilinear, TransferFunction_Linear>
-              (slice, extent, source, plane, box, scaling, offset);
-            break;
-
-          case ImageInterpolation_Trilinear:
-            ProcessImage<RowIterator, InputFormat, OutputFormat,
-                         ImageInterpolation_Trilinear, TransferFunction_Linear>
-              (slice, extent, source, plane, box, scaling, offset);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }        
-      }
-      else
-      {
-        switch (interpolation)
-        {
-          case ImageInterpolation_Nearest:
-            ProcessImage<RowIterator, InputFormat, OutputFormat,
-                         ImageInterpolation_Nearest, TransferFunction_Copy>
-              (slice, extent, source, plane, box, 0, 0);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            ProcessImage<RowIterator, InputFormat, OutputFormat,
-                         ImageInterpolation_Bilinear, TransferFunction_Float>
-              (slice, extent, source, plane, box, 0, 0);
-            break;
-
-          case ImageInterpolation_Trilinear:
-            ProcessImage<RowIterator, InputFormat, OutputFormat,
-                         ImageInterpolation_Trilinear, TransferFunction_Float>
-              (slice, extent, source, plane, box, 0, 0);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }        
-      }
-    }
-    
-    
-    template <typename RowIterator>
-    static void ProcessImage(Orthanc::ImageAccessor& slice,
-                             const Extent2D& extent,
-                             const ImageBuffer3D& source,
-                             const CoordinateSystem3D& plane,
-                             const OrientedVolumeBoundingBox& box,
-                             ImageInterpolation interpolation,
-                             bool hasLinearFunction,
-                             float scaling,
-                             float offset)
-    {
-      if (source.GetFormat() == Orthanc::PixelFormat_Grayscale16 &&
-          slice.GetFormat() == Orthanc::PixelFormat_Grayscale8)
-      {
-        ProcessImage<RowIterator,
-                     Orthanc::PixelFormat_Grayscale16,
-                     Orthanc::PixelFormat_Grayscale8>
-          (slice, extent, source, plane, box, interpolation, hasLinearFunction, scaling, offset);
-      }
-      else if (source.GetFormat() == Orthanc::PixelFormat_Grayscale16 &&
-               slice.GetFormat() == Orthanc::PixelFormat_Grayscale16)
-      {
-        ProcessImage<RowIterator,
-                     Orthanc::PixelFormat_Grayscale16,
-                     Orthanc::PixelFormat_Grayscale16>
-          (slice, extent, source, plane, box, interpolation, hasLinearFunction, scaling, offset);
-      }
-      else if (source.GetFormat() == Orthanc::PixelFormat_SignedGrayscale16 &&
-               slice.GetFormat() == Orthanc::PixelFormat_BGRA32)
-      {
-        ProcessImage<RowIterator,
-                     Orthanc::PixelFormat_SignedGrayscale16,
-                     Orthanc::PixelFormat_BGRA32>
-          (slice, extent, source, plane, box, interpolation, hasLinearFunction, scaling, offset);
-      }
-      else if (source.GetFormat() == Orthanc::PixelFormat_Grayscale16 &&
-               slice.GetFormat() == Orthanc::PixelFormat_BGRA32)
-      {
-        ProcessImage<RowIterator,
-                     Orthanc::PixelFormat_Grayscale16,
-                     Orthanc::PixelFormat_BGRA32>
-          (slice, extent, source, plane, box, interpolation, hasLinearFunction, scaling, offset);
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-    }
-  }
-    
-    
-
-  void VolumeReslicer::CheckIterators(const ImageBuffer3D& source,
-                                      const CoordinateSystem3D& plane,
-                                      const OrientedVolumeBoundingBox& box) const
-  {
-    for (unsigned int y = 0; y < slice_->GetHeight(); y++)
-    {
-      FastRowIterator fast(*slice_, extent_, plane, box, y);
-      SlowRowIterator slow(*slice_, extent_, plane, box, y);
-
-      for (unsigned int x = 0; x < slice_->GetWidth(); x++)
-      {
-        float px, py, pz;
-        fast.GetVolumeCoordinates(px, py, pz);
-
-        float qx, qy, qz;
-        slow.GetVolumeCoordinates(qx, qy, qz);
-
-        Vector d;
-        LinearAlgebra::AssignVector(d, px - qx, py - qy, pz - qz);
-        double norm = boost::numeric::ublas::norm_2(d);
-        if (norm > 0.0001)
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-        }
-          
-        fast.Next();
-        slow.Next();
-      }
-    }
-  }
-
-    
-  void VolumeReslicer::Reset()
-  {
-    success_ = false;
-    extent_.Reset();
-    slice_.reset(NULL);
-  }
-
-
-  float VolumeReslicer::GetMinOutputValue() const
-  {
-    switch (outputFormat_)
-    {
-      case Orthanc::PixelFormat_Grayscale8:
-      case Orthanc::PixelFormat_Grayscale16:
-      case Orthanc::PixelFormat_BGRA32:
-        return 0.0f;
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-
-    
-  float VolumeReslicer::GetMaxOutputValue() const
-  {
-    switch (outputFormat_)
-    {
-      case Orthanc::PixelFormat_Grayscale8:
-      case Orthanc::PixelFormat_BGRA32:
-        return static_cast<float>(std::numeric_limits<uint8_t>::max());
-        break;
-
-      case Orthanc::PixelFormat_Grayscale16:
-        return static_cast<float>(std::numeric_limits<uint16_t>::max());
-        break;
-
-      default:
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-    }
-  }
-    
-
-  VolumeReslicer::VolumeReslicer() :
-    outputFormat_(Orthanc::PixelFormat_Grayscale8),
-    interpolation_(ImageInterpolation_Nearest),
-    fastMode_(true),
-    success_(false)
-  {
-    ResetLinearFunction();
-  }
-
-
-  void VolumeReslicer::GetLinearFunction(float& scaling,
-                                         float& offset) const
-  {
-    if (hasLinearFunction_)
-    {
-      scaling = scaling_;
-      offset = offset_;
-    }
-    else
-    {
-      scaling = 1.0f;
-      offset = 0.0f;
-    }
-  }
-
-  
-  void VolumeReslicer::ResetLinearFunction()
-  {
-    Reset();
-    hasLinearFunction_ = false;
-    scaling_ = 1.0f;
-    offset_ = 0.0f;
-  }
-    
-
-  void VolumeReslicer::SetLinearFunction(float scaling,
-                                         float offset)
-  {
-    Reset();
-    hasLinearFunction_ = true;
-    scaling_ = scaling;
-    offset_ = offset;
-  }
-
-  
-  void VolumeReslicer::SetWindow(float low,
-                                 float high)
-  {
-    //printf("Range in pixel values: %f->%f\n", low, high);
-    float scaling = (GetMaxOutputValue() - GetMinOutputValue()) / (high - low);
-    float offset = GetMinOutputValue() - scaling * low;
-    
-    SetLinearFunction(scaling, offset);
-
-    /*float x = scaling_ * low + offset_;
-    float y = scaling_ * high + offset_;
-    printf("%f %f (should be %f->%f)\n", x, y, GetMinOutputValue(), GetMaxOutputValue());*/
-  }
-  
-
-  void VolumeReslicer::FitRange(const ImageBuffer3D& image)
-  {
-    float minInputValue, maxInputValue;
-
-    if (!image.GetRange(minInputValue, maxInputValue) ||
-        maxInputValue < 1)
-    {
-      ResetLinearFunction();
-    }
-    else
-    {
-      SetWindow(minInputValue, maxInputValue);
-    }
-  }  
-
-  
-  void VolumeReslicer::SetWindowing(ImageWindowing windowing,
-                                    const ImageBuffer3D& image,
-                                    float rescaleSlope,
-                                    float rescaleIntercept)
-  {
-    if (windowing == ImageWindowing_Custom)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    float center, width;
-    ComputeWindowing(center, width, windowing, 0, 0);
-
-    float a = (center - width / 2.0f - rescaleIntercept) / rescaleSlope;
-    float b = (center + width / 2.0f - rescaleIntercept) / rescaleSlope;
-    SetWindow(a, b);
-  }
-
-
-  void VolumeReslicer::SetOutputFormat(Orthanc::PixelFormat format)
-  {
-    if (format != Orthanc::PixelFormat_Grayscale8 &&
-        format != Orthanc::PixelFormat_Grayscale16 &&
-        format != Orthanc::PixelFormat_BGRA32)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    if (hasLinearFunction_)
-    {
-      LOG(WARNING) << "Calls to VolumeReslicer::SetOutputFormat() should be done before VolumeReslicer::FitRange()";
-    }
-    
-    outputFormat_ = format;
-    Reset();
-  }
-
-
-  void VolumeReslicer::SetInterpolation(ImageInterpolation interpolation)
-  {
-    if (interpolation != ImageInterpolation_Nearest &&
-        interpolation != ImageInterpolation_Bilinear &&
-        interpolation != ImageInterpolation_Trilinear)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    interpolation_ = interpolation;
-    Reset();
-  }
-
-
-  const Extent2D& VolumeReslicer::GetOutputExtent() const
-  {
-    if (success_)
-    {
-      return extent_;
-    }
-    else
-    {
-      LOG(ERROR) << "VolumeReslicer::GetOutputExtent(): (!success_)";
-
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  
-  const Orthanc::ImageAccessor& VolumeReslicer::GetOutputSlice() const
-  {
-    if (success_)
-    {
-      assert(slice_.get() != NULL);
-      return *slice_;
-    }
-    else
-    {
-      LOG(ERROR) << "VolumeReslicer::GetOutputSlice(): (!success_)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  
-  Orthanc::ImageAccessor* VolumeReslicer::ReleaseOutputSlice()
-  {
-    if (success_)
-    {
-      assert(slice_.get() != NULL);
-      success_ = false;
-      return slice_.release();
-    }
-    else
-    {
-      LOG(ERROR) << "VolumeReslicer::ReleaseOutputSlice(): (!success_)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-
-  
-  void VolumeReslicer::Apply(const ImageBuffer3D& source,
-                             const VolumeImageGeometry& geometry,
-                             const CoordinateSystem3D& plane)
-  {
-    // Choose the default voxel size as the finest voxel dimension
-    // of the source volumetric image
-    const OrthancStone::Vector dim =
-      geometry.GetVoxelDimensions(OrthancStone::VolumeProjection_Axial);
-    double voxelSize = dim[0];
-    
-    if (dim[1] < voxelSize)
-    {
-      voxelSize = dim[1];
-    }
-    
-    if (dim[2] < voxelSize)
-    {
-      voxelSize = dim[2];
-    }
-
-    if (voxelSize <= 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    Apply(source, geometry, plane, voxelSize);
-  }
-
-  
-  void VolumeReslicer::Apply(const ImageBuffer3D& source,
-                             const VolumeImageGeometry& geometry,
-                             const CoordinateSystem3D& plane,
-                             double voxelSize)
-  {
-    Reset();
-    pixelSpacing_ = voxelSize;
-
-    // Firstly, compute the intersection of the source volumetric
-    // image with the reslicing plane. This leads to a polygon with 3
-    // to 6 vertices. We compute the extent of the intersection
-    // polygon, with respect to the coordinate system of the reslicing
-    // plane.
-    OrientedVolumeBoundingBox box(geometry);
-
-    if (!box.ComputeExtent(extent_, plane))
-    {
-      // The plane does not intersect with the bounding box of the volume
-      slice_.reset(new Orthanc::Image(outputFormat_, 0, 0, false));
-      success_ = true;
-      return;
-    }
-
-    // Secondly, the extent together with the voxel size gives the
-    // size of the output image
-    unsigned int width = boost::math::iround(extent_.GetWidth() / voxelSize);
-    unsigned int height = boost::math::iround(extent_.GetHeight() / voxelSize);
-
-    slice_.reset(new Orthanc::Image(outputFormat_, width, height, false));
-
-    //CheckIterators(source, plane, box);
-      
-    if (fastMode_)
-    {
-      ProcessImage<FastRowIterator>(*slice_, extent_, source, plane, box,
-                                    interpolation_, hasLinearFunction_, scaling_, offset_);
-    }
-    else
-    {
-      ProcessImage<SlowRowIterator>(*slice_, extent_, source, plane, box,
-                                    interpolation_, hasLinearFunction_, scaling_, offset_);
-    }
-
-    success_ = true;
-  }
-
-
-  double VolumeReslicer::GetPixelSpacing() const
-  {
-    if (success_)
-    {
-      return pixelSpacing_;
-    }
-    else
-    {
-      LOG(ERROR) << "VolumeReslicer::GetPixelSpacing(): (!success_)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-  }
-}
--- a/Framework/Volumes/VolumeReslicer.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/Extent2D.h"
-#include "OrientedVolumeBoundingBox.h"
-#include "ImageBuffer3D.h"
-
-namespace OrthancStone
-{
-  // Hypothesis: The output voxels always have square size
-  class VolumeReslicer : public boost::noncopyable
-  {
-  private:
-    // Input parameters
-    Orthanc::PixelFormat           outputFormat_;
-    bool                           hasLinearFunction_;
-    float                          scaling_;  // "a" in "f(x) = a * x + b"
-    float                          offset_;   // "b" in "f(x) = a * x + b"
-    ImageInterpolation             interpolation_;
-    bool                           fastMode_;
-
-    // Output of reslicing
-    bool                           success_;
-    Extent2D                       extent_;
-    std::unique_ptr<Orthanc::Image>  slice_;
-    double                         pixelSpacing_;
-
-    void CheckIterators(const ImageBuffer3D& source,
-                        const CoordinateSystem3D& plane,
-                        const OrientedVolumeBoundingBox& box) const;
-
-    void Reset();
-
-    float GetMinOutputValue() const;
-
-    float GetMaxOutputValue() const;
-
-    void SetWindow(float low,
-                   float high);
-    
-  public:
-    VolumeReslicer();
-
-    void GetLinearFunction(float& scaling,
-                           float& offset) const;
-
-    void ResetLinearFunction();
-    
-    void SetLinearFunction(float scaling,
-                           float offset);
-
-    void FitRange(const ImageBuffer3D& image);
-
-    void SetWindowing(ImageWindowing windowing,
-                      const ImageBuffer3D& image,
-                      float rescaleSlope,
-                      float rescaleIntercept);
-
-    Orthanc::PixelFormat GetOutputFormat() const
-    {
-      return outputFormat_;
-    }
-
-    void SetOutputFormat(Orthanc::PixelFormat format);
-
-    ImageInterpolation GetInterpolation() const
-    {
-      return interpolation_;
-    }
-
-    void SetInterpolation(ImageInterpolation interpolation);
-
-    bool IsFastMode() const
-    {
-      return fastMode_;
-    }
-
-    void EnableFastMode(bool enabled)
-    {
-      fastMode_ = enabled;
-    }
-
-    bool IsSuccess() const
-    {
-      return success_;
-    }
-
-    const Extent2D& GetOutputExtent() const;
-
-    const Orthanc::ImageAccessor& GetOutputSlice() const;
-
-    Orthanc::ImageAccessor* ReleaseOutputSlice();
-
-    void Apply(const ImageBuffer3D& source,
-               const VolumeImageGeometry& geometry,
-               const CoordinateSystem3D& plane);
-
-    void Apply(const ImageBuffer3D& source,
-               const VolumeImageGeometry& geometry,
-               const CoordinateSystem3D& plane,
-               double voxelSize);
-
-    double GetPixelSpacing() const;
-  };
-}
--- a/Framework/Volumes/VolumeSceneLayerSource.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,175 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "VolumeSceneLayerSource.h"
-
-#include "../Scene2D/NullLayer.h"
-#include "../Viewport/IViewport.h"
-#include "../StoneException.h"
-
-#include <OrthancException.h>
-
-namespace OrthancStone
-{
-  static bool IsSameCuttingPlane(const CoordinateSystem3D& a,
-                                 const CoordinateSystem3D& b)
-  {
-    // TODO - What if the normal is reversed?
-    double distance;
-    return (CoordinateSystem3D::ComputeDistance(distance, a, b) &&
-            LinearAlgebra::IsCloseToZero(distance));
-  }
-
-
-  void VolumeSceneLayerSource::ClearLayer()
-  {
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      ViewportController& controller = lock->GetController();
-      Scene2D& scene = controller.GetScene();
-      scene.DeleteLayer(layerDepth_);
-    }
-    lastPlane_.reset(NULL);
-  }
-
-  VolumeSceneLayerSource::VolumeSceneLayerSource(
-    boost::shared_ptr<OrthancStone::IViewport>  viewport,
-    int layerDepth,
-    const boost::shared_ptr<IVolumeSlicer>& slicer)
-    : viewport_(viewport)
-    , layerDepth_(layerDepth)
-    , slicer_(slicer)
-  {
-    if (slicer == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      ViewportController& controller = lock->GetController();
-      Scene2D& scene = controller.GetScene();
-      ORTHANC_ASSERT(!scene.HasLayer(layerDepth_));
-
-      // we need to book the scene layer depth by adding a dummy layer
-      std::unique_ptr<NullLayer> nullLayer(new NullLayer);
-      scene.SetLayer(layerDepth_,nullLayer.release());
-    }
-  }
-
-  VolumeSceneLayerSource::~VolumeSceneLayerSource()
-  {
-    ClearLayer();
-  }
-
-  void VolumeSceneLayerSource::RemoveConfigurator()
-  {
-    configurator_.reset();
-    lastPlane_.reset();
-  }
-
-
-  void VolumeSceneLayerSource::SetConfigurator(ILayerStyleConfigurator* configurator)  // Takes ownership
-  {
-    if (configurator == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-    }
-
-    configurator_.reset(configurator);
-
-    // Invalidate the layer
-    lastPlane_.reset(NULL);
-  }
-
-
-  ILayerStyleConfigurator& VolumeSceneLayerSource::GetConfigurator() const
-  {
-    if (configurator_.get() == NULL)
-    {
-      LOG(ERROR) << "VolumeSceneLayerSource::GetConfigurator(): (configurator_.get() == NULL)";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-      
-    return *configurator_;
-  }
-
-
-  void VolumeSceneLayerSource::Update(const CoordinateSystem3D& plane)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    assert(slicer_.get() != NULL);
-    std::unique_ptr<IVolumeSlicer::IExtractedSlice> slice(slicer_->ExtractSlice(plane));
-
-    if (slice.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);        
-    }
-
-    if (!slice->IsValid())
-    {
-      // The slicer cannot handle this cutting plane: Clear the layer
-      ClearLayer();
-    }
-    else if (lastPlane_.get() != NULL &&
-             IsSameCuttingPlane(*lastPlane_, plane) &&
-             lastRevision_ == slice->GetRevision())
-    {
-      // The content of the slice has not changed: Don't update the
-      // layer content, but possibly update its style
-
-      if (configurator_.get() != NULL &&
-          configurator_->GetRevision() != lastConfiguratorRevision_ &&
-          scene.HasLayer(layerDepth_))
-      {
-        configurator_->ApplyStyle(scene.GetLayer(layerDepth_));
-      }
-    }
-    else
-    {
-      LOG(TRACE) << "VolumeSceneLayerSource::Update -- Content has changed: An update is needed";
-      // Content has changed: An update is needed
-      lastPlane_.reset(new CoordinateSystem3D(plane));
-      lastRevision_ = slice->GetRevision();
-
-      std::unique_ptr<ISceneLayer> layer(slice->CreateSceneLayer(configurator_.get(), plane));
-      if (layer.get() == NULL)
-      {
-        LOG(TRACE) << "VolumeSceneLayerSource::Update -- (layer.get() == NULL)";
-        ClearLayer();
-      }
-      else
-      {
-        LOG(TRACE) << "VolumeSceneLayerSource::Update -- (layer.get() != NULL)";
-        if (configurator_.get() != NULL)
-        {
-          lastConfiguratorRevision_ = configurator_->GetRevision();
-          configurator_->ApplyStyle(*layer);
-        }
-
-        scene.SetLayer(layerDepth_, layer.release());
-      }
-    }
-  }
-}
--- a/Framework/Volumes/VolumeSceneLayerSource.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Scene2D/Scene2D.h"
-#include "IVolumeSlicer.h"
-
-#include <boost/shared_ptr.hpp>
-
-namespace OrthancStone
-{
-  class IViewport;
-  /**
-     This class applies one "volume slicer" to a "3D volume", in order
-     to create one "2D scene layer" that will be set onto the "2D
-     scene". The style of the layer can be fine-tuned using a "layer
-     style configurator". The class only changes the layer if the
-     cutting plane has been modified since the last call to "Update()".
-   */
-  class VolumeSceneLayerSource : public boost::noncopyable
-  {
-  private:
-    boost::shared_ptr<OrthancStone::IViewport>  viewport_;
-    int                                       layerDepth_;
-    boost::shared_ptr<IVolumeSlicer>          slicer_;
-    std::unique_ptr<ILayerStyleConfigurator>  configurator_;
-    std::unique_ptr<CoordinateSystem3D>       lastPlane_;
-    uint64_t                                  lastRevision_;
-    uint64_t                                  lastConfiguratorRevision_;
-    bool                                      layerInScene_;
-
-    void ClearLayer();
-
-  public:
-    VolumeSceneLayerSource(boost::shared_ptr<OrthancStone::IViewport>  viewport,
-                           int layerDepth,
-                           const boost::shared_ptr<IVolumeSlicer>& slicer);
-
-    ~VolumeSceneLayerSource();
-
-    const IVolumeSlicer& GetSlicer() const
-    {
-      return *slicer_;
-    }
-
-    void RemoveConfigurator();
-
-    void SetConfigurator(ILayerStyleConfigurator* configurator);
-
-    bool HasConfigurator() const
-    {
-      return configurator_.get() != NULL;
-    }
-
-    ILayerStyleConfigurator& GetConfigurator() const;
-
-    /**
-    Make sure the Scene2D is protected from concurrent accesses before 
-    calling this method.
-
-    If the scene that has been supplied to the ctor is part of an IViewport, 
-    you can lock the whole viewport data (including scene) by means of the 
-    IViewport::Lock method.
-    */ 
-    void Update(const CoordinateSystem3D& plane); 
-  };
-}
--- a/Framework/Wrappers/CairoContext.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoContext.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-
-
-namespace OrthancStone
-{
-  CairoContext::CairoContext(CairoSurface& surface) :
-    width_(surface.GetWidth()),
-    height_(surface.GetHeight())
-  {
-    context_ = cairo_create(surface.GetObject());
-    if (!context_)
-    {
-      LOG(ERROR) << "Cannot create Cairo drawing context";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-  CairoContext::~CairoContext()
-  {
-    if (context_ != NULL)
-    {
-      cairo_destroy(context_);
-      context_ = NULL;
-    }
-  }
-
-
-  void CairoContext::SetSourceColor(uint8_t red,
-                                    uint8_t green,
-                                    uint8_t blue)
-  {
-    cairo_set_source_rgb(context_,
-                         static_cast<float>(red) / 255.0f,
-                         static_cast<float>(green) / 255.0f,
-                         static_cast<float>(blue) / 255.0f);
-  }
-
-
-  class CairoContext::AlphaSurface : public boost::noncopyable
-  {
-  private:
-    cairo_surface_t  *surface_;
-
-  public:
-    AlphaSurface(unsigned int width,
-                 unsigned int height)
-    {
-      surface_ = cairo_image_surface_create(CAIRO_FORMAT_A8, width, height);
-      
-      if (!surface_)
-      {
-        // Should never occur
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      if (cairo_surface_status(surface_) != CAIRO_STATUS_SUCCESS)
-      {
-        LOG(ERROR) << "Cannot create a Cairo surface";
-        cairo_surface_destroy(surface_);
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-    
-    ~AlphaSurface()
-    {
-      cairo_surface_destroy(surface_);
-    }
-
-    void GetAccessor(Orthanc::ImageAccessor& target)
-    {
-      target.AssignWritable(Orthanc::PixelFormat_Grayscale8,
-                            cairo_image_surface_get_width(surface_),
-                            cairo_image_surface_get_height(surface_),
-                            cairo_image_surface_get_stride(surface_),
-                            cairo_image_surface_get_data(surface_));
-    }
-
-    void Blit(cairo_t* cr,
-              double x,
-              double y)
-    {
-      cairo_surface_mark_dirty(surface_);
-      cairo_mask_surface(cr, surface_, x, y);
-      cairo_fill(cr);
-    }
-  };
-
-
-  void CairoContext::DrawText(const Orthanc::Font& font,
-                              const std::string& text,
-                              double x,
-                              double y,
-                              BitmapAnchor anchor)
-  {
-    // Render a bitmap containing the text
-    unsigned int width, height;
-    font.ComputeTextExtent(width, height, text);
-    
-    AlphaSurface surface(width, height);
-
-    Orthanc::ImageAccessor accessor;
-    surface.GetAccessor(accessor);
-    font.Draw(accessor, text, 0, 0, 255);
-
-    // Correct the text location given the anchor location
-    double deltaX, deltaY;
-    ComputeAnchorTranslation(deltaX, deltaY, anchor, width, height);
-
-    // Cancel zoom/rotation before blitting the text onto the surface
-    double pixelX = x;
-    double pixelY = y;
-    cairo_user_to_device(context_, &pixelX, &pixelY);
-
-    cairo_save(context_);
-    cairo_identity_matrix(context_);
-
-    // Blit the text bitmap
-    surface.Blit(context_, pixelX + deltaX, pixelY + deltaY);
-    cairo_restore(context_);
-  }
-}
--- a/Framework/Wrappers/CairoContext.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "CairoSurface.h"
-#include "../StoneEnumerations.h"
-
-#include <Images/Font.h>
-
-namespace OrthancStone
-{
-  // This is a RAII wrapper around the Cairo drawing context
-  class CairoContext : public boost::noncopyable
-  {
-  private:
-    class AlphaSurface;
-    
-    cairo_t*      context_;
-    unsigned int  width_;
-    unsigned int  height_;
-
-  public:
-    CairoContext(CairoSurface& surface);
-
-    ~CairoContext();
-
-    cairo_t* GetObject()
-    {
-      return context_;
-    }
-
-    unsigned int GetWidth() const
-    {
-      return width_;
-    }
-
-    unsigned int GetHeight() const
-    {
-      return height_;
-    }
-
-    void SetSourceColor(uint8_t red,
-                        uint8_t green,
-                        uint8_t blue);
-
-    void SetSourceColor(const uint8_t color[3])
-    {
-      SetSourceColor(color[0], color[1], color[2]);
-    }
-
-    void DrawText(const Orthanc::Font& font,
-                  const std::string& text,
-                  double x,
-                  double y,
-                  BitmapAnchor anchor);      
-  };
-}
--- a/Framework/Wrappers/CairoSurface.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CairoSurface.h"
-
-#include <Logging.h>
-#include <OrthancException.h>
-#include <Images/ImageProcessing.h>
-
-namespace OrthancStone
-{
-  void CairoSurface::Release()
-  {
-    if (surface_)
-    {
-      cairo_surface_destroy(surface_);
-      surface_ = NULL;
-    }
-  }
-
-
-  void CairoSurface::Allocate(unsigned int width,
-                              unsigned int height,
-                              bool hasAlpha)
-  {
-    Release();
-
-    hasAlpha_ = hasAlpha;
-
-    surface_ = cairo_image_surface_create
-      (hasAlpha ? CAIRO_FORMAT_ARGB32 : CAIRO_FORMAT_RGB24, width, height);
-    if (!surface_)
-    {
-      // Should never occur
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    if (cairo_surface_status(surface_) != CAIRO_STATUS_SUCCESS)
-    {
-      LOG(ERROR) << "Cannot create a Cairo surface";
-      cairo_surface_destroy(surface_);
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    width_ = width;
-    height_ = height;
-    pitch_ = cairo_image_surface_get_stride(surface_);
-    buffer_ = cairo_image_surface_get_data(surface_);
-  }
-
-
-  CairoSurface::CairoSurface(Orthanc::ImageAccessor& accessor,
-                             bool hasAlpha) :
-    hasAlpha_(hasAlpha)
-  {
-    if (accessor.GetFormat() != Orthanc::PixelFormat_BGRA32)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
-    }      
-
-    width_ = accessor.GetWidth();
-    height_ = accessor.GetHeight();
-    pitch_ = accessor.GetPitch();
-    buffer_ = accessor.GetBuffer();
-
-    surface_ = cairo_image_surface_create_for_data
-      (reinterpret_cast<unsigned char*>(buffer_),
-       hasAlpha_ ? CAIRO_FORMAT_ARGB32 : CAIRO_FORMAT_RGB24,
-       width_, height_, pitch_);
-    if (!surface_)
-    {
-      // Should never occur
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    if (cairo_surface_status(surface_) != CAIRO_STATUS_SUCCESS)
-    {
-      LOG(ERROR) << "Bad pitch for a Cairo surface";
-      cairo_surface_destroy(surface_);
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-  }
-
-
-  void CairoSurface::SetSize(unsigned int width,
-                             unsigned int height,
-                             bool hasAlpha)
-  {
-    if (hasAlpha_ != hasAlpha ||
-        width_ != width ||
-        height_ != height)
-    {
-      Allocate(width, height, hasAlpha);
-    }
-  }
-
-
-  void CairoSurface::Copy(const CairoSurface& other)
-  {
-    SetSize(other.GetWidth(), other.GetHeight(), other.HasAlpha());
-    
-    Orthanc::ImageAccessor source, target;
-
-    other.GetReadOnlyAccessor(source);
-    GetWriteableAccessor(target);
-
-    Orthanc::ImageProcessing::Copy(target, source);
-
-    cairo_surface_mark_dirty(surface_);
-  }
-
-
-  void CairoSurface::Copy(const Orthanc::ImageAccessor& source,
-                          bool hasAlpha)
-  {
-    SetSize(source.GetWidth(), source.GetHeight(), hasAlpha);
-
-    Orthanc::ImageAccessor target;
-    GetWriteableAccessor(target);
-
-    Orthanc::ImageProcessing::Convert(target, source);
-
-    cairo_surface_mark_dirty(surface_);
-  }
-
-
-  void CairoSurface::GetReadOnlyAccessor(Orthanc::ImageAccessor& target) const
-  {
-    target.AssignReadOnly(Orthanc::PixelFormat_BGRA32, width_, height_, pitch_, buffer_);
-  }
-  
-
-  void CairoSurface::GetWriteableAccessor(Orthanc::ImageAccessor& target)
-  {
-    target.AssignWritable(Orthanc::PixelFormat_BGRA32, width_, height_, pitch_, buffer_);
-  }
-}
--- a/Framework/Wrappers/CairoSurface.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <Images/ImageAccessor.h>
-
-#include <boost/noncopyable.hpp>
-#include <cairo.h>
-
-namespace OrthancStone
-{
-  class CairoSurface : public boost::noncopyable
-  {
-  private:
-    cairo_surface_t* surface_;
-    unsigned int     width_;
-    unsigned int     height_;
-    unsigned int     pitch_;
-    void*            buffer_;
-    bool             hasAlpha_;
-
-    void Release();
-
-    void Allocate(unsigned int width,
-                  unsigned int height,
-                  bool hasAlpha);
-
-  public:
-    CairoSurface() :
-      surface_(NULL)
-    {
-      Allocate(0, 0, false);
-    }
-
-    CairoSurface(unsigned int width,
-                 unsigned int height,
-                 bool hasAlpha) :
-      surface_(NULL)
-    {
-      Allocate(width, height, hasAlpha);
-    }
-
-    CairoSurface(Orthanc::ImageAccessor& accessor,
-                 bool hasAlpha);
-
-    ~CairoSurface()
-    {
-      Release();
-    }
-
-    void SetSize(unsigned int width,
-                 unsigned int height,
-                 bool hasAlpha);
-
-    void Copy(const CairoSurface& other);
-
-    void Copy(const Orthanc::ImageAccessor& source,
-              bool hasAlpha);
-
-    unsigned int GetWidth() const
-    {
-      return width_;
-    }
-
-    unsigned int GetHeight() const
-    {
-      return height_;
-    }
-
-    unsigned int GetPitch() const
-    {
-      return pitch_;
-    }
-
-    const void* GetBuffer() const
-    {
-      return buffer_;
-    }
-
-    void* GetBuffer()
-    {
-      return buffer_;
-    }
-
-    cairo_surface_t* GetObject()
-    {
-      return surface_;
-    }
-
-    bool HasAlpha() const
-    {
-      return hasAlpha_;
-    }
-
-    void GetReadOnlyAccessor(Orthanc::ImageAccessor& target) const;
-
-    void GetWriteableAccessor(Orthanc::ImageAccessor& target);
-  };
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Docs/stone-object-model-reference.md	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,429 @@
+## Scene2D and viewport-related object reference
+
+### `Scene2D` 
+
+Represents a collection of layers that display 2D data.
+
+These layers must implement `ISceneLayer`
+
+The layers must be created externally and set to a specific Z-order index 
+with the `SetLayer` method.
+
+The `Scene2D` object merely acts as a layer container. It has no rendering 
+or layer creation facility on its own.
+
+The `Scene2D` contains an `AffineTransform2D` structure that defines how 
+the various layer item coordinates are transformed before being displayed 
+on the viewport (aka canvas)
+
+It is up to each layer type-specific renderer to choose how this transformation
+is used. See the various kinds of layer below for more details.
+
+Examining the `Scene2D` contents can be done either by implementing the 
+`Scene2D::IVisitor` interface and calling `Apply(IVisitor& visitor)` or by 
+iterating between `GetMinDepth()` and `GetMaxDepth()` and calling the 
+`ISceneLayer& GetLayer(int depth)` getter.
+
+### `ISceneLayer` 
+
+Interface that must be implemented by `Scene2D` layers. This is a closed list
+that, as of 2020-03, contains:
+
+```
+  Type_InfoPanel,
+  Type_ColorTexture,
+  Type_Polyline,
+  Type_Text,
+  Type_FloatTexture,
+  Type_LookupTableTexture
+```
+
+Please note that this interface mandates the implementation of a `GetRevision`
+method returning an `uint64_t`. 
+
+The idea is that when a model gets converted to a set of `ISceneLayer` 
+instances, changes in the model that result in changes to the layers must 
+increase the revision number of these layers.
+
+That allows the rendering process to safely assume that a given layers whose
+revision does not change hasn't been modified (this helps with caching).
+
+Every mutable method in `ISceneLayer` instances that possibly change the visual
+representation of an `ISceneLayer` must increase this revision number.
+
+### Implementation: `FloatTextureSceneLayer`
+
+Layer that renders an `Orthanc::ImageAccessor` object that must be convertible
+to `Float32` image.
+
+The constructor only uses the image accessor to perform a copy. It can safely 
+be deleted afterwards.
+
+The input values are mapped to the output values by taking into account various
+properties that can be modified with:
+
+- `SetWindowing`: uses windowing presets like "bone" or "lung"
+- `SetCustomWindowing`: with manual window center and width
+- `SetInverted`: toggles black <-> white inversion after windowing
+- `SetApplyLog`: uses a non-linear response curve described in 
+  https://theailearner.com/2019/01/01/log-transformation/ that expands contrast
+  in dark areas while compressing contrast in bright ones. This is **not** 
+  implemented in the OpenGL renderer!
+
+The corresponding renderers are `OpenGLFloatTextureRenderer` and 
+`CairoFloatTextureRenderer`. The scene transformation is applied during
+rendering.
+
+### Implementation: `ColorTextureSceneLayer`
+
+Layer that renders an `Orthanc::ImageAccessor` object an RGBA image (alpha must
+be premultiplied). 
+
+The constructor only uses the image accessor to perform a copy. It can safely 
+be deleted afterwards.
+
+The corresponding renderers are `OpenGLColorTextureRenderer` and 
+`CairoColorTextureRenderer`. The scene transformation is applied during
+rendering.
+
+### Implementation: `LookupTableTextureSceneLayer`
+
+Layer that renders an `Orthanc::ImageAccessor` object that must be convertible
+to `Float32` image.
+
+The constructor only uses the image accessor to perform a copy. It can safely 
+be deleted afterwards.
+
+The final on-screen color of each pixel is determined by passing the input 
+`Float32` value through a 256-entry look-up table (LUT) that can be passed as 
+an array of either 256 x 3 bytes (for opaque RGB colors) or 256 x 4 bytes (for
+RGBA pixels). The LUT is not specified at construction time, but with 
+calls to `SetLookupTable` or `SetLookupTableGrayscale` (that fills the LUT 
+with a gradient from black to white, fully opaque)
+
+The range of input values that is mapped to the entirety of the LUT is, by
+default, the full image range, but can be customized with `SetRange`.
+
+The corresponding renderers are `OpenGLLookupTableTextureRenderer` and
+`CairoLookupTableTextureRenderer`. The scene transformation is applied during
+rendering.
+
+### Implementation: `PolylineSceneLayer`
+
+Layer that renders vector-based polygonal lines. 
+
+Polylines can be added with the `AddChain` method, that accepts a `Chain`, that
+is a typedef to `std::vector<ScenePoint2D>`, a flag to specify whether the 
+chain must be automatically close (last point of the vector connected to the
+first one) and the chain color (a `Color` structure).
+
+Please note that the line thickness is, contrary to the color, specified 
+per-chain but rather per-layer. 
+
+If you need multiple line thicknesses, multiple `PolylineSceneLayer` must be
+created.
+
+The corresponding renderers are `OpenGLAdvancedPolylineRenderer` and
+`CairoPolylineRenderer`. The scene transformation is applied during
+rendering.
+
+### Implementation: `TextSceneLayer`
+
+This layers renders a paragraph of text. 
+
+The inputs to the layer can be changed after creation and are:
+- The text iself, supplied as an UTF-8 encoded string in `SetText`
+- The font used for rendering, set by `SetFontIndex`.
+- The text anchoring, through `SetAnchor`: the text can be anchored to 
+  various positions, such as top lef, center, bottom center,... These 
+  various anchors are part of the `BitmapAnchor` enumeration.
+- The text position, relative to its anchor, through `SetPosition`.
+
+The font is supplied as an index. This is an index in the set of fonts 
+that has been registered in the viewport compositor. The following code 
+shows how to set such a font:
+
+```
+std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_.Lock());
+lock->GetCompositor().SetFont(0, 
+                              Orthanc::EmbeddedResources::UBUNTU_FONT, 
+                              32, Orthanc::Encoding_Latin1);
+// where 32 is the font size in pixels
+```
+
+This call uses the embedded `UBUNTU_FONT` resource that has been defined in
+the `CMakeLists.txt` file with:
+
+```
+EmbedResources(
+  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
+)
+```
+
+Please note that you must supply a font: there is no default font provided by
+the OpenGL or Cairo compositors.
+
+The corresponding renderers are `OpenGLTextRenderer` and
+`CairoTextRenderer`. The scene transformation is not applied during rendering,
+because the text anchoring, position and scaling are computed relative to the
+viewport/canvas.
+
+### Implementation: `InfoPanelSceneLayer`
+
+This layer is designed to display an image, supplied through an 
+`Orthanc::ImageAccessor` reference (only used at construction time).
+
+The image is not transformed according to the normal layer transformation but 
+is rather positioned relative to the canvas, with the same mechanism as the
+`TextSceneLayer` described above.
+
+The image position is specified with the sole means of the `SetAnchor` method.
+
+The corresponding renderers are `OpenGLInfoPanelRenderer` and 
+`CairoInfoPanelRenderer`.
+
+### `IViewport`
+
+https://bitbucket.org/sjodogne/orthanc-stone/src/broker/Framework/Viewport/IViewport.h
+
+(**not** the one in `Deprecated`)
+- Implemented by classes that:
+  - manage the on-screen display of a `Scene2D` trough a compositor.
+  - Own the `ICompositor` object that performs the rendering. 
+  - Own the `Scene2D` (TODO: currently through `ViewportController` --> `Scene2D`)
+  - Provide a `Lock` method that returns a RAII, that must be kept alive when 
+    modifying the underlying objects (controller, compositor, scene), but not 
+    longer.
+
+#### Implementation: `SdlOpenGLViewport`
+- Implementation of a viewport rendered on a SDL window, that uses OpenGL for 
+  rendering.
+- Instantiating this object creates an SDL window. Automatic scaling for hiDPI
+  displays can be toggled on or off. 
+
+#### Implementation: `WebGLViewport`
+- Implementation of a viewport rendered on a DOM canvas, that uses OpenGL for 
+  rendering.
+- Contrary to the SDL OpenGL viewport, the canvas must already be existing 
+  when the ctor is called.
+
+### `ICompositor`
+The interface providing a rendering service for `Scene2D` objects. 
+
+**Subclasses:** `CairoCompositor`, `OpenGLCompositor`
+ 
+You do not need to create compositor instances. They are created for you when
+instantiating a viewport.
+
+### `ViewportController`
+This concrete class is instantiated by its `IViewport` owner. 
+
+**TODO:** its functionality is not well defined and should be moved into the 
+viewport base class. Support for measuring tools should be moved to a special
+interactor.
+
+- contains:
+  - array of `MeasureTool`
+  - ref to `IViewport`
+  - `activeTracker_`
+  - owns a `Scene2D`
+  - weak ref to `UndoStack`
+  - cached `canvasToSceneFactor_`
+
+- contains logic to:
+  - pass commands to undostack (trivial)
+  - logic to locate `MeasureTool` in the HitTest
+  - OTOH, the meat of the measuring tool logic (highlighting etc..) is 
+    done in app-specific code (`VolumeSlicerWidget`)
+  - accept new Scene transform and notify listeners
+  - **the code that uses the interactor** (`HandleMousePress`) is only 
+    called by the new `WebAssemblyViewport` !!! **TODO** clean this mess
+
+### `IViewportInteractor`
+- must provide logic to respond to `CreateTracker`
+
+### `DefaultViewportInteractor`
+- provides Pan+Rotate+Zoom trackers
+
+### `WebGLViewportsRegistry`
+
+This class is a singleton (accessible through `GetWebGLViewportsRegistry()` 
+that deals with context losses in the WebGL contexts.
+
+You use it by creating a WebGLViewport in the following fashion:
+
+```
+boost::shared_ptr<OrthancStone::WebGLViewport> viewport(
+  OrthancStone::GetWebGLViewportsRegistry().Add(canvasId));
+```
+
+## Source data related
+
+### `IVolumeSlicer`
+
+A very simple interface with a single method:
+`IVolumeSlicer::IExtractedSlice* ExtractSlice(const CoordinateSystem3D& cuttingPlane)`
+
+### `IVolumeSlicer::IExtractedSlice`
+
+On a slice has been extracted from a volume by an `IVolumeSlicer`, it can
+report its *revision number*. 
+
+If another call to `ExtractSlice` with the same cutting plane is made, but 
+the returned slice revision is different, it means that the volume has 
+changed and the scene layer must be refreshed.
+
+Please see `VolumeSceneLayerSource::Update` to check how this logic is 
+implemented.
+
+
+### `OrthancSeriesVolumeProgressiveLoader`
+
+This class implements `IVolumeSlicer` (and `IObservable`) and can be used to 
+load a volume stored in a Dicom series on an Orthanc server.
+
+Over the course of the series loading, various notifications are sent:
+
+The first one is `OrthancStone::DicomVolumeImage::GeometryReadyMessage` that
+is sent when the volume extent and geometric properties are known.
+
+Then, as slices get loaded and the volume is filled,  
+`OrthancStone::DicomVolumeImage::ContentUpdatedMessage` are sent.
+
+Once all the highest-quality slices have been loaded, the 
+`OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality` 
+notification is sent.
+
+Please note that calling `ExtractSlice` *before* the geometry is loaded will
+yield an instance of `InvalidSlice` that cannot be used to create a layer.
+
+On the other hand, 
+
+### `VolumeSceneLayerSource`
+
+This class makes the bridge between a volume (supplied by an `IVolumeSlicer`
+interface) and a `Scene2D`. 
+
+Please note that the bulk of the work is done the objects implementing 
+`IVolumeSlicer` and this object merely connects things together.
+
+For instance, deciding whether an image (texture) or vector (polyline) layer
+is done by the `IVolumeSlicer` implementation.
+
+- contains:
+  - reference to Scene2D
+  - `layerIndex_` (fixed at ctor) that is the index, in the Scene2D layer 
+    stack, of the layer that will be created/updated
+  - `IVolumeSlicer`
+
+- contains logic to:
+  - extract a slice from the slicer and set/refresh the Scene2D layer at 
+    the supplied `layerIndex_`
+  - refresh this based on the slice revision or configuration revision
+  - accept a configuration that will be applied to the layer
+  - the `Update()` method will 
+
+## Updates and the configurators
+
+`ISceneLayer` does not expose mutable methods. 
+
+The way to change a layer once it has been created is through configurator 
+objets.
+
+If you plan to set (even only once) or modify some layer properties after 
+layer creation, you need to create a matching configurator objet.
+
+For instance, in the `VolumeSceneLayerSource`, the `SetConfigurator` method
+will store a `ILayerStyleConfigurator* configurator_`.
+
+In the `OrthancView` ctor, you can see how it is used:
+
+```
+std::unique_ptr<GrayscaleStyleConfigurator> style(
+  new GrayscaleStyleConfigurator);
+
+style->SetLinearInterpolation(true);
+
+...<some more code>...
+
+std::unique_ptr<LookupTableStyleConfigurator> config(
+  new LookupTableStyleConfigurator);
+
+config->SetLookupTable(Orthanc::EmbeddedResources::COLORMAP_HOT);
+
+```
+
+The configurator type are created according to the type of layer.¸
+
+Later, in `VolumeSceneLayerSource::Update(const CoordinateSystem3D& plane)`, 
+if the cutting plane has **not** changed and if the layer revision has **not**
+changed, we test `configurator_->GetRevision() != lastConfiguratorRevision_` 
+and, if different, we call `configurator_->ApplyStyle(scene_.GetLayer(layerDepth_));`
+
+This allows to change layer properties that do not depend on the layer model
+contents.
+
+On the other hand, if the layer revision has changed, when compared to the 
+last time it has been rendered (stored in `lastRevision_`), then we need to 
+ask the slice to create a brand new layer.
+
+Another way to see it is that layer rendering depend on model data and view 
+data. The model data is not mutable in the layer and, if the model changes, the 
+layer must be recreated.
+
+If only the view properties change (the configurator), we call ApplyStyle 
+(that **will** mutate some of the layer internals)
+
+Please note that the renderer does **not** know about the configurator : the 
+renderer uses properies in the layer and does not care whether those have 
+been set once at construction time or at every frame (configuration time).
+
+
+## Cookbook
+
+### Simple application
+
+#### Building
+
+In order to create a Stone application, you need to:
+
+- CMake-based application:
+    ```
+    include(${STONE_SOURCES_DIR}/Resources/CMake/OrthancStoneConfiguration.cmake)
+    ```
+  with this library target that you have to define:
+    ```
+    add_library(OrthancStone STATIC ${ORTHANC_STONE_SOURCES})
+    ```
+  then link with this library:
+    ```
+    target_link_libraries(MyStoneApplication OrthancStone)
+    ```
+
+Building is supported with emscripten, Visual C++ (>= 9.0), gcc...
+
+emscripten recommended version >= 1.38.41
+
+These are very rough guidelines. See the `Samples` folder for actual examples.
+
+#### Structure
+
+The code requires a loader (object that )
+
+Initialize:
+
+```
+Orthanc::Logging::Initialize();
+Orthanc::Logging::EnableInfoLevel(true);
+```
+Call, in WASM:
+```
+DISPATCH_JAVASCRIPT_EVENT("StoneInitialized");
+```
+
+# Notes
+
+- It is NOT possible to abandon the existing loaders : they contain too much loader-specific getters
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/CairoConfiguration.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,257 @@
+# Stone of Orthanc
+# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+# Department, University Hospital of Liege, Belgium
+# Copyright (C) 2017-2020 Osimis S.A., Belgium
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+# ./configure --disable-pdf --disable-svg --disable-xlib --disable-xcb --disable-script --disable-ps --disable-ft --disable-fc --disable-png --disable-trace --disable-interpreter
+
+
+if (STATIC_BUILD OR NOT USE_SYSTEM_CAIRO)
+  SET(CAIRO_SOURCES_DIR ${CMAKE_BINARY_DIR}/cairo-1.14.12)
+  SET(CAIRO_URL "http://orthanc.osimis.io/ThirdPartyDownloads/cairo-1.14.12.tar.xz")
+  SET(CAIRO_MD5 "9f0db9dbfca0966be8acd682e636d165")
+
+  DownloadPackage(${CAIRO_MD5} ${CAIRO_URL} "${CAIRO_SOURCES_DIR}")
+
+  file(COPY 
+    ${CMAKE_CURRENT_LIST_DIR}/cairo-features.h
+    DESTINATION ${CAIRO_SOURCES_DIR}/src
+    )
+
+  set(CAIRO_SOURCES
+    ${CAIRO_SOURCES_DIR}/src/cairo-analysis-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-arc.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-array.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-atomic.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-base64-stream.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-base85-stream.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-bentley-ottmann.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-bentley-ottmann-rectangular.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-bentley-ottmann-rectilinear.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-botor-scan-converter.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-boxes.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-boxes-intersect.c
+    ${CAIRO_SOURCES_DIR}/src/cairo.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-cache.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-cff-subset.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-clip-boxes.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-clip.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-clip-polygon.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-clip-region.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-clip-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-clip-tor-scan-converter.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-cogl-context.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-cogl-gradient.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-cogl-surface.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-cogl-utils.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-color.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-composite-rectangles.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-compositor.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-contour.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-damage.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-debug.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-default-context.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-deflate-stream.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-device.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-directfb-surface.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-egl-context.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-error.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-fallback-compositor.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-fixed.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-font-face.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-font-face-twin.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-font-face-twin-data.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-font-options.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-freed-pool.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-freelist.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-ft-font.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-composite.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-device.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-dispatch.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-glyphs.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-gradient.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-info.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-msaa-compositor.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-operand.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-shaders.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-source.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-spans-compositor.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-surface.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-traps-compositor.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-glx-context.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-gstate.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-hash.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-hull.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-image-compositor.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-image-info.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-image-source.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-image-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-line.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-lzw.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-mask-compositor.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-matrix.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-mempool.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-mesh-pattern-rasterizer.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-misc.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-mono-scan-converter.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-mutex.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-no-compositor.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-observer.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-os2-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-output-stream.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-paginated-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-path-bounds.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-path.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-path-fill.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-path-fixed.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-path-in-fill.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-path-stroke-boxes.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-path-stroke.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-path-stroke-polygon.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-path-stroke-traps.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-path-stroke-tristrip.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-pattern.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-pdf-operators.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-pdf-shading.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-pdf-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-pen.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-png.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-polygon.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-polygon-intersect.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-polygon-reduce.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-ps-surface.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-quartz-font.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-quartz-image-surface.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-quartz-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-raster-source-pattern.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-recording-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-rectangle.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-rectangular-scan-converter.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-region.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-rtree.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-scaled-font.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-scaled-font-subsets.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-script-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-shape-mask-compositor.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-slope.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-spans.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-spans-compositor.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-spline.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-stroke-dash.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-stroke-style.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-surface-clipper.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-surface-fallback.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-surface-observer.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-surface-offset.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-surface-snapshot.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-surface-subsurface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-surface-wrapper.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-svg-surface.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-tee-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-time.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-tor22-scan-converter.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-tor-scan-converter.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-toy-font-face.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-traps.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-traps-compositor.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-tristrip.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-truetype-subset.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-type1-fallback.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-type1-glyph-names.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-type1-subset.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-type3-glyph-surface.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-unicode.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-user-font.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-version.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-vg-surface.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-wgl-context.c
+    ${CAIRO_SOURCES_DIR}/src/cairo-wideint.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-connection.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-connection-core.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-connection-render.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-connection-shm.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-resources.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-screen.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-shm.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-surface.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-surface-core.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-surface-render.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-core-compositor.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-display.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-fallback-compositor.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-render-compositor.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-screen.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-source.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-surface.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-surface-shm.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-visual.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-xcb-surface.c
+    # ${CAIRO_SOURCES_DIR}/src/cairo-xml-surface.c
+    )
+
+  include_directories(${CAIRO_SOURCES_DIR}/src)
+
+  set(CAIRO_DEFINITIONS "HAS_PIXMAN_GLYPHS=1")
+
+  if (${CMAKE_SYSTEM_NAME} STREQUAL "PNaCl")
+    # Disable vectorized instructions when targeting archicture-independent PNaCl
+    set(CAIRO_DEFINITIONS "${CAIRO_DEFINITIONS};HAVE_STDINT_H=1;CAIRO_HAS_PTHREAD=1;HAVE_UINT64_T=1")
+
+  elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten" OR
+          ${CMAKE_SYSTEM_NAME} STREQUAL "Android")
+    # Disable vectorized instructions and threading if targeting asm.js
+    set(CAIRO_DEFINITIONS "${CAIRO_DEFINITIONS};HAVE_STDINT_H=1;CAIRO_HAS_PTHREAD=0;CAIRO_NO_MUTEX=1;HAVE_UINT64_T=1")
+
+  elseif (CMAKE_COMPILER_IS_GNUCXX OR
+      CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+
+    set(CAIRO_DEFINITIONS "${CAIRO_DEFINITIONS};HAVE_STDINT_H=1;CAIRO_HAS_PTHREAD=1;HAVE_UINT64_T=1;CAIRO_HAS_REAL_PTHREAD=1;HAVE_GCC_VECTOR_EXTENSIONS;HAVE_FLOAT128")
+
+    if (CMAKE_COMPILER_IS_GNUCXX)
+      set_property(
+        SOURCE ${CAIRO_SOURCES}
+        PROPERTY COMPILE_FLAGS "-Wno-attributes"
+        )
+    endif()
+
+  elseif (MSVC)
+    # The cairo source code comes with built-in support for Visual Studio
+
+  else()
+    message(FATAL_ERROR "Support your platform here")
+
+  endif()
+
+
+  if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+    # Explicitly request static building on Windows
+    add_definitions(-DCAIRO_WIN32_STATIC_BUILD=1)
+  endif()
+
+
+  set_property(
+    SOURCE ${CAIRO_SOURCES}
+    PROPERTY COMPILE_DEFINITIONS "${CAIRO_DEFINITIONS}"
+    )
+
+else()
+
+  pkg_search_module(CAIRO REQUIRED cairo)
+  include_directories(${CAIRO_INCLUDE_DIRS})
+  link_libraries(${CAIRO_LIBRARIES})
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/FreetypeConfiguration.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,87 @@
+if (STATIC_BUILD OR NOT USE_SYSTEM_FREETYPE)
+  set(FREETYPE_SOURCES_DIR ${CMAKE_BINARY_DIR}/freetype-2.9.1)
+  set(FREETYPE_URL "http://orthanc.osimis.io/ThirdPartyDownloads/freetype-2.9.1.tar.gz")
+  set(FREETYPE_MD5 "3adb0e35d3c100c456357345ccfa8056")
+
+  DownloadPackage(${FREETYPE_MD5} ${FREETYPE_URL} "${FREETYPE_SOURCES_DIR}")
+
+  include_directories(BEFORE
+    ${FREETYPE_SOURCES_DIR}/include/
+    )
+
+  add_definitions(
+    -DFT2_BUILD_LIBRARY
+    -DFT_CONFIG_OPTION_NO_ASSEMBLER
+    )
+    
+  set(FREETYPE_SOURCES
+    ${FREETYPE_SOURCES_DIR}/src/autofit/autofit.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftbase.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftbbox.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftbdf.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftbitmap.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftcid.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftfstype.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftgasp.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftglyph.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftgxval.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftinit.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftmm.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftotval.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftpatent.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftpfr.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftstroke.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftsynth.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftsystem.c
+    ${FREETYPE_SOURCES_DIR}/src/base/fttype1.c
+    ${FREETYPE_SOURCES_DIR}/src/base/ftwinfnt.c
+    ${FREETYPE_SOURCES_DIR}/src/bdf/bdf.c
+    ${FREETYPE_SOURCES_DIR}/src/bzip2/ftbzip2.c
+    ${FREETYPE_SOURCES_DIR}/src/cache/ftcache.c
+    ${FREETYPE_SOURCES_DIR}/src/cff/cff.c
+    ${FREETYPE_SOURCES_DIR}/src/cid/type1cid.c
+    ${FREETYPE_SOURCES_DIR}/src/gzip/ftgzip.c
+    ${FREETYPE_SOURCES_DIR}/src/lzw/ftlzw.c
+    ${FREETYPE_SOURCES_DIR}/src/pcf/pcf.c
+    ${FREETYPE_SOURCES_DIR}/src/pfr/pfr.c
+    ${FREETYPE_SOURCES_DIR}/src/psaux/psaux.c
+    ${FREETYPE_SOURCES_DIR}/src/pshinter/pshinter.c
+    ${FREETYPE_SOURCES_DIR}/src/psnames/psnames.c
+    ${FREETYPE_SOURCES_DIR}/src/raster/raster.c
+    ${FREETYPE_SOURCES_DIR}/src/sfnt/sfnt.c
+    ${FREETYPE_SOURCES_DIR}/src/smooth/smooth.c
+    ${FREETYPE_SOURCES_DIR}/src/truetype/truetype.c
+    ${FREETYPE_SOURCES_DIR}/src/type1/type1.c
+    ${FREETYPE_SOURCES_DIR}/src/type42/type42.c
+    ${FREETYPE_SOURCES_DIR}/src/winfonts/winfnt.c
+    )
+
+  if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
+    list(APPEND FREETYPE_SOURCES
+      ${FREETYPE_SOURCES_DIR}/builds/windows/ftdebug.c
+      )
+  endif()
+
+  foreach(header
+      ${FREETYPE_SOURCES_DIR}/include/freetype/config/ftconfig.h
+      ${FREETYPE_SOURCES_DIR}/include/freetype/config/ftoption.h
+      )
+
+    set_source_files_properties(
+      ${FREETYPE_SOURCES}
+      PROPERTIES OBJECT_DEPENDS ${header}
+      )
+  endforeach()
+
+  source_group(ThirdParty\\Freetype REGULAR_EXPRESSION ${FREETYPE_SOURCES_DIR}/.*)
+
+else()
+  include(FindFreetype)
+
+  if (NOT FREETYPE_FOUND)
+    message(FATAL_ERROR "Please install the libfreetype6-dev package")
+  endif()
+
+  include_directories(${FREETYPE_INCLUDE_DIRS})
+  link_libraries(${FREETYPE_LIBRARIES})
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/GlewConfiguration.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,44 @@
+# Stone of Orthanc
+# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+# Department, University Hospital of Liege, Belgium
+# Copyright (C) 2017-2020 Osimis S.A., Belgium
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+if (STATIC_BUILD OR NOT USE_SYSTEM_GLEW)
+  SET(GLEW_SOURCES_DIR ${CMAKE_BINARY_DIR}/glew-2.1.0)
+  SET(GLEW_URL "http://orthanc.osimis.io/ThirdPartyDownloads/glew-2.1.0.tgz")
+  SET(GLEW_MD5 "b2ab12331033ddfaa50dc39345343980")
+  DownloadPackage(${GLEW_MD5} ${GLEW_URL} "${GLEW_SOURCES_DIR}")
+
+  set(GLEW_SOURCES
+    ${GLEW_SOURCES_DIR}/src/glew.c
+    )
+
+  include_directories(${GLEW_SOURCES_DIR}/include)
+
+  add_definitions(
+    -DGLEW_STATIC=1
+    )
+
+else()
+  include(FindGLEW)
+  if (NOT GLEW_FOUND)
+    message(FATAL_ERROR "Please install the libglew-dev package")
+  endif()
+  
+  include_directories(${GLEW_INCLUDE_DIRS})
+  link_libraries(${GLEW_LIBRARIES})
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/LinuxStandardBaseUic.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+
+import subprocess
+import sys
+
+if len(sys.argv) <= 1:
+    sys.stderr.write('Please provide arguments for uic\n')
+    sys.exit(-1)
+
+path = ''
+pos = 1
+while pos < len(sys.argv):
+    if sys.argv[pos].startswith('-'):
+        pos += 2
+    else:
+        path = sys.argv[pos]
+        break
+
+if len(path) == 0:
+    sys.stderr.write('Unable to find the input file in the arguments to uic\n')
+    sys.exit(-1)
+
+with open(path, 'r') as f:
+    lines = f.read().split('\n')
+    if (len(lines) > 1 and
+        lines[0].startswith('<?')):
+        content = '\n'.join(lines[1:])
+    else:
+        content = '\n'.join(lines)
+        
+# Remove the source file from the arguments
+args = sys.argv[1:pos] + sys.argv[pos+1:]
+
+p = subprocess.Popen([ '/opt/lsb/bin/uic' ] + args,
+                     stdin = subprocess.PIPE)
+p.communicate(input = content)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/OrthancStoneConfiguration.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,639 @@
+# Stone of Orthanc
+# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+# Department, University Hospital of Liege, Belgium
+# Copyright (C) 2017-2020 Osimis S.A., Belgium
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+
+#####################################################################
+## Configure the Orthanc Framework
+#####################################################################
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
+  include(${CMAKE_CURRENT_LIST_DIR}/../Orthanc/CMake/DownloadOrthancFramework.cmake)
+  link_libraries(${ORTHANC_FRAMEWORK_LIBRARIES})
+
+  # Switch to the C++11 standard if the version of JsonCpp is 1.y.z
+  if (EXISTS ${JSONCPP_INCLUDE_DIR}/json/version.h)
+    file(STRINGS
+      "${JSONCPP_INCLUDE_DIR}/json/version.h" 
+      JSONCPP_VERSION_MAJOR1 REGEX
+      ".*define JSONCPP_VERSION_MAJOR.*")
+
+    if (NOT JSONCPP_VERSION_MAJOR1)
+      message(FATAL_ERROR "Unable to extract the major version of JsonCpp")
+    endif()
+    
+    string(REGEX REPLACE
+      ".*JSONCPP_VERSION_MAJOR.*([0-9]+)$" "\\1" 
+      JSONCPP_VERSION_MAJOR ${JSONCPP_VERSION_MAJOR1})
+    message("JsonCpp major version: ${JSONCPP_VERSION_MAJOR}")
+
+    if (JSONCPP_VERSION_MAJOR GREATER 0)
+      message("Switching to C++11 standard")
+      if (CMAKE_COMPILER_IS_GNUCXX)
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
+      elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+      endif()
+    endif()
+  endif()
+  
+else()
+  if (ENABLE_DCMTK)
+    set(ENABLE_LOCALE ON)
+  else()
+    if (NOT DEFINED ENABLE_LOCALE)
+      set(ENABLE_LOCALE OFF)  # Disable support for locales (notably in Boost)
+    endif()
+  endif()
+  
+  include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkConfiguration.cmake)
+  include_directories(
+    ${ORTHANC_FRAMEWORK_ROOT}/Sources/
+    )
+endif()
+
+
+#####################################################################
+## Sanity check of the configuration
+#####################################################################
+
+if (ORTHANC_SANDBOXED)
+  if (ENABLE_CURL)
+    message(FATAL_ERROR "Cannot enable curl in sandboxed environments")
+  endif()
+
+  if (ENABLE_SDL)
+    message(FATAL_ERROR "Cannot enable SDL in sandboxed environments")
+  endif()
+
+  if (ENABLE_SSL)
+    message(FATAL_ERROR "Cannot enable SSL in sandboxed environments")
+  endif()
+endif()
+
+if (ENABLE_OPENGL)
+  if (NOT ENABLE_SDL AND NOT ENABLE_WASM)
+    message(FATAL_ERROR "Cannot enable OpenGL if WebAssembly and SDL are both disabled")
+  endif()
+endif()
+
+if (ENABLE_WASM)
+  if (NOT ORTHANC_SANDBOXED)
+    message(FATAL_ERROR "WebAssembly target must me configured as sandboxed")
+  endif()
+
+  if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+    message(FATAL_ERROR "WebAssembly target requires the emscripten compiler")    
+  endif()
+
+  set(ENABLE_THREADS OFF)
+  add_definitions(-DORTHANC_ENABLE_WASM=1)
+else()
+  if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten" OR
+      CMAKE_SYSTEM_NAME STREQUAL "PNaCl" OR
+      CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR
+      CMAKE_SYSTEM_NAME STREQUAL "NaCl64")
+    message(FATAL_ERROR "Trying to use a Web compiler for a native build")
+  endif()
+
+  set(ENABLE_THREADS ON)
+  add_definitions(-DORTHANC_ENABLE_WASM=0)
+endif()
+  
+
+#####################################################################
+## Configure mandatory third-party components
+#####################################################################
+
+include(FindPkgConfig)
+include(${CMAKE_CURRENT_LIST_DIR}/CairoConfiguration.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FreetypeConfiguration.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/PixmanConfiguration.cmake)
+
+
+
+#####################################################################
+## Configure optional third-party components
+#####################################################################
+
+if (NOT ORTHANC_SANDBOXED)
+  list(APPEND ORTHANC_STONE_SOURCES
+    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/OrthancHttpConnection.cpp
+    )
+endif()
+
+
+if(ENABLE_SDL)
+  message("SDL is enabled")
+  include(${CMAKE_CURRENT_LIST_DIR}/SdlConfiguration.cmake)
+  add_definitions(
+    -DORTHANC_ENABLE_SDL=1
+    )
+else()
+  message("SDL is disabled")
+  unset(USE_SYSTEM_SDL CACHE)
+  add_definitions(
+    -DORTHANC_ENABLE_SDL=0
+    )
+endif()
+
+
+if (ENABLE_THREADS)
+  add_definitions(-DORTHANC_ENABLE_THREADS=1)
+else()
+  add_definitions(-DORTHANC_ENABLE_THREADS=0)
+endif()
+
+
+if (ENABLE_OPENGL AND CMAKE_SYSTEM_NAME STREQUAL "Windows")
+  include(${CMAKE_CURRENT_LIST_DIR}/GlewConfiguration.cmake)
+  add_definitions(
+    -DORTHANC_ENABLE_GLEW=1
+    )
+else()
+  add_definitions(
+    -DORTHANC_ENABLE_GLEW=0
+    )
+endif()
+
+
+if (ENABLE_OPENGL)
+  if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+    # If including "FindOpenGL.cmake" using Emscripten (targeting
+    # WebAssembly), the "OPENGL_LIBRARIES" value incorrectly includes
+    # the "nul" library, which leads to warning message in Emscripten:
+    # 'shared:WARNING: emcc: cannot find library "nul"'.
+    include(FindOpenGL)
+    if (NOT OPENGL_FOUND)
+      message(FATAL_ERROR "Cannot find OpenGL on your system")
+    endif()
+
+    link_libraries(${OPENGL_LIBRARIES})
+  endif()
+
+  add_definitions(
+    -DORTHANC_ENABLE_OPENGL=1
+    )
+else()
+  add_definitions(-DORTHANC_ENABLE_OPENGL=0)  
+endif()
+
+
+
+#####################################################################
+## Configuration of the C/C++ macros
+#####################################################################
+
+if (MSVC)
+  # Remove some warnings on Visual Studio 2015
+  add_definitions(-D_SCL_SECURE_NO_WARNINGS=1) 
+endif()
+
+add_definitions(
+  -DHAS_ORTHANC_EXCEPTION=1
+  )
+
+if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+  add_definitions(-DCHECK_OBSERVERS_MESSAGES)
+endif()
+
+
+
+#####################################################################
+## System-specific patches
+#####################################################################
+
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND
+    NOT MSVC AND
+    ENABLE_SDL)
+  # This is necessary when compiling EXE for Windows using MinGW
+  link_libraries(mingw32)
+endif()
+
+if (ORTHANC_SANDBOXED)
+  # Remove functions not suitable for a sandboxed environment
+  list(REMOVE_ITEM ORTHANC_CORE_SOURCES
+    ${ZLIB_SOURCES_DIR}/gzlib.c
+    ${ZLIB_SOURCES_DIR}/gzwrite.c
+    ${ZLIB_SOURCES_DIR}/gzread.c
+    )
+endif()
+
+
+
+#####################################################################
+## All the source files required to build Stone of Orthanc
+#####################################################################
+
+if (NOT ORTHANC_SANDBOXED)
+  set(PLATFORM_SOURCES
+    ${ORTHANC_STONE_ROOT}/Sources/Loaders/GenericLoadersContext.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Loaders/GenericLoadersContext.h
+    )
+
+  if (ENABLE_SDL)
+    list(APPEND ORTHANC_STONE_SOURCES
+      ${ORTHANC_STONE_ROOT}/Sources/Viewport/SdlWindow.cpp
+      ${ORTHANC_STONE_ROOT}/Sources/Viewport/SdlWindow.h
+      )
+  endif()
+
+  if (ENABLE_SDL)
+    if (ENABLE_OPENGL)
+      list(APPEND ORTHANC_STONE_SOURCES
+        ${ORTHANC_STONE_ROOT}/Sources/OpenGL/SdlOpenGLContext.cpp
+        ${ORTHANC_STONE_ROOT}/Sources/OpenGL/SdlOpenGLContext.h
+        ${ORTHANC_STONE_ROOT}/Sources/Viewport/SdlViewport.cpp
+        ${ORTHANC_STONE_ROOT}/Sources/Viewport/SdlViewport.h
+        )
+    endif()
+  endif()
+endif()
+
+
+if (ENABLE_DCMTK)
+  list(APPEND ORTHANC_STONE_SOURCES
+    ${ORTHANC_STONE_ROOT}/Sources/Oracle/ParseDicomSuccessMessage.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ParsedDicomCache.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ParsedDicomDataset.cpp
+    )
+endif()
+
+if (ENABLE_THREADS)
+  list(APPEND ORTHANC_STONE_SOURCES
+    ${ORTHANC_STONE_ROOT}/Sources/Oracle/ThreadedOracle.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Oracle/GenericOracleRunner.cpp
+    )
+endif()
+
+
+if (ENABLE_WASM)
+  list(APPEND ORTHANC_STONE_SOURCES
+    ${ORTHANC_STONE_ROOT}/Sources/Loaders/WebAssemblyLoadersContext.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Oracle/WebAssemblyOracle.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Viewport/WebAssemblyCairoViewport.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Viewport/WebAssemblyViewport.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Viewport/WebAssemblyViewport.h
+    )
+endif()
+
+if ((ENABLE_SDL OR ENABLE_WASM) AND ENABLE_GUIADAPTER)
+  list(APPEND APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Sources/Deprecated/GuiAdapter.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Deprecated/GuiAdapter.h
+    )
+endif()
+
+
+list(APPEND ORTHANC_STONE_SOURCES
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/DicomDatasetReader.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/DicomPath.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/FullOrthancDataset.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/IOrthancConnection.cpp
+
+  ${ORTHANC_STONE_ROOT}/Sources/Fonts/FontRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Fonts/Glyph.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Fonts/GlyphAlphabet.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Fonts/GlyphBitmapAlphabet.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Fonts/GlyphTextureAlphabet.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Fonts/TextBoundingBox.cpp
+
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/BasicFetchingItemsSorter.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/BasicFetchingItemsSorter.h
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/BasicFetchingStrategy.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/BasicFetchingStrategy.h
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/DicomResourcesLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/DicomSource.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/DicomStructureSetLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/DicomStructureSetLoader.h
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/DicomVolumeLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/IFetchingItemsSorter.h
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/IFetchingStrategy.h
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/LoadedDicomResources.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/LoaderCache.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/LoaderCache.h
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/LoaderStateMachine.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/LoaderStateMachine.h
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/OrthancMultiframeVolumeLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/OrthancMultiframeVolumeLoader.h
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/OracleScheduler.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.h
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/SeriesFramesLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/SeriesMetadataLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/SeriesOrderedFrames.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Loaders/SeriesThumbnailsLoader.cpp
+
+  ${ORTHANC_STONE_ROOT}/Sources/Messages/ICallable.h
+  ${ORTHANC_STONE_ROOT}/Sources/Messages/IMessage.h
+  ${ORTHANC_STONE_ROOT}/Sources/Messages/IMessageEmitter.h
+  ${ORTHANC_STONE_ROOT}/Sources/Messages/IObservable.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Messages/IObservable.h
+  ${ORTHANC_STONE_ROOT}/Sources/Messages/IObserver.h
+  ${ORTHANC_STONE_ROOT}/Sources/Messages/ObserverBase.h
+
+  ${ORTHANC_STONE_ROOT}/Sources/Oracle/GetOrthancImageCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Oracle/GetOrthancWebViewerJpegCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Oracle/HttpCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Oracle/OracleCommandBase.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Oracle/OrthancRestApiCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Oracle/ParseDicomFromFileCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Oracle/ParseDicomFromWadoCommand.cpp
+
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/CairoCompositor.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/CairoCompositor.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Color.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ColorSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ColorTextureSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ColorTextureSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/FloatTextureSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/FloatTextureSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/GrayscaleStyleConfigurator.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/GrayscaleStyleConfigurator.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ICompositor.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ILayerStyleConfigurator.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/InfoPanelSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/InfoPanelSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/IPointerTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ISceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/LookupTableStyleConfigurator.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/LookupTableStyleConfigurator.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/LookupTableTextureSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/LookupTableTextureSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/NullLayer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PanSceneTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PanSceneTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PointerEvent.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PointerEvent.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PolylineSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PolylineSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/RotateSceneTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/RotateSceneTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Scene2D.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Scene2D.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ScenePoint2D.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/TextSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/TextSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/TextureBaseSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/TextureBaseSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ZoomSceneTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ZoomSceneTracker.h
+
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoBaseRenderer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoColorTextureRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoColorTextureRenderer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoFloatTextureRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoFloatTextureRenderer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoInfoPanelRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoInfoPanelRenderer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoPolylineRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoPolylineRenderer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoTextRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoTextRenderer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CompositorHelper.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CompositorHelper.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/FixedPointAligner.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/FixedPointAligner.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/ICairoContextProvider.h
+  
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/AngleMeasureTool.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/AngleMeasureTool.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateAngleMeasureCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateAngleMeasureCommand.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateAngleMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateAngleMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateCircleMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateCircleMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateLineMeasureCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateLineMeasureCommand.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateLineMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateLineMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateSimpleTrackerAdapter.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditAngleMeasureCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditAngleMeasureCommand.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditAngleMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditAngleMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditLineMeasureCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditLineMeasureCommand.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditLineMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditLineMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/IFlexiblePointerTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/LayerHolder.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/LayerHolder.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/LineMeasureTool.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/LineMeasureTool.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureCommands.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureCommands.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureTool.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureTool.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureToolsToolbox.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureToolsToolbox.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureTrackers.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureTrackers.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/OneGesturePointerTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/OneGesturePointerTracker.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/PredeclaredTypes.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/UndoStack.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/UndoStack.h
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/ViewportController.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/ViewportController.h
+  ${ORTHANC_STONE_ROOT}/Sources/StoneEnumerations.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/StoneException.h
+  ${ORTHANC_STONE_ROOT}/Sources/StoneInitialization.cpp
+
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/AffineTransform2D.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/AffineTransform2D.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/CoordinateSystem3D.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/CoordinateSystem3D.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomInstanceParameters.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomInstanceParameters.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructure2.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructure2.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructurePolygon2.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructurePolygon2.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSet.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSet.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSet2.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSet2.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSetUtils.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSetUtils.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DisjointDataSet.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DynamicBitmap.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DynamicBitmap.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/Extent2D.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/Extent2D.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/FiniteProjectiveCamera.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/FiniteProjectiveCamera.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/GenericToolbox.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/GenericToolbox.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/GeometryToolbox.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/GeometryToolbox.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ImageGeometry.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ImageGeometry.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ImageToolbox.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ImageToolbox.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/LinearAlgebra.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/LinearAlgebra.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/PixelTestPatterns.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ShearWarpProjectiveTransform.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ShearWarpProjectiveTransform.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SlicesSorter.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SlicesSorter.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SortedFrames.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SortedFrames.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SubpixelReader.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SubvoxelReader.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/TextRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/TextRenderer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/UndoRedoStack.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/UndoRedoStack.h
+  
+  ${ORTHANC_STONE_ROOT}/Sources/Viewport/IViewport.h
+  
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/IGeometryProvider.h
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/IVolumeSlicer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/IVolumeSlicer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/OrientedVolumeBoundingBox.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/OrientedVolumeBoundingBox.h
+
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeImageGeometry.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeImageGeometry.h
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeReslicer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeReslicer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeSceneLayerSource.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeSceneLayerSource.h
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomStructureSetSlicer2.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomStructureSetSlicer2.h
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImage.h
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImage.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImage.h
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImageMPRSlicer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImageMPRSlicer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImageReslicer.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImageReslicer.h
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/ImageBuffer3D.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Volumes/ImageBuffer3D.h
+
+  ${ORTHANC_STONE_ROOT}/Sources/Wrappers/CairoContext.cpp
+  ${ORTHANC_STONE_ROOT}/Sources/Wrappers/CairoSurface.cpp
+
+  ${PLATFORM_SOURCES}
+  ${APPLICATIONS_SOURCES}
+  ${ORTHANC_CORE_SOURCES}
+  ${ORTHANC_DICOM_SOURCES}
+
+  # Mandatory components
+  ${CAIRO_SOURCES}
+  ${FREETYPE_SOURCES}
+  ${PIXMAN_SOURCES}
+
+  # Optional components
+  ${SDL_SOURCES}
+  ${QT_SOURCES}
+  ${GLEW_SOURCES}
+  )
+
+
+if (ENABLE_OPENGL)
+  list(APPEND ORTHANC_STONE_SOURCES
+    ${ORTHANC_STONE_ROOT}/Sources/Fonts/OpenGLTextCoordinates.h
+    ${ORTHANC_STONE_ROOT}/Sources/Fonts/OpenGLTextCoordinates.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLProgram.h
+    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLShader.h
+    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLShader.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLTexture.h
+    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLTexture.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/OpenGLCompositor.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/OpenGLCompositor.cpp
+
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLBasicPolylineRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLBasicPolylineRenderer.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLColorTextureProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLColorTextureProgram.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLColorTextureRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLColorTextureRenderer.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLFloatTextureProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLFloatTextureProgram.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLFloatTextureRenderer.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLInfoPanelRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLInfoPanelRenderer.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLLinesProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLLinesProgram.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLLookupTableTextureRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLLookupTableTextureRenderer.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLShaderVersionDirective.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextProgram.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextRenderer.h
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextureProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextureProgram.h
+    )
+
+  if (ENABLE_WASM)
+    list(APPEND ORTHANC_STONE_SOURCES
+      ${ORTHANC_STONE_ROOT}/Sources/OpenGL/WebAssemblyOpenGLContext.cpp
+      ${ORTHANC_STONE_ROOT}/Sources/OpenGL/WebAssemblyOpenGLContext.h
+      ${ORTHANC_STONE_ROOT}/Sources/Viewport/WebGLViewport.cpp
+      ${ORTHANC_STONE_ROOT}/Sources/Viewport/WebGLViewportsRegistry.cpp
+      )
+  endif()
+endif()
+
+##
+## TEST - Automatically add all ".h" headers to the list of sources
+##
+
+macro(AutodetectHeaderFiles SOURCES_VAR)
+  set(TMP)
+  
+  foreach(f IN LISTS ${SOURCES_VAR})
+    get_filename_component(_base ${f} NAME_WE)
+    get_filename_component(_dir ${f} DIRECTORY)
+    get_filename_component(_extension ${f} EXT)
+    set(_header ${_dir}/${_base}.h)
+    
+    if ((_extension STREQUAL ".cpp" OR
+          _extension STREQUAL ".cc" OR
+          _extension STREQUAL ".h") AND
+        EXISTS ${_header} AND
+        NOT IS_DIRECTORY ${_header} AND
+        NOT IS_SYMLINK ${_header})
+
+      # Prevent adding the header twice if it is already manually
+      # specified in the sources
+      list (FIND SOURCES_VAR ${_header} _index)
+      if (${_index} EQUAL -1)
+        list(APPEND TMP ${_header})
+      endif()
+    endif()
+  endforeach()
+
+  list(APPEND ${SOURCES_VAR} ${TMP})
+endmacro()
+
+
+AutodetectHeaderFiles(ORTHANC_STONE_SOURCES)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/OrthancStoneParameters.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,93 @@
+# Stone of Orthanc
+# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+# Department, University Hospital of Liege, Belgium
+# Copyright (C) 2017-2020 Osimis S.A., Belgium
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+
+#####################################################################
+## Select the location of the Orthanc framework
+#####################################################################
+
+set(ORTHANC_STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..)
+
+include(${CMAKE_CURRENT_LIST_DIR}/Version.cmake)
+
+if (ORTHANC_STONE_VERSION STREQUAL "mainline")
+  set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "mainline")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
+else()
+  set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "1.7.2")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
+endif()
+
+# Parameters of the build
+set(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)")
+set(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages")
+set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc framework (can be \"system\", \"hg\", \"archive\", \"web\" or \"path\")")
+set(ORTHANC_FRAMEWORK_VERSION "${ORTHANC_FRAMEWORK_DEFAULT_VERSION}" CACHE STRING "Version of the Orthanc framework")
+set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
+set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
+
+# Advanced parameters to fine-tune linking against system libraries
+set(ORTHANC_FRAMEWORK_STATIC OFF CACHE BOOL "If linking against the Orthanc framework system library, indicates whether this library was statically linked")
+mark_as_advanced(ORTHANC_FRAMEWORK_STATIC)
+
+
+
+#####################################################################
+## Import the parameters of the Orthanc Framework
+#####################################################################
+
+if (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
+  include(${CMAKE_CURRENT_LIST_DIR}/../Orthanc/CMake/DownloadOrthancFramework.cmake)
+  include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
+  
+  unset(STANDALONE_BUILD CACHE)
+  set(STANDALONE_BUILD ON)       # Embed DCMTK's dictionaries in static builds
+
+  set(ENABLE_DCMTK OFF)
+  set(ENABLE_GOOGLE_TEST ON)
+  set(ENABLE_JPEG ON)
+  set(ENABLE_OPENSSL_ENGINES ON)
+  set(ENABLE_PNG ON)
+  set(ENABLE_SQLITE OFF)
+  set(ENABLE_ZLIB ON)
+endif()
+  
+
+
+#####################################################################
+## CMake parameters tunable by the user
+#####################################################################
+
+# Advanced parameters to fine-tune linking against system libraries
+set(USE_SYSTEM_CAIRO ON CACHE BOOL "Use the system version of Cairo")
+set(USE_SYSTEM_FREETYPE ON CACHE BOOL "Use the system version of Freetype")
+set(USE_SYSTEM_GLEW ON CACHE BOOL "Use the system version of glew (for Windows only)")
+set(USE_SYSTEM_PIXMAN ON CACHE BOOL "Use the system version of Pixman")
+set(USE_SYSTEM_SDL ON CACHE BOOL "Use the system version of SDL2")
+
+
+
+#####################################################################
+## Internal CMake parameters to enable the optional subcomponents of
+## the Stone of Orthanc
+#####################################################################
+
+set(ENABLE_OPENGL ON CACHE BOOL "Enable support of OpenGL")
+set(ENABLE_WASM OFF CACHE INTERNAL "Enable support of WebAssembly")
+set(ENABLE_GUIADAPTER OFF CACHE INTERNAL "Enable backward compatibility with the Stone GuiAdapter class")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/PixmanConfiguration.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,243 @@
+# Stone of Orthanc
+# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+# Department, University Hospital of Liege, Belgium
+# Copyright (C) 2017-2020 Osimis S.A., Belgium
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+if (STATIC_BUILD OR NOT USE_SYSTEM_PIXMAN)
+  SET(PIXMAN_SOURCES_DIR ${CMAKE_BINARY_DIR}/pixman-0.34.0)
+  SET(PIXMAN_URL "http://orthanc.osimis.io/ThirdPartyDownloads/pixman-0.34.0.tar.gz")
+  SET(PIXMAN_MD5 "e80ebae4da01e77f68744319f01d52a3")
+
+  if (IS_DIRECTORY "${PIXMAN_SOURCES_DIR}")
+    set(FirstRun OFF)
+  else()
+    set(FirstRun ON)
+  endif()
+
+  DownloadPackage(${PIXMAN_MD5} ${PIXMAN_URL} "${PIXMAN_SOURCES_DIR}")
+
+  # Apply a patch for NaCl32: This bypasses the custom implementation of
+  # "cpuid" that makes use of assembly code leading to "unrecognized
+  # instruction" when validating ".nexe" files using "ncval"
+  execute_process(
+    COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${CMAKE_CURRENT_LIST_DIR}/PixmanConfiguration.patch
+    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+    RESULT_VARIABLE Failure
+    )
+
+  if (Failure AND FirstRun)
+    message(FATAL_ERROR "Error while patching a file")
+  endif()
+
+  set(PIXMAN_VERSION_MAJOR 0)
+  set(PIXMAN_VERSION_MINOR 34)
+  set(PIXMAN_VERSION_MICRO 0)
+  configure_file(
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-version.h.in
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-version.h)
+
+  list(APPEND PIXMAN_SOURCES 
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-access-accessors.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-access.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm.c
+    #${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon.c
+    #${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-bits-image.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-combine32.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-combine-float.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-conical-gradient.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-edge-accessors.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-edge.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-fast-path.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-filter.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-general.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-glyph.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-gradient-walker.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-image.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-implementation.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-linear-gradient.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-matrix.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-mips.c
+    #${PIXMAN_SOURCES_DIR}/pixman/pixman-mips-dspr2.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-mmx.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-noop.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-ppc.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-radial-gradient.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-region16.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-region32.c
+    #${PIXMAN_SOURCES_DIR}/pixman/pixman-region.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-solid-fill.c
+    #${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c
+    #${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-timer.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-trap.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-utils.c
+    #${PIXMAN_SOURCES_DIR}/pixman/pixman-vmx.c
+    ${PIXMAN_SOURCES_DIR}/pixman/pixman-x86.c
+    )
+  
+  set(PIXMAN_DEFINITIONS "PACKAGE=\"pixman\"")
+
+  if (CMAKE_SYSTEM_PROCESSOR)
+    message("Processor: ${CMAKE_SYSTEM_PROCESSOR}")
+  else()
+    message("Processor: Not applicable")
+  endif()
+
+
+  ##########################
+  ## Portable Google NaCl
+  ##########################
+
+  if (CMAKE_SYSTEM_NAME STREQUAL "PNaCl")
+    # No hardware acceleration
+    set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread")
+
+  elseif (CMAKE_SYSTEM_NAME STREQUAL "Emscripten" OR
+          CMAKE_SYSTEM_NAME STREQUAL "Android")
+    ##########################
+    ## Emscripten (asm.js)
+    ##########################
+
+    # No threading support
+    set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};PIXMAN_NO_TLS=1;HAVE_GCC_VECTOR_EXTENSIONS")
+
+  elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
+
+    ##########################
+    ## Windows 32 or 64
+    ##########################
+
+    if (CMAKE_COMPILER_IS_GNUCXX)
+      set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread;HAVE_GCC_VECTOR_EXTENSIONS;HAVE_BUILTIN_CLZ;HAVE_FEDIVBYZERO=1;HAVE_FENV_H=1;HAVE_MPROTECT=1;HAVE_FLOAT128;HAVE_POSIX_MEMALIGN;USE_GCC_INLINE_ASM=1;HAVE_GETPAGESIZE=1")
+
+      # The option "-mstackrealign" is necessary to avoid a crash on
+      # Windows if enabling SSE2. As an alternative, it is possible to
+      # fully disable hardware acceleration.
+      # https://bugs.freedesktop.org/show_bug.cgi?id=68300#c4
+      SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mssse3 -mstackrealign")
+      SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mssse3 -mstackrealign")
+    endif()
+
+    list(APPEND PIXMAN_SOURCES 
+      ${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c
+      ${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c
+      )
+
+    if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
+      # Only enable MMX on Windows 32
+      add_definitions(
+        -DUSE_X86_MMX=1
+        )
+    endif()
+
+    add_definitions(
+      -DUSE_SSE2=1
+      -DUSE_SSSE3=1
+      )
+
+
+    ##########################
+    ## Generic x86 processor
+    ##########################
+
+  elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" OR
+      CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR
+      CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR
+      CMAKE_SYSTEM_NAME STREQUAL "NaCl64" OR
+      CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+
+    set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread;HAVE_GCC_VECTOR_EXTENSIONS;HAVE_BUILTIN_CLZ;HAVE_MPROTECT=1;HAVE_FLOAT128;HAVE_POSIX_MEMALIGN;USE_GCC_INLINE_ASM;HAVE_GETPAGESIZE=1")
+
+    if (${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR
+        ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64")
+      # The MMX instructions lead to "unrecognized instruction" when
+      # validating ".nexe" files using "ncval", disable them
+    else()
+      #add_definitions(-DUSE_X86_MMX=1)
+    endif()
+
+    list(APPEND PIXMAN_SOURCES 
+      ${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c
+      ${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c
+      )
+    add_definitions(
+      -DUSE_SSE2=1
+      -DUSE_SSSE3=1
+      )
+    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mssse3")
+    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mssse3")
+
+
+    ##########################
+    ## ARM processor
+    ##########################
+
+  elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv5te" OR
+      CMAKE_SYSTEM_PROCESSOR STREQUAL "armv6" OR
+      CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l" OR
+      CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a" OR
+      CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
+
+    set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread")
+
+    if (NEON)
+      message("Processor with NEON instructions")
+      list(APPEND PIXMAN_SOURCES 
+        ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon.c
+        ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon-asm.S
+        ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon-asm-bilinear.S
+        )
+      add_definitions(
+        -DUSE_ARM_NEON=1
+        )
+    elseif()
+      message("Processor without NEON instructions")
+    endif()
+
+    add_definitions(
+      -DUSE_ARM_SIMD=1
+      )
+    list(APPEND PIXMAN_SOURCES 
+      ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm.c
+      ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd-asm.S
+      ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd-asm-scaled.S
+      ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd.c
+      )
+
+  else()
+    message(FATAL_ERROR "Support your platform here")
+  endif()
+
+
+  include_directories(
+    ${PIXMAN_SOURCES_DIR}/pixman
+    )
+
+  set_property(
+    SOURCE ${PIXMAN_SOURCES}
+    PROPERTY COMPILE_DEFINITIONS ${PIXMAN_DEFINITIONS}
+    )
+
+else()
+
+  pkg_search_module(PIXMAN REQUIRED pixman-1)
+  include_directories(${PIXMAN_INCLUDE_DIRS})
+  link_libraries(${PIXMAN_LIBRARIES})
+
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/PixmanConfiguration.patch	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,13 @@
+diff -urEb pixman-0.34.0.orig/pixman/pixman-x86.c pixman-0.34.0/pixman/pixman-x86.c
+--- pixman-0.34.0.orig/pixman/pixman-x86.c	2016-07-05 12:46:52.889101224 +0200
++++ pixman-0.34.0/pixman/pixman-x86.c	2016-07-05 12:47:07.253101808 +0200
+@@ -80,7 +80,7 @@
+ static pixman_bool_t
+ have_cpuid (void)
+ {
+-#if _PIXMAN_X86_64 || defined (_MSC_VER)
++#if _PIXMAN_X86_64 || defined (_MSC_VER) || defined(__native_client__)
+ 
+     return TRUE;
+ 
+Only in pixman-0.34.0/pixman: pixman-x86.c~
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/SdlConfiguration.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,224 @@
+# Stone of Orthanc
+# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+# Department, University Hospital of Liege, Belgium
+# Copyright (C) 2017-2020 Osimis S.A., Belgium
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+if (STATIC_BUILD OR NOT USE_SYSTEM_SDL)
+  SET(SDL_SOURCES_DIR ${CMAKE_BINARY_DIR}/SDL2-2.0.4)
+  SET(SDL_URL "http://orthanc.osimis.io/ThirdPartyDownloads/SDL2-2.0.4.tar.gz")
+  SET(SDL_MD5 "44fc4a023349933e7f5d7a582f7b886e")
+  DownloadPackage(${SDL_MD5} ${SDL_URL} "${SDL_SOURCES_DIR}")
+
+  include_directories(${SDL_SOURCES_DIR}/include)
+
+  set(TMP "${SDL_SOURCES_DIR}/include/SDL_config_premake.h")
+  if (NOT EXISTS "${TMP}")
+    file(WRITE "${TMP}" "
+#include \"SDL_platform.h\"
+#define HAVE_STDARG_H 1
+#define HAVE_STDDEF_H 1
+#define HAVE_STDINT_H 1
+")
+  endif()
+
+  # General source files
+  file(GLOB SDL_SOURCES
+    ${SDL_SOURCES_DIR}/src/*.c
+    ${SDL_SOURCES_DIR}/src/atomic/*.c
+    ${SDL_SOURCES_DIR}/src/audio/*.c
+    ${SDL_SOURCES_DIR}/src/cpuinfo/*.c
+    ${SDL_SOURCES_DIR}/src/dynapi/*.c
+    ${SDL_SOURCES_DIR}/src/events/*.c
+    ${SDL_SOURCES_DIR}/src/file/*.c
+    ${SDL_SOURCES_DIR}/src/haptic/*.c
+    ${SDL_SOURCES_DIR}/src/joystick/*.c
+    ${SDL_SOURCES_DIR}/src/libm/*.c
+    ${SDL_SOURCES_DIR}/src/power/*.c
+    ${SDL_SOURCES_DIR}/src/render/*.c
+    ${SDL_SOURCES_DIR}/src/stdlib/*.c
+    ${SDL_SOURCES_DIR}/src/thread/*.c
+    ${SDL_SOURCES_DIR}/src/timer/*.c
+    ${SDL_SOURCES_DIR}/src/video/*.c
+
+    ${SDL_SOURCES_DIR}/src/loadso/dummy/*.c
+    #${SDL_SOURCES_DIR}/src/timer/dummy/*.c
+    ${SDL_SOURCES_DIR}/src/audio/dummy/*.c
+    ${SDL_SOURCES_DIR}/src/filesystem/dummy/*.c
+    ${SDL_SOURCES_DIR}/src/haptic/dummy/*.c
+    ${SDL_SOURCES_DIR}/src/joystick/dummy/*.c
+    #${SDL_SOURCES_DIR}/src/main/dummy/*.c
+    ${SDL_SOURCES_DIR}/src/video/dummy/*.c
+    )
+
+  add_definitions(
+    -DUSING_PREMAKE_CONFIG_H=1
+
+    -DSDL_AUDIO_DISABLED=1
+    -DSDL_AUDIO_DRIVER_DUMMY=1
+    -DSDL_FILESYSTEM_DISABLED=1
+    -DSDL_FILESYSTEM_DUMMY=1
+    -DSDL_FILE_DISABLED=1
+    -DSDL_HAPTIC_DISABLED=1
+    -DSDL_JOYSTICK_DISABLED=1
+
+    #-DSDL_THREADS_DISABLED=1
+    )
+
+  if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+    file(GLOB TMP
+      ${SDL_SOURCES_DIR}/src/core/linux/*.c
+      ${SDL_SOURCES_DIR}/src/loadso/dlopen/*.c
+      ${SDL_SOURCES_DIR}/src/render/software/*.c
+      ${SDL_SOURCES_DIR}/src/thread/pthread/*.c
+      ${SDL_SOURCES_DIR}/src/timer/unix/*.c
+      ${SDL_SOURCES_DIR}/src/video/x11/*.c
+      )
+
+    list(APPEND SDL_SOURCES ${TMP})
+
+    add_definitions(
+      -DSDL_LOADSO_DLOPEN=1
+      -DSDL_THREAD_PTHREAD=1
+      -DSDL_TIMER_UNIX=1
+      -DSDL_POWER_DISABLED=1
+
+      -DSDL_VIDEO_DRIVER_X11=1
+
+      -DSDL_ASSEMBLY_ROUTINES=1
+      -DSDL_THREAD_PTHREAD_RECURSIVE_MUTEX=1
+      -DSDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS=1
+      -DHAVE_GCC_SYNC_LOCK_TEST_AND_SET=1
+      )
+
+    link_libraries(X11 Xext)
+
+    if (NOT CMAKE_SYSTEM_VERSION STREQUAL "Raspberry")
+      # Raspberry Pi has no support for OpenGL
+      file(GLOB TMP
+        ${SDL_SOURCES_DIR}/src/render/opengl/*.c
+        ${SDL_SOURCES_DIR}/src/render/opengles2/*.c
+        )
+
+      list(APPEND SDL_SOURCES ${TMP})
+
+      add_definitions(
+        -DSDL_VIDEO_OPENGL=1
+        -DSDL_VIDEO_OPENGL_ES2=1
+        -DSDL_VIDEO_RENDER_OGL=1
+        -DSDL_VIDEO_RENDER_OGL_ES2=1
+        -DSDL_VIDEO_OPENGL_GLX=1
+        -DSDL_VIDEO_OPENGL_EGL=1
+        )
+    endif()
+
+  elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
+    file(GLOB TMP
+      ${SDL_SOURCES_DIR}/src/audio/directsound/*.c
+      ${SDL_SOURCES_DIR}/src/audio/disk/*.c
+      ${SDL_SOURCES_DIR}/src/audio/winmm/*.c
+      ${SDL_SOURCES_DIR}/src/joystick/windows/*.c
+      ${SDL_SOURCES_DIR}/src/haptic/windows/*.c
+      ${SDL_SOURCES_DIR}/src/power/windows/*.c
+
+      ${SDL_SOURCES_DIR}/src/main/windows/*.c
+      ${SDL_SOURCES_DIR}/src/core/windows/*.c
+      ${SDL_SOURCES_DIR}/src/loadso/windows/*.c
+      ${SDL_SOURCES_DIR}/src/render/direct3d/*.c
+      ${SDL_SOURCES_DIR}/src/render/direct3d11/*.c
+      ${SDL_SOURCES_DIR}/src/render/opengl/*.c
+      ${SDL_SOURCES_DIR}/src/render/psp/*.c
+      ${SDL_SOURCES_DIR}/src/render/opengles/*.c
+      ${SDL_SOURCES_DIR}/src/render/opengles2/*.c
+      ${SDL_SOURCES_DIR}/src/render/software/*.c
+      ${SDL_SOURCES_DIR}/src/thread/generic/SDL_syscond.c   # Don't include more files from "thread/generic/*.c"!
+      ${SDL_SOURCES_DIR}/src/thread/windows/*.c
+      ${SDL_SOURCES_DIR}/src/timer/windows/*.c
+      ${SDL_SOURCES_DIR}/src/video/windows/*.c
+      ${SDL_SOURCES_DIR}/src/windows/dlopen/*.c
+      )
+
+    list(APPEND SDL_SOURCES ${TMP})
+
+    # NB: OpenGL ES headers are not available in MinGW-W64
+    add_definitions(
+      -DSDL_LOADSO_WINDOWS=1
+      -DSDL_THREAD_WINDOWS=1
+      -DSDL_TIMER_WINDOWS=1
+      -DSDL_POWER_WINDOWS=1
+
+      -DSDL_VIDEO_OPENGL=1
+      -DSDL_VIDEO_OPENGL_WGL=1
+      -DSDL_VIDEO_RENDER_D3D=1
+      -DSDL_VIDEO_RENDER_OGL=1
+      -DSDL_VIDEO_DRIVER_WINDOWS=1
+      )
+
+    if (MSVC)
+      add_definitions(
+        -D__FLTUSED__
+        -DHAVE_LIBC=1
+      )
+    else()
+      add_definitions(
+        -DHAVE_GCC_ATOMICS=1
+        -DSDL_ASSEMBLY_ROUTINES=1
+        )
+    endif()
+    
+    link_libraries(imm32 winmm version)
+
+  elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+    file(GLOB TMP
+      ${SDL_SOURCES_DIR}/src/loadso/dlopen/*.c
+      ${SDL_SOURCES_DIR}/src/render/opengl/*.c
+      ${SDL_SOURCES_DIR}/src/render/opengles2/*.c
+      ${SDL_SOURCES_DIR}/src/render/software/*.c
+      ${SDL_SOURCES_DIR}/src/thread/pthread/*.c
+      ${SDL_SOURCES_DIR}/src/timer/unix/*.c
+      ${SDL_SOURCES_DIR}/src/video/cocoa/*.m
+      )
+
+    list(APPEND SDL_SOURCES ${TMP})
+
+    add_definitions(
+      -DSDL_LOADSO_DLOPEN=1
+      -DSDL_THREAD_PTHREAD=1
+      -DSDL_TIMER_UNIX=1
+      -DSDL_POWER_DISABLED=1
+
+      -DSDL_VIDEO_DRIVER_COCOA=1
+      -DSDL_VIDEO_OPENGL=1
+      -DSDL_VIDEO_OPENGL_CGL=1
+      -DSDL_VIDEO_RENDER_OGL=1
+      
+      -DSDL_ASSEMBLY_ROUTINES=1
+      -DSDL_THREAD_PTHREAD_RECURSIVE_MUTEX=1
+      )
+
+    find_library(CARBON_LIBRARY Carbon)
+    find_library(COCOA_LIBRARY Cocoa)
+    find_library(IOKIT_LIBRARY IOKit)
+    find_library(QUARTZ_LIBRARY QuartzCore)
+    link_libraries(${CARBON_LIBRARY} ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${QUARTZ_LIBRARY})
+
+  endif()
+
+else()
+  pkg_search_module(SDL2 REQUIRED sdl2)
+  include_directories(${SDL2_INCLUDE_DIRS})
+  link_libraries(${SDL2_LIBRARIES})
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/Version.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,5 @@
+set(ORTHANC_STONE_VERSION "mainline")
+
+add_definitions(
+  -DORTHANC_STONE_VERSION="${ORTHANC_STONE_VERSION}"
+  )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/CMake/cairo-features.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,45 @@
+#ifndef CAIRO_FEATURES_H
+#define CAIRO_FEATURES_H
+
+#define CAIRO_HAS_GOBJECT_FUNCTIONS 1
+#define CAIRO_HAS_IMAGE_SURFACE 1
+#define CAIRO_HAS_MIME_SURFACE 1
+#define CAIRO_HAS_OBSERVER_SURFACE 1
+#define CAIRO_HAS_RECORDING_SURFACE 1
+#define CAIRO_HAS_USER_FONT 1
+
+/*#undef CAIRO_HAS_BEOS_SURFACE */
+/*#undef CAIRO_HAS_COGL_SURFACE */
+/*#undef CAIRO_HAS_DIRECTFB_SURFACE */
+/*#undef CAIRO_HAS_DRM_SURFACE */
+/*#undef CAIRO_HAS_EGL_FUNCTIONS */
+/*#undef CAIRO_HAS_FC_FONT */
+/*#undef CAIRO_HAS_FT_FONT */
+/*#undef CAIRO_HAS_GALLIUM_SURFACE */
+/*#undef CAIRO_HAS_GLESV2_SURFACE */
+/*#undef CAIRO_HAS_GLX_FUNCTIONS */
+/*#undef CAIRO_HAS_GL_SURFACE */
+/*#undef CAIRO_HAS_OS2_SURFACE */
+/*#undef CAIRO_HAS_PDF_SURFACE */
+/*#undef CAIRO_HAS_PNG_FUNCTIONS */
+/*#undef CAIRO_HAS_PS_SURFACE */
+/*#undef CAIRO_HAS_QT_SURFACE */
+/*#undef CAIRO_HAS_QUARTZ_FONT */
+/*#undef CAIRO_HAS_QUARTZ_IMAGE_SURFACE */
+/*#undef CAIRO_HAS_QUARTZ_SURFACE */
+/*#undef CAIRO_HAS_SCRIPT_SURFACE */
+/*#undef CAIRO_HAS_SKIA_SURFACE */
+/*#undef CAIRO_HAS_SVG_SURFACE */
+/*#undef CAIRO_HAS_TEE_SURFACE */
+/*#undef CAIRO_HAS_VG_SURFACE */
+/*#undef CAIRO_HAS_WGL_FUNCTIONS */
+/*#undef CAIRO_HAS_WIN32_FONT */
+/*#undef CAIRO_HAS_WIN32_SURFACE */
+/*#undef CAIRO_HAS_XCB_SHM_FUNCTIONS */
+/*#undef CAIRO_HAS_XCB_SURFACE */
+/*#undef CAIRO_HAS_XLIB_SURFACE */
+/*#undef CAIRO_HAS_XLIB_XCB_FUNCTIONS */
+/*#undef CAIRO_HAS_XLIB_XRENDER_SURFACE */
+/*#undef CAIRO_HAS_XML_SURFACE */
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Colormaps/GenerateColormaps.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,36 @@
+#!/usr/bin/python
+
+import array
+import matplotlib.pyplot as plt
+
+def GenerateColormap(name):
+    colormap = []
+
+    for gray in range(256):
+        if name == 'red':
+            color = (gray / 255.0, 0, 0)
+        elif name == 'green':
+            color = (0, gray / 255.0, 0)
+        elif name == 'blue':
+            color = (0, 0, gray / 255.0)
+        else:
+            color = plt.get_cmap(name) (gray)
+
+        colormap += map(lambda k: int(round(color[k] * 255)), range(3))
+
+    colormap[0] = 0
+    colormap[1] = 0
+    colormap[2] = 0
+
+    return array.array('B', colormap).tostring()
+
+
+for name in [ 
+        'hot', 
+        'jet', 
+        'blue',
+        'green',
+        'red',
+]:
+    with open('%s.lut' % name, 'w') as f:
+        f.write(GenerateColormap(name))
Binary file OrthancStone/Resources/Colormaps/blue.lut has changed
Binary file OrthancStone/Resources/Colormaps/green.lut has changed
Binary file OrthancStone/Resources/Colormaps/hot.lut has changed
Binary file OrthancStone/Resources/Colormaps/jet.lut has changed
Binary file OrthancStone/Resources/Colormaps/red.lut has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Computations/ComputeShearOnSlice.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,64 @@
+#!/usr/bin/python
+
+from sympy import *
+import pprint
+
+init_printing(use_unicode=True)
+
+
+# Setup "T * S * M_shear" (Equation A.16)
+
+ex, ey, ew = symbols('ex ey ew')
+sx, sy = symbols('sx, sy')
+ti, tj = symbols('ti tj')
+
+T = Matrix([[ 1, 0, 0, ti ],
+            [ 0, 1, 0, tj ],
+            [ 0, 0, 1, 0  ],
+            [ 0, 0, 0, 1  ]])
+
+# Equation (A.15), if "sx == sy == f"
+S = Matrix([[ sx, 0,  0, 0 ],
+            [ 0,  sy, 0, 0 ],
+            [ 0,  0,  1, 0 ],
+            [ 0,  0,  0, 1 ]])
+
+# MM_shear, in Equation (A.14)
+M = Matrix([[ 1, 0, ex, 0 ],
+            [ 0, 1, ey, 0 ],
+            [ 0, 0, 1,  0 ],
+            [ 0, 0, ew,  1 ]])
+
+
+x, y, z, w = symbols('x y z w')
+p = Matrix([ x, y, z, w ])
+
+print("\nT =" % T)
+pprint.pprint(T);
+
+print("\nS =" % T)
+pprint.pprint(S);
+
+print("\nM'_shear =" % T)
+pprint.pprint(M);
+
+print("\nGeneral form of a Lacroute's shear matrix (Equation A.16): T * S * M'_shear =")
+pprint.pprint(T * S * M);
+
+print("\nHence, alternative parametrization:")
+a11, a13, a14, a22, a23, a24, a43 = symbols('a11 a13 a14 a22 a23 a24 a43')
+
+A = Matrix([[ a11, 0,   a13, a14 ],
+            [ 0,   a22, a23, a24 ],
+            [ 0,   0,   1,   0   ],
+            [ 0,   0,   a43, 1   ]])
+pprint.pprint(A);
+
+v = A * p
+v = v.subs(w, 1)
+
+print("\nAction of Lacroute's shear matrix A on plane z (taking w=1):\n%s\n" % v)
+
+print('Output x\' = %s\n' % (v[0]/v[3]))
+print('Output y\' = %s\n' % (v[1]/v[3]))
+print('Output z\' = %s\n' % (v[2]/v[3]))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Computations/ComputeShearParameters.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,32 @@
+#!/usr/bin/python
+
+from sympy import *
+import pprint
+
+init_printing(use_unicode=True)
+
+s13, s23, s43 = symbols('s13 s23 s43')
+x, y, z, w = symbols('x y z w')
+
+A = Matrix([[ 1, 0, s13, 0 ],
+            [ 0, 1, s23, 0 ],
+            [ 0, 0, 1,   0 ],
+            [ 0, 0, s43, 1 ]])
+
+print('\nLacroute\'s shear matrix (A.14) is:')
+pprint.pprint(A)
+
+# At this point, we can write "print(A*p)". However, we don't care
+# about the output "z" axis, as it is fixed. So we delete the 3rd row
+# of A.
+
+A.row_del(2)
+
+p = Matrix([ x, y, z, 1 ])
+
+v = A*p
+print('\nAction of Lacroute\'s shear matrix on plane z (taking w=1):\n%s\n' % v)
+
+print('Scaling = %s' % (1/v[2]))
+print('Offset X = %s' % (v[0]/v[2]).subs(x, 0))
+print('Offset Y = %s' % (v[1]/v[2]).subs(y, 0))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Computations/ComputeWarp.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,112 @@
+#!/usr/bin/python
+
+from sympy import *
+from sympy.solvers import solve
+import pprint
+import sys
+
+init_printing(use_unicode=True)
+
+
+# Create a test 3D vector using homogeneous coordinates
+x, y, z, w = symbols('x y z w')
+p = Matrix([ x, y, z, w ])
+
+
+# Create a shear matrix, and a scale/shift "T * S" transform as in
+# Lacroute's thesis (Equation A.16, page 209)
+ex, ey, ew = symbols('ex ey ew')
+sx, sy, tx, ty = symbols('sx sy tx ty')
+
+TS = Matrix([[ sx, 0,  0, tx ],
+             [ 0,  sy, 0, ty ],
+             [ 0,  0,  1, 0  ],
+             [ 0,  0,  0, 1  ]])
+
+pureShear = Matrix([[ 1, 0, ex, 0 ],
+                    [ 0, 1, ey, 0 ],
+                    [ 0, 0, 1,  0 ],
+                    [ 0, 0, ew, 1 ]])
+
+
+# Create a general warp matrix, that corresponds to "M_warp" in
+# Equation (A.17) of Lacroute's thesis:
+ww11, ww12, ww13, ww14, ww21, ww22, ww23, ww24, ww31, ww32, ww33, ww34, ww41, ww42, ww43, ww44 = symbols('ww11 ww12 ww13 ww14 ww21 ww22 ww23 ww24 ww31 ww32 ww33 ww34 ww41 ww42 ww43 ww44')
+
+WW = Matrix([[ ww11, ww12, ww13, ww14 ],
+             [ ww21, ww22, ww23, ww24 ],
+             [ ww31, ww32, ww33, ww34 ],
+             [ ww41, ww43, ww43, ww44 ]])
+
+
+# Create the matrix of intrinsic parameters of the camera
+k11, k22, k14, k24 = symbols('k11 k22 k14 k24')
+K = Matrix([[ k11, 0,   0, k14 ],
+            [ 0,   k22, 0, k24 ],
+            [ 0,   0,   0, 1   ]])
+
+
+# The full decomposition is:
+M_shear = TS * pureShear
+M_warp = K * WW * TS.inv()
+AA = M_warp * M_shear
+
+# Check that the central component "M_warp == K * WW * TS.inv()" that
+# is the left part of "A" is another general warp matrix (i.e. no
+# exception is thrown about incompatible matrix sizes):
+M_warp * p
+
+if (M_warp.cols != 4 or
+    M_warp.rows != 3):
+    raise Exception('Invalid matrix size')
+
+
+# We've just shown that "M_warp" is a general 3x4 matrix. Let's call
+# it W:
+w11, w12, w13, w14, w21, w22, w23, w24, w41, w42, w43, w44 = symbols('w11 w12 w13 w14 w21 w22 w23 w24 w41 w42 w43 w44')
+
+W = Matrix([[ w11, w12, w13, w14 ],
+            [ w21, w22, w23, w24 ],
+            [ w41, w43, w43, w44 ]])
+
+# This shows that it is sufficient to study a decomposition of the
+# following form:
+A = W * M_shear
+print('\nA = W * M_shear =')
+pprint.pprint(A)
+
+sys.stdout.write('\nW = ')
+pprint.pprint(W)
+
+sys.stdout.write('\nM_shear = ')
+pprint.pprint(M_shear)
+
+
+
+# Let's consider one fixed 2D point (i,j) in the intermediate
+# image. The 3D points (x,y,z,1) that are mapped to (i,j) must satisfy
+# the equation "(i,j) == M_shear * (x,y,z,w)". As "M_shear" is
+# invertible, we solve "(x,y,z,w) == inv(M_shear) * (i,j,k,1)".
+
+i, j, k = symbols('i j k')
+l = M_shear.inv() * Matrix([ i, j, k, 1 ])
+
+print('\nLocus for points imaged to some fixed (i,j,k,l) point in the intermediate image:')
+print('x = %s' % l[0])
+print('y = %s' % l[1])
+print('z = %s' % l[2])
+print('w = %s' % l[3])
+
+
+# By inspecting the 4 equations above, we see that the locus entirely
+# depends upon the "k" value that encodes the Z-axis
+
+print('\nGlobal effect of the shear-warp transform on this locus:')
+q = expand(A * l)
+pprint.pprint(q)
+
+print("\nWe can arbitrarily fix the value of 'k', so let's choose 'k=0':")
+pprint.pprint(q.subs(k, 0))
+
+print("\nThis gives the warp transform.")
+print("QED: line after Equation (A.17) on page 209.\n")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Computations/IntersectSegmentAndHorizontalLine.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+
+from sympy import *
+
+# Intersection between the 2D line segment (prevX,prevY)-(curX,curY) and the
+# horizontal line "y = y0" using homogeneous coordinates
+
+prevX, prevY, curX, curY, y0 = symbols('prevX prevY curX curY y0')
+
+p1 = Matrix([prevX, prevY, 1])
+p2 = Matrix([curX, curY, 1])
+l1 = p1.cross(p2)
+
+h1 = Matrix([0, y0, 1])
+h2 = Matrix([1, y0, 1])
+l2 = h1.cross(h2)
+
+a = l1.cross(l2)
+
+#pprint(cse(a/a[2], symbols = symbols('a b')))
+pprint(a / a[2])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Computations/IntersectSegmentAndVerticalLine.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+
+from sympy import *
+
+# Intersection between the 2D line segment (prevX,prevY)-(curX,curY) and the
+# vertical line "x = x0" using homogeneous coordinates
+
+prevX, prevY, curX, curY, x0 = symbols('prevX prevY curX curY x0')
+
+p1 = Matrix([prevX, prevY, 1])
+p2 = Matrix([curX, curY, 1])
+l1 = p1.cross(p2)
+
+h1 = Matrix([x0, 0, 1])
+h2 = Matrix([x0, 1, 1])
+l2 = h1.cross(h2)
+
+a = l1.cross(l2)
+
+pprint(a / a[2])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Conventions.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,88 @@
+
+Some notes about the lifetime of objects
+========================================
+
+Stone applications
+------------------
+
+A typical Stone application can be split in 3 parts:
+
+1- The "loaders part" and the associated "IOracle", that communicate
+   through "IMessage" objects. The lifetime of these objects is
+   governed by the "IStoneContext".
+
+2- The "data part" holds the data loaded by the "loaders part". The
+   related objects must not be aware of the oracle, neither of the
+   messages. It is up to the user application to store these objects.
+
+3- The "viewport part" is based upon the "Scene2D" class.
+
+
+Multithreading
+--------------
+
+* Stone makes the hypothesis that its objects live in a single thread.
+  All the content of the "Framework" folder (with the exception of
+  the "Oracle" stuff) must not use "boost::thread".
+
+* The "IOracleCommand" classes represent commands that must be
+  executed asynchronously from the Stone thread. Their actual
+  execution is done by the "IOracle".
+
+* In WebAssembly, the "IOracle" corresponds to the "html5.h"
+  facilities (notably for the Fetch API). There is no mutex here, as
+  JavaScript is inherently single-threaded.
+
+* In plain C++ applications, the "IOracle" corresponds to a FIFO queue
+  of commands that are executed by a pool of threads. The Stone
+  context holds a global mutex, that must be properly locked by the
+  user application, and by the "IOracle" when it sends back messages
+  to the Stone loaders (cf. class "IMessageEmitter").
+
+* Multithreading is thus achieved by defining new oracle commands by
+  subclassing "IOracleCommand", then by defining a way to execute them
+  (cf. class "GenericCommandRunner").
+
+
+References between objects
+--------------------------
+
+* An object allocated on the heap must never store a reference/pointer
+  to another object.
+
+* A class designed to be allocated only on the stack can store a
+  reference/pointer to another object. Here is the list of
+  such classes:
+
+  - IMessage and its derived classes: All the messages are allocated
+    on the stack.
+
+
+Pointers
+--------
+
+* As we are targeting C++03 (for VS2008 and LSB compatibility), use
+  "std::unique_ptr<>" and "boost::shared_ptr<>" (*not*
+  "std::shared_ptr<>"). We provide an implementation of std::unique_ptr for
+  pre-C++11 compilers.
+
+* The fact of transfering the ownership of one object to another must
+  be tagged by naming the method "Acquire...()", and by providing a
+  raw pointer.
+
+* Use "std::unique_ptr<>" if the goal is to internally store a pointer
+  whose lifetime corresponds to the host object.
+
+* The use of "boost::weak_ptr<>" should be restricted to
+  oracle/message handling.
+
+* The use of "boost::shared_ptr<>" should be minimized to avoid
+  clutter. The "loaders" and "data parts" objects must however
+  be created as "boost::shared_ptr<>".
+
+
+Global context
+--------------
+
+* As the global Stone context can be created/destroyed by other
+  languages than C++, we don't use a "boost:shared_ptr<>".
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Commands/BaseCommands.yml	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,10 @@
+SelectTool:
+  target: Application
+  toolName: string
+  comment: Selects the current application tool
+DownloadDicom:
+  target: SliceViewerWidget
+  comment: Downloads the slice currently displayed in the SliceViewerWidget
+Export:
+  target: IWidget
+  comment: Export the content of the widget
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationContext.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,78 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "NativeStoneApplicationContext.h"
+#include "../../Platforms/Generic/OracleWebService.h"
+
+namespace OrthancStone
+{
+  void NativeStoneApplicationContext::GlobalMutexLocker::SetCentralWidget(
+    boost::shared_ptr<Deprecated::IWidget> widget)
+  {
+    that_.centralViewport_.SetCentralWidget(widget);
+  }
+
+
+  void NativeStoneApplicationContext::UpdateThread(NativeStoneApplicationContext* that)
+  {
+    while (!that->stopped_)
+    {
+      {
+        GlobalMutexLocker locker(*that);
+        locker.GetCentralViewport().DoAnimation();
+      }
+      
+      boost::this_thread::sleep(boost::posix_time::milliseconds(that->updateDelayInMs_));
+    }
+  }
+  
+
+  NativeStoneApplicationContext::NativeStoneApplicationContext() :
+    stopped_(true),
+    updateDelayInMs_(100)   // By default, 100ms between each refresh of the content
+  {
+    srand(static_cast<unsigned int>(time(NULL))); 
+  }
+
+
+  void NativeStoneApplicationContext::Start()
+  {
+    boost::recursive_mutex::scoped_lock lock(globalMutex_);
+    
+    if (stopped_ &&
+        centralViewport_.HasAnimation())
+    {
+      stopped_ = false;
+      updateThread_ = boost::thread(UpdateThread, this);
+    }
+  }
+
+
+  void NativeStoneApplicationContext::Stop()
+  {
+    stopped_ = true;
+    
+    if (updateThread_.joinable())
+    {
+      updateThread_.join();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationContext.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,78 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Framework/Deprecated/Viewport/WidgetViewport.h"
+#include "../../Framework/Deprecated/Volumes/ISlicedVolume.h"
+#include "../../Framework/Deprecated/Volumes/IVolumeLoader.h"
+
+#include <list>
+#include <boost/thread.hpp>
+#include "../StoneApplicationContext.h"
+
+namespace OrthancStone
+{
+  class NativeStoneApplicationContext : public StoneApplicationContext
+  {
+  private:
+    static void UpdateThread(NativeStoneApplicationContext* that);
+
+    boost::recursive_mutex    globalMutex_;
+    Deprecated::WidgetViewport  centralViewport_;
+    boost::thread   updateThread_;
+    bool            stopped_;
+    unsigned int    updateDelayInMs_;
+
+  public:
+    class GlobalMutexLocker: public boost::noncopyable
+    {
+    private:
+      NativeStoneApplicationContext&        that_;
+      boost::recursive_mutex::scoped_lock   lock_;
+      
+    public:
+      GlobalMutexLocker(NativeStoneApplicationContext& that) :
+        that_(that),
+        lock_(that.globalMutex_)
+      {
+      }
+
+      void SetCentralWidget(boost::shared_ptr<Deprecated::IWidget> widget);
+
+      Deprecated::IViewport& GetCentralViewport() 
+      {
+        return that_.centralViewport_;
+      }
+
+      void SetUpdateDelay(unsigned int delayInMs)
+      {
+        that_.updateDelayInMs_ = delayInMs;
+      }
+    };
+
+    NativeStoneApplicationContext();
+
+    void Start();
+
+    void Stop();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationRunner.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,265 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#if ORTHANC_ENABLE_THREADS != 1
+#error this file shall be included only with the ORTHANC_ENABLE_THREADS set to 1
+#endif
+
+#include "NativeStoneApplicationRunner.h"
+
+#include "../../Framework/Deprecated/Toolbox/MessagingToolbox.h"
+#include "../../Platforms/Generic/OracleWebService.h"
+#include "../../Platforms/Generic/OracleDelayedCallExecutor.h"
+#include "NativeStoneApplicationContext.h"
+
+#include <Core/Logging.h>
+#include <Core/HttpClient.h>
+#include <Core/Toolbox.h>
+#include <Core/OrthancException.h>
+#include <Plugins/Samples/Common/OrthancHttpConnection.h>
+
+#include <boost/program_options.hpp>
+
+namespace OrthancStone
+{
+  // Anonymous namespace to avoid clashes against other compilation modules
+  namespace
+  {
+    class LogStatusBar : public Deprecated::IStatusBar
+    {
+    public:
+      virtual void ClearMessage()
+      {
+      }
+
+      virtual void SetMessage(const std::string& message)
+      {
+        LOG(WARNING) << message;
+      }
+    };
+  }
+
+  int NativeStoneApplicationRunner::Execute(int argc,
+                                            char* argv[])
+  {
+    /******************************************************************
+     * Initialize all the subcomponents of Orthanc Stone
+     ******************************************************************/
+
+    Orthanc::Logging::Initialize();
+    Orthanc::Toolbox::InitializeOpenSsl();
+    Orthanc::HttpClient::GlobalInitialize();
+
+    Initialize();
+
+    /******************************************************************
+     * Declare and parse the command-line options of the application
+     ******************************************************************/
+
+    boost::program_options::options_description options;
+
+    { // generic options
+      boost::program_options::options_description generic("Generic options");
+      generic.add_options()
+          ("help", "Display this help and exit")
+          ("verbose", "Be verbose in logs")
+          ("orthanc", boost::program_options::value<std::string>()->
+            default_value("http://localhost:8042/"),
+           "URL to the Orthanc server")
+          ("username", "Username for the Orthanc server")
+          ("password", "Password for the Orthanc server")
+          ("https-verify", boost::program_options::value<bool>()->
+            default_value(true), "Check HTTPS certificates")
+          ;
+
+      options.add(generic);
+    }
+
+    // platform specific options
+    DeclareCommandLineOptions(options);
+    
+    // application specific options
+    application_->DeclareStartupOptions(options);
+
+    boost::program_options::variables_map parameters;
+    bool error = false;
+
+    try
+    {
+      boost::program_options::store(
+        boost::program_options::command_line_parser(argc, argv).
+          options(options).allow_unregistered().run(), parameters);
+      boost::program_options::notify(parameters);
+    }
+    catch (boost::program_options::error& e)
+    {
+      LOG(ERROR) << 
+        "Error while parsing the command-line arguments: " << e.what();
+      error = true;
+    }
+
+
+    /******************************************************************
+     * Configure the application with the command-line parameters
+     ******************************************************************/
+
+    if (error || parameters.count("help"))
+    {
+      std::cout << std::endl;
+
+      std::cout << options << "\n";
+      return error ? -1 : 0;
+    }
+
+    if (parameters.count("https-verify") &&
+        !parameters["https-verify"].as<bool>())
+    {
+      LOG(WARNING) << "Turning off verification of HTTPS certificates (unsafe)";
+      Orthanc::HttpClient::ConfigureSsl(false, "");
+    }
+
+    LOG(ERROR) << "???????? if (parameters.count(\"verbose\"))";
+    if (parameters.count("verbose"))
+    {
+      LOG(ERROR) << "parameters.count(\"verbose\") != 0";
+      Orthanc::Logging::EnableInfoLevel(true);
+      LOG(INFO) << "Verbose logs are enabled";
+    }
+
+    LOG(ERROR) << "???????? if (parameters.count(\"trace\"))";
+    if (parameters.count("trace"))
+    {
+      LOG(ERROR) << "parameters.count(\"trace\") != 0";
+      Orthanc::Logging::EnableTraceLevel(true);
+      VLOG(1) << "Trace logs are enabled";
+    }
+
+    ParseCommandLineOptions(parameters);
+
+    bool success = true;
+    try
+    {
+      /****************************************************************
+       * Initialize the connection to the Orthanc server
+       ****************************************************************/
+
+      Orthanc::WebServiceParameters webServiceParameters;
+
+      if (parameters.count("orthanc"))
+      {
+        webServiceParameters.SetUrl(parameters["orthanc"].as<std::string>());
+      }
+
+      if (parameters.count("username") && parameters.count("password"))
+      {
+        webServiceParameters.SetCredentials(parameters["username"].
+          as<std::string>(),
+          parameters["password"].as<std::string>());
+      }
+
+      LOG(WARNING) << "URL to the Orthanc REST API: " << 
+        webServiceParameters.GetUrl();
+
+      {
+        OrthancPlugins::OrthancHttpConnection orthanc(webServiceParameters);
+        if (!Deprecated::MessagingToolbox::CheckOrthancVersion(orthanc))
+        {
+          LOG(ERROR) << "Your version of Orthanc is incompatible with Stone of "
+            << "Orthanc, please upgrade";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+        }
+      }
+
+
+      /****************************************************************
+       * Initialize the application
+       ****************************************************************/
+
+      LOG(WARNING) << "Creating the widgets of the application";
+
+      LogStatusBar statusBar;
+
+      NativeStoneApplicationContext context;
+
+      {
+        // use multiple threads to execute asynchronous tasks like 
+        // download content
+        Deprecated::Oracle oracle(6); 
+        oracle.Start();
+
+        {
+          boost::shared_ptr<Deprecated::OracleWebService> webService
+            (new Deprecated::OracleWebService(oracle, webServiceParameters, context));
+          context.SetWebService(webService);
+          context.SetOrthancBaseUrl(webServiceParameters.GetUrl());
+
+          Deprecated::OracleDelayedCallExecutor delayedExecutor(oracle, context);
+          context.SetDelayedCallExecutor(delayedExecutor);
+
+          application_->Initialize(&context, statusBar, parameters);
+
+          {
+            NativeStoneApplicationContext::GlobalMutexLocker locker(context);
+            locker.SetCentralWidget(application_->GetCentralWidget());
+            locker.GetCentralViewport().SetStatusBar(statusBar);
+          }
+
+          std::string title = application_->GetTitle();
+          if (title.empty())
+          {
+            title = "Stone of Orthanc";
+          }
+
+          /****************************************************************
+           * Run the application
+           ****************************************************************/
+
+          Run(context, title, argc, argv);
+
+          /****************************************************************
+           * Finalize the application
+           ****************************************************************/
+
+          oracle.Stop();
+        }
+      }
+
+      LOG(WARNING) << "The application is stopping";
+      application_->Finalize();
+    }
+    catch (Orthanc::OrthancException& e)
+    {
+      LOG(ERROR) << "EXCEPTION: " << e.What();
+      success = false;
+    }
+
+
+    /******************************************************************
+     * Finalize all the subcomponents of Orthanc Stone
+     ******************************************************************/
+
+    Finalize();
+    Orthanc::HttpClient::GlobalFinalize();
+    Orthanc::Toolbox::FinalizeOpenSsl();
+
+    return (success ? 0 : -1);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationRunner.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../IStoneApplication.h"
+
+#if ORTHANC_ENABLE_THREADS != 1
+#error this file shall be included only with the ORTHANC_ENABLE_THREADS set to 1
+#endif
+
+namespace OrthancStone
+{
+  class NativeStoneApplicationContext;
+
+  class NativeStoneApplicationRunner
+  {
+  protected:
+    boost::shared_ptr<IStoneApplication>  application_;
+    
+  public:
+    NativeStoneApplicationRunner(boost::shared_ptr<IStoneApplication> application)
+      : application_(application)
+    {
+    }
+    int Execute(int argc,
+                char* argv[]);
+
+    virtual void Initialize() = 0;
+    virtual void DeclareCommandLineOptions(boost::program_options::options_description& options) = 0;
+    virtual void ParseCommandLineOptions(const boost::program_options::variables_map& parameters) = 0;
+
+    virtual void Run(NativeStoneApplicationContext& context, const std::string& title, int argc, char* argv[]) = 0;
+    virtual void Finalize() = 0;
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Generic/Scene2DInteractor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include "../../Framework/Scene2D/PointerEvent.h"
+#include "../../Framework/Scene2DViewport/ViewportController.h"
+//#include "../../Framework/Scene2D/Internals/CompositorHelper.h"
+#include "GuiAdapter.h"
+
+
+namespace OrthancStone
+{
+
+  class Scene2DInteractor
+  {
+  protected:
+    boost::shared_ptr<ViewportController>       viewportController_;
+//    boost::shared_ptr<ICompositor>              compositor_;
+
+  public:
+    Scene2DInteractor(boost::shared_ptr<ViewportController> viewportController) :
+      viewportController_(viewportController)
+    {}
+
+//    void SetCompositor(boost::shared_ptr<ICompositor> compositor)
+//    {
+//      compositor_ = compositor;
+//    }
+
+    virtual bool OnMouseEvent(const GuiAdapterMouseEvent& guiEvent, const PointerEvent& pointerEvent) = 0; // returns true if it has handled the event
+    virtual bool OnKeyboardEvent(const GuiAdapterKeyboardEvent& guiEvent) = 0; // returns true if it has handled the event
+    virtual bool OnWheelEvent(const GuiAdapterWheelEvent& guiEvent) = 0; // returns true if it has handled the event
+
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/IStoneApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,74 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "StoneApplicationContext.h"
+#include "../Framework/Deprecated/Viewport/WidgetViewport.h"
+
+#include <boost/program_options.hpp>
+#include <json/json.h>
+
+namespace OrthancStone
+{
+#if ORTHANC_ENABLE_QT==1
+  class QStoneMainWindow;
+#endif
+
+  // a StoneApplication is an application that can actually be executed
+  // in multiple environments.  i.e: it can run natively integrated in a QtApplication
+  // or it can be executed as part of a WebPage when compiled into WebAssembly.
+  class IStoneApplication : public boost::noncopyable
+  {
+  protected:
+    StoneApplicationContext* context_;
+
+  public:
+    virtual ~IStoneApplication()
+    {
+    }
+
+    virtual void DeclareStartupOptions(boost::program_options::options_description& options) = 0;
+    virtual void Initialize(StoneApplicationContext* context,
+                            Deprecated::IStatusBar& statusBar,
+                            const boost::program_options::variables_map& parameters) = 0;
+
+    /**
+      This method is meant to process messages received from the outside world (i.e. GUI)
+    */
+    virtual void HandleSerializedMessage(const char* data) = 0;
+
+#if ORTHANC_ENABLE_WASM==1
+    virtual void InitializeWasm() {}  // specific initialization when the app is running in WebAssembly.  This is called after the other Initialize()
+#endif
+#if ORTHANC_ENABLE_QT==1
+      virtual QStoneMainWindow* CreateQtMainWindow() = 0;
+#endif
+
+    virtual std::string GetTitle() const = 0;
+    
+    virtual void SetCentralWidget(boost::shared_ptr<Deprecated::IWidget> widget) = 0;
+    
+    virtual boost::shared_ptr<Deprecated::IWidget> GetCentralWidget() = 0;
+    
+    virtual void Finalize() = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QCairoWidget.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,238 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "QCairoWidget.h"
+
+#include <QPainter>
+#include <QPaintEvent>
+
+#include <stdexcept>
+
+
+QCairoWidget::StoneObserver::StoneObserver(QCairoWidget& that,
+                                           Deprecated::IViewport& viewport,
+                                           OrthancStone::MessageBroker& broker) :
+  OrthancStone::IObserver(broker),
+  that_(that)
+{
+  // get notified each time the content of the central viewport changes
+  viewport.RegisterObserverCallback(
+    new OrthancStone::Callable<StoneObserver, Deprecated::IViewport::ViewportChangedMessage>
+    (*this, &StoneObserver::OnViewportChanged));
+}
+
+
+QCairoWidget::QCairoWidget(QWidget *parent) :
+  QWidget(parent),
+  context_(NULL)
+{
+  setFocusPolicy(Qt::StrongFocus); // catch keyPressEvents
+}
+
+
+void QCairoWidget::SetContext(OrthancStone::NativeStoneApplicationContext& context)
+{
+  context_ = &context;
+
+  {
+    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
+    observer_.reset(new StoneObserver(*this,
+                                      locker.GetCentralViewport(),
+                                      locker.GetMessageBroker()));
+  }
+}
+
+
+void QCairoWidget::paintEvent(QPaintEvent* /*event*/)
+{
+  QPainter painter(this);
+
+  if (image_.get() != NULL &&
+      context_ != NULL)
+  {
+    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
+    Deprecated::IViewport& viewport = locker.GetCentralViewport();
+    Orthanc::ImageAccessor a;
+    surface_.GetWriteableAccessor(a);
+    viewport.Render(a);
+    painter.drawImage(0, 0, *image_);
+  }
+  else
+  {
+    painter.fillRect(rect(), Qt::red);
+  }
+}
+
+OrthancStone::KeyboardModifiers GetKeyboardModifiers(QInputEvent* event)
+{
+  Qt::KeyboardModifiers qtModifiers = event->modifiers();
+  int stoneModifiers = static_cast<int>(OrthancStone::KeyboardModifiers_None);
+  if ((qtModifiers & Qt::AltModifier) != 0)
+  {
+    stoneModifiers |= static_cast<int>(OrthancStone::KeyboardModifiers_Alt);
+  }
+  if ((qtModifiers & Qt::ControlModifier) != 0)
+  {
+    stoneModifiers |= static_cast<int>(OrthancStone::KeyboardModifiers_Control);
+  }
+  if ((qtModifiers & Qt::ShiftModifier) != 0)
+  {
+    stoneModifiers |= static_cast<int>(OrthancStone::KeyboardModifiers_Shift);
+  }
+  return static_cast<OrthancStone::KeyboardModifiers>(stoneModifiers);
+}
+
+void QCairoWidget::mousePressEvent(QMouseEvent* event)
+{
+  OrthancStone::KeyboardModifiers stoneModifiers = GetKeyboardModifiers(event);
+
+  OrthancStone::MouseButton button;
+
+  switch (event->button())
+  {
+    case Qt::LeftButton:
+      button = OrthancStone::MouseButton_Left;
+      break;
+
+    case Qt::RightButton:
+      button = OrthancStone::MouseButton_Right;
+      break;
+
+    case Qt::MiddleButton:
+      button = OrthancStone::MouseButton_Middle;
+      break;
+
+    default:
+      return;  // Unsupported button
+  }
+
+  {
+    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
+    locker.GetCentralViewport().MouseDown(button, event->pos().x(), event->pos().y(), stoneModifiers, std::vector<Deprecated::Touch>());
+  }
+}
+
+
+void QCairoWidget::mouseReleaseEvent(QMouseEvent* /*eventNotUsed*/)
+{
+  OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
+  locker.GetCentralViewport().MouseLeave();
+}
+
+
+void QCairoWidget::mouseMoveEvent(QMouseEvent* event)
+{
+  OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
+  locker.GetCentralViewport().MouseMove(event->pos().x(), event->pos().y(), std::vector<Deprecated::Touch>());
+}
+
+
+void QCairoWidget::wheelEvent(QWheelEvent * event)
+{
+  OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
+
+  OrthancStone::KeyboardModifiers stoneModifiers = GetKeyboardModifiers(event);
+
+  if (event->orientation() == Qt::Vertical)
+  {
+    if (event->delta() < 0)  // TODO: compare direction with SDL and make sure we send the same directions
+    {
+       locker.GetCentralViewport().MouseWheel(OrthancStone::MouseWheelDirection_Up, event->pos().x(), event->pos().y(), stoneModifiers);
+    }
+    else
+    {
+      locker.GetCentralViewport().MouseWheel(OrthancStone::MouseWheelDirection_Down, event->pos().x(), event->pos().y(), stoneModifiers);
+    }
+  }
+}
+
+void QCairoWidget::keyPressEvent(QKeyEvent *event)
+{
+  using namespace OrthancStone;
+
+  OrthancStone::KeyboardModifiers stoneModifiers = GetKeyboardModifiers(event);
+
+  OrthancStone::KeyboardKeys keyType = OrthancStone::KeyboardKeys_Generic;
+  char keyChar = event->text()[0].toLatin1();
+
+#define CASE_QT_KEY_TO_ORTHANC(qt, o) case qt: keyType = o; break;
+  if (keyChar == 0)
+  {
+    switch (event->key())
+    {
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Up, KeyboardKeys_Up);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Down, KeyboardKeys_Down);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Left, KeyboardKeys_Left);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Right, KeyboardKeys_Right);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F1, KeyboardKeys_F1);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F2, KeyboardKeys_F2);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F3, KeyboardKeys_F3);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F4, KeyboardKeys_F4);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F5, KeyboardKeys_F5);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F6, KeyboardKeys_F6);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F7, KeyboardKeys_F7);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F8, KeyboardKeys_F8);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F9, KeyboardKeys_F9);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F10, KeyboardKeys_F10);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F11, KeyboardKeys_F11);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F12, KeyboardKeys_F12);
+    default:
+      break;
+    }
+  }
+  else if (keyChar == 127)
+  {
+    switch (event->key())
+    {
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Delete, KeyboardKeys_Delete);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Backspace, KeyboardKeys_Backspace);
+    default:
+      break;
+    }
+  }
+
+  {
+    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);    
+    locker.GetCentralViewport().KeyPressed(keyType, keyChar, stoneModifiers);
+  }
+}
+
+
+void QCairoWidget::resizeEvent(QResizeEvent* event)
+{
+  grabGesture(Qt::PanGesture);
+  QWidget::resizeEvent(event);
+
+  if (event)
+  {
+    surface_.SetSize(event->size().width(), event->size().height(), true);
+
+    image_.reset(new QImage(reinterpret_cast<uchar*>(surface_.GetBuffer()),
+                            event->size().width(), 
+                            event->size().height(),
+                            surface_.GetPitch(),
+                            QImage::Format_RGB32));
+
+    {
+      OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
+      locker.GetCentralViewport().SetSize(event->size().width(), event->size().height());
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QCairoWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,88 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "../../Applications/Generic/NativeStoneApplicationContext.h"
+#include "../../Framework/Wrappers/CairoSurface.h"
+#include "../../Framework/Deprecated/Widgets/IWidget.h"
+
+#include <QWidget>
+#include <memory>
+#include <cassert>
+
+class QCairoWidget : public QWidget
+{
+  Q_OBJECT
+
+private:
+  class StoneObserver : public OrthancStone::IObserver
+  {
+  private:
+    QCairoWidget& that_;
+    
+  public:
+    StoneObserver(QCairoWidget& that,
+                  Deprecated::IViewport& viewport,
+                  OrthancStone::MessageBroker& broker);
+
+    void OnViewportChanged(const Deprecated::IViewport::ViewportChangedMessage& message)
+    {
+      that_.OnViewportChanged();
+    }
+  };
+  
+  std::unique_ptr<QImage>         image_;
+  OrthancStone::CairoSurface    surface_;
+  OrthancStone::NativeStoneApplicationContext* context_;
+  std::unique_ptr<StoneObserver>  observer_;
+
+protected:
+  virtual void paintEvent(QPaintEvent *event);
+
+  virtual void resizeEvent(QResizeEvent *event);
+
+  virtual void mouseMoveEvent(QMouseEvent *event);
+
+  virtual void mousePressEvent(QMouseEvent *event);
+
+  virtual void mouseReleaseEvent(QMouseEvent *event);
+
+  virtual void wheelEvent(QWheelEvent *event);
+
+  virtual void keyPressEvent(QKeyEvent *event);
+
+public:
+  explicit QCairoWidget(QWidget *parent);
+ 
+  void SetContext(OrthancStone::NativeStoneApplicationContext& context);
+
+  void OnViewportChanged()
+  {
+    update();  // schedule a repaint (handled by Qt)
+    emit ContentChanged();
+  }
+
+signals:
+  void ContentChanged();
+                                               
+public slots:
+
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QStoneMainWindow.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,43 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "QStoneMainWindow.h"
+
+namespace OrthancStone
+{
+
+  QStoneMainWindow::QStoneMainWindow(NativeStoneApplicationContext& context,
+                                     QWidget *parent) :
+    QMainWindow(parent),
+    context_(context),
+    cairoCentralWidget_(NULL)
+  {
+  }
+
+  void QStoneMainWindow::SetCentralStoneWidget(QCairoWidget& centralWidget)
+  {
+    cairoCentralWidget_ = &centralWidget;
+    cairoCentralWidget_->SetContext(context_);
+  }
+
+  QStoneMainWindow::~QStoneMainWindow()
+  {
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QStoneMainWindow.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,45 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include <QMainWindow>
+
+#include "QCairoWidget.h"
+#include "../Generic/NativeStoneApplicationContext.h"
+
+namespace OrthancStone
+{
+  class QStoneMainWindow : public QMainWindow
+  {
+    Q_OBJECT
+
+  private:
+    OrthancStone::NativeStoneApplicationContext& context_;
+    QCairoWidget          *cairoCentralWidget_;
+
+  protected:  // you must inherit this class
+    QStoneMainWindow(NativeStoneApplicationContext& context, QWidget *parent = 0);
+    void SetCentralStoneWidget(QCairoWidget& centralWidget);
+
+  public:
+    virtual ~QStoneMainWindow();
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QtStoneApplicationRunner.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,67 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#if ORTHANC_ENABLE_QT != 1
+#error this file shall be included only with the ORTHANC_ENABLE_QT set to 1
+#endif
+
+#include "QtStoneApplicationRunner.h"
+#include <boost/program_options.hpp>
+#include <QApplication>
+
+#include "../../Framework/Deprecated/Toolbox/MessagingToolbox.h"
+
+#include <Core/Logging.h>
+#include <Core/HttpClient.h>
+#include <Core/Toolbox.h>
+#include <Plugins/Samples/Common/OrthancHttpConnection.h>
+#include "../../Platforms/Generic/OracleWebService.h"
+
+
+namespace OrthancStone
+{
+  void QtStoneApplicationRunner::Initialize()
+  {
+  }
+
+  void QtStoneApplicationRunner::DeclareCommandLineOptions(boost::program_options::options_description& options)
+  {
+  }
+
+  void QtStoneApplicationRunner::Run(NativeStoneApplicationContext& context, const std::string& title, int argc, char* argv[])
+  {
+    context.Start();
+
+    QApplication qtApplication(argc, argv);
+    window_.reset(application_.CreateQtMainWindow());
+
+    window_->show();
+    qtApplication.exec();
+
+    context.Stop();
+  }
+
+  void QtStoneApplicationRunner::Finalize()
+  {
+  }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Qt/QtStoneApplicationRunner.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,54 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Generic/NativeStoneApplicationRunner.h"
+#include "QStoneMainWindow.h"
+
+#if ORTHANC_ENABLE_QT != 1
+#error this file shall be included only with the ORTHANC_ENABLE_QT set to 1
+#endif
+
+namespace OrthancStone
+{
+  class QtStoneApplicationRunner : public NativeStoneApplicationRunner
+  {
+  protected:
+    std::unique_ptr<QStoneMainWindow> window_;
+
+  public:
+    QtStoneApplicationRunner(MessageBroker& broker,
+                             IStoneApplication& application)
+      : NativeStoneApplicationRunner(broker, application)
+    {
+    }
+
+
+    virtual void Initialize();
+
+    virtual void DeclareCommandLineOptions(boost::program_options::options_description& options);
+    virtual void ParseCommandLineOptions(const boost::program_options::variables_map& parameters) {}
+    virtual void Run(NativeStoneApplicationContext& context, const std::string& title, int argc, char* argv[]);
+    virtual void Finalize();
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/BasicPetCtFusionApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,202 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "SampleInteractor.h"
+
+#include <Core/Logging.h>
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class BasicPetCtFusionApplication : public SampleApplicationBase
+    {
+    private:
+      class Interactor : public SampleInteractor
+      {
+      public:
+        static void SetStyle(LayeredSceneWidget& widget,
+                             bool ct,
+                             bool pet)
+        {
+          if (ct)
+          {
+            RenderStyle style;
+            style.windowing_ = ImageWindowing_Bone;
+            widget.SetLayerStyle(0, style);
+          }
+          else
+          {
+            RenderStyle style;
+            style.visible_ = false;
+            widget.SetLayerStyle(0, style);
+          }
+
+          if (ct && pet)
+          {
+            RenderStyle style;
+            style.applyLut_ = true;
+            style.alpha_ = 0.5;
+            widget.SetLayerStyle(1, style);
+          }
+          else if (pet)
+          {
+            RenderStyle style;
+            style.applyLut_ = true;
+            widget.SetLayerStyle(1, style);
+          }
+          else
+          {
+            RenderStyle style;
+            style.visible_ = false;
+            widget.SetLayerStyle(1, style);
+          }
+        }
+
+
+        static bool IsVisible(LayeredSceneWidget& widget,
+                              size_t layer)
+        {
+          RenderStyle style = widget.GetLayerStyle(layer);
+          return style.visible_;
+        }
+
+
+        static void ToggleInterpolation(LayeredSceneWidget& widget,
+                                        size_t layer)
+        {
+          RenderStyle style = widget.GetLayerStyle(layer);
+         
+          if (style.interpolation_ == ImageInterpolation_Bilinear)
+          {
+            style.interpolation_ = ImageInterpolation_Nearest;
+          }
+          else
+          {
+            style.interpolation_ = ImageInterpolation_Bilinear;
+          }
+
+          widget.SetLayerStyle(layer, style);
+        }
+
+
+        Interactor(VolumeImage& volume,
+                   VolumeProjection projection, 
+                   bool reverse) :
+          SampleInteractor(volume, projection, reverse)
+        {
+        }
+
+
+        virtual void KeyPressed(WorldSceneWidget& widget,
+                                char key,
+                                KeyboardModifiers modifiers,
+                                IStatusBar* statusBar)
+        {
+          LayeredSceneWidget& layered = dynamic_cast<LayeredSceneWidget&>(widget);
+
+          switch (key)
+          {
+            case 'c':
+              // Toggle the visibility of the CT layer
+              SetStyle(layered, !IsVisible(layered, 0), IsVisible(layered, 1));
+              break;
+
+            case 'p':
+              // Toggle the visibility of the PET layer
+              SetStyle(layered, IsVisible(layered, 0), !IsVisible(layered, 1));
+              break;
+
+            case 'i':
+            {
+              // Toggle on/off the interpolation
+              ToggleInterpolation(layered, 0);
+              ToggleInterpolation(layered, 1);
+              break;
+            }
+
+            default:
+              break;
+          }
+        }
+      };
+
+
+    public:
+      virtual void DeclareCommandLineOptions(boost::program_options::options_description& options)
+      {
+        boost::program_options::options_description generic("Sample options");
+        generic.add_options()
+          ("ct", boost::program_options::value<std::string>(), 
+           "Orthanc ID of the CT series")
+          ("pet", boost::program_options::value<std::string>(), 
+           "Orthanc ID of the PET series")
+          ("threads", boost::program_options::value<unsigned int>()->default_value(3), 
+           "Number of download threads for the CT series")
+          ;
+
+        options.add(generic);    
+      }
+
+      virtual void Initialize(BasicApplicationContext& context,
+                              IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters)
+      {
+        using namespace OrthancStone;
+
+        if (parameters.count("ct") != 1 ||
+            parameters.count("pet") != 1)
+        {
+          LOG(ERROR) << "The series ID is missing";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+
+        std::string ct = parameters["ct"].as<std::string>();
+        std::string pet = parameters["pet"].as<std::string>();
+        unsigned int threads = parameters["threads"].as<unsigned int>();
+
+        VolumeImage& ctVolume = context.AddSeriesVolume(ct, true /* progressive download */, threads);
+        VolumeImage& petVolume = context.AddSeriesVolume(pet, true /* progressive download */, 1);
+
+        // Take the PET volume as the reference for the slices
+        std::unique_ptr<Interactor> interactor(new Interactor(petVolume, VolumeProjection_Axial, false /* don't reverse normal */));
+
+        std::unique_ptr<LayeredSceneWidget> widget(new LayeredSceneWidget);
+        widget->AddLayer(new VolumeImage::LayerFactory(ctVolume));
+        widget->AddLayer(new VolumeImage::LayerFactory(petVolume));
+        widget->SetSlice(interactor->GetCursor().GetCurrentSlice());
+        widget->SetInteractor(*interactor);
+
+        Interactor::SetStyle(*widget, true, true);   // Initially, show both CT and PET layers
+
+        context.AddInteractor(interactor.release());
+        context.SetCentralWidget(widget.release());
+
+        statusBar.SetMessage("Use the key \"t\" to toggle the fullscreen mode");
+        statusBar.SetMessage("Use the key \"c\" to show/hide the CT layer");
+        statusBar.SetMessage("Use the key \"p\" to show/hide the PET layer");
+        statusBar.SetMessage("Use the key \"i\" to toggle the smoothing of the images");
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,292 @@
+# Usage (Linux):
+# to build the WASM samples
+# source ~/Downloads/emsdk/emsdk_env.sh && cmake -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DSTONE_SOURCES_DIR=$currentDir/../../../orthanc-stone -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT=$currentDir/../../../orthanc -DALLOW_DOWNLOADS=ON .. -DENABLE_WASM=ON
+# to build the Qt samples
+
+cmake_minimum_required(VERSION 2.8.3)
+project(OrthancStone)
+
+include(../../../Resources/CMake/OrthancStoneParameters.cmake)
+
+set(ENABLE_STONE_DEPRECATED ON)  # Need deprecated classes for these samples
+set(EMSCRIPTEN_SET_LLVM_WASM_BACKEND ON)
+
+include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
+DownloadPackage(
+  "a24b8136b8f3bb93f166baf97d9328de"
+  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
+  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
+
+set(ORTHANC_STONE_APPLICATION_RESOURCES
+  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
+  )
+
+if (OPENSSL_NO_CAPIENG)
+add_definitions(-DOPENSSL_NO_CAPIENG=1)
+endif()
+
+
+# the following block has been borrowed from orthanc/**/Compiler.cmake
+if (MSVC_MULTIPLE_PROCESSES)
+# "If you omit the processMax argument in the /MP option, the
+# compiler obtains the number of effective processors from the
+# operating system, and then creates one process per effective
+# processor"
+# https://blog.kitware.com/cmake-building-with-all-your-cores/
+# https://docs.microsoft.com/en-us/cpp/build/reference/mp-build-with-multiple-processes
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
+endif()
+
+#set(ENABLE_DCMTK ON)
+
+set(ENABLE_SDL OFF CACHE BOOL "Target SDL Native application")
+set(ENABLE_QT OFF CACHE BOOL "Target Qt Native application")
+set(ENABLE_WASM OFF CACHE BOOL "Target WASM application")
+
+if (ENABLE_WASM)
+  #####################################################################
+  ## Configuration of the Emscripten compiler for WebAssembly target
+  #####################################################################
+
+  set(WASM_FLAGS "-s WASM=1")
+  set(WASM_FLAGS "${WASM_FLAGS} -s STRICT=1") # drops support for all deprecated build options
+  set(WASM_FLAGS "${WASM_FLAGS} -s FILESYSTEM=1") # if we don't include it, gen_uuid.c fails to build because srand, getpid(), ... are not defined
+  set(WASM_FLAGS "${WASM_FLAGS} -s DISABLE_EXCEPTION_CATCHING=0") # actually enable exception catching 
+  set(WASM_FLAGS "${WASM_FLAGS} -s ERROR_ON_MISSING_LIBRARIES=1")
+  
+  if (CMAKE_BUILD_TYPE MATCHES DEBUG)
+    set(WASM_FLAGS "${WASM_FLAGS} -g4") # generate debug information
+    set(WASM_FLAGS "${WASM_FLAGS} -s ASSERTIONS=2") # more runtime checks
+  else()
+    set(WASM_FLAGS "${WASM_FLAGS} -Os") # optimize for web (speed and size)
+  endif()
+
+  set(WASM_MODULE_NAME "StoneFrameworkModule" CACHE STRING "Name of the WebAssembly module")
+
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
+
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${WASM_FLAGS}")  # not always clear which flags are for the compiler and which one are for the linker -> pass them all to the linker too
+  # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Applications/Samples/samples-library.js")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmWebService.js")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmDelayedCallExecutor.js")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/default-library.js")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXPORT_NAME='\"${WASM_MODULE_NAME}\"'")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s TOTAL_MEMORY=536870912")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s TOTAL_STACK=128000000")
+
+  add_definitions(-DORTHANC_ENABLE_WASM=1)
+  set(ORTHANC_SANDBOXED ON)
+
+elseif (ENABLE_QT OR ENABLE_SDL)
+
+  set(ENABLE_NATIVE ON)
+  set(ORTHANC_SANDBOXED OFF)
+  set(ENABLE_CRYPTO_OPTIONS ON)
+  set(ENABLE_GOOGLE_TEST ON)
+  set(ENABLE_WEB_CLIENT ON)
+
+else()
+  set(ENABLE_NATIVE ON)
+  set(ENABLE_OPENGL OFF)
+  
+endif()
+
+
+#####################################################################
+## Configuration for Orthanc
+#####################################################################
+
+# include(../../Resources/CMake/Version.cmake)
+
+if (ORTHANC_STONE_VERSION STREQUAL "mainline")
+  set(ORTHANC_FRAMEWORK_VERSION "mainline")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
+else()
+  set(ORTHANC_FRAMEWORK_VERSION "1.4.1")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
+endif()
+
+set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
+set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
+set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
+
+add_definitions(
+  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
+  )
+
+
+#####################################################################
+## Build a static library containing the Orthanc Stone framework
+#####################################################################
+
+
+LIST(APPEND ORTHANC_BOOST_COMPONENTS program_options)
+
+include(../../../Resources/CMake/OrthancStoneConfiguration.cmake)
+
+add_library(OrthancStone STATIC
+  ${ORTHANC_STONE_SOURCES}
+  )
+
+#####################################################################
+## Build all the sample applications
+#####################################################################
+
+include_directories(${ORTHANC_STONE_ROOT})
+
+# files common to all samples
+list(APPEND SAMPLE_APPLICATIONS_SOURCES
+  ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SampleInteractor.h
+  ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SampleApplicationBase.h
+  )
+
+if (ENABLE_QT)
+  list(APPEND SAMPLE_APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleQtApplicationRunner.h
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindow.cpp
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.cpp
+    )
+
+  ORTHANC_QT_WRAP_UI(SAMPLE_APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindow.ui
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.ui
+    )
+
+  ORTHANC_QT_WRAP_CPP(SAMPLE_APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Applications/Qt/QCairoWidget.h
+    ${ORTHANC_STONE_ROOT}/Applications/Qt/QStoneMainWindow.h
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindow.h
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.h
+    )
+endif()
+
+if (ENABLE_NATIVE)
+  list(APPEND SAMPLE_APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SampleMainNative.cpp
+    )
+
+elseif (ENABLE_WASM)
+
+  list(APPEND SAMPLE_APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SampleMainWasm.cpp
+    ${STONE_WASM_SOURCES}
+    )
+endif()
+
+
+macro(BuildSingleFileSample Target Header Sample)
+  add_executable(${Target}
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/${Header}
+    ${SAMPLE_APPLICATIONS_SOURCES}
+    )
+  set_target_properties(${Target} PROPERTIES COMPILE_DEFINITIONS ORTHANC_STONE_SAMPLE=${Sample})
+  target_link_libraries(${Target} OrthancStone)
+endmacro()
+
+
+if (ENABLE_SDL)
+  #BuildSingleFileSample(OrthancStoneEmpty EmptyApplication.h 1)
+  #BuildSingleFileSample(OrthancStoneTestPattern TestPatternApplication.h 2)
+  BuildSingleFileSample(OrthancStoneSingleFrame SingleFrameApplication.h 3)
+  #BuildSingleFileSample(OrthancStoneSingleVolume SingleVolumeApplication.h 4)
+  #BuildSingleFileSample(OrthancStoneBasicPetCtFusion 5)
+  #BuildSingleFileSample(OrthancStoneSynchronizedSeries 6)
+  #BuildSingleFileSample(OrthancStoneLayoutPetCtFusion 7)
+  BuildSingleFileSample(OrthancStoneSimpleViewerSingleFile SimpleViewerApplicationSingleFile.h 8)  # we keep that one just as a sample before we convert another sample to this pattern
+  BuildSingleFileSample(OrthancStoneSingleFrameEditor SingleFrameEditorApplication.h 9)
+endif()
+  
+##### SimpleViewer sample (Qt and WASM only) #######
+
+if (ENABLE_QT OR ENABLE_WASM)
+
+    if (ENABLE_QT)
+      list(APPEND SIMPLE_VIEWER_APPLICATION_SOURCES
+        ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.cpp
+        ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.ui
+        ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Qt/mainQt.cpp
+        )
+
+      ORTHANC_QT_WRAP_UI(SIMPLE_VIEWER_APPLICATION_SOURCES
+        ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.ui
+        )
+
+      ORTHANC_QT_WRAP_CPP(SIMPLE_VIEWER_APPLICATION_SOURCES
+        ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.h
+        )
+
+elseif (ENABLE_WASM)
+        list(APPEND SIMPLE_VIEWER_APPLICATION_SOURCES
+            ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Wasm/mainWasm.cpp
+            ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.cpp
+            ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.h
+            ${STONE_WASM_SOURCES}
+          )
+    endif()
+
+    add_executable(OrthancStoneSimpleViewer
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/AppStatus.h
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.cpp
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.h
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.cpp
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.h
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.cpp
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.h
+      ${SIMPLE_VIEWER_APPLICATION_SOURCES}
+      )
+    target_link_libraries(OrthancStoneSimpleViewer OrthancStone)
+
+    BuildSingleFileSample(OrthancStoneSingleFrameEditor SingleFrameEditorApplication.h 9)
+endif()
+
+#####################################################################
+## Build the unit tests
+#####################################################################
+
+if (ENABLE_NATIVE)
+  add_executable(UnitTests
+    ${GOOGLE_TEST_SOURCES}
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/GenericToolboxTests.cpp
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/ImageToolboxTests.cpp
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/PixelTestPatternsTests.cpp
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestCommands.cpp
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestMessageBroker.cpp
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestStrategy.cpp
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestStructureSet.cpp
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/UnitTestsMain.cpp
+    )
+
+  target_link_libraries(UnitTests OrthancStone)
+
+  add_custom_command(
+    TARGET UnitTests
+    POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E copy
+      "${ORTHANC_STONE_ROOT}/UnitTestsSources/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json" 
+      "$<TARGET_FILE_DIR:UnitTests>/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json"
+    )
+
+endif()
+
+#####################################################################
+## Generate the documentation if Doxygen is present
+#####################################################################
+
+find_package(Doxygen)
+if (DOXYGEN_FOUND)
+  configure_file(
+    ${ORTHANC_STONE_ROOT}/Resources/OrthancStone.doxygen
+    ${CMAKE_CURRENT_BINARY_DIR}/OrthancStone.doxygen
+    @ONLY)
+
+  add_custom_target(doc
+    ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/OrthancStone.doxygen
+    COMMENT "Generating documentation with Doxygen" VERBATIM
+    )
+else()
+  message("Doxygen not found. The documentation will not be built.")
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/CMakeLists.txt.old	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,248 @@
+# Usage: see README file
+
+cmake_minimum_required(VERSION 2.8.3)
+
+# Automatically link Qt executables to qtmain target on Windows
+# ("OLD" == do not link)
+if(POLICY CMP0020)
+  cmake_policy(SET CMP0020 OLD)
+endif()
+
+# Only interpret if() arguments as variables or keywords when unquoted.
+# NEW = do NOT dereference *quoted* variables
+if(POLICY CMP0054)
+  cmake_policy(SET CMP0054 NEW)
+endif()
+
+project(OrthancStone)
+
+include(../../Resources/CMake/OrthancStoneParameters.cmake)
+
+#set(ENABLE_DCMTK ON)
+
+set(ENABLE_SDL OFF CACHE BOOL "Target SDL Native application")
+set(ENABLE_QT OFF CACHE BOOL "Target Qt Native application")
+set(ENABLE_WASM OFF CACHE BOOL "Target WASM application")
+
+# TODO: replace or compute STONE_SOURCES_DIR from CMAKE_CURRENT_LIST_FILE
+
+if (ENABLE_WASM)
+  #####################################################################
+  ## Configuration of the Emscripten compiler for WebAssembly target
+  #####################################################################
+
+  set(WASM_FLAGS "-s WASM=1 -O0 -g0")
+  message("*****************************************************************************")
+  message("WARNING: optimizations are disabled in emcc!!! Enable them for production use")
+  message("*****************************************************************************")
+  set(WASM_MODULE_NAME "StoneFrameworkModule" CACHE STRING "Name of the WebAssembly module")
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmWebService.js --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmDelayedCallExecutor.js --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/default-library.js  -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
+
+  # Handling of memory
+  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1")  # Resize
+  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s TOTAL_MEMORY=536870912")  # 512MB
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXPORT_NAME='\"${WASM_MODULE_NAME}\"' -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=536870912 -s TOTAL_STACK=128000000")  # 512MB + resize
+  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=1073741824")  # 1GB + resize
+
+  # To debug exceptions
+  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DEMANGLE_SUPPORT=1 -s ASSERTIONS=2")
+
+  add_definitions(-DORTHANC_ENABLE_WASM=1)
+  set(ORTHANC_SANDBOXED ON)
+
+elseif (ENABLE_QT OR ENABLE_SDL)
+
+  set(ENABLE_NATIVE ON)
+  set(ORTHANC_SANDBOXED OFF)
+  set(ENABLE_CRYPTO_OPTIONS ON)
+  set(ENABLE_GOOGLE_TEST ON)
+  set(ENABLE_WEB_CLIENT ON)
+
+endif()
+
+#####################################################################
+## Configuration for Orthanc
+#####################################################################
+
+# include(../../Resources/CMake/Version.cmake)
+
+if (ORTHANC_STONE_VERSION STREQUAL "mainline")
+  set(ORTHANC_FRAMEWORK_VERSION "mainline")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
+else()
+  set(ORTHANC_FRAMEWORK_VERSION "1.4.1")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
+endif()
+
+set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
+set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
+set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
+
+#####################################################################
+## Build a static library containing the Orthanc Stone framework
+#####################################################################
+
+LIST(APPEND ORTHANC_BOOST_COMPONENTS program_options)
+
+include(../../Resources/CMake/OrthancStoneConfiguration.cmake)
+
+add_library(OrthancStone STATIC
+  ${ORTHANC_STONE_SOURCES}
+  )
+
+#####################################################################
+## Build all the sample applications
+#####################################################################
+
+include_directories(${ORTHANC_STONE_ROOT})
+
+# files common to all samples
+list(APPEND SAMPLE_APPLICATIONS_SOURCES
+  ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleInteractor.h
+  ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleApplicationBase.h
+  )
+
+if (ENABLE_QT)
+  list(APPEND SAMPLE_APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleQtApplicationRunner.h
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindow.cpp
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindowWithButtons.cpp
+    )
+
+  ORTHANC_QT_WRAP_UI(SAMPLE_APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindow.ui
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindowWithButtons.ui
+    )
+
+  ORTHANC_QT_WRAP_CPP(SAMPLE_APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Applications/Qt/QCairoWidget.h
+    ${ORTHANC_STONE_ROOT}/Applications/Qt/QStoneMainWindow.h
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindow.h
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindowWithButtons.h
+    )
+endif()
+
+if (ENABLE_NATIVE)
+  list(APPEND SAMPLE_APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleMainNative.cpp
+    )
+
+elseif (ENABLE_WASM)
+
+  list(APPEND SAMPLE_APPLICATIONS_SOURCES
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleMainWasm.cpp
+    ${STONE_WASM_SOURCES}
+    )
+endif()
+
+
+macro(BuildSingleFileSample Target Header Sample)
+  add_executable(${Target}
+    ${ORTHANC_STONE_ROOT}/Applications/Samples/${Header}
+    ${SAMPLE_APPLICATIONS_SOURCES}
+    )
+  set_target_properties(${Target} PROPERTIES COMPILE_DEFINITIONS ORTHANC_STONE_SAMPLE=${Sample})
+  target_link_libraries(${Target} OrthancStone)
+  
+  if (ENABLE_QT AND (CMAKE_SYSTEM_NAME STREQUAL "Windows"))
+    message("(ENABLE_QT and (CMAKE_SYSTEM_NAME matches \"Windows\")) is true")
+    add_custom_command(
+      TARGET ${Target} POST_BUILD
+      COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Core> $<TARGET_FILE_DIR:${Target}>
+      COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Widgets> $<TARGET_FILE_DIR:${Target}>
+      COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Gui> $<TARGET_FILE_DIR:${Target}>
+    )
+  endif()
+endmacro()
+
+#BuildSingleFileSample(OrthancStoneEmpty EmptyApplication.h 1)
+#BuildSingleFileSample(OrthancStoneTestPattern TestPatternApplication.h 2)
+BuildSingleFileSample(OrthancStoneSingleFrame SingleFrameApplication.h 3)
+#BuildSingleFileSample(OrthancStoneSingleVolume SingleVolumeApplication.h 4)
+#BuildSingleFileSample(OrthancStoneBasicPetCtFusion 5)
+#BuildSingleFileSample(OrthancStoneSynchronizedSeries 6)
+#BuildSingleFileSample(OrthancStoneLayoutPetCtFusion 7)
+BuildSingleFileSample(OrthancStoneSimpleViewerSingleFile SimpleViewerApplicationSingleFile.h 8)  # we keep that one just as a sample before we convert another sample to this pattern
+BuildSingleFileSample(OrthancStoneSingleFrameEditor SingleFrameEditorApplication.h 9)
+
+##### SimpleViewer sample (Qt and WASM only) #######
+
+if (ENABLE_QT OR ENABLE_WASM)
+
+      # GenerateCodeFromFlatBufferSchema("${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/ApplicationCommands.fbs")
+
+      list(APPEND SIMPLE_VIEWER_APPLICATION_SOURCES ${FLATC_AUTOGENERATED_SOURCES})
+      message(STATUS "SIMPLE_VIEWER_APPLICATION_SOURCES = ${SIMPLE_VIEWER_APPLICATION_SOURCES}")
+      message(STATUS "FLATC_AUTOGENERATED_SOURCES = ${FLATC_AUTOGENERATED_SOURCES}")
+
+    if (ENABLE_QT)
+      list(APPEND SIMPLE_VIEWER_APPLICATION_SOURCES
+        ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Qt/SimpleViewerMainWindow.cpp
+        ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Qt/SimpleViewerMainWindow.ui
+        ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Qt/mainQt.cpp
+        )
+
+      ORTHANC_QT_WRAP_UI(SIMPLE_VIEWER_APPLICATION_SOURCES
+        ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Qt/SimpleViewerMainWindow.ui
+        )
+
+      ORTHANC_QT_WRAP_CPP(SIMPLE_VIEWER_APPLICATION_SOURCES
+        ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Qt/SimpleViewerMainWindow.h
+        )
+
+elseif (ENABLE_WASM)
+        list(APPEND SIMPLE_VIEWER_APPLICATION_SOURCES
+            ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Wasm/mainWasm.cpp
+            ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.cpp
+            ${STONE_WASM_SOURCES}
+          )
+    endif()
+
+    add_executable(OrthancStoneSimpleViewer
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/SimpleViewerApplication.cpp
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/ThumbnailInteractor.cpp
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/MainWidgetInteractor.cpp
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/AppStatus.h
+      ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Messages.h
+      ${SIMPLE_VIEWER_APPLICATION_SOURCES}
+      )
+    target_link_libraries(OrthancStoneSimpleViewer OrthancStone)
+
+endif()
+
+#####################################################################
+## Build the unit tests
+#####################################################################
+
+if (ENABLE_NATIVE)
+  add_executable(UnitTests
+    ${GOOGLE_TEST_SOURCES}
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestCommands.cpp
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestExceptions.cpp
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestMessageBroker.cpp
+    ${ORTHANC_STONE_ROOT}/UnitTestsSources/UnitTestsMain.cpp
+    )
+
+  target_link_libraries(UnitTests OrthancStone)
+endif()
+
+#####################################################################
+## Generate the documentation if Doxygen is present
+#####################################################################
+
+find_package(Doxygen)
+if (DOXYGEN_FOUND)
+  configure_file(
+    ${ORTHANC_STONE_ROOT}/Resources/OrthancStone.doxygen
+    ${CMAKE_CURRENT_BINARY_DIR}/OrthancStone.doxygen
+    @ONLY)
+
+  add_custom_target(doc
+    ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/OrthancStone.doxygen
+    COMMENT "Generating documentation with Doxygen" VERBATIM
+    )
+else()
+  message("Doxygen not found. The documentation will not be built.")
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/EmptyApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "SampleApplicationBase.h"
+
+#include "../../../Framework/Widgets/EmptyWidget.h"
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class EmptyApplication : public SampleApplicationBase
+    {
+    public:
+      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
+      {
+        boost::program_options::options_description generic("Sample options");
+        generic.add_options()
+          ("red", boost::program_options::value<int>()->default_value(255), "Background color: red channel")
+          ("green", boost::program_options::value<int>()->default_value(0), "Background color: green channel")
+          ("blue", boost::program_options::value<int>()->default_value(0), "Background color: blue channel")
+          ;
+
+        options.add(generic);    
+      }
+
+      virtual void Initialize(IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters)
+      {
+        int red = parameters["red"].as<int>();
+        int green = parameters["green"].as<int>();
+        int blue = parameters["blue"].as<int>();
+
+        context_->SetCentralWidget(new EmptyWidget(red, green, blue));
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/LayoutPetCtFusionApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,398 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "SampleInteractor.h"
+
+#include "../../../Framework/Layers/ReferenceLineFactory.h"
+#include "../../../Framework/Layers/DicomStructureSetSlicer.h"
+#include "../../../Framework/Widgets/LayoutWidget.h"
+
+#include <Core/Logging.h>
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class LayoutPetCtFusionApplication : 
+      public SampleApplicationBase,
+      public LayeredSceneWidget::ISliceObserver,
+      public WorldSceneWidget::IWorldObserver
+    {
+    private:
+      class Interactor : public SampleInteractor
+      {
+      private:
+        LayoutPetCtFusionApplication& that_;
+
+      public:
+        Interactor(LayoutPetCtFusionApplication& that,
+                   VolumeImage& volume,
+                   VolumeProjection projection, 
+                   bool reverse) :
+          SampleInteractor(volume, projection, reverse),
+          that_(that)
+        {
+        }
+
+        virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
+                                                            const SliceGeometry& slice,
+                                                            const ViewportGeometry& view,
+                                                            MouseButton button,
+                                                            double x,
+                                                            double y,
+                                                            IStatusBar* statusBar)
+        {
+          if (button == MouseButton_Left)
+          {
+            // Center the sibling views over the clicked point
+            Vector p = slice.MapSliceToWorldCoordinates(x, y);
+
+            if (statusBar != NULL)
+            {
+              char buf[64];
+              sprintf(buf, "Click on coordinates (%.02f,%.02f,%.02f) in cm", p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
+              statusBar->SetMessage(buf);
+            }
+
+            that_.interactorAxial_->LookupSliceContainingPoint(*that_.ctAxial_, p);
+            that_.interactorCoronal_->LookupSliceContainingPoint(*that_.ctCoronal_, p);
+            that_.interactorSagittal_->LookupSliceContainingPoint(*that_.ctSagittal_, p);
+          }
+
+          return NULL;
+        }
+
+        virtual void KeyPressed(WorldSceneWidget& widget,
+                                char key,
+                                KeyboardModifiers modifiers,
+                                IStatusBar* statusBar)
+        {
+          if (key == 's')
+          {
+            that_.FitContent();
+          }
+        }
+      };
+
+      bool                 processingEvent_;
+      Interactor*          interactorAxial_;
+      Interactor*          interactorCoronal_;
+      Interactor*          interactorSagittal_;
+      LayeredSceneWidget*  ctAxial_;
+      LayeredSceneWidget*  ctCoronal_;
+      LayeredSceneWidget*  ctSagittal_;
+      LayeredSceneWidget*  petAxial_;
+      LayeredSceneWidget*  petCoronal_;
+      LayeredSceneWidget*  petSagittal_;
+      LayeredSceneWidget*  fusionAxial_;
+      LayeredSceneWidget*  fusionCoronal_;
+      LayeredSceneWidget*  fusionSagittal_;
+
+
+      void FitContent()
+      {
+        petAxial_->FitContent();
+        petCoronal_->FitContent();
+        petSagittal_->FitContent();
+      }
+
+
+      void AddLayer(LayeredSceneWidget& widget,
+                    VolumeImage& volume,
+                    bool isCt)
+      {
+        size_t layer;
+        widget.AddLayer(layer, new VolumeImage::LayerFactory(volume));
+
+        if (isCt)
+        {
+          RenderStyle style; 
+          style.windowing_ = ImageWindowing_Bone;
+          widget.SetLayerStyle(layer, style);
+        }
+        else
+        {
+          RenderStyle style; 
+          style.applyLut_ = true;
+          style.alpha_ = (layer == 0 ? 1.0f : 0.5f);
+          widget.SetLayerStyle(layer, style);
+        }
+      }
+
+
+      void ConnectSiblingLocations(LayeredSceneWidget& axial,
+                                   LayeredSceneWidget& coronal,
+                                   LayeredSceneWidget& sagittal)
+      {
+        ReferenceLineFactory::Configure(axial, coronal);
+        ReferenceLineFactory::Configure(axial, sagittal);
+        ReferenceLineFactory::Configure(coronal, sagittal);
+      }
+
+
+      void SynchronizeView(const WorldSceneWidget& source,
+                           const ViewportGeometry& view,
+                           LayeredSceneWidget& widget1,
+                           LayeredSceneWidget& widget2,
+                           LayeredSceneWidget& widget3)
+      {
+        if (&source == &widget1 ||
+            &source == &widget2 ||
+            &source == &widget3)
+        {
+          if (&source != &widget1)
+          {
+            widget1.SetView(view);
+          }
+
+          if (&source != &widget2)
+          {
+            widget2.SetView(view);
+          }
+
+          if (&source != &widget3)
+          {
+            widget3.SetView(view);
+          }
+        }
+      }
+
+
+      void SynchronizeSlice(const LayeredSceneWidget& source,
+                            const SliceGeometry& slice,
+                            LayeredSceneWidget& widget1,
+                            LayeredSceneWidget& widget2,
+                            LayeredSceneWidget& widget3)
+      {
+        if (&source == &widget1 ||
+            &source == &widget2 ||
+            &source == &widget3)
+        {
+          if (&source != &widget1)
+          {
+            widget1.SetSlice(slice);
+          }
+
+          if (&source != &widget2)
+          {
+            widget2.SetSlice(slice);
+          }
+
+          if (&source != &widget3)
+          {
+            widget3.SetSlice(slice);
+          }
+        }
+      }
+
+
+      LayeredSceneWidget* CreateWidget()
+      {
+        std::unique_ptr<LayeredSceneWidget> widget(new LayeredSceneWidget);
+        widget->Register(dynamic_cast<WorldSceneWidget::IWorldObserver&>(*this));
+        widget->Register(dynamic_cast<LayeredSceneWidget::ISliceObserver&>(*this));
+        return widget.release();
+      }
+
+
+      void CreateLayout(BasicApplicationContext& context)
+      {
+        std::unique_ptr<OrthancStone::LayoutWidget> layout(new OrthancStone::LayoutWidget);
+        layout->SetBackgroundCleared(true);
+        //layout->SetBackgroundColor(255,0,0);
+        layout->SetPadding(5);
+
+        OrthancStone::LayoutWidget& layoutA = dynamic_cast<OrthancStone::LayoutWidget&>
+          (layout->AddWidget(new OrthancStone::LayoutWidget));
+        layoutA.SetPadding(0, 0, 0, 0, 5);
+        layoutA.SetVertical();
+        petAxial_ = &dynamic_cast<LayeredSceneWidget&>(layoutA.AddWidget(CreateWidget()));
+        OrthancStone::LayoutWidget& layoutA2 = dynamic_cast<OrthancStone::LayoutWidget&>
+          (layoutA.AddWidget(new OrthancStone::LayoutWidget));
+        layoutA2.SetPadding(0, 0, 0, 0, 5);
+        petSagittal_ = &dynamic_cast<LayeredSceneWidget&>(layoutA2.AddWidget(CreateWidget()));
+        petCoronal_ = &dynamic_cast<LayeredSceneWidget&>(layoutA2.AddWidget(CreateWidget()));
+
+        OrthancStone::LayoutWidget& layoutB = dynamic_cast<OrthancStone::LayoutWidget&>
+          (layout->AddWidget(new OrthancStone::LayoutWidget));
+        layoutB.SetPadding(0, 0, 0, 0, 5);
+        layoutB.SetVertical();
+        ctAxial_ = &dynamic_cast<LayeredSceneWidget&>(layoutB.AddWidget(CreateWidget()));
+        OrthancStone::LayoutWidget& layoutB2 = dynamic_cast<OrthancStone::LayoutWidget&>
+          (layoutB.AddWidget(new OrthancStone::LayoutWidget));
+        layoutB2.SetPadding(0, 0, 0, 0, 5);
+        ctSagittal_ = &dynamic_cast<LayeredSceneWidget&>(layoutB2.AddWidget(CreateWidget()));
+        ctCoronal_ = &dynamic_cast<LayeredSceneWidget&>(layoutB2.AddWidget(CreateWidget()));
+
+        OrthancStone::LayoutWidget& layoutC = dynamic_cast<OrthancStone::LayoutWidget&>
+          (layout->AddWidget(new OrthancStone::LayoutWidget));
+        layoutC.SetPadding(0, 0, 0, 0, 5);
+        layoutC.SetVertical();
+        fusionAxial_ = &dynamic_cast<LayeredSceneWidget&>(layoutC.AddWidget(CreateWidget()));
+        OrthancStone::LayoutWidget& layoutC2 = dynamic_cast<OrthancStone::LayoutWidget&>
+          (layoutC.AddWidget(new OrthancStone::LayoutWidget));
+        layoutC2.SetPadding(0, 0, 0, 0, 5);
+        fusionSagittal_ = &dynamic_cast<LayeredSceneWidget&>(layoutC2.AddWidget(CreateWidget()));
+        fusionCoronal_ = &dynamic_cast<LayeredSceneWidget&>(layoutC2.AddWidget(CreateWidget()));
+  
+        context.SetCentralWidget(layout.release());
+      }
+
+
+    public:
+      virtual void DeclareCommandLineOptions(boost::program_options::options_description& options)
+      {
+        boost::program_options::options_description generic("Sample options");
+        generic.add_options()
+          ("ct", boost::program_options::value<std::string>(), 
+           "Orthanc ID of the CT series")
+          ("pet", boost::program_options::value<std::string>(), 
+           "Orthanc ID of the PET series")
+          ("rt", boost::program_options::value<std::string>(), 
+           "Orthanc ID of the DICOM RT-STRUCT series (optional)")
+          ("threads", boost::program_options::value<unsigned int>()->default_value(3), 
+           "Number of download threads for the CT series")
+          ;
+
+        options.add(generic);    
+      }
+
+      virtual void Initialize(BasicApplicationContext& context,
+                              IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters)
+      {
+        using namespace OrthancStone;
+
+        processingEvent_ = true;
+
+        if (parameters.count("ct") != 1 ||
+            parameters.count("pet") != 1)
+        {
+          LOG(ERROR) << "The series ID is missing";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+
+        std::string ct = parameters["ct"].as<std::string>();
+        std::string pet = parameters["pet"].as<std::string>();
+        unsigned int threads = parameters["threads"].as<unsigned int>();
+
+        VolumeImage& ctVolume = context.AddSeriesVolume(ct, true /* progressive download */, threads);
+        VolumeImage& petVolume = context.AddSeriesVolume(pet, true /* progressive download */, 1);
+
+        // Take the PET volume as the reference for the slices
+        interactorAxial_ = &dynamic_cast<Interactor&>
+          (context.AddInteractor(new Interactor(*this, petVolume, VolumeProjection_Axial, false)));
+        interactorCoronal_ = &dynamic_cast<Interactor&>
+          (context.AddInteractor(new Interactor(*this, petVolume, VolumeProjection_Coronal, false)));
+        interactorSagittal_ = &dynamic_cast<Interactor&>
+          (context.AddInteractor(new Interactor(*this, petVolume, VolumeProjection_Sagittal, true)));
+
+        CreateLayout(context);
+
+        AddLayer(*ctAxial_, ctVolume, true);
+        AddLayer(*ctCoronal_, ctVolume, true);
+        AddLayer(*ctSagittal_, ctVolume, true);
+
+        AddLayer(*petAxial_, petVolume, false);
+        AddLayer(*petCoronal_, petVolume, false);
+        AddLayer(*petSagittal_, petVolume, false);
+
+        AddLayer(*fusionAxial_, ctVolume, true);
+        AddLayer(*fusionAxial_, petVolume, false);
+        AddLayer(*fusionCoronal_, ctVolume, true);
+        AddLayer(*fusionCoronal_, petVolume, false);
+        AddLayer(*fusionSagittal_, ctVolume, true);
+        AddLayer(*fusionSagittal_, petVolume, false);
+
+        if (parameters.count("rt") == 1)
+        {
+          DicomStructureSet& rtStruct = context.AddStructureSet(parameters["rt"].as<std::string>());
+
+          Vector p = rtStruct.GetStructureCenter(0);
+          interactorAxial_->GetCursor().LookupSliceContainingPoint(p);
+
+          ctAxial_->AddLayer(new DicomStructureSetSlicer(rtStruct));
+          petAxial_->AddLayer(new DicomStructureSetSlicer(rtStruct));
+          fusionAxial_->AddLayer(new DicomStructureSetSlicer(rtStruct));
+        }        
+
+        ConnectSiblingLocations(*ctAxial_, *ctCoronal_, *ctSagittal_); 
+        ConnectSiblingLocations(*petAxial_, *petCoronal_, *petSagittal_); 
+        ConnectSiblingLocations(*fusionAxial_, *fusionCoronal_, *fusionSagittal_); 
+
+        interactorAxial_->AddWidget(*ctAxial_);
+        interactorAxial_->AddWidget(*petAxial_);
+        interactorAxial_->AddWidget(*fusionAxial_);
+        
+        interactorCoronal_->AddWidget(*ctCoronal_);
+        interactorCoronal_->AddWidget(*petCoronal_);
+        interactorCoronal_->AddWidget(*fusionCoronal_);
+        
+        interactorSagittal_->AddWidget(*ctSagittal_);
+        interactorSagittal_->AddWidget(*petSagittal_);
+        interactorSagittal_->AddWidget(*fusionSagittal_);
+
+        processingEvent_ = false;
+
+        statusBar.SetMessage("Use the key \"t\" to toggle the fullscreen mode");
+        statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
+      }
+
+      virtual void NotifySizeChange(const WorldSceneWidget& source,
+                                    ViewportGeometry& view)
+      {
+        view.FitContent();
+      }
+
+      virtual void NotifyViewChange(const WorldSceneWidget& source,
+                                    const ViewportGeometry& view)
+      {
+        if (!processingEvent_)  // Avoid reentrant calls
+        {
+          processingEvent_ = true;
+
+          SynchronizeView(source, view, *ctAxial_, *petAxial_, *fusionAxial_);
+          SynchronizeView(source, view, *ctCoronal_, *petCoronal_, *fusionCoronal_);
+          SynchronizeView(source, view, *ctSagittal_, *petSagittal_, *fusionSagittal_);
+          
+          processingEvent_ = false;
+        }
+      }
+
+      virtual void NotifySliceContentChange(const LayeredSceneWidget& source,
+                                     const SliceGeometry& slice)
+      {
+        if (!processingEvent_)  // Avoid reentrant calls
+        {
+          processingEvent_ = true;
+
+          SynchronizeSlice(source, slice, *ctAxial_, *petAxial_, *fusionAxial_);
+          SynchronizeSlice(source, slice, *ctCoronal_, *petCoronal_, *fusionCoronal_);
+          SynchronizeSlice(source, slice, *ctSagittal_, *petSagittal_, *fusionSagittal_);
+          
+          processingEvent_ = false;
+        }
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,53 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "SampleMainWindow.h"
+
+/**
+ * Don't use "ui_MainWindow.h" instead of <ui_MainWindow.h> below, as
+ * this makes CMake unable to detect when the UI file changes.
+ **/
+#include <ui_SampleMainWindow.h>
+#include "../../../Applications/Samples/SampleApplicationBase.h"
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+
+    SampleMainWindow::SampleMainWindow(
+      OrthancStone::NativeStoneApplicationContext& context,
+      OrthancStone::Samples::SampleSingleCanvasApplicationBase& stoneSampleApplication,
+      QWidget *parent) :
+      QStoneMainWindow(context, parent),
+      ui_(new Ui::SampleMainWindow),
+      stoneSampleApplication_(stoneSampleApplication)
+    {
+      ui_->setupUi(this);
+      SetCentralStoneWidget(*ui_->cairoCentralWidget);
+    }
+
+    SampleMainWindow::~SampleMainWindow()
+    {
+      delete ui_;
+    }
+
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,50 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include "../../../Qt/QCairoWidget.h"
+#include "../../../Qt/QStoneMainWindow.h"
+
+namespace Ui 
+{
+  class SampleMainWindow;
+}
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+
+    class SampleSingleCanvasApplicationBase;
+
+    class SampleMainWindow : public QStoneMainWindow
+    {
+      Q_OBJECT
+
+    private:
+      Ui::SampleMainWindow*   ui_;
+      SampleSingleCanvasApplicationBase&  stoneSampleApplication_;
+
+    public:
+      explicit SampleMainWindow(OrthancStone::NativeStoneApplicationContext& context, SampleSingleCanvasApplicationBase& stoneSampleApplication, QWidget *parent = 0);
+      ~SampleMainWindow();
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.ui	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SampleMainWindow</class>
+ <widget class="QMainWindow" name="SampleMainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>903</width>
+    <height>634</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>500</width>
+    <height>300</height>
+   </size>
+  </property>
+  <property name="baseSize">
+   <size>
+    <width>500</width>
+    <height>300</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Stone of Orthanc</string>
+  </property>
+  <property name="layoutDirection">
+   <enum>Qt::LeftToRight</enum>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="layoutDirection">
+    <enum>Qt::LeftToRight</enum>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0">
+    <property name="sizeConstraint">
+     <enum>QLayout::SetDefaultConstraint</enum>
+    </property>
+    <item>
+     <widget class="QCairoWidget" name="cairoCentralWidget">
+      <property name="minimumSize">
+       <size>
+        <width>0</width>
+        <height>500</height>
+       </size>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>903</width>
+     <height>22</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuTest">
+    <property name="title">
+     <string>Test</string>
+    </property>
+   </widget>
+   <addaction name="menuTest"/>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QCairoWidget</class>
+   <extends>QGraphicsView</extends>
+   <header location="global">QCairoWidget.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,96 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "SampleMainWindow.h"
+
+/**
+ * Don't use "ui_MainWindow.h" instead of <ui_MainWindow.h> below, as
+ * this makes CMake unable to detect when the UI file changes.
+ **/
+#include <ui_SampleMainWindowWithButtons.h>
+#include "../../../Applications/Samples/SampleApplicationBase.h"
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+
+    SampleMainWindowWithButtons::SampleMainWindowWithButtons(
+      OrthancStone::NativeStoneApplicationContext& context,
+      OrthancStone::Samples::SampleSingleCanvasWithButtonsApplicationBase& stoneSampleApplication,
+      QWidget *parent) :
+      QStoneMainWindow(context, parent),
+      ui_(new Ui::SampleMainWindowWithButtons),
+      stoneSampleApplication_(stoneSampleApplication)
+    {
+      ui_->setupUi(this);
+      SetCentralStoneWidget(*ui_->cairoCentralWidget);
+
+#if QT_VERSION >= 0x050000
+      connect(ui_->toolButton1, &QToolButton::clicked, this, &SampleMainWindowWithButtons::tool1Clicked);
+      connect(ui_->toolButton2, &QToolButton::clicked, this, &SampleMainWindowWithButtons::tool2Clicked);
+      connect(ui_->pushButton1, &QPushButton::clicked, this, &SampleMainWindowWithButtons::pushButton1Clicked);
+      connect(ui_->pushButton1, &QPushButton::clicked, this, &SampleMainWindowWithButtons::pushButton2Clicked);
+#else
+      connect(ui_->toolButton1, SIGNAL(clicked()), this, SLOT(tool1Clicked()));
+      connect(ui_->toolButton2, SIGNAL(clicked()), this, SLOT(tool2Clicked()));
+      connect(ui_->pushButton1, SIGNAL(clicked()), this, SLOT(pushButton1Clicked()));
+      connect(ui_->pushButton1, SIGNAL(clicked()), this, SLOT(pushButton2Clicked()));
+#endif
+
+      std::string pushButton1Name;
+      std::string pushButton2Name;
+      std::string tool1Name;
+      std::string tool2Name;
+      stoneSampleApplication_.GetButtonNames(pushButton1Name, pushButton2Name, tool1Name, tool2Name);
+
+      ui_->toolButton1->setText(QString::fromStdString(tool1Name));
+      ui_->toolButton2->setText(QString::fromStdString(tool2Name));
+      ui_->pushButton1->setText(QString::fromStdString(pushButton1Name));
+      ui_->pushButton2->setText(QString::fromStdString(pushButton2Name));
+    }
+
+    SampleMainWindowWithButtons::~SampleMainWindowWithButtons()
+    {
+      delete ui_;
+    }
+
+    void SampleMainWindowWithButtons::tool1Clicked()
+    {
+      stoneSampleApplication_.OnTool1Clicked();
+    }
+
+    void SampleMainWindowWithButtons::tool2Clicked()
+    {
+      stoneSampleApplication_.OnTool2Clicked();
+    }
+
+    void SampleMainWindowWithButtons::pushButton1Clicked()
+    {
+      stoneSampleApplication_.OnPushButton1Clicked();
+    }
+
+    void SampleMainWindowWithButtons::pushButton2Clicked()
+    {
+      stoneSampleApplication_.OnPushButton2Clicked();
+    }
+
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,56 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include "../../../Qt/QCairoWidget.h"
+#include "../../../Qt/QStoneMainWindow.h"
+
+namespace Ui 
+{
+  class SampleMainWindowWithButtons;
+}
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+
+    class SampleSingleCanvasWithButtonsApplicationBase;
+
+    class SampleMainWindowWithButtons : public QStoneMainWindow
+    {
+      Q_OBJECT
+
+    private:
+      Ui::SampleMainWindowWithButtons*   ui_;
+      SampleSingleCanvasWithButtonsApplicationBase&  stoneSampleApplication_;
+
+    public:
+      explicit SampleMainWindowWithButtons(OrthancStone::NativeStoneApplicationContext& context, SampleSingleCanvasWithButtonsApplicationBase& stoneSampleApplication, QWidget *parent = 0);
+      ~SampleMainWindowWithButtons();
+
+    private slots:
+      void tool1Clicked();
+      void tool2Clicked();
+      void pushButton1Clicked();
+      void pushButton2Clicked();
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.ui	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SampleMainWindowWithButtons</class>
+ <widget class="QMainWindow" name="SampleMainWindowWithButtons">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>903</width>
+    <height>634</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>500</width>
+    <height>300</height>
+   </size>
+  </property>
+  <property name="baseSize">
+   <size>
+    <width>500</width>
+    <height>300</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Stone of Orthanc</string>
+  </property>
+  <property name="layoutDirection">
+   <enum>Qt::LeftToRight</enum>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="layoutDirection">
+    <enum>Qt::LeftToRight</enum>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0">
+    <property name="sizeConstraint">
+     <enum>QLayout::SetDefaultConstraint</enum>
+    </property>
+    <item>
+     <widget class="QCairoWidget" name="cairoCentralWidget">
+      <property name="minimumSize">
+       <size>
+        <width>0</width>
+        <height>500</height>
+       </size>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QGroupBox" name="horizontalGroupBox">
+      <property name="minimumSize">
+       <size>
+        <width>0</width>
+        <height>100</height>
+       </size>
+      </property>
+      <property name="maximumSize">
+       <size>
+        <width>16777215</width>
+        <height>100</height>
+       </size>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QToolButton" name="toolButton1">
+         <property name="text">
+          <string>tool1</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="toolButton2">
+         <property name="text">
+          <string>tool2</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="pushButton1">
+         <property name="text">
+          <string>action1</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="pushButton2">
+         <property name="text">
+          <string>action2</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>903</width>
+     <height>22</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuTest">
+    <property name="title">
+     <string>Test</string>
+    </property>
+   </widget>
+   <addaction name="menuTest"/>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QCairoWidget</class>
+   <extends>QGraphicsView</extends>
+   <header location="global">QCairoWidget.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleQtApplicationRunner.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,50 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../../Qt/QtStoneApplicationRunner.h"
+
+#if ORTHANC_ENABLE_QT != 1
+#error this file shall be included only with the ORTHANC_ENABLE_QT set to 1
+#endif
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class SampleQtApplicationRunner : public OrthancStone::QtStoneApplicationRunner
+    {
+    protected:
+      virtual void InitializeMainWindow(OrthancStone::NativeStoneApplicationContext& context)
+      {
+        window_.reset(application_.CreateQtMainWindow());
+      }
+    public:
+      SampleQtApplicationRunner(MessageBroker& broker,
+                                SampleApplicationBase& application)
+        : OrthancStone::QtStoneApplicationRunner(broker, application)
+      {
+      }
+
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleApplicationBase.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,133 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../../Applications/IStoneApplication.h"
+#include "../../../Framework/Deprecated/Widgets/WorldSceneWidget.h"
+
+#if ORTHANC_ENABLE_WASM==1
+#include "../../../Platforms/Wasm/WasmPlatformApplicationAdapter.h"
+#include "../../../Platforms/Wasm/Defaults.h"
+#endif
+
+#if ORTHANC_ENABLE_QT==1
+#include "Qt/SampleMainWindow.h"
+#include "Qt/SampleMainWindowWithButtons.h"
+#endif
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class SampleApplicationBase : public IStoneApplication
+    {
+    private:
+      boost::shared_ptr<Deprecated::IWidget>  mainWidget_;
+
+    public:
+      virtual void Initialize(StoneApplicationContext* context,
+                              Deprecated::IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters) ORTHANC_OVERRIDE
+      {
+      }
+
+      virtual std::string GetTitle() const ORTHANC_OVERRIDE
+      {
+        return "Stone of Orthanc - Sample";
+      }
+
+      /**
+       * In the basic samples, the commands are handled by the platform adapter and NOT
+       * by the application handler
+      */
+      virtual void HandleSerializedMessage(const char* data) ORTHANC_OVERRIDE {};
+
+
+      virtual void Finalize() ORTHANC_OVERRIDE {}
+
+      virtual void SetCentralWidget(boost::shared_ptr<Deprecated::IWidget> widget) ORTHANC_OVERRIDE
+      {
+        mainWidget_ = widget;
+      }
+
+      virtual boost::shared_ptr<Deprecated::IWidget> GetCentralWidget() ORTHANC_OVERRIDE
+      {
+        return mainWidget_;
+      }
+
+#if ORTHANC_ENABLE_WASM==1
+      // default implementations for a single canvas named "canvas" in the HTML and an emtpy WasmApplicationAdapter
+
+      virtual void InitializeWasm() ORTHANC_OVERRIDE
+      {
+        AttachWidgetToWasmViewport("canvas", mainWidget_);
+      }
+
+      virtual WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(MessageBroker& broker)
+      {
+        return new WasmPlatformApplicationAdapter(broker, *this);
+      }
+#endif
+
+    };
+
+    // this application actually works in Qt and WASM
+    class SampleSingleCanvasWithButtonsApplicationBase : public SampleApplicationBase
+    {
+public:
+      virtual void OnPushButton1Clicked() {}
+      virtual void OnPushButton2Clicked() {}
+      virtual void OnTool1Clicked() {}
+      virtual void OnTool2Clicked() {}
+
+      virtual void GetButtonNames(std::string& pushButton1,
+                                  std::string& pushButton2,
+                                  std::string& tool1,
+                                  std::string& tool2
+                                  ) {
+        pushButton1 = "action1";
+        pushButton2 = "action2";
+        tool1 = "tool1";
+        tool2 = "tool2";
+      }
+
+#if ORTHANC_ENABLE_QT==1
+      virtual QStoneMainWindow* CreateQtMainWindow() {
+        return new SampleMainWindowWithButtons(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
+      }
+#endif
+
+    };
+
+    // this application actually works in SDL and WASM
+    class SampleSingleCanvasApplicationBase : public SampleApplicationBase
+    {
+public:
+
+#if ORTHANC_ENABLE_QT==1
+      virtual QStoneMainWindow* CreateQtMainWindow() {
+        return new SampleMainWindow(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
+      }
+#endif
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleInteractor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,131 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "SampleApplicationBase.h"
+
+#include "../../../Framework/Widgets/LayeredSceneWidget.h"
+#include "../../../Framework/Widgets/IWorldSceneInteractor.h"
+#include "../../../Framework/Toolbox/ParallelSlicesCursor.h"
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    /**
+     * This is a basic mouse interactor for sample applications. It
+     * contains a set of parallel slices in the 3D space. The mouse
+     * wheel events make the widget change the slice that is
+     * displayed.
+     **/
+    class SampleInteractor : public IWorldSceneInteractor
+    {
+    private:
+      ParallelSlicesCursor   cursor_;
+
+    public:
+      SampleInteractor(VolumeImage& volume,
+                       VolumeProjection projection, 
+                       bool reverse)
+      {
+        std::unique_ptr<ParallelSlices> slices(volume.GetGeometry(projection, reverse));
+        cursor_.SetGeometry(*slices);
+      }
+
+      SampleInteractor(ISeriesLoader& series, 
+                       bool reverse)
+      {
+        if (reverse)
+        {
+          std::unique_ptr<ParallelSlices> slices(series.GetGeometry().Reverse());
+          cursor_.SetGeometry(*slices);
+        }
+        else
+        {
+          cursor_.SetGeometry(series.GetGeometry());
+        }
+      }
+
+      SampleInteractor(const ParallelSlices& slices)
+      {
+        cursor_.SetGeometry(slices);
+      }
+
+      ParallelSlicesCursor& GetCursor()
+      {
+        return cursor_;
+      }
+
+      void AddWidget(LayeredSceneWidget& widget)
+      {
+        widget.SetInteractor(*this);
+        widget.SetSlice(cursor_.GetCurrentSlice());
+      }
+
+      virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
+                                                          const ViewportGeometry& view,
+                                                          MouseButton button,
+                                                          double x,
+                                                          double y,
+                                                          IStatusBar* statusBar)
+      {
+        return NULL;
+      }
+
+      virtual void MouseOver(CairoContext& context,
+                             WorldSceneWidget& widget,
+                             const ViewportGeometry& view,
+                             double x,
+                             double y,
+                             IStatusBar* statusBar)
+      {
+      }
+
+      virtual void MouseWheel(WorldSceneWidget& widget,
+                              MouseWheelDirection direction,
+                              KeyboardModifiers modifiers,
+                              IStatusBar* statusBar)
+      {
+        if (cursor_.ApplyWheelEvent(direction, modifiers))
+        {
+          dynamic_cast<LayeredSceneWidget&>(widget).SetSlice(cursor_.GetCurrentSlice());
+        }
+      }
+
+      virtual void KeyPressed(WorldSceneWidget& widget,
+                              char key,
+                              KeyboardModifiers modifiers,
+                              IStatusBar* statusBar)
+      {
+      }
+
+      void LookupSliceContainingPoint(LayeredSceneWidget& widget,
+                                      const Vector& p)
+      {
+        if (cursor_.LookupSliceContainingPoint(p))
+        {
+          widget.SetSlice(cursor_.GetCurrentSlice());
+        }
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleList.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,64 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+// The macro "ORTHANC_STONE_SAMPLE" must be set by the CMake script
+
+#if ORTHANC_STONE_SAMPLE == 1
+#include "EmptyApplication.h"
+typedef OrthancStone::Samples::EmptyApplication SampleApplication;
+
+#elif ORTHANC_STONE_SAMPLE == 2
+#include "TestPatternApplication.h"
+typedef OrthancStone::Samples::TestPatternApplication SampleApplication;
+
+#elif ORTHANC_STONE_SAMPLE == 3
+#include "SingleFrameApplication.h"
+typedef OrthancStone::Samples::SingleFrameApplication SampleApplication;
+
+#elif ORTHANC_STONE_SAMPLE == 4
+#include "SingleVolumeApplication.h"
+typedef OrthancStone::Samples::SingleVolumeApplication SampleApplication;
+
+#elif ORTHANC_STONE_SAMPLE == 5
+#include "BasicPetCtFusionApplication.h"
+typedef OrthancStone::Samples::BasicPetCtFusionApplication SampleApplication;
+
+#elif ORTHANC_STONE_SAMPLE == 6
+#include "SynchronizedSeriesApplication.h"
+typedef OrthancStone::Samples::SynchronizedSeriesApplication SampleApplication;
+
+#elif ORTHANC_STONE_SAMPLE == 7
+#include "LayoutPetCtFusionApplication.h"
+typedef OrthancStone::Samples::LayoutPetCtFusionApplication SampleApplication;
+
+#elif ORTHANC_STONE_SAMPLE == 8
+#include "SimpleViewerApplicationSingleFile.h"
+typedef OrthancStone::Samples::SimpleViewerApplication SampleApplication;
+
+#elif ORTHANC_STONE_SAMPLE == 9
+#include "SingleFrameEditorApplication.h"
+typedef OrthancStone::Samples::SingleFrameEditorApplication SampleApplication;
+
+#else
+#error Please set the ORTHANC_STONE_SAMPLE macro
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleMainNative.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,44 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SampleList.h"
+#if ORTHANC_ENABLE_SDL==1
+#include "../../Sdl/SdlStoneApplicationRunner.h"
+#endif
+#if ORTHANC_ENABLE_QT==1
+#include "Qt/SampleQtApplicationRunner.h"
+#endif
+
+int main(int argc, char* argv[]) 
+{
+  boost::shared_ptr<SampleApplication> sampleStoneApplication(new SampleApplication);
+
+#if ORTHANC_ENABLE_SDL==1
+  OrthancStone::SdlStoneApplicationRunner sdlApplicationRunner(sampleStoneApplication);
+  return sdlApplicationRunner.Execute(argc, argv);
+#endif
+  
+#if ORTHANC_ENABLE_QT==1
+  OrthancStone::Samples::SampleQtApplicationRunner qtAppRunner(sampleStoneApplication);
+  return qtAppRunner.Execute(argc, argv);
+#endif
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleMainWasm.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,37 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "Platforms/Wasm/WasmWebService.h"
+#include "Platforms/Wasm/WasmViewport.h"
+
+#include <emscripten/emscripten.h>
+
+#include "SampleList.h"
+
+
+OrthancStone::IStoneApplication* CreateUserApplication(OrthancStone::MessageBroker& broker) 
+{
+  return new SampleApplication(broker);
+}
+
+OrthancStone::WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(OrthancStone::MessageBroker& broker, OrthancStone::IStoneApplication* application)
+{
+  return dynamic_cast<SampleApplication*>(application)->CreateWasmApplicationAdapter(broker);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Samples-status.md	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,103 @@
+Executable versions
+================
+Generic options
+----------------------
+```
+("help", "Display this help and exit")
+("verbose", "Be verbose in logs")
+("orthanc", boost::program_options::value<std::string>()
+  ->default_value("http://localhost:8042/"),
+  "URL to the Orthanc server")
+("username", "Username for the Orthanc server")
+("password", "Password for the Orthanc server")
+("https-verify", boost::program_options::value<bool>()
+  ->default_value(true), "Check HTTPS certificates")
+```
+OrthancStoneSimpleViewer
+-------------------------------------
+- Options:
+    ```
+    - "studyId", std::string, "Orthanc ID of the study"
+    ```
+- study loading works OK
+- Invert does not work:
+```
+void SimpleViewerApplication::ExecuteAction(SimpleViewerApplication::Actions action)
+  {
+    // TODO
+  }
+```
+
+OrthancStoneSimpleViewerSingleFile
+-------------------------------------
+- Options:
+    ```
+    - "studyId", std::string, "Orthanc ID of the study"
+    ```
+
+Study loading works.
+
+The `line` and `circle` buttons work and call this:
+```
+virtual void OnTool1Clicked()
+{
+  currentTool_ = Tools_LineMeasure;
+}
+
+virtual void OnTool2Clicked()
+{
+  currentTool_ = Tools_CircleMeasure;
+}
+```
+The `action1` and `action2` buttons are not connected
+
+The following is displayed in the console at launch time:
+```
+W0313 12:20:12.790449 NativeStoneApplicationRunner.cpp:55] Use the key "s" to reinitialize the layout
+W0313 12:20:12.790449 NativeStoneApplicationRunner.cpp:55] Use the key "n" to go to next image in the main viewport
+```
+However, when looking at `MainWidgetInteractor::KeyPressed` (`SimpleViewerApplicationSingleFile.h:169`), only the following is processed:
+- 's': reset layout
+- 'l': select line tool
+- 'c': select circle tool
+
+OrthancStoneSingleFrame
+-------------------------------------
+```
+generic.add_options()
+("instance", boost::program_options::value<std::string>(), 
+"Orthanc ID of the instance")
+("frame", boost::program_options::value<unsigned int>()
+  ->default_value(0),
+"Number of the frame, for multi-frame DICOM instances")
+("smooth", boost::program_options::value<bool>()
+  ->default_value(true), 
+"Enable bilinear interpolation to smooth the image");
+```
+only key handled in `KeyPressed` is `s` to call `widget.FitContent()`
+
+
+OrthancStoneSingleFrameEditor
+-------------------------------------
+```
+generic.add_options()
+("instance", boost::program_options::value<std::string>(),
+"Orthanc ID of the instance")
+("frame", boost::program_options::value<unsigned int>()
+  ->default_value(0),
+"Number of the frame, for multi-frame DICOM instances");
+```
+Available commands in `KeyPressed` (`SingleFrameEditorApplication.h:280`): 
+- 'a' widget.FitContent()
+- 'c' Crop tool
+- 'm' Mask tool
+- 'd' dump to json and diplay result (?)
+- 'e' export current view to Dicom with dummy tags (?)
+- 'i' wdiget.SwitchInvert
+- 't' Move tool
+- 'n' switch between nearest and bilinear interpolation
+- 'r' Rotate tool
+- 's' Resize tool
+- 'w' Windowing tool
+- 'ctrl+y' redo
+- 'ctrl+z' undo
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/AppStatus.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,48 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <string>
+
+
+namespace SimpleViewer
+{
+  struct AppStatus
+  {
+    std::string patientId;
+    std::string studyDescription;
+    std::string currentInstanceIdInMainViewport;
+    // note: if you add members here, update the serialization code below and deserialization in simple-viewer.ts -> onAppStatusUpdated()
+
+
+    AppStatus()
+    {
+    }
+
+    void ToJson(Json::Value &output) const
+    {
+      output["patientId"] = patientId;
+      output["studyDescription"] = studyDescription;
+      output["currentInstanceIdInMainViewport"] = currentInstanceIdInMainViewport;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,111 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "MainWidgetInteractor.h"
+
+#include "SimpleViewerApplication.h"
+
+namespace SimpleViewer {
+
+  Deprecated::IWorldSceneMouseTracker* MainWidgetInteractor::CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
+                                                                    const Deprecated::ViewportGeometry& view,
+                                                                    MouseButton button,
+                                                                    KeyboardModifiers modifiers,
+                                                                    int viewportX,
+                                                                    int viewportY,
+                                                                    double x,
+                                                                    double y,
+                                                                    Deprecated::IStatusBar* statusBar,
+                                                                    const std::vector<Deprecated::Touch>& displayTouches)
+  {
+    if (button == MouseButton_Left)
+    {
+      if (application_.GetCurrentTool() == Tool_LineMeasure)
+      {
+        return new Deprecated::LineMeasureTracker(statusBar, dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice(),
+                                      x, y, 255, 0, 0, application_.GetFont());
+      }
+      else if (application_.GetCurrentTool() == Tool_CircleMeasure)
+      {
+        return new Deprecated::CircleMeasureTracker(statusBar, dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice(),
+                                        x, y, 255, 0, 0, application_.GetFont());
+      }
+      else if (application_.GetCurrentTool() == Tool_Crop)
+      {
+        // TODO
+      }
+      else if (application_.GetCurrentTool() == Tool_Windowing)
+      {
+        // TODO
+      }
+      else if (application_.GetCurrentTool() == Tool_Zoom)
+      {
+        // TODO
+      }
+      else if (application_.GetCurrentTool() == Tool_Pan)
+      {
+        // TODO
+      }
+    }
+    return NULL;
+  }
+
+  void MainWidgetInteractor::MouseOver(CairoContext& context,
+                                       Deprecated::WorldSceneWidget& widget,
+                                       const Deprecated::ViewportGeometry& view,
+                                       double x,
+                                       double y,
+                                       Deprecated::IStatusBar* statusBar)
+  {
+    if (statusBar != NULL)
+    {
+      Vector p = dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice().MapSliceToWorldCoordinates(x, y);
+
+      char buf[64];
+      sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)",
+              p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
+      statusBar->SetMessage(buf);
+    }
+  }
+
+  void MainWidgetInteractor::MouseWheel(Deprecated::WorldSceneWidget& widget,
+                                        MouseWheelDirection direction,
+                                        KeyboardModifiers modifiers,
+                                        Deprecated::IStatusBar* statusBar)
+  {
+  }
+
+  void MainWidgetInteractor::KeyPressed(Deprecated::WorldSceneWidget& widget,
+                                        KeyboardKeys key,
+                                        char keyChar,
+                                        KeyboardModifiers modifiers,
+                                        Deprecated::IStatusBar* statusBar)
+  {
+    switch (keyChar)
+    {
+    case 's':
+      widget.FitContent();
+      break;
+
+    default:
+      break;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,76 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "../../../../Framework/Deprecated/Widgets/IWorldSceneInteractor.h"
+
+using namespace OrthancStone;
+
+namespace SimpleViewer {
+
+  class SimpleViewerApplication;
+
+  class MainWidgetInteractor : public Deprecated::IWorldSceneInteractor
+  {
+  private:
+    SimpleViewerApplication&  application_;
+
+  public:
+    MainWidgetInteractor(SimpleViewerApplication&  application) :
+      application_(application)
+    {
+    }
+
+    /**
+        WorldSceneWidget: 
+    */
+    virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
+                                                                    const Deprecated::ViewportGeometry& view,
+                                                                    MouseButton button,
+                                                                    KeyboardModifiers modifiers,
+                                                                    int viewportX,
+                                                                    int viewportY,
+                                                                    double x,
+                                                                    double y,
+                                                                    Deprecated::IStatusBar* statusBar,
+                                                                    const std::vector<Deprecated::Touch>& displayTouches);
+
+    virtual void MouseOver(CairoContext& context,
+                           Deprecated::WorldSceneWidget& widget,
+                           const Deprecated::ViewportGeometry& view,
+                           double x,
+                           double y,
+                           Deprecated::IStatusBar* statusBar);
+
+    virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
+                            MouseWheelDirection direction,
+                            KeyboardModifiers modifiers,
+                            Deprecated::IStatusBar* statusBar);
+
+    virtual void KeyPressed(Deprecated::WorldSceneWidget& widget,
+                            KeyboardKeys key,
+                            char keyChar,
+                            KeyboardModifiers modifiers,
+                            Deprecated::IStatusBar* statusBar);
+  };
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,109 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "SimpleViewerMainWindow.h"
+
+/**
+ * Don't use "ui_MainWindow.h" instead of <ui_MainWindow.h> below, as
+ * this makes CMake unable to detect when the UI file changes.
+ **/
+#include <ui_SimpleViewerMainWindow.h>
+#include "../../SimpleViewerApplication.h"
+
+
+namespace SimpleViewer
+{
+  template<typename T, typename U>
+  bool ExecuteCommand(U* handler, const T& command)
+  {
+    std::string serializedCommand = StoneSerialize(command);
+    StoneDispatchToHandler(serializedCommand, handler);
+  }
+
+  SimpleViewerMainWindow::SimpleViewerMainWindow(
+    OrthancStone::NativeStoneApplicationContext& context,
+    SimpleViewerApplication& stoneApplication,
+    QWidget *parent) :
+    QStoneMainWindow(context, parent),
+    ui_(new Ui::SimpleViewerMainWindow),
+    stoneApplication_(stoneApplication)
+  {
+    ui_->setupUi(this);
+    SetCentralStoneWidget(*ui_->cairoCentralWidget);
+
+#if QT_VERSION >= 0x050000
+    connect(ui_->toolButtonCrop, &QToolButton::clicked, this, &SimpleViewerMainWindow::cropClicked);
+    connect(ui_->pushButtonUndoCrop, &QToolButton::clicked, this, &SimpleViewerMainWindow::undoCropClicked);
+    connect(ui_->toolButtonLine, &QToolButton::clicked, this, &SimpleViewerMainWindow::lineClicked);
+    connect(ui_->toolButtonCircle, &QToolButton::clicked, this, &SimpleViewerMainWindow::circleClicked);
+    connect(ui_->toolButtonWindowing, &QToolButton::clicked, this, &SimpleViewerMainWindow::windowingClicked);
+    connect(ui_->pushButtonRotate, &QPushButton::clicked, this, &SimpleViewerMainWindow::rotateClicked);
+    connect(ui_->pushButtonInvert, &QPushButton::clicked, this, &SimpleViewerMainWindow::invertClicked);
+#else
+    connect(ui_->toolButtonCrop, SIGNAL(clicked()), this, SLOT(cropClicked()));
+    connect(ui_->toolButtonLine, SIGNAL(clicked()), this, SLOT(lineClicked()));
+    connect(ui_->toolButtonCircle, SIGNAL(clicked()), this, SLOT(circleClicked()));
+    connect(ui_->toolButtonWindowing, SIGNAL(clicked()), this, SLOT(windowingClicked()));
+    connect(ui_->pushButtonUndoCrop, SIGNAL(clicked()), this, SLOT(undoCropClicked()));
+    connect(ui_->pushButtonRotate, SIGNAL(clicked()), this, SLOT(rotateClicked()));
+    connect(ui_->pushButtonInvert, SIGNAL(clicked()), this, SLOT(invertClicked()));
+#endif
+  }
+
+  SimpleViewerMainWindow::~SimpleViewerMainWindow()
+  {
+    delete ui_;
+  }
+
+  void SimpleViewerMainWindow::cropClicked()
+  {
+    stoneApplication_.ExecuteCommand(SelectTool(Tool_Crop));
+  }
+
+  void SimpleViewerMainWindow::undoCropClicked()
+  {
+    stoneApplication_.ExecuteCommand(Action(ActionType_UndoCrop));
+  }
+
+  void SimpleViewerMainWindow::lineClicked()
+  {
+    stoneApplication_.ExecuteCommand(SelectTool(Tool_LineMeasure));
+  }
+
+  void SimpleViewerMainWindow::circleClicked()
+  {
+    stoneApplication_.ExecuteCommand(SelectTool(Tool_CircleMeasure));
+  }
+
+  void SimpleViewerMainWindow::windowingClicked()
+  {
+    stoneApplication_.ExecuteCommand(SelectTool(Tool_Windowing));
+  }
+
+  void SimpleViewerMainWindow::rotateClicked()
+  {
+    stoneApplication_.ExecuteCommand(Action(ActionType_Rotate));
+  }
+
+  void SimpleViewerMainWindow::invertClicked()
+  {
+    stoneApplication_.ExecuteCommand(Action(ActionType_Invert));
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,57 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include <Applications/Qt/QCairoWidget.h>
+#include <Applications/Qt/QStoneMainWindow.h>
+
+namespace Ui 
+{
+  class SimpleViewerMainWindow;
+}
+
+using namespace OrthancStone;
+
+namespace SimpleViewer
+{
+  class SimpleViewerApplication;
+
+  class SimpleViewerMainWindow : public QStoneMainWindow
+  {
+    Q_OBJECT
+
+  private:
+    Ui::SimpleViewerMainWindow*   ui_;
+    SimpleViewerApplication&      stoneApplication_;
+
+  public:
+    explicit SimpleViewerMainWindow(OrthancStone::NativeStoneApplicationContext& context, SimpleViewerApplication& stoneApplication, QWidget *parent = 0);
+    ~SimpleViewerMainWindow();
+
+  private slots:
+    void cropClicked();
+    void undoCropClicked();
+    void rotateClicked();
+    void windowingClicked();
+    void lineClicked();
+    void circleClicked();
+    void invertClicked();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.ui	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SimpleViewerMainWindow</class>
+ <widget class="QMainWindow" name="SimpleViewerMainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>903</width>
+    <height>634</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>500</width>
+    <height>300</height>
+   </size>
+  </property>
+  <property name="baseSize">
+   <size>
+    <width>500</width>
+    <height>300</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Stone of Orthanc</string>
+  </property>
+  <property name="layoutDirection">
+   <enum>Qt::LeftToRight</enum>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="layoutDirection">
+    <enum>Qt::LeftToRight</enum>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0">
+    <property name="sizeConstraint">
+     <enum>QLayout::SetDefaultConstraint</enum>
+    </property>
+    <item>
+     <widget class="QCairoWidget" name="cairoCentralWidget">
+      <property name="minimumSize">
+       <size>
+        <width>0</width>
+        <height>500</height>
+       </size>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QGroupBox" name="horizontalGroupBox">
+      <property name="minimumSize">
+       <size>
+        <width>0</width>
+        <height>100</height>
+       </size>
+      </property>
+      <property name="maximumSize">
+       <size>
+        <width>16777215</width>
+        <height>100</height>
+       </size>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QToolButton" name="toolButtonWindowing">
+         <property name="text">
+          <string>windowing</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="toolButtonCrop">
+         <property name="text">
+          <string>crop</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="pushButtonUndoCrop">
+         <property name="text">
+          <string>undo crop</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="toolButtonLine">
+         <property name="text">
+          <string>line</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="toolButtonCircle">
+         <property name="text">
+          <string>circle</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="pushButtonRotate">
+         <property name="text">
+          <string>rotate</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="pushButtonInvert">
+         <property name="text">
+          <string>invert</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>903</width>
+     <height>22</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuTest">
+    <property name="title">
+     <string>Test</string>
+    </property>
+   </widget>
+   <addaction name="menuTest"/>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QCairoWidget</class>
+   <extends>QGraphicsView</extends>
+   <header location="global">QCairoWidget.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/mainQt.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,35 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "Applications/Qt/QtStoneApplicationRunner.h"
+
+#include "../../SimpleViewerApplication.h"
+#include "Framework/Messages/MessageBroker.h"
+
+
+int main(int argc, char* argv[]) 
+{
+  OrthancStone::MessageBroker broker;
+  SimpleViewer::SimpleViewerApplication stoneApplication(broker);
+
+  OrthancStone::QtStoneApplicationRunner qtAppRunner(broker, stoneApplication);
+  return qtAppRunner.Execute(argc, argv);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,225 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SimpleViewerApplication.h"
+
+#if ORTHANC_ENABLE_QT == 1
+#  include "Qt/SimpleViewerMainWindow.h"
+#endif
+
+#if ORTHANC_ENABLE_WASM == 1
+#  include <Platforms/Wasm/WasmViewport.h>
+#endif
+
+namespace SimpleViewer
+{
+
+  void SimpleViewerApplication::Initialize(StoneApplicationContext* context,
+                                           Deprecated::IStatusBar& statusBar,
+                                           const boost::program_options::variables_map& parameters)
+  {
+    context_ = context;
+    statusBar_ = &statusBar;
+
+    {// initialize viewports and layout
+      mainLayout_ = new Deprecated::LayoutWidget("main-layout");
+      mainLayout_->SetPadding(10);
+      mainLayout_->SetBackgroundCleared(true);
+      mainLayout_->SetBackgroundColor(0, 0, 0);
+      mainLayout_->SetHorizontal();
+
+      thumbnailsLayout_ = new Deprecated::LayoutWidget("thumbnail-layout");
+      thumbnailsLayout_->SetPadding(10);
+      thumbnailsLayout_->SetBackgroundCleared(true);
+      thumbnailsLayout_->SetBackgroundColor(50, 50, 50);
+      thumbnailsLayout_->SetVertical();
+
+      mainWidget_ = new Deprecated::SliceViewerWidget(IObserver::GetBroker(), "main-viewport");
+      //mainWidget_->RegisterObserver(*this);
+
+      // hierarchy
+      mainLayout_->AddWidget(thumbnailsLayout_);
+      mainLayout_->AddWidget(mainWidget_);
+
+      // sources
+      smartLoader_.reset(new Deprecated::SmartLoader(IObserver::GetBroker(), context->GetOrthancApiClient()));
+      smartLoader_->SetImageQuality(Deprecated::SliceImageQuality_FullPam);
+
+      mainLayout_->SetTransmitMouseOver(true);
+      mainWidgetInteractor_.reset(new MainWidgetInteractor(*this));
+      mainWidget_->SetInteractor(*mainWidgetInteractor_);
+      thumbnailInteractor_.reset(new ThumbnailInteractor(*this));
+    }
+
+    statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
+    statusBar.SetMessage("Use the key \"n\" to go to next image in the main viewport");
+
+
+    if (parameters.count("studyId") < 1)
+    {
+      LOG(WARNING) << "The study ID is missing, will take the first studyId found in Orthanc";
+      context->GetOrthancApiClient().GetJsonAsync("/studies", new Callable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnStudyListReceived));
+    }
+    else
+    {
+      SelectStudy(parameters["studyId"].as<std::string>());
+    }
+  }
+
+
+  void SimpleViewerApplication::DeclareStartupOptions(boost::program_options::options_description& options)
+  {
+    boost::program_options::options_description generic("Sample options");
+    generic.add_options()
+        ("studyId", boost::program_options::value<std::string>(),
+         "Orthanc ID of the study")
+        ;
+
+    options.add(generic);
+  }
+
+  void SimpleViewerApplication::OnStudyListReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    const Json::Value& response = message.GetJson();
+
+    if (response.isArray() &&
+        response.size() >= 1)
+    {
+      SelectStudy(response[0].asString());
+    }
+  }
+  void SimpleViewerApplication::OnStudyReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    const Json::Value& response = message.GetJson();
+
+    if (response.isObject() && response["Series"].isArray())
+    {
+      for (size_t i=0; i < response["Series"].size(); i++)
+      {
+        context_->GetOrthancApiClient().GetJsonAsync("/series/" + response["Series"][(int)i].asString(), new Callable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnSeriesReceived));
+      }
+    }
+  }
+
+  void SimpleViewerApplication::OnSeriesReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    const Json::Value& response = message.GetJson();
+
+    if (response.isObject() &&
+        response["Instances"].isArray() &&
+        response["Instances"].size() > 0)
+    {
+      // keep track of all instances IDs
+      const std::string& seriesId = response["ID"].asString();
+      seriesTags_[seriesId] = response;
+      instancesIdsPerSeriesId_[seriesId] = std::vector<std::string>();
+      for (size_t i = 0; i < response["Instances"].size(); i++)
+      {
+        const std::string& instanceId = response["Instances"][static_cast<int>(i)].asString();
+        instancesIdsPerSeriesId_[seriesId].push_back(instanceId);
+      }
+
+      // load the first instance in the thumbnail
+      LoadThumbnailForSeries(seriesId, instancesIdsPerSeriesId_[seriesId][0]);
+
+      // if this is the first thumbnail loaded, load the first instance in the mainWidget
+      if (mainWidget_->GetLayerCount() == 0)
+      {
+        smartLoader_->SetFrameInWidget(*mainWidget_, 0, instancesIdsPerSeriesId_[seriesId][0], 0);
+      }
+    }
+  }
+
+  void SimpleViewerApplication::LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId)
+  {
+    LOG(INFO) << "Loading thumbnail for series " << seriesId;
+    
+    Deprecated::SliceViewerWidget* thumbnailWidget = 
+      new Deprecated::SliceViewerWidget(IObserver::GetBroker(), "thumbnail-series-" + seriesId);
+    thumbnails_.push_back(thumbnailWidget);
+    thumbnailsLayout_->AddWidget(thumbnailWidget);
+    
+    thumbnailWidget->RegisterObserverCallback(
+      new Callable<SimpleViewerApplication, Deprecated::SliceViewerWidget::GeometryChangedMessage>
+      (*this, &SimpleViewerApplication::OnWidgetGeometryChanged));
+    
+    smartLoader_->SetFrameInWidget(*thumbnailWidget, 0, instanceId, 0);
+    thumbnailWidget->SetInteractor(*thumbnailInteractor_);
+  }
+
+  void SimpleViewerApplication::SelectStudy(const std::string& studyId)
+  {
+    context_->GetOrthancApiClient().GetJsonAsync("/studies/" + studyId, new Callable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnStudyReceived));
+  }
+
+  void SimpleViewerApplication::OnWidgetGeometryChanged(const Deprecated::SliceViewerWidget::GeometryChangedMessage& message)
+  {
+    // TODO: The "const_cast" could probably be replaced by "mainWidget_"
+    const_cast<Deprecated::SliceViewerWidget&>(message.GetOrigin()).FitContent();
+  }
+
+  void SimpleViewerApplication::SelectSeriesInMainViewport(const std::string& seriesId)
+  {
+    smartLoader_->SetFrameInWidget(*mainWidget_, 0, instancesIdsPerSeriesId_[seriesId][0], 0);
+  }
+
+  bool SimpleViewerApplication::Handle(const StoneSampleCommands::SelectTool& value)
+  {
+    currentTool_ = value.tool;
+    return true;
+  }
+
+  bool SimpleViewerApplication::Handle(const StoneSampleCommands::Action& value)
+  {
+    switch (value.type)
+    {
+    case ActionType_Invert:
+      // TODO
+      break;
+    case ActionType_UndoCrop:
+      // TODO
+      break;
+    case ActionType_Rotate:
+      // TODO
+      break;
+    default:
+      throw std::runtime_error("Action type not supported");
+    }
+    return true;
+  }
+
+#if ORTHANC_ENABLE_QT==1
+  QStoneMainWindow* SimpleViewerApplication::CreateQtMainWindow()
+  {
+    return new SimpleViewerMainWindow(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
+  }
+#endif
+
+#if ORTHANC_ENABLE_WASM==1
+  void SimpleViewerApplication::InitializeWasm() {
+
+    AttachWidgetToWasmViewport("canvasThumbnails", thumbnailsLayout_);
+    AttachWidgetToWasmViewport("canvasMain", mainWidget_);
+  }
+#endif
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,175 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+ /*
+ This header contains the command definitions for the sample applications
+ */
+#include "Applications/Samples/StoneSampleCommands_generated.hpp"
+using namespace StoneSampleCommands;
+
+#include "Applications/IStoneApplication.h"
+
+#include "../../../../Framework/Deprecated/Layers/CircleMeasureTracker.h"
+#include "../../../../Framework/Deprecated/Layers/LineMeasureTracker.h"
+#include "../../../../Framework/Deprecated/SmartLoader.h"
+#include "../../../../Framework/Deprecated/Widgets/LayoutWidget.h"
+#include "../../../../Framework/Deprecated/Widgets/SliceViewerWidget.h"
+#include "../../../../Framework/Messages/IObserver.h"
+
+#if ORTHANC_ENABLE_WASM==1
+#include "Platforms/Wasm/WasmPlatformApplicationAdapter.h"
+#include "Platforms/Wasm/Defaults.h"
+#endif
+
+#if ORTHANC_ENABLE_QT==1
+#include "Qt/SimpleViewerMainWindow.h"
+#endif
+
+#include <Core/Images/Font.h>
+#include <Core/Logging.h>
+
+#include "ThumbnailInteractor.h"
+#include "MainWidgetInteractor.h"
+#include "AppStatus.h"
+
+using namespace OrthancStone;
+
+
+namespace SimpleViewer
+{
+
+  class SimpleViewerApplication
+    : public IStoneApplication
+    , public IObserver
+    , public IObservable
+    , public StoneSampleCommands::IHandler
+  {
+  public:
+
+    struct StatusUpdatedMessage : public IMessage
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+      const AppStatus& status_;
+
+      StatusUpdatedMessage(const AppStatus& status)
+        : status_(status)
+      {
+      }
+    };
+
+  private:
+    Tool                                currentTool_;
+
+    std::unique_ptr<MainWidgetInteractor> mainWidgetInteractor_;
+    std::unique_ptr<ThumbnailInteractor>  thumbnailInteractor_;
+    Deprecated::LayoutWidget*                       mainLayout_;
+    Deprecated::LayoutWidget*                       thumbnailsLayout_;
+    Deprecated::SliceViewerWidget*                  mainWidget_;
+    std::vector<Deprecated::SliceViewerWidget*>     thumbnails_;
+    std::map<std::string, std::vector<std::string> > instancesIdsPerSeriesId_;
+    std::map<std::string, Json::Value>  seriesTags_;
+    unsigned int                        currentInstanceIndex_;
+    Deprecated::WidgetViewport*       wasmViewport1_;
+    Deprecated::WidgetViewport*       wasmViewport2_;
+
+    Deprecated::IStatusBar*                         statusBar_;
+    std::unique_ptr<Deprecated::SmartLoader>          smartLoader_;
+
+    Orthanc::Font                       font_;
+
+  public:
+    SimpleViewerApplication(MessageBroker& broker) :
+      IObserver(broker),
+      IObservable(broker),
+      currentTool_(StoneSampleCommands::Tool_LineMeasure),
+      mainLayout_(NULL),
+      currentInstanceIndex_(0),
+      wasmViewport1_(NULL),
+      wasmViewport2_(NULL)
+    {
+      font_.LoadFromResource(Orthanc::EmbeddedResources::FONT_UBUNTU_MONO_BOLD_16);
+    }
+
+    virtual void Finalize() ORTHANC_OVERRIDE {}
+    virtual Deprecated::IWidget* GetCentralWidget() ORTHANC_OVERRIDE {return mainLayout_;}
+
+    virtual void DeclareStartupOptions(boost::program_options::options_description& options) ORTHANC_OVERRIDE;
+    virtual void Initialize(StoneApplicationContext* context,
+                            Deprecated::IStatusBar& statusBar,
+                            const boost::program_options::variables_map& parameters) ORTHANC_OVERRIDE;
+
+    void OnStudyListReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message);
+
+    void OnStudyReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message);
+
+    void OnSeriesReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message);
+
+    void LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId);
+
+    void SelectStudy(const std::string& studyId);
+
+    void OnWidgetGeometryChanged(const Deprecated::SliceViewerWidget::GeometryChangedMessage& message);
+
+    void SelectSeriesInMainViewport(const std::string& seriesId);
+
+
+    Tool GetCurrentTool() const
+    {
+      return currentTool_;
+    }
+
+    const Orthanc::Font& GetFont() const
+    {
+      return font_;
+    }
+
+    // ExecuteAction method was empty (its body was a single "TODO" comment)
+    virtual bool Handle(const SelectTool& value) ORTHANC_OVERRIDE;
+    virtual bool Handle(const Action& value) ORTHANC_OVERRIDE;
+
+    template<typename T>
+    bool ExecuteCommand(const T& cmd)
+    {
+      std::string cmdStr = StoneSampleCommands::StoneSerialize(cmd);
+      return StoneSampleCommands::StoneDispatchToHandler(cmdStr, this);
+    }
+
+    virtual void HandleSerializedMessage(const char* data) ORTHANC_OVERRIDE
+    {
+      StoneSampleCommands::StoneDispatchToHandler(data, this);
+    }
+
+    virtual std::string GetTitle() const ORTHANC_OVERRIDE {return "SimpleViewer";}
+
+#if ORTHANC_ENABLE_WASM==1
+    virtual void InitializeWasm() ORTHANC_OVERRIDE;
+#endif
+
+#if ORTHANC_ENABLE_QT==1
+    virtual QStoneMainWindow* CreateQtMainWindow();
+#endif
+  };
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,46 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "ThumbnailInteractor.h"
+
+#include "SimpleViewerApplication.h"
+
+namespace SimpleViewer {
+
+  Deprecated::IWorldSceneMouseTracker* ThumbnailInteractor::CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
+                                                                   const Deprecated::ViewportGeometry& view,
+                                                                   MouseButton button,
+                                                                   KeyboardModifiers modifiers,
+                                                                   int viewportX,
+                                                                   int viewportY,
+                                                                   double x,
+                                                                   double y,
+                                                                   Deprecated::IStatusBar* statusBar,
+                                                                   const std::vector<Deprecated::Touch>& displayTouches)
+  {
+    if (button == MouseButton_Left)
+    {
+      statusBar->SetMessage("selected thumbnail " + widget.GetName());
+      std::string seriesId = widget.GetName().substr(strlen("thumbnail-series-"));
+      application_.SelectSeriesInMainViewport(seriesId);
+    }
+    return NULL;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,77 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../../../Framework/Deprecated/Widgets/IWorldSceneInteractor.h"
+
+using namespace OrthancStone;
+
+namespace SimpleViewer {
+
+  class SimpleViewerApplication;
+
+  class ThumbnailInteractor : public Deprecated::IWorldSceneInteractor
+  {
+  private:
+    SimpleViewerApplication&  application_;
+  public:
+    ThumbnailInteractor(SimpleViewerApplication&  application) :
+      application_(application)
+    {
+    }
+
+    virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
+                                                                    const Deprecated::ViewportGeometry& view,
+                                                                    MouseButton button,
+                                                                    KeyboardModifiers modifiers,
+                                                                    int viewportX,
+                                                                    int viewportY,
+                                                                    double x,
+                                                                    double y,
+                                                                    Deprecated::IStatusBar* statusBar,
+                                                                    const std::vector<Deprecated::Touch>& displayTouches);
+
+    virtual void MouseOver(CairoContext& context,
+                           Deprecated::WorldSceneWidget& widget,
+                           const Deprecated::ViewportGeometry& view,
+                           double x,
+                           double y,
+                           Deprecated::IStatusBar* statusBar)
+    {}
+
+    virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
+                            MouseWheelDirection direction,
+                            KeyboardModifiers modifiers,
+                            Deprecated::IStatusBar* statusBar)
+    {}
+
+    virtual void KeyPressed(Deprecated::WorldSceneWidget& widget,
+                            KeyboardKeys key,
+                            char keyChar,
+                            KeyboardModifiers modifiers,
+                            Deprecated::IStatusBar* statusBar)
+    {}
+
+  };
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,51 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "SimpleViewerWasmApplicationAdapter.h"
+
+namespace SimpleViewer
+{
+
+  SimpleViewerWasmApplicationAdapter::SimpleViewerWasmApplicationAdapter(MessageBroker &broker, SimpleViewerApplication &application)
+      : WasmPlatformApplicationAdapter(broker, application),
+        viewerApplication_(application)
+  {
+    application.RegisterObserverCallback(new Callable<SimpleViewerWasmApplicationAdapter, SimpleViewerApplication::StatusUpdatedMessage>(*this, &SimpleViewerWasmApplicationAdapter::OnStatusUpdated));
+  }
+
+  void SimpleViewerWasmApplicationAdapter::OnStatusUpdated(const SimpleViewerApplication::StatusUpdatedMessage &message)
+  {
+    Json::Value statusJson;
+    message.status_.ToJson(statusJson);
+
+    Json::Value event;
+    event["event"] = "appStatusUpdated";
+    event["data"] = statusJson;
+
+    Json::StreamWriterBuilder builder;
+    std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
+    std::ostringstream outputStr;
+
+    writer->write(event, &outputStr);
+
+    NotifyStatusUpdateFromCppToWebWithString(outputStr.str());
+  }
+
+} // namespace SimpleViewer
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,43 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include <string>
+#include "../../../../../../Framework/Messages/IObserver.h"
+#include <Platforms/Wasm/WasmPlatformApplicationAdapter.h>
+
+#include "../../SimpleViewerApplication.h"
+
+namespace SimpleViewer {
+
+  class SimpleViewerWasmApplicationAdapter : public WasmPlatformApplicationAdapter
+    {
+      SimpleViewerApplication&  viewerApplication_;
+
+    public:
+      SimpleViewerWasmApplicationAdapter(MessageBroker& broker, SimpleViewerApplication& application);
+
+    private:
+      void OnStatusUpdated(const SimpleViewerApplication::StatusUpdatedMessage& message);
+
+    };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/mainWasm.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,38 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "Platforms/Wasm/WasmWebService.h"
+#include "Platforms/Wasm/WasmViewport.h"
+
+#include <emscripten/emscripten.h>
+
+#include "../../SimpleViewerApplication.h"
+#include "SimpleViewerWasmApplicationAdapter.h"
+
+
+OrthancStone::IStoneApplication* CreateUserApplication(OrthancStone::MessageBroker& broker) {
+  
+  return new SimpleViewer::SimpleViewerApplication(broker);
+}
+
+OrthancStone::WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(OrthancStone::MessageBroker& broker, IStoneApplication* application)
+{
+  return new SimpleViewer::SimpleViewerWasmApplicationAdapter(broker, *(dynamic_cast<SimpleViewer::SimpleViewerApplication*>(application)));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/simple-viewer.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,43 @@
+<!doctype html>
+
+<html lang="us">
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+    <!-- Disable pinch zoom on mobile devices -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <meta name="HandheldFriendly" content="true" />
+
+    <title>Simple Viewer</title>
+    <link href="styles.css" rel="stylesheet" />
+
+<body>
+  <div id="breadcrumb">
+    <span id="label-patient-id"></span>
+    <span id="label-study-description"></span>
+    <span id="label-series-description"></span>
+  </div>
+  <div style="height: calc(100% - 50px)">
+    <div style="width: 20%; height: 100%; display: inline-block">
+      <canvas id="canvasThumbnails"></canvas>
+    </div>
+    <div style="width: 70%; height: 100%; display: inline-block">
+      <canvas id="canvasMain"></canvas>
+    </div>
+  </div>
+  <div id="toolbox" style="height: 50px">
+    <button tool-selector="line-measure" class="tool-selector">line</button>
+    <button tool-selector="circle-measure" class="tool-selector">circle</button>
+    <button tool-selector="crop" class="tool-selector">crop</button>
+    <button tool-selector="windowing" class="tool-selector">windowing</button>
+    <button tool-selector="zoom" class="tool-selector">zoom</button>
+    <button tool-selector="pan" class="tool-selector">pan</button>
+    <button action-trigger="rotate-left" class="action-trigger">rotate left</button>
+    <button action-trigger="rotate-right" class="action-trigger">rotate right</button>
+    <button action-trigger="invert" class="action-trigger">invert</button>
+  </div>
+  <script type="text/javascript" src="app-simple-viewer.js"></script>
+</body>
+
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/simple-viewer.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,81 @@
+import wasmApplicationRunner = require('../../../../Platforms/Wasm/wasm-application-runner');
+
+wasmApplicationRunner.InitializeWasmApplication("OrthancStoneSimpleViewer", "/orthanc");
+
+function SelectTool(toolName: string) {
+  var command = {
+    command: "selectTool:" + toolName,
+    commandType: "generic-no-arg-command",
+    args: {
+    }                                                                                                                       
+  };
+  wasmApplicationRunner.SendSerializedMessageToStoneApplication(JSON.stringify(command));
+}
+
+function PerformAction(actionName: string) {
+  var command = {
+    command: "action:" + actionName,
+    commandType: "generic-no-arg-command",
+    args: {
+    }
+  };
+  wasmApplicationRunner.SendSerializedMessageToStoneApplication(JSON.stringify(command));
+}
+
+class SimpleViewerUI {
+
+  private _labelPatientId: HTMLSpanElement;
+  private _labelStudyDescription: HTMLSpanElement;
+
+  public constructor() {
+    // install "SelectTool" handlers
+    document.querySelectorAll("[tool-selector]").forEach((e) => {
+      (e as HTMLButtonElement).addEventListener("click", () => {
+        SelectTool(e.attributes["tool-selector"].value);
+      });
+    });
+
+    // install "PerformAction" handlers
+    document.querySelectorAll("[action-trigger]").forEach((e) => {
+      (e as HTMLButtonElement).addEventListener("click", () => {
+        PerformAction(e.attributes["action-trigger"].value);
+      });
+    });
+
+    // connect all ui elements to members
+    this._labelPatientId = document.getElementById("label-patient-id") as HTMLSpanElement;
+    this._labelStudyDescription = document.getElementById("label-study-description") as HTMLSpanElement;
+  }
+
+  public onAppStatusUpdated(status: any) {
+    this._labelPatientId.innerText = status["patientId"];
+    this._labelStudyDescription.innerText = status["studyDescription"];
+    // this.highlighThumbnail(status["currentInstanceIdInMainViewport"]);
+  }
+
+}
+
+var ui = new SimpleViewerUI();
+
+// this method is called "from the C++ code" when the StoneApplication is updated.
+// it can be used to update the UI of the application
+function UpdateWebApplicationWithString(statusUpdateMessageString: string) {
+  console.log("updating web application with string: ", statusUpdateMessageString);
+  let statusUpdateMessage = JSON.parse(statusUpdateMessageString);
+
+  if ("event" in statusUpdateMessage) {
+    let eventName = statusUpdateMessage["event"];
+    if (eventName == "appStatusUpdated") {
+      ui.onAppStatusUpdated(statusUpdateMessage["data"]);
+    }
+  }
+}
+
+function UpdateWebApplicationWithSerializedMessage(statusUpdateMessageString: string) {
+  console.log("updating web application with serialized message: ", statusUpdateMessageString);
+  console.log("<not supported in the simple viewer!>");
+}
+
+// make it available to other js scripts in the application
+(<any> window).UpdateWebApplicationWithString = UpdateWebApplicationWithString;
+(<any> window).UpdateWebApplicationWithSerializedMessage = UpdateWebApplicationWithSerializedMessage;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/styles.css	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,54 @@
+html, body {
+    width: 100%;
+    height: 100%;
+    margin: 0px;
+    border: 0;
+    overflow: hidden; /*  Disable scrollbars */
+    display: block;  /* No floating content on sides */
+    background-color: black;
+    color: white;
+    font-family: Arial, Helvetica, sans-serif;
+}
+
+canvas {
+    left:0px;
+    top:0px;
+}
+
+#canvas-group {
+    padding:5px;
+    background-color: grey;
+}
+
+#status-group {
+    padding:5px;
+}
+
+#worklist-group {
+    padding:5px;
+}
+
+.vsol-button {
+    height: 40px;
+}
+
+#thumbnails-group ul li {
+    display: inline;
+    list-style: none;
+}
+
+.thumbnail {
+    width: 100px;
+    height: 100px;
+    padding: 3px;
+}
+
+.thumbnail-selected {
+    border-width: 1px;
+    border-color: red;
+    border-style: solid;
+}
+
+#template-thumbnail-li {
+    display: none !important;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/tsconfig-simple-viewer.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,9 @@
+{
+    "extends" : "../../Web/tsconfig-samples",
+    "compilerOptions": {
+    },
+    "include" : [
+        "simple-viewer.ts",
+        "../../build-wasm/ApplicationCommands_generated.ts"
+    ]
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewerApplicationSingleFile.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,461 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "SampleApplicationBase.h"
+
+#include "../../../Framework/Deprecated/Layers/CircleMeasureTracker.h"
+#include "../../../Framework/Deprecated/Layers/LineMeasureTracker.h"
+#include "../../../Framework/Deprecated/SmartLoader.h"
+#include "../../../Framework/Deprecated/Widgets/LayoutWidget.h"
+#include "../../../Framework/Deprecated/Widgets/SliceViewerWidget.h"
+#include "../../../Framework/Messages/IObserver.h"
+
+#if ORTHANC_ENABLE_WASM==1
+#include "../../../Platforms/Wasm/WasmPlatformApplicationAdapter.h"
+#include "../../../Platforms/Wasm/Defaults.h"
+#endif
+
+#include <Core/Images/Font.h>
+#include <Core/Logging.h>
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class SimpleViewerApplication :
+      public SampleSingleCanvasWithButtonsApplicationBase,
+      public ObserverBase<SimpleViewerApplication>
+    {
+    private:
+      class ThumbnailInteractor : public Deprecated::IWorldSceneInteractor
+      {
+      private:
+        SimpleViewerApplication&  application_;
+
+      public:
+        ThumbnailInteractor(SimpleViewerApplication&  application) :
+          application_(application)
+        {
+        }
+
+        virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
+                                                            const Deprecated::ViewportGeometry& view,
+                                                            MouseButton button,
+                                                            KeyboardModifiers modifiers,
+                                                            int viewportX,
+                                                            int viewportY,
+                                                            double x,
+                                                            double y,
+                                                            Deprecated::IStatusBar* statusBar,
+                                                            const std::vector<Deprecated::Touch>& displayTouches)
+        {
+          if (button == MouseButton_Left)
+          {
+            statusBar->SetMessage("selected thumbnail " + widget.GetName());
+            std::string seriesId = widget.GetName().substr(strlen("thumbnail-series-"));
+            application_.SelectSeriesInMainViewport(seriesId);
+          }
+          return NULL;
+        }
+
+        virtual void MouseOver(CairoContext& context,
+                               Deprecated::WorldSceneWidget& widget,
+                               const Deprecated::ViewportGeometry& view,
+                               double x,
+                               double y,
+                               Deprecated::IStatusBar* statusBar)
+        {
+        }
+
+        virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
+                                MouseWheelDirection direction,
+                                KeyboardModifiers modifiers,
+                                Deprecated::IStatusBar* statusBar)
+        {
+        }
+
+        virtual void KeyPressed(Deprecated::WorldSceneWidget& widget,
+                                KeyboardKeys key,
+                                char keyChar,
+                                KeyboardModifiers modifiers,
+                                Deprecated::IStatusBar* statusBar)
+        {
+        }
+      };
+
+      class MainWidgetInteractor : public Deprecated::IWorldSceneInteractor
+      {
+      private:
+        SimpleViewerApplication&  application_;
+        
+      public:
+        MainWidgetInteractor(SimpleViewerApplication&  application) :
+          application_(application)
+        {
+        }
+        
+        virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
+                                                            const Deprecated::ViewportGeometry& view,
+                                                            MouseButton button,
+                                                            KeyboardModifiers modifiers,
+                                                            int viewportX,
+                                                            int viewportY,
+                                                            double x,
+                                                            double y,
+                                                            Deprecated::IStatusBar* statusBar,
+                                                            const std::vector<Deprecated::Touch>& displayTouches)
+        {
+          if (button == MouseButton_Left)
+          {
+            if (application_.currentTool_ == Tool_LineMeasure)
+            {
+              return new Deprecated::LineMeasureTracker(statusBar, dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice(),
+                                            x, y, 255, 0, 0, application_.GetFont());
+            }
+            else if (application_.currentTool_ == Tool_CircleMeasure)
+            {
+              return new Deprecated::CircleMeasureTracker(statusBar, dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice(),
+                                              x, y, 255, 0, 0, application_.GetFont());
+            }
+          }
+          return NULL;
+        }
+
+        virtual void MouseOver(CairoContext& context,
+                               Deprecated::WorldSceneWidget& widget,
+                               const Deprecated::ViewportGeometry& view,
+                               double x,
+                               double y,
+                               Deprecated::IStatusBar* statusBar)
+        {
+          if (statusBar != NULL)
+          {
+            Vector p = dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice().MapSliceToWorldCoordinates(x, y);
+            
+            char buf[64];
+            sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)",
+                    p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
+            statusBar->SetMessage(buf);
+          }
+        }
+
+        virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
+                                MouseWheelDirection direction,
+                                KeyboardModifiers modifiers,
+                                Deprecated::IStatusBar* statusBar)
+        {
+        }
+
+        virtual void KeyPressed(Deprecated::WorldSceneWidget& widget,
+                                KeyboardKeys key,
+                                char keyChar,
+                                KeyboardModifiers modifiers,
+                                Deprecated::IStatusBar* statusBar)
+        {
+          switch (keyChar)
+          {
+            case 's':
+              widget.FitContent();
+              break;
+
+            case 'l':
+              application_.currentTool_ = Tool_LineMeasure;
+              break;
+
+            case 'c':
+              application_.currentTool_ = Tool_CircleMeasure;
+              break;
+
+            default:
+              break;
+          }
+        }
+      };
+
+
+#if ORTHANC_ENABLE_WASM==1
+      class SimpleViewerApplicationAdapter : public WasmPlatformApplicationAdapter
+      {
+        SimpleViewerApplication&  viewerApplication_;
+
+      public:
+        SimpleViewerApplicationAdapter(SimpleViewerApplication& application)
+          : WasmPlatformApplicationAdapter(application),
+            viewerApplication_(application)
+        {
+        }
+
+        virtual void HandleSerializedMessageFromWeb(std::string& output, const std::string& input) 
+        {
+          if (input == "select-tool:line-measure")
+          {
+            viewerApplication_.currentTool_ = Tool_LineMeasure;
+            NotifyStatusUpdateFromCppToWebWithString("currentTool=line-measure");
+          }
+          else if (input == "select-tool:circle-measure")
+          {
+            viewerApplication_.currentTool_ = Tool_CircleMeasure;
+            NotifyStatusUpdateFromCppToWebWithString("currentTool=circle-measure");
+          }
+
+          output = "ok";
+        }
+
+        virtual void NotifySerializedMessageFromCppToWeb(const std::string& statusUpdateMessage) 
+        {
+          UpdateStoneApplicationStatusFromCppWithSerializedMessage(statusUpdateMessage.c_str());
+        }
+
+        virtual void NotifyStatusUpdateFromCppToWebWithString(const std::string& statusUpdateMessage) 
+        {
+          UpdateStoneApplicationStatusFromCppWithString(statusUpdateMessage.c_str());
+        }
+
+      };
+#endif
+      enum Tool {
+        Tool_LineMeasure,
+        Tool_CircleMeasure
+      };
+
+      Tool                                 currentTool_;
+      std::unique_ptr<MainWidgetInteractor>  mainWidgetInteractor_;
+      std::unique_ptr<ThumbnailInteractor>   thumbnailInteractor_;
+      Deprecated::LayoutWidget*                        mainLayout_;
+      Deprecated::LayoutWidget*                        thumbnailsLayout_;
+      std::vector<boost::shared_ptr<Deprecated::SliceViewerWidget> >      thumbnails_;
+
+      std::map<std::string, std::vector<std::string> > instancesIdsPerSeriesId_;
+      std::map<std::string, Json::Value> seriesTags_;
+
+      unsigned int                         currentInstanceIndex_;
+      Deprecated::WidgetViewport*        wasmViewport1_;
+      Deprecated::WidgetViewport*        wasmViewport2_;
+
+      Deprecated::IStatusBar*                          statusBar_;
+      std::unique_ptr<Deprecated::SmartLoader>           smartLoader_;
+
+      Orthanc::Font                        font_;
+
+    public:
+      SimpleViewerApplication() :
+        currentTool_(Tool_LineMeasure),
+        mainLayout_(NULL),
+        currentInstanceIndex_(0),
+        wasmViewport1_(NULL),
+        wasmViewport2_(NULL)
+      {
+        font_.LoadFromResource(Orthanc::EmbeddedResources::FONT_UBUNTU_MONO_BOLD_16);
+//        DeclareIgnoredMessage(MessageType_Widget_ContentChanged);
+      }
+
+      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
+      {
+        boost::program_options::options_description generic("Sample options");
+        generic.add_options()
+          ("studyId", boost::program_options::value<std::string>(),
+           "Orthanc ID of the study")
+          ;
+
+        options.add(generic);
+      }
+
+      virtual void Initialize(StoneApplicationContext* context,
+                              Deprecated::IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters)
+      {
+        using namespace OrthancStone;
+
+        context_ = context;
+        statusBar_ = &statusBar;
+
+        {// initialize viewports and layout
+          mainLayout_ = new Deprecated::LayoutWidget("main-layout");
+          mainLayout_->SetPadding(10);
+          mainLayout_->SetBackgroundCleared(true);
+          mainLayout_->SetBackgroundColor(0, 0, 0);
+          mainLayout_->SetHorizontal();
+
+          boost::shared_ptr<Deprecated::LayoutWidget> thumbnailsLayout_(new Deprecated::LayoutWidget("thumbnail-layout"));
+          thumbnailsLayout_->SetPadding(10);
+          thumbnailsLayout_->SetBackgroundCleared(true);
+          thumbnailsLayout_->SetBackgroundColor(50, 50, 50);
+          thumbnailsLayout_->SetVertical();
+
+          boost::shared_ptr<Deprecated::SliceViewerWidget> widget
+            (new Deprecated::SliceViewerWidget("main-viewport"));
+          SetCentralWidget(widget);
+          //mainWidget_->RegisterObserver(*this);
+
+          // hierarchy
+          mainLayout_->AddWidget(thumbnailsLayout_);
+          mainLayout_->AddWidget(widget);
+
+          // sources
+          smartLoader_.reset(new Deprecated::SmartLoader(context->GetOrthancApiClient()));
+          smartLoader_->SetImageQuality(Deprecated::SliceImageQuality_FullPam);
+
+          mainLayout_->SetTransmitMouseOver(true);
+          mainWidgetInteractor_.reset(new MainWidgetInteractor(*this));
+          widget->SetInteractor(*mainWidgetInteractor_);
+          thumbnailInteractor_.reset(new ThumbnailInteractor(*this));
+        }
+
+        statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
+        statusBar.SetMessage("Use the key \"n\" to go to next image in the main viewport");
+
+
+        if (parameters.count("studyId") < 1)
+        {
+          LOG(WARNING) << "The study ID is missing, will take the first studyId found in Orthanc";
+          context->GetOrthancApiClient()->GetJsonAsync(
+            "/studies",
+            new Deprecated::DeprecatedCallable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>
+            (GetSharedObserver(), &SimpleViewerApplication::OnStudyListReceived));
+        }
+        else
+        {
+          SelectStudy(parameters["studyId"].as<std::string>());
+        }
+      }
+
+      void OnStudyListReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
+      {
+        const Json::Value& response = message.GetJson();
+
+        if (response.isArray() &&
+            response.size() >= 1)
+        {
+          SelectStudy(response[0].asString());
+        }
+      }
+      
+      void OnStudyReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
+      {
+        const Json::Value& response = message.GetJson();
+
+        if (response.isObject() && response["Series"].isArray())
+        {
+          for (size_t i=0; i < response["Series"].size(); i++)
+          {
+            context_->GetOrthancApiClient()->GetJsonAsync(
+              "/series/" + response["Series"][(int)i].asString(),
+              new Deprecated::DeprecatedCallable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>
+              (GetSharedObserver(), &SimpleViewerApplication::OnSeriesReceived));
+          }
+        }
+      }
+
+      void OnSeriesReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
+      {
+        const Json::Value& response = message.GetJson();
+
+        if (response.isObject() &&
+            response["Instances"].isArray() &&
+            response["Instances"].size() > 0)
+        {
+          // keep track of all instances IDs
+          const std::string& seriesId = response["ID"].asString();
+          seriesTags_[seriesId] = response;
+          instancesIdsPerSeriesId_[seriesId] = std::vector<std::string>();
+          for (size_t i = 0; i < response["Instances"].size(); i++)
+          {
+            const std::string& instanceId = response["Instances"][static_cast<int>(i)].asString();
+            instancesIdsPerSeriesId_[seriesId].push_back(instanceId);
+          }
+
+          // load the first instance in the thumbnail
+          LoadThumbnailForSeries(seriesId, instancesIdsPerSeriesId_[seriesId][0]);
+
+          // if this is the first thumbnail loaded, load the first instance in the mainWidget
+          Deprecated::SliceViewerWidget& widget = dynamic_cast<Deprecated::SliceViewerWidget&>(*GetCentralWidget());
+          if (widget.GetLayerCount() == 0)
+          {
+            smartLoader_->SetFrameInWidget(widget, 0, instancesIdsPerSeriesId_[seriesId][0], 0);
+          }
+        }
+      }
+
+      void LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId)
+      {
+        LOG(INFO) << "Loading thumbnail for series " << seriesId;
+        boost::shared_ptr<Deprecated::SliceViewerWidget> thumbnailWidget(new Deprecated::SliceViewerWidget("thumbnail-series-" + seriesId));
+        thumbnails_.push_back(thumbnailWidget);
+        thumbnailsLayout_->AddWidget(thumbnailWidget);
+        Register<Deprecated::SliceViewerWidget::GeometryChangedMessage>(*thumbnailWidget, &SimpleViewerApplication::OnWidgetGeometryChanged);
+        smartLoader_->SetFrameInWidget(*thumbnailWidget, 0, instanceId, 0);
+        thumbnailWidget->SetInteractor(*thumbnailInteractor_);
+      }
+
+      void SelectStudy(const std::string& studyId)
+      {
+        LOG(INFO) << "Selecting study: " << studyId;
+        context_->GetOrthancApiClient()->GetJsonAsync(
+          "/studies/" + studyId, new Deprecated::DeprecatedCallable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>
+          (GetSharedObserver(), &SimpleViewerApplication::OnStudyReceived));
+      }
+
+      void OnWidgetGeometryChanged(const Deprecated::SliceViewerWidget::GeometryChangedMessage& message)
+      {
+        // TODO: The "const_cast" could probably be replaced by "mainWidget"
+        const_cast<Deprecated::SliceViewerWidget&>(message.GetOrigin()).FitContent();
+      }
+
+      void SelectSeriesInMainViewport(const std::string& seriesId)
+      {
+        Deprecated::SliceViewerWidget& widget = dynamic_cast<Deprecated::SliceViewerWidget&>(*GetCentralWidget());
+        smartLoader_->SetFrameInWidget(widget, 0, instancesIdsPerSeriesId_[seriesId][0], 0);
+      }
+
+      const Orthanc::Font& GetFont() const
+      {
+        return font_;
+      }
+      
+      virtual void OnPushButton1Clicked() {}
+      virtual void OnPushButton2Clicked() {}
+      virtual void OnTool1Clicked() { currentTool_ = Tool_LineMeasure;}
+      virtual void OnTool2Clicked() { currentTool_ = Tool_CircleMeasure;}
+
+      virtual void GetButtonNames(std::string& pushButton1,
+                                  std::string& pushButton2,
+                                  std::string& tool1,
+                                  std::string& tool2)
+      {
+        tool1 = "line";
+        tool2 = "circle";
+        pushButton1 = "action1";
+        pushButton2 = "action2";
+      }
+
+#if ORTHANC_ENABLE_WASM==1
+      virtual void InitializeWasm()
+      {
+        AttachWidgetToWasmViewport("canvas", thumbnailsLayout_);
+        AttachWidgetToWasmViewport("canvas2", widget);
+      }
+#endif
+
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleFrameApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,268 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "SampleApplicationBase.h"
+
+#include "../../../Framework/Deprecated/Layers/DicomSeriesVolumeSlicer.h"
+#include "../../../Framework/Deprecated/Widgets/SliceViewerWidget.h"
+
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+
+#include <boost/math/constants/constants.hpp>
+
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class SingleFrameApplication :
+      public SampleSingleCanvasApplicationBase,
+      public ObserverBase<SingleFrameApplication>
+    {
+    private:
+      class Interactor : public Deprecated::IWorldSceneInteractor
+      {
+      private:
+        SingleFrameApplication&  application_;
+        
+      public:
+        Interactor(SingleFrameApplication&  application) :
+          application_(application)
+        {
+        }
+        
+        virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
+                                                                        const Deprecated::ViewportGeometry& view,
+                                                                        MouseButton button,
+                                                                        KeyboardModifiers modifiers,
+                                                                        int viewportX,
+                                                                        int viewportY,
+                                                                        double x,
+                                                                        double y,
+                                                                        Deprecated::IStatusBar* statusBar,
+                                                                        const std::vector<Deprecated::Touch>& displayTouches)
+        {
+          return NULL;
+        }
+
+        virtual void MouseOver(CairoContext& context,
+                               Deprecated::WorldSceneWidget& widget,
+                               const Deprecated::ViewportGeometry& view,
+                               double x,
+                               double y,
+                               Deprecated::IStatusBar* statusBar)
+        {
+          if (statusBar != NULL)
+          {
+            Vector p = dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice().MapSliceToWorldCoordinates(x, y);
+            
+            char buf[64];
+            sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)", 
+                    p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
+            statusBar->SetMessage(buf);
+          }
+        }
+
+        virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
+                                MouseWheelDirection direction,
+                                KeyboardModifiers modifiers,
+                                Deprecated::IStatusBar* statusBar)
+        {
+          int scale = (modifiers & KeyboardModifiers_Control ? 10 : 1);
+          
+          switch (direction)
+          {
+            case MouseWheelDirection_Up:
+              application_.OffsetSlice(-scale);
+              break;
+
+            case MouseWheelDirection_Down:
+              application_.OffsetSlice(scale);
+              break;
+
+            default:
+              break;
+          }
+        }
+
+        virtual void KeyPressed(Deprecated::WorldSceneWidget& widget,
+                                KeyboardKeys key,
+                                char keyChar,
+                                KeyboardModifiers modifiers,
+                                Deprecated::IStatusBar* statusBar)
+        {
+          switch (keyChar)
+          {
+            case 's':
+              widget.FitContent();
+              break;
+
+            default:
+              break;
+          }
+        }
+      };
+
+
+      void OffsetSlice(int offset)
+      {
+        if (source_)
+        {
+          int slice = static_cast<int>(slice_) + offset;
+
+          if (slice < 0)
+          {
+            slice = 0;
+          }
+
+          if (slice >= static_cast<int>(source_->GetSlicesCount()))
+          {
+            slice = static_cast<int>(source_->GetSlicesCount()) - 1;
+          }
+
+          if (slice != static_cast<int>(slice_)) 
+          {
+            SetSlice(slice);
+          }   
+        }
+      }
+
+
+      void SetSlice(size_t index)
+      {
+        if (source_ &&
+            index < source_->GetSlicesCount())
+        {
+          slice_ = static_cast<unsigned int>(index);
+          
+#if 1
+          widget_->SetSlice(source_->GetSlice(slice_).GetGeometry());
+#else
+          // TEST for scene extents - Rotate the axes
+          double a = 15.0 / 180.0 * boost::math::constants::pi<double>();
+
+#if 1
+          Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
+          Vector y; GeometryToolbox::AssignVector(y, -sin(a), cos(a), 0);
+#else
+          // Flip the normal
+          Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
+          Vector y; GeometryToolbox::AssignVector(y, sin(a), -cos(a), 0);
+#endif
+          
+          SliceGeometry s(source_->GetSlice(slice_).GetGeometry().GetOrigin(), x, y);
+          widget_->SetSlice(s);
+#endif
+        }
+      }
+        
+      
+      void OnMainWidgetGeometryReady(const Deprecated::IVolumeSlicer::GeometryReadyMessage& message)
+      {
+        // Once the geometry of the series is downloaded from Orthanc,
+        // display its middle slice, and adapt the viewport to fit this
+        // slice
+        if (source_ &&
+            source_.get() == &message.GetOrigin())
+        {
+          SetSlice(source_->GetSlicesCount() / 2);
+        }
+
+        widget_->FitContent();
+      }
+
+      boost::shared_ptr<Deprecated::SliceViewerWidget>  widget_;
+      std::unique_ptr<Interactor>         mainWidgetInteractor_;
+      boost::shared_ptr<Deprecated::DicomSeriesVolumeSlicer> source_;
+      unsigned int                      slice_;
+
+    public:
+      SingleFrameApplication() :
+        slice_(0)
+      {
+      }
+      
+      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
+      {
+        boost::program_options::options_description generic("Sample options");
+        generic.add_options()
+          ("instance", boost::program_options::value<std::string>(), 
+           "Orthanc ID of the instance")
+          ("frame", boost::program_options::value<unsigned int>()->default_value(0),
+           "Number of the frame, for multi-frame DICOM instances")
+          ("smooth", boost::program_options::value<bool>()->default_value(true), 
+           "Enable bilinear interpolation to smooth the image")
+          ;
+
+        options.add(generic);    
+      }
+
+      virtual void Initialize(StoneApplicationContext* context,
+                              Deprecated::IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters)
+      {
+        using namespace OrthancStone;
+
+        context_ = context;
+
+        statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
+
+        if (parameters.count("instance") != 1)
+        {
+          LOG(ERROR) << "The instance ID is missing";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+
+        std::string instance = parameters["instance"].as<std::string>();
+        int frame = parameters["frame"].as<unsigned int>();
+
+        widget_.reset(new Deprecated::SliceViewerWidget("main-widget"));
+        SetCentralWidget(widget_);
+
+        boost::shared_ptr<Deprecated::DicomSeriesVolumeSlicer> layer(new Deprecated::DicomSeriesVolumeSlicer);
+        layer->Connect(context->GetOrthancApiClient());
+        source_ = layer;
+
+        layer->LoadFrame(instance, frame);
+        Register<Deprecated::IVolumeSlicer::GeometryReadyMessage>(*layer, &SingleFrameApplication::OnMainWidgetGeometryReady);
+        widget_->AddLayer(layer);
+
+        Deprecated::RenderStyle s;
+
+        if (parameters["smooth"].as<bool>())
+        {
+          s.interpolation_ = ImageInterpolation_Bilinear;
+        }
+
+        widget_->SetLayerStyle(0, s);
+        widget_->SetTransmitMouseOver(true);
+
+        mainWidgetInteractor_.reset(new Interactor(*this));
+        widget_->SetInteractor(*mainWidgetInteractor_);
+      }
+    };
+
+
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleFrameEditorApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,531 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "SampleApplicationBase.h"
+
+#include "../../../Framework/Radiography/RadiographyLayerCropTracker.h"
+#include "../../../Framework/Radiography/RadiographyLayerMaskTracker.h"
+#include "../../../Framework/Radiography/RadiographyLayerMoveTracker.h"
+#include "../../../Framework/Radiography/RadiographyLayerResizeTracker.h"
+#include "../../../Framework/Radiography/RadiographyLayerRotateTracker.h"
+#include "../../../Framework/Radiography/RadiographyMaskLayer.h"
+#include "../../../Framework/Radiography/RadiographyScene.h"
+#include "../../../Framework/Radiography/RadiographySceneCommand.h"
+#include "../../../Framework/Radiography/RadiographySceneReader.h"
+#include "../../../Framework/Radiography/RadiographySceneWriter.h"
+#include "../../../Framework/Radiography/RadiographyWidget.h"
+#include "../../../Framework/Radiography/RadiographyWindowingTracker.h"
+#include "../../../Framework/Toolbox/TextRenderer.h"
+
+#include <Core/HttpClient.h>
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+#include <Core/Images/PngWriter.h>
+#include <Core/Images/PngReader.h>
+
+
+// Export using PAM is faster than using PNG, but requires Orthanc
+// core >= 1.4.3
+#define EXPORT_USING_PAM  1
+
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class RadiographyEditorInteractor :
+        public Deprecated::IWorldSceneInteractor,
+        public ObserverBase<RadiographyEditorInteractor>
+    {
+    private:
+      enum Tool
+      {
+        Tool_Move,
+        Tool_Rotate,
+        Tool_Crop,
+        Tool_Resize,
+        Tool_Mask,
+        Tool_Windowing
+      };
+
+
+      StoneApplicationContext*  context_;
+      UndoRedoStack             undoRedoStack_;
+      Tool                      tool_;
+      RadiographyMaskLayer*     maskLayer_;
+
+
+      static double GetHandleSize()
+      {
+        return 10.0;
+      }
+
+
+    public:
+      RadiographyEditorInteractor() :
+        context_(NULL),
+        tool_(Tool_Move),
+        maskLayer_(NULL)
+      {
+      }
+
+      void SetContext(StoneApplicationContext& context)
+      {
+        context_ = &context;
+      }
+
+      void SetMaskLayer(RadiographyMaskLayer* maskLayer)
+      {
+        maskLayer_ = maskLayer;
+      }
+      virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& worldWidget,
+                                                                      const Deprecated::ViewportGeometry& view,
+                                                                      MouseButton button,
+                                                                      KeyboardModifiers modifiers,
+                                                                      int viewportX,
+                                                                      int viewportY,
+                                                                      double x,
+                                                                      double y,
+                                                                      Deprecated::IStatusBar* statusBar,
+                                                                      const std::vector<Deprecated::Touch>& displayTouches)
+      {
+        RadiographyWidget& widget = dynamic_cast<RadiographyWidget&>(worldWidget);
+
+        if (button == MouseButton_Left)
+        {
+          size_t selected;
+
+          if (tool_ == Tool_Windowing)
+          {
+            return new RadiographyWindowingTracker(
+                  undoRedoStack_,
+                  widget.GetScene(),
+                  widget,
+                  OrthancStone::ImageInterpolation_Nearest,
+                  viewportX, viewportY,
+                  RadiographyWindowingTracker::Action_DecreaseWidth,
+                  RadiographyWindowingTracker::Action_IncreaseWidth,
+                  RadiographyWindowingTracker::Action_DecreaseCenter,
+                  RadiographyWindowingTracker::Action_IncreaseCenter);
+          }
+          else if (!widget.LookupSelectedLayer(selected))
+          {
+            // No layer is currently selected
+            size_t layer;
+            if (widget.GetScene().LookupLayer(layer, x, y))
+            {
+              widget.Select(layer);
+            }
+
+            return NULL;
+          }
+          else if (tool_ == Tool_Crop ||
+                   tool_ == Tool_Resize ||
+                   tool_ == Tool_Mask)
+          {
+            RadiographyScene::LayerAccessor accessor(widget.GetScene(), selected);
+            
+            ControlPoint controlPoint;
+            if (accessor.GetLayer().LookupControlPoint(controlPoint, x, y, view.GetZoom(), GetHandleSize()))
+            {
+              switch (tool_)
+              {
+              case Tool_Crop:
+                return new RadiographyLayerCropTracker
+                    (undoRedoStack_, widget.GetScene(), view, selected, controlPoint);
+
+              case Tool_Mask:
+                return new RadiographyLayerMaskTracker
+                    (undoRedoStack_, widget.GetScene(), view, selected, controlPoint);
+
+              case Tool_Resize:
+                return new RadiographyLayerResizeTracker
+                    (undoRedoStack_, widget.GetScene(), selected, controlPoint,
+                     (modifiers & KeyboardModifiers_Shift));
+
+              default:
+                throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+              }
+            }
+            else
+            {
+              size_t layer;
+
+              if (widget.GetScene().LookupLayer(layer, x, y))
+              {
+                widget.Select(layer);
+              }
+              else
+              {
+                widget.Unselect();
+              }
+
+              return NULL;
+            }
+          }
+          else
+          {
+            size_t layer;
+
+            if (widget.GetScene().LookupLayer(layer, x, y))
+            {
+              if (layer == selected)
+              {
+                switch (tool_)
+                {
+                case Tool_Move:
+                  return new RadiographyLayerMoveTracker
+                      (undoRedoStack_, widget.GetScene(), layer, x, y,
+                       (modifiers & KeyboardModifiers_Shift));
+
+                case Tool_Rotate:
+                  return new RadiographyLayerRotateTracker
+                      (undoRedoStack_, widget.GetScene(), view, layer, x, y,
+                       (modifiers & KeyboardModifiers_Shift));
+
+                default:
+                  break;
+                }
+
+                return NULL;
+              }
+              else
+              {
+                widget.Select(layer);
+                return NULL;
+              }
+            }
+            else
+            {
+              widget.Unselect();
+              return NULL;
+            }
+          }
+        }
+        else
+        {
+          return NULL;
+        }
+        return NULL;
+      }
+
+      virtual void MouseOver(CairoContext& context,
+                             Deprecated::WorldSceneWidget& worldWidget,
+                             const Deprecated::ViewportGeometry& view,
+                             double x,
+                             double y,
+                             Deprecated::IStatusBar* statusBar)
+      {
+        RadiographyWidget& widget = dynamic_cast<RadiographyWidget&>(worldWidget);
+
+#if 0
+        if (statusBar != NULL)
+        {
+          char buf[64];
+          sprintf(buf, "X = %.02f Y = %.02f (in cm)", x / 10.0, y / 10.0);
+          statusBar->SetMessage(buf);
+        }
+#endif
+
+        size_t selected;
+
+        if (widget.LookupSelectedLayer(selected) &&
+            (tool_ == Tool_Crop ||
+             tool_ == Tool_Resize ||
+             tool_ == Tool_Mask))
+        {
+          RadiographyScene::LayerAccessor accessor(widget.GetScene(), selected);
+
+          ControlPoint controlPoint;
+          if (accessor.GetLayer().LookupControlPoint(controlPoint, x, y, view.GetZoom(), GetHandleSize()))
+          {
+            double z = 1.0 / view.GetZoom();
+
+            context.SetSourceColor(255, 0, 0);
+            cairo_t* cr = context.GetObject();
+            cairo_set_line_width(cr, 2.0 * z);
+            cairo_move_to(cr, controlPoint.x - GetHandleSize() * z, controlPoint.y - GetHandleSize() * z);
+            cairo_line_to(cr, controlPoint.x + GetHandleSize() * z, controlPoint.y - GetHandleSize() * z);
+            cairo_line_to(cr, controlPoint.x + GetHandleSize() * z, controlPoint.y + GetHandleSize() * z);
+            cairo_line_to(cr, controlPoint.x - GetHandleSize() * z, controlPoint.y + GetHandleSize() * z);
+            cairo_line_to(cr, controlPoint.x - GetHandleSize() * z, controlPoint.y - GetHandleSize() * z);
+            cairo_stroke(cr);
+          }
+        }
+      }
+
+      virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
+                              MouseWheelDirection direction,
+                              KeyboardModifiers modifiers,
+                              Deprecated::IStatusBar* statusBar)
+      {
+      }
+
+      virtual void KeyPressed(Deprecated::WorldSceneWidget& worldWidget,
+                              KeyboardKeys key,
+                              char keyChar,
+                              KeyboardModifiers modifiers,
+                              Deprecated::IStatusBar* statusBar)
+      {
+        RadiographyWidget& widget = dynamic_cast<RadiographyWidget&>(worldWidget);
+
+        switch (keyChar)
+        {
+        case 'a':
+          widget.FitContent();
+          break;
+
+        case 'c':
+          tool_ = Tool_Crop;
+          break;
+
+        case 'm':
+          tool_ = Tool_Mask;
+          widget.Select(1);
+          break;
+
+        case 'd':
+        {
+          // dump to json and reload
+          Json::Value snapshot;
+          RadiographySceneWriter writer;
+          writer.Write(snapshot, widget.GetScene());
+
+          LOG(INFO) << "JSON export was successful: "
+                    << snapshot.toStyledString();
+
+          boost::shared_ptr<RadiographyScene> scene(new RadiographyScene);
+          RadiographySceneReader reader(*scene, *context_->GetOrthancApiClient());
+          reader.Read(snapshot);
+
+          widget.SetScene(scene);
+        };break;
+
+        case 'e':
+        {
+          Orthanc::DicomMap tags;
+
+          // Minimal set of tags to generate a valid CR image
+          tags.SetValue(Orthanc::DICOM_TAG_ACCESSION_NUMBER, "NOPE", false);
+          tags.SetValue(Orthanc::DICOM_TAG_BODY_PART_EXAMINED, "PELVIS", false);
+          tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "1", false);
+          //tags.SetValue(Orthanc::DICOM_TAG_LATERALITY, "", false);
+          tags.SetValue(Orthanc::DICOM_TAG_MANUFACTURER, "OSIMIS", false);
+          tags.SetValue(Orthanc::DICOM_TAG_MODALITY, "CR", false);
+          tags.SetValue(Orthanc::DICOM_TAG_PATIENT_BIRTH_DATE, "20000101", false);
+          tags.SetValue(Orthanc::DICOM_TAG_PATIENT_ID, "hello", false);
+          tags.SetValue(Orthanc::DICOM_TAG_PATIENT_NAME, "HELLO^WORLD", false);
+          tags.SetValue(Orthanc::DICOM_TAG_PATIENT_ORIENTATION, "", false);
+          tags.SetValue(Orthanc::DICOM_TAG_PATIENT_SEX, "M", false);
+          tags.SetValue(Orthanc::DICOM_TAG_REFERRING_PHYSICIAN_NAME, "HOUSE^MD", false);
+          tags.SetValue(Orthanc::DICOM_TAG_SERIES_NUMBER, "1", false);
+          tags.SetValue(Orthanc::DICOM_TAG_SOP_CLASS_UID, "1.2.840.10008.5.1.4.1.1.1", false);
+          tags.SetValue(Orthanc::DICOM_TAG_STUDY_ID, "STUDY", false);
+          tags.SetValue(Orthanc::DICOM_TAG_VIEW_POSITION, "", false);
+
+          if (context_ != NULL)
+          {
+            widget.GetScene().ExportDicom(*context_->GetOrthancApiClient(),
+                                          tags, std::string(), 0.1, 0.1, widget.IsInverted(),
+                                          false /* autoCrop */, widget.GetInterpolation(), EXPORT_USING_PAM);
+          }
+
+          break;
+        }
+
+        case 'i':
+          widget.SwitchInvert();
+          break;
+
+        case 't':
+          tool_ = Tool_Move;
+          break;
+
+        case 'n':
+        {
+          switch (widget.GetInterpolation())
+          {
+          case ImageInterpolation_Nearest:
+            LOG(INFO) << "Switching to bilinear interpolation";
+            widget.SetInterpolation(ImageInterpolation_Bilinear);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            LOG(INFO) << "Switching to nearest neighbor interpolation";
+            widget.SetInterpolation(ImageInterpolation_Nearest);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+          }
+          
+          break;
+        }
+
+        case 'r':
+          tool_ = Tool_Rotate;
+          break;
+
+        case 's':
+          tool_ = Tool_Resize;
+          break;
+
+        case 'w':
+          tool_ = Tool_Windowing;
+          break;
+
+        case 'y':
+          if (modifiers & KeyboardModifiers_Control)
+          {
+            undoRedoStack_.Redo();
+            widget.NotifyContentChanged();
+          }
+          break;
+
+        case 'z':
+          if (modifiers & KeyboardModifiers_Control)
+          {
+            undoRedoStack_.Undo();
+            widget.NotifyContentChanged();
+          }
+          break;
+
+        default:
+          break;
+        }
+      }
+    };
+
+
+
+    class SingleFrameEditorApplication :
+        public SampleSingleCanvasApplicationBase,
+        public IObserver
+    {
+    private:
+      boost::shared_ptr<RadiographyScene>   scene_;
+      RadiographyEditorInteractor           interactor_;
+      RadiographyMaskLayer*                 maskLayer_;
+
+    public:
+      virtual ~SingleFrameEditorApplication()
+      {
+        LOG(WARNING) << "Destroying the application";
+      }
+      
+      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
+      {
+        boost::program_options::options_description generic("Sample options");
+        generic.add_options()
+            ("instance", boost::program_options::value<std::string>(),
+             "Orthanc ID of the instance")
+            ("frame", boost::program_options::value<unsigned int>()->default_value(0),
+             "Number of the frame, for multi-frame DICOM instances")
+            ;
+
+        options.add(generic);
+      }
+
+      virtual void Initialize(StoneApplicationContext* context,
+                              Deprecated::IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters)
+      {
+        using namespace OrthancStone;
+
+        context_ = context;
+        interactor_.SetContext(*context);
+
+        statusBar.SetMessage("Use the key \"a\" to reinitialize the layout");
+        statusBar.SetMessage("Use the key \"c\" to crop");
+        statusBar.SetMessage("Use the key \"e\" to export DICOM to the Orthanc server");
+        statusBar.SetMessage("Use the key \"f\" to switch full screen");
+        statusBar.SetMessage("Use the key \"i\" to invert contrast");
+        statusBar.SetMessage("Use the key \"m\" to modify the mask");
+        statusBar.SetMessage("Use the key \"n\" to switch between nearest neighbor and bilinear interpolation");
+        statusBar.SetMessage("Use the key \"r\" to rotate objects");
+        statusBar.SetMessage("Use the key \"s\" to resize objects (not applicable to DICOM layers)");
+        statusBar.SetMessage("Use the key \"t\" to move (translate) objects");
+        statusBar.SetMessage("Use the key \"w\" to change windowing");
+        
+        statusBar.SetMessage("Use the key \"ctrl-z\" to undo action");
+        statusBar.SetMessage("Use the key \"ctrl-y\" to redo action");
+
+        if (parameters.count("instance") != 1)
+        {
+          LOG(ERROR) << "The instance ID is missing";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+
+        std::string instance = parameters["instance"].as<std::string>();
+        //int frame = parameters["frame"].as<unsigned int>();
+
+        scene_.reset(new RadiographyScene);
+        
+        RadiographyLayer& dicomLayer = scene_->LoadDicomFrame(*context->GetOrthancApiClient(), instance, 0, false, NULL);
+        //scene_->LoadDicomFrame(instance, frame, false); //.SetPan(200, 0);
+        // = scene_->LoadDicomFrame(context->GetOrthancApiClient(), "61f3143e-96f34791-ad6bbb8d-62559e75-45943e1b", 0, false, NULL);
+
+#if !defined(ORTHANC_ENABLE_WASM) || ORTHANC_ENABLE_WASM != 1
+        Orthanc::HttpClient::ConfigureSsl(true, "/etc/ssl/certs/ca-certificates.crt");
+#endif
+        
+        //scene_->LoadDicomWebFrame(context->GetWebService());
+        
+        std::vector<Orthanc::ImageProcessing::ImagePoint> mask;
+        mask.push_back(Orthanc::ImageProcessing::ImagePoint(1100, 100));
+        mask.push_back(Orthanc::ImageProcessing::ImagePoint(1100, 1000));
+        mask.push_back(Orthanc::ImageProcessing::ImagePoint(2000, 1000));
+        mask.push_back(Orthanc::ImageProcessing::ImagePoint(2200, 150));
+        mask.push_back(Orthanc::ImageProcessing::ImagePoint(1500, 550));
+        maskLayer_ = dynamic_cast<RadiographyMaskLayer*>(&(scene_->LoadMask(mask, dynamic_cast<RadiographyDicomLayer&>(dicomLayer), 128.0f, NULL)));
+        interactor_.SetMaskLayer(maskLayer_);
+
+        {
+          std::unique_ptr<Orthanc::ImageAccessor> renderedTextAlpha(TextRenderer::Render(Orthanc::EmbeddedResources::UBUNTU_FONT, 100,
+                                                                                    "%öÇaA&#"));
+          RadiographyLayer& layer = scene_->LoadAlphaBitmap(renderedTextAlpha.release(), NULL);
+          dynamic_cast<RadiographyAlphaLayer&>(layer).SetForegroundValue(200.0f * 256.0f);
+        }
+
+        {
+          RadiographyTextLayer::RegisterFont("ubuntu", Orthanc::EmbeddedResources::UBUNTU_FONT);
+          RadiographyLayer& layer = scene_->LoadText("Hello\nworld", "ubuntu", 20, 128, NULL, false);
+          layer.SetResizeable(true);
+        }
+        
+        {
+          RadiographyLayer& layer = scene_->LoadTestBlock(100, 50, NULL);
+          layer.SetResizeable(true);
+          layer.SetPan(0, 200);
+        }
+        
+        boost::shared_ptr<RadiographyWidget> widget(new RadiographyWidget(scene_, "main-widget"));
+        widget->SetTransmitMouseOver(true);
+        widget->SetInteractor(interactor_);
+        SetCentralWidget(widget);
+
+        //scene_->SetWindowing(128, 256);
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleVolumeApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,277 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "SampleApplicationBase.h"
+#include "../../../Framework/dev.h"
+#include "../../../Framework/Layers/LineMeasureTracker.h"
+#include "../../../Framework/Layers/CircleMeasureTracker.h"
+
+#include <Core/Toolbox.h>
+#include <Core/Logging.h>
+
+#include <Plugins/Samples/Common/OrthancHttpConnection.h>   // TODO REMOVE
+#include "../../../Framework/Layers/DicomStructureSetSlicer.h"   // TODO REMOVE
+#include "../../../Framework/Toolbox/MessagingToolbox.h"   // TODO REMOVE
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class SingleVolumeApplication : public SampleApplicationBase
+    {
+    private:
+      class Interactor : public VolumeImageInteractor
+      {
+      private:
+        SliceViewerWidget&  widget_;
+        size_t        layer_;
+        
+      protected:
+        virtual void NotifySliceContentChange(const ISlicedVolume& volume,
+                                       const size_t& sliceIndex,
+                                       const Slice& slice)
+        {
+          const OrthancVolumeImage& image = dynamic_cast<const OrthancVolumeImage&>(volume);
+
+          RenderStyle s = widget_.GetLayerStyle(layer_);
+
+          if (image.FitWindowingToRange(s, slice.GetConverter()))
+          {
+            //printf("Windowing: %f => %f\n", s.customWindowCenter_, s.customWindowWidth_);
+            widget_.SetLayerStyle(layer_, s);
+          }
+        }
+
+        virtual void MouseOver(CairoContext& context,
+                               WorldSceneWidget& widget,
+                               const ViewportGeometry& view,
+                               double x,
+                               double y,
+                               IStatusBar* statusBar)
+        {
+          const SliceViewerWidget& w = dynamic_cast<const SliceViewerWidget&>(widget);
+          Vector p = w.GetSlice().MapSliceToWorldCoordinates(x, y);
+          printf("%f %f %f\n", p[0], p[1], p[2]);
+        }
+      
+      public:
+        Interactor(OrthancVolumeImage& volume,
+                   SliceViewerWidget& widget,
+                   VolumeProjection projection,
+                   size_t layer) :
+          VolumeImageInteractor(volume, widget, projection),
+          widget_(widget),
+          layer_(layer)
+        {
+        }
+      };
+
+
+    public:
+      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
+      {
+        boost::program_options::options_description generic("Sample options");
+        generic.add_options()
+          ("series", boost::program_options::value<std::string>(), 
+           "Orthanc ID of the series")
+          ("instance", boost::program_options::value<std::string>(), 
+           "Orthanc ID of a multi-frame instance that describes a 3D volume")
+          ("threads", boost::program_options::value<unsigned int>()->default_value(3), 
+           "Number of download threads")
+          ("projection", boost::program_options::value<std::string>()->default_value("axial"), 
+           "Projection of interest (can be axial, sagittal or coronal)")
+          ("reverse", boost::program_options::value<bool>()->default_value(false), 
+           "Reverse the normal direction of the volume")
+          ;
+
+        options.add(generic);    
+      }
+
+      virtual void Initialize(IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters)
+      {
+        using namespace OrthancStone;
+
+        if (parameters.count("series") > 1 ||
+            parameters.count("instance") > 1)
+        {
+          LOG(ERROR) << "Only one series or instance is allowed";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+
+        if (parameters.count("series") == 1 &&
+            parameters.count("instance") == 1)
+        {
+          LOG(ERROR) << "Cannot specify both a series and an instance";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+
+        std::string series;
+        if (parameters.count("series") == 1)
+        {
+          series = parameters["series"].as<std::string>();
+        }
+        
+        std::string instance;
+        if (parameters.count("instance") == 1)
+        {
+          instance = parameters["instance"].as<std::string>();
+        }
+        
+        if (series.empty() &&
+            instance.empty())
+        {
+          LOG(ERROR) << "The series ID or instance ID is missing";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+
+        //unsigned int threads = parameters["threads"].as<unsigned int>();
+        //bool reverse = parameters["reverse"].as<bool>();
+
+        std::string tmp = parameters["projection"].as<std::string>();
+        Orthanc::Toolbox::ToLowerCase(tmp);
+
+        VolumeProjection projection;
+        if (tmp == "axial")
+        {
+          projection = VolumeProjection_Axial;
+        }
+        else if (tmp == "sagittal")
+        {
+          projection = VolumeProjection_Sagittal;
+        }
+        else if (tmp == "coronal")
+        {
+          projection = VolumeProjection_Coronal;
+        }
+        else
+        {
+          LOG(ERROR) << "Unknown projection: " << tmp;
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+
+        std::unique_ptr<SliceViewerWidget> widget(new SliceViewerWidget);
+
+#if 1
+        std::unique_ptr<OrthancVolumeImage> volume(new OrthancVolumeImage(context.GetWebService(), true));
+        if (series.empty())
+        {
+          volume->ScheduleLoadInstance(instance);
+        }
+        else
+        {
+          volume->ScheduleLoadSeries(series);
+        }
+
+        widget->AddLayer(new VolumeImageMPRSlicer(*volume));
+
+        context_->AddInteractor(new Interactor(*volume, *widget, projection, 0));
+        context_->AddSlicedVolume(volume.release());
+
+        if (1)
+        {
+          RenderStyle s;
+          //s.drawGrid_ = true;
+          s.alpha_ = 1;
+          s.windowing_ = ImageWindowing_Bone;
+          widget->SetLayerStyle(0, s);
+        }
+        else
+        {
+          RenderStyle s;
+          s.alpha_ = 1;
+          s.applyLut_ = true;
+          s.lut_ = Orthanc::EmbeddedResources::COLORMAP_JET;
+          s.interpolation_ = ImageInterpolation_Bilinear;
+          widget->SetLayerStyle(0, s);
+        }
+#else
+        std::unique_ptr<OrthancVolumeImage> ct(new OrthancVolumeImage(context_->GetWebService(), false));
+        //ct->ScheduleLoadSeries("15a6f44a-ac7b88fe-19c462d9-dddd918e-b01550d8");  // 0178023P
+        //ct->ScheduleLoadSeries("dd069910-4f090474-7d2bba07-e5c10783-f9e4fb1d");
+        //ct->ScheduleLoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");  // IBA
+        //ct->ScheduleLoadSeries("03677739-1d8bca40-db1daf59-d74ff548-7f6fc9c0");  // 0522c0001 TCIA
+        ct->ScheduleLoadSeries("295e8a13-dfed1320-ba6aebb2-9a13e20f-1b3eb953");  // Captain
+        
+        std::unique_ptr<OrthancVolumeImage> pet(new OrthancVolumeImage(context_->GetWebService(), true));
+        //pet->ScheduleLoadSeries("48d2997f-8e25cd81-dd715b64-bd79cdcc-e8fcee53");  // 0178023P
+        //pet->ScheduleLoadSeries("aabad2e7-80702b5d-e599d26c-4f13398e-38d58a9e");
+        //pet->ScheduleLoadInstance("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb"); // IBA 1
+        //pet->ScheduleLoadInstance("337876a1-a68a9718-f15abccd-38faafa1-b99b496a"); // IBA 2
+        //pet->ScheduleLoadInstance("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb");  // IBA 3
+        //pet->ScheduleLoadInstance("269f26f4-0c83eeeb-2e67abbd-5467a40f-f1bec90c");  // 0522c0001 TCIA
+        pet->ScheduleLoadInstance("f080888c-0ab7528a-f7d9c28c-84980eb1-ff3b0ae6");  // Captain 1
+        //pet->ScheduleLoadInstance("4f78055b-6499a2c5-1e089290-394acc05-3ec781c1");  // Captain 2
+
+        std::unique_ptr<StructureSetLoader> rtStruct(new StructureSetLoader(context_->GetWebService()));
+        //rtStruct->ScheduleLoadInstance("c2ebc17b-6b3548db-5e5da170-b8ecab71-ea03add3");  // 0178023P
+        //rtStruct->ScheduleLoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");  // IBA
+        //rtStruct->ScheduleLoadInstance("17cd032b-ad92a438-ca05f06a-f9e96668-7e3e9e20");  // 0522c0001 TCIA
+        rtStruct->ScheduleLoadInstance("96c889ab-29fe5c54-dda6e66c-3949e4da-58f90d75");  // Captain
+        
+        widget->AddLayer(new VolumeImageMPRSlicer(*ct));
+        widget->AddLayer(new VolumeImageMPRSlicer(*pet));
+        widget->AddLayer(new DicomStructureSetSlicer(*rtStruct));
+        
+        context_->AddInteractor(new Interactor(*pet, *widget, projection, 1));
+        //context_->AddInteractor(new VolumeImageInteractor(*ct, *widget, projection));
+
+        context_->AddSlicedVolume(ct.release());
+        context_->AddSlicedVolume(pet.release());
+        context_->AddVolumeLoader(rtStruct.release());
+
+        {
+          RenderStyle s;
+          //s.drawGrid_ = true;
+          s.alpha_ = 1;
+          s.windowing_ = ImageWindowing_Bone;
+          widget->SetLayerStyle(0, s);
+        }
+
+        {
+          RenderStyle s;
+          //s.drawGrid_ = true;
+          s.SetColor(255, 0, 0);  // Draw missing PET layer in red
+          s.alpha_ = 0.5;
+          s.applyLut_ = true;
+          s.lut_ = Orthanc::EmbeddedResources::COLORMAP_JET;
+          s.interpolation_ = ImageInterpolation_Bilinear;
+          s.windowing_ = ImageWindowing_Custom;
+          s.customWindowCenter_ = 0;
+          s.customWindowWidth_ = 128;
+          widget->SetLayerStyle(1, s);
+        }
+#endif
+
+
+        statusBar.SetMessage("Use the keys \"b\", \"l\" and \"d\" to change Hounsfield windowing");
+        statusBar.SetMessage("Use the keys \"t\" to track the (X,Y,Z) mouse coordinates");
+        statusBar.SetMessage("Use the keys \"m\" to measure distances");
+        statusBar.SetMessage("Use the keys \"c\" to draw circles");
+
+        widget->SetTransmitMouseOver(true);
+        context_->SetCentralWidget(widget.release());
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands.yml	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,35 @@
+#
+#        1         2         3         4         5         6         7         8
+# 345678901234567890123456789012345678901234567890123456789012345678901234567890
+#
+rootName: StoneSampleCommands
+
+# +---------------------------------+
+# | Messages from TypeScript to C++ |
+# +---------------------------------+
+
+enum Tool:
+  - LineMeasure
+  - CircleMeasure
+  - Crop
+  - Windowing
+  - Zoom
+  - Pan
+  - Move
+  - Rotate
+  - Resize
+  - Mask
+
+struct SelectTool:
+  __handler: cpp
+  tool: Tool
+
+enum ActionType:
+  - UndoCrop
+  - Rotate
+  - Invert
+
+struct Action:
+  __handler: cpp
+  type: ActionType
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generate.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,16 @@
+import sys
+import os
+
+# add the generation script location to the search paths
+sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'Resources', 'CodeGeneration'))
+
+# import the code generation tooling script
+import stonegentool
+
+schemaFile = os.path.join(os.path.dirname(__file__), 'StoneSampleCommands.yml')
+outDir = os.path.dirname(__file__)
+
+# ignition!
+stonegentool.Process(schemaFile, outDir)
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generated.hpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,703 @@
+/*
+         1         2         3         4         5         6         7
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
+
+Generated on 2019-03-18 12:07:42.696093 by stonegentool
+
+*/
+#pragma once
+
+#include <exception>
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <assert.h>
+#include <memory>
+#include <json/json.h>
+
+//#define STONEGEN_NO_CPP11 1
+
+#ifdef STONEGEN_NO_CPP11
+#define StoneSmartPtr std::unique_ptr
+#else 
+#define StoneSmartPtr std::unique_ptr
+#endif 
+
+namespace StoneSampleCommands
+{
+  /** Throws in case of problem */
+  inline void _StoneDeserializeValue(int32_t& destValue, const Json::Value& jsonValue)
+  {
+    destValue = jsonValue.asInt();
+  }
+
+  inline Json::Value _StoneSerializeValue(int32_t value)
+  {
+    Json::Value result(value);
+    return result;
+  }
+
+  inline void _StoneDeserializeValue(Json::Value& destValue, const Json::Value& jsonValue)
+  {
+    destValue = jsonValue;
+  }
+
+  inline Json::Value _StoneSerializeValue(Json::Value value)
+  {
+    return value;
+  }
+
+  /** Throws in case of problem */
+  inline void _StoneDeserializeValue(double& destValue, const Json::Value& jsonValue)
+  {
+    destValue = jsonValue.asDouble();
+  }
+
+  inline Json::Value _StoneSerializeValue(double value)
+  {
+    Json::Value result(value);
+    return result;
+  }
+
+  /** Throws in case of problem */
+  inline void _StoneDeserializeValue(bool& destValue, const Json::Value& jsonValue)
+  {
+    destValue = jsonValue.asBool();
+  }
+
+  inline Json::Value _StoneSerializeValue(bool value)
+  {
+    Json::Value result(value);
+    return result;
+  }
+
+  /** Throws in case of problem */
+  inline void _StoneDeserializeValue(
+       std::string& destValue
+     , const Json::Value& jsonValue)
+  {
+    destValue = jsonValue.asString();
+  }
+
+  inline Json::Value _StoneSerializeValue(const std::string& value)
+  {
+    // the following is better than 
+    Json::Value result(value.data(),value.data()+value.size());
+    return result;
+  }
+
+  inline std::string MakeIndent(size_t indent)
+  {
+    char* txt = reinterpret_cast<char*>(malloc(indent+1)); // NO EXCEPTION BELOW!!!!!!!!!!!!
+    for(size_t i = 0; i < indent; ++i)
+      txt[i] = ' ';
+    txt[indent] = 0;
+    std::string retVal(txt);
+    free(txt); // NO EXCEPTION ABOVE !!!!!!!!!!
+    return retVal;
+  }
+
+  // generic dumper
+  template<typename T>
+  std::ostream& StoneDumpValue(std::ostream& out, const T& value, size_t indent)
+  {
+    out << MakeIndent(indent) << value;
+    return out;
+  }
+
+  // string dumper
+  inline std::ostream& StoneDumpValue(std::ostream& out, const std::string& value, size_t indent)
+  {
+    out << MakeIndent(indent) << "\"" << value  << "\"";
+    return out;
+  }
+
+  /** Throws in case of problem */
+  template<typename T>
+  void _StoneDeserializeValue(
+    std::map<std::string, T>& destValue, const Json::Value& jsonValue)
+  {
+    destValue.clear();
+    for (
+      Json::Value::const_iterator itr = jsonValue.begin();
+      itr != jsonValue.end();
+      itr++)
+    {
+      std::string key;
+      _StoneDeserializeValue(key, itr.key());
+
+      T innerDestValue;
+      _StoneDeserializeValue(innerDestValue, *itr);
+
+      destValue[key] = innerDestValue;
+    }
+  }
+
+  template<typename T>
+  Json::Value _StoneSerializeValue(const std::map<std::string,T>& value)
+  {
+    Json::Value result(Json::objectValue);
+
+    for (typename std::map<std::string, T>::const_iterator it = value.cbegin();
+      it != value.cend(); ++it)
+    {
+      // it->first it->second
+      result[it->first] = _StoneSerializeValue(it->second);
+    }
+    return result;
+  }
+
+  template<typename T>
+  std::ostream& StoneDumpValue(std::ostream& out, const std::map<std::string,T>& value, size_t indent)
+  {
+    out << MakeIndent(indent) << "{\n";
+    for (typename std::map<std::string, T>::const_iterator it = value.cbegin();
+      it != value.cend(); ++it)
+    {
+      out << MakeIndent(indent+2) << "\"" << it->first << "\" : ";
+      StoneDumpValue(out, it->second, indent+2);
+    }
+    out << MakeIndent(indent) << "}\n";
+    return out;
+  }
+
+  /** Throws in case of problem */
+  template<typename T>
+  void _StoneDeserializeValue(
+    std::vector<T>& destValue, const Json::Value& jsonValue)
+  {
+    destValue.clear();
+    destValue.reserve(jsonValue.size());
+    for (Json::Value::ArrayIndex i = 0; i != jsonValue.size(); i++)
+    {
+      T innerDestValue;
+      _StoneDeserializeValue(innerDestValue, jsonValue[i]);
+      destValue.push_back(innerDestValue);
+    }
+  }
+
+  template<typename T>
+  Json::Value _StoneSerializeValue(const std::vector<T>& value)
+  {
+    Json::Value result(Json::arrayValue);
+    for (size_t i = 0; i < value.size(); ++i)
+    {
+      result.append(_StoneSerializeValue(value[i]));
+    }
+    return result;
+  }
+
+  template<typename T>
+  std::ostream& StoneDumpValue(std::ostream& out, const std::vector<T>& value, size_t indent)
+  {
+    out << MakeIndent(indent) << "[\n";
+    for (size_t i = 0; i < value.size(); ++i)
+    {
+      StoneDumpValue(out, value[i], indent+2);
+    }
+    out << MakeIndent(indent) << "]\n";
+    return out;
+  }
+
+  inline void StoneCheckSerializedValueTypeGeneric(const Json::Value& value)
+  {
+    if ((!value.isMember("type")) || (!value["type"].isString()))
+    {
+      std::stringstream ss;
+      ss << "Cannot deserialize value ('type' key invalid)";
+      throw std::runtime_error(ss.str());
+    }
+  }
+
+  inline void StoneCheckSerializedValueType(
+    const Json::Value& value, std::string typeStr)
+  {
+    StoneCheckSerializedValueTypeGeneric(value);
+
+    std::string actTypeStr = value["type"].asString();
+    if (actTypeStr != typeStr)
+    {
+      std::stringstream ss;
+      ss << "Cannot deserialize type" << actTypeStr
+        << "into " << typeStr;
+      throw std::runtime_error(ss.str());
+    }
+  }
+
+  // end of generic methods
+
+// end of generic methods
+
+  enum Tool {
+    Tool_LineMeasure,
+    Tool_CircleMeasure,
+    Tool_Crop,
+    Tool_Windowing,
+    Tool_Zoom,
+    Tool_Pan,
+    Tool_Move,
+    Tool_Rotate,
+    Tool_Resize,
+    Tool_Mask,
+  };
+
+  inline std::string ToString(const Tool& value)
+  {
+    if( value == Tool_LineMeasure)
+    {
+      return std::string("LineMeasure");
+    }
+    if( value == Tool_CircleMeasure)
+    {
+      return std::string("CircleMeasure");
+    }
+    if( value == Tool_Crop)
+    {
+      return std::string("Crop");
+    }
+    if( value == Tool_Windowing)
+    {
+      return std::string("Windowing");
+    }
+    if( value == Tool_Zoom)
+    {
+      return std::string("Zoom");
+    }
+    if( value == Tool_Pan)
+    {
+      return std::string("Pan");
+    }
+    if( value == Tool_Move)
+    {
+      return std::string("Move");
+    }
+    if( value == Tool_Rotate)
+    {
+      return std::string("Rotate");
+    }
+    if( value == Tool_Resize)
+    {
+      return std::string("Resize");
+    }
+    if( value == Tool_Mask)
+    {
+      return std::string("Mask");
+    }
+    std::stringstream ss;
+    ss << "Value \"" << value << "\" cannot be converted to Tool. Possible values are: "
+        << " LineMeasure = " << static_cast<int64_t>(Tool_LineMeasure)  << ", " 
+        << " CircleMeasure = " << static_cast<int64_t>(Tool_CircleMeasure)  << ", " 
+        << " Crop = " << static_cast<int64_t>(Tool_Crop)  << ", " 
+        << " Windowing = " << static_cast<int64_t>(Tool_Windowing)  << ", " 
+        << " Zoom = " << static_cast<int64_t>(Tool_Zoom)  << ", " 
+        << " Pan = " << static_cast<int64_t>(Tool_Pan)  << ", " 
+        << " Move = " << static_cast<int64_t>(Tool_Move)  << ", " 
+        << " Rotate = " << static_cast<int64_t>(Tool_Rotate)  << ", " 
+        << " Resize = " << static_cast<int64_t>(Tool_Resize)  << ", " 
+        << " Mask = " << static_cast<int64_t>(Tool_Mask)  << ", " 
+        << std::endl;
+    std::string msg = ss.str();
+    throw std::runtime_error(msg);
+  }
+
+  inline void FromString(Tool& value, std::string strValue)
+  {
+    if( strValue == std::string("LineMeasure") )
+    {
+      value = Tool_LineMeasure;
+      return;
+    }
+    if( strValue == std::string("CircleMeasure") )
+    {
+      value = Tool_CircleMeasure;
+      return;
+    }
+    if( strValue == std::string("Crop") )
+    {
+      value = Tool_Crop;
+      return;
+    }
+    if( strValue == std::string("Windowing") )
+    {
+      value = Tool_Windowing;
+      return;
+    }
+    if( strValue == std::string("Zoom") )
+    {
+      value = Tool_Zoom;
+      return;
+    }
+    if( strValue == std::string("Pan") )
+    {
+      value = Tool_Pan;
+      return;
+    }
+    if( strValue == std::string("Move") )
+    {
+      value = Tool_Move;
+      return;
+    }
+    if( strValue == std::string("Rotate") )
+    {
+      value = Tool_Rotate;
+      return;
+    }
+    if( strValue == std::string("Resize") )
+    {
+      value = Tool_Resize;
+      return;
+    }
+    if( strValue == std::string("Mask") )
+    {
+      value = Tool_Mask;
+      return;
+    }
+
+    std::stringstream ss;
+    ss << "String \"" << strValue << "\" cannot be converted to Tool. Possible values are: LineMeasure CircleMeasure Crop Windowing Zoom Pan Move Rotate Resize Mask ";
+    std::string msg = ss.str();
+    throw std::runtime_error(msg);
+  }
+
+
+  inline void _StoneDeserializeValue(
+    Tool& destValue, const Json::Value& jsonValue)
+  {
+    FromString(destValue, jsonValue.asString());
+  }
+
+  inline Json::Value _StoneSerializeValue(const Tool& value)
+  {
+    std::string strValue = ToString(value);
+    return Json::Value(strValue);
+  }
+
+  inline std::ostream& StoneDumpValue(std::ostream& out, const Tool& value, size_t indent = 0)
+  {
+    if( value == Tool_LineMeasure)
+    {
+      out << MakeIndent(indent) << "LineMeasure" << std::endl;
+    }
+    if( value == Tool_CircleMeasure)
+    {
+      out << MakeIndent(indent) << "CircleMeasure" << std::endl;
+    }
+    if( value == Tool_Crop)
+    {
+      out << MakeIndent(indent) << "Crop" << std::endl;
+    }
+    if( value == Tool_Windowing)
+    {
+      out << MakeIndent(indent) << "Windowing" << std::endl;
+    }
+    if( value == Tool_Zoom)
+    {
+      out << MakeIndent(indent) << "Zoom" << std::endl;
+    }
+    if( value == Tool_Pan)
+    {
+      out << MakeIndent(indent) << "Pan" << std::endl;
+    }
+    if( value == Tool_Move)
+    {
+      out << MakeIndent(indent) << "Move" << std::endl;
+    }
+    if( value == Tool_Rotate)
+    {
+      out << MakeIndent(indent) << "Rotate" << std::endl;
+    }
+    if( value == Tool_Resize)
+    {
+      out << MakeIndent(indent) << "Resize" << std::endl;
+    }
+    if( value == Tool_Mask)
+    {
+      out << MakeIndent(indent) << "Mask" << std::endl;
+    }
+    return out;
+  }
+
+
+  enum ActionType {
+    ActionType_UndoCrop,
+    ActionType_Rotate,
+    ActionType_Invert,
+  };
+
+  inline std::string ToString(const ActionType& value)
+  {
+    if( value == ActionType_UndoCrop)
+    {
+      return std::string("UndoCrop");
+    }
+    if( value == ActionType_Rotate)
+    {
+      return std::string("Rotate");
+    }
+    if( value == ActionType_Invert)
+    {
+      return std::string("Invert");
+    }
+    std::stringstream ss;
+    ss << "Value \"" << value << "\" cannot be converted to ActionType. Possible values are: "
+        << " UndoCrop = " << static_cast<int64_t>(ActionType_UndoCrop)  << ", " 
+        << " Rotate = " << static_cast<int64_t>(ActionType_Rotate)  << ", " 
+        << " Invert = " << static_cast<int64_t>(ActionType_Invert)  << ", " 
+        << std::endl;
+    std::string msg = ss.str();
+    throw std::runtime_error(msg);
+  }
+
+  inline void FromString(ActionType& value, std::string strValue)
+  {
+    if( strValue == std::string("UndoCrop") )
+    {
+      value = ActionType_UndoCrop;
+      return;
+    }
+    if( strValue == std::string("Rotate") )
+    {
+      value = ActionType_Rotate;
+      return;
+    }
+    if( strValue == std::string("Invert") )
+    {
+      value = ActionType_Invert;
+      return;
+    }
+
+    std::stringstream ss;
+    ss << "String \"" << strValue << "\" cannot be converted to ActionType. Possible values are: UndoCrop Rotate Invert ";
+    std::string msg = ss.str();
+    throw std::runtime_error(msg);
+  }
+
+
+  inline void _StoneDeserializeValue(
+    ActionType& destValue, const Json::Value& jsonValue)
+  {
+    FromString(destValue, jsonValue.asString());
+  }
+
+  inline Json::Value _StoneSerializeValue(const ActionType& value)
+  {
+    std::string strValue = ToString(value);
+    return Json::Value(strValue);
+  }
+
+  inline std::ostream& StoneDumpValue(std::ostream& out, const ActionType& value, size_t indent = 0)
+  {
+    if( value == ActionType_UndoCrop)
+    {
+      out << MakeIndent(indent) << "UndoCrop" << std::endl;
+    }
+    if( value == ActionType_Rotate)
+    {
+      out << MakeIndent(indent) << "Rotate" << std::endl;
+    }
+    if( value == ActionType_Invert)
+    {
+      out << MakeIndent(indent) << "Invert" << std::endl;
+    }
+    return out;
+  }
+
+
+
+#ifdef _MSC_VER
+#pragma region SelectTool
+#endif //_MSC_VER
+
+  struct SelectTool
+  {
+    Tool tool;
+
+    SelectTool(Tool tool = Tool())
+    {
+      this->tool = tool;
+    }
+  };
+
+  inline void _StoneDeserializeValue(SelectTool& destValue, const Json::Value& value)
+  {
+    _StoneDeserializeValue(destValue.tool, value["tool"]);
+    }
+
+  inline Json::Value _StoneSerializeValue(const SelectTool& value)
+  {
+    Json::Value result(Json::objectValue);
+    result["tool"] = _StoneSerializeValue(value.tool);
+
+    return result;
+  }
+
+  inline std::ostream& StoneDumpValue(std::ostream& out, const SelectTool& value, size_t indent = 0)
+  {
+    out << MakeIndent(indent) << "{\n";
+    out << MakeIndent(indent) << "tool:\n";
+    StoneDumpValue(out, value.tool,indent+2);
+    out << "\n";
+
+    out << MakeIndent(indent) << "}\n";
+    return out;
+  }
+
+  inline void StoneDeserialize(SelectTool& destValue, const Json::Value& value)
+  {
+    StoneCheckSerializedValueType(value, "StoneSampleCommands.SelectTool");
+    _StoneDeserializeValue(destValue, value["value"]);
+  }
+
+  inline Json::Value StoneSerializeToJson(const SelectTool& value)
+  {
+    Json::Value result(Json::objectValue);
+    result["type"] = "StoneSampleCommands.SelectTool";
+    result["value"] = _StoneSerializeValue(value);
+    return result;
+  }
+
+  inline std::string StoneSerialize(const SelectTool& value)
+  {
+    Json::Value resultJson = StoneSerializeToJson(value);
+    std::string resultStr = resultJson.toStyledString();
+    return resultStr;
+  }
+
+#ifdef _MSC_VER
+#pragma endregion SelectTool
+#endif //_MSC_VER
+
+#ifdef _MSC_VER
+#pragma region Action
+#endif //_MSC_VER
+
+  struct Action
+  {
+    ActionType type;
+
+    Action(ActionType type = ActionType())
+    {
+      this->type = type;
+    }
+  };
+
+  inline void _StoneDeserializeValue(Action& destValue, const Json::Value& value)
+  {
+    _StoneDeserializeValue(destValue.type, value["type"]);
+    }
+
+  inline Json::Value _StoneSerializeValue(const Action& value)
+  {
+    Json::Value result(Json::objectValue);
+    result["type"] = _StoneSerializeValue(value.type);
+
+    return result;
+  }
+
+  inline std::ostream& StoneDumpValue(std::ostream& out, const Action& value, size_t indent = 0)
+  {
+    out << MakeIndent(indent) << "{\n";
+    out << MakeIndent(indent) << "type:\n";
+    StoneDumpValue(out, value.type,indent+2);
+    out << "\n";
+
+    out << MakeIndent(indent) << "}\n";
+    return out;
+  }
+
+  inline void StoneDeserialize(Action& destValue, const Json::Value& value)
+  {
+    StoneCheckSerializedValueType(value, "StoneSampleCommands.Action");
+    _StoneDeserializeValue(destValue, value["value"]);
+  }
+
+  inline Json::Value StoneSerializeToJson(const Action& value)
+  {
+    Json::Value result(Json::objectValue);
+    result["type"] = "StoneSampleCommands.Action";
+    result["value"] = _StoneSerializeValue(value);
+    return result;
+  }
+
+  inline std::string StoneSerialize(const Action& value)
+  {
+    Json::Value resultJson = StoneSerializeToJson(value);
+    std::string resultStr = resultJson.toStyledString();
+    return resultStr;
+  }
+
+#ifdef _MSC_VER
+#pragma endregion Action
+#endif //_MSC_VER
+
+#ifdef _MSC_VER
+#pragma region Dispatching code
+#endif //_MSC_VER
+
+  class IHandler
+  {
+  public:
+    virtual bool Handle(const SelectTool& value) = 0;
+    virtual bool Handle(const Action& value) = 0;
+  };
+
+  /** Service function for StoneDispatchToHandler */
+  inline bool StoneDispatchJsonToHandler(
+    const Json::Value& jsonValue, IHandler* handler)
+  {
+    StoneCheckSerializedValueTypeGeneric(jsonValue);
+    std::string type = jsonValue["type"].asString();
+    if (type == "")
+    {
+      // this should never ever happen
+      throw std::runtime_error("Caught empty type while dispatching");
+    }
+    else if (type == "StoneSampleCommands.SelectTool")
+    {
+      SelectTool value;
+      _StoneDeserializeValue(value, jsonValue["value"]);
+      return handler->Handle(value);
+    }
+    else if (type == "StoneSampleCommands.Action")
+    {
+      Action value;
+      _StoneDeserializeValue(value, jsonValue["value"]);
+      return handler->Handle(value);
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+  /** Takes a serialized type and passes this to the handler */
+  inline bool StoneDispatchToHandler(std::string strValue, IHandler* handler)
+  {
+    Json::Value readValue;
+
+    Json::CharReaderBuilder builder;
+    Json::CharReader* reader = builder.newCharReader();
+
+    StoneSmartPtr<Json::CharReader> ptr(reader);
+
+    std::string errors;
+
+    bool ok = reader->parse(
+      strValue.c_str(),
+      strValue.c_str() + strValue.size(),
+      &readValue,
+      &errors
+    );
+    if (!ok)
+    {
+      std::stringstream ss;
+      ss << "Jsoncpp parsing error: " << errors;
+      throw std::runtime_error(ss.str());
+    }
+    return StoneDispatchJsonToHandler(readValue, handler);
+  }
+
+#ifdef _MSC_VER
+#pragma endregion Dispatching code
+#endif //_MSC_VER
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generated.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,333 @@
+/*
+         1         2         3         4         5         6         7
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
+
+Generated on 2019-03-18 12:07:42.696093 by stonegentool
+
+*/
+
+function StoneCheckSerializedValueType(value: any, typeStr: string)
+{
+  StoneCheckSerializedValueTypeGeneric(value);
+
+  if (value['type'] != typeStr)
+  {
+    throw new Error(
+      `Cannot deserialize type ${value['type']} into ${typeStr}`);
+  }
+}
+
+function isString(val: any) :boolean
+{
+  return ((typeof val === 'string') || (val instanceof String));
+}
+
+function StoneCheckSerializedValueTypeGeneric(value: any)
+{
+  // console.//log("+-------------------------------------------------+");
+  // console.//log("|            StoneCheckSerializedValueTypeGeneric |");
+  // console.//log("+-------------------------------------------------+");
+  // console.//log("value = ");
+  // console.//log(value);
+  if ( (!('type' in value)) || (!isString(value.type)) )
+  {
+    throw new Error(
+      "Cannot deserialize value ('type' key invalid)");
+  }
+}
+
+// end of generic methods
+
+export enum Tool {
+  LineMeasure = "LineMeasure",
+  CircleMeasure = "CircleMeasure",
+  Crop = "Crop",
+  Windowing = "Windowing",
+  Zoom = "Zoom",
+  Pan = "Pan",
+  Move = "Move",
+  Rotate = "Rotate",
+  Resize = "Resize",
+  Mask = "Mask"
+};
+
+export function Tool_FromString(strValue:string) : Tool
+{
+  if( strValue == "LineMeasure" )
+  {
+    return Tool.LineMeasure;
+  }
+  if( strValue == "CircleMeasure" )
+  {
+    return Tool.CircleMeasure;
+  }
+  if( strValue == "Crop" )
+  {
+    return Tool.Crop;
+  }
+  if( strValue == "Windowing" )
+  {
+    return Tool.Windowing;
+  }
+  if( strValue == "Zoom" )
+  {
+    return Tool.Zoom;
+  }
+  if( strValue == "Pan" )
+  {
+    return Tool.Pan;
+  }
+  if( strValue == "Move" )
+  {
+    return Tool.Move;
+  }
+  if( strValue == "Rotate" )
+  {
+    return Tool.Rotate;
+  }
+  if( strValue == "Resize" )
+  {
+    return Tool.Resize;
+  }
+  if( strValue == "Mask" )
+  {
+    return Tool.Mask;
+  }
+
+  let msg : string =  `String ${strValue} cannot be converted to Tool. Possible values are: LineMeasure, CircleMeasure, Crop, Windowing, Zoom, Pan, Move, Rotate, Resize, Mask`;
+  throw new Error(msg);
+}
+
+export function Tool_ToString(value:Tool) : string
+{
+  if( value == Tool.LineMeasure )
+  {
+    return "LineMeasure";
+  }
+  if( value == Tool.CircleMeasure )
+  {
+    return "CircleMeasure";
+  }
+  if( value == Tool.Crop )
+  {
+    return "Crop";
+  }
+  if( value == Tool.Windowing )
+  {
+    return "Windowing";
+  }
+  if( value == Tool.Zoom )
+  {
+    return "Zoom";
+  }
+  if( value == Tool.Pan )
+  {
+    return "Pan";
+  }
+  if( value == Tool.Move )
+  {
+    return "Move";
+  }
+  if( value == Tool.Rotate )
+  {
+    return "Rotate";
+  }
+  if( value == Tool.Resize )
+  {
+    return "Resize";
+  }
+  if( value == Tool.Mask )
+  {
+    return "Mask";
+  }
+
+  let msg : string = `Value ${value} cannot be converted to Tool. Possible values are: `;
+  {
+    let _LineMeasure_enumValue : string = Tool.LineMeasure; // enums are strings in stonecodegen, so this will work.
+    let msg_LineMeasure : string = `LineMeasure (${_LineMeasure_enumValue}), `;
+    msg = msg + msg_LineMeasure;
+  }
+  {
+    let _CircleMeasure_enumValue : string = Tool.CircleMeasure; // enums are strings in stonecodegen, so this will work.
+    let msg_CircleMeasure : string = `CircleMeasure (${_CircleMeasure_enumValue}), `;
+    msg = msg + msg_CircleMeasure;
+  }
+  {
+    let _Crop_enumValue : string = Tool.Crop; // enums are strings in stonecodegen, so this will work.
+    let msg_Crop : string = `Crop (${_Crop_enumValue}), `;
+    msg = msg + msg_Crop;
+  }
+  {
+    let _Windowing_enumValue : string = Tool.Windowing; // enums are strings in stonecodegen, so this will work.
+    let msg_Windowing : string = `Windowing (${_Windowing_enumValue}), `;
+    msg = msg + msg_Windowing;
+  }
+  {
+    let _Zoom_enumValue : string = Tool.Zoom; // enums are strings in stonecodegen, so this will work.
+    let msg_Zoom : string = `Zoom (${_Zoom_enumValue}), `;
+    msg = msg + msg_Zoom;
+  }
+  {
+    let _Pan_enumValue : string = Tool.Pan; // enums are strings in stonecodegen, so this will work.
+    let msg_Pan : string = `Pan (${_Pan_enumValue}), `;
+    msg = msg + msg_Pan;
+  }
+  {
+    let _Move_enumValue : string = Tool.Move; // enums are strings in stonecodegen, so this will work.
+    let msg_Move : string = `Move (${_Move_enumValue}), `;
+    msg = msg + msg_Move;
+  }
+  {
+    let _Rotate_enumValue : string = Tool.Rotate; // enums are strings in stonecodegen, so this will work.
+    let msg_Rotate : string = `Rotate (${_Rotate_enumValue}), `;
+    msg = msg + msg_Rotate;
+  }
+  {
+    let _Resize_enumValue : string = Tool.Resize; // enums are strings in stonecodegen, so this will work.
+    let msg_Resize : string = `Resize (${_Resize_enumValue}), `;
+    msg = msg + msg_Resize;
+  }
+  {
+    let _Mask_enumValue : string = Tool.Mask; // enums are strings in stonecodegen, so this will work.
+    let msg_Mask : string = `Mask (${_Mask_enumValue})`;
+    msg = msg + msg_Mask;
+  }
+  throw new Error(msg);
+}
+
+export enum ActionType {
+  UndoCrop = "UndoCrop",
+  Rotate = "Rotate",
+  Invert = "Invert"
+};
+
+export function ActionType_FromString(strValue:string) : ActionType
+{
+  if( strValue == "UndoCrop" )
+  {
+    return ActionType.UndoCrop;
+  }
+  if( strValue == "Rotate" )
+  {
+    return ActionType.Rotate;
+  }
+  if( strValue == "Invert" )
+  {
+    return ActionType.Invert;
+  }
+
+  let msg : string =  `String ${strValue} cannot be converted to ActionType. Possible values are: UndoCrop, Rotate, Invert`;
+  throw new Error(msg);
+}
+
+export function ActionType_ToString(value:ActionType) : string
+{
+  if( value == ActionType.UndoCrop )
+  {
+    return "UndoCrop";
+  }
+  if( value == ActionType.Rotate )
+  {
+    return "Rotate";
+  }
+  if( value == ActionType.Invert )
+  {
+    return "Invert";
+  }
+
+  let msg : string = `Value ${value} cannot be converted to ActionType. Possible values are: `;
+  {
+    let _UndoCrop_enumValue : string = ActionType.UndoCrop; // enums are strings in stonecodegen, so this will work.
+    let msg_UndoCrop : string = `UndoCrop (${_UndoCrop_enumValue}), `;
+    msg = msg + msg_UndoCrop;
+  }
+  {
+    let _Rotate_enumValue : string = ActionType.Rotate; // enums are strings in stonecodegen, so this will work.
+    let msg_Rotate : string = `Rotate (${_Rotate_enumValue}), `;
+    msg = msg + msg_Rotate;
+  }
+  {
+    let _Invert_enumValue : string = ActionType.Invert; // enums are strings in stonecodegen, so this will work.
+    let msg_Invert : string = `Invert (${_Invert_enumValue})`;
+    msg = msg + msg_Invert;
+  }
+  throw new Error(msg);
+}
+
+
+
+export class SelectTool {
+  tool:Tool;
+
+  constructor() {
+  }
+
+  public StoneSerialize(): string {
+    let container: object = {};
+    container['type'] = 'StoneSampleCommands.SelectTool';
+    container['value'] = this;
+    return JSON.stringify(container);
+  }
+
+  public static StoneDeserialize(valueStr: string) : SelectTool
+  {
+    let value: any = JSON.parse(valueStr);
+    StoneCheckSerializedValueType(value, 'StoneSampleCommands.SelectTool');
+    let result: SelectTool = value['value'] as SelectTool;
+    return result;
+  }
+}
+export class Action {
+  type:ActionType;
+
+  constructor() {
+  }
+
+  public StoneSerialize(): string {
+    let container: object = {};
+    container['type'] = 'StoneSampleCommands.Action';
+    container['value'] = this;
+    return JSON.stringify(container);
+  }
+
+  public static StoneDeserialize(valueStr: string) : Action
+  {
+    let value: any = JSON.parse(valueStr);
+    StoneCheckSerializedValueType(value, 'StoneSampleCommands.Action');
+    let result: Action = value['value'] as Action;
+    return result;
+  }
+}
+
+export interface IHandler {
+};
+
+/** Service function for StoneDispatchToHandler */
+export function StoneDispatchJsonToHandler(
+  jsonValue: any, handler: IHandler): boolean
+{
+  StoneCheckSerializedValueTypeGeneric(jsonValue);
+  let type: string = jsonValue["type"];
+  if (type == "")
+  {
+    // this should never ever happen
+    throw new Error("Caught empty type while dispatching");
+  }
+  else
+  {
+    return false;
+  }
+}
+
+/** Takes a serialized type and passes this to the handler */
+export function StoneDispatchToHandler(
+  strValue: string, handler: IHandler): boolean
+{
+  // console.//log("+------------------------------------------------+");
+  // console.//log("|            StoneDispatchToHandler              |");
+  // console.//log("+------------------------------------------------+");
+  // console.//log("strValue = ");
+  // console.//log(strValue);
+  let jsonValue: any = JSON.parse(strValue)
+  return StoneDispatchJsonToHandler(jsonValue, handler);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SynchronizedSeriesApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,109 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "SampleInteractor.h"
+
+#include "../../../Framework/Toolbox/OrthancSeriesLoader.h"
+#include "../../../Framework/Layers/SeriesFrameRendererFactory.h"
+#include "../../../Framework/Layers/ReferenceLineFactory.h"
+#include "../../../Framework/Widgets/LayoutWidget.h"
+
+#include <Core/Logging.h>
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class SynchronizedSeriesApplication : public SampleApplicationBase
+    {
+    private:   
+      LayeredSceneWidget* CreateSeriesWidget(BasicApplicationContext& context,
+                                             const std::string& series)
+      {
+        std::unique_ptr<ISeriesLoader> loader
+          (new OrthancSeriesLoader(context.GetWebService().GetConnection(), series));
+
+        std::unique_ptr<SampleInteractor> interactor(new SampleInteractor(*loader, false));
+
+        std::unique_ptr<LayeredSceneWidget> widget(new LayeredSceneWidget);
+        widget->AddLayer(new SeriesFrameRendererFactory(loader.release(), false));
+        widget->SetSlice(interactor->GetCursor().GetCurrentSlice());
+        widget->SetInteractor(*interactor);
+
+        context.AddInteractor(interactor.release());
+
+        return widget.release();
+      }
+
+    public:
+      virtual void DeclareCommandLineOptions(boost::program_options::options_description& options)
+      {
+        boost::program_options::options_description generic("Sample options");
+        generic.add_options()
+          ("a", boost::program_options::value<std::string>(), 
+           "Orthanc ID of the 1st series")
+          ("b", boost::program_options::value<std::string>(), 
+           "Orthanc ID of the 2nd series")
+          ("c", boost::program_options::value<std::string>(), 
+           "Orthanc ID of the 3rd series")
+          ;
+
+        options.add(generic);    
+      }
+
+      virtual void Initialize(BasicApplicationContext& context,
+                              IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters)
+      {
+        if (parameters.count("a") != 1 ||
+            parameters.count("b") != 1 ||
+            parameters.count("c") != 1)
+        {
+          LOG(ERROR) << "At least one of the three series IDs is missing";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+
+        std::unique_ptr<LayeredSceneWidget> a(CreateSeriesWidget(context, parameters["a"].as<std::string>()));
+        std::unique_ptr<LayeredSceneWidget> b(CreateSeriesWidget(context, parameters["b"].as<std::string>()));
+        std::unique_ptr<LayeredSceneWidget> c(CreateSeriesWidget(context, parameters["c"].as<std::string>()));
+
+        ReferenceLineFactory::Configure(*a, *b);
+        ReferenceLineFactory::Configure(*a, *c);
+        ReferenceLineFactory::Configure(*b, *c);
+
+        std::unique_ptr<LayoutWidget> layout(new LayoutWidget);
+        layout->SetPadding(5);
+        layout->AddWidget(a.release());
+
+        std::unique_ptr<LayoutWidget> layoutB(new LayoutWidget);
+        layoutB->SetVertical();
+        layoutB->SetPadding(5);
+        layoutB->AddWidget(b.release());
+        layoutB->AddWidget(c.release());
+        layout->AddWidget(layoutB.release());
+
+        context.SetCentralWidget(layout.release());        
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/TestPatternApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,63 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "SampleApplicationBase.h"
+
+#include "../../../Framework/Widgets/TestCairoWidget.h"
+#include "../../../Framework/Widgets/TestWorldSceneWidget.h"
+#include "../../../Framework/Widgets/LayoutWidget.h"
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class TestPatternApplication : public SampleApplicationBase
+    {
+    public:
+      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
+      {
+        boost::program_options::options_description generic("Sample options");
+        generic.add_options()
+          ("animate", boost::program_options::value<bool>()->default_value(true), "Animate the test pattern")
+          ;
+
+        options.add(generic);    
+      }
+
+      virtual void Initialize(IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters)
+      {
+        using namespace OrthancStone;
+
+        std::unique_ptr<LayoutWidget> layout(new LayoutWidget);
+        layout->SetPadding(10);
+        layout->SetBackgroundCleared(true);
+        layout->AddWidget(new TestCairoWidget(parameters["animate"].as<bool>()));
+        layout->AddWidget(new TestWorldSceneWidget(parameters["animate"].as<bool>()));
+
+        context_->SetCentralWidget(layout.release());
+        context_->SetUpdateDelay(25);  // If animation, update the content each 25ms
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/index.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,23 @@
+<!doctype html>
+
+<html lang="us">
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+    <!-- Disable pinch zoom on mobile devices -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <meta name="HandheldFriendly" content="true" />
+
+    <title>Wasm Samples</title>
+
+<body>
+    <ul>
+      <li><a href="simple-viewer/simple-viewer.html">Simple Viewer Project (you may add ?studyId=XXX in the url)</a></li>
+      <li><a href="single-frame.html?instance=XXX">Single frame application (you must replace XXX by a valid instance id in the url)</a></li>
+      <li><a href="single-frame-editor.html?instance=XXX">Single frame editor application (you must replace XXX by a valid instance id in the url)</a></li>
+      <li><a href="simple-viewer-single-file.html">Simple Viewer Single file (to be replaced by other samples)</a></li>
+    </ul>
+</body>
+
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/samples-styles.css	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,16 @@
+html, body {
+  width: 100%;
+  height: 100%;
+  margin: 0px;
+  border: 0;
+  overflow: hidden; /*  Disable scrollbars */
+  display: block;  /* No floating content on sides */
+  background-color: black;
+  color: white;
+  font-family: Arial, Helvetica, sans-serif;
+}
+
+canvas {
+  left:0px;
+  top:0px;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,39 @@
+<!doctype html>
+
+<html lang="us">
+
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+  <!-- Disable pinch zoom on mobile devices -->
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+  <meta name="HandheldFriendly" content="true" />
+
+  <title>Simple Viewer</title>
+  <link href="samples-styles.css" rel="stylesheet" />
+
+<body>
+  <div id="breadcrumb">
+    <span id="patient-id"></span>
+    <span id="study-description"></span>
+    <span id="series-description"></span>
+  </div>
+  <div style="height: calc(100% - 50px)">
+    <div style="width: 20%; height: 100%; display: inline-block">
+      <canvas id="canvas"></canvas>
+    </div>
+    <div style="width: 70%; height: 100%; display: inline-block">
+      <canvas id="canvas2"></canvas>
+    </div>
+  </div>
+  <div id="toolbox" style="height: 50px">
+    <input tool-selector="line-measure" type="radio" name="radio-tool-selector" class="tool-selector">line
+    <input tool-selector="circle-measure" type="radio" name="radio-tool-selector" class="tool-selector">circle
+    <button action-trigger="action1" class="action-trigger">action1</button>
+    <button action-trigger="action2" class="action-trigger">action2</button>
+  </div>
+  <script type="text/javascript" src="app-simple-viewer-single-file.js"></script>
+</body>
+
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,61 @@
+import wasmApplicationRunner = require('../../../Platforms/Wasm/wasm-application-runner');
+
+wasmApplicationRunner.InitializeWasmApplication("OrthancStoneSimpleViewerSingleFile", "/orthanc");
+
+function SelectTool(toolName: string) {
+    var command = {
+        command: "selectTool",
+        args: {
+            toolName: toolName
+        }
+    };
+    wasmApplicationRunner.SendSerializedMessageToStoneApplication(JSON.stringify(command));
+
+}
+
+function PerformAction(commandName: string) {
+    var command = {
+        command: commandName,
+        commandType: "simple",
+        args: {}
+    };
+    wasmApplicationRunner.SendSerializedMessageToStoneApplication(JSON.stringify(command));
+}
+
+//initializes the buttons
+//-----------------------
+// install "SelectTool" handlers
+document.querySelectorAll("[tool-selector]").forEach((e) => {
+    console.log(e);
+    (e as HTMLInputElement).addEventListener("click", () => {
+        console.log(e);
+        SelectTool(e.attributes["tool-selector"].value);
+    });
+});
+
+// install "PerformAction" handlers
+document.querySelectorAll("[action-trigger]").forEach((e) => {
+    (e as HTMLInputElement).addEventListener("click", () => {
+        PerformAction(e.attributes["action-trigger"].value);
+    });
+});
+
+// this method is called "from the C++ code" when the StoneApplication is updated.
+// it can be used to update the UI of the application
+function UpdateWebApplicationWithString(statusUpdateMessage: string) {
+  console.log(statusUpdateMessage);
+  
+  if (statusUpdateMessage.startsWith("series-description=")) {
+      document.getElementById("series-description").innerText = statusUpdateMessage.split("=")[1];
+  }
+}
+
+function UpdateWebApplicationWithSerializedMessage(statusUpdateMessageString: string) {
+  console.log("updating web application with serialized message: ", statusUpdateMessageString);
+  console.log("<not supported in the simple viewer (single file)!>");
+}
+
+// make it available to other js scripts in the application
+(<any> window).UpdateWebApplicationWithString = UpdateWebApplicationWithString;
+
+(<any> window).UpdateWebApplicationWithSerializedMessage = UpdateWebApplicationWithSerializedMessage;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.tsconfig.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,9 @@
+{
+    "extends" : "./tsconfig-samples",
+    "compilerOptions": {
+        // "outFile": "../build-web/app-simple-viewer-single-file.js"
+    },
+    "include" : [
+        "simple-viewer-single-file.ts"
+    ]
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,22 @@
+<!doctype html>
+
+<html lang="us">
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+    <!-- Disable pinch zoom on mobile devices -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <meta name="HandheldFriendly" content="true" />
+
+    <title>Simple Viewer</title>
+    <link href="samples-styles.css" rel="stylesheet" />
+
+<body>
+  <div style="width: 100%; height: 100%">
+    <canvas id="canvas"></canvas>
+  </div>
+  <script type="text/javascript" src="app-single-frame-editor.js"></script>
+</body>
+
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,3 @@
+import wasmApplicationRunner = require('../../../Platforms/Wasm/wasm-application-runner');
+
+wasmApplicationRunner.InitializeWasmApplication("OrthancStoneSingleFrameEditor", "/orthanc");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.tsconfig.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,8 @@
+{
+    "extends" : "./tsconfig-samples",
+    "compilerOptions": {
+    },
+    "include" : [
+        "single-frame-editor.ts"
+    ]
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,22 @@
+<!doctype html>
+
+<html lang="us">
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+    <!-- Disable pinch zoom on mobile devices -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <meta name="HandheldFriendly" content="true" />
+
+    <title>Simple Viewer</title>
+    <link href="samples-styles.css" rel="stylesheet" />
+
+<body>
+  <div style="width: 100%; height: 100%">
+    <canvas id="canvas"></canvas>
+  </div>
+  <script type="text/javascript" src="app-single-frame.js"></script>
+</body>
+
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,4 @@
+import wasmApplicationRunner = require('../../../Platforms/Wasm/wasm-application-runner');
+
+wasmApplicationRunner.InitializeWasmApplication("OrthancStoneSingleFrame", "/orthanc");
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.tsconfig.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,8 @@
+{
+    "extends" : "./tsconfig-samples",
+    "compilerOptions": {
+    },
+    "include" : [
+        "single-frame.ts"
+    ]
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/tsconfig-samples.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,11 @@
+{
+    "extends" : "../../../Platforms/Wasm/tsconfig-stone",
+    "compilerOptions": {
+        "sourceMap": false,
+        "lib" : [
+            "es2017",
+            "dom",
+            "dom.iterable"
+        ]
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-wasm.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,27 @@
+#!/bin/bash
+#
+# usage:
+# to build all targets in Debug:
+# ./build-wasm.sh
+#
+# to build a single target in release:
+# ./build-wasm.sh OrthancStoneSingleFrameEditor Release
+
+set -e
+
+target=${1:-all}
+buildType=${2:-Debug}
+
+currentDir=$(pwd)
+samplesRootDir=$(pwd)
+
+mkdir -p $samplesRootDir/build-wasm
+cd $samplesRootDir/build-wasm
+
+source ~/apps/emsdk/emsdk_env.sh
+cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=~/apps/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=$buildType -DSTONE_SOURCES_DIR=$currentDir/../../../orthanc-stone -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT=$currentDir/../../../orthanc -DALLOW_DOWNLOADS=ON .. -DENABLE_WASM=ON
+ninja $target
+
+echo "-- building the web application -- "
+cd $currentDir
+./build-web.sh
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-wasm.sh.old	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,33 @@
+#!/bin/bash
+#
+# usage:
+# to build all targets:
+# ./build-wasm.sh
+#
+# to build a single target:
+# ./build-wasm.sh OrthancStoneSingleFrameEditor
+
+set -e
+
+target=${1:-all}
+
+currentDir=$(pwd)
+samplesRootDir=$(pwd)
+
+mkdir -p $samplesRootDir/build-wasm
+cd $samplesRootDir/build-wasm
+
+source ~/apps/emsdk/emsdk_env.sh
+cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake \
+  -DCMAKE_BUILD_TYPE=Release \
+  -DSTONE_SOURCES_DIR=$currentDir/../../../orthanc-stone \
+  -DORTHANC_FRAMEWORK_SOURCE=path \
+  -DORTHANC_FRAMEWORK_ROOT=$currentDir/../../../orthanc \
+  -DALLOW_DOWNLOADS=ON .. \
+  -DENABLE_WASM=ON
+
+ninja $target
+
+echo "-- building the web application -- "
+cd $currentDir
+./build-web.sh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-web-ext.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+set -e
+
+target=${1:-all}
+# this script currently assumes that the wasm code has been built on its side and is availabie in build-wasm/
+
+currentDir=$(pwd)
+
+scriptDirRel=$(dirname $0)
+#echo $scriptDirRel
+scriptDirAbs=$(realpath $scriptDirRel)
+echo $scriptDirAbs
+
+samplesRootDir=scriptDirAbs
+
+outputDir=$samplesRootDir/build-web/
+mkdir -p $outputDir
+
+# files used by all single files samples
+cp $samplesRootDir/Web/index.html $outputDir
+cp $samplesRootDir/Web/samples-styles.css $outputDir
+
+# build simple-viewer-single-file (obsolete project)
+if [[ $target == "all" || $target == "OrthancStoneSimpleViewerSingleFile" ]]; then
+  cp $samplesRootDir/Web/simple-viewer-single-file.html $outputDir
+  tsc --allowJs --project $samplesRootDir/Web/simple-viewer-single-file.tsconfig.json
+  cp $currentDir/build-wasm/OrthancStoneSimpleViewerSingleFile.js  $outputDir
+  cp $currentDir/build-wasm/OrthancStoneSimpleViewerSingleFile.wasm  $outputDir
+fi
+
+# build single-frame
+if [[ $target == "all" || $target == "OrthancStoneSingleFrame" ]]; then
+  cp $samplesRootDir/Web/single-frame.html $outputDir
+  tsc --allowJs --project $samplesRootDir/Web/single-frame.tsconfig.json
+  cp $currentDir/build-wasm/OrthancStoneSingleFrame.js  $outputDir
+  cp $currentDir/build-wasm/OrthancStoneSingleFrame.wasm  $outputDir
+fi
+
+# build single-frame-editor
+if [[ $target == "all" || $target == "OrthancStoneSingleFrameEditor" ]]; then
+  cp $samplesRootDir/Web/single-frame-editor.html $outputDir
+  tsc --allowJs --project $samplesRootDir/Web/single-frame-editor.tsconfig.json
+  cp $currentDir/build-wasm/OrthancStoneSingleFrameEditor.js  $outputDir
+  cp $currentDir/build-wasm/OrthancStoneSingleFrameEditor.wasm  $outputDir
+fi
+
+# build simple-viewer project
+if [[ $target == "all" || $target == "OrthancStoneSimpleViewer" ]]; then
+  mkdir -p $outputDir/simple-viewer/
+  cp $samplesRootDir/SimpleViewer/Wasm/simple-viewer.html $outputDir/simple-viewer/
+  cp $samplesRootDir/SimpleViewer/Wasm/styles.css $outputDir/simple-viewer/
+  tsc --allowJs --project $samplesRootDir/SimpleViewer/Wasm/tsconfig-simple-viewer.json
+  cp $currentDir/build-wasm/OrthancStoneSimpleViewer.js  $outputDir/simple-viewer/
+  cp $currentDir/build-wasm/OrthancStoneSimpleViewer.wasm  $outputDir/simple-viewer/
+fi
+
+cd $currentDir
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-web.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+set -e
+
+target=${1:-all}
+# this script currently assumes that the wasm code has been built on its side and is availabie in build-wasm/
+
+currentDir=$(pwd)
+samplesRootDir=$(pwd)
+
+echo "*************************************************************************"
+echo "samplesRootDir = $samplesRootDir"
+echo "*************************************************************************"
+
+outputDir=$samplesRootDir/build-web/
+mkdir -p "$outputDir"
+
+# files used by all single files samples
+cp "$samplesRootDir/Web/index.html" "$outputDir"
+cp "$samplesRootDir/Web/samples-styles.css" "$outputDir"
+
+# # build simple-viewer-single-file (obsolete project)
+# if [[ $target == "all" || $target == "OrthancStoneSimpleViewerSingleFile" ]]; then
+#   cp $samplesRootDir/Web/simple-viewer-single-file.html $outputDir
+#   tsc --project $samplesRootDir/Web/simple-viewer-single-file.tsconfig.json --outDir "$outputDir"
+#   browserify \
+#       "$outputDir/Platforms/Wasm/wasm-application-runner.js" \
+#       "$outputDir/Applications/Samples/Web/simple-viewer-single-file.js" \
+#       -o "$outputDir/app-simple-viewer-single-file.js"
+#   cp "$currentDir/build-wasm/OrthancStoneSimpleViewerSingleFile.js"  $outputDir
+#   cp "$currentDir/build-wasm/OrthancStoneSimpleViewerSingleFile.wasm"  $outputDir
+# fi
+
+# # build single-frame
+# if [[ $target == "all" || $target == "OrthancStoneSingleFrame" ]]; then
+#   cp $samplesRootDir/Web/single-frame.html $outputDir
+#   tsc --project $samplesRootDir/Web/single-frame.tsconfig.json --outDir "$outputDir"
+#   browserify \
+#       "$outputDir/Platforms/Wasm/wasm-application-runner.js" \
+#       "$outputDir/Applications/Samples/Web/single-frame.js" \
+#       -o "$outputDir/app-single-frame.js"
+#   cp "$currentDir/build-wasm/OrthancStoneSingleFrame.js"  $outputDir
+#   cp "$currentDir/build-wasm/OrthancStoneSingleFrame.wasm"  $outputDir
+# fi
+
+# build single-frame-editor
+if [[ $target == "all" || $target == "OrthancStoneSingleFrameEditor" ]]; then
+  cp $samplesRootDir/Web/single-frame-editor.html $outputDir
+  tsc --project $samplesRootDir/Web/single-frame-editor.tsconfig.json --outDir "$outputDir"
+  browserify \
+      "$outputDir/Platforms/Wasm/wasm-application-runner.js" \
+      "$outputDir/Applications/Samples/Web/single-frame-editor.js" \
+      -o "$outputDir/app-single-frame-editor.js"
+  cp "$currentDir/build-wasm/OrthancStoneSingleFrameEditor.js"  $outputDir
+  cp "$currentDir/build-wasm/OrthancStoneSingleFrameEditor.wasm"  $outputDir
+fi
+
+# build simple-viewer project
+if [[ $target == "all" || $target == "OrthancStoneSimpleViewer" ]]; then
+  mkdir -p $outputDir/simple-viewer/
+  cp $samplesRootDir/SimpleViewer/Wasm/simple-viewer.html $outputDir/simple-viewer/
+  cp $samplesRootDir/SimpleViewer/Wasm/styles.css $outputDir/simple-viewer/
+  
+  # the root dir must contain all the source files for the whole project
+  tsc --module commonjs --allowJs --project "$samplesRootDir/SimpleViewer/Wasm/tsconfig-simple-viewer.json" --rootDir "$samplesRootDir/../.." --outDir "$outputDir/simple-viewer/"
+  browserify \
+    "$outputDir/simple-viewer/Platforms/Wasm/wasm-application-runner.js" \
+    "$outputDir/simple-viewer/Applications/Samples/SimpleViewer/Wasm/simple-viewer.js" \
+    -o "$outputDir/simple-viewer/app-simple-viewer.js"
+  cp "$currentDir/build-wasm/OrthancStoneSimpleViewer.js"  "$outputDir/simple-viewer/"
+  cp "$currentDir/build-wasm/OrthancStoneSimpleViewer.wasm"  "$outputDir/simple-viewer/"
+fi
+
+cd $currentDir
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/get-requirements-windows.ps1	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,50 @@
+
+if ($true) {
+
+    Write-Error "This script is obsolete. Please work under WSL and run build-wasm.sh"
+
+} else {
+
+    param(
+        [IO.DirectoryInfo] $EmsdkRootDir = "C:\Emscripten",
+        [bool] $Overwrite = $false
+      )
+    
+    if (Test-Path -Path $EmsdkRootDir) {
+        if( $Override) {
+            Remove-Item -Path $EmsdkRootDir -Force -Recurse
+        } else {
+            throw "The `"$EmsdkRootDir`" folder may not exist! Use the Overwrite flag to bypass this check."
+        }
+    }
+    
+    # TODO: detect whether git is installed
+    # choco install -y git
+    
+    Write-Host "Will retrieve the Emscripten SDK to the `"$EmsdkRootDir`" folder"
+    
+    $EmsdkParentDir = split-path -Parent $EmsdkRootDir
+    $EmsdkRootName = split-path -Leaf $EmsdkRootDir
+    
+    Push-Location $EmsdkParentDir
+    
+    git clone https://github.com/juj/emsdk.git $EmsdkRootName
+    cd $EmsdkRootName
+    
+    git pull
+    
+    ./emsdk install latest
+    
+    ./emsdk activate latest
+    
+    echo "INFO: the ~/.emscripten file has been configured for this installation of Emscripten."
+    
+    Write-Host "emsdk is now installed in $EmsdkRootDir"
+    
+    Pop-Location
+
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/nginx.local.conf	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,44 @@
+# Local config to serve the WASM samples static files and reverse proxy Orthanc.
+# Uses port 9977 instead of 80.
+
+# `events` section is mandatory
+events {
+  worker_connections 1024; # Default: 1024
+}
+
+http {
+
+  # prevent nginx sync issues on OSX
+  proxy_buffering off;
+
+  server {
+    listen 9977 default_server;
+    client_max_body_size 4G;
+
+    # location may have to be adjusted depending on your OS and nginx install
+    include /etc/nginx/mime.types;
+    # if not in your system mime.types, add this line to support WASM:
+    # types {
+    #    application/wasm                      wasm; 
+    # }
+
+    # serve WASM static files
+    root build-web/;
+    location / {
+	}
+
+    # reverse proxy orthanc
+	location /orthanc/ {
+		rewrite /orthanc(.*) $1 break;
+		proxy_pass http://127.0.0.1:8042;
+		proxy_set_header Host $http_host;
+		proxy_set_header my-auth-header good-token;
+		proxy_request_buffering off;
+		proxy_max_temp_file_size 0;
+		client_max_body_size 0;
+	}
+
+
+  }
+  
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/package-lock.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,11 @@
+{
+  "requires": true,
+  "lockfileVersion": 1,
+  "dependencies": {
+    "typescript": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz",
+      "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg=="
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,142 @@
+cmake_minimum_required(VERSION 2.8.3)
+project(RtViewerDemo)
+
+if(MSVC)
+  add_definitions(/MP)
+  if (CMAKE_BUILD_TYPE MATCHES DEBUG)
+    add_definitions(/JMC)
+  endif()
+endif()
+
+message("-------------------------------------------------------------------------------------------------------------------")
+message("ORTHANC_FRAMEWORK_ROOT is set to ${ORTHANC_FRAMEWORK_ROOT}")
+message("-------------------------------------------------------------------------------------------------------------------")
+
+if(NOT DEFINED ORTHANC_FRAMEWORK_ROOT)
+  message(FATAL_ERROR "The location of the Orthanc source repository must be set in the ORTHANC_FRAMEWORK_ROOT CMake variable")
+endif()
+
+message("-------------------------------------------------------------------------------------------------------------------")
+message("STONE_SOURCES_DIR is set to ${STONE_SOURCES_DIR}")
+message("-------------------------------------------------------------------------------------------------------------------")
+
+if(NOT DEFINED STONE_SOURCES_DIR)
+  message(FATAL_ERROR "The location of the Stone of Orthanc source repository must be set in the STONE_SOURCES_DIR CMake variable")
+endif()
+
+include(${STONE_SOURCES_DIR}/Resources/CMake/OrthancStoneParameters.cmake)
+
+if (OPENSSL_NO_CAPIENG)
+add_definitions(-DOPENSSL_NO_CAPIENG=1)
+endif()
+
+set(ENABLE_SDL OFF CACHE BOOL "Target SDL Native application")
+set(ENABLE_QT OFF CACHE BOOL "Target Qt Native application")
+set(ENABLE_WASM OFF CACHE BOOL "Target WASM application")
+
+if (ENABLE_WASM)
+  #####################################################################
+  ## Configuration of the Emscripten compiler for WebAssembly target
+  #####################################################################
+
+  set(WASM_FLAGS "-s WASM=1")
+  set(WASM_FLAGS "${WASM_FLAGS} -s STRICT=1") # drops support for all deprecated build options
+  set(WASM_FLAGS "${WASM_FLAGS} -s FILESYSTEM=1") # if we don't include it, gen_uuid.c fails to build because srand, getpid(), ... are not defined
+  set(WASM_FLAGS "${WASM_FLAGS} -s DISABLE_EXCEPTION_CATCHING=0") # actually enable exception catching 
+  set(WASM_FLAGS "${WASM_FLAGS} -s ERROR_ON_MISSING_LIBRARIES=1")
+
+  if (CMAKE_BUILD_TYPE MATCHES DEBUG)
+    set(WASM_FLAGS "${WASM_FLAGS} -g4") # generate debug information
+    set(WASM_FLAGS "${WASM_FLAGS} -s ASSERTIONS=2") # more runtime checks
+  else()
+    set(WASM_FLAGS "${WASM_FLAGS} -Os") # optimize for web (speed and size)
+  endif()
+
+  set(WASM_MODULE_NAME "StoneFrameworkModule" CACHE STRING "Name of the WebAssembly module")
+
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
+
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${WASM_FLAGS}")  # not always clear which flags are for the compiler and which one are for the linker -> pass them all to the linker too
+  # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Applications/Samples/samples-library.js")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmWebService.js")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmDelayedCallExecutor.js")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/default-library.js")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXPORT_NAME='\"${WASM_MODULE_NAME}\"'")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s TOTAL_MEMORY=536870912")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s TOTAL_STACK=128000000")
+
+  add_definitions(-DORTHANC_ENABLE_WASM=1)
+  set(ORTHANC_SANDBOXED ON)
+
+elseif (ENABLE_QT OR ENABLE_SDL)
+
+  set(ENABLE_NATIVE ON)
+  set(ORTHANC_SANDBOXED OFF)
+  set(ENABLE_CRYPTO_OPTIONS ON)
+  set(ENABLE_GOOGLE_TEST ON)
+  set(ENABLE_WEB_CLIENT ON)
+
+endif()
+
+
+#####################################################################
+## Configuration for Orthanc
+#####################################################################
+
+if (ORTHANC_STONE_VERSION STREQUAL "mainline")
+  set(ORTHANC_FRAMEWORK_VERSION "mainline")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
+else()
+  set(ORTHANC_FRAMEWORK_VERSION "1.4.1")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
+endif()
+
+set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
+set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
+set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
+
+add_definitions(
+  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
+  )
+
+
+#####################################################################
+## Build a static library containing the Orthanc Stone framework
+#####################################################################
+
+LIST(APPEND ORTHANC_BOOST_COMPONENTS program_options)
+
+include(${STONE_SOURCES_DIR}/Resources/CMake/OrthancStoneConfiguration.cmake)
+
+add_library(OrthancStone STATIC
+  ${ORTHANC_STONE_SOURCES}
+  )
+
+#####################################################################
+## Build all the sample applications
+#####################################################################
+
+include_directories(${ORTHANC_STONE_ROOT})
+
+list(APPEND RTVIEWERDEMO_APPLICATION_SOURCES
+  ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleInteractor.h
+  ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleApplicationBase.h
+  )
+
+if (ENABLE_WASM)
+  list(APPEND RTVIEWERDEMO_APPLICATION_SOURCES
+    ${STONE_WASM_SOURCES}
+    )
+endif()
+
+add_executable(RtViewerDemo
+  main.cpp
+  ${RTVIEWERDEMO_APPLICATION_SOURCES}
+)
+set_target_properties(RtViewerDemo PROPERTIES COMPILE_DEFINITIONS ORTHANC_STONE_SAMPLE=3)
+target_include_directories(RtViewerDemo PRIVATE ${ORTHANC_STONE_ROOT})
+target_link_libraries(RtViewerDemo OrthancStone)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-sdl-msvc15.ps1	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,24 @@
+if (-not (Test-Path "build-sdl-msvc15")) {
+  mkdir -p "build-sdl-msvc15"
+}
+
+cd build-sdl-msvc15
+
+cmake -G "Visual Studio 15 2017 Win64" -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DSTONE_SOURCES_DIR="$($pwd)\..\..\..\.." -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\..\..\..\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON .. 
+
+if (!$?) {
+	Write-Error 'cmake configuration failed' -ErrorAction Stop
+}
+
+cmake --build . --target RtViewerDemo --config Debug
+
+if (!$?) {
+	Write-Error 'cmake build failed' -ErrorAction Stop
+}
+
+cd Debug
+
+.\RtViewerDemo.exe --ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa --dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb --struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-wasm.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# usage:
+# build-wasm BUILD_TYPE
+# where BUILD_TYPE is Debug, RelWithDebInfo or Release
+
+set -e
+
+buildType=${1:-Debug}
+
+currentDir=$(pwd)
+currentDirAbs=$(realpath $currentDir)
+
+mkdir -p build-wasm
+cd build-wasm
+
+source ~/apps/emsdk/emsdk_env.sh
+cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake \
+-DCMAKE_BUILD_TYPE=$buildType -DSTONE_SOURCES_DIR=$currentDirAbs/../../../../orthanc-stone \
+-DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT=$currentDirAbs/../../../../orthanc \
+-DALLOW_DOWNLOADS=ON .. -DENABLE_WASM=ON
+
+ninja $target
+
+echo "-- building the web application -- "
+cd $currentDir
+./build-web.sh
+
+echo "Launch start-serving-files.sh to access the web sample application locally"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-web.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -e
+
+target=${1:-all}
+# this script currently assumes that the wasm code has been built on its side and is availabie in build-wasm/
+
+currentDir=$(pwd)
+samplesRootDir=$(pwd)
+
+tscOutput=$samplesRootDir/build-tsc-output/
+outputDir=$samplesRootDir/build-web/
+mkdir -p "$outputDir"
+
+# files used by all single files samples
+cp "$samplesRootDir/index.html" "$outputDir"
+cp "$samplesRootDir/samples-styles.css" "$outputDir"
+
+# build rt-viewer-demo
+cp $samplesRootDir/rt-viewer-demo.html $outputDir
+tsc --project $samplesRootDir/rt-viewer-demo.tsconfig.json --outDir "$tscOutput"
+browserify \
+    "$tscOutput/orthanc-stone/Platforms/Wasm/logger.js" \
+    "$tscOutput/orthanc-stone/Platforms/Wasm/stone-framework-loader.js" \
+    "$tscOutput/orthanc-stone/Platforms/Wasm/wasm-application-runner.js" \
+    "$tscOutput/orthanc-stone/Platforms/Wasm/wasm-viewport.js" \
+    "$tscOutput/rt-viewer-sample/rt-viewer-demo.js" \
+    -o "$outputDir/app-rt-viewer-demo.js"
+cp "$currentDir/build-wasm/RtViewerDemo.js"  $outputDir
+cp "$currentDir/build-wasm/RtViewerDemo.wasm"  $outputDir
+
+cd $currentDir
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/index.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,20 @@
+<!doctype html>
+
+<html lang="us">
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+    <!-- Disable pinch zoom on mobile devices -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <meta name="HandheldFriendly" content="true" />
+
+    <title>Wasm Samples</title>
+
+<body>
+    <ul>
+      <li><a href="rt-viewer-demo.html?ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb&struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9">RTSTRUCT + CT + RTDOSE viewer demo. Pplease replace the url arguments with suitable IDs (you can find those in the Orthanc Explorer, for instance)</a></li>
+    </ul>
+</body>
+
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/main.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,893 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "Applications/IStoneApplication.h"
+#include "Framework/Widgets/WorldSceneWidget.h"
+#include "Framework/Widgets/LayoutWidget.h"
+
+#if ORTHANC_ENABLE_WASM==1
+  #include "Platforms/Wasm/WasmPlatformApplicationAdapter.h"
+  #include "Platforms/Wasm/Defaults.h"
+  #include "Platforms/Wasm/WasmViewport.h"
+#endif
+
+#if ORTHANC_ENABLE_QT==1
+  #include "Qt/SampleMainWindow.h"
+  #include "Qt/SampleMainWindowWithButtons.h"
+#endif
+
+#include "Framework/Layers/DicomSeriesVolumeSlicer.h"
+#include "Framework/Widgets/SliceViewerWidget.h"
+#include "Framework/Volumes/StructureSetLoader.h"
+
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+#include <Core/Images/ImageTraits.h>
+
+#include <boost/math/constants/constants.hpp>
+#include "Framework/dev.h"
+#include "Framework/Widgets/LayoutWidget.h"
+#include "Framework/Layers/DicomStructureSetSlicer.h"
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    class RtViewerDemoBaseApplication : public IStoneApplication
+    {
+    protected:
+      // ownership is transferred to the application context
+#ifndef RESTORE_NON_RTVIEWERDEMO_BEHAVIOR
+      LayoutWidget*          mainWidget_;
+#else
+      WorldSceneWidget*  mainWidget_;
+#endif
+
+    public:
+      virtual void Initialize(StoneApplicationContext* context,
+                              IStatusBar& statusBar,
+                              const boost::program_options::variables_map& parameters) ORTHANC_OVERRIDE
+      {
+      }
+
+      virtual std::string GetTitle() const ORTHANC_OVERRIDE
+      {
+        return "Stone of Orthanc - Sample";
+      }
+
+      /**
+       * In the basic samples, the commands are handled by the platform adapter and NOT
+       * by the application handler
+      */
+      virtual void HandleSerializedMessage(const char* data) ORTHANC_OVERRIDE {};
+
+
+      virtual void Finalize() ORTHANC_OVERRIDE {}
+      virtual IWidget* GetCentralWidget() ORTHANC_OVERRIDE {return mainWidget_;}
+
+#if ORTHANC_ENABLE_WASM==1
+      // default implementations for a single canvas named "canvas" in the HTML and an empty WasmApplicationAdapter
+
+      virtual void InitializeWasm() ORTHANC_OVERRIDE
+      {
+        AttachWidgetToWasmViewport("canvas", mainWidget_);
+      }
+
+      virtual WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(MessageBroker& broker)
+      {
+        return new WasmPlatformApplicationAdapter(broker, *this);
+      }
+#endif
+
+    };
+
+    // this application actually works in Qt and WASM
+    class RtViewerDemoBaseSingleCanvasWithButtonsApplication : public RtViewerDemoBaseApplication
+    {
+public:
+      virtual void OnPushButton1Clicked() {}
+      virtual void OnPushButton2Clicked() {}
+      virtual void OnTool1Clicked() {}
+      virtual void OnTool2Clicked() {}
+
+      virtual void GetButtonNames(std::string& pushButton1,
+                                  std::string& pushButton2,
+                                  std::string& tool1,
+                                  std::string& tool2
+                                  ) {
+        pushButton1 = "action1";
+        pushButton2 = "action2";
+        tool1 = "tool1";
+        tool2 = "tool2";
+      }
+
+#if ORTHANC_ENABLE_QT==1
+      virtual QStoneMainWindow* CreateQtMainWindow() {
+        return new SampleMainWindowWithButtons(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
+      }
+#endif
+
+    };
+
+    // this application actually works in SDL and WASM
+    class RtViewerDemoBaseApplicationSingleCanvas : public RtViewerDemoBaseApplication
+    {
+public:
+
+#if ORTHANC_ENABLE_QT==1
+      virtual QStoneMainWindow* CreateQtMainWindow() {
+        return new SampleMainWindow(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
+      }
+#endif
+    };
+  }
+}
+
+
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+    template <Orthanc::PixelFormat T>
+    void ReadDistributionInternal(std::vector<float>& distribution,
+                                  const Orthanc::ImageAccessor& image)
+    {
+      const unsigned int width = image.GetWidth();
+      const unsigned int height = image.GetHeight();
+      
+      distribution.resize(width * height);
+      size_t pos = 0;
+
+      for (unsigned int y = 0; y < height; y++)
+      {
+        for (unsigned int x = 0; x < width; x++, pos++)
+        {
+          distribution[pos] = Orthanc::ImageTraits<T>::GetFloatPixel(image, x, y);
+        }
+      }
+    }
+
+    void ReadDistribution(std::vector<float>& distribution,
+                          const Orthanc::ImageAccessor& image)
+    {
+      switch (image.GetFormat())
+      {
+        case Orthanc::PixelFormat_Grayscale8:
+          ReadDistributionInternal<Orthanc::PixelFormat_Grayscale8>(distribution, image);
+          break;
+
+        case Orthanc::PixelFormat_Grayscale16:
+          ReadDistributionInternal<Orthanc::PixelFormat_Grayscale16>(distribution, image);
+          break;
+
+        case Orthanc::PixelFormat_SignedGrayscale16:
+          ReadDistributionInternal<Orthanc::PixelFormat_SignedGrayscale16>(distribution, image);
+          break;
+
+        case Orthanc::PixelFormat_Grayscale32:
+          ReadDistributionInternal<Orthanc::PixelFormat_Grayscale32>(distribution, image);
+          break;
+
+        case Orthanc::PixelFormat_Grayscale64:
+          ReadDistributionInternal<Orthanc::PixelFormat_Grayscale64>(distribution, image);
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+    }
+
+
+    class DoseInteractor : public VolumeImageInteractor
+    {
+    private:
+      SliceViewerWidget&         widget_;
+      size_t               layer_;
+      DicomFrameConverter  converter_;
+
+
+      
+    protected:
+      virtual void NotifySliceChange(const ISlicedVolume& slicedVolume,
+                                    const size_t& sliceIndex,
+                                    const Slice& slice)
+      {
+        converter_ = slice.GetConverter();
+        
+  #if 0
+        const OrthancVolumeImage& volume = dynamic_cast<const OrthancVolumeImage&>(slicedVolume);
+
+        RenderStyle s = widget_.GetLayerStyle(layer_);
+
+        if (volume.FitWindowingToRange(s, slice.GetConverter()))
+        {
+          printf("Windowing: %f => %f\n", s.customWindowCenter_, s.customWindowWidth_);
+          widget_.SetLayerStyle(layer_, s);
+        }
+  #endif
+      }
+
+      virtual void NotifyVolumeReady(const ISlicedVolume& slicedVolume)
+      {
+        const float percentile = 0.01f;
+        const OrthancVolumeImage& volume = dynamic_cast<const OrthancVolumeImage&>(slicedVolume);
+
+        std::vector<float> distribution;
+        ReadDistribution(distribution, volume.GetImage().GetInternalImage());
+        std::sort(distribution.begin(), distribution.end());
+
+        int start = static_cast<int>(std::ceil(distribution.size() * percentile));
+        int end = static_cast<int>(std::floor(distribution.size() * (1.0f - percentile)));
+
+        float a = 0;
+        float b = 0;
+        
+        if (start < end &&
+            start >= 0 &&
+            end < static_cast<int>(distribution.size()))
+        {
+          a = distribution[start];
+          b = distribution[end];
+        }
+        else if (!distribution.empty())
+        {
+          // Too small distribution: Use full range
+          a = distribution.front();
+          b = distribution.back();
+        }
+
+        //printf("%f %f\n", a, b);
+
+        RenderStyle s = widget_.GetLayerStyle(layer_);
+        s.windowing_ = ImageWindowing_Custom;
+        s.customWindowCenter_ = static_cast<float>(converter_.Apply((a + b) / 2.0f));
+        s.customWindowWidth_ = static_cast<float>(converter_.Apply(b - a));
+        
+        // 96.210556 => 192.421112
+        widget_.SetLayerStyle(layer_, s);
+        printf("Windowing: %f => %f\n", s.customWindowCenter_, s.customWindowWidth_);      
+      }
+
+    public:
+      DoseInteractor(MessageBroker& broker, OrthancVolumeImage& volume,
+                    SliceViewerWidget& widget,
+                    VolumeProjection projection,
+                    size_t layer) :
+        VolumeImageInteractor(broker, volume, widget, projection),
+        widget_(widget),
+        layer_(layer)
+      {
+      }
+    };
+
+    class RtViewerDemoApplication :
+      public RtViewerDemoBaseApplicationSingleCanvas,
+      public IObserver
+    {
+    public:
+      std::vector<std::pair<SliceViewerWidget*, size_t> > doseCtWidgetLayerPairs_;
+      std::list<OrthancStone::IWorldSceneInteractor*>    interactors_;
+
+      class Interactor : public IWorldSceneInteractor
+      {
+      private:
+        RtViewerDemoApplication&  application_;
+
+      public:
+        Interactor(RtViewerDemoApplication&  application) :
+          application_(application)
+        {
+        }
+
+        virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
+          const ViewportGeometry& view,
+          MouseButton button,
+          KeyboardModifiers modifiers,
+          int viewportX,
+          int viewportY,
+          double x,
+          double y,
+          IStatusBar* statusBar,
+          const std::vector<Touch>& displayTouches)
+        {
+          return NULL;
+        }
+
+        virtual void MouseOver(CairoContext& context,
+          WorldSceneWidget& widget,
+          const ViewportGeometry& view,
+          double x,
+          double y,
+          IStatusBar* statusBar)
+        {
+          if (statusBar != NULL)
+          {
+            Vector p = dynamic_cast<SliceViewerWidget&>(widget).GetSlice().MapSliceToWorldCoordinates(x, y);
+
+            char buf[64];
+            sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)",
+              p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
+            statusBar->SetMessage(buf);
+          }
+        }
+
+        virtual void MouseWheel(WorldSceneWidget& widget,
+          MouseWheelDirection direction,
+          KeyboardModifiers modifiers,
+          IStatusBar* statusBar)
+        {
+          int scale = (modifiers & KeyboardModifiers_Control ? 10 : 1);
+
+          switch (direction)
+          {
+          case MouseWheelDirection_Up:
+            application_.OffsetSlice(-scale);
+            break;
+
+          case MouseWheelDirection_Down:
+            application_.OffsetSlice(scale);
+            break;
+
+          default:
+            break;
+          }
+        }
+
+        virtual void KeyPressed(WorldSceneWidget& widget,
+          KeyboardKeys key,
+          char keyChar,
+          KeyboardModifiers modifiers,
+          IStatusBar* statusBar)
+        {
+          switch (keyChar)
+          {
+          case 's':
+            // TODO: recursively traverse children
+            widget.FitContent();
+            break;
+
+          default:
+            break;
+          }
+        }
+      };
+
+      void OffsetSlice(int offset)
+      {
+        if (source_ != NULL)
+        {
+          int slice = static_cast<int>(slice_) + offset;
+
+          if (slice < 0)
+          {
+            slice = 0;
+          }
+
+          if (slice >= static_cast<int>(source_->GetSliceCount()))
+          {
+            slice = static_cast<int>(source_->GetSliceCount()) - 1;
+          }
+
+          if (slice != static_cast<int>(slice_))
+          {
+            SetSlice(slice);
+          }
+        }
+      }
+
+
+      SliceViewerWidget& GetMainWidget()
+      {
+        return *dynamic_cast<SliceViewerWidget*>(mainWidget_);
+      }
+
+
+      void SetSlice(size_t index)
+      {
+        if (source_ != NULL &&
+          index < source_->GetSliceCount())
+        {
+          slice_ = static_cast<unsigned int>(index);
+
+#if 1
+          GetMainWidget().SetSlice(source_->GetSlice(slice_).GetGeometry());
+#else
+          // TEST for scene extents - Rotate the axes
+          double a = 15.0 / 180.0 * boost::math::constants::pi<double>();
+
+#if 1
+          Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
+          Vector y; GeometryToolbox::AssignVector(y, -sin(a), cos(a), 0);
+#else
+          // Flip the normal
+          Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
+          Vector y; GeometryToolbox::AssignVector(y, sin(a), -cos(a), 0);
+#endif
+
+          SliceGeometry s(source_->GetSlice(slice_).GetGeometry().GetOrigin(), x, y);
+          widget_->SetSlice(s);
+#endif
+        }
+      }
+
+
+      void OnMainWidgetGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message)
+      {
+        // Once the geometry of the series is downloaded from Orthanc,
+        // display its middle slice, and adapt the viewport to fit this
+        // slice
+        if (source_ == &message.GetOrigin())
+        {
+          SetSlice(source_->GetSliceCount() / 2);
+        }
+
+        GetMainWidget().FitContent();
+      }
+
+    DicomFrameConverter                                converter_;
+
+    void OnSliceContentChangedMessage(const ISlicedVolume::SliceContentChangedMessage&   message)
+    {
+      converter_ = message.GetSlice().GetConverter();
+    }
+
+    void OnVolumeReadyMessage(const ISlicedVolume::VolumeReadyMessage& message)
+    {
+      const float percentile = 0.01f;
+
+      auto& slicedVolume = message.GetOrigin();
+      const OrthancVolumeImage& volume = dynamic_cast<const OrthancVolumeImage&>(slicedVolume);
+
+      std::vector<float> distribution;
+      ReadDistribution(distribution, volume.GetImage().GetInternalImage());
+      std::sort(distribution.begin(), distribution.end());
+
+      int start = static_cast<int>(std::ceil(distribution.size() * percentile));
+      int end = static_cast<int>(std::floor(distribution.size() * (1.0f - percentile)));
+
+      float a = 0;
+      float b = 0;
+
+      if (start < end &&
+        start >= 0 &&
+        end < static_cast<int>(distribution.size()))
+      {
+        a = distribution[start];
+        b = distribution[end];
+      }
+      else if (!distribution.empty())
+      {
+        // Too small distribution: Use full range
+        a = distribution.front();
+        b = distribution.back();
+      }
+
+      //printf("WINDOWING %f %f\n", a, b);
+
+      for (const auto& pair : doseCtWidgetLayerPairs_)
+      {
+        auto widget = pair.first;
+        auto layer = pair.second;
+        RenderStyle s = widget->GetLayerStyle(layer);
+        s.windowing_ = ImageWindowing_Custom;
+        s.customWindowCenter_ = static_cast<float>(converter_.Apply((a + b) / 2.0f));
+        s.customWindowWidth_ = static_cast<float>(converter_.Apply(b - a));
+
+        // 96.210556 => 192.421112
+        widget->SetLayerStyle(layer, s);
+        printf("Windowing: %f => %f\n", s.customWindowCenter_, s.customWindowWidth_);
+      }
+    }
+      
+
+
+      size_t AddDoseLayer(SliceViewerWidget& widget,
+        OrthancVolumeImage& volume, VolumeProjection projection);
+
+      void AddStructLayer(
+        SliceViewerWidget& widget, StructureSetLoader& loader);
+
+      SliceViewerWidget* CreateDoseCtWidget(
+        std::unique_ptr<OrthancVolumeImage>& ct,
+        std::unique_ptr<OrthancVolumeImage>& dose,
+        std::unique_ptr<StructureSetLoader>& structLoader,
+        VolumeProjection projection);
+
+      void AddCtLayer(SliceViewerWidget& widget, OrthancVolumeImage& volume);
+
+      std::unique_ptr<Interactor>         mainWidgetInteractor_;
+      const DicomSeriesVolumeSlicer*    source_;
+      unsigned int                      slice_;
+
+      std::string                                        ctSeries_;
+      std::string                                        doseInstance_;
+      std::string                                        doseSeries_;
+      std::string                                        structInstance_;
+      std::unique_ptr<OrthancStone::OrthancVolumeImage>    dose_;
+      std::unique_ptr<OrthancStone::OrthancVolumeImage>    ct_;
+      std::unique_ptr<OrthancStone::StructureSetLoader>    struct_;
+
+    public:
+      RtViewerDemoApplication(MessageBroker& broker) :
+        IObserver(broker),
+        source_(NULL),
+        slice_(0)
+      {
+      }
+
+      /*
+      dev options on bgo xps15
+
+      COMMAND LINE
+      --ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa --dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb --struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
+
+      URL PARAMETERS
+      ?ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb&struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
+
+      */
+
+      void ParseParameters(const boost::program_options::variables_map&  parameters)
+      {
+        // Generic
+        {
+          if (parameters.count("verbose"))
+          {
+            Orthanc::Logging::EnableInfoLevel(true);
+            LOG(INFO) << "Verbose logs (info) are enabled";
+          }
+        }
+
+        {
+          if (parameters.count("trace"))
+          {
+            LOG(INFO) << "parameters.count(\"trace\") != 0";
+            Orthanc::Logging::EnableTraceLevel(true);
+            VLOG(1) << "Trace logs (debug) are enabled";
+          }
+        }
+
+        // CT series
+        {
+
+          if (parameters.count("ct-series") != 1)
+          {
+            LOG(ERROR) << "There must be exactly one CT series specified";
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+          }
+          ctSeries_ = parameters["ct-series"].as<std::string>();
+        }
+
+        // RTDOSE 
+        {
+          if (parameters.count("dose-instance") == 1)
+          {
+            doseInstance_ = parameters["dose-instance"].as<std::string>();
+          }
+          else
+          {
+#ifdef BGO_NOT_IMPLEMENTED_YET
+            // Dose series
+            if (parameters.count("dose-series") != 1)
+            {
+              LOG(ERROR) << "the RTDOSE series is missing";
+              throw Orthanc::OrthancException(
+                Orthanc::ErrorCode_ParameterOutOfRange);
+            }
+            doseSeries_ = parameters["ct"].as<std::string>();
+#endif
+            LOG(ERROR) << "the RTSTRUCT instance is missing";
+            throw Orthanc::OrthancException(
+              Orthanc::ErrorCode_ParameterOutOfRange);
+          }
+        }
+        
+        // RTSTRUCT 
+        {
+          if (parameters.count("struct-instance") == 1)
+          {
+            structInstance_ = parameters["struct-instance"].as<std::string>();
+          }
+          else
+          {
+#ifdef BGO_NOT_IMPLEMENTED_YET
+            // Struct series
+            if (parameters.count("struct-series") != 1)
+            {
+              LOG(ERROR) << "the RTSTRUCT series is missing";
+              throw Orthanc::OrthancException(
+                Orthanc::ErrorCode_ParameterOutOfRange);
+            }
+            structSeries_ = parameters["struct-series"].as<std::string>();
+#endif
+            LOG(ERROR) << "the RTSTRUCT instance is missing";
+            throw Orthanc::OrthancException(
+              Orthanc::ErrorCode_ParameterOutOfRange);
+          }
+        }
+      }
+
+      virtual void DeclareStartupOptions(
+        boost::program_options::options_description& options)
+      {
+        boost::program_options::options_description generic(
+          "RtViewerDemo options. Please note that some of these options "
+          "are mutually exclusive");
+        generic.add_options()
+          ("ct-series", boost::program_options::value<std::string>(),
+            "Orthanc ID of the CT series")
+          ("dose-instance", boost::program_options::value<std::string>(), 
+            "Orthanc ID of the RTDOSE instance (incompatible with dose-series)")
+          ("dose-series", boost::program_options::value<std::string>(), 
+            "NOT IMPLEMENTED YET. Orthanc ID of the RTDOSE series (incompatible"
+            " with dose-instance)")
+          ("struct-instance", boost::program_options::value<std::string>(), 
+            "Orthanc ID of the RTSTRUCT instance (incompatible with struct-"
+            "series)")
+          ("struct-series", boost::program_options::value<std::string>(), 
+            "NOT IMPLEMENTED YET. Orthanc ID of the RTSTRUCT (incompatible with"
+            " struct-instance)")
+          ("smooth", boost::program_options::value<bool>()->default_value(true),
+            "Enable bilinear image smoothing")
+          ;
+
+        options.add(generic);
+      }
+
+      virtual void Initialize(
+        StoneApplicationContext*                      context,
+        IStatusBar&                                   statusBar,
+        const boost::program_options::variables_map&  parameters)
+      {
+        using namespace OrthancStone;
+
+        ParseParameters(parameters);
+
+        context_ = context;
+
+        statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
+
+        if (!ctSeries_.empty())
+        {
+          printf("CT = [%s]\n", ctSeries_.c_str());
+
+          ct_.reset(new OrthancStone::OrthancVolumeImage(
+            IObserver::GetBroker(), context->GetOrthancApiClient(), false));
+          ct_->ScheduleLoadSeries(ctSeries_);
+          //ct_->ScheduleLoadSeries(
+          //  "a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");
+          //ct_->ScheduleLoadSeries(
+          //  "03677739-1d8bca40-db1daf59-d74ff548-7f6fc9c0");
+        }
+
+        if (!doseSeries_.empty() ||
+          !doseInstance_.empty())
+        {
+          dose_.reset(new OrthancStone::OrthancVolumeImage(
+            IObserver::GetBroker(), context->GetOrthancApiClient(), true));
+
+
+          dose_->RegisterObserverCallback(
+            new Callable<RtViewerDemoApplication, ISlicedVolume::VolumeReadyMessage>
+            (*this, &RtViewerDemoApplication::OnVolumeReadyMessage));
+
+          dose_->RegisterObserverCallback(
+            new Callable<RtViewerDemoApplication, ISlicedVolume::SliceContentChangedMessage>
+            (*this, &RtViewerDemoApplication::OnSliceContentChangedMessage));
+
+          if (doseInstance_.empty())
+          {
+            dose_->ScheduleLoadSeries(doseSeries_);
+          }
+          else
+          {
+            dose_->ScheduleLoadInstance(doseInstance_);
+          }
+
+          //dose_->ScheduleLoadInstance(
+            //"830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb");  // 1
+          //dose_->ScheduleLoadInstance(
+            //"269f26f4-0c83eeeb-2e67abbd-5467a40f-f1bec90c"); //0522c0001 TCIA
+        }
+
+        if (!structInstance_.empty())
+        {
+          struct_.reset(new OrthancStone::StructureSetLoader(
+            IObserver::GetBroker(), context->GetOrthancApiClient()));
+
+          struct_->ScheduleLoadInstance(structInstance_);
+
+          //struct_->ScheduleLoadInstance(
+            //"54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");
+          //struct_->ScheduleLoadInstance(
+            //"17cd032b-ad92a438-ca05f06a-f9e96668-7e3e9e20"); // 0522c0001 TCIA
+        }
+
+        mainWidget_ = new LayoutWidget("main-layout");
+        mainWidget_->SetBackgroundColor(0, 0, 0);
+        mainWidget_->SetBackgroundCleared(true);
+        mainWidget_->SetPadding(0);
+
+        auto axialWidget = CreateDoseCtWidget
+        (ct_, dose_, struct_, OrthancStone::VolumeProjection_Axial);
+        mainWidget_->AddWidget(axialWidget);
+               
+        std::unique_ptr<OrthancStone::LayoutWidget> subLayout(
+          new OrthancStone::LayoutWidget("main-layout"));
+        subLayout->SetVertical();
+        subLayout->SetPadding(5);
+
+        auto coronalWidget = CreateDoseCtWidget
+        (ct_, dose_, struct_, OrthancStone::VolumeProjection_Coronal);
+        subLayout->AddWidget(coronalWidget);
+
+        auto sagittalWidget = CreateDoseCtWidget
+        (ct_, dose_, struct_, OrthancStone::VolumeProjection_Sagittal);
+        subLayout->AddWidget(sagittalWidget);
+        
+        mainWidget_->AddWidget(subLayout.release());
+      }
+    };
+
+
+    size_t RtViewerDemoApplication::AddDoseLayer(
+      SliceViewerWidget& widget,
+      OrthancVolumeImage& volume, VolumeProjection projection)
+    {
+      size_t layer = widget.AddLayer(
+        new VolumeImageMPRSlicer(IObserver::GetBroker(), volume));
+
+      RenderStyle s;
+      //s.drawGrid_ = true;
+      s.SetColor(255, 0, 0);  // Draw missing PET layer in red
+      s.alpha_ = 0.3f;
+      s.applyLut_ = true;
+      s.lut_ = Orthanc::EmbeddedResources::COLORMAP_JET;
+      s.interpolation_ = ImageInterpolation_Bilinear;
+      widget.SetLayerStyle(layer, s);
+
+      return layer;
+    }
+
+    void RtViewerDemoApplication::AddStructLayer(
+      SliceViewerWidget& widget, StructureSetLoader& loader)
+    {
+      widget.AddLayer(new DicomStructureSetSlicer(
+        IObserver::GetBroker(), loader));
+    }
+
+    SliceViewerWidget* RtViewerDemoApplication::CreateDoseCtWidget(
+      std::unique_ptr<OrthancVolumeImage>& ct,
+      std::unique_ptr<OrthancVolumeImage>& dose,
+      std::unique_ptr<StructureSetLoader>& structLoader,
+      VolumeProjection projection)
+    {
+      std::unique_ptr<OrthancStone::SliceViewerWidget> widget(
+        new OrthancStone::SliceViewerWidget(IObserver::GetBroker(),
+          "ct-dose-widget"));
+
+      if (ct.get() != NULL)
+      {
+        AddCtLayer(*widget, *ct);
+      }
+
+      if (dose.get() != NULL)
+      {
+        size_t layer = AddDoseLayer(*widget, *dose, projection);
+
+        // we need to store the dose rendering widget because we'll update them
+        // according to various asynchronous events
+        doseCtWidgetLayerPairs_.push_back(std::make_pair(widget.get(), layer));
+#if 0
+        interactors_.push_back(new VolumeImageInteractor(
+          IObserver::GetBroker(), *dose, *widget, projection));
+#else
+        interactors_.push_back(new DoseInteractor(
+          IObserver::GetBroker(), *dose, *widget, projection, layer));
+#endif
+      }
+      else if (ct.get() != NULL)
+      {
+        interactors_.push_back(
+          new VolumeImageInteractor(
+            IObserver::GetBroker(), *ct, *widget, projection));
+      }
+
+      if (structLoader.get() != NULL)
+      {
+        AddStructLayer(*widget, *structLoader);
+      }
+
+      return widget.release();
+    }
+
+    void RtViewerDemoApplication::AddCtLayer(
+      SliceViewerWidget& widget,
+      OrthancVolumeImage& volume)
+    {
+      size_t layer = widget.AddLayer(
+        new VolumeImageMPRSlicer(IObserver::GetBroker(), volume));
+
+      RenderStyle s;
+      //s.drawGrid_ = true;
+      s.alpha_ = 1;
+      s.windowing_ = ImageWindowing_Bone;
+      widget.SetLayerStyle(layer, s);
+    }
+  }
+}
+
+
+
+#if ORTHANC_ENABLE_WASM==1
+
+#include "Platforms/Wasm/WasmWebService.h"
+#include "Platforms/Wasm/WasmViewport.h"
+
+#include <emscripten/emscripten.h>
+
+//#include "SampleList.h"
+
+
+OrthancStone::IStoneApplication* CreateUserApplication(OrthancStone::MessageBroker& broker)
+{
+  return new OrthancStone::Samples::RtViewerDemoApplication(broker);
+}
+
+OrthancStone::WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(OrthancStone::MessageBroker& broker, OrthancStone::IStoneApplication* application)
+{
+  return dynamic_cast<OrthancStone::Samples::RtViewerDemoApplication*>(application)->CreateWasmApplicationAdapter(broker);
+}
+
+#else
+
+//#include "SampleList.h"
+#if ORTHANC_ENABLE_SDL==1
+#include "Applications/Sdl/SdlStoneApplicationRunner.h"
+#endif
+#if ORTHANC_ENABLE_QT==1
+#include "Applications/Qt/SampleQtApplicationRunner.h"
+#endif
+#include "Framework/Messages/MessageBroker.h"
+
+int main(int argc, char* argv[])
+{
+  OrthancStone::MessageBroker broker;
+  OrthancStone::Samples::RtViewerDemoApplication sampleStoneApplication(broker);
+
+#if ORTHANC_ENABLE_SDL==1
+  OrthancStone::SdlStoneApplicationRunner sdlApplicationRunner(broker, sampleStoneApplication);
+  return sdlApplicationRunner.Execute(argc, argv);
+#endif
+#if ORTHANC_ENABLE_QT==1
+  OrthancStone::Samples::SampleQtApplicationRunner qtAppRunner(broker, sampleStoneApplication);
+  return qtAppRunner.Execute(argc, argv);
+#endif
+}
+
+
+#endif
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/nginx.local.conf	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,44 @@
+# Local config to serve the WASM samples static files and reverse proxy Orthanc.
+# Uses port 9977 instead of 80.
+
+# `events` section is mandatory
+events {
+  worker_connections 1024; # Default: 1024
+}
+
+http {
+
+  # prevent nginx sync issues on OSX
+  proxy_buffering off;
+
+  server {
+    listen 9977 default_server;
+    client_max_body_size 4G;
+
+    # location may have to be adjusted depending on your OS and nginx install
+    include /etc/nginx/mime.types;
+    # if not in your system mime.types, add this line to support WASM:
+    # types {
+    #    application/wasm                      wasm; 
+    # }
+
+    # serve WASM static files
+    root build-web/;
+    location / {
+	}
+
+    # reverse proxy orthanc
+	location /orthanc/ {
+		rewrite /orthanc(.*) $1 break;
+		proxy_pass http://127.0.0.1:8042;
+		proxy_set_header Host $http_host;
+		proxy_set_header my-auth-header good-token;
+		proxy_request_buffering off;
+		proxy_max_temp_file_size 0;
+		client_max_body_size 0;
+	}
+
+
+  }
+  
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,25 @@
+<!doctype html>
+
+<html lang="us">
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+    <!-- Disable pinch zoom on mobile devices -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <meta name="HandheldFriendly" content="true" />
+
+    <title>Simple Viewer</title>
+    <link href="samples-styles.css" rel="stylesheet" />
+
+<body>
+  <div style="width: 100%; height: 5%">
+    <p>RTSTRUCT viewer demonstration</p>
+  </div>
+  <div style="width: 100%; height: 95%">
+    <canvas id="canvas"></canvas>
+  </div>
+  <script type="text/javascript" src="app-rt-viewer-demo.js"></script>
+</body>
+
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,5 @@
+import { InitializeWasmApplication } from '../../../Platforms/Wasm/wasm-application-runner';
+
+
+InitializeWasmApplication("RtViewerDemo", "/orthanc");
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.tsconfig.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,8 @@
+{
+    "extends" : "./tsconfig-samples",
+    "compilerOptions": {
+    },
+    "include" : [
+        "rt-viewer-demo.ts"
+    ]
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/samples-styles.css	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,16 @@
+html, body {
+  width: 100%;
+  height: 100%;
+  margin: 0px;
+  border: 0;
+  overflow: hidden; /*  Disable scrollbars */
+  display: block;  /* No floating content on sides */
+  background-color: black;
+  color: white;
+  font-family: Arial, Helvetica, sans-serif;
+}
+
+canvas {
+  left:0px;
+  top:0px;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/start-serving-files.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+sudo nginx -p $(pwd) -c nginx.local.conf
+
+echo "Please browse to :"
+
+echo "http://localhost:9977/rt-viewer-demo.html?ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb&struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9"
+
+echo "(This requires you have uploaded the correct files to your local Orthanc instance)"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/stop-serving-files.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+sudo nginx -s stop
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/tsconfig-samples.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,11 @@
+{
+    "extends" : "../../../Platforms/Wasm/tsconfig-stone.json",
+    "compilerOptions": {
+        "sourceMap": false,
+        "lib" : [
+            "es2017",
+            "dom",
+            "dom.iterable"
+        ]
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/tsconfig-stone.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,7 @@
+{
+    "include" : [
+        "../../Platforms/Wasm/stone-framework-loader.ts",
+        "../../Platforms/Wasm/wasm-application-runner.ts",
+        "../../Platforms/Wasm/wasm-viewport.ts"
+    ]
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlCairoSurface.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,94 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SdlCairoSurface.h"
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+
+namespace OrthancStone
+{
+  SdlCairoSurface::SdlCairoSurface(SdlWindow& window) :
+    window_(window),
+    sdlSurface_(NULL)
+  {
+  }
+
+
+  SdlCairoSurface::~SdlCairoSurface()
+  {
+    if (sdlSurface_)
+    {
+      SDL_FreeSurface(sdlSurface_);
+    }
+  }
+
+
+  void SdlCairoSurface::SetSize(unsigned int width,
+                                unsigned int height)
+  {
+    if (cairoSurface_.get() == NULL ||
+        cairoSurface_->GetWidth() != width ||
+        cairoSurface_->GetHeight() != height)
+    {
+      cairoSurface_.reset(new CairoSurface(width, height, false /* no alpha */));
+
+      // TODO Big endian?
+      static const uint32_t rmask = 0x00ff0000;
+      static const uint32_t gmask = 0x0000ff00;
+      static const uint32_t bmask = 0x000000ff;
+
+      if (sdlSurface_)
+      {
+        SDL_FreeSurface(sdlSurface_);
+      }
+
+      sdlSurface_ = SDL_CreateRGBSurfaceFrom(cairoSurface_->GetBuffer(), width, height, 32,
+                                             cairoSurface_->GetPitch(), rmask, gmask, bmask, 0);
+      if (!sdlSurface_)
+      {
+        LOG(ERROR) << "Cannot create a SDL surface from a Cairo surface";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+  }
+
+
+  void SdlCairoSurface::Render(Deprecated::IViewport& viewport)
+  {
+    if (cairoSurface_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    Orthanc::ImageAccessor target;
+    cairoSurface_->GetWriteableAccessor(target);
+
+    if (viewport.Render(target))
+    {
+      window_.Render(sdlSurface_);
+    }
+  }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlCairoSurface.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,56 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include "../../Framework/Viewport/SdlWindow.h"
+#include "../../Framework/Wrappers/CairoSurface.h"
+#include "../../Framework/Deprecated/Viewport/IViewport.h"
+
+#include <Core/Compatibility.h>
+
+#include <SDL_render.h>
+#include <boost/thread/mutex.hpp>
+
+namespace OrthancStone
+{
+  class SdlCairoSurface : public boost::noncopyable
+  {
+  private:
+    std::unique_ptr<CairoSurface>  cairoSurface_;
+    SdlWindow&                   window_;
+    SDL_Surface*                 sdlSurface_;
+
+  public:
+    SdlCairoSurface(SdlWindow& window);
+
+    ~SdlCairoSurface();
+
+    void SetSize(unsigned int width,
+                 unsigned int height);
+
+    void Render(Deprecated::IViewport& viewport);
+  };
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlEngine.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,282 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SdlEngine.h"
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include <Core/Logging.h>
+
+#include <SDL.h>
+
+namespace OrthancStone
+{
+  void SdlEngine::SetSize(unsigned int width,
+                          unsigned int height)
+  {
+    NativeStoneApplicationContext::GlobalMutexLocker locker(context_);
+    locker.GetCentralViewport().SetSize(width, height);
+    surface_.SetSize(width, height);
+  }
+
+
+  void SdlEngine::RenderFrame()
+  {
+    if (viewportChanged_)
+    {
+      NativeStoneApplicationContext::GlobalMutexLocker locker(context_);
+      surface_.Render(locker.GetCentralViewport());
+
+      viewportChanged_ = false;
+    }
+  }
+
+
+  KeyboardModifiers SdlEngine::GetKeyboardModifiers(const uint8_t* keyboardState,
+                                                    const int scancodeCount)
+  {
+    int result = KeyboardModifiers_None;
+
+    if (keyboardState != NULL)
+    {
+      if (SDL_SCANCODE_LSHIFT < scancodeCount &&
+          keyboardState[SDL_SCANCODE_LSHIFT])
+      {
+        result |= KeyboardModifiers_Shift;
+      }
+
+      if (SDL_SCANCODE_RSHIFT < scancodeCount &&
+          keyboardState[SDL_SCANCODE_RSHIFT])
+      {
+        result |= KeyboardModifiers_Shift;
+      }
+
+      if (SDL_SCANCODE_LCTRL < scancodeCount &&
+          keyboardState[SDL_SCANCODE_LCTRL])
+      {
+        result |= KeyboardModifiers_Control;
+      }
+
+      if (SDL_SCANCODE_RCTRL < scancodeCount &&
+          keyboardState[SDL_SCANCODE_RCTRL])
+      {
+        result |= KeyboardModifiers_Control;
+      }
+
+      if (SDL_SCANCODE_LALT < scancodeCount &&
+          keyboardState[SDL_SCANCODE_LALT])
+      {
+        result |= KeyboardModifiers_Alt;
+      }
+
+      if (SDL_SCANCODE_RALT < scancodeCount &&
+          keyboardState[SDL_SCANCODE_RALT])
+      {
+        result |= KeyboardModifiers_Alt;
+      }
+    }
+
+    return static_cast<KeyboardModifiers>(result);
+  }
+
+
+  SdlEngine::SdlEngine(SdlWindow& window,
+                       NativeStoneApplicationContext& context) :
+    window_(window),
+    context_(context),
+    surface_(window),
+    viewportChanged_(true)
+  {
+  }
+  
+
+  void SdlEngine::Run()
+  {
+    int scancodeCount = 0;
+    const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
+
+    SetSize(window_.GetWidth(), window_.GetHeight());
+    
+    {
+      NativeStoneApplicationContext::GlobalMutexLocker locker(context_);
+      locker.GetCentralViewport().FitContent();
+    }
+    
+    bool stop = false;
+    while (!stop)
+    {
+      RenderFrame();
+
+      SDL_Event event;
+
+      while (!stop &&
+             SDL_PollEvent(&event))
+      {
+        NativeStoneApplicationContext::GlobalMutexLocker locker(context_);
+
+        if (event.type == SDL_QUIT)
+        {
+          stop = true;
+          break;
+        }
+        else if (event.type == SDL_MOUSEBUTTONDOWN)
+        {
+          KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
+
+          switch (event.button.button)
+          {
+          case SDL_BUTTON_LEFT:
+            locker.GetCentralViewport().MouseDown(MouseButton_Left, event.button.x, event.button.y, modifiers, std::vector<Deprecated::Touch>());
+            break;
+            
+          case SDL_BUTTON_RIGHT:
+            locker.GetCentralViewport().MouseDown(MouseButton_Right, event.button.x, event.button.y, modifiers, std::vector<Deprecated::Touch>());
+            break;
+            
+          case SDL_BUTTON_MIDDLE:
+            locker.GetCentralViewport().MouseDown(MouseButton_Middle, event.button.x, event.button.y, modifiers, std::vector<Deprecated::Touch>());
+            break;
+
+          default:
+            break;
+          }
+        }
+        else if (event.type == SDL_MOUSEMOTION)
+        {
+          locker.GetCentralViewport().MouseMove(event.button.x, event.button.y, std::vector<Deprecated::Touch>());
+        }
+        else if (event.type == SDL_MOUSEBUTTONUP)
+        {
+          locker.GetCentralViewport().MouseUp();
+        }
+        else if (event.type == SDL_WINDOWEVENT)
+        {
+          switch (event.window.event)
+          {
+          case SDL_WINDOWEVENT_LEAVE:
+            locker.GetCentralViewport().MouseLeave();
+            break;
+
+          case SDL_WINDOWEVENT_ENTER:
+            locker.GetCentralViewport().MouseEnter();
+            break;
+
+          case SDL_WINDOWEVENT_SIZE_CHANGED:
+            SetSize(event.window.data1, event.window.data2);
+            break;
+
+          default:
+            break;
+          }
+        }
+        else if (event.type == SDL_MOUSEWHEEL)
+        {
+          KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
+
+          int x, y;
+          SDL_GetMouseState(&x, &y);
+
+          if (event.wheel.y > 0)
+          {
+            locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Up, x, y, modifiers);
+          }
+          else if (event.wheel.y < 0)
+          {
+            locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Down, x, y, modifiers);
+          }
+        }
+        else if (event.type == SDL_KEYDOWN &&
+                 event.key.repeat == 0 /* Ignore key bounce */)
+        {
+          KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
+
+          switch (event.key.keysym.sym)
+          {
+          case SDLK_a:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'a', modifiers);  break;
+          case SDLK_b:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'b', modifiers);  break;
+          case SDLK_c:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'c', modifiers);  break;
+          case SDLK_d:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'd', modifiers);  break;
+          case SDLK_e:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'e', modifiers);  break;
+          case SDLK_f:    window_.ToggleMaximize();                         break;
+          case SDLK_g:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'g', modifiers);  break;
+          case SDLK_h:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'h', modifiers);  break;
+          case SDLK_i:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'i', modifiers);  break;
+          case SDLK_j:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'j', modifiers);  break;
+          case SDLK_k:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'k', modifiers);  break;
+          case SDLK_l:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'l', modifiers);  break;
+          case SDLK_m:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'm', modifiers);  break;
+          case SDLK_n:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'n', modifiers);  break;
+          case SDLK_o:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'o', modifiers);  break;
+          case SDLK_p:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'p', modifiers);  break;
+          case SDLK_q:    stop = true;                                      break;
+          case SDLK_r:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'r', modifiers);  break;
+          case SDLK_s:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 's', modifiers);  break;
+          case SDLK_t:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 't', modifiers);  break;
+          case SDLK_u:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'u', modifiers);  break;
+          case SDLK_v:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'v', modifiers);  break;
+          case SDLK_w:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'w', modifiers);  break;
+          case SDLK_x:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'x', modifiers);  break;
+          case SDLK_y:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'y', modifiers);  break;
+          case SDLK_z:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'z', modifiers);  break;
+          case SDLK_KP_0: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '0', modifiers);  break;
+          case SDLK_KP_1: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '1', modifiers);  break;
+          case SDLK_KP_2: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '2', modifiers);  break;
+          case SDLK_KP_3: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '3', modifiers);  break;
+          case SDLK_KP_4: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '4', modifiers);  break;
+          case SDLK_KP_5: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '5', modifiers);  break;
+          case SDLK_KP_6: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '6', modifiers);  break;
+          case SDLK_KP_7: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '7', modifiers);  break;
+          case SDLK_KP_8: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '8', modifiers);  break;
+          case SDLK_KP_9: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '9', modifiers);  break;
+
+          case SDLK_PLUS:
+          case SDLK_KP_PLUS:
+            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '+', modifiers);  break;
+
+          case SDLK_MINUS:
+          case SDLK_KP_MINUS:
+            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '-', modifiers);  break;
+
+          case SDLK_DELETE:
+            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Delete, 0, modifiers);  break;
+          case SDLK_BACKSPACE:
+            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Backspace, 0, modifiers);  break;
+          case SDLK_RIGHT:
+            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Right, 0, modifiers);  break;
+          case SDLK_LEFT:
+            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Left, 0, modifiers);  break;
+          case SDLK_UP:
+            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Up, 0, modifiers);  break;
+          case SDLK_DOWN:
+            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Down, 0, modifiers);  break;
+          default:
+            break;
+          }
+        }
+      }
+
+      // Small delay to avoid using 100% of CPU
+      SDL_Delay(1);
+    }
+  }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlEngine.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,61 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include "../../Framework/Messages/ObserverBase.h"
+#include "../Generic/NativeStoneApplicationContext.h"
+#include "SdlCairoSurface.h"
+
+namespace OrthancStone
+{
+  class SdlEngine : public ObserverBase<SdlEngine>
+  {
+  private:
+    SdlWindow&                window_;
+    NativeStoneApplicationContext&  context_;
+    SdlCairoSurface           surface_;
+    bool                      viewportChanged_;
+
+    void SetSize(unsigned int width,
+                 unsigned int height);
+    
+    void RenderFrame();
+
+    static KeyboardModifiers GetKeyboardModifiers(const uint8_t* keyboardState,
+                                                  const int scancodeCount);
+
+  public:
+    SdlEngine(SdlWindow& window,
+              NativeStoneApplicationContext& context);
+  
+    void OnViewportChanged(const Deprecated::IViewport::ViewportChangedMessage& message)
+    {
+      viewportChanged_ = true;
+    }
+
+    void Run();
+  };
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlOrthancSurface.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,108 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SdlOrthancSurface.h"
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+#include <Core/Images/Image.h>
+
+#include <SDL_render.h>
+
+namespace OrthancStone
+{
+  SdlOrthancSurface::SdlOrthancSurface(SdlWindow& window) :
+    window_(window),
+    sdlSurface_(NULL)
+  {
+  }
+
+
+  SdlOrthancSurface::~SdlOrthancSurface()
+  {
+    if (sdlSurface_)
+    {
+      SDL_FreeSurface(sdlSurface_);
+    }
+  }
+
+
+  void SdlOrthancSurface::SetSize(unsigned int width,
+                                  unsigned int height)
+  {
+    if (image_.get() == NULL ||
+        image_->GetWidth() != width ||
+        image_->GetHeight() != height)
+    {
+      image_.reset(new Orthanc::Image(Orthanc::PixelFormat_BGRA32, width, height, true));  // (*)
+
+      if (image_->GetPitch() != image_->GetWidth() * 4)
+      {
+        // This should have been ensured by setting "forceMinimalPitch" to "true" (*)
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      // TODO Big endian?
+      static const uint32_t rmask = 0x00ff0000;
+      static const uint32_t gmask = 0x0000ff00;
+      static const uint32_t bmask = 0x000000ff;
+
+      if (sdlSurface_)
+      {
+        SDL_FreeSurface(sdlSurface_);
+      }
+
+      sdlSurface_ = SDL_CreateRGBSurfaceFrom(image_->GetBuffer(), width, height, 32,
+                                             image_->GetPitch(), rmask, gmask, bmask, 0);
+      if (!sdlSurface_)
+      {
+        LOG(ERROR) << "Cannot create a SDL surface from a Orthanc surface";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+  }
+
+
+  Orthanc::ImageAccessor& SdlOrthancSurface::GetImage()
+  {
+    if (image_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    return *image_;
+  }
+
+
+  void SdlOrthancSurface::Render()
+  {
+    if (image_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    window_.Render(sdlSurface_);
+  }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlOrthancSurface.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,56 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include "../../Framework/Viewport/SdlWindow.h"
+
+#include <Core/Compatibility.h>
+#include <Core/Images/ImageAccessor.h>
+
+#include <boost/thread/mutex.hpp>
+
+namespace OrthancStone
+{
+  class SdlOrthancSurface : public boost::noncopyable
+  {
+  private:
+    std::unique_ptr<Orthanc::ImageAccessor>  image_;
+    SdlWindow&                             window_;
+    SDL_Surface*                           sdlSurface_;
+
+  public:
+    SdlOrthancSurface(SdlWindow& window);
+
+    ~SdlOrthancSurface();
+
+    void SetSize(unsigned int width,
+                 unsigned int height);
+
+    Orthanc::ImageAccessor& GetImage();
+
+    void Render();
+  };
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlStoneApplicationRunner.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,138 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#if ORTHANC_ENABLE_SDL != 1
+#error this file shall be included only with the ORTHANC_ENABLE_SDL set to 1
+#endif
+
+#include "SdlStoneApplicationRunner.h"
+
+#include "../../Platforms/Generic/OracleWebService.h"
+#include "SdlEngine.h"
+
+#include <Core/Logging.h>
+#include <Core/HttpClient.h>
+#include <Core/Toolbox.h>
+#include <Core/OrthancException.h>
+#include <Plugins/Samples/Common/OrthancHttpConnection.h>
+
+#include <boost/program_options.hpp>
+
+namespace OrthancStone
+{
+  void SdlStoneApplicationRunner::Initialize()
+  {
+    SdlWindow::GlobalInitialize();
+  }
+
+  
+  void SdlStoneApplicationRunner::DeclareCommandLineOptions(boost::program_options::options_description& options)
+  {
+    boost::program_options::options_description sdl("SDL options");
+    sdl.add_options()
+        ("width", boost::program_options::value<int>()->default_value(1024), "Initial width of the SDL window")
+        ("height", boost::program_options::value<int>()->default_value(768), "Initial height of the SDL window")
+        ("opengl", boost::program_options::value<bool>()->default_value(true), "Enable OpenGL in SDL")
+        ;
+
+    options.add(sdl);
+  }
+
+  
+  void SdlStoneApplicationRunner::ParseCommandLineOptions(const boost::program_options::variables_map& parameters)
+  {
+    if (!parameters.count("width") ||
+        !parameters.count("height") ||
+        !parameters.count("opengl"))
+    {
+      LOG(ERROR) << "Parameter \"width\", \"height\" or \"opengl\" is missing";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    int w = parameters["width"].as<int>();
+    int h = parameters["height"].as<int>();
+    if (w <= 0 || h <= 0)
+    {
+      LOG(ERROR) << "Parameters \"width\" and \"height\" must be positive";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    width_ = static_cast<unsigned int>(w);
+    height_ = static_cast<unsigned int>(h);
+    LOG(WARNING) << "Initial display size: " << width_ << "x" << height_;
+
+    enableOpenGl_ = parameters["opengl"].as<bool>();
+    if (enableOpenGl_)
+    {
+      LOG(WARNING) << "OpenGL is enabled, disable it with option \"--opengl=off\" if the application crashes";
+    }
+    else
+    {
+      LOG(WARNING) << "OpenGL is disabled, enable it with option \"--opengl=on\" for best performance";
+    }
+  }
+
+  
+  void SdlStoneApplicationRunner::Run(NativeStoneApplicationContext& context,
+                                      const std::string& title,
+                                      int argc,
+                                      char* argv[])
+  {
+    /**************************************************************
+     * Run the application inside a SDL window
+     **************************************************************/
+
+    LOG(WARNING) << "Starting the application";
+
+    SdlWindow window(title.c_str(), width_, height_, enableOpenGl_);
+    boost::shared_ptr<SdlEngine> sdl(new SdlEngine(window, context));
+
+    {
+      NativeStoneApplicationContext::GlobalMutexLocker locker(context);
+
+      sdl->Register<Deprecated::IViewport::ViewportChangedMessage>
+        (locker.GetCentralViewport(), &SdlEngine::OnViewportChanged);
+
+      //context.GetCentralViewport().Register(sdl);  // (*)
+    }
+
+    context.Start();
+    sdl->Run();
+
+    LOG(WARNING) << "Stopping the application";
+
+    // Don't move the "Stop()" command below out of the block,
+    // otherwise the application might crash, because the
+    // "SdlEngine" is an observer of the viewport (*) and the
+    // update thread started by "context.Start()" would call a
+    // destructed object (the "SdlEngine" is deleted with the
+    // lexical scope).
+
+    // TODO Is this still true with message broker?
+    context.Stop();
+  }
+
+  
+  void SdlStoneApplicationRunner::Finalize()
+  {
+    SdlWindow::GlobalFinalize();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Sdl/SdlStoneApplicationRunner.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,60 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Generic/NativeStoneApplicationRunner.h"
+
+#if ORTHANC_ENABLE_SDL != 1
+#error this file shall be included only with the ORTHANC_ENABLE_SDL set to 1
+#endif
+
+#include <SDL.h>   // Necessary to avoid undefined reference to `SDL_main'
+
+namespace OrthancStone
+{
+  class SdlStoneApplicationRunner : public NativeStoneApplicationRunner
+  {
+  private:
+    unsigned int  width_;
+    unsigned int  height_;
+    bool          enableOpenGl_;
+    
+  public:
+    SdlStoneApplicationRunner(boost::shared_ptr<IStoneApplication> application) :
+      NativeStoneApplicationRunner(application)
+    {
+    }
+
+    virtual void Initialize();
+    
+    virtual void DeclareCommandLineOptions(boost::program_options::options_description& options);
+    
+    virtual void Run(NativeStoneApplicationContext& context,
+                     const std::string& title,
+                     int argc,
+                     char* argv[]);
+    
+    virtual void ParseCommandLineOptions(const boost::program_options::variables_map& parameters);
+    
+    virtual void Finalize();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/StoneApplicationContext.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,86 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "StoneApplicationContext.h"
+
+#include <Core/OrthancException.h>
+
+namespace OrthancStone
+{
+  void StoneApplicationContext::InitializeOrthanc()
+  {
+    if (webService_ == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    orthanc_.reset(new Deprecated::OrthancApiClient(*webService_, orthancBaseUrl_));
+  }
+
+
+  boost::shared_ptr<Deprecated::IWebService> StoneApplicationContext::GetWebService()
+  {
+    if (webService_ == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    
+    return webService_;
+  }
+
+  
+  boost::shared_ptr<Deprecated::OrthancApiClient> StoneApplicationContext::GetOrthancApiClient()
+  {
+    if (orthanc_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    
+    return orthanc_;
+  }
+
+  
+  void StoneApplicationContext::SetWebService(boost::shared_ptr<Deprecated::IWebService> webService)
+  {
+    webService_ = webService;
+    InitializeOrthanc();
+  }
+
+
+  void StoneApplicationContext::SetOrthancBaseUrl(const std::string& baseUrl)
+  {
+    // Make sure the base url ends with "/"
+    if (baseUrl.empty() ||
+        baseUrl[baseUrl.size() - 1] != '/')
+    {
+      orthancBaseUrl_ = baseUrl + "/";
+    }
+    else
+    {
+      orthancBaseUrl_ = baseUrl;
+    }
+
+    if (webService_ != NULL)
+    {
+      InitializeOrthanc();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/StoneApplicationContext.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,97 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Framework/Deprecated/Toolbox/IWebService.h"
+#include "../Framework/Deprecated/Toolbox/IDelayedCallExecutor.h"
+#include "../Framework/Deprecated/Toolbox/OrthancApiClient.h"
+#include "../Framework/Deprecated/Viewport/WidgetViewport.h"
+
+
+#ifdef _MSC_VER
+  #if _MSC_VER > 1910
+    #define orthanc_override override
+  #else
+    #define orthanc_override
+  #endif
+#elif defined __GNUC__
+  #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+/* Test for GCC > 3.2.0 */
+  #if GCC_VERSION > 40900
+    #define orthanc_override override
+  #else
+    #define orthanc_override
+  #endif
+#else
+    #define orthanc_override
+#endif
+
+#include <list>
+
+namespace OrthancStone
+{
+  // a StoneApplicationContext contains the services that a StoneApplication
+  // uses and that depends on the environment in which the Application executes.
+  // I.e, the StoneApplicationContext provides a WebService interface such that
+  // the StoneApplication can perform HTTP requests.  In a WASM environment,
+  // the WebService is provided by the browser while, in a native environment,
+  // the WebService is provided by the OracleWebService (a C++ Http client)
+
+  class StoneApplicationContext : public boost::noncopyable
+  {
+  private:
+    boost::shared_ptr<Deprecated::IWebService>     webService_;
+    Deprecated::IDelayedCallExecutor*  delayedCallExecutor_;   // TODO => shared_ptr ??
+    boost::shared_ptr<Deprecated::OrthancApiClient>  orthanc_;
+    std::string                      orthancBaseUrl_;
+
+    void InitializeOrthanc();
+
+  public:
+    StoneApplicationContext() :
+      delayedCallExecutor_(NULL)
+    {
+    }
+
+    virtual ~StoneApplicationContext()
+    {
+    }
+
+    boost::shared_ptr<Deprecated::IWebService> GetWebService();
+
+    boost::shared_ptr<Deprecated::OrthancApiClient> GetOrthancApiClient();
+
+    void SetWebService(boost::shared_ptr<Deprecated::IWebService> webService);
+
+    void SetOrthancBaseUrl(const std::string& baseUrl);
+
+    void SetDelayedCallExecutor(Deprecated::IDelayedCallExecutor& delayedCallExecutor)
+    {
+      delayedCallExecutor_ = &delayedCallExecutor;
+    }
+
+    Deprecated::IDelayedCallExecutor& GetDelayedCallExecutor()
+    {
+      return *delayedCallExecutor_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Wasm/StartupParametersBuilder.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,92 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "StartupParametersBuilder.h"
+#include <iostream>
+#include <cstdio>
+#include "emscripten/html5.h"
+
+namespace OrthancStone
+{
+  void StartupParametersBuilder::Clear()
+  {
+    startupParameters_.clear();
+  }
+
+  void StartupParametersBuilder::SetStartupParameter(
+    const char* name,
+    const char* value)
+  {
+    startupParameters_.push_back(std::make_tuple(name, value));
+  }
+
+  void StartupParametersBuilder::GetStartupParameters(
+    boost::program_options::variables_map& parameters,
+    const boost::program_options::options_description& options) 
+  {
+    std::vector<std::string> argvStrings(startupParameters_.size() + 1);
+    // argv mirrors pointers to the internal argvStrings buffers.
+    // ******************************************************
+    // THIS IS HIGHLY DANGEROUS SO BEWARE!!!!!!!!!!!!!!
+    // ******************************************************
+    std::vector<const char*> argv(startupParameters_.size() + 1);
+    
+    int argCounter = 0;
+    argvStrings[argCounter] = "dummy.exe";
+    argv[argCounter] = argvStrings[argCounter].c_str();
+    
+    argCounter++;
+    
+    std::string cmdLine = "";
+    for ( StartupParameters::const_iterator it = startupParameters_.begin(); 
+          it != startupParameters_.end(); 
+          it++)
+    {
+      std::stringstream argSs;
+
+      argSs << "--" << std::get<0>(*it);
+      if(std::get<1>(*it).length() > 0)
+        argSs << "=" << std::get<1>(*it);
+      
+      argvStrings[argCounter] = argSs.str();
+      cmdLine = cmdLine + " " + argvStrings[argCounter];
+      std::cout << cmdLine << std::endl;
+      argv[argCounter] = argvStrings[argCounter].c_str();
+      argCounter++;
+    }
+
+
+    std::cout << "simulated cmdLine = \"" << cmdLine.c_str() << "\"\n";
+
+    try
+    {
+      boost::program_options::store(
+        boost::program_options::command_line_parser(argCounter, argv.data()).
+          options(options).allow_unregistered().run(), parameters);
+      boost::program_options::notify(parameters);
+    }
+    catch (boost::program_options::error& e)
+    {
+      std::cerr << "Error while parsing the command-line arguments: " <<
+        e.what() << std::endl;    
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Applications/Wasm/StartupParametersBuilder.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,54 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/program_options.hpp>
+#include <tuple>
+
+#if ORTHANC_ENABLE_SDL == 1
+#error this file shall be included only with the ORTHANC_ENABLE_SDL set to 0
+#endif
+
+namespace OrthancStone
+{
+  // This class is used to generate boost program options from a dico.
+  // In a Wasm context, startup options are passed as URI arguments that
+  // are then passed to this class as a dico.
+  // This class regenerates a fake command-line and parses it to produce
+  // the same output as if the app was started at command-line.
+  class StartupParametersBuilder
+  {
+    typedef std::list<std::tuple<std::string, std::string>> StartupParameters;
+    StartupParameters startupParameters_;
+
+  public:
+
+    void Clear();
+    // Please note that if a parameter is a flag-style one, the value that 
+    // is passed should be an empty string
+    void SetStartupParameter(const char* name, const char* value);
+    void GetStartupParameters(
+      boost::program_options::variables_map& parameters_, 
+      const boost::program_options::options_description& options);
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/DelayedCallCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,64 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DelayedCallCommand.h"
+#include "boost/thread/thread.hpp"
+
+#include <iostream>
+
+namespace Deprecated
+{
+  DelayedCallCommand::DelayedCallCommand(MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,  // takes ownership
+                                         unsigned int timeoutInMs,
+                                         Orthanc::IDynamicObject* payload /* takes ownership */,
+                                         OrthancStone::NativeStoneApplicationContext& context
+                                         ) :
+    callback_(callback),
+    payload_(payload),
+    context_(context),
+    expirationTimePoint_(boost::posix_time::microsec_clock::local_time() + boost::posix_time::milliseconds(timeoutInMs)),
+    timeoutInMs_(timeoutInMs)
+  {
+  }
+
+
+  void DelayedCallCommand::Execute()
+  {
+    while (boost::posix_time::microsec_clock::local_time() < expirationTimePoint_)
+    {
+      boost::this_thread::sleep(boost::posix_time::milliseconds(1));
+    }
+  }
+
+  void DelayedCallCommand::Commit()
+  {
+    // We want to make sure that, i.e, the UpdateThread is not
+    // triggered while we are updating the "model" with the result of
+    // an OracleCommand
+    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker lock(context_);
+
+    if (callback_.get() != NULL)
+    {
+      IDelayedCallExecutor::TimeoutMessage message; // TODO: add payload
+      callback_->Apply(message);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/DelayedCallCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,56 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IOracleCommand.h"
+
+#include "../../Framework/Deprecated/Toolbox/IDelayedCallExecutor.h"
+#include "../../Framework/Messages/IObservable.h"
+#include "../../Framework/Messages/ICallable.h"
+#include "../../Applications/Generic/NativeStoneApplicationContext.h"
+
+#include <boost/date_time/posix_time/posix_time.hpp>
+
+namespace Deprecated
+{
+  class DelayedCallCommand : public IOracleCommand, OrthancStone::IObservable
+  {
+  protected:
+    std::unique_ptr<MessageHandler<IDelayedCallExecutor::TimeoutMessage> >  callback_;
+    std::unique_ptr<Orthanc::IDynamicObject>  payload_;
+    OrthancStone::NativeStoneApplicationContext&          context_;
+    boost::posix_time::ptime                expirationTimePoint_;
+    unsigned int                            timeoutInMs_;
+
+  public:
+    DelayedCallCommand(MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,  // takes ownership
+                       unsigned int timeoutInMs,
+                       Orthanc::IDynamicObject* payload /* takes ownership */,
+                       OrthancStone::NativeStoneApplicationContext& context
+                       );
+
+    virtual void Execute();
+
+    virtual void Commit();
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/IOracleCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,42 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <Core/IDynamicObject.h>
+
+namespace Deprecated
+{
+  class IOracleCommand : public Orthanc::IDynamicObject
+  {
+  public:
+    virtual ~IOracleCommand()
+    {
+    }
+
+    // This part of the command can be invoked simultaneously, and
+    // must not modify the Stone context
+    virtual void Execute() = 0;
+
+    // This part of the command must be invoked in mutual exclusion
+    virtual void Commit() = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/Oracle.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,212 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "Oracle.h"
+
+#include <Core/Logging.h>
+#include <Core/MultiThreading/SharedMessageQueue.h>
+#include <Core/OrthancException.h>
+
+#include <vector>
+#include <stdio.h>
+#include <boost/thread/mutex.hpp>
+
+namespace Deprecated
+{
+  class Oracle::PImpl
+  {
+  private:
+    enum State
+    {
+      State_Init,
+      State_Started,
+      State_Stopped
+    };
+
+    boost::mutex                   oracleMutex_;
+    State                          state_;
+    std::vector<boost::thread*>    threads_;
+    Orthanc::SharedMessageQueue    queue_;
+
+    static void Worker(PImpl* that)
+    {
+      for (;;)
+      {
+        State state;
+        
+        {
+          boost::mutex::scoped_lock lock(that->oracleMutex_);
+          state = that->state_;
+        }
+
+        if (state == State_Stopped)
+        {
+          break;
+        }
+
+        std::unique_ptr<Orthanc::IDynamicObject> item(that->queue_.Dequeue(100));
+        if (item.get() != NULL)
+        {
+          IOracleCommand& command = dynamic_cast<IOracleCommand&>(*item);
+          try
+          {
+            command.Execute();
+          }
+          catch (Orthanc::OrthancException& /*ex*/)
+          {
+            // this is probably a curl error that has been triggered.  We may just ignore it.
+            // The command.success_ will stay at false and this will be handled in the command.Commit
+          }
+
+          // Random sleeping to test
+          //boost::this_thread::sleep(boost::posix_time::milliseconds(50 * (1 + rand() % 10)));
+
+          command.Commit();
+        }
+      }
+    }
+    
+  public:
+    PImpl(unsigned int threadCount) :
+      state_(State_Init),
+      threads_(threadCount)
+    {
+    }
+
+    ~PImpl()
+    {
+      if (state_ == State_Started)
+      {
+        LOG(ERROR) << "You should have manually called Oracle::Stop()";
+        Stop();
+      }
+    }
+
+    Orthanc::SharedMessageQueue& GetQueue()
+    {
+      return queue_;
+    }
+
+    void Submit(IOracleCommand* command)
+    {
+      std::unique_ptr<IOracleCommand> protection(command);
+
+      if (command == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+      
+      boost::mutex::scoped_lock lock(oracleMutex_);
+
+      switch (state_)
+      {
+        case State_Init:
+        case State_Started:
+          queue_.Enqueue(protection.release());
+          break;
+
+        case State_Stopped:
+          LOG(ERROR) << "Cannot schedule a request to the Oracle after having "
+                     << "called Oracle::Stop()";
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+      
+    }
+
+    void Start()
+    {
+      boost::mutex::scoped_lock lock(oracleMutex_);
+
+      if (state_ != State_Init)
+      {
+        LOG(ERROR) << "Oracle::PImpl::Start: (state_ != State_Init)";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      
+      for (size_t i = 0; i < threads_.size(); i++)
+      {
+        threads_[i] = new boost::thread(Worker, this);
+      }
+
+      state_ = State_Started;
+    }
+
+    void Stop()
+    {
+      {
+        boost::mutex::scoped_lock lock(oracleMutex_);
+
+        if (state_ != State_Started)
+        {
+          LOG(ERROR) << "Oracle::PImpl::Stop(): (state_ != State_Started)";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+        }
+
+        state_ = State_Stopped;
+      }
+      
+      for (size_t i = 0; i < threads_.size(); i++)
+      {
+        if (threads_[i] != NULL)
+        {
+          if (threads_[i]->joinable())
+          {
+            threads_[i]->join();
+          }
+
+          delete threads_[i];
+        }
+      }
+    }
+  };
+  
+
+  Oracle::Oracle(unsigned int threadCount) :
+    pimpl_(new PImpl(threadCount))
+  {
+  }
+
+  void Oracle::Start()
+  {
+    pimpl_->Start();
+  }
+
+
+  void Oracle::Submit(IOracleCommand* command)
+  {
+    pimpl_->Submit(command);
+  }
+     
+   
+  void Oracle::Stop()
+  {
+    pimpl_->Stop();
+  }
+
+
+  void Oracle::WaitEmpty()
+  {
+    pimpl_->GetQueue().WaitEmpty(50);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/Oracle.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,48 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IOracleCommand.h"
+
+#include <boost/shared_ptr.hpp>
+
+namespace Deprecated
+{
+  class Oracle : public boost::noncopyable
+  {
+  private:
+    class PImpl;
+  
+    boost::shared_ptr<PImpl>  pimpl_;
+
+  public:
+    Oracle(unsigned int threadCount);
+
+    void Start();
+
+    void Submit(IOracleCommand* command);
+        
+    void WaitEmpty();  // For unit tests
+
+    void Stop();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/OracleDelayedCallExecutor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Framework/Deprecated/Toolbox/IDelayedCallExecutor.h"
+#include "Oracle.h"
+#include "../../Applications/Generic/NativeStoneApplicationContext.h"
+#include "DelayedCallCommand.h"
+
+namespace Deprecated
+{
+  // The OracleTimeout executes callbacks after a delay.
+  class OracleDelayedCallExecutor : public IDelayedCallExecutor
+  {
+  private:
+    Oracle&                        oracle_;
+    OrthancStone::NativeStoneApplicationContext& context_;
+
+  public:
+    OracleDelayedCallExecutor(Oracle& oracle,
+                              OrthancStone::NativeStoneApplicationContext& context) :
+      oracle_(oracle),
+      context_(context)
+    {
+    }
+
+    virtual void Schedule(MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,
+                          unsigned int timeoutInMs = 1000)
+    {
+      oracle_.Submit(new DelayedCallCommand(callback, timeoutInMs, NULL, context_));
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/OracleWebService.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,80 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OracleWebService.h"
+#include "../../Framework/Deprecated/Toolbox/IWebService.h"
+
+namespace Deprecated
+{
+
+
+  class OracleWebService::WebServiceCachedGetCommand : public IOracleCommand, OrthancStone::IObservable
+  {
+  protected:
+    std::unique_ptr<MessageHandler<IWebService::HttpRequestSuccessMessage> >  successCallback_;
+    std::unique_ptr<Orthanc::IDynamicObject>                                  payload_;
+    boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage>      cachedMessage_;
+    OrthancStone::NativeStoneApplicationContext&                                          context_;
+
+  public:
+    WebServiceCachedGetCommand(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
+                               boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedMessage,
+                               Orthanc::IDynamicObject* payload /* takes ownership */,
+                               OrthancStone::NativeStoneApplicationContext& context
+                               ) :
+      successCallback_(successCallback),
+      payload_(payload),
+      cachedMessage_(cachedMessage),
+      context_(context)
+    {
+    }
+
+    virtual void Execute()
+    {
+      // nothing to do, everything is in the commit
+    }
+
+    virtual void Commit()
+    {
+      // We want to make sure that, i.e, the UpdateThread is not
+      // triggered while we are updating the "model" with the result of
+      // a WebServiceCommand
+      OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker lock(context_);
+
+      IWebService::HttpRequestSuccessMessage successMessage(cachedMessage_->GetUri(),
+                                                            cachedMessage_->GetAnswer(),
+                                                            cachedMessage_->GetAnswerSize(),
+                                                            cachedMessage_->GetAnswerHttpHeaders(),
+                                                            payload_.get());
+
+      successCallback_->Apply(successMessage);
+    }
+  };
+
+  void OracleWebService::NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedMessage,
+                                                Orthanc::IDynamicObject* payload, // takes ownership
+                                                MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback)
+  {
+    oracle_.Submit(new WebServiceCachedGetCommand(successCallback, cachedMessage, payload, context_));
+  }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/OracleWebService.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,92 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Framework/Deprecated/Toolbox/BaseWebService.h"
+#include "Oracle.h"
+#include "WebServiceGetCommand.h"
+#include "WebServicePostCommand.h"
+#include "WebServiceDeleteCommand.h"
+#include "../../Applications/Generic/NativeStoneApplicationContext.h"
+
+namespace Deprecated
+{
+  // The OracleWebService performs HTTP requests in a native environment.
+  // It uses a thread pool to handle multiple HTTP requests in a same time.
+  // It works asynchronously to mimick the behaviour of the WebService running in a WASM environment.
+  class OracleWebService : public BaseWebService
+  {
+  private:
+    Oracle&                        oracle_;
+    OrthancStone::NativeStoneApplicationContext& context_;
+    Orthanc::WebServiceParameters  parameters_;
+
+    class WebServiceCachedGetCommand;
+
+  public:
+    OracleWebService(Oracle& oracle,
+                     const Orthanc::WebServiceParameters& parameters,
+                     OrthancStone::NativeStoneApplicationContext& context) :
+      oracle_(oracle),
+      context_(context),
+      parameters_(parameters)
+    {
+    }
+
+    virtual void PostAsync(const std::string& uri,
+                           const HttpHeaders& headers,
+                           const std::string& body,
+                           Orthanc::IDynamicObject* payload, // takes ownership
+                           MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, // takes ownership
+                           MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, // takes ownership
+                           unsigned int timeoutInSeconds = 60)
+    {
+      oracle_.Submit(new WebServicePostCommand(successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, body, payload, context_));
+    }
+
+    virtual void DeleteAsync(const std::string& uri,
+                             const HttpHeaders& headers,
+                             Orthanc::IDynamicObject* payload,
+                             MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
+                             MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                             unsigned int timeoutInSeconds = 60)
+    {
+      oracle_.Submit(new WebServiceDeleteCommand(successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_));
+    }
+
+  protected:
+    virtual void GetAsyncInternal(const std::string& uri,
+                                  const HttpHeaders& headers,
+                                  Orthanc::IDynamicObject* payload, // takes ownership
+                                  MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,   // takes ownership
+                                  MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,// takes ownership
+                                  unsigned int timeoutInSeconds = 60)
+    {
+      oracle_.Submit(new WebServiceGetCommand(successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_));
+    }
+
+    virtual void NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedHttpMessage,
+                                        Orthanc::IDynamicObject* payload, // takes ownership
+                                        MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback);
+
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceCommandBase.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,69 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebServiceCommandBase.h"
+
+#include <Core/HttpClient.h>
+
+namespace Deprecated
+{
+  WebServiceCommandBase::WebServiceCommandBase(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
+                                               MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
+                                               const Orthanc::WebServiceParameters& parameters,
+                                               const std::string& url,
+                                               const IWebService::HttpHeaders& headers,
+                                               unsigned int timeoutInSeconds,
+                                               Orthanc::IDynamicObject* payload /* takes ownership */,
+                                               OrthancStone::NativeStoneApplicationContext& context) :
+    successCallback_(successCallback),
+    failureCallback_(failureCallback),
+    parameters_(parameters),
+    url_(url),
+    headers_(headers),
+    payload_(payload),
+    success_(false),
+    httpStatus_(Orthanc::HttpStatus_None),
+    context_(context),
+    timeoutInSeconds_(timeoutInSeconds)
+  {
+  }
+
+
+  void WebServiceCommandBase::Commit()
+  {
+    // We want to make sure that, i.e, the UpdateThread is not
+    // triggered while we are updating the "model" with the result of
+    // a WebServiceCommand
+    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker lock(context_); 
+
+    if (success_ && successCallback_.get() != NULL)
+    {
+      IWebService::HttpRequestSuccessMessage message
+        (url_, answer_.c_str(), answer_.size(), answerHeaders_, payload_.get());
+      successCallback_->Apply(message);
+    }
+    else if (!success_ && failureCallback_.get() != NULL)
+    {
+      IWebService::HttpRequestErrorMessage message(url_, httpStatus_, payload_.get());
+      failureCallback_->Apply(message);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceCommandBase.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,69 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IOracleCommand.h"
+
+#include "../../Framework/Deprecated/Toolbox/IWebService.h"
+#include "../../Framework/Messages/IObservable.h"
+#include "../../Framework/Messages/ICallable.h"
+#include "../../Applications/Generic/NativeStoneApplicationContext.h"
+
+#include <Core/WebServiceParameters.h>
+
+#include <memory>
+
+namespace Deprecated
+{
+  class WebServiceCommandBase : public IOracleCommand, OrthancStone::IObservable
+  {
+  protected:
+    std::unique_ptr<MessageHandler<IWebService::HttpRequestSuccessMessage> >  successCallback_;
+    std::unique_ptr<MessageHandler<IWebService::HttpRequestErrorMessage> >    failureCallback_;
+    Orthanc::WebServiceParameters           parameters_;
+    std::string                             url_;
+    IWebService::HttpHeaders                headers_;
+    std::unique_ptr<Orthanc::IDynamicObject>  payload_;
+    bool                                    success_;
+    Orthanc::HttpStatus                     httpStatus_;
+    std::string                             answer_;
+    IWebService::HttpHeaders                answerHeaders_;
+    OrthancStone::NativeStoneApplicationContext&          context_;
+    unsigned int                            timeoutInSeconds_;
+
+  public:
+    WebServiceCommandBase(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
+                          MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
+                          const Orthanc::WebServiceParameters& parameters,
+                          const std::string& url,
+                          const IWebService::HttpHeaders& headers,
+                          unsigned int timeoutInSeconds,
+                          Orthanc::IDynamicObject* payload /* takes ownership */,
+                          OrthancStone::NativeStoneApplicationContext& context
+                          );
+
+    virtual void Execute() = 0;
+
+    virtual void Commit();
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceDeleteCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,56 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebServiceDeleteCommand.h"
+
+#include <Core/HttpClient.h>
+
+namespace Deprecated
+{
+  WebServiceDeleteCommand::WebServiceDeleteCommand(MessageHandler<Deprecated::IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
+                                                   MessageHandler<Deprecated::IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
+                                                   const Orthanc::WebServiceParameters& parameters,
+                                                   const std::string& url,
+                                                   const Deprecated::IWebService::HttpHeaders& headers,
+                                                   unsigned int timeoutInSeconds,
+                                                   Orthanc::IDynamicObject* payload /* takes ownership */,
+                                                   OrthancStone::NativeStoneApplicationContext& context) :
+    WebServiceCommandBase(successCallback, failureCallback, parameters, url, headers, timeoutInSeconds, payload, context)
+  {
+  }
+
+  void WebServiceDeleteCommand::Execute()
+  {
+    Orthanc::HttpClient client(parameters_, "/");
+    client.SetUrl(url_);
+    client.SetTimeout(timeoutInSeconds_);
+    client.SetMethod(Orthanc::HttpMethod_Delete);
+
+    for (Deprecated::IWebService::HttpHeaders::const_iterator it = headers_.begin(); it != headers_.end(); it++ )
+    {
+      client.AddHeader(it->first, it->second);
+    }
+
+    success_ = client.Apply(answer_, answerHeaders_);
+    httpStatus_ = client.GetLastStatus();
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceDeleteCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,42 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WebServiceCommandBase.h"
+
+namespace Deprecated
+{
+  class WebServiceDeleteCommand : public WebServiceCommandBase
+  {
+  public:
+    WebServiceDeleteCommand(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
+                            MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
+                            const Orthanc::WebServiceParameters& parameters,
+                            const std::string& url,
+                            const IWebService::HttpHeaders& headers,
+                            unsigned int timeoutInSeconds,
+                            Orthanc::IDynamicObject* payload /* takes ownership */,
+                            OrthancStone::NativeStoneApplicationContext& context);
+
+    virtual void Execute();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceGetCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,57 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebServiceGetCommand.h"
+
+#include <Core/HttpClient.h>
+
+namespace Deprecated
+{
+  WebServiceGetCommand::WebServiceGetCommand(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
+                                             MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
+                                             const Orthanc::WebServiceParameters& parameters,
+                                             const std::string& url,
+                                             const IWebService::HttpHeaders& headers,
+                                             unsigned int timeoutInSeconds,
+                                             Orthanc::IDynamicObject* payload /* takes ownership */,
+                                             OrthancStone::NativeStoneApplicationContext& context) :
+    WebServiceCommandBase(successCallback, failureCallback, parameters, url, headers, timeoutInSeconds, payload, context)
+  {
+  }
+
+
+  void WebServiceGetCommand::Execute()
+  {
+    Orthanc::HttpClient client(parameters_, "/");
+    client.SetUrl(url_);
+    client.SetTimeout(timeoutInSeconds_);
+    client.SetMethod(Orthanc::HttpMethod_Get);
+
+    for (IWebService::HttpHeaders::const_iterator it = headers_.begin(); it != headers_.end(); it++ )
+    {
+      client.AddHeader(it->first, it->second);
+    }
+
+    success_ = client.Apply(answer_, answerHeaders_);
+    httpStatus_ = client.GetLastStatus();
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceGetCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,43 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WebServiceCommandBase.h"
+
+namespace Deprecated
+{
+  class WebServiceGetCommand : public WebServiceCommandBase
+  {
+  public:
+    WebServiceGetCommand(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
+                         MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
+                         const Orthanc::WebServiceParameters& parameters,
+                         const std::string& url,
+                         const IWebService::HttpHeaders& headers,
+                         unsigned int timeoutInSeconds,
+                         Orthanc::IDynamicObject* payload /* takes ownership */,
+                         OrthancStone::NativeStoneApplicationContext& context);
+
+    virtual void Execute();
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServicePostCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebServicePostCommand.h"
+
+#include <Core/HttpClient.h>
+
+namespace Deprecated
+{
+  WebServicePostCommand::WebServicePostCommand(MessageHandler<Deprecated::IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
+                                               MessageHandler<Deprecated::IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
+                                               const Orthanc::WebServiceParameters& parameters,
+                                               const std::string& url,
+                                               const Deprecated::IWebService::HttpHeaders& headers,
+                                               unsigned int timeoutInSeconds,
+                                               const std::string& body,
+                                               Orthanc::IDynamicObject* payload /* takes ownership */,
+                                               OrthancStone::NativeStoneApplicationContext& context) :
+    WebServiceCommandBase(successCallback, failureCallback, parameters, url, headers, timeoutInSeconds, payload, context),
+    body_(body)
+  {
+  }
+
+  void WebServicePostCommand::Execute()
+  {
+    Orthanc::HttpClient client(parameters_, "/");
+    client.SetUrl(url_);
+    client.SetTimeout(timeoutInSeconds_);
+    client.SetMethod(Orthanc::HttpMethod_Post);
+    client.GetBody().swap(body_);
+
+    for (Deprecated::IWebService::HttpHeaders::const_iterator it = headers_.begin(); it != headers_.end(); it++ )
+    {
+      client.AddHeader(it->first, it->second);
+    }
+
+    success_ = client.Apply(answer_, answerHeaders_);
+    httpStatus_ = client.GetLastStatus();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Generic/WebServicePostCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,46 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WebServiceCommandBase.h"
+
+namespace Deprecated
+{
+  class WebServicePostCommand : public WebServiceCommandBase
+  {
+  protected:
+    std::string  body_;
+
+  public:
+    WebServicePostCommand(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
+                          MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
+                          const Orthanc::WebServiceParameters& parameters,
+                          const std::string& url,
+                          const IWebService::HttpHeaders& headers,
+                          unsigned int timeoutInSeconds,
+                          const std::string& body,
+                          Orthanc::IDynamicObject* payload /* takes ownership */,
+                          OrthancStone::NativeStoneApplicationContext& context);
+
+    virtual void Execute();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/Defaults.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,437 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "Defaults.h"
+
+#include "WasmWebService.h"
+#include "WasmDelayedCallExecutor.h"
+#include "../../../Framework/Deprecated/Widgets/TestCairoWidget.h"
+#include "../../../Framework/Deprecated/Viewport/WidgetViewport.h"
+#include <Applications/Wasm/StartupParametersBuilder.h>
+#include <Platforms/Wasm/WasmPlatformApplicationAdapter.h>
+#include <Framework/StoneInitialization.h>
+#include <Core/Logging.h>
+#include <sstream>
+
+#include <algorithm>
+
+
+static unsigned int width_ = 0;
+static unsigned int height_ = 0;
+
+/**********************************/
+
+static std::unique_ptr<OrthancStone::IStoneApplication> application;
+static std::unique_ptr<OrthancStone::WasmPlatformApplicationAdapter> applicationWasmAdapter = NULL;
+static std::unique_ptr<OrthancStone::StoneApplicationContext> context;
+static OrthancStone::StartupParametersBuilder startupParametersBuilder;
+static OrthancStone::MessageBroker broker;
+
+static OrthancStone::ViewportContentChangedObserver viewportContentChangedObserver_(broker);
+static OrthancStone::StatusBar statusBar_;
+
+static std::list<std::shared_ptr<Deprecated::WidgetViewport>> viewports_;
+
+std::shared_ptr<Deprecated::WidgetViewport> FindViewportSharedPtr(ViewportHandle viewport) {
+  for (const auto& v : viewports_) {
+    if (v.get() == viewport) {
+      return v;
+    }
+  }
+  assert(false);
+  return std::shared_ptr<Deprecated::WidgetViewport>();
+}
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if 0
+  // rewrite malloc/free in order to monitor allocations.  We actually only monitor large allocations (like images ...)
+
+  size_t bigChunksTotalSize = 0;
+  std::map<void*, size_t> allocatedBigChunks;
+
+  extern void* emscripten_builtin_malloc(size_t bytes);
+  extern void emscripten_builtin_free(void* mem);
+
+  void * __attribute__((noinline)) malloc(size_t size)
+  {
+    void *ptr = emscripten_builtin_malloc(size);
+    if (size > 100000)
+    {
+      bigChunksTotalSize += size;
+      printf("++ Allocated %zu bytes, got %p. (%zu MB consumed by big chunks)\n", size, ptr, bigChunksTotalSize/(1024*1024));
+      allocatedBigChunks[ptr] = size;
+    }
+    return ptr;
+  }
+
+  void __attribute__((noinline)) free(void *ptr)
+  {
+    emscripten_builtin_free(ptr);
+
+    std::map<void*, size_t>::iterator it = allocatedBigChunks.find(ptr);
+    if (it != allocatedBigChunks.end())
+    {
+      bigChunksTotalSize -= it->second;
+      printf("--     Freed %zu bytes at %p.   (%zu MB consumed by big chunks)\n", it->second, ptr, bigChunksTotalSize/(1024*1024));
+      allocatedBigChunks.erase(it);
+    }
+  }
+#endif // 0
+
+  using namespace OrthancStone;
+
+  // when WASM needs a C++ viewport
+  ViewportHandle EMSCRIPTEN_KEEPALIVE CreateCppViewport() {
+    
+    std::shared_ptr<Deprecated::WidgetViewport> viewport(new Deprecated::WidgetViewport(broker));
+    printf("viewport %x\n", (int)viewport.get());
+
+    viewports_.push_back(viewport);
+
+    printf("There are now %lu viewports in C++\n", viewports_.size());
+
+    viewport->SetStatusBar(statusBar_);
+
+    viewport->RegisterObserverCallback(
+      new Callable<ViewportContentChangedObserver, Deprecated::IViewport::ViewportChangedMessage>
+      (viewportContentChangedObserver_, &ViewportContentChangedObserver::OnViewportChanged));
+
+    return viewport.get();
+  }
+
+  // when WASM does not need a viewport anymore, it should release it 
+  void EMSCRIPTEN_KEEPALIVE ReleaseCppViewport(ViewportHandle viewport) {
+    viewports_.remove_if([viewport](const std::shared_ptr<Deprecated::WidgetViewport>& v) { return v.get() == viewport;});
+
+    printf("There are now %lu viewports in C++\n", viewports_.size());
+  }
+
+  void EMSCRIPTEN_KEEPALIVE CreateWasmApplication(ViewportHandle viewport) {
+    printf("Initializing Stone\n");
+    OrthancStone::StoneInitialize();
+    printf("CreateWasmApplication\n");
+
+    application.reset(CreateUserApplication(broker));
+    applicationWasmAdapter.reset(CreateWasmApplicationAdapter(broker, application.get())); 
+    Deprecated::WasmWebService::SetBroker(broker);
+    Deprecated::WasmDelayedCallExecutor::SetBroker(broker);
+
+    startupParametersBuilder.Clear();
+  }
+
+  void EMSCRIPTEN_KEEPALIVE SetStartupParameter(const char* keyc,
+                                                  const char* value) {
+    startupParametersBuilder.SetStartupParameter(keyc, value);
+  }
+
+  void EMSCRIPTEN_KEEPALIVE StartWasmApplication(const char* baseUri) {
+
+    printf("StartWasmApplication\n");
+
+    Orthanc::Logging::SetErrorWarnInfoTraceLoggingFunctions(
+      stone_console_error, stone_console_warning,
+      stone_console_info, stone_console_trace);
+
+    // recreate a command line from uri arguments and parse it
+    boost::program_options::variables_map parameters;
+    boost::program_options::options_description options;
+    application->DeclareStartupOptions(options);
+    startupParametersBuilder.GetStartupParameters(parameters, options);
+
+    context.reset(new OrthancStone::StoneApplicationContext(broker));
+    context->SetOrthancBaseUrl(baseUri);
+    printf("Base URL to Orthanc API: [%s]\n", baseUri);
+    context->SetWebService(Deprecated::WasmWebService::GetInstance());
+    context->SetDelayedCallExecutor(Deprecated::WasmDelayedCallExecutor::GetInstance());
+    application->Initialize(context.get(), statusBar_, parameters);
+    application->InitializeWasm();
+
+//    viewport->SetSize(width_, height_);
+    printf("StartWasmApplication - completed\n");
+  }
+  
+  bool EMSCRIPTEN_KEEPALIVE WasmIsTraceLevelEnabled()
+  {
+    return Orthanc::Logging::IsTraceLevelEnabled();
+  }
+
+  bool EMSCRIPTEN_KEEPALIVE WasmIsInfoLevelEnabled()
+  {
+    return Orthanc::Logging::IsInfoLevelEnabled();
+  }
+  
+  void EMSCRIPTEN_KEEPALIVE WasmDoAnimation()
+  {
+    for (auto viewport : viewports_) {
+      // TODO Only launch the JavaScript timer if "HasAnimation()"
+      if (viewport->HasAnimation())
+      {
+        viewport->DoAnimation();
+      }
+
+    }
+
+  }
+  
+
+  void EMSCRIPTEN_KEEPALIVE ViewportSetSize(ViewportHandle viewport, unsigned int width, unsigned int height)
+  {
+    width_ = width;
+    height_ = height;
+    
+    viewport->SetSize(width, height);
+  }
+
+  int EMSCRIPTEN_KEEPALIVE ViewportRender(ViewportHandle viewport,
+                                          unsigned int width,
+                                          unsigned int height,
+                                          uint8_t* data)
+  {
+    viewportContentChangedObserver_.Reset();
+
+    //printf("ViewportRender called %dx%d\n", width, height);
+    if (width == 0 ||
+        height == 0)
+    {
+      return 1;
+    }
+
+    Orthanc::ImageAccessor surface;
+    surface.AssignWritable(Orthanc::PixelFormat_BGRA32, width, height, 4 * width, data);
+
+    viewport->Render(surface);
+
+    // Convert from BGRA32 memory layout (only color mode supported by
+    // Cairo, which corresponds to CAIRO_FORMAT_ARGB32) to RGBA32 (as
+    // expected by HTML5 canvas). This simply amounts to swapping the
+    // B and R channels.
+    uint8_t* p = data;
+    for (unsigned int y = 0; y < height; y++) {
+      for (unsigned int x = 0; x < width; x++) {
+        uint8_t tmp = p[0];
+        p[0] = p[2];
+        p[2] = tmp;
+        
+        p += 4;
+      }
+    }
+
+    return 1;
+  }
+
+
+  void EMSCRIPTEN_KEEPALIVE ViewportMouseDown(ViewportHandle viewport,
+                                              unsigned int rawButton,
+                                              int x,
+                                              int y,
+                                              unsigned int rawModifiers)
+  {
+    OrthancStone::MouseButton button;
+    switch (rawButton)
+    {
+      case 0:
+        button = OrthancStone::MouseButton_Left;
+        break;
+
+      case 1:
+        button = OrthancStone::MouseButton_Middle;
+        break;
+
+      case 2:
+        button = OrthancStone::MouseButton_Right;
+        break;
+
+      default:
+        return;  // Unknown button
+    }
+
+    viewport->MouseDown(button, x, y, OrthancStone::KeyboardModifiers_None, std::vector<Deprecated::Touch>());
+  }
+  
+
+  void EMSCRIPTEN_KEEPALIVE ViewportMouseWheel(ViewportHandle viewport,
+                                               int deltaY,
+                                               int x,
+                                               int y,
+                                               int isControl)
+  {
+    if (deltaY != 0)
+    {
+      OrthancStone::MouseWheelDirection direction = (deltaY < 0 ?
+                                                     OrthancStone::MouseWheelDirection_Up :
+                                                     OrthancStone::MouseWheelDirection_Down);
+      OrthancStone::KeyboardModifiers modifiers = OrthancStone::KeyboardModifiers_None;
+
+      if (isControl != 0)
+      {
+        modifiers = OrthancStone::KeyboardModifiers_Control;
+      }
+
+      viewport->MouseWheel(direction, x, y, modifiers);
+    }
+  }
+  
+
+  void EMSCRIPTEN_KEEPALIVE ViewportMouseMove(ViewportHandle viewport,
+                                              int x,
+                                              int y)
+  {
+    viewport->MouseMove(x, y, std::vector<Deprecated::Touch>());
+  }
+
+  void GetTouchVector(std::vector<Deprecated::Touch>& output,
+                      int touchCount,
+                      float x0,
+                      float y0,
+                      float x1,
+                      float y1,
+                      float x2,
+                      float y2)
+  {
+    // TODO: it might be nice to try to pass all the x0,y0 coordinates as arrays but that's not so easy to pass array between JS and C++
+    if (touchCount > 0)
+    {
+      output.push_back(Deprecated::Touch(x0, y0));
+    }
+    if (touchCount > 1)
+    {
+      output.push_back(Deprecated::Touch(x1, y1));
+    }
+    if (touchCount > 2)
+    {
+      output.push_back(Deprecated::Touch(x2, y2));
+    }
+
+  }
+
+  void EMSCRIPTEN_KEEPALIVE ViewportTouchStart(ViewportHandle viewport,
+                                              int touchCount,
+                                              float x0,
+                                              float y0,
+                                              float x1,
+                                              float y1,
+                                              float x2,
+                                              float y2)
+  {
+    // printf("touch start with %d touches\n", touchCount);
+
+    std::vector<Deprecated::Touch> touches;
+    GetTouchVector(touches, touchCount, x0, y0, x1, y1, x2, y2);
+    viewport->TouchStart(touches);
+  }
+
+  void EMSCRIPTEN_KEEPALIVE ViewportTouchMove(ViewportHandle viewport,
+                                              int touchCount,
+                                              float x0,
+                                              float y0,
+                                              float x1,
+                                              float y1,
+                                              float x2,
+                                              float y2)
+  {
+    // printf("touch move with %d touches\n", touchCount);
+
+    std::vector<Deprecated::Touch> touches;
+    GetTouchVector(touches, touchCount, x0, y0, x1, y1, x2, y2);
+    viewport->TouchMove(touches);
+  }
+
+  void EMSCRIPTEN_KEEPALIVE ViewportTouchEnd(ViewportHandle viewport,
+                                              int touchCount,
+                                              float x0,
+                                              float y0,
+                                              float x1,
+                                              float y1,
+                                              float x2,
+                                              float y2)
+  {
+    // printf("touch end with %d touches remaining\n", touchCount);
+
+    std::vector<Deprecated::Touch> touches;
+    GetTouchVector(touches, touchCount, x0, y0, x1, y1, x2, y2);
+    viewport->TouchEnd(touches);
+  }
+
+  void EMSCRIPTEN_KEEPALIVE ViewportKeyPressed(ViewportHandle viewport,
+                                               int key,
+                                               const char* keyChar, 
+                                               bool isShiftPressed, 
+                                               bool isControlPressed,
+                                               bool isAltPressed)
+                                               
+  {
+    OrthancStone::KeyboardModifiers modifiers = OrthancStone::KeyboardModifiers_None;
+    if (isShiftPressed) {
+      modifiers = static_cast<OrthancStone::KeyboardModifiers>(modifiers + OrthancStone::KeyboardModifiers_Shift);
+    }
+    if (isControlPressed) {
+      modifiers = static_cast<OrthancStone::KeyboardModifiers>(modifiers + OrthancStone::KeyboardModifiers_Control);
+    }
+    if (isAltPressed) {
+      modifiers = static_cast<OrthancStone::KeyboardModifiers>(modifiers + OrthancStone::KeyboardModifiers_Alt);
+    }
+
+    char c = 0;
+    if (keyChar != NULL && key == OrthancStone::KeyboardKeys_Generic) {
+      c = keyChar[0];
+    }
+    viewport->KeyPressed(static_cast<OrthancStone::KeyboardKeys>(key), c, modifiers);
+  }
+  
+
+  void EMSCRIPTEN_KEEPALIVE ViewportMouseUp(ViewportHandle viewport)
+  {
+    viewport->MouseUp();
+  }
+  
+
+  void EMSCRIPTEN_KEEPALIVE ViewportMouseEnter(ViewportHandle viewport)
+  {
+    viewport->MouseEnter();
+  }
+  
+
+  void EMSCRIPTEN_KEEPALIVE ViewportMouseLeave(ViewportHandle viewport)
+  {
+    viewport->MouseLeave();
+  }
+
+  const char* EMSCRIPTEN_KEEPALIVE SendSerializedMessageToStoneApplication(const char* message) 
+  {
+    static std::string output; // we don't want the string to be deallocated when we return to JS code so we always use the same string (this is fine since JS is single-thread)
+
+    //printf("SendSerializedMessageToStoneApplication\n");
+    //printf("%s", message);
+
+    if (applicationWasmAdapter.get() != NULL) {
+      applicationWasmAdapter->HandleSerializedMessageFromWeb(output, std::string(message));
+      return output.c_str();
+    }
+    printf("This Stone application does not have a Web Adapter, unable to send messages");
+    return NULL;
+  }
+
+#ifdef __cplusplus
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/Defaults.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,103 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <emscripten/emscripten.h>
+
+#include "../../Framework/Deprecated/Viewport/WidgetViewport.h"
+#include "../../Framework/Deprecated/Widgets/LayoutWidget.h"
+#include <Applications/IStoneApplication.h>
+#include <Platforms/Wasm/WasmPlatformApplicationAdapter.h>
+
+typedef Deprecated::WidgetViewport* ViewportHandle; // the objects exchanged between JS and C++
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+  
+  // JS methods accessible from C++
+  extern void ScheduleWebViewportRedrawFromCpp(ViewportHandle cppViewportHandle);
+  extern void UpdateStoneApplicationStatusFromCppWithString(const char* statusUpdateMessage);
+  extern void UpdateStoneApplicationStatusFromCppWithSerializedMessage(const char* statusUpdateMessage);
+  extern void stone_console_error(const char*);
+  extern void stone_console_warning(const char*);
+  extern void stone_console_info(const char*);
+  extern void stone_console_trace(const char*);
+
+  // C++ methods accessible from JS
+  extern void EMSCRIPTEN_KEEPALIVE CreateWasmApplication(ViewportHandle cppViewportHandle);
+  extern void EMSCRIPTEN_KEEPALIVE SetStartupParameter(const char* keyc, const char* value);
+  
+
+#ifdef __cplusplus
+}
+#endif
+
+// these methods must be implemented in the custom app "mainWasm.cpp"
+extern OrthancStone::IStoneApplication* CreateUserApplication(OrthancStone::MessageBroker& broker);
+extern OrthancStone::WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(OrthancStone::MessageBroker& broker, OrthancStone::IStoneApplication* application);
+
+namespace OrthancStone {
+
+  // default Observer to trigger Viewport redraw when something changes in the Viewport
+  class ViewportContentChangedObserver : public IObserver
+  {
+  private:
+    // Flag to avoid flooding JavaScript with redundant Redraw requests
+    bool isScheduled_; 
+
+  public:
+    ViewportContentChangedObserver(MessageBroker& broker) :
+      IObserver(broker),
+      isScheduled_(false)
+    {
+    }
+
+    void Reset()
+    {
+      isScheduled_ = false;
+    }
+
+    void OnViewportChanged(const Deprecated::IViewport::ViewportChangedMessage& message)
+    {
+      if (!isScheduled_)
+      {
+        ScheduleWebViewportRedrawFromCpp((ViewportHandle)&message.GetOrigin());  // loosing constness when transmitted to Web
+        isScheduled_ = true;
+      }
+    }
+  };
+
+  // default status bar to log messages on the console/stdout
+  class StatusBar : public Deprecated::IStatusBar
+  {
+  public:
+    virtual void ClearMessage()
+    {
+    }
+
+    virtual void SetMessage(const std::string& message)
+    {
+      printf("%s\n", message.c_str());
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,67 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WasmDelayedCallExecutor.h"
+#include "json/value.h"
+#include "json/writer.h"
+#include <emscripten/emscripten.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  extern void WasmDelayedCallExecutor_Schedule(void* callable,
+                                      unsigned int timeoutInMs
+                                      /*void* payload*/);
+
+  void EMSCRIPTEN_KEEPALIVE WasmDelayedCallExecutor_ExecuteCallback(void* callable
+                                                       //void* payload
+                                                       )
+  {
+    if (callable == NULL)
+    {
+      throw;
+    }
+    else
+    {
+      reinterpret_cast<OrthancStone::MessageHandler<Deprecated::IDelayedCallExecutor::TimeoutMessage>*>(callable)->
+        Apply(Deprecated::IDelayedCallExecutor::TimeoutMessage()); // uri, reinterpret_cast<Orthanc::IDynamicObject*>(payload)));
+    }
+  }
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+namespace Deprecated
+{
+  OrthancStone::MessageBroker* WasmDelayedCallExecutor::broker_ = NULL;
+
+
+  void WasmDelayedCallExecutor::Schedule(OrthancStone::MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,
+                         unsigned int timeoutInMs)
+  {
+    WasmDelayedCallExecutor_Schedule(callback, timeoutInMs);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,61 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Framework/Deprecated/Toolbox/IDelayedCallExecutor.h"
+#include <Core/OrthancException.h>
+
+namespace Deprecated
+{
+  class WasmDelayedCallExecutor : public IDelayedCallExecutor
+  {
+  private:
+    static OrthancStone::MessageBroker* broker_;
+
+    // Private constructor => Singleton design pattern
+    WasmDelayedCallExecutor(OrthancStone::MessageBroker& broker) :
+      IDelayedCallExecutor(broker)
+    {
+    }
+
+  public:
+    static WasmDelayedCallExecutor& GetInstance()
+    {
+      if (broker_ == NULL)
+      {
+        printf("WasmDelayedCallExecutor::GetInstance(): broker not initialized\n");
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      static WasmDelayedCallExecutor instance(*broker_);
+      return instance;
+    }
+
+    static void SetBroker(OrthancStone::MessageBroker& broker)
+    {
+      broker_ = &broker;
+    }
+
+    virtual void Schedule(OrthancStone::MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,
+                         unsigned int timeoutInMs = 1000);
+
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.js	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,7 @@
+mergeInto(LibraryManager.library, {
+  WasmDelayedCallExecutor_Schedule: function(callable, timeoutInMs/*, payload*/) {
+    setTimeout(function() {
+      window.WasmDelayedCallExecutor_ExecuteCallback(callable/*, payload*/);
+    }, timeoutInMs);
+  }
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmPlatformApplicationAdapter.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,80 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WasmPlatformApplicationAdapter.h"
+
+#include "Framework/StoneException.h"
+#include <stdio.h>
+#include "Platforms/Wasm/Defaults.h"
+
+namespace OrthancStone
+{
+  WasmPlatformApplicationAdapter::WasmPlatformApplicationAdapter(MessageBroker& broker, IStoneApplication& application)
+  : IObserver(broker),
+    application_(application)
+  {
+  }
+
+  void WasmPlatformApplicationAdapter::HandleSerializedMessageFromWeb(std::string& output, const std::string& input)
+  {
+    try
+    {
+      application_.HandleSerializedMessage(input.c_str());
+    }
+    catch (StoneException& exc)
+    {
+      printf("Error while handling message from web (error code = %d):\n", exc.GetErrorCode());
+      printf("While interpreting input: '%s'\n", input.c_str());
+      output = std::string("ERROR : ");
+    }
+    catch (std::exception& exc)
+    {
+      printf("Error while handling message from web (error text = %s):\n", exc.what());
+      printf("While interpreting input: '%s'\n", input.c_str());
+      output = std::string("ERROR : ");
+    }
+  }
+
+  void WasmPlatformApplicationAdapter::NotifyStatusUpdateFromCppToWebWithString(const std::string& statusUpdateMessage)
+  {
+    try
+    {
+      UpdateStoneApplicationStatusFromCppWithString(statusUpdateMessage.c_str());
+    }
+    catch (...)
+    {
+      printf("Error while handling string message to web\n");
+    }
+  }
+
+  void WasmPlatformApplicationAdapter::NotifyStatusUpdateFromCppToWebWithSerializedMessage(const std::string& statusUpdateMessage)
+  {
+    try
+    {
+      UpdateStoneApplicationStatusFromCppWithSerializedMessage(statusUpdateMessage.c_str());
+    }
+    catch (...)
+    {
+      printf("Error while handling serialized message to web\n");
+    }
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmPlatformApplicationAdapter.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,40 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <string>
+#include "../../../Framework/Messages/IObserver.h"
+#include <Applications/IStoneApplication.h>
+
+namespace OrthancStone
+{
+  class WasmPlatformApplicationAdapter : public IObserver
+  {
+      IStoneApplication&  application_;
+    public:
+      WasmPlatformApplicationAdapter(MessageBroker& broker, IStoneApplication& application);
+
+      virtual void HandleSerializedMessageFromWeb(std::string& output, const std::string& input);
+      virtual void NotifyStatusUpdateFromCppToWebWithString(const std::string& statusUpdateMessage);
+      virtual void NotifyStatusUpdateFromCppToWebWithSerializedMessage(const std::string& statusUpdateMessage);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmViewport.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,34 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WasmViewport.h"
+
+#include <vector>
+#include <memory>
+
+std::vector<std::shared_ptr<Deprecated::WidgetViewport>> wasmViewports;
+
+void AttachWidgetToWasmViewport(const char* htmlCanvasId, Deprecated::IWidget* centralWidget) {
+    std::shared_ptr<Deprecated::WidgetViewport> viewport(CreateWasmViewportFromCpp(htmlCanvasId));
+    viewport->SetCentralWidget(centralWidget);
+
+    wasmViewports.push_back(viewport);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmViewport.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,39 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Framework/Deprecated/Viewport/WidgetViewport.h"
+
+#include <emscripten/emscripten.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  // JS methods accessible from C++
+  extern Deprecated::WidgetViewport* CreateWasmViewportFromCpp(const char* htmlCanvasId);
+
+#ifdef __cplusplus
+}
+#endif
+
+extern void AttachWidgetToWasmViewport(const char* htmlCanvasId, Deprecated::IWidget* centralWidget);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,189 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WasmWebService.h"
+#include "json/value.h"
+#include "json/writer.h"
+#include <emscripten/emscripten.h>
+#include <boost/shared_ptr.hpp>
+
+struct CachedSuccessNotification
+{
+  boost::shared_ptr<Deprecated::BaseWebService::CachedHttpRequestSuccessMessage>    cachedMessage;
+  std::unique_ptr<Orthanc::IDynamicObject>                                              payload;
+  OrthancStone::MessageHandler<Deprecated::IWebService::HttpRequestSuccessMessage>* successCallback;
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  extern void WasmWebService_GetAsync(void* callableSuccess,
+                                      void* callableFailure,
+                                      const char* uri,
+                                      const char* headersInJsonString,
+                                      void* payload,
+                                      unsigned int timeoutInSeconds);
+
+  extern void WasmWebService_ScheduleLaterCachedSuccessNotification(void* brol);
+
+  extern void WasmWebService_PostAsync(void* callableSuccess,
+                                       void* callableFailure,
+                                       const char* uri,
+                                       const char* headersInJsonString,
+                                       const void* body,
+                                       size_t bodySize,
+                                       void* payload,
+                                       unsigned int timeoutInSeconds);
+
+  extern void WasmWebService_DeleteAsync(void* callableSuccess,
+                                         void* callableFailure,
+                                         const char* uri,
+                                         const char* headersInJsonString,
+                                         void* payload,
+                                         unsigned int timeoutInSeconds);
+
+  void EMSCRIPTEN_KEEPALIVE WasmWebService_NotifyError(void* failureCallable,
+                                                       const char* uri,
+                                                       unsigned int httpStatus,
+                                                       void* payload)
+  {
+    if (failureCallable != NULL)
+    {
+      reinterpret_cast<OrthancStone::MessageHandler<Deprecated::IWebService::HttpRequestErrorMessage>*>(failureCallable)->
+        Apply(Deprecated::IWebService::HttpRequestErrorMessage(uri, static_cast<Orthanc::HttpStatus>(httpStatus), reinterpret_cast<Orthanc::IDynamicObject*>(payload)));
+    }
+  }
+
+  void EMSCRIPTEN_KEEPALIVE WasmWebService_NotifyCachedSuccess(void* notification_)
+  {
+    // notification has been allocated in C++ and passed to JS.  It must be deleted by this method
+    std::unique_ptr<CachedSuccessNotification> notification(reinterpret_cast<CachedSuccessNotification*>(notification_));
+
+    notification->successCallback->Apply(Deprecated::IWebService::HttpRequestSuccessMessage(
+      notification->cachedMessage->GetUri(), 
+      notification->cachedMessage->GetAnswer(),
+      notification->cachedMessage->GetAnswerSize(),
+      notification->cachedMessage->GetAnswerHttpHeaders(),
+      notification->payload.get()
+      ));
+  }
+
+  void EMSCRIPTEN_KEEPALIVE WasmWebService_NotifySuccess(void* successCallable,
+                                                         const char* uri,
+                                                         const void* body,
+                                                         size_t bodySize,
+                                                         const char* answerHeaders,
+                                                         void* payload)
+  {
+    if (successCallable != NULL)
+    {
+      Deprecated::IWebService::HttpHeaders headers;
+
+      // TODO - Parse "answerHeaders"
+      //printf("TODO: parse headers [%s]\n", answerHeaders);
+      
+      reinterpret_cast<OrthancStone::MessageHandler<Deprecated::IWebService::HttpRequestSuccessMessage>*>(successCallable)->
+        Apply(Deprecated::IWebService::HttpRequestSuccessMessage(uri, body, bodySize, headers,
+                                                                   reinterpret_cast<Orthanc::IDynamicObject*>(payload)));
+    }
+  }
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+namespace Deprecated
+{
+  OrthancStone::MessageBroker* WasmWebService::broker_ = NULL;
+
+  void ToJsonString(std::string& output, const IWebService::HttpHeaders& headers)
+  {
+    Json::Value jsonHeaders;
+    for (IWebService::HttpHeaders::const_iterator it = headers.begin(); it != headers.end(); it++ )
+    {
+      jsonHeaders[it->first] = it->second;
+    }
+
+    Json::StreamWriterBuilder builder;
+    std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
+    std::ostringstream outputStr;
+
+    writer->write(jsonHeaders, &outputStr);
+    output = outputStr.str();
+  }
+
+  void WasmWebService::PostAsync(const std::string& relativeUri,
+                                 const HttpHeaders& headers,
+                                 const std::string& body,
+                                 Orthanc::IDynamicObject* payload,
+                                 OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallable,
+                                 OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallable,
+                                 unsigned int timeoutInSeconds)
+  {
+    std::string headersInJsonString;
+    ToJsonString(headersInJsonString, headers);
+    WasmWebService_PostAsync(successCallable, failureCallable, relativeUri.c_str(), headersInJsonString.c_str(),
+                             body.c_str(), body.size(), payload, timeoutInSeconds);
+  }
+
+  void WasmWebService::DeleteAsync(const std::string& relativeUri,
+                                   const HttpHeaders& headers,
+                                   Orthanc::IDynamicObject* payload,
+                                   OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallable,
+                                   OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallable,
+                                   unsigned int timeoutInSeconds)
+  {
+    std::string headersInJsonString;
+    ToJsonString(headersInJsonString, headers);
+    WasmWebService_DeleteAsync(successCallable, failureCallable, relativeUri.c_str(), headersInJsonString.c_str(),
+                               payload, timeoutInSeconds);
+  }
+
+  void WasmWebService::GetAsyncInternal(const std::string &relativeUri,
+                                        const HttpHeaders &headers,
+                                        Orthanc::IDynamicObject *payload,
+                                        OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage> *successCallable,
+                                        OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage> *failureCallable,
+                                        unsigned int timeoutInSeconds)
+  {
+    std::string headersInJsonString;
+    ToJsonString(headersInJsonString, headers);
+    WasmWebService_GetAsync(successCallable, failureCallable, relativeUri.c_str(),
+                            headersInJsonString.c_str(), payload, timeoutInSeconds);
+  }
+
+  void WasmWebService::NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedMessage,
+                                              Orthanc::IDynamicObject* payload, // takes ownership
+                                              OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback)
+  {
+    CachedSuccessNotification* notification = new CachedSuccessNotification();  // allocated on the heap, it will be passed to JS and deleted when coming back to C++
+    notification->cachedMessage = cachedMessage;
+    notification->payload.reset(payload);
+    notification->successCallback = successCallback;
+
+    WasmWebService_ScheduleLaterCachedSuccessNotification(notification);
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,83 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Framework/Deprecated/Toolbox/BaseWebService.h"
+#include <Core/OrthancException.h>
+
+namespace Deprecated
+{
+class WasmWebService : public BaseWebService
+{
+private:
+  static OrthancStone::MessageBroker *broker_;
+
+  // Private constructor => Singleton design pattern
+  WasmWebService(OrthancStone::MessageBroker &broker) : BaseWebService(broker)
+  {
+  }
+
+public:
+  static WasmWebService &GetInstance()
+  {
+    if (broker_ == NULL)
+    {
+      printf("WasmWebService::GetInstance(): broker not initialized\n");
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    static WasmWebService instance(*broker_);
+    return instance;
+  }
+
+  static void SetBroker(OrthancStone::MessageBroker &broker)
+  {
+    broker_ = &broker;
+  }
+
+  virtual void PostAsync(const std::string &uri,
+                         const HttpHeaders &headers,
+                         const std::string &body,
+                         Orthanc::IDynamicObject *payload,
+                         OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage> *successCallable,
+                         OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage> *failureCallable = NULL,
+                         unsigned int timeoutInSeconds = 60);
+
+  virtual void DeleteAsync(const std::string &uri,
+                           const HttpHeaders &headers,
+                           Orthanc::IDynamicObject *payload,
+                           OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage> *successCallable,
+                           OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage> *failureCallable = NULL,
+                           unsigned int timeoutInSeconds = 60);
+
+protected:
+  virtual void GetAsyncInternal(const std::string &uri,
+                                const HttpHeaders &headers,
+                                Orthanc::IDynamicObject *payload,
+                                OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage> *successCallable,
+                                OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage> *failureCallable = NULL,
+                                unsigned int timeoutInSeconds = 60);
+
+  virtual void NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedHttpMessage,
+                                      Orthanc::IDynamicObject *payload, // takes ownership
+                                      OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage> *successCallback);
+};
+} // namespace Deprecated
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.js	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,108 @@
+mergeInto(LibraryManager.library, {
+  WasmWebService_GetAsync: function(callableSuccess, callableFailure, url, headersInJsonString, payload, timeoutInSeconds) {
+    // Directly use XMLHttpRequest (no jQuery) to retrieve the raw binary data
+    // http://www.henryalgus.com/reading-binary-files-using-jquery-ajax/
+    var xhr = new XMLHttpRequest();
+    var url_ = UTF8ToString(url);
+    var headersInJsonString_ = UTF8ToString(headersInJsonString);
+
+    xhr.open('GET', url_, true);
+    xhr.responseType = 'arraybuffer';
+    xhr.timeout = timeoutInSeconds * 1000;
+    var headers = JSON.parse(headersInJsonString_);
+    for (var key in headers) {
+      xhr.setRequestHeader(key, headers[key]);
+    }
+    //console.log(xhr); 
+    xhr.onreadystatechange = function() {
+      if (this.readyState == XMLHttpRequest.DONE) {
+        if (xhr.status === 200) {
+          var s = xhr.getAllResponseHeaders();
+          var headers = _malloc(s.length + 1);
+          stringToUTF8(s, headers, s.length + 1);
+          
+          // TODO - Is "new Uint8Array()" necessary? This copies the
+          // answer to the WebAssembly stack, hence necessitating
+          // increasing the TOTAL_STACK parameter of Emscripten
+          window.WasmWebService_NotifySuccess(callableSuccess, url_, new Uint8Array(this.response),
+                                       this.response.byteLength, headers, payload);
+        } else {
+          window.WasmWebService_NotifyError(callableFailure, url_, xhr.status, payload);
+        }
+      }
+    }
+    
+    xhr.send();
+  },
+
+  WasmWebService_ScheduleLaterCachedSuccessNotification: function (brol) {
+    setTimeout(function() {
+      window.WasmWebService_NotifyCachedSuccess(brol);
+    }, 0);
+  },
+
+  WasmWebService_PostAsync: function(callableSuccess, callableFailure, url, headersInJsonString, body, bodySize, payload, timeoutInSeconds) {
+    var xhr = new XMLHttpRequest();
+    var url_ = UTF8ToString(url);
+    var headersInJsonString_ = UTF8ToString(headersInJsonString);
+    xhr.open('POST', url_, true);
+    xhr.timeout = timeoutInSeconds * 1000;
+    xhr.responseType = 'arraybuffer';
+    xhr.setRequestHeader('Content-type', 'application/octet-stream');
+
+    var headers = JSON.parse(headersInJsonString_);
+    for (var key in headers) {
+      xhr.setRequestHeader(key, headers[key]);
+    }
+    
+    xhr.onreadystatechange = function() {
+      if (this.readyState == XMLHttpRequest.DONE) {
+        if (xhr.status === 200) {
+          var s = xhr.getAllResponseHeaders();
+          var headers = _malloc(s.length + 1);
+          stringToUTF8(s, headers, s.length + 1);
+
+          window.WasmWebService_NotifySuccess(callableSuccess, url_, new Uint8Array(this.response),
+                                       this.response.byteLength, headers, payload);
+        } else {
+          window.WasmWebService_NotifyError(callableFailure, url_, xhr.status, payload);
+        }
+      }
+    }
+
+    xhr.send(new Uint8ClampedArray(HEAPU8.buffer, body, bodySize));
+  },
+
+  WasmWebService_DeleteAsync: function(callableSuccess, callableFailure, url, headersInJsonString, payload, timeoutInSeconds) {
+    var xhr = new XMLHttpRequest();
+    var url_ = UTF8ToString(url);
+    var headersInJsonString_ = UTF8ToString(headersInJsonString);
+    xhr.open('DELETE', url_, true);
+    xhr.timeout = timeoutInSeconds * 1000;
+    xhr.responseType = 'arraybuffer';
+    xhr.setRequestHeader('Content-type', 'application/octet-stream');
+  
+    var headers = JSON.parse(headersInJsonString_);
+    for (var key in headers) {
+      xhr.setRequestHeader(key, headers[key]);
+    }
+    
+    xhr.onreadystatechange = function() {
+      if (this.readyState == XMLHttpRequest.DONE) {
+        if (xhr.status === 200) {
+          var s = xhr.getAllResponseHeaders();
+          var headers = _malloc(s.length + 1);
+          stringToUTF8(s, headers, s.length + 1);
+
+          window.WasmWebService_NotifySuccess(callableSuccess, url_, new Uint8Array(this.response),
+                                       this.response.byteLength, headers, payload);
+        } else {
+          window.WasmWebService_NotifyError(callableFailure, url_, xhr.status, payload);
+        }
+      }
+    }
+  
+    xhr.send();
+  }
+  
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/default-library.js	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,49 @@
+// this file contains the JS method you want to expose to C++ code
+
+mergeInto(LibraryManager.library, {
+
+  ScheduleWebViewportRedrawFromCpp: function(cppViewportHandle) {
+    window.ScheduleWebViewportRedraw(cppViewportHandle);
+  },
+
+  CreateWasmViewportFromCpp: function(htmlCanvasId) {
+    return window.CreateWasmViewport(htmlCanvasId);
+  },
+
+  // each time the StoneApplication updates its status, it may signal it 
+  // through this method. i.e, to change the status of a button in the web interface
+  UpdateStoneApplicationStatusFromCppWithString: function(statusUpdateMessage) {
+    var statusUpdateMessage_ = UTF8ToString(statusUpdateMessage);
+    window.UpdateWebApplicationWithString(statusUpdateMessage_);
+  },
+
+  // same, but with a serialized message
+  UpdateStoneApplicationStatusFromCppWithSerializedMessage: function(statusUpdateMessage) {
+    var statusUpdateMessage_ = UTF8ToString(statusUpdateMessage);
+    window.UpdateWebApplicationWithSerializedMessage(statusUpdateMessage_);
+  },
+
+  // These functions are called from C++ (through an extern declaration) 
+  // and call the standard logger that, here, routes to the console.
+
+  stone_console_error : function(message) {
+    var text = UTF8ToString(message);
+    window.errorFromCpp(text);
+  },
+
+  stone_console_warning : function(message) {
+    var text = UTF8ToString(message);
+    window.warningFromCpp(text);
+  },
+
+  stone_console_info: function(message) {
+    var text = UTF8ToString(message);
+    window.infoFromCpp(text);
+  },
+  
+  stone_console_trace : function(message) {
+    var text = UTF8ToString(message);
+    window.debugFromCpp(text);
+  }
+
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/logger.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,111 @@
+export enum LogSource {
+  Cpp,
+  Typescript
+}
+
+export class StandardConsoleLogger {
+  public showSource: boolean = true;
+
+  public debug(...args: any[]): void {
+    this._debug(LogSource.Typescript, ...args);
+  }
+
+  public debugFromCpp(...args: any[]): void {
+    this._debug(LogSource.Cpp, ...args);
+  }
+
+  public info(...args: any[]): void {
+    this._info(LogSource.Typescript, ...args);
+  }
+
+  public infoFromCpp(message: string): void {
+    this._info(LogSource.Cpp, message);
+  }
+
+  public warning(...args: any[]): void {
+    this._warning(LogSource.Typescript, ...args);
+  }
+
+  public warningFromCpp(message: string): void {
+    this._warning(LogSource.Cpp, message);
+  }
+
+  public error(...args: any[]): void {
+    this._error(LogSource.Typescript, ...args);
+  }
+
+  public errorFromCpp(message: string): void {
+    this._error(LogSource.Cpp, message);
+  }
+
+  public _debug(source: LogSource, ...args: any[]): void {
+    if ((<any> window).IsTraceLevelEnabled)
+    {
+      if ((<any> window).IsTraceLevelEnabled())
+      {
+        var output = this.getOutput(source, args);
+        console.debug(...output);
+      }
+    }
+  }
+
+  private _info(source: LogSource, ...args: any[]): void {
+    if ((<any> window).IsInfoLevelEnabled)
+    {
+      if ((<any> window).IsInfoLevelEnabled())
+      {
+        var output = this.getOutput(source, args);
+        console.info(...output);
+      }
+    }
+  }
+
+  public _warning(source: LogSource, ...args: any[]): void {
+    var output = this.getOutput(source, args);
+    console.warn(...output);
+  }
+
+  public _error(source: LogSource, ...args: any[]): void {
+    var output = this.getOutput(source, args);
+    console.error(...output);
+  }
+
+
+  private getOutput(source: LogSource, args: any[]): any[] {
+    var prefix = this.getPrefix();
+    var prefixAndSource = Array<string>();
+
+    if (prefix != null) {
+      prefixAndSource = [prefix];
+    } 
+
+    if (this.showSource) {
+      if (source == LogSource.Typescript) {
+        prefixAndSource = [...prefixAndSource, "TS "];
+      } else if (source == LogSource.Cpp) {
+        prefixAndSource = [...prefixAndSource, "C++"];
+      }
+    }
+
+    if (prefixAndSource.length > 0) {
+      prefixAndSource = [...prefixAndSource, "|"];
+    }
+
+    return [...prefixAndSource, ...args];
+  }
+
+  protected getPrefix(): string | null {
+    return null;
+  }
+}
+
+export class TimeConsoleLogger extends StandardConsoleLogger {
+  protected getPrefix(): string {
+    let now = new Date();
+    let timeString = now.getHours().toString().padStart(2, "0") + ":" + now.getMinutes().toString().padStart(2, "0") + ":" + now.getSeconds().toString().padStart(2, "0") + "." + now.getMilliseconds().toString().padStart(3, "0");
+    return timeString;
+  }
+}
+
+export var defaultLogger: StandardConsoleLogger = new TimeConsoleLogger();
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/stone-framework-loader.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,95 @@
+/**
+ * This file contains primitives to interface with WebAssembly and
+ * with the Stone framework.
+ **/
+import * as Logger from './logger'
+
+export declare type InitializationCallback = () => void;
+
+//export declare var StoneFrameworkModule : any;
+export var StoneFrameworkModule : any;
+
+//const ASSETS_FOLDER : string = "assets/lib";
+//const WASM_FILENAME : string = "orthanc-framework";
+
+export class Framework
+{
+  private static singleton_ : Framework = null;
+  private static wasmModuleName_ : string = null;
+
+  public static Configure(wasmModuleName: string) {
+    this.wasmModuleName_ = wasmModuleName;
+  }
+
+  private constructor(verbose : boolean) 
+  {
+    //this.ccall('Initialize', null, [ 'number' ], [ verbose ]);
+  }
+
+  
+  public ccall( name: string,
+                returnType: string,
+                argTypes: Array<string>,
+                argValues: Array<any>) : any
+  {
+    return (<any> window).StoneFrameworkModule.ccall(name, returnType, argTypes, argValues);
+  }
+
+  
+  public cwrap( name: string,
+                returnType: string,
+                argTypes: Array<string>) : any
+  {
+    return (<any> window).StoneFrameworkModule.cwrap(name, returnType, argTypes);
+  }
+
+  
+  public static GetInstance() : Framework
+  {
+    if (Framework.singleton_ == null) {
+      throw new Error('The WebAssembly module is not loaded yet');
+    } else {
+      return Framework.singleton_;
+    }
+  }
+
+
+  public static Initialize( verbose: boolean,
+                            callback: InitializationCallback)
+  {
+    Logger.defaultLogger.debug('Initializing WebAssembly Module');
+
+    (<any> window).errorFromCpp = function(text:any) { Logger.defaultLogger.errorFromCpp(text); };
+    (<any> window).warningFromCpp = function(text:any) { Logger.defaultLogger.warningFromCpp(text); };
+    (<any> window).infoFromCpp = function(text:any) { Logger.defaultLogger.infoFromCpp(text); };
+    (<any> window).debugFromCpp = function(text:any) { Logger.defaultLogger.debugFromCpp(text); };
+
+    // (<any> window).
+    (<any> window).StoneFrameworkModule = {
+      preRun: [ 
+        function() {
+          Logger.defaultLogger.debug('Loading the Stone Framework using WebAssembly');
+        }
+      ],
+      postRun: [ 
+        function()  {
+          // This function is called by ".js" wrapper once the ".wasm"
+          // WebAssembly module has been loaded and compiled by the
+          // browser
+          Logger.defaultLogger.debug('WebAssembly is ready');
+          Framework.singleton_ = new Framework(verbose);
+          callback();
+        }
+      ],
+      totalDependencies: 0
+    };
+
+    // Dynamic loading of the JavaScript wrapper around WebAssembly
+    var script = document.createElement('script');
+    script.type = 'application/javascript';
+    //script.src = "orthanc-stone.js"; // ASSETS_FOLDER + '/' + WASM_FILENAME + '.js';
+    script.src = this.wasmModuleName_ + ".js";//  "OrthancStoneSimpleViewer.js"; // ASSETS_FOLDER + '/' + WASM_FILENAME + '.js';
+    script.async = true;
+    document.head.appendChild(script);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/tsconfig-stone.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,8 @@
+{
+    "include" : [
+        "stone-framework-loader.ts",
+        "logger.ts",
+        "wasm-application-runner.ts",
+        "wasm-viewport.ts"
+    ]
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/wasm-application-runner.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,141 @@
+import * as Stone from './stone-framework-loader'
+import * as StoneViewport from './wasm-viewport'
+import * as Logger from './logger'
+
+if (!('WebAssembly' in window)) {
+  alert('Sorry, your browser does not support WebAssembly :(');
+}
+
+//var StoneFrameworkModule : Stone.Framework = (<any>window).StoneFrameworkModule;
+//export declare var StoneFrameworkModule : Stone.Framework;
+
+// global functions
+var WasmWebService_NotifyError: Function = null;
+var WasmWebService_NotifySuccess: Function = null;
+var WasmWebService_NotifyCachedSuccess: Function = null;
+var WasmDelayedCallExecutor_ExecuteCallback: Function = null;
+var WasmDoAnimation: Function = null;
+var SetStartupParameter: Function = null;
+var CreateWasmApplication: Function = null;
+export var CreateCppViewport: Function = null;
+var ReleaseCppViewport: Function = null;
+var StartWasmApplication: Function = null;
+export var SendSerializedMessageToStoneApplication: Function = null;
+
+var auxiliaryParameters : Map<string,string>  = null;
+
+export function SetApplicationParameters(params : Map<string,string>) {
+  if (auxiliaryParameters != null) {
+    console.warn("wasm-application-runner.SetApplicationParameters: about to overwrite the existing application parameters!")
+  }
+  auxiliaryParameters = params;
+}
+
+function DoAnimationThread() {
+  if (WasmDoAnimation != null) {
+    WasmDoAnimation();
+  }
+
+  // Update the viewport content every 100ms if need be
+  setTimeout(DoAnimationThread, 100);  
+}
+
+
+function GetUriParameters(): Map<string, string> {
+  var parameters = window.location.search.substr(1);
+
+  if (parameters != null &&
+    parameters != '') {
+    var result = new Map<string, string>();
+    var tokens = parameters.split('&');
+
+    for (var i = 0; i < tokens.length; i++) {
+      var tmp = tokens[i].split('=');
+      if (tmp.length == 2) {
+        result[tmp[0]] = decodeURIComponent(tmp[1]);
+      } else if(tmp.length == 1) {
+        // if there is no '=', we treat ot afterwards as a flag-style param
+        result[tmp[0]] = "";
+      }
+    }
+  return result;
+  }
+  else {
+    return new Map<string, string>();
+  }
+}
+
+// function UpdateWebApplication(statusUpdateMessage: string) {
+//   console.log(statusUpdateMessage);
+// }
+
+function _InitializeWasmApplication(orthancBaseUrl: string): void {
+
+  CreateWasmApplication();
+
+  // transmit the API-specified parameters to the app before initializing it
+  for (let key in auxiliaryParameters) {
+    if (auxiliaryParameters.hasOwnProperty(key)) {
+      Logger.defaultLogger.debug(
+        `About to call SetStartupParameter("${key}","${auxiliaryParameters[key]}")`);
+      SetStartupParameter(key, auxiliaryParameters[key]);
+    }
+  }
+
+  // parse uri and transmit the URI parameters to the app before initializing it
+  let parameters = GetUriParameters();
+
+  for (let key in parameters) {
+    if (parameters.hasOwnProperty(key)) {
+      Logger.defaultLogger.debug(
+        `About to call SetStartupParameter("${key}","${parameters[key]}")`);
+      SetStartupParameter(key, parameters[key]);
+    }
+  }
+
+  StartWasmApplication(orthancBaseUrl);
+
+  // trigger a first resize of the canvas that has just been initialized
+  StoneViewport.WasmViewport.ResizeAll();
+
+  DoAnimationThread();
+}
+
+export function InitializeWasmApplication(wasmModuleName: string, orthancBaseUrl: string) {
+  
+  Stone.Framework.Configure(wasmModuleName);
+
+  // Wait for the Orthanc Framework to be initialized (this initializes
+  // the WebAssembly environment) and then, create and initialize the Wasm application
+  Stone.Framework.Initialize(true, function () {
+
+    Logger.defaultLogger.debug("Connecting C++ methods to JS methods");
+    
+    SetStartupParameter = (<any> window).StoneFrameworkModule.cwrap('SetStartupParameter', null, ['string', 'string']);
+    CreateWasmApplication = (<any> window).StoneFrameworkModule.cwrap('CreateWasmApplication', null, ['number']);
+    CreateCppViewport = (<any> window).StoneFrameworkModule.cwrap('CreateCppViewport', 'number', []);
+    ReleaseCppViewport = (<any> window).StoneFrameworkModule.cwrap('ReleaseCppViewport', null, ['number']);
+    StartWasmApplication = (<any> window).StoneFrameworkModule.cwrap('StartWasmApplication', null, ['string']);
+    (<any> window).IsTraceLevelEnabled = (<any> window).StoneFrameworkModule.cwrap('WasmIsTraceLevelEnabled', 'boolean', null);
+    (<any> window).IsInfoLevelEnabled = (<any> window).StoneFrameworkModule.cwrap('WasmIsInfoLevelEnabled', 'boolean', null);
+
+    (<any> window).WasmWebService_NotifyCachedSuccess = (<any> window).StoneFrameworkModule.cwrap('WasmWebService_NotifyCachedSuccess', null, ['number']);
+    (<any> window).WasmWebService_NotifySuccess = (<any> window).StoneFrameworkModule.cwrap('WasmWebService_NotifySuccess', null, ['number', 'string', 'array', 'number', 'number']);
+    (<any> window).WasmWebService_NotifyError = (<any> window).StoneFrameworkModule.cwrap('WasmWebService_NotifyError', null, ['number', 'string', 'number', 'number']);
+    (<any> window).WasmDelayedCallExecutor_ExecuteCallback = (<any> window).StoneFrameworkModule.cwrap('WasmDelayedCallExecutor_ExecuteCallback', null, ['number']);
+    // no need to put this into the globals for it's only used in this very module
+    WasmDoAnimation = (<any> window).StoneFrameworkModule.cwrap('WasmDoAnimation', null, []);
+
+    SendSerializedMessageToStoneApplication = (<any> window).StoneFrameworkModule.cwrap('SendSerializedMessageToStoneApplication', 'string', ['string']);
+
+    Logger.defaultLogger.debug("Connecting C++ methods to JS methods - done");
+
+    _InitializeWasmApplication(orthancBaseUrl);
+  });
+}
+
+
+// exports.InitializeWasmApplication = InitializeWasmApplication;
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Platforms/Wasm/wasm-viewport.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,359 @@
+import * as wasmApplicationRunner from './wasm-application-runner'
+import * as Logger from './logger'
+
+var isPendingRedraw = false;
+
+function ScheduleWebViewportRedraw(cppViewportHandle: any) : void
+{
+  if (!isPendingRedraw) {
+    isPendingRedraw = true;
+    Logger.defaultLogger.debug('Scheduling a refresh of the viewport, as its content changed');
+    window.requestAnimationFrame(function() {
+      isPendingRedraw = false;
+      let viewport = WasmViewport.GetFromCppViewport(cppViewportHandle);
+      if (viewport) {
+        viewport.Redraw();
+      }
+    });
+  }
+}
+
+(<any>window).ScheduleWebViewportRedraw = ScheduleWebViewportRedraw;
+
+declare function UTF8ToString(v: any): string;
+
+function CreateWasmViewport(htmlCanvasId: string) : any {
+  var cppViewportHandle = wasmApplicationRunner.CreateCppViewport();
+  var canvasId = UTF8ToString(htmlCanvasId);
+  var webViewport = new WasmViewport((<any> window).StoneFrameworkModule, canvasId, cppViewportHandle);  // viewports are stored in a static map in WasmViewport -> won't be deleted
+  webViewport.Initialize();
+
+  return cppViewportHandle;
+}
+ 
+(<any>window).CreateWasmViewport = CreateWasmViewport;
+
+export class WasmViewport {
+
+    private static viewportsMapByCppHandle_ : Map<number, WasmViewport> = new Map<number, WasmViewport>(); // key = the C++ handle
+    private static viewportsMapByCanvasId_ : Map<string, WasmViewport> = new Map<string, WasmViewport>(); // key = the canvasId
+
+    private module_ : any;
+    private canvasId_ : string;
+    private htmlCanvas_ : HTMLCanvasElement;
+    private context_ : CanvasRenderingContext2D | null;
+    private imageData_ : any = null;
+    private renderingBuffer_ : any = null;
+    
+    private touchGestureInProgress_: boolean = false;
+    private touchCount_: number = 0;
+    private touchGestureLastCoordinates_: [number, number][] = []; // last x,y coordinates of each touch
+    
+    private touchZoom_ : any = false;
+    private touchTranslation_ : any = false;
+
+    private ViewportSetSize : Function;
+    private ViewportRender : Function;
+    private ViewportMouseDown : Function;
+    private ViewportMouseMove : Function;
+    private ViewportMouseUp : Function;
+    private ViewportMouseEnter : Function;
+    private ViewportMouseLeave : Function;
+    private ViewportMouseWheel : Function;
+    private ViewportKeyPressed : Function;
+    private ViewportTouchStart : Function;
+    private ViewportTouchMove : Function;
+    private ViewportTouchEnd : Function;
+
+    private pimpl_ : any; // Private pointer to the underlying WebAssembly C++ object
+
+    public constructor(module: any, canvasId: string, cppViewport: any) {
+      
+      this.pimpl_ = cppViewport;
+      WasmViewport.viewportsMapByCppHandle_[this.pimpl_] = this;
+      WasmViewport.viewportsMapByCanvasId_[canvasId] = this;
+
+      this.module_ = module;
+      this.canvasId_ = canvasId;
+      this.htmlCanvas_ = document.getElementById(this.canvasId_) as HTMLCanvasElement;
+      if (this.htmlCanvas_ == null) {
+        Logger.defaultLogger.error("Can not create WasmViewport, did not find the canvas whose id is '", this.canvasId_, "'");
+      }
+      this.context_ = this.htmlCanvas_.getContext('2d');
+
+      this.ViewportSetSize = this.module_.cwrap('ViewportSetSize', null, [ 'number', 'number', 'number' ]);
+      this.ViewportRender = this.module_.cwrap('ViewportRender', null, [ 'number', 'number', 'number', 'number' ]);
+      this.ViewportMouseDown = this.module_.cwrap('ViewportMouseDown', null, [ 'number', 'number', 'number', 'number', 'number' ]);
+      this.ViewportMouseMove = this.module_.cwrap('ViewportMouseMove', null, [ 'number', 'number', 'number' ]);
+      this.ViewportMouseUp = this.module_.cwrap('ViewportMouseUp', null, [ 'number' ]);
+      this.ViewportMouseEnter = this.module_.cwrap('ViewportMouseEnter', null, [ 'number' ]);
+      this.ViewportMouseLeave = this.module_.cwrap('ViewportMouseLeave', null, [ 'number' ]);
+      this.ViewportMouseWheel = this.module_.cwrap('ViewportMouseWheel', null, [ 'number', 'number', 'number', 'number', 'number' ]);
+      this.ViewportKeyPressed = this.module_.cwrap('ViewportKeyPressed', null, [ 'number', 'number', 'string', 'number', 'number' ]);
+      this.ViewportTouchStart = this.module_.cwrap('ViewportTouchStart', null, [ 'number', 'number', 'number', 'number', 'number', 'number', 'number' ]);
+      this.ViewportTouchMove = this.module_.cwrap('ViewportTouchMove', null, [ 'number', 'number', 'number', 'number', 'number', 'number', 'number' ]);
+      this.ViewportTouchEnd = this.module_.cwrap('ViewportTouchEnd', null, [ 'number', 'number', 'number', 'number', 'number', 'number', 'number' ]);
+    }
+
+    public GetCppViewport() : number {
+      return this.pimpl_;
+    }
+
+    public static GetFromCppViewport(cppViewportHandle: number) : WasmViewport | null {
+      if (WasmViewport.viewportsMapByCppHandle_[cppViewportHandle] !== undefined) {
+        return WasmViewport.viewportsMapByCppHandle_[cppViewportHandle];
+      }
+      Logger.defaultLogger.error("WasmViewport not found !");
+      return null;
+    }
+
+    public static GetFromCanvasId(canvasId: string) : WasmViewport | null {
+      if (WasmViewport.viewportsMapByCanvasId_[canvasId] !== undefined) {
+        return WasmViewport.viewportsMapByCanvasId_[canvasId];
+      }
+      Logger.defaultLogger.error("WasmViewport not found !");
+      return null;
+    }
+
+    public static ResizeAll() {
+      for (let canvasId in WasmViewport.viewportsMapByCanvasId_) {
+        WasmViewport.viewportsMapByCanvasId_[canvasId].Resize();
+      }
+    }
+
+    public Redraw() {
+      if (this.imageData_ === null ||
+          this.renderingBuffer_ === null ||
+          this.ViewportRender(this.pimpl_,
+                         this.imageData_.width,
+                         this.imageData_.height,
+                         this.renderingBuffer_) == 0) {
+        Logger.defaultLogger.error('The rendering has failed');
+      } else {
+        // Create an accessor to the rendering buffer (i.e. create a
+        // "window" above the heap of the WASM module), then copy it to
+        // the ImageData object
+        this.imageData_.data.set(new Uint8ClampedArray(
+          this.module_.HEAPU8.buffer,
+          this.renderingBuffer_,
+          this.imageData_.width * this.imageData_.height * 4));
+        
+        if (this.context_) {
+          this.context_.putImageData(this.imageData_, 0, 0);
+        }
+      }
+    }
+  
+    public Resize() {
+      if (this.imageData_ != null &&
+          (this.imageData_.width != window.innerWidth ||
+           this.imageData_.height != window.innerHeight)) {
+        this.imageData_ = null;
+      }
+      
+      // width/height is defined by the parent width/height
+      if (this.htmlCanvas_.parentElement) {
+        this.htmlCanvas_.width = this.htmlCanvas_.parentElement.offsetWidth;  
+        this.htmlCanvas_.height = this.htmlCanvas_.parentElement.offsetHeight;  
+
+        Logger.defaultLogger.debug("resizing WasmViewport: ", this.htmlCanvas_.width, "x", this.htmlCanvas_.height);
+
+        if (this.imageData_ === null && this.context_) {
+          this.imageData_ = this.context_.getImageData(0, 0, this.htmlCanvas_.width, this.htmlCanvas_.height);
+          this.ViewportSetSize(this.pimpl_, this.htmlCanvas_.width, this.htmlCanvas_.height);
+    
+          if (this.renderingBuffer_ != null) {
+            this.module_._free(this.renderingBuffer_);
+          }
+          
+          this.renderingBuffer_ = this.module_._malloc(this.imageData_.width * this.imageData_.height * 4);
+        } else {
+          this.ViewportSetSize(this.pimpl_, this.htmlCanvas_.width, this.htmlCanvas_.height);
+        }
+        
+        this.Redraw();
+      }
+    }
+
+    public Initialize() {
+      
+      // Force the rendering of the viewport for the first time
+      this.Resize();
+    
+      var that : WasmViewport = this;
+      // Register an event listener to call the Resize() function 
+      // each time the window is resized.
+      window.addEventListener('resize', function(event) {
+        that.Resize();
+      }, false);
+  
+      this.htmlCanvas_.addEventListener('contextmenu', function(event) {
+        // Prevent right click on the canvas
+        event.preventDefault();
+      }, false);
+      
+      this.htmlCanvas_.addEventListener('mouseleave', function(event) {
+        that.ViewportMouseLeave(that.pimpl_);
+      });
+      
+      this.htmlCanvas_.addEventListener('mouseenter', function(event) {
+        that.ViewportMouseEnter(that.pimpl_);
+      });
+    
+      this.htmlCanvas_.addEventListener('mousedown', function(event) {
+        var x = event.pageX - this.offsetLeft;
+        var y = event.pageY - this.offsetTop;
+
+       that.ViewportMouseDown(that.pimpl_, event.button, x, y, 0 /* TODO detect modifier keys*/);    
+      });
+    
+      this.htmlCanvas_.addEventListener('mousemove', function(event) {
+        var x = event.pageX - this.offsetLeft;
+        var y = event.pageY - this.offsetTop;
+        that.ViewportMouseMove(that.pimpl_, x, y);
+      });
+    
+      this.htmlCanvas_.addEventListener('mouseup', function(event) {
+        that.ViewportMouseUp(that.pimpl_);
+      });
+    
+      window.addEventListener('keydown', function(event) {
+        var keyChar: string | null = event.key;
+        var keyCode = event.keyCode
+        if (keyChar.length == 1) {
+          keyCode = 0; // maps to OrthancStone::KeyboardKeys_Generic
+        } else {
+          keyChar = null;
+        }
+//        console.log("key: ", keyCode, keyChar);
+        that.ViewportKeyPressed(that.pimpl_, keyCode, keyChar, event.shiftKey, event.ctrlKey, event.altKey);
+      });
+    
+      this.htmlCanvas_.addEventListener('wheel', function(event) {
+        var x = event.pageX - this.offsetLeft;
+        var y = event.pageY - this.offsetTop;
+        that.ViewportMouseWheel(that.pimpl_, event.deltaY, x, y, event.ctrlKey);
+        event.preventDefault();
+      }, {passive: false}); // must not be passive if calling event.preventDefault, ie to cancel scroll or zoom of the whole interface
+
+      this.htmlCanvas_.addEventListener('touchstart', function(event: TouchEvent) {
+        // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport)
+        event.preventDefault();
+        event.stopPropagation();
+
+        // TODO: find a way to pass the coordinates as an array between JS and C++
+        var x0 = 0;
+        var y0 = 0;
+        var x1 = 0;
+        var y1 = 0;
+        var x2 = 0;
+        var y2 = 0;
+        if (event.targetTouches.length > 0) {
+          x0 = event.targetTouches[0].pageX;
+          y0 = event.targetTouches[0].pageY;
+        }
+        if (event.targetTouches.length > 1) {
+          x1 = event.targetTouches[1].pageX;
+          y1 = event.targetTouches[1].pageY;
+        }
+        if (event.targetTouches.length > 2) {
+          x2 = event.targetTouches[2].pageX;
+          y2 = event.targetTouches[2].pageY;
+        }
+
+        that.ViewportTouchStart(that.pimpl_, event.targetTouches.length, x0, y0, x1, y1, x2, y2);
+      }, {passive: false}); // must not be passive if calling event.preventDefault, ie to cancel scroll or zoom of the whole interface
+    
+      this.htmlCanvas_.addEventListener('touchend', function(event) {
+        // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport)
+        event.preventDefault();
+        event.stopPropagation();
+
+        // TODO: find a way to pass the coordinates as an array between JS and C++
+        var x0 = 0;
+        var y0 = 0;
+        var x1 = 0;
+        var y1 = 0;
+        var x2 = 0;
+        var y2 = 0;
+        if (event.targetTouches.length > 0) {
+          x0 = event.targetTouches[0].pageX;
+          y0 = event.targetTouches[0].pageY;
+        }
+        if (event.targetTouches.length > 1) {
+          x1 = event.targetTouches[1].pageX;
+          y1 = event.targetTouches[1].pageY;
+        }
+        if (event.targetTouches.length > 2) {
+          x2 = event.targetTouches[2].pageX;
+          y2 = event.targetTouches[2].pageY;
+        }
+
+        that.ViewportTouchEnd(that.pimpl_, event.targetTouches.length, x0, y0, x1, y1, x2, y2);
+      });
+    
+      this.htmlCanvas_.addEventListener('touchmove', function(event: TouchEvent) {
+
+        // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport)
+        event.preventDefault();
+        event.stopPropagation();
+
+
+        // TODO: find a way to pass the coordinates as an array between JS and C++
+        var x0 = 0;
+        var y0 = 0;
+        var x1 = 0;
+        var y1 = 0;
+        var x2 = 0;
+        var y2 = 0;
+        if (event.targetTouches.length > 0) {
+          x0 = event.targetTouches[0].pageX;
+          y0 = event.targetTouches[0].pageY;
+        }
+        if (event.targetTouches.length > 1) {
+          x1 = event.targetTouches[1].pageX;
+          y1 = event.targetTouches[1].pageY;
+        }
+        if (event.targetTouches.length > 2) {
+          x2 = event.targetTouches[2].pageX;
+          y2 = event.targetTouches[2].pageY;
+        }
+
+        that.ViewportTouchMove(that.pimpl_, event.targetTouches.length, x0, y0, x1, y1, x2, y2);
+        return;
+
+      }, {passive: false}); // must not be passive if calling event.preventDefault, ie to cancel scroll or zoom of the whole interface
+    }  
+
+  public ResetTouch() {
+    if (this.touchTranslation_ ||
+        this.touchZoom_) {
+      this.ViewportMouseUp(this.pimpl_);
+    }
+
+    this.touchTranslation_ = false;
+    this.touchZoom_ = false;
+  }
+  
+  public GetTouchTranslation(event: any) {
+    var touch = event.targetTouches[0];
+    return [
+      touch.pageX,
+      touch.pageY
+    ];
+  }
+    
+  public GetTouchZoom(event: any) {
+    var touch1 = event.targetTouches[0];
+    var touch2 = event.targetTouches[1];
+    var dx = (touch1.pageX - touch2.pageX);
+    var dy = (touch1.pageY - touch2.pageY);
+    var d = Math.sqrt(dx * dx + dy * dy);
+    return [
+      (touch1.pageX + touch2.pageX) / 2.0,
+      (touch1.pageY + touch2.pageY) / 2.0,
+      d
+    ];
+  }
+   
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,259 @@
+/*
+         1         2         3         4         5         6         7
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
+*/
+
+namespace VsolStuff
+{
+  enum EnumMonth0
+  {
+    January,
+    February,
+    March
+  };
+
+  // interface Serializer
+  // {
+  //   Serialize(value: number): string;
+  //   Serialize(value: string): string;
+  //   Serialize(value: EnumMonth0): string;
+  // };
+  function printf(value: any):void
+  {
+    console.log(value)
+  }
+
+  // function StoneSerialize(value: string) : string;
+  // function StoneSerialize(value: number) : string;
+  // function StoneSerialize(value: EnumMonth0) : string;
+  function StoneSerialize<T>(value: T[]) : string;
+
+  function StoneSerialize<T>(value: T[] | EnumMonth0) : string
+  {
+    let valueType = typeof value;
+    printf(`About to serialize value. Type is ${valueType}`)
+    printf(`About to serialize value. Type is ${typeof value}`)
+    return "Choucroute";
+  }
+
+  function main():number
+  {
+    enum Color {Red = 1, Green = 2, Blue = 4}
+    let color: Color = Color.Green;
+    printf("---------------------------");
+    printf(`typeof color: ${typeof color}`);
+    printf("---------------------------");
+    let colors: Color[] = []
+    colors.push(Color.Green);
+    colors.push(Color.Red);
+    printf(`typeof colors: ${typeof colors}`);
+    printf(`Array.isArray(colors): ${Array.isArray(colors)}`);
+    printf("---------------------------");
+    
+
+    let toto:EnumMonth0[] = [];
+
+    toto.push(EnumMonth0.February);
+    toto.push(EnumMonth0.March);
+
+    printf(JSON.stringify(toto));
+
+    return 0;
+
+  }
+
+  main()
+
+//   string StoneSerialize_number(int32_t value)
+//   {
+
+//     Json::Value result(value);
+//     return result;
+//   }
+
+//   Json::Value StoneSerialize(double value)
+//   {
+//     Json::Value result(value);
+//     return result;
+//   }
+
+//   Json::Value StoneSerialize(bool value)
+//   {
+//     Json::Value result(value);
+//     return result;
+//   }
+
+//   Json::Value StoneSerialize(const std::string& value)
+//   {
+//     // the following is better than 
+//     Json::Value result(value.data(),value.data()+value.size());
+//     return result;
+//   }
+
+//   template<typename T>
+//   Json::Value StoneSerialize(const std::map<std::string,T>& value)
+//   {
+//     Json::Value result(Json::objectValue);
+
+//     for (std::map<std::string, T>::const_iterator it = value.cbegin();
+//       it != value.cend(); ++it)
+//     {
+//       // it->first it->second
+//       result[it->first] = StoneSerialize(it->second);
+//     }
+//     return result;
+//   }
+
+//   template<typename T>
+//   Json::Value StoneSerialize(const std::vector<T>& value)
+//   {
+//     Json::Value result(Json::arrayValue);
+//     for (size_t i = 0; i < value.size(); ++i)
+//     {
+//       result.append(StoneSerialize(value[i]));
+//     }
+//     return result;
+//   }
+
+//   enum EnumMonth0
+//   {
+//     January,
+//     February,
+//     March
+//   };
+
+//   std::string ToString(EnumMonth0 value)
+//   {
+//     switch(value)
+//     {
+//       case January: 
+//         return "January";
+//       case February:
+//         return "February";
+//       case March:
+//         return "March";
+//       default:
+//         {
+//           std::stringstream ss;
+//           ss << "Unrecognized EnumMonth0 value (" << static_cast<int64_t>(value) << ")";
+//           throw std::runtime_error(ss.str());
+//         }
+//     }
+//   }
+
+//   void FromString(EnumMonth0& value, std::string strValue)
+//   {
+//     if (strValue == "January" || strValue == "EnumMonth0_January")
+//     {
+//       return January;
+//     }
+//     else if (strValue == "February" || strValue == "EnumMonth0_February")
+//     {
+//       return February;
+//     }
+// #error Not implemented yet
+//   }
+
+//   Json::Value StoneSerialize(const EnumMonth0& value)
+//   {
+//     return StoneSerialize(ToString(value));
+//   }
+//   struct Message1
+//   {
+//     int32_t a;
+//     std::string b;
+//     EnumMonth0 c;
+//     bool d;
+//   };
+
+//   struct Message2
+//   {
+//     std::string toto;
+//     std::vector<Message1> tata;
+//     std::vector<std::string> tutu;
+//     std::map<std::string, std::string> titi;
+//     std::map<std::string, Message1> lulu;
+//   };
+
+//   Json::Value StoneSerialize(const Message1& value)
+//   {
+//     Json::Value result(Json::objectValue);
+//     result["a"] = StoneSerialize(value.a);
+//     result["b"] = StoneSerialize(value.b);
+//     result["c"] = StoneSerialize(value.c);
+//     result["d"] = StoneSerialize(value.d);
+//     return result;
+//   }
+    
+//   Json::Value StoneSerialize(const Message2& value)
+//   {
+//     Json::Value result(Json::objectValue);
+//     result["toto"] = StoneSerialize(value.toto);
+//     result["tata"] = StoneSerialize(value.tata);
+//     result["tutu"] = StoneSerialize(value.tutu);
+//     result["titi"] = StoneSerialize(value.titi);
+//     result["lulu"] = StoneSerialize(value.lulu);
+//     return result;
+//   }
+// }
+
+// int main()
+// {
+//   VsolStuff::Message1 msg1_0;
+//   msg1_0.a = 42;
+//   msg1_0.b = "Benjamin";
+//   msg1_0.c = VsolStuff::January;
+//   msg1_0.d = true;
+
+//   VsolStuff::Message1 msg1_1;
+//   msg1_1.a = 43;
+//   msg1_1.b = "Sandrine";
+//   msg1_1.c = VsolStuff::March;
+//   msg1_0.d = false;
+
+//   // std::string toto;
+//   // std::vector<Message1> tata;
+//   // std::vector<std::string> tutu;
+//   // std::map<int32_t, std::string> titi;
+//   // std::map<int32_t, Message1> lulu;
+
+//   VsolStuff::Message2 msg2_0;
+//   msg2_0.toto = "Prout zizi";
+//   msg2_0.tata.push_back(msg1_0);
+//   msg2_0.tata.push_back(msg1_1);
+//   msg2_0.tutu.push_back("Mercadet");
+//   msg2_0.tutu.push_back("Poisson");
+//   msg2_0.titi["44"] = "key 44";
+//   msg2_0.titi["45"] = "key 45";
+//   msg2_0.lulu["54"] = msg1_1;
+//   msg2_0.lulu["55"] = msg1_0;
+//   auto result = VsolStuff::StoneSerialize(msg2_0);
+//   auto resultStr = result.toStyledString();
+
+//   Json::Value readValue;
+
+//   Json::CharReaderBuilder builder;
+//   Json::CharReader* reader = builder.newCharReader();
+//   std::string errors;
+
+//   bool ok = reader->parse(
+//     resultStr.c_str(),
+//     resultStr.c_str() + resultStr.size(),
+//     &readValue,
+//     &errors
+//   );
+//   delete reader;
+
+//   if (!ok)
+//   {
+//     std::stringstream ss;
+//     ss << "Json parsing error: " << errors;
+//     throw std::runtime_error(ss.str());
+//   }
+//   std::cout << readValue.get("toto", "Default Value").asString() << std::endl;
+//   return 0;
+// }
+
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground2.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,72 @@
+class Greeter {
+    greeting: string;
+    constructor(message: string) {
+        this.greeting = message;
+    }
+    greet() {
+        return "Hello, " + this.greeting;
+    }
+}
+enum Color {
+    Red,
+    Green,
+    Blue,
+};
+
+function ColorToString(value: Color)
+{
+    switch (value)
+    {
+        case Color.Red:
+            return "Red";
+        case Color.Green:
+            return "Green";
+        case Color.Blue:
+            return "Blue";
+        default:
+            throw new Error(`Unrecognized Color value(${value})`);
+    }
+}
+
+let color: Color = Color.Red;
+
+document.body.textContent = "<p>---------------------</p>"
+document.body.textContent += "<p>********************************</p>"
+
+class TestMessage {
+    s1: string;
+    s2: Array<string>;
+    s3: Array<Array<string>>;
+    s4: Map<string, number>;
+    s5: Map<number, Array<string>>;
+    s6: Color;
+    s7: boolean;
+}
+
+let tm = new TestMessage();
+tm.s2 = new Array<string>()
+tm.s2.push("toto");
+tm.s2.push("toto2");
+tm.s2.push("toto3");
+tm.s4 = new Map<string, number>();
+tm.s4["toto"] = 42;
+tm.s4["toto"] = 1999;
+tm.s4["tatata"] = 1999;
+tm.s6 = Color.Red;
+tm.s7 = true
+
+let txt = JSON.stringify(tm)
+let txtElem = document.createElement('textarea');
+txtElem.value = txt;
+
+document.body.appendChild(txtElem);
+
+let greeter = new Greeter("world");
+
+let button = document.createElement('button');
+button.textContent = "Say Hello";
+button.onclick = function() {
+    alert(greeter.greet());
+}
+
+document.body.appendChild(button);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground3.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,275 @@
+/*
+         1         2         3         4         5         6         7
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
+*/
+
+namespace VsolStuff222 {
+  export enum EnumMonth0 {
+    January,
+    February,
+    March
+  };
+
+  export class Message1 {
+    a: number;
+    b: string;
+    c: EnumMonth0;
+    d: boolean;
+    public StoneSerialize(): string {
+      let container: object = {};
+      container['type'] = 'VsolStuff.Message1';
+      container['value'] = this;
+      return JSON.stringify(container);
+    }
+  };
+
+  export class Message2 {
+    toto: string;
+    tata: Message1[];
+    tutu: string[];
+    titi: Map<string, string>;
+    lulu: Map<string, Message1>;
+
+    public StoneSerialize(): string {
+      let container: object = {};
+      container['type'] = 'VsolStuff.Message2';
+      container['value'] = this;
+      return JSON.stringify(container);
+    }
+  };
+}
+
+function printf(value: any): void {
+  console.log(value)
+}
+
+function main(): number {
+
+  let msg1_0 = new VsolStuff.Message1();
+  msg1_0.a = 42;
+  msg1_0.b = "Benjamin";
+  msg1_0.c = VsolStuff.EnumMonth0.January;
+  msg1_0.d = true;
+
+  let msg1_1 = new VsolStuff.Message1();
+  msg1_1.a = 43;
+  msg1_1.b = "Sandrine";
+  msg1_1.c = VsolStuff.EnumMonth0.March;
+  msg1_0.d = false;
+
+  // std::string toto;
+  // std::vector<Message1> tata;
+  // std::vector<std::string> tutu;
+  // std::map<int32_t, std::string> titi;
+  // std::map<int32_t, Message1> lulu;
+
+  let msg2_0 = new VsolStuff.Message2();
+  msg2_0.toto = "Prout zizi";
+  msg2_0.tata = new Array<VsolStuff.Message1>();
+  msg2_0.tata.push(msg1_0);
+  msg2_0.tata.push(msg1_1);
+  msg2_0.tutu.push("Mercadet");
+  msg2_0.tutu.push("Poisson");ing
+  msg2_0.titi["44"] = "key 44";
+  msg2_0.titi["45"] = "key 45";
+  msg2_0.lulu["54"] = msg1_1;
+  msg2_0.lulu["55"] = msg1_0;
+  let result:string = VsolStuff.StoneSerialize(msg2_0);
+  return 0;
+}
+
+main()
+
+//   string StoneSerialize_number(int32_t value)
+//   {
+
+//     Json::Value result(value);
+//     return result;
+//   }
+
+//   Json::Value StoneSerialize(double value)
+//   {
+//     Json::Value result(value);
+//     return result;
+//   }
+
+//   Json::Value StoneSerialize(bool value)
+//   {
+//     Json::Value result(value);
+//     return result;
+//   }
+
+//   Json::Value StoneSerialize(const std::string& value)
+//   {
+//     // the following is better than 
+//     Json::Value result(value.data(),value.data()+value.size());
+//     return result;
+//   }
+
+//   template<typename T>
+//   Json::Value StoneSerialize(const std::map<std::string,T>& value)
+//   {
+//     Json::Value result(Json::objectValue);
+
+//     for (std::map<std::string, T>::const_iterator it = value.cbegin();
+//       it != value.cend(); ++it)
+//     {
+//       // it->first it->second
+//       result[it->first] = StoneSerialize(it->second);
+//     }
+//     return result;
+//   }
+
+//   template<typename T>
+//   Json::Value StoneSerialize(const std::vector<T>& value)
+//   {
+//     Json::Value result(Json::arrayValue);
+//     for (size_t i = 0; i < value.size(); ++i)
+//     {
+//       result.append(StoneSerialize(value[i]));
+//     }
+//     return result;
+//   }
+
+//   enum EnumMonth0
+//   {
+//     January,
+//     February,
+//     March
+//   };
+
+//   std::string ToString(EnumMonth0 value)
+//   {
+//     switch(value)
+//     {
+//       case January: 
+//         return "January";
+//       case February:
+//         return "February";
+//       case March:
+//         return "March";
+//       default:
+//         {
+//           std::stringstream ss;
+//           ss << "Unrecognized EnumMonth0 value (" << static_cast<int64_t>(value) << ")";
+//           throw std::runtime_error(ss.str());
+//         }
+//     }
+//   }
+
+//   void FromString(EnumMonth0& value, std::string strValue)
+//   {
+//     if (strValue == "January" || strValue == "EnumMonth0_January")
+//     {
+//       return January;
+//     }
+//     else if (strValue == "February" || strValue == "EnumMonth0_February")
+//     {
+//       return February;
+//     }
+// #error Not implemented yet
+//   }
+
+//   Json::Value StoneSerialize(const EnumMonth0& value)
+//   {
+//     return StoneSerialize(ToString(value));
+//   }
+//   struct Message1
+//   {
+//     int32_t a;
+//     std::string b;
+//     EnumMonth0 c;
+//     bool d;
+//   };
+
+//   struct Message2
+//   {
+//     std::string toto;
+//     std::vector<Message1> tata;
+//     std::vector<std::string> tutu;
+//     std::map<std::string, std::string> titi;
+//     std::map<std::string, Message1> lulu;
+//   };
+
+//   Json::Value StoneSerialize(const Message1& value)
+//   {
+//     Json::Value result(Json::objectValue);
+//     result["a"] = StoneSerialize(value.a);
+//     result["b"] = StoneSerialize(value.b);
+//     result["c"] = StoneSerialize(value.c);
+//     result["d"] = StoneSerialize(value.d);
+//     return result;
+//   }
+
+//   Json::Value StoneSerialize(const Message2& value)
+//   {
+//     Json::Value result(Json::objectValue);
+//     result["toto"] = StoneSerialize(value.toto);
+//     result["tata"] = StoneSerialize(value.tata);
+//     result["tutu"] = StoneSerialize(value.tutu);
+//     result["titi"] = StoneSerialize(value.titi);
+//     result["lulu"] = StoneSerialize(value.lulu);
+//     return result;
+//   }
+// }
+
+// int main()
+// {
+//   VsolStuff::Message1 msg1_0;
+//   msg1_0.a = 42;
+//   msg1_0.b = "Benjamin";
+//   msg1_0.c = VsolStuff::January;
+//   msg1_0.d = true;
+
+//   VsolStuff::Message1 msg1_1;
+//   msg1_1.a = 43;
+//   msg1_1.b = "Sandrine";
+//   msg1_1.c = VsolStuff::March;
+//   msg1_0.d = false;
+
+//   // std::string toto;
+//   // std::vector<Message1> tata;
+//   // std::vector<std::string> tutu;
+//   // std::map<int32_t, std::string> titi;
+//   // std::map<int32_t, Message1> lulu;
+
+//   VsolStuff::Message2 msg2_0;
+//   msg2_0.toto = "Prout zizi";
+//   msg2_0.tata.push_back(msg1_0);
+//   msg2_0.tata.push_back(msg1_1);
+//   msg2_0.tutu.push_back("Mercadet");
+//   msg2_0.tutu.push_back("Poisson");
+//   msg2_0.titi["44"] = "key 44";
+//   msg2_0.titi["45"] = "key 45";
+//   msg2_0.lulu["54"] = msg1_1;
+//   msg2_0.lulu["55"] = msg1_0;
+//   auto result = VsolStuff::StoneSerialize(msg2_0);
+//   auto resultStr = result.toStyledString();
+
+//   Json::Value readValue;
+
+//   Json::CharReaderBuilder builder;
+//   Json::CharReader* reader = builder.newCharReader();
+//   std::string errors;
+
+//   bool ok = reader->parse(
+//     resultStr.c_str(),
+//     resultStr.c_str() + resultStr.size(),
+//     &readValue,
+//     &errors
+//   );
+//   delete reader;
+
+//   if (!ok)
+//   {
+//     std::stringstream ss;
+//     ss << "Json parsing error: " << errors;
+//     throw std::runtime_error(ss.str());
+//   }
+//   std::cout << readValue.get("toto", "Default Value").asString() << std::endl;
+//   return 0;
+// }
+
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground4.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,68 @@
+testYaml = """
+enum SomeEnum:
+ - january
+ - feb
+
+struct Message0:
+ a: string
+
+struct Message1:
+ a: string
+ b: int32
+ c: vector<Message0>
+ d: SomeEnum = january
+ e: SomeEnum= january
+ f: SomeEnum=january
+ g: SomeEnum =january
+  
+
+# github.com/AlDanial/cloc
+header2 : 
+  cloc_version       : 1.67
+  elapsed_seconds    : int32_t
+
+header : 
+  cloc_version       : 1.67
+  elapsed_seconds    : int32_t
+  cloc_url           : vector<map<string,int32>>
+  n_files            : 1
+  n_lines            : 3
+  files_per_second   : 221.393718659277
+  lines_per_second   : 664.181155977831
+  report_file        : IDL.idl.yaml
+IDL :
+  nFiles: 1
+  blank: 0
+  comment: 2
+  code: 1
+EnumSUM: 
+  - aaa
+  - bbb
+
+SUM: 
+  blank: 0
+  comment: 2
+  code: 1
+  nFiles: 1
+"""
+
+import yaml
+
+b = yaml.load(testYaml)
+print(b)
+
+c = {
+  'enum SomeEnum': ['january', 'feb'], 
+  'struct Message0': {'a': 'string'}, 
+  'struct Message1': {
+    'a': 'string', 
+    'b': 'int32', 
+    'c': 'vector<Message0>', 
+    'd': 'vector<map<string,int32>>', 
+    'e': 'SomeEnum= january', 
+    'f': 'SomeEnum=january', 
+    'g': 'SomeEnum =january'
+  }, 
+}
+
+print(c)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/runts.ps1	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,57 @@
+# echo "+----------------------+"
+# echo "|    playground.ts     |"
+# echo "+----------------------+"
+
+# tsc -t ES2015 .\playground.ts; node .\playground.js
+
+# echo "+----------------------+"
+# echo "|    playground3.ts     |"
+# echo "+----------------------+"
+
+# tsc -t ES2015 .\playground3.ts; node .\playground3.js
+
+echo "+----------------------+"
+echo "|      stonegen        |"
+echo "+----------------------+"
+
+if(-not (test-Path "build")) {
+  mkdir "build"
+}
+
+echo "Generate the TS and CPP wrapper... (to build/)"
+python stonegentool.py -o "." test_data/test1.yaml
+if($LASTEXITCODE -ne 0) {
+  Write-Error ("Code generation failed!")
+  exit $LASTEXITCODE
+}
+
+echo "Compile the TS wrapper to JS... (in build/)"
+tsc --module commonjs --sourceMap -t ES2015 --outDir "build/" VsolMessages_generated.ts
+if($LASTEXITCODE -ne 0) {
+  Write-Error ("Code compilation failed!")
+  exit $LASTEXITCODE
+}
+
+echo "Compile the test app..."
+tsc --module commonjs --sourceMap -t ES2015 --outDir "build/" test_stonegen.ts
+if($LASTEXITCODE -ne 0) {
+  Write-Error ("Code compilation failed!")
+  exit $LASTEXITCODE
+}
+
+browserify "build/test_stonegen.js" "build/VsolMessages_generated.js" -o "build_browser/test_stonegen_fused.js"
+
+cp .\test_stonegen.html .\build_browser\
+
+echo "Run the test app..."
+Push-Location
+cd build_browser
+node .\test_stonegen_fused.js
+Pop-Location
+if($LASTEXITCODE -ne 0) {
+  Write-Error ("Code execution failed!")
+  exit $LASTEXITCODE
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/test_stonegen.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,1 @@
+<script type="text/javascript" src="test_stonegen_fused.js"></script>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/test_stonegen.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,206 @@
+import * as VsolMessages from "./VsolMessages_generated";
+
+function TEST_StoneGen_SerializeComplex() {
+  let msg1_0 = new VsolMessages.Message1();
+  msg1_0.a = 42;
+  msg1_0.b = "Benjamin";
+  msg1_0.c = VsolMessages.EnumMonth0.January;
+  msg1_0.d = true;
+  let msg1_1 = new VsolMessages.Message1();
+  msg1_1.a = 43;
+  msg1_1.b = "Sandrine";
+  msg1_1.c = VsolMessages.EnumMonth0.March;
+  msg1_0.d = false;
+  let result1_0 = msg1_0.StoneSerialize();
+  let resultStr1_0 = JSON.stringify(result1_0);
+  let result1_1 = msg1_1.StoneSerialize();
+  let resultStr1_1 = JSON.stringify(result1_1);
+  // std::string toto;
+  // std::vector<Message1> tata;
+  // std::vector<std::string> tutu;
+  // std::map<int32_t, std::string> titi;
+  // std::map<int32_t, Message1> lulu;
+  let msg2_0 = new VsolMessages.Message2();
+  msg2_0.toto = "Prout zizi";
+  msg2_0.tata.push(msg1_0);
+  msg2_0.tata.push(msg1_1);
+  msg2_0.tutu.push("Mercadet");
+  msg2_0.tutu.push("Poisson");
+  msg2_0.titi["44"] = "key 44";
+  msg2_0.titi["45"] = "key 45";
+  msg2_0.lulu["54"] = msg1_1;
+  msg2_0.lulu["55"] = msg1_0;
+  let result2 = msg2_0.StoneSerialize();
+  let resultStr2 = JSON.stringify(result2);
+  let refResult2 = `{
+"type" : "VsolMessages.Message2",
+"value" : 
+{
+  "lulu" : 
+  {
+    "54" : 
+    {
+      "a" : 43,
+      "b" : "Sandrine",
+      "c" : 2,
+      "d" : true
+    },
+    "55" : 
+    {
+      "a" : 42,
+      "b" : "Benjamin",
+      "c" : 0,
+      "d" : false
+    }
+  },
+  "tata" : 
+  [
+    {
+      "a" : 42,
+      "b" : "Benjamin",
+      "c" : 0,
+      "d" : false
+    },
+    {
+      "a" : 43,
+      "b" : "Sandrine",
+      "c" : 2,
+      "d" : true
+    }
+  ],
+  "titi" : 
+  {
+    "44" : "key 44",
+    "45" : "key 45"
+  },
+  "toto" : "Prout zizi",
+  "tutu" : 
+  [
+    "Mercadet",
+    "Poisson"
+  ]
+}
+}
+`;
+  let refResult2Obj = JSON.parse(refResult2);
+  let resultStr2Obj = JSON.parse(resultStr2);
+  if (false) {
+    if (refResult2Obj !== resultStr2Obj) {
+      console.log("Results are different!");
+      console.log(`refResult2Obj['value']['lulu']['54'] = ${refResult2Obj['value']['lulu']['54']}`);
+      console.log(`refResult2Obj['value']['lulu']['54']['a'] = ${refResult2Obj['value']['lulu']['54']['a']}`);
+      console.log("************************************************************");
+      console.log("**                  REFERENCE OBJ                         **");
+      console.log("************************************************************");
+      console.log(refResult2Obj);
+      console.log("************************************************************");
+      console.log("**                  ACTUAL OBJ                            **");
+      console.log("************************************************************");
+      console.log(resultStr2Obj);
+      console.log("************************************************************");
+      console.log("**                  REFERENCE                             **");
+      console.log("************************************************************");
+      console.log(refResult2);
+      console.log("************************************************************");
+      console.log("**                  ACTUAL                                **");
+      console.log("************************************************************");
+      console.log(resultStr2);
+      throw new Error("Wrong serialization");
+    }
+  }
+  let refResultValue = JSON.parse(resultStr2);
+  console.log(refResultValue);
+}
+class MyDispatcher {
+  message1: VsolMessages.Message1;
+  message2: VsolMessages.Message2;
+
+  HandleMessage1(value: VsolMessages.Message1) {
+    this.message1 = value;
+    return true;
+  }
+  HandleMessage2(value: VsolMessages.Message2) {
+    this.message2 = value;
+    return true;
+  }
+  HandleA(value) {
+    return true;
+  }
+  HandleB(value) {
+    return true;
+  }
+  HandleC(value) {
+    return true;
+  }
+}
+;
+function TEST_StoneGen_DeserializeOkAndNok() {
+  let serializedMessage = `{
+"type" : "VsolMessages.Message2",
+"value" : 
+{
+  "lulu" : 
+  {
+    "54" : 
+    {
+      "a" : 43,
+      "b" : "Sandrine",
+      "c" : 2,
+      "d" : true
+    },
+    "55" : 
+    {
+      "a" : 42,
+      "b" : "Benjamin",
+      "c" : 0,
+      "d" : false
+    }
+  },
+  "tata" : 
+  [
+    {
+      "a" : 42,
+      "b" : "Benjamin",
+      "c" : 0,
+      "d" : false
+    },
+    {
+      "a" : 43,
+      "b" : "Sandrine",
+      "c" : 2,
+      "d" : true
+    }
+  ],
+  "titi" : 
+  {
+    "44" : "key 44",
+    "45" : "key 45"
+  },
+  "toto" : "Prout zizi",
+  "tutu" : 
+  [
+    "Mercadet",
+    "Poisson"
+  ]
+}
+}`;
+  let myDispatcher = new MyDispatcher();
+  let ok = VsolMessages.StoneDispatchToHandler(serializedMessage, myDispatcher);
+  if (!ok) {
+    throw Error("Error when dispatching message!");
+  }
+  if (myDispatcher.message1 != undefined) {
+    throw Error("(myDispatcher.Message1 != undefined)");
+  }
+  if (myDispatcher.message2 == undefined) {
+    throw Error("(myDispatcher.Message2 == undefined)");
+  }
+  console.log("TEST_StoneGen_DeserializeOkAndNok: OK!");
+}
+function main() {
+  console.log("Entering main()");
+  TEST_StoneGen_SerializeComplex();
+  TEST_StoneGen_DeserializeOkAndNok();
+  return 0;
+}
+console.log(`Exit code is: ${main()}`);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/tsconfig.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,22 @@
+{
+  // "extends": "../../../../../orthanc-stone/Platforms/Wasm/tsconfig-stone",
+  "compilerOptions": {
+    // "outFile": "../../../WebApplication-build/to-embed/app.js",
+    // "module": "system",
+    // "sourceMap": false,
+    "lib": [
+      "es2017",
+      "es2017",
+      "dom",
+      "dom.iterable"
+    ]
+  },
+  "include": [
+    // "commands/*.ts",
+    // "logger.ts",
+    // "app.ts",
+    // "main.ts",
+    // "ui.ts",
+    // "popup.ts"
+  ]
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/README.md	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,20 @@
+Requirements
+----------------
+
+Install Node and npm.
+
+Then:
+- `npm install browserify`
+- `npm install typescript`
+- `npm install tsify`
+
+`testCppHandler` contains a C++ project that produces an executable 
+slurping a set of text files representing messages defined against 
+the `test_data/testTestStoneCodeGen.yaml' schema and dumping them to `cout`.
+
+'testWasmIntegrated` contains a small Web app demonstrating the 
+interaction between TypeScript and C++ in WASM.
+source ~/apps/emsdk/emsdk_env.sh
+
+
+Install Python and the following packages `pip install pyyaml yamlloader jinja2`
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/stonegentool.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,605 @@
+import json
+import yaml
+import re
+import os
+import sys
+from jinja2 import Template
+from io import StringIO
+import time
+import datetime
+import yamlloader
+
+"""
+         1         2         3         4         5         6         7
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
+"""
+
+# see https://stackoverflow.com/a/2504457/2927708
+def trim(docstring):
+    if not docstring:
+        return ''
+    # Convert tabs to spaces (following the normal Python rules)
+    # and split into a list of lines:
+    lines = docstring.expandtabs().splitlines()
+    # Determine minimum indentation (first line doesn't count):
+    indent = sys.maxsize
+    for line in lines[1:]:
+        stripped = line.lstrip()
+        if stripped:
+            indent = min(indent, len(line) - len(stripped))
+    # Remove indentation (first line is special):
+    trimmed = [lines[0].strip()]
+    if indent < sys.maxsize:
+        for line in lines[1:]:
+            trimmed.append(line[indent:].rstrip())
+    # Strip off trailing and leading blank lines:
+    while trimmed and not trimmed[-1]:
+        trimmed.pop()
+    while trimmed and not trimmed[0]:
+        trimmed.pop(0)
+    # Return a single string:
+    return '\n'.join(trimmed)
+
+class JsonHelpers:
+    """A set of utilities to perform JSON operations"""
+
+    @staticmethod
+    def removeCommentsFromJsonContent(string):
+        """
+      Remove comments from a JSON file
+
+      Comments are not allowed in JSON but, i.e., Orthanc configuration files
+      contains C++ like comments that we need to remove before python can
+      parse the file
+      """
+        # remove all occurrence streamed comments (/*COMMENT */) from string
+        string = re.sub(re.compile("/\*.*?\*/", re.DOTALL), "", string)
+
+        # remove all occurrence singleline comments (//COMMENT\n ) from string
+        string = re.sub(re.compile("//.*?\n"), "", string)
+
+        return string
+
+    @staticmethod
+    def loadJsonWithComments(path):
+        """
+      Reads a JSON file that may contain C++ like comments
+      """
+        with open(path, "r") as fp:
+            fileContent = fp.read()
+        fileContent = JsonHelpers.removeCommentsFromJsonContent(fileContent)
+        return json.loads(fileContent)
+
+class FieldDefinition:
+
+    def __init__(self, name: str, type: str, defaultValue: str):
+        self.name = name
+        self.type = type
+        self.defaultValue = defaultValue
+
+    @staticmethod
+    def fromKeyValue(key: str, value: str):
+
+        if "=" in value:
+            splitValue = value.split(sep="=")
+            type = splitValue[0].strip(" ")
+            defaultValue = splitValue[1].strip(" ")
+        else:
+            type = value
+            defaultValue = None
+
+        return FieldDefinition(name = key, type = type, defaultValue = defaultValue)
+
+
+def LoadSchemaFromJson(filePath):
+    return JsonHelpers.loadJsonWithComments(filePath)
+
+def CanonToCpp(canonicalTypename):
+  # C++: prefix map vector and string with std::map, std::vector and
+  # std::string
+  # replace int32... by int32_t...
+  # replace float32 by float
+  # replace float64 by double
+  retVal = canonicalTypename
+  retVal = retVal.replace("map", "std::map")
+  retVal = retVal.replace("vector", "std::vector")
+  retVal = retVal.replace("set", "std::set")
+  retVal = retVal.replace("string", "std::string")
+  #uint32 and uint64 are handled by int32 and uint32 (because search and replace are done as partial words)
+  retVal = retVal.replace("int32", "int32_t")
+  retVal = retVal.replace("int64", "int64_t")
+  retVal = retVal.replace("float32", "float")
+  retVal = retVal.replace("float64", "double")
+  retVal = retVal.replace("json", "Json::Value")
+  return retVal
+
+def CanonToTs(canonicalTypename):
+  # TS: replace vector with Array and map with Map
+  # string remains string
+  # replace int32... by number
+  # replace float32... by number
+  retVal = canonicalTypename
+  retVal = retVal.replace("map", "Map")
+  retVal = retVal.replace("vector", "Array")
+  retVal = retVal.replace("set", "Set")
+  retVal = retVal.replace("uint32", "number")
+  retVal = retVal.replace("uint64", "number")
+  retVal = retVal.replace("int32", "number")
+  retVal = retVal.replace("int64", "number")
+  retVal = retVal.replace("float32", "number")
+  retVal = retVal.replace("float64", "number")
+  retVal = retVal.replace("bool", "boolean")
+  retVal = retVal.replace("json", "Object")
+  return retVal
+
+def NeedsTsConstruction(enums, tsType):
+  if tsType == 'boolean':
+    return False
+  elif tsType == 'number':
+    return False
+  elif tsType == 'string':
+    return False
+  else:
+    enumNames = []
+    for enum in enums:
+      enumNames.append(enum['name'])
+    if tsType in enumNames:
+      return False
+  return True
+
+def NeedsCppConstruction(canonTypename):
+  return False
+
+def DefaultValueToTs(enums, field:FieldDefinition):
+    tsType = CanonToTs(field.type)
+
+    enumNames = []
+    for enum in enums:
+        enumNames.append(enum['name'])
+
+    if tsType in enumNames:
+        return tsType + "." + field.defaultValue
+    else:
+        return field.defaultValue
+
+def DefaultValueToCpp(root, enums, field:FieldDefinition):
+    cppType = CanonToCpp(field.type)
+
+    enumNames = []
+    for enum in enums:
+        enumNames.append(enum['name'])
+
+    if cppType in enumNames:
+        return root + "::" + cppType + "_" + field.defaultValue
+    else:
+        return field.defaultValue
+
+def RegisterTemplateFunction(template,func):
+  """Makes a function callable by a jinja2 template"""
+  template.globals[func.__name__] = func
+  return func
+
+def MakeTemplate(templateStr):
+  template = Template(templateStr)
+  RegisterTemplateFunction(template,CanonToCpp)
+  RegisterTemplateFunction(template,CanonToTs)
+  RegisterTemplateFunction(template,NeedsTsConstruction)
+  RegisterTemplateFunction(template,NeedsCppConstruction)
+  RegisterTemplateFunction(template, DefaultValueToTs)
+  RegisterTemplateFunction(template, DefaultValueToCpp)
+  return template
+
+def MakeTemplateFromFile(templateFileName):
+
+  with open(templateFileName, "r") as templateFile:
+    templateFileContents = templateFile.read()
+    return MakeTemplate(templateFileContents)
+
+
+def EatToken(sentence):
+    """splits "A,B,C" into "A" and "B,C" where A, B and C are type names
+  (including templates) like "int32", "TotoTutu", or 
+  "map<map<int32,vector<string>>,map<string,int32>>" """
+
+    if sentence.count("<") != sentence.count(">"):
+        raise Exception(
+            "Error in the partial template type list " + str(sentence) + "."
+            + " The number of < and > do not match!"
+        )
+
+    # the template level we're currently in
+    templateLevel = 0
+    for i in range(len(sentence)):
+        if (sentence[i] == ",") and (templateLevel == 0):
+            return (sentence[0:i], sentence[i + 1 :])
+        elif sentence[i] == "<":
+            templateLevel += 1
+        elif sentence[i] == ">":
+            templateLevel -= 1
+    return (sentence, "")
+
+
+def SplitListOfTypes(typename):
+    """Splits something like
+  vector<string>,int32,map<string,map<string,int32>> 
+  in:
+  - vector<string>
+  - int32
+    map<string,map<string,int32>>
+  
+  This is not possible with a regex so 
+  """
+    stillStuffToEat = True
+    tokenList = []
+    restOfString = typename
+    while stillStuffToEat:
+        firstToken, restOfString = EatToken(restOfString)
+        tokenList.append(firstToken)
+        if restOfString == "":
+            stillStuffToEat = False
+    return tokenList
+
+
+templateRegex = \
+  re.compile(r"([a-zA-Z0-9_]*[a-zA-Z0-9_]*)<([a-zA-Z0-9_,:<>]+)>")
+
+
+def ParseTemplateType(typename):
+    """ If the type is a template like "SOMETHING<SOME<THING,EL<SE>>>", 
+    then it returns (true,"SOMETHING","SOME<THING,EL<SE>>")
+  otherwise it returns (false,"","")"""
+
+    # let's remove all whitespace from the type
+    # split without argument uses any whitespace string as separator
+    # (space, tab, newline, return or formfeed)
+    typename = "".join(typename.split())
+    matches = templateRegex.match(typename)
+    if matches == None:
+        return (False, "", [])
+    else:
+        m = matches
+        assert len(m.groups()) == 2
+        # we need to split with the commas that are outside of the
+        # defined types. Simply splitting at commas won't work
+        listOfDependentTypes = SplitListOfTypes(m.group(2))
+        return (True, m.group(1), listOfDependentTypes)
+
+def GetStructFields(struct):
+  """This filters out the special metadata key from the struct fields"""
+  return [k for k in struct.keys() if k != '__handler']
+
+def ComputeOrderFromTypeTree(
+  ancestors, 
+  genOrder, 
+  shortTypename, schema):
+
+  if shortTypename in ancestors:
+    raise Exception(
+      "Cyclic dependency chain found: the last of " + str(ancestors) +
+      + " depends on " + str(shortTypename) + " that is already in the list."
+    )
+
+  if not (shortTypename in genOrder):
+    (isTemplate, _, dependentTypenames) = ParseTemplateType(shortTypename)
+    if isTemplate:
+      # if it is a template, it HAS dependent types... They can be 
+      # anything (primitive, collection, enum, structs..). 
+      # Let's process them!
+      for dependentTypename in dependentTypenames:
+        # childAncestors = ancestors.copy()  NO TEMPLATE ANCESTOR!!!
+        # childAncestors.append(typename)
+        ComputeOrderFromTypeTree(
+            ancestors, genOrder, dependentTypename, schema
+        )
+    else:
+      # If it is not template, we are only interested if it is a 
+      # dependency that we must take into account in the dep graph,
+      # i.e., a struct.
+      if IsShortStructType(shortTypename, schema):
+        struct = schema[GetLongTypename(shortTypename, schema)]
+        # The keys in the struct dict are the member names
+        # The values in the struct dict are the member types
+        if struct:
+          # we reach this if struct is not None AND not empty
+          for field in GetStructFields(struct):
+            # we fill the chain of dependent types (starting here)
+            ancestors.append(shortTypename)
+            ComputeOrderFromTypeTree(
+              ancestors, genOrder, struct[field], schema)
+            # don't forget to restore it!
+            ancestors.pop()
+        
+        # now we're pretty sure our dependencies have been processed,
+        # we can start marking our code for generation (it might 
+        # already have been done if someone referenced us earlier)
+        if not shortTypename in genOrder:
+          genOrder.append(shortTypename)
+
+# +-----------------------+
+# |   Utility functions   |
+# +-----------------------+
+
+def IsShortStructType(typename, schema):
+  fullStructName = "struct " + typename
+  return (fullStructName in schema)
+
+def GetLongTypename(shortTypename, schema):
+  if shortTypename.startswith("enum "):
+    raise RuntimeError('shortTypename.startswith("enum "):')
+  enumName = "enum " + shortTypename
+  isEnum = enumName in schema
+
+  if shortTypename.startswith("struct "):
+    raise RuntimeError('shortTypename.startswith("struct "):')
+  structName = "struct " + shortTypename
+  isStruct = ("struct " + shortTypename) in schema
+
+  if isEnum and isStruct:
+    raise RuntimeError('Enums and structs cannot have the same name')
+
+  if isEnum:
+    return enumName
+  if isStruct:
+    return structName
+
+def IsTypename(fullName):
+  return (fullName.startswith("enum ") or fullName.startswith("struct "))
+
+def IsEnumType(fullName):
+  return fullName.startswith("enum ")
+
+def IsStructType(fullName):
+  return fullName.startswith("struct ")
+
+def GetShortTypename(fullTypename):
+  if fullTypename.startswith("struct "):
+    return fullTypename[7:] 
+  elif fullTypename.startswith("enum"):
+    return fullTypename[5:] 
+  else:
+    raise RuntimeError \
+      ('fullTypename should start with either "struct " or "enum "')
+
+def CheckSchemaSchema(schema):
+  if not "rootName" in schema:
+      raise Exception("schema lacks the 'rootName' key")
+  for name in schema.keys():
+    if (not IsEnumType(name)) and (not IsStructType(name)) and \
+      (name != 'rootName'):
+      raise RuntimeError \
+        ('Type "' + str(name) + '" should start with "enum " or "struct "')
+
+  # TODO: check enum fields are unique (in whole namespace)
+  # TODO: check struct fields are unique (in each struct)
+  # TODO: check that in the source schema, there are spaces after each colon
+
+nonTypeKeys = ['rootName']
+def GetTypesInSchema(schema):
+  """Returns the top schema keys that are actual type names"""
+  typeList = [k for k in schema if k not in nonTypeKeys]
+  return typeList
+
+# +-----------------------+
+# | Main processing logic |
+# +-----------------------+
+
+def ComputeRequiredDeclarationOrder(schema):
+  # sanity check
+  CheckSchemaSchema(schema)
+
+  # we traverse the type dependency graph and we fill a queue with
+  # the required struct types, in a bottom-up fashion, to compute
+  # the declaration order
+  # The genOrder list contains the struct full names in the order
+  # where they must be defined.
+  # We do not care about the enums here... They do not depend upon
+  # anything and we'll handle them, in their original declaration 
+  # order, at the start
+  genOrder = []
+  for fullName in GetTypesInSchema(schema):
+    if IsStructType(fullName):
+      realName = GetShortTypename(fullName)
+      ancestors = []
+      ComputeOrderFromTypeTree(ancestors, genOrder, realName, schema)
+  return genOrder
+
+def GetStructFields(fieldDict):
+  """Returns the regular (non __handler) struct fields"""
+  # the following happens for empty structs
+  if fieldDict == None:
+    return fieldDict
+  ret = {}
+  for k,v in fieldDict.items():
+    if k != "__handler":
+      ret[k] = FieldDefinition.fromKeyValue(k, v)
+    if k.startswith("__") and k != "__handler":
+      raise RuntimeError("Fields starting with __ (double underscore) are reserved names!")
+  return ret
+
+def GetStructMetadata(fieldDict):
+  """Returns the __handler struct fields (there are default values that
+     can be overridden by entries in the schema
+     Not tested because it's a fail-safe: if something is broken in this, 
+     dependent projects will not build."""
+  metadataDict = {}
+  metadataDict['handleInCpp'] = False
+  metadataDict['handleInTypescript'] = False
+  
+  if fieldDict != None:
+    for k,v in fieldDict.items():
+      if k.startswith("__") and k != "__handler":
+        raise RuntimeError("Fields starting with __ (double underscore) are reserved names")
+      if k == "__handler":
+        if type(v) == list:
+          for i in v:
+            if i == "cpp":
+              metadataDict['handleInCpp'] = True
+            elif i == "ts":
+              metadataDict['handleInTypescript'] = True
+            else:
+              raise RuntimeError("Error in schema. Allowed values for __handler are \"cpp\" or \"ts\"")
+        elif type(v) == str:
+          if v == "cpp":
+            metadataDict['handleInCpp'] = True
+          elif v == "ts":
+            metadataDict['handleInTypescript'] = True
+          else:
+            raise RuntimeError("Error in schema. Allowed values for __handler are \"cpp\" or \"ts\" (or a list of both)")
+        else:
+            raise RuntimeError("Error in schema. Allowed values for __handler are \"cpp\" or \"ts\" (or a list of both)")
+  return metadataDict
+
+def ProcessSchema(schema, genOrder):
+  # sanity check
+  CheckSchemaSchema(schema)
+
+  # let's doctor the schema to clean it up a bit
+  # order DOES NOT matter for enums, even though it's a list
+  enums = []
+  for fullName in schema.keys():
+    if IsEnumType(fullName):
+      # convert "enum Toto" to "Toto"
+      typename = GetShortTypename(fullName)
+      enum = {}
+      enum['name'] = typename
+      assert(type(schema[fullName]) == list)
+      enum['fields'] = schema[fullName] # must be a list
+      enums.append(enum)
+
+  # now that the order has been established, we actually store\
+  # the structs in the correct order
+  # the structs are like:
+  # example = [
+  #   {
+  #     "name": "Message1",
+  #     "fields": {
+  #       "someMember":"int32",
+  #       "someOtherMember":"vector<string>"
+  #     }
+  #   },
+  #   { 
+  #     "name": "Message2",
+  #     "fields": {
+  #       "someMember":"int32",
+  #       "someOtherMember22":"vector<Message1>"
+  #     }
+  #   }
+  # ]
+
+  structs = []
+  for i in range(len(genOrder)):
+    # this is already the short name
+    typename = genOrder[i]
+    fieldDict = schema["struct " + typename]
+    struct = {}
+    struct['name'] = typename
+    struct['fields'] = GetStructFields(fieldDict)
+    struct['__meta__'] = GetStructMetadata(fieldDict)
+    structs.append(struct)
+  
+  templatingDict = {}
+  templatingDict['enums'] = enums
+  templatingDict['structs'] = structs
+  templatingDict['rootName'] = schema['rootName']
+
+  return templatingDict
+
+# +-----------------------+
+# |    Write to files     |
+# +-----------------------+
+
+# def WriteStreamsToFiles(rootName: str, genc: Dict[str, StringIO]) \
+#   -> None:
+#   pass
+
+def LoadSchema(fn):
+  # latin-1 is a trick, when we do NOT care about NON-ascii chars but
+  # we wish to avoid using a decoding error handler
+  # (see http://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html#files-in-an-ascii-compatible-encoding-best-effort-is-acceptable)
+  # TL;DR: all 256 values are mapped to characters in latin-1 so the file 
+  # contents never cause an error.
+  with open(fn, 'r', encoding='latin-1') as f:
+    schemaText = f.read()
+    assert(type(schemaText) == str)
+  return LoadSchemaFromString(schemaText = schemaText)
+
+def LoadSchemaFromString(schemaText:str):
+    # ensure there is a space after each colon. Otherwise, dicts could be
+    # erroneously recognized as an array of strings containing ':'
+    for i in range(len(schemaText)-1):
+      ch = schemaText[i]
+      nextCh = schemaText[i+1]
+      if ch == ':':
+        if not (nextCh == ' ' or nextCh == '\n'):
+          lineNumber = schemaText.count("\n",0,i) + 1
+          raise RuntimeError("Error at line " + str(lineNumber) + " in the schema: colons must be followed by a space or a newline!")
+    schema = yaml.load(schemaText, Loader = yamlloader.ordereddict.SafeLoader)
+    return schema
+
+def GetTemplatingDictFromSchemaFilename(fn):
+  return GetTemplatingDictFromSchema(LoadSchema(fn))
+
+def GetTemplatingDictFromSchema(schema):
+  genOrder = ComputeRequiredDeclarationOrder(schema)
+  templatingDict = ProcessSchema(schema, genOrder)
+  currentDT = datetime.datetime.now()
+  templatingDict['currentDatetime'] = str(currentDT)
+  return templatingDict
+
+# +-----------------------+
+# |      ENTRY POINT      |
+# +-----------------------+
+def Process(schemaFile, outDir):
+  tdico = GetTemplatingDictFromSchemaFilename(schemaFile)
+
+  tsTemplateFile = \
+    os.path.join(os.path.dirname(__file__), 'template.in.ts.j2')
+  template = MakeTemplateFromFile(tsTemplateFile)
+  renderedTsCode = template.render(**tdico)
+  outputTsFile = os.path.join( \
+    outDir,str(tdico['rootName']) + "_generated.ts")
+  with open(outputTsFile,"wt",encoding='utf8') as outFile:
+    outFile.write(renderedTsCode)
+
+  cppTemplateFile = \
+    os.path.join(os.path.dirname(__file__), 'template.in.h.j2')
+  template = MakeTemplateFromFile(cppTemplateFile)
+  renderedCppCode = template.render(**tdico)
+  outputCppFile = os.path.join( \
+    outDir, str(tdico['rootName']) + "_generated.hpp")
+  with open(outputCppFile,"wt",encoding='utf8') as outFile:
+    outFile.write(renderedCppCode)
+
+if __name__ == "__main__":
+  import argparse
+
+  parser = argparse.ArgumentParser(
+    usage="""stonegentool.py [-h] [-o OUT_DIR] [-v] input_schema
+    EXAMPLE: python stonegentool.py -o "generated_files/" """
+      + """ "mainSchema.yaml,App Specific Commands.json" """
+  )
+  parser.add_argument("input_schema", type=str, \
+    help="path to the schema file")
+  parser.add_argument(
+    "-o",
+    "--out_dir",
+    type=str,
+    default=".",
+    help="""path of the directory where the files 
+                          will be generated. Default is current
+                          working folder""",
+  )
+  parser.add_argument(
+    "-v",
+    "--verbosity",
+    action="count",
+    default=0,
+    help="""increase output verbosity (0 == errors 
+                          only, 1 == some verbosity, 2 == nerd
+                          mode""",
+  )
+
+  args = parser.parse_args()
+  schemaFile = args.input_schema
+  outDir = args.out_dir
+  Process(schemaFile, outDir)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/stonegentool_test.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,438 @@
+#
+#        1         2         3         4         5         6         7         8
+# 345678901234567890123456789012345678901234567890123456789012345678901234567890
+#
+
+from stonegentool import \
+EatToken,SplitListOfTypes,ParseTemplateType,ProcessSchema, \
+CheckSchemaSchema,LoadSchema,trim,ComputeRequiredDeclarationOrder, \
+GetTemplatingDictFromSchemaFilename,MakeTemplate,MakeTemplateFromFile,LoadSchemaFromString,GetTemplatingDictFromSchema
+import unittest
+import os
+import re
+import pprint
+from jinja2 import Template
+
+def RemoveDateTimeLine(s : str):
+  # regex are non-multiline by default, and $ does NOT match the end of the line
+  s2 = re.sub(r"^// autogenerated by stonegentool on .*\n","",s)
+  return s2
+
+class TestStonegentool(unittest.TestCase):
+  def test_EatToken_empty(self):
+    c = r""
+    a,b = EatToken(c)
+    self.assertEqual(a,r"")
+    self.assertEqual(b,r"")
+
+  def test_EatToken_simpleNonTemplate(self):
+    c = r"int32"
+    a,b = EatToken(c)
+    self.assertEqual(a,r"int32")
+    self.assertEqual(b,r"")
+
+  def test_EatToken_simpleTemplate(self):
+    c = r"vector<string>"
+    a,b = EatToken(c)
+    self.assertEqual(a,r"vector<string>")
+    self.assertEqual(b,r"")
+
+  def test_EatToken_complexTemplate(self):
+    c = r"vector<map<int64,string>>,vector<map<int32,string>>"
+    a,b = EatToken(c)
+    self.assertEqual(a,r"vector<map<int64,string>>")
+    self.assertEqual(b,r"vector<map<int32,string>>")
+
+  def test_EatToken_complexTemplates(self):
+    c = r"vector<map<vector<string>,map<int32,string>>>,map<int32,string>,map<map<int32,string>,string>"
+    a,b = EatToken(c)
+    self.assertEqual(a,r"vector<map<vector<string>,map<int32,string>>>")
+    self.assertEqual(b,r"map<int32,string>,map<map<int32,string>,string>")
+    a,b = EatToken(b)
+    self.assertEqual(a,r"map<int32,string>")
+    self.assertEqual(b,r"map<map<int32,string>,string>")
+
+  def test_SplitListOfTypes(self):
+    c = r"vector<map<vector<string>,map<int32,string>>>,map<int32,string>,map<map<int32,string>,string>"
+    lot = SplitListOfTypes(c)
+    self.assertEqual(3,len(lot))
+    self.assertEqual("vector<map<vector<string>,map<int32,string>>>",lot[0])
+    self.assertEqual("map<int32,string>",lot[1])
+    self.assertEqual("map<map<int32,string>,string>",lot[2])
+
+  def test_SplitListOfTypes_bogus(self):
+    c = r"vector<map<vector<string>,map<int32,string>>,map<int32,string>,map<map<int32,string>,string"
+    self.assertRaises(Exception,SplitListOfTypes,c) # the argument c must be passed to assertRaises, not as a normal call of SplitListOfTypes
+    
+  def test_ParseTemplateType_true(self):
+    c = "map<vector<map<int,vector<string>>>,map<vector<int>,vector<string>>>"
+    (ok,a,b) = ParseTemplateType(c)
+    self.assertEqual(ok,True)
+    self.assertEqual(a,"map")
+    self.assertEqual(b,["vector<map<int,vector<string>>>","map<vector<int>,vector<string>>"])
+
+    (ok2,a2,b2) = ParseTemplateType(b[0])
+    self.assertEqual(ok2,True)
+    self.assertEqual(a2,"vector")
+    self.assertEqual(b2,["map<int,vector<string>>"])
+
+    (ok3,a3,b3) = ParseTemplateType(b[1])
+    self.assertEqual(ok3,True)
+    self.assertEqual(a3,"map")
+    self.assertEqual(b3,["vector<int>","vector<string>"])
+
+    (ok4,a4,b4) = ParseTemplateType(b2[0])
+    self.assertEqual(ok4,True)
+    self.assertEqual(a4,"map")
+    self.assertEqual(b4,["int","vector<string>"])
+    
+  def test_ParseSchema(self):
+    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
+    obj = LoadSchema(fn)
+    # we're happy if it does not crash :)
+    CheckSchemaSchema(obj)
+
+  def test_ComputeRequiredDeclarationOrder(self):
+    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
+    obj = LoadSchema(fn)
+    genOrder: str = ComputeRequiredDeclarationOrder(obj)
+    self.assertEqual(5,len(genOrder))
+    self.assertEqual("A",genOrder[0])
+    self.assertEqual("B",genOrder[1])
+    self.assertEqual("C",genOrder[2])
+    self.assertEqual("Message1",genOrder[3])
+    self.assertEqual("Message2",genOrder[4])
+
+  # def test_GeneratePreambleEnumerationAndStructs(self):
+  #   fn = os.path.join(os.path.dirname(__file__), 'test', 'test1.jsonc')
+  #   obj = LoadSchema(fn)
+  #   (_,genc,_) = ProcessSchema(obj)
+
+  def test_genEnums(self):
+    self.maxDiff = None
+    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
+    obj = LoadSchema(fn)
+    genOrder: str = ComputeRequiredDeclarationOrder(obj)
+    processedSchema = ProcessSchema(obj, genOrder)
+    self.assertTrue('rootName' in processedSchema)
+
+    structs = {}
+    for v in processedSchema['structs']:
+      structs[v['name']] = v
+    enums = {}
+    for v in processedSchema['enums']:
+      enums[v['name']] = v
+
+    self.assertTrue('C' in structs)
+    self.assertTrue('someBs' in structs['C']['fields'])
+    self.assertTrue('CrispType' in enums)
+    self.assertTrue('Message1' in structs)
+    self.assertEqual('int32', structs['Message1']['fields']['memberInt32'].type)
+    self.assertEqual('string', structs['Message1']['fields']['memberString'].type)
+    self.assertEqual('EnumMonth0', structs['Message1']['fields']['memberEnumMonth'].type)
+    self.assertEqual('bool', structs['Message1']['fields']['memberBool'].type)
+    self.assertEqual('float32', structs['Message1']['fields']['memberFloat32'].type)
+    self.assertEqual('float64', structs['Message1']['fields']['memberFloat64'].type)
+
+  def test_GenerateTypeScriptEnums(self):
+    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
+    tdico = GetTemplatingDictFromSchemaFilename(fn)
+    template = Template("""  // end of generic methods
+{% for enum in enums%}  export enum {{enum['name']}} {
+{% for key in enum['fields']%}    {{key}},
+{%endfor%}  };
+
+{%endfor%}""")
+    renderedCode = template.render(**tdico)
+    renderedCodeRef = """  // end of generic methods
+  export enum MovieType {
+    RomCom,
+    Horror,
+    ScienceFiction,
+    Vegetables,
+  };
+
+  export enum CrispType {
+    SaltAndPepper,
+    CreamAndChives,
+    Paprika,
+    Barbecue,
+  };
+
+  export enum EnumMonth0 {
+    January,
+    February,
+    March,
+  };
+
+"""
+    self.assertEqual(renderedCodeRef,renderedCode)
+
+  def test_GenerateCplusplusEnums(self):
+    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
+    tdico = GetTemplatingDictFromSchemaFilename(fn)
+    template = Template("""  // end of generic methods
+{% for enum in enums%}  enum {{enum['name']}} {
+{% for key in enum['fields']%}    {{key}},
+{%endfor%}  };
+
+{%endfor%}""")
+    renderedCode = template.render(**tdico)
+    renderedCodeRef = """  // end of generic methods
+  enum MovieType {
+    RomCom,
+    Horror,
+    ScienceFiction,
+    Vegetables,
+  };
+
+  enum CrispType {
+    SaltAndPepper,
+    CreamAndChives,
+    Paprika,
+    Barbecue,
+  };
+
+  enum EnumMonth0 {
+    January,
+    February,
+    March,
+  };
+
+"""
+    self.assertEqual(renderedCodeRef,renderedCode)
+
+  def test_generateTsStructType(self):
+    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
+    tdico = GetTemplatingDictFromSchemaFilename(fn)
+
+#     template = MakeTemplate("""  // end of generic methods
+# {% for struct in struct%}  export class {{struct['name']}} {
+#   {% for key in struct['fields']%}    {{key}}:{{struct['fields'][key]}},
+#   {% endfor %}  
+#     constructor() {
+#   {% for key in struct['fields']%}
+#     {% if NeedsConstruction(struct['fields']['key'])}
+#       {{key}} = new {{CanonToTs(struct['fields']['key'])}};
+#     {% end if %}
+#   {% endfor %}
+#     }
+# {% endfor %}
+#     public StoneSerialize(): string {
+#       let container: object = {};
+#       container['type'] = '{{rootName}}.{{struct['name']}}';
+#       container['value'] = this;
+#       return JSON.stringify(container);
+#     }  };""")
+    template = MakeTemplate("""  // end of generic methods
+{% for struct in structs%}  export class {{struct['name']}} {
+{% for key in struct['fields']%}    {{key}}:{{CanonToTs(struct['fields'][key]['type'])}};
+{% endfor %}
+    constructor() {
+{% for key in struct['fields']%}      this.{{key}} = new {{CanonToTs(struct['fields'][key]['type'])}}();
+{% endfor %}    }
+
+    public StoneSerialize(): string {
+      let container: object = {};
+      container['type'] = '{{rootName}}.{{struct['name']}}';
+      container['value'] = this;
+      return JSON.stringify(container);
+    }
+  };
+
+{% endfor %}""")
+    renderedCode = template.render(**tdico)
+    renderedCodeRef = """  // end of generic methods
+  export class A {
+    someStrings:Array<string>;
+    someInts2:Array<number>;
+    movies:Array<MovieType>;
+
+    constructor() {
+      this.someStrings = new Array<string>();
+      this.someInts2 = new Array<number>();
+      this.movies = new Array<MovieType>();
+    }
+
+    public StoneSerialize(): string {
+      let container: object = {};
+      container['type'] = 'TestStoneCodeGen.A';
+      container['value'] = this;
+      return JSON.stringify(container);
+    }
+  };
+
+  export class B {
+    someAs:Array<A>;
+    someInts:Array<number>;
+
+    constructor() {
+      this.someAs = new Array<A>();
+      this.someInts = new Array<number>();
+    }
+
+    public StoneSerialize(): string {
+      let container: object = {};
+      container['type'] = 'TestStoneCodeGen.B';
+      container['value'] = this;
+      return JSON.stringify(container);
+    }
+  };
+
+  export class C {
+    someBs:Array<B>;
+    ddd:Array<string>;
+
+    constructor() {
+      this.someBs = new Array<B>();
+      this.ddd = new Array<string>();
+    }
+
+    public StoneSerialize(): string {
+      let container: object = {};
+      container['type'] = 'TestStoneCodeGen.C';
+      container['value'] = this;
+      return JSON.stringify(container);
+    }
+  };
+
+  export class Message1 {
+    memberInt32:number;
+    memberString:string;
+    memberEnumMonth:EnumMonth0;
+    memberBool:boolean;
+    memberFloat32:number;
+    memberFloat64:number;
+
+    constructor() {
+      this.memberInt32 = new number();
+      this.memberString = new string();
+      this.memberEnumMonth = new EnumMonth0();
+      this.memberBool = new boolean();
+      this.memberFloat32 = new number();
+      this.memberFloat64 = new number();
+    }
+
+    public StoneSerialize(): string {
+      let container: object = {};
+      container['type'] = 'TestStoneCodeGen.Message1';
+      container['value'] = this;
+      return JSON.stringify(container);
+    }
+  };
+
+  export class Message2 {
+    memberString:string;
+    memberStringWithDefault:string;
+    memberVectorOfMessage1:Array<Message1>;
+    memberVectorOfString:Array<string>;
+    memberMapStringString:Map<string, string>;
+    memberMapStringStruct:Map<string, Message1>;
+    memberMapEnumFloat:Map<CrispType, number>;
+    memberEnumMovieType:MovieType;
+    memberJson:Object;
+
+    constructor() {
+      this.memberString = new string();
+      this.memberStringWithDefault = new string();
+      this.memberVectorOfMessage1 = new Array<Message1>();
+      this.memberVectorOfString = new Array<string>();
+      this.memberMapStringString = new Map<string, string>();
+      this.memberMapStringStruct = new Map<string, Message1>();
+      this.memberMapEnumFloat = new Map<CrispType, number>();
+      this.memberEnumMovieType = new MovieType();
+      this.memberJson = new Object();
+    }
+
+    public StoneSerialize(): string {
+      let container: object = {};
+      container['type'] = 'TestStoneCodeGen.Message2';
+      container['value'] = this;
+      return JSON.stringify(container);
+    }
+  };
+
+"""
+    # print(renderedCode)
+    self.maxDiff = None
+    self.assertEqual(renderedCodeRef, renderedCode)
+
+  def test_generateWholeTsFile(self):
+    schemaFile = \
+      os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
+    tdico = GetTemplatingDictFromSchemaFilename(schemaFile)
+    tsTemplateFile = \
+      os.path.join(os.path.dirname(__file__), 'template.in.ts.j2')
+    template = MakeTemplateFromFile(tsTemplateFile)
+    renderedCode = template.render(**tdico)
+    print(renderedCode)
+
+  def test_GenerateTypeScriptHandlerInterface(self):
+    pass
+
+  def test_GenerateCppHandlerInterface(self):
+    pass
+
+  def test_GenerateTypeScriptDispatcher(self):
+    pass
+
+  def test_GenerateCppDispatcher(self):
+    pass
+
+  def test_StringDefaultValueInTs(self):
+    schema = LoadSchemaFromString("""
+                                  rootName: MyTest
+                                  struct Toto:
+                                    withoutDefault: string
+                                    withDefault: string = \"tutu\"
+                                  """)
+    tdico = GetTemplatingDictFromSchema(schema)
+
+    tsTemplateFile = os.path.join(os.path.dirname(__file__), 'template.in.ts.j2')
+    template = MakeTemplateFromFile(tsTemplateFile)
+    renderedCode = template.render(**tdico)
+    self.assertIn("withDefault = \"tutu\"", renderedCode)
+    # print(renderedCode)
+
+    cppTemplateFile = os.path.join(os.path.dirname(__file__), 'template.in.h.j2')
+    template = MakeTemplateFromFile(cppTemplateFile)
+    renderedCode = template.render(**tdico)
+    print(renderedCode)
+    self.assertIn("withDefault = \"tutu\"", renderedCode)
+
+
+  def test_EnumDefaultValue(self):
+    schema = LoadSchemaFromString("""
+                                  rootName: MyTest
+                                  enum MyEnum:
+                                    - Toto
+                                    - Tutu
+                                  struct Toto:
+                                    withoutDefault: MyEnum
+                                    withDefault: MyEnum = Toto
+                                  """)
+    tdico = GetTemplatingDictFromSchema(schema)
+
+    tsTemplateFile = os.path.join(os.path.dirname(__file__), 'template.in.ts.j2')
+    template = MakeTemplateFromFile(tsTemplateFile)
+    renderedCode = template.render(**tdico)
+    # print(renderedCode)
+    self.assertIn("withDefault = MyEnum.Toto", renderedCode)
+
+    tsTemplateFile = os.path.join(os.path.dirname(__file__), 'template.in.h.j2')
+    template = MakeTemplateFromFile(tsTemplateFile)
+    renderedCode = template.render(**tdico)
+    self.assertIn("withDefault = MyTest::MyEnum_Toto", renderedCode)
+    # print(renderedCode)
+
+
+# def test(self):
+#   s = 'hello world'
+#   self.assertEqual(s.split(), ['hello', 'world'])
+#   # check that s.split fails when the separator is not a string
+#   with self.assertRaises(TypeError):
+#   s.split(2)
+
+if __name__ == '__main__':
+  unittest.main()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/template.in.h.j2	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,551 @@
+/*
+         1         2         3         4         5         6         7
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
+
+Generated on {{currentDatetime}} by stonegentool
+
+*/
+#pragma once
+
+#include <exception>
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <assert.h>
+#include <memory>
+#include <set>
+#include <json/json.h>
+
+//#define STONEGEN_NO_CPP11 1
+
+#ifdef STONEGEN_NO_CPP11
+#define StoneSmartPtr std::unique_ptr
+#else 
+#define StoneSmartPtr std::unique_ptr
+#endif 
+
+namespace {{rootName}}
+{
+  /** Throws in case of problem */
+  inline void _StoneDeserializeValue(int32_t& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull())
+    {
+      destValue = jsonValue.asInt();
+    }
+  }
+
+  inline Json::Value _StoneSerializeValue(int32_t value)
+  {
+    Json::Value result(value);
+    return result;
+  }
+
+  inline void _StoneDeserializeValue(int64_t& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull())
+    {
+      destValue = jsonValue.asInt64();
+    }
+  }
+
+  inline Json::Value _StoneSerializeValue(int64_t value)
+  {
+    Json::Value result(static_cast<Json::Value::Int64>(value));
+    return result;
+  }
+
+  inline void _StoneDeserializeValue(uint32_t& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull())
+    {
+      destValue = jsonValue.asUInt();
+    }
+  }
+
+  inline Json::Value _StoneSerializeValue(uint32_t value)
+  {
+    Json::Value result(value);
+    return result;
+  }
+
+  inline void _StoneDeserializeValue(uint64_t& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull())
+    {
+      destValue = jsonValue.asUInt64();
+    }
+  }
+
+  inline Json::Value _StoneSerializeValue(uint64_t value)
+  {
+    Json::Value result(static_cast<Json::Value::UInt64>(value));
+    return result;
+  }
+
+  inline void _StoneDeserializeValue(Json::Value& destValue, const Json::Value& jsonValue)
+  {
+    destValue = jsonValue;
+  }
+
+  inline Json::Value _StoneSerializeValue(Json::Value value)
+  {
+    return value;
+  }
+
+  /** Throws in case of problem */
+  inline void _StoneDeserializeValue(double& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull())
+    {
+      destValue = jsonValue.asDouble();
+    }
+  }
+
+  inline Json::Value _StoneSerializeValue(double value)
+  {
+    Json::Value result(value);
+    return result;
+  }
+
+  /** Throws in case of problem */
+  inline void _StoneDeserializeValue(float& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull())
+    {
+      destValue = jsonValue.asFloat();
+    }
+  }
+
+  inline Json::Value _StoneSerializeValue(float value)
+  {
+    Json::Value result(value);
+    return result;
+  }
+
+  /** Throws in case of problem */
+  inline void _StoneDeserializeValue(bool& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull())
+    {
+      destValue = jsonValue.asBool();
+    }
+  }
+
+  inline Json::Value _StoneSerializeValue(bool value)
+  {
+    Json::Value result(value);
+    return result;
+  }
+
+  /** Throws in case of problem */
+  inline void _StoneDeserializeValue(
+       std::string& destValue
+     , const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull())
+    {
+      destValue = jsonValue.asString();
+    }
+  }
+
+  inline Json::Value _StoneSerializeValue(const std::string& value)
+  {
+    // the following is better than 
+    Json::Value result(value.data(),value.data()+value.size());
+    return result;
+  }
+
+  inline std::string MakeIndent(size_t indent)
+  {
+    char* txt = reinterpret_cast<char*>(malloc(indent+1)); // NO EXCEPTION BELOW!!!!!!!!!!!!
+    for(size_t i = 0; i < indent; ++i)
+      txt[i] = ' ';
+    txt[indent] = 0;
+    std::string retVal(txt);
+    free(txt); // NO EXCEPTION ABOVE !!!!!!!!!!
+    return retVal;
+  }
+
+  // generic dumper
+  template<typename T>
+  std::ostream& StoneDumpValue(std::ostream& out, const T& value, size_t indent)
+  {
+    out << MakeIndent(indent) << value;
+    return out;
+  }
+
+  // string dumper
+  inline std::ostream& StoneDumpValue(std::ostream& out, const std::string& value, size_t indent)
+  {
+    out << MakeIndent(indent) << "\"" << value  << "\"";
+    return out;
+  }
+
+  inline std::string ToString(const std::string& str)
+  {
+    return str;
+  }
+
+  inline void FromString(std::string& value, std::string strValue)
+  {
+    value = strValue;
+  }
+
+
+  /** Throws in case of problem */
+  template<typename TK, typename TV>
+  void _StoneDeserializeValue(
+    std::map<TK, TV>& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull())
+    {
+      destValue.clear();
+      for (
+        Json::Value::const_iterator itr = jsonValue.begin();
+        itr != jsonValue.end();
+        itr++)
+      {
+        std::string strKey;
+        _StoneDeserializeValue(strKey, itr.key());
+        TK key;
+        FromString(key, strKey);  // if you have a compile error here, it means that your type is not suitable to be the key of a map (or you should overwrite the FromString/ToString in template.in.h.j2)
+
+        TV innerDestValue;
+        _StoneDeserializeValue(innerDestValue, *itr);
+
+        destValue[key] = innerDestValue;
+      }
+    }
+  }
+
+  template<typename TK, typename TV>
+  Json::Value _StoneSerializeValue(const std::map<TK, TV>& value)
+  {
+    Json::Value result(Json::objectValue);
+
+    for (typename std::map<TK, TV>::const_iterator it = value.cbegin();
+      it != value.cend(); ++it)
+    {
+      // it->first it->second
+      result[ToString(it->first)] = _StoneSerializeValue(it->second);
+    }
+    return result;
+  }
+
+  template<typename TK, typename TV>
+  std::ostream& StoneDumpValue(std::ostream& out, const std::map<TK, TV>& value, size_t indent)
+  {
+    out << MakeIndent(indent) << "{\n";
+    for (typename std::map<TK, TV>::const_iterator it = value.cbegin();
+      it != value.cend(); ++it)
+    {
+      out << MakeIndent(indent+2) << "\"" << it->first << "\" : ";
+      StoneDumpValue(out, it->second, indent+2);
+      out << ", \n";
+    }
+    out << MakeIndent(indent) << "}\n";
+    return out;
+  }
+
+  /** Throws in case of problem */
+  template<typename T>
+  void _StoneDeserializeValue(
+    std::vector<T>& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull() && jsonValue.isArray())
+    {
+      destValue.clear();
+      destValue.reserve(jsonValue.size());
+      for (Json::Value::ArrayIndex i = 0; i != jsonValue.size(); i++)
+      {
+        T innerDestValue;
+        _StoneDeserializeValue(innerDestValue, jsonValue[i]);
+        destValue.push_back(innerDestValue);
+      }
+    }
+  }
+
+  template<typename T>
+  Json::Value _StoneSerializeValue(const std::vector<T>& value)
+  {
+    Json::Value result(Json::arrayValue);
+    for (size_t i = 0; i < value.size(); ++i)
+    {
+      result.append(_StoneSerializeValue(value[i]));
+    }
+    return result;
+  }
+
+  template<typename T>
+  std::ostream& StoneDumpValue(std::ostream& out, const std::vector<T>& value, size_t indent)
+  {
+    out << MakeIndent(indent) << "[\n";
+    for (size_t i = 0; i < value.size(); ++i)
+    {
+      StoneDumpValue(out, value[i], indent+2);
+      out << ", \n";
+    }
+    out << MakeIndent(indent) << "]\n";
+    return out;
+  }
+
+  /** Throws in case of problem */
+  template<typename T>
+  void _StoneDeserializeValue(
+    std::set<T>& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull() && jsonValue.isArray())
+    {
+      destValue.clear();
+      for (Json::Value::ArrayIndex i = 0; i != jsonValue.size(); i++)
+      {
+        T innerDestValue;
+        _StoneDeserializeValue(innerDestValue, jsonValue[i]);
+        destValue.insert(innerDestValue);
+      }
+    }
+  }
+
+  template<typename T>
+  Json::Value _StoneSerializeValue(const std::set<T>& value)
+  {
+    Json::Value result(Json::arrayValue);
+    for (typename std::set<T>::const_iterator it = value.begin(); it != value.end(); ++it)
+    {
+      result.append(_StoneSerializeValue(*it));
+    }
+    return result;
+  }
+
+  template<typename T>
+  std::ostream& StoneDumpValue(std::ostream& out, const std::set<T>& value, size_t indent)
+  {
+    out << MakeIndent(indent) << "[\n";
+    for (typename std::set<T>::const_iterator it = value.begin(); it != value.end(); ++it)
+    {
+      StoneDumpValue(out, *it, indent+2);
+      out << ", \n";
+    }
+    out << MakeIndent(indent) << "]\n";
+    return out;
+  }
+
+  inline void StoneCheckSerializedValueTypeGeneric(const Json::Value& value)
+  {
+    if ((!value.isMember("type")) || (!value["type"].isString()))
+    {
+      std::stringstream ss;
+      ss << "Cannot deserialize value ('type' key invalid)";
+      throw std::runtime_error(ss.str());
+    }
+  }
+
+  inline void StoneCheckSerializedValueType(
+    const Json::Value& value, std::string typeStr)
+  {
+    StoneCheckSerializedValueTypeGeneric(value);
+
+    std::string actTypeStr = value["type"].asString();
+    if (actTypeStr != typeStr)
+    {
+      std::stringstream ss;
+      ss << "Cannot deserialize type" << actTypeStr
+        << "into " << typeStr;
+      throw std::runtime_error(ss.str());
+    }
+  }
+
+  // end of generic methods
+
+// end of generic methods
+{% for enum in enums%}
+  enum {{enum['name']}} {
+{% for key in enum['fields']%}    {{enum['name']}}_{{key}},
+{%endfor%}  };
+
+  inline std::string ToString(const {{enum['name']}}& value)
+  {
+{% for key in enum['fields']%}    if( value == {{enum['name']}}_{{key}})
+    {
+      return std::string("{{key}}");
+    }
+{%endfor%}    std::stringstream ss;
+    ss << "Value \"" << value << "\" cannot be converted to {{enum['name']}}. Possible values are: "
+{% for key in enum['fields']%}        << " {{key}} = " << static_cast<int64_t>({{enum['name']}}_{{key}})  << ", " 
+{% endfor %}        << std::endl;
+    std::string msg = ss.str();
+    throw std::runtime_error(msg);
+  }
+
+  inline void FromString({{enum['name']}}& value, std::string strValue)
+  {
+{% for key in enum['fields']%}    if( strValue == std::string("{{key}}") )
+    {
+      value = {{enum['name']}}_{{key}};
+      return;
+    }
+{%endfor%}
+    std::stringstream ss;
+    ss << "String \"" << strValue << "\" cannot be converted to {{enum['name']}}. Possible values are: {% for key in enum['fields']%}{{key}} {% endfor %}";
+    std::string msg = ss.str();
+    throw std::runtime_error(msg);
+  }
+
+
+  inline void _StoneDeserializeValue(
+    {{enum['name']}}& destValue, const Json::Value& jsonValue)
+  {
+    if (!jsonValue.isNull())
+    {
+      FromString(destValue, jsonValue.asString());
+    }
+  }
+
+  inline Json::Value _StoneSerializeValue(const {{enum['name']}}& value)
+  {
+    std::string strValue = ToString(value);
+    return Json::Value(strValue);
+  }
+
+  inline std::ostream& StoneDumpValue(std::ostream& out, const {{enum['name']}}& value, size_t indent = 0)
+  {
+{% for key in enum['fields']%}    if( value == {{enum['name']}}_{{key}})
+    {
+      out << MakeIndent(indent) << "{{key}}";
+    }
+{%endfor%}    return out;
+  }
+
+{%endfor%}
+{% for struct in structs%}
+#ifdef _MSC_VER
+#pragma region {{struct['name']}}
+#endif //_MSC_VER
+
+  struct {{struct['name']}}
+  {
+{% if struct %}{% if struct['fields'] %}{% for key in struct['fields'] %}    {{CanonToCpp(struct['fields'][key]['type'])}} {{key}};
+{% endfor %}{% endif %}{% endif %}
+    {{struct['name']}}({% if struct %}{% if struct['fields'] %}{% for key in struct['fields'] %}{{CanonToCpp(struct['fields'][key]['type'])}} {{key}} = {% if struct['fields'][key]['defaultValue'] %}{{DefaultValueToCpp(rootName,enums,struct['fields'][key])}} {%else%} {{CanonToCpp(struct['fields'][key]['type'])}}() {%endif%} {{ ", " if not loop.last }}{% endfor %}{% endif %}{% endif %})
+    {
+{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}      this->{{key}} = {{key}};
+{% endfor %}{% endif %}{% endif %}    }
+  };
+
+  inline void _StoneDeserializeValue({{struct['name']}}& destValue, const Json::Value& value)
+  {
+    if (!value.isNull())
+    {
+{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}      _StoneDeserializeValue(destValue.{{key}}, value["{{key}}"]);
+{% endfor %}{% endif %}{% endif %}    }
+  }
+
+  inline Json::Value _StoneSerializeValue(const {{struct['name']}}& value)
+  {
+    Json::Value result(Json::objectValue);
+{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}    result["{{key}}"] = _StoneSerializeValue(value.{{key}});
+{% endfor %}{% endif %}{% endif %}
+    return result;
+  }
+
+  inline std::ostream& StoneDumpValue(std::ostream& out, const {{struct['name']}}& value, size_t indent = 0)
+  {
+    out << MakeIndent(indent) << "{\n";
+{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}    out << MakeIndent(indent+2) << "{{key}}: ";
+    StoneDumpValue(out, value.{{key}},indent+2);
+    out << ", \n";
+{% endfor %}{% endif %}{% endif %}
+    out << MakeIndent(indent) << "}";
+    return out;
+  }
+
+  inline void StoneDeserialize({{struct['name']}}& destValue, const Json::Value& value)
+  {
+    StoneCheckSerializedValueType(value, "{{rootName}}.{{struct['name']}}");
+    _StoneDeserializeValue(destValue, value["value"]);
+  }
+
+  inline Json::Value StoneSerializeToJson(const {{struct['name']}}& value)
+  {
+    Json::Value result(Json::objectValue);
+    result["type"] = "{{rootName}}.{{struct['name']}}";
+    result["value"] = _StoneSerializeValue(value);
+    return result;
+  }
+
+  inline std::string StoneSerialize(const {{struct['name']}}& value)
+  {
+    Json::Value resultJson = StoneSerializeToJson(value);
+    std::string resultStr = resultJson.toStyledString();
+    return resultStr;
+  }
+
+#ifdef _MSC_VER
+#pragma endregion {{struct['name']}}
+#endif //_MSC_VER
+{% endfor %}
+#ifdef _MSC_VER
+#pragma region Dispatching code
+#endif //_MSC_VER
+
+  class IHandler
+  {
+  public:
+{% for struct in structs%}{% if struct['__meta__'].handleInCpp %}    virtual bool Handle(const {{struct['name']}}& value) = 0;
+{% endif %}{% endfor %}  };
+
+  /** Service function for StoneDispatchToHandler */
+  inline bool StoneDispatchJsonToHandler(
+    const Json::Value& jsonValue, IHandler* handler)
+  {
+    StoneCheckSerializedValueTypeGeneric(jsonValue);
+    std::string type = jsonValue["type"].asString();
+    if (type == "")
+    {
+      // this should never ever happen
+      throw std::runtime_error("Caught empty type while dispatching");
+    }
+{% for struct in structs%}{% if struct['__meta__'].handleInCpp %}    else if (type == "{{rootName}}.{{struct['name']}}")
+    {
+      {{struct['name']}} value;
+      _StoneDeserializeValue(value, jsonValue["value"]);
+      return handler->Handle(value);
+    }
+{% endif %}{% endfor %}    else
+    {
+      return false;
+    }
+  }
+
+  /** Takes a serialized type and passes this to the handler */
+  inline bool StoneDispatchToHandler(std::string strValue, IHandler* handler)
+  {
+    Json::Value readValue;
+
+    Json::CharReaderBuilder builder;
+    Json::CharReader* reader = builder.newCharReader();
+
+    StoneSmartPtr<Json::CharReader> ptr(reader);
+
+    std::string errors;
+
+    bool ok = reader->parse(
+      strValue.c_str(),
+      strValue.c_str() + strValue.size(),
+      &readValue,
+      &errors
+    );
+    if (!ok)
+    {
+      std::stringstream ss;
+      ss << "Jsoncpp parsing error: " << errors;
+      throw std::runtime_error(ss.str());
+    }
+    return StoneDispatchJsonToHandler(readValue, handler);
+  }
+
+#ifdef _MSC_VER
+#pragma endregion Dispatching code
+#endif //_MSC_VER
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/template.in.ts.j2	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,136 @@
+/*
+         1         2         3         4         5         6         7
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
+
+Generated on {{currentDatetime}} by stonegentool
+
+*/
+
+function StoneCheckSerializedValueType(value: any, typeStr: string)
+{
+  StoneCheckSerializedValueTypeGeneric(value);
+
+  if (value['type'] != typeStr)
+  {
+    throw new Error(
+      `Cannot deserialize type ${value['type']} into ${typeStr}`);
+  }
+}
+
+function isString(val: any) :boolean
+{
+  return ((typeof val === 'string') || (val instanceof String));
+}
+
+function StoneCheckSerializedValueTypeGeneric(value: any)
+{
+  // console.//log("+-------------------------------------------------+");
+  // console.//log("|            StoneCheckSerializedValueTypeGeneric |");
+  // console.//log("+-------------------------------------------------+");
+  // console.//log("value = ");
+  // console.//log(value);
+  if ( (!('type' in value)) || (!isString(value.type)) )
+  {
+    throw new Error(
+      "Cannot deserialize value ('type' key invalid)");
+  }
+}
+
+// end of generic methods
+{% for enum in enums%}
+export enum {{enum['name']}} {
+{% for key in enum['fields']%}  {{key}} = "{{key}}"{% if not loop.last %},{%endif%}
+{%endfor%}};
+
+export function {{enum['name']}}_FromString(strValue:string) : {{enum['name']}}
+{
+{% for key in enum['fields'] %}  if( strValue == "{{key}}" )
+  {
+    return {{enum['name']}}.{{key}};
+  }
+{%endfor%}
+  let msg : string =  `String ${strValue} cannot be converted to {{enum['name']}}. Possible values are: {% for key in enum['fields']%}{{key}}{% if not loop.last %}, {%endif%}{% endfor %}`;
+  throw new Error(msg);
+}
+
+export function {{enum['name']}}_ToString(value:{{enum['name']}}) : string
+{
+{% for key in enum['fields'] %}  if( value == {{enum['name']}}.{{key}} )
+  {
+    return "{{key}}";
+  }
+{%endfor%}
+  let msg : string = `Value ${value} cannot be converted to {{enum['name']}}. Possible values are: `;
+{% for key in enum['fields']%}  {
+    let _{{key}}_enumValue : string = {{enum['name']}}.{{key}}; // enums are strings in stonecodegen, so this will work.
+    let msg_{{key}} : string = `{{key}} (${_{{key}}_enumValue}){% if not loop.last %}, {%endif%}`;
+    msg = msg + msg_{{key}};
+  }
+{%endfor%}  throw new Error(msg);
+}
+{%endfor%}
+
+
+{% for struct in structs%}export class {{struct['name']}} {
+{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}  {{key}}:{{CanonToTs(struct['fields'][key]['type'])}};
+{% endfor %}{% endif %}{% endif %}
+  constructor() {
+{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}{% if NeedsTsConstruction(enums,CanonToTs(struct['fields'][key]['type'])) %}    this.{{key}} = new {{CanonToTs(struct['fields'][key]['type'])}}();
+{% endif %}
+{% if struct['fields'][key]['defaultValue'] %}    this.{{key}} = {{DefaultValueToTs(enums,struct['fields'][key])}};
+{% endif %}{% endfor %}{% endif %}{% endif %}  }
+
+  public StoneSerialize(): string {
+    let container: object = {};
+    container['type'] = '{{rootName}}.{{struct['name']}}';
+    container['value'] = this;
+    return JSON.stringify(container);
+  }
+
+  public static StoneDeserialize(valueStr: string) : {{struct['name']}}
+  {
+    let value: any = JSON.parse(valueStr);
+    StoneCheckSerializedValueType(value, '{{rootName}}.{{struct['name']}}');
+    let result: {{struct['name']}} = value['value'] as {{struct['name']}};
+    return result;
+  }
+}
+{% endfor %}
+export interface IHandler {
+{% for struct in structs%}{% if struct['__meta__'].handleInTypescript %}  Handle{{struct['name']}}(value:  {{struct['name']}}): boolean;
+{% endif %}{% endfor %}};
+
+/** Service function for StoneDispatchToHandler */
+export function StoneDispatchJsonToHandler(
+  jsonValue: any, handler: IHandler): boolean
+{
+  StoneCheckSerializedValueTypeGeneric(jsonValue);
+  let type: string = jsonValue["type"];
+  if (type == "")
+  {
+    // this should never ever happen
+    throw new Error("Caught empty type while dispatching");
+  }
+{% for struct in structs%}{% if struct['__meta__'].handleInTypescript %}  else if (type == "{{rootName}}.{{struct['name']}}")
+  {
+    let value = jsonValue["value"] as {{struct['name']}};
+    return handler.Handle{{struct['name']}}(value);
+  }
+{% endif %}{% endfor %}  else
+  {
+    return false;
+  }
+}
+
+/** Takes a serialized type and passes this to the handler */
+export function StoneDispatchToHandler(
+  strValue: string, handler: IHandler): boolean
+{
+  // console.//log("+------------------------------------------------+");
+  // console.//log("|            StoneDispatchToHandler              |");
+  // console.//log("+------------------------------------------------+");
+  // console.//log("strValue = ");
+  // console.//log(strValue);
+  let jsonValue: any = JSON.parse(strValue)
+  return StoneDispatchJsonToHandler(jsonValue, handler);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,28 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(testCppHandler)
+
+set(testCppHandler_Codegen_Deps
+  ${CMAKE_CURRENT_LIST_DIR}/../test_data/testTestStoneCodeGen.yaml 
+  ${CMAKE_CURRENT_LIST_DIR}/../template.in.h.j2
+) 
+
+add_custom_command(
+    OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/VsolMessages_generated.hpp
+    COMMAND python ${CMAKE_CURRENT_LIST_DIR}/../stonegentool.py -o ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_LIST_DIR}/../test_data/testTestStoneCodeGen.yaml
+    DEPENDS ${testCppHandler_Codegen_Deps}
+)
+
+include(${CMAKE_BINARY_DIR}/conanbuildinfo_multi.cmake)
+conan_basic_setup()
+
+add_executable(testCppHandler main.cpp ${CMAKE_CURRENT_BINARY_DIR}/VsolMessages_generated.hpp ${testCppHandler_Codegen_Deps})
+
+target_include_directories(testCppHandler PUBLIC ${CMAKE_BINARY_DIR})
+
+conan_target_link_libraries(testCppHandler)
+
+set_property(TARGET testCppHandler PROPERTY CXX_STANDARD 17)
+
+install(TARGETS testCppHandler DESTINATION bin)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/README.md	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,34 @@
+Requirements
+==============
+- Install Python 3.x (tested with 3.7)
+- Install conan with `pip install conan` (tested with 1.12.2)
+- Install CMake (tested with 3.12)
+- Under Windows: Visual Studio 2017
+- Under *nix*: Ninja
+
+How to build under *nix*
+===============================
+- Navigate to `testCppHandler` folder
+- `conan install . -g cmake`
+- `mkdir build`
+- `cd build`
+- `cmake -G "Ninja" ..`
+- `cmake --build . --config Debug` or - `cmake --build . --config Release`
+
+How to build under Windows with Visual Studio
+==============================================
+- Navigate to repo root
+- `mkdir build`
+- `cd build`
+- `conan install .. -g cmake_multi -s build_type=Release`
+- `conan install .. -g cmake_multi -s build_type=Debug`
+- `cmake -G "Visual Studio 15 2017 Win64" ..`  (modify for your current Visual Studio version)
+- `cmake --build . --config Debug` or - `cmake --build . --config Release`
+
+How to execute the test
+=======================
+- `cd test_data && testCppHandler --pattern=*.json`
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/conanfile.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,4 @@
+[requires]
+jsoncpp/1.8.4@theirix/stable
+gtest/1.8.1@bincrafters/stable
+boost/1.69.0@conan/stable
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/main.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,160 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include <string>
+#include <fstream>
+#include <filesystem>
+#include <regex>
+using namespace std;
+namespace fs = std::filesystem;
+
+#include <boost/program_options.hpp>
+using namespace boost::program_options;
+
+#include "TestStoneCodeGen_generated.hpp"
+
+/**
+Transforms `str` by replacing occurrences of `oldStr` with `newStr`, using 
+plain text (*not* regular expressions.)
+*/
+static inline void ReplaceInString(
+  string& str,
+  const std::string& oldStr,
+  const std::string& newStr)
+{
+  std::string::size_type pos = 0u;
+  while ((pos = str.find(oldStr, pos)) != std::string::npos) {
+    str.replace(pos, oldStr.length(), newStr);
+    pos += newStr.length();
+  }
+}
+
+string SlurpFile(const string& fileName)
+{
+  ifstream ifs(fileName.c_str(), ios::in | ios::binary | ios::ate);
+
+  ifstream::pos_type fileSize = ifs.tellg();
+  ifs.seekg(0, ios::beg);
+
+  vector<char> bytes(fileSize);
+  ifs.read(bytes.data(), fileSize);
+
+  return string(bytes.data(), fileSize);
+}
+
+class MyHandler : public TestStoneCodeGen::IHandler
+{
+public:
+  virtual bool Handle(const TestStoneCodeGen::A& value) override
+  {
+    TestStoneCodeGen::StoneDumpValue(cout, value);
+    return true;
+  }
+  virtual bool Handle(const TestStoneCodeGen::B& value) override
+  {
+    TestStoneCodeGen::StoneDumpValue(cout, value);
+    return true;
+  }
+  virtual bool Handle(const TestStoneCodeGen::C& value) override
+  {
+    TestStoneCodeGen::StoneDumpValue(cout, value);
+    return true;
+  }
+  virtual bool Handle(const TestStoneCodeGen::Message1& value) override
+  {
+    TestStoneCodeGen::StoneDumpValue(cout, value);
+    return true;
+  }
+  virtual bool Handle(const TestStoneCodeGen::Message2& value) override
+  {
+    TestStoneCodeGen::StoneDumpValue(cout, value);
+    return true;
+  }
+};
+
+template<typename T>
+void ProcessPath(T filePath)
+{
+  cout << "+--------------------------------------------+\n";
+  cout << "| Processing: " << filePath.path().string() << "\n";
+  cout << "+--------------------------------------------+\n";
+  MyHandler handler;
+  auto contents = SlurpFile(filePath.path().string());
+  TestStoneCodeGen::StoneDispatchToHandler(contents, &handler);
+}
+
+int main(int argc, char** argv)
+{
+  try
+  {
+
+    options_description desc("Allowed options");
+    desc.add_options()
+      // First parameter describes option name/short name
+      // The second is parameter to option
+      // The third is description
+      ("help,h", "print usage message")
+      ("pattern,p", value<string>(), "pattern for input")
+      ;
+
+    variables_map vm;
+    store(parse_command_line(argc, argv, desc), vm);
+
+    if (vm.count("help"))
+    {
+      cout << desc << "\n";
+      return 0;
+    }
+
+    notify(vm);
+
+    string pattern = vm["pattern"].as<string>();
+
+    // tranform globbing pattern into regex
+    // we should deal with -, ., *...
+    string regexPatternStr = pattern;
+    cout << "Pattern is: " << regexPatternStr << endl;
+    ReplaceInString(regexPatternStr, "\\", "\\\\");
+    ReplaceInString(regexPatternStr, "-", "\\-");
+    ReplaceInString(regexPatternStr, ".", "\\.");
+    ReplaceInString(regexPatternStr, "*", ".*");
+    ReplaceInString(regexPatternStr, "?", ".");
+    cout << "Corresponding regex is: " << regexPatternStr << endl;
+
+    regex regexPattern(regexPatternStr);
+
+    for (auto& p : fs::directory_iterator("."))
+    {
+      auto fileName = p.path().filename().string();
+      if (regex_match(fileName, regexPattern))
+      {
+        ProcessPath(p);
+      }
+    }
+    return 0;
+
+
+  }
+  catch (exception& e)
+  {
+    cerr << e.what() << "\n";
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/test_data/test_Message2.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,47 @@
+{
+  "type": "TestStoneCodeGen.Message2",
+  "value": {
+    "memberVectorOfMessage1": [
+      {
+        "memberInt32": 42,
+        "memberString": "Benjamin",
+        "memberEnumMonth": "January",
+        "memberBool": false,
+        "memberFloat32": 0.1,
+        "memberFloat64": -0.2
+      },
+      {
+        "memberInt32": 43,
+        "memberString": "Sandrine",
+        "memberEnumMonth": "March"
+      }
+    ],
+    "memberVectorOfString": [
+      "Mercadet",
+      "Poisson"
+    ],
+    "memberMapStringString": {
+      "44": "key 44",
+      "45": "key 45"
+    },
+    "memberMapStringStruct": {
+      "54": {
+        "memberInt32": 43,
+        "memberString": "Sandrine",
+        "memberEnumMonth": "March"
+      },
+      "55": {
+        "memberInt32": 42,
+        "memberString": "Benjamin",
+        "memberEnumMonth": "January",
+        "memberBool": false
+      }
+    },
+    "memberString": "Prout zizi",
+    "memberMapEnumFloat" : {
+      "SaltAndPepper" : 0.1,
+      "CreamAndChives" : -0.2
+    },
+    "memberJson" : {"custom-key": "custom-value"}
+  }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,40 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(testWasmIntegratedCpp)
+
+set(WASM_FLAGS "-s WASM=1 -O0 -g0")
+set(WASM_MODULE_NAME "TestWasmIntegratedModule" CACHE STRING "Name of the WebAssembly module")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
+#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmWebService.js --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmDelayedCallExecutor.js --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/default-library.js  -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${CMAKE_CURRENT_LIST_DIR}/DefaultLibrary.js -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DISABLE_EXCEPTION_CATCHING=0 -s EXPORT_NAME='\"${WASM_MODULE_NAME}\"' -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=536870912 -s TOTAL_STACK=128000000")  # 512MB + resize
+
+add_definitions(-DORTHANC_ENABLE_WASM=1)
+
+set(testWasmIntegratedCpp_Codegen_Deps
+  ${CMAKE_CURRENT_LIST_DIR}/testWasmIntegratedCpp_api.yaml 
+  ${CMAKE_CURRENT_LIST_DIR}/../template.in.h.j2
+  ${CMAKE_CURRENT_LIST_DIR}/../template.in.ts.j2
+) 
+
+set(jsoncppRootDir ${CMAKE_CURRENT_LIST_DIR}/jsoncpp-1.8.4)
+
+add_custom_command(
+    OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/TestStoneCodeGen_generated.hpp ${CMAKE_CURRENT_BINARY_DIR}/TestStoneCodeGen_generated.ts
+    COMMAND python3 ${CMAKE_CURRENT_LIST_DIR}/../stonegentool.py -o ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_LIST_DIR}/../test_data/testTestStoneCodeGen.yaml
+    DEPENDS ${testCppHandler_Codegen_Deps} ${CMAKE_CURRENT_LIST_DIR}/../test_data/testTestStoneCodeGen.yaml 
+)
+
+add_executable(testWasmIntegratedCpp
+  main.cpp
+  ${CMAKE_CURRENT_BINARY_DIR}/TestStoneCodeGen_generated.hpp
+  ${jsoncppRootDir}/jsoncpp.cpp
+  ${testCppHandler_Codegen_Deps})
+
+target_include_directories(testWasmIntegratedCpp  PUBLIC ${CMAKE_BINARY_DIR})
+target_include_directories(testWasmIntegratedCpp  PUBLIC ${jsoncppRootDir})
+
+set_property(TARGET testWasmIntegratedCpp PROPERTY CXX_STANDARD 11)
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/DefaultLibrary.js	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,15 @@
+// this file contains the JS method you want to expose to C++ code
+
+mergeInto(LibraryManager.library, {
+  // each time the Application updates its status, it may signal it through this method. i.e, to change the status of a button in the web interface
+  // It needs to be put in this file so that the emscripten SDK linker knows where to find it.
+  SendFreeTextFromCppJS: function(statusUpdateMessage) {
+    var statusUpdateMessage_ = UTF8ToString(statusUpdateMessage);
+    window.SendFreeTextFromCpp(statusUpdateMessage_);
+  },
+  SendMessageFromCppJS: function(statusUpdateMessage) {
+    var statusUpdateMessage_ = UTF8ToString(statusUpdateMessage);
+    window.SendMessageFromCpp(statusUpdateMessage_);
+  }
+});
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/build-web.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -e
+
+mkdir -p build-final
+
+# compile TS to JS
+tsc --module commonjs --sourceMap -t ES2015 --outDir "build-tsc/" build-wasm/TestStoneCodeGen_generated.ts testWasmIntegrated.ts 
+
+# bundle JS files to final build dir 
+browserify "build-tsc/build-wasm/testWasmIntegratedCpp_generated.js" "build-tsc/testWasmIntegrated.js" -o "build-final/testWasmIntegratedApp.js"
+
+# copy WASM loader JS file to final build dir 
+cp build-wasm/testWasmIntegratedCpp.js build-final/
+
+# copy HTML start page to output dir
+cp testWasmIntegrated.html build-final/
+
+
+# copy styles to output dir
+cp styles.css build-final/
+
+# copy WASM binary to output dir
+cp build-wasm/testWasmIntegratedCpp.wasm  build-final/
+
+cp ../test_data/testTestStoneCodeGen.yaml build-final/
+cp ../testCppHandler/test_data/test_Message2.json build-final/cppHandler_test_Message2.json
+
+echo "...Serving files at http://127.0.0.1:8080/build-final/testWasmIntegrated.html"
+
+sudo python3 serve.py
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/build.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+set -e
+
+mkdir -p build-wasm
+cd build-wasm
+
+# shellcheck source="$HOME/apps/emsdk/emsdk_env.sh"
+source "$HOME/apps/emsdk/emsdk_env.sh"
+cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_WASM=ON ..
+
+ninja
+
+cd ..
+
+./build-web.sh
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/json/json-forwards.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,344 @@
+/// Json-cpp amalgamated forward header (http://jsoncpp.sourceforge.net/).
+/// It is intended to be used with #include "json/json-forwards.h"
+/// This header provides forward declaration for all JsonCpp types.
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+/*
+The JsonCpp library's source code, including accompanying documentation, 
+tests and demonstration applications, are licensed under the following
+conditions...
+
+Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all 
+jurisdictions which recognize such a disclaimer. In such jurisdictions, 
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
+The JsonCpp Authors, and is released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this 
+software may choose to accept it either as 1) Public Domain, 2) under the 
+conditions of the MIT License (see below), or 3) under the terms of dual 
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+   http://en.wikipedia.org/wiki/MIT_License
+   
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+(END LICENSE TEXT)
+
+The MIT license is compatible with both the GPL and commercial
+software, affording one all of the rights of Public Domain with the
+minor nuisance of being required to keep the above copyright notice
+and license text in the source code. Note also that by accepting the
+Public Domain "license" you can re-license your copy using whatever
+license you like.
+
+*/
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+#ifndef JSON_FORWARD_AMALGAMATED_H_INCLUDED
+# define JSON_FORWARD_AMALGAMATED_H_INCLUDED
+/// If defined, indicates that the source file is amalgamated
+/// to prevent private header inclusion.
+#define JSON_IS_AMALGAMATION
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/config.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_CONFIG_H_INCLUDED
+#define JSON_CONFIG_H_INCLUDED
+#include <cstddef>
+#include <cstdint>
+#include <istream>
+#include <memory>
+#include <ostream>
+#include <sstream>
+#include <string>
+#include <type_traits>
+
+/// If defined, indicates that json library is embedded in CppTL library.
+//# define JSON_IN_CPPTL 1
+
+/// If defined, indicates that json may leverage CppTL library
+//#  define JSON_USE_CPPTL 1
+/// If defined, indicates that cpptl vector based map should be used instead of
+/// std::map
+/// as Value container.
+//#  define JSON_USE_CPPTL_SMALLMAP 1
+
+// If non-zero, the library uses exceptions to report bad input instead of C
+// assertion macros. The default is to use exceptions.
+#ifndef JSON_USE_EXCEPTION
+#define JSON_USE_EXCEPTION 1
+#endif
+
+/// If defined, indicates that the source file is amalgamated
+/// to prevent private header inclusion.
+/// Remarks: it is automatically defined in the generated amalgamated header.
+// #define JSON_IS_AMALGAMATION
+
+#ifdef JSON_IN_CPPTL
+#include <cpptl/config.h>
+#ifndef JSON_USE_CPPTL
+#define JSON_USE_CPPTL 1
+#endif
+#endif
+
+#ifdef JSON_IN_CPPTL
+#define JSON_API CPPTL_API
+#elif defined(JSON_DLL_BUILD)
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#define JSON_API __declspec(dllexport)
+#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
+#endif // if defined(_MSC_VER)
+#elif defined(JSON_DLL)
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#define JSON_API __declspec(dllimport)
+#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
+#endif // if defined(_MSC_VER)
+#endif // ifdef JSON_IN_CPPTL
+#if !defined(JSON_API)
+#define JSON_API
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER < 1800
+#error                                                                         \
+    "ERROR:  Visual Studio 12 (2013) with _MSC_VER=1800 is the oldest supported compiler with sufficient C++11 capabilities"
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER < 1900
+// As recommended at
+// https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010
+extern JSON_API int
+msvc_pre1900_c99_snprintf(char* outBuf, size_t size, const char* format, ...);
+#define jsoncpp_snprintf msvc_pre1900_c99_snprintf
+#else
+#define jsoncpp_snprintf std::snprintf
+#endif
+
+// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
+// integer
+// Storages, and 64 bits integer support is disabled.
+// #define JSON_NO_INT64 1
+
+#if defined(_MSC_VER) // MSVC
+#define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
+#endif // defined(_MSC_VER)
+
+// JSONCPP_OVERRIDE is maintained for backwards compatibility of external tools.
+// C++11 should be used directly in JSONCPP.
+#define JSONCPP_OVERRIDE override
+
+#if __cplusplus >= 201103L
+#define JSONCPP_NOEXCEPT noexcept
+#define JSONCPP_OP_EXPLICIT explicit
+#elif defined(_MSC_VER) && _MSC_VER < 1900
+#define JSONCPP_NOEXCEPT throw()
+#define JSONCPP_OP_EXPLICIT explicit
+#elif defined(_MSC_VER) && _MSC_VER >= 1900
+#define JSONCPP_NOEXCEPT noexcept
+#define JSONCPP_OP_EXPLICIT explicit
+#else
+#define JSONCPP_NOEXCEPT throw()
+#define JSONCPP_OP_EXPLICIT
+#endif
+
+#ifndef JSON_HAS_RVALUE_REFERENCES
+
+#if defined(_MSC_VER)
+#define JSON_HAS_RVALUE_REFERENCES 1
+#endif // MSVC >= 2013
+
+#ifdef __clang__
+#if __has_feature(cxx_rvalue_references)
+#define JSON_HAS_RVALUE_REFERENCES 1
+#endif // has_feature
+
+#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
+#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
+#define JSON_HAS_RVALUE_REFERENCES 1
+#endif // GXX_EXPERIMENTAL
+
+#endif // __clang__ || __GNUC__
+
+#endif // not defined JSON_HAS_RVALUE_REFERENCES
+
+#ifndef JSON_HAS_RVALUE_REFERENCES
+#define JSON_HAS_RVALUE_REFERENCES 0
+#endif
+
+#ifdef __clang__
+#if __has_extension(attribute_deprecated_with_message)
+#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
+#endif
+#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
+#elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
+#define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
+#endif // GNUC version
+#endif // __clang__ || __GNUC__
+
+#if !defined(JSONCPP_DEPRECATED)
+#define JSONCPP_DEPRECATED(message)
+#endif // if !defined(JSONCPP_DEPRECATED)
+
+#if __GNUC__ >= 6
+#define JSON_USE_INT64_DOUBLE_CONVERSION 1
+#endif
+
+#if !defined(JSON_IS_AMALGAMATION)
+
+#include "allocator.h"
+#include "version.h"
+
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+typedef int Int;
+typedef unsigned int UInt;
+#if defined(JSON_NO_INT64)
+typedef int LargestInt;
+typedef unsigned int LargestUInt;
+#undef JSON_HAS_INT64
+#else                 // if defined(JSON_NO_INT64)
+// For Microsoft Visual use specific types as long long is not supported
+#if defined(_MSC_VER) // Microsoft Visual Studio
+typedef __int64 Int64;
+typedef unsigned __int64 UInt64;
+#else                 // if defined(_MSC_VER) // Other platforms, use long long
+typedef int64_t Int64;
+typedef uint64_t UInt64;
+#endif                // if defined(_MSC_VER)
+typedef Int64 LargestInt;
+typedef UInt64 LargestUInt;
+#define JSON_HAS_INT64
+#endif // if defined(JSON_NO_INT64)
+
+template <typename T>
+using Allocator = typename std::conditional<JSONCPP_USING_SECURE_MEMORY,
+                                            SecureAllocator<T>,
+                                            std::allocator<T>>::type;
+using String = std::basic_string<char, std::char_traits<char>, Allocator<char>>;
+using IStringStream = std::basic_istringstream<String::value_type,
+                                               String::traits_type,
+                                               String::allocator_type>;
+using OStringStream = std::basic_ostringstream<String::value_type,
+                                               String::traits_type,
+                                               String::allocator_type>;
+using IStream = std::istream;
+using OStream = std::ostream;
+} // namespace Json
+
+// Legacy names (formerly macros).
+using JSONCPP_STRING = Json::String;
+using JSONCPP_ISTRINGSTREAM = Json::IStringStream;
+using JSONCPP_OSTRINGSTREAM = Json::OStringStream;
+using JSONCPP_ISTREAM = Json::IStream;
+using JSONCPP_OSTREAM = Json::OStream;
+
+#endif // JSON_CONFIG_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/config.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/forwards.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_FORWARDS_H_INCLUDED
+#define JSON_FORWARDS_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "config.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+
+// writer.h
+class FastWriter;
+class StyledWriter;
+
+// reader.h
+class Reader;
+
+// features.h
+class Features;
+
+// value.h
+typedef unsigned int ArrayIndex;
+class StaticString;
+class Path;
+class PathArgument;
+class Value;
+class ValueIteratorBase;
+class ValueIterator;
+class ValueConstIterator;
+
+} // namespace Json
+
+#endif // JSON_FORWARDS_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/forwards.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+#endif //ifndef JSON_FORWARD_AMALGAMATED_H_INCLUDED
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/json/json.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,2366 @@
+/// Json-cpp amalgamated header (http://jsoncpp.sourceforge.net/).
+/// It is intended to be used with #include "json/json.h"
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+/*
+The JsonCpp library's source code, including accompanying documentation, 
+tests and demonstration applications, are licensed under the following
+conditions...
+
+Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all 
+jurisdictions which recognize such a disclaimer. In such jurisdictions, 
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
+The JsonCpp Authors, and is released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this 
+software may choose to accept it either as 1) Public Domain, 2) under the 
+conditions of the MIT License (see below), or 3) under the terms of dual 
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+   http://en.wikipedia.org/wiki/MIT_License
+   
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+(END LICENSE TEXT)
+
+The MIT license is compatible with both the GPL and commercial
+software, affording one all of the rights of Public Domain with the
+minor nuisance of being required to keep the above copyright notice
+and license text in the source code. Note also that by accepting the
+Public Domain "license" you can re-license your copy using whatever
+license you like.
+
+*/
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+#ifndef JSON_AMALGAMATED_H_INCLUDED
+# define JSON_AMALGAMATED_H_INCLUDED
+/// If defined, indicates that the source file is amalgamated
+/// to prevent private header inclusion.
+#define JSON_IS_AMALGAMATION
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/version.h
+// //////////////////////////////////////////////////////////////////////
+
+// DO NOT EDIT. This file (and "version") is generated by CMake.
+// Run CMake configure step to update it.
+#ifndef JSON_VERSION_H_INCLUDED
+#define JSON_VERSION_H_INCLUDED
+
+#define JSONCPP_VERSION_STRING "1.8.4"
+#define JSONCPP_VERSION_MAJOR 1
+#define JSONCPP_VERSION_MINOR 8
+#define JSONCPP_VERSION_PATCH 4
+#define JSONCPP_VERSION_QUALIFIER
+#define JSONCPP_VERSION_HEXA                                                   \
+  ((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) |             \
+   (JSONCPP_VERSION_PATCH << 8))
+
+#ifdef JSONCPP_USING_SECURE_MEMORY
+#undef JSONCPP_USING_SECURE_MEMORY
+#endif
+#define JSONCPP_USING_SECURE_MEMORY 0
+// If non-zero, the library zeroes any memory that it has allocated before
+// it frees its memory.
+
+#endif // JSON_VERSION_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/version.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/allocator.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef CPPTL_JSON_ALLOCATOR_H_INCLUDED
+#define CPPTL_JSON_ALLOCATOR_H_INCLUDED
+
+#include <cstring>
+#include <memory>
+
+#pragma pack(push, 8)
+
+namespace Json {
+template <typename T> class SecureAllocator {
+public:
+  // Type definitions
+  using value_type = T;
+  using pointer = T*;
+  using const_pointer = const T*;
+  using reference = T&;
+  using const_reference = const T&;
+  using size_type = std::size_t;
+  using difference_type = std::ptrdiff_t;
+
+  /**
+   * Allocate memory for N items using the standard allocator.
+   */
+  pointer allocate(size_type n) {
+    // allocate using "global operator new"
+    return static_cast<pointer>(::operator new(n * sizeof(T)));
+  }
+
+  /**
+   * Release memory which was allocated for N items at pointer P.
+   *
+   * The memory block is filled with zeroes before being released.
+   * The pointer argument is tagged as "volatile" to prevent the
+   * compiler optimizing out this critical step.
+   */
+  void deallocate(volatile pointer p, size_type n) {
+    std::memset(p, 0, n * sizeof(T));
+    // free using "global operator delete"
+    ::operator delete(p);
+  }
+
+  /**
+   * Construct an item in-place at pointer P.
+   */
+  template <typename... Args> void construct(pointer p, Args&&... args) {
+    // construct using "placement new" and "perfect forwarding"
+    ::new (static_cast<void*>(p)) T(std::forward<Args>(args)...);
+  }
+
+  size_type max_size() const { return size_t(-1) / sizeof(T); }
+
+  pointer address(reference x) const { return std::addressof(x); }
+
+  const_pointer address(const_reference x) const { return std::addressof(x); }
+
+  /**
+   * Destroy an item in-place at pointer P.
+   */
+  void destroy(pointer p) {
+    // destroy using "explicit destructor"
+    p->~T();
+  }
+
+  // Boilerplate
+  SecureAllocator() {}
+  template <typename U> SecureAllocator(const SecureAllocator<U>&) {}
+  template <typename U> struct rebind { using other = SecureAllocator<U>; };
+};
+
+template <typename T, typename U>
+bool operator==(const SecureAllocator<T>&, const SecureAllocator<U>&) {
+  return true;
+}
+
+template <typename T, typename U>
+bool operator!=(const SecureAllocator<T>&, const SecureAllocator<U>&) {
+  return false;
+}
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#endif // CPPTL_JSON_ALLOCATOR_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/allocator.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/config.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_CONFIG_H_INCLUDED
+#define JSON_CONFIG_H_INCLUDED
+#include <cstddef>
+#include <cstdint>
+#include <istream>
+#include <memory>
+#include <ostream>
+#include <sstream>
+#include <string>
+#include <type_traits>
+
+/// If defined, indicates that json library is embedded in CppTL library.
+//# define JSON_IN_CPPTL 1
+
+/// If defined, indicates that json may leverage CppTL library
+//#  define JSON_USE_CPPTL 1
+/// If defined, indicates that cpptl vector based map should be used instead of
+/// std::map
+/// as Value container.
+//#  define JSON_USE_CPPTL_SMALLMAP 1
+
+// If non-zero, the library uses exceptions to report bad input instead of C
+// assertion macros. The default is to use exceptions.
+#ifndef JSON_USE_EXCEPTION
+#define JSON_USE_EXCEPTION 1
+#endif
+
+/// If defined, indicates that the source file is amalgamated
+/// to prevent private header inclusion.
+/// Remarks: it is automatically defined in the generated amalgamated header.
+// #define JSON_IS_AMALGAMATION
+
+#ifdef JSON_IN_CPPTL
+#include <cpptl/config.h>
+#ifndef JSON_USE_CPPTL
+#define JSON_USE_CPPTL 1
+#endif
+#endif
+
+#ifdef JSON_IN_CPPTL
+#define JSON_API CPPTL_API
+#elif defined(JSON_DLL_BUILD)
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#define JSON_API __declspec(dllexport)
+#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
+#endif // if defined(_MSC_VER)
+#elif defined(JSON_DLL)
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#define JSON_API __declspec(dllimport)
+#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
+#endif // if defined(_MSC_VER)
+#endif // ifdef JSON_IN_CPPTL
+#if !defined(JSON_API)
+#define JSON_API
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER < 1800
+#error                                                                         \
+    "ERROR:  Visual Studio 12 (2013) with _MSC_VER=1800 is the oldest supported compiler with sufficient C++11 capabilities"
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER < 1900
+// As recommended at
+// https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010
+extern JSON_API int
+msvc_pre1900_c99_snprintf(char* outBuf, size_t size, const char* format, ...);
+#define jsoncpp_snprintf msvc_pre1900_c99_snprintf
+#else
+#define jsoncpp_snprintf std::snprintf
+#endif
+
+// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
+// integer
+// Storages, and 64 bits integer support is disabled.
+// #define JSON_NO_INT64 1
+
+#if defined(_MSC_VER) // MSVC
+#define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
+#endif // defined(_MSC_VER)
+
+// JSONCPP_OVERRIDE is maintained for backwards compatibility of external tools.
+// C++11 should be used directly in JSONCPP.
+#define JSONCPP_OVERRIDE override
+
+#if __cplusplus >= 201103L
+#define JSONCPP_NOEXCEPT noexcept
+#define JSONCPP_OP_EXPLICIT explicit
+#elif defined(_MSC_VER) && _MSC_VER < 1900
+#define JSONCPP_NOEXCEPT throw()
+#define JSONCPP_OP_EXPLICIT explicit
+#elif defined(_MSC_VER) && _MSC_VER >= 1900
+#define JSONCPP_NOEXCEPT noexcept
+#define JSONCPP_OP_EXPLICIT explicit
+#else
+#define JSONCPP_NOEXCEPT throw()
+#define JSONCPP_OP_EXPLICIT
+#endif
+
+#ifndef JSON_HAS_RVALUE_REFERENCES
+
+#if defined(_MSC_VER)
+#define JSON_HAS_RVALUE_REFERENCES 1
+#endif // MSVC >= 2013
+
+#ifdef __clang__
+#if __has_feature(cxx_rvalue_references)
+#define JSON_HAS_RVALUE_REFERENCES 1
+#endif // has_feature
+
+#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
+#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
+#define JSON_HAS_RVALUE_REFERENCES 1
+#endif // GXX_EXPERIMENTAL
+
+#endif // __clang__ || __GNUC__
+
+#endif // not defined JSON_HAS_RVALUE_REFERENCES
+
+#ifndef JSON_HAS_RVALUE_REFERENCES
+#define JSON_HAS_RVALUE_REFERENCES 0
+#endif
+
+#ifdef __clang__
+#if __has_extension(attribute_deprecated_with_message)
+#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
+#endif
+#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
+#elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
+#define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
+#endif // GNUC version
+#endif // __clang__ || __GNUC__
+
+#if !defined(JSONCPP_DEPRECATED)
+#define JSONCPP_DEPRECATED(message)
+#endif // if !defined(JSONCPP_DEPRECATED)
+
+#if __GNUC__ >= 6
+#define JSON_USE_INT64_DOUBLE_CONVERSION 1
+#endif
+
+#if !defined(JSON_IS_AMALGAMATION)
+
+#include "allocator.h"
+#include "version.h"
+
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+typedef int Int;
+typedef unsigned int UInt;
+#if defined(JSON_NO_INT64)
+typedef int LargestInt;
+typedef unsigned int LargestUInt;
+#undef JSON_HAS_INT64
+#else                 // if defined(JSON_NO_INT64)
+// For Microsoft Visual use specific types as long long is not supported
+#if defined(_MSC_VER) // Microsoft Visual Studio
+typedef __int64 Int64;
+typedef unsigned __int64 UInt64;
+#else                 // if defined(_MSC_VER) // Other platforms, use long long
+typedef int64_t Int64;
+typedef uint64_t UInt64;
+#endif                // if defined(_MSC_VER)
+typedef Int64 LargestInt;
+typedef UInt64 LargestUInt;
+#define JSON_HAS_INT64
+#endif // if defined(JSON_NO_INT64)
+
+template <typename T>
+using Allocator = typename std::conditional<JSONCPP_USING_SECURE_MEMORY,
+                                            SecureAllocator<T>,
+                                            std::allocator<T>>::type;
+using String = std::basic_string<char, std::char_traits<char>, Allocator<char>>;
+using IStringStream = std::basic_istringstream<String::value_type,
+                                               String::traits_type,
+                                               String::allocator_type>;
+using OStringStream = std::basic_ostringstream<String::value_type,
+                                               String::traits_type,
+                                               String::allocator_type>;
+using IStream = std::istream;
+using OStream = std::ostream;
+} // namespace Json
+
+// Legacy names (formerly macros).
+using JSONCPP_STRING = Json::String;
+using JSONCPP_ISTRINGSTREAM = Json::IStringStream;
+using JSONCPP_OSTRINGSTREAM = Json::OStringStream;
+using JSONCPP_ISTREAM = Json::IStream;
+using JSONCPP_OSTREAM = Json::OStream;
+
+#endif // JSON_CONFIG_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/config.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/forwards.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_FORWARDS_H_INCLUDED
+#define JSON_FORWARDS_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "config.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+
+// writer.h
+class FastWriter;
+class StyledWriter;
+
+// reader.h
+class Reader;
+
+// features.h
+class Features;
+
+// value.h
+typedef unsigned int ArrayIndex;
+class StaticString;
+class Path;
+class PathArgument;
+class Value;
+class ValueIteratorBase;
+class ValueIterator;
+class ValueConstIterator;
+
+} // namespace Json
+
+#endif // JSON_FORWARDS_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/forwards.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/features.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef CPPTL_JSON_FEATURES_H_INCLUDED
+#define CPPTL_JSON_FEATURES_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "forwards.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+#pragma pack(push, 8)
+
+namespace Json {
+
+/** \brief Configuration passed to reader and writer.
+ * This configuration object can be used to force the Reader or Writer
+ * to behave in a standard conforming way.
+ */
+class JSON_API Features {
+public:
+  /** \brief A configuration that allows all features and assumes all strings
+   * are UTF-8.
+   * - C & C++ comments are allowed
+   * - Root object can be any JSON value
+   * - Assumes Value strings are encoded in UTF-8
+   */
+  static Features all();
+
+  /** \brief A configuration that is strictly compatible with the JSON
+   * specification.
+   * - Comments are forbidden.
+   * - Root object must be either an array or an object value.
+   * - Assumes Value strings are encoded in UTF-8
+   */
+  static Features strictMode();
+
+  /** \brief Initialize the configuration like JsonConfig::allFeatures;
+   */
+  Features();
+
+  /// \c true if comments are allowed. Default: \c true.
+  bool allowComments_{true};
+
+  /// \c true if root must be either an array or an object value. Default: \c
+  /// false.
+  bool strictRoot_{false};
+
+  /// \c true if dropped null placeholders are allowed. Default: \c false.
+  bool allowDroppedNullPlaceholders_{false};
+
+  /// \c true if numeric object key are allowed. Default: \c false.
+  bool allowNumericKeys_{false};
+};
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#endif // CPPTL_JSON_FEATURES_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/features.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/value.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef CPPTL_JSON_H_INCLUDED
+#define CPPTL_JSON_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "forwards.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <exception>
+#include <string>
+#include <vector>
+
+#ifndef JSON_USE_CPPTL_SMALLMAP
+#include <map>
+#else
+#include <cpptl/smallmap.h>
+#endif
+#ifdef JSON_USE_CPPTL
+#include <cpptl/forwards.h>
+#endif
+
+// Conditional NORETURN attribute on the throw functions would:
+// a) suppress false positives from static code analysis
+// b) possibly improve optimization opportunities.
+#if !defined(JSONCPP_NORETURN)
+#if defined(_MSC_VER)
+#define JSONCPP_NORETURN __declspec(noreturn)
+#elif defined(__GNUC__)
+#define JSONCPP_NORETURN __attribute__((__noreturn__))
+#else
+#define JSONCPP_NORETURN
+#endif
+#endif
+
+// Disable warning C4251: <data member>: <type> needs to have dll-interface to
+// be used by...
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+#pragma warning(push)
+#pragma warning(disable : 4251)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#pragma pack(push, 8)
+
+/** \brief JSON (JavaScript Object Notation).
+ */
+namespace Json {
+
+/** Base class for all exceptions we throw.
+ *
+ * We use nothing but these internally. Of course, STL can throw others.
+ */
+class JSON_API Exception : public std::exception {
+public:
+  Exception(String msg);
+  ~Exception() JSONCPP_NOEXCEPT override;
+  char const* what() const JSONCPP_NOEXCEPT override;
+
+protected:
+  String msg_;
+};
+
+/** Exceptions which the user cannot easily avoid.
+ *
+ * E.g. out-of-memory (when we use malloc), stack-overflow, malicious input
+ *
+ * \remark derived from Json::Exception
+ */
+class JSON_API RuntimeError : public Exception {
+public:
+  RuntimeError(String const& msg);
+};
+
+/** Exceptions thrown by JSON_ASSERT/JSON_FAIL macros.
+ *
+ * These are precondition-violations (user bugs) and internal errors (our bugs).
+ *
+ * \remark derived from Json::Exception
+ */
+class JSON_API LogicError : public Exception {
+public:
+  LogicError(String const& msg);
+};
+
+/// used internally
+JSONCPP_NORETURN void throwRuntimeError(String const& msg);
+/// used internally
+JSONCPP_NORETURN void throwLogicError(String const& msg);
+
+/** \brief Type of the value held by a Value object.
+ */
+enum ValueType {
+  nullValue = 0, ///< 'null' value
+  intValue,      ///< signed integer value
+  uintValue,     ///< unsigned integer value
+  realValue,     ///< double value
+  stringValue,   ///< UTF-8 string value
+  booleanValue,  ///< bool value
+  arrayValue,    ///< array value (ordered list)
+  objectValue    ///< object value (collection of name/value pairs).
+};
+
+enum CommentPlacement {
+  commentBefore = 0,      ///< a comment placed on the line before a value
+  commentAfterOnSameLine, ///< a comment just after a value on the same line
+  commentAfter, ///< a comment on the line after a value (only make sense for
+  /// root value)
+  numberOfCommentPlacement
+};
+
+/** \brief Type of precision for formatting of real values.
+ */
+enum PrecisionType {
+  significantDigits = 0, ///< we set max number of significant digits in string
+  decimalPlaces          ///< we set max number of digits after "." in string
+};
+
+//# ifdef JSON_USE_CPPTL
+//   typedef CppTL::AnyEnumerator<const char *> EnumMemberNames;
+//   typedef CppTL::AnyEnumerator<const Value &> EnumValues;
+//# endif
+
+/** \brief Lightweight wrapper to tag static string.
+ *
+ * Value constructor and objectValue member assignment takes advantage of the
+ * StaticString and avoid the cost of string duplication when storing the
+ * string or the member name.
+ *
+ * Example of usage:
+ * \code
+ * Json::Value aValue( StaticString("some text") );
+ * Json::Value object;
+ * static const StaticString code("code");
+ * object[code] = 1234;
+ * \endcode
+ */
+class JSON_API StaticString {
+public:
+  explicit StaticString(const char* czstring) : c_str_(czstring) {}
+
+  operator const char*() const { return c_str_; }
+
+  const char* c_str() const { return c_str_; }
+
+private:
+  const char* c_str_;
+};
+
+/** \brief Represents a <a HREF="http://www.json.org">JSON</a> value.
+ *
+ * This class is a discriminated union wrapper that can represents a:
+ * - signed integer [range: Value::minInt - Value::maxInt]
+ * - unsigned integer (range: 0 - Value::maxUInt)
+ * - double
+ * - UTF-8 string
+ * - boolean
+ * - 'null'
+ * - an ordered list of Value
+ * - collection of name/value pairs (javascript object)
+ *
+ * The type of the held value is represented by a #ValueType and
+ * can be obtained using type().
+ *
+ * Values of an #objectValue or #arrayValue can be accessed using operator[]()
+ * methods.
+ * Non-const methods will automatically create the a #nullValue element
+ * if it does not exist.
+ * The sequence of an #arrayValue will be automatically resized and initialized
+ * with #nullValue. resize() can be used to enlarge or truncate an #arrayValue.
+ *
+ * The get() methods can be used to obtain default value in the case the
+ * required element does not exist.
+ *
+ * It is possible to iterate over the list of member keys of an object using
+ * the getMemberNames() method.
+ *
+ * \note #Value string-length fit in size_t, but keys must be < 2^30.
+ * (The reason is an implementation detail.) A #CharReader will raise an
+ * exception if a bound is exceeded to avoid security holes in your app,
+ * but the Value API does *not* check bounds. That is the responsibility
+ * of the caller.
+ */
+class JSON_API Value {
+  friend class ValueIteratorBase;
+
+public:
+  typedef std::vector<String> Members;
+  typedef ValueIterator iterator;
+  typedef ValueConstIterator const_iterator;
+  typedef Json::UInt UInt;
+  typedef Json::Int Int;
+#if defined(JSON_HAS_INT64)
+  typedef Json::UInt64 UInt64;
+  typedef Json::Int64 Int64;
+#endif // defined(JSON_HAS_INT64)
+  typedef Json::LargestInt LargestInt;
+  typedef Json::LargestUInt LargestUInt;
+  typedef Json::ArrayIndex ArrayIndex;
+
+  // Required for boost integration, e. g. BOOST_TEST
+  typedef std::string value_type;
+
+  static const Value& null; ///< We regret this reference to a global instance;
+                            ///< prefer the simpler Value().
+  static const Value& nullRef; ///< just a kludge for binary-compatibility; same
+                               ///< as null
+  static Value const& nullSingleton(); ///< Prefer this to null or nullRef.
+
+  /// Minimum signed integer value that can be stored in a Json::Value.
+  static const LargestInt minLargestInt;
+  /// Maximum signed integer value that can be stored in a Json::Value.
+  static const LargestInt maxLargestInt;
+  /// Maximum unsigned integer value that can be stored in a Json::Value.
+  static const LargestUInt maxLargestUInt;
+
+  /// Minimum signed int value that can be stored in a Json::Value.
+  static const Int minInt;
+  /// Maximum signed int value that can be stored in a Json::Value.
+  static const Int maxInt;
+  /// Maximum unsigned int value that can be stored in a Json::Value.
+  static const UInt maxUInt;
+
+#if defined(JSON_HAS_INT64)
+  /// Minimum signed 64 bits int value that can be stored in a Json::Value.
+  static const Int64 minInt64;
+  /// Maximum signed 64 bits int value that can be stored in a Json::Value.
+  static const Int64 maxInt64;
+  /// Maximum unsigned 64 bits int value that can be stored in a Json::Value.
+  static const UInt64 maxUInt64;
+#endif // defined(JSON_HAS_INT64)
+
+  /// Default precision for real value for string representation.
+  static const UInt defaultRealPrecision;
+
+// Workaround for bug in the NVIDIAs CUDA 9.1 nvcc compiler
+// when using gcc and clang backend compilers.  CZString
+// cannot be defined as private.  See issue #486
+#ifdef __NVCC__
+public:
+#else
+private:
+#endif
+#ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
+  class CZString {
+  public:
+    enum DuplicationPolicy { noDuplication = 0, duplicate, duplicateOnCopy };
+    CZString(ArrayIndex index);
+    CZString(char const* str, unsigned length, DuplicationPolicy allocate);
+    CZString(CZString const& other);
+#if JSON_HAS_RVALUE_REFERENCES
+    CZString(CZString&& other);
+#endif
+    ~CZString();
+    CZString& operator=(const CZString& other);
+
+#if JSON_HAS_RVALUE_REFERENCES
+    CZString& operator=(CZString&& other);
+#endif
+
+    bool operator<(CZString const& other) const;
+    bool operator==(CZString const& other) const;
+    ArrayIndex index() const;
+    // const char* c_str() const; ///< \deprecated
+    char const* data() const;
+    unsigned length() const;
+    bool isStaticString() const;
+
+  private:
+    void swap(CZString& other);
+
+    struct StringStorage {
+      unsigned policy_ : 2;
+      unsigned length_ : 30; // 1GB max
+    };
+
+    char const* cstr_; // actually, a prefixed string, unless policy is noDup
+    union {
+      ArrayIndex index_;
+      StringStorage storage_;
+    };
+  };
+
+public:
+#ifndef JSON_USE_CPPTL_SMALLMAP
+  typedef std::map<CZString, Value> ObjectValues;
+#else
+  typedef CppTL::SmallMap<CZString, Value> ObjectValues;
+#endif // ifndef JSON_USE_CPPTL_SMALLMAP
+#endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
+
+public:
+  /** \brief Create a default Value of the given type.
+
+    This is a very useful constructor.
+    To create an empty array, pass arrayValue.
+    To create an empty object, pass objectValue.
+    Another Value can then be set to this one by assignment.
+This is useful since clear() and resize() will not alter types.
+
+    Examples:
+\code
+Json::Value null_value; // null
+Json::Value arr_value(Json::arrayValue); // []
+Json::Value obj_value(Json::objectValue); // {}
+\endcode
+  */
+  Value(ValueType type = nullValue);
+  Value(Int value);
+  Value(UInt value);
+#if defined(JSON_HAS_INT64)
+  Value(Int64 value);
+  Value(UInt64 value);
+#endif // if defined(JSON_HAS_INT64)
+  Value(double value);
+  Value(const char* value); ///< Copy til first 0. (NULL causes to seg-fault.)
+  Value(const char* begin, const char* end); ///< Copy all, incl zeroes.
+  /** \brief Constructs a value from a static string.
+
+   * Like other value string constructor but do not duplicate the string for
+   * internal storage. The given string must remain alive after the call to this
+   * constructor.
+   * \note This works only for null-terminated strings. (We cannot change the
+   *   size of this class, so we have nowhere to store the length,
+   *   which might be computed later for various operations.)
+   *
+   * Example of usage:
+   * \code
+   * static StaticString foo("some text");
+   * Json::Value aValue(foo);
+   * \endcode
+   */
+  Value(const StaticString& value);
+  Value(const String& value); ///< Copy data() til size(). Embedded
+                              ///< zeroes too.
+#ifdef JSON_USE_CPPTL
+  Value(const CppTL::ConstString& value);
+#endif
+  Value(bool value);
+  Value(const Value& other);
+  Value(Value&& other);
+  ~Value();
+
+  /// \note Overwrite existing comments. To preserve comments, use
+  /// #swapPayload().
+  Value& operator=(const Value& other);
+  Value& operator=(Value&& other);
+
+  /// Swap everything.
+  void swap(Value& other);
+  /// Swap values but leave comments and source offsets in place.
+  void swapPayload(Value& other);
+
+  /// copy everything.
+  void copy(const Value& other);
+  /// copy values but leave comments and source offsets in place.
+  void copyPayload(const Value& other);
+
+  ValueType type() const;
+
+  /// Compare payload only, not comments etc.
+  bool operator<(const Value& other) const;
+  bool operator<=(const Value& other) const;
+  bool operator>=(const Value& other) const;
+  bool operator>(const Value& other) const;
+  bool operator==(const Value& other) const;
+  bool operator!=(const Value& other) const;
+  int compare(const Value& other) const;
+
+  const char* asCString() const; ///< Embedded zeroes could cause you trouble!
+#if JSONCPP_USING_SECURE_MEMORY
+  unsigned getCStringLength() const; // Allows you to understand the length of
+                                     // the CString
+#endif
+  String asString() const; ///< Embedded zeroes are possible.
+  /** Get raw char* of string-value.
+   *  \return false if !string. (Seg-fault if str or end are NULL.)
+   */
+  bool getString(char const** begin, char const** end) const;
+#ifdef JSON_USE_CPPTL
+  CppTL::ConstString asConstString() const;
+#endif
+  Int asInt() const;
+  UInt asUInt() const;
+#if defined(JSON_HAS_INT64)
+  Int64 asInt64() const;
+  UInt64 asUInt64() const;
+#endif // if defined(JSON_HAS_INT64)
+  LargestInt asLargestInt() const;
+  LargestUInt asLargestUInt() const;
+  float asFloat() const;
+  double asDouble() const;
+  bool asBool() const;
+
+  bool isNull() const;
+  bool isBool() const;
+  bool isInt() const;
+  bool isInt64() const;
+  bool isUInt() const;
+  bool isUInt64() const;
+  bool isIntegral() const;
+  bool isDouble() const;
+  bool isNumeric() const;
+  bool isString() const;
+  bool isArray() const;
+  bool isObject() const;
+
+  bool isConvertibleTo(ValueType other) const;
+
+  /// Number of values in array or object
+  ArrayIndex size() const;
+
+  /// \brief Return true if empty array, empty object, or null;
+  /// otherwise, false.
+  bool empty() const;
+
+  /// Return !isNull()
+  JSONCPP_OP_EXPLICIT operator bool() const;
+
+  /// Remove all object members and array elements.
+  /// \pre type() is arrayValue, objectValue, or nullValue
+  /// \post type() is unchanged
+  void clear();
+
+  /// Resize the array to newSize elements.
+  /// New elements are initialized to null.
+  /// May only be called on nullValue or arrayValue.
+  /// \pre type() is arrayValue or nullValue
+  /// \post type() is arrayValue
+  void resize(ArrayIndex newSize);
+
+  /// Access an array element (zero based index ).
+  /// If the array contains less than index element, then null value are
+  /// inserted
+  /// in the array so that its size is index+1.
+  /// (You may need to say 'value[0u]' to get your compiler to distinguish
+  ///  this from the operator[] which takes a string.)
+  Value& operator[](ArrayIndex index);
+
+  /// Access an array element (zero based index ).
+  /// If the array contains less than index element, then null value are
+  /// inserted
+  /// in the array so that its size is index+1.
+  /// (You may need to say 'value[0u]' to get your compiler to distinguish
+  ///  this from the operator[] which takes a string.)
+  Value& operator[](int index);
+
+  /// Access an array element (zero based index )
+  /// (You may need to say 'value[0u]' to get your compiler to distinguish
+  ///  this from the operator[] which takes a string.)
+  const Value& operator[](ArrayIndex index) const;
+
+  /// Access an array element (zero based index )
+  /// (You may need to say 'value[0u]' to get your compiler to distinguish
+  ///  this from the operator[] which takes a string.)
+  const Value& operator[](int index) const;
+
+  /// If the array contains at least index+1 elements, returns the element
+  /// value,
+  /// otherwise returns defaultValue.
+  Value get(ArrayIndex index, const Value& defaultValue) const;
+  /// Return true if index < size().
+  bool isValidIndex(ArrayIndex index) const;
+  /// \brief Append value to array at the end.
+  ///
+  /// Equivalent to jsonvalue[jsonvalue.size()] = value;
+  Value& append(const Value& value);
+
+#if JSON_HAS_RVALUE_REFERENCES
+  Value& append(Value&& value);
+#endif
+
+  /// Access an object value by name, create a null member if it does not exist.
+  /// \note Because of our implementation, keys are limited to 2^30 -1 chars.
+  ///  Exceeding that will cause an exception.
+  Value& operator[](const char* key);
+  /// Access an object value by name, returns null if there is no member with
+  /// that name.
+  const Value& operator[](const char* key) const;
+  /// Access an object value by name, create a null member if it does not exist.
+  /// \param key may contain embedded nulls.
+  Value& operator[](const String& key);
+  /// Access an object value by name, returns null if there is no member with
+  /// that name.
+  /// \param key may contain embedded nulls.
+  const Value& operator[](const String& key) const;
+  /** \brief Access an object value by name, create a null member if it does not
+   exist.
+
+   * If the object has no entry for that name, then the member name used to
+   store
+   * the new entry is not duplicated.
+   * Example of use:
+   * \code
+   * Json::Value object;
+   * static const StaticString code("code");
+   * object[code] = 1234;
+   * \endcode
+   */
+  Value& operator[](const StaticString& key);
+#ifdef JSON_USE_CPPTL
+  /// Access an object value by name, create a null member if it does not exist.
+  Value& operator[](const CppTL::ConstString& key);
+  /// Access an object value by name, returns null if there is no member with
+  /// that name.
+  const Value& operator[](const CppTL::ConstString& key) const;
+#endif
+  /// Return the member named key if it exist, defaultValue otherwise.
+  /// \note deep copy
+  Value get(const char* key, const Value& defaultValue) const;
+  /// Return the member named key if it exist, defaultValue otherwise.
+  /// \note deep copy
+  /// \note key may contain embedded nulls.
+  Value
+  get(const char* begin, const char* end, const Value& defaultValue) const;
+  /// Return the member named key if it exist, defaultValue otherwise.
+  /// \note deep copy
+  /// \param key may contain embedded nulls.
+  Value get(const String& key, const Value& defaultValue) const;
+#ifdef JSON_USE_CPPTL
+  /// Return the member named key if it exist, defaultValue otherwise.
+  /// \note deep copy
+  Value get(const CppTL::ConstString& key, const Value& defaultValue) const;
+#endif
+  /// Most general and efficient version of isMember()const, get()const,
+  /// and operator[]const
+  /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30
+  Value const* find(char const* begin, char const* end) const;
+  /// Most general and efficient version of object-mutators.
+  /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30
+  /// \return non-zero, but JSON_ASSERT if this is neither object nor nullValue.
+  Value const* demand(char const* begin, char const* end);
+  /// \brief Remove and return the named member.
+  ///
+  /// Do nothing if it did not exist.
+  /// \pre type() is objectValue or nullValue
+  /// \post type() is unchanged
+  void removeMember(const char* key);
+  /// Same as removeMember(const char*)
+  /// \param key may contain embedded nulls.
+  void removeMember(const String& key);
+  /// Same as removeMember(const char* begin, const char* end, Value* removed),
+  /// but 'key' is null-terminated.
+  bool removeMember(const char* key, Value* removed);
+  /** \brief Remove the named map member.
+
+      Update 'removed' iff removed.
+      \param key may contain embedded nulls.
+      \return true iff removed (no exceptions)
+  */
+  bool removeMember(String const& key, Value* removed);
+  /// Same as removeMember(String const& key, Value* removed)
+  bool removeMember(const char* begin, const char* end, Value* removed);
+  /** \brief Remove the indexed array element.
+
+      O(n) expensive operations.
+      Update 'removed' iff removed.
+      \return true if removed (no exceptions)
+  */
+  bool removeIndex(ArrayIndex index, Value* removed);
+
+  /// Return true if the object has a member named key.
+  /// \note 'key' must be null-terminated.
+  bool isMember(const char* key) const;
+  /// Return true if the object has a member named key.
+  /// \param key may contain embedded nulls.
+  bool isMember(const String& key) const;
+  /// Same as isMember(String const& key)const
+  bool isMember(const char* begin, const char* end) const;
+#ifdef JSON_USE_CPPTL
+  /// Return true if the object has a member named key.
+  bool isMember(const CppTL::ConstString& key) const;
+#endif
+
+  /// \brief Return a list of the member names.
+  ///
+  /// If null, return an empty list.
+  /// \pre type() is objectValue or nullValue
+  /// \post if type() was nullValue, it remains nullValue
+  Members getMemberNames() const;
+
+  //# ifdef JSON_USE_CPPTL
+  //      EnumMemberNames enumMemberNames() const;
+  //      EnumValues enumValues() const;
+  //# endif
+
+  /// \deprecated Always pass len.
+  JSONCPP_DEPRECATED("Use setComment(String const&) instead.")
+  void setComment(const char* comment, CommentPlacement placement);
+  /// Comments must be //... or /* ... */
+  void setComment(const char* comment, size_t len, CommentPlacement placement);
+  /// Comments must be //... or /* ... */
+  void setComment(const String& comment, CommentPlacement placement);
+  bool hasComment(CommentPlacement placement) const;
+  /// Include delimiters and embedded newlines.
+  String getComment(CommentPlacement placement) const;
+
+  String toStyledString() const;
+
+  const_iterator begin() const;
+  const_iterator end() const;
+
+  iterator begin();
+  iterator end();
+
+  // Accessors for the [start, limit) range of bytes within the JSON text from
+  // which this value was parsed, if any.
+  void setOffsetStart(ptrdiff_t start);
+  void setOffsetLimit(ptrdiff_t limit);
+  ptrdiff_t getOffsetStart() const;
+  ptrdiff_t getOffsetLimit() const;
+
+private:
+  void setType(ValueType v) { bits_.value_type_ = v; }
+  bool isAllocated() const { return bits_.allocated_; }
+  void setIsAllocated(bool v) { bits_.allocated_ = v; }
+
+  void initBasic(ValueType type, bool allocated = false);
+  void dupPayload(const Value& other);
+  void releasePayload();
+  void dupMeta(const Value& other);
+
+  Value& resolveReference(const char* key);
+  Value& resolveReference(const char* key, const char* end);
+
+  struct CommentInfo {
+    CommentInfo();
+    ~CommentInfo();
+
+    void setComment(const char* text, size_t len);
+
+    char* comment_{nullptr};
+  };
+
+  // struct MemberNamesTransform
+  //{
+  //   typedef const char *result_type;
+  //   const char *operator()( const CZString &name ) const
+  //   {
+  //      return name.c_str();
+  //   }
+  //};
+
+  union ValueHolder {
+    LargestInt int_;
+    LargestUInt uint_;
+    double real_;
+    bool bool_;
+    char* string_; // if allocated_, ptr to { unsigned, char[] }.
+    ObjectValues* map_;
+  } value_;
+
+  struct {
+    // Really a ValueType, but types should agree for bitfield packing.
+    unsigned int value_type_ : 8;
+    // Unless allocated_, string_ must be null-terminated.
+    unsigned int allocated_ : 1;
+  } bits_;
+
+  CommentInfo* comments_;
+
+  // [start, limit) byte offsets in the source JSON text from which this Value
+  // was extracted.
+  ptrdiff_t start_;
+  ptrdiff_t limit_;
+};
+
+/** \brief Experimental and untested: represents an element of the "path" to
+ * access a node.
+ */
+class JSON_API PathArgument {
+public:
+  friend class Path;
+
+  PathArgument();
+  PathArgument(ArrayIndex index);
+  PathArgument(const char* key);
+  PathArgument(const String& key);
+
+private:
+  enum Kind { kindNone = 0, kindIndex, kindKey };
+  String key_;
+  ArrayIndex index_{};
+  Kind kind_{kindNone};
+};
+
+/** \brief Experimental and untested: represents a "path" to access a node.
+ *
+ * Syntax:
+ * - "." => root node
+ * - ".[n]" => elements at index 'n' of root node (an array value)
+ * - ".name" => member named 'name' of root node (an object value)
+ * - ".name1.name2.name3"
+ * - ".[0][1][2].name1[3]"
+ * - ".%" => member name is provided as parameter
+ * - ".[%]" => index is provied as parameter
+ */
+class JSON_API Path {
+public:
+  Path(const String& path,
+       const PathArgument& a1 = PathArgument(),
+       const PathArgument& a2 = PathArgument(),
+       const PathArgument& a3 = PathArgument(),
+       const PathArgument& a4 = PathArgument(),
+       const PathArgument& a5 = PathArgument());
+
+  const Value& resolve(const Value& root) const;
+  Value resolve(const Value& root, const Value& defaultValue) const;
+  /// Creates the "path" to access the specified node and returns a reference on
+  /// the node.
+  Value& make(Value& root) const;
+
+private:
+  typedef std::vector<const PathArgument*> InArgs;
+  typedef std::vector<PathArgument> Args;
+
+  void makePath(const String& path, const InArgs& in);
+  void addPathInArg(const String& path,
+                    const InArgs& in,
+                    InArgs::const_iterator& itInArg,
+                    PathArgument::Kind kind);
+  static void invalidPath(const String& path, int location);
+
+  Args args_;
+};
+
+/** \brief base class for Value iterators.
+ *
+ */
+class JSON_API ValueIteratorBase {
+public:
+  typedef std::bidirectional_iterator_tag iterator_category;
+  typedef unsigned int size_t;
+  typedef int difference_type;
+  typedef ValueIteratorBase SelfType;
+
+  bool operator==(const SelfType& other) const { return isEqual(other); }
+
+  bool operator!=(const SelfType& other) const { return !isEqual(other); }
+
+  difference_type operator-(const SelfType& other) const {
+    return other.computeDistance(*this);
+  }
+
+  /// Return either the index or the member name of the referenced value as a
+  /// Value.
+  Value key() const;
+
+  /// Return the index of the referenced Value, or -1 if it is not an
+  /// arrayValue.
+  UInt index() const;
+
+  /// Return the member name of the referenced Value, or "" if it is not an
+  /// objectValue.
+  /// \note Avoid `c_str()` on result, as embedded zeroes are possible.
+  String name() const;
+
+  /// Return the member name of the referenced Value. "" if it is not an
+  /// objectValue.
+  /// \deprecated This cannot be used for UTF-8 strings, since there can be
+  /// embedded nulls.
+  JSONCPP_DEPRECATED("Use `key = name();` instead.")
+  char const* memberName() const;
+  /// Return the member name of the referenced Value, or NULL if it is not an
+  /// objectValue.
+  /// \note Better version than memberName(). Allows embedded nulls.
+  char const* memberName(char const** end) const;
+
+protected:
+  Value& deref() const;
+
+  void increment();
+
+  void decrement();
+
+  difference_type computeDistance(const SelfType& other) const;
+
+  bool isEqual(const SelfType& other) const;
+
+  void copy(const SelfType& other);
+
+private:
+  Value::ObjectValues::iterator current_;
+  // Indicates that iterator is for a null value.
+  bool isNull_{true};
+
+public:
+  // For some reason, BORLAND needs these at the end, rather
+  // than earlier. No idea why.
+  ValueIteratorBase();
+  explicit ValueIteratorBase(const Value::ObjectValues::iterator& current);
+};
+
+/** \brief const iterator for object and array value.
+ *
+ */
+class JSON_API ValueConstIterator : public ValueIteratorBase {
+  friend class Value;
+
+public:
+  typedef const Value value_type;
+  // typedef unsigned int size_t;
+  // typedef int difference_type;
+  typedef const Value& reference;
+  typedef const Value* pointer;
+  typedef ValueConstIterator SelfType;
+
+  ValueConstIterator();
+  ValueConstIterator(ValueIterator const& other);
+
+private:
+  /*! \internal Use by Value to create an iterator.
+   */
+  explicit ValueConstIterator(const Value::ObjectValues::iterator& current);
+
+public:
+  SelfType& operator=(const ValueIteratorBase& other);
+
+  SelfType operator++(int) {
+    SelfType temp(*this);
+    ++*this;
+    return temp;
+  }
+
+  SelfType operator--(int) {
+    SelfType temp(*this);
+    --*this;
+    return temp;
+  }
+
+  SelfType& operator--() {
+    decrement();
+    return *this;
+  }
+
+  SelfType& operator++() {
+    increment();
+    return *this;
+  }
+
+  reference operator*() const { return deref(); }
+
+  pointer operator->() const { return &deref(); }
+};
+
+/** \brief Iterator for object and array value.
+ */
+class JSON_API ValueIterator : public ValueIteratorBase {
+  friend class Value;
+
+public:
+  typedef Value value_type;
+  typedef unsigned int size_t;
+  typedef int difference_type;
+  typedef Value& reference;
+  typedef Value* pointer;
+  typedef ValueIterator SelfType;
+
+  ValueIterator();
+  explicit ValueIterator(const ValueConstIterator& other);
+  ValueIterator(const ValueIterator& other);
+
+private:
+  /*! \internal Use by Value to create an iterator.
+   */
+  explicit ValueIterator(const Value::ObjectValues::iterator& current);
+
+public:
+  SelfType& operator=(const SelfType& other);
+
+  SelfType operator++(int) {
+    SelfType temp(*this);
+    ++*this;
+    return temp;
+  }
+
+  SelfType operator--(int) {
+    SelfType temp(*this);
+    --*this;
+    return temp;
+  }
+
+  SelfType& operator--() {
+    decrement();
+    return *this;
+  }
+
+  SelfType& operator++() {
+    increment();
+    return *this;
+  }
+
+  reference operator*() const { return deref(); }
+
+  pointer operator->() const { return &deref(); }
+};
+
+inline void swap(Value& a, Value& b) { a.swap(b); }
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+#pragma warning(pop)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#endif // CPPTL_JSON_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/value.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/reader.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef CPPTL_JSON_READER_H_INCLUDED
+#define CPPTL_JSON_READER_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "features.h"
+#include "value.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <deque>
+#include <iosfwd>
+#include <istream>
+#include <stack>
+#include <string>
+
+// Disable warning C4251: <data member>: <type> needs to have dll-interface to
+// be used by...
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+#pragma warning(push)
+#pragma warning(disable : 4251)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#pragma pack(push, 8)
+
+namespace Json {
+
+/** \brief Unserialize a <a HREF="http://www.json.org">JSON</a> document into a
+ *Value.
+ *
+ * \deprecated Use CharReader and CharReaderBuilder.
+ */
+class JSON_API Reader {
+public:
+  typedef char Char;
+  typedef const Char* Location;
+
+  /** \brief An error tagged with where in the JSON text it was encountered.
+   *
+   * The offsets give the [start, limit) range of bytes within the text. Note
+   * that this is bytes, not codepoints.
+   *
+   */
+  struct StructuredError {
+    ptrdiff_t offset_start;
+    ptrdiff_t offset_limit;
+    String message;
+  };
+
+  /** \brief Constructs a Reader allowing all features
+   * for parsing.
+   */
+  JSONCPP_DEPRECATED("Use CharReader and CharReaderBuilder instead")
+  Reader();
+
+  /** \brief Constructs a Reader allowing the specified feature set
+   * for parsing.
+   */
+  JSONCPP_DEPRECATED("Use CharReader and CharReaderBuilder instead")
+  Reader(const Features& features);
+
+  /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
+   * document.
+   * \param document UTF-8 encoded string containing the document to read.
+   * \param root [out] Contains the root value of the document if it was
+   *             successfully parsed.
+   * \param collectComments \c true to collect comment and allow writing them
+   * back during
+   *                        serialization, \c false to discard comments.
+   *                        This parameter is ignored if
+   * Features::allowComments_
+   *                        is \c false.
+   * \return \c true if the document was successfully parsed, \c false if an
+   * error occurred.
+   */
+  bool
+  parse(const std::string& document, Value& root, bool collectComments = true);
+
+  /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
+   document.
+   * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the
+   document to read.
+   * \param endDoc Pointer on the end of the UTF-8 encoded string of the
+   document to read.
+   *               Must be >= beginDoc.
+   * \param root [out] Contains the root value of the document if it was
+   *             successfully parsed.
+   * \param collectComments \c true to collect comment and allow writing them
+   back during
+   *                        serialization, \c false to discard comments.
+   *                        This parameter is ignored if
+   Features::allowComments_
+   *                        is \c false.
+   * \return \c true if the document was successfully parsed, \c false if an
+   error occurred.
+   */
+  bool parse(const char* beginDoc,
+             const char* endDoc,
+             Value& root,
+             bool collectComments = true);
+
+  /// \brief Parse from input stream.
+  /// \see Json::operator>>(std::istream&, Json::Value&).
+  bool parse(IStream& is, Value& root, bool collectComments = true);
+
+  /** \brief Returns a user friendly string that list errors in the parsed
+   * document.
+   * \return Formatted error message with the list of errors with their location
+   * in
+   *         the parsed document. An empty string is returned if no error
+   * occurred
+   *         during parsing.
+   * \deprecated Use getFormattedErrorMessages() instead (typo fix).
+   */
+  JSONCPP_DEPRECATED("Use getFormattedErrorMessages() instead.")
+  String getFormatedErrorMessages() const;
+
+  /** \brief Returns a user friendly string that list errors in the parsed
+   * document.
+   * \return Formatted error message with the list of errors with their location
+   * in
+   *         the parsed document. An empty string is returned if no error
+   * occurred
+   *         during parsing.
+   */
+  String getFormattedErrorMessages() const;
+
+  /** \brief Returns a vector of structured erros encounted while parsing.
+   * \return A (possibly empty) vector of StructuredError objects. Currently
+   *         only one error can be returned, but the caller should tolerate
+   * multiple
+   *         errors.  This can occur if the parser recovers from a non-fatal
+   *         parse error and then encounters additional errors.
+   */
+  std::vector<StructuredError> getStructuredErrors() const;
+
+  /** \brief Add a semantic error message.
+   * \param value JSON Value location associated with the error
+   * \param message The error message.
+   * \return \c true if the error was successfully added, \c false if the
+   * Value offset exceeds the document size.
+   */
+  bool pushError(const Value& value, const String& message);
+
+  /** \brief Add a semantic error message with extra context.
+   * \param value JSON Value location associated with the error
+   * \param message The error message.
+   * \param extra Additional JSON Value location to contextualize the error
+   * \return \c true if the error was successfully added, \c false if either
+   * Value offset exceeds the document size.
+   */
+  bool pushError(const Value& value, const String& message, const Value& extra);
+
+  /** \brief Return whether there are any errors.
+   * \return \c true if there are no errors to report \c false if
+   * errors have occurred.
+   */
+  bool good() const;
+
+private:
+  enum TokenType {
+    tokenEndOfStream = 0,
+    tokenObjectBegin,
+    tokenObjectEnd,
+    tokenArrayBegin,
+    tokenArrayEnd,
+    tokenString,
+    tokenNumber,
+    tokenTrue,
+    tokenFalse,
+    tokenNull,
+    tokenArraySeparator,
+    tokenMemberSeparator,
+    tokenComment,
+    tokenError
+  };
+
+  class Token {
+  public:
+    TokenType type_;
+    Location start_;
+    Location end_;
+  };
+
+  class ErrorInfo {
+  public:
+    Token token_;
+    String message_;
+    Location extra_;
+  };
+
+  typedef std::deque<ErrorInfo> Errors;
+
+  bool readToken(Token& token);
+  void skipSpaces();
+  bool match(Location pattern, int patternLength);
+  bool readComment();
+  bool readCStyleComment();
+  bool readCppStyleComment();
+  bool readString();
+  void readNumber();
+  bool readValue();
+  bool readObject(Token& token);
+  bool readArray(Token& token);
+  bool decodeNumber(Token& token);
+  bool decodeNumber(Token& token, Value& decoded);
+  bool decodeString(Token& token);
+  bool decodeString(Token& token, String& decoded);
+  bool decodeDouble(Token& token);
+  bool decodeDouble(Token& token, Value& decoded);
+  bool decodeUnicodeCodePoint(Token& token,
+                              Location& current,
+                              Location end,
+                              unsigned int& unicode);
+  bool decodeUnicodeEscapeSequence(Token& token,
+                                   Location& current,
+                                   Location end,
+                                   unsigned int& unicode);
+  bool addError(const String& message, Token& token, Location extra = nullptr);
+  bool recoverFromError(TokenType skipUntilToken);
+  bool addErrorAndRecover(const String& message,
+                          Token& token,
+                          TokenType skipUntilToken);
+  void skipUntilSpace();
+  Value& currentValue();
+  Char getNextChar();
+  void
+  getLocationLineAndColumn(Location location, int& line, int& column) const;
+  String getLocationLineAndColumn(Location location) const;
+  void addComment(Location begin, Location end, CommentPlacement placement);
+  void skipCommentTokens(Token& token);
+
+  static bool containsNewLine(Location begin, Location end);
+  static String normalizeEOL(Location begin, Location end);
+
+  typedef std::stack<Value*> Nodes;
+  Nodes nodes_;
+  Errors errors_;
+  String document_;
+  Location begin_{};
+  Location end_{};
+  Location current_{};
+  Location lastValueEnd_{};
+  Value* lastValue_{};
+  String commentsBefore_;
+  Features features_;
+  bool collectComments_{};
+}; // Reader
+
+/** Interface for reading JSON from a char array.
+ */
+class JSON_API CharReader {
+public:
+  virtual ~CharReader() = default;
+  /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
+   document.
+   * The document must be a UTF-8 encoded string containing the document to
+   read.
+   *
+   * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the
+   document to read.
+   * \param endDoc Pointer on the end of the UTF-8 encoded string of the
+   document to read.
+   *        Must be >= beginDoc.
+   * \param root [out] Contains the root value of the document if it was
+   *             successfully parsed.
+   * \param errs [out] Formatted error messages (if not NULL)
+   *        a user friendly string that lists errors in the parsed
+   * document.
+   * \return \c true if the document was successfully parsed, \c false if an
+   error occurred.
+   */
+  virtual bool parse(char const* beginDoc,
+                     char const* endDoc,
+                     Value* root,
+                     String* errs) = 0;
+
+  class JSON_API Factory {
+  public:
+    virtual ~Factory() = default;
+    /** \brief Allocate a CharReader via operator new().
+     * \throw std::exception if something goes wrong (e.g. invalid settings)
+     */
+    virtual CharReader* newCharReader() const = 0;
+  }; // Factory
+};   // CharReader
+
+/** \brief Build a CharReader implementation.
+
+Usage:
+\code
+  using namespace Json;
+  CharReaderBuilder builder;
+  builder["collectComments"] = false;
+  Value value;
+  String errs;
+  bool ok = parseFromStream(builder, std::cin, &value, &errs);
+\endcode
+*/
+class JSON_API CharReaderBuilder : public CharReader::Factory {
+public:
+  // Note: We use a Json::Value so that we can add data-members to this class
+  // without a major version bump.
+  /** Configuration of this builder.
+    These are case-sensitive.
+    Available settings (case-sensitive):
+    - `"collectComments": false or true`
+      - true to collect comment and allow writing them
+        back during serialization, false to discard comments.
+        This parameter is ignored if allowComments is false.
+    - `"allowComments": false or true`
+      - true if comments are allowed.
+    - `"strictRoot": false or true`
+      - true if root must be either an array or an object value
+    - `"allowDroppedNullPlaceholders": false or true`
+      - true if dropped null placeholders are allowed. (See
+    StreamWriterBuilder.)
+    - `"allowNumericKeys": false or true`
+      - true if numeric object keys are allowed.
+    - `"allowSingleQuotes": false or true`
+      - true if '' are allowed for strings (both keys and values)
+    - `"stackLimit": integer`
+      - Exceeding stackLimit (recursive depth of `readValue()`) will
+        cause an exception.
+      - This is a security issue (seg-faults caused by deeply nested JSON),
+        so the default is low.
+    - `"failIfExtra": false or true`
+      - If true, `parse()` returns false when extra non-whitespace trails
+        the JSON value in the input string.
+    - `"rejectDupKeys": false or true`
+      - If true, `parse()` returns false when a key is duplicated within an
+    object.
+    - `"allowSpecialFloats": false or true`
+      - If true, special float values (NaNs and infinities) are allowed
+        and their values are lossfree restorable.
+
+    You can examine 'settings_` yourself
+    to see the defaults. You can also write and read them just like any
+    JSON Value.
+    \sa setDefaults()
+    */
+  Json::Value settings_;
+
+  CharReaderBuilder();
+  ~CharReaderBuilder() override;
+
+  CharReader* newCharReader() const override;
+
+  /** \return true if 'settings' are legal and consistent;
+   *   otherwise, indicate bad settings via 'invalid'.
+   */
+  bool validate(Json::Value* invalid) const;
+
+  /** A simple way to update a specific setting.
+   */
+  Value& operator[](const String& key);
+
+  /** Called by ctor, but you can use this to reset settings_.
+   * \pre 'settings' != NULL (but Json::null is fine)
+   * \remark Defaults:
+   * \snippet src/lib_json/json_reader.cpp CharReaderBuilderDefaults
+   */
+  static void setDefaults(Json::Value* settings);
+  /** Same as old Features::strictMode().
+   * \pre 'settings' != NULL (but Json::null is fine)
+   * \remark Defaults:
+   * \snippet src/lib_json/json_reader.cpp CharReaderBuilderStrictMode
+   */
+  static void strictMode(Json::Value* settings);
+};
+
+/** Consume entire stream and use its begin/end.
+ * Someday we might have a real StreamReader, but for now this
+ * is convenient.
+ */
+bool JSON_API parseFromStream(CharReader::Factory const&,
+                              IStream&,
+                              Value* root,
+                              std::string* errs);
+
+/** \brief Read from 'sin' into 'root'.
+
+ Always keep comments from the input JSON.
+
+ This can be used to read a file into a particular sub-object.
+ For example:
+ \code
+ Json::Value root;
+ cin >> root["dir"]["file"];
+ cout << root;
+ \endcode
+ Result:
+ \verbatim
+ {
+ "dir": {
+     "file": {
+     // The input stream JSON would be nested here.
+     }
+ }
+ }
+ \endverbatim
+ \throw std::exception on parse error.
+ \see Json::operator<<()
+*/
+JSON_API IStream& operator>>(IStream&, Value&);
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+#pragma warning(pop)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#endif // CPPTL_JSON_READER_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/reader.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/writer.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_WRITER_H_INCLUDED
+#define JSON_WRITER_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "value.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <ostream>
+#include <string>
+#include <vector>
+
+// Disable warning C4251: <data member>: <type> needs to have dll-interface to
+// be used by...
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) && defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable : 4251)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#pragma pack(push, 8)
+
+namespace Json {
+
+class Value;
+
+/**
+
+Usage:
+\code
+  using namespace Json;
+  void writeToStdout(StreamWriter::Factory const& factory, Value const& value) {
+    std::unique_ptr<StreamWriter> const writer(
+      factory.newStreamWriter());
+    writer->write(value, &std::cout);
+    std::cout << std::endl;  // add lf and flush
+  }
+\endcode
+*/
+class JSON_API StreamWriter {
+protected:
+  OStream* sout_; // not owned; will not delete
+public:
+  StreamWriter();
+  virtual ~StreamWriter();
+  /** Write Value into document as configured in sub-class.
+      Do not take ownership of sout, but maintain a reference during function.
+      \pre sout != NULL
+      \return zero on success (For now, we always return zero, so check the
+     stream instead.) \throw std::exception possibly, depending on configuration
+   */
+  virtual int write(Value const& root, OStream* sout) = 0;
+
+  /** \brief A simple abstract factory.
+   */
+  class JSON_API Factory {
+  public:
+    virtual ~Factory();
+    /** \brief Allocate a CharReader via operator new().
+     * \throw std::exception if something goes wrong (e.g. invalid settings)
+     */
+    virtual StreamWriter* newStreamWriter() const = 0;
+  }; // Factory
+};   // StreamWriter
+
+/** \brief Write into stringstream, then return string, for convenience.
+ * A StreamWriter will be created from the factory, used, and then deleted.
+ */
+String JSON_API writeString(StreamWriter::Factory const& factory,
+                            Value const& root);
+
+/** \brief Build a StreamWriter implementation.
+
+Usage:
+\code
+  using namespace Json;
+  Value value = ...;
+  StreamWriterBuilder builder;
+  builder["commentStyle"] = "None";
+  builder["indentation"] = "   ";  // or whatever you like
+  std::unique_ptr<Json::StreamWriter> writer(
+      builder.newStreamWriter());
+  writer->write(value, &std::cout);
+  std::cout << std::endl;  // add lf and flush
+\endcode
+*/
+class JSON_API StreamWriterBuilder : public StreamWriter::Factory {
+public:
+  // Note: We use a Json::Value so that we can add data-members to this class
+  // without a major version bump.
+  /** Configuration of this builder.
+    Available settings (case-sensitive):
+    - "commentStyle": "None" or "All"
+    - "indentation":  "<anything>".
+      - Setting this to an empty string also omits newline characters.
+    - "enableYAMLCompatibility": false or true
+      - slightly change the whitespace around colons
+    - "dropNullPlaceholders": false or true
+      - Drop the "null" string from the writer's output for nullValues.
+        Strictly speaking, this is not valid JSON. But when the output is being
+        fed to a browser's JavaScript, it makes for smaller output and the
+        browser can handle the output just fine.
+    - "useSpecialFloats": false or true
+      - If true, outputs non-finite floating point values in the following way:
+        NaN values as "NaN", positive infinity as "Infinity", and negative
+    infinity as "-Infinity".
+    - "precision": int
+      - Number of precision digits for formatting of real values.
+    - "precisionType": "significant"(default) or "decimal"
+      - Type of precision for formatting of real values.
+
+    You can examine 'settings_` yourself
+    to see the defaults. You can also write and read them just like any
+    JSON Value.
+    \sa setDefaults()
+    */
+  Json::Value settings_;
+
+  StreamWriterBuilder();
+  ~StreamWriterBuilder() override;
+
+  /**
+   * \throw std::exception if something goes wrong (e.g. invalid settings)
+   */
+  StreamWriter* newStreamWriter() const override;
+
+  /** \return true if 'settings' are legal and consistent;
+   *   otherwise, indicate bad settings via 'invalid'.
+   */
+  bool validate(Json::Value* invalid) const;
+  /** A simple way to update a specific setting.
+   */
+  Value& operator[](const String& key);
+
+  /** Called by ctor, but you can use this to reset settings_.
+   * \pre 'settings' != NULL (but Json::null is fine)
+   * \remark Defaults:
+   * \snippet src/lib_json/json_writer.cpp StreamWriterBuilderDefaults
+   */
+  static void setDefaults(Json::Value* settings);
+};
+
+/** \brief Abstract class for writers.
+ * \deprecated Use StreamWriter. (And really, this is an implementation detail.)
+ */
+class JSONCPP_DEPRECATED("Use StreamWriter instead") JSON_API Writer {
+public:
+  virtual ~Writer();
+
+  virtual String write(const Value& root) = 0;
+};
+
+/** \brief Outputs a Value in <a HREF="http://www.json.org">JSON</a> format
+ *without formatting (not human friendly).
+ *
+ * The JSON document is written in a single line. It is not intended for 'human'
+ *consumption,
+ * but may be useful to support feature such as RPC where bandwidth is limited.
+ * \sa Reader, Value
+ * \deprecated Use StreamWriterBuilder.
+ */
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable : 4996) // Deriving from deprecated class
+#endif
+class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API FastWriter
+    : public Writer {
+public:
+  FastWriter();
+  ~FastWriter() override = default;
+
+  void enableYAMLCompatibility();
+
+  /** \brief Drop the "null" string from the writer's output for nullValues.
+   * Strictly speaking, this is not valid JSON. But when the output is being
+   * fed to a browser's JavaScript, it makes for smaller output and the
+   * browser can handle the output just fine.
+   */
+  void dropNullPlaceholders();
+
+  void omitEndingLineFeed();
+
+public: // overridden from Writer
+  String write(const Value& root) override;
+
+private:
+  void writeValue(const Value& value);
+
+  String document_;
+  bool yamlCompatibilityEnabled_{false};
+  bool dropNullPlaceholders_{false};
+  bool omitEndingLineFeed_{false};
+};
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+/** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a
+ *human friendly way.
+ *
+ * The rules for line break and indent are as follow:
+ * - Object value:
+ *     - if empty then print {} without indent and line break
+ *     - if not empty the print '{', line break & indent, print one value per
+ *line
+ *       and then unindent and line break and print '}'.
+ * - Array value:
+ *     - if empty then print [] without indent and line break
+ *     - if the array contains no object value, empty array or some other value
+ *types,
+ *       and all the values fit on one lines, then print the array on a single
+ *line.
+ *     - otherwise, it the values do not fit on one line, or the array contains
+ *       object or non empty array, then print one value per line.
+ *
+ * If the Value have comments then they are outputed according to their
+ *#CommentPlacement.
+ *
+ * \sa Reader, Value, Value::setComment()
+ * \deprecated Use StreamWriterBuilder.
+ */
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable : 4996) // Deriving from deprecated class
+#endif
+class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API
+    StyledWriter : public Writer {
+public:
+  StyledWriter();
+  ~StyledWriter() override = default;
+
+public: // overridden from Writer
+  /** \brief Serialize a Value in <a HREF="http://www.json.org">JSON</a> format.
+   * \param root Value to serialize.
+   * \return String containing the JSON document that represents the root value.
+   */
+  String write(const Value& root) override;
+
+private:
+  void writeValue(const Value& value);
+  void writeArrayValue(const Value& value);
+  bool isMultilineArray(const Value& value);
+  void pushValue(const String& value);
+  void writeIndent();
+  void writeWithIndent(const String& value);
+  void indent();
+  void unindent();
+  void writeCommentBeforeValue(const Value& root);
+  void writeCommentAfterValueOnSameLine(const Value& root);
+  static bool hasCommentForValue(const Value& value);
+  static String normalizeEOL(const String& text);
+
+  typedef std::vector<String> ChildValues;
+
+  ChildValues childValues_;
+  String document_;
+  String indentString_;
+  unsigned int rightMargin_{74};
+  unsigned int indentSize_{3};
+  bool addChildValues_{false};
+};
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+/** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a
+ human friendly way,
+     to a stream rather than to a string.
+ *
+ * The rules for line break and indent are as follow:
+ * - Object value:
+ *     - if empty then print {} without indent and line break
+ *     - if not empty the print '{', line break & indent, print one value per
+ line
+ *       and then unindent and line break and print '}'.
+ * - Array value:
+ *     - if empty then print [] without indent and line break
+ *     - if the array contains no object value, empty array or some other value
+ types,
+ *       and all the values fit on one lines, then print the array on a single
+ line.
+ *     - otherwise, it the values do not fit on one line, or the array contains
+ *       object or non empty array, then print one value per line.
+ *
+ * If the Value have comments then they are outputed according to their
+ #CommentPlacement.
+ *
+ * \sa Reader, Value, Value::setComment()
+ * \deprecated Use StreamWriterBuilder.
+ */
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable : 4996) // Deriving from deprecated class
+#endif
+class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API
+    StyledStreamWriter {
+public:
+  /**
+   * \param indentation Each level will be indented by this amount extra.
+   */
+  StyledStreamWriter(String indentation = "\t");
+  ~StyledStreamWriter() = default;
+
+public:
+  /** \brief Serialize a Value in <a HREF="http://www.json.org">JSON</a> format.
+   * \param out Stream to write to. (Can be ostringstream, e.g.)
+   * \param root Value to serialize.
+   * \note There is no point in deriving from Writer, since write() should not
+   * return a value.
+   */
+  void write(OStream& out, const Value& root);
+
+private:
+  void writeValue(const Value& value);
+  void writeArrayValue(const Value& value);
+  bool isMultilineArray(const Value& value);
+  void pushValue(const String& value);
+  void writeIndent();
+  void writeWithIndent(const String& value);
+  void indent();
+  void unindent();
+  void writeCommentBeforeValue(const Value& root);
+  void writeCommentAfterValueOnSameLine(const Value& root);
+  static bool hasCommentForValue(const Value& value);
+  static String normalizeEOL(const String& text);
+
+  typedef std::vector<String> ChildValues;
+
+  ChildValues childValues_;
+  OStream* document_;
+  String indentString_;
+  unsigned int rightMargin_{74};
+  String indentation_;
+  bool addChildValues_ : 1;
+  bool indented_ : 1;
+};
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+#if defined(JSON_HAS_INT64)
+String JSON_API valueToString(Int value);
+String JSON_API valueToString(UInt value);
+#endif // if defined(JSON_HAS_INT64)
+String JSON_API valueToString(LargestInt value);
+String JSON_API valueToString(LargestUInt value);
+String JSON_API
+valueToString(double value,
+              unsigned int precision = Value::defaultRealPrecision,
+              PrecisionType precisionType = PrecisionType::significantDigits);
+String JSON_API valueToString(bool value);
+String JSON_API valueToQuotedString(const char* value);
+
+/// \brief Output using the StyledStreamWriter.
+/// \see Json::operator>>()
+JSON_API OStream& operator<<(OStream&, const Value& root);
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+#pragma warning(pop)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#endif // JSON_WRITER_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/writer.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/assertions.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef CPPTL_JSON_ASSERTIONS_H_INCLUDED
+#define CPPTL_JSON_ASSERTIONS_H_INCLUDED
+
+#include <cstdlib>
+#include <sstream>
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "config.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+/** It should not be possible for a maliciously designed file to
+ *  cause an abort() or seg-fault, so these macros are used only
+ *  for pre-condition violations and internal logic errors.
+ */
+#if JSON_USE_EXCEPTION
+
+// @todo <= add detail about condition in exception
+#define JSON_ASSERT(condition)                                                 \
+  {                                                                            \
+    if (!(condition)) {                                                        \
+      Json::throwLogicError("assert json failed");                             \
+    }                                                                          \
+  }
+
+#define JSON_FAIL_MESSAGE(message)                                             \
+  {                                                                            \
+    OStringStream oss;                                                         \
+    oss << message;                                                            \
+    Json::throwLogicError(oss.str());                                          \
+    abort();                                                                   \
+  }
+
+#else // JSON_USE_EXCEPTION
+
+#define JSON_ASSERT(condition) assert(condition)
+
+// The call to assert() will show the failure message in debug builds. In
+// release builds we abort, for a core-dump or debugger.
+#define JSON_FAIL_MESSAGE(message)                                             \
+  {                                                                            \
+    OStringStream oss;                                                         \
+    oss << message;                                                            \
+    assert(false && oss.str().c_str());                                        \
+    abort();                                                                   \
+  }
+
+#endif
+
+#define JSON_ASSERT_MESSAGE(condition, message)                                \
+  if (!(condition)) {                                                          \
+    JSON_FAIL_MESSAGE(message);                                                \
+  }
+
+#endif // CPPTL_JSON_ASSERTIONS_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/assertions.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+#endif //ifndef JSON_AMALGAMATED_H_INCLUDED
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/jsoncpp.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,5418 @@
+/// Json-cpp amalgamated source (http://jsoncpp.sourceforge.net/).
+/// It is intended to be used with #include "json/json.h"
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+/*
+The JsonCpp library's source code, including accompanying documentation, 
+tests and demonstration applications, are licensed under the following
+conditions...
+
+Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all 
+jurisdictions which recognize such a disclaimer. In such jurisdictions, 
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
+The JsonCpp Authors, and is released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this 
+software may choose to accept it either as 1) Public Domain, 2) under the 
+conditions of the MIT License (see below), or 3) under the terms of dual 
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+   http://en.wikipedia.org/wiki/MIT_License
+   
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+(END LICENSE TEXT)
+
+The MIT license is compatible with both the GPL and commercial
+software, affording one all of the rights of Public Domain with the
+minor nuisance of being required to keep the above copyright notice
+and license text in the source code. Note also that by accepting the
+Public Domain "license" you can re-license your copy using whatever
+license you like.
+
+*/
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+#include "json/json.h"
+
+#ifndef JSON_IS_AMALGAMATION
+#error "Compile with -I PATH_TO_JSON_DIRECTORY"
+#endif
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: src/lib_json/json_tool.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef LIB_JSONCPP_JSON_TOOL_H_INCLUDED
+#define LIB_JSONCPP_JSON_TOOL_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include <json/config.h>
+#endif
+
+// Also support old flag NO_LOCALE_SUPPORT
+#ifdef NO_LOCALE_SUPPORT
+#define JSONCPP_NO_LOCALE_SUPPORT
+#endif
+
+#ifndef JSONCPP_NO_LOCALE_SUPPORT
+#include <clocale>
+#endif
+
+/* This header provides common string manipulation support, such as UTF-8,
+ * portable conversion from/to string...
+ *
+ * It is an internal header that must not be exposed.
+ */
+
+namespace Json {
+static inline char getDecimalPoint() {
+#ifdef JSONCPP_NO_LOCALE_SUPPORT
+  return '\0';
+#else
+  struct lconv* lc = localeconv();
+  return lc ? *(lc->decimal_point) : '\0';
+#endif
+}
+
+/// Converts a unicode code-point to UTF-8.
+static inline String codePointToUTF8(unsigned int cp) {
+  String result;
+
+  // based on description from http://en.wikipedia.org/wiki/UTF-8
+
+  if (cp <= 0x7f) {
+    result.resize(1);
+    result[0] = static_cast<char>(cp);
+  } else if (cp <= 0x7FF) {
+    result.resize(2);
+    result[1] = static_cast<char>(0x80 | (0x3f & cp));
+    result[0] = static_cast<char>(0xC0 | (0x1f & (cp >> 6)));
+  } else if (cp <= 0xFFFF) {
+    result.resize(3);
+    result[2] = static_cast<char>(0x80 | (0x3f & cp));
+    result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
+    result[0] = static_cast<char>(0xE0 | (0xf & (cp >> 12)));
+  } else if (cp <= 0x10FFFF) {
+    result.resize(4);
+    result[3] = static_cast<char>(0x80 | (0x3f & cp));
+    result[2] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
+    result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 12)));
+    result[0] = static_cast<char>(0xF0 | (0x7 & (cp >> 18)));
+  }
+
+  return result;
+}
+
+enum {
+  /// Constant that specify the size of the buffer that must be passed to
+  /// uintToString.
+  uintToStringBufferSize = 3 * sizeof(LargestUInt) + 1
+};
+
+// Defines a char buffer for use with uintToString().
+typedef char UIntToStringBuffer[uintToStringBufferSize];
+
+/** Converts an unsigned integer to string.
+ * @param value Unsigned integer to convert to string
+ * @param current Input/Output string buffer.
+ *        Must have at least uintToStringBufferSize chars free.
+ */
+static inline void uintToString(LargestUInt value, char*& current) {
+  *--current = 0;
+  do {
+    *--current = static_cast<char>(value % 10U + static_cast<unsigned>('0'));
+    value /= 10;
+  } while (value != 0);
+}
+
+/** Change ',' to '.' everywhere in buffer.
+ *
+ * We had a sophisticated way, but it did not work in WinCE.
+ * @see https://github.com/open-source-parsers/jsoncpp/pull/9
+ */
+template <typename Iter> Iter fixNumericLocale(Iter begin, Iter end) {
+  for (; begin != end; ++begin) {
+    if (*begin == ',') {
+      *begin = '.';
+    }
+  }
+  return begin;
+}
+
+template <typename Iter> void fixNumericLocaleInput(Iter begin, Iter end) {
+  char decimalPoint = getDecimalPoint();
+  if (decimalPoint == '\0' || decimalPoint == '.') {
+    return;
+  }
+  for (; begin != end; ++begin) {
+    if (*begin == '.') {
+      *begin = decimalPoint;
+    }
+  }
+}
+
+/**
+ * Return iterator that would be the new end of the range [begin,end), if we
+ * were to delete zeros in the end of string, but not the last zero before '.'.
+ */
+template <typename Iter> Iter fixZerosInTheEnd(Iter begin, Iter end) {
+  for (; begin != end; --end) {
+    if (*(end - 1) != '0') {
+      return end;
+    }
+    // Don't delete the last zero before the decimal point.
+    if (begin != (end - 1) && *(end - 2) == '.') {
+      return end;
+    }
+  }
+  return end;
+}
+
+} // namespace Json
+
+#endif // LIB_JSONCPP_JSON_TOOL_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: src/lib_json/json_tool.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: src/lib_json/json_reader.cpp
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2011 Baptiste Lepilleur and The JsonCpp Authors
+// Copyright (C) 2016 InfoTeCS JSC. All rights reserved.
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "json_tool.h"
+#include <json/assertions.h>
+#include <json/reader.h>
+#include <json/value.h>
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <cassert>
+#include <cstring>
+#include <istream>
+#include <limits>
+#include <memory>
+#include <set>
+#include <sstream>
+#include <utility>
+
+#include <cstdio>
+#if __cplusplus >= 201103L
+
+#if !defined(sscanf)
+#define sscanf std::sscanf
+#endif
+
+#endif //__cplusplus
+
+#if defined(_MSC_VER)
+#if !defined(_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES)
+#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
+#endif //_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
+#endif //_MSC_VER
+
+#if defined(_MSC_VER)
+// Disable warning about strdup being deprecated.
+#pragma warning(disable : 4996)
+#endif
+
+// Define JSONCPP_DEPRECATED_STACK_LIMIT as an appropriate integer at compile
+// time to change the stack limit
+#if !defined(JSONCPP_DEPRECATED_STACK_LIMIT)
+#define JSONCPP_DEPRECATED_STACK_LIMIT 1000
+#endif
+
+static size_t const stackLimit_g =
+    JSONCPP_DEPRECATED_STACK_LIMIT; // see readValue()
+
+namespace Json {
+
+#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520)
+typedef std::unique_ptr<CharReader> CharReaderPtr;
+#else
+typedef std::unique_ptr<CharReader> CharReaderPtr;
+#endif
+
+// Implementation of class Features
+// ////////////////////////////////
+
+Features::Features() = default;
+
+Features Features::all() { return {}; }
+
+Features Features::strictMode() {
+  Features features;
+  features.allowComments_ = false;
+  features.strictRoot_ = true;
+  features.allowDroppedNullPlaceholders_ = false;
+  features.allowNumericKeys_ = false;
+  return features;
+}
+
+// Implementation of class Reader
+// ////////////////////////////////
+
+bool Reader::containsNewLine(Reader::Location begin, Reader::Location end) {
+  for (; begin < end; ++begin)
+    if (*begin == '\n' || *begin == '\r')
+      return true;
+  return false;
+}
+
+// Class Reader
+// //////////////////////////////////////////////////////////////////
+
+Reader::Reader()
+    : errors_(), document_(), commentsBefore_(), features_(Features::all()) {}
+
+Reader::Reader(const Features& features)
+    : errors_(), document_(), begin_(), end_(), current_(), lastValueEnd_(),
+      lastValue_(), commentsBefore_(), features_(features), collectComments_() {
+}
+
+bool Reader::parse(const std::string& document,
+                   Value& root,
+                   bool collectComments) {
+  document_.assign(document.begin(), document.end());
+  const char* begin = document_.c_str();
+  const char* end = begin + document_.length();
+  return parse(begin, end, root, collectComments);
+}
+
+bool Reader::parse(std::istream& is, Value& root, bool collectComments) {
+  // std::istream_iterator<char> begin(is);
+  // std::istream_iterator<char> end;
+  // Those would allow streamed input from a file, if parse() were a
+  // template function.
+
+  // Since String is reference-counted, this at least does not
+  // create an extra copy.
+  String doc;
+  std::getline(is, doc, (char)EOF);
+  return parse(doc.data(), doc.data() + doc.size(), root, collectComments);
+}
+
+bool Reader::parse(const char* beginDoc,
+                   const char* endDoc,
+                   Value& root,
+                   bool collectComments) {
+  if (!features_.allowComments_) {
+    collectComments = false;
+  }
+
+  begin_ = beginDoc;
+  end_ = endDoc;
+  collectComments_ = collectComments;
+  current_ = begin_;
+  lastValueEnd_ = nullptr;
+  lastValue_ = nullptr;
+  commentsBefore_.clear();
+  errors_.clear();
+  while (!nodes_.empty())
+    nodes_.pop();
+  nodes_.push(&root);
+
+  bool successful = readValue();
+  Token token;
+  skipCommentTokens(token);
+  if (collectComments_ && !commentsBefore_.empty())
+    root.setComment(commentsBefore_, commentAfter);
+  if (features_.strictRoot_) {
+    if (!root.isArray() && !root.isObject()) {
+      // Set error location to start of doc, ideally should be first token found
+      // in doc
+      token.type_ = tokenError;
+      token.start_ = beginDoc;
+      token.end_ = endDoc;
+      addError(
+          "A valid JSON document must be either an array or an object value.",
+          token);
+      return false;
+    }
+  }
+  return successful;
+}
+
+bool Reader::readValue() {
+  // readValue() may call itself only if it calls readObject() or ReadArray().
+  // These methods execute nodes_.push() just before and nodes_.pop)() just
+  // after calling readValue(). parse() executes one nodes_.push(), so > instead
+  // of >=.
+  if (nodes_.size() > stackLimit_g)
+    throwRuntimeError("Exceeded stackLimit in readValue().");
+
+  Token token;
+  skipCommentTokens(token);
+  bool successful = true;
+
+  if (collectComments_ && !commentsBefore_.empty()) {
+    currentValue().setComment(commentsBefore_, commentBefore);
+    commentsBefore_.clear();
+  }
+
+  switch (token.type_) {
+  case tokenObjectBegin:
+    successful = readObject(token);
+    currentValue().setOffsetLimit(current_ - begin_);
+    break;
+  case tokenArrayBegin:
+    successful = readArray(token);
+    currentValue().setOffsetLimit(current_ - begin_);
+    break;
+  case tokenNumber:
+    successful = decodeNumber(token);
+    break;
+  case tokenString:
+    successful = decodeString(token);
+    break;
+  case tokenTrue: {
+    Value v(true);
+    currentValue().swapPayload(v);
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+  } break;
+  case tokenFalse: {
+    Value v(false);
+    currentValue().swapPayload(v);
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+  } break;
+  case tokenNull: {
+    Value v;
+    currentValue().swapPayload(v);
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+  } break;
+  case tokenArraySeparator:
+  case tokenObjectEnd:
+  case tokenArrayEnd:
+    if (features_.allowDroppedNullPlaceholders_) {
+      // "Un-read" the current token and mark the current value as a null
+      // token.
+      current_--;
+      Value v;
+      currentValue().swapPayload(v);
+      currentValue().setOffsetStart(current_ - begin_ - 1);
+      currentValue().setOffsetLimit(current_ - begin_);
+      break;
+    } // Else, fall through...
+  default:
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+    return addError("Syntax error: value, object or array expected.", token);
+  }
+
+  if (collectComments_) {
+    lastValueEnd_ = current_;
+    lastValue_ = &currentValue();
+  }
+
+  return successful;
+}
+
+void Reader::skipCommentTokens(Token& token) {
+  if (features_.allowComments_) {
+    do {
+      readToken(token);
+    } while (token.type_ == tokenComment);
+  } else {
+    readToken(token);
+  }
+}
+
+bool Reader::readToken(Token& token) {
+  skipSpaces();
+  token.start_ = current_;
+  Char c = getNextChar();
+  bool ok = true;
+  switch (c) {
+  case '{':
+    token.type_ = tokenObjectBegin;
+    break;
+  case '}':
+    token.type_ = tokenObjectEnd;
+    break;
+  case '[':
+    token.type_ = tokenArrayBegin;
+    break;
+  case ']':
+    token.type_ = tokenArrayEnd;
+    break;
+  case '"':
+    token.type_ = tokenString;
+    ok = readString();
+    break;
+  case '/':
+    token.type_ = tokenComment;
+    ok = readComment();
+    break;
+  case '0':
+  case '1':
+  case '2':
+  case '3':
+  case '4':
+  case '5':
+  case '6':
+  case '7':
+  case '8':
+  case '9':
+  case '-':
+    token.type_ = tokenNumber;
+    readNumber();
+    break;
+  case 't':
+    token.type_ = tokenTrue;
+    ok = match("rue", 3);
+    break;
+  case 'f':
+    token.type_ = tokenFalse;
+    ok = match("alse", 4);
+    break;
+  case 'n':
+    token.type_ = tokenNull;
+    ok = match("ull", 3);
+    break;
+  case ',':
+    token.type_ = tokenArraySeparator;
+    break;
+  case ':':
+    token.type_ = tokenMemberSeparator;
+    break;
+  case 0:
+    token.type_ = tokenEndOfStream;
+    break;
+  default:
+    ok = false;
+    break;
+  }
+  if (!ok)
+    token.type_ = tokenError;
+  token.end_ = current_;
+  return true;
+}
+
+void Reader::skipSpaces() {
+  while (current_ != end_) {
+    Char c = *current_;
+    if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
+      ++current_;
+    else
+      break;
+  }
+}
+
+bool Reader::match(Location pattern, int patternLength) {
+  if (end_ - current_ < patternLength)
+    return false;
+  int index = patternLength;
+  while (index--)
+    if (current_[index] != pattern[index])
+      return false;
+  current_ += patternLength;
+  return true;
+}
+
+bool Reader::readComment() {
+  Location commentBegin = current_ - 1;
+  Char c = getNextChar();
+  bool successful = false;
+  if (c == '*')
+    successful = readCStyleComment();
+  else if (c == '/')
+    successful = readCppStyleComment();
+  if (!successful)
+    return false;
+
+  if (collectComments_) {
+    CommentPlacement placement = commentBefore;
+    if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) {
+      if (c != '*' || !containsNewLine(commentBegin, current_))
+        placement = commentAfterOnSameLine;
+    }
+
+    addComment(commentBegin, current_, placement);
+  }
+  return true;
+}
+
+String Reader::normalizeEOL(Reader::Location begin, Reader::Location end) {
+  String normalized;
+  normalized.reserve(static_cast<size_t>(end - begin));
+  Reader::Location current = begin;
+  while (current != end) {
+    char c = *current++;
+    if (c == '\r') {
+      if (current != end && *current == '\n')
+        // convert dos EOL
+        ++current;
+      // convert Mac EOL
+      normalized += '\n';
+    } else {
+      normalized += c;
+    }
+  }
+  return normalized;
+}
+
+void Reader::addComment(Location begin,
+                        Location end,
+                        CommentPlacement placement) {
+  assert(collectComments_);
+  const String& normalized = normalizeEOL(begin, end);
+  if (placement == commentAfterOnSameLine) {
+    assert(lastValue_ != nullptr);
+    lastValue_->setComment(normalized, placement);
+  } else {
+    commentsBefore_ += normalized;
+  }
+}
+
+bool Reader::readCStyleComment() {
+  while ((current_ + 1) < end_) {
+    Char c = getNextChar();
+    if (c == '*' && *current_ == '/')
+      break;
+  }
+  return getNextChar() == '/';
+}
+
+bool Reader::readCppStyleComment() {
+  while (current_ != end_) {
+    Char c = getNextChar();
+    if (c == '\n')
+      break;
+    if (c == '\r') {
+      // Consume DOS EOL. It will be normalized in addComment.
+      if (current_ != end_ && *current_ == '\n')
+        getNextChar();
+      // Break on Moc OS 9 EOL.
+      break;
+    }
+  }
+  return true;
+}
+
+void Reader::readNumber() {
+  const char* p = current_;
+  char c = '0'; // stopgap for already consumed character
+  // integral part
+  while (c >= '0' && c <= '9')
+    c = (current_ = p) < end_ ? *p++ : '\0';
+  // fractional part
+  if (c == '.') {
+    c = (current_ = p) < end_ ? *p++ : '\0';
+    while (c >= '0' && c <= '9')
+      c = (current_ = p) < end_ ? *p++ : '\0';
+  }
+  // exponential part
+  if (c == 'e' || c == 'E') {
+    c = (current_ = p) < end_ ? *p++ : '\0';
+    if (c == '+' || c == '-')
+      c = (current_ = p) < end_ ? *p++ : '\0';
+    while (c >= '0' && c <= '9')
+      c = (current_ = p) < end_ ? *p++ : '\0';
+  }
+}
+
+bool Reader::readString() {
+  Char c = '\0';
+  while (current_ != end_) {
+    c = getNextChar();
+    if (c == '\\')
+      getNextChar();
+    else if (c == '"')
+      break;
+  }
+  return c == '"';
+}
+
+bool Reader::readObject(Token& token) {
+  Token tokenName;
+  String name;
+  Value init(objectValue);
+  currentValue().swapPayload(init);
+  currentValue().setOffsetStart(token.start_ - begin_);
+  while (readToken(tokenName)) {
+    bool initialTokenOk = true;
+    while (tokenName.type_ == tokenComment && initialTokenOk)
+      initialTokenOk = readToken(tokenName);
+    if (!initialTokenOk)
+      break;
+    if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object
+      return true;
+    name.clear();
+    if (tokenName.type_ == tokenString) {
+      if (!decodeString(tokenName, name))
+        return recoverFromError(tokenObjectEnd);
+    } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
+      Value numberName;
+      if (!decodeNumber(tokenName, numberName))
+        return recoverFromError(tokenObjectEnd);
+      name = String(numberName.asCString());
+    } else {
+      break;
+    }
+
+    Token colon;
+    if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
+      return addErrorAndRecover("Missing ':' after object member name", colon,
+                                tokenObjectEnd);
+    }
+    Value& value = currentValue()[name];
+    nodes_.push(&value);
+    bool ok = readValue();
+    nodes_.pop();
+    if (!ok) // error already set
+      return recoverFromError(tokenObjectEnd);
+
+    Token comma;
+    if (!readToken(comma) ||
+        (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator &&
+         comma.type_ != tokenComment)) {
+      return addErrorAndRecover("Missing ',' or '}' in object declaration",
+                                comma, tokenObjectEnd);
+    }
+    bool finalizeTokenOk = true;
+    while (comma.type_ == tokenComment && finalizeTokenOk)
+      finalizeTokenOk = readToken(comma);
+    if (comma.type_ == tokenObjectEnd)
+      return true;
+  }
+  return addErrorAndRecover("Missing '}' or object member name", tokenName,
+                            tokenObjectEnd);
+}
+
+bool Reader::readArray(Token& token) {
+  Value init(arrayValue);
+  currentValue().swapPayload(init);
+  currentValue().setOffsetStart(token.start_ - begin_);
+  skipSpaces();
+  if (current_ != end_ && *current_ == ']') // empty array
+  {
+    Token endArray;
+    readToken(endArray);
+    return true;
+  }
+  int index = 0;
+  for (;;) {
+    Value& value = currentValue()[index++];
+    nodes_.push(&value);
+    bool ok = readValue();
+    nodes_.pop();
+    if (!ok) // error already set
+      return recoverFromError(tokenArrayEnd);
+
+    Token currentToken;
+    // Accept Comment after last item in the array.
+    ok = readToken(currentToken);
+    while (currentToken.type_ == tokenComment && ok) {
+      ok = readToken(currentToken);
+    }
+    bool badTokenType = (currentToken.type_ != tokenArraySeparator &&
+                         currentToken.type_ != tokenArrayEnd);
+    if (!ok || badTokenType) {
+      return addErrorAndRecover("Missing ',' or ']' in array declaration",
+                                currentToken, tokenArrayEnd);
+    }
+    if (currentToken.type_ == tokenArrayEnd)
+      break;
+  }
+  return true;
+}
+
+bool Reader::decodeNumber(Token& token) {
+  Value decoded;
+  if (!decodeNumber(token, decoded))
+    return false;
+  currentValue().swapPayload(decoded);
+  currentValue().setOffsetStart(token.start_ - begin_);
+  currentValue().setOffsetLimit(token.end_ - begin_);
+  return true;
+}
+
+bool Reader::decodeNumber(Token& token, Value& decoded) {
+  // Attempts to parse the number as an integer. If the number is
+  // larger than the maximum supported value of an integer then
+  // we decode the number as a double.
+  Location current = token.start_;
+  bool isNegative = *current == '-';
+  if (isNegative)
+    ++current;
+  // TODO: Help the compiler do the div and mod at compile time or get rid of
+  // them.
+  Value::LargestUInt maxIntegerValue =
+      isNegative ? Value::LargestUInt(Value::maxLargestInt) + 1
+                 : Value::maxLargestUInt;
+  Value::LargestUInt threshold = maxIntegerValue / 10;
+  Value::LargestUInt value = 0;
+  while (current < token.end_) {
+    Char c = *current++;
+    if (c < '0' || c > '9')
+      return decodeDouble(token, decoded);
+    auto digit(static_cast<Value::UInt>(c - '0'));
+    if (value >= threshold) {
+      // We've hit or exceeded the max value divided by 10 (rounded down). If
+      // a) we've only just touched the limit, b) this is the last digit, and
+      // c) it's small enough to fit in that rounding delta, we're okay.
+      // Otherwise treat this number as a double to avoid overflow.
+      if (value > threshold || current != token.end_ ||
+          digit > maxIntegerValue % 10) {
+        return decodeDouble(token, decoded);
+      }
+    }
+    value = value * 10 + digit;
+  }
+  if (isNegative && value == maxIntegerValue)
+    decoded = Value::minLargestInt;
+  else if (isNegative)
+    decoded = -Value::LargestInt(value);
+  else if (value <= Value::LargestUInt(Value::maxInt))
+    decoded = Value::LargestInt(value);
+  else
+    decoded = value;
+  return true;
+}
+
+bool Reader::decodeDouble(Token& token) {
+  Value decoded;
+  if (!decodeDouble(token, decoded))
+    return false;
+  currentValue().swapPayload(decoded);
+  currentValue().setOffsetStart(token.start_ - begin_);
+  currentValue().setOffsetLimit(token.end_ - begin_);
+  return true;
+}
+
+bool Reader::decodeDouble(Token& token, Value& decoded) {
+  double value = 0;
+  String buffer(token.start_, token.end_);
+  IStringStream is(buffer);
+  if (!(is >> value))
+    return addError(
+        "'" + String(token.start_, token.end_) + "' is not a number.", token);
+  decoded = value;
+  return true;
+}
+
+bool Reader::decodeString(Token& token) {
+  String decoded_string;
+  if (!decodeString(token, decoded_string))
+    return false;
+  Value decoded(decoded_string);
+  currentValue().swapPayload(decoded);
+  currentValue().setOffsetStart(token.start_ - begin_);
+  currentValue().setOffsetLimit(token.end_ - begin_);
+  return true;
+}
+
+bool Reader::decodeString(Token& token, String& decoded) {
+  decoded.reserve(static_cast<size_t>(token.end_ - token.start_ - 2));
+  Location current = token.start_ + 1; // skip '"'
+  Location end = token.end_ - 1;       // do not include '"'
+  while (current != end) {
+    Char c = *current++;
+    if (c == '"')
+      break;
+    else if (c == '\\') {
+      if (current == end)
+        return addError("Empty escape sequence in string", token, current);
+      Char escape = *current++;
+      switch (escape) {
+      case '"':
+        decoded += '"';
+        break;
+      case '/':
+        decoded += '/';
+        break;
+      case '\\':
+        decoded += '\\';
+        break;
+      case 'b':
+        decoded += '\b';
+        break;
+      case 'f':
+        decoded += '\f';
+        break;
+      case 'n':
+        decoded += '\n';
+        break;
+      case 'r':
+        decoded += '\r';
+        break;
+      case 't':
+        decoded += '\t';
+        break;
+      case 'u': {
+        unsigned int unicode;
+        if (!decodeUnicodeCodePoint(token, current, end, unicode))
+          return false;
+        decoded += codePointToUTF8(unicode);
+      } break;
+      default:
+        return addError("Bad escape sequence in string", token, current);
+      }
+    } else {
+      decoded += c;
+    }
+  }
+  return true;
+}
+
+bool Reader::decodeUnicodeCodePoint(Token& token,
+                                    Location& current,
+                                    Location end,
+                                    unsigned int& unicode) {
+
+  if (!decodeUnicodeEscapeSequence(token, current, end, unicode))
+    return false;
+  if (unicode >= 0xD800 && unicode <= 0xDBFF) {
+    // surrogate pairs
+    if (end - current < 6)
+      return addError(
+          "additional six characters expected to parse unicode surrogate pair.",
+          token, current);
+    if (*(current++) == '\\' && *(current++) == 'u') {
+      unsigned int surrogatePair;
+      if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) {
+        unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF);
+      } else
+        return false;
+    } else
+      return addError("expecting another \\u token to begin the second half of "
+                      "a unicode surrogate pair",
+                      token, current);
+  }
+  return true;
+}
+
+bool Reader::decodeUnicodeEscapeSequence(Token& token,
+                                         Location& current,
+                                         Location end,
+                                         unsigned int& ret_unicode) {
+  if (end - current < 4)
+    return addError(
+        "Bad unicode escape sequence in string: four digits expected.", token,
+        current);
+  int unicode = 0;
+  for (int index = 0; index < 4; ++index) {
+    Char c = *current++;
+    unicode *= 16;
+    if (c >= '0' && c <= '9')
+      unicode += c - '0';
+    else if (c >= 'a' && c <= 'f')
+      unicode += c - 'a' + 10;
+    else if (c >= 'A' && c <= 'F')
+      unicode += c - 'A' + 10;
+    else
+      return addError(
+          "Bad unicode escape sequence in string: hexadecimal digit expected.",
+          token, current);
+  }
+  ret_unicode = static_cast<unsigned int>(unicode);
+  return true;
+}
+
+bool Reader::addError(const String& message, Token& token, Location extra) {
+  ErrorInfo info;
+  info.token_ = token;
+  info.message_ = message;
+  info.extra_ = extra;
+  errors_.push_back(info);
+  return false;
+}
+
+bool Reader::recoverFromError(TokenType skipUntilToken) {
+  size_t const errorCount = errors_.size();
+  Token skip;
+  for (;;) {
+    if (!readToken(skip))
+      errors_.resize(errorCount); // discard errors caused by recovery
+    if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream)
+      break;
+  }
+  errors_.resize(errorCount);
+  return false;
+}
+
+bool Reader::addErrorAndRecover(const String& message,
+                                Token& token,
+                                TokenType skipUntilToken) {
+  addError(message, token);
+  return recoverFromError(skipUntilToken);
+}
+
+Value& Reader::currentValue() { return *(nodes_.top()); }
+
+Reader::Char Reader::getNextChar() {
+  if (current_ == end_)
+    return 0;
+  return *current_++;
+}
+
+void Reader::getLocationLineAndColumn(Location location,
+                                      int& line,
+                                      int& column) const {
+  Location current = begin_;
+  Location lastLineStart = current;
+  line = 0;
+  while (current < location && current != end_) {
+    Char c = *current++;
+    if (c == '\r') {
+      if (*current == '\n')
+        ++current;
+      lastLineStart = current;
+      ++line;
+    } else if (c == '\n') {
+      lastLineStart = current;
+      ++line;
+    }
+  }
+  // column & line start at 1
+  column = int(location - lastLineStart) + 1;
+  ++line;
+}
+
+String Reader::getLocationLineAndColumn(Location location) const {
+  int line, column;
+  getLocationLineAndColumn(location, line, column);
+  char buffer[18 + 16 + 16 + 1];
+  jsoncpp_snprintf(buffer, sizeof(buffer), "Line %d, Column %d", line, column);
+  return buffer;
+}
+
+// Deprecated. Preserved for backward compatibility
+String Reader::getFormatedErrorMessages() const {
+  return getFormattedErrorMessages();
+}
+
+String Reader::getFormattedErrorMessages() const {
+  String formattedMessage;
+  for (const auto& error : errors_) {
+    formattedMessage +=
+        "* " + getLocationLineAndColumn(error.token_.start_) + "\n";
+    formattedMessage += "  " + error.message_ + "\n";
+    if (error.extra_)
+      formattedMessage +=
+          "See " + getLocationLineAndColumn(error.extra_) + " for detail.\n";
+  }
+  return formattedMessage;
+}
+
+std::vector<Reader::StructuredError> Reader::getStructuredErrors() const {
+  std::vector<Reader::StructuredError> allErrors;
+  for (const auto& error : errors_) {
+    Reader::StructuredError structured;
+    structured.offset_start = error.token_.start_ - begin_;
+    structured.offset_limit = error.token_.end_ - begin_;
+    structured.message = error.message_;
+    allErrors.push_back(structured);
+  }
+  return allErrors;
+}
+
+bool Reader::pushError(const Value& value, const String& message) {
+  ptrdiff_t const length = end_ - begin_;
+  if (value.getOffsetStart() > length || value.getOffsetLimit() > length)
+    return false;
+  Token token;
+  token.type_ = tokenError;
+  token.start_ = begin_ + value.getOffsetStart();
+  token.end_ = end_ + value.getOffsetLimit();
+  ErrorInfo info;
+  info.token_ = token;
+  info.message_ = message;
+  info.extra_ = nullptr;
+  errors_.push_back(info);
+  return true;
+}
+
+bool Reader::pushError(const Value& value,
+                       const String& message,
+                       const Value& extra) {
+  ptrdiff_t const length = end_ - begin_;
+  if (value.getOffsetStart() > length || value.getOffsetLimit() > length ||
+      extra.getOffsetLimit() > length)
+    return false;
+  Token token;
+  token.type_ = tokenError;
+  token.start_ = begin_ + value.getOffsetStart();
+  token.end_ = begin_ + value.getOffsetLimit();
+  ErrorInfo info;
+  info.token_ = token;
+  info.message_ = message;
+  info.extra_ = begin_ + extra.getOffsetStart();
+  errors_.push_back(info);
+  return true;
+}
+
+bool Reader::good() const { return errors_.empty(); }
+
+// exact copy of Features
+class OurFeatures {
+public:
+  static OurFeatures all();
+  bool allowComments_;
+  bool strictRoot_;
+  bool allowDroppedNullPlaceholders_;
+  bool allowNumericKeys_;
+  bool allowSingleQuotes_;
+  bool failIfExtra_;
+  bool rejectDupKeys_;
+  bool allowSpecialFloats_;
+  size_t stackLimit_;
+}; // OurFeatures
+
+// exact copy of Implementation of class Features
+// ////////////////////////////////
+
+OurFeatures OurFeatures::all() { return {}; }
+
+// Implementation of class Reader
+// ////////////////////////////////
+
+// exact copy of Reader, renamed to OurReader
+class OurReader {
+public:
+  typedef char Char;
+  typedef const Char* Location;
+  struct StructuredError {
+    ptrdiff_t offset_start;
+    ptrdiff_t offset_limit;
+    String message;
+  };
+
+  OurReader(OurFeatures const& features);
+  bool parse(const char* beginDoc,
+             const char* endDoc,
+             Value& root,
+             bool collectComments = true);
+  String getFormattedErrorMessages() const;
+  std::vector<StructuredError> getStructuredErrors() const;
+  bool pushError(const Value& value, const String& message);
+  bool pushError(const Value& value, const String& message, const Value& extra);
+  bool good() const;
+
+private:
+  OurReader(OurReader const&);      // no impl
+  void operator=(OurReader const&); // no impl
+
+  enum TokenType {
+    tokenEndOfStream = 0,
+    tokenObjectBegin,
+    tokenObjectEnd,
+    tokenArrayBegin,
+    tokenArrayEnd,
+    tokenString,
+    tokenNumber,
+    tokenTrue,
+    tokenFalse,
+    tokenNull,
+    tokenNaN,
+    tokenPosInf,
+    tokenNegInf,
+    tokenArraySeparator,
+    tokenMemberSeparator,
+    tokenComment,
+    tokenError
+  };
+
+  class Token {
+  public:
+    TokenType type_;
+    Location start_;
+    Location end_;
+  };
+
+  class ErrorInfo {
+  public:
+    Token token_;
+    String message_;
+    Location extra_;
+  };
+
+  typedef std::deque<ErrorInfo> Errors;
+
+  bool readToken(Token& token);
+  void skipSpaces();
+  bool match(Location pattern, int patternLength);
+  bool readComment();
+  bool readCStyleComment();
+  bool readCppStyleComment();
+  bool readString();
+  bool readStringSingleQuote();
+  bool readNumber(bool checkInf);
+  bool readValue();
+  bool readObject(Token& token);
+  bool readArray(Token& token);
+  bool decodeNumber(Token& token);
+  bool decodeNumber(Token& token, Value& decoded);
+  bool decodeString(Token& token);
+  bool decodeString(Token& token, String& decoded);
+  bool decodeDouble(Token& token);
+  bool decodeDouble(Token& token, Value& decoded);
+  bool decodeUnicodeCodePoint(Token& token,
+                              Location& current,
+                              Location end,
+                              unsigned int& unicode);
+  bool decodeUnicodeEscapeSequence(Token& token,
+                                   Location& current,
+                                   Location end,
+                                   unsigned int& unicode);
+  bool addError(const String& message, Token& token, Location extra = nullptr);
+  bool recoverFromError(TokenType skipUntilToken);
+  bool addErrorAndRecover(const String& message,
+                          Token& token,
+                          TokenType skipUntilToken);
+  void skipUntilSpace();
+  Value& currentValue();
+  Char getNextChar();
+  void
+  getLocationLineAndColumn(Location location, int& line, int& column) const;
+  String getLocationLineAndColumn(Location location) const;
+  void addComment(Location begin, Location end, CommentPlacement placement);
+  void skipCommentTokens(Token& token);
+
+  static String normalizeEOL(Location begin, Location end);
+  static bool containsNewLine(Location begin, Location end);
+
+  typedef std::stack<Value*> Nodes;
+  Nodes nodes_;
+  Errors errors_;
+  String document_;
+  Location begin_;
+  Location end_;
+  Location current_;
+  Location lastValueEnd_;
+  Value* lastValue_;
+  String commentsBefore_;
+
+  OurFeatures const features_;
+  bool collectComments_;
+}; // OurReader
+
+// complete copy of Read impl, for OurReader
+
+bool OurReader::containsNewLine(OurReader::Location begin,
+                                OurReader::Location end) {
+  for (; begin < end; ++begin)
+    if (*begin == '\n' || *begin == '\r')
+      return true;
+  return false;
+}
+
+OurReader::OurReader(OurFeatures const& features)
+    : errors_(), document_(), begin_(), end_(), current_(), lastValueEnd_(),
+      lastValue_(), commentsBefore_(), features_(features), collectComments_() {
+}
+
+bool OurReader::parse(const char* beginDoc,
+                      const char* endDoc,
+                      Value& root,
+                      bool collectComments) {
+  if (!features_.allowComments_) {
+    collectComments = false;
+  }
+
+  begin_ = beginDoc;
+  end_ = endDoc;
+  collectComments_ = collectComments;
+  current_ = begin_;
+  lastValueEnd_ = nullptr;
+  lastValue_ = nullptr;
+  commentsBefore_.clear();
+  errors_.clear();
+  while (!nodes_.empty())
+    nodes_.pop();
+  nodes_.push(&root);
+
+  bool successful = readValue();
+  Token token;
+  skipCommentTokens(token);
+  if (features_.failIfExtra_) {
+    if ((features_.strictRoot_ || token.type_ != tokenError) &&
+        token.type_ != tokenEndOfStream) {
+      addError("Extra non-whitespace after JSON value.", token);
+      return false;
+    }
+  }
+  if (collectComments_ && !commentsBefore_.empty())
+    root.setComment(commentsBefore_, commentAfter);
+  if (features_.strictRoot_) {
+    if (!root.isArray() && !root.isObject()) {
+      // Set error location to start of doc, ideally should be first token found
+      // in doc
+      token.type_ = tokenError;
+      token.start_ = beginDoc;
+      token.end_ = endDoc;
+      addError(
+          "A valid JSON document must be either an array or an object value.",
+          token);
+      return false;
+    }
+  }
+  return successful;
+}
+
+bool OurReader::readValue() {
+  //  To preserve the old behaviour we cast size_t to int.
+  if (nodes_.size() > features_.stackLimit_)
+    throwRuntimeError("Exceeded stackLimit in readValue().");
+  Token token;
+  skipCommentTokens(token);
+  bool successful = true;
+
+  if (collectComments_ && !commentsBefore_.empty()) {
+    currentValue().setComment(commentsBefore_, commentBefore);
+    commentsBefore_.clear();
+  }
+
+  switch (token.type_) {
+  case tokenObjectBegin:
+    successful = readObject(token);
+    currentValue().setOffsetLimit(current_ - begin_);
+    break;
+  case tokenArrayBegin:
+    successful = readArray(token);
+    currentValue().setOffsetLimit(current_ - begin_);
+    break;
+  case tokenNumber:
+    successful = decodeNumber(token);
+    break;
+  case tokenString:
+    successful = decodeString(token);
+    break;
+  case tokenTrue: {
+    Value v(true);
+    currentValue().swapPayload(v);
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+  } break;
+  case tokenFalse: {
+    Value v(false);
+    currentValue().swapPayload(v);
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+  } break;
+  case tokenNull: {
+    Value v;
+    currentValue().swapPayload(v);
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+  } break;
+  case tokenNaN: {
+    Value v(std::numeric_limits<double>::quiet_NaN());
+    currentValue().swapPayload(v);
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+  } break;
+  case tokenPosInf: {
+    Value v(std::numeric_limits<double>::infinity());
+    currentValue().swapPayload(v);
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+  } break;
+  case tokenNegInf: {
+    Value v(-std::numeric_limits<double>::infinity());
+    currentValue().swapPayload(v);
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+  } break;
+  case tokenArraySeparator:
+  case tokenObjectEnd:
+  case tokenArrayEnd:
+    if (features_.allowDroppedNullPlaceholders_) {
+      // "Un-read" the current token and mark the current value as a null
+      // token.
+      current_--;
+      Value v;
+      currentValue().swapPayload(v);
+      currentValue().setOffsetStart(current_ - begin_ - 1);
+      currentValue().setOffsetLimit(current_ - begin_);
+      break;
+    } // else, fall through ...
+  default:
+    currentValue().setOffsetStart(token.start_ - begin_);
+    currentValue().setOffsetLimit(token.end_ - begin_);
+    return addError("Syntax error: value, object or array expected.", token);
+  }
+
+  if (collectComments_) {
+    lastValueEnd_ = current_;
+    lastValue_ = &currentValue();
+  }
+
+  return successful;
+}
+
+void OurReader::skipCommentTokens(Token& token) {
+  if (features_.allowComments_) {
+    do {
+      readToken(token);
+    } while (token.type_ == tokenComment);
+  } else {
+    readToken(token);
+  }
+}
+
+bool OurReader::readToken(Token& token) {
+  skipSpaces();
+  token.start_ = current_;
+  Char c = getNextChar();
+  bool ok = true;
+  switch (c) {
+  case '{':
+    token.type_ = tokenObjectBegin;
+    break;
+  case '}':
+    token.type_ = tokenObjectEnd;
+    break;
+  case '[':
+    token.type_ = tokenArrayBegin;
+    break;
+  case ']':
+    token.type_ = tokenArrayEnd;
+    break;
+  case '"':
+    token.type_ = tokenString;
+    ok = readString();
+    break;
+  case '\'':
+    if (features_.allowSingleQuotes_) {
+      token.type_ = tokenString;
+      ok = readStringSingleQuote();
+      break;
+    } // else fall through
+  case '/':
+    token.type_ = tokenComment;
+    ok = readComment();
+    break;
+  case '0':
+  case '1':
+  case '2':
+  case '3':
+  case '4':
+  case '5':
+  case '6':
+  case '7':
+  case '8':
+  case '9':
+    token.type_ = tokenNumber;
+    readNumber(false);
+    break;
+  case '-':
+    if (readNumber(true)) {
+      token.type_ = tokenNumber;
+    } else {
+      token.type_ = tokenNegInf;
+      ok = features_.allowSpecialFloats_ && match("nfinity", 7);
+    }
+    break;
+  case 't':
+    token.type_ = tokenTrue;
+    ok = match("rue", 3);
+    break;
+  case 'f':
+    token.type_ = tokenFalse;
+    ok = match("alse", 4);
+    break;
+  case 'n':
+    token.type_ = tokenNull;
+    ok = match("ull", 3);
+    break;
+  case 'N':
+    if (features_.allowSpecialFloats_) {
+      token.type_ = tokenNaN;
+      ok = match("aN", 2);
+    } else {
+      ok = false;
+    }
+    break;
+  case 'I':
+    if (features_.allowSpecialFloats_) {
+      token.type_ = tokenPosInf;
+      ok = match("nfinity", 7);
+    } else {
+      ok = false;
+    }
+    break;
+  case ',':
+    token.type_ = tokenArraySeparator;
+    break;
+  case ':':
+    token.type_ = tokenMemberSeparator;
+    break;
+  case 0:
+    token.type_ = tokenEndOfStream;
+    break;
+  default:
+    ok = false;
+    break;
+  }
+  if (!ok)
+    token.type_ = tokenError;
+  token.end_ = current_;
+  return true;
+}
+
+void OurReader::skipSpaces() {
+  while (current_ != end_) {
+    Char c = *current_;
+    if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
+      ++current_;
+    else
+      break;
+  }
+}
+
+bool OurReader::match(Location pattern, int patternLength) {
+  if (end_ - current_ < patternLength)
+    return false;
+  int index = patternLength;
+  while (index--)
+    if (current_[index] != pattern[index])
+      return false;
+  current_ += patternLength;
+  return true;
+}
+
+bool OurReader::readComment() {
+  Location commentBegin = current_ - 1;
+  Char c = getNextChar();
+  bool successful = false;
+  if (c == '*')
+    successful = readCStyleComment();
+  else if (c == '/')
+    successful = readCppStyleComment();
+  if (!successful)
+    return false;
+
+  if (collectComments_) {
+    CommentPlacement placement = commentBefore;
+    if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) {
+      if (c != '*' || !containsNewLine(commentBegin, current_))
+        placement = commentAfterOnSameLine;
+    }
+
+    addComment(commentBegin, current_, placement);
+  }
+  return true;
+}
+
+String OurReader::normalizeEOL(OurReader::Location begin,
+                               OurReader::Location end) {
+  String normalized;
+  normalized.reserve(static_cast<size_t>(end - begin));
+  OurReader::Location current = begin;
+  while (current != end) {
+    char c = *current++;
+    if (c == '\r') {
+      if (current != end && *current == '\n')
+        // convert dos EOL
+        ++current;
+      // convert Mac EOL
+      normalized += '\n';
+    } else {
+      normalized += c;
+    }
+  }
+  return normalized;
+}
+
+void OurReader::addComment(Location begin,
+                           Location end,
+                           CommentPlacement placement) {
+  assert(collectComments_);
+  const String& normalized = normalizeEOL(begin, end);
+  if (placement == commentAfterOnSameLine) {
+    assert(lastValue_ != nullptr);
+    lastValue_->setComment(normalized, placement);
+  } else {
+    commentsBefore_ += normalized;
+  }
+}
+
+bool OurReader::readCStyleComment() {
+  while ((current_ + 1) < end_) {
+    Char c = getNextChar();
+    if (c == '*' && *current_ == '/')
+      break;
+  }
+  return getNextChar() == '/';
+}
+
+bool OurReader::readCppStyleComment() {
+  while (current_ != end_) {
+    Char c = getNextChar();
+    if (c == '\n')
+      break;
+    if (c == '\r') {
+      // Consume DOS EOL. It will be normalized in addComment.
+      if (current_ != end_ && *current_ == '\n')
+        getNextChar();
+      // Break on Moc OS 9 EOL.
+      break;
+    }
+  }
+  return true;
+}
+
+bool OurReader::readNumber(bool checkInf) {
+  const char* p = current_;
+  if (checkInf && p != end_ && *p == 'I') {
+    current_ = ++p;
+    return false;
+  }
+  char c = '0'; // stopgap for already consumed character
+  // integral part
+  while (c >= '0' && c <= '9')
+    c = (current_ = p) < end_ ? *p++ : '\0';
+  // fractional part
+  if (c == '.') {
+    c = (current_ = p) < end_ ? *p++ : '\0';
+    while (c >= '0' && c <= '9')
+      c = (current_ = p) < end_ ? *p++ : '\0';
+  }
+  // exponential part
+  if (c == 'e' || c == 'E') {
+    c = (current_ = p) < end_ ? *p++ : '\0';
+    if (c == '+' || c == '-')
+      c = (current_ = p) < end_ ? *p++ : '\0';
+    while (c >= '0' && c <= '9')
+      c = (current_ = p) < end_ ? *p++ : '\0';
+  }
+  return true;
+}
+bool OurReader::readString() {
+  Char c = 0;
+  while (current_ != end_) {
+    c = getNextChar();
+    if (c == '\\')
+      getNextChar();
+    else if (c == '"')
+      break;
+  }
+  return c == '"';
+}
+
+bool OurReader::readStringSingleQuote() {
+  Char c = 0;
+  while (current_ != end_) {
+    c = getNextChar();
+    if (c == '\\')
+      getNextChar();
+    else if (c == '\'')
+      break;
+  }
+  return c == '\'';
+}
+
+bool OurReader::readObject(Token& token) {
+  Token tokenName;
+  String name;
+  Value init(objectValue);
+  currentValue().swapPayload(init);
+  currentValue().setOffsetStart(token.start_ - begin_);
+  while (readToken(tokenName)) {
+    bool initialTokenOk = true;
+    while (tokenName.type_ == tokenComment && initialTokenOk)
+      initialTokenOk = readToken(tokenName);
+    if (!initialTokenOk)
+      break;
+    if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object
+      return true;
+    name.clear();
+    if (tokenName.type_ == tokenString) {
+      if (!decodeString(tokenName, name))
+        return recoverFromError(tokenObjectEnd);
+    } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
+      Value numberName;
+      if (!decodeNumber(tokenName, numberName))
+        return recoverFromError(tokenObjectEnd);
+      name = numberName.asString();
+    } else {
+      break;
+    }
+
+    Token colon;
+    if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
+      return addErrorAndRecover("Missing ':' after object member name", colon,
+                                tokenObjectEnd);
+    }
+    if (name.length() >= (1U << 30))
+      throwRuntimeError("keylength >= 2^30");
+    if (features_.rejectDupKeys_ && currentValue().isMember(name)) {
+      String msg = "Duplicate key: '" + name + "'";
+      return addErrorAndRecover(msg, tokenName, tokenObjectEnd);
+    }
+    Value& value = currentValue()[name];
+    nodes_.push(&value);
+    bool ok = readValue();
+    nodes_.pop();
+    if (!ok) // error already set
+      return recoverFromError(tokenObjectEnd);
+
+    Token comma;
+    if (!readToken(comma) ||
+        (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator &&
+         comma.type_ != tokenComment)) {
+      return addErrorAndRecover("Missing ',' or '}' in object declaration",
+                                comma, tokenObjectEnd);
+    }
+    bool finalizeTokenOk = true;
+    while (comma.type_ == tokenComment && finalizeTokenOk)
+      finalizeTokenOk = readToken(comma);
+    if (comma.type_ == tokenObjectEnd)
+      return true;
+  }
+  return addErrorAndRecover("Missing '}' or object member name", tokenName,
+                            tokenObjectEnd);
+}
+
+bool OurReader::readArray(Token& token) {
+  Value init(arrayValue);
+  currentValue().swapPayload(init);
+  currentValue().setOffsetStart(token.start_ - begin_);
+  skipSpaces();
+  if (current_ != end_ && *current_ == ']') // empty array
+  {
+    Token endArray;
+    readToken(endArray);
+    return true;
+  }
+  int index = 0;
+  for (;;) {
+    Value& value = currentValue()[index++];
+    nodes_.push(&value);
+    bool ok = readValue();
+    nodes_.pop();
+    if (!ok) // error already set
+      return recoverFromError(tokenArrayEnd);
+
+    Token currentToken;
+    // Accept Comment after last item in the array.
+    ok = readToken(currentToken);
+    while (currentToken.type_ == tokenComment && ok) {
+      ok = readToken(currentToken);
+    }
+    bool badTokenType = (currentToken.type_ != tokenArraySeparator &&
+                         currentToken.type_ != tokenArrayEnd);
+    if (!ok || badTokenType) {
+      return addErrorAndRecover("Missing ',' or ']' in array declaration",
+                                currentToken, tokenArrayEnd);
+    }
+    if (currentToken.type_ == tokenArrayEnd)
+      break;
+  }
+  return true;
+}
+
+bool OurReader::decodeNumber(Token& token) {
+  Value decoded;
+  if (!decodeNumber(token, decoded))
+    return false;
+  currentValue().swapPayload(decoded);
+  currentValue().setOffsetStart(token.start_ - begin_);
+  currentValue().setOffsetLimit(token.end_ - begin_);
+  return true;
+}
+
+bool OurReader::decodeNumber(Token& token, Value& decoded) {
+  // Attempts to parse the number as an integer. If the number is
+  // larger than the maximum supported value of an integer then
+  // we decode the number as a double.
+  Location current = token.start_;
+  bool isNegative = *current == '-';
+  if (isNegative)
+    ++current;
+  // TODO: Help the compiler do the div and mod at compile time or get rid of
+  // them.
+  Value::LargestUInt maxIntegerValue =
+      isNegative ? Value::LargestUInt(Value::minLargestInt)
+                 : Value::maxLargestUInt;
+  Value::LargestUInt threshold = maxIntegerValue / 10;
+  Value::LargestUInt value = 0;
+  while (current < token.end_) {
+    Char c = *current++;
+    if (c < '0' || c > '9')
+      return decodeDouble(token, decoded);
+    auto digit(static_cast<Value::UInt>(c - '0'));
+    if (value >= threshold) {
+      // We've hit or exceeded the max value divided by 10 (rounded down). If
+      // a) we've only just touched the limit, b) this is the last digit, and
+      // c) it's small enough to fit in that rounding delta, we're okay.
+      // Otherwise treat this number as a double to avoid overflow.
+      if (value > threshold || current != token.end_ ||
+          digit > maxIntegerValue % 10) {
+        return decodeDouble(token, decoded);
+      }
+    }
+    value = value * 10 + digit;
+  }
+  if (isNegative)
+    decoded = -Value::LargestInt(value);
+  else if (value <= Value::LargestUInt(Value::maxInt))
+    decoded = Value::LargestInt(value);
+  else
+    decoded = value;
+  return true;
+}
+
+bool OurReader::decodeDouble(Token& token) {
+  Value decoded;
+  if (!decodeDouble(token, decoded))
+    return false;
+  currentValue().swapPayload(decoded);
+  currentValue().setOffsetStart(token.start_ - begin_);
+  currentValue().setOffsetLimit(token.end_ - begin_);
+  return true;
+}
+
+bool OurReader::decodeDouble(Token& token, Value& decoded) {
+  double value = 0;
+  const int bufferSize = 32;
+  int count;
+  ptrdiff_t const length = token.end_ - token.start_;
+
+  // Sanity check to avoid buffer overflow exploits.
+  if (length < 0) {
+    return addError("Unable to parse token length", token);
+  }
+  auto const ulength = static_cast<size_t>(length);
+
+  // Avoid using a string constant for the format control string given to
+  // sscanf, as this can cause hard to debug crashes on OS X. See here for more
+  // info:
+  //
+  //     http://developer.apple.com/library/mac/#DOCUMENTATION/DeveloperTools/gcc-4.0.1/gcc/Incompatibilities.html
+  char format[] = "%lf";
+
+  if (length <= bufferSize) {
+    Char buffer[bufferSize + 1];
+    memcpy(buffer, token.start_, ulength);
+    buffer[length] = 0;
+    fixNumericLocaleInput(buffer, buffer + length);
+    count = sscanf(buffer, format, &value);
+  } else {
+    String buffer(token.start_, token.end_);
+    count = sscanf(buffer.c_str(), format, &value);
+  }
+
+  if (count != 1)
+    return addError(
+        "'" + String(token.start_, token.end_) + "' is not a number.", token);
+  decoded = value;
+  return true;
+}
+
+bool OurReader::decodeString(Token& token) {
+  String decoded_string;
+  if (!decodeString(token, decoded_string))
+    return false;
+  Value decoded(decoded_string);
+  currentValue().swapPayload(decoded);
+  currentValue().setOffsetStart(token.start_ - begin_);
+  currentValue().setOffsetLimit(token.end_ - begin_);
+  return true;
+}
+
+bool OurReader::decodeString(Token& token, String& decoded) {
+  decoded.reserve(static_cast<size_t>(token.end_ - token.start_ - 2));
+  Location current = token.start_ + 1; // skip '"'
+  Location end = token.end_ - 1;       // do not include '"'
+  while (current != end) {
+    Char c = *current++;
+    if (c == '"')
+      break;
+    else if (c == '\\') {
+      if (current == end)
+        return addError("Empty escape sequence in string", token, current);
+      Char escape = *current++;
+      switch (escape) {
+      case '"':
+        decoded += '"';
+        break;
+      case '/':
+        decoded += '/';
+        break;
+      case '\\':
+        decoded += '\\';
+        break;
+      case 'b':
+        decoded += '\b';
+        break;
+      case 'f':
+        decoded += '\f';
+        break;
+      case 'n':
+        decoded += '\n';
+        break;
+      case 'r':
+        decoded += '\r';
+        break;
+      case 't':
+        decoded += '\t';
+        break;
+      case 'u': {
+        unsigned int unicode;
+        if (!decodeUnicodeCodePoint(token, current, end, unicode))
+          return false;
+        decoded += codePointToUTF8(unicode);
+      } break;
+      default:
+        return addError("Bad escape sequence in string", token, current);
+      }
+    } else {
+      decoded += c;
+    }
+  }
+  return true;
+}
+
+bool OurReader::decodeUnicodeCodePoint(Token& token,
+                                       Location& current,
+                                       Location end,
+                                       unsigned int& unicode) {
+
+  if (!decodeUnicodeEscapeSequence(token, current, end, unicode))
+    return false;
+  if (unicode >= 0xD800 && unicode <= 0xDBFF) {
+    // surrogate pairs
+    if (end - current < 6)
+      return addError(
+          "additional six characters expected to parse unicode surrogate pair.",
+          token, current);
+    if (*(current++) == '\\' && *(current++) == 'u') {
+      unsigned int surrogatePair;
+      if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) {
+        unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF);
+      } else
+        return false;
+    } else
+      return addError("expecting another \\u token to begin the second half of "
+                      "a unicode surrogate pair",
+                      token, current);
+  }
+  return true;
+}
+
+bool OurReader::decodeUnicodeEscapeSequence(Token& token,
+                                            Location& current,
+                                            Location end,
+                                            unsigned int& ret_unicode) {
+  if (end - current < 4)
+    return addError(
+        "Bad unicode escape sequence in string: four digits expected.", token,
+        current);
+  int unicode = 0;
+  for (int index = 0; index < 4; ++index) {
+    Char c = *current++;
+    unicode *= 16;
+    if (c >= '0' && c <= '9')
+      unicode += c - '0';
+    else if (c >= 'a' && c <= 'f')
+      unicode += c - 'a' + 10;
+    else if (c >= 'A' && c <= 'F')
+      unicode += c - 'A' + 10;
+    else
+      return addError(
+          "Bad unicode escape sequence in string: hexadecimal digit expected.",
+          token, current);
+  }
+  ret_unicode = static_cast<unsigned int>(unicode);
+  return true;
+}
+
+bool OurReader::addError(const String& message, Token& token, Location extra) {
+  ErrorInfo info;
+  info.token_ = token;
+  info.message_ = message;
+  info.extra_ = extra;
+  errors_.push_back(info);
+  return false;
+}
+
+bool OurReader::recoverFromError(TokenType skipUntilToken) {
+  size_t errorCount = errors_.size();
+  Token skip;
+  for (;;) {
+    if (!readToken(skip))
+      errors_.resize(errorCount); // discard errors caused by recovery
+    if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream)
+      break;
+  }
+  errors_.resize(errorCount);
+  return false;
+}
+
+bool OurReader::addErrorAndRecover(const String& message,
+                                   Token& token,
+                                   TokenType skipUntilToken) {
+  addError(message, token);
+  return recoverFromError(skipUntilToken);
+}
+
+Value& OurReader::currentValue() { return *(nodes_.top()); }
+
+OurReader::Char OurReader::getNextChar() {
+  if (current_ == end_)
+    return 0;
+  return *current_++;
+}
+
+void OurReader::getLocationLineAndColumn(Location location,
+                                         int& line,
+                                         int& column) const {
+  Location current = begin_;
+  Location lastLineStart = current;
+  line = 0;
+  while (current < location && current != end_) {
+    Char c = *current++;
+    if (c == '\r') {
+      if (*current == '\n')
+        ++current;
+      lastLineStart = current;
+      ++line;
+    } else if (c == '\n') {
+      lastLineStart = current;
+      ++line;
+    }
+  }
+  // column & line start at 1
+  column = int(location - lastLineStart) + 1;
+  ++line;
+}
+
+String OurReader::getLocationLineAndColumn(Location location) const {
+  int line, column;
+  getLocationLineAndColumn(location, line, column);
+  char buffer[18 + 16 + 16 + 1];
+  jsoncpp_snprintf(buffer, sizeof(buffer), "Line %d, Column %d", line, column);
+  return buffer;
+}
+
+String OurReader::getFormattedErrorMessages() const {
+  String formattedMessage;
+  for (const auto& error : errors_) {
+    formattedMessage +=
+        "* " + getLocationLineAndColumn(error.token_.start_) + "\n";
+    formattedMessage += "  " + error.message_ + "\n";
+    if (error.extra_)
+      formattedMessage +=
+          "See " + getLocationLineAndColumn(error.extra_) + " for detail.\n";
+  }
+  return formattedMessage;
+}
+
+std::vector<OurReader::StructuredError> OurReader::getStructuredErrors() const {
+  std::vector<OurReader::StructuredError> allErrors;
+  for (const auto& error : errors_) {
+    OurReader::StructuredError structured;
+    structured.offset_start = error.token_.start_ - begin_;
+    structured.offset_limit = error.token_.end_ - begin_;
+    structured.message = error.message_;
+    allErrors.push_back(structured);
+  }
+  return allErrors;
+}
+
+bool OurReader::pushError(const Value& value, const String& message) {
+  ptrdiff_t length = end_ - begin_;
+  if (value.getOffsetStart() > length || value.getOffsetLimit() > length)
+    return false;
+  Token token;
+  token.type_ = tokenError;
+  token.start_ = begin_ + value.getOffsetStart();
+  token.end_ = end_ + value.getOffsetLimit();
+  ErrorInfo info;
+  info.token_ = token;
+  info.message_ = message;
+  info.extra_ = nullptr;
+  errors_.push_back(info);
+  return true;
+}
+
+bool OurReader::pushError(const Value& value,
+                          const String& message,
+                          const Value& extra) {
+  ptrdiff_t length = end_ - begin_;
+  if (value.getOffsetStart() > length || value.getOffsetLimit() > length ||
+      extra.getOffsetLimit() > length)
+    return false;
+  Token token;
+  token.type_ = tokenError;
+  token.start_ = begin_ + value.getOffsetStart();
+  token.end_ = begin_ + value.getOffsetLimit();
+  ErrorInfo info;
+  info.token_ = token;
+  info.message_ = message;
+  info.extra_ = begin_ + extra.getOffsetStart();
+  errors_.push_back(info);
+  return true;
+}
+
+bool OurReader::good() const { return errors_.empty(); }
+
+class OurCharReader : public CharReader {
+  bool const collectComments_;
+  OurReader reader_;
+
+public:
+  OurCharReader(bool collectComments, OurFeatures const& features)
+      : collectComments_(collectComments), reader_(features) {}
+  bool parse(char const* beginDoc,
+             char const* endDoc,
+             Value* root,
+             String* errs) override {
+    bool ok = reader_.parse(beginDoc, endDoc, *root, collectComments_);
+    if (errs) {
+      *errs = reader_.getFormattedErrorMessages();
+    }
+    return ok;
+  }
+};
+
+CharReaderBuilder::CharReaderBuilder() { setDefaults(&settings_); }
+CharReaderBuilder::~CharReaderBuilder() = default;
+CharReader* CharReaderBuilder::newCharReader() const {
+  bool collectComments = settings_["collectComments"].asBool();
+  OurFeatures features = OurFeatures::all();
+  features.allowComments_ = settings_["allowComments"].asBool();
+  features.strictRoot_ = settings_["strictRoot"].asBool();
+  features.allowDroppedNullPlaceholders_ =
+      settings_["allowDroppedNullPlaceholders"].asBool();
+  features.allowNumericKeys_ = settings_["allowNumericKeys"].asBool();
+  features.allowSingleQuotes_ = settings_["allowSingleQuotes"].asBool();
+#if defined(JSON_HAS_INT64)
+  features.stackLimit_ = settings_["stackLimit"].asUInt64();
+#else
+  features.stackLimit_ = settings_["stackLimit"].asUInt();
+#endif
+  features.failIfExtra_ = settings_["failIfExtra"].asBool();
+  features.rejectDupKeys_ = settings_["rejectDupKeys"].asBool();
+  features.allowSpecialFloats_ = settings_["allowSpecialFloats"].asBool();
+  return new OurCharReader(collectComments, features);
+}
+static void getValidReaderKeys(std::set<String>* valid_keys) {
+  valid_keys->clear();
+  valid_keys->insert("collectComments");
+  valid_keys->insert("allowComments");
+  valid_keys->insert("strictRoot");
+  valid_keys->insert("allowDroppedNullPlaceholders");
+  valid_keys->insert("allowNumericKeys");
+  valid_keys->insert("allowSingleQuotes");
+  valid_keys->insert("stackLimit");
+  valid_keys->insert("failIfExtra");
+  valid_keys->insert("rejectDupKeys");
+  valid_keys->insert("allowSpecialFloats");
+}
+bool CharReaderBuilder::validate(Json::Value* invalid) const {
+  Json::Value my_invalid;
+  if (!invalid)
+    invalid = &my_invalid; // so we do not need to test for NULL
+  Json::Value& inv = *invalid;
+  std::set<String> valid_keys;
+  getValidReaderKeys(&valid_keys);
+  Value::Members keys = settings_.getMemberNames();
+  size_t n = keys.size();
+  for (size_t i = 0; i < n; ++i) {
+    String const& key = keys[i];
+    if (valid_keys.find(key) == valid_keys.end()) {
+      inv[key] = settings_[key];
+    }
+  }
+  return inv.empty();
+}
+Value& CharReaderBuilder::operator[](const String& key) {
+  return settings_[key];
+}
+// static
+void CharReaderBuilder::strictMode(Json::Value* settings) {
+  //! [CharReaderBuilderStrictMode]
+  (*settings)["allowComments"] = false;
+  (*settings)["strictRoot"] = true;
+  (*settings)["allowDroppedNullPlaceholders"] = false;
+  (*settings)["allowNumericKeys"] = false;
+  (*settings)["allowSingleQuotes"] = false;
+  (*settings)["stackLimit"] = 1000;
+  (*settings)["failIfExtra"] = true;
+  (*settings)["rejectDupKeys"] = true;
+  (*settings)["allowSpecialFloats"] = false;
+  //! [CharReaderBuilderStrictMode]
+}
+// static
+void CharReaderBuilder::setDefaults(Json::Value* settings) {
+  //! [CharReaderBuilderDefaults]
+  (*settings)["collectComments"] = true;
+  (*settings)["allowComments"] = true;
+  (*settings)["strictRoot"] = false;
+  (*settings)["allowDroppedNullPlaceholders"] = false;
+  (*settings)["allowNumericKeys"] = false;
+  (*settings)["allowSingleQuotes"] = false;
+  (*settings)["stackLimit"] = 1000;
+  (*settings)["failIfExtra"] = false;
+  (*settings)["rejectDupKeys"] = false;
+  (*settings)["allowSpecialFloats"] = false;
+  //! [CharReaderBuilderDefaults]
+}
+
+//////////////////////////////////
+// global functions
+
+bool parseFromStream(CharReader::Factory const& fact,
+                     IStream& sin,
+                     Value* root,
+                     String* errs) {
+  OStringStream ssin;
+  ssin << sin.rdbuf();
+  String doc = ssin.str();
+  char const* begin = doc.data();
+  char const* end = begin + doc.size();
+  // Note that we do not actually need a null-terminator.
+  CharReaderPtr const reader(fact.newCharReader());
+  return reader->parse(begin, end, root, errs);
+}
+
+IStream& operator>>(IStream& sin, Value& root) {
+  CharReaderBuilder b;
+  String errs;
+  bool ok = parseFromStream(b, sin, &root, &errs);
+  if (!ok) {
+    throwRuntimeError(errs);
+  }
+  return sin;
+}
+
+} // namespace Json
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: src/lib_json/json_reader.cpp
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: src/lib_json/json_valueiterator.inl
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+// included by json_value.cpp
+
+namespace Json {
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class ValueIteratorBase
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+ValueIteratorBase::ValueIteratorBase() : current_() {}
+
+ValueIteratorBase::ValueIteratorBase(
+    const Value::ObjectValues::iterator& current)
+    : current_(current), isNull_(false) {}
+
+Value& ValueIteratorBase::deref() const { return current_->second; }
+
+void ValueIteratorBase::increment() { ++current_; }
+
+void ValueIteratorBase::decrement() { --current_; }
+
+ValueIteratorBase::difference_type
+ValueIteratorBase::computeDistance(const SelfType& other) const {
+#ifdef JSON_USE_CPPTL_SMALLMAP
+  return other.current_ - current_;
+#else
+  // Iterator for null value are initialized using the default
+  // constructor, which initialize current_ to the default
+  // std::map::iterator. As begin() and end() are two instance
+  // of the default std::map::iterator, they can not be compared.
+  // To allow this, we handle this comparison specifically.
+  if (isNull_ && other.isNull_) {
+    return 0;
+  }
+
+  // Usage of std::distance is not portable (does not compile with Sun Studio 12
+  // RogueWave STL,
+  // which is the one used by default).
+  // Using a portable hand-made version for non random iterator instead:
+  //   return difference_type( std::distance( current_, other.current_ ) );
+  difference_type myDistance = 0;
+  for (Value::ObjectValues::iterator it = current_; it != other.current_;
+       ++it) {
+    ++myDistance;
+  }
+  return myDistance;
+#endif
+}
+
+bool ValueIteratorBase::isEqual(const SelfType& other) const {
+  if (isNull_) {
+    return other.isNull_;
+  }
+  return current_ == other.current_;
+}
+
+void ValueIteratorBase::copy(const SelfType& other) {
+  current_ = other.current_;
+  isNull_ = other.isNull_;
+}
+
+Value ValueIteratorBase::key() const {
+  const Value::CZString czstring = (*current_).first;
+  if (czstring.data()) {
+    if (czstring.isStaticString())
+      return Value(StaticString(czstring.data()));
+    return Value(czstring.data(), czstring.data() + czstring.length());
+  }
+  return Value(czstring.index());
+}
+
+UInt ValueIteratorBase::index() const {
+  const Value::CZString czstring = (*current_).first;
+  if (!czstring.data())
+    return czstring.index();
+  return Value::UInt(-1);
+}
+
+String ValueIteratorBase::name() const {
+  char const* keey;
+  char const* end;
+  keey = memberName(&end);
+  if (!keey)
+    return String();
+  return String(keey, end);
+}
+
+char const* ValueIteratorBase::memberName() const {
+  const char* cname = (*current_).first.data();
+  return cname ? cname : "";
+}
+
+char const* ValueIteratorBase::memberName(char const** end) const {
+  const char* cname = (*current_).first.data();
+  if (!cname) {
+    *end = nullptr;
+    return nullptr;
+  }
+  *end = cname + (*current_).first.length();
+  return cname;
+}
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class ValueConstIterator
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+ValueConstIterator::ValueConstIterator() = default;
+
+ValueConstIterator::ValueConstIterator(
+    const Value::ObjectValues::iterator& current)
+    : ValueIteratorBase(current) {}
+
+ValueConstIterator::ValueConstIterator(ValueIterator const& other)
+    : ValueIteratorBase(other) {}
+
+ValueConstIterator& ValueConstIterator::
+operator=(const ValueIteratorBase& other) {
+  copy(other);
+  return *this;
+}
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class ValueIterator
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+ValueIterator::ValueIterator() = default;
+
+ValueIterator::ValueIterator(const Value::ObjectValues::iterator& current)
+    : ValueIteratorBase(current) {}
+
+ValueIterator::ValueIterator(const ValueConstIterator& other)
+    : ValueIteratorBase(other) {
+  throwRuntimeError("ConstIterator to Iterator should never be allowed.");
+}
+
+ValueIterator::ValueIterator(const ValueIterator& other) = default;
+
+ValueIterator& ValueIterator::operator=(const SelfType& other) {
+  copy(other);
+  return *this;
+}
+
+} // namespace Json
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: src/lib_json/json_valueiterator.inl
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: src/lib_json/json_value.cpp
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2011 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include <json/assertions.h>
+#include <json/value.h>
+#include <json/writer.h>
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <cassert>
+#include <cmath>
+#include <cstring>
+#include <sstream>
+#include <utility>
+#ifdef JSON_USE_CPPTL
+#include <cpptl/conststring.h>
+#endif
+#include <algorithm> // min()
+#include <cstddef>   // size_t
+
+// Provide implementation equivalent of std::snprintf for older _MSC compilers
+#if defined(_MSC_VER) && _MSC_VER < 1900
+#include <stdarg.h>
+static int msvc_pre1900_c99_vsnprintf(char* outBuf,
+                                      size_t size,
+                                      const char* format,
+                                      va_list ap) {
+  int count = -1;
+  if (size != 0)
+    count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
+  if (count == -1)
+    count = _vscprintf(format, ap);
+  return count;
+}
+
+int JSON_API msvc_pre1900_c99_snprintf(char* outBuf,
+                                       size_t size,
+                                       const char* format,
+                                       ...) {
+  va_list ap;
+  va_start(ap, format);
+  const int count = msvc_pre1900_c99_vsnprintf(outBuf, size, format, ap);
+  va_end(ap);
+  return count;
+}
+#endif
+
+// Disable warning C4702 : unreachable code
+#if defined(_MSC_VER)
+#pragma warning(disable : 4702)
+#endif
+
+#define JSON_ASSERT_UNREACHABLE assert(false)
+
+namespace Json {
+
+// This is a walkaround to avoid the static initialization of Value::null.
+// kNull must be word-aligned to avoid crashing on ARM.  We use an alignment of
+// 8 (instead of 4) as a bit of future-proofing.
+#if defined(__ARMEL__)
+#define ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment)))
+#else
+#define ALIGNAS(byte_alignment)
+#endif
+// static const unsigned char ALIGNAS(8) kNull[sizeof(Value)] = { 0 };
+// const unsigned char& kNullRef = kNull[0];
+// const Value& Value::null = reinterpret_cast<const Value&>(kNullRef);
+// const Value& Value::nullRef = null;
+
+// static
+Value const& Value::nullSingleton() {
+  static Value const nullStatic;
+  return nullStatic;
+}
+
+// for backwards compatibility, we'll leave these global references around, but
+// DO NOT use them in JSONCPP library code any more!
+Value const& Value::null = Value::nullSingleton();
+Value const& Value::nullRef = Value::nullSingleton();
+
+const Int Value::minInt = Int(~(UInt(-1) / 2));
+const Int Value::maxInt = Int(UInt(-1) / 2);
+const UInt Value::maxUInt = UInt(-1);
+#if defined(JSON_HAS_INT64)
+const Int64 Value::minInt64 = Int64(~(UInt64(-1) / 2));
+const Int64 Value::maxInt64 = Int64(UInt64(-1) / 2);
+const UInt64 Value::maxUInt64 = UInt64(-1);
+// The constant is hard-coded because some compiler have trouble
+// converting Value::maxUInt64 to a double correctly (AIX/xlC).
+// Assumes that UInt64 is a 64 bits integer.
+static const double maxUInt64AsDouble = 18446744073709551615.0;
+#endif // defined(JSON_HAS_INT64)
+const LargestInt Value::minLargestInt = LargestInt(~(LargestUInt(-1) / 2));
+const LargestInt Value::maxLargestInt = LargestInt(LargestUInt(-1) / 2);
+const LargestUInt Value::maxLargestUInt = LargestUInt(-1);
+
+const UInt Value::defaultRealPrecision = 17;
+
+#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+template <typename T, typename U>
+static inline bool InRange(double d, T min, U max) {
+  // The casts can lose precision, but we are looking only for
+  // an approximate range. Might fail on edge cases though. ~cdunn
+  // return d >= static_cast<double>(min) && d <= static_cast<double>(max);
+  return d >= min && d <= max;
+}
+#else  // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+static inline double integerToDouble(Json::UInt64 value) {
+  return static_cast<double>(Int64(value / 2)) * 2.0 +
+         static_cast<double>(Int64(value & 1));
+}
+
+template <typename T> static inline double integerToDouble(T value) {
+  return static_cast<double>(value);
+}
+
+template <typename T, typename U>
+static inline bool InRange(double d, T min, U max) {
+  return d >= integerToDouble(min) && d <= integerToDouble(max);
+}
+#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+
+/** Duplicates the specified string value.
+ * @param value Pointer to the string to duplicate. Must be zero-terminated if
+ *              length is "unknown".
+ * @param length Length of the value. if equals to unknown, then it will be
+ *               computed using strlen(value).
+ * @return Pointer on the duplicate instance of string.
+ */
+static inline char* duplicateStringValue(const char* value, size_t length) {
+  // Avoid an integer overflow in the call to malloc below by limiting length
+  // to a sane value.
+  if (length >= static_cast<size_t>(Value::maxInt))
+    length = Value::maxInt - 1;
+
+  char* newString = static_cast<char*>(malloc(length + 1));
+  if (newString == nullptr) {
+    throwRuntimeError("in Json::Value::duplicateStringValue(): "
+                      "Failed to allocate string value buffer");
+  }
+  memcpy(newString, value, length);
+  newString[length] = 0;
+  return newString;
+}
+
+/* Record the length as a prefix.
+ */
+static inline char* duplicateAndPrefixStringValue(const char* value,
+                                                  unsigned int length) {
+  // Avoid an integer overflow in the call to malloc below by limiting length
+  // to a sane value.
+  JSON_ASSERT_MESSAGE(length <= static_cast<unsigned>(Value::maxInt) -
+                                    sizeof(unsigned) - 1U,
+                      "in Json::Value::duplicateAndPrefixStringValue(): "
+                      "length too big for prefixing");
+  unsigned actualLength = length + static_cast<unsigned>(sizeof(unsigned)) + 1U;
+  char* newString = static_cast<char*>(malloc(actualLength));
+  if (newString == nullptr) {
+    throwRuntimeError("in Json::Value::duplicateAndPrefixStringValue(): "
+                      "Failed to allocate string value buffer");
+  }
+  *reinterpret_cast<unsigned*>(newString) = length;
+  memcpy(newString + sizeof(unsigned), value, length);
+  newString[actualLength - 1U] =
+      0; // to avoid buffer over-run accidents by users later
+  return newString;
+}
+inline static void decodePrefixedString(bool isPrefixed,
+                                        char const* prefixed,
+                                        unsigned* length,
+                                        char const** value) {
+  if (!isPrefixed) {
+    *length = static_cast<unsigned>(strlen(prefixed));
+    *value = prefixed;
+  } else {
+    *length = *reinterpret_cast<unsigned const*>(prefixed);
+    *value = prefixed + sizeof(unsigned);
+  }
+}
+/** Free the string duplicated by
+ * duplicateStringValue()/duplicateAndPrefixStringValue().
+ */
+#if JSONCPP_USING_SECURE_MEMORY
+static inline void releasePrefixedStringValue(char* value) {
+  unsigned length = 0;
+  char const* valueDecoded;
+  decodePrefixedString(true, value, &length, &valueDecoded);
+  size_t const size = sizeof(unsigned) + length + 1U;
+  memset(value, 0, size);
+  free(value);
+}
+static inline void releaseStringValue(char* value, unsigned length) {
+  // length==0 => we allocated the strings memory
+  size_t size = (length == 0) ? strlen(value) : length;
+  memset(value, 0, size);
+  free(value);
+}
+#else  // !JSONCPP_USING_SECURE_MEMORY
+static inline void releasePrefixedStringValue(char* value) { free(value); }
+static inline void releaseStringValue(char* value, unsigned) { free(value); }
+#endif // JSONCPP_USING_SECURE_MEMORY
+
+} // namespace Json
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// ValueInternals...
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+#if !defined(JSON_IS_AMALGAMATION)
+
+#include "json_valueiterator.inl"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+
+Exception::Exception(String msg) : msg_(std::move(msg)) {}
+Exception::~Exception() JSONCPP_NOEXCEPT {}
+char const* Exception::what() const JSONCPP_NOEXCEPT { return msg_.c_str(); }
+RuntimeError::RuntimeError(String const& msg) : Exception(msg) {}
+LogicError::LogicError(String const& msg) : Exception(msg) {}
+JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
+  throw RuntimeError(msg);
+}
+JSONCPP_NORETURN void throwLogicError(String const& msg) {
+  throw LogicError(msg);
+}
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class Value::CommentInfo
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+Value::CommentInfo::CommentInfo() = default;
+
+Value::CommentInfo::~CommentInfo() {
+  if (comment_)
+    releaseStringValue(comment_, 0u);
+}
+
+void Value::CommentInfo::setComment(const char* text, size_t len) {
+  if (comment_) {
+    releaseStringValue(comment_, 0u);
+    comment_ = nullptr;
+  }
+  JSON_ASSERT(text != nullptr);
+  JSON_ASSERT_MESSAGE(
+      text[0] == '\0' || text[0] == '/',
+      "in Json::Value::setComment(): Comments must start with /");
+  // It seems that /**/ style comments are acceptable as well.
+  comment_ = duplicateStringValue(text, len);
+}
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class Value::CZString
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+// Notes: policy_ indicates if the string was allocated when
+// a string is stored.
+
+Value::CZString::CZString(ArrayIndex index) : cstr_(nullptr), index_(index) {}
+
+Value::CZString::CZString(char const* str,
+                          unsigned length,
+                          DuplicationPolicy allocate)
+    : cstr_(str) {
+  // allocate != duplicate
+  storage_.policy_ = allocate & 0x3;
+  storage_.length_ = length & 0x3FFFFFFF;
+}
+
+Value::CZString::CZString(const CZString& other) {
+  cstr_ = (other.storage_.policy_ != noDuplication && other.cstr_ != nullptr
+               ? duplicateStringValue(other.cstr_, other.storage_.length_)
+               : other.cstr_);
+  storage_.policy_ =
+      static_cast<unsigned>(
+          other.cstr_
+              ? (static_cast<DuplicationPolicy>(other.storage_.policy_) ==
+                         noDuplication
+                     ? noDuplication
+                     : duplicate)
+              : static_cast<DuplicationPolicy>(other.storage_.policy_)) &
+      3U;
+  storage_.length_ = other.storage_.length_;
+}
+
+#if JSON_HAS_RVALUE_REFERENCES
+Value::CZString::CZString(CZString&& other)
+    : cstr_(other.cstr_), index_(other.index_) {
+  other.cstr_ = nullptr;
+}
+#endif
+
+Value::CZString::~CZString() {
+  if (cstr_ && storage_.policy_ == duplicate) {
+    releaseStringValue(const_cast<char*>(cstr_),
+                       storage_.length_ + 1u); // +1 for null terminating
+                                               // character for sake of
+                                               // completeness but not actually
+                                               // necessary
+  }
+}
+
+void Value::CZString::swap(CZString& other) {
+  std::swap(cstr_, other.cstr_);
+  std::swap(index_, other.index_);
+}
+
+Value::CZString& Value::CZString::operator=(const CZString& other) {
+  cstr_ = other.cstr_;
+  index_ = other.index_;
+  return *this;
+}
+
+#if JSON_HAS_RVALUE_REFERENCES
+Value::CZString& Value::CZString::operator=(CZString&& other) {
+  cstr_ = other.cstr_;
+  index_ = other.index_;
+  other.cstr_ = nullptr;
+  return *this;
+}
+#endif
+
+bool Value::CZString::operator<(const CZString& other) const {
+  if (!cstr_)
+    return index_ < other.index_;
+  // return strcmp(cstr_, other.cstr_) < 0;
+  // Assume both are strings.
+  unsigned this_len = this->storage_.length_;
+  unsigned other_len = other.storage_.length_;
+  unsigned min_len = std::min<unsigned>(this_len, other_len);
+  JSON_ASSERT(this->cstr_ && other.cstr_);
+  int comp = memcmp(this->cstr_, other.cstr_, min_len);
+  if (comp < 0)
+    return true;
+  if (comp > 0)
+    return false;
+  return (this_len < other_len);
+}
+
+bool Value::CZString::operator==(const CZString& other) const {
+  if (!cstr_)
+    return index_ == other.index_;
+  // return strcmp(cstr_, other.cstr_) == 0;
+  // Assume both are strings.
+  unsigned this_len = this->storage_.length_;
+  unsigned other_len = other.storage_.length_;
+  if (this_len != other_len)
+    return false;
+  JSON_ASSERT(this->cstr_ && other.cstr_);
+  int comp = memcmp(this->cstr_, other.cstr_, this_len);
+  return comp == 0;
+}
+
+ArrayIndex Value::CZString::index() const { return index_; }
+
+// const char* Value::CZString::c_str() const { return cstr_; }
+const char* Value::CZString::data() const { return cstr_; }
+unsigned Value::CZString::length() const { return storage_.length_; }
+bool Value::CZString::isStaticString() const {
+  return storage_.policy_ == noDuplication;
+}
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class Value::Value
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+/*! \internal Default constructor initialization must be equivalent to:
+ * memset( this, 0, sizeof(Value) )
+ * This optimization is used in ValueInternalMap fast allocator.
+ */
+Value::Value(ValueType type) {
+  static char const emptyString[] = "";
+  initBasic(type);
+  switch (type) {
+  case nullValue:
+    break;
+  case intValue:
+  case uintValue:
+    value_.int_ = 0;
+    break;
+  case realValue:
+    value_.real_ = 0.0;
+    break;
+  case stringValue:
+    // allocated_ == false, so this is safe.
+    value_.string_ = const_cast<char*>(static_cast<char const*>(emptyString));
+    break;
+  case arrayValue:
+  case objectValue:
+    value_.map_ = new ObjectValues();
+    break;
+  case booleanValue:
+    value_.bool_ = false;
+    break;
+  default:
+    JSON_ASSERT_UNREACHABLE;
+  }
+}
+
+Value::Value(Int value) {
+  initBasic(intValue);
+  value_.int_ = value;
+}
+
+Value::Value(UInt value) {
+  initBasic(uintValue);
+  value_.uint_ = value;
+}
+#if defined(JSON_HAS_INT64)
+Value::Value(Int64 value) {
+  initBasic(intValue);
+  value_.int_ = value;
+}
+Value::Value(UInt64 value) {
+  initBasic(uintValue);
+  value_.uint_ = value;
+}
+#endif // defined(JSON_HAS_INT64)
+
+Value::Value(double value) {
+  initBasic(realValue);
+  value_.real_ = value;
+}
+
+Value::Value(const char* value) {
+  initBasic(stringValue, true);
+  JSON_ASSERT_MESSAGE(value != nullptr,
+                      "Null Value Passed to Value Constructor");
+  value_.string_ = duplicateAndPrefixStringValue(
+      value, static_cast<unsigned>(strlen(value)));
+}
+
+Value::Value(const char* begin, const char* end) {
+  initBasic(stringValue, true);
+  value_.string_ =
+      duplicateAndPrefixStringValue(begin, static_cast<unsigned>(end - begin));
+}
+
+Value::Value(const String& value) {
+  initBasic(stringValue, true);
+  value_.string_ = duplicateAndPrefixStringValue(
+      value.data(), static_cast<unsigned>(value.length()));
+}
+
+Value::Value(const StaticString& value) {
+  initBasic(stringValue);
+  value_.string_ = const_cast<char*>(value.c_str());
+}
+
+#ifdef JSON_USE_CPPTL
+Value::Value(const CppTL::ConstString& value) {
+  initBasic(stringValue, true);
+  value_.string_ = duplicateAndPrefixStringValue(
+      value, static_cast<unsigned>(value.length()));
+}
+#endif
+
+Value::Value(bool value) {
+  initBasic(booleanValue);
+  value_.bool_ = value;
+}
+
+Value::Value(const Value& other) {
+  dupPayload(other);
+  dupMeta(other);
+}
+
+Value::Value(Value&& other) {
+  initBasic(nullValue);
+  swap(other);
+}
+
+Value::~Value() {
+  releasePayload();
+  delete[] comments_;
+  value_.uint_ = 0;
+}
+
+Value& Value::operator=(const Value& other) {
+  Value(other).swap(*this);
+  return *this;
+}
+
+Value& Value::operator=(Value&& other) {
+  other.swap(*this);
+  return *this;
+}
+
+void Value::swapPayload(Value& other) {
+  std::swap(bits_, other.bits_);
+  std::swap(value_, other.value_);
+}
+
+void Value::copyPayload(const Value& other) {
+  releasePayload();
+  dupPayload(other);
+}
+
+void Value::swap(Value& other) {
+  swapPayload(other);
+  std::swap(comments_, other.comments_);
+  std::swap(start_, other.start_);
+  std::swap(limit_, other.limit_);
+}
+
+void Value::copy(const Value& other) {
+  copyPayload(other);
+  delete[] comments_;
+  dupMeta(other);
+}
+
+ValueType Value::type() const {
+  return static_cast<ValueType>(bits_.value_type_);
+}
+
+int Value::compare(const Value& other) const {
+  if (*this < other)
+    return -1;
+  if (*this > other)
+    return 1;
+  return 0;
+}
+
+bool Value::operator<(const Value& other) const {
+  int typeDelta = type() - other.type();
+  if (typeDelta)
+    return typeDelta < 0 ? true : false;
+  switch (type()) {
+  case nullValue:
+    return false;
+  case intValue:
+    return value_.int_ < other.value_.int_;
+  case uintValue:
+    return value_.uint_ < other.value_.uint_;
+  case realValue:
+    return value_.real_ < other.value_.real_;
+  case booleanValue:
+    return value_.bool_ < other.value_.bool_;
+  case stringValue: {
+    if ((value_.string_ == nullptr) || (other.value_.string_ == nullptr)) {
+      if (other.value_.string_)
+        return true;
+      else
+        return false;
+    }
+    unsigned this_len;
+    unsigned other_len;
+    char const* this_str;
+    char const* other_str;
+    decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
+                         &this_str);
+    decodePrefixedString(other.isAllocated(), other.value_.string_, &other_len,
+                         &other_str);
+    unsigned min_len = std::min<unsigned>(this_len, other_len);
+    JSON_ASSERT(this_str && other_str);
+    int comp = memcmp(this_str, other_str, min_len);
+    if (comp < 0)
+      return true;
+    if (comp > 0)
+      return false;
+    return (this_len < other_len);
+  }
+  case arrayValue:
+  case objectValue: {
+    int delta = int(value_.map_->size() - other.value_.map_->size());
+    if (delta)
+      return delta < 0;
+    return (*value_.map_) < (*other.value_.map_);
+  }
+  default:
+    JSON_ASSERT_UNREACHABLE;
+  }
+  return false; // unreachable
+}
+
+bool Value::operator<=(const Value& other) const { return !(other < *this); }
+
+bool Value::operator>=(const Value& other) const { return !(*this < other); }
+
+bool Value::operator>(const Value& other) const { return other < *this; }
+
+bool Value::operator==(const Value& other) const {
+  if (type() != other.type())
+    return false;
+  switch (type()) {
+  case nullValue:
+    return true;
+  case intValue:
+    return value_.int_ == other.value_.int_;
+  case uintValue:
+    return value_.uint_ == other.value_.uint_;
+  case realValue:
+    return value_.real_ == other.value_.real_;
+  case booleanValue:
+    return value_.bool_ == other.value_.bool_;
+  case stringValue: {
+    if ((value_.string_ == nullptr) || (other.value_.string_ == nullptr)) {
+      return (value_.string_ == other.value_.string_);
+    }
+    unsigned this_len;
+    unsigned other_len;
+    char const* this_str;
+    char const* other_str;
+    decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
+                         &this_str);
+    decodePrefixedString(other.isAllocated(), other.value_.string_, &other_len,
+                         &other_str);
+    if (this_len != other_len)
+      return false;
+    JSON_ASSERT(this_str && other_str);
+    int comp = memcmp(this_str, other_str, this_len);
+    return comp == 0;
+  }
+  case arrayValue:
+  case objectValue:
+    return value_.map_->size() == other.value_.map_->size() &&
+           (*value_.map_) == (*other.value_.map_);
+  default:
+    JSON_ASSERT_UNREACHABLE;
+  }
+  return false; // unreachable
+}
+
+bool Value::operator!=(const Value& other) const { return !(*this == other); }
+
+const char* Value::asCString() const {
+  JSON_ASSERT_MESSAGE(type() == stringValue,
+                      "in Json::Value::asCString(): requires stringValue");
+  if (value_.string_ == nullptr)
+    return nullptr;
+  unsigned this_len;
+  char const* this_str;
+  decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
+                       &this_str);
+  return this_str;
+}
+
+#if JSONCPP_USING_SECURE_MEMORY
+unsigned Value::getCStringLength() const {
+  JSON_ASSERT_MESSAGE(type() == stringValue,
+                      "in Json::Value::asCString(): requires stringValue");
+  if (value_.string_ == 0)
+    return 0;
+  unsigned this_len;
+  char const* this_str;
+  decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
+                       &this_str);
+  return this_len;
+}
+#endif
+
+bool Value::getString(char const** begin, char const** end) const {
+  if (type() != stringValue)
+    return false;
+  if (value_.string_ == nullptr)
+    return false;
+  unsigned length;
+  decodePrefixedString(this->isAllocated(), this->value_.string_, &length,
+                       begin);
+  *end = *begin + length;
+  return true;
+}
+
+String Value::asString() const {
+  switch (type()) {
+  case nullValue:
+    return "";
+  case stringValue: {
+    if (value_.string_ == nullptr)
+      return "";
+    unsigned this_len;
+    char const* this_str;
+    decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
+                         &this_str);
+    return String(this_str, this_len);
+  }
+  case booleanValue:
+    return value_.bool_ ? "true" : "false";
+  case intValue:
+    return valueToString(value_.int_);
+  case uintValue:
+    return valueToString(value_.uint_);
+  case realValue:
+    return valueToString(value_.real_);
+  default:
+    JSON_FAIL_MESSAGE("Type is not convertible to string");
+  }
+}
+
+#ifdef JSON_USE_CPPTL
+CppTL::ConstString Value::asConstString() const {
+  unsigned len;
+  char const* str;
+  decodePrefixedString(isAllocated(), value_.string_, &len, &str);
+  return CppTL::ConstString(str, len);
+}
+#endif
+
+Value::Int Value::asInt() const {
+  switch (type()) {
+  case intValue:
+    JSON_ASSERT_MESSAGE(isInt(), "LargestInt out of Int range");
+    return Int(value_.int_);
+  case uintValue:
+    JSON_ASSERT_MESSAGE(isInt(), "LargestUInt out of Int range");
+    return Int(value_.uint_);
+  case realValue:
+    JSON_ASSERT_MESSAGE(InRange(value_.real_, minInt, maxInt),
+                        "double out of Int range");
+    return Int(value_.real_);
+  case nullValue:
+    return 0;
+  case booleanValue:
+    return value_.bool_ ? 1 : 0;
+  default:
+    break;
+  }
+  JSON_FAIL_MESSAGE("Value is not convertible to Int.");
+}
+
+Value::UInt Value::asUInt() const {
+  switch (type()) {
+  case intValue:
+    JSON_ASSERT_MESSAGE(isUInt(), "LargestInt out of UInt range");
+    return UInt(value_.int_);
+  case uintValue:
+    JSON_ASSERT_MESSAGE(isUInt(), "LargestUInt out of UInt range");
+    return UInt(value_.uint_);
+  case realValue:
+    JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt),
+                        "double out of UInt range");
+    return UInt(value_.real_);
+  case nullValue:
+    return 0;
+  case booleanValue:
+    return value_.bool_ ? 1 : 0;
+  default:
+    break;
+  }
+  JSON_FAIL_MESSAGE("Value is not convertible to UInt.");
+}
+
+#if defined(JSON_HAS_INT64)
+
+Value::Int64 Value::asInt64() const {
+  switch (type()) {
+  case intValue:
+    return Int64(value_.int_);
+  case uintValue:
+    JSON_ASSERT_MESSAGE(isInt64(), "LargestUInt out of Int64 range");
+    return Int64(value_.uint_);
+  case realValue:
+    JSON_ASSERT_MESSAGE(InRange(value_.real_, minInt64, maxInt64),
+                        "double out of Int64 range");
+    return Int64(value_.real_);
+  case nullValue:
+    return 0;
+  case booleanValue:
+    return value_.bool_ ? 1 : 0;
+  default:
+    break;
+  }
+  JSON_FAIL_MESSAGE("Value is not convertible to Int64.");
+}
+
+Value::UInt64 Value::asUInt64() const {
+  switch (type()) {
+  case intValue:
+    JSON_ASSERT_MESSAGE(isUInt64(), "LargestInt out of UInt64 range");
+    return UInt64(value_.int_);
+  case uintValue:
+    return UInt64(value_.uint_);
+  case realValue:
+    JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt64),
+                        "double out of UInt64 range");
+    return UInt64(value_.real_);
+  case nullValue:
+    return 0;
+  case booleanValue:
+    return value_.bool_ ? 1 : 0;
+  default:
+    break;
+  }
+  JSON_FAIL_MESSAGE("Value is not convertible to UInt64.");
+}
+#endif // if defined(JSON_HAS_INT64)
+
+LargestInt Value::asLargestInt() const {
+#if defined(JSON_NO_INT64)
+  return asInt();
+#else
+  return asInt64();
+#endif
+}
+
+LargestUInt Value::asLargestUInt() const {
+#if defined(JSON_NO_INT64)
+  return asUInt();
+#else
+  return asUInt64();
+#endif
+}
+
+double Value::asDouble() const {
+  switch (type()) {
+  case intValue:
+    return static_cast<double>(value_.int_);
+  case uintValue:
+#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+    return static_cast<double>(value_.uint_);
+#else  // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+    return integerToDouble(value_.uint_);
+#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+  case realValue:
+    return value_.real_;
+  case nullValue:
+    return 0.0;
+  case booleanValue:
+    return value_.bool_ ? 1.0 : 0.0;
+  default:
+    break;
+  }
+  JSON_FAIL_MESSAGE("Value is not convertible to double.");
+}
+
+float Value::asFloat() const {
+  switch (type()) {
+  case intValue:
+    return static_cast<float>(value_.int_);
+  case uintValue:
+#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+    return static_cast<float>(value_.uint_);
+#else  // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+    // This can fail (silently?) if the value is bigger than MAX_FLOAT.
+    return static_cast<float>(integerToDouble(value_.uint_));
+#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+  case realValue:
+    return static_cast<float>(value_.real_);
+  case nullValue:
+    return 0.0;
+  case booleanValue:
+    return value_.bool_ ? 1.0f : 0.0f;
+  default:
+    break;
+  }
+  JSON_FAIL_MESSAGE("Value is not convertible to float.");
+}
+
+bool Value::asBool() const {
+  switch (type()) {
+  case booleanValue:
+    return value_.bool_;
+  case nullValue:
+    return false;
+  case intValue:
+    return value_.int_ ? true : false;
+  case uintValue:
+    return value_.uint_ ? true : false;
+  case realValue:
+    // This is kind of strange. Not recommended.
+    return (value_.real_ != 0.0) ? true : false;
+  default:
+    break;
+  }
+  JSON_FAIL_MESSAGE("Value is not convertible to bool.");
+}
+
+bool Value::isConvertibleTo(ValueType other) const {
+  switch (other) {
+  case nullValue:
+    return (isNumeric() && asDouble() == 0.0) ||
+           (type() == booleanValue && value_.bool_ == false) ||
+           (type() == stringValue && asString().empty()) ||
+           (type() == arrayValue && value_.map_->empty()) ||
+           (type() == objectValue && value_.map_->empty()) ||
+           type() == nullValue;
+  case intValue:
+    return isInt() ||
+           (type() == realValue && InRange(value_.real_, minInt, maxInt)) ||
+           type() == booleanValue || type() == nullValue;
+  case uintValue:
+    return isUInt() ||
+           (type() == realValue && InRange(value_.real_, 0, maxUInt)) ||
+           type() == booleanValue || type() == nullValue;
+  case realValue:
+    return isNumeric() || type() == booleanValue || type() == nullValue;
+  case booleanValue:
+    return isNumeric() || type() == booleanValue || type() == nullValue;
+  case stringValue:
+    return isNumeric() || type() == booleanValue || type() == stringValue ||
+           type() == nullValue;
+  case arrayValue:
+    return type() == arrayValue || type() == nullValue;
+  case objectValue:
+    return type() == objectValue || type() == nullValue;
+  }
+  JSON_ASSERT_UNREACHABLE;
+  return false;
+}
+
+/// Number of values in array or object
+ArrayIndex Value::size() const {
+  switch (type()) {
+  case nullValue:
+  case intValue:
+  case uintValue:
+  case realValue:
+  case booleanValue:
+  case stringValue:
+    return 0;
+  case arrayValue: // size of the array is highest index + 1
+    if (!value_.map_->empty()) {
+      ObjectValues::const_iterator itLast = value_.map_->end();
+      --itLast;
+      return (*itLast).first.index() + 1;
+    }
+    return 0;
+  case objectValue:
+    return ArrayIndex(value_.map_->size());
+  }
+  JSON_ASSERT_UNREACHABLE;
+  return 0; // unreachable;
+}
+
+bool Value::empty() const {
+  if (isNull() || isArray() || isObject())
+    return size() == 0u;
+  else
+    return false;
+}
+
+Value::operator bool() const { return !isNull(); }
+
+void Value::clear() {
+  JSON_ASSERT_MESSAGE(type() == nullValue || type() == arrayValue ||
+                          type() == objectValue,
+                      "in Json::Value::clear(): requires complex value");
+  start_ = 0;
+  limit_ = 0;
+  switch (type()) {
+  case arrayValue:
+  case objectValue:
+    value_.map_->clear();
+    break;
+  default:
+    break;
+  }
+}
+
+void Value::resize(ArrayIndex newSize) {
+  JSON_ASSERT_MESSAGE(type() == nullValue || type() == arrayValue,
+                      "in Json::Value::resize(): requires arrayValue");
+  if (type() == nullValue)
+    *this = Value(arrayValue);
+  ArrayIndex oldSize = size();
+  if (newSize == 0)
+    clear();
+  else if (newSize > oldSize)
+    this->operator[](newSize - 1);
+  else {
+    for (ArrayIndex index = newSize; index < oldSize; ++index) {
+      value_.map_->erase(index);
+    }
+    JSON_ASSERT(size() == newSize);
+  }
+}
+
+Value& Value::operator[](ArrayIndex index) {
+  JSON_ASSERT_MESSAGE(
+      type() == nullValue || type() == arrayValue,
+      "in Json::Value::operator[](ArrayIndex): requires arrayValue");
+  if (type() == nullValue)
+    *this = Value(arrayValue);
+  CZString key(index);
+  auto it = value_.map_->lower_bound(key);
+  if (it != value_.map_->end() && (*it).first == key)
+    return (*it).second;
+
+  ObjectValues::value_type defaultValue(key, nullSingleton());
+  it = value_.map_->insert(it, defaultValue);
+  return (*it).second;
+}
+
+Value& Value::operator[](int index) {
+  JSON_ASSERT_MESSAGE(
+      index >= 0,
+      "in Json::Value::operator[](int index): index cannot be negative");
+  return (*this)[ArrayIndex(index)];
+}
+
+const Value& Value::operator[](ArrayIndex index) const {
+  JSON_ASSERT_MESSAGE(
+      type() == nullValue || type() == arrayValue,
+      "in Json::Value::operator[](ArrayIndex)const: requires arrayValue");
+  if (type() == nullValue)
+    return nullSingleton();
+  CZString key(index);
+  ObjectValues::const_iterator it = value_.map_->find(key);
+  if (it == value_.map_->end())
+    return nullSingleton();
+  return (*it).second;
+}
+
+const Value& Value::operator[](int index) const {
+  JSON_ASSERT_MESSAGE(
+      index >= 0,
+      "in Json::Value::operator[](int index) const: index cannot be negative");
+  return (*this)[ArrayIndex(index)];
+}
+
+void Value::initBasic(ValueType type, bool allocated) {
+  setType(type);
+  setIsAllocated(allocated);
+  comments_ = nullptr;
+  start_ = 0;
+  limit_ = 0;
+}
+
+void Value::dupPayload(const Value& other) {
+  setType(other.type());
+  setIsAllocated(false);
+  switch (type()) {
+  case nullValue:
+  case intValue:
+  case uintValue:
+  case realValue:
+  case booleanValue:
+    value_ = other.value_;
+    break;
+  case stringValue:
+    if (other.value_.string_ && other.isAllocated()) {
+      unsigned len;
+      char const* str;
+      decodePrefixedString(other.isAllocated(), other.value_.string_, &len,
+                           &str);
+      value_.string_ = duplicateAndPrefixStringValue(str, len);
+      setIsAllocated(true);
+    } else {
+      value_.string_ = other.value_.string_;
+    }
+    break;
+  case arrayValue:
+  case objectValue:
+    value_.map_ = new ObjectValues(*other.value_.map_);
+    break;
+  default:
+    JSON_ASSERT_UNREACHABLE;
+  }
+}
+
+void Value::releasePayload() {
+  switch (type()) {
+  case nullValue:
+  case intValue:
+  case uintValue:
+  case realValue:
+  case booleanValue:
+    break;
+  case stringValue:
+    if (isAllocated())
+      releasePrefixedStringValue(value_.string_);
+    break;
+  case arrayValue:
+  case objectValue:
+    delete value_.map_;
+    break;
+  default:
+    JSON_ASSERT_UNREACHABLE;
+  }
+}
+
+void Value::dupMeta(const Value& other) {
+  if (other.comments_) {
+    comments_ = new CommentInfo[numberOfCommentPlacement];
+    for (int comment = 0; comment < numberOfCommentPlacement; ++comment) {
+      const CommentInfo& otherComment = other.comments_[comment];
+      if (otherComment.comment_)
+        comments_[comment].setComment(otherComment.comment_,
+                                      strlen(otherComment.comment_));
+    }
+  } else {
+    comments_ = nullptr;
+  }
+  start_ = other.start_;
+  limit_ = other.limit_;
+}
+
+// Access an object value by name, create a null member if it does not exist.
+// @pre Type of '*this' is object or null.
+// @param key is null-terminated.
+Value& Value::resolveReference(const char* key) {
+  JSON_ASSERT_MESSAGE(
+      type() == nullValue || type() == objectValue,
+      "in Json::Value::resolveReference(): requires objectValue");
+  if (type() == nullValue)
+    *this = Value(objectValue);
+  CZString actualKey(key, static_cast<unsigned>(strlen(key)),
+                     CZString::noDuplication); // NOTE!
+  auto it = value_.map_->lower_bound(actualKey);
+  if (it != value_.map_->end() && (*it).first == actualKey)
+    return (*it).second;
+
+  ObjectValues::value_type defaultValue(actualKey, nullSingleton());
+  it = value_.map_->insert(it, defaultValue);
+  Value& value = (*it).second;
+  return value;
+}
+
+// @param key is not null-terminated.
+Value& Value::resolveReference(char const* key, char const* end) {
+  JSON_ASSERT_MESSAGE(
+      type() == nullValue || type() == objectValue,
+      "in Json::Value::resolveReference(key, end): requires objectValue");
+  if (type() == nullValue)
+    *this = Value(objectValue);
+  CZString actualKey(key, static_cast<unsigned>(end - key),
+                     CZString::duplicateOnCopy);
+  auto it = value_.map_->lower_bound(actualKey);
+  if (it != value_.map_->end() && (*it).first == actualKey)
+    return (*it).second;
+
+  ObjectValues::value_type defaultValue(actualKey, nullSingleton());
+  it = value_.map_->insert(it, defaultValue);
+  Value& value = (*it).second;
+  return value;
+}
+
+Value Value::get(ArrayIndex index, const Value& defaultValue) const {
+  const Value* value = &((*this)[index]);
+  return value == &nullSingleton() ? defaultValue : *value;
+}
+
+bool Value::isValidIndex(ArrayIndex index) const { return index < size(); }
+
+Value const* Value::find(char const* begin, char const* end) const {
+  JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
+                      "in Json::Value::find(key, end, found): requires "
+                      "objectValue or nullValue");
+  if (type() == nullValue)
+    return nullptr;
+  CZString actualKey(begin, static_cast<unsigned>(end - begin),
+                     CZString::noDuplication);
+  ObjectValues::const_iterator it = value_.map_->find(actualKey);
+  if (it == value_.map_->end())
+    return nullptr;
+  return &(*it).second;
+}
+const Value& Value::operator[](const char* key) const {
+  Value const* found = find(key, key + strlen(key));
+  if (!found)
+    return nullSingleton();
+  return *found;
+}
+Value const& Value::operator[](const String& key) const {
+  Value const* found = find(key.data(), key.data() + key.length());
+  if (!found)
+    return nullSingleton();
+  return *found;
+}
+
+Value& Value::operator[](const char* key) {
+  return resolveReference(key, key + strlen(key));
+}
+
+Value& Value::operator[](const String& key) {
+  return resolveReference(key.data(), key.data() + key.length());
+}
+
+Value& Value::operator[](const StaticString& key) {
+  return resolveReference(key.c_str());
+}
+
+#ifdef JSON_USE_CPPTL
+Value& Value::operator[](const CppTL::ConstString& key) {
+  return resolveReference(key.c_str(), key.end_c_str());
+}
+Value const& Value::operator[](CppTL::ConstString const& key) const {
+  Value const* found = find(key.c_str(), key.end_c_str());
+  if (!found)
+    return nullSingleton();
+  return *found;
+}
+#endif
+
+Value& Value::append(const Value& value) { return (*this)[size()] = value; }
+
+#if JSON_HAS_RVALUE_REFERENCES
+Value& Value::append(Value&& value) {
+  return (*this)[size()] = std::move(value);
+}
+#endif
+
+Value Value::get(char const* begin,
+                 char const* end,
+                 Value const& defaultValue) const {
+  Value const* found = find(begin, end);
+  return !found ? defaultValue : *found;
+}
+Value Value::get(char const* key, Value const& defaultValue) const {
+  return get(key, key + strlen(key), defaultValue);
+}
+Value Value::get(String const& key, Value const& defaultValue) const {
+  return get(key.data(), key.data() + key.length(), defaultValue);
+}
+
+bool Value::removeMember(const char* begin, const char* end, Value* removed) {
+  if (type() != objectValue) {
+    return false;
+  }
+  CZString actualKey(begin, static_cast<unsigned>(end - begin),
+                     CZString::noDuplication);
+  auto it = value_.map_->find(actualKey);
+  if (it == value_.map_->end())
+    return false;
+  if (removed)
+#if JSON_HAS_RVALUE_REFERENCES
+    *removed = std::move(it->second);
+#else
+    *removed = it->second;
+#endif
+  value_.map_->erase(it);
+  return true;
+}
+bool Value::removeMember(const char* key, Value* removed) {
+  return removeMember(key, key + strlen(key), removed);
+}
+bool Value::removeMember(String const& key, Value* removed) {
+  return removeMember(key.data(), key.data() + key.length(), removed);
+}
+void Value::removeMember(const char* key) {
+  JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
+                      "in Json::Value::removeMember(): requires objectValue");
+  if (type() == nullValue)
+    return;
+
+  CZString actualKey(key, unsigned(strlen(key)), CZString::noDuplication);
+  value_.map_->erase(actualKey);
+}
+void Value::removeMember(const String& key) { removeMember(key.c_str()); }
+
+bool Value::removeIndex(ArrayIndex index, Value* removed) {
+  if (type() != arrayValue) {
+    return false;
+  }
+  CZString key(index);
+  auto it = value_.map_->find(key);
+  if (it == value_.map_->end()) {
+    return false;
+  }
+  if (removed)
+    *removed = it->second;
+  ArrayIndex oldSize = size();
+  // shift left all items left, into the place of the "removed"
+  for (ArrayIndex i = index; i < (oldSize - 1); ++i) {
+    CZString keey(i);
+    (*value_.map_)[keey] = (*this)[i + 1];
+  }
+  // erase the last one ("leftover")
+  CZString keyLast(oldSize - 1);
+  auto itLast = value_.map_->find(keyLast);
+  value_.map_->erase(itLast);
+  return true;
+}
+
+#ifdef JSON_USE_CPPTL
+Value Value::get(const CppTL::ConstString& key,
+                 const Value& defaultValue) const {
+  return get(key.c_str(), key.end_c_str(), defaultValue);
+}
+#endif
+
+bool Value::isMember(char const* begin, char const* end) const {
+  Value const* value = find(begin, end);
+  return nullptr != value;
+}
+bool Value::isMember(char const* key) const {
+  return isMember(key, key + strlen(key));
+}
+bool Value::isMember(String const& key) const {
+  return isMember(key.data(), key.data() + key.length());
+}
+
+#ifdef JSON_USE_CPPTL
+bool Value::isMember(const CppTL::ConstString& key) const {
+  return isMember(key.c_str(), key.end_c_str());
+}
+#endif
+
+Value::Members Value::getMemberNames() const {
+  JSON_ASSERT_MESSAGE(
+      type() == nullValue || type() == objectValue,
+      "in Json::Value::getMemberNames(), value must be objectValue");
+  if (type() == nullValue)
+    return Value::Members();
+  Members members;
+  members.reserve(value_.map_->size());
+  ObjectValues::const_iterator it = value_.map_->begin();
+  ObjectValues::const_iterator itEnd = value_.map_->end();
+  for (; it != itEnd; ++it) {
+    members.push_back(String((*it).first.data(), (*it).first.length()));
+  }
+  return members;
+}
+//
+//# ifdef JSON_USE_CPPTL
+// EnumMemberNames
+// Value::enumMemberNames() const
+//{
+//   if ( type() == objectValue )
+//   {
+//      return CppTL::Enum::any(  CppTL::Enum::transform(
+//         CppTL::Enum::keys( *(value_.map_), CppTL::Type<const CZString &>() ),
+//         MemberNamesTransform() ) );
+//   }
+//   return EnumMemberNames();
+//}
+//
+//
+// EnumValues
+// Value::enumValues() const
+//{
+//   if ( type() == objectValue  ||  type() == arrayValue )
+//      return CppTL::Enum::anyValues( *(value_.map_),
+//                                     CppTL::Type<const Value &>() );
+//   return EnumValues();
+//}
+//
+//# endif
+
+static bool IsIntegral(double d) {
+  double integral_part;
+  return modf(d, &integral_part) == 0.0;
+}
+
+bool Value::isNull() const { return type() == nullValue; }
+
+bool Value::isBool() const { return type() == booleanValue; }
+
+bool Value::isInt() const {
+  switch (type()) {
+  case intValue:
+#if defined(JSON_HAS_INT64)
+    return value_.int_ >= minInt && value_.int_ <= maxInt;
+#else
+    return true;
+#endif
+  case uintValue:
+    return value_.uint_ <= UInt(maxInt);
+  case realValue:
+    return value_.real_ >= minInt && value_.real_ <= maxInt &&
+           IsIntegral(value_.real_);
+  default:
+    break;
+  }
+  return false;
+}
+
+bool Value::isUInt() const {
+  switch (type()) {
+  case intValue:
+#if defined(JSON_HAS_INT64)
+    return value_.int_ >= 0 && LargestUInt(value_.int_) <= LargestUInt(maxUInt);
+#else
+    return value_.int_ >= 0;
+#endif
+  case uintValue:
+#if defined(JSON_HAS_INT64)
+    return value_.uint_ <= maxUInt;
+#else
+    return true;
+#endif
+  case realValue:
+    return value_.real_ >= 0 && value_.real_ <= maxUInt &&
+           IsIntegral(value_.real_);
+  default:
+    break;
+  }
+  return false;
+}
+
+bool Value::isInt64() const {
+#if defined(JSON_HAS_INT64)
+  switch (type()) {
+  case intValue:
+    return true;
+  case uintValue:
+    return value_.uint_ <= UInt64(maxInt64);
+  case realValue:
+    // Note that maxInt64 (= 2^63 - 1) is not exactly representable as a
+    // double, so double(maxInt64) will be rounded up to 2^63. Therefore we
+    // require the value to be strictly less than the limit.
+    return value_.real_ >= double(minInt64) &&
+           value_.real_ < double(maxInt64) && IsIntegral(value_.real_);
+  default:
+    break;
+  }
+#endif // JSON_HAS_INT64
+  return false;
+}
+
+bool Value::isUInt64() const {
+#if defined(JSON_HAS_INT64)
+  switch (type()) {
+  case intValue:
+    return value_.int_ >= 0;
+  case uintValue:
+    return true;
+  case realValue:
+    // Note that maxUInt64 (= 2^64 - 1) is not exactly representable as a
+    // double, so double(maxUInt64) will be rounded up to 2^64. Therefore we
+    // require the value to be strictly less than the limit.
+    return value_.real_ >= 0 && value_.real_ < maxUInt64AsDouble &&
+           IsIntegral(value_.real_);
+  default:
+    break;
+  }
+#endif // JSON_HAS_INT64
+  return false;
+}
+
+bool Value::isIntegral() const {
+  switch (type()) {
+  case intValue:
+  case uintValue:
+    return true;
+  case realValue:
+#if defined(JSON_HAS_INT64)
+    // Note that maxUInt64 (= 2^64 - 1) is not exactly representable as a
+    // double, so double(maxUInt64) will be rounded up to 2^64. Therefore we
+    // require the value to be strictly less than the limit.
+    return value_.real_ >= double(minInt64) &&
+           value_.real_ < maxUInt64AsDouble && IsIntegral(value_.real_);
+#else
+    return value_.real_ >= minInt && value_.real_ <= maxUInt &&
+           IsIntegral(value_.real_);
+#endif // JSON_HAS_INT64
+  default:
+    break;
+  }
+  return false;
+}
+
+bool Value::isDouble() const {
+  return type() == intValue || type() == uintValue || type() == realValue;
+}
+
+bool Value::isNumeric() const { return isDouble(); }
+
+bool Value::isString() const { return type() == stringValue; }
+
+bool Value::isArray() const { return type() == arrayValue; }
+
+bool Value::isObject() const { return type() == objectValue; }
+
+void Value::setComment(const char* comment,
+                       size_t len,
+                       CommentPlacement placement) {
+  if (!comments_)
+    comments_ = new CommentInfo[numberOfCommentPlacement];
+  if ((len > 0) && (comment[len - 1] == '\n')) {
+    // Always discard trailing newline, to aid indentation.
+    len -= 1;
+  }
+  comments_[placement].setComment(comment, len);
+}
+
+void Value::setComment(const char* comment, CommentPlacement placement) {
+  setComment(comment, strlen(comment), placement);
+}
+
+void Value::setComment(const String& comment, CommentPlacement placement) {
+  setComment(comment.c_str(), comment.length(), placement);
+}
+
+bool Value::hasComment(CommentPlacement placement) const {
+  return comments_ != nullptr && comments_[placement].comment_ != nullptr;
+}
+
+String Value::getComment(CommentPlacement placement) const {
+  if (hasComment(placement))
+    return comments_[placement].comment_;
+  return "";
+}
+
+void Value::setOffsetStart(ptrdiff_t start) { start_ = start; }
+
+void Value::setOffsetLimit(ptrdiff_t limit) { limit_ = limit; }
+
+ptrdiff_t Value::getOffsetStart() const { return start_; }
+
+ptrdiff_t Value::getOffsetLimit() const { return limit_; }
+
+String Value::toStyledString() const {
+  StreamWriterBuilder builder;
+
+  String out = this->hasComment(commentBefore) ? "\n" : "";
+  out += Json::writeString(builder, *this);
+  out += '\n';
+
+  return out;
+}
+
+Value::const_iterator Value::begin() const {
+  switch (type()) {
+  case arrayValue:
+  case objectValue:
+    if (value_.map_)
+      return const_iterator(value_.map_->begin());
+    break;
+  default:
+    break;
+  }
+  return {};
+}
+
+Value::const_iterator Value::end() const {
+  switch (type()) {
+  case arrayValue:
+  case objectValue:
+    if (value_.map_)
+      return const_iterator(value_.map_->end());
+    break;
+  default:
+    break;
+  }
+  return {};
+}
+
+Value::iterator Value::begin() {
+  switch (type()) {
+  case arrayValue:
+  case objectValue:
+    if (value_.map_)
+      return iterator(value_.map_->begin());
+    break;
+  default:
+    break;
+  }
+  return iterator();
+}
+
+Value::iterator Value::end() {
+  switch (type()) {
+  case arrayValue:
+  case objectValue:
+    if (value_.map_)
+      return iterator(value_.map_->end());
+    break;
+  default:
+    break;
+  }
+  return iterator();
+}
+
+// class PathArgument
+// //////////////////////////////////////////////////////////////////
+
+PathArgument::PathArgument() : key_() {}
+
+PathArgument::PathArgument(ArrayIndex index)
+    : key_(), index_(index), kind_(kindIndex) {}
+
+PathArgument::PathArgument(const char* key)
+    : key_(key), index_(), kind_(kindKey) {}
+
+PathArgument::PathArgument(const String& key)
+    : key_(key.c_str()), index_(), kind_(kindKey) {}
+
+// class Path
+// //////////////////////////////////////////////////////////////////
+
+Path::Path(const String& path,
+           const PathArgument& a1,
+           const PathArgument& a2,
+           const PathArgument& a3,
+           const PathArgument& a4,
+           const PathArgument& a5) {
+  InArgs in;
+  in.reserve(5);
+  in.push_back(&a1);
+  in.push_back(&a2);
+  in.push_back(&a3);
+  in.push_back(&a4);
+  in.push_back(&a5);
+  makePath(path, in);
+}
+
+void Path::makePath(const String& path, const InArgs& in) {
+  const char* current = path.c_str();
+  const char* end = current + path.length();
+  auto itInArg = in.begin();
+  while (current != end) {
+    if (*current == '[') {
+      ++current;
+      if (*current == '%')
+        addPathInArg(path, in, itInArg, PathArgument::kindIndex);
+      else {
+        ArrayIndex index = 0;
+        for (; current != end && *current >= '0' && *current <= '9'; ++current)
+          index = index * 10 + ArrayIndex(*current - '0');
+        args_.push_back(index);
+      }
+      if (current == end || *++current != ']')
+        invalidPath(path, int(current - path.c_str()));
+    } else if (*current == '%') {
+      addPathInArg(path, in, itInArg, PathArgument::kindKey);
+      ++current;
+    } else if (*current == '.' || *current == ']') {
+      ++current;
+    } else {
+      const char* beginName = current;
+      while (current != end && !strchr("[.", *current))
+        ++current;
+      args_.push_back(String(beginName, current));
+    }
+  }
+}
+
+void Path::addPathInArg(const String& /*path*/,
+                        const InArgs& in,
+                        InArgs::const_iterator& itInArg,
+                        PathArgument::Kind kind) {
+  if (itInArg == in.end()) {
+    // Error: missing argument %d
+  } else if ((*itInArg)->kind_ != kind) {
+    // Error: bad argument type
+  } else {
+    args_.push_back(**itInArg++);
+  }
+}
+
+void Path::invalidPath(const String& /*path*/, int /*location*/) {
+  // Error: invalid path.
+}
+
+const Value& Path::resolve(const Value& root) const {
+  const Value* node = &root;
+  for (const auto& arg : args_) {
+    if (arg.kind_ == PathArgument::kindIndex) {
+      if (!node->isArray() || !node->isValidIndex(arg.index_)) {
+        // Error: unable to resolve path (array value expected at position...
+        return Value::null;
+      }
+      node = &((*node)[arg.index_]);
+    } else if (arg.kind_ == PathArgument::kindKey) {
+      if (!node->isObject()) {
+        // Error: unable to resolve path (object value expected at position...)
+        return Value::null;
+      }
+      node = &((*node)[arg.key_]);
+      if (node == &Value::nullSingleton()) {
+        // Error: unable to resolve path (object has no member named '' at
+        // position...)
+        return Value::null;
+      }
+    }
+  }
+  return *node;
+}
+
+Value Path::resolve(const Value& root, const Value& defaultValue) const {
+  const Value* node = &root;
+  for (const auto& arg : args_) {
+    if (arg.kind_ == PathArgument::kindIndex) {
+      if (!node->isArray() || !node->isValidIndex(arg.index_))
+        return defaultValue;
+      node = &((*node)[arg.index_]);
+    } else if (arg.kind_ == PathArgument::kindKey) {
+      if (!node->isObject())
+        return defaultValue;
+      node = &((*node)[arg.key_]);
+      if (node == &Value::nullSingleton())
+        return defaultValue;
+    }
+  }
+  return *node;
+}
+
+Value& Path::make(Value& root) const {
+  Value* node = &root;
+  for (const auto& arg : args_) {
+    if (arg.kind_ == PathArgument::kindIndex) {
+      if (!node->isArray()) {
+        // Error: node is not an array at position ...
+      }
+      node = &((*node)[arg.index_]);
+    } else if (arg.kind_ == PathArgument::kindKey) {
+      if (!node->isObject()) {
+        // Error: node is not an object at position...
+      }
+      node = &((*node)[arg.key_]);
+    }
+  }
+  return *node;
+}
+
+} // namespace Json
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: src/lib_json/json_value.cpp
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: src/lib_json/json_writer.cpp
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2011 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "json_tool.h"
+#include <json/writer.h>
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <cassert>
+#include <cstring>
+#include <iomanip>
+#include <memory>
+#include <set>
+#include <sstream>
+#include <utility>
+
+#if __cplusplus >= 201103L
+#include <cmath>
+#include <cstdio>
+
+#if !defined(isnan)
+#define isnan std::isnan
+#endif
+
+#if !defined(isfinite)
+#define isfinite std::isfinite
+#endif
+
+#else
+#include <cmath>
+#include <cstdio>
+
+#if defined(_MSC_VER)
+#if !defined(isnan)
+#include <float.h>
+#define isnan _isnan
+#endif
+
+#if !defined(isfinite)
+#include <float.h>
+#define isfinite _finite
+#endif
+
+#if !defined(_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES)
+#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
+#endif //_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
+
+#endif //_MSC_VER
+
+#if defined(__sun) && defined(__SVR4) // Solaris
+#if !defined(isfinite)
+#include <ieeefp.h>
+#define isfinite finite
+#endif
+#endif
+
+#if defined(__hpux)
+#if !defined(isfinite)
+#if defined(__ia64) && !defined(finite)
+#define isfinite(x)                                                            \
+  ((sizeof(x) == sizeof(float) ? _Isfinitef(x) : _IsFinite(x)))
+#endif
+#endif
+#endif
+
+#if !defined(isnan)
+// IEEE standard states that NaN values will not compare to themselves
+#define isnan(x) (x != x)
+#endif
+
+#if !defined(__APPLE__)
+#if !defined(isfinite)
+#define isfinite finite
+#endif
+#endif
+#endif
+
+#if defined(_MSC_VER)
+// Disable warning about strdup being deprecated.
+#pragma warning(disable : 4996)
+#endif
+
+namespace Json {
+
+#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520)
+typedef std::unique_ptr<StreamWriter> StreamWriterPtr;
+#else
+typedef std::unique_ptr<StreamWriter> StreamWriterPtr;
+#endif
+
+String valueToString(LargestInt value) {
+  UIntToStringBuffer buffer;
+  char* current = buffer + sizeof(buffer);
+  if (value == Value::minLargestInt) {
+    uintToString(LargestUInt(Value::maxLargestInt) + 1, current);
+    *--current = '-';
+  } else if (value < 0) {
+    uintToString(LargestUInt(-value), current);
+    *--current = '-';
+  } else {
+    uintToString(LargestUInt(value), current);
+  }
+  assert(current >= buffer);
+  return current;
+}
+
+String valueToString(LargestUInt value) {
+  UIntToStringBuffer buffer;
+  char* current = buffer + sizeof(buffer);
+  uintToString(value, current);
+  assert(current >= buffer);
+  return current;
+}
+
+#if defined(JSON_HAS_INT64)
+
+String valueToString(Int value) { return valueToString(LargestInt(value)); }
+
+String valueToString(UInt value) { return valueToString(LargestUInt(value)); }
+
+#endif // # if defined(JSON_HAS_INT64)
+
+namespace {
+String valueToString(double value,
+                     bool useSpecialFloats,
+                     unsigned int precision,
+                     PrecisionType precisionType) {
+  // Print into the buffer. We need not request the alternative representation
+  // that always has a decimal point because JSON doesn't distinguish the
+  // concepts of reals and integers.
+  if (!isfinite(value)) {
+    static const char* const reps[2][3] = {{"NaN", "-Infinity", "Infinity"},
+                                           {"null", "-1e+9999", "1e+9999"}};
+    return reps[useSpecialFloats ? 0 : 1]
+               [isnan(value) ? 0 : (value < 0) ? 1 : 2];
+  }
+
+  String buffer(size_t(36), '\0');
+  while (true) {
+    int len = jsoncpp_snprintf(
+        &*buffer.begin(), buffer.size(),
+        (precisionType == PrecisionType::significantDigits) ? "%.*g" : "%.*f",
+        precision, value);
+    assert(len >= 0);
+    auto wouldPrint = static_cast<size_t>(len);
+    if (wouldPrint >= buffer.size()) {
+      buffer.resize(wouldPrint + 1);
+      continue;
+    }
+    buffer.resize(wouldPrint);
+    break;
+  }
+
+  buffer.erase(fixNumericLocale(buffer.begin(), buffer.end()), buffer.end());
+
+  // strip the zero padding from the right
+  if (precisionType == PrecisionType::decimalPlaces) {
+    buffer.erase(fixZerosInTheEnd(buffer.begin(), buffer.end()), buffer.end());
+  }
+
+  // try to ensure we preserve the fact that this was given to us as a double on
+  // input
+  if (buffer.find('.') == buffer.npos && buffer.find('e') == buffer.npos) {
+    buffer += ".0";
+  }
+  return buffer;
+}
+} // namespace
+
+String valueToString(double value,
+                     unsigned int precision,
+                     PrecisionType precisionType) {
+  return valueToString(value, false, precision, precisionType);
+}
+
+String valueToString(bool value) { return value ? "true" : "false"; }
+
+static bool isAnyCharRequiredQuoting(char const* s, size_t n) {
+  assert(s || !n);
+
+  char const* const end = s + n;
+  for (char const* cur = s; cur < end; ++cur) {
+    if (*cur == '\\' || *cur == '\"' || *cur < ' ' ||
+        static_cast<unsigned char>(*cur) < 0x80)
+      return true;
+  }
+  return false;
+}
+
+static unsigned int utf8ToCodepoint(const char*& s, const char* e) {
+  const unsigned int REPLACEMENT_CHARACTER = 0xFFFD;
+
+  unsigned int firstByte = static_cast<unsigned char>(*s);
+
+  if (firstByte < 0x80)
+    return firstByte;
+
+  if (firstByte < 0xE0) {
+    if (e - s < 2)
+      return REPLACEMENT_CHARACTER;
+
+    unsigned int calculated =
+        ((firstByte & 0x1F) << 6) | (static_cast<unsigned int>(s[1]) & 0x3F);
+    s += 1;
+    // oversized encoded characters are invalid
+    return calculated < 0x80 ? REPLACEMENT_CHARACTER : calculated;
+  }
+
+  if (firstByte < 0xF0) {
+    if (e - s < 3)
+      return REPLACEMENT_CHARACTER;
+
+    unsigned int calculated = ((firstByte & 0x0F) << 12) |
+                              ((static_cast<unsigned int>(s[1]) & 0x3F) << 6) |
+                              (static_cast<unsigned int>(s[2]) & 0x3F);
+    s += 2;
+    // surrogates aren't valid codepoints itself
+    // shouldn't be UTF-8 encoded
+    if (calculated >= 0xD800 && calculated <= 0xDFFF)
+      return REPLACEMENT_CHARACTER;
+    // oversized encoded characters are invalid
+    return calculated < 0x800 ? REPLACEMENT_CHARACTER : calculated;
+  }
+
+  if (firstByte < 0xF8) {
+    if (e - s < 4)
+      return REPLACEMENT_CHARACTER;
+
+    unsigned int calculated = ((firstByte & 0x07) << 18) |
+                              ((static_cast<unsigned int>(s[1]) & 0x3F) << 12) |
+                              ((static_cast<unsigned int>(s[2]) & 0x3F) << 6) |
+                              (static_cast<unsigned int>(s[3]) & 0x3F);
+    s += 3;
+    // oversized encoded characters are invalid
+    return calculated < 0x10000 ? REPLACEMENT_CHARACTER : calculated;
+  }
+
+  return REPLACEMENT_CHARACTER;
+}
+
+static const char hex2[] = "000102030405060708090a0b0c0d0e0f"
+                           "101112131415161718191a1b1c1d1e1f"
+                           "202122232425262728292a2b2c2d2e2f"
+                           "303132333435363738393a3b3c3d3e3f"
+                           "404142434445464748494a4b4c4d4e4f"
+                           "505152535455565758595a5b5c5d5e5f"
+                           "606162636465666768696a6b6c6d6e6f"
+                           "707172737475767778797a7b7c7d7e7f"
+                           "808182838485868788898a8b8c8d8e8f"
+                           "909192939495969798999a9b9c9d9e9f"
+                           "a0a1a2a3a4a5a6a7a8a9aaabacadaeaf"
+                           "b0b1b2b3b4b5b6b7b8b9babbbcbdbebf"
+                           "c0c1c2c3c4c5c6c7c8c9cacbcccdcecf"
+                           "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf"
+                           "e0e1e2e3e4e5e6e7e8e9eaebecedeeef"
+                           "f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff";
+
+static String toHex16Bit(unsigned int x) {
+  const unsigned int hi = (x >> 8) & 0xff;
+  const unsigned int lo = x & 0xff;
+  String result(4, ' ');
+  result[0] = hex2[2 * hi];
+  result[1] = hex2[2 * hi + 1];
+  result[2] = hex2[2 * lo];
+  result[3] = hex2[2 * lo + 1];
+  return result;
+}
+
+static String valueToQuotedStringN(const char* value, unsigned length) {
+  if (value == nullptr)
+    return "";
+
+  if (!isAnyCharRequiredQuoting(value, length))
+    return String("\"") + value + "\"";
+  // We have to walk value and escape any special characters.
+  // Appending to String is not efficient, but this should be rare.
+  // (Note: forward slashes are *not* rare, but I am not escaping them.)
+  String::size_type maxsize = length * 2 + 3; // allescaped+quotes+NULL
+  String result;
+  result.reserve(maxsize); // to avoid lots of mallocs
+  result += "\"";
+  char const* end = value + length;
+  for (const char* c = value; c != end; ++c) {
+    switch (*c) {
+    case '\"':
+      result += "\\\"";
+      break;
+    case '\\':
+      result += "\\\\";
+      break;
+    case '\b':
+      result += "\\b";
+      break;
+    case '\f':
+      result += "\\f";
+      break;
+    case '\n':
+      result += "\\n";
+      break;
+    case '\r':
+      result += "\\r";
+      break;
+    case '\t':
+      result += "\\t";
+      break;
+    // case '/':
+    // Even though \/ is considered a legal escape in JSON, a bare
+    // slash is also legal, so I see no reason to escape it.
+    // (I hope I am not misunderstanding something.)
+    // blep notes: actually escaping \/ may be useful in javascript to avoid </
+    // sequence.
+    // Should add a flag to allow this compatibility mode and prevent this
+    // sequence from occurring.
+    default: {
+      unsigned int cp = utf8ToCodepoint(c, end);
+      // don't escape non-control characters
+      // (short escape sequence are applied above)
+      if (cp < 0x80 && cp >= 0x20)
+        result += static_cast<char>(cp);
+      else if (cp < 0x10000) { // codepoint is in Basic Multilingual Plane
+        result += "\\u";
+        result += toHex16Bit(cp);
+      } else { // codepoint is not in Basic Multilingual Plane
+               // convert to surrogate pair first
+        cp -= 0x10000;
+        result += "\\u";
+        result += toHex16Bit((cp >> 10) + 0xD800);
+        result += "\\u";
+        result += toHex16Bit((cp & 0x3FF) + 0xDC00);
+      }
+    } break;
+    }
+  }
+  result += "\"";
+  return result;
+}
+
+String valueToQuotedString(const char* value) {
+  return valueToQuotedStringN(value, static_cast<unsigned int>(strlen(value)));
+}
+
+// Class Writer
+// //////////////////////////////////////////////////////////////////
+Writer::~Writer() = default;
+
+// Class FastWriter
+// //////////////////////////////////////////////////////////////////
+
+FastWriter::FastWriter()
+
+    = default;
+
+void FastWriter::enableYAMLCompatibility() { yamlCompatibilityEnabled_ = true; }
+
+void FastWriter::dropNullPlaceholders() { dropNullPlaceholders_ = true; }
+
+void FastWriter::omitEndingLineFeed() { omitEndingLineFeed_ = true; }
+
+String FastWriter::write(const Value& root) {
+  document_.clear();
+  writeValue(root);
+  if (!omitEndingLineFeed_)
+    document_ += '\n';
+  return document_;
+}
+
+void FastWriter::writeValue(const Value& value) {
+  switch (value.type()) {
+  case nullValue:
+    if (!dropNullPlaceholders_)
+      document_ += "null";
+    break;
+  case intValue:
+    document_ += valueToString(value.asLargestInt());
+    break;
+  case uintValue:
+    document_ += valueToString(value.asLargestUInt());
+    break;
+  case realValue:
+    document_ += valueToString(value.asDouble());
+    break;
+  case stringValue: {
+    // Is NULL possible for value.string_? No.
+    char const* str;
+    char const* end;
+    bool ok = value.getString(&str, &end);
+    if (ok)
+      document_ += valueToQuotedStringN(str, static_cast<unsigned>(end - str));
+    break;
+  }
+  case booleanValue:
+    document_ += valueToString(value.asBool());
+    break;
+  case arrayValue: {
+    document_ += '[';
+    ArrayIndex size = value.size();
+    for (ArrayIndex index = 0; index < size; ++index) {
+      if (index > 0)
+        document_ += ',';
+      writeValue(value[index]);
+    }
+    document_ += ']';
+  } break;
+  case objectValue: {
+    Value::Members members(value.getMemberNames());
+    document_ += '{';
+    for (auto it = members.begin(); it != members.end(); ++it) {
+      const String& name = *it;
+      if (it != members.begin())
+        document_ += ',';
+      document_ += valueToQuotedStringN(name.data(),
+                                        static_cast<unsigned>(name.length()));
+      document_ += yamlCompatibilityEnabled_ ? ": " : ":";
+      writeValue(value[name]);
+    }
+    document_ += '}';
+  } break;
+  }
+}
+
+// Class StyledWriter
+// //////////////////////////////////////////////////////////////////
+
+StyledWriter::StyledWriter() = default;
+
+String StyledWriter::write(const Value& root) {
+  document_.clear();
+  addChildValues_ = false;
+  indentString_.clear();
+  writeCommentBeforeValue(root);
+  writeValue(root);
+  writeCommentAfterValueOnSameLine(root);
+  document_ += '\n';
+  return document_;
+}
+
+void StyledWriter::writeValue(const Value& value) {
+  switch (value.type()) {
+  case nullValue:
+    pushValue("null");
+    break;
+  case intValue:
+    pushValue(valueToString(value.asLargestInt()));
+    break;
+  case uintValue:
+    pushValue(valueToString(value.asLargestUInt()));
+    break;
+  case realValue:
+    pushValue(valueToString(value.asDouble()));
+    break;
+  case stringValue: {
+    // Is NULL possible for value.string_? No.
+    char const* str;
+    char const* end;
+    bool ok = value.getString(&str, &end);
+    if (ok)
+      pushValue(valueToQuotedStringN(str, static_cast<unsigned>(end - str)));
+    else
+      pushValue("");
+    break;
+  }
+  case booleanValue:
+    pushValue(valueToString(value.asBool()));
+    break;
+  case arrayValue:
+    writeArrayValue(value);
+    break;
+  case objectValue: {
+    Value::Members members(value.getMemberNames());
+    if (members.empty())
+      pushValue("{}");
+    else {
+      writeWithIndent("{");
+      indent();
+      auto it = members.begin();
+      for (;;) {
+        const String& name = *it;
+        const Value& childValue = value[name];
+        writeCommentBeforeValue(childValue);
+        writeWithIndent(valueToQuotedString(name.c_str()));
+        document_ += " : ";
+        writeValue(childValue);
+        if (++it == members.end()) {
+          writeCommentAfterValueOnSameLine(childValue);
+          break;
+        }
+        document_ += ',';
+        writeCommentAfterValueOnSameLine(childValue);
+      }
+      unindent();
+      writeWithIndent("}");
+    }
+  } break;
+  }
+}
+
+void StyledWriter::writeArrayValue(const Value& value) {
+  unsigned size = value.size();
+  if (size == 0)
+    pushValue("[]");
+  else {
+    bool isArrayMultiLine = isMultilineArray(value);
+    if (isArrayMultiLine) {
+      writeWithIndent("[");
+      indent();
+      bool hasChildValue = !childValues_.empty();
+      unsigned index = 0;
+      for (;;) {
+        const Value& childValue = value[index];
+        writeCommentBeforeValue(childValue);
+        if (hasChildValue)
+          writeWithIndent(childValues_[index]);
+        else {
+          writeIndent();
+          writeValue(childValue);
+        }
+        if (++index == size) {
+          writeCommentAfterValueOnSameLine(childValue);
+          break;
+        }
+        document_ += ',';
+        writeCommentAfterValueOnSameLine(childValue);
+      }
+      unindent();
+      writeWithIndent("]");
+    } else // output on a single line
+    {
+      assert(childValues_.size() == size);
+      document_ += "[ ";
+      for (unsigned index = 0; index < size; ++index) {
+        if (index > 0)
+          document_ += ", ";
+        document_ += childValues_[index];
+      }
+      document_ += " ]";
+    }
+  }
+}
+
+bool StyledWriter::isMultilineArray(const Value& value) {
+  ArrayIndex const size = value.size();
+  bool isMultiLine = size * 3 >= rightMargin_;
+  childValues_.clear();
+  for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
+    const Value& childValue = value[index];
+    isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
+                   !childValue.empty());
+  }
+  if (!isMultiLine) // check if line length > max line length
+  {
+    childValues_.reserve(size);
+    addChildValues_ = true;
+    ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]'
+    for (ArrayIndex index = 0; index < size; ++index) {
+      if (hasCommentForValue(value[index])) {
+        isMultiLine = true;
+      }
+      writeValue(value[index]);
+      lineLength += static_cast<ArrayIndex>(childValues_[index].length());
+    }
+    addChildValues_ = false;
+    isMultiLine = isMultiLine || lineLength >= rightMargin_;
+  }
+  return isMultiLine;
+}
+
+void StyledWriter::pushValue(const String& value) {
+  if (addChildValues_)
+    childValues_.push_back(value);
+  else
+    document_ += value;
+}
+
+void StyledWriter::writeIndent() {
+  if (!document_.empty()) {
+    char last = document_[document_.length() - 1];
+    if (last == ' ') // already indented
+      return;
+    if (last != '\n') // Comments may add new-line
+      document_ += '\n';
+  }
+  document_ += indentString_;
+}
+
+void StyledWriter::writeWithIndent(const String& value) {
+  writeIndent();
+  document_ += value;
+}
+
+void StyledWriter::indent() { indentString_ += String(indentSize_, ' '); }
+
+void StyledWriter::unindent() {
+  assert(indentString_.size() >= indentSize_);
+  indentString_.resize(indentString_.size() - indentSize_);
+}
+
+void StyledWriter::writeCommentBeforeValue(const Value& root) {
+  if (!root.hasComment(commentBefore))
+    return;
+
+  document_ += '\n';
+  writeIndent();
+  const String& comment = root.getComment(commentBefore);
+  String::const_iterator iter = comment.begin();
+  while (iter != comment.end()) {
+    document_ += *iter;
+    if (*iter == '\n' && ((iter + 1) != comment.end() && *(iter + 1) == '/'))
+      writeIndent();
+    ++iter;
+  }
+
+  // Comments are stripped of trailing newlines, so add one here
+  document_ += '\n';
+}
+
+void StyledWriter::writeCommentAfterValueOnSameLine(const Value& root) {
+  if (root.hasComment(commentAfterOnSameLine))
+    document_ += " " + root.getComment(commentAfterOnSameLine);
+
+  if (root.hasComment(commentAfter)) {
+    document_ += '\n';
+    document_ += root.getComment(commentAfter);
+    document_ += '\n';
+  }
+}
+
+bool StyledWriter::hasCommentForValue(const Value& value) {
+  return value.hasComment(commentBefore) ||
+         value.hasComment(commentAfterOnSameLine) ||
+         value.hasComment(commentAfter);
+}
+
+// Class StyledStreamWriter
+// //////////////////////////////////////////////////////////////////
+
+StyledStreamWriter::StyledStreamWriter(String indentation)
+    : document_(nullptr), indentation_(std::move(indentation)),
+      addChildValues_(), indented_(false) {}
+
+void StyledStreamWriter::write(OStream& out, const Value& root) {
+  document_ = &out;
+  addChildValues_ = false;
+  indentString_.clear();
+  indented_ = true;
+  writeCommentBeforeValue(root);
+  if (!indented_)
+    writeIndent();
+  indented_ = true;
+  writeValue(root);
+  writeCommentAfterValueOnSameLine(root);
+  *document_ << "\n";
+  document_ = nullptr; // Forget the stream, for safety.
+}
+
+void StyledStreamWriter::writeValue(const Value& value) {
+  switch (value.type()) {
+  case nullValue:
+    pushValue("null");
+    break;
+  case intValue:
+    pushValue(valueToString(value.asLargestInt()));
+    break;
+  case uintValue:
+    pushValue(valueToString(value.asLargestUInt()));
+    break;
+  case realValue:
+    pushValue(valueToString(value.asDouble()));
+    break;
+  case stringValue: {
+    // Is NULL possible for value.string_? No.
+    char const* str;
+    char const* end;
+    bool ok = value.getString(&str, &end);
+    if (ok)
+      pushValue(valueToQuotedStringN(str, static_cast<unsigned>(end - str)));
+    else
+      pushValue("");
+    break;
+  }
+  case booleanValue:
+    pushValue(valueToString(value.asBool()));
+    break;
+  case arrayValue:
+    writeArrayValue(value);
+    break;
+  case objectValue: {
+    Value::Members members(value.getMemberNames());
+    if (members.empty())
+      pushValue("{}");
+    else {
+      writeWithIndent("{");
+      indent();
+      auto it = members.begin();
+      for (;;) {
+        const String& name = *it;
+        const Value& childValue = value[name];
+        writeCommentBeforeValue(childValue);
+        writeWithIndent(valueToQuotedString(name.c_str()));
+        *document_ << " : ";
+        writeValue(childValue);
+        if (++it == members.end()) {
+          writeCommentAfterValueOnSameLine(childValue);
+          break;
+        }
+        *document_ << ",";
+        writeCommentAfterValueOnSameLine(childValue);
+      }
+      unindent();
+      writeWithIndent("}");
+    }
+  } break;
+  }
+}
+
+void StyledStreamWriter::writeArrayValue(const Value& value) {
+  unsigned size = value.size();
+  if (size == 0)
+    pushValue("[]");
+  else {
+    bool isArrayMultiLine = isMultilineArray(value);
+    if (isArrayMultiLine) {
+      writeWithIndent("[");
+      indent();
+      bool hasChildValue = !childValues_.empty();
+      unsigned index = 0;
+      for (;;) {
+        const Value& childValue = value[index];
+        writeCommentBeforeValue(childValue);
+        if (hasChildValue)
+          writeWithIndent(childValues_[index]);
+        else {
+          if (!indented_)
+            writeIndent();
+          indented_ = true;
+          writeValue(childValue);
+          indented_ = false;
+        }
+        if (++index == size) {
+          writeCommentAfterValueOnSameLine(childValue);
+          break;
+        }
+        *document_ << ",";
+        writeCommentAfterValueOnSameLine(childValue);
+      }
+      unindent();
+      writeWithIndent("]");
+    } else // output on a single line
+    {
+      assert(childValues_.size() == size);
+      *document_ << "[ ";
+      for (unsigned index = 0; index < size; ++index) {
+        if (index > 0)
+          *document_ << ", ";
+        *document_ << childValues_[index];
+      }
+      *document_ << " ]";
+    }
+  }
+}
+
+bool StyledStreamWriter::isMultilineArray(const Value& value) {
+  ArrayIndex const size = value.size();
+  bool isMultiLine = size * 3 >= rightMargin_;
+  childValues_.clear();
+  for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
+    const Value& childValue = value[index];
+    isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
+                   !childValue.empty());
+  }
+  if (!isMultiLine) // check if line length > max line length
+  {
+    childValues_.reserve(size);
+    addChildValues_ = true;
+    ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]'
+    for (ArrayIndex index = 0; index < size; ++index) {
+      if (hasCommentForValue(value[index])) {
+        isMultiLine = true;
+      }
+      writeValue(value[index]);
+      lineLength += static_cast<ArrayIndex>(childValues_[index].length());
+    }
+    addChildValues_ = false;
+    isMultiLine = isMultiLine || lineLength >= rightMargin_;
+  }
+  return isMultiLine;
+}
+
+void StyledStreamWriter::pushValue(const String& value) {
+  if (addChildValues_)
+    childValues_.push_back(value);
+  else
+    *document_ << value;
+}
+
+void StyledStreamWriter::writeIndent() {
+  // blep intended this to look at the so-far-written string
+  // to determine whether we are already indented, but
+  // with a stream we cannot do that. So we rely on some saved state.
+  // The caller checks indented_.
+  *document_ << '\n' << indentString_;
+}
+
+void StyledStreamWriter::writeWithIndent(const String& value) {
+  if (!indented_)
+    writeIndent();
+  *document_ << value;
+  indented_ = false;
+}
+
+void StyledStreamWriter::indent() { indentString_ += indentation_; }
+
+void StyledStreamWriter::unindent() {
+  assert(indentString_.size() >= indentation_.size());
+  indentString_.resize(indentString_.size() - indentation_.size());
+}
+
+void StyledStreamWriter::writeCommentBeforeValue(const Value& root) {
+  if (!root.hasComment(commentBefore))
+    return;
+
+  if (!indented_)
+    writeIndent();
+  const String& comment = root.getComment(commentBefore);
+  String::const_iterator iter = comment.begin();
+  while (iter != comment.end()) {
+    *document_ << *iter;
+    if (*iter == '\n' && ((iter + 1) != comment.end() && *(iter + 1) == '/'))
+      // writeIndent();  // would include newline
+      *document_ << indentString_;
+    ++iter;
+  }
+  indented_ = false;
+}
+
+void StyledStreamWriter::writeCommentAfterValueOnSameLine(const Value& root) {
+  if (root.hasComment(commentAfterOnSameLine))
+    *document_ << ' ' << root.getComment(commentAfterOnSameLine);
+
+  if (root.hasComment(commentAfter)) {
+    writeIndent();
+    *document_ << root.getComment(commentAfter);
+  }
+  indented_ = false;
+}
+
+bool StyledStreamWriter::hasCommentForValue(const Value& value) {
+  return value.hasComment(commentBefore) ||
+         value.hasComment(commentAfterOnSameLine) ||
+         value.hasComment(commentAfter);
+}
+
+//////////////////////////
+// BuiltStyledStreamWriter
+
+/// Scoped enums are not available until C++11.
+struct CommentStyle {
+  /// Decide whether to write comments.
+  enum Enum {
+    None, ///< Drop all comments.
+    Most, ///< Recover odd behavior of previous versions (not implemented yet).
+    All   ///< Keep all comments.
+  };
+};
+
+struct BuiltStyledStreamWriter : public StreamWriter {
+  BuiltStyledStreamWriter(String indentation,
+                          CommentStyle::Enum cs,
+                          String colonSymbol,
+                          String nullSymbol,
+                          String endingLineFeedSymbol,
+                          bool useSpecialFloats,
+                          unsigned int precision,
+                          PrecisionType precisionType);
+  int write(Value const& root, OStream* sout) override;
+
+private:
+  void writeValue(Value const& value);
+  void writeArrayValue(Value const& value);
+  bool isMultilineArray(Value const& value);
+  void pushValue(String const& value);
+  void writeIndent();
+  void writeWithIndent(String const& value);
+  void indent();
+  void unindent();
+  void writeCommentBeforeValue(Value const& root);
+  void writeCommentAfterValueOnSameLine(Value const& root);
+  static bool hasCommentForValue(const Value& value);
+
+  typedef std::vector<String> ChildValues;
+
+  ChildValues childValues_;
+  String indentString_;
+  unsigned int rightMargin_;
+  String indentation_;
+  CommentStyle::Enum cs_;
+  String colonSymbol_;
+  String nullSymbol_;
+  String endingLineFeedSymbol_;
+  bool addChildValues_ : 1;
+  bool indented_ : 1;
+  bool useSpecialFloats_ : 1;
+  unsigned int precision_;
+  PrecisionType precisionType_;
+};
+BuiltStyledStreamWriter::BuiltStyledStreamWriter(String indentation,
+                                                 CommentStyle::Enum cs,
+                                                 String colonSymbol,
+                                                 String nullSymbol,
+                                                 String endingLineFeedSymbol,
+                                                 bool useSpecialFloats,
+                                                 unsigned int precision,
+                                                 PrecisionType precisionType)
+    : rightMargin_(74), indentation_(std::move(indentation)), cs_(cs),
+      colonSymbol_(std::move(colonSymbol)), nullSymbol_(std::move(nullSymbol)),
+      endingLineFeedSymbol_(std::move(endingLineFeedSymbol)),
+      addChildValues_(false), indented_(false),
+      useSpecialFloats_(useSpecialFloats), precision_(precision),
+      precisionType_(precisionType) {}
+int BuiltStyledStreamWriter::write(Value const& root, OStream* sout) {
+  sout_ = sout;
+  addChildValues_ = false;
+  indented_ = true;
+  indentString_.clear();
+  writeCommentBeforeValue(root);
+  if (!indented_)
+    writeIndent();
+  indented_ = true;
+  writeValue(root);
+  writeCommentAfterValueOnSameLine(root);
+  *sout_ << endingLineFeedSymbol_;
+  sout_ = nullptr;
+  return 0;
+}
+void BuiltStyledStreamWriter::writeValue(Value const& value) {
+  switch (value.type()) {
+  case nullValue:
+    pushValue(nullSymbol_);
+    break;
+  case intValue:
+    pushValue(valueToString(value.asLargestInt()));
+    break;
+  case uintValue:
+    pushValue(valueToString(value.asLargestUInt()));
+    break;
+  case realValue:
+    pushValue(valueToString(value.asDouble(), useSpecialFloats_, precision_,
+                            precisionType_));
+    break;
+  case stringValue: {
+    // Is NULL is possible for value.string_? No.
+    char const* str;
+    char const* end;
+    bool ok = value.getString(&str, &end);
+    if (ok)
+      pushValue(valueToQuotedStringN(str, static_cast<unsigned>(end - str)));
+    else
+      pushValue("");
+    break;
+  }
+  case booleanValue:
+    pushValue(valueToString(value.asBool()));
+    break;
+  case arrayValue:
+    writeArrayValue(value);
+    break;
+  case objectValue: {
+    Value::Members members(value.getMemberNames());
+    if (members.empty())
+      pushValue("{}");
+    else {
+      writeWithIndent("{");
+      indent();
+      auto it = members.begin();
+      for (;;) {
+        String const& name = *it;
+        Value const& childValue = value[name];
+        writeCommentBeforeValue(childValue);
+        writeWithIndent(valueToQuotedStringN(
+            name.data(), static_cast<unsigned>(name.length())));
+        *sout_ << colonSymbol_;
+        writeValue(childValue);
+        if (++it == members.end()) {
+          writeCommentAfterValueOnSameLine(childValue);
+          break;
+        }
+        *sout_ << ",";
+        writeCommentAfterValueOnSameLine(childValue);
+      }
+      unindent();
+      writeWithIndent("}");
+    }
+  } break;
+  }
+}
+
+void BuiltStyledStreamWriter::writeArrayValue(Value const& value) {
+  unsigned size = value.size();
+  if (size == 0)
+    pushValue("[]");
+  else {
+    bool isMultiLine = (cs_ == CommentStyle::All) || isMultilineArray(value);
+    if (isMultiLine) {
+      writeWithIndent("[");
+      indent();
+      bool hasChildValue = !childValues_.empty();
+      unsigned index = 0;
+      for (;;) {
+        Value const& childValue = value[index];
+        writeCommentBeforeValue(childValue);
+        if (hasChildValue)
+          writeWithIndent(childValues_[index]);
+        else {
+          if (!indented_)
+            writeIndent();
+          indented_ = true;
+          writeValue(childValue);
+          indented_ = false;
+        }
+        if (++index == size) {
+          writeCommentAfterValueOnSameLine(childValue);
+          break;
+        }
+        *sout_ << ",";
+        writeCommentAfterValueOnSameLine(childValue);
+      }
+      unindent();
+      writeWithIndent("]");
+    } else // output on a single line
+    {
+      assert(childValues_.size() == size);
+      *sout_ << "[";
+      if (!indentation_.empty())
+        *sout_ << " ";
+      for (unsigned index = 0; index < size; ++index) {
+        if (index > 0)
+          *sout_ << ((!indentation_.empty()) ? ", " : ",");
+        *sout_ << childValues_[index];
+      }
+      if (!indentation_.empty())
+        *sout_ << " ";
+      *sout_ << "]";
+    }
+  }
+}
+
+bool BuiltStyledStreamWriter::isMultilineArray(Value const& value) {
+  ArrayIndex const size = value.size();
+  bool isMultiLine = size * 3 >= rightMargin_;
+  childValues_.clear();
+  for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
+    Value const& childValue = value[index];
+    isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
+                   !childValue.empty());
+  }
+  if (!isMultiLine) // check if line length > max line length
+  {
+    childValues_.reserve(size);
+    addChildValues_ = true;
+    ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]'
+    for (ArrayIndex index = 0; index < size; ++index) {
+      if (hasCommentForValue(value[index])) {
+        isMultiLine = true;
+      }
+      writeValue(value[index]);
+      lineLength += static_cast<ArrayIndex>(childValues_[index].length());
+    }
+    addChildValues_ = false;
+    isMultiLine = isMultiLine || lineLength >= rightMargin_;
+  }
+  return isMultiLine;
+}
+
+void BuiltStyledStreamWriter::pushValue(String const& value) {
+  if (addChildValues_)
+    childValues_.push_back(value);
+  else
+    *sout_ << value;
+}
+
+void BuiltStyledStreamWriter::writeIndent() {
+  // blep intended this to look at the so-far-written string
+  // to determine whether we are already indented, but
+  // with a stream we cannot do that. So we rely on some saved state.
+  // The caller checks indented_.
+
+  if (!indentation_.empty()) {
+    // In this case, drop newlines too.
+    *sout_ << '\n' << indentString_;
+  }
+}
+
+void BuiltStyledStreamWriter::writeWithIndent(String const& value) {
+  if (!indented_)
+    writeIndent();
+  *sout_ << value;
+  indented_ = false;
+}
+
+void BuiltStyledStreamWriter::indent() { indentString_ += indentation_; }
+
+void BuiltStyledStreamWriter::unindent() {
+  assert(indentString_.size() >= indentation_.size());
+  indentString_.resize(indentString_.size() - indentation_.size());
+}
+
+void BuiltStyledStreamWriter::writeCommentBeforeValue(Value const& root) {
+  if (cs_ == CommentStyle::None)
+    return;
+  if (!root.hasComment(commentBefore))
+    return;
+
+  if (!indented_)
+    writeIndent();
+  const String& comment = root.getComment(commentBefore);
+  String::const_iterator iter = comment.begin();
+  while (iter != comment.end()) {
+    *sout_ << *iter;
+    if (*iter == '\n' && ((iter + 1) != comment.end() && *(iter + 1) == '/'))
+      // writeIndent();  // would write extra newline
+      *sout_ << indentString_;
+    ++iter;
+  }
+  indented_ = false;
+}
+
+void BuiltStyledStreamWriter::writeCommentAfterValueOnSameLine(
+    Value const& root) {
+  if (cs_ == CommentStyle::None)
+    return;
+  if (root.hasComment(commentAfterOnSameLine))
+    *sout_ << " " + root.getComment(commentAfterOnSameLine);
+
+  if (root.hasComment(commentAfter)) {
+    writeIndent();
+    *sout_ << root.getComment(commentAfter);
+  }
+}
+
+// static
+bool BuiltStyledStreamWriter::hasCommentForValue(const Value& value) {
+  return value.hasComment(commentBefore) ||
+         value.hasComment(commentAfterOnSameLine) ||
+         value.hasComment(commentAfter);
+}
+
+///////////////
+// StreamWriter
+
+StreamWriter::StreamWriter() : sout_(nullptr) {}
+StreamWriter::~StreamWriter() = default;
+StreamWriter::Factory::~Factory() = default;
+StreamWriterBuilder::StreamWriterBuilder() { setDefaults(&settings_); }
+StreamWriterBuilder::~StreamWriterBuilder() = default;
+StreamWriter* StreamWriterBuilder::newStreamWriter() const {
+  String indentation = settings_["indentation"].asString();
+  String cs_str = settings_["commentStyle"].asString();
+  String pt_str = settings_["precisionType"].asString();
+  bool eyc = settings_["enableYAMLCompatibility"].asBool();
+  bool dnp = settings_["dropNullPlaceholders"].asBool();
+  bool usf = settings_["useSpecialFloats"].asBool();
+  unsigned int pre = settings_["precision"].asUInt();
+  CommentStyle::Enum cs = CommentStyle::All;
+  if (cs_str == "All") {
+    cs = CommentStyle::All;
+  } else if (cs_str == "None") {
+    cs = CommentStyle::None;
+  } else {
+    throwRuntimeError("commentStyle must be 'All' or 'None'");
+  }
+  PrecisionType precisionType(significantDigits);
+  if (pt_str == "significant") {
+    precisionType = PrecisionType::significantDigits;
+  } else if (pt_str == "decimal") {
+    precisionType = PrecisionType::decimalPlaces;
+  } else {
+    throwRuntimeError("precisionType must be 'significant' or 'decimal'");
+  }
+  String colonSymbol = " : ";
+  if (eyc) {
+    colonSymbol = ": ";
+  } else if (indentation.empty()) {
+    colonSymbol = ":";
+  }
+  String nullSymbol = "null";
+  if (dnp) {
+    nullSymbol.clear();
+  }
+  if (pre > 17)
+    pre = 17;
+  String endingLineFeedSymbol;
+  return new BuiltStyledStreamWriter(indentation, cs, colonSymbol, nullSymbol,
+                                     endingLineFeedSymbol, usf, pre,
+                                     precisionType);
+}
+static void getValidWriterKeys(std::set<String>* valid_keys) {
+  valid_keys->clear();
+  valid_keys->insert("indentation");
+  valid_keys->insert("commentStyle");
+  valid_keys->insert("enableYAMLCompatibility");
+  valid_keys->insert("dropNullPlaceholders");
+  valid_keys->insert("useSpecialFloats");
+  valid_keys->insert("precision");
+  valid_keys->insert("precisionType");
+}
+bool StreamWriterBuilder::validate(Json::Value* invalid) const {
+  Json::Value my_invalid;
+  if (!invalid)
+    invalid = &my_invalid; // so we do not need to test for NULL
+  Json::Value& inv = *invalid;
+  std::set<String> valid_keys;
+  getValidWriterKeys(&valid_keys);
+  Value::Members keys = settings_.getMemberNames();
+  size_t n = keys.size();
+  for (size_t i = 0; i < n; ++i) {
+    String const& key = keys[i];
+    if (valid_keys.find(key) == valid_keys.end()) {
+      inv[key] = settings_[key];
+    }
+  }
+  return inv.empty();
+}
+Value& StreamWriterBuilder::operator[](const String& key) {
+  return settings_[key];
+}
+// static
+void StreamWriterBuilder::setDefaults(Json::Value* settings) {
+  //! [StreamWriterBuilderDefaults]
+  (*settings)["commentStyle"] = "All";
+  (*settings)["indentation"] = "\t";
+  (*settings)["enableYAMLCompatibility"] = false;
+  (*settings)["dropNullPlaceholders"] = false;
+  (*settings)["useSpecialFloats"] = false;
+  (*settings)["precision"] = 17;
+  (*settings)["precisionType"] = "significant";
+  //! [StreamWriterBuilderDefaults]
+}
+
+String writeString(StreamWriter::Factory const& factory, Value const& root) {
+  OStringStream sout;
+  StreamWriterPtr const writer(factory.newStreamWriter());
+  writer->write(root, &sout);
+  return sout.str();
+}
+
+OStream& operator<<(OStream& sout, Value const& root) {
+  StreamWriterBuilder builder;
+  StreamWriterPtr const writer(builder.newStreamWriter());
+  writer->write(root, &sout);
+  return sout;
+}
+
+} // namespace Json
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: src/lib_json/json_writer.cpp
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/main.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,207 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include <iostream>
+#include <sstream>
+#include <emscripten/emscripten.h>
+#include "TestStoneCodeGen_generated.hpp"
+
+using std::stringstream;
+
+int main()
+{
+    std::cout << "Hello world from testWasmIntegrated! (this is sent from C++)" << std::endl;
+    try
+    {
+    const char* jsonData = R"bgo({"definition":
+    {
+      "val" : [ "berk", 42 ],
+      "zozo" : { "23": "zloutch", "lalala": 42}
+    }
+    })bgo";
+    std::string strValue(jsonData);
+    
+    Json::Value readValue;
+
+    Json::CharReaderBuilder builder;
+    Json::CharReader* reader = builder.newCharReader();
+
+    StoneSmartPtr<Json::CharReader> ptr(reader);
+
+    std::string errors;
+
+    bool ok = reader->parse(
+      strValue.c_str(),
+      strValue.c_str() + strValue.size(),
+      &readValue,
+      &errors
+    );
+    if (!ok)
+    {
+      std::stringstream ss;
+      ss << "Jsoncpp parsing error: " << errors;
+      throw std::runtime_error(ss.str());
+    }
+    std::cout << "Json parsing OK" << std::endl;
+    std::cout << readValue  << std::endl;
+    }
+    catch(std::exception& e)
+    {
+      std::cout << "Json parsing THROW" << std::endl;
+      std::cout << "e.what() = " << e.what() << std::endl;
+    }
+}
+
+extern "C" void SendMessageFromCppJS(const char* message);
+extern "C" void SendFreeTextFromCppJS(const char* message);
+
+#define HANDLE_MESSAGE(Type,value) \
+  stringstream ss; \
+  ss << "Received an instance of:\n" #Type "\n. Here's the dump:\n"; \
+  TestStoneCodeGen::StoneDumpValue(ss, value, 0); \
+  SendFreeTextFromCppJS(ss.str().c_str()); \
+  return true;
+
+#define ECHO_MESSAGE(Type,value) \
+  stringstream ss; \
+  ss << "Received an instance of:\n" #Type "\n. Here's the dump:\n"; \
+  TestStoneCodeGen::StoneDumpValue(ss, value, 0); \
+  SendFreeTextFromCppJS(ss.str().c_str()); \
+  std::string serializedInCpp = StoneSerialize(value); \
+  SendMessageFromCppJS(serializedInCpp.c_str()); \
+  return true;
+
+class MyHandler : public TestStoneCodeGen::IHandler
+{
+  public:
+    virtual bool Handle(const TestStoneCodeGen::A& value) override
+    {
+      HANDLE_MESSAGE(TestStoneCodeGen::A,value)
+    }
+    virtual bool Handle(const TestStoneCodeGen::B& value) override
+    {
+      HANDLE_MESSAGE(TestStoneCodeGen::B,value)
+    }
+
+    virtual bool Handle(const TestStoneCodeGen::Message1& value) override
+    {
+      HANDLE_MESSAGE(TestStoneCodeGen::Message1,value)
+    }
+
+    virtual bool Handle(const TestStoneCodeGen::Message2& value) override
+    {
+      HANDLE_MESSAGE(TestStoneCodeGen::Message2,value)
+    }
+
+    virtual bool Handle(const TestStoneCodeGen::C& value) override
+    {
+      HANDLE_MESSAGE(TestStoneCodeGen::C,value)
+    }
+};
+
+class MyEchoHandler : public TestStoneCodeGen::IHandler
+{
+  public:
+    virtual bool Handle(const TestStoneCodeGen::A& value) override
+    {
+      ECHO_MESSAGE(TestStoneCodeGen::A,value)
+    }
+    virtual bool Handle(const TestStoneCodeGen::B& value) override
+    {
+      ECHO_MESSAGE(TestStoneCodeGen::B,value)
+    }
+
+    virtual bool Handle(const TestStoneCodeGen::Message1& value) override
+    {
+      ECHO_MESSAGE(TestStoneCodeGen::Message1,value)
+    }
+
+    virtual bool Handle(const TestStoneCodeGen::Message2& value) override
+    {
+      ECHO_MESSAGE(TestStoneCodeGen::Message2,value)
+    }
+
+    virtual bool Handle(const TestStoneCodeGen::C& value) override
+    {
+      ECHO_MESSAGE(TestStoneCodeGen::C,value)
+    }
+};
+
+extern "C" void EMSCRIPTEN_KEEPALIVE SendMessageToCpp(const char* message)
+{
+    MyHandler handler;
+    try
+    {
+      bool handled = TestStoneCodeGen::StoneDispatchToHandler(message,&handler);
+      if(!handled)
+      {
+        SendFreeTextFromCppJS("This message is valid JSON, but was not handled!");  
+      }
+    }
+    catch(std::exception& e)
+    {
+      stringstream ss;
+      ss << "Error while parsing message: " << e.what() << "\n";
+      SendFreeTextFromCppJS(ss.str().c_str());  
+    }
+}
+
+extern "C" void EMSCRIPTEN_KEEPALIVE SendMessageToCppForEcho(const char* message)
+{
+    MyEchoHandler echoHandler;
+    try
+    {
+      bool handled = TestStoneCodeGen::StoneDispatchToHandler(message,&echoHandler);
+      if(!handled)
+      {
+        SendFreeTextFromCppJS("This message is valid JSON, but was not handled by the echo handler!");  
+      }
+    }
+    catch(std::exception& e)
+    {
+      stringstream ss;
+      ss << "Error while parsing message: " << e.what() << "\n";
+      SendFreeTextFromCppJS(ss.str().c_str());  
+    }
+}
+
+void EMSCRIPTEN_KEEPALIVE StartWasmApplication(const char* baseUri)
+{
+    printf("Hello! (this is sent from C++)\n");
+
+//     // recreate a command line from uri arguments and parse it
+//     boost::program_options::variables_map parameters;
+//     boost::program_options::options_description options;
+//     application->DeclareStartupOptions(options);
+//     startupParametersBuilder.GetStartupParameters(parameters, options);
+
+//     context.reset(new OrthancStone::StoneApplicationContext(broker));
+//     context->SetOrthancBaseUrl(baseUri);
+//     printf("Base URL to Orthanc API: [%s]\n", baseUri);
+//     context->SetWebService(OrthancStone::WasmWebService::GetInstance());
+//     context->SetDelayedCallExecutor(OrthancStone::WasmDelayedCallExecutor::GetInstance());
+//     application->Initialize(context.get(), statusBar_, parameters);
+//     application->InitializeWasm();
+
+// //    viewport->SetSize(width_, height_);
+//     printf("StartWasmApplication - completed\n");
+    SendFreeTextFromCppJS("Hello world from C++!");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/serve.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+# tested on python 3.4 ,python of lower version  has different module organization.
+# from https://gist.github.com/HaiyangXu/ec88cbdce3cdbac7b8d5
+import http.server
+from http.server import HTTPServer, BaseHTTPRequestHandler
+import socketserver
+
+PORT = 8080
+
+Handler = http.server.SimpleHTTPRequestHandler
+
+Handler.extensions_map = {
+  '.manifest': 'text/cache-manifest',
+  '.html': 'text/html',
+  '.png': 'image/png',
+  '.jpg': 'image/jpg',
+  '.svg': 'image/svg+xml',
+  '.wasm': 'application/wasm',
+  '.css': 'text/css',
+  '.js': 'application/x-javascript',
+  '': 'application/octet-stream',  # Default
+}
+
+httpd = socketserver.TCPServer(("", PORT), Handler)
+
+print("serving at port", PORT)
+httpd.serve_forever()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/styles.css	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,66 @@
+.TestWasm-grid-container {
+    display: grid;
+    grid-template-columns: 0.55fr 0.55fr 0.55fr 0.55fr 0.6fr 1.1fr 1.1fr;
+    grid-template-rows: 1.1fr 0.9fr 0.2fr 0.3fr 0.1fr 0.3fr 0.1fr;
+    grid-template-areas: 
+        "SerializedInput SerializedInput SerializedInput SerializedInput ButtonContainer CppOutput CppOutput" 
+        "SerializedInput SerializedInput SerializedInput SerializedInput ButtonContainer CppOutput CppOutput" 
+        ". . . . . . ." 
+        "Test1 Test2 Test3 Test4 . . ." 
+        ". . . . . . ." 
+        "Test5 Test6 Test7 Test8 . . ."
+        "TestTsCppTs . . . . . ." 
+        ". . . . . . ." 
+        ;
+    height: 480px;
+  }
+
+  .TestWasm-ButtonContainer {
+    display: grid;
+    grid-template-columns: 0.2fr 0.8fr 0.2fr;
+    grid-template-rows: 0.2fr 0.5fr 0.2fr 0.5fr 0.2fr 0.5fr 0.2fr;
+    grid-template-areas: 
+        ". . ."
+        ". TriggerButton ." 
+        ". . ."
+        ". ClearButton ." 
+        ". . ."
+        ". ShowSchemaButton ." 
+        ". . ."
+        ;
+  }
+
+  .TestWasm-TriggerButton { grid-area: TriggerButton; }
+  
+  .TestWasm-ClearButton { grid-area: ClearButton; }
+  
+  .TestWasm-ShowSchemaButton { grid-area: ShowSchemaButton; }
+
+
+.TestWasm-SerializedInput { grid-area: SerializedInput; }
+
+.TestWasm-CppOutput { grid-area: CppOutput; }
+
+.TestWasm-ButtonContainer { grid-area: ButtonContainer; }
+
+.TestWasm-Test1 { grid-area: Test1; }
+
+.TestWasm-Test2 { grid-area: Test2; }
+
+.TestWasm-Test3 { grid-area: Test3; }
+
+.TestWasm-Test4 { grid-area: Test4; }
+
+.TestWasm-Test5 { grid-area: Test5; }
+
+.TestWasm-Test6 { grid-area: Test6; }
+
+.TestWasm-Test7 { grid-area: Test7; }
+
+.TestWasm-Test8 { grid-area: Test8; }
+
+.TestWasm-ts-cpp-ts { grid-area: TestTsCppTs; }
+
+.TestWasm-button {
+    width:80px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/testWasmIntegrated.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,82 @@
+<!doctype html>
+
+<html lang="us">
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+    <title>Javascript to WASM message passing</title>
+    <link href="styles.css" rel="stylesheet" />
+    <!-- <link href="styles2.css" rel="stylesheet" /> -->
+    <!-- 
+    <link href="testwasm_bootstrap.css" rel="stylesheet" /> 
+    -->
+    <body>
+    <div class="TestWasm-grid-container">
+        <textarea id="TestWasm-SerializedInput" class="TestWasm-SerializedInput">Serialized data should be put here.</textarea>
+        <textarea id="TestWasm-CppOutput" class="TestWasm-CppOutput">Free text and messages from C++ will appear here.</textarea>
+        <div class="TestWasm-ButtonContainer">
+          <div class="TestWasm-TriggerButton">
+            <button class="TestWasm-button" tool-selector="Trigger">Send message</button>
+          </div>
+          <div class="TestWasm-ClearButton">
+            <button class="TestWasm-button" tool-selector="Clear">Clear</button>
+          </div>
+          <div class="TestWasm-ShowSchemaButton">
+            <button class="TestWasm-button" tool-selector="ShowSchema">Show schema</button>
+          </div>
+           <!-- <button class="TestWasm-button TestWasm-hvcenter" tool-selector="Trigger">Send message</button>
+            <button class="TestWasm-button TestWasm-hvcenter" tool-selector="Clear">Clear</button>
+            <button class="TestWasm-button TestWasm-hvcenter" tool-selector="Show schema">Show schema</button> -->
+        </div>
+        
+        <div class="TestWasm-Test1">
+          <button class="TestWasm-button" tool-selector="Test CppHandler message2">Test CppHandler message2</button>
+        </div>
+        <div class="TestWasm-Test2">
+          <button class="TestWasm-button" tool-selector="Test 2">Test 2</button>
+        </div>
+        <div class="TestWasm-Test3">
+          <button class="TestWasm-button" tool-selector="Test 3">Test 3</button>
+        </div>
+        <div class="TestWasm-Test4">
+          <button class="TestWasm-button" tool-selector="Test 4">Test 4</button>
+        </div>
+        <div class="TestWasm-Test5">
+          <button class="TestWasm-button" tool-selector="Test 5">Test 5</button>
+        </div>
+        <div class="TestWasm-Test6">
+          <button class="TestWasm-button" tool-selector="Test 6">Test 6</button>
+        </div>
+        <div class="TestWasm-Test7">
+          <button class="TestWasm-button" tool-selector="Test 7">Test 7</button>
+        </div>
+        <div class="TestWasm-Test8">
+          <button class="TestWasm-button" tool-selector="Test 8">Test 8</button>
+        </div>
+        <div class="TestWasm-ts-cpp-ts">
+          <button class="TestWasm-button" tool-selector="Test-ts-cpp-ts">Test ts-cpp-ts</button>
+        </div>
+  
+        <!-- <button class="TestWasm-button" class="TestWasm-Test1" tool-selector="Test 1">Test 1</button>
+        <button class="TestWasm-button" class="TestWasm-Test2" tool-selector="Test 2">Test 2</button>
+        <button class="TestWasm-button" class="TestWasm-Test3" tool-selector="Test 3">Test 3</button>
+        <button class="TestWasm-button" class="TestWasm-Test4" tool-selector="Test 4">Test 4</button> -->
+
+
+
+        <!-- <div class="Trigger"></div>
+        <div class="Test1"></div>
+        <div class="Test2"></div>
+        <div class="Test3"></div>
+        <div class="Test4"></div> -->
+      </div>
+
+  <!-- <div id="toolbox" style="height: 50px">
+    <button tool-selector="line-measure" class="tool-selector">line</button>
+  </div> -->
+  <script type="text/javascript" src="testWasmIntegratedCpp.js"></script>
+  <script type="text/javascript" src="testWasmIntegratedApp.js"></script>
+</body>
+
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/testWasmIntegrated.ts	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,210 @@
+var SendMessageToCpp: Function = null;
+export var TestWasmIntegratedModule : any;
+
+import * as TestStoneCodeGen from './build-wasm/TestStoneCodeGen_generated'
+
+/*
++--------------------------------------------------+
+|  install emscripten handlers                     |
++--------------------------------------------------+
+*/
+
+// (<any> window).Module = {
+//   preRun: [ 
+//     function() {
+//     console.log('Loading the Stone Framework using WebAssembly');
+//     }
+//   ],
+//   postRun: [ 
+//     function()  {
+//     // This function is called by ".js" wrapper once the ".wasm"
+//     // WebAssembly module has been loaded and compiled by the
+//     // browser
+//     console.log('WebAssembly is ready');
+//     // window.SendMessageToCpp = (<any> window).Module.cwrap('SendMessageToCpp', 'string', ['string']);
+//     // window.SendFreeTextToCpp = (<any> window).Module.cwrap('SendFreeTextToCpp', 'string', ['string']);
+//     }
+//   ],
+//   print: function(text : string) {
+//     console.log(text);
+//   },
+//   printErr: function(text : string) {
+//     console.error(text);
+//   },
+//   totalDependencies: 0
+// };
+
+/*
++--------------------------------------------------+
+|  install handlers                                |
++--------------------------------------------------+
+*/
+document.querySelectorAll(".TestWasm-button").forEach((e) => {
+  (e as HTMLButtonElement).addEventListener("click", () => {
+    ButtonClick(e.attributes["tool-selector"].value);
+  });
+});
+
+/*
++--------------------------------------------------+
+|  define stock messages                           |
++--------------------------------------------------+
+*/
+let schemaText: string = null;
+fetch("testTestStoneCodeGen.yaml").then(function(res) {return res.text();}).then(function(text) {schemaText = text;});
+
+let stockSerializedMessages = new Map<string,string>();
+stockSerializedMessages["Test CppHandler message2"] = null;
+fetch("cppHandler_test_Message2.json").then(function(res) {return res.text();}).then(function(text) {stockSerializedMessages["Test CppHandler message2"] = text;});
+
+stockSerializedMessages["Test 2"] = ` {
+  "type" : "TestStoneCodeGen.Message1",
+  "value" : {
+    "memberInt32" : -987,
+    "memberString" : "Salomé",
+    "memberEnumMonth" : "March",
+    "memberBool" : true,
+    "memberFloat32" : 0.1,
+    "memberFloat64" : -0.2,
+    "extraMember" : "don't care"
+  }
+}`;
+stockSerializedMessages["Test 3"] = "Test 3 stock message sdfsfsdfsdf";
+stockSerializedMessages["Test 4"] = "Test 4 stock message 355345345";
+stockSerializedMessages["Test 5"] = "Test 5 stock message 34535";
+stockSerializedMessages["Test 6"] = "Test 6 stock message xcvcxvx";
+stockSerializedMessages["Test 7"] = "Test 7 stock message fgwqewqdgg";
+stockSerializedMessages["Test 8"] = "Test 8 stock message fgfsdfsdgg";
+
+/*
++--------------------------------------------------+
+|  define handler                                  |
++--------------------------------------------------+
+*/
+
+function setSerializedInputValue(text: string) {
+  let e : HTMLTextAreaElement = document.getElementById('TestWasm-SerializedInput') as HTMLTextAreaElement;
+  e.value = text;
+}
+
+function getSerializedInputValue(): string {
+  let e : HTMLTextAreaElement = document.getElementById('TestWasm-SerializedInput') as HTMLTextAreaElement;
+  return e.value;
+}
+
+function setCppOutputValue(text: string) {
+  let e : HTMLTextAreaElement = document.getElementById('TestWasm-CppOutput') as HTMLTextAreaElement;
+  e.value = text;
+}
+
+function getCppOutputValue(): string {
+  let e : HTMLTextAreaElement = document.getElementById('TestWasm-CppOutput') as HTMLTextAreaElement;
+  return e.value;
+}
+
+function SendFreeTextFromCpp(txt: string):string
+{
+  setCppOutputValue(getCppOutputValue() + "\n" + txt);
+  return "";
+}
+(<any> window).SendFreeTextFromCpp = SendFreeTextFromCpp;
+
+var referenceMessages = Array<any>();
+
+function testTsCppTs() {
+  var r = new TestStoneCodeGen.Message2();
+  r.memberEnumMovieType = TestStoneCodeGen.MovieType.RomCom;
+  r.memberStringWithDefault = "overriden";
+  r.memberMapEnumFloat[TestStoneCodeGen.CrispType.CreamAndChives] = 0.5;
+  r.memberString = "reference-messsage2-test1";
+
+  referenceMessages[r.memberString] = r;
+  var strMsg2 = r.StoneSerialize();
+  let SendMessageToCppForEchoLocal = (<any> window).Module.cwrap('SendMessageToCppForEcho', 'string', ['string']);
+  SendMessageToCppForEchoLocal(strMsg2);
+}
+
+class MyEchoHandler implements TestStoneCodeGen.IHandler
+{
+  public HandleMessage2(value:  TestStoneCodeGen.Message2): boolean
+  {
+    if (value.memberString in referenceMessages) {
+      let r = referenceMessages[value.memberString];
+      let equals = (value.memberStringWithDefault == r.memberStringWithDefault);
+      if (TestStoneCodeGen.CrispType.CreamAndChives in r.memberMapEnumFloat) {
+        equals == equals && r.memberMapEnumFloat[TestStoneCodeGen.CrispType.CreamAndChives] == value.memberMapEnumFloat[TestStoneCodeGen.CrispType.CreamAndChives];
+      }
+      // TODO continue comparison
+
+      if (equals) {
+        console.log("objects are equals after round trip");
+        return true;
+      }
+    }
+    console.log("problem after round trip");
+    return true;
+  }
+}
+
+function SendMessageFromCpp(txt: string):string
+{
+  setCppOutputValue(getCppOutputValue() + "\n" + txt);
+  TestStoneCodeGen.StoneDispatchToHandler(txt, new MyEchoHandler());
+  return "";
+}
+(<any> window).SendMessageFromCpp = SendMessageFromCpp;
+
+
+
+function ButtonClick(buttonName: string) {
+  if (buttonName.startsWith('Test ')) {
+    setSerializedInputValue(stockSerializedMessages[buttonName]);
+  }
+  else if (buttonName == "Test-ts-cpp-ts") {
+    testTsCppTs();
+  }
+  else if(buttonName == 'Trigger')
+  {
+    let serializedInputValue:string = getSerializedInputValue();
+
+    let SendMessageToCppLocal = (<any> window).Module.cwrap('SendMessageToCpp', 'string', ['string']);
+    SendMessageToCppLocal(serializedInputValue);
+  }
+  else if(buttonName == 'Clear')
+  {
+    setCppOutputValue("");
+  }
+  else if(buttonName == 'ShowSchema')
+  {
+    setCppOutputValue(schemaText);
+  }
+  else
+  {
+    throw new Error("Internal error!");
+  }
+}
+
+
+
+// this method is called "from the C++ code" when the StoneApplication is updated.
+// it can be used to update the UI of the application
+function UpdateWebApplicationWithString(statusUpdateMessageString: string) {
+  console.log("updating web application (string): ", statusUpdateMessageString);
+  let statusUpdateMessage = JSON.parse(statusUpdateMessageString);
+
+  if ("event" in statusUpdateMessage)
+  {
+    let eventName = statusUpdateMessage["event"];
+    if (eventName == "appStatusUpdated")
+    {
+      //ui.onAppStatusUpdated(statusUpdateMessage["data"]);
+    }
+  }
+}
+
+
+function UpdateWebApplicationWithSerializedMessage(statusUpdateMessageString: string) {
+  console.log("updating web application (serialized message): ", statusUpdateMessageString);
+  console.log("<not supported!>");
+}
+ 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/test_data/test2.yaml	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,17 @@
+enum EnumMonth0:
+  - January
+  - February
+  - Month
+
+struct Message1:
+  a: int32
+  b: string
+  c: EnumMonth0
+  d: bool
+
+struct Message2:
+  toto: string
+  tata: vector<Message1>
+  tutu: vector<string>
+  titi: map<string, string>
+  lulu: map<string, Message1>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Resources/CodeGeneration/test_data/testTestStoneCodeGen.yaml	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,64 @@
+#
+#        1         2         3         4         5         6         7         8
+# 345678901234567890123456789012345678901234567890123456789012345678901234567890
+#
+rootName: TestStoneCodeGen
+
+struct B:
+  __handler: cpp
+
+  someAs: vector<A>
+  someInts: vector<int32>
+
+struct C:
+  __handler: cpp
+
+  someBs: vector<B>
+  ddd:    vector<string>
+
+struct A:
+  __handler: cpp
+
+  someStrings: vector<string>
+  someInts2: vector<int32>
+  movies: vector<MovieType>
+
+struct Message1:
+  __handler: cpp
+
+  memberInt32: int32
+  memberString: string
+  memberEnumMonth: EnumMonth0
+  memberBool: bool
+  memberFloat32: float32
+  memberFloat64: float64
+
+struct Message2:
+  __handler: [cpp, ts]
+
+  memberString: string
+  memberStringWithDefault: string = "my-default-value"
+  memberVectorOfMessage1: vector<Message1>
+  memberVectorOfString: vector<string>
+  memberMapStringString: map<string, string>
+  memberMapStringStruct: map<string, Message1>
+  memberMapEnumFloat: map<CrispType, float32>
+  memberEnumMovieType: MovieType
+  memberJson: json
+
+enum MovieType:
+  - RomCom
+  - Horror
+  - ScienceFiction
+  - Vegetables
+
+enum CrispType:
+  - SaltAndPepper
+  - CreamAndChives
+  - Paprika
+  - Barbecue
+
+enum EnumMonth0:
+  - January
+  - February
+  - March
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/BasicScene.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,275 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "BasicScene.h"
+
+// From Stone
+#include "Framework/Scene2D/Scene2D.h"
+#include "Framework/Scene2D/ColorTextureSceneLayer.h"
+#include "Framework/Scene2D/PolylineSceneLayer.h"
+#include "Framework/Scene2D/TextSceneLayer.h"
+
+#include "Framework/Scene2D/PanSceneTracker.h"
+#include "Framework/Scene2D/ZoomSceneTracker.h"
+#include "Framework/Scene2D/RotateSceneTracker.h"
+
+#include "Framework/Scene2D/CairoCompositor.h"
+
+// From Orthanc framework
+#include <Core/Images/Image.h>
+#include <Core/Images/ImageProcessing.h>
+#include <Core/Images/PngWriter.h>
+
+using namespace OrthancStone;
+
+const unsigned int BASIC_SCENE_FONT_SIZE = 32;
+const int BASIC_SCENE_LAYER_POSITION = 150;
+
+void PrepareScene(Scene2D& scene)
+{
+  //Scene2D& scene(*controller->GetScene());
+  // Texture of 2x2 size
+  {
+    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false);
+
+    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
+    p[0] = 255;
+    p[1] = 0;
+    p[2] = 0;
+
+    p[3] = 0;
+    p[4] = 255;
+    p[5] = 0;
+
+    p = reinterpret_cast<uint8_t*>(i.GetRow(1));
+    p[0] = 0;
+    p[1] = 0;
+    p[2] = 255;
+
+    p[3] = 255;
+    p[4] = 0;
+    p[5] = 0;
+
+    scene.SetLayer(12, new ColorTextureSceneLayer(i));
+
+    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
+    l->SetOrigin(-3, 2);
+    l->SetPixelSpacing(1.5, 1);
+    l->SetAngle(20.0 / 180.0 * 3.14);
+    scene.SetLayer(14, l.release());
+  }
+
+  // Texture of 1x1 size
+  {
+    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 1, 1, false);
+
+    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
+    p[0] = 255;
+    p[1] = 0;
+    p[2] = 0;
+
+    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
+    l->SetOrigin(-2, 1);
+    l->SetAngle(20.0 / 180.0 * 3.14);
+    scene.SetLayer(13, l.release());
+  }
+
+  // Some lines
+  {
+    std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer);
+
+    layer->SetThickness(1);
+
+    PolylineSceneLayer::Chain chain;
+    chain.push_back(ScenePoint2D(0 - 0.5, 0 - 0.5));
+    chain.push_back(ScenePoint2D(0 - 0.5, 2 - 0.5));
+    chain.push_back(ScenePoint2D(2 - 0.5, 2 - 0.5));
+    chain.push_back(ScenePoint2D(2 - 0.5, 0 - 0.5));
+    layer->AddChain(chain, true, 255, 0, 0);
+
+    chain.clear();
+    chain.push_back(ScenePoint2D(-5, -5));
+    chain.push_back(ScenePoint2D(5, -5));
+    chain.push_back(ScenePoint2D(5, 5));
+    chain.push_back(ScenePoint2D(-5, 5));
+    layer->AddChain(chain, true, 0, 255, 0);
+
+    double dy = 1.01;
+    chain.clear();
+    chain.push_back(ScenePoint2D(-4, -4));
+    chain.push_back(ScenePoint2D(4, -4 + dy));
+    chain.push_back(ScenePoint2D(-4, -4 + 2.0 * dy));
+    chain.push_back(ScenePoint2D(4, 2));
+    layer->AddChain(chain, false, 0, 0, 255);
+
+    //    layer->SetColor(0,255, 255);
+    scene.SetLayer(50, layer.release());
+  }
+
+  // Some text
+  {
+    std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
+    layer->SetText("Hello");
+    scene.SetLayer(100, layer.release());
+  }
+}
+
+#if ORTHANC_SANDBOXED == 0
+void TakeScreenshot(const std::string& target,
+                    const OrthancStone::Scene2D& scene,
+                    unsigned int canvasWidth,
+                    unsigned int canvasHeight)
+{
+  using namespace OrthancStone;
+  // Take a screenshot, then save it as PNG file
+  CairoCompositor compositor(scene, canvasWidth, canvasHeight);
+  compositor.SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, BASIC_SCENE_FONT_SIZE, Orthanc::Encoding_Latin1);
+  compositor.Refresh();
+
+  Orthanc::ImageAccessor canvas;
+  compositor.GetCanvas().GetReadOnlyAccessor(canvas);
+
+  Orthanc::Image png(Orthanc::PixelFormat_RGB24, canvas.GetWidth(), canvas.GetHeight(), false);
+  Orthanc::ImageProcessing::Convert(png, canvas);
+
+  Orthanc::PngWriter writer;
+  writer.WriteToFile(target, png);
+}
+#endif
+
+void ShowCursorInfo(Scene2D& scene, const PointerEvent& pointerEvent)
+{
+  ScenePoint2D p = pointerEvent.GetMainPosition().Apply(scene.GetCanvasToSceneTransform());
+
+  char buf[64];
+  sprintf(buf, "(%0.02f,%0.02f)", p.GetX(), p.GetY());
+
+  if (scene.HasLayer(BASIC_SCENE_LAYER_POSITION))
+  {
+    TextSceneLayer& layer =
+        dynamic_cast<TextSceneLayer&>(scene.GetLayer(BASIC_SCENE_LAYER_POSITION));
+    layer.SetText(buf);
+    layer.SetPosition(p.GetX(), p.GetY());
+  }
+  else
+  {
+    std::unique_ptr<TextSceneLayer>
+        layer(new TextSceneLayer);
+    layer->SetColor(0, 255, 0);
+    layer->SetText(buf);
+    layer->SetBorder(20);
+    layer->SetAnchor(BitmapAnchor_BottomCenter);
+    layer->SetPosition(p.GetX(), p.GetY());
+    scene.SetLayer(BASIC_SCENE_LAYER_POSITION, layer.release());
+  }
+}
+
+
+
+bool BasicScene2DInteractor::OnMouseEvent(const GuiAdapterMouseEvent& event, const PointerEvent& pointerEvent)
+{
+  if (currentTracker_.get() != NULL)
+  {
+    switch (event.type)
+    {
+    case GUIADAPTER_EVENT_MOUSEUP:
+    {
+      currentTracker_->PointerUp(pointerEvent);
+      if (!currentTracker_->IsAlive())
+      {
+        currentTracker_.reset();
+      }
+    };break;
+    case GUIADAPTER_EVENT_MOUSEMOVE:
+    {
+      currentTracker_->PointerMove(pointerEvent);
+    };break;
+    default:
+      return false;
+    }
+    return true;
+  }
+  else if (event.type == GUIADAPTER_EVENT_MOUSEDOWN)
+  {
+    if (event.button == GUIADAPTER_MOUSEBUTTON_LEFT)
+    {
+      currentTracker_.reset(new RotateSceneTracker(viewportController_, pointerEvent));
+    }
+    else if (event.button == GUIADAPTER_MOUSEBUTTON_MIDDLE)
+    {
+      currentTracker_.reset(new PanSceneTracker(viewportController_, pointerEvent));
+    }
+    else if (event.button == GUIADAPTER_MOUSEBUTTON_RIGHT)
+    {
+      currentTracker_.reset(new ZoomSceneTracker(viewportController_, pointerEvent, viewportController_->GetViewport().GetCanvasHeight()));
+    }
+  }
+  else if (event.type == GUIADAPTER_EVENT_MOUSEMOVE)
+  {
+    if (showCursorInfo_)
+    {
+      Scene2D& scene(viewportController_->GetScene());
+      ShowCursorInfo(scene, pointerEvent);
+    }
+    return true;
+  }
+  return false;
+}
+
+bool BasicScene2DInteractor::OnKeyboardEvent(const GuiAdapterKeyboardEvent& guiEvent)
+{
+  if (guiEvent.type == GUIADAPTER_EVENT_KEYDOWN)
+  {
+    switch (guiEvent.sym[0])
+    {
+    case 's':
+    {
+      //viewportController_->FitContent(viewportController_->GetViewport().GetCanvasWidth(), viewportController_->GetViewport().GetCanvasHeight());
+      viewportController_->FitContent();
+      return true;
+    };
+#if ORTHANC_SANDBOXED == 0
+    case 'c':
+    {
+      Scene2D& scene(viewportController_->GetScene());
+      TakeScreenshot("screenshot.png", scene, viewportController_->GetViewport().GetCanvasWidth(), viewportController_->GetViewport().GetCanvasHeight());
+      return true;
+    }
+#endif
+    case 'd':
+    {
+      showCursorInfo_ = !showCursorInfo_;
+      if (!showCursorInfo_)
+      {
+        Scene2D& scene(viewportController_->GetScene());
+        scene.DeleteLayer(BASIC_SCENE_LAYER_POSITION);
+      }
+
+      return true;
+    }
+    }
+  }
+  return false;
+}
+
+bool BasicScene2DInteractor::OnWheelEvent(const GuiAdapterWheelEvent& guiEvent)
+{
+  return false;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/BasicScene.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include <boost/shared_ptr.hpp>
+#include "Framework/Scene2DViewport/ViewportController.h"
+#include "Framework/Scene2D/Scene2D.h"
+
+extern const unsigned int BASIC_SCENE_FONT_SIZE;
+extern const int BASIC_SCENE_LAYER_POSITION;
+
+extern void PrepareScene(OrthancStone::Scene2D& scene);
+extern void TakeScreenshot(const std::string& target,
+                           const OrthancStone::Scene2D& scene,
+                           unsigned int canvasWidth,
+                           unsigned int canvasHeight);
+
+
+#include "Applications/Generic/Scene2DInteractor.h"
+#include "Framework/Scene2DViewport/IFlexiblePointerTracker.h"
+
+
+class BasicScene2DInteractor : public OrthancStone::Scene2DInteractor
+{
+  boost::shared_ptr<OrthancStone::IFlexiblePointerTracker>  currentTracker_;
+  bool                                                      showCursorInfo_;
+public:
+  BasicScene2DInteractor(boost::shared_ptr<OrthancStone::ViewportController> viewportController) :
+    Scene2DInteractor(viewportController),
+    showCursorInfo_(false)
+  {}
+
+  virtual bool OnMouseEvent(const OrthancStone::GuiAdapterMouseEvent& event, const OrthancStone::PointerEvent& pointerEvent) override;
+  virtual bool OnKeyboardEvent(const OrthancStone::GuiAdapterKeyboardEvent& guiEvent) override;
+  virtual bool OnWheelEvent(const OrthancStone::GuiAdapterWheelEvent& guiEvent) override;
+};
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/mainQt.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,103 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#define GLEW_STATIC 1
+// From Stone
+#include "../../Framework/OpenGL/OpenGLIncludes.h"
+#include "../../Applications/Sdl/SdlWindow.h"
+#include "../../Framework/Scene2D/CairoCompositor.h"
+#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
+#include "../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../Framework/Scene2D/PanSceneTracker.h"
+#include "../../Framework/Scene2D/RotateSceneTracker.h"
+#include "../../Framework/Scene2D/Scene2D.h"
+#include "../../Framework/Scene2D/ZoomSceneTracker.h"
+#include "../../Framework/Scene2DViewport/ViewportController.h"
+#include "../../Framework/Scene2DViewport/UndoStack.h"
+
+#include "../../Framework/StoneInitialization.h"
+#include "../../Framework/Messages/MessageBroker.h"
+
+// From Orthanc framework
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+#include <Core/Images/Image.h>
+#include <Core/Images/ImageProcessing.h>
+#include <Core/Images/PngWriter.h>
+
+#include <boost/make_shared.hpp>
+#include <boost/ref.hpp>
+#include "EmbeddedResources.h"
+
+#include <stdio.h>
+#include <QDebug>
+#include <QWindow>
+
+#include "BasicScene.h"
+
+
+using namespace OrthancStone;
+
+
+
+static void GLAPIENTRY OpenGLMessageCallback(GLenum source,
+                                             GLenum type,
+                                             GLuint id,
+                                             GLenum severity,
+                                             GLsizei length,
+                                             const GLchar* message,
+                                             const void* userParam )
+{
+  if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
+  {
+    fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
+            ( type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : "" ),
+            type, severity, message );
+  }
+}
+
+extern void InitGL();
+
+#include <QApplication>
+#include "BasicSceneWindow.h"
+
+int main(int argc, char* argv[])
+{
+  QApplication a(argc, argv);
+
+  OrthancStone::Samples::BasicSceneWindow window;
+  window.show();
+  window.GetOpenGlWidget().Init();
+
+  MessageBroker broker;
+  boost::shared_ptr<UndoStack> undoStack(new UndoStack);
+  boost::shared_ptr<ViewportController> controller = boost::make_shared<ViewportController>(undoStack, boost::ref(broker), window.GetOpenGlWidget());
+  PrepareScene(controller->GetScene());
+
+  window.GetOpenGlWidget().GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
+                     BASIC_SCENE_FONT_SIZE, Orthanc::Encoding_Latin1);
+
+  boost::shared_ptr<OrthancStone::Scene2DInteractor> interactor(new BasicScene2DInteractor(controller));
+  window.GetOpenGlWidget().SetInteractor(interactor);
+
+  controller->FitContent();
+
+  return a.exec();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/mainSdl.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,199 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+// From Stone
+#include "Framework/Viewport/SdlViewport.h"
+#include "Framework/Scene2D/OpenGLCompositor.h"
+#include "Framework/Scene2DViewport/UndoStack.h"
+#include "Framework/StoneInitialization.h"
+#include "Framework/Messages/MessageBroker.h"
+
+// From Orthanc framework
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+
+#include <boost/make_shared.hpp>
+#include <boost/ref.hpp>
+
+#include <SDL.h>
+#include <stdio.h>
+
+
+#include "BasicScene.h"
+
+using namespace OrthancStone;
+
+boost::shared_ptr<BasicScene2DInteractor> interactor;
+
+void HandleApplicationEvent(boost::shared_ptr<OrthancStone::ViewportController> controller,
+                            const SDL_Event& event)
+{
+  using namespace OrthancStone;
+  Scene2D& scene(controller->GetScene());
+  if (event.type == SDL_MOUSEBUTTONDOWN || event.type == SDL_MOUSEBUTTONUP || event.type == SDL_MOUSEMOTION)
+  {
+    // TODO: this code is copy/pasted from GuiAdapter::Run() -> find the right place
+    int scancodeCount = 0;
+    const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
+    bool ctrlPressed(false);
+    bool shiftPressed(false);
+    bool altPressed(false);
+
+    if (SDL_SCANCODE_LCTRL < scancodeCount && keyboardState[SDL_SCANCODE_LCTRL])
+      ctrlPressed = true;
+    if (SDL_SCANCODE_RCTRL < scancodeCount && keyboardState[SDL_SCANCODE_RCTRL])
+      ctrlPressed = true;
+    if (SDL_SCANCODE_LSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_LSHIFT])
+      shiftPressed = true;
+    if (SDL_SCANCODE_RSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_RSHIFT])
+      shiftPressed = true;
+    if (SDL_SCANCODE_LALT < scancodeCount && keyboardState[SDL_SCANCODE_LALT])
+      altPressed = true;
+
+    GuiAdapterMouseEvent guiEvent;
+    ConvertFromPlatform(guiEvent, ctrlPressed, shiftPressed, altPressed, event);
+    PointerEvent pointerEvent;
+    pointerEvent.AddPosition(controller->GetViewport().GetPixelCenterCoordinates(event.button.x, event.button.y));
+
+    interactor->OnMouseEvent(guiEvent, pointerEvent);
+    return;
+  }
+  else if ((event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) && event.key.repeat == 0  /* Ignore key bounce */)
+  {
+    GuiAdapterKeyboardEvent guiEvent;
+    ConvertFromPlatform(guiEvent, event);
+
+    interactor->OnKeyboardEvent(guiEvent);
+  }
+
+}
+
+
+static void GLAPIENTRY
+OpenGLMessageCallback(GLenum source,
+                      GLenum type,
+                      GLuint id,
+                      GLenum severity,
+                      GLsizei length,
+                      const GLchar* message,
+                      const void* userParam )
+{
+  if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
+  {
+    fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
+            ( type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : "" ),
+            type, severity, message );
+  }
+}
+
+
+void Run(boost::shared_ptr<OrthancStone::ViewportController> controller)
+{
+  SdlViewport& sdlViewport = dynamic_cast<SdlViewport&>(controller->GetViewport());
+
+  glEnable(GL_DEBUG_OUTPUT);
+  glDebugMessageCallback(OpenGLMessageCallback, 0);
+
+  controller->GetViewport().GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
+                     BASIC_SCENE_FONT_SIZE, Orthanc::Encoding_Latin1);
+
+  controller->GetViewport().Refresh();
+  controller->FitContent();
+
+
+  bool stop = false;
+  while (!stop)
+  {
+    controller->GetViewport().Refresh();
+
+    SDL_Event event;
+    while (!stop &&
+           SDL_PollEvent(&event))
+    {
+      if (event.type == SDL_QUIT)
+      {
+        stop = true;
+        break;
+      }
+      else if (event.type == SDL_WINDOWEVENT &&
+               event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
+      {
+        sdlViewport.UpdateSize(event.window.data1, event.window.data2);
+      }
+      else if (event.type == SDL_KEYDOWN &&
+               event.key.repeat == 0 /* Ignore key bounce */)
+      {
+        switch (event.key.keysym.sym)
+        {
+          case SDLK_f:
+            sdlViewport.GetWindow().ToggleMaximize();
+            break;
+              
+          case SDLK_q:
+            stop = true;
+            break;
+
+          default:
+            break;
+        }
+      }
+      
+      HandleApplicationEvent(controller, event);
+    }
+
+    SDL_Delay(1);
+  }
+  interactor.reset();
+}
+
+
+
+
+/**
+ * IMPORTANT: The full arguments to "main()" are needed for SDL on
+ * Windows. Otherwise, one gets the linking error "undefined reference
+ * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
+ **/
+int main(int argc, char* argv[])
+{
+  using namespace OrthancStone;
+  StoneInitialize();
+  Orthanc::Logging::EnableInfoLevel(true);
+
+  try
+  {
+    SdlOpenGLViewport viewport("Hello", 1024, 768);
+    MessageBroker broker;
+    boost::shared_ptr<UndoStack> undoStack(new UndoStack);
+    boost::shared_ptr<ViewportController> controller = boost::make_shared<ViewportController>(undoStack, boost::ref(broker), boost::ref(viewport));
+    interactor.reset(new BasicScene2DInteractor(controller));
+    PrepareScene(controller->GetScene());
+    Run(controller);
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "EXCEPTION: " << e.What();
+  }
+
+  StoneFinalize();
+
+  return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "../../Framework/OpenGL/OpenGLIncludes.h"
+#include "BasicSceneWindow.h"
+
+/**
+ * Don't use "ui_MainWindow.h" instead of <ui_MainWindow.h> below, as
+ * this makes CMake unable to detect when the UI file changes.
+ **/
+#include <ui_BasicSceneWindow.h>
+#include "../../Applications/Samples/SampleApplicationBase.h"
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+
+    BasicSceneWindow::BasicSceneWindow(
+      QWidget *parent) :
+      ui_(new Ui::BasicSceneWindow)
+    {
+      ui_->setupUi(this);
+    }
+
+    BasicSceneWindow::~BasicSceneWindow()
+    {
+      delete ui_;
+    }
+
+    QStoneOpenGlWidget& BasicSceneWindow::GetOpenGlWidget()
+    {
+      return *(ui_->centralWidget);
+    }
+
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+#include <QMainWindow>
+#include <QStoneOpenGlWidget.h>
+// #include "../../Qt/QCairoWidget.h"
+// #include "../../Qt/QStoneMainWindow.h"
+
+namespace Ui 
+{
+  class BasicSceneWindow;
+}
+
+namespace OrthancStone
+{
+  namespace Samples
+  {
+
+    //class SampleSingleCanvasApplicationBase;
+
+    class BasicSceneWindow : public QMainWindow
+    {
+      Q_OBJECT
+
+    private:
+      Ui::BasicSceneWindow*   ui_;
+      //SampleSingleCanvasApplicationBase&  stoneSampleApplication_;
+
+    public:
+      explicit BasicSceneWindow(QWidget *parent = 0);
+      ~BasicSceneWindow();
+
+      QStoneOpenGlWidget& GetOpenGlWidget();
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.ui	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BasicSceneWindow</class>
+ <widget class="QMainWindow" name="BasicSceneWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>903</width>
+    <height>634</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>500</width>
+    <height>300</height>
+   </size>
+  </property>
+  <property name="baseSize">
+   <size>
+    <width>500</width>
+    <height>300</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Stone of Orthanc</string>
+  </property>
+  <property name="layoutDirection">
+   <enum>Qt::LeftToRight</enum>
+  </property>
+  <widget class="QWidget" name="mainWidget">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="layoutDirection">
+    <enum>Qt::LeftToRight</enum>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0">
+    <property name="sizeConstraint">
+     <enum>QLayout::SetDefaultConstraint</enum>
+    </property>
+    <item>
+     <widget class="OrthancStone::QStoneOpenGlWidget" name="centralWidget" native="true">
+      <property name="minimumSize">
+       <size>
+        <width>0</width>
+        <height>500</height>
+       </size>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>903</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuTest">
+    <property name="title">
+     <string>Test</string>
+    </property>
+   </widget>
+   <addaction name="menuTest"/>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QStoneOpenGlWidget</class>
+   <extends>QWidget</extends>
+   <header location="global">QStoneOpenGlWidget.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,83 @@
+cmake_minimum_required(VERSION 2.8.3)
+
+#####################################################################
+## Configuration of the Orthanc framework
+#####################################################################
+
+# This CMake file defines the "ORTHANC_STONE_VERSION" macro, so it
+# must be the first inclusion
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/Version.cmake)
+
+if (ORTHANC_STONE_VERSION STREQUAL "mainline")
+  set(ORTHANC_FRAMEWORK_VERSION "mainline")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
+else()
+  set(ORTHANC_FRAMEWORK_VERSION "1.5.7")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
+endif()
+
+set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
+set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
+set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
+
+
+#####################################################################
+## Configuration of the Stone framework
+#####################################################################
+
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneParameters.cmake)
+include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
+
+DownloadPackage(
+  "a24b8136b8f3bb93f166baf97d9328de"
+  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
+  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
+
+set(ORTHANC_STONE_APPLICATION_RESOURCES
+  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
+  )
+
+SET(ENABLE_GOOGLE_TEST OFF)
+SET(ENABLE_LOCALE ON)
+SET(ENABLE_QT ON)
+SET(ENABLE_SDL OFF)
+SET(ENABLE_WEB_CLIENT ON)
+SET(ORTHANC_SANDBOXED OFF)
+LIST(APPEND ORTHANC_BOOST_COMPONENTS program_options)
+
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneConfiguration.cmake)
+
+add_definitions(
+  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
+  )
+#####################################################################
+## Build the samples
+#####################################################################
+
+add_library(OrthancStone STATIC
+  ${ORTHANC_STONE_SOURCES}
+  )
+
+list(APPEND BASIC_SCENE_APPLICATIONS_SOURCES
+  BasicSceneWindow.cpp
+  )
+
+ORTHANC_QT_WRAP_UI(BASIC_SCENE_APPLICATIONS_SOURCES
+  BasicSceneWindow.ui
+  )
+
+ORTHANC_QT_WRAP_CPP(BASIC_SCENE_APPLICATIONS_SOURCES
+  BasicSceneWindow.h
+  QStoneOpenGlWidget.h
+  )
+
+add_executable(MpBasicScene
+  ${CMAKE_CURRENT_LIST_DIR}/../MultiPlatform/BasicScene/BasicScene.h
+  ${CMAKE_CURRENT_LIST_DIR}/../MultiPlatform/BasicScene/BasicScene.cpp
+  ${CMAKE_CURRENT_LIST_DIR}/../MultiPlatform/BasicScene/mainQt.cpp
+  QStoneOpenGlWidget.cpp
+  ${BASIC_SCENE_APPLICATIONS_SOURCES}
+  )
+
+target_include_directories(MpBasicScene PUBLIC ${CMAKE_SOURCE_DIR} ${ORTHANC_STONE_ROOT})
+target_link_libraries(MpBasicScene OrthancStone)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/QStoneOpenGlWidget.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,192 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "../../Framework/OpenGL/OpenGLIncludes.h"
+#include "QStoneOpenGlWidget.h"
+
+#include <QMouseEvent>
+
+using namespace OrthancStone;
+
+void QStoneOpenGlWidget::initializeGL()
+{
+  glewInit();
+}
+
+void QStoneOpenGlWidget::MakeCurrent()
+{
+  this->makeCurrent();
+}
+
+void QStoneOpenGlWidget::resizeGL(int w, int h)
+{
+
+}
+
+void QStoneOpenGlWidget::paintGL()
+{
+  if (compositor_)
+  {
+    compositor_->Refresh();
+  }
+  doneCurrent();
+}
+
+void ConvertFromPlatform(
+    OrthancStone::GuiAdapterMouseEvent& guiEvent,
+    PointerEvent& pointerEvent,
+    const QMouseEvent& qtEvent,
+    const IViewport& viewport)
+{
+  guiEvent.targetX = qtEvent.x();
+  guiEvent.targetY = qtEvent.y();
+  pointerEvent.AddPosition(viewport.GetPixelCenterCoordinates(guiEvent.targetX, guiEvent.targetY));
+
+  switch (qtEvent.button())
+  {
+  case Qt::LeftButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT; break;
+  case Qt::MiddleButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_MIDDLE; break;
+  case Qt::RightButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_RIGHT; break;
+  default:
+    guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT;
+  }
+
+  if (qtEvent.modifiers().testFlag(Qt::ShiftModifier))
+  {
+    guiEvent.shiftKey = true;
+  }
+  if (qtEvent.modifiers().testFlag(Qt::ControlModifier))
+  {
+    guiEvent.ctrlKey = true;
+  }
+  if (qtEvent.modifiers().testFlag(Qt::AltModifier))
+  {
+    guiEvent.altKey = true;
+  }
+}
+
+void QStoneOpenGlWidget::mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType)
+{
+  OrthancStone::GuiAdapterMouseEvent guiEvent;
+  PointerEvent pointerEvent;
+  ConvertFromPlatform(guiEvent, pointerEvent, *qtEvent, *this);
+  guiEvent.type = guiEventType;
+
+  if (sceneInteractor_.get() != NULL && compositor_.get() != NULL)
+  {
+    sceneInteractor_->OnMouseEvent(guiEvent, pointerEvent);
+  }
+
+  // force redraw of the OpenGL widget
+  update();
+}
+
+void QStoneOpenGlWidget::mousePressEvent(QMouseEvent* qtEvent)
+{
+  mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEDOWN);
+}
+
+void QStoneOpenGlWidget::mouseMoveEvent(QMouseEvent* qtEvent)
+{
+  mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEMOVE);
+}
+
+void QStoneOpenGlWidget::mouseReleaseEvent(QMouseEvent* qtEvent)
+{
+  mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEUP);
+}
+
+void ConvertFromPlatform(
+    OrthancStone::GuiAdapterKeyboardEvent& guiEvent,
+    const QKeyEvent& qtEvent)
+{
+  if (qtEvent.text().length() > 0)
+  {
+    guiEvent.sym[0] = qtEvent.text()[0].cell();
+  }
+  else
+  {
+    guiEvent.sym[0] = 0;
+  }
+  guiEvent.sym[1] = 0;
+
+  if (qtEvent.modifiers().testFlag(Qt::ShiftModifier))
+  {
+    guiEvent.shiftKey = true;
+  }
+  if (qtEvent.modifiers().testFlag(Qt::ControlModifier))
+  {
+    guiEvent.ctrlKey = true;
+  }
+  if (qtEvent.modifiers().testFlag(Qt::AltModifier))
+  {
+    guiEvent.altKey = true;
+  }
+
+}
+
+
+bool QStoneOpenGlWidget::keyEvent(QKeyEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType)
+{
+  bool handled = false;
+  OrthancStone::GuiAdapterKeyboardEvent guiEvent;
+  ConvertFromPlatform(guiEvent, *qtEvent);
+  guiEvent.type = guiEventType;
+
+  if (sceneInteractor_.get() != NULL && compositor_.get() != NULL)
+  {
+    handled = sceneInteractor_->OnKeyboardEvent(guiEvent);
+
+    if (handled)
+    {
+      // force redraw of the OpenGL widget
+      update();
+    }
+  }
+  return handled;
+}
+
+void QStoneOpenGlWidget::keyPressEvent(QKeyEvent *qtEvent)
+{
+  bool handled = keyEvent(qtEvent, GUIADAPTER_EVENT_KEYDOWN);
+  if (!handled)
+  {
+    QOpenGLWidget::keyPressEvent(qtEvent);
+  }
+}
+
+void QStoneOpenGlWidget::keyReleaseEvent(QKeyEvent *qtEvent)
+{
+  bool handled = keyEvent(qtEvent, GUIADAPTER_EVENT_KEYUP);
+  if (!handled)
+  {
+    QOpenGLWidget::keyPressEvent(qtEvent);
+  }
+}
+
+void QStoneOpenGlWidget::wheelEvent(QWheelEvent *qtEvent)
+{
+  OrthancStone::GuiAdapterWheelEvent guiEvent;
+  throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+
+  // force redraw of the OpenGL widget
+  update();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/QStoneOpenGlWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,111 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+#include "../../Framework/OpenGL/OpenGLIncludes.h"
+#include <QOpenGLWidget>
+#include <QOpenGLFunctions>
+#include <QOpenGLContext>
+
+#include <boost/shared_ptr.hpp>
+#include "../../Framework/OpenGL/IOpenGLContext.h"
+#include "../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../Framework/Viewport/ViewportBase.h"
+#include "../../Applications/Generic/Scene2DInteractor.h"
+
+namespace OrthancStone
+{
+  class QStoneOpenGlWidget :
+      public QOpenGLWidget,
+      public OpenGL::IOpenGLContext,
+      public ViewportBase
+  {
+    std::unique_ptr<OrthancStone::OpenGLCompositor> compositor_;
+    boost::shared_ptr<Scene2DInteractor> sceneInteractor_;
+    QOpenGLContext                        openGlContext_;
+
+  public:
+    QStoneOpenGlWidget(QWidget *parent) :
+      QOpenGLWidget(parent),
+      ViewportBase("QtStoneOpenGlWidget")  // TODO: we shall be able to define a name but construction time is too early !
+    {
+      setFocusPolicy(Qt::StrongFocus);  // to enable keyPressEvent
+      setMouseTracking(true);           // to enable mouseMoveEvent event when no button is pressed
+    }
+
+    void Init()
+    {
+      QSurfaceFormat requestedFormat;
+      requestedFormat.setVersion( 2, 0 );
+      openGlContext_.setFormat( requestedFormat );
+      openGlContext_.create();
+      openGlContext_.makeCurrent(context()->surface());
+
+      compositor_.reset(new OpenGLCompositor(*this, GetScene()));
+    }
+
+  protected:
+
+    //**** QWidget overrides
+    void initializeGL() override;
+    void resizeGL(int w, int h) override;
+    void paintGL() override;
+
+    void mousePressEvent(QMouseEvent* event) override;
+    void mouseMoveEvent(QMouseEvent* event) override;
+    void mouseReleaseEvent(QMouseEvent* event) override;
+    void keyPressEvent(QKeyEvent* event) override;
+    void keyReleaseEvent(QKeyEvent *event) override;
+    void wheelEvent(QWheelEvent* event) override;
+
+    //**** IOpenGLContext overrides
+
+    virtual void MakeCurrent() override;
+    virtual void SwapBuffer() override {}
+
+    virtual unsigned int GetCanvasWidth() const override
+    {
+      return this->width();
+    }
+
+    virtual unsigned int GetCanvasHeight() const override
+    {
+      return this->height();
+    }
+
+  public:
+
+    void SetInteractor(boost::shared_ptr<Scene2DInteractor> sceneInteractor)
+    {
+      sceneInteractor_ = sceneInteractor;
+    }
+
+    virtual ICompositor& GetCompositor()
+    {
+      return *compositor_;
+    }
+
+  protected:
+    void mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType);
+    bool keyEvent(QKeyEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType);
+
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/Scene2DInteractor.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,93 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "Scene2DInteractor.h"
+
+#include "../../Framework/Scene2D/PanSceneTracker.h"
+#include "../../Framework/Scene2D/ZoomSceneTracker.h"
+#include "../../Framework/Scene2D/RotateSceneTracker.h"
+
+
+namespace OrthancStone
+{
+
+}
+
+using namespace OrthancStone;
+
+
+bool BasicScene2DInteractor::OnMouseEvent(const GuiAdapterMouseEvent& event, const PointerEvent& pointerEvent)
+{
+  if (currentTracker_.get() != NULL)
+  {
+    switch (event.type)
+    {
+    case GUIADAPTER_EVENT_MOUSEUP:
+    {
+      currentTracker_->PointerUp(pointerEvent);
+      if (!currentTracker_->IsAlive())
+      {
+        currentTracker_.reset();
+      }
+    };break;
+    case GUIADAPTER_EVENT_MOUSEMOVE:
+    {
+      currentTracker_->PointerMove(pointerEvent);
+    };break;
+    }
+    return true;
+  }
+  else
+  {
+    if (event.button == GUIADAPTER_MOUSEBUTTON_LEFT)
+    {
+      currentTracker_.reset(new RotateSceneTracker(viewportController_, pointerEvent));
+    }
+    else if (event.button == GUIADAPTER_MOUSEBUTTON_MIDDLE)
+    {
+      currentTracker_.reset(new PanSceneTracker(viewportController_, pointerEvent));
+    }
+    else if (event.button == GUIADAPTER_MOUSEBUTTON_RIGHT && compositor_.get() != NULL)
+    {
+      currentTracker_.reset(new ZoomSceneTracker(viewportController_, pointerEvent, compositor_->GetHeight()));
+    }
+    return true;
+  }
+  return false;
+}
+
+bool BasicScene2DInteractor::OnKeyboardEvent(const GuiAdapterKeyboardEvent& guiEvent)
+{
+  switch (guiEvent.sym[0])
+  {
+  case 's':
+  {
+    viewportController_->FitContent(compositor_->GetWidth(), compositor_->GetHeight());
+    return true;
+  };
+  }
+  return false;
+}
+
+bool BasicScene2DInteractor::OnWheelEvent(const GuiAdapterWheelEvent& guiEvent)
+{
+  return false;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Qt/Scene2DInteractor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,40 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Applications/Generic/Scene2DInteractor.h"
+#include "../../Framework/Scene2DViewport/IFlexiblePointerTracker.h"
+
+
+class BasicScene2DInteractor : public OrthancStone::Scene2DInteractor
+{
+  boost::shared_ptr<OrthancStone::IFlexiblePointerTracker>  currentTracker_;
+public:
+  BasicScene2DInteractor(boost::shared_ptr<OrthancStone::ViewportController> viewportController) :
+    Scene2DInteractor(viewportController)
+  {}
+
+  virtual bool OnMouseEvent(const OrthancStone::GuiAdapterMouseEvent& event, const OrthancStone::PointerEvent& pointerEvent) override;
+  virtual bool OnKeyboardEvent(const OrthancStone::GuiAdapterKeyboardEvent& guiEvent);
+  virtual bool OnWheelEvent(const OrthancStone::GuiAdapterWheelEvent& guiEvent);
+};
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/README.md	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,195 @@
+
+**These samples are deprecated and not guaranteed to work. A migration to a 
+new version of the Stone API is underway.**
+
+Please read orthanc-stone/Samples/README.md first for general requirements.
+
+
+
+Deprecated -- to be sorted
+===========================
+
+The following assumes that the source code to be downloaded in
+`~/orthanc-stone` and Orthanc source code to be checked out in
+`~/orthanc`. 
+
+Building the WASM samples
+-------------------------------------
+
+```
+cd ~/orthanc-stone/Applications/Samples
+./build-wasm.sh
+```
+
+Serving the WASM samples
+------------------------------------
+```
+# launch an Orthanc listening on 8042 port:
+Orthanc
+
+# launch an nginx that will serve the WASM static files and reverse
+# proxy
+sudo nginx -p $(pwd) -c nginx.local.conf
+```
+
+You can now open the samples in http://localhost:9977
+
+Building the SDL native samples (SimpleViewer only)
+---------------------------------------------------
+
+The following also assumes that you have checked out the Orthanc
+source code in an `orthanc` folder next to the Stone of Orthanc
+repository, please enter the following:
+
+**Simple make generator with dynamic build**
+
+```
+# Please set $currentDir to the current folder
+mkdir -p ~/builds/orthanc-stone-build
+cd ~/builds/orthanc-stone-build
+cmake -DORTHANC_FRAMEWORK_SOURCE=path \
+    -DORTHANC_FRAMEWORK_ROOT=$currentDir/../../../orthanc \
+    -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON \
+    ~/orthanc-stone/Applications/Samples/
+```
+
+**Ninja generator with static SDL build (pwsh script)**
+
+```
+# Please yourself one level above the orthanc-stone and orthanc folders
+if( -not (test-path stone_build_sdl)) { mkdir stone_build_sdl }
+cd stone_build_sdl
+cmake -G Ninja -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples/
+```
+
+**Ninja generator with static SDL build (bash/zsh script)**
+
+```
+# Please yourself one level above the orthanc-stone and orthanc folders
+if( -not (test-path stone_build_sdl)) { mkdir stone_build_sdl }
+cd stone_build_sdl
+cmake -G Ninja -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="`pwd`/../orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples/
+```
+
+**Visual Studio 2017 generator with static SDL build  (pwsh script)**
+
+```
+# The following will use Visual Studio 2017 to build the SDL samples
+# in debug mode (with multiple compilers in parallel). NOTE: place 
+# yourself one level above the `orthanc-stone` and `orthanc` folders
+
+if( -not (test-path stone_build_sdl)) { mkdir stone_build_sdl }
+cd stone_build_sdl
+cmake -G "Visual Studio 15 2017 Win64" -DMSVC_MULTIPLE_PROCESSES=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples/
+cmake --build . --config Debug
+```
+
+If you are working on Windows, add the correct generator option to
+cmake to, for instance, generate msbuild files for Visual Studio.
+
+Then, under Linux:
+```
+cmake --build . --target OrthancStoneSimpleViewer -- -j 5
+```
+
+Note: replace `$($pwd)` with the current directory when not using Powershell
+
+Building the Qt native samples (SimpleViewer only) under Windows:
+------------------------------------------------------------------
+
+**Visual Studio 2017 generator with static Qt build  (pwsh script)**
+
+For instance, if Qt is installed in `C:\Qt\5.12.0\msvc2017_64`
+
+```
+# The following will use Visual Studio 2017 to build the SDL samples
+# in debug mode (with multiple compilers in parallel). NOTE: place 
+# yourself one level above the `orthanc-stone` and `orthanc` folders
+
+if( -not (test-path stone_build_qt)) { mkdir stone_build_qt }
+cd stone_build_qt
+cmake -G "Visual Studio 15 2017 Win64" -DMSVC_MULTIPLE_PROCESSES=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DCMAKE_PREFIX_PATH=C:\Qt\5.12.0\msvc2017_64 -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_QT=ON  ../orthanc-stone/Applications/Samples/
+cmake --build . --config Debug
+```
+
+Note: replace `$($pwd)` with the current directory when not using Powershell
+
+
+
+
+
+
+Building the SDL native samples (SimpleViewer only) under Windows:
+------------------------------------------------------------------
+`cmake -DSTATIC_BUILD=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON -G "Visual Studio 15 2017 Win64" ../orthanc-stone/Applications/Samples/`
+
+Note: replace `$($pwd)` with the current directory when not using Powershell
+
+Executing the native samples:
+--------------------------------
+```
+# launch an Orthanc listening on 8042 port:
+Orthanc
+
+# launch the sample
+./OrthancStoneSimpleViewer --studyId=XX
+``` 
+
+Build the Application Samples
+-----------------------------
+
+**Visual Studio 2008 (v90) **
+
+```
+cmake -G "Visual Studio 9 2008" -DUSE_LEGACY_JSONCPP=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples
+```
+
+**Visual Studio 2019 (v142) **
+
+```
+cmake -G "Visual Studio 16 2019" -A x64 -DMSVC_MULTIPLE_PROCESSES=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples
+```
+
+**Visual Studio 2017 (v140) **
+
+```
+cmake -G "Visual Studio 15 2017 Win64" -DMSVC_MULTIPLE_PROCESSES=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples
+```
+
+
+Build the core Samples
+---------------------------
+How to build the newest (2019-04-29) SDL samples under Windows, *inside* a
+folder that is sibling to the orthanc-stone folder: 
+
+**Visual Studio 2019 (v142) **
+
+```
+cmake -G "Visual Studio 16 2019" -A x64 -DMSVC_MULTIPLE_PROCESSES=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Samples/Sdl
+```
+
+**Visual Studio 2017 (v140) **
+
+```
+cmake -G "Visual Studio 15 2017 Win64" -DMSVC_MULTIPLE_PROCESSES=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Samples/Sdl
+```
+
+**Visual Studio 2008 (v90) **
+
+```
+cmake -G "Visual Studio 9 2008" -DUSE_LEGACY_JSONCPP=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Samples/Sdl
+```
+
+And under Ubuntu (note the /mnt/c/osi/dev/orthanc folder):
+```
+cmake -G "Ninja" -DENABLE_OPENGL=ON -DSTATIC_BUILD=OFF -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="/mnt/c/osi/dev/orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Samples/Sdl
+```
+
+TODO trackers:
+- CANCELLED (using outlined text now) text overlay 50% --> ColorTextureLayer 50%
+- DONE angle tracker: draw arcs
+- Handles on arc
+- Select measure tool with hit test --> Delete command
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/BasicScene.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,418 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+// From Stone
+#include "../../Framework/Viewport/SdlViewport.h"
+#include "../../Framework/Scene2D/CairoCompositor.h"
+#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
+#include "../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../Framework/Scene2D/PanSceneTracker.h"
+#include "../../Framework/Scene2D/RotateSceneTracker.h"
+#include "../../Framework/Scene2D/ZoomSceneTracker.h"
+#include "../../Framework/Scene2DViewport/ViewportController.h"
+#include "../../Framework/Scene2DViewport/UndoStack.h"
+
+#include "../../Framework/StoneInitialization.h"
+#include "../../Framework/Messages/MessageBroker.h"
+
+// From Orthanc framework
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+#include <Core/Images/Image.h>
+#include <Core/Images/ImageProcessing.h>
+#include <Core/Images/PngWriter.h>
+
+#include <boost/make_shared.hpp>
+
+#include <SDL.h>
+#include <stdio.h>
+
+static const unsigned int FONT_SIZE = 32;
+static const int LAYER_POSITION = 150;
+
+#define OPENGL_ENABLED 0
+
+void PrepareScene(OrthancStone::Scene2D& scene)
+{
+  using namespace OrthancStone;
+
+  // Texture of 2x2 size
+  {
+    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false);
+    
+    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
+    p[0] = 255;
+    p[1] = 0;
+    p[2] = 0;
+
+    p[3] = 0;
+    p[4] = 255;
+    p[5] = 0;
+
+    p = reinterpret_cast<uint8_t*>(i.GetRow(1));
+    p[0] = 0;
+    p[1] = 0;
+    p[2] = 255;
+
+    p[3] = 255;
+    p[4] = 0;
+    p[5] = 0;
+
+    scene.SetLayer(12, new ColorTextureSceneLayer(i));
+
+    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
+    l->SetOrigin(-3, 2);
+    l->SetPixelSpacing(1.5, 1);
+    l->SetAngle(20.0 / 180.0 * M_PI);
+    scene.SetLayer(14, l.release());
+  }
+
+  // Texture of 1x1 size
+  {
+    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 1, 1, false);
+    
+    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
+    p[0] = 255;
+    p[1] = 0;
+    p[2] = 0;
+
+    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
+    l->SetOrigin(-2, 1);
+    l->SetAngle(20.0 / 180.0 * M_PI);
+    scene.SetLayer(13, l.release());
+  }
+
+  // Some lines
+  {
+    std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer);
+
+    layer->SetThickness(10);
+
+    PolylineSceneLayer::Chain chain;
+    chain.push_back(ScenePoint2D(0 - 0.5, 0 - 0.5));
+    chain.push_back(ScenePoint2D(0 - 0.5, 2 - 0.5));
+    chain.push_back(ScenePoint2D(2 - 0.5, 2 - 0.5));
+    chain.push_back(ScenePoint2D(2 - 0.5, 0 - 0.5));
+    layer->AddChain(chain, true, 255, 0, 0);
+
+    chain.clear();
+    chain.push_back(ScenePoint2D(-5, -5));
+    chain.push_back(ScenePoint2D(5, -5));
+    chain.push_back(ScenePoint2D(5, 5));
+    chain.push_back(ScenePoint2D(-5, 5));
+    layer->AddChain(chain, true, 0, 255, 0);
+
+    double dy = 1.01;
+    chain.clear();
+    chain.push_back(ScenePoint2D(-4, -4));
+    chain.push_back(ScenePoint2D(4, -4 + dy));
+    chain.push_back(ScenePoint2D(-4, -4 + 2.0 * dy));
+    chain.push_back(ScenePoint2D(4, 2));
+    layer->AddChain(chain, false, 0, 0, 255);
+
+    scene.SetLayer(50, layer.release());
+  }
+
+  // Some text
+  {
+    std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
+    layer->SetText("Hello");
+    scene.SetLayer(100, layer.release());
+  }
+}
+
+
+void TakeScreenshot(const std::string& target,
+                    const OrthancStone::Scene2D& scene,
+                    unsigned int canvasWidth,
+                    unsigned int canvasHeight)
+{
+  using namespace OrthancStone;
+  // Take a screenshot, then save it as PNG file
+  CairoCompositor compositor(scene, canvasWidth, canvasHeight);
+  compositor.SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, FONT_SIZE, Orthanc::Encoding_Latin1);
+  compositor.Refresh();
+
+  Orthanc::ImageAccessor canvas;
+  compositor.GetCanvas().GetReadOnlyAccessor(canvas);
+
+  Orthanc::Image png(Orthanc::PixelFormat_RGB24, canvas.GetWidth(), canvas.GetHeight(), false);
+  Orthanc::ImageProcessing::Convert(png, canvas);
+        
+  Orthanc::PngWriter writer;
+  writer.WriteToFile(target, png);
+}
+
+
+void HandleApplicationEvent(const SDL_Event& event,
+                            boost::shared_ptr<OrthancStone::ViewportController>& controller,
+                            boost::shared_ptr<OrthancStone::IFlexiblePointerTracker>& activeTracker)
+{
+  using namespace OrthancStone;
+
+  Scene2D& scene = controller->GetScene();
+  IViewport& viewport = controller->GetViewport();
+
+  if (event.type == SDL_MOUSEMOTION)
+  {
+    int scancodeCount = 0;
+    const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
+
+    if (activeTracker.get() == NULL &&
+        SDL_SCANCODE_LCTRL < scancodeCount &&
+        keyboardState[SDL_SCANCODE_LCTRL])
+    {
+      // The "left-ctrl" key is down, while no tracker is present
+
+      PointerEvent e;
+      e.AddPosition(viewport.GetPixelCenterCoordinates(event.button.x, event.button.y));
+
+      ScenePoint2D p = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform());
+
+      char buf[64];
+      sprintf(buf, "(%0.02f,%0.02f)", p.GetX(), p.GetY());
+
+      if (scene.HasLayer(LAYER_POSITION))
+      {
+        TextSceneLayer& layer =
+          dynamic_cast<TextSceneLayer&>(scene.GetLayer(LAYER_POSITION));
+        layer.SetText(buf);
+        layer.SetPosition(p.GetX(), p.GetY());
+      }
+      else
+      {
+        std::unique_ptr<TextSceneLayer> 
+          layer(new TextSceneLayer);
+        layer->SetColor(0, 255, 0);
+        layer->SetText(buf);
+        layer->SetBorder(20);
+        layer->SetAnchor(BitmapAnchor_BottomCenter);
+        layer->SetPosition(p.GetX(), p.GetY());
+        scene.SetLayer(LAYER_POSITION, layer.release());
+      }
+    }
+    else
+    {
+      scene.DeleteLayer(LAYER_POSITION);
+    }
+  }
+  else if (event.type == SDL_MOUSEBUTTONDOWN)
+  {
+    PointerEvent e;
+    e.AddPosition(viewport.GetPixelCenterCoordinates(event.button.x, event.button.y));
+
+    switch (event.button.button)
+    {
+      case SDL_BUTTON_MIDDLE:
+        activeTracker = boost::make_shared<PanSceneTracker>(controller, e);
+        break;
+
+      case SDL_BUTTON_RIGHT:
+        activeTracker = boost::make_shared<ZoomSceneTracker>
+          (controller, e, viewport.GetCanvasHeight());
+        break;
+
+      case SDL_BUTTON_LEFT:
+        activeTracker = boost::make_shared<RotateSceneTracker>(controller, e);
+        break;
+
+      default:
+        break;
+    }
+  }
+  else if (event.type == SDL_KEYDOWN &&
+           event.key.repeat == 0 /* Ignore key bounce */)
+  {
+    switch (event.key.keysym.sym)
+    {
+      case SDLK_s:
+        controller->FitContent(viewport.GetCanvasWidth(), 
+                               viewport.GetCanvasHeight());
+        break;
+              
+      case SDLK_c:
+        TakeScreenshot("screenshot.png", scene, 
+                       viewport.GetCanvasWidth(), 
+                       viewport.GetCanvasHeight());
+        break;
+              
+      default:
+        break;
+    }
+  }
+}
+
+#if OPENGL_ENABLED==1
+static void GLAPIENTRY
+OpenGLMessageCallback(GLenum source,
+                      GLenum type,
+                      GLuint id,
+                      GLenum severity,
+                      GLsizei length,
+                      const GLchar* message,
+                      const void* userParam )
+{
+  if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
+  {
+    fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
+            ( type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : "" ),
+            type, severity, message );
+  }
+}
+#endif
+
+void Run(OrthancStone::MessageBroker& broker,
+         OrthancStone::SdlViewport& viewport)
+{
+  using namespace OrthancStone;
+  
+  boost::shared_ptr<ViewportController> controller(
+    new ViewportController(boost::make_shared<UndoStack>(), broker, viewport));
+  
+#if OPENGL_ENABLED==1
+  glEnable(GL_DEBUG_OUTPUT);
+  glDebugMessageCallback(OpenGLMessageCallback, 0);
+#endif
+
+  boost::shared_ptr<IFlexiblePointerTracker> tracker;
+
+  bool firstShown = true;
+  bool stop = false;
+  while (!stop)
+  {
+    viewport.Refresh();
+
+    SDL_Event event;
+    while (!stop &&
+           SDL_PollEvent(&event))
+    {
+      if (event.type == SDL_QUIT)
+      {
+        stop = true;
+        break;
+      }
+      else if (event.type == SDL_MOUSEMOTION)
+      {
+        if (tracker)
+        {
+          PointerEvent e;
+          e.AddPosition(viewport.GetPixelCenterCoordinates(
+            event.button.x, event.button.y));
+          tracker->PointerMove(e);
+        }
+      }
+      else if (event.type == SDL_MOUSEBUTTONUP)
+      {
+        if (tracker)
+        {
+          PointerEvent e;
+          e.AddPosition(viewport.GetPixelCenterCoordinates(
+            event.button.x, event.button.y));
+          tracker->PointerUp(e);
+          if(!tracker->IsAlive())
+            tracker.reset();
+        }
+      }
+      else if (event.type == SDL_WINDOWEVENT)
+      {
+        switch (event.window.event)
+        {
+          case SDL_WINDOWEVENT_SIZE_CHANGED:
+            tracker.reset();
+            viewport.UpdateSize(event.window.data1, event.window.data2);
+            break;
+
+          case SDL_WINDOWEVENT_SHOWN:
+            if (firstShown)
+            {
+              // Once the window is first shown, fit the content to its size
+              controller->FitContent(viewport.GetCanvasWidth(), viewport.GetCanvasHeight());
+              firstShown = false;
+            }
+            
+            break;
+
+          default:
+            break;
+        }
+      }
+      else if (event.type == SDL_KEYDOWN &&
+               event.key.repeat == 0 /* Ignore key bounce */)
+      {
+        switch (event.key.keysym.sym)
+        {
+          case SDLK_f:
+            viewport.GetWindow().ToggleMaximize();
+            break;
+              
+          case SDLK_q:
+            stop = true;
+            break;
+
+          default:
+            break;
+        }
+      }
+      
+      HandleApplicationEvent(event, controller, tracker);
+    }
+
+    SDL_Delay(1);
+  }
+}
+
+
+
+
+/**
+ * IMPORTANT: The full arguments to "main()" are needed for SDL on
+ * Windows. Otherwise, one gets the linking error "undefined reference
+ * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
+ **/
+int main(int argc, char* argv[])
+{
+  OrthancStone::StoneInitialize();
+  Orthanc::Logging::EnableInfoLevel(true);
+
+  try
+  {
+#if OPENGL_ENABLED==1
+    OrthancStone::SdlOpenGLViewport viewport("Hello", 1024, 768);
+#else
+    OrthancStone::SdlCairoViewport viewport("Hello", 1024, 768);
+#endif
+    PrepareScene(viewport.GetScene());
+
+    viewport.GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, 
+                                     FONT_SIZE, Orthanc::Encoding_Latin1);
+    
+    OrthancStone::MessageBroker broker;
+    Run(broker, viewport);
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "EXCEPTION: " << e.What();
+  }
+
+  OrthancStone::StoneFinalize();
+
+  return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,129 @@
+cmake_minimum_required(VERSION 2.8.3)
+
+#####################################################################
+## Configuration of the Orthanc framework
+#####################################################################
+
+# This CMake file defines the "ORTHANC_STONE_VERSION" macro, so it
+# must be the first inclusion
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/Version.cmake)
+
+if (ORTHANC_STONE_VERSION STREQUAL "mainline")
+  set(ORTHANC_FRAMEWORK_VERSION "mainline")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
+else()
+  set(ORTHANC_FRAMEWORK_VERSION "1.5.7")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
+endif()
+
+set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
+set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
+set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
+
+
+#####################################################################
+## Configuration of the Stone framework
+#####################################################################
+
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneParameters.cmake)
+include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
+
+DownloadPackage(
+  "a24b8136b8f3bb93f166baf97d9328de"
+  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
+  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
+
+set(ORTHANC_STONE_APPLICATION_RESOURCES
+  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
+  )
+
+SET(ENABLE_SDL_CONSOLE OFF CACHE BOOL "Enable the use of the MIT-licensed SDL_Console")
+SET(ENABLE_GOOGLE_TEST OFF)
+SET(ENABLE_LOCALE ON)
+SET(ENABLE_SDL ON)
+SET(ENABLE_WEB_CLIENT ON)
+SET(ORTHANC_SANDBOXED OFF)
+LIST(APPEND ORTHANC_BOOST_COMPONENTS program_options)
+
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneConfiguration.cmake)
+
+add_definitions(
+  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
+  )
+
+
+#####################################################################
+## Build the samples
+#####################################################################
+
+add_library(OrthancStone STATIC
+  ${ORTHANC_STONE_SOURCES}
+  )
+
+#
+# BasicScene
+# 
+
+add_executable(BasicScene
+  BasicScene.cpp
+  )
+
+target_link_libraries(BasicScene OrthancStone)
+
+#
+# TrackerSample
+# 
+
+LIST(APPEND TRACKERSAMPLE_SOURCE "TrackerSample.cpp")
+LIST(APPEND TRACKERSAMPLE_SOURCE "TrackerSampleApp.cpp")
+LIST(APPEND TRACKERSAMPLE_SOURCE "TrackerSampleApp.h")
+
+if (MSVC AND MSVC_VERSION GREATER 1700)
+  LIST(APPEND TRACKERSAMPLE_SOURCE "cpp.hint")
+endif()
+
+add_executable(TrackerSample
+  ${TRACKERSAMPLE_SOURCE}
+  )
+
+target_link_libraries(TrackerSample OrthancStone)
+
+#
+# Loader
+# 
+
+add_executable(Loader
+  Loader.cpp
+  )
+
+target_link_libraries(Loader OrthancStone)
+
+#
+# FusionMprSdl
+# 
+
+add_executable(FusionMprSdl
+  FusionMprSdl.cpp
+  FusionMprSdl.h
+)
+
+target_link_libraries(FusionMprSdl OrthancStone)
+
+#
+# Multiplatform Basic Scene
+#
+
+LIST(APPEND MP_BASIC_SCENE_SOURCE "../MultiPlatform/BasicScene/BasicScene.cpp")
+LIST(APPEND MP_BASIC_SCENE_SOURCE "../MultiPlatform/BasicScene/BasicScene.h")
+LIST(APPEND MP_BASIC_SCENE_SOURCE "../MultiPlatform/BasicScene/mainSdl.cpp")
+
+if (MSVC AND MSVC_VERSION GREATER 1700)
+  LIST(APPEND MP_BASIC_SCENE_SOURCE "cpp.hint")
+endif()
+
+add_executable(MpBasicScene
+  ${MP_BASIC_SCENE_SOURCE}
+  )
+
+target_include_directories(MpBasicScene PUBLIC ${ORTHANC_STONE_ROOT})
+target_link_libraries(MpBasicScene OrthancStone)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/FusionMprSdl.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,805 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "FusionMprSdl.h"
+
+#include "../../Framework/OpenGL/SdlOpenGLContext.h"
+
+#include "../../Framework/StoneInitialization.h"
+
+#include "../../Framework/Scene2D/CairoCompositor.h"
+#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
+#include "../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../Framework/Scene2D/PanSceneTracker.h"
+#include "../../Framework/Scene2D/ZoomSceneTracker.h"
+#include "../../Framework/Scene2D/RotateSceneTracker.h"
+
+#include "../../Framework/Scene2DViewport/UndoStack.h"
+#include "../../Framework/Scene2DViewport/CreateLineMeasureTracker.h"
+#include "../../Framework/Scene2DViewport/CreateAngleMeasureTracker.h"
+#include "../../Framework/Scene2DViewport/IFlexiblePointerTracker.h"
+#include "../../Framework/Scene2DViewport/MeasureTool.h"
+#include "../../Framework/Scene2DViewport/PredeclaredTypes.h"
+
+#include "../../Framework/Volumes/VolumeSceneLayerSource.h"
+
+#include <Core/Images/Image.h>
+#include <Core/Images/ImageProcessing.h>
+#include <Core/Images/PngWriter.h>
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+#include <boost/make_shared.hpp>
+
+#include <stdio.h>
+#include "../../Framework/Oracle/GetOrthancWebViewerJpegCommand.h"
+#include "../../Framework/Oracle/ThreadedOracle.h"
+#include "../../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
+#include "../../Framework/Loaders/OrthancMultiframeVolumeLoader.h"
+#include "../../Framework/Loaders/DicomStructureSetLoader.h"
+#include "../../Framework/Scene2D/GrayscaleStyleConfigurator.h"
+#include "../../Framework/Scene2D/LookupTableStyleConfigurator.h"
+#include "../../Framework/Volumes/DicomVolumeImageMPRSlicer.h"
+#include "Core/SystemToolbox.h"
+
+namespace OrthancStone
+{
+  const char* FusionMprMeasureToolToString(size_t i)
+  {
+    static const char* descs[] = {
+      "FusionMprGuiTool_Rotate",
+      "FusionMprGuiTool_Pan",
+      "FusionMprGuiTool_Zoom",
+      "FusionMprGuiTool_LineMeasure",
+      "FusionMprGuiTool_CircleMeasure",
+      "FusionMprGuiTool_AngleMeasure",
+      "FusionMprGuiTool_EllipseMeasure",
+      "FusionMprGuiTool_LAST"
+    };
+    if (i >= FusionMprGuiTool_LAST)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, "Wrong tool index");
+    }
+    return descs[i];
+  }
+
+  Scene2D& FusionMprSdlApp::GetScene()
+  {
+    return controller_->GetScene();
+  }
+
+  const Scene2D& FusionMprSdlApp::GetScene() const
+  {
+    return controller_->GetScene();
+  }
+
+  void FusionMprSdlApp::SelectNextTool()
+  {
+    currentTool_ = static_cast<FusionMprGuiTool>(currentTool_ + 1);
+    if (currentTool_ == FusionMprGuiTool_LAST)
+      currentTool_ = static_cast<FusionMprGuiTool>(0);;
+    printf("Current tool is now: %s\n", FusionMprMeasureToolToString(currentTool_));
+  }
+
+  void FusionMprSdlApp::DisplayInfoText()
+  {
+    // do not try to use stuff too early!
+    ICompositor* pCompositor = &(viewport_.GetCompositor());
+    if (pCompositor == NULL)
+      return;
+
+    std::stringstream msg;
+	
+	for (std::map<std::string, std::string>::const_iterator kv = infoTextMap_.begin();
+		kv != infoTextMap_.end(); ++kv)
+    {
+      msg << kv->first << " : " << kv->second << std::endl;
+    }
+	std::string msgS = msg.str();
+
+    TextSceneLayer* layerP = NULL;
+    if (GetScene().HasLayer(FIXED_INFOTEXT_LAYER_ZINDEX))
+    {
+      TextSceneLayer& layer = dynamic_cast<TextSceneLayer&>(
+        GetScene().GetLayer(FIXED_INFOTEXT_LAYER_ZINDEX));
+      layerP = &layer;
+    }
+    else
+    {
+      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
+      layerP = layer.get();
+      layer->SetColor(0, 255, 0);
+      layer->SetFontIndex(1);
+      layer->SetBorder(20);
+      layer->SetAnchor(BitmapAnchor_TopLeft);
+      //layer->SetPosition(0,0);
+      GetScene().SetLayer(FIXED_INFOTEXT_LAYER_ZINDEX, layer.release());
+    }
+    // position the fixed info text in the upper right corner
+    layerP->SetText(msgS.c_str());
+    double cX = viewport_.GetCompositor().GetCanvasWidth() * (-0.5);
+    double cY = viewport_.GetCompositor().GetCanvasHeight() * (-0.5);
+    GetScene().GetCanvasToSceneTransform().Apply(cX,cY);
+    layerP->SetPosition(cX, cY);
+  }
+
+  void FusionMprSdlApp::DisplayFloatingCtrlInfoText(const PointerEvent& e)
+  {
+    ScenePoint2D p = e.GetMainPosition().Apply(GetScene().GetCanvasToSceneTransform());
+
+    char buf[128];
+    sprintf(buf, "S:(%0.02f,%0.02f) C:(%0.02f,%0.02f)", 
+      p.GetX(), p.GetY(), 
+      e.GetMainPosition().GetX(), e.GetMainPosition().GetY());
+
+    if (GetScene().HasLayer(FLOATING_INFOTEXT_LAYER_ZINDEX))
+    {
+      TextSceneLayer& layer =
+        dynamic_cast<TextSceneLayer&>(GetScene().GetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX));
+      layer.SetText(buf);
+      layer.SetPosition(p.GetX(), p.GetY());
+    }
+    else
+    {
+      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
+      layer->SetColor(0, 255, 0);
+      layer->SetText(buf);
+      layer->SetBorder(20);
+      layer->SetAnchor(BitmapAnchor_BottomCenter);
+      layer->SetPosition(p.GetX(), p.GetY());
+      GetScene().SetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX, layer.release());
+    }
+  }
+
+  void FusionMprSdlApp::HideInfoText()
+  {
+    GetScene().DeleteLayer(FLOATING_INFOTEXT_LAYER_ZINDEX);
+  }
+
+  void FusionMprSdlApp::HandleApplicationEvent(
+    const SDL_Event & event)
+  {
+    DisplayInfoText();
+
+    if (event.type == SDL_MOUSEMOTION)
+    {
+      int scancodeCount = 0;
+      const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
+
+      if (activeTracker_.get() == NULL &&
+        SDL_SCANCODE_LALT < scancodeCount &&
+        keyboardState[SDL_SCANCODE_LALT])
+      {
+        // The "left-ctrl" key is down, while no tracker is present
+        // Let's display the info text
+        PointerEvent e;
+        e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
+          event.button.x, event.button.y));
+
+        DisplayFloatingCtrlInfoText(e);
+      }
+      else
+      {
+        HideInfoText();
+        //LOG(TRACE) << "(event.type == SDL_MOUSEMOTION)";
+        if (activeTracker_.get() != NULL)
+        {
+          //LOG(TRACE) << "(activeTracker_.get() != NULL)";
+          PointerEvent e;
+          e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
+            event.button.x, event.button.y));
+          
+          //LOG(TRACE) << "event.button.x = " << event.button.x << "     " <<
+          //  "event.button.y = " << event.button.y;
+          LOG(TRACE) << "activeTracker_->PointerMove(e); " <<
+            e.GetMainPosition().GetX() << " " << e.GetMainPosition().GetY();
+          
+          activeTracker_->PointerMove(e);
+          if (!activeTracker_->IsAlive())
+            activeTracker_.reset();
+        }
+      }
+    }
+    else if (event.type == SDL_MOUSEBUTTONUP)
+    {
+      if (activeTracker_)
+      {
+        PointerEvent e;
+        e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(event.button.x, event.button.y));
+        activeTracker_->PointerUp(e);
+        if (!activeTracker_->IsAlive())
+          activeTracker_.reset();
+      }
+    }
+    else if (event.type == SDL_MOUSEBUTTONDOWN)
+    {
+      PointerEvent e;
+      e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
+        event.button.x, event.button.y));
+      if (activeTracker_)
+      {
+        activeTracker_->PointerDown(e);
+        if (!activeTracker_->IsAlive())
+          activeTracker_.reset();
+      }
+      else
+      {
+        // we ATTEMPT to create a tracker if need be
+        activeTracker_ = CreateSuitableTracker(event, e);
+      }
+    }
+    else if (event.type == SDL_KEYDOWN &&
+      event.key.repeat == 0 /* Ignore key bounce */)
+    {
+      switch (event.key.keysym.sym)
+      {
+      case SDLK_ESCAPE:
+        if (activeTracker_)
+        {
+          activeTracker_->Cancel();
+          if (!activeTracker_->IsAlive())
+            activeTracker_.reset();
+        }
+        break;
+
+      case SDLK_t:
+        if (!activeTracker_)
+          SelectNextTool();
+        else
+        {
+          LOG(WARNING) << "You cannot change the active tool when an interaction"
+            " is taking place";
+        }
+        break;
+      case SDLK_s:
+        controller_->FitContent(viewport_.GetCompositor().GetCanvasWidth(),
+          viewport_.GetCompositor().GetCanvasHeight());
+        break;
+
+      case SDLK_z:
+        LOG(TRACE) << "SDLK_z has been pressed. event.key.keysym.mod == " << event.key.keysym.mod;
+        if (event.key.keysym.mod & KMOD_CTRL)
+        {
+          if (controller_->CanUndo())
+          {
+            LOG(TRACE) << "Undoing...";
+            controller_->Undo();
+          }
+          else
+          {
+            LOG(WARNING) << "Nothing to undo!!!";
+          }
+        }
+        break;
+
+      case SDLK_y:
+        LOG(TRACE) << "SDLK_y has been pressed. event.key.keysym.mod == " << event.key.keysym.mod;
+        if (event.key.keysym.mod & KMOD_CTRL)
+        {
+          if (controller_->CanRedo())
+          {
+            LOG(TRACE) << "Redoing...";
+            controller_->Redo();
+          }
+          else
+          {
+            LOG(WARNING) << "Nothing to redo!!!";
+          }
+        }
+        break;
+
+      case SDLK_c:
+        TakeScreenshot(
+          "screenshot.png",
+          viewport_.GetCompositor().GetCanvasWidth(),
+          viewport_.GetCompositor().GetCanvasHeight());
+        break;
+
+      default:
+        break;
+      }
+    }
+  }
+
+
+  void FusionMprSdlApp::OnSceneTransformChanged(
+    const ViewportController::SceneTransformChanged& message)
+  {
+    DisplayInfoText();
+  }
+
+  boost::shared_ptr<IFlexiblePointerTracker> FusionMprSdlApp::CreateSuitableTracker(
+    const SDL_Event & event,
+    const PointerEvent & e)
+  {
+    using namespace Orthanc;
+
+    switch (event.button.button)
+    {
+    case SDL_BUTTON_MIDDLE:
+      return boost::shared_ptr<IFlexiblePointerTracker>(new PanSceneTracker
+        (controller_, e));
+
+    case SDL_BUTTON_RIGHT:
+      return boost::shared_ptr<IFlexiblePointerTracker>(new ZoomSceneTracker
+        (controller_, e, viewport_.GetCompositor().GetCanvasHeight()));
+
+    case SDL_BUTTON_LEFT:
+    {
+      //LOG(TRACE) << "CreateSuitableTracker: case SDL_BUTTON_LEFT:";
+      // TODO: we need to iterate on the set of measuring tool and perform
+      // a hit test to check if a tracker needs to be created for edition.
+      // Otherwise, depending upon the active tool, we might want to create
+      // a "measuring tool creation" tracker
+
+      // TODO: if there are conflicts, we should prefer a tracker that 
+      // pertains to the type of measuring tool currently selected (TBD?)
+      boost::shared_ptr<IFlexiblePointerTracker> hitTestTracker = TrackerHitTest(e);
+
+      if (hitTestTracker != NULL)
+      {
+        //LOG(TRACE) << "hitTestTracker != NULL";
+        return hitTestTracker;
+      }
+      else
+      {
+        switch (currentTool_)
+        {
+        case FusionMprGuiTool_Rotate:
+          //LOG(TRACE) << "Creating RotateSceneTracker";
+          return boost::shared_ptr<IFlexiblePointerTracker>(new RotateSceneTracker(
+            controller_, e));
+        case FusionMprGuiTool_Pan:
+          return boost::shared_ptr<IFlexiblePointerTracker>(new PanSceneTracker(
+            controller_, e));
+        case FusionMprGuiTool_Zoom:
+          return boost::shared_ptr<IFlexiblePointerTracker>(new ZoomSceneTracker(
+            controller_, e, viewport_.GetCompositor().GetCanvasHeight()));
+        //case GuiTool_AngleMeasure:
+        //  return new AngleMeasureTracker(GetScene(), e);
+        //case GuiTool_CircleMeasure:
+        //  return new CircleMeasureTracker(GetScene(), e);
+        //case GuiTool_EllipseMeasure:
+        //  return new EllipseMeasureTracker(GetScene(), e);
+        case FusionMprGuiTool_LineMeasure:
+          return boost::shared_ptr<IFlexiblePointerTracker>(new CreateLineMeasureTracker(
+            IObserver::GetBroker(), controller_, e));
+        case FusionMprGuiTool_AngleMeasure:
+          return boost::shared_ptr<IFlexiblePointerTracker>(new CreateAngleMeasureTracker(
+            IObserver::GetBroker(), controller_, e));
+        case FusionMprGuiTool_CircleMeasure:
+          LOG(ERROR) << "Not implemented yet!";
+          return boost::shared_ptr<IFlexiblePointerTracker>();
+        case FusionMprGuiTool_EllipseMeasure:
+          LOG(ERROR) << "Not implemented yet!";
+          return boost::shared_ptr<IFlexiblePointerTracker>();
+        default:
+          throw OrthancException(ErrorCode_InternalError, "Wrong tool!");
+        }
+      }
+    }
+    default:
+      return boost::shared_ptr<IFlexiblePointerTracker>();
+    }
+  }
+
+
+  FusionMprSdlApp::FusionMprSdlApp(MessageBroker& broker)
+    : IObserver(broker)
+    , broker_(broker)
+    , oracleObservable_(broker)
+    , oracle_(*this)
+    , currentTool_(FusionMprGuiTool_Rotate)
+    , undoStack_(new UndoStack)
+    , viewport_("Hello", 1024, 1024, false) // False means we do NOT let Windows treat this as a legacy application that needs to be scaled
+  {
+    //oracleObservable.RegisterObserverCallback
+    //(new Callable
+    //  <FusionMprSdlApp, SleepOracleCommand::TimeoutMessage>(*this, &FusionMprSdlApp::Handle));
+
+    //oracleObservable.RegisterObserverCallback
+    //(new Callable
+    //  <Toto, GetOrthancImageCommand::SuccessMessage>(*this, &FusionMprSdlApp::Handle));
+
+    //oracleObservable.RegisterObserverCallback
+    //(new Callable
+    //  <FusionMprSdlApp, GetOrthancWebViewerJpegCommand::SuccessMessage>(*this, &ToFusionMprSdlAppto::Handle));
+
+    oracleObservable_.RegisterObserverCallback
+    (new Callable
+      <FusionMprSdlApp, OracleCommandExceptionMessage>(*this, &FusionMprSdlApp::Handle));
+    
+    controller_ = boost::shared_ptr<ViewportController>(
+      new ViewportController(undoStack_, broker_, viewport_));
+
+    controller_->RegisterObserverCallback(
+      new Callable<FusionMprSdlApp, ViewportController::SceneTransformChanged>
+      (*this, &FusionMprSdlApp::OnSceneTransformChanged));
+
+    TEXTURE_2x2_1_ZINDEX = 1;
+    TEXTURE_1x1_ZINDEX = 2;
+    TEXTURE_2x2_2_ZINDEX = 3;
+    LINESET_1_ZINDEX = 4;
+    LINESET_2_ZINDEX = 5;
+    FLOATING_INFOTEXT_LAYER_ZINDEX = 6;
+    FIXED_INFOTEXT_LAYER_ZINDEX = 7;
+  }
+
+  void FusionMprSdlApp::PrepareScene()
+  {
+    // Texture of 2x2 size
+    {
+      Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false);
+
+      uint8_t* p = reinterpret_cast<uint8_t*>(i.GetRow(0));
+      p[0] = 255;
+      p[1] = 0;
+      p[2] = 0;
+
+      p[3] = 0;
+      p[4] = 255;
+      p[5] = 0;
+
+      p = reinterpret_cast<uint8_t*>(i.GetRow(1));
+      p[0] = 0;
+      p[1] = 0;
+      p[2] = 255;
+
+      p[3] = 255;
+      p[4] = 0;
+      p[5] = 0;
+
+      GetScene().SetLayer(TEXTURE_2x2_1_ZINDEX, new ColorTextureSceneLayer(i));
+    }
+  }
+
+  void FusionMprSdlApp::DisableTracker()
+  {
+    if (activeTracker_)
+    {
+      activeTracker_->Cancel();
+      activeTracker_.reset();
+    }
+  }
+
+  void FusionMprSdlApp::TakeScreenshot(const std::string& target,
+    unsigned int canvasWidth,
+    unsigned int canvasHeight)
+  {
+    CairoCompositor compositor(GetScene(), canvasWidth, canvasHeight);
+    compositor.SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, FONT_SIZE_0, Orthanc::Encoding_Latin1);
+    compositor.Refresh();
+
+    Orthanc::ImageAccessor canvas;
+    compositor.GetCanvas().GetReadOnlyAccessor(canvas);
+
+    Orthanc::Image png(Orthanc::PixelFormat_RGB24, canvas.GetWidth(), canvas.GetHeight(), false);
+    Orthanc::ImageProcessing::Convert(png, canvas);
+
+    Orthanc::PngWriter writer;
+    writer.WriteToFile(target, png);
+  }
+
+
+  boost::shared_ptr<IFlexiblePointerTracker> FusionMprSdlApp::TrackerHitTest(const PointerEvent & e)
+  {
+    // std::vector<boost::shared_ptr<MeasureTool>> measureTools_;
+    return boost::shared_ptr<IFlexiblePointerTracker>();
+  }
+
+  static void GLAPIENTRY
+    OpenGLMessageCallback(GLenum source,
+      GLenum type,
+      GLuint id,
+      GLenum severity,
+      GLsizei length,
+      const GLchar* message,
+      const void* userParam)
+  {
+    if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
+    {
+      fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
+        (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
+        type, severity, message);
+    }
+  }
+
+  static bool g_stopApplication = false;
+  
+
+  void FusionMprSdlApp::Handle(const DicomVolumeImage::GeometryReadyMessage& message)
+  {
+    printf("Geometry ready\n");
+
+    //plane_ = message.GetOrigin().GetGeometry().GetSagittalGeometry();
+    //plane_ = message.GetOrigin().GetGeometry().GetAxialGeometry();
+    plane_ = message.GetOrigin().GetGeometry().GetCoronalGeometry();
+    plane_.SetOrigin(message.GetOrigin().GetGeometry().GetCoordinates(0.5f, 0.5f, 0.5f));
+
+    //Refresh();
+  }
+
+
+  void FusionMprSdlApp::Handle(const OracleCommandExceptionMessage& message)
+  {
+    printf("EXCEPTION: [%s] on command type %d\n", message.GetException().What(), message.GetCommand().GetType());
+
+    switch (message.GetCommand().GetType())
+    {
+    case IOracleCommand::Type_GetOrthancWebViewerJpeg:
+      printf("URI: [%s]\n", dynamic_cast<const GetOrthancWebViewerJpegCommand&>
+        (message.GetCommand()).GetUri().c_str());
+      break;
+
+    default:
+      break;
+    }
+  }
+
+  void FusionMprSdlApp::SetVolume1(int depth,
+    const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
+    OrthancStone::ILayerStyleConfigurator* style)
+  {
+    source1_.reset(new OrthancStone::VolumeSceneLayerSource(controller_->GetScene(), depth, volume));
+
+    if (style != NULL)
+    {
+      source1_->SetConfigurator(style);
+    }
+  }
+
+  void FusionMprSdlApp::SetVolume2(int depth,
+    const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
+    OrthancStone::ILayerStyleConfigurator* style)
+  {
+    source2_.reset(new OrthancStone::VolumeSceneLayerSource(controller_->GetScene(), depth, volume));
+
+    if (style != NULL)
+    {
+      source2_->SetConfigurator(style);
+    }
+  }
+
+  void FusionMprSdlApp::SetStructureSet(int depth,
+    const boost::shared_ptr<OrthancStone::DicomStructureSetLoader>& volume)
+  {
+    source3_.reset(new OrthancStone::VolumeSceneLayerSource(controller_->GetScene(), depth, volume));
+  }
+  
+  void FusionMprSdlApp::Run()
+  {
+    // False means we do NOT let Windows treat this as a legacy application
+    // that needs to be scaled
+    controller_->FitContent(viewport_.GetCanvasWidth(), viewport_.GetCanvasHeight());
+
+    glEnable(GL_DEBUG_OUTPUT);
+    glDebugMessageCallback(OpenGLMessageCallback, 0);
+
+    viewport_.GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
+      FONT_SIZE_0, Orthanc::Encoding_Latin1);
+    viewport_.GetCompositor().SetFont(1, Orthanc::EmbeddedResources::UBUNTU_FONT,
+      FONT_SIZE_1, Orthanc::Encoding_Latin1);
+
+
+    //////// from loader
+    {
+      Orthanc::WebServiceParameters p;
+      //p.SetUrl("http://localhost:8043/");
+      p.SetCredentials("orthanc", "orthanc");
+      oracle_.SetOrthancParameters(p);
+    }
+
+    //////// from Run
+
+    boost::shared_ptr<DicomVolumeImage>  ct(new DicomVolumeImage);
+    boost::shared_ptr<DicomVolumeImage>  dose(new DicomVolumeImage);
+
+
+    boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> ctLoader;
+    boost::shared_ptr<OrthancMultiframeVolumeLoader> doseLoader;
+    boost::shared_ptr<DicomStructureSetLoader>  rtstructLoader;
+
+    {
+      ctLoader.reset(new OrthancSeriesVolumeProgressiveLoader(ct, oracle_, oracleObservable_));
+      doseLoader.reset(new OrthancMultiframeVolumeLoader(dose, oracle_, oracleObservable_));
+      rtstructLoader.reset(new DicomStructureSetLoader(oracle_, oracleObservable_));
+    }
+
+    //toto->SetReferenceLoader(*ctLoader);
+    //doseLoader->RegisterObserverCallback
+    //(new Callable
+    //  <FusionMprSdlApp, DicomVolumeImage::GeometryReadyMessage>(*this, &FusionMprSdlApp::Handle));
+    ctLoader->RegisterObserverCallback
+    (new Callable
+      <FusionMprSdlApp, DicomVolumeImage::GeometryReadyMessage>(*this, &FusionMprSdlApp::Handle));
+
+    this->SetVolume1(0, ctLoader, new GrayscaleStyleConfigurator);
+
+    {
+      std::unique_ptr<LookupTableStyleConfigurator> config(new LookupTableStyleConfigurator);
+      config->SetLookupTable(Orthanc::EmbeddedResources::COLORMAP_HOT);
+
+      boost::shared_ptr<DicomVolumeImageMPRSlicer> tmp(new DicomVolumeImageMPRSlicer(dose));
+      this->SetVolume2(1, tmp, config.release());
+    }
+
+    this->SetStructureSet(2, rtstructLoader);
+
+#if 1
+    /*
+    BGO data
+    http://localhost:8042/twiga-orthanc-viewer-demo/twiga-orthanc-viewer-demo.html?ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa
+    &
+    dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb
+    &
+    struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
+    */
+    ctLoader->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");  // CT
+    doseLoader->LoadInstance("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb");  // RT-DOSE
+    rtstructLoader->LoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");  // RT-STRUCT
+#else
+    //ctLoader->LoadSeries("cb3ea4d1-d08f3856-ad7b6314-74d88d77-60b05618");  // CT
+    //doseLoader->LoadInstance("41029085-71718346-811efac4-420e2c15-d39f99b6");  // RT-DOSE
+    //rtstructLoader->LoadInstance("83d9c0c3-913a7fee-610097d7-cbf0522d-fd75bee6");  // RT-STRUCT
+
+    // 2017-05-16
+    ctLoader->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");  // CT
+    doseLoader->LoadInstance("eac822ef-a395f94e-e8121fe0-8411fef8-1f7bffad");  // RT-DOSE
+    rtstructLoader->LoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");  // RT-STRUCT
+#endif
+
+    oracle_.Start();
+
+//// END from loader
+
+    while (!g_stopApplication)
+    {
+      viewport_.GetCompositor().Refresh();
+
+//////// from loader
+      if (source1_.get() != NULL)
+      {
+        source1_->Update(plane_);
+      }
+
+      if (source2_.get() != NULL)
+      {
+        source2_->Update(plane_);
+      }
+
+      if (source3_.get() != NULL)
+      {
+        source3_->Update(plane_);
+      }
+//// END from loader
+
+      SDL_Event event;
+      while (!g_stopApplication && SDL_PollEvent(&event))
+      {
+        if (event.type == SDL_QUIT)
+        {
+          g_stopApplication = true;
+          break;
+        }
+        else if (event.type == SDL_WINDOWEVENT &&
+          event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
+        {
+          DisableTracker(); // was: tracker.reset(NULL);
+        }
+        else if (event.type == SDL_KEYDOWN &&
+          event.key.repeat == 0 /* Ignore key bounce */)
+        {
+          switch (event.key.keysym.sym)
+          {
+          case SDLK_f:
+            viewport_.GetWindow().ToggleMaximize();
+            break;
+
+          case SDLK_s:
+            controller_->FitContent(viewport_.GetCanvasWidth(), viewport_.GetCanvasHeight());
+            break;
+
+          case SDLK_q:
+            g_stopApplication = true;
+            break;
+          default:
+            break;
+          }
+        }
+        HandleApplicationEvent(event);
+      }
+      SDL_Delay(1);
+    }
+
+    //// from loader
+
+    //Orthanc::SystemToolbox::ServerBarrier();
+
+    /**
+     * WARNING => The oracle must be stopped BEFORE the objects using
+     * it are destroyed!!! This forces to wait for the completion of
+     * the running callback methods. Otherwise, the callbacks methods
+     * might still be running while their parent object is destroyed,
+     * resulting in crashes. This is very visible if adding a sleep(),
+     * as in (*).
+     **/
+
+    oracle_.Stop();
+    //// END from loader
+  }
+
+  void FusionMprSdlApp::SetInfoDisplayMessage(
+    std::string key, std::string value)
+  {
+    if (value == "")
+      infoTextMap_.erase(key);
+    else
+      infoTextMap_[key] = value;
+    DisplayInfoText();
+  }
+
+}
+
+
+boost::weak_ptr<OrthancStone::FusionMprSdlApp> g_app;
+
+void FusionMprSdl_SetInfoDisplayMessage(std::string key, std::string value)
+{
+  boost::shared_ptr<OrthancStone::FusionMprSdlApp> app = g_app.lock();
+  if (app)
+  {
+    app->SetInfoDisplayMessage(key, value);
+  }
+}
+
+/**
+ * IMPORTANT: The full arguments to "main()" are needed for SDL on
+ * Windows. Otherwise, one gets the linking error "undefined reference
+ * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
+ **/
+int main(int argc, char* argv[])
+{
+  using namespace OrthancStone;
+
+  StoneInitialize();
+  Orthanc::Logging::EnableInfoLevel(true);
+//  Orthanc::Logging::EnableTraceLevel(true);
+
+  try
+  {
+    OrthancStone::MessageBroker broker;
+    boost::shared_ptr<FusionMprSdlApp> app(new FusionMprSdlApp(broker));
+    g_app = app;
+    app->PrepareScene();
+    app->Run();
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "EXCEPTION: " << e.What();
+  }
+
+  StoneFinalize();
+
+  return 0;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/FusionMprSdl.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,209 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Framework/Viewport/SdlViewport.h"
+
+#include "../../Framework/Messages/IObserver.h"
+#include "../../Framework/Messages/IMessageEmitter.h"
+#include "../../Framework/Oracle/OracleCommandExceptionMessage.h"
+#include "../../Framework/Scene2DViewport/ViewportController.h"
+#include "../../Framework/Volumes/DicomVolumeImage.h"
+#include "../../Framework/Oracle/ThreadedOracle.h"
+
+#include <boost/enable_shared_from_this.hpp>
+#include <boost/thread.hpp>
+#include <boost/noncopyable.hpp>
+
+#include <SDL.h>
+
+namespace OrthancStone
+{
+  class OpenGLCompositor;
+  class IVolumeSlicer;
+  class ILayerStyleConfigurator;
+  class DicomStructureSetLoader;
+  class IOracle;
+  class ThreadedOracle;
+  class VolumeSceneLayerSource;
+  class NativeFusionMprApplicationContext;
+  class SdlOpenGLViewport;
+   
+  enum FusionMprGuiTool
+  {
+    FusionMprGuiTool_Rotate = 0,
+    FusionMprGuiTool_Pan,
+    FusionMprGuiTool_Zoom,
+    FusionMprGuiTool_LineMeasure,
+    FusionMprGuiTool_CircleMeasure,
+    FusionMprGuiTool_AngleMeasure,
+    FusionMprGuiTool_EllipseMeasure,
+    FusionMprGuiTool_LAST
+  };
+
+  const char* MeasureToolToString(size_t i);
+
+  static const unsigned int FONT_SIZE_0 = 32;
+  static const unsigned int FONT_SIZE_1 = 24;
+
+  class Scene2D;
+  class UndoStack;
+
+  /**
+  This application subclasses IMessageEmitter to use a mutex before forwarding Oracle messages (that
+  can be sent from multiple threads)
+  */
+  class FusionMprSdlApp : public IObserver
+    , public boost::enable_shared_from_this<FusionMprSdlApp>
+    , public IMessageEmitter
+  {
+  public:
+    // 12 because.
+    FusionMprSdlApp(MessageBroker& broker);
+
+    void PrepareScene();
+    void Run();
+    void SetInfoDisplayMessage(std::string key, std::string value);
+    void DisableTracker();
+
+    Scene2D&       GetScene();
+    const Scene2D& GetScene() const;
+
+    void HandleApplicationEvent(const SDL_Event& event);
+
+    /**
+    This method is called when the scene transform changes. It allows to
+    recompute the visual elements whose content depend upon the scene transform
+    */
+    void OnSceneTransformChanged(
+      const ViewportController::SceneTransformChanged& message);
+
+
+    virtual void EmitMessage(const IObserver& observer,
+      const IMessage& message) ORTHANC_OVERRIDE
+    {
+      try
+      {
+        boost::unique_lock<boost::shared_mutex>  lock(mutex_);
+        oracleObservable_.EmitMessage(observer, message);
+      }
+      catch (Orthanc::OrthancException& e)
+      {
+        LOG(ERROR) << "Exception while emitting a message: " << e.What();
+        throw;
+      }
+    }
+    
+  private:
+#if 1
+    // if threaded (not wasm)
+    MessageBroker& broker_;
+    IObservable oracleObservable_;
+    ThreadedOracle oracle_;
+    boost::shared_mutex mutex_; // to serialize messages from the ThreadedOracle
+#endif
+
+    void SelectNextTool();
+
+    /**
+    This returns a random point in the canvas part of the scene, but in
+    scene coordinates
+    */
+    ScenePoint2D GetRandomPointInScene() const;
+
+    boost::shared_ptr<IFlexiblePointerTracker> TrackerHitTest(const PointerEvent& e);
+
+    boost::shared_ptr<IFlexiblePointerTracker> CreateSuitableTracker(
+      const SDL_Event& event,
+      const PointerEvent& e);
+
+    void TakeScreenshot(
+      const std::string& target,
+      unsigned int canvasWidth,
+      unsigned int canvasHeight);
+
+    /**
+      This adds the command at the top of the undo stack
+    */
+    void Commit(boost::shared_ptr<TrackerCommand> cmd);
+    void Undo();
+    void Redo();
+
+
+    // TODO private
+    void Handle(const DicomVolumeImage::GeometryReadyMessage& message);
+    void Handle(const OracleCommandExceptionMessage& message);
+
+    void SetVolume1(
+      int depth,
+      const boost::shared_ptr<IVolumeSlicer>& volume,
+      ILayerStyleConfigurator* style);
+    
+    void SetVolume2(
+      int depth,
+      const boost::shared_ptr<IVolumeSlicer>& volume,
+      ILayerStyleConfigurator* style);
+
+    void SetStructureSet(
+      int depth, 
+      const boost::shared_ptr<DicomStructureSetLoader>& volume);
+
+
+
+  private:
+    void DisplayFloatingCtrlInfoText(const PointerEvent& e);
+    void DisplayInfoText();
+    void HideInfoText();
+
+  private:
+    CoordinateSystem3D  plane_;
+
+    boost::shared_ptr<VolumeSceneLayerSource>  source1_, source2_, source3_;
+
+    /**
+    WARNING: the measuring tools do store a reference to the scene, and it
+    paramount that the scene gets destroyed AFTER the measurement tools.
+    */
+    boost::shared_ptr<ViewportController> controller_;
+
+    std::map<std::string, std::string> infoTextMap_;
+    boost::shared_ptr<IFlexiblePointerTracker> activeTracker_;
+
+    //static const int LAYER_POSITION = 150;
+
+    int TEXTURE_2x2_1_ZINDEX;
+    int TEXTURE_1x1_ZINDEX;
+    int TEXTURE_2x2_2_ZINDEX;
+    int LINESET_1_ZINDEX;
+    int LINESET_2_ZINDEX;
+    int FLOATING_INFOTEXT_LAYER_ZINDEX;
+    int FIXED_INFOTEXT_LAYER_ZINDEX;
+
+    FusionMprGuiTool currentTool_;
+    boost::shared_ptr<UndoStack> undoStack_;
+    SdlOpenGLViewport viewport_;
+  };
+
+}
+
+
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/Loader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,518 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "../../Framework/Loaders/DicomStructureSetLoader.h"
+#include "../../Framework/Loaders/OrthancMultiframeVolumeLoader.h"
+#include "../../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
+#include "../../Framework/Oracle/SleepOracleCommand.h"
+#include "../../Framework/Oracle/ThreadedOracle.h"
+#include "../../Framework/Scene2D/CairoCompositor.h"
+#include "../../Framework/Scene2D/GrayscaleStyleConfigurator.h"
+#include "../../Framework/Scene2D/LookupTableStyleConfigurator.h"
+#include "../../Framework/StoneInitialization.h"
+#include "../../Framework/Volumes/VolumeSceneLayerSource.h"
+#include "../../Framework/Volumes/DicomVolumeImageMPRSlicer.h"
+#include "../../Framework/Volumes/DicomVolumeImageReslicer.h"
+
+// From Orthanc framework
+#include <Core/Images/ImageProcessing.h>
+#include <Core/Images/PngWriter.h>
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+#include <Core/SystemToolbox.h>
+
+
+namespace OrthancStone
+{
+  class NativeApplicationContext : public IMessageEmitter
+  {
+  private:
+    boost::shared_mutex  mutex_;
+    MessageBroker        broker_;
+    IObservable          oracleObservable_;
+
+  public:
+    NativeApplicationContext() :
+      oracleObservable_(broker_)
+    {
+    }
+
+
+    virtual void EmitMessage(const IObserver& observer,
+                             const IMessage& message) ORTHANC_OVERRIDE
+    {
+      try
+      {
+        boost::unique_lock<boost::shared_mutex>  lock(mutex_);
+        oracleObservable_.EmitMessage(observer, message);
+      }
+      catch (Orthanc::OrthancException& e)
+      {
+        LOG(ERROR) << "Exception while emitting a message: " << e.What();
+      }
+    }
+
+
+    class ReaderLock : public boost::noncopyable
+    {
+    private:
+      NativeApplicationContext&                that_;
+      boost::shared_lock<boost::shared_mutex>  lock_;
+
+    public:
+      ReaderLock(NativeApplicationContext& that) : 
+        that_(that),
+        lock_(that.mutex_)
+      {
+      }
+    };
+
+
+    class WriterLock : public boost::noncopyable
+    {
+    private:
+      NativeApplicationContext&                that_;
+      boost::unique_lock<boost::shared_mutex>  lock_;
+
+    public:
+      WriterLock(NativeApplicationContext& that) : 
+        that_(that),
+        lock_(that.mutex_)
+      {
+      }
+
+      MessageBroker& GetBroker() 
+      {
+        return that_.broker_;
+      }
+
+      IObservable& GetOracleObservable()
+      {
+        return that_.oracleObservable_;
+      }
+    };
+  };
+}
+
+
+
+class Toto : public OrthancStone::IObserver
+{
+private:
+  OrthancStone::CoordinateSystem3D  plane_;
+  OrthancStone::IOracle&            oracle_;
+  OrthancStone::Scene2D             scene_;
+  std::unique_ptr<OrthancStone::VolumeSceneLayerSource>  source1_, source2_, source3_;
+
+
+  void Refresh()
+  {
+    if (source1_.get() != NULL)
+    {
+      source1_->Update(plane_);
+    }
+      
+    if (source2_.get() != NULL)
+    {
+      source2_->Update(plane_);
+    }
+
+    if (source3_.get() != NULL)
+    {
+      source3_->Update(plane_);
+    }
+
+    scene_.FitContent(1024, 768);
+      
+    {
+      OrthancStone::CairoCompositor compositor(scene_, 1024, 768);
+      compositor.Refresh();
+        
+      Orthanc::ImageAccessor accessor;
+      compositor.GetCanvas().GetReadOnlyAccessor(accessor);
+
+      Orthanc::Image tmp(Orthanc::PixelFormat_RGB24, accessor.GetWidth(), accessor.GetHeight(), false);
+      Orthanc::ImageProcessing::Convert(tmp, accessor);
+        
+      static unsigned int count = 0;
+      char buf[64];
+      sprintf(buf, "scene-%06d.png", count++);
+        
+      Orthanc::PngWriter writer;
+      writer.WriteToFile(buf, tmp);
+    }
+  }
+
+  
+  void Handle(const OrthancStone::DicomVolumeImage::GeometryReadyMessage& message)
+  {
+    printf("Geometry ready\n");
+    
+    plane_ = message.GetOrigin().GetGeometry().GetSagittalGeometry();
+    //plane_ = message.GetOrigin().GetGeometry().GetAxialGeometry();
+    //plane_ = message.GetOrigin().GetGeometry().GetCoronalGeometry();
+    plane_.SetOrigin(message.GetOrigin().GetGeometry().GetCoordinates(0.5f, 0.5f, 0.5f));
+
+    Refresh();
+  }
+  
+  
+  void Handle(const OrthancStone::SleepOracleCommand::TimeoutMessage& message)
+  {
+    if (message.GetOrigin().HasPayload())
+    {
+      printf("TIMEOUT! %d\n", dynamic_cast<const Orthanc::SingleValueObject<unsigned int>& >(message.GetOrigin().GetPayload()).GetValue());
+    }
+    else
+    {
+      printf("TIMEOUT\n");
+
+      Refresh();
+
+      /**
+       * The sleep() leads to a crash if the oracle is still running,
+       * while this object is destroyed. Always stop the oracle before
+       * destroying active objects.  (*)
+       **/
+      // boost::this_thread::sleep(boost::posix_time::seconds(2));
+
+      oracle_.Schedule(*this, new OrthancStone::SleepOracleCommand(message.GetOrigin().GetDelay()));
+    }
+  }
+
+  void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
+  {
+    Json::Value v;
+    message.ParseJsonBody(v);
+
+    printf("ICI [%s]\n", v.toStyledString().c_str());
+  }
+
+  void Handle(const OrthancStone::GetOrthancImageCommand::SuccessMessage& message)
+  {
+    printf("IMAGE %dx%d\n", message.GetImage().GetWidth(), message.GetImage().GetHeight());
+  }
+
+  void Handle(const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message)
+  {
+    printf("WebViewer %dx%d\n", message.GetImage().GetWidth(), message.GetImage().GetHeight());
+  }
+
+  void Handle(const OrthancStone::OracleCommandExceptionMessage& message)
+  {
+    printf("EXCEPTION: [%s] on command type %d\n", message.GetException().What(), message.GetCommand().GetType());
+
+    switch (message.GetCommand().GetType())
+    {
+      case OrthancStone::IOracleCommand::Type_GetOrthancWebViewerJpeg:
+        printf("URI: [%s]\n", dynamic_cast<const OrthancStone::GetOrthancWebViewerJpegCommand&>
+               (message.GetCommand()).GetUri().c_str());
+        break;
+      
+      default:
+        break;
+    }
+  }
+
+public:
+  Toto(OrthancStone::IOracle& oracle,
+       OrthancStone::IObservable& oracleObservable) :
+    IObserver(oracleObservable.GetBroker()),
+    oracle_(oracle)
+  {
+    oracleObservable.RegisterObserverCallback
+      (new OrthancStone::Callable
+       <Toto, OrthancStone::SleepOracleCommand::TimeoutMessage>(*this, &Toto::Handle));
+
+    oracleObservable.RegisterObserverCallback
+      (new OrthancStone::Callable
+       <Toto, OrthancStone::OrthancRestApiCommand::SuccessMessage>(*this, &Toto::Handle));
+
+    oracleObservable.RegisterObserverCallback
+      (new OrthancStone::Callable
+       <Toto, OrthancStone::GetOrthancImageCommand::SuccessMessage>(*this, &Toto::Handle));
+
+    oracleObservable.RegisterObserverCallback
+      (new OrthancStone::Callable
+       <Toto, OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage>(*this, &Toto::Handle));
+
+    oracleObservable.RegisterObserverCallback
+      (new OrthancStone::Callable
+       <Toto, OrthancStone::OracleCommandExceptionMessage>(*this, &Toto::Handle));
+  }
+
+  void SetReferenceLoader(OrthancStone::IObservable& loader)
+  {
+    loader.RegisterObserverCallback
+      (new OrthancStone::Callable
+       <Toto, OrthancStone::DicomVolumeImage::GeometryReadyMessage>(*this, &Toto::Handle));
+  }
+
+  void SetVolume1(int depth,
+                  const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
+                  OrthancStone::ILayerStyleConfigurator* style)
+  {
+    source1_.reset(new OrthancStone::VolumeSceneLayerSource(scene_, depth, volume));
+
+    if (style != NULL)
+    {
+      source1_->SetConfigurator(style);
+    }
+  }
+
+  void SetVolume2(int depth,
+                  const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
+                  OrthancStone::ILayerStyleConfigurator* style)
+  {
+    source2_.reset(new OrthancStone::VolumeSceneLayerSource(scene_, depth, volume));
+
+    if (style != NULL)
+    {
+      source2_->SetConfigurator(style);
+    }
+  }
+
+  void SetStructureSet(int depth,
+                       const boost::shared_ptr<OrthancStone::DicomStructureSetLoader>& volume)
+  {
+    source3_.reset(new OrthancStone::VolumeSceneLayerSource(scene_, depth, volume));
+  }
+                       
+};
+
+
+void Run(OrthancStone::NativeApplicationContext& context,
+         OrthancStone::ThreadedOracle& oracle)
+{
+  // the oracle has been supplied with the context (as an IEmitter) upon
+  // creation
+  boost::shared_ptr<OrthancStone::DicomVolumeImage>  ct(new OrthancStone::DicomVolumeImage);
+  boost::shared_ptr<OrthancStone::DicomVolumeImage>  dose(new OrthancStone::DicomVolumeImage);
+
+  
+  boost::shared_ptr<Toto> toto;
+  boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader;
+  boost::shared_ptr<OrthancStone::OrthancMultiframeVolumeLoader> doseLoader;
+  boost::shared_ptr<OrthancStone::DicomStructureSetLoader>  rtstructLoader;
+
+  {
+    OrthancStone::NativeApplicationContext::WriterLock lock(context);
+    toto.reset(new Toto(oracle, lock.GetOracleObservable()));
+
+    // the oracle is used to schedule commands
+    // the oracleObservable is used by the loaders to:
+    // - request the broker (lifetime mgmt)
+    // - register the loader callbacks (called indirectly by the oracle)
+    ctLoader.reset(new OrthancStone::OrthancSeriesVolumeProgressiveLoader(ct, oracle, lock.GetOracleObservable()));
+    doseLoader.reset(new OrthancStone::OrthancMultiframeVolumeLoader(dose, oracle, lock.GetOracleObservable()));
+    rtstructLoader.reset(new OrthancStone::DicomStructureSetLoader(oracle, lock.GetOracleObservable()));
+  }
+
+
+  //toto->SetReferenceLoader(*ctLoader);
+  toto->SetReferenceLoader(*doseLoader);
+
+
+#if 1
+  toto->SetVolume1(0, ctLoader, new OrthancStone::GrayscaleStyleConfigurator);
+#else
+  {
+    boost::shared_ptr<OrthancStone::IVolumeSlicer> reslicer(new OrthancStone::DicomVolumeImageReslicer(ct));
+    toto->SetVolume1(0, reslicer, new OrthancStone::GrayscaleStyleConfigurator);
+  }
+#endif  
+  
+
+  {
+    std::unique_ptr<OrthancStone::LookupTableStyleConfigurator> config(new OrthancStone::LookupTableStyleConfigurator);
+    config->SetLookupTable(Orthanc::EmbeddedResources::COLORMAP_HOT);
+
+    boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer> tmp(new OrthancStone::DicomVolumeImageMPRSlicer(dose));
+    toto->SetVolume2(1, tmp, config.release());
+  }
+
+  toto->SetStructureSet(2, rtstructLoader);
+  
+  oracle.Schedule(*toto, new OrthancStone::SleepOracleCommand(100));
+
+  if (0)
+  {
+    Json::Value v = Json::objectValue;
+    v["Level"] = "Series";
+    v["Query"] = Json::objectValue;
+
+    std::unique_ptr<OrthancStone::OrthancRestApiCommand>  command(new OrthancStone::OrthancRestApiCommand);
+    command->SetMethod(Orthanc::HttpMethod_Post);
+    command->SetUri("/tools/find");
+    command->SetBody(v);
+
+    oracle.Schedule(*toto, command.release());
+  }
+  
+  if(0)
+  {
+    if (0)
+    {
+      std::unique_ptr<OrthancStone::GetOrthancImageCommand>  command(new OrthancStone::GetOrthancImageCommand);
+      command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Jpeg)));
+      command->SetUri("/instances/6687cc73-07cae193-52ff29c8-f646cb16-0753ed92/preview");
+      oracle.Schedule(*toto, command.release());
+    }
+    
+    if (0)
+    {
+      std::unique_ptr<OrthancStone::GetOrthancImageCommand>  command(new OrthancStone::GetOrthancImageCommand);
+      command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Png)));
+      command->SetUri("/instances/6687cc73-07cae193-52ff29c8-f646cb16-0753ed92/preview");
+      oracle.Schedule(*toto, command.release());
+    }
+    
+    if (0)
+    {
+      std::unique_ptr<OrthancStone::GetOrthancImageCommand>  command(new OrthancStone::GetOrthancImageCommand);
+      command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Png)));
+      command->SetUri("/instances/6687cc73-07cae193-52ff29c8-f646cb16-0753ed92/image-uint16");
+      oracle.Schedule(*toto, command.release());
+    }
+    
+    if (0)
+    {
+      std::unique_ptr<OrthancStone::GetOrthancImageCommand>  command(new OrthancStone::GetOrthancImageCommand);
+      command->SetHttpHeader("Accept-Encoding", "gzip");
+      command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Pam)));
+      command->SetUri("/instances/6687cc73-07cae193-52ff29c8-f646cb16-0753ed92/image-uint16");
+      oracle.Schedule(*toto, command.release());
+    }
+    
+    if (0)
+    {
+      std::unique_ptr<OrthancStone::GetOrthancImageCommand>  command(new OrthancStone::GetOrthancImageCommand);
+      command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Pam)));
+      command->SetUri("/instances/6687cc73-07cae193-52ff29c8-f646cb16-0753ed92/image-uint16");
+      oracle.Schedule(*toto, command.release());
+    }
+
+    if (0)
+    {
+      std::unique_ptr<OrthancStone::GetOrthancWebViewerJpegCommand>  command(new OrthancStone::GetOrthancWebViewerJpegCommand);
+      command->SetHttpHeader("Accept-Encoding", "gzip");
+      command->SetInstance("e6c7c20b-c9f65d7e-0d76f2e2-830186f2-3e3c600e");
+      command->SetQuality(90);
+      oracle.Schedule(*toto, command.release());
+    }
+
+
+    if (0)
+    {
+      for (unsigned int i = 0; i < 10; i++)
+      {
+        std::unique_ptr<OrthancStone::SleepOracleCommand> command(new OrthancStone::SleepOracleCommand(i * 1000));
+        command->SetPayload(new Orthanc::SingleValueObject<unsigned int>(42 * i));
+        oracle.Schedule(*toto, command.release());
+      }
+    }
+  }
+  
+  // 2017-11-17-Anonymized
+#if 0
+  // BGO data
+  ctLoader->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");  // CT
+  doseLoader->LoadInstance("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb");  // RT-DOSE
+  //rtstructLoader->LoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");  // RT-STRUCT
+#else
+  //ctLoader->LoadSeries("cb3ea4d1-d08f3856-ad7b6314-74d88d77-60b05618");  // CT
+  //doseLoader->LoadInstance("41029085-71718346-811efac4-420e2c15-d39f99b6");  // RT-DOSE
+  //rtstructLoader->LoadInstance("83d9c0c3-913a7fee-610097d7-cbf0522d-fd75bee6");  // RT-STRUCT
+
+  // 2017-05-16
+  ctLoader->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");  // CT
+  doseLoader->LoadInstance("eac822ef-a395f94e-e8121fe0-8411fef8-1f7bffad");  // RT-DOSE
+  rtstructLoader->LoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");  // RT-STRUCT
+#endif
+  // 2015-01-28-Multiframe
+  //doseLoader->LoadInstance("88f71e2a-5fad1c61-96ed14d6-5b3d3cf7-a5825279");  // Multiframe CT
+  
+  // Delphine
+  //ctLoader->LoadSeries("5990e39c-51e5f201-fe87a54c-31a55943-e59ef80e");  // CT
+  //ctLoader->LoadSeries("67f1b334-02c16752-45026e40-a5b60b6b-030ecab5");  // Lung 1/10mm
+
+
+  {
+    LOG(WARNING) << "...Waiting for Ctrl-C...";
+
+    oracle.Start();
+
+    Orthanc::SystemToolbox::ServerBarrier();
+
+    /**
+     * WARNING => The oracle must be stopped BEFORE the objects using
+     * it are destroyed!!! This forces to wait for the completion of
+     * the running callback methods. Otherwise, the callbacks methods
+     * might still be running while their parent object is destroyed,
+     * resulting in crashes. This is very visible if adding a sleep(),
+     * as in (*).
+     **/
+
+    oracle.Stop();
+  }
+}
+
+
+
+/**
+ * IMPORTANT: The full arguments to "main()" are needed for SDL on
+ * Windows. Otherwise, one gets the linking error "undefined reference
+ * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
+ **/
+int main(int argc, char* argv[])
+{
+  OrthancStone::StoneInitialize();
+  //Orthanc::Logging::EnableInfoLevel(true);
+
+  try
+  {
+    OrthancStone::NativeApplicationContext context;
+
+    OrthancStone::ThreadedOracle oracle(context);
+    //oracle.SetThreadsCount(1);
+
+    {
+      Orthanc::WebServiceParameters p;
+      //p.SetUrl("http://localhost:8043/");
+      p.SetCredentials("orthanc", "orthanc");
+      oracle.SetOrthancParameters(p);
+    }
+
+    //oracle.Start();
+
+    Run(context, oracle);
+    
+    //oracle.Stop();
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "EXCEPTION: " << e.What();
+  }
+
+  OrthancStone::StoneFinalize();
+
+  return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/RadiographyEditor.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,267 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "../Shared/RadiographyEditorApp.h"
+
+// From Stone
+#include "../../Framework/Oracle/SleepOracleCommand.h"
+#include "../../Framework/Oracle/ThreadedOracle.h"
+#include "../../Applications/Sdl/SdlOpenGLWindow.h"
+#include "../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../Framework/Scene2D/CairoCompositor.h"
+#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
+#include "../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../Framework/StoneInitialization.h"
+
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+
+
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+
+#include <SDL.h>
+#include <stdio.h>
+
+using namespace OrthancStone;
+
+namespace OrthancStone
+{
+  class NativeApplicationContext : public IMessageEmitter
+  {
+  private:
+    boost::shared_mutex  mutex_;
+    MessageBroker        broker_;
+    IObservable          oracleObservable_;
+
+  public:
+    NativeApplicationContext() :
+      oracleObservable_(broker_)
+    {
+    }
+
+
+    virtual void EmitMessage(const IObserver& observer,
+                             const IMessage& message) ORTHANC_OVERRIDE
+    {
+      try
+      {
+        boost::unique_lock<boost::shared_mutex>  lock(mutex_);
+        oracleObservable_.EmitMessage(observer, message);
+      }
+      catch (Orthanc::OrthancException& e)
+      {
+        LOG(ERROR) << "Exception while emitting a message: " << e.What();
+      }
+    }
+
+
+    class ReaderLock : public boost::noncopyable
+    {
+    private:
+      NativeApplicationContext&                that_;
+      boost::shared_lock<boost::shared_mutex>  lock_;
+
+    public:
+      ReaderLock(NativeApplicationContext& that) :
+        that_(that),
+        lock_(that.mutex_)
+      {
+      }
+    };
+
+
+    class WriterLock : public boost::noncopyable
+    {
+    private:
+      NativeApplicationContext&                that_;
+      boost::unique_lock<boost::shared_mutex>  lock_;
+
+    public:
+      WriterLock(NativeApplicationContext& that) :
+        that_(that),
+        lock_(that.mutex_)
+      {
+      }
+
+      MessageBroker& GetBroker()
+      {
+        return that_.broker_;
+      }
+
+      IObservable& GetOracleObservable()
+      {
+        return that_.oracleObservable_;
+      }
+    };
+  };
+}
+
+class OpenGlSdlCompositorFactory : public ICompositorFactory
+{
+  OpenGL::IOpenGLContext& openGlContext_;
+
+public:
+  OpenGlSdlCompositorFactory(OpenGL::IOpenGLContext& openGlContext) :
+    openGlContext_(openGlContext)
+  {}
+
+  ICompositor* GetCompositor(const Scene2D& scene)
+  {
+
+    OpenGLCompositor* compositor = new OpenGLCompositor(openGlContext_, scene);
+    compositor->SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
+                         FONT_SIZE_0, Orthanc::Encoding_Latin1);
+    compositor->SetFont(1, Orthanc::EmbeddedResources::UBUNTU_FONT,
+                         FONT_SIZE_1, Orthanc::Encoding_Latin1);
+    return compositor;
+  }
+};
+
+static void GLAPIENTRY
+OpenGLMessageCallback(GLenum source,
+                      GLenum type,
+                      GLuint id,
+                      GLenum severity,
+                      GLsizei length,
+                      const GLchar* message,
+                      const void* userParam)
+{
+  if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
+  {
+    fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
+            (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
+            type, severity, message);
+  }
+}
+
+
+/**
+ * IMPORTANT: The full arguments to "main()" are needed for SDL on
+ * Windows. Otherwise, one gets the linking error "undefined reference
+ * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
+ **/
+int main(int argc, char* argv[])
+{
+  using namespace OrthancStone;
+
+  StoneInitialize();
+  Orthanc::Logging::EnableInfoLevel(true);
+  //  Orthanc::Logging::EnableTraceLevel(true);
+
+  try
+  {
+    OrthancStone::NativeApplicationContext context;
+    OrthancStone::NativeApplicationContext::WriterLock lock(context);
+    OrthancStone::ThreadedOracle oracle(context);
+
+    // False means we do NOT let Windows treat this as a legacy application
+    // that needs to be scaled
+    SdlOpenGLWindow window("Hello", 1024, 1024, false);
+
+    glEnable(GL_DEBUG_OUTPUT);
+    glDebugMessageCallback(OpenGLMessageCallback, 0);
+
+    std::unique_ptr<OpenGlSdlCompositorFactory> compositorFactory(new OpenGlSdlCompositorFactory(window));
+    boost::shared_ptr<RadiographyEditorApp> app(new RadiographyEditorApp(oracle, lock.GetOracleObservable(), compositorFactory.release()));
+    app->PrepareScene();
+    app->FitContent(window.GetCanvasWidth(), window.GetCanvasHeight());
+
+    bool stopApplication = false;
+
+    while (!stopApplication)
+    {
+      app->Refresh();
+
+      SDL_Event event;
+      while (!stopApplication && SDL_PollEvent(&event))
+      {
+        OrthancStone::KeyboardModifiers modifiers = OrthancStone::KeyboardModifiers_None;
+        if (event.key.keysym.mod & KMOD_CTRL)
+          modifiers = static_cast<OrthancStone::KeyboardModifiers>(static_cast<int>(modifiers) | static_cast<int>(OrthancStone::KeyboardModifiers_Control));
+        if (event.key.keysym.mod & KMOD_ALT)
+          modifiers = static_cast<OrthancStone::KeyboardModifiers>(static_cast<int>(modifiers) | static_cast<int>(OrthancStone::KeyboardModifiers_Alt));
+        if (event.key.keysym.mod & KMOD_SHIFT)
+          modifiers = static_cast<OrthancStone::KeyboardModifiers>(static_cast<int>(modifiers) | static_cast<int>(OrthancStone::KeyboardModifiers_Shift));
+
+        OrthancStone::MouseButton button;
+        if (event.button.button == SDL_BUTTON_LEFT)
+          button = OrthancStone::MouseButton_Left;
+        else if (event.button.button == SDL_BUTTON_MIDDLE)
+          button = OrthancStone::MouseButton_Middle;
+        else if (event.button.button == SDL_BUTTON_RIGHT)
+          button = OrthancStone::MouseButton_Right;
+
+        if (event.type == SDL_QUIT)
+        {
+          stopApplication = true;
+          break;
+        }
+        else if (event.type == SDL_WINDOWEVENT &&
+                 event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
+        {
+          app->DisableTracker(); // was: tracker.reset(NULL);
+          app->UpdateSize();
+        }
+        else if (event.type == SDL_KEYDOWN &&
+                 event.key.repeat == 0 /* Ignore key bounce */)
+        {
+          switch (event.key.keysym.sym)
+          {
+          case SDLK_f:
+            window.GetWindow().ToggleMaximize();
+            break;
+
+          case SDLK_q:
+            stopApplication = true;
+            break;
+          default:
+          {
+            app->OnKeyPressed(event.key.keysym.sym, modifiers);
+           }
+          }
+        }
+        else if (event.type == SDL_MOUSEBUTTONDOWN)
+        {
+          app->OnMouseDown(event.button.x, event.button.y, modifiers, button);
+        }
+        else if (event.type == SDL_MOUSEMOTION)
+        {
+          app->OnMouseMove(event.button.x, event.button.y, modifiers);
+        }
+        else if (event.type == SDL_MOUSEBUTTONUP)
+        {
+          app->OnMouseUp(event.button.x, event.button.y, modifiers, button);
+        }
+      }
+      SDL_Delay(1);
+    }
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "EXCEPTION: " << e.What();
+  }
+
+  StoneFinalize();
+
+  return 0;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSample.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,93 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "TrackerSampleApp.h"
+
+ // From Stone
+#include "../../Framework/OpenGL/SdlOpenGLContext.h"
+#include "../../Framework/Scene2D/CairoCompositor.h"
+#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
+#include "../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../Framework/StoneInitialization.h"
+
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+
+
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+
+#include <SDL.h>
+#include <stdio.h>
+
+/*
+TODO:
+
+- to decouple the trackers from the sample, we need to supply them with
+  the scene rather than the app
+
+- in order to do that, we need a GetNextFreeZIndex function (or something 
+  along those lines) in the scene object
+
+*/
+
+boost::weak_ptr<OrthancStone::TrackerSampleApp> g_app;
+
+void TrackerSample_SetInfoDisplayMessage(std::string key, std::string value)
+{
+  boost::shared_ptr<OrthancStone::TrackerSampleApp> app = g_app.lock();
+  if (app)
+  {
+    app->SetInfoDisplayMessage(key, value);
+  }
+}
+
+/**
+ * IMPORTANT: The full arguments to "main()" are needed for SDL on
+ * Windows. Otherwise, one gets the linking error "undefined reference
+ * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
+ **/
+int main(int argc, char* argv[])
+{
+  using namespace OrthancStone;
+
+  StoneInitialize();
+  Orthanc::Logging::EnableInfoLevel(true);
+//  Orthanc::Logging::EnableTraceLevel(true);
+
+  try
+  {
+    MessageBroker broker;
+    boost::shared_ptr<TrackerSampleApp> app(new TrackerSampleApp(broker));
+    g_app = app;
+    app->PrepareScene();
+    app->Run();
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "EXCEPTION: " << e.What();
+  }
+
+  StoneFinalize();
+
+  return 0;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSampleApp.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,733 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "TrackerSampleApp.h"
+
+#include "../../Framework/OpenGL/SdlOpenGLContext.h"
+#include "../../Framework/Scene2D/CairoCompositor.h"
+#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
+#include "../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../Framework/Scene2D/PanSceneTracker.h"
+#include "../../Framework/Scene2D/RotateSceneTracker.h"
+#include "../../Framework/Scene2D/Scene2D.h"
+#include "../../Framework/Scene2D/ZoomSceneTracker.h"
+#include "../../Framework/Scene2DViewport/UndoStack.h"
+#include "../../Framework/Scene2DViewport/CreateAngleMeasureTracker.h"
+#include "../../Framework/Scene2DViewport/CreateLineMeasureTracker.h"
+#include "../../Framework/StoneInitialization.h"
+
+// From Orthanc framework
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+#include <Core/Images/Image.h>
+#include <Core/Images/ImageProcessing.h>
+#include <Core/Images/PngWriter.h>
+
+#include <boost/ref.hpp>
+#include <boost/make_shared.hpp>
+#include <SDL.h>
+
+#include <stdio.h>
+
+namespace OrthancStone
+{
+  const char* MeasureToolToString(size_t i)
+  {
+    static const char* descs[] = {
+      "GuiTool_Rotate",
+      "GuiTool_Pan",
+      "GuiTool_Zoom",
+      "GuiTool_LineMeasure",
+      "GuiTool_CircleMeasure",
+      "GuiTool_AngleMeasure",
+      "GuiTool_EllipseMeasure",
+      "GuiTool_LAST"
+    };
+    if (i >= GuiTool_LAST)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, "Wrong tool index");
+    }
+    return descs[i];
+  }
+
+  void TrackerSampleApp::SelectNextTool()
+  {
+    currentTool_ = static_cast<GuiTool>(currentTool_ + 1);
+    if (currentTool_ == GuiTool_LAST)
+      currentTool_ = static_cast<GuiTool>(0);;
+    printf("Current tool is now: %s\n", MeasureToolToString(currentTool_));
+  }
+
+  void TrackerSampleApp::DisplayInfoText()
+  {
+    // do not try to use stuff too early!
+    std::stringstream msg;
+	
+	for (std::map<std::string, std::string>::const_iterator kv = infoTextMap_.begin();
+		kv != infoTextMap_.end(); ++kv)
+    {
+      msg << kv->first << " : " << kv->second << std::endl;
+    }
+	std::string msgS = msg.str();
+
+    TextSceneLayer* layerP = NULL;
+    if (controller_->GetScene().HasLayer(FIXED_INFOTEXT_LAYER_ZINDEX))
+    {
+      TextSceneLayer& layer = dynamic_cast<TextSceneLayer&>(
+        controller_->GetScene().GetLayer(FIXED_INFOTEXT_LAYER_ZINDEX));
+      layerP = &layer;
+    }
+    else
+    {
+      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
+      layerP = layer.get();
+      layer->SetColor(0, 255, 0);
+      layer->SetFontIndex(1);
+      layer->SetBorder(20);
+      layer->SetAnchor(BitmapAnchor_TopLeft);
+      //layer->SetPosition(0,0);
+      controller_->GetScene().SetLayer(FIXED_INFOTEXT_LAYER_ZINDEX, layer.release());
+    }
+    // position the fixed info text in the upper right corner
+    layerP->SetText(msgS.c_str());
+    double cX = GetCompositor().GetCanvasWidth() * (-0.5);
+    double cY = GetCompositor().GetCanvasHeight() * (-0.5);
+    controller_->GetScene().GetCanvasToSceneTransform().Apply(cX,cY);
+    layerP->SetPosition(cX, cY);
+  }
+
+  void TrackerSampleApp::DisplayFloatingCtrlInfoText(const PointerEvent& e)
+  {
+    ScenePoint2D p = e.GetMainPosition().Apply(controller_->GetScene().GetCanvasToSceneTransform());
+
+    char buf[128];
+    sprintf(buf, "S:(%0.02f,%0.02f) C:(%0.02f,%0.02f)", 
+      p.GetX(), p.GetY(), 
+      e.GetMainPosition().GetX(), e.GetMainPosition().GetY());
+
+    if (controller_->GetScene().HasLayer(FLOATING_INFOTEXT_LAYER_ZINDEX))
+    {
+      TextSceneLayer& layer =
+        dynamic_cast<TextSceneLayer&>(controller_->GetScene().GetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX));
+      layer.SetText(buf);
+      layer.SetPosition(p.GetX(), p.GetY());
+    }
+    else
+    {
+      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
+      layer->SetColor(0, 255, 0);
+      layer->SetText(buf);
+      layer->SetBorder(20);
+      layer->SetAnchor(BitmapAnchor_BottomCenter);
+      layer->SetPosition(p.GetX(), p.GetY());
+      controller_->GetScene().SetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX, layer.release());
+    }
+  }
+
+  void TrackerSampleApp::HideInfoText()
+  {
+    controller_->GetScene().DeleteLayer(FLOATING_INFOTEXT_LAYER_ZINDEX);
+  }
+
+  ScenePoint2D TrackerSampleApp::GetRandomPointInScene() const
+  {
+    unsigned int w = GetCompositor().GetCanvasWidth();
+    LOG(TRACE) << "GetCompositor().GetCanvasWidth() = " << 
+      GetCompositor().GetCanvasWidth();
+    unsigned int h = GetCompositor().GetCanvasHeight();
+    LOG(TRACE) << "GetCompositor().GetCanvasHeight() = " << 
+      GetCompositor().GetCanvasHeight();
+
+    if ((w >= RAND_MAX) || (h >= RAND_MAX))
+      LOG(WARNING) << "Canvas is too big : tools will not be randomly placed";
+
+    int x = rand() % w;
+    int y = rand() % h;
+    LOG(TRACE) << "random x = " << x << "random y = " << y;
+
+    ScenePoint2D p = controller_->GetViewport().GetPixelCenterCoordinates(x, y);
+    LOG(TRACE) << "--> p.GetX() = " << p.GetX() << " p.GetY() = " << p.GetY();
+
+    ScenePoint2D r = p.Apply(controller_->GetScene().GetCanvasToSceneTransform());
+    LOG(TRACE) << "--> r.GetX() = " << r.GetX() << " r.GetY() = " << r.GetY();
+    return r;
+  }
+
+  void TrackerSampleApp::CreateRandomMeasureTool()
+  {
+    static bool srandCalled = false;
+    if (!srandCalled)
+    {
+      srand(42);
+      srandCalled = true;
+    }
+
+    int i = rand() % 2;
+    LOG(TRACE) << "random i = " << i;
+    switch (i)
+    {
+    case 0:
+      // line measure
+      {
+        boost::shared_ptr<CreateLineMeasureCommand> cmd = 
+          boost::make_shared<CreateLineMeasureCommand>(
+		  boost::ref(IObserver::GetBroker()),
+            controller_,
+            GetRandomPointInScene());
+        cmd->SetEnd(GetRandomPointInScene());
+        controller_->PushCommand(cmd);
+      }
+      break;
+    case 1:
+      // angle measure
+      {
+      boost::shared_ptr<CreateAngleMeasureCommand> cmd =
+        boost::make_shared<CreateAngleMeasureCommand>(
+          boost::ref(IObserver::GetBroker()),
+          controller_,
+          GetRandomPointInScene());
+        cmd->SetCenter(GetRandomPointInScene());
+        cmd->SetSide2End(GetRandomPointInScene());
+        controller_->PushCommand(cmd);
+      }
+      break;
+    }
+  }
+
+  void TrackerSampleApp::HandleApplicationEvent(
+    const SDL_Event & event)
+  {
+    DisplayInfoText();
+
+    if (event.type == SDL_MOUSEMOTION)
+    {
+      int scancodeCount = 0;
+      const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
+
+      if (activeTracker_.get() == NULL &&
+        SDL_SCANCODE_LALT < scancodeCount &&
+        keyboardState[SDL_SCANCODE_LALT])
+      {
+        // The "left-ctrl" key is down, while no tracker is present
+        // Let's display the info text
+        PointerEvent e;
+        e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
+          event.button.x, event.button.y));
+
+        DisplayFloatingCtrlInfoText(e);
+      }
+      else if (activeTracker_.get() != NULL)
+      {
+        HideInfoText();
+        //LOG(TRACE) << "(event.type == SDL_MOUSEMOTION)";
+        if (activeTracker_.get() != NULL)
+        {
+          //LOG(TRACE) << "(activeTracker_.get() != NULL)";
+          PointerEvent e;
+          e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
+            event.button.x, event.button.y));
+          
+          //LOG(TRACE) << "event.button.x = " << event.button.x << "     " <<
+          //  "event.button.y = " << event.button.y;
+          LOG(TRACE) << "activeTracker_->PointerMove(e); " <<
+            e.GetMainPosition().GetX() << " " << e.GetMainPosition().GetY();
+          
+          activeTracker_->PointerMove(e);
+          if (!activeTracker_->IsAlive())
+            activeTracker_.reset();
+        }
+      }
+      else
+      {
+        HideInfoText();
+
+        PointerEvent e;
+        e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(event.button.x, event.button.y));
+
+        ScenePoint2D scenePos = e.GetMainPosition().Apply(
+          controller_->GetScene().GetCanvasToSceneTransform());
+        //auto measureTools = GetController()->HitTestMeasureTools(scenePos);
+        //LOG(TRACE) << "# of hit tests: " << measureTools.size();
+        
+        // this returns the collection of measuring tools where hit test is true
+        std::vector<boost::shared_ptr<MeasureTool> > measureTools = controller_->HitTestMeasureTools(scenePos);
+
+        // let's refresh the measuring tools highlighted state
+        // first let's tag them as "unhighlighted"
+        controller_->ResetMeasuringToolsHighlight();
+
+        // then immediately take the first one and ask it to highlight the 
+        // measuring tool UI part that is hot
+        if (measureTools.size() > 0)
+        {
+          measureTools[0]->Highlight(scenePos);
+        }
+      }
+    }
+    else if (event.type == SDL_MOUSEBUTTONUP)
+    {
+      if (activeTracker_)
+      {
+        PointerEvent e;
+        e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(event.button.x, event.button.y));
+        activeTracker_->PointerUp(e);
+        if (!activeTracker_->IsAlive())
+          activeTracker_.reset();
+      }
+    }
+    else if (event.type == SDL_MOUSEBUTTONDOWN)
+    {
+      PointerEvent e;
+      e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
+        event.button.x, event.button.y));
+      if (activeTracker_)
+      {
+        activeTracker_->PointerDown(e);
+        if (!activeTracker_->IsAlive())
+          activeTracker_.reset();
+      }
+      else
+      {
+        // we ATTEMPT to create a tracker if need be
+        activeTracker_ = CreateSuitableTracker(event, e);
+      }
+    }
+    else if (event.type == SDL_KEYDOWN &&
+      event.key.repeat == 0 /* Ignore key bounce */)
+    {
+      switch (event.key.keysym.sym)
+      {
+      case SDLK_ESCAPE:
+        if (activeTracker_)
+        {
+          activeTracker_->Cancel();
+          if (!activeTracker_->IsAlive())
+            activeTracker_.reset();
+        }
+        break;
+
+      case SDLK_t:
+        if (!activeTracker_)
+          SelectNextTool();
+        else
+        {
+          LOG(WARNING) << "You cannot change the active tool when an interaction"
+            " is taking place";
+        }
+        break;
+
+      case SDLK_m:
+        CreateRandomMeasureTool();
+        break;
+      case SDLK_s:
+        controller_->FitContent(GetCompositor().GetCanvasWidth(),
+          GetCompositor().GetCanvasHeight());
+        break;
+
+      case SDLK_z:
+        LOG(TRACE) << "SDLK_z has been pressed. event.key.keysym.mod == " << event.key.keysym.mod;
+        if (event.key.keysym.mod & KMOD_CTRL)
+        {
+          if (controller_->CanUndo())
+          {
+            LOG(TRACE) << "Undoing...";
+            controller_->Undo();
+          }
+          else
+          {
+            LOG(WARNING) << "Nothing to undo!!!";
+          }
+        }
+        break;
+
+      case SDLK_y:
+        LOG(TRACE) << "SDLK_y has been pressed. event.key.keysym.mod == " << event.key.keysym.mod;
+        if (event.key.keysym.mod & KMOD_CTRL)
+        {
+          if (controller_->CanRedo())
+          {
+            LOG(TRACE) << "Redoing...";
+            controller_->Redo();
+          }
+          else
+          {
+            LOG(WARNING) << "Nothing to redo!!!";
+          }
+        }
+        break;
+
+      case SDLK_c:
+        TakeScreenshot(
+          "screenshot.png",
+          GetCompositor().GetCanvasWidth(),
+          GetCompositor().GetCanvasHeight());
+        break;
+
+      default:
+        break;
+      }
+    }
+  }
+
+
+  void TrackerSampleApp::OnSceneTransformChanged(
+    const ViewportController::SceneTransformChanged& message)
+  {
+    DisplayInfoText();
+  }
+
+  boost::shared_ptr<IFlexiblePointerTracker> TrackerSampleApp::CreateSuitableTracker(
+    const SDL_Event & event,
+    const PointerEvent & e)
+  {
+    using namespace Orthanc;
+
+    switch (event.button.button)
+    {
+    case SDL_BUTTON_MIDDLE:
+      return boost::shared_ptr<IFlexiblePointerTracker>(new PanSceneTracker
+        (controller_, e));
+
+    case SDL_BUTTON_RIGHT:
+      return boost::shared_ptr<IFlexiblePointerTracker>(new ZoomSceneTracker
+        (controller_, e, GetCompositor().GetCanvasHeight()));
+
+    case SDL_BUTTON_LEFT:
+    {
+      //LOG(TRACE) << "CreateSuitableTracker: case SDL_BUTTON_LEFT:";
+      // TODO: we need to iterate on the set of measuring tool and perform
+      // a hit test to check if a tracker needs to be created for edition.
+      // Otherwise, depending upon the active tool, we might want to create
+      // a "measuring tool creation" tracker
+
+      // TODO: if there are conflicts, we should prefer a tracker that 
+      // pertains to the type of measuring tool currently selected (TBD?)
+      boost::shared_ptr<IFlexiblePointerTracker> hitTestTracker = TrackerHitTest(e);
+
+      if (hitTestTracker != NULL)
+      {
+        //LOG(TRACE) << "hitTestTracker != NULL";
+        return hitTestTracker;
+      }
+      else
+      {
+        switch (currentTool_)
+        {
+        case GuiTool_Rotate:
+          //LOG(TRACE) << "Creating RotateSceneTracker";
+          return boost::shared_ptr<IFlexiblePointerTracker>(new RotateSceneTracker(
+            controller_, e));
+        case GuiTool_Pan:
+          return boost::shared_ptr<IFlexiblePointerTracker>(new PanSceneTracker(
+            controller_, e));
+        case GuiTool_Zoom:
+          return boost::shared_ptr<IFlexiblePointerTracker>(new ZoomSceneTracker(
+            controller_, e, GetCompositor().GetCanvasHeight()));
+        //case GuiTool_AngleMeasure:
+        //  return new AngleMeasureTracker(GetScene(), e);
+        //case GuiTool_CircleMeasure:
+        //  return new CircleMeasureTracker(GetScene(), e);
+        //case GuiTool_EllipseMeasure:
+        //  return new EllipseMeasureTracker(GetScene(), e);
+        case GuiTool_LineMeasure:
+          return boost::shared_ptr<IFlexiblePointerTracker>(new CreateLineMeasureTracker(
+            IObserver::GetBroker(), controller_, e));
+        case GuiTool_AngleMeasure:
+          return boost::shared_ptr<IFlexiblePointerTracker>(new CreateAngleMeasureTracker(
+            IObserver::GetBroker(), controller_, e));
+        case GuiTool_CircleMeasure:
+          LOG(ERROR) << "Not implemented yet!";
+          return boost::shared_ptr<IFlexiblePointerTracker>();
+        case GuiTool_EllipseMeasure:
+          LOG(ERROR) << "Not implemented yet!";
+          return boost::shared_ptr<IFlexiblePointerTracker>();
+        default:
+          throw OrthancException(ErrorCode_InternalError, "Wrong tool!");
+        }
+      }
+    }
+    default:
+      return boost::shared_ptr<IFlexiblePointerTracker>();
+    }
+  }
+
+
+  TrackerSampleApp::TrackerSampleApp(MessageBroker& broker) : IObserver(broker)
+    , currentTool_(GuiTool_Rotate)
+    , undoStack_(new UndoStack)
+    , viewport_("Hello", 1024, 1024, false) // False means we do NOT let Windows treat this as a legacy application that needs to be scaled
+  {
+    controller_ = boost::shared_ptr<ViewportController>(
+      new ViewportController(undoStack_, broker, viewport_));
+
+    controller_->RegisterObserverCallback(
+      new Callable<TrackerSampleApp, ViewportController::SceneTransformChanged>
+      (*this, &TrackerSampleApp::OnSceneTransformChanged));
+
+    TEXTURE_2x2_1_ZINDEX = 1;
+    TEXTURE_1x1_ZINDEX = 2;
+    TEXTURE_2x2_2_ZINDEX = 3;
+    LINESET_1_ZINDEX = 4;
+    LINESET_2_ZINDEX = 5;
+    FLOATING_INFOTEXT_LAYER_ZINDEX = 6;
+    FIXED_INFOTEXT_LAYER_ZINDEX = 7;
+  }
+
+  void TrackerSampleApp::PrepareScene()
+  {
+    // Texture of 2x2 size
+    {
+      Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false);
+
+      uint8_t* p = reinterpret_cast<uint8_t*>(i.GetRow(0));
+      p[0] = 255;
+      p[1] = 0;
+      p[2] = 0;
+
+      p[3] = 0;
+      p[4] = 255;
+      p[5] = 0;
+
+      p = reinterpret_cast<uint8_t*>(i.GetRow(1));
+      p[0] = 0;
+      p[1] = 0;
+      p[2] = 255;
+
+      p[3] = 255;
+      p[4] = 0;
+      p[5] = 0;
+
+      controller_->GetScene().SetLayer(TEXTURE_2x2_1_ZINDEX, new ColorTextureSceneLayer(i));
+
+      std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
+      l->SetOrigin(-3, 2);
+      l->SetPixelSpacing(1.5, 1);
+      l->SetAngle(20.0 / 180.0 * M_PI);
+      controller_->GetScene().SetLayer(TEXTURE_2x2_2_ZINDEX, l.release());
+    }
+
+    // Texture of 1x1 size
+    {
+      Orthanc::Image i(Orthanc::PixelFormat_RGB24, 1, 1, false);
+
+      uint8_t* p = reinterpret_cast<uint8_t*>(i.GetRow(0));
+      p[0] = 255;
+      p[1] = 0;
+      p[2] = 0;
+
+      std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
+      l->SetOrigin(-2, 1);
+      l->SetAngle(20.0 / 180.0 * M_PI);
+      controller_->GetScene().SetLayer(TEXTURE_1x1_ZINDEX, l.release());
+    }
+
+    // Some lines
+    {
+      std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer);
+
+      layer->SetThickness(1);
+
+      PolylineSceneLayer::Chain chain;
+      chain.push_back(ScenePoint2D(0 - 0.5, 0 - 0.5));
+      chain.push_back(ScenePoint2D(0 - 0.5, 2 - 0.5));
+      chain.push_back(ScenePoint2D(2 - 0.5, 2 - 0.5));
+      chain.push_back(ScenePoint2D(2 - 0.5, 0 - 0.5));
+      layer->AddChain(chain, true, 255, 0, 0);
+
+      chain.clear();
+      chain.push_back(ScenePoint2D(-5, -5));
+      chain.push_back(ScenePoint2D(5, -5));
+      chain.push_back(ScenePoint2D(5, 5));
+      chain.push_back(ScenePoint2D(-5, 5));
+      layer->AddChain(chain, true, 0, 255, 0);
+
+      double dy = 1.01;
+      chain.clear();
+      chain.push_back(ScenePoint2D(-4, -4));
+      chain.push_back(ScenePoint2D(4, -4 + dy));
+      chain.push_back(ScenePoint2D(-4, -4 + 2.0 * dy));
+      chain.push_back(ScenePoint2D(4, 2));
+      layer->AddChain(chain, false, 0, 0, 255);
+
+      controller_->GetScene().SetLayer(LINESET_1_ZINDEX, layer.release());
+    }
+
+    // Some text
+    {
+      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
+      layer->SetText("Hello");
+      controller_->GetScene().SetLayer(LINESET_2_ZINDEX, layer.release());
+    }
+  }
+
+
+  void TrackerSampleApp::DisableTracker()
+  {
+    if (activeTracker_)
+    {
+      activeTracker_->Cancel();
+      activeTracker_.reset();
+    }
+  }
+
+  void TrackerSampleApp::TakeScreenshot(const std::string& target,
+    unsigned int canvasWidth,
+    unsigned int canvasHeight)
+  {
+    CairoCompositor compositor(controller_->GetScene(), canvasWidth, canvasHeight);
+    compositor.SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, FONT_SIZE_0, Orthanc::Encoding_Latin1);
+    compositor.Refresh();
+
+    Orthanc::ImageAccessor canvas;
+    compositor.GetCanvas().GetReadOnlyAccessor(canvas);
+
+    Orthanc::Image png(Orthanc::PixelFormat_RGB24, canvas.GetWidth(), canvas.GetHeight(), false);
+    Orthanc::ImageProcessing::Convert(png, canvas);
+
+    Orthanc::PngWriter writer;
+    writer.WriteToFile(target, png);
+  }
+
+
+  boost::shared_ptr<IFlexiblePointerTracker> TrackerSampleApp::TrackerHitTest(const PointerEvent & e)
+  {
+    // std::vector<boost::shared_ptr<MeasureTool>> measureTools_;
+    ScenePoint2D scenePos = e.GetMainPosition().Apply(
+      controller_->GetScene().GetCanvasToSceneTransform());
+
+    std::vector<boost::shared_ptr<MeasureTool> > measureTools = controller_->HitTestMeasureTools(scenePos);
+
+    if (measureTools.size() > 0)
+    {
+      return measureTools[0]->CreateEditionTracker(e);
+    }
+    return boost::shared_ptr<IFlexiblePointerTracker>();
+  }
+
+  static void GLAPIENTRY
+    OpenGLMessageCallback(GLenum source,
+      GLenum type,
+      GLuint id,
+      GLenum severity,
+      GLsizei length,
+      const GLchar* message,
+      const void* userParam)
+  {
+    if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
+    {
+      fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
+        (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
+        type, severity, message);
+    }
+  }
+
+  static bool g_stopApplication = false;
+  
+  ICompositor& TrackerSampleApp::GetCompositor()
+  {
+    using namespace Orthanc;
+    try
+    {
+      SdlViewport& viewport = dynamic_cast<SdlViewport&>(viewport_);
+      return viewport.GetCompositor();
+    }
+    catch (std::bad_cast e)
+    {
+      throw OrthancException(ErrorCode_InternalError, "Wrong viewport type!");
+     }
+  }
+
+  const ICompositor& TrackerSampleApp::GetCompositor() const
+  {
+    using namespace Orthanc;
+    try
+    {
+      SdlViewport& viewport = const_cast<SdlViewport&>(dynamic_cast<const SdlViewport&>(viewport_));
+      return viewport.GetCompositor();
+    }
+    catch (std::bad_cast e)
+    {
+      throw OrthancException(ErrorCode_InternalError, "Wrong viewport type!");
+    }
+  }
+
+
+  void TrackerSampleApp::Run()
+  {
+    controller_->FitContent(viewport_.GetCanvasWidth(), viewport_.GetCanvasHeight());
+
+    glEnable(GL_DEBUG_OUTPUT);
+    glDebugMessageCallback(OpenGLMessageCallback, 0);
+
+    GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
+      FONT_SIZE_0, Orthanc::Encoding_Latin1);
+    GetCompositor().SetFont(1, Orthanc::EmbeddedResources::UBUNTU_FONT,
+      FONT_SIZE_1, Orthanc::Encoding_Latin1);
+
+    while (!g_stopApplication)
+    {
+      GetCompositor().Refresh();
+
+      SDL_Event event;
+      while (!g_stopApplication && SDL_PollEvent(&event))
+      {
+        if (event.type == SDL_QUIT)
+        {
+          g_stopApplication = true;
+          break;
+        }
+        else if (event.type == SDL_WINDOWEVENT &&
+          event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
+        {
+          DisableTracker(); // was: tracker.reset(NULL);
+        }
+        else if (event.type == SDL_KEYDOWN &&
+          event.key.repeat == 0 /* Ignore key bounce */)
+        {
+          switch (event.key.keysym.sym)
+          {
+          case SDLK_f:
+            viewport_.GetWindow().ToggleMaximize();
+            break;
+
+          case SDLK_q:
+            g_stopApplication = true;
+            break;
+          default:
+            break;
+          }
+        }
+        HandleApplicationEvent(event);
+      }
+      SDL_Delay(1);
+    }
+  }
+
+  void TrackerSampleApp::SetInfoDisplayMessage(
+    std::string key, std::string value)
+  {
+    if (value == "")
+      infoTextMap_.erase(key);
+    else
+      infoTextMap_[key] = value;
+    DisplayInfoText();
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSampleApp.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,150 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Framework/Messages/IObserver.h"
+#include "../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../Framework/Scene2DViewport/IFlexiblePointerTracker.h"
+#include "../../Framework/Scene2DViewport/MeasureTool.h"
+#include "../../Framework/Scene2DViewport/PredeclaredTypes.h"
+#include "../../Framework/Scene2DViewport/ViewportController.h"
+#include "../../Framework/Viewport/SdlViewport.h"
+
+#include <SDL.h>
+
+#include <boost/make_shared.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+namespace OrthancStone
+{
+  enum GuiTool
+  {
+    GuiTool_Rotate = 0,
+    GuiTool_Pan,
+    GuiTool_Zoom,
+    GuiTool_LineMeasure,
+    GuiTool_CircleMeasure,
+    GuiTool_AngleMeasure,
+    GuiTool_EllipseMeasure,
+    GuiTool_LAST
+  };
+
+  const char* MeasureToolToString(size_t i);
+
+  static const unsigned int FONT_SIZE_0 = 32;
+  static const unsigned int FONT_SIZE_1 = 24;
+
+  class Scene2D;
+  class UndoStack;
+
+  class TrackerSampleApp : public IObserver
+    , public boost::enable_shared_from_this<TrackerSampleApp>
+  {
+  public:
+    // 12 because.
+    TrackerSampleApp(MessageBroker& broker);
+    void PrepareScene();
+    void Run();
+    void SetInfoDisplayMessage(std::string key, std::string value);
+    void DisableTracker();
+
+    void HandleApplicationEvent(const SDL_Event& event);
+
+    /**
+    This method is called when the scene transform changes. It allows to
+    recompute the visual elements whose content depend upon the scene transform
+    */
+    void OnSceneTransformChanged(
+      const ViewportController::SceneTransformChanged& message);
+
+  private:
+    void SelectNextTool();
+    void CreateRandomMeasureTool();
+
+
+    /**
+    In the case of this app, the viewport is an SDL viewport and it has 
+    a OpenGLCompositor& GetCompositor() method
+    */
+    ICompositor& GetCompositor();
+
+    /**
+    See the other overload
+    */
+    const ICompositor& GetCompositor() const;
+
+    /**
+    This returns a random point in the canvas part of the scene, but in
+    scene coordinates
+    */
+    ScenePoint2D GetRandomPointInScene() const;
+
+    boost::shared_ptr<IFlexiblePointerTracker> TrackerHitTest(const PointerEvent& e);
+
+    boost::shared_ptr<IFlexiblePointerTracker> CreateSuitableTracker(
+      const SDL_Event& event,
+      const PointerEvent& e);
+
+    void TakeScreenshot(
+      const std::string& target,
+      unsigned int canvasWidth,
+      unsigned int canvasHeight);
+
+    /**
+      This adds the command at the top of the undo stack
+    */
+    void Commit(boost::shared_ptr<TrackerCommand> cmd);
+    void Undo();
+    void Redo();
+
+  private:
+    void DisplayFloatingCtrlInfoText(const PointerEvent& e);
+    void DisplayInfoText();
+    void HideInfoText();
+
+  private:
+    /**
+    WARNING: the measuring tools do store a reference to the scene, and it 
+    paramount that the scene gets destroyed AFTER the measurement tools.
+    */
+    boost::shared_ptr<ViewportController> controller_;
+
+    std::map<std::string, std::string> infoTextMap_;
+    boost::shared_ptr<IFlexiblePointerTracker> activeTracker_;
+
+    //static const int LAYER_POSITION = 150;
+
+    int TEXTURE_2x2_1_ZINDEX;
+    int TEXTURE_1x1_ZINDEX;
+    int TEXTURE_2x2_2_ZINDEX;
+    int LINESET_1_ZINDEX;
+    int LINESET_2_ZINDEX;
+    int FLOATING_INFOTEXT_LAYER_ZINDEX;
+    int FIXED_INFOTEXT_LAYER_ZINDEX;
+
+    GuiTool currentTool_;
+    boost::shared_ptr<UndoStack> undoStack_;
+    SdlOpenGLViewport viewport_;
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/Sdl/cpp.hint	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,2 @@
+#define ORTHANC_OVERRIDE
+#define ORTHANC_STONE_DEFINE_EMPTY_MESSAGE(FILE, LINE, NAME) class NAME : public ::OrthancStone::IMessage {};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicMPR.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,427 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+
+#include "dev.h"
+
+#include <emscripten.h>
+
+#include "../../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
+#include "../../Framework/Oracle/SleepOracleCommand.h"
+#include "../../Framework/Oracle/WebAssemblyOracle.h"
+#include "../../Framework/Scene2D/GrayscaleStyleConfigurator.h"
+#include "../../Framework/StoneInitialization.h"
+#include "../../Framework/Volumes/VolumeSceneLayerSource.h"
+
+
+namespace OrthancStone
+{
+  class VolumeSlicerWidget : public IObserver
+  {
+  private:
+    OrthancStone::WebAssemblyViewport      viewport_;
+    std::unique_ptr<VolumeSceneLayerSource>  source_;
+    VolumeProjection                       projection_;
+    std::vector<CoordinateSystem3D>        planes_;
+    size_t                                 currentPlane_;
+
+    void Handle(const DicomVolumeImage::GeometryReadyMessage& message)
+    {
+      LOG(INFO) << "Geometry is available";
+
+      const VolumeImageGeometry& geometry = message.GetOrigin().GetGeometry();
+
+      const unsigned int depth = geometry.GetProjectionDepth(projection_);
+      currentPlane_ = depth / 2;
+      
+      planes_.resize(depth);
+
+      for (unsigned int z = 0; z < depth; z++)
+      {
+        planes_[z] = geometry.GetProjectionSlice(projection_, z);
+      }
+
+      Refresh();
+
+      viewport_.FitContent();
+    }
+    
+  public:
+    VolumeSlicerWidget(MessageBroker& broker,
+                         const std::string& canvas,
+                         VolumeProjection projection) :
+      IObserver(broker),
+      viewport_(broker, canvas),
+      projection_(projection),
+      currentPlane_(0)
+    {
+    }
+
+    void UpdateSize()
+    {
+      viewport_.UpdateSize();
+    }
+
+    void SetSlicer(int layerDepth,
+                   const boost::shared_ptr<IVolumeSlicer>& slicer,
+                   IObservable& loader,
+                   ILayerStyleConfigurator* configurator)
+    {
+      if (source_.get() != NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                        "Only one slicer can be registered");
+      }
+      
+      loader.RegisterObserverCallback(
+        new Callable<VolumeSlicerWidget, DicomVolumeImage::GeometryReadyMessage>
+        (*this, &VolumeSlicerWidget::Handle));
+
+      source_.reset(new VolumeSceneLayerSource(viewport_.GetScene(), layerDepth, slicer));
+
+      if (configurator != NULL)
+      {
+        source_->SetConfigurator(configurator);
+      }
+    }    
+
+    void Refresh()
+    {
+      if (source_.get() != NULL &&
+          currentPlane_ < planes_.size())
+      {
+        source_->Update(planes_[currentPlane_]);
+        viewport_.Refresh();
+      }
+    }
+
+    size_t GetSlicesCount() const
+    {
+      return planes_.size();
+    }
+
+    void Scroll(int delta)
+    {
+      if (!planes_.empty())
+      {
+        int tmp = static_cast<int>(currentPlane_) + delta;
+        unsigned int next;
+
+        if (tmp < 0)
+        {
+          next = 0;
+        }
+        else if (tmp >= static_cast<int>(planes_.size()))
+        {
+          next = planes_.size() - 1;
+        }
+        else
+        {
+          next = static_cast<size_t>(tmp);
+        }
+
+        if (next != currentPlane_)
+        {
+          currentPlane_ = next;
+          Refresh();
+        }
+      }
+    }
+  };
+}
+
+
+
+
+boost::shared_ptr<OrthancStone::DicomVolumeImage>  ct_(new OrthancStone::DicomVolumeImage);
+
+boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader>  loader_;
+
+std::unique_ptr<OrthancStone::VolumeSlicerWidget>  widget1_;
+std::unique_ptr<OrthancStone::VolumeSlicerWidget>  widget2_;
+std::unique_ptr<OrthancStone::VolumeSlicerWidget>  widget3_;
+
+OrthancStone::MessageBroker  broker_;
+OrthancStone::WebAssemblyOracle  oracle_(broker_);
+
+
+EM_BOOL OnWindowResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData)
+{
+  try
+  {
+    if (widget1_.get() != NULL)
+    {
+      widget1_->UpdateSize();
+    }
+  
+    if (widget2_.get() != NULL)
+    {
+      widget2_->UpdateSize();
+    }
+  
+    if (widget3_.get() != NULL)
+    {
+      widget3_->UpdateSize();
+    }
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "Exception while updating canvas size: " << e.What();
+  }
+  
+  return true;
+}
+
+
+
+
+EM_BOOL OnAnimationFrame(double time, void *userData)
+{
+  try
+  {
+    if (widget1_.get() != NULL)
+    {
+      widget1_->Refresh();
+    }
+  
+    if (widget2_.get() != NULL)
+    {
+      widget2_->Refresh();
+    }
+  
+    if (widget3_.get() != NULL)
+    {
+      widget3_->Refresh();
+    }
+
+    return true;
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "Exception in the animation loop, stopping now: " << e.What();
+    return false;
+  }  
+}
+
+
+static bool ctrlDown_ = false;
+
+
+EM_BOOL OnMouseWheel(int eventType,
+                     const EmscriptenWheelEvent *wheelEvent,
+                     void *userData)
+{
+  try
+  {
+    if (userData != NULL)
+    {
+      int delta = 0;
+
+      if (wheelEvent->deltaY < 0)
+      {
+        delta = -1;
+      }
+           
+      if (wheelEvent->deltaY > 0)
+      {
+        delta = 1;
+      }
+
+      OrthancStone::VolumeSlicerWidget& widget =
+        *reinterpret_cast<OrthancStone::VolumeSlicerWidget*>(userData);
+      
+      if (ctrlDown_)
+      {
+        delta *= static_cast<int>(widget.GetSlicesCount() / 10);
+      }
+
+      widget.Scroll(delta);
+    }
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "Exception in the wheel event: " << e.What();
+  }
+  
+  return true;
+}
+
+
+EM_BOOL OnKeyDown(int eventType,
+                  const EmscriptenKeyboardEvent *keyEvent,
+                  void *userData)
+{
+  ctrlDown_ = keyEvent->ctrlKey;
+  return false;
+}
+
+
+EM_BOOL OnKeyUp(int eventType,
+                const EmscriptenKeyboardEvent *keyEvent,
+                void *userData)
+{
+  ctrlDown_ = false;
+  return false;
+}
+
+
+
+
+namespace OrthancStone
+{
+  class TestSleep : public IObserver
+  {
+  private:
+    WebAssemblyOracle&  oracle_;
+
+    void Schedule()
+    {
+      oracle_.Schedule(*this, new OrthancStone::SleepOracleCommand(2000));
+    }
+    
+    void Handle(const SleepOracleCommand::TimeoutMessage& message)
+    {
+      LOG(INFO) << "TIMEOUT";
+      Schedule();
+    }
+    
+  public:
+    TestSleep(MessageBroker& broker,
+              WebAssemblyOracle& oracle) :
+      IObserver(broker),
+      oracle_(oracle)
+    {
+      oracle.RegisterObserverCallback(
+        new Callable<TestSleep, SleepOracleCommand::TimeoutMessage>
+        (*this, &TestSleep::Handle));
+
+      LOG(INFO) << "STARTING";
+      Schedule();
+    }
+  };
+
+  //static TestSleep testSleep(broker_, oracle_);
+}
+
+
+
+static std::map<std::string, std::string> arguments_;
+
+static bool GetArgument(std::string& value,
+                        const std::string& key)
+{
+  std::map<std::string, std::string>::const_iterator found = arguments_.find(key);
+
+  if (found == arguments_.end())
+  {
+    return false;
+  }
+  else
+  {
+    value = found->second;
+    return true;
+  }
+}
+
+
+extern "C"
+{
+  int main(int argc, char const *argv[]) 
+  {
+    OrthancStone::StoneInitialize();
+    Orthanc::Logging::EnableInfoLevel(true);
+    // Orthanc::Logging::EnableTraceLevel(true);
+    EM_ASM(window.dispatchEvent(new CustomEvent("WebAssemblyLoaded")););
+  }
+
+  EMSCRIPTEN_KEEPALIVE
+  void SetArgument(const char* key, const char* value)
+  {
+    // This is called for each GET argument (cf. "app.js")
+    LOG(INFO) << "Received GET argument: [" << key << "] = [" << value << "]";
+    arguments_[key] = value;
+  }
+
+  EMSCRIPTEN_KEEPALIVE
+  void Initialize()
+  {
+    try
+    {
+      oracle_.SetOrthancRoot("..");
+      
+      loader_.reset(new OrthancStone::OrthancSeriesVolumeProgressiveLoader(ct_, oracle_, oracle_));
+    
+      widget1_.reset(new OrthancStone::VolumeSlicerWidget(broker_, "mycanvas1", OrthancStone::VolumeProjection_Axial));
+      {
+        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
+        style->SetLinearInterpolation(true);
+        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
+        widget1_->SetSlicer(0, loader_, *loader_, style.release());
+      }
+      widget1_->UpdateSize();
+
+      widget2_.reset(new OrthancStone::VolumeSlicerWidget(broker_, "mycanvas2", OrthancStone::VolumeProjection_Coronal));
+      {
+        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
+        style->SetLinearInterpolation(true);
+        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
+        widget2_->SetSlicer(0, loader_, *loader_, style.release());
+      }
+      widget2_->UpdateSize();
+
+      widget3_.reset(new OrthancStone::VolumeSlicerWidget(broker_, "mycanvas3", OrthancStone::VolumeProjection_Sagittal));
+      {
+        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
+        style->SetLinearInterpolation(true);
+        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
+        widget3_->SetSlicer(0, loader_, *loader_, style.release());
+      }
+      widget3_->UpdateSize();
+
+      emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnWindowResize); // DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 !!
+
+      emscripten_set_wheel_callback("#mycanvas1", widget1_.get(), false, OnMouseWheel);
+      emscripten_set_wheel_callback("#mycanvas2", widget2_.get(), false, OnMouseWheel);
+      emscripten_set_wheel_callback("#mycanvas3", widget3_.get(), false, OnMouseWheel);
+
+      emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyDown);
+      emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyUp);
+    
+      emscripten_request_animation_frame_loop(OnAnimationFrame, NULL);
+
+
+      std::string ct;
+      if (GetArgument(ct, "ct"))
+      {
+        //loader_->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");
+        loader_->LoadSeries(ct);
+      }
+      else
+      {
+        LOG(ERROR) << "No Orthanc identifier for the CT series was provided";
+      }
+    }
+    catch (Orthanc::OrthancException& e)
+    {
+      LOG(ERROR) << "Exception during Initialize(): " << e.What();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicMPR.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,60 @@
+<!doctype html>
+<html lang="en-us">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+    <!-- Disable pinch zoom on mobile devices -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <meta name="HandheldFriendly" content="true" />
+    
+    
+    <title>Stone of Orthanc</title>
+
+    <style>
+      html, body {
+      width: 100%;
+      height: 100%;
+      margin: 0px;
+      border: 0;
+      overflow: hidden; /*  Disable scrollbars */
+      display: block;  /* No floating content on sides */
+      }
+
+      #mycanvas1 {
+      position:absolute;
+      left:0%;
+      top:0%;
+      background-color: red;
+      width: 50%;
+      height: 100%;
+      }
+
+      #mycanvas2 {
+      position:absolute;
+      left:50%;
+      top:0%;
+      background-color: green;
+      width: 50%;
+      height: 50%;
+      }
+
+      #mycanvas3 {
+      position:absolute;
+      left:50%;
+      top:50%;
+      background-color: blue;
+      width: 50%;
+      height: 50%;
+      }
+    </style>
+  </head>
+  <body>
+    <canvas id="mycanvas1" oncontextmenu="return false;"></canvas>
+    <canvas id="mycanvas2" oncontextmenu="return false;"></canvas>
+    <canvas id="mycanvas3" oncontextmenu="return false;"></canvas>
+
+    <script type="text/javascript" src="app.js"></script>
+    <script type="text/javascript" async src="BasicMPR.js"></script>
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicScene.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,210 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "dev.h"
+
+#include <emscripten.h>
+#include <emscripten/html5.h>
+
+// From Stone
+#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
+#include "../../Framework/StoneInitialization.h"
+
+// From Orthanc framework
+#include <Core/Images/Image.h>
+#include <Core/Logging.h>
+#include <Core/OrthancException.h>
+
+void PrepareScene(OrthancStone::Scene2D& scene)
+{
+  using namespace OrthancStone;
+
+  // Texture of 2x2 size
+  if (1)
+  {
+    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false);
+    
+    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
+    p[0] = 255;
+    p[1] = 0;
+    p[2] = 0;
+
+    p[3] = 0;
+    p[4] = 255;
+    p[5] = 0;
+
+    p = reinterpret_cast<uint8_t*>(i.GetRow(1));
+    p[0] = 0;
+    p[1] = 0;
+    p[2] = 255;
+
+    p[3] = 255;
+    p[4] = 0;
+    p[5] = 0;
+
+    scene.SetLayer(12, new ColorTextureSceneLayer(i));
+
+    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
+    l->SetOrigin(-3, 2);
+    l->SetPixelSpacing(1.5, 1);
+    l->SetAngle(20.0 / 180.0 * M_PI);
+    scene.SetLayer(14, l.release());
+  }
+
+  // Texture of 1x1 size
+  if (1)
+  {
+    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 1, 1, false);
+    
+    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
+    p[0] = 255;
+    p[1] = 0;
+    p[2] = 0;
+
+    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
+    l->SetOrigin(-2, 1);
+    l->SetAngle(20.0 / 180.0 * M_PI);
+    scene.SetLayer(13, l.release());
+  }
+
+  // Some lines
+  if (1)
+  {
+    std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer);
+
+    layer->SetThickness(1);
+
+    PolylineSceneLayer::Chain chain;
+    chain.push_back(ScenePoint2D(0 - 0.5, 0 - 0.5));
+    chain.push_back(ScenePoint2D(0 - 0.5, 2 - 0.5));
+    chain.push_back(ScenePoint2D(2 - 0.5, 2 - 0.5));
+    chain.push_back(ScenePoint2D(2 - 0.5, 0 - 0.5));
+    layer->AddChain(chain, true, 255, 0, 0);
+
+    chain.clear();
+    chain.push_back(ScenePoint2D(-5, -5));
+    chain.push_back(ScenePoint2D(5, -5));
+    chain.push_back(ScenePoint2D(5, 5));
+    chain.push_back(ScenePoint2D(-5, 5));
+    layer->AddChain(chain, true, 0, 255, 0);
+
+    double dy = 1.01;
+    chain.clear();
+    chain.push_back(ScenePoint2D(-4, -4));
+    chain.push_back(ScenePoint2D(4, -4 + dy));
+    chain.push_back(ScenePoint2D(-4, -4 + 2.0 * dy));
+    chain.push_back(ScenePoint2D(4, 2));
+    layer->AddChain(chain, false, 0, 0, 255);
+
+    scene.SetLayer(50, layer.release());
+  }
+
+  // Some text
+  if (1)
+  {
+    std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
+    layer->SetText("Hello");
+    scene.SetLayer(100, layer.release());
+  }
+}
+
+
+std::unique_ptr<OrthancStone::WebAssemblyViewport>  viewport1_;
+std::unique_ptr<OrthancStone::WebAssemblyViewport>  viewport2_;
+std::unique_ptr<OrthancStone::WebAssemblyViewport>  viewport3_;
+boost::shared_ptr<OrthancStone::ViewportController>   controller1_;
+boost::shared_ptr<OrthancStone::ViewportController>   controller2_;
+boost::shared_ptr<OrthancStone::ViewportController>   controller3_;
+OrthancStone::MessageBroker broker_;
+
+
+EM_BOOL OnWindowResize(
+  int eventType, const EmscriptenUiEvent *uiEvent, void *userData)
+{
+  if (viewport1_.get() != NULL)
+  {
+    viewport1_->UpdateSize();
+  }
+  
+  if (viewport2_.get() != NULL)
+  {
+    viewport2_->UpdateSize();
+  }
+  
+  if (viewport3_.get() != NULL)
+  {
+    viewport3_->UpdateSize();
+  }
+  
+  return true;
+}
+
+extern "C"
+{
+  int main(int argc, char const *argv[]) 
+  {
+    OrthancStone::StoneInitialize();
+    // Orthanc::Logging::EnableInfoLevel(true);
+    // Orthanc::Logging::EnableTraceLevel(true);
+    EM_ASM(window.dispatchEvent(new CustomEvent("WebAssemblyLoaded")););
+  }
+
+  EMSCRIPTEN_KEEPALIVE
+  void Initialize()
+  {
+    viewport1_.reset(new OrthancStone::WebAssemblyViewport("mycanvas1"));
+    PrepareScene(viewport1_->GetScene());
+    viewport1_->UpdateSize();
+
+    viewport2_.reset(new OrthancStone::WebAssemblyViewport("mycanvas2"));
+    PrepareScene(viewport2_->GetScene());
+    viewport2_->UpdateSize();
+
+    viewport3_.reset(new OrthancStone::WebAssemblyViewport("mycanvas3"));
+    PrepareScene(viewport3_->GetScene());
+    viewport3_->UpdateSize();
+
+    viewport1_->GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, 
+                                        FONT_SIZE, Orthanc::Encoding_Latin1);
+    viewport2_->GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, 
+                                        FONT_SIZE, Orthanc::Encoding_Latin1);
+    viewport3_->GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, 
+                                        FONT_SIZE, Orthanc::Encoding_Latin1);
+
+    controller1_.reset(new OrthancStone::ViewportController(boost::make_shared<OrthancStone::UndoStack>(), broker_, *viewport1_));
+    controller2_.reset(new OrthancStone::ViewportController(boost::make_shared<OrthancStone::UndoStack>(), broker_, *viewport2_));
+    controller3_.reset(new OrthancStone::ViewportController(boost::make_shared<OrthancStone::UndoStack>(), broker_, *viewport3_));
+
+    controller1_->FitContent(viewport1_->GetCanvasWidth(), viewport1_->GetCanvasHeight());
+    controller2_->FitContent(viewport2_->GetCanvasWidth(), viewport2_->GetCanvasHeight());
+    controller3_->FitContent(viewport3_->GetCanvasWidth(), viewport3_->GetCanvasHeight());
+
+    viewport1_->Refresh();
+    viewport2_->Refresh();
+    viewport3_->Refresh();
+
+    SetupEvents("mycanvas1", controller1_);
+    SetupEvents("mycanvas2", controller2_);
+    SetupEvents("mycanvas3", controller3_);
+
+    emscripten_set_resize_callback("#window", NULL, false, OnWindowResize);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicScene.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,69 @@
+<!doctype html>
+<html lang="en-us">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+    <!-- Disable pinch zoom on mobile devices -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <meta name="HandheldFriendly" content="true" />
+    
+    
+    <title>Stone of Orthanc</title>
+
+    <style>
+      html, body {
+      width: 100%;
+      height: 100%;
+      margin: 0px;
+      border: 0;
+      overflow: hidden; /*  Disable scrollbars */
+      display: block;  /* No floating content on sides */
+      }
+
+      #mycanvas1 {
+      position:absolute;
+      left:0%;
+      top:0%;
+      background-color: red;
+      width: 50%;
+      height: 100%;
+      }
+
+      #mycanvas2 {
+      position:absolute;
+      left:50%;
+      top:0%;
+      background-color: green;
+      width: 50%;
+      height: 50%;
+      }
+
+      #mycanvas3 {
+      position:absolute;
+      left:50%;
+      top:50%;
+      background-color: blue;
+      width: 50%;
+      height: 50%;
+      }
+    </style>
+  </head>
+  <body>
+    <canvas id="mycanvas1" oncontextmenu="return false;"></canvas>
+    <canvas id="mycanvas2" oncontextmenu="return false;"></canvas>
+    <canvas id="mycanvas3" oncontextmenu="return false;"></canvas>
+
+    <script type="text/javascript">
+      if (!('WebAssembly' in window)) {
+      alert('Sorry, your browser does not support WebAssembly :(');
+      } else {
+      window.addEventListener('WebAssemblyLoaded', function() {
+      Module.ccall('Initialize', null, null, null);
+      });
+      }
+    </script>
+
+    <script type="text/javascript" async src="BasicScene.js"></script>
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,119 @@
+cmake_minimum_required(VERSION 2.8.3)
+
+
+#####################################################################
+## Configuration of the Emscripten compiler for WebAssembly target
+#####################################################################
+
+set(WASM_FLAGS "-s WASM=1 -s FETCH=1")
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ERROR_ON_UNDEFINED_SYMBOLS=1")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0")
+#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXIT_RUNTIME=1")
+
+#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1")
+
+
+#####################################################################
+## Configuration of the Orthanc framework
+#####################################################################
+
+# This CMake file defines the "ORTHANC_STONE_VERSION" macro, so it
+# must be the first inclusion
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/Version.cmake)
+
+if (ORTHANC_STONE_VERSION STREQUAL "mainline")
+  set(ORTHANC_FRAMEWORK_VERSION "mainline")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
+else()
+  set(ORTHANC_FRAMEWORK_VERSION "1.5.7")
+  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
+endif()
+
+set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
+set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
+set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
+
+
+#####################################################################
+## Configuration of the Stone framework
+#####################################################################
+
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneParameters.cmake)
+include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
+
+DownloadPackage(
+  "a24b8136b8f3bb93f166baf97d9328de"
+  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
+  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
+
+set(ORTHANC_STONE_APPLICATION_RESOURCES
+  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
+  )
+
+SET(ENABLE_GOOGLE_TEST OFF)
+SET(ENABLE_LOCALE ON)
+SET(ORTHANC_SANDBOXED ON)
+SET(ENABLE_WASM ON)
+
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneConfiguration.cmake)
+
+add_definitions(
+  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
+  )
+
+
+#####################################################################
+## Build the samples
+#####################################################################
+
+add_library(OrthancStone STATIC
+  ${ORTHANC_STONE_SOURCES}
+  )
+
+
+if (ON)
+  add_executable(BasicScene
+    BasicScene.cpp
+    #${CMAKE_CURRENT_LIST_DIR}/../Shared/SharedBasicScene.h
+    ${CMAKE_CURRENT_LIST_DIR}/../Shared/SharedBasicScene.cpp
+    )
+
+  target_link_libraries(BasicScene OrthancStone)
+
+  install(
+    TARGETS BasicScene
+    RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}
+    )
+endif()
+
+
+if (ON)
+  add_executable(BasicMPR
+    BasicMPR.cpp
+    )
+
+  target_link_libraries(BasicMPR OrthancStone)
+
+  install(
+    TARGETS BasicMPR
+    RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}
+    )
+endif()
+  
+
+install(
+  FILES
+  ${CMAKE_CURRENT_BINARY_DIR}/BasicMPR.wasm
+  ${CMAKE_CURRENT_BINARY_DIR}/BasicScene.wasm
+  ${CMAKE_SOURCE_DIR}/BasicMPR.html
+  ${CMAKE_SOURCE_DIR}/BasicScene.html
+  ${CMAKE_SOURCE_DIR}/Configuration.json
+  ${CMAKE_SOURCE_DIR}/app.js
+  ${CMAKE_SOURCE_DIR}/index.html
+  DESTINATION ${CMAKE_INSTALL_PREFIX}
+  )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/Configuration.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,17 @@
+{
+  "Plugins": [
+    "/usr/local/share/orthanc/plugins/libOrthancWebViewer.so",
+    "/usr/local/share/orthanc/plugins/libServeFolders.so"
+  ],
+  "StorageDirectory" : "/var/lib/orthanc/db",
+  "IndexDirectory" : "/var/lib/orthanc/db",
+  "RemoteAccessAllowed" : true,
+  "AuthenticationEnabled" : false,
+  "ServeFolders" : {
+    "AllowCache" : false,
+    "GenerateETag" : true,
+    "Folders" : {
+      "/stone" : "/root/stone"
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/ConfigurationLocalSJO.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,20 @@
+{
+  "Plugins": [
+    "/home/jodogne/Subversion/orthanc-webviewer/r/libOrthancWebViewer.so",
+    "/home/jodogne/Subversion/orthanc/r/libServeFolders.so"
+  ],
+  "StorageDirectory" : "/tmp/orthanc-db",
+  "IndexDirectory" : "/tmp/orthanc-db",
+  "RemoteAccessAllowed" : true,
+  "AuthenticationEnabled" : false,
+  "ServeFolders" : {
+    "AllowCache" : false,
+    "GenerateETag" : true,
+    "Folders" : {
+      "/stone" : "/tmp/stone"
+    }
+  },
+  "WebViewer" : {
+    "CachePath" : "/tmp/orthanc-db/WebViewerCache"
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/NOTES.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,76 @@
+Docker SJO
+==========
+
+$ source ~/Downloads/emsdk/emsdk_env.sh
+$ cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DALLOW_DOWNLOADS=ON .. -DCMAKE_INSTALL_PREFIX=/tmp/stone
+$ ninja install
+$ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/stone:/root/stone:ro -v /tmp/stone-db/:/var/lib/orthanc/db/ jodogne/orthanc-plugins:latest /root/stone/Configuration.json --verbose
+
+WARNING: This won't work using "orthanc-plugins:1.5.6", as support for
+PAM is mandatatory in "/instances/.../image-uint16".
+
+
+Docker BGO
+==========
+
+On Ubuntu WSL
+-------------
+. ~/apps/emsdk/emsdk_env.sh
+cd /mnt/c/osi/dev/
+mkdir -p build_stone_newsamples_wasm_wsl
+mkdir -p build_install_stone_newsamples_wasm_wsl
+cd build_stone_newsamples_wasm_wsl
+cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DALLOW_DOWNLOADS=ON /mnt/c/osi/dev/orthanc-stone/Samples/WebAssembly -DCMAKE_INSTALL_PREFIX=/mnt/c/osi/dev/build_install_stone_newsamples_wasm_wsl
+ninja install
+
+Then, on Windows
+-----------------
+docker run -p 4242:4242 -p 8042:8042 --rm -v "C:/osi/dev/build_install_stone_newsamples_wasm_wsl:/root/stone:ro" jodogne/orthanc-plugins:1.5.6 /root/stone/Configuration.json --verbose
+
+# WAIT A COUPLE OF SECS
+# if the archive has NOT already been unzipped, unzip it
+# upload dicom files to running orthanc
+
+cd C:\osi\dev\twiga-orthanc-viewer\demo\dicomfiles
+if (-not (test-path RTVIEWER-c8febcc6-eb9e22a4-130f208c-e0a6a4cd-4d432c57)) { unzip RTVIEWER-c8febcc6-eb9e22a4-130f208c-e0a6a4cd-4d432c57.zip}
+ImportDicomFiles.ps1 127.0.0.1 8042 .\RTVIEWER-c8febcc6-eb9e22a4-130f208c-e0a6a4cd-4d432c57\
+
+--> localhost:8042 --> Plugins --> serve-folders --> stone --> ...
+
+Local BGO
+==========
+
+. ~/apps/emsdk/emsdk_env.sh
+cd /mnt/c/osi/dev/
+mkdir -p build_stone_newsamples_wasm_wsl
+mkdir -p build_install_stone_newsamples_wasm_wsl
+cd build_stone_newsamples_wasm_wsl
+cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DALLOW_DOWNLOADS=ON /mnt/c/osi/dev/orthanc-stone/Samples/WebAssembly -DCMAKE_INSTALL_PREFIX=/mnt/c/osi/dev/build_install_stone_newsamples_wasm_wsl
+
+
+
+TODO: Orthanc.exe 
+
+
+Local SJO
+==========
+
+$ source ~/Downloads/emsdk/emsdk_env.sh
+$ cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DALLOW_DOWNLOADS=ON .. -DCMAKE_INSTALL_PREFIX=/tmp/stone
+$ ninja install
+
+$ make -C ~/Subversion/orthanc/r -j4
+$ make -C ~/Subversion/orthanc-webviewer/r -j4
+$ ~/Subversion/orthanc/r/Orthanc ../ConfigurationLocalSJO.json
+
+
+Local AM
+========
+
+. ~/apps/emsdk/emsdk_env.sh
+cd /mnt/c/o/
+mkdir -p build_stone_newsamples_wasm_wsl
+mkdir -p build_install_stone_newsamples_wasm_wsl
+cd build_stone_newsamples_wasm_wsl
+cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSDK}/fastcomp/emscripten/cmake/Modules/Platform/Emscripten.cmake -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT=/mnt/c/o/orthanc/ -DCMAKE_BUILD_TYPE=Release -DALLOW_DOWNLOADS=ON /mnt/c/o/orthanc-stone/Samples/WebAssembly -DCMAKE_INSTALL_PREFIX=/mnt/c/o/build_install_stone_newsamples_wasm_wsl
+ninja
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/app.js	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,33 @@
+/**
+ * This is a generic bootstrap code that is shared by all the Stone
+ * sample applications.
+ **/
+
+// Check support for WebAssembly
+if (!('WebAssembly' in window)) {
+  alert('Sorry, your browser does not support WebAssembly :(');
+} else {
+
+  // Wait for the module to be loaded (the event "WebAssemblyLoaded"
+  // must be emitted by the "main" function)
+  window.addEventListener('WebAssemblyLoaded', function() {
+
+    // Loop over the GET arguments
+    var parameters = window.location.search.substr(1);
+    if (parameters != null && parameters != '') {
+      var tokens = parameters.split('&');
+      for (var i = 0; i < tokens.length; i++) {
+        var arg = tokens[i].split('=');
+        if (arg.length == 2) {
+
+          // Send each GET argument to WebAssembly
+          Module.ccall('SetArgument', null, [ 'string', 'string' ],
+                       [ arg[0], decodeURIComponent(arg[1]) ]);
+        }
+      }
+    }
+
+    // Inform the WebAssembly module that it can start
+    Module.ccall('Initialize', null, null, null);
+  });
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/dev.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,202 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Framework/Viewport/WebAssemblyViewport.h"
+#include "../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../Framework/Scene2D/PanSceneTracker.h"
+#include "../../Framework/Scene2D/RotateSceneTracker.h"
+#include "../../Framework/Scene2D/ZoomSceneTracker.h"
+#include "../../Framework/Scene2DViewport/UndoStack.h"
+#include "../../Framework/Scene2DViewport/ViewportController.h"
+
+#include <Core/OrthancException.h>
+
+#include <emscripten/html5.h>
+#include <boost/make_shared.hpp>
+
+static const unsigned int FONT_SIZE = 32;
+
+namespace OrthancStone
+{
+  class ActiveTracker : public boost::noncopyable
+  {
+  private:
+    boost::shared_ptr<IFlexiblePointerTracker> tracker_;
+    std::string                             canvasIdentifier_;
+    bool                                    insideCanvas_;
+    
+  public:
+    ActiveTracker(const boost::shared_ptr<IFlexiblePointerTracker>& tracker,
+                  const std::string& canvasId) :
+      tracker_(tracker),
+      canvasIdentifier_(canvasId),
+      insideCanvas_(true)
+    {
+      if (tracker_.get() == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    bool IsAlive() const
+    {
+      return tracker_->IsAlive();
+    }
+
+    void PointerMove(const PointerEvent& event)
+    {
+      tracker_->PointerMove(event);
+    }
+
+    void PointerUp(const PointerEvent& event)
+    {
+      tracker_->PointerUp(event);
+    }
+  };
+}
+
+static OrthancStone::PointerEvent* ConvertMouseEvent(
+  const EmscriptenMouseEvent&        source,
+  OrthancStone::IViewport& viewport)
+{
+  std::unique_ptr<OrthancStone::PointerEvent> target(
+    new OrthancStone::PointerEvent);
+
+  target->AddPosition(viewport.GetPixelCenterCoordinates(
+                        source.targetX, source.targetY));
+  target->SetAltModifier(source.altKey);
+  target->SetControlModifier(source.ctrlKey);
+  target->SetShiftModifier(source.shiftKey);
+
+  return target.release();
+}
+
+std::unique_ptr<OrthancStone::ActiveTracker> tracker_;
+
+EM_BOOL OnMouseEvent(int eventType, 
+                     const EmscriptenMouseEvent *mouseEvent, 
+                     void *userData)
+{
+  if (mouseEvent != NULL &&
+      userData != NULL)
+  {
+    boost::shared_ptr<OrthancStone::ViewportController>& controller = 
+      *reinterpret_cast<boost::shared_ptr<OrthancStone::ViewportController>*>(userData);
+
+    switch (eventType)
+    {
+      case EMSCRIPTEN_EVENT_CLICK:
+      {
+        static unsigned int count = 0;
+        char buf[64];
+        sprintf(buf, "click %d", count++);
+
+        std::unique_ptr<OrthancStone::TextSceneLayer> layer(new OrthancStone::TextSceneLayer);
+        layer->SetText(buf);
+        controller->GetViewport().GetScene().SetLayer(100, layer.release());
+        controller->GetViewport().Refresh();
+        break;
+      }
+
+      case EMSCRIPTEN_EVENT_MOUSEDOWN:
+      {
+        boost::shared_ptr<OrthancStone::IFlexiblePointerTracker> t;
+
+        {
+          std::unique_ptr<OrthancStone::PointerEvent> event(
+            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
+
+          switch (mouseEvent->button)
+          {
+            case 0:  // Left button
+              emscripten_console_log("Creating RotateSceneTracker");
+              t.reset(new OrthancStone::RotateSceneTracker(
+                        controller, *event));
+              break;
+
+            case 1:  // Middle button
+              emscripten_console_log("Creating PanSceneTracker");
+              LOG(INFO) << "Creating PanSceneTracker" ;
+              t.reset(new OrthancStone::PanSceneTracker(
+                        controller, *event));
+              break;
+
+            case 2:  // Right button
+              emscripten_console_log("Creating ZoomSceneTracker");
+              t.reset(new OrthancStone::ZoomSceneTracker(
+                        controller, *event, controller->GetViewport().GetCanvasWidth()));
+              break;
+
+            default:
+              break;
+          }
+        }
+
+        if (t.get() != NULL)
+        {
+          tracker_.reset(
+            new OrthancStone::ActiveTracker(t, controller->GetViewport().GetCanvasIdentifier()));
+          controller->GetViewport().Refresh();
+        }
+
+        break;
+      }
+
+      case EMSCRIPTEN_EVENT_MOUSEMOVE:
+        if (tracker_.get() != NULL)
+        {
+          std::unique_ptr<OrthancStone::PointerEvent> event(
+            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
+          tracker_->PointerMove(*event);
+          controller->GetViewport().Refresh();
+        }
+        break;
+
+      case EMSCRIPTEN_EVENT_MOUSEUP:
+        if (tracker_.get() != NULL)
+        {
+          std::unique_ptr<OrthancStone::PointerEvent> event(
+            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
+          tracker_->PointerUp(*event);
+          controller->GetViewport().Refresh();
+          if (!tracker_->IsAlive())
+            tracker_.reset();
+        }
+        break;
+
+      default:
+        break;
+    }
+  }
+
+  return true;
+}
+
+
+void SetupEvents(const std::string& canvas,
+                 boost::shared_ptr<OrthancStone::ViewportController>& controller)
+{
+  emscripten_set_mousedown_callback(canvas.c_str(), &controller, false, OnMouseEvent);
+  emscripten_set_mousemove_callback(canvas.c_str(), &controller, false, OnMouseEvent);
+  emscripten_set_mouseup_callback(canvas.c_str(), &controller, false, OnMouseEvent);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Deprecated/Samples/WebAssembly/index.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,16 @@
+<!doctype html>
+<html lang="en-us">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+    <title>Stone of Orthanc</title>
+  </head>
+  <body>
+    <h1>Available samples</h1>
+    <ul>
+      <li><a href="BasicScene.html">Basic scene</a></li>
+      <li><a href="BasicMPR.html">Basic MPR display</a></li>
+    </ul>
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Messaging/CurlOrthancConnection.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,72 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CurlOrthancConnection.h"
+
+#if ORTHANC_ENABLE_CURL == 1
+
+#include "../../Resources/Orthanc/Core/HttpClient.h"
+#include "../../Resources/Orthanc/Core/OrthancException.h"
+
+namespace OrthancStone
+{
+  void CurlOrthancConnection::RestApiGet(std::string& result,
+                                         const std::string& uri)
+  {
+    /**
+     * TODO: This function sometimes crashes if compiled with
+     * MinGW-W64 (32 bit) in Release mode, on Windows XP. Introducing
+     * a mutex here fixes the issue. Not sure of what is the
+     * culprit. Maybe a bug in a old version of MinGW?
+     **/
+
+    Orthanc::HttpClient client(parameters_, uri);
+
+    // Don't follow 3xx HTTP (avoid redirections to "unsupported.png" in Orthanc)
+    client.SetRedirectionFollowed(false);  
+   
+    if (!client.Apply(result))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource);
+    }
+  }
+
+
+  void CurlOrthancConnection::RestApiPost(std::string& result,
+                                          const std::string& uri,
+                                          const std::string& body)
+  {
+    Orthanc::HttpClient client(parameters_, uri);
+
+    // Don't follow 3xx HTTP (avoid redirections to "unsupported.png" in Orthanc)
+    client.SetRedirectionFollowed(false);  
+
+    client.SetBody(body);
+    client.SetMethod(Orthanc::HttpMethod_Post);
+   
+    if (!client.Apply(result))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource);
+    }
+  }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Messaging/CurlOrthancConnection.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,57 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IOrthancConnection.h"
+
+#if ORTHANC_ENABLE_CURL == 1
+
+#include "../../Resources/Orthanc/Core/WebServiceParameters.h"
+
+namespace OrthancStone
+{
+  class CurlOrthancConnection : public IOrthancConnection
+  {
+  private:
+    Orthanc::WebServiceParameters  parameters_;
+
+  public:
+    CurlOrthancConnection(const Orthanc::WebServiceParameters& parameters) :
+      parameters_(parameters)
+    {
+    }
+
+    const Orthanc::WebServiceParameters& GetParameters() const
+    {
+      return parameters_;
+    }
+
+    virtual void RestApiGet(std::string& result,
+                            const std::string& uri);
+
+    virtual void RestApiPost(std::string& result,
+                             const std::string& uri,
+                             const std::string& body);
+  };
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Messaging/IOrthancConnection.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,41 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/IThreadSafety.h"
+
+#include <string>
+
+namespace OrthancStone
+{
+  // Derived classes must be thread-safe
+  class IOrthancConnection : public IThreadSafe
+  {
+  public:
+    virtual void RestApiGet(std::string& result,
+                            const std::string& uri) = 0;
+
+    virtual void RestApiPost(std::string& result,
+                             const std::string& uri,
+                             const std::string& body) = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/ReferenceLineFactory.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,137 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ReferenceLineFactory.h"
+
+#include "LineLayerRenderer.h"
+
+namespace OrthancStone
+{
+  ReferenceLineFactory::ReferenceLineFactory(SliceViewerWidget& owner,
+                                             SliceViewerWidget& sibling) :
+    owner_(owner),
+    sibling_(sibling),
+    hasLayerIndex_(false)
+  {
+    style_.SetColor(0, 255, 0);
+    slice_ = sibling.GetSlice();
+    sibling_.Register(*this);
+  }
+
+
+  void ReferenceLineFactory::NotifySliceContentChange(const SliceViewerWidget& source,
+                                               const SliceGeometry& slice)
+  {
+    if (&source == &sibling_)
+    {
+      SetSlice(slice);
+    }
+  }
+
+
+  void ReferenceLineFactory::SetLayerIndex(size_t layerIndex)
+  {
+    hasLayerIndex_ = true;
+    layerIndex_ = layerIndex;
+  }
+
+
+  void ReferenceLineFactory::SetStyle(const RenderStyle& style)
+  {
+    style_ = style;
+  }
+
+
+  RenderStyle ReferenceLineFactory::GetRenderStyle()
+  {
+    return style_;
+  }
+
+
+  void ReferenceLineFactory::SetSlice(const SliceGeometry& slice)
+  {
+    slice_ = slice;
+
+    if (hasLayerIndex_)
+    {
+      owner_.InvalidateLayer(layerIndex_);
+    }
+  }
+
+
+  ILayerRenderer* ReferenceLineFactory::CreateLayerRenderer(const SliceGeometry& viewportSlice)
+  {
+    Vector p, d;
+
+    // Compute the line of intersection between the two slices
+    if (!GeometryToolbox::IntersectTwoPlanes(p, d, 
+                                             slice_.GetOrigin(), slice_.GetNormal(),
+                                             viewportSlice.GetOrigin(), viewportSlice.GetNormal()))
+    {
+      // The two slice are parallel, don't try and display the intersection
+      return NULL;
+    }
+
+    double x1, y1, x2, y2;
+    viewportSlice.ProjectPoint(x1, y1, p);
+    viewportSlice.ProjectPoint(x2, y2, p + 1000.0 * d);
+
+    double sx1, sy1, sx2, sy2;
+    owner_.GetView().GetSceneExtent(sx1, sy1, sx2, sy2);
+        
+    if (GeometryToolbox::ClipLineToRectangle(x1, y1, x2, y2, 
+                                             x1, y1, x2, y2,
+                                             sx1, sy1, sx2, sy2))
+    {
+      std::unique_ptr<ILayerRenderer> layer(new LineLayerRenderer(x1, y1, x2, y2));
+      layer->SetLayerStyle(style_);
+      return layer.release();
+    }
+    else
+    {
+      // Parallel slices
+      return NULL;
+    }
+  }
+
+
+  ISliceableVolume& ReferenceLineFactory::GetSourceVolume() const
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+
+
+  void ReferenceLineFactory::Configure(SliceViewerWidget& a,
+                                       SliceViewerWidget& b)
+  {
+    {
+      size_t layerIndex;
+      ILayerRendererFactory& factory = a.AddLayer(layerIndex, new ReferenceLineFactory(a, b));
+      dynamic_cast<ReferenceLineFactory&>(factory).SetLayerIndex(layerIndex);
+    }
+
+    {
+      size_t layerIndex;
+      ILayerRendererFactory& factory = b.AddLayer(layerIndex, new ReferenceLineFactory(b, a));
+      dynamic_cast<ReferenceLineFactory&>(factory).SetLayerIndex(layerIndex);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/ReferenceLineFactory.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,77 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Widgets/SliceViewerWidget.h"
+
+namespace OrthancStone
+{
+  class ReferenceLineFactory : 
+    public ILayerRendererFactory,
+    public SliceViewerWidget::ISliceObserver
+  {
+  private:
+    SliceViewerWidget&   owner_;
+    SliceViewerWidget&   sibling_;
+    SliceGeometry        slice_;
+    RenderStyle          style_;
+    bool                 hasLayerIndex_;
+    size_t               layerIndex_;
+
+      
+  public:
+    ReferenceLineFactory(SliceViewerWidget& owner,
+                         SliceViewerWidget& sibling);
+
+    virtual void NotifySliceContentChange(const SliceViewerWidget& source,
+                                   const SliceGeometry& slice);
+
+    void SetLayerIndex(size_t layerIndex);
+
+    void SetStyle(const RenderStyle& style);
+
+    RenderStyle GetRenderStyle();
+
+    void SetSlice(const SliceGeometry& slice);
+
+    virtual bool GetExtent(double& x1,
+                           double& y1,
+                           double& x2,
+                           double& y2,
+                           const SliceGeometry& viewportSlice)
+    {
+      return false;
+    }
+
+    virtual ILayerRenderer* CreateLayerRenderer(const SliceGeometry& viewportSlice);
+
+    virtual bool HasSourceVolume() const
+    {
+      return false;
+    }
+
+    virtual ISliceableVolume& GetSourceVolume() const;
+
+    static void Configure(SliceViewerWidget& a,
+                          SliceViewerWidget& b);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Threading/BinarySemaphore.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,50 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "BinarySemaphore.h"
+
+namespace OrthancStone
+{
+  BinarySemaphore::BinarySemaphore() : 
+    proceed_(false)
+  {
+  }
+
+  void BinarySemaphore::Signal()
+  {
+    //boost::mutex::scoped_lock lock(mutex_);
+
+    proceed_ = true;
+    condition_.notify_one(); 
+  }
+
+  void BinarySemaphore::Wait()
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+
+    while (!proceed_)
+    {
+      condition_.wait(lock);
+    }
+
+    proceed_ = false;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Threading/BinarySemaphore.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,43 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/condition.hpp>
+
+namespace OrthancStone
+{
+  class BinarySemaphore : public boost::noncopyable
+  {
+  private:
+    bool proceed_;
+    boost::mutex mutex_;
+    boost::condition_variable condition_;
+
+  public:
+    explicit BinarySemaphore();
+
+    void Signal();
+
+    void Wait();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Threading/IThreadSafety.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,57 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/noncopyable.hpp>
+
+namespace OrthancStone
+{
+  /**
+   * Dummy interface to explicitely tag the interfaces whose derived
+   * class must be thread-safe. The different methods of such classes
+   * might be simlultaneously invoked by several threads, and should
+   * be properly protected by mutexes.
+   **/
+  class IThreadSafe : public boost::noncopyable
+  {
+  public:
+    virtual ~IThreadSafe()
+    {
+    }
+  };
+
+
+  /**
+   * Dummy interface to explicitely tag the interfaces that are NOT
+   * expected to be thread-safe. The Orthanc Stone framework ensures
+   * that at most one method of such classes will be invoked at a
+   * given time. Such classes are automatically protected by the
+   * Orthanc Stone framework wherever required.
+   **/
+  class IThreadUnsafe : public boost::noncopyable
+  {
+  public:
+    virtual ~IThreadUnsafe()
+    {
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Threading/SdlBuffering.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,134 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SdlBuffering.h"
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include "../../Resources/Orthanc/Core/Logging.h"
+#include "../../Resources/Orthanc/Core/OrthancException.h"
+
+namespace OrthancStone
+{
+  SdlBuffering::SdlBuffering() :
+    sdlSurface_(NULL),
+    pendingFrame_(false)
+  {
+  }
+
+
+  SdlBuffering::~SdlBuffering()
+  {
+    if (sdlSurface_)
+    {
+      SDL_FreeSurface(sdlSurface_);
+    }
+  }
+
+
+  void SdlBuffering::SetSize(unsigned int width,
+                             unsigned int height,
+                             IViewport& viewport)
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+
+    viewport.SetSize(width, height);
+
+    if (offscreenSurface_.get() == NULL ||
+        offscreenSurface_->GetWidth() != width ||
+        offscreenSurface_->GetHeight() != height)
+    {
+      offscreenSurface_.reset(new CairoSurface(width, height));
+    }
+
+    if (onscreenSurface_.get() == NULL ||
+        onscreenSurface_->GetWidth() != width ||
+        onscreenSurface_->GetHeight() != height)
+    {
+      onscreenSurface_.reset(new CairoSurface(width, height));
+
+      // TODO Big endian?
+      static const uint32_t rmask = 0x00ff0000;
+      static const uint32_t gmask = 0x0000ff00;
+      static const uint32_t bmask = 0x000000ff;
+
+      if (sdlSurface_)
+      {
+        SDL_FreeSurface(sdlSurface_);
+      }
+
+      sdlSurface_ = SDL_CreateRGBSurfaceFrom(onscreenSurface_->GetBuffer(), width, height, 32,
+                                             onscreenSurface_->GetPitch(), rmask, gmask, bmask, 0);
+      if (!sdlSurface_)
+      {
+        LOG(ERROR) << "Cannot create a SDL surface from a Cairo surface";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }    
+    }
+
+    pendingFrame_ = false;
+  }
+
+
+  bool SdlBuffering::RenderOffscreen(IViewport& viewport)
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+
+    if (offscreenSurface_.get() == NULL)
+    {
+      return false;
+    }
+
+    Orthanc::ImageAccessor target = offscreenSurface_->GetAccessor();
+
+    if (viewport.Render(target) &&
+        !pendingFrame_)
+    {
+      pendingFrame_ = true;
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+  void SdlBuffering::SwapToScreen(SdlWindow& window)
+  {
+    if (!pendingFrame_ ||
+        offscreenSurface_.get() == NULL ||
+        onscreenSurface_.get() == NULL)
+    {
+      return;
+    }
+
+    {
+      boost::mutex::scoped_lock lock(mutex_);
+      onscreenSurface_->Copy(*offscreenSurface_);
+    }
+    
+    window.Render(sdlSurface_);
+    pendingFrame_ = false;
+  }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Threading/SdlBuffering.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,60 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include "SdlWindow.h"
+#include "../../Framework/Viewport/CairoSurface.h"
+#include "../../Framework/Viewport/IViewport.h"
+
+#include <boost/thread/mutex.hpp>
+
+namespace OrthancStone
+{
+  class SdlBuffering : public boost::noncopyable
+  {
+  private:
+    boost::mutex                 mutex_;
+    std::unique_ptr<CairoSurface>  offscreenSurface_;
+    std::unique_ptr<CairoSurface>  onscreenSurface_;
+    SDL_Surface*                 sdlSurface_;
+    bool                         pendingFrame_;
+
+  public:
+    SdlBuffering();
+
+    ~SdlBuffering();
+
+    void SetSize(unsigned int width,
+                 unsigned int height,
+                 IViewport& viewport);
+
+    // Returns "true" if a new refresh of the display should be
+    // triggered afterwards
+    bool RenderOffscreen(IViewport& viewport);
+
+    void SwapToScreen(SdlWindow& window);
+  };
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Threading/SharedValue.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/noncopyable.hpp>
+#include <boost/thread/mutex.hpp>
+
+namespace OrthancStone
+{
+  // A value that is protected by a mutex, in order to be shared by
+  // multiple threads
+  template <typename T>
+  class SharedValue : public boost::noncopyable
+  {
+  private:
+    boost::mutex   mutex_;
+    T              value_;
+    
+  public:
+    class Locker : public boost::noncopyable
+    {
+    private:
+      boost::mutex::scoped_lock  lock_;
+      T&                         value_;
+
+    public:
+      Locker(SharedValue& shared) :
+        lock_(shared.mutex_),
+        value_(shared.value_)
+      {
+      }
+
+      T& GetValue() const
+      {
+        return value_;
+      }
+    };
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Toolbox/DicomDataset.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,304 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomDataset.h"
+
+#include "../../Resources/Orthanc/Core/OrthancException.h"
+#include "../../Resources/Orthanc/Core/Logging.h"
+#include "../../Resources/Orthanc/Core/Toolbox.h"
+
+#include <boost/lexical_cast.hpp>
+#include <json/value.h>
+#include <json/reader.h>
+
+namespace OrthancStone
+{
+  static uint16_t GetCharValue(char c)
+  {
+    if (c >= '0' && c <= '9')
+      return c - '0';
+    else if (c >= 'a' && c <= 'f')
+      return c - 'a' + 10;
+    else if (c >= 'A' && c <= 'F')
+      return c - 'A' + 10;
+    else
+      return 0;
+  }
+
+
+  static uint16_t GetHexadecimalValue(const char* c)
+  {
+    return ((GetCharValue(c[0]) << 12) + 
+            (GetCharValue(c[1]) << 8) + 
+            (GetCharValue(c[2]) << 4) + 
+            GetCharValue(c[3]));
+  }
+
+
+  static DicomDataset::Tag ParseTag(const std::string& tag)
+  {
+    if (tag.size() == 9 &&
+        isxdigit(tag[0]) &&
+        isxdigit(tag[1]) &&
+        isxdigit(tag[2]) &&
+        isxdigit(tag[3]) &&
+        (tag[4] == '-' || tag[4] == ',') &&
+        isxdigit(tag[5]) &&
+        isxdigit(tag[6]) &&
+        isxdigit(tag[7]) &&
+        isxdigit(tag[8]))        
+    {
+      uint16_t group = GetHexadecimalValue(tag.c_str());
+      uint16_t element = GetHexadecimalValue(tag.c_str() + 5);
+      return std::make_pair(group, element);
+    }
+    else if (tag.size() == 8 &&
+             isxdigit(tag[0]) &&
+             isxdigit(tag[1]) &&
+             isxdigit(tag[2]) &&
+             isxdigit(tag[3]) &&
+             isxdigit(tag[4]) &&
+             isxdigit(tag[5]) &&
+             isxdigit(tag[6]) &&
+             isxdigit(tag[7]))        
+    {
+      uint16_t group = GetHexadecimalValue(tag.c_str());
+      uint16_t element = GetHexadecimalValue(tag.c_str() + 4);
+      return std::make_pair(group, element);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
+    }
+  }
+
+  void DicomDataset::Parse(const std::string& content)
+  {
+    Json::Value json;
+    Json::Reader reader;
+    if (!reader.parse(content, json))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
+    }
+
+    Parse(json);
+  }
+
+
+  void DicomDataset::Parse(const Json::Value& content)
+  {
+    if (content.type() != Json::objectValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
+    }
+
+    Json::Value::Members members = content.getMemberNames();
+    for (size_t i = 0; i < members.size(); i++)
+    {
+      Tag tag = ParseTag(members[i]);
+
+      const Json::Value& item = content[members[i]];
+
+      if (item.type() != Json::objectValue ||
+          !item.isMember("Type") ||
+          !item.isMember("Value") ||
+          !item.isMember("Name") ||
+          item["Type"].type() != Json::stringValue ||
+          item["Name"].type() != Json::stringValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
+      }
+
+      if (item["Type"].asString() == "String")
+      {
+        if (item["Value"].type() == Json::stringValue)
+        {
+          values_[tag] = item["Value"].asString();
+        }
+        else
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
+        }
+      }
+    }
+  }
+
+
+  DicomDataset::DicomDataset(OrthancPlugins::IOrthancConnection& orthanc,
+                             const std::string& instanceId)
+  {
+    std::string content;
+    orthanc.RestApiGet(content, "/instances/" + instanceId + "/tags");
+
+    Parse(content);
+  }
+
+
+  std::string DicomDataset::GetStringValue(const Tag& tag) const
+  {
+    Values::const_iterator it = values_.find(tag);
+
+    if (it == values_.end())
+    {
+      LOG(ERROR) << "Trying to access a DICOM tag that is not set in a DICOM dataset";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem);
+    }
+    else
+    {
+      return it->second;
+    }
+  }
+
+
+  std::string DicomDataset::GetStringValue(const Tag& tag,
+                                           const std::string& defaultValue) const
+  {
+    Values::const_iterator it = values_.find(tag);
+
+    if (it == values_.end())
+    {
+      return defaultValue;
+    }
+    else
+    {
+      return it->second;
+    }
+  }
+
+
+  float DicomDataset::GetFloatValue(const Tag& tag) const
+  {
+    try 
+    {
+      return boost::lexical_cast<float>(Orthanc::Toolbox::StripSpaces(GetStringValue(tag)));
+    }
+    catch (boost::bad_lexical_cast&)
+    {
+      LOG(ERROR) << "Trying to access a DICOM tag that is not a float";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  double DicomDataset::GetDoubleValue(const Tag& tag) const
+  {
+    try 
+    {
+      return boost::lexical_cast<double>(Orthanc::Toolbox::StripSpaces(GetStringValue(tag)));
+    }
+    catch (boost::bad_lexical_cast&)
+    {
+      LOG(ERROR) << "Trying to access a DICOM tag that is not a float";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  int DicomDataset::GetIntegerValue(const Tag& tag) const
+  {
+    try 
+    {
+      return boost::lexical_cast<int>(Orthanc::Toolbox::StripSpaces(GetStringValue(tag)));
+    }
+    catch (boost::bad_lexical_cast&)
+    {
+      LOG(ERROR) << "Trying to access a DICOM tag that is not an integer";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  unsigned int DicomDataset::GetUnsignedIntegerValue(const Tag& tag) const
+  {
+    int v = GetIntegerValue(tag);
+
+    if (v < 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    else
+    {
+      return static_cast<unsigned int>(v);
+    }
+  }
+
+
+  void DicomDataset::GetVectorValue(Vector& vector, 
+                                    const Tag& tag) const
+  {
+    if (!GeometryToolbox::ParseVector(vector, Orthanc::Toolbox::StripSpaces(GetStringValue(tag))))
+    {
+      LOG(ERROR) << "Trying to access a DICOM tag that is not a vector";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  void DicomDataset::GetVectorValue(Vector& vector, 
+                                    const Tag& tag,
+                                    size_t expectedSize) const
+  {
+    GetVectorValue(vector, tag);
+
+    if (vector.size() != expectedSize)
+    {
+      LOG(ERROR) << "A vector in a DICOM tag has a bad size";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  void DicomDataset::Print() const
+  {
+    for (Values::const_iterator it = values_.begin(); it != values_.end(); ++it)
+    {
+      printf("%04x,%04x = [%s]\n", it->first.first, it->first.second, it->second.c_str());
+    }
+    printf("\n");
+  }
+
+
+  bool DicomDataset::IsGrayscale() const
+  {
+    std::string photometric = Orthanc::Toolbox::StripSpaces(GetStringValue(DICOM_TAG_PHOTOMETRIC_INTERPRETATION));
+
+    return (photometric == "MONOCHROME1" ||
+            photometric == "MONOCHROME2");
+  }
+
+
+  void DicomDataset::GetPixelSpacing(double& spacingX,
+                                     double& spacingY) const
+  {
+    if (HasTag(DICOM_TAG_PIXEL_SPACING))
+    {
+      Vector spacing;
+      GetVectorValue(spacing, DICOM_TAG_PIXEL_SPACING, 2);
+      spacingX = spacing[0];
+      spacingY = spacing[1];
+    }
+    else
+    {
+      spacingX = 1.0;
+      spacingY = 1.0;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Graveyard/Toolbox/DicomDataset.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,109 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Resources/Orthanc/Plugins/Samples/Common/IOrthancConnection.h"
+
+#include <map>
+#include <stdint.h>
+#include <json/value.h>
+
+namespace OrthancStone
+{
+  // This class is NOT thread-safe
+  // This is a lightweight alternative to Orthanc::DicomMap
+  class DicomDataset : public boost::noncopyable
+  {
+  public:
+    typedef std::pair<uint16_t, uint16_t>  Tag;
+
+  private:
+    typedef std::map<Tag, std::string>  Values;
+
+    Values  values_;
+
+    void Parse(const std::string& content);
+
+    void Parse(const Json::Value& content);
+
+  public:
+    DicomDataset(const std::string& content)
+    {
+      Parse(content);
+    }
+
+    DicomDataset(const Json::Value& content)
+    {
+      Parse(content);
+    }
+
+    DicomDataset(OrthancPlugins::IOrthancConnection& orthanc,
+                 const std::string& instanceId);
+
+    bool HasTag(const Tag& tag) const
+    {
+      return values_.find(tag) != values_.end();
+    }
+
+    std::string GetStringValue(const Tag& tag) const;
+
+    std::string GetStringValue(const Tag& tag,
+                               const std::string& defaultValue) const;
+
+    float GetFloatValue(const Tag& tag) const;
+
+    double GetDoubleValue(const Tag& tag) const;
+
+    int GetIntegerValue(const Tag& tag) const;
+
+    unsigned int GetUnsignedIntegerValue(const Tag& tag) const;
+
+    void GetVectorValue(Vector& vector, 
+                        const Tag& tag,
+                        size_t expectedSize) const;
+
+    void GetVectorValue(Vector& vector, 
+                        const Tag& tag) const;
+
+    void Print() const;
+
+    bool IsGrayscale() const;
+
+    void GetPixelSpacing(double& spacingX,
+                         double& spacingY) const;
+  };
+
+
+  static const DicomDataset::Tag DICOM_TAG_COLUMNS(0x0028, 0x0011);
+  static const DicomDataset::Tag DICOM_TAG_IMAGE_ORIENTATION_PATIENT(0x0020, 0x0037);
+  static const DicomDataset::Tag DICOM_TAG_IMAGE_POSITION_PATIENT(0x0020, 0x0032);
+  static const DicomDataset::Tag DICOM_TAG_NUMBER_OF_FRAMES(0x0028, 0x0008);
+  static const DicomDataset::Tag DICOM_TAG_PIXEL_REPRESENTATION(0x0028, 0x0103);
+  static const DicomDataset::Tag DICOM_TAG_PIXEL_SPACING(0x0028, 0x0030);
+  static const DicomDataset::Tag DICOM_TAG_RESCALE_INTERCEPT(0x0028, 0x1052);
+  static const DicomDataset::Tag DICOM_TAG_RESCALE_SLOPE(0x0028, 0x1053);
+  static const DicomDataset::Tag DICOM_TAG_ROWS(0x0028, 0x0010);
+  static const DicomDataset::Tag DICOM_TAG_SLICE_THICKNESS(0x0018, 0x0050);
+  static const DicomDataset::Tag DICOM_TAG_WINDOW_CENTER(0x0028, 0x1050);
+  static const DicomDataset::Tag DICOM_TAG_WINDOW_WIDTH(0x0028, 0x1051);
+  static const DicomDataset::Tag DICOM_TAG_PHOTOMETRIC_INTERPRETATION(0x0028, 0x0004);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/CMake/AutoGeneratedCode.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+set(EMBED_RESOURCES_PYTHON "${CMAKE_CURRENT_LIST_DIR}/../EmbedResources.py"
+  CACHE INTERNAL "Path to the EmbedResources.py script from Orthanc")
+set(AUTOGENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/AUTOGENERATED")
+set(AUTOGENERATED_SOURCES)
+
+file(MAKE_DIRECTORY ${AUTOGENERATED_DIR})
+include_directories(${AUTOGENERATED_DIR})
+
+macro(EmbedResources)
+  # Convert a semicolon separated list to a whitespace separated string
+  set(SCRIPT_OPTIONS)
+  set(SCRIPT_ARGUMENTS)
+  set(DEPENDENCIES)
+  set(IS_PATH_NAME false)
+
+  set(TARGET_BASE "${AUTOGENERATED_DIR}/EmbeddedResources")
+
+  # Loop over the arguments of the function
+  foreach(arg ${ARGN})
+    # Extract the first character of the argument
+    string(SUBSTRING "${arg}" 0 1 FIRST_CHAR)
+    if (${FIRST_CHAR} STREQUAL "-")
+      # If the argument starts with a dash "-", this is an option to
+      # EmbedResources.py
+      if (${arg} MATCHES "--target=.*")
+        # Does the argument starts with "--target="?
+        string(SUBSTRING "${arg}" 9 -1 TARGET)  # 9 is the length of "--target="
+        set(TARGET_BASE "${AUTOGENERATED_DIR}/${TARGET}")
+      else()
+        list(APPEND SCRIPT_OPTIONS ${arg})
+      endif()
+    else()
+      if (${IS_PATH_NAME})
+        list(APPEND SCRIPT_ARGUMENTS "${arg}")
+        list(APPEND DEPENDENCIES "${arg}")
+        set(IS_PATH_NAME false)
+      else()
+        list(APPEND SCRIPT_ARGUMENTS "${arg}")
+        set(IS_PATH_NAME true)
+      endif()
+    endif()
+  endforeach()
+
+  add_custom_command(
+    OUTPUT
+    "${TARGET_BASE}.h"
+    "${TARGET_BASE}.cpp"
+    COMMAND ${PYTHON_EXECUTABLE} ${EMBED_RESOURCES_PYTHON}
+            ${SCRIPT_OPTIONS} "${TARGET_BASE}" ${SCRIPT_ARGUMENTS}
+    DEPENDS
+    ${EMBED_RESOURCES_PYTHON}
+    ${DEPENDENCIES}
+    )
+
+  list(APPEND AUTOGENERATED_SOURCES
+    "${TARGET_BASE}.cpp"
+    ) 
+endmacro()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/CMake/Compiler.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,243 @@
+# This file sets all the compiler-related flags
+
+
+# Save the current compiler flags to the cache every time cmake configures the project
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "compiler flags" FORCE)
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "compiler flags" FORCE)
+
+
+include(CheckLibraryExists)
+
+if ((CMAKE_CROSSCOMPILING AND NOT
+      "${CMAKE_SYSTEM_VERSION}" STREQUAL "CrossToolNg") OR    
+    "${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase")
+  # Cross-compilation necessarily implies standalone and static build
+  SET(STATIC_BUILD ON)
+  SET(STANDALONE_BUILD ON)
+endif()
+
+
+if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase")
+  # Cache the environment variables "LSB_CC" and "LSB_CXX" for further
+  # use by "ExternalProject" in CMake
+  SET(CMAKE_LSB_CC $ENV{LSB_CC} CACHE STRING "")
+  SET(CMAKE_LSB_CXX $ENV{LSB_CXX} CACHE STRING "")
+endif()
+
+
+if (CMAKE_COMPILER_IS_GNUCXX)
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-long-long")
+
+  # --std=c99 makes libcurl not to compile
+  # -pedantic gives a lot of warnings on OpenSSL 
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -Wno-variadic-macros")
+
+  if (CMAKE_CROSSCOMPILING)
+    # http://stackoverflow.com/a/3543845/881731
+    set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff -I<CMAKE_CURRENT_SOURCE_DIR> <SOURCE> <OBJECT>")
+  endif()
+
+elseif (MSVC)
+  # Use static runtime under Visual Studio
+  # http://www.cmake.org/Wiki/CMake_FAQ#Dynamic_Replace
+  # http://stackoverflow.com/a/6510446
+  foreach(flag_var
+    CMAKE_C_FLAGS_DEBUG
+    CMAKE_CXX_FLAGS_DEBUG
+    CMAKE_C_FLAGS_RELEASE 
+    CMAKE_CXX_FLAGS_RELEASE
+    CMAKE_C_FLAGS_MINSIZEREL 
+    CMAKE_CXX_FLAGS_MINSIZEREL 
+    CMAKE_C_FLAGS_RELWITHDEBINFO 
+    CMAKE_CXX_FLAGS_RELWITHDEBINFO) 
+    string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
+    string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}")
+  endforeach(flag_var)
+
+  # Add /Zm256 compiler option to Visual Studio to fix PCH errors
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zm256")
+
+  # New in Orthanc 1.5.5
+  if (MSVC_MULTIPLE_PROCESSES)
+    # "If you omit the processMax argument in the /MP option, the
+    # compiler obtains the number of effective processors from the
+    # operating system, and then creates one process per effective
+    # processor"
+    # https://blog.kitware.com/cmake-building-with-all-your-cores/
+    # https://docs.microsoft.com/en-us/cpp/build/reference/mp-build-with-multiple-processes
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
+  endif()
+    
+  add_definitions(
+    -D_CRT_SECURE_NO_WARNINGS=1
+    -D_CRT_SECURE_NO_DEPRECATE=1
+    )
+
+  if (MSVC_VERSION LESS 1600)
+    # Starting with Visual Studio >= 2010 (i.e. macro _MSC_VER >=
+    # 1600), Microsoft ships a standard-compliant <stdint.h>
+    # header. For earlier versions of Visual Studio, give access to a
+    # compatibility header.
+    # http://stackoverflow.com/a/70630/881731
+    # https://en.wikibooks.org/wiki/C_Programming/C_Reference/stdint.h#External_links
+    include_directories(${CMAKE_CURRENT_LIST_DIR}/../../Resources/ThirdParty/VisualStudio)
+  endif()
+
+  link_libraries(netapi32)
+endif()
+
+
+if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
+    ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
+  # In FreeBSD/OpenBSD, the "/usr/local/" folder contains the ports and need to be imported
+  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/usr/local/include")
+  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/local/include")
+  SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib")
+  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L/usr/local/lib")
+endif()
+
+
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR
+    ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR
+    ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
+    ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
+
+  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" AND
+      NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
+    # The "--no-undefined" linker flag makes the shared libraries
+    # (plugins ModalityWorklists and ServeFolders) fail to compile on
+    # OpenBSD, and make the PostgreSQL plugin complain about missing
+    # "environ" global variable in FreeBSD
+    set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-undefined")
+    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
+  endif()
+
+  # Remove the "-rdynamic" option
+  # http://www.mail-archive.com/cmake@cmake.org/msg08837.html
+  set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
+  link_libraries(pthread)
+
+  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
+    link_libraries(rt)
+  endif()
+
+  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND
+      NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
+    link_libraries(dl)
+  endif()
+
+  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND
+      NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
+    # The "--as-needed" linker flag is not available on FreeBSD and OpenBSD
+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
+    set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed")
+    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed")
+  endif()
+
+  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND
+      NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
+    # FreeBSD/OpenBSD have just one single interface for file
+    # handling, which is 64bit clean, so there is no need to define macro
+    # for LFS (Large File Support).
+    # https://ohse.de/uwe/articles/lfs.html
+    add_definitions(
+      -D_LARGEFILE64_SOURCE=1 
+      -D_FILE_OFFSET_BITS=64
+      )
+  endif()
+
+elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+  if (MSVC)
+    message("MSVC compiler version = " ${MSVC_VERSION} "\n")
+    # Starting Visual Studio 2013 (version 1800), it is not possible
+    # to target Windows XP anymore
+    if (MSVC_VERSION LESS 1800)
+      add_definitions(
+        -DWINVER=0x0501
+        -D_WIN32_WINNT=0x0501
+        )
+    endif()
+  else()
+    add_definitions(
+      -DWINVER=0x0501
+      -D_WIN32_WINNT=0x0501
+      )
+  endif()
+
+  add_definitions(
+    -D_CRT_SECURE_NO_WARNINGS=1
+    )
+  link_libraries(rpcrt4 ws2_32)
+
+  if (CMAKE_COMPILER_IS_GNUCXX)
+    # Some additional C/C++ compiler flags for MinGW
+    SET(MINGW_NO_WARNINGS "-Wno-unused-function -Wno-unused-variable")
+    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MINGW_NO_WARNINGS} -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast")
+    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MINGW_NO_WARNINGS}")
+
+    if (DYNAMIC_MINGW_STDLIB)
+    else()
+      # This is a patch for MinGW64
+      SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++")
+      SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++")
+    endif()
+
+    CHECK_LIBRARY_EXISTS(winpthread pthread_create "" HAVE_WIN_PTHREAD)
+    if (HAVE_WIN_PTHREAD)
+      if (DYNAMIC_MINGW_STDLIB)
+      else()
+        # This line is necessary to compile with recent versions of MinGW,
+        # otherwise "libwinpthread-1.dll" is not statically linked.
+        SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic")
+      endif()
+      add_definitions(-DHAVE_WIN_PTHREAD=1)
+    else()
+      add_definitions(-DHAVE_WIN_PTHREAD=0)
+    endif()
+  endif()
+
+elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
+  add_definitions(
+    -D_XOPEN_SOURCE=1
+    )
+  link_libraries(iconv)
+
+elseif (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+  message("Building using Emscripten (for WebAssembly or asm.js targets)")
+  include(${CMAKE_CURRENT_LIST_DIR}/EmscriptenParameters.cmake)
+  
+elseif (CMAKE_SYSTEM_NAME STREQUAL "Android")
+
+else()
+  message("Unknown target platform: ${CMAKE_SYSTEM_NAME}")
+  message(FATAL_ERROR "Support your platform here")
+endif()
+
+
+if (DEFINED ENABLE_PROFILING AND ENABLE_PROFILING)
+  if (CMAKE_COMPILER_IS_GNUCXX)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg")
+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg")
+    set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -pg")
+    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg")
+  else()
+    message(FATAL_ERROR "Don't know how to enable profiling on your configuration")
+  endif()
+endif()
+
+
+if (CMAKE_COMPILER_IS_GNUCXX)
+  # "When creating a static library using binutils (ar) and there
+  # exist a duplicate object name (e.g. a/Foo.cpp.o, b/Foo.cpp.o), the
+  # resulting static library can end up having only one of the
+  # duplicate objects. [...] This bug only happens if there are many
+  # objects." The trick consists in replacing the "r" argument
+  # ("replace") provided to "ar" (as used in CMake < 3.1) by the "q"
+  # argument ("quick append"). This is because of the fact that CMake
+  # will invoke "ar" several times with several batches of ".o"
+  # objects, and using "r" would overwrite symbols defined in
+  # preceding batches. https://cmake.org/Bug/view.php?id=14874
+  set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> <LINK_FLAGS> q <TARGET> <OBJECTS>")
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,535 @@
+# Orthanc - A Lightweight, RESTful DICOM Store
+# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+# Department, University Hospital of Liege, Belgium
+# Copyright (C) 2017-2020 Osimis S.A., Belgium
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# In addition, as a special exception, the copyright holders of this
+# program give permission to link the code of its release with the
+# OpenSSL project's "OpenSSL" library (or with modified versions of it
+# that use the same license as the "OpenSSL" library), and distribute
+# the linked executables. You must obey the GNU General Public License
+# in all respects for all of the code used other than "OpenSSL". If you
+# modify file(s) with this exception, you may extend this exception to
+# your version of the file(s), but you are not obligated to do so. If
+# you do not wish to do so, delete this exception statement from your
+# version. If you delete this exception statement from all source files
+# in the program, then also delete it here.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+
+##
+## Check whether the parent script sets the mandatory variables
+##
+
+if (NOT DEFINED ORTHANC_FRAMEWORK_SOURCE OR
+    (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system" AND
+     NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" AND
+     NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "web" AND
+     NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" AND
+     NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "path"))
+  message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_SOURCE must be set to \"system\", \"hg\", \"web\", \"archive\" or \"path\"")
+endif()
+
+
+##
+## Detection of the requested version
+##
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR
+    ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR
+    ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
+  if (NOT DEFINED ORTHANC_FRAMEWORK_VERSION)
+    message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_VERSION must be set")
+  endif()
+
+  if (DEFINED ORTHANC_FRAMEWORK_MAJOR OR
+      DEFINED ORTHANC_FRAMEWORK_MINOR OR
+      DEFINED ORTHANC_FRAMEWORK_REVISION OR
+      DEFINED ORTHANC_FRAMEWORK_MD5)
+    message(FATAL_ERROR "Some internal variable has been set")
+  endif()
+
+  set(ORTHANC_FRAMEWORK_MD5 "")
+
+  if (NOT DEFINED ORTHANC_FRAMEWORK_BRANCH)
+    if (ORTHANC_FRAMEWORK_VERSION STREQUAL "mainline")
+      set(ORTHANC_FRAMEWORK_BRANCH "default")
+      set(ORTHANC_FRAMEWORK_MAJOR 999)
+      set(ORTHANC_FRAMEWORK_MINOR 999)
+      set(ORTHANC_FRAMEWORK_REVISION 999)
+
+    else()
+      set(ORTHANC_FRAMEWORK_BRANCH "Orthanc-${ORTHANC_FRAMEWORK_VERSION}")
+
+      set(RE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$")
+      string(REGEX REPLACE ${RE} "\\1" ORTHANC_FRAMEWORK_MAJOR ${ORTHANC_FRAMEWORK_VERSION})
+      string(REGEX REPLACE ${RE} "\\2" ORTHANC_FRAMEWORK_MINOR ${ORTHANC_FRAMEWORK_VERSION})
+      string(REGEX REPLACE ${RE} "\\3" ORTHANC_FRAMEWORK_REVISION ${ORTHANC_FRAMEWORK_VERSION})
+
+      if (NOT ORTHANC_FRAMEWORK_MAJOR MATCHES "^[0-9]+$" OR
+          NOT ORTHANC_FRAMEWORK_MINOR MATCHES "^[0-9]+$" OR
+          NOT ORTHANC_FRAMEWORK_REVISION MATCHES "^[0-9]+$")
+        message("Bad version of the Orthanc framework: ${ORTHANC_FRAMEWORK_VERSION}")
+      endif()
+
+      if (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.3.1")
+        set(ORTHANC_FRAMEWORK_MD5 "dac95bd6cf86fb19deaf4e612961f378")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.3.2")
+        set(ORTHANC_FRAMEWORK_MD5 "d0ccdf68e855d8224331f13774992750")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.4.0")
+        set(ORTHANC_FRAMEWORK_MD5 "81e15f34d97ac32bbd7d26e85698835a")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.4.1")
+        set(ORTHANC_FRAMEWORK_MD5 "9b6f6114264b17ed421b574cd6476127")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.4.2")
+        set(ORTHANC_FRAMEWORK_MD5 "d1ee84927dcf668e60eb5868d24b9394")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.0")
+        set(ORTHANC_FRAMEWORK_MD5 "4429d8d9dea4ff6648df80ec3c64d79e")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.1")
+        set(ORTHANC_FRAMEWORK_MD5 "099671538865e5da96208b37494d6718")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.2")
+        set(ORTHANC_FRAMEWORK_MD5 "8867050f3e9a1ce6157c1ea7a9433b1b")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.3")
+        set(ORTHANC_FRAMEWORK_MD5 "bf2f5ed1adb8b0fc5f10d278e68e1dfe")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.4")
+        set(ORTHANC_FRAMEWORK_MD5 "404baef5d4c43e7c5d9410edda8ef5a5")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.5")
+        set(ORTHANC_FRAMEWORK_MD5 "cfc437e0687ae4bd725fd93dc1f08bc4")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.6")
+        set(ORTHANC_FRAMEWORK_MD5 "3c29de1e289b5472342947168f0105c0")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.7")
+        set(ORTHANC_FRAMEWORK_MD5 "e1b76f01116d9b5d4ac8cc39980560e3")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.8")
+        set(ORTHANC_FRAMEWORK_MD5 "82323e8c49a667f658a3639ea4dbc336")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.6.0")
+        set(ORTHANC_FRAMEWORK_MD5 "eab428d6e53f61e847fa360bb17ebe25")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.6.1")
+        set(ORTHANC_FRAMEWORK_MD5 "3971f5de96ba71dc9d3f3690afeaa7c0")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.7.0")
+        set(ORTHANC_FRAMEWORK_MD5 "ce5f689e852b01d3672bd3d2f952a5ef")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.7.1")
+        set(ORTHANC_FRAMEWORK_MD5 "3c171217f930abe80246997bdbcaf7cc")
+
+      # Below this point are development snapshots that were used to
+      # release some plugin, before an official release of the Orthanc
+      # framework was available. Here is the command to be used to
+      # generate a proper archive:
+      #
+      #   $ hg archive /tmp/Orthanc-`hg id -i | sed 's/\+//'`.tar.gz
+      #
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "ae0e3fd609df")
+        # DICOMweb 1.1 (framework pre-1.6.0)
+        set(ORTHANC_FRAMEWORK_MD5 "7e09e9b530a2f527854f0b782d7e0645")
+      endif()
+    endif()
+  endif()
+
+elseif (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
+  message("Using the Orthanc framework from a path of the filesystem. Assuming mainline version.")
+  set(ORTHANC_FRAMEWORK_MAJOR 999)
+  set(ORTHANC_FRAMEWORK_MINOR 999)
+  set(ORTHANC_FRAMEWORK_REVISION 999)
+endif()
+
+
+
+##
+## Detection of the third-party software
+##
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg")
+  find_program(ORTHANC_FRAMEWORK_HG hg)
+  
+  if (${ORTHANC_FRAMEWORK_HG} MATCHES "ORTHANC_FRAMEWORK_HG-NOTFOUND")
+    message(FATAL_ERROR "Please install Mercurial")
+  endif()
+endif()
+
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR
+    ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
+  if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
+    find_program(ORTHANC_FRAMEWORK_7ZIP 7z 
+      PATHS 
+      "$ENV{ProgramFiles}/7-Zip"
+      "$ENV{ProgramW6432}/7-Zip"
+      )
+
+    if (${ORTHANC_FRAMEWORK_7ZIP} MATCHES "ORTHANC_FRAMEWORK_7ZIP-NOTFOUND")
+      message(FATAL_ERROR "Please install the '7-zip' software (http://www.7-zip.org/)")
+    endif()
+
+  else()
+    find_program(ORTHANC_FRAMEWORK_TAR tar)
+    if (${ORTHANC_FRAMEWORK_TAR} MATCHES "ORTHANC_FRAMEWORK_TAR-NOTFOUND")
+      message(FATAL_ERROR "Please install the 'tar' package")
+    endif()
+  endif()
+endif()
+
+
+
+##
+## Case of the Orthanc framework specified as a path on the filesystem
+##
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "path")
+  if (NOT DEFINED ORTHANC_FRAMEWORK_ROOT)
+    message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_ROOT must provide the path to the sources of Orthanc")
+  endif()
+  
+  if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT})
+    message(FATAL_ERROR "Non-existing directory: ${ORTHANC_FRAMEWORK_ROOT}")
+  endif()
+  
+  if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
+    message(FATAL_ERROR "Directory not containing the source code of the Orthanc framework: ${ORTHANC_FRAMEWORK_ROOT}")
+  endif()
+endif()
+
+
+
+##
+## Case of the Orthanc framework cloned using Mercurial
+##
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg")
+  if (NOT STATIC_BUILD AND NOT ALLOW_DOWNLOADS)
+    message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON")
+  endif()
+
+  set(ORTHANC_ROOT ${CMAKE_BINARY_DIR}/orthanc)
+
+  if (EXISTS ${ORTHANC_ROOT})
+    message("Updating the Orthanc source repository using Mercurial")
+    execute_process(
+      COMMAND ${ORTHANC_FRAMEWORK_HG} pull
+      WORKING_DIRECTORY ${ORTHANC_ROOT}
+      RESULT_VARIABLE Failure
+      )    
+  else()
+    message("Forking the Orthanc source repository using Mercurial")
+    execute_process(
+      COMMAND ${ORTHANC_FRAMEWORK_HG} clone "https://hg.orthanc-server.com/orthanc/"
+      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      RESULT_VARIABLE Failure
+      )    
+  endif()
+
+  if (Failure OR NOT EXISTS ${ORTHANC_ROOT})
+    message(FATAL_ERROR "Cannot fork the Orthanc repository")
+  endif()
+
+  message("Setting branch of the Orthanc repository to: ${ORTHANC_FRAMEWORK_BRANCH}")
+
+  execute_process(
+    COMMAND ${ORTHANC_FRAMEWORK_HG} update -c ${ORTHANC_FRAMEWORK_BRANCH}
+    WORKING_DIRECTORY ${ORTHANC_ROOT}
+    RESULT_VARIABLE Failure
+    )
+
+  if (Failure)
+    message(FATAL_ERROR "Error while running Mercurial")
+  endif()
+
+  unset(ORTHANC_FRAMEWORK_ROOT CACHE)
+  set(ORTHANC_FRAMEWORK_ROOT "${ORTHANC_ROOT}/OrthancFramework" CACHE
+    STRING "Path to the Orthanc framework source directory")
+
+  if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
+    message(FATAL_ERROR "Directory not containing the source code of the Orthanc framework: ${ORTHANC_ROOT}")
+  endif()
+
+  unset(ORTHANC_ROOT)
+endif()
+
+
+
+##
+## Case of the Orthanc framework provided as a source archive on the
+## filesystem
+##
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive")
+  if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE)
+    message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_ARCHIVE must provide the path to the sources of Orthanc")
+  endif()
+endif()
+
+
+
+##
+## Case of the Orthanc framework downloaded from the Web
+##
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
+  if (DEFINED ORTHANC_FRAMEWORK_URL)
+    string(REGEX REPLACE "^.*/" "" ORTHANC_FRAMEMORK_FILENAME "${ORTHANC_FRAMEWORK_URL}")
+  else()
+    # Default case: Download from the official Web site
+    set(ORTHANC_FRAMEMORK_FILENAME Orthanc-${ORTHANC_FRAMEWORK_VERSION}.tar.gz)
+    set(ORTHANC_FRAMEWORK_URL "http://orthanc.osimis.io/ThirdPartyDownloads/orthanc-framework/${ORTHANC_FRAMEMORK_FILENAME}")
+  endif()
+
+  set(ORTHANC_FRAMEWORK_ARCHIVE "${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${ORTHANC_FRAMEMORK_FILENAME}")
+
+  if (NOT EXISTS "${ORTHANC_FRAMEWORK_ARCHIVE}")
+    if (NOT STATIC_BUILD AND NOT ALLOW_DOWNLOADS)
+      message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON")
+    endif()
+
+    message("Downloading: ${ORTHANC_FRAMEWORK_URL}")
+
+    file(DOWNLOAD
+      "${ORTHANC_FRAMEWORK_URL}" "${ORTHANC_FRAMEWORK_ARCHIVE}" 
+      SHOW_PROGRESS EXPECTED_MD5 "${ORTHANC_FRAMEWORK_MD5}"
+      TIMEOUT 60
+      INACTIVITY_TIMEOUT 60
+      )
+  else()
+    message("Using local copy of: ${ORTHANC_FRAMEWORK_URL}")
+  endif()  
+endif()
+
+
+
+
+##
+## Uncompressing the Orthanc framework, if it was retrieved from a
+## source archive on the filesystem, or from the official Web site
+##
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR
+    ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
+
+  if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE OR
+      NOT DEFINED ORTHANC_FRAMEWORK_VERSION OR
+      NOT DEFINED ORTHANC_FRAMEWORK_MD5)
+    message(FATAL_ERROR "Internal error")
+  endif()
+
+  if (ORTHANC_FRAMEWORK_MD5 STREQUAL "")
+    message(FATAL_ERROR "Unknown release of Orthanc: ${ORTHANC_FRAMEWORK_VERSION}")
+  endif()
+
+  file(MD5 ${ORTHANC_FRAMEWORK_ARCHIVE} ActualMD5)
+
+  if (NOT "${ActualMD5}" STREQUAL "${ORTHANC_FRAMEWORK_MD5}")
+    message(FATAL_ERROR "The MD5 hash of the Orthanc archive is invalid: ${ORTHANC_FRAMEWORK_ARCHIVE}")
+  endif()
+
+  set(ORTHANC_ROOT "${CMAKE_BINARY_DIR}/Orthanc-${ORTHANC_FRAMEWORK_VERSION}")
+
+  if (NOT IS_DIRECTORY "${ORTHANC_ROOT}")
+    if (NOT ORTHANC_FRAMEWORK_ARCHIVE MATCHES ".tar.gz$")
+      message(FATAL_ERROR "Archive should have the \".tar.gz\" extension: ${ORTHANC_FRAMEWORK_ARCHIVE}")
+    endif()
+    
+    message("Uncompressing: ${ORTHANC_FRAMEWORK_ARCHIVE}")
+
+    if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
+      # How to silently extract files using 7-zip
+      # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly
+
+      execute_process(
+        COMMAND ${ORTHANC_FRAMEWORK_7ZIP} e -y ${ORTHANC_FRAMEWORK_ARCHIVE}
+        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+        RESULT_VARIABLE Failure
+        OUTPUT_QUIET
+        )
+      
+      if (Failure)
+        message(FATAL_ERROR "Error while running the uncompression tool")
+      endif()
+
+      get_filename_component(TMP_FILENAME "${ORTHANC_FRAMEWORK_ARCHIVE}" NAME)
+      string(REGEX REPLACE ".gz$" "" TMP_FILENAME2 "${TMP_FILENAME}")
+
+      execute_process(
+        COMMAND ${ORTHANC_FRAMEWORK_7ZIP} x -y ${TMP_FILENAME2}
+        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+        RESULT_VARIABLE Failure
+        OUTPUT_QUIET
+        )
+
+    else()
+      execute_process(
+        COMMAND sh -c "${ORTHANC_FRAMEWORK_TAR} xfz ${ORTHANC_FRAMEWORK_ARCHIVE}"
+        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+        RESULT_VARIABLE Failure
+        )
+    endif()
+   
+    if (Failure)
+      message(FATAL_ERROR "Error while running the uncompression tool")
+    endif()
+
+    if (NOT IS_DIRECTORY "${ORTHANC_ROOT}")
+      message(FATAL_ERROR "The Orthanc framework was not uncompressed at the proper location. Check the CMake instructions.")
+    endif()
+  endif()
+
+  unset(ORTHANC_FRAMEWORK_ROOT CACHE)
+  set(ORTHANC_FRAMEWORK_ROOT "${ORTHANC_ROOT}/OrthancFramework" CACHE
+    STRING "Path to the Orthanc framework source directory")
+
+  if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
+    message(FATAL_ERROR "Directory not containing the source code of the Orthanc framework: ${ORTHANC_ROOT}")
+  endif()
+
+  unset(ORTHANC_ROOT)
+endif()
+
+
+
+##
+## Case of the Orthanc framework installed as a shared library in a
+## GNU/Linux distribution (typically Debian). New in Orthanc 1.7.2.
+##
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
+  set(ORTHANC_FRAMEWORK_LIBDIR "" CACHE PATH "")
+
+  if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND
+      CMAKE_COMPILER_IS_GNUCXX) # MinGW
+    set(DYNAMIC_MINGW_STDLIB ON)   # Disable static linking against libc (to throw exceptions)
+    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++")
+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++")
+  endif()
+  
+  include(CheckIncludeFile)
+  include(CheckIncludeFileCXX)
+  include(FindPythonInterp)
+  include(${CMAKE_CURRENT_LIST_DIR}/Compiler.cmake)
+  include(${CMAKE_CURRENT_LIST_DIR}/DownloadPackage.cmake)
+  include(${CMAKE_CURRENT_LIST_DIR}/AutoGeneratedCode.cmake)
+  set(EMBED_RESOURCES_PYTHON ${CMAKE_CURRENT_LIST_DIR}/EmbedResources.py)
+
+  if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" OR
+      ORTHANC_FRAMEWORK_STATIC)
+    include_directories(${ORTHANC_FRAMEWORK_ROOT}/..)
+  else()
+    # Look for mandatory dependency JsonCpp (cf. JsonCppConfiguration.cmake)
+    find_path(JSONCPP_INCLUDE_DIR json/reader.h
+      /usr/include/jsoncpp
+      /usr/local/include/jsoncpp
+      )
+
+    message("JsonCpp include dir: ${JSONCPP_INCLUDE_DIR}")
+    include_directories(${JSONCPP_INCLUDE_DIR})
+    link_libraries(jsoncpp)
+
+    CHECK_INCLUDE_FILE_CXX(${JSONCPP_INCLUDE_DIR}/json/reader.h HAVE_JSONCPP_H)
+    if (NOT HAVE_JSONCPP_H)
+      message(FATAL_ERROR "Please install the libjsoncpp-dev package")
+    endif()
+
+    # Look for mandatory dependency Boost (cf. BoostConfiguration.cmake)
+    include(FindBoost)
+    find_package(Boost COMPONENTS filesystem thread system date_time regex ${ORTHANC_BOOST_COMPONENTS})
+
+    if (NOT Boost_FOUND)
+      message(FATAL_ERROR "Unable to locate Boost on this system")
+    endif()
+    
+    include_directories(${Boost_INCLUDE_DIRS})
+    link_libraries(${Boost_LIBRARIES})
+
+    # Optional component - Lua
+    if (ENABLE_LUA)
+      include(FindLua)
+
+      if (NOT LUA_FOUND)
+        message(FATAL_ERROR "Please install the liblua-dev package")
+      endif()
+
+      include_directories(${LUA_INCLUDE_DIR})
+      link_libraries(${LUA_LIBRARIES})
+    endif()
+
+    # Optional component - SQLite
+    if (ENABLE_SQLITE)    
+      CHECK_INCLUDE_FILE(sqlite3.h HAVE_SQLITE_H)
+      if (NOT HAVE_SQLITE_H)
+        message(FATAL_ERROR "Please install the libsqlite3-dev package")
+      endif()
+      link_libraries(sqlite3)
+    endif()
+
+    # Optional component - Pugixml
+    if (ENABLE_PUGIXML)
+      CHECK_INCLUDE_FILE_CXX(pugixml.hpp HAVE_PUGIXML_H)
+      if (NOT HAVE_PUGIXML_H)
+        message(FATAL_ERROR "Please install the libpugixml-dev package")
+      endif()      
+      link_libraries(pugixml)
+    endif()
+
+    # Optional component - DCMTK
+    if (ENABLE_DCMTK)
+      include(FindDCMTK)
+      include_directories(${DCMTK_INCLUDE_DIRS})
+      link_libraries(${DCMTK_LIBRARIES})
+    endif()
+  endif()
+
+  # Look for Orthanc framework shared library
+  include(CheckCXXSymbolExists)
+
+  if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
+    set(ORTHANC_FRAMEWORK_INCLUDE_DIR ${ORTHANC_FRAMEWORK_ROOT})
+  else()
+    find_path(ORTHANC_FRAMEWORK_INCLUDE_DIR OrthancFramework.h
+      /usr/include/orthanc-framework
+      /usr/local/include/orthanc-framework
+      ${ORTHANC_FRAMEWORK_ROOT}
+      )
+  endif()
+
+  if (${ORTHANC_FRAMEWORK_INCLUDE_DIR} STREQUAL "ORTHANC_FRAMEWORK_INCLUDE_DIR-NOTFOUND")
+    message(FATAL_ERROR "Cannot locate the OrthancFramework.h header")
+  endif()
+  
+  message("Orthanc framework include dir: ${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
+  include_directories(${ORTHANC_FRAMEWORK_INCLUDE_DIR})
+  
+  if ("${ORTHANC_FRAMEWORK_LIBDIR}" STREQUAL "")
+    set(ORTHANC_FRAMEWORK_LIBRARIES OrthancFramework)
+  else()
+    if (MSVC)
+      set(Suffix ".lib")
+      set(Prefix "")
+    else()
+      list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix)
+      list(GET CMAKE_FIND_LIBRARY_SUFFIXES 0 Suffix)
+    endif()
+    set(ORTHANC_FRAMEWORK_LIBRARIES ${ORTHANC_FRAMEWORK_LIBDIR}/${Prefix}OrthancFramework${Suffix})
+  endif()
+
+  set(CMAKE_REQUIRED_INCLUDES "${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
+  set(CMAKE_REQUIRED_LIBRARIES "${ORTHANC_FRAMEWORK_LIBRARIES}")
+  
+  check_cxx_symbol_exists("Orthanc::InitializeFramework" "OrthancFramework.h" HAVE_ORTHANC_FRAMEWORK)
+  if (NOT HAVE_ORTHANC_FRAMEWORK)
+    message(FATAL_ERROR "Cannot find the Orthanc framework")
+  endif()
+
+  unset(CMAKE_REQUIRED_INCLUDES)
+  unset(CMAKE_REQUIRED_LIBRARIES)
+  
+  if (NOT "${ORTHANC_FRAMEWORK_ROOT}" STREQUAL "")
+    include_directories(${ORTHANC_FRAMEWORK_ROOT})
+  endif()
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/CMake/DownloadPackage.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,258 @@
+macro(GetUrlFilename TargetVariable Url)
+  string(REGEX REPLACE "^.*/" "" ${TargetVariable} "${Url}")
+endmacro()
+
+
+macro(GetUrlExtension TargetVariable Url)
+  #string(REGEX REPLACE "^.*/[^.]*\\." "" TMP "${Url}")
+  string(REGEX REPLACE "^.*\\." "" TMP "${Url}")
+  string(TOLOWER "${TMP}" "${TargetVariable}")
+endmacro()
+
+
+
+##
+## Setup the patch command-line tool
+##
+
+if (NOT ORTHANC_DISABLE_PATCH)
+  if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
+    set(PATCH_EXECUTABLE ${CMAKE_CURRENT_LIST_DIR}/../ThirdParty/patch/patch.exe)
+    if (NOT EXISTS ${PATCH_EXECUTABLE})
+      message(FATAL_ERROR "Unable to find the patch.exe tool that is shipped with Orthanc")
+    endif()
+
+  else ()
+    find_program(PATCH_EXECUTABLE patch)
+    if (${PATCH_EXECUTABLE} MATCHES "PATCH_EXECUTABLE-NOTFOUND")
+      message(FATAL_ERROR "Please install the 'patch' standard command-line tool")
+    endif()
+  endif()
+endif()
+
+
+
+##
+## Check the existence of the required decompression tools
+##
+
+if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
+  find_program(ZIP_EXECUTABLE 7z 
+    PATHS 
+    "$ENV{ProgramFiles}/7-Zip"
+    "$ENV{ProgramW6432}/7-Zip"
+    )
+
+  if (${ZIP_EXECUTABLE} MATCHES "ZIP_EXECUTABLE-NOTFOUND")
+    message(FATAL_ERROR "Please install the '7-zip' software (http://www.7-zip.org/)")
+  endif()
+
+else()
+  find_program(UNZIP_EXECUTABLE unzip)
+  if (${UNZIP_EXECUTABLE} MATCHES "UNZIP_EXECUTABLE-NOTFOUND")
+    message(FATAL_ERROR "Please install the 'unzip' package")
+  endif()
+
+  find_program(TAR_EXECUTABLE tar)
+  if (${TAR_EXECUTABLE} MATCHES "TAR_EXECUTABLE-NOTFOUND")
+    message(FATAL_ERROR "Please install the 'tar' package")
+  endif()
+
+  find_program(GUNZIP_EXECUTABLE gunzip)
+  if (${GUNZIP_EXECUTABLE} MATCHES "GUNZIP_EXECUTABLE-NOTFOUND")
+    message(FATAL_ERROR "Please install the 'gzip' package")
+  endif()
+endif()
+
+
+macro(DownloadFile MD5 Url)
+  GetUrlFilename(TMP_FILENAME "${Url}")
+
+  set(TMP_PATH "${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${TMP_FILENAME}")
+  if (NOT EXISTS "${TMP_PATH}")
+    message("Downloading ${Url}")
+
+    # This fixes issue 6: "I think cmake shouldn't download the
+    # packages which are not in the system, it should stop and let
+    # user know."
+    # https://code.google.com/p/orthanc/issues/detail?id=6
+    if (NOT STATIC_BUILD AND NOT ALLOW_DOWNLOADS)
+      message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON")
+    endif()
+
+    if ("${MD5}" STREQUAL "no-check")
+      message(WARNING "Not checking the MD5 of: ${Url}")
+      file(DOWNLOAD "${Url}" "${TMP_PATH}"
+        SHOW_PROGRESS TIMEOUT 300 INACTIVITY_TIMEOUT 60
+        STATUS Failure)
+    else()
+      file(DOWNLOAD "${Url}" "${TMP_PATH}"
+        SHOW_PROGRESS TIMEOUT 300 INACTIVITY_TIMEOUT 60
+        EXPECTED_MD5 "${MD5}" STATUS Failure)
+    endif()
+
+    list(GET Failure 0 Status)
+    if (NOT Status EQUAL 0)
+      message(FATAL_ERROR "Cannot download file: ${Url}")
+    endif()
+    
+  else()
+    message("Using local copy of ${Url}")
+
+    if ("${MD5}" STREQUAL "no-check")
+      message(WARNING "Not checking the MD5 of: ${Url}")
+    else()
+      file(MD5 ${TMP_PATH} ActualMD5)
+      if (NOT "${ActualMD5}" STREQUAL "${MD5}")
+        message(FATAL_ERROR "The MD5 hash of a previously download file is invalid: ${TMP_PATH}")
+      endif()
+    endif()
+  endif()
+endmacro()
+
+
+macro(DownloadPackage MD5 Url TargetDirectory)
+  if (NOT IS_DIRECTORY "${TargetDirectory}")
+    DownloadFile("${MD5}" "${Url}")
+    
+    GetUrlExtension(TMP_EXTENSION "${Url}")
+    #message(${TMP_EXTENSION})
+    message("Uncompressing ${TMP_FILENAME}")
+
+    if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
+      # How to silently extract files using 7-zip
+      # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly
+
+      if (("${TMP_EXTENSION}" STREQUAL "gz") OR 
+          ("${TMP_EXTENSION}" STREQUAL "tgz") OR
+          ("${TMP_EXTENSION}" STREQUAL "xz"))
+        execute_process(
+          COMMAND ${ZIP_EXECUTABLE} e -y ${TMP_PATH}
+          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+          RESULT_VARIABLE Failure
+          OUTPUT_QUIET
+          )
+
+        if (Failure)
+          message(FATAL_ERROR "Error while running the uncompression tool")
+        endif()
+
+        if ("${TMP_EXTENSION}" STREQUAL "tgz")
+          string(REGEX REPLACE ".tgz$" ".tar" TMP_FILENAME2 "${TMP_FILENAME}")
+        elseif ("${TMP_EXTENSION}" STREQUAL "gz")
+          string(REGEX REPLACE ".gz$" "" TMP_FILENAME2 "${TMP_FILENAME}")
+        elseif ("${TMP_EXTENSION}" STREQUAL "xz")
+          string(REGEX REPLACE ".xz" "" TMP_FILENAME2 "${TMP_FILENAME}")
+        endif()
+
+        execute_process(
+          COMMAND ${ZIP_EXECUTABLE} x -y ${TMP_FILENAME2}
+          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+          RESULT_VARIABLE Failure
+          OUTPUT_QUIET
+          )
+      elseif ("${TMP_EXTENSION}" STREQUAL "zip")
+        execute_process(
+          COMMAND ${ZIP_EXECUTABLE} x -y ${TMP_PATH}
+          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+          RESULT_VARIABLE Failure
+          OUTPUT_QUIET
+          )
+      else()
+        message(FATAL_ERROR "Unsupported package extension: ${TMP_EXTENSION}")
+      endif()
+
+    else()
+      if ("${TMP_EXTENSION}" STREQUAL "zip")
+        execute_process(
+          COMMAND sh -c "${UNZIP_EXECUTABLE} -q ${TMP_PATH}"
+          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+          RESULT_VARIABLE Failure
+        )
+      elseif (("${TMP_EXTENSION}" STREQUAL "gz") OR ("${TMP_EXTENSION}" STREQUAL "tgz"))
+        #message("tar xvfz ${TMP_PATH}")
+        execute_process(
+          COMMAND sh -c "${TAR_EXECUTABLE} xfz ${TMP_PATH}"
+          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+          RESULT_VARIABLE Failure
+          )
+      elseif ("${TMP_EXTENSION}" STREQUAL "bz2")
+        execute_process(
+          COMMAND sh -c "${TAR_EXECUTABLE} xfj ${TMP_PATH}"
+          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+          RESULT_VARIABLE Failure
+          )
+      elseif ("${TMP_EXTENSION}" STREQUAL "xz")
+        execute_process(
+          COMMAND sh -c "${TAR_EXECUTABLE} xf ${TMP_PATH}"
+          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+          RESULT_VARIABLE Failure
+          )
+      else()
+        message(FATAL_ERROR "Unsupported package extension: ${TMP_EXTENSION}")
+      endif()
+    endif()
+   
+    if (Failure)
+      message(FATAL_ERROR "Error while running the uncompression tool")
+    endif()
+
+    if (NOT IS_DIRECTORY "${TargetDirectory}")
+      message(FATAL_ERROR "The package was not uncompressed at the proper location. Check the CMake instructions.")
+    endif()
+  endif()
+endmacro()
+
+
+
+macro(DownloadCompressedFile MD5 Url TargetFile)
+  if (NOT EXISTS "${TargetFile}")
+    DownloadFile("${MD5}" "${Url}")
+    
+    GetUrlExtension(TMP_EXTENSION "${Url}")
+    #message(${TMP_EXTENSION})
+    message("Uncompressing ${TMP_FILENAME}")
+
+    if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
+      # How to silently extract files using 7-zip
+      # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly
+
+      if ("${TMP_EXTENSION}" STREQUAL "gz")
+        execute_process(
+          # "-so" writes uncompressed file to stdout
+          COMMAND ${ZIP_EXECUTABLE} e -so -y ${TMP_PATH}
+          OUTPUT_FILE "${TargetFile}"
+          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+          RESULT_VARIABLE Failure
+          OUTPUT_QUIET
+          )
+
+        if (Failure)
+          message(FATAL_ERROR "Error while running the uncompression tool")
+        endif()
+
+      else()
+        message(FATAL_ERROR "Unsupported file extension: ${TMP_EXTENSION}")
+      endif()
+
+    else()
+      if ("${TMP_EXTENSION}" STREQUAL "gz")
+        execute_process(
+          COMMAND sh -c "${GUNZIP_EXECUTABLE} -c ${TMP_PATH}"
+          OUTPUT_FILE "${TargetFile}"
+          RESULT_VARIABLE Failure
+          )
+      else()
+        message(FATAL_ERROR "Unsupported file extension: ${TMP_EXTENSION}")
+      endif()
+    endif()
+   
+    if (Failure)
+      message(FATAL_ERROR "Error while running the uncompression tool")
+    endif()
+
+    if (NOT EXISTS "${TargetFile}")
+      message(FATAL_ERROR "The file was not uncompressed at the proper location. Check the CMake instructions.")
+    endif()
+  endif()
+endmacro()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/CMake/EmbedResources.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,455 @@
+#!/usr/bin/python
+
+# Orthanc - A Lightweight, RESTful DICOM Store
+# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+# Department, University Hospital of Liege, Belgium
+# Copyright (C) 2017-2020 Osimis S.A., Belgium
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# In addition, as a special exception, the copyright holders of this
+# program give permission to link the code of its release with the
+# OpenSSL project's "OpenSSL" library (or with modified versions of it
+# that use the same license as the "OpenSSL" library), and distribute
+# the linked executables. You must obey the GNU General Public License
+# in all respects for all of the code used other than "OpenSSL". If you
+# modify file(s) with this exception, you may extend this exception to
+# your version of the file(s), but you are not obligated to do so. If
+# you do not wish to do so, delete this exception statement from your
+# version. If you delete this exception statement from all source files
+# in the program, then also delete it here.
+# 
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+import sys
+import os
+import os.path
+import pprint
+import re
+
+UPCASE_CHECK = True
+USE_SYSTEM_EXCEPTION = False
+EXCEPTION_CLASS = 'OrthancException'
+OUT_OF_RANGE_EXCEPTION = '::Orthanc::OrthancException(::Orthanc::ErrorCode_ParameterOutOfRange)'
+INEXISTENT_PATH_EXCEPTION = '::Orthanc::OrthancException(::Orthanc::ErrorCode_InexistentItem)'
+NAMESPACE = 'Orthanc.EmbeddedResources'
+FRAMEWORK_PATH = None
+
+ARGS = []
+for i in range(len(sys.argv)):
+    if not sys.argv[i].startswith('--'):
+        ARGS.append(sys.argv[i])
+    elif sys.argv[i].lower() == '--no-upcase-check':
+        UPCASE_CHECK = False
+    elif sys.argv[i].lower() == '--system-exception':
+        USE_SYSTEM_EXCEPTION = True
+        EXCEPTION_CLASS = '::std::runtime_error'
+        OUT_OF_RANGE_EXCEPTION = '%s("Parameter out of range")' % EXCEPTION_CLASS
+        INEXISTENT_PATH_EXCEPTION = '%s("Unknown path in a directory resource")' % EXCEPTION_CLASS
+    elif sys.argv[i].startswith('--namespace='):
+        NAMESPACE = sys.argv[i][sys.argv[i].find('=') + 1 : ]
+    elif sys.argv[i].startswith('--framework-path='):
+        FRAMEWORK_PATH = sys.argv[i][sys.argv[i].find('=') + 1 : ]
+
+if len(ARGS) < 2 or len(ARGS) % 2 != 0:
+    print ('Usage:')
+    print ('python %s [--no-upcase-check] [--system-exception] [--namespace=<Namespace>] <TargetBaseFilename> [ <Name> <Source> ]*' % sys.argv[0])
+    exit(-1)
+
+TARGET_BASE_FILENAME = ARGS[1]
+SOURCES = ARGS[2:]
+
+try:
+    # Make sure the destination directory exists
+    os.makedirs(os.path.normpath(os.path.join(TARGET_BASE_FILENAME, '..')))
+except:
+    pass
+
+
+#####################################################################
+## Read each resource file
+#####################################################################
+
+def CheckNoUpcase(s):
+    global UPCASE_CHECK
+    if (UPCASE_CHECK and
+        re.search('[A-Z]', s) != None):
+        raise Exception("Path in a directory with an upcase letter: %s" % s)
+
+resources = {}
+
+counter = 0
+i = 0
+while i < len(SOURCES):
+    resourceName = SOURCES[i].upper()
+    pathName = SOURCES[i + 1]
+
+    if not os.path.exists(pathName):
+        raise Exception("Non existing path: %s" % pathName)
+
+    if resourceName in resources:
+        raise Exception("Twice the same resource: " + resourceName)
+    
+    if os.path.isdir(pathName):
+        # The resource is a directory: Recursively explore its files
+        content = {}
+        for root, dirs, files in os.walk(pathName):
+            dirs.sort()
+            files.sort()
+            base = os.path.relpath(root, pathName)
+
+            # Fix issue #24 (Build fails on OSX when directory has .DS_Store files):
+            # Ignore folders whose name starts with a dot (".")
+            if base.find('/.') != -1:
+                print('Ignoring folder: %s' % root)
+                continue
+
+            for f in files:
+                if f.find('~') == -1:  # Ignore Emacs backup files
+                    if base == '.':
+                        r = f
+                    else:
+                        r = os.path.join(base, f)
+
+                    CheckNoUpcase(r)
+                    r = '/' + r.replace('\\', '/')
+                    if r in content:
+                        raise Exception("Twice the same filename (check case): " + r)
+
+                    content[r] = {
+                        'Filename' : os.path.join(root, f),
+                        'Index' : counter
+                        }
+                    counter += 1
+
+        resources[resourceName] = {
+            'Type' : 'Directory',
+            'Files' : content
+            }
+
+    elif os.path.isfile(pathName):
+        resources[resourceName] = {
+            'Type' : 'File',
+            'Index' : counter,
+            'Filename' : pathName
+            }
+        counter += 1
+
+    else:
+        raise Exception("Not a regular file, nor a directory: " + pathName)
+
+    i += 2
+
+#pprint.pprint(resources)
+
+
+#####################################################################
+## Write .h header
+#####################################################################
+
+header = open(TARGET_BASE_FILENAME + '.h', 'w')
+
+header.write("""
+#pragma once
+
+#include <string>
+#include <list>
+
+#if defined(_MSC_VER)
+#  pragma warning(disable: 4065)  // "Switch statement contains 'default' but no 'case' labels"
+#endif
+
+""")
+
+
+for ns in NAMESPACE.split('.'):
+    header.write('namespace %s {\n' % ns)
+    
+
+header.write("""
+    enum FileResourceId
+    {
+""")
+
+isFirst = True
+for name in resources:
+    if resources[name]['Type'] == 'File':
+        if isFirst:
+            isFirst = False
+        else:    
+            header.write(',\n')
+        header.write('      %s' % name)
+
+header.write("""
+    };
+
+    enum DirectoryResourceId
+    {
+""")
+
+isFirst = True
+for name in resources:
+    if resources[name]['Type'] == 'Directory':
+        if isFirst:
+            isFirst = False
+        else:    
+            header.write(',\n')
+        header.write('      %s' % name)
+
+header.write("""
+    };
+
+    const void* GetFileResourceBuffer(FileResourceId id);
+    size_t GetFileResourceSize(FileResourceId id);
+    void GetFileResource(std::string& result, FileResourceId id);
+
+    const void* GetDirectoryResourceBuffer(DirectoryResourceId id, const char* path);
+    size_t GetDirectoryResourceSize(DirectoryResourceId id, const char* path);
+    void GetDirectoryResource(std::string& result, DirectoryResourceId id, const char* path);
+
+    void ListResources(std::list<std::string>& result, DirectoryResourceId id);
+
+""")
+
+
+for ns in NAMESPACE.split('.'):
+    header.write('}\n')
+
+header.close()
+
+
+
+#####################################################################
+## Write the resource content in the .cpp source
+#####################################################################
+
+PYTHON_MAJOR_VERSION = sys.version_info[0]
+
+def WriteResource(cpp, item):
+    cpp.write('    static const uint8_t resource%dBuffer[] = {' % item['Index'])
+
+    f = open(item['Filename'], "rb")
+    content = f.read()
+    f.close()
+
+    # http://stackoverflow.com/a/1035360
+    pos = 0
+    buffer = []  # instead of appending a few bytes at a time to the cpp file, 
+                 # we first append each chunk to a list, join it and write it 
+                 # to the file.  We've measured that it was 2-3 times faster in python3.
+                 # Note that speed is important since if generation is too slow,
+                 # cmake might try to compile the EmbeddedResources.cpp file while it is
+                 # still being generated !
+    for b in content:
+        if PYTHON_MAJOR_VERSION == 2:
+            c = ord(b[0])
+        else:
+            c = b
+
+        if pos > 0:
+            buffer.append(",")
+
+        if (pos % 16) == 0:
+            buffer.append("\n")
+
+        if c < 0:
+            raise Exception("Internal error")
+
+        buffer.append("0x%02x" % c)
+        pos += 1
+
+    cpp.write("".join(buffer))
+    # Zero-size array are disallowed, so we put one single void character in it.
+    if pos == 0:
+        cpp.write('  0')
+
+    cpp.write('  };\n')
+    cpp.write('    static const size_t resource%dSize = %d;\n' % (item['Index'], pos))
+
+
+cpp = open(TARGET_BASE_FILENAME + '.cpp', 'w')
+
+cpp.write('#include "%s.h"\n' % os.path.basename(TARGET_BASE_FILENAME))
+
+if USE_SYSTEM_EXCEPTION:
+    cpp.write('#include <stdexcept>')
+elif FRAMEWORK_PATH != None:
+    cpp.write('#include "%s/OrthancException.h"' % FRAMEWORK_PATH)
+else:
+    cpp.write('#include <OrthancException.h>')
+
+cpp.write("""
+#include <stdint.h>
+#include <string.h>
+
+""")
+
+for ns in NAMESPACE.split('.'):
+    cpp.write('namespace %s {\n' % ns)
+
+
+for name in resources:
+    if resources[name]['Type'] == 'File':
+        WriteResource(cpp, resources[name])
+    else:
+        for f in resources[name]['Files']:
+            WriteResource(cpp, resources[name]['Files'][f])
+
+
+
+#####################################################################
+## Write the accessors to the file resources in .cpp
+#####################################################################
+
+cpp.write("""
+    const void* GetFileResourceBuffer(FileResourceId id)
+    {
+      switch (id)
+      {
+""")
+for name in resources:
+    if resources[name]['Type'] == 'File':
+        cpp.write('      case %s:\n' % name)
+        cpp.write('        return resource%dBuffer;\n' % resources[name]['Index'])
+
+cpp.write("""
+      default:
+        throw %s;
+      }
+    }
+
+    size_t GetFileResourceSize(FileResourceId id)
+    {
+      switch (id)
+      {
+""" % OUT_OF_RANGE_EXCEPTION)
+
+for name in resources:
+    if resources[name]['Type'] == 'File':
+        cpp.write('      case %s:\n' % name)
+        cpp.write('        return resource%dSize;\n' % resources[name]['Index'])
+
+cpp.write("""
+      default:
+        throw %s;
+      }
+    }
+""" % OUT_OF_RANGE_EXCEPTION)
+
+
+
+#####################################################################
+## Write the accessors to the directory resources in .cpp
+#####################################################################
+
+cpp.write("""
+    const void* GetDirectoryResourceBuffer(DirectoryResourceId id, const char* path)
+    {
+      switch (id)
+      {
+""")
+
+for name in resources:
+    if resources[name]['Type'] == 'Directory':
+        cpp.write('      case %s:\n' % name)
+        isFirst = True
+        for path in resources[name]['Files']:
+            cpp.write('        if (!strcmp(path, "%s"))\n' % path)
+            cpp.write('          return resource%dBuffer;\n' % resources[name]['Files'][path]['Index'])
+        cpp.write('        throw %s;\n\n' % INEXISTENT_PATH_EXCEPTION)
+
+cpp.write("""      default:
+        throw %s;
+      }
+    }
+
+    size_t GetDirectoryResourceSize(DirectoryResourceId id, const char* path)
+    {
+      switch (id)
+      {
+""" % OUT_OF_RANGE_EXCEPTION)
+
+for name in resources:
+    if resources[name]['Type'] == 'Directory':
+        cpp.write('      case %s:\n' % name)
+        isFirst = True
+        for path in resources[name]['Files']:
+            cpp.write('        if (!strcmp(path, "%s"))\n' % path)
+            cpp.write('          return resource%dSize;\n' % resources[name]['Files'][path]['Index'])
+        cpp.write('        throw %s;\n\n' % INEXISTENT_PATH_EXCEPTION)
+
+cpp.write("""      default:
+        throw %s;
+      }
+    }
+""" % OUT_OF_RANGE_EXCEPTION)
+
+
+
+
+#####################################################################
+## List the resources in a directory
+#####################################################################
+
+cpp.write("""
+    void ListResources(std::list<std::string>& result, DirectoryResourceId id)
+    {
+      result.clear();
+
+      switch (id)
+      {
+""")
+
+for name in resources:
+    if resources[name]['Type'] == 'Directory':
+        cpp.write('      case %s:\n' % name)
+        for path in sorted(resources[name]['Files']):
+            cpp.write('        result.push_back("%s");\n' % path)
+        cpp.write('        break;\n\n')
+
+cpp.write("""      default:
+        throw %s;
+      }
+    }
+""" % OUT_OF_RANGE_EXCEPTION)
+
+
+
+
+#####################################################################
+## Write the convenience wrappers in .cpp
+#####################################################################
+
+cpp.write("""
+    void GetFileResource(std::string& result, FileResourceId id)
+    {
+      size_t size = GetFileResourceSize(id);
+      result.resize(size);
+      if (size > 0)
+        memcpy(&result[0], GetFileResourceBuffer(id), size);
+    }
+
+    void GetDirectoryResource(std::string& result, DirectoryResourceId id, const char* path)
+    {
+      size_t size = GetDirectoryResourceSize(id, path);
+      result.resize(size);
+      if (size > 0)
+        memcpy(&result[0], GetDirectoryResourceBuffer(id, path), size);
+    }
+""")
+
+
+for ns in NAMESPACE.split('.'):
+    cpp.write('}\n')
+
+cpp.close()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,69 @@
+if (USE_GOOGLE_TEST_DEBIAN_PACKAGE)
+  find_path(GOOGLE_TEST_DEBIAN_SOURCES_DIR
+    NAMES src/gtest-all.cc
+    PATHS
+    ${CROSSTOOL_NG_IMAGE}/usr/src/gtest
+    ${CROSSTOOL_NG_IMAGE}/usr/src/googletest/googletest
+    PATH_SUFFIXES src
+    )
+
+  find_path(GOOGLE_TEST_DEBIAN_INCLUDE_DIR
+    NAMES gtest.h
+    PATHS
+    ${CROSSTOOL_NG_IMAGE}/usr/include/gtest
+    )
+
+  message("Path to the Debian Google Test sources: ${GOOGLE_TEST_DEBIAN_SOURCES_DIR}")
+  message("Path to the Debian Google Test includes: ${GOOGLE_TEST_DEBIAN_INCLUDE_DIR}")
+
+  set(GOOGLE_TEST_SOURCES
+    ${GOOGLE_TEST_DEBIAN_SOURCES_DIR}/src/gtest-all.cc
+    )
+
+  include_directories(${GOOGLE_TEST_DEBIAN_SOURCES_DIR})
+
+  if (NOT EXISTS ${GOOGLE_TEST_SOURCES} OR
+      NOT EXISTS ${GOOGLE_TEST_DEBIAN_INCLUDE_DIR}/gtest.h)
+    message(FATAL_ERROR "Please install the libgtest-dev package")
+  endif()
+
+elseif (STATIC_BUILD OR NOT USE_SYSTEM_GOOGLE_TEST)
+  set(GOOGLE_TEST_SOURCES_DIR ${CMAKE_BINARY_DIR}/googletest-release-1.8.1)
+  set(GOOGLE_TEST_URL "http://orthanc.osimis.io/ThirdPartyDownloads/gtest-1.8.1.tar.gz")
+  set(GOOGLE_TEST_MD5 "2e6fbeb6a91310a16efe181886c59596")
+
+  DownloadPackage(${GOOGLE_TEST_MD5} ${GOOGLE_TEST_URL} "${GOOGLE_TEST_SOURCES_DIR}")
+
+  include_directories(
+    ${GOOGLE_TEST_SOURCES_DIR}/googletest
+    ${GOOGLE_TEST_SOURCES_DIR}/googletest/include
+    ${GOOGLE_TEST_SOURCES_DIR}
+    )
+
+  set(GOOGLE_TEST_SOURCES
+    ${GOOGLE_TEST_SOURCES_DIR}/googletest/src/gtest-all.cc
+    )
+
+  # https://code.google.com/p/googletest/issues/detail?id=412
+  if (MSVC) # VS2012 does not support tuples correctly yet
+    add_definitions(/D _VARIADIC_MAX=10)
+  endif()
+  
+  if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase")
+    add_definitions(-DGTEST_HAS_CLONE=0)
+  endif()
+  
+  source_group(ThirdParty\\GoogleTest REGULAR_EXPRESSION ${GOOGLE_TEST_SOURCES_DIR}/.*)
+
+else()
+  include(FindGTest)
+  if (NOT GTEST_FOUND)
+    message(FATAL_ERROR "Unable to find GoogleTest")
+  endif()
+
+  include_directories(${GTEST_INCLUDE_DIRS})
+
+  # The variable GTEST_LIBRARIES contains the shared library of
+  # Google Test, create an alias for more uniformity
+  set(GOOGLE_TEST_LIBRARIES ${GTEST_LIBRARIES})
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/README.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,3 @@
+This folder contains an excerpt of the source code of Orthanc. It is
+automatically generated using the "../Resources/SyncOrthancFolder.py"
+script.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/Toolchains/LinuxStandardBaseToolchain.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,79 @@
+#
+# Full build, as used on the BuildBot CIS:
+#
+#   $ LSB_CC=gcc-4.8 LSB_CXX=g++-4.8 cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=../Resources/LinuxStandardBaseToolchain.cmake -DUSE_LEGACY_JSONCPP=ON -DUSE_LEGACY_LIBICU=ON -DBOOST_LOCALE_BACKEND=icu -DENABLE_PKCS11=ON -G Ninja
+#
+# Or, more lightweight version (without libp11 and ICU):
+#
+#   $ LSB_CC=gcc-4.8 LSB_CXX=g++-4.8 cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=../Resources/LinuxStandardBaseToolchain.cmake -DUSE_LEGACY_JSONCPP=ON -G Ninja
+#
+
+INCLUDE(CMakeForceCompiler)
+
+SET(LSB_PATH $ENV{LSB_PATH} CACHE STRING "")
+SET(LSB_CC $ENV{LSB_CC} CACHE STRING "")
+SET(LSB_CXX $ENV{LSB_CXX} CACHE STRING "")
+SET(LSB_TARGET_VERSION "4.0" CACHE STRING "")
+
+IF ("${LSB_PATH}" STREQUAL "")
+  SET(LSB_PATH "/opt/lsb")
+ENDIF()
+
+IF (EXISTS ${LSB_PATH}/lib64)
+  SET(LSB_TARGET_PROCESSOR "x86_64")
+  SET(LSB_LIBPATH ${LSB_PATH}/lib64-${LSB_TARGET_VERSION})
+ELSEIF (EXISTS ${LSB_PATH}/lib)
+  SET(LSB_TARGET_PROCESSOR "x86")
+  SET(LSB_LIBPATH ${LSB_PATH}/lib-${LSB_TARGET_VERSION})
+ELSE()
+  MESSAGE(FATAL_ERROR "Unable to detect the target processor architecture. Check the LSB_PATH environment variable.")
+ENDIF()
+
+SET(LSB_CPPPATH ${LSB_PATH}/include)
+SET(PKG_CONFIG_PATH ${LSB_LIBPATH}/pkgconfig/)
+
+# the name of the target operating system
+SET(CMAKE_SYSTEM_NAME Linux)
+SET(CMAKE_SYSTEM_VERSION LinuxStandardBase)
+SET(CMAKE_SYSTEM_PROCESSOR ${LSB_TARGET_PROCESSOR})
+
+# which compilers to use for C and C++
+SET(CMAKE_C_COMPILER ${LSB_PATH}/bin/lsbcc)
+
+if (${CMAKE_VERSION} VERSION_LESS "3.6.0") 
+  CMAKE_FORCE_CXX_COMPILER(${LSB_PATH}/bin/lsbc++ GNU)
+else()
+  SET(CMAKE_CXX_COMPILER ${LSB_PATH}/bin/lsbc++)
+endif()
+
+# here is the target environment located
+SET(CMAKE_FIND_ROOT_PATH ${LSB_PATH})
+
+# adjust the default behaviour of the FIND_XXX() commands:
+# search headers and libraries in the target environment, search 
+# programs in the host environment
+SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
+
+SET(CMAKE_CROSSCOMPILING OFF)
+
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --lsb-target-version=${LSB_TARGET_VERSION} -I${LSB_PATH}/include" CACHE INTERNAL "" FORCE)
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --lsb-target-version=${LSB_TARGET_VERSION} -nostdinc++ -I${LSB_PATH}/include -I${LSB_PATH}/include/c++ -I${LSB_PATH}/include/c++/backward" CACHE INTERNAL "" FORCE)
+SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --lsb-target-version=${LSB_TARGET_VERSION} -L${LSB_LIBPATH} --lsb-besteffort" CACHE INTERNAL "" FORCE)
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --lsb-target-version=${LSB_TARGET_VERSION} -L${LSB_LIBPATH} --lsb-besteffort" CACHE INTERNAL "" FORCE)
+
+if (NOT "${LSB_CXX}" STREQUAL "")
+  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --lsb-cxx=${LSB_CXX}")
+  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --lsb-cxx=${LSB_CXX}")
+  SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --lsb-cxx=${LSB_CXX}")
+endif()
+
+if (NOT "${LSB_CC}" STREQUAL "")
+  SET(CMAKE_C_FLAGS "${CMAKE_CC_FLAGS} --lsb-cc=${LSB_CC}")
+  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --lsb-cc=${LSB_CC}")
+  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --lsb-cc=${LSB_CC}")
+  SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --lsb-cc=${LSB_CC}")
+endif()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain32.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,17 @@
+# the name of the target operating system
+set(CMAKE_SYSTEM_NAME Windows)
+
+# which compilers to use for C and C++
+set(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
+set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
+set(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
+
+# here is the target environment located
+set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32)
+
+# adjust the default behaviour of the FIND_XXX() commands:
+# search headers and libraries in the target environment, search 
+# programs in the host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,17 @@
+# the name of the target operating system
+set(CMAKE_SYSTEM_NAME Windows)
+
+# which compilers to use for C and C++
+set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
+set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
+set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
+
+# here is the target environment located
+set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32)
+
+# adjust the default behaviour of the FIND_XXX() commands:
+# search headers and libraries in the target environment, search 
+# programs in the host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/Orthanc/Toolchains/MinGWToolchain.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,20 @@
+# the name of the target operating system
+set(CMAKE_SYSTEM_NAME Windows)
+
+# which compilers to use for C and C++
+set(CMAKE_C_COMPILER i586-mingw32msvc-gcc)
+set(CMAKE_CXX_COMPILER i586-mingw32msvc-g++)
+set(CMAKE_RC_COMPILER i586-mingw32msvc-windres)
+
+# here is the target environment located
+set(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc)
+
+# adjust the default behaviour of the FIND_XXX() commands:
+# search headers and libraries in the target environment, search 
+# programs in the host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSTACK_SIZE_PARAM_IS_A_RESERVATION=0x10000" CACHE INTERNAL "" FORCE)
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSTACK_SIZE_PARAM_IS_A_RESERVATION=0x10000" CACHE INTERNAL "" FORCE)
Binary file OrthancStone/Resources/OrthancLogoDocumentation.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/OrthancStone.doxygen	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,1795 @@
+# Doxyfile 1.8.1.2
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a hash (#) is considered a comment and will be ignored.
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or sequence of words) that should
+# identify the project. Note that if you do not use Doxywizard you need
+# to put quotes around the project name if it contains spaces.
+
+PROJECT_NAME           = OrthancStone
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER         = @ORTHANC_STONE_VERSION@
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer
+# a quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF          = "Stone of Orthanc API"
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is
+# included in the documentation. The maximum height of the logo should not
+# exceed 55 pixels and the maximum width should not exceed 200 pixels.
+# Doxygen will copy the logo to the output directory.
+
+PROJECT_LOGO           = @ORTHANC_STONE_ROOT@/Resources/OrthancLogoDocumentation.png
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = OrthancStoneDocumentation
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH        =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful if your file system
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding
+# "class=itcl::class" will allow you to use the command class in the
+# itcl::class meaning.
+
+TCL_SUBST              =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this
+# tag. The format is ext=language, where ext is a file extension, and language
+# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING      =
+
+# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
+# comments according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you
+# can mix doxygen, HTML, and XML commands with Markdown formatting.
+# Disable only in case of backward compatibilities issues.
+
+MARKDOWN_SUPPORT       = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also makes the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = YES
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
+# unions are shown inside the group in which they are included (e.g. using
+# @ingroup) instead of on a separate page (for HTML and Man pages) or
+# section (for LaTeX and RTF).
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
+# unions with only public data fields will be shown inline in the documentation
+# of the scope in which they are defined (i.e. file, namespace, or group
+# documentation), provided this scope is documented. If set to NO (the default),
+# structs, classes, and unions are shown on a separate page (for HTML and Man
+# pages) or section (for LaTeX and RTF).
+
+INLINE_SIMPLE_STRUCTS  = NO
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penalty.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will roughly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols.
+
+SYMBOL_CACHE_SIZE      = 0
+
+# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
+# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
+# their name and scope. Since this can be an expensive process and often the
+# same symbol appear multiple times in the code, doxygen keeps a cache of
+# pre-resolved symbols. If the cache is too small doxygen will become slower.
+# If the cache is too large, memory is wasted. The cache size is given by this
+# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols.
+
+LOOKUP_CACHE_SIZE      = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.
+
+EXTRACT_PACKAGE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespaces are hidden.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
+# will list include files with double quotes in the documentation
+# rather than with sharp brackets.
+
+FORCE_LOCAL_INCLUDES   = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
+# do proper type resolution of all parameters of a function it will reject a
+# match between the prototype and the implementation of a member function even
+# if there is only one candidate or it is obvious which candidate to choose
+# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
+# will still accept a match between prototype and implementation in such cases.
+
+STRICT_PROTO_MATCHING  = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or macro consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and macros in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option.
+# You can optionally specify a file name after the option, if omitted
+# DoxygenLayout.xml will be used as the name of the layout file.
+
+LAYOUT_FILE            =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files
+# containing the references data. This must be a list of .bib files. The
+# .bib extension is automatically appended if omitted. Using this command
+# requires the bibtex tool to be installed. See also
+# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
+# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
+# feature you need bibtex and perl available in the search path.
+
+CITE_BIB_FILES         =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# The WARN_NO_PARAMDOC option can be enabled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE           =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT                  = @ORTHANC_STONE_ROOT@/Applications \
+                         @ORTHANC_STONE_ROOT@/Framework \
+                         @ORTHANC_STONE_ROOT@/Platforms
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
+# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
+# *.f90 *.f *.for *.vhd *.vhdl
+
+FILE_PATTERNS          = *.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE                = @ORTHANC_STONE_ROOT@/Framework/Orthanc/Resources/ \
+                         @ORTHANC_STONE_ROOT@/Applications/Samples/build-wasm/
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS        = Orthanc::Internals
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH           =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS       =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH             =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER           =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty or if
+# non of the patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
+# and it is also possible to disable source filtering for a specific pattern
+# using *.ext= (so without naming a filter). This option only has effect when
+# FILTER_SOURCE_FILES is enabled.
+
+FILTER_SOURCE_PATTERNS =
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C, C++ and Fortran comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = doc
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header. Note that when using a custom header you are responsible
+#  for the proper inclusion of any scripts and style sheets that doxygen
+# needs, which is dependent on the configuration options used.
+# It is advised to generate a default header using "doxygen -w html
+# header.html footer.html stylesheet.css YourConfigFile" and then modify
+# that header. Note that the header is subject to change so you typically
+# have to redo this when upgrading to a newer version of doxygen or when
+# changing the value of configuration settings such as GENERATE_TREEVIEW!
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# style sheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that
+# the files will be copied as-is; there are no commands or markers available.
+
+HTML_EXTRA_FILES       =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
+# Doxygen will adjust the colors in the style sheet and background images
+# according to this color. Hue is specified as an angle on a colorwheel,
+# see http://en.wikipedia.org/wiki/Hue for more information.
+# For instance the value 0 represents red, 60 is yellow, 120 is green,
+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
+# The allowed range is 0 to 359.
+
+HTML_COLORSTYLE_HUE    = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
+# the colors in the HTML output. For a value of 0 the output will use
+# grayscales only. A value of 255 will produce the most vivid colors.
+
+HTML_COLORSTYLE_SAT    = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
+# the luminance component of the colors in the HTML output. Values below
+# 100 gradually make the output lighter, whereas values above 100 make
+# the output darker. The value divided by 100 is the actual gamma applied,
+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
+# and 100 does not change the gamma.
+
+HTML_COLORSTYLE_GAMMA  = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting
+# this to NO can help when comparing the output of multiple runs.
+
+HTML_TIMESTAMP         = NO
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
+# entries shown in the various tree structured indices initially; the user
+# can expand and collapse entries dynamically later on. Doxygen will expand
+# the tree to such a level that at most the specified number of entries are
+# visible (unless a fully collapsed tree already exceeds this amount).
+# So setting the number of entries 1 will produce a full collapsed tree by
+# default. 0 is a special value representing an infinite number of entries
+# and will result in a full expanded tree by default.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+
+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
+
+DOCSET_PUBLISHER_NAME  = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE               =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING     =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
+# that can be used as input for Qt's qhelpgenerator to generate a
+# Qt Compressed Help (.qch) of the generated HTML documentation.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE          = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
+# add. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
+# Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
+# Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION           =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
+#  will be generated, which together with the HTML files, form an Eclipse help
+# plugin. To install this plugin and make it available under the help contents
+# menu in Eclipse, the contents of the directory containing the HTML and XML
+# files needs to be copied into the plugins directory of eclipse. The name of
+# the directory within the plugins directory should be the same as
+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
+# the help appears.
+
+GENERATE_ECLIPSEHELP   = NO
+
+# A unique identifier for the eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have
+# this name.
+
+ECLIPSE_DOC_ID         = org.doxygen.Project
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
+# at top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it. Since the tabs have the same information as the
+# navigation tree you can set this option to NO if you already set
+# GENERATE_TREEVIEW to YES.
+
+DISABLE_INDEX          = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+# Since the tree basically has the same information as the tab index you
+# could consider to set DISABLE_INDEX to NO when enabling this option.
+
+GENERATE_TREEVIEW      = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
+# (range [0,1..20]) that doxygen will group on one line in the generated HTML
+# documentation. Note that a value of 0 will completely suppress the enum
+# values from appearing in the overview section.
+
+ENUM_VALUES_PER_LINE   = 1
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
+# links to external symbols imported via tag files in a separate window.
+
+EXT_LINKS_IN_WINDOW    = NO
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE       = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are
+# not supported properly for IE 6.0, but are supported on all modern browsers.
+# Note that when changing this option you need to delete any form_*.png files
+# in the HTML output before the changes have effect.
+
+FORMULA_TRANSPARENT    = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
+# (see http://www.mathjax.org) which uses client side Javascript for the
+# rendering instead of using prerendered bitmaps. Use this if you do not
+# have LaTeX installed or if you want to formulas look prettier in the HTML
+# output. When enabled you may also need to install MathJax separately and
+# configure the path to it using the MATHJAX_RELPATH option.
+
+USE_MATHJAX            = NO
+
+# When MathJax is enabled you need to specify the location relative to the
+# HTML output directory using the MATHJAX_RELPATH option. The destination
+# directory should contain the MathJax.js script. For instance, if the mathjax
+# directory is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to
+# the MathJax Content Delivery Network so you can quickly see the result without
+# installing MathJax.
+# However, it is strongly recommended to install a local
+# copy of MathJax from http://www.mathjax.org before deployment.
+
+MATHJAX_RELPATH        = http://www.mathjax.org/mathjax
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
+# names that should be enabled during MathJax rendering.
+
+MATHJAX_EXTENSIONS     =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE           = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvantages are that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+# Note that when enabling USE_PDFLATEX this option is only used for
+# generating bitmaps for formulas in the HTML output, but not in the
+# Makefile that is written to the output directory.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
+# the generated latex document. The footer should contain everything after
+# the last chapter. If it is left blank doxygen will generate a
+# standard footer. Notice: only use this tag if you know what you are doing!
+
+LATEX_FOOTER           =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE      = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
+# http://en.wikipedia.org/wiki/BibTeX for more info.
+
+LATEX_BIB_STYLE        = plain
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load style sheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA             =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD                =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# pointed to by INCLUDE_PATH will be searched when a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH           =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS  =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED             =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition that
+# overrules the definition found in the source code.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all references to function-like macros
+# that are alone on a line, have an all uppercase name, and do not end with a
+# semicolon, because these will confuse the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. For each
+# tag file the location of the external documentation should be added. The
+# format of a tag file without this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths
+# or URLs. Note that each tag file must have a unique name (where the name does
+# NOT include the path). If a tag file is not located in the directory in which
+# doxygen is run, you must also specify the path to the tagfile here.
+
+TAGFILES               =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option also works with HAVE_DOT disabled, but it is recommended to
+# install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = YES
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
+# allowed to run in parallel. When set to 0 (the default) doxygen will
+# base this on the number of processors available in the system. You can set it
+# explicitly to a value larger than 0 to get control over the balance
+# between CPU load and processing speed.
+
+DOT_NUM_THREADS        = 0
+
+# By default doxygen will use the Helvetica font for all dot files that
+# doxygen generates. When you want a differently looking font you can specify
+# the font name using DOT_FONTNAME. You need to make sure dot is able to find
+# the font, which can be done by putting it in a standard location or by setting
+# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
+# directory containing the font.
+
+DOT_FONTNAME           = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the Helvetica font.
+# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
+# set the path where dot can find it.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = NO
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK               = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside
+# the class node. If there are many fields or methods and many nodes the
+# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
+# threshold limits the number of items for each type to make the size more
+# managable. Set this to 0 for no limit. Note that the threshold may be
+# exceeded by 50% before the limit is enforced.
+
+UML_LIMIT_NUM_FIELDS   = 10
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will generate a graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are svg, png, jpg, or gif.
+# If left blank png will be used. If you choose svg you need to set
+# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
+# visible in IE 9+ (other browsers do not have this requirement).
+
+DOT_IMAGE_FORMAT       = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+# Note that this requires a modern browser other than Internet Explorer.
+# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
+# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
+# visible. Older versions of IE do not have SVG support.
+
+INTERACTIVE_SVG        = NO
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS           =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the
+# \mscfile command).
+
+MSCFILE_DIRS           =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = YES
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP            = YES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Resources/SyncOrthancFolder.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,81 @@
+#!/usr/bin/python
+
+#
+# This maintenance script updates the content of the "Orthanc" folder
+# to match the latest version of the Orthanc source code.
+#
+
+import multiprocessing
+import os
+import stat
+import urllib2
+
+TARGET = os.path.join(os.path.dirname(__file__), 'Orthanc')
+PLUGIN_SDK_VERSION = '1.0.0'
+REPOSITORY = 'https://hg.orthanc-server.com/orthanc/raw-file'
+
+FILES = [
+    ('OrthancFramework/Resources/CMake/AutoGeneratedCode.cmake', 'CMake'),
+    ('OrthancFramework/Resources/CMake/Compiler.cmake', 'CMake'),
+    ('OrthancFramework/Resources/CMake/DownloadOrthancFramework.cmake', 'CMake'),
+    ('OrthancFramework/Resources/CMake/DownloadPackage.cmake', 'CMake'),
+    ('OrthancFramework/Resources/CMake/GoogleTestConfiguration.cmake', 'CMake'),
+    ('OrthancFramework/Resources/EmbedResources.py', 'CMake'),
+
+    ('OrthancFramework/Resources/Toolchains/LinuxStandardBaseToolchain.cmake', 'Toolchains'),
+    ('OrthancFramework/Resources/Toolchains/MinGW-W64-Toolchain32.cmake', 'Toolchains'),
+    ('OrthancFramework/Resources/Toolchains/MinGW-W64-Toolchain64.cmake', 'Toolchains'),
+    ('OrthancFramework/Resources/Toolchains/MinGWToolchain.cmake', 'Toolchains'),
+
+    ('OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.h',
+     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
+    ('OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp',
+     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
+    ('OrthancServer/Plugins/Samples/Common/OrthancPluginException.h',
+     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
+    ('OrthancServer/Plugins/Samples/Common/ExportedSymbolsPlugins.list',
+     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
+    ('OrthancServer/Plugins/Samples/Common/OrthancPluginsExports.cmake',
+     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
+    ('OrthancServer/Plugins/Samples/Common/VersionScriptPlugins.map',
+     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
+]
+
+SDK = [
+    'orthanc/OrthancCPlugin.h',
+]
+
+
+def Download(x):
+    branch = x[0]
+    source = x[1]
+    target = os.path.join(TARGET, x[2])
+    print target
+
+    try:
+        os.makedirs(os.path.dirname(target))
+    except:
+        pass
+
+    url = '%s/%s/%s' % (REPOSITORY, branch, source)
+
+    with open(target, 'w') as f:
+        f.write(urllib2.urlopen(url).read())
+
+
+commands = []
+
+for f in FILES:
+    commands.append([ 'default',
+                      f[0],
+                      os.path.join(f[1], os.path.basename(f[0])) ])
+
+for f in SDK:
+    commands.append([
+        'Orthanc-%s' % PLUGIN_SDK_VERSION, 
+        'Plugins/Include/%s' % f,
+        '../../StoneWebViewer/Resources/OrthancSdk-%s/%s' % (PLUGIN_SDK_VERSION, f) 
+    ])
+
+pool = multiprocessing.Pool(10)  # simultaneous downloads
+pool.map(Download, commands)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Common/RtViewerApp.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,250 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+// Sample app
+#include "RtViewerApp.h"
+#include "RtViewerView.h"
+#include "SampleHelpers.h"
+
+// Stone of Orthanc
+#include "../../Sources/StoneInitialization.h"
+#include "../../Sources/Scene2D/CairoCompositor.h"
+#include "../../Sources/Scene2D/ColorTextureSceneLayer.h"
+#include "../../Sources/Scene2D/OpenGLCompositor.h"
+#include "../../Sources/Scene2D/PanSceneTracker.h"
+#include "../../Sources/Scene2D/ZoomSceneTracker.h"
+#include "../../Sources/Scene2D/RotateSceneTracker.h"
+#include "../../Sources/Scene2DViewport/UndoStack.h"
+#include "../../Sources/Scene2DViewport/CreateLineMeasureTracker.h"
+#include "../../Sources/Scene2DViewport/CreateAngleMeasureTracker.h"
+#include "../../Sources/Scene2DViewport/IFlexiblePointerTracker.h"
+#include "../../Sources/Scene2DViewport/MeasureTool.h"
+#include "../../Sources/Scene2DViewport/PredeclaredTypes.h"
+#include "../../Sources/Volumes/VolumeSceneLayerSource.h"
+#include "../../Sources/Oracle/GetOrthancWebViewerJpegCommand.h"
+#include "../../Sources/Scene2D/GrayscaleStyleConfigurator.h"
+#include "../../Sources/Scene2D/LookupTableStyleConfigurator.h"
+#include "../../Sources/Volumes/DicomVolumeImageMPRSlicer.h"
+#include "../../Sources/StoneException.h"
+
+// Orthanc
+#include <Logging.h>
+#include <OrthancException.h>
+
+// System 
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+#include <boost/make_shared.hpp>
+
+#include <stdio.h>
+
+
+namespace OrthancStone
+{
+  void RtViewerApp::InvalidateAllViewports()
+  {
+    for (size_t i = 0; i < views_.size(); ++i)
+    {
+      views_[i]->Invalidate();
+    }
+  }
+
+  const VolumeImageGeometry& RtViewerApp::GetMainGeometry()
+  {
+    ORTHANC_ASSERT(geometryProvider_.get() != NULL);
+    ORTHANC_ASSERT(geometryProvider_->HasGeometry());
+    const VolumeImageGeometry& geometry = geometryProvider_->GetImageGeometry();
+    return geometry;
+  }
+
+  RtViewerApp::RtViewerApp()
+    : undoStack_(new UndoStack)
+  {
+    // Create the volumes that will be filled later on
+    ctVolume_ = boost::make_shared<DicomVolumeImage>();
+    doseVolume_ = boost::make_shared<DicomVolumeImage>();
+  }
+
+  boost::shared_ptr<RtViewerApp> RtViewerApp::Create()
+  {
+    boost::shared_ptr<RtViewerApp> thisOne(new RtViewerApp());
+    return thisOne;
+  }
+
+  void RtViewerApp::DisableTracker()
+  {
+    if (activeTracker_)
+    {
+      activeTracker_->Cancel();
+      activeTracker_.reset();
+    }
+  }
+
+  void RtViewerApp::CreateView(const std::string& canvasId, VolumeProjection projection)
+  {
+    boost::shared_ptr<RtViewerView> 
+      view(new RtViewerView(shared_from_this(), canvasId, projection));
+
+    view->RegisterMessages();
+
+    view->CreateLayers(ctLoader_, doseLoader_, doseVolume_, rtstructLoader_);
+
+    views_.push_back(view);
+  }
+
+  void RtViewerApp::CreateLoaders()
+  {
+    // the viewport hosts the scene
+    {
+      // "true" means use progressive quality (jpeg 50 --> jpeg 90 --> 16-bit raw)
+      // "false" means only using hi quality
+      // TODO: add flag for quality
+      ctLoader_ = OrthancSeriesVolumeProgressiveLoader::Create(*loadersContext_, ctVolume_, true);
+      
+      // better priority for CT vs dose and struct
+      ctLoader_->SetSchedulingPriority(-100);
+
+
+      // we need to store the CT loader to ask from geometry details later on when geometry is loaded
+      geometryProvider_ = ctLoader_;
+
+      doseLoader_ = OrthancMultiframeVolumeLoader::Create(*loadersContext_, doseVolume_);
+      rtstructLoader_ = DicomStructureSetLoader::Create(*loadersContext_);
+    }
+
+    /**
+    Register for notifications issued by the loaders
+    */
+
+    Register<DicomVolumeImage::GeometryReadyMessage>
+      (*ctLoader_, &RtViewerApp::HandleGeometryReady);
+
+    Register<OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality>
+      (*ctLoader_, &RtViewerApp::HandleCTLoaded);
+
+    Register<DicomVolumeImage::ContentUpdatedMessage>
+      (*ctLoader_, &RtViewerApp::HandleCTContentUpdated);
+
+    Register<DicomVolumeImage::ContentUpdatedMessage>
+      (*doseLoader_, &RtViewerApp::HandleDoseLoaded);
+
+    Register<DicomStructureSetLoader::StructuresReady>
+      (*rtstructLoader_, &RtViewerApp::HandleStructuresReady);
+
+    Register<DicomStructureSetLoader::StructuresUpdated>
+      (*rtstructLoader_, &RtViewerApp::HandleStructuresUpdated);
+  }
+
+  void RtViewerApp::StartLoaders()
+  {
+    ORTHANC_ASSERT(HasArgument("ctseries") && HasArgument("rtdose") && HasArgument("rtstruct"));
+
+    LOG(INFO) << "About to load:";
+    LOG(INFO) << "  CT       : " << GetArgument("ctseries");
+    LOG(INFO) << "  RTDOSE   : " << GetArgument("rtdose");
+    LOG(INFO) << "  RTSTRUCT : " << GetArgument("rtstruct");
+    ctLoader_->LoadSeries(GetArgument("ctseries"));
+    doseLoader_->LoadInstance(GetArgument("rtdose"));
+    rtstructLoader_->LoadInstanceFullVisibility(GetArgument("rtstruct"));
+  }
+
+  void RtViewerApp::HandleGeometryReady(const DicomVolumeImage::GeometryReadyMessage& message)
+  {
+    for (size_t i = 0; i < views_.size(); ++i)
+    {
+      views_[i]->RetrieveGeometry();
+    }
+    FitContent();
+    UpdateLayersInAllViews();
+  }
+
+  void RtViewerApp::FitContent()
+  {
+    for (size_t i = 0; i < views_.size(); ++i)
+    {
+      views_[i]->FitContent();
+    }
+  }
+
+  void RtViewerApp::UpdateLayersInAllViews()
+  {
+    for (size_t i = 0; i < views_.size(); ++i)
+    {
+      views_[i]->UpdateLayers();
+    }
+  }
+
+  void RtViewerApp::HandleCTLoaded(const OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality& message)
+  {
+    for (size_t i = 0; i < views_.size(); ++i)
+    {
+      views_[i]->RetrieveGeometry();
+    }
+    UpdateLayersInAllViews();
+  }
+
+  void RtViewerApp::HandleCTContentUpdated(const DicomVolumeImage::ContentUpdatedMessage& message)
+  {
+    UpdateLayersInAllViews();
+  }
+
+  void RtViewerApp::HandleDoseLoaded(const DicomVolumeImage::ContentUpdatedMessage& message)
+  {
+    //TODO: compute dose extent, with outlier rejection
+    UpdateLayersInAllViews();
+  }
+
+  void RtViewerApp::HandleStructuresReady(const DicomStructureSetLoader::StructuresReady& message)
+  {
+    UpdateLayersInAllViews();
+  }
+
+  void RtViewerApp::HandleStructuresUpdated(const DicomStructureSetLoader::StructuresUpdated& message)
+  {
+    UpdateLayersInAllViews();
+  }
+
+  void RtViewerApp::SetArgument(const std::string& key, const std::string& value)
+  {
+    if (key == "loglevel")
+      OrthancStoneHelpers::SetLogLevel(value);
+    else
+      arguments_[key] = value;
+  }
+
+  std::string RtViewerApp::GetArgument(const std::string& key) const
+  {
+    std::map<std::string, std::string>::const_iterator found = arguments_.find(key);
+    if (found == arguments_.end())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return found->second;
+    }
+  }
+
+  bool RtViewerApp::HasArgument(const std::string& key) const
+  {
+    return (arguments_.find(key) != arguments_.end());
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Common/RtViewerApp.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,169 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Sources/Loaders/DicomStructureSetLoader.h"
+#include "../../Sources/Loaders/ILoadersContext.h"
+#include "../../Sources/Loaders/OrthancMultiframeVolumeLoader.h"
+#include "../../Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
+#include "../../Sources/Messages/IMessageEmitter.h"
+#include "../../Sources/Messages/IObserver.h"
+#include "../../Sources/Messages/ObserverBase.h"
+#include "../../Sources/Oracle/OracleCommandExceptionMessage.h"
+#include "../../Sources/Scene2DViewport/ViewportController.h"
+#include "../../Sources/Viewport/IViewport.h"
+#include "../../Sources/Volumes/DicomVolumeImage.h"
+
+#include <boost/enable_shared_from_this.hpp>
+#include <boost/thread.hpp>
+#include <boost/noncopyable.hpp>
+
+#if ORTHANC_ENABLE_SDL
+#include <SDL.h>
+#endif
+
+namespace OrthancStone
+{
+  class OpenGLCompositor;
+  class IVolumeSlicer;
+  class ILayerStyleConfigurator;
+  class DicomStructureSetLoader;
+  class IOracle;
+  class ThreadedOracle;
+  class VolumeSceneLayerSource;
+  class SdlOpenGLViewport;
+  class RtViewerView;
+   
+  static const unsigned int FONT_SIZE_0 = 32;
+  static const unsigned int FONT_SIZE_1 = 24;
+
+  class Scene2D;
+  class UndoStack;
+
+  /**
+  This application subclasses IMessageEmitter to use a mutex before forwarding Oracle messages (that
+  can be sent from multiple threads)
+  */
+  class RtViewerApp : public ObserverBase<RtViewerApp>
+  {
+  public:
+
+    void PrepareScene();
+
+#if ORTHANC_ENABLE_SDL
+  public:
+    void RunSdl(int argc, char* argv[]);
+    void SdlRunLoop(const std::vector<boost::shared_ptr<OrthancStone::RtViewerView> >& views,
+                    OrthancStone::IViewportInteractor& interactor);
+  private:
+    void ProcessOptions(int argc, char* argv[]);
+    void HandleApplicationEvent(const SDL_Event& event);
+#elif ORTHANC_ENABLE_WASM
+  public:
+    void RunWasm();
+#else
+#  error Either ORTHANC_ENABLE_SDL or ORTHANC_ENABLE_WASM must be enabled
+#endif
+
+  public:
+    void DisableTracker();
+
+    /**
+    Called by command-line option processing or when parsing the URL 
+    parameters.
+    */
+    void SetArgument(const std::string& key, const std::string& value);
+
+    const VolumeImageGeometry& GetMainGeometry();
+
+    static boost::shared_ptr<RtViewerApp> Create();
+
+    void CreateView(const std::string& canvasId, VolumeProjection projection);
+
+  protected:
+    RtViewerApp();
+
+  private:
+    void CreateLoaders();
+    void StartLoaders();
+    void SelectNextTool();
+
+    // argument handling
+    // SetArgument is above (public section)
+    std::map<std::string, std::string> arguments_;
+
+    std::string GetArgument(const std::string& key) const;
+    bool HasArgument(const std::string& key) const;
+
+    /**
+      This adds the command at the top of the undo stack
+    */
+    //void Commit(boost::shared_ptr<TrackerCommand> cmd);
+    void Undo();
+    void Redo();
+
+    void HandleGeometryReady(const DicomVolumeImage::GeometryReadyMessage& message);
+    
+    // TODO: wire this
+    void HandleCTLoaded(const OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality& message);
+    void HandleCTContentUpdated(const OrthancStone::DicomVolumeImage::ContentUpdatedMessage& message);
+    void HandleDoseLoaded(const OrthancStone::DicomVolumeImage::ContentUpdatedMessage& message);
+    void HandleStructuresReady(const OrthancStone::DicomStructureSetLoader::StructuresReady& message);
+    void HandleStructuresUpdated(const OrthancStone::DicomStructureSetLoader::StructuresUpdated& message);
+
+
+  private:
+    void RetrieveGeometry();
+    void FitContent();
+    void InvalidateAllViewports();
+    void UpdateLayersInAllViews();
+
+  private:
+    boost::shared_ptr<DicomVolumeImage>  ctVolume_;
+    boost::shared_ptr<DicomVolumeImage>  doseVolume_;
+
+    std::vector<boost::shared_ptr<RtViewerView> >  views_;
+
+    boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> ctLoader_;
+    boost::shared_ptr<OrthancMultiframeVolumeLoader> doseLoader_;
+    boost::shared_ptr<DicomStructureSetLoader>  rtstructLoader_;
+
+    /** encapsulates resources shared by loaders */
+    boost::shared_ptr<ILoadersContext>                  loadersContext_;
+
+    /**
+    another interface to the ctLoader object (that also implements the IVolumeSlicer interface), that serves as the 
+    reference for the geometry (position and dimensions of the volume + size of each voxel). It could be changed to be 
+    the dose instead, but the CT is chosen because it usually has a better spatial resolution.
+    */
+    boost::shared_ptr<OrthancStone::IGeometryProvider>  geometryProvider_;
+
+
+    boost::shared_ptr<IFlexiblePointerTracker> activeTracker_;
+
+    boost::shared_ptr<UndoStack> undoStack_;
+  };
+
+}
+
+
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Common/RtViewerView.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,350 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+// Sample app
+#include "RtViewerView.h"
+#include "RtViewerApp.h"
+#include "SampleHelpers.h"
+
+#include <EmbeddedResources.h>
+
+// Stone of Orthanc
+#include "../../Sources/Oracle/GetOrthancWebViewerJpegCommand.h"
+#include "../../Sources/Scene2D/CairoCompositor.h"
+#include "../../Sources/Scene2D/ColorTextureSceneLayer.h"
+#include "../../Sources/Scene2D/GrayscaleStyleConfigurator.h"
+#include "../../Sources/Scene2D/LookupTableStyleConfigurator.h"
+#include "../../Sources/Scene2D/OpenGLCompositor.h"
+#include "../../Sources/Scene2D/PanSceneTracker.h"
+#include "../../Sources/Scene2D/RotateSceneTracker.h"
+#include "../../Sources/Scene2D/ZoomSceneTracker.h"
+#include "../../Sources/Scene2DViewport/CreateAngleMeasureTracker.h"
+#include "../../Sources/Scene2DViewport/CreateLineMeasureTracker.h"
+#include "../../Sources/Scene2DViewport/IFlexiblePointerTracker.h"
+#include "../../Sources/Scene2DViewport/MeasureTool.h"
+#include "../../Sources/Scene2DViewport/PredeclaredTypes.h"
+#include "../../Sources/Scene2DViewport/UndoStack.h"
+#include "../../Sources/StoneException.h"
+#include "../../Sources/StoneInitialization.h"
+#include "../../Sources/Volumes/DicomVolumeImageMPRSlicer.h"
+#include "../../Sources/Volumes/VolumeSceneLayerSource.h"
+
+// Orthanc
+#include <Compatibility.h>  // For std::unique_ptr<>
+#include <Logging.h>
+#include <OrthancException.h>
+
+// System 
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+#include <boost/make_shared.hpp>
+
+#include <stdio.h>
+
+
+namespace OrthancStone
+{
+  boost::shared_ptr<RtViewerApp> RtViewerView::GetApp()
+  {
+    return app_.lock();
+  }
+
+  void RtViewerView::DisplayInfoText()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    // do not try to use stuff too early!
+    OrthancStone::ICompositor& compositor = lock->GetCompositor();
+
+    std::stringstream msg;
+
+    for (std::map<std::string, std::string>::const_iterator kv = infoTextMap_.begin();
+         kv != infoTextMap_.end(); ++kv)
+    {
+      msg << kv->first << " : " << kv->second << std::endl;
+    }
+    std::string msgS = msg.str();
+
+    TextSceneLayer* layerP = NULL;
+    if (scene.HasLayer(FIXED_INFOTEXT_LAYER_ZINDEX))
+    {
+      TextSceneLayer& layer = dynamic_cast<TextSceneLayer&>(
+        scene.GetLayer(FIXED_INFOTEXT_LAYER_ZINDEX));
+      layerP = &layer;
+    }
+    else
+    {
+      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
+      layerP = layer.get();
+      layer->SetColor(0, 255, 0);
+      layer->SetFontIndex(1);
+      layer->SetBorder(20);
+      layer->SetAnchor(BitmapAnchor_TopLeft);
+      //layer->SetPosition(0,0);
+      scene.SetLayer(FIXED_INFOTEXT_LAYER_ZINDEX, layer.release());
+    }
+    // position the fixed info text in the upper right corner
+    layerP->SetText(msgS.c_str());
+    double cX = compositor.GetCanvasWidth() * (-0.5);
+    double cY = compositor.GetCanvasHeight() * (-0.5);
+    scene.GetCanvasToSceneTransform().Apply(cX, cY);
+    layerP->SetPosition(cX, cY);
+    lock->Invalidate();
+  }
+
+  void RtViewerView::DisplayFloatingCtrlInfoText(const PointerEvent& e)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    ScenePoint2D p = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform());
+
+    char buf[128];
+    sprintf(buf, "S:(%0.02f,%0.02f) C:(%0.02f,%0.02f)",
+            p.GetX(), p.GetY(),
+            e.GetMainPosition().GetX(), e.GetMainPosition().GetY());
+
+    if (scene.HasLayer(FLOATING_INFOTEXT_LAYER_ZINDEX))
+    {
+      TextSceneLayer& layer =
+        dynamic_cast<TextSceneLayer&>(scene.GetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX));
+      layer.SetText(buf);
+      layer.SetPosition(p.GetX(), p.GetY());
+    }
+    else
+    {
+      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
+      layer->SetColor(0, 255, 0);
+      layer->SetText(buf);
+      layer->SetBorder(20);
+      layer->SetAnchor(BitmapAnchor_BottomCenter);
+      layer->SetPosition(p.GetX(), p.GetY());
+      scene.SetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX, layer.release());
+    }
+  }
+
+  void RtViewerView::HideInfoText()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    scene.DeleteLayer(FLOATING_INFOTEXT_LAYER_ZINDEX);
+  }
+
+  void RtViewerView::OnSceneTransformChanged(
+    const ViewportController::SceneTransformChanged& message)
+  {
+    DisplayInfoText();
+  }
+
+  void RtViewerView::Invalidate()
+  {
+    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
+    lock->GetCompositor().FitContent(lock->GetController().GetScene());
+    lock->Invalidate();
+  }
+
+  void RtViewerView::FitContent()
+  {
+    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
+    lock->GetCompositor().FitContent(lock->GetController().GetScene());
+    lock->Invalidate();
+  }
+
+  void RtViewerView::Scroll(int delta)
+  {
+    if (!planes_.empty())
+    {
+      int next = 0;
+      int temp = static_cast<int>(currentPlane_) + delta;
+
+      if (temp < 0)
+      {
+        next = 0;
+      }
+      else if (temp >= static_cast<int>(planes_.size()))
+      {
+        next = static_cast<unsigned int>(planes_.size()) - 1;
+      }
+      else
+      {
+        next = static_cast<size_t>(temp);
+      }
+      LOG(INFO) << "RtViewerView::Scroll(" << delta << ") --> slice is now = " << next;
+
+      if (next != static_cast<int>(currentPlane_))
+      {
+        currentPlane_ = next;
+        UpdateLayers();
+      }
+    }
+  }
+
+  void RtViewerView::RetrieveGeometry()
+  {
+    const VolumeImageGeometry& geometry = GetApp()->GetMainGeometry();
+
+    const unsigned int depth = geometry.GetProjectionDepth(projection_);
+    currentPlane_ = depth / 2;
+
+    planes_.resize(depth);
+
+    for (unsigned int z = 0; z < depth; z++)
+    {
+      planes_[z] = geometry.GetProjectionSlice(projection_, z);
+    }
+
+    UpdateLayers();
+  }
+
+  void RtViewerView::UpdateLayers()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+
+    if (planes_.size() == 0)
+    {
+      RetrieveGeometry();
+    }
+
+    if (currentPlane_ < planes_.size())
+    {
+      if (ctVolumeLayerSource_.get() != NULL)
+      {
+        ctVolumeLayerSource_->Update(planes_[currentPlane_]);
+      }
+      if (doseVolumeLayerSource_.get() != NULL)
+      {
+        doseVolumeLayerSource_->Update(planes_[currentPlane_]);
+      }
+      if (structLayerSource_.get() != NULL)
+      {
+        structLayerSource_->Update(planes_[currentPlane_]);
+      }
+    }
+    lock->Invalidate();
+  }
+
+  void RtViewerView::PrepareViewport()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    ICompositor& compositor = lock->GetCompositor();
+
+    // False means we do NOT let a hi-DPI aware desktop managedr treat this as a legacy application that requires
+    // scaling.
+    controller.FitContent(compositor.GetCanvasWidth(), compositor.GetCanvasHeight());
+
+    std::string ttf;
+    Orthanc::EmbeddedResources::GetFileResource(ttf, Orthanc::EmbeddedResources::UBUNTU_FONT);
+    compositor.SetFont(0, ttf, FONT_SIZE_0, Orthanc::Encoding_Latin1);
+    compositor.SetFont(1, ttf, FONT_SIZE_1, Orthanc::Encoding_Latin1);
+  }
+
+  void RtViewerView::SetInfoDisplayMessage(
+    std::string key, std::string value)
+  {
+    if (value == "")
+      infoTextMap_.erase(key);
+    else
+      infoTextMap_[key] = value;
+    DisplayInfoText();
+  }
+
+  void RtViewerView::RegisterMessages()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Register<ViewportController::SceneTransformChanged>(controller, &RtViewerView::OnSceneTransformChanged);
+  }
+
+  void RtViewerView::CreateLayers(boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> ctLoader,
+                                  boost::shared_ptr<OrthancMultiframeVolumeLoader>        doseLoader,
+                                  boost::shared_ptr<DicomVolumeImage>                     doseVolume,
+                                  boost::shared_ptr<DicomStructureSetLoader>              rtstructLoader)
+  {
+    /**
+    Configure the CT
+    */
+    std::unique_ptr<GrayscaleStyleConfigurator> style(new GrayscaleStyleConfigurator);
+    style->SetLinearInterpolation(true);
+
+    this->SetCtVolumeSlicer(ctLoader, style.release());
+
+    {
+      std::string lut;
+      Orthanc::EmbeddedResources::GetFileResource(lut, Orthanc::EmbeddedResources::COLORMAP_HOT);
+
+      std::unique_ptr<LookupTableStyleConfigurator> config(new LookupTableStyleConfigurator);
+      config->SetLookupTable(lut);
+
+      boost::shared_ptr<DicomVolumeImageMPRSlicer> tmp(new DicomVolumeImageMPRSlicer(doseVolume));
+      this->SetDoseVolumeSlicer(tmp, config.release());
+    }
+
+    this->SetStructureSet(rtstructLoader);
+  }
+
+  void RtViewerView::SetCtVolumeSlicer(const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
+                                       OrthancStone::ILayerStyleConfigurator* style)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+    int depth = scene.GetMaxDepth() + 1;
+
+    ctVolumeLayerSource_.reset(new OrthancStone::VolumeSceneLayerSource(viewport_, depth, volume));
+
+    if (style != NULL)
+    {
+      ctVolumeLayerSource_->SetConfigurator(style);
+    }
+  }
+
+  void RtViewerView::SetDoseVolumeSlicer(const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
+                                         OrthancStone::ILayerStyleConfigurator* style)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+    int depth = scene.GetMaxDepth() + 1;
+
+    doseVolumeLayerSource_.reset(new OrthancStone::VolumeSceneLayerSource(viewport_, depth, volume));
+
+    if (style != NULL)
+    {
+      doseVolumeLayerSource_->SetConfigurator(style);
+    }
+  }
+
+  void RtViewerView::SetStructureSet(const boost::shared_ptr<OrthancStone::DicomStructureSetLoader>& volume)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+    int depth = scene.GetMaxDepth() + 1;
+
+    structLayerSource_.reset(new OrthancStone::VolumeSceneLayerSource(viewport_, depth, volume));
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Common/RtViewerView.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,136 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Sources/Loaders/DicomStructureSetLoader.h"
+#include "../../Sources/Loaders/ILoadersContext.h"
+#include "../../Sources/Loaders/OrthancMultiframeVolumeLoader.h"
+#include "../../Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
+#include "../../Sources/Messages/IMessageEmitter.h"
+#include "../../Sources/Messages/IObserver.h"
+#include "../../Sources/Messages/ObserverBase.h"
+#include "../../Sources/Oracle/OracleCommandExceptionMessage.h"
+#include "../../Sources/Scene2DViewport/ViewportController.h"
+#include "../../Sources/Viewport/IViewport.h"
+#include "../../Sources/Volumes/DicomVolumeImage.h"
+#include "../../Sources/Volumes/VolumeSceneLayerSource.h"
+
+#include <boost/enable_shared_from_this.hpp>
+#include <boost/thread.hpp>
+#include <boost/noncopyable.hpp>
+
+namespace OrthancStone
+{
+  class RtViewerApp;
+
+  class RtViewerView : public ObserverBase<RtViewerView>
+  {
+  public:
+    RtViewerView(boost::weak_ptr<RtViewerApp> app, 
+                 const std::string& canvasId, 
+                 VolumeProjection projection) 
+      : app_(app)
+      , currentPlane_(0)
+      , projection_(projection)
+    {
+      viewport_ = CreateViewport(canvasId);
+      FLOATING_INFOTEXT_LAYER_ZINDEX = 6;
+      FIXED_INFOTEXT_LAYER_ZINDEX = 7;
+    }
+
+    /**
+    This method is called when the scene transform changes. It allows to
+    recompute the visual elements whose content depend upon the scene transform
+    */
+    void OnSceneTransformChanged(
+      const ViewportController::SceneTransformChanged& message);
+
+    /**
+    This method will ask the VolumeSceneLayerSource, that are responsible to
+    generated 2D content based on a volume and a cutting plane, to regenerate
+    it. This is required if the volume itself changes (during loading) or if
+    the cutting plane is changed
+    */
+    void UpdateLayers();
+
+    void Refresh();
+
+    void TakeScreenshot(
+      const std::string& target,
+      unsigned int canvasWidth,
+      unsigned int canvasHeight);
+
+    void Scroll(int delta);
+
+    void Invalidate();
+    void FitContent();
+    void RetrieveGeometry();
+    void PrepareViewport();
+    void RegisterMessages();
+
+#if ORTHANC_ENABLE_SDL == 1
+    void EnableGLDebugOutput();
+#endif
+
+    void CreateLayers(boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> ctLoader,
+                      boost::shared_ptr<OrthancMultiframeVolumeLoader>        doseLoader,
+                      boost::shared_ptr<DicomVolumeImage>                     doseVolume,
+                      boost::shared_ptr<DicomStructureSetLoader>              rtstructLoader);
+
+    boost::shared_ptr<IViewport> GetViewport()
+    {
+      return viewport_;
+    }
+
+  private:
+    void SetInfoDisplayMessage(std::string key, std::string value);
+    boost::shared_ptr<RtViewerApp> GetApp();
+    boost::shared_ptr<IViewport> CreateViewport(const std::string& canvasId);
+    void DisplayInfoText();
+    void HideInfoText();
+    void DisplayFloatingCtrlInfoText(const PointerEvent& e);
+
+    void SetCtVolumeSlicer(const boost::shared_ptr<IVolumeSlicer>& volume,
+                           ILayerStyleConfigurator* style);
+
+    void SetDoseVolumeSlicer(const boost::shared_ptr<IVolumeSlicer>& volume,
+                             ILayerStyleConfigurator* style);
+
+    void SetStructureSet(const boost::shared_ptr<DicomStructureSetLoader>& volume);
+
+  private:
+    boost::weak_ptr<RtViewerApp> app_;
+    boost::shared_ptr<VolumeSceneLayerSource>  ctVolumeLayerSource_, doseVolumeLayerSource_, structLayerSource_;
+
+  // collection of cutting planes for this particular view
+    std::vector<OrthancStone::CoordinateSystem3D>       planes_;
+    size_t                                              currentPlane_;
+
+    VolumeProjection                                    projection_;
+
+    std::map<std::string, std::string> infoTextMap_;
+
+    int FLOATING_INFOTEXT_LAYER_ZINDEX;
+    int FIXED_INFOTEXT_LAYER_ZINDEX;
+    boost::shared_ptr<IViewport> viewport_;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Common/SampleHelpers.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <Logging.h>
+
+#include <boost/algorithm/string.hpp>
+
+#include <string>
+#include <iostream>
+
+namespace OrthancStoneHelpers
+{
+  inline void SetLogLevel(std::string logLevel)
+  {
+    boost::to_lower(logLevel);
+    if (logLevel == "warning")
+    {
+      Orthanc::Logging::EnableInfoLevel(false);
+      Orthanc::Logging::EnableTraceLevel(false);
+    }
+    else if (logLevel == "info")
+    {
+      Orthanc::Logging::EnableInfoLevel(true);
+      Orthanc::Logging::EnableTraceLevel(false);
+    }
+    else if (logLevel == "trace")
+    {
+      Orthanc::Logging::EnableInfoLevel(true);
+      Orthanc::Logging::EnableTraceLevel(true);
+    }
+    else
+    {
+      std::cerr << "Unknown log level \"" << logLevel << "\". Will use TRACE as default!";
+      Orthanc::Logging::EnableInfoLevel(true);
+      Orthanc::Logging::EnableTraceLevel(true);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/README.md	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,233 @@
+General
+=======
+These samples assume that a recent version of Orthanc is checked out in an
+`orthanc` folder next to the `orthanc-stone` folder. Let's call the top folder
+the `devroot` folder. This name does not matter and is not used anywhere.
+
+Here's the directory layout that we suggest:
+
+```
+devroot/
+ |
+ +- orthanc/
+ |
+ +- orthanc-stone/
+ |
+ ...
+```
+
+ Orthanc can be retrieved with:
+ ```
+ hg clone https://hg.orthanc-server.com/orthanc
+ ```
+
+Furthermore, the samples usually assume that an Orthanc is running locally,
+without authentication, on port 8042. The samples can easily be tweaked if 
+your setup is different.
+
+When Dicom resources are to be displayed, their IDs can be supplied in the 
+various ways suitable for the platform (command-line arguments, URL parameters
+or through the GUI)
+
+
+This repo contains two sample projects:
+
+SingleFrameViewer
+-----------------
+
+This sample application displays a single frame of a Dicom instance that can
+be loaded from Orthanc, either by using the Orthanc REST API or through the 
+Dicomweb server functionality of Orthanc.
+
+RtViewer
+--------
+
+This sample application displays set of Radiotherapy data:
+- a CT scan
+- an RT-Dose
+- an RT-Struct
+
+The WebAssembly version displays 3 viewports with MPR data
+while the SDL sample displays a single viewport.
+
+ 
+WebAssembly samples
+===================
+
+Building the WebAssembly samples require the Emscripten SDK 
+(https://emscripten.org/). This SDK goes far beyond the simple compilation to
+the wasm (Web Assembly) bytecode and provides a comprehensive library that 
+eases porting native C and C++ programs and libraries. The Emscripten SDK also
+makes it easy to generate the companion Javascript files requires to use a 
+wasm module in a web application.
+
+Although Emscripten runs on all major platforms, Stone of Orthanc is developed
+and tested with the Linux version of Emscripten.
+
+Emscripten runs perfectly fine under the Windows Subsystem for Linux (that is
+the environment used quite often by the Stone of Orthanc team)
+
+**Important note:** The following examples **and the build scripts** will 
+assume that you have installed the Emscripten SDK in `~/apps/emsdk`.
+
+The following packages should get you going (a Debian-like distribution such 
+as Debian or Ubuntu is assumed)
+
+```
+sudo apt-get update 
+sudo apt-get install -y build-essential curl wget git python cmake pkg-config
+sudo apt-get install -y mercurial unzip npm ninja-build p7zip-full gettext-base 
+```
+
+To build the Wasm samples, just launch the `build-wasm-samples.sh` script from
+this folder.  Optionaly, you can pass the build type as an argument.
+We suggest that you do *not* use the `Debug` configuration unless you really 
+need it, for the additional checks that are made will lead to a very long 
+build time and much slower execution (more severe than with a native non-wasm
+target)
+
+In order to run the sample, you may serve it with the ServeFolders plugin.
+You can i.e: add such a section in your orthanc configuration file:
+
+```
+{
+  "Plugins" : ["LibServeFolders.so],
+  "ServeFolders" : {
+    "/single-frame-viewer" : "..../out/install-stone-wasm-samples-RelWithDebInfo/SingleFrameViewer",
+    "/rt-viewer": "..../out/install-stone-wasm-samples-RelWithDebInfo/RtViewer"
+  }
+}
+```
+
+You'll then be able to open the single-frame-viewer demo at `http://localhost:8042/single-frame-viewer/index.html` 
+
+The rt-viewer demo at
+`http://localhost:8044/rt-viewer/index.html?ctseries=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&rtdose=eac822ef-a395f94e-e8121fe0-8411fef8-1f7bffad&rtstruct=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9`.  Note that you must provide 3 ids in the url:
+
+- the CT series Orthanc ID
+- the RT-Dose instance Orthanc ID
+- the RT-Struct instance Orthanc ID
+
+
+RtViewer
+-----------------
+
+This sample application displays three MPR views of a CT+RTDOSE+RTSTRUCT dataset, loaded from Orthanc. The Orthanc IDs of the dataset must be supplied as URL parameters like:
+
+```
+http://localhost:9979/rtviewer/index.html?loglevel=info&ctseries=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&rtdose=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb&rtstruct=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
+```
+
+(notice the loglevel parameter that can be `warning`, `info` or `trace`, in increasing verbosity order)
+
+This sample uses plain Javascript and requires the 
+Emscripten toolchain and cmake, in addition to a few standard packages.
+
+To build it, just launch the `build-wasm-RtViewer.sh` script from
+this folder.  Optionaly, you can pass the build type as an argument.
+We suggest that you do *not* use the `Debug` configuration unless you really 
+need it, for the additional checks that are made will lead to a very long 
+build time and much slower execution (more severe than with a native non-wasm
+target)
+
+In order to run the sample, you may serve it with the ServeFolders plugin.
+You can i.e: add such a section in your orthanc configuration file:
+
+```
+{
+  "Plugins" : ["LibServeFolders.so],
+  "ServeFolders" : {
+    "/rt-viewer" : "..../out/install-stone-wasm-RtViewer-RelWithDebInfo"
+  }
+}
+```
+
+You'll then be able to open the demo at `http://localhost:8042/rt-viewer/index.html`
+
+
+Native samples
+=================
+
+### Windows build 
+
+Here's how to build the SdlSimpleViewer example using Visual Studio 2019
+(the shell is Powershell, but the legacy shell can also be used with some 
+tweaks). This example is meant to be launched from the folder above 
+orthanc-stone.
+
+```
+  # create the build folder and navigate to it
+  $buildDir = "build-stone-sdlviewer-msvc16-x64"
+
+  if (-not (Test-Path $buildDir)) {
+    mkdir -p $buildDir | Out-Null
+  }
+  
+  cd $buildDir
+  
+  # perform the configuration
+  cmake -G "Visual Studio 16 2019" -A x64 `
+    -DMSVC_MULTIPLE_PROCESSES=ON `
+    -DALLOW_DOWNLOADS=ON `
+    -DSTATIC_BUILD=ON `
+    -DOPENSSL_NO_CAPIENG=ON `
+    ../orthanc-stone/Samples/Sdl
+  
+  $solutionPath = ls -filter *.sln
+  Write-Host "Solution file(s) available at: $solutionPath"
+```
+
+The initial configuration step will be quite lengthy, for CMake needs to 
+setup its internal cache based on your environment and build tools.
+
+Subsequent runs will be several orders of magnitude faster!
+
+One the solution (.sln) file is ready, you can open it using the Visual Studio
+IDE and choose Build --> Build solution.
+
+An alternative is to execute `cmake --build .` in the build folder created by
+the script.
+
+In order to run the sample, make sure you've an Orthanc server running i.e. on 
+port 8042 and launch:
+
+```
+./SdlSimpleViewer --orthanc http://localhost:8042 --instance 7fc84013-abef174e-3354ca83-b9cdb2a4-f1a74368
+
+./RtViewerSdl --orthanc http://localhost:8042 --ctseries a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa --rtdose 830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb --rtstruct 54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
+```
+
+RtViewer
+---------------
+
+### Windows build 
+
+Here's how to build the SdlSimpleViewer example using Visual Studio 2019
+(the shell is Powershell, but the legacy shell can also be used with some 
+tweaks). This example is meant to be launched from the folder above 
+orthanc-stone.
+
+```
+  $buildRootDir = "out"
+  $buildDirName = "build-stone-sdl-RtViewer-msvc16-x64"
+  $buildDir = Join-Path -Path $buildRootDir -ChildPath $buildDirName
+
+  if (-not (Test-Path $buildDir)) {
+    mkdir -p $buildDir | Out-Null
+  }
+  
+  cd $buildDir
+  
+  cmake -G "Visual Studio 16 2019" -A x64 `
+    -DMSVC_MULTIPLE_PROCESSES=ON `
+    -DALLOW_DOWNLOADS=ON `
+    -DSTATIC_BUILD=ON `
+    -DOPENSSL_NO_CAPIENG=ON `
+    ../../orthanc-stone/Samples/Sdl/RtViewer
+```
+
+Executing `cmake --build .` in the build folder will launch the Microsoft 
+builder on the solution.
+
+Alternatively, you can open and build the solution using Visual Studio 2019.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/BoostExtendedConfiguration.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,40 @@
+# Stone of Orthanc
+# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+# Department, University Hospital of Liege, Belgium
+# Copyright (C) 2017-2020 Osimis S.A., Belgium
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+if (STATIC_BUILD OR NOT USE_SYSTEM_BOOST)
+  set(BOOST_EXTENDED_SOURCES
+    ${BOOST_SOURCES_DIR}/libs/program_options/src/cmdline.cpp
+    ${BOOST_SOURCES_DIR}/libs/program_options/src/config_file.cpp
+    ${BOOST_SOURCES_DIR}/libs/program_options/src/convert.cpp
+    ${BOOST_SOURCES_DIR}/libs/program_options/src/options_description.cpp
+    ${BOOST_SOURCES_DIR}/libs/program_options/src/parsers.cpp
+    ${BOOST_SOURCES_DIR}/libs/program_options/src/positional_options.cpp
+    ${BOOST_SOURCES_DIR}/libs/program_options/src/split.cpp
+    ${BOOST_SOURCES_DIR}/libs/program_options/src/utf8_codecvt_facet.cpp
+    ${BOOST_SOURCES_DIR}/libs/program_options/src/value_semantic.cpp
+    ${BOOST_SOURCES_DIR}/libs/program_options/src/variables_map.cpp
+    ${BOOST_SOURCES_DIR}/libs/chrono/src/thread_clock.cpp
+    ${BOOST_SOURCES_DIR}/libs/chrono/src/chrono.cpp
+    ${BOOST_SOURCES_DIR}/libs/chrono/src/process_cpu_clocks.cpp
+    #${BOOST_SOURCES_DIR}/libs/program_options/src/winmain.cpp
+    )
+  add_definitions(-DBOOST_PROGRAM_OPTIONS_NO_LIB)
+else()
+  link_libraries(boost_program_options)
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,111 @@
+cmake_minimum_required(VERSION 2.8.10)
+
+project(OrthancStone)
+
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneParameters.cmake)
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
+  set(ORTHANC_BOOST_COMPONENTS program_options)
+
+  set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test")
+  set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)")
+  mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE)
+  include(${ORTHANC_STONE_ROOT}/Resources/Orthanc/CMake/DownloadPackage.cmake)
+  include(${ORTHANC_STONE_ROOT}/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake)
+
+else()
+  set(ENABLE_GOOGLE_TEST ON)
+  set(ENABLE_LOCALE ON)  # Necessary for text rendering
+  set(ENABLE_OPENGL ON)  #  <==
+  set(ENABLE_WEB_CLIENT ON)
+endif()
+
+set(ENABLE_DCMTK ON)  # <==
+set(ENABLE_SDL ON)
+
+include(${ORTHANC_STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
+include(${CMAKE_SOURCE_DIR}/Utilities.cmake)
+
+if (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
+  # This include must be after "OrthancStoneConfiguration.cmake" to
+  # have "BOOST_SOURCES_DIR" defined
+  include(${CMAKE_SOURCE_DIR}/BoostExtendedConfiguration.cmake)
+endif()
+
+
+DownloadPackage(
+  "a24b8136b8f3bb93f166baf97d9328de"
+  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
+  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
+
+EmbedResources(
+  COLORMAP_HOT ${ORTHANC_STONE_ROOT}/Resources/Colormaps/hot.lut
+  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
+  )
+
+SortFilesInSourceGroups()
+
+add_library(OrthancStone STATIC
+  ${ORTHANC_STONE_SOURCES}
+  ${AUTOGENERATED_SOURCES}
+  ${BOOST_EXTENDED_SOURCES}
+  )
+
+message(${AUTOGENERATED_SOURCES})
+
+
+
+#############################
+project(RtViewerSdl)
+
+add_executable(RtViewerSdl
+  RtViewer/RtViewerSdl.cpp
+  SdlHelpers.h
+  ../Common/RtViewerApp.cpp
+  ../Common/RtViewerApp.h
+  ../Common/RtViewerView.cpp
+  ../Common/RtViewerView.h
+  ../Common/SampleHelpers.h
+  )
+
+target_link_libraries(RtViewerSdl OrthancStone ${DCMTK_LIBRARIES})
+
+#############################
+project(SdlSimpleViewer)
+
+add_executable(SdlSimpleViewer
+  SdlHelpers.h
+  ../Common/SampleHelpers.h
+  SingleFrameViewer/SdlSimpleViewerApplication.h
+  SingleFrameViewer/SdlSimpleViewer.cpp
+  )
+
+target_link_libraries(SdlSimpleViewer OrthancStone ${DCMTK_LIBRARIES})
+
+#############################
+project(UnitTests)
+
+add_executable(UnitTests
+  ${GOOGLE_TEST_SOURCES}
+  ${ORTHANC_STONE_ROOT}/UnitTestsSources/GenericToolboxTests.cpp
+  ${ORTHANC_STONE_ROOT}/UnitTestsSources/ImageToolboxTests.cpp
+  ${ORTHANC_STONE_ROOT}/UnitTestsSources/PixelTestPatternsTests.cpp
+  ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestCommands.cpp
+  ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestMessageBroker.cpp
+  ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestStrategy.cpp
+  ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestStructureSet.cpp
+  ${ORTHANC_STONE_ROOT}/UnitTestsSources/SortedFramesTests.cpp
+  ${ORTHANC_STONE_ROOT}/UnitTestsSources/UnitTestsMain.cpp
+  )
+
+target_link_libraries(UnitTests OrthancStone)
+
+add_custom_command(
+  TARGET UnitTests
+  POST_BUILD
+  COMMAND ${CMAKE_COMMAND} -E copy
+    "${ORTHANC_STONE_ROOT}/UnitTestsSources/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json" 
+    "$<TARGET_FILE_DIR:UnitTests>/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json"
+)
+
+target_link_libraries(UnitTests OrthancStone ${DCMTK_LIBRARIES})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/RtViewer/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,60 @@
+cmake_minimum_required(VERSION 2.8.10)
+
+project(RtViewerSdl)
+
+include(${CMAKE_SOURCE_DIR}/../../../Resources/CMake/OrthancStoneParameters.cmake)
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
+  set(ORTHANC_BOOST_COMPONENTS program_options)
+
+  set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test")
+  set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)")
+  mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE)
+  include(${ORTHANC_STONE_ROOT}/Resources/Orthanc/CMake/DownloadPackage.cmake)
+  include(${ORTHANC_STONE_ROOT}/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake)
+
+else()
+  set(ENABLE_GOOGLE_TEST ON)
+  set(ENABLE_LOCALE ON)  # Necessary for text rendering
+  set(ENABLE_OPENGL ON)  #  <==
+  set(ENABLE_WEB_CLIENT ON)
+endif()
+
+set(ENABLE_DCMTK ON)  # <==
+set(ENABLE_SDL ON)
+
+include(${ORTHANC_STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
+include(${CMAKE_SOURCE_DIR}/../Utilities.cmake)
+
+if (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
+  # This include must be after "OrthancStoneConfiguration.cmake" to
+  # have "BOOST_SOURCES_DIR" defined
+  include(${CMAKE_SOURCE_DIR}/../BoostExtendedConfiguration.cmake)
+endif()
+
+DownloadPackage(
+  "a24b8136b8f3bb93f166baf97d9328de"
+  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
+  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
+
+EmbedResources(
+  COLORMAP_HOT ${ORTHANC_STONE_ROOT}/Resources/Colormaps/hot.lut
+  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
+  )
+
+SortFilesInSourceGroups()
+
+add_executable(RtViewerSdl
+  RtViewerSdl.cpp
+  ../SdlHelpers.h
+  ../../Common/RtViewerApp.cpp
+  ../../Common/RtViewerApp.h
+  ../../Common/RtViewerView.cpp
+  ../../Common/RtViewerView.h
+  ../../Common/SampleHelpers.h
+  ${ORTHANC_STONE_SOURCES}
+  ${AUTOGENERATED_SOURCES}
+  ${BOOST_EXTENDED_SOURCES}
+  )
+
+target_link_libraries(RtViewerSdl ${DCMTK_LIBRARIES})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/RtViewer/CMakeSettings.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,34 @@
+{
+  // this file is meant to be used with Visual Studio CMake support
+  // tested with VS 16.5.4+ 
+  "configurations": [
+    {
+      "name": "x64-Debug",
+      "generator": "Ninja",
+      "configurationType": "Debug",
+      "inheritEnvironments": [ "msvc_x64_x64" ],
+      "buildRoot": "${projectDir}/../../../../out/build-stone-sdl-RtViewer-ninja-msvc16-x64-Debug",
+      "installRoot": "${projectDir}/../../../../out/install-stone-sdl-RtViewer-ninja-msvc16-x64-Debug",
+      "cmakeCommandArgs": "",
+      "buildCommandArgs": "-v",
+      "ctestCommandArgs": "",
+      "variables": [
+        {
+          "name": "ALLOW_DOWNLOADS",
+          "value": "True",
+          "type": "BOOL"
+        },
+        {
+          "name": "MSVC_MULTIPLE_PROCESSES",
+          "value": "True",
+          "type": "BOOL"
+        },
+        {
+          "name": "STATIC_BUILD",
+          "value": "True",
+          "type": "BOOL"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/RtViewer/RtViewerSdl.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,458 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "../../Common/RtViewerApp.h"
+#include "../../Common/RtViewerView.h"
+#include "../SdlHelpers.h"
+
+#include <EmbeddedResources.h>
+
+// Stone of Orthanc includes
+#include "../../../Sources/Loaders/GenericLoadersContext.h"
+#include "../../../Sources/OpenGL/OpenGLIncludes.h"
+#include "../../../Sources/OpenGL/SdlOpenGLContext.h"
+#include "../../../Sources/StoneException.h"
+#include "../../../Sources/StoneInitialization.h"
+
+// Orthanc (a.o. for screenshot capture)
+#include <Compatibility.h>  // For std::unique_ptr<>
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <Images/PngWriter.h>
+
+
+#include <boost/program_options.hpp>
+#include <boost/shared_ptr.hpp>
+
+// #include <boost/pointer_cast.hpp> this include might be necessary in more recent boost versions
+
+#include <SDL.h>
+
+#include <string>
+
+
+#if !defined(__APPLE__)
+/**
+ * OpenGL: "OS X does not seem to support debug output functionality
+ * (as gathered online)."
+ * https://learnopengl.com/In-Practice/Debugging
+ **/
+static void GLAPIENTRY
+OpenGLMessageCallback(GLenum source,
+                      GLenum type,
+                      GLuint id,
+                      GLenum severity,
+                      GLsizei length,
+                      const GLchar* message,
+                      const void* userParam)
+{
+  if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
+  {
+    fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
+            (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
+            type, severity, message);
+  }
+}
+#endif
+
+namespace OrthancStone
+{
+  void RtViewerView::EnableGLDebugOutput()
+  {
+#if !defined(__APPLE__)
+    glEnable(GL_DEBUG_OUTPUT);
+    glDebugMessageCallback(OpenGLMessageCallback, 0);
+#endif
+  }
+
+  boost::shared_ptr<IViewport> RtViewerView::CreateViewport(const std::string& canvasId)
+  {
+    // False means we do NOT let Windows treat this as a legacy application that needs to be scaled
+    return SdlOpenGLViewport::Create(canvasId, 1024, 1024, false);
+  }
+
+  void RtViewerApp::ProcessOptions(int argc, char* argv[])
+  {
+    namespace po = boost::program_options;
+    po::options_description desc("Usage:");
+
+    desc.add_options()
+      ("loglevel", po::value<std::string>()->default_value("WARNING"),
+       "You can choose WARNING, INFO or TRACE for the logging level: Errors and warnings will always be displayed. (default: WARNING)")
+
+      ("orthanc", po::value<std::string>()->default_value("http://localhost:8042"),
+       "Base URL of the Orthanc instance")
+
+      ("ctseries", po::value<std::string>()->default_value("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa"),
+       "Orthanc ID of the CT series to load")
+
+      ("rtdose", po::value<std::string>()->default_value("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb"),
+       "Orthanc ID of the RTDOSE instance to load")
+
+      ("rtstruct", po::value<std::string>()->default_value("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9"),
+       "Orthanc ID of the RTSTRUCT instance to load")
+      ;
+
+    po::variables_map vm;
+    try
+    {
+      po::store(po::parse_command_line(argc, argv, desc), vm);
+      po::notify(vm);
+    }
+    catch (std::exception& e)
+    {
+      std::cerr << "Please check your command line options! (\"" << e.what() << "\")" << std::endl;
+    }
+
+    for (po::variables_map::iterator it = vm.begin(); it != vm.end(); ++it)
+    {
+      std::string key = it->first;
+      const po::variable_value& value = it->second;
+      const std::string& strValue = value.as<std::string>();
+      SetArgument(key, strValue);
+    }
+  }
+
+  void RtViewerApp::RunSdl(int argc, char* argv[])
+  {
+    ProcessOptions(argc, argv);
+
+    /**
+    Create the shared loaders context
+    */
+    loadersContext_.reset(new GenericLoadersContext(1, 4, 1));
+
+    // we are in SDL --> downcast to concrete type
+    boost::shared_ptr<GenericLoadersContext> loadersContext = boost::dynamic_pointer_cast<GenericLoadersContext>(loadersContext_);
+
+    /**
+      Url of the Orthanc instance
+      Typically, in a native application (Qt, SDL), it will be an absolute URL like "http://localhost:8042". In 
+      wasm on the browser, it could be an absolute URL, provided you do not have cross-origin problems, or a relative
+      URL. In our wasm samples, it is set to "..", because we set up either a reverse proxy or an Orthanc ServeFolders
+      plugin that serves the main web application from an URL like "http://localhost:8042/rtviewer" (with ".." leading 
+      to the main Orthanc root URL)
+    */
+    std::string orthancUrl = arguments_["orthanc"];
+
+    {
+      Orthanc::WebServiceParameters p;
+      if (HasArgument("orthanc"))
+      {
+        p.SetUrl(orthancUrl);
+      }
+      if (HasArgument("user"))
+      {
+        ORTHANC_ASSERT(HasArgument("password"));
+        p.SetCredentials(GetArgument("user"), GetArgument("password"));
+      } 
+      else
+      {
+        ORTHANC_ASSERT(!HasArgument("password"));
+      }
+      loadersContext->SetOrthancParameters(p);
+    }
+
+    loadersContext->StartOracle();
+
+    CreateLoaders();
+
+    /**
+    Create viewports
+    */
+    CreateView("RtViewer Axial", VolumeProjection_Axial);
+    CreateView("RtViewer Coronal", VolumeProjection_Coronal);
+    CreateView("RtViewer Sagittal", VolumeProjection_Sagittal);
+
+    for (size_t i = 0; i < views_.size(); ++i)
+    {
+      views_[i]->PrepareViewport();
+      views_[i]->EnableGLDebugOutput();
+    }
+
+    DefaultViewportInteractor interactor;
+
+    /**
+    It is very important that the Oracle (responsible for network I/O) be started before creating and firing the 
+    loaders, for any command scheduled by the loader before the oracle is started will be lost.
+    */
+    StartLoaders();
+
+
+    SdlRunLoop(views_, interactor);
+    loadersContext->StopOracle();
+  }
+
+  void RtViewerView::TakeScreenshot(const std::string& target,
+                                   unsigned int canvasWidth,
+                                   unsigned int canvasHeight)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    std::string ttf;
+    Orthanc::EmbeddedResources::GetFileResource(ttf, Orthanc::EmbeddedResources::UBUNTU_FONT);
+    
+    CairoCompositor compositor(canvasWidth, canvasHeight);
+    compositor.SetFont(0, ttf, FONT_SIZE_0, Orthanc::Encoding_Latin1);
+    compositor.Refresh(scene);
+
+    Orthanc::ImageAccessor canvas;
+    compositor.GetCanvas().GetReadOnlyAccessor(canvas);
+
+    Orthanc::Image png(Orthanc::PixelFormat_RGB24, canvas.GetWidth(), canvas.GetHeight(), false);
+    Orthanc::ImageProcessing::Convert(png, canvas);
+
+    Orthanc::PngWriter writer;
+    writer.WriteToFile(target, png);
+  }
+
+  static boost::shared_ptr<OrthancStone::RtViewerView> GetViewFromWindowId(
+    const std::vector<boost::shared_ptr<OrthancStone::RtViewerView> >& views,
+    Uint32 windowID)
+  {
+    using namespace OrthancStone;
+    for (size_t i = 0; i < views.size(); ++i)
+    {
+      boost::shared_ptr<OrthancStone::RtViewerView> view = views[i];
+      boost::shared_ptr<IViewport> viewport = view->GetViewport();
+      boost::shared_ptr<SdlViewport> sdlViewport = boost::dynamic_pointer_cast<SdlViewport>(viewport);
+      Uint32 curWindowID = sdlViewport->GetSdlWindowId();
+      if (windowID == curWindowID)
+        return view;
+    }
+    return boost::shared_ptr<OrthancStone::RtViewerView>();
+  }
+
+  void RtViewerApp::SdlRunLoop(const std::vector<boost::shared_ptr<OrthancStone::RtViewerView> >& views,
+                               OrthancStone::IViewportInteractor& interactor)
+  {
+    using namespace OrthancStone;
+
+    // const std::vector<boost::shared_ptr<OrthancStone::RtViewerView> >& views
+    std::vector<boost::shared_ptr<OrthancStone::SdlViewport> > viewports;
+    for (size_t i = 0; i < views.size(); ++i)
+    {
+      boost::shared_ptr<RtViewerView> view = views[i];
+      boost::shared_ptr<IViewport> viewport = view->GetViewport();
+      boost::shared_ptr<SdlViewport> sdlViewport =
+        boost::dynamic_pointer_cast<SdlViewport>(viewport);
+      viewports.push_back(sdlViewport);
+    }
+
+    {
+      int scancodeCount = 0;
+      const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
+
+      bool stop = false;
+      while (!stop)
+      {
+        std::vector<SDL_Event> sdlEvents;
+        std::map<Uint32,SDL_Event> userEventsMap;
+        SDL_Event sdlEvent;
+
+        // FIRST: collect all pending events
+        while (SDL_PollEvent(&sdlEvent) != 0)
+        {
+          if ( (sdlEvent.type >= SDL_USEREVENT) && 
+               (sdlEvent.type < SDL_LASTEVENT) )
+          {
+            // we don't want to have multiple refresh events ,
+            // and since every refresh event is a user event with a special type,
+            // we use a map
+            userEventsMap[sdlEvent.type] = sdlEvent;
+          }
+          else
+          {
+            sdlEvents.push_back(sdlEvent);
+          }
+        }
+
+        // SECOND: add all user events to sdlEvents
+        for (std::map<Uint32,SDL_Event>::const_iterator it = userEventsMap.begin(); it != userEventsMap.end(); ++it)
+          sdlEvents.push_back(it->second);
+
+        // now process the events
+        for (std::vector<SDL_Event>::const_iterator it = sdlEvents.begin(); it != sdlEvents.end(); ++it)
+        {
+          const SDL_Event& sdlEvent = *it;
+
+          if (sdlEvent.type == SDL_QUIT)
+          {
+            stop = true;
+            break;
+          }
+          else if (sdlEvent.type == SDL_WINDOWEVENT &&
+                   (sdlEvent.window.event == SDL_WINDOWEVENT_RESIZED ||
+                    sdlEvent.window.event == SDL_WINDOWEVENT_SIZE_CHANGED))
+          {
+            boost::shared_ptr<RtViewerView> view = GetViewFromWindowId(
+              views, sdlEvent.window.windowID);
+
+            boost::shared_ptr<SdlViewport> sdlViewport =
+              boost::dynamic_pointer_cast<SdlViewport>(view->GetViewport());
+
+            sdlViewport->UpdateSize(sdlEvent.window.data1, sdlEvent.window.data2);
+          }
+          else if (sdlEvent.type == SDL_WINDOWEVENT &&
+                   (sdlEvent.window.event == SDL_WINDOWEVENT_SHOWN ||
+                    sdlEvent.window.event == SDL_WINDOWEVENT_EXPOSED))
+          {
+            boost::shared_ptr<RtViewerView> view = GetViewFromWindowId(
+              views, sdlEvent.window.windowID);
+            boost::shared_ptr<SdlViewport> sdlViewport =
+              boost::dynamic_pointer_cast<SdlViewport>(view->GetViewport());
+            sdlViewport->Paint();
+          }
+          else if (sdlEvent.type == SDL_KEYDOWN &&
+                   sdlEvent.key.repeat == 0 /* Ignore key bounce */)
+          {
+            boost::shared_ptr<RtViewerView> view = GetViewFromWindowId(
+              views, sdlEvent.window.windowID);
+
+            switch (sdlEvent.key.keysym.sym)
+            {
+            case SDLK_f:
+            {
+              boost::shared_ptr<SdlViewport> sdlViewport =
+                boost::dynamic_pointer_cast<SdlViewport>(view->GetViewport());
+              sdlViewport->ToggleMaximize();
+            }
+            break;
+
+            case SDLK_s:
+            {
+              std::unique_ptr<OrthancStone::IViewport::ILock> lock(view->GetViewport()->Lock());
+              lock->GetCompositor().FitContent(lock->GetController().GetScene());
+              lock->Invalidate();
+            }
+            break;
+
+            case SDLK_q:
+              stop = true;
+              break;
+
+            default:
+              break;
+            }
+          }
+          else if (sdlEvent.type == SDL_MOUSEBUTTONDOWN ||
+                   sdlEvent.type == SDL_MOUSEMOTION ||
+                   sdlEvent.type == SDL_MOUSEBUTTONUP)
+          {
+            boost::shared_ptr<RtViewerView> view = GetViewFromWindowId(
+              views, sdlEvent.window.windowID);
+
+            std::unique_ptr<OrthancStone::IViewport::ILock> lock(view->GetViewport()->Lock());
+            if (lock->HasCompositor())
+            {
+              OrthancStone::PointerEvent p;
+              OrthancStoneHelpers::GetPointerEvent(p, lock->GetCompositor(),
+                                                   sdlEvent, keyboardState, scancodeCount);
+
+              switch (sdlEvent.type)
+              {
+              case SDL_MOUSEBUTTONDOWN:
+                lock->GetController().HandleMousePress(interactor, p,
+                                                       lock->GetCompositor().GetCanvasWidth(),
+                                                       lock->GetCompositor().GetCanvasHeight());
+                lock->Invalidate();
+                break;
+
+              case SDL_MOUSEMOTION:
+                if (lock->GetController().HandleMouseMove(p))
+                {
+                  lock->Invalidate();
+                }
+                break;
+
+              case SDL_MOUSEBUTTONUP:
+                lock->GetController().HandleMouseRelease(p);
+                lock->Invalidate();
+                break;
+
+              default:
+                throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+              }
+            }
+          }
+          else if (sdlEvent.type == SDL_MOUSEWHEEL)
+          {
+            boost::shared_ptr<RtViewerView> view = GetViewFromWindowId(
+              views, sdlEvent.window.windowID);
+
+            int delta = 0;
+            if (sdlEvent.wheel.y < 0)
+              delta = -1;
+            if (sdlEvent.wheel.y > 0)
+              delta = 1;
+
+            view->Scroll(delta);
+          }
+          else
+          {
+            for (size_t i = 0; i < views.size(); ++i)
+            {
+              boost::shared_ptr<SdlViewport> sdlViewport =
+                boost::dynamic_pointer_cast<SdlViewport>(views[i]->GetViewport());
+              if (sdlViewport->IsRefreshEvent(sdlEvent))
+              {
+                sdlViewport->Paint();
+              }
+            }
+          }
+        }
+        // Small delay to avoid using 100% of CPU
+        SDL_Delay(1);
+      }
+    }
+  }
+}
+
+boost::weak_ptr<OrthancStone::RtViewerApp> g_app;
+
+/**
+ * IMPORTANT: The full arguments to "main()" are needed for SDL on
+ * Windows. Otherwise, one gets the linking error "undefined reference
+ * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
+ **/
+int main(int argc, char* argv[])
+{
+  using namespace OrthancStone;
+
+  StoneInitialize();
+
+  try
+  {
+    boost::shared_ptr<RtViewerApp> app = RtViewerApp::Create();
+    g_app = app;
+    app->RunSdl(argc,argv);
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "EXCEPTION: " << e.What();
+  }
+
+  StoneFinalize();
+
+  return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/SdlHelpers.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,142 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if ORTHANC_ENABLE_SDL != 1
+# error This file cannot be used if ORTHANC_ENABLE_SDL != 1
+#endif
+
+#include "../../Sources/Viewport/SdlViewport.h"
+
+#include <boost/shared_ptr.hpp>
+
+#include <SDL.h>
+
+#include <map>
+#include <string>
+
+namespace OrthancStoneHelpers
+{
+
+  inline OrthancStone::KeyboardModifiers GetKeyboardModifiers(const uint8_t* keyboardState,
+                                                              const int scancodeCount)
+  {
+    using namespace OrthancStone;
+    int result = KeyboardModifiers_None;
+
+    if (keyboardState != NULL)
+    {
+      if (SDL_SCANCODE_LSHIFT < scancodeCount &&
+          keyboardState[SDL_SCANCODE_LSHIFT])
+      {
+        result |= KeyboardModifiers_Shift;
+      }
+
+      if (SDL_SCANCODE_RSHIFT < scancodeCount &&
+          keyboardState[SDL_SCANCODE_RSHIFT])
+      {
+        result |= KeyboardModifiers_Shift;
+      }
+
+      if (SDL_SCANCODE_LCTRL < scancodeCount &&
+          keyboardState[SDL_SCANCODE_LCTRL])
+      {
+        result |= KeyboardModifiers_Control;
+      }
+
+      if (SDL_SCANCODE_RCTRL < scancodeCount &&
+          keyboardState[SDL_SCANCODE_RCTRL])
+      {
+        result |= KeyboardModifiers_Control;
+      }
+
+      if (SDL_SCANCODE_LALT < scancodeCount &&
+          keyboardState[SDL_SCANCODE_LALT])
+      {
+        result |= KeyboardModifiers_Alt;
+      }
+
+      if (SDL_SCANCODE_RALT < scancodeCount &&
+          keyboardState[SDL_SCANCODE_RALT])
+      {
+        result |= KeyboardModifiers_Alt;
+      }
+    }
+
+    return static_cast<KeyboardModifiers>(result);
+  }
+
+
+  inline void GetPointerEvent(OrthancStone::PointerEvent& p,
+                              const OrthancStone::ICompositor& compositor,
+                              SDL_Event event,
+                              const uint8_t* keyboardState,
+                              const int scancodeCount)
+  {
+    using namespace OrthancStone;
+    KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
+
+    switch (event.button.button)
+    {
+    case SDL_BUTTON_LEFT:
+      p.SetMouseButton(OrthancStone::MouseButton_Left);
+      break;
+
+    case SDL_BUTTON_RIGHT:
+      p.SetMouseButton(OrthancStone::MouseButton_Right);
+      break;
+
+    case SDL_BUTTON_MIDDLE:
+      p.SetMouseButton(OrthancStone::MouseButton_Middle);
+      break;
+
+    default:
+      p.SetMouseButton(OrthancStone::MouseButton_None);
+      break;
+    }
+
+    p.AddPosition(compositor.GetPixelCenterCoordinates(event.button.x, event.button.y));
+    p.SetAltModifier( (modifiers & KeyboardModifiers_Alt) != 0);
+    p.SetControlModifier( (modifiers & KeyboardModifiers_Control) != 0);
+    p.SetShiftModifier( (modifiers & KeyboardModifiers_Shift) != 0);
+  }
+
+  
+  inline boost::shared_ptr<OrthancStone::SdlViewport> GetSdlViewportFromWindowId(
+    const std::vector<boost::shared_ptr<OrthancStone::SdlViewport> >& viewports,
+    Uint32 windowID)
+  {
+    using namespace OrthancStone;
+    for (size_t i = 0; i < viewports.size(); ++i)
+    {
+      boost::shared_ptr<IViewport> viewport = viewports[i];
+      boost::shared_ptr<SdlViewport> sdlViewport = boost::dynamic_pointer_cast<SdlViewport>(viewport);
+      Uint32 curWindowID = sdlViewport->GetSdlWindowId();
+      if (windowID == curWindowID)
+        return sdlViewport;
+    }
+    
+    return boost::shared_ptr<OrthancStone::SdlViewport>();
+  }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/SingleFrameViewer/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,46 @@
+cmake_minimum_required(VERSION 2.8.10)
+
+project(SdlSimpleViewer)
+
+include(${CMAKE_SOURCE_DIR}/../../../Resources/CMake/OrthancStoneParameters.cmake)
+
+if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
+  set(ORTHANC_BOOST_COMPONENTS program_options)
+
+  set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test")
+  set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)")
+  mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE)
+  include(${ORTHANC_STONE_ROOT}/Resources/Orthanc/CMake/DownloadPackage.cmake)
+  include(${ORTHANC_STONE_ROOT}/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake)
+
+else()
+  set(ENABLE_GOOGLE_TEST ON)
+  set(ENABLE_LOCALE ON)  # Necessary for text rendering
+  set(ENABLE_OPENGL ON)  #  <==
+  set(ENABLE_WEB_CLIENT ON)
+endif()
+
+set(ENABLE_DCMTK ON)  # <==
+set(ENABLE_SDL ON)
+
+include(${ORTHANC_STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
+include(${CMAKE_SOURCE_DIR}/../Utilities.cmake)
+
+if (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
+  # This include must be after "OrthancStoneConfiguration.cmake" to
+  # have "BOOST_SOURCES_DIR" defined
+  include(${CMAKE_SOURCE_DIR}/../BoostExtendedConfiguration.cmake)
+endif()
+
+SortFilesInSourceGroups()
+
+add_executable(SdlSimpleViewer
+  ../SdlHelpers.h
+  ../../Common/SampleHelpers.h
+  SdlSimpleViewerApplication.h
+  SdlSimpleViewer.cpp
+  ${ORTHANC_STONE_SOURCES}
+  )
+
+target_link_libraries(SdlSimpleViewer ${DCMTK_LIBRARIES})
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/SingleFrameViewer/CMakeSettings.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,37 @@
+{
+  "configurations": [
+    {
+      "name": "x64-Debug",
+      "generator": "Ninja",
+      "configurationType": "Debug",
+      "inheritEnvironments": [ "msvc_x64_x64" ],
+      "buildRoot": "${projectDir}\\out\\build\\${name}",
+      "installRoot": "${projectDir}\\out\\install\\${name}",
+      "cmakeCommandArgs": "",
+      "buildCommandArgs": "-v",
+      "ctestCommandArgs": "",
+      "variables": [
+        {
+          "name": "MSVC_MULTIPLE_PROCESSES",
+          "value": "True",
+          "type": "BOOL"
+        },
+        {
+          "name": "ALLOW_DOWNLOADS",
+          "value": "True",
+          "type": "BOOL"
+        },
+        {
+          "name": "STATIC_BUILD",
+          "value": "True",
+          "type": "BOOL"
+        },
+        {
+          "name": "OPENSSL_NO_CAPIENG",
+          "value": "True",
+          "type": "BOOL"
+        },
+      ]
+    }
+  ]
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/SingleFrameViewer/SdlSimpleViewer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,273 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SdlSimpleViewerApplication.h"
+#include "../SdlHelpers.h"
+#include "../../Common/SampleHelpers.h"
+
+#include "../../../Sources/Loaders/GenericLoadersContext.h"
+#include "../../../Sources/StoneException.h"
+#include "../../../Sources/StoneEnumerations.h"
+#include "../../../Sources/StoneInitialization.h"
+#include "../../../Sources/Viewport/SdlViewport.h"
+
+#include <Compatibility.h>  // For std::unique_ptr<>
+#include <OrthancException.h>
+
+#include <boost/program_options.hpp>
+#include <SDL.h>
+
+#include <string>
+
+
+std::string orthancUrl;
+std::string instanceId;
+int frameIndex = 0;
+
+
+static void ProcessOptions(int argc, char* argv[])
+{
+  namespace po = boost::program_options;
+  po::options_description desc("Usage:");
+
+  desc.add_options()
+    ("loglevel", po::value<std::string>()->default_value("WARNING"),
+     "You can choose WARNING, INFO or TRACE for the logging level: Errors and warnings will always be displayed. (default: WARNING)")
+
+    ("orthanc", po::value<std::string>()->default_value("http://localhost:8042"),
+     "Base URL of the Orthanc instance")
+
+    ("instance", po::value<std::string>()->default_value("285dece8-e1956b38-cdc7d084-6ce3371e-536a9ffc"),
+     "Orthanc ID of the instance to display")
+
+    ("frame_index", po::value<int>()->default_value(0),
+     "The zero-based index of the frame (for multi-frame instances)")
+    ;
+
+  po::variables_map vm;
+  try
+  {
+    po::store(po::parse_command_line(argc, argv, desc), vm);
+    po::notify(vm);
+  }
+  catch (std::exception& e)
+  {
+    std::cerr << "Please check your command line options! (\"" << e.what() << "\")" << std::endl;
+  }
+
+  if (vm.count("loglevel") > 0)
+  {
+    std::string logLevel = vm["loglevel"].as<std::string>();
+    OrthancStoneHelpers::SetLogLevel(logLevel);
+  }
+
+  if (vm.count("orthanc") > 0)
+  {
+    // maybe check URL validity here
+    orthancUrl = vm["orthanc"].as<std::string>();
+  }
+
+  if (vm.count("instance") > 0)
+  {
+    instanceId = vm["instance"].as<std::string>();
+  }
+
+  if (vm.count("frame_index") > 0)
+  {
+    frameIndex = vm["frame_index"].as<int>();
+  }
+
+}
+
+/**
+ * IMPORTANT: The full arguments to "main()" are needed for SDL on
+ * Windows. Otherwise, one gets the linking error "undefined reference
+ * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
+ **/
+int main(int argc, char* argv[])
+{
+  try
+  {
+    OrthancStone::StoneInitialize();
+
+    ProcessOptions(argc, argv);
+
+    //Orthanc::Logging::EnableInfoLevel(true);
+    //Orthanc::Logging::EnableTraceLevel(true);
+
+    {
+
+#if 1
+      boost::shared_ptr<OrthancStone::SdlViewport> viewport =
+        OrthancStone::SdlOpenGLViewport::Create("Stone of Orthanc", 800, 600);
+#else
+      boost::shared_ptr<OrthancStone::SdlViewport> viewport =
+        OrthancStone::SdlCairoViewport::Create("Stone of Orthanc", 800, 600);
+#endif
+
+      OrthancStone::GenericLoadersContext context(1, 4, 1);
+
+      Orthanc::WebServiceParameters orthancWebService;
+      orthancWebService.SetUrl(orthancUrl);
+      context.SetOrthancParameters(orthancWebService);
+
+      context.StartOracle();
+
+      {
+
+        boost::shared_ptr<SdlSimpleViewerApplication> application(
+          SdlSimpleViewerApplication::Create(context, viewport));
+
+        OrthancStone::DicomSource source;
+
+        application->LoadOrthancFrame(source, instanceId, frameIndex);
+
+        OrthancStone::DefaultViewportInteractor interactor;
+
+        {
+          int scancodeCount = 0;
+          const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
+
+          bool stop = false;
+          while (!stop)
+          {
+            bool paint = false;
+            SDL_Event event;
+            while (SDL_PollEvent(&event))
+            {
+              if (event.type == SDL_QUIT)
+              {
+                stop = true;
+                break;
+              }
+              else if (viewport->IsRefreshEvent(event))
+              {
+                paint = true;
+              }
+              else if (event.type == SDL_WINDOWEVENT &&
+                       (event.window.event == SDL_WINDOWEVENT_RESIZED ||
+                        event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED))
+              {
+                viewport->UpdateSize(event.window.data1, event.window.data2);
+              }
+              else if (event.type == SDL_WINDOWEVENT &&
+                       (event.window.event == SDL_WINDOWEVENT_SHOWN ||
+                        event.window.event == SDL_WINDOWEVENT_EXPOSED))
+              {
+                paint = true;
+              }
+              else if (event.type == SDL_KEYDOWN &&
+                       event.key.repeat == 0 /* Ignore key bounce */)
+              {
+                switch (event.key.keysym.sym)
+                {
+                case SDLK_f:
+                  viewport->ToggleMaximize();
+                  break;
+
+                case SDLK_s:
+                  application->FitContent();
+                  break;
+
+                case SDLK_q:
+                  stop = true;
+                  break;
+
+                default:
+                  break;
+                }
+              }
+              else if (event.type == SDL_MOUSEBUTTONDOWN ||
+                       event.type == SDL_MOUSEMOTION ||
+                       event.type == SDL_MOUSEBUTTONUP)
+              {
+                std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock());
+                if (lock->HasCompositor())
+                {
+                  OrthancStone::PointerEvent p;
+                  OrthancStoneHelpers::GetPointerEvent(p, lock->GetCompositor(),
+                                                       event, keyboardState, scancodeCount);
+
+                  switch (event.type)
+                  {
+                  case SDL_MOUSEBUTTONDOWN:
+                    lock->GetController().HandleMousePress(interactor, p,
+                                                           lock->GetCompositor().GetCanvasWidth(),
+                                                           lock->GetCompositor().GetCanvasHeight());
+                    lock->Invalidate();
+                    break;
+
+                  case SDL_MOUSEMOTION:
+                    if (lock->GetController().HandleMouseMove(p))
+                    {
+                      lock->Invalidate();
+                    }
+                    break;
+
+                  case SDL_MOUSEBUTTONUP:
+                    lock->GetController().HandleMouseRelease(p);
+                    lock->Invalidate();
+                    break;
+
+                  default:
+                    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+                  }
+                }
+              }
+            }
+
+            if (paint)
+            {
+              viewport->Paint();
+            }
+
+            // Small delay to avoid using 100% of CPU
+            SDL_Delay(1);
+          }
+        }
+        context.StopOracle();
+      }
+    }
+
+    OrthancStone::StoneFinalize();
+    return 0;
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "OrthancException: " << e.What();
+    return -1;
+  }
+  catch (OrthancStone::StoneException& e)
+  {
+    LOG(ERROR) << "StoneException: " << e.What();
+    return -1;
+  }
+  catch (std::runtime_error& e)
+  {
+    LOG(ERROR) << "Runtime error: " << e.what();
+    return -1;
+  }
+  catch (...)
+  {
+    LOG(ERROR) << "Native exception";
+    return -1;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/SingleFrameViewer/SdlSimpleViewerApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,168 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../../Sources/Viewport/IViewport.h"
+#include "../../../Sources/Loaders/DicomResourcesLoader.h"
+#include "../../../Sources/Loaders/ILoadersContext.h"
+#include "../../../Sources/Loaders/SeriesFramesLoader.h"
+#include "../../../Sources/Loaders/SeriesThumbnailsLoader.h"
+
+#include <Compatibility.h>  // For std::unique_ptr<>
+
+#include <boost/make_shared.hpp>
+
+
+using OrthancStone::ILoadersContext;
+using OrthancStone::ObserverBase;
+using OrthancStone::IViewport;
+using OrthancStone::DicomResourcesLoader;
+using OrthancStone::SeriesFramesLoader;
+using OrthancStone::TextureBaseSceneLayer;
+using OrthancStone::DicomSource;
+using OrthancStone::SeriesThumbnailsLoader;
+using OrthancStone::LoadedDicomResources;
+using OrthancStone::SeriesThumbnailType;
+using OrthancStone::OracleScheduler;
+using OrthancStone::OrthancRestApiCommand;
+using OrthancStone::OracleScheduler;
+using OrthancStone::OracleScheduler;
+using OrthancStone::OracleScheduler;
+
+
+class SdlSimpleViewerApplication : public ObserverBase<SdlSimpleViewerApplication>
+{
+
+public:
+  static boost::shared_ptr<SdlSimpleViewerApplication> Create(ILoadersContext& context, boost::shared_ptr<IViewport> viewport)
+  {
+    boost::shared_ptr<SdlSimpleViewerApplication> application(new SdlSimpleViewerApplication(context, viewport));
+
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context.Lock());
+      application->dicomLoader_ = DicomResourcesLoader::Create(*lock);
+    }
+
+    application->Register<DicomResourcesLoader::SuccessMessage>(*application->dicomLoader_, &SdlSimpleViewerApplication::Handle);
+
+    return application;
+  }
+
+  void LoadOrthancFrame(const DicomSource& source, const std::string& instanceId, unsigned int frame)
+  {
+    std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+
+    dicomLoader_->ScheduleLoadOrthancResource(boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID),
+                                              0, source, Orthanc::ResourceType_Instance, instanceId,
+                                              new Orthanc::SingleValueObject<unsigned int>(frame));
+  }
+
+#if 0
+  void LoadDicomWebFrame(const DicomSource& source,
+                         const std::string& studyInstanceUid,
+                         const std::string& seriesInstanceUid,
+                         const std::string& sopInstanceUid,
+                         unsigned int frame)
+  {
+    std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+
+    // We first must load the "/metadata" to know the number of frames
+    dicomLoader_->ScheduleGetDicomWeb(
+      boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID), 0, source,
+      "/studies/" + studyInstanceUid + "/series/" + seriesInstanceUid + "/instances/" + sopInstanceUid + "/metadata",
+      new Orthanc::SingleValueObject<unsigned int>(frame));
+  }
+#endif 
+
+  void FitContent()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    lock->GetCompositor().FitContent(lock->GetController().GetScene());
+    lock->Invalidate();
+  }
+
+private:
+  ILoadersContext& context_;
+  boost::shared_ptr<IViewport>             viewport_;
+  boost::shared_ptr<DicomResourcesLoader>  dicomLoader_;
+  boost::shared_ptr<SeriesFramesLoader>    framesLoader_;
+
+  SdlSimpleViewerApplication(ILoadersContext& context,
+                             boost::shared_ptr<IViewport> viewport) :
+    context_(context),
+    viewport_(viewport)
+  {
+  }
+
+  void Handle(const SeriesFramesLoader::FrameLoadedMessage& message)
+  {
+    LOG(INFO) << "Frame decoded! "
+      << message.GetImage().GetWidth() << "x" << message.GetImage().GetHeight()
+      << " " << Orthanc::EnumerationToString(message.GetImage().GetFormat());
+
+    std::unique_ptr<TextureBaseSceneLayer> layer(
+      message.GetInstanceParameters().CreateTexture(message.GetImage()));
+    layer->SetLinearInterpolation(true);
+
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      lock->GetController().GetScene().SetLayer(0, layer.release());
+      lock->GetCompositor().FitContent(lock->GetController().GetScene());
+      lock->Invalidate();
+    }
+  }
+
+  void Handle(const DicomResourcesLoader::SuccessMessage& message)
+  {
+    if (message.GetResources()->GetSize() != 1)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    //message.GetResources()->GetResource(0).Print(stdout);
+
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+      SeriesFramesLoader::Factory f(*message.GetResources());
+
+      framesLoader_ = boost::dynamic_pointer_cast<SeriesFramesLoader>(
+        f.Create(*lock));
+      
+      Register<SeriesFramesLoader::FrameLoadedMessage>(
+        *framesLoader_, &SdlSimpleViewerApplication::Handle);
+
+      assert(message.HasUserPayload());
+
+      const Orthanc::SingleValueObject<unsigned int>& payload =
+        dynamic_cast<const Orthanc::SingleValueObject<unsigned int>&>(
+          message.GetUserPayload());
+
+      LOG(INFO) << "Loading pixel data of frame: " << payload.GetValue();
+      framesLoader_->ScheduleLoadFrame(
+        0, message.GetDicomSource(), payload.GetValue(),
+        message.GetDicomSource().GetQualityCount() - 1 /* download best quality available */,
+        NULL);
+    }
+  }
+
+};
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/Sdl/Utilities.cmake	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,84 @@
+
+
+macro(GetFilenameFromPath TargetVariable Path)
+#message(STATUS "GetFilenameFromPath (1): Path = ${Path} TargetVariable = ${${TargetVariable}}")
+string(REPLACE "\\" "/" PathWithFwdSlashes "${Path}")
+string(REGEX REPLACE "^.*/" "" ${TargetVariable} "${PathWithFwdSlashes}")
+#message(STATUS "GetFilenameFromPath (2): Path = ${Path} Path = ${PathWithFwdSlashes} TargetVariable = ${TargetVariable}")
+endmacro()
+
+macro(GetFilePathWithoutLastExtension TargetVariable FilePath)
+string(REGEX REPLACE "(^.*)\\.([^\\.]+)" "\\1" ${TargetVariable} "${FilePath}")
+#message(STATUS "GetFileNameWithoutLastExtension: FilePath = ${FilePath} TargetVariable = ${${TargetVariable}}")
+endmacro()
+
+macro(Test_GetFilePathWithoutLastExtension)
+set(tmp "/prout/zi/goui.goui.cpp")
+GetFilePathWithoutLastExtension(TargetVariable "${tmp}")
+if(NOT ("${TargetVariable}" STREQUAL "/prout/zi/goui.goui"))
+  message(FATAL_ERROR "Test_GetFilePathWithoutLastExtension failed (1)")
+else()
+  #message(STATUS "Test_GetFilePathWithoutLastExtension: <<OK>>")
+endif()
+endmacro()
+
+Test_GetFilePathWithoutLastExtension()
+
+macro(Test_GetFilenameFromPath)
+set(tmp "/prout/../../dada/zi/goui.goui.cpp")
+GetFilenameFromPath(TargetVariable "${tmp}")
+if(NOT ("${TargetVariable}" STREQUAL "goui.goui.cpp"))
+  message(FATAL_ERROR "Test_GetFilenameFromPath failed")
+else()
+  #message(STATUS "Test_GetFilenameFromPath: <<OK>>")
+endif()
+endmacro()
+
+Test_GetFilenameFromPath()
+
+macro(SortFilesInSourceGroups)
+  if(FALSE)
+    foreach(source IN LISTS ORTHANC_STONE_SOURCES)
+        # if("${source}" MATCHES ".*/pixman.*\\.c")
+        #   message("pixman source: ${source}")
+        # elseif("${source}" MATCHES ".*/pixman.*\\.c")
+        #   message("pixman header: ${source}")
+        # endif()
+        
+        if("${source}" MATCHES ".*\\.\\./.*")
+          message("source raw: ${source}")
+          #file(TO_CMAKE_PATH ${source} sourceCMakePath)
+          get_filename_component(sourceCMakePath ${source} ABSOLUTE)
+          message("source CMake: ${sourceCMakePath}")
+        endif()
+
+        # returns the containing directory with forward slashes
+        # get_filename_component(source_path "${source}" PATH) 
+
+        # converts / to \
+        # string(REPLACE "/" "\\" source_path_msvc "${source_path}")
+        #source_group("Stone ${source_path_msvc}" FILES "${source}")
+    endforeach()
+  endif()
+
+  source_group("Orthanc Framework\\Sources" REGULAR_EXPRESSION ".*/orthanc/(Core|Plugins)/.*cpp")
+  source_group("Orthanc Framework\\Headers" REGULAR_EXPRESSION ".*/orthanc/(Core|Plugins)/.*hpp")
+  source_group("Orthanc Framework\\Headers" REGULAR_EXPRESSION ".*/orthanc/(Core|Plugins)/.*h")
+
+  source_group("Stone Library\\Sources" REGULAR_EXPRESSION ".*/orthanc-stone/.*cpp")
+  source_group("Stone Library\\Headers" REGULAR_EXPRESSION ".*/orthanc-stone/.*hpp")
+  source_group("Stone Library\\Headers" REGULAR_EXPRESSION ".*/orthanc-stone/.*h")
+
+  source_group("Stone Samples\\Source" REGULAR_EXPRESSION ".*orthanc-stone/Samples/.*\\.cpp")
+  source_group("Stone Samples\\Headers" REGULAR_EXPRESSION ".*orthanc-stone/Samples/.*\\.h")
+
+  source_group("ThirdParty\\cairo" REGULAR_EXPRESSION ".*${CMAKE_BINARY_DIR}/cairo[^/]*/.*")
+  source_group("ThirdParty\\pixman" REGULAR_EXPRESSION ".*${CMAKE_BINARY_DIR}/pixman[^/]*/.*")
+  source_group("ThirdParty\\base64" REGULAR_EXPRESSION ".*ThirdParty/base64.*")
+  source_group("ThirdParty\\SDL2" REGULAR_EXPRESSION ".*${CMAKE_BINARY_DIR}/SDL2.*")
+  source_group("ThirdParty\\glew" REGULAR_EXPRESSION ".*${CMAKE_BINARY_DIR}/glew.*")
+  source_group("AUTOGENERATED" REGULAR_EXPRESSION ".*${CMAKE_BINARY_DIR}/AUTOGENERATED/.*")
+  source_group("ThirdParty\\minizip" REGULAR_EXPRESSION ".*ThirdParty/minizip/.*")
+  source_group("ThirdParty\\md5" REGULAR_EXPRESSION ".*ThirdParty/md5/.*")
+endmacro()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,133 @@
+cmake_minimum_required(VERSION 2.8.3)
+
+project(OrthancStone)
+
+# Configuration of the Emscripten compiler for WebAssembly target
+# ---------------------------------------------------------------
+set(USE_WASM ON CACHE BOOL "")
+
+set(EMSCRIPTEN_SET_LLVM_WASM_BACKEND ON CACHE BOOL "")
+
+set(WASM_FLAGS "-s WASM=1 -s FETCH=1")
+if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+  set(WASM_FLAGS "${WASM_FLAGS} -s SAFE_HEAP=1")
+endif()
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
+
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ERROR_ON_UNDEFINED_SYMBOLS=1")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=268435456")  # 256MB + resize
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1")
+add_definitions(
+  -DDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1
+)
+
+# Stone of Orthanc configuration
+# ---------------------------------------------------------------
+set(ALLOW_DOWNLOADS ON)
+
+include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneParameters.cmake)
+
+SET(ENABLE_DCMTK OFF)  # Not necessary
+SET(ENABLE_GOOGLE_TEST OFF)
+SET(ENABLE_LOCALE ON)  # Necessary for text rendering
+SET(ENABLE_WASM ON)
+SET(ORTHANC_SANDBOXED ON)
+
+# this will set up the build system for Stone of Orthanc and will
+# populate the ORTHANC_STONE_SOURCES CMake variable
+include(${ORTHANC_STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
+
+
+# We embed a font to be used for on-screen overlays
+# ---------------------------------------------------------------
+
+DownloadPackage(
+  "a24b8136b8f3bb93f166baf97d9328de"
+  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
+  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
+
+EmbedResources(
+  COLORMAP_HOT ${ORTHANC_STONE_ROOT}/Resources/Colormaps/hot.lut  
+  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
+  )
+
+add_library(OrthancStone STATIC
+  ${ORTHANC_STONE_SOURCES}
+  ${AUTOGENERATED_SOURCES}
+  )
+
+################################################################################
+
+# Define the WASM module
+# ---------------------------------------------------------------
+
+project(RtViewerWasm)
+
+add_executable(RtViewerWasm
+  RtViewer/RtViewerWasm.cpp
+  ../Common/RtViewerApp.cpp
+  ../Common/RtViewerApp.h
+  ../Common/RtViewerView.cpp
+  ../Common/RtViewerView.h
+  )
+
+target_link_libraries(RtViewerWasm OrthancStone)
+
+# Declare installation files for the module
+# ---------------------------------------------------------------
+install(
+  TARGETS RtViewerWasm
+  RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/RtViewer/
+  )
+
+# Declare installation files for the companion files (web scaffolding)
+# please note that ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.js
+# (the generated JS loader for the WASM module) is handled by the `install1`
+# section above: it is considered to be the binary output of 
+# the linker.
+# ---------------------------------------------------------------
+install(
+  FILES
+  ${CMAKE_SOURCE_DIR}/RtViewer/RtViewerWasmApp.js
+  ${CMAKE_SOURCE_DIR}/RtViewer/index.html
+  ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.wasm
+  DESTINATION ${CMAKE_INSTALL_PREFIX}/RtViewer/
+  )
+
+################################################################################
+
+# Define the WASM module
+# ---------------------------------------------------------------
+
+project(SingleFrameViewerWasm)
+
+add_executable(SingleFrameViewerWasm
+  SingleFrameViewer/SingleFrameViewer.cpp
+  )
+
+target_link_libraries(SingleFrameViewerWasm OrthancStone)
+
+# Declare installation files for the module
+# ---------------------------------------------------------------
+install(
+  TARGETS SingleFrameViewerWasm
+  RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/SingleFrameViewer/
+  )
+
+# Declare installation files for the companion files (web scaffolding)
+# please note that ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.js
+# (the generated JS loader for the WASM module) is handled by the `install1`
+# section above: it is considered to be the binary output of 
+# the linker.
+# ---------------------------------------------------------------
+install(
+  FILES
+  ${CMAKE_SOURCE_DIR}/SingleFrameViewer/SingleFrameViewerApp.js
+  ${CMAKE_SOURCE_DIR}/SingleFrameViewer/index.html
+  ${CMAKE_CURRENT_BINARY_DIR}/SingleFrameViewerWasm.wasm
+  DESTINATION ${CMAKE_INSTALL_PREFIX}/SingleFrameViewer/
+  )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/NOTES.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,22 @@
+
+Building WebAssembly samples using Docker
+=========================================
+
+The script "./docker-build.sh" can be used to quickly build the
+WebAssembly samples on any GNU/Linux distribution equipped with
+Docker. This avoids newcomers to install Emscripten and learn the
+CMake options. Just type:
+
+$ ./docker-build.sh Release
+
+After successful build, the binaries will be installed in the
+following folder (i.e. in the folder "wasm-binaries" at the root of
+the source distribution):
+
+$ ls -l ../../wasm-binaries
+
+
+NB: The source code of the Docker build environment can be found at
+the following location:
+https://github.com/jodogne/OrthancDocker/tree/master/wasm-builder
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/RtViewer/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,89 @@
+cmake_minimum_required(VERSION 2.8.3)
+
+project(RtViewerWasm)
+
+# Configuration of the Emscripten compiler for WebAssembly target
+# ---------------------------------------------------------------
+set(USE_WASM ON CACHE BOOL "")
+
+set(EMSCRIPTEN_SET_LLVM_WASM_BACKEND ON CACHE BOOL "")
+
+set(WASM_FLAGS "-s WASM=1 -s FETCH=1")
+if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+  set(WASM_FLAGS "${WASM_FLAGS} -s SAFE_HEAP=1")
+endif()
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
+
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ERROR_ON_UNDEFINED_SYMBOLS=1")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=268435456")  # 256MB + resize
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1")
+add_definitions(
+  -DDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1
+)
+
+# Stone of Orthanc configuration
+# ---------------------------------------------------------------
+set(ALLOW_DOWNLOADS ON)
+
+include(${CMAKE_SOURCE_DIR}/../../../Resources/CMake/OrthancStoneParameters.cmake)
+
+SET(ENABLE_DCMTK OFF)  # Not necessary
+SET(ENABLE_GOOGLE_TEST OFF)
+SET(ENABLE_LOCALE ON)  # Necessary for text rendering
+SET(ENABLE_WASM ON)
+SET(ORTHANC_SANDBOXED ON)
+
+# this will set up the build system for Stone of Orthanc and will
+# populate the ORTHANC_STONE_SOURCES CMake variable
+include(${ORTHANC_STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
+
+
+# We embed a font to be used for on-screen overlays
+# ---------------------------------------------------------------
+
+DownloadPackage(
+  "a24b8136b8f3bb93f166baf97d9328de"
+  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
+  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
+
+EmbedResources(
+  COLORMAP_HOT ${ORTHANC_STONE_ROOT}/Resources/Colormaps/hot.lut  
+  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
+  )
+
+# Define the WASM module
+# ---------------------------------------------------------------
+add_executable(RtViewerWasm
+  RtViewerWasm.cpp
+  ../../Common/RtViewerApp.cpp
+  ../../Common/RtViewerApp.h
+  ../../Common/RtViewerView.cpp
+  ../../Common/RtViewerView.h
+  ${ORTHANC_STONE_SOURCES}
+  ${AUTOGENERATED_SOURCES}
+  )
+
+# Declare installation files for the module
+# ---------------------------------------------------------------
+install(
+  TARGETS RtViewerWasm
+  RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}
+  )
+
+# Declare installation files for the companion files (web scaffolding)
+# please note that ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.js
+# (the generated JS loader for the WASM module) is handled by the `install1`
+# section above: it is considered to be the binary output of 
+# the linker.
+# ---------------------------------------------------------------
+install(
+  FILES
+  ${CMAKE_SOURCE_DIR}/RtViewerWasmApp.js
+  ${CMAKE_SOURCE_DIR}/index.html
+  ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.wasm
+  DESTINATION ${CMAKE_INSTALL_PREFIX}
+  )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/RtViewer/OBSOLETE.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,559 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "../../../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
+#include "../../../Framework/Oracle/SleepOracleCommand.h"
+#include "../../../Framework/Oracle/WebAssemblyOracle.h"
+#include "../../../Framework/Scene2D/GrayscaleStyleConfigurator.h"
+#include "../../../Framework/Scene2D/OpenGLCompositor.h"
+#include "../../../Framework/Scene2D/PanSceneTracker.h"
+#include "../../../Framework/Scene2D/RotateSceneTracker.h"
+#include "../../../Framework/Scene2D/ZoomSceneTracker.h"
+#include "../../../Framework/Scene2DViewport/UndoStack.h"
+#include "../../../Framework/Scene2DViewport/ViewportController.h"
+#include "../../../Framework/StoneInitialization.h"
+#include "../../../Framework/Viewport/WebAssemblyViewport.h"
+#include "../../../Framework/Volumes/VolumeSceneLayerSource.h"
+
+#include <OrthancException.h>
+
+#include <emscripten/html5.h>
+#include <emscripten.h>
+
+#include <boost/make_shared.hpp>
+
+
+class ViewportManager;
+
+static const unsigned int FONT_SIZE = 32;
+
+boost::shared_ptr<OrthancStone::DicomVolumeImage>                     ct_(new OrthancStone::DicomVolumeImage);
+boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> loader_;
+std::unique_ptr<ViewportManager>                        widget1_;
+std::unique_ptr<ViewportManager>                        widget2_;
+std::unique_ptr<ViewportManager>                        widget3_;
+//OrthancStone::MessageBroker                                         broker_;
+//OrthancStone::WebAssemblyOracle                                     oracle_(broker_);
+std::unique_ptr<OrthancStone::IFlexiblePointerTracker>                tracker_;
+static std::map<std::string, std::string>                             arguments_;
+static bool                                                           ctrlDown_ = false;
+
+
+#if 0
+
+// use the one from WebAssemblyViewport
+static OrthancStone::PointerEvent* ConvertMouseEvent(
+  const EmscriptenMouseEvent&        source,
+  OrthancStone::IViewport& viewport)
+{
+
+  std::unique_ptr<OrthancStone::PointerEvent> target(
+    new OrthancStone::PointerEvent);
+
+  target->AddPosition(viewport.GetPixelCenterCoordinates(
+                        source.targetX, source.targetY));
+  target->SetAltModifier(source.altKey);
+  target->SetControlModifier(source.ctrlKey);
+  target->SetShiftModifier(source.shiftKey);
+
+  return target.release();
+}
+#endif
+
+
+EM_BOOL OnMouseEvent(int eventType, 
+                     const EmscriptenMouseEvent *mouseEvent, 
+                     void *userData)
+{
+  if (mouseEvent != NULL &&
+      userData != NULL)
+  {
+    boost::shared_ptr<OrthancStone::WebGLViewport>& viewport = 
+      *reinterpret_cast<boost::shared_ptr<OrthancStone::WebGLViewport>*>(userData);
+
+    std::unique_ptr<OrthancStone::IViewport::ILock> lock = (*viewport)->Lock();
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+    
+    switch (eventType)
+    {
+      case EMSCRIPTEN_EVENT_CLICK:
+      {
+        static unsigned int count = 0;
+        char buf[64];
+        sprintf(buf, "click %d", count++);
+
+        std::unique_ptr<OrthancStone::TextSceneLayer> layer(new OrthancStone::TextSceneLayer);
+        layer->SetText(buf);
+        scene.SetLayer(100, layer.release());
+        lock->Invalidate();
+        break;
+      }
+
+      case EMSCRIPTEN_EVENT_MOUSEDOWN:
+      {
+        boost::shared_ptr<OrthancStone::IFlexiblePointerTracker> t;
+
+        {
+          std::unique_ptr<OrthancStone::PointerEvent> event(
+            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
+
+          switch (mouseEvent->button)
+          {
+            case 0:  // Left button
+              emscripten_console_log("Creating RotateSceneTracker");
+              t.reset(new OrthancStone::RotateSceneTracker(
+                        viewport, *event));
+              break;
+
+            case 1:  // Middle button
+              emscripten_console_log("Creating PanSceneTracker");
+              LOG(INFO) << "Creating PanSceneTracker" ;
+              t.reset(new OrthancStone::PanSceneTracker(
+                        viewport, *event));
+              break;
+
+            case 2:  // Right button
+              emscripten_console_log("Creating ZoomSceneTracker");
+              t.reset(new OrthancStone::ZoomSceneTracker(
+                        viewport, *event, controller->GetViewport().GetCanvasWidth()));
+              break;
+
+            default:
+              break;
+          }
+        }
+
+        if (t.get() != NULL)
+        {
+          tracker_.reset(
+            new OrthancStone::ActiveTracker(t, controller->GetViewport().GetCanvasIdentifier()));
+          controller->GetViewport().Refresh();
+        }
+
+        break;
+      }
+
+      case EMSCRIPTEN_EVENT_MOUSEMOVE:
+        if (tracker_.get() != NULL)
+        {
+          std::unique_ptr<OrthancStone::PointerEvent> event(
+            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
+          tracker_->PointerMove(*event);
+          controller->GetViewport().Refresh();
+        }
+        break;
+
+      case EMSCRIPTEN_EVENT_MOUSEUP:
+        if (tracker_.get() != NULL)
+        {
+          std::unique_ptr<OrthancStone::PointerEvent> event(
+            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
+          tracker_->PointerUp(*event);
+          controller->GetViewport().Refresh();
+          if (!tracker_->IsAlive())
+            tracker_.reset();
+        }
+        break;
+
+      default:
+        break;
+    }
+  }
+
+  return true;
+}
+
+
+void SetupEvents(const std::string& canvas,
+                 boost::shared_ptr<OrthancStone::WebGLViewport>& viewport)
+{
+  emscripten_set_mousedown_callback(canvas.c_str(), &viewport, false, OnMouseEvent);
+  emscripten_set_mousemove_callback(canvas.c_str(), &viewport, false, OnMouseEvent);
+  emscripten_set_mouseup_callback(canvas.c_str(), &viewport, false, OnMouseEvent);
+}
+
+  class ViewportManager : public OrthanStone::ObserverBase<ViewportManager>
+  {
+  private:
+    OrthancStone::WebAssemblyViewport         viewport_;
+    std::unique_ptr<VolumeSceneLayerSource>   source_;
+    VolumeProjection                          projection_;
+    std::vector<CoordinateSystem3D>           planes_;
+    size_t                                    currentPlane_;
+
+    void Handle(const DicomVolumeImage::GeometryReadyMessage& message)
+    {
+      LOG(INFO) << "Geometry is available";
+
+      const VolumeImageGeometry& geometry = message.GetOrigin().GetGeometry();
+
+      const unsigned int depth = geometry.GetProjectionDepth(projection_);
+
+      // select an initial cutting plane halfway through the volume
+      currentPlane_ = depth / 2;
+
+      planes_.resize(depth);
+
+      for (unsigned int z = 0; z < depth; z++)
+      {
+        planes_[z] = geometry.GetProjectionSlice(projection_, z);
+      }
+
+      Refresh();
+
+      viewport_.FitContent();
+    }
+    
+  public:
+    ViewportManager(const std::string& canvas,
+                    VolumeProjection projection) :
+      projection_(projection),
+      currentPlane_(0)
+    {
+      viewport_ = OrthancStone::WebGLViewport::Create(canvas);
+    }
+
+    void UpdateSize()
+    {
+      viewport_.UpdateSize();
+    }
+
+    void SetSlicer(int layerDepth,
+                   const boost::shared_ptr<IVolumeSlicer>& slicer,
+                   IObservable& loader,
+                   ILayerStyleConfigurator* configurator)
+    {
+      if (source_.get() != NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                        "Only one slicer can be registered");
+      }
+      
+      loader.RegisterObserverCallback(
+        new Callable<ViewportManager, DicomVolumeImage::GeometryReadyMessage>
+        (*this, &ViewportManager::Handle));
+
+      source_.reset(new VolumeSceneLayerSource(viewport_.GetScene(), layerDepth, slicer));
+
+      if (configurator != NULL)
+      {
+        source_->SetConfigurator(configurator);
+      }
+    }    
+
+    void Refresh()
+    {
+      if (source_.get() != NULL &&
+          currentPlane_ < planes_.size())
+      {
+        source_->Update(planes_[currentPlane_]);
+        viewport_.Refresh();
+      }
+    }
+
+    size_t GetSlicesCount() const
+    {
+      return planes_.size();
+    }
+
+    void Scroll(int delta)
+    {
+      if (!planes_.empty())
+      {
+        int tmp = static_cast<int>(currentPlane_) + delta;
+        unsigned int next;
+
+        if (tmp < 0)
+        {
+          next = 0;
+        }
+        else if (tmp >= static_cast<int>(planes_.size()))
+        {
+          next = planes_.size() - 1;
+        }
+        else
+        {
+          next = static_cast<size_t>(tmp);
+        }
+
+        if (next != currentPlane_)
+        {
+          currentPlane_ = next;
+          Refresh();
+        }
+      }
+    }
+  };
+}
+
+
+EM_BOOL OnWindowResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData)
+{
+  try
+  {
+    if (widget1_.get() != NULL)
+    {
+      widget1_->UpdateSize();
+    }
+  
+    if (widget2_.get() != NULL)
+    {
+      widget2_->UpdateSize();
+    }
+  
+    if (widget3_.get() != NULL)
+    {
+      widget3_->UpdateSize();
+    }
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "Exception while updating canvas size: " << e.What();
+  }
+  
+  return true;
+}
+
+EM_BOOL OnAnimationFrame(double time, void *userData)
+{
+  try
+  {
+    if (widget1_.get() != NULL)
+    {
+      widget1_->Refresh();
+    }
+  
+    if (widget2_.get() != NULL)
+    {
+      widget2_->Refresh();
+    }
+  
+    if (widget3_.get() != NULL)
+    {
+      widget3_->Refresh();
+    }
+
+    return true;
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "Exception in the animation loop, stopping now: " << e.What();
+    return false;
+  }  
+}
+
+EM_BOOL OnMouseWheel(int eventType,
+                     const EmscriptenWheelEvent *wheelEvent,
+                     void *userData)
+{
+  try
+  {
+    if (userData != NULL)
+    {
+      int delta = 0;
+
+      if (wheelEvent->deltaY < 0)
+      {
+        delta = -1;
+      }
+           
+      if (wheelEvent->deltaY > 0)
+      {
+        delta = 1;
+      }
+
+      OrthancStone::ViewportManager& widget =
+        *reinterpret_cast<OrthancStone::ViewportManager*>(userData);
+      
+      if (ctrlDown_)
+      {
+        delta *= static_cast<int>(widget.GetSlicesCount() / 10);
+      }
+
+      widget.Scroll(delta);
+    }
+  }
+  catch (Orthanc::OrthancException& e)
+  {
+    LOG(ERROR) << "Exception in the wheel event: " << e.What();
+  }
+  
+  return true;
+}
+
+
+EM_BOOL OnKeyDown(int eventType,
+                  const EmscriptenKeyboardEvent *keyEvent,
+                  void *userData)
+{
+  ctrlDown_ = keyEvent->ctrlKey;
+  return false;
+}
+
+
+EM_BOOL OnKeyUp(int eventType,
+                const EmscriptenKeyboardEvent *keyEvent,
+                void *userData)
+{
+  ctrlDown_ = false;
+  return false;
+}
+
+
+
+#if 0
+namespace OrthancStone
+{
+  class TestSleep : public IObserver
+  {
+  private:
+    WebAssemblyOracle&  oracle_;
+
+    void Schedule()
+    {
+      oracle_.Schedule(*this, new OrthancStone::SleepOracleCommand(2000));
+    }
+    
+    void Handle(const SleepOracleCommand::TimeoutMessage& message)
+    {
+      LOG(INFO) << "TIMEOUT";
+      Schedule();
+    }
+    
+  public:
+    TestSleep(MessageBroker& broker,
+              WebAssemblyOracle& oracle) :
+      IObserver(broker),
+      oracle_(oracle)
+    {
+      oracle.RegisterObserverCallback(
+        new Callable<TestSleep, SleepOracleCommand::TimeoutMessage>
+        (*this, &TestSleep::Handle));
+
+      LOG(INFO) << "STARTING";
+      Schedule();
+    }
+  };
+
+  //static TestSleep testSleep(broker_, oracle_);
+}
+#endif
+
+static bool GetArgument(std::string& value,
+                        const std::string& key)
+{
+  std::map<std::string, std::string>::const_iterator found = arguments_.find(key);
+
+  if (found == arguments_.end())
+  {
+    return false;
+  }
+  else
+  {
+    value = found->second;
+    return true;
+  }
+}
+
+
+extern "C"
+{
+  int main(int argc, char const *argv[]) 
+  {
+    OrthancStone::StoneInitialize();
+    Orthanc::Logging::EnableInfoLevel(true);
+    // Orthanc::Logging::EnableTraceLevel(true);
+    EM_ASM(window.dispatchEvent(new CustomEvent("WebAssemblyLoaded")););
+  }
+
+  EMSCRIPTEN_KEEPALIVE
+  void SetArgument(const char* key, const char* value)
+  {
+    // This is called for each GET argument (cf. "app.js")
+    LOG(INFO) << "Received GET argument: [" << key << "] = [" << value << "]";
+    arguments_[key] = value;
+  }
+
+  EMSCRIPTEN_KEEPALIVE
+  void Initialize()
+  {
+    try
+    {
+      oracle_.SetOrthancRoot("..");
+      
+      loader_.reset(new OrthancStone::OrthancSeriesVolumeProgressiveLoader(ct_, oracle_, oracle_));
+    
+      widget1_.reset(new OrthancStone::ViewportManager("mycanvas1", OrthancStone::VolumeProjection_Axial));
+      {
+        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
+        style->SetLinearInterpolation(true);
+        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
+        widget1_->SetSlicer(0, loader_, *loader_, style.release());
+      }
+      widget1_->UpdateSize();
+
+      widget2_.reset(new OrthancStone::ViewportManager("mycanvas2", OrthancStone::VolumeProjection_Coronal));
+      {
+        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
+        style->SetLinearInterpolation(true);
+        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
+        widget2_->SetSlicer(0, loader_, *loader_, style.release());
+      }
+      widget2_->UpdateSize();
+
+      widget3_.reset(new OrthancStone::ViewportManager("mycanvas3", OrthancStone::VolumeProjection_Sagittal));
+      {
+        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
+        style->SetLinearInterpolation(true);
+        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
+        widget3_->SetSlicer(0, loader_, *loader_, style.release());
+      }
+      widget3_->UpdateSize();
+
+      emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnWindowResize); // DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 !!
+
+      emscripten_set_wheel_callback("#mycanvas1", widget1_.get(), false, OnMouseWheel);
+      emscripten_set_wheel_callback("#mycanvas2", widget2_.get(), false, OnMouseWheel);
+      emscripten_set_wheel_callback("#mycanvas3", widget3_.get(), false, OnMouseWheel);
+
+      emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyDown);
+      emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyUp);
+    
+      //emscripten_request_animation_frame_loop(OnAnimationFrame, NULL);
+
+      std::string ct;
+      if (GetArgument(ct, "ct"))
+      {
+        //loader_->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");
+        loader_->LoadSeries(ct);
+      }
+      else
+      {
+        LOG(ERROR) << "No Orthanc identifier for the CT series was provided";
+      }
+    }
+    catch (Orthanc::OrthancException& e)
+    {
+      LOG(ERROR) << "Exception during Initialize(): " << e.What();
+    }
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/RtViewer/RtViewerWasm.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,198 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "../../Common/RtViewerApp.h"
+#include "../../Common/RtViewerView.h"
+#include "../../Common/SampleHelpers.h"
+
+// Stone of Orthanc includes
+#include "../../../Sources/Loaders/WebAssemblyLoadersContext.h"
+#include "../../../Sources/StoneException.h"
+#include "../../../Sources/StoneInitialization.h"
+#include "../../../Sources/Viewport/WebGLViewport.h"
+//#include "../../../Sources/OpenGL/WebAssemblyOpenGLContext.h"
+
+#include <Toolbox.h>
+
+#include <boost/program_options.hpp>
+#include <boost/shared_ptr.hpp>
+// #include <boost/pointer_cast.hpp> this include might be necessary in more recent boost versions
+
+#include <emscripten.h>
+#include <emscripten/html5.h>
+
+
+#define DISPATCH_JAVASCRIPT_EVENT(name)                         \
+  EM_ASM(                                                       \
+    const customEvent = document.createEvent("CustomEvent");    \
+    customEvent.initCustomEvent(name, false, false, undefined); \
+    window.dispatchEvent(customEvent);                          \
+    );
+
+#define EXTERN_CATCH_EXCEPTIONS                         \
+  catch (Orthanc::OrthancException& e)                  \
+  {                                                     \
+    LOG(ERROR) << "OrthancException: " << e.What();     \
+    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
+  }                                                     \
+  catch (OrthancStone::StoneException& e)               \
+  {                                                     \
+    LOG(ERROR) << "StoneException: " << e.What();       \
+    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
+  }                                                     \
+  catch (std::exception& e)                             \
+  {                                                     \
+    LOG(ERROR) << "Runtime error: " << e.what();        \
+    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
+  }                                                     \
+  catch (...)                                           \
+  {                                                     \
+    LOG(ERROR) << "Native exception";                   \
+    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
+  }
+
+namespace OrthancStone
+{
+  //   typedef EM_BOOL (*OnMouseWheelFunc)(int eventType, const EmscriptenWheelEvent* wheelEvent, void* userData);
+
+  EM_BOOL RtViewerView_Scroll(int eventType, 
+                              const EmscriptenWheelEvent* wheelEvent, 
+                              void* userData)
+  {
+    RtViewerView* that = reinterpret_cast<RtViewerView*>(userData);
+
+    int delta = 0;
+    if (wheelEvent->deltaY < 0)
+      delta = -1;
+    if (wheelEvent->deltaY > 0)
+      delta = 1;
+
+    that->Scroll(delta);
+
+    return 1;
+  }
+  
+  boost::shared_ptr<IViewport> RtViewerView::CreateViewport(
+    const std::string& canvasId)
+  {
+    boost::shared_ptr<IViewport> viewport = WebGLViewport::Create(canvasId);
+
+    void* userData = reinterpret_cast<void*>(this);
+
+    // manually add the mouse wheel handler
+
+    std::string selector = "#" + canvasId;
+
+    emscripten_set_wheel_callback_on_thread(
+      selector.c_str(),
+      userData,
+      false,
+      &RtViewerView_Scroll,
+      EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD);
+
+    return viewport;
+  }
+
+  void RtViewerView::TakeScreenshot(const std::string& target,
+                                   unsigned int canvasWidth,
+                                   unsigned int canvasHeight)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+  }
+
+
+  void RtViewerApp::RunWasm()
+  {
+    loadersContext_.reset(new OrthancStone::WebAssemblyLoadersContext(1, 4, 1));
+
+    // we are in WASM --> downcast to concrete type
+    boost::shared_ptr<WebAssemblyLoadersContext> loadersContext = 
+      boost::dynamic_pointer_cast<WebAssemblyLoadersContext>(loadersContext_);
+
+    if (HasArgument("orthanc"))
+      loadersContext->SetLocalOrthanc(GetArgument("orthanc"));
+    else 
+      loadersContext->SetLocalOrthanc("..");
+
+    loadersContext->SetDicomCacheSize(128 * 1024 * 1024);  // 128MB
+
+    CreateLoaders();
+    
+    CreateView("RtViewer_Axial", VolumeProjection_Axial);
+    CreateView("RtViewer_Coronal", VolumeProjection_Coronal);
+    CreateView("RtViewer_Sagittal", VolumeProjection_Sagittal);
+
+    for (size_t i = 0; i < views_.size(); ++i)
+    {
+      views_[i]->PrepareViewport();
+    }
+
+    StartLoaders();
+
+    DefaultViewportInteractor interactor;
+  }
+}
+
+extern "C"
+{
+  boost::shared_ptr<OrthancStone::RtViewerApp> g_app;
+
+  int main(int argc, char const *argv[]) 
+  {
+    try
+    {
+      OrthancStone::StoneInitialize();
+      Orthanc::Logging::Initialize();
+      Orthanc::Logging::EnableTraceLevel(true);
+
+      LOG(WARNING) << "Initializing native Stone";
+
+      LOG(WARNING) << "Compiled with Emscripten " << __EMSCRIPTEN_major__
+                   << "." << __EMSCRIPTEN_minor__
+                   << "." << __EMSCRIPTEN_tiny__;
+
+      LOG(INFO) << "Endianness: " << Orthanc::EnumerationToString(Orthanc::Toolbox::DetectEndianness());
+
+      g_app = OrthancStone::RtViewerApp::Create();
+  
+      DISPATCH_JAVASCRIPT_EVENT("WasmModuleInitialized");
+    }
+    EXTERN_CATCH_EXCEPTIONS;
+  }
+
+  EMSCRIPTEN_KEEPALIVE
+  void Initialize(const char* canvasId)
+  {
+    try
+    {
+      g_app->RunWasm();
+    }
+    EXTERN_CATCH_EXCEPTIONS;
+  }
+
+  EMSCRIPTEN_KEEPALIVE
+  void SetArgument(const char* key, const char* value)
+  {
+    // This is called for each GET argument (cf. "app.js")
+    LOG(INFO) << "Received GET argument: [" << key << "] = [" << value << "]";
+    g_app->SetArgument(key, value);
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/RtViewer/RtViewerWasmApp.js	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,85 @@
+
+// This object wraps the functions exposed by the wasm module
+
+const WasmModuleWrapper = function() {
+  this._InitializeViewport = undefined;
+};
+
+WasmModuleWrapper.prototype.Setup = function(Module) {
+  this._SetArgument = Module.cwrap('SetArgument', null, [ 'string', 'string' ]);
+  this._Initialize = Module.cwrap('Initialize', null, [ 'string' ]);
+};
+
+WasmModuleWrapper.prototype.SetArgument = function(key, value) {
+  this._SetArgument(key, value);
+};
+
+WasmModuleWrapper.prototype.Initialize = function(canvasId) {
+  this._Initialize(canvasId);
+};
+
+var wasmModuleWrapper = new WasmModuleWrapper();
+
+$(document).ready(function() {
+
+  window.addEventListener('WasmModuleInitialized', function() {
+
+    // bind the C++ global functions
+    wasmModuleWrapper.Setup(Module);
+
+    console.warn('Native C++ module initialized');
+
+    // Loop over the GET arguments
+    var parameters = window.location.search.substr(1);
+    if (parameters != null && parameters != '') {
+      var tokens = parameters.split('&');
+      for (var i = 0; i < tokens.length; i++) {
+        var arg = tokens[i].split('=');
+        if (arg.length == 2) {
+          // Send each GET argument to WebAssembly
+          wasmModuleWrapper.SetArgument(arg[0], decodeURIComponent(arg[1]));
+        }
+      }
+    }
+    wasmModuleWrapper.Initialize();
+  });
+
+  window.addEventListener('StoneException', function() {
+    alert('Exception caught in C++ code');
+  });    
+
+  var scriptSource;
+
+  if ('WebAssembly' in window) {
+    console.warn('Loading WebAssembly');
+    scriptSource = 'RtViewerWasm.js';
+  } else {
+    console.error('Your browser does not support WebAssembly!');
+  }
+
+  // Option 1: Loading script using plain HTML
+  
+  /*
+    var script = document.createElement('script');
+    script.src = scriptSource;
+    script.type = 'text/javascript';
+    document.body.appendChild(script);
+  */
+
+  // Option 2: Loading script using AJAX (gives the opportunity to
+  // report explicit errors)
+  
+  axios.get(scriptSource)
+    .then(function (response) {
+      var script = document.createElement('script');
+      script.innerHTML = response.data;
+      script.type = 'text/javascript';
+      document.body.appendChild(script);
+    })
+    .catch(function (error) {
+      alert('Cannot load the WebAssembly framework');
+    });
+});
+
+// http://localhost:9979/rtviewer/index.html?loglevel=trace&ctseries=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&rtdose=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb&rtstruct=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/RtViewer/RtViewerWasmWrapper.js	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,27 @@
+
+const Stone = function() {
+  this._InitializeViewport = undefined;
+  this._LoadOrthanc = undefined;
+  this._LoadDicomWeb = undefined;
+};
+
+Stone.prototype.Setup = function(Module) {
+  this._InitializeViewport = Module.cwrap('InitializeViewport', null, [ 'string' ]);
+  this._LoadOrthanc = Module.cwrap('LoadOrthanc', null, [ 'string', 'int' ]);
+  this._LoadDicomWeb = Module.cwrap('LoadDicomWeb', null, [ 'string', 'string', 'string', 'string', 'int' ]);
+};
+
+Stone.prototype.InitializeViewport = function(canvasId) {
+  this._InitializeViewport(canvasId);
+};
+
+Stone.prototype.LoadOrthanc = function(instance, frame) {
+  this._LoadOrthanc(instance, frame);
+};
+
+Stone.prototype.LoadDicomWeb = function(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame) {
+  this._LoadDicomWeb(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame);
+};
+
+var stone = new Stone();
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/RtViewer/index.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,64 @@
+<!doctype html>
+<html lang="en-us">
+  <head>
+    <title>Stone of Orthanc Single Frame Viewer </title>
+    <meta charset="utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
+    <meta name="apple-mobile-web-app-capable" content="yes" />
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
+    <link rel="icon" href="data:;base64,iVBORw0KGgo=">
+
+    <!-- Disable pinch zoom on mobile devices -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <meta name="HandheldFriendly" content="true" />
+    
+    <style>
+      html, body {
+      width: 100%;
+      height: 100%;
+      margin: 0px;
+      border: 0;
+      overflow: hidden; /*  Disable scrollbars */
+      display: block;  /* No floating content on sides */
+      }
+
+      #RtViewer_Axial {
+        position: absolute;
+        left: 0%;
+        top: 0%;
+        background-color: red;
+        width: 50%;
+        height: 100%;
+      }
+
+      #RtViewer_Coronal {
+        position: absolute;
+        left: 50%;
+        top: 0%;
+        background-color: green;
+        width: 50%;
+        height: 50%;
+      }
+
+      #RtViewer_Sagittal {
+        position: absolute;
+        left: 50%;
+        top: 50%;
+        background-color: blue;
+        width: 50%;
+        height: 50%;
+      }
+    </style>
+  </head>
+  <body>
+    <canvas id="RtViewer_Axial" oncontextmenu="return false;"></canvas>
+    <canvas id="RtViewer_Coronal" oncontextmenu="return false;"></canvas>
+    <canvas id="RtViewer_Sagittal" oncontextmenu="return false;"></canvas>
+
+    <script src="https://code.jquery.com/jquery-3.4.1.js"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.0/axios.js"></script>
+
+    <script src="RtViewerWasmApp.js"></script>
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/SingleFrameViewer/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,70 @@
+cmake_minimum_required(VERSION 2.8.3)
+
+project(SingleFrameViewer)
+
+# Configuration of the Emscripten compiler for WebAssembly target
+# ---------------------------------------------------------------
+set(USE_WASM ON CACHE BOOL "")
+
+set(EMSCRIPTEN_SET_LLVM_WASM_BACKEND ON CACHE BOOL "")
+
+set(WASM_FLAGS "-s WASM=1 -s FETCH=1")
+if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+  set(WASM_FLAGS "${WASM_FLAGS} -s SAFE_HEAP=1")
+endif()
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
+
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ERROR_ON_UNDEFINED_SYMBOLS=1")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=268435456")  # 256MB + resize
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1")
+add_definitions(
+  -DDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1
+)
+
+# Stone of Orthanc configuration
+# ---------------------------------------------------------------
+set(ALLOW_DOWNLOADS ON)
+
+include(${CMAKE_SOURCE_DIR}/../../../Resources/CMake/OrthancStoneParameters.cmake)
+
+SET(ENABLE_DCMTK OFF)  # Not necessary
+SET(ENABLE_GOOGLE_TEST OFF)
+SET(ENABLE_LOCALE ON)  # Necessary for text rendering
+SET(ENABLE_WASM ON)
+SET(ORTHANC_SANDBOXED ON)
+
+# this will set up the build system for Stone of Orthanc and will
+# populate the ORTHANC_STONE_SOURCES CMake variable
+include(${ORTHANC_STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
+
+# Define the WASM module
+# ---------------------------------------------------------------
+add_executable(SingleFrameViewerWasm
+  SingleFrameViewer.cpp
+  ${ORTHANC_STONE_SOURCES}
+  )
+
+# Declare installation files for the module
+# ---------------------------------------------------------------
+install(
+  TARGETS SingleFrameViewerWasm
+  RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}
+  )
+
+# Declare installation files for the companion files (web scaffolding)
+# please note that ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.js
+# (the generated JS loader for the WASM module) is handled by the `install1`
+# section above: it is considered to be the binary output of 
+# the linker.
+# ---------------------------------------------------------------
+install(
+  FILES
+  ${CMAKE_SOURCE_DIR}/SingleFrameViewerApp.js
+  ${CMAKE_SOURCE_DIR}/index.html
+  ${CMAKE_CURRENT_BINARY_DIR}/SingleFrameViewerWasm.wasm
+  DESTINATION ${CMAKE_INSTALL_PREFIX}
+  )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/SingleFrameViewer/CMakeSettings.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,39 @@
+{
+  "configurations": [
+    {
+      "name": "wasm32-RelWithDebInfo",
+      "generator": "Ninja",
+      "configurationType": "RelWithDebInfo",
+      //"inheritEnvironments": [ "msvc_x64_x64" ],
+      "buildRoot": "${projectDir}\\out\\build\\${name}",
+      "installRoot": "${projectDir}\\out\\install\\${name}",
+      "cmakeCommandArgs": "",
+      "buildCommandArgs": "-v",
+      "ctestCommandArgs": "",
+      "cmakeToolchain": "C:/osi/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake",
+      "intelliSenseMode": "windows-clang-x64",
+      "variables": [
+        {
+          "name": "CMAKE_BUILD_TYPE",
+          "value": "RelWithDebInfo",
+          "type": "STRING"
+        },
+        {
+          "name": "ALLOW_DOWNLOADS",
+          "value": "True",
+          "type": "BOOL"
+        },
+        {
+          "name": "STATIC_BUILD",
+          "value": "True",
+          "type": "BOOL"
+        },
+        {
+          "name": "OPENSSL_NO_CAPIENG",
+          "value": "True",
+          "type": "BOOL"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/SingleFrameViewer/SingleFrameViewer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,169 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SingleFrameViewerApplication.h"
+
+#include "../../../Sources/Loaders/WebAssemblyLoadersContext.h"
+#include "../../../Sources/StoneException.h"
+#include "../../../Sources/StoneInitialization.h"
+
+#include <Compatibility.h>  // For std::unique_ptr<>
+#include <Toolbox.h>
+
+#include <emscripten.h>
+#include <emscripten/html5.h>
+
+
+#define DISPATCH_JAVASCRIPT_EVENT(name)                         \
+  EM_ASM(                                                       \
+    const customEvent = document.createEvent("CustomEvent");    \
+    customEvent.initCustomEvent(name, false, false, undefined); \
+    window.dispatchEvent(customEvent);                          \
+    );
+
+#define EXTERN_CATCH_EXCEPTIONS                         \
+  catch (Orthanc::OrthancException& e)                  \
+  {                                                     \
+    LOG(ERROR) << "OrthancException: " << e.What();     \
+    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
+  }                                                     \
+  catch (OrthancStone::StoneException& e)               \
+  {                                                     \
+    LOG(ERROR) << "StoneException: " << e.What();       \
+    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
+  }                                                     \
+  catch (std::exception& e)                             \
+  {                                                     \
+    LOG(ERROR) << "Runtime error: " << e.what();        \
+    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
+  }                                                     \
+  catch (...)                                           \
+  {                                                     \
+    LOG(ERROR) << "Native exception";                   \
+    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
+  }
+
+
+
+namespace OrthancStone
+{
+}
+
+static std::unique_ptr<OrthancStone::WebAssemblyLoadersContext>  context_;
+static boost::shared_ptr<OrthancStone::Application>  application_;
+
+extern "C"
+{
+  int main(int argc, char const *argv[]) 
+  {
+    try
+    {
+      Orthanc::Logging::Initialize();
+      Orthanc::Logging::EnableInfoLevel(true);
+      //Orthanc::Logging::EnableTraceLevel(true);
+      LOG(WARNING) << "Initializing native Stone";
+
+      LOG(WARNING) << "Compiled with Emscripten " << __EMSCRIPTEN_major__
+                   << "." << __EMSCRIPTEN_minor__
+                   << "." << __EMSCRIPTEN_tiny__;
+
+      LOG(INFO) << "Endianness: " << Orthanc::EnumerationToString(Orthanc::Toolbox::DetectEndianness());
+      context_.reset(new OrthancStone::WebAssemblyLoadersContext(1, 4, 1));
+      context_->SetLocalOrthanc("..");
+      context_->SetDicomCacheSize(128 * 1024 * 1024);  // 128MB
+  
+      DISPATCH_JAVASCRIPT_EVENT("WasmModuleInitialized");
+    }
+    EXTERN_CATCH_EXCEPTIONS;
+
+    return 0;
+  }
+  
+  EMSCRIPTEN_KEEPALIVE
+  void InitializeViewport(const char* canvasId)
+  {
+    try
+    {
+      if (context_.get() == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                        "The loaders context is not available yet");
+      }
+      
+      if (application_.get() != NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                        "Only one single viewport is available for this application");
+      }
+
+      boost::shared_ptr<OrthancStone::WebGLViewport> viewport(OrthancStone::GetWebGLViewportsRegistry().Add(canvasId));
+      application_ = OrthancStone::Application::Create(*context_, viewport);
+
+      {
+        OrthancStone::WebGLViewportsRegistry::Accessor accessor(
+          OrthancStone::GetWebGLViewportsRegistry(), canvasId);
+
+        if (accessor.IsValid())
+        {
+          accessor.GetViewport().Invalidate();
+        }
+      }
+    }
+    EXTERN_CATCH_EXCEPTIONS;
+  }
+
+  
+  EMSCRIPTEN_KEEPALIVE
+  void LoadFromOrthanc(const char* instance,
+                       int frame)
+  {
+    try
+    {
+      if (application_.get() != NULL)
+      {
+        OrthancStone::DicomSource source;
+        application_->LoadOrthancFrame(source, instance, frame);
+      }
+    }
+    EXTERN_CATCH_EXCEPTIONS;
+  }
+
+  
+  EMSCRIPTEN_KEEPALIVE
+  void LoadFromDicomWeb(const char* server,
+                        const char* studyInstanceUid,
+                        const char* seriesInstanceUid,
+                        const char* sopInstanceUid,
+                        int frame)
+  {
+    try
+    {
+      if (application_.get() != NULL)
+      {
+        OrthancStone::DicomSource source;
+        source.SetDicomWebThroughOrthancSource(server);
+        application_->LoadDicomWebFrame(source, studyInstanceUid, seriesInstanceUid,
+                                        sopInstanceUid, frame);
+      }
+    }
+    EXTERN_CATCH_EXCEPTIONS;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/SingleFrameViewer/SingleFrameViewerApp.js	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,74 @@
+
+// This object wraps the functions exposed by the wasm module
+
+const WasmModuleWrapper = function() {
+  this._InitializeViewport = undefined;
+  this._LoadFromOrthanc = undefined;
+};
+
+WasmModuleWrapper.prototype.Setup = function(Module) {
+  this._InitializeViewport = Module.cwrap('InitializeViewport', null, [ 'string' ]);
+  this._LoadFromOrthanc = Module.cwrap('LoadFromOrthanc', null, [ 'string', 'int' ]);
+};
+
+WasmModuleWrapper.prototype.InitializeViewport = function(canvasId) {
+  this._InitializeViewport(canvasId);
+};
+
+WasmModuleWrapper.prototype.LoadFromOrthanc = function(instance, frame) {
+  this._LoadFromOrthanc(instance, frame);
+};
+
+var wasmModuleWrapper = new WasmModuleWrapper();
+
+$(document).ready(function() {
+
+  window.addEventListener('WasmModuleInitialized', function() {
+    wasmModuleWrapper.Setup(Module);
+    console.warn('Native C++ module initialized');
+
+    wasmModuleWrapper.InitializeViewport('viewport');
+  });
+
+  window.addEventListener('StoneException', function() {
+    alert('Exception caught in C++ code');
+  });    
+
+  var scriptSource;
+
+  if ('WebAssembly' in window) {
+    console.warn('Loading WebAssembly');
+    scriptSource = 'SingleFrameViewerWasm.js';
+  } else {
+    console.error('Your browser does not support WebAssembly!');
+  }
+
+  // Option 1: Loading script using plain HTML
+  
+  /*
+    var script = document.createElement('script');
+    script.src = scriptSource;
+    script.type = 'text/javascript';
+    document.body.appendChild(script);
+  */
+
+  // Option 2: Loading script using AJAX (gives the opportunity to
+  // report explicit errors)
+  
+  axios.get(scriptSource)
+    .then(function (response) {
+      var script = document.createElement('script');
+      script.innerHTML = response.data;
+      script.type = 'text/javascript';
+      document.body.appendChild(script);
+    })
+    .catch(function (error) {
+      alert('Cannot load the WebAssembly framework');
+    });
+});
+
+
+$('#orthancLoad').click(function() {
+  wasmModuleWrapper.LoadFromOrthanc($('#orthancInstance').val(),
+                    $('#orthancFrame').val());
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/SingleFrameViewer/SingleFrameViewerApplication.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,502 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../../Sources/Loaders/DicomResourcesLoader.h"
+#include "../../../Sources/Loaders/ILoadersContext.h"
+#include "../../../Sources/Loaders/SeriesFramesLoader.h"
+#include "../../../Sources/Loaders/SeriesThumbnailsLoader.h"
+#include "../../../Sources/Viewport/IViewport.h"
+
+#include <Compatibility.h>  // For std::unique_ptr<>
+
+#include <boost/make_shared.hpp>
+
+
+namespace OrthancStone
+{
+  class Application : public ObserverBase<Application>
+  {
+  private:
+    ILoadersContext&                         context_;
+    boost::shared_ptr<IViewport>             viewport_;
+    boost::shared_ptr<DicomResourcesLoader>  dicomLoader_;
+    boost::shared_ptr<SeriesFramesLoader>    framesLoader_;
+
+    Application(ILoadersContext& context,
+                boost::shared_ptr<IViewport> viewport) : 
+      context_(context),
+      viewport_(viewport)
+    {
+    }
+
+    void Handle(const SeriesFramesLoader::FrameLoadedMessage& message)
+    {
+      LOG(INFO) << "Frame decoded! "
+                << message.GetImage().GetWidth() << "x" << message.GetImage().GetHeight()
+                << " " << Orthanc::EnumerationToString(message.GetImage().GetFormat());
+
+      std::unique_ptr<TextureBaseSceneLayer> layer(
+        message.GetInstanceParameters().CreateTexture(message.GetImage()));
+      layer->SetLinearInterpolation(true);
+
+      {
+        std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+        lock->GetController().GetScene().SetLayer(0, layer.release());
+        lock->GetCompositor().FitContent(lock->GetController().GetScene());
+        lock->Invalidate();
+      }
+    }
+
+    void Handle(const DicomResourcesLoader::SuccessMessage& message)
+    {
+      if (message.GetResources()->GetSize() != 1)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+   
+      //message.GetResources()->GetResource(0).Print(stdout);
+
+      {
+        std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+        SeriesFramesLoader::Factory f(*message.GetResources());
+
+        framesLoader_ = boost::dynamic_pointer_cast<SeriesFramesLoader>(f.Create(*lock));
+        Register<SeriesFramesLoader::FrameLoadedMessage>(*framesLoader_, &Application::Handle);
+
+        assert(message.HasUserPayload());
+        const Orthanc::SingleValueObject<unsigned int>& payload =
+          dynamic_cast<const Orthanc::SingleValueObject<unsigned int>&>(message.GetUserPayload());
+
+        LOG(INFO) << "Loading pixel data of frame: " << payload.GetValue();
+        framesLoader_->ScheduleLoadFrame(
+          0, message.GetDicomSource(), payload.GetValue(),
+          message.GetDicomSource().GetQualityCount() - 1 /* download best quality available */,
+          NULL);
+      }
+    }
+
+  public:
+    static boost::shared_ptr<Application> Create(ILoadersContext& context,
+                                                 boost::shared_ptr<IViewport> viewport)
+    {
+      boost::shared_ptr<Application> application(new Application(context, viewport));
+
+      {
+        std::unique_ptr<ILoadersContext::ILock> lock(context.Lock());
+        application->dicomLoader_ = DicomResourcesLoader::Create(*lock);
+      }
+
+      application->Register<DicomResourcesLoader::SuccessMessage>(*application->dicomLoader_, &Application::Handle);
+
+      return application;
+    }
+
+    void LoadOrthancFrame(const DicomSource& source,
+                          const std::string& instanceId,
+                          unsigned int frame)
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+
+      dicomLoader_->ScheduleLoadOrthancResource(
+        boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID), 
+        0, source, Orthanc::ResourceType_Instance, instanceId,
+        new Orthanc::SingleValueObject<unsigned int>(frame));
+    }
+
+    void LoadDicomWebFrame(const DicomSource& source,
+                           const std::string& studyInstanceUid,
+                           const std::string& seriesInstanceUid,
+                           const std::string& sopInstanceUid,
+                           unsigned int frame)
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+
+      // We first must load the "/metadata" to know the number of frames
+      dicomLoader_->ScheduleGetDicomWeb(
+        boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID), 0, source,
+        "/studies/" + studyInstanceUid + "/series/" + seriesInstanceUid + "/instances/" + sopInstanceUid + "/metadata",
+        new Orthanc::SingleValueObject<unsigned int>(frame));
+    }
+
+    void FitContent()
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      lock->GetCompositor().FitContent(lock->GetController().GetScene());
+      lock->Invalidate();
+    }
+  };
+
+
+
+  class IWebViewerLoadersObserver : public boost::noncopyable
+  {
+  public:
+    virtual ~IWebViewerLoadersObserver()
+    {
+    }
+
+    virtual void SignalSeriesUpdated(LoadedDicomResources& series) = 0;
+
+    virtual void SignalThumbnailLoaded(const std::string& studyInstanceUid,
+                                       const std::string& seriesInstanceUid,
+                                       SeriesThumbnailType type) = 0;
+  };
+  
+
+  class WebViewerLoaders : public ObserverBase<WebViewerLoaders>
+  {
+  private:
+    static const int PRIORITY_ADD_RESOURCES = 0;
+    static const int PRIORITY_THUMBNAILS = OracleScheduler::PRIORITY_LOW + 100;
+
+    enum Type
+    {
+      Type_Orthanc = 1,
+      Type_DicomWeb = 2
+    };
+
+    ILoadersContext&                           context_;
+    std::unique_ptr<IWebViewerLoadersObserver>   observer_;
+    bool                                       loadThumbnails_;
+    DicomSource                                source_;
+    std::set<std::string>                      scheduledSeries_;
+    std::set<std::string>                      scheduledThumbnails_;
+    std::set<std::string>                      scheduledStudies_;
+    boost::shared_ptr<LoadedDicomResources>    loadedSeries_;
+    boost::shared_ptr<LoadedDicomResources>    loadedStudies_;
+    boost::shared_ptr<DicomResourcesLoader>    resourcesLoader_;
+    boost::shared_ptr<SeriesThumbnailsLoader>  thumbnailsLoader_;
+
+    WebViewerLoaders(ILoadersContext& context,
+                     IWebViewerLoadersObserver* observer) :
+      context_(context),
+      observer_(observer),
+      loadThumbnails_(false)
+    {
+      loadedSeries_ = boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID);
+      loadedStudies_ = boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID);
+    }
+
+    static Orthanc::IDynamicObject* CreatePayload(Type type)
+    {
+      return new Orthanc::SingleValueObject<Type>(type);
+    }
+    
+    void HandleThumbnail(const SeriesThumbnailsLoader::SuccessMessage& message)
+    {
+      if (observer_.get() != NULL)
+      {
+        observer_->SignalThumbnailLoaded(message.GetStudyInstanceUid(),
+                                         message.GetSeriesInstanceUid(),
+                                         message.GetType());
+      }
+    }
+    
+    void HandleLoadedResources(const DicomResourcesLoader::SuccessMessage& message)
+    {
+      LoadedDicomResources series(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID);
+
+      switch (dynamic_cast<const Orthanc::SingleValueObject<Type>&>(message.GetUserPayload()).GetValue())
+      {
+        case Type_DicomWeb:
+        {          
+          for (size_t i = 0; i < loadedSeries_->GetSize(); i++)
+          {
+            std::string study;
+            if (loadedSeries_->GetResource(i).LookupStringValue(
+                  study, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) &&
+                loadedStudies_->HasResource(study))
+            {
+              Orthanc::DicomMap m;
+              m.Assign(loadedSeries_->GetResource(i));
+              loadedStudies_->MergeResource(m, study);
+              series.AddResource(m);
+            }
+          }
+
+          break;
+        }
+
+        case Type_Orthanc:
+        {          
+          for (size_t i = 0; i < message.GetResources()->GetSize(); i++)
+          {
+            series.AddResource(message.GetResources()->GetResource(i));
+          }
+
+          break;
+        }
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+
+      if (loadThumbnails_ &&
+          (!source_.IsDicomWeb() ||
+           source_.HasDicomWebRendered()))
+      {
+        for (size_t i = 0; i < series.GetSize(); i++)
+        {
+          std::string patientId, studyInstanceUid, seriesInstanceUid;
+          if (series.GetResource(i).LookupStringValue(patientId, Orthanc::DICOM_TAG_PATIENT_ID, false) &&
+              series.GetResource(i).LookupStringValue(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) &&
+              series.GetResource(i).LookupStringValue(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false) &&
+              scheduledThumbnails_.find(seriesInstanceUid) == scheduledThumbnails_.end())
+          {
+            scheduledThumbnails_.insert(seriesInstanceUid);
+            thumbnailsLoader_->ScheduleLoadThumbnail(source_, patientId, studyInstanceUid, seriesInstanceUid);
+          }
+        }
+      }
+
+      if (observer_.get() != NULL &&
+          series.GetSize() > 0)
+      {
+        observer_->SignalSeriesUpdated(series);
+      }
+    }
+
+    void HandleOrthancRestApi(const OrthancRestApiCommand::SuccessMessage& message)
+    {
+      Json::Value body;
+      message.ParseJsonBody(body);
+
+      if (body.type() != Json::arrayValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+      else
+      {
+        for (Json::Value::ArrayIndex i = 0; i < body.size(); i++)
+        {
+          if (body[i].type() == Json::stringValue)
+          {
+            AddOrthancSeries(body[i].asString());
+          }
+          else
+          {
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+          }
+        }
+      }
+    }
+
+  public:
+    static boost::shared_ptr<WebViewerLoaders> Create(ILoadersContext& context,
+                                                      const DicomSource& source,
+                                                      bool loadThumbnails,
+                                                      IWebViewerLoadersObserver* observer)
+    {
+      boost::shared_ptr<WebViewerLoaders> application(new WebViewerLoaders(context, observer));
+      application->source_ = source;
+      application->loadThumbnails_ = loadThumbnails;
+
+      {
+        std::unique_ptr<ILoadersContext::ILock> lock(context.Lock());
+
+        application->resourcesLoader_ = DicomResourcesLoader::Create(*lock);
+
+        {
+          SeriesThumbnailsLoader::Factory f;
+          f.SetPriority(PRIORITY_THUMBNAILS);
+          application->thumbnailsLoader_ = boost::dynamic_pointer_cast<SeriesThumbnailsLoader>(f.Create(*lock));
+        }
+
+        application->Register<OrthancRestApiCommand::SuccessMessage>(
+          lock->GetOracleObservable(), &WebViewerLoaders::HandleOrthancRestApi);
+
+        application->Register<DicomResourcesLoader::SuccessMessage>(
+          *application->resourcesLoader_, &WebViewerLoaders::HandleLoadedResources);
+
+        application->Register<SeriesThumbnailsLoader::SuccessMessage>(
+          *application->thumbnailsLoader_, &WebViewerLoaders::HandleThumbnail);
+
+        lock->AddLoader(application);
+      }
+
+      return application;
+    }
+    
+    void AddDicomAllSeries()
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+
+      if (source_.IsDicomWeb())
+      {
+        resourcesLoader_->ScheduleGetDicomWeb(loadedSeries_, PRIORITY_ADD_RESOURCES, source_,
+                                              "/series", CreatePayload(Type_DicomWeb));
+        resourcesLoader_->ScheduleGetDicomWeb(loadedStudies_, PRIORITY_ADD_RESOURCES, source_,
+                                              "/studies", CreatePayload(Type_DicomWeb));
+      }
+      else if (source_.IsOrthanc())
+      {
+        std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
+        command->SetMethod(Orthanc::HttpMethod_Get);
+        command->SetUri("/series");
+        lock->Schedule(GetSharedObserver(), PRIORITY_ADD_RESOURCES, command.release());
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+    }
+    
+    void AddDicomStudy(const std::string& studyInstanceUid)
+    {
+      // Avoid adding twice the same study
+      if (scheduledStudies_.find(studyInstanceUid) == scheduledStudies_.end())
+      {
+        scheduledStudies_.insert(studyInstanceUid);
+
+        if (source_.IsDicomWeb())
+        {
+          Orthanc::DicomMap filter;
+          filter.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, studyInstanceUid, false);
+          
+          std::set<Orthanc::DicomTag> tags;
+          
+          {
+            std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
+            
+            resourcesLoader_->ScheduleQido(loadedStudies_, PRIORITY_ADD_RESOURCES, source_,
+                                           Orthanc::ResourceType_Study, filter, tags, CreatePayload(Type_DicomWeb));
+            
+            resourcesLoader_->ScheduleQido(loadedSeries_, PRIORITY_ADD_RESOURCES, source_,
+                                           Orthanc::ResourceType_Series, filter, tags, CreatePayload(Type_DicomWeb));
+          }
+        }
+        else if (source_.IsOrthanc())
+        {
+          std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
+          command->SetMethod(Orthanc::HttpMethod_Post);
+          command->SetUri("/tools/find");
+
+          Json::Value body;
+          body["Level"] = "Series";
+          body["Query"] = Json::objectValue;
+          body["Query"]["StudyInstanceUID"] = studyInstanceUid;
+          command->SetBody(body);
+
+          {
+            std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
+            lock->Schedule(GetSharedObserver(), PRIORITY_ADD_RESOURCES, command.release());
+          }
+        }
+        else
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }        
+      }
+    }
+    
+    void AddDicomSeries(const std::string& studyInstanceUid,
+                        const std::string& seriesInstanceUid)
+    {
+      std::set<Orthanc::DicomTag> tags;
+
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
+
+      if (scheduledStudies_.find(studyInstanceUid) == scheduledStudies_.end())
+      {
+        scheduledStudies_.insert(studyInstanceUid);
+          
+        if (source_.IsDicomWeb())
+        {
+          Orthanc::DicomMap filter;
+          filter.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, studyInstanceUid, false);
+          
+          resourcesLoader_->ScheduleQido(loadedStudies_, PRIORITY_ADD_RESOURCES, source_,
+                                         Orthanc::ResourceType_Study, filter, tags, CreatePayload(Type_DicomWeb));
+        }
+      }
+
+      if (scheduledSeries_.find(seriesInstanceUid) == scheduledSeries_.end())
+      {
+        scheduledSeries_.insert(seriesInstanceUid);
+
+        if (source_.IsDicomWeb())
+        {
+          Orthanc::DicomMap filter;
+          filter.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, studyInstanceUid, false);
+          filter.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, seriesInstanceUid, false);
+          
+          resourcesLoader_->ScheduleQido(loadedSeries_, PRIORITY_ADD_RESOURCES, source_,
+                                         Orthanc::ResourceType_Series, filter, tags, CreatePayload(Type_DicomWeb));
+        }
+        else if (source_.IsOrthanc())
+        {
+          std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
+          command->SetMethod(Orthanc::HttpMethod_Post);
+          command->SetUri("/tools/find");
+
+          Json::Value body;
+          body["Level"] = "Series";
+          body["Query"] = Json::objectValue;
+          body["Query"]["StudyInstanceUID"] = studyInstanceUid;
+          body["Query"]["SeriesInstanceUID"] = seriesInstanceUid;
+          command->SetBody(body);
+
+          lock->Schedule(GetSharedObserver(), PRIORITY_ADD_RESOURCES, command.release());
+        }
+        else
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+      }
+    }
+
+    void AddOrthancStudy(const std::string& orthancId)
+    {
+      if (source_.IsOrthanc())
+      {
+        std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
+        resourcesLoader_->ScheduleLoadOrthancResources(
+          loadedSeries_, PRIORITY_ADD_RESOURCES, source_,
+          Orthanc::ResourceType_Study, orthancId, Orthanc::ResourceType_Series,
+          CreatePayload(Type_Orthanc));
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType,
+                                        "Only applicable to Orthanc DICOM sources");
+      }
+    }
+
+    void AddOrthancSeries(const std::string& orthancId)
+    {
+      if (source_.IsOrthanc())
+      {
+        std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
+        resourcesLoader_->ScheduleLoadOrthancResource(
+          loadedSeries_, PRIORITY_ADD_RESOURCES,
+          source_, Orthanc::ResourceType_Series, orthancId,
+          CreatePayload(Type_Orthanc));
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType,
+                                        "Only applicable to Orthanc DICOM sources");
+      }
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/SingleFrameViewer/index.html	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <title>Stone of Orthanc Single Frame Viewer </title>
+    <meta charset="utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
+    <meta name="apple-mobile-web-app-capable" content="yes" />
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
+    <link rel="icon" href="data:;base64,iVBORw0KGgo=">
+
+    <style>
+      canvas {
+      background-color: green;
+      width : 100%;
+      height : 512px;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Viewport</h1>
+
+    <canvas id="viewport" >
+    </canvas>
+
+    <h1>Load from Orthanc</h1>
+    <p>
+      Orthanc instance: <input type="text" id="orthancInstance" size="80"
+                               value="5eb2dd5f-3fca21a8-fa7565fd-63e112ae-344830a4">
+    </p>
+    <p>
+      Frame number: <input type="text" id="orthancFrame" value="0">
+    </p>
+    <p>
+      <button id="orthancLoad">Load</button>
+    </p>
+
+    <script src="https://code.jquery.com/jquery-3.4.1.js"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.0/axios.js"></script>
+    
+    <script src="SingleFrameViewerApp.js"></script>
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/docker-build.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+set -ex
+
+IMAGE=jodogne/wasm-builder:1.39.17-upstream
+
+if [ "$1" != "Debug" -a "$1" != "Release" ]; then
+    echo "Please provide build type: Debug or Release"
+    exit -1
+fi
+
+if [ -t 1 ]; then
+    # TTY is available => use interactive mode
+    DOCKER_FLAGS='-i'
+fi
+
+ROOT_DIR=`dirname $(readlink -f $0)`/../..
+
+mkdir -p ${ROOT_DIR}/wasm-binaries
+
+docker run -t ${DOCKER_FLAGS} --rm \
+    --user $(id -u):$(id -g) \
+    -v ${ROOT_DIR}:/source:ro \
+    -v ${ROOT_DIR}/wasm-binaries:/target:rw ${IMAGE} \
+    bash /source/OrthancStone/Samples/WebAssembly/docker-internal.sh $1
+
+ls -lR ${ROOT_DIR}/wasm-binaries/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/WebAssembly/docker-internal.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -ex
+
+source /opt/emsdk/emsdk_env.sh
+
+# Use a folder that is writeable by non-root users for the Emscripten cache
+export EM_CACHE=/tmp/emscripten-cache
+
+# Get the Orthanc framework
+cd /tmp/
+hg clone https://hg.orthanc-server.com/orthanc/
+
+# Make a copy of the read-only folder containing the source code into
+# a writeable folder, because of "DownloadPackage.cmake" that writes
+# to the "ThirdPartyDownloads" folder next to the "CMakeLists.txt"
+cd /source
+hg clone /source /tmp/source-writeable
+
+mkdir /tmp/build
+cd /tmp/build
+
+cmake /tmp/source-writeable/OrthancStone/Samples/WebAssembly \
+      -DCMAKE_BUILD_TYPE=$1 \
+      -DCMAKE_INSTALL_PREFIX=/target \
+      -DCMAKE_TOOLCHAIN_FILE=${EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+      -DORTHANC_FRAMEWORK_ROOT=/tmp/orthanc/OrthancFramework \
+      -DSTATIC_BUILD=ON \
+      -G Ninja
+
+ninja -j2 install
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Samples/build-wasm-samples.sh	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,48 @@
+#!/bin/bash
+#
+# usage:
+# to build the samples in RelWithDebInfo:
+# ./build-wasm-samples.sh
+#
+# to build the samples in Release:
+# ./build-wasm-samples.sh Release
+
+set -e
+
+if [ ! -d "WebAssembly" ]; then
+  echo "This script must be run from the Samples folder one level below orthanc-stone"
+  exit 1
+fi
+
+
+currentDir=$(pwd)
+samplesRootDir=$(pwd)
+devrootDir=$(pwd)/../../
+
+buildType=${1:-RelWithDebInfo}
+buildFolderName="$devrootDir/out/build-stone-wasm-samples-$buildType"
+installFolderName="$devrootDir/out/install-stone-wasm-samples-$buildType"
+
+mkdir -p $buildFolderName
+# change current folder to the build folder
+pushd $buildFolderName
+
+# configure the environment to use Emscripten
+source ~/apps/emsdk/emsdk_env.sh
+
+emcmake cmake -G "Ninja" \
+  -DCMAKE_BUILD_TYPE=$buildType \
+  -DCMAKE_INSTALL_PREFIX=$installFolderName \
+  -DSTATIC_BUILD=ON -DALLOW_DOWNLOADS=ON \
+  $samplesRootDir/WebAssembly
+
+# perform build + installation
+ninja
+ninja install
+
+# restore the original working folder
+popd
+
+echo "If all went well, the output files can be found in $installFolderName:"
+
+ls $installFolderName
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/GuiAdapter.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,1139 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "GuiAdapter.h"
+
+#if ORTHANC_ENABLE_OPENGL == 1
+#  include "../OpenGL/OpenGLIncludes.h"
+#endif
+
+#if ORTHANC_ENABLE_SDL == 1
+#  include <SDL_video.h>
+#  include <SDL_render.h>
+#  include <SDL.h>
+#endif
+
+#include <Compatibility.h>
+
+namespace OrthancStone
+{
+  std::ostream& operator<<(
+    std::ostream& os, const GuiAdapterKeyboardEvent& event)
+  {
+    os << "sym: " << event.sym << " (" << (int)(event.sym[0]) << ") ctrl: " << event.ctrlKey << ", " <<
+      "shift: " << event.shiftKey << ", " <<
+      "alt: " << event.altKey;
+    return os;
+  }
+
+  std::ostream& operator<<(
+    std::ostream& os, const GuiAdapterMouseEvent& event)
+  {
+    os << "targetX: " << event.targetX << " targetY: " << event.targetY << " button: " << event.button
+      << "ctrlKey: " << event.ctrlKey << "shiftKey: " << event.shiftKey << "altKey: " << event.altKey;
+      
+    return os;
+  }
+
+  int GuiAdapter::s_instanceCount = 0;
+
+#if ORTHANC_ENABLE_WASM == 1
+  void GuiAdapter::Run(GuiAdapterRunFunc /*func*/, void* /*cookie*/)
+  {
+  }
+
+  void ConvertFromPlatform(
+    GuiAdapterUiEvent& dest,
+    int                      eventType,
+    const EmscriptenUiEvent& src)
+  {
+    // no data for now
+  }
+
+  void ConvertFromPlatform(
+    GuiAdapterMouseEvent& dest,
+    int                         eventType,
+    const EmscriptenMouseEvent& src)
+  {
+    memset(&dest, 0, sizeof(GuiAdapterMouseEvent));
+    switch (eventType)
+    {
+    case EMSCRIPTEN_EVENT_CLICK:
+      LOG(ERROR) << "Emscripten EMSCRIPTEN_EVENT_CLICK is not supported";
+      ORTHANC_ASSERT(false, "Not supported");
+      break;
+    case EMSCRIPTEN_EVENT_MOUSEDOWN:
+      dest.type = GUIADAPTER_EVENT_MOUSEDOWN;
+      break;
+    case EMSCRIPTEN_EVENT_DBLCLICK:
+      dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK;
+      break;
+    case EMSCRIPTEN_EVENT_MOUSEMOVE:
+      dest.type = GUIADAPTER_EVENT_MOUSEMOVE;
+      break;
+    case EMSCRIPTEN_EVENT_MOUSEUP:
+      dest.type = GUIADAPTER_EVENT_MOUSEUP;
+      break;
+    case EMSCRIPTEN_EVENT_WHEEL:
+      dest.type = GUIADAPTER_EVENT_WHEEL;
+      break;
+
+    default:
+      LOG(ERROR) << "Emscripten event: " << eventType << " is not supported";
+      ORTHANC_ASSERT(false, "Not supported");
+    }
+    //dest.timestamp = src.timestamp;
+    //dest.screenX = src.screenX;
+    //dest.screenY = src.screenY;
+    //dest.clientX = src.clientX;
+    //dest.clientY = src.clientY;
+    dest.ctrlKey = src.ctrlKey;
+    dest.shiftKey = src.shiftKey;
+    dest.altKey = src.altKey;
+    //dest.metaKey = src.metaKey;
+    dest.button = src.button;
+    //dest.buttons = src.buttons;
+    //dest.movementX = src.movementX;
+    //dest.movementY = src.movementY;
+    dest.targetX = src.targetX;
+    dest.targetY = src.targetY;
+    //dest.canvasX = src.canvasX;
+    //dest.canvasY = src.canvasY;
+    //dest.padding = src.padding;
+  }
+
+  void ConvertFromPlatform( GuiAdapterWheelEvent& dest, int eventType, const EmscriptenWheelEvent& src)
+  {
+    ConvertFromPlatform(dest.mouse, eventType, src.mouse);
+    dest.deltaX = src.deltaX;
+    dest.deltaY = src.deltaY;
+    switch (src.deltaMode)
+    {
+    case DOM_DELTA_PIXEL:
+      dest.deltaMode = GUIADAPTER_DELTA_PIXEL;
+      break;
+    case DOM_DELTA_LINE:
+      dest.deltaMode = GUIADAPTER_DELTA_LINE;
+      break;
+    case DOM_DELTA_PAGE:
+      dest.deltaMode = GUIADAPTER_DELTA_PAGE;
+      break;
+    default:
+      ORTHANC_ASSERT(false, "Unknown deltaMode: " << src.deltaMode <<
+        " in wheel event...");
+    }
+    dest.deltaMode = src.deltaMode;
+  }
+
+  void ConvertFromPlatform(GuiAdapterKeyboardEvent& dest, const EmscriptenKeyboardEvent& src)
+  {
+    dest.sym[0] = src.key[0];
+    dest.sym[1] = 0;
+    dest.ctrlKey = src.ctrlKey;
+    dest.shiftKey = src.shiftKey;
+    dest.altKey = src.altKey;
+  }
+
+  template<typename GenericFunc>
+  struct FuncAdapterPayload
+  {
+    std::string canvasCssSelector;
+    void* userData;
+    GenericFunc callback;
+  };
+
+  template<typename GenericFunc,
+    typename GuiAdapterEvent,
+    typename EmscriptenEvent>
+    EM_BOOL OnEventAdapterFunc(
+      int eventType, const EmscriptenEvent* emEvent, void* userData)
+  {
+    // userData is OnMouseWheelFuncAdapterPayload
+    FuncAdapterPayload<GenericFunc>* payload =
+      reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData);
+    // LOG(INFO) << "OnEventAdapterFunc";
+    // LOG(INFO) << "------------------";
+    // LOG(INFO) << "eventType: " << eventType << " wheelEvent: " << 
+    //   (int)wheelEvent << " userData: " << userData << 
+    //   " payload->userData: " << payload->userData;
+
+    GuiAdapterEvent guiEvent;
+    ConvertFromPlatform(guiEvent, eventType, *emEvent);
+    bool ret = (*(payload->callback))(payload->canvasCssSelector, &guiEvent, payload->userData);
+    return static_cast<EM_BOOL>(ret);
+  }
+
+  template<typename GenericFunc,
+    typename GuiAdapterEvent,
+    typename EmscriptenEvent>
+    EM_BOOL OnEventAdapterFunc2(
+      int /*eventType*/, const EmscriptenEvent* wheelEvent, void* userData)
+  {
+    // userData is OnMouseWheelFuncAdapterPayload
+    FuncAdapterPayload<GenericFunc>* payload =
+      reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData);
+
+    GuiAdapterEvent guiEvent;
+    ConvertFromPlatform(guiEvent, *wheelEvent);
+    bool ret = (*(payload->callback))(payload->canvasCssSelector, &guiEvent, payload->userData);
+    return static_cast<EM_BOOL>(ret);
+  }
+
+  template<typename GenericFunc>
+  EM_BOOL OnEventAdapterFunc3(
+    double time, void* userData)
+  {
+    // userData is OnMouseWheelFuncAdapterPayload
+    FuncAdapterPayload<GenericFunc>* payload =
+      reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData);
+    //std::unique_ptr< FuncAdapterPayload<GenericFunc> > deleter(payload);
+    bool ret = (*(payload->callback))(time, payload->userData);
+    return static_cast<EM_BOOL>(ret);
+  }
+
+  /*
+  
+  Explanation
+  ===========
+
+  - in "older" Emscripten, where DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR doesn't exist or is set to 0,
+    the following strings need to be used to register events:
+    - for canvas, the canvas DOM id. In case of <canvas id="mycanvas1" width='640' ...></canvas>", the string needs 
+      to be "mycanvas"
+    - for the window (for key events), the string needs to be "#window"
+  - in newer Emscripten where DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR==1 (or maybe is not there anymore, in the
+    future as of 2020-04-20)
+    - for canvas, the canvas DOM id. In case of <canvas id="mycanvas1" width='640' ...></canvas>", the string needs
+      to be "#mycanvas"  (notice the "number sign", aka "hash", NOT AKA "sharp", as can be read on https://en.wikipedia.org/wiki/Number_sign)
+    - for the window (for key events), the string needs to be EMSCRIPTEN_EVENT_TARGET_WINDOW. I do not mean 
+      "EMSCRIPTEN_EVENT_TARGET_WINDOW", but the #define EMSCRIPTEN_EVENT_TARGET_WINDOW         ((const char*)2) that
+      can be found in emscripten/html5.h
+
+  The code below converts the input canvasId (as in the old emscripten) to the emscripten-compliant one, with the
+  following compile condition : #if DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR == 1
+
+  If the DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR build parameter disappears, you might want to refactor this code
+  or continue to pass the DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR compile macro (which is different from the CMake
+  variable)     
+
+  What we are doing below:
+  - in older Emscripten, the registration functions will receive "mycanvas" and "#window" and the callbacks will receive 
+    the same std::string in their payload ("mycanvas" and "#window")
+
+  - in newer Emscripten, the registration functions will receive "#mycanvas" and EMSCRIPTEN_EVENT_TARGET_WINDOW, but 
+    the callbacks will receive "#mycanvas" and "#window" (since it is not possible to store the EMSCRIPTEN_EVENT_TARGET_WINDOW
+    magic value in an std::string, while we still want the callback to be able to change its behavior according to the
+    target element.
+  
+  */
+
+  void convertElementTarget(const char*& outCanvasCssSelectorSz, std::string& outCanvasCssSelector, const std::string& canvasId)
+  {
+    // only "#window" can start with a #
+    if (canvasId[0] == '#')
+    {
+      ORTHANC_ASSERT(canvasId == "#window");
+    }
+#if DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR == 1
+    if (canvasId == "#window")
+    {
+      // we store this in the payload so that the callback can 
+      outCanvasCssSelector = "#window";
+      outCanvasCssSelectorSz = EMSCRIPTEN_EVENT_TARGET_WINDOW;
+    }
+    else
+    {
+      outCanvasCssSelector = "#" + canvasId;
+      outCanvasCssSelectorSz = outCanvasCssSelector.c_str();
+    }
+#else
+    if (canvasId == "#window")
+    {
+      // we store this in the payload so that the callback can 
+      outCanvasCssSelector = "#window";
+      outCanvasCssSelectorSz = outCanvasCssSelector.c_str();;
+    }
+    else
+    {
+      outCanvasCssSelector = canvasId;
+      outCanvasCssSelectorSz = outCanvasCssSelector.c_str();;
+    }
+#endif
+  }
+
+  // resize: (const char* target, void* userData, EM_BOOL useCapture, em_ui_callback_func callback)
+  template<
+    typename GenericFunc,
+    typename GuiAdapterEvent,
+    typename EmscriptenEvent,
+    typename EmscriptenSetCallbackFunc>
+    static void SetCallback(
+      EmscriptenSetCallbackFunc emFunc,
+      std::string canvasId, void* userData, bool capture, GenericFunc func)
+  {
+    std::string canvasCssSelector;
+    const char* canvasCssSelectorSz = NULL;
+    convertElementTarget(canvasCssSelectorSz, canvasCssSelector, canvasId);
+
+    // TODO: write RemoveCallback with an int id that gets returned from here
+
+    // create userdata payload
+    std::unique_ptr<FuncAdapterPayload<GenericFunc> > payload(new FuncAdapterPayload<GenericFunc>());
+    payload->canvasCssSelector = canvasCssSelector;
+    payload->callback = func;
+    payload->userData = userData;
+    void* userDataRaw = reinterpret_cast<void*>(payload.release());
+
+    // call the registration function
+    (*emFunc)(
+      canvasCssSelectorSz,
+      userDataRaw,
+      static_cast<EM_BOOL>(capture),
+      &OnEventAdapterFunc<GenericFunc, GuiAdapterEvent, EmscriptenEvent>,
+      EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD);
+  }
+
+  template<
+    typename GenericFunc,
+    typename GuiAdapterEvent,
+    typename EmscriptenEvent,
+    typename EmscriptenSetCallbackFunc>
+    static void SetCallback2(
+      EmscriptenSetCallbackFunc emFunc,
+      std::string canvasId, void* userData, bool capture, GenericFunc func)
+  {
+    std::string canvasCssSelector;
+    const char* canvasCssSelectorSz = NULL;
+    convertElementTarget(canvasCssSelectorSz, canvasCssSelector, canvasId);
+
+    // TODO: write RemoveCallback with an int id that gets returned from here
+
+    // create userdata payload
+    std::unique_ptr<FuncAdapterPayload<GenericFunc> > payload(new FuncAdapterPayload<GenericFunc>());
+    payload->canvasCssSelector = canvasCssSelector;
+    payload->callback = func;
+    payload->userData = userData;
+    void* userDataRaw = reinterpret_cast<void*>(payload.release());
+
+    // call the registration function
+    (*emFunc)(
+      canvasCssSelectorSz,
+      userDataRaw,
+      static_cast<EM_BOOL>(capture),
+      &OnEventAdapterFunc2<GenericFunc, GuiAdapterEvent, EmscriptenEvent>,
+      EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD);
+  }
+
+  template<
+    typename GenericFunc,
+    typename EmscriptenSetCallbackFunc>
+    static void SetAnimationFrameCallback(
+      EmscriptenSetCallbackFunc emFunc,
+      void* userData, GenericFunc func)
+  {
+    std::unique_ptr<FuncAdapterPayload<GenericFunc> > payload(
+      new FuncAdapterPayload<GenericFunc>()
+    );
+    payload->canvasCssSelector = "UNDEFINED";
+    payload->callback = func;
+    payload->userData = userData;
+    void* userDataRaw = reinterpret_cast<void*>(payload.release());
+    (*emFunc)(
+      &OnEventAdapterFunc3<GenericFunc>,
+      userDataRaw);
+  }
+
+  void GuiAdapter::SetWheelCallback(
+    std::string canvasId, void* userData, bool capture, OnMouseWheelFunc func)
+  {
+    SetCallback<OnMouseWheelFunc, GuiAdapterWheelEvent, EmscriptenWheelEvent>(
+      &emscripten_set_wheel_callback_on_thread,
+      canvasId,
+      userData,
+      capture,
+      func);
+  }
+
+  
+  void GuiAdapter::SetMouseDblClickCallback(
+      std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
+  {
+    SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
+      &emscripten_set_dblclick_callback_on_thread,
+      canvasId,
+      userData,
+      capture,
+      func);
+  }
+
+
+  void GuiAdapter::SetMouseDownCallback(
+    std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
+  {
+    SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
+      &emscripten_set_mousedown_callback_on_thread,
+      canvasId,
+      userData,
+      capture,
+      func);
+  }
+
+  void GuiAdapter::SetMouseMoveCallback(
+    std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
+  {
+    // LOG(INFO) << "SetMouseMoveCallback -- " << "supplied userData: " << 
+    //   userData;
+
+    SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
+      &emscripten_set_mousemove_callback_on_thread,
+      canvasId,
+      userData,
+      capture,
+      func);
+  }
+
+  void GuiAdapter::SetMouseUpCallback(
+    std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
+  {
+    SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
+      &emscripten_set_mouseup_callback_on_thread,
+      canvasId,
+      userData,
+      capture,
+      func);
+  }
+
+  void GuiAdapter::SetKeyDownCallback(
+    std::string canvasId, void* userData, bool capture, OnKeyDownFunc func)
+  {
+    SetCallback2<OnKeyDownFunc, GuiAdapterKeyboardEvent, EmscriptenKeyboardEvent>(
+      &emscripten_set_keydown_callback_on_thread,
+      canvasId,
+      userData,
+      capture,
+      func);
+  }
+
+  void GuiAdapter::SetKeyUpCallback(
+    std::string canvasId, void* userData, bool capture, OnKeyUpFunc func)
+  {
+    SetCallback2<OnKeyUpFunc, GuiAdapterKeyboardEvent, EmscriptenKeyboardEvent>(
+      &emscripten_set_keyup_callback_on_thread,
+      canvasId,
+      userData,
+      capture,
+      func);
+  }
+
+#if 0
+  // useless under Wasm where canvas resize is handled automatically
+  void GuiAdapter::SetResizeCallback(
+    std::string canvasId, void* userData, bool capture, OnWindowResizeFunc func)
+  {
+    SetCallback<OnWindowResizeFunc, GuiAdapterUiEvent, EmscriptenUiEvent>(
+      &emscripten_set_resize_callback_on_thread,
+      canvasId,
+      userData,
+      capture,
+      func);
+  }
+#endif
+
+  void GuiAdapter::RequestAnimationFrame(
+    OnAnimationFrameFunc func, void* userData)
+  {
+    SetAnimationFrameCallback<OnAnimationFrameFunc>(
+      &emscripten_request_animation_frame_loop,
+      userData,
+      func);
+  }
+
+#if 0
+  void GuiAdapter::SetKeyDownCallback(
+    std::string canvasId, void* userData, bool capture, OnKeyDownFunc func)
+  {
+    emscripten_set_keydown_callback(canvasId.c_str(), userData, static_cast<EM_BOOL>(capture), func);
+  }
+  void GuiAdapter::SetKeyUpCallback(
+    std::string canvasId, void* userData, bool capture, OnKeyUpFunc func)
+  {
+    emscripten_set_keyup_callback(canvasId.c_str(), userData, static_cast<EM_BOOL>(capture), func);
+  }
+
+  // handled from within WebAssemblyViewport
+  //void GuiAdapter::SetResizeCallback(std::string canvasId, void* userData, bool capture, OnWindowResizeFunc func)
+  //{
+  //  emscripten_set_resize_callback(canvasId.c_str(), userData, static_cast<EM_BOOL>(capture), func);
+  //}
+
+  void GuiAdapter::RequestAnimationFrame(OnAnimationFrameFunc func, void* userData)
+  {
+    emscripten_request_animation_frame_loop(func, userData);
+  }
+#endif
+
+
+#else
+
+  // SDL ONLY
+  void ConvertFromPlatform(GuiAdapterMouseEvent& dest, bool ctrlPressed, bool shiftPressed, bool altPressed, const SDL_Event& source)
+  {
+    memset(&dest, 0, sizeof(GuiAdapterMouseEvent));
+    switch (source.type)
+    {
+    case SDL_MOUSEBUTTONDOWN:
+      if (source.button.clicks == 1) {
+        dest.type = GUIADAPTER_EVENT_MOUSEDOWN;
+      } else if (source.button.clicks == 2) {
+        dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK;
+      } else {
+        dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK;
+        LOG(WARNING) << "Multiple-click ignored.";
+      }
+      break;
+    case SDL_MOUSEMOTION:
+      dest.type = GUIADAPTER_EVENT_MOUSEMOVE;
+      break;
+    case SDL_MOUSEBUTTONUP:
+      dest.type = GUIADAPTER_EVENT_MOUSEUP;
+      break;
+    case SDL_MOUSEWHEEL:
+      dest.type = GUIADAPTER_EVENT_WHEEL;
+      break;
+    default:
+      LOG(ERROR) << "SDL event: " << source.type << " is not supported";
+      ORTHANC_ASSERT(false, "Not supported");
+    }
+    //dest.timestamp = src.timestamp;
+    //dest.screenX = src.screenX;
+    //dest.screenY = src.screenY;
+    //dest.clientX = src.clientX;
+    //dest.clientY = src.clientY;
+    dest.ctrlKey = ctrlPressed;
+    dest.shiftKey = shiftPressed;
+    dest.altKey = altPressed;
+    //dest.metaKey = src.metaKey;
+    switch (source.button.button)
+    {
+    case SDL_BUTTON_MIDDLE:
+      dest.button =GUIADAPTER_MOUSEBUTTON_MIDDLE;
+      break;
+
+    case SDL_BUTTON_RIGHT:
+      dest.button = GUIADAPTER_MOUSEBUTTON_RIGHT;
+      break;
+
+    case SDL_BUTTON_LEFT:
+      dest.button = GUIADAPTER_MOUSEBUTTON_LEFT;
+      break;
+
+    default:
+      break;
+    }
+    //dest.buttons = src.buttons;
+    //dest.movementX = src.movementX;
+    //dest.movementY = src.movementY;
+    dest.targetX = source.button.x;
+    dest.targetY = source.button.y;
+    //dest.canvasX = src.canvasX;
+    //dest.canvasY = src.canvasY;
+    //dest.padding = src.padding;
+  }
+
+  void ConvertFromPlatform(
+    GuiAdapterWheelEvent& dest,
+    bool ctrlPressed, bool shiftPressed, bool altPressed,
+    const SDL_Event& source)
+  {
+    ConvertFromPlatform(dest.mouse, ctrlPressed, shiftPressed, altPressed, source);
+    dest.deltaX = source.wheel.x;
+    dest.deltaY = source.wheel.y;
+  }
+
+  void ConvertFromPlatform(GuiAdapterKeyboardEvent& dest, const SDL_Event& src)
+  {
+    memset(&dest, 0, sizeof(GuiAdapterMouseEvent));
+    switch (src.type)
+    {
+    case SDL_KEYDOWN:
+      dest.type = GUIADAPTER_EVENT_KEYDOWN;
+      break;
+    case SDL_KEYUP:
+      dest.type = GUIADAPTER_EVENT_KEYUP;
+      break;
+    default:
+      LOG(ERROR) << "SDL event: " << src.type << " is not supported";
+      ORTHANC_ASSERT(false, "Not supported");
+    }
+    dest.sym[0] = src.key.keysym.sym;
+    dest.sym[1] = 0;
+
+    if (src.key.keysym.mod & KMOD_CTRL)
+      dest.ctrlKey = true;
+    else
+      dest.ctrlKey = false;
+
+    if (src.key.keysym.mod & KMOD_SHIFT)
+      dest.shiftKey = true;
+    else
+      dest.shiftKey = false;
+
+    if (src.key.keysym.mod & KMOD_ALT)
+      dest.altKey = true;
+    else
+      dest.altKey = false;
+  }
+
+  // SDL ONLY
+  void GuiAdapter::SetSdlResizeCallback(
+    std::string canvasId, void* userData, bool capture, OnSdlWindowResizeFunc func)
+  {
+    resizeHandlers_.push_back(EventHandlerData<OnSdlWindowResizeFunc>(canvasId, func, userData));
+  }
+
+  // SDL ONLY
+  void GuiAdapter::SetMouseDownCallback(
+    std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
+  {
+    mouseDownHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData));
+  }
+
+  // SDL ONLY
+  void GuiAdapter::SetMouseDblClickCallback(
+    std::string canvasId, void* userData, bool capture, OnMouseEventFunc func)
+  {
+    mouseDblCickHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData));
+  }
+
+  // SDL ONLY
+  void GuiAdapter::SetMouseMoveCallback(
+    std::string canvasId, void* userData, bool capture, OnMouseEventFunc  func)
+  {
+    mouseMoveHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData));
+  }
+
+  // SDL ONLY
+  void GuiAdapter::SetMouseUpCallback(
+    std::string canvasId, void* userData, bool capture, OnMouseEventFunc  func)
+  {
+    mouseUpHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData));
+  }
+
+  // SDL ONLY
+  void GuiAdapter::SetWheelCallback(
+    std::string canvasId, void* userData, bool capture, OnMouseWheelFunc  func)
+  {
+    mouseWheelHandlers_.push_back(EventHandlerData<OnMouseWheelFunc>(canvasId, func, userData));
+  }
+
+  // SDL ONLY
+  void GuiAdapter::SetKeyDownCallback(
+    std::string canvasId, void* userData, bool capture, OnKeyDownFunc   func)
+  {
+    keyDownHandlers_.push_back(EventHandlerData<OnKeyDownFunc>(canvasId, func, userData));
+  }
+
+  // SDL ONLY
+  void GuiAdapter::SetKeyUpCallback(
+    std::string canvasId, void* userData, bool capture, OnKeyUpFunc    func)
+  {
+    keyUpHandlers_.push_back(EventHandlerData<OnKeyUpFunc>(canvasId, func, userData));
+  }
+
+  // SDL ONLY
+  void GuiAdapter::SetGenericSdlEventCallback(
+    std::string canvasId, void* userData, bool capture, OnSdlEventCallback func)
+  {
+    sdlEventHandlers_.push_back(EventHandlerData<OnSdlEventCallback>(canvasId, func, userData));
+  }
+
+  // SDL ONLY
+  void GuiAdapter::OnAnimationFrame()
+  {
+    std::vector<size_t> disabledAnimationHandlers;
+    for (size_t i = 0; i < animationFrameHandlers_.size(); i++)
+    {
+      // TODO: fix time 
+      bool goOn = (*(animationFrameHandlers_[i].first))(0, animationFrameHandlers_[i].second);
+
+      // If the function returns false, we need to emulate what happens in Web 
+      // and remove the function from the handlers...
+      if (!goOn)
+        disabledAnimationHandlers.push_back(i);
+    }
+    for (size_t i = 0; i < disabledAnimationHandlers.size(); i++)
+    {
+      ORTHANC_ASSERT(animationFrameHandlers_.begin() + disabledAnimationHandlers[i] < animationFrameHandlers_.end());
+      animationFrameHandlers_.erase(animationFrameHandlers_.begin() + disabledAnimationHandlers[i]);
+    }
+  }
+
+  // SDL ONLY
+  void GuiAdapter::OnResize(unsigned int width, unsigned int height)
+  {
+    for (size_t i = 0; i < resizeHandlers_.size(); i++)
+    {
+      (*(resizeHandlers_[i].func))(
+        resizeHandlers_[i].canvasName, NULL, width, height, resizeHandlers_[i].userData);
+    }
+  }
+
+
+
+  void GuiAdapter::OnSdlGenericEvent(const SDL_Event& sdlEvent)
+  {
+    // Events related to a window are only sent to the related canvas
+    // User events are sent to everyone (we can't filter them here)
+    
+    /*
+    SDL_WindowEvent    SDL_WINDOWEVENT
+    SDL_KeyboardEvent     SDL_KEYDOWN
+                          SDL_KEYUP
+    SDL_TextEditingEvent  SDL_TEXTEDITING
+    SDL_TextInputEvent    SDL_TEXTINPUT
+    SDL_MouseMotionEvent  SDL_MOUSEMOTION
+    SDL_MouseButtonEvent  SDL_MOUSEBUTTONDOWN 
+                          SDL_MOUSEBUTTONUP
+    SDL_MouseWheelEvent   SDL_MOUSEWHEEL
+    SDL_UserEvent         SDL_USEREVENT through ::SDL_LASTEVENT-1
+    */
+
+    // if this string is left empty, it means the message will be sent to
+    // all widgets.
+    // otherwise, it contains the originating message window title
+
+    std::string windowTitle;
+    uint32_t windowId = 0;
+
+    if (sdlEvent.type == SDL_WINDOWEVENT)
+      windowId = sdlEvent.window.windowID;
+    else if (sdlEvent.type == SDL_KEYDOWN || sdlEvent.type == SDL_KEYUP)
+      windowId = sdlEvent.key.windowID;
+    else if (sdlEvent.type == SDL_TEXTEDITING)
+      windowId = sdlEvent.edit.windowID;
+    else if (sdlEvent.type == SDL_TEXTINPUT)
+      windowId = sdlEvent.text.windowID;
+    else if (sdlEvent.type == SDL_MOUSEMOTION)
+      windowId = sdlEvent.motion.windowID;
+    else if (sdlEvent.type == SDL_MOUSEBUTTONDOWN || sdlEvent.type == SDL_MOUSEBUTTONUP)
+      windowId = sdlEvent.button.windowID;
+    else if (sdlEvent.type == SDL_MOUSEWHEEL)
+      windowId = sdlEvent.wheel.windowID;
+    else if (sdlEvent.type >= SDL_USEREVENT && sdlEvent.type <= (SDL_LASTEVENT-1))
+      windowId = sdlEvent.user.windowID;
+
+    if (windowId != 0)
+    {
+      SDL_Window* sdlWindow = SDL_GetWindowFromID(windowId);
+      ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowId << "\" is not a valid SDL window ID!");
+      const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
+      ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowId << "\" has a NULL window title!");
+      windowTitle = windowTitleSz;
+      ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowId << "\" has an empty window title!");
+    }
+
+    for (size_t i = 0; i < sdlEventHandlers_.size(); i++)
+    {
+      // normally, the handlers return a bool indicating whether they
+      // have handled the event or not, but we don't really care about this
+      std::string& canvasName = sdlEventHandlers_[i].canvasName;
+      
+      bool sendEvent = true;
+
+      if (windowTitle != "" && (canvasName != windowTitle))
+        sendEvent = false;
+
+      if (sendEvent)
+      {
+        OnSdlEventCallback func = sdlEventHandlers_[i].func;
+        (*func)(canvasName, sdlEvent, sdlEventHandlers_[i].userData);
+      }
+    }
+  }
+
+  // SDL ONLY
+  void GuiAdapter::OnMouseWheelEvent(uint32_t windowID, const GuiAdapterWheelEvent& event)
+  {
+    // the SDL window name IS the canvas name ("canvas" is used because this lib
+    // is designed for Wasm
+    SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
+    ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowID << "\" is not a valid SDL window ID!");
+
+    const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
+    ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowID << "\" has a NULL window title!");
+
+    std::string windowTitle(windowTitleSz);
+    ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowID << "\" has an empty window title!");
+
+    switch (event.mouse.type)
+    {
+    case GUIADAPTER_EVENT_WHEEL:
+      for (size_t i = 0; i < mouseWheelHandlers_.size(); i++)
+      {
+        if (mouseWheelHandlers_[i].canvasName == windowTitle)
+          (*(mouseWheelHandlers_[i].func))(windowTitle, &event, mouseWheelHandlers_[i].userData);
+      }
+      break;
+    default:
+      ORTHANC_ASSERT(false, "Wrong event.type: " << event.mouse.type << " in GuiAdapter::OnMouseWheelEvent(...)");
+      break;
+    }
+  }
+
+
+  void GuiAdapter::OnKeyboardEvent(uint32_t windowID, const GuiAdapterKeyboardEvent& event)
+  {
+    // only one-letter (ascii) keyboard events supported for now
+    ORTHANC_ASSERT(event.sym[0] != 0);
+    ORTHANC_ASSERT(event.sym[1] == 0);
+
+    SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
+    ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowID << "\" is not a valid SDL window ID!");
+
+    const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
+    ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowID << "\" has a NULL window title!");
+
+    std::string windowTitle(windowTitleSz);
+    ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowID << "\" has an empty window title!");
+
+    switch (event.type)
+    {
+    case GUIADAPTER_EVENT_KEYDOWN:
+      for (size_t i = 0; i < keyDownHandlers_.size(); i++)
+      {
+        (*(keyDownHandlers_[i].func))(windowTitle, &event, keyDownHandlers_[i].userData);
+      }
+      break;
+    case GUIADAPTER_EVENT_KEYUP:
+      for (size_t i = 0; i < keyUpHandlers_.size(); i++)
+      {
+        (*(keyUpHandlers_[i].func))(windowTitle, &event, keyUpHandlers_[i].userData);
+      }
+      break;
+    default:
+      ORTHANC_ASSERT(false, "Wrong event.type: " << event.type << " in GuiAdapter::OnKeyboardEvent(...)");
+      break;
+    }
+  }
+
+  // SDL ONLY
+  void GuiAdapter::OnMouseEvent(uint32_t windowID, const GuiAdapterMouseEvent& event)
+  {
+    if (windowID == 0)
+    {
+      LOG(WARNING) << "GuiAdapter::OnMouseEvent -- windowID == 0 and event won't be routed!";
+    }
+    else
+    {
+      // the SDL window name IS the canvas name ("canvas" is used because this lib
+      // is designed for Wasm
+      SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
+
+      ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowID << "\" is not a valid SDL window ID!");
+
+      const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
+      ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowID << "\" has a NULL window title!");
+
+      std::string windowTitle(windowTitleSz);
+      ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowID << "\" has an empty window title!");
+
+      switch (event.type)
+      {
+      case GUIADAPTER_EVENT_MOUSEDOWN:
+        for (size_t i = 0; i < mouseDownHandlers_.size(); i++)
+        {
+          if (mouseDownHandlers_[i].canvasName == windowTitle)
+            (*(mouseDownHandlers_[i].func))(windowTitle, &event, mouseDownHandlers_[i].userData);
+        }
+        break;
+      case GUIADAPTER_EVENT_MOUSEDBLCLICK:
+        for (size_t i = 0; i < mouseDblCickHandlers_.size(); i++)
+        {
+          if (mouseDblCickHandlers_[i].canvasName == windowTitle)
+            (*(mouseDblCickHandlers_[i].func))(windowTitle, &event, mouseDblCickHandlers_[i].userData);
+        }
+        break;
+      case GUIADAPTER_EVENT_MOUSEMOVE:
+        for (size_t i = 0; i < mouseMoveHandlers_.size(); i++)
+        {
+          if (mouseMoveHandlers_[i].canvasName == windowTitle)
+            (*(mouseMoveHandlers_[i].func))(windowTitle, &event, mouseMoveHandlers_[i].userData);
+        }
+        break;
+      case GUIADAPTER_EVENT_MOUSEUP:
+        for (size_t i = 0; i < mouseUpHandlers_.size(); i++)
+        {
+          if (mouseUpHandlers_[i].canvasName == windowTitle)
+            (*(mouseUpHandlers_[i].func))(windowTitle, &event, mouseUpHandlers_[i].userData);
+        }
+        break;
+      default:
+        ORTHANC_ASSERT(false, "Wrong event.type: " << event.type << " in GuiAdapter::OnMouseEvent(...)");
+        break;
+      }
+    }
+  }
+
+
+  // extern void Debug_SetContextToBeKilled(std::string title);
+  // extern void Debug_SetContextToBeRestored(std::string title);
+
+  // SDL ONLY
+  void GuiAdapter::RequestAnimationFrame(OnAnimationFrameFunc func, void* userData)
+  {
+    animationFrameHandlers_.push_back(std::make_pair(func, userData));
+  }
+
+# if ORTHANC_ENABLE_OPENGL == 1 && !defined(__APPLE__)   /* OpenGL debug is not available on OS X */
+
+  // SDL ONLY
+  static void GLAPIENTRY
+    OpenGLMessageCallback(GLenum source,
+      GLenum type,
+      GLuint id,
+      GLenum severity,
+      GLsizei length,
+      const GLchar * message,
+      const void* userParam)
+  {
+    if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
+    {
+      fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
+        (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
+        type, severity, message);
+    }
+  }
+# endif
+
+#if 0
+  // TODO: remove this when generic sdl event handlers are implemented in 
+  // the DoseView
+  // SDL ONLY
+  bool GuiAdapter::IsSdlViewPortRefreshEvent(const SDL_Event& event) const
+  {
+    SDL_Window* sdlWindow = SDL_GetWindowFromID(event.window.windowID);
+
+    ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << event.window.windowID << "\" is not a valid SDL window ID!");
+
+    const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
+
+    // now we need to find the DoseView from from the canvas name!
+    // (and retrieve the SdlViewport)
+    boost::shared_ptr<IGuiAdapterWidget> foundWidget;
+    VisitWidgets([&foundWidget, windowTitleSz](auto widget)
+    {
+      if (widget->GetCanvasIdentifier() == std::string(windowTitleSz))
+        foundWidget = widget;
+    });
+    ORTHANC_ASSERT(foundWidget, "The window named: \"" << windowTitleSz << "\" was not found in the registered widgets!");
+    return foundWidget->GetSdlViewport().IsRefreshEvent(event);
+  }
+#endif
+
+  // SDL ONLY
+  void GuiAdapter::Run(GuiAdapterRunFunc func, void* cookie)
+  {
+#if 1
+    // TODO: MAKE THIS DYNAMIC !!! See SdlOpenGLViewport vs Cairo in ViewportWrapper
+# if ORTHANC_ENABLE_OPENGL == 1 && !defined(__APPLE__)
+    glEnable(GL_DEBUG_OUTPUT);
+    glDebugMessageCallback(OpenGLMessageCallback, 0);
+# endif
+#endif
+
+    // Uint32 SDL_GetWindowID(SDL_Window* window)
+    // SDL_Window* SDL_GetWindowFromID(Uint32 id)   // may return NULL
+
+    bool stop = false;
+    while (!stop)
+    {
+      {
+        // TODO: lock all viewports here! (use a scoped object)
+        if(func != NULL)
+          (*func)(cookie);
+        OnAnimationFrame(); // in SDL we must call it
+      }
+
+      while (!stop)
+      {
+        std::vector<SDL_Event> sdlEvents;
+        std::map<Uint32,SDL_Event> userEventsMap;
+        
+        SDL_Event sdlEvent;
+
+        // FIRST: collect all pending events
+        while (SDL_PollEvent(&sdlEvent) != 0)
+        {
+          if ( (sdlEvent.type >= SDL_USEREVENT) && 
+               (sdlEvent.type < SDL_LASTEVENT) )
+          {
+            // we don't want to have multiple events with the same event.type
+            userEventsMap[sdlEvent.type] = sdlEvent;
+          }
+          else
+          {
+            sdlEvents.push_back(sdlEvent);
+          }
+        }
+
+        // SECOND: collect all user events
+        for (std::map<Uint32,SDL_Event>::const_iterator it = userEventsMap.begin(); it != userEventsMap.end(); ++it)
+          sdlEvents.push_back(it->second);
+                
+        // now process the events
+        for (std::vector<SDL_Event>::const_iterator it = sdlEvents.begin(); it != sdlEvents.end(); ++it)
+        {
+          const SDL_Event& sdlEvent = *it;
+          // TODO: lock all viewports here! (use a scoped object)
+
+          if (sdlEvent.type == SDL_QUIT)
+          {
+            // TODO: call exit callbacks here
+            stop = true;
+            break;
+          }
+          else if ((sdlEvent.type == SDL_MOUSEMOTION) ||
+            (sdlEvent.type == SDL_MOUSEBUTTONDOWN) ||
+                   (sdlEvent.type == SDL_MOUSEBUTTONUP))
+          {
+            int scancodeCount = 0;
+            const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
+            bool ctrlPressed(false);
+            bool shiftPressed(false);
+            bool altPressed(false);
+
+            if (SDL_SCANCODE_LCTRL < scancodeCount && keyboardState[SDL_SCANCODE_LCTRL])
+              ctrlPressed = true;
+            if (SDL_SCANCODE_RCTRL < scancodeCount && keyboardState[SDL_SCANCODE_RCTRL])
+              ctrlPressed = true;
+            if (SDL_SCANCODE_LSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_LSHIFT])
+              shiftPressed = true;
+            if (SDL_SCANCODE_RSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_RSHIFT])
+              shiftPressed = true;
+            if (SDL_SCANCODE_LALT < scancodeCount && keyboardState[SDL_SCANCODE_LALT])
+              altPressed = true;
+
+            GuiAdapterMouseEvent dest;
+            ConvertFromPlatform(dest, ctrlPressed, shiftPressed, altPressed, sdlEvent);
+            OnMouseEvent(sdlEvent.window.windowID, dest);
+  #if 0
+            // for reference, how to create trackers
+            if (tracker)
+            {
+              PointerEvent e;
+              e.AddPosition(compositor.GetPixelCenterCoordinates(
+                sdlEvent.button.x, sdlEvent.button.y));
+              tracker->PointerMove(e);
+            }
+  #endif
+          }
+          else if (sdlEvent.type == SDL_MOUSEWHEEL)
+          {
+
+            int scancodeCount = 0;
+            const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
+            bool ctrlPressed(false);
+            bool shiftPressed(false);
+            bool altPressed(false);
+
+            if (SDL_SCANCODE_LCTRL < scancodeCount && keyboardState[SDL_SCANCODE_LCTRL])
+              ctrlPressed = true;
+            if (SDL_SCANCODE_RCTRL < scancodeCount && keyboardState[SDL_SCANCODE_RCTRL])
+              ctrlPressed = true;
+            if (SDL_SCANCODE_LSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_LSHIFT])
+              shiftPressed = true;
+            if (SDL_SCANCODE_RSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_RSHIFT])
+              shiftPressed = true;
+            if (SDL_SCANCODE_LALT < scancodeCount && keyboardState[SDL_SCANCODE_LALT])
+              altPressed = true;
+
+            GuiAdapterWheelEvent dest;
+            ConvertFromPlatform(dest, ctrlPressed, shiftPressed, altPressed, sdlEvent);
+            OnMouseWheelEvent(sdlEvent.window.windowID, dest);
+
+            //KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
+
+            //int x, y;
+            //SDL_GetMouseState(&x, &y);
+
+            //if (sdlEvent.wheel.y > 0)
+            //{
+            //  locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Up, x, y, modifiers);
+            //}
+            //else if (sdlEvent.wheel.y < 0)
+            //{
+            //  locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Down, x, y, modifiers);
+            //}
+          }
+          else if (sdlEvent.type == SDL_WINDOWEVENT &&
+            (sdlEvent.window.event == SDL_WINDOWEVENT_RESIZED ||
+             sdlEvent.window.event == SDL_WINDOWEVENT_SIZE_CHANGED))
+          {
+  #if 0
+            tracker.reset();
+  #endif
+            OnResize(sdlEvent.window.data1, sdlEvent.window.data2);
+          }
+          else if (sdlEvent.type == SDL_KEYDOWN && sdlEvent.key.repeat == 0 /* Ignore key bounce */)
+          {
+            switch (sdlEvent.key.keysym.sym)
+            {
+            case SDLK_f:
+              // window.GetWindow().ToggleMaximize(); //TODO: move to particular handler
+              break;
+
+            // This commented out code was used to debug the context
+            // loss/restoring code (2019-08-10)
+            // case SDLK_k:
+            //   {
+            //     SDL_Window* window = SDL_GetWindowFromID(sdlEvent.window.windowID);
+            //     std::string windowTitle(SDL_GetWindowTitle(window));
+            //     Debug_SetContextToBeKilled(windowTitle);
+            //   }
+            //   break;
+            // case SDLK_l:
+            //   {
+            //     SDL_Window* window = SDL_GetWindowFromID(sdlEvent.window.windowID);
+            //     std::string windowTitle(SDL_GetWindowTitle(window));
+            //     Debug_SetContextToBeRestored(windowTitle);
+            //   }
+            //   break;
+
+            case SDLK_q:
+              stop = true;
+              break;
+
+            default:
+              GuiAdapterKeyboardEvent dest;
+              ConvertFromPlatform(dest, sdlEvent);
+              OnKeyboardEvent(sdlEvent.window.windowID, dest);
+              break;
+            }
+          }
+        
+          OnSdlGenericEvent(sdlEvent);
+        }
+        SDL_Delay(1);
+      }
+    }
+  }
+#endif
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/GuiAdapter.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,377 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include <string>
+
+#if ORTHANC_ENABLE_WASM != 1
+# ifdef __EMSCRIPTEN__
+#   error __EMSCRIPTEN__ is defined and ORTHANC_ENABLE_WASM != 1
+# endif
+#endif
+
+#if ORTHANC_ENABLE_WASM == 1
+# ifndef __EMSCRIPTEN__
+#   error __EMSCRIPTEN__ is not defined and ORTHANC_ENABLE_WASM == 1
+# endif
+#endif
+
+#if ORTHANC_ENABLE_WASM == 1
+# include <emscripten/html5.h>
+#else
+# if ORTHANC_ENABLE_SDL == 1
+#   include <SDL.h>
+# endif
+#endif
+
+#include "../StoneException.h"
+
+#include <vector>
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+
+namespace OrthancStone
+{
+#if ORTHANC_ENABLE_SDL == 1
+  class SdlViewport;
+#endif
+
+#if 0
+
+  /**
+  This interface is used to store the widgets that are controlled by the 
+  GuiAdapter and receive event callbacks.
+  The callbacks may possibly be downcast (using dynamic_cast, for safety) \
+  to the actual widget type
+  */
+  class IGuiAdapterWidget
+  {
+  public:
+    virtual ~IGuiAdapterWidget() {}
+    
+#if #if ORTHANC_ENABLE_SDL == 1
+    /**
+    Returns the SdlViewport that this widget contains. If the underlying 
+    viewport type is *not* SDL, then an error is returned.
+    */
+    virtual SdlViewport& GetSdlViewport() = 0;
+#endif
+  };
+
+#endif
+
+  enum GuiAdapterMouseButtonType
+  {
+    GUIADAPTER_MOUSEBUTTON_LEFT = 0,
+    GUIADAPTER_MOUSEBUTTON_MIDDLE = 1,
+    GUIADAPTER_MOUSEBUTTON_RIGHT = 2
+  };
+
+
+  enum GuiAdapterHidEventType
+  {
+    GUIADAPTER_EVENT_MOUSEDOWN      = 1973,
+    GUIADAPTER_EVENT_MOUSEMOVE      = 1974,
+    GUIADAPTER_EVENT_MOUSEDBLCLICK  = 1975,
+    GUIADAPTER_EVENT_MOUSEUP        = 1976,
+    GUIADAPTER_EVENT_WHEEL          = 1977,
+    GUIADAPTER_EVENT_KEYDOWN        = 1978,
+    GUIADAPTER_EVENT_KEYUP          = 1979,
+  };
+
+  const unsigned int GUIADAPTER_DELTA_PIXEL = 2973;
+  const unsigned int GUIADAPTER_DELTA_LINE  = 2974;
+  const unsigned int GUIADAPTER_DELTA_PAGE  = 2975;
+
+  struct GuiAdapterUiEvent;
+  struct GuiAdapterMouseEvent;
+  struct GuiAdapterWheelEvent;
+  struct GuiAdapterKeyboardEvent;
+
+#if 1
+  typedef bool (*OnMouseEventFunc)    (std::string canvasId, const GuiAdapterMouseEvent* mouseEvent, void* userData);
+  typedef bool (*OnMouseWheelFunc)    (std::string canvasId, const GuiAdapterWheelEvent* wheelEvent, void* userData);
+  typedef bool (*OnKeyDownFunc)       (std::string canvasId, const GuiAdapterKeyboardEvent*   keyEvent,   void* userData);
+  typedef bool (*OnKeyUpFunc)         (std::string canvasId, const GuiAdapterKeyboardEvent*   keyEvent,   void* userData);
+  typedef bool (*OnAnimationFrameFunc)(double time, void* userData);
+  
+#if ORTHANC_ENABLE_SDL == 1
+  typedef bool (*OnSdlEventCallback)  (std::string canvasId, const SDL_Event& sdlEvent, void* userData);
+
+  typedef bool (*OnSdlWindowResizeFunc)(std::string canvasId, 
+                                        const GuiAdapterUiEvent* uiEvent, 
+                                        unsigned int width, 
+                                        unsigned int height, 
+                                        void* userData);
+
+
+#endif
+
+#else
+
+#if ORTHANC_ENABLE_WASM == 1
+  typedef EM_BOOL (*OnMouseEventFunc)(int eventType, const EmscriptenMouseEvent* mouseEvent, void* userData);
+  typedef EM_BOOL (*OnMouseWheelFunc)(int eventType, const EmscriptenWheelEvent* wheelEvent, void* userData);
+  typedef EM_BOOL (*OnKeyDownFunc)   (int eventType, const EmscriptenKeyboardEvent* keyEvent, void* userData);
+  typedef EM_BOOL (*OnKeyUpFunc)     (int eventType, const EmscriptenKeyboardEvent* keyEvent, void* userData);
+
+  typedef EM_BOOL (*OnAnimationFrameFunc)(double time, void* userData);
+  typedef EM_BOOL (*OnWindowResizeFunc)(int eventType, const EmscriptenUiEvent* uiEvent, void* userData);
+#else
+  typedef bool    (*OnMouseEventFunc)(int eventType, const SDL_Event* mouseEvent, void* userData);
+  typedef bool    (*OnMouseWheelFunc)(int eventType, const SDL_Event* wheelEvent, void* userData);
+  typedef bool    (*OnKeyDownFunc)   (int eventType, const SDL_Event* keyEvent,   void* userData);
+  typedef bool    (*OnKeyUpFunc)     (int eventType, const SDL_Event* keyEvent,   void* userData);
+
+  typedef bool    (*OnAnimationFrameFunc)(double time, void* userData);
+  typedef bool    (*OnWindowResizeFunc)(int eventType, const GuiAdapterUiEvent* uiEvent, void* userData);
+#endif
+
+#endif
+  struct GuiAdapterMouseEvent
+  {
+    GuiAdapterHidEventType type;
+    //double                   timestamp;
+    //long                     screenX;
+    //long                     screenY;
+    //long                     clientX;
+    //long                     clientY;
+    bool                     ctrlKey;
+    bool                     shiftKey;
+    bool                     altKey;
+    //bool                     metaKey;
+    unsigned short           button;
+    //unsigned short           buttons;
+    //long                     movementX;
+    //long                     movementY;
+    long                     targetX;
+    long                     targetY;
+    // canvasX and canvasY are deprecated - there no longer exists a Module['canvas'] object, so canvasX/Y are no longer reported (register a listener on canvas directly to get canvas coordinates, or translate manually)
+    //long                     canvasX;
+    //long                     canvasY;
+    //long                     padding;
+
+  public:
+    GuiAdapterMouseEvent()
+      : ctrlKey(false),
+        shiftKey(false),
+        altKey(false)
+    {
+    }
+  };
+
+  struct GuiAdapterWheelEvent {
+    GuiAdapterMouseEvent mouse;
+    double deltaX;
+    double deltaY;
+    unsigned long deltaMode;
+  };
+
+  // we don't use any data now
+  struct GuiAdapterUiEvent {};
+
+  // EmscriptenKeyboardEvent
+  struct GuiAdapterKeyboardEvent
+  {
+    GuiAdapterHidEventType type;
+    char sym[32];
+    bool ctrlKey;
+    bool shiftKey;
+    bool altKey;
+  };
+
+  std::ostream& operator<<(std::ostream& os, const GuiAdapterKeyboardEvent& event);
+  std::ostream& operator<<(std::ostream& os, const GuiAdapterMouseEvent& event);
+
+  /*
+    Mousedown event trigger when either the left or right (or middle) mouse is pressed 
+    on the object;
+
+    Mouseup event trigger when either the left or right (or middle) mouse is released
+    above the object after triggered mousedown event and held.
+
+    Click event trigger when the only left mouse button is pressed and released on the
+    same object, requires the Mousedown and Mouseup event happened before Click event.
+
+    The normal expect trigger order: onMousedown >> onMouseup >> onClick
+
+    Testing in Chrome v58, the time between onMouseup and onClick events are around 
+    7ms to 15ms
+
+    FROM: https://codingrepo.com/javascript/2017/05/19/javascript-difference-mousedown-mouseup-click-events/
+  */
+#if ORTHANC_ENABLE_WASM == 1
+  void ConvertFromPlatform(GuiAdapterUiEvent& dest, int eventType, const EmscriptenUiEvent& src);
+
+  void ConvertFromPlatform(GuiAdapterMouseEvent& dest, int eventType, const EmscriptenMouseEvent& src);
+  
+  void ConvertFromPlatform(GuiAdapterWheelEvent& dest, int eventType, const EmscriptenWheelEvent& src);
+
+  void ConvertFromPlatform(GuiAdapterKeyboardEvent& dest, const EmscriptenKeyboardEvent& src);
+#else
+
+# if ORTHANC_ENABLE_SDL == 1
+  void ConvertFromPlatform(GuiAdapterMouseEvent& dest, bool ctrlPressed, bool shiftPressed, bool altPressed, const SDL_Event& source);
+
+  void ConvertFromPlatform(GuiAdapterWheelEvent& dest, bool ctrlPressed, bool shiftPressed, bool altPressed, const SDL_Event& source);
+
+  void ConvertFromPlatform(GuiAdapterKeyboardEvent& dest, const SDL_Event& source);
+
+# endif
+
+#endif
+
+  typedef void (*GuiAdapterRunFunc)(void*);
+
+  class GuiAdapter
+  {
+  public:
+    GuiAdapter()
+    {
+      ORTHANC_ASSERT(s_instanceCount == 0);
+      s_instanceCount = 1;
+    }
+
+    ~GuiAdapter()
+    {
+      s_instanceCount -= 1;
+    }
+
+    /**
+      emscripten_set_resize_callback("EMSCRIPTEN_EVENT_TARGET_WINDOW", NULL, false, OnWindowResize);
+
+      emscripten_set_wheel_callback("#mycanvas1", widget1_.get(), false, OnXXXMouseWheel);
+      emscripten_set_wheel_callback("#mycanvas2", widget2_.get(), false, OnXXXMouseWheel);
+      emscripten_set_wheel_callback("#mycanvas3", widget3_.get(), false, OnXXXMouseWheel);
+
+      emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyDown); ---> NO!
+      emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyUp);
+
+      emscripten_request_animation_frame_loop(OnAnimationFrame, NULL);
+    
+      SDL:
+      see https://wiki.libsdl.org/SDL_CaptureMouse
+
+    */
+
+    void SetMouseDownCallback       (std::string canvasId, void* userData, bool capture, OnMouseEventFunc   func);
+    void SetMouseDblClickCallback   (std::string canvasId, void* userData, bool capture, OnMouseEventFunc   func);
+    void SetMouseMoveCallback       (std::string canvasId, void* userData, bool capture, OnMouseEventFunc   func);
+    void SetMouseUpCallback         (std::string canvasId, void* userData, bool capture, OnMouseEventFunc   func);
+    void SetWheelCallback           (std::string canvasId, void* userData, bool capture, OnMouseWheelFunc   func);
+    void SetKeyDownCallback         (std::string canvasId, void* userData, bool capture, OnKeyDownFunc      func);
+    void SetKeyUpCallback           (std::string canvasId, void* userData, bool capture, OnKeyUpFunc        func);
+
+#if ORTHANC_ENABLE_SDL == 1
+
+    void SetGenericSdlEventCallback (std::string canvasId, void* userData, bool capture, OnSdlEventCallback func);
+
+    typedef bool (*OnSdlEventCallback)  (std::string canvasId, const SDL_Event& sdlEvent, void* userData);
+
+    // if you pass "#window", then any Window resize will trigger the callback
+    // (this special string is converted to EMSCRIPTEN_EVENT_TARGET_WINDOW in DOM, when DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1)
+    void SetSdlResizeCallback(std::string canvasId, 
+                              void* userData, 
+                              bool capture, 
+                              OnSdlWindowResizeFunc func);
+#endif
+
+    void RequestAnimationFrame(OnAnimationFrameFunc func, void* userData);
+
+    // TODO: implement and call to remove canvases [in SDL, although code should be generic]
+    void SetOnExitCallback();
+
+    /**
+    Under SDL, this function does NOT return until all windows have been closed.
+    Under wasm, it returns without doing anything, since the event loop is managed
+    by the browser.
+    */
+    void Run(GuiAdapterRunFunc func = NULL, void* cookie = NULL);
+
+  private:
+
+#if ORTHANC_ENABLE_SDL == 1
+    /**
+    Gives observers a chance to react based on generic event handlers. This 
+    is used, for instance, when the viewport lock interface is invalidated.
+    */
+    void OnSdlGenericEvent(const SDL_Event& sdlEvent);
+#endif
+
+    /**
+    In SDL, this executes all the registered headers
+    */
+    void OnAnimationFrame();
+
+    //void RequestAnimationFrame(OnAnimationFrameFunc func, void* userData);
+    std::vector<std::pair<OnAnimationFrameFunc, void*> >  
+      animationFrameHandlers_;
+    
+    void OnResize(unsigned int width, unsigned int height);
+
+#if ORTHANC_ENABLE_SDL == 1
+    template<typename Func>
+    struct EventHandlerData
+    {
+      EventHandlerData(std::string canvasName, Func func, void* userData) 
+        : canvasName(canvasName)
+        , func(func)
+        , userData(userData)
+      {
+      }
+
+      std::string canvasName;
+      Func        func;
+      void*       userData;
+    };
+    std::vector<EventHandlerData<OnSdlWindowResizeFunc> > resizeHandlers_;
+    std::vector<EventHandlerData<OnMouseEventFunc  > >    mouseDownHandlers_;
+    std::vector<EventHandlerData<OnMouseEventFunc  > >    mouseDblCickHandlers_;
+    std::vector<EventHandlerData<OnMouseEventFunc  > >    mouseMoveHandlers_;
+    std::vector<EventHandlerData<OnMouseEventFunc  > >    mouseUpHandlers_;
+    std::vector<EventHandlerData<OnMouseWheelFunc  > >    mouseWheelHandlers_;
+    std::vector<EventHandlerData<OnKeyDownFunc > >        keyDownHandlers_;
+    std::vector<EventHandlerData<OnKeyUpFunc > >          keyUpHandlers_;
+    std::vector<EventHandlerData<OnSdlEventCallback > >   sdlEventHandlers_;
+
+    /**
+    This executes all the registered headers if needed (in wasm, the browser
+    deals with this)
+    */
+    void OnMouseEvent(uint32_t windowID, const GuiAdapterMouseEvent& event);
+
+    void OnKeyboardEvent(uint32_t windowID, const GuiAdapterKeyboardEvent& event);
+
+    /**
+    Same remark as OnMouseEvent
+    */
+    void OnMouseWheelEvent(uint32_t windowID, const GuiAdapterWheelEvent& event);
+
+#endif
+
+    /**
+    This executes all the registered headers if needed (in wasm, the browser
+    deals with this)
+    */
+    void ViewportsUpdateSize();
+
+    static int s_instanceCount;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/CircleMeasureTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,106 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CircleMeasureTracker.h"
+
+#include <stdio.h>
+#include <boost/math/constants/constants.hpp>
+
+namespace Deprecated
+{
+  CircleMeasureTracker::CircleMeasureTracker(IStatusBar* statusBar,
+                                             const OrthancStone::CoordinateSystem3D& slice,
+                                             double x, 
+                                             double y,
+                                             uint8_t red,
+                                             uint8_t green,
+                                             uint8_t blue,
+                                             const Orthanc::Font& font) :
+    statusBar_(statusBar),
+    slice_(slice),
+    x1_(x),
+    y1_(y),
+    x2_(x),
+    y2_(y),
+    font_(font)
+  {
+    color_[0] = red;
+    color_[1] = green;
+    color_[2] = blue;
+  }
+    
+
+  void CircleMeasureTracker::Render(OrthancStone::CairoContext& context,
+                                    double zoom)
+  {
+    double x = (x1_ + x2_) / 2.0;
+    double y = (y1_ + y2_) / 2.0;
+
+    OrthancStone::Vector tmp;
+    OrthancStone::LinearAlgebra::AssignVector(tmp, x2_ - x1_, y2_ - y1_);
+    double r = boost::numeric::ublas::norm_2(tmp) / 2.0;
+
+    context.SetSourceColor(color_[0], color_[1], color_[2]);
+
+    cairo_t* cr = context.GetObject();
+    cairo_save(cr);
+    cairo_set_line_width(cr, 2.0 / zoom);
+    cairo_translate(cr, x, y);
+    cairo_arc(cr, 0, 0, r, 0, 2.0 * boost::math::constants::pi<double>());
+    cairo_stroke_preserve(cr);
+    cairo_stroke(cr);
+    cairo_restore(cr);
+
+    context.DrawText(font_, FormatRadius(), x, y, OrthancStone::BitmapAnchor_Center);
+  }
+    
+
+  double CircleMeasureTracker::GetRadius() const  // In millimeters
+  {
+    OrthancStone::Vector a = slice_.MapSliceToWorldCoordinates(x1_, y1_);
+    OrthancStone::Vector b = slice_.MapSliceToWorldCoordinates(x2_, y2_);
+    return boost::numeric::ublas::norm_2(b - a) / 2.0;
+  }
+
+
+  std::string CircleMeasureTracker::FormatRadius() const
+  {
+    char buf[64];
+    sprintf(buf, "%0.01f cm", GetRadius() / 10.0);
+    return buf;
+  }
+
+  void CircleMeasureTracker::MouseMove(int displayX,
+                                       int displayY,
+                                       double x,
+                                       double y,
+                                       const std::vector<Touch>& displayTouches,
+                                       const std::vector<Touch>& sceneTouches)
+  {
+    x2_ = x;
+    y2_ = y;
+
+    if (statusBar_ != NULL)
+    {
+      statusBar_->SetMessage("Circle radius: " + FormatRadius());
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/CircleMeasureTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,78 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Widgets/IWorldSceneMouseTracker.h"
+#include "../Viewport/IStatusBar.h"
+#include "../../Toolbox/CoordinateSystem3D.h"
+
+#include <Images/Font.h>
+
+namespace Deprecated
+{
+  class CircleMeasureTracker : public IWorldSceneMouseTracker
+  {
+  private:
+    IStatusBar*           statusBar_;
+    OrthancStone::CoordinateSystem3D    slice_;
+    double                x1_;
+    double                y1_;
+    double                x2_;
+    double                y2_;
+    uint8_t               color_[3];
+    const Orthanc::Font&  font_;
+
+  public:
+    CircleMeasureTracker(IStatusBar* statusBar,
+                         const OrthancStone::CoordinateSystem3D& slice,
+                         double x, 
+                         double y,
+                         uint8_t red,
+                         uint8_t green,
+                         uint8_t blue,
+                         const Orthanc::Font& font);
+    
+    virtual bool HasRender() const
+    {
+      return true;
+    }
+
+    virtual void Render(OrthancStone::CairoContext& context,
+                        double zoom);
+    
+    double GetRadius() const;  // In millimeters
+
+    std::string FormatRadius() const;
+
+    virtual void MouseUp()
+    {
+      // Possibly create a new landmark "volume" with the circle in subclasses
+    }
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double x,
+                           double y,
+                           const std::vector<Touch>& displayTouches,
+                           const std::vector<Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/ColorFrameRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,62 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ColorFrameRenderer.h"
+
+#include <OrthancException.h>
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+
+namespace Deprecated
+{
+  OrthancStone::CairoSurface* ColorFrameRenderer::GenerateDisplay(const RenderStyle& style)
+  {
+    std::unique_ptr<OrthancStone::CairoSurface> display
+      (new OrthancStone::CairoSurface(frame_->GetWidth(), frame_->GetHeight(), false /* no alpha */));
+
+    Orthanc::ImageAccessor target;
+    display->GetWriteableAccessor(target);
+    
+    Orthanc::ImageProcessing::Convert(target, *frame_);
+
+    return display.release();
+  }
+
+
+  ColorFrameRenderer::ColorFrameRenderer(const Orthanc::ImageAccessor& frame,
+                                         const OrthancStone::CoordinateSystem3D& framePlane,
+                                         double pixelSpacingX,
+                                         double pixelSpacingY,
+                                         bool isFullQuality) :
+    FrameRenderer(framePlane, pixelSpacingX, pixelSpacingY, isFullQuality),
+    frame_(Orthanc::Image::Clone(frame))
+  {
+    if (frame_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (frame_->GetFormat() != Orthanc::PixelFormat_RGB24)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/ColorFrameRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,43 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "FrameRenderer.h"
+
+namespace Deprecated
+{
+  class ColorFrameRenderer : public FrameRenderer
+  {
+  private:
+    std::unique_ptr<Orthanc::ImageAccessor>   frame_;  // In RGB24
+
+  protected:
+    virtual OrthancStone::CairoSurface* GenerateDisplay(const RenderStyle& style);
+
+  public:
+    ColorFrameRenderer(const Orthanc::ImageAccessor& frame,
+                       const OrthancStone::CoordinateSystem3D& framePlane,
+                       double pixelSpacingX,
+                       double pixelSpacingY,
+                       bool isFullQuality);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/DicomSeriesVolumeSlicer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,181 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomSeriesVolumeSlicer.h"
+
+#include "FrameRenderer.h"
+#include "../Toolbox/DicomFrameConverter.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+#include <boost/lexical_cast.hpp>
+
+namespace Deprecated
+{
+
+  void DicomSeriesVolumeSlicer::OnSliceGeometryReady(const OrthancSlicesLoader::SliceGeometryReadyMessage& message)
+  {
+    if (message.GetOrigin().GetSlicesCount() > 0)
+    {
+      BroadcastMessage(IVolumeSlicer::GeometryReadyMessage(*this));
+    }
+    else
+    {
+      BroadcastMessage(IVolumeSlicer::GeometryErrorMessage(*this));
+    }
+  }
+
+  void DicomSeriesVolumeSlicer::OnSliceGeometryError(const OrthancSlicesLoader::SliceGeometryErrorMessage& message)
+  {
+    BroadcastMessage(IVolumeSlicer::GeometryErrorMessage(*this));
+  }
+
+
+  class DicomSeriesVolumeSlicer::RendererFactory : public LayerReadyMessage::IRendererFactory
+  {
+  private:
+    const OrthancSlicesLoader::SliceImageReadyMessage&  message_;
+
+  public:
+    RendererFactory(const OrthancSlicesLoader::SliceImageReadyMessage& message) :
+      message_(message)
+    {
+    }
+
+    virtual ILayerRenderer* CreateRenderer() const
+    {
+      bool isFull = (message_.GetEffectiveQuality() == SliceImageQuality_FullPng ||
+                     message_.GetEffectiveQuality() == SliceImageQuality_FullPam);
+
+      return FrameRenderer::CreateRenderer(message_.GetImage(), message_.GetSlice(), isFull);
+    }
+  };
+
+  void DicomSeriesVolumeSlicer::OnSliceImageReady(const OrthancSlicesLoader::SliceImageReadyMessage& message)
+  {
+    // first notify that the pixel data of the frame is ready (targeted to, i.e: an image cache)
+    BroadcastMessage(FrameReadyMessage(*this, message.GetImage(), 
+                                  message.GetEffectiveQuality(), message.GetSlice()));
+
+    // then notify that the layer is ready for rendering
+    RendererFactory factory(message);
+    BroadcastMessage(IVolumeSlicer::LayerReadyMessage(*this, factory, message.GetSlice().GetGeometry()));
+  }
+
+  void DicomSeriesVolumeSlicer::OnSliceImageError(const OrthancSlicesLoader::SliceImageErrorMessage& message)
+  {
+    BroadcastMessage(IVolumeSlicer::LayerErrorMessage(*this, message.GetSlice().GetGeometry()));
+  }
+
+
+  DicomSeriesVolumeSlicer::DicomSeriesVolumeSlicer() :
+    quality_(SliceImageQuality_FullPng)
+  {
+  }
+
+  void DicomSeriesVolumeSlicer::Connect(boost::shared_ptr<OrthancApiClient> orthanc)
+  {
+    loader_.reset(new OrthancSlicesLoader(orthanc));
+    Register<OrthancSlicesLoader::SliceGeometryReadyMessage>(*loader_, &DicomSeriesVolumeSlicer::OnSliceGeometryReady);
+    Register<OrthancSlicesLoader::SliceGeometryErrorMessage>(*loader_, &DicomSeriesVolumeSlicer::OnSliceGeometryError);
+    Register<OrthancSlicesLoader::SliceImageReadyMessage>(*loader_, &DicomSeriesVolumeSlicer::OnSliceImageReady);
+    Register<OrthancSlicesLoader::SliceImageErrorMessage>(*loader_, &DicomSeriesVolumeSlicer::OnSliceImageError);
+  }
+  
+  void DicomSeriesVolumeSlicer::LoadSeries(const std::string& seriesId)
+  {
+    if (loader_.get() == NULL)
+    {
+      // Should have called "Connect()"
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    
+    loader_->ScheduleLoadSeries(seriesId);
+  }
+
+
+  void DicomSeriesVolumeSlicer::LoadInstance(const std::string& instanceId)
+  {
+    if (loader_.get() == NULL)
+    {
+      // Should have called "Connect()"
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    
+    loader_->ScheduleLoadInstance(instanceId);
+  }
+
+
+  void DicomSeriesVolumeSlicer::LoadFrame(const std::string& instanceId,
+                                          unsigned int frame)
+  {
+    if (loader_.get() == NULL)
+    {
+      // Should have called "Connect()"
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    
+    loader_->ScheduleLoadFrame(instanceId, frame);
+  }
+
+
+  bool DicomSeriesVolumeSlicer::GetExtent(std::vector<OrthancStone::Vector>& points,
+                                          const OrthancStone::CoordinateSystem3D& viewportSlice)
+  {
+    if (loader_.get() == NULL)
+    {
+      // Should have called "Connect()"
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    
+    size_t index;
+
+    if (loader_->IsGeometryReady() &&
+        loader_->LookupSlice(index, viewportSlice))
+    {
+      loader_->GetSlice(index).GetExtent(points);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+  
+  void DicomSeriesVolumeSlicer::ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice)
+  {
+    if (loader_.get() == NULL)
+    {
+      // Should have called "Connect()"
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    
+    size_t index;
+
+    if (loader_->IsGeometryReady() &&
+        loader_->LookupSlice(index, viewportSlice))
+    {
+      loader_->ScheduleLoadSliceImage(index, quality_);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/DicomSeriesVolumeSlicer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,129 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IVolumeSlicer.h"
+#include "../../Messages/ObserverBase.h"
+#include "../Toolbox/IWebService.h"
+#include "../Toolbox/OrthancSlicesLoader.h"
+#include "../Toolbox/OrthancApiClient.h"
+
+namespace Deprecated
+{  
+  // this class is in charge of loading a Frame.
+  // once it's been loaded (first the geometry and then the image),
+  // messages are sent to observers so they can use it
+  class DicomSeriesVolumeSlicer :
+    public IVolumeSlicer,
+    public OrthancStone::ObserverBase<DicomSeriesVolumeSlicer>
+    //private OrthancSlicesLoader::ISliceLoaderObserver
+  {
+  public:
+    // TODO: Add "frame" and "instanceId"
+    class FrameReadyMessage : public OrthancStone::OriginMessage<DicomSeriesVolumeSlicer>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const Orthanc::ImageAccessor&  frame_;
+      SliceImageQuality              imageQuality_;
+      const Slice&                   slice_;
+
+    public:
+      FrameReadyMessage(DicomSeriesVolumeSlicer& origin,
+                        const Orthanc::ImageAccessor& frame,
+                        SliceImageQuality imageQuality,
+                        const Slice& slice) :
+        OriginMessage(origin),
+        frame_(frame),
+        imageQuality_(imageQuality),
+        slice_(slice)
+      {
+      }
+
+      const Orthanc::ImageAccessor& GetFrame() const
+      {
+        return frame_;
+      }
+
+      SliceImageQuality GetImageQuality() const
+      {
+        return imageQuality_;
+      }
+
+      const Slice& GetSlice() const
+      {
+        return slice_;
+      }
+    };
+
+    
+  private:
+    class RendererFactory;
+    
+    boost::shared_ptr<OrthancSlicesLoader> loader_;
+    SliceImageQuality    quality_;
+
+  public:
+    DicomSeriesVolumeSlicer();
+
+    void Connect(boost::shared_ptr<OrthancApiClient> orthanc);
+    
+    void LoadSeries(const std::string& seriesId);
+
+    void LoadInstance(const std::string& instanceId);
+
+    void LoadFrame(const std::string& instanceId,
+                   unsigned int frame);
+
+    void SetImageQuality(SliceImageQuality quality)
+    {
+      quality_ = quality;
+    }
+
+    SliceImageQuality GetImageQuality() const
+    {
+      return quality_;
+    }
+
+    size_t GetSlicesCount() const
+    {
+      return loader_->GetSlicesCount();
+    }
+
+    const Slice& GetSlice(size_t slice) const 
+    {
+      return loader_->GetSlice(slice);
+    }
+
+    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
+                           const OrthancStone::CoordinateSystem3D& viewportSlice);
+
+    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice);
+
+protected:
+    void OnSliceGeometryReady(const OrthancSlicesLoader::SliceGeometryReadyMessage& message);
+    void OnSliceGeometryError(const OrthancSlicesLoader::SliceGeometryErrorMessage& message);
+    void OnSliceImageReady(const OrthancSlicesLoader::SliceImageReadyMessage& message);
+    void OnSliceImageError(const OrthancSlicesLoader::SliceImageErrorMessage& message);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/DicomStructureSetSlicer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,183 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "DicomStructureSetSlicer.h"
+
+#include "../../Toolbox/DicomStructureSet.h"
+
+namespace Deprecated
+{
+  class DicomStructureSetSlicer::Renderer : public ILayerRenderer
+  {
+  private:
+    class Structure
+    {
+    private:
+      bool         visible_;
+      uint8_t      red_;
+      uint8_t      green_;
+      uint8_t      blue_;
+      std::string  name_;
+
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+      std::vector< std::vector<OrthancStone::Point2D> > polygons_;
+#else
+      std::vector< std::pair<OrthancStone::Point2D, OrthancStone::Point2D> > segments_;
+#endif
+      
+    public:
+      Structure(OrthancStone::DicomStructureSet& structureSet,
+                const OrthancStone::CoordinateSystem3D& plane,
+                size_t index) :
+        name_(structureSet.GetStructureName(index))
+      {
+        structureSet.GetStructureColor(red_, green_, blue_, index);
+
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+        visible_ = structureSet.ProjectStructure(polygons_, index, plane);
+#else
+        visible_ = structureSet.ProjectStructure(segments_, index, plane);
+#endif
+      }
+
+      void Render(OrthancStone::CairoContext& context)
+      {
+        if (visible_)
+        {
+          cairo_t* cr = context.GetObject();
+        
+          context.SetSourceColor(red_, green_, blue_);
+
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+          for (size_t i = 0; i < polygons_.size(); i++)
+          {
+            cairo_move_to(cr, polygons_[i][0].x, polygons_[i][0].y);
+            for (size_t j = 0; j < polygons_[i].size(); j++)
+            {
+              cairo_line_to(cr, polygons_[i][j].x, polygons_[i][j].y);
+            }
+            cairo_line_to(cr, polygons_[i][0].x, polygons_[i][0].y);
+            cairo_stroke(cr);
+          }
+#else
+          for (size_t i = 0; i < segments_.size(); i++)
+          {
+            cairo_move_to(cr, segments_[i].first.x, segments_[i].first.y);
+            cairo_line_to(cr, segments_[i].second.x, segments_[i].second.y);
+            cairo_stroke(cr);
+          }
+#endif
+        }
+      }
+    };
+
+    typedef std::list<Structure*>  Structures;
+    
+    OrthancStone::CoordinateSystem3D  plane_;
+    Structures          structures_;
+    
+  public:
+    Renderer(OrthancStone::DicomStructureSet& structureSet,
+             const OrthancStone::CoordinateSystem3D& plane) :
+      plane_(plane)
+    {
+      for (size_t k = 0; k < structureSet.GetStructuresCount(); k++)
+      {
+        structures_.push_back(new Structure(structureSet, plane, k));
+      }
+    }
+
+    virtual ~Renderer()
+    {
+      for (Structures::iterator it = structures_.begin();
+           it != structures_.end(); ++it)
+      {
+        delete *it;
+      }
+    }
+
+    virtual bool RenderLayer(OrthancStone::CairoContext& context,
+                             const ViewportGeometry& view)
+    {
+      cairo_set_line_width(context.GetObject(), 2.0f / view.GetZoom());
+
+      for (Structures::const_iterator it = structures_.begin();
+           it != structures_.end(); ++it)
+      {
+        assert(*it != NULL);
+        (*it)->Render(context);
+      }
+
+      return true;
+    }
+
+    virtual const OrthancStone::CoordinateSystem3D& GetLayerPlane()
+    {
+      return plane_;
+    }
+
+    virtual void SetLayerStyle(const RenderStyle& style)
+    {
+    }
+    
+    virtual bool IsFullQuality()
+    {
+      return true;
+    }
+  };
+
+
+  class DicomStructureSetSlicer::RendererFactory : public LayerReadyMessage::IRendererFactory
+  {
+  private:
+    OrthancStone::DicomStructureSet&         structureSet_;
+    const OrthancStone::CoordinateSystem3D&  plane_;
+
+  public:
+    RendererFactory(OrthancStone::DicomStructureSet& structureSet,
+                    const OrthancStone::CoordinateSystem3D&  plane) :
+      structureSet_(structureSet),
+      plane_(plane)
+    {
+    }
+
+    virtual ILayerRenderer* CreateRenderer() const
+    {
+      return new Renderer(structureSet_, plane_);
+    }
+  };
+  
+
+  DicomStructureSetSlicer::DicomStructureSetSlicer(StructureSetLoader& loader) :
+    loader_(loader)
+  {
+    Register<StructureSetLoader::ContentChangedMessage>(loader_, &DicomStructureSetSlicer::OnStructureSetLoaded);
+  }
+
+
+  void DicomStructureSetSlicer::ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportPlane)
+  {
+    if (loader_.HasStructureSet())
+    {
+      RendererFactory factory(loader_.GetStructureSet(), viewportPlane);
+      BroadcastMessage(IVolumeSlicer::LayerReadyMessage(*this, factory, viewportPlane));
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/DicomStructureSetSlicer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IVolumeSlicer.h"
+#include "../Volumes/StructureSetLoader.h"
+
+namespace Deprecated
+{
+  class DicomStructureSetSlicer :
+    public IVolumeSlicer,
+    public OrthancStone::ObserverBase<DicomStructureSetSlicer>
+  {
+  private:
+    class Renderer;
+    class RendererFactory;
+
+    StructureSetLoader& loader_;
+
+    void OnStructureSetLoaded(const IVolumeLoader::ContentChangedMessage& message)
+    {
+      BroadcastMessage(IVolumeSlicer::ContentChangedMessage(*this));
+    }
+
+  public:
+    DicomStructureSetSlicer(StructureSetLoader& loader);
+
+    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
+                           const OrthancStone::CoordinateSystem3D& viewportPlane)
+    {
+      return false;
+    }
+
+    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportPlane);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/FrameRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,140 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "FrameRenderer.h"
+
+#include "GrayscaleFrameRenderer.h"
+#include "ColorFrameRenderer.h"
+
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  FrameRenderer::FrameRenderer(const OrthancStone::CoordinateSystem3D& framePlane,
+                               double pixelSpacingX,
+                               double pixelSpacingY,
+                               bool isFullQuality) :
+    framePlane_(framePlane),
+    pixelSpacingX_(pixelSpacingX),
+    pixelSpacingY_(pixelSpacingY),
+    isFullQuality_(isFullQuality)
+  {
+  }
+
+
+  bool FrameRenderer::RenderLayer(OrthancStone::CairoContext& context,
+                                  const ViewportGeometry& view)
+  {    
+    if (!style_.visible_)
+    {
+      return true;
+    }
+
+    if (display_.get() == NULL)
+    {
+      display_.reset(GenerateDisplay(style_));
+    }
+
+    assert(display_.get() != NULL);
+
+    cairo_t *cr = context.GetObject();
+
+    cairo_save(cr);
+
+    cairo_matrix_t transform;
+    cairo_matrix_init_identity(&transform);
+    cairo_matrix_scale(&transform, pixelSpacingX_, pixelSpacingY_);
+    cairo_matrix_translate(&transform, -0.5, -0.5);
+    cairo_transform(cr, &transform);
+
+    //cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
+    cairo_set_source_surface(cr, display_->GetObject(), 0, 0);
+
+    switch (style_.interpolation_)
+    {
+      case OrthancStone::ImageInterpolation_Nearest:
+        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);
+        break;
+
+      case OrthancStone::ImageInterpolation_Bilinear:
+        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_BILINEAR);
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    cairo_paint_with_alpha(cr, style_.alpha_);
+
+    if (style_.drawGrid_)
+    {
+      context.SetSourceColor(style_.drawColor_);
+      cairo_set_line_width(cr, 0.5 / view.GetZoom());
+
+      for (unsigned int x = 0; x <= display_->GetWidth(); x++)
+      {
+        cairo_move_to(cr, x, 0);
+        cairo_line_to(cr, x, display_->GetHeight());
+      }
+
+      for (unsigned int y = 0; y <= display_->GetHeight(); y++)
+      {
+        cairo_move_to(cr, 0, y);
+        cairo_line_to(cr, display_->GetWidth(), y);
+      }
+
+      cairo_stroke(cr);
+    }
+
+    cairo_restore(cr);
+
+    return true;
+  }
+
+
+  void FrameRenderer::SetLayerStyle(const RenderStyle& style)
+  {
+    style_ = style;
+    display_.reset(NULL);
+  }
+
+
+  ILayerRenderer* FrameRenderer::CreateRenderer(const Orthanc::ImageAccessor& frame,
+                                                const Deprecated::Slice& framePlane,
+                                                bool isFullQuality)
+  {
+    if (frame.GetFormat() == Orthanc::PixelFormat_RGB24)
+    {
+      return new ColorFrameRenderer(frame,
+                                    framePlane.GetGeometry(), 
+                                    framePlane.GetPixelSpacingX(),
+                                    framePlane.GetPixelSpacingY(), isFullQuality);
+    }
+    else
+    {
+      return new GrayscaleFrameRenderer(frame,
+                                        framePlane.GetConverter(),
+                                        framePlane.GetGeometry(), 
+                                        framePlane.GetPixelSpacingX(),
+                                        framePlane.GetPixelSpacingY(), isFullQuality);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/FrameRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,69 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ILayerRenderer.h"
+
+#include "../Toolbox/Slice.h"
+
+namespace Deprecated
+{
+  class FrameRenderer : public ILayerRenderer
+  {
+  private:
+    OrthancStone::CoordinateSystem3D            framePlane_;
+    double                        pixelSpacingX_;
+    double                        pixelSpacingY_;
+    RenderStyle                   style_;
+    bool                          isFullQuality_;
+    std::unique_ptr<OrthancStone::CairoSurface>   display_;
+
+  protected:
+    virtual OrthancStone::CairoSurface* GenerateDisplay(const RenderStyle& style) = 0;
+
+  public:
+    FrameRenderer(const OrthancStone::CoordinateSystem3D& framePlane,
+                  double pixelSpacingX,
+                  double pixelSpacingY,
+                  bool isFullQuality);
+
+    virtual bool RenderLayer(OrthancStone::CairoContext& context,
+                             const ViewportGeometry& view);
+
+    virtual const OrthancStone::CoordinateSystem3D& GetLayerPlane()
+    {
+      return framePlane_;
+    }
+
+    virtual void SetLayerStyle(const RenderStyle& style);
+
+    virtual bool IsFullQuality() 
+    {
+      return isFullQuality_;
+    }
+
+    // TODO: Avoid cloning the "frame"
+    static ILayerRenderer* CreateRenderer(const Orthanc::ImageAccessor& frame,
+                                          const Deprecated::Slice& framePlane,
+                                          bool isFullQuality);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/GrayscaleFrameRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,141 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GrayscaleFrameRenderer.h"
+
+#include <Images/Image.h>
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  OrthancStone::CairoSurface* GrayscaleFrameRenderer::GenerateDisplay(const RenderStyle& style)
+  {
+    assert(frame_->GetFormat() == Orthanc::PixelFormat_Float32);
+
+    std::unique_ptr<OrthancStone::CairoSurface> result;
+
+    float windowCenter, windowWidth;
+    style.ComputeWindowing(windowCenter, windowWidth,
+                           defaultWindowCenter_, defaultWindowWidth_);
+
+    float x0 = windowCenter - windowWidth / 2.0f;
+    float x1 = windowCenter + windowWidth / 2.0f;
+
+    //LOG(INFO) << "Window: " << x0 << " => " << x1;
+
+    result.reset(new OrthancStone::CairoSurface(frame_->GetWidth(), frame_->GetHeight(), false /* no alpha */));
+
+    const uint8_t* lut = NULL;
+    if (style.applyLut_)
+    {
+      if (Orthanc::EmbeddedResources::GetFileResourceSize(style.lut_) != 3 * 256)
+      {
+        // Invalid colormap
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      lut = reinterpret_cast<const uint8_t*>(Orthanc::EmbeddedResources::GetFileResourceBuffer(style.lut_));
+    }
+
+    Orthanc::ImageAccessor target;
+    result->GetWriteableAccessor(target);
+    
+    const unsigned int width = target.GetWidth();
+    const unsigned int height = target.GetHeight();
+    
+    for (unsigned int y = 0; y < height; y++)
+    {
+      const float* p = reinterpret_cast<const float*>(frame_->GetConstRow(y));
+      uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
+
+      for (unsigned int x = 0; x < width; x++, p++, q += 4)
+      {
+        uint8_t v = 0;
+        if (windowWidth >= 0.001f)  // Avoid division by zero
+        {
+          if (*p >= x1)
+          {
+            v = 255;
+          }
+          else if (*p <= x0)
+          {
+            v = 0;
+          }
+          else
+          {
+            // https://en.wikipedia.org/wiki/Linear_interpolation
+            v = static_cast<uint8_t>(255.0f * (*p - x0) / (x1 - x0));
+          }
+
+          if (style.reverse_ ^ (photometric_ == Orthanc::PhotometricInterpretation_Monochrome1))
+          {
+            v = 255 - v;
+          }
+        }
+
+        if (style.applyLut_)
+        {
+          assert(lut != NULL);
+          q[3] = 255;
+          q[2] = lut[3 * v];
+          q[1] = lut[3 * v + 1];
+          q[0] = lut[3 * v + 2];
+        }
+        else
+        {
+          q[3] = 255;
+          q[2] = v;
+          q[1] = v;
+          q[0] = v;
+        }
+      }
+    }
+
+    return result.release();
+  }
+
+
+  GrayscaleFrameRenderer::GrayscaleFrameRenderer(const Orthanc::ImageAccessor& frame,
+                                                 const Deprecated::DicomFrameConverter& converter,
+                                                 const OrthancStone::CoordinateSystem3D& framePlane,
+                                                 double pixelSpacingX,
+                                                 double pixelSpacingY,
+                                                 bool isFullQuality) :
+    FrameRenderer(framePlane, pixelSpacingX, pixelSpacingY, isFullQuality),
+    frame_(Orthanc::Image::Clone(frame)),
+    defaultWindowCenter_(static_cast<float>(converter.GetDefaultWindowCenter())),
+    defaultWindowWidth_(static_cast<float>(converter.GetDefaultWindowWidth())),
+    photometric_(converter.GetPhotometricInterpretation())
+  {
+    if (frame_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    converter.ConvertFrameInplace(frame_);
+    assert(frame_.get() != NULL);
+
+    if (frame_->GetFormat() != Orthanc::PixelFormat_Float32)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/GrayscaleFrameRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,48 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "FrameRenderer.h"
+#include "../Toolbox/DicomFrameConverter.h"
+
+namespace Deprecated
+{
+  class GrayscaleFrameRenderer : public FrameRenderer
+  {
+  private:
+    std::unique_ptr<Orthanc::ImageAccessor>   frame_;  // In Float32
+    float                                   defaultWindowCenter_;
+    float                                   defaultWindowWidth_;
+    Orthanc::PhotometricInterpretation      photometric_;
+
+  protected:
+    virtual OrthancStone::CairoSurface* GenerateDisplay(const RenderStyle& style);
+
+  public:
+    GrayscaleFrameRenderer(const Orthanc::ImageAccessor& frame,
+                           const Deprecated::DicomFrameConverter& converter,
+                           const OrthancStone::CoordinateSystem3D& framePlane,
+                           double pixelSpacingX,
+                           double pixelSpacingY,
+                           bool isFullQuality);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/ILayerRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,47 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Wrappers/CairoContext.h"
+#include "../../Toolbox/CoordinateSystem3D.h"
+#include "../Toolbox/ViewportGeometry.h"
+#include "RenderStyle.h"
+
+namespace Deprecated
+{
+  class ILayerRenderer : public boost::noncopyable
+  {
+  public:
+    virtual ~ILayerRenderer()
+    {
+    }
+    
+    virtual bool RenderLayer(OrthancStone::CairoContext& context,
+                             const ViewportGeometry& view) = 0;
+
+    virtual void SetLayerStyle(const RenderStyle& style) = 0;
+
+    virtual const OrthancStone::CoordinateSystem3D& GetLayerPlane() = 0;
+    
+    virtual bool IsFullQuality() = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/IVolumeSlicer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,134 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ILayerRenderer.h"
+#include "../Toolbox/Slice.h"
+#include "../../Messages/IObservable.h"
+#include "../../Messages/IMessage.h"
+#include "Images/Image.h"
+#include <boost/shared_ptr.hpp>
+
+namespace Deprecated
+{
+  class IVolumeSlicer : public OrthancStone::IObservable
+  {
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryReadyMessage, IVolumeSlicer);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryErrorMessage, IVolumeSlicer);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ContentChangedMessage, IVolumeSlicer);
+
+    class SliceContentChangedMessage : public OrthancStone::OriginMessage<IVolumeSlicer>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const Deprecated::Slice& slice_;
+
+    public:
+      SliceContentChangedMessage(IVolumeSlicer& origin,
+                                 const Deprecated::Slice& slice) :
+        OriginMessage(origin),
+        slice_(slice)
+      {
+      }
+
+      const Deprecated::Slice& GetSlice() const
+      {
+        return slice_;
+      }
+    };
+    
+
+    class LayerReadyMessage : public OrthancStone::OriginMessage<IVolumeSlicer>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    public:
+      class IRendererFactory : public boost::noncopyable
+      {
+      public:
+        virtual ~IRendererFactory()
+        {
+        }
+
+        virtual ILayerRenderer* CreateRenderer() const = 0;
+      };
+    
+    private:
+      const IRendererFactory&    factory_;
+      const OrthancStone::CoordinateSystem3D&  slice_;
+
+    public:
+      LayerReadyMessage(IVolumeSlicer& origin,
+                        const IRendererFactory& rendererFactory,
+                        const OrthancStone::CoordinateSystem3D& slice) :
+        OriginMessage(origin),
+        factory_(rendererFactory),
+        slice_(slice)
+      {
+      }
+
+      ILayerRenderer* CreateRenderer() const
+      {
+        return factory_.CreateRenderer();
+      }
+
+      const OrthancStone::CoordinateSystem3D& GetSlice() const
+      {
+        return slice_;
+      }
+    };
+
+
+    class LayerErrorMessage : public OrthancStone::OriginMessage<IVolumeSlicer>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const OrthancStone::CoordinateSystem3D&  slice_;
+
+    public:
+      LayerErrorMessage(IVolumeSlicer& origin,
+                        const OrthancStone::CoordinateSystem3D& slice) :
+        OriginMessage(origin),
+        slice_(slice)
+      {
+      }
+
+      const OrthancStone::CoordinateSystem3D& GetSlice() const
+      {
+        return slice_;
+      }
+    };
+
+
+    virtual ~IVolumeSlicer()
+    {
+    }
+
+    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
+                           const OrthancStone::CoordinateSystem3D& viewportSlice) = 0;
+
+    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice) = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/LineLayerRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,67 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "LineLayerRenderer.h"
+
+namespace Deprecated
+{
+  LineLayerRenderer::LineLayerRenderer(double x1,
+                                       double y1,
+                                       double x2,
+                                       double y2,
+                                       const OrthancStone::CoordinateSystem3D& plane) : 
+    x1_(x1),
+    y1_(y1),
+    x2_(x2),
+    y2_(y2),
+    plane_(plane)
+  {
+    RenderStyle style;
+    SetLayerStyle(style);
+  }
+
+
+  bool LineLayerRenderer::RenderLayer(OrthancStone::CairoContext& context,
+                                      const ViewportGeometry& view)
+  {
+    if (visible_)
+    {
+      context.SetSourceColor(color_);
+
+      cairo_t *cr = context.GetObject();
+      cairo_set_line_width(cr, 1.0 / view.GetZoom());
+      cairo_move_to(cr, x1_, y1_);
+      cairo_line_to(cr, x2_, y2_);
+      cairo_stroke(cr);
+    }
+
+    return true;
+  }
+
+
+  void LineLayerRenderer::SetLayerStyle(const RenderStyle& style)
+  {
+    visible_ = style.visible_;
+    color_[0] = style.drawColor_[0];
+    color_[1] = style.drawColor_[1];
+    color_[2] = style.drawColor_[2];
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/LineLayerRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,61 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ILayerRenderer.h"
+
+namespace Deprecated
+{
+  class LineLayerRenderer : public ILayerRenderer
+  {
+  private:
+    double              x1_;
+    double              y1_;
+    double              x2_;
+    double              y2_;
+    OrthancStone::CoordinateSystem3D  plane_;
+    bool                visible_;
+    uint8_t             color_[3];
+
+  public:
+    LineLayerRenderer(double x1,
+                      double y1,
+                      double x2,
+                      double y2,
+                      const OrthancStone::CoordinateSystem3D& plane);
+
+    virtual bool RenderLayer(OrthancStone::CairoContext& context,
+                             const ViewportGeometry& view);
+
+    virtual void SetLayerStyle(const RenderStyle& style);
+
+    virtual const OrthancStone::CoordinateSystem3D& GetLayerPlane()
+    {
+      return plane_;
+    }
+    
+    virtual bool IsFullQuality()
+    {
+      return true;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/LineMeasureTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,102 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "LineMeasureTracker.h"
+
+#include <stdio.h>
+
+namespace Deprecated
+{
+  LineMeasureTracker::LineMeasureTracker(IStatusBar* statusBar,
+                                         const OrthancStone::CoordinateSystem3D& slice,
+                                         double x, 
+                                         double y,
+                                         uint8_t red,
+                                         uint8_t green,
+                                         uint8_t blue,
+                                         const Orthanc::Font& font) :
+    statusBar_(statusBar),
+    slice_(slice),
+    x1_(x),
+    y1_(y),
+    x2_(x),
+    y2_(y),
+    font_(font)
+  {
+    color_[0] = red;
+    color_[1] = green;
+    color_[2] = blue;
+  }
+    
+
+  void LineMeasureTracker::Render(OrthancStone::CairoContext& context,
+                                  double zoom)
+  {
+    context.SetSourceColor(color_[0], color_[1], color_[2]);
+
+    cairo_t* cr = context.GetObject();
+    cairo_set_line_width(cr, 2.0 / zoom);
+    cairo_move_to(cr, x1_, y1_);
+    cairo_line_to(cr, x2_, y2_);
+    cairo_stroke(cr);
+
+    if (y2_ - y1_ < 0)
+    {
+      context.DrawText(font_, FormatLength(), x2_, y2_ - 5, OrthancStone::BitmapAnchor_BottomCenter);
+    }
+    else
+    {
+      context.DrawText(font_, FormatLength(), x2_, y2_ + 5, OrthancStone::BitmapAnchor_TopCenter);
+    }
+  }
+    
+
+  double LineMeasureTracker::GetLength() const  // In millimeters
+  {
+    OrthancStone::Vector a = slice_.MapSliceToWorldCoordinates(x1_, y1_);
+    OrthancStone::Vector b = slice_.MapSliceToWorldCoordinates(x2_, y2_);
+    return boost::numeric::ublas::norm_2(b - a);
+  }
+
+
+  std::string LineMeasureTracker::FormatLength() const
+  {
+    char buf[64];
+    sprintf(buf, "%0.01f cm", GetLength() / 10.0);
+    return buf;
+  }
+
+  void LineMeasureTracker::MouseMove(int displayX,
+                                     int displayY,
+                                     double x,
+                                     double y,
+                                     const std::vector<Touch>& displayTouches,
+                                     const std::vector<Touch>& sceneTouches)
+  {
+    x2_ = x;
+    y2_ = y;
+
+    if (statusBar_ != NULL)
+    {
+      statusBar_->SetMessage("Line length: " + FormatLength());
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/LineMeasureTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,78 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Widgets/IWorldSceneMouseTracker.h"
+
+#include "../Viewport/IStatusBar.h"
+#include "../../Toolbox/CoordinateSystem3D.h"
+
+namespace Deprecated
+{
+  class LineMeasureTracker : public IWorldSceneMouseTracker
+  {
+  private:
+    IStatusBar*           statusBar_;
+    OrthancStone::CoordinateSystem3D    slice_;
+    double                x1_;
+    double                y1_;
+    double                x2_;
+    double                y2_;
+    uint8_t               color_[3];
+    unsigned int          fontSize_;
+    const Orthanc::Font&  font_;
+
+  public:
+    LineMeasureTracker(IStatusBar* statusBar,
+                       const OrthancStone::CoordinateSystem3D& slice,
+                       double x, 
+                       double y,
+                       uint8_t red,
+                       uint8_t green,
+                       uint8_t blue,
+                       const Orthanc::Font& font);
+
+    virtual bool HasRender() const
+    {
+      return true;
+    }
+
+    virtual void Render(OrthancStone::CairoContext& context,
+                        double zoom);
+    
+    double GetLength() const;  // In millimeters
+
+    std::string FormatLength() const;
+
+    virtual void MouseUp()
+    {
+      // Possibly create a new landmark "volume" with the line in subclasses
+    }
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double x,
+                           double y,
+                           const std::vector<Touch>& displayTouches,
+                           const std::vector<Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/RenderStyle.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,106 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RenderStyle.h"
+
+#include "../../Volumes/ImageBuffer3D.h"
+#include "../Toolbox/DicomFrameConverter.h"
+
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  RenderStyle::RenderStyle()
+  {
+    visible_ = true;
+    reverse_ = false;
+    windowing_ = OrthancStone::ImageWindowing_Custom;
+    alpha_ = 1;
+    applyLut_ = false;
+    lut_ = Orthanc::EmbeddedResources::COLORMAP_HOT;
+    drawGrid_ = false;
+    drawColor_[0] = 255;
+    drawColor_[1] = 255;
+    drawColor_[2] = 255;
+    customWindowCenter_ = 128;
+    customWindowWidth_ = 256;
+    interpolation_ = OrthancStone::ImageInterpolation_Nearest;
+    fontSize_ = 14;
+  }
+
+
+  void RenderStyle::ComputeWindowing(float& targetCenter,
+                                     float& targetWidth,
+                                     float defaultCenter,
+                                     float defaultWidth) const
+  {
+    if (windowing_ == OrthancStone::ImageWindowing_Custom)
+    {
+      targetCenter = customWindowCenter_;
+      targetWidth = customWindowWidth_;
+    }
+    else
+    {
+      return ::OrthancStone::ComputeWindowing
+        (targetCenter, targetWidth, windowing_, defaultCenter, defaultWidth);
+    }
+  }
+
+  
+  void RenderStyle::SetColor(uint8_t red,
+                             uint8_t green,
+                             uint8_t blue)
+  {
+    drawColor_[0] = red;
+    drawColor_[1] = green;
+    drawColor_[2] = blue;
+  }
+
+
+  bool RenderStyle::FitRange(const OrthancStone::ImageBuffer3D& image,
+                             const DicomFrameConverter& converter)
+  {
+    float minValue, maxValue;
+
+    windowing_ = OrthancStone::ImageWindowing_Custom;
+
+    if (image.GetRange(minValue, maxValue))
+    {  
+      // casting the narrower type to wider before calling the + operator
+      // will prevent overflowing (this is why the cast to double is only 
+      // done on the first operand)
+      customWindowCenter_ = static_cast<float>(
+        converter.Apply((static_cast<double>(minValue) + maxValue) / 2.0));
+      
+      customWindowWidth_ = static_cast<float>(
+        converter.Apply(static_cast<double>(maxValue) - minValue));
+      
+      if (customWindowWidth_ > 1)
+      {
+        return true;
+      }
+    }
+
+    customWindowCenter_ = 128.0;
+    customWindowWidth_ = 256.0;
+    return false;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/RenderStyle.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,63 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../StoneEnumerations.h"
+#include "../../Volumes/ImageBuffer3D.h"
+#include "../Toolbox/DicomFrameConverter.h"
+
+#include <EmbeddedResources.h>
+
+#include <stdint.h>
+
+namespace Deprecated
+{
+  struct RenderStyle
+  {
+    bool visible_;
+    bool reverse_;
+    OrthancStone::ImageWindowing windowing_;
+    float alpha_;   // In [0,1]
+    bool applyLut_;
+    Orthanc::EmbeddedResources::FileResourceId  lut_;
+    bool drawGrid_;
+    uint8_t drawColor_[3];
+    float customWindowCenter_;
+    float customWindowWidth_;
+    OrthancStone::ImageInterpolation interpolation_;
+    unsigned int fontSize_;
+    
+    RenderStyle();
+
+    void ComputeWindowing(float& targetCenter,
+                          float& targetWidth,
+                          float defaultCenter,
+                          float defaultWidth) const;
+
+    void SetColor(uint8_t red,
+                  uint8_t green,
+                  uint8_t blue);
+
+    bool FitRange(const OrthancStone::ImageBuffer3D& image,
+                  const DicomFrameConverter& converter);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/SeriesFrameRendererFactory.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,177 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SeriesFrameRendererFactory.h"
+
+#include "FrameRenderer.h"
+
+#include <OrthancException.h>
+#include <Logging.h>
+#include <Toolbox.h>
+#include <OrthancPluginException.h>
+#include <DicomDatasetReader.h>
+
+
+namespace Deprecated
+{
+  void SeriesFrameRendererFactory::ReadCurrentFrameDataset(size_t frame)
+  {
+    if (currentDataset_.get() != NULL &&
+        (fast_ || currentFrame_ == frame))
+    {
+      // The frame has not changed since the previous call, no need to
+      // update the DICOM dataset
+      return; 
+    }
+      
+    currentDataset_.reset(loader_->DownloadDicom(frame));
+    currentFrame_ = frame;
+
+    if (currentDataset_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+  void SeriesFrameRendererFactory::GetCurrentPixelSpacing(double& spacingX,
+                                                          double& spacingY) const
+  {
+    if (currentDataset_.get() == NULL)
+    {
+      // There was no previous call "ReadCurrentFrameDataset()"
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+    
+    GeometryToolbox::GetPixelSpacing(spacingX, spacingY, *currentDataset_);
+  }
+
+
+  double SeriesFrameRendererFactory::GetCurrentSliceThickness() const
+  {
+    if (currentDataset_.get() == NULL)
+    {
+      // There was no previous call "ReadCurrentFrameDataset()"
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+    
+    try
+    {
+      OrthancPlugins::DicomDatasetReader reader(*currentDataset_);
+
+      double thickness;
+      if (reader.GetDoubleValue(thickness, OrthancPlugins::DICOM_TAG_SLICE_THICKNESS))
+      {
+        return thickness;
+      }
+    }
+    catch (ORTHANC_PLUGINS_EXCEPTION_CLASS& e)
+    {
+    }
+
+    // Some arbitrary large slice thickness
+    return std::numeric_limits<double>::infinity();
+  }
+
+
+  SeriesFrameRendererFactory::SeriesFrameRendererFactory(ISeriesLoader* loader,   // Takes ownership
+                                                         bool fast) :
+    loader_(loader),
+    currentFrame_(0),
+    fast_(fast)
+  {
+    if (loader == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+  bool SeriesFrameRendererFactory::GetExtent(double& x1,
+                                             double& y1,
+                                             double& x2,
+                                             double& y2,
+                                             const SliceGeometry& viewportSlice)
+  {
+    if (currentDataset_.get() == NULL)
+    {
+      // There has been no previous call to
+      // "CreateLayerRenderer". Read some arbitrary DICOM frame, the
+      // one at the middle of the series.
+      unsigned int depth = loader_->GetGeometry().GetSliceCount();
+      ReadCurrentFrameDataset(depth / 2);
+    }
+
+    double spacingX, spacingY;
+    GetCurrentPixelSpacing(spacingX, spacingY);
+
+    return FrameRenderer::ComputeFrameExtent(x1, y1, x2, y2, 
+                                             viewportSlice, 
+                                             loader_->GetGeometry().GetSlice(0), 
+                                             loader_->GetWidth(), 
+                                             loader_->GetHeight(),
+                                             spacingX, spacingY);
+  }
+
+
+  ILayerRenderer* SeriesFrameRendererFactory::CreateLayerRenderer(const SliceGeometry& viewportSlice)
+  {
+    size_t closest;
+    double distance;
+
+    bool isOpposite;
+    if (!GeometryToolbox::IsParallelOrOpposite(isOpposite, loader_->GetGeometry().GetNormal(), viewportSlice.GetNormal()) ||
+        !loader_->GetGeometry().ComputeClosestSlice(closest, distance, viewportSlice.GetOrigin()))
+    {
+      // Unable to compute the slice in the series that is the
+      // closest to the slice displayed by the viewport
+      return NULL;
+    }
+
+    ReadCurrentFrameDataset(closest);
+    assert(currentDataset_.get() != NULL);
+        
+    double spacingX, spacingY;
+    GetCurrentPixelSpacing(spacingX, spacingY);
+
+    if (distance <= GetCurrentSliceThickness() / 2.0)
+    {
+      SliceGeometry frameSlice(*currentDataset_);
+      return FrameRenderer::CreateRenderer(loader_->DownloadFrame(closest), 
+                                           frameSlice,
+                                           *currentDataset_, 
+                                           spacingX, spacingY,
+                                           true);
+    }
+    else
+    {
+      // The closest slice of the series is too far away from the
+      // slice displayed by the viewport
+      return NULL;
+    }
+  }
+
+
+  ISliceableVolume& SeriesFrameRendererFactory::GetSourceVolume() const
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/SeriesFrameRendererFactory.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,65 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ILayerRendererFactory.h"
+
+#include "../Toolbox/ISeriesLoader.h"
+
+namespace Deprecated
+{
+  class SeriesFrameRendererFactory : public ILayerRendererFactory
+  {
+  private:
+    std::unique_ptr<ISeriesLoader>  loader_;
+    size_t                        currentFrame_;
+    bool                          fast_;
+
+    std::unique_ptr<OrthancPlugins::IDicomDataset>  currentDataset_;
+
+    void ReadCurrentFrameDataset(size_t frame);
+
+    void GetCurrentPixelSpacing(double& spacingX,
+                                double& spacingY) const;
+
+    double GetCurrentSliceThickness() const;
+
+  public:
+    SeriesFrameRendererFactory(ISeriesLoader* loader,   // Takes ownership
+                               bool fast);
+
+    virtual bool GetExtent(double& x1,
+                           double& y1,
+                           double& x2,
+                           double& y2,
+                           const SliceGeometry& viewportSlice);
+
+    virtual ILayerRenderer* CreateLayerRenderer(const SliceGeometry& viewportSlice);
+
+    virtual bool HasSourceVolume() const
+    {
+      return false;
+    }
+
+    virtual ISliceableVolume& GetSourceVolume() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/SingleFrameRendererFactory.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,88 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SingleFrameRendererFactory.h"
+
+#include "FrameRenderer.h"
+#include "../Toolbox/MessagingToolbox.h"
+#include "../Toolbox/DicomFrameConverter.h"
+
+#include <OrthancException.h>
+#include <FullOrthancDataset.h>
+#include <DicomDatasetReader.h>
+
+namespace Deprecated
+{
+  SingleFrameRendererFactory::SingleFrameRendererFactory(OrthancPlugins::IOrthancConnection& orthanc,
+                                                         const std::string& instanceId,
+                                                         unsigned int frame) :
+    orthanc_(orthanc),
+    instance_(instanceId),
+    frame_(frame)
+  {
+    dicom_.reset(new OrthancPlugins::FullOrthancDataset(orthanc, "/instances/" + instanceId + "/tags"));
+
+    DicomFrameConverter converter;
+    converter.ReadParameters(*dicom_);
+    format_ = converter.GetExpectedPixelFormat();
+  }
+
+
+  bool SingleFrameRendererFactory::GetExtent(double& x1,
+                                             double& y1,
+                                             double& x2,
+                                             double& y2,
+                                             const SliceGeometry& viewportSlice)
+  {
+    // Assume that PixelSpacingX == PixelSpacingY == 1
+
+    OrthancPlugins::DicomDatasetReader reader(*dicom_);
+
+    unsigned int width, height;
+
+    if (!reader.GetUnsignedIntegerValue(width, OrthancPlugins::DICOM_TAG_COLUMNS) ||
+        !reader.GetUnsignedIntegerValue(height, OrthancPlugins::DICOM_TAG_ROWS))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    x1 = 0;
+    y1 = 0;
+    x2 = static_cast<double>(width);
+    y2 = static_cast<double>(height);
+
+    return true;
+  }
+
+
+  ILayerRenderer* SingleFrameRendererFactory::CreateLayerRenderer(const SliceGeometry& viewportSlice)
+  {
+    SliceGeometry frameSlice(*dicom_);
+    return FrameRenderer::CreateRenderer(MessagingToolbox::DecodeFrame(orthanc_, instance_, frame_, format_), 
+                                         frameSlice, *dicom_, 1, 1, true);
+  }
+
+
+  ISliceableVolume& SingleFrameRendererFactory::GetSourceVolume() const
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/SingleFrameRendererFactory.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,69 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ILayerRendererFactory.h"
+#include <IOrthancConnection.h>
+
+namespace Deprecated
+{
+  class SingleFrameRendererFactory : public ILayerRendererFactory
+  {
+  private:
+    OrthancPlugins::IOrthancConnection&           orthanc_;
+    std::unique_ptr<OrthancPlugins::IDicomDataset>  dicom_;
+
+    std::string           instance_;
+    unsigned int          frame_;
+    Orthanc::PixelFormat  format_;
+
+  public:
+    SingleFrameRendererFactory(OrthancPlugins::IOrthancConnection& orthanc,
+                               const std::string& instanceId,
+                               unsigned int frame);
+
+    const OrthancPlugins::IDicomDataset& GetDataset() const
+    {
+      return *dicom_;
+    }
+
+    SliceGeometry GetSliceGeometry()
+    {
+      return SliceGeometry(*dicom_);
+    }
+
+    virtual bool GetExtent(double& x1,
+                           double& y1,
+                           double& x2,
+                           double& y2,
+                           const SliceGeometry& viewportSlice);
+
+    virtual ILayerRenderer* CreateLayerRenderer(const SliceGeometry& viewportSlice);
+
+    virtual bool HasSourceVolume() const
+    {
+      return false;
+    }
+
+    virtual ISliceableVolume& GetSourceVolume() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/SliceOutlineRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,54 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SliceOutlineRenderer.h"
+
+namespace Deprecated
+{
+  bool SliceOutlineRenderer::RenderLayer(OrthancStone::CairoContext& context,
+                                         const ViewportGeometry& view)
+  {
+    if (style_.visible_)
+    {
+      cairo_t *cr = context.GetObject();
+      cairo_save(cr);
+
+      context.SetSourceColor(style_.drawColor_);
+
+      double x1 = -0.5 * pixelSpacingX_;
+      double y1 = -0.5 * pixelSpacingY_;
+        
+      cairo_set_line_width(cr, 1.0 / view.GetZoom());
+      cairo_rectangle(cr, x1, y1,
+                      static_cast<double>(width_) * pixelSpacingX_,
+                      static_cast<double>(height_) * pixelSpacingY_);
+
+      double handleSize = 10.0f / view.GetZoom();
+      cairo_move_to(cr, x1 + handleSize, y1);
+      cairo_line_to(cr, x1, y1 + handleSize);
+
+      cairo_stroke(cr);
+      cairo_restore(cr);
+    }
+
+    return true;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Layers/SliceOutlineRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,67 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ILayerRenderer.h"
+#include "../Toolbox/Slice.h"
+
+namespace Deprecated
+{
+  class SliceOutlineRenderer : public ILayerRenderer
+  {
+  private:
+    OrthancStone::CoordinateSystem3D  geometry_;
+    double              pixelSpacingX_;
+    double              pixelSpacingY_;
+    unsigned int        width_;
+    unsigned int        height_;
+    RenderStyle         style_;
+
+  public:
+    SliceOutlineRenderer(const Slice& slice) :
+      geometry_(slice.GetGeometry()),
+      pixelSpacingX_(slice.GetPixelSpacingX()),
+      pixelSpacingY_(slice.GetPixelSpacingY()),
+      width_(slice.GetWidth()),
+      height_(slice.GetHeight())
+    {
+    }
+
+    virtual bool RenderLayer(OrthancStone::CairoContext& context,
+                             const ViewportGeometry& view);
+
+    virtual void SetLayerStyle(const RenderStyle& style)
+    {
+      style_ = style;
+    }
+
+    virtual const OrthancStone::CoordinateSystem3D& GetLayerSlice()
+    {
+      return geometry_;
+    }
+
+    virtual bool IsFullQuality()
+    {
+      return true;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Loaders/DicomStructureSetLoader2.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,125 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#include "DicomStructureSetLoader2.h"
+
+#include "../Messages/IObservable.h"
+#include "../Oracle/IOracle.h"
+#include "../Oracle/OracleCommandExceptionMessage.h"
+
+namespace Deprecated
+{
+
+  DicomStructureSetLoader2::DicomStructureSetLoader2(
+    DicomStructureSet2& structureSet
+    , IOracle& oracle
+    , IObservable& oracleObservable)
+    : IObserver(oracleObservable.GetBroker())
+    , IObservable(oracleObservable.GetBroker())
+    , structureSet_(structureSet)
+    , oracle_(oracle)
+    , oracleObservable_(oracleObservable)
+    , structuresReady_(false)
+  {
+    LOG(TRACE) << "DicomStructureSetLoader2(" << std::hex << this << std::dec << ")::DicomStructureSetLoader2()";
+
+    oracleObservable.RegisterObserverCallback(
+      new Callable<DicomStructureSetLoader2, OrthancRestApiCommand::SuccessMessage>
+      (*this, &DicomStructureSetLoader2::HandleSuccessMessage));
+
+    oracleObservable.RegisterObserverCallback(
+      new Callable<DicomStructureSetLoader2, OracleCommandExceptionMessage>
+      (*this, &DicomStructureSetLoader2::HandleExceptionMessage));
+  }
+
+  DicomStructureSetLoader2::~DicomStructureSetLoader2()
+  {
+    LOG(TRACE) << "DicomStructureSetLoader2(" << std::hex << this << std::dec << ")::~DicomStructureSetLoader2()";
+    oracleObservable_.Unregister(this);
+  }
+
+  void DicomStructureSetLoader2::LoadInstanceFromString(const std::string& body)
+  {
+    OrthancPlugins::FullOrthancDataset dicom(body);
+    //loader.content_.reset(new DicomStructureSet(dicom));
+    structureSet_.Clear();
+    structureSet_.SetContents(dicom);
+    SetStructuresReady();
+  }
+
+  void DicomStructureSetLoader2::HandleSuccessMessage(const OrthancRestApiCommand::SuccessMessage& message)
+  {
+    const std::string& body = message.GetAnswer();
+    LoadInstanceFromString(body);
+  }
+
+  void DicomStructureSetLoader2::HandleExceptionMessage(const OracleCommandExceptionMessage& message)
+  {
+    LOG(ERROR) << "DicomStructureSetLoader2::HandleExceptionMessage: error when trying to load data. "
+      << "Error: " << message.GetException().What() << " Details: "
+      << message.GetException().GetDetails();
+  }
+
+  void DicomStructureSetLoader2::LoadInstance(const std::string& instanceId)
+  {
+    std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
+    command->SetHttpHeader("Accept-Encoding", "gzip");
+
+    std::string uri = "/instances/" + instanceId + "/tags?ignore-length=3006-0050";
+
+    command->SetUri(uri);
+    oracle_.Schedule(*this, command.release());
+  }
+
+  void DicomStructureSetLoader2::SetStructuresReady()
+  {
+    structuresReady_ = true;
+  }
+
+  bool DicomStructureSetLoader2::AreStructuresReady() const
+  {
+    return structuresReady_;
+  }
+
+  /*
+
+    void LoaderStateMachine::HandleExceptionMessage(const OracleCommandExceptionMessage& message)
+    {
+      LOG(ERROR) << "LoaderStateMachine::HandleExceptionMessage: error in the state machine, stopping all processing";
+      LOG(ERROR) << "Error: " << message.GetException().What() << " Details: " <<
+        message.GetException().GetDetails();
+        Clear();
+    }
+
+    LoaderStateMachine::~LoaderStateMachine()
+    {
+      Clear();
+    }
+
+
+  */
+
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Loaders/DicomStructureSetLoader2.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,87 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#include "../Toolbox/DicomStructureSet2.h"
+#include "../Messages/IMessage.h"
+#include "../Messages/IObserver.h"
+#include "../Messages/IObservable.h"
+#include "../Oracle/OrthancRestApiCommand.h"
+
+#include <boost/noncopyable.hpp>
+
+namespace Deprecated
+{
+  class IOracle;
+  class IObservable;
+  class OrthancRestApiCommand;
+  class OracleCommandExceptionMessage;
+
+  class DicomStructureSetLoader2 : public IObserver, public IObservable
+  {
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, StructuresReady, DicomStructureSetLoader2);
+
+    /**
+    Warning: the structureSet, oracle and oracleObservable objects must live
+    at least as long as this object (TODO: shared_ptr?)
+    */
+    DicomStructureSetLoader2(DicomStructureSet2& structureSet, IOracle& oracle, IObservable& oracleObservable);
+
+    ~DicomStructureSetLoader2();
+
+    void LoadInstance(const std::string& instanceId);
+
+    /** Internal use */
+    void LoadInstanceFromString(const std::string& body);
+
+    void SetStructuresReady();
+    bool AreStructuresReady() const;
+  
+  private:
+    /**
+    Called back by the oracle when data is ready!
+    */
+    void HandleSuccessMessage(const OrthancRestApiCommand::SuccessMessage& message);
+
+    /**
+    Called back by the oracle when shit hits the fan
+    */
+    void HandleExceptionMessage(const OracleCommandExceptionMessage& message);
+
+    /**
+    The structure set that will be (cleared and) filled with data from the 
+    loader
+    */
+    DicomStructureSet2& structureSet_;
+
+    IOracle&            oracle_;
+    IObservable&        oracleObservable_;
+    bool                structuresReady_;
+  };
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Messages/LockingEmitter.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,40 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "LockingEmitter.h"
+
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  void LockingEmitter::EmitMessage(boost::weak_ptr<OrthancStone::IObserver> observer,
+                                   const OrthancStone::IMessage& message)
+  {
+    try
+    {
+      boost::unique_lock<boost::shared_mutex>  lock(mutex_);
+      oracleObservable_.EmitMessage(observer, message);
+    }
+    catch (Orthanc::OrthancException& e)
+    {
+      LOG(ERROR) << "Exception while emitting a message: " << e.What();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Messages/LockingEmitter.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,87 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include <Enumerations.h>
+#include <OrthancException.h>
+
+#include "../../Messages/IMessageEmitter.h"
+#include "../../Messages/IObservable.h"
+
+#include <boost/thread/shared_mutex.hpp>
+
+namespace Deprecated
+{
+  /**
+   * This class is used when using the ThreadedOracle : since messages
+   * can be sent from multiple Oracle threads, this IMessageEmitter
+   * implementation serializes the callbacks.
+   * 
+   * The internal mutex used in Oracle messaging can also be used to 
+   * protect the application data. Thus, this class can be used as a single
+   * application-wide mutex.
+   */
+  class LockingEmitter : public OrthancStone::IMessageEmitter
+  {
+  private:
+    boost::shared_mutex        mutex_;
+    OrthancStone::IObservable  oracleObservable_;
+
+  public:
+    virtual void EmitMessage(boost::weak_ptr<OrthancStone::IObserver> observer,
+                             const OrthancStone::IMessage& message) ORTHANC_OVERRIDE;
+
+
+    class ReaderLock : public boost::noncopyable
+    {
+    private:
+      LockingEmitter& that_;
+      boost::shared_lock<boost::shared_mutex>  lock_;
+
+    public:
+      ReaderLock(LockingEmitter& that) :
+        that_(that),
+        lock_(that.mutex_)
+      {
+      }
+    };
+
+
+    class WriterLock : public boost::noncopyable
+    {
+    private:
+      LockingEmitter& that_;
+      boost::unique_lock<boost::shared_mutex>  lock_;
+
+    public:
+      WriterLock(LockingEmitter& that) :
+        that_(that),
+        lock_(that.mutex_)
+      {
+      }
+
+      OrthancStone::IObservable& GetOracleObservable()
+      {
+        return that_.oracleObservable_;
+      }
+    };
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyAlphaLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,152 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyAlphaLayer.h"
+
+#include "RadiographyScene.h"
+#include "../Toolbox/ImageGeometry.h"
+
+#include <Compatibility.h>
+#include <Images/Image.h>
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+
+  void RadiographyAlphaLayer::SetAlpha(Orthanc::ImageAccessor* image)
+  {
+    std::unique_ptr<Orthanc::ImageAccessor> raii(image);
+
+    if (image == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    if (image->GetFormat() != Orthanc::PixelFormat_Grayscale8)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    SetSize(image->GetWidth(), image->GetHeight());
+
+#if __cplusplus < 201103L
+    alpha_.reset(raii.release());
+#else
+    alpha_ = std::move(raii);
+#endif
+
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+  void RadiographyAlphaLayer::Render(Orthanc::ImageAccessor& buffer,
+                                     const AffineTransform2D& viewTransform,
+                                     ImageInterpolation interpolation,
+                                     float windowCenter,
+                                     float windowWidth,
+                                     bool applyWindowing) const
+  {
+    if (alpha_.get() == NULL)
+    {
+      return;
+    }
+
+    if (buffer.GetFormat() != Orthanc::PixelFormat_Float32)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    unsigned int cropX, cropY, cropWidth, cropHeight;
+    GetCrop(cropX, cropY, cropWidth, cropHeight);
+
+    const AffineTransform2D t = AffineTransform2D::Combine(
+          viewTransform, GetTransform(),
+          AffineTransform2D::CreateOffset(cropX, cropY));
+
+    Orthanc::ImageAccessor cropped;
+    alpha_->GetRegion(cropped, cropX, cropY, cropWidth, cropHeight);
+
+    Orthanc::Image tmp(Orthanc::PixelFormat_Grayscale8, buffer.GetWidth(), buffer.GetHeight(), false);
+
+    unsigned int x1, y1, x2, y2;
+
+    if (!OrthancStone::GetProjectiveTransformExtent(x1, y1, x2, y2,
+                                                    t.GetHomogeneousMatrix(),
+                                                    cropped.GetWidth(),
+                                                    cropped.GetHeight(),
+                                                    buffer.GetWidth(),
+                                                    buffer.GetHeight()))
+    {
+      return;  // layer is outside the buffer
+    }
+
+    t.Apply(tmp, cropped, interpolation, true /* clear */);
+
+    float value = foreground_;
+
+    if (!applyWindowing) // if applying the windowing, it means we are ie rendering the image for a realtime visualization -> the foreground_ value is the value we want to see on the screen -> don't change it
+    {
+      // if not applying the windowing, it means ie that we are saving a dicom image to file and the windowing will be applied by a viewer later on -> we want the "foreground" value to be correct once the windowing will be applied
+      value = windowCenter - windowWidth/2 + (foreground_ / 65535.0f) * windowWidth;
+
+      if (value < 0.0f)
+      {
+        value = 0.0f;
+      }
+      if (value > 65535.0f)
+      {
+        value = 65535.0f;
+      }
+    }
+
+    for (unsigned int y = y1; y <= y2; y++)
+    {
+      float *q = reinterpret_cast<float*>(buffer.GetRow(y)) + x1;
+      const uint8_t *p = reinterpret_cast<uint8_t*>(tmp.GetRow(y)) + x1;
+
+      for (unsigned int x = x1; x <= x2; x++, p++, q++)
+      {
+        float a = static_cast<float>(*p) / 255.0f;
+
+        *q = (a * value + (1.0f - a) * (*q));
+      }
+    }
+  }
+
+  bool RadiographyAlphaLayer::GetRange(float& minValue,
+                                       float& maxValue) const
+  {
+    minValue = 0;
+    maxValue = 0;
+
+    if (foreground_ < 0)
+    {
+      minValue = foreground_;
+    }
+
+    if (foreground_ > 0)
+    {
+      maxValue = foreground_;
+    }
+
+    return true;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyAlphaLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,85 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "RadiographyLayer.h"
+
+#include <Compatibility.h>
+
+namespace OrthancStone
+{
+  class RadiographyScene;
+
+  // creates a transparent layer whose alpha channel is provided as a UINT8 image to SetAlpha.
+  // The color of the "mask" is either defined by a ForegroundValue or by the center value of the
+  // windowing from the scene.
+  class RadiographyAlphaLayer : public RadiographyLayer
+  {
+  private:
+    std::unique_ptr<Orthanc::ImageAccessor>  alpha_;       // Grayscale8 in the range [0, 255]  0 = transparent, 255 = opaque -> the foreground value will be displayed
+    float                                  foreground_;  // in the range [0.0, 65535.0]
+
+  public:
+    RadiographyAlphaLayer(const RadiographyScene& scene) :
+      RadiographyLayer(scene),
+      foreground_(0)
+    {
+    }
+
+
+    void SetForegroundValue(float foreground)
+    {
+      foreground_ = foreground;
+    }
+
+    float GetForegroundValue() const
+    {
+      return foreground_;
+    }
+
+    void SetAlpha(Orthanc::ImageAccessor* image);
+
+    virtual bool GetDefaultWindowing(float& center,
+                                     float& width) const
+    {
+      return false;
+    }
+
+
+    virtual void Render(Orthanc::ImageAccessor& buffer,
+                        const AffineTransform2D& viewTransform,
+                        ImageInterpolation interpolation,
+                        float windowCenter,
+                        float windowWidth,
+                        bool applyWindowing) const;
+
+    virtual bool GetRange(float& minValue,
+                          float& maxValue) const;
+
+    const Orthanc::ImageAccessor& GetAlpha() const
+    {
+      return *(alpha_.get());
+    }
+
+
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyDicomLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,264 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyDicomLayer.h"
+
+#include "RadiographyScene.h"
+#include "../Deprecated/Toolbox/DicomFrameConverter.h"
+#include "../Toolbox/ImageGeometry.h"
+
+#include <OrthancException.h>
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <DicomDatasetReader.h>
+
+static OrthancPlugins::DicomTag  ConvertTag(const Orthanc::DicomTag& tag)
+{
+  return OrthancPlugins::DicomTag(tag.GetGroup(), tag.GetElement());
+}
+
+namespace OrthancStone
+{
+
+  void RadiographyDicomLayer::ApplyConverter()
+  {
+    if (source_.get() != NULL &&
+        converter_.get() != NULL)
+    {
+      converted_.reset(converter_->ConvertFrame(*source_));
+    }
+  }
+
+
+  RadiographyDicomLayer::RadiographyDicomLayer(const RadiographyScene& scene) :
+    RadiographyLayer(scene)
+  {
+
+  }
+
+  void RadiographyDicomLayer::SetDicomTags(const OrthancPlugins::FullOrthancDataset& dataset)
+  {
+    converter_.reset(new Deprecated::DicomFrameConverter);
+    converter_->ReadParameters(dataset);
+    ApplyConverter();
+
+    std::string tmp;
+    Vector pixelSpacing;
+
+    if (dataset.GetStringValue(tmp, ConvertTag(Orthanc::DICOM_TAG_PIXEL_SPACING)) &&
+        LinearAlgebra::ParseVector(pixelSpacing, tmp) &&
+        pixelSpacing.size() == 2)
+    {
+      SetPixelSpacing(pixelSpacing[0], pixelSpacing[1]);
+    }
+
+    OrthancPlugins::DicomDatasetReader reader(dataset);
+
+    unsigned int width, height;
+    if (!reader.GetUnsignedIntegerValue(width, ConvertTag(Orthanc::DICOM_TAG_COLUMNS)) ||
+        !reader.GetUnsignedIntegerValue(height, ConvertTag(Orthanc::DICOM_TAG_ROWS)))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    else
+    {
+      SetSize(width, height);
+    }
+
+    if (dataset.GetStringValue(tmp, ConvertTag(Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION)))
+    {
+      if (tmp == "MONOCHROME1")
+      {
+        SetPreferredPhotomotricDisplayMode(RadiographyPhotometricDisplayMode_Monochrome1);
+      }
+      else if (tmp == "MONOCHROME2")
+      {
+        SetPreferredPhotomotricDisplayMode(RadiographyPhotometricDisplayMode_Monochrome2);
+      }
+    }
+  }
+
+  void RadiographyDicomLayer::SetSourceImage(Orthanc::ImageAccessor* image)   // Takes ownership
+  {
+    std::unique_ptr<Orthanc::ImageAccessor> raii(image);
+
+    if (image == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    SetSize(image->GetWidth(), image->GetHeight());
+
+#if __cplusplus < 201103L
+      source_.reset(raii.release());
+#else
+      source_ = std::move(raii);
+#endif
+
+    ApplyConverter();
+
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+  void RadiographyDicomLayer::SetSourceImage(Orthanc::ImageAccessor* image, double newPixelSpacingX, double newPixelSpacingY, bool emitLayerEditedEvent)   // Takes ownership
+  {
+    std::unique_ptr<Orthanc::ImageAccessor> raii(image);
+
+    if (image == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    SetSize(image->GetWidth(), image->GetHeight(), false);
+
+#if __cplusplus < 201103L
+    source_.reset(raii.release());
+#else
+    source_ = std::move(raii);
+#endif
+
+    ApplyConverter();
+
+    SetPixelSpacing(newPixelSpacingX, newPixelSpacingY, false);
+
+    if (emitLayerEditedEvent)
+    {
+      BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+    }
+  }
+
+
+  void RadiographyDicomLayer::SetDicomFrameConverter(Deprecated::DicomFrameConverter* converter)
+  {
+    converter_.reset(converter);
+  }
+
+  void RadiographyDicomLayer::Render(Orthanc::ImageAccessor& buffer,
+                                     const AffineTransform2D& viewTransform,
+                                     ImageInterpolation interpolation,
+                                     float windowCenter,
+                                     float windowWidth,
+                                     bool applyWindowing) const
+  {
+    if (converted_.get() != NULL)
+    {
+      if (converted_->GetFormat() != Orthanc::PixelFormat_Float32)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      unsigned int cropX, cropY, cropWidth, cropHeight;
+      GetCrop(cropX, cropY, cropWidth, cropHeight);
+
+      AffineTransform2D t = AffineTransform2D::Combine(
+            viewTransform, GetTransform(),
+            AffineTransform2D::CreateOffset(cropX, cropY));
+
+      Orthanc::ImageAccessor cropped;
+      converted_->GetRegion(cropped, cropX, cropY, cropWidth, cropHeight);
+
+      unsigned int x1, y1, x2, y2;
+      if (!OrthancStone::GetProjectiveTransformExtent(x1, y1, x2, y2,
+                                                      t.GetHomogeneousMatrix(),
+                                                      cropped.GetWidth(),
+                                                      cropped.GetHeight(),
+                                                      buffer.GetWidth(),
+                                                      buffer.GetHeight()))
+      {
+        return;  // layer is outside the buffer
+      }
+
+      t.Apply(buffer, cropped, interpolation, false);
+
+      if (applyWindowing)
+      {
+        // apply windowing but stay in the range [0.0, 65535.0]
+        float w0 = windowCenter - windowWidth / 2.0f;
+        float w1 = windowCenter + windowWidth / 2.0f;
+
+        if (windowWidth >= 0.001f)  // Avoid division by zero at (*)
+        {
+          float scaling = 1.0f / (w1 - w0) * 65535.0f;
+          for (unsigned int y = y1; y <= y2; y++)
+          {
+            float* p = reinterpret_cast<float*>(buffer.GetRow(y)) + x1;
+
+            for (unsigned int x = x1; x <= x2; x++, p++)
+            {
+              if (*p >= w1)
+              {
+                *p = 65535.0;
+              }
+              else if (*p <= w0)
+              {
+                *p = 0;
+              }
+              else
+              {
+                // https://en.wikipedia.org/wiki/Linear_interpolation
+                *p = scaling * (*p - w0);  // (*)
+              }
+            }
+          }
+        }
+      }
+
+    }
+  }
+
+
+  bool RadiographyDicomLayer::GetDefaultWindowing(float& center,
+                                                  float& width) const
+  {
+    if (converter_.get() != NULL &&
+        converter_->HasDefaultWindow())
+    {
+      center = static_cast<float>(converter_->GetDefaultWindowCenter());
+      width = static_cast<float>(converter_->GetDefaultWindowWidth());
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+  bool RadiographyDicomLayer::GetRange(float& minValue,
+                                       float& maxValue) const
+  {
+    if (converted_.get() != NULL)
+    {
+      if (converted_->GetFormat() != Orthanc::PixelFormat_Float32)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue, maxValue, *converted_);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyDicomLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,105 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Deprecated/Toolbox/DicomFrameConverter.h"
+#include "RadiographyLayer.h"
+
+#include <FullOrthancDataset.h>
+
+namespace OrthancStone
+{
+  class RadiographyScene;
+
+  class RadiographyDicomLayer : public RadiographyLayer
+  {
+  private:
+    std::unique_ptr<Orthanc::ImageAccessor>  source_;  // Content of PixelData
+    std::unique_ptr<Deprecated::DicomFrameConverter>     converter_;
+    std::unique_ptr<Orthanc::ImageAccessor>  converted_;  // Float32
+    std::string                            instanceId_;
+    unsigned int                           frame_;
+
+    void ApplyConverter();
+
+  public:
+    RadiographyDicomLayer(const RadiographyScene& scene);
+
+    void SetInstance(const std::string& instanceId, unsigned int frame)
+    {
+      instanceId_ = instanceId;
+      frame_ = frame;
+    }
+
+    std::string GetInstanceId() const
+    {
+      return instanceId_;
+    }
+
+    unsigned int GetFrame() const
+    {
+      return frame_;
+    }
+
+    virtual size_t GetApproximateMemoryUsage() const
+    {
+      size_t size = 0;
+      if (source_.get() != NULL)
+      {
+        size += source_->GetPitch() * source_->GetHeight();
+      }
+      if (converted_.get() != NULL)
+      {
+        size += converted_->GetPitch() * converted_->GetHeight();
+      }
+
+      return size;
+    }
+
+
+    void SetDicomTags(const OrthancPlugins::FullOrthancDataset& dataset);
+
+    void SetSourceImage(Orthanc::ImageAccessor* image);   // Takes ownership
+
+    void SetSourceImage(Orthanc::ImageAccessor* image, double newPixelSpacingX, double newPixelSpacingY, bool emitLayerEditedEvent = true);   // Takes ownership
+
+    const Orthanc::ImageAccessor* GetSourceImage() const {return source_.get();}  // currently need this access to serialize scene in plain old data to send to a WASM worker
+
+    const Deprecated::DicomFrameConverter& GetDicomFrameConverter() const {return *converter_;} // currently need this access to serialize scene in plain old data to send to a WASM worker
+    
+     // Takes ownership
+    void SetDicomFrameConverter(Deprecated::DicomFrameConverter* converter);
+
+    virtual void Render(Orthanc::ImageAccessor& buffer,
+                        const AffineTransform2D& viewTransform,
+                        ImageInterpolation interpolation,
+                        float windowCenter,
+                        float windowWidth,
+                        bool applyWindowing) const;
+
+    virtual bool GetDefaultWindowing(float& center,
+                                     float& width) const;
+
+    virtual bool GetRange(float& minValue,
+                          float& maxValue) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,402 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyLayer.h"
+
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+  static double Square(double x)
+  {
+    return x * x;
+  }
+
+
+  RadiographyLayer::Geometry::Geometry() :
+    hasCrop_(false),
+    flipVertical_(false),
+    flipHorizontal_(false),
+    panX_(0),
+    panY_(0),
+    angle_(0),
+    resizeable_(false),
+    pixelSpacingX_(1),
+    pixelSpacingY_(1)
+  {
+
+  }
+
+  void RadiographyLayer::Geometry::GetCrop(unsigned int &x, unsigned int &y, unsigned int &width, unsigned int &height) const
+  {
+    if (!hasCrop_)
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);  // you should probably use RadiographyLayer::GetCrop() or at least call HasCrop() before
+
+    x = cropX_;
+    y = cropY_;
+    width = cropWidth_;
+    height = cropHeight_;
+  }
+
+  void RadiographyLayer::UpdateTransform()
+  {
+    // important to update transform_ before getting the center to use the right scaling !!!
+    transform_ = AffineTransform2D::CreateScaling(geometry_.GetScalingX(), geometry_.GetScalingY());
+
+    double centerX, centerY;
+    GetCenter(centerX, centerY);
+
+    transform_ = AffineTransform2D::Combine(
+          AffineTransform2D::CreateOffset(geometry_.GetPanX(), geometry_.GetPanY()),
+          AffineTransform2D::CreateRotation(geometry_.GetAngle(), centerX, centerY),
+          transform_);
+
+    transformInverse_ = AffineTransform2D::Invert(transform_);
+  }
+
+
+  void RadiographyLayer::AddToExtent(Extent2D& extent,
+                                     double x,
+                                     double y) const
+  {
+    GetTransform().Apply(x, y);
+    extent.AddPoint(x, y);
+  }
+
+  bool RadiographyLayer::Contains(double x,
+                                  double y) const
+  {
+    GetTransformInverse().Apply(x, y);
+
+    unsigned int cropX, cropY, cropWidth, cropHeight;
+    GetCrop(cropX, cropY, cropWidth, cropHeight);
+
+    return (x >= cropX && x <= cropX + cropWidth &&
+            y >= cropY && y <= cropY + cropHeight);
+  }
+
+
+  void RadiographyLayer::DrawBorders(CairoContext& context,
+                                     double zoom)
+  {
+    if (GetControlPointCount() < 3 )
+      return;
+
+    cairo_t* cr = context.GetObject();
+    cairo_set_line_width(cr, 2.0 / zoom);
+
+    ControlPoint cp;
+    GetControlPoint(cp, 0);
+    cairo_move_to(cr, cp.x, cp.y);
+
+    for (size_t i = 0; i < GetControlPointCount(); i++)
+    {
+      GetControlPoint(cp, i);
+      cairo_line_to(cr, cp.x, cp.y);
+    }
+
+    cairo_close_path(cr);
+    cairo_stroke(cr);
+  }
+
+
+  RadiographyLayer::RadiographyLayer(const RadiographyScene& scene) :
+    index_(0),
+    hasSize_(false),
+    width_(0),
+    height_(0),
+    prefferedPhotometricDisplayMode_(RadiographyPhotometricDisplayMode_Default),
+    scene_(scene)
+  {
+    UpdateTransform();
+  }
+
+  void RadiographyLayer::ResetCrop()
+  {
+    geometry_.ResetCrop();
+    UpdateTransform();
+  }
+
+  void RadiographyLayer::SetPreferredPhotomotricDisplayMode(RadiographyPhotometricDisplayMode  prefferedPhotometricDisplayMode)
+  {
+    prefferedPhotometricDisplayMode_ = prefferedPhotometricDisplayMode;
+
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+  void RadiographyLayer::SetCrop(unsigned int x,
+                                 unsigned int y,
+                                 unsigned int width,
+                                 unsigned int height)
+  {
+    if (!hasSize_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    if (x + width > width_ ||
+        y + height > height_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    geometry_.SetCrop(x, y, width, height);
+    UpdateTransform();
+
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+  void RadiographyLayer::SetGeometry(const Geometry& geometry)
+  {
+    geometry_ = geometry;
+
+    if (hasSize_)
+    {
+      UpdateTransform();
+    }
+
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+
+  void RadiographyLayer::GetCrop(unsigned int& x,
+                                 unsigned int& y,
+                                 unsigned int& width,
+                                 unsigned int& height) const
+  {
+    if (GetGeometry().HasCrop())
+    {
+      GetGeometry().GetCrop(x, y, width, height);
+    }
+    else
+    {
+      x = 0;
+      y = 0;
+      width = width_;
+      height = height_;
+    }
+  }
+
+  
+  void RadiographyLayer::SetAngle(double angle)
+  {
+    geometry_.SetAngle(angle);
+    UpdateTransform();
+
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+  void RadiographyLayer::SetFlipVertical(bool flip)
+  {
+    geometry_.SetFlipVertical(flip);
+    UpdateTransform();
+
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+  void RadiographyLayer::SetFlipHorizontal(bool flip)
+  {
+    geometry_.SetFlipHorizontal(flip);
+    UpdateTransform();
+
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+  void RadiographyLayer::SetSize(unsigned int width,
+                                 unsigned int height,
+                                 bool emitLayerEditedEvent)
+  {
+    hasSize_ = true;
+    width_ = width;
+    height_ = height;
+
+    UpdateTransform();
+
+    if (emitLayerEditedEvent)
+    {
+      BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+    }
+  }
+
+  Extent2D RadiographyLayer::GetSceneExtent(bool /*minimal*/) const
+  {
+    Extent2D extent;
+
+    unsigned int x, y, width, height;
+    GetCrop(x, y, width, height);
+
+    double dx = static_cast<double>(x);
+    double dy = static_cast<double>(y);
+    double dwidth = static_cast<double>(width);
+    double dheight = static_cast<double>(height);
+
+    // AddToExtent transforms the coordinates from image to scene
+    AddToExtent(extent, dx, dy);
+    AddToExtent(extent, dx + dwidth, dy);
+    AddToExtent(extent, dx, dy + dheight);
+    AddToExtent(extent, dx + dwidth, dy + dheight);
+
+    return extent;
+  }
+
+
+  bool RadiographyLayer::GetPixel(unsigned int& imageX,
+                                  unsigned int& imageY,
+                                  double sceneX,
+                                  double sceneY) const
+  {
+    if (width_ == 0 ||
+        height_ == 0)
+    {
+      return false;
+    }
+    else
+    {
+      GetTransformInverse().Apply(sceneX, sceneY);
+
+      int x = static_cast<int>(std::floor(sceneX));
+      int y = static_cast<int>(std::floor(sceneY));
+
+      if (x < 0)
+      {
+        imageX = 0;
+      }
+      else if (x >= static_cast<int>(width_))
+      {
+        imageX = width_;
+      }
+      else
+      {
+        imageX = static_cast<unsigned int>(x);
+      }
+
+      if (y < 0)
+      {
+        imageY = 0;
+      }
+      else if (y >= static_cast<int>(height_))
+      {
+        imageY = height_;
+      }
+      else
+      {
+        imageY = static_cast<unsigned int>(y);
+      }
+
+      return true;
+    }
+  }
+
+
+  void RadiographyLayer::SetPan(double x,
+                                double y)
+  {
+    geometry_.SetPan(x, y);
+    UpdateTransform();
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+
+  void RadiographyLayer::SetPixelSpacing(double x,
+                                         double y,
+                                         bool emitLayerEditedEvent)
+  {
+    geometry_.SetPixelSpacing(x, y);
+    UpdateTransform();
+    if (emitLayerEditedEvent)
+    {
+      BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+    }
+  }
+
+
+  void RadiographyLayer::GetCenter(double& centerX,
+                                   double& centerY) const
+  {
+    centerX = static_cast<double>(width_) / 2.0;
+    centerY = static_cast<double>(height_) / 2.0;
+    GetTransform().Apply(centerX, centerY);
+  }
+
+
+
+  size_t RadiographyLayer::GetControlPointCount() const {return 4;}
+
+  void RadiographyLayer::GetControlPoint(ControlPoint& cpScene /* out in scene coordinates */,
+                                         size_t index) const
+  {
+    unsigned int cropX, cropY, cropWidth, cropHeight;
+    GetCrop(cropX, cropY, cropWidth, cropHeight);
+
+    ControlPoint cp;
+    switch (index)
+    {
+      case RadiographyControlPointType_TopLeftCorner:
+        cp = ControlPoint(cropX, cropY, RadiographyControlPointType_TopLeftCorner);
+        break;
+
+      case RadiographyControlPointType_TopRightCorner:
+        cp = ControlPoint(cropX + cropWidth, cropY, RadiographyControlPointType_TopRightCorner);
+        break;
+
+      case RadiographyControlPointType_BottomLeftCorner:
+        cp = ControlPoint(cropX, cropY + cropHeight, RadiographyControlPointType_BottomLeftCorner);
+        break;
+
+      case RadiographyControlPointType_BottomRightCorner:
+        cp = ControlPoint(cropX + cropWidth, cropY + cropHeight, RadiographyControlPointType_BottomRightCorner);
+        break;
+
+    default:
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    // transforms image coordinates into scene coordinates
+    GetTransform().Apply(cp.x, cp.y);
+    cpScene = cp;
+  }
+
+  bool RadiographyLayer::LookupControlPoint(ControlPoint& cpScene /* out */,
+                                            double x,
+                                            double y,
+                                            double zoom,
+                                            double viewportDistance) const
+  {
+    double threshold = Square(viewportDistance / zoom);
+
+    for (size_t i = 0; i < GetControlPointCount(); i++)
+    {
+      ControlPoint cp;
+      GetControlPoint(cp, i);
+
+      double d = Square(cp.x - x) + Square(cp.y - y);
+
+      if (d <= threshold)
+      {
+        cpScene = cp;
+        return true;
+      }
+    }
+
+    return false;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,395 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <algorithm>
+
+#include "../Toolbox/AffineTransform2D.h"
+#include "../Toolbox/Extent2D.h"
+#include "../Wrappers/CairoContext.h"
+#include "../Messages/IMessage.h"
+#include "../Messages/IObservable.h"
+
+namespace OrthancStone
+{
+  class RadiographyScene;
+
+  enum RadiographyControlPointType
+  {
+    RadiographyControlPointType_TopLeftCorner = 0,
+    RadiographyControlPointType_TopRightCorner = 1,
+    RadiographyControlPointType_BottomRightCorner = 2,
+    RadiographyControlPointType_BottomLeftCorner = 3
+  };
+
+  enum RadiographyPhotometricDisplayMode
+  {
+    RadiographyPhotometricDisplayMode_Default,
+
+    RadiographyPhotometricDisplayMode_Monochrome1,
+    RadiographyPhotometricDisplayMode_Monochrome2
+  };
+
+  
+  struct ControlPoint
+  {
+    double x;
+    double y;
+    size_t index;
+
+    ControlPoint(double x, double y, size_t index)
+      : x(x),
+        y(y),
+        index(index)
+    {}
+
+    ControlPoint()
+      : x(0),
+        y(0),
+        index(std::numeric_limits<size_t>::max())
+    {}
+  };
+
+  class RadiographyLayer : public IObservable
+  {
+    friend class RadiographyScene;
+
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, LayerEditedMessage, RadiographyLayer);
+
+    class Geometry
+    {
+      bool               hasCrop_;
+      unsigned int       cropX_;
+      unsigned int       cropY_;
+      unsigned int       cropWidth_;
+      unsigned int       cropHeight_;
+      bool               flipVertical_;
+      bool               flipHorizontal_;
+      double             panX_;
+      double             panY_;
+      double             angle_;
+      bool               resizeable_;
+      double             pixelSpacingX_;
+      double             pixelSpacingY_;
+
+    public:
+      Geometry();
+
+      void ResetCrop()
+      {
+        hasCrop_ = false;
+      }
+
+      void SetCrop(unsigned int x,
+                   unsigned int y,
+                   unsigned int width,
+                   unsigned int height)
+      {
+        hasCrop_ = true;
+        cropX_ = x;
+        cropY_ = y;
+        cropWidth_ = width;
+        cropHeight_ = height;
+      }
+
+      bool HasCrop() const
+      {
+        return hasCrop_;
+      }
+
+      void GetCrop(unsigned int& x,
+                   unsigned int& y,
+                   unsigned int& width,
+                   unsigned int& height) const;
+
+      void SetAngle(double angle)
+      {
+        angle_ = angle;
+      }
+
+      double GetAngle() const
+      {
+        return angle_;
+      }
+
+      void SetPan(double x,
+                  double y)
+      {
+        panX_ = x;
+        panY_ = y;
+      }
+
+      double GetPanX() const
+      {
+        return panX_;
+      }
+
+      double GetPanY() const
+      {
+        return panY_;
+      }
+
+      bool IsResizeable() const
+      {
+        return resizeable_;
+      }
+
+      void SetResizeable(bool resizeable)
+      {
+        resizeable_ = resizeable;
+      }
+
+      void SetPixelSpacing(double x,
+                           double y)
+      {
+        pixelSpacingX_ = x;
+        pixelSpacingY_ = y;
+      }
+
+      double GetPixelSpacingX() const
+      {
+        return pixelSpacingX_;
+      }
+
+      double GetPixelSpacingY() const
+      {
+        return pixelSpacingY_;
+      }
+
+      void SetFlipVertical(bool flip) //  mirrors image around an horizontal axis (note: flip is applied before the rotation !)
+      {
+        flipVertical_ = flip;
+      }
+
+      void SetFlipHorizontal(bool flip) //  mirrors image around a vertical axis (note: flip is applied before the rotation !)
+      {
+        flipHorizontal_ = flip;
+      }
+
+      bool GetFlipVertical() const
+      {
+        return flipVertical_;
+      }
+
+      bool GetFlipHorizontal() const
+      {
+        return flipHorizontal_;
+      }
+
+      double GetScalingX() const
+      {
+        return (flipHorizontal_ ? - pixelSpacingX_: pixelSpacingX_);
+      }
+
+      double GetScalingY() const
+      {
+        return (flipVertical_ ? - pixelSpacingY_: pixelSpacingY_);
+      }
+    };
+
+  private:
+    size_t             index_;
+    bool               hasSize_;
+    unsigned int       width_;
+    unsigned int       height_;
+    AffineTransform2D  transform_;
+    AffineTransform2D  transformInverse_;
+    Geometry           geometry_;
+    RadiographyPhotometricDisplayMode  prefferedPhotometricDisplayMode_;
+    const RadiographyScene&   scene_;
+
+  protected:
+    void SetPreferredPhotomotricDisplayMode(RadiographyPhotometricDisplayMode  prefferedPhotometricDisplayMode);
+
+  private:
+    void UpdateTransform();
+
+    void AddToExtent(Extent2D& extent,
+                     double x,
+                     double y) const;
+
+    void SetIndex(size_t index)
+    {
+      index_ = index;
+    }
+
+    bool Contains(double x,
+                  double y) const;
+
+    void DrawBorders(CairoContext& context,
+                     double zoom);
+
+  public:
+    RadiographyLayer(const RadiographyScene& scene);
+
+    virtual ~RadiographyLayer()
+    {
+    }
+
+    virtual const AffineTransform2D& GetTransform() const
+    {
+      return transform_;
+    }
+
+    virtual const AffineTransform2D& GetTransformInverse() const
+    {
+      return transformInverse_;
+    }
+
+    size_t GetIndex() const
+    {
+      return index_;
+    }
+
+    const RadiographyScene& GetScene() const
+    {
+      return scene_;
+    }
+
+    const Geometry& GetGeometry() const
+    {
+      return geometry_;
+    }
+
+    void SetGeometry(const Geometry& geometry);
+
+    void ResetCrop();
+
+    void SetCrop(unsigned int x,       // those are pixel coordinates/size
+                 unsigned int y,
+                 unsigned int width,
+                 unsigned int height);
+
+    void SetCrop(const Extent2D& sceneExtent)
+    {
+      Extent2D imageCrop;
+
+      {
+        double x = sceneExtent.GetX1();
+        double y = sceneExtent.GetY1();
+        GetTransformInverse().Apply(x, y);
+        imageCrop.AddPoint(x, y);
+      }
+
+      {
+        double x = sceneExtent.GetX2();
+        double y = sceneExtent.GetY2();
+        GetTransformInverse().Apply(x, y);
+        imageCrop.AddPoint(x, y);
+      }
+
+      SetCrop(static_cast<unsigned int>(std::max(0.0, std::floor(imageCrop.GetX1()))),
+              static_cast<unsigned int>(std::max(0.0, std::floor(imageCrop.GetY1()))),
+              std::min(width_, static_cast<unsigned int>(std::ceil(imageCrop.GetWidth()))),
+              std::min(height_, static_cast<unsigned int>(std::ceil(imageCrop.GetHeight())))
+              );
+    }
+
+
+    void GetCrop(unsigned int& x,
+                 unsigned int& y,
+                 unsigned int& width,
+                 unsigned int& height) const;
+
+    void SetAngle(double angle);
+
+    void SetPan(double x,
+                double y);
+
+    void SetFlipVertical(bool flip); //  mirrors image around an horizontal axis (note: flip is applied before the rotation !)
+
+    void SetFlipHorizontal(bool flip); //  mirrors image around a vertical axis (note: flip is applied before the rotation !)
+
+    void SetResizeable(bool resizeable)
+    {
+      geometry_.SetResizeable(resizeable);
+    }
+
+    void SetSize(unsigned int width,
+                 unsigned int height,
+                 bool emitLayerEditedEvent = true);
+
+    bool HasSize() const
+    {
+      return hasSize_;
+    }
+
+    unsigned int GetWidth() const
+    {
+      return width_;
+    }
+
+    unsigned int GetHeight() const
+    {
+      return height_;
+    }
+
+    virtual Extent2D GetSceneExtent(bool minimal) const;
+
+    virtual bool GetPixel(unsigned int& imageX,
+                          unsigned int& imageY,
+                          double sceneX,
+                          double sceneY) const;
+
+    void SetPixelSpacing(double x,
+                         double y,
+                         bool emitLayerEditedEvent = true);
+
+    void GetCenter(double& centerX,
+                   double& centerY) const;
+
+    virtual void GetControlPoint(ControlPoint& cpScene /* out in scene coordinates */,
+                                 size_t index) const;
+
+    virtual size_t GetControlPointCount() const;
+
+    bool LookupControlPoint(ControlPoint& cpScene /* out */,
+                            double x,
+                            double y,
+                            double zoom,
+                            double viewportDistance) const;
+
+    virtual bool GetDefaultWindowing(float& center,
+                                     float& width) const = 0;
+
+    RadiographyPhotometricDisplayMode GetPreferredPhotomotricDisplayMode() const
+    {
+      return prefferedPhotometricDisplayMode_;
+    }
+
+    virtual void Render(Orthanc::ImageAccessor& buffer,
+                        const AffineTransform2D& viewTransform,
+                        ImageInterpolation interpolation,
+                        float windowCenter,
+                        float windowWidth,
+                        bool applyWindowing) const = 0;
+
+    virtual bool GetRange(float& minValue,
+                          float& maxValue) const = 0;
+
+    virtual size_t GetApproximateMemoryUsage() const // this is used to limit the number of scenes loaded in RAM when resources are limited (we actually only count the size used by the images, not the C structs)
+    {
+      return 0;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerCropTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,145 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyLayerCropTracker.h"
+
+#include "RadiographySceneCommand.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  class RadiographyLayerCropTracker::UndoRedoCommand : public RadiographySceneCommand
+  {
+  private:
+    unsigned int  sourceCropX_;
+    unsigned int  sourceCropY_;
+    unsigned int  sourceCropWidth_;
+    unsigned int  sourceCropHeight_;
+    unsigned int  targetCropX_;
+    unsigned int  targetCropY_;
+    unsigned int  targetCropWidth_;
+    unsigned int  targetCropHeight_;
+
+  protected:
+    virtual void UndoInternal(RadiographyLayer& layer) const
+    {
+      layer.SetCrop(sourceCropX_, sourceCropY_, sourceCropWidth_, sourceCropHeight_);
+    }
+
+    virtual void RedoInternal(RadiographyLayer& layer) const
+    {
+      layer.SetCrop(targetCropX_, targetCropY_, targetCropWidth_, targetCropHeight_);
+    }
+
+  public:
+    UndoRedoCommand(const RadiographyLayerCropTracker& tracker) :
+      RadiographySceneCommand(tracker.accessor_),
+      sourceCropX_(tracker.cropX_),
+      sourceCropY_(tracker.cropY_),
+      sourceCropWidth_(tracker.cropWidth_),
+      sourceCropHeight_(tracker.cropHeight_)
+    {
+      tracker.accessor_.GetLayer().GetCrop(targetCropX_, targetCropY_,
+                                           targetCropWidth_, targetCropHeight_);
+    }
+  };
+
+
+  RadiographyLayerCropTracker::RadiographyLayerCropTracker(UndoRedoStack& undoRedoStack,
+                                                           RadiographyScene& scene,
+                                                           const Deprecated::ViewportGeometry& view,
+                                                           size_t layer,
+                                                           const ControlPoint& startControlPoint) :
+    undoRedoStack_(undoRedoStack),
+    accessor_(scene, layer),
+    startControlPoint_(startControlPoint)
+  {
+    if (accessor_.IsValid())
+    {
+      accessor_.GetLayer().GetCrop(cropX_, cropY_, cropWidth_, cropHeight_);
+    }
+  }
+
+
+  void RadiographyLayerCropTracker::Render(CairoContext& context,
+                                           double zoom)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+
+
+  void RadiographyLayerCropTracker::MouseUp()
+  {
+    if (accessor_.IsValid())
+    {
+      undoRedoStack_.Add(new UndoRedoCommand(*this));
+    }
+  }
+
+  
+  void RadiographyLayerCropTracker::MouseMove(int displayX,
+                                              int displayY,
+                                              double sceneX,
+                                              double sceneY,
+                                              const std::vector<Deprecated::Touch>& displayTouches,
+                                              const std::vector<Deprecated::Touch>& sceneTouches)
+  {
+    if (accessor_.IsValid())
+    {
+      unsigned int x, y;
+        
+      RadiographyLayer& layer = accessor_.GetLayer();
+      if (layer.GetPixel(x, y, sceneX, sceneY))
+      {
+        unsigned int targetX, targetWidth;
+
+        if (startControlPoint_.index == RadiographyControlPointType_TopLeftCorner ||
+            startControlPoint_.index == RadiographyControlPointType_BottomLeftCorner)
+        {
+          targetX = std::min(x, cropX_ + cropWidth_);
+          targetWidth = cropX_ + cropWidth_ - targetX;
+        }
+        else
+        {
+          targetX = cropX_;
+          targetWidth = std::max(x, cropX_) - cropX_;
+        }
+
+        unsigned int targetY, targetHeight;
+
+        if (startControlPoint_.index == RadiographyControlPointType_TopLeftCorner ||
+            startControlPoint_.index == RadiographyControlPointType_TopRightCorner)
+        {
+          targetY = std::min(y, cropY_ + cropHeight_);
+          targetHeight = cropY_ + cropHeight_ - targetY;
+        }
+        else
+        {
+          targetY = cropY_;
+          targetHeight = std::max(y, cropY_) - cropY_;
+        }
+
+        layer.SetCrop(targetX, targetY, targetWidth, targetHeight);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerCropTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,68 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/UndoRedoStack.h"
+#include "../Deprecated/Toolbox/ViewportGeometry.h"
+#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
+#include "RadiographyScene.h"
+
+namespace OrthancStone
+{
+  class RadiographyLayerCropTracker : public Deprecated::IWorldSceneMouseTracker
+  {
+  private:
+    class UndoRedoCommand;
+
+    UndoRedoStack&                   undoRedoStack_;
+    RadiographyScene::LayerAccessor  accessor_;
+    ControlPoint                     startControlPoint_;
+    unsigned int                     cropX_;
+    unsigned int                     cropY_;
+    unsigned int                     cropWidth_;
+    unsigned int                     cropHeight_;
+
+  public:
+    RadiographyLayerCropTracker(UndoRedoStack& undoRedoStack,
+                                RadiographyScene& scene,
+                                const Deprecated::ViewportGeometry& view,
+                                size_t layer,
+                                const ControlPoint& startControlPoint);
+
+    virtual bool HasRender() const
+    {
+      return false;
+    }
+
+    virtual void Render(CairoContext& context,
+                        double zoom);
+
+    virtual void MouseUp();
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double sceneX,
+                           double sceneY,
+                           const std::vector<Deprecated::Touch>& displayTouches,
+                           const std::vector<Deprecated::Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerMaskTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,140 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyLayerMaskTracker.h"
+#include "RadiographyMaskLayer.h"
+
+#include "RadiographySceneCommand.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  class RadiographyLayerMaskTracker::UndoRedoCommand : public RadiographySceneCommand
+  {
+  private:
+    ControlPoint sourceSceneCp_;
+    ControlPoint targetSceneCp_;
+
+  protected:
+    virtual void UndoInternal(RadiographyLayer& layer) const
+    {
+      RadiographyMaskLayer* maskLayer = dynamic_cast<RadiographyMaskLayer*>(&layer);
+      if (maskLayer == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+      unsigned int ix, iy; // image coordinates
+      if (maskLayer->GetPixel(ix, iy, sourceSceneCp_.x, sourceSceneCp_.y))
+      {
+        maskLayer->SetCorner(Orthanc::ImageProcessing::ImagePoint((int32_t)ix, (int32_t)iy), sourceSceneCp_.index);
+      }
+    }
+
+    virtual void RedoInternal(RadiographyLayer& layer) const
+    {
+      RadiographyMaskLayer* maskLayer = dynamic_cast<RadiographyMaskLayer*>(&layer);
+      if (maskLayer == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+      unsigned int ix, iy; // image coordinates
+      if (maskLayer->GetPixel(ix, iy, targetSceneCp_.x, targetSceneCp_.y))
+      {
+        maskLayer->SetCorner(Orthanc::ImageProcessing::ImagePoint((int32_t)ix, (int32_t)iy), targetSceneCp_.index);
+      }
+    }
+
+  public:
+    UndoRedoCommand(const RadiographyLayerMaskTracker& tracker) :
+      RadiographySceneCommand(tracker.accessor_),
+      sourceSceneCp_(tracker.startSceneCp_),
+      targetSceneCp_(tracker.endSceneCp_)
+    {
+      RadiographyMaskLayer* maskLayer = dynamic_cast<RadiographyMaskLayer*>(&(tracker.accessor_.GetLayer()));
+      if (maskLayer == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+      unsigned int ix, iy; // image coordinates
+      if (maskLayer->GetPixel(ix, iy, targetSceneCp_.x, targetSceneCp_.y))
+      {
+        maskLayer->SetCorner(Orthanc::ImageProcessing::ImagePoint((int32_t)ix, (int32_t)iy), targetSceneCp_.index);
+      }
+    }
+  };
+
+
+  RadiographyLayerMaskTracker::RadiographyLayerMaskTracker(UndoRedoStack& undoRedoStack,
+                                                           RadiographyScene& scene,
+                                                           const Deprecated::ViewportGeometry& view,
+                                                           size_t layer,
+                                                           const ControlPoint& startSceneControlPoint) :
+    undoRedoStack_(undoRedoStack),
+    accessor_(scene, layer),
+    startSceneCp_(startSceneControlPoint),
+    endSceneCp_(startSceneControlPoint)
+  {
+  }
+
+
+  void RadiographyLayerMaskTracker::Render(CairoContext& context,
+                                           double zoom)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+
+
+  void RadiographyLayerMaskTracker::MouseUp()
+  {
+    if (accessor_.IsValid() && startSceneCp_.x != endSceneCp_.x && startSceneCp_.y != endSceneCp_.y)
+    {
+      undoRedoStack_.Add(new UndoRedoCommand(*this));
+    }
+  }
+
+  
+  void RadiographyLayerMaskTracker::MouseMove(int displayX,
+                                              int displayY,
+                                              double sceneX,
+                                              double sceneY,
+                                              const std::vector<Deprecated::Touch>& displayTouches,
+                                              const std::vector<Deprecated::Touch>& sceneTouches)
+  {
+    if (accessor_.IsValid())
+    {
+      unsigned int ix, iy; // image coordinates
+
+      RadiographyLayer& layer = accessor_.GetLayer();
+      if (layer.GetPixel(ix, iy, sceneX, sceneY))
+      {
+        endSceneCp_ = ControlPoint(sceneX, sceneY, startSceneCp_.index);
+
+        RadiographyMaskLayer* maskLayer = dynamic_cast<RadiographyMaskLayer*>(&layer);
+        if (maskLayer == NULL)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+        }
+        maskLayer->SetCorner(Orthanc::ImageProcessing::ImagePoint((int32_t)ix, (int32_t)iy), startSceneCp_.index);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerMaskTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,65 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/UndoRedoStack.h"
+#include "../Deprecated/Toolbox/ViewportGeometry.h"
+#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
+#include "RadiographyScene.h"
+
+namespace OrthancStone
+{
+  class RadiographyLayerMaskTracker : public Deprecated::IWorldSceneMouseTracker
+  {
+  private:
+    class UndoRedoCommand;
+
+    UndoRedoStack&                   undoRedoStack_;
+    RadiographyScene::LayerAccessor  accessor_;
+    ControlPoint                     startSceneCp_;
+    ControlPoint                     endSceneCp_;
+
+  public:
+    RadiographyLayerMaskTracker(UndoRedoStack& undoRedoStack,
+                                RadiographyScene& scene,
+                                const Deprecated::ViewportGeometry& view,
+                                size_t layer,
+                                const ControlPoint& startSceneControlPoint);
+
+    virtual bool HasRender() const
+    {
+      return false;
+    }
+
+    virtual void Render(CairoContext& context,
+                        double zoom);
+
+    virtual void MouseUp();
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double sceneX,
+                           double sceneY,
+                           const std::vector<Deprecated::Touch>& displayTouches,
+                           const std::vector<Deprecated::Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerMoveTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,126 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyLayerMoveTracker.h"
+
+#include "RadiographySceneCommand.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  class RadiographyLayerMoveTracker::UndoRedoCommand : public RadiographySceneCommand
+  {
+  private:
+    double  sourceX_;
+    double  sourceY_;
+    double  targetX_;
+    double  targetY_;
+
+  protected:
+    virtual void UndoInternal(RadiographyLayer& layer) const
+    {
+      layer.SetPan(sourceX_, sourceY_);
+    }
+
+    virtual void RedoInternal(RadiographyLayer& layer) const
+    {
+      layer.SetPan(targetX_, targetY_);
+    }
+
+  public:
+    UndoRedoCommand(const RadiographyLayerMoveTracker& tracker) :
+      RadiographySceneCommand(tracker.accessor_),
+      sourceX_(tracker.panX_),
+      sourceY_(tracker.panY_),
+      targetX_(tracker.accessor_.GetLayer().GetGeometry().GetPanX()),
+      targetY_(tracker.accessor_.GetLayer().GetGeometry().GetPanY())
+    {
+    }
+  };
+
+
+  RadiographyLayerMoveTracker::RadiographyLayerMoveTracker(UndoRedoStack& undoRedoStack,
+                                                           RadiographyScene& scene,
+                                                           size_t layer,
+                                                           double x,
+                                                           double y,
+                                                           bool oneAxis) :
+    undoRedoStack_(undoRedoStack),
+    accessor_(scene, layer),
+    clickX_(x),
+    clickY_(y),
+    oneAxis_(oneAxis)
+  {
+    if (accessor_.IsValid())
+    {
+      panX_ = accessor_.GetLayer().GetGeometry().GetPanX();
+      panY_ = accessor_.GetLayer().GetGeometry().GetPanY();
+    }
+  }
+
+
+  void RadiographyLayerMoveTracker::Render(CairoContext& context,
+                                           double zoom)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+
+  
+  void RadiographyLayerMoveTracker::MouseUp()
+  {
+    if (accessor_.IsValid())
+    {
+      undoRedoStack_.Add(new UndoRedoCommand(*this));
+    }
+  }
+
+  
+  void RadiographyLayerMoveTracker::MouseMove(int displayX,
+                                              int displayY,
+                                              double sceneX,
+                                              double sceneY,
+                                              const std::vector<Deprecated::Touch>& displayTouches,
+                                              const std::vector<Deprecated::Touch>& sceneTouches)
+  {
+    if (accessor_.IsValid())
+    {
+      double dx = sceneX - clickX_;
+      double dy = sceneY - clickY_;
+
+      if (oneAxis_)
+      {
+        if (fabs(dx) > fabs(dy))
+        {
+          accessor_.GetLayer().SetPan(dx + panX_, panY_);
+        }
+        else
+        {
+          accessor_.GetLayer().SetPan(panX_, dy + panY_);
+        }
+      }
+      else
+      {
+        accessor_.GetLayer().SetPan(dx + panX_, dy + panY_);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerMoveTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,68 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/UndoRedoStack.h"
+#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
+#include "RadiographyScene.h"
+
+namespace OrthancStone
+{
+  class RadiographyLayerMoveTracker : public Deprecated::IWorldSceneMouseTracker
+  {
+  private:
+    class UndoRedoCommand;
+    
+    UndoRedoStack&                   undoRedoStack_;
+    RadiographyScene::LayerAccessor  accessor_;
+    double                           clickX_;
+    double                           clickY_;
+    double                           panX_;
+    double                           panY_;
+    bool                             oneAxis_;
+
+  public:
+    RadiographyLayerMoveTracker(UndoRedoStack& undoRedoStack,
+                                RadiographyScene& scene,
+                                size_t layer,
+                                double x,
+                                double y,
+                                bool oneAxis);
+
+    virtual bool HasRender() const
+    {
+      return false;
+    }
+
+    virtual void Render(CairoContext& context,
+                        double zoom);
+
+    virtual void MouseUp();
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double sceneX,
+                           double sceneY,
+                           const std::vector<Deprecated::Touch>& displayTouches,
+                           const std::vector<Deprecated::Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerResizeTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,188 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyLayerResizeTracker.h"
+
+#include "RadiographySceneCommand.h"
+
+#include <OrthancException.h>
+
+#include <boost/math/special_functions/round.hpp>
+
+
+namespace OrthancStone
+{
+  static double ComputeDistance(double x1,
+                                double y1,
+                                double x2,
+                                double y2)
+  {
+    double dx = x1 - x2;
+    double dy = y1 - y2;
+    return sqrt(dx * dx + dy * dy);
+  }
+      
+
+  class RadiographyLayerResizeTracker::UndoRedoCommand : public RadiographySceneCommand
+  {
+  private:
+    double   sourceSpacingX_;
+    double   sourceSpacingY_;
+    double   sourcePanX_;
+    double   sourcePanY_;
+    double   targetSpacingX_;
+    double   targetSpacingY_;
+    double   targetPanX_;
+    double   targetPanY_;
+
+  protected:
+    virtual void UndoInternal(RadiographyLayer& layer) const
+    {
+      layer.SetPixelSpacing(sourceSpacingX_, sourceSpacingY_);
+      layer.SetPan(sourcePanX_, sourcePanY_);
+    }
+
+    virtual void RedoInternal(RadiographyLayer& layer) const
+    {
+      layer.SetPixelSpacing(targetSpacingX_, targetSpacingY_);
+      layer.SetPan(targetPanX_, targetPanY_);
+    }
+
+  public:
+    UndoRedoCommand(const RadiographyLayerResizeTracker& tracker) :
+      RadiographySceneCommand(tracker.accessor_),
+      sourceSpacingX_(tracker.originalSpacingX_),
+      sourceSpacingY_(tracker.originalSpacingY_),
+      sourcePanX_(tracker.originalPanX_),
+      sourcePanY_(tracker.originalPanY_),
+      targetSpacingX_(tracker.accessor_.GetLayer().GetGeometry().GetPixelSpacingX()),
+      targetSpacingY_(tracker.accessor_.GetLayer().GetGeometry().GetPixelSpacingY()),
+      targetPanX_(tracker.accessor_.GetLayer().GetGeometry().GetPanX()),
+      targetPanY_(tracker.accessor_.GetLayer().GetGeometry().GetPanY())
+    {
+    }
+  };
+
+
+  RadiographyLayerResizeTracker::RadiographyLayerResizeTracker(UndoRedoStack& undoRedoStack,
+                                                               RadiographyScene& scene,
+                                                               size_t layer,
+                                                               const ControlPoint& startControlPoint,
+                                                               bool roundScaling) :
+    undoRedoStack_(undoRedoStack),
+    accessor_(scene, layer),
+    roundScaling_(roundScaling)
+  {
+    if (accessor_.IsValid() &&
+        accessor_.GetLayer().GetGeometry().IsResizeable())
+    {
+      originalSpacingX_ = accessor_.GetLayer().GetGeometry().GetPixelSpacingX();
+      originalSpacingY_ = accessor_.GetLayer().GetGeometry().GetPixelSpacingY();
+      originalPanX_ = accessor_.GetLayer().GetGeometry().GetPanX();
+      originalPanY_ = accessor_.GetLayer().GetGeometry().GetPanY();
+
+      size_t oppositeControlPointType;
+      switch (startControlPoint.index)
+      {
+        case RadiographyControlPointType_TopLeftCorner:
+          oppositeControlPointType = RadiographyControlPointType_BottomRightCorner;
+          break;
+
+        case RadiographyControlPointType_TopRightCorner:
+          oppositeControlPointType = RadiographyControlPointType_BottomLeftCorner;
+          break;
+
+        case RadiographyControlPointType_BottomLeftCorner:
+          oppositeControlPointType = RadiographyControlPointType_TopRightCorner;
+          break;
+
+        case RadiographyControlPointType_BottomRightCorner:
+          oppositeControlPointType = RadiographyControlPointType_TopLeftCorner;
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      accessor_.GetLayer().GetControlPoint(startOppositeControlPoint_, oppositeControlPointType);
+
+      double d = ComputeDistance(startControlPoint.x, startControlPoint.y, startOppositeControlPoint_.x, startOppositeControlPoint_.y);
+      if (d >= std::numeric_limits<float>::epsilon())
+      {
+        baseScaling_ = 1.0 / d;
+      }
+      else
+      {
+        // Avoid division by zero in extreme cases
+        accessor_.Invalidate();
+      }
+    }
+  }
+
+
+  void RadiographyLayerResizeTracker::Render(CairoContext& context,
+                                             double zoom)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+
+
+  void RadiographyLayerResizeTracker::MouseUp()
+  {
+    if (accessor_.IsValid() &&
+        accessor_.GetLayer().GetGeometry().IsResizeable())
+    {
+      undoRedoStack_.Add(new UndoRedoCommand(*this));
+    }
+  }
+
+  
+  void RadiographyLayerResizeTracker::MouseMove(int displayX,
+                                                int displayY,
+                                                double sceneX,
+                                                double sceneY,
+                                                const std::vector<Deprecated::Touch>& displayTouches,
+                                                const std::vector<Deprecated::Touch>& sceneTouches)
+  {
+    static const double ROUND_SCALING = 0.1;
+        
+    if (accessor_.IsValid() &&
+        accessor_.GetLayer().GetGeometry().IsResizeable())
+    {
+      double scaling = ComputeDistance(startOppositeControlPoint_.x, startOppositeControlPoint_.y, sceneX, sceneY) * baseScaling_;
+
+      if (roundScaling_)
+      {
+        scaling = boost::math::round<double>((scaling / ROUND_SCALING) * ROUND_SCALING);
+      }
+          
+      RadiographyLayer& layer = accessor_.GetLayer();
+      layer.SetPixelSpacing(scaling * originalSpacingX_,
+                            scaling * originalSpacingY_);
+
+      // Keep the opposite corner at a fixed location
+      ControlPoint currentOppositeCorner;
+      layer.GetControlPoint(currentOppositeCorner, startOppositeControlPoint_.index);
+      layer.SetPan(layer.GetGeometry().GetPanX() + startOppositeControlPoint_.x - currentOppositeCorner.x,
+                   layer.GetGeometry().GetPanY() + startOppositeControlPoint_.y - currentOppositeCorner.y);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerResizeTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,69 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/UndoRedoStack.h"
+#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
+#include "RadiographyScene.h"
+
+namespace OrthancStone
+{
+  class RadiographyLayerResizeTracker : public Deprecated::IWorldSceneMouseTracker
+  {
+  private:
+    class UndoRedoCommand;
+
+    UndoRedoStack&                   undoRedoStack_;
+    RadiographyScene::LayerAccessor  accessor_;
+    bool                             roundScaling_;
+    double                           originalSpacingX_;
+    double                           originalSpacingY_;
+    double                           originalPanX_;
+    double                           originalPanY_;
+    ControlPoint                     startOppositeControlPoint_;
+    double                           baseScaling_;
+
+  public:
+    RadiographyLayerResizeTracker(UndoRedoStack& undoRedoStack,
+                                  RadiographyScene& scene,
+                                  size_t layer,
+                                  const ControlPoint& startControlPoint,
+                                  bool roundScaling);
+
+    virtual bool HasRender() const
+    {
+      return false;
+    }
+
+    virtual void Render(CairoContext& context,
+                        double zoom);
+
+    virtual void MouseUp();
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double sceneX,
+                           double sceneY,
+                           const std::vector<Deprecated::Touch>& displayTouches,
+                           const std::vector<Deprecated::Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerRotateTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,156 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyLayerRotateTracker.h"
+
+#include "RadiographySceneCommand.h"
+
+#include <OrthancException.h>
+
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/special_functions/round.hpp>
+
+namespace OrthancStone
+{
+  class RadiographyLayerRotateTracker::UndoRedoCommand : public RadiographySceneCommand
+  {
+  private:
+    double  sourceAngle_;
+    double  targetAngle_;
+
+    static int ToDegrees(double angle)
+    {
+      return boost::math::iround(angle * 180.0 / boost::math::constants::pi<double>());
+    }
+      
+  protected:
+    virtual void UndoInternal(RadiographyLayer& layer) const
+    {
+      LOG(INFO) << "Undo - Set angle to " << ToDegrees(sourceAngle_) << " degrees";
+      layer.SetAngle(sourceAngle_);
+    }
+
+    virtual void RedoInternal(RadiographyLayer& layer) const
+    {
+      LOG(INFO) << "Redo - Set angle to " << ToDegrees(sourceAngle_) << " degrees";
+      layer.SetAngle(targetAngle_);
+    }
+
+  public:
+    UndoRedoCommand(const RadiographyLayerRotateTracker& tracker) :
+      RadiographySceneCommand(tracker.accessor_),
+      sourceAngle_(tracker.originalAngle_),
+      targetAngle_(tracker.accessor_.GetLayer().GetGeometry().GetAngle())
+    {
+    }
+  };
+
+
+  bool RadiographyLayerRotateTracker::ComputeAngle(double& angle /* out */,
+                                                   double sceneX,
+                                                   double sceneY) const
+  {
+    Vector u;
+    LinearAlgebra::AssignVector(u, sceneX - centerX_, sceneY - centerY_);
+
+    double nu = boost::numeric::ublas::norm_2(u);
+
+    if (!LinearAlgebra::IsCloseToZero(nu))
+    {
+      u /= nu;
+      angle = atan2(u[1], u[0]);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+  RadiographyLayerRotateTracker::RadiographyLayerRotateTracker(UndoRedoStack& undoRedoStack,
+                                                               RadiographyScene& scene,
+                                                               const Deprecated::ViewportGeometry& view,
+                                                               size_t layer,
+                                                               double x,
+                                                               double y,
+                                                               bool roundAngles) :
+    undoRedoStack_(undoRedoStack),
+    accessor_(scene, layer),
+    roundAngles_(roundAngles)
+  {
+    if (accessor_.IsValid())
+    {
+      accessor_.GetLayer().GetCenter(centerX_, centerY_);
+      originalAngle_ = accessor_.GetLayer().GetGeometry().GetAngle();
+
+      double sceneX, sceneY;
+      view.MapDisplayToScene(sceneX, sceneY, x, y);
+
+      if (!ComputeAngle(clickAngle_, x, y))
+      {
+        accessor_.Invalidate();
+      }
+    }
+  }
+
+
+  void RadiographyLayerRotateTracker::Render(CairoContext& context,
+                                             double zoom)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+
+
+  void RadiographyLayerRotateTracker::MouseUp()
+  {
+    if (accessor_.IsValid())
+    {
+      undoRedoStack_.Add(new UndoRedoCommand(*this));
+    }
+  }
+
+  
+  void RadiographyLayerRotateTracker::MouseMove(int displayX,
+                                                int displayY,
+                                                double sceneX,
+                                                double sceneY,
+                                                const std::vector<Deprecated::Touch>& displayTouches,
+                                                const std::vector<Deprecated::Touch>& sceneTouches)
+  {
+    static const double ROUND_ANGLE = 15.0 / 180.0 * boost::math::constants::pi<double>(); 
+        
+    double angle;
+        
+    if (accessor_.IsValid() &&
+        ComputeAngle(angle, sceneX, sceneY))
+    {
+      angle = angle - clickAngle_ + originalAngle_;
+
+      if (roundAngles_)
+      {
+        angle = boost::math::round<double>((angle / ROUND_ANGLE) * ROUND_ANGLE);
+      }
+          
+      accessor_.GetLayer().SetAngle(angle);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyLayerRotateTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,75 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/UndoRedoStack.h"
+#include "../Deprecated/Toolbox/ViewportGeometry.h"
+#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
+#include "RadiographyScene.h"
+
+
+namespace OrthancStone
+{
+  class RadiographyLayerRotateTracker : public Deprecated::IWorldSceneMouseTracker
+  {
+  private:
+    class UndoRedoCommand;
+
+    UndoRedoStack&                   undoRedoStack_;
+    RadiographyScene::LayerAccessor  accessor_;
+    double                           centerX_;
+    double                           centerY_;
+    double                           originalAngle_;
+    double                           clickAngle_;
+    bool                             roundAngles_;
+
+    bool ComputeAngle(double& angle /* out */,
+                      double sceneX,
+                      double sceneY) const;
+
+  public:
+    RadiographyLayerRotateTracker(UndoRedoStack& undoRedoStack,
+                                  RadiographyScene& scene,
+                                  const Deprecated::ViewportGeometry& view,
+                                  size_t layer,
+                                  double x,
+                                  double y,
+                                  bool roundAngles);
+
+    virtual bool HasRender() const
+    {
+      return false;
+    }
+
+    virtual void Render(CairoContext& context,
+                        double zoom);
+
+    virtual void MouseUp();
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double sceneX,
+                           double sceneY,
+                           const std::vector<Deprecated::Touch>& displayTouches,
+                           const std::vector<Deprecated::Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyMaskLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,200 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyMaskLayer.h"
+#include "RadiographyDicomLayer.h"
+
+#include "RadiographyScene.h"
+#include "../Toolbox/ImageGeometry.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  const unsigned char IN_MASK_VALUE = 0x77;
+  const unsigned char OUT_MASK_VALUE = 0xFF;
+
+  const AffineTransform2D& RadiographyMaskLayer::GetTransform() const
+  {
+    return dicomLayer_.GetTransform();
+  }
+
+  const AffineTransform2D& RadiographyMaskLayer::GetTransformInverse() const
+  {
+    return dicomLayer_.GetTransformInverse();
+  }
+
+  bool RadiographyMaskLayer::GetPixel(unsigned int& imageX,
+                        unsigned int& imageY,
+                        double sceneX,
+                        double sceneY) const
+  {
+    return dicomLayer_.GetPixel(imageX, imageY, sceneX, sceneY);
+  }
+
+  std::string RadiographyMaskLayer::GetInstanceId() const
+  {
+    return dicomLayer_.GetInstanceId();
+  }
+
+  void RadiographyMaskLayer::SetCorner(const Orthanc::ImageProcessing::ImagePoint& corner, size_t index)
+  {
+    if (index < corners_.size())
+      corners_[index] = corner;
+    else
+      corners_.push_back(corner);
+    invalidated_ = true;
+
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+  void RadiographyMaskLayer::SetCorners(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners)
+  {
+    corners_ = corners;
+    invalidated_ = true;
+
+    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+  }
+
+  Extent2D RadiographyMaskLayer::GetSceneExtent(bool minimal) const
+  {
+    if (!minimal)
+    {
+      return RadiographyLayer::GetSceneExtent(minimal);
+    }
+    else
+    { // get the extent of the in-mask area
+      Extent2D sceneExtent;
+
+      for (std::vector<Orthanc::ImageProcessing::ImagePoint>::const_iterator corner = corners_.begin(); corner != corners_.end(); ++corner)
+      {
+        double x = static_cast<double>(corner->GetX());
+        double y = static_cast<double>(corner->GetY());
+
+        dicomLayer_.GetTransform().Apply(x, y);
+        sceneExtent.AddPoint(x, y);
+      }
+      return sceneExtent;
+    }
+  }
+
+
+
+  void RadiographyMaskLayer::Render(Orthanc::ImageAccessor& buffer,
+                                    const AffineTransform2D& viewTransform,
+                                    ImageInterpolation interpolation,
+                                    float windowCenter,
+                                    float windowWidth,
+                                    bool applyWindowing) const
+  {
+    if (dicomLayer_.GetWidth() == 0 || dicomLayer_.GetSourceImage() == NULL) // nothing to do if the DICOM layer is not displayed (or not loaded)
+      return;
+
+    if (invalidated_)
+    {
+      mask_.reset(new Orthanc::Image(Orthanc::PixelFormat_Grayscale8, dicomLayer_.GetWidth(), dicomLayer_.GetHeight(), false));
+
+      DrawMask();
+
+      invalidated_ = false;
+    }
+
+    {// rendering
+      if (buffer.GetFormat() != Orthanc::PixelFormat_Float32)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+      }
+
+      unsigned int cropX, cropY, cropWidth, cropHeight;
+      dicomLayer_.GetCrop(cropX, cropY, cropWidth, cropHeight);
+
+      const AffineTransform2D t = AffineTransform2D::Combine(
+            viewTransform, dicomLayer_.GetTransform(),
+            AffineTransform2D::CreateOffset(cropX, cropY));
+
+      Orthanc::ImageAccessor cropped;
+      mask_->GetRegion(cropped, cropX, cropY, cropWidth, cropHeight);
+
+      Orthanc::Image tmp(Orthanc::PixelFormat_Grayscale8, buffer.GetWidth(), buffer.GetHeight(), false);
+
+
+      unsigned int x1, y1, x2, y2;
+      if (!OrthancStone::GetProjectiveTransformExtent(x1, y1, x2, y2,
+                                                      t.GetHomogeneousMatrix(),
+                                                      cropped.GetWidth(),
+                                                      cropped.GetHeight(),
+                                                      buffer.GetWidth(),
+                                                      buffer.GetHeight()))
+      {
+        return;  // layer is outside the buffer
+      }
+
+      t.Apply(tmp, cropped, ImageInterpolation_Nearest, true /* clear */);
+
+      // we have observed vertical lines at the image border (probably due to bilinear filtering of the DICOM image when it is not aligned with the buffer pixels)
+      // -> draw the mask one line further on each side
+      if (x1 >= 1)
+      {
+        x1 = x1 - 1;
+      }
+      if (x2 < buffer.GetWidth() - 2)
+      {
+        x2 = x2 + 1;
+      }
+
+      // Blit
+      for (unsigned int y = y1; y <= y2; y++)
+      {
+        float *q = reinterpret_cast<float*>(buffer.GetRow(y)) + x1;
+        const uint8_t *p = reinterpret_cast<uint8_t*>(tmp.GetRow(y)) + x1;
+
+        for (unsigned int x = x1; x <= x2; x++, p++, q++)
+        {
+          if (*p != IN_MASK_VALUE)
+            *q = foreground_;
+          // else keep the underlying pixel value
+        }
+      }
+
+    }
+  }
+
+  void RadiographyMaskLayer::DrawMask() const
+  {
+    // first fill the complete image
+    Orthanc::ImageProcessing::Set(*mask_, OUT_MASK_VALUE);
+
+    // clip corners
+    std::vector<Orthanc::ImageProcessing::ImagePoint> clippedCorners;
+    for (size_t i = 0; i < corners_.size(); i++)
+    {
+      clippedCorners.push_back(corners_[i]);
+      clippedCorners[i].ClipTo(0, mask_->GetWidth() - 1, 0, mask_->GetHeight() - 1);
+    }
+
+    // fill mask
+    Orthanc::ImageProcessing::FillPolygon(*mask_, clippedCorners, IN_MASK_VALUE);
+
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyMaskLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,146 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "RadiographyLayer.h"
+
+#include <Compatibility.h>
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+
+namespace OrthancStone
+{
+  class RadiographyScene;
+  class RadiographyDicomLayer;
+
+  class RadiographyMaskLayer : public RadiographyLayer
+  {
+  private:
+    std::vector<Orthanc::ImageProcessing::ImagePoint>            corners_;
+    const RadiographyDicomLayer&      dicomLayer_;
+    mutable bool                      invalidated_;
+    float                             foreground_;
+
+    mutable std::unique_ptr<Orthanc::ImageAccessor>  mask_;
+  public:
+    RadiographyMaskLayer(const RadiographyScene& scene, const RadiographyDicomLayer& dicomLayer,
+                         float foreground) :
+      RadiographyLayer(scene),
+      dicomLayer_(dicomLayer),
+      invalidated_(true),
+      foreground_(foreground)
+    {
+    }
+
+    virtual size_t GetApproximateMemoryUsage() const
+    {
+      size_t size = 0;
+      if (mask_.get() != NULL)
+      {
+        size += mask_->GetPitch() * mask_->GetHeight();
+      }
+
+      return size;
+    }
+
+
+    void SetCorners(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners);
+    void SetCorner(const Orthanc::ImageProcessing::ImagePoint& corner, size_t index);
+
+    const std::vector<Orthanc::ImageProcessing::ImagePoint>& GetCorners() const
+    {
+      return corners_;
+    }
+
+    float GetForeground() const
+    {
+      return foreground_;
+    }
+
+    virtual void Render(Orthanc::ImageAccessor& buffer,
+                        const AffineTransform2D& viewTransform,
+                        ImageInterpolation interpolation,
+                        float windowCenter,
+                        float windowWidth,
+                        bool applyWindowing) const;
+
+    std::string GetInstanceId() const;
+
+    virtual size_t GetControlPointCount() const
+    {
+      return corners_.size();
+    }
+
+    virtual void GetControlPoint(ControlPoint& cpScene,
+                                         size_t index) const
+    {
+      ControlPoint cp(corners_[index].GetX(), corners_[index].GetY(), index);
+
+      // transforms image coordinates into scene coordinates
+      GetTransform().Apply(cp.x, cp.y);
+      cpScene = cp;
+    }
+
+    virtual Extent2D GetSceneExtent(bool minimal) const;
+
+    virtual bool GetDefaultWindowing(float& center,
+                                     float& width) const
+    {
+      return false;
+    }
+
+    virtual bool GetRange(float& minValue,
+                          float& maxValue) const
+    {
+      minValue = 0;
+      maxValue = 0;
+
+      if (foreground_ < 0)
+      {
+        minValue = foreground_;
+      }
+
+      if (foreground_ > 0)
+      {
+        maxValue = foreground_;
+      }
+
+      return true;
+
+    }
+
+    virtual bool GetPixel(unsigned int& imageX,
+                          unsigned int& imageY,
+                          double sceneX,
+                          double sceneY) const;
+
+  protected:
+    virtual const AffineTransform2D& GetTransform() const;
+
+    virtual const AffineTransform2D& GetTransformInverse() const;
+
+
+  private:
+    void DrawMask() const;
+
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyScene.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,968 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyScene.h"
+
+#include "RadiographyAlphaLayer.h"
+#include "RadiographyDicomLayer.h"
+#include "RadiographyTextLayer.h"
+#include "RadiographyMaskLayer.h"
+#include "../Deprecated/Toolbox/DicomFrameConverter.h"
+#include "../Scene2D/CairoCompositor.h"
+#include "../Scene2D/FloatTextureSceneLayer.h"
+#include "../Scene2D/TextSceneLayer.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <Images/PamReader.h>
+#include <Images/PamWriter.h>
+#include <Images/PngWriter.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+#include <DicomDatasetReader.h>
+#include <FullOrthancDataset.h>
+
+#include <boost/math/special_functions/round.hpp>
+
+
+namespace OrthancStone
+{
+  RadiographyScene::LayerAccessor::LayerAccessor(RadiographyScene& scene,
+                                                 size_t index) :
+    scene_(scene),
+    index_(index)
+  {
+    Layers::iterator layer = scene.layers_.find(index);
+    if (layer == scene.layers_.end())
+    {
+      layer_ = NULL;
+    }
+    else
+    {
+      assert(layer->second != NULL);
+      layer_ = layer->second;
+    }
+  }
+
+
+  RadiographyScene::LayerAccessor::LayerAccessor(RadiographyScene& scene,
+                                                 double x,
+                                                 double y) :
+    scene_(scene),
+    index_(0)  // Dummy initialization
+  {
+    if (scene.LookupLayer(index_, x, y))
+    {
+      Layers::iterator layer = scene.layers_.find(index_);
+
+      if (layer == scene.layers_.end())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+      else
+      {
+        assert(layer->second != NULL);
+        layer_ = layer->second;
+      }
+    }
+    else
+    {
+      layer_ = NULL;
+    }
+  }
+
+
+  RadiographyScene& RadiographyScene::LayerAccessor::GetScene() const
+  {
+    if (IsValid())
+    {
+      return scene_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  size_t RadiographyScene::LayerAccessor::GetIndex() const
+  {
+    if (IsValid())
+    {
+      return index_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  
+  RadiographyLayer& RadiographyScene::LayerAccessor::GetLayer() const
+  {
+    if (IsValid())
+    {
+      return *layer_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  void RadiographyScene::_RegisterLayer(RadiographyLayer* layer)
+  {
+    std::unique_ptr<RadiographyLayer> raii(layer);
+
+    // LOG(INFO) << "Registering layer: " << countLayers_;
+
+    size_t index = nextLayerIndex_++;
+    raii->SetIndex(index);
+    layers_[index] = raii.release();
+  }
+
+  RadiographyLayer& RadiographyScene::RegisterLayer(RadiographyLayer* layer)
+  {
+    if (layer == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    _RegisterLayer(layer);
+
+    BroadcastMessage(GeometryChangedMessage(*this, *layer));
+    BroadcastMessage(ContentChangedMessage(*this, *layer));
+    Register<RadiographyLayer::LayerEditedMessage>(*layer, &RadiographyScene::OnLayerEdited);
+
+    return *layer;
+  }
+
+  size_t RadiographyScene::GetApproximateMemoryUsage() const
+  {
+    size_t size = 0;
+    for (Layers::const_iterator it = layers_.begin(); it != layers_.end(); it++)
+    {
+      size += it->second->GetApproximateMemoryUsage();
+    }
+    return size;
+  }
+
+  void RadiographyScene::OnLayerEdited(const RadiographyLayer::LayerEditedMessage& message)
+  {
+    BroadcastMessage(RadiographyScene::LayerEditedMessage(*this, message.GetOrigin()));
+  }
+
+  
+  RadiographyScene::RadiographyScene() :
+    nextLayerIndex_(0),
+    hasWindowing_(false),
+    windowingCenter_(0),  // Dummy initialization
+    windowingWidth_(0)    // Dummy initialization
+  {
+  }
+
+
+  RadiographyScene::~RadiographyScene()
+  {
+    for (Layers::iterator it = layers_.begin(); it != layers_.end(); it++)
+    {
+      assert(it->second != NULL);
+      delete it->second;
+    }
+  }
+
+  RadiographyPhotometricDisplayMode RadiographyScene::GetPreferredPhotomotricDisplayMode() const
+  {
+    // return the mode of the first layer who "cares" about its display mode (normaly, the one and only layer that is a DicomLayer)
+    for (Layers::const_iterator it = layers_.begin(); it != layers_.end(); it++)
+    {
+      if (it->second->GetPreferredPhotomotricDisplayMode() != RadiographyPhotometricDisplayMode_Default)
+      {
+        return it->second->GetPreferredPhotomotricDisplayMode();
+      }
+    }
+
+    return RadiographyPhotometricDisplayMode_Default;
+  }
+
+
+  void RadiographyScene::GetLayersIndexes(std::vector<size_t>& output) const
+  {
+    for (Layers::const_iterator it = layers_.begin(); it != layers_.end(); it++)
+    {
+      output.push_back(it->first);
+    }
+  }
+
+  void RadiographyScene::RemoveLayer(size_t layerIndex)
+  {
+    LOG(INFO) << "Removing layer: " << layerIndex;
+
+    Layers::iterator found = layers_.find(layerIndex);
+
+    if (found == layers_.end())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      assert(found->second != NULL);
+      delete found->second;
+      
+      layers_.erase(found);
+      
+      LOG(INFO) << "Removing layer, there are now : " << layers_.size() << " layers";
+
+      _OnLayerRemoved();
+
+      BroadcastMessage(RadiographyScene::LayerRemovedMessage(*this, layerIndex));
+    }
+  }
+
+  const RadiographyLayer& RadiographyScene::GetLayer(size_t layerIndex) const
+  {
+    Layers::const_iterator found = layers_.find(layerIndex);
+    
+    if (found == layers_.end())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      assert(found->second != NULL);
+      return *found->second;
+    }
+  }
+
+  RadiographyLayer& RadiographyScene::GetLayer(size_t layerIndex)
+  {
+    Layers::const_iterator found = layers_.find(layerIndex);
+
+    if (found == layers_.end())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      assert(found->second != NULL);
+      return *found->second;
+    }
+  }
+
+  bool RadiographyScene::GetWindowing(float& center,
+                                      float& width) const
+  {
+    if (hasWindowing_)
+    {
+      center = windowingCenter_;
+      width = windowingWidth_;
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+  void RadiographyScene::GetWindowingWithDefault(float& center,
+                                                 float& width) const
+  {
+    if (!GetWindowing(center, width))
+    {
+      center = 128;
+      width = 256;
+    }
+  }
+
+
+  void RadiographyScene::SetWindowing(float center,
+                                      float width)
+  {
+    hasWindowing_ = true;
+    windowingCenter_ = center;
+    windowingWidth_ = width;
+
+    BroadcastMessage(RadiographyScene::WindowingChangedMessage(*this));
+  }
+
+
+  RadiographyLayer& RadiographyScene::UpdateText(size_t layerIndex,
+                                                 const std::string& utf8,
+                                                 const std::string& font,
+                                                 unsigned int fontSize,
+                                                 uint8_t foreground)
+  {
+    RadiographyTextLayer& textLayer = dynamic_cast<RadiographyTextLayer&>(GetLayer(layerIndex));
+    textLayer.SetText(utf8, font, fontSize, foreground);
+
+    BroadcastMessage(RadiographyScene::ContentChangedMessage(*this, textLayer));
+    BroadcastMessage(RadiographyScene::LayerEditedMessage(*this, textLayer));
+    return textLayer;
+  }
+
+
+  RadiographyLayer& RadiographyScene::LoadText(const std::string& utf8,
+                                               const std::string& font,
+                                               unsigned int fontSize,
+                                               uint8_t foreground,
+                                               RadiographyLayer::Geometry* centerGeometry,
+                                               bool isCenterGeometry)
+  {
+    std::unique_ptr<RadiographyTextLayer>  alpha(new RadiographyTextLayer(*this));
+    alpha->SetText(utf8, font, fontSize, foreground);
+    if (centerGeometry != NULL)
+    {
+      if (isCenterGeometry)
+      {
+        // modify geometry to reference the top left corner
+        double tlx = centerGeometry->GetPanX();
+        double tly = centerGeometry->GetPanY();
+        Extent2D textExtent = alpha->GetSceneExtent(false);
+        tlx = tlx - (textExtent.GetWidth() / 2) * centerGeometry->GetPixelSpacingX();
+        tly = tly - (textExtent.GetHeight() / 2) * centerGeometry->GetPixelSpacingY();
+        centerGeometry->SetPan(tlx, tly);
+      }
+      alpha->SetGeometry(*centerGeometry);
+    }
+
+    RadiographyLayer& registeredLayer = RegisterLayer(alpha.release());
+
+    BroadcastMessage(RadiographyScene::LayerEditedMessage(*this, registeredLayer));
+    return registeredLayer;
+  }
+
+
+  RadiographyLayer& RadiographyScene::LoadTestBlock(unsigned int width,
+                                                    unsigned int height,
+                                                    RadiographyLayer::Geometry* geometry)
+  {
+    std::unique_ptr<Orthanc::Image>  block(new Orthanc::Image(Orthanc::PixelFormat_Grayscale8, width, height, false));
+
+    for (unsigned int padding = 0;
+         (width > 2 * padding) && (height > 2 * padding);
+         padding++)
+    {
+      uint8_t color;
+      if (255 > 10 * padding)
+      {
+        color = 255 - 10 * padding;
+      }
+      else
+      {
+        color = 0;
+      }
+
+      Orthanc::ImageAccessor region;
+      block->GetRegion(region, padding, padding, width - 2 * padding, height - 2 * padding);
+      Orthanc::ImageProcessing::Set(region, color);
+    }
+
+    return LoadAlphaBitmap(block.release(), geometry);
+  }
+
+  RadiographyLayer& RadiographyScene::LoadMask(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners,
+                                               const RadiographyDicomLayer& dicomLayer,
+                                               float foreground,
+                                               RadiographyLayer::Geometry* geometry)
+  {
+    std::unique_ptr<RadiographyMaskLayer>  mask(new RadiographyMaskLayer(*this, dicomLayer, foreground));
+    mask->SetCorners(corners);
+    if (geometry != NULL)
+    {
+      mask->SetGeometry(*geometry);
+    }
+
+    return RegisterLayer(mask.release());
+  }
+
+
+  RadiographyLayer& RadiographyScene::LoadAlphaBitmap(Orthanc::ImageAccessor* bitmap, RadiographyLayer::Geometry *geometry)
+  {
+    std::unique_ptr<RadiographyAlphaLayer>  alpha(new RadiographyAlphaLayer(*this));
+    alpha->SetAlpha(bitmap);
+    if (geometry != NULL)
+    {
+      alpha->SetGeometry(*geometry);
+    }
+
+    return RegisterLayer(alpha.release());
+  }
+
+  RadiographyLayer& RadiographyScene::LoadDicomImage(Orthanc::ImageAccessor* dicomImage, // takes ownership
+                                                     const std::string& instance,
+                                                     unsigned int frame,
+                                                     Deprecated::DicomFrameConverter* converter,  // takes ownership
+                                                     RadiographyPhotometricDisplayMode preferredPhotometricDisplayMode,
+                                                     RadiographyLayer::Geometry* geometry)
+  {
+    RadiographyDicomLayer& layer = dynamic_cast<RadiographyDicomLayer&>(RegisterLayer(new RadiographyDicomLayer(*this)));
+
+    layer.SetInstance(instance, frame);
+
+    if (geometry != NULL)
+    {
+      layer.SetGeometry(*geometry);
+    }
+
+    layer.SetDicomFrameConverter(converter);
+    layer.SetSourceImage(dicomImage);
+    layer.SetPreferredPhotomotricDisplayMode(preferredPhotometricDisplayMode);
+
+    return layer;
+  }
+
+  RadiographyLayer& RadiographyScene::LoadDicomFrame(Deprecated::OrthancApiClient& orthanc,
+                                                     const std::string& instance,
+                                                     unsigned int frame,
+                                                     bool httpCompression,
+                                                     RadiographyLayer::Geometry* geometry)
+  {
+    RadiographyDicomLayer& layer = dynamic_cast<RadiographyDicomLayer&>(RegisterLayer(new RadiographyDicomLayer( *this)));
+    layer.SetInstance(instance, frame);
+
+    if (geometry != NULL)
+    {
+      layer.SetGeometry(*geometry);
+    }
+
+    {
+      Deprecated::IWebService::HttpHeaders headers;
+      std::string uri = "/instances/" + instance + "/tags";
+
+      orthanc.GetBinaryAsync(
+            uri, headers,
+            new Deprecated::DeprecatedCallable<RadiographyScene, Deprecated::OrthancApiClient::BinaryResponseReadyMessage>
+            (GetSharedObserver(), &RadiographyScene::OnTagsReceived), NULL,
+            new Orthanc::SingleValueObject<size_t>(layer.GetIndex()));
+    }
+
+    {
+      Deprecated::IWebService::HttpHeaders headers;
+      headers["Accept"] = "image/x-portable-arbitrarymap";
+
+      if (httpCompression)
+      {
+        headers["Accept-Encoding"] = "gzip";
+      }
+
+      std::string uri = ("/instances/" + instance + "/frames/" +
+                         boost::lexical_cast<std::string>(frame) + "/image-uint16");
+
+      orthanc.GetBinaryAsync(
+            uri, headers,
+            new Deprecated::DeprecatedCallable<RadiographyScene, Deprecated::OrthancApiClient::BinaryResponseReadyMessage>
+            (GetSharedObserver(), &RadiographyScene::OnFrameReceived), NULL,
+            new Orthanc::SingleValueObject<size_t>(layer.GetIndex()));
+    }
+
+    return layer;
+  }
+
+
+  RadiographyLayer& RadiographyScene::LoadDicomWebFrame(Deprecated::IWebService& web)
+  {
+    RadiographyLayer& layer = RegisterLayer(new RadiographyDicomLayer(*this));
+
+
+    return layer;
+  }
+
+
+
+  void RadiographyScene::OnTagsReceived(const Deprecated::OrthancApiClient::BinaryResponseReadyMessage& message)
+  {
+    size_t index = dynamic_cast<const Orthanc::SingleValueObject<size_t>&>
+        (message.GetPayload()).GetValue();
+
+    VLOG(1) << "JSON received: " << message.GetUri().c_str()
+            << " (" << message.GetAnswerSize() << " bytes) for layer " << index;
+
+    Layers::iterator layer = layers_.find(index);
+    if (layer != layers_.end())
+    {
+      assert(layer->second != NULL);
+
+      OrthancPlugins::FullOrthancDataset dicom(message.GetAnswer(), message.GetAnswerSize());
+      dynamic_cast<RadiographyDicomLayer*>(layer->second)->SetDicomTags(dicom);
+
+      float c, w;
+      if (!hasWindowing_ &&
+          layer->second->GetDefaultWindowing(c, w))
+      {
+        hasWindowing_ = true;
+        windowingCenter_ = c;
+        windowingWidth_ = w;
+      }
+
+      BroadcastMessage(GeometryChangedMessage(*this, *(layer->second)));
+    }
+  }
+
+
+  void RadiographyScene::OnFrameReceived(const Deprecated::OrthancApiClient::BinaryResponseReadyMessage& message)
+  {
+    size_t index = dynamic_cast<const Orthanc::SingleValueObject<size_t>&>(message.GetPayload()).GetValue();
+
+    VLOG(1) << "DICOM frame received: " << message.GetUri().c_str()
+            << " (" << message.GetAnswerSize() << " bytes) for layer " << index;
+
+    Layers::iterator layer = layers_.find(index);
+    if (layer != layers_.end())
+    {
+      assert(layer->second != NULL);
+
+      std::string content;
+      if (message.GetAnswerSize() > 0)
+      {
+        content.assign(reinterpret_cast<const char*>(message.GetAnswer()), message.GetAnswerSize());
+      }
+
+      std::unique_ptr<Orthanc::PamReader> reader(new Orthanc::PamReader);
+      reader->ReadFromMemory(content);
+      dynamic_cast<RadiographyDicomLayer*>(layer->second)->SetSourceImage(reader.release());
+
+      BroadcastMessage(ContentChangedMessage(*this, *(layer->second)));
+    }
+  }
+
+
+  Extent2D RadiographyScene::GetSceneExtent(bool minimal) const
+  {
+    Extent2D extent;
+
+    for (Layers::const_iterator it = layers_.begin();
+         it != layers_.end(); ++it)
+    {
+      assert(it->second != NULL);
+      extent.Union(it->second->GetSceneExtent(minimal));
+    }
+
+    return extent;
+  }
+
+
+  void RadiographyScene::Render(Orthanc::ImageAccessor& buffer,
+                                const AffineTransform2D& viewTransform,
+                                ImageInterpolation interpolation,
+                                bool applyWindowing) const
+  {
+    // Render layers in the background-to-foreground order
+    for (size_t index = 0; index < nextLayerIndex_; index++)
+    {
+      try
+      {
+        Layers::const_iterator it = layers_.find(index);
+        if (it != layers_.end())
+        {
+          assert(it->second != NULL);
+          it->second->Render(buffer, viewTransform, interpolation, windowingCenter_, windowingWidth_, applyWindowing);
+        }
+      }
+      catch (Orthanc::OrthancException& ex)
+      {
+        LOG(ERROR) << "RadiographyScene::Render: " << index << ", OrthancException: " << ex.GetDetails();
+        throw ex; // rethrow because we want it to crash to see there's a problem !
+      }
+      catch (...)
+      {
+        LOG(ERROR) << "RadiographyScene::Render: " << index << ", unkown exception: ";
+        throw; // rethrow because we want it to crash to see there's a problem !
+      }
+    }
+  }
+
+
+  bool RadiographyScene::LookupLayer(size_t& index /* out */,
+                                     double x,
+                                     double y) const
+  {
+    // Render layers in the foreground-to-background order
+    for (size_t i = nextLayerIndex_; i > 0; i--)
+    {
+      index = i - 1;
+      Layers::const_iterator it = layers_.find(index);
+      if (it != layers_.end())
+      {
+        assert(it->second != NULL);
+        if (it->second->Contains(x, y))
+        {
+          return true;
+        }
+      }
+    }
+
+    return false;
+  }
+
+
+  void RadiographyScene::DrawBorder(CairoContext& context,
+                                    unsigned int layer,
+                                    double zoom)
+  {
+    Layers::const_iterator found = layers_.find(layer);
+
+    if (found != layers_.end())
+    {
+      context.SetSourceColor(255, 0, 0);
+      found->second->DrawBorders(context, zoom);
+    }
+  }
+
+
+  void RadiographyScene::GetRange(float& minValue,
+                                  float& maxValue) const
+  {
+    bool first = true;
+
+    for (Layers::const_iterator it = layers_.begin();
+         it != layers_.end(); it++)
+    {
+      assert(it->second != NULL);
+
+      float a, b;
+      if (it->second->GetRange(a, b))
+      {
+        if (first)
+        {
+          minValue = a;
+          maxValue = b;
+          first = false;
+        }
+        else
+        {
+          minValue = std::min(a, minValue);
+          maxValue = std::max(b, maxValue);
+        }
+      }
+    }
+
+    if (first)
+    {
+      minValue = 0;
+      maxValue = 0;
+    }
+  }
+
+  void RadiographyScene::ExtractLayerFromRenderedScene(Orthanc::ImageAccessor& layer,
+                                                       const Orthanc::ImageAccessor& renderedScene,
+                                                       size_t layerIndex,
+                                                       bool isCropped,
+                                                       ImageInterpolation interpolation)
+  {
+    Extent2D sceneExtent = GetSceneExtent(isCropped);
+
+    double pixelSpacingX = sceneExtent.GetWidth() / renderedScene.GetWidth();
+    double pixelSpacingY = sceneExtent.GetHeight() / renderedScene.GetHeight();
+
+    AffineTransform2D view = AffineTransform2D::Combine(
+          AffineTransform2D::CreateScaling(1.0 / pixelSpacingX, 1.0 / pixelSpacingY),
+          AffineTransform2D::CreateOffset(-sceneExtent.GetX1(), -sceneExtent.GetY1()));
+
+    AffineTransform2D layerToSceneTransform = AffineTransform2D::Combine(
+          view,
+          GetLayer(layerIndex).GetTransform());
+
+    AffineTransform2D sceneToLayerTransform = AffineTransform2D::Invert(layerToSceneTransform);
+    sceneToLayerTransform.Apply(layer, renderedScene, interpolation, false);
+  }
+
+  Orthanc::Image* RadiographyScene::ExportToImage(double pixelSpacingX,
+                                                  double pixelSpacingY,
+                                                  ImageInterpolation interpolation,
+                                                  bool invert,
+                                                  int64_t maxValue /* for inversion */,
+                                                  bool autoCrop,
+                                                  bool applyWindowing)
+  {
+    if (pixelSpacingX <= 0 ||
+        pixelSpacingY <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    Extent2D extent = GetSceneExtent(autoCrop);
+
+    int w = boost::math::iround(extent.GetWidth() / pixelSpacingX);
+    int h = boost::math::iround(extent.GetHeight() / pixelSpacingY);
+
+    if (w < 0 || h < 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    Orthanc::Image layers(Orthanc::PixelFormat_Float32,
+                          static_cast<unsigned int>(w),
+                          static_cast<unsigned int>(h), false);
+
+    AffineTransform2D view = AffineTransform2D::Combine(
+          AffineTransform2D::CreateScaling(1.0 / pixelSpacingX, 1.0 / pixelSpacingY),
+          AffineTransform2D::CreateOffset(-extent.GetX1(), -extent.GetY1()));
+
+    // wipe background before rendering
+    if (GetPreferredPhotomotricDisplayMode() == RadiographyPhotometricDisplayMode_Monochrome1)
+    {
+      Orthanc::ImageProcessing::Set(layers, 65535);
+    }
+    else
+    {
+      Orthanc::ImageProcessing::Set(layers, 0);
+    }
+
+    Render(layers, view, interpolation, applyWindowing);
+
+    std::unique_ptr<Orthanc::Image> rendered(new Orthanc::Image(Orthanc::PixelFormat_Grayscale16,
+                                                              layers.GetWidth(), layers.GetHeight(), false));
+
+    Orthanc::ImageProcessing::Convert(*rendered, layers);
+    if (invert)
+      Orthanc::ImageProcessing::Invert(*rendered, maxValue);
+
+    return rendered.release();
+  }
+
+
+  Orthanc::Image* RadiographyScene::ExportToCreateDicomRequestAndImage(Json::Value& createDicomRequestContent,
+                                                                       const Json::Value& dicomTags,
+                                                                       const std::string& parentOrthancId,
+                                                                       double pixelSpacingX,
+                                                                       double pixelSpacingY,
+                                                                       bool invert,
+                                                                       bool autoCrop,
+                                                                       ImageInterpolation interpolation)
+  {
+    LOG(INFO) << "Exporting RadiographyScene to DICOM";
+
+    std::unique_ptr<Orthanc::Image> rendered(ExportToImage(pixelSpacingX, pixelSpacingY, interpolation, autoCrop, false)); // note: we don't invert the image in the pixels data because we'll set the PhotometricDisplayMode correctly in the DICOM tags
+
+    createDicomRequestContent["Tags"] = dicomTags;
+
+    RadiographyPhotometricDisplayMode photometricMode = GetPreferredPhotomotricDisplayMode();
+    if ((invert && photometricMode != RadiographyPhotometricDisplayMode_Monochrome2) ||
+        (!invert && photometricMode == RadiographyPhotometricDisplayMode_Monochrome1))
+    {
+      createDicomRequestContent["Tags"]["PhotometricInterpretation"] = "MONOCHROME1";
+    }
+    else
+    {
+      createDicomRequestContent["Tags"]["PhotometricInterpretation"] = "MONOCHROME2";
+    }
+
+    // WARNING: The order of PixelSpacing is Y/X. We use "%0.8f" to
+    // avoid floating-point numbers to grow over 16 characters,
+    // which would be invalid according to DICOM standard
+    // ("dciodvfy" would complain).
+    char buf[32];
+    sprintf(buf, "%0.8f\\%0.8f", pixelSpacingY, pixelSpacingX);
+
+    createDicomRequestContent["Tags"]["PixelSpacing"] = buf;
+
+    float center, width;
+    if (GetWindowing(center, width))
+    {
+      createDicomRequestContent["Tags"]["WindowCenter"] =
+          boost::lexical_cast<std::string>(boost::math::iround(center));
+
+      createDicomRequestContent["Tags"]["WindowWidth"] =
+          boost::lexical_cast<std::string>(boost::math::iround(width));
+    }
+
+    if (!parentOrthancId.empty())
+    {
+      createDicomRequestContent["Parent"] = parentOrthancId;
+    }
+
+    return rendered.release();
+  }
+
+
+  void RadiographyScene::ExportToCreateDicomRequest(Json::Value& createDicomRequestContent,
+                                                    const Json::Value& dicomTags,
+                                                    const std::string& parentOrthancId,
+                                                    double pixelSpacingX,
+                                                    double pixelSpacingY,
+                                                    bool invert,
+                                                    bool autoCrop,
+                                                    ImageInterpolation interpolation,
+                                                    bool usePam)
+  {
+    LOG(INFO) << "Exporting RadiographyScene to DICOM";
+    VLOG(1) << "Exporting RadiographyScene to: export to image";
+
+    std::unique_ptr<Orthanc::Image> rendered(ExportToCreateDicomRequestAndImage(createDicomRequestContent, dicomTags, parentOrthancId, pixelSpacingX, pixelSpacingY, invert, autoCrop, interpolation));
+
+    // convert the image into base64 for inclusing in the createDicomRequest
+    std::string base64;
+
+    {
+      std::string content;
+
+      if (usePam)
+      {
+        VLOG(1) << "Exporting RadiographyScene: convert to PAM";
+        Orthanc::PamWriter writer;
+        writer.WriteToMemory(content, *rendered);
+      }
+      else
+      {
+        Orthanc::PngWriter writer;
+        writer.WriteToMemory(content, *rendered);
+      }
+
+      VLOG(1) << "Exporting RadiographyScene: encoding to base64";
+      Orthanc::Toolbox::EncodeBase64(base64, content);
+    }
+
+    // This is Data URI scheme: https://en.wikipedia.org/wiki/Data_URI_scheme
+    createDicomRequestContent["Content"] = ("data:" +
+                                            std::string(usePam ? Orthanc::MIME_PAM : Orthanc::MIME_PNG) +
+                                            ";base64," + base64);
+
+    VLOG(1) << "Exporting RadiographyScene: create-dicom request is ready";
+  }
+
+
+  void RadiographyScene::ExportDicom(Deprecated::OrthancApiClient& orthanc,
+                                     const Json::Value& dicomTags,
+                                     const std::string& parentOrthancId,
+                                     double pixelSpacingX,
+                                     double pixelSpacingY,
+                                     bool invert,
+                                     bool autoCrop,
+                                     ImageInterpolation interpolation,
+                                     bool usePam)
+  {
+    Json::Value createDicomRequestContent;
+
+    ExportToCreateDicomRequest(createDicomRequestContent, dicomTags, parentOrthancId, pixelSpacingX, pixelSpacingY, invert, autoCrop, interpolation, usePam);
+
+    orthanc.PostJsonAsyncExpectJson(
+          "/tools/create-dicom", createDicomRequestContent,
+          new Deprecated::DeprecatedCallable<RadiographyScene, Deprecated::OrthancApiClient::JsonResponseReadyMessage>
+          (GetSharedObserver(), &RadiographyScene::OnDicomExported),
+          NULL, NULL);
+
+  }
+
+
+  // Export using PAM is faster than using PNG, but requires Orthanc
+  // core >= 1.4.3
+  void RadiographyScene::ExportDicom(Deprecated::OrthancApiClient& orthanc,
+                                     const Orthanc::DicomMap& dicom,
+                                     const std::string& parentOrthancId,
+                                     double pixelSpacingX,
+                                     double pixelSpacingY,
+                                     bool invert,
+                                     bool autoCrop,
+                                     ImageInterpolation interpolation,
+                                     bool usePam)
+  {
+    std::set<Orthanc::DicomTag> tags;
+    dicom.GetTags(tags);
+
+    Json::Value jsonTags = Json::objectValue;
+
+    for (std::set<Orthanc::DicomTag>::const_iterator
+         tag = tags.begin(); tag != tags.end(); ++tag)
+    {
+      const Orthanc::DicomValue& value = dicom.GetValue(*tag);
+      if (!value.IsNull() &&
+          !value.IsBinary())
+      {
+        jsonTags[tag->Format()] = value.GetContent();
+      }
+    }
+
+    ExportDicom(orthanc, jsonTags, parentOrthancId, pixelSpacingX, pixelSpacingY, invert, autoCrop, interpolation, usePam);
+  }
+
+  void RadiographyScene::OnDicomExported(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    LOG(INFO) << "DICOM export was successful: "
+              << message.GetJson().toStyledString();
+  }
+
+
+  void RadiographyScene::OnDicomWebReceived(const Deprecated::IWebService::HttpRequestSuccessMessage& message)
+  {
+    LOG(INFO) << "DICOMweb WADO-RS received: " << message.GetAnswerSize() << " bytes";
+
+    const Deprecated::IWebService::HttpHeaders& h = message.GetAnswerHttpHeaders();
+    for (Deprecated::IWebService::HttpHeaders::const_iterator
+         it = h.begin(); it != h.end(); ++it)
+    {
+      printf("[%s] = [%s]\n", it->first.c_str(), it->second.c_str());
+    }
+  }
+
+  void RadiographyScene::ExportToScene2D(Scene2D& output) const
+  {
+    int depth = 0;
+    for (Layers::const_iterator it = layers_.begin();
+         it != layers_.end(); ++it)
+    {
+      assert(it->second != NULL);
+
+      std::unique_ptr<ISceneLayer> layer;
+      if (dynamic_cast<RadiographyDicomLayer*>(it->second))
+      {
+        RadiographyDicomLayer* oldLayer = dynamic_cast<RadiographyDicomLayer*>(it->second);
+
+        std::unique_ptr<FloatTextureSceneLayer> newLayer(new FloatTextureSceneLayer(*(oldLayer->GetSourceImage())));
+
+        newLayer->SetOrigin(oldLayer->GetGeometry().GetPanX(),
+                            oldLayer->GetGeometry().GetPanY()
+                            );
+        newLayer->SetAngle(oldLayer->GetGeometry().GetAngle());
+
+        layer.reset(newLayer.release());
+
+        // TODO: windowing dynamic_cast
+      }
+      else if (dynamic_cast<RadiographyTextLayer*>(it->second))
+      {
+        RadiographyTextLayer* oldLayer = dynamic_cast<RadiographyTextLayer*>(it->second);
+
+        std::unique_ptr<TextSceneLayer> newLayer(new TextSceneLayer());
+
+        newLayer->SetText(oldLayer->GetText());
+        newLayer->SetColor(oldLayer->GetForegroundGreyLevel(),
+                           oldLayer->GetForegroundGreyLevel(),
+                           oldLayer->GetForegroundGreyLevel()
+                           );
+        newLayer->SetPosition(oldLayer->GetGeometry().GetPanX(),
+                              oldLayer->GetGeometry().GetPanY()
+                              );
+        newLayer->SetFontIndex(1);
+        newLayer->SetAnchor(BitmapAnchor_TopLeft);
+        //newLayer->SetAngle(oldLayer->GetGeometry().GetAngle());
+
+        layer.reset(newLayer.release());
+      }
+
+      output.SetLayer(depth++, layer.release());
+
+    }
+
+  }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyScene.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,371 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "RadiographyLayer.h"
+#include "../Messages/ObserverBase.h"
+#include "../Deprecated/Toolbox/DicomFrameConverter.h"
+#include "../Deprecated/Toolbox/OrthancApiClient.h"
+#include "../StoneEnumerations.h"
+#include "../Scene2D/Scene2D.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+
+
+namespace OrthancStone
+{
+  class RadiographyDicomLayer;
+
+  class RadiographyScene :
+    public ObserverBase<RadiographyScene>,
+    public IObservable
+  {
+    friend class RadiographySceneGeometryReader;
+  public:
+    class GeometryChangedMessage : public OriginMessage<RadiographyScene>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      RadiographyLayer&        layer_;
+
+    public:
+      GeometryChangedMessage(const RadiographyScene& origin,
+                             RadiographyLayer& layer) :
+        OriginMessage(origin),
+        layer_(layer)
+      {
+      }
+
+      RadiographyLayer& GetLayer() const
+      {
+        return layer_;
+      }
+    };
+
+    class ContentChangedMessage : public OriginMessage<RadiographyScene>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      RadiographyLayer&        layer_;
+
+    public:
+      ContentChangedMessage(const RadiographyScene& origin,
+                            RadiographyLayer& layer) :
+        OriginMessage(origin),
+        layer_(layer)
+      {
+      }
+
+      RadiographyLayer& GetLayer() const
+      {
+        return layer_;
+      }
+    };
+
+    class LayerEditedMessage : public OriginMessage<RadiographyScene>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      const RadiographyLayer&        layer_;
+
+    public:
+      LayerEditedMessage(const RadiographyScene& origin,
+                         const RadiographyLayer& layer) :
+        OriginMessage(origin),
+        layer_(layer)
+      {
+      }
+
+      const RadiographyLayer& GetLayer() const
+      {
+        return layer_;
+      }
+    };
+
+    class LayerRemovedMessage : public OriginMessage<RadiographyScene>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      size_t&        layerIndex_;
+
+    public:
+      LayerRemovedMessage(const RadiographyScene& origin,
+                          size_t& layerIndex) :
+        OriginMessage(origin),
+        layerIndex_(layerIndex)
+      {
+      }
+
+      size_t& GetLayerIndex() const
+      {
+        return layerIndex_;
+      }
+    };
+
+
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, WindowingChangedMessage, RadiographyScene);
+
+    
+    class LayerAccessor : public boost::noncopyable
+    {
+    private:
+      RadiographyScene&  scene_;
+      size_t             index_;
+      RadiographyLayer*  layer_;
+
+    public:
+      LayerAccessor(RadiographyScene& scene,
+                    size_t index);
+
+      LayerAccessor(RadiographyScene& scene,
+                    double x,
+                    double y);
+
+      void Invalidate()
+      {
+        layer_ = NULL;
+      }
+
+      bool IsValid() const
+      {
+        return layer_ != NULL;
+      }
+
+      RadiographyScene& GetScene() const;
+
+      size_t GetIndex() const;
+
+      RadiographyLayer& GetLayer() const;
+    };
+
+
+  protected:
+    typedef std::map<size_t, RadiographyLayer*>  Layers;
+
+    size_t  nextLayerIndex_;
+    bool    hasWindowing_;
+    float   windowingCenter_;
+    float   windowingWidth_;
+    Layers  layers_;
+
+  public:
+    RadiographyLayer& RegisterLayer(RadiographyLayer* layer);
+
+  protected:
+    virtual void _RegisterLayer(RadiographyLayer* layer);
+    virtual void _OnLayerRemoved() {}
+
+    void SetLayerIndex(RadiographyLayer* layer, size_t index)
+    {
+      layer->SetIndex(index);
+    }
+
+    virtual void OnTagsReceived(const Deprecated::OrthancApiClient::BinaryResponseReadyMessage& message);
+
+    virtual void OnFrameReceived(const Deprecated::OrthancApiClient::BinaryResponseReadyMessage& message);
+    
+    void OnDicomExported(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message);
+
+    void OnDicomWebReceived(const Deprecated::IWebService::HttpRequestSuccessMessage& message);
+
+    virtual void OnLayerEdited(const RadiographyLayer::LayerEditedMessage& message);
+
+  public:
+    RadiographyScene();
+    
+    virtual ~RadiographyScene();
+
+    virtual size_t GetApproximateMemoryUsage() const;
+
+    bool GetWindowing(float& center,
+                      float& width) const;
+
+    void GetWindowingWithDefault(float& center,
+                                 float& width) const;
+
+    virtual void SetWindowing(float center,
+                              float width);
+
+    RadiographyPhotometricDisplayMode GetPreferredPhotomotricDisplayMode() const;
+
+    RadiographyLayer& LoadText(const std::string& utf8,
+                               const std::string& font,
+                               unsigned int fontSize,
+                               uint8_t foreground,
+                               RadiographyLayer::Geometry* geometry,
+                               bool isCenterGeometry);
+
+    RadiographyLayer& UpdateText(size_t layerIndex,
+                                 const std::string& font,
+                                 const std::string& utf8,
+                                 unsigned int fontSize,
+                                 uint8_t foreground);
+
+    RadiographyLayer& LoadTestBlock(unsigned int width,
+                                    unsigned int height,
+                                    RadiographyLayer::Geometry* geometry);
+
+    RadiographyLayer& LoadMask(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners,
+                               const RadiographyDicomLayer& dicomLayer,
+                               float foreground,
+                               RadiographyLayer::Geometry* geometry);
+
+    RadiographyLayer& LoadAlphaBitmap(Orthanc::ImageAccessor* bitmap,  // takes ownership
+                                      RadiographyLayer::Geometry* geometry);
+
+    virtual RadiographyLayer& LoadDicomImage(Orthanc::ImageAccessor* dicomImage, // takes ownership
+                                             const std::string& instance,
+                                             unsigned int frame,
+                                             Deprecated::DicomFrameConverter* converter,  // takes ownership
+                                             RadiographyPhotometricDisplayMode preferredPhotometricDisplayMode,
+                                             RadiographyLayer::Geometry* geometry);
+
+    virtual RadiographyLayer& LoadDicomFrame(Deprecated::OrthancApiClient& orthanc,
+                                             const std::string& instance,
+                                             unsigned int frame,
+                                             bool httpCompression,
+                                             RadiographyLayer::Geometry* geometry); // pass NULL if you want default geometry
+
+    RadiographyLayer& LoadDicomWebFrame(Deprecated::IWebService& web);
+
+    void RemoveLayer(size_t layerIndex);
+
+    RadiographyLayer& GetLayer(size_t layerIndex);
+
+    const RadiographyLayer& GetLayer(size_t layerIndex) const;
+
+    template <typename TypeLayer>
+    TypeLayer* GetTypedLayer(size_t indexOfType = 0)
+    {
+      std::vector<size_t> layerIndexes;
+      GetLayersIndexes(layerIndexes);
+
+      size_t count = 0;
+
+      for (size_t i = 0; i < layerIndexes.size(); ++i)
+      {
+        TypeLayer* typedLayer = dynamic_cast<TypeLayer*>(layers_[layerIndexes[i]]);
+        if (typedLayer != NULL)
+        {
+          if (count == indexOfType)
+          {
+            return typedLayer;
+          }
+          count++;
+        }
+      }
+
+      return NULL;
+    }
+
+    void GetLayersIndexes(std::vector<size_t>& output) const;
+
+    virtual Extent2D GetSceneExtent(bool minimal) const;
+
+    virtual void Render(Orthanc::ImageAccessor& buffer,
+                        const AffineTransform2D& viewTransform,
+                        ImageInterpolation interpolation,
+                        bool applyWindowing) const;
+
+    bool LookupLayer(size_t& index /* out */,
+                     double x,
+                     double y) const;
+    
+    void DrawBorder(CairoContext& context,
+                    unsigned int layer,
+                    double zoom);
+
+    void GetRange(float& minValue,
+                  float& maxValue) const;
+
+    void ExportToScene2D(Scene2D& output) const;
+
+    // Export using PAM is faster than using PNG, but requires Orthanc
+    // core >= 1.4.3
+    void ExportDicom(Deprecated::OrthancApiClient& orthanc,
+                     const Orthanc::DicomMap& dicom,
+                     const std::string& parentOrthancId,
+                     double pixelSpacingX,
+                     double pixelSpacingY,
+                     bool invert,
+                     bool autoCrop,
+                     ImageInterpolation interpolation,
+                     bool usePam);
+
+    void ExportDicom(Deprecated::OrthancApiClient& orthanc,
+                     const Json::Value& dicomTags,
+                     const std::string& parentOrthancId,
+                     double pixelSpacingX,
+                     double pixelSpacingY,
+                     bool invert,
+                     bool autoCrop,
+                     ImageInterpolation interpolation,
+                     bool usePam);
+
+    void ExportToCreateDicomRequest(Json::Value& createDicomRequestContent,
+                                    const Json::Value& dicomTags,
+                                    const std::string& parentOrthancId,
+                                    double pixelSpacingX,
+                                    double pixelSpacingY,
+                                    bool invert,
+                                    bool autoCrop,
+                                    ImageInterpolation interpolation,
+                                    bool usePam);
+
+    Orthanc::Image* ExportToCreateDicomRequestAndImage(Json::Value& createDicomRequestContent,
+                                                       const Json::Value& dicomTags,
+                                                       const std::string& parentOrthancId,
+                                                       double pixelSpacingX,
+                                                       double pixelSpacingY,
+                                                       bool invert,
+                                                       bool autoCrop,
+                                                       ImageInterpolation interpolation);
+
+    Orthanc::Image* ExportToImage(double pixelSpacingX,
+                                  double pixelSpacingY,
+                                  ImageInterpolation interpolation,
+                                  bool autoCrop,
+                                  bool applyWindowing)
+    {
+      return ExportToImage(pixelSpacingX, pixelSpacingY, interpolation, false, 0, autoCrop, applyWindowing);
+    }
+
+    Orthanc::Image* ExportToImage(double pixelSpacingX,
+                                  double pixelSpacingY,
+                                  ImageInterpolation interpolation,
+                                  bool invert,
+                                  int64_t maxValue /* for inversion */,
+                                  bool autoCrop,
+                                  bool applyWindowing);
+
+    void ExtractLayerFromRenderedScene(Orthanc::ImageAccessor& layer,
+                                       const Orthanc::ImageAccessor& renderedScene,
+                                       size_t layerIndex,
+                                       bool isCropped,
+                                       ImageInterpolation interpolation);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographySceneCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,62 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographySceneCommand.h"
+
+
+namespace OrthancStone
+{
+  RadiographySceneCommand::RadiographySceneCommand(RadiographyScene& scene,
+                                                   size_t layer) :
+    scene_(scene),
+    layer_(layer)
+  {
+  }
+
+  
+  RadiographySceneCommand::RadiographySceneCommand(const RadiographyScene::LayerAccessor& accessor) :
+    scene_(accessor.GetScene()),
+    layer_(accessor.GetIndex())
+  {
+  }
+
+  
+  void RadiographySceneCommand::Undo() const
+  {
+    RadiographyScene::LayerAccessor accessor(scene_, layer_);
+
+    if (accessor.IsValid())
+    {
+      UndoInternal(accessor.GetLayer());
+    }
+  }
+
+  
+  void RadiographySceneCommand::Redo() const
+  {
+    RadiographyScene::LayerAccessor accessor(scene_, layer_);
+
+    if (accessor.IsValid())
+    {
+      RedoInternal(accessor.GetLayer());
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographySceneCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,50 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/UndoRedoStack.h"
+#include "RadiographyScene.h"
+
+namespace OrthancStone
+{
+  class RadiographySceneCommand : public UndoRedoStack::ICommand
+  {
+  private:
+    RadiographyScene&  scene_;
+    size_t             layer_;
+
+  protected:
+    virtual void UndoInternal(RadiographyLayer& layer) const = 0;
+
+    virtual void RedoInternal(RadiographyLayer& layer) const = 0;
+
+  public:
+    RadiographySceneCommand(RadiographyScene& scene,
+                            size_t layer);
+
+    RadiographySceneCommand(const RadiographyScene::LayerAccessor& accessor);
+
+    virtual void Undo() const;
+
+    virtual void Redo() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographySceneReader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,189 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographySceneReader.h"
+
+#include "../Deprecated/Toolbox/DicomFrameConverter.h"
+
+#include <Images/FontRegistry.h>
+#include <Images/PngReader.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+namespace OrthancStone
+{
+
+  void RadiographySceneBuilder::Read(const Json::Value& input, Orthanc::ImageAccessor* dicomImage /* takes ownership */,
+                                     Deprecated::DicomFrameConverter* dicomFrameConverter  /* takes ownership */,
+                                     RadiographyPhotometricDisplayMode preferredPhotometricDisplayMode
+                                     )
+  {
+    dicomImage_.reset(dicomImage);
+    dicomFrameConverter_.reset(dicomFrameConverter);
+    preferredPhotometricDisplayMode_ = preferredPhotometricDisplayMode;
+    Read(input);
+  }
+
+  RadiographyDicomLayer* RadiographySceneBuilder::LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry)
+  {
+    return dynamic_cast<RadiographyDicomLayer*>(&(scene_.LoadDicomImage(dicomImage_.release(), instanceId, frame, dicomFrameConverter_.release(), preferredPhotometricDisplayMode_, geometry)));
+  }
+
+
+  RadiographyDicomLayer* RadiographySceneReader::LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry)
+  {
+    return dynamic_cast<RadiographyDicomLayer*>(&(scene_.LoadDicomFrame(orthancApiClient_, instanceId, frame, false, geometry)));
+  }
+
+  RadiographyDicomLayer* RadiographySceneGeometryReader::LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry)
+  {
+    std::unique_ptr<RadiographyPlaceholderLayer>  layer(new RadiographyPlaceholderLayer(scene_));
+    layer->SetGeometry(*geometry);
+    layer->SetSize(dicomImageWidth_, dicomImageHeight_);
+    scene_.RegisterLayer(layer.get());
+
+    return layer.release();
+  }
+
+  void RadiographySceneBuilder::Read(const Json::Value& input)
+  {
+    unsigned int version = input["version"].asUInt();
+
+    if (version != 1)
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+
+    if (input.isMember("hasWindowing") && input["hasWindowing"].asBool())
+    {
+      scene_.SetWindowing(input["windowCenter"].asFloat(), input["windowWidth"].asFloat());
+    }
+
+    RadiographyDicomLayer* dicomLayer = NULL;
+    for(size_t layerIndex = 0; layerIndex < input["layers"].size(); layerIndex++)
+    {
+      const Json::Value& jsonLayer = input["layers"][(int)layerIndex];
+      RadiographyLayer::Geometry geometry;
+
+      if (jsonLayer["type"].asString() == "dicom")
+      {
+        ReadLayerGeometry(geometry, jsonLayer);
+        dicomLayer = LoadDicom(jsonLayer["instanceId"].asString(), jsonLayer["frame"].asUInt(), &geometry);
+      }
+      else if (jsonLayer["type"].asString() == "mask")
+      {
+        if (dicomLayer == NULL)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); // we always assumed the dicom layer was read before the mask
+        }
+        ReadLayerGeometry(geometry, jsonLayer);
+
+        float foreground = jsonLayer["foreground"].asFloat();
+        std::vector<Orthanc::ImageProcessing::ImagePoint> corners;
+        for (size_t i = 0; i < jsonLayer["corners"].size(); i++)
+        {
+          Orthanc::ImageProcessing::ImagePoint corner(jsonLayer["corners"][(int)i]["x"].asInt(),
+              jsonLayer["corners"][(int)i]["y"].asInt());
+          corners.push_back(corner);
+        }
+
+        scene_.LoadMask(corners, *dicomLayer, foreground, &geometry);
+      }
+      else if (jsonLayer["type"].asString() == "text")
+      {
+        ReadLayerGeometry(geometry, jsonLayer);
+        scene_.LoadText(jsonLayer["text"].asString(), jsonLayer["font"].asString(), jsonLayer["fontSize"].asUInt(), static_cast<uint8_t>(jsonLayer["foreground"].asUInt()), &geometry, false);
+      }
+      else if (jsonLayer["type"].asString() == "alpha")
+      {
+        ReadLayerGeometry(geometry, jsonLayer);
+
+        const std::string& pngContentBase64 = jsonLayer["content"].asString();
+        std::string pngContent;
+        std::string mimeType;
+        Orthanc::Toolbox::DecodeDataUriScheme(mimeType, pngContent, pngContentBase64);
+
+        std::unique_ptr<Orthanc::ImageAccessor>  image;
+        if (mimeType == "image/png")
+        {
+          image.reset(new Orthanc::PngReader());
+          dynamic_cast<Orthanc::PngReader*>(image.get())->ReadFromMemory(pngContent);
+        }
+        else
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+
+        RadiographyAlphaLayer& layer = dynamic_cast<RadiographyAlphaLayer&>(scene_.LoadAlphaBitmap(image.release(), &geometry));
+
+        if (!jsonLayer["isUsingWindowing"].asBool())
+        {
+          layer.SetForegroundValue((float)(jsonLayer["foreground"].asDouble()));
+        }
+      }
+      else
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+
+
+
+
+  void RadiographySceneBuilder::ReadDicomLayerGeometry(RadiographyLayer::Geometry& geometry, const Json::Value& input)
+  {
+    for(size_t layerIndex = 0; layerIndex < input["layers"].size(); layerIndex++)
+    {
+      const Json::Value& jsonLayer = input["layers"][(int)layerIndex];
+      if (jsonLayer["type"].asString() == "dicom")
+      {
+        ReadLayerGeometry(geometry, jsonLayer);
+        return;
+      }
+    }
+  }
+
+  void RadiographySceneBuilder::ReadLayerGeometry(RadiographyLayer::Geometry& geometry, const Json::Value& jsonLayer)
+  {
+    {// crop
+      unsigned int x, y, width, height;
+      if (jsonLayer["crop"]["hasCrop"].asBool())
+      {
+        x = jsonLayer["crop"]["x"].asUInt();
+        y = jsonLayer["crop"]["y"].asUInt();
+        width = jsonLayer["crop"]["width"].asUInt();
+        height = jsonLayer["crop"]["height"].asUInt();
+        geometry.SetCrop(x, y, width, height);
+      }
+    }
+
+    geometry.SetAngle(jsonLayer["angle"].asDouble());
+    geometry.SetResizeable(jsonLayer["isResizable"].asBool());
+    geometry.SetPan(jsonLayer["pan"]["x"].asDouble(), jsonLayer["pan"]["y"].asDouble());
+    geometry.SetPixelSpacing(jsonLayer["pixelSpacing"]["x"].asDouble(), jsonLayer["pixelSpacing"]["y"].asDouble());
+
+    // these fields were introduced later -> they might not exist
+    if (jsonLayer.isMember("flipVertical"))
+    {
+      geometry.SetFlipVertical(jsonLayer["flipVertical"].asBool());
+    }
+    if (jsonLayer.isMember("flipHorizontal"))
+    {
+      geometry.SetFlipHorizontal(jsonLayer["flipHorizontal"].asBool());
+    }
+
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographySceneReader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,113 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "RadiographyScene.h"
+#include "RadiographyAlphaLayer.h"
+#include "RadiographyDicomLayer.h"
+#include "RadiographyMaskLayer.h"
+#include "RadiographyTextLayer.h"
+#include "../Deprecated/Toolbox/OrthancApiClient.h"
+
+#include <json/value.h>
+#include <Images/FontRegistry.h>
+
+namespace OrthancStone
+{
+  // a layer containing only the geometry of a DICOM layer (bit hacky !)
+  class RadiographyPlaceholderLayer : public RadiographyDicomLayer
+  {
+  public:
+    RadiographyPlaceholderLayer(const RadiographyScene& scene) :
+      RadiographyDicomLayer(scene)
+    {
+    }
+
+  };
+
+
+  // HACK: I had to introduce this builder class in order to be able to recreate a RadiographyScene
+  // from a serialized scene that is passed to web-workers.
+  // It needs some architecturing...
+  class RadiographySceneBuilder : public boost::noncopyable
+  {
+  protected:
+    RadiographyScene&                               scene_;
+    std::unique_ptr<Orthanc::ImageAccessor>           dicomImage_;
+    std::unique_ptr<Deprecated::DicomFrameConverter>  dicomFrameConverter_;
+    RadiographyPhotometricDisplayMode               preferredPhotometricDisplayMode_;
+
+  public:
+    RadiographySceneBuilder(RadiographyScene& scene) :
+      scene_(scene)
+    {
+    }
+
+    void Read(const Json::Value& input);
+    void Read(const Json::Value& input,
+              Orthanc::ImageAccessor* dicomImage, // takes ownership
+              Deprecated::DicomFrameConverter* dicomFrameConverter, // takes ownership
+              RadiographyPhotometricDisplayMode preferredPhotometricDisplayMode
+              );
+
+    static void ReadLayerGeometry(RadiographyLayer::Geometry& geometry, const Json::Value& input);
+    static void ReadDicomLayerGeometry(RadiographyLayer::Geometry& geometry, const Json::Value& input);
+
+  protected:
+    virtual RadiographyDicomLayer* LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry);
+
+  };
+
+
+  class RadiographySceneReader : public RadiographySceneBuilder
+  {
+    Deprecated::OrthancApiClient&             orthancApiClient_;
+
+  public:
+    RadiographySceneReader(RadiographyScene& scene, Deprecated::OrthancApiClient& orthancApiClient) :
+      RadiographySceneBuilder(scene),
+      orthancApiClient_(orthancApiClient)
+    {
+    }
+
+  protected:
+    virtual RadiographyDicomLayer*  LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry);
+  };
+
+  // reads the whole scene but the DICOM image such that we have the full geometry
+  class RadiographySceneGeometryReader : public RadiographySceneBuilder
+  {
+    unsigned int dicomImageWidth_;
+    unsigned int dicomImageHeight_;
+
+  public:
+    RadiographySceneGeometryReader(RadiographyScene& scene, unsigned int dicomImageWidth, unsigned int dicomImageHeight) :
+      RadiographySceneBuilder(scene),
+      dicomImageWidth_(dicomImageWidth),
+      dicomImageHeight_(dicomImageHeight)
+    {
+    }
+
+  protected:
+    virtual RadiographyDicomLayer*  LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographySceneWriter.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,168 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographySceneWriter.h"
+
+#include <OrthancException.h>
+#include <Images/PngWriter.h>
+#include <Toolbox.h>
+
+namespace OrthancStone
+{
+  void RadiographySceneWriter::Write(Json::Value& output, const RadiographyScene& scene)
+  {
+    output["version"] = 1;
+    float windowCenter, windowWidth;
+    bool hasWindowing = scene.GetWindowing(windowCenter, windowWidth);
+    output["hasWindowing"] = hasWindowing;
+    if (hasWindowing)
+    {
+      output["windowCenter"] = windowCenter;
+      output["windowWidth"] = windowWidth;
+    }
+    output["layers"] = Json::arrayValue;
+
+    std::vector<size_t> layersIndexes;
+    scene.GetLayersIndexes(layersIndexes);
+
+    for (std::vector<size_t>::iterator itLayerIndex = layersIndexes.begin(); itLayerIndex < layersIndexes.end(); itLayerIndex++)
+    {
+      Json::Value layer;
+      WriteLayer(layer, scene.GetLayer(*itLayerIndex));
+      output["layers"].append(layer);
+    }
+  }
+
+  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyDicomLayer& layer)
+  {
+    output["type"] = "dicom";
+    output["instanceId"] = layer.GetInstanceId();
+    output["frame"] = layer.GetFrame();
+  }
+
+  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyTextLayer& layer)
+  {
+    output["type"] = "text";
+    output["text"] = layer.GetText();
+    output["font"] = layer.GetFont();
+    output["fontSize"] = layer.GetFontSize();
+    output["foreground"] = layer.GetForegroundGreyLevel();
+  }
+
+  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyMaskLayer& layer)
+  {
+    output["type"] = "mask";
+    output["instanceId"] = layer.GetInstanceId(); // the dicom layer it's being linked to
+    output["foreground"] = layer.GetForeground();
+    output["corners"] = Json::arrayValue;
+    const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners = layer.GetCorners();
+    for (size_t i = 0; i < corners.size(); i++)
+    {
+      Json::Value corner;
+      corner["x"] = corners[i].GetX();
+      corner["y"] = corners[i].GetY();
+      output["corners"].append(corner);
+    }
+  }
+
+  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyAlphaLayer& layer)
+  {
+    output["type"] = "alpha";
+
+    //output["bitmap"] =
+    const Orthanc::ImageAccessor& alpha = layer.GetAlpha();
+
+    Orthanc::PngWriter pngWriter;
+    std::string pngContent;
+    std::string pngContentBase64;
+    pngWriter.WriteToMemory(pngContent, alpha);
+
+    Orthanc::Toolbox::EncodeDataUriScheme(pngContentBase64, "image/png", pngContent);
+    output["content"] = pngContentBase64;
+    output["foreground"] = layer.GetForegroundValue();
+  }
+
+  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyLayer& layer)
+  {
+    const RadiographyLayer::Geometry& geometry = layer.GetGeometry();
+
+    {// crop
+      Json::Value crop;
+      if (geometry.HasCrop())
+      {
+        unsigned int x, y, width, height;
+        geometry.GetCrop(x, y, width, height);
+        crop["hasCrop"] = true;
+        crop["x"] = x;
+        crop["y"] = y;
+        crop["width"] = width;
+        crop["height"] = height;
+      }
+      else
+      {
+        crop["hasCrop"] = false;
+      }
+
+      output["crop"] = crop;
+    }
+
+    output["angle"] = geometry.GetAngle();
+    output["isResizable"] = geometry.IsResizeable();
+
+    {// pan
+      Json::Value pan;
+      pan["x"] = geometry.GetPanX();
+      pan["y"] = geometry.GetPanY();
+      output["pan"] = pan;
+    }
+
+    {// pixelSpacing
+      Json::Value pan;
+      pan["x"] = geometry.GetPixelSpacingX();
+      pan["y"] = geometry.GetPixelSpacingY();
+      output["pixelSpacing"] = pan;
+    }
+
+    output["flipVertical"] = geometry.GetFlipVertical();
+    output["flipHorizontal"] = geometry.GetFlipHorizontal();
+
+    if (dynamic_cast<const RadiographyTextLayer*>(&layer) != NULL)
+    {
+      WriteLayer(output, dynamic_cast<const RadiographyTextLayer&>(layer));
+    }
+    else if (dynamic_cast<const RadiographyDicomLayer*>(&layer) != NULL)
+    {
+      WriteLayer(output, dynamic_cast<const RadiographyDicomLayer&>(layer));
+    }
+    else if (dynamic_cast<const RadiographyAlphaLayer*>(&layer) != NULL)
+    {
+      WriteLayer(output, dynamic_cast<const RadiographyAlphaLayer&>(layer));
+    }
+    else if (dynamic_cast<const RadiographyMaskLayer*>(&layer) != NULL)
+    {
+      WriteLayer(output, dynamic_cast<const RadiographyMaskLayer&>(layer));
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographySceneWriter.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "RadiographyScene.h"
+#include "RadiographyAlphaLayer.h"
+#include "RadiographyDicomLayer.h"
+#include "RadiographyTextLayer.h"
+#include "RadiographyMaskLayer.h"
+#include <json/value.h>
+
+namespace OrthancStone
+{
+  class RadiographyScene;
+
+  class RadiographySceneWriter : public boost::noncopyable
+  {
+
+  public:
+    RadiographySceneWriter()
+    {
+    }
+
+    void Write(Json::Value& output, const RadiographyScene& scene);
+
+  private:
+    void WriteLayer(Json::Value& output, const RadiographyLayer& layer);
+    void WriteLayer(Json::Value& output, const RadiographyDicomLayer& layer);
+    void WriteLayer(Json::Value& output, const RadiographyTextLayer& layer);
+    void WriteLayer(Json::Value& output, const RadiographyAlphaLayer& layer);
+    void WriteLayer(Json::Value& output, const RadiographyMaskLayer& layer);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyTextLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,54 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "RadiographyTextLayer.h"
+
+#include "RadiographyScene.h"
+#include "../Toolbox/TextRenderer.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  std::map<std::string, Orthanc::EmbeddedResources::FileResourceId> RadiographyTextLayer::fonts_;
+
+  void RadiographyTextLayer::SetText(const std::string& utf8,
+                                     const std::string& font,
+                                     unsigned int fontSize,
+                                     uint8_t foregroundGreyLevel)
+  {
+    if (fonts_.find(font) == fonts_.end())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, "The font has not been registered");
+    }
+
+    text_ = utf8;
+    font_ = font;
+    fontSize_ = fontSize;
+    foregroundGreyLevel_ = foregroundGreyLevel;
+
+    SetAlpha(TextRenderer::Render(fonts_[font_],
+                                  fontSize_,
+                                  text_));
+
+    SetForegroundValue(foregroundGreyLevel * 256.0f);
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyTextLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,72 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "RadiographyAlphaLayer.h"
+
+namespace OrthancStone
+{
+  class RadiographyScene;
+
+  class RadiographyTextLayer : public RadiographyAlphaLayer
+  {
+  private:
+    std::string                 text_;
+    std::string                 font_;
+    unsigned int                fontSize_;
+    uint8_t                     foregroundGreyLevel_;
+
+    static std::map<std::string, Orthanc::EmbeddedResources::FileResourceId>  fonts_;
+  public:
+    RadiographyTextLayer(const RadiographyScene& scene) :
+      RadiographyAlphaLayer(scene)
+    {
+    }
+
+    void SetText(const std::string& utf8, const std::string& font, unsigned int fontSize, uint8_t foregroundGreyLevel);
+
+    const std::string& GetText() const
+    {
+      return text_;
+    }
+
+    const std::string& GetFont() const
+    {
+      return font_;
+    }
+
+    unsigned int GetFontSize() const
+    {
+      return fontSize_;
+    }
+
+    uint8_t GetForegroundGreyLevel() const
+    {
+      return foregroundGreyLevel_;
+    }
+
+    static void RegisterFont(const std::string& name, Orthanc::EmbeddedResources::FileResourceId fontResourceId)
+    {
+      fonts_[name] = fontResourceId;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyWidget.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,284 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyWidget.h"
+
+#include <OrthancException.h>
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+
+#include "RadiographyMaskLayer.h"
+
+namespace OrthancStone
+{
+
+  bool RadiographyWidget::IsInvertedInternal() const
+  {
+    // MONOCHROME1 images must be inverted and the user can invert the 
+    // image, too -> XOR the two
+    return (scene_->GetPreferredPhotomotricDisplayMode() == 
+            RadiographyPhotometricDisplayMode_Monochrome1) ^ invert_; 
+  }
+
+  void RadiographyWidget::RenderBackground(
+    Orthanc::ImageAccessor& image, float minValue, float maxValue)
+  {
+    // wipe background before rendering
+    float backgroundValue = minValue;
+
+    switch (scene_->GetPreferredPhotomotricDisplayMode())
+    {
+    case RadiographyPhotometricDisplayMode_Monochrome1:
+    case RadiographyPhotometricDisplayMode_Default:
+      if (IsInvertedInternal())
+        backgroundValue = maxValue;
+      else
+        backgroundValue = minValue;
+      break;
+    case RadiographyPhotometricDisplayMode_Monochrome2:
+      if (IsInvertedInternal())
+        backgroundValue = minValue;
+      else
+        backgroundValue = maxValue;
+      break;
+    default:
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+
+    Orthanc::ImageProcessing::Set(image, static_cast<int64_t>(backgroundValue));
+  }
+
+  bool RadiographyWidget::RenderInternal(unsigned int width,
+                                         unsigned int height,
+                                         ImageInterpolation interpolation)
+  {
+    if (floatBuffer_.get() == NULL ||
+        floatBuffer_->GetWidth() != width ||
+        floatBuffer_->GetHeight() != height)
+    {
+      floatBuffer_.reset(new Orthanc::Image(
+        Orthanc::PixelFormat_Float32, width, height, false));
+
+      if (floatBuffer_.get() == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotEnoughMemory, "RadiographyWidget::RenderInternal: unable to allocate float buffer");
+      }
+    }
+
+    if (cairoBuffer_.get() == NULL ||
+        cairoBuffer_->GetWidth() != width ||
+        cairoBuffer_->GetHeight() != height)
+    {
+      cairoBuffer_.reset(new CairoSurface(width, height, false /* no alpha */));
+
+      if (cairoBuffer_.get() == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotEnoughMemory, "RadiographyWidget::RenderInternal: unable to allocate cairo buffer");
+      }
+    }
+
+    RenderBackground(*floatBuffer_, 0.0, 65535.0);
+
+    scene_->Render(*floatBuffer_, GetView().GetMatrix(), interpolation, true);
+
+    // Conversion from Float32 to BGRA32 (cairo). Very similar to
+    // GrayscaleFrameRenderer => TODO MERGE?
+    Orthanc::ImageAccessor target;
+    cairoBuffer_->GetWriteableAccessor(target);
+
+    bool invert = IsInvertedInternal();
+
+    for (unsigned int y = 0; y < height; y++)
+    {
+      const float* p = reinterpret_cast<const float*>(floatBuffer_->GetConstRow(y));
+      uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
+
+      for (unsigned int x = 0; x < width; x++, p++, q += 4)
+      {
+        uint8_t v = 0;
+        if (*p >= 65535.0)
+        {
+          v = 255;
+        }
+        else if (*p <= 0.0)
+        {
+          v = 0;
+        }
+        else
+        {
+          v = static_cast<uint8_t>(*p / 256.0);
+        }
+
+        if (invert)
+        {
+          v = 255 - v;
+        }
+
+        q[0] = v;
+        q[1] = v;
+        q[2] = v;
+        q[3] = 255;
+      }
+    }
+
+    return true;
+  }
+
+
+  bool RadiographyWidget::RenderScene(CairoContext& context,
+                                      const Deprecated::ViewportGeometry& view)
+  {
+    cairo_t* cr = context.GetObject();
+
+    if (RenderInternal(context.GetWidth(), context.GetHeight(), interpolation_))
+    {
+      // https://www.cairographics.org/FAQ/#paint_from_a_surface
+      cairo_save(cr);
+      cairo_identity_matrix(cr);
+      cairo_set_source_surface(cr, cairoBuffer_->GetObject(), 0, 0);
+      cairo_paint(cr);
+      cairo_restore(cr);
+    }
+    else
+    {
+      // https://www.cairographics.org/FAQ/#clear_a_surface
+      context.SetSourceColor(0, 0, 0);
+      cairo_paint(cr);
+    }
+
+    if (hasSelection_)
+    {
+      scene_->DrawBorder(
+        context, static_cast<unsigned int>(selectedLayer_), view.GetZoom());
+    }
+
+    return true;
+  }
+
+
+  RadiographyWidget::RadiographyWidget(boost::shared_ptr<RadiographyScene> scene,
+                                       const std::string& name) :
+    WorldSceneWidget(name),
+    invert_(false),
+    interpolation_(ImageInterpolation_Nearest),
+    hasSelection_(false),
+    selectedLayer_(0)    // Dummy initialization
+  {
+    SetScene(scene);
+  }
+
+
+  void RadiographyWidget::Select(size_t layer)
+  {
+    hasSelection_ = true;
+    selectedLayer_ = layer;
+
+    NotifyContentChanged();
+    BroadcastMessage(SelectionChangedMessage(*this));
+  }
+
+  void RadiographyWidget::Unselect()
+  {
+    hasSelection_ = false;
+
+    NotifyContentChanged();
+    BroadcastMessage(SelectionChangedMessage(*this));
+  }
+
+  bool RadiographyWidget::LookupSelectedLayer(size_t& layer) const
+  {
+    if (hasSelection_)
+    {
+      layer = selectedLayer_;
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+  
+  void RadiographyWidget::OnGeometryChanged(const RadiographyScene::GeometryChangedMessage& message)
+  {
+//    LOG(INFO) << "Scene geometry has changed";
+    FitContent();
+  }
+
+  
+  void RadiographyWidget::OnContentChanged(const RadiographyScene::ContentChangedMessage& message)
+  {
+//    LOG(INFO) << "Scene content has changed";
+    NotifyContentChanged();
+  }
+
+  void RadiographyWidget::OnLayerRemoved(const RadiographyScene::LayerRemovedMessage& message)
+  {
+    size_t removedLayerIndex = message.GetLayerIndex();
+    if (hasSelection_ && selectedLayer_ == removedLayerIndex)
+    {
+      Unselect();
+    }
+    NotifyContentChanged();
+  }
+  
+  void RadiographyWidget::SetInvert(bool invert)
+  {
+    if (invert_ != invert)
+    {
+      invert_ = invert;
+      NotifyContentChanged();
+    }
+  }
+
+  
+    void RadiographyWidget::SwitchInvert()
+  {
+    invert_ = !invert_;
+    NotifyContentChanged();
+  }
+
+
+  void RadiographyWidget::SetInterpolation(ImageInterpolation interpolation)
+  {
+    if (interpolation_ != interpolation)
+    {
+      interpolation_ = interpolation;
+      NotifyContentChanged();
+    }
+  }
+
+  void RadiographyWidget::SetScene(boost::shared_ptr<RadiographyScene> scene)
+  {
+    scene_ = scene;
+
+    Register<RadiographyScene::GeometryChangedMessage>(*scene_, &RadiographyWidget::OnGeometryChanged);
+    Register<RadiographyScene::ContentChangedMessage>(*scene_, &RadiographyWidget::OnContentChanged);
+    Register<RadiographyScene::LayerRemovedMessage>(*scene_, &RadiographyWidget::OnLayerRemoved);
+
+    Unselect();
+
+    NotifyContentChanged();
+
+    // force redraw
+    FitContent();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,131 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Deprecated/Widgets/WorldSceneWidget.h"
+#include "../Messages/ObserverBase.h"
+#include "RadiographyScene.h"
+
+
+namespace OrthancStone
+{
+  class RadiographyMaskLayer;
+
+  class RadiographyWidget :
+    public Deprecated::WorldSceneWidget,
+    public ObserverBase<RadiographyWidget>,
+    public IObservable
+  {
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, SelectionChangedMessage, RadiographyWidget);
+
+  private:
+    boost::shared_ptr<RadiographyScene>    scene_;
+    std::unique_ptr<Orthanc::ImageAccessor>  floatBuffer_;
+    std::unique_ptr<CairoSurface>            cairoBuffer_;
+    bool                                   invert_;
+    ImageInterpolation                     interpolation_;
+    bool                                   hasSelection_;
+    size_t                                 selectedLayer_;
+
+    bool RenderInternal(unsigned int width,
+                        unsigned int height,
+                        ImageInterpolation interpolation);
+
+  protected:
+    virtual Extent2D GetSceneExtent()
+    {
+      return scene_->GetSceneExtent(false);
+    }
+
+    virtual bool RenderScene(CairoContext& context,
+                             const Deprecated::ViewportGeometry& view);
+
+    virtual void RenderBackground(Orthanc::ImageAccessor& image, float minValue, float maxValue);
+
+    bool IsInvertedInternal() const;
+
+  public:
+    RadiographyWidget(boost::shared_ptr<RadiographyScene> scene,  // TODO: check how we can avoid boost::shared_ptr here since we don't want them in the public API (app is keeping a boost::shared_ptr to this right now)
+                      const std::string& name);
+
+    RadiographyScene& GetScene() const
+    {
+      return *scene_;
+    }
+
+    void SetScene(boost::shared_ptr<RadiographyScene> scene);
+
+    void Select(size_t layer);
+
+    void Unselect();
+
+    template<typename LayerType> bool SelectLayerByType(size_t index = 0);
+
+    bool LookupSelectedLayer(size_t& layer) const;
+
+    void OnGeometryChanged(const RadiographyScene::GeometryChangedMessage& message);
+
+    void OnContentChanged(const RadiographyScene::ContentChangedMessage& message);
+
+    void OnLayerRemoved(const RadiographyScene::LayerRemovedMessage& message);
+
+    void SetInvert(bool invert);
+
+    void SwitchInvert();
+
+    bool IsInverted() const
+    {
+      return invert_;
+    }
+
+    void SetInterpolation(ImageInterpolation interpolation);
+
+    ImageInterpolation GetInterpolation() const
+    {
+      return interpolation_;
+    }
+  };
+
+  template<typename LayerType> bool RadiographyWidget::SelectLayerByType(size_t index)
+  {
+    std::vector<size_t> layerIndexes;
+    size_t count = 0;
+    scene_->GetLayersIndexes(layerIndexes);
+
+    for (size_t i = 0; i < layerIndexes.size(); ++i)
+    {
+      const LayerType* typedLayer = dynamic_cast<const LayerType*>(&(scene_->GetLayer(layerIndexes[i])));
+      if (typedLayer != NULL)
+      {
+        if (count == index)
+        {
+          Select(layerIndexes[i]);
+          return true;
+        }
+        count++;
+      }
+    }
+
+    return false;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyWindowingTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,192 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "RadiographyWindowingTracker.h"
+#include "RadiographyWidget.h"
+
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+  class RadiographyWindowingTracker::UndoRedoCommand : public UndoRedoStack::ICommand
+  {
+  private:
+    RadiographyScene&  scene_;
+    float              sourceCenter_;
+    float              sourceWidth_;
+    float              targetCenter_;
+    float              targetWidth_;
+
+  public:
+    UndoRedoCommand(const RadiographyWindowingTracker& tracker) :
+      scene_(tracker.scene_),
+      sourceCenter_(tracker.sourceCenter_),
+      sourceWidth_(tracker.sourceWidth_)
+    {
+      scene_.GetWindowingWithDefault(targetCenter_, targetWidth_);
+    }
+
+    virtual void Undo() const
+    {
+      scene_.SetWindowing(sourceCenter_, sourceWidth_);
+    }
+      
+    virtual void Redo() const
+    {
+      scene_.SetWindowing(targetCenter_, targetWidth_);
+    }
+  };
+
+
+  void RadiographyWindowingTracker::ComputeAxisEffect(int& deltaCenter,
+                                                      int& deltaWidth,
+                                                      int delta,
+                                                      Action actionNegative,
+                                                      Action actionPositive)
+  {
+    if (delta < 0)
+    {
+      switch (actionNegative)
+      {
+        case Action_IncreaseWidth:
+          deltaWidth = -delta;
+          break;
+
+        case Action_DecreaseWidth:
+          deltaWidth = delta;
+          break;
+
+        case Action_IncreaseCenter:
+          deltaCenter = -delta;
+          break;
+
+        case Action_DecreaseCenter:
+          deltaCenter = delta;
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+    else if (delta > 0)
+    {
+      switch (actionPositive)
+      {
+        case Action_IncreaseWidth:
+          deltaWidth = delta;
+          break;
+
+        case Action_DecreaseWidth:
+          deltaWidth = -delta;
+          break;
+
+        case Action_IncreaseCenter:
+          deltaCenter = delta;
+          break;
+
+        case Action_DecreaseCenter:
+          deltaCenter = -delta;
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+  }
+    
+    
+  RadiographyWindowingTracker::RadiographyWindowingTracker(UndoRedoStack& undoRedoStack,
+                                                           RadiographyScene& scene,
+                                                           RadiographyWidget& widget,
+                                                           ImageInterpolation interpolationDuringTracking,
+                                                           int x,
+                                                           int y,
+                                                           Action leftAction,
+                                                           Action rightAction,
+                                                           Action upAction,
+                                                           Action downAction) :
+    undoRedoStack_(undoRedoStack),
+    scene_(scene),
+    widget_(widget),
+    initialWidgetInterpolation_(widget.GetInterpolation()),
+    clickX_(x),
+    clickY_(y),
+    leftAction_(leftAction),
+    rightAction_(rightAction),
+    upAction_(upAction),
+    downAction_(downAction)
+  {
+    scene_.GetWindowingWithDefault(sourceCenter_, sourceWidth_);
+    widget_.SetInterpolation(interpolationDuringTracking);
+
+    float minValue, maxValue;
+    scene.GetRange(minValue, maxValue);
+
+    assert(minValue <= maxValue);
+
+    float delta = (maxValue - minValue);
+    strength_ = delta / 1000.0f; // 1px move will change the ww/wc by 0.1%
+
+    if (strength_ < 1)
+    {
+      strength_ = 1;
+    }
+  }
+
+
+  void RadiographyWindowingTracker::Render(CairoContext& context,
+                                           double zoom)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+  
+
+  void RadiographyWindowingTracker::MouseUp()
+  {
+    widget_.SetInterpolation(initialWidgetInterpolation_);
+    undoRedoStack_.Add(new UndoRedoCommand(*this));
+  }
+
+
+  void RadiographyWindowingTracker::MouseMove(int displayX,
+                                              int displayY,
+                                              double sceneX,
+                                              double sceneY,
+                                              const std::vector<Deprecated::Touch>& displayTouches,
+                                              const std::vector<Deprecated::Touch>& sceneTouches)
+  {
+    // This follows the behavior of the Osimis Web viewer:
+    // https://bitbucket.org/osimis/osimis-webviewer-plugin/src/master/frontend/src/app/viewport/image-plugins/windowing-viewport-tool.class.js
+
+    static const float SCALE = 1.0;
+      
+    int deltaCenter = 0;
+    int deltaWidth = 0;
+
+    ComputeAxisEffect(deltaCenter, deltaWidth, displayX - clickX_, leftAction_, rightAction_);
+    ComputeAxisEffect(deltaCenter, deltaWidth, displayY - clickY_, upAction_, downAction_);
+
+    float newCenter = sourceCenter_ + (deltaCenter / SCALE * strength_);
+    float newWidth = sourceWidth_ + (deltaWidth / SCALE * strength_);
+    scene_.SetWindowing(newCenter, newWidth);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Radiography/RadiographyWindowingTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,96 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/UndoRedoStack.h"
+#include "../Deprecated/Widgets/IWorldSceneMouseTracker.h"
+#include "RadiographyScene.h"
+
+namespace OrthancStone
+{
+
+  class RadiographyWidget;
+
+  class RadiographyWindowingTracker : public Deprecated::IWorldSceneMouseTracker
+  {   
+  public:
+    enum Action
+    {
+      Action_IncreaseWidth,
+      Action_DecreaseWidth,
+      Action_IncreaseCenter,
+      Action_DecreaseCenter
+    };
+    
+  private:
+    class UndoRedoCommand;
+
+    UndoRedoStack&      undoRedoStack_;
+    RadiographyScene&   scene_;
+    RadiographyWidget&  widget_;
+    ImageInterpolation  initialWidgetInterpolation_;
+    int                 clickX_;
+    int                 clickY_;
+    Action              leftAction_;
+    Action              rightAction_;
+    Action              upAction_;
+    Action              downAction_;
+    float               strength_;
+    float               sourceCenter_;
+    float               sourceWidth_;
+
+    static void ComputeAxisEffect(int& deltaCenter,
+                                  int& deltaWidth,
+                                  int delta,
+                                  Action actionNegative,
+                                  Action actionPositive);    
+    
+  public:
+    RadiographyWindowingTracker(UndoRedoStack& undoRedoStack,
+                                RadiographyScene& scene,
+                                RadiographyWidget& widget,
+                                ImageInterpolation interpolationDuringTracking,
+                                int x,
+                                int y,
+                                Action leftAction,
+                                Action rightAction,
+                                Action upAction,
+                                Action downAction);
+    
+    virtual bool HasRender() const
+    {
+      return false;
+    }
+
+    virtual void Render(CairoContext& context,
+                        double zoom);
+
+    virtual void MouseUp();
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double sceneX,
+                           double sceneY,
+                           const std::vector<Deprecated::Touch>& displayTouches,
+                           const std::vector<Deprecated::Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/SmartLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,285 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SmartLoader.h"
+
+#include "../StoneException.h"
+#include "Layers/DicomSeriesVolumeSlicer.h"
+#include "Layers/FrameRenderer.h"
+#include "Widgets/SliceViewerWidget.h"
+
+#include <Images/Image.h>
+#include <Logging.h>
+
+namespace Deprecated
+{
+  enum CachedSliceStatus
+  {
+    CachedSliceStatus_ScheduledToLoad,
+    CachedSliceStatus_GeometryLoaded,
+    CachedSliceStatus_ImageLoaded
+  };
+
+  class SmartLoader::CachedSlice : public IVolumeSlicer
+  {
+  public:
+    class RendererFactory : public LayerReadyMessage::IRendererFactory
+    {
+    private:
+      const CachedSlice&  that_;
+
+    public:
+      RendererFactory(const CachedSlice& that) :
+        that_(that)
+      {
+      }
+
+      virtual ILayerRenderer* CreateRenderer() const
+      {
+        bool isFull = (that_.effectiveQuality_ == SliceImageQuality_FullPng ||
+                       that_.effectiveQuality_ == SliceImageQuality_FullPam);
+
+        return FrameRenderer::CreateRenderer(*that_.image_, *that_.slice_, isFull);
+      }
+    };
+    
+    unsigned int                    sliceIndex_;
+    std::unique_ptr<Slice>            slice_;
+    boost::shared_ptr<Orthanc::ImageAccessor>   image_;
+    SliceImageQuality               effectiveQuality_;
+    CachedSliceStatus               status_;
+
+  public:
+    virtual ~CachedSlice()
+    {
+    }
+
+    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
+                           const OrthancStone::CoordinateSystem3D& viewportSlice)
+    {
+      // TODO: viewportSlice is not used !!!!
+      slice_->GetExtent(points);
+      return true;
+    }
+
+    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice)
+    {
+      // TODO: viewportSlice is not used !!!!
+
+      // it has already been loaded -> trigger the "layer ready" message immediately otherwise, do nothing now.  The LayerReady will be triggered
+      // once the VolumeSlicer is ready
+      if (status_ == CachedSliceStatus_ImageLoaded)
+      {
+        LOG(WARNING) << "ScheduleLayerCreation for CachedSlice (image is loaded): " << slice_->GetOrthancInstanceId();
+
+        RendererFactory factory(*this);   
+        BroadcastMessage(IVolumeSlicer::LayerReadyMessage(*this, factory, slice_->GetGeometry()));
+      }
+      else
+      {
+        LOG(WARNING) << "ScheduleLayerCreation for CachedSlice (image is not loaded yet): " << slice_->GetOrthancInstanceId();
+      }
+    }
+
+    CachedSlice* Clone() const
+    {
+      CachedSlice* output = new CachedSlice;
+      output->sliceIndex_ = sliceIndex_;
+      output->slice_.reset(slice_->Clone());
+      output->image_ = image_;
+      output->effectiveQuality_ = effectiveQuality_;
+      output->status_ = status_;
+
+      return output;
+    }
+
+  };
+
+
+  SmartLoader::SmartLoader(boost::shared_ptr<OrthancApiClient> orthancApiClient) :
+    imageQuality_(SliceImageQuality_FullPam),
+    orthancApiClient_(orthancApiClient)
+  {
+  }
+
+  void SmartLoader::SetFrameInWidget(SliceViewerWidget& sliceViewer, 
+                                     size_t layerIndex, 
+                                     const std::string& instanceId, 
+                                     unsigned int frame)
+  {
+    // TODO: check if this frame has already been loaded or is already being loaded.
+    // - if already loaded: create a "clone" that will emit the GeometryReady/ImageReady messages "immediately"
+    //   (it can not be immediate because Observers needs to register first and this is done after this method returns)
+    // - if currently loading, we need to return an object that will observe the existing VolumeSlicer and forward
+    //   the messages to its observables
+    // in both cases, we must be carefull about objects lifecycle !!!
+
+    boost::shared_ptr<IVolumeSlicer> layerSource;
+    std::string sliceKeyId = instanceId + ":" + boost::lexical_cast<std::string>(frame);
+    SmartLoader::CachedSlice* cachedSlice = NULL;
+
+    if (cachedSlices_.find(sliceKeyId) != cachedSlices_.end()) // && cachedSlices_[sliceKeyId]->status_ == CachedSliceStatus_Loaded)
+    {
+      layerSource.reset(cachedSlices_[sliceKeyId]->Clone());
+      cachedSlice = dynamic_cast<SmartLoader::CachedSlice*>(layerSource.get());
+    }
+    else
+    {
+      layerSource.reset(new DicomSeriesVolumeSlicer);
+      dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->Connect(orthancApiClient_);
+      dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->SetImageQuality(imageQuality_);
+      Register<IVolumeSlicer::GeometryReadyMessage>(*layerSource, &SmartLoader::OnLayerGeometryReady);
+      Register<DicomSeriesVolumeSlicer::FrameReadyMessage>(*layerSource, &SmartLoader::OnFrameReady);
+      Register<IVolumeSlicer::LayerReadyMessage>(*layerSource, &SmartLoader::OnLayerReady);
+      dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->LoadFrame(instanceId, frame);
+    }
+
+    // make sure that the widget registers the events before we trigger them
+    if (sliceViewer.GetLayerCount() == layerIndex)
+    {
+      sliceViewer.AddLayer(layerSource);
+    }
+    else if (sliceViewer.GetLayerCount() > layerIndex)
+    {
+      sliceViewer.ReplaceLayer(layerIndex, layerSource);
+    }
+    else
+    {
+      throw OrthancStone::StoneException(OrthancStone::ErrorCode_CanOnlyAddOneLayerAtATime);
+    }
+
+    if (cachedSlice != NULL)
+    {
+      BroadcastMessage(IVolumeSlicer::GeometryReadyMessage(*cachedSlice));
+    }
+
+  }
+
+  void SmartLoader::PreloadSlice(const std::string instanceId, 
+                                 unsigned int frame)
+  {
+    // TODO: reactivate -> need to be able to ScheduleLayerLoading in IVolumeSlicer without calling ScheduleLayerCreation
+    return;
+    // TODO: check if it is already in the cache
+
+
+
+    // create the slice in the cache with "empty" data
+    boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice);
+    cachedSlice->slice_.reset(new Slice(instanceId, frame));
+    cachedSlice->status_ = CachedSliceStatus_ScheduledToLoad;
+    std::string sliceKeyId = instanceId + ":" + boost::lexical_cast<std::string>(frame);
+
+    LOG(WARNING) << "Will preload: " << sliceKeyId;
+
+    cachedSlices_[sliceKeyId] = boost::shared_ptr<CachedSlice>(cachedSlice);
+
+    std::unique_ptr<IVolumeSlicer> layerSource(new DicomSeriesVolumeSlicer);
+    dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->Connect(orthancApiClient_);
+    dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->SetImageQuality(imageQuality_);
+    Register<IVolumeSlicer::GeometryReadyMessage>(*layerSource, &SmartLoader::OnLayerGeometryReady);
+    Register<DicomSeriesVolumeSlicer::FrameReadyMessage>(*layerSource, &SmartLoader::OnFrameReady);
+    Register<IVolumeSlicer::LayerReadyMessage>(*layerSource, &SmartLoader::OnLayerReady);
+    dynamic_cast<DicomSeriesVolumeSlicer*>(layerSource.get())->LoadFrame(instanceId, frame);
+
+    // keep a ref to the VolumeSlicer until the slice is fully loaded and saved to cache
+    preloadingInstances_[sliceKeyId] = boost::shared_ptr<IVolumeSlicer>(layerSource.release());
+  }
+
+
+//  void PreloadStudy(const std::string studyId)
+//  {
+//    /* TODO */
+//  }
+
+//  void PreloadSeries(const std::string seriesId)
+//  {
+//    /* TODO */
+//  }
+
+
+  void SmartLoader::OnLayerGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message)
+  {
+    const DicomSeriesVolumeSlicer& source =
+      dynamic_cast<const DicomSeriesVolumeSlicer&>(message.GetOrigin());
+
+    // save/replace the slice in cache
+    const Slice& slice = source.GetSlice(0); // TODO handle GetSliceCount()
+    std::string sliceKeyId = (slice.GetOrthancInstanceId() + ":" + 
+                              boost::lexical_cast<std::string>(slice.GetFrame()));
+
+    LOG(WARNING) << "Geometry ready: " << sliceKeyId;
+
+    boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice);
+    cachedSlice->slice_.reset(slice.Clone());
+    cachedSlice->effectiveQuality_ = source.GetImageQuality();
+    cachedSlice->status_ = CachedSliceStatus_GeometryLoaded;
+
+    cachedSlices_[sliceKeyId] = boost::shared_ptr<CachedSlice>(cachedSlice);
+
+    // re-emit original Layer message to observers
+    BroadcastMessage(message);
+  }
+
+
+  void SmartLoader::OnFrameReady(const DicomSeriesVolumeSlicer::FrameReadyMessage& message)
+  {
+    // save/replace the slice in cache
+    const Slice& slice = message.GetSlice();
+    std::string sliceKeyId = (slice.GetOrthancInstanceId() + ":" + 
+                              boost::lexical_cast<std::string>(slice.GetFrame()));
+
+    LOG(WARNING) << "Image ready: " << sliceKeyId;
+
+    boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice);
+    cachedSlice->image_.reset(Orthanc::Image::Clone(message.GetFrame()));
+    cachedSlice->effectiveQuality_ = message.GetImageQuality();
+    cachedSlice->slice_.reset(message.GetSlice().Clone());
+    cachedSlice->status_ = CachedSliceStatus_ImageLoaded;
+
+    cachedSlices_[sliceKeyId] = cachedSlice;
+
+    // re-emit original Layer message to observers
+    BroadcastMessage(message);
+  }
+
+
+  void SmartLoader::OnLayerReady(const IVolumeSlicer::LayerReadyMessage& message)
+  {
+    const DicomSeriesVolumeSlicer& source =
+      dynamic_cast<const DicomSeriesVolumeSlicer&>(message.GetOrigin());
+    
+    const Slice& slice = source.GetSlice(0); // TODO handle GetSliceCount() ?
+    std::string sliceKeyId = (slice.GetOrthancInstanceId() + ":" + 
+                              boost::lexical_cast<std::string>(slice.GetFrame()));
+
+    LOG(WARNING) << "Layer ready: " << sliceKeyId;
+
+    // remove the slice from the preloading slices now that it has been fully loaded and it is referenced in the cache
+    if (preloadingInstances_.find(sliceKeyId) != preloadingInstances_.end())
+    {
+      preloadingInstances_.erase(sliceKeyId);
+    }
+
+    // re-emit original Layer message to observers
+    BroadcastMessage(message);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/SmartLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,67 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+#include <map>
+
+#include "Layers/DicomSeriesVolumeSlicer.h"
+#include "../Messages/IObservable.h"
+#include "Toolbox/OrthancApiClient.h"
+
+namespace Deprecated
+{
+  class SliceViewerWidget;
+
+  class SmartLoader : public OrthancStone::IObservable, public OrthancStone::ObserverBase<SmartLoader>
+  {
+    class CachedSlice;
+
+  protected:
+    typedef std::map<std::string, boost::shared_ptr<SmartLoader::CachedSlice> > CachedSlices;
+    CachedSlices cachedSlices_;
+
+    typedef std::map<std::string, boost::shared_ptr<IVolumeSlicer> > PreloadingInstances;
+    PreloadingInstances preloadingInstances_;
+
+    SliceImageQuality     imageQuality_;
+    boost::shared_ptr<OrthancApiClient>  orthancApiClient_;
+
+  public:
+    SmartLoader(boost::shared_ptr<OrthancApiClient> orthancApiClient);  // TODO: add maxPreloadStorageSizeInBytes
+
+//    void PreloadStudy(const std::string studyId);
+//    void PreloadSeries(const std::string seriesId);
+    void PreloadSlice(const std::string instanceId, unsigned int frame);
+
+    void SetImageQuality(SliceImageQuality imageQuality) { imageQuality_ = imageQuality; }
+
+    void SetFrameInWidget(SliceViewerWidget& sliceViewer, size_t layerIndex, const std::string& instanceId, unsigned int frame);
+
+    void GetFirstInstanceIdForSeries(std::string& output, const std::string& seriesId);
+
+  private:
+    void OnLayerGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message);
+    void OnFrameReady(const DicomSeriesVolumeSlicer::FrameReadyMessage& message);
+    void OnLayerReady(const IVolumeSlicer::LayerReadyMessage& message);
+
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/BaseWebService.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,178 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "BaseWebService.h"
+
+#include "../../Messages/IObservable.h"
+#include "../../../Platforms/Generic/IOracleCommand.h"
+
+#include <OrthancException.h>
+
+#include <boost/shared_ptr.hpp>
+#include <algorithm>
+#include <Logging.h>
+
+namespace Deprecated
+{
+
+
+  class BaseWebService::BaseWebServicePayload : public Orthanc::IDynamicObject
+  {
+  private:
+    std::unique_ptr< MessageHandler<IWebService::HttpRequestSuccessMessage> >   userSuccessHandler_;
+    std::unique_ptr< MessageHandler<IWebService::HttpRequestErrorMessage> >     userFailureHandler_;
+    std::unique_ptr< Orthanc::IDynamicObject>                                   userPayload_;
+
+  public:
+    BaseWebServicePayload(MessageHandler<IWebService::HttpRequestSuccessMessage>* userSuccessHandler,
+                          MessageHandler<IWebService::HttpRequestErrorMessage>* userFailureHandler,
+                          Orthanc::IDynamicObject* userPayload) :
+      userSuccessHandler_(userSuccessHandler),
+      userFailureHandler_(userFailureHandler),
+      userPayload_(userPayload)
+    {
+    }
+
+    void HandleSuccess(const IWebService::HttpRequestSuccessMessage& message) const
+    {
+      if (userSuccessHandler_.get() != NULL)
+      {
+        // recreate a success message with the user payload
+        IWebService::HttpRequestSuccessMessage successMessage(message.GetUri(),
+                                                              message.GetAnswer(),
+                                                              message.GetAnswerSize(),
+                                                              message.GetAnswerHttpHeaders(),
+                                                              userPayload_.get());
+        userSuccessHandler_->Apply(successMessage);
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+
+    void HandleFailure(const IWebService::HttpRequestErrorMessage& message) const
+    {
+      if (userFailureHandler_.get() != NULL)
+      {
+        // recreate a failure message with the user payload
+        IWebService::HttpRequestErrorMessage failureMessage(message.GetUri(),
+                                                            message.GetHttpStatus(),
+                                                            userPayload_.get());
+
+        userFailureHandler_->Apply(failureMessage);
+      }
+    }
+
+  };
+
+
+  void BaseWebService::GetAsync(const std::string& uri,
+                                const HttpHeaders& headers,
+                                Orthanc::IDynamicObject* payload  /* takes ownership */,
+                                MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
+                                MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
+                                unsigned int timeoutInSeconds)
+  {
+    if (!cacheEnabled_ || cache_.find(uri) == cache_.end())
+    {
+      GetAsyncInternal(uri, headers,
+                       new BaseWebService::BaseWebServicePayload(successCallback, failureCallback, payload), // ownership is transfered
+                       new DeprecatedCallable<BaseWebService, IWebService::HttpRequestSuccessMessage>
+                       (GetSharedObserver(), &BaseWebService::CacheAndNotifyHttpSuccess),
+                       new DeprecatedCallable<BaseWebService, IWebService::HttpRequestErrorMessage>
+                       (GetSharedObserver(), &BaseWebService::NotifyHttpError),
+                       timeoutInSeconds);
+    }
+    else
+    {
+      // put the uri on top of the most recently accessed list
+      std::deque<std::string>::iterator it = std::find(orderedCacheKeys_.begin(), orderedCacheKeys_.end(), uri);
+      if (it != orderedCacheKeys_.end())
+      {
+        std::string uri = *it;
+        orderedCacheKeys_.erase(it);
+        orderedCacheKeys_.push_front(uri);
+      }
+
+      // create a command and "post" it to the Oracle so it is executed and commited "later"
+      NotifyHttpSuccessLater(cache_[uri], payload, successCallback);
+    }
+
+  }
+
+
+
+  void BaseWebService::NotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message)
+  {
+    if (message.HasPayload())
+    {
+      dynamic_cast<const BaseWebServicePayload&>(message.GetPayload()).HandleSuccess(message);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+  void BaseWebService::CacheAndNotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message)
+  {
+    if (cacheEnabled_)
+    {
+      while (cacheCurrentSize_ + message.GetAnswerSize() > cacheMaxSize_ && orderedCacheKeys_.size() > 0)
+      {
+        VLOG(1) << "BaseWebService: clearing cache: " << cacheCurrentSize_ << "/" << cacheMaxSize_ << "(" << message.GetAnswerSize() << ")";
+        const std::string& oldestUri = orderedCacheKeys_.back();
+        HttpCache::iterator it = cache_.find(oldestUri);
+        if (it != cache_.end())
+        {
+          cacheCurrentSize_ -= it->second->GetAnswerSize();
+          cache_.erase(it);
+        }
+        orderedCacheKeys_.pop_back();
+
+      }
+
+      boost::shared_ptr<CachedHttpRequestSuccessMessage> cachedMessage(new CachedHttpRequestSuccessMessage(message));
+      cache_[message.GetUri()] = cachedMessage;
+      orderedCacheKeys_.push_front(message.GetUri());
+      cacheCurrentSize_ += message.GetAnswerSize();
+    }
+
+    NotifyHttpSuccess(message);
+  }
+
+  void BaseWebService::NotifyHttpError(const IWebService::HttpRequestErrorMessage& message)
+  {
+    if (message.HasPayload())
+    {
+      dynamic_cast<const BaseWebServicePayload&>(message.GetPayload()).HandleFailure(message);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/BaseWebService.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,137 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IWebService.h"
+#include "../../Messages/ObserverBase.h"
+
+#include <string>
+#include <map>
+#include <deque>
+
+namespace Deprecated
+{
+  // This is an intermediate of IWebService that implements some caching on
+  // the HTTP GET requests
+  class BaseWebService : public IWebService, public OrthancStone::ObserverBase<BaseWebService>
+  {
+  public:
+    class CachedHttpRequestSuccessMessage
+    {
+    protected:
+      std::string                    uri_;
+      void*                          answer_;
+      size_t                         answerSize_;
+      IWebService::HttpHeaders       answerHeaders_;
+
+    public:
+      CachedHttpRequestSuccessMessage(const IWebService::HttpRequestSuccessMessage& message) :
+        uri_(message.GetUri()),
+        answerSize_(message.GetAnswerSize()),
+        answerHeaders_(message.GetAnswerHttpHeaders())
+      {
+        answer_ =  malloc(answerSize_);
+        memcpy(answer_, message.GetAnswer(), answerSize_);
+      }
+
+      ~CachedHttpRequestSuccessMessage()
+      {
+        free(answer_);
+      }
+
+      const std::string& GetUri() const
+      {
+        return uri_;
+      }
+
+      const void* GetAnswer() const
+      {
+        return answer_;
+      }
+
+      size_t GetAnswerSize() const
+      {
+        return answerSize_;
+      }
+
+      const IWebService::HttpHeaders&  GetAnswerHttpHeaders() const
+      {
+        return answerHeaders_;
+      }
+
+    };
+  protected:
+    class BaseWebServicePayload;
+
+    bool          cacheEnabled_;
+    size_t        cacheCurrentSize_;
+    size_t        cacheMaxSize_;
+
+    typedef std::map<std::string, boost::shared_ptr<CachedHttpRequestSuccessMessage> > HttpCache;
+    HttpCache cache_;
+    std::deque<std::string> orderedCacheKeys_;
+
+  public:
+    BaseWebService() :
+      cacheEnabled_(false),
+      cacheCurrentSize_(0),
+      cacheMaxSize_(100*1024*1024)
+    {
+    }
+
+    virtual ~BaseWebService()
+    {
+    }
+
+    virtual void EnableCache(bool enable)
+    {
+      cacheEnabled_ = enable;
+    }
+
+    virtual void GetAsync(const std::string& uri,
+                          const HttpHeaders& headers,
+                          Orthanc::IDynamicObject* payload  /* takes ownership */,
+                          MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
+                          MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                          unsigned int timeoutInSeconds = 60);
+
+  protected:
+    virtual void GetAsyncInternal(const std::string& uri,
+                          const HttpHeaders& headers,
+                          Orthanc::IDynamicObject* payload  /* takes ownership */,
+                          MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
+                          MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                          unsigned int timeoutInSeconds = 60) = 0;
+
+    virtual void NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedHttpMessage,
+                                        Orthanc::IDynamicObject* payload, // takes ownership
+                                        MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback) = 0;
+
+  private:
+    void NotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message);
+
+    void NotifyHttpError(const IWebService::HttpRequestErrorMessage& message);
+
+    void CacheAndNotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message);
+
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/DicomFrameConverter.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,282 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomFrameConverter.h"
+
+#include "../../Toolbox/LinearAlgebra.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+namespace Deprecated
+{
+  static const Orthanc::DicomTag IMAGE_TAGS[] =
+  {
+    Orthanc::DICOM_TAG_BITS_STORED,
+    Orthanc::DICOM_TAG_DOSE_GRID_SCALING,
+    Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION,
+    Orthanc::DICOM_TAG_PIXEL_REPRESENTATION,
+    Orthanc::DICOM_TAG_RESCALE_INTERCEPT,
+    Orthanc::DICOM_TAG_RESCALE_SLOPE,
+    Orthanc::DICOM_TAG_WINDOW_CENTER,
+    Orthanc::DICOM_TAG_WINDOW_WIDTH
+  };
+
+  
+  void DicomFrameConverter::SetDefaultParameters()
+  {
+    isSigned_ = true;
+    isColor_ = false;
+    hasRescale_ = false;
+    rescaleIntercept_ = 0;
+    rescaleSlope_ = 1;
+    hasDefaultWindow_ = false;
+    defaultWindowCenter_ = 128;
+    defaultWindowWidth_ = 256;
+    expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale16;
+  }
+
+
+  void DicomFrameConverter::ReadParameters(const Orthanc::DicomMap& dicom)
+  {
+    SetDefaultParameters();
+
+    OrthancStone::Vector c, w;
+    if (OrthancStone::LinearAlgebra::ParseVector(c, dicom, Orthanc::DICOM_TAG_WINDOW_CENTER) &&
+        OrthancStone::LinearAlgebra::ParseVector(w, dicom, Orthanc::DICOM_TAG_WINDOW_WIDTH) &&
+        c.size() > 0 && 
+        w.size() > 0)
+    {
+      hasDefaultWindow_ = true;
+      defaultWindowCenter_ = static_cast<float>(c[0]);
+      defaultWindowWidth_ = static_cast<float>(w[0]);
+    }
+
+    int32_t tmp;
+    if (!dicom.ParseInteger32(tmp, Orthanc::DICOM_TAG_PIXEL_REPRESENTATION))
+    {
+      // Type 1 tag, must be present
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    isSigned_ = (tmp == 1);
+
+    double doseGridScaling;
+    bool isRTDose = false;
+    
+    if (dicom.ParseDouble(rescaleIntercept_, Orthanc::DICOM_TAG_RESCALE_INTERCEPT) &&
+        dicom.ParseDouble(rescaleSlope_, Orthanc::DICOM_TAG_RESCALE_SLOPE))
+    {
+      hasRescale_ = true;
+    }
+    else if (dicom.ParseDouble(doseGridScaling, Orthanc::DICOM_TAG_DOSE_GRID_SCALING))
+    {
+      // This is for RT-DOSE
+      hasRescale_ = true;
+      isRTDose = true;
+      rescaleIntercept_ = 0;
+      rescaleSlope_ = doseGridScaling;
+
+      if (!dicom.ParseInteger32(tmp, Orthanc::DICOM_TAG_BITS_STORED))
+      {
+        // Type 1 tag, must be present
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+
+      switch (tmp)
+      {
+        case 16:
+          expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale16;
+          break;
+
+        case 32:
+          expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale32;
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+    }
+
+    std::string photometric;
+    if (dicom.LookupStringValue(photometric, Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION, false))
+    {
+      photometric = Orthanc::Toolbox::StripSpaces(photometric);
+    }
+    else
+    {
+      // Type 1 tag, must be present
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    photometric_ = Orthanc::StringToPhotometricInterpretation(photometric.c_str());
+    
+    isColor_ = (photometric != "MONOCHROME1" &&
+                photometric != "MONOCHROME2");
+
+    // TODO Add more checks, e.g. on the number of bytes per value
+    // (cf. DicomImageInformation.h in Orthanc)
+
+    if (!isRTDose)
+    {
+      if (isColor_)
+      {
+        expectedPixelFormat_ = Orthanc::PixelFormat_RGB24;
+      }
+      else if (isSigned_)
+      {
+        expectedPixelFormat_ = Orthanc::PixelFormat_SignedGrayscale16;
+      }
+      else
+      {
+        expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale16;
+      }
+    }
+  }
+
+  
+  void DicomFrameConverter::ReadParameters(const OrthancPlugins::IDicomDataset& dicom)
+  {
+    Orthanc::DicomMap converted;
+
+    for (size_t i = 0; i < sizeof(IMAGE_TAGS) / sizeof(Orthanc::DicomTag); i++)
+    {
+      OrthancPlugins::DicomTag tag(IMAGE_TAGS[i].GetGroup(), IMAGE_TAGS[i].GetElement());
+    
+      std::string value;
+      if (dicom.GetStringValue(value, tag))
+      {
+        converted.SetValue(IMAGE_TAGS[i], value, false);
+      }
+    }
+
+    ReadParameters(converted);
+  }
+    
+
+  void DicomFrameConverter::ConvertFrameInplace(std::unique_ptr<Orthanc::ImageAccessor>& source) const
+  {
+    assert(sizeof(float) == 4);
+
+    if (source.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (source->GetFormat() == GetExpectedPixelFormat() &&
+        source->GetFormat() == Orthanc::PixelFormat_RGB24)
+    {
+      // No conversion has to be done, check out (*)
+      return;
+    }
+    else
+    {
+      source.reset(ConvertFrame(*source));
+    }
+  }
+
+
+  Orthanc::ImageAccessor* DicomFrameConverter::ConvertFrame(const Orthanc::ImageAccessor& source) const
+  {
+    assert(sizeof(float) == 4);
+
+    Orthanc::PixelFormat sourceFormat = source.GetFormat();
+
+    if (sourceFormat != GetExpectedPixelFormat())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    if (sourceFormat == Orthanc::PixelFormat_RGB24)
+    {
+      // This is the case of a color image. No conversion has to be done (*)
+      std::unique_ptr<Orthanc::Image> converted(new Orthanc::Image(Orthanc::PixelFormat_RGB24, 
+                                                                 source.GetWidth(), 
+                                                                 source.GetHeight(),
+                                                                 false));
+      Orthanc::ImageProcessing::Copy(*converted, source);
+      return converted.release();
+    }
+    else
+    {
+      assert(sourceFormat == Orthanc::PixelFormat_Grayscale16 ||
+             sourceFormat == Orthanc::PixelFormat_Grayscale32 ||
+             sourceFormat == Orthanc::PixelFormat_SignedGrayscale16);
+
+      // This is the case of a grayscale frame. Convert it to Float32.
+      std::unique_ptr<Orthanc::Image> converted(new Orthanc::Image(Orthanc::PixelFormat_Float32, 
+                                                                 source.GetWidth(), 
+                                                                 source.GetHeight(),
+                                                                 false));
+      Orthanc::ImageProcessing::Convert(*converted, source);
+
+      // Correct rescale slope/intercept if need be
+      ApplyRescale(*converted, sourceFormat != Orthanc::PixelFormat_Grayscale32);
+      
+      return converted.release();
+    }
+  }
+
+
+  void DicomFrameConverter::ApplyRescale(Orthanc::ImageAccessor& image,
+                                         bool useDouble) const
+  {
+    if (image.GetFormat() != Orthanc::PixelFormat_Float32)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+    
+    if (hasRescale_)
+    {
+      for (unsigned int y = 0; y < image.GetHeight(); y++)
+      {
+        float* p = reinterpret_cast<float*>(image.GetRow(y));
+
+        if (useDouble)
+        {
+          // Slower, accurate implementation using double
+          for (unsigned int x = 0; x < image.GetWidth(); x++, p++)
+          {
+            double value = static_cast<double>(*p);
+            *p = static_cast<float>(value * rescaleSlope_ + rescaleIntercept_);
+          }
+        }
+        else
+        {
+          // Fast, approximate implementation using float
+          for (unsigned int x = 0; x < image.GetWidth(); x++, p++)
+          {
+            *p = (*p) * static_cast<float>(rescaleSlope_) + static_cast<float>(rescaleIntercept_);
+          }
+        }
+      }
+    }
+  }
+
+  
+  double DicomFrameConverter::Apply(double x) const
+  {
+    return x * rescaleSlope_ + rescaleIntercept_;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/DicomFrameConverter.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,170 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <IDicomDataset.h>
+#include <Compatibility.h>
+#include <DicomFormat/DicomMap.h>
+#include <Images/ImageAccessor.h>
+
+#include <memory>
+
+namespace Deprecated
+{
+  /**
+   * This class is responsible for converting the pixel format of a
+   * DICOM frame coming from Orthanc, into a pixel format that is
+   * suitable for Stone, given the relevant DICOM tags:
+   * - Color frames will stay in the RGB24 format.
+   * - Grayscale frames will be converted to the Float32 format.
+   **/
+  class DicomFrameConverter
+  {
+  private:
+    bool    isSigned_;
+    bool    isColor_;
+    bool    hasRescale_;
+    double  rescaleIntercept_;
+    double  rescaleSlope_;
+    bool    hasDefaultWindow_;
+    double  defaultWindowCenter_;
+    double  defaultWindowWidth_;
+    
+    Orthanc::PhotometricInterpretation  photometric_;
+    Orthanc::PixelFormat                expectedPixelFormat_;
+
+    void SetDefaultParameters();
+
+  public:
+    DicomFrameConverter()
+    {
+      SetDefaultParameters();
+    }
+
+    ~DicomFrameConverter()
+    {
+      // TODO: check whether this dtor is called or not
+      // An MSVC warning explains that declaring an
+      // std::unique_ptr with a forward-declared type
+      // prevents its dtor from being called. Does not
+      // seem an issue here (only POD types inside), but
+      // definitely something to keep an eye on.
+      (void)0;
+    }
+
+    // AM: this is required to serialize/deserialize it
+    DicomFrameConverter(
+        bool isSigned,
+        bool isColor,
+        bool hasRescale,
+        double rescaleIntercept,
+        double rescaleSlope,
+        bool hasDefaultWindow,
+        double defaultWindowCenter,
+        double defaultWindowWidth,
+        Orthanc::PhotometricInterpretation photometric,
+        Orthanc::PixelFormat expectedPixelFormat
+        ):
+      isSigned_(isSigned),
+      isColor_(isColor),
+      hasRescale_(hasRescale),
+      rescaleIntercept_(rescaleIntercept),
+      rescaleSlope_(rescaleSlope),
+      hasDefaultWindow_(hasDefaultWindow),
+      defaultWindowCenter_(defaultWindowCenter),
+      defaultWindowWidth_(defaultWindowWidth),
+      photometric_(photometric),
+      expectedPixelFormat_(expectedPixelFormat)
+    {}
+
+    void GetParameters(bool& isSigned,
+                       bool& isColor,
+                       bool& hasRescale,
+                       double& rescaleIntercept,
+                       double& rescaleSlope,
+                       bool& hasDefaultWindow,
+                       double& defaultWindowCenter,
+                       double& defaultWindowWidth,
+                       Orthanc::PhotometricInterpretation& photometric,
+                       Orthanc::PixelFormat& expectedPixelFormat) const
+    {
+      isSigned = isSigned_;
+      isColor = isColor_;
+      hasRescale = hasRescale_;
+      rescaleIntercept = rescaleIntercept_;
+      rescaleSlope = rescaleSlope_;
+      hasDefaultWindow = hasDefaultWindow_;
+      defaultWindowCenter = defaultWindowCenter_;
+      defaultWindowWidth = defaultWindowWidth_;
+      photometric = photometric_;
+      expectedPixelFormat = expectedPixelFormat_;
+    }
+
+    Orthanc::PixelFormat GetExpectedPixelFormat() const
+    {
+      return expectedPixelFormat_;
+    }
+
+    Orthanc::PhotometricInterpretation GetPhotometricInterpretation() const
+    {
+      return photometric_;
+    }
+
+    void ReadParameters(const Orthanc::DicomMap& dicom);
+
+    void ReadParameters(const OrthancPlugins::IDicomDataset& dicom);
+
+    bool HasDefaultWindow() const
+    {
+      return hasDefaultWindow_;
+    }
+    
+    double GetDefaultWindowCenter() const
+    {
+      return defaultWindowCenter_;
+    }
+    
+    double GetDefaultWindowWidth() const
+    {
+      return defaultWindowWidth_;
+    }
+
+    double GetRescaleIntercept() const
+    {
+      return rescaleIntercept_;
+    }
+
+    double GetRescaleSlope() const
+    {
+      return rescaleSlope_;
+    }
+
+    void ConvertFrameInplace(std::unique_ptr<Orthanc::ImageAccessor>& source) const;
+
+    Orthanc::ImageAccessor* ConvertFrame(const Orthanc::ImageAccessor& source) const;
+
+    void ApplyRescale(Orthanc::ImageAccessor& image,
+                      bool useDouble) const;
+
+    double Apply(double x) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/DownloadStack.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,196 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DownloadStack.h"
+
+#include <OrthancException.h>
+
+#include <cassert>
+
+namespace Deprecated
+{
+  bool DownloadStack::CheckInvariants() const
+  {
+    std::vector<bool> dequeued(nodes_.size(), true);
+
+    int i = firstNode_;
+    while (i != NIL)
+    {
+      const Node& node = nodes_[i];
+
+      dequeued[i] = false;
+
+      if (node.next_ != NIL &&
+          nodes_[node.next_].prev_ != i)
+      {
+        return false;
+      }
+
+      if (node.prev_ != NIL &&
+          nodes_[node.prev_].next_ != i)
+      {
+        return false;
+      }
+
+      i = nodes_[i].next_;
+    }
+
+    for (size_t i = 0; i < nodes_.size(); i++)
+    {
+      if (nodes_[i].dequeued_ != dequeued[i])
+      {
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+
+  DownloadStack::DownloadStack(unsigned int size)
+  {
+    nodes_.resize(size);
+
+    if (size == 0)
+    {
+      firstNode_ = NIL;
+    }
+    else
+    {
+      for (size_t i = 0; i < size; i++)
+      {
+        nodes_[i].prev_ = static_cast<int>(i - 1);
+        nodes_[i].next_ = static_cast<int>(i + 1);
+        nodes_[i].dequeued_ = false;
+      }
+
+      nodes_.front().prev_ = NIL;
+      nodes_.back().next_ = NIL;
+      firstNode_ = 0;
+    }
+
+    assert(CheckInvariants());
+  }
+
+
+  DownloadStack::~DownloadStack()
+  {
+    assert(CheckInvariants());    
+  }
+
+
+  bool DownloadStack::Pop(unsigned int& value)
+  {
+    assert(CheckInvariants());
+
+    if (firstNode_ == NIL)
+    {
+      for (size_t i = 0; i < nodes_.size(); i++)
+      {
+        assert(nodes_[i].dequeued_);
+      }
+
+      return false;
+    }
+    else
+    {
+      assert(firstNode_ >= 0 && firstNode_ < static_cast<int>(nodes_.size()));
+      value = firstNode_;
+
+      Node& node = nodes_[firstNode_];
+      assert(node.prev_ == NIL);
+      assert(!node.dequeued_);
+
+      node.dequeued_ = true;
+      firstNode_ = node.next_;
+
+      if (firstNode_ != NIL)
+      {
+        nodes_[firstNode_].prev_ = NIL;
+      }
+
+      return true;
+    }
+  }
+
+
+  void DownloadStack::SetTopNodeInternal(unsigned int value)
+  {
+    assert(CheckInvariants());
+
+    Node& node = nodes_[value];
+
+    if (node.dequeued_)
+    {
+      // This node has already been processed by the download thread, nothing to do
+      return;
+    }
+
+    // Remove the node from the list
+    if (node.prev_ == NIL)
+    {
+      assert(firstNode_ == static_cast<int>(value));
+      
+      // This is already the top node in the list, nothing to do
+      return;
+    }
+
+    nodes_[node.prev_].next_ = node.next_;
+
+    if (node.next_ != NIL)
+    {
+      nodes_[node.next_].prev_ = node.prev_;
+    }
+
+    // Add back the node at the top of the list
+    assert(firstNode_ != NIL);
+
+    Node& old = nodes_[firstNode_];
+    assert(old.prev_ == NIL);
+    assert(!old.dequeued_);
+    node.prev_ = NIL;
+    node.next_ = firstNode_;
+    old.prev_ = value;
+
+    firstNode_ = value;
+  }
+
+  
+  void DownloadStack::SetTopNode(unsigned int value)
+  {
+    if (value >= nodes_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    SetTopNodeInternal(value);
+  }
+
+
+  void DownloadStack::SetTopNodePermissive(int value)
+  {
+    if (value >= 0 &&
+        value < static_cast<int>(nodes_.size()))
+    {
+      SetTopNodeInternal(value);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/DownloadStack.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,60 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <vector>
+#include <boost/noncopyable.hpp>
+
+namespace Deprecated
+{
+  class DownloadStack : public boost::noncopyable
+  {
+  private:
+    static const int NIL = -1;
+
+    // This is a doubly-linked list
+    struct Node
+    {
+      int   next_;
+      int   prev_;
+      bool  dequeued_;
+    };
+
+    std::vector<Node>   nodes_;
+    int                 firstNode_;
+
+    bool CheckInvariants() const;
+
+    void SetTopNodeInternal(unsigned int value);  
+
+  public:
+    DownloadStack(unsigned int size);
+
+    ~DownloadStack();
+
+    bool Pop(unsigned int& value);
+
+    void SetTopNode(unsigned int value);  
+
+    void SetTopNodePermissive(int value);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/IDelayedCallExecutor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,49 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IWebService.h"
+#include "../../Messages/IObserver.h"
+#include "../../Messages/ICallable.h"
+
+#include <IDynamicObject.h>
+#include <Logging.h>
+
+#include <string>
+#include <map>
+
+namespace Deprecated
+{
+  // The IDelayedCall executes a callback after a delay (equivalent to timeout() function in javascript).
+  class IDelayedCallExecutor : public boost::noncopyable
+  {
+  public:
+    ORTHANC_STONE_DEFINE_EMPTY_MESSAGE(__FILE__, __LINE__, TimeoutMessage);
+
+    virtual ~IDelayedCallExecutor()
+    {
+    }
+    
+    virtual void Schedule(MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,
+                          unsigned int timeoutInMs = 1000) = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/ISeriesLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,59 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ParallelSlices.h"
+
+#include <Images/ImageAccessor.h>
+#include <IDicomDataset.h>
+
+namespace Deprecated
+{
+  class ISeriesLoader : public boost::noncopyable
+  {
+  public:
+    virtual ~ISeriesLoader()
+    {
+    }
+    
+    virtual ParallelSlices& GetGeometry() = 0;
+
+    virtual Orthanc::PixelFormat GetPixelFormat() = 0;
+
+    virtual unsigned int GetWidth() = 0;
+
+    virtual unsigned int GetHeight() = 0;
+
+    virtual OrthancPlugins::IDicomDataset* DownloadDicom(size_t index) = 0;
+
+    // This downloads the frame from Orthanc. The resulting pixel
+    // format must be Grayscale8, Grayscale16, SignedGrayscale16 or
+    // RGB24. Orthanc Stone assumes the conversion of the photometric
+    // interpretation is done by Orthanc.
+    virtual Orthanc::ImageAccessor* DownloadFrame(size_t index) = 0;
+
+    virtual Orthanc::ImageAccessor* DownloadJpegFrame(size_t index,
+                                                      unsigned int quality) = 0;
+
+    virtual bool IsJpegAvailable() = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/IWebService.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "IWebService.h"
+
+#include <OrthancException.h>
+
+
+namespace Deprecated
+{
+  const Orthanc::IDynamicObject&
+  IWebService::HttpRequestSuccessMessage::GetPayload() const
+  {
+    if (HasPayload())
+    {
+      return *payload_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+    
+
+  const Orthanc::IDynamicObject&
+  IWebService::HttpRequestErrorMessage::GetPayload() const
+  {
+    if (HasPayload())
+    {
+      return *payload_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/IWebService.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,213 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Messages/IObserver.h"
+#include "../../Messages/ICallable.h"
+
+#include <Enumerations.h>
+#include <IDynamicObject.h>
+#include <Logging.h>
+
+#include <string>
+#include <map>
+
+namespace Deprecated
+{
+  template <typename TMessage>
+  class MessageHandler : public OrthancStone::ICallable
+  {
+  };
+
+
+  template <typename TObserver,
+            typename TMessage>
+  class DeprecatedCallable : public MessageHandler<TMessage>
+  {
+  private:
+    typedef void (TObserver::* MemberMethod) (const TMessage&);
+
+    boost::weak_ptr<OrthancStone::IObserver>  observer_;
+    MemberMethod                function_;
+
+  public:
+    DeprecatedCallable(boost::shared_ptr<TObserver> observer,
+                       MemberMethod function) :
+      observer_(observer),
+      function_(function)
+    {
+    }
+
+    virtual void Apply(const OrthancStone::IMessage& message)
+    {
+      boost::shared_ptr<OrthancStone::IObserver> lock(observer_);
+      if (lock)
+      {
+        TObserver& observer = dynamic_cast<TObserver&>(*lock);
+        const TMessage& typedMessage = dynamic_cast<const TMessage&>(message);
+        (observer.*function_) (typedMessage);
+      }
+    }
+
+    virtual const OrthancStone::MessageIdentifier& GetMessageIdentifier()
+    {
+      return TMessage::GetStaticIdentifier();
+    }
+
+    virtual boost::weak_ptr<OrthancStone::IObserver> GetObserver() const
+    {
+      return observer_;
+    }
+  };
+
+
+  // The IWebService performs HTTP requests.
+  // Since applications can run in native or WASM environment and, since
+  // in a WASM environment, the WebService is asynchronous, the IWebservice
+  // also implements an asynchronous interface: you must schedule a request
+  // and you'll be notified when the response/error is ready.
+  class IWebService : public boost::noncopyable
+  {
+  public:
+    typedef std::map<std::string, std::string> HttpHeaders;
+
+    class HttpRequestSuccessMessage : public OrthancStone::IMessage
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      const std::string&             uri_;
+      const void*                    answer_;
+      size_t                         answerSize_;
+      const HttpHeaders&             answerHeaders_;
+      const Orthanc::IDynamicObject* payload_;
+
+    public:
+      HttpRequestSuccessMessage(const std::string& uri,
+                                const void* answer,
+                                size_t answerSize,
+                                const HttpHeaders& answerHeaders,
+                                const Orthanc::IDynamicObject* payload) :
+        uri_(uri),
+        answer_(answer),
+        answerSize_(answerSize),
+        answerHeaders_(answerHeaders),
+        payload_(payload)
+      {
+      }
+
+      const std::string& GetUri() const
+      {
+        return uri_;
+      }
+
+      const void* GetAnswer() const
+      {
+        return answer_;
+      }
+
+      size_t GetAnswerSize() const
+      {
+        return answerSize_;
+      }
+
+      const HttpHeaders&  GetAnswerHttpHeaders() const
+      {
+        return answerHeaders_;
+      }
+
+      bool HasPayload() const
+      {
+        return payload_ != NULL;
+      }
+
+      const Orthanc::IDynamicObject& GetPayload() const;
+    };
+    
+
+    class HttpRequestErrorMessage : public OrthancStone::IMessage
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      const std::string&              uri_;
+      const Orthanc::IDynamicObject*  payload_;
+      Orthanc::HttpStatus             httpStatus_;
+
+    public:
+      HttpRequestErrorMessage(const std::string& uri,
+                              Orthanc::HttpStatus httpStatus,
+                              const Orthanc::IDynamicObject* payload) :
+        uri_(uri),
+        payload_(payload),
+        httpStatus_(httpStatus)
+      {
+      }
+
+      const std::string& GetUri() const
+      {
+        return uri_;
+      }
+
+      Orthanc::HttpStatus GetHttpStatus() const
+      {
+        return httpStatus_;
+      }
+
+      bool HasPayload() const
+      {
+        return payload_ != NULL;
+      }
+
+      const Orthanc::IDynamicObject& GetPayload() const;
+    };
+
+
+    virtual ~IWebService()
+    {
+    }
+
+    virtual void EnableCache(bool enable) = 0;
+    
+    virtual void GetAsync(const std::string& uri,
+                          const HttpHeaders& headers,
+                          Orthanc::IDynamicObject* payload  /* takes ownership */,
+                          MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
+                          MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                          unsigned int timeoutInSeconds = 60) = 0;
+
+    virtual void PostAsync(const std::string& uri,
+                           const HttpHeaders& headers,
+                           const std::string& body,
+                           Orthanc::IDynamicObject* payload  /* takes ownership */,
+                           MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
+                           MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                           unsigned int timeoutInSeconds = 60) = 0;
+
+    virtual void DeleteAsync(const std::string& uri,
+                             const HttpHeaders& headers,
+                             Orthanc::IDynamicObject* payload  /* takes ownership */,
+                             MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
+                             MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                             unsigned int timeoutInSeconds = 60) = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/MessagingToolbox.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,462 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "MessagingToolbox.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <Images/JpegReader.h>
+#include <Images/PngReader.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+#include <Logging.h>
+
+#include <boost/lexical_cast.hpp>
+
+#ifdef _MSC_VER
+// 'Json::Reader': Use CharReader and CharReaderBuilder instead
+#pragma warning(disable:4996)
+#endif
+
+#include <json/reader.h>
+#include <json/writer.h>
+
+
+namespace Deprecated
+{
+  namespace MessagingToolbox
+  {
+    static bool ParseVersion(std::string& version,
+                             unsigned int& major,
+                             unsigned int& minor,
+                             unsigned int& patch,
+                             const Json::Value& info)
+    {
+      if (info.type() != Json::objectValue ||
+          !info.isMember("Version") ||
+          info["Version"].type() != Json::stringValue)
+      {
+        return false;
+      }
+
+      version = info["Version"].asString();
+      if (version == "mainline")
+      {
+        // Some arbitrary high values Orthanc versions will never reach ;)
+        major = 999;
+        minor = 999;
+        patch = 999;
+        return true;
+      }
+
+      std::vector<std::string> tokens;
+      Orthanc::Toolbox::TokenizeString(tokens, version, '.');
+      
+      if (tokens.size() != 2 &&
+          tokens.size() != 3)
+      {
+        return false;
+      }
+
+      int a, b, c;
+      try
+      {
+        a = boost::lexical_cast<int>(tokens[0]);
+        b = boost::lexical_cast<int>(tokens[1]);
+
+        if (tokens.size() == 3)
+        {
+          c = boost::lexical_cast<int>(tokens[2]);
+        }
+        else
+        {
+          c = 0;
+        }
+      }
+      catch (boost::bad_lexical_cast&)
+      {
+        return false;
+      }
+
+      if (a < 0 ||
+          b < 0 ||
+          c < 0)
+      {
+        return false;
+      }
+      else
+      {
+        major = static_cast<unsigned int>(a);
+        minor = static_cast<unsigned int>(b);
+        patch = static_cast<unsigned int>(c);
+        return true;
+      }         
+    }
+
+
+    bool ParseJson(Json::Value& target,
+                   const void* content,
+                   size_t size)
+    {
+      Json::Reader reader;
+      return reader.parse(reinterpret_cast<const char*>(content),
+                          reinterpret_cast<const char*>(content) + size,
+                          target);
+    }
+
+    void JsonToString(std::string& target,
+                      const Json::Value& source)
+    {
+      Json::FastWriter writer;
+      target = writer.write(source);
+    }
+
+    static void ParseJsonException(Json::Value& target,
+                                   const std::string& source)
+    {
+      Json::Reader reader;
+      if (!reader.parse(source, target))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+    }
+
+
+    void RestApiGet(Json::Value& target,
+                    OrthancPlugins::IOrthancConnection& orthanc,
+                    const std::string& uri)
+    {
+      std::string tmp;
+      orthanc.RestApiGet(tmp, uri);
+      ParseJsonException(target, tmp);
+    }
+
+
+    void RestApiPost(Json::Value& target,
+                     OrthancPlugins::IOrthancConnection& orthanc,
+                     const std::string& uri,
+                     const std::string& body)
+    {
+      std::string tmp;
+      orthanc.RestApiPost(tmp, uri, body);
+      ParseJsonException(target, tmp);
+    }
+
+
+    bool HasWebViewerInstalled(OrthancPlugins::IOrthancConnection& orthanc)
+    {
+      try
+      {
+        Json::Value json;
+        RestApiGet(json, orthanc, "/plugins/web-viewer");
+        return json.type() == Json::objectValue;
+      }
+      catch (Orthanc::OrthancException&)
+      {
+        return false;
+      }
+    }
+
+
+    bool CheckOrthancVersion(OrthancPlugins::IOrthancConnection& orthanc)
+    {
+      Json::Value json;
+      std::string version;
+      unsigned int major, minor, patch;
+
+      try
+      {
+        RestApiGet(json, orthanc, "/system");
+      }
+      catch (Orthanc::OrthancException&)
+      {
+        LOG(ERROR) << "Cannot connect to your Orthanc server";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+        
+      if (!ParseVersion(version, major, minor, patch, json))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+
+      LOG(WARNING) << "Version of the Orthanc core (must be above 1.3.1): " << version;
+
+      // Stone is only compatible with Orthanc >= 1.3.1
+      if (major < 1 ||
+          (major == 1 && minor < 3) ||
+          (major == 1 && minor == 3 && patch < 1))
+      {
+        return false;
+      }
+
+      try
+      {
+        RestApiGet(json, orthanc, "/plugins/web-viewer");       
+      }
+      catch (Orthanc::OrthancException&)
+      {
+        // The Web viewer is not installed, this is OK
+        LOG(WARNING) << "The Web viewer plugin is not installed, progressive download is disabled";
+        return true;
+      }
+
+      if (!ParseVersion(version, major, minor, patch, json))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+
+      LOG(WARNING) << "Version of the Web viewer plugin (must be above 2.2): " << version;
+
+      return (major >= 3 ||
+              (major == 2 && minor >= 2));
+    }
+
+
+    Orthanc::ImageAccessor* DecodeFrame(OrthancPlugins::IOrthancConnection& orthanc,
+                                        const std::string& instance,
+                                        unsigned int frame,
+                                        Orthanc::PixelFormat targetFormat)
+    {
+      std::string uri = ("instances/" + instance + "/frames/" + 
+                         boost::lexical_cast<std::string>(frame));
+
+      std::string compressed;
+
+      switch (targetFormat)
+      {
+        case Orthanc::PixelFormat_RGB24:
+          orthanc.RestApiGet(compressed, uri + "/preview");
+          break;
+
+        case Orthanc::PixelFormat_Grayscale16:
+          orthanc.RestApiGet(compressed, uri + "/image-uint16");
+          break;
+
+        case Orthanc::PixelFormat_SignedGrayscale16:
+          orthanc.RestApiGet(compressed, uri + "/image-int16");
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+      
+      std::unique_ptr<Orthanc::PngReader> result(new Orthanc::PngReader);
+      result->ReadFromMemory(compressed);
+
+      if (targetFormat == Orthanc::PixelFormat_SignedGrayscale16)
+      {
+        if (result->GetFormat() == Orthanc::PixelFormat_Grayscale16)
+        {
+          result->SetFormat(Orthanc::PixelFormat_SignedGrayscale16);
+        }
+        else
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+        }
+      }
+
+      return result.release();
+    }
+
+
+    Orthanc::ImageAccessor* DecodeJpegFrame(OrthancPlugins::IOrthancConnection& orthanc,
+                                            const std::string& instance,
+                                            unsigned int frame,
+                                            unsigned int quality,
+                                            Orthanc::PixelFormat targetFormat)
+    {
+      if (quality <= 0 || 
+          quality > 100)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      // This requires the official Web viewer plugin to be installed!
+      std::string uri = ("web-viewer/instances/jpeg" + 
+                         boost::lexical_cast<std::string>(quality) + 
+                         "-" + instance + "_" + 
+                         boost::lexical_cast<std::string>(frame));
+
+      Json::Value encoded;
+      RestApiGet(encoded, orthanc, uri);
+
+      if (encoded.type() != Json::objectValue ||
+          !encoded.isMember("Orthanc") ||
+          encoded["Orthanc"].type() != Json::objectValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+
+      Json::Value& info = encoded["Orthanc"];
+      if (!info.isMember("PixelData") ||
+          !info.isMember("Stretched") ||
+          !info.isMember("Compression") ||
+          info["Compression"].type() != Json::stringValue ||
+          info["PixelData"].type() != Json::stringValue ||
+          info["Stretched"].type() != Json::booleanValue ||
+          info["Compression"].asString() != "Jpeg")
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }          
+
+      bool isSigned = false;
+      bool isStretched = info["Stretched"].asBool();
+
+      if (info.isMember("IsSigned"))
+      {
+        if (info["IsSigned"].type() != Json::booleanValue)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+        }          
+        else
+        {
+          isSigned = info["IsSigned"].asBool();
+        }
+      }
+
+      std::string jpeg;
+      Orthanc::Toolbox::DecodeBase64(jpeg, info["PixelData"].asString());
+
+      std::unique_ptr<Orthanc::JpegReader> reader(new Orthanc::JpegReader);
+      reader->ReadFromMemory(jpeg);
+
+      if (reader->GetFormat() == Orthanc::PixelFormat_RGB24)  // This is a color image
+      {
+        if (targetFormat != Orthanc::PixelFormat_RGB24)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+        }
+
+        if (isSigned || isStretched)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        else
+        {
+          return reader.release();
+        }
+      }
+
+      if (reader->GetFormat() != Orthanc::PixelFormat_Grayscale8)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+
+      if (!isStretched)
+      {
+        if (targetFormat != reader->GetFormat())
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+        }
+
+        return reader.release();
+      }
+
+      int32_t stretchLow = 0;
+      int32_t stretchHigh = 0;
+
+      if (!info.isMember("StretchLow") ||
+          !info.isMember("StretchHigh") ||
+          info["StretchLow"].type() != Json::intValue ||
+          info["StretchHigh"].type() != Json::intValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+
+      stretchLow = info["StretchLow"].asInt();
+      stretchHigh = info["StretchHigh"].asInt();
+
+      if (stretchLow < -32768 ||
+          stretchHigh > 65535 ||
+          (stretchLow < 0 && stretchHigh > 32767))
+      {
+        // This range cannot be represented with a uint16_t or an int16_t
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);          
+      }
+
+      // Decode a grayscale JPEG 8bpp image coming from the Web viewer
+      std::unique_ptr<Orthanc::ImageAccessor> image
+        (new Orthanc::Image(targetFormat, reader->GetWidth(), reader->GetHeight(), false));
+
+      float scaling = static_cast<float>(stretchHigh - stretchLow) / 255.0f;
+      float offset = static_cast<float>(stretchLow) / scaling;
+      
+      Orthanc::ImageProcessing::Convert(*image, *reader);
+      Orthanc::ImageProcessing::ShiftScale(*image, offset, scaling, true);
+
+#if 0
+      /*info.removeMember("PixelData");
+        std::cout << info.toStyledString();*/
+      
+      int64_t a, b;
+      Orthanc::ImageProcessing::GetMinMaxValue(a, b, *image);
+      std::cout << stretchLow << "->" << stretchHigh << " = " << a << "->" << b << std::endl;
+#endif
+
+      return image.release();
+    }
+
+
+    static void AddTag(Orthanc::DicomMap& target,
+                       const OrthancPlugins::IDicomDataset& source,
+                       const Orthanc::DicomTag& tag)
+    {
+      OrthancPlugins::DicomTag key(tag.GetGroup(), tag.GetElement());
+      
+      std::string value;
+      if (source.GetStringValue(value, key))
+      {
+        target.SetValue(tag, value, false);
+      }
+    }
+
+    
+    void ConvertDataset(Orthanc::DicomMap& target,
+                        const OrthancPlugins::IDicomDataset& source)
+    {
+      target.Clear();
+
+      AddTag(target, source, Orthanc::DICOM_TAG_BITS_ALLOCATED);
+      AddTag(target, source, Orthanc::DICOM_TAG_BITS_STORED);
+      AddTag(target, source, Orthanc::DICOM_TAG_COLUMNS);
+      AddTag(target, source, Orthanc::DICOM_TAG_DOSE_GRID_SCALING);
+      AddTag(target, source, Orthanc::DICOM_TAG_FRAME_INCREMENT_POINTER);
+      AddTag(target, source, Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR);
+      AddTag(target, source, Orthanc::DICOM_TAG_HIGH_BIT);
+      AddTag(target, source, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT);
+      AddTag(target, source, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT);
+      AddTag(target, source, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES);
+      AddTag(target, source, Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION);
+      AddTag(target, source, Orthanc::DICOM_TAG_PIXEL_REPRESENTATION);
+      AddTag(target, source, Orthanc::DICOM_TAG_PIXEL_SPACING);
+      AddTag(target, source, Orthanc::DICOM_TAG_PLANAR_CONFIGURATION);
+      AddTag(target, source, Orthanc::DICOM_TAG_RESCALE_INTERCEPT);
+      AddTag(target, source, Orthanc::DICOM_TAG_RESCALE_SLOPE);
+      AddTag(target, source, Orthanc::DICOM_TAG_ROWS);
+      AddTag(target, source, Orthanc::DICOM_TAG_SAMPLES_PER_PIXEL);
+      AddTag(target, source, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID);
+      AddTag(target, source, Orthanc::DICOM_TAG_SLICE_THICKNESS);
+      AddTag(target, source, Orthanc::DICOM_TAG_SOP_CLASS_UID);
+      AddTag(target, source, Orthanc::DICOM_TAG_SOP_INSTANCE_UID);
+      AddTag(target, source, Orthanc::DICOM_TAG_WINDOW_CENTER);
+      AddTag(target, source, Orthanc::DICOM_TAG_WINDOW_WIDTH);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/MessagingToolbox.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,75 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../StoneEnumerations.h"
+
+#include <DicomFormat/DicomMap.h>
+#include <Images/ImageAccessor.h>
+#include <IDicomDataset.h>
+#include <IOrthancConnection.h>
+
+#include <json/value.h>
+
+namespace Deprecated
+{
+  namespace MessagingToolbox
+  {
+    bool ParseJson(Json::Value& target,
+                   const void* content,
+                   size_t size);
+
+    void JsonToString(std::string& target,
+                      const Json::Value& source);
+
+
+    void RestApiGet(Json::Value& target,
+                    OrthancPlugins::IOrthancConnection& orthanc,
+                    const std::string& uri);
+
+    void RestApiPost(Json::Value& target,
+                     OrthancPlugins::IOrthancConnection& orthanc,
+                     const std::string& uri,
+                     const std::string& body);
+
+    bool HasWebViewerInstalled(OrthancPlugins::IOrthancConnection& orthanc);
+
+    bool CheckOrthancVersion(OrthancPlugins::IOrthancConnection& orthanc);
+
+    // This downloads the image from Orthanc and keeps its pixel
+    // format unchanged (will be either Grayscale8, Grayscale16,
+    // SignedGrayscale16, or RGB24)
+    Orthanc::ImageAccessor* DecodeFrame(OrthancPlugins::IOrthancConnection& orthanc,
+                                        const std::string& instance,
+                                        unsigned int frame,
+                                        Orthanc::PixelFormat targetFormat);
+
+    Orthanc::ImageAccessor* DecodeJpegFrame(OrthancPlugins::IOrthancConnection& orthanc,
+                                            const std::string& instance,
+                                            unsigned int frame,
+                                            unsigned int quality,
+                                            Orthanc::PixelFormat targetFormat);
+
+    void ConvertDataset(Orthanc::DicomMap& target,
+                        const OrthancPlugins::IDicomDataset& source);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/OrthancApiClient.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,334 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "OrthancApiClient.h"
+
+#include "../Toolbox/MessagingToolbox.h"
+
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  const Orthanc::IDynamicObject& OrthancApiClient::JsonResponseReadyMessage::GetPayload() const
+  {
+    if (HasPayload())
+    {
+      return *payload_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+  
+  
+  const Orthanc::IDynamicObject& OrthancApiClient::BinaryResponseReadyMessage::GetPayload() const
+  {
+    if (HasPayload())
+    {
+      return *payload_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+  
+  
+  const Orthanc::IDynamicObject& OrthancApiClient::EmptyResponseReadyMessage::GetPayload() const
+  {
+    if (HasPayload())
+    {
+      return *payload_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+  
+  
+  class OrthancApiClient::WebServicePayload : public Orthanc::IDynamicObject
+  {
+  private:
+    std::unique_ptr< MessageHandler<EmptyResponseReadyMessage> >             emptyHandler_;
+    std::unique_ptr< MessageHandler<JsonResponseReadyMessage> >              jsonHandler_;
+    std::unique_ptr< MessageHandler<BinaryResponseReadyMessage> >            binaryHandler_;
+    std::unique_ptr< MessageHandler<IWebService::HttpRequestErrorMessage> >  failureHandler_;
+    std::unique_ptr< Orthanc::IDynamicObject >                               userPayload_;
+
+    void NotifyConversionError(const IWebService::HttpRequestSuccessMessage& message) const
+    {
+      if (failureHandler_.get() != NULL)
+      {
+        failureHandler_->Apply(IWebService::HttpRequestErrorMessage
+                               (message.GetUri(), Orthanc::HttpStatus_None, userPayload_.get()));
+      }
+    }
+    
+  public:
+    WebServicePayload(MessageHandler<EmptyResponseReadyMessage>* handler,
+                      MessageHandler<IWebService::HttpRequestErrorMessage>* failureHandler,
+                      Orthanc::IDynamicObject* userPayload) :
+      emptyHandler_(handler),
+      failureHandler_(failureHandler),
+      userPayload_(userPayload)
+
+    {
+      if (handler == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    WebServicePayload(MessageHandler<BinaryResponseReadyMessage>* handler,
+                      MessageHandler<IWebService::HttpRequestErrorMessage>* failureHandler,
+                      Orthanc::IDynamicObject* userPayload) :
+      binaryHandler_(handler),
+      failureHandler_(failureHandler),
+      userPayload_(userPayload)
+    {
+      if (handler == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    WebServicePayload(MessageHandler<JsonResponseReadyMessage>* handler,
+                      MessageHandler<IWebService::HttpRequestErrorMessage>* failureHandler,
+                      Orthanc::IDynamicObject* userPayload) :
+      jsonHandler_(handler),
+      failureHandler_(failureHandler),
+      userPayload_(userPayload)
+    {
+      if (handler == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    void HandleSuccess(const IWebService::HttpRequestSuccessMessage& message) const
+    {
+      if (emptyHandler_.get() != NULL)
+      {
+        emptyHandler_->Apply(OrthancApiClient::EmptyResponseReadyMessage
+                             (message.GetUri(), userPayload_.get()));
+      }
+      else if (binaryHandler_.get() != NULL)
+      {
+        binaryHandler_->Apply(OrthancApiClient::BinaryResponseReadyMessage
+                              (message.GetUri(), message.GetAnswer(),
+                               message.GetAnswerSize(), userPayload_.get()));
+      }
+      else if (jsonHandler_.get() != NULL)
+      {
+        Json::Value response;
+        if (MessagingToolbox::ParseJson(response, message.GetAnswer(), message.GetAnswerSize()))
+        {
+          jsonHandler_->Apply(OrthancApiClient::JsonResponseReadyMessage
+                              (message.GetUri(), response, userPayload_.get()));
+        }
+        else
+        {
+          NotifyConversionError(message);
+        }
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+
+    void HandleFailure(const IWebService::HttpRequestErrorMessage& message) const
+    {
+      if (failureHandler_.get() != NULL)
+      {
+        failureHandler_->Apply(IWebService::HttpRequestErrorMessage
+                               (message.GetUri(), message.GetHttpStatus(), userPayload_.get()));
+      }
+    }
+  };
+
+
+  OrthancApiClient::OrthancApiClient(IWebService& web,
+                                     const std::string& baseUrl) :
+    web_(web),
+    baseUrl_(baseUrl)
+  {
+  }
+
+
+  void OrthancApiClient::GetJsonAsync(
+      const std::string& uri,
+      MessageHandler<JsonResponseReadyMessage>* successCallback,
+      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
+      Orthanc::IDynamicObject* payload)
+  {
+    IWebService::HttpHeaders emptyHeaders;
+    web_.GetAsync(baseUrl_ + uri,
+                  emptyHeaders,
+                  new WebServicePayload(successCallback, failureCallback, payload),
+                  new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestSuccessMessage>
+                  (GetSharedObserver(), &OrthancApiClient::NotifyHttpSuccess),
+                  new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestErrorMessage>
+                  (GetSharedObserver(), &OrthancApiClient::NotifyHttpError));
+  }
+
+
+  void OrthancApiClient::GetBinaryAsync(
+      const std::string& uri,
+      const std::string& contentType,
+      MessageHandler<BinaryResponseReadyMessage>* successCallback,
+      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
+      Orthanc::IDynamicObject* payload)
+  {
+    IWebService::HttpHeaders headers;
+    headers["Accept"] = contentType;
+    GetBinaryAsync(uri, headers, successCallback, failureCallback, payload);
+  }
+
+  void OrthancApiClient::GetBinaryAsync(
+      const std::string& uri,
+      const IWebService::HttpHeaders& headers,
+      MessageHandler<BinaryResponseReadyMessage>* successCallback,
+      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
+      Orthanc::IDynamicObject* payload)
+  {
+    // printf("GET [%s] [%s]\n", baseUrl_.c_str(), uri.c_str());
+
+    web_.GetAsync(baseUrl_ + uri, headers,
+                  new WebServicePayload(successCallback, failureCallback, payload),
+                  new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestSuccessMessage>
+                  (GetSharedObserver(), &OrthancApiClient::NotifyHttpSuccess),
+                  new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestErrorMessage>
+                  (GetSharedObserver(), &OrthancApiClient::NotifyHttpError));
+  }
+
+  
+  void OrthancApiClient::PostBinaryAsyncExpectJson(
+      const std::string& uri,
+      const std::string& body,
+      MessageHandler<JsonResponseReadyMessage>* successCallback,
+      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
+      Orthanc::IDynamicObject* payload)
+  {
+    web_.PostAsync(baseUrl_ + uri, IWebService::HttpHeaders(), body,
+                   new WebServicePayload(successCallback, failureCallback, payload),
+                   new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestSuccessMessage>
+                   (GetSharedObserver(), &OrthancApiClient::NotifyHttpSuccess),
+                   new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestErrorMessage>
+                   (GetSharedObserver(), &OrthancApiClient::NotifyHttpError));
+
+  }
+
+  void OrthancApiClient::PostBinaryAsync(
+      const std::string& uri,
+      const std::string& body)
+  {
+    web_.PostAsync(baseUrl_ + uri, IWebService::HttpHeaders(), body, NULL, NULL, NULL);
+  }
+
+  void OrthancApiClient::PostBinaryAsync(
+      const std::string& uri,
+      const std::string& body,
+      MessageHandler<EmptyResponseReadyMessage>* successCallback,
+      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
+      Orthanc::IDynamicObject* payload   /* takes ownership */)
+  {
+    web_.PostAsync(baseUrl_ + uri, IWebService::HttpHeaders(), body,
+                   new WebServicePayload(successCallback, failureCallback, payload),
+                   new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestSuccessMessage>
+                   (GetSharedObserver(), &OrthancApiClient::NotifyHttpSuccess),
+                   new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestErrorMessage>
+                   (GetSharedObserver(), &OrthancApiClient::NotifyHttpError));
+  }
+
+  void OrthancApiClient::PostJsonAsyncExpectJson(
+      const std::string& uri,
+      const Json::Value& data,
+      MessageHandler<JsonResponseReadyMessage>* successCallback,
+      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
+      Orthanc::IDynamicObject* payload)
+  {
+    std::string body;
+    MessagingToolbox::JsonToString(body, data);
+    return PostBinaryAsyncExpectJson(uri, body, successCallback, failureCallback, payload);
+  }
+
+  void OrthancApiClient::PostJsonAsync(
+      const std::string& uri,
+      const Json::Value& data)
+  {
+    std::string body;
+    MessagingToolbox::JsonToString(body, data);
+    return PostBinaryAsync(uri, body);
+  }
+
+  void OrthancApiClient::PostJsonAsync(
+      const std::string& uri,
+      const Json::Value& data,
+      MessageHandler<EmptyResponseReadyMessage>* successCallback,
+      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
+      Orthanc::IDynamicObject* payload   /* takes ownership */)
+  {
+    std::string body;
+    MessagingToolbox::JsonToString(body, data);
+    return PostBinaryAsync(uri, body, successCallback, failureCallback, payload);
+  }
+
+  void OrthancApiClient::DeleteAsync(
+      const std::string& uri,
+      MessageHandler<EmptyResponseReadyMessage>* successCallback,
+      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
+      Orthanc::IDynamicObject* payload)
+  {
+    web_.DeleteAsync(baseUrl_ + uri, IWebService::HttpHeaders(),
+                     new WebServicePayload(successCallback, failureCallback, payload),
+                     new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestSuccessMessage>
+                     (GetSharedObserver(), &OrthancApiClient::NotifyHttpSuccess),
+                     new DeprecatedCallable<OrthancApiClient, IWebService::HttpRequestErrorMessage>
+                     (GetSharedObserver(), &OrthancApiClient::NotifyHttpError));
+  }
+
+
+  void OrthancApiClient::NotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message)
+  {
+    if (message.HasPayload())
+    {
+      dynamic_cast<const WebServicePayload&>(message.GetPayload()).HandleSuccess(message);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+  void OrthancApiClient::NotifyHttpError(const IWebService::HttpRequestErrorMessage& message)
+  {
+    if (message.HasPayload())
+    {
+      dynamic_cast<const WebServicePayload&>(message.GetPayload()).HandleFailure(message);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/OrthancApiClient.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,252 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/shared_ptr.hpp>
+#include <json/json.h>
+
+#include "IWebService.h"
+#include "../../Messages/ObserverBase.h"
+
+namespace Deprecated
+{
+  enum SliceImageQuality
+  {
+    SliceImageQuality_FullPng,  // smaller to transmit but longer to generate on Orthanc side (better choice when on low bandwidth)
+    SliceImageQuality_FullPam,  // bigger to transmit but faster to generate on Orthanc side (better choice when on localhost or LAN)
+    SliceImageQuality_Jpeg50,
+    SliceImageQuality_Jpeg90,
+    SliceImageQuality_Jpeg95,
+
+    SliceImageQuality_InternalRaw   // downloads the raw pixels data as they are stored in the DICOM file (internal use only)
+  };  
+
+  class OrthancApiClient :
+      public OrthancStone::IObservable,
+      public OrthancStone::ObserverBase<OrthancApiClient>
+  {
+  public:
+    class JsonResponseReadyMessage : public OrthancStone::IMessage
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      const std::string&              uri_;
+      const Json::Value&              json_;
+      const Orthanc::IDynamicObject*  payload_;
+
+    public:
+      JsonResponseReadyMessage(const std::string& uri,
+                               const Json::Value& json,
+                               const Orthanc::IDynamicObject* payload) :
+        uri_(uri),
+        json_(json),
+        payload_(payload)
+      {
+      }
+
+      const std::string& GetUri() const
+      {
+        return uri_;
+      }
+
+      const Json::Value& GetJson() const
+      {
+        return json_;
+      }
+
+      bool HasPayload() const
+      {
+        return payload_ != NULL;
+      }
+
+      const Orthanc::IDynamicObject& GetPayload() const;
+    };
+    
+
+    class BinaryResponseReadyMessage : public OrthancStone::IMessage
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      const std::string&              uri_;
+      const void*                     answer_;
+      size_t                          answerSize_;
+      const Orthanc::IDynamicObject*  payload_;
+
+    public:
+      BinaryResponseReadyMessage(const std::string& uri,
+                                 const void* answer,
+                                 size_t answerSize,
+                                 const Orthanc::IDynamicObject* payload) :
+        uri_(uri),
+        answer_(answer),
+        answerSize_(answerSize),
+        payload_(payload)
+      {
+      }
+
+      const std::string& GetUri() const
+      {
+        return uri_;
+      }
+
+      const void* GetAnswer() const
+      {
+        return answer_;
+      }
+
+      size_t GetAnswerSize() const
+      {
+        return answerSize_;
+      }
+
+      bool HasPayload() const
+      {
+        return payload_ != NULL;
+      }
+
+      const Orthanc::IDynamicObject& GetPayload() const;
+    };
+
+
+    class EmptyResponseReadyMessage : public OrthancStone::IMessage
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      const std::string&              uri_;
+      const Orthanc::IDynamicObject*  payload_;
+
+    public:
+      EmptyResponseReadyMessage(const std::string& uri,
+                                const Orthanc::IDynamicObject* payload) :
+        uri_(uri),
+        payload_(payload)
+      {
+      }
+
+      const std::string& GetUri() const
+      {
+        return uri_;
+      }
+
+      bool HasPayload() const
+      {
+        return payload_ != NULL;
+      }
+
+      const Orthanc::IDynamicObject& GetPayload() const;
+    };
+
+    
+
+  private:
+    class WebServicePayload;
+
+  protected:
+    IWebService&  web_;
+    std::string   baseUrl_;
+
+  public:
+    OrthancApiClient(IWebService& web,
+                     const std::string& baseUrl);
+    
+    virtual ~OrthancApiClient()
+    {
+    }
+
+    const std::string& GetBaseUrl() const {return baseUrl_;}
+
+    // schedule a GET request expecting a JSON response.
+    void GetJsonAsync(const std::string& uri,
+                      MessageHandler<JsonResponseReadyMessage>* successCallback,
+                      MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                      Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
+
+    // schedule a GET request expecting a binary response.
+    void GetBinaryAsync(const std::string& uri,
+                        const std::string& contentType,
+                        MessageHandler<BinaryResponseReadyMessage>* successCallback,
+                        MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                        Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
+
+    // schedule a GET request expecting a binary response.
+    void GetBinaryAsync(const std::string& uri,
+                        const IWebService::HttpHeaders& headers,
+                        MessageHandler<BinaryResponseReadyMessage>* successCallback,
+                        MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                        Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
+
+    // schedule a POST request expecting a JSON response.
+    void PostBinaryAsyncExpectJson(const std::string& uri,
+                                   const std::string& body,
+                                   MessageHandler<JsonResponseReadyMessage>* successCallback,
+                                   MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                                   Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
+
+    // schedule a POST request expecting a JSON response.
+    void PostJsonAsyncExpectJson(const std::string& uri,
+                                 const Json::Value& data,
+                                 MessageHandler<JsonResponseReadyMessage>* successCallback,
+                                 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                                 Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
+
+    // schedule a POST request and don't mind the response.
+    void PostJsonAsync(const std::string& uri,
+                       const Json::Value& data);
+
+    // schedule a POST request and don't expect any response.
+    void PostJsonAsync(const std::string& uri,
+                       const Json::Value& data,
+                       MessageHandler<EmptyResponseReadyMessage>* successCallback,
+                       MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                       Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
+
+
+    // schedule a POST request and don't mind the response.
+    void PostBinaryAsync(const std::string& uri,
+                         const std::string& body);
+
+    // schedule a POST request and don't expect any response.
+    void PostBinaryAsync(const std::string& uri,
+                         const std::string& body,
+                         MessageHandler<EmptyResponseReadyMessage>* successCallback,
+                         MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                         Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
+
+    // schedule a DELETE request expecting an empty response.
+    void DeleteAsync(const std::string& uri,
+                     MessageHandler<EmptyResponseReadyMessage>* successCallback,
+                     MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
+                     Orthanc::IDynamicObject* payload = NULL   /* takes ownership */);
+
+    void NotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message);
+
+    void NotifyHttpError(const IWebService::HttpRequestErrorMessage& message);
+
+  private:
+    void HandleFromCache(const std::string& uri,
+                         const IWebService::HttpHeaders& headers,
+                         Orthanc::IDynamicObject* payload /* takes ownership */);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/OrthancSlicesLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,901 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OrthancSlicesLoader.h"
+
+#include "../Toolbox/MessagingToolbox.h"
+
+#include <Compression/GzipCompressor.h>
+#include <Endianness.h>
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <Images/JpegReader.h>
+#include <Images/PngReader.h>
+#include <Images/PamReader.h>
+#include <Logging.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+#include <FullOrthancDataset.h>
+
+#include <boost/lexical_cast.hpp>
+
+
+
+/**
+ * TODO This is a SLOW implementation of base64 decoding, because
+ * "Orthanc::Toolbox::DecodeBase64()" does not work properly with
+ * WASM. UNDERSTAND WHY.
+ * https://stackoverflow.com/a/34571089/881731
+ **/
+static std::string base64_decode(const std::string &in)
+{
+  std::string out;
+  
+  std::vector<int> T(256,-1);
+  for (int i=0; i<64; i++) T["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[i]] = i;
+  
+  int val=0, valb=-8;
+  for (size_t i = 0; i < in.size(); i++) {
+    unsigned char c = in[i];
+    if (T[c] == -1) break;
+    val = (val<<6) + T[c];
+    valb += 6;
+    if (valb>=0) {
+      out.push_back(char((val>>valb)&0xFF));
+      valb-=8;
+    }
+  }
+  return out;
+}
+
+
+
+namespace Deprecated
+{
+  class OrthancSlicesLoader::Operation : public Orthanc::IDynamicObject
+  {
+  private:
+    Mode               mode_;
+    unsigned int       frame_;
+    unsigned int       sliceIndex_;
+    const Slice*       slice_;
+    std::string        instanceId_;
+    SliceImageQuality  quality_;
+
+    Operation(Mode mode) :
+      mode_(mode)
+    {
+    }
+
+  public:
+    Mode GetMode() const
+    {
+      return mode_;
+    }
+
+    SliceImageQuality GetQuality() const
+    {
+      assert(mode_ == Mode_LoadImage ||
+             mode_ == Mode_LoadRawImage);
+      return quality_;
+    }
+
+    unsigned int GetSliceIndex() const
+    {
+      assert(mode_ == Mode_LoadImage ||
+             mode_ == Mode_LoadRawImage);
+      return sliceIndex_;
+    }
+
+    const Slice& GetSlice() const
+    {
+      assert(mode_ == Mode_LoadImage ||
+             mode_ == Mode_LoadRawImage);
+      assert(slice_ != NULL);
+      return *slice_;
+    }
+
+    unsigned int GetFrame() const
+    {
+      assert(mode_ == Mode_FrameGeometry);
+      return frame_;
+    }
+
+    const std::string& GetInstanceId() const
+    {
+      assert(mode_ == Mode_FrameGeometry ||
+             mode_ == Mode_InstanceGeometry);
+      return instanceId_;
+    }
+
+    static Operation* DownloadInstanceGeometry(const std::string& instanceId)
+    {
+      std::unique_ptr<Operation> operation(new Operation(Mode_InstanceGeometry));
+      operation->instanceId_ = instanceId;
+      return operation.release();
+    }
+
+    static Operation* DownloadFrameGeometry(const std::string& instanceId,
+                                            unsigned int frame)
+    {
+      std::unique_ptr<Operation> operation(new Operation(Mode_FrameGeometry));
+      operation->instanceId_ = instanceId;
+      operation->frame_ = frame;
+      return operation.release();
+    }
+
+    static Operation* DownloadSliceImage(unsigned int  sliceIndex,
+                                         const Slice&  slice,
+                                         SliceImageQuality quality)
+    {
+      std::unique_ptr<Operation> tmp(new Operation(Mode_LoadImage));
+      tmp->sliceIndex_ = sliceIndex;
+      tmp->slice_ = &slice;
+      tmp->quality_ = quality;
+      return tmp.release();
+    }
+
+    static Operation* DownloadSliceRawImage(unsigned int  sliceIndex,
+                                            const Slice&  slice)
+    {
+      std::unique_ptr<Operation> tmp(new Operation(Mode_LoadRawImage));
+      tmp->sliceIndex_ = sliceIndex;
+      tmp->slice_ = &slice;
+      tmp->quality_ = SliceImageQuality_InternalRaw;
+      return tmp.release();
+    }
+
+    static Operation* DownloadDicomFile(const Slice&  slice)
+    {
+      std::unique_ptr<Operation> tmp(new Operation(Mode_LoadDicomFile));
+      tmp->slice_ = &slice;
+      return tmp.release();
+    }
+
+  };
+
+  void OrthancSlicesLoader::NotifySliceImageSuccess(const Operation& operation,
+                                                    const Orthanc::ImageAccessor& image)
+  {
+    OrthancSlicesLoader::SliceImageReadyMessage msg
+      (*this, operation.GetSliceIndex(), operation.GetSlice(), image, operation.GetQuality());
+    BroadcastMessage(msg);
+  }
+  
+  
+  void OrthancSlicesLoader::NotifySliceImageError(const Operation& operation)
+  {
+    OrthancSlicesLoader::SliceImageErrorMessage msg
+      (*this, operation.GetSliceIndex(), operation.GetSlice(), operation.GetQuality());
+    BroadcastMessage(msg);
+  }
+  
+  
+  void OrthancSlicesLoader::SortAndFinalizeSlices()
+  {
+    bool ok = slices_.Sort();
+    
+    state_ = State_GeometryReady;
+    
+    if (ok)
+    {
+      LOG(INFO) << "Loaded a series with " << slices_.GetSlicesCount() << " slice(s)";
+      BroadcastMessage(SliceGeometryReadyMessage(*this));
+    }
+    else
+    {
+      LOG(ERROR) << "This series is empty";
+      BroadcastMessage(SliceGeometryErrorMessage(*this));
+    }
+  }
+  
+  void OrthancSlicesLoader::OnGeometryError(const IWebService::HttpRequestErrorMessage& message)
+  {
+    BroadcastMessage(SliceGeometryErrorMessage(*this));
+    state_ = State_Error;
+  }
+
+  void OrthancSlicesLoader::OnSliceImageError(const IWebService::HttpRequestErrorMessage& message)
+  {
+    NotifySliceImageError(dynamic_cast<const Operation&>(message.GetPayload()));
+    state_ = State_Error;
+  }
+
+  void OrthancSlicesLoader::ParseSeriesGeometry(const OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    const Json::Value& series = message.GetJson();
+    Json::Value::Members instances = series.getMemberNames();
+    
+    slices_.Reserve(instances.size());
+    
+    for (size_t i = 0; i < instances.size(); i++)
+    {
+      OrthancPlugins::FullOrthancDataset dataset(series[instances[i]]);
+      
+      Orthanc::DicomMap dicom;
+      MessagingToolbox::ConvertDataset(dicom, dataset);
+      
+      unsigned int frames;
+      if (!dicom.ParseUnsignedInteger32(frames, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
+      {
+        frames = 1;
+      }
+      
+      for (unsigned int frame = 0; frame < frames; frame++)
+      {
+        std::unique_ptr<Slice> slice(new Slice);
+        if (slice->ParseOrthancFrame(dicom, instances[i], frame))
+        {
+          OrthancStone::CoordinateSystem3D geometry = slice->GetGeometry();
+          slices_.AddSlice(geometry, slice.release());
+        }
+        else
+        {
+          LOG(WARNING) << "Skipping invalid frame " << frame << " within instance " << instances[i];
+        }
+      }
+    }
+    
+    SortAndFinalizeSlices();
+  }
+  
+  void OrthancSlicesLoader::ParseInstanceGeometry(const OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    const Json::Value& tags = message.GetJson();
+    const std::string& instanceId = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload()).GetInstanceId();
+
+    OrthancPlugins::FullOrthancDataset dataset(tags);
+    
+    Orthanc::DicomMap dicom;
+    MessagingToolbox::ConvertDataset(dicom, dataset);
+
+    unsigned int frames;
+    if (!dicom.ParseUnsignedInteger32(frames, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
+    {
+      frames = 1;
+    }
+    
+    LOG(INFO) << "Instance " << instanceId << " contains " << frames << " frame(s)";
+    
+    for (unsigned int frame = 0; frame < frames; frame++)
+    {
+      std::unique_ptr<Slice> slice(new Slice);
+      if (slice->ParseOrthancFrame(dicom, instanceId, frame))
+      {
+        OrthancStone::CoordinateSystem3D geometry = slice->GetGeometry();
+        slices_.AddSlice(geometry, slice.release());
+      }
+      else
+      {
+        LOG(WARNING) << "Skipping invalid multi-frame instance " << instanceId;
+        BroadcastMessage(SliceGeometryErrorMessage(*this));
+        return;
+      }
+    }
+    
+    SortAndFinalizeSlices();
+  }
+  
+  
+  void OrthancSlicesLoader::ParseFrameGeometry(const OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    const Json::Value& tags = message.GetJson();
+    const std::string& instanceId = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload()).GetInstanceId();
+    unsigned int frame = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload()).GetFrame();
+
+    OrthancPlugins::FullOrthancDataset dataset(tags);
+    
+    state_ = State_GeometryReady;
+    
+    Orthanc::DicomMap dicom;
+    MessagingToolbox::ConvertDataset(dicom, dataset);
+    
+    std::unique_ptr<Slice> slice(new Slice);
+    if (slice->ParseOrthancFrame(dicom, instanceId, frame))
+    {
+      LOG(INFO) << "Loaded instance geometry " << instanceId;
+
+      OrthancStone::CoordinateSystem3D geometry = slice->GetGeometry();
+      slices_.AddSlice(geometry, slice.release());
+      
+      BroadcastMessage(SliceGeometryReadyMessage(*this));
+    }
+    else
+    {
+      LOG(WARNING) << "Skipping invalid instance " << instanceId;
+      BroadcastMessage(SliceGeometryErrorMessage(*this));
+    }
+  }
+  
+  
+  void OrthancSlicesLoader::ParseSliceImagePng(const OrthancApiClient::BinaryResponseReadyMessage& message)
+  {
+    const Operation& operation = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload());
+    std::unique_ptr<Orthanc::ImageAccessor>  image;
+    
+    try
+    {
+      image.reset(new Orthanc::PngReader);
+      dynamic_cast<Orthanc::PngReader&>(*image).ReadFromMemory(message.GetAnswer(), message.GetAnswerSize());
+    }
+    catch (Orthanc::OrthancException&)
+    {
+      NotifySliceImageError(operation);
+      return;
+    }
+    
+    if (image->GetWidth() != operation.GetSlice().GetWidth() ||
+        image->GetHeight() != operation.GetSlice().GetHeight())
+    {
+      NotifySliceImageError(operation);
+      return;
+    }
+
+    if (operation.GetSlice().GetConverter().GetExpectedPixelFormat() ==
+        Orthanc::PixelFormat_SignedGrayscale16)
+    {
+      if (image->GetFormat() == Orthanc::PixelFormat_Grayscale16)
+      {
+        image->SetFormat(Orthanc::PixelFormat_SignedGrayscale16);
+      }
+      else
+      {
+        NotifySliceImageError(operation);
+        return;
+      }
+    }
+    
+    NotifySliceImageSuccess(operation, *image);
+  }
+  
+  void OrthancSlicesLoader::ParseSliceImagePam(const OrthancApiClient::BinaryResponseReadyMessage& message)
+  {
+    const Operation& operation = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload());
+    std::unique_ptr<Orthanc::ImageAccessor>  image;
+
+    try
+    {
+      image.reset(new Orthanc::PamReader);
+      dynamic_cast<Orthanc::PamReader&>(*image).ReadFromMemory(message.GetAnswer(), message.GetAnswerSize());
+    }
+    catch (Orthanc::OrthancException&)
+    {
+      NotifySliceImageError(operation);
+      return;
+    }
+
+    if (image->GetWidth() != operation.GetSlice().GetWidth() ||
+        image->GetHeight() != operation.GetSlice().GetHeight())
+    {
+      NotifySliceImageError(operation);
+      return;
+    }
+
+    if (operation.GetSlice().GetConverter().GetExpectedPixelFormat() ==
+        Orthanc::PixelFormat_SignedGrayscale16)
+    {
+      if (image->GetFormat() == Orthanc::PixelFormat_Grayscale16)
+      {
+        image->SetFormat(Orthanc::PixelFormat_SignedGrayscale16);
+      }
+      else
+      {
+        NotifySliceImageError(operation);
+        return;
+      }
+    }
+
+    NotifySliceImageSuccess(operation, *image);
+  }
+
+
+  void OrthancSlicesLoader::ParseSliceImageJpeg(const OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    const Operation& operation = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload());
+
+    const Json::Value& encoded = message.GetJson();
+    if (encoded.type() != Json::objectValue ||
+        !encoded.isMember("Orthanc") ||
+        encoded["Orthanc"].type() != Json::objectValue)
+    {
+      NotifySliceImageError(operation);
+      return;
+    }
+    
+    const Json::Value& info = encoded["Orthanc"];
+    if (!info.isMember("PixelData") ||
+        !info.isMember("Stretched") ||
+        !info.isMember("Compression") ||
+        info["Compression"].type() != Json::stringValue ||
+        info["PixelData"].type() != Json::stringValue ||
+        info["Stretched"].type() != Json::booleanValue ||
+        info["Compression"].asString() != "Jpeg")
+    {
+      NotifySliceImageError(operation);
+      return;
+    }
+    
+    bool isSigned = false;
+    bool isStretched = info["Stretched"].asBool();
+    
+    if (info.isMember("IsSigned"))
+    {
+      if (info["IsSigned"].type() != Json::booleanValue)
+      {
+        NotifySliceImageError(operation);
+        return;
+      }
+      else
+      {
+        isSigned = info["IsSigned"].asBool();
+      }
+    }
+    
+    std::unique_ptr<Orthanc::ImageAccessor> reader;
+    
+    {
+      std::string jpeg;
+      //Orthanc::Toolbox::DecodeBase64(jpeg, info["PixelData"].asString());
+      jpeg = base64_decode(info["PixelData"].asString());
+      
+      try
+      {
+        reader.reset(new Orthanc::JpegReader);
+        dynamic_cast<Orthanc::JpegReader&>(*reader).ReadFromMemory(jpeg);
+      }
+      catch (Orthanc::OrthancException&)
+      {
+        NotifySliceImageError(operation);
+        return;
+      }
+    }
+    
+    Orthanc::PixelFormat expectedFormat =
+      operation.GetSlice().GetConverter().GetExpectedPixelFormat();
+    
+    if (reader->GetFormat() == Orthanc::PixelFormat_RGB24)  // This is a color image
+    {
+      if (expectedFormat != Orthanc::PixelFormat_RGB24)
+      {
+        NotifySliceImageError(operation);
+        return;
+      }
+      
+      if (isSigned || isStretched)
+      {
+        NotifySliceImageError(operation);
+        return;
+      }
+      else
+      {
+        NotifySliceImageSuccess(operation, *reader);
+        return;
+      }
+    }
+    
+    if (reader->GetFormat() != Orthanc::PixelFormat_Grayscale8)
+    {
+      NotifySliceImageError(operation);
+      return;
+    }
+    
+    if (!isStretched)
+    {
+      if (expectedFormat != reader->GetFormat())
+      {
+        NotifySliceImageError(operation);
+        return;
+      }
+      else
+      {
+        NotifySliceImageSuccess(operation, *reader);
+        return;
+      }
+    }
+    
+    int32_t stretchLow = 0;
+    int32_t stretchHigh = 0;
+    
+    if (!info.isMember("StretchLow") ||
+        !info.isMember("StretchHigh") ||
+        info["StretchLow"].type() != Json::intValue ||
+        info["StretchHigh"].type() != Json::intValue)
+    {
+      NotifySliceImageError(operation);
+      return;
+    }
+    
+    stretchLow = info["StretchLow"].asInt();
+    stretchHigh = info["StretchHigh"].asInt();
+    
+    if (stretchLow < -32768 ||
+        stretchHigh > 65535 ||
+        (stretchLow < 0 && stretchHigh > 32767))
+    {
+      // This range cannot be represented with a uint16_t or an int16_t
+      NotifySliceImageError(operation);
+      return;
+    }
+    
+    // Decode a grayscale JPEG 8bpp image coming from the Web viewer
+    std::unique_ptr<Orthanc::ImageAccessor> image
+      (new Orthanc::Image(expectedFormat, reader->GetWidth(), reader->GetHeight(), false));
+
+    Orthanc::ImageProcessing::Convert(*image, *reader);
+    reader.reset();
+    
+    float scaling = static_cast<float>(stretchHigh - stretchLow) / 255.0f;
+    
+    if (!OrthancStone::LinearAlgebra::IsCloseToZero(scaling))
+    {
+      float offset = static_cast<float>(stretchLow) / scaling;
+      Orthanc::ImageProcessing::ShiftScale(*image, offset, scaling, true);
+    }
+    
+    NotifySliceImageSuccess(operation, *image);
+  }
+
+
+  class StringImage : public Orthanc::ImageAccessor
+  {
+  private:
+    std::string  buffer_;
+    
+  public:
+    StringImage(Orthanc::PixelFormat format,
+                unsigned int width,
+                unsigned int height,
+                std::string& buffer)
+    {
+      if (buffer.size() != Orthanc::GetBytesPerPixel(format) * width * height)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+      }
+      
+      buffer_.swap(buffer);  // The source buffer is now empty
+      
+      void* data = (buffer_.empty() ? NULL : &buffer_[0]);
+      
+      AssignWritable(format, width, height,
+                     Orthanc::GetBytesPerPixel(format) * width, data);
+    }
+  };
+  
+  void OrthancSlicesLoader::ParseSliceRawImage(const OrthancApiClient::BinaryResponseReadyMessage& message)
+  {
+    const Operation& operation = dynamic_cast<const OrthancSlicesLoader::Operation&>(message.GetPayload());
+    Orthanc::GzipCompressor compressor;
+    
+    std::string raw;
+    compressor.Uncompress(raw, message.GetAnswer(), message.GetAnswerSize());
+    
+    const Orthanc::DicomImageInformation& info = operation.GetSlice().GetImageInformation();
+    
+    if (info.GetBitsAllocated() == 32 &&
+        info.GetBitsStored() == 32 &&
+        info.GetHighBit() == 31 &&
+        info.GetChannelCount() == 1 &&
+        !info.IsSigned() &&
+        info.GetPhotometricInterpretation() == Orthanc::PhotometricInterpretation_Monochrome2 &&
+        raw.size() == info.GetWidth() * info.GetHeight() * 4)
+    {
+      // This is the case of RT-DOSE (uint32_t values)
+      
+      std::unique_ptr<Orthanc::ImageAccessor> image
+        (new StringImage(Orthanc::PixelFormat_Grayscale32, info.GetWidth(),
+                         info.GetHeight(), raw));
+      
+      // TODO - Only for big endian
+      for (unsigned int y = 0; y < image->GetHeight(); y++)
+      {
+        uint32_t *p = reinterpret_cast<uint32_t*>(image->GetRow(y));
+        for (unsigned int x = 0; x < image->GetWidth(); x++, p++)
+        {
+          *p = le32toh(*p);
+        }
+      }
+      
+      NotifySliceImageSuccess(operation, *image);
+    }
+    else if (info.GetBitsAllocated() == 16 &&
+             info.GetBitsStored() == 16 &&
+             info.GetHighBit() == 15 &&
+             info.GetChannelCount() == 1 &&
+             !info.IsSigned() &&
+             info.GetPhotometricInterpretation() == Orthanc::PhotometricInterpretation_Monochrome2 &&
+             raw.size() == info.GetWidth() * info.GetHeight() * 2)
+    {
+      std::unique_ptr<Orthanc::ImageAccessor> image
+        (new StringImage(Orthanc::PixelFormat_Grayscale16, info.GetWidth(),
+                         info.GetHeight(), raw));
+      
+      // TODO - Big endian ?
+      
+      NotifySliceImageSuccess(operation, *image);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+
+  }
+  
+  
+  OrthancSlicesLoader::OrthancSlicesLoader(boost::shared_ptr<OrthancApiClient> orthanc) :
+    orthanc_(orthanc),
+    state_(State_Initialization)
+  {
+  }
+  
+  
+  void OrthancSlicesLoader::ScheduleLoadSeries(const std::string& seriesId)
+  {
+    if (state_ != State_Initialization)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      state_ = State_LoadingGeometry;
+      orthanc_->GetJsonAsync("/series/" + seriesId + "/instances-tags",
+                             new DeprecatedCallable<OrthancSlicesLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &OrthancSlicesLoader::ParseSeriesGeometry),
+                             new DeprecatedCallable<OrthancSlicesLoader, IWebService::HttpRequestErrorMessage>(GetSharedObserver(), &OrthancSlicesLoader::OnGeometryError),
+                             NULL);
+    }
+  }
+  
+  void OrthancSlicesLoader::ScheduleLoadInstance(const std::string& instanceId)
+  {
+    if (state_ != State_Initialization)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      state_ = State_LoadingGeometry;
+      
+      // Tag "3004-000c" is "Grid Frame Offset Vector", which is
+      // mandatory to read RT DOSE, but is too long to be returned by default
+      orthanc_->GetJsonAsync("/instances/" + instanceId + "/tags?ignore-length=3004-000c",
+                             new DeprecatedCallable<OrthancSlicesLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &OrthancSlicesLoader::ParseInstanceGeometry),
+                             new DeprecatedCallable<OrthancSlicesLoader, IWebService::HttpRequestErrorMessage>(GetSharedObserver(), &OrthancSlicesLoader::OnGeometryError),
+                             Operation::DownloadInstanceGeometry(instanceId));
+    }
+  }
+  
+  
+  void OrthancSlicesLoader::ScheduleLoadFrame(const std::string& instanceId,
+                                              unsigned int frame)
+  {
+    if (state_ != State_Initialization)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      state_ = State_LoadingGeometry;
+
+      orthanc_->GetJsonAsync("/instances/" + instanceId + "/tags",
+                             new DeprecatedCallable<OrthancSlicesLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &OrthancSlicesLoader::ParseFrameGeometry),
+                             new DeprecatedCallable<OrthancSlicesLoader, IWebService::HttpRequestErrorMessage>(GetSharedObserver(), &OrthancSlicesLoader::OnGeometryError),
+                             Operation::DownloadFrameGeometry(instanceId, frame));
+    }
+  }
+  
+  
+  bool OrthancSlicesLoader::IsGeometryReady() const
+  {
+    return state_ == State_GeometryReady;
+  }
+  
+  
+  size_t OrthancSlicesLoader::GetSlicesCount() const
+  {
+    if (state_ != State_GeometryReady)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    
+    return slices_.GetSlicesCount();
+  }
+  
+  
+  const Slice& OrthancSlicesLoader::GetSlice(size_t index) const
+  {
+    if (state_ != State_GeometryReady)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    return dynamic_cast<const Slice&>(slices_.GetSlicePayload(index));
+  }
+  
+  
+  bool OrthancSlicesLoader::LookupSlice(size_t& index,
+                                        const OrthancStone::CoordinateSystem3D& plane) const
+  {
+    if (state_ != State_GeometryReady)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    double distance;
+    return (slices_.LookupClosestSlice(index, distance, plane) &&
+            distance <= GetSlice(index).GetThickness() / 2.0);
+  }
+  
+  
+  void OrthancSlicesLoader::ScheduleSliceImagePng(const Slice& slice,
+                                                  size_t index)
+  {
+    std::string uri = ("/instances/" + slice.GetOrthancInstanceId() + "/frames/" +
+                       boost::lexical_cast<std::string>(slice.GetFrame()));
+    
+    switch (slice.GetConverter().GetExpectedPixelFormat())
+    {
+      case Orthanc::PixelFormat_RGB24:
+        uri += "/preview";
+        break;
+      
+      case Orthanc::PixelFormat_Grayscale16:
+        uri += "/image-uint16";
+        break;
+      
+      case Orthanc::PixelFormat_SignedGrayscale16:
+        uri += "/image-int16";
+        break;
+      
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    
+    orthanc_->GetBinaryAsync(uri, "image/png",
+                             new DeprecatedCallable<OrthancSlicesLoader, 
+                             OrthancApiClient::BinaryResponseReadyMessage>
+                             (GetSharedObserver(), &OrthancSlicesLoader::ParseSliceImagePng),
+                             new DeprecatedCallable<OrthancSlicesLoader, 
+                             IWebService::HttpRequestErrorMessage>
+                             (GetSharedObserver(), &OrthancSlicesLoader::OnSliceImageError),
+                             Operation::DownloadSliceImage(
+                               static_cast<unsigned int>(index), slice, SliceImageQuality_FullPng));
+  }
+  
+  void OrthancSlicesLoader::ScheduleSliceImagePam(const Slice& slice,
+                                                  size_t index)
+  {
+    std::string uri = 
+      ("/instances/" + slice.GetOrthancInstanceId() + "/frames/" +
+       boost::lexical_cast<std::string>(slice.GetFrame()));
+
+    switch (slice.GetConverter().GetExpectedPixelFormat())
+    {
+      case Orthanc::PixelFormat_RGB24:
+        uri += "/preview";
+        break;
+
+      case Orthanc::PixelFormat_Grayscale16:
+        uri += "/image-uint16";
+        break;
+
+      case Orthanc::PixelFormat_SignedGrayscale16:
+        uri += "/image-int16";
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    orthanc_->GetBinaryAsync(uri, "image/x-portable-arbitrarymap",
+                             new DeprecatedCallable<OrthancSlicesLoader, 
+                             OrthancApiClient::BinaryResponseReadyMessage>
+                             (GetSharedObserver(), &OrthancSlicesLoader::ParseSliceImagePam),
+                             new DeprecatedCallable<OrthancSlicesLoader, 
+                             IWebService::HttpRequestErrorMessage>
+                             (GetSharedObserver(), &OrthancSlicesLoader::OnSliceImageError),
+                             Operation::DownloadSliceImage(static_cast<unsigned int>(index), 
+                                                           slice, SliceImageQuality_FullPam));
+  }
+
+
+  
+  void OrthancSlicesLoader::ScheduleSliceImageJpeg(const Slice& slice,
+                                                   size_t index,
+                                                   SliceImageQuality quality)
+  {
+    unsigned int value;
+    
+    switch (quality)
+    {
+      case SliceImageQuality_Jpeg50:
+        value = 50;
+        break;
+
+      case SliceImageQuality_Jpeg90:
+        value = 90;
+        break;
+
+      case SliceImageQuality_Jpeg95:
+        value = 95;
+        break;
+      
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    
+    // This requires the official Web viewer plugin to be installed!
+    std::string uri = ("/web-viewer/instances/jpeg" +
+                       boost::lexical_cast<std::string>(value) +
+                       "-" + slice.GetOrthancInstanceId() + "_" +
+                       boost::lexical_cast<std::string>(slice.GetFrame()));
+
+    orthanc_->GetJsonAsync(uri,
+                           new DeprecatedCallable<OrthancSlicesLoader, 
+                           OrthancApiClient::JsonResponseReadyMessage>
+                           (GetSharedObserver(), &OrthancSlicesLoader::ParseSliceImageJpeg),
+                           new DeprecatedCallable<OrthancSlicesLoader, 
+                           IWebService::HttpRequestErrorMessage>
+                           (GetSharedObserver(), &OrthancSlicesLoader::OnSliceImageError),
+                           Operation::DownloadSliceImage(
+                             static_cast<unsigned int>(index), slice, quality));
+  }
+  
+  
+  
+  void OrthancSlicesLoader::ScheduleLoadSliceImage(size_t index,
+                                                   SliceImageQuality quality)
+  {
+    if (state_ != State_GeometryReady)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    
+    const Slice& slice = GetSlice(index);
+    
+    if (slice.HasOrthancDecoding())
+    {
+      switch (quality)
+      {
+        case SliceImageQuality_FullPng:
+          ScheduleSliceImagePng(slice, index);
+          break;
+        case SliceImageQuality_FullPam:
+          ScheduleSliceImagePam(slice, index);
+          break;
+        default:
+          ScheduleSliceImageJpeg(slice, index, quality);
+      }
+    }
+    else
+    {
+      std::string uri = ("/instances/" + slice.GetOrthancInstanceId() + "/frames/" +
+                         boost::lexical_cast<std::string>(slice.GetFrame()) + "/raw.gz");
+      orthanc_->GetBinaryAsync(uri, IWebService::HttpHeaders(),
+                               new DeprecatedCallable<OrthancSlicesLoader, 
+                               OrthancApiClient::BinaryResponseReadyMessage>
+                               (GetSharedObserver(), &OrthancSlicesLoader::ParseSliceRawImage),
+                               new DeprecatedCallable<OrthancSlicesLoader,
+                               IWebService::HttpRequestErrorMessage>
+                               (GetSharedObserver(), &OrthancSlicesLoader::OnSliceImageError),
+                               Operation::DownloadSliceRawImage(
+                                 static_cast<unsigned int>(index), slice));
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/OrthancSlicesLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,211 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Messages/IObservable.h"
+#include "../../Messages/ObserverBase.h"
+#include "../../StoneEnumerations.h"
+#include "../../Toolbox/SlicesSorter.h"
+#include "IWebService.h"
+#include "OrthancApiClient.h"
+#include "Slice.h"
+
+#include <Images/Image.h>
+
+
+namespace Deprecated
+{
+  class OrthancSlicesLoader :
+    public OrthancStone::IObservable,
+    public OrthancStone::ObserverBase<OrthancSlicesLoader>
+  {
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, SliceGeometryReadyMessage, OrthancSlicesLoader);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, SliceGeometryErrorMessage, OrthancSlicesLoader);
+
+    
+    class SliceImageReadyMessage : public OrthancStone::OriginMessage<OrthancSlicesLoader>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      unsigned int                   sliceIndex_;
+      const Slice&                   slice_;
+      const Orthanc::ImageAccessor&  image_;
+      SliceImageQuality              effectiveQuality_;
+
+    public:
+      SliceImageReadyMessage(const OrthancSlicesLoader& origin,
+                             unsigned int sliceIndex,
+                             const Slice& slice,
+                             const Orthanc::ImageAccessor& image,
+                             SliceImageQuality effectiveQuality) :
+        OriginMessage(origin),
+        sliceIndex_(sliceIndex),
+        slice_(slice),
+        image_(image),
+        effectiveQuality_(effectiveQuality)
+      {
+      }
+
+      unsigned int GetSliceIndex() const
+      {
+        return sliceIndex_;
+      }
+
+      const Slice& GetSlice() const
+      {
+        return slice_;
+      }
+
+      const Orthanc::ImageAccessor& GetImage() const
+      {
+        return image_;
+      }
+
+      SliceImageQuality GetEffectiveQuality() const
+      {
+        return effectiveQuality_;
+      }        
+    };
+    
+
+    class SliceImageErrorMessage : public OrthancStone::OriginMessage<OrthancSlicesLoader>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const Slice&       slice_;
+      unsigned int       sliceIndex_;
+      SliceImageQuality  effectiveQuality_;
+
+    public:
+      SliceImageErrorMessage(const OrthancSlicesLoader& origin,
+                             unsigned int sliceIndex,
+                             const Slice& slice,
+                             SliceImageQuality effectiveQuality) :
+        OriginMessage(origin),
+        slice_(slice),
+        sliceIndex_(sliceIndex),
+        effectiveQuality_(effectiveQuality)
+      {
+      }
+      unsigned int GetSliceIndex() const
+      {
+        return sliceIndex_;
+      }
+
+      const Slice& GetSlice() const
+      {
+        return slice_;
+      }
+
+      SliceImageQuality GetEffectiveQuality() const
+      {
+        return effectiveQuality_;
+      }        
+    };
+    
+  private:
+    enum State
+    {
+      State_Error,
+      State_Initialization,
+      State_LoadingGeometry,
+      State_GeometryReady
+    };
+    
+    enum Mode
+    {
+      Mode_SeriesGeometry,
+      Mode_InstanceGeometry,
+      Mode_FrameGeometry,
+      Mode_LoadImage,
+      Mode_LoadRawImage,
+      Mode_LoadDicomFile
+    };
+
+    class Operation;
+
+    boost::shared_ptr<OrthancApiClient>  orthanc_;
+    State         state_;
+    OrthancStone::SlicesSorter  slices_;
+
+    void NotifySliceImageSuccess(const Operation& operation,
+                                 const Orthanc::ImageAccessor& image);
+    
+    void NotifySliceImageError(const Operation& operation);
+
+    void OnGeometryError(const IWebService::HttpRequestErrorMessage& message);
+
+    void OnSliceImageError(const IWebService::HttpRequestErrorMessage& message);
+
+    void ParseSeriesGeometry(const OrthancApiClient::JsonResponseReadyMessage& message);
+
+    void ParseInstanceGeometry(const OrthancApiClient::JsonResponseReadyMessage& message);
+
+    void ParseFrameGeometry(const OrthancApiClient::JsonResponseReadyMessage& message);
+
+    void ParseSliceImagePng(const OrthancApiClient::BinaryResponseReadyMessage& message);
+
+    void ParseSliceImagePam(const OrthancApiClient::BinaryResponseReadyMessage& message);
+
+    void ParseSliceImageJpeg(const OrthancApiClient::JsonResponseReadyMessage& message);
+
+    void ParseSliceRawImage(const OrthancApiClient::BinaryResponseReadyMessage& message);
+
+    void ScheduleSliceImagePng(const Slice& slice,
+                               size_t index);
+
+    void ScheduleSliceImagePam(const Slice& slice,
+                               size_t index);
+
+    void ScheduleSliceImageJpeg(const Slice& slice,
+                                size_t index,
+                                SliceImageQuality quality);
+
+    void SortAndFinalizeSlices();
+    
+  public:
+    OrthancSlicesLoader(//ISliceLoaderObserver& callback,
+      boost::shared_ptr<OrthancApiClient> orthancApi);
+
+    void ScheduleLoadSeries(const std::string& seriesId);
+
+    void ScheduleLoadInstance(const std::string& instanceId);
+
+    void ScheduleLoadFrame(const std::string& instanceId,
+                           unsigned int frame);
+
+    bool IsGeometryReady() const;
+
+    size_t GetSlicesCount() const;
+
+    const Slice& GetSlice(size_t index) const;
+
+    bool LookupSlice(size_t& index,
+                     const OrthancStone::CoordinateSystem3D& plane) const;
+
+    void ScheduleLoadSliceImage(size_t index,
+                                SliceImageQuality requestedQuality);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/ParallelSlices.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,215 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ParallelSlices.h"
+
+#include "../../Toolbox/GeometryToolbox.h"
+#include "../../Volumes/ImageBuffer3D.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  ParallelSlices::ParallelSlices()
+  {
+    Clear();
+  }
+
+
+  ParallelSlices::ParallelSlices(const ParallelSlices& other)
+  {
+    normal_ = other.normal_;
+
+    slices_.resize(other.slices_.size());
+
+    for (size_t i = 0; i < slices_.size(); i++)
+    {
+      assert(other.slices_[i] != NULL);
+      slices_[i] = new OrthancStone::CoordinateSystem3D(*other.slices_[i]);
+    }
+  }
+
+
+  void ParallelSlices::Clear()
+  {
+    for (size_t i = 0; i < slices_.size(); i++)
+    {
+      if (slices_[i] != NULL)
+      {
+        delete slices_[i];
+        slices_[i] = NULL;
+      }
+    }
+
+    slices_.clear();
+    OrthancStone::LinearAlgebra::AssignVector(normal_, 0, 0, 1);
+  }
+  
+
+  ParallelSlices::~ParallelSlices()
+  {
+    Clear();
+  }
+
+
+  void ParallelSlices::AddSlice(const OrthancStone::CoordinateSystem3D& slice)
+  {
+    if (slices_.empty())
+    {
+      normal_ = slice.GetNormal();
+      slices_.push_back(new OrthancStone::CoordinateSystem3D(slice));
+    }
+    else if (OrthancStone::GeometryToolbox::IsParallel(slice.GetNormal(), normal_))
+    {
+      slices_.push_back(new OrthancStone::CoordinateSystem3D(slice));
+    }
+    else
+    {
+      LOG(ERROR) << "Trying to add a slice that is not parallel to the previous ones";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  void ParallelSlices::AddSlice(const OrthancStone::Vector& origin,
+                                const OrthancStone::Vector& axisX,
+                                const OrthancStone::Vector& axisY)
+  {
+    OrthancStone::CoordinateSystem3D slice(origin, axisX, axisY);
+    AddSlice(slice);
+  }
+
+
+  const OrthancStone::CoordinateSystem3D& ParallelSlices::GetSlice(size_t index) const
+  {
+    if (index >= slices_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      return *slices_[index];
+    }
+  }
+
+
+  bool ParallelSlices::ComputeClosestSlice(size_t& closestSlice,
+                                           double& closestDistance,
+                                           const OrthancStone::Vector& origin) const
+  {
+    if (slices_.empty())
+    {
+      return false;
+    }
+
+    double reference = boost::numeric::ublas::inner_prod(origin, normal_);
+
+    closestSlice = 0;
+    closestDistance = std::numeric_limits<double>::infinity();
+
+    for (size_t i = 0; i < slices_.size(); i++)
+    {
+      double distance = fabs(boost::numeric::ublas::inner_prod(slices_[i]->GetOrigin(), normal_) - reference);
+
+      if (distance < closestDistance)
+      {
+        closestSlice = i;
+        closestDistance = distance;
+      }
+    }
+
+    return true;
+  }
+
+
+  ParallelSlices* ParallelSlices::Reverse() const
+  {
+    std::unique_ptr<ParallelSlices> reversed(new ParallelSlices);
+
+    for (size_t i = slices_.size(); i > 0; i--)
+    {
+      const OrthancStone::CoordinateSystem3D& slice = *slices_[i - 1];
+
+      reversed->AddSlice(slice.GetOrigin(),
+                         -slice.GetAxisX(),
+                         slice.GetAxisY());
+    }
+
+    return reversed.release();
+  }
+
+
+  ParallelSlices* ParallelSlices::FromVolumeImage(const OrthancStone::VolumeImageGeometry& geometry,
+                                                  OrthancStone::VolumeProjection projection)
+  {
+    const OrthancStone::Vector dimensions = geometry.GetVoxelDimensions(OrthancStone::VolumeProjection_Axial);
+    const OrthancStone::CoordinateSystem3D& axial = geometry.GetAxialGeometry();
+    
+    std::unique_ptr<ParallelSlices> result(new ParallelSlices);
+
+    switch (projection)
+    {
+      case OrthancStone::VolumeProjection_Axial:
+        for (unsigned int z = 0; z < geometry.GetDepth(); z++)
+        {
+          OrthancStone::Vector origin = axial.GetOrigin();
+          origin += static_cast<double>(z) * dimensions[2] * axial.GetNormal();
+
+          result->AddSlice(origin,
+                           axial.GetAxisX(),
+                           axial.GetAxisY());
+        }
+        break;
+
+      case OrthancStone::VolumeProjection_Coronal:
+        for (unsigned int y = 0; y < geometry.GetHeight(); y++)
+        {
+          OrthancStone::Vector origin = axial.GetOrigin();
+          origin += static_cast<double>(y) * dimensions[1] * axial.GetAxisY();
+          origin += static_cast<double>(geometry.GetDepth() - 1) * dimensions[2] * axial.GetNormal();
+
+          result->AddSlice(origin,
+                           axial.GetAxisX(),
+                           -axial.GetNormal());
+        }
+        break;
+
+      case OrthancStone::VolumeProjection_Sagittal:
+        for (unsigned int x = 0; x < geometry.GetWidth(); x++)
+        {
+          OrthancStone::Vector origin = axial.GetOrigin();
+          origin += static_cast<double>(x) * dimensions[0] * axial.GetAxisX();
+          origin += static_cast<double>(geometry.GetDepth() - 1) * dimensions[2] * axial.GetNormal();
+
+          result->AddSlice(origin,
+                           axial.GetAxisY(),
+                           -axial.GetNormal());
+        }
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    return result.release();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/ParallelSlices.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,73 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Toolbox/CoordinateSystem3D.h"
+#include "../../Volumes/VolumeImageGeometry.h"
+
+namespace Deprecated
+{
+  class ParallelSlices : public boost::noncopyable
+  {
+  private:
+    OrthancStone::Vector  normal_;
+    std::vector<OrthancStone::CoordinateSystem3D*>  slices_;
+    
+    ParallelSlices& operator= (const ParallelSlices& other);  // Forbidden
+
+    void Clear();
+
+  public:
+    ParallelSlices();
+
+    ParallelSlices(const ParallelSlices& other);
+
+    ~ParallelSlices();
+
+    const OrthancStone::Vector& GetNormal() const
+    {
+      return normal_;
+    }
+
+    void AddSlice(const OrthancStone::CoordinateSystem3D& slice);
+
+    void AddSlice(const OrthancStone::Vector& origin,
+                  const OrthancStone::Vector& axisX,
+                  const OrthancStone::Vector& axisY);
+
+    size_t GetSliceCount() const
+    {
+      return slices_.size();
+    }
+
+    const OrthancStone::CoordinateSystem3D& GetSlice(size_t index) const;
+
+    bool ComputeClosestSlice(size_t& closestSlice,
+                             double& closestDistance,
+                             const OrthancStone::Vector& origin) const;
+
+    ParallelSlices* Reverse() const;
+
+    static ParallelSlices* FromVolumeImage(const OrthancStone::VolumeImageGeometry& geometry,
+                                           OrthancStone::VolumeProjection projection);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/ParallelSlicesCursor.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,221 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ParallelSlicesCursor.h"
+
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  size_t ParallelSlicesCursor::GetDefaultSlice()
+  {
+    if (slices_.get() == NULL)
+    {
+      return 0;
+    }
+    else
+    {
+      return slices_->GetSliceCount() / 2;
+    }
+  }
+
+
+  size_t ParallelSlicesCursor::GetSliceCount()
+  {
+    if (slices_.get() == NULL)
+    {
+      return 0;
+    }
+    else
+    {
+      return slices_->GetSliceCount();
+    }
+  }
+
+
+  OrthancStone::CoordinateSystem3D ParallelSlicesCursor::GetSlice(size_t slice)
+  {
+    if (slices_.get() == NULL)
+    {
+      return OrthancStone::CoordinateSystem3D();
+    }
+    else
+    {
+      return slices_->GetSlice(slice);
+    }
+  }
+
+
+  void ParallelSlicesCursor::SetGeometry(const ParallelSlices& slices)
+  {
+    slices_.reset(new ParallelSlices(slices));
+
+    currentSlice_ = GetDefaultSlice();
+  }
+
+
+  OrthancStone::CoordinateSystem3D ParallelSlicesCursor::GetCurrentSlice()
+  {
+    if (slices_.get() != NULL &&
+        currentSlice_ < slices_->GetSliceCount())
+    {
+      return slices_->GetSlice(currentSlice_);
+    }
+    else
+    {
+      return OrthancStone::CoordinateSystem3D();  // No slice is available, return the canonical geometry
+    }
+  }
+
+
+  bool ParallelSlicesCursor::SetDefaultSlice()
+  {
+    size_t slice = GetDefaultSlice();
+
+    if (currentSlice_ != slice)
+    {
+      currentSlice_ = slice;
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+  bool ParallelSlicesCursor::ApplyOffset(OrthancStone::SliceOffsetMode mode,
+                                         int offset)
+  {
+    if (slices_.get() == NULL)
+    {
+      return false;
+    }
+
+    int count = static_cast<int>(slices_->GetSliceCount());
+    if (count == 0)
+    {
+      return false;
+    }
+
+    int slice;
+    if (static_cast<int>(currentSlice_) >= count)
+    {
+      slice = count - 1;
+    }
+    else
+    {
+      slice = static_cast<int>(currentSlice_);
+    }
+
+    switch (mode)
+    {
+      case OrthancStone::SliceOffsetMode_Absolute:
+      {
+        slice = offset;
+        break;
+      }
+
+      case OrthancStone::SliceOffsetMode_Relative:
+      {
+        slice += offset;
+        break;
+      }
+
+      case OrthancStone::SliceOffsetMode_Loop:
+      {
+        slice += offset;
+        while (slice < 0)
+        {
+          slice += count;
+        }
+
+        while (slice >= count)
+        {
+          slice -= count;
+        }
+
+        break;
+      }
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (slice < 0)
+    {
+      slice = 0;
+    }
+
+    if (slice >= count)
+    {
+      slice = count - 1;
+    }
+
+    if (slice != static_cast<int>(currentSlice_))
+    {
+      currentSlice_ = static_cast<int>(slice);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+  bool ParallelSlicesCursor::ApplyWheelEvent(OrthancStone::MouseWheelDirection direction,
+                                             OrthancStone::KeyboardModifiers modifiers)
+  {
+    int offset = (modifiers & OrthancStone::KeyboardModifiers_Control ? 10 : 1);
+
+    switch (direction)
+    {
+      case OrthancStone::MouseWheelDirection_Down:
+        return ApplyOffset(OrthancStone::SliceOffsetMode_Relative, -offset);
+
+      case OrthancStone::MouseWheelDirection_Up:
+        return ApplyOffset(OrthancStone::SliceOffsetMode_Relative, offset);
+
+      default:
+        return false;
+    }
+  }
+
+
+  bool ParallelSlicesCursor::LookupSliceContainingPoint(const OrthancStone::Vector& p)
+  {
+    size_t slice;
+    double distance;
+
+    if (slices_.get() != NULL &&
+        slices_->ComputeClosestSlice(slice, distance, p))
+    {
+      if (currentSlice_ != slice)
+      {
+        currentSlice_ = slice;
+        return true;
+      }
+    }
+
+    return false;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/ParallelSlicesCursor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,67 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ParallelSlices.h"
+#include "../../StoneEnumerations.h"
+
+#include <Compatibility.h>
+
+namespace Deprecated
+{
+  class ParallelSlicesCursor : public boost::noncopyable
+  {
+  private:
+    std::unique_ptr<ParallelSlices>  slices_;
+    size_t                         currentSlice_;
+
+    size_t GetDefaultSlice();
+
+  public:
+    ParallelSlicesCursor() :
+      currentSlice_(0)
+    {
+    }
+
+    void SetGeometry(const ParallelSlices& slices);
+
+    size_t GetSliceCount();
+
+    OrthancStone::CoordinateSystem3D GetSlice(size_t slice);
+
+    OrthancStone::CoordinateSystem3D GetCurrentSlice();
+
+    // Returns "true" iff. the slice has actually changed
+    bool SetDefaultSlice();
+
+    // Returns "true" iff. the slice has actually changed
+    bool ApplyOffset(OrthancStone::SliceOffsetMode mode,
+                     int offset);
+
+    // Returns "true" iff. the slice has actually changed
+    bool ApplyWheelEvent(OrthancStone::MouseWheelDirection direction,
+                         OrthancStone::KeyboardModifiers modifiers);
+
+    // Returns "true" iff. the slice has actually changed
+    bool LookupSliceContainingPoint(const OrthancStone::Vector& p);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/Slice.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,367 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "Slice.h"
+
+#include "../../StoneEnumerations.h"
+#include "../../Toolbox/GeometryToolbox.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+#include <boost/lexical_cast.hpp>
+
+namespace Deprecated
+{
+  static bool ParseDouble(double& target,
+                          const std::string& source)
+  {
+    try
+    {
+      target = boost::lexical_cast<double>(source);
+      return true;
+    }
+    catch (boost::bad_lexical_cast&)
+    {
+      return false;
+    }
+  }
+
+  Slice* Slice::Clone() const
+  {
+    std::unique_ptr<Slice> target(new Slice());
+
+    target->type_ = type_;
+    target->orthancInstanceId_ = orthancInstanceId_;
+    target->sopClassUid_ = sopClassUid_;
+    target->frame_ = frame_;
+    target->frameCount_ = frameCount_;
+    target->geometry_ = geometry_;
+    target->pixelSpacingX_ = pixelSpacingX_;
+    target->pixelSpacingY_ = pixelSpacingY_;
+    target->thickness_ = thickness_;
+    target->width_ = width_;
+    target->height_ = height_;
+    target->converter_ = converter_;
+    if (imageInformation_.get() != NULL)
+      target->imageInformation_.reset(imageInformation_->Clone());
+
+    return target.release();
+  }
+  
+  bool Slice::ComputeRTDoseGeometry(const Orthanc::DicomMap& dataset,
+                                    unsigned int frame)
+  {
+    // http://dicom.nema.org/medical/Dicom/2016a/output/chtml/part03/sect_C.8.8.3.2.html
+
+    {
+      std::string increment;
+
+      if (dataset.LookupStringValue(increment, Orthanc::DICOM_TAG_FRAME_INCREMENT_POINTER, false))
+      {
+        Orthanc::Toolbox::ToUpperCase(increment);
+        if (increment != "3004,000C")  // This is the "Grid Frame Offset Vector" tag
+        {
+          LOG(ERROR) << "Bad value for the \"FrameIncrementPointer\" tag";
+          return false;
+        }
+      }
+    }
+
+    std::string offsetTag;
+
+    if (!dataset.LookupStringValue(offsetTag, Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR, false) ||
+        offsetTag.empty())
+    {
+      LOG(ERROR) << "Cannot read the \"GridFrameOffsetVector\" tag, check you are using Orthanc >= 1.3.1";
+      return false;
+    }
+
+    std::vector<std::string> offsets;
+    Orthanc::Toolbox::TokenizeString(offsets, offsetTag, '\\');
+
+    if (frameCount_ <= 1 ||
+        offsets.size() < frameCount_ ||
+        offsets.size() < 2 ||
+        frame >= frameCount_)
+    {
+      LOG(ERROR) << "No information about the 3D location of some slice(s) in a RT DOSE";
+      return false;
+    }
+
+    double offset0, offset1, z;
+
+    if (!ParseDouble(offset0, offsets[0]) ||
+        !ParseDouble(offset1, offsets[1]) ||
+        !ParseDouble(z, offsets[frame]))
+    {
+      LOG(ERROR) << "Invalid syntax";
+      return false;
+    }
+
+    if (!OrthancStone::LinearAlgebra::IsCloseToZero(offset0))
+    {
+      LOG(ERROR) << "Invalid syntax";
+      return false;
+    }
+
+    geometry_ = OrthancStone::CoordinateSystem3D(geometry_.GetOrigin() + z * geometry_.GetNormal(),
+                                                 //+ 650 * geometry_.GetAxisX(),
+                                                 geometry_.GetAxisX(),
+                                                 geometry_.GetAxisY());
+
+    thickness_ = offset1 - offset0;
+    if (thickness_ < 0)
+    {
+      thickness_ = -thickness_;
+    }
+
+    return true;
+  }
+
+  
+  bool Slice::ParseOrthancFrame(const Orthanc::DicomMap& dataset,
+                                const std::string& instanceId,
+                                unsigned int frame)
+  {
+    orthancInstanceId_ = instanceId;
+    frame_ = frame;
+    type_ = Type_OrthancDecodableFrame;
+    imageInformation_.reset(new Orthanc::DicomImageInformation(dataset));
+
+    if (!dataset.LookupStringValue(sopClassUid_, Orthanc::DICOM_TAG_SOP_CLASS_UID, false) ||
+        sopClassUid_.empty())
+    {
+      LOG(ERROR) << "Instance without a SOP class UID";
+      return false; 
+    }
+
+    if (!dataset.ParseUnsignedInteger32(frameCount_, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
+    {
+      frameCount_ = 1;   // Assume instance with one frame
+    }
+
+    if (frame >= frameCount_)
+    {
+      return false;
+    }
+
+    if (!dataset.ParseUnsignedInteger32(width_, Orthanc::DICOM_TAG_COLUMNS) ||
+        !dataset.ParseUnsignedInteger32(height_, Orthanc::DICOM_TAG_ROWS))
+    {
+      return false;
+    }
+
+    thickness_ = 100.0 * std::numeric_limits<double>::epsilon();
+
+    std::string tmp;
+    if (dataset.LookupStringValue(tmp, Orthanc::DICOM_TAG_SLICE_THICKNESS, false))
+    {
+      if (!tmp.empty() &&
+          !ParseDouble(thickness_, tmp))
+      {
+        return false;  // Syntax error
+      }
+    }
+    
+    converter_.ReadParameters(dataset);
+
+    OrthancStone::GeometryToolbox::GetPixelSpacing(pixelSpacingX_, pixelSpacingY_, dataset);
+
+    std::string position, orientation;
+    if (dataset.LookupStringValue(position, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, false) &&
+        dataset.LookupStringValue(orientation, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, false))
+    {
+      geometry_ = OrthancStone::CoordinateSystem3D(position, orientation);
+
+      bool ok = true;
+
+      switch (OrthancStone::StringToSopClassUid(sopClassUid_))
+      {
+        case OrthancStone::SopClassUid_RTDose:
+          type_ = Type_OrthancRawFrame;
+          ok = ComputeRTDoseGeometry(dataset, frame);
+          break;
+            
+        default:
+          break;
+      }
+
+      if (!ok)
+      {
+        LOG(ERROR) << "Cannot deduce the 3D location of frame " << frame
+                   << " in instance " << instanceId << ", whose SOP class UID is: " << sopClassUid_;
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+  
+  const std::string Slice::GetOrthancInstanceId() const
+  {
+    if (type_ == Type_OrthancDecodableFrame ||
+        type_ == Type_OrthancRawFrame)
+    {
+      return orthancInstanceId_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }   
+  }
+
+  
+  unsigned int Slice::GetFrame() const
+  {
+    if (type_ == Type_Invalid)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+        
+    return frame_;
+  }
+
+  
+  const OrthancStone::CoordinateSystem3D& Slice::GetGeometry() const
+  {
+    if (type_ == Type_Invalid)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+        
+    return geometry_;
+  }
+
+  
+  double Slice::GetThickness() const
+  {
+    if (type_ == Type_Invalid)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+        
+    return thickness_;
+  }
+
+  
+  double Slice::GetPixelSpacingX() const
+  {
+    if (type_ == Type_Invalid)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+        
+    return pixelSpacingX_;
+  }
+
+  
+  double Slice::GetPixelSpacingY() const
+  {
+    if (type_ == Type_Invalid)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+        
+    return pixelSpacingY_;
+  }
+
+  
+  unsigned int Slice::GetWidth() const
+  {
+    if (type_ == Type_Invalid)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+        
+    return width_;
+  }
+
+  
+  unsigned int Slice::GetHeight() const
+  {
+    if (type_ == Type_Invalid)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+        
+    return height_;
+  }
+
+
+  const DicomFrameConverter& Slice::GetConverter() const
+  {
+    if (type_ == Type_Invalid)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+        
+    return converter_;
+  }
+
+
+  bool Slice::ContainsPlane(const OrthancStone::CoordinateSystem3D& plane) const
+  {
+    if (type_ == Type_Invalid)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    bool opposite;
+    return (OrthancStone::GeometryToolbox::IsParallelOrOpposite(opposite,
+                                                                GetGeometry().GetNormal(),
+                                                                plane.GetNormal()) &&
+            OrthancStone::LinearAlgebra::IsNear(GetGeometry().ProjectAlongNormal(GetGeometry().GetOrigin()),
+                                                GetGeometry().ProjectAlongNormal(plane.GetOrigin()),
+                                                thickness_ / 2.0));
+  }
+
+  
+  void Slice::GetExtent(std::vector<OrthancStone::Vector>& points) const
+  {
+    double sx = GetPixelSpacingX();
+    double sy = GetPixelSpacingY();
+    double w = static_cast<double>(GetWidth());
+    double h = static_cast<double>(GetHeight());
+
+    points.clear();
+    points.push_back(GetGeometry().MapSliceToWorldCoordinates(-0.5      * sx, -0.5      * sy));
+    points.push_back(GetGeometry().MapSliceToWorldCoordinates((w - 0.5) * sx, -0.5      * sy));
+    points.push_back(GetGeometry().MapSliceToWorldCoordinates(-0.5      * sx, (h - 0.5) * sy));
+    points.push_back(GetGeometry().MapSliceToWorldCoordinates((w - 0.5) * sx, (h - 0.5) * sy));
+  }
+
+
+  const Orthanc::DicomImageInformation& Slice::GetImageInformation() const
+  {
+    if (imageInformation_.get() == NULL)
+    {
+      // Only available if constructing the "Slice" object with a DICOM map
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return *imageInformation_;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/Slice.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,155 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Toolbox/CoordinateSystem3D.h"
+#include "DicomFrameConverter.h"
+
+#include <DicomFormat/DicomImageInformation.h>
+#include <IDynamicObject.h>
+
+namespace Deprecated
+{
+  // TODO - Remove this class
+  class Slice :
+    public Orthanc::IDynamicObject  /* to be used as a payload of SlicesSorter */
+  {
+  private:
+    enum Type
+    {
+      Type_Invalid,
+      Type_Standalone,
+      Type_OrthancDecodableFrame,
+      Type_OrthancRawFrame
+      // TODO A slice could come from some DICOM file (URL)
+    };
+
+    bool ComputeRTDoseGeometry(const Orthanc::DicomMap& dataset,
+                               unsigned int frame);
+
+    Type                 type_;
+    std::string          orthancInstanceId_;
+    std::string          sopClassUid_;
+    unsigned int         frame_;
+    unsigned int         frameCount_;   // TODO : Redundant with "imageInformation_"
+    OrthancStone::CoordinateSystem3D   geometry_;
+    double               pixelSpacingX_;
+    double               pixelSpacingY_;
+    double               thickness_;
+    unsigned int         width_;   // TODO : Redundant with "imageInformation_"
+    unsigned int         height_;   // TODO : Redundant with "imageInformation_"
+    DicomFrameConverter  converter_;   // TODO : Partially redundant with "imageInformation_"
+
+    std::unique_ptr<Orthanc::DicomImageInformation>  imageInformation_;
+
+  public:
+    Slice() :
+      type_(Type_Invalid)
+    {
+    }
+
+
+    // this constructor is used to reference, i.e, a slice that is being loaded
+    Slice(const std::string& orthancInstanceId,
+          unsigned int frame) :
+      type_(Type_Invalid),
+      orthancInstanceId_(orthancInstanceId),
+      frame_(frame)
+    {        
+    }
+
+    // TODO Is this constructor the best way to go to tackle missing
+    // layers within SliceViewerWidget?
+    Slice(const OrthancStone::CoordinateSystem3D& plane,
+          double thickness) :
+      type_(Type_Standalone),
+      frame_(0),
+      frameCount_(0),
+      geometry_(plane),
+      pixelSpacingX_(1),
+      pixelSpacingY_(1),
+      thickness_(thickness),
+      width_(0),
+      height_(0)
+    {      
+    }
+
+    Slice(const OrthancStone::CoordinateSystem3D& plane,
+          double pixelSpacingX,
+          double pixelSpacingY,
+          double thickness,
+          unsigned int width,
+          unsigned int height,
+          const DicomFrameConverter& converter) :
+      type_(Type_Standalone),
+      frameCount_(1),
+      geometry_(plane),
+      pixelSpacingX_(pixelSpacingX),
+      pixelSpacingY_(pixelSpacingY),
+      thickness_(thickness),
+      width_(width),
+      height_(height),
+      converter_(converter)
+    {
+    }
+
+    bool IsValid() const
+    {
+      return type_ != Type_Invalid;
+    } 
+
+    bool ParseOrthancFrame(const Orthanc::DicomMap& dataset,
+                           const std::string& instanceId,
+                           unsigned int frame);
+
+    bool HasOrthancDecoding() const
+    {
+      return type_ == Type_OrthancDecodableFrame;
+    }
+
+    const std::string GetOrthancInstanceId() const;
+
+    unsigned int GetFrame() const;
+
+    const OrthancStone::CoordinateSystem3D& GetGeometry() const;
+
+    double GetThickness() const;
+
+    double GetPixelSpacingX() const;
+
+    double GetPixelSpacingY() const;
+
+    unsigned int GetWidth() const;
+
+    unsigned int GetHeight() const;
+
+    const DicomFrameConverter& GetConverter() const;
+
+    bool ContainsPlane(const OrthancStone::CoordinateSystem3D& plane) const;
+
+    void GetExtent(std::vector<OrthancStone::Vector>& points) const;
+
+    const Orthanc::DicomImageInformation& GetImageInformation() const;
+
+    Slice* Clone() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/ViewportGeometry.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,217 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ViewportGeometry.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+#include <boost/math/special_functions/round.hpp>
+
+namespace Deprecated
+{
+  void ViewportGeometry::ComputeTransform()
+  {
+    // The following lines must be read in reverse order!
+    cairo_matrix_t tmp;
+    
+    // Bring the center of the scene to the center of the view
+    cairo_matrix_init_translate(&transform_, 
+                                panX_ + static_cast<double>(width_) / 2.0, 
+                                panY_ + static_cast<double>(height_) / 2.0);
+
+    // Apply the zoom around (0,0)
+    cairo_matrix_init_scale(&tmp, zoom_, zoom_);
+    cairo_matrix_multiply(&transform_, &tmp, &transform_);
+
+    // Bring the center of the scene to (0,0)
+    cairo_matrix_init_translate(&tmp,
+                                -(sceneExtent_.GetX1() + sceneExtent_.GetX2()) / 2.0,
+                                -(sceneExtent_.GetY1() + sceneExtent_.GetY2()) / 2.0);
+    cairo_matrix_multiply(&transform_, &tmp, &transform_);
+  }
+
+
+  ViewportGeometry::ViewportGeometry()
+  {
+    width_ = 0;
+    height_ = 0;
+
+    zoom_ = 1;
+    panX_ = 0;
+    panY_ = 0;
+
+    ComputeTransform();
+  }
+
+
+  void ViewportGeometry::SetDisplaySize(unsigned int width,
+                                        unsigned int height)
+  {
+    if (width_ != width ||
+        height_ != height)
+    {
+      LOG(INFO) << "New display size: " << width << "x" << height;
+
+      width_ = width;
+      height_ = height;
+
+      ComputeTransform();
+    }
+  }
+
+
+  void ViewportGeometry::SetSceneExtent(const OrthancStone::Extent2D& extent)
+  {
+//    LOG(INFO) << "New scene extent: ("
+//              << extent.GetX1() << "," << extent.GetY1() << ") => ("
+//              << extent.GetX2() << "," << extent.GetY2() << ")";
+
+    sceneExtent_ = extent;
+    ComputeTransform();
+  }
+
+
+  void ViewportGeometry::MapDisplayToScene(double& sceneX /* out */,
+                                           double& sceneY /* out */,
+                                           double x,
+                                           double y) const
+  {
+    cairo_matrix_t transform = transform_;
+
+    if (cairo_matrix_invert(&transform) != CAIRO_STATUS_SUCCESS)
+    {
+      LOG(ERROR) << "Cannot invert singular matrix";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    sceneX = x;
+    sceneY = y;
+    cairo_matrix_transform_point(&transform, &sceneX, &sceneY);
+  }
+
+
+  void ViewportGeometry::MapSceneToDisplay(int& displayX /* out */,
+                                           int& displayY /* out */,
+                                           double x,
+                                           double y) const
+  {
+    cairo_matrix_transform_point(&transform_, &x, &y);
+
+    displayX = static_cast<int>(boost::math::iround(x));
+    displayY = static_cast<int>(boost::math::iround(y));
+  }
+
+
+  void ViewportGeometry::MapPixelCenterToScene(std::vector<Touch>& sceneTouches /* out */,
+                                               const std::vector<Touch>& displayTouches) const
+  {
+    double sceneX, sceneY;
+    sceneTouches.clear();
+    for (size_t t = 0; t < displayTouches.size(); t++)
+    {
+      MapPixelCenterToScene(
+        sceneX,
+        sceneY, 
+        static_cast<int>(displayTouches[t].x), 
+        static_cast<int>(displayTouches[t].y));
+      
+      sceneTouches.push_back(Touch((float)sceneX, (float)sceneY));
+    }
+  }
+
+  void ViewportGeometry::MapPixelCenterToScene(double& sceneX,
+                                               double& sceneY,
+                                               int x,
+                                               int y) const
+  {
+    // Take the center of the pixel
+    MapDisplayToScene(sceneX, sceneY,
+                      static_cast<double>(x) + 0.5,
+                      static_cast<double>(y) + 0.5);
+  }
+
+
+  void ViewportGeometry::FitContent()
+  {
+    if (width_ > 0 &&
+        height_ > 0 &&
+        !sceneExtent_.IsEmpty())
+    {
+      double zoomX = static_cast<double>(width_) / (sceneExtent_.GetX2() - sceneExtent_.GetX1());
+      double zoomY = static_cast<double>(height_) / (sceneExtent_.GetY2() - sceneExtent_.GetY1());
+      zoom_ = zoomX < zoomY ? zoomX : zoomY;
+
+      panX_ = 0;
+      panY_ = 0;
+
+      ComputeTransform();
+    }
+  }
+
+
+  void ViewportGeometry::ApplyTransform(OrthancStone::CairoContext& context) const
+  {
+    cairo_set_matrix(context.GetObject(), &transform_);
+  }
+
+
+  void ViewportGeometry::GetPan(double& x,
+                                double& y) const
+  {
+    x = panX_;
+    y = panY_;
+  }
+
+
+  void ViewportGeometry::SetPan(double x,
+                                double y)
+  {
+    panX_ = x;
+    panY_ = y;
+    ComputeTransform();
+  }
+
+
+  void ViewportGeometry::SetZoom(double zoom)
+  {
+    zoom_ = zoom;
+    ComputeTransform();
+  }
+
+
+  OrthancStone::Matrix ViewportGeometry::GetMatrix() const
+  {
+    OrthancStone::Matrix m(3, 3);
+
+    m(0, 0) = transform_.xx;
+    m(0, 1) = transform_.xy;
+    m(0, 2) = transform_.x0;
+    m(1, 0) = transform_.yx;
+    m(1, 1) = transform_.yy;
+    m(1, 2) = transform_.y0;
+    m(2, 0) = 0;
+    m(2, 1) = 0;
+    m(2, 2) = 1;
+    
+    return m;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Toolbox/ViewportGeometry.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,110 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Wrappers/CairoContext.h"
+#include "../../Toolbox/Extent2D.h"
+#include "../../Toolbox/LinearAlgebra.h"
+#include "../Viewport/IMouseTracker.h"  // to include "Touch" definition
+
+namespace Deprecated
+{
+  class ViewportGeometry
+  {
+  private:
+    // Extent of the scene (in world units)
+    OrthancStone::Extent2D   sceneExtent_;
+
+    // Size of the display (in pixels)
+    unsigned int  width_;
+    unsigned int  height_;
+
+    // Zoom/pan
+    double   zoom_;
+    double   panX_;  // In pixels (display units)
+    double   panY_;
+
+    cairo_matrix_t  transform_;  // Scene-to-display transformation
+
+    void ComputeTransform();
+
+  public:
+    ViewportGeometry();
+
+    void SetDisplaySize(unsigned int width,
+                        unsigned int height);
+
+    void SetSceneExtent(const OrthancStone::Extent2D& extent);
+
+    const OrthancStone::Extent2D& GetSceneExtent() const
+    {
+      return sceneExtent_;
+    }
+
+    void MapDisplayToScene(double& sceneX /* out */,
+                           double& sceneY /* out */,
+                           double x,
+                           double y) const;
+
+    void MapPixelCenterToScene(double& sceneX /* out */,
+                               double& sceneY /* out */,
+                               int x,
+                               int y) const;
+
+    void MapPixelCenterToScene(std::vector<Touch>& sceneTouches /* out */,
+                               const std::vector<Touch>& displayTouches) const;
+
+    void MapSceneToDisplay(int& displayX /* out */,
+                           int& displayY /* out */,
+                           double x,
+                           double y) const;
+
+    unsigned int GetDisplayWidth() const
+    {
+      return width_;
+    }
+
+    unsigned int GetDisplayHeight() const
+    {
+      return height_;
+    }
+
+    double GetZoom() const
+    {
+      return zoom_;
+    }
+
+    void FitContent();
+
+    void ApplyTransform(OrthancStone::CairoContext& context) const;
+
+    void GetPan(double& x,
+                double& y) const;
+
+    void SetPan(double x,
+                double y);
+
+    void SetZoom(double zoom);
+
+    OrthancStone::Matrix GetMatrix() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Viewport/CairoFont.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,65 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoFont.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  CairoFont::CairoFont(const char* family,
+                       cairo_font_slant_t slant,
+                       cairo_font_weight_t weight)
+  {
+    font_ = cairo_toy_font_face_create(family, slant, weight);
+    if (font_ == NULL)
+    {
+      LOG(ERROR) << "Unknown font: " << family;
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource);
+    }
+  }
+
+
+  CairoFont::~CairoFont()
+  {
+    if (font_ != NULL)
+    {
+      cairo_font_face_destroy(font_);
+    }
+  }
+
+
+  void CairoFont::Draw(OrthancStone::CairoContext& context,
+                       const std::string& text,
+                       double size)
+  {
+    if (size <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    cairo_t* cr = context.GetObject();
+    cairo_set_font_face(cr, font_);
+    cairo_set_font_size(cr, size);
+    cairo_show_text(cr, text.c_str());    
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Viewport/CairoFont.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if !defined(ORTHANC_SANDBOXED)
+#  error The macro ORTHANC_SANDBOXED must be defined
+#endif
+
+#if ORTHANC_SANDBOXED == 1
+#  error The class CairoFont cannot be used in sandboxed environments
+#endif
+
+#include "../../Wrappers/CairoContext.h"
+
+namespace Deprecated
+{
+  class CairoFont : public boost::noncopyable
+  {
+  private:
+    cairo_font_face_t*  font_;
+
+  public:
+    CairoFont(const char* family,
+              cairo_font_slant_t slant,
+              cairo_font_weight_t weight);
+
+    ~CairoFont();
+
+    void Draw(OrthancStone::CairoContext& context,
+              const std::string& text,
+              double size);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Viewport/IMouseTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,66 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Wrappers/CairoSurface.h"
+#include <vector>
+
+namespace Deprecated
+{
+  struct Touch
+  {
+    float x;
+    float y;
+
+    Touch(float x, float y)
+    : x(x),
+      y(y)
+    {
+    }
+    Touch()
+      : x(0.0f),
+        y(0.0f)
+    {
+    }
+  };
+
+
+  // this is tracking a mouse in screen coordinates/pixels unlike
+  // the IWorldSceneMouseTracker that is tracking a mouse
+  // in scene coordinates/mm.
+  class IMouseTracker : public boost::noncopyable
+  {
+  public:
+    virtual ~IMouseTracker()
+    {
+    }
+    
+    virtual void Render(Orthanc::ImageAccessor& surface) = 0;
+
+    virtual void MouseUp() = 0;
+
+    // Returns "true" iff. the background scene must be repainted
+    virtual void MouseMove(int x, 
+                           int y,
+                           const std::vector<Touch>& displayTouches) = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Viewport/IStatusBar.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,40 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <string>
+#include <boost/noncopyable.hpp>
+
+namespace Deprecated
+{
+  class IStatusBar : public boost::noncopyable
+  {
+  public:
+    virtual ~IStatusBar()
+    {
+    }
+    
+    virtual void ClearMessage() = 0;
+
+    virtual void SetMessage(const std::string& message) = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Viewport/IViewport.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,87 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IStatusBar.h"
+#include "../../StoneEnumerations.h"
+#include "../../Messages/IObservable.h"
+#include "../Viewport/IMouseTracker.h" // only to get the "Touch" definition
+
+#include <Images/ImageAccessor.h>
+
+
+namespace Deprecated
+{
+  class IWidget;   // Forward declaration
+  
+  class IViewport : public OrthancStone::IObservable
+  {
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ViewportChangedMessage, IViewport);
+
+    virtual void FitContent() = 0;
+
+    virtual void SetStatusBar(IStatusBar& statusBar) = 0;
+
+    virtual void SetSize(unsigned int width,
+                         unsigned int height) = 0;
+
+    // The function returns "true" iff. a new frame was rendered
+    virtual bool Render(Orthanc::ImageAccessor& surface) = 0;
+
+    virtual void MouseDown(OrthancStone::MouseButton button,
+                           int x,
+                           int y,
+                           OrthancStone::KeyboardModifiers modifiers,
+                           const std::vector<Touch>& touches) = 0;
+
+    virtual void MouseUp() = 0;
+
+    virtual void MouseMove(int x, 
+                           int y,
+                           const std::vector<Touch>& displayTouches) = 0;
+
+    virtual void MouseEnter() = 0;
+
+    virtual void MouseLeave() = 0;
+
+    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
+                            int x,
+                            int y,
+                            OrthancStone::KeyboardModifiers modifiers) = 0;
+
+    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
+                            char keyChar,
+                            OrthancStone::KeyboardModifiers modifiers) = 0;
+
+    virtual bool HasAnimation() = 0;
+
+    virtual void DoAnimation() = 0;
+
+    // Should only be called from IWidget
+    // TODO Why should this be virtual?
+    virtual void NotifyContentChanged()
+    {
+      BroadcastMessage(ViewportChangedMessage(*this));
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Viewport/WidgetViewport.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,286 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WidgetViewport.h"
+
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  WidgetViewport::WidgetViewport() :
+    statusBar_(NULL),
+    isMouseOver_(false),
+    lastMouseX_(0),
+    lastMouseY_(0),
+    backgroundChanged_(false)
+  {
+  }
+
+
+  void WidgetViewport::FitContent()
+  {
+    if (centralWidget_.get() != NULL)
+    {
+      centralWidget_->FitContent();
+    }
+  }
+
+
+  void WidgetViewport::SetStatusBar(IStatusBar& statusBar)
+  {
+    statusBar_ = &statusBar;
+
+    if (centralWidget_.get() != NULL)
+    {
+      centralWidget_->SetStatusBar(statusBar);
+    }
+  }
+
+
+  void WidgetViewport::SetCentralWidget(boost::shared_ptr<IWidget> widget)
+  {
+    if (widget == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    mouseTracker_.reset(NULL);
+
+    centralWidget_ = widget;
+    centralWidget_->SetViewport(*this);
+
+    if (statusBar_ != NULL)
+    {
+      centralWidget_->SetStatusBar(*statusBar_);
+    }
+
+    NotifyBackgroundChanged();
+  }
+
+
+  void WidgetViewport::NotifyBackgroundChanged()
+  {
+    backgroundChanged_ = true;
+    NotifyContentChanged();
+  }
+
+
+  void WidgetViewport::SetSize(unsigned int width,
+                               unsigned int height)
+  {
+    background_.SetSize(width, height, false /* no alpha */);
+
+    if (centralWidget_.get() != NULL)
+    {
+      centralWidget_->SetSize(width, height);
+    }
+
+    NotifyBackgroundChanged();
+  }
+
+
+  bool WidgetViewport::Render(Orthanc::ImageAccessor& surface)
+  {
+    if (centralWidget_.get() == NULL)
+    {
+      return false;
+    }
+
+    Orthanc::ImageAccessor background;
+    background_.GetWriteableAccessor(background);
+
+    if (backgroundChanged_ &&
+        !centralWidget_->Render(background))
+    {
+      return false;
+    }
+    
+    if (background.GetWidth() != surface.GetWidth() ||
+        background.GetHeight() != surface.GetHeight())
+    {
+      return false;
+    }
+
+    Orthanc::ImageProcessing::Convert(surface, background);
+    
+    if (mouseTracker_.get() != NULL)
+    {
+      mouseTracker_->Render(surface);
+    }
+    else if (isMouseOver_)
+    {
+      centralWidget_->RenderMouseOver(surface, lastMouseX_, lastMouseY_);
+    }
+
+    return true;
+  }
+
+  void WidgetViewport::TouchStart(const std::vector<Touch>& displayTouches)
+  {
+    MouseDown(OrthancStone::MouseButton_Left, (int)displayTouches[0].x, (int)displayTouches[0].y, OrthancStone::KeyboardModifiers_None, displayTouches); // one touch is equivalent to a mouse tracker without left button -> set the mouse coordinates to the first touch coordinates
+  }
+      
+  void WidgetViewport::TouchMove(const std::vector<Touch>& displayTouches)
+  {
+    MouseMove((int)displayTouches[0].x, (int)displayTouches[0].y, displayTouches); // one touch is equivalent to a mouse tracker without left button -> set the mouse coordinates to the first touch coordinates
+  }
+      
+  void WidgetViewport::TouchEnd(const std::vector<Touch>& displayTouches)
+  {
+    // note: TouchEnd is not triggered when a single touch gesture ends (it is only triggered when
+    // going from 2 touches to 1 touch, ...)
+    MouseUp();
+  }
+
+  void WidgetViewport::MouseDown(OrthancStone::MouseButton button,
+                                 int x,
+                                 int y,
+                                 OrthancStone::KeyboardModifiers modifiers,
+                                 const std::vector<Touch>& displayTouches
+                                 )
+  {
+    lastMouseX_ = x;
+    lastMouseY_ = y;
+
+    if (centralWidget_.get() != NULL)
+    {
+      mouseTracker_.reset(centralWidget_->CreateMouseTracker(button, x, y, modifiers, displayTouches));
+    }
+    else
+    {
+      mouseTracker_.reset(NULL);
+    }      
+
+    NotifyContentChanged();
+  }
+
+
+  void WidgetViewport::MouseUp()
+  {
+    if (mouseTracker_.get() != NULL)
+    {
+      mouseTracker_->MouseUp();
+      mouseTracker_.reset(NULL);
+      NotifyContentChanged();
+    }
+  }
+
+
+  void WidgetViewport::MouseMove(int x, 
+                                 int y,
+                                 const std::vector<Touch>& displayTouches)
+  {
+    if (centralWidget_.get() == NULL)
+    {
+      return;
+    }
+
+    lastMouseX_ = x;
+    lastMouseY_ = y;
+
+    bool repaint = false;
+    
+    if (mouseTracker_.get() != NULL)
+    {
+      mouseTracker_->MouseMove(x, y, displayTouches);
+      repaint = true;
+    }
+    else
+    {
+      repaint = centralWidget_->HasRenderMouseOver();
+    }
+
+    if (repaint)
+    {
+      // The scene must be repainted, notify the observers
+      NotifyContentChanged();
+    }
+  }
+
+
+  void WidgetViewport::MouseEnter()
+  {
+    isMouseOver_ = true;
+    NotifyContentChanged();
+  }
+
+
+  void WidgetViewport::MouseLeave()
+  {
+    isMouseOver_ = false;
+
+    if (mouseTracker_.get() != NULL)
+    {
+      mouseTracker_->MouseUp();
+      mouseTracker_.reset(NULL);
+    }
+
+    NotifyContentChanged();
+  }
+
+
+  void WidgetViewport::MouseWheel(OrthancStone::MouseWheelDirection direction,
+                                  int x,
+                                  int y,
+                                  OrthancStone::KeyboardModifiers modifiers)
+  {
+    if (centralWidget_.get() != NULL &&
+        mouseTracker_.get() == NULL)
+    {
+      centralWidget_->MouseWheel(direction, x, y, modifiers);
+    }
+  }
+
+
+  void WidgetViewport::KeyPressed(OrthancStone::KeyboardKeys key,
+                                  char keyChar,
+                                  OrthancStone::KeyboardModifiers modifiers)
+  {
+    if (centralWidget_.get() != NULL &&
+        mouseTracker_.get() == NULL)
+    {
+      centralWidget_->KeyPressed(key, keyChar, modifiers);
+    }
+  }
+
+
+  bool WidgetViewport::HasAnimation()
+  {
+    if (centralWidget_.get() != NULL)
+    {
+      return centralWidget_->HasAnimation();
+    }
+    else
+    {
+      return false;
+    }
+  }
+   
+
+  void WidgetViewport::DoAnimation()
+  {
+    if (centralWidget_.get() != NULL)
+    {
+      centralWidget_->DoAnimation();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Viewport/WidgetViewport.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,96 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IViewport.h"
+#include "../Widgets/IWidget.h"
+
+#include <Compatibility.h>
+
+#include <memory>
+
+namespace Deprecated
+{
+  class WidgetViewport : public IViewport
+  {
+  private:
+    boost::shared_ptr<IWidget>    centralWidget_;
+    IStatusBar*                   statusBar_;
+    std::unique_ptr<IMouseTracker>  mouseTracker_;
+    bool                          isMouseOver_;
+    int                           lastMouseX_;
+    int                           lastMouseY_;
+    OrthancStone::CairoSurface    background_;
+    bool                          backgroundChanged_;
+
+  public:
+    WidgetViewport();
+
+    virtual void FitContent();
+
+    virtual void SetStatusBar(IStatusBar& statusBar);
+
+    void SetCentralWidget(boost::shared_ptr<IWidget> widget);
+
+    virtual void NotifyBackgroundChanged();
+
+    virtual void SetSize(unsigned int width,
+                         unsigned int height);
+
+    virtual bool Render(Orthanc::ImageAccessor& surface);
+
+    virtual void MouseDown(OrthancStone::MouseButton button,
+                           int x,
+                           int y,
+                           OrthancStone::KeyboardModifiers modifiers,
+                           const std::vector<Touch>& displayTouches);
+
+    virtual void MouseUp();
+
+    virtual void MouseMove(int x, 
+                           int y,
+                           const std::vector<Touch>& displayTouches);
+
+    virtual void MouseEnter();
+
+    virtual void MouseLeave();
+
+    virtual void TouchStart(const std::vector<Touch>& touches);
+    
+    virtual void TouchMove(const std::vector<Touch>& touches);
+    
+    virtual void TouchEnd(const std::vector<Touch>& touches);
+
+    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
+                            int x,
+                            int y,
+                            OrthancStone::KeyboardModifiers modifiers);
+
+    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
+                            char keyChar,
+                            OrthancStone::KeyboardModifiers modifiers);
+
+    virtual bool HasAnimation();
+
+    virtual void DoAnimation();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Volumes/ISlicedVolume.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,72 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Messages/IObservable.h"
+#include "../Toolbox/Slice.h"
+
+namespace Deprecated
+{
+  class ISlicedVolume : public OrthancStone::IObservable
+  {
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ContentChangedMessage, ISlicedVolume);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryErrorMessage, ISlicedVolume);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryReadyMessage, ISlicedVolume);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, VolumeReadyMessage, ISlicedVolume);
+
+
+    class SliceContentChangedMessage : public OrthancStone::OriginMessage<ISlicedVolume>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      size_t        sliceIndex_;
+      const Slice&  slice_;
+      
+    public:
+      SliceContentChangedMessage(ISlicedVolume& origin,
+                                 size_t sliceIndex,
+                                 const Slice& slice) :
+        OriginMessage(origin),
+        sliceIndex_(sliceIndex),
+        slice_(slice)
+      {
+      }
+
+      size_t GetSliceIndex() const
+      {
+        return sliceIndex_;
+      }
+
+      const Slice& GetSlice() const
+      {
+        return slice_;
+      }
+    };
+
+
+    virtual size_t GetSliceCount() const = 0;
+
+    virtual const Slice& GetSlice(size_t slice) const = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Volumes/IVolumeLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,35 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Messages/IObservable.h"
+
+namespace Deprecated
+{
+  class IVolumeLoader : public OrthancStone::IObservable
+  {
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryReadyMessage, IVolumeLoader);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryErrorMessage, IVolumeLoader);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ContentChangedMessage, IVolumeLoader);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Volumes/StructureSetLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,156 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "StructureSetLoader.h"
+
+#include "../Toolbox/MessagingToolbox.h"
+
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  StructureSetLoader::StructureSetLoader(OrthancApiClient& orthanc) :
+    orthanc_(orthanc)
+  {
+  }
+  
+
+  void StructureSetLoader::OnReferencedSliceLoaded(const OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    OrthancPlugins::FullOrthancDataset dataset(message.GetJson());
+
+    Orthanc::DicomMap slice;
+    MessagingToolbox::ConvertDataset(slice, dataset);
+    structureSet_->AddReferencedSlice(slice);
+
+    BroadcastMessage(ContentChangedMessage(*this));
+  }
+  
+
+  void StructureSetLoader::OnStructureSetLoaded(const OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    OrthancPlugins::FullOrthancDataset dataset(message.GetJson());
+    structureSet_.reset(new OrthancStone::DicomStructureSet(dataset));
+
+    std::set<std::string> instances;
+    structureSet_->GetReferencedInstances(instances);
+
+    for (std::set<std::string>::const_iterator it = instances.begin();
+         it != instances.end(); ++it)
+    {
+      orthanc_.PostBinaryAsyncExpectJson("/tools/lookup", *it,
+                                         new DeprecatedCallable<StructureSetLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &StructureSetLoader::OnLookupCompleted));
+    }
+
+    BroadcastMessage(GeometryReadyMessage(*this));
+  }
+
+  
+  void StructureSetLoader::OnLookupCompleted(const OrthancApiClient::JsonResponseReadyMessage& message)
+  {
+    const Json::Value& lookup = message.GetJson();
+
+    if (lookup.type() != Json::arrayValue ||
+        lookup.size() != 1 ||
+        !lookup[0].isMember("Type") ||
+        !lookup[0].isMember("Path") ||
+        lookup[0]["Type"].type() != Json::stringValue ||
+        lookup[0]["ID"].type() != Json::stringValue ||
+        lookup[0]["Type"].asString() != "Instance")
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+    }
+
+    const std::string& instance = lookup[0]["ID"].asString();
+    orthanc_.GetJsonAsync("/instances/" + instance + "/tags",
+                          new DeprecatedCallable<StructureSetLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &StructureSetLoader::OnReferencedSliceLoaded));
+  }
+
+  
+  void StructureSetLoader::ScheduleLoadInstance(const std::string& instance)
+  {
+    if (structureSet_.get() != NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      orthanc_.GetJsonAsync("/instances/" + instance + "/tags?ignore-length=3006-0050",
+                            new DeprecatedCallable<StructureSetLoader, OrthancApiClient::JsonResponseReadyMessage>(GetSharedObserver(), &StructureSetLoader::OnStructureSetLoaded));
+    }
+  }
+
+
+  OrthancStone::DicomStructureSet& StructureSetLoader::GetStructureSet()
+  {
+    if (structureSet_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return *structureSet_;
+    }
+  }
+
+
+  OrthancStone::DicomStructureSet* StructureSetLoader::SynchronousLoad(
+    OrthancPlugins::IOrthancConnection& orthanc,
+    const std::string& instanceId)
+  {
+    const std::string uri = "/instances/" + instanceId + "/tags?ignore-length=3006-0050";
+    OrthancPlugins::FullOrthancDataset dataset(orthanc, uri);
+
+    std::unique_ptr<OrthancStone::DicomStructureSet> result
+      (new OrthancStone::DicomStructureSet(dataset));
+
+    std::set<std::string> instances;
+    result->GetReferencedInstances(instances);
+
+    for (std::set<std::string>::const_iterator it = instances.begin();
+         it != instances.end(); ++it)
+    {
+      Json::Value lookup;
+      MessagingToolbox::RestApiPost(lookup, orthanc, "/tools/lookup", *it);
+
+      if (lookup.type() != Json::arrayValue ||
+          lookup.size() != 1 ||
+          !lookup[0].isMember("Type") ||
+          !lookup[0].isMember("Path") ||
+          lookup[0]["Type"].type() != Json::stringValue ||
+          lookup[0]["ID"].type() != Json::stringValue ||
+          lookup[0]["Type"].asString() != "Instance")
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource);          
+      }
+
+      OrthancPlugins::FullOrthancDataset slice
+        (orthanc, "/instances/" + lookup[0]["ID"].asString() + "/tags");
+      Orthanc::DicomMap m;
+      MessagingToolbox::ConvertDataset(m, slice);
+      result->AddReferencedSlice(m);
+    }
+
+    result->CheckReferencedSlices();
+
+    return result.release();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Volumes/StructureSetLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,63 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Messages/ObserverBase.h"
+#include "../../Toolbox/DicomStructureSet.h"
+#include "../Toolbox/OrthancApiClient.h"
+#include "IVolumeLoader.h"
+
+#include <Compatibility.h>
+
+namespace Deprecated
+{
+  class StructureSetLoader :
+    public IVolumeLoader,
+    public OrthancStone::ObserverBase<StructureSetLoader>
+  {
+  private:
+    OrthancApiClient&                 orthanc_;
+    std::unique_ptr<OrthancStone::DicomStructureSet>  structureSet_;
+
+    void OnReferencedSliceLoaded(const OrthancApiClient::JsonResponseReadyMessage& message);
+
+    void OnStructureSetLoaded(const OrthancApiClient::JsonResponseReadyMessage& message);
+
+    void OnLookupCompleted(const OrthancApiClient::JsonResponseReadyMessage& message);
+
+  public:
+    StructureSetLoader(OrthancApiClient& orthanc);
+
+    void ScheduleLoadInstance(const std::string& instance);
+
+    bool HasStructureSet() const
+    {
+      return structureSet_.get() != NULL;
+    }
+
+    OrthancStone::DicomStructureSet& GetStructureSet();
+
+    static OrthancStone::DicomStructureSet* SynchronousLoad(
+      OrthancPlugins::IOrthancConnection& orthanc,
+      const std::string& instanceId);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/CairoWidget.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,101 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoWidget.h"
+
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  static bool IsAligned(const Orthanc::ImageAccessor& target)
+  {
+    // TODO
+    return true;
+  }
+
+  CairoWidget::CairoWidget(const std::string& name) :
+    WidgetBase(name)
+  {
+  }
+
+  void CairoWidget::SetSize(unsigned int width,
+                            unsigned int height)
+  {
+    surface_.SetSize(width, height, false /* no alpha */);
+  }
+  
+
+  bool CairoWidget::Render(Orthanc::ImageAccessor& target)
+  {
+    // Don't call the base class here, as
+    // "ClearBackgroundCairo()" is a faster alternative
+
+    if (IsAligned(target))
+    {
+      OrthancStone::CairoSurface surface(target, false /* no alpha */);
+      OrthancStone::CairoContext context(surface);
+      ClearBackgroundCairo(context);
+      return RenderCairo(context);
+    }
+    else
+    {
+      OrthancStone::CairoContext context(surface_);
+      ClearBackgroundCairo(context);
+
+      if (RenderCairo(context))
+      {
+        Orthanc::ImageAccessor surface;
+        surface_.GetReadOnlyAccessor(surface);
+        Orthanc::ImageProcessing::Copy(target, surface);
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+  }
+
+
+  void CairoWidget::RenderMouseOver(Orthanc::ImageAccessor& target,
+                                    int x,
+                                    int y)
+  {
+    if (IsAligned(target))
+    {
+      OrthancStone::CairoSurface surface(target, false /* no alpha */);
+      OrthancStone::CairoContext context(surface);
+      RenderMouseOverCairo(context, x, y);
+    }
+    else
+    {
+      Orthanc::ImageAccessor accessor;
+      surface_.GetWriteableAccessor(accessor);
+      Orthanc::ImageProcessing::Copy(accessor, target);
+
+      OrthancStone::CairoContext context(surface_);
+      RenderMouseOverCairo(context, x, y);
+
+      Orthanc::ImageProcessing::Copy(target, accessor);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/CairoWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WidgetBase.h"
+
+namespace Deprecated
+{
+  class CairoWidget : public WidgetBase
+  {
+  private:
+    OrthancStone::CairoSurface   surface_;
+
+  protected:
+    virtual bool RenderCairo(OrthancStone::CairoContext& context) = 0;
+    
+    virtual void RenderMouseOverCairo(OrthancStone::CairoContext& context,
+                                      int x,
+                                      int y) = 0;
+    
+  public:
+    CairoWidget(const std::string& name);
+
+    virtual void SetSize(unsigned int width,
+                         unsigned int height);
+
+    virtual bool Render(Orthanc::ImageAccessor& target);
+
+    virtual void RenderMouseOver(Orthanc::ImageAccessor& target,
+                                 int x,
+                                 int y);  
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/EmptyWidget.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,41 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "EmptyWidget.h"
+
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  bool EmptyWidget::Render(Orthanc::ImageAccessor& surface)
+  {
+    // Note: This call is slow
+    Orthanc::ImageProcessing::Set(surface, red_, green_, blue_, 255);
+    return true;
+  }
+
+
+  void EmptyWidget::DoAnimation()
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/EmptyWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,116 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IWidget.h"
+
+namespace Deprecated
+{
+  /**
+   * This is a test widget that simply fills its surface with an
+   * uniform color.
+   **/
+  class EmptyWidget : public IWidget
+  {
+  private:
+    uint8_t  red_;
+    uint8_t  green_;
+    uint8_t  blue_;
+
+  public:
+    EmptyWidget(uint8_t red,
+                uint8_t green,
+                uint8_t blue) :
+      red_(red),
+      green_(green),
+      blue_(blue)
+    {
+    }
+
+    virtual void FitContent()
+    {
+    }
+
+    virtual void SetParent(IWidget& widget)
+    {
+    }
+
+    virtual void SetViewport(WidgetViewport& viewport)
+    {
+    }
+
+    virtual void NotifyContentChanged()
+    {
+    }
+
+    virtual void SetStatusBar(IStatusBar& statusBar)
+    {
+    }
+
+    virtual void SetSize(unsigned int width,
+                         unsigned int height)
+    {
+    }
+
+    virtual bool Render(Orthanc::ImageAccessor& surface);
+
+    virtual IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
+                                              int x,
+                                              int y,
+                                              OrthancStone::KeyboardModifiers modifiers,
+                                              const std::vector<Touch>& touches)
+    {
+      return NULL;
+    }
+
+    virtual void RenderMouseOver(Orthanc::ImageAccessor& target,
+                                 int x,
+                                 int y)
+    {
+    }
+
+    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
+                            int x,
+                            int y,
+                            OrthancStone::KeyboardModifiers modifiers)
+    {
+    }
+
+    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
+                            char keyChar,
+                            OrthancStone::KeyboardModifiers modifiers)
+    {
+    }
+
+    virtual bool HasAnimation() const
+    {
+      return false;
+    }
+
+    virtual void DoAnimation();
+
+    virtual bool HasRenderMouseOver()
+    {
+      return false;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/IWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,81 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../StoneEnumerations.h"
+#include "../Viewport/IMouseTracker.h"
+#include "../Viewport/IStatusBar.h"
+
+namespace Deprecated
+{
+  class WidgetViewport;  // Forward declaration
+  
+  class IWidget : public boost::noncopyable
+  {
+  public:
+    virtual ~IWidget()
+    {
+    }
+
+    virtual void FitContent() = 0;
+
+    virtual void SetParent(IWidget& parent) = 0;
+    
+    virtual void SetViewport(WidgetViewport& viewport) = 0;
+
+    virtual void SetStatusBar(IStatusBar& statusBar) = 0;
+
+    virtual void SetSize(unsigned int width, 
+                         unsigned int height) = 0;
+ 
+    virtual bool Render(Orthanc::ImageAccessor& surface) = 0;
+
+    virtual IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
+                                              int x,
+                                              int y,
+                                              OrthancStone::KeyboardModifiers modifiers,
+                                              const std::vector<Touch>& touches) = 0;
+
+    virtual void RenderMouseOver(Orthanc::ImageAccessor& target,
+                                 int x,
+                                 int y) = 0;
+
+    virtual bool HasRenderMouseOver() = 0;
+
+    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
+                            int x,
+                            int y,
+                            OrthancStone::KeyboardModifiers modifiers) = 0;
+
+    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
+                            char keyChar,
+                            OrthancStone::KeyboardModifiers modifiers) = 0;
+
+    virtual bool HasAnimation() const = 0;
+
+    virtual void DoAnimation() = 0;
+
+    // Subclasses can call this method to signal the display of the
+    // widget must be refreshed
+    virtual void NotifyContentChanged() = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/IWorldSceneInteractor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,70 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IWorldSceneMouseTracker.h"
+
+#include "../Toolbox/ViewportGeometry.h"
+#include "../../StoneEnumerations.h"
+#include "../Viewport/IStatusBar.h"
+
+namespace Deprecated
+{
+    class WorldSceneWidget;
+
+    class IWorldSceneInteractor : public boost::noncopyable
+    {
+    public:
+        virtual ~IWorldSceneInteractor()
+        {
+        }
+
+        virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
+                                                            const ViewportGeometry& view,
+                                                            OrthancStone::MouseButton button,
+                                                            OrthancStone::KeyboardModifiers modifiers,
+                                                            int viewportX,
+                                                            int viewportY,
+                                                            double x,
+                                                            double y,
+                                                            IStatusBar* statusBar,
+                                                            const std::vector<Touch>& touches) = 0;
+
+        virtual void MouseOver(OrthancStone::CairoContext& context,
+                               WorldSceneWidget& widget,
+                               const ViewportGeometry& view,
+                               double x,
+                               double y,
+                               IStatusBar* statusBar) = 0;
+
+        virtual void MouseWheel(WorldSceneWidget& widget,
+                                OrthancStone::MouseWheelDirection direction,
+                                OrthancStone::KeyboardModifiers modifiers,
+                                IStatusBar* statusBar) = 0;
+
+        virtual void KeyPressed(WorldSceneWidget& widget,
+                                OrthancStone::KeyboardKeys key,
+                                char keyChar,
+                                OrthancStone::KeyboardModifiers modifiers,
+                                IStatusBar* statusBar) = 0;
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/IWorldSceneMouseTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,54 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Wrappers/CairoContext.h"
+#include "../Viewport/IMouseTracker.h" // only to get the "Touch" definition
+
+namespace Deprecated
+{
+
+  // this is tracking a mouse in scene coordinates/mm unlike
+  // the IMouseTracker that is tracking a mouse
+  // in screen coordinates/pixels.
+  class IWorldSceneMouseTracker : public boost::noncopyable
+  {
+  public:
+    virtual ~IWorldSceneMouseTracker()
+    {
+    }
+
+    virtual bool HasRender() const = 0;
+
+    virtual void Render(OrthancStone::CairoContext& context,
+                        double zoom) = 0;
+
+    virtual void MouseUp() = 0;
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double sceneX,
+                           double sceneY,
+                           const std::vector<Touch>& displayTouches,
+                           const std::vector<Touch>& sceneTouches) = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/LayoutWidget.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,501 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "LayoutWidget.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+#include <boost/math/special_functions/round.hpp>
+
+namespace Deprecated
+{
+  class LayoutWidget::LayoutMouseTracker : public IMouseTracker
+  {
+  private:
+    std::unique_ptr<IMouseTracker>   tracker_;
+    int                            left_;
+    int                            top_;
+    unsigned int                   width_;
+    unsigned int                   height_;
+
+  public:
+    LayoutMouseTracker(IMouseTracker* tracker,
+                       int left,
+                       int top,
+                       unsigned int width,
+                       unsigned int height) :
+      tracker_(tracker),
+      left_(left),
+      top_(top),
+      width_(width),
+      height_(height)
+    {
+      if (tracker == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+
+    virtual void Render(Orthanc::ImageAccessor& surface)
+    {
+      Orthanc::ImageAccessor accessor;
+      surface.GetRegion(accessor, left_, top_, width_, height_);
+      tracker_->Render(accessor);
+    }
+
+    virtual void MouseUp()
+    {
+      tracker_->MouseUp();
+    }
+
+    virtual void MouseMove(int x, 
+                           int y,
+                           const std::vector<Touch>& displayTouches)
+    {
+      std::vector<Touch> relativeTouches;
+      for (size_t t = 0; t < displayTouches.size(); t++)
+      {
+        relativeTouches.push_back(Touch(displayTouches[t].x - left_, displayTouches[t].y - top_));
+      }
+
+      tracker_->MouseMove(x - left_, y - top_, relativeTouches);
+    }
+  };
+
+
+  class LayoutWidget::ChildWidget : public boost::noncopyable
+  {
+  private:
+    boost::shared_ptr<IWidget>  widget_;
+    int                     left_;
+    int                     top_;
+    unsigned int            width_;
+    unsigned int            height_;
+
+  public:
+    ChildWidget(boost::shared_ptr<IWidget> widget) :
+      widget_(widget)
+    {
+      assert(widget != NULL);
+      SetEmpty();
+    }
+
+    void DoAnimation()
+    {
+      if (widget_->HasAnimation())
+      {
+        widget_->DoAnimation();
+      }
+    }
+
+    IWidget& GetWidget() const
+    {
+      return *widget_;
+    }
+
+    void SetRectangle(unsigned int left, 
+                      unsigned int top,
+                      unsigned int width,
+                      unsigned int height)
+    {
+      left_ = left;
+      top_ = top;
+      width_ = width;
+      height_ = height;
+
+      widget_->SetSize(width, height);
+    }
+
+    void SetEmpty()
+    {
+      SetRectangle(0, 0, 0, 0);
+    }
+
+    bool Contains(int x, 
+                  int y) const
+    {
+      return (x >= left_ && 
+              y >= top_ &&
+              x < left_ + static_cast<int>(width_) &&
+              y < top_ + static_cast<int>(height_));
+    }      
+
+    bool Render(Orthanc::ImageAccessor& target)
+    {
+      if (width_ == 0 ||
+          height_ == 0)
+      {
+        return true;
+      }
+      else 
+      {
+        Orthanc::ImageAccessor accessor;
+        target.GetRegion(accessor, left_, top_, width_, height_);
+        return widget_->Render(accessor);
+      }
+    }
+
+    IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
+                                      int x,
+                                      int y,
+                                      OrthancStone::KeyboardModifiers modifiers,
+                                      const std::vector<Touch>& touches)
+    {
+      if (Contains(x, y))
+      {
+        IMouseTracker* tracker = widget_->CreateMouseTracker(button, 
+                                                             x - left_, 
+                                                             y - top_, 
+                                                             modifiers,
+                                                             touches);
+        if (tracker)
+        {
+          return new LayoutMouseTracker(tracker, left_, top_, width_, height_);
+        }
+      }
+
+      return NULL;
+    }
+
+    void RenderMouseOver(Orthanc::ImageAccessor& target,
+                         int x,
+                         int y)
+    {
+      if (Contains(x, y))
+      {
+        Orthanc::ImageAccessor accessor;
+        target.GetRegion(accessor, left_, top_, width_, height_);
+
+        widget_->RenderMouseOver(accessor, x - left_, y - top_);
+      }
+    }
+
+    void MouseWheel(OrthancStone::MouseWheelDirection direction,
+                    int x,
+                    int y,
+                    OrthancStone::KeyboardModifiers modifiers)
+    {
+      if (Contains(x, y))
+      {
+        widget_->MouseWheel(direction, x - left_, y - top_, modifiers);
+      }
+    }
+    
+    bool HasRenderMouseOver()
+    {
+      return widget_->HasRenderMouseOver();
+    }
+  };
+
+
+  void LayoutWidget::ComputeChildrenExtents()
+  {
+    if (children_.size() == 0)
+    {
+      return;
+    }
+
+    float internal = static_cast<float>(paddingInternal_);
+
+    if (width_ <= paddingLeft_ + paddingRight_ ||
+        height_ <= paddingTop_ + paddingBottom_)
+    {
+      for (size_t i = 0; i < children_.size(); i++)
+      {
+        children_[i]->SetEmpty();          
+      }
+    }
+    else if (isHorizontal_)
+    {
+      unsigned int padding = paddingLeft_ + paddingRight_ + (static_cast<unsigned int>(children_.size()) - 1) * paddingInternal_;
+      float childWidth = ((static_cast<float>(width_) - static_cast<float>(padding)) / 
+                          static_cast<float>(children_.size()));
+        
+      for (size_t i = 0; i < children_.size(); i++)
+      {
+        float left = static_cast<float>(paddingLeft_) + static_cast<float>(i) * (childWidth + internal);
+        float right = left + childWidth;
+
+        if (left >= right)
+        {
+          children_[i]->SetEmpty();
+        }
+        else
+        {
+          children_[i]->SetRectangle(static_cast<unsigned int>(left), 
+                                     paddingTop_, 
+                                     boost::math::iround(right - left),
+                                     height_ - paddingTop_ - paddingBottom_);
+        }
+      }
+    }
+    else
+    {
+      unsigned int padding = paddingTop_ + paddingBottom_ + (static_cast<unsigned int>(children_.size()) - 1) * paddingInternal_;
+      float childHeight = ((static_cast<float>(height_) - static_cast<float>(padding)) / 
+                           static_cast<float>(children_.size()));
+        
+      for (size_t i = 0; i < children_.size(); i++)
+      {
+        float top = static_cast<float>(paddingTop_) + static_cast<float>(i) * (childHeight + internal);
+        float bottom = top + childHeight;
+
+        if (top >= bottom)
+        {
+          children_[i]->SetEmpty();
+        }
+        else
+        {
+          children_[i]->SetRectangle(paddingTop_, 
+                                     static_cast<unsigned int>(top), 
+                                     width_ - paddingLeft_ - paddingRight_,
+                                     boost::math::iround(bottom - top));
+        }
+      }
+    }
+
+    NotifyContentChanged(*this);
+  }
+
+
+  LayoutWidget::LayoutWidget(const std::string& name) :
+    WidgetBase(name),
+    isHorizontal_(true),
+    width_(0),
+    height_(0),
+    paddingLeft_(0),
+    paddingTop_(0),
+    paddingRight_(0),
+    paddingBottom_(0),
+    paddingInternal_(0)
+  {
+  }
+
+
+  LayoutWidget::~LayoutWidget()
+  {
+    for (size_t i = 0; i < children_.size(); i++)
+    {
+      delete children_[i];
+    }
+  }
+
+
+  void LayoutWidget::FitContent()
+  {
+    for (size_t i = 0; i < children_.size(); i++)
+    {
+      children_[i]->GetWidget().FitContent();
+    }
+  }
+  
+
+  void LayoutWidget::NotifyContentChanged(const IWidget& widget)
+  {
+    // One of the children has changed
+    WidgetBase::NotifyContentChanged();
+  }
+
+
+  void LayoutWidget::SetHorizontal()
+  {
+    isHorizontal_ = true;
+    ComputeChildrenExtents();
+  }
+
+
+  void LayoutWidget::SetVertical()
+  {
+    isHorizontal_ = false;
+    ComputeChildrenExtents();
+  }
+
+
+  void LayoutWidget::SetPadding(unsigned int left,
+                                unsigned int top,
+                                unsigned int right,
+                                unsigned int bottom,
+                                unsigned int spacing)
+  {
+    paddingLeft_ = left;
+    paddingTop_ = top;
+    paddingRight_ = right;
+    paddingBottom_ = bottom;
+    paddingInternal_ = spacing;
+  }
+    
+
+  void LayoutWidget::SetPadding(unsigned int padding)
+  {
+    paddingLeft_ = padding;
+    paddingTop_ = padding;
+    paddingRight_ = padding;
+    paddingBottom_ = padding;
+    paddingInternal_ = padding;
+  }
+
+
+  void LayoutWidget::AddWidget(boost::shared_ptr<IWidget> widget)  // Takes ownership
+  {
+    if (widget == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (GetStatusBar() != NULL)
+    {
+      widget->SetStatusBar(*GetStatusBar());
+    }
+
+    children_.push_back(new ChildWidget(widget));
+    widget->SetParent(*this);
+
+    ComputeChildrenExtents();
+
+    if (widget->HasAnimation())
+    {
+      hasAnimation_ = true;
+    }
+  }
+
+
+  void LayoutWidget::SetStatusBar(IStatusBar& statusBar)
+  {
+    WidgetBase::SetStatusBar(statusBar);
+
+    for (size_t i = 0; i < children_.size(); i++)
+    {
+      children_[i]->GetWidget().SetStatusBar(statusBar);
+    }
+  }
+
+
+  void LayoutWidget::SetSize(unsigned int width,
+                             unsigned int height)
+  {
+    width_ = width;
+    height_ = height;
+    ComputeChildrenExtents();
+  }
+
+
+  bool LayoutWidget::Render(Orthanc::ImageAccessor& surface)
+  {
+    if (!WidgetBase::Render(surface))
+    {
+      return false;
+    }
+
+    for (size_t i = 0; i < children_.size(); i++)
+    {
+      if (!children_[i]->Render(surface))
+      {
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+    
+  IMouseTracker* LayoutWidget::CreateMouseTracker(OrthancStone::MouseButton button,
+                                                  int x,
+                                                  int y,
+                                                  OrthancStone::KeyboardModifiers modifiers,
+                                                  const std::vector<Touch>& touches)
+  {
+    for (size_t i = 0; i < children_.size(); i++)
+    {
+      IMouseTracker* tracker = children_[i]->CreateMouseTracker(button, x, y, modifiers, touches);
+      if (tracker != NULL)
+      {
+        return tracker;
+      }
+    }
+
+    return NULL;
+  }
+
+
+  void LayoutWidget::RenderMouseOver(Orthanc::ImageAccessor& target,
+                                     int x,
+                                     int y)
+  {
+    for (size_t i = 0; i < children_.size(); i++)
+    {
+      children_[i]->RenderMouseOver(target, x, y);
+    }
+  }
+
+
+  void LayoutWidget::MouseWheel(OrthancStone::MouseWheelDirection direction,
+                                int x,
+                                int y,
+                                OrthancStone::KeyboardModifiers modifiers)
+  {
+    for (size_t i = 0; i < children_.size(); i++)
+    {
+      children_[i]->MouseWheel(direction, x, y, modifiers);
+    }
+  }
+
+
+  void LayoutWidget::KeyPressed(OrthancStone::KeyboardKeys key,
+                                char keyChar,
+                                OrthancStone::KeyboardModifiers modifiers)
+  {
+    for (size_t i = 0; i < children_.size(); i++)
+    {
+      children_[i]->GetWidget().KeyPressed(key, keyChar, modifiers);
+    }
+  }
+
+  
+  void LayoutWidget::DoAnimation()
+  {
+    if (hasAnimation_)
+    {
+      for (size_t i = 0; i < children_.size(); i++)
+      {
+        children_[i]->DoAnimation();
+      }
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+  bool LayoutWidget::HasRenderMouseOver()
+  {
+    for (size_t i = 0; i < children_.size(); i++)
+    {
+      if (children_[i]->HasRenderMouseOver())
+      {
+        return true;
+      }
+    }
+
+    return false;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/LayoutWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,134 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WidgetBase.h"
+
+#include <vector>
+#include <memory>
+
+namespace Deprecated
+{
+  class LayoutWidget : public WidgetBase
+  {
+  private:
+    class LayoutMouseTracker;
+    class ChildWidget;
+
+    std::vector<ChildWidget*>     children_;
+    bool                          isHorizontal_;
+    unsigned int                  width_;
+    unsigned int                  height_;
+    std::unique_ptr<IMouseTracker>  mouseTracker_;
+    unsigned int                  paddingLeft_;
+    unsigned int                  paddingTop_;
+    unsigned int                  paddingRight_;
+    unsigned int                  paddingBottom_;
+    unsigned int                  paddingInternal_;
+    bool                          hasAnimation_;
+
+    void ComputeChildrenExtents();
+
+  public:
+    LayoutWidget(const std::string& name);
+
+    virtual ~LayoutWidget();
+
+    virtual void FitContent();
+
+    virtual void NotifyContentChanged(const IWidget& widget);
+
+    void SetHorizontal();
+
+    void SetVertical();
+
+    void SetPadding(unsigned int left,
+                    unsigned int top,
+                    unsigned int right,
+                    unsigned int bottom,
+                    unsigned int spacing);
+    
+    void SetPadding(unsigned int padding);
+
+    unsigned int GetPaddingLeft() const
+    {
+      return paddingLeft_;
+    }
+
+    unsigned int GetPaddingTop() const
+    {
+      return paddingTop_;
+    }
+
+    unsigned int GetPaddingRight() const
+    {
+      return paddingRight_;
+    }
+
+    unsigned int GetPaddingBottom() const
+    {
+      return paddingBottom_;
+    }
+
+    unsigned int GetPaddingInternal() const
+    {
+      return paddingInternal_;
+    }
+
+    void AddWidget(boost::shared_ptr<IWidget> widget);
+
+    virtual void SetStatusBar(IStatusBar& statusBar);
+
+    virtual void SetSize(unsigned int width,
+                         unsigned int height);
+
+    virtual bool Render(Orthanc::ImageAccessor& surface);
+    
+    virtual IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
+                                              int x,
+                                              int y,
+                                              OrthancStone::KeyboardModifiers modifiers,
+                                              const std::vector<Touch>& touches);
+
+    virtual void RenderMouseOver(Orthanc::ImageAccessor& target,
+                                 int x,
+                                 int y);
+
+    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
+                            int x,
+                            int y,
+                            OrthancStone::KeyboardModifiers modifiers);
+
+    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
+                            char keyChar,
+                            OrthancStone::KeyboardModifiers modifiers);
+
+    virtual bool HasAnimation() const
+    {
+      return hasAnimation_;
+    }
+
+    virtual void DoAnimation();
+
+    virtual bool HasRenderMouseOver();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/PanMouseTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "PanMouseTracker.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  PanMouseTracker::PanMouseTracker(WorldSceneWidget& that,
+                                   int x,
+                                   int y) :
+    that_(that)
+  {
+    that.GetView().GetPan(originalPanX_, originalPanY_);
+    that.GetView().MapPixelCenterToScene(downX_, downY_, x, y);
+  }
+    
+
+  void PanMouseTracker::Render(OrthancStone::CairoContext& context,
+                               double zoom)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+
+
+  void PanMouseTracker::MouseMove(int displayX,
+                                  int displayY,
+                                  double x,
+                                  double y,
+                                  const std::vector<Touch>& displayTouches,
+                                  const std::vector<Touch>& sceneTouches)
+  {
+    ViewportGeometry view = that_.GetView();
+    view.SetPan(originalPanX_ + (x - downX_) * view.GetZoom(),
+                originalPanY_ + (y - downY_) * view.GetZoom());
+    that_.SetView(view);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/PanMouseTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,61 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WorldSceneWidget.h"
+
+namespace Deprecated
+{
+  class PanMouseTracker : public IWorldSceneMouseTracker
+  {
+  private:
+    WorldSceneWidget&  that_;
+    double             originalPanX_;
+    double             originalPanY_;
+    double             downX_;
+    double             downY_;
+    
+  public:
+    PanMouseTracker(WorldSceneWidget& that,
+                    int x,
+                    int y);
+    
+    virtual bool HasRender() const
+    {
+      return false;
+    }
+
+    virtual void MouseUp()
+    {
+    }
+
+    virtual void Render(OrthancStone::CairoContext& context,
+                        double zoom);
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double x,
+                           double y,
+                           const std::vector<Touch>& displayTouches,
+                           const std::vector<Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/PanZoomMouseTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,137 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "PanZoomMouseTracker.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+#include <math.h>
+
+namespace Deprecated
+{
+  Touch GetCenter(const std::vector<Touch>& touches)
+  {
+    return Touch((touches[0].x + touches[1].x) / 2.0f, (touches[0].y + touches[1].y) / 2.0f);
+  }
+
+  double GetDistance(const std::vector<Touch>& touches)
+  {
+    float dx = touches[0].x - touches[1].x;
+    float dy = touches[0].y - touches[1].y;
+    return sqrt((double)(dx * dx) + (double)(dy * dy));
+  }
+
+
+  PanZoomMouseTracker::PanZoomMouseTracker(WorldSceneWidget& that,
+                                           const std::vector<Touch>& startTouches)
+    : that_(that),
+      originalZoom_(that.GetView().GetZoom())
+  {
+    that.GetView().GetPan(originalPanX_, originalPanY_);
+    that.GetView().MapPixelCenterToScene(originalSceneTouches_, startTouches);
+
+    originalDisplayCenter_ = GetCenter(startTouches);
+    originalSceneCenter_ = GetCenter(originalSceneTouches_);
+    originalDisplayDistanceBetweenTouches_ = GetDistance(startTouches);
+
+//    printf("original Pan %f %f\n", originalPanX_, originalPanY_);
+//    printf("original Zoom %f \n", originalZoom_);
+//    printf("original distance %f \n", (float)originalDisplayDistanceBetweenTouches_);
+//    printf("original display touches 0 %f %f\n", startTouches[0].x, startTouches[0].y);
+//    printf("original display touches 1 %f %f\n", startTouches[1].x, startTouches[1].y);
+//    printf("original Scene center %f %f\n", originalSceneCenter_.x, originalSceneCenter_.y);
+
+    unsigned int height = that.GetView().GetDisplayHeight();
+
+    if (height <= 3)
+    {
+      idle_ = true;
+      LOG(WARNING) << "image is too small to zoom (current height = " << height << ")";
+    }
+    else
+    {
+      idle_ = false;
+      normalization_ = 1.0 / static_cast<double>(height - 1);
+    }
+
+  }
+
+
+  void PanZoomMouseTracker::Render(OrthancStone::CairoContext& context,
+                                   double zoom)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+
+
+  void PanZoomMouseTracker::MouseMove(int displayX,
+                                      int displayY,
+                                      double x,
+                                      double y,
+                                      const std::vector<Touch>& displayTouches,
+                                      const std::vector<Touch>& sceneTouches)
+  {
+    ViewportGeometry view = that_.GetView();
+
+//    printf("Display touches 0 %f %f\n", displayTouches[0].x, displayTouches[0].y);
+//    printf("Display touches 1 %f %f\n", displayTouches[1].x, displayTouches[1].y);
+//    printf("Scene touches 0 %f %f\n", sceneTouches[0].x, sceneTouches[0].y);
+//    printf("Scene touches 1 %f %f\n", sceneTouches[1].x, sceneTouches[1].y);
+
+//    printf("zoom = %f\n", view.GetZoom());
+    Touch currentSceneCenter = GetCenter(sceneTouches);
+    double panX = originalPanX_ + (currentSceneCenter.x - originalSceneCenter_.x) * view.GetZoom();
+    double panY = originalPanY_ + (currentSceneCenter.y - originalSceneCenter_.y) * view.GetZoom();
+
+    view.SetPan(panX, panY);
+
+    static const double MIN_ZOOM = -4;
+    static const double MAX_ZOOM = 4;
+
+    if (!idle_)
+    {
+      double currentDistanceBetweenTouches = GetDistance(displayTouches);
+
+      double dy = static_cast<double>(currentDistanceBetweenTouches - originalDisplayDistanceBetweenTouches_) * normalization_;  // In the range [-1,1]
+      double z;
+
+      // Linear interpolation from [-1, 1] to [MIN_ZOOM, MAX_ZOOM]
+      if (dy < -1.0)
+      {
+        z = MIN_ZOOM;
+      }
+      else if (dy > 1.0)
+      {
+        z = MAX_ZOOM;
+      }
+      else
+      {
+        z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0;
+      }
+
+      z = pow(2.0, z);
+
+      view.SetZoom(z * originalZoom_);
+    }
+
+    that_.SetView(view);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/PanZoomMouseTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,65 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WorldSceneWidget.h"
+
+namespace Deprecated
+{
+  class PanZoomMouseTracker : public IWorldSceneMouseTracker
+  {
+  private:
+    WorldSceneWidget&  that_;
+    std::vector<Touch> originalSceneTouches_;
+    Touch              originalSceneCenter_;
+    Touch              originalDisplayCenter_;
+    double             originalPanX_;
+    double             originalPanY_;
+    double             originalZoom_;
+    double             originalDisplayDistanceBetweenTouches_;
+    bool               idle_;
+    double             normalization_;
+
+  public:
+    PanZoomMouseTracker(WorldSceneWidget& that,
+                        const std::vector<Touch>& startTouches);
+    
+    virtual bool HasRender() const
+    {
+      return false;
+    }
+
+    virtual void MouseUp()
+    {
+    }
+
+    virtual void Render(OrthancStone::CairoContext& context,
+                        double zoom);
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double x,
+                           double y,
+                           const std::vector<Touch>& displayTouches,
+                           const std::vector<Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/SliceViewerWidget.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,616 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SliceViewerWidget.h"
+
+#include "../Layers/SliceOutlineRenderer.h"
+#include "../../Toolbox/GeometryToolbox.h"
+#include "../Layers/FrameRenderer.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+#include <boost/math/constants/constants.hpp>
+
+
+static const double THIN_SLICE_THICKNESS = 100.0 * std::numeric_limits<double>::epsilon();
+
+namespace Deprecated
+{
+  void SliceViewerWidget::Scene::DeleteLayer(size_t index)
+  {
+    if (index >= renderers_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    assert(countMissing_ <= renderers_.size());
+
+    if (renderers_[index] != NULL)
+    {
+      assert(countMissing_ < renderers_.size());
+      delete renderers_[index];
+      renderers_[index] = NULL;
+      countMissing_++;
+    }
+  }
+
+  
+  SliceViewerWidget::Scene::Scene(const OrthancStone::CoordinateSystem3D& plane,
+                                  double thickness,
+                                  size_t countLayers) :
+    plane_(plane),
+    thickness_(thickness),
+    countMissing_(countLayers),
+    renderers_(countLayers, NULL)
+  {
+    if (thickness <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+  
+  SliceViewerWidget::Scene::~Scene()
+  {
+    for (size_t i = 0; i < renderers_.size(); i++)
+    {
+      DeleteLayer(i);
+    }
+  }
+
+  void SliceViewerWidget::Scene::SetLayer(size_t index,
+                                          ILayerRenderer* renderer)  // Takes ownership
+  {
+    if (renderer == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    DeleteLayer(index);
+
+    renderers_[index] = renderer;
+    countMissing_--;
+  }
+
+
+  bool SliceViewerWidget::Scene::RenderScene(OrthancStone::CairoContext& context,
+                                             const ViewportGeometry& view,
+                                             const OrthancStone::CoordinateSystem3D& viewportPlane)
+  {
+    bool fullQuality = true;
+    cairo_t *cr = context.GetObject();
+
+    for (size_t i = 0; i < renderers_.size(); i++)
+    {
+      if (renderers_[i] != NULL)
+      {
+        const OrthancStone::CoordinateSystem3D& framePlane = renderers_[i]->GetLayerPlane();
+          
+        double x0, y0, x1, y1, x2, y2;
+        viewportPlane.ProjectPoint(x0, y0, framePlane.GetOrigin());
+        viewportPlane.ProjectPoint(x1, y1, framePlane.GetOrigin() + framePlane.GetAxisX());
+        viewportPlane.ProjectPoint(x2, y2, framePlane.GetOrigin() + framePlane.GetAxisY());
+
+        /**
+         * Now we solve the system of linear equations Ax + b = x', given:
+         *   A [0 ; 0] + b = [x0 ; y0]
+         *   A [1 ; 0] + b = [x1 ; y1]
+         *   A [0 ; 1] + b = [x2 ; y2]
+         * <=>
+         *   b = [x0 ; y0]
+         *   A [1 ; 0] = [x1 ; y1] - b = [x1 - x0 ; y1 - y0]
+         *   A [0 ; 1] = [x2 ; y2] - b = [x2 - x0 ; y2 - y0]
+         * <=>
+         *   b = [x0 ; y0]
+         *   [a11 ; a21] = [x1 - x0 ; y1 - y0]
+         *   [a12 ; a22] = [x2 - x0 ; y2 - y0]
+         **/
+
+        cairo_matrix_t transform;
+        cairo_matrix_init(&transform, x1 - x0, y1 - y0, x2 - x0, y2 - y0, x0, y0);
+
+        cairo_save(cr);
+        cairo_transform(cr, &transform);
+          
+        if (!renderers_[i]->RenderLayer(context, view))
+        {
+          cairo_restore(cr);
+          return false;
+        }
+
+        cairo_restore(cr);
+      }
+
+      if (renderers_[i] != NULL &&
+          !renderers_[i]->IsFullQuality())
+      {
+        fullQuality = false;
+      }
+    }
+
+    if (!fullQuality)
+    {
+      double x, y;
+      view.MapDisplayToScene(x, y, static_cast<double>(view.GetDisplayWidth()) / 2.0, 10);
+
+      cairo_translate(cr, x, y);
+
+#if 1
+      double s = 5.0 / view.GetZoom();
+      cairo_rectangle(cr, -s, -s, 2.0 * s, 2.0 * s);
+#else
+      // TODO Drawing filled circles makes WebAssembly crash!
+      cairo_arc(cr, 0, 0, 5.0 / view.GetZoom(), 0, 2.0 * boost::math::constants::pi<double>());
+#endif
+        
+      cairo_set_line_width(cr, 2.0 / view.GetZoom());
+      cairo_set_source_rgb(cr, 1, 1, 1);
+      cairo_stroke_preserve(cr);
+      cairo_set_source_rgb(cr, 1, 0, 0);
+      cairo_fill(cr);
+    }
+
+    return true;
+  }
+
+  void SliceViewerWidget::Scene::SetLayerStyle(size_t index,
+                                               const RenderStyle& style)
+  {
+    if (renderers_[index] != NULL)
+    {
+      renderers_[index]->SetLayerStyle(style);
+    }
+  }
+
+  bool SliceViewerWidget::Scene::ContainsPlane(const OrthancStone::CoordinateSystem3D& plane) const
+  {
+    bool isOpposite;
+    if (!OrthancStone::GeometryToolbox::IsParallelOrOpposite(isOpposite,
+                                                             plane.GetNormal(),
+                                                             plane_.GetNormal()))
+    {
+      return false;
+    }
+    else
+    {
+      double z = (plane_.ProjectAlongNormal(plane.GetOrigin()) -
+                  plane_.ProjectAlongNormal(plane_.GetOrigin()));
+
+      if (z < 0)
+      {
+        z = -z;
+      }
+
+      return z <= thickness_;
+    }
+  }
+
+  
+  bool SliceViewerWidget::LookupLayer(size_t& index /* out */,
+                                      const IVolumeSlicer& layer) const
+  {
+    LayersIndex::const_iterator found = layersIndex_.find(&layer);
+
+    if (found == layersIndex_.end())
+    {
+      return false;
+    }
+    else
+    {
+      index = found->second;
+      assert(index < layers_.size() &&
+             layers_[index].get() == &layer);
+      return true;
+    }
+  }
+
+
+  void SliceViewerWidget::GetLayerExtent(OrthancStone::Extent2D& extent,
+                                         IVolumeSlicer& source) const
+  {
+    extent.Reset();
+
+    std::vector<OrthancStone::Vector> points;
+    if (source.GetExtent(points, plane_))
+    {
+      for (size_t i = 0; i < points.size(); i++)
+      {
+        double x, y;
+        plane_.ProjectPoint(x, y, points[i]);
+        extent.AddPoint(x, y);
+      }
+    }
+  }
+
+
+  OrthancStone::Extent2D SliceViewerWidget::GetSceneExtent()
+  {
+    OrthancStone::Extent2D sceneExtent;
+
+    for (size_t i = 0; i < layers_.size(); i++)
+    {
+      assert(layers_[i] != NULL);
+      OrthancStone::Extent2D layerExtent;
+      GetLayerExtent(layerExtent, *layers_[i]);
+
+      sceneExtent.Union(layerExtent);
+    }
+
+    return sceneExtent;
+  }
+
+  
+  bool SliceViewerWidget::RenderScene(OrthancStone::CairoContext& context,
+                                      const ViewportGeometry& view)
+  {
+    if (currentScene_.get() != NULL)
+    {
+      return currentScene_->RenderScene(context, view, plane_);
+    }
+    else
+    {
+      return true;
+    }
+  }
+
+  
+  void SliceViewerWidget::ResetPendingScene()
+  {
+    double thickness;
+    if (pendingScene_.get() == NULL)
+    {
+      thickness = 1.0;
+    }
+    else
+    {
+      thickness = pendingScene_->GetThickness();
+    }
+    
+    pendingScene_.reset(new Scene(plane_, thickness, layers_.size()));
+  }
+  
+
+  void SliceViewerWidget::UpdateLayer(size_t index,
+                                      ILayerRenderer* renderer,
+                                      const OrthancStone::CoordinateSystem3D& plane)
+  {
+    LOG(INFO) << "Updating layer " << index;
+    
+    std::unique_ptr<ILayerRenderer> tmp(renderer);
+
+    if (renderer == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    if (index >= layers_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    assert(layers_.size() == styles_.size());
+    renderer->SetLayerStyle(styles_[index]);
+
+    if (currentScene_.get() != NULL &&
+        currentScene_->ContainsPlane(plane))
+    {
+      currentScene_->SetLayer(index, tmp.release());
+      NotifyContentChanged();
+    }
+    else if (pendingScene_.get() != NULL &&
+             pendingScene_->ContainsPlane(plane))
+    {
+      pendingScene_->SetLayer(index, tmp.release());
+
+      if (currentScene_.get() == NULL ||
+          !currentScene_->IsComplete() ||
+          pendingScene_->IsComplete())
+      {
+#if __cplusplus < 201103L
+        currentScene_.reset(pendingScene_.release());
+#else
+        currentScene_ = std::move(pendingScene_);
+#endif
+
+        NotifyContentChanged();
+      }
+    }
+  }
+
+  
+  SliceViewerWidget::SliceViewerWidget(const std::string& name) :
+    WorldSceneWidget(name),
+    started_(false)
+  {
+    SetBackgroundCleared(true);
+  }
+  
+  
+  void SliceViewerWidget::ObserveLayer(IVolumeSlicer& layer)
+  {
+    // currently ignoring errors of type IVolumeSlicer::GeometryErrorMessage
+
+    Register<IVolumeSlicer::GeometryReadyMessage>(layer, &SliceViewerWidget::OnGeometryReady);
+    Register<IVolumeSlicer::SliceContentChangedMessage>(layer, &SliceViewerWidget::OnSliceChanged);
+    Register<IVolumeSlicer::ContentChangedMessage>(layer, &SliceViewerWidget::OnContentChanged);
+    Register<IVolumeSlicer::LayerReadyMessage>(layer, &SliceViewerWidget::OnLayerReady);
+    Register<IVolumeSlicer::LayerErrorMessage>(layer, &SliceViewerWidget::OnLayerError);
+  }
+
+
+  size_t SliceViewerWidget::AddLayer(boost::shared_ptr<IVolumeSlicer> layer)
+  {
+    if (layer == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    size_t index = layers_.size();
+    layers_.push_back(layer);
+    styles_.push_back(RenderStyle());
+    layersIndex_[layer.get()] = index;
+
+    ResetPendingScene();
+
+    ObserveLayer(*layer);
+
+    ResetChangedLayers();
+
+    return index;
+  }
+
+
+  void SliceViewerWidget::ReplaceLayer(size_t index,
+                                       boost::shared_ptr<IVolumeSlicer> layer)
+  {
+    if (layer == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    if (index >= layers_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    layers_[index] = layer;
+    layersIndex_[layer.get()] = index;
+
+    ResetPendingScene();
+
+    ObserveLayer(*layer);
+
+    InvalidateLayer(index);
+  }
+
+
+  void SliceViewerWidget::RemoveLayer(size_t index)
+  {
+    if (index >= layers_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    IVolumeSlicer* previousLayer = layers_[index].get();
+    layersIndex_.erase(layersIndex_.find(previousLayer));
+    layers_.erase(layers_.begin() + index);
+    changedLayers_.erase(changedLayers_.begin() + index);
+    styles_.erase(styles_.begin() + index);
+
+    layers_[index].reset();
+
+    currentScene_->DeleteLayer(index);
+    ResetPendingScene();
+
+    NotifyContentChanged();
+  }
+
+
+  const RenderStyle& SliceViewerWidget::GetLayerStyle(size_t layer) const
+  {
+    if (layer >= layers_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    assert(layers_.size() == styles_.size());
+    return styles_[layer];
+  }
+  
+
+  void SliceViewerWidget::SetLayerStyle(size_t layer,
+                                        const RenderStyle& style)
+  {
+    if (layer >= layers_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    assert(layers_.size() == styles_.size());
+    styles_[layer] = style;
+
+    if (currentScene_.get() != NULL)
+    {
+      currentScene_->SetLayerStyle(layer, style);
+    }
+
+    if (pendingScene_.get() != NULL)
+    {
+      pendingScene_->SetLayerStyle(layer, style);
+    }
+
+    NotifyContentChanged();
+  }
+  
+
+  void SliceViewerWidget::SetSlice(const OrthancStone::CoordinateSystem3D& plane)
+  {
+    LOG(INFO) << "Setting slice origin: (" << plane.GetOrigin()[0]
+              << "," << plane.GetOrigin()[1]
+              << "," << plane.GetOrigin()[2] << ")";
+    
+    Deprecated::Slice displayedSlice(plane_, THIN_SLICE_THICKNESS);
+
+    //if (!displayedSlice.ContainsPlane(slice))
+    {
+      if (currentScene_.get() == NULL ||
+          (pendingScene_.get() != NULL &&
+           pendingScene_->IsComplete()))
+      {
+#if __cplusplus < 201103L
+        currentScene_.reset(pendingScene_.release());
+#else
+        currentScene_ = std::move(pendingScene_);
+#endif
+      }
+
+      plane_ = plane;
+      ResetPendingScene();
+
+      InvalidateAllLayers();   // TODO Removing this line avoid loading twice the image in WASM
+    }
+
+    BroadcastMessage(DisplayedSliceMessage(*this, displayedSlice));
+  }
+
+
+  void SliceViewerWidget::OnGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message)
+  {
+    size_t i;
+    if (LookupLayer(i, message.GetOrigin()))
+    {
+      LOG(INFO) << ": Geometry ready for layer " << i << " in " << GetName();
+
+      changedLayers_[i] = true;
+      //layers_[i]->ScheduleLayerCreation(plane_);
+    }
+    BroadcastMessage(GeometryChangedMessage(*this));
+  }
+  
+
+  void SliceViewerWidget::InvalidateAllLayers()
+  {
+    for (size_t i = 0; i < layers_.size(); i++)
+    {
+      assert(layers_[i] != NULL);
+      changedLayers_[i] = true;
+      
+      //layers_[i]->ScheduleLayerCreation(plane_);
+    }
+  }
+
+
+  void SliceViewerWidget::InvalidateLayer(size_t layer)
+  {
+    if (layer >= layers_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    assert(layers_[layer] != NULL);
+    changedLayers_[layer] = true;
+
+    //layers_[layer]->ScheduleLayerCreation(plane_);
+  }
+
+
+  void SliceViewerWidget::OnContentChanged(const IVolumeSlicer::ContentChangedMessage& message)
+  {
+    size_t index;
+    if (LookupLayer(index, message.GetOrigin()))
+    {
+      InvalidateLayer(index);
+    }
+    
+    BroadcastMessage(SliceViewerWidget::ContentChangedMessage(*this));
+  }
+  
+
+  void SliceViewerWidget::OnSliceChanged(const IVolumeSlicer::SliceContentChangedMessage& message)
+  {
+    if (message.GetSlice().ContainsPlane(plane_))
+    {
+      size_t index;
+      if (LookupLayer(index, message.GetOrigin()))
+      {
+        InvalidateLayer(index);
+      }
+    }
+    
+    BroadcastMessage(SliceViewerWidget::ContentChangedMessage(*this));
+  }
+  
+  
+  void SliceViewerWidget::OnLayerReady(const IVolumeSlicer::LayerReadyMessage& message)
+  {
+    size_t index;
+    if (LookupLayer(index, message.GetOrigin()))
+    {
+      LOG(INFO) << "Renderer ready for layer " << index;
+      UpdateLayer(index, message.CreateRenderer(), message.GetSlice());
+    }
+    
+    BroadcastMessage(SliceViewerWidget::ContentChangedMessage(*this));
+  }
+
+
+  void SliceViewerWidget::OnLayerError(const IVolumeSlicer::LayerErrorMessage& message)
+  {
+    size_t index;
+    if (LookupLayer(index, message.GetOrigin()))
+    {
+      LOG(ERROR) << "Using error renderer on layer " << index;
+
+      // TODO
+      //UpdateLayer(index, new SliceOutlineRenderer(slice), slice);
+
+      BroadcastMessage(SliceViewerWidget::ContentChangedMessage(*this));
+    }
+  }
+
+
+  void SliceViewerWidget::ResetChangedLayers()
+  {
+    changedLayers_.resize(layers_.size());
+
+    for (size_t i = 0; i < changedLayers_.size(); i++)
+    {
+      changedLayers_[i] = false;
+    }
+  }
+
+
+  void SliceViewerWidget::DoAnimation()
+  {
+    assert(changedLayers_.size() <= layers_.size());
+    
+    for (size_t i = 0; i < changedLayers_.size(); i++)
+    {
+      if (changedLayers_[i])
+      {
+        layers_[i]->ScheduleLayerCreation(plane_);
+      }
+    }
+    
+    ResetChangedLayers();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/SliceViewerWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,210 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WorldSceneWidget.h"
+#include "../Layers/IVolumeSlicer.h"
+#include "../../Toolbox/Extent2D.h"
+#include "../../Messages/ObserverBase.h"
+
+#include <map>
+
+namespace Deprecated
+{
+  class SliceViewerWidget :
+    public WorldSceneWidget,
+    public OrthancStone::ObserverBase<SliceViewerWidget>,
+    public OrthancStone::IObservable
+  {
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryChangedMessage, SliceViewerWidget);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ContentChangedMessage, SliceViewerWidget);
+
+
+    // TODO - Use this message in ReferenceLineSource
+    class DisplayedSliceMessage : public OrthancStone::OriginMessage<SliceViewerWidget>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const Deprecated::Slice& slice_;
+
+    public:
+      DisplayedSliceMessage(SliceViewerWidget& origin,
+                            const Deprecated::Slice& slice) :
+        OriginMessage(origin),
+        slice_(slice)
+      {
+      }
+
+      const Deprecated::Slice& GetSlice() const
+      {
+        return slice_;
+      }
+    };
+
+  private:
+    SliceViewerWidget(const SliceViewerWidget&);
+    SliceViewerWidget& operator=(const SliceViewerWidget&);
+
+    class Scene : public boost::noncopyable
+    {
+    private:
+      OrthancStone::CoordinateSystem3D  plane_;
+      double                            thickness_;
+      size_t                            countMissing_;
+      std::vector<ILayerRenderer*>      renderers_;
+
+    public:
+      void DeleteLayer(size_t index);
+
+      Scene(const OrthancStone::CoordinateSystem3D& plane,
+            double thickness,
+            size_t countLayers);
+
+      ~Scene();
+
+      void SetLayer(size_t index,
+                    ILayerRenderer* renderer);  // Takes ownership
+
+      const OrthancStone::CoordinateSystem3D& GetPlane() const
+      {
+        return plane_;
+      }
+
+      bool HasRenderer(size_t index)
+      {
+        return renderers_[index] != NULL;
+      }
+
+      bool IsComplete() const
+      {
+        return countMissing_ == 0;
+      }
+
+      unsigned int GetCountMissing() const
+      {
+        return static_cast<unsigned int>(countMissing_);
+      }
+
+      bool RenderScene(OrthancStone::CairoContext& context,
+                       const ViewportGeometry& view,
+                       const OrthancStone::CoordinateSystem3D& viewportPlane);
+
+      void SetLayerStyle(size_t index,
+                         const RenderStyle& style);
+
+      bool ContainsPlane(const OrthancStone::CoordinateSystem3D& plane) const;
+
+      double GetThickness() const
+      {
+        return thickness_;
+      }
+    };
+
+    
+    typedef std::map<const IVolumeSlicer*, size_t>  LayersIndex;
+
+    bool                         started_;
+    LayersIndex                  layersIndex_;
+    std::vector<boost::shared_ptr<IVolumeSlicer> >  layers_;
+    std::vector<RenderStyle>     styles_;
+    OrthancStone::CoordinateSystem3D           plane_;
+    std::unique_ptr<Scene>         currentScene_;
+    std::unique_ptr<Scene>         pendingScene_;
+    std::vector<bool>            changedLayers_;
+
+    bool LookupLayer(size_t& index /* out */,
+                     const IVolumeSlicer& layer) const;
+
+    void GetLayerExtent(OrthancStone::Extent2D& extent,
+                        IVolumeSlicer& source) const;
+
+    void OnGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message);
+
+    virtual void OnContentChanged(const IVolumeSlicer::ContentChangedMessage& message);
+
+    virtual void OnSliceChanged(const IVolumeSlicer::SliceContentChangedMessage& message);
+
+    virtual void OnLayerReady(const IVolumeSlicer::LayerReadyMessage& message);
+
+    virtual void OnLayerError(const IVolumeSlicer::LayerErrorMessage& message);
+
+    void ObserveLayer(IVolumeSlicer& source);
+
+    void ResetChangedLayers();
+
+  public:
+    SliceViewerWidget(const std::string& name);
+
+    virtual OrthancStone::Extent2D GetSceneExtent();
+
+  protected:
+    virtual bool RenderScene(OrthancStone::CairoContext& context,
+                             const ViewportGeometry& view);
+
+    void ResetPendingScene();
+
+    void UpdateLayer(size_t index,
+                     ILayerRenderer* renderer,
+                     const OrthancStone::CoordinateSystem3D& plane);
+
+    void InvalidateAllLayers();
+
+    void InvalidateLayer(size_t layer);
+    
+  public:
+    virtual ~SliceViewerWidget()
+    {
+    }
+
+    size_t AddLayer(boost::shared_ptr<IVolumeSlicer> layer);
+
+    void ReplaceLayer(size_t layerIndex, boost::shared_ptr<IVolumeSlicer> layer); // Takes ownership
+
+    void RemoveLayer(size_t layerIndex);
+
+    size_t GetLayerCount() const
+    {
+      return layers_.size();
+    }
+
+    const RenderStyle& GetLayerStyle(size_t layer) const;
+
+    void SetLayerStyle(size_t layer,
+                       const RenderStyle& style);
+
+    void SetSlice(const OrthancStone::CoordinateSystem3D& plane);
+
+    const OrthancStone::CoordinateSystem3D& GetSlice() const
+    {
+      return plane_;
+    }
+
+    virtual bool HasAnimation() const
+    {
+      return true;
+    }
+
+    virtual void DoAnimation();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/TestCairoWidget.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,126 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "TestCairoWidget.h"
+
+#include <stdio.h>
+
+
+namespace Deprecated
+{
+  namespace Samples
+  {
+    void TestCairoWidget::DoAnimation() 
+    {
+      value_ -= 0.01f;
+      if (value_ < 0)
+      {
+        value_ = 1;
+      }
+
+      NotifyContentChanged();
+    }
+
+
+    bool TestCairoWidget::RenderCairo(OrthancStone::CairoContext& context)
+    {
+      cairo_t* cr = context.GetObject();
+
+      cairo_set_source_rgb (cr, .3, 0, 0);
+      cairo_paint(cr);
+
+      cairo_set_source_rgb(cr, 0, 1, 0);
+      cairo_rectangle(cr, width_ / 4, height_ / 4, width_ / 2, height_ / 2);
+      cairo_set_line_width(cr, 1.0);
+      cairo_fill(cr);
+
+      cairo_set_source_rgb(cr, 0, 1, value_);
+      cairo_rectangle(cr, width_ / 2 - 50, height_ / 2 - 50, 100, 100);
+      cairo_fill(cr);
+
+      return true;
+    }
+
+
+    void TestCairoWidget::RenderMouseOverCairo(OrthancStone::CairoContext& context,
+                                               int x,
+                                               int y)
+    {
+      cairo_t* cr = context.GetObject();
+
+      cairo_set_source_rgb (cr, 1, 0, 0);
+      cairo_rectangle(cr, x - 5, y - 5, 10, 10);
+      cairo_set_line_width(cr, 1.0);
+      cairo_stroke(cr);
+
+      char buf[64];
+      sprintf(buf, "(%d,%d)", x, y);
+      UpdateStatusBar(buf);
+    }
+
+
+    TestCairoWidget::TestCairoWidget(const std::string& name, bool animate) :
+      CairoWidget(name),
+      width_(0),
+      height_(0),
+      value_(1),
+      animate_(animate)
+    {
+    }
+
+
+    void TestCairoWidget::SetSize(unsigned int width, 
+                                  unsigned int height)
+    {
+      CairoWidget::SetSize(width, height);
+      width_ = width;
+      height_ = height;
+    }
+ 
+
+    IMouseTracker* TestCairoWidget::CreateMouseTracker(OrthancStone::MouseButton button,
+                                                       int x,
+                                                       int y,
+                                                       OrthancStone::KeyboardModifiers modifiers,
+                                                       const std::vector<Touch>& touches)
+    {
+      UpdateStatusBar("Click");
+      return NULL;
+    }
+
+
+    void TestCairoWidget::MouseWheel(OrthancStone::MouseWheelDirection direction,
+                                     int x,
+                                     int y,
+                                     OrthancStone::KeyboardModifiers modifiers) 
+    {
+      UpdateStatusBar(direction == OrthancStone::MouseWheelDirection_Down ? "Wheel down" : "Wheel up");
+    }
+
+    
+    void TestCairoWidget::KeyPressed(OrthancStone::KeyboardKeys key,
+                                     char keyChar,
+                                     OrthancStone::KeyboardModifiers modifiers)
+    {
+      UpdateStatusBar("Key pressed: \"" + std::string(1, keyChar) + "\"");
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/TestCairoWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,79 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "CairoWidget.h"
+
+namespace Deprecated
+{
+  namespace Samples
+  {
+    class TestCairoWidget : public CairoWidget
+    {
+    private:
+      unsigned int  width_;
+      unsigned int  height_;
+      float         value_;
+      bool          animate_;
+
+    protected:
+      virtual bool RenderCairo(OrthancStone::CairoContext& context);
+
+      virtual void RenderMouseOverCairo(OrthancStone::CairoContext& context,
+                                        int x,
+                                        int y);
+
+    public:
+      TestCairoWidget(const std::string& name, bool animate);
+
+      virtual void SetSize(unsigned int width, 
+                           unsigned int height);
+ 
+      virtual IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
+                                                int x,
+                                                int y,
+                                                OrthancStone::KeyboardModifiers modifiers,
+                                                const std::vector<Touch>& touches);
+
+      virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
+                              int x,
+                              int y,
+                              OrthancStone::KeyboardModifiers modifiers);
+    
+      virtual void KeyPressed(OrthancStone::KeyboardKeys key,
+                              char keyChar,
+                              OrthancStone::KeyboardModifiers modifiers);
+
+      virtual bool HasAnimation() const
+      {
+        return animate_;
+      }
+      
+      virtual void DoAnimation();
+
+      virtual bool HasRenderMouseOver()
+      {
+        return true;
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/TestWorldSceneWidget.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,149 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "TestWorldSceneWidget.h"
+
+#include <OrthancException.h>
+
+#include <math.h>
+#include <stdio.h>
+
+namespace Deprecated
+{
+  namespace Samples
+  {
+    class TestWorldSceneWidget::Interactor : public IWorldSceneInteractor
+    {
+    public:
+      virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
+                                                          const ViewportGeometry& view,
+                                                          OrthancStone::MouseButton button,
+                                                          OrthancStone::KeyboardModifiers modifiers,
+                                                          int viewportX,
+                                                          int viewportY,
+                                                          double x,
+                                                          double y,
+                                                          IStatusBar* statusBar,
+                                                          const std::vector<Touch>& touches)
+      {
+        if (statusBar)
+        {
+          char buf[64];
+          sprintf(buf, "X = %0.2f, Y = %0.2f", x, y);
+          statusBar->SetMessage(buf);
+        }
+
+        return NULL;
+      }
+
+      virtual void MouseOver(OrthancStone::CairoContext& context,
+                             WorldSceneWidget& widget,
+                             const ViewportGeometry& view,
+                             double x,
+                             double y,
+                             IStatusBar* statusBar)
+      {
+        double S = 0.5;
+
+        if (fabs(x) <= S &&
+            fabs(y) <= S)
+        {
+          cairo_t* cr = context.GetObject();
+          cairo_set_source_rgb(cr, 1, 0, 0);
+          cairo_rectangle(cr, -S, -S , 2.0 * S, 2.0 * S);
+          cairo_set_line_width(cr, 1.0 / view.GetZoom());
+          cairo_stroke(cr);
+        }
+      }
+
+      virtual void MouseWheel(WorldSceneWidget& widget,
+                              OrthancStone::MouseWheelDirection direction,
+                              OrthancStone::KeyboardModifiers modifiers,
+                              IStatusBar* statusBar)
+      {
+        if (statusBar)
+        {
+          statusBar->SetMessage(direction == OrthancStone::MouseWheelDirection_Down ? "Wheel down" : "Wheel up");
+        }
+      }
+
+      virtual void KeyPressed(WorldSceneWidget& widget,
+                              OrthancStone::KeyboardKeys key,
+                              char keyChar,
+                              OrthancStone::KeyboardModifiers modifiers,
+                              IStatusBar* statusBar)
+      {
+        if (statusBar)
+        {
+          statusBar->SetMessage("Key pressed: \"" + std::string(1, keyChar) + "\"");
+        }
+      }
+    };
+
+
+    bool TestWorldSceneWidget::RenderScene(OrthancStone::CairoContext& context,
+                                           const ViewportGeometry& view)
+    {
+      cairo_t* cr = context.GetObject();
+
+      // Clear background
+      cairo_set_source_rgb(cr, 0, 0, 0);
+      cairo_paint(cr);
+
+      float color = static_cast<float>(count_ % 16) / 15.0f;
+      cairo_set_source_rgb(cr, 0, 1.0f - color, color);
+      cairo_rectangle(cr, -10, -.5, 20, 1);
+      cairo_fill(cr);
+
+      return true;
+    }
+
+
+    TestWorldSceneWidget::TestWorldSceneWidget(const std::string& name, bool animate) :
+      WorldSceneWidget(name),
+      interactor_(new Interactor),
+      animate_(animate),
+      count_(0)
+    {
+      SetInteractor(*interactor_);
+    }
+
+
+    OrthancStone::Extent2D TestWorldSceneWidget::GetSceneExtent()
+    {
+      return OrthancStone::Extent2D(-10, -.5, 10, .5);
+    }
+
+
+    void TestWorldSceneWidget::DoAnimation()
+    {
+      if (animate_)
+      {
+        count_++;
+        NotifyContentChanged();
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/TestWorldSceneWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,63 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WorldSceneWidget.h"
+
+#include <memory>
+
+namespace Deprecated
+{
+  namespace Samples
+  {
+    class TestWorldSceneWidget : public WorldSceneWidget
+    {
+    private:
+      class Interactor;
+
+      std::unique_ptr<Interactor>   interactor_;
+      bool                        animate_;
+      unsigned int                count_;
+
+    protected:
+      virtual bool RenderScene(OrthancStone::CairoContext& context,
+                               const ViewportGeometry& view);
+
+    public:
+      TestWorldSceneWidget(const std::string& name, bool animate);
+
+      virtual OrthancStone::Extent2D GetSceneExtent();
+
+      virtual bool HasAnimation() const
+      {
+        return animate_;
+      }
+
+      virtual void DoAnimation();
+
+      virtual bool HasRenderMouseOver()
+      {
+        return true;
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/WidgetBase.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,166 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WidgetBase.h"
+
+#include <OrthancException.h>
+#include <Images/ImageProcessing.h>
+#include <Logging.h>
+
+namespace Deprecated
+{
+  void WidgetBase::NotifyContentChanged()
+  {
+    if (parent_ != NULL)
+    {
+      parent_->NotifyContentChanged();
+    }
+
+    if (viewport_ != NULL)
+    {
+      viewport_->NotifyBackgroundChanged();
+    }
+  }
+
+
+  void WidgetBase::SetParent(IWidget& parent)
+  {
+    if (parent_ != NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      parent_ = &parent;
+    }
+  }    
+
+  
+  void WidgetBase::ClearBackgroundOrthanc(Orthanc::ImageAccessor& target) const 
+  {
+    // Clear the background using Orthanc
+
+    if (backgroundCleared_)
+    {
+      Orthanc::ImageProcessing::Set(target, 
+                                    backgroundColor_[0],
+                                    backgroundColor_[1],
+                                    backgroundColor_[2],
+                                    255 /* alpha */);
+    }
+  }
+
+
+  void WidgetBase::ClearBackgroundCairo(OrthancStone::CairoContext& context) const
+  {
+    // Clear the background using Cairo
+
+    if (IsBackgroundCleared())
+    {
+      uint8_t red, green, blue;
+      GetBackgroundColor(red, green, blue);
+
+      context.SetSourceColor(red, green, blue);
+      cairo_paint(context.GetObject());
+    }
+  }
+
+
+  void WidgetBase::ClearBackgroundCairo(Orthanc::ImageAccessor& target) const
+  {
+    OrthancStone::CairoSurface surface(target, false /* no alpha */);
+    OrthancStone::CairoContext context(surface);
+    ClearBackgroundCairo(context);
+  }
+
+
+  void WidgetBase::UpdateStatusBar(const std::string& message)
+  {
+    if (statusBar_ != NULL)
+    {
+      statusBar_->SetMessage(message);
+    }
+  }
+
+
+  WidgetBase::WidgetBase(const std::string& name) :
+    parent_(NULL),
+    viewport_(NULL),
+    statusBar_(NULL),
+    backgroundCleared_(false),
+    transmitMouseOver_(false),
+    name_(name)
+  {
+    backgroundColor_[0] = 0;
+    backgroundColor_[1] = 0;
+    backgroundColor_[2] = 0;
+  }
+
+
+  void WidgetBase::SetViewport(WidgetViewport& viewport)
+  {
+    if (viewport_ != NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      viewport_ = &viewport;
+    }
+  }
+
+  
+  void WidgetBase::SetBackgroundColor(uint8_t red,
+                                      uint8_t green,
+                                      uint8_t blue)
+  {
+    backgroundColor_[0] = red;
+    backgroundColor_[1] = green;
+    backgroundColor_[2] = blue;
+  }
+
+  void WidgetBase::GetBackgroundColor(uint8_t& red,
+                                      uint8_t& green,
+                                      uint8_t& blue) const
+  {
+    red = backgroundColor_[0];
+    green = backgroundColor_[1];
+    blue = backgroundColor_[2];
+  }
+
+
+  bool WidgetBase::Render(Orthanc::ImageAccessor& surface)
+  {
+#if 0
+    ClearBackgroundOrthanc(surface);
+#else
+    ClearBackgroundCairo(surface);  // Faster than Orthanc
+#endif
+
+    return true;
+  }
+
+  
+  void WidgetBase::DoAnimation()
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/WidgetBase.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,117 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IWidget.h"
+
+#include "../../Wrappers/CairoContext.h"
+#include "../Viewport/WidgetViewport.h"
+
+namespace Deprecated
+{
+  class WidgetBase : public IWidget
+  {
+  private:
+    IWidget*         parent_;
+    WidgetViewport*  viewport_;
+    IStatusBar*      statusBar_;
+    bool             backgroundCleared_;
+    uint8_t          backgroundColor_[3];
+    bool             transmitMouseOver_;
+    std::string      name_;
+
+  protected:
+    void ClearBackgroundOrthanc(Orthanc::ImageAccessor& target) const;
+
+    void ClearBackgroundCairo(OrthancStone::CairoContext& context) const;
+
+    void ClearBackgroundCairo(Orthanc::ImageAccessor& target) const;
+
+    void UpdateStatusBar(const std::string& message);
+
+    IStatusBar* GetStatusBar() const
+    {
+      return statusBar_;
+    }
+
+  public:
+    WidgetBase(const std::string& name);
+
+    virtual void FitContent()
+    {
+    }
+  
+    virtual void SetParent(IWidget& parent);
+    
+    virtual void SetViewport(WidgetViewport& viewport);
+
+    void SetBackgroundCleared(bool clear)
+    {
+      backgroundCleared_ = clear;
+    }
+
+    bool IsBackgroundCleared() const
+    {
+      return backgroundCleared_;
+    }
+
+    void SetTransmitMouseOver(bool transmit)
+    {
+      transmitMouseOver_ = transmit;
+    }
+
+    void SetBackgroundColor(uint8_t red,
+                            uint8_t green,
+                            uint8_t blue);
+
+    void GetBackgroundColor(uint8_t& red,
+                            uint8_t& green,
+                            uint8_t& blue) const;
+
+    virtual void SetStatusBar(IStatusBar& statusBar)
+    {
+      statusBar_ = &statusBar;
+    }
+
+    virtual bool Render(Orthanc::ImageAccessor& surface);
+
+    virtual bool HasAnimation() const
+    {
+      return false;
+    }
+
+    virtual void DoAnimation();
+
+    virtual bool HasRenderMouseOver()
+    {
+      return transmitMouseOver_;
+    }
+
+    virtual void NotifyContentChanged();
+
+    const std::string& GetName() const
+    {
+      return name_;
+    }
+
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/WorldSceneWidget.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,229 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WorldSceneWidget.h"
+
+#include "PanMouseTracker.h"
+#include "ZoomMouseTracker.h"
+#include "PanZoomMouseTracker.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+#include <math.h>
+#include <memory>
+#include <cassert>
+
+namespace Deprecated
+{
+  // this is an adapter between a IWorldSceneMouseTracker
+  // that is tracking a mouse in scene coordinates/mm and
+  // an IMouseTracker that is tracking a mouse
+  // in screen coordinates/pixels.
+  class WorldSceneWidget::SceneMouseTracker : public IMouseTracker
+  {
+  private:
+    ViewportGeometry                        view_;
+    std::unique_ptr<IWorldSceneMouseTracker>  tracker_;
+
+  public:
+    SceneMouseTracker(const ViewportGeometry& view,
+                      IWorldSceneMouseTracker* tracker) :
+      view_(view),
+      tracker_(tracker)
+    {
+      if (tracker == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    virtual void Render(Orthanc::ImageAccessor& target)
+    {
+      if (tracker_->HasRender())
+      {
+        OrthancStone::CairoSurface surface(target, false /* no alpha */);
+        OrthancStone::CairoContext context(surface);
+        view_.ApplyTransform(context);
+        tracker_->Render(context, view_.GetZoom());
+      }
+    }
+
+    virtual void MouseUp()
+    {
+      tracker_->MouseUp();
+    }
+
+    virtual void MouseMove(int x,
+                           int y,
+                           const std::vector<Touch>& displayTouches)
+    {
+      double sceneX, sceneY;
+      view_.MapPixelCenterToScene(sceneX, sceneY, x, y);
+
+      std::vector<Touch> sceneTouches;
+      for (size_t t = 0; t < displayTouches.size(); t++)
+      {
+        double sx, sy;
+        
+        view_.MapPixelCenterToScene(
+          sx, sy, (int)displayTouches[t].x, (int)displayTouches[t].y);
+        
+        sceneTouches.push_back(
+          Touch(static_cast<float>(sx), static_cast<float>(sy)));
+      }
+      tracker_->MouseMove(x, y, sceneX, sceneY, displayTouches, sceneTouches);
+    }
+  };
+
+
+  bool WorldSceneWidget::RenderCairo(OrthancStone::CairoContext& context)
+  {
+    view_.ApplyTransform(context);
+    return RenderScene(context, view_);
+  }
+
+
+  void WorldSceneWidget::RenderMouseOverCairo(OrthancStone::CairoContext& context,
+                                              int x,
+                                              int y)
+  {
+    ViewportGeometry view = GetView();
+    view.ApplyTransform(context);
+
+    double sceneX, sceneY;
+    view.MapPixelCenterToScene(sceneX, sceneY, x, y);
+
+    if (interactor_)
+    {
+      interactor_->MouseOver(context, *this, view, sceneX, sceneY, GetStatusBar());
+    }
+  }
+
+
+  void WorldSceneWidget::SetSceneExtent(ViewportGeometry& view)
+  {
+    view.SetSceneExtent(GetSceneExtent());
+  }
+
+
+  void WorldSceneWidget::SetSize(unsigned int width,
+                                 unsigned int height)
+  {
+    CairoWidget::SetSize(width, height);
+    view_.SetDisplaySize(width, height);
+  }
+
+
+  void WorldSceneWidget::SetInteractor(IWorldSceneInteractor& interactor)
+  {
+    interactor_ = &interactor;
+  }
+
+
+  void WorldSceneWidget::FitContent()
+  {
+    SetSceneExtent(view_);
+    view_.FitContent();
+
+    NotifyContentChanged();
+  }
+
+
+  void WorldSceneWidget::SetView(const ViewportGeometry& view)
+  {
+    view_ = view;
+
+    NotifyContentChanged();
+  }
+
+
+  IMouseTracker* WorldSceneWidget::CreateMouseTracker(OrthancStone::MouseButton button,
+                                                      int x,
+                                                      int y,
+                                                      OrthancStone::KeyboardModifiers modifiers,
+                                                      const std::vector<Touch>& touches)
+  {
+    double sceneX, sceneY;
+    view_.MapPixelCenterToScene(sceneX, sceneY, x, y);
+
+    // asks the Widget Interactor to provide a mouse tracker
+    std::unique_ptr<IWorldSceneMouseTracker> tracker;
+
+    if (interactor_)
+    {
+      tracker.reset(interactor_->CreateMouseTracker(*this, view_, button, modifiers, x, y, sceneX, sceneY, GetStatusBar(), touches));
+    }
+    
+    if (tracker.get() != NULL)
+    {
+      return new SceneMouseTracker(view_, tracker.release());
+    }
+    else if (hasDefaultMouseEvents_)
+    {
+      if (touches.size() == 2)
+      {
+        return new SceneMouseTracker(view_, new PanZoomMouseTracker(*this, touches));
+      }
+      else
+      {
+        switch (button)
+        {
+          case OrthancStone::MouseButton_Middle:
+            return new SceneMouseTracker(view_, new PanMouseTracker(*this, x, y));
+
+          case OrthancStone::MouseButton_Right:
+            return new SceneMouseTracker(view_, new ZoomMouseTracker(*this, x, y));
+
+          default:
+            return NULL;
+        }
+      }
+    }
+    else
+    {
+      return NULL;
+    }
+  }
+
+
+  void WorldSceneWidget::MouseWheel(OrthancStone::MouseWheelDirection direction,
+                                    int x,
+                                    int y,
+                                    OrthancStone::KeyboardModifiers modifiers)
+  {
+    if (interactor_)
+    {
+      interactor_->MouseWheel(*this, direction, modifiers, GetStatusBar());
+    }
+  }
+
+
+  void WorldSceneWidget::KeyPressed(OrthancStone::KeyboardKeys key,
+                                    char keyChar,
+                                    OrthancStone::KeyboardModifiers modifiers)
+  {
+    if (interactor_)
+    {
+      interactor_->KeyPressed(*this, key, keyChar, modifiers, GetStatusBar());
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/WorldSceneWidget.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,103 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "CairoWidget.h"
+#include "IWorldSceneInteractor.h"
+
+#include "../Toolbox/ViewportGeometry.h"
+
+namespace Deprecated
+{
+  class WorldSceneWidget : public CairoWidget
+  {
+  private:
+    class SceneMouseTracker;
+
+    ViewportGeometry       view_;
+    IWorldSceneInteractor* interactor_;
+    bool                   hasDefaultMouseEvents_;
+
+  protected:
+    virtual OrthancStone::Extent2D GetSceneExtent() = 0;
+
+    virtual bool RenderScene(OrthancStone::CairoContext& context,
+                             const ViewportGeometry& view) = 0;
+
+    // From CairoWidget
+    virtual bool RenderCairo(OrthancStone::CairoContext& context);
+
+    // From CairoWidget
+    virtual void RenderMouseOverCairo(OrthancStone::CairoContext& context,
+                                      int x,
+                                      int y);
+
+    void SetSceneExtent(ViewportGeometry& geometry);
+
+  public:
+    WorldSceneWidget(const std::string& name) :
+      CairoWidget(name),
+      interactor_(NULL),
+      hasDefaultMouseEvents_(true)
+    {
+    }
+
+    void SetDefaultMouseEvents(bool value)
+    {
+      hasDefaultMouseEvents_ = value;
+    }
+
+    bool HasDefaultMouseEvents() const
+    {
+      return hasDefaultMouseEvents_;
+    }
+
+    void SetInteractor(IWorldSceneInteractor& interactor);
+
+    void SetView(const ViewportGeometry& view);
+
+    const ViewportGeometry& GetView() const
+    {
+      return view_;
+    }
+
+    virtual void SetSize(unsigned int width,
+                         unsigned int height);
+
+    virtual void FitContent();
+
+    virtual IMouseTracker* CreateMouseTracker(OrthancStone::MouseButton button,
+                                              int x,
+                                              int y,
+                                              OrthancStone::KeyboardModifiers modifiers,
+                                              const std::vector<Touch>& touches);
+
+    virtual void MouseWheel(OrthancStone::MouseWheelDirection direction,
+                            int x,
+                            int y,
+                            OrthancStone::KeyboardModifiers modifiers);
+
+    virtual void KeyPressed(OrthancStone::KeyboardKeys key,
+                            char keyChar,
+                            OrthancStone::KeyboardModifiers modifiers);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/ZoomMouseTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,110 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ZoomMouseTracker.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+namespace Deprecated
+{
+  ZoomMouseTracker::ZoomMouseTracker(WorldSceneWidget& that,
+                                     int x,
+                                     int y) :
+    that_(that),
+    originalZoom_(that.GetView().GetZoom()),
+    downX_(x),
+    downY_(y)
+  {
+    that.GetView().MapPixelCenterToScene(centerX_, centerY_, x, y);
+
+    unsigned int height = that.GetView().GetDisplayHeight();
+      
+    if (height <= 3)
+    {
+      idle_ = true;
+      LOG(WARNING) << "image is too small to zoom (current height = " << height << ")";
+    }
+    else
+    {
+      idle_ = false;
+      normalization_ = 1.0 / static_cast<double>(height - 1);
+    }
+  }
+    
+
+  void ZoomMouseTracker::Render(OrthancStone::CairoContext& context,
+                                double zoom)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+  }
+
+
+  void ZoomMouseTracker::MouseMove(int displayX,
+                                   int displayY,
+                                   double x,
+                                   double y,
+                                   const std::vector<Touch>& displayTouches,
+                                   const std::vector<Touch>& sceneTouches)
+  {
+    static const double MIN_ZOOM = -4;
+    static const double MAX_ZOOM = 4;
+
+      
+    if (!idle_)
+    {
+      double dy = static_cast<double>(displayY - downY_) * normalization_;  // In the range [-1,1]
+      double z;
+
+      // Linear interpolation from [-1, 1] to [MIN_ZOOM, MAX_ZOOM]
+      if (dy < -1.0)
+      {
+        z = MIN_ZOOM;
+      }
+      else if (dy > 1.0)
+      {
+        z = MAX_ZOOM;
+      }
+      else
+      {
+        z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0;
+      }
+
+      z = pow(2.0, z);
+
+      ViewportGeometry view = that_.GetView();
+        
+      view.SetZoom(z * originalZoom_);
+        
+      // Correct the pan so that the original click point is kept at
+      // the same location on the display
+      double panX, panY;
+      view.GetPan(panX, panY);
+
+      int tx, ty;
+      view.MapSceneToDisplay(tx, ty, centerX_, centerY_);
+      view.SetPan(panX + static_cast<double>(downX_ - tx),
+                  panY + static_cast<double>(downY_ - ty));
+        
+      that_.SetView(view);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/Widgets/ZoomMouseTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,64 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WorldSceneWidget.h"
+
+namespace Deprecated
+{
+  class ZoomMouseTracker : public IWorldSceneMouseTracker
+  {
+  private:
+    WorldSceneWidget&  that_;
+    double             originalZoom_;
+    int                downX_;
+    int                downY_;
+    double             centerX_;
+    double             centerY_;
+    bool               idle_;
+    double             normalization_;
+    
+  public:
+    ZoomMouseTracker(WorldSceneWidget& that,
+                     int x,
+                     int y);
+    
+    virtual bool HasRender() const
+    {
+      return false;
+    }
+
+    virtual void MouseUp()
+    {
+    }
+
+    virtual void Render(OrthancStone::CairoContext& context,
+                        double zoom);
+
+    virtual void MouseMove(int displayX,
+                           int displayY,
+                           double x,
+                           double y,
+                           const std::vector<Touch>& displayTouches,
+                           const std::vector<Touch>& sceneTouches);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Deprecated/dev.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,958 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "Layers/FrameRenderer.h"
+#include "Layers/LineLayerRenderer.h"
+#include "Layers/SliceOutlineRenderer.h"
+#include "Toolbox/DownloadStack.h"
+#include "Toolbox/GeometryToolbox.h"
+#include "Toolbox/OrthancSlicesLoader.h"
+#include "Volumes/ISlicedVolume.h"
+#include "Volumes/ImageBuffer3D.h"
+#include "Widgets/SliceViewerWidget.h"
+
+#include <Logging.h>
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+
+#include <boost/math/special_functions/round.hpp>
+
+
+namespace Deprecated
+{
+  // TODO: Handle errors while loading
+  class OrthancVolumeImage :
+    public ISlicedVolume,
+    public OrthancStone::IObserver
+  {
+  private:
+    OrthancSlicesLoader           loader_;
+    std::unique_ptr<OrthancStone::ImageBuffer3D>  image_;
+    std::unique_ptr<DownloadStack>  downloadStack_;
+    bool                          computeRange_;
+    size_t                        pendingSlices_;
+
+    void ScheduleSliceDownload()
+    {
+      assert(downloadStack_.get() != NULL);
+
+      unsigned int slice;
+      if (downloadStack_->Pop(slice))
+      {
+        loader_.ScheduleLoadSliceImage(slice, OrthancStone::SliceImageQuality_Jpeg90);
+      }
+    }
+
+
+    static bool IsCompatible(const Slice& a,
+                             const Slice& b)
+    {
+      if (!OrthancStone::GeometryToolbox::IsParallel(a.GetGeometry().GetNormal(),
+                                                     b.GetGeometry().GetNormal()))
+      {
+        LOG(ERROR) << "A slice in the volume image is not parallel to the others.";
+        return false;
+      }
+
+      if (a.GetConverter().GetExpectedPixelFormat() != b.GetConverter().GetExpectedPixelFormat())
+      {
+        LOG(ERROR) << "The pixel format changes across the slices of the volume image.";
+        return false;
+      }
+
+      if (a.GetWidth() != b.GetWidth() ||
+          a.GetHeight() != b.GetHeight())
+      {
+        LOG(ERROR) << "The slices dimensions (width/height) are varying throughout the volume image";
+        return false;
+      }
+
+      if (!OrthancStone::LinearAlgebra::IsNear(a.GetPixelSpacingX(), b.GetPixelSpacingX()) ||
+          !OrthancStone::LinearAlgebra::IsNear(a.GetPixelSpacingY(), b.GetPixelSpacingY()))
+      {
+        LOG(ERROR) << "The pixel spacing of the slices change across the volume image";
+        return false;
+      }
+
+      return true;
+    }
+
+
+    static double GetDistance(const Slice& a,
+                              const Slice& b)
+    {
+      return fabs(a.GetGeometry().ProjectAlongNormal(a.GetGeometry().GetOrigin()) -
+                  a.GetGeometry().ProjectAlongNormal(b.GetGeometry().GetOrigin()));
+    }
+
+
+    void OnSliceGeometryReady(const OrthancSlicesLoader::SliceGeometryReadyMessage& message)
+    {
+      assert(&message.GetOrigin() == &loader_);
+
+      if (loader_.GetSlicesCount() == 0)
+      {
+        LOG(ERROR) << "Empty volume image";
+        BroadcastMessage(ISlicedVolume::GeometryErrorMessage(*this));
+        return;
+      }
+
+      for (size_t i = 1; i < loader_.GetSlicesCount(); i++)
+      {
+        if (!IsCompatible(loader_.GetSlice(0), loader_.GetSlice(i)))
+        {
+          BroadcastMessage(ISlicedVolume::GeometryErrorMessage(*this));
+          return;
+        }
+      }
+
+      double spacingZ;
+
+      if (loader_.GetSlicesCount() > 1)
+      {
+        spacingZ = GetDistance(loader_.GetSlice(0), loader_.GetSlice(1));
+      }
+      else
+      {
+        // This is a volume with one single slice: Choose a dummy
+        // z-dimension for voxels
+        spacingZ = 1;
+      }
+
+      for (size_t i = 1; i < loader_.GetSlicesCount(); i++)
+      {
+        if (!OrthancStone::LinearAlgebra::IsNear(spacingZ, GetDistance(loader_.GetSlice(i - 1), loader_.GetSlice(i)),
+                                                 0.001 /* this is expressed in mm */))
+        {
+          LOG(ERROR) << "The distance between successive slices is not constant in a volume image";
+          BroadcastMessage(ISlicedVolume::GeometryErrorMessage(*this));
+          return;
+        }
+      }
+
+      unsigned int width = loader_.GetSlice(0).GetWidth();
+      unsigned int height = loader_.GetSlice(0).GetHeight();
+      Orthanc::PixelFormat format = loader_.GetSlice(0).GetConverter().GetExpectedPixelFormat();
+      LOG(INFO) << "Creating a volume image of size " << width << "x" << height
+                << "x" << loader_.GetSlicesCount() << " in " << Orthanc::EnumerationToString(format);
+
+      image_.reset(new OrthancStone::ImageBuffer3D(format, width, height, static_cast<unsigned int>(loader_.GetSlicesCount()), computeRange_));
+      image_->GetGeometry().SetAxialGeometry(loader_.GetSlice(0).GetGeometry());
+      image_->GetGeometry().SetVoxelDimensions(loader_.GetSlice(0).GetPixelSpacingX(),
+                                               loader_.GetSlice(0).GetPixelSpacingY(), spacingZ);
+      image_->Clear();
+
+      downloadStack_.reset(new DownloadStack(static_cast<unsigned int>(loader_.GetSlicesCount())));
+      pendingSlices_ = loader_.GetSlicesCount();
+
+      for (unsigned int i = 0; i < 4; i++)  // Limit to 4 simultaneous downloads
+      {
+        ScheduleSliceDownload();
+      }
+
+      // TODO Check the DicomFrameConverter are constant
+
+      BroadcastMessage(ISlicedVolume::GeometryReadyMessage(*this));
+    }
+
+
+    void OnSliceGeometryError(const OrthancSlicesLoader::SliceGeometryErrorMessage& message)
+    {
+      assert(&message.GetOrigin() == &loader_);
+
+      LOG(ERROR) << "Unable to download a volume image";
+      BroadcastMessage(ISlicedVolume::GeometryErrorMessage(*this));
+    }
+
+
+    void OnSliceImageReady(const OrthancSlicesLoader::SliceImageReadyMessage& message)
+    {
+      assert(&message.GetOrigin() == &loader_);
+
+      {
+        OrthancStone::ImageBuffer3D::SliceWriter writer(*image_, OrthancStone::VolumeProjection_Axial, message.GetSliceIndex());
+        Orthanc::ImageProcessing::Copy(writer.GetAccessor(), message.GetImage());
+      }
+
+      BroadcastMessage(ISlicedVolume::SliceContentChangedMessage
+                       (*this, message.GetSliceIndex(), message.GetSlice()));
+
+      if (pendingSlices_ == 1)
+      {
+        BroadcastMessage(ISlicedVolume::VolumeReadyMessage(*this));
+        pendingSlices_ = 0;
+      }
+      else if (pendingSlices_ > 1)
+      {
+        pendingSlices_ -= 1;
+      }
+
+      ScheduleSliceDownload();
+    }
+
+
+    void OnSliceImageError(const OrthancSlicesLoader::SliceImageErrorMessage& message)
+    {
+      assert(&message.GetOrigin() == &loader_);
+
+      LOG(ERROR) << "Cannot download slice " << message.GetSliceIndex() << " in a volume image";
+      ScheduleSliceDownload();
+    }
+
+
+  public:
+    OrthancVolumeImage(OrthancStone::MessageBroker& broker,
+                       OrthancApiClient& orthanc,
+                       bool computeRange) :
+      ISlicedVolume(broker),
+      IObserver(broker),
+      loader_(broker, orthanc),
+      computeRange_(computeRange),
+      pendingSlices_(0)
+    {
+      loader_.RegisterObserverCallback(
+        new OrthancStone::Callable<OrthancVolumeImage, OrthancSlicesLoader::SliceGeometryReadyMessage>
+        (*this, &OrthancVolumeImage::OnSliceGeometryReady));
+
+      loader_.RegisterObserverCallback(
+        new OrthancStone::Callable<OrthancVolumeImage, OrthancSlicesLoader::SliceGeometryErrorMessage>
+        (*this, &OrthancVolumeImage::OnSliceGeometryError));
+
+      loader_.RegisterObserverCallback(
+        new OrthancStone::Callable<OrthancVolumeImage, OrthancSlicesLoader::SliceImageReadyMessage>
+        (*this, &OrthancVolumeImage::OnSliceImageReady));
+
+      loader_.RegisterObserverCallback(
+        new OrthancStone::Callable<OrthancVolumeImage, OrthancSlicesLoader::SliceImageErrorMessage>
+        (*this, &OrthancVolumeImage::OnSliceImageError));
+    }
+
+    void ScheduleLoadSeries(const std::string& seriesId)
+    {
+      loader_.ScheduleLoadSeries(seriesId);
+    }
+
+    void ScheduleLoadInstance(const std::string& instanceId)
+    {
+      loader_.ScheduleLoadInstance(instanceId);
+    }
+
+    void ScheduleLoadFrame(const std::string& instanceId,
+                           unsigned int frame)
+    {
+      loader_.ScheduleLoadFrame(instanceId, frame);
+    }
+
+    virtual size_t GetSlicesCount() const
+    {
+      return loader_.GetSlicesCount();
+    }
+
+    virtual const Slice& GetSlice(size_t index) const
+    {
+      return loader_.GetSlice(index);
+    }
+
+    OrthancStone::ImageBuffer3D& GetImage() const
+    {
+      if (image_.get() == NULL)
+      {
+        // The geometry is not ready yet
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      else
+      {
+        return *image_;
+      }
+    }
+
+    bool FitWindowingToRange(RenderStyle& style,
+                             const DicomFrameConverter& converter) const
+    {
+      if (image_.get() == NULL)
+      {
+        return false;
+      }
+      else
+      {
+        return image_->FitWindowingToRange(style, converter);
+      }
+    }
+  };
+
+
+  class VolumeImageGeometry
+  {
+  private:
+    unsigned int         width_;
+    unsigned int         height_;
+    size_t               depth_;
+    double               pixelSpacingX_;
+    double               pixelSpacingY_;
+    double               sliceThickness_;
+    OrthancStone::CoordinateSystem3D   reference_;
+    DicomFrameConverter  converter_;
+
+    double ComputeAxialThickness(const OrthancVolumeImage& volume) const
+    {
+      double thickness;
+
+      size_t n = volume.GetSlicesCount();
+      if (n > 1)
+      {
+        const Slice& a = volume.GetSlice(0);
+        const Slice& b = volume.GetSlice(n - 1);
+        thickness = ((reference_.ProjectAlongNormal(b.GetGeometry().GetOrigin()) -
+                      reference_.ProjectAlongNormal(a.GetGeometry().GetOrigin())) /
+                     (static_cast<double>(n) - 1.0));
+      }
+      else
+      {
+        thickness = volume.GetSlice(0).GetThickness();
+      }
+
+      if (thickness <= 0)
+      {
+        // The slices should have been sorted with increasing Z
+        // (along the normal) by the OrthancSlicesLoader
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+      else
+      {
+        return thickness;
+      }
+    }
+
+    void SetupAxial(const OrthancVolumeImage& volume)
+    {
+      const Slice& axial = volume.GetSlice(0);
+
+      width_ = axial.GetWidth();
+      height_ = axial.GetHeight();
+      depth_ = volume.GetSlicesCount();
+
+      pixelSpacingX_ = axial.GetPixelSpacingX();
+      pixelSpacingY_ = axial.GetPixelSpacingY();
+      sliceThickness_ = ComputeAxialThickness(volume);
+
+      reference_ = axial.GetGeometry();
+    }
+
+    void SetupCoronal(const OrthancVolumeImage& volume)
+    {
+      const Slice& axial = volume.GetSlice(0);
+      double axialThickness = ComputeAxialThickness(volume);
+
+      width_ = axial.GetWidth();
+      height_ = static_cast<unsigned int>(volume.GetSlicesCount());
+      depth_ = axial.GetHeight();
+
+      pixelSpacingX_ = axial.GetPixelSpacingX();
+      pixelSpacingY_ = axialThickness;
+      sliceThickness_ = axial.GetPixelSpacingY();
+
+      OrthancStone::Vector origin = axial.GetGeometry().GetOrigin();
+      origin += (static_cast<double>(volume.GetSlicesCount() - 1) *
+                 axialThickness * axial.GetGeometry().GetNormal());
+
+      reference_ = OrthancStone::CoordinateSystem3D(origin,
+                                                    axial.GetGeometry().GetAxisX(),
+                                                    - axial.GetGeometry().GetNormal());
+    }
+
+    void SetupSagittal(const OrthancVolumeImage& volume)
+    {
+      const Slice& axial = volume.GetSlice(0);
+      double axialThickness = ComputeAxialThickness(volume);
+
+      width_ = axial.GetHeight();
+      height_ = static_cast<unsigned int>(volume.GetSlicesCount());
+      depth_ = axial.GetWidth();
+
+      pixelSpacingX_ = axial.GetPixelSpacingY();
+      pixelSpacingY_ = axialThickness;
+      sliceThickness_ = axial.GetPixelSpacingX();
+
+      OrthancStone::Vector origin = axial.GetGeometry().GetOrigin();
+      origin += (static_cast<double>(volume.GetSlicesCount() - 1) *
+                 axialThickness * axial.GetGeometry().GetNormal());
+
+      reference_ = OrthancStone::CoordinateSystem3D(origin,
+                                                    axial.GetGeometry().GetAxisY(),
+                                                    axial.GetGeometry().GetNormal());
+    }
+
+  public:
+    VolumeImageGeometry(const OrthancVolumeImage& volume,
+                        OrthancStone::VolumeProjection projection)
+    {
+      if (volume.GetSlicesCount() == 0)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      converter_ = volume.GetSlice(0).GetConverter();
+
+      switch (projection)
+      {
+        case OrthancStone::VolumeProjection_Axial:
+          SetupAxial(volume);
+          break;
+
+        case OrthancStone::VolumeProjection_Coronal:
+          SetupCoronal(volume);
+          break;
+
+        case OrthancStone::VolumeProjection_Sagittal:
+          SetupSagittal(volume);
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+    }
+
+    size_t GetSlicesCount() const
+    {
+      return depth_;
+    }
+
+    const OrthancStone::Vector& GetNormal() const
+    {
+      return reference_.GetNormal();
+    }
+
+    bool LookupSlice(size_t& index,
+                     const OrthancStone::CoordinateSystem3D& slice) const
+    {
+      bool opposite;
+      if (!OrthancStone::GeometryToolbox::IsParallelOrOpposite(opposite,
+                                                               reference_.GetNormal(),
+                                                               slice.GetNormal()))
+      {
+        return false;
+      }
+
+      double z = (reference_.ProjectAlongNormal(slice.GetOrigin()) -
+                  reference_.ProjectAlongNormal(reference_.GetOrigin())) / sliceThickness_;
+
+      int s = static_cast<int>(boost::math::iround(z));
+
+      if (s < 0 ||
+          s >= static_cast<int>(depth_))
+      {
+        return false;
+      }
+      else
+      {
+        index = static_cast<size_t>(s);
+        return true;
+      }
+    }
+
+    Slice* GetSlice(size_t slice) const
+    {
+      if (slice >= depth_)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+      else
+      {
+        OrthancStone::CoordinateSystem3D origin(reference_.GetOrigin() +
+                                                static_cast<double>(slice) * sliceThickness_ * reference_.GetNormal(),
+                                                reference_.GetAxisX(),
+                                                reference_.GetAxisY());
+
+        return new Slice(origin, pixelSpacingX_, pixelSpacingY_, sliceThickness_,
+                         width_, height_, converter_);
+      }
+    }
+  };
+
+
+
+  class VolumeImageMPRSlicer :
+    public IVolumeSlicer,
+    public OrthancStone::IObserver
+  {
+  private:
+    class RendererFactory : public LayerReadyMessage::IRendererFactory
+    {
+    private:
+      const Orthanc::ImageAccessor&  frame_;
+      const Slice&                   slice_;
+      bool                           isFullQuality_;
+
+    public:
+      RendererFactory(const Orthanc::ImageAccessor& frame,
+                      const Slice& slice,
+                      bool isFullQuality) :
+        frame_(frame),
+        slice_(slice),
+        isFullQuality_(isFullQuality)
+      {
+      }
+
+      virtual ILayerRenderer* CreateRenderer() const
+      {
+        return FrameRenderer::CreateRenderer(frame_, slice_, isFullQuality_);
+      }
+    };
+
+
+    OrthancVolumeImage&                 volume_;
+    std::unique_ptr<VolumeImageGeometry>  axialGeometry_;
+    std::unique_ptr<VolumeImageGeometry>  coronalGeometry_;
+    std::unique_ptr<VolumeImageGeometry>  sagittalGeometry_;
+
+
+    bool IsGeometryReady() const
+    {
+      return axialGeometry_.get() != NULL;
+    }
+
+    void OnGeometryReady(const ISlicedVolume::GeometryReadyMessage& message)
+    {
+      assert(&message.GetOrigin() == &volume_);
+
+      // These 3 values are only used to speed up the IVolumeSlicer
+      axialGeometry_.reset(new VolumeImageGeometry(volume_, OrthancStone::VolumeProjection_Axial));
+      coronalGeometry_.reset(new VolumeImageGeometry(volume_, OrthancStone::VolumeProjection_Coronal));
+      sagittalGeometry_.reset(new VolumeImageGeometry(volume_, OrthancStone::VolumeProjection_Sagittal));
+
+      BroadcastMessage(IVolumeSlicer::GeometryReadyMessage(*this));
+    }
+
+    void OnGeometryError(const ISlicedVolume::GeometryErrorMessage& message)
+    {
+      assert(&message.GetOrigin() == &volume_);
+
+      BroadcastMessage(IVolumeSlicer::GeometryErrorMessage(*this));
+    }
+
+    void OnContentChanged(const ISlicedVolume::ContentChangedMessage& message)
+    {
+      assert(&message.GetOrigin() == &volume_);
+
+      BroadcastMessage(IVolumeSlicer::ContentChangedMessage(*this));
+    }
+
+    void OnSliceContentChanged(const ISlicedVolume::SliceContentChangedMessage& message)
+    {
+      assert(&message.GetOrigin() == &volume_);
+
+      //IVolumeSlicer::OnSliceContentChange(slice);
+
+      // TODO Improve this?
+      BroadcastMessage(IVolumeSlicer::ContentChangedMessage(*this));
+    }
+
+    const VolumeImageGeometry& GetProjectionGeometry(OrthancStone::VolumeProjection projection)
+    {
+      if (!IsGeometryReady())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+
+      switch (projection)
+      {
+        case OrthancStone::VolumeProjection_Axial:
+          return *axialGeometry_;
+
+        case OrthancStone::VolumeProjection_Sagittal:
+          return *sagittalGeometry_;
+
+        case OrthancStone::VolumeProjection_Coronal:
+          return *coronalGeometry_;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+
+
+    bool DetectProjection(OrthancStone::VolumeProjection& projection,
+                          const OrthancStone::CoordinateSystem3D& viewportSlice)
+    {
+      bool isOpposite;  // Ignored
+
+      if (OrthancStone::GeometryToolbox::IsParallelOrOpposite(isOpposite,
+                                                              viewportSlice.GetNormal(),
+                                                              axialGeometry_->GetNormal()))
+      {
+        projection = OrthancStone::VolumeProjection_Axial;
+        return true;
+      }
+      else if (OrthancStone::GeometryToolbox::IsParallelOrOpposite(isOpposite,
+                                                                   viewportSlice.GetNormal(),
+                                                                   sagittalGeometry_->GetNormal()))
+      {
+        projection = OrthancStone::VolumeProjection_Sagittal;
+        return true;
+      }
+      else if (OrthancStone::GeometryToolbox::IsParallelOrOpposite(isOpposite,
+                                                                   viewportSlice.GetNormal(),
+                                                                   coronalGeometry_->GetNormal()))
+      {
+        projection = OrthancStone::VolumeProjection_Coronal;
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+
+
+  public:
+    VolumeImageMPRSlicer(OrthancStone::MessageBroker& broker,
+                         OrthancVolumeImage&  volume) :
+      IVolumeSlicer(broker),
+      IObserver(broker),
+      volume_(volume)
+    {
+      volume_.RegisterObserverCallback(
+        new OrthancStone::Callable<VolumeImageMPRSlicer, ISlicedVolume::GeometryReadyMessage>
+        (*this, &VolumeImageMPRSlicer::OnGeometryReady));
+
+      volume_.RegisterObserverCallback(
+        new OrthancStone::Callable<VolumeImageMPRSlicer, ISlicedVolume::GeometryErrorMessage>
+        (*this, &VolumeImageMPRSlicer::OnGeometryError));
+
+      volume_.RegisterObserverCallback(
+        new OrthancStone::Callable<VolumeImageMPRSlicer, ISlicedVolume::ContentChangedMessage>
+        (*this, &VolumeImageMPRSlicer::OnContentChanged));
+
+      volume_.RegisterObserverCallback(
+        new OrthancStone::Callable<VolumeImageMPRSlicer, ISlicedVolume::SliceContentChangedMessage>
+        (*this, &VolumeImageMPRSlicer::OnSliceContentChanged));
+    }
+
+    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
+                           const OrthancStone::CoordinateSystem3D& viewportSlice) ORTHANC_OVERRIDE
+    {
+      OrthancStone::VolumeProjection projection;
+
+      if (!IsGeometryReady() ||
+          !DetectProjection(projection, viewportSlice))
+      {
+        return false;
+      }
+      else
+      {
+        // As the slices of the volumic image are arranged in a box,
+        // we only consider one single reference slice (the one with index 0).
+        std::unique_ptr<Slice> slice(GetProjectionGeometry(projection).GetSlice(0));
+        slice->GetExtent(points);
+
+        return true;
+      }
+    }
+
+    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice) ORTHANC_OVERRIDE
+    {
+      OrthancStone::VolumeProjection projection;
+
+      if (IsGeometryReady() &&
+          DetectProjection(projection, viewportSlice))
+      {
+        const VolumeImageGeometry& geometry = GetProjectionGeometry(projection);
+
+        size_t closest;
+
+        if (geometry.LookupSlice(closest, viewportSlice))
+        {
+          bool isFullQuality = true;  // TODO
+
+          std::unique_ptr<Orthanc::Image> frame;
+
+          {
+            OrthancStone::ImageBuffer3D::SliceReader reader(volume_.GetImage(), projection, static_cast<unsigned int>(closest));
+
+            // TODO Transfer ownership if non-axial, to avoid memcpy
+            frame.reset(Orthanc::Image::Clone(reader.GetAccessor()));
+          }
+
+          std::unique_ptr<Slice> slice(geometry.GetSlice(closest));
+
+          RendererFactory factory(*frame, *slice, isFullQuality);
+
+          BroadcastMessage(IVolumeSlicer::LayerReadyMessage(*this, factory, slice->GetGeometry()));
+          return;
+        }
+      }
+
+      // Error
+      OrthancStone::CoordinateSystem3D slice;
+      BroadcastMessage(IVolumeSlicer::LayerErrorMessage(*this, slice));
+    }
+  };
+
+
+  class VolumeImageInteractor :
+    public IWorldSceneInteractor,
+    public OrthancStone::IObserver
+  {
+  private:
+    SliceViewerWidget&                  widget_;
+    OrthancStone::VolumeProjection      projection_;
+    std::unique_ptr<VolumeImageGeometry>  slices_;
+    size_t                              slice_;
+
+  protected:
+    void OnGeometryReady(const ISlicedVolume::GeometryReadyMessage& message)
+    {
+      if (slices_.get() == NULL)
+      {
+        const OrthancVolumeImage& image =
+          dynamic_cast<const OrthancVolumeImage&>(message.GetOrigin());
+
+        slices_.reset(new VolumeImageGeometry(image, projection_));
+        SetSlice(slices_->GetSlicesCount() / 2);
+
+        widget_.FitContent();
+      }
+    }
+
+    virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
+                                                        const ViewportGeometry& view,
+                                                        OrthancStone::MouseButton button,
+                                                        OrthancStone::KeyboardModifiers modifiers,
+                                                        int viewportX,
+                                                        int viewportY,
+                                                        double x,
+                                                        double y,
+                                                        IStatusBar* statusBar,
+                                                        const std::vector<Touch>& touches) ORTHANC_OVERRIDE
+    {
+      return  NULL;
+    }
+
+    virtual void MouseOver(OrthancStone::CairoContext& context,
+                           WorldSceneWidget& widget,
+                           const ViewportGeometry& view,
+                           double x,
+                           double y,
+                           IStatusBar* statusBar) ORTHANC_OVERRIDE
+    {
+    }
+
+    virtual void MouseWheel(WorldSceneWidget& widget,
+                            OrthancStone::MouseWheelDirection direction,
+                            OrthancStone::KeyboardModifiers modifiers,
+                            IStatusBar* statusBar) ORTHANC_OVERRIDE
+    {
+      int scale = (modifiers & OrthancStone::KeyboardModifiers_Control ? 10 : 1);
+
+      switch (direction)
+      {
+        case OrthancStone::MouseWheelDirection_Up:
+          OffsetSlice(-scale);
+          break;
+
+        case OrthancStone::MouseWheelDirection_Down:
+          OffsetSlice(scale);
+          break;
+
+        default:
+          break;
+      }
+    }
+
+    virtual void KeyPressed(WorldSceneWidget& widget,
+                            OrthancStone::KeyboardKeys key,
+                            char keyChar,
+                            OrthancStone::KeyboardModifiers modifiers,
+                            IStatusBar* statusBar) ORTHANC_OVERRIDE
+    {
+      switch (keyChar)
+      {
+        case 's':
+          widget.FitContent();
+          break;
+
+        default:
+          break;
+      }
+    }
+
+  public:
+    VolumeImageInteractor(OrthancStone::MessageBroker& broker,
+                          OrthancVolumeImage& volume,
+                          SliceViewerWidget& widget,
+                          OrthancStone::VolumeProjection projection) :
+      IObserver(broker),
+      widget_(widget),
+      projection_(projection)
+    {
+      widget.SetInteractor(*this);
+
+      volume.RegisterObserverCallback(
+        new OrthancStone::Callable<VolumeImageInteractor, ISlicedVolume::GeometryReadyMessage>
+        (*this, &VolumeImageInteractor::OnGeometryReady));
+    }
+
+    bool IsGeometryReady() const
+    {
+      return slices_.get() != NULL;
+    }
+
+    size_t GetSlicesCount() const
+    {
+      if (slices_.get() == NULL)
+      {
+        return 0;
+      }
+      else
+      {
+        return slices_->GetSlicesCount();
+      }
+    }
+
+    void OffsetSlice(int offset)
+    {
+      if (slices_.get() != NULL)
+      {
+        int slice = static_cast<int>(slice_) + offset;
+
+        if (slice < 0)
+        {
+          slice = 0;
+        }
+
+        if (slice >= static_cast<int>(slices_->GetSlicesCount()))
+        {
+          slice = static_cast<unsigned int>(slices_->GetSlicesCount()) - 1;
+        }
+
+        if (slice != static_cast<int>(slice_))
+        {
+          SetSlice(slice);
+        }
+      }
+    }
+
+    void SetSlice(size_t slice)
+    {
+      if (slices_.get() != NULL)
+      {
+        slice_ = slice;
+
+        std::unique_ptr<Slice> tmp(slices_->GetSlice(slice_));
+        widget_.SetSlice(tmp->GetGeometry());
+      }
+    }
+  };
+
+
+
+  class ReferenceLineSource : public IVolumeSlicer
+  {
+  private:
+    class RendererFactory : public LayerReadyMessage::IRendererFactory
+    {
+    private:
+      double                     x1_;
+      double                     y1_;
+      double                     x2_;
+      double                     y2_;
+      const OrthancStone::CoordinateSystem3D&  slice_;
+
+    public:
+      RendererFactory(double x1,
+                      double y1,
+                      double x2,
+                      double y2,
+                      const OrthancStone::CoordinateSystem3D& slice) :
+        x1_(x1),
+        y1_(y1),
+        x2_(x2),
+        y2_(y2),
+        slice_(slice)
+      {
+      }
+
+      virtual ILayerRenderer* CreateRenderer() const
+      {
+        return new LineLayerRenderer(x1_, y1_, x2_, y2_, slice_);
+      }
+    };
+
+    SliceViewerWidget&  otherPlane_;
+
+  public:
+    ReferenceLineSource(OrthancStone::MessageBroker& broker,
+                        SliceViewerWidget&  otherPlane) :
+      IVolumeSlicer(broker),
+      otherPlane_(otherPlane)
+    {
+      BroadcastMessage(IVolumeSlicer::GeometryReadyMessage(*this));
+    }
+
+    virtual bool GetExtent(std::vector<OrthancStone::Vector>& points,
+                           const OrthancStone::CoordinateSystem3D& viewportSlice)
+    {
+      return false;
+    }
+
+    virtual void ScheduleLayerCreation(const OrthancStone::CoordinateSystem3D& viewportSlice)
+    {
+      Slice reference(viewportSlice, 0.001);
+
+      OrthancStone::Vector p, d;
+
+      const OrthancStone::CoordinateSystem3D& slice = otherPlane_.GetSlice();
+
+      // Compute the line of intersection between the two slices
+      if (!OrthancStone::GeometryToolbox::IntersectTwoPlanes(p, d,
+                                                             slice.GetOrigin(), slice.GetNormal(),
+                                                             viewportSlice.GetOrigin(), viewportSlice.GetNormal()))
+      {
+        // The two slice are parallel, don't try and display the intersection
+        BroadcastMessage(IVolumeSlicer::LayerErrorMessage(*this, reference.GetGeometry()));
+      }
+      else
+      {
+        double x1, y1, x2, y2;
+        viewportSlice.ProjectPoint(x1, y1, p);
+        viewportSlice.ProjectPoint(x2, y2, p + 1000.0 * d);
+
+        const OrthancStone::Extent2D extent = otherPlane_.GetSceneExtent();
+
+        if (OrthancStone::GeometryToolbox::ClipLineToRectangle(x1, y1, x2, y2,
+                                                               x1, y1, x2, y2,
+                                                               extent.GetX1(), extent.GetY1(),
+                                                               extent.GetX2(), extent.GetY2()))
+        {
+          RendererFactory factory(x1, y1, x2, y2, slice);
+          BroadcastMessage(IVolumeSlicer::LayerReadyMessage(*this, factory, reference.GetGeometry()));
+        }
+        else
+        {
+          // Error: Parallel slices
+          BroadcastMessage(IVolumeSlicer::LayerErrorMessage(*this, reference.GetGeometry()));
+        }
+      }
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/FontRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,178 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "FontRenderer.h"
+
+#include "../Toolbox/DynamicBitmap.h"
+
+#include <OrthancException.h>
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_GLYPH_H
+
+
+// https://stackoverflow.com/questions/31161284/how-can-i-get-the-corresponding-error-string-from-an-ft-error-code
+static std::string GetErrorMessage(FT_Error err)
+{
+#undef __FTERRORS_H__
+#define FT_ERRORDEF( e, v, s )  case e: return s;
+#define FT_ERROR_START_LIST     switch (err) {
+#define FT_ERROR_END_LIST       }
+#include FT_ERRORS_H
+  return "(Unknown error)";
+}
+
+
+static void CheckError(FT_Error err)
+{
+  if (err != 0)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                    "Error in FreeType: " + GetErrorMessage(err));
+  }
+}
+
+
+namespace OrthancStone
+{
+  class FontRenderer::PImpl : public boost::noncopyable
+  {
+  private:
+    std::string  fontContent_;
+    FT_Library   library_;
+    FT_Face      face_;
+
+    void Clear()
+    {
+      if (face_ != NULL)
+      {
+        FT_Done_Face(face_);        
+        face_ = NULL;
+      }
+
+      fontContent_.clear();
+    }
+
+  public:
+    PImpl() :
+      library_(NULL),
+      face_(NULL)
+    {
+      CheckError(FT_Init_FreeType(&library_));
+    }
+
+    
+    ~PImpl()
+    {
+      Clear();
+      FT_Done_FreeType(library_);
+    }
+
+    
+    void LoadFont(const std::string& fontContent,
+                  unsigned int fontSize)
+    {
+      Clear();
+
+      // It is necessary to make a private copy of the font, as
+      // Freetype makes the assumption that the buffer containing the
+      // font is never deleted
+      fontContent_.assign(fontContent);
+      
+      const FT_Byte* data = reinterpret_cast<const FT_Byte*>(fontContent_.c_str());
+
+      CheckError(FT_New_Memory_Face(
+        library_, data, static_cast<FT_Long>(fontContent_.size()), 0, &face_));
+
+      CheckError(FT_Set_Char_Size(face_,         // handle to face object  
+                                  0,             // char_width in 1/64th of points  
+                                  fontSize * 64, // char_height in 1/64th of points 
+                                  72,            // horizontal device resolution 
+                                  72));          // vertical device resolution
+
+      CheckError(FT_Select_Charmap(face_, FT_ENCODING_UNICODE));
+    }
+    
+
+    Glyph* Render(uint32_t unicode)
+    {
+      if (face_ == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                        "First call LoadFont()");
+      }
+      else if (FT_Load_Char(face_, unicode, FT_LOAD_RENDER) != 0)
+      {
+        // This character is not available
+        return NULL;
+      }
+      else
+      {
+        if (face_->glyph->format != FT_GLYPH_FORMAT_BITMAP)                 
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+          //CheckError(FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1));
+        }
+
+        Orthanc::ImageAccessor bitmap;
+        bitmap.AssignReadOnly(Orthanc::PixelFormat_Grayscale8,
+                              face_->glyph->bitmap.width,
+                              face_->glyph->bitmap.rows,
+                              face_->glyph->bitmap.pitch,
+                              face_->glyph->bitmap.buffer);
+
+        std::unique_ptr<Glyph> glyph(
+          new Glyph(bitmap.GetWidth(),
+                    bitmap.GetHeight(),
+                    face_->glyph->bitmap_left,
+                    -face_->glyph->bitmap_top,  // Positive for an upwards vertical distance
+                    face_->glyph->advance.x >> 6,
+                    face_->glyph->metrics.vertAdvance >> 6));
+
+        glyph->SetPayload(new DynamicBitmap(bitmap));
+        
+        return glyph.release();
+      }
+    }
+  };
+
+
+
+  FontRenderer::FontRenderer() :
+    pimpl_(new PImpl)
+  {
+  }
+
+  
+  void FontRenderer::LoadFont(const std::string& fontContent,
+                              unsigned int fontSize)
+  {
+    pimpl_->LoadFont(fontContent, fontSize);
+  }
+
+  
+  Glyph* FontRenderer::Render(uint32_t unicode)
+  {
+    return pimpl_->Render(unicode);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/FontRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,46 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "Glyph.h"
+
+#include <stdint.h>
+#include <boost/shared_ptr.hpp>
+
+
+namespace OrthancStone
+{
+  class FontRenderer : public boost::noncopyable
+  {
+  private:
+    class PImpl;
+    boost::shared_ptr<PImpl>  pimpl_;
+    
+  public:
+    FontRenderer();
+
+    void LoadFont(const std::string& fontContent,
+                  unsigned int fontSize);
+    
+    Glyph* Render(uint32_t unicode);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/Glyph.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,93 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "Glyph.h"
+
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+  Glyph::Glyph(const Glyph& other) : 
+    width_(other.width_),
+    height_(other.height_),
+    offsetLeft_(other.offsetLeft_),
+    offsetTop_(other.offsetTop_),
+    advanceX_(other.advanceX_),
+    lineHeight_(other.lineHeight_)
+  {
+  }
+  
+    
+  Glyph::Glyph(unsigned int width,
+               unsigned int height,
+               int offsetLeft,
+               int offsetTop,
+               int advanceX,
+               unsigned int lineHeight) :
+    width_(width),
+    height_(height),
+    offsetLeft_(offsetLeft),
+    offsetTop_(offsetTop),
+    advanceX_(advanceX),
+    lineHeight_(lineHeight)
+  {
+  }
+
+  
+  void Glyph::SetPayload(Orthanc::IDynamicObject* payload)  // Takes ownership
+  {
+    if (payload == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    else
+    {
+      payload_.reset(payload);
+    }
+  }
+
+      
+  const Orthanc::IDynamicObject& Glyph::GetPayload() const
+  {
+    if (payload_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return *payload_;
+    }
+  }
+
+  
+  Orthanc::IDynamicObject* Glyph::ReleasePayload()
+  {
+    if (payload_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return payload_.release();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/Glyph.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,96 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <Compatibility.h>
+#include <IDynamicObject.h>
+
+#include <memory>
+
+
+namespace OrthancStone
+{
+  class Glyph : public boost::noncopyable
+  {
+  private:
+    unsigned int   width_;
+    unsigned int   height_;
+    int            offsetLeft_;
+    int            offsetTop_;
+    int            advanceX_;
+    unsigned int   lineHeight_;
+      
+    std::unique_ptr<Orthanc::IDynamicObject>  payload_;
+
+  public:
+    // WARNING: This does not copy the payload
+    Glyph(const Glyph& other);
+    
+    Glyph(unsigned int width,
+          unsigned int height,
+          int offsetLeft,
+          int offsetTop,
+          int advanceX,
+          unsigned int lineHeight);
+
+    void SetPayload(Orthanc::IDynamicObject* payload);
+
+    int GetOffsetLeft() const
+    {
+      return offsetLeft_;
+    }
+
+    int GetOffsetTop() const
+    {
+      return offsetTop_;
+    }
+
+    unsigned int GetWidth() const
+    {
+      return width_;
+    }
+
+    unsigned int GetHeight() const
+    {
+      return height_;
+    }
+
+    unsigned int GetAdvanceX() const
+    {
+      return advanceX_;
+    }
+
+    unsigned int GetLineHeight() const
+    {
+      return lineHeight_;
+    }
+
+    bool HasPayload() const
+    {
+      return payload_.get() != NULL;
+    }
+      
+    const Orthanc::IDynamicObject& GetPayload() const;
+      
+    Orthanc::IDynamicObject* ReleasePayload();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/GlyphAlphabet.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,169 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GlyphAlphabet.h"
+
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+
+namespace OrthancStone
+{
+  void GlyphAlphabet::Clear()
+  {
+    for (Content::const_iterator it = content_.begin(); it != content_.end(); ++it)
+    {
+      assert(it->second != NULL);
+      delete it->second;
+    }
+    content_.clear();
+    lineHeight_ = 0;
+  }
+    
+    
+  void GlyphAlphabet::Register(uint32_t unicode,
+                               const Glyph& glyph,
+                               Orthanc::IDynamicObject* payload)
+  {
+    std::unique_ptr<Orthanc::IDynamicObject> protection(payload);
+      
+    // Don't add twice the same character
+    if (content_.find(unicode) == content_.end())
+    {
+      std::unique_ptr<Glyph> raii(new Glyph(glyph));
+        
+      if (payload != NULL)
+      {
+        raii->SetPayload(protection.release());
+      }
+
+      content_[unicode] = raii.release();
+
+      lineHeight_ = std::max(lineHeight_, glyph.GetLineHeight());
+    }
+  }
+
+
+  void GlyphAlphabet::Register(FontRenderer& renderer,
+                               uint32_t unicode)
+  {
+    std::unique_ptr<Glyph>  glyph(renderer.Render(unicode));
+      
+    if (glyph.get() != NULL)
+    {
+      Register(unicode, *glyph, glyph->ReleasePayload());
+    }
+  }
+    
+
+#if ORTHANC_ENABLE_LOCALE == 1
+  bool GlyphAlphabet::GetUnicodeFromCodepage(uint32_t& unicode,
+                                             unsigned int index,
+                                             Orthanc::Encoding encoding)
+  {
+    if (index > 255)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+      
+    std::string character;
+    character.resize(1);
+    character[0] = static_cast<unsigned char>(index);
+    
+    std::string utf8 = Orthanc::Toolbox::ConvertToUtf8(character, encoding, false /* no code extensions */);
+      
+    if (utf8.empty())
+    {
+      // This character is not available in this codepage
+      return false;
+    }
+    else
+    {
+      size_t length;
+      Orthanc::Toolbox::Utf8ToUnicodeCharacter(unicode, length, utf8, 0);
+      assert(length != 0);
+      return true;
+    }
+  }
+#endif
+
+
+  void GlyphAlphabet::Apply(IGlyphVisitor& visitor) const
+  {
+    for (Content::const_iterator it = content_.begin(); it != content_.end(); ++it)
+    {
+      assert(it->second != NULL);
+      visitor.Visit(it->first, *it->second);
+    }
+  }
+
+
+  void GlyphAlphabet::Apply(ITextVisitor& visitor,
+                            const std::string& utf8) const
+  {
+    size_t pos = 0;
+    int x = 0;
+    int y = 0;
+
+    while (pos < utf8.size())
+    {
+      if (utf8[pos] == '\r')
+      {
+        // Ignore carriage return
+        pos++;
+      }
+      else if (utf8[pos] == '\n')
+      {
+        // This is a newline character
+        x = 0;
+        y += static_cast<int>(lineHeight_);
+
+        pos++;
+      }
+      else
+      {         
+        uint32_t unicode;
+        size_t length;
+        Orthanc::Toolbox::Utf8ToUnicodeCharacter(unicode, length, utf8, pos);
+
+        Content::const_iterator glyph = content_.find(unicode);
+
+        if (glyph != content_.end())
+        {
+          assert(glyph->second != NULL);
+          const Orthanc::IDynamicObject* payload =
+            (glyph->second->HasPayload() ? &glyph->second->GetPayload() : NULL);
+            
+          visitor.Visit(unicode,
+                        x + glyph->second->GetOffsetLeft(),
+                        y + glyph->second->GetOffsetTop(),
+                        glyph->second->GetWidth(),
+                        glyph->second->GetHeight(),
+                        payload);
+          x += glyph->second->GetAdvanceX();
+        }
+        
+        assert(length != 0);
+        pos += length;
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/GlyphAlphabet.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,105 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "FontRenderer.h"
+
+#include <Enumerations.h>
+
+#include <map>
+
+namespace OrthancStone
+{
+  class GlyphAlphabet : public boost::noncopyable
+  {
+  public:
+    class ITextVisitor : public boost::noncopyable
+    {
+    public:
+      virtual ~ITextVisitor()
+      {
+      }
+
+      virtual void Visit(uint32_t unicode,
+                         int x,
+                         int y,
+                         unsigned int width,
+                         unsigned int height,
+                         const Orthanc::IDynamicObject* payload /* can be NULL */) = 0;
+    };
+
+
+    class IGlyphVisitor : public boost::noncopyable
+    {
+    public:
+      virtual ~IGlyphVisitor()
+      {
+      }
+
+      virtual void Visit(uint32_t unicode,
+                         const Glyph& glyph) = 0;
+    };
+
+    
+  private:
+    typedef std::map<uint32_t, Glyph*>  Content;
+
+    Content        content_;
+    unsigned int   lineHeight_;
+
+  public:
+    GlyphAlphabet() :
+      lineHeight_(0)
+    {
+    }
+
+    ~GlyphAlphabet()
+    {
+      Clear();
+    }
+    
+    void Clear();
+    
+    void Register(uint32_t unicode,
+                  const Glyph& glyph,
+                  Orthanc::IDynamicObject* payload);
+
+    void Register(FontRenderer& renderer,
+                  uint32_t unicode);
+
+#if ORTHANC_ENABLE_LOCALE == 1
+    static bool GetUnicodeFromCodepage(uint32_t& unicode,
+                                       unsigned int index,
+                                       Orthanc::Encoding encoding);
+#endif
+
+    size_t GetSize() const
+    {
+      return content_.size();
+    }
+
+    void Apply(IGlyphVisitor& visitor) const;
+
+    void Apply(ITextVisitor& visitor,
+               const std::string& utf8) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/GlyphBitmapAlphabet.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,113 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GlyphBitmapAlphabet.h"
+
+#include "TextBoundingBox.h"
+#include "../Toolbox/DynamicBitmap.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+
+namespace OrthancStone
+{
+  class GlyphBitmapAlphabet::RenderTextVisitor : public GlyphAlphabet::ITextVisitor
+  {
+  private:
+    Orthanc::ImageAccessor&     target_;
+    const GlyphBitmapAlphabet&  that_;
+    int                         offsetX_;
+    int                         offsetY_;
+      
+  public:
+    RenderTextVisitor(Orthanc::ImageAccessor&  target,
+                      const GlyphBitmapAlphabet&  that,
+                      int  offsetX,
+                      int  offsetY) :
+      target_(target),
+      that_(that),
+      offsetX_(offsetX),
+      offsetY_(offsetY)
+    {
+    }
+
+    virtual void Visit(uint32_t unicode,
+                       int x,
+                       int y,
+                       unsigned int width,
+                       unsigned int height,
+                       const Orthanc::IDynamicObject* payload)
+    {
+      int left = x + offsetX_;
+      int top = y + offsetY_;
+
+      assert(payload != NULL);
+      const DynamicBitmap& glyph = *dynamic_cast<const DynamicBitmap*>(payload);
+        
+      assert(left >= 0 &&
+             top >= 0 &&
+             static_cast<unsigned int>(left) + width <= target_.GetWidth() &&
+             static_cast<unsigned int>(top) + height <= target_.GetHeight() &&
+             width == glyph.GetBitmap().GetWidth() &&
+             height == glyph.GetBitmap().GetHeight());
+        
+      {
+        Orthanc::ImageAccessor region;
+        target_.GetRegion(region, left, top, width, height);
+        Orthanc::ImageProcessing::Copy(region, glyph.GetBitmap());
+      }
+    }
+  };
+  
+    
+#if ORTHANC_ENABLE_LOCALE == 1
+  void GlyphBitmapAlphabet::LoadCodepage(FontRenderer& renderer,
+                                         Orthanc::Encoding codepage)
+  {
+    for (unsigned int i = 0; i < 256; i++)
+    {
+      uint32_t unicode;
+      if (GlyphAlphabet::GetUnicodeFromCodepage(unicode, i, codepage))
+      {
+        AddUnicodeCharacter(renderer, unicode);
+      }
+    }
+  }
+#endif
+
+    
+  Orthanc::ImageAccessor* GlyphBitmapAlphabet::RenderText(const std::string& utf8) const
+  {
+    TextBoundingBox box(alphabet_, utf8);
+
+    std::unique_ptr<Orthanc::ImageAccessor> bitmap(
+      new Orthanc::Image(Orthanc::PixelFormat_Grayscale8,
+                         box.GetWidth(), box.GetHeight(),
+                         true /* force minimal pitch */));
+
+    Orthanc::ImageProcessing::Set(*bitmap, 0);
+
+    RenderTextVisitor visitor(*bitmap, *this, -box.GetLeft(), -box.GetTop());
+    alphabet_.Apply(visitor, utf8);
+
+    return bitmap.release();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/GlyphBitmapAlphabet.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "GlyphAlphabet.h"
+
+#include <Images/ImageAccessor.h>
+
+namespace OrthancStone
+{
+  class GlyphBitmapAlphabet : public boost::noncopyable
+  {
+  private:
+    class RenderTextVisitor;
+
+    GlyphAlphabet  alphabet_;
+
+  public:
+    const GlyphAlphabet& GetAlphabet() const
+    {
+      return alphabet_;
+    }    
+    
+    void AddUnicodeCharacter(FontRenderer& renderer,
+                             uint32_t unicode)
+    {
+      alphabet_.Register(renderer, unicode);
+    }
+
+
+#if ORTHANC_ENABLE_LOCALE == 1
+    void LoadCodepage(FontRenderer& renderer,
+                      Orthanc::Encoding codepage);
+#endif
+    
+    
+    Orthanc::ImageAccessor* RenderText(const std::string& utf8) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/GlyphTextureAlphabet.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,304 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GlyphTextureAlphabet.h"
+
+#include "TextBoundingBox.h"
+#include "../Toolbox/DynamicBitmap.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+
+#if defined(__EMSCRIPTEN__)
+/* 
+Avoid this error:
+.../boost/math/special_functions/round.hpp:86:12: warning: implicit conversion from 'std::__2::numeric_limits<int>::type' (aka 'int') to 'float' changes value from 2147483647 to 2147483648 [-Wimplicit-int-float-conversion]
+.../boost/math/special_functions/round.hpp:93:11: note: in instantiation of function template specialization 'boost::math::iround<float, boost::math::policies::policy<boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >' requested here
+.../orthanc-stone/Framework/Fonts/GlyphTextureAlphabet.cpp:92:28: note: in instantiation of function template specialization 'boost::math::iround<float>' requested here
+*/
+#pragma GCC diagnostic ignored "-Wimplicit-int-float-conversion"
+#endif 
+
+#include <boost/math/special_functions/round.hpp>
+
+namespace OrthancStone
+{
+  class GlyphTextureAlphabet::GlyphSizeVisitor : public GlyphAlphabet::IGlyphVisitor
+  {
+  private:
+    unsigned int maxWidth_;
+    unsigned int maxHeight_;
+
+  public:
+    GlyphSizeVisitor() :
+      maxWidth_(0),
+      maxHeight_(0)
+    {
+    }
+      
+    virtual void Visit(uint32_t unicode,
+                       const Glyph& glyph)
+    {
+      maxWidth_ = std::max(maxWidth_, glyph.GetWidth());
+      maxHeight_ = std::max(maxHeight_, glyph.GetHeight());
+    }
+
+    unsigned int GetMaxWidth() const
+    {
+      return maxWidth_;
+    }
+
+    unsigned int GetMaxHeight() const
+    {
+      return maxHeight_;
+    }
+  };
+
+    
+  class GlyphTextureAlphabet::TextureGenerator : public GlyphAlphabet::IGlyphVisitor
+  {
+  private:
+    std::unique_ptr<Orthanc::ImageAccessor>  texture_;
+
+    unsigned int    countColumns_;
+    unsigned int    countRows_;
+    GlyphAlphabet&  targetAlphabet_;
+    unsigned int    glyphMaxWidth_;
+    unsigned int    glyphMaxHeight_;
+    unsigned int    column_;
+    unsigned int    row_;
+
+  public:
+    TextureGenerator(GlyphAlphabet& targetAlphabet,
+                     unsigned int countGlyphs,
+                     unsigned int glyphMaxWidth,
+                     unsigned int glyphMaxHeight) :
+      targetAlphabet_(targetAlphabet),
+      glyphMaxWidth_(glyphMaxWidth),
+      glyphMaxHeight_(glyphMaxHeight),
+      column_(0),
+      row_(0)
+    {
+      int c = boost::math::iround<float>(sqrt(static_cast<float>(countGlyphs)));
+
+      if (c <= 0)
+      {
+        countColumns_ = 1;
+      }
+      else
+      {
+        countColumns_ = static_cast<unsigned int>(c);
+      }
+
+      countRows_ = countGlyphs / countColumns_;
+      if (countGlyphs % countColumns_ != 0)
+      {
+        countRows_++;
+      }
+
+      texture_.reset(new Orthanc::Image(Orthanc::PixelFormat_RGBA32,
+                                        countColumns_ * glyphMaxWidth_,
+                                        countRows_ * glyphMaxHeight_,
+                                        true /* force minimal pitch */));
+
+      Orthanc::ImageProcessing::Set(*texture_, 0, 0, 0, 0);
+    }
+      
+      
+    virtual void Visit(uint32_t unicode,
+                       const Glyph& glyph)
+    {
+      if (!glyph.HasPayload())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+
+      if (column_ >= countColumns_ ||
+          row_ >= countRows_)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      unsigned int x = column_ * glyphMaxWidth_;
+      unsigned int y = row_ * glyphMaxHeight_;
+
+      const Orthanc::ImageAccessor& source = dynamic_cast<const DynamicBitmap&>(glyph.GetPayload()).GetBitmap();
+
+      if (source.GetFormat() != Orthanc::PixelFormat_Grayscale8)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+        
+      targetAlphabet_.Register(unicode, glyph, new TextureLocation(x, y));
+
+      Orthanc::ImageAccessor target;
+      texture_->GetRegion(target, x, y, source.GetWidth(), source.GetHeight());
+
+      //Orthanc::ImageProcessing::Copy(target, bitmap->GetBitmap());
+
+      for (unsigned int y = 0; y < source.GetHeight(); y++)
+      {
+        const uint8_t* p = reinterpret_cast<const uint8_t*>(source.GetConstRow(y));
+        uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
+
+        for (unsigned int x = 0; x < source.GetWidth(); x++)
+        {
+          // Premultiplied alpha
+          q[0] = 0;
+          q[1] = 0;
+          q[2] = 0;
+          q[3] = *p;
+            
+          p++;
+          q += 4;
+        }
+      }
+        
+      column_++;
+      if (column_ == countColumns_)
+      {
+        column_ = 0;
+        row_++;
+      }
+    }
+
+
+    Orthanc::ImageAccessor* ReleaseTexture()
+    {
+      return texture_.release();
+    }
+  };
+
+
+  class GlyphTextureAlphabet::RenderTextVisitor : public GlyphAlphabet::ITextVisitor
+  {
+  private:
+    Orthanc::ImageAccessor&        target_;
+    const Orthanc::ImageAccessor&  texture_;
+    int                            offsetX_;
+    int                            offsetY_;
+      
+  public:
+    RenderTextVisitor(Orthanc::ImageAccessor&  target,
+                      const GlyphTextureAlphabet&  that,
+                      int  offsetX,
+                      int  offsetY) :
+      target_(target),
+      texture_(that.GetTexture()),
+      offsetX_(offsetX),
+      offsetY_(offsetY)
+    {
+    }
+
+    virtual void Visit(uint32_t unicode,
+                       int x,
+                       int y,
+                       unsigned int width,
+                       unsigned int height,
+                       const Orthanc::IDynamicObject* payload)
+    {
+      int left = x + offsetX_;
+      int top = y + offsetY_;
+
+      assert(payload != NULL);
+      const TextureLocation& location = *dynamic_cast<const TextureLocation*>(payload);
+        
+      assert(left >= 0 &&
+             top >= 0 &&
+             static_cast<unsigned int>(left) + width <= target_.GetWidth() &&
+             static_cast<unsigned int>(top) + height <= target_.GetHeight());
+        
+      {
+        Orthanc::ImageAccessor to;
+        target_.GetRegion(to, left, top, width, height);
+
+        Orthanc::ImageAccessor from;
+        texture_.GetRegion(from, location.GetX(), location.GetY(), width, height);
+                                       
+        Orthanc::ImageProcessing::Copy(to, from);
+      }
+    }
+  };
+
+    
+  GlyphTextureAlphabet::GlyphTextureAlphabet(const GlyphBitmapAlphabet& sourceAlphabet) :
+    textureWidth_(0),
+    textureHeight_(0)
+  {
+    GlyphSizeVisitor size;
+    sourceAlphabet.GetAlphabet().Apply(size);
+
+    TextureGenerator generator(alphabet_,
+      static_cast<unsigned int>(sourceAlphabet.GetAlphabet().GetSize()),
+      size.GetMaxWidth(),
+      size.GetMaxHeight());
+    sourceAlphabet.GetAlphabet().Apply(generator);
+
+    texture_.reset(generator.ReleaseTexture());
+    textureWidth_ = texture_->GetWidth();
+    textureHeight_ = texture_->GetHeight();
+  }
+
+    
+  const Orthanc::ImageAccessor& GlyphTextureAlphabet::GetTexture() const
+  {
+    if (texture_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return *texture_;
+    }
+  }
+    
+    
+  Orthanc::ImageAccessor* GlyphTextureAlphabet::ReleaseTexture()
+  {
+    if (texture_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return texture_.release();
+    }
+  }
+    
+
+  Orthanc::ImageAccessor* GlyphTextureAlphabet::RenderText(const std::string& utf8)
+  {
+    TextBoundingBox box(alphabet_, utf8);
+
+    std::unique_ptr<Orthanc::ImageAccessor> bitmap(
+      new Orthanc::Image(Orthanc::PixelFormat_RGBA32,
+                         box.GetWidth(), box.GetHeight(),
+                         true /* force minimal pitch */));
+
+    Orthanc::ImageProcessing::Set(*bitmap, 0, 0, 0, 0);
+
+    RenderTextVisitor visitor(*bitmap, *this, -box.GetLeft(), -box.GetTop());
+    alphabet_.Apply(visitor, utf8);
+
+    return bitmap.release();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/GlyphTextureAlphabet.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,92 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "GlyphBitmapAlphabet.h"
+
+#include <Images/ImageAccessor.h>
+
+namespace OrthancStone
+{
+  class GlyphTextureAlphabet : public boost::noncopyable
+  {
+  public:
+    class TextureLocation : public Orthanc::IDynamicObject
+    {
+    private:
+      unsigned int  x_;
+      unsigned int  y_;
+
+    public:
+      TextureLocation(unsigned int x,
+                      unsigned int y) :
+        x_(x),
+        y_(y)
+      {
+      }
+
+      unsigned int GetX() const
+      {
+        return x_;
+      }
+
+      unsigned int GetY() const
+      {
+        return y_;
+      }
+    };
+
+  private:
+    class GlyphSizeVisitor;
+    class TextureGenerator;
+    class RenderTextVisitor;
+    
+    GlyphAlphabet                          alphabet_;
+    std::unique_ptr<Orthanc::ImageAccessor>  texture_;
+    unsigned int                           textureWidth_;
+    unsigned int                           textureHeight_;
+    
+  public:
+    GlyphTextureAlphabet(const GlyphBitmapAlphabet& sourceAlphabet);
+    
+    const Orthanc::ImageAccessor& GetTexture() const;
+    
+    Orthanc::ImageAccessor* ReleaseTexture();
+
+    Orthanc::ImageAccessor* RenderText(const std::string& utf8);
+
+    const GlyphAlphabet& GetAlphabet() const
+    {
+      return alphabet_;
+    }
+
+    unsigned int GetTextureWidth() const
+    {
+      return textureWidth_;
+    }
+
+    unsigned int GetTextureHeight() const
+    {
+      return textureHeight_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/OpenGLTextCoordinates.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,117 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLTextCoordinates.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    void OpenGLTextCoordinates::Visit(uint32_t unicode,
+                                      int x,
+                                      int y,
+                                      unsigned int width,
+                                      unsigned int height,
+                                      const Orthanc::IDynamicObject* payload)
+    {
+      // Rendering coordinates
+      float rx1 = static_cast<float>(x - box_.GetLeft());
+      float ry1 = static_cast<float>(y - box_.GetTop());
+      float rx2 = rx1 + static_cast<float>(width);
+      float ry2 = ry1 + static_cast<float>(height);
+
+      // Texture coordinates
+      assert(payload != NULL);
+      const GlyphTextureAlphabet::TextureLocation& location =
+        *dynamic_cast<const GlyphTextureAlphabet::TextureLocation*>(payload);
+
+      float tx1 = location.GetX() / textureWidth_;
+      float ty1 = location.GetY() / textureHeight_;
+      float tx2 = tx1 + (static_cast<float>(width) / textureWidth_);
+      float ty2 = ty1 + (static_cast<float>(height) / textureHeight_);
+
+      const float rpos[6][2] = {
+        { rx1, ry1 },
+        { rx1, ry2 },
+        { rx2, ry1 },
+        { rx2, ry1 },
+        { rx1, ry2 },
+        { rx2, ry2 }
+      };
+
+      const float tpos[6][2] = {
+        { tx1, ty1 },
+        { tx1, ty2 },
+        { tx2, ty1 },
+        { tx2, ty1 },
+        { tx1, ty2 },
+        { tx2, ty2 }
+      };
+
+      for (unsigned int i = 0; i < 6; i++)
+      {
+        renderingCoords_.push_back(rpos[i][0]);
+        renderingCoords_.push_back(rpos[i][1]);
+        textureCoords_.push_back(tpos[i][0]);
+        textureCoords_.push_back(tpos[i][1]);
+      }
+    }
+
+
+    OpenGLTextCoordinates::OpenGLTextCoordinates(const GlyphTextureAlphabet& alphabet,
+                                                 const std::string& utf8) :
+      box_(alphabet.GetAlphabet(), utf8),
+      textureWidth_(static_cast<float>(alphabet.GetTextureWidth())),
+      textureHeight_(static_cast<float>(alphabet.GetTextureHeight()))
+    {
+      if (textureWidth_ <= 0 ||
+          textureHeight_ <= 0)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+      
+      width_ = static_cast<float>(box_.GetWidth());
+      height_ = static_cast<float>(box_.GetHeight());
+
+      // Each character is made of two 2D triangles (= 2 * 3 * 2 = 12)
+      renderingCoords_.reserve(box_.GetCharactersCount() * 12);
+      textureCoords_.reserve(box_.GetCharactersCount() * 12);
+
+      alphabet.GetAlphabet().Apply(*this, utf8);
+    }
+
+
+    const std::vector<float>& OpenGLTextCoordinates::GetRenderingCoords() const
+    {
+      assert(renderingCoords_.size() == textureCoords_.size());
+      return renderingCoords_;
+    }
+
+    
+    const std::vector<float>& OpenGLTextCoordinates::GetTextureCoords() const
+    {
+      assert(renderingCoords_.size() == textureCoords_.size());
+      return textureCoords_;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/OpenGLTextCoordinates.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,76 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "GlyphTextureAlphabet.h"
+#include "TextBoundingBox.h"
+
+#include <vector>
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    class OpenGLTextCoordinates : protected GlyphAlphabet::ITextVisitor
+    {
+    private:
+      TextBoundingBox     box_;
+      float               width_;
+      float               height_;
+      std::vector<float>  renderingCoords_;
+      std::vector<float>  textureCoords_;
+      float               textureWidth_;
+      float               textureHeight_;
+    
+    protected:
+      virtual void Visit(uint32_t unicode,
+                         int x,
+                         int y,
+                         unsigned int width,
+                         unsigned int height,
+                         const Orthanc::IDynamicObject* payload);
+
+    public:
+      OpenGLTextCoordinates(const GlyphTextureAlphabet& alphabet,
+                            const std::string& utf8);
+
+      unsigned int GetTextWidth() const
+      {
+        return box_.GetWidth();
+      }
+
+      unsigned int GetTextHeight() const
+      {
+        return box_.GetHeight();
+      }
+
+      bool IsEmpty() const
+      {
+        return renderingCoords_.empty();
+      }
+
+      const std::vector<float>& GetRenderingCoords() const;
+
+      const std::vector<float>& GetTextureCoords() const;
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/TextBoundingBox.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,80 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "TextBoundingBox.h"
+
+namespace OrthancStone
+{
+  void TextBoundingBox::AddPoint(int x,
+                                 int y)
+  {
+    left_ = std::min(left_, x);
+    right_ = std::max(right_, x);
+    top_ = std::min(top_, y);
+    bottom_ = std::max(bottom_, y);
+  }
+
+
+  void TextBoundingBox::Clear()
+  {
+    left_ = 0;
+    top_ = 0;
+    right_ = 0;
+    bottom_ = 0;
+    countCharacters_ = 0;
+  }
+
+
+  void TextBoundingBox::Visit(uint32_t unicode,
+                              int x,
+                              int y,
+                              unsigned int width,
+                              unsigned int height,
+                              const Orthanc::IDynamicObject* payload /* ignored */)
+  {
+    AddPoint(x, y);
+    AddPoint(x + static_cast<int>(width),
+             y + static_cast<int>(height));
+    countCharacters_++;
+  }
+
+
+  TextBoundingBox::TextBoundingBox(const GlyphAlphabet& alphabet,
+                                   const std::string& utf8)
+  {
+    Clear();
+    alphabet.Apply(*this, utf8);
+  }
+
+
+  unsigned int TextBoundingBox::GetWidth() const
+  {
+    assert(left_ <= right_);
+    return static_cast<unsigned int>(right_ - left_ + 1);
+  }
+
+  
+  unsigned int TextBoundingBox::GetHeight() const
+  {
+    assert(top_ <= bottom_);
+    return static_cast<unsigned int>(bottom_ - top_ + 1);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Fonts/TextBoundingBox.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,73 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "GlyphAlphabet.h"
+
+namespace OrthancStone
+{
+  class TextBoundingBox : protected GlyphAlphabet::ITextVisitor
+  {
+  private:
+    int          left_;
+    int          top_;
+    int          right_;
+    int          bottom_;
+    unsigned int countCharacters_;
+
+    void AddPoint(int x,
+                  int y);
+
+    void Clear();
+
+  protected:
+    virtual void Visit(uint32_t unicode,
+                       int x,
+                       int y,
+                       unsigned int width,
+                       unsigned int height,
+                       const Orthanc::IDynamicObject* payload /* ignored */);
+
+  public:
+    TextBoundingBox(const GlyphAlphabet& alphabet,
+                    const std::string& utf8);
+
+    int GetLeft() const
+    {
+      return left_;
+    }
+
+    int GetTop() const
+    {
+      return top_;
+    }
+
+    unsigned int GetWidth() const;
+
+    unsigned int GetHeight() const;
+
+    unsigned int GetCharactersCount() const
+    {
+      return countCharacters_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/BasicFetchingItemsSorter.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,74 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "BasicFetchingItemsSorter.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  BasicFetchingItemsSorter::BasicFetchingItemsSorter(unsigned int itemsCount) :
+    itemsCount_(itemsCount)
+  {
+    if (itemsCount == 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  void BasicFetchingItemsSorter::Sort(std::vector<unsigned int>& target,
+                                      unsigned int current)
+  {
+    if (current >= itemsCount_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    target.clear();
+    target.reserve(itemsCount_);
+    target.push_back(current);
+
+    const unsigned int countBelow = current;
+    const unsigned int countAbove = (itemsCount_ - 1) - current;
+    const unsigned int n = std::min(countBelow, countAbove);
+
+    for (unsigned int i = 1; i <= n; i++)
+    {
+      assert(current + i < itemsCount_ &&
+             current >= i);
+      target.push_back(current + i);
+      target.push_back(current - i);
+    }
+
+    for (unsigned int i = current - n; i > 0; i--)
+    {
+      target.push_back(i - 1);
+    }
+
+    for (unsigned int i = current + n + 1; i < itemsCount_; i++)
+    {
+      target.push_back(i);
+    }
+
+    assert(target.size() == itemsCount_);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/BasicFetchingItemsSorter.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,53 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IFetchingItemsSorter.h"
+
+namespace OrthancStone
+{
+  class BasicFetchingItemsSorter : public IFetchingItemsSorter
+  {
+  private:
+    unsigned int  itemsCount_;
+
+  public:
+    class Factory : public IFactory
+    {
+    public:
+      virtual IFetchingItemsSorter* CreateSorter(unsigned int itemsCount) const
+      {
+        return new BasicFetchingItemsSorter(itemsCount);
+      }
+    };
+
+    BasicFetchingItemsSorter(unsigned int itemsCount);
+
+    virtual unsigned int GetItemsCount() const
+    {
+      return itemsCount_;
+    }
+
+    virtual void Sort(std::vector<unsigned int>& target,
+                      unsigned int current);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/BasicFetchingStrategy.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,145 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "BasicFetchingStrategy.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  void BasicFetchingStrategy::Schedule(unsigned int item,
+                                       unsigned int quality)
+  {
+    assert(item < GetItemsCount() &&
+           quality <= maxQuality_);
+      
+    if (nextQuality_[item] <= quality)
+    {
+      content_.push_back(ContentItem(item, quality));
+    }
+  }
+    
+
+  BasicFetchingStrategy::BasicFetchingStrategy(IFetchingItemsSorter* sorter,   // Takes ownership
+                                               unsigned int maxQuality) :
+    sorter_(sorter),
+    maxQuality_(maxQuality),
+    position_(0),
+    blockSize_(2)
+  {
+    if (sorter == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    nextQuality_.resize(sorter_->GetItemsCount(), 0);   // Does not change along calls to "SetCurrent()"
+      
+    SetCurrent(0);
+  }
+
+
+  void BasicFetchingStrategy::SetBlockSize(unsigned int size)
+  {
+    if (size <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    blockSize_ = size;
+  }
+
+  
+  bool BasicFetchingStrategy::GetNext(unsigned int& item,
+                                      unsigned int& quality)
+  {
+    if (position_ >= content_.size())
+    {
+      return false;
+    }
+    else
+    {
+      item = content_[position_].GetItem();       
+      quality = content_[position_].GetQuality();
+
+      assert(nextQuality_[item] <= quality);
+      nextQuality_[item] = quality + 1;
+
+      position_ ++;
+      return true;
+    }
+  }
+
+  
+  void BasicFetchingStrategy::SetCurrent(unsigned int item)
+  {
+    // TODO - This function is O(N) complexity where "N" is the
+    // number of items times the max quality. Could use a LRU index.
+
+    position_ = 0;
+      
+    std::vector<unsigned int> v;
+    sorter_->Sort(v, item);
+
+    assert(v.size() == GetItemsCount());
+
+    if (v.size() == 0)
+    {
+      return;
+    }
+      
+    content_.clear();
+    content_.reserve(v.size() * maxQuality_);
+
+    Schedule(v.front(), maxQuality_);
+
+    for (unsigned int q = 0; q <= maxQuality_; q++)
+    {
+      unsigned int start = 1 + q * blockSize_;
+      unsigned int end = start + blockSize_;
+
+      if (q == maxQuality_ ||
+          end > v.size())
+      {
+        end = static_cast<int>(v.size());
+      }
+
+      unsigned int a = 0;
+      if (maxQuality_ >= q + 1)
+      {
+        a = maxQuality_ - q - 1;
+      }
+        
+      for (unsigned int j = a; j <= maxQuality_; j++)
+      {
+        for (unsigned int i = start; i < end; i++)
+        {
+          Schedule(v[i], j);
+        }
+      }
+    }
+  }
+
+  
+  void BasicFetchingStrategy::RecycleFurthest(unsigned int& item)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/BasicFetchingStrategy.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,96 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IFetchingItemsSorter.h"
+#include "IFetchingStrategy.h"
+
+#include <Compatibility.h>
+
+#include <memory>
+
+namespace OrthancStone
+{
+  class BasicFetchingStrategy : public IFetchingStrategy
+  {
+  private:
+    class ContentItem
+    {
+    private:
+      unsigned int  item_;
+      unsigned int  quality_;
+
+    public:
+      ContentItem(unsigned int item,
+           unsigned int quality) :
+        item_(item),
+        quality_(quality)
+      {
+      }
+
+      unsigned int GetItem() const
+      {
+        return item_;
+      }
+
+      unsigned int GetQuality() const
+      {
+        return quality_;
+      }
+    };
+
+    std::unique_ptr<IFetchingItemsSorter>  sorter_;
+    std::vector<unsigned int>            nextQuality_;
+    unsigned int                         maxQuality_;
+    std::vector<ContentItem>             content_;
+    size_t                               position_;
+    unsigned int                         blockSize_;
+
+    void Schedule(unsigned int item,
+                  unsigned int quality);
+    
+  public:
+    BasicFetchingStrategy(IFetchingItemsSorter* sorter,   // Takes ownership
+                          unsigned int maxQuality);
+
+    virtual unsigned int GetItemsCount() const
+    {
+      return sorter_->GetItemsCount();
+    }
+
+    virtual unsigned int GetMaxQuality() const
+    {
+      return maxQuality_;
+    }
+
+    // WARNING - This parameters is only considered during the next
+    // call to SetCurrent().
+    void SetBlockSize(unsigned int size);
+
+    virtual bool GetNext(unsigned int& item,
+                         unsigned int& quality);
+    
+    virtual void SetCurrent(unsigned int item);
+
+    virtual void RecycleFurthest(unsigned int& item);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/DicomResourcesLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,910 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomResourcesLoader.h"
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error The macro ORTHANC_ENABLE_DCMTK must be defined
+#endif
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include "../Oracle/ParseDicomFromFileCommand.h"
+#  include <DicomParsing/ParsedDicomDir.h>
+#  include <DicomParsing/ParsedDicomFile.h>
+#endif
+
+#include <boost/filesystem/path.hpp>
+
+namespace OrthancStone
+{
+  static std::string GetUri(Orthanc::ResourceType level)
+  {
+    switch (level)
+    {
+      case Orthanc::ResourceType_Patient:
+        return "patients";
+        
+      case Orthanc::ResourceType_Study:
+        return "studies";
+        
+      case Orthanc::ResourceType_Series:
+        return "series";
+        
+      case Orthanc::ResourceType_Instance:
+        return "instances";
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  class DicomResourcesLoader::Handler : public Orthanc::IDynamicObject
+  {
+  private:
+    boost::shared_ptr<DicomResourcesLoader>     loader_;
+    boost::shared_ptr<LoadedDicomResources>     target_;
+    int                                         priority_;
+    DicomSource                                 source_;
+    boost::shared_ptr<Orthanc::IDynamicObject>  userPayload_;
+
+  public:
+    Handler(boost::shared_ptr<DicomResourcesLoader> loader,
+            boost::shared_ptr<LoadedDicomResources> target,
+            int priority,
+            const DicomSource& source,
+            boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
+      loader_(loader),
+      target_(target),
+      priority_(priority),
+      source_(source),
+      userPayload_(userPayload)
+    {
+      if (!loader ||
+          !target)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+      
+    virtual ~Handler()
+    {
+    }
+
+    void BroadcastSuccess()
+    {
+      SuccessMessage message(*loader_, target_, priority_, source_, userPayload_.get());
+      loader_->BroadcastMessage(message);
+    }
+
+    boost::shared_ptr<DicomResourcesLoader> GetLoader()
+    {
+      assert(loader_);
+      return loader_;
+    }
+
+    boost::shared_ptr<LoadedDicomResources> GetTarget()
+    {
+      assert(target_);
+      return target_;
+    }
+
+    int GetPriority() const
+    {
+      return priority_;
+    }
+
+    const DicomSource& GetSource() const
+    {
+      return source_;
+    }
+
+    const boost::shared_ptr<Orthanc::IDynamicObject> GetUserPayload() const
+    {
+      return userPayload_;
+    }
+  };
+
+
+  class DicomResourcesLoader::StringHandler : public DicomResourcesLoader::Handler
+  {
+  public:
+    StringHandler(boost::shared_ptr<DicomResourcesLoader> loader,
+                  boost::shared_ptr<LoadedDicomResources> target,
+                  int priority,
+                  const DicomSource& source,
+                  boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
+      Handler(loader, target, priority, source, userPayload)
+    {
+    }
+
+    virtual void HandleJson(const Json::Value& body) = 0;
+      
+    virtual void HandleString(const std::string& body)
+    {
+      Json::Reader reader;
+      Json::Value value;
+      if (reader.parse(body, value))
+      {
+        HandleJson(value);
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+    }
+  };
+
+
+  class DicomResourcesLoader::DicomWebHandler : public StringHandler
+  {
+  public:
+    DicomWebHandler(boost::shared_ptr<DicomResourcesLoader> loader,
+                    boost::shared_ptr<LoadedDicomResources> target,
+                    int priority,
+                    const DicomSource& source,
+                    boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
+      StringHandler(loader, target, priority, source, userPayload)
+    {
+    }
+
+    virtual void HandleJson(const Json::Value& body)
+    {
+      GetTarget()->AddFromDicomWeb(body);
+      BroadcastSuccess();
+    }
+  };
+
+
+  class DicomResourcesLoader::OrthancHandler : public StringHandler
+  {
+  private:
+    boost::shared_ptr<unsigned int>  remainingCommands_;
+
+  protected:
+    void CloseCommand()
+    {
+      assert(remainingCommands_);
+        
+      if (*remainingCommands_ == 0)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+
+      (*remainingCommands_) --;
+
+      if (*remainingCommands_ == 0)
+      {
+        BroadcastSuccess();
+      }
+    }
+      
+  public:
+    OrthancHandler(boost::shared_ptr<DicomResourcesLoader> loader,
+                   boost::shared_ptr<LoadedDicomResources> target,
+                   int priority,
+                   const DicomSource& source,
+                   boost::shared_ptr<unsigned int> remainingCommands,
+                   boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
+      StringHandler(loader, target, priority, source, userPayload),
+      remainingCommands_(remainingCommands)
+    {
+      if (!remainingCommands)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+
+      (*remainingCommands) ++;
+    }
+
+    boost::shared_ptr<unsigned int> GetRemainingCommands()
+    {
+      assert(remainingCommands_);
+      return remainingCommands_;
+    }
+  };
+
+    
+  class DicomResourcesLoader::OrthancInstanceTagsHandler : public OrthancHandler
+  {
+  public:
+    OrthancInstanceTagsHandler(boost::shared_ptr<DicomResourcesLoader> loader,
+                               boost::shared_ptr<LoadedDicomResources> target,
+                               int priority,
+                               const DicomSource& source,
+                               boost::shared_ptr<unsigned int> remainingCommands,
+                               boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
+      OrthancHandler(loader, target, priority, source, remainingCommands, userPayload)
+    {
+    }
+
+    virtual void HandleJson(const Json::Value& body)
+    {
+      GetTarget()->AddFromOrthanc(body);
+      CloseCommand();
+    }
+  };
+
+    
+  class DicomResourcesLoader::OrthancOneChildInstanceHandler : public OrthancHandler
+  {
+  public:
+    OrthancOneChildInstanceHandler(boost::shared_ptr<DicomResourcesLoader> loader,
+                                   boost::shared_ptr<LoadedDicomResources> target,
+                                   int  priority,
+                                   const DicomSource& source,
+                                   boost::shared_ptr<unsigned int> remainingCommands,
+                                   boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
+      OrthancHandler(loader, target, priority, source, remainingCommands, userPayload)
+    {
+    }
+
+    virtual void HandleJson(const Json::Value& body)
+    {
+      static const char* const ID = "ID";
+      
+      if (body.type() == Json::arrayValue)
+      {
+        if (body.size() > 0)
+        {
+          if (body[0].type() == Json::objectValue &&
+              body[0].isMember(ID) &&
+              body[0][ID].type() == Json::stringValue)
+          {
+            GetLoader()->ScheduleLoadOrthancInstanceTags
+              (GetTarget(), GetPriority(), GetSource(), body[0][ID].asString(), GetRemainingCommands(), GetUserPayload());
+            CloseCommand();
+          }
+          else
+          {
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+          }
+        }
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+    }
+  };
+
+
+  class DicomResourcesLoader::OrthancAllChildrenInstancesHandler : public OrthancHandler
+  {
+  private:
+    Orthanc::ResourceType  bottomLevel_;
+
+  public:
+    OrthancAllChildrenInstancesHandler(boost::shared_ptr<DicomResourcesLoader> loader,
+                                       boost::shared_ptr<LoadedDicomResources> target,
+                                       int  priority,
+                                       const DicomSource& source,
+                                       boost::shared_ptr<unsigned int> remainingCommands,
+                                       Orthanc::ResourceType bottomLevel,
+                                       boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
+      OrthancHandler(loader, target, priority, source, remainingCommands, userPayload),
+      bottomLevel_(bottomLevel)
+    {
+    }
+
+    virtual void HandleJson(const Json::Value& body)
+    {
+      static const char* const ID = "ID";
+      static const char* const INSTANCES = "Instances";
+
+      if (body.type() == Json::arrayValue)
+      {
+        for (Json::Value::ArrayIndex i = 0; i < body.size(); i++)
+        {
+          switch (bottomLevel_)
+          {
+            case Orthanc::ResourceType_Patient:
+            case Orthanc::ResourceType_Study:
+              if (body[i].type() == Json::objectValue &&
+                  body[i].isMember(ID) &&
+                  body[i][ID].type() == Json::stringValue)
+              {
+                GetLoader()->ScheduleLoadOrthancOneChildInstance
+                  (GetTarget(), GetPriority(), GetSource(), bottomLevel_,
+                   body[i][ID].asString(), GetRemainingCommands(), GetUserPayload());
+              }
+              else
+              {
+                throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+              }
+              
+              break;
+            
+            case Orthanc::ResourceType_Series:
+              // At the series level, avoid a call to
+              // "/series/.../instances", as we already have this
+              // information in the JSON
+              if (body[i].type() == Json::objectValue &&
+                  body[i].isMember(INSTANCES) &&
+                  body[i][INSTANCES].type() == Json::arrayValue)
+              {
+                if (body[i][INSTANCES].size() > 0)
+                {
+                  if (body[i][INSTANCES][0].type() == Json::stringValue)
+                  {
+                    GetLoader()->ScheduleLoadOrthancInstanceTags
+                      (GetTarget(), GetPriority(), GetSource(),
+                       body[i][INSTANCES][0].asString(), GetRemainingCommands(), GetUserPayload());
+                  }
+                  else
+                  {
+                    throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+                  }
+                }
+              }
+
+              break;
+
+            case Orthanc::ResourceType_Instance:
+              if (body[i].type() == Json::objectValue &&
+                  body[i].isMember(ID) &&
+                  body[i][ID].type() == Json::stringValue)
+              {
+                GetLoader()->ScheduleLoadOrthancInstanceTags
+                  (GetTarget(), GetPriority(), GetSource(),
+                   body[i][ID].asString(), GetRemainingCommands(), GetUserPayload());
+              }
+              else
+              {
+                throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+              }
+
+              break;
+
+            default:
+              throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+          }
+        }
+      }
+      
+      CloseCommand();
+    }
+  };
+
+
+#if ORTHANC_ENABLE_DCMTK == 1
+  static void ExploreDicomDir(OrthancStone::LoadedDicomResources& instances,
+                              const Orthanc::ParsedDicomDir& dicomDir,
+                              Orthanc::ResourceType level,
+                              size_t index,
+                              const Orthanc::DicomMap& parent)
+  {
+    std::string expectedType;
+
+    switch (level)
+    {
+      case Orthanc::ResourceType_Patient:
+        expectedType = "PATIENT";
+        break;
+
+      case Orthanc::ResourceType_Study:
+        expectedType = "STUDY";
+        break;
+
+      case Orthanc::ResourceType_Series:
+        expectedType = "SERIES";
+        break;
+
+      case Orthanc::ResourceType_Instance:
+        expectedType = "IMAGE";
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    for (;;)
+    {
+      std::unique_ptr<Orthanc::DicomMap> current(dicomDir.GetItem(index).Clone());
+      current->RemoveBinaryTags();
+      current->Merge(parent);
+
+      std::string type;
+      if (!current->LookupStringValue(type, Orthanc::DICOM_TAG_DIRECTORY_RECORD_TYPE, false))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+
+      if (type == expectedType)
+      {
+        if (level == Orthanc::ResourceType_Instance)
+        {
+          instances.AddResource(*current);
+        }
+        else
+        {
+          size_t lower;
+          if (dicomDir.LookupLower(lower, index))
+          {
+            ExploreDicomDir(instances, dicomDir, Orthanc::GetChildResourceType(level), lower, *current);
+          }
+        }
+      }
+
+      size_t next;
+      if (dicomDir.LookupNext(next, index))
+      {
+        index = next;
+      }
+      else
+      {
+        return;
+      }
+    }
+  }
+#endif
+
+
+#if ORTHANC_ENABLE_DCMTK == 1
+  void DicomResourcesLoader::GetDicomDirInstances(LoadedDicomResources& target,
+                                                  const Orthanc::ParsedDicomDir& dicomDir)
+  {
+    Orthanc::DicomMap parent;
+    ExploreDicomDir(target, dicomDir, Orthanc::ResourceType_Patient, 0, parent);
+  }
+#endif
+
+
+#if ORTHANC_ENABLE_DCMTK == 1
+  class DicomResourcesLoader::DicomDirHandler : public StringHandler
+  {
+  public:
+    DicomDirHandler(boost::shared_ptr<DicomResourcesLoader> loader,
+                    boost::shared_ptr<LoadedDicomResources> target,
+                    int priority,
+                    const DicomSource& source,
+                    boost::shared_ptr<Orthanc::IDynamicObject> userPayload) :
+      StringHandler(loader, target, priority, source, userPayload)
+    {
+    }
+
+    virtual void HandleJson(const Json::Value& body)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+      
+    virtual void HandleString(const std::string& body)
+    {
+      Orthanc::ParsedDicomDir dicomDir(body);
+      GetDicomDirInstances(*GetTarget(), dicomDir);
+      BroadcastSuccess();
+    }
+  };
+#endif
+  
+    
+  void DicomResourcesLoader::Handle(const HttpCommand::SuccessMessage& message)
+  {
+    if (message.GetOrigin().HasPayload())
+    {
+      dynamic_cast<StringHandler&>(message.GetOrigin().GetPayload()).HandleString(message.GetAnswer());
+    }
+  }
+
+
+  void DicomResourcesLoader::Handle(const OrthancRestApiCommand::SuccessMessage& message)
+  {
+    if (message.GetOrigin().HasPayload())
+    {
+      dynamic_cast<StringHandler&>(message.GetOrigin().GetPayload()).HandleString(message.GetAnswer());
+    }
+  }
+
+
+  void DicomResourcesLoader::Handle(const ReadFileCommand::SuccessMessage& message)
+  {
+    if (message.GetOrigin().HasPayload())
+    {
+      dynamic_cast<StringHandler&>(message.GetOrigin().GetPayload()).HandleString(message.GetContent());
+    }
+  }
+
+
+#if ORTHANC_ENABLE_DCMTK == 1
+  void DicomResourcesLoader::Handle(const ParseDicomSuccessMessage& message)
+  {
+    if (message.GetOrigin().HasPayload())
+    {
+      Handler& handler = dynamic_cast<Handler&>(message.GetOrigin().GetPayload());
+
+      std::set<Orthanc::DicomTag> ignoreTagLength;
+      ignoreTagLength.insert(Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR);  // Needed for RT-DOSE
+
+      Orthanc::DicomMap summary;
+      message.GetDicom().ExtractDicomSummary(summary, ignoreTagLength);
+      handler.GetTarget()->AddResource(summary);
+
+      handler.BroadcastSuccess();
+    }
+  }
+#endif
+
+
+  void DicomResourcesLoader::Handle(const OracleCommandExceptionMessage& message)
+  {
+    // TODO
+    LOG(ERROR) << "Exception: " << message.GetException().What();
+  }
+    
+
+  void DicomResourcesLoader::ScheduleLoadOrthancInstanceTags(boost::shared_ptr<LoadedDicomResources> target,
+                                                             int priority,
+                                                             const DicomSource& source,
+                                                             const std::string& instanceId,
+                                                             boost::shared_ptr<unsigned int> remainingCommands,
+                                                             boost::shared_ptr<Orthanc::IDynamicObject> userPayload)
+  {
+    std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
+    command->SetUri("/instances/" + instanceId + "/tags");
+    command->AcquirePayload(new OrthancInstanceTagsHandler(shared_from_this(), target, priority,
+                                                           source, remainingCommands, userPayload));
+
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+      lock->Schedule(GetSharedObserver(), priority, command.release());
+    }
+  }
+
+
+  void DicomResourcesLoader::ScheduleLoadOrthancOneChildInstance(boost::shared_ptr<LoadedDicomResources> target,
+                                                                 int priority,
+                                                                 const DicomSource& source,
+                                                                 Orthanc::ResourceType level,
+                                                                 const std::string& id,
+                                                                 boost::shared_ptr<unsigned int> remainingCommands,
+                                                                 boost::shared_ptr<Orthanc::IDynamicObject> userPayload)
+  {
+    std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
+    command->SetUri("/" + GetUri(level) + "/" + id + "/instances");
+    command->AcquirePayload(new OrthancOneChildInstanceHandler(shared_from_this(), target, priority,
+                                                               source, remainingCommands, userPayload));
+
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+      lock->Schedule(GetSharedObserver(), priority, command.release());
+    }
+  }
+    
+    
+
+  const Orthanc::IDynamicObject& DicomResourcesLoader::SuccessMessage::GetUserPayload() const
+  {
+    if (userPayload_ == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return *userPayload_;
+    }
+  }
+
+
+  boost::shared_ptr<DicomResourcesLoader> DicomResourcesLoader::Create(ILoadersContext::ILock& stone)
+  {
+    boost::shared_ptr<DicomResourcesLoader> result(new DicomResourcesLoader(stone.GetContext()));
+    result->Register<HttpCommand::SuccessMessage>(stone.GetOracleObservable(), &DicomResourcesLoader::Handle);
+    result->Register<OracleCommandExceptionMessage>(stone.GetOracleObservable(), &DicomResourcesLoader::Handle);
+    result->Register<OrthancRestApiCommand::SuccessMessage>(stone.GetOracleObservable(), &DicomResourcesLoader::Handle);
+    result->Register<ReadFileCommand::SuccessMessage>(stone.GetOracleObservable(), &DicomResourcesLoader::Handle);
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    result->Register<ParseDicomSuccessMessage>(stone.GetOracleObservable(), &DicomResourcesLoader::Handle);
+#endif
+    
+    return result;
+  }
+
+
+  static void SetIncludeTags(std::map<std::string, std::string>& arguments,
+                             const std::set<Orthanc::DicomTag>& includeTags)
+  {
+    if (!includeTags.empty())
+    {
+      std::string s;
+      bool first = true;
+
+      for (std::set<Orthanc::DicomTag>::const_iterator
+             it = includeTags.begin(); it != includeTags.end(); ++it)
+      {
+        if (first)
+        {
+          first = false;
+        }
+        else
+        {
+          s += ",";
+        }
+
+        char buf[16];
+        sprintf(buf, "%04X%04X", it->GetGroup(), it->GetElement());
+        s += std::string(buf);
+      }
+
+      arguments["includefield"] = s;
+    }    
+  }
+  
+  
+  void DicomResourcesLoader::ScheduleGetDicomWeb(boost::shared_ptr<LoadedDicomResources> target,
+                                                 int priority,
+                                                 const DicomSource& source,
+                                                 const std::string& uri,
+                                                 const std::set<Orthanc::DicomTag>& includeTags,
+                                                 Orthanc::IDynamicObject* userPayload)
+  {
+    boost::shared_ptr<Orthanc::IDynamicObject> protection(userPayload);
+    
+    if (!source.IsDicomWeb())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, "Not a DICOMweb source");
+    }
+
+    std::map<std::string, std::string> arguments, headers;
+    SetIncludeTags(arguments, includeTags);
+  
+    std::unique_ptr<IOracleCommand> command(
+      source.CreateDicomWebCommand(uri, arguments, headers, 
+                                   new DicomWebHandler(shared_from_this(), target, priority, source, protection)));
+      
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+      lock->Schedule(GetSharedObserver(), priority, command.release());
+    }
+  }
+  
+
+  void DicomResourcesLoader::ScheduleQido(boost::shared_ptr<LoadedDicomResources> target,
+                                          int priority,
+                                          const DicomSource& source,
+                                          Orthanc::ResourceType level,
+                                          const Orthanc::DicomMap& filter,
+                                          const std::set<Orthanc::DicomTag>& includeTags,
+                                          Orthanc::IDynamicObject* userPayload)
+  {
+    boost::shared_ptr<Orthanc::IDynamicObject> protection(userPayload);
+    
+    if (!source.IsDicomWeb())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, "Not a DICOMweb source");
+    }
+
+    std::string uri;
+    switch (level)
+    {
+      case Orthanc::ResourceType_Study:
+        uri = "/studies";
+        break;
+
+      case Orthanc::ResourceType_Series:
+        uri = "/series";
+        break;
+
+      case Orthanc::ResourceType_Instance:
+        uri = "/instances";
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    std::set<Orthanc::DicomTag> tags;
+    filter.GetTags(tags);
+
+    std::map<std::string, std::string> arguments, headers;
+
+    for (std::set<Orthanc::DicomTag>::const_iterator it = tags.begin(); it != tags.end(); ++it)
+    {
+      std::string s;
+      if (filter.LookupStringValue(s, *it, false /* no binary */))
+      {
+        char buf[16];
+        sprintf(buf, "%04X%04X", it->GetGroup(), it->GetElement());
+        arguments[buf] = s;
+      }
+    }
+
+    SetIncludeTags(arguments, includeTags);
+
+    std::unique_ptr<IOracleCommand> command(
+      source.CreateDicomWebCommand(uri, arguments, headers, 
+                                   new DicomWebHandler(shared_from_this(), target, priority, source, protection)));
+
+
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+      lock->Schedule(GetSharedObserver(), priority, command.release());
+    }
+  }
+
+    
+  void DicomResourcesLoader::ScheduleLoadOrthancResources(boost::shared_ptr<LoadedDicomResources> target,
+                                                          int priority,
+                                                          const DicomSource& source,
+                                                          Orthanc::ResourceType topLevel,
+                                                          const std::string& topId,
+                                                          Orthanc::ResourceType bottomLevel,
+                                                          Orthanc::IDynamicObject* userPayload)
+  {
+    boost::shared_ptr<Orthanc::IDynamicObject> protection(userPayload);
+    
+    if (!source.IsOrthanc())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, "Not an Orthanc source");
+    }
+
+    bool ok = false;
+
+    switch (topLevel)
+    {
+      case Orthanc::ResourceType_Patient:
+        ok = (bottomLevel == Orthanc::ResourceType_Patient ||
+              bottomLevel == Orthanc::ResourceType_Study ||
+              bottomLevel == Orthanc::ResourceType_Series ||
+              bottomLevel == Orthanc::ResourceType_Instance);
+        break;
+              
+      case Orthanc::ResourceType_Study:
+        ok = (bottomLevel == Orthanc::ResourceType_Study ||
+              bottomLevel == Orthanc::ResourceType_Series ||
+              bottomLevel == Orthanc::ResourceType_Instance);
+        break;
+              
+      case Orthanc::ResourceType_Series:
+        ok = (bottomLevel == Orthanc::ResourceType_Series ||
+              bottomLevel == Orthanc::ResourceType_Instance);
+        break;
+              
+      case Orthanc::ResourceType_Instance:
+        ok = (bottomLevel == Orthanc::ResourceType_Instance);
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (!ok)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    boost::shared_ptr<unsigned int> remainingCommands(new unsigned int(0));
+
+    if (topLevel == Orthanc::ResourceType_Instance)
+    {
+      ScheduleLoadOrthancInstanceTags(target, priority, source, topId, remainingCommands, protection);
+    }
+    else if (topLevel == bottomLevel)
+    {
+      ScheduleLoadOrthancOneChildInstance(target, priority, source, topLevel, topId, remainingCommands, protection);
+    }
+    else 
+    {
+      std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
+      command->SetUri("/" + GetUri(topLevel) + "/" + topId + "/" + GetUri(bottomLevel));
+      command->AcquirePayload(new OrthancAllChildrenInstancesHandler
+                              (shared_from_this(), target, priority, source,
+                               remainingCommands, bottomLevel, protection));
+
+      {
+        std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+
+        // GetSharedObserver() means "this" (for use as an IObserver), as a 
+        // shared_ptr
+        // The oracle will thus call "this" 
+        lock->Schedule(GetSharedObserver(), priority, command.release());
+      }
+    }
+  }
+
+
+  void DicomResourcesLoader::ScheduleLoadDicomDir(boost::shared_ptr<LoadedDicomResources> target,
+                                                  int priority,
+                                                  const DicomSource& source,
+                                                  const std::string& path,
+                                                  Orthanc::IDynamicObject* userPayload)
+  {
+    boost::shared_ptr<Orthanc::IDynamicObject> protection(userPayload);
+    
+    if (!source.IsDicomDir())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, "Not a DICOMDIR source");
+    }
+
+    if (target->GetIndexedTag() == Orthanc::DICOM_TAG_SOP_INSTANCE_UID)
+    {
+      LOG(WARNING) << "If loading DICOMDIR, it is advised to index tag "
+                   << "ReferencedSopInstanceUidInFile (0004,1511)";
+    }
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    std::unique_ptr<ReadFileCommand> command(new ReadFileCommand(path));
+    command->AcquirePayload(new DicomDirHandler(shared_from_this(), target, priority, source, protection));
+
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
+      lock->Schedule(GetSharedObserver(), priority, command.release());
+    }
+#else
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                    "DCMTK is disabled, cannot load DICOMDIR");
+#endif
+  }
+
+
+  void DicomResourcesLoader::ScheduleLoadDicomFile(boost::shared_ptr<LoadedDicomResources> target,
+                                                   int priority,
+                                                   const DicomSource& source,
+                                                   const std::string& path,
+                                                   bool includePixelData,
+                                                   Orthanc::IDynamicObject* userPayload)
+  {
+    boost::shared_ptr<Orthanc::IDynamicObject> protection(userPayload);
+    
+#if ORTHANC_ENABLE_DCMTK == 1
+    std::unique_ptr<ParseDicomFromFileCommand> command(new ParseDicomFromFileCommand(source, path));
+    command->SetPixelDataIncluded(includePixelData);
+    command->AcquirePayload(new Handler(shared_from_this(), target, priority, source, protection));
+
+    {
+      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+      lock->Schedule(GetSharedObserver(), priority, command.release());
+    }
+#else
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                    "DCMTK is disabled, cannot load DICOM files");
+#endif
+  }
+
+
+  bool DicomResourcesLoader::ScheduleLoadDicomFile(boost::shared_ptr<LoadedDicomResources> target,
+                                                   int priority,
+                                                   const DicomSource& source,
+                                                   const std::string& dicomDirPath,
+                                                   const Orthanc::DicomMap& dicomDirEntry,
+                                                   bool includePixelData,
+                                                   Orthanc::IDynamicObject* userPayload)
+  {
+    std::unique_ptr<Orthanc::IDynamicObject> protection(userPayload);
+    
+#if ORTHANC_ENABLE_DCMTK == 1
+    std::string file;
+    if (dicomDirEntry.LookupStringValue(file, Orthanc::DICOM_TAG_REFERENCED_FILE_ID, false))
+    {
+      ScheduleLoadDicomFile(target, priority, source, ParseDicomFromFileCommand::GetDicomDirPath(dicomDirPath, file),
+                            includePixelData, protection.release());
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+#else
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                    "DCMTK is disabled, cannot load DICOM files");
+#endif
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/DicomResourcesLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,234 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../OrthancStone.h"
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error The macro ORTHANC_ENABLE_DCMTK must be defined
+#endif
+
+#include "../Oracle/HttpCommand.h"
+#include "../Oracle/OracleCommandExceptionMessage.h"
+#include "../Oracle/OrthancRestApiCommand.h"
+#include "../Oracle/ReadFileCommand.h"
+#include "DicomSource.h"
+#include "ILoaderFactory.h"
+#include "LoadedDicomResources.h"
+#include "OracleScheduler.h"
+
+namespace Orthanc
+{
+#if ORTHANC_ENABLE_DCMTK == 1
+  class ParsedDicomDir;
+#endif
+}
+
+namespace OrthancStone
+{
+#if ORTHANC_ENABLE_DCMTK == 1
+  class ParseDicomFromFileCommand;
+#endif
+  
+  class DicomResourcesLoader :
+    public ObserverBase<DicomResourcesLoader>,
+    public IObservable
+  {
+  private:
+    class Handler;
+    class StringHandler;
+    class DicomWebHandler;
+    class OrthancHandler;
+    class OrthancInstanceTagsHandler;    
+    class OrthancOneChildInstanceHandler;
+    class OrthancAllChildrenInstancesHandler;
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    class DicomDirHandler;
+#endif
+
+    void Handle(const HttpCommand::SuccessMessage& message);
+
+    void Handle(const OrthancRestApiCommand::SuccessMessage& message);
+
+    void Handle(const ReadFileCommand::SuccessMessage& message);
+
+    void Handle(const OracleCommandExceptionMessage& message);
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    void Handle(const ParseDicomSuccessMessage& message);
+#endif
+
+    void ScheduleLoadOrthancInstanceTags(boost::shared_ptr<LoadedDicomResources> target,
+                                         int priority,
+                                         const DicomSource& source,
+                                         const std::string& instanceId,
+                                         boost::shared_ptr<unsigned int> remainingCommands,
+                                         boost::shared_ptr<Orthanc::IDynamicObject> userPayload);
+
+    void ScheduleLoadOrthancOneChildInstance(boost::shared_ptr<LoadedDicomResources> target,
+                                             int priority,
+                                             const DicomSource& source,
+                                             Orthanc::ResourceType level,
+                                             const std::string& id,
+                                             boost::shared_ptr<unsigned int> remainingCommands,
+                                             boost::shared_ptr<Orthanc::IDynamicObject> userPayload);
+    
+    DicomResourcesLoader(ILoadersContext& context) :
+      context_(context)
+    {
+    }
+
+    ILoadersContext&  context_;
+
+
+  public:
+    class SuccessMessage : public OrthancStone::OriginMessage<DicomResourcesLoader>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      boost::shared_ptr<LoadedDicomResources>  resources_;
+      int                                      priority_;
+      const DicomSource&                       source_;
+      const Orthanc::IDynamicObject*           userPayload_;
+      
+    public:
+      SuccessMessage(const DicomResourcesLoader& origin,
+                     boost::shared_ptr<LoadedDicomResources> resources,
+                     int priority,
+                     const DicomSource& source,
+                     const Orthanc::IDynamicObject* userPayload) :
+        OriginMessage(origin),
+        resources_(resources),
+        priority_(priority),
+        source_(source),
+        userPayload_(userPayload)
+      {
+      }
+
+      int GetPriority() const
+      {
+        return priority_;
+      }
+
+      const boost::shared_ptr<LoadedDicomResources> GetResources() const
+      {
+        return resources_;
+      }
+
+      const DicomSource& GetDicomSource() const
+      {
+        return source_;
+      }
+
+      bool HasUserPayload() const
+      {
+        return userPayload_ != NULL;
+      }
+
+      const Orthanc::IDynamicObject& GetUserPayload() const;
+    };
+
+
+    class Factory : public ILoaderFactory
+    {
+    public:
+      virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& stone)
+      {
+        return DicomResourcesLoader::Create(stone);
+      }
+    };
+
+
+    static boost::shared_ptr<DicomResourcesLoader> Create(ILoadersContext::ILock& stone);
+
+    void ScheduleGetDicomWeb(boost::shared_ptr<LoadedDicomResources> target,
+                             int priority,
+                             const DicomSource& source,
+                             const std::string& uri,
+                             const std::set<Orthanc::DicomTag>& includeTags,
+                             Orthanc::IDynamicObject* userPayload);
+
+    void ScheduleGetDicomWeb(boost::shared_ptr<LoadedDicomResources> target,
+                             int priority,
+                             const DicomSource& source,
+                             const std::string& uri,
+                             Orthanc::IDynamicObject* userPayload)
+    {
+      std::set<Orthanc::DicomTag> includeTags;
+      ScheduleGetDicomWeb(target, priority, source, uri, includeTags, userPayload);
+    }        
+
+    void ScheduleQido(boost::shared_ptr<LoadedDicomResources> target,
+                      int priority,
+                      const DicomSource& source,
+                      Orthanc::ResourceType level,
+                      const Orthanc::DicomMap& filter,
+                      const std::set<Orthanc::DicomTag>& includeTags,
+                      Orthanc::IDynamicObject* userPayload);
+
+    void ScheduleLoadOrthancResources(boost::shared_ptr<LoadedDicomResources> target,
+                                      int priority,
+                                      const DicomSource& source,
+                                      Orthanc::ResourceType topLevel,
+                                      const std::string& topId,
+                                      Orthanc::ResourceType bottomLevel,
+                                      Orthanc::IDynamicObject* userPayload);
+
+    void ScheduleLoadOrthancResource(boost::shared_ptr<LoadedDicomResources> target,
+                                     int priority,
+                                     const DicomSource& source,
+                                     Orthanc::ResourceType level,
+                                     const std::string& id,
+                                     Orthanc::IDynamicObject* userPayload)
+    {
+      ScheduleLoadOrthancResources(target, priority, source, level, id, level, userPayload);
+    }
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    static void GetDicomDirInstances(LoadedDicomResources& target,
+                                     const Orthanc::ParsedDicomDir& dicomDir);
+#endif
+
+    void ScheduleLoadDicomDir(boost::shared_ptr<LoadedDicomResources> target,
+                              int priority,
+                              const DicomSource& source,
+                              const std::string& path,
+                              Orthanc::IDynamicObject* userPayload);
+    
+    void ScheduleLoadDicomFile(boost::shared_ptr<LoadedDicomResources> target,
+                               int priority,
+                               const DicomSource& source,
+                               const std::string& path,
+                               bool includePixelData,
+                               Orthanc::IDynamicObject* userPayload);
+
+    bool ScheduleLoadDicomFile(boost::shared_ptr<LoadedDicomResources> target,
+                               int priority,
+                               const DicomSource& source,
+                               const std::string& dicomDirPath,
+                               const Orthanc::DicomMap& dicomDirEntry,
+                               bool includePixelData,
+                               Orthanc::IDynamicObject* userPayload);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/DicomSource.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,356 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomSource.h"
+
+#include "../Oracle/HttpCommand.h"
+#include "../Oracle/OrthancRestApiCommand.h"
+
+#include <OrthancException.h>
+
+#include <boost/algorithm/string/predicate.hpp>
+
+namespace OrthancStone
+{
+  static std::string EncodeGetArguments(const std::string& uri,
+                                        const std::map<std::string, std::string>& arguments)
+  {
+    std::string s = uri;
+    bool first = true;
+
+    for (std::map<std::string, std::string>::const_iterator
+           it = arguments.begin(); it != arguments.end(); ++it)
+    {
+      if (first)
+      {
+        s += "?";
+        first = false;
+      }
+      else
+      {
+        s += "&";
+      }
+
+      s += it->first + "=" + it->second;
+    }
+
+    // TODO: Call Orthanc::Toolbox::UriEncode() ?
+
+    return s;
+  }
+
+
+  void DicomSource::SetOrthancSource(const Orthanc::WebServiceParameters& parameters)
+  {
+    type_ = DicomSourceType_Orthanc;
+    webService_ = parameters;
+    hasOrthancWebViewer1_ = false;
+    hasOrthancAdvancedPreview_ = false;
+  }
+
+
+  void DicomSource::SetOrthancSource()
+  {
+    Orthanc::WebServiceParameters parameters;
+    parameters.SetUrl("http://localhost:8042/");
+    SetOrthancSource(parameters);
+  }
+
+
+  const Orthanc::WebServiceParameters& DicomSource::GetOrthancParameters() const
+  {
+    if (type_ == DicomSourceType_Orthanc ||
+        type_ == DicomSourceType_DicomWebThroughOrthanc)
+    {
+      return webService_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  void DicomSource::SetDicomDirSource()
+  {
+    type_ = DicomSourceType_DicomDir;
+  }
+
+
+  void DicomSource::SetDicomWebSource(const std::string& baseUrl)
+  {
+    type_ = DicomSourceType_DicomWeb;
+    webService_.SetUrl(baseUrl);
+    webService_.ClearCredentials();
+  }
+
+  
+  void DicomSource::SetDicomWebSource(const std::string& baseUrl,
+                                      const std::string& username,
+                                      const std::string& password)
+  {
+    type_ = DicomSourceType_DicomWeb;
+    webService_.SetUrl(baseUrl);
+    webService_.SetCredentials(username, password);
+  }
+
+  
+  void DicomSource::SetDicomWebThroughOrthancSource(const Orthanc::WebServiceParameters& orthancParameters,
+                                                    const std::string& dicomWebRoot,
+                                                    const std::string& serverName)
+  {
+    type_ = DicomSourceType_DicomWebThroughOrthanc;
+    webService_ = orthancParameters;
+    orthancDicomWebRoot_ = dicomWebRoot;
+    serverName_ = serverName;
+  }
+
+  
+  void DicomSource::SetDicomWebThroughOrthancSource(const std::string& serverName)
+  {
+    Orthanc::WebServiceParameters orthanc;
+    orthanc.SetUrl("http://localhost:8042/");
+    SetDicomWebThroughOrthancSource(orthanc, "/dicom-web/", serverName);
+  }
+
+  
+  bool DicomSource::IsDicomWeb() const
+  {
+    return (type_ == DicomSourceType_DicomWeb ||
+            type_ == DicomSourceType_DicomWebThroughOrthanc);
+  }
+
+
+  IOracleCommand* DicomSource::CreateDicomWebCommand(const std::string& uri,
+                                                     const std::map<std::string, std::string>& arguments,
+                                                     const std::map<std::string, std::string>& headers,
+                                                     Orthanc::IDynamicObject* payload) const
+  {
+    std::unique_ptr<Orthanc::IDynamicObject> protection(payload);
+
+    switch (type_)
+    {
+      case DicomSourceType_DicomWeb:
+      {
+        std::unique_ptr<HttpCommand> command(new HttpCommand);
+        
+        command->SetMethod(Orthanc::HttpMethod_Get);
+        command->SetUrl(webService_.GetUrl() + EncodeGetArguments(uri, arguments));
+        command->SetHttpHeaders(webService_.GetHttpHeaders());
+
+        for (std::map<std::string, std::string>::const_iterator
+               it = headers.begin(); it != headers.end(); ++it)
+        {
+          command->SetHttpHeader(it->first, it->second);
+        }
+      
+        if (!webService_.GetUsername().empty())
+        {
+          command->SetCredentials(webService_.GetUsername(), webService_.GetPassword());
+        }         
+
+        if (protection.get())
+        {
+          command->AcquirePayload(protection.release());
+        }
+        
+        return command.release();
+      }
+
+      case DicomSourceType_DicomWebThroughOrthanc:
+      {
+        Json::Value args = Json::objectValue;
+        for (std::map<std::string, std::string>::const_iterator
+               it = arguments.begin(); it != arguments.end(); ++it)
+        {
+          args[it->first] = it->second;
+        }
+          
+        Json::Value h = Json::objectValue;
+        for (std::map<std::string, std::string>::const_iterator
+               it = headers.begin(); it != headers.end(); ++it)
+        {
+          h[it->first] = it->second;
+        }
+        
+        Json::Value body = Json::objectValue;
+        body["Uri"] = uri;
+        body["Arguments"] = args;
+        body["HttpHeaders"] = h;
+
+        std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
+        command->SetMethod(Orthanc::HttpMethod_Post);
+        command->SetUri(orthancDicomWebRoot_ + "/servers/" + serverName_ + "/get");
+        command->SetBody(body);
+
+        if (protection.get())
+        {
+          command->AcquirePayload(protection.release());
+        }
+        
+        return command.release();
+      }
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  void DicomSource::AutodetectOrthancFeatures(const std::string& system,
+                                              const std::string& plugins)
+  {
+    static const char* const REST_API_VERSION = "ApiVersion";
+
+    if (IsDicomWeb())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    Json::Value a, b;
+    Json::Reader reader;
+    if (reader.parse(system, a) &&
+        reader.parse(plugins, b) &&
+        a.type() == Json::objectValue &&
+        b.type() == Json::arrayValue &&
+        a.isMember(REST_API_VERSION) &&
+        a[REST_API_VERSION].type() == Json::intValue)
+    {
+      SetOrthancAdvancedPreview(a[REST_API_VERSION].asInt() >= 5);
+
+      hasOrthancWebViewer1_ = false;
+
+      for (Json::Value::ArrayIndex i = 0; i < b.size(); i++)
+      {
+        if (b[i].type() != Json::stringValue)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+        }
+
+        if (boost::iequals(b[i].asString(), "web-viewer"))
+        {
+          hasOrthancWebViewer1_ = true;
+        }
+      }
+    }
+    else
+    {
+      printf("[%s] [%s]\n", system.c_str(), plugins.c_str());
+
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  void DicomSource::SetOrthancWebViewer1(bool hasPlugin)
+  {
+    if (IsOrthanc())
+    {
+      hasOrthancWebViewer1_ = hasPlugin;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  bool DicomSource::HasOrthancWebViewer1() const
+  {
+    if (IsOrthanc())
+    {
+      return hasOrthancWebViewer1_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  void DicomSource::SetOrthancAdvancedPreview(bool hasFeature)
+  {
+    if (IsOrthanc())
+    {
+      hasOrthancAdvancedPreview_ = hasFeature;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  bool DicomSource::HasOrthancAdvancedPreview() const
+  {
+    if (IsOrthanc())
+    {
+      return hasOrthancAdvancedPreview_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  void DicomSource::SetDicomWebRendered(bool hasFeature)
+  {
+    if (IsDicomWeb())
+    {
+      hasDicomWebRendered_ = hasFeature;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  bool DicomSource::HasDicomWebRendered() const
+  {
+    if (IsDicomWeb())
+    {
+      return hasDicomWebRendered_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  unsigned int DicomSource::GetQualityCount() const
+  {
+    if (IsDicomWeb())
+    {
+      return (HasDicomWebRendered() ? 2 : 1);
+    }
+    else if (IsOrthanc())
+    {
+      return (HasOrthancWebViewer1() || 
+              HasOrthancAdvancedPreview() ? 2 : 1);
+    }
+    else if (IsDicomDir())
+    {
+      return 1;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/DicomSource.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,125 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Oracle/IOracleCommand.h"
+
+#include <WebServiceParameters.h>
+
+namespace OrthancStone
+{
+  enum DicomSourceType
+  {
+    DicomSourceType_Orthanc,
+    DicomSourceType_DicomWeb,
+    DicomSourceType_DicomWebThroughOrthanc,
+    DicomSourceType_DicomDir
+  };
+
+
+  class DicomSource
+  {
+  private:
+    DicomSourceType                type_;
+    Orthanc::WebServiceParameters  webService_;
+    std::string                    orthancDicomWebRoot_;
+    std::string                    serverName_;
+    bool                           hasOrthancWebViewer1_;
+    bool                           hasOrthancAdvancedPreview_;
+    bool                           hasDicomWebRendered_;
+
+  public:
+    DicomSource() :
+      hasOrthancWebViewer1_(false),
+      hasOrthancAdvancedPreview_(false),
+      hasDicomWebRendered_(false)
+    {
+      SetOrthancSource();
+    }
+
+    DicomSourceType GetType() const
+    {
+      return type_;
+    }
+
+    void SetOrthancSource();
+
+    void SetOrthancSource(const Orthanc::WebServiceParameters& parameters);
+
+    const Orthanc::WebServiceParameters& GetOrthancParameters() const;
+
+    void SetDicomDirSource();
+
+    void SetDicomWebSource(const std::string& baseUrl);
+
+    void SetDicomWebSource(const std::string& baseUrl,
+                           const std::string& username,
+                           const std::string& password);
+
+    void SetDicomWebThroughOrthancSource(const Orthanc::WebServiceParameters& orthancParameters,
+                                         const std::string& dicomWebRoot,
+                                         const std::string& serverName);
+    
+    void SetDicomWebThroughOrthancSource(const std::string& serverName);
+    
+    bool IsDicomWeb() const;
+
+    bool IsOrthanc() const
+    {
+      return type_ == DicomSourceType_Orthanc;
+    }
+
+    bool IsDicomDir() const
+    {
+      return type_ == DicomSourceType_DicomDir;
+    }
+
+    IOracleCommand* CreateDicomWebCommand(const std::string& uri,
+                                          const std::map<std::string, std::string>& arguments,
+                                          const std::map<std::string, std::string>& headers,
+                                          Orthanc::IDynamicObject* payload /* takes ownership */) const;
+    
+    IOracleCommand* CreateDicomWebCommand(const std::string& uri,
+                                          Orthanc::IDynamicObject* payload /* takes ownership */) const
+    {
+      std::map<std::string, std::string> none;
+      return CreateDicomWebCommand(uri, none, none, payload);
+    }
+    
+    void AutodetectOrthancFeatures(const std::string& system,
+                                   const std::string& plugins);
+
+    void SetOrthancWebViewer1(bool hasPlugin);
+
+    bool HasOrthancWebViewer1() const;
+
+    void SetOrthancAdvancedPreview(bool hasFeature);
+
+    bool HasOrthancAdvancedPreview() const;
+
+    void SetDicomWebRendered(bool hasFeature);
+
+    bool HasDicomWebRendered() const;
+
+    unsigned int GetQualityCount() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/DicomStructureSetLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,495 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomStructureSetLoader.h"
+
+#include "../Scene2D/PolylineSceneLayer.h"
+#include "../StoneException.h"
+#include "../Toolbox/GeometryToolbox.h"
+
+#include <Toolbox.h>
+
+#include <algorithm>
+
+namespace OrthancStone
+{
+
+#if 0
+  void DumpDicomMap(std::ostream& o, const Orthanc::DicomMap& dicomMap)
+  {
+    using namespace std;
+    //ios_base::fmtflags state = o.flags();
+    //o.flags(ios::right | ios::hex);
+    //o << "(" << setfill('0') << setw(4) << tag.GetGroup()
+    //  << "," << setw(4) << tag.GetElement() << ")";
+    //o.flags(state);
+    Json::Value val;
+    dicomMap.Serialize(val);
+    o << val;
+    //return o;
+  }
+#endif
+
+  // implementation of IInstanceLookupHandler that uses Orthanc REST API calls to retrive the 
+  // geometry of referenced instances
+  class DicomStructureSetLoader::RestInstanceLookupHandler : public DicomStructureSetLoader::IInstanceLookupHandler,
+    public LoaderStateMachine
+  {
+  public:
+    static boost::shared_ptr<RestInstanceLookupHandler > Create(DicomStructureSetLoader& loader)
+    {
+      boost::shared_ptr<RestInstanceLookupHandler> obj(new RestInstanceLookupHandler(loader));
+      obj->LoaderStateMachine::PostConstructor();
+      return obj;
+    }
+
+  protected:
+    RestInstanceLookupHandler(DicomStructureSetLoader& loader) 
+      : LoaderStateMachine(loader.loadersContext_)
+      , loader_(loader)
+    {
+    }
+
+    virtual void RetrieveReferencedSlices(const std::set<std::string>& nonEmptyInstances) ORTHANC_OVERRIDE;
+
+  private:
+    // these subclasses hold the loading state
+    class AddReferencedInstance;   // 2nd state
+    class LookupInstance;          // 1st state
+
+    DicomStructureSetLoader& loader_;
+  };
+
+  class DicomStructureSetLoader::RestInstanceLookupHandler::AddReferencedInstance : public LoaderStateMachine::State
+  {
+  private:
+    std::string instanceId_;
+      
+  public:
+    AddReferencedInstance(DicomStructureSetLoader& that,
+                          const std::string& instanceId) :
+      State(that),
+      instanceId_(instanceId)
+    {
+    }
+
+    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
+    {
+      Json::Value tags;
+      message.ParseJsonBody(tags);
+        
+      Orthanc::DicomMap dicom;
+      dicom.FromDicomAsJson(tags);
+
+      DicomStructureSetLoader& loader = GetLoader<DicomStructureSetLoader>();
+    
+      loader.AddReferencedSlice(dicom);
+    }
+  };
+
+
+  // State that converts a "SOP Instance UID" to an Orthanc identifier
+  class DicomStructureSetLoader::RestInstanceLookupHandler::LookupInstance : public LoaderStateMachine::State
+  {
+  private:
+    std::string  sopInstanceUid_;
+      
+  public:
+    LookupInstance(DicomStructureSetLoader& that,
+                   const std::string& sopInstanceUid) :
+      State(that),
+      sopInstanceUid_(sopInstanceUid)
+    {
+    }
+
+    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
+    {
+      DicomStructureSetLoader& loader = GetLoader<DicomStructureSetLoader>();
+
+      Json::Value lookup;
+      message.ParseJsonBody(lookup);
+
+      if (lookup.type() != Json::arrayValue ||
+          lookup.size() != 1 ||
+          !lookup[0].isMember("Type") ||
+          !lookup[0].isMember("Path") ||
+          lookup[0]["Type"].type() != Json::stringValue ||
+          lookup[0]["ID"].type() != Json::stringValue ||
+          lookup[0]["Type"].asString() != "Instance")
+      {
+        std::stringstream msg;
+        msg << "Unknown resource! message.GetAnswer() = " << message.GetAnswer() << " message.GetAnswerHeaders() = ";
+        for (OrthancStone::OrthancRestApiCommand::HttpHeaders::const_iterator it = message.GetAnswerHeaders().begin();
+             it != message.GetAnswerHeaders().end(); ++it)
+        {
+          msg << "\nkey: \"" << it->first << "\" value: \"" << it->second << "\"\n";
+        }
+        const std::string msgStr = msg.str();
+        LOG(ERROR) << msgStr;
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource);          
+      }
+
+      const std::string instanceId = lookup[0]["ID"].asString();
+
+      {
+        std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
+        command->SetHttpHeader("Accept-Encoding", "gzip");
+        std::string uri = "/instances/" + instanceId + "/tags";
+        command->SetUri(uri);
+        command->AcquirePayload(new AddReferencedInstance(loader, instanceId));
+        Schedule(command.release());
+      }
+    }
+  };
+
+  void DicomStructureSetLoader::RestInstanceLookupHandler::RetrieveReferencedSlices(
+    const std::set<std::string>& nonEmptyInstances)
+  {
+    for (std::set<std::string>::const_iterator it = nonEmptyInstances.begin(); 
+         it != nonEmptyInstances.end(); 
+         ++it)
+    {
+      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
+      command->SetUri("/tools/lookup");
+      command->SetMethod(Orthanc::HttpMethod_Post);
+      command->SetBody(*it);
+      command->AcquirePayload(new LookupInstance(loader_, *it));
+      Schedule(command.release());
+    }
+  }
+
+  class DicomStructureSetLoader::LoadStructure : public LoaderStateMachine::State
+  {
+  public:
+    LoadStructure(DicomStructureSetLoader& that) :
+    State(that)
+    {
+    }
+    
+    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
+    {
+      DicomStructureSetLoader& loader = GetLoader<DicomStructureSetLoader>();
+
+      // Set the actual structure set content
+      {
+        FullOrthancDataset dicom(message.GetAnswer());
+
+        loader.content_.reset(new OrthancStone::DicomStructureSet(dicom));
+      }
+
+      // initialize visibility flags
+      SetDefaultStructureVisibility();
+
+      // retrieve the (non-empty) referenced instances (the CT slices containing the corresponding structures)
+      // Some (admittedly invalid) Dicom files have empty values in the 
+      // 0008,1155 tag. We try our best to cope with this.
+      // this is why we use `nonEmptyInstances` and not `instances`
+      std::set<std::string> instances;
+      std::set<std::string> nonEmptyInstances;
+
+      // this traverses the polygon collection for all structures and retrieve the SOPInstanceUID of 
+      // the referenced instances
+      loader.content_->GetReferencedInstances(instances);
+
+      for (std::set<std::string>::const_iterator
+        it = instances.begin(); it != instances.end(); ++it)
+      {
+        std::string instance = Orthanc::Toolbox::StripSpaces(*it);
+        if(instance != "")
+          nonEmptyInstances.insert(instance);
+      }
+
+      loader.RetrieveReferencedSlices(nonEmptyInstances);
+    }
+
+    void SetDefaultStructureVisibility()
+    {
+      DicomStructureSetLoader& loader = GetLoader<DicomStructureSetLoader>();
+
+      size_t structureCount = loader.content_->GetStructuresCount();
+
+      loader.structureVisibility_.resize(structureCount);
+      bool everythingVisible = false;
+      if ((loader.initiallyVisibleStructures_.size() == 1)
+          && (loader.initiallyVisibleStructures_[0].size() == 1)
+          && (loader.initiallyVisibleStructures_[0][0] == '*'))
+      {
+        everythingVisible = true;
+      }
+
+      for (size_t i = 0; i < structureCount; ++i)
+      {
+        // if a single "*" string is supplied, this means we want everything 
+        // to be visible...
+        if (everythingVisible)
+        {
+          loader.structureVisibility_.at(i) = true;
+        }
+        else
+        {
+          // otherwise, we only enable visibility for those structures whose 
+          // names are mentioned in the initiallyVisibleStructures_ array
+          const std::string& structureName = loader.content_->GetStructureName(i);
+
+          std::vector<std::string>::iterator foundIt =
+            std::find(
+              loader.initiallyVisibleStructures_.begin(),
+              loader.initiallyVisibleStructures_.end(),
+              structureName);
+          std::vector<std::string>::iterator endIt = loader.initiallyVisibleStructures_.end();
+          if (foundIt != endIt)
+            loader.structureVisibility_.at(i) = true;
+          else
+            loader.structureVisibility_.at(i) = false;
+        }
+      }
+    }
+
+    private:
+
+
+  };
+    
+
+  class DicomStructureSetLoader::Slice : public IExtractedSlice
+  {
+  private:
+    const OrthancStone::DicomStructureSet&  content_;
+    uint64_t                  revision_;
+    bool                      isValid_;
+    std::vector<bool>         visibility_;
+      
+  public:
+    /**
+    The visibility vector must either:
+    - be empty
+    or
+    - contain the same number of items as the number of structures in the 
+      structure set.
+    In the first case (empty vector), all the structures are displayed.
+    In the second case, the visibility of each structure is defined by the 
+    content of the vector at the corresponding index.
+    */
+    Slice(const OrthancStone::DicomStructureSet& content,
+          uint64_t revision,
+          const OrthancStone::CoordinateSystem3D& cuttingPlane,
+          std::vector<bool> visibility = std::vector<bool>()) 
+      : content_(content)
+      , revision_(revision)
+      , visibility_(visibility)
+    {
+      ORTHANC_ASSERT((visibility_.size() == content_.GetStructuresCount())
+        || (visibility_.size() == 0u));
+
+      bool opposite;
+
+      const OrthancStone::Vector normal = content.GetNormal();
+      isValid_ = (
+        OrthancStone::GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetNormal()) ||
+        OrthancStone::GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetAxisX()) ||
+        OrthancStone::GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetAxisY()));
+    }
+      
+    virtual bool IsValid()
+    {
+      return isValid_;
+    }
+
+    virtual uint64_t GetRevision()
+    {
+      return revision_;
+    }
+
+    virtual OrthancStone::ISceneLayer* CreateSceneLayer(
+      const OrthancStone::ILayerStyleConfigurator* configurator,
+      const OrthancStone::CoordinateSystem3D& cuttingPlane)
+    {
+      assert(isValid_);
+
+      std::unique_ptr<OrthancStone::PolylineSceneLayer> layer(new OrthancStone::PolylineSceneLayer);
+      layer->SetThickness(2);
+
+      for (size_t i = 0; i < content_.GetStructuresCount(); i++)
+      {
+        if ((visibility_.size() == 0) || visibility_.at(i))
+        {
+          const OrthancStone::Color& color = content_.GetStructureColor(i);
+
+#ifdef USE_BOOST_UNION_FOR_POLYGONS 
+          std::vector< std::vector<OrthancStone::Point2D> > polygons;
+
+          if (content_.ProjectStructure(polygons, i, cuttingPlane))
+          {
+            for (size_t j = 0; j < polygons.size(); j++)
+            {
+              PolylineSceneLayer::Chain chain;
+              chain.resize(polygons[j].size());
+
+              for (size_t k = 0; k < polygons[j].size(); k++)
+              {
+                chain[k] = ScenePoint2D(polygons[j][k].x, polygons[j][k].y);
+    }
+
+              layer->AddChain(chain, true /* closed */, color);
+  }
+        }
+#else
+          std::vector< std::pair<OrthancStone::Point2D, OrthancStone::Point2D> > segments;
+
+          if (content_.ProjectStructure(segments, i, cuttingPlane))
+          {
+            for (size_t j = 0; j < segments.size(); j++)
+            {
+              OrthancStone::PolylineSceneLayer::Chain chain;
+              chain.resize(2);
+
+              chain[0] = OrthancStone::ScenePoint2D(segments[j].first.x, segments[j].first.y);
+              chain[1] = OrthancStone::ScenePoint2D(segments[j].second.x, segments[j].second.y);
+
+              layer->AddChain(chain, false /* NOT closed */, color);
+            }
+          }
+#endif        
+        }
+      }
+
+      return layer.release();
+    }
+  };
+    
+
+  DicomStructureSetLoader::DicomStructureSetLoader(
+    OrthancStone::ILoadersContext& loadersContext) 
+    : LoaderStateMachine(loadersContext)
+    , loadersContext_(loadersContext)
+    , revision_(0)
+    , countProcessedInstances_(0)
+    , countReferencedInstances_(0)
+    , structuresReady_(false)
+  {
+    // the default handler to retrieve slice geometry is RestInstanceLookupHandler
+    instanceLookupHandler_ = RestInstanceLookupHandler::Create(*this);
+  }
+    
+  boost::shared_ptr<OrthancStone::DicomStructureSetLoader> DicomStructureSetLoader::Create(OrthancStone::ILoadersContext& loadersContext)
+  {
+    boost::shared_ptr<DicomStructureSetLoader> obj(
+      new DicomStructureSetLoader(
+        loadersContext));
+    obj->LoaderStateMachine::PostConstructor();
+    return obj;
+  }
+
+  void DicomStructureSetLoader::AddReferencedSlice(const Orthanc::DicomMap& dicom)
+  {
+    content_->AddReferencedSlice(dicom);
+    countProcessedInstances_ ++;
+    assert(countProcessedInstances_ <= countReferencedInstances_);
+
+    revision_++;
+    SetStructuresUpdated();
+
+    if (countProcessedInstances_ == countReferencedInstances_)
+    {
+      // All the referenced instances have been loaded, finalize the RT-STRUCT
+      content_->CheckReferencedSlices();
+      revision_++;
+      SetStructuresReady();
+    }
+  }
+
+  void DicomStructureSetLoader::RetrieveReferencedSlices(const std::set<std::string>& nonEmptyInstances)
+  {
+    // we set the number of referenced instances. This allows to know, in the method above, when we're done
+    countReferencedInstances_ = static_cast<unsigned int>(nonEmptyInstances.size());
+    instanceLookupHandler_->RetrieveReferencedSlices(nonEmptyInstances);
+  }
+
+  void DicomStructureSetLoader::SetStructureDisplayState(size_t structureIndex, bool display)
+  {
+    structureVisibility_.at(structureIndex) = display;
+    revision_++;
+  }
+
+  DicomStructureSetLoader::~DicomStructureSetLoader()
+  {
+    LOG(TRACE) << "DicomStructureSetLoader::~DicomStructureSetLoader()";
+  }
+
+  void DicomStructureSetLoader::LoadInstance(
+    const std::string& instanceId, 
+    const std::vector<std::string>& initiallyVisibleStructures)
+  {
+    Start();
+      
+    instanceId_ = instanceId;
+    initiallyVisibleStructures_ = initiallyVisibleStructures;
+
+    {
+      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
+      command->SetHttpHeader("Accept-Encoding", "gzip");
+
+      std::string uri = "/instances/" + instanceId + "/tags?ignore-length=3006-0050";
+
+      command->SetUri(uri);
+      command->AcquirePayload(new LoadStructure(*this));
+      Schedule(command.release());
+    }
+  }
+
+  void DicomStructureSetLoader::LoadInstanceFullVisibility(const std::string& instanceId)
+  {
+    std::vector<std::string> initiallyVisibleStructures;
+    initiallyVisibleStructures.push_back("*"); // wildcard to make all structure sets visible
+    LoadInstance(instanceId, initiallyVisibleStructures);
+  }
+
+  OrthancStone::IVolumeSlicer::IExtractedSlice* DicomStructureSetLoader::ExtractSlice(const OrthancStone::CoordinateSystem3D& cuttingPlane)
+  {
+    if (content_.get() == NULL)
+    {
+      // Geometry is not available yet
+      return new OrthancStone::IVolumeSlicer::InvalidSlice;
+    }
+    else
+    {
+      return new Slice(*content_, revision_, cuttingPlane, structureVisibility_);
+    }
+  }
+
+  void DicomStructureSetLoader::SetStructuresUpdated()
+  {
+    BroadcastMessage(DicomStructureSetLoader::StructuresUpdated(*this));
+  }
+
+  void DicomStructureSetLoader::SetStructuresReady()
+  {
+    ORTHANC_ASSERT(!structuresReady_);
+    structuresReady_ = true;
+    BroadcastMessage(DicomStructureSetLoader::StructuresReady(*this));
+  }
+
+  bool DicomStructureSetLoader::AreStructuresReady() const
+  {
+    return structuresReady_;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/DicomStructureSetLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,146 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/DicomStructureSet.h"
+#include "../Volumes/IVolumeSlicer.h"
+#include "../Loaders/ILoadersContext.h"
+#include "LoaderStateMachine.h"
+
+#include <vector>
+
+namespace OrthancStone
+{
+  class DicomStructureSetLoader :
+    public LoaderStateMachine,
+    public OrthancStone::IVolumeSlicer,
+    public OrthancStone::IObservable
+  {
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, StructuresReady, DicomStructureSetLoader);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, StructuresUpdated, DicomStructureSetLoader);
+
+    /**
+    
+    Once the structure set has been loaded (the LoadStructure state), we need to fill it with geometry information
+    from the referenced slices (tag (0008,1155) described here:
+    https://dicom.innolitics.com/ciods/rt-structure-set/general-reference/00081140/00081155
+
+    This interface allows to customize how this information can be gathered. By default, the RestInstanceLookupHandler
+    will perform a REST call to the Orthanc API to retrieve this information.
+
+    Injecting another implementation of this interface is useful when where this information can be supplied in 
+    another (faster) way (for instance, if a separate loader for the CT series can be used to supply the slice geometry)
+    */
+    class IInstanceLookupHandler
+    {
+    public:
+      virtual void RetrieveReferencedSlices(const std::set<std::string>& instances) = 0;
+    };
+
+    // predeclaration of the default IInstanceLookupHandler implementation
+    class RestInstanceLookupHandler;
+
+    static boost::shared_ptr<DicomStructureSetLoader> Create(
+      OrthancStone::ILoadersContext& loadersContext);
+
+    void SetInstanceLookupHandler(boost::shared_ptr<IInstanceLookupHandler> instanceLookupHandler)
+    {
+      instanceLookupHandler_ = instanceLookupHandler;
+    }
+
+    OrthancStone::DicomStructureSet* GetContent()
+    {
+      return content_.get();
+    }
+
+    void SetStructureDisplayState(size_t structureIndex, bool display);
+    
+    bool GetStructureDisplayState(size_t structureIndex) const
+    {
+      return structureVisibility_.at(structureIndex);
+    }
+
+    ~DicomStructureSetLoader();
+    
+    void LoadInstance(const std::string& instanceId, 
+                      const std::vector<std::string>& initiallyVisibleStructures = std::vector<std::string>());
+
+    void LoadInstanceFullVisibility(const std::string& instanceId);
+
+
+    virtual IExtractedSlice* ExtractSlice(const OrthancStone::CoordinateSystem3D& cuttingPlane) ORTHANC_OVERRIDE;
+
+    void SetStructuresReady();
+    void SetStructuresUpdated();
+
+    bool AreStructuresReady() const;
+
+    /**
+      Called by the IInstanceLookupHandler when slice referenced instance information is available. 
+      When the last referenced slice is received, this method will perform a final check and will warn observers
+    */
+    void AddReferencedSlice(const Orthanc::DicomMap& dicom);
+
+  private:
+    class Slice;
+
+    // Only state of LoaderStateMachine
+    class LoadStructure;           // 1st state
+    
+    OrthancStone::ILoadersContext&                    loadersContext_;
+    std::unique_ptr<OrthancStone::DicomStructureSet>  content_;
+    uint64_t                                          revision_;
+    std::string                                       instanceId_;
+    unsigned int                                      countProcessedInstances_;
+    unsigned int                                      countReferencedInstances_;  
+
+    // will be set to true once the loading is finished
+    bool                                              structuresReady_;
+
+    /**
+    At load time, these strings are used to initialize the structureVisibility_ 
+    vector.
+
+    As a special case, if initiallyVisibleStructures_ contains a single string
+    that is '*', ALL structures will be made visible.
+    */
+    std::vector<std::string> initiallyVisibleStructures_;
+
+    /**
+    Contains the "Should this structure be displayed?" flag for all structures.
+    Only filled when structures are loaded.
+
+    Changing this value directly affects the rendering
+    */
+    std::vector<bool>                  structureVisibility_;
+
+
+    boost::shared_ptr<IInstanceLookupHandler> instanceLookupHandler_;
+
+  private:
+    void RetrieveReferencedSlices(const std::set<std::string>& nonEmptyInstances);
+
+  protected:
+    DicomStructureSetLoader(OrthancStone::ILoadersContext& loadersContext);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/DicomVolumeLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,188 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomVolumeLoader.h"
+
+#include <Images/ImageProcessing.h>
+
+namespace OrthancStone
+{
+  DicomVolumeLoader::DicomVolumeLoader(boost::shared_ptr<SeriesFramesLoader>& framesLoader,
+                                       bool computeRange) :
+    framesLoader_(framesLoader),
+    isValid_(false),
+    started_(false),
+    remaining_(0)
+  {
+    volume_.reset(new OrthancStone::DicomVolumeImage);
+
+    const SeriesOrderedFrames& frames = framesLoader_->GetOrderedFrames();
+
+    if (frames.IsRegular3DVolume() &&
+        frames.GetFramesCount() > 0)
+    {
+      // TODO - Is "0" the good choice for the reference frame?
+      // Shouldn't we use "count - 1" depending on the direction
+      // of the normal?
+      const OrthancStone::DicomInstanceParameters& parameters = frames.GetInstanceParameters(0);
+
+      OrthancStone::CoordinateSystem3D plane(frames.GetInstance(0));
+
+      OrthancStone::VolumeImageGeometry geometry;
+      geometry.SetSizeInVoxels(parameters.GetImageInformation().GetWidth(),
+                               parameters.GetImageInformation().GetHeight(),
+                               static_cast<unsigned int>(frames.GetFramesCount()));
+      geometry.SetAxialGeometry(plane);
+
+      double spacing;
+      if (parameters.GetSopClassUid() == SopClassUid_RTDose)
+      {
+        if (!parameters.ComputeRegularSpacing(spacing))
+        {
+          LOG(WARNING) << "Unable to compute the spacing in a RT-DOSE instance";
+          spacing = frames.GetSpacingBetweenSlices();
+        }
+      }
+      else
+      {
+        spacing = frames.GetSpacingBetweenSlices();
+      }
+
+      geometry.SetVoxelDimensions(parameters.GetPixelSpacingX(),
+                                  parameters.GetPixelSpacingY(), spacing);
+      volume_->Initialize(geometry, parameters.GetExpectedPixelFormat(), computeRange);
+      volume_->GetPixelData().Clear();
+      volume_->SetDicomParameters(parameters);
+
+      remaining_ = frames.GetFramesCount();
+      isValid_ = true;
+    }
+    else
+    {
+      LOG(WARNING) << "Not a regular 3D volume";
+    }
+  }
+
+
+  void DicomVolumeLoader::Handle(const OrthancStone::SeriesFramesLoader::FrameLoadedMessage& message)
+  {
+    if (remaining_ == 0 ||
+        !message.HasUserPayload())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    if (message.GetImage().GetWidth() != volume_->GetPixelData().GetWidth() ||
+        message.GetImage().GetHeight() != volume_->GetPixelData().GetHeight())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize);
+    }
+
+    if (message.GetImage().GetFormat() != volume_->GetPixelData().GetFormat())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    if (message.GetFrameIndex() >= volume_->GetPixelData().GetDepth())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    size_t frameIndex = dynamic_cast<const Orthanc::SingleValueObject<size_t>&>
+    (message.GetUserPayload()).GetValue();
+
+    {
+      ImageBuffer3D::SliceWriter writer(volume_->GetPixelData(), 
+                                        VolumeProjection_Axial, 
+                                        static_cast<unsigned int>(frameIndex));
+      
+      Orthanc::ImageProcessing::Copy(writer.GetAccessor(), message.GetImage());
+    }
+
+    volume_->IncrementRevision();
+
+    {
+      VolumeUpdatedMessage updated(*this, 
+                                   static_cast<unsigned int>(frameIndex));
+      
+      BroadcastMessage(updated);
+    }
+
+    remaining_--;
+
+    if (remaining_ == 0)
+    {
+      VolumeReadyMessage ready(*this);
+      BroadcastMessage(ready);
+    }
+  }
+
+
+  DicomVolumeLoader::Factory::Factory(LoadedDicomResources& instances) :
+    framesFactory_(instances),
+    computeRange_(false)
+  {
+  }
+
+  DicomVolumeLoader::Factory::Factory(const SeriesMetadataLoader::SuccessMessage& metadata) :
+    framesFactory_(metadata.GetInstances()),
+    computeRange_(false)
+  {
+    SetDicomDir(metadata.GetDicomDirPath(), metadata.GetDicomDir());  // Only useful for DICOMDIR sources
+  }
+
+
+  boost::shared_ptr<IObserver> DicomVolumeLoader::Factory::Create(ILoadersContext::ILock& context)
+  { 
+    boost::shared_ptr<SeriesFramesLoader> frames =
+      boost::dynamic_pointer_cast<SeriesFramesLoader>(framesFactory_.Create(context));
+
+    boost::shared_ptr<DicomVolumeLoader> volume(new DicomVolumeLoader(frames, computeRange_));
+    volume->Register<SeriesFramesLoader::FrameLoadedMessage>(*frames, &DicomVolumeLoader::Handle);
+
+    return volume;
+  }
+
+  void DicomVolumeLoader::Start(int priority,
+                                const DicomSource& source)
+  {
+    if (started_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    started_ = true;
+
+    if (IsValid())
+    {
+      for (size_t i = 0; i < GetOrderedFrames().GetFramesCount(); i++)
+      {
+        framesLoader_->ScheduleLoadFrame(priority, source, i, source.GetQualityCount() - 1,
+                                         new Orthanc::SingleValueObject<size_t>(i));
+      }
+    }
+    else
+    {
+      VolumeReadyMessage ready(*this);
+      BroadcastMessage(ready);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/DicomVolumeLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,141 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Volumes/DicomVolumeImage.h"
+#include "SeriesFramesLoader.h"
+#include "SeriesMetadataLoader.h"
+
+namespace OrthancStone
+{
+  class DicomVolumeLoader : 
+    public ObserverBase<DicomVolumeLoader>,
+    public IObservable
+  {
+  private:
+    boost::shared_ptr<SeriesFramesLoader>  framesLoader_;
+    boost::shared_ptr<DicomVolumeImage>    volume_;
+    bool                                   isValid_;
+    bool                                   started_;
+    size_t                                 remaining_;
+
+    DicomVolumeLoader(boost::shared_ptr<SeriesFramesLoader>& framesLoader,
+                      bool computeRange);
+
+    void Handle(const OrthancStone::SeriesFramesLoader::FrameLoadedMessage& message);
+
+  public:
+    class VolumeReadyMessage : public OriginMessage<DicomVolumeLoader>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    public:
+      VolumeReadyMessage(const DicomVolumeLoader& loader) :
+        OriginMessage(loader)
+      {
+      }
+
+      const DicomVolumeImage& GetVolume() const
+      {
+        assert(GetOrigin().GetVolume());
+        return *GetOrigin().GetVolume();
+      }
+    };
+
+
+    class VolumeUpdatedMessage : public OriginMessage<DicomVolumeLoader>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      unsigned int   axial_;
+
+    public:
+      VolumeUpdatedMessage(const DicomVolumeLoader& loader,
+                           unsigned int axial) :
+        OriginMessage(loader),
+        axial_(axial)
+      {
+      }
+
+      unsigned int GetAxialIndex() const
+      {
+        return axial_;
+      }
+
+      const DicomVolumeImage& GetVolume() const
+      {
+        assert(GetOrigin().GetVolume());
+        return *GetOrigin().GetVolume();
+      }
+    };
+
+
+    class Factory : public ILoaderFactory
+    {
+    private:
+      SeriesFramesLoader::Factory  framesFactory_;
+      bool                         computeRange_;
+
+    public:
+      Factory(LoadedDicomResources& instances);
+
+      Factory(const SeriesMetadataLoader::SuccessMessage& metadata);
+
+      void SetComputeRange(bool computeRange)
+      {
+        computeRange_ = computeRange;
+      }
+
+      void SetDicomDir(const std::string& dicomDirPath,
+                       boost::shared_ptr<LoadedDicomResources> dicomDir)
+      {
+        framesFactory_.SetDicomDir(dicomDirPath, dicomDir);
+      }
+
+      virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& context) ORTHANC_OVERRIDE;
+    };
+
+    bool IsValid() const
+    {
+      return isValid_;
+    }
+
+    bool IsFullyLoaded() const
+    {
+      return remaining_ == 0;
+    }
+
+    boost::shared_ptr<DicomVolumeImage> GetVolume() const
+    {
+      return volume_;
+    }
+
+    const SeriesOrderedFrames& GetOrderedFrames() const
+    {
+      return framesLoader_->GetOrderedFrames();
+    }
+
+    void Start(int priority,
+               const DicomSource& source);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/GenericLoadersContext.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,183 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GenericLoadersContext.h"
+
+namespace OrthancStone
+{
+  class GenericLoadersContext::Locker : public ILoadersContext::ILock
+  {
+  private:
+    GenericLoadersContext& that_;
+    boost::recursive_mutex::scoped_lock lock_;
+
+  public:
+    Locker(GenericLoadersContext& that) :
+      that_(that),
+      lock_(that.mutex_)
+    {
+      if (!that_.scheduler_)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+      
+    virtual ILoadersContext& GetContext() const ORTHANC_OVERRIDE
+    {
+      return that_;
+    };
+
+    virtual void AddLoader(boost::shared_ptr<IObserver> loader) ORTHANC_OVERRIDE
+    {
+      that_.loaders_.push_back(loader);
+    }
+
+    virtual IObservable& GetOracleObservable() const ORTHANC_OVERRIDE
+    {
+      return that_.oracleObservable_;
+    }
+
+    virtual void Schedule(boost::shared_ptr<IObserver> receiver,
+                          int priority,
+                          IOracleCommand* command /* Takes ownership */) ORTHANC_OVERRIDE
+    {
+      that_.scheduler_->Schedule(receiver, priority, command);
+    };
+
+    virtual void CancelRequests(boost::shared_ptr<IObserver> receiver) ORTHANC_OVERRIDE
+    {
+      that_.scheduler_->CancelRequests(receiver);
+    }
+
+    virtual void CancelAllRequests() ORTHANC_OVERRIDE
+    {
+      that_.scheduler_->CancelAllRequests();
+    }
+
+    virtual void GetStatistics(uint64_t& scheduledCommands,
+                               uint64_t& processedCommands) ORTHANC_OVERRIDE
+    {
+      scheduledCommands = that_.scheduler_->GetTotalScheduled();
+      processedCommands = that_.scheduler_->GetTotalProcessed();
+    }
+  };
+
+
+  void GenericLoadersContext::EmitMessage(boost::weak_ptr<IObserver> observer,
+                                          const IMessage& message)
+  {
+    boost::recursive_mutex::scoped_lock lock(mutex_);
+    //LOG(INFO) << "  inside emit lock: " << message.GetIdentifier().AsString();
+    oracleObservable_.EmitMessage(observer, message);
+    //LOG(INFO) << "  outside emit lock";
+  }
+
+
+  GenericLoadersContext::GenericLoadersContext(unsigned int maxHighPriority,
+                                               unsigned int maxStandardPriority,
+                                               unsigned int maxLowPriority)
+  {
+    oracle_.reset(new ThreadedOracle(*this));
+    scheduler_ = OracleScheduler::Create(*oracle_, oracleObservable_, *this,
+                                         maxHighPriority, maxStandardPriority, maxLowPriority);
+
+    if (!scheduler_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+  GenericLoadersContext::~GenericLoadersContext()
+  {
+    LOG(INFO) << "scheduled commands: " << scheduler_->GetTotalScheduled()
+                 << ", processed commands: " << scheduler_->GetTotalProcessed();
+    scheduler_.reset();
+    //LOG(INFO) << "counter: " << scheduler_.use_count();
+  }
+
+  
+  void GenericLoadersContext::SetOrthancParameters(const Orthanc::WebServiceParameters& parameters)
+  {
+    boost::recursive_mutex::scoped_lock lock(mutex_);
+    oracle_->SetOrthancParameters(parameters);
+  }
+
+  
+  void GenericLoadersContext::SetRootDirectory(const std::string& root)
+  {
+    boost::recursive_mutex::scoped_lock lock(mutex_);
+    oracle_->SetRootDirectory(root);
+  }
+
+  
+  void GenericLoadersContext::SetDicomCacheSize(size_t size)
+  {
+    boost::recursive_mutex::scoped_lock lock(mutex_);
+    oracle_->SetDicomCacheSize(size);
+  }
+
+  
+  void GenericLoadersContext::StartOracle()
+  {
+    boost::recursive_mutex::scoped_lock lock(mutex_);
+    oracle_->Start();
+    //LOG(INFO) << "STARTED ORACLE";
+  }
+
+  
+  void GenericLoadersContext::StopOracle()
+  {
+    /**
+     * DON'T lock "mutex_" here, otherwise Stone won't be able to
+     * stop if one command being executed by the oracle has to emit
+     * a message (method "EmitMessage()" would have to lock the
+     * mutex too).
+     **/
+      
+    //LOG(INFO) << "STOPPING ORACLE";
+    oracle_->Stop();
+    //LOG(INFO) << "STOPPED ORACLE";
+  }
+
+  
+  void GenericLoadersContext::WaitUntilComplete()
+  {
+    for (;;)
+    {
+      {
+        boost::recursive_mutex::scoped_lock lock(mutex_);
+        if (scheduler_ &&
+            scheduler_->GetTotalScheduled() == scheduler_->GetTotalProcessed())
+        {
+          return;
+        }
+      }
+
+      boost::this_thread::sleep(boost::posix_time::milliseconds(100));
+    }
+  }
+   
+  ILoadersContext::ILock* GenericLoadersContext::Lock()
+  {
+    return new Locker(*this);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/GenericLoadersContext.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,78 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "../Messages/IMessageEmitter.h"
+#include "../Oracle/ThreadedOracle.h"
+#include "ILoadersContext.h"
+#include "DicomSource.h"
+#include "OracleScheduler.h"
+
+#include <boost/thread/recursive_mutex.hpp>
+
+namespace OrthancStone
+{
+  class GenericLoadersContext : 
+    public ILoadersContext,
+    private IMessageEmitter
+  {
+  private:
+    class Locker;
+
+    // "Recursive mutex" is necessary, to be able to run
+    // "ILoaderFactory" from a message handler triggered by
+    // "EmitMessage()"
+    boost::recursive_mutex  mutex_;
+
+    IObservable                         oracleObservable_;
+    std::unique_ptr<ThreadedOracle>     oracle_;
+    boost::shared_ptr<OracleScheduler>  scheduler_;
+
+    // Necessary to keep the loaders persistent (including global
+    // function promises), after the function that created them is
+    // left. This avoids creating one global variable for each loader.
+    std::list< boost::shared_ptr<IObserver> >  loaders_; 
+
+    virtual void EmitMessage(boost::weak_ptr<IObserver> observer,
+                             const IMessage& message) ORTHANC_OVERRIDE;
+
+  public:
+    GenericLoadersContext(unsigned int maxHighPriority,
+                          unsigned int maxStandardPriority,
+                          unsigned int maxLowPriority);
+
+    virtual ~GenericLoadersContext();
+   
+    virtual ILock* Lock() ORTHANC_OVERRIDE;
+
+    void SetOrthancParameters(const Orthanc::WebServiceParameters& parameters);
+
+    void SetRootDirectory(const std::string& root);
+    
+    void SetDicomCacheSize(size_t size);
+
+    void StartOracle();
+
+    void StopOracle();
+
+    void WaitUntilComplete();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/IFetchingItemsSorter.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/noncopyable.hpp>
+#include <vector>
+
+namespace OrthancStone
+{
+  class IFetchingItemsSorter : public boost::noncopyable
+  {
+  public:
+    class IFactory : public boost::noncopyable
+    {
+    public:
+      virtual ~IFactory()
+      {
+      }
+
+      virtual IFetchingItemsSorter* CreateSorter(unsigned int itemsCount) const = 0;
+    };
+
+    virtual ~IFetchingItemsSorter()
+    {
+    }
+
+    virtual unsigned int GetItemsCount() const = 0;
+
+    // Sort a set of items given the current item
+    virtual void Sort(std::vector<unsigned int>& target,
+                      unsigned int current) = 0;
+  };
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/IFetchingStrategy.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,49 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/noncopyable.hpp>
+
+namespace OrthancStone
+{
+  class IFetchingStrategy : public boost::noncopyable
+  {
+  public:
+    virtual ~IFetchingStrategy()
+    {
+    }
+
+    virtual unsigned int GetItemsCount() const = 0;
+
+    virtual unsigned int GetMaxQuality() const = 0;
+
+    virtual bool GetNext(unsigned int& item,
+                         unsigned int& quality) = 0;
+
+    virtual void SetCurrent(unsigned int item) = 0;
+
+    // Ask the strategy to re-schedule the item with the lowest
+    // priority in the fetching order. This allows to know which item
+    // should be dropped from a cache.
+    virtual void RecycleFurthest(unsigned int& item) = 0;
+  };
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/ILoaderFactory.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,41 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ILoadersContext.h"
+
+namespace OrthancStone
+{
+  class ILoaderFactory : public boost::noncopyable
+  {
+  public:
+    virtual ~ILoaderFactory()
+    {
+    }
+
+    /**
+     * Factory function that creates a new loader, to be used by the
+     * Stone loaders context.
+     **/
+    virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& context) = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/ILoadersContext.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,126 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IObserver.h"
+#include "../Messages/IObservable.h"
+#include "../Oracle/IOracleCommand.h"
+
+#include <boost/shared_ptr.hpp>
+
+namespace OrthancStone
+{
+  class ILoadersContext : public boost::noncopyable
+  {
+  public:
+    class ILock : public boost::noncopyable
+    {
+    public:
+      virtual ~ILock()
+      {
+      }
+
+      /**
+       * This method is useful for loaders that must be able to
+       * re-lock the Stone loaders context in the future (for instance
+       * to schedule new commands once some command is processed).
+       **/
+      virtual ILoadersContext& GetContext() const = 0;
+
+      /**
+       * Get a reference to the observable against which a loader must
+       * listen to be informed of messages issued by the oracle once
+       * some command is processed.
+       **/
+      virtual IObservable& GetOracleObservable() const = 0;
+
+      /**
+       * Schedule a new command for further processing by the
+       * oracle. The "receiver" argument indicates to which object the
+       * notification messages are sent by the oracle upon completion
+       * of the command. The command is possibly not directly sent to
+       * the oracle: Instead, an internal "OracleScheduler" object is
+       * often used as a priority queue to rule the order in which
+       * commands are actually sent to the oracle. Hence the
+       * "priority" argument (commands with lower value are executed
+       * first).
+       **/
+      virtual void Schedule(boost::shared_ptr<IObserver> receiver,
+                            int priority,
+                            IOracleCommand* command /* Takes ownership */) = 0;
+
+      /**
+       * Cancel all the commands that are waiting in the
+       * "OracleScheduler" queue and that are linked to the given
+       * receiver (i.e. the observer that was specified at the time
+       * method "Schedule()" was called). This is useful for real-time
+       * processing, as it allows to replace commands that were
+       * scheduled in the past by more urgent commands.
+       *
+       * Note that this call does not affect commands that would have
+       * already be sent to the oracle. As a consequence, the receiver
+       * might still receive messages that were sent to the oracle
+       * before the cancellation (be prepared to handle such
+       * messages).
+       **/
+      virtual void CancelRequests(boost::shared_ptr<IObserver> receiver) = 0;
+
+      /**
+       * Same as "CancelRequests()", but targets all the receivers.
+       **/
+      virtual void CancelAllRequests() = 0;
+
+      /**
+       * Add a reference to the given observer in the Stone loaders
+       * context. This can be used to match the lifetime of a loader
+       * with the lifetime of the Stone context: This is useful if
+       * your Stone application does not keep a reference to the
+       * loader by itself (typically in global promises), which would
+       * make the loader disappear as soon as the scope of the
+       * variable is left.
+       **/
+      virtual void AddLoader(boost::shared_ptr<IObserver> loader) = 0;
+
+      /**
+       * Returns the number of commands that were scheduled and
+       * processed using the "Schedule()" method. By "processed"
+       * commands, we refer to the number of commands that were either
+       * executed by the oracle, or canceled by the user. So the
+       * counting sequences are monotonically increasing over time.
+       **/
+      virtual void GetStatistics(uint64_t& scheduledCommands,
+                                 uint64_t& processedCommands) = 0;
+    };
+
+    virtual ~ILoadersContext()
+    {
+    }
+
+    /**
+     * Locks the Stone loaders context, to give access to its
+     * underlying features. This is important for Stone applications
+     * running in a multi-threaded environment, for which a global
+     * mutex is locked.
+     **/
+    virtual ILock* Lock() = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/LoadedDicomResources.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,233 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "LoadedDicomResources.h"
+
+#include <OrthancException.h>
+
+#include <cassert>
+
+
+namespace OrthancStone
+{
+  void LoadedDicomResources::Flatten()
+  {
+    // Lazy generation of a "std::vector" from the "std::map"
+    if (flattened_.empty())
+    {
+      flattened_.resize(resources_.size());
+
+      size_t pos = 0;
+      for (Resources::const_iterator it = resources_.begin(); it != resources_.end(); ++it)
+      {
+        assert(it->second != NULL);
+        flattened_[pos++] = it->second;
+      }
+    }
+    else
+    {
+      // No need to flatten
+      assert(flattened_.size() == resources_.size());
+    }
+  }
+
+
+  void LoadedDicomResources::AddFromDicomWebInternal(const Json::Value& dicomweb)
+  {
+    assert(dicomweb.type() == Json::objectValue);
+    Orthanc::DicomMap dicom;
+    dicom.FromDicomWeb(dicomweb);
+    AddResource(dicom);
+  }
+
+  
+  LoadedDicomResources::LoadedDicomResources(const LoadedDicomResources& other,
+                                             const Orthanc::DicomTag& indexedTag) :
+    indexedTag_(indexedTag)
+  {
+    for (Resources::const_iterator it = other.resources_.begin();
+         it != other.resources_.end(); ++it)
+    {
+      assert(it->second != NULL);
+      AddResource(*it->second);
+    }
+  }
+
+  void LoadedDicomResources::Clear()
+  {
+    for (Resources::iterator it = resources_.begin(); it != resources_.end(); ++it)
+    {
+      assert(it->second != NULL);
+      delete it->second;
+    }
+
+    resources_.clear();
+    flattened_.clear();
+  }
+
+
+  Orthanc::DicomMap& LoadedDicomResources::GetResource(size_t index)
+  {
+    Flatten();
+
+    if (index >= flattened_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      assert(flattened_[index] != NULL);
+      return *flattened_[index];
+    }
+  }
+
+
+  void LoadedDicomResources::MergeResource(Orthanc::DicomMap& target,
+                                           const std::string& id) const
+  {
+    Resources::const_iterator it = resources_.find(id);
+    
+    if (it == resources_.end())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem);
+    }
+    else
+    {
+      assert(it->second != NULL);
+      target.Merge(*it->second);
+    }
+  }
+  
+
+  bool LoadedDicomResources::LookupStringValue(std::string& target,
+                                               const std::string& id,
+                                               const Orthanc::DicomTag& tag) const
+  {
+    Resources::const_iterator found = resources_.find(id);
+
+    if (found == resources_.end())
+    {
+      return false;
+    }
+    else
+    {
+      assert(found->second != NULL);
+      return found->second->LookupStringValue(target, tag, false);
+    }  
+  }
+
+  
+  void LoadedDicomResources::AddResource(const Orthanc::DicomMap& dicom)
+  {
+    std::string id;
+    
+    if (dicom.LookupStringValue(id, indexedTag_, false /* no binary value */) &&
+        resources_.find(id) == resources_.end() /* Don't index twice the same resource */)
+    {
+      resources_[id] = dicom.Clone();
+      flattened_.clear();   // Invalidate the flattened version 
+    }
+  }
+
+
+  void LoadedDicomResources::AddFromOrthanc(const Json::Value& tags)
+  {
+    Orthanc::DicomMap dicom;
+    dicom.FromDicomAsJson(tags);
+    AddResource(dicom);
+  }
+
+
+  void LoadedDicomResources::AddFromDicomWeb(const Json::Value& dicomweb)
+  {
+    if (dicomweb.type() == Json::objectValue)
+    {
+      AddFromDicomWebInternal(dicomweb);
+    }
+    else if (dicomweb.type() == Json::arrayValue)
+    {
+      for (Json::Value::ArrayIndex i = 0; i < dicomweb.size(); i++)
+      {
+        if (dicomweb[i].type() == Json::objectValue)
+        {
+          AddFromDicomWebInternal(dicomweb[i]);
+        }
+        else
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+        }
+      }
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+    }
+  }
+
+
+  bool LoadedDicomResources::LookupTagValueConsensus(std::string& target,
+                                                     const Orthanc::DicomTag& tag) const
+  {
+    typedef std::map<std::string, unsigned int>  Counter;
+
+    Counter counter;
+
+    for (Resources::const_iterator it = resources_.begin(); it != resources_.end(); ++it)
+    {
+      assert(it->second != NULL);
+      
+      std::string value;
+      if (it->second->LookupStringValue(value, tag, false))
+      {
+        Counter::iterator found = counter.find(value);
+        if (found == counter.end())
+        {
+          counter[value] = 1;
+        }
+        else
+        {
+          found->second ++;
+        }
+      }
+    }
+
+    Counter::const_iterator best = counter.end();
+    
+    for (Counter::const_iterator it = counter.begin(); it != counter.end(); ++it)
+    {
+      if (best == counter.end() ||
+          best->second < it->second)
+      {
+        best = it;
+      }
+    }
+
+    if (best == counter.end())
+    {
+      return false;
+    }
+    else
+    {
+      target = best->first;
+      return true;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/LoadedDicomResources.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,96 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <DicomFormat/DicomMap.h>
+
+
+namespace OrthancStone
+{
+  /**
+    Stores an indexed collection of DicomMap objects. The index is a 
+    user-specified DicomTag.
+  */
+  class LoadedDicomResources : public boost::noncopyable
+  {
+  private:
+    typedef std::map<std::string, Orthanc::DicomMap*>  Resources;
+
+    Orthanc::DicomTag                indexedTag_;
+    Resources                        resources_;
+    std::vector<Orthanc::DicomMap*>  flattened_;
+
+    void Flatten();
+
+    void AddFromDicomWebInternal(const Json::Value& dicomweb);
+
+  public:
+    LoadedDicomResources(const Orthanc::DicomTag& indexedTag) :
+      indexedTag_(indexedTag)
+    {
+    }
+
+    // Re-index another set of resources using another tag
+    LoadedDicomResources(const LoadedDicomResources& other,
+                         const Orthanc::DicomTag& indexedTag);
+
+    ~LoadedDicomResources()
+    {
+      Clear();
+    }
+
+    const Orthanc::DicomTag& GetIndexedTag() const
+    {
+      return indexedTag_;
+    }
+  
+    void Clear();
+
+    size_t GetSize() const
+    {
+      return resources_.size();
+    }
+
+    Orthanc::DicomMap& GetResource(size_t index);
+
+    bool HasResource(const std::string& id) const
+    {
+      return resources_.find(id) != resources_.end();
+    }
+
+    void MergeResource(Orthanc::DicomMap& target,
+                       const std::string& id) const;
+  
+    bool LookupStringValue(std::string& target,
+                           const std::string& id,
+                           const Orthanc::DicomTag& tag) const;
+
+    void AddResource(const Orthanc::DicomMap& dicom);
+
+    void AddFromOrthanc(const Json::Value& tags);
+  
+    void AddFromDicomWeb(const Json::Value& dicomweb);
+
+    bool LookupTagValueConsensus(std::string& target,
+                                 const Orthanc::DicomTag& tag) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/LoaderCache.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,270 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "LoaderCache.h"
+
+#include "../StoneException.h"
+#include "OrthancSeriesVolumeProgressiveLoader.h"
+#include "OrthancMultiframeVolumeLoader.h"
+#include "DicomStructureSetLoader.h"
+
+#include "../Loaders/ILoadersContext.h"
+
+#if ORTHANC_ENABLE_WASM == 1
+# include <unistd.h>
+# include "../Oracle/WebAssemblyOracle.h"
+#else
+# include "../Oracle/ThreadedOracle.h"
+#endif
+
+#include "../Volumes/DicomVolumeImage.h"
+#include "../Volumes/DicomVolumeImageMPRSlicer.h"
+
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+namespace OrthancStone
+{
+  LoaderCache::LoaderCache(OrthancStone::ILoadersContext& loadersContext, bool useCtProgressiveQuality)
+    : loadersContext_(loadersContext)
+    , useCtProgressiveQuality_(useCtProgressiveQuality)
+
+  {
+
+  }
+
+  boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> 
+    LoaderCache::GetSeriesVolumeProgressiveLoader(std::string seriesUuid)
+  {
+    try
+    {
+      // normalize keys a little
+      NormalizeUuid(seriesUuid);
+
+      // find in cache
+      if (seriesVolumeProgressiveLoaders_.find(seriesUuid) == seriesVolumeProgressiveLoaders_.end())
+      {
+        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
+
+        boost::shared_ptr<OrthancStone::DicomVolumeImage> volumeImage(new OrthancStone::DicomVolumeImage);
+        boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> loader;
+      
+        // true means "use progressive quality"
+        // false means "load high quality slices only"
+        loader = OrthancSeriesVolumeProgressiveLoader::Create(loadersContext_, volumeImage, useCtProgressiveQuality_);
+        loader->LoadSeries(seriesUuid);
+        seriesVolumeProgressiveLoaders_[seriesUuid] = loader;
+      }
+      else
+      {
+//        LOG(TRACE) << "LoaderCache::GetSeriesVolumeProgressiveLoader : returning cached loader for seriesUUid = " << seriesUuid;
+      }
+      return seriesVolumeProgressiveLoaders_[seriesUuid];
+    }
+    catch (const Orthanc::OrthancException& e)
+    {
+      if (e.HasDetails())
+      {
+        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What() << " Details: " << e.GetDetails();
+      }
+      else
+      {
+        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What();
+      }
+      throw;
+    }
+    catch (const std::exception& e)
+    {
+      LOG(ERROR) << "std::exception in LoaderCache: " << e.what();
+      throw;
+    }
+    catch (...)
+    {
+      LOG(ERROR) << "Unknown exception in LoaderCache";
+      throw;
+    }
+  }
+
+  boost::shared_ptr<OrthancMultiframeVolumeLoader> LoaderCache::GetMultiframeVolumeLoader(std::string instanceUuid)
+  {
+    // normalize keys a little
+    NormalizeUuid(instanceUuid);
+
+    // if the loader is not available, let's trigger its creation
+    if(multiframeVolumeLoaders_.find(instanceUuid) == multiframeVolumeLoaders_.end())
+    {
+      GetMultiframeDicomVolumeImageMPRSlicer(instanceUuid);
+    }
+    ORTHANC_ASSERT(multiframeVolumeLoaders_.find(instanceUuid) != multiframeVolumeLoaders_.end());
+
+    return multiframeVolumeLoaders_[instanceUuid];
+  }
+
+  boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer> LoaderCache::GetMultiframeDicomVolumeImageMPRSlicer(std::string instanceUuid)
+  {
+    try
+    {
+      // normalize keys a little
+      NormalizeUuid(instanceUuid);
+
+      // find in cache
+      if (dicomVolumeImageMPRSlicers_.find(instanceUuid) == dicomVolumeImageMPRSlicers_.end())
+      {
+        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
+        boost::shared_ptr<OrthancStone::DicomVolumeImage> volumeImage(new OrthancStone::DicomVolumeImage);
+        boost::shared_ptr<OrthancMultiframeVolumeLoader> loader;
+        {
+          loader = OrthancMultiframeVolumeLoader::Create(loadersContext_, volumeImage);
+          loader->LoadInstance(instanceUuid);
+        }
+        multiframeVolumeLoaders_[instanceUuid] = loader;
+        boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer> mprSlicer(new OrthancStone::DicomVolumeImageMPRSlicer(volumeImage));
+        dicomVolumeImageMPRSlicers_[instanceUuid] = mprSlicer;
+      }
+      return dicomVolumeImageMPRSlicers_[instanceUuid];
+    }
+    catch (const Orthanc::OrthancException& e)
+    {
+      if (e.HasDetails())
+      {
+        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What() << " Details: " << e.GetDetails();
+      }
+      else
+      {
+        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What();
+      }
+      throw;
+    }
+    catch (const std::exception& e)
+    {
+      LOG(ERROR) << "std::exception in LoaderCache: " << e.what();
+      throw;
+    }
+    catch (...)
+    {
+      LOG(ERROR) << "Unknown exception in LoaderCache";
+      throw;
+    }
+  }
+  
+  std::string LoaderCache::BuildDicomStructureSetLoaderKey(
+    const std::string& instanceUuid,
+    const std::string& uniqueKey)
+  {
+    return instanceUuid + "_" + uniqueKey;
+  }
+
+  boost::shared_ptr<DicomStructureSetLoader> LoaderCache::GetDicomStructureSetLoader(
+      std::string inInstanceUuid, 
+      const std::vector<std::string>& initiallyVisibleStructures,
+      const std::string& uniqueKey)
+  {
+    try
+    {
+      // normalize keys a little
+      NormalizeUuid(inInstanceUuid);
+
+      std::string entryKey = BuildDicomStructureSetLoaderKey(inInstanceUuid, uniqueKey);
+
+      // find in cache
+      if (dicomStructureSetLoaders_.find(entryKey) == dicomStructureSetLoaders_.end())
+      {
+        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
+
+        boost::shared_ptr<DicomStructureSetLoader> loader;
+        {
+          loader = DicomStructureSetLoader::Create(loadersContext_);
+          loader->LoadInstance(inInstanceUuid, initiallyVisibleStructures);
+        }
+        dicomStructureSetLoaders_[entryKey] = loader;
+      }
+      return dicomStructureSetLoaders_[entryKey];
+    }
+    catch (const Orthanc::OrthancException& e)
+    {
+      if (e.HasDetails())
+      {
+        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What() << " Details: " << e.GetDetails();
+      }
+      else
+      {
+        LOG(ERROR) << "OrthancException in LoaderCache: " << e.What();
+      }
+      throw;
+    }
+    catch (const std::exception& e)
+    {
+      LOG(ERROR) << "std::exception in LoaderCache: " << e.what();
+      throw;
+    }
+    catch (...)
+    {
+      LOG(ERROR) << "Unknown exception in LoaderCache";
+      throw;
+    }
+  }
+
+  void LoaderCache::ClearCache()
+  {
+    std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
+    
+#ifndef NDEBUG
+    // ISO way of checking for debug builds
+    DebugDisplayObjRefCounts();
+#endif
+    seriesVolumeProgressiveLoaders_.clear();
+    multiframeVolumeLoaders_.clear();
+    dicomVolumeImageMPRSlicers_.clear();
+    dicomStructureSetLoaders_.clear();
+
+  }
+
+  template<typename T> void DebugDisplayObjRefCountsInMap(
+    const std::string& name, const std::map<std::string, boost::shared_ptr<T> >& myMap)
+  {
+    LOG(TRACE) << "Map \"" << name << "\" ref counts:";
+    size_t i = 0;
+    for (typename std::map<std::string, boost::shared_ptr<T> >::const_iterator 
+           it = myMap.begin(); it != myMap.end(); ++it)
+    {
+      LOG(TRACE) << "  element #" << i << ": ref count = " << it->second.use_count();
+      i++;
+    }
+  }
+
+  void LoaderCache::DebugDisplayObjRefCounts()
+  {
+    DebugDisplayObjRefCountsInMap("seriesVolumeProgressiveLoaders_", seriesVolumeProgressiveLoaders_);
+    DebugDisplayObjRefCountsInMap("multiframeVolumeLoaders_", multiframeVolumeLoaders_);
+    DebugDisplayObjRefCountsInMap("dicomVolumeImageMPRSlicers_", dicomVolumeImageMPRSlicers_);
+    DebugDisplayObjRefCountsInMap("dicomStructureSetLoaders_", dicomStructureSetLoaders_);
+  }
+
+  /**
+  This method could have been called StripSpacesAndChangeToLower but we might want to 
+  add some UUID validation to the argument
+  */
+  void LoaderCache::NormalizeUuid(std::string& uuid)
+  {
+    std::string temp = Orthanc::Toolbox::StripSpaces(uuid);
+    Orthanc::Toolbox::ToLowerCase(temp);
+    uuid.swap(temp);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/LoaderCache.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,106 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "../Volumes/DicomVolumeImageMPRSlicer.h"
+#include "OrthancSeriesVolumeProgressiveLoader.h"
+#include "OrthancMultiframeVolumeLoader.h"
+#include "DicomStructureSetLoader.h"
+
+#include <boost/shared_ptr.hpp>
+
+#include <map>
+#include <string>
+#include <vector>
+
+namespace OrthancStone
+{
+  class ILoadersContext;
+}
+
+namespace OrthancStone
+{
+  class LoaderCache
+  {
+  public:
+
+    virtual ~LoaderCache() {}
+
+    /**
+    By default, the CT loader in loader cache will only download the highest quality slices.
+    If you pass true for useCtProgressiveQuality, jpeg (50/100 quality), then jpeg (90/100 quality) 
+    then eventually uncompressed 16-bit images will be loaded. 
+    */
+    LoaderCache(OrthancStone::ILoadersContext& loadersContext, bool useCtProgressiveQuality = false);
+
+    boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader>
+      GetSeriesVolumeProgressiveLoader      (std::string seriesUuid);
+    
+    boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer>
+      GetMultiframeDicomVolumeImageMPRSlicer(std::string instanceUuid);
+
+    boost::shared_ptr<OrthancMultiframeVolumeLoader>
+      GetMultiframeVolumeLoader(std::string instanceUuid);
+
+    /**
+    The DicomStructureSetLoader instances are stored in a map and indexed
+    by a key built from instanceUuid and uniqueKey.
+
+    If instanceUuid and uniqueKey correspond to an already existing loader, it is returned.
+
+    Please note that initiallyVisibleStructures is only used if the call results in the creation
+    of a new loader. In that case, the value is passed to the constructor.
+    */
+    boost::shared_ptr<DicomStructureSetLoader>
+      GetDicomStructureSetLoader(
+        std::string instanceUuid,
+        const std::vector<std::string>& initiallyVisibleStructures,
+        const std::string& uniqueKey = "");
+
+    std::string BuildDicomStructureSetLoaderKey(
+        const std::string& instanceUuid,
+        const std::string& uniqueKey = "");
+
+    void ClearCache();
+
+    /**
+    Service method static and exposed for unit tests.
+    */
+    static void NormalizeUuid(std::string& uuid);
+
+  protected:
+    
+    void DebugDisplayObjRefCounts();
+
+    OrthancStone::ILoadersContext& loadersContext_;
+    bool                           useCtProgressiveQuality_;
+
+    std::map<std::string, boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> >
+      seriesVolumeProgressiveLoaders_;
+    std::map<std::string, boost::shared_ptr<OrthancMultiframeVolumeLoader> >
+      multiframeVolumeLoaders_;
+    std::map<std::string, boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer> >
+      dicomVolumeImageMPRSlicers_;
+    std::map<std::string, boost::shared_ptr<DicomStructureSetLoader> >
+      dicomStructureSetLoaders_;
+  };
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/LoaderStateMachine.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,219 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "LoaderStateMachine.h"
+
+#include "../Loaders/ILoadersContext.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  void LoaderStateMachine::State::Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+  }
+      
+
+  void LoaderStateMachine::State::Handle(const OrthancStone::GetOrthancImageCommand::SuccessMessage& message)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+  }
+
+      
+  void LoaderStateMachine::State::Handle(const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message)
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+  }
+
+
+  void LoaderStateMachine::Schedule(OrthancStone::OracleCommandBase* command)
+  {
+    LOG(TRACE) << "LoaderStateMachine(" << std::hex << this << std::dec << ")::Schedule()";
+
+    std::unique_ptr<OrthancStone::OracleCommandBase> protection(command);
+
+    if (command == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+      
+    if (!command->HasPayload())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange,
+                                      "The payload must contain the next state");
+    }
+    pendingCommands_.push_back(protection.release());
+
+    Step();
+  }
+
+
+  void LoaderStateMachine::Start()
+  {
+    LOG(TRACE) << "LoaderStateMachine(" << std::hex << this << std::dec << ")::Start()";
+
+    if (active_)
+    {
+      LOG(TRACE) << "LoaderStateMachine::Start() called while active_ is true";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    active_ = true;
+
+    for (size_t i = 0; i < simultaneousDownloads_; i++)
+    {
+      Step();
+    }
+  }
+
+
+  void LoaderStateMachine::Step()
+  {
+    if (!pendingCommands_.empty() &&
+        activeCommands_ < simultaneousDownloads_)
+    {
+
+      OrthancStone::IOracleCommand* nextCommand = pendingCommands_.front();
+
+      LOG(TRACE) << "    LoaderStateMachine(" << std::hex << this << std::dec << 
+        ")::Step(): activeCommands_ (" << activeCommands_ << 
+        ") < simultaneousDownloads_ (" << simultaneousDownloads_ << 
+        ") --> will Schedule command addr " << std::hex << nextCommand << std::dec;
+
+      {
+        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
+        boost::shared_ptr<IObserver> observer(GetSharedObserver());
+        lock->Schedule(observer, 0, nextCommand); // TODO: priority!
+      }
+      pendingCommands_.pop_front();
+
+      activeCommands_++;
+    }
+    else
+    {
+      LOG(TRACE) << "    LoaderStateMachine(" << std::hex << this << std::dec << 
+        ")::Step(): activeCommands_ (" << activeCommands_ << 
+        ") >= simultaneousDownloads_ (" << simultaneousDownloads_ << 
+        ") --> will NOT Schedule command";
+    }
+  }
+
+
+  void LoaderStateMachine::Clear()
+  {
+    LOG(TRACE) << "LoaderStateMachine(" << std::hex << this << std::dec << ")::Clear()";
+    for (PendingCommands::iterator it = pendingCommands_.begin();
+         it != pendingCommands_.end(); ++it)
+    {
+      delete *it;
+    }
+
+    pendingCommands_.clear();
+  }
+  
+
+  void LoaderStateMachine::HandleExceptionMessage(const OrthancStone::OracleCommandExceptionMessage& message)
+  {
+    LOG(ERROR) << "LoaderStateMachine::HandleExceptionMessage: error in the state machine, stopping all processing";
+    LOG(ERROR) << "Error: " << message.GetException().What() << " Details: " <<
+      message.GetException().GetDetails();
+      Clear();
+  }
+
+  template <typename T>
+  void LoaderStateMachine::HandleSuccessMessage(const T& message)
+  {
+    if (activeCommands_ <= 0) {
+      LOG(ERROR) << "LoaderStateMachine(" << std::hex << this << std::dec << ")::HandleSuccessMessage : activeCommands_ should be > 0 but is: " << activeCommands_;
+    }
+    else {
+      activeCommands_--;
+      try
+      {
+        dynamic_cast<State&>(message.GetOrigin().GetPayload()).Handle(message);
+        Step();
+      }
+      catch (Orthanc::OrthancException& e)
+      {
+        LOG(ERROR) << "Error in the state machine, stopping all processing: " <<
+          e.What() << " Details: " << e.GetDetails();
+        Clear();
+      }
+    }
+  }
+
+
+  LoaderStateMachine::LoaderStateMachine(
+    OrthancStone::ILoadersContext& loadersContext)
+    : loadersContext_(loadersContext)
+    , active_(false)
+    , simultaneousDownloads_(4)
+    , activeCommands_(0)
+  {
+    using OrthancStone::ILoadersContext;
+
+    LOG(TRACE) 
+      << "LoaderStateMachine(" << std::hex << this 
+      << std::dec << ")::LoaderStateMachine()";
+  }
+
+  void LoaderStateMachine::PostConstructor()
+  {
+    std::unique_ptr<OrthancStone::ILoadersContext::ILock>
+      lock(loadersContext_.Lock());
+
+    OrthancStone::IObservable& observable = lock->GetOracleObservable();
+
+    // TODO => Move this out of constructor
+    Register<OrthancStone::OrthancRestApiCommand::SuccessMessage>(
+      observable, &LoaderStateMachine::HandleSuccessMessage);
+    Register<OrthancStone::GetOrthancImageCommand::SuccessMessage>(
+      observable, &LoaderStateMachine::HandleSuccessMessage);
+    Register<OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage>(
+      observable, &LoaderStateMachine::HandleSuccessMessage);
+    Register<OrthancStone::OracleCommandExceptionMessage>(
+      observable, &LoaderStateMachine::HandleExceptionMessage);
+  }
+
+  LoaderStateMachine::~LoaderStateMachine()
+  {
+    LOG(TRACE) << "LoaderStateMachine(" << std::hex << this << std::dec << ")::~LoaderStateMachine()";
+    Clear();
+  }
+
+  void LoaderStateMachine::SetSimultaneousDownloads(unsigned int count)
+  {
+    if (active_)
+    {
+      LOG(ERROR) << "LoaderStateMachine::SetSimultaneousDownloads called while active_ is true";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else if (count == 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);        
+    }
+    else
+    {
+      simultaneousDownloads_ = count;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/LoaderStateMachine.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,126 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IObservable.h"
+#include "../Messages/ObserverBase.h"
+#include "../Oracle/GetOrthancImageCommand.h"
+#include "../Oracle/GetOrthancWebViewerJpegCommand.h"
+#include "../Oracle/IOracle.h"
+#include "../Oracle/OracleCommandExceptionMessage.h"
+#include "../Oracle/OrthancRestApiCommand.h"
+
+#include <IDynamicObject.h>
+
+#include <list>
+
+namespace OrthancStone
+{
+  class ILoadersContext;
+
+  /**
+     This class is supplied with Oracle commands and will schedule up to 
+     simultaneousDownloads_ of them at the same time, then will schedule the 
+     rest once slots become available. It is used, a.o., by the 
+     OrtancMultiframeVolumeLoader class.
+
+     To use it, you need to create commands that derive from State.
+
+     You need to initialize them with the object that must be called when 
+     an answer is received. 
+  */
+
+  class LoaderStateMachine : public OrthancStone::ObserverBase<LoaderStateMachine>
+  {
+  public:
+    class State : public Orthanc::IDynamicObject
+    {
+    private:
+      LoaderStateMachine&  that_;
+
+    public:
+      State(LoaderStateMachine& that) :
+      that_(that)
+      {
+      }
+
+      State(const State& currentState) :
+      that_(currentState.that_)
+      {
+      }
+
+      void Schedule(OrthancStone::OracleCommandBase* command) const
+      {
+        that_.Schedule(command);
+      }
+
+      template <typename T>
+      T& GetLoader() const
+      {
+        return dynamic_cast<T&>(that_);
+      }
+      
+      virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message);
+      
+      virtual void Handle(const OrthancStone::GetOrthancImageCommand::SuccessMessage& message);
+      
+      virtual void Handle(const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message);
+    };
+
+    void Schedule(OrthancStone::OracleCommandBase* command);
+
+    void Start();
+
+  private:
+    void Step();
+
+    void Clear();
+
+    void HandleExceptionMessage(const OrthancStone::OracleCommandExceptionMessage& message);
+
+    template <typename T>
+    void HandleSuccessMessage(const T& message);
+
+    typedef std::list<OrthancStone::IOracleCommand*>  PendingCommands;
+
+    OrthancStone::ILoadersContext&  loadersContext_;
+    bool                            active_;
+    unsigned int                    simultaneousDownloads_;
+    PendingCommands                 pendingCommands_;
+    unsigned int                    activeCommands_;
+
+
+  public:
+    LoaderStateMachine(OrthancStone::ILoadersContext& loadersContext);
+
+    void PostConstructor();
+
+    virtual ~LoaderStateMachine();
+
+    bool IsActive() const
+    {
+      return active_;
+    }
+
+    void SetSimultaneousDownloads(unsigned int count);  
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/OracleScheduler.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,557 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OracleScheduler.h"
+
+#include "../Oracle/ParseDicomFromFileCommand.h"
+
+namespace OrthancStone
+{
+  class OracleScheduler::ReceiverPayload : public Orthanc::IDynamicObject
+  {
+  private:
+    Priority   priority_;
+    boost::weak_ptr<IObserver>  receiver_;
+    std::unique_ptr<IOracleCommand>  command_;
+
+  public:
+    ReceiverPayload(Priority priority,
+                    boost::weak_ptr<IObserver> receiver,
+                    IOracleCommand* command) :
+      priority_(priority),
+      receiver_(receiver),
+      command_(command)
+    {
+      if (command == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    Priority GetActivePriority() const
+    {
+      return priority_;
+    }
+
+    boost::weak_ptr<IObserver> GetOriginalReceiver() const
+    {
+      return receiver_;
+    }
+
+    const IOracleCommand& GetOriginalCommand() const
+    {
+      assert(command_.get() != NULL);
+      return *command_;
+    }
+  }; 
+
+
+  class OracleScheduler::ScheduledCommand : public boost::noncopyable
+  {
+  private:
+    boost::weak_ptr<IObserver>     receiver_;
+    std::unique_ptr<IOracleCommand>  command_;
+
+  public:
+    ScheduledCommand(boost::shared_ptr<IObserver> receiver,
+                     IOracleCommand* command) :
+      receiver_(receiver),
+      command_(command)
+    {
+      if (command == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    boost::weak_ptr<IObserver> GetReceiver() 
+    {
+      return receiver_;
+    }
+  
+    bool IsSameReceiver(boost::shared_ptr<OrthancStone::IObserver> receiver) const
+    {
+      boost::shared_ptr<IObserver> lock(receiver_.lock());
+
+      return (lock &&
+              lock.get() == receiver.get());
+    }
+
+    IOracleCommand* WrapCommand(Priority priority)
+    {
+      if (command_.get() == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      else
+      {
+        std::unique_ptr<IOracleCommand> wrapped(command_->Clone());
+        dynamic_cast<OracleCommandBase&>(*wrapped).AcquirePayload(new ReceiverPayload(priority, receiver_, command_.release()));
+        return wrapped.release();
+      }
+    }
+  };
+
+
+
+  void OracleScheduler::ClearQueue(Queue& queue)
+  {
+    for (Queue::iterator it = queue.begin(); it != queue.end(); ++it)
+    {
+      assert(it->second != NULL);
+      delete it->second;
+
+      totalProcessed_ ++;
+    }
+
+    queue.clear();
+  }
+
+  
+  void OracleScheduler::RemoveReceiverFromQueue(Queue& queue,
+                                                boost::shared_ptr<IObserver> receiver)
+  {
+    if (!receiver)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    
+    Queue tmp;
+  
+    for (Queue::iterator it = queue.begin(); it != queue.end(); ++it)
+    {
+      assert(it->second != NULL);
+
+      if (!(it->second->IsSameReceiver(receiver)))
+      {
+        // This promise is still active
+        tmp.insert(std::make_pair(it->first, it->second));
+      }
+      else
+      {
+        delete it->second;
+        
+        totalProcessed_ ++;
+      }
+    }
+
+    queue = tmp;
+  }
+
+  
+  void OracleScheduler::CheckInvariants() const
+  {
+#ifndef NDEBUG
+    /*char buf[1024];
+      sprintf(buf, "active: %d %d %d ; pending: %lu %lu %lu", 
+      activeHighPriorityCommands_, activeStandardPriorityCommands_, activeLowPriorityCommands_,
+      highPriorityQueue_.size(), standardPriorityQueue_.size(), lowPriorityQueue_.size());
+      LOG(INFO) << buf;*/
+  
+    assert(activeHighPriorityCommands_ <= maxHighPriorityCommands_);
+    assert(activeStandardPriorityCommands_ <= maxStandardPriorityCommands_);
+    assert(activeLowPriorityCommands_ <= maxLowPriorityCommands_);
+    assert(totalProcessed_ <= totalScheduled_);
+    
+    for (Queue::const_iterator it = standardPriorityQueue_.begin(); it != standardPriorityQueue_.end(); ++it)
+    {
+      assert(it->first > PRIORITY_HIGH &&
+             it->first < PRIORITY_LOW);
+    }
+
+    for (Queue::const_iterator it = highPriorityQueue_.begin(); it != highPriorityQueue_.end(); ++it)
+    {
+      assert(it->first <= PRIORITY_HIGH);
+    }
+
+    for (Queue::const_iterator it = lowPriorityQueue_.begin(); it != lowPriorityQueue_.end(); ++it)
+    {
+      assert(it->first >= PRIORITY_LOW);
+    }
+#endif
+  }
+
+  
+  void OracleScheduler::SpawnFromQueue(Queue& queue,
+                                       Priority priority)
+  {
+    CheckInvariants();
+
+    Queue::iterator item = queue.begin();
+    assert(item != queue.end());
+
+    std::unique_ptr<ScheduledCommand> command(dynamic_cast<ScheduledCommand*>(item->second));
+    queue.erase(item);
+
+    if (command.get() != NULL)
+    {
+      /**
+       * Only schedule the command for execution in the oracle, if its
+       * receiver has not been destroyed yet.
+       **/
+      boost::shared_ptr<IObserver> observer(command->GetReceiver().lock());
+      if (observer)
+      {
+        if (oracle_.Schedule(GetSharedObserver(), command->WrapCommand(priority)))
+        {
+          /**
+           * Executing this code if "Schedule()" returned "false"
+           * above, will result in a memory leak within
+           * "OracleScheduler", as the scheduler believes that some
+           * command is still active (i.e. pending to be executed by
+           * the oracle), hereby stalling the scheduler during its
+           * destruction, and not freeing the
+           * "shared_ptr<OracleScheduler>" of the Stone context (check
+           * out "sjo-playground/WebViewer/Backend/Leak")
+           **/
+
+          switch (priority)
+          {
+            case Priority_High:
+              activeHighPriorityCommands_ ++;
+              break;
+
+            case Priority_Standard:
+              activeStandardPriorityCommands_ ++;
+              break;
+
+            case Priority_Low:
+              activeLowPriorityCommands_ ++;
+              break;
+
+            default:
+              throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+          }
+        }
+        else
+        {
+          totalProcessed_ ++;
+        }
+      }
+    }
+    else
+    {
+      LOG(ERROR) << "NULL command, should never happen";
+    }
+
+    CheckInvariants();
+  }
+
+  
+  void OracleScheduler::SpawnCommands()
+  {
+    // Send as many commands as possible to the oracle
+    while (!highPriorityQueue_.empty())
+    {
+      if (activeHighPriorityCommands_ < maxHighPriorityCommands_)
+      {
+        // First fill the high-priority lane
+        SpawnFromQueue(highPriorityQueue_, Priority_High);
+      }
+      else if (activeStandardPriorityCommands_ < maxStandardPriorityCommands_)
+      {
+        // There remain too many high-priority commands for the
+        // high-priority lane, schedule them to the standard-priority lanes
+        SpawnFromQueue(highPriorityQueue_, Priority_Standard);
+      }
+      else if (activeLowPriorityCommands_ < maxLowPriorityCommands_)
+      {
+        SpawnFromQueue(highPriorityQueue_, Priority_Low);
+      }
+      else
+      {
+        return;   // No slot available
+      }
+    }
+  
+    while (!standardPriorityQueue_.empty())
+    {
+      if (activeStandardPriorityCommands_ < maxStandardPriorityCommands_)
+      {
+        SpawnFromQueue(standardPriorityQueue_, Priority_Standard);
+      }
+      else if (activeLowPriorityCommands_ < maxLowPriorityCommands_)
+      {
+        SpawnFromQueue(standardPriorityQueue_, Priority_Low);
+      }
+      else
+      {
+        return;
+      }
+    }
+  
+    while (!lowPriorityQueue_.empty())
+    {
+      if (activeLowPriorityCommands_ < maxLowPriorityCommands_)
+      {
+        SpawnFromQueue(lowPriorityQueue_, Priority_Low);
+      }
+      else
+      {
+        return;
+      }
+    }  
+  }
+  
+
+  void OracleScheduler::RemoveActiveCommand(const ReceiverPayload& payload)
+  {
+    CheckInvariants();
+
+    totalProcessed_ ++;
+
+    switch (payload.GetActivePriority())
+    {
+      case Priority_High:
+        assert(activeHighPriorityCommands_ > 0);
+        activeHighPriorityCommands_ --;
+        break;
+
+      case Priority_Standard:
+        assert(activeStandardPriorityCommands_ > 0);
+        activeStandardPriorityCommands_ --;
+        break;
+
+      case Priority_Low:
+        assert(activeLowPriorityCommands_ > 0);
+        activeLowPriorityCommands_ --;
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    SpawnCommands();
+
+    CheckInvariants();
+  }
+
+  
+  void OracleScheduler::Handle(const GetOrthancImageCommand::SuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
+    
+    RemoveActiveCommand(payload);
+
+    GetOrthancImageCommand::SuccessMessage bis(
+      dynamic_cast<const GetOrthancImageCommand&>(payload.GetOriginalCommand()),
+      message.GetImage(), message.GetMimeType());
+    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
+  }
+  
+
+  void OracleScheduler::Handle(const GetOrthancWebViewerJpegCommand::SuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
+    
+    RemoveActiveCommand(payload);
+
+    GetOrthancWebViewerJpegCommand::SuccessMessage bis(
+      dynamic_cast<const GetOrthancWebViewerJpegCommand&>(payload.GetOriginalCommand()),
+      message.GetImage());
+    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
+  }
+
+  
+  void OracleScheduler::Handle(const HttpCommand::SuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
+    
+    RemoveActiveCommand(payload);
+
+    HttpCommand::SuccessMessage bis(
+      dynamic_cast<const HttpCommand&>(payload.GetOriginalCommand()),
+      message.GetAnswerHeaders(), message.GetAnswer());
+    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
+  }
+
+  
+  void OracleScheduler::Handle(const OrthancRestApiCommand::SuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
+    
+    RemoveActiveCommand(payload);
+
+    OrthancRestApiCommand::SuccessMessage bis(
+      dynamic_cast<const OrthancRestApiCommand&>(payload.GetOriginalCommand()),
+      message.GetAnswerHeaders(), message.GetAnswer());
+    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
+  }
+
+  
+#if ORTHANC_ENABLE_DCMTK == 1
+  void OracleScheduler::Handle(const ParseDicomSuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
+    
+    RemoveActiveCommand(payload);
+
+    ParseDicomSuccessMessage bis(
+      dynamic_cast<const OracleCommandBase&>(payload.GetOriginalCommand()),
+      message.GetSource(), message.GetDicom(), message.GetFileSize(), message.HasPixelData());
+    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
+  }
+#endif
+  
+
+  void OracleScheduler::Handle(const ReadFileCommand::SuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(message.GetOrigin().GetPayload());
+    
+    RemoveActiveCommand(payload);
+
+    ReadFileCommand::SuccessMessage bis(
+      dynamic_cast<const ReadFileCommand&>(payload.GetOriginalCommand()),
+      message.GetContent());
+    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
+  }
+  
+
+  void OracleScheduler::Handle(const OracleCommandExceptionMessage& message)
+  {
+    const OracleCommandBase& command = dynamic_cast<const OracleCommandBase&>(message.GetOrigin());
+    
+    assert(command.HasPayload());
+    const ReceiverPayload& payload = dynamic_cast<const ReceiverPayload&>(command.GetPayload());
+    
+    RemoveActiveCommand(payload);
+
+    OracleCommandExceptionMessage bis(payload.GetOriginalCommand(), message.GetException());
+    emitter_.EmitMessage(payload.GetOriginalReceiver(), bis);
+  }  
+
+  
+  OracleScheduler::OracleScheduler(IOracle& oracle,
+                                   IMessageEmitter& emitter,
+                                   unsigned int maxHighPriority,
+                                   unsigned int maxStandardPriority,
+                                   unsigned int maxLowPriority) :
+    oracle_(oracle),
+    emitter_(emitter),
+    maxHighPriorityCommands_(maxHighPriority),
+    maxStandardPriorityCommands_(maxStandardPriority),
+    maxLowPriorityCommands_(maxLowPriority),
+    activeHighPriorityCommands_(0),
+    activeStandardPriorityCommands_(0),
+    activeLowPriorityCommands_(0),
+    totalScheduled_(0),
+    totalProcessed_(0)
+  {
+    assert(PRIORITY_HIGH < 0 &&
+           PRIORITY_LOW > 0);
+
+    if (maxLowPriority <= 0)
+    {
+      // There must be at least 1 lane available to deal with low-priority commands
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+    
+  boost::shared_ptr<OracleScheduler> OracleScheduler::Create(IOracle& oracle,
+                                                             IObservable& oracleObservable,
+                                                             IMessageEmitter& emitter,
+                                                             unsigned int maxHighPriority,
+                                                             unsigned int maxStandardPriority,
+                                                             unsigned int maxLowPriority)
+  {
+    boost::shared_ptr<OracleScheduler> scheduler
+      (new OracleScheduler(oracle, emitter, maxHighPriority, maxStandardPriority, maxLowPriority));
+    scheduler->Register<GetOrthancImageCommand::SuccessMessage>(oracleObservable, &OracleScheduler::Handle);
+    scheduler->Register<GetOrthancWebViewerJpegCommand::SuccessMessage>(oracleObservable, &OracleScheduler::Handle);
+    scheduler->Register<HttpCommand::SuccessMessage>(oracleObservable, &OracleScheduler::Handle);
+    scheduler->Register<OrthancRestApiCommand::SuccessMessage>(oracleObservable, &OracleScheduler::Handle);
+    scheduler->Register<ReadFileCommand::SuccessMessage>(oracleObservable, &OracleScheduler::Handle);
+    scheduler->Register<OracleCommandExceptionMessage>(oracleObservable, &OracleScheduler::Handle);
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    scheduler->Register<ParseDicomSuccessMessage>(oracleObservable, &OracleScheduler::Handle);
+#endif
+
+    return scheduler;
+  }
+    
+
+  OracleScheduler::~OracleScheduler()
+  {      
+    CancelAllRequests();
+  }
+
+
+  void OracleScheduler::CancelRequests(boost::shared_ptr<IObserver> receiver)
+  {
+    RemoveReceiverFromQueue(standardPriorityQueue_, receiver);
+    RemoveReceiverFromQueue(highPriorityQueue_, receiver);
+    RemoveReceiverFromQueue(lowPriorityQueue_, receiver);
+  }
+
+  
+  void OracleScheduler::CancelAllRequests()
+  {      
+    ClearQueue(standardPriorityQueue_);
+    ClearQueue(highPriorityQueue_);
+    ClearQueue(lowPriorityQueue_);
+  }
+
+
+  void OracleScheduler::Schedule(boost::shared_ptr<IObserver> receiver,
+                                 int priority,
+                                 IOracleCommand* command /* Takes ownership */)
+  {
+    std::unique_ptr<ScheduledCommand> pending(new ScheduledCommand(receiver, dynamic_cast<IOracleCommand*>(command)));
+
+    /**
+     * Safeguard to remember that a new "Handle()" method and a call
+     * to "scheduler->Register()" must be implemented for each
+     * possible oracle command.
+     **/
+    assert(command->GetType() == IOracleCommand::Type_GetOrthancImage ||
+           command->GetType() == IOracleCommand::Type_GetOrthancWebViewerJpeg ||
+           command->GetType() == IOracleCommand::Type_Http ||
+           command->GetType() == IOracleCommand::Type_OrthancRestApi ||
+           command->GetType() == IOracleCommand::Type_ParseDicomFromFile ||
+           command->GetType() == IOracleCommand::Type_ParseDicomFromWado ||
+           command->GetType() == IOracleCommand::Type_ReadFile);
+
+    if (priority <= PRIORITY_HIGH)
+    {
+      highPriorityQueue_.insert(std::make_pair(priority, pending.release()));
+    }
+    else if (priority >= PRIORITY_LOW)
+    {
+      lowPriorityQueue_.insert(std::make_pair(priority, pending.release()));
+    }
+    else
+    {
+      standardPriorityQueue_.insert(std::make_pair(priority, pending.release()));
+    }
+
+    totalScheduled_ ++;
+
+    SpawnCommands();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/OracleScheduler.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,169 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../OrthancStone.h"
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error The macro ORTHANC_ENABLE_DCMTK must be defined
+#endif
+
+#include "../Messages/IMessageEmitter.h"
+#include "../Messages/ObserverBase.h"
+#include "../Oracle/GetOrthancImageCommand.h"
+#include "../Oracle/GetOrthancWebViewerJpegCommand.h"
+#include "../Oracle/HttpCommand.h"
+#include "../Oracle/IOracle.h"
+#include "../Oracle/OracleCommandExceptionMessage.h"
+#include "../Oracle/OrthancRestApiCommand.h"
+#include "../Oracle/ReadFileCommand.h"
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include "../Oracle/ParseDicomSuccessMessage.h"
+#endif
+
+namespace OrthancStone
+{
+  class OracleScheduler : public ObserverBase<OracleScheduler>
+  {
+  public:
+    static const int PRIORITY_HIGH = -1;
+    static const int PRIORITY_LOW = 100;
+  
+  private:
+    enum Priority
+    {
+      Priority_Low,
+      Priority_Standard,
+      Priority_High
+    };
+
+    class ReceiverPayload;
+    class ScheduledCommand;
+
+    typedef std::multimap<int, ScheduledCommand*>  Queue;
+
+    IOracle&  oracle_;
+    IMessageEmitter&  emitter_;
+    Queue          standardPriorityQueue_;
+    Queue          highPriorityQueue_;
+    Queue          lowPriorityQueue_;
+    unsigned int   maxHighPriorityCommands_;  // Used if priority <= PRIORITY_HIGH
+    unsigned int   maxStandardPriorityCommands_;
+    unsigned int   maxLowPriorityCommands_;  // Used if priority >= PRIORITY_LOW
+    unsigned int   activeHighPriorityCommands_;
+    unsigned int   activeStandardPriorityCommands_;
+    unsigned int   activeLowPriorityCommands_;
+    uint64_t       totalScheduled_;
+    uint64_t       totalProcessed_;
+
+    void ClearQueue(Queue& queue);
+
+    void RemoveReceiverFromQueue(Queue& queue,
+                                 boost::shared_ptr<IObserver> receiver);
+
+    void CheckInvariants() const;
+
+    void SpawnFromQueue(Queue& queue,
+                        Priority priority);
+
+    void SpawnCommands();
+
+    void RemoveActiveCommand(const ReceiverPayload& payload);
+
+    void Handle(const GetOrthancImageCommand::SuccessMessage& message);
+
+    void Handle(const GetOrthancWebViewerJpegCommand::SuccessMessage& message);
+
+    void Handle(const HttpCommand::SuccessMessage& message);
+
+    void Handle(const OrthancRestApiCommand::SuccessMessage& message);
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    void Handle(const ParseDicomSuccessMessage& message);
+#endif
+
+    void Handle(const ReadFileCommand::SuccessMessage& message);
+
+    void Handle(const OracleCommandExceptionMessage& message);
+
+    OracleScheduler(IOracle& oracle,
+                    IMessageEmitter& emitter,
+                    unsigned int maxHighPriority,
+                    unsigned int maxStandardPriority,
+                    unsigned int maxLowPriority);
+    
+  public:
+    static boost::shared_ptr<OracleScheduler> Create(IOracle& oracle,
+                                                     IObservable& oracleObservable,
+                                                     IMessageEmitter& emitter)
+    {
+      return Create(oracle, oracleObservable, emitter, 1, 4, 1);
+    }
+
+    static boost::shared_ptr<OracleScheduler> Create(IOracle& oracle,
+                                                     IObservable& oracleObservable,
+                                                     IMessageEmitter& emitter,
+                                                     unsigned int maxHighPriority,
+                                                     unsigned int maxStandardPriority,
+                                                     unsigned int maxLowPriority);
+
+    ~OracleScheduler();
+
+    unsigned int GetMaxHighPriorityCommands() const
+    {
+      return maxHighPriorityCommands_;
+    }
+
+    unsigned int GetMaxStandardPriorityCommands() const
+    {
+      return maxStandardPriorityCommands_;
+    }
+
+    unsigned int GetMaxLowPriorityCommands() const
+    {
+      return maxLowPriorityCommands_;
+    }
+
+    uint64_t GetTotalScheduled() const
+    {
+      return totalScheduled_;
+    }
+
+    uint64_t GetTotalProcessed() const
+    {
+      return totalProcessed_;
+    }
+
+    // Cancel the HTTP requests that are still pending in the queues,
+    // and that are associated with the given receiver. Note that the
+    // receiver might still receive answers to HTTP requests that were
+    // already submitted to the oracle.
+    void CancelRequests(boost::shared_ptr<IObserver> receiver);
+
+    void CancelAllRequests();
+
+    void Schedule(boost::shared_ptr<IObserver> receiver,
+                  int priority,
+                  IOracleCommand* command /* Takes ownership */);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/OrthancMultiframeVolumeLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,615 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OrthancMultiframeVolumeLoader.h"
+
+#include <Endianness.h>
+#include <Toolbox.h>
+
+namespace OrthancStone
+{
+  class OrthancMultiframeVolumeLoader::LoadRTDoseGeometry : public LoaderStateMachine::State
+  {
+  private:
+    std::unique_ptr<Orthanc::DicomMap>  dicom_;
+
+  public:
+    LoadRTDoseGeometry(OrthancMultiframeVolumeLoader& that,
+                       Orthanc::DicomMap* dicom) :
+      State(that),
+      dicom_(dicom)
+    {
+      if (dicom == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+
+    }
+
+    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
+    {
+      // Complete the DICOM tags with just-received "Grid Frame Offset Vector"
+      std::string s = Orthanc::Toolbox::StripSpaces(message.GetAnswer());
+      dicom_->SetValue(Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR, s, false);
+
+      GetLoader<OrthancMultiframeVolumeLoader>().SetGeometry(*dicom_);
+    }      
+  };
+
+
+  static std::string GetSopClassUid(const Orthanc::DicomMap& dicom)
+  {
+    std::string s;
+    if (!dicom.LookupStringValue(s, Orthanc::DICOM_TAG_SOP_CLASS_UID, false))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
+                                      "DICOM file without SOP class UID");
+    }
+    else
+    {
+      return s;
+    }
+  }
+    
+
+  class OrthancMultiframeVolumeLoader::LoadGeometry : public State
+  {
+  public:
+    LoadGeometry(OrthancMultiframeVolumeLoader& that) :
+    State(that)
+    {
+    }
+      
+    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
+    {
+      OrthancMultiframeVolumeLoader& loader = GetLoader<OrthancMultiframeVolumeLoader>();
+        
+      Json::Value body;
+      message.ParseJsonBody(body);
+        
+      if (body.type() != Json::objectValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+
+      std::unique_ptr<Orthanc::DicomMap> dicom(new Orthanc::DicomMap);
+      dicom->FromDicomAsJson(body);
+
+      if (OrthancStone::StringToSopClassUid(GetSopClassUid(*dicom)) == OrthancStone::SopClassUid_RTDose)
+      {
+        // Download the "Grid Frame Offset Vector" DICOM tag, that is
+        // mandatory for RT-DOSE, but is too long to be returned by default
+          
+        std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
+        command->SetUri("/instances/" + loader.GetInstanceId() + "/content/" +
+                        Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR.Format());
+        command->AcquirePayload(new LoadRTDoseGeometry(loader, dicom.release()));
+
+        Schedule(command.release());
+      }
+      else
+      {
+        loader.SetGeometry(*dicom);
+      }
+    }
+  };
+
+  class OrthancMultiframeVolumeLoader::LoadTransferSyntax : public State
+  {
+  public:
+    LoadTransferSyntax(OrthancMultiframeVolumeLoader& that) :
+    State(that)
+    {
+    }
+      
+    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
+    {
+      GetLoader<OrthancMultiframeVolumeLoader>().SetTransferSyntax(message.GetAnswer());
+    }
+  };
+
+  class OrthancMultiframeVolumeLoader::LoadUncompressedPixelData : public State
+  {
+  public:
+    LoadUncompressedPixelData(OrthancMultiframeVolumeLoader& that) :
+    State(that)
+    {
+    }
+      
+    virtual void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
+    {
+      GetLoader<OrthancMultiframeVolumeLoader>().SetUncompressedPixelData(message.GetAnswer());
+    }
+  };
+
+  const std::string& OrthancMultiframeVolumeLoader::GetInstanceId() const
+  {
+    if (IsActive())
+    {
+      return instanceId_;
+    }
+    else
+    {
+      LOG(ERROR) << "OrthancMultiframeVolumeLoader::GetInstanceId(): (!IsActive())";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  void OrthancMultiframeVolumeLoader::ScheduleFrameDownloads()
+  {
+    if (transferSyntaxUid_.empty() ||
+        !volume_->HasGeometry())
+    {
+      return;
+    }
+    /*
+      1.2.840.10008.1.2	Implicit VR Endian: Default Transfer Syntax for DICOM
+      1.2.840.10008.1.2.1	Explicit VR Little Endian
+      1.2.840.10008.1.2.2	Explicit VR Big Endian
+
+      See https://www.dicomlibrary.com/dicom/transfer-syntax/
+    */
+    if (transferSyntaxUid_ == "1.2.840.10008.1.2" ||
+        transferSyntaxUid_ == "1.2.840.10008.1.2.1" ||
+        transferSyntaxUid_ == "1.2.840.10008.1.2.2")
+    {
+      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
+      command->SetHttpHeader("Accept-Encoding", "gzip");
+      command->SetUri("/instances/" + instanceId_ + "/content/" +
+                      Orthanc::DICOM_TAG_PIXEL_DATA.Format() + "/0");
+      command->AcquirePayload(new LoadUncompressedPixelData(*this));
+      Schedule(command.release());
+    }
+    else
+    {
+      throw Orthanc::OrthancException(
+        Orthanc::ErrorCode_NotImplemented,
+        "No support for multiframe instances with transfer syntax: " + transferSyntaxUid_);
+    }
+  }
+
+  void OrthancMultiframeVolumeLoader::SetTransferSyntax(const std::string& transferSyntax)
+  {
+    transferSyntaxUid_ = Orthanc::Toolbox::StripSpaces(transferSyntax);
+    ScheduleFrameDownloads();
+  }
+
+  void OrthancMultiframeVolumeLoader::SetGeometry(const Orthanc::DicomMap& dicom)
+  {
+    OrthancStone::DicomInstanceParameters parameters(dicom);
+    volume_->SetDicomParameters(parameters);
+      
+    Orthanc::PixelFormat format;
+    if (!parameters.GetImageInformation().ExtractPixelFormat(format, true))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+
+    double spacingZ;
+    switch (parameters.GetSopClassUid())
+    {
+      case OrthancStone::SopClassUid_RTDose:
+        spacingZ = parameters.GetThickness();
+        break;
+
+      default:
+        throw Orthanc::OrthancException(
+          Orthanc::ErrorCode_NotImplemented,
+          "No support for multiframe instances with SOP class UID: " + GetSopClassUid(dicom));
+    }
+
+    const unsigned int width = parameters.GetImageInformation().GetWidth();
+    const unsigned int height = parameters.GetImageInformation().GetHeight();
+    const unsigned int depth = parameters.GetImageInformation().GetNumberOfFrames();
+
+    {
+      OrthancStone::VolumeImageGeometry geometry;
+      geometry.SetSizeInVoxels(width, height, depth);
+      geometry.SetAxialGeometry(parameters.GetGeometry());
+      geometry.SetVoxelDimensions(parameters.GetPixelSpacingX(),
+                                  parameters.GetPixelSpacingY(), spacingZ);
+      volume_->Initialize(geometry, format, true /* Do compute range */);
+    }
+
+    volume_->GetPixelData().Clear();
+
+    ScheduleFrameDownloads();
+
+
+
+    BroadcastMessage(OrthancStone::DicomVolumeImage::GeometryReadyMessage(*volume_));
+  }
+
+
+  ORTHANC_FORCE_INLINE
+  static void CopyPixel(uint32_t& target, const void* source)
+  {
+    // TODO - check alignement?
+    target = le32toh(*reinterpret_cast<const uint32_t*>(source));
+  }
+
+  ORTHANC_FORCE_INLINE
+    static void CopyPixel(uint16_t& target, const void* source)
+  {
+    // TODO - check alignement?
+    target = le16toh(*reinterpret_cast<const uint16_t*>(source));
+  }
+
+  ORTHANC_FORCE_INLINE
+    static void CopyPixel(int16_t& target, const void* source)
+  {
+    // byte swapping is the same for unsigned and signed integers
+    // (the sign bit is always stored with the MSByte)
+    uint16_t* targetUp = reinterpret_cast<uint16_t*>(&target);
+    CopyPixel(*targetUp, source);
+  }
+
+  template <typename T>
+  void OrthancMultiframeVolumeLoader::CopyPixelDataAndComputeDistribution(
+    const std::string& pixelData, std::map<T,uint64_t>& distribution)
+  {
+    OrthancStone::ImageBuffer3D& target = volume_->GetPixelData();
+      
+    const unsigned int bpp = target.GetBytesPerPixel();
+    const unsigned int width = target.GetWidth();
+    const unsigned int height = target.GetHeight();
+    const unsigned int depth = target.GetDepth();
+
+    if (pixelData.size() != bpp * width * height * depth)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
+                                      "The pixel data has not the proper size");
+    }
+
+    if (pixelData.empty())
+    {
+      return;
+    }
+
+    // first pass to initialize map
+    {
+      const uint8_t* source = reinterpret_cast<const uint8_t*>(pixelData.c_str());
+
+      for (unsigned int z = 0; z < depth; z++)
+      {
+        for (unsigned int y = 0; y < height; y++)
+        {
+          for (unsigned int x = 0; x < width; x++)
+          {
+            T value;
+            CopyPixel(value, source);
+            distribution[value] = 0;
+            source += bpp;
+          }
+        }
+      }
+    }
+
+    {
+      const uint8_t* source = reinterpret_cast<const uint8_t*>(pixelData.c_str());
+
+      for (unsigned int z = 0; z < depth; z++)
+      {
+        OrthancStone::ImageBuffer3D::SliceWriter writer(target, OrthancStone::VolumeProjection_Axial, z);
+
+        assert(writer.GetAccessor().GetWidth() == width &&
+          writer.GetAccessor().GetHeight() == height);
+#if 0
+        for (unsigned int y = 0; y < height; y++)
+        {
+          assert(sizeof(T) == Orthanc::GetBytesPerPixel(target.GetFormat()));
+
+          T* target = reinterpret_cast<T*>(writer.GetAccessor().GetRow(y));
+
+          for (unsigned int x = 0; x < width; x++)
+          {
+            CopyPixel(*target, source);
+
+            distribution[*target] += 1;
+
+            target++;
+            source += bpp;
+          }
+        }
+#else
+        // optimized version (fixed) as of 2020-04-15
+        unsigned int pitch = writer.GetAccessor().GetPitch();
+        T* targetAddrLine = reinterpret_cast<T*>(writer.GetAccessor().GetRow(0));
+        assert(sizeof(T) == Orthanc::GetBytesPerPixel(target.GetFormat()));
+
+        for (unsigned int y = 0; y < height; y++)
+        {
+          T* targetAddrPix = targetAddrLine;
+          for (unsigned int x = 0; x < width; x++)
+          {
+            CopyPixel(*targetAddrPix, source);
+
+            distribution[*targetAddrPix] += 1;
+
+            targetAddrPix++;
+            source += bpp;
+          }
+          uint8_t* targetAddrLineBytes = reinterpret_cast<uint8_t*>(targetAddrLine) + pitch;
+          targetAddrLine = reinterpret_cast<T*>(targetAddrLineBytes);
+        }
+#endif
+      }
+    }
+  }
+
+  template <typename T>
+  void OrthancMultiframeVolumeLoader::ComputeMinMaxWithOutlierRejection(
+    const std::map<T, uint64_t>& distribution)
+  {
+    if (distribution.size() == 0)
+    {
+      LOG(ERROR) << "ComputeMinMaxWithOutlierRejection -- Volume image empty.";
+    }
+    else
+    {
+      OrthancStone::ImageBuffer3D& target = volume_->GetPixelData();
+
+      const uint64_t width = target.GetWidth();
+      const uint64_t height = target.GetHeight();
+      const uint64_t depth = target.GetDepth();
+      const uint64_t voxelCount = width * height * depth;
+
+      // now that we have distribution[pixelValue] == numberOfPixelsWithValue
+      // compute number of values and check (assertion) that it is equal to 
+      // width * height * depth 
+      {
+        typename std::map<T, uint64_t>::const_iterator it = distribution.begin();
+        uint64_t totalCount = 0;
+        distributionRawMin_ = static_cast<float>(it->first);
+
+        while (it != distribution.end())
+        {
+          T pixelValue = it->first;
+          uint64_t count = it->second;
+          totalCount += count;
+          it++;
+          if (it == distribution.end())
+            distributionRawMax_ = static_cast<float>(pixelValue);
+        }
+        LOG(INFO) << "Volume image. First distribution value = " 
+          << static_cast<float>(distributionRawMin_) 
+          << " | Last distribution value = " 
+          << static_cast<float>(distributionRawMax_);
+
+        if (totalCount != voxelCount)
+        {
+          LOG(ERROR) << "Internal error in dose distribution computation. TC (" 
+            << totalCount << ") != VoxC (" << voxelCount;
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+        }
+      }
+
+      // compute the number of voxels to reject at each end of the distribution
+      uint64_t endRejectionCount = static_cast<uint64_t>(
+        outliersHalfRejectionRate_ * voxelCount);
+
+      if (endRejectionCount > voxelCount)
+      {
+        LOG(ERROR) << "Internal error in dose distribution computation."
+          << " endRejectionCount = " << endRejectionCount
+          << " | voxelCount = " << voxelCount;
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      // this will contain the actual distribution minimum after outlier 
+      // rejection
+      T resultMin = 0;
+
+      // then start from start and remove pixel values up to 
+      // endRejectionCount voxels rejected
+      {
+        typename std::map<T, uint64_t>::const_iterator it = distribution.begin();
+        
+        uint64_t currentCount = 0;
+
+        while (it != distribution.end())
+        {
+          T pixelValue = it->first;
+          uint64_t count = it->second;
+
+          // if this pixelValue crosses the rejection threshold, let's set it
+          // and exit the loop
+          if ((currentCount <= endRejectionCount) &&
+              (currentCount + count > endRejectionCount))
+          {
+            resultMin = pixelValue;
+            break;
+          }
+          else
+          {
+            currentCount += count;
+          }
+          // and continue walking along the distribution
+          it++;
+        }
+      }
+
+      // this will contain the actual distribution maximum after outlier 
+      // rejection
+      T resultMax = 0;
+      // now start from END and remove pixel values up to 
+      // endRejectionCount voxels rejected
+      {
+        typename std::map<T, uint64_t>::const_reverse_iterator it = distribution.rbegin();
+
+        uint64_t currentCount = 0;
+
+        while (it != distribution.rend())
+        {
+          T pixelValue = it->first;
+          uint64_t count = it->second;
+
+          if ((currentCount <= endRejectionCount) &&
+              (currentCount + count > endRejectionCount))
+          {
+            resultMax = pixelValue;
+            break;
+          }
+          else
+          {
+            currentCount += count;
+          }
+          // and continue walking along the distribution
+          it++;
+        }
+      }
+      if (resultMin > resultMax)
+      {
+        LOG(ERROR) << "Internal error in dose distribution computation! " << 
+          "resultMin (" << resultMin << ") > resultMax (" << resultMax << ")";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+      computedDistributionMin_ = static_cast<float>(resultMin);
+      computedDistributionMax_ = static_cast<float>(resultMax);
+    }
+  }
+
+  template <typename T>
+  void OrthancMultiframeVolumeLoader::CopyPixelDataAndComputeMinMax(
+    const std::string& pixelData)
+  {
+    std::map<T, uint64_t> distribution;
+    CopyPixelDataAndComputeDistribution(pixelData, distribution);
+    ComputeMinMaxWithOutlierRejection(distribution);
+  }
+
+  void OrthancMultiframeVolumeLoader::SetUncompressedPixelData(const std::string& pixelData)
+  {
+    switch (volume_->GetPixelData().GetFormat())
+    {
+      case Orthanc::PixelFormat_Grayscale32:
+        CopyPixelDataAndComputeMinMax<uint32_t>(pixelData);
+        break;
+      case Orthanc::PixelFormat_Grayscale16:
+        CopyPixelDataAndComputeMinMax<uint16_t>(pixelData);
+        break;
+      case Orthanc::PixelFormat_SignedGrayscale16:
+        CopyPixelDataAndComputeMinMax<int16_t>(pixelData);
+        break;
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+
+    volume_->IncrementRevision();
+
+    pixelDataLoaded_ = true;
+    BroadcastMessage(OrthancStone::DicomVolumeImage::ContentUpdatedMessage(*volume_));
+  }
+  
+  bool OrthancMultiframeVolumeLoader::HasGeometry() const
+  {
+    return volume_->HasGeometry();
+  }
+
+  const OrthancStone::VolumeImageGeometry& OrthancMultiframeVolumeLoader::GetImageGeometry() const
+  {
+    return volume_->GetGeometry();
+  }
+
+  OrthancMultiframeVolumeLoader::OrthancMultiframeVolumeLoader(
+    OrthancStone::ILoadersContext& loadersContext,
+    boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
+    float outliersHalfRejectionRate) 
+    : LoaderStateMachine(loadersContext)
+    , volume_(volume)
+    , pixelDataLoaded_(false)
+    , outliersHalfRejectionRate_(outliersHalfRejectionRate)
+    , distributionRawMin_(0)
+    , distributionRawMax_(0)
+    , computedDistributionMin_(0)
+    , computedDistributionMax_(0)
+  {
+    if (volume.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+  }
+
+
+  boost::shared_ptr<OrthancMultiframeVolumeLoader>
+    OrthancMultiframeVolumeLoader::Create(
+      OrthancStone::ILoadersContext& loadersContext, 
+      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume, 
+      float outliersHalfRejectionRate /*= 0.0005*/)
+  {
+    boost::shared_ptr<OrthancMultiframeVolumeLoader> obj(
+      new OrthancMultiframeVolumeLoader(
+        loadersContext,
+        volume,
+        outliersHalfRejectionRate));
+    obj->LoaderStateMachine::PostConstructor();
+    return obj;
+  }
+
+  OrthancMultiframeVolumeLoader::~OrthancMultiframeVolumeLoader()
+  {
+    LOG(TRACE) << "OrthancMultiframeVolumeLoader::~OrthancMultiframeVolumeLoader()";
+  }
+  
+  void OrthancMultiframeVolumeLoader::GetDistributionMinMax
+  (float& minValue, float& maxValue) const
+  {
+    if (distributionRawMin_ == 0 && distributionRawMax_ == 0)
+    {
+      LOG(WARNING) << "GetDistributionMinMaxWithOutliersRejection called before computation!";
+    }
+    minValue = distributionRawMin_;
+    maxValue = distributionRawMax_;
+  }
+  
+  void OrthancMultiframeVolumeLoader::GetDistributionMinMaxWithOutliersRejection
+    (float& minValue, float& maxValue) const
+  {
+    if (computedDistributionMin_ == 0 && computedDistributionMax_ == 0)
+    {
+      LOG(WARNING) << "GetDistributionMinMaxWithOutliersRejection called before computation!";
+    }
+    minValue = computedDistributionMin_;
+    maxValue = computedDistributionMax_;
+  }
+
+  void OrthancMultiframeVolumeLoader::LoadInstance(const std::string& instanceId)
+  {
+    Start();
+
+    instanceId_ = instanceId;
+
+    {
+      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
+      command->SetHttpHeader("Accept-Encoding", "gzip");
+      command->SetUri("/instances/" + instanceId + "/tags");
+      command->AcquirePayload(new LoadGeometry(*this));
+      Schedule(command.release());
+    }
+
+    {
+      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
+      command->SetUri("/instances/" + instanceId + "/metadata/TransferSyntax");
+      command->AcquirePayload(new LoadTransferSyntax(*this));
+      Schedule(command.release());
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/OrthancMultiframeVolumeLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,123 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "LoaderStateMachine.h"
+#include "../Volumes/DicomVolumeImage.h"
+#include "../Volumes/IGeometryProvider.h"
+
+#include <boost/shared_ptr.hpp>
+
+namespace OrthancStone
+{
+  class OrthancMultiframeVolumeLoader :
+    public LoaderStateMachine,
+    public OrthancStone::IObservable,
+    public IGeometryProvider
+  {
+  private:
+    class LoadRTDoseGeometry;
+    class LoadGeometry;
+    class LoadTransferSyntax;    
+    class LoadUncompressedPixelData;
+
+    boost::shared_ptr<OrthancStone::DicomVolumeImage>  volume_;
+    std::string                          instanceId_;
+    std::string                          transferSyntaxUid_;
+    bool                                 pixelDataLoaded_;
+    float                                outliersHalfRejectionRate_;
+    float                                distributionRawMin_;
+    float                                distributionRawMax_;
+    float                                computedDistributionMin_;
+    float                                computedDistributionMax_;
+
+    const std::string& GetInstanceId() const;
+
+    void ScheduleFrameDownloads();
+
+    void SetTransferSyntax(const std::string& transferSyntax);
+
+    void SetGeometry(const Orthanc::DicomMap& dicom);
+
+
+    /**
+    This method will :
+    
+    - copy the pixel values from the response to the volume image
+    - compute the maximum and minimum value while discarding the
+      outliersHalfRejectionRate_ fraction of the outliers from both the start 
+      and the end of the distribution.
+
+      In English, this means that, if the volume dataset contains a few extreme
+      values very different from the rest (outliers) that we want to get rid of,
+      this method allows to do so.
+
+      If you supply 0.005, for instance, it means 1% of the extreme values will
+      be rejected (0.5% on each side of the distribution)
+    */
+    template <typename T>
+    void CopyPixelDataAndComputeMinMax(const std::string& pixelData);
+      
+    /** Service method for CopyPixelDataAndComputeMinMax*/
+    template <typename T>
+    void CopyPixelDataAndComputeDistribution(
+      const std::string& pixelData, 
+      std::map<T, uint64_t>& distribution);
+
+    /** Service method for CopyPixelDataAndComputeMinMax*/
+    template <typename T>
+    void ComputeMinMaxWithOutlierRejection(
+      const std::map<T, uint64_t>& distribution);
+
+    void SetUncompressedPixelData(const std::string& pixelData);
+
+  protected:
+    OrthancMultiframeVolumeLoader(
+      OrthancStone::ILoadersContext& loadersContext,
+      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
+      float outliersHalfRejectionRate);
+  public:
+
+    static boost::shared_ptr<OrthancMultiframeVolumeLoader> Create(
+      OrthancStone::ILoadersContext& loadersContext,
+      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
+      float outliersHalfRejectionRate = 0.0005);
+
+    virtual ~OrthancMultiframeVolumeLoader();
+
+    bool HasGeometry() const;
+    const OrthancStone::VolumeImageGeometry& GetImageGeometry() const;
+
+    bool IsPixelDataLoaded() const
+    {
+      return pixelDataLoaded_;
+    }
+
+    void GetDistributionMinMax
+      (float& minValue, float& maxValue) const;
+
+    void GetDistributionMinMaxWithOutliersRejection
+      (float& minValue, float& maxValue) const;
+
+    void LoadInstance(const std::string& instanceId);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,611 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OrthancSeriesVolumeProgressiveLoader.h"
+
+#include "../StoneException.h"
+#include "../Loaders/ILoadersContext.h"
+#include "../Loaders/BasicFetchingItemsSorter.h"
+#include "../Loaders/BasicFetchingStrategy.h"
+#include "../Toolbox/GeometryToolbox.h"
+#include "../Volumes/DicomVolumeImageMPRSlicer.h"
+
+#include <Compatibility.h>
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+  using OrthancStone::ILoadersContext;
+
+  class OrthancSeriesVolumeProgressiveLoader::ExtractedSlice : public OrthancStone::DicomVolumeImageMPRSlicer::Slice
+  {
+  private:
+    const OrthancSeriesVolumeProgressiveLoader&  that_;
+
+  public:
+    ExtractedSlice(const OrthancSeriesVolumeProgressiveLoader& that,
+                   const OrthancStone::CoordinateSystem3D& plane) :
+      OrthancStone::DicomVolumeImageMPRSlicer::Slice(*that.volume_, plane),
+      that_(that)
+    {
+      if (IsValid())
+      {
+        if (GetProjection() == OrthancStone::VolumeProjection_Axial)
+        {
+          // For coronal and sagittal projections, we take the global
+          // revision of the volume because even if a single slice changes,
+          // this means the projection will yield a different result --> 
+          // we must increase the revision as soon as any slice changes 
+          SetRevision(that_.seriesGeometry_.GetSliceRevision(GetSliceIndex()));
+        }
+      
+        if (that_.strategy_.get() != NULL &&
+            GetProjection() == OrthancStone::VolumeProjection_Axial)
+        {
+          that_.strategy_->SetCurrent(GetSliceIndex());
+        }
+      }
+    }
+  };
+    
+  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::CheckSlice(
+    size_t index, const OrthancStone::DicomInstanceParameters& reference) const
+  {
+    const OrthancStone::DicomInstanceParameters& slice = *slices_[index];
+      
+    if (!OrthancStone::GeometryToolbox::IsParallel(
+          reference.GetGeometry().GetNormal(),
+          slice.GetGeometry().GetNormal()))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadGeometry,
+                                      "A slice in the volume image is not parallel to the others");
+    }
+
+    if (reference.GetExpectedPixelFormat() != slice.GetExpectedPixelFormat())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat,
+                                      "The pixel format changes across the slices of the volume image");
+    }
+
+    if (reference.GetImageInformation().GetWidth() != slice.GetImageInformation().GetWidth() ||
+        reference.GetImageInformation().GetHeight() != slice.GetImageInformation().GetHeight())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize,
+                                      "The width/height of slices are not constant in the volume image");
+    }
+
+    if (!OrthancStone::LinearAlgebra::IsNear(reference.GetPixelSpacingX(), slice.GetPixelSpacingX()) ||
+        !OrthancStone::LinearAlgebra::IsNear(reference.GetPixelSpacingY(), slice.GetPixelSpacingY()))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadGeometry,
+                                      "The pixel spacing of the slices change across the volume image");
+    }
+  }
+
+    
+  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::CheckVolume() const
+  {
+    for (size_t i = 0; i < slices_.size(); i++)
+    {
+      assert(slices_[i] != NULL);
+      if (slices_[i]->GetImageInformation().GetNumberOfFrames() != 1)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadGeometry,
+                                        "This class does not support multi-frame images");
+      }
+    }
+
+    if (slices_.size() != 0)
+    {
+      const OrthancStone::DicomInstanceParameters& reference = *slices_[0];
+
+      for (size_t i = 1; i < slices_.size(); i++)
+      {
+        CheckSlice(i, reference);
+      }
+    }
+  }
+
+
+  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::Clear()
+  {
+    for (size_t i = 0; i < slices_.size(); i++)
+    {
+      assert(slices_[i] != NULL);
+      delete slices_[i];
+    }
+
+    slices_.clear();
+    slicesRevision_.clear();
+  }
+
+
+  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::CheckSliceIndex(size_t index) const
+  {
+    if (!HasGeometry())
+    {
+      LOG(ERROR) << "OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::CheckSliceIndex(size_t index): (!HasGeometry())";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else if (index >= slices_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      assert(slices_.size() == GetImageGeometry().GetDepth() &&
+             slices_.size() == slicesRevision_.size());
+    }
+  }
+
+
+  // WARNING: The payload of "slices" must be of class "DicomInstanceParameters"
+  // (called with the slices created in LoadGeometry)
+  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::ComputeGeometry(OrthancStone::SlicesSorter& slices)
+  {
+    Clear();
+      
+    if (!slices.Sort())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange,
+                                      "Cannot sort the 3D slices of a DICOM series");          
+    }
+
+    if (slices.GetSlicesCount() == 0)
+    {
+      geometry_.reset(new OrthancStone::VolumeImageGeometry);
+    }
+    else
+    {
+      slices_.reserve(slices.GetSlicesCount());
+      slicesRevision_.resize(slices.GetSlicesCount(), 0);
+
+      for (size_t i = 0; i < slices.GetSlicesCount(); i++)
+      {
+        const OrthancStone::DicomInstanceParameters& slice =
+          dynamic_cast<const OrthancStone::DicomInstanceParameters&>(slices.GetSlicePayload(i));
+        slices_.push_back(new OrthancStone::DicomInstanceParameters(slice));
+      }
+
+      CheckVolume();
+
+      double spacingZ;
+
+      if (slices.ComputeSpacingBetweenSlices(spacingZ))
+      {
+        LOG(TRACE) << "Computed spacing between slices: " << spacingZ << "mm";
+      
+        const OrthancStone::DicomInstanceParameters& parameters = *slices_[0];
+
+        geometry_.reset(new OrthancStone::VolumeImageGeometry);
+        geometry_->SetSizeInVoxels(parameters.GetImageInformation().GetWidth(),
+                                   parameters.GetImageInformation().GetHeight(),
+                                   static_cast<unsigned int>(slices.GetSlicesCount()));
+        geometry_->SetAxialGeometry(slices.GetSliceGeometry(0));
+        geometry_->SetVoxelDimensions(parameters.GetPixelSpacingX(),
+                                      parameters.GetPixelSpacingY(), spacingZ);
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadGeometry,
+                                        "The origins of the slices of a volume image are not regularly spaced");
+     }
+    }
+  }
+
+
+  const OrthancStone::VolumeImageGeometry& OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::GetImageGeometry() const
+  {
+    if (!HasGeometry())
+    {
+      LOG(ERROR) << "OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::GetImageGeometry(): (!HasGeometry())";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      assert(slices_.size() == geometry_->GetDepth());
+      return *geometry_;
+    }
+  }
+
+
+  const OrthancStone::DicomInstanceParameters& OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::GetSliceParameters(size_t index) const
+  {
+    CheckSliceIndex(index);
+    return *slices_[index];
+  }
+
+
+  uint64_t OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::GetSliceRevision(size_t index) const
+  {
+    CheckSliceIndex(index);
+    return slicesRevision_[index];
+  }
+
+
+  void OrthancSeriesVolumeProgressiveLoader::SeriesGeometry::IncrementSliceRevision(size_t index)
+  {
+    CheckSliceIndex(index);
+    slicesRevision_[index] ++;
+  }
+
+
+  static unsigned int GetSliceIndexPayload(const OrthancStone::OracleCommandBase& command)
+  {
+    assert(command.HasPayload());
+    return dynamic_cast< const Orthanc::SingleValueObject<unsigned int>& >(command.GetPayload()).GetValue();
+  }
+
+
+  void OrthancSeriesVolumeProgressiveLoader::ScheduleNextSliceDownload()
+  {
+    assert(strategy_.get() != NULL);
+      
+    unsigned int sliceIndex = 0, quality = 0;
+      
+    if (strategy_->GetNext(sliceIndex, quality))
+    {
+      if (!progressiveQuality_)
+      {
+        ORTHANC_ASSERT(quality == QUALITY_00, "INTERNAL ERROR. quality != QUALITY_00 in "
+                       << "OrthancSeriesVolumeProgressiveLoader::ScheduleNextSliceDownload");
+      }
+
+      const OrthancStone::DicomInstanceParameters& slice = seriesGeometry_.GetSliceParameters(sliceIndex);
+          
+      const std::string& instance = slice.GetOrthancInstanceIdentifier();
+      if (instance.empty())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      std::unique_ptr<OrthancStone::OracleCommandBase> command;
+        
+      if (!progressiveQuality_ || quality == QUALITY_02)
+      {
+        std::unique_ptr<OrthancStone::GetOrthancImageCommand> tmp(new OrthancStone::GetOrthancImageCommand);
+        // TODO: review the following comment. 
+        // - Commented out by bgo on 2019-07-19 | reason: Alain has seen cases 
+        //   where gzipping the uint16 image took 11 sec to produce 5mb. 
+        //   The unzipped request was much much faster.
+        // - Re-enabled on 2019-07-30. Reason: in Web Assembly, the browser 
+        //   does not use the Accept-Encoding header and always requests
+        //   compression. Furthermore, NOT 
+        tmp->SetHttpHeader("Accept-Encoding", "gzip");
+        tmp->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Pam)));
+        tmp->SetInstanceUri(instance, slice.GetExpectedPixelFormat());
+        tmp->SetExpectedPixelFormat(slice.GetExpectedPixelFormat());
+        //LOG(INFO) 
+        //  << "OrthancSeriesVolumeProgressiveLoader.ScheduleNextSliceDownload()"
+        //  << " sliceIndex = " << sliceIndex << " slice quality = " << quality 
+        //  << " URI = " << tmp->GetUri();
+        command.reset(tmp.release());
+      }
+      else // progressive mode is true AND quality is not final (different from QUALITY_02
+      {
+        std::unique_ptr<OrthancStone::GetOrthancWebViewerJpegCommand> tmp(
+          new OrthancStone::GetOrthancWebViewerJpegCommand);
+
+        // TODO: review the following comment. Commented out by bgo on 2019-07-19
+        // (gzip for jpeg seems overkill)
+        //tmp->SetHttpHeader("Accept-Encoding", "gzip");
+        tmp->SetInstance(instance);
+        tmp->SetQuality((quality == 0 ? 50 : 90)); // QUALITY_00 is Jpeg50 while QUALITY_01 is Jpeg90
+        tmp->SetExpectedPixelFormat(slice.GetExpectedPixelFormat());
+        LOG(TRACE)
+          << "OrthancSeriesVolumeProgressiveLoader.ScheduleNextSliceDownload()"
+          << " sliceIndex = " << sliceIndex << " slice quality = " << quality;
+        command.reset(tmp.release());
+      }
+
+      command->AcquirePayload(new Orthanc::SingleValueObject<unsigned int>(sliceIndex));
+      
+      {
+        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
+        boost::shared_ptr<IObserver> observer(GetSharedObserver());
+        lock->Schedule(observer, sliceSchedulingPriority_, command.release());
+      }
+    }
+    else
+    {
+      // loading is finished!
+      volumeImageReadyInHighQuality_ = true;
+      BroadcastMessage(OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality(*this));
+    }
+  }
+
+/**
+   This is called in response to GET "/series/XXXXXXXXXXXXX/instances-tags"
+*/
+  void OrthancSeriesVolumeProgressiveLoader::LoadGeometry(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
+  {
+    Json::Value body;
+    message.ParseJsonBody(body);
+      
+    if (body.type() != Json::objectValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+    }
+
+    {
+      Json::Value::Members instances = body.getMemberNames();
+
+      OrthancStone::SlicesSorter slices;
+        
+      for (size_t i = 0; i < instances.size(); i++)
+      {
+        Orthanc::DicomMap dicom;
+        dicom.FromDicomAsJson(body[instances[i]]);
+
+        std::unique_ptr<OrthancStone::DicomInstanceParameters> instance(new OrthancStone::DicomInstanceParameters(dicom));
+        instance->SetOrthancInstanceIdentifier(instances[i]);
+
+        // the 3D plane corresponding to the slice
+        OrthancStone::CoordinateSystem3D geometry = instance->GetGeometry();
+        slices.AddSlice(geometry, instance.release());
+
+        if (slicePostProcessor_)
+          slicePostProcessor_->ProcessCTDicomSlice(dicom);
+      }
+
+      seriesGeometry_.ComputeGeometry(slices);
+    }
+
+    size_t slicesCount = seriesGeometry_.GetImageGeometry().GetDepth();
+
+    if (slicesCount == 0)
+    {
+      volume_->Initialize(seriesGeometry_.GetImageGeometry(), Orthanc::PixelFormat_Grayscale8);
+    }
+    else
+    {
+      const OrthancStone::DicomInstanceParameters& parameters = seriesGeometry_.GetSliceParameters(0);
+        
+      volume_->Initialize(seriesGeometry_.GetImageGeometry(), parameters.GetExpectedPixelFormat());
+      volume_->SetDicomParameters(parameters);
+      volume_->GetPixelData().Clear();
+
+      // If we are in progressive mode, the Fetching strategy will first request QUALITY_00, then QUALITY_01, then
+      // QUALITY_02... Otherwise, it's only QUALITY_00
+      unsigned int maxQuality = QUALITY_00;
+      if (progressiveQuality_)
+        maxQuality = QUALITY_02;
+
+      strategy_.reset(new OrthancStone::BasicFetchingStrategy(
+        sorter_->CreateSorter(static_cast<unsigned int>(slicesCount)),
+        maxQuality));
+
+      assert(simultaneousDownloads_ != 0);
+      for (unsigned int i = 0; i < simultaneousDownloads_; i++)
+      {
+        ScheduleNextSliceDownload();
+      }
+    }
+
+    slicesQuality_.resize(slicesCount, 0);
+
+    BroadcastMessage(OrthancStone::DicomVolumeImage::GeometryReadyMessage(*volume_));
+  }
+
+
+  void OrthancSeriesVolumeProgressiveLoader::SetSliceContent(unsigned int sliceIndex,
+                                                             const Orthanc::ImageAccessor& image,
+                                                             unsigned int quality)
+  {
+    ORTHANC_ASSERT(sliceIndex < slicesQuality_.size() &&
+           slicesQuality_.size() == volume_->GetPixelData().GetDepth());
+      
+    if (!progressiveQuality_)
+    {
+      ORTHANC_ASSERT(quality                    == QUALITY_00);
+      ORTHANC_ASSERT(slicesQuality_[sliceIndex] == QUALITY_00);
+    }
+
+    if (quality >= slicesQuality_[sliceIndex])
+    {
+      {
+        OrthancStone::ImageBuffer3D::SliceWriter writer(volume_->GetPixelData(), 
+                                                        OrthancStone::VolumeProjection_Axial, 
+                                                        sliceIndex);
+        
+        Orthanc::ImageProcessing::Copy(writer.GetAccessor(), image);
+      }
+
+      volume_->IncrementRevision();
+      seriesGeometry_.IncrementSliceRevision(sliceIndex);
+      slicesQuality_[sliceIndex] = quality;
+
+      BroadcastMessage(OrthancStone::DicomVolumeImage::ContentUpdatedMessage(*volume_));
+    }
+    LOG(TRACE) << "SetSliceContent sliceIndex = " << sliceIndex << " -- will "
+      << " now call ScheduleNextSliceDownload()";
+    ScheduleNextSliceDownload();
+  }
+
+  void OrthancSeriesVolumeProgressiveLoader::LoadBestQualitySliceContent(
+    const OrthancStone::GetOrthancImageCommand::SuccessMessage& message)
+  {
+    unsigned int quality = QUALITY_00;
+    if (progressiveQuality_)
+      quality = QUALITY_02;
+
+    SetSliceContent(GetSliceIndexPayload(message.GetOrigin()), 
+                                         message.GetImage(),
+                                         quality);
+  }
+
+  void OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent(
+    const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message)
+  {
+    ORTHANC_ASSERT(progressiveQuality_, "INTERNAL ERROR: OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent"
+                   << " called while progressiveQuality_ is false!");
+
+    LOG(TRACE) << "OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent";
+    unsigned int quality;
+      
+    switch (dynamic_cast<const OrthancStone::GetOrthancWebViewerJpegCommand&>(message.GetOrigin()).GetQuality())
+    {
+      case 50:
+        quality = QUALITY_00;
+        break;
+
+      case 90:
+        quality = QUALITY_01;
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+      
+    SetSliceContent(GetSliceIndexPayload(message.GetOrigin()), message.GetImage(), quality);
+  }
+
+
+  void  OrthancSeriesVolumeProgressiveLoader::SetMetadataSchedulingPriority(int p)
+  {
+    medadataSchedulingPriority_ = p;
+  }
+
+  int   OrthancSeriesVolumeProgressiveLoader::GetMetadataSchedulingPriority() const
+  {
+    return medadataSchedulingPriority_;
+  }
+
+  void  OrthancSeriesVolumeProgressiveLoader::SetSliceSchedulingPriority(int p)
+  {
+    sliceSchedulingPriority_ = p;
+  }
+    
+  int   OrthancSeriesVolumeProgressiveLoader::GetSliceSchedulingPriority() const
+  {
+    return sliceSchedulingPriority_;
+  }
+
+  void  OrthancSeriesVolumeProgressiveLoader::SetSchedulingPriority(int p)
+  {
+    medadataSchedulingPriority_ = p;
+    sliceSchedulingPriority_ = p;
+  }
+
+  OrthancSeriesVolumeProgressiveLoader::OrthancSeriesVolumeProgressiveLoader(
+    OrthancStone::ILoadersContext& loadersContext,
+    boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
+    bool progressiveQuality)
+    : loadersContext_(loadersContext)
+    , active_(false)
+    , progressiveQuality_(progressiveQuality)
+    , simultaneousDownloads_(4)
+    , volume_(volume)
+    , sorter_(new OrthancStone::BasicFetchingItemsSorter::Factory)
+    , volumeImageReadyInHighQuality_(false)
+    , medadataSchedulingPriority_(0)
+    , sliceSchedulingPriority_(0)
+  {
+  }
+
+  boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> 
+    OrthancSeriesVolumeProgressiveLoader::Create(
+      OrthancStone::ILoadersContext& loadersContext,
+      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
+      bool progressiveQuality)
+  {
+    std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext.Lock());
+
+    boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> obj(
+        new OrthancSeriesVolumeProgressiveLoader(
+          loadersContext, volume, progressiveQuality));
+
+    obj->Register<OrthancStone::OrthancRestApiCommand::SuccessMessage>(
+      lock->GetOracleObservable(),
+      &OrthancSeriesVolumeProgressiveLoader::LoadGeometry);
+
+    obj->Register<OrthancStone::GetOrthancImageCommand::SuccessMessage>(
+      lock->GetOracleObservable(),
+      &OrthancSeriesVolumeProgressiveLoader::LoadBestQualitySliceContent);
+
+    obj->Register<OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage>(
+      lock->GetOracleObservable(),
+      &OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent);
+
+    return obj;
+  }
+
+
+  OrthancSeriesVolumeProgressiveLoader::~OrthancSeriesVolumeProgressiveLoader()
+  {
+    LOG(TRACE) << "OrthancSeriesVolumeProgressiveLoader::~OrthancSeriesVolumeProgressiveLoader()";
+  }
+
+  void OrthancSeriesVolumeProgressiveLoader::SetSimultaneousDownloads(unsigned int count)
+  {
+    if (active_)
+    {
+      LOG(ERROR) << "OrthancSeriesVolumeProgressiveLoader::SetSimultaneousDownloads(): (active_)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else if (count == 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);        
+    }
+    else
+    {
+      simultaneousDownloads_ = count;
+    }
+  }
+
+
+  void OrthancSeriesVolumeProgressiveLoader::LoadSeries(const std::string& seriesId)
+  {
+    if (active_)
+    {
+      LOG(ERROR) << "OrthancSeriesVolumeProgressiveLoader::LoadSeries(const std::string& seriesId): (active_)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      active_ = true;
+
+      std::unique_ptr<OrthancStone::OrthancRestApiCommand> command(new OrthancStone::OrthancRestApiCommand);
+      command->SetUri("/series/" + seriesId + "/instances-tags");
+      {
+        std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock());
+        boost::shared_ptr<IObserver> observer(GetSharedObserver());
+        lock->Schedule(observer, medadataSchedulingPriority_, command.release());
+      }
+    }
+  }
+  
+
+  OrthancStone::IVolumeSlicer::IExtractedSlice* 
+  OrthancSeriesVolumeProgressiveLoader::ExtractSlice(const OrthancStone::CoordinateSystem3D& cuttingPlane)
+  {
+    if (volume_->HasGeometry())
+    {
+      return new ExtractedSlice(*this, cuttingPlane);
+    }
+    else
+    {
+      return new IVolumeSlicer::InvalidSlice;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,227 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Loaders/IFetchingItemsSorter.h"
+#include "../Loaders/IFetchingStrategy.h"
+#include "../Messages/IObservable.h"
+#include "../Messages/ObserverBase.h"
+#include "../Oracle/GetOrthancImageCommand.h"
+#include "../Oracle/GetOrthancWebViewerJpegCommand.h"
+#include "../Oracle/IOracle.h"
+#include "../Oracle/OrthancRestApiCommand.h"
+#include "../Toolbox/SlicesSorter.h"
+#include "../Volumes/DicomVolumeImage.h"
+#include "../Volumes/IVolumeSlicer.h"
+
+#include "../Volumes/IGeometryProvider.h"
+
+
+#include <boost/shared_ptr.hpp>
+
+namespace OrthancStone
+{
+  class ILoadersContext;
+  /**
+    This class is used to manage the progressive loading of a volume that
+    is stored in a Dicom series.
+  */
+  class OrthancSeriesVolumeProgressiveLoader : 
+    public OrthancStone::ObserverBase<OrthancSeriesVolumeProgressiveLoader>,
+    public OrthancStone::IObservable,
+    public OrthancStone::IVolumeSlicer,
+    public IGeometryProvider
+  {
+  public:
+    class ISlicePostProcessor
+    {
+    public:
+      virtual void ProcessCTDicomSlice(const Orthanc::DicomMap& dicom) = 0;
+    };
+
+  private:
+    static const unsigned int QUALITY_00 = 0;
+    static const unsigned int QUALITY_01 = 1;
+    static const unsigned int QUALITY_02 = 2;
+        
+    class ExtractedSlice;
+
+   
+    /** Helper class internal to OrthancSeriesVolumeProgressiveLoader */
+    class SeriesGeometry : public boost::noncopyable
+    {
+    private:
+      void CheckSlice(size_t index,
+                      const OrthancStone::DicomInstanceParameters& reference) const;
+    
+      void CheckVolume() const;
+
+      void Clear();
+
+      void CheckSliceIndex(size_t index) const;
+
+      std::unique_ptr<OrthancStone::VolumeImageGeometry>     geometry_;
+      std::vector<OrthancStone::DicomInstanceParameters*>  slices_;
+      std::vector<uint64_t>                  slicesRevision_;
+
+    public:
+      ~SeriesGeometry()
+      {
+        Clear();
+      }
+
+      void ComputeGeometry(OrthancStone::SlicesSorter& slices);
+
+      virtual bool HasGeometry() const
+      {
+        return geometry_.get() != NULL;
+      }
+
+      virtual const OrthancStone::VolumeImageGeometry& GetImageGeometry() const;
+
+      const OrthancStone::DicomInstanceParameters& GetSliceParameters(size_t index) const;
+
+      uint64_t GetSliceRevision(size_t index) const;
+
+      void IncrementSliceRevision(size_t index);
+    };
+
+    void ScheduleNextSliceDownload();
+
+    void LoadGeometry(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message);
+
+    void SetSliceContent(unsigned int sliceIndex,
+                         const Orthanc::ImageAccessor& image,
+                         unsigned int quality);
+
+    void LoadBestQualitySliceContent(const OrthancStone::GetOrthancImageCommand::SuccessMessage& message);
+
+    void LoadJpegSliceContent(const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message);
+
+    OrthancStone::ILoadersContext&  loadersContext_;
+    bool                            active_;
+    bool                            progressiveQuality_;
+    unsigned int                    simultaneousDownloads_;
+    SeriesGeometry                  seriesGeometry_;
+    boost::shared_ptr<OrthancStone::DicomVolumeImage>             volume_;
+    std::unique_ptr<OrthancStone::IFetchingItemsSorter::IFactory> sorter_;
+    std::unique_ptr<OrthancStone::IFetchingStrategy>              strategy_;
+    
+    std::vector<unsigned int>     slicesQuality_;
+    bool                          volumeImageReadyInHighQuality_;
+    
+    boost::shared_ptr<ISlicePostProcessor>  slicePostProcessor_;
+
+    /** See priority setters/getters below */
+    int medadataSchedulingPriority_;
+
+    /** See priority setters/getters below */
+    int sliceSchedulingPriority_;
+
+    OrthancSeriesVolumeProgressiveLoader(
+      OrthancStone::ILoadersContext& loadersContext,
+      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
+      bool progressiveQuality);
+  
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, VolumeImageReadyInHighQuality, OrthancSeriesVolumeProgressiveLoader);
+
+    /**
+    See doc for the progressiveQuality_ field
+    */
+    static boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> Create(
+      OrthancStone::ILoadersContext& context,
+      boost::shared_ptr<OrthancStone::DicomVolumeImage> volume,
+      bool progressiveQuality = false);
+
+    virtual ~OrthancSeriesVolumeProgressiveLoader();
+
+    void SetSimultaneousDownloads(unsigned int count);
+
+    /**
+      Sets the relative priority of the requests for metadata.
+      - if p < PRIORITY_HIGH (-1)                 , the requests will be high priority
+      - if PRIORITY_LOW (100) > p > PRIORITY_HIGH , the requests will be medium priority
+      - if p > PRIORITY_LOW                       , the requests will be low priority
+
+      Default is 0 (medium)
+    */
+    void  SetMetadataSchedulingPriority(int p);
+
+    /** @see SetMetadataSchedulingPriority */
+    int   GetMetadataSchedulingPriority() const;
+
+    /** Same as SetMetadataSchedulingPriority, for slices. Default is 0. */
+    void  SetSliceSchedulingPriority(int p);
+    
+    /** @see SetSliceSchedulingPriority */
+    int   GetSliceSchedulingPriority() const;
+
+    /** Sets priorities for all requests. @see SetMetadataSchedulingPriority */
+    void  SetSchedulingPriority(int p);
+
+    void SetDicomSlicePostProcessor(boost::shared_ptr<ISlicePostProcessor> slicePostProcessor)
+    {
+      // this will delete the previously stored slice processor, if any
+      slicePostProcessor_ = slicePostProcessor;
+    }
+
+    boost::shared_ptr<ISlicePostProcessor> GetDicomSlicePostProcessor()
+    {
+      // this could be empty!
+      return slicePostProcessor_;
+    }
+
+    bool IsVolumeImageReadyInHighQuality() const
+    {
+      return volumeImageReadyInHighQuality_;
+    }
+
+    void LoadSeries(const std::string& seriesId);
+
+    /**
+    This getter is used by clients that do not receive the geometry through
+    subscribing, for instance if they are created or listening only AFTER the
+    "geometry loaded" message is broadcast 
+    */
+    bool HasGeometry() const ORTHANC_OVERRIDE
+    {
+      return seriesGeometry_.HasGeometry();
+    }
+
+    /**
+    Same remark as HasGeometry
+    */
+    const OrthancStone::VolumeImageGeometry& GetImageGeometry() const ORTHANC_OVERRIDE
+    {
+      return seriesGeometry_.GetImageGeometry();
+    }
+
+    /**
+    When a slice is requested, the strategy algorithm (that defines the 
+    sequence of resources to be loaded from the server) is modified to 
+    take into account this request (this is done in the ExtractedSlice ctor)
+    */
+    virtual IExtractedSlice*
+      ExtractSlice(const OrthancStone::CoordinateSystem3D& cuttingPlane) ORTHANC_OVERRIDE;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/SeriesFramesLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,550 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SeriesFramesLoader.h"
+
+#include "../Oracle/ParseDicomFromFileCommand.h"
+#include "../Oracle/ParseDicomFromWadoCommand.h"
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include <DicomParsing/Internals/DicomImageDecoder.h>
+#endif
+
+#include <DicomFormat/DicomInstanceHasher.h>
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <Images/JpegReader.h>
+
+#include <boost/algorithm/string/predicate.hpp>
+
+namespace OrthancStone
+{  
+  class SeriesFramesLoader::Payload : public Orthanc::IDynamicObject
+  {
+  private:
+    DicomSource   source_;
+    size_t        seriesIndex_;
+    std::string   sopInstanceUid_;  // Only used for debug purpose
+    unsigned int  quality_;
+    bool          hasWindowing_;
+    float         windowingCenter_;
+    float         windowingWidth_;
+    std::unique_ptr<Orthanc::IDynamicObject>  userPayload_;
+
+  public:
+    Payload(const DicomSource& source,
+            size_t seriesIndex,
+            const std::string& sopInstanceUid,
+            unsigned int quality,
+            Orthanc::IDynamicObject* userPayload) :
+      source_(source),
+      seriesIndex_(seriesIndex),
+      sopInstanceUid_(sopInstanceUid),
+      quality_(quality),
+      hasWindowing_(false),
+      userPayload_(userPayload)
+    {
+    }
+
+    size_t GetSeriesIndex() const
+    {
+      return seriesIndex_;
+    }
+
+    const std::string& GetSopInstanceUid() const
+    {
+      return sopInstanceUid_;
+    }
+
+    unsigned int GetQuality() const
+    {
+      return quality_;
+    }
+
+    void SetWindowing(float center,
+                      float width)
+    {
+      hasWindowing_ = true;
+      windowingCenter_ = center;
+      windowingWidth_ = width;
+    }
+
+    bool HasWindowing() const
+    {
+      return hasWindowing_;
+    }
+
+    float GetWindowingCenter() const
+    {
+      if (hasWindowing_)
+      {
+        return windowingCenter_;
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+    }
+
+    float GetWindowingWidth() const
+    {
+      if (hasWindowing_)
+      {
+        return windowingWidth_;
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+    }
+
+    const DicomSource& GetSource() const
+    {
+      return source_;
+    }
+
+    Orthanc::IDynamicObject* GetUserPayload() const
+    {
+      return userPayload_.get();
+    }
+  };
+    
+
+  SeriesFramesLoader::SeriesFramesLoader(ILoadersContext& context,
+                                         LoadedDicomResources& instances,
+                                         const std::string& dicomDirPath,
+                                         boost::shared_ptr<LoadedDicomResources> dicomDir) :
+    context_(context),
+    frames_(instances),
+    dicomDirPath_(dicomDirPath),
+    dicomDir_(dicomDir)
+  {
+  }
+
+
+  void SeriesFramesLoader::EmitMessage(const Payload& payload,
+                                       const Orthanc::ImageAccessor& image)
+  {
+    const DicomInstanceParameters& parameters = frames_.GetInstanceParameters(payload.GetSeriesIndex());
+    const Orthanc::DicomMap& instance = frames_.GetInstance(payload.GetSeriesIndex());
+    size_t frameIndex = frames_.GetFrameIndex(payload.GetSeriesIndex());
+
+    if (frameIndex >= parameters.GetImageInformation().GetNumberOfFrames() ||
+        payload.GetSopInstanceUid() != parameters.GetSopInstanceUid())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }      
+
+    LOG(TRACE) << "Decoded instance " << payload.GetSopInstanceUid() << ", frame "
+               << frameIndex << ": " << image.GetWidth() << "x"
+               << image.GetHeight() << ", " << Orthanc::EnumerationToString(image.GetFormat())
+               << ", quality " << payload.GetQuality();
+      
+    FrameLoadedMessage message(*this, frameIndex, payload.GetQuality(), image, instance, parameters, payload.GetUserPayload());
+    BroadcastMessage(message);
+  }
+
+
+#if ORTHANC_ENABLE_DCMTK == 1
+  void SeriesFramesLoader::HandleDicom(const Payload& payload,
+                                       Orthanc::ParsedDicomFile& dicom)
+  {     
+    size_t frameIndex = frames_.GetFrameIndex(payload.GetSeriesIndex());
+
+    std::unique_ptr<Orthanc::ImageAccessor> decoded;
+    decoded.reset(Orthanc::DicomImageDecoder::Decode(
+      dicom, 
+      static_cast<unsigned int>(frameIndex)));
+
+    if (decoded.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    EmitMessage(payload, *decoded);
+  }
+#endif
+
+    
+  void SeriesFramesLoader::HandleDicomWebRendered(const Payload& payload,
+                                                  const std::string& body,
+                                                  const std::map<std::string, std::string>& headers)
+  {
+    assert(payload.GetSource().IsDicomWeb() &&
+           payload.HasWindowing());
+
+    bool ok = false;
+    for (std::map<std::string, std::string>::const_iterator it = headers.begin();
+         it != headers.end(); ++it)
+    {
+      if (boost::iequals("content-type", it->first) &&
+          boost::iequals(Orthanc::MIME_JPEG, it->second))
+      {
+        ok = true;
+        break;
+      }
+    }
+
+    if (!ok)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
+                                      "The WADO-RS server has not generated a JPEG image on /rendered");
+    }
+
+    Orthanc::JpegReader reader;
+    reader.ReadFromMemory(body);
+
+    switch (reader.GetFormat())
+    {
+      case Orthanc::PixelFormat_RGB24:
+        EmitMessage(payload, reader);
+        break;
+
+      case Orthanc::PixelFormat_Grayscale8:
+      {
+        const DicomInstanceParameters& parameters = frames_.GetInstanceParameters(payload.GetSeriesIndex());
+
+        Orthanc::Image scaled(parameters.GetExpectedPixelFormat(), reader.GetWidth(), reader.GetHeight(), false);
+        Orthanc::ImageProcessing::Convert(scaled, reader);
+          
+        float w = payload.GetWindowingWidth();
+        if (w <= 0.01f)
+        {
+          w = 0.01f;  // Prevent division by zero
+        }
+
+        const float c = payload.GetWindowingCenter();
+        const float scaling = w / 255.0f;
+        const float offset = (c - w / 2.0f) / scaling;
+
+        Orthanc::ImageProcessing::ShiftScale(scaled, offset, scaling, false /* truncation to speed up */);
+        EmitMessage(payload, scaled);
+        break;
+      }
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+
+
+#if ORTHANC_ENABLE_DCMTK == 1
+  void SeriesFramesLoader::Handle(const ParseDicomSuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+
+    const Payload& payload = dynamic_cast<const Payload&>(message.GetOrigin().GetPayload());
+    if ((payload.GetSource().IsDicomDir() ||
+         payload.GetSource().IsDicomWeb()) &&
+        message.HasPixelData())
+    {
+      HandleDicom(dynamic_cast<const Payload&>(message.GetOrigin().GetPayload()), message.GetDicom());
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+#endif
+
+
+  void SeriesFramesLoader::Handle(const GetOrthancImageCommand::SuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+
+    const Payload& payload = dynamic_cast<const Payload&>(message.GetOrigin().GetPayload());
+    assert(payload.GetSource().IsOrthanc());
+
+    EmitMessage(payload, message.GetImage());
+  }
+
+
+  void SeriesFramesLoader::Handle(const GetOrthancWebViewerJpegCommand::SuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+
+    const Payload& payload = dynamic_cast<const Payload&>(message.GetOrigin().GetPayload());
+    assert(payload.GetSource().IsOrthanc());
+
+    EmitMessage(payload, message.GetImage());
+  }
+
+
+  void SeriesFramesLoader::Handle(const OrthancRestApiCommand::SuccessMessage& message)
+  {
+    // This is to handle "/rendered" in DICOMweb
+    assert(message.GetOrigin().HasPayload());
+    HandleDicomWebRendered(dynamic_cast<const Payload&>(message.GetOrigin().GetPayload()),
+                           message.GetAnswer(), message.GetAnswerHeaders());
+  }
+
+
+  void SeriesFramesLoader::Handle(const HttpCommand::SuccessMessage& message)
+  {
+    // This is to handle "/rendered" in DICOMweb
+    assert(message.GetOrigin().HasPayload());
+    HandleDicomWebRendered(dynamic_cast<const Payload&>(message.GetOrigin().GetPayload()),
+                           message.GetAnswer(), message.GetAnswerHeaders());
+  }
+
+
+  void SeriesFramesLoader::GetPreviewWindowing(float& center,
+                                               float& width,
+                                               size_t index) const
+  {
+    const Orthanc::DicomMap& instance = frames_.GetInstance(index);
+    const DicomInstanceParameters& parameters = frames_.GetInstanceParameters(index);
+
+    if (parameters.HasDefaultWindowing())
+    {
+      // TODO - Handle multiple presets (take the largest width)
+      center = parameters.GetDefaultWindowingCenter();
+      width = parameters.GetDefaultWindowingWidth();
+    }
+    else
+    {
+      float a, b;
+      if (instance.ParseFloat(a, Orthanc::DICOM_TAG_SMALLEST_IMAGE_PIXEL_VALUE) &&
+          instance.ParseFloat(b, Orthanc::DICOM_TAG_LARGEST_IMAGE_PIXEL_VALUE) &&
+          a < b)
+      {
+        center = (a + b) / 2.0f;
+        width = (b - a);
+      }
+      else
+      {
+        // Cannot infer a suitable windowing from the available tags
+        center = 128.0f;
+        width = 256.0f;
+      }
+    }
+  }
+
+  
+  Orthanc::IDynamicObject& SeriesFramesLoader::FrameLoadedMessage::GetUserPayload() const
+  {
+    if (userPayload_)
+    {
+      return *userPayload_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  void SeriesFramesLoader::Factory::SetDicomDir(const std::string& dicomDirPath,
+                                                boost::shared_ptr<LoadedDicomResources> dicomDir)
+  {
+    dicomDirPath_ = dicomDirPath;
+    dicomDir_ = dicomDir;
+  }
+
+
+  boost::shared_ptr<IObserver> SeriesFramesLoader::Factory::Create(ILoadersContext::ILock& stone)
+  {
+    boost::shared_ptr<SeriesFramesLoader> loader(
+      new SeriesFramesLoader(stone.GetContext(), instances_, dicomDirPath_, dicomDir_));
+    loader->Register<GetOrthancImageCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesFramesLoader::Handle);
+    loader->Register<GetOrthancWebViewerJpegCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesFramesLoader::Handle);
+    loader->Register<HttpCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesFramesLoader::Handle);
+    loader->Register<OrthancRestApiCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesFramesLoader::Handle);
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    loader->Register<ParseDicomSuccessMessage>(stone.GetOracleObservable(), &SeriesFramesLoader::Handle);
+#endif
+
+    return loader;
+  }
+
+
+  void SeriesFramesLoader::ScheduleLoadFrame(int priority,
+                                             const DicomSource& source,
+                                             size_t index,
+                                             unsigned int quality,
+                                             Orthanc::IDynamicObject* userPayload)
+  {
+    std::unique_ptr<Orthanc::IDynamicObject> protection(userPayload);
+    
+    if (index >= frames_.GetFramesCount() ||
+        quality >= source.GetQualityCount())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    const Orthanc::DicomMap& instance = frames_.GetInstance(index);
+
+    std::string sopInstanceUid;
+    if (!instance.LookupStringValue(sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
+                                      "Missing SOPInstanceUID in a DICOM instance");
+    }
+      
+    if (source.IsDicomDir())
+    {
+      if (dicomDir_.get() == NULL)
+      {
+        // Should have been set in the factory
+        throw Orthanc::OrthancException(
+          Orthanc::ErrorCode_BadSequenceOfCalls,
+          "SeriesFramesLoader::Factory::SetDicomDir() should have been called");
+      }
+        
+      assert(quality == 0);
+        
+      std::string file;
+      if (dicomDir_->LookupStringValue(file, sopInstanceUid, Orthanc::DICOM_TAG_REFERENCED_FILE_ID))
+      {
+        std::unique_ptr<ParseDicomFromFileCommand> command(new ParseDicomFromFileCommand(source, dicomDirPath_, file));
+        command->SetPixelDataIncluded(true);
+        command->AcquirePayload(new Payload(source, index, sopInstanceUid, quality, protection.release()));
+
+        {
+          std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+          lock->Schedule(GetSharedObserver(), priority, command.release());
+        }
+      }
+      else
+      {
+        LOG(WARNING) << "Missing tag ReferencedFileID in a DICOMDIR entry";
+      }
+    }
+    else if (source.IsDicomWeb())
+    {
+      std::string studyInstanceUid, seriesInstanceUid;
+      if (!instance.LookupStringValue(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) ||
+          !instance.LookupStringValue(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
+                                        "Missing StudyInstanceUID or SeriesInstanceUID in a DICOM instance");
+      }
+
+      const std::string uri = ("/studies/" + studyInstanceUid +
+                               "/series/" + seriesInstanceUid +
+                               "/instances/" + sopInstanceUid);
+
+      if (source.HasDicomWebRendered() &&
+          quality == 0)
+      {
+        float c, w;
+        GetPreviewWindowing(c, w, index);
+
+        std::map<std::string, std::string> arguments, headers;
+        arguments["window"] = (boost::lexical_cast<std::string>(c) + "," +
+                               boost::lexical_cast<std::string>(w) + ",linear");
+        headers["Accept"] = "image/jpeg";
+
+        std::unique_ptr<Payload> payload(new Payload(source, index, sopInstanceUid, quality, protection.release()));
+        payload->SetWindowing(c, w);
+
+        {
+          std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+          lock->Schedule(GetSharedObserver(), priority,
+                         source.CreateDicomWebCommand(uri + "/rendered", arguments, headers, payload.release()));
+        }
+      }
+      else
+      {
+        assert((source.HasDicomWebRendered() && quality == 1) ||
+               (!source.HasDicomWebRendered() && quality == 0));
+
+#if ORTHANC_ENABLE_DCMTK == 1
+        std::unique_ptr<Payload> payload(new Payload(source, index, sopInstanceUid, quality, protection.release()));
+
+        const std::map<std::string, std::string> empty;
+
+        std::unique_ptr<ParseDicomFromWadoCommand> command(
+          new ParseDicomFromWadoCommand(source, sopInstanceUid, source.CreateDicomWebCommand(uri, empty, empty, NULL)));
+        command->AcquirePayload(payload.release());
+
+        {
+          std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+          lock->Schedule(GetSharedObserver(), priority, command.release());
+        }
+#else
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
+                                        "DCMTK is not enabled, cannot parse a DICOM instance");
+#endif
+      }
+    }
+    else if (source.IsOrthanc())
+    {
+      std::string orthancId;
+
+      {
+        std::string patientId, studyInstanceUid, seriesInstanceUid;
+        if (!instance.LookupStringValue(patientId, Orthanc::DICOM_TAG_PATIENT_ID, false) ||
+            !instance.LookupStringValue(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) ||
+            !instance.LookupStringValue(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
+                                          "Missing StudyInstanceUID or SeriesInstanceUID in a DICOM instance");
+        }
+
+        Orthanc::DicomInstanceHasher hasher(patientId, studyInstanceUid, seriesInstanceUid, sopInstanceUid);
+        orthancId = hasher.HashInstance();
+      }
+
+      const DicomInstanceParameters& parameters = frames_.GetInstanceParameters(index);
+
+      if (quality == 0 && source.HasOrthancWebViewer1())
+      {
+        std::unique_ptr<GetOrthancWebViewerJpegCommand> command(new GetOrthancWebViewerJpegCommand);
+        command->SetInstance(orthancId);
+        command->SetExpectedPixelFormat(parameters.GetExpectedPixelFormat());
+        command->AcquirePayload(new Payload(source, index, sopInstanceUid, quality, protection.release()));
+
+        {
+          std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+          lock->Schedule(GetSharedObserver(), priority, command.release());
+        }
+      }
+      else if (quality == 0 && source.HasOrthancAdvancedPreview())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+      else
+      {
+        assert(quality <= 1);
+        assert(quality == 0 || 
+               source.HasOrthancWebViewer1() || 
+               source.HasOrthancAdvancedPreview());
+
+        std::unique_ptr<GetOrthancImageCommand> command(new GetOrthancImageCommand);
+        command->SetFrameUri(orthancId, frames_.GetFrameIndex(index), parameters.GetExpectedPixelFormat());
+        command->SetExpectedPixelFormat(parameters.GetExpectedPixelFormat());
+        command->SetHttpHeader("Accept", Orthanc::MIME_PAM);
+        command->AcquirePayload(new Payload(source, index, sopInstanceUid, quality, protection.release()));
+
+        {
+          std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+          lock->Schedule(GetSharedObserver(), priority, command.release());
+        }
+      }
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/SeriesFramesLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,178 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../OrthancStone.h"
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error The macro ORTHANC_ENABLE_DCMTK must be defined
+#endif
+
+#include "OracleScheduler.h"
+#include "DicomSource.h"
+#include "SeriesOrderedFrames.h"
+#include "ILoaderFactory.h"
+
+namespace OrthancStone
+{  
+  class SeriesFramesLoader : 
+    public ObserverBase<SeriesFramesLoader>,
+    public IObservable
+  {
+  private:
+    class Payload;
+
+    ILoadersContext&                         context_;
+    SeriesOrderedFrames                      frames_;
+    std::string                              dicomDirPath_;
+    boost::shared_ptr<LoadedDicomResources>  dicomDir_;
+
+    SeriesFramesLoader(ILoadersContext& context,
+                       LoadedDicomResources& instances,
+                       const std::string& dicomDirPath,
+                       boost::shared_ptr<LoadedDicomResources> dicomDir);
+
+    void EmitMessage(const Payload& payload,
+                     const Orthanc::ImageAccessor& image);
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    void HandleDicom(const Payload& payload,
+                     Orthanc::ParsedDicomFile& dicom);
+#endif
+    
+    void HandleDicomWebRendered(const Payload& payload,
+                                const std::string& body,
+                                const std::map<std::string, std::string>& headers);
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    void Handle(const ParseDicomSuccessMessage& message);
+#endif
+
+    void Handle(const GetOrthancImageCommand::SuccessMessage& message);
+
+    void Handle(const GetOrthancWebViewerJpegCommand::SuccessMessage& message);
+
+    void Handle(const OrthancRestApiCommand::SuccessMessage& message);
+
+    void Handle(const HttpCommand::SuccessMessage& message);
+
+    void GetPreviewWindowing(float& center,
+                             float& width,
+                             size_t index) const;
+
+  public:
+    class FrameLoadedMessage : public OriginMessage<SeriesFramesLoader>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      size_t                          frameIndex_;
+      unsigned int                    quality_;
+      const Orthanc::ImageAccessor&   image_;
+      const Orthanc::DicomMap&        instance_;
+      const DicomInstanceParameters&  parameters_;
+      Orthanc::IDynamicObject*        userPayload_; // Ownership is maintained by the caller
+
+    public:
+      FrameLoadedMessage(const SeriesFramesLoader& loader,
+                         size_t frameIndex,
+                         unsigned int quality,
+                         const Orthanc::ImageAccessor& image,
+                         const Orthanc::DicomMap& instance,
+                         const DicomInstanceParameters&  parameters,
+                         Orthanc::IDynamicObject* userPayload) :
+        OriginMessage(loader),
+        frameIndex_(frameIndex),
+        quality_(quality),
+        image_(image),
+        instance_(instance),
+        parameters_(parameters),
+        userPayload_(userPayload)
+      {
+      }
+
+      size_t GetFrameIndex() const
+      {
+        return frameIndex_;
+      }
+
+      unsigned int GetQuality() const
+      {
+        return quality_;
+      }
+
+      const Orthanc::ImageAccessor& GetImage() const
+      {
+        return image_;
+      }
+
+      const Orthanc::DicomMap& GetInstance() const
+      {
+        return instance_;
+      }
+
+      const DicomInstanceParameters& GetInstanceParameters() const
+      {
+        return parameters_;
+      }
+
+      bool HasUserPayload() const
+      {
+        return userPayload_ != NULL;
+      }
+
+      Orthanc::IDynamicObject& GetUserPayload() const;
+    };
+
+
+    class Factory : public ILoaderFactory
+    {
+    private:
+      LoadedDicomResources&                    instances_;
+      std::string                              dicomDirPath_;
+      boost::shared_ptr<LoadedDicomResources>  dicomDir_;
+
+    public:
+      // No "const" because "LoadedDicomResources::GetResource()" will call "Flatten()"
+      Factory(LoadedDicomResources& instances) :
+      instances_(instances)
+      {
+      }
+
+      void SetDicomDir(const std::string& dicomDirPath,
+                       boost::shared_ptr<LoadedDicomResources> dicomDir);
+
+      virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& context);
+    };
+
+    const SeriesOrderedFrames& GetOrderedFrames() const
+    {
+      return frames_;
+    }
+
+    void ScheduleLoadFrame(int priority,
+                           const DicomSource& source,
+                           size_t index,
+                           unsigned int quality,
+                           Orthanc::IDynamicObject* userPayload /* transfer ownership */);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/SeriesMetadataLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,346 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SeriesMetadataLoader.h"
+
+#include <DicomFormat/DicomInstanceHasher.h>
+
+namespace OrthancStone
+{
+  SeriesMetadataLoader::SeriesMetadataLoader(boost::shared_ptr<DicomResourcesLoader>& loader) :
+    loader_(loader),
+    state_(State_Setup)
+  {
+  }
+
+
+  bool SeriesMetadataLoader::IsScheduledWithHigherPriority(const std::string& seriesInstanceUid,
+                                                           int priority) const
+  {
+    if (series_.find(seriesInstanceUid) != series_.end())
+    {
+      // This series is readily available
+      return true;
+    }
+    else
+    {
+      std::map<std::string, int>::const_iterator found = scheduled_.find(seriesInstanceUid);
+
+      return (found != scheduled_.end() &&
+              found->second < priority);
+    }
+  }
+
+
+  void SeriesMetadataLoader::Handle(const DicomResourcesLoader::SuccessMessage& message)
+  {
+    assert(message.GetResources());
+
+    switch (state_)
+    {
+      case State_Setup:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+
+      case State_Default:
+      {
+        std::string studyInstanceUid;
+        std::string seriesInstanceUid;
+
+        if (message.GetResources()->LookupTagValueConsensus(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID) &&
+            message.GetResources()->LookupTagValueConsensus(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID))
+        {
+          series_[seriesInstanceUid] = message.GetResources();
+
+          SuccessMessage loadedMessage(*this, message.GetDicomSource(), studyInstanceUid,
+                                       seriesInstanceUid, *message.GetResources());
+          BroadcastMessage(loadedMessage);
+        }
+
+        break;
+      }
+
+      case State_DicomDir:
+      {
+        assert(!dicomDir_);
+        assert(seriesSize_.empty());
+
+        dicomDir_ = message.GetResources();
+            
+        for (size_t i = 0; i < message.GetResources()->GetSize(); i++)
+        {
+          std::string seriesInstanceUid;
+          if (message.GetResources()->GetResource(i).LookupStringValue
+              (seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
+          {
+            boost::shared_ptr<OrthancStone::LoadedDicomResources> target
+              (new OrthancStone::LoadedDicomResources(Orthanc::DICOM_TAG_SOP_INSTANCE_UID));
+
+            if (loader_->ScheduleLoadDicomFile(target, message.GetPriority(), message.GetDicomSource(), dicomDirPath_, 
+                                               message.GetResources()->GetResource(i), false /* no need for pixel data */,
+                                               NULL /* TODO PAYLOAD */))
+            {
+              std::map<std::string, unsigned int>::iterator found = seriesSize_.find(seriesInstanceUid);
+              if (found == seriesSize_.end())
+              {
+                series_[seriesInstanceUid].reset
+                  (new OrthancStone::LoadedDicomResources(Orthanc::DICOM_TAG_SOP_INSTANCE_UID));
+                seriesSize_[seriesInstanceUid] = 1;
+              }
+              else
+              {
+                found->second ++;
+              }
+            }
+          }
+        }
+
+        LOG(INFO) << "Read a DICOMDIR containing " << seriesSize_.size() << " series";            
+
+        state_ = State_DicomFile;
+        break;
+      }
+
+      case State_DicomFile:
+      {
+        assert(dicomDir_);
+        assert(message.GetResources()->GetSize() <= 1);  // Could be zero if corrupted DICOM instance
+
+        if (message.GetResources()->GetSize() == 1)
+        {
+          const Orthanc::DicomMap& instance = message.GetResources()->GetResource(0);
+
+          std::string studyInstanceUid;
+          std::string seriesInstanceUid;
+          if (instance.LookupStringValue(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) &&
+              instance.LookupStringValue(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
+          {
+            Series::const_iterator series = series_.find(seriesInstanceUid);
+            std::map<std::string, unsigned int>::const_iterator size = seriesSize_.find(seriesInstanceUid);
+
+            if (series == series_.end() ||
+                size == seriesSize_.end())
+            {
+              throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+            }
+            else
+            {
+              series->second->AddResource(instance);
+
+              if (series->second->GetSize() > size->second)
+              {
+                throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+              }
+              else if (series->second->GetSize() == size->second)
+              {
+                // The series is complete
+                SuccessMessage loadedMessage(
+                  *this, message.GetDicomSource(),
+                  studyInstanceUid, seriesInstanceUid, *series->second);
+                loadedMessage.SetDicomDir(dicomDirPath_, dicomDir_);
+                BroadcastMessage(loadedMessage);
+              }
+            }
+          }
+        }
+
+        break;
+      }
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+  SeriesMetadataLoader::SuccessMessage::SuccessMessage(
+    const SeriesMetadataLoader& loader,
+    const DicomSource& source,
+    const std::string& studyInstanceUid,
+    const std::string& seriesInstanceUid,
+    LoadedDicomResources& instances) :
+    OriginMessage(loader),
+    source_(source),
+    studyInstanceUid_(studyInstanceUid),
+    seriesInstanceUid_(seriesInstanceUid),
+    instances_(instances)
+  {
+    LOG(INFO) << "Loaded series " << seriesInstanceUid
+              << ", number of instances: " << instances_.GetSize();
+  }
+
+
+  boost::shared_ptr<SeriesMetadataLoader> SeriesMetadataLoader::Create(ILoadersContext::ILock& context)
+  {
+    boost::shared_ptr<DicomResourcesLoader> loader(DicomResourcesLoader::Create(context));
+      
+    boost::shared_ptr<SeriesMetadataLoader> obj(new SeriesMetadataLoader(loader));
+    obj->Register<DicomResourcesLoader::SuccessMessage>(*loader, &SeriesMetadataLoader::Handle);
+    return obj;
+  }
+
+
+  SeriesMetadataLoader::Accessor::Accessor(SeriesMetadataLoader& that,
+                                           const std::string& seriesInstanceUid)
+  {
+    Series::const_iterator found = that.series_.find(seriesInstanceUid);
+    if (found != that.series_.end())
+    {
+      assert(found->second != NULL);
+      series_ = found->second;
+    }
+  }
+
+
+  size_t SeriesMetadataLoader::Accessor::GetInstancesCount() const
+  {
+    if (IsComplete())
+    {
+      return series_->GetSize();
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  const Orthanc::DicomMap& SeriesMetadataLoader::Accessor::GetInstance(size_t index) const
+  {
+    if (IsComplete())
+    {
+      return series_->GetResource(index);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }     
+  }
+
+
+  void SeriesMetadataLoader::ScheduleLoadSeries(int priority,
+                                                const DicomSource& source,
+                                                const std::string& studyInstanceUid,
+                                                const std::string& seriesInstanceUid)
+  {
+    if (state_ != State_Setup &&
+        state_ != State_Default)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                      "The loader is working in DICOMDIR state");
+    }
+
+    state_ = State_Default;
+
+    // Only re-schedule the loading if the previous loading was with lower priority
+    if (!IsScheduledWithHigherPriority(seriesInstanceUid, priority))
+    {
+      if (source.IsDicomWeb())
+      {
+        boost::shared_ptr<LoadedDicomResources> target
+          (new LoadedDicomResources(Orthanc::DICOM_TAG_SOP_INSTANCE_UID));
+        loader_->ScheduleGetDicomWeb(
+          target, priority, source,
+          "/studies/" + studyInstanceUid + "/series/" + seriesInstanceUid + "/metadata",
+          NULL /* TODO PAYLOAD */);
+
+        scheduled_[seriesInstanceUid] = priority;
+      }
+      else if (source.IsOrthanc())
+      {
+        // This flavor of the method is only available with DICOMweb, as
+        // Orthanc requires the "PatientID" to be known
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                        "The PatientID must be provided on Orthanc sources");
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+    }
+  }
+
+
+  void SeriesMetadataLoader::ScheduleLoadSeries(int priority,
+                                                const DicomSource& source,
+                                                const std::string& patientId,
+                                                const std::string& studyInstanceUid,
+                                                const std::string& seriesInstanceUid)
+  {
+    if (state_ != State_Setup &&
+        state_ != State_Default)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                      "The loader is working in DICOMDIR state");
+    }
+
+    state_ = State_Default;
+
+    if (source.IsDicomWeb())
+    {
+      ScheduleLoadSeries(priority, source, studyInstanceUid, seriesInstanceUid);
+    }
+    else if (!IsScheduledWithHigherPriority(seriesInstanceUid, priority))
+    {
+      if (source.IsOrthanc())
+      {
+        // Dummy SOP Instance UID, as we are working at the "series" level
+        Orthanc::DicomInstanceHasher hasher(patientId, studyInstanceUid, seriesInstanceUid, "dummy");
+
+        boost::shared_ptr<LoadedDicomResources> target
+          (new LoadedDicomResources(Orthanc::DICOM_TAG_SOP_INSTANCE_UID));
+        
+        loader_->ScheduleLoadOrthancResources(target, priority, source, Orthanc::ResourceType_Series,
+                                              hasher.HashSeries(), Orthanc::ResourceType_Instance,
+                                              NULL /* TODO PAYLOAD */);
+
+        scheduled_[seriesInstanceUid] = priority;
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+    }
+  }
+
+
+  void SeriesMetadataLoader::ScheduleLoadDicomDir(int priority,
+                                                  const DicomSource& source,
+                                                  const std::string& path)
+  {
+    if (!source.IsDicomDir())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    if (state_ != State_Setup)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                      "The loader cannot load two different DICOMDIR");
+    }
+
+    state_ = State_DicomDir;
+    dicomDirPath_ = path;
+    boost::shared_ptr<LoadedDicomResources> dicomDir
+      (new LoadedDicomResources(Orthanc::DICOM_TAG_REFERENCED_SOP_INSTANCE_UID_IN_FILE));
+    loader_->ScheduleLoadDicomDir(dicomDir, priority, source, path,
+                                  NULL /* TODO PAYLOAD */);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/SeriesMetadataLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,176 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "DicomResourcesLoader.h"
+
+namespace OrthancStone
+{
+  class SeriesMetadataLoader :
+    public ObserverBase<SeriesMetadataLoader>,
+    public IObservable
+  {
+  private:
+    enum State
+    {
+      State_Setup,
+      State_Default,
+      State_DicomDir,
+      State_DicomFile
+    };
+
+    typedef std::map<std::string, boost::shared_ptr<LoadedDicomResources> >  Series;
+
+    boost::shared_ptr<DicomResourcesLoader>  loader_;
+    State                                    state_;
+    std::map<std::string, int>               scheduled_;   // Maps a "SeriesInstanceUID" to a priority
+    Series                                   series_;
+    boost::shared_ptr<LoadedDicomResources>  dicomDir_;
+    std::string                              dicomDirPath_;
+    std::map<std::string, unsigned int>      seriesSize_;
+
+    SeriesMetadataLoader(boost::shared_ptr<DicomResourcesLoader>& loader);
+
+    bool IsScheduledWithHigherPriority(const std::string& seriesInstanceUid,
+                                       int priority) const;
+
+    void Handle(const DicomResourcesLoader::SuccessMessage& message);
+
+  public:
+    class SuccessMessage : public OriginMessage<SeriesMetadataLoader>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+    private:
+      const DicomSource&     source_;
+      const std::string&     studyInstanceUid_;
+      const std::string&     seriesInstanceUid_;
+      LoadedDicomResources&  instances_;
+      std::string            dicomDirPath_;
+      boost::shared_ptr<LoadedDicomResources>  dicomDir_;
+
+    public:
+      SuccessMessage(const SeriesMetadataLoader& loader,
+                     const DicomSource& source,
+                     const std::string& studyInstanceUid,
+                     const std::string& seriesInstanceUid,
+                     LoadedDicomResources& instances);
+
+      const DicomSource& GetDicomSource() const
+      {
+        return source_;
+      }
+      
+      const std::string& GetStudyInstanceUid() const
+      {
+        return studyInstanceUid_;
+      }
+
+      const std::string& GetSeriesInstanceUid() const
+      {
+        return seriesInstanceUid_;
+      }
+
+      size_t GetInstancesCount() const
+      {
+        return instances_.GetSize();
+      }
+
+      const Orthanc::DicomMap& GetInstance(size_t index) const
+      {
+        return instances_.GetResource(index);
+      }
+
+      LoadedDicomResources& GetInstances() const
+      {
+        return instances_;
+      }
+
+      void SetDicomDir(const std::string& dicomDirPath,
+                       boost::shared_ptr<LoadedDicomResources> dicomDir)
+      {
+        dicomDirPath_ = dicomDirPath;
+        dicomDir_ = dicomDir;
+      }
+
+      const std::string& GetDicomDirPath() const
+      {
+        return dicomDirPath_;
+      }
+
+      // Will be NULL on non-DICOMDIR sources
+      boost::shared_ptr<LoadedDicomResources> GetDicomDir() const
+      {
+        return dicomDir_;
+      }
+    };
+
+  
+    class Factory : public ILoaderFactory
+    {
+    public:
+      virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& context)
+      {
+        return SeriesMetadataLoader::Create(context);
+      }
+    };
+
+
+    static boost::shared_ptr<SeriesMetadataLoader> Create(ILoadersContext::ILock& context);
+
+  
+    class Accessor : public boost::noncopyable
+    {
+    private:
+      boost::shared_ptr<LoadedDicomResources>  series_;
+
+    public:
+      Accessor(SeriesMetadataLoader& that,
+               const std::string& seriesInstanceUid);
+
+      bool IsComplete() const
+      {
+        return series_ != NULL;
+      }
+
+      size_t GetInstancesCount() const;
+
+      const Orthanc::DicomMap& GetInstance(size_t index) const;
+    };
+
+
+    void ScheduleLoadSeries(int priority,
+                            const DicomSource& source,
+                            const std::string& studyInstanceUid,
+                            const std::string& seriesInstanceUid);
+
+    void ScheduleLoadSeries(int priority,
+                            const DicomSource& source,
+                            const std::string& patientId,
+                            const std::string& studyInstanceUid,
+                            const std::string& seriesInstanceUid);
+
+    void ScheduleLoadDicomDir(int priority,
+                              const DicomSource& source,
+                              const std::string& path);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/SeriesOrderedFrames.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,345 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "../Toolbox/SlicesSorter.h"
+#include "SeriesOrderedFrames.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  class SeriesOrderedFrames::Instance : public boost::noncopyable
+  {
+  private:
+    std::unique_ptr<Orthanc::DicomMap>  dicom_;
+    DicomInstanceParameters           parameters_;
+
+  public:
+    Instance(const Orthanc::DicomMap& dicom) :
+      dicom_(dicom.Clone()),
+      parameters_(dicom)
+    {
+    }
+    
+    const Orthanc::DicomMap& GetInstance() const
+    {
+      return *dicom_;
+    }
+    
+    const DicomInstanceParameters& GetInstanceParameters() const
+    {
+      return parameters_;
+    }
+
+    bool Lookup3DGeometry(CoordinateSystem3D& target) const
+    {
+      try
+      {
+        std::string imagePositionPatient, imageOrientationPatient;
+        if (dicom_->LookupStringValue(imagePositionPatient, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, false) &&
+            dicom_->LookupStringValue(imageOrientationPatient, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, false))
+        {
+          target = CoordinateSystem3D(imagePositionPatient, imageOrientationPatient);
+          return true;
+        }
+      }
+      catch (Orthanc::OrthancException&)
+      {
+      }
+
+      return false;
+    }
+
+    bool LookupIndexInSeries(int& target) const
+    {
+      std::string value;
+
+      if (dicom_->LookupStringValue(value, Orthanc::DICOM_TAG_INSTANCE_NUMBER, false) ||
+          dicom_->LookupStringValue(value, Orthanc::DICOM_TAG_IMAGE_INDEX, false))
+      {
+        try
+        {
+          target = boost::lexical_cast<int>(value);
+          return true;
+        }
+        catch (boost::bad_lexical_cast&)
+        {
+        }
+      }
+
+      return false;
+    }
+  };
+
+
+  class SeriesOrderedFrames::Frame : public boost::noncopyable
+  {
+  private:
+    const Instance*  instance_;
+    unsigned int     frameIndex_;
+
+  public:
+    Frame(const Instance& instance,
+          unsigned int frameIndex) :
+      instance_(&instance),
+      frameIndex_(frameIndex)
+    {
+      if (frameIndex_ >= instance.GetInstanceParameters().GetImageInformation().GetNumberOfFrames())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+    }
+
+    const Orthanc::DicomMap& GetInstance() const
+    {
+      assert(instance_ != NULL);
+      return instance_->GetInstance();
+    }
+    
+    const DicomInstanceParameters& GetInstanceParameters() const
+    {
+      assert(instance_ != NULL);
+      return instance_->GetInstanceParameters();
+    }
+
+    unsigned int GetFrameIndex() const
+    {
+      return frameIndex_;
+    }
+  };
+
+
+  class SeriesOrderedFrames::InstanceWithIndexInSeries
+  {
+  private:
+    const Instance* instance_;  // Don't use a reference to make "std::sort()" happy
+    int             index_;
+
+  public:
+    InstanceWithIndexInSeries(const Instance& instance) :
+    instance_(&instance)
+    {
+      if (!instance_->LookupIndexInSeries(index_))
+      {
+        index_ = std::numeric_limits<int>::max();
+      }
+    }
+
+    const Instance& GetInstance() const
+    {
+      return *instance_;
+    }
+
+    int GetIndexInSeries() const
+    {
+      return index_;
+    }
+
+    bool operator< (const InstanceWithIndexInSeries& other) const
+    {
+      return (index_ < other.index_);
+    }
+  };
+
+
+  void SeriesOrderedFrames::Clear()
+  {
+    for (size_t i = 0; i < instances_.size(); i++)
+    {
+      assert(instances_[i] != NULL);
+      delete instances_[i];
+    }
+
+    for (size_t i = 0; i < orderedFrames_.size(); i++)
+    {
+      assert(orderedFrames_[i] != NULL);
+      delete orderedFrames_[i];
+    }
+
+    instances_.clear();
+    orderedFrames_.clear();
+  }
+
+
+  bool SeriesOrderedFrames::Sort3DVolume()
+  {
+    SlicesSorter sorter;
+    sorter.Reserve(instances_.size());
+
+    for (size_t i = 0; i < instances_.size(); i++)
+    {
+      CoordinateSystem3D geometry;
+      if (instances_[i]->Lookup3DGeometry(geometry))
+      {
+        sorter.AddSlice(geometry, new Orthanc::SingleValueObject<Instance*>(instances_[i]));
+      }
+      else
+      {
+        return false;   // Not a 3D volume
+      }
+    }
+
+    if (!sorter.Sort() ||
+        sorter.GetSlicesCount() != instances_.size() ||
+        !sorter.AreAllSlicesDistinct())
+    {
+      return false;
+    }
+    else
+    {
+      for (size_t i = 0; i < sorter.GetSlicesCount(); i++)
+      {
+        assert(sorter.HasSlicePayload(i));
+
+        const Orthanc::SingleValueObject<Instance*>& payload =
+          dynamic_cast<const Orthanc::SingleValueObject<Instance*>&>(sorter.GetSlicePayload(i));
+              
+        assert(payload.GetValue() != NULL);
+              
+        for (size_t j = 0; j < payload.GetValue()->GetInstanceParameters().GetImageInformation().GetNumberOfFrames(); j++)
+        {
+          orderedFrames_.push_back(new Frame(*payload.GetValue(), 
+                                             static_cast<unsigned int>(j)));
+        }
+      }
+
+      isRegular_ = sorter.ComputeSpacingBetweenSlices(spacingBetweenSlices_);
+      return true;
+    }
+  }
+
+
+  void SeriesOrderedFrames::SortIndexInSeries()
+  {
+    std::vector<InstanceWithIndexInSeries> tmp;
+    tmp.reserve(instances_.size());      
+        
+    for (size_t i = 0; i < instances_.size(); i++)
+    {
+      assert(instances_[i] != NULL);
+      tmp.push_back(InstanceWithIndexInSeries(*instances_[i]));
+    }
+
+    std::sort(tmp.begin(), tmp.end());
+
+    for (size_t i = 0; i < tmp.size(); i++)
+    {
+      for (size_t j = 0; j < tmp[i].GetInstance().GetInstanceParameters().GetImageInformation().GetNumberOfFrames(); j++)
+      {
+        orderedFrames_.push_back(new Frame(tmp[i].GetInstance(), 
+                                           static_cast<unsigned int>(j)));
+      }
+    }
+  }
+
+
+  const SeriesOrderedFrames::Frame& SeriesOrderedFrames::GetFrame(size_t seriesIndex) const
+  {
+    if (seriesIndex >= orderedFrames_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      assert(orderedFrames_[seriesIndex] != NULL);
+      return *(orderedFrames_[seriesIndex]);
+    }
+  }
+  
+
+  SeriesOrderedFrames::SeriesOrderedFrames(LoadedDicomResources& instances) :
+    isVolume_(false),
+    isRegular_(false),
+    spacingBetweenSlices_(0)
+  {
+    instances_.reserve(instances.GetSize());
+
+    size_t numberOfFrames = 0;
+      
+    for (size_t i = 0; i < instances.GetSize(); i++)
+    {
+      try
+      {
+        std::unique_ptr<Instance> instance(new Instance(instances.GetResource(i)));
+        numberOfFrames += instance->GetInstanceParameters().GetImageInformation().GetNumberOfFrames();
+        instances_.push_back(instance.release());
+      }
+      catch (Orthanc::OrthancException&)
+      {
+        // The instance has not all the required DICOM tags, skip it
+      }
+    }
+
+    orderedFrames_.reserve(numberOfFrames);
+      
+    if (Sort3DVolume())
+    {
+      isVolume_ = true;
+
+      if (isRegular_)
+      {
+        LOG(INFO) << "Regular 3D volume detected";
+      }
+      else
+      {
+        LOG(INFO) << "Non-regular 3D volume detected";
+      }
+    }
+    else
+    {
+      LOG(INFO) << "Series is not a 3D volume, sorting by index";
+      SortIndexInSeries();
+    }
+
+    LOG(INFO) << "Number of frames: " << orderedFrames_.size();
+  }
+
+
+  unsigned int SeriesOrderedFrames::GetFrameIndex(size_t seriesIndex) const
+  {
+    return GetFrame(seriesIndex).GetFrameIndex();
+  }
+
+
+  const Orthanc::DicomMap& SeriesOrderedFrames::GetInstance(size_t seriesIndex) const
+  {
+    return GetFrame(seriesIndex).GetInstance();
+  }
+
+
+  const DicomInstanceParameters& SeriesOrderedFrames::GetInstanceParameters(size_t seriesIndex) const
+  {
+    return GetFrame(seriesIndex).GetInstanceParameters();
+  }
+
+
+  double SeriesOrderedFrames::GetSpacingBetweenSlices() const
+  {
+    if (IsRegular3DVolume())
+    {
+      return spacingBetweenSlices_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/SeriesOrderedFrames.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,85 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "LoadedDicomResources.h"
+
+#include "../Toolbox/DicomInstanceParameters.h"
+
+namespace OrthancStone
+{
+  class SeriesOrderedFrames : public boost::noncopyable
+  {
+  private:
+    class Instance;
+    class Frame;
+    class InstanceWithIndexInSeries;
+
+    std::vector<Instance*>  instances_;
+    std::vector<Frame*>     orderedFrames_;
+    bool                    isVolume_;
+    bool                    isRegular_;
+    double                  spacingBetweenSlices_;
+
+    void Clear();
+
+    bool Sort3DVolume();
+
+    void SortIndexInSeries();
+
+    const Frame& GetFrame(size_t seriesIndex) const;
+
+  public:
+    SeriesOrderedFrames(LoadedDicomResources& instances);
+
+    ~SeriesOrderedFrames()
+    {
+      Clear();
+    }
+
+    size_t GetFramesCount() const
+    {
+      return orderedFrames_.size();
+    }
+
+    unsigned int GetFrameIndex(size_t seriesIndex) const;
+
+    const Orthanc::DicomMap& GetInstance(size_t seriesIndex) const;
+
+    const DicomInstanceParameters& GetInstanceParameters(size_t seriesIndex) const;
+
+    // Are all frames parallel and aligned?
+    bool Is3DVolume() const
+    {
+      return isVolume_;
+    }
+
+    // Are all frames parallel, aligned and evenly spaced?
+    bool IsRegular3DVolume() const
+    {
+      return isRegular_;
+    }
+
+    // Only available on regular 3D volumes
+    double GetSpacingBetweenSlices() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/SeriesThumbnailsLoader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,773 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SeriesThumbnailsLoader.h"
+
+#include "LoadedDicomResources.h"
+#include "../Oracle/ParseDicomFromWadoCommand.h"
+#include "../Toolbox/ImageToolbox.h"
+
+#include <DicomFormat/DicomMap.h>
+#include <DicomFormat/DicomInstanceHasher.h>
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <Images/JpegReader.h>
+#include <Images/JpegWriter.h>
+#include <OrthancException.h>
+
+#include <boost/algorithm/string/predicate.hpp>
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include <DicomParsing/ParsedDicomFile.h>
+#  include <DicomParsing/Internals/DicomImageDecoder.h>
+#endif 
+
+
+static const unsigned int JPEG_QUALITY = 70;  // Only used for Orthanc source
+
+namespace OrthancStone
+{
+  static SeriesThumbnailType ExtractSopClassUid(const std::string& sopClassUid)
+  {
+    if (sopClassUid == "1.2.840.10008.5.1.4.1.1.104.1")  // Encapsulated PDF Storage
+    {
+      return SeriesThumbnailType_Pdf;
+    }
+    else if (sopClassUid == "1.2.840.10008.5.1.4.1.1.77.1.1.1" ||  // Video Endoscopic Image Storage
+             sopClassUid == "1.2.840.10008.5.1.4.1.1.77.1.2.1" ||  // Video Microscopic Image Storage
+             sopClassUid == "1.2.840.10008.5.1.4.1.1.77.1.4.1")    // Video Photographic Image Storage
+    {
+      return SeriesThumbnailType_Video;
+    }
+    else
+    {
+      return SeriesThumbnailType_Unsupported;
+    }
+  }
+
+
+  SeriesThumbnailsLoader::Thumbnail::Thumbnail(const std::string& image,
+                                               const std::string& mime) :
+    type_(SeriesThumbnailType_Image),
+    image_(image),
+    mime_(mime)
+  {
+  }
+
+
+  SeriesThumbnailsLoader::Thumbnail::Thumbnail(SeriesThumbnailType type) :
+    type_(type)
+  {
+    if (type == SeriesThumbnailType_Image)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  Orthanc::ImageAccessor* SeriesThumbnailsLoader::SuccessMessage::DecodeImage() const
+  {
+    if (GetType() != SeriesThumbnailType_Image)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    Orthanc::MimeType mime;
+    if (!Orthanc::LookupMimeType(mime, GetMime()))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
+                                      "Unsupported MIME type for thumbnail: " + GetMime());
+    }
+
+    switch (mime)
+    {
+      case Orthanc::MimeType_Jpeg:
+      {
+        std::unique_ptr<Orthanc::JpegReader> reader(new Orthanc::JpegReader);
+        reader->ReadFromMemory(GetEncodedImage());
+        return reader.release();
+      }
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
+                                        "Cannot decode MIME type for thumbnail: " + GetMime());
+    }
+  }
+
+
+
+  void SeriesThumbnailsLoader::AcquireThumbnail(const DicomSource& source,
+                                                const std::string& studyInstanceUid,
+                                                const std::string& seriesInstanceUid,
+                                                SeriesThumbnailsLoader::Thumbnail* thumbnail)
+  {
+    assert(thumbnail != NULL);
+  
+    std::unique_ptr<Thumbnail> protection(thumbnail);
+
+    Thumbnails::iterator found = thumbnails_.find(seriesInstanceUid);
+    if (found == thumbnails_.end())
+    {
+      thumbnails_[seriesInstanceUid] = protection.release();
+    }
+    else
+    {
+      assert(found->second != NULL);
+      if (protection->GetType() == SeriesThumbnailType_NotLoaded ||
+          protection->GetType() == SeriesThumbnailType_Unsupported)
+      {
+        // Don't replace an old entry if the current one is worse
+        return;
+      }
+      else
+      {
+        delete found->second;
+        found->second = protection.release();
+      }
+    }
+
+    LOG(INFO) << "Thumbnail updated for series: " << seriesInstanceUid << ": " << thumbnail->GetType();
+    
+    SuccessMessage message(*this, source, studyInstanceUid, seriesInstanceUid, *thumbnail);
+    BroadcastMessage(message);
+  }
+
+
+  class SeriesThumbnailsLoader::Handler : public Orthanc::IDynamicObject
+  {
+  private:
+    boost::shared_ptr<SeriesThumbnailsLoader>  loader_;
+    DicomSource                                source_;
+    std::string                                studyInstanceUid_;
+    std::string                                seriesInstanceUid_;
+
+  public:
+    Handler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
+            const DicomSource& source,
+            const std::string& studyInstanceUid,
+            const std::string& seriesInstanceUid) :
+      loader_(loader),
+      source_(source),
+      studyInstanceUid_(studyInstanceUid),
+      seriesInstanceUid_(seriesInstanceUid)
+    {
+      if (!loader)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    boost::shared_ptr<SeriesThumbnailsLoader> GetLoader()
+    {
+      return loader_;
+    }
+
+    const DicomSource& GetSource() const
+    {
+      return source_;
+    }
+
+    const std::string& GetStudyInstanceUid() const
+    {
+      return studyInstanceUid_;
+    }
+
+    const std::string& GetSeriesInstanceUid() const
+    {
+      return seriesInstanceUid_;
+    }
+
+    virtual void HandleSuccess(const std::string& body,
+                               const std::map<std::string, std::string>& headers) = 0;
+
+    virtual void HandleError()
+    {
+      LOG(INFO) << "Cannot generate thumbnail for SeriesInstanceUID: " << seriesInstanceUid_;
+    }
+  };
+
+
+  class SeriesThumbnailsLoader::DicomWebSopClassHandler : public SeriesThumbnailsLoader::Handler
+  {
+  private:
+    static bool GetSopClassUid(std::string& sopClassUid,
+                               const Json::Value& json)
+    {
+      Orthanc::DicomMap dicom;
+      dicom.FromDicomWeb(json);
+
+      return dicom.LookupStringValue(sopClassUid, Orthanc::DICOM_TAG_SOP_CLASS_UID, false);
+    }
+  
+  public:
+    DicomWebSopClassHandler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
+                            const DicomSource& source,
+                            const std::string& studyInstanceUid,
+                            const std::string& seriesInstanceUid) :
+      Handler(loader, source, studyInstanceUid, seriesInstanceUid)
+    {
+    }
+
+    virtual void HandleSuccess(const std::string& body,
+                               const std::map<std::string, std::string>& headers)
+    {
+      Json::Reader reader;
+      Json::Value value;
+
+      if (!reader.parse(body, value) ||
+          value.type() != Json::arrayValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+      else
+      {
+        SeriesThumbnailType type = SeriesThumbnailType_Unsupported;
+
+        std::string sopClassUid;
+        if (value.size() > 0 &&
+            GetSopClassUid(sopClassUid, value[0]))
+        {
+          bool ok = true;
+        
+          for (Json::Value::ArrayIndex i = 1; i < value.size() && ok; i++)
+          {
+            std::string s;
+            if (!GetSopClassUid(s, value[i]) ||
+                s != sopClassUid)
+            {
+              ok = false;
+            }
+          }
+
+          if (ok)
+          {
+            type = ExtractSopClassUid(sopClassUid);
+          }
+        }
+      
+        GetLoader()->AcquireThumbnail(GetSource(), GetStudyInstanceUid(),
+                                      GetSeriesInstanceUid(), new Thumbnail(type));
+      }
+    }
+  };
+
+
+  class SeriesThumbnailsLoader::DicomWebThumbnailHandler : public SeriesThumbnailsLoader::Handler
+  {
+  public:
+    DicomWebThumbnailHandler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
+                             const DicomSource& source,
+                             const std::string& studyInstanceUid,
+                             const std::string& seriesInstanceUid) :
+      Handler(loader, source, studyInstanceUid, seriesInstanceUid)
+    {
+    }
+
+    virtual void HandleSuccess(const std::string& body,
+                               const std::map<std::string, std::string>& headers)
+    {
+      std::string mime = Orthanc::MIME_JPEG;
+      for (std::map<std::string, std::string>::const_iterator
+             it = headers.begin(); it != headers.end(); ++it)
+      {
+        if (boost::iequals(it->first, "content-type"))
+        {
+          mime = it->second;
+        }
+      }
+
+      GetLoader()->AcquireThumbnail(GetSource(), GetStudyInstanceUid(),
+                                    GetSeriesInstanceUid(), new Thumbnail(body, mime));
+    }
+
+    virtual void HandleError()
+    {
+      // The DICOMweb wasn't able to generate a thumbnail, try to
+      // retrieve the SopClassUID tag using QIDO-RS
+
+      std::map<std::string, std::string> arguments, headers;
+      arguments["0020000D"] = GetStudyInstanceUid();
+      arguments["0020000E"] = GetSeriesInstanceUid();
+      arguments["includefield"] = "00080016";  // SOP Class UID
+      
+      std::unique_ptr<IOracleCommand> command(
+        GetSource().CreateDicomWebCommand(
+          "/instances", arguments, headers, new DicomWebSopClassHandler(
+            GetLoader(), GetSource(), GetStudyInstanceUid(), GetSeriesInstanceUid())));
+      GetLoader()->Schedule(command.release());
+    }
+  };
+
+
+  class SeriesThumbnailsLoader::ThumbnailInformation : public Orthanc::IDynamicObject
+  {
+  private:
+    DicomSource  source_;
+    std::string  studyInstanceUid_;
+    std::string  seriesInstanceUid_;
+
+  public:
+    ThumbnailInformation(const DicomSource& source,
+                         const std::string& studyInstanceUid,
+                         const std::string& seriesInstanceUid) :
+      source_(source),
+      studyInstanceUid_(studyInstanceUid),
+      seriesInstanceUid_(seriesInstanceUid)
+    {
+    }
+
+    const DicomSource& GetDicomSource() const
+    {
+      return source_;
+    }
+
+    const std::string& GetStudyInstanceUid() const
+    {
+      return studyInstanceUid_;
+    }
+
+    const std::string& GetSeriesInstanceUid() const
+    {
+      return seriesInstanceUid_;
+    }
+  };
+
+
+  class SeriesThumbnailsLoader::OrthancSopClassHandler : public SeriesThumbnailsLoader::Handler
+  {
+  private:
+    std::string instanceId_;
+      
+  public:
+    OrthancSopClassHandler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
+                           const DicomSource& source,
+                           const std::string& studyInstanceUid,
+                           const std::string& seriesInstanceUid,
+                           const std::string& instanceId) :
+      Handler(loader, source, studyInstanceUid, seriesInstanceUid),
+      instanceId_(instanceId)
+    {
+    }
+
+    virtual void HandleSuccess(const std::string& body,
+                               const std::map<std::string, std::string>& headers)
+    {
+      SeriesThumbnailType type = ExtractSopClassUid(body);
+
+      if (type == SeriesThumbnailType_Pdf ||
+          type == SeriesThumbnailType_Video)
+      {
+        GetLoader()->AcquireThumbnail(GetSource(), GetStudyInstanceUid(),
+                                      GetSeriesInstanceUid(), new Thumbnail(type));
+      }
+      else
+      {
+        std::unique_ptr<GetOrthancImageCommand> command(new GetOrthancImageCommand);
+        command->SetUri("/instances/" + instanceId_ + "/preview");
+        command->SetHttpHeader("Accept", Orthanc::MIME_JPEG);
+        command->AcquirePayload(new ThumbnailInformation(
+                                  GetSource(), GetStudyInstanceUid(), GetSeriesInstanceUid()));
+        GetLoader()->Schedule(command.release());
+      }
+    }
+  };
+
+
+  class SeriesThumbnailsLoader::SelectOrthancInstanceHandler : public SeriesThumbnailsLoader::Handler
+  {
+  public:
+    SelectOrthancInstanceHandler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
+                                 const DicomSource& source,
+                                 const std::string& studyInstanceUid,
+                                 const std::string& seriesInstanceUid) :
+      Handler(loader, source, studyInstanceUid, seriesInstanceUid)
+    {
+    }
+
+    virtual void HandleSuccess(const std::string& body,
+                               const std::map<std::string, std::string>& headers)
+    {
+      static const char* const INSTANCES = "Instances";
+      
+      Json::Value json;
+      Json::Reader reader;
+      if (!reader.parse(body, json) ||
+          json.type() != Json::objectValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+
+      if (json.isMember(INSTANCES) &&
+          json[INSTANCES].type() == Json::arrayValue &&
+          json[INSTANCES].size() > 0)
+      {
+        // Select one instance of the series to generate the thumbnail
+        Json::Value::ArrayIndex index = json[INSTANCES].size() / 2;
+        if (json[INSTANCES][index].type() == Json::stringValue)
+        {
+          std::map<std::string, std::string> arguments, headers;
+          arguments["quality"] = boost::lexical_cast<std::string>(JPEG_QUALITY);
+          headers["Accept"] = Orthanc::MIME_JPEG;
+
+          const std::string instance = json[INSTANCES][index].asString();
+
+          std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
+          command->SetUri("/instances/" + instance + "/metadata/SopClassUid");
+          command->AcquirePayload(
+            new OrthancSopClassHandler(
+              GetLoader(), GetSource(), GetStudyInstanceUid(), GetSeriesInstanceUid(), instance));
+          GetLoader()->Schedule(command.release());
+        }
+      }
+    }
+  };
+
+    
+#if ORTHANC_ENABLE_DCMTK == 1
+  class SeriesThumbnailsLoader::SelectDicomWebInstanceHandler : public SeriesThumbnailsLoader::Handler
+  {
+  public:
+    SelectDicomWebInstanceHandler(boost::shared_ptr<SeriesThumbnailsLoader> loader,
+                                  const DicomSource& source,
+                                  const std::string& studyInstanceUid,
+                                  const std::string& seriesInstanceUid) :
+      Handler(loader, source, studyInstanceUid, seriesInstanceUid)
+    {
+    }
+
+    virtual void HandleSuccess(const std::string& body,
+                               const std::map<std::string, std::string>& headers)
+    {
+      Json::Value json;
+      Json::Reader reader;
+      if (!reader.parse(body, json) ||
+          json.type() != Json::arrayValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+
+      LoadedDicomResources instances(Orthanc::DICOM_TAG_SOP_INSTANCE_UID);
+      instances.AddFromDicomWeb(json);
+      
+      std::string sopInstanceUid;      
+      if (instances.GetSize() == 0 ||
+          !instances.GetResource(0).LookupStringValue(sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
+      {
+        LOG(ERROR) << "Series without an instance: " << GetSeriesInstanceUid();
+      }
+      else
+      {
+        GetLoader()->Schedule(
+          ParseDicomFromWadoCommand::Create(
+            GetSource(), GetStudyInstanceUid(), GetSeriesInstanceUid(), sopInstanceUid, false,
+            Orthanc::DicomTransferSyntax_LittleEndianExplicit /* useless, as no transcoding */,
+            new ThumbnailInformation(
+              GetSource(), GetStudyInstanceUid(), GetSeriesInstanceUid())));
+      }
+    }
+  };
+#endif
+
+    
+  void SeriesThumbnailsLoader::Schedule(IOracleCommand* command)
+  {
+    std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
+    lock->Schedule(GetSharedObserver(), priority_, command);
+  }    
+
+  
+  void SeriesThumbnailsLoader::Handle(const HttpCommand::SuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+    dynamic_cast<Handler&>(message.GetOrigin().GetPayload()).HandleSuccess(message.GetAnswer(), message.GetAnswerHeaders());
+  }
+
+
+  void SeriesThumbnailsLoader::Handle(const OrthancRestApiCommand::SuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+    dynamic_cast<Handler&>(message.GetOrigin().GetPayload()).HandleSuccess(message.GetAnswer(), message.GetAnswerHeaders());
+  }
+
+
+  void SeriesThumbnailsLoader::Handle(const GetOrthancImageCommand::SuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+    const ThumbnailInformation& info = dynamic_cast<ThumbnailInformation&>(message.GetOrigin().GetPayload());
+
+    std::unique_ptr<Orthanc::ImageAccessor> resized(Orthanc::ImageProcessing::FitSize(message.GetImage(), width_, height_));
+
+    std::string jpeg;
+    Orthanc::JpegWriter writer;
+    writer.SetQuality(JPEG_QUALITY);
+    writer.WriteToMemory(jpeg, *resized);
+
+    AcquireThumbnail(info.GetDicomSource(), info.GetStudyInstanceUid(),
+                     info.GetSeriesInstanceUid(), new Thumbnail(jpeg, Orthanc::MIME_JPEG));      
+  }
+
+
+#if ORTHANC_ENABLE_DCMTK == 1
+  void SeriesThumbnailsLoader::Handle(const ParseDicomSuccessMessage& message)
+  {
+    assert(message.GetOrigin().HasPayload());
+    const ParseDicomFromWadoCommand& origin =
+      dynamic_cast<const ParseDicomFromWadoCommand&>(message.GetOrigin());
+    const ThumbnailInformation& info = dynamic_cast<ThumbnailInformation&>(origin.GetPayload());
+
+    std::string tmp;
+    Orthanc::DicomTransferSyntax transferSyntax;
+    if (!message.GetDicom().LookupTransferSyntax(tmp))
+    {
+      
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
+                                      "DICOM instance without a transfer syntax: " + origin.GetSopInstanceUid());
+    }
+    else if (!Orthanc::LookupTransferSyntax(transferSyntax, tmp) ||
+             !ImageToolbox::IsDecodingSupported(transferSyntax))
+    {
+      LOG(INFO) << "Asking the DICOMweb server to transcode, "
+                << "as I don't support this transfer syntax: " << tmp;
+
+      Schedule(ParseDicomFromWadoCommand::Create(
+                 origin.GetSource(), info.GetStudyInstanceUid(), info.GetSeriesInstanceUid(),
+                 origin.GetSopInstanceUid(), true, Orthanc::DicomTransferSyntax_LittleEndianExplicit,
+                 new ThumbnailInformation(
+                   origin.GetSource(), info.GetStudyInstanceUid(), info.GetSeriesInstanceUid())));
+    }
+    else
+    {
+      std::unique_ptr<Orthanc::ImageAccessor> frame(
+        Orthanc::DicomImageDecoder::Decode(message.GetDicom(), 0));
+
+      std::unique_ptr<Orthanc::ImageAccessor> thumbnail;
+
+      if (frame->GetFormat() == Orthanc::PixelFormat_RGB24)
+      {
+        thumbnail.reset(Orthanc::ImageProcessing::FitSizeKeepAspectRatio(*frame, width_, height_));
+      }
+      else
+      {
+        std::unique_ptr<Orthanc::ImageAccessor> converted(
+          new Orthanc::Image(Orthanc::PixelFormat_Float32, frame->GetWidth(), frame->GetHeight(), false));
+        Orthanc::ImageProcessing::Convert(*converted, *frame);
+
+        std::unique_ptr<Orthanc::ImageAccessor> resized(
+          Orthanc::ImageProcessing::FitSizeKeepAspectRatio(*converted, width_, height_));
+      
+        float minValue, maxValue;
+        Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue, maxValue, *resized);
+        if (minValue + 0.01f < maxValue)
+        {
+          Orthanc::ImageProcessing::ShiftScale(*resized, -minValue, 255.0f / (maxValue - minValue), false);
+        }
+        else
+        {
+          Orthanc::ImageProcessing::Set(*resized, 0);
+        }
+
+        converted.reset(NULL);
+
+        thumbnail.reset(new Orthanc::Image(Orthanc::PixelFormat_Grayscale8, width_, height_, false));
+        Orthanc::ImageProcessing::Convert(*thumbnail, *resized);
+      }
+    
+      std::string jpeg;
+      Orthanc::JpegWriter writer;
+      writer.SetQuality(JPEG_QUALITY);
+      writer.WriteToMemory(jpeg, *thumbnail);
+
+      AcquireThumbnail(info.GetDicomSource(), info.GetStudyInstanceUid(),
+                       info.GetSeriesInstanceUid(), new Thumbnail(jpeg, Orthanc::MIME_JPEG));
+    }
+  }
+#endif
+
+
+  void SeriesThumbnailsLoader::Handle(const OracleCommandExceptionMessage& message)
+  {
+    const OracleCommandBase& command = dynamic_cast<const OracleCommandBase&>(message.GetOrigin());
+    assert(command.HasPayload());
+
+    if (command.GetType() == IOracleCommand::Type_GetOrthancImage)
+    {
+      // This is presumably a HTTP status 301 (Moved permanently)
+      // because of an unsupported DICOM file in "/preview"
+      const ThumbnailInformation& info = dynamic_cast<const ThumbnailInformation&>(command.GetPayload());
+      AcquireThumbnail(info.GetDicomSource(), info.GetStudyInstanceUid(),
+                       info.GetSeriesInstanceUid(), new Thumbnail(SeriesThumbnailType_Unsupported));
+    }
+    else
+    {
+      dynamic_cast<Handler&>(command.GetPayload()).HandleError();
+    }
+  }
+
+
+  SeriesThumbnailsLoader::SeriesThumbnailsLoader(ILoadersContext& context,
+                                                 int priority) :
+    context_(context),
+    priority_(priority),
+    width_(128),
+    height_(128)
+  {
+  }
+    
+  
+  boost::shared_ptr<SeriesThumbnailsLoader> SeriesThumbnailsLoader::Create(ILoadersContext::ILock& stone,
+                                                                           int priority)
+  {
+    boost::shared_ptr<SeriesThumbnailsLoader> result(new SeriesThumbnailsLoader(stone.GetContext(), priority));
+    result->Register<GetOrthancImageCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
+    result->Register<HttpCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
+    result->Register<OracleCommandExceptionMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
+    result->Register<OrthancRestApiCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    result->Register<ParseDicomSuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
+#endif
+    
+    return result;
+  }
+
+
+  void SeriesThumbnailsLoader::SetThumbnailSize(unsigned int width,
+                                                unsigned int height)
+  {
+    if (width <= 0 ||
+        height <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      width_ = width;
+      height_ = height;
+    }
+  }
+
+    
+  void SeriesThumbnailsLoader::Clear()
+  {
+    for (Thumbnails::iterator it = thumbnails_.begin(); it != thumbnails_.end(); ++it)
+    {
+      assert(it->second != NULL);
+      delete it->second;
+    }
+
+    thumbnails_.clear();
+  }
+
+    
+  SeriesThumbnailType SeriesThumbnailsLoader::GetSeriesThumbnail(std::string& image,
+                                                                 std::string& mime,
+                                                                 const std::string& seriesInstanceUid) const
+  {
+    Thumbnails::const_iterator found = thumbnails_.find(seriesInstanceUid);
+
+    if (found == thumbnails_.end())
+    {
+      return SeriesThumbnailType_NotLoaded;
+    }
+    else
+    {
+      assert(found->second != NULL);
+      image.assign(found->second->GetImage());
+      mime.assign(found->second->GetMime());
+      return found->second->GetType();
+    }
+  }
+
+
+  void SeriesThumbnailsLoader::ScheduleLoadThumbnail(const DicomSource& source,
+                                                     const std::string& patientId,
+                                                     const std::string& studyInstanceUid,
+                                                     const std::string& seriesInstanceUid)
+  {
+    if (IsScheduledSeries(seriesInstanceUid))
+    {
+      return;
+    }
+
+    if (source.IsDicomWeb())
+    {
+      if (!source.HasDicomWebRendered())
+      {
+#if ORTHANC_ENABLE_DCMTK == 1
+        // Issue a QIDO-RS request to select one of the instances in the series
+        std::map<std::string, std::string> arguments, headers;
+        arguments["0020000D"] = studyInstanceUid;
+        arguments["0020000E"] = seriesInstanceUid;
+        arguments["includefield"] = "00080018";  // SOP Instance UID is mandatory
+        
+        std::unique_ptr<IOracleCommand> command(
+          source.CreateDicomWebCommand(
+            "/instances", arguments, headers, new SelectDicomWebInstanceHandler(
+              GetSharedObserver(), source, studyInstanceUid, seriesInstanceUid)));
+        Schedule(command.release());
+#else
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
+                                        "Stone of Orthanc was built without support to decode DICOM images");
+#endif
+      }
+      else
+      {
+        const std::string uri = ("/studies/" + studyInstanceUid +
+                                 "/series/" + seriesInstanceUid + "/rendered");
+
+        std::map<std::string, std::string> arguments, headers;
+        arguments["viewport"] = (boost::lexical_cast<std::string>(width_) + "," +
+                                 boost::lexical_cast<std::string>(height_));
+
+        // Needed to set this header explicitly, as long as emscripten
+        // does not include macro "EMSCRIPTEN_FETCH_RESPONSE_HEADERS"
+        // https://github.com/emscripten-core/emscripten/pull/8486
+        headers["Accept"] = Orthanc::MIME_JPEG;
+
+        std::unique_ptr<IOracleCommand> command(
+          source.CreateDicomWebCommand(
+            uri, arguments, headers, new DicomWebThumbnailHandler(
+              GetSharedObserver(), source, studyInstanceUid, seriesInstanceUid)));
+        Schedule(command.release());
+      }
+
+      scheduledSeries_.insert(seriesInstanceUid);
+    }
+    else if (source.IsOrthanc())
+    {
+      // Dummy SOP Instance UID, as we are working at the "series" level
+      Orthanc::DicomInstanceHasher hasher(patientId, studyInstanceUid, seriesInstanceUid, "dummy");
+
+      std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
+      command->SetUri("/series/" + hasher.HashSeries());
+      command->AcquirePayload(new SelectOrthancInstanceHandler(
+                                GetSharedObserver(), source, studyInstanceUid, seriesInstanceUid));
+      Schedule(command.release());
+
+      scheduledSeries_.insert(seriesInstanceUid);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
+                                      "Can only load thumbnails from Orthanc or DICOMweb");
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/SeriesThumbnailsLoader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,240 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../OrthancStone.h"
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error Macro ORTHANC_ENABLE_DCMTK must be defined
+#endif 
+
+
+#include "../Oracle/GetOrthancImageCommand.h"
+#include "../Oracle/HttpCommand.h"
+#include "../Oracle/OracleCommandExceptionMessage.h"
+#include "../Oracle/OrthancRestApiCommand.h"
+#include "DicomSource.h"
+#include "ILoaderFactory.h"
+#include "OracleScheduler.h"
+
+
+namespace OrthancStone
+{
+  enum SeriesThumbnailType
+  {
+    SeriesThumbnailType_NotLoaded = 1,  // The remote server cannot decode this image
+    SeriesThumbnailType_Unsupported = 2,  // The remote server cannot decode this image
+    SeriesThumbnailType_Pdf = 3,
+    SeriesThumbnailType_Video = 4,
+    SeriesThumbnailType_Image = 5
+  };
+  
+
+  class SeriesThumbnailsLoader :
+    public IObservable,
+    public ObserverBase<SeriesThumbnailsLoader>
+  {
+  private:
+    class Thumbnail : public boost::noncopyable
+    {
+    private:
+      SeriesThumbnailType  type_;
+      std::string          image_;
+      std::string          mime_;
+
+    public:
+      Thumbnail(const std::string& image,
+                const std::string& mime);
+
+      Thumbnail(SeriesThumbnailType type);
+
+      SeriesThumbnailType GetType() const
+      {
+        return type_;
+      }
+
+      const std::string& GetImage() const
+      {
+        return image_;
+      }
+
+      const std::string& GetMime() const
+      {
+        return mime_;
+      }
+    };
+
+  public:
+    class SuccessMessage : public OriginMessage<SeriesThumbnailsLoader>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const DicomSource&   source_;
+      const std::string&   studyInstanceUid_;
+      const std::string&   seriesInstanceUid_;
+      const Thumbnail&     thumbnail_;
+
+    public:
+      SuccessMessage(const SeriesThumbnailsLoader& origin,
+                     const DicomSource& source,
+                     const std::string& studyInstanceUid,
+                     const std::string& seriesInstanceUid,
+                     const Thumbnail& thumbnail) :
+        OriginMessage(origin),
+        source_(source),
+        studyInstanceUid_(studyInstanceUid),
+        seriesInstanceUid_(seriesInstanceUid),
+        thumbnail_(thumbnail)
+      {
+      }
+
+      const DicomSource& GetDicomSource() const
+      {
+        return source_;
+      }
+
+      SeriesThumbnailType GetType() const
+      {
+        return thumbnail_.GetType();
+      }
+
+      const std::string& GetStudyInstanceUid() const
+      {
+        return studyInstanceUid_;
+      }
+
+      const std::string& GetSeriesInstanceUid() const
+      {
+        return seriesInstanceUid_;
+      }
+
+      const std::string& GetEncodedImage() const
+      {
+        return thumbnail_.GetImage();
+      }
+
+      const std::string& GetMime() const
+      {
+        return thumbnail_.GetMime();
+      }
+
+      Orthanc::ImageAccessor* DecodeImage() const;
+    };
+
+  private:
+    class Handler;
+    class DicomWebSopClassHandler;
+    class DicomWebThumbnailHandler;
+    class ThumbnailInformation;
+    class OrthancSopClassHandler;
+    class SelectOrthancInstanceHandler;
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    class SelectDicomWebInstanceHandler;
+#endif
+    
+    // Maps a "Series Instance UID" to a thumbnail
+    typedef std::map<std::string, Thumbnail*>  Thumbnails;
+
+    ILoadersContext&       context_;
+    Thumbnails             thumbnails_;
+    int                    priority_;
+    unsigned int           width_;
+    unsigned int           height_;
+    std::set<std::string>  scheduledSeries_;
+
+    void AcquireThumbnail(const DicomSource& source,
+                          const std::string& studyInstanceUid,
+                          const std::string& seriesInstanceUid,
+                          Thumbnail* thumbnail /* takes ownership */);
+
+    void Schedule(IOracleCommand* command);
+  
+    void Handle(const HttpCommand::SuccessMessage& message);
+
+    void Handle(const OrthancRestApiCommand::SuccessMessage& message);
+
+    void Handle(const GetOrthancImageCommand::SuccessMessage& message);
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    void Handle(const ParseDicomSuccessMessage& message);
+#endif
+
+    void Handle(const OracleCommandExceptionMessage& message);
+
+    SeriesThumbnailsLoader(ILoadersContext& context,
+                           int priority);
+    
+  public:
+    class Factory : public ILoaderFactory
+    {
+    private:
+      int priority_;
+
+    public:
+      Factory() :
+        priority_(0)
+      {
+      }
+
+      void SetPriority(int priority)
+      {
+        priority_ = priority;
+      }
+
+      virtual boost::shared_ptr<IObserver> Create(ILoadersContext::ILock& context)
+      {
+        return SeriesThumbnailsLoader::Create(context, priority_);
+      }
+    };
+
+
+    virtual ~SeriesThumbnailsLoader()
+    {
+      Clear();
+    }
+
+
+    static boost::shared_ptr<SeriesThumbnailsLoader> Create(ILoadersContext::ILock& context,
+                                                            int priority);
+
+    void SetThumbnailSize(unsigned int width,
+                          unsigned int height);
+    
+    void Clear();
+    
+    SeriesThumbnailType GetSeriesThumbnail(std::string& image,
+                                           std::string& mime,
+                                           const std::string& seriesInstanceUid) const;
+
+    void ScheduleLoadThumbnail(const DicomSource& source,
+                               const std::string& patientId,
+                               const std::string& studyInstanceUid,
+                               const std::string& seriesInstanceUid);
+
+    bool IsScheduledSeries(const std::string& seriesInstanceUid) const
+    {
+      return scheduledSeries_.find(seriesInstanceUid) != scheduledSeries_.end();
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/WebAssemblyLoadersContext.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,97 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebAssemblyLoadersContext.h"
+
+namespace OrthancStone
+{
+  class WebAssemblyLoadersContext::Locker : public ILoadersContext::ILock
+  {
+  private:
+    WebAssemblyLoadersContext&  that_;
+
+  public:
+    Locker(WebAssemblyLoadersContext& that) :
+      that_(that)
+    {
+    }      
+      
+    virtual ILoadersContext& GetContext() const ORTHANC_OVERRIDE
+    {
+      return that_;
+    }
+
+    virtual IObservable& GetOracleObservable() const ORTHANC_OVERRIDE
+    {
+      return that_.oracle_.GetOracleObservable();
+    }
+
+    virtual void Schedule(boost::shared_ptr<IObserver> receiver,
+                          int priority,
+                          IOracleCommand* command /* Takes ownership */) ORTHANC_OVERRIDE
+    {
+      that_.scheduler_->Schedule(receiver, priority, command);
+    }
+
+    virtual void CancelRequests(boost::shared_ptr<IObserver> receiver) ORTHANC_OVERRIDE
+    {
+      that_.scheduler_->CancelRequests(receiver);
+    }
+
+    virtual void CancelAllRequests() ORTHANC_OVERRIDE
+    {
+      that_.scheduler_->CancelAllRequests();
+    }
+
+    virtual void AddLoader(boost::shared_ptr<IObserver> loader) ORTHANC_OVERRIDE
+    {
+      that_.loaders_.push_back(loader);
+    }
+
+    virtual void GetStatistics(uint64_t& scheduledCommands,
+                               uint64_t& processedCommands) ORTHANC_OVERRIDE
+    {
+      scheduledCommands = that_.scheduler_->GetTotalScheduled();
+      processedCommands = that_.scheduler_->GetTotalProcessed();
+    }
+  };
+    
+
+  WebAssemblyLoadersContext::WebAssemblyLoadersContext(unsigned int maxHighPriority,
+                                                       unsigned int maxStandardPriority,
+                                                       unsigned int maxLowPriority)
+  {
+    oracle_.GetOracleObservable();
+    scheduler_ = OracleScheduler::Create(oracle_, oracle_.GetOracleObservable(), oracle_,
+                                         maxHighPriority, maxStandardPriority, maxLowPriority);
+
+    if (!scheduler_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+  ILoadersContext::ILock* WebAssemblyLoadersContext::Lock()
+  {
+    return new Locker(*this);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Loaders/WebAssemblyLoadersContext.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,63 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ILoadersContext.h"
+#include "../Oracle/WebAssemblyOracle.h"
+#include "OracleScheduler.h"
+
+#include <list>
+
+namespace OrthancStone
+{
+  class WebAssemblyLoadersContext : public ILoadersContext
+  {
+  private:
+    class Locker;
+    
+    WebAssemblyOracle                          oracle_;
+    boost::shared_ptr<OracleScheduler>         scheduler_;
+    std::list< boost::shared_ptr<IObserver> >  loaders_;
+    
+  public:
+    WebAssemblyLoadersContext(unsigned int maxHighPriority,
+                              unsigned int maxStandardPriority,
+                              unsigned int maxLowPriority);
+
+    void SetLocalOrthanc(const std::string& root)
+    {
+      oracle_.SetLocalOrthanc(root);
+    }
+
+    void SetRemoteOrthanc(const Orthanc::WebServiceParameters& orthanc)
+    {
+      oracle_.SetRemoteOrthanc(orthanc);
+    }
+
+    void SetDicomCacheSize(size_t size)
+    {
+      oracle_.SetDicomCacheSize(size);
+    }
+
+    virtual ILock* Lock() ORTHANC_OVERRIDE;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Messages/ICallable.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,95 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IMessage.h"
+#include "IObserver.h"
+
+#include <Logging.h>
+
+#include <boost/noncopyable.hpp>
+#include <boost/weak_ptr.hpp>
+
+#include <string>
+#include <stdint.h>
+
+namespace OrthancStone 
+{
+  // This is referencing an object and member function that can be notified
+  // by an IObservable.  The object must derive from IO
+  // The member functions must be of type "void Method(const IMessage& message)" or reference a derived class of IMessage
+  class ICallable : public boost::noncopyable
+  {
+  public:
+    virtual ~ICallable()
+    {
+    }
+
+    virtual void Apply(const IMessage& message) = 0;
+
+    virtual const MessageIdentifier& GetMessageIdentifier() = 0;
+
+    // TODO - Is this needed?
+    virtual boost::weak_ptr<IObserver> GetObserver() const = 0;
+  };
+
+
+  template <typename TObserver,
+            typename TMessage>
+  class Callable : public ICallable
+  {
+  private:
+    typedef void (TObserver::* MemberMethod) (const TMessage&);
+
+    boost::weak_ptr<IObserver>  observer_;
+    MemberMethod                function_;
+
+  public:
+    Callable(boost::shared_ptr<TObserver> observer,
+             MemberMethod function) :
+      observer_(observer),
+      function_(function)
+    {
+    }
+
+    virtual void Apply(const IMessage& message)
+    {
+      boost::shared_ptr<IObserver> lock(observer_);
+      if (lock)
+      {
+        TObserver& observer = dynamic_cast<TObserver&>(*lock);
+        const TMessage& typedMessage = dynamic_cast<const TMessage&>(message);
+        (observer.*function_) (typedMessage);
+      }
+    }
+
+    virtual const MessageIdentifier& GetMessageIdentifier()
+    {
+      return TMessage::GetStaticIdentifier();
+    }
+
+    virtual boost::weak_ptr<IObserver> GetObserver() const
+    {
+      return observer_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Messages/IMessage.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,161 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/lexical_cast.hpp>
+#include <boost/noncopyable.hpp>
+
+#include <string.h>
+
+namespace OrthancStone 
+{
+  class MessageIdentifier
+  {
+  private:
+    const char*  file_;
+    int          line_;
+
+    bool IsEqual(const MessageIdentifier& other) const
+    {
+      return (line_ == other.line_ &&
+              strcmp(file_, other.file_) == 0);
+    }
+
+  public:
+    MessageIdentifier(const char* file,
+                      int line) :
+      file_(file),
+      line_(line)
+    {
+    }
+
+    MessageIdentifier() :
+      file_(NULL),
+      line_(0)
+    {
+    }
+
+    std::string AsString() const
+    {
+      return std::string(file_) + ":" + boost::lexical_cast<std::string>(line_);
+    }
+
+    bool operator< (const MessageIdentifier& other) const
+    {
+      if (file_ == NULL)
+      {
+        return false;
+      }
+      else if (line_ != other.line_)
+      {
+        return line_ < other.line_;
+      }
+      else
+      {
+        return strcmp(file_, other.file_) < 0;
+      }
+    }
+
+    bool operator== (const MessageIdentifier& other) const
+    {
+      return IsEqual(other);
+    }
+
+    bool operator!= (const MessageIdentifier& other) const
+    {
+      return !IsEqual(other);
+    }
+  };
+
+    
+  /**
+   * Base messages that are exchanged between IObservable and
+   * IObserver. Messages are distinguished by the "__FILE__" and
+   * "__LINE__" macro, as in "Orthanc::SQLite::StatementId".
+   **/
+  class IMessage : public boost::noncopyable
+  {
+  public:
+    virtual ~IMessage()
+    {
+    }
+
+    virtual const MessageIdentifier& GetIdentifier() const = 0;
+  };
+
+
+  /**
+   * Simple message implementation when no payload is needed but the
+   * origin is required. Sample usage:
+   * typedef OriginMessage<OrthancSlicesLoader> SliceGeometryErrorMessage;
+   **/
+  template <typename TOrigin>
+  class OriginMessage : public IMessage
+  {
+  private:
+    const TOrigin&  origin_;
+
+  public:
+    OriginMessage(const TOrigin& origin) :
+      origin_(origin)
+    {
+    }
+
+    const TOrigin& GetOrigin() const
+    {
+      return origin_;
+    }
+  };
+}
+
+
+#define ORTHANC_STONE_MESSAGE(FILE, LINE)                               \
+  public:                                                               \
+  static const ::OrthancStone::MessageIdentifier& GetStaticIdentifier() \
+  {                                                                     \
+    static const ::OrthancStone::MessageIdentifier id(FILE, LINE);      \
+    return id;                                                          \
+  }                                                                     \
+                                                                        \
+  virtual const ::OrthancStone::MessageIdentifier& GetIdentifier() const \
+  {                                                                     \
+    return GetStaticIdentifier();                                       \
+  }
+
+
+#define ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(FILE, LINE, NAME, ORIGIN)   \
+  class NAME : public ::OrthancStone::OriginMessage<ORIGIN>             \
+  {                                                                     \
+    ORTHANC_STONE_MESSAGE(FILE, LINE);                                  \
+                                                                        \
+    NAME(const ORIGIN& origin) :                                        \
+      OriginMessage(origin)                                             \
+    {                                                                   \
+    }                                                                   \
+  };
+
+
+#define ORTHANC_STONE_DEFINE_EMPTY_MESSAGE(FILE, LINE, NAME)            \
+  class NAME : public ::OrthancStone::IMessage                          \
+  {                                                                     \
+    ORTHANC_STONE_MESSAGE(FILE, LINE);                                  \
+  };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Messages/IMessageEmitter.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,47 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IObserver.h"
+#include "IMessage.h"
+
+#include <boost/weak_ptr.hpp>
+
+namespace OrthancStone
+{
+  /**
+   This class may be used to customize the way the messages are sent between
+   a source and a destination, for instance by the ThreadedOracle.
+
+   See the concrete class LockingEmitter for an example of when it is useful.
+   */
+  class IMessageEmitter : public boost::noncopyable
+  {
+  public:
+    virtual ~IMessageEmitter()
+    {
+    }
+
+    virtual void EmitMessage(boost::weak_ptr<IObserver> observer,
+                             const IMessage& message) = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Messages/IObservable.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,123 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "IObservable.h"
+
+#include "../StoneException.h"
+
+#include <Logging.h>
+
+#include <cassert>
+
+namespace OrthancStone 
+{
+  IObservable::~IObservable()
+  {
+    // delete all callables (this will also unregister them from the broker)
+    for (Callables::const_iterator it = callables_.begin();
+         it != callables_.end(); ++it)
+    {
+      for (std::set<ICallable*>::const_iterator
+             it2 = it->second.begin(); it2 != it->second.end(); ++it2)
+      {
+        delete *it2;
+      }
+    }
+  }
+  
+
+  void IObservable::RegisterCallable(ICallable* callable)
+  {
+    if (callable == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    
+    const MessageIdentifier& id = callable->GetMessageIdentifier();
+    callables_[id].insert(callable);
+  }
+
+  void IObservable::EmitMessageInternal(const IObserver* receiver,
+                                        const IMessage& message)
+  {
+    //LOG(TRACE) << "IObservable::EmitMessageInternal receiver = " << std::hex << receiver << std::dec;
+    Callables::const_iterator found = callables_.find(message.GetIdentifier());
+
+    if (found != callables_.end())
+    {
+      for (std::set<ICallable*>::const_iterator
+             it = found->second.begin(); it != found->second.end(); ++it)
+      {
+        assert(*it != NULL);
+
+        boost::shared_ptr<IObserver> observer((*it)->GetObserver().lock());
+
+        if (observer)
+        {
+          if (receiver == NULL ||    // Are we broadcasting?
+              observer.get() == receiver)  // Not broadcasting, but this is the receiver
+          {
+            try
+            {
+              (*it)->Apply(message);
+            }
+            catch (Orthanc::OrthancException& e)
+            {
+              LOG(ERROR) << "Exception on callable: " << e.What();
+            }
+            catch (StoneException& e)
+            {
+              LOG(ERROR) << "Exception on callable: " << e.What();
+            }
+            catch (...)
+            {
+              LOG(ERROR) << "Native exception on callable";
+            }
+          }
+        }
+        else
+        {
+          // TODO => Remove "it" from the list of callables => This
+          // allows to suppress the need for "Unregister()"
+        }
+      }
+    }
+  }
+
+
+  void IObservable::BroadcastMessage(const IMessage& message)
+  {
+    EmitMessageInternal(NULL, message);
+  }
+
+  
+  void IObservable::EmitMessage(boost::weak_ptr<IObserver> observer,
+                                const IMessage& message)
+  {
+    //LOG(TRACE) << "IObservable::EmitMessage observer = " << std::hex << observer.get() << std::dec;
+
+    boost::shared_ptr<IObserver> lock(observer.lock());
+    if (lock)
+    {
+      EmitMessageInternal(lock.get(), message);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Messages/IObservable.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,54 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../StoneEnumerations.h"
+#include "ICallable.h"
+#include "IObserver.h"
+
+#include <set>
+#include <map>
+
+namespace OrthancStone 
+{
+  class IObservable : public boost::noncopyable
+  {
+  private:
+    typedef std::map<MessageIdentifier, std::set<ICallable*> >  Callables;
+
+    Callables       callables_;
+
+    void EmitMessageInternal(const IObserver* receiver,
+                             const IMessage& message);
+
+  public:
+    virtual ~IObservable();
+
+    // Takes ownership of the callable
+    void RegisterCallable(ICallable* callable);
+
+    void BroadcastMessage(const IMessage& message);
+
+    void EmitMessage(boost::weak_ptr<IObserver> observer,
+                     const IMessage& message);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Messages/IObserver.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,41 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/noncopyable.hpp>
+
+#include <stdint.h>
+
+namespace OrthancStone 
+{
+  class IObserver : public boost::noncopyable
+  {
+  public:
+    IObserver()
+    {
+    }
+
+    virtual ~IObserver()
+    {
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Messages/ObserverBase.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,68 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ICallable.h"
+#include "IObserver.h"
+#include "IObservable.h"
+
+#include <OrthancException.h>
+
+#include <boost/enable_shared_from_this.hpp>
+
+namespace OrthancStone 
+{
+  template <typename TObserver>
+  class ObserverBase : 
+    public IObserver,
+    public boost::enable_shared_from_this<TObserver>
+  {
+  public:
+    boost::shared_ptr<TObserver> GetSharedObserver()
+    {
+      try
+      {
+        return this->shared_from_this();
+      }
+      catch (boost::bad_weak_ptr&)
+      {
+        throw Orthanc::OrthancException(
+          Orthanc::ErrorCode_InternalError,
+          "Cannot get a shared pointer to an observer from its constructor, "
+          "or the observer is not created as a shared pointer");
+      }
+    }
+
+    template <typename TMessage>
+    ICallable* CreateCallable(void (TObserver::* MemberMethod) (const TMessage&))
+    {
+      return new Callable<TObserver, TMessage>(GetSharedObserver(), MemberMethod);
+    }
+
+    template <typename TMessage>
+    void Register(IObservable& observable,
+                  void (TObserver::* MemberMethod) (const TMessage&))
+    {
+      observable.RegisterCallable(CreateCallable(MemberMethod));
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/IOpenGLContext.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,53 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/noncopyable.hpp>
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    class IOpenGLContext : public boost::noncopyable
+    {
+    public:
+      virtual ~IOpenGLContext()
+      {
+      }
+
+      virtual bool IsContextLost() = 0;
+
+      virtual void MakeCurrent() = 0;
+
+      virtual void SwapBuffer() = 0;
+
+      virtual unsigned int GetCanvasWidth() const = 0;
+
+      virtual unsigned int GetCanvasHeight() const = 0;
+
+      // Getting the size of the canvas can be expensive, especially
+      // in WebAssembly => avoid calling this method too often
+      // (e.g. on each refresh)
+      virtual void RefreshCanvasSize() = 0;
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/OpenGLIncludes.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,116 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../OrthancStone.h"
+
+#if !defined(ORTHANC_ENABLE_OPENGL)
+#  error The macro ORTHANC_ENABLE_OPENGL must be defined
+#endif
+
+#if ORTHANC_ENABLE_OPENGL != 1
+#  error Support for OpenGL is disabled
+#endif
+
+#if defined(__APPLE__)
+#  include <OpenGL/gl.h>
+#  include <OpenGL/glext.h>
+#elif defined(QT_VERSION_MAJOR) && (QT_VERSION >= 5)
+// Qt5 takes care of the inclusions
+#elif defined(_WIN32)
+// On Windows, use the compatibility headers provided by glew
+#  include <GL/glew.h>
+#else
+#  include <GL/gl.h>
+#  include <GL/glext.h>
+#endif
+
+#if ORTHANC_ENABLE_SDL == 1
+# include <SDL_video.h>
+
+# ifdef NDEBUG
+
+// glGetError is very expensive!
+
+#   define ORTHANC_OPENGL_CHECK(name)
+#   define ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT(msg)
+
+# else 
+
+#   define ORTHANC_OPENGL_CHECK(name) \
+if(true)                                                                                                                                \
+{                                                                                                                                       \
+  GLenum error = glGetError();                                                                                                          \
+  if (error != GL_NO_ERROR) {                                                                                                           \
+    SDL_GLContext ctx = SDL_GL_GetCurrentContext();                                                                                     \
+    LOG(ERROR) << "Error when calling " << name << " | current context is: 0x" << std::hex << ctx <<  " | error code is " << error;     \
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,"OpenGL error in " name " | See log.");                            \
+  }                                                                                                                                     \
+} else (void)0
+
+#   define ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT(msg)                          \
+if(true)                                                                   \
+{                                                                          \
+  SDL_GLContext ctx = SDL_GL_GetCurrentContext();                          \
+  LOG(TRACE) << msg << " | Current OpenGL context is " << std::hex << ctx; \
+} else (void)0
+
+# endif
+
+#endif
+
+#if ORTHANC_ENABLE_WASM == 1
+#include <emscripten/html5.h>
+
+#define ORTHANC_OPENGL_CHECK(name) \
+if(true)                                                                                                                                                                                    \
+{                                                                                                                                                                                           \
+  GLenum error = glGetError();                                                                                                                                                              \
+  if (error != GL_NO_ERROR) {                                                                                                                                                               \
+    EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_get_current_context();                                                                                                           \
+    EM_BOOL lost = emscripten_is_webgl_context_lost(ctx);                                                                                                                                   \
+    LOG(ERROR) << "Error when calling " << name << " | current context is: 0x" << std::hex << ctx <<  " | error code is " << error << " | emscripten_is_webgl_context_lost = " << lost;     \
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,"OpenGL error in " name " | See log.");                                                                                \
+  }                                                                                                                                                                                         \
+} else (void)0
+
+#define ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT(msg)                                 \
+if(true)                                                                          \
+{                                                                                 \
+  EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_get_current_context();   \
+  LOG(TRACE) << msg << " | Current OpenGL context is " << std::hex << ctx;        \
+} else (void)0
+
+#define ORTHANC_CHECK_CURRENT_CONTEXT(context)                                                                                                         \
+if(true)                                                                                                                                               \
+{                                                                                                                                                      \
+  EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_get_current_context();                                                                        \
+  void* actualCtx = reinterpret_cast<void*>(ctx);                                                                                                      \
+  void* expectedCtx = context.DebugGetInternalContext();                                                                                               \
+  if(expectedCtx != actualCtx)                                                                                                                         \
+  {                                                                                                                                                    \
+    LOG(ERROR) << "Expected context was " << std::hex << expectedCtx << " while actual context is " << std::hex << actualCtx;                          \
+  }                                                                                                                                                    \
+} else (void)0
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/OpenGLProgram.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,137 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLProgram.h"
+
+#include "OpenGLShader.h"
+#include "IOpenGLContext.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    OpenGLProgram::OpenGLProgram(OpenGL::IOpenGLContext& context)
+      : context_(context)
+    {
+      program_ = glCreateProgram();
+      ORTHANC_OPENGL_CHECK("glCreateProgram");
+      if (program_ == 0)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                        "Cannot create an OpenGL program");
+      }
+    }
+
+
+    OpenGLProgram::~OpenGLProgram()
+    {
+      try
+      {
+        if (!context_.IsContextLost())
+        {
+          ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteProgram");
+          assert(program_ != 0);
+          glDeleteProgram(program_);
+          ORTHANC_OPENGL_CHECK("glDeleteProgram");
+        }
+      }
+      catch (const Orthanc::OrthancException& e)
+      {
+        if (e.HasDetails())
+        {
+          LOG(ERROR) << "OrthancException in ~OpenGLProgram: " << e.What() << " Details: " << e.GetDetails();
+        }
+        else
+        {
+          LOG(ERROR) << "OrthancException in ~OpenGLProgram: " << e.What();
+        }
+      }
+      catch (const std::exception& e)
+      {
+        LOG(ERROR) << "std::exception in ~OpenGLProgram: " << e.what();
+      }
+      catch (...)
+      {
+        LOG(ERROR) << "Unknown exception in ~OpenGLProgram";
+      }
+    }
+
+    void OpenGLProgram::Use()
+    {
+      //ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glUseProgram");
+      glUseProgram(program_);
+      ORTHANC_OPENGL_CHECK("glUseProgram");
+    }
+        
+    void OpenGLProgram::CompileShaders(const std::string& vertexCode,
+                                       const std::string& fragmentCode)
+    {
+      assert(program_ != 0);
+
+      OpenGLShader vertexShader(GL_VERTEX_SHADER, vertexCode);
+      OpenGLShader fragmentShader(GL_FRAGMENT_SHADER, fragmentCode);
+
+      glAttachShader(program_, vertexShader.Release());
+      ORTHANC_OPENGL_CHECK("glAttachShader");
+      glAttachShader(program_, fragmentShader.Release());
+      ORTHANC_OPENGL_CHECK("glAttachShader");
+      glLinkProgram(program_);
+      ORTHANC_OPENGL_CHECK("glLinkProgram");
+      glValidateProgram(program_);
+      ORTHANC_OPENGL_CHECK("glValidateProgram");
+    }
+
+    GLint OpenGLProgram::GetUniformLocation(const std::string& name)
+    { 
+      GLint location = glGetUniformLocation(program_, name.c_str());
+      ORTHANC_OPENGL_CHECK("glGetUniformLocation");
+
+      if (location == -1)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem,
+                                        "Inexistent uniform variable in shader: " + name);
+      }
+      else
+      {
+        return location;
+      }
+    }
+
+    
+    GLint OpenGLProgram::GetAttributeLocation(const std::string& name)
+    { 
+      GLint location = glGetAttribLocation(program_, name.c_str());
+      ORTHANC_OPENGL_CHECK("glGetAttribLocation");
+
+      if (location == -1)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem,
+                                        "Inexistent attribute in shader: " + name);
+      }
+      else
+      {
+        return location;
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/OpenGLProgram.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,59 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OpenGLIncludes.h"
+
+#include <string>
+#include <boost/noncopyable.hpp>
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    class IOpenGLContext;
+
+    class OpenGLProgram : public boost::noncopyable
+    {
+    public:
+      // WARNING: A global OpenGL context must be active to create this object!
+      // the context is only passed so that it can be checked for loss
+      // when destructing the program resource
+      OpenGLProgram(OpenGL::IOpenGLContext& context);
+
+      ~OpenGLProgram();
+
+      void Use();
+
+      // WARNING: A global OpenGL context must be active to run this method!
+      void CompileShaders(const std::string& vertexCode,
+                          const std::string& fragmentCode);
+
+      GLint GetUniformLocation(const std::string& name);
+
+      GLint GetAttributeLocation(const std::string& name);
+    private:
+      GLuint  program_;
+      OpenGL::IOpenGLContext& context_;
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/OpenGLShader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,135 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLShader.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    static GLuint CompileShader(GLenum type,
+                                const std::string& source) 
+    {
+      // Create shader object
+      const GLchar* sourceString[1];
+      GLint sourceStringLengths[1];
+
+      sourceString[0] = source.c_str();
+      sourceStringLengths[0] = static_cast<GLint>(source.length());
+      GLuint shader = glCreateShader(type);
+      ORTHANC_OPENGL_CHECK("glCreateShader");
+
+      if (shader == 0)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                        "Cannot create an OpenGL shader");
+      }
+      else
+      {
+        // Assign and compile the source to the shader object
+        glShaderSource(shader, 1, sourceString, sourceStringLengths);
+        ORTHANC_OPENGL_CHECK("glShaderSource");
+        glCompileShader(shader);
+        ORTHANC_OPENGL_CHECK("glCompileShader");
+
+        // Check if there were errors
+        int infoLen = 0;
+        glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
+        ORTHANC_OPENGL_CHECK("glGetShaderiv");
+
+        if (infoLen > 1)  // Might be equal to 1, which amounts to no error
+        {
+          std::string infoLog;
+          infoLog.resize(infoLen + 1);
+          glGetShaderInfoLog(shader, infoLen, NULL, &infoLog[0]);
+          ORTHANC_OPENGL_CHECK("glGetShaderInfoLog");
+          ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteShader");
+          glDeleteShader(shader);
+          ORTHANC_OPENGL_CHECK("glDeleteShader");
+
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                          "Error while creating an OpenGL shader: " + infoLog);
+        }
+        else
+        {
+          return shader;
+        }
+      }
+    }
+
+
+    OpenGLShader::OpenGLShader(GLenum type,
+                               const std::string& source)
+    {
+      shader_ = CompileShader(type, source);
+      isValid_ = true;
+    }
+
+    
+    OpenGLShader::~OpenGLShader()
+    {
+      try
+      {
+        if (isValid_)
+        {
+          ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteShader");
+          glDeleteShader(shader_);
+          ORTHANC_OPENGL_CHECK("glDeleteShader");
+        }
+      }
+      catch (const Orthanc::OrthancException& e)
+      {
+        if (e.HasDetails())
+        {
+          LOG(ERROR) << "OrthancException in ~OpenGLShader: " << e.What() << " Details: " << e.GetDetails();
+        }
+        else
+        {
+          LOG(ERROR) << "OrthancException in ~OpenGLShader: " << e.What();
+        }
+      }
+      catch (const std::exception& e)
+      {
+        LOG(ERROR) << "std::exception in ~OpenGLShader: " << e.what();
+      }
+      catch (...)
+      {
+        LOG(ERROR) << "Unknown exception in ~OpenGLShader";
+      }
+    }
+
+    GLuint OpenGLShader::Release()
+    {
+      if (isValid_)
+      {
+        isValid_ = false;
+        return shader_;
+      }
+      else
+      {
+        LOG(ERROR) << "OpenGLShader::Release(): (!isValid_)";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/OpenGLShader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,53 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OpenGLIncludes.h"
+
+#include <string>
+#include <boost/noncopyable.hpp>
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    class OpenGLShader : public boost::noncopyable
+    {
+    private:
+      bool     isValid_;
+      GLuint   shader_;
+
+    public:
+      OpenGLShader(GLenum type,
+                   const std::string& source);
+
+      ~OpenGLShader();
+
+      bool IsValid() const
+      {
+        return isValid_;
+      }
+
+      GLuint Release();
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/OpenGLTexture.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,145 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLTexture.h"
+#include "IOpenGLContext.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    OpenGLTexture::OpenGLTexture(OpenGL::IOpenGLContext& context)
+      : width_(0)
+      , height_(0)
+      , context_(context)
+    {
+      if (!context_.IsContextLost())
+      {
+        // Generate a texture object
+        glGenTextures(1, &texture_);
+        if (texture_ == 0)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+            "Cannot create an OpenGL program");
+        }
+      }
+    }
+
+    OpenGLTexture::~OpenGLTexture()
+    {
+      try
+      {
+        if (!context_.IsContextLost())
+        {
+          assert(texture_ != 0);
+          ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteTextures");
+          glDeleteTextures(1, &texture_);
+        }
+      }
+      catch (const Orthanc::OrthancException& e)
+      {
+        if (e.HasDetails())
+        {
+          LOG(ERROR) << "OrthancException in ~OpenGLTexture: " << e.What() << " Details: " << e.GetDetails();
+        }
+        else
+        {
+          LOG(ERROR) << "OrthancException in ~OpenGLTexture: " << e.What();
+        }
+      }
+      catch (const std::exception& e)
+      {
+        LOG(ERROR) << "std::exception in ~OpenGLTexture: " << e.what();
+      }
+      catch (...)
+      {
+        LOG(ERROR) << "Unknown exception in ~OpenGLTexture";
+      }
+    }
+
+    void OpenGLTexture::Load(const Orthanc::ImageAccessor& image,
+                             bool isLinearInterpolation)
+    {
+      if (!context_.IsContextLost())
+      {
+        glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // Disable byte-alignment restriction
+
+        if (image.GetPitch() != image.GetBytesPerPixel() * image.GetWidth())
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
+            "Unsupported non-zero padding");
+        }
+
+        // Bind it
+        glActiveTexture(GL_TEXTURE0);
+        glBindTexture(GL_TEXTURE_2D, texture_);
+
+        GLenum sourceFormat, internalFormat;
+
+        switch (image.GetFormat())
+        {
+        case Orthanc::PixelFormat_Grayscale8:
+          sourceFormat = GL_RED;
+          internalFormat = GL_RED;
+          break;
+
+        case Orthanc::PixelFormat_RGB24:
+          sourceFormat = GL_RGB;
+          internalFormat = GL_RGB;
+          break;
+
+        case Orthanc::PixelFormat_RGBA32:
+          sourceFormat = GL_RGBA;
+          internalFormat = GL_RGBA;
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
+            "No support for this format in OpenGL textures: " +
+            std::string(EnumerationToString(image.GetFormat())));
+        }
+
+        width_ = image.GetWidth();
+        height_ = image.GetHeight();
+
+        GLint interpolation = (isLinearInterpolation ? GL_LINEAR : GL_NEAREST);
+
+        // Load the texture from the image buffer
+        glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, image.GetWidth(), image.GetHeight(),
+          0, sourceFormat, GL_UNSIGNED_BYTE, image.GetBuffer());
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, interpolation);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, interpolation);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+      }
+    }
+
+
+    void OpenGLTexture::Bind(GLint location)
+    {
+      glActiveTexture(GL_TEXTURE0);
+      glBindTexture(GL_TEXTURE_2D, texture_);
+      glUniform1i(location, 0 /* texture unit */);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/OpenGLTexture.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,66 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OpenGLIncludes.h"
+
+#include <Images/ImageAccessor.h>
+
+#include <boost/noncopyable.hpp>
+
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    class IOpenGLContext;
+
+    class OpenGLTexture : public boost::noncopyable
+    {
+    private:
+      GLuint        texture_;
+      unsigned int  width_;
+      unsigned int  height_;
+      OpenGL::IOpenGLContext& context_;
+
+    public:
+      OpenGLTexture(OpenGL::IOpenGLContext& context);
+
+      ~OpenGLTexture();
+
+      unsigned int GetWidth() const
+      {
+        return width_;
+      }
+
+      unsigned int GetHeight() const
+      {
+        return height_;
+      }
+
+      void Load(const Orthanc::ImageAccessor& image,
+                bool isLinearInterpolation);
+
+      void Bind(GLint location);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/SdlOpenGLContext.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,127 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SdlOpenGLContext.h"
+#include "../StoneException.h"
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#if !defined(ORTHANC_ENABLE_GLEW)
+#  error Macro ORTHANC_ENABLE_GLEW must be defined
+#endif
+
+#if ORTHANC_ENABLE_GLEW == 1
+#  include <GL/glew.h>
+#endif
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  SdlOpenGLContext::SdlOpenGLContext(const char* title,
+                                     unsigned int width,
+                                     unsigned int height,
+                                     bool allowDpiScaling) 
+    : window_(title, width, height, true /* enable OpenGL */, allowDpiScaling)
+    , context_(NULL)
+  {
+    context_ = SDL_GL_CreateContext(window_.GetObject());
+    
+    if (context_ == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                      "Cannot initialize OpenGL");
+    }
+
+#if ORTHANC_ENABLE_GLEW == 1
+    // The initialization function of glew (i.e. "glewInit()") can
+    // only be called once an OpenGL is setup.
+    // https://stackoverflow.com/a/45033669/881731
+    {
+      static boost::mutex  mutex_;
+      static bool          isGlewInitialized_ = false;
+  
+      boost::mutex::scoped_lock lock(mutex_);
+
+      if (!isGlewInitialized_)
+      {
+        LOG(INFO) << "Initializing glew";
+        
+        GLenum err = glewInit();
+        if (GLEW_OK != err)
+        {
+          LOG(ERROR) << glewGetErrorString(err);
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                          "Cannot initialize glew");
+        }
+
+        isGlewInitialized_ = true;
+      }
+    }    
+#endif
+  }
+
+  
+  SdlOpenGLContext::~SdlOpenGLContext()
+  {
+    SDL_GL_DeleteContext(context_);
+  }
+
+  void SdlOpenGLContext::MakeCurrent()
+  {
+    if (SDL_GL_MakeCurrent(window_.GetObject(), context_) != 0)
+    {
+      const char* errText = SDL_GetError();
+      std::stringstream ss;
+      ss << "Cannot set current OpenGL context. SDL error text: " << errText;
+      std::string errStr = ss.str();
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, errStr.c_str());
+    }
+
+    // This makes our buffer swap synchronized with the monitor's vertical refresh
+    SDL_GL_SetSwapInterval(1);
+  }
+
+  
+  void SdlOpenGLContext::SwapBuffer()
+  {
+    // Swap our buffer to display the current contents of buffer on screen
+    SDL_GL_SwapWindow(window_.GetObject());
+  }
+
+  
+  unsigned int SdlOpenGLContext::GetCanvasWidth() const
+  {
+    int w = 0;
+    SDL_GL_GetDrawableSize(window_.GetObject(), &w, NULL);
+    return static_cast<unsigned int>(w);
+  }
+
+  
+  unsigned int SdlOpenGLContext::GetCanvasHeight() const
+  {
+    int h = 0;
+    SDL_GL_GetDrawableSize(window_.GetObject(), NULL, &h);
+    return static_cast<unsigned int>(h);
+  }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/SdlOpenGLContext.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,80 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include "IOpenGLContext.h"
+#include "../Viewport/SdlWindow.h"
+
+#include <SDL_render.h>
+
+#include <Enumerations.h>
+
+namespace OrthancStone
+{
+  class SdlOpenGLContext : public OpenGL::IOpenGLContext
+  {
+  private:
+    SdlWindow      window_;
+    SDL_GLContext  context_;
+
+  public:
+    SdlOpenGLContext(const char* title,
+                     unsigned int width,
+                     unsigned int height,
+                     bool allowDpiScaling = true);
+
+    ~SdlOpenGLContext();
+
+    SdlWindow& GetWindow()
+    {
+      return window_;
+    }
+
+    virtual bool IsContextLost() ORTHANC_OVERRIDE
+    {
+      // On desktop applications, an OpenGL context should never be lost
+      return false;
+    }
+
+    virtual void MakeCurrent() ORTHANC_OVERRIDE;
+
+    virtual void SwapBuffer() ORTHANC_OVERRIDE;
+
+    virtual unsigned int GetCanvasWidth() const ORTHANC_OVERRIDE;
+
+    virtual unsigned int GetCanvasHeight() const ORTHANC_OVERRIDE;
+
+    void ToggleMaximize()
+    {
+      window_.ToggleMaximize();
+    }
+
+    virtual void RefreshCanvasSize() ORTHANC_OVERRIDE
+    {
+      // Nothing to do for SDL
+    }
+  };
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/WebAssemblyOpenGLContext.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,271 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebAssemblyOpenGLContext.h"
+
+#include "../StoneException.h"
+
+#include <OrthancException.h>
+
+#include <emscripten/html5.h>
+#include <emscripten/em_asm.h>
+
+#include <boost/math/special_functions/round.hpp>
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    class WebAssemblyOpenGLContext::PImpl
+    {
+    private:
+      std::string                     canvasSelector_;
+      EMSCRIPTEN_WEBGL_CONTEXT_HANDLE context_;
+      unsigned int                    canvasWidth_;
+      unsigned int                    canvasHeight_;
+      bool                            isContextLost_;
+
+    public:
+      PImpl(const std::string& canvasSelector)
+        : canvasSelector_(canvasSelector)
+        , isContextLost_(false)
+      {
+        // Context configuration
+        EmscriptenWebGLContextAttributes attr; 
+        emscripten_webgl_init_context_attributes(&attr);
+
+        context_ = emscripten_webgl_create_context(canvasSelector.c_str(), &attr);
+        if (context_ == 0)
+        {
+          std::string message("Cannot create an OpenGL context for the element with the following CSS selector: \"");
+          message += canvasSelector;
+          message += "\"  Please make sure the -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 flag has been passed to Emscripten when building.";
+          LOG(ERROR) << message;
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, message);
+        }
+
+        UpdateSize();
+      }
+
+      void* DebugGetInternalContext() const
+      {
+        return reinterpret_cast<void*>(context_);
+      }
+
+      bool IsContextLost()
+      {
+        //LOG(TRACE) << "IsContextLost() for context " << std::hex << context_ << std::dec;
+        bool apiFlag = (emscripten_is_webgl_context_lost(context_) != 0);
+        isContextLost_ = apiFlag;
+        return isContextLost_;
+      }
+
+      void SetLostContext()
+      {
+        isContextLost_ = true;
+      }
+
+      ~PImpl()
+      {
+        try
+        {
+          EMSCRIPTEN_RESULT result = emscripten_webgl_destroy_context(context_);
+          if (result != EMSCRIPTEN_RESULT_SUCCESS)
+          {
+            LOG(ERROR) << "emscripten_webgl_destroy_context returned code " << result;
+          }
+        }
+        catch (const Orthanc::OrthancException& e)
+        {
+          if (e.HasDetails())
+          {
+            LOG(ERROR) << "OrthancException in WebAssemblyOpenGLContext::~PImpl: " << e.What() << " Details: " << e.GetDetails();
+          }
+          else
+          {
+            LOG(ERROR) << "OrthancException in WebAssemblyOpenGLContext::~PImpl: " << e.What();
+          }
+        }
+        catch (const std::exception& e)
+        {
+          LOG(ERROR) << "std::exception in WebAssemblyOpenGLContext::~PImpl: " << e.what();
+        }
+        catch (...)
+        {
+          LOG(ERROR) << "Unknown exception in WebAssemblyOpenGLContext::~PImpl";
+        }
+      }
+
+      const std::string& GetCanvasSelector() const
+      {
+        return canvasSelector_;
+      }
+
+      void MakeCurrent()
+      {
+        if (IsContextLost())
+        {
+          LOG(ERROR) << "MakeCurrent() called on lost context " << context_;
+          throw StoneException(ErrorCode_WebGLContextLost);
+        }
+
+        if (emscripten_is_webgl_context_lost(context_))
+        {
+          LOG(ERROR) << "OpenGL context has been lost for canvas selector: " << canvasSelector_;
+          SetLostContext();
+          throw StoneException(ErrorCode_WebGLContextLost);
+        }
+
+        if (emscripten_webgl_make_context_current(context_) != EMSCRIPTEN_RESULT_SUCCESS)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                          "Cannot set the OpenGL context");
+        }
+      }
+
+      void SwapBuffer() 
+      {
+        /**
+         * "Rendered WebGL content is implicitly presented (displayed to
+         * the user) on the canvas when the event handler that renders with
+         * WebGL returns back to the browser event loop."
+         * https://emscripten.org/docs/api_reference/html5.h.html#webgl-context
+         *
+         * Could call "emscripten_webgl_commit_frame()" if
+         * "explicitSwapControl" option were set to "true".
+         **/
+      }
+
+      unsigned int GetCanvasWidth() const
+      {
+        return canvasWidth_;
+      }
+
+      unsigned int GetCanvasHeight() const
+      {
+        return canvasHeight_;
+      }
+
+      void UpdateSize()
+      {
+        double w, h;
+        emscripten_get_element_css_size(canvasSelector_.c_str(), &w, &h);
+
+        /**
+         * Emscripten has the function emscripten_get_element_css_size()
+         * to query the width and height of a named HTML element. I'm
+         * calling this first to get the initial size of the canvas DOM
+         * element, and then call emscripten_set_canvas_size() to
+         * initialize the framebuffer size of the canvas to the same
+         * size as its DOM element.
+         * https://floooh.github.io/2017/02/22/emsc-html.html
+         **/
+
+        if (w <= 0 ||
+            h <= 0)
+        {
+          canvasWidth_ = 0;
+          canvasHeight_ = 0;
+        }
+        else
+        {
+          canvasWidth_ = static_cast<unsigned int>(boost::math::iround(w));
+          canvasHeight_ = static_cast<unsigned int>(boost::math::iround(h));
+        }
+        
+        emscripten_set_canvas_element_size(canvasSelector_.c_str(), canvasWidth_, canvasHeight_);
+      }
+    };
+
+
+    WebAssemblyOpenGLContext::WebAssemblyOpenGLContext(const std::string& canvasSelector) :
+      pimpl_(new PImpl(canvasSelector))
+    {
+    }
+
+    bool WebAssemblyOpenGLContext::IsContextLost()
+    {
+      return pimpl_->IsContextLost();
+    }
+
+    void WebAssemblyOpenGLContext::SetLostContext()
+    {
+      pimpl_->SetLostContext();
+    }
+
+    void* WebAssemblyOpenGLContext::DebugGetInternalContext() const
+    {
+      return pimpl_->DebugGetInternalContext();
+    }
+    
+    void WebAssemblyOpenGLContext::MakeCurrent()
+    {
+      assert(pimpl_.get() != NULL);
+      pimpl_->MakeCurrent();
+    }
+
+    void WebAssemblyOpenGLContext::SwapBuffer() 
+    {
+      assert(pimpl_.get() != NULL);
+      pimpl_->SwapBuffer();
+    }
+
+    unsigned int WebAssemblyOpenGLContext::GetCanvasWidth() const
+    {
+      assert(pimpl_.get() != NULL);
+      return pimpl_->GetCanvasWidth();
+    }
+
+    unsigned int WebAssemblyOpenGLContext::GetCanvasHeight() const
+    {
+      assert(pimpl_.get() != NULL);
+      return pimpl_->GetCanvasHeight();
+    }
+
+    void WebAssemblyOpenGLContext::RefreshCanvasSize()
+    {
+      assert(pimpl_.get() != NULL);
+
+      try
+      {
+        pimpl_->UpdateSize();
+      }
+      catch (const StoneException& e)
+      {
+        // Ignore problems about the loss of the WebGL context (edge case)
+        if (e.GetErrorCode() == ErrorCode_WebGLContextLost)
+        {
+          return;
+        }
+        else
+        {
+          throw;
+        }
+      }
+    }
+
+    const std::string& WebAssemblyOpenGLContext::GetCanvasSelector() const
+    {
+      assert(pimpl_.get() != NULL);
+      return pimpl_->GetCanvasSelector();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OpenGL/WebAssemblyOpenGLContext.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,86 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if !defined(ORTHANC_ENABLE_WASM)
+#  error Macro ORTHANC_ENABLE_WASM must be defined
+#endif
+
+#if ORTHANC_ENABLE_WASM != 1
+#  error This file can only be used if targeting WebAssembly
+#endif
+
+#if !defined(ORTHANC_ENABLE_OPENGL)
+#  error The macro ORTHANC_ENABLE_OPENGL must be defined
+#endif
+
+#if ORTHANC_ENABLE_OPENGL != 1
+#  error Support for OpenGL is disabled
+#endif
+
+#include "IOpenGLContext.h"
+
+#include <Enumerations.h>
+
+#include <boost/shared_ptr.hpp>
+
+namespace OrthancStone
+{
+  namespace OpenGL
+  {
+    class WebAssemblyOpenGLContext : public OpenGL::IOpenGLContext
+    {
+    private:
+      class PImpl;
+      boost::shared_ptr<PImpl>  pimpl_;
+
+    public:
+      WebAssemblyOpenGLContext(const std::string& canvasSelector);
+
+      virtual bool IsContextLost() ORTHANC_OVERRIDE;
+
+      virtual void MakeCurrent() ORTHANC_OVERRIDE;
+
+      virtual void SwapBuffer() ORTHANC_OVERRIDE;
+
+      virtual unsigned int GetCanvasWidth() const ORTHANC_OVERRIDE;
+
+      virtual unsigned int GetCanvasHeight() const ORTHANC_OVERRIDE;
+
+      /**
+      Returns true if the underlying context has been successfully recreated
+      */
+      //bool TryRecreate();
+
+      virtual void RefreshCanvasSize() ORTHANC_OVERRIDE;
+
+      const std::string& GetCanvasSelector() const;
+
+
+      /**
+       * This is for manual context loss (debug purposes)
+       **/
+      void* DebugGetInternalContext() const;
+      void SetLostContext();
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/GenericOracleRunner.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,524 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GenericOracleRunner.h"
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error The macro ORTHANC_ENABLE_DCMTK must be defined
+#endif
+
+#include "GetOrthancImageCommand.h"
+#include "GetOrthancWebViewerJpegCommand.h"
+#include "HttpCommand.h"
+#include "OracleCommandExceptionMessage.h"
+#include "OrthancRestApiCommand.h"
+#include "ParseDicomFromFileCommand.h"
+#include "ParseDicomFromWadoCommand.h"
+#include "ReadFileCommand.h"
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include "ParseDicomSuccessMessage.h"
+#  include <dcmtk/dcmdata/dcdeftag.h>
+#  include <dcmtk/dcmdata/dcfilefo.h>
+static unsigned int BUCKET_DICOMDIR = 0;
+static unsigned int BUCKET_SOP = 1;
+#endif
+
+#include <Compression/GzipCompressor.h>
+#include <HttpClient.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+#include <SystemToolbox.h>
+
+#include <boost/filesystem.hpp>
+
+
+
+namespace OrthancStone
+{
+  static void CopyHttpHeaders(Orthanc::HttpClient& client,
+                              const Orthanc::HttpClient::HttpHeaders& headers)
+  {
+    for (Orthanc::HttpClient::HttpHeaders::const_iterator
+           it = headers.begin(); it != headers.end(); it++ )
+    {
+      client.AddHeader(it->first, it->second);
+    }
+  }
+
+
+  static void DecodeAnswer(std::string& answer,
+                           const Orthanc::HttpClient::HttpHeaders& headers)
+  {
+    Orthanc::HttpCompression contentEncoding = Orthanc::HttpCompression_None;
+
+    for (Orthanc::HttpClient::HttpHeaders::const_iterator it = headers.begin(); 
+         it != headers.end(); ++it)
+    {
+      std::string s;
+      Orthanc::Toolbox::ToLowerCase(s, it->first);
+
+      if (s == "content-encoding")
+      {
+        if (it->second == "gzip")
+        {
+          contentEncoding = Orthanc::HttpCompression_Gzip;
+        }
+        else 
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
+                                          "Unsupported HTTP Content-Encoding: " + it->second);
+        }
+
+        break;
+      }
+    }
+
+    if (contentEncoding == Orthanc::HttpCompression_Gzip)
+    {
+      std::string compressed;
+      answer.swap(compressed);
+          
+      Orthanc::GzipCompressor compressor;
+      compressor.Uncompress(answer, compressed.c_str(), compressed.size());
+
+      LOG(INFO) << "Uncompressing gzip Encoding: from " << compressed.size()
+                << " to " << answer.size() << " bytes";
+    }
+  }
+
+
+  static void RunHttpCommand(std::string& answer,
+                             Orthanc::HttpClient::HttpHeaders& answerHeaders,
+                             const HttpCommand& command)
+  {
+    Orthanc::HttpClient client;
+    client.SetUrl(command.GetUrl());
+    client.SetMethod(command.GetMethod());
+    client.SetTimeout(command.GetTimeout());
+
+    CopyHttpHeaders(client, command.GetHttpHeaders());
+
+    if (command.HasCredentials())
+    {
+      client.SetCredentials(command.GetUsername().c_str(), command.GetPassword().c_str());
+    }
+
+    if (command.GetMethod() == Orthanc::HttpMethod_Post ||
+        command.GetMethod() == Orthanc::HttpMethod_Put)
+    {
+      client.SetBody(command.GetBody());
+    }
+
+    client.ApplyAndThrowException(answer, answerHeaders);
+    DecodeAnswer(answer, answerHeaders);
+  }
+
+
+  static void RunInternal(boost::weak_ptr<IObserver> receiver,
+                          IMessageEmitter& emitter,
+                          const HttpCommand& command)
+  {
+    std::string answer;
+    Orthanc::HttpClient::HttpHeaders answerHeaders;
+    RunHttpCommand(answer, answerHeaders, command);
+    
+    HttpCommand::SuccessMessage message(command, answerHeaders, answer);
+    emitter.EmitMessage(receiver, message);
+  }
+
+  
+  static void RunOrthancRestApiCommand(std::string& answer,
+                                       Orthanc::HttpClient::HttpHeaders& answerHeaders,
+                                       const Orthanc::WebServiceParameters& orthanc,
+                                       const OrthancRestApiCommand& command)
+  {
+    Orthanc::HttpClient client(orthanc, command.GetUri());
+    client.SetRedirectionFollowed(false);
+    client.SetMethod(command.GetMethod());
+    client.SetTimeout(command.GetTimeout());
+
+    CopyHttpHeaders(client, command.GetHttpHeaders());
+
+    if (command.GetMethod() == Orthanc::HttpMethod_Post ||
+        command.GetMethod() == Orthanc::HttpMethod_Put)
+    {
+      client.SetBody(command.GetBody());
+    }
+
+    client.ApplyAndThrowException(answer, answerHeaders);
+    DecodeAnswer(answer, answerHeaders);
+  }
+
+  
+  static void RunInternal(boost::weak_ptr<IObserver> receiver,
+                          IMessageEmitter& emitter,
+                          const Orthanc::WebServiceParameters& orthanc,
+                          const OrthancRestApiCommand& command)
+  {
+    std::string answer;
+    Orthanc::HttpClient::HttpHeaders answerHeaders;
+    RunOrthancRestApiCommand(answer, answerHeaders, orthanc, command);
+
+    OrthancRestApiCommand::SuccessMessage message(command, answerHeaders, answer);
+    emitter.EmitMessage(receiver, message);
+  }
+
+
+  static void RunInternal(boost::weak_ptr<IObserver> receiver,
+                          IMessageEmitter& emitter,
+                          const Orthanc::WebServiceParameters& orthanc,
+                          const GetOrthancImageCommand& command)
+  {
+    Orthanc::HttpClient client(orthanc, command.GetUri());
+    client.SetRedirectionFollowed(false);
+    client.SetTimeout(command.GetTimeout());
+
+    CopyHttpHeaders(client, command.GetHttpHeaders());
+    
+    std::string answer;
+    Orthanc::HttpClient::HttpHeaders answerHeaders;
+    client.ApplyAndThrowException(answer, answerHeaders);
+
+    DecodeAnswer(answer, answerHeaders);
+
+    command.ProcessHttpAnswer(receiver, emitter, answer, answerHeaders);
+  }
+
+
+  static void RunInternal(boost::weak_ptr<IObserver> receiver,
+                          IMessageEmitter& emitter,
+                          const Orthanc::WebServiceParameters& orthanc,
+                          const GetOrthancWebViewerJpegCommand& command)
+  {
+    Orthanc::HttpClient client(orthanc, command.GetUri());
+    client.SetRedirectionFollowed(false);
+    client.SetTimeout(command.GetTimeout());
+
+    CopyHttpHeaders(client, command.GetHttpHeaders());
+
+    std::string answer;
+    Orthanc::HttpClient::HttpHeaders answerHeaders;
+    client.ApplyAndThrowException(answer, answerHeaders);
+
+    DecodeAnswer(answer, answerHeaders);
+
+    command.ProcessHttpAnswer(receiver, emitter, answer);
+  }
+
+
+  static std::string GetPath(const std::string& root,
+                             const std::string& file)
+  {
+    boost::filesystem::path a(root);
+    boost::filesystem::path b(file);
+
+    boost::filesystem::path c;
+    if (b.is_absolute())
+    {
+      c = b;
+    }
+    else
+    {
+      c = a / b;
+    }
+
+    return c.string();
+  }
+
+
+  static void RunInternal(boost::weak_ptr<IObserver> receiver,
+                          IMessageEmitter& emitter,
+                          const std::string& root,
+                          const ReadFileCommand& command)
+  {
+    std::string path = GetPath(root, command.GetPath());
+    LOG(TRACE) << "Oracle reading file: " << path;
+
+    std::string content;
+    Orthanc::SystemToolbox::ReadFile(content, path, true /* log */);
+
+    ReadFileCommand::SuccessMessage message(command, content);
+    emitter.EmitMessage(receiver, message);
+  }
+
+
+#if ORTHANC_ENABLE_DCMTK == 1
+  static Orthanc::ParsedDicomFile* ParseDicom(uint64_t& fileSize,  /* OUT */
+                                              const std::string& path,
+                                              bool isPixelData)
+  {
+    if (!Orthanc::SystemToolbox::IsRegularFile(path))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentFile);
+    }
+    
+    LOG(TRACE) << "Parsing DICOM file, " << (isPixelData ? "with" : "without")
+               << " pixel data: " << path;
+    
+    boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();
+    
+    fileSize = Orthanc::SystemToolbox::GetFileSize(path);
+    
+    // Check for 32bit systems
+    if (fileSize != static_cast<uint64_t>(static_cast<size_t>(fileSize)))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotEnoughMemory);
+    }
+    
+    DcmFileFormat dicom;
+    bool ok;
+    
+    if (isPixelData)
+    {
+      ok = dicom.loadFile(path.c_str()).good();
+    }
+    else
+    {
+#if DCMTK_VERSION_NUMBER >= 362
+      /**
+       * NB : We could stop at (0x3007, 0x0000) instead of
+       * DCM_PixelData as the Stone framework does not use further
+       * tags (cf. the Orthanc::DICOM_TAG_* constants), but we still
+       * use "PixelData" as this does not change the runtime much, and
+       * as it is more explicit.
+       **/
+      static const DcmTagKey STOP = DCM_PixelData;
+      //static const DcmTagKey STOP(0x3007, 0x0000);
+
+      ok = dicom.loadFileUntilTag(path.c_str(), EXS_Unknown, EGL_noChange,
+                                  DCM_MaxReadLength, ERM_autoDetect, STOP).good();
+#else
+      // The primitive "loadFileUntilTag" was introduced in DCMTK 3.6.2
+      ok = dicom.loadFile(path.c_str()).good();
+#endif
+    }
+
+    if (ok)
+    {
+      std::unique_ptr<Orthanc::ParsedDicomFile> result(new Orthanc::ParsedDicomFile(dicom));
+
+      boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();
+      LOG(TRACE) << path << ": parsed in " << (end-start).total_milliseconds() << " ms";
+
+      return result.release();
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
+                                      "Cannot parse file: " + path);
+    }
+  }
+
+  
+  static void RunInternal(boost::weak_ptr<IObserver> receiver,
+                          IMessageEmitter& emitter,
+                          boost::shared_ptr<ParsedDicomCache> cache,
+                          const std::string& root,
+                          const ParseDicomFromFileCommand& command)
+  {
+    const std::string path = GetPath(root, command.GetPath());
+
+    if (cache)
+    {
+      ParsedDicomCache::Reader reader(*cache, BUCKET_DICOMDIR, path);
+      if (reader.IsValid() &&
+          (!command.IsPixelDataIncluded() ||
+           reader.HasPixelData()))
+      {
+        // Reuse the DICOM file from the cache
+        ParseDicomSuccessMessage message(command, command.GetSource(), reader.GetDicom(),
+                                         reader.GetFileSize(), reader.HasPixelData());
+        emitter.EmitMessage(receiver, message);
+        return;
+      }
+    }
+
+    uint64_t fileSize;
+    std::unique_ptr<Orthanc::ParsedDicomFile> parsed(ParseDicom(fileSize, path, command.IsPixelDataIncluded()));
+
+    if (fileSize != static_cast<size_t>(fileSize))
+    {
+      // Cannot load such a large file on 32-bit architecture
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotEnoughMemory);
+    }
+    
+    {
+      ParseDicomSuccessMessage message
+        (command, command.GetSource(), *parsed,
+         static_cast<size_t>(fileSize), command.IsPixelDataIncluded());
+      emitter.EmitMessage(receiver, message);
+    }
+
+    if (cache)
+    {
+      // Store it into the cache for future use
+      
+      // Invalidate to overwrite DICOM instance that would already
+      // be stored without pixel data
+      cache->Invalidate(BUCKET_DICOMDIR, path);
+      
+      cache->Acquire(BUCKET_DICOMDIR, path, parsed.release(),
+                     static_cast<size_t>(fileSize), command.IsPixelDataIncluded());
+    }
+  }
+
+  
+  static void RunInternal(boost::weak_ptr<IObserver> receiver,
+                          IMessageEmitter& emitter,
+                          boost::shared_ptr<ParsedDicomCache> cache,
+                          const Orthanc::WebServiceParameters& orthanc,
+                          const ParseDicomFromWadoCommand& command)
+  {
+    if (cache)
+    {
+      ParsedDicomCache::Reader reader(*cache, BUCKET_SOP, command.GetSopInstanceUid());
+      if (reader.IsValid() &&
+          reader.HasPixelData())
+      {
+        // Reuse the DICOM file from the cache
+        ParseDicomSuccessMessage message(command, command.GetSource(), reader.GetDicom(),
+                                         reader.GetFileSize(), reader.HasPixelData());
+        emitter.EmitMessage(receiver, message);
+        return;
+      }
+    }
+
+    std::string answer;
+    Orthanc::HttpClient::HttpHeaders answerHeaders;
+
+    switch (command.GetRestCommand().GetType())
+    {
+      case IOracleCommand::Type_Http:
+        RunHttpCommand(answer, answerHeaders, dynamic_cast<const HttpCommand&>(command.GetRestCommand()));
+        break;
+        
+      case IOracleCommand::Type_OrthancRestApi:
+        RunOrthancRestApiCommand(answer, answerHeaders, orthanc,
+                                 dynamic_cast<const OrthancRestApiCommand&>(command.GetRestCommand()));
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+
+    size_t fileSize;
+    std::unique_ptr<Orthanc::ParsedDicomFile> parsed(ParseDicomSuccessMessage::ParseWadoAnswer(fileSize, answer, answerHeaders));
+
+    {
+      ParseDicomSuccessMessage message(command, command.GetSource(), *parsed, fileSize,
+                                       true /* pixel data always is included in WADO-RS */);
+      emitter.EmitMessage(receiver, message);
+    }
+
+    if (cache)
+    {
+      // Store it into the cache for future use
+      cache->Acquire(BUCKET_SOP, command.GetSopInstanceUid(), parsed.release(), fileSize, true);
+    }
+  }
+#endif
+
+
+  void GenericOracleRunner::Run(boost::weak_ptr<IObserver> receiver,
+                                IMessageEmitter& emitter,
+                                const IOracleCommand& command)
+  {
+    Orthanc::ErrorCode error = Orthanc::ErrorCode_Success;
+    
+    try
+    {
+      switch (command.GetType())
+      {
+        case IOracleCommand::Type_Sleep:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType,
+                                          "Sleep command cannot be executed by the runner");
+
+        case IOracleCommand::Type_Http:
+          RunInternal(receiver, emitter, dynamic_cast<const HttpCommand&>(command));
+          break;
+
+        case IOracleCommand::Type_OrthancRestApi:
+          RunInternal(receiver, emitter, orthanc_,
+                      dynamic_cast<const OrthancRestApiCommand&>(command));
+          break;
+
+        case IOracleCommand::Type_GetOrthancImage:
+          RunInternal(receiver, emitter, orthanc_,
+                      dynamic_cast<const GetOrthancImageCommand&>(command));
+          break;
+
+        case IOracleCommand::Type_GetOrthancWebViewerJpeg:
+          RunInternal(receiver, emitter, orthanc_,
+                      dynamic_cast<const GetOrthancWebViewerJpegCommand&>(command));
+          break;
+
+        case IOracleCommand::Type_ReadFile:
+          RunInternal(receiver, emitter, rootDirectory_,
+                      dynamic_cast<const ReadFileCommand&>(command));
+          break;
+
+        case IOracleCommand::Type_ParseDicomFromFile:
+        case IOracleCommand::Type_ParseDicomFromWado:
+#if ORTHANC_ENABLE_DCMTK == 1
+          switch (command.GetType())
+          {
+            case IOracleCommand::Type_ParseDicomFromFile:
+              RunInternal(receiver, emitter, dicomCache_, rootDirectory_,
+                          dynamic_cast<const ParseDicomFromFileCommand&>(command));
+              break;
+
+            case IOracleCommand::Type_ParseDicomFromWado:
+              RunInternal(receiver, emitter, dicomCache_, orthanc_,
+                          dynamic_cast<const ParseDicomFromWadoCommand&>(command));
+              break;
+
+            default:
+              throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+          }            
+          break;
+#else
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
+                                          "DCMTK must be enabled to parse DICOM files");
+#endif
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+    }
+    catch (Orthanc::OrthancException& e)
+    {
+      LOG(ERROR) << "Exception within the oracle: " << e.What();
+      error = e.GetErrorCode();
+    }
+    catch (...)
+    {
+      LOG(ERROR) << "Threaded exception within the oracle";
+      error = Orthanc::ErrorCode_InternalError;
+    }
+
+    if (error != Orthanc::ErrorCode_Success)
+    {
+      OracleCommandExceptionMessage message(command, error);
+      emitter.EmitMessage(receiver, message);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/GenericOracleRunner.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,89 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <OrthancFramework.h>  // To have the macros properly defined
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error The macro ORTHANC_ENABLE_DCMTK must be defined
+#endif
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include "../Toolbox/ParsedDicomCache.h"
+#endif
+
+#include "IOracleCommand.h"
+#include "../Messages/IMessageEmitter.h"
+
+#include <Enumerations.h>  // For ORTHANC_OVERRIDE
+#include <WebServiceParameters.h>
+
+namespace OrthancStone
+{
+  class GenericOracleRunner : public boost::noncopyable
+  {
+  private:
+    Orthanc::WebServiceParameters  orthanc_;
+    std::string                    rootDirectory_;
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    boost::shared_ptr<ParsedDicomCache>  dicomCache_;
+#endif
+
+  public:
+    GenericOracleRunner() :
+      rootDirectory_(".")
+    {
+    }
+
+    void SetOrthanc(const Orthanc::WebServiceParameters& orthanc)
+    {
+      orthanc_ = orthanc;
+    }
+
+    const Orthanc::WebServiceParameters& GetOrthanc() const
+    {
+      return orthanc_;
+    }
+
+    void SetRootDirectory(const std::string& rootDirectory)
+    {
+      rootDirectory_ = rootDirectory;
+    }
+
+    const std::string GetRootDirectory() const
+    {
+      return rootDirectory_;
+    }
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    void SetDicomCache(boost::shared_ptr<ParsedDicomCache> cache)
+    {
+      dicomCache_ = cache;
+    }
+#endif
+
+    void Run(boost::weak_ptr<IObserver> receiver,
+             IMessageEmitter& emitter,
+             const IOracleCommand& command);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/GetOrthancImageCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,189 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GetOrthancImageCommand.h"
+
+#include <Images/JpegReader.h>
+#include <Images/PamReader.h>
+#include <Images/PngReader.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+namespace OrthancStone
+{
+  GetOrthancImageCommand::GetOrthancImageCommand() :
+    uri_("/"),
+    timeout_(600),
+    hasExpectedFormat_(false)
+  {
+  }
+
+
+  void GetOrthancImageCommand::SetExpectedPixelFormat(Orthanc::PixelFormat format)
+  {
+    hasExpectedFormat_ = true;
+    expectedFormat_ = format;
+  }
+
+
+  static std::string GetFormatSuffix(Orthanc::PixelFormat pixelFormat)
+  {
+    switch (pixelFormat)
+    {
+      case Orthanc::PixelFormat_RGB24:
+        return "preview";
+      
+      case Orthanc::PixelFormat_Grayscale16:
+        return "image-uint16";
+      
+      case Orthanc::PixelFormat_SignedGrayscale16:
+        return "image-int16";
+      
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  void GetOrthancImageCommand::SetInstanceUri(const std::string& instance,
+                                              Orthanc::PixelFormat pixelFormat)
+  {
+    uri_ = "/instances/" + instance + "/" + GetFormatSuffix(pixelFormat);
+  }
+
+
+  void GetOrthancImageCommand::SetFrameUri(const std::string& instance,
+                                           unsigned int frame,
+                                           Orthanc::PixelFormat pixelFormat)
+  {
+    uri_ = ("/instances/" + instance + "/frames/" +
+            boost::lexical_cast<std::string>(frame) + "/" + GetFormatSuffix(pixelFormat));
+  }
+
+
+  void GetOrthancImageCommand::ProcessHttpAnswer(boost::weak_ptr<IObserver> receiver,
+                                                 IMessageEmitter& emitter,
+                                                 const std::string& answer,
+                                                 const HttpHeaders& answerHeaders) const
+  {
+    for (HttpHeaders::const_iterator it = answerHeaders.begin(); it != answerHeaders.end(); ++it)
+    {
+      std::string key = Orthanc::Toolbox::StripSpaces(it->first);
+      Orthanc::Toolbox::ToLowerCase(key);
+        
+      if (key == "content-disposition" &&
+          it->second == "filename=\"unsupported.png\"")
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat,
+                                        "Orthanc cannot decode this image");
+      }
+    }
+    
+    Orthanc::MimeType contentType = Orthanc::MimeType_Binary;
+
+    for (HttpHeaders::const_iterator it = answerHeaders.begin(); 
+         it != answerHeaders.end(); ++it)
+    {
+      std::string s;
+      Orthanc::Toolbox::ToLowerCase(s, it->first);
+
+      if (s == "content-type")
+      {
+        contentType = Orthanc::StringToMimeType(it->second);
+        break;
+      }
+    }
+
+    std::unique_ptr<Orthanc::ImageAccessor> image;
+
+    switch (contentType)
+    {
+      case Orthanc::MimeType_Png:
+      {
+        image.reset(new Orthanc::PngReader);
+        dynamic_cast<Orthanc::PngReader&>(*image).ReadFromMemory(answer);
+        break;
+      }
+
+      case Orthanc::MimeType_Pam:
+      {
+#ifdef __EMSCRIPTEN__
+        // "true" means we ask the PamReader to make an extra copy so that
+        // the resulting Orthanc::ImageAccessor is aligned (as malloc is).
+        // Indeed, even though alignment is not required in Web Assembly,
+        // Emscripten seems to check it and bail out if addresses are "odd"
+        image.reset(new Orthanc::PamReader(true));
+#else
+        // potentially unaligned, with is faster and consumes less heap memory
+        image.reset(new Orthanc::PamReader);
+#endif
+        dynamic_cast<Orthanc::PamReader&>(*image).ReadFromMemory(answer);
+        break;
+      }
+
+      case Orthanc::MimeType_Jpeg:
+      {
+        image.reset(new Orthanc::JpegReader);
+        dynamic_cast<Orthanc::JpegReader&>(*image).ReadFromMemory(answer);
+        break;
+      }
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
+                                        "Unsupported HTTP Content-Type for an image: " + 
+                                        std::string(Orthanc::EnumerationToString(contentType)));
+    }
+
+    if (hasExpectedFormat_)
+    {
+      if (expectedFormat_ == Orthanc::PixelFormat_SignedGrayscale16 &&
+          image->GetFormat() == Orthanc::PixelFormat_Grayscale16)
+      {
+        image->SetFormat(Orthanc::PixelFormat_SignedGrayscale16);
+      }
+
+      if (expectedFormat_ != image->GetFormat())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+      }
+    }
+
+    //{
+    //  // DEBUG DISPLAY IMAGE PROPERTIES BGO 2020-04-11
+    //  const Orthanc::ImageAccessor& source = *image;
+    //  const void* sourceBuffer = source.GetConstBuffer();
+    //  intptr_t sourceBufferInt = reinterpret_cast<intptr_t>(sourceBuffer);
+    //  int sourceWidth = source.GetWidth();
+    //  int sourceHeight = source.GetHeight();
+    //  int sourcePitch = source.GetPitch();
+
+    //  // TODO: turn error into trace below
+    //  LOG(ERROR) << "GetOrthancImageCommand::ProcessHttpAnswer | source:"
+    //    << " W = " << sourceWidth << " H = " << sourceHeight
+    //    << " P = " << sourcePitch << " B = " << sourceBufferInt
+    //    << " B % 4 == " << sourceBufferInt % 4;
+    //}
+
+
+    SuccessMessage message(*this, *image, contentType);
+    emitter.EmitMessage(receiver, message);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/GetOrthancImageCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,142 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IMessageEmitter.h"
+#include "OracleCommandBase.h"
+
+#include <Images/ImageAccessor.h>
+
+#include <map>
+
+namespace OrthancStone
+{
+  class GetOrthancImageCommand : public OracleCommandBase
+  {
+  public:
+    typedef std::map<std::string, std::string>  HttpHeaders;
+
+    class SuccessMessage : public OriginMessage<GetOrthancImageCommand>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const Orthanc::ImageAccessor&  image_;
+      Orthanc::MimeType              mime_;
+
+    public:
+      SuccessMessage(const GetOrthancImageCommand& command,
+                     const Orthanc::ImageAccessor& image,
+                     Orthanc::MimeType mime) :
+        OriginMessage(command),
+        image_(image),
+        mime_(mime)
+      {
+      }
+
+      const Orthanc::ImageAccessor& GetImage() const
+      {
+        return image_;
+      }
+
+      Orthanc::MimeType GetMimeType() const
+      {
+        return mime_;
+      }
+    };
+
+
+  private:
+    std::string           uri_;
+    HttpHeaders           headers_;
+    unsigned int          timeout_;
+    bool                  hasExpectedFormat_;
+    Orthanc::PixelFormat  expectedFormat_;
+
+    GetOrthancImageCommand(const GetOrthancImageCommand& other) :
+      uri_(other.uri_),
+      headers_(other.headers_),
+      timeout_(other.timeout_),
+      hasExpectedFormat_(other.hasExpectedFormat_),
+      expectedFormat_(other.expectedFormat_)
+    {
+    }
+
+  public:
+    GetOrthancImageCommand();
+
+    virtual Type GetType() const
+    {
+      return Type_GetOrthancImage;
+    }
+
+    virtual IOracleCommand* Clone() const
+    {
+      return new GetOrthancImageCommand(*this);
+    }
+
+    void SetExpectedPixelFormat(Orthanc::PixelFormat format);
+
+    void SetUri(const std::string& uri)
+    {
+      uri_ = uri;
+    }
+
+    void SetInstanceUri(const std::string& instance,
+                        Orthanc::PixelFormat pixelFormat);
+
+    void SetFrameUri(const std::string& instance,
+                     unsigned int frame,
+                     Orthanc::PixelFormat pixelFormat);
+
+    void SetHttpHeader(const std::string& key,
+                       const std::string& value)
+    {
+      headers_[key] = value;
+    }
+
+    const std::string& GetUri() const
+    {
+      return uri_;
+    }
+
+    const HttpHeaders& GetHttpHeaders() const
+    {
+      return headers_;
+    }
+
+    void SetTimeout(unsigned int seconds)
+    {
+      timeout_ = seconds;
+    }
+
+    unsigned int GetTimeout() const
+    {
+      return timeout_;
+    }
+
+    void ProcessHttpAnswer(boost::weak_ptr<IObserver> receiver,
+                           IMessageEmitter& emitter,
+                           const std::string& answer,
+                           const HttpHeaders& answerHeaders) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/GetOrthancWebViewerJpegCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,210 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GetOrthancWebViewerJpegCommand.h"
+
+#include "../Toolbox/LinearAlgebra.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <Images/JpegReader.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+#ifdef _MSC_VER
+// 'Json::Reader': Use CharReader and CharReaderBuilder instead
+#pragma warning(disable:4996)
+#endif
+
+#include <json/reader.h>
+#include <json/value.h>
+
+namespace OrthancStone
+{
+  GetOrthancWebViewerJpegCommand::GetOrthancWebViewerJpegCommand() :
+    frame_(0),
+    quality_(95),
+    timeout_(600),
+    expectedFormat_(Orthanc::PixelFormat_Grayscale8)
+  {
+  }
+
+
+  void GetOrthancWebViewerJpegCommand::SetQuality(unsigned int quality)
+  {
+    if (quality <= 0 ||
+        quality > 100)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      quality_ = quality;
+    }
+  }
+
+
+  std::string GetOrthancWebViewerJpegCommand::GetUri() const
+  {
+    return ("/web-viewer/instances/jpeg" + boost::lexical_cast<std::string>(quality_) +
+            "-" + instanceId_ + "_" + boost::lexical_cast<std::string>(frame_));
+  }
+
+
+  void GetOrthancWebViewerJpegCommand::ProcessHttpAnswer(boost::weak_ptr<IObserver> receiver,
+                                                         IMessageEmitter& emitter,
+                                                         const std::string& answer) const
+  {
+    // This code comes from older "OrthancSlicesLoader::ParseSliceImageJpeg()"
+      
+    Json::Value encoded;
+
+    {
+      Json::Reader reader;
+      if (!reader.parse(answer, encoded))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+    }
+
+    if (encoded.type() != Json::objectValue ||
+        !encoded.isMember("Orthanc") ||
+        encoded["Orthanc"].type() != Json::objectValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    
+    const Json::Value& info = encoded["Orthanc"];
+    if (!info.isMember("PixelData") ||
+        !info.isMember("Stretched") ||
+        !info.isMember("Compression") ||
+        info["Compression"].type() != Json::stringValue ||
+        info["PixelData"].type() != Json::stringValue ||
+        info["Stretched"].type() != Json::booleanValue ||
+        info["Compression"].asString() != "Jpeg")
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    
+    bool isSigned = false;
+    bool isStretched = info["Stretched"].asBool();
+    
+    if (info.isMember("IsSigned"))
+    {
+      if (info["IsSigned"].type() != Json::booleanValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+      else
+      {
+        isSigned = info["IsSigned"].asBool();
+      }
+    }
+    
+    std::unique_ptr<Orthanc::ImageAccessor> reader;
+    
+    {
+      std::string jpeg;
+      Orthanc::Toolbox::DecodeBase64(jpeg, info["PixelData"].asString());
+      
+      reader.reset(new Orthanc::JpegReader);
+      dynamic_cast<Orthanc::JpegReader&>(*reader).ReadFromMemory(jpeg);
+    }
+    
+    if (reader->GetFormat() == Orthanc::PixelFormat_RGB24)  // This is a color image
+    {
+      if (expectedFormat_ != Orthanc::PixelFormat_RGB24)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+      
+      if (isSigned || isStretched)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+      else
+      {
+        SuccessMessage message(*this, *reader);
+        emitter.EmitMessage(receiver, message);
+        return;
+      }
+    }
+    
+    if (reader->GetFormat() != Orthanc::PixelFormat_Grayscale8)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    
+    if (!isStretched)
+    {
+      if (expectedFormat_ != reader->GetFormat())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+      else
+      {
+        SuccessMessage message(*this, *reader);
+        emitter.EmitMessage(receiver, message);
+        return;
+      }
+    }
+    
+    int32_t stretchLow = 0;
+    int32_t stretchHigh = 0;
+    
+    if (!info.isMember("StretchLow") ||
+        !info.isMember("StretchHigh") ||
+        info["StretchLow"].type() != Json::intValue ||
+        info["StretchHigh"].type() != Json::intValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    
+    stretchLow = info["StretchLow"].asInt();
+    stretchHigh = info["StretchHigh"].asInt();
+    
+    if (stretchLow < -32768 ||
+        stretchHigh > 65535 ||
+        (stretchLow < 0 && stretchHigh > 32767))
+    {
+      // This range cannot be represented with a uint16_t or an int16_t
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    
+    // Decode a grayscale JPEG 8bpp image coming from the Web viewer
+    std::unique_ptr<Orthanc::ImageAccessor> image
+      (new Orthanc::Image(expectedFormat_, reader->GetWidth(), reader->GetHeight(), false));
+
+    Orthanc::ImageProcessing::Convert(*image, *reader);
+    reader.reset();
+    
+    float scaling = static_cast<float>(stretchHigh - stretchLow) / 255.0f;
+    
+    if (!LinearAlgebra::IsCloseToZero(scaling))
+    {
+      float offset = static_cast<float>(stretchLow) / scaling;
+      Orthanc::ImageProcessing::ShiftScale(*image, offset, scaling, true);
+    }
+
+    SuccessMessage message(*this, *image);
+    emitter.EmitMessage(receiver, message);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/GetOrthancWebViewerJpegCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,154 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IMessageEmitter.h"
+#include "OracleCommandBase.h"
+
+#include <Images/ImageAccessor.h>
+
+#include <map>
+
+namespace OrthancStone
+{
+  class GetOrthancWebViewerJpegCommand : public OracleCommandBase
+  {
+  public:
+    typedef std::map<std::string, std::string>  HttpHeaders;
+
+    class SuccessMessage : public OriginMessage<GetOrthancWebViewerJpegCommand>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const Orthanc::ImageAccessor&  image_;
+
+    public:
+      SuccessMessage(const GetOrthancWebViewerJpegCommand& command,
+                     const Orthanc::ImageAccessor& image) :
+        OriginMessage(command),
+        image_(image)
+      {
+      }
+
+      const Orthanc::ImageAccessor& GetImage() const
+      {
+        return image_;
+      }
+    };
+
+  private:
+    std::string           instanceId_;
+    unsigned int          frame_;
+    unsigned int          quality_;
+    HttpHeaders           headers_;
+    unsigned int          timeout_;
+    Orthanc::PixelFormat  expectedFormat_;
+
+    GetOrthancWebViewerJpegCommand(const GetOrthancWebViewerJpegCommand& other) :
+      instanceId_(other.instanceId_),
+      frame_(other.frame_),
+      quality_(other.quality_),
+      headers_(other.headers_),
+      timeout_(other.timeout_),
+      expectedFormat_(other.expectedFormat_)
+    {
+    }
+    
+  public:
+    GetOrthancWebViewerJpegCommand();
+
+    virtual Type GetType() const
+    {
+      return Type_GetOrthancWebViewerJpeg;
+    }
+
+    virtual IOracleCommand* Clone() const
+    {
+      return new GetOrthancWebViewerJpegCommand(*this);
+    }
+
+    void SetExpectedPixelFormat(Orthanc::PixelFormat format)
+    {
+      expectedFormat_ = format;
+    }
+
+    void SetInstance(const std::string& instanceId)
+    {
+      instanceId_ = instanceId;
+    }
+
+    void SetFrame(unsigned int frame)
+    {
+      frame_ = frame;
+    }
+
+    void SetQuality(unsigned int quality);
+
+    void SetHttpHeader(const std::string& key,
+                       const std::string& value)
+    {
+      headers_[key] = value;
+    }
+
+    Orthanc::PixelFormat GetExpectedPixelFormat() const
+    {
+      return expectedFormat_;
+    }
+
+    const std::string& GetInstanceId() const
+    {
+      return instanceId_;
+    }
+
+    unsigned int GetFrame() const
+    {
+      return frame_;
+    }
+
+    unsigned int GetQuality() const
+    {
+      return quality_;
+    }
+
+    const HttpHeaders& GetHttpHeaders() const
+    {
+      return headers_;
+    }
+
+    void SetTimeout(unsigned int seconds)
+    {
+      timeout_ = seconds;
+    }
+
+    unsigned int GetTimeout() const
+    {
+      return timeout_;
+    }
+
+    std::string GetUri() const;
+
+    void ProcessHttpAnswer(boost::weak_ptr<IObserver> receiver,
+                           IMessageEmitter& emitter,
+                           const std::string& answer) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/HttpCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,100 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "HttpCommand.h"
+
+#include <OrthancException.h>
+
+#ifdef _MSC_VER
+// 'Json::Reader': Use CharReader and CharReaderBuilder instead
+#pragma warning(disable:4996)
+#endif
+
+#include <json/reader.h>
+#include <json/writer.h>
+
+namespace OrthancStone
+{
+  void HttpCommand::SuccessMessage::ParseJsonBody(Json::Value& target) const
+  {
+    Json::Reader reader;
+    if (!reader.parse(answer_, target))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  HttpCommand::HttpCommand() :
+    method_(Orthanc::HttpMethod_Get),
+    url_("/"),
+    timeout_(600)
+  {
+  }
+
+
+  void HttpCommand::SetBody(const Json::Value& json)
+  {
+    Json::FastWriter writer;
+    body_ = writer.write(json);
+  }
+
+
+  const std::string& HttpCommand::GetBody() const
+  {
+    if (method_ == Orthanc::HttpMethod_Post ||
+        method_ == Orthanc::HttpMethod_Put)
+    {
+      return body_;
+    }
+    else
+    {
+      LOG(ERROR) << "HttpCommand::GetBody(): method_  not _Post or _Put";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  const std::string& HttpCommand::GetUsername() const
+  {
+    if (HasCredentials())
+    {
+      return username_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  const std::string& HttpCommand::GetPassword() const
+  {
+    if (HasCredentials())
+    {
+      return password_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/HttpCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,186 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IMessage.h"
+#include "OracleCommandBase.h"
+
+#include <Enumerations.h>
+
+#include <map>
+#include <json/value.h>
+
+namespace OrthancStone
+{
+  class HttpCommand : public OracleCommandBase
+  {
+  public:
+    typedef std::map<std::string, std::string>  HttpHeaders;
+
+    class SuccessMessage : public OriginMessage<HttpCommand>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const HttpHeaders&  headers_;
+      const std::string&  answer_;
+
+    public:
+      SuccessMessage(const HttpCommand& command,
+                     const HttpHeaders& answerHeaders,
+                     const std::string& answer) :
+        OriginMessage(command),
+        headers_(answerHeaders),
+        answer_(answer)
+      {
+      }
+
+      const std::string& GetAnswer() const
+      {
+        return answer_;
+      }
+
+      void ParseJsonBody(Json::Value& target) const;
+
+      const HttpHeaders& GetAnswerHeaders() const
+      {
+        return headers_;
+      }
+    };
+
+
+  private:
+    Orthanc::HttpMethod  method_;
+    std::string          url_;
+    std::string          body_;
+    HttpHeaders          headers_;
+    unsigned int         timeout_;
+    std::string          username_;
+    std::string          password_;
+
+    HttpCommand(const HttpCommand& other) :
+      method_(other.method_),
+      url_(other.url_),
+      body_(other.body_),
+      headers_(other.headers_),
+      timeout_(other.timeout_),
+      username_(other.username_),
+      password_(other.password_)
+    {
+    }
+
+  public:
+    HttpCommand();
+
+    virtual Type GetType() const
+    {
+      return Type_Http;
+    }
+
+    virtual IOracleCommand* Clone() const
+    {
+      return new HttpCommand(*this);
+    }
+
+    void SetMethod(Orthanc::HttpMethod method)
+    {
+      method_ = method;
+    }
+
+    void SetUrl(const std::string& url)
+    {
+      url_ = url;
+    }
+
+    void SetBody(const std::string& body)
+    {
+      body_ = body;
+    }
+
+    void SetBody(const Json::Value& json);
+
+    void SwapBody(std::string& body)
+    {
+      body_.swap(body);
+    }
+
+    void SetHttpHeaders(const HttpHeaders& headers)
+    {
+      headers_ = headers;
+    }
+
+    void SetHttpHeader(const std::string& key,
+                       const std::string& value)
+    {
+      headers_[key] = value;
+    }
+
+    Orthanc::HttpMethod GetMethod() const
+    {
+      return method_;
+    }
+
+    const std::string& GetUrl() const
+    {
+      return url_;
+    }
+
+    const std::string& GetBody() const;
+
+    const HttpHeaders& GetHttpHeaders() const
+    {
+      return headers_;
+    }
+
+    void SetTimeout(unsigned int seconds)
+    {
+      timeout_ = seconds;
+    }
+
+    unsigned int GetTimeout() const
+    {
+      return timeout_;
+    }
+
+    void SetCredentials(const std::string& username,
+                        const std::string& password)
+    {
+      username_ = username;
+      password_ = password;
+    }
+
+    void ClearCredentials()
+    {
+      username_.clear();
+      password_.clear();
+    }
+
+    bool HasCredentials() const
+    {
+      return !username_.empty();
+    }
+
+    const std::string& GetUsername() const;
+
+    const std::string& GetPassword() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/IOracle.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,46 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IObserver.h"
+#include "IOracleCommand.h"
+
+#include <boost/shared_ptr.hpp>
+
+namespace OrthancStone
+{
+  class IOracle : public boost::noncopyable
+  {
+  public:
+    virtual ~IOracle()
+    {
+    }
+
+    /**
+     * Returns "true" iff the command has actually been queued. If
+     * "false" is returned, the command has been freed, and it won't
+     * be processed (this is the case if the oracle is stopped).
+     **/
+    virtual bool Schedule(boost::shared_ptr<IObserver> receiver,
+                          IOracleCommand* command) = 0;  // Takes ownership
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/IOracleCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <IDynamicObject.h>
+
+namespace OrthancStone
+{
+  class IOracleCommand : public boost::noncopyable
+  {
+  public:
+    enum Type
+    {
+      Type_GetOrthancImage,
+      Type_GetOrthancWebViewerJpeg,
+      Type_Http,
+      Type_OrthancRestApi,
+      Type_ParseDicomFromFile,
+      Type_ParseDicomFromWado,
+      Type_ReadFile,
+      Type_Sleep
+    };
+
+    virtual ~IOracleCommand()
+    {
+    }
+
+    virtual Type GetType() const = 0;
+
+    // This only clones the command, *not* its possibly associated payload
+    virtual IOracleCommand* Clone() const = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/OracleCommandBase.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,67 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OracleCommandBase.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  void OracleCommandBase::AcquirePayload(Orthanc::IDynamicObject* payload)
+  {
+    if (payload == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    else
+    {
+      payload_.reset(payload);
+    }    
+  }
+
+
+  Orthanc::IDynamicObject& OracleCommandBase::GetPayload() const
+  {
+    if (HasPayload())
+    {
+      return *payload_;
+    }
+    else
+    {
+      LOG(ERROR) << "OracleCommandBase::GetPayload(): (!HasPayload())";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  Orthanc::IDynamicObject* OracleCommandBase::ReleasePayload()
+  {
+    if (HasPayload())
+    {
+      return payload_.release();
+    }
+    else
+    {
+      LOG(ERROR) << "OracleCommandBase::ReleasePayload(): (!HasPayload())";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/OracleCommandBase.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,50 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IOracleCommand.h"
+
+#include <Compatibility.h>
+#include <IDynamicObject.h>
+
+#include <memory>
+
+namespace OrthancStone
+{
+  class OracleCommandBase : public IOracleCommand
+  {
+  private:
+    std::unique_ptr<Orthanc::IDynamicObject>  payload_;
+
+  public:
+    void AcquirePayload(Orthanc::IDynamicObject* payload);
+
+    virtual bool HasPayload() const
+    {
+      return (payload_.get() != NULL);
+    }
+
+    virtual Orthanc::IDynamicObject& GetPayload() const;
+
+    Orthanc::IDynamicObject* ReleasePayload();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/OracleCommandExceptionMessage.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IMessage.h"
+#include "IOracleCommand.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  class OracleCommandExceptionMessage : public OriginMessage<IOracleCommand>
+  {
+    ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+  private:
+    Orthanc::OrthancException  exception_;
+
+  public:
+    OracleCommandExceptionMessage(const IOracleCommand& command,
+                                  const Orthanc::ErrorCode& error) :
+      OriginMessage(command),
+      exception_(error)
+    {
+    }
+
+    OracleCommandExceptionMessage(const IOracleCommand& command,
+                                  const Orthanc::OrthancException& exception) :
+      OriginMessage(command),
+      exception_(exception)
+    {
+    }
+
+    const Orthanc::OrthancException& GetException() const
+    {
+      return exception_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/OrthancRestApiCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,75 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OrthancRestApiCommand.h"
+
+#include <OrthancException.h>
+
+#ifdef _MSC_VER
+// 'Json::Reader': Use CharReader and CharReaderBuilder instead
+#pragma warning(disable:4996)
+#endif
+
+#include <json/reader.h>
+#include <json/writer.h>
+
+namespace OrthancStone
+{
+  void OrthancRestApiCommand::SuccessMessage::ParseJsonBody(Json::Value& target) const
+  {
+    Json::Reader reader;
+    if (!reader.parse(answer_, target))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  OrthancRestApiCommand::OrthancRestApiCommand() :
+    method_(Orthanc::HttpMethod_Get),
+    uri_("/"),
+    timeout_(600),
+    applyPlugins_(false)
+  {
+  }
+
+
+  void OrthancRestApiCommand::SetBody(const Json::Value& json)
+  {
+    Json::FastWriter writer;
+    body_ = writer.write(json);
+  }
+
+
+  const std::string& OrthancRestApiCommand::GetBody() const
+  {
+    if (method_ == Orthanc::HttpMethod_Post ||
+        method_ == Orthanc::HttpMethod_Put)
+    {
+      return body_;
+    }
+    else
+    {
+      LOG(ERROR) << "OrthancRestApiCommand::GetBody(): method_  not _Post or _Put";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/OrthancRestApiCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,172 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IMessage.h"
+#include "OracleCommandBase.h"
+
+#include <Enumerations.h>
+
+#include <map>
+#include <json/value.h>
+
+namespace OrthancStone
+{
+  class OrthancRestApiCommand : public OracleCommandBase
+  {
+  public:
+    typedef std::map<std::string, std::string>  HttpHeaders;
+
+    class SuccessMessage : public OriginMessage<OrthancRestApiCommand>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const HttpHeaders&  headers_;
+      const std::string&  answer_;
+
+    public:
+      SuccessMessage(const OrthancRestApiCommand& command,
+                     const HttpHeaders& answerHeaders,
+                     const std::string& answer) :
+        OriginMessage(command),
+        headers_(answerHeaders),
+        answer_(answer)
+      {
+      }
+      
+      const std::string& GetAnswer() const
+      {
+        return answer_;
+      }
+
+      void ParseJsonBody(Json::Value& target) const;
+
+      const HttpHeaders&  GetAnswerHeaders() const
+      {
+        return headers_;
+      }
+    };
+
+
+  private:
+    Orthanc::HttpMethod  method_;
+    std::string          uri_;
+    std::string          body_;
+    HttpHeaders          headers_;
+    unsigned int         timeout_;
+    bool                 applyPlugins_;  // Only makes sense for Stone as an Orthanc plugin
+
+    OrthancRestApiCommand(const OrthancRestApiCommand& other) :
+      method_(other.method_),
+      uri_(other.uri_),
+      body_(other.body_),
+      headers_(other.headers_),
+      timeout_(other.timeout_),
+      applyPlugins_(other.applyPlugins_)
+    {
+    }
+    
+  public:
+    OrthancRestApiCommand();
+
+    virtual Type GetType() const
+    {
+      return Type_OrthancRestApi;
+    }
+
+    virtual IOracleCommand* Clone() const
+    {
+      return new OrthancRestApiCommand(*this);
+    }
+
+    void SetMethod(Orthanc::HttpMethod method)
+    {
+      method_ = method;
+    }
+
+    void SetUri(const std::string& uri)
+    {
+      uri_ = uri;
+    }
+
+    void SetBody(const std::string& body)
+    {
+      body_ = body;
+    }
+
+    void SetBody(const Json::Value& json);
+
+    void SwapBody(std::string& body)
+    {
+      body_.swap(body);
+    }
+
+    void SetHttpHeaders(const HttpHeaders& headers)
+    {
+      headers_ = headers;
+    }
+
+    void SetHttpHeader(const std::string& key,
+                       const std::string& value)
+    {
+      headers_[key] = value;
+    }
+
+    Orthanc::HttpMethod GetMethod() const
+    {
+      return method_;
+    }
+
+    const std::string& GetUri() const
+    {
+      return uri_;
+    }
+
+    const std::string& GetBody() const;
+
+    const HttpHeaders& GetHttpHeaders() const
+    {
+      return headers_;
+    }
+
+    void SetTimeout(unsigned int seconds)
+    {
+      timeout_ = seconds;
+    }
+
+    unsigned int GetTimeout() const
+    {
+      return timeout_;
+    }
+
+    void SetApplyPlugins(bool applyPlugins)
+    {
+      applyPlugins_ = applyPlugins;
+    }
+
+    bool IsApplyPlugins() const
+    {
+      return applyPlugins_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/ParseDicomFromFileCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,43 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ParseDicomFromFileCommand.h"
+
+#include <OrthancException.h>
+
+#include <boost/filesystem/path.hpp>
+
+namespace OrthancStone
+{
+  std::string ParseDicomFromFileCommand::GetDicomDirPath(const std::string& dicomDirPath,
+                                                         const std::string& file)
+  {
+    std::string tmp = file;
+
+#if !defined(_WIN32)
+    std::replace(tmp.begin(), tmp.end(), '\\', '/');
+#endif
+
+    boost::filesystem::path base = boost::filesystem::path(dicomDirPath).parent_path();
+
+    return (base / tmp).string();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/ParseDicomFromFileCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,96 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OracleCommandBase.h"
+#include "../Loaders/DicomSource.h"
+
+#include <string>
+
+namespace OrthancStone
+{
+  class ParseDicomFromFileCommand : public OracleCommandBase
+  {
+  private:
+    DicomSource  source_;
+    std::string  path_;
+    bool         pixelDataIncluded_;
+
+    ParseDicomFromFileCommand(const ParseDicomFromFileCommand& other) :
+      source_(other.source_),
+      path_(other.path_),
+      pixelDataIncluded_(other.pixelDataIncluded_)
+    {
+    }
+
+  public:
+    ParseDicomFromFileCommand(const DicomSource& source,
+                              const std::string& path) :
+      source_(source),
+      path_(path),
+      pixelDataIncluded_(true)
+    {
+    }
+
+    ParseDicomFromFileCommand(const DicomSource& source,
+                              const std::string& dicomDirPath,
+                              const std::string& file) :
+      source_(source),
+      path_(GetDicomDirPath(dicomDirPath, file)),
+      pixelDataIncluded_(true)
+    {
+    }
+    
+    static std::string GetDicomDirPath(const std::string& dicomDirPath,
+                                       const std::string& file);
+
+    virtual Type GetType() const
+    {
+      return Type_ParseDicomFromFile;
+    }
+
+    virtual IOracleCommand* Clone() const
+    {
+      return new ParseDicomFromFileCommand(*this);
+    }
+
+    const DicomSource& GetSource() const
+    {
+      return source_;
+    }
+
+    const std::string& GetPath() const
+    {
+      return path_;
+    }
+
+    bool IsPixelDataIncluded() const
+    {
+      return pixelDataIncluded_;
+    }
+
+    void SetPixelDataIncluded(bool included)
+    {
+      pixelDataIncluded_ = included;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/ParseDicomFromWadoCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,103 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ParseDicomFromWadoCommand.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  ParseDicomFromWadoCommand::ParseDicomFromWadoCommand(const DicomSource& source,
+                                                       const std::string& sopInstanceUid,
+                                                       IOracleCommand* restCommand) :
+    source_(source),
+    sopInstanceUid_(sopInstanceUid),
+    restCommand_(restCommand)
+  {
+    if (restCommand == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    if (restCommand_->GetType() != Type_Http &&
+        restCommand_->GetType() != Type_OrthancRestApi)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType);
+    }        
+  }
+
+  
+  IOracleCommand* ParseDicomFromWadoCommand::Clone() const
+  {
+    assert(restCommand_.get() != NULL);
+    return new ParseDicomFromWadoCommand(source_, sopInstanceUid_, restCommand_->Clone());
+  }
+
+
+  const IOracleCommand& ParseDicomFromWadoCommand::GetRestCommand() const
+  {
+    assert(restCommand_.get() != NULL);
+    return *restCommand_;
+  }
+
+
+  ParseDicomFromWadoCommand* ParseDicomFromWadoCommand::Create(
+    const DicomSource& source,
+    const std::string& studyInstanceUid,
+    const std::string& seriesInstanceUid,
+    const std::string& sopInstanceUid,
+    bool transcode,
+    Orthanc::DicomTransferSyntax transferSyntax,
+    Orthanc::IDynamicObject* payload)
+  {
+    std::unique_ptr<Orthanc::IDynamicObject> protection(payload);
+    
+    const std::string uri = ("/studies/" + studyInstanceUid +
+                             "/series/" + seriesInstanceUid +
+                             "/instances/" + sopInstanceUid);
+
+    std::string s;
+    if (transcode)
+    {
+      s = Orthanc::GetTransferSyntaxUid(transferSyntax);      
+    }
+    else
+    {
+      s = "*";  // No transcoding, keep source transfer syntax
+    }
+    
+    std::map<std::string, std::string> arguments, headers;
+    headers["Accept"] = ("multipart/related; type=\"application/dicom\"; transfer-syntax=" + s);
+                         
+    std::unique_ptr<IOracleCommand> rest(
+      source.CreateDicomWebCommand(uri, arguments, headers, NULL));
+
+    std::unique_ptr<ParseDicomFromWadoCommand> command(
+      new ParseDicomFromWadoCommand(source, sopInstanceUid, rest.release()));
+
+    if (protection.get() != NULL)
+    {
+      command->AcquirePayload(protection.release());
+    }
+                            
+    return command.release();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/ParseDicomFromWadoCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,72 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OracleCommandBase.h"
+#include "../Loaders/DicomSource.h"
+
+#include <Enumerations.h>
+
+#include <string>
+
+namespace OrthancStone
+{
+  class ParseDicomFromWadoCommand : public OracleCommandBase
+  {
+  private:
+    DicomSource                      source_;
+    std::string                      sopInstanceUid_;
+    std::unique_ptr<IOracleCommand>  restCommand_;
+
+  public:
+    ParseDicomFromWadoCommand(const DicomSource& source,
+                              const std::string& sopInstanceUid,
+                              IOracleCommand* restCommand);
+
+    virtual Type GetType() const
+    {
+      return Type_ParseDicomFromWado;
+    }
+
+    virtual IOracleCommand* Clone() const;
+
+    const DicomSource& GetSource() const
+    {
+      return source_;
+    }
+    
+    const std::string& GetSopInstanceUid() const
+    {
+      return sopInstanceUid_;
+    }
+    
+    const IOracleCommand& GetRestCommand() const;
+
+    static ParseDicomFromWadoCommand* Create(const DicomSource& source,
+                                             const std::string& studyInstanceUid,
+                                             const std::string& seriesInstanceUid,
+                                             const std::string& sopInstanceUid,
+                                             bool transcode,
+                                             Orthanc::DicomTransferSyntax transferSyntax,
+                                             Orthanc::IDynamicObject* payload);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/ParseDicomSuccessMessage.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,107 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ParseDicomSuccessMessage.h"
+
+#include <DicomParsing/ParsedDicomFile.h>
+#include <HttpServer/MultipartStreamReader.h>
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  class MultipartHandler : public Orthanc::MultipartStreamReader::IHandler
+  {
+  private:
+    std::unique_ptr<Orthanc::ParsedDicomFile>  dicom_;
+    size_t                                   size_;
+
+  public:
+    MultipartHandler() :
+      size_(0)
+    {
+    }
+      
+    virtual void HandlePart(const std::map<std::string, std::string>& headers,
+                            const void* part,
+                            size_t size)
+    {
+      if (dicom_.get())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
+                                        "Multiple DICOM instances were contained in a WADO-RS request");
+      }
+      else
+      {
+        dicom_.reset(new Orthanc::ParsedDicomFile(part, size));
+        size_ = size;
+      }
+    }
+
+    Orthanc::ParsedDicomFile* ReleaseDicom()
+    {
+      if (dicom_.get())
+      {
+        return dicom_.release();
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
+                                        "WADO-RS request didn't contain any DICOM instance");
+      }
+    }
+
+    size_t GetSize() const
+    {
+      return size_;
+    }
+  };
+
+  
+  Orthanc::ParsedDicomFile* ParseDicomSuccessMessage::ParseWadoAnswer(
+    size_t& fileSize /* OUT */,
+    const std::string& answer,
+    const std::map<std::string, std::string>& headers)
+  {
+    std::string contentType, subType, boundary, header;
+    if (Orthanc::MultipartStreamReader::GetMainContentType(header, headers) &&
+        Orthanc::MultipartStreamReader::ParseMultipartContentType(contentType, subType, boundary, header) &&
+        contentType == "multipart/related" &&
+        subType == "application/dicom")
+    {
+      MultipartHandler handler;
+
+      {
+        Orthanc::MultipartStreamReader reader(boundary);
+        reader.SetHandler(handler);
+        reader.AddChunk(answer);
+        reader.CloseStream();
+      }
+
+      fileSize = handler.GetSize();
+      return handler.ReleaseDicom();
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol,
+                                      "Multipart/related answer of application/dicom was expected from DICOMweb server");
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/ParseDicomSuccessMessage.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,97 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../OrthancStone.h"
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error The macro ORTHANC_ENABLE_DCMTK must be defined
+#endif
+
+#if ORTHANC_ENABLE_DCMTK != 1
+#  error Support for DCMTK must be enabled to use ParseDicomFromFileCommand
+#endif
+
+#include "OracleCommandBase.h"
+#include "../Messages/IMessageEmitter.h"
+#include "../Messages/IObserver.h"
+
+#include <map>
+
+namespace Orthanc
+{
+  class ParsedDicomFile;
+}
+
+namespace OrthancStone
+{
+  class DicomSource;
+  
+  class ParseDicomSuccessMessage : public OriginMessage<OracleCommandBase>
+  {
+    ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+    
+  private:
+    const DicomSource&         source_;
+    Orthanc::ParsedDicomFile&  dicom_;
+    size_t                     fileSize_;
+    bool                       hasPixelData_;
+    
+  public:
+    ParseDicomSuccessMessage(const OracleCommandBase& command,
+                             const DicomSource& source,
+                             Orthanc::ParsedDicomFile& dicom,
+                             size_t fileSize,
+                             bool hasPixelData) :
+      OriginMessage(command),
+      source_(source),
+      dicom_(dicom),
+      fileSize_(fileSize),
+      hasPixelData_(hasPixelData)
+    {
+    }
+
+    const DicomSource& GetSource() const
+    {
+      return source_;
+    }
+
+    Orthanc::ParsedDicomFile& GetDicom() const
+    {
+      return dicom_;
+    }
+
+    size_t GetFileSize() const
+    {
+      return fileSize_;
+    }
+
+    bool HasPixelData() const
+    {
+      return hasPixelData_;
+    }
+    
+    static Orthanc::ParsedDicomFile* ParseWadoAnswer(size_t& fileSize /* OUT */,
+                                                     const std::string& answer,
+                                                     const std::map<std::string, std::string>& headers);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/ReadFileCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,78 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IMessage.h"
+#include "OracleCommandBase.h"
+
+namespace OrthancStone
+{
+  class ReadFileCommand : public OracleCommandBase
+  {
+  public:
+    class SuccessMessage : public OriginMessage<ReadFileCommand>
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+      
+    private:
+      const std::string& content_;
+
+    public:
+      SuccessMessage(const ReadFileCommand& command,
+                     const std::string& content) :
+        OriginMessage(command),
+        content_(content)
+      {
+      }
+
+      const std::string& GetContent() const
+      {
+        return content_;
+      }
+    };
+
+
+  private:
+    std::string  path_;
+
+  public:
+    ReadFileCommand(const std::string& path) : 
+      path_(path)
+    {
+    }
+
+    virtual Type GetType() const
+    {
+      return Type_ReadFile;
+    }
+
+    virtual IOracleCommand* Clone() const
+    {
+      return new ReadFileCommand(path_);
+    }
+
+    const std::string& GetPath() const
+    {
+      return path_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/SleepOracleCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,57 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IMessage.h"
+#include "OracleCommandBase.h"
+
+namespace OrthancStone
+{
+  class SleepOracleCommand : public OracleCommandBase
+  {
+  private:
+    unsigned int  milliseconds_;
+
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, TimeoutMessage, SleepOracleCommand);
+
+    SleepOracleCommand(unsigned int milliseconds) : 
+      milliseconds_(milliseconds)
+    {
+    }
+
+    virtual Type GetType() const
+    {
+      return Type_Sleep;
+    }
+
+    virtual IOracleCommand* Clone() const
+    {
+      return new SleepOracleCommand(milliseconds_);
+    }
+
+    unsigned int GetDelay() const
+    {
+      return milliseconds_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/ThreadedOracle.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,433 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ThreadedOracle.h"
+
+#include "SleepOracleCommand.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  class ThreadedOracle::Item : public Orthanc::IDynamicObject
+  {
+  private:
+    boost::weak_ptr<IObserver>      receiver_;
+    std::unique_ptr<IOracleCommand>   command_;
+
+  public:
+    Item(boost::weak_ptr<IObserver> receiver,
+         IOracleCommand* command) :
+      receiver_(receiver),
+      command_(command)
+    {
+      if (command == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    boost::weak_ptr<IObserver> GetReceiver()
+    {
+      return receiver_;
+    }
+
+    IOracleCommand& GetCommand()
+    {
+      assert(command_.get() != NULL);
+      return *command_;
+    }
+  };
+
+
+  class ThreadedOracle::SleepingCommands : public boost::noncopyable
+  {
+  private:
+    class Item
+    {
+    private:
+      boost::weak_ptr<IObserver>         receiver_;
+      std::unique_ptr<SleepOracleCommand>  command_;
+      boost::posix_time::ptime           expiration_;
+
+    public:
+      Item(boost::weak_ptr<IObserver> receiver,
+           SleepOracleCommand* command) :
+        receiver_(receiver),
+        command_(command)
+      {
+        if (command == NULL)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+        }
+
+        expiration_ = (boost::posix_time::microsec_clock::local_time() + 
+                       boost::posix_time::milliseconds(command_->GetDelay()));
+      }
+
+      const boost::posix_time::ptime& GetExpirationTime() const
+      {
+        return expiration_;
+      }
+
+      void Awake(IMessageEmitter& emitter)
+      {
+        assert(command_.get() != NULL);
+
+        SleepOracleCommand::TimeoutMessage message(*command_);
+        emitter.EmitMessage(receiver_, message);
+      }
+    };
+
+    typedef std::list<Item*>  Content;
+
+    boost::mutex  mutex_;
+    Content       content_;
+
+  public:
+    ~SleepingCommands()
+    {
+      for (Content::iterator it = content_.begin(); it != content_.end(); ++it)
+      {
+        if (*it != NULL)
+        {
+          delete *it;
+        }
+      }
+    }
+
+    void Add(boost::weak_ptr<IObserver> receiver,
+             SleepOracleCommand* command)   // Takes ownership
+    {
+      boost::mutex::scoped_lock lock(mutex_);
+
+      content_.push_back(new Item(receiver, command));
+    }
+
+    void AwakeExpired(IMessageEmitter& emitter)
+    {
+      boost::mutex::scoped_lock lock(mutex_);
+
+      const boost::posix_time::ptime now = boost::posix_time::microsec_clock::local_time();
+
+      Content  stillSleeping;
+        
+      for (Content::iterator it = content_.begin(); it != content_.end(); ++it)
+      {
+        if (*it != NULL &&
+            (*it)->GetExpirationTime() <= now)
+        {
+          (*it)->Awake(emitter);
+          delete *it;
+          *it = NULL;
+        }
+        else
+        {
+          stillSleeping.push_back(*it);
+        }
+      }
+
+      // Compact the still-sleeping commands
+      content_ = stillSleeping;
+    }
+  };
+
+
+  void ThreadedOracle::Step()
+  {
+    std::unique_ptr<Orthanc::IDynamicObject>  object(queue_.Dequeue(100));
+
+    if (object.get() != NULL)
+    {
+      Item& item = dynamic_cast<Item&>(*object);
+
+      if (item.GetCommand().GetType() == IOracleCommand::Type_Sleep)
+      {
+        SleepOracleCommand& command = dynamic_cast<SleepOracleCommand&>(item.GetCommand());
+          
+        std::unique_ptr<SleepOracleCommand> copy(new SleepOracleCommand(command.GetDelay()));
+          
+        if (command.HasPayload())
+        {
+          copy->AcquirePayload(command.ReleasePayload());
+        }
+          
+        sleepingCommands_->Add(item.GetReceiver(), copy.release());
+      }
+      else
+      {
+        GenericOracleRunner runner;
+
+        {
+          boost::mutex::scoped_lock lock(mutex_);
+          runner.SetOrthanc(orthanc_);
+          runner.SetRootDirectory(rootDirectory_);
+
+#if ORTHANC_ENABLE_DCMTK == 1
+          if (dicomCache_)
+          {
+            runner.SetDicomCache(dicomCache_);
+          }
+#endif
+        }
+
+        runner.Run(item.GetReceiver(), emitter_, item.GetCommand());
+      }
+    }
+  }
+
+
+  void ThreadedOracle::Worker(ThreadedOracle* that)
+  {
+    assert(that != NULL);
+      
+    for (;;)
+    {
+      {
+        boost::mutex::scoped_lock lock(that->mutex_);
+        if (that->state_ != State_Running)
+        {
+          return;
+        }
+      }
+
+      that->Step();
+    }
+  }
+
+
+  void ThreadedOracle::SleepingWorker(ThreadedOracle* that)
+  {
+    assert(that != NULL);
+      
+    for (;;)
+    {
+      {
+        boost::mutex::scoped_lock lock(that->mutex_);
+        if (that->state_ != State_Running)
+        {
+          return;
+        }
+      }
+
+      that->sleepingCommands_->AwakeExpired(that->emitter_);
+
+      boost::this_thread::sleep(boost::posix_time::milliseconds(that->sleepingTimeResolution_));
+    }
+  }
+
+
+  void ThreadedOracle::StopInternal()
+  {
+    {
+      boost::mutex::scoped_lock lock(mutex_);
+
+      if (state_ == State_Setup ||
+          state_ == State_Stopped)
+      {
+        return;
+      }
+      else
+      {
+        state_ = State_Stopped;
+      }
+    }
+
+    if (sleepingWorker_.joinable())
+    {
+      sleepingWorker_.join();
+    }
+
+    for (size_t i = 0; i < workers_.size(); i++)
+    {
+      if (workers_[i] != NULL)
+      {
+        if (workers_[i]->joinable())
+        {
+          workers_[i]->join();
+        }
+
+        delete workers_[i];
+      }
+    } 
+  }
+
+
+  ThreadedOracle::ThreadedOracle(IMessageEmitter& emitter) :
+    emitter_(emitter),
+    rootDirectory_("."),
+    state_(State_Setup),
+    workers_(4),
+    sleepingCommands_(new SleepingCommands),
+    sleepingTimeResolution_(50)  // By default, time resolution of 50ms
+  {
+  }
+
+
+  ThreadedOracle::~ThreadedOracle()
+  {
+    if (state_ == State_Running)
+    {
+      LOG(ERROR) << "The threaded oracle is still running, explicit call to "
+                 << "Stop() is mandatory to avoid crashes";
+    }
+
+    try
+    {
+      StopInternal();
+    }
+    catch (Orthanc::OrthancException& e)
+    {
+      LOG(ERROR) << "Exception while stopping the threaded oracle: " << e.What();
+    }
+    catch (...)
+    {
+      LOG(ERROR) << "Native exception while stopping the threaded oracle";
+    }
+  }
+
+  
+  void ThreadedOracle::SetOrthancParameters(const Orthanc::WebServiceParameters& orthanc)
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+    orthanc_ = orthanc;
+  }
+
+
+  void ThreadedOracle::SetRootDirectory(const std::string& rootDirectory)
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+    rootDirectory_ = rootDirectory;
+  }
+
+
+  void ThreadedOracle::SetThreadsCount(unsigned int count)
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+
+    if (count <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else if (state_ != State_Setup)
+    {
+      LOG(ERROR) << "ThreadedOracle::SetThreadsCount(): (state_ != State_Setup)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      workers_.resize(count);
+    }
+  }
+
+
+  void ThreadedOracle::SetSleepingTimeResolution(unsigned int milliseconds)
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+
+    if (milliseconds <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else if (state_ != State_Setup)
+    {
+      LOG(ERROR) << "ThreadedOracle::SetSleepingTimeResolution(): (state_ != State_Setup)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      sleepingTimeResolution_ = milliseconds;
+    }
+  }
+
+
+  void ThreadedOracle::SetDicomCacheSize(size_t size)
+  {
+#if ORTHANC_ENABLE_DCMTK == 1
+    boost::mutex::scoped_lock lock(mutex_);
+
+    if (state_ != State_Setup)
+    {
+      LOG(ERROR) << "ThreadedOracle::SetDicomCacheSize(): (state_ != State_Setup)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      if (size == 0)
+      {
+        dicomCache_.reset();
+      }
+      else
+      {
+        dicomCache_.reset(new ParsedDicomCache(size));
+      }
+    }
+#endif
+  }
+
+
+  void ThreadedOracle::Start()
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+
+    if (state_ != State_Setup)
+    {
+      LOG(ERROR) << "ThreadedOracle::Start(): (state_ != State_Setup)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      LOG(INFO) << "Starting oracle with " << workers_.size() << " worker threads";
+      state_ = State_Running;
+
+      for (unsigned int i = 0; i < workers_.size(); i++)
+      {
+        workers_[i] = new boost::thread(Worker, this);
+      }
+
+      sleepingWorker_ = boost::thread(SleepingWorker, this);
+    }      
+  }
+
+
+  bool ThreadedOracle::Schedule(boost::shared_ptr<IObserver> receiver,
+                                IOracleCommand* command)
+  {
+    std::unique_ptr<Item> item(new Item(receiver, command));
+
+    {
+      boost::mutex::scoped_lock lock(mutex_);
+
+      if (state_ == State_Running)
+      {
+        //LOG(INFO) << "New oracle command queued";
+        queue_.Enqueue(item.release());
+        return true;
+      }
+      else
+      {
+        LOG(TRACE) << "Command not enqueued, as the oracle has stopped";
+        return false;
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/ThreadedOracle.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,112 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <OrthancFramework.h>  // To have the macros properly defined
+
+#if !defined(ORTHANC_ENABLE_THREADS)
+#  error The macro ORTHANC_ENABLE_THREADS must be defined
+#endif
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error The macro ORTHANC_ENABLE_DCMTK must be defined
+#endif
+
+#if ORTHANC_ENABLE_THREADS != 1
+#  error This file can only compiled for native targets
+#endif
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include "../Toolbox/ParsedDicomCache.h"
+#endif
+
+#include "IOracle.h"
+#include "GenericOracleRunner.h"
+#include "../Messages/IMessageEmitter.h"
+
+#include <MultiThreading/SharedMessageQueue.h>
+
+
+namespace OrthancStone
+{
+  class ThreadedOracle : public IOracle
+  {
+  private:
+    enum State
+    {
+      State_Setup,
+      State_Running,
+      State_Stopped
+    };
+
+    class Item;
+    class SleepingCommands;
+
+    IMessageEmitter&                     emitter_;
+    Orthanc::WebServiceParameters        orthanc_;
+    std::string                          rootDirectory_;
+    Orthanc::SharedMessageQueue          queue_;
+    State                                state_;
+    boost::mutex                         mutex_;
+    std::vector<boost::thread*>          workers_;
+    boost::shared_ptr<SleepingCommands>  sleepingCommands_;
+    boost::thread                        sleepingWorker_;
+    unsigned int                         sleepingTimeResolution_;
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    boost::shared_ptr<ParsedDicomCache>  dicomCache_;
+#endif
+    
+    void Step();
+
+    static void Worker(ThreadedOracle* that);
+
+    static void SleepingWorker(ThreadedOracle* that);
+
+    void StopInternal();
+
+  public:
+    ThreadedOracle(IMessageEmitter& emitter);
+
+    virtual ~ThreadedOracle();
+
+    void SetOrthancParameters(const Orthanc::WebServiceParameters& orthanc);
+
+    void SetRootDirectory(const std::string& rootDirectory);
+
+    void SetThreadsCount(unsigned int count);
+
+    void SetSleepingTimeResolution(unsigned int milliseconds);
+
+    void SetDicomCacheSize(size_t size);
+
+    void Start();
+
+    void Stop()
+    {
+      StopInternal();
+    }
+
+    virtual bool Schedule(boost::shared_ptr<IObserver> receiver,
+                          IOracleCommand* command) ORTHANC_OVERRIDE;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/WebAssemblyOracle.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,817 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebAssemblyOracle.h"
+
+#include "OracleCommandExceptionMessage.h"
+#include "SleepOracleCommand.h"
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include "ParseDicomSuccessMessage.h"
+static unsigned int BUCKET_SOP = 1;
+#endif
+
+#include "GetOrthancImageCommand.h"
+#include "GetOrthancWebViewerJpegCommand.h"
+#include "HttpCommand.h"
+#include "OrthancRestApiCommand.h"
+#include "ParseDicomFromWadoCommand.h"
+
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+#include <emscripten.h>
+#include <emscripten/html5.h>
+#include <emscripten/fetch.h>
+
+namespace OrthancStone
+{
+  class WebAssemblyOracle::TimeoutContext
+  {
+  private:
+    WebAssemblyOracle&                 oracle_;
+    boost::weak_ptr<IObserver>         receiver_;
+    std::unique_ptr<SleepOracleCommand>  command_;
+
+  public:
+    TimeoutContext(WebAssemblyOracle& oracle,
+                   boost::weak_ptr<IObserver> receiver,
+                   IOracleCommand* command) :
+      oracle_(oracle),
+      receiver_(receiver)
+    {
+      if (command == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+      else
+      {
+        command_.reset(dynamic_cast<SleepOracleCommand*>(command));
+      }
+    }
+
+    void EmitMessage()
+    {      
+      assert(command_.get() != NULL);
+
+      SleepOracleCommand::TimeoutMessage message(*command_);
+      oracle_.EmitMessage(receiver_, message);
+    }
+
+    static void Callback(void *userData)
+    {
+      std::unique_ptr<TimeoutContext> context(reinterpret_cast<TimeoutContext*>(userData));
+      context->EmitMessage();
+    }
+  };
+    
+
+  /**
+  This object is created on the heap for every http request.
+  It is deleted in the success (or error) callbacks.
+
+  This object references the receiver of the request. Since this is a raw
+  reference, we need additional checks to make sure we send the response to
+  the same object, for the object can be deleted and a new one recreated at the
+  same address (it often happens in the [single-threaded] browser context).
+  */
+  class WebAssemblyOracle::FetchContext : public boost::noncopyable
+  {
+  private:
+    WebAssemblyOracle&             oracle_;
+    boost::weak_ptr<IObserver>     receiver_;
+    std::unique_ptr<IOracleCommand>  command_;
+    std::string                    expectedContentType_;
+
+  public:
+    FetchContext(WebAssemblyOracle& oracle,
+                 boost::weak_ptr<IObserver> receiver,
+                 IOracleCommand* command,
+                 const std::string& expectedContentType) :
+      oracle_(oracle),
+      receiver_(receiver),
+      command_(command),
+      expectedContentType_(expectedContentType)
+    {
+      if (Orthanc::Logging::IsTraceLevelEnabled())
+      {
+        // Calling "receiver.lock()" is expensive, hence the quick check if TRACE is enabled
+        LOG(TRACE) << "WebAssemblyOracle::FetchContext::FetchContext() | "
+                   << "receiver address = " << std::hex << receiver.lock().get();
+      }
+
+      if (command == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    const std::string& GetExpectedContentType() const
+    {
+      return expectedContentType_;
+    }
+
+    IMessageEmitter& GetEmitter() const
+    {
+      return oracle_;
+    }
+
+    boost::weak_ptr<IObserver> GetReceiver() const
+    {
+      return receiver_;
+    }
+
+    void EmitMessage(const IMessage& message)
+    {
+      if (Orthanc::Logging::IsTraceLevelEnabled())
+      {
+        // Calling "receiver_.lock()" is expensive, hence the quick check if TRACE is enabled
+        LOG(TRACE) << "WebAssemblyOracle::FetchContext::EmitMessage receiver_ = "
+                   << std::hex << receiver_.lock().get() << std::dec;
+      }
+      
+      oracle_.EmitMessage(receiver_, message);
+    }
+
+    IOracleCommand& GetCommand() const
+    {
+      return *command_;
+    }
+
+    template <typename T>
+    const T& GetTypedCommand() const
+    {
+      return dynamic_cast<T&>(*command_);
+    }
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    void StoreInCache(const std::string& sopInstanceUid,
+                      std::unique_ptr<Orthanc::ParsedDicomFile>& dicom,
+                      size_t fileSize)
+    {
+      if (oracle_.dicomCache_.get())
+      {
+        // Store it into the cache for future use
+        oracle_.dicomCache_->Acquire(BUCKET_SOP, sopInstanceUid,
+                                     dicom.release(), fileSize, true);
+      }              
+    }
+#endif
+
+    static void SuccessCallback(emscripten_fetch_t *fetch)
+    {
+      /**
+       * Firstly, make a local copy of the fetched information, and
+       * free data associated with the fetch.
+       **/
+      
+      if (fetch->userData == NULL)
+      {
+        LOG(ERROR) << "WebAssemblyOracle::FetchContext::SuccessCallback fetch->userData is NULL!!!!!!!";
+        return;
+      }
+
+      std::unique_ptr<FetchContext> context(reinterpret_cast<FetchContext*>(fetch->userData));
+
+      std::string answer;
+      if (fetch->numBytes > 0)
+      {
+        answer.assign(fetch->data, fetch->numBytes);
+      }
+
+
+      /**
+       * Retrieving the headers of the HTTP answer.
+       **/
+      HttpHeaders headers;
+
+#if (__EMSCRIPTEN_major__ < 1 ||                                        \
+     (__EMSCRIPTEN_major__ == 1 && __EMSCRIPTEN_minor__ < 38) ||        \
+     (__EMSCRIPTEN_major__ == 1 && __EMSCRIPTEN_minor__ == 38 && __EMSCRIPTEN_tiny__ < 37))
+#  warning Consider upgrading Emscripten to a version above 1.38.37, incomplete support of Fetch API
+
+      /**
+       * HACK - If emscripten < 1.38.37, the fetch API does not
+       * contain a way to retrieve the HTTP headers of the answer. We
+       * make the assumption that the "Content-Type" header of the
+       * response is the same as the "Accept" header of the
+       * query. This is fixed thanks to the
+       * "emscripten_fetch_get_response_headers()" function that was
+       * added to "fetch.h" at emscripten-1.38.37 on 2019-06-26.
+       *
+       * https://github.com/emscripten-core/emscripten/blob/1.38.37/system/include/emscripten/fetch.h
+       * https://github.com/emscripten-core/emscripten/pull/8486
+       **/
+      if (fetch->userData != NULL)
+      {
+        if (!context->GetExpectedContentType().empty())
+        {
+          headers["Content-Type"] = context->GetExpectedContentType();
+        }
+      }
+#else
+      {
+        size_t size = emscripten_fetch_get_response_headers_length(fetch);
+
+        std::string plainHeaders(size + 1, '\0');
+        emscripten_fetch_get_response_headers(fetch, &plainHeaders[0], size + 1);
+
+        std::vector<std::string> tokens;
+        Orthanc::Toolbox::TokenizeString(tokens, plainHeaders, '\n');
+
+        for (size_t i = 0; i < tokens.size(); i++)
+        {
+          size_t p = tokens[i].find(':');
+          if (p != std::string::npos)
+          {
+            std::string key = Orthanc::Toolbox::StripSpaces(tokens[i].substr(0, p));
+            std::string value = Orthanc::Toolbox::StripSpaces(tokens[i].substr(p + 1));
+            headers[key] = value;
+          }
+        }
+      }
+#endif
+      
+      LOG(TRACE) << "About to call emscripten_fetch_close";
+      emscripten_fetch_close(fetch);
+      LOG(TRACE) << "Successfully called emscripten_fetch_close";
+
+      /**
+       * Secondly, use the retrieved data.
+       * IMPORTANT NOTE: the receiver might be dead. This is prevented 
+       * by the object responsible for zombie check, later on.
+       **/
+      try
+      {
+        if (context.get() == NULL)
+        {
+          LOG(ERROR) << "WebAssemblyOracle::FetchContext::SuccessCallback: (context.get() == NULL)";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+        }
+        else
+        {
+          switch (context->GetCommand().GetType())
+          {
+            case IOracleCommand::Type_Http:
+            {
+              HttpCommand::SuccessMessage message(context->GetTypedCommand<HttpCommand>(), headers, answer);
+              context->EmitMessage(message);
+              break;
+            }
+
+            case IOracleCommand::Type_OrthancRestApi:
+            {
+              LOG(TRACE) << "WebAssemblyOracle::FetchContext::SuccessCallback. About to call context->EmitMessage(message);";
+              OrthancRestApiCommand::SuccessMessage message
+                (context->GetTypedCommand<OrthancRestApiCommand>(), headers, answer);
+              context->EmitMessage(message);
+              break;
+            }
+
+            case IOracleCommand::Type_GetOrthancImage:
+            {
+              context->GetTypedCommand<GetOrthancImageCommand>().ProcessHttpAnswer
+                (context->GetReceiver(), context->GetEmitter(), answer, headers);
+              break;
+            }
+
+            case IOracleCommand::Type_GetOrthancWebViewerJpeg:
+            {
+              context->GetTypedCommand<GetOrthancWebViewerJpegCommand>().ProcessHttpAnswer
+                (context->GetReceiver(), context->GetEmitter(), answer);
+              break;
+            }
+
+            case IOracleCommand::Type_ParseDicomFromWado:
+            {
+#if ORTHANC_ENABLE_DCMTK == 1
+              const ParseDicomFromWadoCommand& command =
+                context->GetTypedCommand<ParseDicomFromWadoCommand>();
+              
+              size_t fileSize;
+              std::unique_ptr<Orthanc::ParsedDicomFile> dicom
+                (ParseDicomSuccessMessage::ParseWadoAnswer(fileSize, answer, headers));
+
+              {
+                ParseDicomSuccessMessage message(command, command.GetSource(), *dicom, fileSize, true);
+                context->EmitMessage(message);
+              }
+
+              context->StoreInCache(command.GetSopInstanceUid(), dicom, fileSize);
+#else
+              throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+#endif
+              break;
+            }
+
+            default:
+              LOG(ERROR) << "Command type not implemented by the WebAssembly Oracle (in SuccessCallback): "
+                         << context->GetCommand().GetType();
+              throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+          }
+        }
+      }
+      catch (Orthanc::OrthancException& e)
+      {
+        LOG(INFO) << "Error while processing a fetch answer in the oracle: " << e.What();
+
+        {
+          OracleCommandExceptionMessage message(context->GetCommand(), e);
+          context->EmitMessage(message);
+        }
+      }
+    }
+
+    static void FailureCallback(emscripten_fetch_t *fetch)
+    {
+      std::unique_ptr<FetchContext> context(reinterpret_cast<FetchContext*>(fetch->userData));
+
+      {
+        const size_t kEmscriptenStatusTextSize = sizeof(emscripten_fetch_t::statusText);
+        char message[kEmscriptenStatusTextSize + 1];
+        memcpy(message, fetch->statusText, kEmscriptenStatusTextSize);
+        message[kEmscriptenStatusTextSize] = 0;
+
+        /*LOG(ERROR) << "Fetching " << fetch->url
+                   << " failed, HTTP failure status code: " << fetch->status
+                   << " | statusText = " << message
+                   << " | numBytes = " << fetch->numBytes
+                   << " | totalBytes = " << fetch->totalBytes
+                   << " | readyState = " << fetch->readyState;*/
+      }
+
+      {
+        OracleCommandExceptionMessage message
+          (context->GetCommand(), Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol));
+        context->EmitMessage(message);
+      }
+      
+      /**
+       * TODO - The following code leads to an infinite recursion, at
+       * least with Firefox running on incognito mode => WHY?
+       **/      
+      emscripten_fetch_close(fetch); // Also free data on failure.
+    }
+  };
+    
+
+
+  class WebAssemblyOracle::FetchCommand : public boost::noncopyable
+  {
+  private:
+    WebAssemblyOracle&             oracle_;
+    boost::weak_ptr<IObserver>     receiver_;
+    std::unique_ptr<IOracleCommand>  command_;
+    Orthanc::HttpMethod            method_;
+    std::string                    url_;
+    std::string                    body_;
+    HttpHeaders                    headers_;
+    unsigned int                   timeout_;
+    std::string                    expectedContentType_;
+    bool                           hasCredentials_;
+    std::string                    username_;
+    std::string                    password_;
+
+  public:
+    FetchCommand(WebAssemblyOracle& oracle,
+                 boost::weak_ptr<IObserver> receiver,
+                 IOracleCommand* command) :
+      oracle_(oracle),
+      receiver_(receiver),
+      command_(command),
+      method_(Orthanc::HttpMethod_Get),
+      timeout_(0),
+      hasCredentials_(false)
+    {
+      if (command == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    void SetMethod(Orthanc::HttpMethod method)
+    {
+      method_ = method;
+    }
+
+    void SetUrl(const std::string& url)
+    {
+      url_ = url;
+    }
+
+    void SetBody(std::string& body /* will be swapped */)
+    {
+      body_.swap(body);
+    }
+
+    void AddHttpHeaders(const HttpHeaders& headers)
+    {
+      for (HttpHeaders::const_iterator it = headers.begin(); it != headers.end(); ++it)
+      {
+        headers_[it->first] = it->second;
+      }
+    }
+
+    void SetTimeout(unsigned int timeout)
+    {
+      timeout_ = timeout;
+    }
+
+    void SetCredentials(const std::string& username,
+                        const std::string& password)
+    {
+      hasCredentials_ = true;
+      username_ = username;
+      password_ = password;
+    }
+
+    void Execute()
+    {
+      if (command_.get() == NULL)
+      {
+        // Cannot call Execute() twice
+        LOG(ERROR) << "WebAssemblyOracle::Execute(): (command_.get() == NULL)";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+
+      emscripten_fetch_attr_t attr;
+      emscripten_fetch_attr_init(&attr);
+
+      const char* method;
+      
+      switch (method_)
+      {
+        case Orthanc::HttpMethod_Get:
+          method = "GET";
+          break;
+
+        case Orthanc::HttpMethod_Post:
+          method = "POST";
+          break;
+
+        case Orthanc::HttpMethod_Delete:
+          method = "DELETE";
+          break;
+
+        case Orthanc::HttpMethod_Put:
+          method = "PUT";
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+
+      strcpy(attr.requestMethod, method);
+
+      attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY | EMSCRIPTEN_FETCH_REPLACE;
+      attr.onsuccess = FetchContext::SuccessCallback;
+      attr.onerror = FetchContext::FailureCallback;
+      attr.timeoutMSecs = timeout_ * 1000;
+
+      if (hasCredentials_)
+      {
+        attr.withCredentials = EM_TRUE;
+        attr.userName = username_.c_str();
+        attr.password = password_.c_str();
+      }
+      
+      std::vector<const char*> headers;
+      headers.reserve(2 * headers_.size() + 1);
+
+      std::string expectedContentType;
+        
+      for (HttpHeaders::const_iterator it = headers_.begin(); it != headers_.end(); ++it)
+      {
+        std::string key;
+        Orthanc::Toolbox::ToLowerCase(key, it->first);
+          
+        if (key == "accept")
+        {
+          expectedContentType = it->second;
+        }
+
+        if (key != "accept-encoding")  // Web browsers forbid the modification of this HTTP header
+        {
+          headers.push_back(it->first.c_str());
+          headers.push_back(it->second.c_str());
+        }
+      }
+        
+      headers.push_back(NULL);  // Termination of the array of HTTP headers
+
+      attr.requestHeaders = &headers[0];
+
+      char* requestData = NULL;
+      if (!body_.empty())
+        requestData = reinterpret_cast<char*>(malloc(body_.size()));
+        
+      try 
+      {
+        if (!body_.empty())
+        {
+          memcpy(requestData, &(body_[0]), body_.size());
+          attr.requestDataSize = body_.size();
+          attr.requestData = requestData;
+        }
+        attr.userData = new FetchContext(oracle_, receiver_, command_.release(), expectedContentType);
+
+        // Must be the last call to prevent memory leak on error
+        emscripten_fetch(&attr, url_.c_str());
+      }        
+      catch(...)
+      {
+        if(requestData != NULL)
+          free(requestData);
+        throw;
+      }
+    }
+  };
+
+
+  void WebAssemblyOracle::SetOrthancUrl(FetchCommand& command,
+                                        const std::string& uri) const
+  {
+    if (isLocalOrthanc_)
+    {
+      command.SetUrl(localOrthancRoot_ + uri);
+    }
+    else
+    {
+      command.SetUrl(remoteOrthanc_.GetUrl() + uri);
+      command.AddHttpHeaders(remoteOrthanc_.GetHttpHeaders());
+      
+      if (!remoteOrthanc_.GetUsername().empty())
+      {
+        command.SetCredentials(remoteOrthanc_.GetUsername(), remoteOrthanc_.GetPassword());
+      }
+    }
+  }
+    
+
+  void WebAssemblyOracle::Execute(boost::weak_ptr<IObserver> receiver,
+                                  HttpCommand* command)
+  {
+    FetchCommand fetch(*this, receiver, command);
+    
+    fetch.SetMethod(command->GetMethod());
+    fetch.SetUrl(command->GetUrl());
+    fetch.AddHttpHeaders(command->GetHttpHeaders());
+    fetch.SetTimeout(command->GetTimeout());
+    
+    if (command->GetMethod() == Orthanc::HttpMethod_Post ||
+        command->GetMethod() == Orthanc::HttpMethod_Put)
+    {
+      std::string body;
+      command->SwapBody(body);
+      fetch.SetBody(body);
+    }
+    
+    fetch.Execute();
+  }
+  
+
+  void WebAssemblyOracle::Execute(boost::weak_ptr<IObserver> receiver,
+                                  OrthancRestApiCommand* command)
+  {
+    try
+    {
+      //LOG(TRACE) << "*********** WebAssemblyOracle::Execute.";
+      //LOG(TRACE) << "WebAssemblyOracle::Execute | command = " << command;
+      FetchCommand fetch(*this, receiver, command);
+
+      fetch.SetMethod(command->GetMethod());
+      SetOrthancUrl(fetch, command->GetUri());
+      fetch.AddHttpHeaders(command->GetHttpHeaders());
+      fetch.SetTimeout(command->GetTimeout());
+
+      if (command->GetMethod() == Orthanc::HttpMethod_Post ||
+        command->GetMethod() == Orthanc::HttpMethod_Put)
+      {
+        std::string body;
+        command->SwapBody(body);
+        fetch.SetBody(body);
+      }
+
+      fetch.Execute();
+      //LOG(TRACE) << "*********** successful end of WebAssemblyOracle::Execute.";
+    }
+    catch (const Orthanc::OrthancException& e)
+    {
+      if (e.HasDetails())
+      {
+        LOG(ERROR) << "OrthancException in WebAssemblyOracle::Execute: " << e.What() << " Details: " << e.GetDetails();
+      }
+      else
+      {
+        LOG(ERROR) << "OrthancException in WebAssemblyOracle::Execute: " << e.What();
+      }
+      //LOG(TRACE) << "*********** failing end of WebAssemblyOracle::Execute.";
+      throw;
+    }
+    catch (const std::exception& e)
+    {
+      LOG(ERROR) << "std::exception in WebAssemblyOracle::Execute: " << e.what();
+//       LOG(TRACE) << "*********** failing end of WebAssemblyOracle::Execute.";
+      throw;
+    }
+    catch (...)
+    {
+      LOG(ERROR) << "Unknown exception in WebAssemblyOracle::Execute";
+//       LOG(TRACE) << "*********** failing end of WebAssemblyOracle::Execute.";
+      throw;
+    }
+  }
+    
+    
+  void WebAssemblyOracle::Execute(boost::weak_ptr<IObserver> receiver,
+                                  GetOrthancImageCommand* command)
+  {
+    FetchCommand fetch(*this, receiver, command);
+
+    SetOrthancUrl(fetch, command->GetUri());
+    fetch.AddHttpHeaders(command->GetHttpHeaders());
+    fetch.SetTimeout(command->GetTimeout());
+      
+    fetch.Execute();
+  }
+    
+    
+  void WebAssemblyOracle::Execute(boost::weak_ptr<IObserver> receiver,
+                                  GetOrthancWebViewerJpegCommand* command)
+  {
+    FetchCommand fetch(*this, receiver, command);
+
+    SetOrthancUrl(fetch, command->GetUri());
+    fetch.AddHttpHeaders(command->GetHttpHeaders());
+    fetch.SetTimeout(command->GetTimeout());
+      
+    fetch.Execute();
+  }
+
+
+  void WebAssemblyOracle::Execute(boost::weak_ptr<IObserver> receiver,
+                                  ParseDicomFromWadoCommand* command)
+  {
+    std::unique_ptr<ParseDicomFromWadoCommand> protection(command);
+    
+#if ORTHANC_ENABLE_DCMTK == 1
+    if (dicomCache_.get())
+    {
+      ParsedDicomCache::Reader reader(*dicomCache_, BUCKET_SOP, protection->GetSopInstanceUid());
+      if (reader.IsValid() &&
+          reader.HasPixelData())
+      {
+        // Reuse the DICOM file from the cache
+        ParseDicomSuccessMessage message(*protection, protection->GetSource(), reader.GetDicom(),
+                                         reader.GetFileSize(), reader.HasPixelData());
+        EmitMessage(receiver, message);
+        return;
+      }
+    }
+#endif
+
+    switch (command->GetRestCommand().GetType())
+    {
+      case IOracleCommand::Type_Http:
+      {
+        const HttpCommand& rest =
+          dynamic_cast<const HttpCommand&>(protection->GetRestCommand());
+        
+        FetchCommand fetch(*this, receiver, protection.release());
+    
+        fetch.SetMethod(rest.GetMethod());
+        fetch.SetUrl(rest.GetUrl());
+        fetch.AddHttpHeaders(rest.GetHttpHeaders());
+        fetch.SetTimeout(rest.GetTimeout());
+    
+        if (rest.GetMethod() == Orthanc::HttpMethod_Post ||
+            rest.GetMethod() == Orthanc::HttpMethod_Put)
+        {
+          std::string body = rest.GetBody();
+          fetch.SetBody(body);
+        }
+    
+        fetch.Execute();
+        break;
+      }
+
+      case IOracleCommand::Type_OrthancRestApi:
+      {
+        const OrthancRestApiCommand& rest =
+          dynamic_cast<const OrthancRestApiCommand&>(protection->GetRestCommand());
+        
+        FetchCommand fetch(*this, receiver, protection.release());
+
+        fetch.SetMethod(rest.GetMethod());
+        SetOrthancUrl(fetch, rest.GetUri());
+        fetch.AddHttpHeaders(rest.GetHttpHeaders());
+        fetch.SetTimeout(rest.GetTimeout());
+
+        if (rest.GetMethod() == Orthanc::HttpMethod_Post ||
+            rest.GetMethod() == Orthanc::HttpMethod_Put)
+        {
+          std::string body = rest.GetBody();
+          fetch.SetBody(body);
+        }
+
+        fetch.Execute();
+        break;
+      }
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+
+
+  bool WebAssemblyOracle::Schedule(boost::shared_ptr<IObserver> receiver,
+                                   IOracleCommand* command)
+  {
+    LOG(TRACE) << "WebAssemblyOracle::Schedule : receiver = "
+               << std::hex << receiver.get();
+    
+    std::unique_ptr<IOracleCommand> protection(command);
+
+    if (command == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    switch (command->GetType())
+    {
+      case IOracleCommand::Type_Http:
+        Execute(receiver, dynamic_cast<HttpCommand*>(protection.release()));
+        break;
+        
+      case IOracleCommand::Type_OrthancRestApi:
+        Execute(receiver, dynamic_cast<OrthancRestApiCommand*>(protection.release()));
+        break;
+        
+      case IOracleCommand::Type_GetOrthancImage:
+        Execute(receiver, dynamic_cast<GetOrthancImageCommand*>(protection.release()));
+        break;
+
+      case IOracleCommand::Type_GetOrthancWebViewerJpeg:
+        break;          
+            
+      case IOracleCommand::Type_Sleep:
+      {
+        unsigned int timeoutMS = dynamic_cast<SleepOracleCommand*>(command)->GetDelay();
+        emscripten_set_timeout(TimeoutContext::Callback, timeoutMS,
+                               new TimeoutContext(*this, receiver, protection.release()));
+        break;
+      }
+            
+      case IOracleCommand::Type_ParseDicomFromWado:
+#if ORTHANC_ENABLE_DCMTK == 1
+        Execute(receiver, dynamic_cast<ParseDicomFromWadoCommand*>(protection.release()));
+#else
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
+                                          "DCMTK must be enabled to parse DICOM files");
+#endif
+        break;
+            
+      default:
+        LOG(ERROR) << "Command type not implemented by the WebAssembly Oracle (in Schedule): "
+                   << command->GetType();
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+
+    return true;
+  }
+
+
+  void WebAssemblyOracle::SetDicomCacheSize(size_t size)
+  {
+#if ORTHANC_ENABLE_DCMTK == 1
+    if (size == 0)
+    {
+      dicomCache_.reset();
+    }
+    else
+    {
+      dicomCache_.reset(new ParsedDicomCache(size));
+    }
+#else
+    LOG(INFO) << "DCMTK support is disabled, the DICOM cache is disabled";
+#endif
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Oracle/WebAssemblyOracle.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,126 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../OrthancStone.h"
+
+#if !defined(ORTHANC_ENABLE_WASM)
+#  error The macro ORTHANC_ENABLE_WASM must be defined
+#endif
+
+#if ORTHANC_ENABLE_WASM != 1
+#  error This file can only compiled for WebAssembly
+#endif
+
+#include "../Messages/IObservable.h"
+#include "../Messages/IMessageEmitter.h"
+#include "IOracle.h"
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include "../Toolbox/ParsedDicomCache.h"
+#endif
+
+#include <WebServiceParameters.h>
+
+#include <Enumerations.h>
+
+namespace OrthancStone
+{
+  class GetOrthancImageCommand;
+  class GetOrthancWebViewerJpegCommand;
+  class HttpCommand;
+  class OrthancRestApiCommand;
+  class ParseDicomFromWadoCommand;
+  
+  class WebAssemblyOracle :
+    public IOracle,
+    public IMessageEmitter
+  {
+  private:
+    typedef std::map<std::string, std::string>  HttpHeaders;
+    
+    class TimeoutContext;
+    class FetchContext;
+    class FetchCommand;
+
+    void SetOrthancUrl(FetchCommand& command,
+                       const std::string& uri) const;
+    
+    void Execute(boost::weak_ptr<IObserver> receiver,
+                 HttpCommand* command);    
+    
+    void Execute(boost::weak_ptr<IObserver> receiver,
+                 OrthancRestApiCommand* command);    
+    
+    void Execute(boost::weak_ptr<IObserver> receiver,
+                 GetOrthancImageCommand* command);    
+    
+    void Execute(boost::weak_ptr<IObserver> receiver,
+                 GetOrthancWebViewerJpegCommand* command);
+    
+    void Execute(boost::weak_ptr<IObserver> receiver,
+                 ParseDicomFromWadoCommand* command);
+
+    IObservable                    oracleObservable_;
+    bool                           isLocalOrthanc_;
+    std::string                    localOrthancRoot_;
+    Orthanc::WebServiceParameters  remoteOrthanc_;
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    std::unique_ptr<ParsedDicomCache>  dicomCache_;
+#endif
+
+  public:
+    WebAssemblyOracle() :
+      isLocalOrthanc_(false)
+    {
+    }
+    
+    virtual void EmitMessage(boost::weak_ptr<IObserver> observer,
+                             const IMessage& message) ORTHANC_OVERRIDE
+    {
+      oracleObservable_.EmitMessage(observer, message);
+    }
+    
+    virtual bool Schedule(boost::shared_ptr<IObserver> receiver,
+                          IOracleCommand* command) ORTHANC_OVERRIDE;
+
+    IObservable& GetOracleObservable()
+    {
+      return oracleObservable_;
+    }
+
+    void SetLocalOrthanc(const std::string& root)
+    {
+      isLocalOrthanc_ = true;
+      localOrthancRoot_ = root;
+    }
+
+    void SetRemoteOrthanc(const Orthanc::WebServiceParameters& orthanc)
+    {
+      isLocalOrthanc_ = false;
+      remoteOrthanc_ = orthanc;
+    }
+
+    void SetDicomCacheSize(size_t size);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/OrthancStone.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,18 @@
+#pragma once
+
+/**
+ * Besides the "pragma once" above that only protects this file,
+ * define a macro to prevent including different versions of
+ * "OrthancStone.h"
+ **/
+#ifndef __ORTHANC_STONE_H
+#define __ORTHANC_STONE_H
+
+#include <OrthancFramework.h>
+
+#if ORTHANC_ENABLE_OPENGL == 1
+#  define GL_GLEXT_PROTOTYPES 1
+#endif
+
+
+#endif /* __ORTHANC_STONE_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/CairoCompositor.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,184 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoCompositor.h"
+
+#include "Internals/CairoColorTextureRenderer.h"
+#include "Internals/CairoFloatTextureRenderer.h"
+#include "Internals/CairoInfoPanelRenderer.h"
+#include "Internals/CairoLookupTableTextureRenderer.h"
+#include "Internals/CairoPolylineRenderer.h"
+#include "Internals/CairoTextRenderer.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  cairo_t* CairoCompositor::GetCairoContext()
+  {
+    if (context_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return context_->GetObject();
+    }
+  }
+
+  Internals::CompositorHelper::ILayerRenderer* CairoCompositor::Create(const ISceneLayer& layer)
+  {
+    switch (layer.GetType())
+    {
+      case ISceneLayer::Type_Polyline:
+        return new Internals::CairoPolylineRenderer(*this, layer);
+
+      case ISceneLayer::Type_InfoPanel:
+        return new Internals::CairoInfoPanelRenderer(*this, layer);
+
+      case ISceneLayer::Type_ColorTexture:
+        return new Internals::CairoColorTextureRenderer(*this, layer);
+
+      case ISceneLayer::Type_FloatTexture:
+        return new Internals::CairoFloatTextureRenderer(*this, layer);
+
+      case ISceneLayer::Type_LookupTableTexture:
+        return new Internals::CairoLookupTableTextureRenderer(*this, layer);
+
+      case ISceneLayer::Type_Text:
+      {
+        const TextSceneLayer& l = dynamic_cast<const TextSceneLayer&>(layer);
+
+        Fonts::const_iterator found = fonts_.find(l.GetFontIndex());
+        if (found == fonts_.end())
+        {
+          return NULL;
+        }
+        else
+        {
+          assert(found->second != NULL);
+          return new Internals::CairoTextRenderer(*this, *found->second, l);
+        }
+      }
+
+      default:
+        return NULL;
+    }
+  }
+
+
+  CairoCompositor::CairoCompositor(unsigned int canvasWidth,
+                                   unsigned int canvasHeight)
+  {
+    ResetScene();
+    UpdateSize(canvasWidth, canvasHeight);
+  }
+
+  void CairoCompositor::UpdateSize(unsigned int canvasWidth,
+                                   unsigned int canvasHeight)
+  {
+    canvas_.SetSize(canvasWidth, canvasHeight, false);
+  }
+    
+  CairoCompositor::~CairoCompositor()
+  {
+    for (Fonts::iterator it = fonts_.begin(); it != fonts_.end(); ++it)
+    {
+      assert(it->second != NULL);
+      delete it->second;
+    }
+  }
+
+
+  void CairoCompositor::SetFont(size_t index,
+                                GlyphBitmapAlphabet* dict)  // Takes ownership
+  {
+    if (dict == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    else
+    {
+      std::unique_ptr<GlyphBitmapAlphabet> protection(dict);
+      
+      Fonts::iterator found = fonts_.find(index);
+
+      if (found == fonts_.end())
+      {
+        fonts_[index] = protection.release();
+      }
+      else
+      {
+        assert(found->second != NULL);
+        delete found->second;
+
+        found->second = protection.release();
+      }
+    }
+  }
+    
+
+#if ORTHANC_ENABLE_LOCALE == 1
+  void CairoCompositor::SetFont(size_t index,
+                                const std::string& ttf,
+                                unsigned int fontSize,
+                                Orthanc::Encoding codepage)
+  {
+    FontRenderer renderer;
+    renderer.LoadFont(ttf, fontSize);
+
+    std::unique_ptr<GlyphBitmapAlphabet> alphabet(new GlyphBitmapAlphabet);
+    alphabet->LoadCodepage(renderer, codepage);
+
+    SetFont(index, alphabet.release());
+  }
+#endif
+
+
+  void CairoCompositor::Refresh(const Scene2D& scene)
+  {
+    context_.reset(new CairoContext(canvas_));
+
+    // https://www.cairographics.org/FAQ/#clear_a_surface
+    cairo_set_source_rgba(context_->GetObject(), 0, 0, 0, 255);
+    cairo_paint(context_->GetObject());
+
+    helper_->Refresh(scene, canvas_.GetWidth(), canvas_.GetHeight());
+    context_.reset();
+  }
+
+
+  Orthanc::ImageAccessor* CairoCompositor::RenderText(size_t fontIndex,
+                                                      const std::string& utf8) const
+  {
+    Fonts::const_iterator found = fonts_.find(fontIndex);
+
+    if (found == fonts_.end())
+    {
+      return NULL;
+    }
+    else
+    {
+      assert(found->second != NULL);
+      return found->second->RenderText(utf8);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/CairoCompositor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,101 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ICompositor.h"
+#include "../Fonts/GlyphBitmapAlphabet.h"
+#include "../Wrappers/CairoContext.h"
+#include "Internals/CompositorHelper.h"
+#include "Internals/ICairoContextProvider.h"
+
+namespace OrthancStone
+{
+  class CairoCompositor :
+      public ICompositor,
+      private Internals::CompositorHelper::IRendererFactory,
+      private Internals::ICairoContextProvider
+  {
+  private:
+    typedef std::map<size_t, GlyphBitmapAlphabet*>   Fonts;
+
+    std::unique_ptr<Internals::CompositorHelper>  helper_;
+    CairoSurface                 canvas_;
+    Fonts                        fonts_;
+
+    // Only valid during a call to "Refresh()"
+    std::unique_ptr<CairoContext>  context_;
+
+    virtual cairo_t* GetCairoContext() ORTHANC_OVERRIDE;
+
+    virtual Internals::CompositorHelper::ILayerRenderer* Create(const ISceneLayer& layer) ORTHANC_OVERRIDE;
+
+  public:
+    CairoCompositor(unsigned int canvasWidth,
+                    unsigned int canvasHeight);
+    
+    virtual ~CairoCompositor();
+
+    const CairoSurface& GetCanvas() const
+    {
+      return canvas_;
+    }
+
+    virtual void RefreshCanvasSize() ORTHANC_OVERRIDE
+    {
+      // The canvas size is constant in Cairo, except if
+      // "UpdateSize()" is called
+    }
+
+    virtual unsigned int GetCanvasWidth() const ORTHANC_OVERRIDE
+    {
+      return canvas_.GetWidth();
+    }
+
+    virtual unsigned int GetCanvasHeight() const ORTHANC_OVERRIDE
+    {
+      return canvas_.GetHeight();
+    }
+    
+    void SetFont(size_t index,
+                 GlyphBitmapAlphabet* dict); // Takes ownership
+
+#if ORTHANC_ENABLE_LOCALE == 1
+    virtual void SetFont(size_t index,
+                         const std::string& ttf,
+                         unsigned int fontSize,
+                         Orthanc::Encoding codepage) ORTHANC_OVERRIDE;
+#endif
+
+    virtual void Refresh(const Scene2D& scene) ORTHANC_OVERRIDE;
+
+    virtual void ResetScene() ORTHANC_OVERRIDE
+    {
+      helper_.reset(new Internals::CompositorHelper(*this));
+    }
+
+    void UpdateSize(unsigned int canvasWidth,
+                    unsigned int canvasHeight);
+
+    Orthanc::ImageAccessor* RenderText(size_t fontIndex,
+                                       const std::string& utf8) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Color.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,82 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <stdint.h>
+
+namespace OrthancStone
+{
+  class Color
+  {
+  private:
+    uint8_t  red_;
+    uint8_t  green_;
+    uint8_t  blue_;
+
+  public:
+    Color() :
+      red_(255),
+      green_(255),
+      blue_(255)
+    {
+    }
+
+    Color(uint8_t red,
+          uint8_t green,
+          uint8_t blue) :
+      red_(red),
+      green_(green),
+      blue_(blue)
+    {
+    }
+
+    uint8_t GetRed() const
+    {
+      return red_;
+    }
+
+    uint8_t GetGreen() const
+    {
+      return green_;
+    }
+
+    uint8_t GetBlue() const
+    {
+      return blue_;
+    }
+
+    float GetRedAsFloat() const
+    {
+      return static_cast<float>(red_) / 255.0f;
+    }
+
+    float GetGreenAsFloat() const
+    {
+      return static_cast<float>(green_) / 255.0f;
+    }
+
+    float GetBlueAsFloat() const
+    {
+      return static_cast<float>(blue_) / 255.0f;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/ColorSceneLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,75 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ISceneLayer.h"
+#include "Color.h"
+
+#include <Enumerations.h>  // For ORTHANC_OVERRIDE
+
+namespace OrthancStone
+{
+  // TODO - Is this needed?
+  class ColorSceneLayer : public ISceneLayer
+  {
+  private:
+    Color    color_;
+    uint64_t revision_;
+
+  protected:
+    void BumpRevision()
+    {
+      // this is *not* thread-safe!!!  => (SJO) no problem, Stone assumes mono-threading
+      revision_++;
+    }
+
+  public:
+    ColorSceneLayer() :
+      revision_(0)
+    {
+    }
+
+    virtual uint64_t GetRevision() const ORTHANC_OVERRIDE
+    {
+      return revision_;
+    }
+
+    void SetColor(uint8_t red,
+                  uint8_t green,
+                  uint8_t blue)
+    {
+      color_ = Color(red, green, blue);
+      BumpRevision();
+    }
+
+    void SetColor(const Color& color)
+    {
+      color_ = color;
+      BumpRevision();
+    }
+
+    const Color& GetColor() const
+    {
+      return color_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/ColorTextureSceneLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,49 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ColorTextureSceneLayer.h"
+
+#include <OrthancException.h>
+#include <Images/Image.h>
+
+
+namespace OrthancStone
+{
+  ColorTextureSceneLayer::ColorTextureSceneLayer(const Orthanc::ImageAccessor& texture)
+  {
+    if (texture.GetFormat() != Orthanc::PixelFormat_Grayscale8 &&
+        texture.GetFormat() != Orthanc::PixelFormat_RGBA32 &&
+        texture.GetFormat() != Orthanc::PixelFormat_RGB24)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+      
+    SetTexture(Orthanc::Image::Clone(texture));
+  }
+
+
+  ISceneLayer* ColorTextureSceneLayer::Clone() const
+  {
+    std::unique_ptr<ColorTextureSceneLayer> cloned(new ColorTextureSceneLayer(GetTexture()));
+    cloned->CopyParameters(*this);
+    return cloned.release();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/ColorTextureSceneLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,41 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "TextureBaseSceneLayer.h"
+
+namespace OrthancStone
+{
+  class ColorTextureSceneLayer : public TextureBaseSceneLayer
+  {
+  public:
+    // If using RGBA32, premultiplied alpha is assumed
+    ColorTextureSceneLayer(const Orthanc::ImageAccessor& texture);
+
+    virtual ISceneLayer* Clone() const;
+
+    virtual Type GetType() const
+    {
+      return Type_ColorTexture;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/FloatTextureSceneLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,142 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "FloatTextureSceneLayer.h"
+
+#include "../Toolbox/ImageToolbox.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  FloatTextureSceneLayer::FloatTextureSceneLayer(const Orthanc::ImageAccessor& texture) :
+    inverted_(false),
+    applyLog_(false)
+  {
+    {
+      std::unique_ptr<Orthanc::ImageAccessor> t(
+        new Orthanc::Image(Orthanc::PixelFormat_Float32, 
+                           texture.GetWidth(), 
+                           texture.GetHeight(), 
+                           false));
+
+      Orthanc::ImageProcessing::Convert(*t, texture);
+
+      SetTexture(t.release());
+    }
+
+    SetCustomWindowing(128, 256);
+  }
+
+
+  void FloatTextureSceneLayer::SetWindowing(ImageWindowing windowing)
+  {
+    if (windowing_ != windowing)
+    {
+      if (windowing == ImageWindowing_Custom)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+      else
+      {
+        windowing_ = windowing;
+        IncrementRevision();
+      }
+    }
+  }
+
+  void FloatTextureSceneLayer::SetCustomWindowing(float customCenter,
+                                                  float customWidth)
+  {
+    if (customWidth <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      windowing_ = ImageWindowing_Custom;
+      customCenter_ = customCenter;
+      customWidth_ = customWidth;
+      IncrementRevision();
+    }
+  }
+
+  
+  void FloatTextureSceneLayer::GetWindowing(float& targetCenter,
+                                            float& targetWidth) const
+  {
+    ::OrthancStone::ComputeWindowing(targetCenter, targetWidth,
+                                     windowing_, customCenter_, customWidth_);
+  }
+
+
+  void FloatTextureSceneLayer::SetInverted(bool inverted)
+  {
+    inverted_ = inverted;
+    IncrementRevision();
+  }
+
+
+  void FloatTextureSceneLayer::SetApplyLog(bool apply)
+  {
+    applyLog_ = apply;
+    IncrementRevision();
+  }
+
+
+  void FloatTextureSceneLayer::FitRange()
+  {
+    float minValue, maxValue;
+    Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue, maxValue, GetTexture());
+
+    float width;
+
+    assert(minValue <= maxValue);
+    if (LinearAlgebra::IsCloseToZero(maxValue - minValue))
+    {
+      width = 1;
+    }
+    else
+    {
+      width = maxValue - minValue;
+    }
+
+    SetCustomWindowing((minValue + maxValue) / 2.0f, width);
+  }
+
+    
+  ISceneLayer* FloatTextureSceneLayer::Clone() const
+  {
+    std::unique_ptr<FloatTextureSceneLayer> cloned
+      (new FloatTextureSceneLayer(GetTexture()));
+
+    cloned->CopyParameters(*this);
+    cloned->windowing_ = windowing_;
+    cloned->customCenter_ = customCenter_;
+    cloned->customWidth_ = customWidth_;
+    cloned->inverted_ = inverted_;
+    cloned->applyLog_ = applyLog_;
+
+    return cloned.release();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/FloatTextureSceneLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,78 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "TextureBaseSceneLayer.h"
+
+namespace OrthancStone
+{
+  class FloatTextureSceneLayer : public TextureBaseSceneLayer
+  {
+  private:
+    ImageWindowing   windowing_;
+    float            customCenter_;
+    float            customWidth_;
+    bool             inverted_;
+    bool             applyLog_;
+
+  public:
+    // The pixel format must be convertible to "Float32"
+    FloatTextureSceneLayer(const Orthanc::ImageAccessor& texture);
+
+    void SetWindowing(ImageWindowing windowing);
+
+    void SetCustomWindowing(float customCenter,
+                            float customWidth);
+
+    void GetWindowing(float& targetCenter,
+                      float& targetWidth) const;
+
+    ImageWindowing GetWindowingType() const
+    {
+      return windowing_;
+    }
+
+    // To achieve MONOCHROME1 photometric interpretation
+    void SetInverted(bool inverted);
+
+    bool IsInverted() const
+    {
+      return inverted_;
+    }
+
+    void FitRange();
+
+    void SetApplyLog(bool apply);
+
+    bool IsApplyLog() const
+    {
+      return applyLog_;
+    }
+
+    virtual ISceneLayer* Clone() const;
+
+    virtual Type GetType() const
+    {
+      return Type_FloatTexture;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/GrayscaleStyleConfigurator.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,129 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GrayscaleStyleConfigurator.h"
+
+#include "FloatTextureSceneLayer.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  GrayscaleStyleConfigurator::GrayscaleStyleConfigurator() :
+    revision_(0),
+    linearInterpolation_(false),
+    hasWindowingOverride_(false),
+    customWindowWidth_(0),
+    customWindowCenter_(0),
+    hasInversionOverride_(false),
+    inverted_(false),
+    applyLog_(false)
+  {
+  }
+
+  void GrayscaleStyleConfigurator::SetWindowing(ImageWindowing windowing)
+  {
+    hasWindowingOverride_ = true;
+    windowing_ = windowing;
+    revision_++;
+  }
+
+  void GrayscaleStyleConfigurator::SetCustomWindowing(float windowCenter, float windowWidth)
+  {
+    SetWindowing(ImageWindowing_Custom);
+    customWindowCenter_ = windowCenter;
+    customWindowWidth_ = windowWidth;
+  }
+
+  void GrayscaleStyleConfigurator::GetCustomWindowing(float& windowCenter, float& windowWidth) const
+  {
+    windowCenter = customWindowCenter_;
+    windowWidth  = customWindowWidth_;
+  }
+
+  void GrayscaleStyleConfigurator::SetInverted(bool inverted)
+  {
+    hasInversionOverride_ = true;
+    inverted_ = inverted;
+    revision_++;
+  }
+
+  void GrayscaleStyleConfigurator::SetLinearInterpolation(bool enabled)
+  {
+    linearInterpolation_ = enabled;
+    revision_++;
+  }
+
+  void GrayscaleStyleConfigurator::SetApplyLog(bool apply)
+  {
+    applyLog_ = apply;
+    revision_++;
+  }
+
+  TextureBaseSceneLayer* GrayscaleStyleConfigurator::CreateTextureFromImage(
+    const Orthanc::ImageAccessor& image) const
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+  }
+
+  TextureBaseSceneLayer* GrayscaleStyleConfigurator::CreateTextureFromDicom(
+    const Orthanc::ImageAccessor& frame,
+    const DicomInstanceParameters& parameters) const
+  {
+    std::unique_ptr<TextureBaseSceneLayer> layer(parameters.CreateTexture(frame));
+
+    if (layer.get() == NULL ||
+        layer->GetTexture().GetFormat() != Orthanc::PixelFormat_Float32)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+    else
+    {
+      return layer.release();
+    }
+  }
+
+  void GrayscaleStyleConfigurator::ApplyStyle(ISceneLayer& layer) const
+  {
+    FloatTextureSceneLayer& l = dynamic_cast<FloatTextureSceneLayer&>(layer);
+    
+    l.SetLinearInterpolation(linearInterpolation_);
+
+    if (hasWindowingOverride_)
+    {
+      if (windowing_ != ImageWindowing_Custom)
+      {
+        l.SetWindowing(windowing_);
+      }
+      else
+      {
+        l.SetCustomWindowing(customWindowCenter_, customWindowWidth_);
+      }
+    }
+
+    if (hasInversionOverride_)
+    {
+      l.SetInverted(inverted_);
+    }
+
+    l.SetApplyLog(applyLog_);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/GrayscaleStyleConfigurator.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,84 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ILayerStyleConfigurator.h"
+
+namespace OrthancStone
+{
+  /**
+  Creates layers to display the supplied image in grayscale. No dynamic 
+  style is available.
+  */
+  class GrayscaleStyleConfigurator : public ILayerStyleConfigurator
+  {
+  private:
+    uint64_t        revision_;
+    bool            linearInterpolation_;
+    bool            hasWindowingOverride_;
+    ImageWindowing  windowing_;
+    float           customWindowWidth_;
+    float           customWindowCenter_;
+    bool            hasInversionOverride_;
+    bool            inverted_;
+    bool            applyLog_;
+    
+  public:
+    GrayscaleStyleConfigurator();
+
+    void SetWindowing(ImageWindowing windowing);
+
+    void SetCustomWindowing(float windowCenter, float windowWidth);
+
+    void GetCustomWindowing(float& windowCenter, float& windowWidth) const;
+
+    void SetInverted(bool inverted);
+
+    void SetLinearInterpolation(bool enabled);
+
+    bool IsLinearInterpolation() const
+    {
+      return linearInterpolation_;
+    }
+
+    void SetApplyLog(bool apply);
+
+    bool IsApplyLog() const
+    {
+      return applyLog_;
+    }
+
+    virtual uint64_t GetRevision() const
+    {
+      return revision_;
+    }
+    
+    virtual TextureBaseSceneLayer* CreateTextureFromImage(
+      const Orthanc::ImageAccessor& image) const;
+
+    virtual TextureBaseSceneLayer* CreateTextureFromDicom(
+      const Orthanc::ImageAccessor& frame,
+      const DicomInstanceParameters& parameters) const;
+
+    virtual void ApplyStyle(ISceneLayer& layer) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/ICompositor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,72 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "Scene2D.h"
+#include "ScenePoint2D.h"
+
+namespace OrthancStone
+{
+  class ICompositor : public boost::noncopyable
+  {
+  public:
+    virtual ~ICompositor() 
+    {
+    }
+
+    // This function can be expensive (notably in wasm)
+    virtual void RefreshCanvasSize() = 0; 
+    
+    virtual unsigned int GetCanvasWidth() const = 0;
+
+    virtual unsigned int GetCanvasHeight() const = 0;
+
+    /**
+     * WARNING: "Refresh()" must always be called with the same
+     * scene. If the scene changes, a call to "ResetScene()" must be
+     * done to reset the tracking of the revisions of the layers.
+     **/
+    virtual void Refresh(const Scene2D& scene) = 0;
+
+    virtual void ResetScene() = 0;
+
+#if ORTHANC_ENABLE_LOCALE == 1
+    virtual void SetFont(size_t index,
+                         const std::string& ttf,
+                         unsigned int fontSize,
+                         Orthanc::Encoding codepage) = 0;
+#endif
+
+    // Get the center of the given pixel, in canvas coordinates
+    ScenePoint2D GetPixelCenterCoordinates(int x, int y) const
+    {
+      return ScenePoint2D(
+        static_cast<double>(x) + 0.5 - static_cast<double>(GetCanvasWidth()) / 2.0,
+        static_cast<double>(y) + 0.5 - static_cast<double>(GetCanvasHeight()) / 2.0);
+    }
+
+    void FitContent(Scene2D& scene) const
+    {
+      scene.FitContent(GetCanvasWidth(), GetCanvasHeight());
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/ILayerStyleConfigurator.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/DicomInstanceParameters.h"
+
+namespace OrthancStone
+{
+  /**
+  This interface is implemented by objects able to create an ISceneLayer 
+  suitable to display the Orthanc image supplied to the CreateTextureXX 
+  factory methods (taking Dicom parameters into account if relevant).
+
+  It can also refresh the style of an existing layer afterwards, to match
+  the configurator settings.
+  */
+  class ILayerStyleConfigurator
+  {
+  public:
+    virtual ~ILayerStyleConfigurator()
+    {
+    }
+    
+    virtual uint64_t GetRevision() const = 0;
+    
+    virtual TextureBaseSceneLayer* CreateTextureFromImage(const Orthanc::ImageAccessor& image) const = 0;
+
+    virtual TextureBaseSceneLayer* CreateTextureFromDicom(const Orthanc::ImageAccessor& frame,
+                                                          const DicomInstanceParameters& parameters) const = 0;
+
+    virtual void ApplyStyle(ISceneLayer& layer) const = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/IPointerTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,50 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if 0
+
+#include "PointerEvent.h"
+
+namespace OrthancStone
+{
+  class IPointerTracker : public boost::noncopyable
+  {
+  public:
+    virtual ~IPointerTracker()
+    {
+    }
+
+    /**
+    This method will be repeatedly called during user interaction
+    */
+    virtual void Update(const PointerEvent& event) = 0;
+
+    /**
+    This method will be called when the tracker should commit its result
+    before being destroyed.
+    */
+    virtual void Release() = 0;
+  };
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/ISceneLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,57 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/Extent2D.h"
+
+#include <boost/noncopyable.hpp>
+#include <stdint.h>
+
+namespace OrthancStone
+{
+  class ISceneLayer : public boost::noncopyable
+  {
+  public:
+    enum Type
+    {
+      Type_NullLayer,
+      Type_InfoPanel,
+      Type_ColorTexture,
+      Type_Polyline,
+      Type_Text,
+      Type_FloatTexture,
+      Type_LookupTableTexture
+    };
+
+    virtual ~ISceneLayer()
+    {
+    }
+
+    virtual ISceneLayer* Clone() const = 0;
+
+    virtual Type GetType() const = 0;
+
+    virtual bool GetBoundingBox(Extent2D& target) const = 0;
+
+    virtual uint64_t GetRevision() const = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/InfoPanelSceneLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,107 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "InfoPanelSceneLayer.h"
+
+#include <Images/Image.h>
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  InfoPanelSceneLayer::InfoPanelSceneLayer(const Orthanc::ImageAccessor& texture,
+                                           BitmapAnchor anchor,
+                                           bool isLinearInterpolation,
+                                           bool applySceneRotation) :
+    texture_(Orthanc::Image::Clone(texture)),
+    anchor_(anchor),
+    isLinearInterpolation_(isLinearInterpolation),
+    applySceneRotation_(applySceneRotation)
+  {
+    if (texture_->GetFormat() != Orthanc::PixelFormat_RGBA32 &&
+        texture_->GetFormat() != Orthanc::PixelFormat_RGB24)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+  }
+
+
+  void InfoPanelSceneLayer::ComputeAnchorLocation(int& x,
+                                                  int& y,
+                                                  BitmapAnchor anchor,
+                                                  unsigned int textureWidth,
+                                                  unsigned int textureHeight,
+                                                  unsigned int canvasWidth,
+                                                  unsigned int canvasHeight)
+  {
+    int tw = static_cast<int>(textureWidth);
+    int th = static_cast<int>(textureHeight);
+    int cw = static_cast<int>(canvasWidth);
+    int ch = static_cast<int>(canvasHeight);
+    
+    switch (anchor)
+    {
+      case BitmapAnchor_TopLeft:
+      case BitmapAnchor_CenterLeft:
+      case BitmapAnchor_BottomLeft:
+        x = 0;
+        break;
+          
+      case BitmapAnchor_TopCenter:
+      case BitmapAnchor_Center:
+      case BitmapAnchor_BottomCenter:
+        x = (cw - tw) / 2;
+        break;
+          
+      case BitmapAnchor_TopRight:
+      case BitmapAnchor_CenterRight:
+      case BitmapAnchor_BottomRight:
+        x = cw - tw;
+        break;
+          
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    switch (anchor)
+    {
+      case BitmapAnchor_TopLeft:
+      case BitmapAnchor_TopCenter:
+      case BitmapAnchor_TopRight:
+        y = 0;
+        break;
+          
+      case BitmapAnchor_CenterLeft:
+      case BitmapAnchor_Center:
+      case BitmapAnchor_CenterRight:
+        y = (ch - th) / 2;
+        break;
+          
+      case BitmapAnchor_BottomLeft:
+      case BitmapAnchor_BottomCenter:
+      case BitmapAnchor_BottomRight:
+        y = ch - th;
+        break;
+          
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/InfoPanelSceneLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,105 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ISceneLayer.h"
+#include "../StoneEnumerations.h"
+
+#include <Compatibility.h>
+#include <Images/ImageAccessor.h>
+
+#include <memory>
+
+namespace OrthancStone
+{
+  class InfoPanelSceneLayer : public ISceneLayer
+  {
+  private:
+    std::unique_ptr<Orthanc::ImageAccessor>  texture_;
+    BitmapAnchor                           anchor_;
+    bool                                   isLinearInterpolation_;
+    bool                                   applySceneRotation_;
+
+  public:
+  /**
+   * If you supply `true` for `applySceneRotation`, then, in addition to 
+   * a translation to bring it at the desired anchoring location, the image
+   * will be rotated around its center by the same rotation as the scene
+   * transformation.
+   */
+    InfoPanelSceneLayer(const Orthanc::ImageAccessor& texture,
+                        BitmapAnchor anchor,
+                        bool isLinearInterpolation,
+                        bool applySceneRotation = false);
+
+    virtual ISceneLayer* Clone() const
+    {
+      return new InfoPanelSceneLayer(*texture_, 
+                                     anchor_, 
+                                     isLinearInterpolation_, 
+                                     applySceneRotation_);
+    }
+
+    const Orthanc::ImageAccessor& GetTexture() const
+    {
+      return *texture_;
+    }
+
+    BitmapAnchor GetAnchor() const
+    {
+      return anchor_;
+    }
+
+    bool ShouldApplySceneRotation() const
+    {
+      return applySceneRotation_;
+    }
+
+    bool IsLinearInterpolation() const
+    {
+      return isLinearInterpolation_;
+    }
+
+    virtual Type GetType() const
+    {
+      return Type_InfoPanel;
+    }
+
+    virtual bool GetBoundingBox(Extent2D& target) const
+    {
+      return false;
+    }
+
+    virtual uint64_t GetRevision() const
+    {
+      return 0;
+    }
+
+    static void ComputeAnchorLocation(int& x,
+                                      int& y,
+                                      BitmapAnchor anchor,
+                                      unsigned int textureWidth,
+                                      unsigned int textureHeight,
+                                      unsigned int canvasWidth,
+                                      unsigned int canvasHeight);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoBaseRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,65 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ICairoContextProvider.h"
+#include "CompositorHelper.h"
+
+#include <Compatibility.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class CairoBaseRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      ICairoContextProvider&      target_;
+      std::unique_ptr<ISceneLayer>  layer_;
+
+    protected:
+      template<typename T>
+      const T& GetLayer() const
+      {
+        return dynamic_cast<T&>(*layer_);
+      }
+
+      cairo_t* GetCairoContext() const
+      {
+        return target_.GetCairoContext();
+      }
+    
+    public:
+      CairoBaseRenderer(ICairoContextProvider& target,
+                        const ISceneLayer& layer) :
+        target_(target)
+      {
+        Update(layer);
+      }
+
+      virtual void Update(const ISceneLayer& layer)
+      {
+        layer_.reset(layer.Clone());
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoColorTextureRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,83 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoColorTextureRenderer.h"
+
+#include "../ColorTextureSceneLayer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    CairoColorTextureRenderer::CairoColorTextureRenderer(ICairoContextProvider& target,
+                                                         const ISceneLayer& layer) :
+      target_(target)
+    {
+      Update(layer);
+    }
+
+    
+    void CairoColorTextureRenderer::Update(const ISceneLayer& layer)
+    {
+      const ColorTextureSceneLayer& l = dynamic_cast<const ColorTextureSceneLayer&>(layer);
+
+      texture_.Copy(l.GetTexture(), true);
+      textureTransform_ = l.GetTransform();
+      isLinearInterpolation_ = l.IsLinearInterpolation();
+    }
+
+
+    void CairoColorTextureRenderer::RenderColorTexture(ICairoContextProvider& target,
+                                                       const AffineTransform2D& transform,
+                                                       CairoSurface& texture,
+                                                       const AffineTransform2D& textureTransform,
+                                                       bool isLinearInterpolation)
+    {
+      cairo_t* cr = target.GetCairoContext();
+
+      AffineTransform2D t =
+        AffineTransform2D::Combine(transform, textureTransform);
+      Matrix h = t.GetHomogeneousMatrix();
+      
+      cairo_save(cr);
+
+      cairo_matrix_t m;
+      cairo_matrix_init(&m, h(0, 0), h(1, 0), h(0, 1), h(1, 1), h(0, 2), h(1, 2));
+      cairo_transform(cr, &m);
+
+      cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
+      cairo_set_source_surface(cr, texture.GetObject(), 0, 0);
+
+      if (isLinearInterpolation)
+      {
+        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_BILINEAR);
+      }
+      else
+      {
+        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);
+      }
+
+      cairo_paint(cr);
+
+      cairo_restore(cr);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoColorTextureRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,61 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Wrappers/CairoSurface.h"
+#include "CompositorHelper.h"
+#include "ICairoContextProvider.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class CairoColorTextureRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      ICairoContextProvider&  target_;
+      CairoSurface            texture_;
+      AffineTransform2D       textureTransform_;
+      bool                    isLinearInterpolation_;
+    
+    public:
+      CairoColorTextureRenderer(ICairoContextProvider& target,
+                                const ISceneLayer& layer);
+
+      virtual void Update(const ISceneLayer& layer);
+    
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight)
+      {
+        RenderColorTexture(target_, transform, texture_,
+                           textureTransform_, isLinearInterpolation_);
+      }
+
+      static void RenderColorTexture(ICairoContextProvider& target,
+                                     const AffineTransform2D& transform,
+                                     CairoSurface& texture,
+                                     const AffineTransform2D& textureTransform,
+                                     bool isLinearInterpolation);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoFloatTextureRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,109 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoFloatTextureRenderer.h"
+
+#include "CairoColorTextureRenderer.h"
+#include "../FloatTextureSceneLayer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void CairoFloatTextureRenderer::Update(const ISceneLayer& layer)
+    {
+      const FloatTextureSceneLayer& l = dynamic_cast<const FloatTextureSceneLayer&>(layer);
+
+      textureTransform_ = l.GetTransform();
+      isLinearInterpolation_ = l.IsLinearInterpolation();
+
+      float windowCenter, windowWidth;
+      l.GetWindowing(windowCenter, windowWidth);
+
+      const float a = windowCenter - windowWidth / 2.0f;
+      const float slope = 256.0f / windowWidth;
+
+      const Orthanc::ImageAccessor& source = l.GetTexture();
+      const unsigned int width = source.GetWidth();
+      const unsigned int height = source.GetHeight();
+      texture_.SetSize(width, height, false);
+
+      Orthanc::ImageAccessor target;
+      texture_.GetWriteableAccessor(target);
+
+      assert(source.GetFormat() == Orthanc::PixelFormat_Float32 &&
+             target.GetFormat() == Orthanc::PixelFormat_BGRA32 &&
+             sizeof(float) == 4);
+
+      static const float LOG_NORMALIZATION = 255.0f / log(1.0f + 255.0f);
+      
+      for (unsigned int y = 0; y < height; y++)
+      {
+        const float* p = reinterpret_cast<const float*>(source.GetConstRow(y));
+        uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
+
+        for (unsigned int x = 0; x < width; x++)
+        {
+          float v = (*p - a) * slope;
+          if (v <= 0)
+          {
+            v = 0;
+          }
+          else if (v >= 255)
+          {
+            v = 255;
+          }
+
+          if (l.IsApplyLog())
+          {
+            // https://theailearner.com/2019/01/01/log-transformation/
+            v = LOG_NORMALIZATION * log(1.0f + static_cast<float>(v));
+          }
+
+          assert(v >= 0.0f && v <= 255.0f);
+
+          uint8_t vv = static_cast<uint8_t>(v);
+
+          if (l.IsInverted())
+          {
+            vv = 255 - vv;
+          }
+
+          q[0] = vv;
+          q[1] = vv;
+          q[2] = vv;
+
+          p++;
+          q += 4;
+        }
+      }
+    }
+
+      
+    void CairoFloatTextureRenderer::Render(const AffineTransform2D& transform,
+                                           unsigned int canvasWidth,
+                                           unsigned int canvasHeight)
+    {
+      CairoColorTextureRenderer::RenderColorTexture(target_, transform, texture_,
+                                                    textureTransform_, isLinearInterpolation_);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoFloatTextureRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Wrappers/CairoSurface.h"
+#include "CompositorHelper.h"
+#include "ICairoContextProvider.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class CairoFloatTextureRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      ICairoContextProvider&  target_;
+      CairoSurface            texture_;
+      AffineTransform2D       textureTransform_;
+      bool                    isLinearInterpolation_;
+    
+    public:
+      CairoFloatTextureRenderer(ICairoContextProvider& target,
+                                const ISceneLayer& layer) :
+        target_(target)
+      {
+        Update(layer);
+      }
+
+      virtual void Update(const ISceneLayer& layer);
+    
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoInfoPanelRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,132 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoInfoPanelRenderer.h"
+
+#include "../InfoPanelSceneLayer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void CairoInfoPanelRenderer::Update(const ISceneLayer& layer)
+    {
+      const InfoPanelSceneLayer& l = dynamic_cast<const InfoPanelSceneLayer&>(layer);
+
+      texture_.Copy(l.GetTexture(), true);
+      anchor_ = l.GetAnchor();
+      isLinearInterpolation_ = l.IsLinearInterpolation();
+      applySceneRotation_ = l.ShouldApplySceneRotation();
+    }
+
+    void CairoInfoPanelRenderer::Render(const AffineTransform2D& transform,
+                                        unsigned int canvasWidth,
+                                        unsigned int canvasHeight)
+    {
+      int dx, dy;
+      InfoPanelSceneLayer::ComputeAnchorLocation(
+        dx, dy, anchor_, texture_.GetWidth(), texture_.GetHeight(),
+        canvasWidth, canvasHeight);
+
+      cairo_t* cr = target_.GetCairoContext();
+      cairo_save(cr);
+
+      if (applySceneRotation_)
+      {
+        // the transformation is as follows:
+        // - originally, the image is aligned so that its top left corner
+        // is at 0,0
+        // - first, we translate the image by -w/2,-h/2 
+        // - then we rotate it, so that the next rotation will make the  
+        //   image rotate around its center.
+        // - then, we translate the image by +w/2,+h/2 to put it
+        //   back in place
+        // - the fourth and last transform is the one that brings the 
+        //   image to its desired anchored location.
+
+        int32_t halfWidth =
+          static_cast<int32_t>(0.5 * texture_.GetWidth());
+
+        int32_t halfHeight =
+          static_cast<int32_t>(0.5 * texture_.GetHeight());
+
+        AffineTransform2D translation1 =
+          AffineTransform2D::CreateOffset(-halfWidth, -halfHeight);
+
+        const Matrix& sceneTransformM = transform.GetHomogeneousMatrix();
+        Matrix r;
+        Matrix q;
+        LinearAlgebra::RQDecomposition3x3(r, q, sceneTransformM);
+
+        // first, put the scene rotation in a cairo matrix
+        cairo_matrix_t m;
+        cairo_matrix_init(
+          &m, q(0, 0), q(1, 0), q(0, 1), q(1, 1), q(0, 2), q(1, 2));
+
+        // now let's build the transform piece by piece
+        // first translation (directly written in `transform`)
+        cairo_matrix_t transform;
+        cairo_matrix_init_identity(&transform);
+        cairo_matrix_translate(&transform, -halfWidth, -halfHeight);
+
+        // then the rotation
+        cairo_matrix_multiply(&transform, &transform, &m);
+
+        // then the second translation
+        {
+          cairo_matrix_t translation2;
+          cairo_matrix_init_translate(&translation2, halfWidth, halfHeight);
+          cairo_matrix_multiply(&transform, &transform, &m);
+        }
+
+        // then the last translation
+        {
+          cairo_matrix_t translation3;
+          cairo_matrix_init_translate(&translation3, dx, dy);
+          cairo_matrix_multiply(&transform, &transform, &translation3);
+        }
+        cairo_transform(cr, &transform);
+      } 
+      else
+      {
+        cairo_matrix_t t;
+        cairo_matrix_init_identity(&t);
+        cairo_matrix_translate(&t, dx, dy);
+        cairo_transform(cr, &t);
+      }
+      cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
+      cairo_set_source_surface(cr, texture_.GetObject(), 0, 0);
+
+      if (isLinearInterpolation_)
+      {
+        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_BILINEAR);
+      }
+      else
+      {
+        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);
+      }
+
+      cairo_paint(cr);
+
+      cairo_restore(cr);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoInfoPanelRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,59 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Wrappers/CairoSurface.h"
+#include "CompositorHelper.h"
+#include "ICairoContextProvider.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class CairoInfoPanelRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      ICairoContextProvider& target_;
+      CairoSurface           texture_;
+      BitmapAnchor           anchor_;
+      bool                   isLinearInterpolation_;
+      bool                   applySceneRotation_;
+
+    public:
+      CairoInfoPanelRenderer(ICairoContextProvider& target,
+                             const ISceneLayer& layer) :
+        target_(target),
+        anchor_(BitmapAnchor_TopLeft),
+        applySceneRotation_(false)
+
+      {
+        Update(layer);
+      }
+
+      virtual void Update(const ISceneLayer& layer);
+      
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,60 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoLookupTableTextureRenderer.h"
+
+#include "CairoColorTextureRenderer.h"
+#include "../LookupTableTextureSceneLayer.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void CairoLookupTableTextureRenderer::Update(const ISceneLayer& layer)
+    {
+      const LookupTableTextureSceneLayer& l = dynamic_cast<const LookupTableTextureSceneLayer&>(layer);
+
+      textureTransform_ = l.GetTransform();
+      isLinearInterpolation_ = l.IsLinearInterpolation();
+
+      const Orthanc::ImageAccessor& source = l.GetTexture();
+      const unsigned int width = source.GetWidth();
+      const unsigned int height = source.GetHeight();
+      texture_.SetSize(width, height, true /* alpha channel is enabled */);
+
+      Orthanc::ImageAccessor target;
+      texture_.GetWriteableAccessor(target);
+      l.Render(target);
+      
+      cairo_surface_mark_dirty(texture_.GetObject());
+    }
+
+    void CairoLookupTableTextureRenderer::Render(const AffineTransform2D& transform,
+                                                 unsigned int canvasWidth,
+                                                 unsigned int canvasHeight)
+    {
+      CairoColorTextureRenderer::RenderColorTexture(target_, transform, texture_,
+                                                    textureTransform_, isLinearInterpolation_);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Wrappers/CairoSurface.h"
+#include "CompositorHelper.h"
+#include "ICairoContextProvider.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class CairoLookupTableTextureRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      ICairoContextProvider&  target_;
+      CairoSurface            texture_;
+      AffineTransform2D       textureTransform_;
+      bool                    isLinearInterpolation_;
+    
+    public:
+      CairoLookupTableTextureRenderer(ICairoContextProvider& target,
+                                      const ISceneLayer& layer) :
+        target_(target)
+      {
+        Update(layer);
+      }
+
+      virtual void Update(const ISceneLayer& layer);
+    
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoPolylineRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,76 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoPolylineRenderer.h"
+
+#include "../PolylineSceneLayer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void CairoPolylineRenderer::Render(const AffineTransform2D& transform,
+                                       unsigned int canvasWidth,
+                                       unsigned int canvasHeight)
+    {
+      const PolylineSceneLayer& layer = GetLayer<PolylineSceneLayer>();
+      
+      cairo_t* cr = GetCairoContext();
+
+      cairo_set_line_width(cr, layer.GetThickness());
+      
+      for (size_t i = 0; i < layer.GetChainsCount(); i++)
+      {
+        const Color& color = layer.GetColor(i);
+        cairo_set_source_rgb(cr, color.GetRedAsFloat(),
+                             color.GetGreenAsFloat(),
+                             color.GetBlueAsFloat());
+
+        const PolylineSceneLayer::Chain& chain = layer.GetChain(i);
+
+        if (!chain.empty())
+        {
+          for (size_t j = 0; j < chain.size(); j++)
+          {
+            ScenePoint2D p = chain[j].Apply(transform);
+
+            if (j == 0)
+            {
+              cairo_move_to(cr, p.GetX(), p.GetY());
+            }
+            else
+            {
+              cairo_line_to(cr, p.GetX(), p.GetY());
+            }
+          }
+
+          if (layer.IsClosedChain(i))
+          {
+            ScenePoint2D p = chain[0].Apply(transform);
+            cairo_line_to(cr, p.GetX(), p.GetY());
+          }
+        }
+
+        cairo_stroke(cr);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoPolylineRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,44 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "CairoBaseRenderer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class CairoPolylineRenderer : public CairoBaseRenderer
+    {
+    public:
+      CairoPolylineRenderer(ICairoContextProvider& target,
+                            const ISceneLayer& layer) :
+        CairoBaseRenderer(target, layer)
+      {
+      }
+    
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoTextRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,116 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoTextRenderer.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    CairoTextRenderer::CairoTextRenderer(ICairoContextProvider& target,
+                                         const GlyphBitmapAlphabet& alphabet,
+                                         const TextSceneLayer& layer) :
+      CairoBaseRenderer(target, layer)
+    {
+      std::unique_ptr<Orthanc::ImageAccessor> source(alphabet.RenderText(layer.GetText()));
+
+      if (source.get() != NULL)
+      {
+        text_.SetSize(source->GetWidth(), source->GetHeight(), true);
+
+        Orthanc::ImageAccessor target;
+        text_.GetWriteableAccessor(target);
+        
+        if (source->GetFormat() != Orthanc::PixelFormat_Grayscale8 ||
+            target.GetFormat() != Orthanc::PixelFormat_BGRA32)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+        }
+        
+        const unsigned int width = source->GetWidth();
+        const Color& color = layer.GetColor();
+
+        for (unsigned int y = 0; y < source->GetHeight(); y++)
+        {
+          const uint8_t* p = reinterpret_cast<const uint8_t*>(source->GetConstRow(y));
+          uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
+          
+          for (unsigned int x = 0; x < width; x++)
+          {
+            unsigned int alpha = *p;
+
+            // Premultiplied alpha
+            q[0] = static_cast<uint8_t>((color.GetBlue() * alpha) / 255);
+            q[1] = static_cast<uint8_t>((color.GetGreen() * alpha) / 255);
+            q[2] = static_cast<uint8_t>((color.GetRed() * alpha) / 255);
+            q[3] = *p;
+            
+            p++;
+            q += 4;
+          }
+        }
+
+        cairo_surface_mark_dirty(text_.GetObject());
+      }
+    }
+
+      
+    void CairoTextRenderer::Render(const AffineTransform2D& transform,
+                                   unsigned int canvasWidth,
+                                   unsigned int canvasHeight)
+    {
+      if (text_.GetWidth() != 0 &&
+          text_.GetHeight() != 0)
+      {
+        const TextSceneLayer& layer = GetLayer<TextSceneLayer>();
+      
+        cairo_t* cr = GetCairoContext();
+        cairo_set_source_rgb(cr, layer.GetColor().GetRedAsFloat(),
+                             layer.GetColor().GetGreenAsFloat(),
+                             layer.GetColor().GetBlueAsFloat());
+
+        double dx, dy;  // In pixels
+        ComputeAnchorTranslation(dx, dy, layer.GetAnchor(), text_.GetWidth(),
+                                 text_.GetHeight(), layer.GetBorder());
+      
+        double x = layer.GetX();
+        double y = layer.GetY();
+        transform.Apply(x, y);
+
+        cairo_save(cr);
+
+        cairo_matrix_t t;
+        cairo_matrix_init_identity(&t);
+        cairo_matrix_translate(&t, x + dx, y + dy);
+        cairo_transform(cr, &t);
+
+        cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
+        cairo_set_source_surface(cr, text_.GetObject(), 0, 0);
+        cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_BILINEAR);
+        cairo_paint(cr);
+
+        cairo_restore(cr);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CairoTextRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,48 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Fonts/GlyphBitmapAlphabet.h"
+#include "../../Wrappers/CairoSurface.h"
+#include "../TextSceneLayer.h"
+#include "CairoBaseRenderer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class CairoTextRenderer : public CairoBaseRenderer
+    {
+    private:
+      CairoSurface  text_;
+    
+    public:
+      CairoTextRenderer(ICairoContextProvider& target,
+                        const GlyphBitmapAlphabet& alphabet,
+                        const TextSceneLayer& layer);
+    
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CompositorHelper.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,177 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CompositorHelper.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class CompositorHelper::Item : public boost::noncopyable
+    {
+    private:
+      std::unique_ptr<ILayerRenderer>  renderer_;
+      const ISceneLayer&             layer_;
+      uint64_t                       layerIdentifier_;
+      uint64_t                       lastRevision_;
+
+    public:
+      Item(ILayerRenderer* renderer,     // Takes ownership
+           const ISceneLayer& layer,
+           uint64_t layerIdentifier) :
+        renderer_(renderer),
+        layer_(layer),
+        layerIdentifier_(layerIdentifier),
+        lastRevision_(layer.GetRevision())
+      {
+        if (renderer == NULL)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+        }
+      }
+
+      ILayerRenderer& GetRenderer() const
+      {
+        assert(renderer_.get() != NULL);
+        return *renderer_;
+      }
+
+      const ISceneLayer& GetLayer() const
+      {
+        return layer_;
+      }
+
+      uint64_t GetLayerIdentifier() const
+      {
+        return layerIdentifier_;
+      }
+
+      uint64_t GetLastRevision() const
+      {
+        return lastRevision_;
+      }
+
+      void UpdateRenderer()
+      {
+        assert(renderer_.get() != NULL);
+        renderer_->Update(layer_);
+        lastRevision_ = layer_.GetRevision();
+      }
+    };
+
+
+    void CompositorHelper::Visit(const Scene2D& scene,
+                                 const ISceneLayer& layer,
+                                 uint64_t layerIdentifier,
+                                 int depth)
+    {
+      // "Visit()" is only applied to layers existing in the scene
+      assert(scene.HasLayer(depth)); 
+
+      Content::iterator found = content_.find(depth);
+
+      assert(found == content_.end() ||
+             found->second != NULL);
+
+      if (found == content_.end() ||
+          found->second->GetLayerIdentifier() != layerIdentifier)
+      {
+        // This is the first time this layer is rendered, or the layer
+        // is not the same as before
+        if (found != content_.end())
+        {
+          delete found->second;
+          content_.erase(found);
+        }
+
+        // the returned renderer can be NULL in case of an unknown layer
+        // or a NullLayer
+        std::unique_ptr<ILayerRenderer> renderer(factory_.Create(layer));
+
+        if (renderer.get() != NULL)
+        {
+          renderer->Render(sceneTransform_, canvasWidth_, canvasHeight_);
+          content_[depth] = new Item(renderer.release(), layer, layerIdentifier);
+        }
+      }
+      else
+      {
+        // This layer has already been rendered
+        assert(found->second->GetLastRevision() <= layer.GetRevision());
+
+        if (found->second->GetLastRevision() < layer.GetRevision())
+        {
+          found->second->UpdateRenderer();
+        }
+
+        found->second->GetRenderer().Render(sceneTransform_, canvasWidth_, canvasHeight_);
+      }
+
+      // Check invariants
+      assert(content_.find(depth) == content_.end() ||
+             (content_[depth]->GetLayerIdentifier() == layerIdentifier &&
+              content_[depth]->GetLastRevision() == layer.GetRevision()));
+    }
+
+
+    CompositorHelper::~CompositorHelper()
+    {
+      for (Content::iterator it = content_.begin(); it != content_.end(); ++it)
+      {
+        assert(it->second != NULL);
+        delete it->second;
+      }
+    }
+
+  
+    void CompositorHelper::Refresh(const Scene2D& scene,
+                                   unsigned int canvasWidth,
+                                   unsigned int canvasHeight)
+    {
+      /**
+       * Safeguard mechanism to enforce the fact that the same scene
+       * is always used with the compositor. Note that the safeguard
+       * is not 100% bullet-proof, as a new scene might reuse the same
+       * address as a previous scene.
+       **/
+      if (lastScene_ != NULL &&
+          lastScene_ != &scene)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                        "ICompositor::ResetScene() should have been called");
+      }
+
+      lastScene_ = &scene;
+
+      // Bring coordinate (0,0) to the center of the canvas
+      AffineTransform2D offset = AffineTransform2D::CreateOffset(
+        static_cast<double>(canvasWidth) / 2.0,
+        static_cast<double>(canvasHeight) / 2.0);
+
+      sceneTransform_ = AffineTransform2D::Combine(offset, scene.GetSceneToCanvasTransform());
+      canvasWidth_ = canvasWidth;
+      canvasHeight_ = canvasHeight;
+      scene.Apply(*this);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/CompositorHelper.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,96 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Scene2D.h"
+#include "../ScenePoint2D.h"
+#include <boost/noncopyable.hpp>
+
+#include <map>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class CompositorHelper : protected Scene2D::IVisitor
+    {
+    public:
+      class ILayerRenderer : public boost::noncopyable
+      {
+      public:
+        virtual ~ILayerRenderer()
+        {
+        }
+
+        virtual void Render(const AffineTransform2D& transform,
+                            unsigned int canvasWidth,
+                            unsigned int canvasHeight) = 0;
+
+        // "Update()" is only called if the type of the layer has not changed
+        virtual void Update(const ISceneLayer& layer) = 0;
+      };
+
+      class IRendererFactory : public boost::noncopyable
+      {
+      public:
+        virtual ~IRendererFactory()
+        {
+        }
+
+        virtual ILayerRenderer* Create(const ISceneLayer& layer) = 0;
+      };
+
+    private:
+      class Item;
+
+      typedef std::map<int, Item*>  Content;
+
+      IRendererFactory&  factory_;
+      Content            content_;
+      const Scene2D*     lastScene_;   // This is only a safeguard, don't use it!
+
+      // Only valid during a call to Refresh()
+      AffineTransform2D  sceneTransform_;
+      unsigned int       canvasWidth_;
+      unsigned int       canvasHeight_;
+      
+    protected:
+      virtual void Visit(const Scene2D& scene,
+                         const ISceneLayer& layer,
+                         uint64_t layerIdentifier,
+                         int depth);
+
+    public:
+      CompositorHelper(IRendererFactory& factory) :
+      factory_(factory),
+      lastScene_(NULL)
+      {
+      }
+
+      ~CompositorHelper();
+
+      void Refresh(const Scene2D& scene,
+                   unsigned int canvasWidth,
+                   unsigned int canvasHeight);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/FixedPointAligner.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "../../Scene2DViewport/ViewportController.h"
+#include "FixedPointAligner.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    FixedPointAligner::FixedPointAligner(boost::shared_ptr<IViewport> viewport,
+                                         const ScenePoint2D& p) 
+      : viewport_(viewport)
+      , canvas_(p)
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      pivot_ = canvas_.Apply(lock->GetController().GetCanvasToSceneTransform());
+    }
+
+    
+    void FixedPointAligner::Apply()
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      ScenePoint2D p = canvas_.Apply(
+        lock->GetController().GetCanvasToSceneTransform());
+
+      lock->GetController().SetSceneToCanvasTransform(
+        AffineTransform2D::Combine(
+          lock->GetController().GetSceneToCanvasTransform(),
+          AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(),
+                                          p.GetY() - pivot_.GetY())));
+      lock->Invalidate();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/FixedPointAligner.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,49 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "../../Scene2DViewport/PredeclaredTypes.h"
+#include "../../Scene2D/ScenePoint2D.h"
+#include "../../Viewport/IViewport.h"
+
+#include <boost/weak_ptr.hpp>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    // During a mouse event that modifies the view of a scene, keeps
+    // one point (the pivot) at a fixed position on the canvas
+    class FixedPointAligner : public boost::noncopyable
+    {
+    private:
+      boost::shared_ptr<IViewport> viewport_;
+      ScenePoint2D           pivot_;
+      ScenePoint2D           canvas_;
+
+    public:
+      FixedPointAligner(boost::shared_ptr<IViewport> viewport,
+                        const ScenePoint2D& p);
+
+      void Apply();
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/ICairoContextProvider.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,42 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/noncopyable.hpp>
+#include <cairo.h>
+#include <stdint.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class ICairoContextProvider : public boost::noncopyable
+    {
+    public:
+      virtual ~ICairoContextProvider()
+      {
+      }
+
+      virtual cairo_t* GetCairoContext() = 0;
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,51 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLAdvancedPolylineRenderer.h"
+
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void OpenGLAdvancedPolylineRenderer::LoadLayer(const PolylineSceneLayer& layer)
+    {
+      data_.reset(new OpenGLLinesProgram::Data(context_, layer));
+
+      if (data_.get() == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+
+    OpenGLAdvancedPolylineRenderer::OpenGLAdvancedPolylineRenderer(OpenGL::IOpenGLContext& context,
+                                                                   OpenGLLinesProgram& program,
+                                                                   const PolylineSceneLayer& layer) :
+      context_(context),
+      program_(program)
+    {
+      LoadLayer(layer);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,62 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "CompositorHelper.h"
+#include "OpenGLLinesProgram.h"
+
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLAdvancedPolylineRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      OpenGL::IOpenGLContext&                  context_;
+      OpenGLLinesProgram&                      program_;
+      std::unique_ptr<OpenGLLinesProgram::Data>  data_;
+
+      void LoadLayer(const PolylineSceneLayer& layer);
+
+    public:
+      OpenGLAdvancedPolylineRenderer(OpenGL::IOpenGLContext& context,
+                                     OpenGLLinesProgram& program,
+                                     const PolylineSceneLayer& layer);
+
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight)
+      {
+        if (!context_.IsContextLost())
+        {
+          program_.Apply(*data_, transform, true, true);
+        }
+      }
+
+      virtual void Update(const ISceneLayer& layer)
+      {
+        LoadLayer(dynamic_cast<const PolylineSceneLayer&>(layer));
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLBasicPolylineRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,94 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLBasicPolylineRenderer.h"
+
+#include "../../OpenGL/OpenGLIncludes.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    OpenGLBasicPolylineRenderer::OpenGLBasicPolylineRenderer(OpenGL::IOpenGLContext& context,
+                                                             const PolylineSceneLayer& layer) :
+      context_(context)
+    {
+      layer_.Copy(layer);
+    }
+
+    void OpenGLBasicPolylineRenderer::Render(const AffineTransform2D& transform)
+    {
+      if (!context_.IsContextLost())
+      {
+        AffineTransform2D t = AffineTransform2D::Combine(
+          AffineTransform2D::CreateOpenGLClipspace(context_.GetCanvasWidth(), context_.GetCanvasHeight()),
+          transform);
+
+        glUseProgram(0);
+
+        glBegin(GL_LINES);
+
+        for (size_t i = 0; i < layer_.GetChainsCount(); i++)
+        {
+          const Color& color = layer_.GetColor(i);
+          glColor3ub(color.GetRed(), color.GetGreen(), color.GetBlue());
+
+          const PolylineSceneLayer::Chain& chain = layer_.GetChain(i);
+
+          if (chain.size() > 1)
+          {
+            ScenePoint2D previous = chain[0].Apply(t);
+
+            for (size_t j = 1; j < chain.size(); j++)
+            {
+              ScenePoint2D p = chain[j].Apply(t);
+
+              glVertex2f(static_cast<GLfloat>(previous.GetX()),
+                static_cast<GLfloat>(previous.GetY()));
+              glVertex2f(static_cast<GLfloat>(p.GetX()),
+                static_cast<GLfloat>(p.GetY()));
+
+              previous = p;
+            }
+
+            if (layer_.IsClosedChain(i))
+            {
+              ScenePoint2D p = chain[0].Apply(t);
+
+              glVertex2f(static_cast<GLfloat>(previous.GetX()),
+                static_cast<GLfloat>(previous.GetY()));
+              glVertex2f(static_cast<GLfloat>(p.GetX()),
+                static_cast<GLfloat>(p.GetY()));
+            }
+          }
+        }
+
+        glEnd();
+      }
+    }
+
+
+    void OpenGLBasicPolylineRenderer::Update(const ISceneLayer& layer)
+    {
+      layer_.Copy(dynamic_cast<const PolylineSceneLayer&>(layer));
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLBasicPolylineRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,49 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../OpenGL/IOpenGLContext.h"
+#include "../PolylineSceneLayer.h"
+#include "CompositorHelper.h"
+
+#include <Compatibility.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLBasicPolylineRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      OpenGL::IOpenGLContext&  context_;
+      PolylineSceneLayer       layer_;
+
+    public:
+      OpenGLBasicPolylineRenderer(OpenGL::IOpenGLContext& context,
+                                  const PolylineSceneLayer& layer);
+
+      virtual void Render(const AffineTransform2D& transform);
+
+      virtual void Update(const ISceneLayer& layer);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLColorTextureProgram.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,68 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLColorTextureProgram.h"
+#include "OpenGLShaderVersionDirective.h"
+
+static const char* FRAGMENT_SHADER = 
+  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
+  "uniform sampler2D u_texture;                       \n"
+  "varying vec2 v_texcoord;                           \n"
+  "void main()                                        \n"
+  "{                                                  \n"
+  "  gl_FragColor = texture2D(u_texture, v_texcoord); \n"
+  "}";
+
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    OpenGLColorTextureProgram::OpenGLColorTextureProgram(OpenGL::IOpenGLContext&  context)
+      : program_(context, FRAGMENT_SHADER)
+      , context_(context)
+    {
+    }
+
+    
+    void OpenGLColorTextureProgram::Apply(OpenGL::OpenGLTexture& texture,
+                                          const AffineTransform2D& transform,
+                                          bool useAlpha)
+    {
+      if (!context_.IsContextLost())
+      {
+        OpenGLTextureProgram::Execution execution(program_, texture, transform);
+
+        if (useAlpha)
+        {
+          glEnable(GL_BLEND);
+          glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+          execution.DrawTriangles();
+          glDisable(GL_BLEND);
+        }
+        else
+        {
+          execution.DrawTriangles();
+        }
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLColorTextureProgram.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,43 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OpenGLTextureProgram.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLColorTextureProgram : public boost::noncopyable
+    {
+    public:
+      OpenGLColorTextureProgram(OpenGL::IOpenGLContext&  context);
+
+      void Apply(OpenGL::OpenGLTexture& texture,
+                 const AffineTransform2D& transform,
+                 bool useAlpha);
+    private:
+      OpenGLTextureProgram  program_;
+      OpenGL::IOpenGLContext& context_;
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLColorTextureRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,67 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLColorTextureRenderer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void OpenGLColorTextureRenderer::LoadTexture(const ColorTextureSceneLayer& layer)
+    {
+      if (!context_.IsContextLost())
+      {
+        context_.MakeCurrent();
+        texture_.reset(new OpenGL::OpenGLTexture(context_));
+        texture_->Load(layer.GetTexture(), layer.IsLinearInterpolation());
+        layerTransform_ = layer.GetTransform();
+      }
+    }
+
+
+    OpenGLColorTextureRenderer::OpenGLColorTextureRenderer(OpenGL::IOpenGLContext& context,
+                                                           OpenGLColorTextureProgram& program,
+                                                           const ColorTextureSceneLayer& layer) :
+      context_(context),
+      program_(program)
+    {
+      LoadTexture(layer);
+    }
+
+    
+    void OpenGLColorTextureRenderer::Render(const AffineTransform2D& transform,
+                                            unsigned int canvasWidth,
+                                            unsigned int canvasHeight)
+    {
+      if (!context_.IsContextLost() && texture_.get() != NULL)
+      {
+        program_.Apply(*texture_, AffineTransform2D::Combine(transform, layerTransform_), true);
+      }
+    }
+
+    
+    void OpenGLColorTextureRenderer::Update(const ISceneLayer& layer)
+    {
+      // Should never happen (no revisions in color textures)
+      LoadTexture(dynamic_cast<const ColorTextureSceneLayer&>(layer));
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLColorTextureRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,54 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OpenGLColorTextureProgram.h"
+#include "CompositorHelper.h"
+#include "../ColorTextureSceneLayer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLColorTextureRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      OpenGL::IOpenGLContext&               context_;
+      OpenGLColorTextureProgram&            program_;
+      std::unique_ptr<OpenGL::OpenGLTexture>  texture_;
+      AffineTransform2D                     layerTransform_;
+
+      void LoadTexture(const ColorTextureSceneLayer& layer);
+
+    public:
+      OpenGLColorTextureRenderer(OpenGL::IOpenGLContext& context,
+                                 OpenGLColorTextureProgram& program,
+                                 const ColorTextureSceneLayer& layer);
+
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight);
+
+      virtual void Update(const ISceneLayer& layer);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLFloatTextureProgram.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,162 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLFloatTextureProgram.h"
+#include "OpenGLShaderVersionDirective.h"
+
+#include <OrthancException.h>
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+
+
+static const char* FRAGMENT_SHADER = 
+  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
+  "uniform float u_offset;                           \n"
+  "uniform float u_slope;                            \n"
+  "uniform float u_windowCenter;                     \n"
+  "uniform float u_windowWidth;                      \n"
+  "uniform bool  u_invert;                           \n"
+  "uniform sampler2D u_texture;                      \n"
+  "varying vec2 v_texcoord;                          \n"
+  "void main()                                       \n"
+  "{                                                 \n"
+  "  vec4 t = texture2D(u_texture, v_texcoord);      \n"
+  "  float v = (t.r * 256.0 + t.g) * 256.0;          \n"
+  "  v = v * u_slope + u_offset;                     \n"  // (*)
+  "  float a = u_windowCenter - u_windowWidth / 2.0; \n"
+  "  float dy = 1.0 / u_windowWidth;                 \n"
+  "  if (v <= a)                                     \n"
+  "    v = 0.0;                                      \n"
+  "  else                                            \n"
+  "  {                                               \n"
+  "    v = (v - a) * dy;                             \n"
+  "    if (v >= 1.0)                                 \n"
+  "      v = 1.0;                                    \n"
+  "  }                                               \n"
+  "  if (u_invert)                                   \n"
+  "      v = 1.0 - v;                                \n"
+  "  gl_FragColor = vec4(v, v, v, 1);                \n"
+  "}";
+
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    OpenGLFloatTextureProgram::Data::Data(
+        OpenGL::IOpenGLContext& context
+      , const Orthanc::ImageAccessor& texture
+      , bool isLinearInterpolation) 
+      : texture_(context)
+      , offset_(0.0f)
+      , slope_(0.0f)
+    {
+      if (texture.GetFormat() != Orthanc::PixelFormat_Float32)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+      }
+
+      float minValue, maxValue;
+      Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue, maxValue, texture);
+
+      offset_ = minValue;
+
+      if (LinearAlgebra::IsCloseToZero(maxValue - minValue))
+      {
+        slope_ = 1;
+      }
+      else
+      {
+        slope_ = (maxValue - minValue) / 65536.0f;
+        assert(!LinearAlgebra::IsCloseToZero(slope_));
+      }
+
+      const unsigned int width = texture.GetWidth();
+      const unsigned int height = texture.GetHeight();
+
+      Orthanc::Image converted(Orthanc::PixelFormat_RGB24, width, height, true);
+
+      for (unsigned int y = 0; y < height; y++)
+      {
+        const float *p = reinterpret_cast<const float*>(texture.GetConstRow(y));
+        uint8_t *q = reinterpret_cast<uint8_t*>(converted.GetRow(y));
+
+        for (unsigned int x = 0; x < width; x++)
+        {
+          /**
+           * At (*), the floating-point "value" is reconstructed as
+           * "value = texture * slope + offset".
+           * <=> texture = (value - offset) / slope
+           **/
+
+          float texture = (*p - offset_) / slope_;
+          if (texture < 0)
+          {
+            texture = 0;
+          }
+          else if (texture >= 65535.0f)
+          {
+            texture = 65535.0f;
+          }
+
+          uint16_t t = static_cast<uint16_t>(texture);
+
+          q[0] = t / 256;  // red
+          q[1] = t % 256;  // green
+          q[2] = 0;        // blue is unused
+
+          p++;
+          q += 3;
+        }
+      }
+
+      texture_.Load(converted, isLinearInterpolation);
+    }
+
+    
+    OpenGLFloatTextureProgram::OpenGLFloatTextureProgram(OpenGL::IOpenGLContext&  context) 
+      : program_(context, FRAGMENT_SHADER)
+      , context_(context)
+    {
+    }
+
+
+    void OpenGLFloatTextureProgram::Apply(Data& data,
+                                          const AffineTransform2D& transform,
+                                          float windowCenter,
+                                          float windowWidth,
+                                          bool invert)
+    {
+      if (!context_.IsContextLost())
+      {
+        OpenGLTextureProgram::Execution execution(program_, data.GetTexture(), transform);
+
+        glUniform1f(execution.GetUniformLocation("u_slope"), data.GetSlope());
+        glUniform1f(execution.GetUniformLocation("u_offset"), data.GetOffset());
+        glUniform1f(execution.GetUniformLocation("u_windowCenter"), windowCenter);
+        glUniform1f(execution.GetUniformLocation("u_windowWidth"), windowWidth);
+        glUniform1f(execution.GetUniformLocation("u_invert"), invert);
+
+        execution.DrawTriangles();
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLFloatTextureProgram.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,73 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OpenGLTextureProgram.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLFloatTextureProgram : public boost::noncopyable
+    {
+    public:
+      class Data : public boost::noncopyable
+      {
+      private:
+        OpenGL::OpenGLTexture  texture_;
+        float                  offset_;
+        float                  slope_;
+
+      public:
+        Data(OpenGL::IOpenGLContext& context, const Orthanc::ImageAccessor& texture,
+             bool isLinearInterpolation);
+
+        float GetOffset() const
+        {
+          return offset_;
+        }
+
+        float GetSlope() const
+        {
+          return slope_;
+        }
+
+        OpenGL::OpenGLTexture& GetTexture()
+        {
+          return texture_;
+        }
+      };
+
+    public:
+      OpenGLFloatTextureProgram(OpenGL::IOpenGLContext&  context);
+
+      void Apply(Data& data,
+                 const AffineTransform2D& transform,
+                 float windowCenter,
+                 float windowWidth,
+                 bool  invert);
+    private:
+      OpenGLTextureProgram  program_;
+      OpenGL::IOpenGLContext& context_;
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,81 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLFloatTextureRenderer.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void OpenGLFloatTextureRenderer::UpdateInternal(const FloatTextureSceneLayer& layer,
+                                                    bool loadTexture)
+    {
+      if (!context_.IsContextLost())
+      {
+        if (loadTexture)
+        {
+          if (layer.IsApplyLog())
+          {
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+          }
+          
+          context_.MakeCurrent();
+          texture_.reset(new OpenGLFloatTextureProgram::Data(
+            context_, layer.GetTexture(), layer.IsLinearInterpolation()));
+        }
+
+        layerTransform_ = layer.GetTransform();
+        layer.GetWindowing(windowCenter_, windowWidth_);
+        invert_ = layer.IsInverted();
+      }
+    }
+
+
+    OpenGLFloatTextureRenderer::OpenGLFloatTextureRenderer(OpenGL::IOpenGLContext& context,
+                                                           OpenGLFloatTextureProgram& program,
+                                                           const FloatTextureSceneLayer& layer) :
+      context_(context),
+      program_(program)
+    {
+      UpdateInternal(layer, true);
+    }
+
+
+    void OpenGLFloatTextureRenderer::Render(const AffineTransform2D& transform,
+                                            unsigned int canvasWidth,
+                                            unsigned int canvasHeight)
+    {
+      if (!context_.IsContextLost() && texture_.get() != NULL)
+      {
+        program_.Apply(*texture_, AffineTransform2D::Combine(transform, layerTransform_), 
+                       windowCenter_, windowWidth_, invert_);
+      }
+    }
+
+
+    void OpenGLFloatTextureRenderer::Update(const ISceneLayer& layer)
+    {
+      UpdateInternal(dynamic_cast<const FloatTextureSceneLayer&>(layer), false);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLFloatTextureRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "CompositorHelper.h"
+#include "OpenGLFloatTextureProgram.h"
+#include "../FloatTextureSceneLayer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLFloatTextureRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      OpenGL::IOpenGLContext&                         context_;
+      OpenGLFloatTextureProgram&                      program_;
+      std::unique_ptr<OpenGLFloatTextureProgram::Data>  texture_;
+      AffineTransform2D                               layerTransform_;
+      float                                           windowCenter_;
+      float                                           windowWidth_;
+      bool                                            invert_;
+
+      void UpdateInternal(const FloatTextureSceneLayer& layer,
+                          bool loadTexture);
+
+    public:
+      OpenGLFloatTextureRenderer(OpenGL::IOpenGLContext& context,
+                                 OpenGLFloatTextureProgram& program,
+                                 const FloatTextureSceneLayer& layer);
+
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight);
+
+      virtual void Update(const ISceneLayer& layer);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLInfoPanelRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,117 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLInfoPanelRenderer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void OpenGLInfoPanelRenderer::LoadTexture(const InfoPanelSceneLayer& layer)
+    {
+      if (!context_.IsContextLost())
+      {
+        context_.MakeCurrent();
+        texture_.reset(new OpenGL::OpenGLTexture(context_));
+        texture_->Load(layer.GetTexture(), layer.IsLinearInterpolation());
+        applySceneRotation_ = layer.ShouldApplySceneRotation();
+        anchor_ = layer.GetAnchor();
+      }
+    }
+
+    OpenGLInfoPanelRenderer::OpenGLInfoPanelRenderer(OpenGL::IOpenGLContext& context,
+                                                     OpenGLColorTextureProgram& program,
+                                                     const InfoPanelSceneLayer& layer) :
+      context_(context),
+      program_(program),
+      anchor_(BitmapAnchor_TopLeft),
+      applySceneRotation_(false)
+    {
+      LoadTexture(layer);
+    }
+    
+    void OpenGLInfoPanelRenderer::Render(const AffineTransform2D& transform,
+                                         unsigned int canvasWidth,
+                                         unsigned int canvasHeight)
+    {
+      if (!context_.IsContextLost() && texture_.get() != NULL)
+      {
+        int dx = 0, dy = 0;
+        InfoPanelSceneLayer::ComputeAnchorLocation(
+          dx, dy, anchor_, texture_->GetWidth(), texture_->GetHeight(),
+          canvasWidth, canvasHeight);
+
+        // The position of this type of layer is layer: Ignore the
+        // "transform" coming from the scene
+        AffineTransform2D actualTransform = 
+          AffineTransform2D::CreateOffset(dx, dy);
+
+        if (applySceneRotation_)
+        {
+          // the transformation is as follows:
+          // - originally, the image is aligned so that its top left corner
+          // is at 0,0
+          // - first, we translate the image by -w/2,-h/2 
+          // - then we rotate it, so that the next rotation will make the  
+          //   image rotate around its center.
+          // - then, we translate the image by +w/2,+h/2 to put it
+          //   back in place
+          // - the fourth and last transform is the one that brings the 
+          //   image to its desired anchored location.
+
+          int32_t halfWidth = 
+            static_cast<int32_t>(0.5 * texture_->GetWidth());
+
+          int32_t halfHeight=
+            static_cast<int32_t>(0.5 * texture_->GetHeight());
+
+          AffineTransform2D translation1 =
+            AffineTransform2D::CreateOffset(-halfWidth, -halfHeight);
+
+          const Matrix& sceneTransformM = transform.GetHomogeneousMatrix();
+          Matrix r;
+          Matrix q;
+          LinearAlgebra::RQDecomposition3x3(r, q, sceneTransformM);
+
+          // counterintuitively, q is the rotation and r is the upper
+          // triangular
+          AffineTransform2D rotation(q);
+
+          AffineTransform2D translation2 =
+            AffineTransform2D::CreateOffset(halfWidth, halfHeight);
+
+          // please note that the last argument is the 1st applied 
+          // transformation (rationale: if arguments are a, b and c, then
+          // the resulting matrix is a*b*c:
+          // x2 = (a*b*c)*x1 = (a*(b*(c*x1))) (you can see that the result
+          // of c*x1 is transformed by b, and the result of b*c*x1 is trans-
+          // formed by a)
+          actualTransform = AffineTransform2D::Combine(actualTransform,
+                                                       translation2,
+                                                       rotation,
+                                                       translation1);
+        }
+
+        program_.Apply(*texture_, actualTransform, true);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLInfoPanelRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "CompositorHelper.h"
+#include "OpenGLColorTextureProgram.h"
+#include "../InfoPanelSceneLayer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLInfoPanelRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      OpenGL::IOpenGLContext&               context_;
+      OpenGLColorTextureProgram&            program_;
+      std::unique_ptr<OpenGL::OpenGLTexture>  texture_;
+      BitmapAnchor                          anchor_;
+      bool                                  applySceneRotation_;
+
+      void LoadTexture(const InfoPanelSceneLayer& layer);
+
+    public:
+      OpenGLInfoPanelRenderer(OpenGL::IOpenGLContext& context,
+                              OpenGLColorTextureProgram& program,
+                              const InfoPanelSceneLayer& layer);
+
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight);
+
+      virtual void Update(const ISceneLayer& layer)
+      {
+        LoadTexture(dynamic_cast<const InfoPanelSceneLayer&>(layer));
+      }
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLLinesProgram.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,511 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLLinesProgram.h"
+#include "OpenGLShaderVersionDirective.h"
+
+#include <OrthancException.h>
+
+
+static const unsigned int COMPONENTS_POSITION = 3;
+static const unsigned int COMPONENTS_COLOR = 3;
+static const unsigned int COMPONENTS_MITER = 2;
+
+
+static const char* VERTEX_SHADER = 
+  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
+  "attribute vec2 a_miter_direction; \n"
+  "attribute vec4 a_position;        \n"
+  "attribute vec3 a_color;           \n"
+  "uniform float u_thickness;        \n"
+  "uniform mat4 u_matrix;            \n"
+  "varying float v_distance;         \n"
+  "varying vec3 v_color;             \n"
+  "void main()                       \n"
+  "{                                 \n"
+  "  v_distance = a_position.z;      \n"
+  "  v_color = a_color;              \n"
+  "  gl_Position = u_matrix * vec4(a_position.xy + a_position.z * a_miter_direction * u_thickness, 0, 1); \n"
+  "}";
+
+
+static const char* FRAGMENT_SHADER = 
+  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
+  "uniform bool u_antialiasing;           \n"
+  "uniform float u_antialiasing_start;    \n"
+  "varying float v_distance;              \n"   // Distance of the point to the segment
+  "varying vec3 v_color;                  \n"
+  "void main()                            \n"
+  "{                                      \n"
+  "  float d = abs(v_distance);           \n"
+  "  if (!u_antialiasing ||               \n"
+  "      d <= u_antialiasing_start)       \n"
+  "    gl_FragColor = vec4(v_color, 1);   \n"
+  "  else if (d >= 1.0)                   \n"
+  "    gl_FragColor = vec4(0, 0, 0, 0);   \n"
+  "  else                                 \n"
+  "  {                                    \n"
+  "    float alpha = 1.0 - smoothstep(u_antialiasing_start, 1.0, d); \n"
+  "    gl_FragColor = vec4(v_color * alpha, alpha); \n"
+  "  }                                    \n"
+  "}";
+
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLLinesProgram::Data::Segment
+    {
+    private:
+      bool    isEmpty_;
+      double  x1_;
+      double  y1_;
+      double  x2_;
+      double  y2_;
+      double  miterX1_;
+      double  miterY1_;
+      double  miterX2_;
+      double  miterY2_;
+
+      Vector  lineAbove_;  // In homogeneous coordinates (size = 3)
+      Vector  lineBelow_;
+
+    public:
+      Segment(const PolylineSceneLayer::Chain& chain,
+              size_t index1,
+              size_t index2) :
+        isEmpty_(false)
+      {
+        if (index1 >= chain.size() ||
+            index2 >= chain.size())
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+        else
+        {
+          const ScenePoint2D& p = chain[index1];
+          const ScenePoint2D& q = chain[index2];
+        
+          x1_ = p.GetX();
+          y1_ = p.GetY();
+          x2_ = q.GetX();
+          y2_ = q.GetY();
+
+          const double dx = x2_ - x1_;
+          const double dy = y2_ - y1_;
+          const double norm = sqrt(dx * dx + dy * dy);
+
+          if (LinearAlgebra::IsCloseToZero(norm))
+          {
+            isEmpty_ = true;
+          }
+          else
+          {
+            isEmpty_ = false;
+            const double normalX = -dy / norm;
+            const double normalY = dx / norm;
+
+            miterX1_ = normalX;
+            miterY1_ = normalY;
+            miterX2_ = normalX;
+            miterY2_ = normalY;
+
+            Vector a = LinearAlgebra::CreateVector(x1_ + normalX, y1_ + normalY, 1);
+            Vector b = LinearAlgebra::CreateVector(x2_ + normalX, y2_ + normalY, 1);
+            LinearAlgebra::CrossProduct(lineAbove_, a, b);
+
+            a = LinearAlgebra::CreateVector(x1_ - normalX, y1_ - normalY, 1);
+            b = LinearAlgebra::CreateVector(x2_ - normalX, y2_ - normalY, 1);
+            LinearAlgebra::CrossProduct(lineBelow_, a, b);
+          }
+        }
+      }
+
+      bool IsEmpty() const
+      {
+        return isEmpty_;
+      }
+
+      static double ComputeSignedArea(double x1,
+                                      double y1,
+                                      double x2,
+                                      double y2,
+                                      double x3,
+                                      double y3)
+      {
+        // This computes the signed area of a 2D triangle. This
+        // formula is e.g. used in the sorting algorithm of Graham's
+        // scan to compute the convex hull.
+        // https://en.wikipedia.org/wiki/Graham_scan
+        return (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1);
+      }
+
+      static void CreateMiter(Segment& left,
+                              Segment& right)
+      {
+        if (!left.IsEmpty() &&
+            !right.IsEmpty())
+        {
+          Vector above, below;
+          LinearAlgebra::CrossProduct(above, left.lineAbove_, right.lineAbove_);
+          LinearAlgebra::CrossProduct(below, left.lineBelow_, right.lineBelow_);
+
+          if (!LinearAlgebra::IsCloseToZero(above[2]) &&
+              !LinearAlgebra::IsCloseToZero(below[2]))
+          {
+            // Back to inhomogeneous 2D coordinates
+            above /= above[2];
+            below /= below[2];
+
+            // Check whether "above" and "below" intersection points
+            // are on the half-plane defined by the endpoints of the
+            // two segments. This is an indicator of whether the angle
+            // is too acute.
+            double s1 = ComputeSignedArea(left.x1_, left.y1_,
+                                          above[0], above[1],
+                                          right.x2_, right.y2_);
+            double s2 = ComputeSignedArea(left.x1_, left.y1_,
+                                          below[0], below[1],
+                                          right.x2_, right.y2_);
+            
+            // The two signed areas must have the same sign
+            if (s1 * s2 >= 0)
+            {
+              left.miterX2_ = above[0] - left.x2_;
+              left.miterY2_ = above[1] - left.y2_;
+
+              right.miterX1_ = left.miterX2_;
+              right.miterY1_ = left.miterY2_;
+            }
+          }
+        }
+      }
+
+      void AddTriangles(std::vector<float>& coords,
+                        std::vector<float>& miterDirections,
+                        std::vector<float>& colors,
+                        const Color& color)
+      {
+        if (isEmpty_)
+        {
+          LOG(ERROR) << "OpenGLLinesProgram -- AddTriangles: (isEmpty_)";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+        }
+
+        // First triangle
+        coords.push_back(static_cast<float>(x1_));
+        coords.push_back(static_cast<float>(y1_));
+        coords.push_back(static_cast<float>(1));
+        coords.push_back(static_cast<float>(x2_));
+        coords.push_back(static_cast<float>(y2_));
+        coords.push_back(static_cast<float>(-1));
+        coords.push_back(static_cast<float>(x2_));
+        coords.push_back(static_cast<float>(y2_));
+        coords.push_back(static_cast<float>(1));
+
+        miterDirections.push_back(static_cast<float>(miterX1_));
+        miterDirections.push_back(static_cast<float>(miterY1_));
+        miterDirections.push_back(static_cast<float>(miterX2_));
+        miterDirections.push_back(static_cast<float>(miterY2_));
+        miterDirections.push_back(static_cast<float>(miterX2_));
+        miterDirections.push_back(static_cast<float>(miterY2_));
+        
+        // Second triangle
+        coords.push_back(static_cast<float>(x1_));
+        coords.push_back(static_cast<float>(y1_));
+        coords.push_back(static_cast<float>(1));
+        coords.push_back(static_cast<float>(x1_));
+        coords.push_back(static_cast<float>(y1_));
+        coords.push_back(static_cast<float>(-1));
+        coords.push_back(static_cast<float>(x2_));
+        coords.push_back(static_cast<float>(y2_));
+        coords.push_back(static_cast<float>(-1));
+
+        miterDirections.push_back(static_cast<float>(miterX1_));
+        miterDirections.push_back(static_cast<float>(miterY1_));
+        miterDirections.push_back(static_cast<float>(miterX1_));
+        miterDirections.push_back(static_cast<float>(miterY1_));
+        miterDirections.push_back(static_cast<float>(miterX2_));
+        miterDirections.push_back(static_cast<float>(miterY2_));
+
+        // Add the colors of the 2 triangles (leading to 2 * 3 values)
+        for (unsigned int i = 0; i < 6; i++)
+        {
+          colors.push_back(color.GetRedAsFloat());
+          colors.push_back(color.GetGreenAsFloat());
+          colors.push_back(color.GetBlueAsFloat());
+        }
+      }        
+    };
+
+
+    OpenGLLinesProgram::Data::Data(OpenGL::IOpenGLContext& context,
+                                   const PolylineSceneLayer& layer) :
+      context_(context),
+      verticesCount_(0),
+      thickness_(static_cast<float>(layer.GetThickness()))
+    {
+      if (!context_.IsContextLost())
+      {
+        // High-level reference:
+        // https://mattdesl.svbtle.com/drawing-lines-is-hard
+        // https://forum.libcinder.org/topic/smooth-thick-lines-using-geometry-shader
+
+        size_t countVertices = 0;
+        for (size_t i = 0; i < layer.GetChainsCount(); i++)
+        {
+          size_t countSegments = layer.GetChain(i).size() - 1;
+
+          if (layer.IsClosedChain(i))
+          {
+            countSegments++;
+          }
+
+          // Each segment is made of 2 triangles. One triangle is
+          // defined by 3 points in 2D => 6 vertices per segment.
+          countVertices += countSegments * 2 * 3;
+        }
+
+        std::vector<float>  coords, colors, miterDirections;
+        coords.reserve(countVertices * COMPONENTS_POSITION);
+        colors.reserve(countVertices * COMPONENTS_COLOR);
+        miterDirections.reserve(countVertices * COMPONENTS_MITER);
+
+        for (size_t i = 0; i < layer.GetChainsCount(); i++)
+        {
+          const PolylineSceneLayer::Chain& chain = layer.GetChain(i);
+
+          if (chain.size() > 1)
+          {
+            std::vector<Segment> segments;
+            for (size_t j = 1; j < chain.size(); j++)
+            {
+              segments.push_back(Segment(chain, j - 1, j));
+            }
+
+            if (layer.IsClosedChain(i))
+            {
+              segments.push_back(Segment(chain, chain.size() - 1, 0));
+            }
+
+            // Try and create nice miters
+            for (size_t j = 1; j < segments.size(); j++)
+            {
+              Segment::CreateMiter(segments[j - 1], segments[j]);
+            }
+
+            if (layer.IsClosedChain(i))
+            {
+              Segment::CreateMiter(segments.back(), segments.front());
+            }
+
+            for (size_t j = 0; j < segments.size(); j++)
+            {
+              if (!segments[j].IsEmpty())
+              {
+                segments[j].AddTriangles(coords, miterDirections, colors, layer.GetColor(i));
+              }
+            }
+          }
+        }
+
+        assert(coords.size() == colors.size());
+
+        if (!coords.empty())
+        {
+          verticesCount_ = coords.size() / COMPONENTS_POSITION;
+
+          context_.MakeCurrent();
+          glGenBuffers(3, buffers_);
+
+          glBindBuffer(GL_ARRAY_BUFFER, buffers_[0]);
+          glBufferData(GL_ARRAY_BUFFER, sizeof(float) * coords.size(), &coords[0], GL_STATIC_DRAW);
+
+          glBindBuffer(GL_ARRAY_BUFFER, buffers_[1]);
+          glBufferData(GL_ARRAY_BUFFER, sizeof(float) * miterDirections.size(), &miterDirections[0], GL_STATIC_DRAW);
+
+          glBindBuffer(GL_ARRAY_BUFFER, buffers_[2]);
+          glBufferData(GL_ARRAY_BUFFER, sizeof(float) * colors.size(), &colors[0], GL_STATIC_DRAW);
+        }
+      }
+    }
+
+    
+    OpenGLLinesProgram::Data::~Data()
+    {
+      if (!context_.IsContextLost() && !IsEmpty())
+      {
+        context_.MakeCurrent();
+        ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteBuffers");
+        glDeleteBuffers(3, buffers_);
+      }
+    }
+
+    GLuint OpenGLLinesProgram::Data::GetVerticesBuffer() const
+    {
+      if (IsEmpty())
+      {
+        LOG(ERROR) << "OpenGLLinesProgram::Data::GetVerticesBuffer(): (IsEmpty())";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      else
+      {
+        return buffers_[0];
+      }
+    }
+
+    
+    GLuint OpenGLLinesProgram::Data::GetMiterDirectionsBuffer() const
+    {
+      if (IsEmpty())
+      {
+        LOG(ERROR) << "OpenGLLinesProgram::Data::GetMiterDirectionsBuffer(): (IsEmpty())";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      else
+      {
+        return buffers_[1];
+      }
+    }
+
+
+    GLuint OpenGLLinesProgram::Data::GetColorsBuffer() const
+    {
+      if (IsEmpty())
+      {
+        LOG(ERROR) << "OpenGLLinesProgram::Data::GetColorsBuffer(): (IsEmpty())";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      else
+      {
+        return buffers_[2];
+      }
+    }
+
+
+    OpenGLLinesProgram::OpenGLLinesProgram(OpenGL::IOpenGLContext&  context) :
+      context_(context)
+    {
+      if (!context_.IsContextLost())
+      {
+        context_.MakeCurrent();
+        program_.reset(new OpenGL::OpenGLProgram(context_));
+        program_->CompileShaders(VERTEX_SHADER, FRAGMENT_SHADER);
+      }
+    }
+
+    void OpenGLLinesProgram::Apply(const Data& data,
+                                   const AffineTransform2D& transform,
+                                   bool antialiasing,
+                                   bool scaleIndependantThickness)
+    {
+      if (!context_.IsContextLost() && !data.IsEmpty())
+      {
+        context_.MakeCurrent();
+        program_->Use();
+
+        GLint locationPosition = program_->GetAttributeLocation("a_position");
+        GLint locationMiterDirection = program_->GetAttributeLocation("a_miter_direction");
+        GLint locationColor = program_->GetAttributeLocation("a_color");
+
+        float m[16];
+        transform.ConvertToOpenGLMatrix(m, context_.GetCanvasWidth(), context_.GetCanvasHeight());
+
+        glUniformMatrix4fv(program_->GetUniformLocation("u_matrix"), 1, GL_FALSE, m);
+
+        glBindBuffer(GL_ARRAY_BUFFER, data.GetVerticesBuffer());
+        glEnableVertexAttribArray(locationPosition);
+        glVertexAttribPointer(locationPosition, COMPONENTS_POSITION, GL_FLOAT, GL_FALSE, 0, 0);
+
+        glBindBuffer(GL_ARRAY_BUFFER, data.GetMiterDirectionsBuffer());
+        glEnableVertexAttribArray(locationMiterDirection);
+        glVertexAttribPointer(locationMiterDirection, COMPONENTS_MITER, GL_FLOAT, GL_FALSE, 0, 0);
+
+        glBindBuffer(GL_ARRAY_BUFFER, data.GetColorsBuffer());
+        glEnableVertexAttribArray(locationColor);
+        glVertexAttribPointer(locationColor, COMPONENTS_COLOR, GL_FLOAT, GL_FALSE, 0, 0);
+
+        glUniform1i(program_->GetUniformLocation("u_antialiasing"), (antialiasing ? 1 : 0));
+
+        const double zoom = transform.ComputeZoom();
+        const double thickness = data.GetThickness() / 2.0;
+        const double aliasingBorder = 2.0;  // Border for antialiasing ramp, in pixels
+        assert(aliasingBorder > 0);  // Prevent division by zero with "t1"
+              
+        if (scaleIndependantThickness)
+        {
+          if (antialiasing)
+          {
+            double t1 = std::max(thickness, aliasingBorder);
+            double t0 = std::max(0.0, thickness - aliasingBorder);
+            
+            glUniform1f(program_->GetUniformLocation("u_thickness"), 
+              static_cast<GLfloat>(t1 / zoom));
+            glUniform1f(program_->GetUniformLocation("u_antialiasing_start"), 
+              static_cast<GLfloat>(t0 / t1));
+          }
+          else
+          {
+            glUniform1f(program_->GetUniformLocation("u_thickness"), 
+              static_cast<GLfloat>(thickness / zoom));
+          }
+        }
+        else
+        {
+          if (antialiasing)
+          {
+            double t1 = std::max(thickness, aliasingBorder / zoom);
+            double t0 = std::max(0.0, thickness - aliasingBorder / zoom);
+
+            glUniform1f(program_->GetUniformLocation("u_thickness"), 
+              static_cast<GLfloat>(t1));
+            glUniform1f(program_->GetUniformLocation("u_antialiasing_start"), 
+              static_cast<GLfloat>(t0 / t1));
+          }
+          else
+          {
+            glUniform1f(program_->GetUniformLocation("u_thickness"), 
+              static_cast<GLfloat>(thickness));
+          }
+        }
+
+        if (antialiasing)
+        {
+          glEnable(GL_BLEND);
+          glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+          glDrawArrays(GL_TRIANGLES, 0, 
+            static_cast<GLsizei>(data.GetVerticesCount()));
+          glDisable(GL_BLEND);
+        }
+        else
+        {
+          glDrawArrays(GL_TRIANGLES, 0, 
+            static_cast<GLsizei>(data.GetVerticesCount()));
+        }
+
+        glDisableVertexAttribArray(locationPosition);
+        glDisableVertexAttribArray(locationMiterDirection);
+        glDisableVertexAttribArray(locationColor);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLLinesProgram.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,89 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../OpenGL/IOpenGLContext.h"
+#include "../../OpenGL/OpenGLProgram.h"
+#include "../../Toolbox/AffineTransform2D.h"
+#include "../PolylineSceneLayer.h"
+
+#include <Compatibility.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLLinesProgram : public boost::noncopyable
+    {
+    public:
+      class Data : public boost::noncopyable
+      {
+      private:
+        class Segment;
+        
+        OpenGL::IOpenGLContext&  context_;
+        GLuint                   buffers_[3];
+        size_t                   verticesCount_;
+        float                    thickness_;
+
+      public:
+        Data(OpenGL::IOpenGLContext& context,
+             const PolylineSceneLayer& layer);
+        
+        ~Data();
+
+        bool IsEmpty() const
+        {
+          return verticesCount_ == 0;
+        }
+
+        const size_t GetVerticesCount() const
+        {
+          return verticesCount_;
+        }
+
+        GLuint GetVerticesBuffer() const;
+
+        GLuint GetMiterDirectionsBuffer() const;
+
+        GLuint GetColorsBuffer() const;
+
+        float GetThickness() const
+        {
+          return thickness_;
+        }
+      };
+      
+    private:
+      OpenGL::IOpenGLContext&               context_;
+      std::unique_ptr<OpenGL::OpenGLProgram>  program_;
+
+    public:
+      OpenGLLinesProgram(OpenGL::IOpenGLContext&  context);
+
+      void Apply(const Data& data,
+                 const AffineTransform2D& transform,
+                 bool antialiasing,
+                 bool scaleIndependantThickness);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLLookupTableTextureRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,89 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLLookupTableTextureRenderer.h"
+
+#include "../../Toolbox/ImageToolbox.h"
+
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void OpenGLLookupTableTextureRenderer::LoadTexture(
+      const LookupTableTextureSceneLayer& layer)
+    {
+      if (!context_.IsContextLost())
+      {
+        const Orthanc::ImageAccessor& source = layer.GetTexture();
+        const unsigned int width = source.GetWidth();
+        const unsigned int height = source.GetHeight();
+
+        if (texture_.get() == NULL ||
+            texture_->GetWidth() != width ||
+            texture_->GetHeight() != height)
+        {
+          texture_.reset(new Orthanc::Image(Orthanc::PixelFormat_RGBA32, width, height, false));
+        }
+
+        layer.Render(*texture_);
+
+        context_.MakeCurrent();
+        glTexture_.reset(new OpenGL::OpenGLTexture(context_));
+        glTexture_->Load(*texture_, layer.IsLinearInterpolation());
+        layerTransform_ = layer.GetTransform();
+      }
+    }
+
+    OpenGLLookupTableTextureRenderer::OpenGLLookupTableTextureRenderer(
+      OpenGL::IOpenGLContext&                 context,
+      OpenGLColorTextureProgram&              program,
+      const LookupTableTextureSceneLayer&     layer)
+      : context_(context)
+      , program_(program)
+    {
+      LoadTexture(layer);
+    }
+
+    
+    void OpenGLLookupTableTextureRenderer::Render(const AffineTransform2D& transform,
+                                                  unsigned int canvasWidth,
+                                                  unsigned int canvasHeight)
+    {
+      if (!context_.IsContextLost() && glTexture_.get() != NULL)
+      {
+        program_.Apply(
+          *glTexture_, 
+          AffineTransform2D::Combine(transform, layerTransform_), 
+          true);
+      }
+    }
+
+    
+    void OpenGLLookupTableTextureRenderer::Update(const ISceneLayer& layer)
+    {
+      // Should never happen (no revisions in color textures)
+      LoadTexture(dynamic_cast<const LookupTableTextureSceneLayer&>(layer));
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLLookupTableTextureRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,58 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OpenGLColorTextureProgram.h"
+#include "CompositorHelper.h"
+#include "../LookupTableTextureSceneLayer.h"
+
+#include <Images/Image.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLLookupTableTextureRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      OpenGL::IOpenGLContext&                context_;
+      OpenGLColorTextureProgram&             program_;
+      std::unique_ptr<OpenGL::OpenGLTexture>   glTexture_;
+      std::unique_ptr<Orthanc::Image>          texture_;
+      AffineTransform2D                      layerTransform_;
+
+      void LoadTexture(const LookupTableTextureSceneLayer& layer);
+
+    public:
+      OpenGLLookupTableTextureRenderer(
+        OpenGL::IOpenGLContext&             context,
+        OpenGLColorTextureProgram&          program,
+        const LookupTableTextureSceneLayer& layer);
+
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight);
+
+      virtual void Update(const ISceneLayer& layer);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLShaderVersionDirective.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,29 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if ORTHANC_ENABLE_WASM == 1
+// https://emscripten.org/docs/optimizing/Optimizing-WebGL.html
+#  define ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE "precision mediump float;\n"
+#else
+#  define ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE "#version 110\n"
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLTextProgram.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,229 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLTextProgram.h"
+#include "OpenGLShaderVersionDirective.h"
+
+#include "../../Fonts/OpenGLTextCoordinates.h"
+
+#include <OrthancException.h>
+
+
+static const unsigned int COMPONENTS = 2;
+
+static const char* VERTEX_SHADER = 
+  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
+  "attribute vec2 a_texcoord;             \n"
+  "attribute vec4 a_position;             \n"
+  "uniform mat4 u_matrix;                 \n"
+  "varying vec2 v_texcoord;               \n"
+  "void main()                            \n"
+  "{                                      \n"
+  "  gl_Position = u_matrix * a_position; \n"
+  "  v_texcoord = a_texcoord;             \n"
+  "}";
+
+static const char* FRAGMENT_SHADER = 
+  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
+  "uniform sampler2D u_texture;                  \n"
+  "uniform vec3 u_color;                         \n"
+  "varying vec2 v_texcoord;                      \n"
+  "void main()                                   \n"
+  "{                                             \n"
+  "  vec4 v = texture2D(u_texture, v_texcoord);  \n"
+  "  gl_FragColor = vec4(u_color * v.w, v.w);    \n"   // Premultiplied alpha
+  "}";
+
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    OpenGLTextProgram::OpenGLTextProgram(OpenGL::IOpenGLContext&  context) :
+      context_(context)
+    {
+      if (!context_.IsContextLost())
+      {
+        context_.MakeCurrent();
+
+        program_.reset(new OpenGL::OpenGLProgram(context_));
+        program_->CompileShaders(VERTEX_SHADER, FRAGMENT_SHADER);
+
+        positionLocation_ = program_->GetAttributeLocation("a_position");
+        textureLocation_ = program_->GetAttributeLocation("a_texcoord");
+      }
+    }
+
+
+    OpenGLTextProgram::Data::Data(OpenGL::IOpenGLContext& context,
+                                  const GlyphTextureAlphabet& alphabet,
+                                  const TextSceneLayer& layer) :
+      context_(context),
+      red_(layer.GetColor().GetRedAsFloat()),
+      green_(layer.GetColor().GetGreenAsFloat()),
+      blue_(layer.GetColor().GetBlueAsFloat()),
+      x_(layer.GetX()),
+      y_(layer.GetY()),
+      border_(layer.GetBorder()),
+      anchor_(layer.GetAnchor())
+    {
+      OpenGL::OpenGLTextCoordinates coordinates(alphabet, layer.GetText());
+      textWidth_ = coordinates.GetTextWidth();
+      textHeight_ = coordinates.GetTextHeight();
+
+      if (coordinates.IsEmpty())
+      {
+        coordinatesCount_ = 0;
+      }
+      else
+      {
+        coordinatesCount_ = coordinates.GetRenderingCoords().size();
+
+        if (!context_.IsContextLost())
+        {
+          context_.MakeCurrent();
+          glGenBuffers(2, buffers_);
+          ORTHANC_OPENGL_CHECK("glGenBuffers");
+
+          glBindBuffer(GL_ARRAY_BUFFER, buffers_[0]);
+          ORTHANC_OPENGL_CHECK("glBindBuffer");
+          glBufferData(GL_ARRAY_BUFFER, sizeof(float) * coordinatesCount_,
+            &coordinates.GetRenderingCoords()[0], GL_STATIC_DRAW);
+          ORTHANC_OPENGL_CHECK("glBufferData");
+
+          glBindBuffer(GL_ARRAY_BUFFER, buffers_[1]);
+          ORTHANC_OPENGL_CHECK("glBindBuffer");
+          glBufferData(GL_ARRAY_BUFFER, sizeof(float) * coordinatesCount_,
+            &coordinates.GetTextureCoords()[0], GL_STATIC_DRAW);
+          ORTHANC_OPENGL_CHECK("glBufferData");
+        }
+      }
+    }
+
+    
+    OpenGLTextProgram::Data::~Data()
+    {
+      if (!context_.IsContextLost() && !IsEmpty())
+      {
+        try
+        {
+          context_.MakeCurrent();
+          ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteBuffers");
+          glDeleteBuffers(2, buffers_);
+          ORTHANC_OPENGL_CHECK("glDeleteBuffers");
+        }
+        catch (const Orthanc::OrthancException& e)
+        {
+          if (e.HasDetails())
+          {
+            LOG(ERROR) << "OrthancException in ~Data: " << e.What() << " Details: " << e.GetDetails();
+          }
+          else
+          {
+            LOG(ERROR) << "OrthancException in ~Data: " << e.What();
+          }
+        }
+        catch (const std::exception& e)
+        {
+          LOG(ERROR) << "std::exception in ~Data: " << e.what();
+        }
+        catch (...)
+        {
+          LOG(ERROR) << "Unknown exception in ~Data";
+        }
+      }
+    }
+
+
+    GLuint OpenGLTextProgram::Data::GetSceneLocationsBuffer() const
+    {
+      if (IsEmpty())
+      {
+        LOG(ERROR) << "OpenGLTextProgram::Data::GetSceneLocationsBuffer(): (IsEmpty())";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      else
+      {
+        return buffers_[0];
+      }
+    }
+
+    GLuint OpenGLTextProgram::Data::GetTextureLocationsBuffer() const
+    {
+      if (IsEmpty())
+      {
+        LOG(ERROR) << "OpenGLTextProgram::Data::GetTextureLocationsBuffer(): (IsEmpty())";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      else
+      {
+        return buffers_[1];
+      }
+    }
+
+    void OpenGLTextProgram::Apply(OpenGL::OpenGLTexture& fontTexture,
+                                  const Data& data,
+                                  const AffineTransform2D& transform)
+    {
+      if (!context_.IsContextLost() && !data.IsEmpty())
+      {
+        context_.MakeCurrent();
+        program_->Use();
+
+        double dx, dy;  // In pixels
+        ComputeAnchorTranslation(dx, dy, data.GetAnchor(), 
+                                 data.GetTextWidth(), data.GetTextHeight(),
+                                 static_cast<unsigned int>(data.GetBorder()));
+      
+        double x = data.GetX();
+        double y = data.GetY();
+        transform.Apply(x, y);
+
+        const AffineTransform2D t = AffineTransform2D::CreateOffset(x + dx, y + dy);
+
+        float m[16];
+        t.ConvertToOpenGLMatrix(m, context_.GetCanvasWidth(), context_.GetCanvasHeight());
+
+        fontTexture.Bind(program_->GetUniformLocation("u_texture"));
+        glUniformMatrix4fv(program_->GetUniformLocation("u_matrix"), 1, GL_FALSE, m);
+        glUniform3f(program_->GetUniformLocation("u_color"), 
+                    data.GetRed(), data.GetGreen(), data.GetBlue());
+
+        glBindBuffer(GL_ARRAY_BUFFER, data.GetSceneLocationsBuffer());
+        glEnableVertexAttribArray(positionLocation_);
+        glVertexAttribPointer(positionLocation_, COMPONENTS, GL_FLOAT, GL_FALSE, 0, 0);
+
+        glBindBuffer(GL_ARRAY_BUFFER, data.GetTextureLocationsBuffer());
+        glEnableVertexAttribArray(textureLocation_);
+        glVertexAttribPointer(textureLocation_, COMPONENTS, GL_FLOAT, GL_FALSE, 0, 0);
+
+        glEnable(GL_BLEND);
+        glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+        glDrawArrays(GL_TRIANGLES, 0, 
+          static_cast<GLsizei>(data.GetCoordinatesCount() / COMPONENTS));
+        glDisable(GL_BLEND);
+
+        glDisableVertexAttribArray(positionLocation_);
+        glDisableVertexAttribArray(textureLocation_);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLTextProgram.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,137 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../Fonts/GlyphTextureAlphabet.h"
+#include "../../OpenGL/IOpenGLContext.h"
+#include "../../OpenGL/OpenGLProgram.h"
+#include "../../OpenGL/OpenGLTexture.h"
+#include "../../Toolbox/AffineTransform2D.h"
+#include "../TextSceneLayer.h"
+
+#include <Compatibility.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLTextProgram : public boost::noncopyable
+    {
+    public:
+      class Data : public boost::noncopyable
+      {
+      private:
+        OpenGL::IOpenGLContext&  context_;
+        size_t                   coordinatesCount_;
+        GLuint                   buffers_[2];
+        float                    red_;
+        float                    green_;
+        float                    blue_;
+        double                   x_;
+        double                   y_;
+        double                   border_;
+        unsigned int             textWidth_;
+        unsigned int             textHeight_;
+        BitmapAnchor             anchor_;
+
+      public:
+        Data(OpenGL::IOpenGLContext& context,
+             const GlyphTextureAlphabet& alphabet,
+             const TextSceneLayer& layer);
+
+        ~Data();
+
+        bool IsEmpty() const
+        {
+          return coordinatesCount_ == 0;
+        }
+
+        size_t GetCoordinatesCount() const
+        {
+          return coordinatesCount_;
+        }
+
+        GLuint GetSceneLocationsBuffer() const;
+
+        GLuint GetTextureLocationsBuffer() const;
+
+        float GetRed() const
+        {
+          return red_;
+        }
+
+        float GetGreen() const
+        {
+          return green_;
+        }
+
+        float GetBlue() const
+        {
+          return blue_;
+        }
+
+        double GetX() const
+        {
+          return x_;
+        }
+
+        double GetY() const
+        {
+          return y_;
+        }
+
+        double GetBorder() const
+        {
+          return border_;
+        }
+
+        unsigned int GetTextWidth() const
+        {
+          return textWidth_;
+        }
+
+        unsigned int GetTextHeight() const
+        {
+          return textHeight_;
+        }
+
+        BitmapAnchor GetAnchor() const
+        {
+          return anchor_;
+        }
+      };
+      
+    private:
+      OpenGL::IOpenGLContext&               context_;
+      std::unique_ptr<OpenGL::OpenGLProgram>  program_;
+      GLint                                 positionLocation_;
+      GLint                                 textureLocation_;
+
+    public:
+      OpenGLTextProgram(OpenGL::IOpenGLContext&  context);
+
+      void Apply(OpenGL::OpenGLTexture& fontTexture,
+                 const Data& data,
+                 const AffineTransform2D& transform);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLTextRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,66 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLTextRenderer.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void OpenGLTextRenderer::LoadLayer(const TextSceneLayer& layer)
+    {
+      if (!context_.IsContextLost())
+        data_.reset(new OpenGLTextProgram::Data(context_, alphabet_, layer));
+      else
+        data_.reset(NULL);
+    }
+
+
+    OpenGLTextRenderer::OpenGLTextRenderer(OpenGL::IOpenGLContext& context,
+                                           OpenGLTextProgram& program,
+                                           const GlyphTextureAlphabet& alphabet,
+                                           OpenGL::OpenGLTexture& texture,
+                                           const TextSceneLayer& layer) :
+      context_(context),
+      program_(program),
+      alphabet_(alphabet),
+      texture_(texture)
+    {
+      LoadLayer(layer);
+    }
+
+      
+    void OpenGLTextRenderer::Render(const AffineTransform2D& transform,
+                                    unsigned int canvasWidth,
+                                    unsigned int canvasHeight)
+    {
+      if (!context_.IsContextLost() && data_.get() != NULL)
+      {
+        program_.Apply(texture_, *data_, transform);
+      }
+    }
+
+    void OpenGLTextRenderer::Update(const ISceneLayer& layer)
+    {
+      LoadLayer(dynamic_cast<const TextSceneLayer&>(layer));
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLTextRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,56 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "CompositorHelper.h"
+#include "OpenGLTextProgram.h"
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLTextRenderer : public CompositorHelper::ILayerRenderer
+    {
+    private:
+      OpenGL::IOpenGLContext&                 context_;
+      OpenGLTextProgram&                      program_;
+      const GlyphTextureAlphabet&             alphabet_;
+      OpenGL::OpenGLTexture&                  texture_;
+      std::unique_ptr<OpenGLTextProgram::Data>  data_;
+
+      void LoadLayer(const TextSceneLayer& layer);
+
+    public:
+      OpenGLTextRenderer(OpenGL::IOpenGLContext& context,
+                         OpenGLTextProgram& program,
+                         const GlyphTextureAlphabet& alphabet,
+                         OpenGL::OpenGLTexture& texture,
+                         const TextSceneLayer& layer);
+
+      virtual void Render(const AffineTransform2D& transform,
+                          unsigned int canvasWidth,
+                          unsigned int canvasHeight);
+
+      virtual void Update(const ISceneLayer& layer);
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLTextureProgram.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,137 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OpenGLTextureProgram.h"
+#include "OpenGLShaderVersionDirective.h"
+
+#include <OrthancException.h>
+
+static const unsigned int COMPONENTS = 2;
+static const unsigned int COUNT = 6;  // 2 triangles in 2D
+
+static const char* VERTEX_SHADER = 
+  ORTHANC_STONE_OPENGL_SHADER_VERSION_DIRECTIVE
+  "attribute vec2 a_texcoord;             \n"
+  "attribute vec4 a_position;             \n"
+  "uniform mat4 u_matrix;                 \n"
+  "varying vec2 v_texcoord;               \n"
+  "void main()                            \n"
+  "{                                      \n"
+  "  gl_Position = u_matrix * a_position; \n"
+  "  v_texcoord = a_texcoord;             \n"
+  "}";
+
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    void OpenGLTextureProgram::InitializeExecution(OpenGL::OpenGLTexture& texture,
+                                                   const AffineTransform2D& transform)
+    {
+      if (!context_.IsContextLost())
+      {
+        context_.MakeCurrent();
+        program_->Use();
+
+        AffineTransform2D scale = AffineTransform2D::CreateScaling
+        (texture.GetWidth(), texture.GetHeight());
+
+        AffineTransform2D t = AffineTransform2D::Combine(transform, scale);
+
+        float m[16];
+        t.ConvertToOpenGLMatrix(m, context_.GetCanvasWidth(), context_.GetCanvasHeight());
+
+        texture.Bind(program_->GetUniformLocation("u_texture"));
+        glUniformMatrix4fv(program_->GetUniformLocation("u_matrix"), 1, GL_FALSE, m);
+
+        glBindBuffer(GL_ARRAY_BUFFER, buffers_[0]);
+        glEnableVertexAttribArray(positionLocation_);
+        glVertexAttribPointer(positionLocation_, COMPONENTS, GL_FLOAT, GL_FALSE, 0, 0);
+
+        glBindBuffer(GL_ARRAY_BUFFER, buffers_[1]);
+        glEnableVertexAttribArray(textureLocation_);
+        glVertexAttribPointer(textureLocation_, COMPONENTS, GL_FLOAT, GL_FALSE, 0, 0);
+      }
+    }
+
+    void OpenGLTextureProgram::FinalizeExecution()
+    {
+      if (!context_.IsContextLost())
+      {
+        glDisableVertexAttribArray(positionLocation_);
+        glDisableVertexAttribArray(textureLocation_);
+      }
+    }
+
+    OpenGLTextureProgram::OpenGLTextureProgram(OpenGL::IOpenGLContext& context,
+                                               const char* fragmentShader) :
+      context_(context)
+    {
+      static const float POSITIONS[COMPONENTS * COUNT] = {
+        0, 0,
+        0, 1,
+        1, 0,
+        1, 0,
+        0, 1,
+        1, 1
+      };
+
+      if (!context_.IsContextLost())
+      {
+        context_.MakeCurrent();
+
+        program_.reset(new OpenGL::OpenGLProgram(context_));
+        program_->CompileShaders(VERTEX_SHADER, fragmentShader);
+
+        positionLocation_ = program_->GetAttributeLocation("a_position");
+        textureLocation_ = program_->GetAttributeLocation("a_texcoord");
+
+        glGenBuffers(2, buffers_);
+
+        glBindBuffer(GL_ARRAY_BUFFER, buffers_[0]);
+        glBufferData(GL_ARRAY_BUFFER, sizeof(float) * COMPONENTS * COUNT, POSITIONS, GL_STATIC_DRAW);
+
+        glBindBuffer(GL_ARRAY_BUFFER, buffers_[1]);
+        glBufferData(GL_ARRAY_BUFFER, sizeof(float) * COMPONENTS * COUNT, POSITIONS, GL_STATIC_DRAW);
+      }
+    }
+
+    OpenGLTextureProgram::~OpenGLTextureProgram()
+    {
+      if (!context_.IsContextLost())
+      {
+        ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("OpenGLTextureProgram::~OpenGLTextureProgram() | About to call glDeleteBuffers");
+        context_.MakeCurrent();
+        glDeleteBuffers(2, buffers_);
+      }
+    }
+
+
+    void OpenGLTextureProgram::Execution::DrawTriangles()
+    {
+      if (!that_.context_.IsContextLost())
+      {
+        glDrawArrays(GL_TRIANGLES, 0, COUNT);
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Internals/OpenGLTextureProgram.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,83 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../../OpenGL/IOpenGLContext.h"
+#include "../../OpenGL/OpenGLProgram.h"
+#include "../../OpenGL/OpenGLTexture.h"
+#include "../../Toolbox/AffineTransform2D.h"
+
+#include <Compatibility.h>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class OpenGLTextureProgram : public boost::noncopyable
+    {
+    private:
+      OpenGL::IOpenGLContext&               context_;
+      std::unique_ptr<OpenGL::OpenGLProgram>  program_;
+      GLint                                 positionLocation_;
+      GLint                                 textureLocation_;
+      GLuint                                buffers_[2];
+
+      void InitializeExecution(OpenGL::OpenGLTexture& texture,
+                               const AffineTransform2D& transform);
+
+      void FinalizeExecution();
+
+    public:
+      OpenGLTextureProgram(OpenGL::IOpenGLContext& context,
+                           const char* fragmentShader);
+
+      ~OpenGLTextureProgram();
+
+      class Execution : public boost::noncopyable
+      {
+      private:
+        OpenGLTextureProgram&  that_;
+
+      public:
+        Execution(OpenGLTextureProgram& that,
+                  OpenGL::OpenGLTexture& texture,
+                  const AffineTransform2D& transform) :
+          that_(that)
+        {
+          that_.InitializeExecution(texture, transform);
+        }
+
+        ~Execution()
+        {
+          that_.FinalizeExecution();
+        }
+
+        void DrawTriangles();
+
+        GLint GetUniformLocation(const std::string& name)
+        {
+          return that_.program_->GetUniformLocation(name);
+        }
+      };
+    };
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/LookupTableStyleConfigurator.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,109 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "LookupTableStyleConfigurator.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  static void StringToVector(std::vector<uint8_t>& target,
+    const std::string& source)
+  {
+    target.resize(source.size());
+
+    for (size_t i = 0; i < source.size(); i++)
+    {
+      target[i] = source[i];
+    }
+  }
+
+  LookupTableStyleConfigurator::LookupTableStyleConfigurator() :
+    revision_(0),
+    hasLut_(false),
+    hasRange_(false),
+    applyLog_(false)
+  {
+  }
+
+  void LookupTableStyleConfigurator::SetLookupTable(const std::vector<uint8_t>& lut)
+  {
+    hasLut_ = true;
+    lut_ = lut;
+    revision_++;
+  }
+
+  void LookupTableStyleConfigurator::SetLookupTable(const std::string& lut)
+  {
+    std::vector<uint8_t> tmp;
+    StringToVector(tmp, lut);
+    SetLookupTable(tmp);
+  }
+
+  void LookupTableStyleConfigurator::SetRange(float minValue,
+                                              float maxValue)
+  {
+    if (minValue > maxValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      if ((!hasRange_) || (minValue_ != minValue) || (maxValue_ != maxValue))
+        revision_++;
+      hasRange_ = true;
+      minValue_ = minValue;
+      maxValue_ = maxValue;
+    }
+  }
+
+  void LookupTableStyleConfigurator::SetApplyLog(bool apply)
+  {
+    applyLog_ = apply;
+    revision_++;
+  }
+
+  TextureBaseSceneLayer* LookupTableStyleConfigurator::CreateTextureFromImage(const Orthanc::ImageAccessor& image) const
+  {
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+  }
+
+  void LookupTableStyleConfigurator::ApplyStyle(ISceneLayer& layer) const
+  {
+    LookupTableTextureSceneLayer& l = dynamic_cast<LookupTableTextureSceneLayer&>(layer);
+      
+    if (hasLut_)
+    {
+      l.SetLookupTable(lut_);
+    }
+
+    if (hasRange_)
+    {
+      l.SetRange(minValue_, maxValue_);
+    }
+    else
+    {
+      l.FitRange();
+    }
+
+    l.SetApplyLog(applyLog_);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/LookupTableStyleConfigurator.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,77 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ILayerStyleConfigurator.h"
+
+namespace OrthancStone
+{
+  /**
+  This configurator supplies an API to set a display range and a LUT.
+  */
+  class LookupTableStyleConfigurator : public ILayerStyleConfigurator
+  {
+  private:
+    uint64_t              revision_;
+    bool                  hasLut_;
+    std::vector<uint8_t>  lut_;
+    bool                  hasRange_;
+    float                 minValue_;
+    float                 maxValue_;
+    bool                  applyLog_;
+
+  public:
+    LookupTableStyleConfigurator();
+
+    void SetLookupTable(const std::string& lut);
+
+    /**
+     See the SetLookupTable(const std::vector<uint8_t>& lut) method in the
+     LookupTableTextureSceneLayer class.
+     */
+    void SetLookupTable(const std::vector<uint8_t>& lut);
+
+    void SetRange(float minValue, float maxValue);
+
+    void SetApplyLog(bool apply);
+
+    bool IsApplyLog() const
+    {
+      return applyLog_;
+    }
+    
+    virtual uint64_t GetRevision() const
+    {
+      return revision_;
+    }
+
+    virtual TextureBaseSceneLayer* CreateTextureFromImage(const Orthanc::ImageAccessor& image) const;
+
+    virtual TextureBaseSceneLayer* CreateTextureFromDicom(const Orthanc::ImageAccessor& frame,
+                                                          const DicomInstanceParameters& parameters) const
+    {
+      return parameters.CreateLookupTableTexture(frame);
+    }
+
+    virtual void ApplyStyle(ISceneLayer& layer) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/LookupTableTextureSceneLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,311 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "LookupTableTextureSceneLayer.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  LookupTableTextureSceneLayer::LookupTableTextureSceneLayer(const Orthanc::ImageAccessor& texture) :
+    applyLog_(false)
+  {
+    {
+      std::unique_ptr<Orthanc::ImageAccessor> t(
+        new Orthanc::Image(Orthanc::PixelFormat_Float32, 
+                           texture.GetWidth(), 
+                           texture.GetHeight(), 
+                           false));
+
+      Orthanc::ImageProcessing::Convert(*t, texture);
+      SetTexture(t.release());
+    }
+
+    SetLookupTableGrayscale(); // simple ramp between 0 and 255
+    SetRange(0, 1);
+  }
+
+
+  void LookupTableTextureSceneLayer::SetLookupTableGrayscale()
+  {
+    std::vector<uint8_t> rgb(3 * 256);
+
+    for (size_t i = 0; i < 256; i++)
+    {
+      rgb[3 * i]     = static_cast<uint8_t>(i);
+      rgb[3 * i + 1] = static_cast<uint8_t>(i);
+      rgb[3 * i + 2] = static_cast<uint8_t>(i);
+    }
+
+    SetLookupTableRgb(rgb);
+  }  
+
+
+  void LookupTableTextureSceneLayer::SetLookupTableRgb(const std::vector<uint8_t>& lut)
+  {
+    if (lut.size() != 3 * 256)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    lut_.resize(4 * 256);
+
+    for (size_t i = 0; i < 256; i++)
+    {
+      // Premultiplied alpha
+      
+      if (i == 0)
+      {
+        // Make zero transparent
+        lut_[4 * i] = 0;        // R
+        lut_[4 * i + 1] = 0;    // G
+        lut_[4 * i + 2] = 0;    // B
+        lut_[4 * i + 3] = 0;    // A
+      }
+      else
+      {
+        float a = static_cast<float>(i) / 255.0f;
+        
+        float r = static_cast<float>(lut[3 * i]) * a;
+        float g = static_cast<float>(lut[3 * i + 1]) * a;
+        float b = static_cast<float>(lut[3 * i + 2]) * a;
+        
+        lut_[4 * i] = static_cast<uint8_t>(std::floor(r));
+        lut_[4 * i + 1] = static_cast<uint8_t>(std::floor(g));
+        lut_[4 * i + 2] = static_cast<uint8_t>(std::floor(b));
+        lut_[4 * i + 3] = static_cast<uint8_t>(std::floor(a * 255.0f));
+      }
+    }
+
+    IncrementRevision();
+  }
+
+
+  void LookupTableTextureSceneLayer::SetLookupTable(const std::vector<uint8_t>& lut)
+  {
+    if (lut.size() == 4 * 256)
+    {
+      lut_ = lut;
+      IncrementRevision();
+    }
+    else if (lut.size() == 3 * 256)
+    {
+      SetLookupTableRgb(lut);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+  void LookupTableTextureSceneLayer::SetRange(float minValue,
+                                              float maxValue)
+  {
+    if (minValue > maxValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      minValue_ = minValue;
+      maxValue_ = maxValue;
+      IncrementRevision();
+    }
+  }
+
+  void LookupTableTextureSceneLayer::SetApplyLog(bool apply)
+  {
+    applyLog_ = apply;
+    IncrementRevision();
+  }
+
+  void LookupTableTextureSceneLayer::FitRange()
+  {
+    Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue_, maxValue_, GetTexture());
+    assert(minValue_ <= maxValue_);
+    // TODO: debug to be removed
+    if (fabs(maxValue_ - minValue_) < 0.0001) {
+      LOG(INFO) << "LookupTableTextureSceneLayer::FitRange(): minValue_ = " << minValue_ << " maxValue_ = " << maxValue_;
+    }
+    IncrementRevision();
+  }
+
+    
+  ISceneLayer* LookupTableTextureSceneLayer::Clone() const
+  {
+    std::unique_ptr<LookupTableTextureSceneLayer> cloned
+      (new LookupTableTextureSceneLayer(GetTexture()));
+
+
+    // TODO: why is windowing_ not copied??????
+    cloned->CopyParameters(*this);
+    cloned->minValue_ = minValue_;
+    cloned->maxValue_ = maxValue_;
+    cloned->lut_ = lut_;
+
+    return cloned.release();
+  }
+
+
+  // Templatized function to speed up computations, by avoiding
+  // testing conditions on each pixel
+  template <bool IsApplyLog,
+            Orthanc::PixelFormat TargetFormat>
+  static void RenderInternal(Orthanc::ImageAccessor& target,
+                             const Orthanc::ImageAccessor& source,
+                             float minValue,
+                             float slope,
+                             const std::vector<uint8_t>& lut)
+  {
+    static const float LOG_NORMALIZATION = 255.0f / log(1.0f + 255.0f);
+
+    const unsigned int width = source.GetWidth();
+    const unsigned int height = source.GetHeight();
+    
+    for (unsigned int y = 0; y < height; y++)
+    {
+      const float* p = reinterpret_cast<const float*>(source.GetConstRow(y));
+      uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
+
+      for (unsigned int x = 0; x < width; x++)
+      {
+        float v = (*p - minValue) * slope;
+        if (v <= 0)
+        {
+          v = 0;
+        }
+        else if (v >= 255)
+        {
+          v = 255;
+        }
+
+        if (IsApplyLog)
+        {
+          // https://theailearner.com/2019/01/01/log-transformation/
+          v = LOG_NORMALIZATION * log(1.0f + static_cast<float>(v));
+        }
+
+        assert(v >= 0.0f && v <= 255.0f);
+
+        uint8_t vv = static_cast<uint8_t>(v);
+
+        switch (TargetFormat)
+        {
+          case Orthanc::PixelFormat_BGRA32:
+            // For Cairo surfaces
+            q[0] = lut[4 * vv + 2];  // B
+            q[1] = lut[4 * vv + 1];  // G
+            q[2] = lut[4 * vv + 0];  // R
+            q[3] = lut[4 * vv + 3];  // A
+            break;
+
+          case Orthanc::PixelFormat_RGBA32:
+            // For OpenGL
+            q[0] = lut[4 * vv + 0];  // R
+            q[1] = lut[4 * vv + 1];  // G
+            q[2] = lut[4 * vv + 2];  // B
+            q[3] = lut[4 * vv + 3];  // A
+            break;
+
+          default:
+            assert(0);
+        }
+            
+        p++;
+        q += 4;
+      }
+    }
+  }
+  
+
+  void LookupTableTextureSceneLayer::Render(Orthanc::ImageAccessor& target) const
+  {
+    assert(sizeof(float) == 4);
+
+    if (!HasTexture())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    const Orthanc::ImageAccessor& source = GetTexture();
+    
+    if (source.GetFormat() != Orthanc::PixelFormat_Float32 ||
+        (target.GetFormat() != Orthanc::PixelFormat_RGBA32 &&
+         target.GetFormat() != Orthanc::PixelFormat_BGRA32))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    if (source.GetWidth() != target.GetWidth() ||
+        source.GetHeight() != target.GetHeight())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize);
+    }
+
+    const float minValue = GetMinValue();
+    float slope;
+
+    if (GetMinValue() >= GetMaxValue())
+    {
+      slope = 0;
+    }
+    else
+    {
+      slope = 256.0f / (GetMaxValue() - GetMinValue());
+    }
+
+    const std::vector<uint8_t>& lut = GetLookupTable();
+    if (lut.size() != 4 * 256)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    switch (target.GetFormat())
+    {
+      case Orthanc::PixelFormat_RGBA32:
+        if (applyLog_)
+        {
+          RenderInternal<true, Orthanc::PixelFormat_RGBA32>(target, source, minValue, slope, lut);
+        }
+        else
+        {
+          RenderInternal<false, Orthanc::PixelFormat_RGBA32>(target, source, minValue, slope, lut);
+        }
+        break;
+
+      case Orthanc::PixelFormat_BGRA32:
+        if (applyLog_)
+        {
+          RenderInternal<true, Orthanc::PixelFormat_BGRA32>(target, source, minValue, slope, lut);
+        }
+        else
+        {
+          RenderInternal<false, Orthanc::PixelFormat_BGRA32>(target, source, minValue, slope, lut);
+        }
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/LookupTableTextureSceneLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,88 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "TextureBaseSceneLayer.h"
+
+namespace OrthancStone
+{
+  class LookupTableTextureSceneLayer : public TextureBaseSceneLayer
+  {
+  private:
+    ImageWindowing        windowing_;
+    float                 minValue_;
+    float                 maxValue_;
+    std::vector<uint8_t>  lut_;
+    bool                  applyLog_;
+
+    void SetLookupTableRgb(const std::vector<uint8_t>& lut);
+
+  public:
+    // The pixel format must be convertible to Float32
+    LookupTableTextureSceneLayer(const Orthanc::ImageAccessor& texture);
+
+    void SetLookupTableGrayscale();
+
+    // The vector must contain either 3 * 256 values (RGB), or 4 * 256
+    // (RGBA). In the RGB case, an alpha channel will be automatically added.
+    void SetLookupTable(const std::vector<uint8_t>& lut);
+
+    void SetRange(float minValue,
+                  float maxValue);
+    
+    void FitRange();
+
+    float GetMinValue() const
+    {
+      return minValue_;
+    }
+
+    float GetMaxValue() const
+    {
+      return maxValue_;
+    }
+
+    // This returns a vector of 4 * 256 values between 0 and 255, in RGBA.
+    const std::vector<uint8_t>& GetLookupTable() const
+    {
+      return lut_;
+    }
+
+    void SetApplyLog(bool apply);
+
+    bool IsApplyLog() const
+    {
+      return applyLog_;
+    }
+
+    virtual ISceneLayer* Clone() const;
+
+    virtual Type GetType() const
+    {
+      return Type_LookupTableTexture;
+    }
+
+    // Render the texture to a color image of format BGRA32 (Cairo
+    // surfaces) or RGBA32 (OpenGL)
+    void Render(Orthanc::ImageAccessor& target) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/NullLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,62 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "ISceneLayer.h"
+
+#include <Enumerations.h>
+
+#include <stdint.h>
+
+/**
+ This layer can be used when a z-index needs to be booked inside a Scene2D.
+
+ It can later be replaced by the actual layer.
+*/
+namespace OrthancStone
+{
+  class NullLayer : public ISceneLayer
+  {
+  public:
+    NullLayer() {}
+
+    virtual ISceneLayer* Clone() const ORTHANC_OVERRIDE
+    {
+      return new NullLayer();
+    }
+
+    virtual Type GetType() const ORTHANC_OVERRIDE
+    {
+      return Type_NullLayer;
+    }
+
+    virtual bool GetBoundingBox(Extent2D& target) const ORTHANC_OVERRIDE
+    {
+      target = Extent2D();
+      return false; 
+    }
+
+    virtual uint64_t GetRevision() const ORTHANC_OVERRIDE
+    {
+      return 0;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/OpenGLCompositor.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,258 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "OpenGLCompositor.h"
+
+#include "Internals/OpenGLAdvancedPolylineRenderer.h"
+#include "Internals/OpenGLBasicPolylineRenderer.h"
+#include "Internals/OpenGLColorTextureRenderer.h"
+#include "Internals/OpenGLFloatTextureRenderer.h"
+#include "Internals/OpenGLInfoPanelRenderer.h"
+#include "Internals/OpenGLLookupTableTextureRenderer.h"
+#include "Internals/OpenGLTextRenderer.h"
+
+namespace OrthancStone
+{
+  class OpenGLCompositor::Font : public boost::noncopyable
+  {
+  private:
+    std::unique_ptr<GlyphTextureAlphabet>   alphabet_;
+    std::unique_ptr<OpenGL::OpenGLTexture>  texture_;
+
+  public:
+    Font(OpenGL::IOpenGLContext& context, const GlyphBitmapAlphabet& dict)
+    {
+      alphabet_.reset(new GlyphTextureAlphabet(dict));
+      texture_.reset(new OpenGL::OpenGLTexture(context));
+
+      std::unique_ptr<Orthanc::ImageAccessor> bitmap(alphabet_->ReleaseTexture());
+      texture_->Load(*bitmap, true /* enable linear interpolation */);
+    }
+
+    OpenGL::OpenGLTexture& GetTexture() const
+    {
+      assert(texture_.get() != NULL);
+      return *texture_;
+    }
+
+    const GlyphTextureAlphabet& GetAlphabet() const
+    {
+      assert(alphabet_.get() != NULL);
+      return *alphabet_;
+    }
+  };
+
+  const OpenGLCompositor::Font* OpenGLCompositor::GetFont(size_t fontIndex) const
+  {
+    Fonts::const_iterator found = fonts_.find(fontIndex);
+
+    if (found == fonts_.end())
+    {
+      return NULL;  // Unknown font, nothing should be drawn
+    }
+    else
+    {
+      assert(found->second != NULL);
+      return found->second;
+    }
+  }
+
+  Internals::CompositorHelper::ILayerRenderer* OpenGLCompositor::Create(const ISceneLayer& layer)
+  {
+    if (!context_.IsContextLost())
+    {
+      switch (layer.GetType())
+      {
+      case ISceneLayer::Type_InfoPanel:
+        return new Internals::OpenGLInfoPanelRenderer
+        (context_, colorTextureProgram_, dynamic_cast<const InfoPanelSceneLayer&>(layer));
+
+      case ISceneLayer::Type_ColorTexture:
+        return new Internals::OpenGLColorTextureRenderer
+        (context_, colorTextureProgram_, dynamic_cast<const ColorTextureSceneLayer&>(layer));
+
+      case ISceneLayer::Type_FloatTexture:
+        return new Internals::OpenGLFloatTextureRenderer
+        (context_, floatTextureProgram_, dynamic_cast<const FloatTextureSceneLayer&>(layer));
+
+      case ISceneLayer::Type_LookupTableTexture:
+        return new Internals::OpenGLLookupTableTextureRenderer
+        (context_, colorTextureProgram_, dynamic_cast<const LookupTableTextureSceneLayer&>(layer));
+
+      case ISceneLayer::Type_Polyline:
+        return new Internals::OpenGLAdvancedPolylineRenderer
+        (context_, linesProgram_, dynamic_cast<const PolylineSceneLayer&>(layer));
+        //return new Internals::OpenGLBasicPolylineRenderer(context_, dynamic_cast<const PolylineSceneLayer&>(layer));
+
+      case ISceneLayer::Type_Text:
+      {
+        const TextSceneLayer& l = dynamic_cast<const TextSceneLayer&>(layer);
+        const Font* font = GetFont(l.GetFontIndex());
+        if (font == NULL)
+        {
+          LOG(WARNING) << "There is no font at index " << l.GetFontIndex();
+          return NULL;
+        }
+        else
+        {
+          return new Internals::OpenGLTextRenderer
+          (context_, textProgram_, font->GetAlphabet(), font->GetTexture(), l);
+        }
+      }
+
+      default:
+        return NULL;
+      }
+    }
+    else
+    {
+      // context is lost. returning null.
+      return NULL;
+    }
+  }
+
+  OpenGLCompositor::OpenGLCompositor(OpenGL::IOpenGLContext& context) :
+    context_(context),
+    colorTextureProgram_(context),
+    floatTextureProgram_(context),
+    linesProgram_(context),
+    textProgram_(context),
+    canvasWidth_(0),
+    canvasHeight_(0)
+  {
+    if (!context_.IsContextLost())
+    {
+      canvasWidth_ = context_.GetCanvasWidth();
+      canvasHeight_ = context_.GetCanvasHeight();
+    }
+
+    ResetScene();
+  }
+
+  OpenGLCompositor::~OpenGLCompositor()
+  {
+    if (!context_.IsContextLost())
+    {
+      try
+      {
+        try
+        {
+          context_.MakeCurrent(); // this can throw if context lost!
+        }
+        catch (...)
+        {
+          LOG(ERROR) << "context_.MakeCurrent() failed in OpenGLCompositor::~OpenGLCompositor()!";
+        }
+
+        for (Fonts::iterator it = fonts_.begin(); it != fonts_.end(); ++it)
+        {
+          try
+          {
+
+            assert(it->second != NULL);
+            delete it->second;
+          }
+          catch (...)
+          {
+            LOG(ERROR) << "Exception thrown while deleting OpenGL-based font!";
+          }
+        }
+      }
+      catch (...)
+      {
+        // logging threw an exception!
+      }
+    }
+  }
+
+  void OpenGLCompositor::Refresh(const Scene2D& scene)
+  {
+    if (!context_.IsContextLost())
+    {
+      context_.MakeCurrent(); // this can throw if context lost!
+      canvasWidth_ = context_.GetCanvasWidth();
+      canvasHeight_ = context_.GetCanvasHeight();
+
+      glViewport(0, 0, canvasWidth_, canvasHeight_);
+      glClearColor(0, 0, 0, 1);
+      glClear(GL_COLOR_BUFFER_BIT);
+
+      helper_->Refresh(scene, canvasWidth_, canvasHeight_);
+
+      context_.SwapBuffer();
+    }
+  }
+
+  void OpenGLCompositor::SetFont(size_t index,
+                                 const GlyphBitmapAlphabet& dict)
+  {
+    if (!context_.IsContextLost())
+    {
+      context_.MakeCurrent(); // this can throw if context lost
+
+      std::unique_ptr<Font> font(new Font(context_, dict));
+
+      Fonts::iterator found = fonts_.find(index);
+
+      if (found == fonts_.end())
+      {
+        fonts_[index] = font.release();
+      }
+      else
+      {
+        assert(found->second != NULL);
+        delete found->second;
+
+        found->second = font.release();
+      }
+    }
+  }
+
+#if ORTHANC_ENABLE_LOCALE == 1
+  void OpenGLCompositor::SetFont(size_t index,
+                                 const std::string& ttf,
+                                 unsigned int fontSize,
+                                 Orthanc::Encoding codepage)
+  {
+    if (!context_.IsContextLost())
+    {
+      FontRenderer renderer;
+      renderer.LoadFont(ttf, fontSize);
+
+      GlyphBitmapAlphabet dict;
+      dict.LoadCodepage(renderer, codepage);
+
+      SetFont(index, dict);
+    }
+  }
+#endif
+
+
+  void OpenGLCompositor::RefreshCanvasSize()
+  {
+    if (!context_.IsContextLost())
+    {
+      context_.MakeCurrent(); // this can throw if context lost!
+      context_.RefreshCanvasSize();  // Difference with Refresh(scene)
+      canvasWidth_ = context_.GetCanvasWidth();
+      canvasHeight_ = context_.GetCanvasHeight();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/OpenGLCompositor.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,87 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ICompositor.h"
+#include "Internals/CompositorHelper.h"
+#include "Internals/OpenGLColorTextureProgram.h"
+#include "Internals/OpenGLFloatTextureProgram.h"
+#include "Internals/OpenGLLinesProgram.h"
+#include "Internals/OpenGLTextProgram.h"
+
+namespace OrthancStone
+{
+  class OpenGLCompositor : public ICompositor, private Internals::CompositorHelper::IRendererFactory
+  {
+  private:
+    class Font;
+
+    typedef std::map<size_t, Font*>  Fonts;
+
+    OpenGL::IOpenGLContext&                     context_;
+    Fonts                                       fonts_;
+    std::unique_ptr<Internals::CompositorHelper>  helper_;
+    Internals::OpenGLColorTextureProgram        colorTextureProgram_;
+    Internals::OpenGLFloatTextureProgram        floatTextureProgram_;
+    Internals::OpenGLLinesProgram               linesProgram_;
+    Internals::OpenGLTextProgram                textProgram_;
+    unsigned int                                canvasWidth_;
+    unsigned int                                canvasHeight_;
+
+    const Font* GetFont(size_t fontIndex) const;
+
+    virtual Internals::CompositorHelper::ILayerRenderer* Create(const ISceneLayer& layer) ORTHANC_OVERRIDE;
+
+  public:
+    OpenGLCompositor(OpenGL::IOpenGLContext& context);
+
+    virtual ~OpenGLCompositor();
+
+    virtual void Refresh(const Scene2D& scene) ORTHANC_OVERRIDE;
+
+    virtual void ResetScene() ORTHANC_OVERRIDE
+    {
+      helper_.reset(new Internals::CompositorHelper(*this));
+    }
+
+    void SetFont(size_t index, const GlyphBitmapAlphabet& dict);
+
+#if ORTHANC_ENABLE_LOCALE == 1
+    void SetFont(size_t index,
+                 const std::string& ttf,
+                 unsigned int fontSize,
+                 Orthanc::Encoding codepage) ORTHANC_OVERRIDE;
+#endif
+
+    virtual void RefreshCanvasSize() ORTHANC_OVERRIDE;
+
+    virtual unsigned int GetCanvasWidth() const ORTHANC_OVERRIDE
+    {
+      return canvasWidth_;
+    }
+
+    virtual unsigned int GetCanvasHeight() const ORTHANC_OVERRIDE
+    {
+      return canvasHeight_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/PanSceneTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,63 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "PanSceneTracker.h"
+#include "../Viewport/IViewport.h"
+#include "../Scene2DViewport/ViewportController.h"
+
+#include <memory>
+
+namespace OrthancStone
+{
+  PanSceneTracker::PanSceneTracker(boost::shared_ptr<IViewport> viewport,
+                                   const PointerEvent& event)
+    : OneGesturePointerTracker(viewport)
+  {
+    
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+
+    originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform();
+    originalCanvasToScene_ = lock->GetController().GetCanvasToSceneTransform();
+
+    pivot_ = event.GetMainPosition().Apply(originalCanvasToScene_);
+  }
+
+
+  void PanSceneTracker::PointerMove(const PointerEvent& event)
+  {
+    ScenePoint2D p = event.GetMainPosition().Apply(originalCanvasToScene_);
+
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+
+    lock->GetController().SetSceneToCanvasTransform(
+      AffineTransform2D::Combine(
+        originalSceneToCanvas_,
+        AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(),
+                                        p.GetY() - pivot_.GetY())));
+    lock->Invalidate();
+  }
+
+  void PanSceneTracker::Cancel()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/PanSceneTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,42 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Scene2DViewport/OneGesturePointerTracker.h"
+
+namespace OrthancStone
+{
+  class PanSceneTracker : public OneGesturePointerTracker
+  {
+  public:
+    PanSceneTracker(boost::shared_ptr<IViewport> viewport,
+                    const PointerEvent& event);
+
+    virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE;
+    virtual void Cancel() ORTHANC_OVERRIDE;
+
+  private:
+    ScenePoint2D           pivot_;
+    AffineTransform2D      originalSceneToCanvas_;
+    AffineTransform2D      originalCanvasToScene_;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/PointerEvent.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,61 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "PointerEvent.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  PointerEvent::PointerEvent() :
+    button_(MouseButton_None),
+    hasAltModifier_(false),
+    hasControlModifier_(false),
+    hasShiftModifier_(false)
+  {
+  }
+
+  
+  ScenePoint2D PointerEvent::GetMainPosition() const
+  {
+    if (positions_.empty())
+    {
+      return ScenePoint2D(0, 0);
+    }
+    else
+    {
+      return positions_[0];
+    }
+  }
+    
+
+  ScenePoint2D PointerEvent::GetPosition(size_t index) const
+  {
+    if (index < positions_.size())
+    {
+      return positions_[index];
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/PointerEvent.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,103 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ScenePoint2D.h"
+
+#include <boost/noncopyable.hpp>
+#include <stdint.h>
+
+namespace OrthancStone
+{
+  class PointerEvent : public boost::noncopyable
+  {
+  private:
+    MouseButton                button_;
+    std::vector<ScenePoint2D>  positions_;
+    bool                       hasAltModifier_;
+    bool                       hasControlModifier_;
+    bool                       hasShiftModifier_;
+
+  public:
+    PointerEvent();
+
+    ScenePoint2D GetMainPosition() const;
+    
+    void AddPosition(const ScenePoint2D& p)
+    {
+      positions_.push_back(p);
+    }
+
+    void AddPosition(double x,
+                     double y)
+    {
+      positions_.push_back(ScenePoint2D(x, y));
+    }
+
+    size_t GetPositionsCount() const
+    {
+      return positions_.size();
+    }
+    
+    ScenePoint2D GetPosition(size_t index) const;
+
+    void SetAltModifier(bool value)
+    {
+      hasAltModifier_ = value;
+    }
+
+    bool HasAltModifier() const
+    {
+      return hasAltModifier_;
+    }
+
+    void SetControlModifier(bool value)
+    {
+      hasControlModifier_ = value;
+    }
+
+    bool HasControlModifier() const
+    {
+      return hasControlModifier_;
+    }
+
+    void SetShiftModifier(bool value)
+    {
+      hasShiftModifier_ = value;
+    }
+
+    bool HasShiftModifier() const
+    {
+      return hasShiftModifier_;
+    }
+
+    void SetMouseButton(MouseButton button)
+    {
+      button_ = button;
+    }
+
+    MouseButton GetMouseButton() const
+    {
+      return button_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/PolylineSceneLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,110 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "PolylineSceneLayer.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  void PolylineSceneLayer::Copy(const PolylineSceneLayer& other)
+  {
+    items_ = other.items_;
+    thickness_ = other.thickness_;
+    revision_ ++;
+  }
+
+  
+  ISceneLayer* PolylineSceneLayer::Clone() const
+  {
+    std::unique_ptr<PolylineSceneLayer> cloned(new PolylineSceneLayer);
+    cloned->Copy(*this);
+    return cloned.release();
+  }
+    
+
+  void PolylineSceneLayer::SetThickness(double thickness)
+  {
+    if (thickness <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      thickness_ = thickness;
+      revision_++;
+    }
+  }
+
+
+  void PolylineSceneLayer::AddChain(const Chain& chain,
+                                    bool isClosed,
+                                    uint8_t red,
+                                    uint8_t green,
+                                    uint8_t blue)
+  {
+    if (!chain.empty())
+    {
+      items_.push_back(Item());
+      items_.back().chain_ = chain;
+      items_.back().closed_ = isClosed;
+      items_.back().color_ = Color(red, green, blue);
+
+      revision_++;
+    }
+  }
+
+
+  void PolylineSceneLayer::ClearAllChains()
+  {
+    items_.clear();
+    revision_++;
+  }
+
+  const PolylineSceneLayer::Item& PolylineSceneLayer::GetItem(size_t i) const
+  {
+    if (i < items_.size())
+    {
+      return items_[i];
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+  
+  bool PolylineSceneLayer::GetBoundingBox(Extent2D& target) const
+  {
+    target.Reset();
+
+    for (size_t i = 0; i < items_.size(); i++)
+    {
+      for (size_t j = 0; j < items_[i].chain_.size(); j++)
+      {
+        const ScenePoint2D& p = items_[i].chain_[j];
+        target.AddPoint(p.GetX(), p.GetY());
+      }
+    }
+
+    return true;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/PolylineSceneLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,122 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "Color.h"
+#include "ScenePoint2D.h"
+#include "ISceneLayer.h"
+
+#include <vector>
+
+namespace OrthancStone
+{
+  class PolylineSceneLayer : public ISceneLayer
+  {
+  public:
+    typedef std::vector<ScenePoint2D>  Chain;
+
+  private:
+    struct Item
+    {
+      Chain  chain_;
+      bool   closed_;
+      Color  color_;
+    };
+    
+    std::vector<Item>  items_;
+    double             thickness_;
+    uint64_t           revision_;
+
+    const Item& GetItem(size_t i) const;
+
+  public:
+    PolylineSceneLayer() :
+      thickness_(1.0),
+      revision_(0)
+    {
+    }
+
+    void Copy(const PolylineSceneLayer& other);
+
+    virtual uint64_t GetRevision() const
+    {
+      return revision_;
+    }
+
+    virtual ISceneLayer* Clone() const;
+
+    void SetThickness(double thickness);
+
+    double GetThickness() const
+    {
+      return thickness_;
+    }
+
+    void Reserve(size_t countChains)
+    {
+      items_.reserve(countChains);
+    }
+
+    void AddChain(const Chain& chain,
+                  bool isClosed,
+                  uint8_t red,
+                  uint8_t green,
+                  uint8_t blue);
+
+    void AddChain(const Chain& chain,
+                  bool isClosed,
+                  const Color& color)
+    {
+      AddChain(chain, isClosed, color.GetRed(), color.GetGreen(), color.GetBlue());
+    }
+
+    void ClearAllChains();
+
+    size_t GetChainsCount() const
+    {
+      return items_.size();
+    }
+
+    const Chain& GetChain(size_t i) const
+    {
+      return GetItem(i).chain_;
+    }
+
+    bool IsClosedChain(size_t i) const
+    {
+      return GetItem(i).closed_;
+    }
+
+    const Color& GetColor(size_t i) const
+    {
+      return GetItem(i).color_;
+    }
+
+    virtual Type GetType() const
+    {
+      return Type_Polyline;
+    }
+
+    virtual bool GetBoundingBox(Extent2D& target) const;
+   
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/RotateSceneTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,73 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "RotateSceneTracker.h"
+#include "../Scene2DViewport/ViewportController.h"
+
+namespace OrthancStone
+{
+  RotateSceneTracker::RotateSceneTracker(boost::shared_ptr<IViewport> viewport,
+                                         const PointerEvent& event)
+    : OneGesturePointerTracker(viewport)
+    , click_(event.GetMainPosition())
+    , aligner_(viewport, click_)
+    , isFirst_(true)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform();
+
+  }
+
+  void RotateSceneTracker::PointerMove(const PointerEvent& event)
+  {
+    ScenePoint2D p = event.GetMainPosition();
+    double dx = p.GetX() - click_.GetX();
+    double dy = p.GetY() - click_.GetY();
+
+    if (std::abs(dx) > 5.0 ||
+        std::abs(dy) > 5.0)
+    {
+      double a = atan2(dy, dx);
+
+      if (isFirst_)
+      {
+        referenceAngle_ = a;
+        isFirst_ = false;
+      }
+
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+
+      lock->GetController().SetSceneToCanvasTransform(
+        AffineTransform2D::Combine(
+          AffineTransform2D::CreateRotation(a - referenceAngle_),
+          originalSceneToCanvas_));
+      aligner_.Apply();
+      lock->Invalidate();
+    }
+  }
+
+  void RotateSceneTracker::Cancel()
+  {
+    // See remark above
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_);
+    lock->Invalidate();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/RotateSceneTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,46 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Scene2DViewport/OneGesturePointerTracker.h"
+#include "Internals/FixedPointAligner.h"
+#include <memory>
+
+namespace OrthancStone
+{
+  class RotateSceneTracker : public OneGesturePointerTracker
+  {
+  public:
+    RotateSceneTracker(boost::shared_ptr<IViewport> viewport,
+                       const PointerEvent& event);
+
+    virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE;
+    virtual void Cancel() ORTHANC_OVERRIDE;
+
+  private:
+    ScenePoint2D                 click_;
+    Internals::FixedPointAligner aligner_;
+    double                       referenceAngle_;
+    bool                         isFirst_;
+    AffineTransform2D            originalSceneToCanvas_;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Scene2D.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,272 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "Scene2D.h"
+
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+  class Scene2D::Item
+  {
+  private:
+    std::unique_ptr<ISceneLayer>  layer_;
+    uint64_t                    identifier_;
+
+  public:
+    Item(ISceneLayer* layer,
+         uint64_t identifier) :
+      layer_(layer),
+      identifier_(identifier)
+    {
+      if (layer == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+
+    ISceneLayer& GetLayer() const
+    {
+      if (layer_.get() == NULL)
+      {
+        LOG(ERROR) << "Scene2D::Item::GetLayer(): (layer_.get() == NULL)";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      else
+      {
+        return *layer_;
+      }
+    }
+
+    ISceneLayer* ReleaseLayer()
+    {
+      if (layer_.get() == NULL)
+      {
+        LOG(ERROR) << "Scene2D::Item::ReleaseLayer(): (layer_.get() == NULL)";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      else
+      {
+        return layer_.release();
+      }
+    }
+
+    uint64_t GetIdentifier() const
+    {
+      return identifier_;
+    }
+  };
+  
+  
+  Scene2D::Scene2D(const Scene2D& other) 
+    : sceneToCanvas_(other.sceneToCanvas_)
+    , canvasToScene_(other.canvasToScene_)
+    , layerCounter_(0)
+  {
+    for (Content::const_iterator it = other.content_.begin();
+         it != other.content_.end(); ++it)
+    {
+      content_[it->first] = new Item(it->second->GetLayer().Clone(), layerCounter_++);
+    }
+  }
+
+    
+  Scene2D::~Scene2D()
+  {
+    for (Content::iterator it = content_.begin(); 
+         it != content_.end(); ++it)
+    {
+      assert(it->second != NULL);
+      delete it->second;
+    }
+  }
+
+
+  void Scene2D::SetLayer(int depth,
+                         ISceneLayer* layer)  // Takes ownership
+  {
+    LOG(TRACE) << "SetLayer(" << depth << ", " << reinterpret_cast<intptr_t>(layer) << ")";
+    std::unique_ptr<Item> item(new Item(layer, layerCounter_++));
+
+    if (layer == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    Content::iterator found = content_.find(depth);
+
+    if (found == content_.end())
+    {
+      content_[depth] = item.release();
+    }
+    else
+    {
+      assert(found->second != NULL);
+      delete found->second;
+      found->second = item.release();
+    }
+  }
+
+
+  void Scene2D::DeleteLayer(int depth)
+  {
+
+    Content::iterator found = content_.find(depth);
+
+    if (found != content_.end())
+    {
+      LOG(TRACE) << "DeleteLayer --found-- (" << depth << ")";
+      assert(found->second != NULL);
+      delete found->second;
+      content_.erase(found);
+    }    
+  }
+
+  
+  bool Scene2D::HasLayer(int depth) const
+  {
+    return (content_.find(depth) != content_.end());
+  }
+
+
+  ISceneLayer& Scene2D::GetLayer(int depth) const
+  {
+    Content::const_iterator found = content_.find(depth);
+
+    if (found == content_.end())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      assert(found->second != NULL);
+      return found->second->GetLayer();
+    }
+  }
+
+  
+  int Scene2D::GetMinDepth() const
+  {
+    if (content_.size() == 0)
+      return 0;
+    else
+      return content_.begin()->first;
+  }
+
+
+  int Scene2D::GetMaxDepth() const
+  {
+    if (content_.size() == 0)
+      return 0;
+    else
+      return content_.rbegin()->first;
+  }
+
+  ISceneLayer* Scene2D::ReleaseLayer(int depth)
+  {
+    Content::iterator found = content_.find(depth);
+
+    if (found == content_.end())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      assert(found->second != NULL);
+
+      std::unique_ptr<ISceneLayer> layer(found->second->ReleaseLayer());
+      assert(layer.get() != NULL);
+
+      content_.erase(found);
+
+      return layer.release();
+    }    
+  }
+
+  void Scene2D::Apply(IVisitor& visitor) const
+  {
+    for (Content::const_iterator it = content_.begin(); 
+         it != content_.end(); ++it)
+    {
+      assert(it->second != NULL);
+      visitor.Visit(*this, it->second->GetLayer(), it->second->GetIdentifier(), it->first);
+    }
+  }
+
+
+  void Scene2D::SetSceneToCanvasTransform(const AffineTransform2D& transform)
+  {
+    // Make sure the transform is invertible before making any change
+    AffineTransform2D inverse = AffineTransform2D::Invert(transform);
+
+    sceneToCanvas_ = transform;
+    canvasToScene_ = inverse;
+  }
+
+  void Scene2D::GetBoundingBox(Extent2D &target) const
+  {
+    target.Reset();
+
+    for (Content::const_iterator it = content_.begin();
+         it != content_.end(); ++it)
+    {
+      assert(it->second != NULL);
+
+      Extent2D tmp;
+      if (it->second->GetLayer().GetBoundingBox(tmp))
+      {
+        target.Union(tmp);
+      }
+    }
+  }
+
+  void Scene2D::FitContent(unsigned int canvasWidth,
+                           unsigned int canvasHeight)
+  {
+    Extent2D extent;
+
+    GetBoundingBox(extent);
+
+    if (!extent.IsEmpty())
+    {
+      double zoomX = static_cast<double>(canvasWidth) / extent.GetWidth();
+      double zoomY = static_cast<double>(canvasHeight) / extent.GetHeight();
+
+      double zoom = std::min(zoomX, zoomY);
+      if (LinearAlgebra::IsCloseToZero(zoom))
+      {
+        zoom = 1;
+      }
+
+      double panX = extent.GetCenterX();
+      double panY = extent.GetCenterY();
+
+      // Bring the center of the scene to (0,0)
+      AffineTransform2D t1 = AffineTransform2D::CreateOffset(-panX, -panY);
+      
+      // Scale the scene
+      AffineTransform2D t2 = AffineTransform2D::CreateScaling(zoom, zoom);
+
+      SetSceneToCanvasTransform(AffineTransform2D::Combine(t2, t1));
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/Scene2D.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,120 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ISceneLayer.h"
+#include "../Toolbox/AffineTransform2D.h"
+#include "../Messages/IObservable.h"
+#include "../Messages/IMessage.h"
+
+#include <map>
+
+namespace OrthancStone
+{
+  class Scene2D : public boost::noncopyable
+  {
+  public:
+    class IVisitor : public boost::noncopyable
+    {
+    public:
+      virtual ~IVisitor()
+      {
+      }
+
+      virtual void Visit(const Scene2D& scene,
+                         const ISceneLayer& layer,
+                         uint64_t layerIdentifier,
+                         int depth) = 0;
+    };
+
+  private:
+    class Item;
+    
+    typedef std::map<int, Item*>  Content;
+
+    Content            content_;
+    AffineTransform2D  sceneToCanvas_;
+    AffineTransform2D  canvasToScene_;
+    uint64_t           layerCounter_;
+
+    Scene2D(const Scene2D& other);
+    
+  public:
+    Scene2D() : layerCounter_(0)
+    {
+    }
+    
+    ~Scene2D();
+
+    Scene2D* Clone() const
+    {
+      return new Scene2D(*this);
+    }
+
+    void SetLayer(int depth,
+                  ISceneLayer* layer);  // Takes ownership
+
+    /**
+    Removes the layer at specified depth and deletes the underlying object
+    */
+    void DeleteLayer(int depth);
+
+    bool HasLayer(int depth) const;
+
+    ISceneLayer& GetLayer(int depth) const;
+
+    /**
+    Returns the minimum depth among all layers or 0 if there are no layers
+    */
+    int GetMinDepth() const;
+
+    /**
+    Returns the minimum depth among all layers or 0 if there are no layers
+    */
+    int GetMaxDepth() const;
+
+    /**
+    Removes the layer at specified depth and transfers the object 
+    ownership to the caller
+    */
+    ISceneLayer* ReleaseLayer(int depth);
+
+    void Apply(IVisitor& visitor) const;
+
+    const AffineTransform2D& GetSceneToCanvasTransform() const
+    {
+      return sceneToCanvas_;
+    }
+
+    const AffineTransform2D& GetCanvasToSceneTransform() const
+    {
+      return canvasToScene_;
+    }
+
+    void SetSceneToCanvasTransform(const AffineTransform2D& transform);
+
+    void FitContent(unsigned int canvasWidth,
+                    unsigned int canvasHeight);
+
+    void GetBoundingBox(Extent2D& target) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/ScenePoint2D.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,179 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/AffineTransform2D.h"
+#include "../Toolbox/LinearAlgebra.h"
+
+namespace OrthancStone
+{
+  class ScenePoint2D
+  {
+  private:
+    double  x_;
+    double  y_;
+
+  public:
+    ScenePoint2D() :
+      x_(0),
+      y_(0)
+    {
+    }
+
+    ScenePoint2D(double x,
+      double y) :
+      x_(x),
+      y_(y)
+    {
+    }
+
+    double GetX() const
+    {
+      return x_;
+    }
+
+    double GetY() const
+    {
+      return y_;
+    }
+
+    ScenePoint2D Apply(const AffineTransform2D& t) const
+    {
+      double x = x_;
+      double y = y_;
+      t.Apply(x, y);
+      return ScenePoint2D(x, y);
+    }
+
+    const ScenePoint2D operator-(const ScenePoint2D& a) const
+    {
+      ScenePoint2D v;
+      v.x_ = x_ - a.x_;
+      v.y_ = y_ - a.y_;
+
+      return v;
+    }
+
+    const ScenePoint2D operator+(const ScenePoint2D& a) const
+    {
+      ScenePoint2D v;
+      v.x_ = x_ + a.x_;
+      v.y_ = y_ + a.y_;
+
+      return v;
+    }
+
+    const ScenePoint2D operator*(double a) const
+    {
+      ScenePoint2D v;
+      v.x_ = x_ * a;
+      v.y_ = y_ * a;
+
+      return v;
+    }
+
+    const ScenePoint2D operator/(double a) const
+    {
+      ScenePoint2D v;
+      v.x_ = x_ / a;
+      v.y_ = y_ / a;
+
+      return v;
+    }
+
+    static void MidPoint(ScenePoint2D& result, const ScenePoint2D& a, const ScenePoint2D& b)
+    {
+      result.x_ = 0.5 * (a.x_ + b.x_);
+      result.y_ = 0.5 * (a.y_ + b.y_);
+    }
+
+    static double Dot(const ScenePoint2D& a, const ScenePoint2D& b)
+    {
+      return a.x_ * b.x_ + a.y_ * b.y_;
+    }
+
+    static double SquaredMagnitude(const ScenePoint2D& v)
+    {
+      return v.x_ * v.x_ + v.y_ * v.y_;
+    }
+
+    static double Magnitude(const ScenePoint2D& v)
+    {
+      double squaredMagnitude = SquaredMagnitude(v);
+      if (LinearAlgebra::IsCloseToZero(squaredMagnitude))
+        return 0.0;
+      return sqrt(squaredMagnitude);
+    }
+
+    static double SquaredDistancePtPt(const ScenePoint2D& a, const ScenePoint2D& b)
+    {
+      ScenePoint2D n = b - a;
+      return Dot(n, n);
+    }
+
+    static double DistancePtPt(const ScenePoint2D& a, const ScenePoint2D& b)
+    {
+      double squaredDist = SquaredDistancePtPt(a, b);
+      return sqrt(squaredDist);
+    }
+
+    /**
+    Distance from point p to [a,b] segment
+
+    Rewritten from https://www.randygaul.net/2014/07/23/distance-point-to-line-segment/
+    */
+    static double SquaredDistancePtSegment(const ScenePoint2D& a, const ScenePoint2D& b, const ScenePoint2D& p)
+    {
+      ScenePoint2D n = b - a;
+      ScenePoint2D pa = a - p;
+
+      double c = Dot(n, pa);
+
+      // Closest point is a
+      if (c > 0.0)
+        return Dot(pa, pa);
+
+      ScenePoint2D bp = p - b;
+
+      // Closest point is b
+      if (Dot(n, bp) > 0.0)
+        return Dot(bp, bp);
+
+      // if segment length is very short, we approximate distance to the
+      // distance with a
+      double nq = Dot(n, n);
+      if (LinearAlgebra::IsCloseToZero(nq))
+      {
+        // segment is very small: approximate distance from point to segment
+        // with distance from p to a
+        return Dot(pa, pa);
+      }
+      else
+      {
+        // Closest point is between a and b
+        ScenePoint2D e = pa - n * (c / nq);
+        return Dot(e, e);
+      }
+    }
+  };
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/TextSceneLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,98 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "TextSceneLayer.h"
+
+#include <Compatibility.h>
+
+namespace OrthancStone
+{
+  TextSceneLayer::TextSceneLayer() :
+    x_(0),
+    y_(0),
+    fontIndex_(0),
+    anchor_(BitmapAnchor_Center),
+    border_(0),
+    revision_(0)
+  {
+  }
+
+
+  ISceneLayer* TextSceneLayer::Clone() const
+  {
+    std::unique_ptr<TextSceneLayer> cloned(new TextSceneLayer);
+    cloned->SetColor(GetColor());
+    cloned->x_ = x_;
+    cloned->y_ = y_;
+    cloned->utf8_ = utf8_;
+    cloned->fontIndex_ = fontIndex_;
+    cloned->anchor_ = anchor_;
+    cloned->border_ = border_;
+    return cloned.release();
+  }
+
+  void TextSceneLayer::SetPosition(double x,
+                                   double y)
+  {
+    if (x != x_ || y != y_)
+    {
+      x_ = x;
+      y_ = y;
+      revision_++;
+    }
+  }
+
+  void TextSceneLayer::SetText(const std::string& utf8)
+  {
+    if (utf8 != utf8_)
+    {
+      utf8_ = utf8;
+      revision_++;
+    }
+  }
+
+  void TextSceneLayer::SetFontIndex(size_t fontIndex)
+  {
+    if (fontIndex != fontIndex_)
+    {
+      fontIndex_ = fontIndex;
+      revision_++;
+    }
+  }
+
+  void TextSceneLayer::SetAnchor(BitmapAnchor anchor)
+  {
+    if (anchor != anchor_)
+    {
+      anchor_ = anchor;
+      revision_++;
+    }
+  }
+
+  void TextSceneLayer::SetBorder(unsigned int border)
+  {
+    if (border != border_)
+    {
+      border_ = border;
+      revision_++;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/TextSceneLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,104 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ColorSceneLayer.h"
+#include "../StoneEnumerations.h"
+
+#include <memory>
+#include <string>
+
+namespace OrthancStone
+{
+  class TextSceneLayer : public ColorSceneLayer
+  {
+  private:
+    double         x_;
+    double         y_;
+    std::string    utf8_;
+    size_t         fontIndex_;
+    BitmapAnchor   anchor_;
+    unsigned int   border_;
+    uint64_t       revision_;
+  
+  public:
+    TextSceneLayer();
+
+    virtual ISceneLayer* Clone() const;
+
+    void SetPosition(double x,
+                     double y);
+
+    void SetText(const std::string& utf8);
+
+    void SetFontIndex(size_t fontIndex);
+
+    void SetAnchor(BitmapAnchor anchor);
+
+    void SetBorder(unsigned int border);
+
+    double GetX() const
+    {
+      return x_;
+    }
+    
+    double GetY() const
+    {
+      return y_;
+    }
+
+    unsigned int GetBorder() const
+    {
+      return border_;
+    }
+  
+    const std::string& GetText() const
+    {
+      return utf8_;
+    }
+
+    size_t GetFontIndex() const
+    {
+      return fontIndex_;
+    }
+
+    BitmapAnchor GetAnchor() const
+    {
+      return anchor_;
+    }
+
+    virtual Type GetType() const
+    {
+      return Type_Text;
+    }
+
+    virtual bool GetBoundingBox(Extent2D& target) const
+    {
+      return false;
+    }
+
+    virtual uint64_t GetRevision() const
+    {
+      return revision_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/TextureBaseSceneLayer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,171 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "TextureBaseSceneLayer.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  void TextureBaseSceneLayer::SetTexture(Orthanc::ImageAccessor* texture)
+  {
+    if (texture == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    else
+    {
+      texture_.reset(texture);
+      IncrementRevision();
+    }
+  }
+
+
+  void TextureBaseSceneLayer::CopyParameters(const TextureBaseSceneLayer& other)
+  {
+    originX_ = other.originX_;
+    originY_ = other.originY_;
+    pixelSpacingX_ = other.pixelSpacingX_;
+    pixelSpacingY_ = other.pixelSpacingY_;
+    angle_ = other.angle_;
+    isLinearInterpolation_ = other.isLinearInterpolation_;
+  }
+
+
+  TextureBaseSceneLayer::TextureBaseSceneLayer() :
+    originX_(0),
+    originY_(0),
+    pixelSpacingX_(1),
+    pixelSpacingY_(1),
+    angle_(0),
+    isLinearInterpolation_(false),
+    revision_(0)
+  {
+    if (pixelSpacingX_ <= 0 ||
+        pixelSpacingY_ <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+  
+  void TextureBaseSceneLayer::SetOrigin(double x,
+                                        double y)
+  {
+    originX_ = x;
+    originY_ = y;
+    IncrementRevision();
+  }
+
+
+  void TextureBaseSceneLayer::SetPixelSpacing(double sx,
+                                              double sy)
+  {
+    if (sx <= 0 ||
+        sy <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      pixelSpacingX_ = sx;
+      pixelSpacingY_ = sy;
+      IncrementRevision();
+    }
+  }
+
+  
+  void TextureBaseSceneLayer::SetAngle(double angle)
+  {
+    angle_ = angle;
+    IncrementRevision();
+  }
+
+  
+  void TextureBaseSceneLayer::SetLinearInterpolation(bool isLinearInterpolation)
+  {
+    isLinearInterpolation_ = isLinearInterpolation;
+    IncrementRevision();
+  }
+    
+
+  const Orthanc::ImageAccessor& TextureBaseSceneLayer::GetTexture() const
+  {
+    if (!HasTexture())
+    {
+      LOG(ERROR) << "TextureBaseSceneLayer::GetTexture(): (!HasTexture())";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return *texture_;
+    }
+  }
+
+  
+  AffineTransform2D TextureBaseSceneLayer::GetTransform() const
+  {
+    return AffineTransform2D::Combine(
+      AffineTransform2D::CreateOffset(originX_, originY_),
+      AffineTransform2D::CreateRotation(angle_),
+      AffineTransform2D::CreateScaling(pixelSpacingX_, pixelSpacingY_),
+      AffineTransform2D::CreateOffset(-0.5, -0.5));
+  }
+
+  
+  bool TextureBaseSceneLayer::GetBoundingBox(Extent2D& target) const
+  {
+    if (texture_.get() == NULL)
+    {
+      return false;
+    }
+    else
+    {
+      const AffineTransform2D t = GetTransform();
+
+      target.Reset();
+    
+      double x, y;
+
+      x = 0;
+      y = 0;
+      t.Apply(x, y);
+      target.AddPoint(x, y);
+
+      x = static_cast<double>(texture_->GetWidth());
+      y = 0;
+      t.Apply(x, y);
+      target.AddPoint(x, y);
+
+      x = 0;
+      y = static_cast<double>(texture_->GetHeight());
+      t.Apply(x, y);
+      target.AddPoint(x, y);
+
+      x = static_cast<double>(texture_->GetWidth());
+      y = static_cast<double>(texture_->GetHeight());
+      t.Apply(x, y);
+      target.AddPoint(x, y);    
+
+      return true;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/TextureBaseSceneLayer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,115 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "ISceneLayer.h"
+#include "../Toolbox/AffineTransform2D.h"
+
+#include <Compatibility.h>
+#include <Images/ImageAccessor.h>
+
+namespace OrthancStone
+{
+  class TextureBaseSceneLayer : public ISceneLayer
+  {
+  private:
+    std::unique_ptr<Orthanc::ImageAccessor>  texture_;
+    double                                 originX_;
+    double                                 originY_;
+    double                                 pixelSpacingX_;
+    double                                 pixelSpacingY_;
+    double                                 angle_;
+    bool                                   isLinearInterpolation_;
+    uint64_t                               revision_;
+
+  protected:
+    void SetTexture(Orthanc::ImageAccessor* texture);
+
+    void IncrementRevision() 
+    {
+      revision_++;
+    }
+
+    void CopyParameters(const TextureBaseSceneLayer& other);
+
+  public:
+    TextureBaseSceneLayer();
+
+    // Center of the top-left pixel
+    void SetOrigin(double x,
+                   double y);
+
+    void SetPixelSpacing(double sx,
+                         double sy);
+
+    // In radians
+    void SetAngle(double angle);
+
+    void SetLinearInterpolation(bool isLinearInterpolation);
+    
+    double GetOriginX() const
+    {
+      return originX_;
+    }
+
+    double GetOriginY() const
+    {
+      return originY_;
+    }
+
+    double GetPixelSpacingX() const
+    {
+      return pixelSpacingX_;
+    }
+
+    double GetPixelSpacingY() const
+    {
+      return pixelSpacingY_;
+    }
+
+    double GetAngle() const
+    {
+      return angle_;
+    }
+
+    bool IsLinearInterpolation() const
+    {
+      return isLinearInterpolation_;
+    }
+
+    bool HasTexture() const
+    {
+      return (texture_.get() != NULL);
+    }
+
+    const Orthanc::ImageAccessor& GetTexture() const;
+
+    AffineTransform2D GetTransform() const;
+    
+    virtual bool GetBoundingBox(Extent2D& target) const;
+
+    virtual uint64_t GetRevision() const
+    {
+      return revision_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/ZoomSceneTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,95 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ZoomSceneTracker.h"
+#include "../Scene2DViewport/ViewportController.h"
+
+namespace OrthancStone
+{
+  ZoomSceneTracker::ZoomSceneTracker(boost::shared_ptr<IViewport> viewport,
+                                     const PointerEvent& event,
+                                     unsigned int canvasHeight)
+    : OneGesturePointerTracker(viewport)
+    , clickY_(event.GetMainPosition().GetY())
+    , aligner_(viewport, event.GetMainPosition())
+  {
+    
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform();
+
+    if (canvasHeight <= 3)
+    {
+      active_ = false;
+    }
+    else
+    {
+      normalization_ = 1.0 / static_cast<double>(canvasHeight - 1);
+      active_ = true;
+    }
+  }
+  
+  void ZoomSceneTracker::PointerMove(const PointerEvent& event)
+  {
+    static const double MIN_ZOOM = -4;
+    static const double MAX_ZOOM = 4;
+      
+    if (active_)
+    {
+      double y = event.GetMainPosition().GetY();
+      
+      // In the range [-1,1]
+      double dy = static_cast<double>(y - clickY_) * normalization_;  
+      
+      double z;
+
+      // Linear interpolation from [-1, 1] to [MIN_ZOOM, MAX_ZOOM]
+      if (dy < -1.0)
+      {
+        z = MIN_ZOOM;
+      }
+      else if (dy > 1.0)
+      {
+        z = MAX_ZOOM;
+      }
+      else
+      {
+        z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0;
+      }
+
+      double zoom = pow(2.0, z);
+
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      lock->GetController().SetSceneToCanvasTransform(
+        AffineTransform2D::Combine(
+          AffineTransform2D::CreateScaling(zoom, zoom),
+          originalSceneToCanvas_));
+      aligner_.Apply();
+      lock->Invalidate();
+    }
+  }
+
+  void ZoomSceneTracker::Cancel()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_);
+    lock->Invalidate();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2D/ZoomSceneTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,51 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+
+#include "../Scene2DViewport/OneGesturePointerTracker.h"
+#include "../Viewport/IViewport.h"
+#include "Internals/FixedPointAligner.h"
+
+#include <boost/weak_ptr.hpp>
+
+namespace OrthancStone
+{
+  class ZoomSceneTracker : public OneGesturePointerTracker
+  {
+  public:
+    ZoomSceneTracker(boost::shared_ptr<IViewport> viewport,
+                     const PointerEvent& event,
+                     unsigned int canvasHeight);
+
+    virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE;
+    virtual void Cancel() ORTHANC_OVERRIDE;
+  
+  private:
+    double                        clickY_;
+    bool                          active_;
+    double                        normalization_;
+    Internals::FixedPointAligner  aligner_;
+    AffineTransform2D             originalSceneToCanvas_;
+
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,427 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "AngleMeasureTool.h"
+#include "MeasureToolsToolbox.h"
+#include "EditAngleMeasureTracker.h"
+#include "LayerHolder.h"
+#include "../StoneException.h"
+
+#include <Logging.h>
+
+#include <boost/math/constants/constants.hpp>
+#include <boost/make_shared.hpp>
+
+//// <HACK>
+//// REMOVE THIS
+//#ifndef NDEBUG
+//extern void 
+//TrackerSample_SetInfoDisplayMessage(std::string key, std::string value);
+//#endif
+//// </HACK>
+
+namespace OrthancStone
+{
+  // the params in the LayerHolder ctor specify the number of polyline and text
+  // layers
+  AngleMeasureTool::AngleMeasureTool(
+    boost::shared_ptr<IViewport> viewport)
+    : MeasureTool(viewport)
+#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
+    , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,5)))
+#else
+    , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,1)))
+#endif
+    , angleHighlightArea_(AngleHighlightArea_None)
+  {
+  }
+
+  boost::shared_ptr<AngleMeasureTool> AngleMeasureTool::Create(boost::shared_ptr<IViewport> viewport)
+  {
+    boost::shared_ptr<AngleMeasureTool> obj(new AngleMeasureTool(viewport));
+    obj->MeasureTool::PostConstructor();
+    obj->RefreshScene();
+    return obj;
+  }
+
+  AngleMeasureTool::~AngleMeasureTool()
+  {
+    // this measuring tool is a RABI for the corresponding visual layers
+    // stored in the 2D scene
+    Disable();
+    RemoveFromScene();
+  }
+
+  void AngleMeasureTool::RemoveFromScene()
+  {
+    if (layerHolder_->AreLayersCreated() && IsSceneAlive())
+    {
+      layerHolder_->DeleteLayers();
+    }
+  }
+
+  void AngleMeasureTool::SetSide1End(ScenePoint2D pt)
+  {
+    side1End_ = pt;
+    RefreshScene();
+  }
+
+  void AngleMeasureTool::SetSide2End(ScenePoint2D pt)
+  {
+    side2End_ = pt;
+    RefreshScene();
+  }
+
+  void AngleMeasureTool::SetAngleHighlightArea(AngleHighlightArea area)
+  {
+    if (angleHighlightArea_ != area)
+    {
+      angleHighlightArea_ = area;
+      RefreshScene();
+    }
+  }
+
+  void AngleMeasureTool::ResetHighlightState()
+  {
+    SetAngleHighlightArea(AngleHighlightArea_None);
+  }
+
+
+  boost::shared_ptr<OrthancStone::MeasureToolMemento> AngleMeasureTool::GetMemento() const
+  {
+    boost::shared_ptr<AngleMeasureToolMemento> memento(new AngleMeasureToolMemento());
+    memento->center_ = center_;
+    memento->side1End_ = side1End_;
+    memento->side2End_ = side2End_;
+    return memento;
+  }
+  
+  void AngleMeasureTool::SetMemento(boost::shared_ptr<MeasureToolMemento> mementoBase)
+  {
+    boost::shared_ptr<AngleMeasureToolMemento> memento = 
+      boost::dynamic_pointer_cast<AngleMeasureToolMemento>(mementoBase);
+
+    ORTHANC_ASSERT(memento.get() != NULL, "Internal error: wrong (or bad) memento");
+    center_   = memento->center_;
+    side1End_ = memento->side1End_;
+    side2End_ = memento->side2End_;
+    RefreshScene();
+  }
+
+  std::string AngleMeasureTool::GetDescription()
+  {
+    std::stringstream ss;
+    ss << "AngleMeasureTool. Center = " << center_ << " Side1End = " 
+       << side1End_ << " Side2End = " << side2End_;
+    return ss.str();
+  }
+
+  void AngleMeasureTool::Highlight(ScenePoint2D p)
+  {
+    AngleHighlightArea angleHighlightArea = AngleHitTest(p);
+    SetAngleHighlightArea(angleHighlightArea);
+  }
+
+  AngleMeasureTool::AngleHighlightArea AngleMeasureTool::AngleHitTest(ScenePoint2D p) const
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    const double pixelToScene = scene.GetCanvasToSceneTransform().ComputeZoom();
+
+    const double SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD = 
+      pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD * 
+      pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD;
+
+    {
+      const double sqDistanceFromSide1End = 
+        ScenePoint2D::SquaredDistancePtPt(p, side1End_);
+
+      if (sqDistanceFromSide1End <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
+        return AngleHighlightArea_Side1End;
+    }
+
+    {
+      const double sqDistanceFromSide2End = 
+        ScenePoint2D::SquaredDistancePtPt(p, side2End_);
+
+      if (sqDistanceFromSide2End <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
+        return AngleHighlightArea_Side2End;
+    }
+
+    {
+      const double sqDistanceFromCenter = 
+        ScenePoint2D::SquaredDistancePtPt(p, center_);
+      if (sqDistanceFromCenter <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
+        return AngleHighlightArea_Center;
+    }
+
+    {
+      const double sqDistanceFromSide1 = 
+        ScenePoint2D::SquaredDistancePtSegment(center_, side1End_, p);
+
+      if (sqDistanceFromSide1 <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
+        return AngleHighlightArea_Side1;
+    }
+
+    {
+      const double sqDistanceFromSide2 = 
+        ScenePoint2D::SquaredDistancePtSegment(center_, side2End_, p);
+
+      if (sqDistanceFromSide2 <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
+        return AngleHighlightArea_Side2;
+    }
+
+    return AngleHighlightArea_None;
+  }
+
+  bool AngleMeasureTool::HitTest(ScenePoint2D p)
+  {
+    return AngleHitTest(p) != AngleHighlightArea_None;
+  }
+
+
+  boost::shared_ptr<IFlexiblePointerTracker> AngleMeasureTool::CreateEditionTracker(const PointerEvent& e)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    ScenePoint2D scenePos = e.GetMainPosition().Apply(
+      scene.GetCanvasToSceneTransform());
+
+    if (!HitTest(scenePos))
+      return boost::shared_ptr<IFlexiblePointerTracker>();
+
+    /**
+      new EditLineMeasureTracker(
+        boost::shared_ptr<LineMeasureTool> measureTool;
+        MessageBroker & broker,
+        boost::shared_ptr<IViewport>          viewport,
+        const PointerEvent & e);
+    */
+
+    boost::shared_ptr<EditAngleMeasureTracker> editAngleMeasureTracker(
+      new EditAngleMeasureTracker(shared_from_this(), viewport_, e));
+    return editAngleMeasureTracker;
+  }
+
+  void AngleMeasureTool::SetCenter(ScenePoint2D pt)
+  {
+    center_ = pt;
+    RefreshScene();
+  }
+  
+  void AngleMeasureTool::RefreshScene()
+  {
+    if (IsSceneAlive())
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      ViewportController& controller = lock->GetController();
+      Scene2D& scene = controller.GetScene();
+
+      if (IsEnabled())
+      {
+        layerHolder_->CreateLayersIfNeeded();
+
+        {
+          // Fill the polyline layer with the measurement lines
+          PolylineSceneLayer* polylineLayer = layerHolder_->GetPolylineLayer(0);
+          if (polylineLayer)
+          {
+            polylineLayer->ClearAllChains();
+
+            const Color color(TOOL_ANGLE_LINES_COLOR_RED, 
+                              TOOL_ANGLE_LINES_COLOR_GREEN, 
+                              TOOL_ANGLE_LINES_COLOR_BLUE);
+
+            const Color highlightColor(TOOL_ANGLE_LINES_HL_COLOR_RED, 
+                                       TOOL_ANGLE_LINES_HL_COLOR_GREEN, 
+                                       TOOL_ANGLE_LINES_HL_COLOR_BLUE);
+
+            // sides
+            {
+              {
+                PolylineSceneLayer::Chain chain;
+                chain.push_back(side1End_);
+                chain.push_back(center_);
+
+                if ((angleHighlightArea_ == AngleHighlightArea_Side1) ||
+                    (angleHighlightArea_ == AngleHighlightArea_Side2))
+                {
+                  polylineLayer->AddChain(chain, false, highlightColor);
+                } 
+                else
+                {
+                  polylineLayer->AddChain(chain, false, color);
+                }
+              }
+              {
+                PolylineSceneLayer::Chain chain;
+                chain.push_back(side2End_);
+                chain.push_back(center_);
+                if ((angleHighlightArea_ == AngleHighlightArea_Side1) ||
+                  (angleHighlightArea_ == AngleHighlightArea_Side2))
+                {
+                  polylineLayer->AddChain(chain, false, highlightColor);
+                }
+                else
+                {
+                  polylineLayer->AddChain(chain, false, color);
+                }
+              }
+            }
+
+            // Create the handles
+            {
+              {
+                PolylineSceneLayer::Chain chain;
+                //TODO: take DPI into account
+                AddSquare(chain, controller.GetScene(), side1End_, 
+                          controller.GetHandleSideLengthS());
+              
+                if (angleHighlightArea_ == AngleHighlightArea_Side1End)
+                  polylineLayer->AddChain(chain, true, highlightColor);
+                else
+                  polylineLayer->AddChain(chain, true, color);
+              
+              }
+              {
+                PolylineSceneLayer::Chain chain;
+                //TODO: take DPI into account
+                AddSquare(chain, controller.GetScene(), side2End_, 
+                          controller.GetHandleSideLengthS());
+
+                if (angleHighlightArea_ == AngleHighlightArea_Side2End)
+                  polylineLayer->AddChain(chain, true, highlightColor);
+                else
+                  polylineLayer->AddChain(chain, true, color);
+              }
+            }
+
+            // Create the arc
+            {
+              PolylineSceneLayer::Chain chain;
+
+              AddShortestArc(chain, side1End_, center_, side2End_,
+                             controller.GetAngleToolArcRadiusS());
+              if (angleHighlightArea_ == AngleHighlightArea_Center)
+                polylineLayer->AddChain(chain, false, highlightColor);
+              else
+                polylineLayer->AddChain(chain, false, color);
+            }
+          }
+        }
+        {
+          // Set the text layer
+
+          double p1cAngle = atan2(
+            side1End_.GetY() - center_.GetY(),
+            side1End_.GetX() - center_.GetX());
+
+          double p2cAngle = atan2(
+            side2End_.GetY() - center_.GetY(),
+            side2End_.GetX() - center_.GetX());
+
+          double delta = NormalizeAngle(p2cAngle - p1cAngle);
+          double theta = p1cAngle + delta / 2;
+
+          double ox = controller.GetAngleTopTextLabelDistanceS() * cos(theta);
+          double oy = controller.GetAngleTopTextLabelDistanceS() * sin(theta);
+
+          double pointX = center_.GetX() + ox;
+          double pointY = center_.GetY() + oy;
+
+          char buf[64];
+          double angleDeg = RadiansToDegrees(delta);
+
+          // http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=00B0&mode=hex
+          sprintf(buf, "%0.02f\xc2\xb0", angleDeg);
+
+#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
+          SetTextLayerOutlineProperties(
+            scene, layerHolder_, buf, ScenePoint2D(pointX, pointY), 0);
+#else
+          SetTextLayerProperties(
+            scene, layerHolder_, buf, ScenePoint2D(pointX, pointY) , 0);
+#endif
+
+#if 0
+          // TODO:make it togglable
+          bool enableInfoDisplay = true;
+          if (enableInfoDisplay)
+          {
+            TrackerSample_SetInfoDisplayMessage("center_.GetX()",
+              boost::lexical_cast<std::string>(center_.GetX()));
+
+            TrackerSample_SetInfoDisplayMessage("center_.GetY()",
+              boost::lexical_cast<std::string>(center_.GetY()));
+
+            TrackerSample_SetInfoDisplayMessage("side1End_.GetX()",
+              boost::lexical_cast<std::string>(side1End_.GetX()));
+
+            TrackerSample_SetInfoDisplayMessage("side1End_.GetY()",
+              boost::lexical_cast<std::string>(side1End_.GetY()));
+
+            TrackerSample_SetInfoDisplayMessage("side2End_.GetX()",
+              boost::lexical_cast<std::string>(side2End_.GetX()));
+
+            TrackerSample_SetInfoDisplayMessage("side2End_.GetY()",
+              boost::lexical_cast<std::string>(side2End_.GetY()));
+
+            TrackerSample_SetInfoDisplayMessage("p1cAngle (deg)",
+              boost::lexical_cast<std::string>(RadiansToDegrees(p1cAngle)));
+
+            TrackerSample_SetInfoDisplayMessage("delta (deg)",
+              boost::lexical_cast<std::string>(RadiansToDegrees(delta)));
+
+            TrackerSample_SetInfoDisplayMessage("theta (deg)",
+              boost::lexical_cast<std::string>(RadiansToDegrees(theta)));
+
+            TrackerSample_SetInfoDisplayMessage("p2cAngle (deg)",
+              boost::lexical_cast<std::string>(RadiansToDegrees(p2cAngle)));
+
+            TrackerSample_SetInfoDisplayMessage("ox (scene)",
+              boost::lexical_cast<std::string>(ox));
+
+            TrackerSample_SetInfoDisplayMessage("offsetY (scene)",
+              boost::lexical_cast<std::string>(oy));
+
+            TrackerSample_SetInfoDisplayMessage("pointX",
+              boost::lexical_cast<std::string>(pointX));
+
+            TrackerSample_SetInfoDisplayMessage("pointY",
+              boost::lexical_cast<std::string>(pointY));
+
+            TrackerSample_SetInfoDisplayMessage("angleDeg",
+              boost::lexical_cast<std::string>(angleDeg));
+          }
+#endif
+        }
+      }
+      else
+      {
+        RemoveFromScene();
+      }
+      lock->Invalidate();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,96 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "MeasureTool.h"
+
+#include "../Scene2DViewport/LayerHolder.h"
+#include "../Scene2D/Scene2D.h"
+#include "../Scene2D/ScenePoint2D.h"
+#include "../Scene2D/PolylineSceneLayer.h"
+#include "../Scene2D/TextSceneLayer.h"
+
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+#include <vector>
+#include <cmath>
+
+namespace OrthancStone
+{
+  class AngleMeasureTool : public MeasureTool
+  {
+  public:
+    static boost::shared_ptr<AngleMeasureTool> Create(boost::shared_ptr<IViewport> viewport);
+
+    ~AngleMeasureTool();
+
+    void SetSide1End(ScenePoint2D start);
+    void SetCenter(ScenePoint2D start);
+    void SetSide2End(ScenePoint2D start);
+
+    virtual bool HitTest(ScenePoint2D p) ORTHANC_OVERRIDE;
+    virtual void Highlight(ScenePoint2D p) ORTHANC_OVERRIDE;
+    virtual void ResetHighlightState() ORTHANC_OVERRIDE;
+    virtual boost::shared_ptr<IFlexiblePointerTracker> CreateEditionTracker(const PointerEvent& e) ORTHANC_OVERRIDE;
+    virtual boost::shared_ptr<MeasureToolMemento> GetMemento() const ORTHANC_OVERRIDE;
+    virtual void SetMemento(boost::shared_ptr<MeasureToolMemento>) ORTHANC_OVERRIDE;
+    virtual std::string GetDescription() ORTHANC_OVERRIDE;
+
+    enum AngleHighlightArea
+    {
+      AngleHighlightArea_None,
+      AngleHighlightArea_Side1End,
+      AngleHighlightArea_Side1,
+      AngleHighlightArea_Side2End,
+      AngleHighlightArea_Side2,
+      AngleHighlightArea_Center
+    };
+
+
+    AngleHighlightArea AngleHitTest(ScenePoint2D p) const;
+
+  private:
+    AngleMeasureTool(boost::shared_ptr<IViewport> viewport);
+
+    virtual void        RefreshScene() ORTHANC_OVERRIDE;
+    void                RemoveFromScene();
+    void                SetAngleHighlightArea(AngleHighlightArea area);
+
+  private:
+    ScenePoint2D                    side1End_;
+    ScenePoint2D                    side2End_;
+    ScenePoint2D                    center_;
+    boost::shared_ptr<LayerHolder>  layerHolder_;
+    AngleHighlightArea              angleHighlightArea_;
+  };
+
+  class AngleMeasureToolMemento : public MeasureToolMemento
+  {
+  public:
+    ScenePoint2D                    side1End_;
+    ScenePoint2D                    side2End_;
+    ScenePoint2D                    center_;
+  };
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "CreateAngleMeasureCommand.h"
+
+#include <boost/make_shared.hpp>
+#include <boost/ref.hpp>
+
+namespace OrthancStone
+{
+  CreateAngleMeasureCommand::CreateAngleMeasureCommand(
+    boost::shared_ptr<IViewport> viewport,
+    ScenePoint2D           point)
+    : CreateMeasureCommand(viewport)
+    , measureTool_(AngleMeasureTool::Create(viewport))
+  {
+    
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+
+    controller.AddMeasureTool(measureTool_);
+    measureTool_->SetSide1End(point);
+    measureTool_->SetCenter(point);
+    measureTool_->SetSide2End(point);
+  }
+
+  /** This method sets center*/
+  void CreateAngleMeasureCommand::SetCenter(ScenePoint2D scenePos)
+  {
+    measureTool_->SetCenter(scenePos);
+  }
+
+  /** This method sets end of side 2*/
+  void CreateAngleMeasureCommand::SetSide2End(ScenePoint2D scenePos)
+  {
+    measureTool_->SetSide2End(scenePos);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,47 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include "MeasureCommands.h"
+
+namespace OrthancStone
+{
+  class CreateAngleMeasureCommand : public CreateMeasureCommand
+  {
+  public:
+    /** Ctor sets end of side 1*/
+    CreateAngleMeasureCommand(
+      boost::shared_ptr<IViewport> viewport,
+      ScenePoint2D           point);
+
+    /** This method sets center*/
+    void SetCenter(ScenePoint2D scenePos);
+
+    /** This method sets end of side 2*/
+    void SetSide2End(ScenePoint2D scenePos);
+
+  private:
+    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() ORTHANC_OVERRIDE
+    {
+      return measureTool_;
+    }
+    boost::shared_ptr<AngleMeasureTool> measureTool_;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,133 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "CreateAngleMeasureTracker.h"
+#include "CreateAngleMeasureCommand.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  CreateAngleMeasureTracker::CreateAngleMeasureTracker(
+    boost::shared_ptr<IViewport> viewport,
+    const PointerEvent& e)
+    : CreateMeasureTracker(viewport)
+    , state_(CreatingSide1)
+  {
+    ScenePoint2D point = e.GetMainPosition();
+    {    
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      Scene2D& scene = lock->GetController().GetScene();
+      point = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform());
+    }
+    command_.reset(new CreateAngleMeasureCommand(viewport, point));
+  }
+
+  CreateAngleMeasureTracker::~CreateAngleMeasureTracker()
+  {
+  }
+
+  void CreateAngleMeasureTracker::PointerMove(const PointerEvent& event)
+  {
+    if (!alive_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+        "Internal error: wrong state in CreateAngleMeasureTracker::"
+        "PointerMove: active_ == false");
+    }
+
+    
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      ViewportController& controller = lock->GetController();
+
+      ScenePoint2D scenePos = event.GetMainPosition().Apply(
+        controller.GetScene().GetCanvasToSceneTransform());
+
+      switch (state_)
+      {
+        case CreatingSide1:
+          GetCommand()->SetCenter(scenePos);
+          break;
+        case CreatingSide2:
+          GetCommand()->SetSide2End(scenePos);
+          break;
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                          "Wrong state in CreateAngleMeasureTracker::"
+                                          "PointerMove: state_ invalid");
+      }
+      //LOG(TRACE) << "scenePos.GetX() = " << scenePos.GetX() << "     " <<
+      //  "scenePos.GetY() = " << scenePos.GetY();
+      lock->Invalidate();
+    }
+  }
+
+  void CreateAngleMeasureTracker::PointerUp(const PointerEvent& e)
+  {
+    // TODO: the current app does not prevent multiple PointerDown AND
+    // PointerUp to be sent to the tracker.
+    // Unless we augment the PointerEvent structure with the button index, 
+    // we cannot really tell if this pointer up event matches the initial
+    // pointer down event. Let's make it simple for now.
+
+    switch (state_)
+    {
+    case CreatingSide1:
+      state_ = CreatingSide2;
+      break;
+    case CreatingSide2:
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+        "Wrong state in CreateAngleMeasureTracker::"
+        "PointerUp: state_ == CreatingSide2 ; this should not happen");
+      break;
+    default:
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+        "Wrong state in CreateAngleMeasureTracker::"
+        "PointerMove: state_ invalid");
+    }
+  }
+
+  void CreateAngleMeasureTracker::PointerDown(const PointerEvent& e)
+  {
+    switch (state_)
+    {
+    case CreatingSide1:
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+        "Wrong state in CreateAngleMeasureTracker::"
+        "PointerDown: state_ == CreatingSide1 ; this should not happen");
+      break;
+    case CreatingSide2:
+      // we are done
+      alive_ = false;
+      break;
+    default:
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+        "Wrong state in CreateAngleMeasureTracker::"
+        "PointerMove: state_ invalid");
+    }
+  }
+
+  boost::shared_ptr<CreateAngleMeasureCommand> CreateAngleMeasureTracker::GetCommand()
+  {
+    return boost::dynamic_pointer_cast<CreateAngleMeasureCommand>(command_);
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,62 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "MeasureTrackers.h"
+#include "MeasureCommands.h"
+
+#include <vector>
+
+namespace OrthancStone
+{
+  class CreateAngleMeasureTracker : public CreateMeasureTracker
+  {
+  public:
+    /**
+    When you create this tracker, you need to supply it with the undo stack
+    where it will store the commands that perform the actual measure tool
+    creation and modification.
+    In turn, a container for these commands to store the actual measuring
+    must be supplied, too
+    */
+    CreateAngleMeasureTracker(
+      boost::shared_ptr<IViewport>          viewport,
+      const PointerEvent&             e);
+
+    ~CreateAngleMeasureTracker();
+
+    virtual void PointerMove(const PointerEvent& e) ORTHANC_OVERRIDE;
+    virtual void PointerUp(const PointerEvent& e) ORTHANC_OVERRIDE;
+    virtual void PointerDown(const PointerEvent& e) ORTHANC_OVERRIDE;
+
+  private:
+    boost::shared_ptr<CreateAngleMeasureCommand> GetCommand();
+
+    enum State
+    {
+      CreatingSide1,
+      CreatingSide2,
+      Finished // just for debug
+    };
+    State state_;
+
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateCircleMeasureTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,23 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+namespace OrthancStone
+{
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateCircleMeasureTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,25 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+namespace OrthancStone
+{
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateLineMeasureCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,46 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "CreateLineMeasureCommand.h"
+
+#include <boost/make_shared.hpp>
+#include <boost/ref.hpp>
+
+namespace OrthancStone
+{
+  CreateLineMeasureCommand::CreateLineMeasureCommand(
+    boost::shared_ptr<IViewport> viewport,
+    ScenePoint2D           point)
+    : CreateMeasureCommand(viewport)
+    , measureTool_(LineMeasureTool::Create(viewport))
+  {
+    
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    controller.AddMeasureTool(measureTool_);
+    measureTool_->Set(point, point);
+    lock->Invalidate();
+  }
+
+  void CreateLineMeasureCommand::SetEnd(ScenePoint2D scenePos)
+  {
+    measureTool_->SetEnd(scenePos);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateLineMeasureCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,45 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include "MeasureCommands.h"
+
+namespace OrthancStone
+{
+  class CreateLineMeasureCommand : public CreateMeasureCommand
+  {
+  public:
+    CreateLineMeasureCommand(
+      boost::shared_ptr<IViewport> viewport,
+      ScenePoint2D           point);
+
+    // the starting position is set in the ctor
+    void SetEnd(ScenePoint2D scenePos);
+
+  private:
+    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() ORTHANC_OVERRIDE
+    {
+      return measureTool_;
+    }
+    boost::shared_ptr<LineMeasureTool> measureTool_;
+  };
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateLineMeasureTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,91 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "CreateLineMeasureTracker.h"
+#include "CreateLineMeasureCommand.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  CreateLineMeasureTracker::CreateLineMeasureTracker(
+    boost::shared_ptr<IViewport>          viewport,
+    const PointerEvent&             e)
+    : CreateMeasureTracker(viewport)
+  {
+    ScenePoint2D point = e.GetMainPosition();
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      ViewportController& controller = lock->GetController();
+      point = e.GetMainPosition().Apply(controller.GetScene().GetCanvasToSceneTransform());
+    }
+    command_.reset(new CreateLineMeasureCommand(viewport, point));
+  }
+
+  CreateLineMeasureTracker::~CreateLineMeasureTracker()
+  {
+
+  }
+
+  void CreateLineMeasureTracker::PointerMove(const PointerEvent& event)
+  {
+    if (!alive_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+        "Internal error: wrong state in CreateLineMeasureTracker::"
+        "PointerMove: active_ == false");
+    }
+
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+
+    ScenePoint2D scenePos = event.GetMainPosition().Apply(
+      controller.GetScene().GetCanvasToSceneTransform());
+      
+    //LOG(TRACE) << "scenePos.GetX() = " << scenePos.GetX() << "     " <<
+    //  "scenePos.GetY() = " << scenePos.GetY();
+      
+    CreateLineMeasureTracker* concreteThis =
+      dynamic_cast<CreateLineMeasureTracker*>(this);
+    assert(concreteThis != NULL);
+    GetCommand()->SetEnd(scenePos);
+  }
+
+  void CreateLineMeasureTracker::PointerUp(const PointerEvent& e)
+  {
+    // TODO: the current app does not prevent multiple PointerDown AND
+    // PointerUp to be sent to the tracker.
+    // Unless we augment the PointerEvent structure with the button index, 
+    // we cannot really tell if this pointer up event matches the initial
+    // pointer down event. Let's make it simple for now.
+    alive_ = false;
+  }
+
+  void CreateLineMeasureTracker::PointerDown(const PointerEvent& e)
+  {
+    LOG(WARNING) << "Additional touches (fingers, pen, mouse buttons...) "
+      "are ignored when the line measure creation tracker is active";
+  }
+
+  boost::shared_ptr<CreateLineMeasureCommand> CreateLineMeasureTracker::GetCommand()
+  {
+    return boost::dynamic_pointer_cast<CreateLineMeasureCommand>(command_);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateLineMeasureTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,53 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "MeasureTrackers.h"
+
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+
+namespace OrthancStone
+{
+  class CreateLineMeasureTracker : public CreateMeasureTracker
+  {
+  public:
+    /**
+    When you create this tracker, you need to supply it with the undo stack
+    where it will store the commands that perform the actual measure tool
+    creation and modification.
+    In turn, a container for these commands to store the actual measuring
+    must be supplied, too
+    */
+    CreateLineMeasureTracker(
+      boost::shared_ptr<IViewport>          viewport,
+      const PointerEvent&             e);
+
+    ~CreateLineMeasureTracker();
+
+    virtual void PointerMove(const PointerEvent& e) ORTHANC_OVERRIDE;
+    virtual void PointerUp(const PointerEvent& e) ORTHANC_OVERRIDE;
+    virtual void PointerDown(const PointerEvent& e) ORTHANC_OVERRIDE;
+
+  private:
+    boost::shared_ptr<CreateLineMeasureCommand> GetCommand();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateMeasureTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,20 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateMeasureTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,22 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/CreateSimpleTrackerAdapter.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,79 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "IFlexiblePointerTracker.h"
+#include "../Scene2D/IPointerTracker.h"
+
+
+namespace OrthancStone
+{
+#if 0
+  namespace
+  {
+    class SimpleTrackerAdapter : public IFlexiblePointerTracker
+    {
+    public:
+      SimpleTrackerAdapter(boost::shared_ptr<IPointerTracker> wrappedTracker)
+        : wrappedTracker_(wrappedTracker)
+        , active_(true)
+      {
+      }
+
+      virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE
+      {
+        if(active_)
+          wrappedTracker_->Update(event);
+      };
+      virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE
+      {
+        if (wrappedTracker_)
+        {
+          wrappedTracker_->Release();
+          wrappedTracker_ = NULL;
+        }
+        active_ = false;
+      }
+      virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE
+      {
+        // nothing to do atm
+      }
+      virtual bool IsActive() const ORTHANC_OVERRIDE
+      {
+        return active_;
+      }
+
+      virtual void Cancel() ORTHANC_OVERRIDE
+      {
+        wrappedTracker_ = NULL;
+        active_ = false;
+      }
+
+    private:
+      boost::shared_ptr<IPointerTracker> wrappedTracker_;
+      bool active_;
+    };
+  }
+
+  boost::shared_ptr<IFlexiblePointerTracker> CreateSimpleTrackerAdapter(boost::shared_ptr<IPointerTracker> t)
+  {
+    return boost::shared_ptr<IFlexiblePointerTracker>(new SimpleTrackerAdapter(t));
+  }
+#endif
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/EditAngleMeasureCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "EditAngleMeasureCommand.h"
+
+namespace OrthancStone
+{
+  EditAngleMeasureCommand::EditAngleMeasureCommand(
+    boost::shared_ptr<MeasureTool>  measureTool,
+    boost::shared_ptr<IViewport> viewport)
+    : EditMeasureCommand(measureTool, viewport)
+    , measureTool_(measureTool)
+  {
+  }
+
+  void EditAngleMeasureCommand::SetCenter(ScenePoint2D scenePos)
+  {
+    dynamic_cast<AngleMeasureTool&>(*measureTool_).SetCenter(scenePos);
+    mementoModified_ = measureTool_->GetMemento();
+  }
+
+
+  void EditAngleMeasureCommand::SetSide1End(ScenePoint2D scenePos)
+  {
+    dynamic_cast<AngleMeasureTool&>(*measureTool_).SetSide1End(scenePos);
+    mementoModified_ = measureTool_->GetMemento();
+  }
+
+
+  void EditAngleMeasureCommand::SetSide2End(ScenePoint2D scenePos)
+  {
+    dynamic_cast<AngleMeasureTool&>(*measureTool_).SetSide2End(scenePos);
+    mementoModified_ = measureTool_->GetMemento();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/EditAngleMeasureCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,50 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include "MeasureCommands.h"
+
+namespace OrthancStone
+{
+  class EditAngleMeasureCommand : public EditMeasureCommand
+  {
+  public:
+    /** Ctor sets end of side 1*/
+    EditAngleMeasureCommand(
+      boost::shared_ptr<MeasureTool>  measureTool,
+      boost::shared_ptr<IViewport> viewport);
+
+    /** This method sets center*/
+    void SetCenter(ScenePoint2D scenePos);
+
+    /** This method sets end of side 1*/
+    void SetSide1End(ScenePoint2D scenePos);
+
+    /** This method sets end of side 2*/
+    void SetSide2End(ScenePoint2D scenePos);
+
+  private:
+    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() ORTHANC_OVERRIDE
+    {
+      return measureTool_;
+    }
+    boost::shared_ptr<MeasureTool> measureTool_;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/EditAngleMeasureTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,119 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "EditAngleMeasureTracker.h"
+#include "EditAngleMeasureCommand.h"
+
+#include "../StoneException.h"
+
+namespace OrthancStone
+{
+  EditAngleMeasureTracker::EditAngleMeasureTracker(
+    boost::shared_ptr<MeasureTool>  measureTool,
+    boost::shared_ptr<IViewport> viewport,
+    const PointerEvent& e)
+    : EditMeasureTracker(viewport, e)
+  {
+    ScenePoint2D scenePos = e.GetMainPosition();
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      ViewportController& controller = lock->GetController();
+      scenePos = e.GetMainPosition().Apply(controller.GetScene().GetCanvasToSceneTransform());
+    }
+    modifiedZone_ = dynamic_cast<AngleMeasureTool&>(*measureTool).AngleHitTest(scenePos);
+    command_.reset(new EditAngleMeasureCommand(measureTool, viewport));
+  }
+
+  EditAngleMeasureTracker::~EditAngleMeasureTracker()
+  {
+
+  }
+
+  void EditAngleMeasureTracker::PointerMove(const PointerEvent& e)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    ScenePoint2D scenePos = e.GetMainPosition().Apply(
+      scene.GetCanvasToSceneTransform());
+
+    ScenePoint2D delta = scenePos - GetOriginalClickPosition();
+
+    boost::shared_ptr<AngleMeasureToolMemento> memento =
+      boost::dynamic_pointer_cast<AngleMeasureToolMemento>(command_->mementoOriginal_);
+
+    ORTHANC_ASSERT(memento.get() != NULL);
+
+    switch (modifiedZone_)
+    {
+      case AngleMeasureTool::AngleHighlightArea_Center:
+      {
+        ScenePoint2D newCenter = memento->center_ + delta;
+        GetCommand()->SetCenter(newCenter);
+      }
+      break;
+      case AngleMeasureTool::AngleHighlightArea_Side1:
+      case AngleMeasureTool::AngleHighlightArea_Side2:
+      {
+        ScenePoint2D newCenter = memento->center_ + delta;
+        ScenePoint2D newSide1End = memento->side1End_ + delta;
+        ScenePoint2D newSide2End = memento->side2End_ + delta;
+        GetCommand()->SetCenter(newCenter);
+        GetCommand()->SetSide1End(newSide1End);
+        GetCommand()->SetSide2End(newSide2End);
+      }
+      break;
+      case AngleMeasureTool::AngleHighlightArea_Side1End:
+      {
+        ScenePoint2D newSide1End = memento->side1End_ + delta;
+        GetCommand()->SetSide1End(newSide1End);
+      }
+      break;
+      case AngleMeasureTool::AngleHighlightArea_Side2End:
+      {
+        ScenePoint2D newSide2End = memento->side2End_ + delta;
+        GetCommand()->SetSide2End(newSide2End);
+      }
+      break;
+      default:
+        LOG(WARNING) << "Warning: please retry the measuring tool editing operation!";
+        break;
+    }
+  }
+
+  void EditAngleMeasureTracker::PointerUp(const PointerEvent& e)
+  {
+    alive_ = false;
+  }
+
+  void EditAngleMeasureTracker::PointerDown(const PointerEvent& e)
+  {
+    LOG(WARNING) << "Additional touches (fingers, pen, mouse buttons...) "
+      "are ignored when the edit angle tracker is active";
+  }
+
+  boost::shared_ptr<EditAngleMeasureCommand> EditAngleMeasureTracker::GetCommand()
+  {
+    boost::shared_ptr<EditAngleMeasureCommand> ret = boost::dynamic_pointer_cast<EditAngleMeasureCommand>(command_);
+    ORTHANC_ASSERT(ret.get() != NULL, "Internal error in EditAngleMeasureTracker::GetCommand()");
+    return ret;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/EditAngleMeasureTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "MeasureTrackers.h"
+
+namespace OrthancStone
+{
+  class EditAngleMeasureCommand;
+
+  class EditAngleMeasureTracker : public EditMeasureTracker
+  {
+  public:
+    /**
+    When you create this tracker, you need to supply it with the undo stack
+    where it will store the commands that perform the actual measure tool
+    creation and modification.
+    In turn, a container for these commands to store the actual measuring
+    must be supplied, too
+    */
+    EditAngleMeasureTracker(
+      boost::shared_ptr<MeasureTool>  measureTool,
+      boost::shared_ptr<IViewport> viewport,
+      const PointerEvent& e);
+
+    ~EditAngleMeasureTracker();
+
+    virtual void PointerMove(const PointerEvent& e) ORTHANC_OVERRIDE;
+    virtual void PointerUp(const PointerEvent& e) ORTHANC_OVERRIDE;
+    virtual void PointerDown(const PointerEvent& e) ORTHANC_OVERRIDE;
+
+  private:
+    AngleMeasureTool::AngleHighlightArea modifiedZone_;
+
+    boost::shared_ptr<EditAngleMeasureCommand> GetCommand();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/EditLineMeasureCommand.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,46 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "EditLineMeasureCommand.h"
+
+namespace OrthancStone
+{
+  EditLineMeasureCommand::EditLineMeasureCommand(
+    boost::shared_ptr<MeasureTool>  measureTool,
+    boost::shared_ptr<IViewport> viewport)
+    : EditMeasureCommand(measureTool, viewport)
+    , measureTool_(measureTool)
+  {
+  }
+
+
+  void EditLineMeasureCommand::SetStart(ScenePoint2D scenePos)
+  {
+    dynamic_cast<LineMeasureTool&>(*measureTool_).SetStart(scenePos);
+    mementoModified_ = measureTool_->GetMemento();
+  }
+
+
+  void EditLineMeasureCommand::SetEnd(ScenePoint2D scenePos)
+  {
+    dynamic_cast<LineMeasureTool&>(*measureTool_).SetEnd(scenePos);
+    mementoModified_ = measureTool_->GetMemento();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/EditLineMeasureCommand.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,43 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include "MeasureCommands.h"
+
+namespace OrthancStone
+{
+  class EditLineMeasureCommand : public EditMeasureCommand
+  {
+  public:
+    EditLineMeasureCommand(
+      boost::shared_ptr<MeasureTool>  measureTool,
+      boost::shared_ptr<IViewport> viewport);
+
+    void SetStart(ScenePoint2D scenePos);
+    void SetEnd(ScenePoint2D scenePos);
+
+  private:
+    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() ORTHANC_OVERRIDE
+    {
+      return measureTool_;
+    }
+    boost::shared_ptr<MeasureTool> measureTool_;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/EditLineMeasureTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,112 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "EditLineMeasureTracker.h"
+#include "EditLineMeasureCommand.h"
+
+#include "../StoneException.h"
+
+
+namespace OrthancStone
+{
+  EditLineMeasureTracker::EditLineMeasureTracker(
+    boost::shared_ptr<MeasureTool>  measureTool,
+    boost::shared_ptr<IViewport> viewport,
+    const PointerEvent& e)
+    : EditMeasureTracker(viewport, e)
+  {
+    ScenePoint2D scenePos = e.GetMainPosition();
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      Scene2D& scene = lock->GetController().GetScene();
+      scenePos = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform());
+    }
+    modifiedZone_ = dynamic_cast<LineMeasureTool&>(*measureTool).LineHitTest(scenePos);
+    command_.reset(new EditLineMeasureCommand(measureTool, viewport));
+  }
+
+  EditLineMeasureTracker::~EditLineMeasureTracker()
+  {
+
+  }
+
+  void EditLineMeasureTracker::PointerMove(const PointerEvent& e)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    ScenePoint2D scenePos = e.GetMainPosition().Apply(
+      scene.GetCanvasToSceneTransform());
+
+    ScenePoint2D delta = scenePos - GetOriginalClickPosition();
+
+    boost::shared_ptr<LineMeasureToolMemento> memento =
+      boost::dynamic_pointer_cast<LineMeasureToolMemento>(command_->mementoOriginal_);
+
+    ORTHANC_ASSERT(memento.get() != NULL);
+
+    switch (modifiedZone_)
+    {
+    case LineMeasureTool::LineHighlightArea_Start:
+    {
+      ScenePoint2D newStart = memento->start_ + delta;
+      GetCommand()->SetStart(newStart);
+    }
+    break;
+    case LineMeasureTool::LineHighlightArea_End:
+    {
+      ScenePoint2D newEnd = memento->end_ + delta;
+      GetCommand()->SetEnd(newEnd);
+    }
+    break;
+    case LineMeasureTool::LineHighlightArea_Segment:
+    {
+      ScenePoint2D newStart = memento->start_ + delta;
+      ScenePoint2D newEnd = memento->end_ + delta;
+      GetCommand()->SetStart(newStart);
+      GetCommand()->SetEnd(newEnd);
+    }
+    break;
+    default:
+      LOG(WARNING) << "Warning: please retry the measuring tool editing operation!";
+      break;
+    }
+  }
+
+  void EditLineMeasureTracker::PointerUp(const PointerEvent& e)
+  {
+    alive_ = false;
+  }
+
+  void EditLineMeasureTracker::PointerDown(const PointerEvent& e)
+  {
+    LOG(WARNING) << "Additional touches (fingers, pen, mouse buttons...) "
+      "are ignored when the edit line tracker is active";
+  }
+
+  boost::shared_ptr<EditLineMeasureCommand> EditLineMeasureTracker::GetCommand()
+  {
+    boost::shared_ptr<EditLineMeasureCommand> ret = boost::dynamic_pointer_cast<EditLineMeasureCommand>(command_);
+    ORTHANC_ASSERT(ret.get() != NULL, "Internal error in EditLineMeasureTracker::GetCommand()");
+    return ret;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/EditLineMeasureTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "MeasureTrackers.h"
+
+namespace OrthancStone
+{
+  class EditLineMeasureCommand;
+
+  class EditLineMeasureTracker : public EditMeasureTracker
+  {
+  public:
+    /**
+    When you create this tracker, you need to supply it with the undo stack
+    where it will store the commands that perform the actual measure tool
+    creation and modification.
+    In turn, a container for these commands to store the actual measuring
+    must be supplied, too
+    */
+    EditLineMeasureTracker(
+      boost::shared_ptr<MeasureTool>  measureTool,
+      boost::shared_ptr<IViewport> viewport,
+      const PointerEvent&                 e);
+
+    ~EditLineMeasureTracker();
+
+    virtual void PointerMove(const PointerEvent& e) ORTHANC_OVERRIDE;
+    virtual void PointerUp(const PointerEvent& e) ORTHANC_OVERRIDE;
+    virtual void PointerDown(const PointerEvent& e) ORTHANC_OVERRIDE;
+
+  private:
+    LineMeasureTool::LineHighlightArea modifiedZone_;
+
+    boost::shared_ptr<EditLineMeasureCommand> GetCommand();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/IFlexiblePointerTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,88 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "PredeclaredTypes.h"
+
+#include "../Scene2D/PointerEvent.h"
+
+
+namespace OrthancStone
+{
+  /**
+  This interface represents a flexible mouse tracker that can respond to 
+  several events and is not automatically deleted upon mouse up or when touch
+  interaction is suspended : for instance, a stateful tracker with a two-step 
+  interaction like: click & drag --> mouse up --> drag --> mouse click 
+  (for instance, for an angle measuring tracker or an ellipse tracker)
+  */
+  class IFlexiblePointerTracker : public boost::noncopyable
+  {
+  public:
+    virtual ~IFlexiblePointerTracker() {}
+
+    /**
+    This method will be repeatedly called during user interaction
+    */
+    virtual void PointerMove(const PointerEvent& event) = 0;
+
+    /**
+    This method will be called when a touch/pointer is removed (mouse up, 
+    pen lift, finger removed...)
+    */
+    virtual void PointerUp(const PointerEvent& event) = 0;
+
+    /**
+    This method will be called when a touch/pointer is added (mouse down, 
+    pen or finger press)
+
+    Important note: the initial pointer down that leads to creating the 
+    tracker is NOT sent to the tracker.
+
+    Thus, if you count the PointerDown vs PointerUp, there will be an extra
+    PointerUp.
+    */
+    virtual void PointerDown(const PointerEvent& event) = 0;
+
+    /**
+    This method will be repeatedly called by the tracker owner (for instance,
+    the application) to check whether the tracker must keep on receiving 
+    interaction or if its job is done and it should be deleted.
+    */
+    virtual bool IsAlive() const = 0;
+
+    /**
+    This will be called if the tracker needs to be dismissed without committing
+    its changes to the underlying model. If the model has been modified during
+    tracker lifetime, it must be restored to its initial value
+    */
+    virtual void Cancel() = 0;
+  };
+
+
+  /**
+  This factory adopts the supplied simple tracker and creates a flexible 
+  tracker wrapper around it.
+  */
+  boost::shared_ptr<IFlexiblePointerTracker> CreateSimpleTrackerAdapter(boost::shared_ptr<IPointerTracker>);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/LayerHolder.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,149 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "LayerHolder.h"
+#include "../Scene2D/TextSceneLayer.h"
+#include "../Scene2D/PolylineSceneLayer.h"
+#include "../Scene2D/Scene2D.h"
+#include "../Viewport/IViewport.h"
+#include "../StoneException.h"
+
+namespace OrthancStone
+{
+  LayerHolder::LayerHolder(
+    boost::shared_ptr<IViewport> viewport,
+    int        polylineLayerCount,
+    int        textLayerCount,
+    int        infoTextCount)
+    : textLayerCount_(textLayerCount)
+    , polylineLayerCount_(polylineLayerCount)
+    , infoTextCount_(infoTextCount)
+    , viewport_(viewport)
+    , baseLayerIndex_(-1)
+  {
+
+  }
+
+  void LayerHolder::CreateLayers()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    assert(baseLayerIndex_ == -1);
+
+    baseLayerIndex_ = scene.GetMaxDepth() + 100;
+
+    for (int i = 0; i < polylineLayerCount_; ++i)
+    {
+      std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer());
+      scene.SetLayer(baseLayerIndex_ + i, layer.release());
+    }
+
+    for (int i = 0; i < textLayerCount_; ++i)
+    {
+      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer());
+      scene.SetLayer(baseLayerIndex_ + polylineLayerCount_ + i, layer.release());
+    }
+    lock->Invalidate();
+  }
+
+  void LayerHolder::CreateLayersIfNeeded()
+  {
+    if (baseLayerIndex_ == -1)
+      CreateLayers();
+  }
+
+  bool LayerHolder::AreLayersCreated() const
+  {
+    return (baseLayerIndex_ != -1);
+  }
+
+  void LayerHolder::DeleteLayersIfNeeded()
+  {
+    if (baseLayerIndex_ != -1)
+      DeleteLayers();
+  }
+  
+  void LayerHolder::DeleteLayers()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    Scene2D& scene = lock->GetController().GetScene();
+
+    for (int i = 0; i < textLayerCount_ + polylineLayerCount_; ++i)
+    {
+      ORTHANC_ASSERT(scene.HasLayer(baseLayerIndex_ + i), "No layer");
+      scene.DeleteLayer(baseLayerIndex_ + i);
+    }
+    baseLayerIndex_ = -1;
+    lock->Invalidate();
+  }
+  
+  PolylineSceneLayer* LayerHolder::GetPolylineLayer(int index /*= 0*/)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    Scene2D& scene = lock->GetController().GetScene();
+
+    using namespace Orthanc;
+    ORTHANC_ASSERT(baseLayerIndex_ != -1);
+    ORTHANC_ASSERT(scene.HasLayer(GetPolylineLayerIndex(index)));
+    ISceneLayer* layer = &(scene.GetLayer(GetPolylineLayerIndex(index)));
+      
+    PolylineSceneLayer* concreteLayer =
+      dynamic_cast<PolylineSceneLayer*>(layer);
+      
+    ORTHANC_ASSERT(concreteLayer != NULL);
+    return concreteLayer;
+  }
+
+  TextSceneLayer* LayerHolder::GetTextLayer(int index /*= 0*/)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    Scene2D& scene = lock->GetController().GetScene();
+
+    using namespace Orthanc;
+    ORTHANC_ASSERT(baseLayerIndex_ != -1);
+    ORTHANC_ASSERT(scene.HasLayer(GetTextLayerIndex(index)));
+    ISceneLayer* layer = &(scene.GetLayer(GetTextLayerIndex(index)));
+      
+    TextSceneLayer* concreteLayer =
+      dynamic_cast<TextSceneLayer*>(layer);
+      
+    ORTHANC_ASSERT(concreteLayer != NULL);
+    return concreteLayer;
+  }
+
+  int LayerHolder::GetPolylineLayerIndex(int index /*= 0*/)
+  {
+    using namespace Orthanc;
+    ORTHANC_ASSERT(index < polylineLayerCount_);
+    return baseLayerIndex_ + index;
+  }
+  
+  int LayerHolder::GetTextLayerIndex(int index /*= 0*/)
+  {
+    using namespace Orthanc;
+    ORTHANC_ASSERT(index < textLayerCount_);
+
+    // the text layers are placed right after the polyline layers
+    // this means they are drawn ON TOP
+    return baseLayerIndex_ + polylineLayerCount_ + index;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/LayerHolder.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,108 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "PredeclaredTypes.h"
+
+#include <boost/noncopyable.hpp>
+#include <boost/weak_ptr.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace OrthancStone
+{
+  class PolylineSceneLayer;
+  class TextSceneLayer;
+
+  /**
+  This class holds the indices of a set a layer and supplies
+  getters to the concrete layer objects. Sounds very ad hoc, and it is.
+  */
+  class LayerHolder : public boost::noncopyable
+  {
+  public:
+    /**
+    This ctor merely stores the scene and layer counts. No layer creation
+    performed at this time
+    */
+    LayerHolder(
+      boost::shared_ptr<IViewport> viewport,
+      int polylineLayerCount, int textLayerCount, int infoTextCount = 0);
+
+    /**
+    This actually creates the layers
+    */
+    void CreateLayers();
+
+    /**
+    This creates the layers if they are not created yet. Can be useful in 
+    some scenarios
+    */
+    void CreateLayersIfNeeded();
+
+    /**
+    Whether the various text and polylines layers have all been created or 
+    none at all
+    */
+    bool AreLayersCreated() const;
+
+    /**
+    This removes the layers from the scene
+    */
+    void DeleteLayers();
+
+    /**
+    This removes the layers from the scene if they are already created
+    */
+    void DeleteLayersIfNeeded();
+
+    /**
+    Please note that the returned pointer belongs to the scene.Don't you dare
+    storing or deleting it, you fool!
+
+    This throws if the index is not valid or if the layers are not created or
+    have been deleted
+    */
+    PolylineSceneLayer* GetPolylineLayer(int index = 0);
+
+    /**
+    Please note that the returned pointer belongs to the scene. Don't you dare
+    storing or deleting it, you fool!
+
+    This throws if the index is not valid or if the layers are not created or
+    have been deleted
+    */
+    TextSceneLayer* GetTextLayer(int index = 0);
+
+    //TextSceneLayer* GetTextLayer(int index = 0);
+
+  private:
+    int GetPolylineLayerIndex(int index = 0);
+    int GetTextLayerIndex(int index = 0);
+    int GetInfoTextLayerIndex(int index = 0);
+
+    int textLayerCount_;
+    int polylineLayerCount_;
+    int infoTextCount_;
+    boost::shared_ptr<IViewport> viewport_;
+    int baseLayerIndex_;
+  };
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/LineMeasureTool.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,293 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "LineMeasureTool.h"
+#include "MeasureToolsToolbox.h"
+#include "EditLineMeasureTracker.h"
+#include "LayerHolder.h"
+#include "../StoneException.h"
+
+#include <Logging.h>
+
+#include <boost/make_shared.hpp>
+
+namespace OrthancStone
+{
+
+  LineMeasureTool::LineMeasureTool(
+    boost::shared_ptr<IViewport> viewport)
+    : MeasureTool(viewport)
+#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
+    , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,5)))
+#else
+    , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,1)))
+#endif
+    , lineHighlightArea_(LineHighlightArea_None)
+  {
+
+  }
+
+  boost::shared_ptr<LineMeasureTool> LineMeasureTool::Create(boost::shared_ptr<IViewport> viewport)
+  {
+    boost::shared_ptr<LineMeasureTool> obj(new LineMeasureTool(viewport));
+    obj->MeasureTool::PostConstructor();
+    obj->RefreshScene();
+    return obj;
+  }
+
+  LineMeasureTool::~LineMeasureTool()
+  {
+    // this measuring tool is a RABI for the corresponding visual layers
+    // stored in the 2D scene
+    Disable();
+    RemoveFromScene();
+  }
+
+  void LineMeasureTool::RemoveFromScene()
+  {
+    if (layerHolder_->AreLayersCreated() && IsSceneAlive())
+    {
+      layerHolder_->DeleteLayers();
+    }
+  }
+  
+  void LineMeasureTool::SetStart(ScenePoint2D start)
+  {
+    start_ = start;
+    RefreshScene();
+  }
+
+  void LineMeasureTool::SetEnd(ScenePoint2D end)
+  {
+    end_ = end;
+    RefreshScene();
+  }
+
+  void LineMeasureTool::Set(ScenePoint2D start, ScenePoint2D end)
+  {
+    start_ = start;
+    end_ = end;
+    RefreshScene();
+  }
+
+  void LineMeasureTool::SetLineHighlightArea(LineHighlightArea area)
+  {
+    if (lineHighlightArea_ != area)
+    {
+      lineHighlightArea_ = area;
+      RefreshScene();
+    }
+  }
+
+  std::string LineMeasureTool::GetDescription()
+  {
+    std::stringstream ss;
+    ss << "LineMeasureTool. Start = " << start_ << " End = " << end_;
+    return ss.str();
+  }
+
+  void LineMeasureTool::ResetHighlightState()
+  {
+    SetLineHighlightArea(LineHighlightArea_None);
+  }
+ 
+  void LineMeasureTool::Highlight(ScenePoint2D p)
+  {
+    LineHighlightArea lineHighlightArea = LineHitTest(p);
+    SetLineHighlightArea(lineHighlightArea);
+  }
+
+  LineMeasureTool::LineHighlightArea LineMeasureTool::LineHitTest(ScenePoint2D p)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    const double pixelToScene = scene.GetCanvasToSceneTransform().ComputeZoom();
+    const double SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD = 
+      pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD * 
+      pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD;
+
+    const double sqDistanceFromStart = 
+      ScenePoint2D::SquaredDistancePtPt(p, start_);
+    
+    if (sqDistanceFromStart <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
+      return LineHighlightArea_Start;
+    
+    const double sqDistanceFromEnd = ScenePoint2D::SquaredDistancePtPt(p, end_);
+
+    if (sqDistanceFromEnd <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
+      return LineHighlightArea_End;
+
+    const double sqDistanceFromPtSegment = 
+      ScenePoint2D::SquaredDistancePtSegment(start_, end_, p);
+    
+    if (sqDistanceFromPtSegment <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
+      return LineHighlightArea_Segment;
+
+    return LineHighlightArea_None;
+  }
+
+  bool LineMeasureTool::HitTest(ScenePoint2D p)
+  {
+    return LineHitTest(p) != LineHighlightArea_None;
+  }
+
+  boost::shared_ptr<IFlexiblePointerTracker> LineMeasureTool::CreateEditionTracker(const PointerEvent& e)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    ScenePoint2D scenePos = e.GetMainPosition().Apply(
+      scene.GetCanvasToSceneTransform());
+
+    if (!HitTest(scenePos))
+      return boost::shared_ptr<IFlexiblePointerTracker>();
+
+    boost::shared_ptr<EditLineMeasureTracker> editLineMeasureTracker(
+      new EditLineMeasureTracker(shared_from_this(), viewport_, e));
+    return editLineMeasureTracker;
+  }
+
+  boost::shared_ptr<MeasureToolMemento> LineMeasureTool::GetMemento() const
+  {
+    boost::shared_ptr<LineMeasureToolMemento> memento(new LineMeasureToolMemento());
+    memento->start_ = start_;
+    memento->end_ = end_;
+    return memento;
+  }
+
+  void LineMeasureTool::SetMemento(
+    boost::shared_ptr<MeasureToolMemento> mementoBase)
+  {
+    boost::shared_ptr<LineMeasureToolMemento> memento = 
+      boost::dynamic_pointer_cast<LineMeasureToolMemento>(mementoBase);
+    
+    ORTHANC_ASSERT(memento.get() != NULL, "Internal error: wrong (or bad) memento");
+    
+    start_ = memento->start_;
+    end_ = memento->end_;
+    RefreshScene();
+  }
+
+  void LineMeasureTool::RefreshScene()
+  {
+    if (IsSceneAlive())
+    {
+      if (IsEnabled())
+      {
+        
+        std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+        ViewportController& controller = lock->GetController();
+        Scene2D& scene = controller.GetScene();
+
+        layerHolder_->CreateLayersIfNeeded();
+        {
+          // Fill the polyline layer with the measurement line
+
+          PolylineSceneLayer* polylineLayer = layerHolder_->GetPolylineLayer(0);
+          if (polylineLayer)
+          {
+            polylineLayer->ClearAllChains();
+
+            const Color color(TOOL_LINES_COLOR_RED, 
+                              TOOL_LINES_COLOR_GREEN, 
+                              TOOL_LINES_COLOR_BLUE);
+
+            const Color highlightColor(TOOL_LINES_HL_COLOR_RED,
+                                       TOOL_LINES_HL_COLOR_GREEN,
+                                       TOOL_LINES_HL_COLOR_BLUE);
+
+            {
+              PolylineSceneLayer::Chain chain;
+              chain.push_back(start_);
+              chain.push_back(end_);
+              if(lineHighlightArea_ == LineHighlightArea_Segment)
+                polylineLayer->AddChain(chain, false, highlightColor);
+              else
+                polylineLayer->AddChain(chain, false, color);
+            }
+
+            // handles
+            {
+              {
+                PolylineSceneLayer::Chain chain;
+              
+                //TODO: take DPI into account
+                AddSquare(chain, controller.GetScene(), start_, 
+                          controller.GetHandleSideLengthS());
+              
+                if (lineHighlightArea_ == LineHighlightArea_Start)
+                  polylineLayer->AddChain(chain, true, highlightColor);
+                else
+                  polylineLayer->AddChain(chain, true, color);
+              }
+
+              {
+                PolylineSceneLayer::Chain chain;
+              
+                //TODO: take DPI into account
+                AddSquare(chain, controller.GetScene(), end_, 
+                          controller.GetHandleSideLengthS());
+              
+                if (lineHighlightArea_ == LineHighlightArea_End)
+                  polylineLayer->AddChain(chain, true, highlightColor);
+                else
+                  polylineLayer->AddChain(chain, true, color);
+              }
+            }
+          }
+        }
+        {
+          // Set the text layer propreties
+          double deltaX = end_.GetX() - start_.GetX();
+          double deltaY = end_.GetY() - start_.GetY();
+          double squareDist = deltaX * deltaX + deltaY * deltaY;
+          double dist = sqrt(squareDist);
+          char buf[64];
+          sprintf(buf, "%0.02f mm", dist);
+
+          // TODO: for now we simply position the text overlay at the middle
+          // of the measuring segment
+          double midX = 0.5 * (end_.GetX() + start_.GetX());
+          double midY = 0.5 * (end_.GetY() + start_.GetY());
+
+          {
+
+#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
+            SetTextLayerOutlineProperties(
+              scene, layerHolder_, buf, ScenePoint2D(midX, midY), 0);
+#else
+            SetTextLayerProperties(
+              scene, layerHolder_, buf, ScenePoint2D(midX, midY), 0);
+#endif
+            lock->Invalidate();
+          }
+        }
+        lock->Invalidate();
+      }
+      else
+      {
+        RemoveFromScene();
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/LineMeasureTool.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,94 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "../Scene2D/PolylineSceneLayer.h"
+#include "../Scene2D/Scene2D.h"
+#include "../Scene2D/ScenePoint2D.h"
+#include "../Scene2D/TextSceneLayer.h"
+#include "MeasureTool.h"
+
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+#include <vector>
+#include <cmath>
+
+namespace OrthancStone
+{
+  class LineMeasureTool : public MeasureTool
+  {
+  public:
+    static boost::shared_ptr<LineMeasureTool> Create(boost::shared_ptr<IViewport> viewport);
+
+    ~LineMeasureTool();
+
+    void SetStart(ScenePoint2D start);
+    void SetEnd(ScenePoint2D end);
+    void Set(ScenePoint2D start, ScenePoint2D end);
+
+
+    virtual bool HitTest(ScenePoint2D p) ORTHANC_OVERRIDE;
+    virtual void Highlight(ScenePoint2D p) ORTHANC_OVERRIDE;
+    virtual void ResetHighlightState() ORTHANC_OVERRIDE;
+    virtual boost::shared_ptr<IFlexiblePointerTracker> CreateEditionTracker(const PointerEvent& e) ORTHANC_OVERRIDE;
+    virtual boost::shared_ptr<MeasureToolMemento> GetMemento() const ORTHANC_OVERRIDE;
+    virtual void SetMemento(boost::shared_ptr<MeasureToolMemento>) ORTHANC_OVERRIDE;
+    virtual std::string GetDescription() ORTHANC_OVERRIDE;
+
+    enum LineHighlightArea
+    {
+      LineHighlightArea_None,
+      LineHighlightArea_Start,
+      LineHighlightArea_End,
+      LineHighlightArea_Segment
+    };
+
+
+    LineHighlightArea LineHitTest(ScenePoint2D p);
+
+  private:
+    LineMeasureTool(boost::shared_ptr<IViewport> viewport);
+
+    virtual void        RefreshScene() ORTHANC_OVERRIDE;
+    void                RemoveFromScene();
+    void                SetLineHighlightArea(LineHighlightArea area);
+
+  private:
+
+  private:
+    ScenePoint2D                    start_;
+    ScenePoint2D                    end_;
+    boost::shared_ptr<LayerHolder>  layerHolder_;
+    int                             baseLayerIndex_;
+    LineHighlightArea               lineHighlightArea_;
+  };
+
+  class LineMeasureToolMemento : public MeasureToolMemento
+  {
+  public:
+    ScenePoint2D                    start_;
+    ScenePoint2D                    end_;
+  };
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,112 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "MeasureCommands.h"
+
+#include <memory>
+
+#include <boost/make_shared.hpp>
+#include <boost/ref.hpp>
+
+namespace OrthancStone
+{
+  void CreateMeasureCommand::Undo()
+  {
+    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
+    // simply disable the measure tool upon undo
+    GetMeasureTool()->Disable();
+    lock->GetController().RemoveMeasureTool(GetMeasureTool());
+  }
+
+  void CreateMeasureCommand::Redo()
+  {
+    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
+    GetMeasureTool()->Enable();
+    lock->GetController().AddMeasureTool(GetMeasureTool());
+  }
+
+  CreateMeasureCommand::CreateMeasureCommand(boost::shared_ptr<IViewport> viewport)
+    : MeasureCommand(viewport)
+  {
+
+  }
+
+  CreateMeasureCommand::~CreateMeasureCommand()
+  {
+    // deleting the command should not change the model state
+    // we thus leave it as is
+  }
+
+  void DeleteMeasureCommand::Redo()
+  {
+    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
+    // simply disable the measure tool upon undo
+    GetMeasureTool()->Disable();
+    lock->GetController().RemoveMeasureTool(GetMeasureTool());
+  }
+
+  void DeleteMeasureCommand::Undo()
+  {
+    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
+    GetMeasureTool()->Enable();
+    lock->GetController().AddMeasureTool(GetMeasureTool());
+  }
+
+  DeleteMeasureCommand::~DeleteMeasureCommand()
+  {
+    // deleting the command should not change the model state
+    // we thus leave it as is
+  }
+
+  DeleteMeasureCommand::DeleteMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::shared_ptr<IViewport> viewport)
+    : MeasureCommand(viewport)
+    , mementoOriginal_(measureTool->GetMemento())
+    , measureTool_(measureTool)
+    , mementoModified_(measureTool->GetMemento())
+  {
+    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
+    GetMeasureTool()->Disable();
+    lock->GetController().RemoveMeasureTool(GetMeasureTool());
+  }
+
+  EditMeasureCommand::EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::shared_ptr<IViewport> viewport)
+    : MeasureCommand(viewport)
+    , mementoOriginal_(measureTool->GetMemento())
+    , mementoModified_(measureTool->GetMemento())
+  {
+
+  }
+
+  EditMeasureCommand::~EditMeasureCommand()
+  {
+
+  }
+
+  void EditMeasureCommand::Undo()
+  {
+    // simply disable the measure tool upon undo
+    GetMeasureTool()->SetMemento(mementoOriginal_);
+  }
+
+  void EditMeasureCommand::Redo()
+  {
+    GetMeasureTool()->SetMemento(mementoModified_);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureCommands.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,108 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+#pragma once
+
+#include "../Viewport/IViewport.h"
+
+// to be moved into Stone
+#include "PredeclaredTypes.h"
+#include "MeasureTool.h"
+#include "LineMeasureTool.h"
+#include "AngleMeasureTool.h"
+
+#include <boost/shared_ptr.hpp>
+#include <boost/noncopyable.hpp>
+
+namespace OrthancStone
+{
+  class MeasureCommand : public boost::noncopyable
+  {
+  public:
+    MeasureCommand(boost::shared_ptr<IViewport> viewport) : viewport_(viewport)
+    {}
+    virtual void Undo() = 0;
+    virtual void Redo() = 0;
+    
+    virtual ~MeasureCommand() {};
+
+  protected:
+    boost::shared_ptr<IViewport> viewport_;
+  };
+
+  class CreateMeasureCommand : public MeasureCommand
+  {
+  public:
+    CreateMeasureCommand(boost::shared_ptr<IViewport> viewport);
+    virtual ~CreateMeasureCommand();
+    virtual void Undo() ORTHANC_OVERRIDE;
+    virtual void Redo() ORTHANC_OVERRIDE;
+  private:
+    /** Must be implemented by the subclasses that create the actual tool */
+    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() = 0;
+  };
+  
+  class EditMeasureCommand : public MeasureCommand
+  {
+  public:
+    EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::shared_ptr<IViewport> viewport);
+    virtual ~EditMeasureCommand();
+    virtual void Undo() ORTHANC_OVERRIDE;
+    virtual void Redo() ORTHANC_OVERRIDE;
+
+    /** This memento is the original object state */
+    boost::shared_ptr<MeasureToolMemento> mementoOriginal_;
+
+  private:
+    /** Must be implemented by the subclasses that edit the actual tool */
+    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() = 0;
+
+  protected:
+
+    /** This memento is updated by the subclasses upon modifications */
+    boost::shared_ptr<MeasureToolMemento> mementoModified_;
+  };
+
+  class DeleteMeasureCommand : public MeasureCommand
+  {
+  public:
+    DeleteMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::shared_ptr<IViewport> viewport);
+    virtual ~DeleteMeasureCommand();
+    virtual void Undo() ORTHANC_OVERRIDE;
+    virtual void Redo() ORTHANC_OVERRIDE;
+
+    /** This memento is the original object state */
+    boost::shared_ptr<MeasureToolMemento> mementoOriginal_;
+
+  private:
+    /** Must be implemented by the subclasses that edit the actual tool */
+    virtual boost::shared_ptr<MeasureTool> GetMeasureTool()
+    {
+      return measureTool_;
+    }
+
+    boost::shared_ptr<MeasureTool> measureTool_;
+
+  protected:
+
+    /** This memento is updated by the subclasses upon modifications */
+    boost::shared_ptr<MeasureToolMemento> mementoModified_;
+  };
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureTool.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,84 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "MeasureTool.h"
+
+#include <Logging.h>
+#include <Enumerations.h>
+#include <OrthancException.h>
+
+#include <boost/math/constants/constants.hpp>
+
+#include "../Viewport/IViewport.h"
+
+namespace OrthancStone
+{
+  void MeasureTool::Enable()
+  {
+    enabled_ = true;
+    RefreshScene();
+  }
+
+  void MeasureTool::Disable()
+  {
+    enabled_ = false;
+    RefreshScene();
+  }
+
+  bool MeasureTool::IsEnabled() const
+  {
+    return enabled_;
+  }
+
+  MeasureTool::MeasureTool(
+    boost::shared_ptr<IViewport> viewport)
+    : viewport_(viewport)
+    , enabled_(true)
+  {
+
+  }
+
+  void MeasureTool::PostConstructor()
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+
+    Register<ViewportController::SceneTransformChanged>(
+      controller, 
+      &MeasureTool::OnSceneTransformChanged);
+  }
+
+  bool MeasureTool::IsSceneAlive() const
+  {
+    // since the lifetimes of the viewport, viewportcontroller (and the
+    // measuring tools inside it) are linked, the scene is always alive as 
+    // long as "this" is alive
+    return true;
+  }
+
+  void MeasureTool::OnSceneTransformChanged(
+    const ViewportController::SceneTransformChanged& message)
+  {
+    RefreshScene();
+  }
+
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureTool.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,160 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "../Messages/ObserverBase.h"
+#include "../Scene2D/PolylineSceneLayer.h"
+#include "../Scene2D/Scene2D.h"
+#include "../Scene2D/ScenePoint2D.h"
+#include "../Scene2D/TextSceneLayer.h"
+#include "../Scene2DViewport/PredeclaredTypes.h"
+#include "../Scene2DViewport/ViewportController.h"
+
+#include <boost/weak_ptr.hpp>
+
+#include <vector>
+#include <cmath>
+
+namespace OrthancStone
+{
+  class IFlexiblePointerTracker;
+  class MeasureToolMemento;
+
+  class MeasureTool : public ObserverBase<MeasureTool>
+  {
+  public:
+    virtual ~MeasureTool()
+    {
+    }
+
+    /**
+    Enabled tools are rendered in the scene.
+    */
+    void Enable();
+
+    /**
+    Disabled tools are not rendered in the scene. This is useful to be able
+    to use them as their own memento in command stacks (when a measure tool
+    creation command has been undone, the measure remains alive in the
+    command object but is disabled so that it can be redone later on easily)
+    */
+    void Disable();
+
+    /**
+    This method is called when the scene transform changes. It allows to 
+    recompute the visual elements whose content depend upon the scene transform
+    */
+    void OnSceneTransformChanged(
+      const ViewportController::SceneTransformChanged& message);
+    
+    /**
+    This function must be implemented by the measuring tool to return whether
+    a given point in scene coords is close to the measuring tool.
+
+    This is used for mouse hover highlighting.
+
+    It is assumed that if the pointer position leads to this function returning
+    true, then a click at that position will return a tracker to edit the 
+    measuring tool
+    */
+    virtual bool HitTest(ScenePoint2D p) = 0;
+
+    /**
+    This method must return a memento the captures the tool state (not including
+    the highlighting state
+    */
+    virtual boost::shared_ptr<MeasureToolMemento> GetMemento() const = 0;
+
+    /**
+    This method must apply the supplied memento (this requires RTTI to check
+    the type)
+    */
+    virtual void SetMemento(boost::shared_ptr<MeasureToolMemento>) = 0;
+
+    /**
+    This must create an edition tracker suitable for the supplied click position,
+    or an empty pointer if no hit test (although this should have been checked
+    first)
+    */
+    virtual boost::shared_ptr<IFlexiblePointerTracker> CreateEditionTracker(const PointerEvent& e) = 0;
+
+    /**
+    Will change the measuring tool to provide visual feedback on the GUI 
+    element that is in the pointer hit zone
+    */
+    virtual void Highlight(ScenePoint2D p) = 0;
+
+    /**
+    This function must reset the visual highlighted hot zone feedback
+    */
+    virtual void ResetHighlightState() = 0;
+
+    /**
+    A description of the measuring tool, useful in debug logs
+    */
+    virtual std::string GetDescription() = 0;
+
+  protected:
+    MeasureTool(boost::shared_ptr<IViewport> viewport);
+
+    void PostConstructor();
+
+    /**
+    The measuring tool may exist in a standalone fashion, without any available
+    scene (because the controller is dead or dying). This call allows to check 
+    before accessing the scene.
+    */
+    bool IsSceneAlive() const;
+    
+    /**
+    This is the meat of the tool: this method must [create (if needed) and]
+    update the layers and their data according to the measure tool kind and
+    current state. This is repeatedly called during user interaction
+    */
+    virtual void RefreshScene() = 0;
+
+    /**
+    enabled_ is not accessible by subclasses because there is a state machine
+    that we do not wanna mess with
+    */
+    bool IsEnabled() const;
+
+    /**
+    Protected to allow sub-classes to use this weak pointer in factory methods
+    (pass them to created objects)
+    */
+    boost::shared_ptr<IViewport> viewport_;
+
+
+  private:
+    bool     enabled_;
+  };
+
+  class MeasureToolMemento
+  {
+    public:
+      virtual ~MeasureToolMemento() {};
+  };
+
+}
+
+ //extern void TrackerSample_SetInfoDisplayMessage(
+ //  std::string key, std::string value);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureToolsToolbox.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,366 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "MeasureToolsToolbox.h"
+#include "PredeclaredTypes.h"
+#include "LayerHolder.h"
+#include "ViewportController.h"
+
+#include "../Scene2D/TextSceneLayer.h"
+#include "../Scene2D/Scene2D.h"
+#include "../StoneException.h"
+
+#include <boost/math/constants/constants.hpp>
+
+namespace
+{
+  double g_pi = boost::math::constants::pi<double>();
+}
+
+namespace OrthancStone
+{
+  void GetPositionOnBisectingLine(
+    ScenePoint2D& result
+    , const ScenePoint2D& p1
+    , const ScenePoint2D& c
+    , const ScenePoint2D& p2
+    , const double d)
+  {
+    // TODO: fix correct half-plane
+    double p1cAngle = atan2(p1.GetY() - c.GetY(), p1.GetX() - c.GetX());
+    double p2cAngle = atan2(p2.GetY() - c.GetY(), p2.GetX() - c.GetX());
+    double angle = 0.5 * (p1cAngle + p2cAngle);
+    double unitVectorX = cos(angle);
+    double unitVectorY = sin(angle);
+    double posX = c.GetX() + d * unitVectorX;
+    double posY = c.GetX() + d * unitVectorY;
+    result = ScenePoint2D(posX, posY);
+  }
+
+  double RadiansToDegrees(double angleRad)
+  {
+    static const double factor = 180.0 / g_pi;
+    return angleRad * factor;
+  }
+
+  void AddSquare(PolylineSceneLayer::Chain& chain,
+    const Scene2D& scene,
+    const ScenePoint2D& centerS,
+    const double& sideLengthS)
+  {
+    /*
+    The scene is required here because we need to draw the square with its
+    sides parallel to the SCREEN axis, not the SCENE axis
+    */
+
+    // get the scaling factor 
+    const double sceneToCanvas =
+      scene.GetSceneToCanvasTransform().ComputeZoom();
+
+    chain.clear();
+    chain.reserve(4);
+    ScenePoint2D centerC = centerS.Apply(scene.GetSceneToCanvasTransform());
+    //TODO: take DPI into account 
+    double handleLX = centerC.GetX() - sideLengthS * sceneToCanvas * 0.5;
+    double handleTY = centerC.GetY() - sideLengthS * sceneToCanvas * 0.5;
+    double handleRX = centerC.GetX() + sideLengthS * sceneToCanvas * 0.5;
+    double handleBY = centerC.GetY() + sideLengthS * sceneToCanvas * 0.5;
+    ScenePoint2D LTC(handleLX, handleTY);
+    ScenePoint2D RTC(handleRX, handleTY);
+    ScenePoint2D RBC(handleRX, handleBY);
+    ScenePoint2D LBC(handleLX, handleBY);
+
+    ScenePoint2D startLT = LTC.Apply(scene.GetCanvasToSceneTransform());
+    ScenePoint2D startRT = RTC.Apply(scene.GetCanvasToSceneTransform());
+    ScenePoint2D startRB = RBC.Apply(scene.GetCanvasToSceneTransform());
+    ScenePoint2D startLB = LBC.Apply(scene.GetCanvasToSceneTransform());
+
+    chain.push_back(startLT);
+    chain.push_back(startRT);
+    chain.push_back(startRB);
+    chain.push_back(startLB);
+  }
+#if 0
+  void AddArc(
+    PolylineSceneLayer::Chain & chain
+    , const Scene2D & scene
+    , const ScenePoint2D & p1
+    , const ScenePoint2D & c
+    , const ScenePoint2D & p2
+    , const double& radiusS
+    , const bool          clockwise
+    , const int           subdivisionsCount)
+  {
+    double p1cAngle = atan2(p1.GetY() - c.GetY(), p1.GetX() - c.GetX());
+    double p2cAngle = atan2(p2.GetY() - c.GetY(), p2.GetX() - c.GetX());
+    AddArc(
+      chain, scene, c, radiusS, p1cAngle, p2cAngle,
+      clockwise, subdivisionsCount);
+  }
+#endif
+
+  void AddShortestArc(
+    PolylineSceneLayer::Chain& chain
+    , const ScenePoint2D& p1
+    , const ScenePoint2D& c
+    , const ScenePoint2D& p2
+    , const double& radiusS
+    , const int                  subdivisionsCount)
+  {
+    double p1cAngle = atan2(p1.GetY() - c.GetY(), p1.GetX() - c.GetX());
+    double p2cAngle = atan2(p2.GetY() - c.GetY(), p2.GetX() - c.GetX());
+    AddShortestArc(
+      chain, c, radiusS, p1cAngle, p2cAngle, subdivisionsCount);
+  }
+
+  void AddShortestArc(
+    PolylineSceneLayer::Chain& chain
+    , const ScenePoint2D& centerS
+    , const double& radiusS
+    , const double                startAngleRad
+    , const double                endAngleRad
+    , const int                   subdivisionsCount)
+  {
+    // this gives a signed difference between angle which
+    // is the smallest difference (in magnitude) between 
+    // the angles
+    double delta = NormalizeAngle(endAngleRad - startAngleRad);
+
+    chain.clear();
+    chain.reserve(subdivisionsCount + 1);
+
+    double angleIncr = delta / static_cast<double>(subdivisionsCount);
+
+    double theta = startAngleRad;
+    for (int i = 0; i < subdivisionsCount + 1; ++i)
+    {
+      double offsetX = radiusS * cos(theta);
+      double offsetY = radiusS * sin(theta);
+      double pointX = centerS.GetX() + offsetX;
+      double pointY = centerS.GetY() + offsetY;
+      chain.push_back(ScenePoint2D(pointX, pointY));
+      theta += angleIncr;
+    }
+  }
+
+#if 0
+  void AddArc(
+    PolylineSceneLayer::Chain & chain
+    , const Scene2D & scene
+    , const ScenePoint2D & centerS
+    , const double& radiusS
+    , const double        startAngleRad
+    , const double        endAngleRad
+    , const bool          clockwise
+    , const int           subdivisionsCount)
+  {
+    double startAngleRadN = NormalizeAngle(startAngleRad);
+    double endAngleRadN = NormalizeAngle(endAngleRad);
+
+    double angle1Rad = std::min(startAngleRadN, endAngleRadN);
+    double angle2Rad = std::max(startAngleRadN, endAngleRadN);
+
+    // now we are sure angle1Rad < angle2Rad
+    // this means that if we draw from 1 to 2, it will be clockwise (
+    // increasing angles).
+    // let's fix this:
+    if (!clockwise)
+    {
+      angle2Rad -= 2 * g_pi;
+      // now we are sure angle2Rad < angle1Rad (since they were normalized) 
+      // and, thus, going from 1 to 2 means the angle values will DECREASE,
+      // which is the definition of anticlockwise
+    }
+
+    chain.clear();
+    chain.reserve(subdivisionsCount + 1);
+
+    double angleIncr = (angle2Rad - angle1Rad)
+      / static_cast<double>(subdivisionsCount);
+
+    double theta = angle1Rad;
+    for (int i = 0; i < subdivisionsCount + 1; ++i)
+    {
+      double offsetX = radiusS * cos(theta);
+      double offsetY = radiusS * sin(theta);
+      double pointX = centerS.GetX() + offsetX;
+      double pointY = centerS.GetY() + offsetY;
+      chain.push_back(ScenePoint2D(pointX, pointY));
+      theta += angleIncr;
+    }
+  }
+#endif
+
+  void AddCircle(PolylineSceneLayer::Chain& chain,
+                 const ScenePoint2D&        centerS,
+                 const double&              radiusS,
+                 const int                  numSubdivisions)
+  {
+    //ScenePoint2D centerC = centerS.Apply(scene.GetSceneToCanvasTransform());
+    //TODO: take DPI into account
+
+    // TODO: automatically compute the number for segments for smooth 
+    // display based on the radius in pixels.
+
+    chain.clear();
+    chain.reserve(numSubdivisions);
+
+    double angleIncr = (2.0 * g_pi)
+      / static_cast<double>(numSubdivisions);
+
+    double theta = 0;
+    for (int i = 0; i < numSubdivisions; ++i)
+    {
+      double offsetX = radiusS * cos(theta);
+      double offsetY = radiusS * sin(theta);
+      double pointX = centerS.GetX() + offsetX;
+      double pointY = centerS.GetY() + offsetY;
+      chain.push_back(ScenePoint2D(pointX, pointY));
+      theta += angleIncr;
+    }
+  }
+
+  double NormalizeAngle(double angle)
+  {
+    double retAngle = angle;
+    while (retAngle < -1.0 * g_pi)
+      retAngle += 2 * g_pi;
+    while (retAngle >= g_pi)
+      retAngle -= 2 * g_pi;
+    return retAngle;
+  }
+
+  double MeasureAngle(const ScenePoint2D& p1, const ScenePoint2D& c, const ScenePoint2D& p2)
+  {
+    double p1cAngle = atan2(p1.GetY() - c.GetY(), p1.GetX() - c.GetX());
+    double p2cAngle = atan2(p2.GetY() - c.GetY(), p2.GetX() - c.GetX());
+    double delta = p2cAngle - p1cAngle;
+    return NormalizeAngle(delta);
+  }
+
+
+#if 0
+  void AddEllipse(PolylineSceneLayer::Chain & chain,
+    const Scene2D & scene,
+    const ScenePoint2D & centerS,
+    const double& halfHAxis,
+    const double& halfVAxis)
+  {
+    chain.clear();
+    chain.reserve(4);
+    ScenePoint2D centerC = centerS.Apply(scene.GetSceneToCanvasTransform());
+    //TODO: take DPI into account
+    double handleLX = centerC.GetX() - sideLength / 2;
+    double handleTY = centerC.GetY() - sideLength / 2;
+    double handleRX = centerC.GetX() + sideLength / 2;
+    double handleBY = centerC.GetY() + sideLength / 2;
+    ScenePoint2D LTC(handleLX, handleTY);
+    ScenePoint2D RTC(handleRX, handleTY);
+    ScenePoint2D RBC(handleRX, handleBY);
+    ScenePoint2D LBC(handleLX, handleBY);
+
+    ScenePoint2D startLT = LTC.Apply(scene.GetCanvasToSceneTransform());
+    ScenePoint2D startRT = RTC.Apply(scene.GetCanvasToSceneTransform());
+    ScenePoint2D startRB = RBC.Apply(scene.GetCanvasToSceneTransform());
+    ScenePoint2D startLB = LBC.Apply(scene.GetCanvasToSceneTransform());
+
+    chain.push_back(startLT);
+    chain.push_back(startRT);
+    chain.push_back(startRB);
+    chain.push_back(startLB);
+  }
+#endif
+
+#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
+  /**
+  This utility function assumes that the layer holder contains 5 text layers
+  and will use the first four ones for the text background and the fifth one
+  for the actual text
+  */
+  void SetTextLayerOutlineProperties(
+    Scene2D& scene
+    , boost::shared_ptr<LayerHolder> layerHolder
+    , const char* text
+    , ScenePoint2D p
+    , int startingLayerIndex) 
+  {
+    double xoffsets[5] = { 2, 0, -2, 0, 0 };
+    double yoffsets[5] = { 0, -2, 0, 2, 0 };
+
+    // get the scaling factor 
+    const double pixelToScene =
+      scene.GetCanvasToSceneTransform().ComputeZoom();
+
+    for (int i = startingLayerIndex; i < startingLayerIndex + 5; ++i)
+    {
+      TextSceneLayer* textLayer = layerHolder->GetTextLayer(i);
+      if (textLayer != NULL)
+      {
+        textLayer->SetText(text);
+
+        if (i == startingLayerIndex + 4)
+        {
+          textLayer->SetColor(TEXT_COLOR_RED,
+                              TEXT_COLOR_GREEN,
+                              TEXT_COLOR_BLUE);
+        }
+        else
+        {
+          textLayer->SetColor(TEXT_OUTLINE_COLOR_RED,
+                              TEXT_OUTLINE_COLOR_GREEN,
+                              TEXT_OUTLINE_COLOR_BLUE);
+        }
+
+        ScenePoint2D textAnchor;
+        int offIndex = i - startingLayerIndex;
+        ORTHANC_ASSERT(offIndex >= 0 && offIndex < 5);
+        textLayer->SetPosition(
+          p.GetX() + xoffsets[offIndex] * pixelToScene,
+          p.GetY() + yoffsets[offIndex] * pixelToScene);
+      }
+    }
+  }
+#else
+  void SetTextLayerProperties(
+    Scene2D& scene
+    , boost::shared_ptr<LayerHolder> layerHolder
+    , const char* text
+    , ScenePoint2D p
+    , int layerIndex)
+  {
+    TextSceneLayer* textLayer = layerHolder->GetTextLayer(layerIndex);
+    if (textLayer != NULL)
+    {
+      textLayer->SetText(text);
+      textLayer->SetColor(TEXT_COLOR_RED, TEXT_COLOR_GREEN, TEXT_COLOR_BLUE);
+
+      ScenePoint2D textAnchor;
+      textLayer->SetPosition(p.GetX(), p.GetY());
+    }
+  }
+#endif 
+
+  std::ostream& operator<<(std::ostream& os, const ScenePoint2D& p)
+  {
+    os << "x = " << p.GetX() << " , y = " << p.GetY();
+    return os;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureToolsToolbox.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,200 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "PredeclaredTypes.h"
+#include "../Scene2D/PolylineSceneLayer.h"
+#include "../Scene2D/Scene2D.h"
+
+namespace OrthancStone
+{
+
+  /**
+  This function will create a square around the center point supplied in
+  scene coordinates, with a side length given in canvas coordinates. The
+  square sides are parallel to the canvas boundaries.
+  */
+  void AddSquare(PolylineSceneLayer::Chain& chain,
+                 const Scene2D&             scene,
+                 const ScenePoint2D&        centerS,
+                 const double&              sideLengthS);
+
+  /**
+    Creates an arc centered on c that goes
+    - from a point r1:
+      - so that r1 belongs to the p1,c line
+      - so that the distance from c to r1 equals radius
+    - to a point r2:
+      - so that r2 belongs to the p2,c line
+      - so that the distance from c to r2 equals radius
+    - that follows the shortest among the two possible paths
+
+    Warning: the existing chain content will be wiped out.
+  */
+  void AddShortestArc(
+    PolylineSceneLayer::Chain& chain
+    , const ScenePoint2D& p1
+    , const ScenePoint2D& c
+    , const ScenePoint2D& p2
+    , const double& radiusS
+    , const int                   subdivisionsCount = 63);
+
+  /**
+    Creates an arc (open curve) with "numSubdivisions" (N + 1 points) from
+    start angle to end angle, by following the shortest arc.
+
+    Warning: the existing chain content will be wiped out.
+  */
+  void AddShortestArc(
+    PolylineSceneLayer::Chain& chain
+    , const ScenePoint2D& centerS
+    , const double& radiusS
+    , const double                startAngleRad
+    , const double                endAngleRad
+    , const int                   subdivisionsCount = 63);
+
+#if 0
+  /**
+    Creates an arc centered on c that goes
+    - from a point r1:
+      - so that r1 belongs to the p1,c line
+      - so that the distance from c to r1 equals radius
+    - to a point r2:
+      - so that r2 belongs to the p2,c line
+      - so that the distance from c to r2 equals radius
+
+    if clockwise is true, the arc is drawn from r1 to r2 with increasing
+    angle values. Otherwise, the angle values decrease.
+
+    Warning: the existing chain content will be wiped out.
+  */
+
+  void AddArc(
+    PolylineSceneLayer::Chain & chain
+    , const Scene2D & scene
+    , const ScenePoint2D & p1
+    , const ScenePoint2D & c
+    , const ScenePoint2D & p2
+    , const double& radiusS
+    , const bool                 clockwise
+    , const int                  subdivisionsCount = 63);
+
+  /**
+    Creates an arc (open curve) with "numSubdivisions" (N + 1 points) from
+    start angle to end angle with the supplied radius.
+
+    if clockwise is true, the arc is drawn from start to end by increasing the
+    angle values.
+
+    Otherwise, the angle value decreases from start to end.
+
+    Warning: the existing chain content will be wiped out.
+  */
+  void AddArc(
+    PolylineSceneLayer::Chain& chain
+    , const Scene2D& scene
+    , const ScenePoint2D& centerS
+    , const double& radiusS
+    , const double        startAngleRad
+    , const double        endAngleRad
+    , const bool          clockwise
+    , const int           subdivisionsCount = 63);
+#endif
+  /**
+    Creates a circle (closed curve) with "numSubdivisions"
+    (N points)
+
+    Warning: the existing chain content will be wiped out.
+  */
+  void AddCircle(PolylineSceneLayer::Chain& chain,
+                 const ScenePoint2D&        centerS,
+                 const double&              radiusS,
+                 const int                  numSubdivisions = 63);
+
+  /**
+    Adds or subtracts 2*pi as many times as need to shift the specified
+    angle to a value such as: -pi <= value < pi
+   */
+  double NormalizeAngle(double angle);
+
+  /**
+    Returns the angle magnitude between the p1,c and p2,c lines.
+    The returned angle is between 0 and 2*pi
+
+    If the angle is between 0 and pi, this means that the shortest arc
+    from p1 to p2 is clockwise.
+
+    If the angle is between pi and 2*pi, this means that the shortest arc
+    from p1 to p2 is COUNTERclockwise.
+
+  */
+  double MeasureAngle(
+    const ScenePoint2D& p1, const ScenePoint2D& c, const ScenePoint2D& p2);
+
+  /**
+  RadiansToDegrees
+  */
+  double RadiansToDegrees(double angleRad);
+
+  /**
+  This function will return the coordinates of a point that:
+  - belongs to the two bisecting lines of the p1 c p2 angle.
+  - is a distance d from c.
+  Among the four possible points, the one returned will be the one belonging
+  to the *smallest* half-plane defined by the [c,p1[ and [c,p2[ half-lines.
+  */
+  void GetPositionOnBisectingLine(
+    ScenePoint2D& result
+    , const ScenePoint2D& p1
+    , const ScenePoint2D& c
+    , const ScenePoint2D& p2
+    , const double d);
+
+
+#if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
+  /**
+  This helper is used when drawing text with an outline.
+  It set the properties for several text layers at once : first the
+  four outline layers, with a position shift and then the actual main text
+  layer.
+
+  The five text layers are supposed to already exist in the scene, starting
+  from startingLayerIndex, up to (and not including) startingLayerIndex+5.
+  */
+  void SetTextLayerOutlineProperties(
+      Scene2D& scene
+    , boost::shared_ptr<LayerHolder> layerHolder
+    , const char* text
+    , ScenePoint2D p
+    , int startingLayerIndex);
+#else
+  void SetTextLayerProperties(
+    Scene2D& scene
+    , boost::shared_ptr<LayerHolder> layerHolder
+    , const char* text
+    , ScenePoint2D p
+    , int layerIndex);
+#endif
+
+  std::ostream& operator<<(std::ostream& os, const ScenePoint2D& p);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureTrackers.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,100 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "MeasureTrackers.h"
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+
+  CreateMeasureTracker::CreateMeasureTracker(boost::shared_ptr<IViewport> viewport)
+    : viewport_(viewport)
+    , alive_(true)
+    , commitResult_(true)
+  {
+  }
+
+  void CreateMeasureTracker::Cancel()
+  {
+    commitResult_ = false;
+    alive_ = false;
+  }
+
+  bool CreateMeasureTracker::IsAlive() const
+  {
+    return alive_;
+  }
+
+  CreateMeasureTracker::~CreateMeasureTracker()
+  {
+    // if the tracker completes successfully, we add the command
+    // to the undo stack
+    // otherwise, we simply undo it
+
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+
+    if (commitResult_)
+      lock->GetController().PushCommand(command_);
+    else
+      command_->Undo();
+
+    lock->Invalidate();
+  }
+
+  EditMeasureTracker::EditMeasureTracker(boost::shared_ptr<IViewport> viewport, const PointerEvent& e)
+    : viewport_(viewport)
+    , alive_(true)
+    , commitResult_(true)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+
+    originalClickPosition_ = e.GetMainPosition().Apply(
+      lock->GetController().GetScene().GetCanvasToSceneTransform());
+  }
+
+  void EditMeasureTracker::Cancel()
+  {
+    commitResult_ = false;
+    alive_ = false;
+  }
+
+  bool EditMeasureTracker::IsAlive() const
+  {
+    return alive_;
+  }
+
+  EditMeasureTracker::~EditMeasureTracker()
+  {
+    // if the tracker completes successfully, we add the command
+    // to the undo stack
+    // otherwise, we simply undo it
+
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+
+    if (commitResult_)
+      lock->GetController().PushCommand(command_);
+    else
+      command_->Undo();
+
+    lock->Invalidate();
+  }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureTrackers.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,80 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "IFlexiblePointerTracker.h"
+#include "../Scene2D/Scene2D.h"
+#include "../Scene2D/PointerEvent.h"
+
+#include "MeasureTool.h"
+#include "MeasureCommands.h"
+
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+
+#include <vector>
+
+namespace OrthancStone
+{
+  class CreateMeasureTracker : public IFlexiblePointerTracker
+  {
+  public:
+    virtual void Cancel() ORTHANC_OVERRIDE;
+    virtual bool IsAlive() const ORTHANC_OVERRIDE;
+  protected:
+    CreateMeasureTracker(boost::shared_ptr<IViewport> viewport);
+
+    ~CreateMeasureTracker();
+  
+  protected:
+    boost::shared_ptr<CreateMeasureCommand>         command_;
+    boost::shared_ptr<IViewport>          viewport_;
+    bool                            alive_;
+
+  private:
+    bool                            commitResult_;
+  };
+
+  class EditMeasureTracker : public IFlexiblePointerTracker
+  {
+  public:
+    virtual void Cancel() ORTHANC_OVERRIDE;
+    virtual bool IsAlive() const ORTHANC_OVERRIDE;
+  protected:
+    EditMeasureTracker(boost::shared_ptr<IViewport> viewport, const PointerEvent& e);
+
+    ~EditMeasureTracker();
+
+  protected:
+    boost::shared_ptr<EditMeasureCommand> command_;
+    boost::shared_ptr<IViewport>   viewport_;
+    bool                                  alive_;
+    
+    ScenePoint2D                          GetOriginalClickPosition() const
+    {
+      return originalClickPosition_;
+    }
+  private:
+    ScenePoint2D                          originalClickPosition_;
+    bool                                  commitResult_;
+  };
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/OneGesturePointerTracker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,73 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OneGesturePointerTracker.h"
+
+#include <OrthancException.h>
+
+#include "../StoneException.h"
+
+namespace OrthancStone
+{
+  OneGesturePointerTracker::OneGesturePointerTracker(
+    boost::shared_ptr<IViewport> viewport)
+    : viewport_(viewport)
+    , alive_(true)
+    , currentTouchCount_(1)
+  {
+  }
+
+  void OneGesturePointerTracker::PointerUp(const PointerEvent& event)
+  {
+    // pointer up is only called for the LAST up event in case of a multi-touch
+    // gesture
+    ORTHANC_ASSERT(currentTouchCount_ > 0, "Wrong state in tracker");
+    currentTouchCount_--;
+    //LOG(TRACE) << "currentTouchCount_ becomes: " << currentTouchCount_;
+    if (currentTouchCount_ == 0)
+    {
+      //LOG(TRACE) << "currentTouchCount_ == 0 --> alive_ = false";
+      alive_ = false;
+    }
+  }
+
+  void OneGesturePointerTracker::PointerDown(const PointerEvent& event)
+  {
+    // additional touches are not taken into account but we need to count 
+    // the number of active touches
+    currentTouchCount_++;
+    //LOG(TRACE) << "currentTouchCount_ becomes: " << currentTouchCount_;
+
+    /**
+     * 2019-12-06 (SJO): Patch to have consistent behavior when mouse
+     * leaves the canvas while the tracker is still active, then
+     * button is released while out-of-canvas. Such an event is not
+     * caught (at least in WebAssembly), so we delete the tracker on
+     * the next click inside the canvas.
+     **/
+    alive_ = false;
+  }
+
+  bool OneGesturePointerTracker::IsAlive() const
+  {
+    return alive_;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/OneGesturePointerTracker.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,60 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "IFlexiblePointerTracker.h"
+
+#include "../Viewport/IViewport.h"
+
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+
+namespace OrthancStone
+{
+  /**
+  This base is class allows to write simple trackers that deal with single 
+  drag gestures with only one touch. It is *not* suitable for multi-touch and
+  multi-state trackers where various mouse operations need to be handled.
+
+  In order to write such a tracker:
+  - subclass this class
+  - you may store the initial click/touch position in the constructor
+  - implement PointerMove to react to pointer/touch events
+  - implement Cancel to restore the state at initial tracker creation time
+
+  */
+  class OneGesturePointerTracker : public IFlexiblePointerTracker
+  {
+  public:
+    OneGesturePointerTracker(boost::shared_ptr<IViewport> viewport);
+    virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE;
+    virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE;
+    virtual bool IsAlive() const ORTHANC_OVERRIDE;
+  
+  protected:
+    boost::shared_ptr<IViewport> viewport_;
+
+  private:
+    bool                   alive_;
+    int                    currentTouchCount_;
+  };
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/PredeclaredTypes.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,42 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+
+namespace OrthancStone
+
+{
+  class Scene2D;
+  class MeasureTool;
+  class LineMeasureTool;
+  class AngleMeasureTool;
+  class IPointerTracker;
+  class IFlexiblePointerTracker;
+  class CreateMeasureCommand;
+  class CreateLineMeasureCommand;
+  class CreateAngleMeasureCommand;
+  class MeasureCommand;
+  class ViewportController;
+  class LayerHolder;
+  class IViewport;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/UndoStack.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,68 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "UndoStack.h"
+
+#include "MeasureCommands.h"
+
+#include "../StoneException.h"
+
+namespace OrthancStone
+{
+  UndoStack::UndoStack() : numAppliedCommands_(0)
+  {}
+
+  void UndoStack::PushCommand(boost::shared_ptr<MeasureCommand> command)
+  {
+    commandStack_.erase(
+      commandStack_.begin() + numAppliedCommands_,
+      commandStack_.end());
+
+    ORTHANC_ASSERT(std::find(commandStack_.begin(), commandStack_.end(), command)
+      == commandStack_.end(), "Duplicate command");
+    commandStack_.push_back(command);
+    numAppliedCommands_++;
+  }
+
+  void UndoStack::Undo()
+  {
+    ORTHANC_ASSERT(CanUndo(), "");
+    commandStack_[numAppliedCommands_ - 1]->Undo();
+    numAppliedCommands_--;
+  }
+
+  void UndoStack::Redo()
+  {
+    ORTHANC_ASSERT(CanRedo(), "");
+    commandStack_[numAppliedCommands_]->Redo();
+    numAppliedCommands_++;
+  }
+
+  bool UndoStack::CanUndo() const
+  {
+    return numAppliedCommands_ > 0;
+  }
+
+  bool UndoStack::CanRedo() const
+  {
+    return numAppliedCommands_ < commandStack_.size();
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/UndoStack.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,77 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include <boost/shared_ptr.hpp>
+
+#include <vector>
+
+namespace OrthancStone
+{
+  class MeasureCommand;
+
+  class UndoStack
+  {
+  public:
+    UndoStack();
+
+    /**
+    Stores a command :
+    - this first trims the undo stack to keep the first numAppliedCommands_
+    - then it adds the supplied command at the top of the undo stack
+
+    In other words, when a new command is pushed, all the undone (and not
+    redone) commands are removed.
+    */
+    void PushCommand(boost::shared_ptr<MeasureCommand> command);
+
+    /**
+    Undoes the command at the top of the undo stack, or throws if there is no
+    command to undo.
+    You can check "CanUndo" first to protect against extraneous redo.
+    */
+    void Undo();
+
+    /**
+    Redoes the command that is just above the last applied command in the undo
+    stack or throws if there is no command to redo.
+    You can check "CanRedo" first to protect against extraneous redo.
+    */
+    void Redo();
+
+    /** selfexpl */
+    bool CanUndo() const;
+
+    /** selfexpl */
+    bool CanRedo() const;
+  
+  private:
+    std::vector<boost::shared_ptr<MeasureCommand> > commandStack_;
+
+    /**
+    This is always between >= 0 and <= undoStack_.size() and gives the
+    position where the controller is in the undo stack.
+    - If numAppliedCommands_ > 0, one can undo
+    - If numAppliedCommands_ < numAppliedCommands_.size(), one can redo
+    */
+    size_t                      numAppliedCommands_;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/ViewportController.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,307 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "ViewportController.h"
+
+#include "UndoStack.h"
+#include "MeasureCommands.h"
+
+#include "../StoneException.h"
+#include "../Scene2D/PanSceneTracker.h"
+#include "../Scene2D/RotateSceneTracker.h"
+#include "../Scene2D/ZoomSceneTracker.h"
+
+#include <boost/make_shared.hpp>
+
+namespace OrthancStone
+{
+  IFlexiblePointerTracker* DefaultViewportInteractor::CreateTracker(
+    boost::shared_ptr<IViewport>          viewport,
+    const PointerEvent& event,
+    unsigned int        viewportWidth,
+    unsigned int        viewportHeight)
+  {
+    switch (event.GetMouseButton())
+    {
+      case MouseButton_Left:
+        return new RotateSceneTracker(viewport, event);
+
+      case MouseButton_Middle:
+        return new PanSceneTracker(viewport, event);
+      
+      case MouseButton_Right:
+      {
+        if (viewportWidth != 0)
+        {
+          return new ZoomSceneTracker(viewport, event, viewportWidth);
+        }
+        else
+        {
+          return NULL;
+        }
+      }
+
+      default:
+        return NULL;
+    }
+  }
+
+  ViewportController::ViewportController(boost::shared_ptr<IViewport> viewport)
+    : viewport_(viewport)
+    , scene_(new Scene2D)
+    , canvasToSceneFactor_(1)
+  {
+    // undoStack_ is not default-initialized, which basically means empty.
+    // The controller must be able to cope with this.
+  }
+
+  ViewportController::~ViewportController()
+  {
+  }
+
+  void ViewportController::PushCommand(
+    boost::shared_ptr<MeasureCommand> command)
+  {
+    boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
+    if (undoStack.get() != NULL)
+    {
+      undoStack->PushCommand(command);
+    }
+    else
+    {
+      LOG(ERROR) << "Internal error: no undo stack!";
+    }
+  }
+
+  void ViewportController::Undo()
+  {
+    boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
+    if (undoStack.get() != NULL)
+    {
+      undoStack->Undo();
+    }
+    else
+    {
+      LOG(ERROR) << "Internal error: no undo stack!";
+    }
+  }
+
+  void ViewportController::Redo()
+  {
+    boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
+    if (undoStack.get() != NULL)
+    {
+      undoStack->Redo();
+    }
+    else
+    {
+      LOG(ERROR) << "Internal error: no undo stack!";
+    }
+  }
+
+  bool ViewportController::CanUndo() const
+  {
+    boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
+    if (undoStack.get() != NULL)
+    {
+      return undoStack->CanUndo();
+    }
+    else
+    {
+      LOG(ERROR) << "Internal error: no undo stack!";
+      return false;
+    }
+  }
+
+  bool ViewportController::CanRedo() const
+  {
+    boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
+    if (undoStack.get() != NULL)
+    {
+      return undoStack->CanRedo();
+    }
+    else
+    {
+      LOG(ERROR) << "Internal error: no undo stack!";
+      return false;
+    }
+  }
+  
+  std::vector<boost::shared_ptr<MeasureTool> > 
+    ViewportController::HitTestMeasureTools(ScenePoint2D p)
+  {
+    std::vector<boost::shared_ptr<MeasureTool> > ret;
+    
+    for (size_t i = 0; i < measureTools_.size(); ++i)
+    {
+      if (measureTools_[i]->HitTest(p))
+        ret.push_back(measureTools_[i]);
+    }
+    return ret;
+  }
+  
+  void ViewportController::ResetMeasuringToolsHighlight()
+  {
+    for (size_t i = 0; i < measureTools_.size(); ++i)
+    {
+      measureTools_[i]->ResetHighlightState();
+    }
+  }
+
+  OrthancStone::AffineTransform2D 
+    ViewportController::GetCanvasToSceneTransform() const
+  {
+    return scene_->GetCanvasToSceneTransform();
+  }
+
+  OrthancStone::AffineTransform2D 
+    ViewportController::GetSceneToCanvasTransform() const
+  {
+    return scene_->GetSceneToCanvasTransform();
+  }
+
+  void ViewportController::SetSceneToCanvasTransform(
+    const AffineTransform2D& transform)
+  {
+    scene_->SetSceneToCanvasTransform(transform);
+
+    canvasToSceneFactor_ = scene_->GetCanvasToSceneTransform().ComputeZoom();
+    BroadcastMessage(SceneTransformChanged(*this));
+  }
+
+  void ViewportController::FitContent(unsigned int viewportWidth,
+                                      unsigned int viewportHeight)
+  {
+    scene_->FitContent(viewportWidth, viewportHeight);
+    canvasToSceneFactor_ = scene_->GetCanvasToSceneTransform().ComputeZoom();
+    BroadcastMessage(SceneTransformChanged(*this));
+  }
+
+  void ViewportController::AddMeasureTool(
+    boost::shared_ptr<MeasureTool> measureTool)
+  {
+    ORTHANC_ASSERT(std::find(measureTools_.begin(), 
+                             measureTools_.end(), 
+                             measureTool) == measureTools_.end(), 
+                  "Duplicate measure tool");
+    measureTools_.push_back(measureTool);
+  }
+
+  void ViewportController::RemoveMeasureTool(
+    boost::shared_ptr<MeasureTool> measureTool)
+  {
+    ORTHANC_ASSERT(std::find(measureTools_.begin(), 
+                             measureTools_.end(), 
+                             measureTool) != measureTools_.end(), 
+                  "Measure tool not found");
+    measureTools_.erase(
+      std::remove(measureTools_.begin(), measureTools_.end(), measureTool), 
+      measureTools_.end());
+  }
+
+  double ViewportController::GetCanvasToSceneFactor() const
+  {
+    return canvasToSceneFactor_;
+  }
+
+  double ViewportController::GetHandleSideLengthS() const
+  {
+    return HANDLE_SIDE_LENGTH_CANVAS_COORD * GetCanvasToSceneFactor();
+  }
+
+  double ViewportController::GetAngleToolArcRadiusS() const
+  {
+    return ARC_RADIUS_CANVAS_COORD * GetCanvasToSceneFactor();
+  }
+
+  double ViewportController::GetHitTestMaximumDistanceS() const
+  {
+    return HIT_TEST_MAX_DISTANCE_CANVAS_COORD * GetCanvasToSceneFactor();
+  }
+
+  double ViewportController::GetAngleTopTextLabelDistanceS() const
+  {
+    return TEXT_CENTER_DISTANCE_CANVAS_COORD * GetCanvasToSceneFactor();
+  }
+
+
+  void ViewportController::HandleMousePress(
+    OrthancStone::IViewportInteractor&  interactor,
+    const PointerEvent&                 event,
+    unsigned int                        viewportWidth,
+    unsigned int                        viewportHeight)
+  {
+    if (activeTracker_)
+    {
+      // We are dealing with a multi-stage tracker (that is made of several 
+      // interactions)
+      activeTracker_->PointerDown(event);
+
+      if (!activeTracker_->IsAlive())
+      {
+        activeTracker_.reset();
+      }
+    }
+    else
+    {
+      // Check whether there is already a measure tool at that position
+      for (size_t i = 0; i < measureTools_.size(); ++i)
+      {
+        if (measureTools_[i]->HitTest(event.GetMainPosition()))
+        {
+          activeTracker_ = measureTools_[i]->CreateEditionTracker(event);
+          return;
+        }
+      }
+
+      // No measure tool, create new tracker from the interactor
+      activeTracker_.reset(interactor.CreateTracker(viewport_, 
+                                                    event, 
+                                                    viewportWidth, 
+                                                    viewportHeight));
+    }
+  }
+
+  bool ViewportController::HandleMouseMove(const PointerEvent& event)
+  {
+    if (activeTracker_)
+    {
+      activeTracker_->PointerMove(event);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+  void ViewportController::HandleMouseRelease(const PointerEvent& event)
+  {
+    if (activeTracker_)
+    {
+      activeTracker_->PointerUp(event);
+
+      if (!activeTracker_->IsAlive())
+      {
+        activeTracker_.reset();
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Scene2DViewport/ViewportController.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,270 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "PredeclaredTypes.h"
+
+#include "../Messages/IObservable.h"
+#include "../Scene2D/Scene2D.h"
+#include "../Scene2DViewport/IFlexiblePointerTracker.h"
+
+#include <Compatibility.h>
+
+#include <boost/enable_shared_from_this.hpp>
+#include <stack>
+
+namespace OrthancStone
+{
+  // TODO - Move this to another file
+  class IViewportInteractor : public boost::noncopyable
+  {
+  public:
+    virtual ~IViewportInteractor()
+    {
+    }
+
+    virtual IFlexiblePointerTracker* CreateTracker(boost::shared_ptr<IViewport> viewport,
+                                                   const PointerEvent& event,
+                                                   unsigned int viewportWidth,
+                                                   unsigned int viewportHeight) = 0;
+  };
+
+
+  // TODO - Move this to another file
+  class DefaultViewportInteractor : public IViewportInteractor
+  {
+  public:
+    virtual IFlexiblePointerTracker* CreateTracker(boost::shared_ptr<IViewport> viewport,
+                                                   const PointerEvent& event,
+                                                   unsigned int viewportWidth,
+                                                   unsigned int viewportHeight) ORTHANC_OVERRIDE;
+  };
+
+
+  class UndoStack;
+
+  const double ARC_RADIUS_CANVAS_COORD = 30.0;
+  const double TEXT_CENTER_DISTANCE_CANVAS_COORD = 90;
+
+  const double HANDLE_SIDE_LENGTH_CANVAS_COORD = 10.0;
+  const double HIT_TEST_MAX_DISTANCE_CANVAS_COORD = 15.0;
+
+  const uint8_t TEXT_COLOR_RED = 0;
+  const uint8_t TEXT_COLOR_GREEN = 223;
+  const uint8_t TEXT_COLOR_BLUE = 81;
+
+  const uint8_t TOOL_ANGLE_LINES_COLOR_RED = 0;
+  const uint8_t TOOL_ANGLE_LINES_COLOR_GREEN = 183;
+  const uint8_t TOOL_ANGLE_LINES_COLOR_BLUE = 17;
+                     
+  const uint8_t TOOL_ANGLE_LINES_HL_COLOR_RED = 0;
+  const uint8_t TOOL_ANGLE_LINES_HL_COLOR_GREEN = 17;
+  const uint8_t TOOL_ANGLE_LINES_HL_COLOR_BLUE = 183;
+
+  const uint8_t TOOL_LINES_COLOR_RED = 0;
+  const uint8_t TOOL_LINES_COLOR_GREEN = 223;
+  const uint8_t TOOL_LINES_COLOR_BLUE = 21;
+
+  const uint8_t TOOL_LINES_HL_COLOR_RED = 0;
+  const uint8_t TOOL_LINES_HL_COLOR_GREEN = 21;
+  const uint8_t TOOL_LINES_HL_COLOR_BLUE = 223;
+
+  const uint8_t TEXT_OUTLINE_COLOR_RED = 0;
+  const uint8_t TEXT_OUTLINE_COLOR_GREEN = 56;
+  const uint8_t TEXT_OUTLINE_COLOR_BLUE = 21;
+
+  /**
+  This object is responsible for hosting a scene, responding to messages from
+  the model and updating the scene accordingly.
+
+  It contains the list of active measuring tools as well as the stack
+  where measuring tool commands are stored.
+
+  The active tracker is also stored in the viewport controller.
+
+  Each canvas or other GUI area where we want to display a 2D image, either 
+  directly or through slicing must be assigned a ViewportController.
+  */
+  class ViewportController : 
+    public IObservable,
+    public boost::enable_shared_from_this<ViewportController>
+  {
+  public:
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, \
+                                        SceneTransformChanged, \
+                                        ViewportController);
+
+    ViewportController(boost::shared_ptr<IViewport> viewport);
+
+    ~ViewportController();
+
+    /**
+    This method returns the list of measure tools containing the supplied point
+    (in scene coords). A tracker can then be requested from the chosen 
+    measure tool, if needed
+    */
+    std::vector<boost::shared_ptr<MeasureTool> > HitTestMeasureTools(
+      ScenePoint2D p);
+
+    /**
+    This function will traverse the measuring tools and will clear their 
+    highlighted state
+    */
+    void ResetMeasuringToolsHighlight();
+
+    /**
+    With this method, the object takes ownership of the supplied tracker and
+    updates it according to user interaction
+    */
+    void AcquireActiveTracker(IFlexiblePointerTracker* tracker);
+
+    /** Forwarded to the underlying scene */
+    AffineTransform2D GetCanvasToSceneTransform() const;
+
+    /** Forwarded to the underlying scene */
+    AffineTransform2D GetSceneToCanvasTransform() const;
+
+    /** Forwarded to the underlying scene, and broadcasted to the observers */
+    void SetSceneToCanvasTransform(const AffineTransform2D& transform);
+
+    /** Forwarded to the underlying scene, and broadcasted to the observers */
+    void FitContent(unsigned int viewportWidth,
+                    unsigned int viewportHeight);
+
+    /** Adds a new measure tool */
+    void AddMeasureTool(boost::shared_ptr<MeasureTool> measureTool);
+
+    /** Removes a measure tool or throws if it cannot be found */
+    void RemoveMeasureTool(boost::shared_ptr<MeasureTool> measureTool);
+
+    /**
+    The square handle side length in *scene* coordinates
+    */
+    double GetHandleSideLengthS() const;
+
+    /**
+    The angle measure too arc  radius in *scene* coordinates
+
+    Note: you might wonder why this is not part of the AngleMeasureTool itself,
+    but we prefer to put all such constants in the same location, to ease 
+    */
+    double GetAngleToolArcRadiusS() const;
+
+    /**
+    The hit test maximum distance in *scene* coordinates.
+    If a pointer event is less than GetHandleSideLengthS() to a GUI element,
+    the hit test for this GUI element is seen as true
+    */
+    double GetHitTestMaximumDistanceS() const;
+
+    /**
+    Distance between the top of the angle measuring tool and the center of 
+    the label showing the actual measure, in *scene* coordinates
+    */
+    double GetAngleTopTextLabelDistanceS() const;
+
+
+    /** forwarded to the UndoStack */
+    void PushCommand(boost::shared_ptr<MeasureCommand> command);
+
+    /** forwarded to the UndoStack */
+    void Undo();
+
+    /** forwarded to the UndoStack */
+    void Redo();
+
+    /** forwarded to the UndoStack */
+    bool CanUndo() const;
+
+    /** forwarded to the UndoStack */
+    bool CanRedo() const;
+
+
+    // Must be expressed in canvas coordinates
+    void HandleMousePress(IViewportInteractor& interactor,
+                          const PointerEvent& event,
+                          unsigned int viewportWidth,
+                          unsigned int viewportHeight);
+
+    // Must be expressed in canvas coordinates. Returns "true" if the
+    // state has changed, so that "Invalidate()" can be called.
+    bool HandleMouseMove(const PointerEvent& event);
+
+    // Must be expressed in canvas coordinates
+    void HandleMouseRelease(const PointerEvent& event);
+
+    const Scene2D& GetScene() const
+    {
+      return *scene_;
+    }
+
+    Scene2D& GetScene()
+    {
+      return *scene_;
+    }
+
+    /**
+    This method is used in a move pattern: when the ownership of the scene 
+    managed by this viewport controller must be transferred to another 
+    controller.
+    */
+    Scene2D* ReleaseScene()
+    {
+      return scene_.release();
+    }
+
+    /**
+    This method is used when one wishes to replace the scene that is currently
+    managed by the controller. The previous scene is deleted and the controller
+    now has ownership of the new one.
+    */
+    void AcquireScene(Scene2D* scene)
+    {
+      scene_.reset(scene);
+    }
+
+    /**
+    Sets the undo stack that is used by PushCommand, Undo...
+    */
+    void SetUndoStack(boost::weak_ptr<UndoStack> undoStackW)
+    {
+      undoStackW_ = undoStackW;
+    }
+    
+    bool HasActiveTracker() const
+    {
+      return activeTracker_.get() != NULL;
+    }
+
+  private:
+    double GetCanvasToSceneFactor() const;
+
+    boost::shared_ptr<IViewport>                  viewport_;
+    boost::weak_ptr<UndoStack>                    undoStackW_;  // Global stack, possibly shared by all viewports
+    std::vector<boost::shared_ptr<MeasureTool> >  measureTools_;
+    boost::shared_ptr<IFlexiblePointerTracker>    activeTracker_;  // TODO - Couldn't this be a "std::unique_ptr"?
+
+    std::unique_ptr<Scene2D>   scene_;
+
+    // this is cached
+    double  canvasToSceneFactor_;    
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/StoneEnumerations.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,177 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "StoneEnumerations.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+namespace OrthancStone
+{  
+  SopClassUid StringToSopClassUid(const std::string& source)
+  {
+    std::string s = Orthanc::Toolbox::StripSpaces(source);
+
+    if (s == "1.2.840.10008.5.1.4.1.1.481.2")
+    {
+      return SopClassUid_RTDose;
+    }
+    else
+    {
+      //LOG(INFO) << "Other SOP class UID: " << source;
+      return SopClassUid_Other;
+    }
+  }  
+
+
+  void ComputeWindowing(float& targetCenter,
+                        float& targetWidth,
+                        ImageWindowing windowing,
+                        float customCenter,
+                        float customWidth)
+  {
+    switch (windowing)
+    {
+      case ImageWindowing_Custom:
+        targetCenter = customCenter;
+        targetWidth = customWidth;
+        break;
+
+      case ImageWindowing_Bone:
+        targetCenter = 300;
+        targetWidth = 2000;
+        break;
+
+      case ImageWindowing_Lung:
+        targetCenter = -600;
+        targetWidth = 1600;
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+  
+  void ComputeAnchorTranslation(double& deltaX,
+                                double& deltaY,
+                                BitmapAnchor anchor,
+                                unsigned int bitmapWidth,
+                                unsigned int bitmapHeight,
+                                unsigned int border)
+  {
+    double dw = static_cast<double>(bitmapWidth);
+    double dh = static_cast<double>(bitmapHeight);
+
+    switch (anchor)
+    {
+      case BitmapAnchor_TopLeft:
+        deltaX = 0;
+        deltaY = 0;
+        break;
+        
+      case BitmapAnchor_TopCenter:
+        deltaX = -dw / 2.0;
+        deltaY = 0;
+        break;
+        
+      case BitmapAnchor_TopRight:
+        deltaX = -dw;
+        deltaY = 0;
+        break;
+        
+      case BitmapAnchor_CenterLeft:
+        deltaX = 0;
+        deltaY = -dh / 2.0;
+        break;
+        
+      case BitmapAnchor_Center:
+        deltaX = -dw / 2.0;
+        deltaY = -dh / 2.0;
+        break;
+        
+      case BitmapAnchor_CenterRight:
+        deltaX = -dw;
+        deltaY = -dh / 2.0;
+        break;
+        
+      case BitmapAnchor_BottomLeft:
+        deltaX = 0;
+        deltaY = -dh;
+        break;
+        
+      case BitmapAnchor_BottomCenter:
+        deltaX = -dw / 2.0;
+        deltaY = -dh;
+        break;
+        
+      case BitmapAnchor_BottomRight:
+        deltaX = -dw;
+        deltaY = -dh;
+        break;
+        
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }    
+
+    if (border != 0)
+    {
+      double b = static_cast<double>(border);
+
+      switch (anchor)
+      {
+        case BitmapAnchor_TopLeft:
+        case BitmapAnchor_TopCenter:
+        case BitmapAnchor_TopRight:
+          deltaY += b;
+          break;
+        
+        case BitmapAnchor_BottomLeft:
+        case BitmapAnchor_BottomCenter:
+        case BitmapAnchor_BottomRight:
+          deltaY -= b;
+          break;
+        
+        default:
+          break;
+      }    
+
+      switch (anchor)
+      {
+        case BitmapAnchor_TopLeft:
+        case BitmapAnchor_CenterLeft:
+        case BitmapAnchor_BottomLeft:
+          deltaX += b;
+          break;
+
+        case BitmapAnchor_CenterRight:
+        case BitmapAnchor_TopRight:
+        case BitmapAnchor_BottomRight:
+          deltaX -= b;
+          break;
+        
+        default:
+          break;
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/StoneEnumerations.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,149 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OrthancFramework.h"
+
+#include <string>
+
+
+namespace OrthancStone
+{
+  enum SliceOffsetMode
+  {
+    SliceOffsetMode_Absolute,
+    SliceOffsetMode_Relative,
+    SliceOffsetMode_Loop
+  };
+
+  enum ImageWindowing
+  {
+    ImageWindowing_Bone,
+    ImageWindowing_Lung,
+    ImageWindowing_Custom
+  };
+
+  enum MouseButton
+  {
+    MouseButton_Left,
+    MouseButton_Right,
+    MouseButton_Middle,
+    MouseButton_None   // For instance, because of touch event
+  };
+
+  enum MouseWheelDirection
+  {
+    MouseWheelDirection_Up,
+    MouseWheelDirection_Down
+  };
+
+  enum VolumeProjection
+  {
+    VolumeProjection_Axial,
+    VolumeProjection_Coronal,
+    VolumeProjection_Sagittal
+  };
+
+  enum ImageInterpolation
+  {
+    ImageInterpolation_Nearest,
+    ImageInterpolation_Bilinear,
+    ImageInterpolation_Trilinear
+  };
+
+  enum KeyboardModifiers
+  {
+    KeyboardModifiers_None = 0,
+    KeyboardModifiers_Shift = (1 << 0),
+    KeyboardModifiers_Control = (1 << 1),
+    KeyboardModifiers_Alt = (1 << 2)
+  };
+
+  enum KeyboardKeys
+  {
+    KeyboardKeys_Generic = 0,
+
+    // let's use the same ids as in javascript to avoid some conversion in WASM: https://css-tricks.com/snippets/javascript/javascript-keycodes/
+    KeyboardKeys_Backspace = 8,
+    KeyboardKeys_Left = 37,
+    KeyboardKeys_Up = 38,
+    KeyboardKeys_Right = 39,
+    KeyboardKeys_Down = 40,
+    KeyboardKeys_Delete = 46,
+
+    KeyboardKeys_F1 = 112,
+    KeyboardKeys_F2 = 113,
+    KeyboardKeys_F3 = 114,
+    KeyboardKeys_F4 = 115,
+    KeyboardKeys_F5 = 116,
+    KeyboardKeys_F6 = 117,
+    KeyboardKeys_F7 = 118,
+    KeyboardKeys_F8 = 119,
+    KeyboardKeys_F9 = 120,
+    KeyboardKeys_F10 = 121,
+    KeyboardKeys_F11 = 122,
+    KeyboardKeys_F12 = 123,
+  };
+
+  enum SopClassUid
+  {
+    SopClassUid_Other,
+    SopClassUid_RTDose
+  };
+
+  enum BitmapAnchor
+  {
+    BitmapAnchor_BottomLeft,
+    BitmapAnchor_BottomCenter,
+    BitmapAnchor_BottomRight,
+    BitmapAnchor_CenterLeft,
+    BitmapAnchor_Center,
+    BitmapAnchor_CenterRight,
+    BitmapAnchor_TopLeft,
+    BitmapAnchor_TopCenter,
+    BitmapAnchor_TopRight
+  };
+
+  enum SliceAction
+  {
+    SliceAction_FastPlus,
+    SliceAction_Plus,
+    SliceAction_None,
+    SliceAction_Minus,
+    SliceAction_FastMinus
+  };
+
+  SopClassUid StringToSopClassUid(const std::string& source);
+
+  void ComputeWindowing(float& targetCenter,
+                        float& targetWidth,
+                        ImageWindowing windowing,
+                        float customCenter,
+                        float customWidth);
+
+  void ComputeAnchorTranslation(double& deltaX /* out */,
+                                double& deltaY /* out */,
+                                BitmapAnchor anchor,
+                                unsigned int bitmapWidth,
+                                unsigned int bitmapHeight,
+                                unsigned int border = 0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/StoneException.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,148 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "Toolbox/LinearAlgebra.h"
+
+#include <OrthancException.h>
+
+#include <boost/lexical_cast.hpp>
+
+#include <iostream>
+
+namespace OrthancStone
+{
+  enum ErrorCode
+  {
+    ErrorCode_Success,
+    ErrorCode_OrthancError, // this StoneException is actually an OrthancException with an Orthanc error code
+    ErrorCode_ApplicationException, // this StoneException is specific to an application (and should have its own internal error code)
+    ErrorCode_NotImplemented, // case not implemented
+
+    ErrorCode_CanOnlyAddOneLayerAtATime,
+    ErrorCode_CommandJsonInvalidFormat,
+    ErrorCode_WebGLContextLost,
+    ErrorCode_Last
+  };
+
+
+
+  class StoneException
+  {
+  protected:
+    OrthancStone::ErrorCode     errorCode_;
+
+  public:
+    explicit StoneException(ErrorCode errorCode) :
+      errorCode_(errorCode)
+    {
+    }
+
+    virtual ~StoneException() {}
+
+    ErrorCode GetErrorCode() const
+    {
+      return errorCode_;
+    }
+
+    virtual const char* What() const
+    {
+      switch (errorCode_)
+      {
+      case ErrorCode_Success:
+        return "Success";
+        break;
+      case ErrorCode_OrthancError:
+        return "OrthancError";
+        break;
+      case ErrorCode_ApplicationException:
+        return "ApplicationException";
+        break;
+      case ErrorCode_NotImplemented:
+        return "NotImplemented";
+        break;
+      case ErrorCode_CanOnlyAddOneLayerAtATime:
+        return "CanOnlyAddOneLayerAtATime";
+        break;
+      case ErrorCode_CommandJsonInvalidFormat:
+        return "CommandJsonInvalidFormat";
+        break;
+      case ErrorCode_WebGLContextLost:
+        return "WebGLContextLost";
+        break;
+      case ErrorCode_Last:
+        return "Last";
+        break;
+      default:
+        return "Unknown exception code!";
+      }
+    }
+  };
+}
+
+// See https://isocpp.org/wiki/faq/misc-technical-issues#macros-with-multi-stmts
+// (or google "Multiple lines macro C++ faq lite" if link is dead)
+#define ORTHANC_ASSERT2(cond,streamChainMessage) \
+    if (!(cond)) { \
+      std::stringstream sst; \
+      sst << "Assertion failed. Condition = \"" #cond "\" Message = \"" << streamChainMessage << "\""; \
+      std::string sstr = sst.str(); \
+      throw ::Orthanc::OrthancException(::Orthanc::ErrorCode_InternalError,sstr.c_str()); \
+    } else (void)0
+
+#define ORTHANC_ASSERT1(cond) \
+    if (!(cond)) { \
+      std::stringstream sst; \
+      sst << "Assertion failed. Condition = \"" #cond "\""; \
+      std::string sstr = sst.str(); \
+      throw ::Orthanc::OrthancException(::Orthanc::ErrorCode_InternalError,sstr.c_str()); \
+    } else (void)0
+
+# define ORTHANC_EXPAND( x ) x 
+# define GET_ORTHANC_ASSERT(_1,_2,NAME,...) NAME
+# define ORTHANC_ASSERT(...) ORTHANC_EXPAND(GET_ORTHANC_ASSERT(__VA_ARGS__, ORTHANC_ASSERT2, ORTHANC_ASSERT1, UNUSED)(__VA_ARGS__))
+
+
+
+
+
+/*
+Explanation:
+
+ORTHANC_ASSERT(a)
+ORTHANC_EXPAND(GET_ORTHANC_ASSERT(a, ORTHANC_ASSERT2, ORTHANC_ASSERT1, UNUSED)(a))
+ORTHANC_EXPAND(ORTHANC_ASSERT1(a))
+ORTHANC_ASSERT1(a)
+
+ORTHANC_ASSERT(a,b)
+ORTHANC_EXPAND(GET_ORTHANC_ASSERT(a, b, ORTHANC_ASSERT2, ORTHANC_ASSERT1, UNUSED)(a,b))
+ORTHANC_EXPAND(ORTHANC_ASSERT2(a,b))
+ORTHANC_ASSERT2(a,b)
+
+Note: ORTHANC_EXPAND is required for some older compilers (MS v100 cl.exe )
+*/
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/StoneInitialization.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,212 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "StoneInitialization.h"
+
+#if !defined(ORTHANC_ENABLE_SDL)
+#  error Macro ORTHANC_ENABLE_SDL must be defined
+#endif
+
+#if !defined(ORTHANC_ENABLE_SSL)
+#  error Macro ORTHANC_ENABLE_SSL must be defined
+#endif
+
+#if !defined(ORTHANC_ENABLE_CURL)
+#  error Macro ORTHANC_ENABLE_CURL must be defined
+#endif
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error Macro ORTHANC_ENABLE_DCMTK must be defined
+#  if !defined(DCMTK_VERSION_NUMBER)
+#    error Macro DCMTK_VERSION_NUMBER must be defined
+#  endif
+#endif
+
+#if ORTHANC_ENABLE_SDL == 1
+#  include "Viewport/SdlWindow.h"
+#endif
+
+#if ORTHANC_ENABLE_CURL == 1
+#  include <HttpClient.h>
+#endif
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include <DicomParsing/FromDcmtkBridge.h>
+#endif
+
+#if ORTHANC_ENABLE_WASM == 1
+static double viewportsTimeout_ = 1000;
+static std::unique_ptr<OrthancStone::WebGLViewportsRegistry>  viewportsRegistry_;
+#endif
+
+#include "Toolbox/LinearAlgebra.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+#include <locale>
+
+
+namespace OrthancStone
+{
+  void StoneInitialize(void* pluginContext)
+  {
+    if (pluginContext != NULL)
+    {
+      Orthanc::Logging::InitializePluginContext(pluginContext);
+    }
+    else
+    {
+      Orthanc::Logging::Initialize();
+    }
+
+#if ORTHANC_ENABLE_SSL == 1
+    // Must be before curl
+    Orthanc::Toolbox::InitializeOpenSsl();
+#endif
+
+#if ORTHANC_ENABLE_CURL == 1
+    Orthanc::HttpClient::GlobalInitialize();
+#  if ORTHANC_ENABLE_SSL == 1
+    Orthanc::HttpClient::ConfigureSsl(false, "");
+#  endif
+#endif
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    Orthanc::FromDcmtkBridge::InitializeDictionary(true);
+    Orthanc::FromDcmtkBridge::InitializeCodecs();
+#  if DCMTK_VERSION_NUMBER <= 360
+    OFLog::configure(OFLogger::FATAL_LOG_LEVEL);
+#  else
+    OFLog::configure(OFLogger::OFF_LOG_LEVEL);
+#  endif
+#endif
+
+    /**
+     * This call is necessary to make "boost::lexical_cast<>" work in
+     * a consistent way in the presence of "double" or "float", and of
+     * a numeric locale that replaces dot (".") by comma (",") as the
+     * decimal separator.
+     * https://stackoverflow.com/a/18981514/881731
+     **/
+    std::locale::global(std::locale::classic());
+
+    {
+      // Run-time checks of locale settings, to be run after Qt has
+      // been initialized, as Qt changes locale settings
+
+      {
+        OrthancStone::Vector v;
+        if (!OrthancStone::LinearAlgebra::ParseVector(v, "1.3671875\\-1.3671875") ||
+            v.size() != 2 ||
+            !OrthancStone::LinearAlgebra::IsNear(1.3671875f, v[0]) ||
+            !OrthancStone::LinearAlgebra::IsNear(-1.3671875f, v[1]))
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                          "Error in the locale settings, giving up");
+        }
+      }
+
+      {
+        Json::Value dicomweb = Json::objectValue;
+        dicomweb["00280030"] = Json::objectValue;
+        dicomweb["00280030"]["vr"] = "DS";
+        dicomweb["00280030"]["Value"] = Json::arrayValue;
+        dicomweb["00280030"]["Value"].append(1.2f);
+        dicomweb["00280030"]["Value"].append(-1.5f);
+
+        Orthanc::DicomMap source;
+        source.FromDicomWeb(dicomweb);
+
+        std::string s;
+        OrthancStone::Vector v;
+        if (!source.LookupStringValue(s, Orthanc::DICOM_TAG_PIXEL_SPACING, false) ||
+            !OrthancStone::LinearAlgebra::ParseVector(v, s) ||
+            v.size() != 2 ||
+            !OrthancStone::LinearAlgebra::IsNear(1.2f, v[0]) ||
+            !OrthancStone::LinearAlgebra::IsNear(-1.5f, v[1]))
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                          "Error in the locale settings, giving up");
+        }
+      }
+    }
+
+#if ORTHANC_ENABLE_SDL == 1
+    OrthancStone::SdlWindow::GlobalInitialize();
+#endif
+  }
+  
+
+  void StoneFinalize()
+  {
+#if ORTHANC_ENABLE_WASM == 1
+    viewportsRegistry_.reset();
+#endif
+    
+#if ORTHANC_ENABLE_SDL == 1
+    OrthancStone::SdlWindow::GlobalFinalize();
+#endif
+    
+#if ORTHANC_ENABLE_DCMTK == 1
+    Orthanc::FromDcmtkBridge::FinalizeCodecs();
+#endif
+
+#if ORTHANC_ENABLE_CURL == 1
+    Orthanc::HttpClient::GlobalFinalize();
+#endif
+
+#if ORTHANC_ENABLE_SSL == 1
+    Orthanc::Toolbox::FinalizeOpenSsl();
+#endif
+
+    Orthanc::Logging::Finalize();
+  }
+
+
+#if ORTHANC_ENABLE_WASM == 1
+  void SetWebGLViewportsRegistryTimeout(double timeout)
+  {
+    if (viewportsRegistry_.get())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      viewportsTimeout_ = timeout;
+    }
+  }
+#endif
+
+
+#if ORTHANC_ENABLE_WASM == 1
+  WebGLViewportsRegistry& GetWebGLViewportsRegistry()
+  {
+    if (viewportsRegistry_.get() == NULL)
+    {
+      viewportsRegistry_.reset(new WebGLViewportsRegistry(viewportsTimeout_));
+    }
+
+    return *viewportsRegistry_;
+  }
+#endif
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/StoneInitialization.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if !defined(ORTHANC_ENABLE_WASM)
+#  error Macro ORTHANC_ENABLE_WASM must be defined
+#endif
+
+#if ORTHANC_ENABLE_WASM == 1
+#  include "Viewport/WebGLViewportsRegistry.h"
+#endif
+
+#include <Logging.h>
+
+namespace OrthancStone
+{
+  void StoneInitialize(void* pluginContext);
+
+  inline void StoneInitialize()
+  {
+    StoneInitialize(NULL);
+  }
+
+  void StoneFinalize();
+
+#if ORTHANC_ENABLE_WASM == 1
+  void SetWebGLViewportsRegistryTimeout(double timeout);
+#endif
+
+#if ORTHANC_ENABLE_WASM == 1
+  WebGLViewportsRegistry& GetWebGLViewportsRegistry();
+#endif
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/AffineTransform2D.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,271 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "AffineTransform2D.h"
+
+#include "ImageGeometry.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  AffineTransform2D::AffineTransform2D() :
+    matrix_(LinearAlgebra::IdentityMatrix(3))
+  {
+  }
+
+  
+  AffineTransform2D::AffineTransform2D(const Matrix& m)
+  {
+    if (m.size1() != 3 ||
+        m.size2() != 3)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize);
+    }
+
+    if (!LinearAlgebra::IsCloseToZero(m(2, 0)) ||
+        !LinearAlgebra::IsCloseToZero(m(2, 1)) ||
+        LinearAlgebra::IsCloseToZero(m(2, 2)))
+    {
+      LOG(ERROR) << "Cannot setup an AffineTransform2D with perspective effects";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    matrix_ = m / m(2, 2);
+  }
+    
+
+  void AffineTransform2D::Apply(double& x /* inout */,
+                                double& y /* inout */) const
+  {
+    Vector p;
+    LinearAlgebra::AssignVector(p, x, y, 1);
+
+    Vector q = LinearAlgebra::Product(matrix_, p);
+
+    if (!LinearAlgebra::IsNear(q[2], 1.0))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+    else
+    {
+      x = q[0];
+      y = q[1];
+    }
+  }
+
+
+  void AffineTransform2D::Apply(Orthanc::ImageAccessor& target,
+                                const Orthanc::ImageAccessor& source,
+                                ImageInterpolation interpolation,
+                                bool clear) const
+  {
+    assert(LinearAlgebra::IsNear(matrix_(2, 0), 0) &&
+           LinearAlgebra::IsNear(matrix_(2, 1), 0) &&
+           LinearAlgebra::IsNear(matrix_(2, 2), 1));
+
+    ApplyAffineTransform(target, source,
+                         matrix_(0, 0), matrix_(0, 1), matrix_(0, 2),
+                         matrix_(1, 0), matrix_(1, 1), matrix_(1, 2),
+                         interpolation, clear);
+  }
+
+
+  void AffineTransform2D::ConvertToOpenGLMatrix(float target[16],
+                                                unsigned int canvasWidth,
+                                                unsigned int canvasHeight) const
+  {
+    const AffineTransform2D t = AffineTransform2D::Combine(
+      CreateOpenGLClipspace(canvasWidth, canvasHeight), *this);
+    
+    const Matrix source = t.GetHomogeneousMatrix();
+  
+    if (source.size1() != 3 ||
+        source.size2() != 3)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    // "z" must be in the [-1,1] range, otherwise the texture does not show up
+    float z = 0;
+
+    // Embed the 3x3 affine transform of the 2D plane into a 4x4
+    // matrix (3D) for OpenGL. The matrix must be transposed.
+
+    target[0] = static_cast<float>(source(0, 0)); 
+    target[1] = static_cast<float>(source(1, 0)); 
+    target[2] = 0; 
+    target[3] = static_cast<float>(source(2, 0));
+    target[4] = static_cast<float>(source(0, 1)); 
+    target[5] = static_cast<float>(source(1, 1));
+    target[6] = 0;
+    target[7] = static_cast<float>(source(2, 1));
+    target[8] = 0; 
+    target[9] = 0; 
+    target[10] = -1; 
+    target[11] = 0;
+    target[12] = static_cast<float>(source(0, 2)); 
+    target[13] = static_cast<float>(source(1, 2));
+    target[14] = -z;
+    target[15] = static_cast<float>(source(2, 2));
+  }
+
+
+  double AffineTransform2D::ComputeZoom() const
+  {
+    // Compute the length of the (0,0)-(1,1) diagonal (whose
+    // length is sqrt(2)) instead of the (0,0)-(1,0) unit segment,
+    // in order to cope with possible anisotropic zooming
+        
+    double x1 = 0;
+    double y1 = 0;
+    Apply(x1, y1);
+
+    double x2 = 1;
+    double y2 = 1;
+    Apply(x2, y2);
+
+    double dx = x2 - x1;
+    double dy = y2 - y1;
+
+    double zoom = sqrt(dx * dx + dy * dy) / sqrt(2.0);
+
+    if (LinearAlgebra::IsCloseToZero(zoom))
+    {
+      return 1;  // Default value if transform is ill-conditioned 
+    }
+    else
+    {
+      return zoom;
+    }
+  }    
+
+
+  AffineTransform2D AffineTransform2D::Invert(const AffineTransform2D& a)
+  {
+    AffineTransform2D t;
+    LinearAlgebra::InvertMatrix(t.matrix_, a.matrix_);
+    return t;
+  }
+
+
+  AffineTransform2D AffineTransform2D::Combine(const AffineTransform2D& a,
+                                               const AffineTransform2D& b)
+  {
+    return AffineTransform2D(LinearAlgebra::Product(a.GetHomogeneousMatrix(),
+                                                    b.GetHomogeneousMatrix()));
+  }
+  
+      
+  AffineTransform2D AffineTransform2D::Combine(const AffineTransform2D& a,
+                                               const AffineTransform2D& b,
+                                               const AffineTransform2D& c)
+  {
+    return AffineTransform2D(LinearAlgebra::Product(a.GetHomogeneousMatrix(),
+                                                    b.GetHomogeneousMatrix(),
+                                                    c.GetHomogeneousMatrix()));
+  }
+  
+      
+  AffineTransform2D AffineTransform2D::Combine(const AffineTransform2D& a,
+                                               const AffineTransform2D& b,
+                                               const AffineTransform2D& c,
+                                               const AffineTransform2D& d)
+  {
+    return AffineTransform2D(LinearAlgebra::Product(a.GetHomogeneousMatrix(),
+                                                    b.GetHomogeneousMatrix(),
+                                                    c.GetHomogeneousMatrix(),
+                                                    d.GetHomogeneousMatrix()));
+  }
+  
+  AffineTransform2D AffineTransform2D::Combine(const AffineTransform2D& a,
+                                               const AffineTransform2D& b,
+                                               const AffineTransform2D& c,
+                                               const AffineTransform2D& d,
+                                               const AffineTransform2D& e)
+  {
+    return AffineTransform2D(LinearAlgebra::Product(a.GetHomogeneousMatrix(),
+                                                    b.GetHomogeneousMatrix(),
+                                                    c.GetHomogeneousMatrix(),
+                                                    d.GetHomogeneousMatrix(),
+                                                    e.GetHomogeneousMatrix()));
+  }
+
+  AffineTransform2D AffineTransform2D::CreateOffset(double dx,
+                                                    double dy)
+  {
+    AffineTransform2D t;
+    t.matrix_(0, 2) = dx;
+    t.matrix_(1, 2) = dy;
+      
+    return t;
+  }
+  
+
+  AffineTransform2D AffineTransform2D::CreateScaling(double sx,
+                                                     double sy)
+  {
+    AffineTransform2D t;
+    t.matrix_(0, 0) = sx;
+    t.matrix_(1, 1) = sy;
+      
+    return t;
+  }
+  
+
+  AffineTransform2D AffineTransform2D::CreateRotation(double angle)
+  {
+    double cosine = cos(angle);
+    double sine = sin(angle);
+      
+    AffineTransform2D t;
+    t.matrix_(0, 0) = cosine;
+    t.matrix_(0, 1) = -sine;
+    t.matrix_(1, 0) = sine;
+    t.matrix_(1, 1) = cosine;
+
+    return t;
+  }
+
+  AffineTransform2D AffineTransform2D::CreateRotation(double angle, // CW rotation
+                                                      double cx,    // rotation center
+                                                      double cy)    // rotation center
+  {
+    return Combine(
+          CreateOffset(cx, cy),
+          CreateRotation(angle),
+          CreateOffset(-cx, -cy)
+          );
+  }
+
+  AffineTransform2D AffineTransform2D::CreateOpenGLClipspace(unsigned int canvasWidth,
+                                                             unsigned int canvasHeight)
+  {
+    AffineTransform2D t;
+    t.matrix_(0, 0) = 2.0 / static_cast<double>(canvasWidth);
+    t.matrix_(0, 2) = -1.0;
+    t.matrix_(1, 1) = -2.0 / static_cast<double>(canvasHeight);
+    t.matrix_(1, 2) = 1.0;
+    
+    return t;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/AffineTransform2D.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,103 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../StoneEnumerations.h"
+#include "LinearAlgebra.h"
+
+#include <Images/ImageAccessor.h>
+
+namespace OrthancStone
+{
+  class AffineTransform2D
+  {
+  private:
+    Matrix  matrix_;
+
+  public:
+    AffineTransform2D();
+
+    // The matrix must be 3x3, without perspective effects
+    AffineTransform2D(const Matrix& m);
+
+    AffineTransform2D(const AffineTransform2D& other) :
+      matrix_(other.matrix_)
+    {
+    }
+    
+    const Matrix& GetHomogeneousMatrix() const
+    {
+      return matrix_;
+    }
+
+    void Apply(double& x /* inout */,
+               double& y /* inout */) const;
+
+    void Apply(Orthanc::ImageAccessor& target,
+               const Orthanc::ImageAccessor& source,
+               ImageInterpolation interpolation,
+               bool clear) const;
+
+    void ConvertToOpenGLMatrix(float target[16],
+                               unsigned int canvasWidth,
+                               unsigned int canvasHeight) const;
+
+    double ComputeZoom() const;
+    
+    static AffineTransform2D Invert(const AffineTransform2D& a);
+
+    static AffineTransform2D Combine(const AffineTransform2D& a,
+                                     const AffineTransform2D& b);
+      
+    static AffineTransform2D Combine(const AffineTransform2D& a,
+                                     const AffineTransform2D& b,
+                                     const AffineTransform2D& c);
+      
+    static AffineTransform2D Combine(const AffineTransform2D& a,
+                                     const AffineTransform2D& b,
+                                     const AffineTransform2D& c,
+                                     const AffineTransform2D& d);
+
+    // transformations are applied right to left: 
+    // `e` is the first transformation applied and `a` is the last one
+    static AffineTransform2D Combine(const AffineTransform2D& a,
+                                     const AffineTransform2D& b,
+                                     const AffineTransform2D& c,
+                                     const AffineTransform2D& d,
+                                     const AffineTransform2D& e);
+
+    static AffineTransform2D CreateOffset(double dx,
+                                          double dy);
+
+    static AffineTransform2D CreateScaling(double sx,
+                                           double sy);
+
+    static AffineTransform2D CreateRotation(double angle); // CW rotation in radians
+
+    static AffineTransform2D CreateRotation(double angle, // CW rotation in radians
+                                            double cx,    // rotation center
+                                            double cy);   // rotation center
+
+    static AffineTransform2D CreateOpenGLClipspace(unsigned int canvasWidth,
+                                                   unsigned int canvasHeight);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/CoordinateSystem3D.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,254 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CoordinateSystem3D.h"
+
+#include "LinearAlgebra.h"
+#include "GeometryToolbox.h"
+
+#include <Logging.h>
+#include <Toolbox.h>
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  void CoordinateSystem3D::CheckAndComputeNormal()
+  {
+    // DICOM expects normal vectors to define the axes: "The row and
+    // column direction cosine vectors shall be normal, i.e., the dot
+    // product of each direction cosine vector with itself shall be
+    // unity."
+    // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.2.html
+    if (!LinearAlgebra::IsNear(boost::numeric::ublas::norm_2(axisX_), 1.0) ||
+        !LinearAlgebra::IsNear(boost::numeric::ublas::norm_2(axisY_), 1.0))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    // The vectors within "Image Orientation Patient" must be
+    // orthogonal, according to the DICOM specification: "The row and
+    // column direction cosine vectors shall be orthogonal, i.e.,
+    // their dot product shall be zero."
+    // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.2.html
+    if (!LinearAlgebra::IsCloseToZero(boost::numeric::ublas::inner_prod(axisX_, axisY_)))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    LinearAlgebra::CrossProduct(normal_, axisX_, axisY_);
+
+    d_ = -(normal_[0] * origin_[0] + normal_[1] * origin_[1] + normal_[2] * origin_[2]);
+
+    // Just a sanity check, it should be useless by construction
+    assert(LinearAlgebra::IsNear(boost::numeric::ublas::norm_2(normal_), 1.0));
+  }
+
+
+  void CoordinateSystem3D::SetupCanonical()
+  {
+    LinearAlgebra::AssignVector(origin_, 0, 0, 0);
+    LinearAlgebra::AssignVector(axisX_, 1, 0, 0);
+    LinearAlgebra::AssignVector(axisY_, 0, 1, 0);
+    CheckAndComputeNormal();
+  }
+
+
+  CoordinateSystem3D::CoordinateSystem3D(const Vector& origin,
+                                         const Vector& axisX,
+                                         const Vector& axisY) :
+    origin_(origin),
+    axisX_(axisX),
+    axisY_(axisY)
+  {
+    CheckAndComputeNormal();
+  }
+
+
+  void CoordinateSystem3D::Setup(const std::string& imagePositionPatient,
+                                 const std::string& imageOrientationPatient)
+  {
+    std::string tmpPosition = Orthanc::Toolbox::StripSpaces(imagePositionPatient);
+    std::string tmpOrientation = Orthanc::Toolbox::StripSpaces(imageOrientationPatient);
+
+    Vector orientation;
+    if (!LinearAlgebra::ParseVector(origin_, tmpPosition) ||
+        !LinearAlgebra::ParseVector(orientation, tmpOrientation) ||
+        origin_.size() != 3 ||
+        orientation.size() != 6)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    axisX_.resize(3);
+    axisX_[0] = orientation[0];
+    axisX_[1] = orientation[1];
+    axisX_[2] = orientation[2];
+
+    axisY_.resize(3);
+    axisY_[0] = orientation[3];
+    axisY_[1] = orientation[4];
+    axisY_[2] = orientation[5];
+
+    CheckAndComputeNormal();
+  }   
+
+
+  CoordinateSystem3D::CoordinateSystem3D(const IDicomDataset& dicom)
+  {
+    std::string a, b;
+
+    if (dicom.GetStringValue(a, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT) &&
+        dicom.GetStringValue(b, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT))
+    {
+      Setup(a, b);
+    }
+    else
+    {
+      SetupCanonical();
+    }
+  }
+
+
+  CoordinateSystem3D::CoordinateSystem3D(const Orthanc::DicomMap& dicom)
+  {
+    std::string a, b;
+
+    if (dicom.LookupStringValue(a, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, false) &&
+        dicom.LookupStringValue(b, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, false))
+    {
+      Setup(a, b);
+    }
+    else
+    {
+      SetupCanonical();
+    }    
+  }
+
+
+  void CoordinateSystem3D::SetOrigin(const Vector& origin)
+  {
+    if (origin.size() != 3)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      origin_ = origin;
+    }
+  }
+
+
+  Vector CoordinateSystem3D::MapSliceToWorldCoordinates(double x,
+                                                        double y) const
+  {
+    return origin_ + x * axisX_ + y * axisY_;
+  }
+
+
+  double CoordinateSystem3D::ProjectAlongNormal(const Vector& point) const
+  {
+    return boost::numeric::ublas::inner_prod(point, normal_);
+  }
+
+  void CoordinateSystem3D::ProjectPoint2(double& offsetX, double& offsetY, const Vector& point) const
+  {
+    // Project the point onto the slice
+    double projectionX,projectionY,projectionZ;
+    GeometryToolbox::ProjectPointOntoPlane2(projectionX, projectionY, projectionZ, point, normal_, origin_);
+
+    // As the axes are orthonormal vectors thanks to
+    // CheckAndComputeNormal(), the following dot products give the
+    // offset of the origin of the slice wrt. the origin of the
+    // reference plane https://en.wikipedia.org/wiki/Vector_projection
+    offsetX = axisX_[0] * (projectionX - origin_[0]) + axisX_[1] * (projectionY - origin_[1]) + axisX_[2] * (projectionZ - origin_[2]);
+    offsetY = axisY_[0] * (projectionX - origin_[0]) + axisY_[1] * (projectionY - origin_[1]) + axisY_[2] * (projectionZ - origin_[2]);
+  }
+
+  void CoordinateSystem3D::ProjectPoint(double& offsetX,
+                                        double& offsetY,
+                                        const Vector& point) const
+  {
+    // Project the point onto the slice
+    Vector projection;
+    GeometryToolbox::ProjectPointOntoPlane(projection, point, normal_, origin_);
+
+    // As the axes are orthonormal vectors thanks to
+    // CheckAndComputeNormal(), the following dot products give the
+    // offset of the origin of the slice wrt. the origin of the
+    // reference plane https://en.wikipedia.org/wiki/Vector_projection
+    offsetX = boost::numeric::ublas::inner_prod(axisX_, projection - origin_);
+    offsetY = boost::numeric::ublas::inner_prod(axisY_, projection - origin_);
+  }
+
+  bool CoordinateSystem3D::IntersectSegment(Vector& p,
+                                            const Vector& edgeFrom,
+                                            const Vector& edgeTo) const
+  {
+    return GeometryToolbox::IntersectPlaneAndSegment(p, normal_, d_, edgeFrom, edgeTo);
+  }
+
+
+  bool CoordinateSystem3D::IntersectLine(Vector& p,
+                                         const Vector& origin,
+                                         const Vector& direction) const
+  {
+    return GeometryToolbox::IntersectPlaneAndLine(p, normal_, d_, origin, direction);
+  }
+
+
+  bool CoordinateSystem3D::ComputeDistance(double& distance,
+                                           const CoordinateSystem3D& a,
+                                           const CoordinateSystem3D& b)
+  {
+    bool opposite = false;   // Ignored
+
+    if (OrthancStone::GeometryToolbox::IsParallelOrOpposite(
+          opposite, a.GetNormal(), b.GetNormal()))
+    {
+      distance = std::abs(a.ProjectAlongNormal(a.GetOrigin()) -
+                          a.ProjectAlongNormal(b.GetOrigin()));
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+  std::ostream& operator<< (std::ostream& s, const CoordinateSystem3D& that)
+  {
+    s << "origin: " << that.origin_ << " normal: " << that.normal_ 
+      << " axisX: " << that.axisX_ << " axisY: " << that.axisY_ 
+      << " D: " << that.d_;
+    return s;
+  }
+
+
+  CoordinateSystem3D CoordinateSystem3D::NormalizeCuttingPlane(const CoordinateSystem3D& plane)
+  {
+    double ox, oy;
+    plane.ProjectPoint(ox, oy, LinearAlgebra::CreateVector(0, 0, 0));
+
+    CoordinateSystem3D normalized(plane);
+    normalized.SetOrigin(plane.MapSliceToWorldCoordinates(ox, oy));
+    return normalized;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/CoordinateSystem3D.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,140 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Scene2D/ScenePoint2D.h"
+#include "LinearAlgebra.h"
+#include "OrthancDatasets/IDicomDataset.h"
+
+#include <iosfwd>
+
+namespace OrthancStone
+{
+  // Geometry of a 3D plane
+  class CoordinateSystem3D
+  {
+  private:
+    Vector    origin_;
+    Vector    normal_;
+    Vector    axisX_;
+    Vector    axisY_;
+    double    d_;
+
+    void CheckAndComputeNormal();
+
+    void Setup(const std::string& imagePositionPatient,
+               const std::string& imageOrientationPatient);
+
+    void SetupCanonical();
+
+    double GetOffset() const;
+
+  public:
+    CoordinateSystem3D()
+    {
+      SetupCanonical();
+    }
+
+    friend std::ostream& operator<< (std::ostream& s, const CoordinateSystem3D& that);
+
+    CoordinateSystem3D(const Vector& origin,
+                       const Vector& axisX,
+                       const Vector& axisY);
+
+    CoordinateSystem3D(const IDicomDataset& dicom);
+
+    CoordinateSystem3D(const std::string& imagePositionPatient,
+                       const std::string& imageOrientationPatient)
+    {
+      Setup(imagePositionPatient, imageOrientationPatient);
+    }
+
+    CoordinateSystem3D(const Orthanc::DicomMap& dicom);
+
+    const Vector& GetNormal() const
+    {
+      return normal_;
+    }
+
+    const Vector& GetOrigin() const  // This is the "Image Position Patient" tag
+    {
+      return origin_;
+    }
+
+    const Vector& GetAxisX() const
+    {
+      return axisX_;
+    }
+
+    const Vector& GetAxisY() const
+    {
+      return axisY_;
+    }
+
+    void SetOrigin(const Vector& origin);
+
+    Vector MapSliceToWorldCoordinates(double x,
+                                      double y) const;
+    
+    Vector MapSliceToWorldCoordinates(const ScenePoint2D& p) const
+    {
+      return MapSliceToWorldCoordinates(p.GetX(), p.GetY());
+    }
+    
+    double ProjectAlongNormal(const Vector& point) const;
+
+    void ProjectPoint(double& offsetX,
+                      double& offsetY,
+                      const Vector& point) const;
+
+    ScenePoint2D ProjectPoint(const Vector& point) const
+    {
+      double x, y;
+      ProjectPoint(x, y, point);
+      return ScenePoint2D(x, y);
+    }
+
+    /*
+    Alternated faster implementation (untested yet)
+    */
+    void ProjectPoint2(double& offsetX, 
+                       double& offsetY, 
+                       const Vector& point) const;
+
+    bool IntersectSegment(Vector& p,
+                          const Vector& edgeFrom,
+                          const Vector& edgeTo) const;
+
+    bool IntersectLine(Vector& p,
+                       const Vector& origin,
+                       const Vector& direction) const;
+
+    // Returns "false" is the two planes are not parallel
+    static bool ComputeDistance(double& distance,
+                                const CoordinateSystem3D& a,
+                                const CoordinateSystem3D& b);
+
+    // Normalize a cutting plane so that the origin (0,0,0) of the 3D
+    // world is mapped to the origin of its (x,y) coordinate system
+    static CoordinateSystem3D NormalizeCuttingPlane(const CoordinateSystem3D& plane);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomInstanceParameters.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,530 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomInstanceParameters.h"
+
+#include "../Scene2D/ColorTextureSceneLayer.h"
+#include "../Scene2D/FloatTextureSceneLayer.h"
+#include "../Toolbox/GeometryToolbox.h"
+#include "../Toolbox/ImageToolbox.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <Logging.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+
+namespace OrthancStone
+{
+  void DicomInstanceParameters::Data::ComputeDoseOffsets(const Orthanc::DicomMap& dicom)
+  {
+    // http://dicom.nema.org/medical/Dicom/2016a/output/chtml/part03/sect_C.8.8.3.2.html
+
+    {
+      std::string increment;
+
+      if (dicom.LookupStringValue(increment, Orthanc::DICOM_TAG_FRAME_INCREMENT_POINTER, false))
+      {
+        Orthanc::Toolbox::ToUpperCase(increment);
+        if (increment != "3004,000C")  // This is the "Grid Frame Offset Vector" tag (DICOM_TAG_GRID_FRAME_OFFSET_VECTOR)
+        {
+          LOG(ERROR) << "RT-DOSE: Bad value for the \"FrameIncrementPointer\" tag";
+          return;
+        }
+      }
+    }
+
+    if (!LinearAlgebra::ParseVector(frameOffsets_, dicom, Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR) ||
+        frameOffsets_.size() < imageInformation_.GetNumberOfFrames())
+    {
+      LOG(ERROR) << "RT-DOSE: No information about the 3D location of some slice(s)";
+      frameOffsets_.clear();
+    }
+    else
+    {
+      if (frameOffsets_.size() >= 2)
+      {
+        thickness_ = std::abs(frameOffsets_[1] - frameOffsets_[0]);
+      }
+    }
+  }
+
+
+  DicomInstanceParameters::Data::Data(const Orthanc::DicomMap& dicom) :
+    imageInformation_(dicom)
+  {
+    if (imageInformation_.GetNumberOfFrames() <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    if (!dicom.LookupStringValue(studyInstanceUid_, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) ||
+        !dicom.LookupStringValue(seriesInstanceUid_, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false) ||
+        !dicom.LookupStringValue(sopInstanceUid_, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+        
+    std::string s;
+    if (!dicom.LookupStringValue(s, Orthanc::DICOM_TAG_SOP_CLASS_UID, false))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    else
+    {
+      sopClassUid_ = StringToSopClassUid(s);
+    }
+
+    if (!dicom.ParseDouble(thickness_, Orthanc::DICOM_TAG_SLICE_THICKNESS))
+    {
+      thickness_ = 100.0 * std::numeric_limits<double>::epsilon();
+    }
+
+    GeometryToolbox::GetPixelSpacing(pixelSpacingX_, pixelSpacingY_, dicom);
+
+    std::string position, orientation;
+    if (dicom.LookupStringValue(position, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, false) &&
+        dicom.LookupStringValue(orientation, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, false))
+    {
+      geometry_ = CoordinateSystem3D(position, orientation);
+    }
+
+    if (sopClassUid_ == SopClassUid_RTDose)
+    {
+      ComputeDoseOffsets(dicom);
+
+      static const Orthanc::DicomTag DICOM_TAG_DOSE_UNITS(0x3004, 0x0002);
+
+      if (!dicom.LookupStringValue(doseUnits_, DICOM_TAG_DOSE_UNITS, false))
+      {
+        LOG(ERROR) << "Tag DoseUnits (0x3004, 0x0002) is missing in " << sopInstanceUid_;
+        doseUnits_ = "";
+      }
+    }
+
+    isColor_ = (imageInformation_.GetPhotometricInterpretation() != Orthanc::PhotometricInterpretation_Monochrome1 &&
+                imageInformation_.GetPhotometricInterpretation() != Orthanc::PhotometricInterpretation_Monochrome2);
+
+    if (dicom.ParseDouble(rescaleIntercept_, Orthanc::DICOM_TAG_RESCALE_INTERCEPT) &&
+        dicom.ParseDouble(rescaleSlope_, Orthanc::DICOM_TAG_RESCALE_SLOPE))
+    {
+      if (sopClassUid_ == SopClassUid_RTDose)
+      {
+        LOG(INFO) << "DOSE HAS Rescale*: rescaleIntercept_ = " << rescaleIntercept_ << " rescaleSlope_ = " << rescaleSlope_;
+        // WE SHOULD NOT TAKE THE RESCALE VALUE INTO ACCOUNT IN THE CASE OF DOSES
+        hasRescale_ = false;
+      }
+      else
+      {
+        hasRescale_ = true;
+      }
+      
+    }
+    else
+    {
+      hasRescale_ = false;
+    }
+
+    if (dicom.ParseDouble(doseGridScaling_, Orthanc::DICOM_TAG_DOSE_GRID_SCALING))
+    {
+      if (sopClassUid_ == SopClassUid_RTDose)
+      {
+        LOG(INFO) << "DOSE HAS DoseGridScaling: doseGridScaling_ = " << doseGridScaling_;
+      }
+    }
+    else
+    {
+      doseGridScaling_ = 1.0;
+      if (sopClassUid_ == SopClassUid_RTDose)
+      {
+        LOG(ERROR) << "Tag DoseGridScaling (0x3004, 0x000e) is missing in " << sopInstanceUid_ << " doseGridScaling_ will be set to 1.0";
+      }
+    }
+
+    Vector c, w;
+    if (LinearAlgebra::ParseVector(c, dicom, Orthanc::DICOM_TAG_WINDOW_CENTER) &&
+        LinearAlgebra::ParseVector(w, dicom, Orthanc::DICOM_TAG_WINDOW_WIDTH) &&
+        c.size() > 0 && 
+        w.size() > 0)
+    {
+      hasDefaultWindowing_ = true;
+      defaultWindowingCenter_ = static_cast<float>(c[0]);
+      defaultWindowingWidth_ = static_cast<float>(w[0]);
+    }
+    else
+    {
+      hasDefaultWindowing_ = false;
+      defaultWindowingCenter_ = 0;
+      defaultWindowingWidth_  = 0;
+    }
+
+    if (sopClassUid_ == SopClassUid_RTDose)
+    {
+      switch (imageInformation_.GetBitsStored())
+      {
+        case 16:
+          expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale16;
+          break;
+
+        case 32:
+          expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale32;
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      } 
+    }
+    else if (isColor_)
+    {
+      expectedPixelFormat_ = Orthanc::PixelFormat_RGB24;
+    }
+    else if (imageInformation_.IsSigned())
+    {
+      expectedPixelFormat_ = Orthanc::PixelFormat_SignedGrayscale16;
+    }
+    else
+    {
+      expectedPixelFormat_ = Orthanc::PixelFormat_Grayscale16;
+    }
+
+    // This computes the "IndexInSeries" metadata from Orthanc (check
+    // out "Orthanc::ServerIndex::Store()")
+    hasIndexInSeries_ = (
+      dicom.ParseUnsignedInteger32(indexInSeries_, Orthanc::DICOM_TAG_INSTANCE_NUMBER) ||
+      dicom.ParseUnsignedInteger32(indexInSeries_, Orthanc::DICOM_TAG_IMAGE_INDEX));
+  }
+
+
+  CoordinateSystem3D  DicomInstanceParameters::Data::GetFrameGeometry(unsigned int frame) const
+  {
+    if (frame == 0)
+    {
+      return geometry_;
+    }
+    else if (frame >= imageInformation_.GetNumberOfFrames())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else if (sopClassUid_ == SopClassUid_RTDose)
+    {
+      if (frame >= frameOffsets_.size())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      return CoordinateSystem3D(
+        geometry_.GetOrigin() + frameOffsets_[frame] * geometry_.GetNormal(),
+        geometry_.GetAxisX(),
+        geometry_.GetAxisY());
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+
+
+  bool DicomInstanceParameters::Data::IsPlaneWithinSlice(unsigned int frame,
+                                                         const CoordinateSystem3D& plane) const
+  {
+    if (frame >= imageInformation_.GetNumberOfFrames())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    CoordinateSystem3D tmp = geometry_;
+
+    if (frame != 0)
+    {
+      tmp = GetFrameGeometry(frame);
+    }
+
+    double distance;
+
+    return (CoordinateSystem3D::ComputeDistance(distance, tmp, plane) &&
+            distance <= thickness_ / 2.0);
+  }
+
+  void DicomInstanceParameters::Data::ApplyRescaleAndDoseScaling(Orthanc::ImageAccessor& image,
+                                                                 bool useDouble) const
+  {
+    if (image.GetFormat() != Orthanc::PixelFormat_Float32)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    double factor = doseGridScaling_;
+    double offset = 0.0;
+
+    if (hasRescale_)
+    {
+      factor *= rescaleSlope_;
+      offset = rescaleIntercept_;
+    }
+
+    if ( (factor != 1.0) || (offset != 0.0) )
+    {
+      const unsigned int width = image.GetWidth();
+      const unsigned int height = image.GetHeight();
+        
+      for (unsigned int y = 0; y < height; y++)
+      {
+        float* p = reinterpret_cast<float*>(image.GetRow(y));
+
+        if (useDouble)
+        {
+          // Slower, accurate implementation using double
+          for (unsigned int x = 0; x < width; x++, p++)
+          {
+            double value = static_cast<double>(*p);
+            *p = static_cast<float>(value * factor + offset);
+          }
+        }
+        else
+        {
+          // Fast, approximate implementation using float
+          for (unsigned int x = 0; x < width; x++, p++)
+          {
+            *p = (*p) * static_cast<float>(factor) + static_cast<float>(offset);
+          }
+        }
+      }
+    }
+  }
+
+  double DicomInstanceParameters::GetRescaleIntercept() const
+  {
+    if (data_.hasRescale_)
+    {
+      return data_.rescaleIntercept_;
+    }
+    else
+    {
+      LOG(ERROR) << "DicomInstanceParameters::GetRescaleIntercept(): !data_.hasRescale_";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  double DicomInstanceParameters::GetRescaleSlope() const
+  {
+    if (data_.hasRescale_)
+    {
+      return data_.rescaleSlope_;
+    }
+    else
+    {
+      LOG(ERROR) << "DicomInstanceParameters::GetRescaleSlope(): !data_.hasRescale_";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  float DicomInstanceParameters::GetDefaultWindowingCenter() const
+  {
+    if (data_.hasDefaultWindowing_)
+    {
+      return data_.defaultWindowingCenter_;
+    }
+    else
+    {
+      LOG(ERROR) << "DicomInstanceParameters::GetDefaultWindowingCenter(): no default windowing";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  float DicomInstanceParameters::GetDefaultWindowingWidth() const
+  {
+    if (data_.hasDefaultWindowing_)
+    {
+      return data_.defaultWindowingWidth_;
+    }
+    else
+    {
+      LOG(ERROR) << "DicomInstanceParameters::GetDefaultWindowingWidth(): no default windowing";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  Orthanc::ImageAccessor* DicomInstanceParameters::ConvertToFloat(const Orthanc::ImageAccessor& pixelData) const
+  {
+    std::unique_ptr<Orthanc::Image> converted(new Orthanc::Image(Orthanc::PixelFormat_Float32, 
+                                                               pixelData.GetWidth(), 
+                                                               pixelData.GetHeight(),
+                                                               false));
+    Orthanc::ImageProcessing::Convert(*converted, pixelData);
+
+                                                   
+    // Correct rescale slope/intercept if need be
+    //data_.ApplyRescaleAndDoseScaling(*converted, (pixelData.GetFormat() == Orthanc::PixelFormat_Grayscale32));
+    data_.ApplyRescaleAndDoseScaling(*converted, false);
+
+    return converted.release();
+  }
+
+
+  TextureBaseSceneLayer* DicomInstanceParameters::CreateTexture
+  (const Orthanc::ImageAccessor& pixelData) const
+  {
+    // {
+    //   const Orthanc::ImageAccessor& source = pixelData;
+    //   const void* sourceBuffer = source.GetConstBuffer();
+    //   intptr_t sourceBufferInt = reinterpret_cast<intptr_t>(sourceBuffer);
+    //   int sourceWidth = source.GetWidth();
+    //   int sourceHeight = source.GetHeight();
+    //   int sourcePitch = source.GetPitch();
+
+    //   // TODO: turn error into trace below
+    //   LOG(ERROR) << "ConvertGrayscaleToFloat | source:"
+    //     << " W = " << sourceWidth << " H = " << sourceHeight
+    //     << " P = " << sourcePitch << " B = " << sourceBufferInt
+    //     << " B % 4 == " << sourceBufferInt % 4;
+    // }
+
+    assert(sizeof(float) == 4);
+
+    Orthanc::PixelFormat sourceFormat = pixelData.GetFormat();
+
+    if (sourceFormat != GetExpectedPixelFormat())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    if (sourceFormat == Orthanc::PixelFormat_RGB24)
+    {
+      // This is the case of a color image. No conversion has to be done.
+      return new ColorTextureSceneLayer(pixelData);
+    }
+    else
+    {
+      // This is the case of a grayscale frame. Convert it to Float32.
+      std::unique_ptr<FloatTextureSceneLayer> texture;
+
+      if (pixelData.GetFormat() == Orthanc::PixelFormat_Float32)
+      {
+        texture.reset(new FloatTextureSceneLayer(pixelData));
+      }
+      else
+      {
+        std::unique_ptr<Orthanc::ImageAccessor> converted(ConvertToFloat(pixelData));
+        texture.reset(new FloatTextureSceneLayer(*converted));
+      }
+
+      if (data_.hasDefaultWindowing_)
+      {
+        texture->SetCustomWindowing(data_.defaultWindowingCenter_,
+                                    data_.defaultWindowingWidth_);
+      }
+      
+
+      if (data_.imageInformation_.GetPhotometricInterpretation()
+        == Orthanc::PhotometricInterpretation_Monochrome1)
+      {
+        texture->SetInverted(true);
+      }
+      else if (data_.imageInformation_.GetPhotometricInterpretation()
+        == Orthanc::PhotometricInterpretation_Monochrome2)
+      {
+        texture->SetInverted(false);
+      }
+
+      return texture.release();
+    }
+  }
+
+
+  LookupTableTextureSceneLayer* DicomInstanceParameters::CreateLookupTableTexture
+  (const Orthanc::ImageAccessor& pixelData) const
+  {
+    std::unique_ptr<FloatTextureSceneLayer> texture;
+
+    if (pixelData.GetFormat() == Orthanc::PixelFormat_Float32)
+    {
+      return new LookupTableTextureSceneLayer(pixelData);
+    }
+    else
+    {
+      std::unique_ptr<Orthanc::ImageAccessor> converted(ConvertToFloat(pixelData));
+      return new LookupTableTextureSceneLayer(*converted);
+    }
+  }
+
+  
+  unsigned int DicomInstanceParameters::GetIndexInSeries() const
+  {
+    if (data_.hasIndexInSeries_)
+    {
+      return data_.indexInSeries_;
+    }
+    else
+    {
+      LOG(ERROR) << "DicomInstanceParameters::GetIndexInSeries(): !data_.hasIndexInSeries_";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  double DicomInstanceParameters::Data::ApplyRescale(double value) const
+  {
+    double factor = doseGridScaling_;
+    double offset = 0.0;
+
+    if (hasRescale_)
+    {
+      factor *= rescaleSlope_;
+      offset = rescaleIntercept_;
+    }
+
+    return (value * factor + offset);
+  }
+
+
+  bool DicomInstanceParameters::Data::ComputeRegularSpacing(double& spacing) const
+  {
+    if (frameOffsets_.size() == 0)  // Not a RT-DOSE
+    {
+      return false;
+    }
+    else if (frameOffsets_.size() == 1)
+    {
+      spacing = 1;   // Edge case: RT-DOSE with one single frame
+      return true;
+    }
+    else
+    {
+      spacing = std::abs(frameOffsets_[1] - frameOffsets_[0]);
+
+      for (size_t i = 1; i + 1 < frameOffsets_.size(); i++)
+      {
+        double s = frameOffsets_[i + 1] - frameOffsets_[i];
+        if (!LinearAlgebra::IsNear(spacing, s, 0.001))
+        {
+          return false;
+        }
+      }
+      
+      return true;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomInstanceParameters.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,235 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../StoneEnumerations.h"
+#include "../Scene2D/LookupTableTextureSceneLayer.h"
+#include "../Toolbox/CoordinateSystem3D.h"
+
+#include <IDynamicObject.h>
+#include <DicomFormat/DicomImageInformation.h>
+
+namespace OrthancStone
+{
+  class DicomInstanceParameters :
+    public Orthanc::IDynamicObject  /* to be used as a payload to SlicesSorter */
+  {
+    // This class supersedes the deprecated "DicomFrameConverter"
+
+  private:
+    struct Data   // Struct to ease the copy constructor
+    {
+      std::string                       orthancInstanceId_;
+      std::string                       studyInstanceUid_;
+      std::string                       seriesInstanceUid_;
+      std::string                       sopInstanceUid_;
+      Orthanc::DicomImageInformation    imageInformation_;
+      SopClassUid                       sopClassUid_;
+      double                            thickness_;
+      double                            pixelSpacingX_;
+      double                            pixelSpacingY_;
+      CoordinateSystem3D                geometry_;
+      Vector                            frameOffsets_;
+      bool                              isColor_;
+      bool                              hasRescale_;
+      double                            rescaleIntercept_;
+      double                            rescaleSlope_;
+      bool                              hasDefaultWindowing_;
+      float                             defaultWindowingCenter_;
+      float                             defaultWindowingWidth_;
+      Orthanc::PixelFormat              expectedPixelFormat_;
+      bool                              hasIndexInSeries_;
+      unsigned int                      indexInSeries_;
+      std::string                       doseUnits_;
+      double                            doseGridScaling_;
+
+      void ComputeDoseOffsets(const Orthanc::DicomMap& dicom);
+
+      Data(const Orthanc::DicomMap& dicom);
+
+      CoordinateSystem3D  GetFrameGeometry(unsigned int frame) const;
+
+      bool IsPlaneWithinSlice(unsigned int frame,
+                              const CoordinateSystem3D& plane) const;
+      
+      void ApplyRescaleAndDoseScaling(Orthanc::ImageAccessor& image,
+                                      bool useDouble) const;
+
+      double ApplyRescale(double value) const;
+
+      bool ComputeRegularSpacing(double& target) const;
+    };
+
+    
+    Data  data_;
+
+
+  public:
+    DicomInstanceParameters(const DicomInstanceParameters& other) :
+    data_(other.data_)
+    {
+    }
+
+    DicomInstanceParameters(const Orthanc::DicomMap& dicom) :
+      data_(dicom)
+    {
+    }
+
+    DicomInstanceParameters* Clone() const
+    {
+      return new DicomInstanceParameters(*this);
+    }
+
+    void SetOrthancInstanceIdentifier(const std::string& id)
+    {
+      data_.orthancInstanceId_ = id;
+    }
+
+    const std::string& GetOrthancInstanceIdentifier() const
+    {
+      return data_.orthancInstanceId_;
+    }
+
+    const Orthanc::DicomImageInformation& GetImageInformation() const
+    {
+      return data_.imageInformation_;
+    }
+
+    const std::string& GetStudyInstanceUid() const
+    {
+      return data_.studyInstanceUid_;
+    }
+
+    const std::string& GetSeriesInstanceUid() const
+    {
+      return data_.seriesInstanceUid_;
+    }
+
+    const std::string& GetSopInstanceUid() const
+    {
+      return data_.sopInstanceUid_;
+    }
+
+    SopClassUid GetSopClassUid() const
+    {
+      return data_.sopClassUid_;
+    }
+
+    double GetThickness() const
+    {
+      return data_.thickness_;
+    }
+
+    double GetPixelSpacingX() const
+    {
+      return data_.pixelSpacingX_;
+    }
+
+    double GetPixelSpacingY() const
+    {
+      return data_.pixelSpacingY_;
+    }
+
+    const CoordinateSystem3D&  GetGeometry() const
+    {
+      return data_.geometry_;
+    }
+
+    CoordinateSystem3D  GetFrameGeometry(unsigned int frame) const
+    {
+      return data_.GetFrameGeometry(frame);
+    }
+
+    bool IsPlaneWithinSlice(unsigned int frame,
+                            const CoordinateSystem3D& plane) const
+    {
+      return data_.IsPlaneWithinSlice(frame, plane);
+    }
+
+    bool IsColor() const
+    {
+      return data_.isColor_;
+    }
+
+    bool HasRescale() const
+    {
+      return data_.hasRescale_;
+    }
+
+    double GetRescaleIntercept() const;
+
+    double GetRescaleSlope() const;
+
+    bool HasDefaultWindowing() const
+    {
+      return data_.hasDefaultWindowing_;
+    }
+
+    float GetDefaultWindowingCenter() const;
+
+    float GetDefaultWindowingWidth() const;
+
+    Orthanc::PixelFormat GetExpectedPixelFormat() const
+    {
+      return data_.expectedPixelFormat_;
+    }
+
+    Orthanc::ImageAccessor* ConvertToFloat(const Orthanc::ImageAccessor& pixelData) const;
+    
+    TextureBaseSceneLayer* CreateTexture(const Orthanc::ImageAccessor& pixelData) const;
+
+    LookupTableTextureSceneLayer* CreateLookupTableTexture(const Orthanc::ImageAccessor& pixelData) const;
+
+    bool HasIndexInSeries() const
+    {
+      return data_.hasIndexInSeries_;
+    }
+
+    unsigned int GetIndexInSeries() const;
+
+    const std::string& GetDoseUnits() const
+    {
+      return data_.doseUnits_;
+    }
+
+    void SetDoseGridScaling(double value)
+    {
+      data_.doseGridScaling_ = value;
+    }
+
+    double GetDoseGridScaling() const
+    {
+      return data_.doseGridScaling_;
+    }
+
+    double ApplyRescale(double value) const
+    {
+      return data_.ApplyRescale(value);
+    }
+
+    // Required for RT-DOSE
+    bool ComputeRegularSpacing(double& target) const
+    {
+      return data_.ComputeRegularSpacing(target);
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomStructure2.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,293 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#include "DicomStructure2.h"
+
+#include "../Toolbox/GeometryToolbox.h"
+#include "../Toolbox/DisjointDataSet.h"
+
+namespace OrthancStone
+{
+  // see header
+  //void DicomStructure2::ComputeNormal()
+  //{
+  //  try
+  //  {
+  //    if (polygons_.size() > 0)
+  //    {
+
+  //      // TODO: check all polygons are OK
+  //      const DicomStructurePolygon2 polygon = polygons_[0];
+  //      $$$$$$$$$$$$$$$$$
+  //        state_ = NormalComputed;
+  //    }
+  //    else
+  //    {
+  //      // bogus! no polygons. Let's assign a "nothing here" value
+  //      LinearAlgebra::AssignVector(normal_, 0, 0, 0);
+  //      state_ = Invalid;
+  //    }
+  //  }
+  //  catch (const Orthanc::OrthancException& e)
+  //  {
+  //    state_ = Invalid;
+  //    if (e.HasDetails())
+  //    {
+  //      LOG(ERROR) << "OrthancException in ComputeNormal: " << e.What() << " Details: " << e.GetDetails();
+  //    }
+  //    else
+  //    {
+  //      LOG(ERROR) << "OrthancException in ComputeNormal: " << e.What();
+  //    }
+  //    throw;
+  //  }
+  //  catch (const std::exception& e)
+  //  {
+  //    state_ = Invalid;
+  //    LOG(ERROR) << "std::exception in ComputeNormal: " << e.what();
+  //    throw;
+  //  }
+  //  catch (...)
+  //  {
+  //    state_ = Invalid;
+  //    LOG(ERROR) << "Unknown exception in ComputeNormal";
+  //    throw;
+  //  }
+  //}
+
+  void DicomStructure2::ComputeSliceThickness()
+  {
+    if (state_ != NormalComputed)
+    {
+      LOG(ERROR) << "DicomStructure2::ComputeSliceThickness - state must be NormalComputed";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    if (polygons_.size() < 2)
+    {
+      // cannot compute thickness if there are not at least 2 slabs (structures)
+      sliceThickness_ = 1.0;
+      state_ = Invalid;
+    }
+    else
+    {
+      // normal can be (1,0,0), (0,1,0) or (0,0,1), nothing else.
+      // these can be compared with == (exact double representation)
+      if (normal_[0] == 1)
+      {
+        // in a single polygon, all the points have the same X
+        sliceThickness_ = fabs(polygons_[0].GetPoint(0)[0] - polygons_[1].GetPoint(0)[0]);
+      }
+      else if (normal_[1] == 1)
+      {
+        // in a single polygon, all the points have the same X
+        sliceThickness_ = fabs(polygons_[0].GetPoint(0)[1] - polygons_[1].GetPoint(0)[1]);
+      }
+      else if (normal_[2] == 1)
+      {
+        // in a single polygon, all the points have the same X
+        sliceThickness_ = fabs(polygons_[0].GetPoint(0)[2] - polygons_[1].GetPoint(0)[2]);
+      }
+      else
+      {
+        ORTHANC_ASSERT(false);
+        state_ = Invalid;
+      }
+    }
+    state_ = Valid;
+  }
+
+  void DicomStructure2::AddPolygon(const DicomStructurePolygon2& polygon)
+  {
+    if (state_ != Building)
+    {
+      LOG(ERROR) << "DicomStructure2::AddPolygon - can only add polygon while building";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    polygons_.push_back(polygon);
+  }
+
+  void DicomStructure2::ComputeDependentProperties()
+  {
+    if (state_ != Building)
+    {
+      LOG(ERROR) << "DicomStructure2::ComputeDependentProperties - can only be called once";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    for (size_t i = 0; i < polygons_.size(); ++i)
+    {
+      // "compute" the polygon normal
+      polygons_[i].ComputeDependentProperties();
+    }
+    if (polygons_.size() > 0)
+    {
+      normal_ = polygons_[0].GetNormal();
+      state_ = NormalComputed;
+    }
+    else
+    {
+      LinearAlgebra::AssignVector(normal_, 0, 0, 0);
+      state_ = Invalid; // THIS MAY HAPPEN !!! (for instance for instance 72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661 :) )
+    }
+    if (polygons_.size() >= 2)
+      ComputeSliceThickness(); // this will change state_ from NormalComputed to Valid
+  }
+
+  OrthancStone::Vector DicomStructure2::GetNormal() const
+  {
+    if (state_ != Valid && state_ != Invalid)
+    {
+      LOG(ERROR) << "DicomStructure2::GetNormal() -- please call ComputeDependentProperties first.";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    if (state_ == Invalid)
+    {
+      LOG(ERROR) << "DicomStructure2::GetNormal() -- The Dicom structure is invalid. The normal is set to 0,0,0";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    return normal_;
+  }
+
+  const DicomStructurePolygon2* DicomStructure2::GetPolygonClosestToSlice(
+    const CoordinateSystem3D& plane) const
+  {
+    ORTHANC_ASSERT(state_ == Valid);
+
+    // we assume 0,0,1 for now
+    ORTHANC_ASSERT(LinearAlgebra::IsNear(plane.GetNormal()[0], 0.0));
+    ORTHANC_ASSERT(LinearAlgebra::IsNear(plane.GetNormal()[1], 0.0));
+
+    for (size_t i = 0; i < polygons_.size(); ++i)
+    {
+      const DicomStructurePolygon2& polygon = polygons_[i];
+
+      // "height" of cutting plane
+      double cutZ = plane.GetOrigin()[2];
+
+      if (LinearAlgebra::IsNear(
+        cutZ, polygon.GetZ(),
+        sliceThickness_ / 2.0 /* in mm */))
+        return &polygon;
+    }
+    return NULL;
+  }
+
+
+    bool DicomStructure2::Project(std::vector< std::pair<Point2D, Point2D> > & segments, const CoordinateSystem3D & plane) const
+    {
+      segments.clear();
+
+      Vector normal = GetNormal();
+
+      size_t totalRectCount = 0;
+
+      // dummy var
+      bool isOpposite = false;
+
+      // This is an axial projection
+      if (GeometryToolbox::IsParallelOrOpposite(isOpposite, normal, plane.GetNormal()))
+      {
+        const DicomStructurePolygon2* polygon = GetPolygonClosestToSlice(plane);
+        if (polygon)
+        {
+          polygon->ProjectOnParallelPlane(segments, plane);
+        }
+      }
+      else
+      {
+        // let's compute the dot product of the plane normal and the polygons
+        // normal.
+        double dot = LinearAlgebra::DotProduct(plane.GetNormal(), normal);
+
+        if (LinearAlgebra::IsNear(dot, 0))
+        {
+          // Coronal or sagittal projection
+
+          // vector of vector of rectangles that will be merged in a single big contour:
+
+          // each polygon slab cut by a perpendicular plane yields 0..* rectangles
+          std::vector< RtStructRectanglesInSlab > rectanglesForEachSlab;
+
+          for (size_t i = 0; i < polygons_.size(); ++i)
+          {
+            // book an entry for this slab
+            rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
+
+            // let's compute the intersection between the polygon and the plane
+            // intersections are in plane coords
+            std::vector<Point2D> intersections;
+
+            polygons_[i].ProjectOnConstantPlane(intersections, plane);
+
+            // for each pair of intersections, we add a rectangle.
+            if ((intersections.size() % 2) != 0)
+            {
+              LOG(WARNING) << "Odd number of intersections between structure "
+                << name_ << ", polygon # " << i
+                << " and plane where X axis is parallel to polygon normal vector";
+            }
+
+            size_t numRects = intersections.size() / 2;
+            
+            // we keep count of the total number of rects for vector pre-allocations
+            totalRectCount += numRects;
+            
+            for (size_t iRect = 0; iRect < numRects; ++iRect)
+            {
+              RtStructRectangleInSlab rectangle;
+              ORTHANC_ASSERT(LinearAlgebra::IsNear(intersections[2 * iRect].y, intersections[2 * iRect + 1].y));
+              ORTHANC_ASSERT((2 * iRect + 1) < intersections.size());
+              double x1 = intersections[2 * iRect].x;
+              double x2 = intersections[2 * iRect + 1].x;
+              double y1 = intersections[2 * iRect].y - sliceThickness_ * 0.5;
+              double y2 = intersections[2 * iRect].y + sliceThickness_ * 0.5;
+
+              rectangle.xmin = std::min(x1, x2);
+              rectangle.xmax = std::max(x1, x2);
+              rectangle.ymin = std::min(y1, y2);
+              rectangle.ymax = std::max(y1, y2);
+
+              // TODO: keep them sorted!!!!
+
+              rectanglesForEachSlab.back().push_back(rectangle);
+            }
+          }
+          // now we need to merge all the slabs into a set of polygons (1 or more)
+          ConvertListOfSlabsToSegments(segments, rectanglesForEachSlab, totalRectCount);
+        }
+        else
+        {
+          // plane is not perpendicular to the polygons
+          // 180.0 / [Math]::Pi = 57.2957795130823
+          double acDot = 57.2957795130823 * acos(dot);
+          LOG(ERROR) << "DicomStructure2::Project -- cutting plane must be "
+            << "perpendicular to the structures, but dot product is: "
+            << dot << " and (180/pi)*acos(dot) = " << acDot;
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+      }
+      return segments.size() != 0;
+    }
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomStructure2.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,161 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#include "DicomStructurePolygon2.h"
+#include "DicomStructureSetUtils.h"
+
+namespace OrthancStone
+{
+
+  /*
+    A structure has a color, a name, a set of slices..
+
+    Each slice is a polygon.
+  */
+  struct DicomStructure2
+  {
+    DicomStructure2() :
+      red_(0), green_(0), blue_(0), sliceThickness_(0), state_(Building) {}
+
+    void AddPolygon(const DicomStructurePolygon2& polygon);
+
+    /**
+    Once all polygons have been added, this method will determine:
+    - the slice orientation (through the normal vector)
+    - the spacing between slices (slice thickness)
+
+    it will also set up the info required to efficiently compute plane
+    intersections later on.
+    */
+    void ComputeDependentProperties();
+
+    /**
+    Being given a plane that is PARALLEL to the set of polygon structures, this 
+    returns a pointer to the polygon located at that position (if it is closer
+    than thickness/2) or NULL if there is none.
+
+    TODO: use sorted vector to improve
+
+    DO NOT STORE THE RETURNED POINTER!
+    */
+    const DicomStructurePolygon2* GetPolygonClosestToSlice(const CoordinateSystem3D& plane) const;
+
+    Vector GetNormal() const;
+
+    Color GetColor() const
+    {
+      return Color(red_, green_, blue_);
+    }
+
+    bool IsValid() const
+    {
+      return state_ == Valid;
+    }
+
+    /**
+    This method is used to project the 3D structure on a 2D plane.
+
+    A structure is a stack of polygons, representing a volume.
+
+    We need to compute the intersection between this volume and the supplied 
+    cutting plane (the "slice"). This is more than a cutting plane: it is also
+    a 2D-coordinate system (the plane has axes vectors)
+
+    The cutting plane is always parallel to the plane defined by two of the
+    world coordinate system axes.
+    
+    The result is a set of closed polygons.
+
+    If the cut is parallel to the polygons, we pick the polygon closest to 
+    the slice, project it on the slice and return it in slice coordinates.
+
+    If the cut is perpendicular to the polygons, for each polygon, we compute 
+    the intersection between the cutting plane and the polygon slab (imaginary 
+    volume created by extruding the polygon above and below its plane by 
+    thickness/2) :
+    - each slab, intersected by the plane, gives a set of 0..* rectangles \
+      (only one if the polygon is convex)
+    - when doing this for the whole stack of slabs, we get a set of rectangles:
+      To compute these rectangles, for each polygon, we compute the intersection
+      between :
+       - the line defined by the intersection of the polygon plane and the cutting
+         plane
+       - the polygon itself
+      This yields 0 or 2*K points along the line C. These are turned into K
+      rectangles by taking two consecutive points along the line and extruding 
+      this segment by sliceThickness/2 in the orientation of the polygon normal,
+      in both directions.
+
+    Then, once this list of rectangles is computed, we need to group the 
+    connected rectangles together. Connected, here, means sharing at least part
+    of an edge --> union/find data structures and algorithm.
+    */
+    bool Project(std::vector< std::pair<Point2D, Point2D> >& polygons, const CoordinateSystem3D& plane) const;
+
+    std::string                         interpretation_;
+    std::string                         name_;
+    uint8_t                             red_;
+    uint8_t                             green_;
+    uint8_t                             blue_;
+  
+    /** Internal */
+    const std::vector<DicomStructurePolygon2>& GetPolygons() const
+    {
+      return polygons_;
+    }
+
+    /** Internal */
+    double GetSliceThickness() const
+    {
+      return sliceThickness_;
+    }
+
+  private:
+    enum State
+    {
+      Building,
+      NormalComputed,
+      Valid, // When normal components AND slice thickness are computed
+      Invalid
+    };
+
+    void ComputeNormal();
+    void ComputeSliceThickness();
+
+    std::vector<DicomStructurePolygon2> polygons_;
+    Vector3D                            normal_;
+    double                              sliceThickness_;
+
+    /*
+      After creation (and while polygons are added), state is Building.
+      After ComputeDependentProperties() is called, state can either be
+      Valid or Invalid. In any case, the object becomes immutable.
+    */
+    State state_;
+  };
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomStructurePolygon2.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,305 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#include "DicomStructurePolygon2.h"
+
+#include "../Toolbox/LinearAlgebra.h"
+
+namespace OrthancStone
+{
+  void DicomStructurePolygon2::ComputeDependentProperties()
+  {
+    ORTHANC_ASSERT(state_ == Building);
+
+    for (size_t j = 0; j < points_.size(); ++j)
+    {
+      // TODO: move to AddPoint!
+      const Point3D& p = points_[j];
+      if (p[0] < minX_)
+        minX_ = p[0];
+      if (p[0] > maxX_)
+        maxX_ = p[0];
+
+      if (p[1] < minY_)
+        minY_ = p[1];
+      if (p[1] > maxY_)
+        maxY_ = p[1];
+
+      if (p[2] < minZ_)
+        minZ_ = p[2];
+      if (p[2] > maxZ_)
+        maxZ_ = p[2];
+    }
+
+    if (LinearAlgebra::IsNear(minX_, maxX_))
+    {
+      LinearAlgebra::AssignVector(normal_, 1, 0, 0);
+      //ORTHANC_ASSERT(!LinearAlgebra::IsNear(minX, maxX));
+      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minY_, maxY_));
+      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minZ_, maxZ_));
+    }
+    else if (LinearAlgebra::IsNear(minY_, maxY_))
+    {
+      LinearAlgebra::AssignVector(normal_, 0, 1, 0);
+      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minX_, maxX_));
+      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minZ_, maxZ_));
+    }
+    else if (LinearAlgebra::IsNear(minZ_, maxZ_))
+    {
+      LinearAlgebra::AssignVector(normal_, 0, 0, 1);
+      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minX_, maxX_));
+      ORTHANC_ASSERT(!LinearAlgebra::IsNear(minY_, maxY_));
+    }
+    else
+    {
+      LOG(ERROR) << "The contour is not coplanar and not parallel to any axis.";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    state_ = Valid;
+  }
+
+
+  void DicomStructurePolygon2::ProjectOnConstantPlane(
+    std::vector<Point2D>& intersections, const CoordinateSystem3D& plane) const
+  {
+    // the plane can either have constant X, or constant Y.
+    // - for constant Z planes, use the ProjectOnParallelPlane method
+    // - other type of planes are not supported
+
+    // V is the coordinate that is constant in the plane
+    double planeV = 0.0;
+
+    // if true, then "u" in the code is "x" and "v" is "y". 
+    // (v is constant in the plane)
+    bool uvxy = false;
+
+    size_t uindex = static_cast<size_t>(-1);
+    size_t vindex = static_cast<size_t>(-1);
+
+    ORTHANC_ASSERT(LinearAlgebra::IsNear(plane.GetNormal()[2], 0.0));
+
+    if (LinearAlgebra::IsNear(plane.GetNormal()[1], 0.0))
+    {
+      // normal is 1,0,0 (or -1,0,0). 
+      // plane is constant X
+      uindex = 1;
+      vindex = 0;
+
+      uvxy = false;
+      planeV = plane.GetOrigin()[0];
+      if (planeV < minX_)
+        return;
+      if (planeV > maxX_)
+        return;
+    }
+    else if (LinearAlgebra::IsNear(plane.GetNormal()[0], 0.0))
+    {
+      // normal is 0,1,0 (or 0,-1,0). 
+      // plane is constant Y
+      uindex = 0;
+      vindex = 1;
+
+      uvxy = true;
+      planeV = plane.GetOrigin()[1];
+      if (planeV < minY_)
+        return;
+      if (planeV > maxY_)
+        return;
+    }
+    else
+    {
+      // if the following assertion(s) fail(s), it means the plane is NOT a constant-X or constant-Y plane
+      LOG(ERROR) << "Plane normal must be (a,0,0) or (0,a,0), with a == -1 or a == 1";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    size_t pointCount = GetPointCount();
+    if (pointCount >= 3)
+    {
+      // this vector will contain the coordinates of the intersection points
+      // between the plane and the polygon.
+      // these are expressed in the U coordinate, that is either X or Y, 
+      // depending upon the plane orientation
+      std::vector<double> uIntersections;
+
+      // we loop on the segments of the polygon (TODO: optimize)
+      // and we compute the intersection between each segment and the cut
+      // cutting plane (slice) has a constant X
+
+      for (size_t iPoint = 0; iPoint < pointCount; ++iPoint)
+      {
+        double u1 = points_[iPoint][uindex];
+        double v1 = points_[iPoint][vindex];
+
+        double u2 = 0;
+        double v2 = 0;
+
+        if (iPoint < pointCount - 1)
+        {
+          u2 = points_[iPoint + 1][uindex];
+          v2 = points_[iPoint + 1][vindex];
+        }
+        else
+        {
+          u2 = points_[0][uindex];
+          v2 = points_[0][vindex];
+        }
+
+        // Check if the segment intersects the plane
+        if ((std::min(v1, v2) <= planeV) && (std::max(v1, v2) >= planeV))
+        {
+          // special case: the segment is parallel to the plane but close to it
+          if (LinearAlgebra::IsNear(v1, v2))
+          {
+            // in that case, we choose to label both points as an intersection
+            double x, y;
+            plane.ProjectPoint(x, y, points_[iPoint]);
+            intersections.push_back(Point2D(x, y));
+
+            plane.ProjectPoint(x, y, points_[iPoint + 1]);
+            intersections.push_back(Point2D(x, y));
+          }
+          else
+          {
+            // we are looking for u so that (u,planeV) belongs to the segment
+            // let's define alpha = (u-u2)/(u1-u2) --> u = alpha*(u1-u2) + u2
+            // alpha = (v2-planeV)/(v2-v1)
+            // because the following two triangles are similar
+            // [ (planeY,x)  , (y2,x2), (planeY,x2) ] or
+            // [ (planeX,y)  , (x2,y2), (planeX,y2) ]
+            // and
+            // [ (y1    ,x1) , (y2,x2), (y1    ,x2) ] or
+            // [ (x1    ,y1) , (x2,y2), (x1    ,y2) ]
+
+            /*
+              void CoordinateSystem3D::ProjectPoint(double& offsetX,
+                double& offsetY,
+                const Vector& point) const
+            */
+            double alpha = (v2 - planeV) / (v2 - v1);
+
+            // get rid of numerical oddities
+            if (alpha < 0.0)
+              alpha = 0.0;
+            if (alpha > 1.0)
+              alpha = 1.0;
+            double u = alpha * (u1 - u2) + u2;
+
+            // here is the intersection in world coordinates
+            Vector intersection;
+            if(uvxy)
+              LinearAlgebra::AssignVector(intersection, u, planeV, minZ_);
+            else
+              LinearAlgebra::AssignVector(intersection, planeV, u, minZ_);
+
+            // and we convert it to plane coordinates
+            {
+              double xi, yi;
+              plane.ProjectPoint(xi, yi, intersection);
+
+              // we consider that the x axis is always parallel to the polygons
+              // TODO: is this hypothesis safe??????
+              uIntersections.insert(std::lower_bound(uIntersections.begin(), uIntersections.end(), xi), xi);
+            }
+          }
+        }
+      } // end of for (size_t iPoint = 0; iPoint < pointCount; ++iPoint)
+    
+      // now we convert the intersections to plane points
+      // we consider that the x axis is always parallel to the polygons
+      // TODO: same hypothesis as above: plane is perpendicular to polygons, 
+      // plane is parallel to the XZ (constant Y) or YZ (constant X) 3D planes
+      for (size_t i = 0; i < uIntersections.size(); ++i)
+      {
+        double x = uIntersections[i];
+        intersections.push_back(Point2D(x, minZ_));
+      }
+    } // end of if (pointCount >= 3)
+    else
+    {
+      LOG(ERROR) << "This polygon has " << pointCount << " vertices, which is less than 3 --> skipping";
+    }
+  } 
+
+void OrthancStone::DicomStructurePolygon2::ProjectOnParallelPlane(
+  std::vector< std::pair<Point2D, Point2D> >& segments, 
+  const CoordinateSystem3D& plane) const
+{
+  if (points_.size() < 3)
+    return;
+
+  // the plane is horizontal
+  ORTHANC_ASSERT(LinearAlgebra::IsNear(plane.GetNormal()[0], 0.0));
+  ORTHANC_ASSERT(LinearAlgebra::IsNear(plane.GetNormal()[1], 0.0));
+
+  segments.clear();
+  segments.reserve(points_.size());
+  // since the returned values need to be expressed in the supplied coordinate
+  // system, we need to subtract origin_ from the returned points
+
+  double planeOriginX = plane.GetOrigin()[0];
+  double planeOriginY = plane.GetOrigin()[1];
+
+  // precondition: points_.size() >= 3
+  for (size_t j = 0; j < points_.size()-1; ++j)
+  {
+    // segment between point j and j+1
+
+    const Point3D& point0 = GetPoint(j);
+    // subtract plane origin x and y
+    Point2D p0(point0[0] - planeOriginX, point0[1] - planeOriginY);
+    
+    const Point3D& point1 = GetPoint(j+1);
+    // subtract plane origin x and y
+    Point2D p1(point1[0] - planeOriginX, point1[1] - planeOriginY);
+
+    segments.push_back(std::pair<Point2D, Point2D>(p0,p1));
+  }
+
+
+  // final segment 
+
+  const Point3D& point0 = GetPoint(points_.size() - 1);
+  // subtract plane origin x and y
+  Point2D p0(point0[0] - planeOriginX, point0[1] - planeOriginY);
+
+  const Point3D& point1 = GetPoint(0);
+  // subtract plane origin x and y
+  Point2D p1(point1[0] - planeOriginX, point1[1] - planeOriginY);
+
+  segments.push_back(std::pair<Point2D, Point2D>(p0, p1));
+}
+
+double OrthancStone::DicomStructurePolygon2::GetZ() const
+{
+  ORTHANC_ASSERT(LinearAlgebra::IsNear(normal_[0], 0.0));
+  ORTHANC_ASSERT(LinearAlgebra::IsNear(normal_[1], 0.0));
+  ORTHANC_ASSERT(LinearAlgebra::IsNear(minZ_, maxZ_));
+  return minZ_;
+}
+
+
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomStructurePolygon2.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,161 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#include "CoordinateSystem3D.h"
+#include "DicomStructureSetUtils.h"
+#include "Extent2D.h"
+
+#include "../Scene2D/Color.h"
+#include "../StoneException.h"
+
+#include <FullOrthancDataset.h>
+
+#include <list>
+#include <string>
+
+namespace OrthancStone
+{
+
+  /**
+  Only polygons that are planar and parallel to either the X,Y or Z plane
+  ("X plane" == plane where X is equal to a constant for each point) are
+  supported.
+  */
+  class DicomStructurePolygon2
+  {
+  public:
+    enum Type
+    {
+      ClosedPlanar,
+      Unsupported
+    };
+
+    DicomStructurePolygon2(std::string referencedSopInstanceUid, const std::string& type)
+      : referencedSopInstanceUid_(referencedSopInstanceUid)
+      , state_(Building)
+      , minX_(std::numeric_limits<double>::max())
+      , maxX_(-std::numeric_limits<double>::max())
+      , minY_(std::numeric_limits<double>::max())
+      , maxY_(-std::numeric_limits<double>::max())
+      , minZ_(std::numeric_limits<double>::max())
+      , maxZ_(-std::numeric_limits<double>::max())
+      , type_(TypeFromString(type))
+    {
+      ORTHANC_ASSERT(type_ == ClosedPlanar);
+    }
+
+    void ComputeDependentProperties();
+
+    size_t GetPointCount() const
+    {
+      ORTHANC_ASSERT(state_ == Valid);
+      return points_.size();
+    }
+
+    const Point3D& GetPoint(size_t i) const
+    {
+      ORTHANC_ASSERT(state_ == Valid);
+      return points_.at(i);
+    }
+
+    void AddPoint(const Point3D& v)
+    {
+      ORTHANC_ASSERT(state_ == Building);
+      points_.push_back(v);
+    }
+
+    void Reserve(size_t n)
+    {
+      ORTHANC_ASSERT(state_ == Building);
+      points_.reserve(n);
+    }
+
+    /**
+    This method takes a plane+coord system  that is parallel to the polygon
+    and adds to polygons a new vector with the ordered set of points projected
+    on the plane, in the plane coordinate system.
+    */
+    void ProjectOnParallelPlane(
+      std::vector< std::pair<Point2D,Point2D> >& segments,
+      const CoordinateSystem3D& plane) const;
+
+    /**
+    Returns the coordinates of the intersection of the polygon and a plane 
+    that is perpendicular to the polygons (plane has either constant X or 
+    constant Y)
+    */
+    void ProjectOnConstantPlane(
+      std::vector<Point2D>& intersections,
+      const CoordinateSystem3D& plane) const;
+
+    /**
+    This method assumes polygon has a normal equal to 0,0,-1 and 0,0,1 (thus,
+    the polygon is parallel to the XY plane) and returns the Z coordinate of 
+    all the polygon points
+    */
+    double GetZ() const;
+
+    /**
+    The normal sign is left undefined for now
+    */
+    Vector3D GetNormal() const
+    {
+      return normal_;
+    }
+
+    /**
+    This method will compute the intersection between a polygon and
+    a plane where either X, Y or Z is constant.
+    The plane is given with an origin and a normal. If the normal is
+    not parallel to an axis, an error is raised.
+    */
+    void ComputeIntersectionWithPlane(const CoordinateSystem3D& plane);
+
+  private:
+    static Type TypeFromString(const std::string& s)
+    {
+      if (s == "CLOSED_PLANAR")
+        return ClosedPlanar;
+      else
+        return Unsupported;
+    }
+    enum State
+    {
+      Building,
+      Valid
+    };
+    std::string           referencedSopInstanceUid_;
+    CoordinateSystem3D    geometry_;
+    std::vector<Point3D>  points_;
+    Vector3D              normal_; // sign is irrelevant for now
+    State                 state_;
+    double                minX_, maxX_, minY_, maxY_, minZ_, maxZ_;
+    Type                  type_;
+  };
+}
+
+#endif
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomStructureSet.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,1067 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomStructureSet.h"
+#include "DicomStructureSetUtils.h"
+
+#include "../Toolbox/GeometryToolbox.h"
+#include "OrthancDatasets/DicomDatasetReader.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+#if defined(_MSC_VER)
+#  pragma warning(push)
+#  pragma warning(disable:4244)
+#endif
+
+#include <limits>
+#include <stdio.h>
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#if defined(_MSC_VER)
+#  pragma warning(pop)
+#endif
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include "ParsedDicomDataset.h"
+#endif
+
+
+typedef boost::geometry::model::d2::point_xy<double> BoostPoint;
+typedef boost::geometry::model::polygon<BoostPoint> BoostPolygon;
+typedef boost::geometry::model::multi_polygon<BoostPolygon>  BoostMultiPolygon;
+
+
+static void Union(BoostMultiPolygon& output,
+                  std::vector<BoostPolygon>& input)
+{
+  for (size_t i = 0; i < input.size(); i++)
+  {
+    boost::geometry::correct(input[i]);
+  }
+  
+  if (input.size() == 0)
+  {
+    output.clear();
+  }
+  else if (input.size() == 1)
+  {
+    output.resize(1);
+    output[0] = input[0];
+  }
+  else
+  {
+    boost::geometry::union_(input[0], input[1], output);
+
+    for (size_t i = 0; i < input.size(); i++)
+    {
+      BoostMultiPolygon tmp;
+      boost::geometry::union_(output, input[i], tmp);
+      output = tmp;
+    }
+  }
+}
+
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+
+static BoostPolygon CreateRectangle(float x1, float y1,
+                                    float x2, float y2)
+{
+  BoostPolygon r;
+  boost::geometry::append(r, BoostPoint(x1, y1));
+  boost::geometry::append(r, BoostPoint(x1, y2));
+  boost::geometry::append(r, BoostPoint(x2, y2));
+  boost::geometry::append(r, BoostPoint(x2, y1));
+  return r;
+}
+
+#else
+
+namespace OrthancStone
+{
+  static RtStructRectangleInSlab CreateRectangle(float x1, float y1,
+                                                 float x2, float y2)
+  {
+    RtStructRectangleInSlab rect;
+    rect.xmin = std::min(x1, x2);
+    rect.xmax = std::max(x1, x2);
+    rect.ymin = std::min(y1, y2);
+    rect.ymax = std::max(y1, y2);
+    return rect;
+  }
+
+  bool CompareRectanglesForProjection(const std::pair<RtStructRectangleInSlab,double>& r1, const std::pair<RtStructRectangleInSlab, double>& r2)
+  {
+    return r1.second < r2.second;
+  }
+
+  bool CompareSlabsY(const RtStructRectanglesInSlab& r1, const RtStructRectanglesInSlab& r2)
+  {
+    if ((r1.size() == 0) || (r2.size() == 0))
+      return false;
+
+    return r1[0].ymax < r2[0].ymax;
+  }
+}
+
+#endif
+
+namespace OrthancStone
+{
+  static const Orthanc::DicomTag DICOM_TAG_CONTOUR_GEOMETRIC_TYPE(0x3006, 0x0042);
+  static const Orthanc::DicomTag DICOM_TAG_CONTOUR_IMAGE_SEQUENCE(0x3006, 0x0016);
+  static const Orthanc::DicomTag DICOM_TAG_CONTOUR_SEQUENCE(0x3006, 0x0040);
+  static const Orthanc::DicomTag DICOM_TAG_CONTOUR_DATA(0x3006, 0x0050);
+  static const Orthanc::DicomTag DICOM_TAG_NUMBER_OF_CONTOUR_POINTS(0x3006, 0x0046);
+  static const Orthanc::DicomTag DICOM_TAG_REFERENCED_SOP_INSTANCE_UID(0x0008, 0x1155);
+  static const Orthanc::DicomTag DICOM_TAG_ROI_CONTOUR_SEQUENCE(0x3006, 0x0039);
+  static const Orthanc::DicomTag DICOM_TAG_ROI_DISPLAY_COLOR(0x3006, 0x002a);
+  static const Orthanc::DicomTag DICOM_TAG_ROI_NAME(0x3006, 0x0026);
+  static const Orthanc::DicomTag DICOM_TAG_RT_ROI_INTERPRETED_TYPE(0x3006, 0x00a4);
+  static const Orthanc::DicomTag DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE(0x3006, 0x0080);
+  static const Orthanc::DicomTag DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE(0x3006, 0x0020);
+
+
+  static uint8_t ConvertColor(double v)
+  {
+    if (v < 0)
+    {
+      return 0;
+    }
+    else if (v >= 255)
+    {
+      return 255;
+    }
+    else
+    {
+      return static_cast<uint8_t>(v);
+    }
+  }
+
+
+  static bool ParseVector(Vector& target,
+                          const IDicomDataset& dataset,
+                          const DicomPath& tag)
+  {
+    std::string value;
+    return (dataset.GetStringValue(value, tag) &&
+            LinearAlgebra::ParseVector(target, value));
+  }
+
+  void DicomStructureSet::Polygon::CheckPointIsOnSlice(const Vector& v) const
+  {
+    if (hasSlice_)
+    {
+      double magnitude =
+        GeometryToolbox::ProjectAlongNormal(v, geometry_.GetNormal());
+      if(!LinearAlgebra::IsNear(
+           magnitude,
+           projectionAlongNormal_,
+           sliceThickness_ / 2.0 /* in mm */ ))
+      {
+        LOG(ERROR) << "This RT-STRUCT contains a point that is off the "
+                   << "slice of its instance | "
+                   << "magnitude = " << magnitude << " | "
+                   << "projectionAlongNormal_ = " << projectionAlongNormal_ << " | "
+                   << "tolerance (sliceThickness_ / 2.0) = " << (sliceThickness_ / 2.0);
+
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+    }
+  }
+
+  bool DicomStructureSet::Polygon::IsPointOnSliceIfAny(const Vector& v) const
+  {
+    if (hasSlice_)
+    {
+      double magnitude = 
+        GeometryToolbox::ProjectAlongNormal(v, geometry_.GetNormal());
+      bool onSlice = LinearAlgebra::IsNear(
+        magnitude,
+        projectionAlongNormal_,
+        sliceThickness_ / 2.0 /* in mm */);
+      if (!onSlice)
+      {
+        LOG(WARNING) << "This RT-STRUCT contains a point that is off the "
+                     << "slice of its instance | "
+                     << "magnitude = " << magnitude << " | "
+                     << "projectionAlongNormal_ = " << projectionAlongNormal_ << " | "
+                     << "tolerance (sliceThickness_ / 2.0) = " << (sliceThickness_ / 2.0);
+      }
+      return onSlice;
+    }
+    else
+    {
+      return true;
+    }
+  }
+
+  void DicomStructureSet::Polygon::AddPoint(const Vector& v)
+  {
+#if 1
+    // BGO 2019-09-03
+    if (IsPointOnSliceIfAny(v))
+    {
+      points_.push_back(v);
+    }
+#else
+    CheckPoint(v);
+    points_.push_back(v);
+#endif 
+  }
+
+
+  bool DicomStructureSet::Polygon::UpdateReferencedSlice(const ReferencedSlices& slices)
+  {
+    if (hasSlice_)
+    {
+      return true;
+    }
+    else
+    {
+      ReferencedSlices::const_iterator it = slices.find(sopInstanceUid_);
+      
+      if (it == slices.end())
+      {
+        return false;
+      }
+      else
+      {
+        const CoordinateSystem3D& geometry = it->second.geometry_;
+        
+        hasSlice_ = true;
+        geometry_ = geometry;
+        projectionAlongNormal_ = GeometryToolbox::ProjectAlongNormal(geometry.GetOrigin(), geometry.GetNormal());
+        sliceThickness_ = it->second.thickness_;
+
+        extent_.Reset();
+        
+        for (Points::const_iterator it = points_.begin(); it != points_.end(); ++it)
+        {
+          if (IsPointOnSliceIfAny(*it))
+          {
+            double x, y;
+            geometry.ProjectPoint2(x, y, *it);
+            extent_.AddPoint(x, y);
+          }
+        }
+        return true;
+      }
+    }
+  }
+
+  bool DicomStructureSet::Polygon::IsOnSlice(const CoordinateSystem3D& slice) const
+  {
+    bool isOpposite = false;
+
+    if (points_.empty() ||
+        !hasSlice_ ||
+        !GeometryToolbox::IsParallelOrOpposite(isOpposite, slice.GetNormal(), geometry_.GetNormal()))
+    {
+      return false;
+    }
+    
+    double d = GeometryToolbox::ProjectAlongNormal(slice.GetOrigin(), geometry_.GetNormal());
+
+    return (LinearAlgebra::IsNear(d, projectionAlongNormal_,
+                                  sliceThickness_ / 2.0));
+  }
+    
+  bool DicomStructureSet::Polygon::Project(double& x1,
+                                           double& y1,
+                                           double& x2,
+                                           double& y2,
+                                           const CoordinateSystem3D& slice) const
+  {
+    // TODO: optimize this method using a sweep-line algorithm for polygons
+    
+    if (!hasSlice_ ||
+        points_.size() <= 1)
+    {
+      return false;
+    }
+
+    double x, y;
+    geometry_.ProjectPoint2(x, y, slice.GetOrigin());
+      
+    bool isOpposite;
+    if (GeometryToolbox::IsParallelOrOpposite
+        (isOpposite, slice.GetNormal(), geometry_.GetAxisY()))
+    {
+      // plane is constant Y
+
+      if (y < extent_.GetY1() ||
+          y > extent_.GetY2())
+      {
+        // The polygon does not intersect the input slice
+        return false;
+      }
+        
+      bool isFirst = true;
+      double xmin = std::numeric_limits<double>::infinity();
+      double xmax = -std::numeric_limits<double>::infinity();
+
+      double prevX, prevY;
+      geometry_.ProjectPoint2(prevX, prevY, points_[points_.size() - 1]);
+        
+      for (size_t i = 0; i < points_.size(); i++)
+      {
+        // Reference: ../../Resources/Computations/IntersectSegmentAndHorizontalLine.py
+        double curX, curY;
+        geometry_.ProjectPoint2(curX, curY, points_[i]);
+
+        // if prev* and cur* are on opposite sides of y, this means that the
+        // segment intersects the plane.
+        if ((prevY < y && curY > y) ||
+            (prevY > y && curY < y))
+        {
+          double p = (curX * prevY - curY * prevX + y * (prevX - curX)) / (prevY - curY);
+          xmin = std::min(xmin, p);
+          xmax = std::max(xmax, p);
+          isFirst = false;
+
+          // xmin and xmax represent the extent of the rectangle along the 
+          // intersection between the plane and the polygon geometry
+
+        }
+
+        prevX = curX;
+        prevY = curY;
+      }
+        
+      // if NO segment intersects the plane
+      if (isFirst)
+      {
+        return false;
+      }
+      else
+      {
+        // y is the plane y coord in the polygon geometry
+        // xmin and xmax are ALSO expressed in the polygon geometry
+
+        // let's convert them to 3D world geometry...
+        Vector p1 = (geometry_.MapSliceToWorldCoordinates(xmin, y) +
+                     sliceThickness_ / 2.0 * geometry_.GetNormal());
+        Vector p2 = (geometry_.MapSliceToWorldCoordinates(xmax, y) -
+                     sliceThickness_ / 2.0 * geometry_.GetNormal());
+          
+        // then to the cutting plane geometry...
+        slice.ProjectPoint2(x1, y1, p1);
+        slice.ProjectPoint2(x2, y2, p2);
+        return true;
+      }
+    }
+    else if (GeometryToolbox::IsParallelOrOpposite
+             (isOpposite, slice.GetNormal(), geometry_.GetAxisX()))
+    {
+      // plane is constant X => Sagittal view (remember that in the
+      // sagittal projection, the normal must be swapped)
+
+      
+      /*
+        Please read the comments in the section above, by taking into account
+        the fact that, in this case, the plane has a constant X, not Y (in 
+        polygon geometry_ coordinates)
+      */
+
+      if (x < extent_.GetX1() ||
+          x > extent_.GetX2())
+      {
+        return false;
+      }
+
+      bool isFirst = true;
+      double ymin = std::numeric_limits<double>::infinity();
+      double ymax = -std::numeric_limits<double>::infinity();
+
+      double prevX, prevY;
+      geometry_.ProjectPoint2(prevX, prevY, points_[points_.size() - 1]);
+        
+      for (size_t i = 0; i < points_.size(); i++)
+      {
+        // Reference: ../../Resources/Computations/IntersectSegmentAndVerticalLine.py
+        double curX, curY;
+        geometry_.ProjectPoint2(curX, curY, points_[i]);
+
+        if ((prevX < x && curX > x) ||
+            (prevX > x && curX < x))
+        {
+          double p = (curX * prevY - curY * prevX + x * (curY - prevY)) / (curX - prevX);
+          ymin = std::min(ymin, p);
+          ymax = std::max(ymax, p);
+          isFirst = false;
+        }
+
+        prevX = curX;
+        prevY = curY;
+      }
+        
+      if (isFirst)
+      {
+        return false;
+      }
+      else
+      {
+        Vector p1 = (geometry_.MapSliceToWorldCoordinates(x, ymin) +
+                     sliceThickness_ / 2.0 * geometry_.GetNormal());
+        Vector p2 = (geometry_.MapSliceToWorldCoordinates(x, ymax) -
+                     sliceThickness_ / 2.0 * geometry_.GetNormal());
+
+        slice.ProjectPoint2(x1, y1, p1);
+        slice.ProjectPoint2(x2, y2, p2);
+
+        return true;
+      }
+    }
+    else
+    {
+      // Should not happen
+      return false;
+    }
+  }
+
+  
+  const DicomStructureSet::Structure& DicomStructureSet::GetStructure(size_t index) const
+  {
+    if (index >= structures_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    return structures_[index];
+  }
+
+
+  DicomStructureSet::Structure& DicomStructureSet::GetStructure(size_t index)
+  {
+    if (index >= structures_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    return structures_[index];
+  }
+
+  void DicomStructureSet::Setup(const IDicomDataset& tags)
+  {
+    DicomDatasetReader reader(tags);
+    
+    size_t count, tmp;
+    if (!tags.GetSequenceSize(count, DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE) ||
+        !tags.GetSequenceSize(tmp, DICOM_TAG_ROI_CONTOUR_SEQUENCE) ||
+        tmp != count ||
+        !tags.GetSequenceSize(tmp, DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE) ||
+        tmp != count)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    structures_.resize(count);
+    for (size_t i = 0; i < count; i++)
+    {
+      structures_[i].interpretation_ = reader.GetStringValue
+        (DicomPath(DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE, i,
+                   DICOM_TAG_RT_ROI_INTERPRETED_TYPE),
+         "No interpretation");
+
+      structures_[i].name_ = reader.GetStringValue
+        (DicomPath(DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE, i,
+                   DICOM_TAG_ROI_NAME),
+         "No name");
+
+      Vector color;
+      if (ParseVector(color, tags, DicomPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+                                             DICOM_TAG_ROI_DISPLAY_COLOR)) &&
+          color.size() == 3)
+      {
+        structures_[i].red_ = ConvertColor(color[0]);
+        structures_[i].green_ = ConvertColor(color[1]);
+        structures_[i].blue_ = ConvertColor(color[2]);
+      }
+      else
+      {
+        structures_[i].red_ = 255;
+        structures_[i].green_ = 0;
+        structures_[i].blue_ = 0;
+      }
+
+      size_t countSlices;
+      if (!tags.GetSequenceSize(countSlices, DicomPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+                                                       DICOM_TAG_CONTOUR_SEQUENCE)))
+      {
+        countSlices = 0;
+      }
+
+      LOG(INFO) << "New RT structure: \"" << structures_[i].name_ 
+                << "\" with interpretation \"" << structures_[i].interpretation_
+                << "\" containing " << countSlices << " slices (color: " 
+                << static_cast<int>(structures_[i].red_) << "," 
+                << static_cast<int>(structures_[i].green_) << ","
+                << static_cast<int>(structures_[i].blue_) << ")";
+
+      // These temporary variables avoid allocating many vectors in the loop below
+      DicomPath countPointsPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+                                DICOM_TAG_CONTOUR_SEQUENCE, 0,
+                                DICOM_TAG_NUMBER_OF_CONTOUR_POINTS);
+
+      DicomPath geometricTypePath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+                                  DICOM_TAG_CONTOUR_SEQUENCE, 0,
+                                  DICOM_TAG_CONTOUR_GEOMETRIC_TYPE);
+      
+      DicomPath imageSequencePath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+                                  DICOM_TAG_CONTOUR_SEQUENCE, 0,
+                                  DICOM_TAG_CONTOUR_IMAGE_SEQUENCE);
+
+      // (3006,0039)[i] / (0x3006, 0x0040)[0] / (0x3006, 0x0016)[0] / (0x0008, 0x1155)
+      DicomPath referencedInstancePath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+                                       DICOM_TAG_CONTOUR_SEQUENCE, 0,
+                                       DICOM_TAG_CONTOUR_IMAGE_SEQUENCE, 0,
+                                       DICOM_TAG_REFERENCED_SOP_INSTANCE_UID);
+
+      DicomPath contourDataPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+                                DICOM_TAG_CONTOUR_SEQUENCE, 0,
+                                DICOM_TAG_CONTOUR_DATA);
+
+      for (size_t j = 0; j < countSlices; j++)
+      {
+        unsigned int countPoints;
+
+        countPointsPath.SetPrefixIndex(1, j);
+        if (!reader.GetUnsignedIntegerValue(countPoints, countPointsPath))
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+        }
+            
+        //LOG(INFO) << "Parsing slice containing " << countPoints << " vertices";
+
+        geometricTypePath.SetPrefixIndex(1, j);
+        std::string type = reader.GetMandatoryStringValue(geometricTypePath);
+        if (type != "CLOSED_PLANAR")
+        {
+          LOG(WARNING) << "Ignoring contour with geometry type: " << type;
+          continue;
+        }
+
+        size_t size;
+
+        imageSequencePath.SetPrefixIndex(1, j);
+        if (!tags.GetSequenceSize(size, imageSequencePath) || size != 1)
+        {
+          LOG(ERROR) << "The ContourImageSequence sequence (tag 3006,0016) must be present and contain one entry.";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);          
+        }
+
+        referencedInstancePath.SetPrefixIndex(1, j);
+        std::string sopInstanceUid = reader.GetMandatoryStringValue(referencedInstancePath);
+
+        contourDataPath.SetPrefixIndex(1, j);        
+        std::string slicesData = reader.GetMandatoryStringValue(contourDataPath);
+
+        Vector points;
+        if (!LinearAlgebra::ParseVector(points, slicesData) ||
+            points.size() != 3 * countPoints)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);          
+        }
+
+        // seen in real world
+        if(Orthanc::Toolbox::StripSpaces(sopInstanceUid) == "") 
+        {
+          LOG(ERROR) << "WARNING. The following Dicom tag (Referenced SOP Instance UID) contains an empty value : // (3006,0039)[" << i << "] / (0x3006, 0x0040)[0] / (0x3006, 0x0016)[0] / (0x0008, 0x1155)";
+        }
+
+        Polygon polygon(sopInstanceUid);
+        polygon.Reserve(countPoints);
+
+        for (size_t k = 0; k < countPoints; k++)
+        {
+          Vector v(3);
+          v[0] = points[3 * k];
+          v[1] = points[3 * k + 1];
+          v[2] = points[3 * k + 2];
+          polygon.AddPoint(v);
+        }
+
+        structures_[i].polygons_.push_back(polygon);
+      }
+    }
+  }
+
+
+#if ORTHANC_ENABLE_DCMTK == 1
+  DicomStructureSet::DicomStructureSet(Orthanc::ParsedDicomFile& instance)
+  {
+    ParsedDicomDataset dataset(instance);
+    Setup(dataset);
+  }
+#endif
+  
+
+  Vector DicomStructureSet::GetStructureCenter(size_t index) const
+  {
+    const Structure& structure = GetStructure(index);
+
+    Vector center;
+    LinearAlgebra::AssignVector(center, 0, 0, 0);
+    if (structure.polygons_.empty())
+    {
+      return center;
+    }
+
+    double n = static_cast<double>(structure.polygons_.size());
+
+    for (Polygons::const_iterator polygon = structure.polygons_.begin();
+         polygon != structure.polygons_.end(); ++polygon)
+    {
+      if (!polygon->GetPoints().empty())
+      {
+        center += polygon->GetPoints().front() / n;
+      }
+    }
+
+    return center;
+  }
+
+
+  const std::string& DicomStructureSet::GetStructureName(size_t index) const
+  {
+    return GetStructure(index).name_;
+  }
+
+
+  const std::string& DicomStructureSet::GetStructureInterpretation(size_t index) const
+  {
+    return GetStructure(index).interpretation_;
+  }
+
+
+  Color DicomStructureSet::GetStructureColor(size_t index) const
+  {
+    const Structure& s = GetStructure(index);
+    return Color(s.red_, s.green_, s.blue_);
+  }
+  
+    
+  void DicomStructureSet::GetStructureColor(uint8_t& red,
+                                            uint8_t& green,
+                                            uint8_t& blue,
+                                            size_t index) const
+  {
+    const Structure& s = GetStructure(index);
+    red = s.red_;
+    green = s.green_;
+    blue = s.blue_;
+  }
+
+
+  void DicomStructureSet::GetReferencedInstances(std::set<std::string>& instances)
+  {
+    for (Structures::const_iterator structure = structures_.begin();
+         structure != structures_.end(); ++structure)
+    {
+      for (Polygons::const_iterator polygon = structure->polygons_.begin();
+           polygon != structure->polygons_.end(); ++polygon)
+      {
+        instances.insert(polygon->GetSopInstanceUid());
+      }
+    }
+  }
+
+
+  void DicomStructureSet::AddReferencedSlice(const std::string& sopInstanceUid,
+                                             const std::string& seriesInstanceUid,
+                                             const CoordinateSystem3D& geometry,
+                                             double thickness)
+  {
+    if (referencedSlices_.find(sopInstanceUid) != referencedSlices_.end())
+    {
+      // This geometry is already known
+      LOG(ERROR) << "DicomStructureSet::AddReferencedSlice(): (referencedSlices_.find(sopInstanceUid) != referencedSlices_.end()). sopInstanceUid = " << sopInstanceUid;
+     
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      if (thickness < 0)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+        
+      if (!referencedSlices_.empty())
+      {
+        const ReferencedSlice& reference = referencedSlices_.begin()->second;
+
+        if (reference.seriesInstanceUid_ != seriesInstanceUid)
+        {
+          LOG(ERROR) << "This RT-STRUCT refers to several different series";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+        }
+
+        if (!GeometryToolbox::IsParallel(reference.geometry_.GetNormal(), geometry.GetNormal()))
+        {
+          LOG(ERROR) << "The slices in this RT-STRUCT are not parallel";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+        }
+      }
+        
+      referencedSlices_[sopInstanceUid] = ReferencedSlice(seriesInstanceUid, geometry, thickness);
+
+      for (Structures::iterator structure = structures_.begin();
+           structure != structures_.end(); ++structure)
+      {
+        for (Polygons::iterator polygon = structure->polygons_.begin();
+             polygon != structure->polygons_.end(); ++polygon)
+        {
+          polygon->UpdateReferencedSlice(referencedSlices_);
+        }
+      }
+    }
+  }
+
+
+  void DicomStructureSet::AddReferencedSlice(const Orthanc::DicomMap& dataset)
+  {
+    CoordinateSystem3D slice(dataset);
+
+    double thickness = 1;  // 1 mm by default
+
+    std::string s;
+    Vector v;
+    if (dataset.LookupStringValue(s, Orthanc::DICOM_TAG_SLICE_THICKNESS, false) &&
+        LinearAlgebra::ParseVector(v, s) &&
+        v.size() > 0)
+    {
+      thickness = v[0];
+    }
+
+    std::string instance, series;
+    if (dataset.LookupStringValue(instance, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false) &&
+        dataset.LookupStringValue(series, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
+    {
+      AddReferencedSlice(instance, series, slice, thickness);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  void DicomStructureSet::CheckReferencedSlices()
+  {
+    for (Structures::iterator structure = structures_.begin();
+         structure != structures_.end(); ++structure)
+    {
+      for (Polygons::iterator polygon = structure->polygons_.begin();
+           polygon != structure->polygons_.end(); ++polygon)
+      {
+        if (!polygon->UpdateReferencedSlice(referencedSlices_))
+        {
+          std::string sopInstanceUid = polygon->GetSopInstanceUid();
+          if (Orthanc::Toolbox::StripSpaces(sopInstanceUid) == "")
+          {
+            LOG(ERROR) << "DicomStructureSet::CheckReferencedSlices(): "
+                       << " missing information about referenced instance "
+                       << "(sopInstanceUid is empty!)";
+          }
+          else
+          {
+            LOG(ERROR) << "DicomStructureSet::CheckReferencedSlices(): "
+                       << " missing information about referenced instance "
+                       << "(sopInstanceUid = " << sopInstanceUid << ")";
+          }
+          //throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+        }
+      }
+    }
+  }
+
+
+  Vector DicomStructureSet::GetNormal() const
+  {
+    if (referencedSlices_.empty())
+    {
+      Vector v;
+      LinearAlgebra::AssignVector(v, 0, 0, 1);
+      return v;
+    }
+    else
+    {
+      return referencedSlices_.begin()->second.geometry_.GetNormal();
+    }
+  }
+
+  bool DicomStructureSet::ProjectStructure(
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+    std::vector< std::vector<Point2D> >& polygons,
+#else
+    std::vector< std::pair<Point2D, Point2D> >& segments,
+#endif
+    const Structure& structure,
+    const CoordinateSystem3D& sourceSlice) const
+  {
+    const CoordinateSystem3D slice = CoordinateSystem3D::NormalizeCuttingPlane(sourceSlice);
+    
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+    polygons.clear();
+#else
+    segments.clear();
+#endif
+
+    Vector normal = GetNormal();
+    
+    bool isOpposite;    
+    if (GeometryToolbox::IsParallelOrOpposite(isOpposite, normal, slice.GetNormal()))
+    {
+      // This is an axial projection
+
+      for (Polygons::const_iterator polygon = structure.polygons_.begin();
+           polygon != structure.polygons_.end(); ++polygon)
+      {
+        if (polygon->IsOnSlice(slice))
+        {
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+          polygons.push_back(std::vector<Point2D>());
+          
+          for (Points::const_iterator p = polygon->GetPoints().begin();
+               p != polygon->GetPoints().end(); ++p)
+          {
+            double x, y;
+            slice.ProjectPoint2(x, y, *p);
+            polygons.back().push_back(Point2D(x, y));
+          }
+#else
+          // we need to add all the segments corresponding to this polygon
+          const std::vector<Vector>& points3D = polygon->GetPoints();
+          if (points3D.size() >= 3)
+          {
+            Point2D prev2D;
+            {
+              Vector prev = points3D[0];
+              double prevX, prevY;
+              slice.ProjectPoint2(prevX, prevY, prev);
+              prev2D = Point2D(prevX, prevY);
+            }
+
+            size_t pointCount = points3D.size();
+            for (size_t ipt = 1; ipt < pointCount; ++ipt)
+            {
+              Vector next = points3D[ipt];
+              double nextX, nextY;
+              slice.ProjectPoint2(nextX, nextY, next);
+              Point2D next2D(nextX, nextY);
+              segments.push_back(std::pair<Point2D, Point2D>(prev2D, next2D));
+              prev2D = next2D;
+            }
+          }
+          else
+          {
+            LOG(ERROR) << "Contour with less than 3 points!";
+            // !!!
+          }
+#endif
+        }
+      }
+
+      return true;
+    }
+    else if (GeometryToolbox::IsParallelOrOpposite(isOpposite, normal, slice.GetAxisX()) ||
+             GeometryToolbox::IsParallelOrOpposite(isOpposite, normal, slice.GetAxisY()))
+    {
+#if 1
+      // Sagittal or coronal projection
+
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+      std::vector<BoostPolygon> projected;
+
+      for (Polygons::const_iterator polygon = structure.polygons_.begin();
+           polygon != structure.polygons_.end(); ++polygon)
+      {
+        double x1, y1, x2, y2;
+
+        if (polygon->Project(x1, y1, x2, y2, slice))
+        {
+          projected.push_back(CreateRectangle(x1, y1, x2, y2));
+        }
+      }
+#else
+      // this will contain the intersection of the polygon slab with
+      // the cutting plane, projected on the cutting plane coord system 
+      // (that yields a rectangle) + the Z coordinate of the polygon 
+      // (this is required to group polygons with the same Z later)
+      std::vector<std::pair<RtStructRectangleInSlab, double> > projected;
+
+      for (Polygons::const_iterator polygon = structure.polygons_.begin();
+           polygon != structure.polygons_.end(); ++polygon)
+      {
+        double x1, y1, x2, y2;
+
+        if (polygon->Project(x1, y1, x2, y2, slice))
+        {
+          double curZ = polygon->GetGeometryOrigin()[2];
+
+          // x1,y1 and x2,y2 are in "slice" coordinates (the cutting plane 
+          // geometry)
+          projected.push_back(std::make_pair(CreateRectangle(
+                                               static_cast<float>(x1), 
+                                               static_cast<float>(y1), 
+                                               static_cast<float>(x2), 
+                                               static_cast<float>(y2)),curZ));
+        }
+      }
+#endif
+
+#if USE_BOOST_UNION_FOR_POLYGONS != 1
+      // projected contains a set of rectangles specified by two opposite
+      // corners (x1,y1,x2,y2)
+      // we need to merge them 
+      // each slab yields ONE polygon!
+
+      // we need to sorted all the rectangles that originate from the same Z
+      // into lanes. To make sure they are grouped together in the array, we
+      // sort it.
+      std::sort(projected.begin(), projected.end(), CompareRectanglesForProjection);
+
+      std::vector<RtStructRectanglesInSlab> rectanglesForEachSlab;
+      rectanglesForEachSlab.reserve(projected.size());
+
+      double curZ = 0;
+      for (size_t i = 0; i < projected.size(); ++i)
+      {
+#if 0
+        rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
+#else
+        if (i == 0)
+        {
+          curZ = projected[i].second;
+          rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
+        }
+        else
+        {
+          // this check is needed to prevent creating a new slab if 
+          // the new polygon is at the same Z coord than last one
+          if (!LinearAlgebra::IsNear(curZ, projected[i].second))
+          {
+            rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
+            curZ = projected[i].second;
+          }
+        }
+#endif
+
+        rectanglesForEachSlab.back().push_back(projected[i].first);
+
+        // as long as they have the same y, we should put them into the same lane
+        // BUT in Sebastien's code, there is only one polygon per lane.
+
+        //std::cout << "rect: xmin = " << rect.xmin << " xmax = " << rect.xmax << " ymin = " << rect.ymin << " ymax = " << rect.ymax << std::endl;
+      }
+      
+      // now we need to sort the slabs in increasing Y order (see ConvertListOfSlabsToSegments)
+      std::sort(rectanglesForEachSlab.begin(), rectanglesForEachSlab.end(), CompareSlabsY);
+
+      ConvertListOfSlabsToSegments(segments, rectanglesForEachSlab, projected.size());
+#else
+      BoostMultiPolygon merged;
+      Union(merged, projected);
+
+      polygons.resize(merged.size());
+      for (size_t i = 0; i < merged.size(); i++)
+      {
+        const std::vector<BoostPoint>& outer = merged[i].outer();
+
+        polygons[i].resize(outer.size());
+        for (size_t j = 0; j < outer.size(); j++)
+        {
+          polygons[i][j] = Point2D(outer[j].x(), outer[j].y());
+        }
+      }  
+#endif
+
+#else
+      for (Polygons::iterator polygon = structure.polygons_.begin();
+           polygon != structure.polygons_.end(); ++polygon)
+      {
+        double x1, y1, x2, y2;
+        if (polygon->Project(x1, y1, x2, y2, slice))
+        {
+          std::vector<Point2D> p(4);
+          p[0] = std::make_pair(x1, y1);
+          p[1] = std::make_pair(x2, y1);
+          p[2] = std::make_pair(x2, y2);
+          p[3] = std::make_pair(x1, y2);
+          polygons.push_back(p);
+        }
+      }
+#endif
+      
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+  void DicomStructureSet::ProjectOntoLayer(PolylineSceneLayer& layer,
+                                           const CoordinateSystem3D& plane,
+                                           size_t structureIndex,
+                                           const Color& color) const
+  {
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+    std::vector< std::vector<Point2D> > polygons;
+    if (ProjectStructure(polygons, structureIndex, plane))
+    {
+      for (size_t j = 0; j < polygons.size(); j++)
+      {
+        std::vector<ScenePoint2D> chain;
+        chain.reserve(polygons[j].size());
+
+        for (size_t k = 0; k < polygons[j].size(); k++)
+        {
+          chain.push_back(ScenePoint2D(polygons[j][k].x, polygons[j][k].y));
+        }
+
+        layer.AddChain(chain, true, color.GetRed(), color.GetGreen(), color.GetBlue());
+      }
+    }
+    
+#else
+    std::vector< std::pair<Point2D, Point2D> >  segments;
+
+    if (ProjectStructure(segments, structureIndex, plane))
+    {
+      for (size_t j = 0; j < segments.size(); j++)
+      {
+        std::vector<ScenePoint2D> chain(2);
+        chain[0] = ScenePoint2D(segments[j].first.x, segments[j].first.y);
+        chain[1] = ScenePoint2D(segments[j].second.x, segments[j].second.y);
+        layer.AddChain(chain, false, color.GetRed(), color.GetGreen(), color.GetBlue());
+      }
+    }
+#endif
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomStructureSet.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,236 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../OrthancStone.h"
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error The macro ORTHANC_ENABLE_DCMTK must be defined
+#endif
+
+#include "DicomStructureSetUtils.h"
+#include "CoordinateSystem3D.h"
+#include "Extent2D.h"
+#include "OrthancDatasets/FullOrthancDataset.h"
+#include "../Scene2D/Color.h"
+#include "../Scene2D/PolylineSceneLayer.h"
+
+#if ORTHANC_ENABLE_DCMTK == 1
+#  include <DicomParsing/ParsedDicomFile.h>
+#endif
+
+//#define USE_BOOST_UNION_FOR_POLYGONS 1
+
+
+#include <list>
+
+namespace OrthancStone
+{
+  class DicomStructureSet : public boost::noncopyable
+  {
+  private:
+    struct ReferencedSlice
+    {
+      std::string          seriesInstanceUid_;
+      CoordinateSystem3D   geometry_;
+      double               thickness_;
+
+      ReferencedSlice()
+      {
+      }
+      
+      ReferencedSlice(const std::string& seriesInstanceUid,
+                      const CoordinateSystem3D& geometry,
+                      double thickness) :
+        seriesInstanceUid_(seriesInstanceUid),
+        geometry_(geometry),
+        thickness_(thickness)
+      {
+      }
+    };
+
+    typedef std::map<std::string, ReferencedSlice>  ReferencedSlices;
+    
+    typedef std::vector<Vector>  Points;
+
+    class Polygon
+    {
+    private:
+      std::string         sopInstanceUid_;
+      bool                hasSlice_;
+      CoordinateSystem3D  geometry_;
+      double              projectionAlongNormal_;
+      double              sliceThickness_;  // In millimeters
+      Points              points_;
+      Extent2D            extent_;
+
+      void CheckPointIsOnSlice(const Vector& v) const;
+      bool IsPointOnSliceIfAny(const Vector& v) const;
+
+    public:
+      Polygon(const std::string& sopInstanceUid) :
+        sopInstanceUid_(sopInstanceUid),
+        hasSlice_(false)
+      {
+      }
+
+      void Reserve(size_t n)
+      {
+        points_.reserve(n);
+      }
+
+      void AddPoint(const Vector& v);
+
+      bool UpdateReferencedSlice(const ReferencedSlices& slices);
+
+      bool IsOnSlice(const CoordinateSystem3D& geometry) const;
+
+      const Vector& GetGeometryOrigin() const
+      {
+        return geometry_.GetOrigin();
+      }
+
+      const std::string& GetSopInstanceUid() const
+      {
+        return sopInstanceUid_;
+      }
+
+      const Points& GetPoints() const
+      {
+        return points_;
+      }
+
+      double GetSliceThickness() const
+      {
+        return sliceThickness_;
+      }
+
+      bool Project(double& x1,
+                   double& y1,
+                   double& x2,
+                   double& y2,
+                   const CoordinateSystem3D& slice) const;
+    };
+
+    typedef std::list<Polygon>  Polygons;
+
+    struct Structure
+    {
+      std::string   name_;
+      std::string   interpretation_;
+      Polygons      polygons_;
+      uint8_t       red_;
+      uint8_t       green_;
+      uint8_t       blue_;
+    };
+
+    typedef std::vector<Structure>  Structures;
+
+    Structures        structures_;
+    ReferencedSlices  referencedSlices_;
+
+    void Setup(const IDicomDataset& dataset);
+    
+    const Structure& GetStructure(size_t index) const;
+
+    Structure& GetStructure(size_t index);
+  
+    bool ProjectStructure(
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+      std::vector< std::vector<Point2D> >& polygons,
+#else
+      std::vector< std::pair<Point2D, Point2D> >& segments,
+#endif
+      const Structure& structure,
+      const CoordinateSystem3D& slice) const;
+
+  public:
+    DicomStructureSet(const FullOrthancDataset& instance)
+    {
+      Setup(instance);
+    }
+
+#if ORTHANC_ENABLE_DCMTK == 1
+    DicomStructureSet(Orthanc::ParsedDicomFile& instance);
+#endif
+
+    size_t GetStructuresCount() const
+    {
+      return structures_.size();
+    }
+
+    Vector GetStructureCenter(size_t index) const;
+
+    const std::string& GetStructureName(size_t index) const;
+
+    const std::string& GetStructureInterpretation(size_t index) const;
+
+    Color GetStructureColor(size_t index) const;
+
+    // TODO - remove
+    void GetStructureColor(uint8_t& red,
+                           uint8_t& green,
+                           uint8_t& blue,
+                           size_t index) const;
+
+    void GetReferencedInstances(std::set<std::string>& instances);
+
+    void AddReferencedSlice(const std::string& sopInstanceUid,
+                            const std::string& seriesInstanceUid,
+                            const CoordinateSystem3D& geometry,
+                            double thickness);
+
+    void AddReferencedSlice(const Orthanc::DicomMap& dataset);
+
+    void CheckReferencedSlices();
+
+    Vector GetNormal() const;
+
+#if USE_BOOST_UNION_FOR_POLYGONS == 1
+    bool ProjectStructure(std::vector< std::vector<Point2D> >& polygons,
+                          size_t index,
+                          const CoordinateSystem3D& slice) const
+    {
+      return ProjectStructure(polygons, GetStructure(index), slice);
+    }
+#else
+    bool ProjectStructure(std::vector< std::pair<Point2D, Point2D> >& segments,
+                          size_t index,
+                          const CoordinateSystem3D& slice) const
+    {
+      return ProjectStructure(segments, GetStructure(index), slice);
+    }
+#endif
+
+    void ProjectOntoLayer(PolylineSceneLayer& layer,
+                          const CoordinateSystem3D& plane,
+                          size_t structureIndex,
+                          const Color& color) const;
+
+    void ProjectOntoLayer(PolylineSceneLayer& layer,
+                          const CoordinateSystem3D& plane,
+                          size_t structureIndex) const
+    {
+      ProjectOntoLayer(layer, plane, structureIndex, GetStructureColor(structureIndex));
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomStructureSet2.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,311 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#include "DicomStructureSet2.h"
+
+#include "../Toolbox/LinearAlgebra.h"
+#include "../StoneException.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+#include <DicomFormat/DicomTag.h>
+
+#include <FullOrthancDataset.h>
+#include <DicomDatasetReader.h>
+
+namespace OrthancStone
+{
+  static const OrthancPlugins::DicomTag DICOM_TAG_CONTOUR_GEOMETRIC_TYPE(0x3006, 0x0042);
+  static const OrthancPlugins::DicomTag DICOM_TAG_CONTOUR_IMAGE_SEQUENCE(0x3006, 0x0016);
+  static const OrthancPlugins::DicomTag DICOM_TAG_CONTOUR_SEQUENCE(0x3006, 0x0040);
+  static const OrthancPlugins::DicomTag DICOM_TAG_CONTOUR_DATA(0x3006, 0x0050);
+  static const OrthancPlugins::DicomTag DICOM_TAG_NUMBER_OF_CONTOUR_POINTS(0x3006, 0x0046);
+  static const OrthancPlugins::DicomTag DICOM_TAG_REFERENCED_SOP_INSTANCE_UID(0x0008, 0x1155);
+  static const OrthancPlugins::DicomTag DICOM_TAG_ROI_CONTOUR_SEQUENCE(0x3006, 0x0039);
+  static const OrthancPlugins::DicomTag DICOM_TAG_ROI_DISPLAY_COLOR(0x3006, 0x002a);
+  static const OrthancPlugins::DicomTag DICOM_TAG_ROI_NAME(0x3006, 0x0026);
+  static const OrthancPlugins::DicomTag DICOM_TAG_RT_ROI_INTERPRETED_TYPE(0x3006, 0x00a4);
+  static const OrthancPlugins::DicomTag DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE(0x3006, 0x0080);
+  static const OrthancPlugins::DicomTag DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE(0x3006, 0x0020);
+
+  static inline uint8_t ConvertAndClipToByte(double v)
+  {
+    if (v < 0)
+    {
+      return 0;
+    }
+    else if (v >= 255)
+    {
+      return 255;
+    }
+    else
+    {
+      return static_cast<uint8_t>(v);
+    }
+  }
+
+  static bool ReadDicomToVector(Vector& target,
+    const OrthancPlugins::IDicomDataset& dataset,
+    const OrthancPlugins::DicomPath& tag)
+  {
+    std::string value;
+    return (dataset.GetStringValue(value, tag) &&
+      LinearAlgebra::ParseVector(target, value));
+  }
+
+
+  void DicomPathToString(std::string& s, const OrthancPlugins::DicomPath& dicomPath)
+  {
+    std::stringstream tmp;
+    for (size_t i = 0; i < dicomPath.GetPrefixLength(); ++i)
+    {
+      OrthancPlugins::DicomTag tag = dicomPath.GetPrefixTag(i);
+
+      // We use this other object to be able to use GetMainTagsName
+      // and Format
+      Orthanc::DicomTag tag2(tag.GetGroup(), tag.GetElement());
+      size_t index = dicomPath.GetPrefixIndex(i);
+      tmp << tag2.GetMainTagsName() << " (" << tag2.Format() << ") [" << index << "] / ";
+    }
+    const OrthancPlugins::DicomTag& tag = dicomPath.GetFinalTag();
+    Orthanc::DicomTag tag2(tag.GetGroup(), tag.GetElement());
+    tmp << tag2.GetMainTagsName() << " (" << tag2.Format() << ")";
+    s = tmp.str();
+  }
+
+  std::ostream& operator<<(std::ostream& s, const OrthancPlugins::DicomPath& dicomPath)
+  {
+    std::string tmp;
+    DicomPathToString(tmp, dicomPath);
+    s << tmp;
+    return s;
+  }
+
+
+  DicomStructureSet2::DicomStructureSet2()
+  {
+
+  }
+
+
+  DicomStructureSet2::~DicomStructureSet2()
+  {
+
+  }
+
+  void DicomStructureSet2::SetContents(const OrthancPlugins::FullOrthancDataset& tags)
+  {
+    FillStructuresFromDataset(tags);
+    ComputeDependentProperties();
+  }
+
+  void DicomStructureSet2::ComputeDependentProperties()
+  {
+    for (size_t i = 0; i < structures_.size(); ++i)
+    {
+      structures_[i].ComputeDependentProperties();
+    }
+  }
+
+  void DicomStructureSet2::FillStructuresFromDataset(const OrthancPlugins::FullOrthancDataset& tags)
+  {
+    OrthancPlugins::DicomDatasetReader reader(tags);
+
+    // a few sanity checks
+    size_t count = 0, tmp = 0;
+
+    //  DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE (0x3006, 0x0080);
+    //  DICOM_TAG_ROI_CONTOUR_SEQUENCE         (0x3006, 0x0039);
+    //  DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE   (0x3006, 0x0020);
+    if (!tags.GetSequenceSize(count, DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE) ||
+      !tags.GetSequenceSize(tmp, DICOM_TAG_ROI_CONTOUR_SEQUENCE) ||
+      tmp != count ||
+      !tags.GetSequenceSize(tmp, DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE) ||
+      tmp != count)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    // let's now parse the structures stored in the dicom file
+    //  DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE  (0x3006, 0x0080)
+    //  DICOM_TAG_RT_ROI_INTERPRETED_TYPE       (0x3006, 0x00a4)
+    //  DICOM_TAG_ROI_DISPLAY_COLOR             (0x3006, 0x002a)
+    //  DICOM_TAG_ROI_NAME                      (0x3006, 0x0026)
+    structures_.resize(count);
+    for (size_t i = 0; i < count; i++)
+    {
+      // (0x3006, 0x0080)[i]/(0x3006, 0x00a4)
+      structures_[i].interpretation_ = reader.GetStringValue
+      (OrthancPlugins::DicomPath(DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE, i,
+        DICOM_TAG_RT_ROI_INTERPRETED_TYPE),
+        "No interpretation");
+
+      // (0x3006, 0x0020)[i]/(0x3006, 0x0026)
+      structures_[i].name_ = reader.GetStringValue
+      (OrthancPlugins::DicomPath(DICOM_TAG_STRUCTURE_SET_ROI_SEQUENCE, i,
+        DICOM_TAG_ROI_NAME),
+        "No name");
+
+      Vector color;
+      // (0x3006, 0x0039)[i]/(0x3006, 0x002a)
+      if (ReadDicomToVector(color, tags, OrthancPlugins::DicomPath(
+        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i, DICOM_TAG_ROI_DISPLAY_COLOR)) 
+        && color.size() == 3)
+      {
+        structures_[i].red_   = ConvertAndClipToByte(color[0]);
+        structures_[i].green_ = ConvertAndClipToByte(color[1]);
+        structures_[i].blue_  = ConvertAndClipToByte(color[2]);
+      }
+      else
+      {
+        structures_[i].red_ = 255;
+        structures_[i].green_ = 0;
+        structures_[i].blue_ = 0;
+      }
+
+      size_t countSlices;
+      //  DICOM_TAG_ROI_CONTOUR_SEQUENCE          (0x3006, 0x0039);
+      //  DICOM_TAG_CONTOUR_SEQUENCE              (0x3006, 0x0040);
+      if (!tags.GetSequenceSize(countSlices, OrthancPlugins::DicomPath(
+        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i, DICOM_TAG_CONTOUR_SEQUENCE)))
+      {
+        LOG(WARNING) << "DicomStructureSet2::SetContents | structure \"" << structures_[i].name_ << "\" has no slices!";
+        countSlices = 0;
+      }
+
+      LOG(INFO) << "New RT structure: \"" << structures_[i].name_
+        << "\" with interpretation \"" << structures_[i].interpretation_
+        << "\" containing " << countSlices << " slices (color: "
+        << static_cast<int>(structures_[i].red_) << ","
+        << static_cast<int>(structures_[i].green_) << ","
+        << static_cast<int>(structures_[i].blue_) << ")";
+
+      // These temporary variables avoid allocating many vectors in the loop below
+      
+      // (0x3006, 0x0039)[i]/(0x3006, 0x0040)[0]/(0x3006, 0x0046)
+      OrthancPlugins::DicomPath countPointsPath(
+        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+        DICOM_TAG_CONTOUR_SEQUENCE, 0,
+        DICOM_TAG_NUMBER_OF_CONTOUR_POINTS);
+
+      OrthancPlugins::DicomPath geometricTypePath(
+        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+        DICOM_TAG_CONTOUR_SEQUENCE, 0,
+        DICOM_TAG_CONTOUR_GEOMETRIC_TYPE);
+
+      OrthancPlugins::DicomPath imageSequencePath(
+        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+        DICOM_TAG_CONTOUR_SEQUENCE, 0,
+        DICOM_TAG_CONTOUR_IMAGE_SEQUENCE);
+
+      // (3006,0039)[i] / (0x3006, 0x0040)[0] / (0x3006, 0x0016)[0] / (0x0008, 0x1155)
+      OrthancPlugins::DicomPath referencedInstancePath(
+        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+        DICOM_TAG_CONTOUR_SEQUENCE, 0,
+        DICOM_TAG_CONTOUR_IMAGE_SEQUENCE, 0,
+        DICOM_TAG_REFERENCED_SOP_INSTANCE_UID);
+
+      OrthancPlugins::DicomPath contourDataPath(
+        DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+        DICOM_TAG_CONTOUR_SEQUENCE, 0,
+        DICOM_TAG_CONTOUR_DATA);
+
+      for (size_t j = 0; j < countSlices; j++)
+      {
+        unsigned int countPoints = 0;
+
+        countPointsPath.SetPrefixIndex(1, j);
+        if (!reader.GetUnsignedIntegerValue(countPoints, countPointsPath))
+        {
+          std::string s;
+          DicomPathToString(s, countPointsPath);
+          LOG(ERROR) << "Dicom path " << s << " is not valid (should contain an unsigned integer)";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+        }
+
+        //LOG(INFO) << "Parsing slice containing " << countPoints << " vertices";
+
+        geometricTypePath.SetPrefixIndex(1, j);
+        std::string type = reader.GetMandatoryStringValue(geometricTypePath);
+        if (type != "CLOSED_PLANAR")
+        {
+          // TODO: support points!!
+          LOG(WARNING) << "Ignoring contour with geometry type: " << type;
+          continue;
+        }
+
+        size_t size = 0;
+
+        imageSequencePath.SetPrefixIndex(1, j);
+        if (!tags.GetSequenceSize(size, imageSequencePath) || size != 1)
+        {
+          LOG(ERROR) << "The ContourImageSequence sequence (tag 3006,0016) must be present and contain one entry.";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+
+        referencedInstancePath.SetPrefixIndex(1, j);
+        std::string sopInstanceUid = reader.GetMandatoryStringValue(referencedInstancePath);
+
+        contourDataPath.SetPrefixIndex(1, j);
+        std::string slicesData = reader.GetMandatoryStringValue(contourDataPath);
+
+        Vector points;
+        if (!LinearAlgebra::ParseVector(points, slicesData) ||
+          points.size() != 3 * countPoints)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+        }
+
+        // seen in real world
+        if (Orthanc::Toolbox::StripSpaces(sopInstanceUid) == "")
+        {
+          LOG(ERROR) << "WARNING. The following Dicom tag (Referenced SOP Instance UID) contains an empty value : // (3006,0039)[" << i << "] / (0x3006, 0x0040)[0] / (0x3006, 0x0016)[0] / (0x0008, 0x1155)";
+        }
+
+        DicomStructurePolygon2 polygon(sopInstanceUid,type);
+        polygon.Reserve(countPoints);
+
+        for (size_t k = 0; k < countPoints; k++)
+        {
+          Vector v(3);
+          v[0] = points[3 * k];
+          v[1] = points[3 * k + 1];
+          v[2] = points[3 * k + 2];
+          polygon.AddPoint(v);
+        }
+        structures_[i].AddPolygon(polygon);
+      }
+    }
+  }
+
+
+  void DicomStructureSet2::Clear()
+  {
+    structures_.clear();
+  }
+
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomStructureSet2.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,71 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#include "DicomStructure2.h"
+#include "CoordinateSystem3D.h"
+#include "Extent2D.h"
+#include "../Scene2D/Color.h"
+
+#include <FullOrthancDataset.h>
+
+#include <list>
+
+namespace OrthancStone
+{
+  class DicomStructureSet2 : public boost::noncopyable
+  {
+  public:
+    DicomStructureSet2();
+    ~DicomStructureSet2();
+   
+    void SetContents(const OrthancPlugins::FullOrthancDataset& tags);
+
+    size_t GetStructuresCount() const
+    {
+      return structures_.size();
+    }
+
+    void Clear();
+
+    const DicomStructure2& GetStructure(size_t i) const
+    {
+      // at() is like []() but with range check
+      return structures_.at(i);
+    }
+
+    /** Internal use only */
+    void FillStructuresFromDataset(const OrthancPlugins::FullOrthancDataset& tags);
+
+    /** Internal use only */
+    void ComputeDependentProperties();
+
+    /** Internal use only */
+    std::vector<DicomStructure2> structures_;
+  };
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomStructureSetUtils.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,276 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "DicomStructureSetUtils.h"
+
+namespace OrthancStone
+{
+
+#if 0
+  void DicomStructure2::PartitionRectangleList(std::vector< std::vector<size_t> > & sets, const std::vector<RtStructRectanglesInSlab> slabCuts)
+  {
+    // map position ( <slabIndex,rectIndex> )--> disjoint set index
+    std::map<std::pair<size_t, size_t>, size_t> posToIndex;
+
+    // disjoint set index --> position
+    std::map<size_t, std::pair<size_t, size_t> > indexToPos;
+
+    size_t nextIndex = 0;
+    for (size_t i = 0; i < slabCuts.size(); ++i)
+    {
+      for (size_t j = 0; j < slabCuts[i].size(); ++j)
+      {
+        std::pair<size_t, size_t> pos(i, j);
+        posToIndex<pos> = nextIndex;
+        indexToPos<nextIndex> = pos;
+      }
+    }
+    // nextIndex is now the total rectangle count
+    DisjointDataSet ds(nextIndex);
+
+    // we loop on all slabs (except the last one) and we connect all rectangles
+    if (slabCuts.size() < 2)
+    {
+#error write special case
+    }
+    else
+    {
+      for (size_t i = 0; i < slabCuts.size() - 1; ++i)
+      {
+        for (size_t j = 0; j < slabCuts[i].size(); ++j)
+        {
+          const RtStructRectangleInSlab& r1 = slabCuts[i][j];
+          const size_t r1i = posToIndex(std::pair<size_t, size_t>(i, j));
+          for (size_t k = 0; k < slabCuts[i + 1].size(); ++k)
+          {
+            const RtStructRectangleInSlab& r2 = slabCuts[i + 1][k];
+            const size_t r2i = posToIndex(std::pair<size_t, size_t>(i, j));
+            // rect.xmin <= rectBottom.xmax && rectBottom.xmin <= rect.xmax
+            if ((r1.xmin <= r2.xmax) && (r2.xmin <= r1.xmax))
+            {
+#error now go!
+            }
+
+          }
+        }
+      }
+    }
+#endif
+
+    /*
+
+      compute list of segments :
+
+      numberOfRectsFromHereOn = 0
+      possibleNext = {in_k,in_kplus1}
+
+      for all boundaries:
+        - we create a vertical segment and we push it
+        - if boundary is a start, numberOfRectsFromHereOn += 1.
+          - if we switch from 0 to 1, we start a segment
+          - if we switch from 1 to 2, we end the current segment and we record it
+        - if boundary is an end, numberOfRectsFromHereOn -= 1.
+          - if we switch from 1 to 0, we end the current segment and we record it
+          - if we switch from 2 to 1, we start a segment
+    */
+
+    // static
+    void AddSlabBoundaries(
+      std::vector<std::pair<double, RectangleBoundaryKind> > & boundaries,
+      const std::vector<RtStructRectanglesInSlab> & slabCuts, size_t iSlab)
+    {
+      if (iSlab < slabCuts.size())
+      {
+        const RtStructRectanglesInSlab& slab = slabCuts[iSlab];
+        for (size_t iRect = 0; iRect < slab.size(); ++iRect)
+        {
+          const RtStructRectangleInSlab& rect = slab[iRect];
+          {
+            std::pair<double, RectangleBoundaryKind> boundary(rect.xmin, RectangleBoundaryKind_Start);
+            boundaries.insert(std::lower_bound(boundaries.begin(), boundaries.end(), boundary), boundary);
+          }
+          {
+            std::pair<double, RectangleBoundaryKind> boundary(rect.xmax, RectangleBoundaryKind_End);
+            boundaries.insert(std::lower_bound(boundaries.begin(), boundaries.end(), boundary), boundary);
+          }
+        }
+      }
+    }
+
+    // static
+    void ProcessBoundaryList(
+      std::vector< std::pair<Point2D, Point2D> > & segments,
+      const std::vector<std::pair<double, RectangleBoundaryKind> > & boundaries,
+      double y)
+    {
+      Point2D start;
+      Point2D end;
+      int curNumberOfSegments = 0; // we count the number of segments. we only draw if it is 1 (not 0 or 2)
+      for (size_t i = 0; i < boundaries.size(); ++i)
+      {
+        switch (boundaries[i].second)
+        {
+        case RectangleBoundaryKind_Start:
+          curNumberOfSegments += 1;
+          switch (curNumberOfSegments)
+          {
+          case 0:
+            assert(false);
+            break;
+          case 1:
+            // a new segment has begun!
+            start.x = boundaries[i].first;
+            start.y = y;
+            break;
+          case 2:
+            // an extra segment has begun : stop the current one (we don't draw overlaps)
+            end.x = boundaries[i].first;
+            end.y = y;
+            segments.push_back(std::pair<Point2D, Point2D>(start, end));
+            break;
+          default:
+            //assert(false); // seen IRL ! 
+            break;
+          }
+          break;
+        case RectangleBoundaryKind_End:
+          curNumberOfSegments -= 1;
+          switch (curNumberOfSegments)
+          {
+          case 0:
+            // a lone (thus active) segment has ended.
+            end.x = boundaries[i].first;
+            end.y = y;
+            segments.push_back(std::pair<Point2D, Point2D>(start, end));
+            break;
+          case 1:
+            // an extra segment has ended : start a new one one
+            start.x = boundaries[i].first;
+            start.y = y;
+            break;
+          default:
+            // this should not happen!
+            //assert(false);
+            break;
+          }
+          break;
+        default:
+          assert(false);
+          break;
+        }
+      }
+    }
+
+#if 0
+    void ConvertListOfSlabsToSegments(
+      std::vector< std::pair<Point2D, Point2D> >& segments,
+      const std::vector<RtStructRectanglesInSlab>& slabCuts,
+      const size_t totalRectCount)
+    {
+#error to delete 
+    }
+#else
+    // See https://www.dropbox.com/s/bllco6q8aazxk44/2019-09-18-rtstruct-cut-algorithm-rect-merge.png
+    void ConvertListOfSlabsToSegments(
+      std::vector< std::pair<Point2D, Point2D> > & segments,
+      const std::vector<RtStructRectanglesInSlab> & slabCuts,
+      const size_t totalRectCount)
+    {
+      if (slabCuts.size() == 0)
+        return;
+
+      if (totalRectCount > 0)
+        segments.reserve(4 * totalRectCount); // worst case, but common.
+
+      /*
+      VERTICAL
+      */
+      for (size_t iSlab = 0; iSlab < slabCuts.size(); ++iSlab)
+      {
+        for (size_t iRect = 0; iRect < slabCuts[iSlab].size(); ++iRect)
+        {
+          const RtStructRectangleInSlab& rect = slabCuts[iSlab][iRect];
+          {
+            Point2D p1(rect.xmin, rect.ymin);
+            Point2D p2(rect.xmin, rect.ymax);
+            segments.push_back(std::pair<Point2D, Point2D>(p1, p2));
+          }
+          {
+            Point2D p1(rect.xmax, rect.ymin);
+            Point2D p2(rect.xmax, rect.ymax);
+            segments.push_back(std::pair<Point2D, Point2D>(p1, p2));
+          }
+        }
+      }
+
+      /*
+      HORIZONTAL
+      */
+
+      // if we have N slabs, we have N+1 potential vertical positions for horizontal segments
+      // - one for top of slab 0
+      // - N-1 for all positions between two slabs
+      // - one for bottom of slab N-1
+
+      // this adds all the horizontal segments for the tops of 3the rectangles
+      // in row 0
+      if (slabCuts[0].size() > 0)
+      {
+        std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+        AddSlabBoundaries(boundaries, slabCuts, 0);
+
+        ProcessBoundaryList(segments, boundaries, slabCuts[0][0].ymin);
+      }
+
+      // this adds all the horizontal segments belonging to two slabs
+      for (size_t iSlab = 0; iSlab < slabCuts.size() - 1; ++iSlab)
+      {
+        std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+        AddSlabBoundaries(boundaries, slabCuts, iSlab);
+        AddSlabBoundaries(boundaries, slabCuts, iSlab + 1);
+        double curY = 0;
+        if (slabCuts[iSlab].size() > 0)
+        {
+          curY = slabCuts[iSlab][0].ymax;
+          ProcessBoundaryList(segments, boundaries, curY);
+        }
+        else if (slabCuts[iSlab + 1].size() > 0)
+        {
+          curY = slabCuts[iSlab + 1][0].ymin;
+          ProcessBoundaryList(segments, boundaries, curY);
+        }
+        else
+        {
+          // nothing to do!! : both slab lists are empty!
+        }
+      }
+
+      // this adds all the horizontal segments for the BOTTOM of the rectangles
+      // on last row 
+      if (slabCuts[slabCuts.size() - 1].size() > 0)
+      {
+        std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+        AddSlabBoundaries(boundaries, slabCuts, slabCuts.size() - 1);
+
+        ProcessBoundaryList(segments, boundaries, slabCuts[slabCuts.size() - 1][0].ymax);
+      }
+    }
+#endif
+  }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DicomStructureSetUtils.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,84 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include <vector>
+#include <utility>
+
+#include "../Toolbox/LinearAlgebra.h"
+
+namespace OrthancStone
+{
+#if 0
+  struct Point3D
+  {
+    Point3D(double x, double y, double z) : x(x), y(y), z(z) {}
+    Point3D() : x(0), y(0), z(0) {}
+    double x, y, z;
+  };
+
+  struct Vector3D
+  {
+    Vector3D(double x, double y, double z) : x(x), y(y), z(z) {}
+    Vector3D() : x(0), y(0), z(0) {}
+    double x, y, z;
+  };
+#else
+  typedef Vector Vector3D;
+  typedef Vector Point3D;
+#endif
+
+  struct Point2D
+  {
+    Point2D(double x, double y) : x(x), y(y) {}
+    Point2D() : x(0), y(0) {}
+    double x, y;
+  };
+
+
+  /** Internal */
+  struct RtStructRectangleInSlab
+  {
+    double xmin, xmax, ymin, ymax;
+  };
+  typedef std::vector<RtStructRectangleInSlab> RtStructRectanglesInSlab;
+
+  enum RectangleBoundaryKind
+  {
+    RectangleBoundaryKind_Start,
+    RectangleBoundaryKind_End
+  };
+
+#if 0
+  /** Internal */
+  void PartitionRectangleList(std::vector< std::vector<size_t> > & sets, const std::vector<RtStructRectanglesInSlab>);
+#endif
+
+  /** Internal */
+  void ConvertListOfSlabsToSegments(std::vector< std::pair<Point2D, Point2D> >& segments, const std::vector<RtStructRectanglesInSlab>& slabCuts, const size_t totalRectCount);
+
+  /** Internal */
+  void AddSlabBoundaries(std::vector<std::pair<double, RectangleBoundaryKind> >& boundaries, const std::vector<RtStructRectanglesInSlab>& slabCuts, size_t iSlab);
+
+  /** Internal */
+  void ProcessBoundaryList(std::vector< std::pair<Point2D, Point2D> >& segments, const std::vector<std::pair<double, RectangleBoundaryKind> >& boundaries, double y);
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DisjointDataSet.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,144 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include <vector> 
+
+#include "../StoneException.h"
+
+namespace OrthancStone
+{
+  class DisjointDataSet
+  {
+  public:
+    DisjointDataSet(size_t itemCount) :
+      parents_(itemCount),
+      ranks_(itemCount)
+    {
+      for (size_t index = 0; index < parents_.size(); index++)
+      {
+        SetParent(index,index);
+        ranks_[index] = 1;
+      }
+    }
+
+    size_t Find(size_t item)
+    {
+      /*
+      If parents_[i] == i, it means i is representative of a set.
+      Otherwise, we go up the tree...
+      */
+      if (GetParent(item) != item)
+      {
+        // if item is not a top item (representative of its set),
+        // we use path compression to improve future lookups 
+        // see: https://en.wikipedia.org/wiki/Disjoint-set_data_structure#Path_compression
+        SetParent(item, Find(parents_[item]));
+      }
+
+      // now that paths have been compressed, we are positively certain
+      // that item's parent is a set ("X is a set" means that X is the 
+      // representative of a set)
+      return GetParent(item);
+    }
+
+    /*
+    This merge the two sets that contains itemA and itemB
+    */
+    void Union(size_t itemA, size_t itemB)
+    {
+      // Find current sets of x and y 
+      size_t setA = Find(itemA);
+      size_t setB = Find(itemB);
+
+      // if setA == setB, it means they are already in the same set and 
+      // do not need to be merged!
+      if (setA != setB)
+      {
+        // we need to merge the sets, which means that the trees representing
+        // the sets needs to be merged (there must be a single top parent to 
+        // all the items originally belonging to setA and setB must be the same)
+
+        // since the algorithm speed is inversely proportional to the tree
+        // height (the rank), we need to combine trees in a way that 
+        // minimizes this rank. See "Union by rank" at 
+        // https://en.wikipedia.org/wiki/Disjoint-set_data_structure#by_rank
+        if (GetRank(setA) < GetRank(setB))
+        {
+          SetParent(setA, setB);
+        }
+        else if (GetRank(setA) > GetRank(setB))
+        {
+          SetParent(setB, setA);
+        }
+        else
+        {
+          SetParent(setB, setA);
+          BumpRank(setA);
+          // the trees had the same height but we attached the whole of setB
+          // under setA (under its parent), so the resulting tree is now 
+          // 1 higher. setB is NOT representative of a set anymore.
+        }
+      }
+    }
+
+  private:
+    size_t GetRank(size_t i) const
+    {
+      ORTHANC_ASSERT(i < ranks_.size());
+      ORTHANC_ASSERT(ranks_.size() == parents_.size());
+      return ranks_[i];
+    }
+
+    size_t GetParent(size_t i) const
+    {
+      ORTHANC_ASSERT(i < parents_.size());
+      ORTHANC_ASSERT(ranks_.size() == parents_.size());
+      return parents_[i];
+    }
+
+    void SetParent(size_t i, size_t parent)
+    {
+      ORTHANC_ASSERT(i < parents_.size());
+      ORTHANC_ASSERT(ranks_.size() == parents_.size());
+      parents_[i] = parent;
+    }
+
+    void BumpRank(size_t i)
+    {
+      ORTHANC_ASSERT(i < ranks_.size());
+      ORTHANC_ASSERT(ranks_.size() == parents_.size());
+      ranks_[i] = ranks_[i] + 1u;
+    }
+
+    /*
+    This vector contains the direct parent of each item
+    */
+    std::vector<size_t> parents_;
+
+    /*
+    This vector contains the tree height of each set. The values in the
+    vector for non-representative items is UNDEFINED!
+    */
+    std::vector<size_t> ranks_;
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DynamicBitmap.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,37 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DynamicBitmap.h"
+
+#include <Images/Image.h>
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  DynamicBitmap::DynamicBitmap(const Orthanc::ImageAccessor& bitmap) :
+    bitmap_(Orthanc::Image::Clone(bitmap))
+  {
+    if (bitmap_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/DynamicBitmap.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,45 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <Compatibility.h>
+#include <IDynamicObject.h>
+#include <Images/ImageAccessor.h>
+
+#include <memory>
+
+namespace OrthancStone
+{
+  class DynamicBitmap : public Orthanc::IDynamicObject
+  {
+  private:
+    std::unique_ptr<Orthanc::ImageAccessor>  bitmap_;
+
+  public:
+    DynamicBitmap(const Orthanc::ImageAccessor& bitmap);
+
+    const Orthanc::ImageAccessor& GetBitmap() const
+    {
+      return *bitmap_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/Extent2D.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,139 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "Extent2D.h"
+
+#include <algorithm>
+#include <cassert>
+#include <limits>
+
+namespace OrthancStone
+{
+  Extent2D::Extent2D(double x1,
+                     double y1,
+                     double x2,
+                     double y2) :
+    empty_(false),
+    x1_(x1),
+    y1_(y1),
+    x2_(x2),
+    y2_(y2)
+  {
+    if (x1_ > x2_)
+    {
+      std::swap(x1_, x2_);
+    }
+
+    if (y1_ > y2_)
+    {
+      std::swap(y1_, y2_);
+    }
+  }
+
+
+  void Extent2D::Reset()
+  {
+    empty_ = true;
+    x1_ = 0;
+    y1_ = 0;
+    x2_ = 0;
+    y2_ = 0;      
+  }
+
+  void Extent2D::AddPoint(double x,
+                          double y)
+  {
+    if (empty_)
+    {
+      x1_ = x;
+      y1_ = y;
+      x2_ = x;
+      y2_ = y;
+      empty_ = false;
+    }
+    else
+    {
+      x1_ = std::min(x1_, x);
+      y1_ = std::min(y1_, y);
+      x2_ = std::max(x2_, x);
+      y2_ = std::max(y2_, y);
+    }
+
+    assert(x1_ <= x2_ &&
+           y1_ <= y2_);    // This is the invariant of the structure
+  }
+
+
+  void Extent2D::Union(const Extent2D& other)
+  {
+    if (other.empty_)
+    {
+      return;
+    }
+
+    if (empty_)
+    {
+      *this = other;
+      return;
+    }
+
+    assert(!empty_);
+
+    x1_ = std::min(x1_, other.x1_);
+    y1_ = std::min(y1_, other.y1_);
+    x2_ = std::max(x2_, other.x2_);
+    y2_ = std::max(y2_, other.y2_);
+
+    assert(x1_ <= x2_ &&
+           y1_ <= y2_);    // This is the invariant of the structure
+  }
+
+
+  bool Extent2D::IsEmpty() const
+  {
+    if (empty_)
+    {
+      return true;
+    }
+    else
+    {
+      assert(x1_ <= x2_ &&
+             y1_ <= y2_);
+      return (x2_ <= x1_ + 10 * std::numeric_limits<double>::epsilon() ||
+              y2_ <= y1_ + 10 * std::numeric_limits<double>::epsilon());
+    }
+  }
+
+
+  bool Extent2D::Contains(double x,
+                          double y) const
+  {
+    if (empty_)
+    {
+      return false;
+    }
+    else
+    {
+      return (x >= x1_ && x <= x2_ &&
+              y >= y1_ && y <= y2_);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/Extent2D.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,98 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+namespace OrthancStone
+{
+  class Extent2D
+  {
+  private:
+    bool    empty_;
+    double  x1_;
+    double  y1_;
+    double  x2_;
+    double  y2_;
+
+  public:
+    Extent2D()
+    {
+      Reset();
+    }
+
+    Extent2D(double x1,
+             double y1,
+             double x2,
+             double y2);
+
+    void Reset();
+
+    void AddPoint(double x,
+                  double y);
+
+    void Union(const Extent2D& other);
+
+    bool IsEmpty() const;
+
+    double GetX1() const
+    {
+      return x1_;
+    }
+
+    double GetY1() const
+    {
+      return y1_;
+    }
+
+    double GetX2() const
+    {
+      return x2_;
+    }
+
+    double GetY2() const
+    {
+      return y2_;
+    }
+
+    double GetWidth() const
+    {
+      return x2_ - x1_;
+    }
+
+    double GetHeight() const
+    {
+      return y2_ - y1_;
+    }
+
+    double GetCenterX() const
+    {
+      return (x1_ + x2_) / 2.0;
+    }
+
+    double GetCenterY() const
+    {
+      return (y1_ + y2_) / 2.0;
+    }
+
+    bool Contains(double x,
+                  double y) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/FiniteProjectiveCamera.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,461 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "FiniteProjectiveCamera.h"
+
+#include "GeometryToolbox.h"
+#include "SubpixelReader.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+
+namespace OrthancStone
+{
+  void FiniteProjectiveCamera::ComputeMInverse()
+  {
+    using namespace boost::numeric::ublas;
+
+    // inv(M) = inv(K * R) = inv(R) * inv(K) = R' * inv(K). This
+    // matrix is always invertible, by definition of finite
+    // projective cameras (page 157).
+    Matrix kinv;
+    LinearAlgebra::InvertUpperTriangularMatrix(kinv, k_);
+    minv_ = prod(trans(r_), kinv);
+  }
+
+    
+  void FiniteProjectiveCamera::Setup(const Matrix& k,
+                                     const Matrix& r,
+                                     const Vector& c)
+  {
+    if (k.size1() != 3 ||
+        k.size2() != 3 ||
+        !LinearAlgebra::IsCloseToZero(k(1, 0)) ||
+        !LinearAlgebra::IsCloseToZero(k(2, 0)) ||
+        !LinearAlgebra::IsCloseToZero(k(2, 1)))
+    {
+      LOG(ERROR) << "Invalid intrinsic parameters";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (r.size1() != 3 ||
+        r.size2() != 3)
+    {
+      LOG(ERROR) << "Invalid size for a 3D rotation matrix";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (!LinearAlgebra::IsRotationMatrix(r, 100.0 * std::numeric_limits<float>::epsilon()))
+    {
+      LOG(ERROR) << "Invalid rotation matrix";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (c.size() != 3)
+    {
+      LOG(ERROR) << "Invalid camera center";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    k_ = k;
+    r_ = r;
+    c_ = c;
+
+    ComputeMInverse();
+      
+    Matrix tmp = LinearAlgebra::IdentityMatrix(3);
+    tmp.resize(3, 4);
+    tmp(0, 3) = -c[0];
+    tmp(1, 3) = -c[1];
+    tmp(2, 3) = -c[2];
+
+    p_ = LinearAlgebra::Product(k, r, tmp);
+
+    assert(p_.size1() == 3 &&
+           p_.size2() == 4);
+
+  }
+
+    
+  void FiniteProjectiveCamera::Setup(const Matrix& p)
+  {
+    if (p.size1() != 3 ||
+        p.size2() != 4)
+    {
+      LOG(ERROR) << "Invalid camera matrix";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    p_ = p;
+
+    // M is the left 3x3 submatrix of "P"
+    Matrix m = p;
+    m.resize(3, 3);
+
+    // p4 is the last column of "P"
+    Vector p4(3);
+    p4[0] = p(0, 3);
+    p4[1] = p(1, 3);
+    p4[2] = p(2, 3);
+
+    // The RQ decomposition is explained on page 157
+    LinearAlgebra::RQDecomposition3x3(k_, r_, m);
+    ComputeMInverse();
+
+    c_ = LinearAlgebra::Product(-minv_, p4);
+  }
+
+
+  FiniteProjectiveCamera::FiniteProjectiveCamera(const double k[9],
+                                                 const double r[9],
+                                                 const double c[3])
+  {
+    Matrix kk, rr;
+    Vector cc;
+
+    LinearAlgebra::FillMatrix(kk, 3, 3, k);
+    LinearAlgebra::FillMatrix(rr, 3, 3, r);
+    LinearAlgebra::FillVector(cc, 3, c);
+
+    Setup(kk, rr, cc);
+  }
+
+
+  FiniteProjectiveCamera::FiniteProjectiveCamera(const double p[12])
+  {
+    Matrix pp;
+    LinearAlgebra::FillMatrix(pp, 3, 4, p);
+    Setup(pp);
+  }
+
+
+  Vector FiniteProjectiveCamera::GetRayDirection(double x,
+                                                 double y) const
+  {
+    // This derives from Equation (6.14) on page 162, taking "mu =
+    // 1" and noticing that "-inv(M)*p4" corresponds to the camera
+    // center in finite projective cameras
+
+    // The (x,y) coordinates on the imaged plane, as an homogeneous vector
+    Vector xx(3);
+    xx[0] = x;
+    xx[1] = y;
+    xx[2] = 1.0;
+
+    return boost::numeric::ublas::prod(minv_, xx);
+  }
+
+
+
+  static Vector SetupApply(const Vector& v,
+                           bool infinityAllowed)
+  {
+    if (v.size() == 3)
+    {
+      // Vector "v" in non-homogeneous coordinates, add the homogeneous component
+      Vector vv;
+      LinearAlgebra::AssignVector(vv, v[0], v[1], v[2], 1.0);
+      return vv;
+    }
+    else if (v.size() == 4)
+    {
+      // Vector "v" is already in homogeneous coordinates
+
+      if (!infinityAllowed &&
+          LinearAlgebra::IsCloseToZero(v[3]))
+      {
+        LOG(ERROR) << "Cannot apply a finite projective camera to a "
+                   << "point at infinity with this method";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      return v;
+    }
+    else
+    {
+      LOG(ERROR) << "The input vector must represent a point in 3D";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+  
+  void FiniteProjectiveCamera::ApplyFinite(double& x,
+                                           double& y,
+                                           const Vector& v) const
+  {
+    Vector p = boost::numeric::ublas::prod(p_, SetupApply(v, false));    
+
+    if (LinearAlgebra::IsCloseToZero(p[2]))
+    {
+      // Point at infinity: Should not happen with a finite input point
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+    else
+    {
+      x = p[0] / p[2];
+      y = p[1] / p[2];
+    }
+  }
+
+  
+  Vector FiniteProjectiveCamera::ApplyGeneral(const Vector& v) const
+  {
+    return boost::numeric::ublas::prod(p_, SetupApply(v, true));
+  }
+
+
+  static Vector AddHomogeneousCoordinate(const Vector& p)
+  {
+    assert(p.size() == 3);
+    return LinearAlgebra::CreateVector(p[0], p[1], p[2], 1);
+  }
+
+
+  FiniteProjectiveCamera::FiniteProjectiveCamera(const Vector& camera,
+                                                 const Vector& principalPoint,
+                                                 double angle,
+                                                 unsigned int imageWidth,
+                                                 unsigned int imageHeight,
+                                                 double pixelSpacingX,
+                                                 double pixelSpacingY)
+  {
+    if (camera.size() != 3 ||
+        principalPoint.size() != 3 ||
+        LinearAlgebra::IsCloseToZero(pixelSpacingX) ||
+        LinearAlgebra::IsCloseToZero(pixelSpacingY))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    
+    const double focal = boost::numeric::ublas::norm_2(camera - principalPoint);
+
+    if (LinearAlgebra::IsCloseToZero(focal))
+    {
+      LOG(ERROR) << "Camera lies on the image plane";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+      
+    Matrix a;
+    GeometryToolbox::AlignVectorsWithRotation(a, camera - principalPoint,
+                                              LinearAlgebra::CreateVector(0, 0, -1));
+
+    Matrix r = LinearAlgebra::Product(GeometryToolbox::CreateRotationMatrixAlongZ(angle), a);
+
+    Matrix k = LinearAlgebra::ZeroMatrix(3, 3);
+    k(0,0) = focal / pixelSpacingX;
+    k(1,1) = focal / pixelSpacingY;
+    k(0,2) = static_cast<double>(imageWidth) / 2.0;
+    k(1,2) = static_cast<double>(imageHeight) / 2.0;
+    k(2,2) = 1;
+
+    Setup(k, r, camera);
+ 
+    {
+      // Sanity checks
+      Vector v1 = LinearAlgebra::Product(p_, AddHomogeneousCoordinate(camera));
+      Vector v2 = LinearAlgebra::Product(p_, AddHomogeneousCoordinate(principalPoint));
+
+      if (!LinearAlgebra::IsCloseToZero(v1[2]) ||   // Camera is mapped to singularity
+          LinearAlgebra::IsCloseToZero(v2[2]))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      // The principal point must be mapped to the center of the image
+      v2 /= v2[2];
+
+      if (!LinearAlgebra::IsNear(v2[0], static_cast<double>(imageWidth) / 2.0) ||
+          !LinearAlgebra::IsNear(v2[1], static_cast<double>(imageHeight) / 2.0))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+  }
+
+
+  template <Orthanc::PixelFormat TargetFormat,
+            Orthanc::PixelFormat SourceFormat,
+            bool MIP>
+  static void ApplyRaytracerInternal(Orthanc::ImageAccessor& target,
+                                     const FiniteProjectiveCamera& camera,
+                                     const ImageBuffer3D& source,
+                                     const VolumeImageGeometry& geometry,
+                                     VolumeProjection projection)
+  {
+    if (source.GetFormat() != SourceFormat ||
+        target.GetFormat() != TargetFormat ||
+        !std::numeric_limits<float>::is_iec559 ||
+        sizeof(float) != 4)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    LOG(WARNING) << "Input volume size: " << source.GetWidth() << "x"
+                 << source.GetHeight() << "x" << source.GetDepth();
+    LOG(WARNING) << "Input pixel format: " << Orthanc::EnumerationToString(source.GetFormat());
+    LOG(WARNING) << "Output image size: " << target.GetWidth() << "x" << target.GetHeight();
+    LOG(WARNING) << "Output pixel format: " << Orthanc::EnumerationToString(target.GetFormat());
+
+    const unsigned int slicesCount = geometry.GetProjectionDepth(projection);
+    const OrthancStone::Vector pixelSpacing = geometry.GetVoxelDimensions(projection);
+    const unsigned int targetWidth = target.GetWidth();
+    const unsigned int targetHeight = target.GetHeight();
+
+    Orthanc::Image accumulator(Orthanc::PixelFormat_Float32, targetWidth, targetHeight, false);
+    Orthanc::Image counter(Orthanc::PixelFormat_Grayscale16, targetWidth, targetHeight, false);
+    Orthanc::ImageProcessing::Set(accumulator, 0);
+    Orthanc::ImageProcessing::Set(counter, 0);
+
+    typedef SubpixelReader<SourceFormat, ImageInterpolation_Nearest>  SourceReader;
+    
+    for (unsigned int z = 0; z < slicesCount; z++)
+    {
+      LOG(INFO) << "Applying raytracer on slice: " << z << "/" << slicesCount;
+
+      OrthancStone::CoordinateSystem3D slice = geometry.GetProjectionSlice(projection, z);
+      OrthancStone::ImageBuffer3D::SliceReader sliceReader(source, projection, static_cast<unsigned int>(z));
+
+      SourceReader pixelReader(sliceReader.GetAccessor());
+      
+      for (unsigned int y = 0; y < targetHeight; y++)
+      {
+        float *qacc = reinterpret_cast<float*>(accumulator.GetRow(y));
+        uint16_t *qcount = reinterpret_cast<uint16_t*>(counter.GetRow(y));
+
+        for (unsigned int x = 0; x < targetWidth; x++)
+        {
+          // Backproject the ray originating from the center of the target pixel
+          OrthancStone::Vector direction = camera.GetRayDirection(static_cast<double>(x + 0.5),
+                                                                  static_cast<double>(y + 0.5));
+
+          // Compute the 3D intersection of the ray with the slice plane
+          OrthancStone::Vector p;
+          if (slice.IntersectLine(p, camera.GetCenter(), direction))
+          {
+            // Compute the 2D coordinates of the intersections, in slice coordinates
+            double ix, iy;
+            slice.ProjectPoint(ix, iy, p);
+
+            ix /= pixelSpacing[0];
+            iy /= pixelSpacing[1];
+
+            // Read and accumulate the value of the pixel
+            float pixel;
+            if (pixelReader.GetFloatValue(
+              pixel, static_cast<float>(ix), static_cast<float>(iy)))
+            {
+              if (MIP)
+              {
+                // MIP rendering
+                if (*qcount == 0)
+                {
+                  (*qacc) = pixel;
+                  (*qcount) = 1;
+                }
+                else if (pixel > *qacc)
+                {
+                  (*qacc) = pixel;
+                }
+              }
+              else
+              {
+                // Mean intensity
+                (*qacc) += pixel;
+                (*qcount) ++;
+              }
+            }
+          }
+
+          qacc++;
+          qcount++;
+        }
+      }
+    }
+
+
+    typedef Orthanc::PixelTraits<TargetFormat>  TargetTraits;
+
+    // "Flatten" the accumulator image to create the target image
+    for (unsigned int y = 0; y < targetHeight; y++)
+    {
+      const float *qacc = reinterpret_cast<const float*>(accumulator.GetConstRow(y));
+      const uint16_t *qcount = reinterpret_cast<const uint16_t*>(counter.GetConstRow(y));
+      typename TargetTraits::PixelType *p = reinterpret_cast<typename TargetTraits::PixelType*>(target.GetRow(y));
+
+      for (unsigned int x = 0; x < targetWidth; x++)
+      {
+        if (*qcount == 0)
+        {
+          TargetTraits::SetZero(*p);
+        }
+        else
+        {
+          TargetTraits::FloatToPixel(*p, *qacc / static_cast<float>(*qcount));
+        }
+        
+        p++;
+        qacc++;
+        qcount++;
+      }
+    }
+  }
+
+
+  Orthanc::ImageAccessor*
+  FiniteProjectiveCamera::ApplyRaytracer(const ImageBuffer3D& source,
+                                         const VolumeImageGeometry& geometry,
+                                         Orthanc::PixelFormat targetFormat,
+                                         unsigned int targetWidth,
+                                         unsigned int targetHeight,
+                                         bool mip) const
+  {
+    // TODO - We consider the axial projection of the volume, but we
+    // should choose the projection that is the "most perpendicular"
+    // to the line joining the camera center and the principal point
+    const VolumeProjection projection = VolumeProjection_Axial;
+
+    std::unique_ptr<Orthanc::ImageAccessor> target
+      (new Orthanc::Image(targetFormat, targetWidth, targetHeight, false));
+    
+    if (targetFormat == Orthanc::PixelFormat_Grayscale16 &&
+        source.GetFormat() == Orthanc::PixelFormat_Grayscale16 && mip)
+    {
+      ApplyRaytracerInternal<Orthanc::PixelFormat_Grayscale16,
+                             Orthanc::PixelFormat_Grayscale16, true>
+        (*target, *this, source, geometry, projection);
+    }
+    else if (targetFormat == Orthanc::PixelFormat_Grayscale16 &&
+             source.GetFormat() == Orthanc::PixelFormat_Grayscale16 && !mip)
+    {
+      ApplyRaytracerInternal<Orthanc::PixelFormat_Grayscale16,
+                             Orthanc::PixelFormat_Grayscale16, false>
+        (*target, *this, source, geometry, projection);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+
+    return target.release();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/FiniteProjectiveCamera.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,119 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "LinearAlgebra.h"
+#include "../Volumes/ImageBuffer3D.h"
+#include "../Volumes/VolumeImageGeometry.h"
+
+namespace OrthancStone
+{
+  // Reference: "Multiple View Geometry in Computer Vision (2nd Edition)"
+  class FiniteProjectiveCamera : public boost::noncopyable
+  {
+  private:
+    Matrix  p_;     // 3x4 matrix - Equation (6.11) - page 157
+    Matrix  k_;     // 3x3 matrix of intrinsic parameters - Equation (6.10) - page 157
+    Matrix  r_;     // 3x3 rotation matrix in 3D space
+    Vector  c_;     // 3x1 vector in 3D space corresponding to camera center
+    Matrix  minv_;  // Inverse of the M = P(1:3,1:3) submatrix
+
+    void ComputeMInverse();
+
+    void Setup(const Matrix& k,
+               const Matrix& r,
+               const Vector& c);
+
+    void Setup(const Matrix& p);
+
+  public:
+    FiniteProjectiveCamera(const Matrix& k,
+                           const Matrix& r,
+                           const Vector& c)
+    {
+      Setup(k, r, c);
+    }
+
+    FiniteProjectiveCamera(const Matrix& p)
+    {
+      Setup(p);
+    }
+
+    FiniteProjectiveCamera(const double k[9],
+                           const double r[9],
+                           const double c[3]);
+
+    FiniteProjectiveCamera(const double p[12]);
+
+    // Constructor that implements camera calibration
+    FiniteProjectiveCamera(const Vector& camera,
+                           const Vector& principalPoint,
+                           double angle,
+                           unsigned int imageWidth,
+                           unsigned int imageHeight,
+                           double pixelSpacingX,
+                           double pixelSpacingY);
+
+    const Matrix& GetMatrix() const
+    {
+      return p_;
+    }
+
+    const Matrix& GetRotation() const
+    {
+      return r_;
+    }
+
+    const Vector& GetCenter() const
+    {
+      return c_;
+    }
+
+    const Matrix& GetIntrinsicParameters() const
+    {
+      return k_;
+    }
+
+    // Computes the 3D vector that represents the direction from the
+    // camera center to the (x,y) imaged point
+    Vector GetRayDirection(double x,
+                           double y) const;
+
+    // Apply the camera to a 3D point "v" that is not at infinity. "v"
+    // can be encoded either as a non-homogeneous vector (3
+    // components), or as a homogeneous vector (4 components).
+    void ApplyFinite(double& x,
+                     double& y,
+                     const Vector& v) const;
+
+    // Apply the camera to a 3D point "v" that is possibly at
+    // infinity. The result is a 2D point in homogeneous coordinates.
+    Vector ApplyGeneral(const Vector& v) const;
+
+    Orthanc::ImageAccessor* ApplyRaytracer(const ImageBuffer3D& source,
+                                           const VolumeImageGeometry& geometry,
+                                           Orthanc::PixelFormat targetFormat,
+                                           unsigned int targetWidth,
+                                           unsigned int targetHeight,
+                                           bool mip) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/GenericToolbox.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,104 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GenericToolbox.h"
+
+#include <boost/regex.hpp>
+
+namespace OrthancStone
+{
+  namespace GenericToolbox
+  {
+    bool GetRgbaValuesFromString(uint8_t& red, uint8_t& green, uint8_t& blue, uint8_t& alpha, const char* text)
+    {
+      boost::regex pattern("\\s*rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)\\s*");
+
+      boost::cmatch what;
+
+      if (boost::regex_match(text, what, pattern))
+      {
+        {
+          std::string redStr = what[1];
+          bool ok = StringToInteger<uint8_t>(red, redStr);
+          if (!ok)
+            return false;
+        }
+        {
+          std::string greenStr = what[2];
+          bool ok = StringToInteger<uint8_t>(green, greenStr);
+          if (!ok)
+            return false;
+        }
+        {
+          std::string blueStr = what[3];
+          bool ok = StringToInteger<uint8_t>(blue, blueStr);
+          if (!ok)
+            return false;
+        }
+        {
+          std::string alphaStr = what[4];
+          bool ok = StringToInteger<uint8_t>(alpha, alphaStr);
+          if (!ok)
+            return false;
+        }
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+    bool GetRgbValuesFromString(uint8_t& red, uint8_t& green, uint8_t& blue, const char* text)
+    {
+      boost::regex pattern("\\s*rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)\\s*");
+
+      boost::cmatch what;
+
+      if (boost::regex_match(text, what, pattern))
+      {
+        {
+          std::string redStr = what[1];
+          bool ok = StringToInteger<uint8_t>(red, redStr);
+          if (!ok)
+            return false;
+        }
+        {
+          std::string greenStr = what[2];
+          bool ok = StringToInteger<uint8_t>(green, greenStr);
+          if (!ok)
+            return false;
+        }
+        {
+          std::string blueStr = what[3];
+          bool ok = StringToInteger<uint8_t>(blue, blueStr);
+          if (!ok)
+            return false;
+        }
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/GenericToolbox.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,308 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include <Compatibility.h>
+#include <OrthancException.h>
+
+#include <boost/shared_ptr.hpp>
+
+#include <string>
+#include <stdint.h>
+#include <math.h>
+
+#include <memory>
+
+namespace OrthancStone
+{
+  namespace GenericToolbox
+  {
+    /**
+    Fast floating point string validation.
+    No trimming applied, so the input must match regex 
+    /^[-]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$/
+    The following are allowed as edge cases: "" and "-"
+    */
+    inline bool LegitDoubleString(const char* text)
+    {
+      const char* p = text;
+      if(*p == '-')
+        p++;
+      size_t period = 0;
+      while(*p != 0)
+      {
+        if (*p >= '0' && *p <= '9')
+          ++p;
+        else if(*p == '.')
+        {
+          if(period > 0)
+            return false;
+          else
+            period++;
+        ++p;
+        }
+        else if (*p == 'e' || *p == 'E')
+        {
+          ++p;
+          if (*p == '-' || *p == '+')
+            ++p;
+          // "e+"/"E+" "e-"/"E-" or "e"/"E" must be followed by a number
+          if (!(*p >= '0' && *p <= '9'))
+            return false;
+
+          // these must be the last in the string
+          while(*p >= '0' && *p <= '9')
+            ++p;
+
+          return (*p == 0);
+        }
+        else
+        {
+          return false;
+        }
+      }
+      return true;
+    }
+
+    /**
+    Fast integer string validation.
+    No trimming applied, so the input must match regex /^-?[0-9]*$/
+    The following are allowed as edge cases: "" and "-"
+    */
+    inline bool LegitIntegerString(const char* text)
+    {
+      const char* p = text;
+      if (*p == '-')
+        p++;
+      while (*p != 0)
+      {
+        if (*p >= '0' && *p <= '9')
+          ++p;
+        else
+          return false;
+      }
+      return true;
+    }
+
+    /*
+      Fast string --> double conversion.
+      Must pass the LegitDoubleString test
+
+      String to doubles with at most 18 digits
+    */
+    inline bool StringToDouble(double& r, const char* text)
+    {
+      if(!LegitDoubleString(text))
+        return false;
+
+      static const double FRAC_FACTORS[] = 
+      {
+        1.0,
+        0.1,
+        0.01,
+        0.001,
+        0.0001,
+        0.00001,
+        0.000001,
+        0.0000001,
+        0.00000001,
+        0.000000001,
+        0.0000000001,
+        0.00000000001,
+        0.000000000001,
+        0.0000000000001,
+        0.00000000000001,
+        0.000000000000001,
+        0.0000000000000001,
+        0.00000000000000001,
+        0.000000000000000001,
+        0.0000000000000000001
+      };
+      const size_t FRAC_FACTORS_LEN = sizeof(FRAC_FACTORS)/sizeof(double);
+
+      r = 0.0;
+      double neg = 1.0;
+      const char* p = text;
+
+      if (*p == '-')
+      {
+        neg = -1.0;
+        ++p;
+      }
+      // 12345.67890
+      while (*p >= '0' && *p <= '9')
+      {
+          r = (r*10.0) + (*p - '0'); // 1 12 123 123 12345
+        ++p;
+      }
+      if (*p == '.')
+      {
+        double f = 0.0;
+        size_t n = 1;
+        ++p;
+        while (*p >= '0' && *p <= '9' && n < FRAC_FACTORS_LEN)
+        {
+          f += (*p - '0') * FRAC_FACTORS[n];
+          ++p;
+          ++n;
+        }
+        r += f;
+      }
+      r *= neg;
+
+      // skip the remaining numbers until we reach not-a-digit (either the 
+      // end of the string OR the scientific notation symbol)
+      while ((*p >= '0' && *p <= '9'))
+        ++p;
+
+      if (*p == 0 )
+      {
+        return true;
+      }
+      else if ((*p == 'e') || (*p == 'E'))
+      {
+        // process the scientific notation
+        double sign; // no init is safe (read below)
+        ++p;
+        if (*p == '-')
+        {
+          sign = -1.0;
+          // point to first number
+          ++p;
+        }
+        else if (*p == '+')
+        {
+          sign = 1.0;
+          // point to first number
+          ++p;
+        }
+        else if (*p >= '0' && *p <= '9')
+        {
+          sign = 1.0;
+        }
+        else
+        {
+          // only a sign char or a number is allowed
+          return false;
+        }
+        // now p points to the absolute value of the exponent
+        double exp = 0;
+        while (*p >= '0' && *p <= '9')
+        {
+          exp = (exp * 10.0) + static_cast<double>(*p - '0'); // 1 12 123 123 12345
+          ++p;
+        }
+        // now we have our exponent. put a sign on it.
+        exp *= sign;
+        double scFac = ::pow(10.0, exp);
+        r *= scFac;
+
+        // only allowed symbol here is EOS
+        return (*p == 0);
+      }
+      else
+      {
+        // not allowed
+        return false;
+      }
+    }
+
+    inline bool StringToDouble(double& r, const std::string& text)
+    {
+      return StringToDouble(r, text.c_str());
+    }
+
+    /**
+    Fast string to integer conversion. Leading zeroes and minus are accepted,
+    but a leading + sign is NOT.
+    Must pass the LegitIntegerString function test.
+    In addition, an empty string (or lone minus sign) yields 0.
+    */
+
+    template<typename T>
+    inline bool StringToInteger(T& r, const char* text)
+    {
+      if (!LegitIntegerString(text))
+        return false;
+
+      r = 0;
+      T neg = 1;
+      const char* p = text;
+
+      if (*p == '-')
+      {
+        neg = -1;
+        ++p;
+      }
+      while (*p >= '0' && *p <= '9')
+      {
+        r = (r * 10) + (*p - '0'); // 1 12 123 123 12345
+        ++p;
+      }
+      r *= neg;
+      if (*p == 0)
+        return true;
+      else
+        return false;
+    }
+
+    template<typename T>
+    inline bool StringToInteger(T& r, const std::string& text)
+    {
+      return StringToInteger<T>(r, text.c_str());
+    }
+
+    /**
+    if input is "rgb(12,23,255)"  --> function fills `red`, `green` and `blue` and returns true
+    else ("everything else")      --> function returns false and leaves all values untouched
+    */
+    bool GetRgbValuesFromString(uint8_t& red, uint8_t& green, uint8_t& blue, const char* text);
+
+    /**
+    See main overload
+    */
+    inline bool GetRgbValuesFromString(uint8_t& red, uint8_t& green, uint8_t& blue, const std::string& text)
+    {
+      return GetRgbValuesFromString(red, green, blue, text.c_str());
+    }
+
+    /**
+    Same as GetRgbValuesFromString
+    */
+    bool GetRgbaValuesFromString(uint8_t& red,
+                                 uint8_t& green,
+                                 uint8_t& blue,
+                                 uint8_t& alpha,
+                                 const char* text);
+
+    /**
+    Same as GetRgbValuesFromString
+    */
+    inline bool GetRgbaValuesFromString(uint8_t& red, 
+                                        uint8_t& green, 
+                                        uint8_t& blue, 
+                                        uint8_t& alpha, 
+                                        const std::string& text)
+    {
+      return GetRgbaValuesFromString(red, green, blue, alpha, text.c_str());
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/GeometryToolbox.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,572 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "GeometryToolbox.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+#include <cassert>
+
+namespace OrthancStone
+{
+  namespace GeometryToolbox
+  {
+    void ProjectPointOntoPlane(Vector& result,
+                               const Vector& point,
+                               const Vector& planeNormal,
+                               const Vector& planeOrigin)
+    {
+      double norm =  boost::numeric::ublas::norm_2(planeNormal);
+      if (LinearAlgebra::IsCloseToZero(norm))
+      {
+        // Division by zero
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      // Make sure the norm of the normal is 1
+      Vector n;
+      n = planeNormal / norm;
+
+      // Algebraic form of line–plane intersection, where the line passes
+      // through "point" along the direction "normal" (thus, l == n)
+      // https://en.wikipedia.org/wiki/Line%E2%80%93plane_intersection#Algebraic_form
+      result = boost::numeric::ublas::inner_prod(planeOrigin - point, n) * n + point;
+    }
+
+    /*
+    undefined results if vector are not 3D
+    */
+    void ProjectPointOntoPlane2(
+      double& resultX,
+      double& resultY,
+      double& resultZ,
+      const Vector& point,
+      const Vector& planeNormal,
+      const Vector& planeOrigin)
+    {
+      double pointX = point[0];
+      double pointY = point[1];
+      double pointZ = point[2];
+
+      double planeNormalX = planeNormal[0];
+      double planeNormalY = planeNormal[1];
+      double planeNormalZ = planeNormal[2];
+
+      double planeOriginX = planeOrigin[0];
+      double planeOriginY = planeOrigin[1];
+      double planeOriginZ = planeOrigin[2];
+
+      double normSq = (planeNormalX * planeNormalX) + (planeNormalY * planeNormalY) + (planeNormalZ * planeNormalZ);
+
+      // Algebraic form of line–plane intersection, where the line passes
+      // through "point" along the direction "normal" (thus, l == n)
+      // https://en.wikipedia.org/wiki/Line%E2%80%93plane_intersection#Algebraic_form
+
+      if (LinearAlgebra::IsNear(1.0, normSq))
+      {
+        double nX = planeNormalX;
+        double nY = planeNormalY;
+        double nZ = planeNormalZ;
+        
+        double prod = (planeOriginX - pointX) * nX + (planeOriginY - pointY) * nY + (planeOriginZ - pointZ) * nZ;
+
+        resultX = prod * nX + pointX; 
+        resultY = prod * nY + pointY; 
+        resultZ = prod * nZ + pointZ;
+      }
+      else
+      {
+        double norm = sqrt(normSq);
+        if (LinearAlgebra::IsCloseToZero(norm))
+        {
+          // Division by zero
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+        double invNorm = 1.0 / norm;
+        double nX = planeNormalX * invNorm;
+        double nY = planeNormalY * invNorm;
+        double nZ = planeNormalZ * invNorm;
+
+        double prod = (planeOriginX - pointX) * nX + (planeOriginY - pointY) * nY + (planeOriginZ - pointZ) * nZ;
+
+        resultX = prod * nX + pointX;
+        resultY = prod * nY + pointY;
+        resultZ = prod * nZ + pointZ;
+      }
+    }
+
+    bool IsParallelOrOpposite(bool& isOpposite,
+                              const Vector& u,
+                              const Vector& v)
+    {
+      // The dot product of the two vectors gives the cosine of the angle
+      // between the vectors
+      // https://en.wikipedia.org/wiki/Dot_product
+
+      double normU = boost::numeric::ublas::norm_2(u);
+      double normV = boost::numeric::ublas::norm_2(v);
+
+      if (LinearAlgebra::IsCloseToZero(normU) ||
+          LinearAlgebra::IsCloseToZero(normV))
+      {
+        return false;
+      }
+
+      double cosAngle = boost::numeric::ublas::inner_prod(u, v) / (normU * normV);
+
+      // The angle must be zero, so the cosine must be almost equal to
+      // cos(0) == 1 (or cos(180) == -1 if allowOppositeDirection == true)
+
+      if (LinearAlgebra::IsCloseToZero(cosAngle - 1.0))
+      {
+        isOpposite = false;
+        return true;
+      }
+      else if (LinearAlgebra::IsCloseToZero(fabs(cosAngle) - 1.0))
+      {
+        isOpposite = true;
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+
+
+    bool IsParallel(const Vector& u,
+                    const Vector& v)
+    {
+      bool isOpposite;
+      return (IsParallelOrOpposite(isOpposite, u, v) &&
+              !isOpposite);
+    }
+
+
+    bool IntersectTwoPlanes(Vector& p,
+                            Vector& direction,
+                            const Vector& origin1,
+                            const Vector& normal1,
+                            const Vector& origin2,
+                            const Vector& normal2)
+    {
+      // This is "Intersection of 2 Planes", possibility "(C) 3 Plane
+      // Intersect Point" of:
+      // http://geomalgorithms.com/a05-_intersect-1.html
+
+      // The direction of the line of intersection is orthogonal to the
+      // normal of both planes
+      LinearAlgebra::CrossProduct(direction, normal1, normal2);
+
+      double norm = boost::numeric::ublas::norm_2(direction);
+      if (LinearAlgebra::IsCloseToZero(norm))
+      {
+        // The two planes are parallel or coincident
+        return false;
+      }
+
+      double d1 = -boost::numeric::ublas::inner_prod(normal1, origin1);
+      double d2 = -boost::numeric::ublas::inner_prod(normal2, origin2);
+      Vector tmp = d2 * normal1 - d1 * normal2;
+
+      LinearAlgebra::CrossProduct(p, tmp, direction);
+      p /= norm;
+
+      return true;
+    }
+
+
+    bool ClipLineToRectangle(double& x1,  // Coordinates of the clipped line (out)
+                             double& y1,
+                             double& x2,
+                             double& y2,
+                             const double ax,  // Two points defining the line (in)
+                             const double ay,
+                             const double bx,
+                             const double by,
+                             const double& xmin,   // Coordinates of the rectangle (in)
+                             const double& ymin,
+                             const double& xmax,
+                             const double& ymax)
+    {
+      // This is Skala algorithm for rectangles, "A new approach to line
+      // and line segment clipping in homogeneous coordinates"
+      // (2005). This is a direct, non-optimized translation of Algorithm
+      // 2 in the paper.
+
+      static const uint8_t tab1[16] = { 255 /* none */,
+                                        0,
+                                        0,
+                                        1,
+                                        1,
+                                        255 /* na */,
+                                        0,
+                                        2,
+                                        2,
+                                        0,
+                                        255 /* na */,
+                                        1,
+                                        1,
+                                        0,
+                                        0,
+                                        255 /* none */ };
+
+
+      static const uint8_t tab2[16] = { 255 /* none */,
+                                        3,
+                                        1,
+                                        3,
+                                        2,
+                                        255 /* na */,
+                                        2,
+                                        3,
+                                        3,
+                                        2,
+                                        255 /* na */,
+                                        2,
+                                        3,
+                                        1,
+                                        3,
+                                        255 /* none */ };
+
+      // Create the coordinates of the rectangle
+      Vector x[4];
+      LinearAlgebra::AssignVector(x[0], xmin, ymin, 1.0);
+      LinearAlgebra::AssignVector(x[1], xmax, ymin, 1.0);
+      LinearAlgebra::AssignVector(x[2], xmax, ymax, 1.0);
+      LinearAlgebra::AssignVector(x[3], xmin, ymax, 1.0);
+
+      // Move to homogoneous coordinates in 2D
+      Vector p;
+
+      {
+        Vector a, b;
+        LinearAlgebra::AssignVector(a, ax, ay, 1.0);
+        LinearAlgebra::AssignVector(b, bx, by, 1.0);
+        LinearAlgebra::CrossProduct(p, a, b);
+      }
+
+      uint8_t c = 0;
+
+      for (unsigned int k = 0; k < 4; k++)
+      {
+        if (boost::numeric::ublas::inner_prod(p, x[k]) >= 0)
+        {
+          c |= (1 << k);
+        }
+      }
+
+      assert(c < 16);
+
+      uint8_t i = tab1[c];
+      uint8_t j = tab2[c];
+
+      if (i == 255 || j == 255)
+      {
+        return false;   // No intersection
+      }
+      else
+      {
+        Vector a, b, e;
+        LinearAlgebra::CrossProduct(e, x[i], x[(i + 1) % 4]);
+        LinearAlgebra::CrossProduct(a, p, e);
+        LinearAlgebra::CrossProduct(e, x[j], x[(j + 1) % 4]);
+        LinearAlgebra::CrossProduct(b, p, e);
+
+        // Go back to non-homogeneous coordinates
+        x1 = a[0] / a[2];
+        y1 = a[1] / a[2];
+        x2 = b[0] / b[2];
+        y2 = b[1] / b[2];
+
+        return true;
+      }
+    }
+
+
+    void GetPixelSpacing(double& spacingX, 
+                         double& spacingY,
+                         const Orthanc::DicomMap& dicom)
+    {
+      Vector v;
+
+      if (LinearAlgebra::ParseVector(v, dicom, Orthanc::DICOM_TAG_PIXEL_SPACING))
+      {
+        if (v.size() != 2 ||
+            v[0] <= 0 ||
+            v[1] <= 0)
+        {
+          LOG(ERROR) << "Bad value for PixelSpacing tag";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+        }
+        else
+        {
+          // WARNING: X/Y are swapped (Y comes first)
+          spacingX = v[1];
+          spacingY = v[0];
+        }
+      }
+      else
+      {
+        // The "PixelSpacing" is of type 1C: It could be absent, use
+        // default value in such a case
+        spacingX = 1;
+        spacingY = 1;
+      }
+    }
+
+    
+    Matrix CreateRotationMatrixAlongX(double a)
+    {
+      // Rotate along X axis (R_x)
+      // https://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations
+      Matrix r(3, 3);
+      r(0,0) = 1;
+      r(0,1) = 0;
+      r(0,2) = 0;
+      r(1,0) = 0;
+      r(1,1) = cos(a);
+      r(1,2) = -sin(a);
+      r(2,0) = 0;
+      r(2,1) = sin(a);
+      r(2,2) = cos(a);
+      return r;
+    }
+    
+
+    Matrix CreateRotationMatrixAlongY(double a)
+    {
+      // Rotate along Y axis (R_y)
+      // https://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations
+      Matrix r(3, 3);
+      r(0,0) = cos(a);
+      r(0,1) = 0;
+      r(0,2) = sin(a);
+      r(1,0) = 0;
+      r(1,1) = 1;
+      r(1,2) = 0;
+      r(2,0) = -sin(a);
+      r(2,1) = 0;
+      r(2,2) = cos(a);
+      return r;
+    }
+
+
+    Matrix CreateRotationMatrixAlongZ(double a)
+    {
+      // Rotate along Z axis (R_z)
+      // https://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations
+      Matrix r(3, 3);
+      r(0,0) = cos(a);
+      r(0,1) = -sin(a);
+      r(0,2) = 0;
+      r(1,0) = sin(a);
+      r(1,1) = cos(a);
+      r(1,2) = 0;
+      r(2,0) = 0;
+      r(2,1) = 0;
+      r(2,2) = 1;
+      return r;
+    }    
+
+
+    Matrix CreateTranslationMatrix(double dx,
+                                   double dy,
+                                   double dz)
+    {
+      Matrix m = LinearAlgebra::IdentityMatrix(4);
+      m(0,3) = dx;
+      m(1,3) = dy;
+      m(2,3) = dz;
+      return m;    
+    }
+
+
+    Matrix CreateScalingMatrix(double sx,
+                               double sy,
+                               double sz)
+    {
+      Matrix m = LinearAlgebra::IdentityMatrix(4);
+      m(0,0) = sx;
+      m(1,1) = sy;
+      m(2,2) = sz;
+      return m;    
+    }
+
+
+    bool IntersectPlaneAndSegment(Vector& p,
+                                  const Vector& normal,
+                                  double d,
+                                  const Vector& edgeFrom,
+                                  const Vector& edgeTo)
+    {
+      // http://geomalgorithms.com/a05-_intersect-1.html#Line-Plane-Intersection
+
+      // Check for parallel line and plane
+      Vector direction = edgeTo - edgeFrom;
+      double denominator = boost::numeric::ublas::inner_prod(direction, normal);
+
+      if (fabs(denominator) < 100.0 * std::numeric_limits<double>::epsilon())
+      {
+        return false;
+      }
+      else
+      {
+        // Compute intersection
+        double t = -(normal[0] * edgeFrom[0] + 
+                     normal[1] * edgeFrom[1] + 
+                     normal[2] * edgeFrom[2] + d) / denominator;
+
+        if (t >= 0 && t <= 1)
+        {
+          // The intersection lies inside edge segment
+          p = edgeFrom + t * direction;
+          return true;
+        }
+        else
+        {
+          return false;
+        }
+      }
+    }
+
+
+    bool IntersectPlaneAndLine(Vector& p,
+                               const Vector& normal,
+                               double d,
+                               const Vector& origin,
+                               const Vector& direction)
+    {
+      // http://geomalgorithms.com/a05-_intersect-1.html#Line-Plane-Intersection
+
+      // Check for parallel line and plane
+      double denominator = boost::numeric::ublas::inner_prod(direction, normal);
+
+      if (fabs(denominator) < 100.0 * std::numeric_limits<double>::epsilon())
+      {
+        return false;
+      }
+      else
+      {
+        // Compute intersection
+        double t = -(normal[0] * origin[0] + 
+                     normal[1] * origin[1] + 
+                     normal[2] * origin[2] + d) / denominator;
+
+        p = origin + t * direction;
+        return true;
+      }
+    }
+
+
+    void AlignVectorsWithRotation(Matrix& r,
+                                  const Vector& a,
+                                  const Vector& b)
+    {
+      // This is Rodrigues' rotation formula:
+      // https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula#Matrix_notation
+
+      // Check also result A4.6 from "Multiple View Geometry in Computer
+      // Vision - 2nd edition" (p. 584)
+  
+      if (a.size() != 3 ||
+          b.size() != 3)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      double aNorm = boost::numeric::ublas::norm_2(a);
+      double bNorm = boost::numeric::ublas::norm_2(b);
+
+      if (LinearAlgebra::IsCloseToZero(aNorm) ||
+          LinearAlgebra::IsCloseToZero(bNorm))
+      {
+        LOG(ERROR) << "Vector with zero norm";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);      
+      }
+
+      Vector aUnit, bUnit;
+      aUnit = a / aNorm;
+      bUnit = b / bNorm;
+
+      Vector v;
+      LinearAlgebra::CrossProduct(v, aUnit, bUnit);
+
+      double cosine = boost::numeric::ublas::inner_prod(aUnit, bUnit);
+
+      if (LinearAlgebra::IsCloseToZero(1 + cosine))
+      {
+        // "a == -b": TODO
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+
+      Matrix k;
+      LinearAlgebra::CreateSkewSymmetric(k, v);
+
+#if 0
+      double sine = boost::numeric::ublas::norm_2(v);
+
+      r = (boost::numeric::ublas::identity_matrix<double>(3) +
+           sine * k + 
+           (1 - cosine) * boost::numeric::ublas::prod(k, k));
+#else
+      r = (boost::numeric::ublas::identity_matrix<double>(3) +
+           k + 
+           boost::numeric::ublas::prod(k, k) / (1 + cosine));
+#endif
+    }
+
+    
+    void ComputeNormalFromCosines(Vector& normal,
+                                  const Vector& cosines)
+    {
+      if (cosines.size() != 6)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+      else
+      {
+        normal.resize(3);
+        normal[0] = cosines[1] * cosines[5] - cosines[2] * cosines[4];
+        normal[1] = cosines[2] * cosines[3] - cosines[0] * cosines[5];
+        normal[2] = cosines[0] * cosines[4] - cosines[1] * cosines[3];
+      }
+    }
+
+    
+    bool ComputeNormal(Vector& normal,
+                       const Orthanc::DicomMap& dicom)
+    {
+      Vector cosines;
+      if (LinearAlgebra::ParseVector(cosines, dicom, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT) &&
+          cosines.size() == 6)
+      {
+        ComputeNormalFromCosines(normal, cosines);
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/GeometryToolbox.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,177 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "LinearAlgebra.h"
+
+namespace OrthancStone
+{
+  namespace GeometryToolbox
+  {
+    void ProjectPointOntoPlane(Vector& result,
+                               const Vector& point,
+                               const Vector& planeNormal,
+                               const Vector& planeOrigin);
+
+    /*
+    Alternated faster implementation (untested yet)
+    */
+    void ProjectPointOntoPlane2(double& resultX,
+                                double& resultY,
+                                double& resultZ,
+                                const Vector& point,
+                                const Vector& planeNormal,
+                                const Vector& planeOrigin);
+
+    bool IsParallel(const Vector& u,
+                    const Vector& v);
+
+    bool IsParallelOrOpposite(bool& isOpposite,
+                              const Vector& u,
+                              const Vector& v);
+
+    bool IntersectTwoPlanes(Vector& p,
+                            Vector& direction,
+                            const Vector& origin1,
+                            const Vector& normal1,
+                            const Vector& origin2,
+                            const Vector& normal2);
+
+    bool ClipLineToRectangle(double& x1,  // Coordinates of the clipped line (out)
+                             double& y1,
+                             double& x2,
+                             double& y2,
+                             const double ax,  // Two points defining the line (in)
+                             const double ay,
+                             const double bx,
+                             const double by,
+                             const double& xmin,   // Coordinates of the rectangle (in)
+                             const double& ymin,
+                             const double& xmax,
+                             const double& ymax);
+
+    void GetPixelSpacing(double& spacingX, 
+                         double& spacingY,
+                         const Orthanc::DicomMap& dicom);
+
+    inline double ProjectAlongNormal(const Vector& point,
+                                     const Vector& normal)
+    {
+      return boost::numeric::ublas::inner_prod(point, normal);
+    }
+
+    Matrix CreateRotationMatrixAlongX(double a);
+
+    Matrix CreateRotationMatrixAlongY(double a);
+
+    Matrix CreateRotationMatrixAlongZ(double a);
+
+    Matrix CreateTranslationMatrix(double dx,
+                                   double dy,
+                                   double dz);
+
+    Matrix CreateScalingMatrix(double sx,
+                               double sy,
+                               double sz);
+    
+    bool IntersectPlaneAndSegment(Vector& p,
+                                  const Vector& normal,
+                                  double d,
+                                  const Vector& edgeFrom,
+                                  const Vector& edgeTo);
+
+    bool IntersectPlaneAndLine(Vector& p,
+                               const Vector& normal,
+                               double d,
+                               const Vector& origin,
+                               const Vector& direction);
+
+    void AlignVectorsWithRotation(Matrix& r,
+                                  const Vector& a,
+                                  const Vector& b);
+
+    void ComputeNormalFromCosines(Vector& normal,
+                                  const Vector& cosines);
+
+    bool ComputeNormal(Vector& normal,
+                       const Orthanc::DicomMap& dicom);
+
+    inline float ComputeBilinearInterpolationUnitSquare(float x,
+                                                        float y,
+                                                        float f00,    // source(0, 0)
+                                                        float f01,    // source(1, 0)
+                                                        float f10,    // source(0, 1)
+                                                        float f11);   // source(1, 1)
+
+    inline float ComputeTrilinearInterpolationUnitSquare(float x,
+                                                         float y,
+                                                         float z,
+                                                         float f000,   // source(0, 0, 0)
+                                                         float f001,   // source(1, 0, 0)
+                                                         float f010,   // source(0, 1, 0)
+                                                         float f011,   // source(1, 1, 0)
+                                                         float f100,   // source(0, 0, 1)
+                                                         float f101,   // source(1, 0, 1)
+                                                         float f110,   // source(0, 1, 1)
+                                                         float f111);  // source(1, 1, 1)
+  };
+}
+
+
+float OrthancStone::GeometryToolbox::ComputeBilinearInterpolationUnitSquare(float x,
+                                                                            float y,
+                                                                            float f00,
+                                                                            float f01,
+                                                                            float f10,
+                                                                            float f11)
+{
+  // This function only works within the unit square
+  assert(x >= 0 && y >= 0 && x <= 1 && y <= 1);
+
+  // https://en.wikipedia.org/wiki/Bilinear_interpolation#Unit_square
+  return (f00 * (1.0f - x) * (1.0f - y) +
+          f01 * x * (1.0f - y) +
+          f10 * (1.0f - x) * y +
+          f11 * x * y);
+}
+
+
+float OrthancStone::GeometryToolbox::ComputeTrilinearInterpolationUnitSquare(float x,
+                                                                             float y,
+                                                                             float z,
+                                                                             float f000,
+                                                                             float f001,
+                                                                             float f010,
+                                                                             float f011,
+                                                                             float f100,
+                                                                             float f101,
+                                                                             float f110,
+                                                                             float f111)
+{
+  // "In practice, a trilinear interpolation is identical to two
+  // bilinear interpolation combined with a linear interpolation"
+  // https://en.wikipedia.org/wiki/Trilinear_interpolation#Method
+  float a = ComputeBilinearInterpolationUnitSquare(x, y, f000, f001, f010, f011);
+  float b = ComputeBilinearInterpolationUnitSquare(x, y, f100, f101, f110, f111);
+
+  return (1.0f - z) * a + z * b;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/ImageGeometry.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,594 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ImageGeometry.h"
+
+#include "Extent2D.h"
+#include "SubpixelReader.h"
+
+#include <Images/ImageProcessing.h>
+#include <Logging.h>
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+  static void AddTransformedPoint(Extent2D& extent,
+                                  const Matrix& a,
+                                  double x,
+                                  double y)
+  {
+    assert(a.size1() == 3 &&
+           a.size2() == 3);
+
+    Vector p = LinearAlgebra::Product(a, LinearAlgebra::CreateVector(x, y, 1));
+
+    if (!LinearAlgebra::IsCloseToZero(p[2]))
+    {
+      extent.AddPoint(p[0] / p[2], p[1] / p[2]);
+    }
+  }
+  
+  
+  bool GetProjectiveTransformExtent(unsigned int& x1,
+                                    unsigned int& y1,
+                                    unsigned int& x2,
+                                    unsigned int& y2,
+                                    const Matrix& a,
+                                    unsigned int sourceWidth,
+                                    unsigned int sourceHeight,
+                                    unsigned int targetWidth,
+                                    unsigned int targetHeight)
+  {
+    if (targetWidth == 0 ||
+        targetHeight == 0)
+    {
+      return false;
+    }
+    
+    Extent2D extent;
+    AddTransformedPoint(extent, a, 0, 0);
+    AddTransformedPoint(extent, a, sourceWidth, 0);
+    AddTransformedPoint(extent, a, 0, sourceHeight);
+    AddTransformedPoint(extent, a, sourceWidth, sourceHeight);
+
+    if (extent.IsEmpty())
+    {
+      return false;
+    }
+    else
+    {
+      int tmp = static_cast<int>(std::floor(extent.GetX1()));
+      if (tmp < 0)
+      {
+        x1 = 0;
+      }
+      else
+      {
+        x1 = static_cast<unsigned int>(tmp);
+      }
+
+      tmp = static_cast<int>(std::floor(extent.GetY1()));
+      if (tmp < 0)
+      {
+        y1 = 0;
+      }
+      else
+      {
+        y1 = static_cast<unsigned int>(tmp);
+      }
+
+      tmp = static_cast<int>(std::ceil(extent.GetX2()));
+      if (tmp < 0)
+      {
+        return false;
+      }
+      else if (static_cast<unsigned int>(tmp) >= targetWidth)
+      {
+        x2 = targetWidth - 1;
+      }
+      else
+      {
+        x2 = static_cast<unsigned int>(tmp);
+      }
+
+      tmp = static_cast<int>(std::ceil(extent.GetY2()));
+      if (tmp < 0)
+      {
+        return false;
+      }
+      else if (static_cast<unsigned int>(tmp) >= targetHeight)
+      {
+        y2 = targetHeight - 1;
+      }
+      else
+      {
+        y2 = static_cast<unsigned int>(tmp);
+      }
+
+      return (x1 <= x2 &&
+              y1 <= y2);
+    }
+  }
+
+
+  template <typename Reader,
+            bool HasOffsetX,
+            bool HasOffsetY>
+  static void ApplyAffineTransformToRow(typename Reader::PixelType* p,
+                                        Reader& reader,
+                                        unsigned int x1,
+                                        unsigned int x2,
+                                        float positionX,
+                                        float positionY,
+                                        float offsetX,
+                                        float offsetY)
+  {
+    typename Reader::PixelType value;
+
+    for (unsigned int x = x1; x <= x2; x++, p++)
+    {     
+      if (reader.GetValue(value, positionX, positionY))
+      {
+        *p = value;
+      }
+
+      if (HasOffsetX)
+      {
+        positionX += offsetX;
+      }
+
+      if (HasOffsetY)
+      {
+        positionY += offsetY;
+      }
+    }
+  }
+  
+
+  template <Orthanc::PixelFormat Format,
+            ImageInterpolation Interpolation>
+  static void ApplyAffineInternal(Orthanc::ImageAccessor& target,
+                                  const Orthanc::ImageAccessor& source,
+                                  const Matrix& a,
+                                  bool clear)
+  {
+    assert(target.GetFormat() == Format &&
+           source.GetFormat() == Format);
+    
+    typedef SubpixelReader<Format, Interpolation>  Reader;
+    typedef typename Reader::PixelType             PixelType;
+
+    if (clear)
+    {
+      if (Format == Orthanc::PixelFormat_RGB24)
+      {
+        Orthanc::ImageProcessing::Set(target, 0, 0, 0, 255);
+      }
+      else
+      {
+        Orthanc::ImageProcessing::Set(target, 0);
+      }
+    }
+
+    Matrix inva;
+    if (!LinearAlgebra::InvertMatrixUnsafe(inva, a))
+    {
+      // Singular matrix
+      return;
+    }
+
+    Reader reader(source);
+
+    unsigned int x1, y1, x2, y2;
+
+    if (GetProjectiveTransformExtent(x1, y1, x2, y2, a,
+                                     source.GetWidth(), source.GetHeight(),
+                                     target.GetWidth(), target.GetHeight()))
+    {
+      const size_t targetPitch = target.GetPitch();
+      uint8_t *targetRow = reinterpret_cast<uint8_t*>
+        (reinterpret_cast<PixelType*>(target.GetRow(y1)) + x1);
+
+      for (unsigned int y = y1; y <= y2; y++)
+      {
+        Vector start;
+        LinearAlgebra::AssignVector(start, static_cast<double>(x1) + 0.5,
+                                    static_cast<double>(y) + 0.5, 1);
+        start = boost::numeric::ublas::prod(inva, start);
+        assert(LinearAlgebra::IsNear(1.0, start(2)));
+
+        Vector offset;
+        LinearAlgebra::AssignVector(offset, static_cast<double>(x1) + 1.5,
+                                    static_cast<double>(y) + 0.5, 1);
+        offset = boost::numeric::ublas::prod(inva, offset) - start;
+        assert(LinearAlgebra::IsNear(0.0, offset(2)));
+
+        float startX = static_cast<float>(start[0]);
+        float startY = static_cast<float>(start[1]);
+        float offsetX = static_cast<float>(offset[0]);
+        float offsetY = static_cast<float>(offset[1]);
+
+        PixelType* pixel = reinterpret_cast<PixelType*>(targetRow);
+        if (LinearAlgebra::IsCloseToZero(offsetX))
+        {
+          ApplyAffineTransformToRow<Reader, false, true>
+            (pixel, reader, x1, x2, startX, startY, offsetX, offsetY);
+        }
+        else if (LinearAlgebra::IsCloseToZero(offsetY))
+        {
+          ApplyAffineTransformToRow<Reader, true, false>
+            (pixel, reader, x1, x2, startX, startY, offsetX, offsetY);
+        }
+        else
+        {
+          ApplyAffineTransformToRow<Reader, true, true>
+            (pixel, reader, x1, x2, startX, startY, offsetX, offsetY);
+        }
+
+        targetRow += targetPitch;
+      }
+    }    
+  }
+
+
+  void ApplyAffineTransform(Orthanc::ImageAccessor& target,
+                            const Orthanc::ImageAccessor& source,
+                            double a11,
+                            double a12,
+                            double b1,
+                            double a21,
+                            double a22,
+                            double b2,
+                            ImageInterpolation interpolation,
+                            bool clear)
+  {
+    if (source.GetFormat() != target.GetFormat())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    if (interpolation != ImageInterpolation_Nearest &&
+        interpolation != ImageInterpolation_Bilinear)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    Matrix a;
+    a.resize(3, 3);
+    a(0, 0) = a11;
+    a(0, 1) = a12;
+    a(0, 2) = b1;
+    a(1, 0) = a21;
+    a(1, 1) = a22;
+    a(1, 2) = b2;
+    a(2, 0) = 0;
+    a(2, 1) = 0;
+    a(2, 2) = 1;
+
+    switch (source.GetFormat())
+    {
+      case Orthanc::PixelFormat_Grayscale8:
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ApplyAffineInternal<Orthanc::PixelFormat_Grayscale8, 
+                                ImageInterpolation_Nearest>(target, source, a, clear);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            ApplyAffineInternal<Orthanc::PixelFormat_Grayscale8, 
+                                ImageInterpolation_Bilinear>(target, source, a, clear);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        break;
+
+      case Orthanc::PixelFormat_Grayscale16:
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ApplyAffineInternal<Orthanc::PixelFormat_Grayscale16, 
+                                ImageInterpolation_Nearest>(target, source, a, clear);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            ApplyAffineInternal<Orthanc::PixelFormat_Grayscale16, 
+                                ImageInterpolation_Bilinear>(target, source, a, clear);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        break;
+
+      case Orthanc::PixelFormat_SignedGrayscale16:
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ApplyAffineInternal<Orthanc::PixelFormat_SignedGrayscale16, 
+                                ImageInterpolation_Nearest>(target, source, a, clear);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            ApplyAffineInternal<Orthanc::PixelFormat_SignedGrayscale16, 
+                                ImageInterpolation_Bilinear>(target, source, a, clear);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        break;
+
+      case Orthanc::PixelFormat_Float32:
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ApplyAffineInternal<Orthanc::PixelFormat_Float32, 
+                                ImageInterpolation_Nearest>(target, source, a, clear);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            ApplyAffineInternal<Orthanc::PixelFormat_Float32, 
+                                ImageInterpolation_Bilinear>(target, source, a, clear);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        break;
+
+      case Orthanc::PixelFormat_RGB24:
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ApplyAffineInternal<Orthanc::PixelFormat_RGB24, 
+                                ImageInterpolation_Nearest>(target, source, a, clear);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+
+
+  template <Orthanc::PixelFormat Format,
+            ImageInterpolation Interpolation>
+  static void ApplyProjectiveInternal(Orthanc::ImageAccessor& target,
+                                      const Orthanc::ImageAccessor& source,
+                                      const Matrix& a,
+                                      const Matrix& inva)
+  {
+    assert(target.GetFormat() == Format &&
+           source.GetFormat() == Format);
+    
+    typedef SubpixelReader<Format, Interpolation> Reader;
+    typedef typename Reader::PixelType            PixelType;
+
+    Reader reader(source);
+    unsigned int x1, y1, x2, y2;
+
+    const float floatWidth = static_cast<float>(source.GetWidth());
+    const float floatHeight = static_cast<float>(source.GetHeight());
+
+    if (GetProjectiveTransformExtent(x1, y1, x2, y2, a,
+                                     source.GetWidth(), source.GetHeight(),
+                                     target.GetWidth(), target.GetHeight()))
+    {
+      const size_t targetPitch = target.GetPitch();
+      uint8_t *targetRow = reinterpret_cast<uint8_t*>
+        (reinterpret_cast<PixelType*>(target.GetRow(y1)) + x1);
+
+      for (unsigned int y = y1; y <= y2; y++)
+      {
+        PixelType *p = reinterpret_cast<PixelType*>(targetRow);
+
+        for (unsigned int x = x1; x <= x2; x++)
+        {
+          Vector v;
+          LinearAlgebra::AssignVector(v, static_cast<double>(x) + 0.5, 
+                                      static_cast<double>(y) + 0.5, 1);
+
+          Vector vv = LinearAlgebra::Product(inva, v);
+
+          assert(!LinearAlgebra::IsCloseToZero(vv[2]));
+          const double w = 1.0 / vv[2];
+          const float sourceX = static_cast<float>(vv[0] * w);
+          const float sourceY = static_cast<float>(vv[1] * w);
+          
+          // Make sure no integer overflow will occur after truncation
+          // (the static_cast<unsigned int> could otherwise throw an
+          // exception in WebAssembly if strong projective effects)
+          if (sourceX < floatWidth &&
+              sourceY < floatHeight)
+          { 
+            reader.GetValue(*p, sourceX, sourceY);
+          }
+
+          p++;
+        }
+
+        targetRow += targetPitch;
+      }
+    }
+  }
+
+    
+  void ApplyProjectiveTransform(Orthanc::ImageAccessor& target,
+                                const Orthanc::ImageAccessor& source,
+                                const Matrix& a,
+                                ImageInterpolation interpolation,
+                                bool clear)
+  {
+    if (source.GetFormat() != target.GetFormat())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    if (a.size1() != 3 ||
+        a.size2() != 3)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize);
+    }
+
+    if (interpolation != ImageInterpolation_Nearest &&
+        interpolation != ImageInterpolation_Bilinear)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    // Check whether we are dealing with an affine transform
+    if (LinearAlgebra::IsCloseToZero(a(2, 0)) &&
+        LinearAlgebra::IsCloseToZero(a(2, 1)))
+    {
+      double w = a(2, 2);
+      if (LinearAlgebra::IsCloseToZero(w))
+      {
+        LOG(ERROR) << "Singular projective matrix";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+      else
+      {
+        ApplyAffineTransform(target, source, 
+                             a(0, 0) / w, a(0, 1) / w, a(0, 2) / w,
+                             a(1, 0) / w, a(1, 1) / w, a(1, 2) / w,
+                             interpolation, clear);
+        return;
+      }
+    }
+
+    if (clear)
+    {
+      if (target.GetFormat() == Orthanc::PixelFormat_RGB24)
+      {
+        Orthanc::ImageProcessing::Set(target, 0, 0, 0, 255);
+      }
+      else
+      {
+        Orthanc::ImageProcessing::Set(target, 0);
+      }
+    }
+
+    Matrix inva;
+    if (!LinearAlgebra::InvertMatrixUnsafe(inva, a))
+    {
+      return;
+    }
+
+    switch (source.GetFormat())
+    {
+      case Orthanc::PixelFormat_Grayscale8:
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ApplyProjectiveInternal<Orthanc::PixelFormat_Grayscale8, 
+                                    ImageInterpolation_Nearest>(target, source, a, inva);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            ApplyProjectiveInternal<Orthanc::PixelFormat_Grayscale8, 
+                                    ImageInterpolation_Bilinear>(target, source, a, inva);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        break;
+
+      case Orthanc::PixelFormat_Grayscale16:
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ApplyProjectiveInternal<Orthanc::PixelFormat_Grayscale16, 
+                                    ImageInterpolation_Nearest>(target, source, a, inva);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            ApplyProjectiveInternal<Orthanc::PixelFormat_Grayscale16, 
+                                    ImageInterpolation_Bilinear>(target, source, a, inva);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        break;
+
+      case Orthanc::PixelFormat_SignedGrayscale16:
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ApplyProjectiveInternal<Orthanc::PixelFormat_SignedGrayscale16, 
+                                    ImageInterpolation_Nearest>(target, source, a, inva);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            ApplyProjectiveInternal<Orthanc::PixelFormat_SignedGrayscale16, 
+                                    ImageInterpolation_Bilinear>(target, source, a, inva);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        break;
+
+      case Orthanc::PixelFormat_Float32:
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ApplyProjectiveInternal<Orthanc::PixelFormat_Float32, 
+                                    ImageInterpolation_Nearest>(target, source, a, inva);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            ApplyProjectiveInternal<Orthanc::PixelFormat_Float32, 
+                                    ImageInterpolation_Bilinear>(target, source, a, inva);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        break;
+
+      case Orthanc::PixelFormat_RGB24:
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ApplyProjectiveInternal<Orthanc::PixelFormat_RGB24, 
+                                    ImageInterpolation_Nearest>(target, source, a, inva);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/ImageGeometry.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,61 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../StoneEnumerations.h"
+#include "LinearAlgebra.h"
+
+#include <Images/ImageAccessor.h>
+
+
+namespace OrthancStone
+{
+  // Returns the "useful" portion of the target image when applying a
+  // 3x3 perspective transform "a" (i.e. the bounding box where points
+  // of the source image are mapped to)
+  bool GetProjectiveTransformExtent(unsigned int& x1,
+                                    unsigned int& y1,
+                                    unsigned int& x2,
+                                    unsigned int& y2,
+                                    const Matrix& a,
+                                    unsigned int sourceWidth,
+                                    unsigned int sourceHeight,
+                                    unsigned int targetWidth,
+                                    unsigned int targetHeight);
+
+  void ApplyAffineTransform(Orthanc::ImageAccessor& target,
+                            const Orthanc::ImageAccessor& source,
+                            double a11,
+                            double a12,
+                            double b1,
+                            double a21,
+                            double a22,
+                            double b2,
+                            ImageInterpolation interpolation,
+                            bool clear);
+
+  void ApplyProjectiveTransform(Orthanc::ImageAccessor& target,
+                                const Orthanc::ImageAccessor& source,
+                                const Matrix& a,
+                                ImageInterpolation interpolation,
+                                bool clear);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/ImageToolbox.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,337 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "../OrthancStone.h"
+#include "ImageToolbox.h"
+
+#include "../StoneException.h"
+
+#include <Images/ImageProcessing.h>
+#include <Images/PixelTraits.h>
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+#include <boost/static_assert.hpp>
+#include <boost/type_traits.hpp>
+
+#include <vector>
+
+#if !defined(ORTHANC_ENABLE_DCMTK)
+#  error ORTHANC_ENABLE_DCMTK is not defined
+#endif
+
+#if !defined(ORTHANC_ENABLE_DCMTK_JPEG)
+#  error ORTHANC_ENABLE_DCMTK_JPEG is not defined
+#endif
+
+#if !defined(ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS)
+#  error ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS is not defined
+#endif
+
+
+namespace OrthancStone
+{
+  namespace
+  {
+    using Orthanc::PixelTraits;
+    using Orthanc::PixelFormat;
+    using Orthanc::ImageAccessor;
+    using Orthanc::PixelFormat;
+
+    template<typename Orthanc::PixelFormat Format>
+    class PixelBinner
+    {
+      // "PixelBinner requires an arithmetic (integer or floating-point) pixel format"
+      typedef typename Orthanc::PixelTraits<Format>::PixelType PixelType;
+      BOOST_STATIC_ASSERT(boost::is_arithmetic<PixelType>::value);
+    
+    public:
+      PixelBinner(HistogramData& hd, double minValue, double maxValue)
+        : hd_(hd)
+        , minValue_(minValue)
+        , maxValue_(maxValue)
+        , division_(1.0 / hd_.binSize)
+      {
+        ORTHANC_ASSERT(hd_.bins.size() > 0);
+        ORTHANC_ASSERT(maxValue > minValue);
+      }
+
+      ORTHANC_FORCE_INLINE void AddPixel(PixelType p)
+      {
+        if (p <= minValue_)
+        {
+          hd_.bins[0] += 1;
+        }
+        else if (p >= maxValue_)
+        {
+          hd_.bins.back() += 1;
+        }
+        else
+        {
+          double distanceFromMin = p - minValue_;
+          size_t binIndex = static_cast<size_t>(
+            std::floor(distanceFromMin * division_));
+          if (binIndex >= hd_.bins.size())
+            binIndex = hd_.bins.size() - 1;
+          hd_.bins[binIndex] += 1;
+        }
+      }
+    private:
+      HistogramData&        hd_;
+      double                minValue_;
+      double                maxValue_;
+      double                division_;
+    };
+
+    template<PixelFormat Format>
+    struct Histogram
+    {
+      typedef typename PixelTraits<Format>::PixelType PixelType;
+
+      static void Apply(const Orthanc::ImageAccessor& img, HistogramData& hd,
+                        double minValue = 0, 
+                        double maxValue = 0)
+      {
+        ORTHANC_ASSERT(Format == img.GetFormat(), 
+                       "Internal error. Wrong template histogram type");
+    
+        const size_t height = img.GetHeight();
+        const size_t width = img.GetHeight();
+
+        if ((minValue == 0) && (maxValue == 0))
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+          //ORTHANC_ASSERT(boost::is_integral<PixelType>::value, 
+          //  "Min and max values must be supplied for float-based histogram");
+          //
+          //PixelTraits<Format>::SetMinValue(minValue);
+          //PixelTraits<Format>::SetMaxValue(maxValue);
+        }
+
+        hd.minValue = minValue;
+
+        // the following code is not really pretty but ensures 
+        size_t numBins = static_cast<size_t>(
+          std::ceil((maxValue - minValue) / hd.binSize));
+
+        hd.bins.resize(numBins);
+        std::fill(hd.bins.begin(), hd.bins.end(), 0);
+
+        PixelBinner<Format> binner(hd, minValue, maxValue);
+        for (uint32_t y = 0; y < height; ++y)
+        {
+          const PixelType* curPix = reinterpret_cast<const PixelType*>(
+            img.GetConstRow(y));
+          
+          for (uint32_t x = 0; x < width; x++, curPix++)
+          {
+            binner.AddPixel(*curPix);
+          }
+        }
+      }
+    };
+
+
+    template<PixelFormat Format>
+    struct ComputeMinMax__
+    {
+      typedef typename PixelTraits<Format>::PixelType PixelType;
+
+      static void Apply(const Orthanc::ImageAccessor& img,
+                        PixelType& minValue, PixelType& maxValue)
+      {
+        ORTHANC_ASSERT(Format == img.GetFormat(), 
+                       "Internal error. Wrong template histogram type");
+
+        const size_t height = img.GetHeight();
+        const size_t width = img.GetHeight();
+
+        if (height * width == 0)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+        }
+
+        // min and max are crossed below. Think about it. This is OK :)
+        PixelTraits<Format>::SetMaxValue(minValue);
+        PixelTraits<Format>::SetMinValue(maxValue);
+
+        for (uint32_t y = 0; y < height; ++y)
+        {
+          const PixelType* curPix = reinterpret_cast<const PixelType*>(
+            img.GetConstRow(y));
+
+          for (uint32_t x = 0; x < width; x++, curPix++)
+          {
+            if (*curPix <= minValue)
+              minValue = *curPix;
+            if (*curPix >= maxValue)
+              maxValue = *curPix;
+          }
+        }
+      }
+    };
+
+    template<PixelFormat Format>
+    void ComputeMinMax_(const Orthanc::ImageAccessor& img, 
+                        double& minValue, double& maxValue)
+    {
+      typedef typename PixelTraits<Format>::PixelType PixelType;
+      PixelType minValuePix = PixelType();
+      PixelType maxValuePix = PixelType();
+      ComputeMinMax__<Format>::Apply(img, minValuePix, maxValuePix);
+      minValue = static_cast<double>(minValuePix);
+      maxValue = static_cast<double>(maxValuePix);
+    }
+    
+    template<PixelFormat Format>
+    void ComputeHistogram_(const Orthanc::ImageAccessor& img, HistogramData& hd)
+    {
+      typedef typename PixelTraits<Format>::PixelType PixelType;
+      PixelType minValue = PixelType();
+      PixelType maxValue = PixelType();
+      ComputeMinMax__<Format>::Apply(img, minValue, maxValue);
+      
+      // make bins a little bigger to center integer pixel values
+      Histogram<Format>::Apply(img, hd, 
+                               static_cast<double>(minValue) - 0.5, 
+                               static_cast<double>(maxValue) + 0.5);
+    }
+  }
+
+  void ComputeHistogram(const Orthanc::ImageAccessor& img,
+                        HistogramData& hd, double binSize)
+  {
+    using namespace Orthanc;
+
+    hd.binSize = binSize;
+
+    // dynamic/static bridge
+    switch (img.GetFormat())
+    {
+    case PixelFormat_Grayscale8:
+      ComputeHistogram_<PixelFormat_Grayscale8>       (img, hd);
+      break;
+    case PixelFormat_Grayscale16:
+      ComputeHistogram_<PixelFormat_Grayscale16>      (img, hd);
+      break;
+    case PixelFormat_SignedGrayscale16:
+      ComputeHistogram_<PixelFormat_SignedGrayscale16>(img, hd);
+      break;
+    case PixelFormat_Float32:
+      ComputeHistogram_<PixelFormat_Float32>          (img, hd);
+      break;
+    case PixelFormat_Grayscale32:
+      ComputeHistogram_<PixelFormat_Grayscale32>      (img, hd);
+      break;
+    case PixelFormat_Grayscale64:
+      ComputeHistogram_<PixelFormat_Grayscale64>      (img, hd);
+      break;
+    default:
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+  }
+
+  void ComputeMinMax(const Orthanc::ImageAccessor& img,
+                     double& minValue, double& maxValue)
+  {
+    using namespace Orthanc;
+
+    // dynamic/static bridge
+    switch (img.GetFormat())
+    {
+    case PixelFormat_Grayscale8:
+      ComputeMinMax_<PixelFormat_Grayscale8>       (img, minValue, maxValue);
+      break;                                                
+    case PixelFormat_Grayscale16:                           
+      ComputeMinMax_<PixelFormat_Grayscale16>      (img, minValue, maxValue);
+      break;                                                
+    case PixelFormat_SignedGrayscale16:                     
+      ComputeMinMax_<PixelFormat_SignedGrayscale16>(img, minValue, maxValue);
+      break;                                                
+    case PixelFormat_Float32:                               
+      ComputeMinMax_<PixelFormat_Float32>          (img, minValue, maxValue);
+      break;                                                
+    case PixelFormat_Grayscale32:                           
+      ComputeMinMax_<PixelFormat_Grayscale32>      (img, minValue, maxValue);
+      break;                                                
+    case PixelFormat_Grayscale64:                           
+      ComputeMinMax_<PixelFormat_Grayscale64>      (img, minValue, maxValue);
+      break;
+    default:
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+  }
+
+  void DumpHistogramResult(std::string& s, const HistogramData& hd)
+  {
+    std::stringstream ss;
+    ss << "Histogram:\n";
+    ss << "==========\n";
+    ss << "\n";
+    ss << "minValue        : " << hd.minValue << "\n";
+    ss << "binSize         : " << hd.binSize << "\n";
+    ss << "bins.size()     : " << hd.bins.size() << "\n";
+    ss << "bins            :\n";
+    double curBinStart = hd.minValue;
+    size_t pixCount = 0;
+    for (size_t i = 0; i < hd.bins.size(); ++i)
+    {
+      ss << "index: " << i << " (from " << curBinStart << " to "
+        << curBinStart + hd.binSize << ") : " << hd.bins[i] << " pixels\n";
+      curBinStart += hd.binSize;
+      pixCount += hd.bins[i];
+    }
+    ss << "total pix. count: " << pixCount << "\n";
+    s = ss.str();
+  }
+
+
+  bool ImageToolbox::IsDecodingSupported(Orthanc::DicomTransferSyntax& transferSyntax)
+  {
+    switch (transferSyntax)
+    {
+      case Orthanc::DicomTransferSyntax_LittleEndianImplicit:
+      case Orthanc::DicomTransferSyntax_LittleEndianExplicit:
+      case Orthanc::DicomTransferSyntax_DeflatedLittleEndianExplicit:
+      case Orthanc::DicomTransferSyntax_BigEndianExplicit:
+      case Orthanc::DicomTransferSyntax_RLELossless:
+        return true;
+
+#if (ORTHANC_ENABLE_DCMTK == 1) && (ORTHANC_ENABLE_DCMTK_JPEG == 1)
+      case Orthanc::DicomTransferSyntax_JPEGProcess1:
+      case Orthanc::DicomTransferSyntax_JPEGProcess2_4:
+      case Orthanc::DicomTransferSyntax_JPEGProcess14:
+      case Orthanc::DicomTransferSyntax_JPEGProcess14SV1:
+        return true;
+#endif
+      
+#if (ORTHANC_ENABLE_DCMTK == 1) && (ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS == 1)
+      case Orthanc::DicomTransferSyntax_JPEGLSLossless:
+      case Orthanc::DicomTransferSyntax_JPEGLSLossy:
+        return true;
+#endif
+      
+      default:
+        return false;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/ImageToolbox.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,82 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../StoneEnumerations.h"
+#include "LinearAlgebra.h"
+
+#include <Images/ImageAccessor.h>
+
+namespace OrthancStone
+{
+
+  /**
+  This structure represents the result of an histogram computation
+
+  bins[0]   contains the values in [minValue                , minValue +   binSize [
+  bins[1]   contains the values in [minValue +       binSize, minValue + 2*binSize [
+  bins[2]   contains the values in [minValue +     2*binSize, minValue + 3*binSize [
+  ...
+  bins[N-1] contains the values in [minValue + (N-1)*binSize, minValue + N*binSize [
+
+  */
+  struct HistogramData
+  {
+    std::vector<size_t> bins;
+    double minValue;
+    double binSize;
+  };
+
+  /**
+  Dumps the supplied histogram to the supplied strings
+  */
+  void DumpHistogramResult(std::string& s, const HistogramData& hd);
+  
+  /**
+  This will compute the histogram of the supplied image (count the number of 
+  pixels).
+
+  The image must contain arithmetic pixels (that is, having a single component,
+  integer or float). Compound pixel types like RGB, YUV are not supported and
+  will cause this function to throw an exception.
+
+  The range of available values will be split in sets of size `binSize`, and 
+  each set will contain the number of pixels in the given bin 
+  (see HistogramResult above).
+  */
+  void ComputeHistogram(const Orthanc::ImageAccessor& img,
+                        HistogramData& hd, double binSize);
+
+
+  /**
+  Computes the min max values in an image
+  */
+  void ComputeMinMax(const Orthanc::ImageAccessor& img, 
+                     double& minValue, double& maxValue);
+
+
+  class ImageToolbox
+  {
+  public:
+    static bool IsDecodingSupported(Orthanc::DicomTransferSyntax& transferSyntax);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/LinearAlgebra.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,751 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "LinearAlgebra.h"
+
+#include "../StoneException.h"
+#include "GenericToolbox.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+#include <boost/lexical_cast.hpp>
+#include <boost/numeric/ublas/lu.hpp>
+
+#include <stdio.h>
+#include <iostream>
+#include <cstdlib>
+
+namespace OrthancStone
+{
+  namespace LinearAlgebra
+  {
+    void Print(const Vector& v)
+    {
+      for (size_t i = 0; i < v.size(); i++)
+      {
+        printf("%g\n", v[i]);
+        //printf("%8.2f\n", v[i]);
+      }
+      printf("\n");
+    }
+
+
+    void Print(const Matrix& m)
+    {
+      for (size_t i = 0; i < m.size1(); i++)
+      {
+        for (size_t j = 0; j < m.size2(); j++)
+        {
+          printf("%g  ", m(i,j));
+          //printf("%8.2f  ", m(i,j));
+        }
+        printf("\n");        
+      }
+      printf("\n");        
+    }
+
+
+    bool ParseVector(Vector& target,
+                     const std::string& value)
+    {
+      std::vector<std::string> items;
+      Orthanc::Toolbox::TokenizeString(items, Orthanc::Toolbox::StripSpaces(value), '\\');
+
+      target.resize(items.size());
+
+      for (size_t i = 0; i < items.size(); i++)
+      {
+        /**
+         * SJO - 2019-11-19 - WARNING: I reverted from "std::stod()"
+         * to "boost::lexical_cast", as both "std::stod()" and
+         * "std::strtod()" are sensitive to locale settings, making
+         * this code non portable and very dangerous as it fails
+         * silently. A string such as "1.3671875\1.3671875" is
+         * interpreted as "1\1", because "std::stod()" expects a comma
+         * (",") instead of a point ("."). This problem is notably
+         * seen in Qt-based applications, that somehow set locales
+         * aggressively.
+         *
+         * "boost::lexical_cast<>" is also dependent on the locale
+         * settings, but apparently not in a way that makes this
+         * function fail with Qt. The Orthanc core defines macro
+         * "-DBOOST_LEXICAL_CAST_ASSUME_C_LOCALE" in static builds to
+         * this end.
+         **/
+        
+#if 0  // __cplusplus >= 201103L  // Is C++11 enabled?
+        /**
+         * We try and avoid the use of "boost::lexical_cast<>" here,
+         * as it is very slow, and as Stone has to parse many doubles.
+         * https://tinodidriksen.com/2011/05/cpp-convert-string-to-double-speed/
+         **/
+          
+        try
+        {
+          target[i] = std::stod(items[i]);
+        }
+        catch (std::exception&)
+        {
+          target.clear();
+          return false;
+        }
+
+#elif 0
+        /**
+         * "std::strtod()" is the recommended alternative to
+         * "std::stod()". It is apparently as fast as plain-C
+         * "atof()", with more security.
+         **/
+        char* end = NULL;
+        target[i] = std::strtod(items[i].c_str(), &end);
+        if (end == NULL ||
+            end != items[i].c_str() + items[i].size())
+        {
+          return false;
+        }
+
+#elif 1
+        /**
+         * Use of our homemade implementation of
+         * "boost::lexical_cast<double>()". It is much faster than boost.
+         **/
+        if (!GenericToolbox::StringToDouble(target[i], items[i].c_str()))
+        {
+          return false;
+        }
+        
+#else
+        /**
+         * Fallback implementation using Boost (slower, but somehow
+         * independent to locale contrarily to "std::stod()", and
+         * generic as it does not use our custom implementation).
+         **/
+        try
+        {
+          target[i] = boost::lexical_cast<double>(items[i]);
+        }
+        catch (boost::bad_lexical_cast&)
+        {
+          target.clear();
+          return false;
+        }
+#endif
+      }
+
+      return true;
+    }
+
+
+    bool ParseVector(Vector& target,
+                     const Orthanc::DicomMap& dataset,
+                     const Orthanc::DicomTag& tag)
+    {
+      std::string value;
+      return (dataset.LookupStringValue(value, tag, false) &&
+              ParseVector(target, value));
+    }
+
+
+    void NormalizeVector(Vector& u)
+    {
+      double norm = boost::numeric::ublas::norm_2(u);
+      if (!IsCloseToZero(norm))
+      {
+        u = u / norm;
+      }
+    }
+
+    void CrossProduct(Vector& result,
+                      const Vector& u,
+                      const Vector& v)
+    {
+      if (u.size() != 3 ||
+          v.size() != 3)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      result.resize(3);
+
+      result[0] = u[1] * v[2] - u[2] * v[1];
+      result[1] = u[2] * v[0] - u[0] * v[2];
+      result[2] = u[0] * v[1] - u[1] * v[0];
+    }
+
+    double DotProduct(const Vector& u, const Vector& v)
+    {
+      if (u.size() != 3 ||
+          v.size() != 3)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2]);
+    }
+
+    void FillMatrix(Matrix& target,
+                    size_t rows,
+                    size_t columns,
+                    const double values[])
+    {
+      target.resize(rows, columns);
+
+      size_t index = 0;
+
+      for (size_t y = 0; y < rows; y++)
+      {
+        for (size_t x = 0; x < columns; x++, index++)
+        {
+          target(y, x) = values[index];
+        }
+      }
+    }
+
+
+    void FillVector(Vector& target,
+                    size_t size,
+                    const double values[])
+    {
+      target.resize(size);
+
+      for (size_t i = 0; i < size; i++)
+      {
+        target[i] = values[i];
+      }
+    }
+
+
+    void Convert(Matrix& target,
+                 const Vector& source)
+    {
+      const size_t n = source.size();
+
+      target.resize(n, 1);
+
+      for (size_t i = 0; i < n; i++)
+      {
+        target(i, 0) = source[i];
+      }      
+    }
+
+    
+    double ComputeDeterminant(const Matrix& a)
+    {
+      if (a.size1() != a.size2())
+      {
+        LOG(ERROR) << "Determinant only exists for square matrices";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+    
+      // https://en.wikipedia.org/wiki/Rule_of_Sarrus
+      if (a.size1() == 1)
+      {
+        return a(0,0);
+      }
+      else if (a.size1() == 2)
+      {
+        return a(0,0) * a(1,1) - a(0,1) * a(1,0);
+      }
+      else if (a.size1() == 3)
+      {
+        return (a(0,0) * a(1,1) * a(2,2) + 
+                a(0,1) * a(1,2) * a(2,0) +
+                a(0,2) * a(1,0) * a(2,1) -
+                a(2,0) * a(1,1) * a(0,2) -
+                a(2,1) * a(1,2) * a(0,0) -
+                a(2,2) * a(1,0) * a(0,1));
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+    }
+    
+
+    bool IsOrthogonalMatrix(const Matrix& q,
+                            double threshold)
+    {
+      // https://en.wikipedia.org/wiki/Orthogonal_matrix
+
+      if (q.size1() != q.size2())
+      {
+        LOG(ERROR) << "An orthogonal matrix must be squared";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      using namespace boost::numeric::ublas;
+
+      const Matrix check = prod(trans(q), q) - identity_matrix<double>(q.size1());
+
+      type_traits<double>::real_type norm = norm_inf(check);
+
+      return (norm <= threshold);
+    }
+
+
+    bool IsOrthogonalMatrix(const Matrix& q)
+    {
+      return IsOrthogonalMatrix(q, 10.0 * std::numeric_limits<float>::epsilon());
+    }
+
+
+    bool IsRotationMatrix(const Matrix& r,
+                          double threshold)
+    {
+      return (IsOrthogonalMatrix(r, threshold) &&
+              IsNear(ComputeDeterminant(r), 1.0, threshold));
+    }
+
+
+    bool IsRotationMatrix(const Matrix& r)
+    {
+      return IsRotationMatrix(r, 10.0 * std::numeric_limits<float>::epsilon());
+    }
+
+
+    void InvertUpperTriangularMatrix(Matrix& output,
+                                     const Matrix& k)
+    {
+      if (k.size1() != k.size2())
+      {
+        LOG(ERROR) << "Determinant only exists for square matrices";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      output.resize(k.size1(), k.size2());
+
+      for (size_t i = 1; i < k.size1(); i++)
+      {
+        for (size_t j = 0; j < i; j++)
+        {
+          if (!IsCloseToZero(k(i, j)))
+          {
+            LOG(ERROR) << "Not an upper triangular matrix";
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+          }
+
+          output(i, j) = 0;  // The output is also upper triangular
+        }
+      }
+
+      if (k.size1() == 3)
+      {
+        // https://math.stackexchange.com/a/1004181
+        double a = k(0, 0);
+        double b = k(0, 1);
+        double c = k(0, 2);
+        double d = k(1, 1);
+        double e = k(1, 2);
+        double f = k(2, 2);
+
+        if (IsCloseToZero(a) ||
+            IsCloseToZero(d) ||
+            IsCloseToZero(f))
+        {
+          LOG(ERROR) << "Singular upper triangular matrix";
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+        }
+        else
+        {
+          output(0, 0) = 1.0 / a;
+          output(0, 1) = -b / (a * d);
+          output(0, 2) = (b * e - c * d) / (a * f * d);
+          output(1, 1) = 1.0 / d;
+          output(1, 2) = -e / (f * d);
+          output(2, 2) = 1.0 / f;
+        }
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+    }
+
+
+    static void GetGivensComponent(double& c,
+                                   double& s,
+                                   const Matrix& a,
+                                   size_t i,
+                                   size_t j)
+    {
+      assert(i < 3 && j < 3);
+
+      double x = a(i, i);
+      double y = a(i, j);
+      double n = sqrt(x * x + y * y);
+
+      if (IsCloseToZero(n))
+      {
+        c = 1;
+        s = 0;
+      }
+      else
+      {
+        c = x / n;
+        s = -y / n;
+      }
+    }
+
+
+    /**
+     * This function computes the RQ decomposition of a 3x3 matrix,
+     * using Givens rotations. Reference: Algorithm A4.1 (page 579) of
+     * "Multiple View Geometry in Computer Vision" (2nd edition).  The
+     * output matrix "Q" is a rotation matrix, and "R" is upper
+     * triangular.
+     **/
+    void RQDecomposition3x3(Matrix& r,
+                            Matrix& q,
+                            const Matrix& a)
+    {
+      using namespace boost::numeric::ublas;
+      
+      if (a.size1() != 3 ||
+          a.size2() != 3)
+      {
+        LOG(ERROR) << "Only applicable to a 3x3 matrix";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      r.resize(3, 3);
+      q.resize(3, 3);
+
+      r = a;
+      q = identity_matrix<double>(3);
+
+      {
+        // Set A(2,1) to zero
+        double c, s;
+        GetGivensComponent(c, s, r, 2, 1);
+
+        double v[9] = { 1, 0, 0, 
+                        0, c, -s,
+                        0, s, c };
+
+        Matrix g;
+        FillMatrix(g, 3, 3, v);
+
+        r = prod(r, g);
+        q = prod(trans(g), q);
+      }
+
+
+      {
+        // Set A(2,0) to zero
+        double c, s;
+        GetGivensComponent(c, s, r, 2, 0);
+
+        double v[9] = { c, 0, -s, 
+                        0, 1, 0,
+                        s, 0, c };
+
+        Matrix g;
+        FillMatrix(g, 3, 3, v);
+
+        r = prod(r, g);
+        q = prod(trans(g), q);
+      }
+
+
+      {
+        // Set A(1,0) to zero
+        double c, s;
+        GetGivensComponent(c, s, r, 1, 0);
+
+        double v[9] = { c, -s, 0, 
+                        s, c, 0,
+                        0, 0, 1 };
+
+        Matrix g;
+        FillMatrix(g, 3, 3, v);
+
+        r = prod(r, g);
+        q = prod(trans(g), q);
+      }
+
+      if (!IsCloseToZero(norm_inf(prod(r, q) - a)) ||
+          !IsRotationMatrix(q) ||
+          !IsCloseToZero(r(1, 0)) ||
+          !IsCloseToZero(r(2, 0)) ||
+          !IsCloseToZero(r(2, 1)))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+
+
+    bool InvertMatrixUnsafe(Matrix& target,
+                            const Matrix& source)
+    {
+      if (source.size1() != source.size2())
+      {
+        LOG(ERROR) << "Inverse only exists for square matrices";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      if (source.size1() < 4)
+      {
+        // For matrices with size below 4, use direct computations
+        // instead of LU decomposition
+
+        if (source.size1() == 0)
+        {
+          // By convention, the inverse of the empty matrix, is itself the empty matrix
+          target.resize(0, 0);
+          return true;
+        }
+
+        double determinant = ComputeDeterminant(source);
+
+        if (IsCloseToZero(determinant))
+        {
+          return false;
+        }
+
+        double denominator = 1.0 / determinant;
+
+        target.resize(source.size1(), source.size2());
+
+        if (source.size1() == 1)
+        {
+          target(0, 0) = denominator;
+
+          return true;
+        }
+        else if (source.size1() == 2)
+        {
+          // https://en.wikipedia.org/wiki/Invertible_matrix#Inversion_of_2_%C3%97_2_matrices
+          target(0, 0) =  source(1, 1) * denominator;
+          target(0, 1) = -source(0, 1) * denominator;
+          target(1, 0) = -source(1, 0) * denominator;
+          target(1, 1) =  source(0, 0) * denominator;
+
+          return true;
+        }
+        else if (source.size1() == 3)
+        {
+          // https://en.wikipedia.org/wiki/Invertible_matrix#Inversion_of_3_%C3%97_3_matrices
+          const double a = source(0, 0);
+          const double b = source(0, 1);
+          const double c = source(0, 2);
+          const double d = source(1, 0);
+          const double e = source(1, 1);
+          const double f = source(1, 2);
+          const double g = source(2, 0);
+          const double h = source(2, 1);
+          const double i = source(2, 2);
+        
+          target(0, 0) =  (e * i - f * h) * denominator;
+          target(0, 1) = -(b * i - c * h) * denominator;
+          target(0, 2) =  (b * f - c * e) * denominator;
+          target(1, 0) = -(d * i - f * g) * denominator;
+          target(1, 1) =  (a * i - c * g) * denominator;
+          target(1, 2) = -(a * f - c * d) * denominator;
+          target(2, 0) =  (d * h - e * g) * denominator;
+          target(2, 1) = -(a * h - b * g) * denominator;
+          target(2, 2) =  (a * e - b * d) * denominator;
+
+          return true;
+        }
+        else
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+        }
+      }
+      else
+      {
+        // General case, using LU decomposition
+
+        Matrix a = source;  // Copy the source matrix, as "lu_factorize()" modifies it
+
+        boost::numeric::ublas::permutation_matrix<size_t>  permutation(source.size1());
+        
+        if (boost::numeric::ublas::lu_factorize(a, permutation) != 0)
+        {
+          return false;
+        }
+        else
+        {
+          target = boost::numeric::ublas::identity_matrix<double>(source.size1());
+          lu_substitute(a, permutation, target);
+          return true;
+        }
+      }
+    }
+    
+
+    
+    void InvertMatrix(Matrix& target,
+                      const Matrix& source)
+    {
+      if (!InvertMatrixUnsafe(target, source))
+      {
+        LOG(ERROR) << "Cannot invert singular matrix";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+    }
+
+    
+    void CreateSkewSymmetric(Matrix& s,
+                             const Vector& v)
+    {
+      if (v.size() != 3)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+      }
+
+      s.resize(3, 3);
+      s(0,0) = 0;
+      s(0,1) = -v[2];
+      s(0,2) = v[1];
+      s(1,0) = v[2];
+      s(1,1) = 0;
+      s(1,2) = -v[0];
+      s(2,0) = -v[1];
+      s(2,1) = v[0];
+      s(2,2) = 0;
+    }
+
+  
+    Matrix InvertScalingTranslationMatrix(const Matrix& t)
+    {
+      if (t.size1() != 4 ||
+          t.size2() != 4 ||
+          !LinearAlgebra::IsCloseToZero(t(0,1)) ||
+          !LinearAlgebra::IsCloseToZero(t(0,2)) ||
+          !LinearAlgebra::IsCloseToZero(t(1,0)) ||
+          !LinearAlgebra::IsCloseToZero(t(1,2)) ||
+          !LinearAlgebra::IsCloseToZero(t(2,0)) ||
+          !LinearAlgebra::IsCloseToZero(t(2,1)) ||
+          !LinearAlgebra::IsCloseToZero(t(3,0)) ||
+          !LinearAlgebra::IsCloseToZero(t(3,1)) ||
+          !LinearAlgebra::IsCloseToZero(t(3,2)))
+      {
+        LOG(ERROR) << "This matrix is more than a zoom/translate transform";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      const double sx = t(0,0);
+      const double sy = t(1,1);
+      const double sz = t(2,2);
+      const double w = t(3,3);
+
+      if (LinearAlgebra::IsCloseToZero(sx) ||
+          LinearAlgebra::IsCloseToZero(sy) ||
+          LinearAlgebra::IsCloseToZero(sz) ||
+          LinearAlgebra::IsCloseToZero(w))
+      {
+        LOG(ERROR) << "Singular transform";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    
+      const double tx = t(0,3);
+      const double ty = t(1,3);
+      const double tz = t(2,3);
+    
+      Matrix m = IdentityMatrix(4);
+
+      m(0,0) = 1.0 / sx;
+      m(1,1) = 1.0 / sy;
+      m(2,2) = 1.0 / sz;
+      m(3,3) = 1.0 / w;
+
+      m(0,3) = -tx / (sx * w);
+      m(1,3) = -ty / (sy * w);
+      m(2,3) = -tz / (sz * w);
+
+      return m;
+    }
+
+
+    bool IsShearMatrix(const Matrix& shear)
+    {
+      return (shear.size1() == 4 &&
+              shear.size2() == 4 &&
+              LinearAlgebra::IsNear(1.0, shear(0,0)) &&
+              LinearAlgebra::IsNear(0.0, shear(0,1)) &&
+              LinearAlgebra::IsNear(0.0, shear(0,3)) &&
+              LinearAlgebra::IsNear(0.0, shear(1,0)) &&
+              LinearAlgebra::IsNear(1.0, shear(1,1)) &&
+              LinearAlgebra::IsNear(0.0, shear(1,3)) &&
+              LinearAlgebra::IsNear(0.0, shear(2,0)) &&
+              LinearAlgebra::IsNear(0.0, shear(2,1)) &&
+              LinearAlgebra::IsNear(1.0, shear(2,2)) &&
+              LinearAlgebra::IsNear(0.0, shear(2,3)) &&
+              LinearAlgebra::IsNear(0.0, shear(3,0)) &&
+              LinearAlgebra::IsNear(0.0, shear(3,1)) &&
+              LinearAlgebra::IsNear(1.0, shear(3,3)));
+    }
+  
+
+    Matrix InvertShearMatrix(const Matrix& shear)
+    {
+      if (!IsShearMatrix(shear))
+      {
+        LOG(ERROR) << "Not a valid shear matrix";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      Matrix m = IdentityMatrix(4);
+      m(0,2) = -shear(0,2);
+      m(1,2) = -shear(1,2);
+      m(3,2) = -shear(3,2);
+
+      return m;
+    }
+  }
+
+  std::ostream& operator<<(std::ostream& s, const Vector& vec)
+  {
+    s << "(";
+    for (size_t i = 0; i < vec.size(); ++i)
+    {
+      s << vec(i);
+      if (i < (vec.size() - 1))
+        s << ", ";
+    }
+    s << ")";
+    return s;
+  }
+
+  std::ostream& operator<<(std::ostream& s, const Matrix& m)
+  {
+    ORTHANC_ASSERT(m.size1() == m.size2());
+    s << "(";
+    for (size_t i = 0; i < m.size1(); ++i)
+    {
+      s << "(";
+      for (size_t j = 0; j < m.size2(); ++j)
+      {
+        s << m(i,j);
+        if (j < (m.size2() - 1))
+          s << ", ";
+      }
+      s << ")";
+      if (i < (m.size1() - 1))
+        s << ", ";
+    }
+    s << ")";
+    return s;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/LinearAlgebra.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,299 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+// Patch for ublas in Boost 1.64.0
+// https://github.com/dealii/dealii/issues/4302
+#include <boost/version.hpp>
+#if BOOST_VERSION >= 106300  // or 64, need to check
+#  include <boost/serialization/array_wrapper.hpp>
+#endif
+
+#include <DicomFormat/DicomMap.h>
+
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/vector.hpp>
+
+namespace OrthancStone
+{
+  typedef boost::numeric::ublas::matrix<double>   Matrix;
+  typedef boost::numeric::ublas::vector<double>   Vector;
+
+  // logs, debugging...
+  std::ostream& operator<<(std::ostream& s, const Vector& vec);
+  std::ostream& operator<<(std::ostream& s, const Matrix& m);
+
+  namespace LinearAlgebra
+  {
+    void Print(const Vector& v);
+
+    void Print(const Matrix& m);
+
+    bool ParseVector(Vector& target,
+                     const std::string& s);
+
+    bool ParseVector(Vector& target,
+                     const Orthanc::DicomMap& dataset,
+                     const Orthanc::DicomTag& tag);
+
+    inline void AssignVector(Vector& v,
+                             double v1,
+                             double v2)
+    {
+      v.resize(2);
+      v[0] = v1;
+      v[1] = v2;
+    }
+
+
+    inline void AssignVector(Vector& v,
+                             double v1)
+    {
+      v.resize(1);
+      v[0] = v1;
+    }
+
+
+    inline void AssignVector(Vector& v,
+                             double v1,
+                             double v2,
+                             double v3)
+    {
+      v.resize(3);
+      v[0] = v1;
+      v[1] = v2;
+      v[2] = v3;
+    }
+
+
+    inline void AssignVector(Vector& v,
+                             double v1,
+                             double v2,
+                             double v3,
+                             double v4)
+    {
+      v.resize(4);
+      v[0] = v1;
+      v[1] = v2;
+      v[2] = v3;
+      v[3] = v4;
+    }
+
+
+    inline Vector CreateVector(double v1)
+    {
+      Vector v;
+      AssignVector(v, v1);
+      return v;
+    }
+
+    
+    inline Vector CreateVector(double v1,
+                               double v2)
+    {
+      Vector v;
+      AssignVector(v, v1, v2);
+      return v;
+    }
+
+    
+    inline Vector CreateVector(double v1,
+                               double v2,
+                               double v3)
+    {
+      Vector v;
+      AssignVector(v, v1, v2, v3);
+      return v;
+    }
+
+    
+    inline Vector CreateVector(double v1,
+                               double v2,
+                               double v3,
+                               double v4)
+    {
+      Vector v;
+      AssignVector(v, v1, v2, v3, v4);
+      return v;
+    }
+
+
+    inline bool IsNear(double x,
+                       double y,
+                       double threshold)
+    {
+      return fabs(x - y) <= threshold;
+    }
+
+    inline bool IsNear(double x,
+                       double y)
+    {
+      // As most input is read as single-precision numbers, we take the
+      // epsilon machine for float32 into consideration to compare numbers
+      return IsNear(x, y, 10.0 * std::numeric_limits<float>::epsilon());
+    }
+
+    inline bool IsCloseToZero(double x)
+    {
+      return IsNear(x, 0.0);
+    }
+
+    void NormalizeVector(Vector& u);
+
+    void CrossProduct(Vector& result,
+                      const Vector& u,
+                      const Vector& v);
+
+    double DotProduct(const Vector& u, const Vector& v);
+
+    void FillMatrix(Matrix& target,
+                    size_t rows,
+                    size_t columns,
+                    const double values[]);
+
+    void FillVector(Vector& target,
+                    size_t size,
+                    const double values[]);
+
+    void Convert(Matrix& target,
+                 const Vector& source);
+
+    inline Matrix Transpose(const Matrix& a)
+    {
+      return boost::numeric::ublas::trans(a);
+    }
+
+
+    inline Matrix IdentityMatrix(size_t size)
+    {
+      return boost::numeric::ublas::identity_matrix<double>(size);
+    }
+
+
+    inline Matrix ZeroMatrix(size_t size1,
+                             size_t size2)
+    {
+      return boost::numeric::ublas::zero_matrix<double>(size1, size2);
+    }
+
+
+    inline Matrix Product(const Matrix& a,
+                          const Matrix& b)
+    {
+      return boost::numeric::ublas::prod(a, b);
+    }
+
+
+    inline Vector Product(const Matrix& a,
+                          const Vector& b)
+    {
+      return boost::numeric::ublas::prod(a, b);
+    }
+
+
+    inline Matrix Product(const Matrix& a,
+                          const Matrix& b,
+                          const Matrix& c)
+    {
+      return Product(a, Product(b, c));
+    }
+
+
+    inline Matrix Product(const Matrix& a,
+                          const Matrix& b,
+                          const Matrix& c,
+                          const Matrix& d)
+    {
+      return Product(a, Product(b, c, d));
+    }
+
+
+    inline Matrix Product(const Matrix& a,
+                          const Matrix& b,
+                          const Matrix& c,
+                          const Matrix& d,
+                          const Matrix& e)
+    {
+      return Product(a, Product(b, c, d, e));
+    }
+
+
+    inline Vector Product(const Matrix& a,
+                          const Matrix& b,
+                          const Vector& c)
+    {
+      return Product(Product(a, b), c);
+    }
+
+
+    inline Vector Product(const Matrix& a,
+                          const Matrix& b,
+                          const Matrix& c,
+                          const Vector& d)
+    {
+      return Product(Product(a, b, c), d);
+    }
+
+
+    double ComputeDeterminant(const Matrix& a);
+
+    bool IsOrthogonalMatrix(const Matrix& q,
+                            double threshold);
+
+    bool IsOrthogonalMatrix(const Matrix& q);
+
+    bool IsRotationMatrix(const Matrix& r,
+                          double threshold);
+
+    bool IsRotationMatrix(const Matrix& r);
+
+    void InvertUpperTriangularMatrix(Matrix& output,
+                                     const Matrix& k); 
+
+    /**
+     * This function computes the RQ decomposition of a 3x3 matrix,
+     * using Givens rotations. Reference: Algorithm A4.1 (page 579) of
+     * "Multiple View Geometry in Computer Vision" (2nd edition).  The
+     * output matrix "Q" is a rotation matrix, and "R" is upper
+     * triangular.
+     **/
+    void RQDecomposition3x3(Matrix& r,
+                            Matrix& q,
+                            const Matrix& a);
+
+    void InvertMatrix(Matrix& target,
+                      const Matrix& source);
+
+    // This is the same as "InvertMatrix()", but without exception
+    bool InvertMatrixUnsafe(Matrix& target,
+                            const Matrix& source);
+
+    void CreateSkewSymmetric(Matrix& s,
+                             const Vector& v);
+  
+    Matrix InvertScalingTranslationMatrix(const Matrix& t);
+
+    bool IsShearMatrix(const Matrix& shear);  
+
+    Matrix InvertShearMatrix(const Matrix& shear);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/DicomDatasetReader.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,132 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomDatasetReader.h"
+
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+#include <boost/lexical_cast.hpp>
+
+namespace OrthancStone
+{
+  DicomDatasetReader::DicomDatasetReader(const IDicomDataset& dataset) :
+    dataset_(dataset)
+  {
+  }
+  
+
+  std::string DicomDatasetReader::GetStringValue(const DicomPath& path,
+                                                 const std::string& defaultValue) const
+  {
+    std::string s;
+    if (dataset_.GetStringValue(s, path))
+    {
+      return s;
+    }
+    else
+    {
+      return defaultValue;
+    }
+  }
+
+
+  std::string DicomDatasetReader::GetMandatoryStringValue(const DicomPath& path) const
+  {
+    std::string s;
+    if (dataset_.GetStringValue(s, path))
+    {
+      return s;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentTag);
+    }
+  }
+
+
+  template <typename T>
+  static bool GetValueInternal(T& target,
+                               const IDicomDataset& dataset,
+                               const DicomPath& path)
+  {
+    try
+    {
+      std::string s;
+
+      if (dataset.GetStringValue(s, path))
+      {
+        target = boost::lexical_cast<T>(Orthanc::Toolbox::StripSpaces(s));
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+    catch (boost::bad_lexical_cast&)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
+    }
+  }
+
+
+  bool DicomDatasetReader::GetIntegerValue(int& target,
+                                           const DicomPath& path) const
+  {
+    return GetValueInternal<int>(target, dataset_, path);
+  }
+
+
+  bool DicomDatasetReader::GetUnsignedIntegerValue(unsigned int& target,
+                                                   const DicomPath& path) const
+  {
+    int value;
+
+    if (!GetIntegerValue(value, path))
+    {
+      return false;
+    }
+    else if (value >= 0)
+    {
+      target = static_cast<unsigned int>(value);
+      return true;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  bool DicomDatasetReader::GetFloatValue(float& target,
+                                         const DicomPath& path) const
+  {
+    return GetValueInternal<float>(target, dataset_, path);
+  }
+
+
+  bool DicomDatasetReader::GetDoubleValue(double& target,
+                                          const DicomPath& path) const
+  {
+    return GetValueInternal<double>(target, dataset_, path);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/DicomDatasetReader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,61 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IDicomDataset.h"
+
+#include <memory>
+#include <vector>
+
+namespace OrthancStone
+{
+  class DicomDatasetReader : public boost::noncopyable
+  {
+  private:
+    const IDicomDataset&  dataset_;
+
+  public:
+    DicomDatasetReader(const IDicomDataset& dataset);
+
+    const IDicomDataset& GetDataset() const
+    {
+      return dataset_;
+    }
+
+    std::string GetStringValue(const DicomPath& path,
+                               const std::string& defaultValue) const;
+
+    std::string GetMandatoryStringValue(const DicomPath& path) const;
+
+    bool GetIntegerValue(int& target,
+                         const DicomPath& path) const;
+
+    bool GetUnsignedIntegerValue(unsigned int& target,
+                                 const DicomPath& path) const;
+
+    bool GetFloatValue(float& target,
+                       const DicomPath& path) const;
+
+    bool GetDoubleValue(double& target,
+                        const DicomPath& path) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/DicomPath.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,112 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomPath.h"
+
+#include <OrthancException.h>
+
+#include <boost/lexical_cast.hpp>
+
+namespace OrthancStone
+{
+  const DicomPath::Prefix& DicomPath::GetPrefixItem(size_t depth) const
+  {
+    if (depth >= prefix_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      return prefix_[depth];
+    }
+  }
+
+
+  DicomPath::Prefix& DicomPath::GetPrefixItem(size_t depth)
+  {
+    if (depth >= prefix_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      return prefix_[depth];
+    }
+  }
+
+
+  DicomPath::DicomPath(const Orthanc::DicomTag& sequence,
+                       size_t index,
+                       const Orthanc::DicomTag& tag) :
+    finalTag_(tag)
+  {
+    AddToPrefix(sequence, index);
+  }
+
+
+  DicomPath::DicomPath(const Orthanc::DicomTag& sequence1,
+                       size_t index1,
+                       const Orthanc::DicomTag& sequence2,
+                       size_t index2,
+                       const Orthanc::DicomTag& tag) :
+    finalTag_(tag)
+  {
+    AddToPrefix(sequence1, index1);
+    AddToPrefix(sequence2, index2);
+  }
+
+
+  DicomPath::DicomPath(const Orthanc::DicomTag& sequence1,
+                       size_t index1,
+                       const Orthanc::DicomTag& sequence2,
+                       size_t index2,
+                       const Orthanc::DicomTag& sequence3,
+                       size_t index3,
+                       const Orthanc::DicomTag& tag) :
+    finalTag_(tag)
+  {
+    AddToPrefix(sequence1, index1);
+    AddToPrefix(sequence2, index2);
+    AddToPrefix(sequence3, index3);
+  }
+
+
+  static std::string FormatHexadecimal(const Orthanc::DicomTag& tag)
+  {
+    char buf[16];
+    sprintf(buf, "(%04x,%04x)", tag.GetGroup(), tag.GetElement());
+    return buf;
+  }
+  
+
+  std::string DicomPath::Format() const
+  {
+    std::string s;
+      
+    for (size_t i = 0; i < GetPrefixLength(); i++)
+    {
+      s += (FormatHexadecimal(GetPrefixTag(i)) + " / " +
+            boost::lexical_cast<std::string>(i) + " / ");
+    }
+
+    return s + FormatHexadecimal(GetFinalTag());
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/DicomPath.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,106 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <DicomFormat/DicomTag.h>
+
+#include <vector>
+#include <stddef.h>
+
+namespace OrthancStone
+{
+  class DicomPath
+  {
+  private:
+    typedef std::pair<Orthanc::DicomTag, size_t>  Prefix;
+
+    std::vector<Prefix>  prefix_;
+    Orthanc::DicomTag    finalTag_;
+
+    const Prefix& GetPrefixItem(size_t depth) const;
+
+    Prefix& GetPrefixItem(size_t depth);
+
+  public:
+    DicomPath(const Orthanc::DicomTag& finalTag) :
+      finalTag_(finalTag)
+    {
+    }
+
+    DicomPath(const Orthanc::DicomTag& sequence,
+              size_t index,
+              const Orthanc::DicomTag& tag);
+
+    DicomPath(const Orthanc::DicomTag& sequence1,
+              size_t index1,
+              const Orthanc::DicomTag& sequence2,
+              size_t index2,
+              const Orthanc::DicomTag& tag);
+
+    DicomPath(const Orthanc::DicomTag& sequence1,
+              size_t index1,
+              const Orthanc::DicomTag& sequence2,
+              size_t index2,
+              const Orthanc::DicomTag& sequence3,
+              size_t index3,
+              const Orthanc::DicomTag& tag);
+
+    void AddToPrefix(const Orthanc::DicomTag& tag,
+                     size_t position)
+    {
+      prefix_.push_back(std::make_pair(tag, position));
+    }
+
+    size_t GetPrefixLength() const
+    {
+      return prefix_.size();
+    }
+    
+    Orthanc::DicomTag GetPrefixTag(size_t depth) const
+    {
+      return GetPrefixItem(depth).first;
+    }
+
+    size_t GetPrefixIndex(size_t depth) const
+    {
+      return GetPrefixItem(depth).second;
+    }
+
+    void SetPrefixIndex(size_t depth,
+                        size_t value)
+    {
+      GetPrefixItem(depth).second = value;
+    }
+    
+    const Orthanc::DicomTag& GetFinalTag() const
+    {
+      return finalTag_;
+    }
+
+    void SetFinalTag(const Orthanc::DicomTag& tag)
+    {
+      finalTag_ = tag;
+    }
+
+    std::string Format() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/FullOrthancDataset.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,203 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "FullOrthancDataset.h"
+
+#include <OrthancException.h>
+
+#include <stdio.h>
+#include <cassert>
+
+namespace OrthancStone
+{
+  static const Json::Value* AccessTag(const Json::Value& dataset,
+                                      const Orthanc::DicomTag& tag) 
+  {
+    if (dataset.type() != Json::objectValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    char name[16];
+    sprintf(name, "%04x,%04x", tag.GetGroup(), tag.GetElement());
+
+    if (!dataset.isMember(name))
+    {
+      return NULL;
+    }
+
+    const Json::Value& value = dataset[name];
+    if (value.type() != Json::objectValue ||
+        !value.isMember("Name") ||
+        !value.isMember("Type") ||
+        !value.isMember("Value") ||
+        value["Name"].type() != Json::stringValue ||
+        value["Type"].type() != Json::stringValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    return &value;
+  }
+
+
+  static const Json::Value& GetSequenceContent(const Json::Value& sequence)
+  {
+    assert(sequence.type() == Json::objectValue);
+    assert(sequence.isMember("Type"));
+    assert(sequence.isMember("Value"));
+
+    const Json::Value& value = sequence["Value"];
+      
+    if (sequence["Type"].asString() != "Sequence" ||
+        value.type() != Json::arrayValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    else
+    {
+      return value;
+    }
+  }
+
+
+  static bool GetStringInternal(std::string& result,
+                                const Json::Value& tag)
+  {
+    assert(tag.type() == Json::objectValue);
+    assert(tag.isMember("Type"));
+    assert(tag.isMember("Value"));
+
+    const Json::Value& value = tag["Value"];
+      
+    if (tag["Type"].asString() != "String" ||
+        value.type() != Json::stringValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    else
+    {
+      result = value.asString();
+      return true;
+    }
+  }
+
+
+  const Json::Value* FullOrthancDataset::LookupPath(const DicomPath& path) const
+  {
+    const Json::Value* content = &root_;
+                                  
+    for (unsigned int depth = 0; depth < path.GetPrefixLength(); depth++)
+    {
+      const Json::Value* sequence = AccessTag(*content, path.GetPrefixTag(depth));
+      if (sequence == NULL)
+      {
+        return NULL;
+      }
+
+      const Json::Value& nextContent = GetSequenceContent(*sequence);
+
+      size_t index = path.GetPrefixIndex(depth);
+      if (index >= nextContent.size())
+      {
+        return NULL;
+      }
+      else
+      {
+        content = &nextContent[static_cast<Json::Value::ArrayIndex>(index)];
+      }
+    }
+
+    return AccessTag(*content, path.GetFinalTag());
+  }
+
+
+  void FullOrthancDataset::CheckRoot() const
+  {
+    if (root_.type() != Json::objectValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  FullOrthancDataset::FullOrthancDataset(IOrthancConnection& orthanc,
+                                         const std::string& uri)
+  {
+    IOrthancConnection::RestApiGet(root_, orthanc, uri);
+    CheckRoot();
+  }
+
+
+  FullOrthancDataset::FullOrthancDataset(const std::string& content)
+  {
+    IOrthancConnection::ParseJson(root_, content);
+    CheckRoot();
+  }
+
+
+  FullOrthancDataset::FullOrthancDataset(const void* content,
+                                         size_t size)
+  {
+    IOrthancConnection::ParseJson(root_, content, size);
+    CheckRoot();
+  }
+
+
+  FullOrthancDataset::FullOrthancDataset(const Json::Value& root) :
+    root_(root)
+  {
+    CheckRoot();
+  }
+
+
+  bool FullOrthancDataset::GetStringValue(std::string& result,
+                                          const DicomPath& path) const
+  {
+    const Json::Value* value = LookupPath(path);
+
+    if (value == NULL)
+    {
+      return false;
+    }
+    else
+    {
+      return GetStringInternal(result, *value);
+    }
+  }
+
+
+  bool FullOrthancDataset::GetSequenceSize(size_t& size,
+                                           const DicomPath& path) const
+  {
+    const Json::Value* sequence = LookupPath(path);
+
+    if (sequence == NULL)
+    {
+      return false;
+    }
+    else
+    {
+      size = GetSequenceContent(*sequence).size();
+      return true;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/FullOrthancDataset.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,62 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IOrthancConnection.h"
+#include "IDicomDataset.h"
+
+#include <json/value.h>
+
+namespace OrthancStone
+{
+  class FullOrthancDataset : public IDicomDataset
+  {
+  private:
+    Json::Value   root_;
+
+    const Json::Value* LookupPath(const DicomPath& path) const;
+
+    void CheckRoot() const;
+
+  public:
+    FullOrthancDataset(IOrthancConnection& orthanc,
+                       const std::string& uri);
+
+    FullOrthancDataset(const std::string& content);
+
+    FullOrthancDataset(const void* content,
+                       size_t size);
+
+    FullOrthancDataset(const Json::Value& root);
+
+    virtual bool GetStringValue(std::string& result,
+                                const DicomPath& path) const;
+
+    virtual bool GetSequenceSize(size_t& size,
+                                 const DicomPath& path) const;
+
+    FullOrthancDataset* Clone() const
+    {
+      return new FullOrthancDataset(this->root_);
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/IDicomDataset.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,44 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "DicomPath.h"
+
+#include <boost/noncopyable.hpp>
+#include <string>
+
+namespace OrthancStone
+{
+  class IDicomDataset : public boost::noncopyable
+  {
+  public:
+    virtual ~IDicomDataset()
+    {
+    }
+
+    virtual bool GetStringValue(std::string& result,
+                                const DicomPath& path) const = 0;
+
+    virtual bool GetSequenceSize(size_t& size,
+                                 const DicomPath& path) const = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/IOrthancConnection.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,86 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "IOrthancConnection.h"
+
+#include <OrthancException.h>
+
+#include <json/reader.h>
+
+namespace OrthancStone
+{
+  void IOrthancConnection::ParseJson(Json::Value& result,
+                                     const std::string& content)
+  {
+    Json::Reader reader;
+    
+    if (!reader.parse(content, result))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  void IOrthancConnection::ParseJson(Json::Value& result,
+                                     const void* content,
+                                     size_t size)
+  {
+    Json::Reader reader;
+    
+    if (!reader.parse(reinterpret_cast<const char*>(content),
+                      reinterpret_cast<const char*>(content) + size, result))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  void IOrthancConnection::RestApiGet(Json::Value& result,
+                                      IOrthancConnection& orthanc,
+                                      const std::string& uri)
+  {
+    std::string content;
+    orthanc.RestApiGet(content, uri);
+    ParseJson(result, content);
+  }
+
+
+  void IOrthancConnection::RestApiPost(Json::Value& result,
+                                       IOrthancConnection& orthanc,
+                                       const std::string& uri,
+                                       const std::string& body)
+  {
+    std::string content;
+    orthanc.RestApiPost(content, uri, body);
+    ParseJson(result, content);
+  }
+
+
+  void IOrthancConnection::RestApiPut(Json::Value& result,
+                                      IOrthancConnection& orthanc,
+                                      const std::string& uri,
+                                      const std::string& body)
+  {
+    std::string content;
+    orthanc.RestApiPut(content, uri, body);
+    ParseJson(result, content);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/IOrthancConnection.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,73 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "DicomPath.h"
+
+#include <boost/noncopyable.hpp>
+#include <string>
+#include <json/value.h>
+
+namespace OrthancStone
+{
+  class IOrthancConnection : public boost::noncopyable
+  {
+  public:
+    virtual ~IOrthancConnection()
+    {
+    }
+
+    virtual void RestApiGet(std::string& result,
+                            const std::string& uri) = 0;
+
+    virtual void RestApiPost(std::string& result,
+                             const std::string& uri,
+                             const std::string& body) = 0;
+
+    virtual void RestApiPut(std::string& result,
+                            const std::string& uri,
+                            const std::string& body) = 0;
+
+    virtual void RestApiDelete(const std::string& uri) = 0;
+
+    static void ParseJson(Json::Value& result,
+                          const std::string& content);
+
+    static void ParseJson(Json::Value& result,
+                          const void* content,
+                          size_t size);
+
+    static void RestApiGet(Json::Value& result,
+                           IOrthancConnection& orthanc,
+                           const std::string& uri);
+
+    static void RestApiPost(Json::Value& result,
+                            IOrthancConnection& orthanc,
+                            const std::string& uri,
+                            const std::string& body);
+
+    static void RestApiPut(Json::Value& result,
+                           IOrthancConnection& orthanc,
+                           const std::string& uri,
+                           const std::string& body);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/NOTES.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,3 @@
+The files from this folder were previously (up to Orthanc <= 1.7.1)
+contained in the folder "Plugins/Samples/Common/" from the Orthanc
+source distribution.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/OrthancHttpConnection.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,96 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OrthancHttpConnection.h"
+
+namespace OrthancStone
+{
+  void OrthancHttpConnection::Setup()
+  {
+    url_ = client_.GetUrl();
+
+    // Don't follow 3xx HTTP (avoid redirections to "unsupported.png" in Orthanc)
+    client_.SetRedirectionFollowed(false);  
+  }
+
+
+  OrthancHttpConnection::OrthancHttpConnection() :
+    client_(Orthanc::WebServiceParameters(), "")
+  {
+    Setup();
+  }
+
+
+  OrthancHttpConnection::OrthancHttpConnection(const Orthanc::WebServiceParameters& parameters) :
+    client_(parameters, "")
+  {
+    Setup();
+  }
+
+
+  void OrthancHttpConnection::RestApiGet(std::string& result,
+                                         const std::string& uri)
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+
+    client_.SetMethod(Orthanc::HttpMethod_Get);
+    client_.SetUrl(url_ + uri);
+    client_.ApplyAndThrowException(result);
+  }
+
+
+  void OrthancHttpConnection::RestApiPost(std::string& result,
+                                          const std::string& uri,
+                                          const std::string& body)
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+
+    client_.SetMethod(Orthanc::HttpMethod_Post);
+    client_.SetUrl(url_ + uri);
+    client_.SetBody(body);
+    client_.ApplyAndThrowException(result);
+  }
+
+
+  void OrthancHttpConnection::RestApiPut(std::string& result,
+                                         const std::string& uri,
+                                         const std::string& body)
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+
+    client_.SetMethod(Orthanc::HttpMethod_Put);
+    client_.SetUrl(url_ + uri);
+    client_.SetBody(body);
+    client_.ApplyAndThrowException(result);
+  }
+
+
+  void OrthancHttpConnection::RestApiDelete(const std::string& uri)
+  {
+    boost::mutex::scoped_lock lock(mutex_);
+
+    std::string result;
+
+    client_.SetMethod(Orthanc::HttpMethod_Delete);
+    client_.SetUrl(url_ + uri);
+    client_.ApplyAndThrowException(result);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/OrthancHttpConnection.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,60 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IOrthancConnection.h"
+
+#include <HttpClient.h>
+
+#include <boost/thread/mutex.hpp>
+
+namespace OrthancStone
+{
+  // This class is thread-safe
+  class OrthancHttpConnection : public IOrthancConnection
+  {
+  private:
+    boost::mutex         mutex_;
+    Orthanc::HttpClient  client_;
+    std::string          url_;
+
+    void Setup();
+
+  public:
+    OrthancHttpConnection();
+
+    OrthancHttpConnection(const Orthanc::WebServiceParameters& parameters);
+
+    virtual void RestApiGet(std::string& result,
+                            const std::string& uri);
+
+    virtual void RestApiPost(std::string& result,
+                             const std::string& uri,
+                             const std::string& body);
+
+    virtual void RestApiPut(std::string& result,
+                            const std::string& uri,
+                            const std::string& body);
+
+    virtual void RestApiDelete(const std::string& uri);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/SimplifiedOrthancDataset.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,143 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SimplifiedOrthancDataset.h"
+
+namespace OrthancStone
+{
+  const Json::Value* SimplifiedOrthancDataset::LookupPath(const DicomPath& path) const
+  {
+    const Json::Value* content = &root_;
+                                  
+    for (unsigned int depth = 0; depth < path.GetPrefixLength(); depth++)
+    {
+      const char* name = path.GetPrefixTag(depth).GetName();
+      if (content->type() != Json::objectValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+
+      if (!content->isMember(name))
+      {
+        return NULL;
+      }
+
+      const Json::Value& sequence = (*content) [name];
+      if (sequence.type() != Json::arrayValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+      }
+
+      size_t index = path.GetPrefixIndex(depth);
+      if (index >= sequence.size())
+      {
+        return NULL;
+      }
+      else
+      {
+        content = &sequence[static_cast<Json::Value::ArrayIndex>(index)];
+      }
+    }
+
+    const char* name = path.GetFinalTag().GetName();
+
+    if (content->type() != Json::objectValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    if (!content->isMember(name))
+    {
+      return NULL;
+    }
+    else
+    {
+      return &((*content) [name]);
+    }
+  }
+
+
+  void SimplifiedOrthancDataset::CheckRoot() const
+  {
+    if (root_.type() != Json::objectValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+  }
+
+
+  SimplifiedOrthancDataset::SimplifiedOrthancDataset(IOrthancConnection& orthanc,
+                                                     const std::string& uri)
+  {
+    IOrthancConnection::RestApiGet(root_, orthanc, uri);
+    CheckRoot();
+  }
+
+
+  SimplifiedOrthancDataset::SimplifiedOrthancDataset(const std::string& content)
+  {
+    IOrthancConnection::ParseJson(root_, content);
+    CheckRoot();
+  }
+
+
+  bool SimplifiedOrthancDataset::GetStringValue(std::string& result,
+                                                const DicomPath& path) const
+  {
+    const Json::Value* value = LookupPath(path);
+
+    if (value == NULL)
+    {
+      return false;
+    }
+    else if (value->type() != Json::stringValue)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    else
+    {
+      result = value->asString();
+      return true;
+    }
+  }
+
+
+  bool SimplifiedOrthancDataset::GetSequenceSize(size_t& size,
+                                                 const DicomPath& path) const
+  {
+    const Json::Value* sequence = LookupPath(path);
+
+    if (sequence == NULL)
+    {
+      // Inexistent path
+      return false;
+    }
+    else if (sequence->type() != Json::arrayValue)
+    {
+      // Not a sequence
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    else
+    {
+      size = sequence->size();
+      return true;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/SimplifiedOrthancDataset.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,50 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "IOrthancConnection.h"
+#include "IDicomDataset.h"
+
+namespace OrthancStone
+{
+  class SimplifiedOrthancDataset : public IDicomDataset
+  {
+  private:
+    Json::Value   root_;
+
+    const Json::Value* LookupPath(const DicomPath& path) const;
+
+    void CheckRoot() const;
+
+  public:
+    SimplifiedOrthancDataset(IOrthancConnection& orthanc,
+                             const std::string& uri);
+
+    SimplifiedOrthancDataset(const std::string& content);
+
+    virtual bool GetStringValue(std::string& result,
+                                const DicomPath& path) const;
+
+    virtual bool GetSequenceSize(size_t& size,
+                                 const DicomPath& path) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/ParsedDicomCache.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,143 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ParsedDicomCache.h"
+
+namespace OrthancStone
+{
+  class ParsedDicomCache::Item : public Orthanc::ICacheable
+  {
+  private:
+    std::unique_ptr<Orthanc::ParsedDicomFile>  dicom_;
+    size_t                                   fileSize_;
+    bool                                     hasPixelData_;
+    
+  public:
+    Item(Orthanc::ParsedDicomFile* dicom,
+         size_t fileSize,
+         bool hasPixelData) :
+      dicom_(dicom),
+      fileSize_(fileSize),
+      hasPixelData_(hasPixelData)
+    {
+      if (dicom == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+      }
+    }
+           
+    virtual size_t GetMemoryUsage() const
+    {
+      return fileSize_;
+    }
+
+    Orthanc::ParsedDicomFile& GetDicom() const
+    {
+      assert(dicom_.get() != NULL);
+      return *dicom_;
+    }
+
+    bool HasPixelData() const
+    {
+      return hasPixelData_;
+    }
+  };
+    
+
+  std::string ParsedDicomCache::GetIndex(unsigned int bucket,
+                                         const std::string& bucketKey)
+  {
+    return boost::lexical_cast<std::string>(bucket) + "|" + bucketKey;
+  }
+  
+
+  void ParsedDicomCache::Acquire(unsigned int bucket,
+                                 const std::string& bucketKey,
+                                 Orthanc::ParsedDicomFile* dicom,
+                                 size_t fileSize,
+                                 bool hasPixelData)
+  {
+    LOG(TRACE) << "new item stored in cache: bucket " << bucket << ", key " << bucketKey;
+    cache_.Acquire(GetIndex(bucket, bucketKey), new Item(dicom, fileSize, hasPixelData));
+  }
+
+  
+  ParsedDicomCache::Reader::Reader(ParsedDicomCache& cache,
+                                   unsigned int bucket,
+                                   const std::string& bucketKey) :
+    /**
+     * The "DcmFileFormat" object cannot be accessed from multiple
+     * threads, even if using only getters. An unique lock (mutex) is
+     * mandatory.
+     **/
+    accessor_(cache.cache_, GetIndex(bucket, bucketKey), true /* unique */)
+  {
+    if (accessor_.IsValid())
+    {
+      LOG(TRACE) << "accessing item within cache: bucket " << bucket << ", key " << bucketKey;
+      item_ = &dynamic_cast<Item&>(accessor_.GetValue());
+    }
+    else
+    {
+      LOG(TRACE) << "missing item within cache: bucket " << bucket << ", key " << bucketKey;
+      item_ = NULL;
+    }
+  }
+
+
+  bool ParsedDicomCache::Reader::HasPixelData() const
+  {
+    if (item_ == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return item_->HasPixelData();
+    }
+  }
+
+  
+  Orthanc::ParsedDicomFile& ParsedDicomCache::Reader::GetDicom() const
+  {
+    if (item_ == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return item_->GetDicom();
+    }
+  }
+
+  
+  size_t ParsedDicomCache::Reader::GetFileSize() const
+  {
+    if (item_ == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return item_->GetMemoryUsage();
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/ParsedDicomCache.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,80 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <Cache/MemoryObjectCache.h>
+#include <DicomParsing/ParsedDicomFile.h>
+
+namespace OrthancStone
+{
+  class ParsedDicomCache : public boost::noncopyable
+  {
+  private:
+    class Item;
+
+    static std::string GetIndex(unsigned int bucket,
+                                const std::string& bucketKey);
+    
+    Orthanc::MemoryObjectCache  cache_;
+
+  public:
+    ParsedDicomCache(size_t size)
+    {
+      cache_.SetMaximumSize(size);
+    }
+
+    void Invalidate(unsigned int bucket,
+                    const std::string& bucketKey)
+    {
+      cache_.Invalidate(GetIndex(bucket, bucketKey));
+    }
+    
+    void Acquire(unsigned int bucket,
+                 const std::string& bucketKey,
+                 Orthanc::ParsedDicomFile* dicom,
+                 size_t fileSize,
+                 bool hasPixelData);
+
+    class Reader : public boost::noncopyable
+    {
+    private:
+      Orthanc::MemoryObjectCache::Accessor accessor_;
+      Item*                                item_;
+
+    public:
+      Reader(ParsedDicomCache& cache,
+             unsigned int bucket,
+             const std::string& bucketKey);
+
+      bool IsValid() const
+      {
+        return item_ != NULL;
+      }
+
+      bool HasPixelData() const;
+
+      Orthanc::ParsedDicomFile& GetDicom() const;
+
+      size_t GetFileSize() const;
+    };
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/ParsedDicomDataset.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,104 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ParsedDicomDataset.h"
+
+#include <dcmtk/dcmdata/dcfilefo.h>
+
+namespace OrthancStone
+{
+  static DcmItem* LookupPath(Orthanc::ParsedDicomFile& dicom,
+                             const DicomPath& path)
+  {
+    DcmItem* node = dicom.GetDcmtkObject().getDataset();
+      
+    for (size_t i = 0; i < path.GetPrefixLength(); i++)
+    {
+      const Orthanc::DicomTag& tmp = path.GetPrefixTag(i);
+      DcmTagKey tag(tmp.GetGroup(), tmp.GetElement());
+
+      DcmSequenceOfItems* sequence = NULL;
+      if (!node->findAndGetSequence(tag, sequence).good() ||
+          sequence == NULL)
+      {
+        return NULL;
+      }
+
+      unsigned long pos = path.GetPrefixIndex(i);
+      if (pos >= sequence->card())
+      {
+        return NULL;
+      }
+
+      node = sequence->getItem(pos);
+      if (node == NULL)
+      {
+        return NULL;
+      }
+    }
+
+    return node;
+  }
+
+    
+  bool ParsedDicomDataset::GetStringValue(std::string& result,
+                                          const DicomPath& path) const
+  {
+    DcmItem* node = LookupPath(dicom_, path);
+      
+    if (node != NULL)
+    {
+      DcmTagKey tag(path.GetFinalTag().GetGroup(), path.GetFinalTag().GetElement());
+
+      const char* s = NULL;
+      if (node->findAndGetString(tag, s).good() &&
+          s != NULL)
+      {
+        result.assign(s);
+        return true;
+      }
+    }
+
+    return false;
+  }
+
+
+  bool ParsedDicomDataset::GetSequenceSize(size_t& size,
+                                           const DicomPath& path) const
+  {
+    DcmItem* node = LookupPath(dicom_, path);
+      
+    if (node != NULL)
+    {
+      DcmTagKey tag(path.GetFinalTag().GetGroup(), path.GetFinalTag().GetElement());
+
+      DcmSequenceOfItems* s = NULL;
+      if (node->findAndGetSequence(tag, s).good() &&
+          s != NULL)
+      {
+        size = s->card();
+        return true;
+      }
+    }
+
+    return false;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/ParsedDicomDataset.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,47 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "OrthancDatasets/IDicomDataset.h"
+
+#include <DicomParsing/ParsedDicomFile.h>
+
+namespace OrthancStone
+{
+  class ParsedDicomDataset : public IDicomDataset
+  {
+  private:
+    Orthanc::ParsedDicomFile&  dicom_;
+
+  public:
+    ParsedDicomDataset(Orthanc::ParsedDicomFile& dicom) :
+      dicom_(dicom)
+    {
+    }
+
+    virtual bool GetStringValue(std::string& result,
+                                const DicomPath& path) const ORTHANC_OVERRIDE;
+
+    virtual bool GetSequenceSize(size_t& size,
+                                 const DicomPath& path) const ORTHANC_OVERRIDE;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/PixelTestPatterns.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,130 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+// PixelTestPatterns.h
+
+#pragma once
+
+#include "../StoneException.h"
+
+#include <Images/ImageAccessor.h>
+
+#include <string>
+#include <stdint.h>
+#include <math.h>
+
+namespace OrthancStone
+{
+  namespace PixelTestPatterns
+  {
+    template<typename T, typename U>
+    inline uint8_t byteAddClip(T v1, U v2)
+    {
+      double tmp = static_cast<double>(v1) + static_cast<double>(v2);
+      if (tmp > 255.0)
+        tmp = 255;
+      if (tmp < 0.0)
+        tmp = 0;
+      return static_cast<uint8_t>(tmp+0.5);
+    }
+
+    // fills the area with a horizontal gradient.
+    // leftmost pixels are filled with r0 g0 b0
+    // rightmost pixels are filled with r1 g1 b1
+    // linear interpolation in-between
+    inline void fillWithHGradient(Orthanc::ImageAccessor& target,
+      uint8_t r0, uint8_t g0, uint8_t b0,
+      uint8_t r1, uint8_t g1, uint8_t b1)
+    {
+      if (target.GetFormat() != Orthanc::PixelFormat_RGBA32) {
+        ORTHANC_ASSERT(false, "Wrong pixel format");
+      }
+      const unsigned int width = target.GetWidth();
+      const unsigned int height = target.GetHeight();
+
+      ORTHANC_ASSERT(width > 0);
+      ORTHANC_ASSERT(height > 0);
+
+      double invWidth = 1.0 / static_cast<double>(target.GetWidth());
+      double rIncr = (static_cast<double>(r1) - static_cast<double>(r0))* invWidth;
+      double gIncr = (static_cast<double>(g1) - static_cast<double>(g0))* invWidth;
+      double bIncr = (static_cast<double>(b1) - static_cast<double>(b0))* invWidth;
+
+      for (unsigned int y = 0; y < height; y++)
+      {
+        uint8_t r = r0;
+        uint8_t g = g0;
+        uint8_t b = b0;
+        uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
+        for (unsigned int x = 0; x < width; x++)
+        {
+          q[0] = r;
+          q[1] = g;
+          q[2] = b;
+          q[3] = 255;
+          r = byteAddClip(r, rIncr);
+          g = byteAddClip(g, gIncr);
+          b = byteAddClip(b, bIncr);
+          q += 4;
+        }
+      }
+    }
+
+    inline void fillWithVGradient(Orthanc::ImageAccessor& target,
+      uint8_t r0, uint8_t g0, uint8_t b0,
+      uint8_t r1, uint8_t g1, uint8_t b1)
+    {
+      if (target.GetFormat() != Orthanc::PixelFormat_RGBA32) {
+        ORTHANC_ASSERT(false, "Wrong pixel format");
+      }
+      const unsigned int width = target.GetWidth();
+      const unsigned int height = target.GetHeight();
+
+      ORTHANC_ASSERT(width > 0);
+      ORTHANC_ASSERT(height > 0);
+
+      double invHeight = 1.0 / static_cast<double>(target.GetHeight());
+      double rIncr = (static_cast<double>(r1) - static_cast<double>(r0))* invHeight;
+      double gIncr = (static_cast<double>(g1) - static_cast<double>(g0))* invHeight;
+      double bIncr = (static_cast<double>(b1) - static_cast<double>(b0))* invHeight;
+
+      uint8_t r = r0;
+      uint8_t g = g0;
+      uint8_t b = b0;
+      for (unsigned int y = 0; y < height; y++)
+      {
+        uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y));
+        for (unsigned int x = 0; x < width; x++)
+        {
+          q[0] = r;
+          q[1] = g;
+          q[2] = b;
+          q[3] = 255;
+          q += 4;
+        }
+        r = byteAddClip(r, rIncr);
+        g = byteAddClip(g, gIncr);
+        b = byteAddClip(b, bIncr);
+      }
+    }
+
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/ShearWarpProjectiveTransform.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,664 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ShearWarpProjectiveTransform.h"
+
+#include "ImageGeometry.h"
+#include "Extent2D.h"
+#include "FiniteProjectiveCamera.h"
+#include "GeometryToolbox.h"
+
+#include <Images/PixelTraits.h>
+#include <Images/ImageProcessing.h>
+#include <OrthancException.h>
+#include <Logging.h>
+
+#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/math/special_functions/round.hpp>
+#include <cassert>
+
+
+namespace OrthancStone
+{
+  static bool IsValidShear(const Matrix& M_shear)
+  {
+    return (LinearAlgebra::IsCloseToZero(M_shear(0, 1)) &&
+            LinearAlgebra::IsCloseToZero(M_shear(1, 0)) &&
+            LinearAlgebra::IsCloseToZero(M_shear(2, 0)) &&
+            LinearAlgebra::IsCloseToZero(M_shear(2, 1)) &&
+            LinearAlgebra::IsNear(1.0,   M_shear(2, 2)) &&
+            LinearAlgebra::IsCloseToZero(M_shear(2, 3)) &&
+            LinearAlgebra::IsCloseToZero(M_shear(3, 0)) &&
+            LinearAlgebra::IsCloseToZero(M_shear(3, 1)) &&
+            LinearAlgebra::IsNear(1.0,   M_shear(3, 3)));
+  }
+
+
+  static void ComputeShearParameters(double& scaling,
+                                     double& offsetX,
+                                     double& offsetY,
+                                     const Matrix& shear,
+                                     double z)
+  {
+    // Check out: ../../Resources/Computations/ComputeShearParameters.py
+    
+    if (!LinearAlgebra::IsShearMatrix(shear))
+    {
+      LOG(ERROR) << "Not a valid shear matrix";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+    
+    scaling = 1.0 / (shear(3,2) * z + 1.0);
+    offsetX = shear(0,2) * z * scaling;
+    offsetY = shear(1,2) * z * scaling;
+  }  
+
+
+  ShearWarpProjectiveTransform::
+  ShearWarpProjectiveTransform(const Matrix& M_view,
+                               //const Matrix& P,           // Permutation applied to the volume
+                               unsigned int volumeWidth,
+                               unsigned int volumeHeight,
+                               unsigned int volumeDepth,
+                               double pixelSpacingX,
+                               double pixelSpacingY,
+                               unsigned int imageWidth,
+                               unsigned int imageHeight)
+  {
+    eye_o.resize(4);
+
+    {
+      // Find back the camera center given the "M_view" matrix
+      const double m11 = M_view(0, 0);
+      const double m12 = M_view(0, 1);
+      const double m13 = M_view(0, 2);
+      const double m14 = M_view(0, 3);
+      const double m21 = M_view(1, 0);
+      const double m22 = M_view(1, 1);
+      const double m23 = M_view(1, 2);
+      const double m24 = M_view(1, 3);
+      const double m41 = M_view(3, 0);
+      const double m42 = M_view(3, 1);
+      const double m43 = M_view(3, 2);
+      const double m44 = M_view(3, 3);
+
+      // Equations (A.8) to (A.11) on page 203. Also check out
+      // "Finding the camera center" in "Multiple View Geometry in
+      // Computer Vision - 2nd edition", page 163.
+      const double vx[9] = { m12, m13, m14, m22, m23, m24, m42, m43, m44 };
+      const double vy[9] = { m11, m13, m14, m21, m23, m24, m41, m43, m44 };
+      const double vz[9] = { m11, m12, m14, m21, m22, m24, m41, m42, m44 };
+      const double vw[9] = { m11, m12, m13, m21, m22, m23, m41, m42, m43 };
+
+      Matrix m;
+
+      LinearAlgebra::FillMatrix(m, 3, 3, vx);
+      eye_o[0] = -LinearAlgebra::ComputeDeterminant(m);
+
+      LinearAlgebra::FillMatrix(m, 3, 3, vy);
+      eye_o[1] = LinearAlgebra::ComputeDeterminant(m);
+
+      LinearAlgebra::FillMatrix(m, 3, 3, vz);
+      eye_o[2] = -LinearAlgebra::ComputeDeterminant(m);
+
+      LinearAlgebra::FillMatrix(m, 3, 3, vw);
+      eye_o[3] = LinearAlgebra::ComputeDeterminant(m);
+
+      if (LinearAlgebra::IsCloseToZero(eye_o[3]))
+      {
+        LOG(ERROR) << "The shear-warp projective transform is not applicable to affine cameras";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+
+#if 0
+    // Assume "T_shift = I" (the eye does not lie on plane k = 0)
+    const Matrix T_shift = LinearAlgebra::IdentityMatrix(4);
+    
+    // Equation (A.13) on page 204, given that the inverse of a
+    // permutation matrix is its transpose (TODO CHECK). If no T_shift
+    // or permutation P is applied, M'_view == M_view
+    const Matrix MM_view = LinearAlgebra::Product(
+      M_view,
+      LinearAlgebra::Transpose(P),
+      LinearAlgebra::InvertScalingTranslationMatrix(T_shift));
+#else
+    // This is a shortcut, as we take "T_shift = I" and "P = I"
+    const Matrix MM_view = M_view;
+#endif
+
+    // Equation (A.14) on page 207
+    Matrix MM_shear = LinearAlgebra::IdentityMatrix(4);
+    MM_shear(0, 2) = -eye_o[0] / eye_o[2];
+    MM_shear(1, 2) = -eye_o[1] / eye_o[2];
+    MM_shear(3, 2) = -eye_o[3] / eye_o[2];
+
+
+    // Compute the extent of the intermediate image
+    Extent2D extent;
+    double maxScaling = 1;
+
+    {
+      // Compute the shearing factors of the two extreme planes of the
+      // volume (z=0 and z=volumeDepth)
+      double scaling, offsetX, offsetY;
+      ComputeShearParameters(scaling, offsetX, offsetY, MM_shear, 0);
+
+      if (scaling > 0)
+      {
+        extent.AddPoint(offsetX, offsetY);
+        extent.AddPoint(offsetX + static_cast<double>(volumeWidth) * scaling,
+                        offsetY + static_cast<double>(volumeHeight) * scaling);
+
+        if (scaling > maxScaling)
+        {
+          maxScaling = scaling;
+        }
+      }
+
+      ComputeShearParameters(scaling, offsetX, offsetY, MM_shear, volumeDepth);
+
+      if (scaling > 0)
+      {
+        extent.AddPoint(offsetX, offsetY);
+        extent.AddPoint(offsetX + static_cast<double>(volumeWidth) * scaling,
+                        offsetY + static_cast<double>(volumeHeight) * scaling);
+
+        if (scaling > maxScaling)
+        {
+          maxScaling = scaling;
+        }
+      }
+    }
+      
+    if (LinearAlgebra::IsCloseToZero(extent.GetWidth()) ||
+        LinearAlgebra::IsCloseToZero(extent.GetHeight()))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    intermediateWidth_ = 
+      static_cast<unsigned int>(std::ceil(extent.GetWidth() / maxScaling));
+    intermediateHeight_ = 
+      static_cast<unsigned int>(std::ceil(extent.GetHeight() / maxScaling));
+
+    // This is the product "T * S" in Equation (A.16) on page 209
+    Matrix TS = LinearAlgebra::Product(
+      GeometryToolbox::CreateTranslationMatrix(
+        static_cast<double>(intermediateWidth_) / 2.0,
+        static_cast<double>(intermediateHeight_) / 2.0, 0),
+      GeometryToolbox::CreateScalingMatrix(
+        1.0 / maxScaling, 1.0 / maxScaling, 1),
+      GeometryToolbox::CreateTranslationMatrix(
+        -extent.GetCenterX(), -extent.GetCenterY(), 0));
+    
+    // This is Equation (A.16) on page 209. WARNING: There is an
+    // error in Lacroute's thesis: "inv(MM_shear)" is used instead
+    // of "MM_shear".
+    M_shear = LinearAlgebra::Product(TS, MM_shear);
+
+    if (!IsValidShear(M_shear))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    // This is Equation (A.17) on page 209
+    Matrix tmp;
+    LinearAlgebra::InvertMatrix(tmp, M_shear);
+    M_warp = LinearAlgebra::Product(MM_view, tmp);
+
+    // Intrinsic parameters of the camera
+    k_ = LinearAlgebra::ZeroMatrix(3, 4);
+    k_(0, 0) = 1.0 / pixelSpacingX;
+    k_(0, 3) = static_cast<double>(imageWidth) / 2.0;
+    k_(1, 1) = 1.0 / pixelSpacingY;
+    k_(1, 3) = static_cast<double>(imageHeight) / 2.0;
+    k_(2, 3) = 1.0;
+  }
+
+
+  FiniteProjectiveCamera *ShearWarpProjectiveTransform::CreateCamera() const
+  {
+    Matrix p = LinearAlgebra::Product(k_, M_warp, M_shear);
+    return new FiniteProjectiveCamera(p);
+  }
+  
+
+  void ShearWarpProjectiveTransform::ComputeShearOnSlice(double& a11,
+                                                         double& b1,
+                                                         double& a22,
+                                                         double& b2,
+                                                         double& shearedZ,
+                                                         const double sourceZ)
+  {
+    // Check out: ../../Resources/Computations/ComputeShearOnSlice.py
+    assert(IsValidShear(M_shear));
+
+    const double s11 = M_shear(0, 0);
+    const double s13 = M_shear(0, 2);
+    const double s14 = M_shear(0, 3);
+    const double s22 = M_shear(1, 1);
+    const double s23 = M_shear(1, 2);
+    const double s24 = M_shear(1, 3);
+    const double s43 = M_shear(3, 2);
+
+    double scaling = 1.0 / (s43 * sourceZ + 1.0);
+    shearedZ = sourceZ * scaling;
+
+    a11 = s11 * scaling;
+    a22 = s22 * scaling;
+
+    b1 = (s13 * sourceZ + s14) * scaling;
+    b2 = (s23 * sourceZ + s24) * scaling;
+  }
+
+
+  Matrix ShearWarpProjectiveTransform::CalibrateView(const Vector& camera,
+                                                     const Vector& principalPoint,
+                                                     double angle)
+  {
+    if (camera.size() != 3 ||
+        principalPoint.size() != 3)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    const double sid = boost::numeric::ublas::norm_2(camera - principalPoint);
+      
+    Matrix a;
+    GeometryToolbox::AlignVectorsWithRotation(a, camera - principalPoint,
+                                              LinearAlgebra::CreateVector(0, 0, -1));
+
+    Matrix r = LinearAlgebra::Product(GeometryToolbox::CreateRotationMatrixAlongZ(angle), a);
+
+    a = LinearAlgebra::ZeroMatrix(4, 4);
+    boost::numeric::ublas::subrange(a, 0, 3, 0, 3) = r;
+
+    const Vector v = LinearAlgebra::Product(r, -camera);
+    a(0, 3) = v[0];
+    a(1, 3) = v[1];
+    a(2, 3) = v[2];
+    a(3, 3) = 1;
+
+    Matrix perspective = LinearAlgebra::ZeroMatrix(4, 4);
+    // https://stackoverflow.com/questions/5267866/calculation-of-a-perspective-transformation-matrix
+    perspective(0, 0) = sid;
+    perspective(1, 1) = sid;
+    perspective(2, 2) = sid;
+    perspective(3, 2) = 1;
+
+    Matrix M_view = LinearAlgebra::Product(perspective, a);
+    assert(M_view.size1() == 4 &&
+           M_view.size2() == 4);
+
+    {
+      // Sanity checks
+      Vector p1 = LinearAlgebra::CreateVector(camera[0], camera[1], camera[2], 1.0);
+      Vector p2 = LinearAlgebra::CreateVector(principalPoint[0], principalPoint[1], principalPoint[2], 1.0);
+      
+      Vector v1 = LinearAlgebra::Product(M_view, p1);
+      Vector v2 = LinearAlgebra::Product(M_view, p2);
+
+      if (!LinearAlgebra::IsCloseToZero(v1[3]) ||  // Must be mapped to singularity (w=0)
+          LinearAlgebra::IsCloseToZero(v2[3]))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      // The principal point must be mapped to (0,0,z,1)
+      v2 /= v2[3];
+      if (!LinearAlgebra::IsCloseToZero(v2[0]) ||
+          !LinearAlgebra::IsCloseToZero(v2[1]))
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }      
+    }
+
+    return M_view;
+  }
+
+
+  template <Orthanc::PixelFormat SourceFormat,
+            Orthanc::PixelFormat TargetFormat,
+            bool MIP>
+  static void ApplyAxialInternal(Orthanc::ImageAccessor& target,
+                                 float& maxValue,
+                                 const Matrix& M_view,
+                                 const ImageBuffer3D& source,
+                                 const VolumeImageGeometry& geometry,
+                                 double pixelSpacing,
+                                 unsigned int countSlices,
+                                 ImageInterpolation shearInterpolation,
+                                 ImageInterpolation warpInterpolation)
+  {
+    typedef Orthanc::PixelTraits<SourceFormat> SourceTraits;
+    typedef Orthanc::PixelTraits<TargetFormat> TargetTraits;
+
+    /**
+     * Step 1: Precompute some information.
+     **/
+       
+    if (target.GetFormat() != TargetFormat ||
+        source.GetFormat() != SourceFormat ||
+        !std::numeric_limits<float>::is_iec559 ||
+        sizeof(float) != 4)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    if (countSlices > source.GetDepth())
+    {
+      countSlices = source.GetDepth();
+    }
+
+    if (countSlices == 0)
+    {
+      maxValue = 0;
+      Orthanc::ImageProcessing::Set(target, 0);
+      return;
+    }
+    
+    LOG(INFO) << "Number of rendered slices: " << countSlices;
+
+
+    /**
+     * Step 2: Extract the shear-warp transform corresponding to
+     * M_view.
+     **/
+    
+    // Compute the "world" matrix that maps the source volume to the
+    // (0,0,0)->(1,1,1) unit cube
+    Vector origin = geometry.GetCoordinates(0, 0, 0);
+    Vector ps = geometry.GetVoxelDimensions(VolumeProjection_Axial);
+    Matrix world = LinearAlgebra::Product(
+      GeometryToolbox::CreateScalingMatrix(1.0 / ps[0], 1.0 / ps[1], 1.0 / ps[2]),
+      GeometryToolbox::CreateTranslationMatrix(-origin[0], -origin[1], -origin[2]));
+
+    Matrix worldInv;
+    LinearAlgebra::InvertMatrix(worldInv, world);
+
+    ShearWarpProjectiveTransform shearWarp(LinearAlgebra::Product(M_view, worldInv),
+                                           /*LinearAlgebra::IdentityMatrix(4),*/
+                                           source.GetWidth(),
+                                           source.GetHeight(),
+                                           source.GetDepth(),
+                                           pixelSpacing, pixelSpacing,
+                                           target.GetWidth(), target.GetHeight());
+    
+    const unsigned int intermediateWidth = shearWarp.GetIntermediateWidth();
+    const unsigned int intermediateHeight = shearWarp.GetIntermediateHeight();
+
+
+    /**
+     * Step 3: Apply the "shear" part of the transform to form the
+     * intermediate image. The sheared images are accumulated into the
+     * Float32 image "accumulator". The number of samples available
+     * for each pixel is stored in the "counter" image.
+     **/
+
+    std::unique_ptr<Orthanc::ImageAccessor> accumulator, counter, intermediate;
+
+    accumulator.reset(new Orthanc::Image(Orthanc::PixelFormat_Float32,
+                                         intermediateWidth, intermediateHeight, false));
+    counter.reset(new Orthanc::Image(Orthanc::PixelFormat_Grayscale16,
+                                     intermediateWidth, intermediateHeight, false)); 
+    intermediate.reset(new Orthanc::Image(SourceFormat, intermediateWidth, intermediateHeight, false));
+
+    Orthanc::ImageProcessing::Set(*accumulator, 0);
+    Orthanc::ImageProcessing::Set(*counter, 0);
+
+    // Loop around the slices of the volume
+    for (unsigned int i = 0; i <= countSlices; i++)
+    {
+      // (3.a) Compute the shear for this specific slice
+      unsigned int z = static_cast<unsigned int>(
+        boost::math::iround(static_cast<double>(i) /
+                            static_cast<double>(countSlices) *
+                            static_cast<double>(source.GetDepth() - 1)));
+      
+      double a11, b1, a22, b2, vz;
+      shearWarp.ComputeShearOnSlice(a11, b1, a22, b2, vz, static_cast<double>(z) + 0.5);
+
+
+      {
+        // (3.b) Detect the "useful" portion of the intermediate image
+        // for this slice (i.e. the bounding box where the source
+        // slice is mapped to by the shear), so as to update "counter"
+        Matrix a = LinearAlgebra::ZeroMatrix(3, 3);
+        a(0,0) = a11;
+        a(0,2) = b1;
+        a(1,1) = a22;
+        a(1,2) = b2;
+        a(2,2) = 1;
+
+        unsigned int x1, y1, x2, y2;
+        if (GetProjectiveTransformExtent(x1, y1, x2, y2, a,
+                                         source.GetWidth(), source.GetHeight(),
+                                         intermediateWidth, intermediateHeight))
+        {
+          for (unsigned int y = y1; y <= y2; y++)
+          {
+            uint16_t* p = reinterpret_cast<uint16_t*>(counter->GetRow(y)) + x1;
+            for (unsigned int x = x1; x <= x2; x++, p++)
+            {
+              if (MIP)
+              {
+                // TODO - In the case of MIP, "counter" could be
+                // reduced to "PixelFormat_Grayscale8" to reduce
+                // memory usage
+                *p = 1;
+              }
+              else
+              {
+                *p += 1;
+              }
+            }
+          }
+        }
+      }
+
+
+      {
+        // (3.c) Shear the source slice into a temporary image
+        ImageBuffer3D::SliceReader reader(source, VolumeProjection_Axial, z);      
+        ApplyAffineTransform(*intermediate, reader.GetAccessor(),
+                             a11, 0,   b1,
+                             0,   a22, b2,
+                             shearInterpolation, true);
+      }
+      
+
+      for (unsigned int y = 0; y < intermediateHeight; y++)
+      {
+        // (3.d) Accumulate the pixels of the sheared image into "accumulator"
+        const typename SourceTraits::PixelType* p =
+          reinterpret_cast<const typename SourceTraits::PixelType*>(intermediate->GetConstRow(y));
+
+        float* q = reinterpret_cast<float*>(accumulator->GetRow(y));
+      
+        for (unsigned int x = 0; x < intermediateWidth; x++)
+        {
+          float pixel = SourceTraits::PixelToFloat(*p);
+          
+          if (MIP)
+          {
+            // Get maximum for MIP
+            if (*q < pixel)
+            {
+              *q = pixel;
+            }
+          }
+          else
+          {
+            *q += pixel;
+          }
+          
+          p++;
+          q++;
+        }
+      }
+    }
+
+
+    /**
+     * Step 4: The intermediate image (that will be transformed by the
+     * "warp") is now available as an accumulator image together with
+     * a counter image. "Flatten" these two images into one.
+     **/
+
+    intermediate.reset(new Orthanc::Image
+                       (TargetFormat, intermediateWidth, intermediateHeight, false));
+
+    maxValue = 0;
+    
+    for (unsigned int y = 0; y < intermediateHeight; y++)
+    {
+      const float *qacc = reinterpret_cast<const float*>(accumulator->GetConstRow(y));
+      const uint16_t *qcount = reinterpret_cast<const uint16_t*>(counter->GetConstRow(y));
+      typename TargetTraits::PixelType *p =
+        reinterpret_cast<typename TargetTraits::PixelType*>(intermediate->GetRow(y));
+
+      for (unsigned int x = 0; x < intermediateWidth; x++)
+      {
+        if (*qcount == 0)
+        {
+          TargetTraits::SetZero(*p);
+        }
+        else
+        {
+          *p = static_cast<typename TargetTraits::PixelType>
+            (*qacc / static_cast<float>(*qcount));
+
+          if (*p > maxValue)
+          {
+            maxValue = *p;
+          }
+        }
+        
+        p++;
+        qacc++;
+        qcount++;
+      }
+    }
+
+    // We don't need the accumulator images anymore
+    accumulator.reset(NULL);
+    counter.reset(NULL);
+
+    
+    /**
+     * Step 6: Apply the "warp" part of the transform to map the
+     * intermediate image to the final image.
+     **/
+
+    Matrix warp;
+
+    {
+      // (5.a) Compute the "warp" matrix by removing the 3rd row and
+      // 3rd column from the GetWarp() matrix
+      // Check out: ../../Resources/Computations/ComputeWarp.py
+    
+      Matrix fullWarp = LinearAlgebra::Product
+        (shearWarp.GetIntrinsicParameters(), shearWarp.GetWarp());
+
+      const double v[] = {
+        fullWarp(0,0), fullWarp(0,1), fullWarp(0,3), 
+        fullWarp(1,0), fullWarp(1,1), fullWarp(1,3), 
+        fullWarp(2,0), fullWarp(2,1), fullWarp(2,3)
+      };
+
+      LinearAlgebra::FillMatrix(warp, 3, 3, v);
+    }
+
+    // (5.b) Apply the projective transform to the image
+    ApplyProjectiveTransform(target, *intermediate, warp, warpInterpolation, true);
+  }
+
+
+  template <Orthanc::PixelFormat SourceFormat,
+            Orthanc::PixelFormat TargetFormat>
+  static void ApplyAxialInternal2(Orthanc::ImageAccessor& target,
+                                  float& maxValue,
+                                  const Matrix& M_view,
+                                  const ImageBuffer3D& source,
+                                  const VolumeImageGeometry& geometry,
+                                  bool mip,
+                                  double pixelSpacing,
+                                  unsigned int countSlices,
+                                  ImageInterpolation shearInterpolation,
+                                  ImageInterpolation warpInterpolation)
+  {
+    if (mip)
+    {
+      ApplyAxialInternal<SourceFormat, TargetFormat, true>
+        (target, maxValue, M_view, source, geometry, pixelSpacing,
+         countSlices, shearInterpolation, warpInterpolation);
+    }
+    else
+    {
+      ApplyAxialInternal<SourceFormat, TargetFormat, false>
+        (target, maxValue, M_view, source, geometry, pixelSpacing,
+         countSlices, shearInterpolation, warpInterpolation);
+    } 
+  }
+  
+
+  Orthanc::ImageAccessor*
+  ShearWarpProjectiveTransform::ApplyAxial(float& maxValue,
+                                           const Matrix& M_view,
+                                           const ImageBuffer3D& source,
+                                           const VolumeImageGeometry& geometry,
+                                           Orthanc::PixelFormat targetFormat,
+                                           unsigned int targetWidth,
+                                           unsigned int targetHeight,
+                                           bool mip,
+                                           double pixelSpacing,
+                                           unsigned int countSlices,
+                                           ImageInterpolation shearInterpolation,
+                                           ImageInterpolation warpInterpolation)
+  {
+    std::unique_ptr<Orthanc::ImageAccessor> target
+      (new Orthanc::Image(targetFormat, targetWidth, targetHeight, false));
+    
+    if (source.GetFormat() == Orthanc::PixelFormat_Grayscale16 &&
+        targetFormat == Orthanc::PixelFormat_Grayscale16)
+    {
+      ApplyAxialInternal2<Orthanc::PixelFormat_Grayscale16,
+                          Orthanc::PixelFormat_Grayscale16>
+        (*target, maxValue, M_view, source, geometry, mip, pixelSpacing,
+         countSlices, shearInterpolation, warpInterpolation);
+    }
+    else if (source.GetFormat() == Orthanc::PixelFormat_SignedGrayscale16 &&
+             targetFormat == Orthanc::PixelFormat_SignedGrayscale16)
+    {
+      ApplyAxialInternal2<Orthanc::PixelFormat_SignedGrayscale16,
+                          Orthanc::PixelFormat_SignedGrayscale16>
+        (*target, maxValue, M_view, source, geometry, mip, pixelSpacing,
+         countSlices, shearInterpolation, warpInterpolation);
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+
+    return target.release();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/ShearWarpProjectiveTransform.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,105 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "FiniteProjectiveCamera.h"
+
+namespace OrthancStone
+{
+  class ShearWarpProjectiveTransform : public boost::noncopyable
+  {
+  private:
+    Matrix        k_;
+    Matrix        M_shear;
+    Matrix        M_warp;
+    Vector        eye_o;
+    unsigned int  intermediateWidth_;
+    unsigned int  intermediateHeight_;
+
+  public:
+    ShearWarpProjectiveTransform(const Matrix& M_view,
+                                 //const Matrix& P,           // Permutation applied to the volume
+                                 unsigned int volumeWidth,
+                                 unsigned int volumeHeight,
+                                 unsigned int volumeDepth,
+                                 double pixelSpacingX,
+                                 double pixelSpacingY,
+                                 unsigned int imageWidth,
+                                 unsigned int imageHeight);
+
+    const Matrix& GetIntrinsicParameters() const
+    {
+      return k_;
+    }
+
+    const Matrix& GetShear() const
+    {
+      return M_shear;
+    }
+
+    const Matrix& GetWarp() const
+    {
+      return M_warp;
+    }
+
+    const Vector& GetCameraCenter() const
+    {
+      return eye_o;
+    }
+
+    unsigned int GetIntermediateWidth() const
+    {
+      return intermediateWidth_;
+    }
+
+    unsigned int GetIntermediateHeight() const
+    {
+      return intermediateHeight_;
+    }
+
+    FiniteProjectiveCamera *CreateCamera() const;
+
+    void ComputeShearOnSlice(double& a11,
+                             double& b1,
+                             double& a22,
+                             double& b2,
+                             double& shearedZ,
+                             const double sourceZ);
+
+    static Matrix CalibrateView(const Vector& camera,
+                                const Vector& principalPoint,
+                                double angle);
+
+    static Orthanc::ImageAccessor* ApplyAxial(float& maxValue,
+                                              const Matrix& M_view,  // cf. "CalibrateView()"
+                                              const ImageBuffer3D& source,
+                                              const VolumeImageGeometry& geometry,
+                                              Orthanc::PixelFormat targetFormat,
+                                              unsigned int targetWidth,
+                                              unsigned int targetHeight,
+                                              bool mip,
+                                              double pixelSpacing,
+                                              unsigned int countSlices,
+                                              ImageInterpolation shearInterpolation,
+                                              ImageInterpolation warpInterpolation);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/SlicesSorter.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,357 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SlicesSorter.h"
+
+#include "GeometryToolbox.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  class SlicesSorter::SliceWithDepth : public boost::noncopyable
+  {
+  private:
+    CoordinateSystem3D  geometry_;
+    double              depth_;
+
+    std::unique_ptr<Orthanc::IDynamicObject>   payload_;
+
+  public:
+    SliceWithDepth(const CoordinateSystem3D& geometry,
+                   Orthanc::IDynamicObject* payload) :
+      geometry_(geometry),
+      depth_(0),
+      payload_(payload)
+    {
+    }
+
+    void SetNormal(const Vector& normal)
+    {
+      depth_ = boost::numeric::ublas::inner_prod(geometry_.GetOrigin(), normal);
+    }
+
+    double GetDepth() const
+    {
+      return depth_;
+    }
+
+    const CoordinateSystem3D& GetGeometry() const
+    {
+      return geometry_;
+    }
+
+    bool HasPayload() const
+    {
+      return (payload_.get() != NULL);
+    }
+
+    const Orthanc::IDynamicObject& GetPayload() const
+    {
+      if (HasPayload())
+      {
+        return *payload_;
+      }
+      else
+      {
+        LOG(ERROR) << "SlicesSorter::SliceWithDepth::GetPayload(): (!HasPayload())";
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+    }
+  };
+
+
+  struct SlicesSorter::Comparator
+  {
+    bool operator() (const SliceWithDepth* const& a,
+                     const SliceWithDepth* const& b) const
+    {
+      return a->GetDepth() < b->GetDepth();
+    }
+  };
+
+
+  SlicesSorter::~SlicesSorter()
+  {
+    for (size_t i = 0; i < slices_.size(); i++)
+    {
+      assert(slices_[i] != NULL);
+      delete slices_[i];
+    }
+  }
+
+
+  void SlicesSorter::AddSlice(const CoordinateSystem3D& slice,
+                              Orthanc::IDynamicObject* payload)
+  {
+    slices_.push_back(new SliceWithDepth(slice, payload));
+  }
+
+  
+  const SlicesSorter::SliceWithDepth& SlicesSorter::GetSlice(size_t i) const
+  {
+    if (i >= slices_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      assert(slices_[i] != NULL);
+      return *slices_[i];
+    }
+  }
+
+
+  const CoordinateSystem3D& SlicesSorter::GetSliceGeometry(size_t i) const
+  {
+    return GetSlice(i).GetGeometry();
+  }
+  
+  
+  bool SlicesSorter::HasSlicePayload(size_t i) const
+  {
+    return GetSlice(i).HasPayload();
+  }
+  
+    
+  const Orthanc::IDynamicObject& SlicesSorter::GetSlicePayload(size_t i) const
+  {
+    return GetSlice(i).GetPayload();
+  }
+
+  
+  void SlicesSorter::SetNormal(const Vector& normal)
+  {
+    for (size_t i = 0; i < slices_.size(); i++)
+    {
+      slices_[i]->SetNormal(normal);
+    }
+
+    hasNormal_ = true;
+  }
+  
+    
+  void SlicesSorter::SortInternal()
+  {
+    if (!hasNormal_)
+    {
+      LOG(ERROR) << "SlicesSorter::SortInternal(): (!hasNormal_)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+
+    Comparator comparator;
+    std::sort(slices_.begin(), slices_.end(), comparator);
+  }
+  
+
+  void SlicesSorter::FilterNormal(const Vector& normal)
+  {
+    size_t pos = 0;
+
+    for (size_t i = 0; i < slices_.size(); i++)
+    {
+      if (GeometryToolbox::IsParallel(normal, slices_[i]->GetGeometry().GetNormal()))
+      {
+        // This slice is compatible with the selected normal
+        slices_[pos] = slices_[i];
+        pos += 1;
+      }
+      else
+      {
+        delete slices_[i];
+        slices_[i] = NULL;
+      }
+    }
+
+    slices_.resize(pos);
+  }
+  
+    
+  bool SlicesSorter::SelectNormal(Vector& normal) const
+  {
+    std::vector<Vector>  normalCandidates;
+    std::vector<unsigned int>  normalCount;
+
+    bool found = false;
+
+    for (size_t i = 0; !found && i < GetSlicesCount(); i++)
+    {
+      const Vector& normal = GetSlice(i).GetGeometry().GetNormal();
+
+      bool add = true;
+      for (size_t j = 0; add && j < normalCandidates.size(); j++)  // (*)
+      {
+        if (GeometryToolbox::IsParallel(normal, normalCandidates[j]))
+        {
+          normalCount[j] += 1;
+          add = false;
+        }
+      }
+
+      if (add)
+      {
+        if (normalCount.size() > 2)
+        {
+          // To get linear-time complexity in (*). This heuristics
+          // allows the series to have one single frame that is
+          // not parallel to the others (such a frame could be a
+          // generated preview)
+          found = false;
+        }
+        else
+        {
+          normalCandidates.push_back(normal);
+          normalCount.push_back(1);
+        }
+      }
+    }
+
+    for (size_t i = 0; !found && i < normalCandidates.size(); i++)
+    {
+      unsigned int count = normalCount[i];
+      if (count == GetSlicesCount() ||
+          count + 1 == GetSlicesCount())
+      {
+        normal = normalCandidates[i];
+        found = true;
+      }
+    }
+
+    return found;
+  }
+
+
+  bool SlicesSorter::Sort()
+  {
+    if (GetSlicesCount() > 0)
+    {
+      Vector normal;
+      if (SelectNormal(normal))
+      {
+        FilterNormal(normal);
+        SetNormal(normal);
+        SortInternal();
+        return true;
+      }
+    }
+
+    return false;
+  }
+
+
+  bool SlicesSorter::LookupClosestSlice(size_t& index,
+                                        double& distance,
+                                        const CoordinateSystem3D& slice) const
+  {
+    // TODO Turn this linear-time lookup into a log-time lookup,
+    // keeping track of whether the slices are sorted along the normal
+
+    bool found = false;
+    
+    distance = std::numeric_limits<double>::infinity();
+    
+    for (size_t i = 0; i < slices_.size(); i++)
+    {
+      assert(slices_[i] != NULL);
+
+      double tmp;
+      if (CoordinateSystem3D::ComputeDistance(tmp, slices_[i]->GetGeometry(), slice))
+      {
+        if (!found ||
+            tmp < distance)
+        {
+          index = i;
+          distance = tmp;
+          found = true;
+        }
+      }
+    }
+
+    return found;
+  }
+
+
+  bool SlicesSorter::ComputeSpacingBetweenSlices(double& spacing /* out */) const
+  {
+    if (GetSlicesCount() <= 1)
+    {
+      // This is a volume that is empty or that contains one single
+      // slice: Choose a dummy z-dimension for voxels
+      spacing = 1.0;
+      return true;
+    }
+    
+    const OrthancStone::CoordinateSystem3D& reference = GetSliceGeometry(0);
+
+    double referencePosition = reference.ProjectAlongNormal(reference.GetOrigin());
+        
+    double p = reference.ProjectAlongNormal(GetSliceGeometry(1).GetOrigin());
+    spacing = p - referencePosition;
+
+    if (spacing <= 0)
+    {
+      LOG(ERROR) << "SlicesSorter::ComputeSpacingBetweenSlices(): (spacing <= 0)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                      "Please call the Sort() method before");
+    }
+
+    for (size_t i = 1; i < GetSlicesCount(); i++)
+    {
+      OrthancStone::Vector p = reference.GetOrigin() + spacing * static_cast<double>(i) * reference.GetNormal();
+      double d = boost::numeric::ublas::norm_2(p - GetSliceGeometry(i).GetOrigin());
+
+      if (!OrthancStone::LinearAlgebra::IsNear(d, 0, 0.001 /* tolerance expressed in mm */))
+      {
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+
+  bool SlicesSorter::AreAllSlicesDistinct() const
+  {
+    if (GetSlicesCount() <= 1)
+    {
+      return true;
+    }
+    else
+    {
+      const OrthancStone::CoordinateSystem3D& reference = GetSliceGeometry(0);
+      double previousPosition = reference.ProjectAlongNormal(GetSliceGeometry(0).GetOrigin());
+     
+      for (size_t i = 1; i < GetSlicesCount(); i++)
+      {
+        double position = reference.ProjectAlongNormal(GetSliceGeometry(i).GetOrigin());
+
+        if (OrthancStone::LinearAlgebra::IsNear(position, previousPosition, 0.001 /* tolerance expressed in mm */))
+        {
+          return false;
+        }
+
+        previousPosition = position;
+      }
+
+      return true;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/SlicesSorter.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,99 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "CoordinateSystem3D.h"
+
+#include <IDynamicObject.h>
+
+namespace OrthancStone
+{
+  // TODO - Rename this as "PlanesSorter"
+  class SlicesSorter : public boost::noncopyable
+  {
+  private:
+    class SliceWithDepth;
+    struct Comparator;
+
+    typedef std::vector<SliceWithDepth*>  Slices;
+
+    Slices  slices_;
+    bool    hasNormal_;
+    
+    const SliceWithDepth& GetSlice(size_t i) const;
+    
+    void SetNormal(const Vector& normal);
+    
+    void SortInternal();
+
+    void FilterNormal(const Vector& normal);
+    
+    bool SelectNormal(Vector& normal) const;
+
+  public:
+    SlicesSorter() : hasNormal_(false)
+    {
+    }
+
+    ~SlicesSorter();
+    
+    void Reserve(size_t count)
+    {
+      slices_.reserve(count);
+    }
+
+    void AddSlice(const CoordinateSystem3D& plane)
+    {
+      AddSlice(plane, NULL);
+    }
+
+    void AddSlice(const CoordinateSystem3D& plane,
+                  Orthanc::IDynamicObject* payload);  // Takes ownership
+
+    size_t GetSlicesCount() const
+    {
+      return slices_.size();
+    }
+
+    const CoordinateSystem3D& GetSliceGeometry(size_t i) const;
+
+    bool HasSlicePayload(size_t i) const;
+    
+    const Orthanc::IDynamicObject& GetSlicePayload(size_t i) const;
+
+    // WARNING - Apply the sorting algorithm can reduce the number of
+    // slices. This is notably the case if all the slices are not
+    // parallel to the reference normal that will be selected.
+    bool Sort();
+
+    // TODO - Remove this
+    bool LookupClosestSlice(size_t& index,
+                            double& distance,
+                            const CoordinateSystem3D& slice) const;
+
+    // WARNING - The slices must have been sorted before calling this method
+    bool ComputeSpacingBetweenSlices(double& spacing /* out */) const;
+
+    // WARNING - The slices must have been sorted before calling this method
+    bool AreAllSlicesDistinct() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/SortedFrames.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,405 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SortedFrames.h"
+
+#include "GeometryToolbox.h"
+
+#include <OrthancException.h>
+#include <Toolbox.h>
+
+namespace OrthancStone
+{
+  SortedFrames::Instance::Instance(const Orthanc::DicomMap& tags)
+  {
+    tags_.Assign(tags);
+
+    if (!tags.LookupStringValue(sopInstanceUid_, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+
+    uint32_t tmp;
+    if (tags.ParseUnsignedInteger32(tmp, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
+    {
+      numberOfFrames_ = tmp;
+    }
+    else
+    {
+      numberOfFrames_ = 1;
+    }
+
+    std::string photometric;
+    if (tags.LookupStringValue(photometric, Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION, false))
+    {
+      Orthanc::Toolbox::StripSpaces(photometric);
+      monochrome1_ = (photometric == "MONOCHROME1");
+    }
+    else
+    {
+      monochrome1_ = false;
+    }
+
+    hasPosition_ = (
+      LinearAlgebra::ParseVector(position_, tags, Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT) &&
+      position_.size() == 3 &&
+      GeometryToolbox::ComputeNormal(normal_, tags));
+  }
+
+
+  const Vector& SortedFrames::Instance::GetNormal() const
+  {
+    if (hasPosition_)
+    {
+      return normal_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  const Vector& SortedFrames::Instance::GetPosition() const
+  {
+    if (hasPosition_)
+    {
+      return position_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  
+  SortedFrames::Frame::Frame(const Instance& instance,
+                             unsigned int frameIndex) :
+    instance_(&instance),
+    frameIndex_(frameIndex)
+  {
+    if (frameIndex >= instance.GetNumberOfFrames())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  const SortedFrames::Instance& SortedFrames::GetInstance(size_t index) const
+  {
+    if (index >= instances_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      assert(instances_[index] != NULL);
+      return *instances_[index];
+    }
+  }
+
+  
+  const SortedFrames::Frame& SortedFrames::GetFrame(size_t index) const
+  {
+    if (!sorted_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                      "Sort() has not been called");
+    }
+    if (index >= frames_.size())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      return frames_[index];
+    }    
+  }
+
+  
+  void SortedFrames::Clear()
+  {
+    for (size_t i = 0; i < instances_.size(); i++)
+    {
+      assert(instances_[i] != NULL);
+      delete instances_[i];
+    }
+
+    studyInstanceUid_.clear();
+    seriesInstanceUid_.clear();
+    frames_.clear();
+    sorted_ = true;
+  }
+
+
+  void SortedFrames::AddInstance(const Orthanc::DicomMap& tags)
+  {
+    std::unique_ptr<Instance> instance(new Instance(tags));
+
+    std::string studyInstanceUid, seriesInstanceUid;
+    if (!tags.LookupStringValue(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) ||
+        !tags.LookupStringValue(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
+    }
+    
+    if (instances_.empty())
+    {
+      studyInstanceUid_ = studyInstanceUid;
+      seriesInstanceUid_ = seriesInstanceUid;
+    }
+    else
+    {
+      if (studyInstanceUid_ != studyInstanceUid ||
+          seriesInstanceUid_ != seriesInstanceUid)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange,
+                                        "Mixing instances from different series");
+      }
+    }
+
+    instances_.push_back(instance.release());
+    sorted_ = false;
+    frames_.clear();
+  }
+
+
+  void SortedFrames::AddFramesOfInstance(std::set<size_t>& remainingInstances,
+                                         size_t index)
+  {
+    assert(instances_[index] != NULL);
+    const Instance& instance = *instances_[index];
+    
+    for (unsigned int i = 0; i < instance.GetNumberOfFrames(); i++)
+    {
+      frames_.push_back(Frame(instance, i));
+    }
+
+    assert(remainingInstances.find(index) != remainingInstances.end());
+    remainingInstances.erase(index);
+  }
+
+
+  namespace
+  {
+    template<typename T>
+    class SortableItem
+    {
+    private:
+      T            value_;
+      size_t       instance_;
+      std::string  sopInstanceUid_;
+
+    public:
+      SortableItem(const T& value,
+                   size_t instance,
+                   const std::string& sopInstanceUid) :
+        value_(value),
+        instance_(instance),
+        sopInstanceUid_(sopInstanceUid)
+      {
+      }
+
+      size_t GetInstanceIndex() const
+      {
+        return instance_;
+      }
+
+      bool operator< (const SortableItem& other) const
+      {
+        return (value_ < other.value_ ||
+                (value_ == other.value_ &&
+                 sopInstanceUid_ < other.sopInstanceUid_));
+      }
+    };
+  }
+
+
+  void SortedFrames::SortUsingIntegerTag(std::set<size_t>& remainingInstances,
+                                         const Orthanc::DicomTag& tag)
+  {
+    std::vector< SortableItem<int32_t> > items;
+    items.reserve(remainingInstances.size());
+
+    for (std::set<size_t>::const_iterator it = remainingInstances.begin();
+         it != remainingInstances.end(); ++it)
+    {
+      assert(instances_[*it] != NULL);
+      const Instance& instance = *instances_[*it];
+
+      int32_t value;
+      std::string sopInstanceUid;
+      if (instance.GetTags().ParseInteger32(value, tag) &&
+          instance.GetTags().LookupStringValue(
+            sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
+      {
+        items.push_back(SortableItem<int32_t>(value, *it, sopInstanceUid));
+      }
+    }
+    
+    std::sort(items.begin(), items.end());
+
+    for (size_t i = 0; i < items.size(); i++)
+    {
+      AddFramesOfInstance(remainingInstances, items[i].GetInstanceIndex());
+    }
+  }
+
+
+  void SortedFrames::SortUsingSopInstanceUid(std::set<size_t>& remainingInstances)
+  {
+    std::vector<SortableItem<int32_t> > items;
+    items.reserve(remainingInstances.size());
+
+    for (std::set<size_t>::const_iterator it = remainingInstances.begin();
+         it != remainingInstances.end(); ++it)
+    {
+      assert(instances_[*it] != NULL);
+      const Instance& instance = *instances_[*it];
+
+      std::string sopInstanceUid;
+      if (instance.GetTags().LookupStringValue(
+            sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
+      {
+        items.push_back(SortableItem<int32_t>(0 /* arbitrary value */, *it, sopInstanceUid));
+      }
+    }
+    
+    std::sort(items.begin(), items.end());
+
+    for (size_t i = 0; i < items.size(); i++)
+    {
+      AddFramesOfInstance(remainingInstances, items[i].GetInstanceIndex());
+    }
+  }
+
+
+  void SortedFrames::SortUsing3DLocation(std::set<size_t>& remainingInstances)
+  {
+    /**
+     * Compute the mean of the normal vectors, using the recursive
+     * formula for arithmetic means for numerical stability.
+     * https://diego.assencio.com/?index=c34d06f4f4de2375658ed41f70177d59
+     **/
+      
+    Vector meanNormal;
+    LinearAlgebra::AssignVector(meanNormal, 0, 0, 0);
+
+    unsigned int n = 0;
+
+    for (std::set<size_t>::const_iterator it = remainingInstances.begin();
+         it != remainingInstances.end(); ++it)
+    {
+      assert(instances_[*it] != NULL);
+      const Instance& instance = *instances_[*it];
+
+      if (instance.HasPosition())
+      {
+        n += 1;
+        meanNormal += (instance.GetNormal() - meanNormal) / static_cast<float>(n);
+      }
+    }
+
+    std::vector<SortableItem<float> > items;
+    items.reserve(n);
+      
+    for (std::set<size_t>::const_iterator it = remainingInstances.begin();
+         it != remainingInstances.end(); ++it)
+    {
+      assert(instances_[*it] != NULL);
+      const Instance& instance = *instances_[*it];
+        
+      std::string sopInstanceUid;
+      if (instance.HasPosition() &&
+          instance.GetTags().LookupStringValue(
+            sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
+      {
+        double p = LinearAlgebra::DotProduct(meanNormal, instance.GetPosition());
+        items.push_back(SortableItem<float>(p, *it, sopInstanceUid));
+      }
+    }
+
+    assert(items.size() <= n);
+    
+    std::sort(items.begin(), items.end());
+
+    for (size_t i = 0; i < items.size(); i++)
+    {
+      AddFramesOfInstance(remainingInstances, items[i].GetInstanceIndex());
+    }
+  }
+
+
+  size_t SortedFrames::GetFramesCount() const
+  {
+    if (sorted_)
+    {
+      return frames_.size();
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                      "Sort() has not been called");
+    }
+  }
+
+
+  void SortedFrames::Sort()
+  {
+    if (!sorted_)
+    {
+      size_t totalFrames = 0;
+      std::set<size_t> remainingInstances;
+      
+      for (size_t i = 0; i < instances_.size(); i++)
+      {
+        assert(instances_[i] != NULL);
+        totalFrames += instances_[i]->GetNumberOfFrames();
+        
+        remainingInstances.insert(i);
+      }
+
+      frames_.clear();
+      frames_.reserve(totalFrames);
+
+      SortUsingIntegerTag(remainingInstances, Orthanc::DICOM_TAG_INSTANCE_NUMBER);  // VR is "IS"
+      SortUsingIntegerTag(remainingInstances, Orthanc::DICOM_TAG_IMAGE_INDEX);  // VR is "US"
+      SortUsing3DLocation(remainingInstances);
+      SortUsingSopInstanceUid(remainingInstances);
+
+      // The following could in theory happen if several instances
+      // have the same SOPInstanceUID, no ordering is available
+      for (std::set<size_t>::const_iterator it = remainingInstances.begin();
+           it != remainingInstances.end(); it++)
+      {
+        AddFramesOfInstance(remainingInstances, *it);
+      }
+
+      if (frames_.size() != totalFrames ||
+          !remainingInstances.empty())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+      
+      sorted_ = true;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/SortedFrames.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,190 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "LinearAlgebra.h"
+
+namespace OrthancStone
+{
+  class SortedFrames : public boost::noncopyable
+  {
+  private:
+    class Instance : public boost::noncopyable
+    {
+    private:
+      bool               hasPosition_;
+      Orthanc::DicomMap  tags_;
+      std::string        sopInstanceUid_;
+      unsigned int       numberOfFrames_;
+      Vector             normal_;    // Only used in "Sort()"
+      Vector             position_;  // Only used in "Sort()"
+      bool               monochrome1_;
+
+    public:
+      Instance(const Orthanc::DicomMap& tags);
+
+      const Orthanc::DicomMap& GetTags() const
+      {
+        return tags_;
+      }
+
+      const std::string& GetSopInstanceUid() const
+      {
+        return sopInstanceUid_;
+      }
+
+      unsigned int GetNumberOfFrames() const
+      {
+        return numberOfFrames_;
+      }
+
+      bool HasPosition() const
+      {
+        return hasPosition_;
+      }
+
+      const Vector& GetNormal() const;
+
+      const Vector& GetPosition() const;
+
+      bool IsMonochrome1() const
+      {
+        return monochrome1_;
+      }
+    };
+
+    struct Frame
+    {
+    private:
+      const Instance*  instance_;
+      unsigned int     frameIndex_;
+
+    public:
+      Frame(const Instance& instance,
+            unsigned int frameIndex);
+
+      const Instance& GetInstance() const
+      {
+        return *instance_;
+      }
+
+      unsigned int GetFrameIndex() const
+      {
+        return frameIndex_;
+      }
+    };
+
+    std::string             studyInstanceUid_;
+    std::string             seriesInstanceUid_;
+    std::vector<Instance*>  instances_;
+    std::vector<Frame>      frames_;
+    bool                    sorted_;
+
+    const Instance& GetInstance(size_t index) const;
+
+    const Frame& GetFrame(size_t index) const;
+
+    void AddFramesOfInstance(std::set<size_t>& remainingInstances,
+                             size_t index);
+
+    void SortUsingIntegerTag(std::set<size_t>& remainingInstances,
+                             const Orthanc::DicomTag& tag);
+
+    void SortUsingSopInstanceUid(std::set<size_t>& remainingInstances);
+
+    void SortUsing3DLocation(std::set<size_t>& remainingInstances);
+
+  public:
+    SortedFrames() :
+      sorted_(true)
+    {
+    }
+  
+    ~SortedFrames()
+    {
+      Clear();
+    }
+    
+    void Clear();
+
+    const std::string& GetStudyInstanceUid() const
+    {
+      return studyInstanceUid_;
+    }
+
+    const std::string& GetSeriesInstanceUid() const
+    {
+      return seriesInstanceUid_;
+    }
+
+    void AddInstance(const Orthanc::DicomMap& tags);
+
+    size_t GetInstancesCount() const
+    {
+      return instances_.size();
+    }
+
+    const Orthanc::DicomMap& GetInstanceTags(size_t index) const
+    {
+      return GetInstance(index).GetTags();
+    }
+
+    const std::string& GetSopInstanceUid(size_t index) const
+    {
+      return GetInstance(index).GetSopInstanceUid();
+    }
+
+    bool IsSorted() const
+    {
+      return sorted_;
+    }
+
+    size_t GetFramesCount() const;
+
+    const Orthanc::DicomMap& GetFrameTags(size_t index) const
+    {
+      return GetFrame(index).GetInstance().GetTags();
+    }
+
+    const std::string& GetFrameSopInstanceUid(size_t index) const
+    {
+      return GetFrame(index).GetInstance().GetSopInstanceUid();
+    }
+
+    unsigned int GetFrameSiblingsCount(size_t index) const
+    {
+      return GetFrame(index).GetInstance().GetNumberOfFrames();
+    }
+
+    unsigned int GetFrameIndex(size_t index) const
+    {
+      return GetFrame(index).GetFrameIndex();
+    }
+
+    bool IsFrameMonochrome1(size_t index) const
+    {
+      return GetFrame(index).GetInstance().IsMonochrome1();
+    }
+
+    void Sort();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/SubpixelReader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,260 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../StoneEnumerations.h"
+#include "GeometryToolbox.h"
+
+#include <Images/ImageTraits.h>
+
+#include <boost/noncopyable.hpp>
+#include <cmath>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    class SubpixelReaderBase : public boost::noncopyable
+    {
+    private:
+      const Orthanc::ImageAccessor& source_;
+      unsigned int                  width_;
+      unsigned int                  height_;
+
+    public:
+      SubpixelReaderBase(const Orthanc::ImageAccessor& source) :
+        source_(source),
+        width_(source.GetWidth()),
+        height_(source.GetHeight())
+      {
+      }
+
+      ORTHANC_FORCE_INLINE
+      const Orthanc::ImageAccessor& GetSource() const
+      {
+        return source_;
+      }
+      
+      ORTHANC_FORCE_INLINE
+      unsigned int GetWidth() const
+      {
+        return width_;
+      }
+      
+      ORTHANC_FORCE_INLINE
+      unsigned int GetHeight() const
+      {
+        return height_;
+      }
+    };
+  }
+
+    
+  template <Orthanc::PixelFormat Format,
+            ImageInterpolation Interpolation>
+  class SubpixelReader;
+
+    
+  template <Orthanc::PixelFormat Format>
+  class SubpixelReader<Format, ImageInterpolation_Nearest> : 
+    public Internals::SubpixelReaderBase
+  {
+  public:
+    typedef Orthanc::PixelTraits<Format>  Traits;
+    typedef typename Traits::PixelType    PixelType;
+
+    SubpixelReader(const Orthanc::ImageAccessor& source) :
+      SubpixelReaderBase(source)
+    {
+    }
+
+    inline bool GetValue(PixelType& target,
+                         float x,
+                         float y) const;
+
+    inline bool GetFloatValue(float& target,
+                              float x,
+                              float y) const;
+  };
+
+    
+    
+  template <Orthanc::PixelFormat Format>
+  class SubpixelReader<Format, ImageInterpolation_Bilinear> : 
+    public Internals::SubpixelReaderBase
+  {
+  public:
+    typedef Orthanc::PixelTraits<Format>  Traits;
+    typedef typename Traits::PixelType    PixelType;
+
+    SubpixelReader(const Orthanc::ImageAccessor& source) :
+      SubpixelReaderBase(source)
+    {
+    }
+
+    inline bool GetFloatValue(float& target,
+                              float x,
+                              float y) const;
+
+    inline bool GetValue(PixelType& target,
+                         float x,
+                         float y) const;
+  };
+
+
+
+  template <Orthanc::PixelFormat Format>
+  bool SubpixelReader<Format, ImageInterpolation_Nearest>::GetValue(PixelType& target,
+                                                                    float x,
+                                                                    float y) const
+  {
+    if (x < 0 ||
+        y < 0)
+    {
+      return false;
+    }
+    else
+    {
+      unsigned int ux = static_cast<unsigned int>(std::floor(x));
+      unsigned int uy = static_cast<unsigned int>(std::floor(y));
+
+      if (ux < GetWidth() &&
+          uy < GetHeight())
+      {
+        Orthanc::ImageTraits<Format>::GetPixel(target, GetSource(), ux, uy);
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+  }
+
+
+
+  template <Orthanc::PixelFormat Format>
+  bool SubpixelReader<Format, ImageInterpolation_Nearest>::GetFloatValue(float& target,
+                                                                         float x,
+                                                                         float y) const
+  {
+    PixelType value;
+    
+    if (GetValue(value, x, y))
+    {
+      target = Traits::PixelToFloat(value);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+
+  template <Orthanc::PixelFormat Format>
+  bool SubpixelReader<Format, ImageInterpolation_Bilinear>::GetValue(PixelType& target,
+                                                                     float x,
+                                                                     float y) const
+  {
+    float value;
+
+    if (GetFloatValue(value, x, y))
+    {
+      Traits::FloatToPixel(target, value);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+
+  template <Orthanc::PixelFormat Format>
+  bool SubpixelReader<Format, ImageInterpolation_Bilinear>::GetFloatValue(float& target,
+                                                                          float x,
+                                                                          float y) const
+  {
+    x -= 0.5f;
+    y -= 0.5f;
+        
+    if (x < 0 ||
+        y < 0)
+    {
+      return false;
+    }
+    else
+    {
+      unsigned int ux = static_cast<unsigned int>(std::floor(x));
+      unsigned int uy = static_cast<unsigned int>(std::floor(y));
+
+      float f00, f01, f10, f11;
+
+      if (ux < GetWidth() &&
+          uy < GetHeight())
+      {
+        f00 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux, uy);
+      }
+      else
+      {
+        return false;
+      }
+
+      if (ux + 1 < GetWidth())
+      {
+        f01 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux + 1, uy);
+      }
+      else
+      {
+        f01 = f00;
+      }
+
+      if (uy + 1 < GetHeight())
+      {
+        f10 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux, uy + 1);
+      }
+      else
+      {
+        f10 = f00;
+      }
+
+      if (ux + 1 < GetWidth() &&
+          uy + 1 < GetHeight())
+      {
+        f11 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux + 1, uy + 1);
+      }
+      else
+      {
+        f11 = f00;
+      }
+
+      float ax = x - static_cast<float>(ux);
+      float ay = y - static_cast<float>(uy);
+      target = GeometryToolbox::ComputeBilinearInterpolationUnitSquare(ax, ay, f00, f01, f10, f11);
+          
+      return true;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/SubvoxelReader.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,470 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Volumes/ImageBuffer3D.h"
+#include "GeometryToolbox.h"
+
+#include <Images/ImageTraits.h>
+
+#include <boost/noncopyable.hpp>
+#include <cmath>
+
+namespace OrthancStone
+{
+  namespace Internals
+  {
+    /*
+    WARNING : the slice order is different between this class and ImageBuffer3D
+
+    See the comment above ImageBuffer3D declaration.
+
+    The slices are supposed to be stored in INCREASING z-order in this class!
+    */
+    class SubvoxelReaderBase : public boost::noncopyable
+    {
+    private:
+      const ImageBuffer3D& source_;
+      unsigned int         width_;
+      unsigned int         height_;
+      unsigned int         depth_;
+
+    public:
+      SubvoxelReaderBase(const ImageBuffer3D& source) :
+        source_(source),
+        width_(source.GetWidth()),
+        height_(source.GetHeight()),
+        depth_(source.GetDepth())
+      {
+      }
+
+      ORTHANC_FORCE_INLINE
+      const Orthanc::ImageAccessor& GetSource() const
+      {
+        return source_.GetInternalImage();
+      }
+      
+      ORTHANC_FORCE_INLINE
+      unsigned int GetWidth() const
+      {
+        return width_;
+      }
+      
+      ORTHANC_FORCE_INLINE
+      unsigned int GetHeight() const
+      {
+        return height_;
+      }
+      
+      ORTHANC_FORCE_INLINE
+      unsigned int GetDepth() const
+      {
+        return depth_;
+      }
+      
+      ORTHANC_FORCE_INLINE
+      unsigned int ComputeRow(unsigned int y,
+                              unsigned int z) const
+      {
+        return z * height_ + y;
+      }
+    };
+  }
+
+    
+  /*
+  WARNING : the slice order is different between this class and ImageBuffer3D
+
+  See the comment above ImageBuffer3D declaration.
+
+  The slices are supposed to be stored in INCREASING z-order in this class!
+  */
+  template <Orthanc::PixelFormat Format,
+            ImageInterpolation Interpolation>
+  class SubvoxelReader;
+
+    
+  /*
+  WARNING : the slice order is different between this class and ImageBuffer3D
+
+  See the comment above ImageBuffer3D declaration.
+
+  The slices are supposed to be stored in INCREASING z-order in this class!
+  */
+  template <Orthanc::PixelFormat Format>
+  class SubvoxelReader<Format, ImageInterpolation_Nearest> : 
+    public Internals::SubvoxelReaderBase
+  {
+  public:
+    typedef Orthanc::PixelTraits<Format>  Traits;
+    typedef typename Traits::PixelType    PixelType;
+
+    SubvoxelReader(const ImageBuffer3D& source) :
+      SubvoxelReaderBase(source)
+    {
+    }
+
+    inline bool GetValue(PixelType& target,
+                         float x,
+                         float y,
+                         float z) const;
+    
+    inline bool GetFloatValue(float& target,
+                              float x,
+                              float y,
+                              float z) const;
+  };
+    
+    
+  /*
+  WARNING : the slice order is different between this class and ImageBuffer3D
+
+  See the comment above ImageBuffer3D declaration.
+
+  The slices are supposed to be stored in INCREASING z-order in this class!
+  */
+  template <Orthanc::PixelFormat Format>
+  class SubvoxelReader<Format, ImageInterpolation_Bilinear> : 
+    public Internals::SubvoxelReaderBase
+  {
+  public:
+    typedef Orthanc::PixelTraits<Format>  Traits;
+    typedef typename Traits::PixelType    PixelType;
+
+    SubvoxelReader(const ImageBuffer3D& source) :
+      SubvoxelReaderBase(source)
+    {
+    }
+
+    inline bool Sample(float& f00,
+                       float& f01,
+                       float& f10,
+                       float& f11,
+                       unsigned int ux,
+                       unsigned int uy,
+                       unsigned int uz) const;
+
+    inline bool GetValue(PixelType& target,
+                         float x,
+                         float y,
+                         float z) const;
+
+    inline bool GetFloatValue(float& target,
+                              float x,
+                              float y,
+                              float z) const;
+  };
+    
+
+  /*
+  WARNING : the slice order is different between this class and ImageBuffer3D
+
+  See the comment above ImageBuffer3D declaration.
+
+  The slices are supposed to be stored in INCREASING z-order in this class!
+  */
+  template <Orthanc::PixelFormat Format>
+  class SubvoxelReader<Format, ImageInterpolation_Trilinear> : 
+    public Internals::SubvoxelReaderBase
+  {
+  private:
+    SubvoxelReader<Format, ImageInterpolation_Bilinear>   bilinear_;
+
+  public:
+    typedef Orthanc::PixelTraits<Format>  Traits;
+    typedef typename Traits::PixelType    PixelType;
+
+    SubvoxelReader(const ImageBuffer3D& source) :
+      SubvoxelReaderBase(source),
+      bilinear_(source)
+    {
+    }
+
+    inline bool GetValue(PixelType& target,
+                         float x,
+                         float y,
+                         float z) const;
+
+    inline bool GetFloatValue(float& target,
+                              float x,
+                              float y,
+                              float z) const;
+  };
+
+
+  /*
+  See important comment above
+  */
+
+  template <Orthanc::PixelFormat Format>
+  bool SubvoxelReader<Format, ImageInterpolation_Nearest>::GetValue(PixelType& target,
+                                                                    float x,
+                                                                    float y,
+                                                                    float z) const
+  {
+    if (x < 0 ||
+        y < 0 ||
+        z < 0)
+    {
+      return false;
+    }
+    else
+    {
+      unsigned int ux = static_cast<unsigned int>(std::floor(x));
+      unsigned int uy = static_cast<unsigned int>(std::floor(y));
+      unsigned int uz = static_cast<unsigned int>(std::floor(z));
+
+      if (ux < GetWidth() &&
+          uy < GetHeight() &&
+          uz < GetDepth())
+      {
+        Orthanc::ImageTraits<Format>::GetPixel(target, GetSource(), ux, ComputeRow(uy, uz));
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+  }
+
+
+  template <Orthanc::PixelFormat Format>
+  bool SubvoxelReader<Format, ImageInterpolation_Nearest>::GetFloatValue(float& target,
+                                                                         float x,
+                                                                         float y,
+                                                                         float z) const
+  {
+    PixelType value;
+    
+    if (GetValue(value, x, y, z))
+    {
+      target = Traits::PixelToFloat(value);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+  /*
+  See important comment above
+  */
+
+  template <Orthanc::PixelFormat Format>
+  bool SubvoxelReader<Format, ImageInterpolation_Bilinear>::Sample(float& f00,
+                                                                   float& f01,
+                                                                   float& f10,
+                                                                   float& f11,
+                                                                   unsigned int ux,
+                                                                   unsigned int uy,
+                                                                   unsigned int uz) const
+  {
+    if (ux < GetWidth() &&
+        uy < GetHeight() &&
+        uz < GetDepth())
+    {
+      f00 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux, ComputeRow(uy, uz));
+    }
+    else
+    {
+      // Pixel is out of the volume
+      return false;
+    }
+
+    if (ux + 1 < GetWidth())
+    {
+      f01 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux + 1, ComputeRow(uy, uz));
+    }
+    else
+    {
+      f01 = f00;
+    }
+
+    if (uy + 1 < GetHeight())
+    {
+      f10 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux, ComputeRow(uy + 1, uz));
+    }
+    else
+    {
+      f10 = f00;
+    }
+
+    if (ux + 1 < GetWidth() &&
+        uy + 1 < GetHeight())
+    {
+      f11 = Orthanc::ImageTraits<Format>::GetFloatPixel(GetSource(), ux + 1, ComputeRow(uy + 1, uz));
+    }
+    else
+    {
+      f11 = f00;
+    }
+
+    return true;
+  }
+
+
+  /*
+  See important comment above
+  */
+
+  template <Orthanc::PixelFormat Format>
+  bool SubvoxelReader<Format, ImageInterpolation_Bilinear>::GetFloatValue(float& target,
+                                                                          float x,
+                                                                          float y,
+                                                                          float z) const
+  {
+    x -= 0.5f;
+    y -= 0.5f;
+        
+    if (x < 0 ||
+        y < 0 ||
+        z < 0)
+    {
+      return false;
+    }
+    else
+    {
+      unsigned int ux = static_cast<unsigned int>(std::floor(x));
+      unsigned int uy = static_cast<unsigned int>(std::floor(y));
+      unsigned int uz = static_cast<unsigned int>(std::floor(z));
+
+      float f00, f01, f10, f11;
+      if (Sample(f00, f01, f10, f11, ux, uy, uz))
+      {
+        float ax = x - static_cast<float>(ux);
+        float ay = y - static_cast<float>(uy);
+
+        target = GeometryToolbox::ComputeBilinearInterpolationUnitSquare(ax, ay, f00, f01, f10, f11);
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+  }
+
+
+  /*
+  See important comment above
+  */
+
+  template <Orthanc::PixelFormat Format>
+  bool SubvoxelReader<Format, ImageInterpolation_Bilinear>::GetValue(PixelType& target,
+                                                                     float x,
+                                                                     float y,
+                                                                     float z) const
+  {
+    float value;
+
+    if (GetFloatValue(value, x, y, z))
+    {
+      Traits::FloatToPixel(target, value);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+
+  template <Orthanc::PixelFormat Format>
+  bool SubvoxelReader<Format, ImageInterpolation_Trilinear>::GetFloatValue(float& target,
+                                                                           float x,
+                                                                           float y,
+                                                                           float z) const
+  {
+    x -= 0.5f;
+    y -= 0.5f;
+    z -= 0.5f;
+        
+    if (x < 0 ||
+        y < 0 ||
+        z < 0)
+    {
+      return false;
+    }
+    else
+    {
+      unsigned int ux = static_cast<unsigned int>(std::floor(x));
+      unsigned int uy = static_cast<unsigned int>(std::floor(y));
+      unsigned int uz = static_cast<unsigned int>(std::floor(z));
+
+      float f000, f001, f010, f011;
+      if (bilinear_.Sample(f000, f001, f010, f011, ux, uy, uz))
+      {
+        const float ax = x - static_cast<float>(ux);
+        const float ay = y - static_cast<float>(uy);
+
+        float f100, f101, f110, f111;
+
+        if (bilinear_.Sample(f100, f101, f110, f111, ux, uy, uz + 1))
+        {
+          const float az = z - static_cast<float>(uz);
+          target = GeometryToolbox::ComputeTrilinearInterpolationUnitSquare
+            (ax, ay, az, f000, f001, f010, f011, f100, f101, f110, f111);
+        }
+        else
+        {
+          target = GeometryToolbox::ComputeBilinearInterpolationUnitSquare
+            (ax, ay, f000, f001, f010, f011);
+        }
+
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    }
+  }
+
+
+  /*
+  See important comment above
+  */
+
+
+  template <Orthanc::PixelFormat Format>
+  bool SubvoxelReader<Format, ImageInterpolation_Trilinear>::GetValue(PixelType& target,
+                                                                      float x,
+                                                                      float y,
+                                                                      float z) const
+  {
+    float value;
+
+    if (GetFloatValue(value, x, y, z))
+    {
+      Traits::FloatToPixel(target, value);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/TextRenderer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,135 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "TextRenderer.h"
+
+#include "../Scene2D/CairoCompositor.h"
+#include "../Scene2D/ColorTextureSceneLayer.h"
+#include "../Scene2D/FloatTextureSceneLayer.h"
+#include "../Scene2D/TextSceneLayer.h"
+#include "../Fonts/GlyphBitmapAlphabet.h"
+#include "../Fonts/FontRenderer.h"
+
+#include <Images/Image.h>
+#include <Images/ImageProcessing.h>
+#include <Images/PngWriter.h>
+#include <Toolbox.h>
+
+namespace OrthancStone
+{
+  Orthanc::ImageAccessor* TextRenderer::Render(const std::string& ttf,
+                                               unsigned int fontSize,
+                                               const std::string& utf8String)
+  {
+    FontRenderer renderer;
+    renderer.LoadFont(ttf, fontSize);
+
+    // add each char to be rendered to the alphabet
+    std::unique_ptr<GlyphBitmapAlphabet> alphabet(new GlyphBitmapAlphabet);
+
+    size_t posInString = 0;
+    uint32_t unicode;
+    size_t utf8CharLength;
+
+    while (posInString < utf8String.size())
+    {
+      Orthanc::Toolbox::Utf8ToUnicodeCharacter(unicode, utf8CharLength, utf8String, posInString);
+      alphabet->AddUnicodeCharacter(renderer, unicode);
+      posInString += utf8CharLength;
+    }
+
+
+    std::unique_ptr<Orthanc::ImageAccessor> renderedText(alphabet->RenderText(utf8String));
+
+    // add a blank line on top of the text (to improve bilinear filtering of the topmost line)
+    std::unique_ptr<Orthanc::Image> renderedTextExtended(new Orthanc::Image(renderedText->GetFormat(), renderedText->GetWidth(), renderedText->GetHeight() + 1, true));
+
+    Orthanc::ImageAccessor textRegion;
+    Orthanc::ImageAccessor firstLineRegion;
+
+    renderedTextExtended->GetRegion(firstLineRegion, 0, 0, renderedText->GetWidth(), 1);
+    Orthanc::ImageProcessing::Set(firstLineRegion, 0);
+
+    renderedTextExtended->GetRegion(textRegion, 0, 1, renderedText->GetWidth(), renderedText->GetHeight());
+    Orthanc::ImageProcessing::Copy(textRegion, *renderedText);
+
+    return renderedTextExtended.release();
+  }
+
+
+  Orthanc::ImageAccessor* TextRenderer::RenderWithAlpha(const std::string& ttf,
+                                                        unsigned int fontSize,
+                                                        const std::string& utf8String,
+                                                        uint8_t foreground)
+  {
+    std::unique_ptr<Orthanc::ImageAccessor> renderedText8(Render(ttf, fontSize, utf8String));
+    std::unique_ptr<Orthanc::Image> target(new Orthanc::Image(Orthanc::PixelFormat_RGBA32, renderedText8->GetWidth(), renderedText8->GetHeight(), true));
+
+    Orthanc::ImageProcessing::Set(*target, foreground, foreground, foreground, *renderedText8);
+    return target.release();
+  }
+
+
+  // currently disabled because the background is actually not transparent once we use the Cairo Compositor !
+  //
+  //  // renders text in color + a border with alpha in a RGBA32 image
+  //  Orthanc::ImageAccessor* TextRenderer::RenderWithAlpha(const std::string& ttf,
+  //                                                        unsigned int fontSize,
+  //                                                        const std::string& utf8String,
+  //                                                        uint8_t foreground,
+  //                                                        uint8_t borderColor)
+  //  {
+  //    std::unique_ptr<Orthanc::ImageAccessor> renderedBorderAlpha(RenderWithAlpha(ttf, fontSize, utf8String, borderColor));
+  //    std::unique_ptr<Orthanc::ImageAccessor> renderedTextAlpha(RenderWithAlpha(ttf, fontSize, utf8String, foreground));
+
+  //    unsigned int textWidth = renderedBorderAlpha->GetWidth();
+  //    unsigned int textHeight = renderedBorderAlpha->GetHeight();
+
+  //    Scene2D targetScene;
+  //    std::unique_ptr<ColorTextureSceneLayer> borderLayerLeft(new ColorTextureSceneLayer(*renderedBorderAlpha));
+  //    std::unique_ptr<ColorTextureSceneLayer> borderLayerRight(new ColorTextureSceneLayer(*renderedBorderAlpha));
+  //    std::unique_ptr<ColorTextureSceneLayer> borderLayerTop(new ColorTextureSceneLayer(*renderedBorderAlpha));
+  //    std::unique_ptr<ColorTextureSceneLayer> borderLayerBottom(new ColorTextureSceneLayer(*renderedBorderAlpha));
+  //    std::unique_ptr<ColorTextureSceneLayer> textLayerCenter(new ColorTextureSceneLayer(*renderedTextAlpha));
+
+  //    borderLayerLeft->SetOrigin(0, 1);
+  //    borderLayerRight->SetOrigin(2, 1);
+  //    borderLayerTop->SetOrigin(1, 0);
+  //    borderLayerBottom->SetOrigin(1, 2);
+  //    textLayerCenter->SetOrigin(1, 1);
+  //    targetScene.SetLayer(1, borderLayerLeft.release());
+  //    targetScene.SetLayer(2, borderLayerRight.release());
+  //    targetScene.SetLayer(3, borderLayerTop.release());
+  //    targetScene.SetLayer(4, borderLayerBottom.release());
+  //    targetScene.SetLayer(5, textLayerCenter.release());
+
+  //    targetScene.FitContent(textWidth + 2, textHeight + 2);
+  //    CairoCompositor compositor(targetScene, textWidth + 2, textHeight + 2);
+  //    compositor.Refresh();
+
+  //    Orthanc::ImageAccessor canvas;
+  //    compositor.GetCanvas().GetReadOnlyAccessor(canvas);
+
+  //    std::unique_ptr<Orthanc::Image> output(new Orthanc::Image(Orthanc::PixelFormat_RGBA32, canvas.GetWidth(), canvas.GetHeight(), false));
+  //    Orthanc::ImageProcessing::Convert(*output, canvas);
+  //    return output.release();
+  //  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/TextRenderer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,52 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <Images/Image.h>
+
+namespace OrthancStone
+{
+  // Helpers methods to render text in bitmaps.
+  // Compared to the GlyphBitmapAlphabet::RenderText, these methods do not need a
+  // code page.
+  class TextRenderer : public boost::noncopyable
+  {
+  public:
+    // simply renders text in GrayScale8 with a black background and a white text
+    static Orthanc::ImageAccessor* Render(const std::string& ttf,
+                                          unsigned int fontSize,
+                                          const std::string& utf8String);
+
+    // renders text in "color" with alpha in a RGBA32 image
+    static Orthanc::ImageAccessor* RenderWithAlpha(const std::string& ttf,
+                                                   unsigned int fontSize,
+                                                   const std::string& utf8String,
+                                                   uint8_t foreground);
+
+    //    // renders text in color + a border with alpha in a RGBA32 image
+    //    static Orthanc::ImageAccessor* RenderWithAlpha(const std::string& ttf,
+    //                                                   unsigned int fontSize,
+    //                                                   const std::string& utf8String,
+    //                                                   uint8_t foreground,
+    //                                                   uint8_t borderColor);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/UndoRedoStack.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,89 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "UndoRedoStack.h"
+
+#include <OrthancException.h>
+
+#include <cassert>
+
+namespace OrthancStone
+{
+  void UndoRedoStack::Clear(UndoRedoStack::Stack::iterator from)
+  {
+    for (Stack::iterator it = from; it != stack_.end(); ++it)
+    {
+      assert(*it != NULL);
+      delete *it;
+    }
+
+    stack_.erase(from, stack_.end());
+  }
+
+
+  UndoRedoStack::UndoRedoStack() :
+    current_(stack_.end())
+  {
+  }
+
+  
+  UndoRedoStack::~UndoRedoStack()
+  {
+    Clear(stack_.begin());
+  }
+
+  
+  void UndoRedoStack::Add(ICommand* command)
+  {
+    if (command == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+      
+    Clear(current_);
+
+    stack_.push_back(command);
+    current_ = stack_.end();
+  }
+
+  
+  void UndoRedoStack::Undo()
+  {
+    if (current_ != stack_.begin())
+    {
+      --current_;
+        
+      assert(*current_ != NULL);
+      (*current_)->Undo();
+    }
+  }
+
+  void UndoRedoStack::Redo()
+  {
+    if (current_ != stack_.end())
+    {
+      assert(*current_ != NULL);
+      (*current_)->Redo();
+
+      ++current_;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Toolbox/UndoRedoStack.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,64 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <boost/noncopyable.hpp>
+#include <list>
+
+
+namespace OrthancStone
+{
+  class UndoRedoStack : public boost::noncopyable
+  {
+  public:
+    class ICommand : public boost::noncopyable
+    {
+    public:
+      virtual ~ICommand()
+      {
+      }
+      
+      virtual void Undo() const = 0;
+      
+      virtual void Redo() const = 0;
+    };
+
+  private:
+    typedef std::list<ICommand*>  Stack;
+
+    Stack            stack_;
+    Stack::iterator  current_;
+
+    void Clear(Stack::iterator from);
+
+  public:
+    UndoRedoStack();
+    
+    ~UndoRedoStack();
+    
+    void Add(ICommand* command);
+    
+    void Undo();
+
+    void Redo();
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/IViewport.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,72 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#include "../Scene2D/ICompositor.h"
+#include "../Scene2DViewport/ViewportController.h"
+
+namespace OrthancStone
+{
+  /**
+   * Class that combines a Scene2D with a canvas where to draw the
+   * scene. A call to "Refresh()" will update the content of the
+   * canvas. A "IViewport" can possibly be accessed from several
+   * threads depending on the rendering back-end (e.g. in SDL or Qt):
+   * The "ILock" subclass implements the locking mechanism to modify
+   * the content of the scene. 
+   *
+   * NB: The lock must be a "recursive_mutex", as the viewport
+   * controller can lock it a second time (TODO - Why so?).
+   **/  
+  class IViewport : public boost::noncopyable
+  {
+  public:
+    class ILock : public boost::noncopyable
+    {
+    public:
+      virtual ~ILock()
+      {
+      }
+
+      virtual bool HasCompositor() const = 0;
+
+      /**
+      Do not store the result! Only access the compositor interface through
+      the lock.
+      */
+      virtual ICompositor& GetCompositor() = 0;
+
+      /**
+      Do not store the result! Only access the compositor interface through
+      the lock.
+      */
+      virtual ViewportController& GetController() = 0;
+
+      virtual void Invalidate() = 0;
+    };   
+    
+    virtual ~IViewport()
+    {
+    }
+
+    virtual ILock* Lock() = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/SdlViewport.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,230 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "SdlViewport.h"
+
+#include <OrthancException.h>
+
+#include <boost/make_shared.hpp>
+
+namespace OrthancStone
+{
+  ICompositor& SdlViewport::SdlLock::GetCompositor()
+  {
+    if (that_.compositor_.get() == NULL)
+    {
+      // The derived class should have called "AcquireCompositor()"
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+    else
+    {
+      return *that_.compositor_;
+    }
+  }
+
+
+  void SdlViewport::AcquireCompositor(ICompositor* compositor /* takes ownership */)
+  {
+    if (compositor == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    compositor_.reset(compositor);
+  }
+
+  SdlViewport::SdlViewport()
+  {
+    refreshEvent_ = SDL_RegisterEvents(1);
+
+    if (refreshEvent_ == static_cast<uint32_t>(-1))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+  
+  void SdlViewport::PostConstructor()
+  {
+    controller_ = boost::make_shared<ViewportController>(shared_from_this());
+  }
+    
+  void SdlViewport::SendRefreshEvent()
+  {
+    SDL_Event event;
+    SDL_memset(&event, 0, sizeof(event));
+    event.type = refreshEvent_;
+    SDL_PushEvent(&event);  // This function is thread-safe, and can be called from other threads safely.
+  }
+
+  
+  SdlOpenGLViewport::SdlOpenGLViewport(const std::string& title,
+                                       unsigned int width,
+                                       unsigned int height,
+                                       bool allowDpiScaling) :
+    context_(title.c_str(), width, height, allowDpiScaling)
+  {
+    AcquireCompositor(new OpenGLCompositor(context_));  // (*)
+  }
+
+  boost::shared_ptr<SdlOpenGLViewport> SdlOpenGLViewport::Create(
+    const std::string& title,
+    unsigned int width,
+    unsigned int height,
+    bool allowDpiScaling)
+  {
+    boost::shared_ptr<SdlOpenGLViewport> that =
+      boost::shared_ptr<SdlOpenGLViewport>(new SdlOpenGLViewport(title, width, height, allowDpiScaling));
+    that->SdlViewport::PostConstructor();
+    return that;
+  }
+
+  uint32_t SdlOpenGLViewport::GetSdlWindowId()
+  {
+    SdlWindow& sdlWindowWrapper = context_.GetWindow();
+    SDL_Window* sdlWindow = sdlWindowWrapper.GetObject();
+    Uint32 sdlWindowId = SDL_GetWindowID(sdlWindow);
+    return sdlWindowId;
+  }
+
+  SdlOpenGLViewport::~SdlOpenGLViewport()
+  {
+    // Make sure that the "OpenGLCompositor" is destroyed BEFORE the
+    // "OpenGLContext" it references (*)
+    ClearCompositor();
+  }
+
+
+  void SdlOpenGLViewport::Paint()
+  {
+    SdlLock lock(*this);
+    lock.GetCompositor().Refresh(lock.GetController().GetScene());
+  }
+
+
+  void SdlOpenGLViewport::UpdateSize(unsigned int width, unsigned int height)
+  {
+    // nothing to do in OpenGL, the OpenGLCompositor::UpdateSize will be called automatically
+    SdlLock lock(*this);
+    lock.Invalidate();
+  }
+
+
+  void SdlOpenGLViewport::ToggleMaximize()
+  {
+    // No need to call "Invalidate()" here, as "UpdateSize()" will
+    // be invoked after event "SDL_WINDOWEVENT_SIZE_CHANGED"
+    SdlLock lock(*this);
+    context_.ToggleMaximize();
+  }
+
+
+
+  SdlCairoViewport::SdlCairoViewport(const char* title,
+                                     unsigned int width,
+                                     unsigned int height,
+                                     bool allowDpiScaling) :
+    window_(title, width, height, false /* enable OpenGL */, allowDpiScaling),
+    sdlSurface_(NULL)
+  {
+    AcquireCompositor(new CairoCompositor(width, height));
+  }
+
+  SdlCairoViewport::~SdlCairoViewport()
+  {
+    if (sdlSurface_)
+    {
+      SDL_FreeSurface(sdlSurface_);
+    }
+  }
+  
+  uint32_t SdlCairoViewport::GetSdlWindowId()
+  {
+    SDL_Window* sdlWindow = window_.GetObject();
+    Uint32 sdlWindowId = SDL_GetWindowID(sdlWindow);
+    return sdlWindowId;
+  }
+
+  void SdlCairoViewport::Paint()
+  {
+    SdlLock lock(*this);
+
+    lock.GetCompositor().Refresh(lock.GetController().GetScene());
+    CreateSdlSurfaceFromCompositor(dynamic_cast<CairoCompositor&>(lock.GetCompositor()));
+    
+    if (sdlSurface_ != NULL)
+    {
+      window_.Render(sdlSurface_);
+    }
+  }
+
+
+  void SdlCairoViewport::UpdateSize(unsigned int width,
+                                    unsigned int height)
+  {
+    SdlLock lock(*this);
+    dynamic_cast<CairoCompositor&>(lock.GetCompositor()).UpdateSize(width, height);
+    lock.Invalidate();
+  }
+  
+
+  void SdlCairoViewport::ToggleMaximize()
+  {
+    // No need to call "Invalidate()" here, as "UpdateSize()" will
+    // be invoked after event "SDL_WINDOWEVENT_SIZE_CHANGED"
+    SdlLock lock(*this);
+    window_.ToggleMaximize();
+  }
+
+  
+  // Assumes that the mutex is locked
+  void SdlCairoViewport::CreateSdlSurfaceFromCompositor(CairoCompositor& compositor)
+  {
+    static const uint32_t rmask = 0x00ff0000;
+    static const uint32_t gmask = 0x0000ff00;
+    static const uint32_t bmask = 0x000000ff;
+
+    const unsigned int width = compositor.GetCanvas().GetWidth();
+    const unsigned int height = compositor.GetCanvas().GetHeight();
+
+    if (sdlSurface_ != NULL)
+    {
+      if (sdlSurface_->pixels == compositor.GetCanvas().GetBuffer() &&
+          sdlSurface_->w == static_cast<int>(width) &&
+          sdlSurface_->h == static_cast<int>(height) &&
+          sdlSurface_->pitch == static_cast<int>(compositor.GetCanvas().GetPitch()))
+      {
+        // The image from the compositor has not changed, no need to update the surface
+        return;
+      }
+      else
+      {
+        SDL_FreeSurface(sdlSurface_);
+      }
+    }
+
+    sdlSurface_ = SDL_CreateRGBSurfaceFrom((void*)(compositor.GetCanvas().GetBuffer()), width, height, 32,
+                                           compositor.GetCanvas().GetPitch(), rmask, gmask, bmask, 0);
+    if (!sdlSurface_)
+    {
+      LOG(ERROR) << "Cannot create a SDL surface from a Cairo surface";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/SdlViewport.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,195 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#pragma once
+
+#if !defined(ORTHANC_ENABLE_SDL)
+#  error Macro ORTHANC_ENABLE_SDL must be defined
+#endif
+
+#if ORTHANC_ENABLE_SDL != 1
+#  error SDL must be enabled to use this file
+#endif
+
+#if !defined(ORTHANC_ENABLE_OPENGL)
+#  error The macro ORTHANC_ENABLE_OPENGL must be defined
+#endif
+
+#if ORTHANC_ENABLE_OPENGL != 1
+#  error Support for OpenGL is disabled
+#endif
+
+#include "../OpenGL/SdlOpenGLContext.h"
+#include "../Scene2D/OpenGLCompositor.h"
+#include "../Scene2D/CairoCompositor.h"
+#include "IViewport.h"
+
+#include <SDL_events.h>
+
+// TODO: required for UndoStack injection
+// I don't like it either :)
+#include <boost/weak_ptr.hpp>
+
+#include <boost/thread/recursive_mutex.hpp>
+
+namespace OrthancStone
+{
+  class UndoStack;
+
+  class SdlViewport : public IViewport,
+                      public boost::enable_shared_from_this<SdlViewport>
+  {
+  private:
+    boost::recursive_mutex                 mutex_;
+    uint32_t                               refreshEvent_;
+    boost::shared_ptr<ViewportController>  controller_;
+    std::unique_ptr<ICompositor>           compositor_;
+
+    void SendRefreshEvent();
+
+  protected:
+    class SdlLock : public ILock
+    {
+    private:
+      SdlViewport&                        that_;
+      boost::recursive_mutex::scoped_lock lock_;
+
+    public:
+      SdlLock(SdlViewport& that) :
+      that_(that),
+      lock_(that.mutex_)
+      {
+      }
+
+      virtual bool HasCompositor() const ORTHANC_OVERRIDE
+      {
+        return true;
+      }
+
+      virtual ICompositor& GetCompositor() ORTHANC_OVERRIDE;
+      
+      virtual ViewportController& GetController() ORTHANC_OVERRIDE
+      {
+        return *that_.controller_;
+      }
+
+      virtual void Invalidate() ORTHANC_OVERRIDE
+      {
+        that_.SendRefreshEvent();
+      }
+    };
+
+    void ClearCompositor()
+    {
+      compositor_.reset();
+    }
+
+    void AcquireCompositor(ICompositor* compositor /* takes ownership */);
+
+  protected:
+    SdlViewport();
+    void PostConstructor();
+
+  public:
+
+    bool IsRefreshEvent(const SDL_Event& event) const
+    {
+      return (event.type == refreshEvent_);
+    }
+
+    virtual ILock* Lock() ORTHANC_OVERRIDE
+    {
+      return new SdlLock(*this);
+    }
+
+    virtual uint32_t GetSdlWindowId() = 0;
+
+    virtual void UpdateSize(unsigned int width,
+                            unsigned int height) = 0;
+
+    virtual void ToggleMaximize() = 0;
+
+    // Must be invoked from the main SDL thread
+    virtual void Paint() = 0;
+  };
+
+
+  class SdlOpenGLViewport : public SdlViewport
+  {
+  private:
+    SdlOpenGLContext  context_;
+
+  private:
+    SdlOpenGLViewport(const std::string& title,
+                      unsigned int       width,
+                      unsigned int       height,
+                      bool               allowDpiScaling = true);
+  public:
+    static boost::shared_ptr<SdlOpenGLViewport> Create(const std::string&,
+                                                       unsigned int width,
+                                                       unsigned int height,
+                                                       bool allowDpiScaling = true);
+
+
+    virtual ~SdlOpenGLViewport();
+
+    virtual uint32_t GetSdlWindowId() ORTHANC_OVERRIDE;
+
+    virtual void Paint() ORTHANC_OVERRIDE;
+
+    virtual void UpdateSize(unsigned int width, 
+                            unsigned int height) ORTHANC_OVERRIDE;
+
+    virtual void ToggleMaximize() ORTHANC_OVERRIDE;
+  };
+
+
+  class SdlCairoViewport : public SdlViewport
+  {
+  private:
+    SdlWindow     window_;
+    SDL_Surface*  sdlSurface_;
+
+    void CreateSdlSurfaceFromCompositor(CairoCompositor& compositor);
+
+  private:
+    SdlCairoViewport(const char* title,
+                     unsigned int width,
+                     unsigned int height,
+                     bool allowDpiScaling = true);
+  public:
+    static boost::shared_ptr<SdlCairoViewport> Create(const char* title,
+                     unsigned int width,
+                     unsigned int height,
+                     bool allowDpiScaling = true);
+
+
+    virtual ~SdlCairoViewport();
+
+    virtual uint32_t GetSdlWindowId() ORTHANC_OVERRIDE;
+
+    virtual void Paint() ORTHANC_OVERRIDE;
+
+    virtual void UpdateSize(unsigned int width,
+                            unsigned int height) ORTHANC_OVERRIDE;
+
+    virtual void ToggleMaximize() ORTHANC_OVERRIDE;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/SdlWindow.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,210 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "SdlWindow.h"
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+#ifdef WIN32 
+#include <windows.h> // for SetProcessDpiAware
+#endif 
+// WIN32
+
+#include <SDL_render.h>
+#include <SDL_video.h>
+#include <SDL.h>
+
+namespace OrthancStone
+{
+  SdlWindow::SdlWindow(const char* title,
+                       unsigned int width,
+                       unsigned int height,
+                       bool enableOpenGl,
+                       bool allowDpiScaling) :
+    maximized_(false)
+  {
+    // TODO Understand why, with SDL_WINDOW_OPENGL + MinGW32 + Release
+    // build mode, the application crashes whenever the SDL window is
+    // resized or maximized
+
+    uint32_t windowFlags, rendererFlags;
+    if (enableOpenGl)
+    {
+      windowFlags = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE;
+      rendererFlags = SDL_RENDERER_ACCELERATED;
+    }
+    else
+    {
+      windowFlags = SDL_WINDOW_RESIZABLE;
+      rendererFlags = SDL_RENDERER_SOFTWARE;
+    }
+
+// TODO: probably required on MacOS X, too
+#if defined(WIN32) && (_WIN32_WINNT >= 0x0600)
+    if (!allowDpiScaling)
+    {
+      // if we do NOT allow DPI scaling, it means an SDL pixel will be a real
+      // monitor pixel. This is needed for high-DPI applications
+
+      // Enable high-DPI support on Windows
+
+      // THE FOLLOWING HAS BEEN COMMENTED OUT BECAUSE IT WILL CRASH UNDER 
+      // OLD WINDOWS VERSIONS
+      // ADD THIS AT THE TOP TO ENABLE IT:
+      // 
+      //#pragma comment(lib, "Shcore.lib") THIS IS ONLY REQUIRED FOR SetProcessDpiAwareness
+      //#include <windows.h>
+      //#include <ShellScalingAPI.h> THIS IS ONLY REQUIRED FOR SetProcessDpiAwareness
+      //#include <comdef.h> THIS IS ONLY REQUIRED FOR SetProcessDpiAwareness
+      // SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
+      
+      // This is supported on Vista+
+      SetProcessDPIAware();
+
+      windowFlags |= SDL_WINDOW_ALLOW_HIGHDPI;
+    }
+#endif 
+// WIN32
+    
+    window_ = SDL_CreateWindow(title,
+                               SDL_WINDOWPOS_UNDEFINED,
+                               SDL_WINDOWPOS_UNDEFINED,
+                               width, height, windowFlags);
+
+    if (window_ == NULL) 
+    {
+      LOG(ERROR) << "Cannot create the SDL window: " << SDL_GetError();
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    renderer_ = SDL_CreateRenderer(window_, -1, rendererFlags);
+    if (!renderer_)
+    {
+      LOG(ERROR) << "Cannot create the SDL renderer: " << SDL_GetError();
+      SDL_DestroyWindow(window_);
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+  SdlWindow::~SdlWindow()
+  {
+    if (renderer_ != NULL)
+    { 
+      SDL_DestroyRenderer(renderer_);
+    }
+
+    if (window_ != NULL)
+    { 
+      SDL_DestroyWindow(window_);
+    }
+  }
+
+
+  unsigned int SdlWindow::GetWidth() const
+  {
+    int w = -1;
+    SDL_GetWindowSize(window_, &w, NULL);
+
+    if (w < 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+    else
+    {
+      return static_cast<unsigned int>(w);
+    }
+  }
+
+
+  unsigned int SdlWindow::GetHeight() const
+  {
+    int h = -1;
+    SDL_GetWindowSize(window_, NULL, &h);
+
+    if (h < 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+    else
+    {
+      return static_cast<unsigned int>(h);
+    }
+  }
+
+
+  void SdlWindow::Render(SDL_Surface* surface)
+  {
+    /**
+     * "You are strongly encouraged to call SDL_RenderClear() to
+     * initialize the backbuffer before starting each new frame's
+     * drawing, even if you plan to overwrite every pixel."
+     * https://wiki.libsdl.org/SDL_RenderPresent
+     **/
+    SDL_SetRenderDrawColor(renderer_, 0, 0, 0, 255);
+    SDL_RenderClear(renderer_);  // Clear the entire screen to our selected color
+
+    SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer_, surface);
+    if (texture != NULL)
+    {
+      SDL_RenderCopy(renderer_, texture, NULL, NULL);
+      SDL_DestroyTexture(texture);
+    }
+
+    SDL_RenderPresent(renderer_);
+  }
+
+
+  void SdlWindow::ToggleMaximize()
+  {
+    if (maximized_)
+    {
+      SDL_RestoreWindow(window_);
+      maximized_ = false;
+    }
+    else
+    {
+      SDL_MaximizeWindow(window_);
+      maximized_ = true;
+    }
+  }
+
+
+  void SdlWindow::GlobalInitialize()
+  {
+    if (SDL_Init(SDL_INIT_VIDEO) != 0)
+    {
+      LOG(ERROR) << "Cannot initialize SDL";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+  void SdlWindow::GlobalFinalize()
+  {
+    SDL_Quit();
+  }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/SdlWindow.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,76 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if ORTHANC_ENABLE_SDL == 1
+
+#include <boost/noncopyable.hpp>
+
+// Forward declaration of SDL type to avoid clashes with DCMTK headers
+// on "typedef Sint8", in "StoneInitialization.cpp"
+struct SDL_Window;
+struct SDL_Renderer;
+struct SDL_Surface;
+
+namespace OrthancStone
+{
+  class SdlWindow : public boost::noncopyable
+  {
+  private:
+    struct SDL_Window   *window_;
+    struct SDL_Renderer *renderer_;
+    bool                 maximized_;
+
+  public:
+    SdlWindow(const char* title,
+              unsigned int width,
+              unsigned int height,
+              bool enableOpenGl,
+              bool allowDpiScaling = true);
+
+    ~SdlWindow();
+
+    SDL_Window *GetObject() const
+    {
+      return window_;
+    }
+
+    unsigned int GetWidth() const;
+
+    unsigned int GetHeight() const;
+
+    /**
+     * WARNING: "Refresh()" cannot only be called from the main SDL
+     * thread, in which the window was created. Otherwise, the
+     * renderer displays nothing!
+     **/
+    void Render(struct SDL_Surface* surface);
+
+    void ToggleMaximize();
+
+    static void GlobalInitialize();
+
+    static void GlobalFinalize();
+  };
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/WebAssemblyCairoViewport.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,139 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebAssemblyCairoViewport.h"
+
+#include "../Scene2D/CairoCompositor.h"
+
+#include <Images/Image.h>
+
+#include <boost/math/special_functions/round.hpp>
+
+namespace OrthancStone
+{
+  void WebAssemblyCairoViewport::GetCanvasSize(unsigned int& width,
+                                               unsigned int& height)
+  {
+    double w, h;
+    emscripten_get_element_css_size(GetCanvasCssSelector().c_str(), &w, &h);
+
+    /**
+     * Emscripten has the function emscripten_get_element_css_size()
+     * to query the width and height of a named HTML element. I'm
+     * calling this first to get the initial size of the canvas DOM
+     * element, and then call emscripten_set_canvas_size() to
+     * initialize the framebuffer size of the canvas to the same
+     * size as its DOM element.
+     * https://floooh.github.io/2017/02/22/emsc-html.html
+     **/
+    if (w > 0 &&
+        h > 0)
+    {
+      width = static_cast<unsigned int>(boost::math::iround(w));
+      height = static_cast<unsigned int>(boost::math::iround(h));
+    }
+    else
+    {
+      width = 0;
+      height = 0;
+    }
+  }
+
+
+  void WebAssemblyCairoViewport::Paint(ICompositor& compositor,
+                                       ViewportController& controller)
+  {
+    compositor.Refresh(controller.GetScene());
+
+    // Create a temporary memory buffer for the canvas in JavaScript
+    Orthanc::ImageAccessor cairo;
+    dynamic_cast<CairoCompositor&>(compositor).GetCanvas().GetReadOnlyAccessor(cairo);
+
+    const unsigned int width = cairo.GetWidth();
+    const unsigned int height = cairo.GetHeight();
+
+    if (javascript_.get() == NULL ||
+        javascript_->GetWidth() != width ||
+        javascript_->GetHeight() != height)
+    {
+      javascript_.reset(new Orthanc::Image(Orthanc::PixelFormat_RGBA32, width, height,
+                                           true /* force minimal pitch */));
+    }
+      
+    // Convert from BGRA32 memory layout (only color mode supported
+    // by Cairo, which corresponds to CAIRO_FORMAT_ARGB32) to RGBA32
+    // (as expected by HTML5 canvas). This simply amounts to
+    // swapping the B and R channels. Alpha channel is also set to
+    // full opacity (255).
+    uint8_t* q = reinterpret_cast<uint8_t*>(javascript_->GetBuffer());
+    for (unsigned int y = 0; y < height; y++)
+    {
+      const uint8_t* p = reinterpret_cast<const uint8_t*>(cairo.GetConstRow(y));
+      for (unsigned int x = 0; x < width; x++)
+      {
+        q[0] = p[2];  // R
+        q[1] = p[1];  // G
+        q[2] = p[0];  // B
+        q[3] = 255;   // A
+
+        p += 4;
+        q += 4;
+      }
+    }
+
+    // Execute JavaScript commands to blit the image buffer onto the
+    // 2D drawing context of the HTML5 canvas
+    EM_ASM({
+        const data = new Uint8ClampedArray(Module.HEAP8.buffer, $1, 4 * $2 * $3);
+        const img = new ImageData(data, $2, $3);
+        const ctx = document.getElementById(UTF8ToString($0)).getContext('2d');
+        ctx.putImageData(img, 0, 0);
+      },
+      GetCanvasId().c_str(), // $0
+      javascript_->GetBuffer(),   // $1
+      javascript_->GetWidth(),    // $2
+      javascript_->GetHeight());  // $3
+  }
+    
+
+  void WebAssemblyCairoViewport::UpdateSize(ICompositor& compositor)
+  {
+    unsigned int width, height;
+    GetCanvasSize(width, height);
+    emscripten_set_canvas_element_size(GetCanvasCssSelector().c_str(), width, height);
+
+    dynamic_cast<CairoCompositor&>(compositor).UpdateSize(width, height);
+  }
+
+
+  WebAssemblyCairoViewport::WebAssemblyCairoViewport(
+    const std::string& canvasId) :
+    WebAssemblyViewport(canvasId)
+  {
+    unsigned int width, height;
+    GetCanvasSize(width, height);
+    emscripten_set_canvas_element_size(GetCanvasCssSelector().c_str(), 
+                                       width, 
+                                       height);
+
+    AcquireCompositor(new CairoCompositor(width, height));
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/WebAssemblyCairoViewport.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,50 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WebAssemblyViewport.h"
+
+namespace OrthancStone
+{
+  class WebAssemblyCairoViewport : public WebAssemblyViewport
+  {
+  private:
+    std::unique_ptr<Orthanc::ImageAccessor>  javascript_;
+        
+    void GetCanvasSize(unsigned int& width,
+                       unsigned int& height);
+
+  protected:
+    virtual void Paint(ICompositor& compositor,
+                       ViewportController& controller) ORTHANC_OVERRIDE;
+    
+    virtual void UpdateSize(ICompositor& compositor) ORTHANC_OVERRIDE;
+
+  public:
+    WebAssemblyCairoViewport(const std::string& canvasId);
+
+    virtual ~WebAssemblyCairoViewport()
+    {
+      ClearCompositor();
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/WebAssemblyViewport.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,339 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebAssemblyViewport.h"
+
+#include "../Toolbox/GenericToolbox.h"
+
+#include <OrthancException.h>
+
+#include <boost/make_shared.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+namespace OrthancStone
+{
+  static void ConvertMouseEvent(PointerEvent& target,
+                                const EmscriptenMouseEvent& source,
+                                const ICompositor& compositor)
+  {
+    int x = static_cast<int>(source.targetX);
+    int y = static_cast<int>(source.targetY);
+
+    switch (source.button)
+    {
+      case 0:
+        target.SetMouseButton(MouseButton_Left);
+        break;
+
+      case 1:
+        target.SetMouseButton(MouseButton_Middle);
+        break;
+
+      case 2:
+        target.SetMouseButton(MouseButton_Right);
+        break;
+
+      default:
+        target.SetMouseButton(MouseButton_None);
+        break;
+    }
+      
+    target.AddPosition(compositor.GetPixelCenterCoordinates(x, y));
+    target.SetAltModifier(source.altKey);
+    target.SetControlModifier(source.ctrlKey);
+    target.SetShiftModifier(source.shiftKey);
+  }
+
+
+  class WebAssemblyViewport::WasmLock : public ILock
+  {
+  private:
+    WebAssemblyViewport& that_;
+
+  public:
+    WasmLock(WebAssemblyViewport& that) :
+      that_(that)
+    {
+    }
+
+    virtual bool HasCompositor() const ORTHANC_OVERRIDE
+    {
+      return that_.compositor_.get() != NULL;
+    }
+
+    virtual ICompositor& GetCompositor() ORTHANC_OVERRIDE
+    {
+      if (that_.compositor_.get() == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      else
+      {
+        return *that_.compositor_;
+      }
+    }
+
+    virtual ViewportController& GetController() ORTHANC_OVERRIDE
+    {
+      assert(that_.controller_);
+      return *that_.controller_;
+    }
+
+    virtual void Invalidate() ORTHANC_OVERRIDE
+    {
+      that_.Invalidate();
+    }
+  };
+
+
+  EM_BOOL WebAssemblyViewport::OnRequestAnimationFrame(double time, void *userData)
+  {
+    LOG(TRACE) << __func__;
+    WebAssemblyViewport* that = reinterpret_cast<WebAssemblyViewport*>(userData);
+
+    if (that->compositor_.get() != NULL &&
+        that->controller_ /* should always be true */)
+    {
+      that->Paint(*that->compositor_, *that->controller_);
+    }
+      
+    LOG(TRACE) << "Exiting: " << __func__;
+    return true;
+  }
+
+  EM_BOOL WebAssemblyViewport::OnResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData)
+  {
+    LOG(TRACE) << __func__;
+    WebAssemblyViewport* that = reinterpret_cast<WebAssemblyViewport*>(userData);
+
+    if (that->compositor_.get() != NULL)
+    {
+      that->UpdateSize(*that->compositor_);
+      that->Invalidate();
+    }
+      
+    LOG(TRACE) << "Exiting: " << __func__;
+    return true;
+  }
+
+
+  EM_BOOL WebAssemblyViewport::OnMouseDown(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData)
+  {
+    WebAssemblyViewport* that = reinterpret_cast<WebAssemblyViewport*>(userData);
+
+    LOG(TRACE) << "mouse down: " << that->GetCanvasCssSelector();      
+
+    if (that->compositor_.get() != NULL &&
+        that->interactor_.get() != NULL)
+    {
+      PointerEvent pointer;
+      ConvertMouseEvent(pointer, *mouseEvent, *that->compositor_);
+
+      that->controller_->HandleMousePress(*that->interactor_, pointer,
+                                         that->compositor_->GetCanvasWidth(),
+                                         that->compositor_->GetCanvasHeight());        
+      that->Invalidate();
+    }
+
+    LOG(TRACE) << "Exiting: " << __func__;
+    return true;
+  }
+
+    
+  EM_BOOL WebAssemblyViewport::OnMouseMove(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData)
+  {
+    WebAssemblyViewport* that = reinterpret_cast<WebAssemblyViewport*>(userData);
+
+    if (that->compositor_.get() != NULL &&
+        that->controller_->HasActiveTracker())
+    {
+      PointerEvent pointer;
+      ConvertMouseEvent(pointer, *mouseEvent, *that->compositor_);
+      if (that->controller_->HandleMouseMove(pointer))
+      {
+        that->Invalidate();
+      }
+    }
+
+    LOG(TRACE) << "Exiting: " << __func__;
+    return true;
+  }
+    
+  EM_BOOL WebAssemblyViewport::OnMouseUp(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData)
+  {
+    LOG(TRACE) << __func__;
+    WebAssemblyViewport* that = reinterpret_cast<WebAssemblyViewport*>(userData);
+
+    if (that->compositor_.get() != NULL)
+    {
+      PointerEvent pointer;
+      ConvertMouseEvent(pointer, *mouseEvent, *that->compositor_);
+      that->controller_->HandleMouseRelease(pointer);
+      that->Invalidate();
+    }
+
+    LOG(TRACE) << "Exiting: " << __func__;
+    return true;
+  }
+
+  void WebAssemblyViewport::Invalidate()
+  {
+    emscripten_request_animation_frame(OnRequestAnimationFrame, reinterpret_cast<void*>(this));
+  }
+
+  void WebAssemblyViewport::AcquireCompositor(ICompositor* compositor /* takes ownership */)
+  {
+    if (compositor == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    else
+    {
+      compositor_.reset(compositor);
+    }
+  }
+
+#if DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR == 1
+// everything OK..... we're using the new setting
+#else
+#pragma message("WARNING: DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR is not defined or equal to 0. Stone will use the OLD Emscripten rules for DOM element selection.")
+#endif
+
+  WebAssemblyViewport::WebAssemblyViewport(
+    const std::string& canvasId, bool enableEmscriptenMouseEvents) :
+    canvasId_(canvasId),
+#if DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR == 1
+    canvasCssSelector_("#" + canvasId),
+#else
+    canvasCssSelector_(canvasId),
+#endif
+    interactor_(new DefaultViewportInteractor),
+    enableEmscriptenMouseEvents_(enableEmscriptenMouseEvents)
+  {
+  }
+
+  void WebAssemblyViewport::PostConstructor()
+  {
+    boost::shared_ptr<IViewport> viewport = shared_from_this();
+    controller_.reset(new ViewportController(viewport));
+
+    LOG(INFO) << "Initializing Stone viewport on HTML canvas: " 
+              << canvasId_;
+
+    if (canvasId_.empty() ||
+        canvasId_[0] == '#')
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange,
+        "The canvas identifier must not start with '#'");
+    }
+
+    // Disable right-click on the canvas (i.e. context menu)
+    EM_ASM({
+        document.getElementById(UTF8ToString($0)).oncontextmenu = 
+        function(event)
+        {
+          event.preventDefault();
+        }
+      },
+      canvasId_.c_str()   // $0
+      );
+
+    // It is not possible to monitor the resizing of individual
+    // canvas, so we track the full window of the browser
+    emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW,
+                                   reinterpret_cast<void*>(this),
+                                   false,
+                                   OnResize);
+
+    if (enableEmscriptenMouseEvents_)
+    {
+
+      // if any of this function causes an error in the console, please
+      // make sure you are using the new (as of 1.39.x) version of 
+      // emscripten element lookup rules( pass 
+      // "-s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1" to the linker.
+
+      emscripten_set_mousedown_callback(canvasCssSelector_.c_str(),
+                                        reinterpret_cast<void*>(this),
+                                        false,
+                                        OnMouseDown);
+
+      emscripten_set_mousemove_callback(canvasCssSelector_.c_str(),
+                                        reinterpret_cast<void*>(this),
+                                        false,
+                                        OnMouseMove);
+
+      emscripten_set_mouseup_callback(canvasCssSelector_.c_str(),
+                                      reinterpret_cast<void*>(this),
+                                      false,
+                                      OnMouseUp);
+    }
+  }
+
+  void WebAssemblyViewport::UpdateCanvasSize()
+  {
+    UpdateSize(*compositor_);
+  }
+
+  WebAssemblyViewport::~WebAssemblyViewport()
+  {
+    emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW,
+                                   reinterpret_cast<void*>(this),
+                                   false,
+                                   NULL);
+
+    if (enableEmscriptenMouseEvents_)
+    {
+
+      emscripten_set_mousedown_callback(canvasCssSelector_.c_str(),
+                                        reinterpret_cast<void*>(this),
+                                        false,
+                                        NULL);
+
+      emscripten_set_mousemove_callback(canvasCssSelector_.c_str(),
+                                        reinterpret_cast<void*>(this),
+                                        false,
+                                        NULL);
+
+      emscripten_set_mouseup_callback(canvasCssSelector_.c_str(),
+                                      reinterpret_cast<void*>(this),
+                                      false,
+                                      NULL);
+    }
+  }
+  
+  IViewport::ILock* WebAssemblyViewport::Lock()
+  {
+    return new WasmLock(*this);
+  }
+  
+  void WebAssemblyViewport::AcquireInteractor(IViewportInteractor* interactor)
+  {
+    if (interactor == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    else
+    {
+      interactor_.reset(interactor);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/WebAssemblyViewport.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,123 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#if !defined(ORTHANC_ENABLE_WASM)
+#  error Macro ORTHANC_ENABLE_WASM must be defined
+#endif
+
+#if ORTHANC_ENABLE_WASM != 1
+#  error This file can only be used if targeting WebAssembly
+#endif
+
+#include "IViewport.h"
+
+#include <Compatibility.h>
+
+#include <emscripten.h>
+#include <emscripten/html5.h>
+
+#include <memory>
+#include <string>
+
+namespace OrthancStone
+{
+  class WebAssemblyViewport : public IViewport,
+                              public boost::enable_shared_from_this<WebAssemblyViewport>
+
+  {
+  private:
+    class WasmLock;
+    
+    std::string                           canvasId_;
+    std::string                           canvasCssSelector_;
+    std::unique_ptr<ICompositor>          compositor_;
+    std::unique_ptr<ViewportController>   controller_;
+    std::unique_ptr<IViewportInteractor>  interactor_;
+    bool                                  enableEmscriptenMouseEvents_;
+
+    static EM_BOOL OnRequestAnimationFrame(double time, void *userData);
+    
+    static EM_BOOL OnResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData);
+
+    static EM_BOOL OnMouseDown(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData);
+    
+    static EM_BOOL OnMouseMove(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData);
+    
+    static EM_BOOL OnMouseUp(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData);
+
+  protected:
+    void Invalidate();
+    
+    void ClearCompositor()
+    {
+      compositor_.reset();
+    }
+
+    bool HasCompositor() const
+    {
+      return compositor_.get() != NULL;
+    }
+
+    void AcquireCompositor(ICompositor* compositor /* takes ownership */);
+
+    virtual void Paint(ICompositor& compositor,
+                       ViewportController& controller) = 0;
+
+    virtual void UpdateSize(ICompositor& compositor) = 0;
+
+    /**
+    The second argument is temporary and should be deleted once the migration 
+    to interactors is finished.
+    */
+    WebAssemblyViewport(const std::string& canvasId, 
+                        bool enableEmscriptenMouseEvents = true);
+
+    void PostConstructor();
+
+  public:
+    virtual ILock* Lock() ORTHANC_OVERRIDE;
+
+    ~WebAssemblyViewport();
+
+    virtual void UpdateCanvasSize();
+
+    /**
+    This method takes ownership
+    */
+    void AcquireInteractor(IViewportInteractor* interactor);
+
+    const std::string& GetCanvasId() const
+    {
+      return canvasId_;
+    }
+
+    /**
+    emscripten functions requires the css selector for the canvas. This is 
+    different from the canvas id (the syntax is '#mycanvasid')
+    */
+    const std::string& GetCanvasCssSelector() const
+    {
+      return canvasCssSelector_;
+    }
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/WebGLViewport.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,85 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebGLViewport.h"
+
+#include "../StoneException.h"
+#include "../Scene2D/OpenGLCompositor.h"
+
+namespace OrthancStone
+{
+  void WebGLViewport::Paint(ICompositor& compositor,
+                            ViewportController& controller)
+  {
+    try
+    {
+      compositor.Refresh(controller.GetScene());
+
+      /**
+       * No need to manually swap the buffer: "Rendered WebGL content
+       * is implicitly presented (displayed to the user) on the canvas
+       * when the event handler that renders with WebGL returns back
+       * to the browser event loop."
+       * https://emscripten.org/docs/api_reference/html5.h.html#webgl-context
+       *
+       * Could call "emscripten_webgl_commit_frame()" if
+       * "explicitSwapControl" option were set to "true".
+       **/
+    }
+    catch (const StoneException& e)
+    {
+      // Ignore problems about the loss of the WebGL context (edge case)
+      if (e.GetErrorCode() == ErrorCode_WebGLContextLost)
+      {
+        return;
+      }
+      else
+      {
+        throw;
+      }
+    }
+  }
+    
+
+  WebGLViewport::WebGLViewport(const std::string& canvasId, bool enableEmscriptenMouseEvents) :
+    WebAssemblyViewport(canvasId,enableEmscriptenMouseEvents),
+    context_(GetCanvasCssSelector())
+  {
+    AcquireCompositor(new OpenGLCompositor(context_));
+  }
+
+  boost::shared_ptr<WebGLViewport> WebGLViewport::Create(
+    const std::string& canvasId, bool enableEmscriptenMouseEvents)
+  {
+    boost::shared_ptr<WebGLViewport> that = boost::shared_ptr<WebGLViewport>(
+        new WebGLViewport(canvasId, enableEmscriptenMouseEvents));
+    
+    that->WebAssemblyViewport::PostConstructor();
+    return that;
+  }
+
+  WebGLViewport::~WebGLViewport()
+  {
+    // Make sure to delete the compositor before its parent "context_" gets
+    // deleted
+    ClearCompositor();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/WebGLViewport.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,55 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WebAssemblyViewport.h"
+#include "../OpenGL/WebAssemblyOpenGLContext.h"
+
+namespace OrthancStone
+{
+  class WebGLViewport : public WebAssemblyViewport
+  {
+  private:
+    OpenGL::WebAssemblyOpenGLContext  context_;
+    
+    WebGLViewport(const std::string& canvasId, bool enableEmscriptenMouseEvents);
+
+  protected:
+    virtual void Paint(ICompositor& compositor,
+                       ViewportController& controller) ORTHANC_OVERRIDE;
+    
+    virtual void UpdateSize(ICompositor& compositor) ORTHANC_OVERRIDE
+    {
+      context_.RefreshCanvasSize();
+    }
+
+  public:
+    static boost::shared_ptr<WebGLViewport> Create(const std::string& canvasId, bool enableEmscriptenMouseEvents = true);
+
+    virtual ~WebGLViewport();
+
+    bool IsContextLost()
+    {
+      return context_.IsContextLost();
+    } 
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/WebGLViewportsRegistry.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,185 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "WebGLViewportsRegistry.h"
+
+#include "../Toolbox/GenericToolbox.h"
+
+#include <OrthancException.h>
+
+#include <boost/make_shared.hpp>
+
+namespace OrthancStone
+{
+  void WebGLViewportsRegistry::LaunchTimer()
+  {
+    timeOutID_ = emscripten_set_timeout(
+      OnTimeoutCallback, 
+      timeoutMS_, 
+      reinterpret_cast<void*>(this));
+  }
+  
+  void WebGLViewportsRegistry::OnTimeout()
+  {
+    for (Viewports::iterator it = viewports_.begin();
+         it != viewports_.end(); 
+         ++it)
+    {
+      if (it->second == NULL ||
+          it->second->IsContextLost())
+      {
+        LOG(INFO) << "WebGL context lost for canvas: " << it->first;
+
+        // Try and duplicate the HTML5 canvas in the DOM
+        EM_ASM({
+            var canvas = document.getElementById(UTF8ToString($0));
+            if (canvas) {
+              var parent = canvas.parentElement;
+              if (parent) {
+                var cloned = canvas.cloneNode(true /* deep copy */);
+                parent.insertBefore(cloned, canvas);
+                parent.removeChild(canvas);
+              }
+            }
+          },
+          it->first.c_str()  // $0 = ID of the canvas
+          );
+
+        // At this point, the old canvas is removed from the DOM and
+        // replaced by a fresh one with the same ID: Recreate the
+        // WebGL context on the new canvas
+        boost::shared_ptr<WebGLViewport> viewport;
+
+        // we need to steal the properties from the old viewport
+        // and set them to the new viewport
+        {
+          std::unique_ptr<IViewport::ILock> lock(it->second->Lock());
+
+          // TODO: remove ViewportController
+          Scene2D* scene = lock->GetController().ReleaseScene();
+          viewport = WebGLViewport::Create(it->first);
+
+          {
+            std::unique_ptr<IViewport::ILock> newLock(viewport->Lock());
+            newLock->GetController().AcquireScene(scene);
+          }
+        }
+
+        // Replace the old WebGL viewport by the new one
+        it->second = viewport;
+
+        // Tag the fresh canvas as needing a repaint
+        {
+          std::unique_ptr<IViewport::ILock> lock(it->second->Lock());
+          lock->Invalidate();
+        }
+      }
+    }
+      
+    LaunchTimer();
+  }
+
+  void WebGLViewportsRegistry::OnTimeoutCallback(void *userData)
+  {
+    // This object dies with the process or tab. 
+    WebGLViewportsRegistry* that = 
+      reinterpret_cast<WebGLViewportsRegistry*>(userData);
+    that->OnTimeout();
+  }
+
+  WebGLViewportsRegistry::WebGLViewportsRegistry(double timeoutMS) :
+    timeoutMS_(timeoutMS),
+    timeOutID_(0)
+  {
+    if (timeoutMS <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }          
+    
+    LaunchTimer();
+  }
+
+  WebGLViewportsRegistry::~WebGLViewportsRegistry()
+  {
+    emscripten_clear_timeout(timeOutID_);
+    Clear();
+  }
+
+  boost::shared_ptr<WebGLViewport> WebGLViewportsRegistry::Add(
+    const std::string& canvasId)
+  {
+    if (viewports_.find(canvasId) != viewports_.end())
+    {
+      LOG(ERROR) << "Canvas was already registered: " << canvasId;
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      boost::shared_ptr<WebGLViewport> viewport = 
+        WebGLViewport::Create(canvasId);
+      viewports_[canvasId] = viewport;
+      return viewport;
+    }
+  }
+      
+  void WebGLViewportsRegistry::Remove(const std::string& canvasId)
+  {
+    Viewports::iterator found = viewports_.find(canvasId);
+
+    if (found == viewports_.end())
+    {
+      LOG(ERROR) << "Cannot remove unregistered canvas: " << canvasId;
+    }
+    else
+    {
+      viewports_.erase(found);
+    }
+  }
+  
+  void WebGLViewportsRegistry::Clear()
+  {
+    viewports_.clear();
+  }
+
+  WebGLViewportsRegistry::Accessor::Accessor(WebGLViewportsRegistry& that,
+                                             const std::string& canvasId) :
+    that_(that)
+  {
+    Viewports::iterator viewport = that.viewports_.find(canvasId);
+    if (viewport != that.viewports_.end() &&
+        viewport->second != NULL)
+    {
+      lock_.reset(viewport->second->Lock());
+    }
+  }
+
+  IViewport::ILock& WebGLViewportsRegistry::Accessor::GetViewport() const
+  {
+    if (IsValid())
+    {
+      return *lock_;
+    }
+    else
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Viewport/WebGLViewportsRegistry.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,83 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "WebGLViewport.h"
+
+#include <boost/enable_shared_from_this.hpp>
+
+namespace OrthancStone
+{
+  /**
+   * This singleton class must be used if many WebGL viewports are
+   * created by the higher-level application, implying possible loss
+   * of WebGL contexts. The object will run an infinite update loop
+   * that checks whether all the WebGL context are still valid (not
+   * lost). If some WebGL context is lost, it is automatically
+   * reinitialized by created a fresh HTML5 canvas.
+   **/  
+  class WebGLViewportsRegistry : public boost::noncopyable,
+    public boost::enable_shared_from_this<WebGLViewportsRegistry>
+  {
+  private:
+    typedef std::map<std::string, boost::shared_ptr<WebGLViewport> >  Viewports;
+
+    double     timeoutMS_;
+    Viewports  viewports_;
+    long       timeOutID_;
+
+    void LaunchTimer();
+
+    void OnTimeout();
+
+    static void OnTimeoutCallback(void *userData);
+    
+  public:
+    WebGLViewportsRegistry(double timeoutMS /* in milliseconds */);
+    
+    ~WebGLViewportsRegistry();
+
+    boost::shared_ptr<WebGLViewport> Add(const std::string& canvasId);
+
+    void Remove(const std::string& canvasId);
+
+    void Clear();
+
+    class Accessor : public boost::noncopyable
+    {
+    private:
+      WebGLViewportsRegistry&            that_;
+      std::unique_ptr<IViewport::ILock>  lock_;
+
+    public:
+      Accessor(WebGLViewportsRegistry& that,
+               const std::string& canvasId);
+
+      bool IsValid() const
+      {
+        return lock_.get() != NULL;
+      }
+
+      IViewport::ILock& GetViewport() const;
+    };
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/DicomStructureSetSlicer2.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,116 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#include "DicomStructureSetSlicer2.h"
+
+#include "../Toolbox/GeometryToolbox.h"
+#include "../Volumes/IVolumeSlicer.h"
+#include "../Scene2D/PolylineSceneLayer.h"
+
+namespace OrthancStone
+{
+  DicomStructureSetSlicer2::DicomStructureSetSlicer2(boost::shared_ptr<DicomStructureSet2> structureSet)
+    : structureSet_(structureSet)
+  {}
+
+  IVolumeSlicer::IExtractedSlice* DicomStructureSetSlicer2::ExtractSlice(const CoordinateSystem3D& cuttingPlane)
+  {
+    // revision is always the same, hence 0
+    return new DicomStructureSetSlice2(structureSet_, 0, cuttingPlane);
+  }
+
+  DicomStructureSetSlice2::DicomStructureSetSlice2(
+    boost::weak_ptr<DicomStructureSet2> structureSet, 
+    uint64_t revision, 
+    const CoordinateSystem3D& cuttingPlane) 
+    : structureSet_(structureSet.lock())
+    , isValid_(false)
+  {
+    bool opposite = false;
+
+    if (structureSet_->GetStructuresCount() == 0)
+    {
+      isValid_ = false;
+    }
+    else
+    {
+      // some structures seen in real life have no polygons. We must be 
+      // careful
+      bool found = false;
+      size_t curStructure = 0;
+      while (!found && curStructure < structureSet_->GetStructuresCount())
+      {
+        if (structureSet_->GetStructure(curStructure).IsValid())
+        {
+          found = true;
+          const Vector normal = structureSet_->GetStructure(0).GetNormal();
+          isValid_ = (
+            GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetNormal()) ||
+            GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetAxisX()) ||
+            GeometryToolbox::IsParallelOrOpposite(opposite, normal, cuttingPlane.GetAxisY()));
+        }
+      }
+    }
+  }
+
+  ISceneLayer* DicomStructureSetSlice2::CreateSceneLayer(
+    const ILayerStyleConfigurator* configurator,
+    const CoordinateSystem3D& cuttingPlane)
+  {
+    assert(isValid_);
+
+    std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer);
+    layer->SetThickness(2); // thickness of the on-screen line
+
+    for (size_t i = 0; i < structureSet_->GetStructuresCount(); i++)
+    {
+      const DicomStructure2& structure = structureSet_->GetStructure(i);
+      if (structure.IsValid())
+      {
+        const Color& color = structure.GetColor();
+
+        std::vector< std::pair<Point2D, Point2D> > segments;
+
+        if (structure.Project(segments, cuttingPlane))
+        {
+          for (size_t j = 0; j < segments.size(); j++)
+          {
+            PolylineSceneLayer::Chain chain;
+            chain.resize(2);
+
+            chain[0] = ScenePoint2D(segments[j].first.x, segments[j].first.y);
+            chain[1] = ScenePoint2D(segments[j].second.x, segments[j].second.y);
+
+            layer->AddChain(chain, false /* NOT closed */, color);
+          }
+        }
+      }
+    }
+    return layer.release();
+  }
+}
+
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/DicomStructureSetSlicer2.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,76 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#include "../Toolbox/DicomStructureSet2.h"
+#include "../Volumes/IVolumeSlicer.h"
+
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+
+namespace OrthancStone
+{
+  class DicomStructureSetSlice2 : public IVolumeSlicer::IExtractedSlice
+  {
+  public:
+    DicomStructureSetSlice2(
+      boost::weak_ptr<DicomStructureSet2> structureSet,
+      uint64_t revision,
+      const CoordinateSystem3D& cuttingPlane);
+
+    virtual bool IsValid() ORTHANC_OVERRIDE
+    {
+      return isValid_;
+    }
+
+    virtual uint64_t GetRevision() ORTHANC_OVERRIDE
+    {
+      return revision_;
+    }
+
+    virtual ISceneLayer* CreateSceneLayer(
+      const ILayerStyleConfigurator* configurator,  // possibly absent
+      const CoordinateSystem3D& cuttingPlane) ORTHANC_OVERRIDE;
+
+  private:
+    boost::shared_ptr<DicomStructureSet2> structureSet_;
+    bool isValid_;
+    uint64_t revision_;
+  };
+
+  class DicomStructureSetSlicer2 : public IVolumeSlicer
+  {
+  public:
+    DicomStructureSetSlicer2(boost::shared_ptr<DicomStructureSet2> structureSet);
+
+    /** IVolumeSlicer impl */
+    virtual IExtractedSlice* ExtractSlice(const CoordinateSystem3D& cuttingPlane) ORTHANC_OVERRIDE;
+  private:
+    boost::weak_ptr<DicomStructureSet2> structureSet_;
+  };
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/DicomVolumeImage.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,99 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomVolumeImage.h"
+
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+  void DicomVolumeImage::CheckHasGeometry() const
+  {
+    if (!HasGeometry())
+    {
+      LOG(ERROR) << "DicomVolumeImage::CheckHasGeometry(): (!HasGeometry())";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+    
+
+  void DicomVolumeImage::Initialize(
+    const VolumeImageGeometry& geometry,
+    Orthanc::PixelFormat format, 
+    bool computeRange)
+  {
+    geometry_.reset(new VolumeImageGeometry(geometry));
+    image_.reset(new ImageBuffer3D(format, geometry_->GetWidth(), geometry_->GetHeight(),
+                                   geometry_->GetDepth(), computeRange));
+
+    revision_ ++;
+  }
+
+
+  void DicomVolumeImage::SetDicomParameters(const DicomInstanceParameters& parameters)
+  {
+    parameters_.reset(parameters.Clone());
+    revision_ ++;
+  }
+    
+
+  bool DicomVolumeImage::HasGeometry() const
+  {
+    return (geometry_.get() != NULL &&
+            image_.get() != NULL);
+  }
+
+
+  ImageBuffer3D& DicomVolumeImage::GetPixelData()
+  {
+    CheckHasGeometry();
+    return *image_;
+  }
+
+
+  const ImageBuffer3D& DicomVolumeImage::GetPixelData() const
+  {
+    CheckHasGeometry();
+    return *image_;
+  }
+
+
+  const VolumeImageGeometry& DicomVolumeImage::GetGeometry() const
+  {
+    CheckHasGeometry();
+    return *geometry_;
+  }
+
+
+  const DicomInstanceParameters& DicomVolumeImage::GetDicomParameters() const
+  {
+    if (HasDicomParameters())
+    {
+      return *parameters_;
+    }
+    else
+    {
+      LOG(ERROR) << "DicomVolumeImage::GetDicomParameters(): (!HasDicomParameters())";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }      
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/DicomVolumeImage.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,89 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Messages/IMessage.h"
+#include "../Toolbox/DicomInstanceParameters.h"
+#include "ImageBuffer3D.h"
+#include "VolumeImageGeometry.h"
+
+namespace OrthancStone
+{
+  /**
+  This class combines a 3D image buffer, a 3D volume geometry and
+  information about the DICOM parameters of the series.
+  (MPR means MultiPlanar Reconstruction)
+  */ 
+  class DicomVolumeImage : public boost::noncopyable
+  {
+  public:
+    // TODO - Are these messages still useful?
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, GeometryReadyMessage, DicomVolumeImage);
+    ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, ContentUpdatedMessage, DicomVolumeImage);
+
+  private:
+    uint64_t                                revision_;
+    std::unique_ptr<VolumeImageGeometry>      geometry_;
+    std::unique_ptr<ImageBuffer3D>            image_;
+    std::unique_ptr<DicomInstanceParameters>  parameters_;
+
+    void CheckHasGeometry() const;
+    
+  public:
+    DicomVolumeImage() :
+      revision_(0)
+    {
+    }
+
+    void IncrementRevision()
+    {
+      revision_ ++;
+    }
+
+    void Initialize(const VolumeImageGeometry& geometry,
+                    Orthanc::PixelFormat format, 
+                    bool computeRange = false);
+
+    // Used by volume slicers
+    void SetDicomParameters(const DicomInstanceParameters& parameters);
+    
+    uint64_t GetRevision() const
+    {
+      return revision_;
+    }
+
+    bool HasGeometry() const;
+
+    ImageBuffer3D& GetPixelData();
+
+    const ImageBuffer3D& GetPixelData() const;
+
+    const VolumeImageGeometry& GetGeometry() const;
+
+    bool HasDicomParameters() const
+    {
+      return parameters_.get() != NULL;
+    }      
+
+    const DicomInstanceParameters& GetDicomParameters() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/DicomVolumeImageMPRSlicer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,133 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomVolumeImageMPRSlicer.h"
+
+#include "../StoneException.h"
+
+#include "../Toolbox/ImageToolbox.h"
+
+#include <OrthancException.h>
+//#include <Images/PngWriter.h>
+#include <Images/JpegWriter.h>
+
+namespace OrthancStone
+{
+  void DicomVolumeImageMPRSlicer::Slice::CheckValid() const
+  {
+    if (!valid_)
+    {
+      LOG(ERROR) << "DicomVolumeImageMPRSlicer::Slice::CheckValid(): (!valid_)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+
+  DicomVolumeImageMPRSlicer::Slice::Slice(const DicomVolumeImage& volume,
+                                          const CoordinateSystem3D& cuttingPlane) :
+    volume_(volume),
+    revision_(volume_.GetRevision())
+  {
+    valid_ = (volume_.HasDicomParameters() &&
+              volume_.GetGeometry().DetectSlice(projection_, sliceIndex_, cuttingPlane));
+  }
+
+
+  VolumeProjection DicomVolumeImageMPRSlicer::Slice::GetProjection() const
+  {
+    CheckValid();
+    return projection_;
+  }
+
+
+  unsigned int DicomVolumeImageMPRSlicer::Slice::GetSliceIndex() const
+  {
+    CheckValid();
+    return sliceIndex_;
+  }
+  
+
+  ISceneLayer* DicomVolumeImageMPRSlicer::Slice::CreateSceneLayer(const ILayerStyleConfigurator* configurator,
+                                                                  const CoordinateSystem3D& cuttingPlane)
+  {
+    CheckValid();
+
+    if (configurator == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer,
+                                      "A style configurator is mandatory for textures");
+    }
+
+    std::unique_ptr<TextureBaseSceneLayer> texture;
+      
+    {
+      const DicomInstanceParameters& parameters = volume_.GetDicomParameters();
+      ImageBuffer3D::SliceReader reader(volume_.GetPixelData(), projection_, sliceIndex_);
+
+      texture.reset(dynamic_cast<TextureBaseSceneLayer*>
+                    (configurator->CreateTextureFromDicom(reader.GetAccessor(), parameters)));
+    }
+    
+    const CoordinateSystem3D& system = volume_.GetGeometry().GetProjectionGeometry(projection_);
+      
+    double x0, y0, x1, y1;
+    cuttingPlane.ProjectPoint(x0, y0, system.GetOrigin());
+    cuttingPlane.ProjectPoint(x1, y1, system.GetOrigin() + system.GetAxisX());
+
+    {
+      double xz, yz;
+      cuttingPlane.ProjectPoint(xz, yz, LinearAlgebra::CreateVector(0, 0, 0));
+      texture->SetOrigin(x0 - xz, y0 - yz);
+    }
+
+    double dx = x1 - x0;
+    double dy = y1 - y0;
+    if (!LinearAlgebra::IsCloseToZero(dx) ||
+        !LinearAlgebra::IsCloseToZero(dy))
+    {
+      texture->SetAngle(atan2(dy, dx));
+    }
+
+    Vector tmp = volume_.GetGeometry().GetVoxelDimensions(projection_);
+    texture->SetPixelSpacing(tmp[0], tmp[1]);
+
+    return texture.release();
+  }
+
+
+  DicomVolumeImageMPRSlicer::~DicomVolumeImageMPRSlicer()
+  {
+    LOG(TRACE) << "DicomVolumeImageMPRSlicer::~DicomVolumeImageMPRSlicer()";
+  }
+
+  IVolumeSlicer::IExtractedSlice*
+  DicomVolumeImageMPRSlicer::ExtractSlice(const CoordinateSystem3D& cuttingPlane)
+  {
+    if (volume_->HasGeometry())
+    {
+      return new Slice(*volume_, cuttingPlane);
+    }
+    else
+    {
+      return new IVolumeSlicer::InvalidSlice;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/DicomVolumeImageMPRSlicer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,101 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "DicomVolumeImage.h"
+#include "IVolumeSlicer.h"
+
+#include <boost/shared_ptr.hpp>
+
+namespace OrthancStone
+{
+  /**
+     Implements the IVolumeSlicer on Dicom volume data when the cutting plane
+     that is supplied to the slicer is either axial, sagittal or coronal. 
+     Arbitrary planes are *not* supported
+  */
+  class DicomVolumeImageMPRSlicer : public IVolumeSlicer
+  {
+  public:
+    class Slice : public IExtractedSlice
+    {
+    private:
+      const DicomVolumeImage&  volume_;
+      uint64_t                 revision_;
+      bool                     valid_;
+      VolumeProjection         projection_;
+      unsigned int             sliceIndex_;
+
+      void CheckValid() const;
+
+    public:
+      /**
+         Represents a slice of a volume image that is parallel to the 
+         coordinate system axis. 
+         The constructor initializes the type of projection (axial, sagittal or
+         coronal) and the corresponding slice index, from the cutting plane.
+      */
+      Slice(const DicomVolumeImage& volume,
+            const CoordinateSystem3D& cuttingPlane);
+
+      void SetRevision(uint64_t revision)
+      {
+        revision_ = revision;
+      }
+
+      VolumeProjection GetProjection() const;
+
+      unsigned int GetSliceIndex() const;
+
+      virtual bool IsValid()
+      {
+        return valid_;
+      }
+
+      virtual uint64_t GetRevision()
+      {
+        return revision_;
+      }
+
+      virtual ISceneLayer* CreateSceneLayer(const ILayerStyleConfigurator* configurator,
+                                            const CoordinateSystem3D& cuttingPlane);
+    };
+
+  private:
+    boost::shared_ptr<DicomVolumeImage>  volume_;
+
+  public:
+    DicomVolumeImageMPRSlicer(const boost::shared_ptr<DicomVolumeImage>& volume) :
+      volume_(volume)
+    {
+    }
+
+    boost::shared_ptr<const DicomVolumeImage> GetVolume() const
+    {
+      return volume_;
+    }
+
+    virtual ~DicomVolumeImageMPRSlicer();
+
+    virtual IExtractedSlice* ExtractSlice(const CoordinateSystem3D& cuttingPlane) ORTHANC_OVERRIDE;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/DicomVolumeImageReslicer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,116 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DicomVolumeImageReslicer.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  class DicomVolumeImageReslicer::Slice : public IVolumeSlicer::IExtractedSlice
+  {
+  private:
+    DicomVolumeImageReslicer&  that_;
+    CoordinateSystem3D         cuttingPlane_;
+      
+  public:
+    Slice(DicomVolumeImageReslicer& that,
+          const CoordinateSystem3D& cuttingPlane) :
+      that_(that),
+      cuttingPlane_(cuttingPlane)
+    {
+    }
+      
+    virtual bool IsValid()
+    {
+      return true;
+    }
+
+    virtual uint64_t GetRevision()
+    {
+      return that_.volume_->GetRevision();
+    }
+
+    virtual ISceneLayer* CreateSceneLayer(const ILayerStyleConfigurator* configurator,
+                                          const CoordinateSystem3D& cuttingPlane)
+    {
+      VolumeReslicer& reslicer = that_.reslicer_;
+        
+      if (configurator == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
+                                        "Must provide a layer style configurator");
+      }
+        
+      reslicer.SetOutputFormat(that_.volume_->GetPixelData().GetFormat());
+      reslicer.Apply(that_.volume_->GetPixelData(),
+                     that_.volume_->GetGeometry(),
+                     cuttingPlane);
+
+      if (reslicer.IsSuccess())
+      {
+        std::unique_ptr<TextureBaseSceneLayer> layer
+          (configurator->CreateTextureFromDicom(reslicer.GetOutputSlice(),
+                                                that_.volume_->GetDicomParameters()));
+        if (layer.get() == NULL)
+        {
+          return NULL;
+        }
+
+        double s = reslicer.GetPixelSpacing();
+        layer->SetPixelSpacing(s, s);
+        layer->SetOrigin(reslicer.GetOutputExtent().GetX1() + 0.5 * s,
+                         reslicer.GetOutputExtent().GetY1() + 0.5 * s);
+
+        // TODO - Angle!!
+                           
+        return layer.release();
+      }
+      else
+      {
+        return NULL;
+      }          
+    }
+  };
+    
+
+  DicomVolumeImageReslicer::DicomVolumeImageReslicer(const boost::shared_ptr<DicomVolumeImage>& volume) :
+    volume_(volume)
+  {
+    if (volume.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+  }
+
+    
+  IVolumeSlicer::IExtractedSlice* DicomVolumeImageReslicer::ExtractSlice(const CoordinateSystem3D& cuttingPlane)
+  {
+    if (volume_->HasGeometry())
+    {
+      return new Slice(*this, cuttingPlane);
+    }
+    else
+    {
+      return new IVolumeSlicer::InvalidSlice;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/DicomVolumeImageReslicer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,69 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "DicomVolumeImage.h"
+#include "IVolumeSlicer.h"
+#include "VolumeReslicer.h"
+
+#include <boost/shared_ptr.hpp>
+
+namespace OrthancStone
+{
+  /**
+  This class is able to supply an extract slice for an arbitrary cutting
+  plane through a volume image
+  */
+  class DicomVolumeImageReslicer : public IVolumeSlicer
+  {
+  private:
+    class Slice;
+    
+    boost::shared_ptr<DicomVolumeImage>  volume_;
+    VolumeReslicer                       reslicer_;
+
+  public:
+    DicomVolumeImageReslicer(const boost::shared_ptr<DicomVolumeImage>& volume);
+
+    ImageInterpolation GetInterpolation() const
+    {
+      return reslicer_.GetInterpolation();
+    }
+
+    void SetInterpolation(ImageInterpolation interpolation)
+    {
+      reslicer_.SetInterpolation(interpolation);
+    }
+
+    bool IsFastMode() const
+    {
+      return reslicer_.IsFastMode();
+    }
+
+    void SetFastMode(bool fast)
+    {
+      reslicer_.EnableFastMode(fast);
+    }
+    
+    virtual IExtractedSlice* ExtractSlice(const CoordinateSystem3D& cuttingPlane);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/IGeometryProvider.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,35 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Volumes/VolumeImageGeometry.h"
+
+namespace OrthancStone
+{
+  class IGeometryProvider
+  {
+  public:
+    virtual ~IGeometryProvider() {}
+    virtual bool HasGeometry() const = 0;
+    virtual const OrthancStone::VolumeImageGeometry& GetImageGeometry() const = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/IVolumeSlicer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,40 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "IVolumeSlicer.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  uint64_t IVolumeSlicer::InvalidSlice::GetRevision()
+  {
+    LOG(ERROR) << "IVolumeSlicer::InvalidSlice::GetRevision()";
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+  }
+
+  ISceneLayer* IVolumeSlicer::InvalidSlice::CreateSceneLayer(const ILayerStyleConfigurator* configurator,
+                                                             const CoordinateSystem3D& cuttingPlane)
+  {
+    LOG(ERROR) << "IVolumeSlicer::InvalidSlice::CreateSceneLayer()";
+    throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/IVolumeSlicer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,110 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Scene2D/ILayerStyleConfigurator.h"
+#include "../Toolbox/CoordinateSystem3D.h"
+
+namespace OrthancStone
+{
+  /**
+  This interface is implemented by objects representing 3D volume data and 
+  that are able to return an object that:
+  - represent a slice of their data 
+  - are able to create the corresponding slice visual representation.
+  */
+  class IVolumeSlicer : public boost::noncopyable
+  {
+  public:
+    /**
+    This interface is implemented by objects representing a slice of 
+    volume data and that are able to create a 2D layer to display a this 
+    slice.
+
+    The CreateSceneLayer factory method is called with an optional
+    configurator that possibly impacts the ISceneLayer subclass that is 
+    created (for instance, if a LUT must be applied on the texture when
+    displaying it)
+    */
+    class IExtractedSlice : public boost::noncopyable
+    {
+    public:
+      virtual ~IExtractedSlice()
+      {
+      }
+
+      /**
+      Invalid slices are created when the data is not ready yet or if the
+      cut is outside of the available geometry.
+      */
+      virtual bool IsValid() = 0;
+
+      /**
+      This retrieves the *revision* that gets incremented every time the 
+      underlying object undergoes a mutable operation (that it, changes its 
+      state).
+      This **must** be a cheap call.
+      */
+      virtual uint64_t GetRevision() = 0;
+
+      /** Creates the slice visual representation */
+      virtual ISceneLayer* CreateSceneLayer(
+        const ILayerStyleConfigurator* configurator,  // possibly absent
+        const CoordinateSystem3D& cuttingPlane) = 0;
+    };
+
+    /**
+    See IExtractedSlice.IsValid()
+    */
+    class InvalidSlice : public IExtractedSlice
+    {
+    public:
+      virtual bool IsValid()
+      {
+        return false;
+      }
+
+      virtual uint64_t GetRevision();
+
+      virtual ISceneLayer* CreateSceneLayer(const ILayerStyleConfigurator* configurator,
+                                            const CoordinateSystem3D& cuttingPlane);
+    };
+
+
+    virtual ~IVolumeSlicer()
+    {
+    }
+
+    /**
+    This method is implemented by the objects representing volumetric data
+    and must returns an IExtractedSlice subclass that contains all the data
+    needed to, later on, create its visual representation through
+    CreateSceneLayer.
+    Subclasses a.o.: 
+    - InvalidSlice, 
+    - DicomVolumeImageMPRSlicer::Slice, 
+    - DicomVolumeImageReslicer::Slice
+    - DicomStructureSetLoader::Slice 
+    */
+    virtual IExtractedSlice* ExtractSlice(const CoordinateSystem3D& cuttingPlane) = 0;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/ImageBuffer3D.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,311 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "ImageBuffer3D.h"
+
+#include <Images/ImageProcessing.h>
+#include <Logging.h>
+#include <OrthancException.h>
+
+#include <string.h>
+
+namespace OrthancStone
+{
+  void ImageBuffer3D::GetAxialSliceAccessor(Orthanc::ImageAccessor& target,
+                                            unsigned int slice,
+                                            bool readOnly) const
+  {
+    if (slice >= depth_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (readOnly)
+    {
+      target.AssignReadOnly(format_, width_, height_, image_.GetPitch(),
+                            image_.GetConstRow(height_ * (depth_ - 1 - slice)));
+    }
+    else
+    {
+      target.AssignWritable(format_, width_, height_, image_.GetPitch(),
+                            image_.GetRow(height_ * (depth_ - 1 - slice)));
+    }
+  }
+
+
+  void ImageBuffer3D::GetCoronalSliceAccessor(Orthanc::ImageAccessor& target,
+                                              unsigned int slice,
+                                              bool readOnly) const
+  {
+    if (slice >= height_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (readOnly)
+    {
+      target.AssignReadOnly(format_, width_, depth_, image_.GetPitch() * height_,
+                            image_.GetConstRow(slice));
+    }
+    else
+    {
+      target.AssignWritable(format_, width_, depth_, image_.GetPitch() * height_,
+                            image_.GetRow(slice));
+    }
+  }
+
+
+  Orthanc::Image*  ImageBuffer3D::ExtractSagittalSlice(unsigned int slice) const
+  {
+    //LOG(TRACE) << "ImageBuffer3D::ExtractSagittalSlice this= " << std::hex << this << std::dec << " width_ = " << width_ << " height_ = " << height_ << " depth_ = " << depth_ << " slice = " << slice;
+    if (slice >= width_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    std::unique_ptr<Orthanc::Image> result(new Orthanc::Image(format_, height_, depth_, false));
+    //LOG(TRACE) << "ImageBuffer3D::ExtractSagittalSlice result will be an image of WIDTH = " << height_ << " and HEIGHT = " << depth_;
+
+    unsigned int bytesPerPixel = Orthanc::GetBytesPerPixel(format_);
+
+    for (unsigned int z = 0; z < depth_; z++)
+    {
+      //uint8_t* target = reinterpret_cast<uint8_t*>(result->GetRow(depth_ - 1 - z));
+      uint8_t* target = reinterpret_cast<uint8_t*>(result->GetRow(z));
+
+      for (unsigned int y = 0; y < height_; y++)
+      {
+        const void* source = (reinterpret_cast<const uint8_t*>(image_.GetConstRow(y + z * height_)) + bytesPerPixel * slice);
+        const uint8_t* byteSrc = reinterpret_cast<const uint8_t*>(source);
+        for (size_t byte = 0; byte < bytesPerPixel; ++byte)
+          target[byte] = byteSrc[byte];
+        target += bytesPerPixel;
+      }
+    }
+
+    return result.release();
+  }
+
+
+  ImageBuffer3D::ImageBuffer3D(Orthanc::PixelFormat format,
+                               unsigned int width,
+                               unsigned int height,
+                               unsigned int depth,
+                               bool computeRange) :
+    image_(format, width, height * depth, false),
+    format_(format),
+    width_(width),
+    height_(height),
+    depth_(depth),
+    computeRange_(computeRange),
+    hasRange_(false)
+  {
+    LOG(TRACE) << "Created a 3D image of size " << width << "x" << height
+              << "x" << depth << " in " << Orthanc::EnumerationToString(format)
+              << " (" << (GetEstimatedMemorySize() / (1024ll * 1024ll)) << "MB)";
+  }
+
+
+  void ImageBuffer3D::Clear()
+  {
+    memset(image_.GetBuffer(), 0, image_.GetHeight() * image_.GetPitch());
+  }
+
+
+  uint64_t ImageBuffer3D::GetEstimatedMemorySize() const
+  {
+    return image_.GetPitch() * image_.GetHeight() * Orthanc::GetBytesPerPixel(format_);
+  }
+
+
+  void ImageBuffer3D::ExtendImageRange(const Orthanc::ImageAccessor& slice)
+  {
+    if (!computeRange_ ||
+        slice.GetWidth() == 0 ||
+        slice.GetHeight() == 0)
+    {
+      return;
+    }
+
+    float sliceMin, sliceMax;
+
+    switch (slice.GetFormat())
+    {
+      case Orthanc::PixelFormat_Grayscale8:
+      case Orthanc::PixelFormat_Grayscale16:
+      case Orthanc::PixelFormat_Grayscale32:
+      case Orthanc::PixelFormat_SignedGrayscale16:
+      {
+        int64_t a, b;
+        Orthanc::ImageProcessing::GetMinMaxIntegerValue(a, b, slice);
+        sliceMin = static_cast<float>(a);
+        sliceMax = static_cast<float>(b);
+        break;
+      }
+
+      case Orthanc::PixelFormat_Float32:
+        Orthanc::ImageProcessing::GetMinMaxFloatValue(sliceMin, sliceMax, slice);
+        break;
+
+      default:
+        return;
+    }
+
+    if (hasRange_)
+    {
+      minValue_ = std::min(minValue_, sliceMin);
+      maxValue_ = std::max(maxValue_, sliceMax);
+    }
+    else
+    {
+      hasRange_ = true;
+      minValue_ = sliceMin;
+      maxValue_ = sliceMax;
+    }
+  }
+
+
+  bool ImageBuffer3D::GetRange(float& minValue,
+                               float& maxValue) const
+  {
+    if (hasRange_)
+    {
+      minValue = minValue_;
+      maxValue = maxValue_;
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+
+  ImageBuffer3D::SliceReader::SliceReader(const ImageBuffer3D& that,
+                                          VolumeProjection projection,
+                                          unsigned int slice)
+  {
+    switch (projection)
+    {
+      case VolumeProjection_Axial:
+        that.GetAxialSliceAccessor(accessor_, slice, true);
+        break;
+
+      case VolumeProjection_Coronal:
+        that.GetCoronalSliceAccessor(accessor_, slice, true);
+        break;
+
+      case VolumeProjection_Sagittal:
+        sagittal_.reset(that.ExtractSagittalSlice(slice));
+        sagittal_->GetReadOnlyAccessor(accessor_);
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  void ImageBuffer3D::SliceWriter::Flush()
+  {
+    if (modified_)
+    {
+      if (sagittal_.get() != NULL)
+      {
+        // TODO
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+
+      // Update the dynamic range of the underlying image, if
+      // "computeRange_" is set to true
+      that_.ExtendImageRange(accessor_);
+    }
+  }
+
+
+  ImageBuffer3D::SliceWriter::SliceWriter(ImageBuffer3D& that,
+                                          VolumeProjection projection,
+                                          unsigned int slice) :
+    that_(that),
+    modified_(false)
+  {
+    switch (projection)
+    {
+      case VolumeProjection_Axial:
+        that.GetAxialSliceAccessor(accessor_, slice, false);
+        break;
+
+      case VolumeProjection_Coronal:
+        that.GetCoronalSliceAccessor(accessor_, slice, false);
+        break;
+
+      case VolumeProjection_Sagittal:
+        sagittal_.reset(that.ExtractSagittalSlice(slice));
+        sagittal_->GetWriteableAccessor(accessor_);
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  uint8_t ImageBuffer3D::GetVoxelGrayscale8(unsigned int x,
+                                            unsigned int y,
+                                            unsigned int z) const
+  {
+    if (format_ != Orthanc::PixelFormat_Grayscale8)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    if (x >= width_ ||
+        y >= height_ ||
+        z >= depth_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    const void* p = image_.GetConstRow(y + height_ * (depth_ - 1 - z));
+    return reinterpret_cast<const uint8_t*>(p) [x];
+  }
+
+
+  uint16_t ImageBuffer3D::GetVoxelGrayscale16(unsigned int x,
+                                              unsigned int y,
+                                              unsigned int z) const
+  {
+    if (format_ != Orthanc::PixelFormat_Grayscale16)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }
+
+    if (x >= width_ ||
+        y >= height_ ||
+        z >= depth_)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    const void* p = image_.GetConstRow(y + height_ * (depth_ - 1 - z));
+    return reinterpret_cast<const uint16_t*>(p) [x];
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/ImageBuffer3D.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,231 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../StoneEnumerations.h"
+#include "../Toolbox/LinearAlgebra.h"
+
+#include <Compatibility.h>
+#include <Images/Image.h>
+
+namespace OrthancStone
+{
+  /*
+
+  This classes stores volume images sliced across the Z axis, vertically, in the decreasing Z order :
+
+  +---------------+
+  |               |
+  |   SLICE N-1   |
+  |               |
+  +---------------+
+  |               |
+  |   SLICE N-2   |
+  |               |
+  +---------------+
+  |               |
+  |   SLICE N-3   |
+  |               |
+  .               .
+  ......     ......
+  .               .
+  |               |
+  |   SLICE   2   |
+  |               |
+  +---------------+
+  |               |
+  |   SLICE   1   |
+  |               |
+  +---------------+
+  |               |
+  |   SLICE   0   |
+  |               |
+  +---------------+
+
+  As you can see, if the 3d image has size width, height, depth, the 2d image has :
+  - 2d width  = 3d width
+  - 2d height = 3d height * 3d depth
+
+  */
+
+  class ImageBuffer3D : public boost::noncopyable
+  {
+  private:
+    Orthanc::Image         image_;
+    Orthanc::PixelFormat   format_;
+    unsigned int           width_;
+    unsigned int           height_;
+    unsigned int           depth_;
+    bool                   computeRange_;
+    bool                   hasRange_;
+    float                  minValue_;
+    float                  maxValue_;
+    Matrix                 transform_;
+    Matrix                 transformInverse_;
+
+    void ExtendImageRange(const Orthanc::ImageAccessor& slice);
+
+    void GetAxialSliceAccessor(Orthanc::ImageAccessor& target,
+                               unsigned int slice,
+                               bool readOnly) const;
+    
+    void GetCoronalSliceAccessor(Orthanc::ImageAccessor& target,
+                                 unsigned int slice,
+                                 bool readOnly) const;
+
+    Orthanc::Image*  ExtractSagittalSlice(unsigned int slice) const;
+
+    template <typename T>
+    T GetPixelUnchecked(unsigned int x,
+                        unsigned int y,
+                        unsigned int z) const
+    {
+      const uint8_t* buffer = reinterpret_cast<const uint8_t*>(image_.GetConstBuffer());
+      const uint8_t* row = buffer + (y + height_ * (depth_ - 1 - z)) * image_.GetPitch();
+      return reinterpret_cast<const T*>(row) [x];
+    }
+
+  public:
+    ImageBuffer3D(Orthanc::PixelFormat format,
+                  unsigned int width,
+                  unsigned int height,
+                  unsigned int depth,
+                  bool computeRange);
+
+    void Clear();
+
+    const Orthanc::ImageAccessor& GetInternalImage() const
+    {
+      return image_;
+    }
+
+    unsigned int GetWidth() const
+    {
+      return width_;
+    }
+
+    unsigned int GetHeight() const
+    {
+      return height_;
+    }
+
+    unsigned int GetDepth() const
+    {
+      return depth_;
+    }
+
+    Orthanc::PixelFormat GetFormat() const
+    {
+      return format_;
+    }
+
+    unsigned int GetBytesPerPixel() const
+    {
+      return Orthanc::GetBytesPerPixel(format_);
+    }
+
+    uint64_t GetEstimatedMemorySize() const;
+
+    bool GetRange(float& minValue,
+                  float& maxValue) const;
+
+    uint8_t GetVoxelGrayscale8Unchecked(unsigned int x,
+                                        unsigned int y,
+                                        unsigned int z) const
+    {
+      return GetPixelUnchecked<uint8_t>(x, y, z);
+    }
+
+    uint16_t GetVoxelGrayscale16Unchecked(unsigned int x,
+                                          unsigned int y,
+                                          unsigned int z) const
+    {
+      return GetPixelUnchecked<uint16_t>(x, y, z);
+    }
+
+    int16_t GetVoxelSignedGrayscale16Unchecked(unsigned int x,
+                                               unsigned int y,
+                                               unsigned int z) const
+    {
+      return GetPixelUnchecked<int16_t>(x, y, z);
+    }
+
+    uint8_t GetVoxelGrayscale8(unsigned int x,
+                               unsigned int y,
+                               unsigned int z) const;
+
+    uint16_t GetVoxelGrayscale16(unsigned int x,
+                                 unsigned int y,
+                                 unsigned int z) const;
+
+    
+    class SliceReader : public boost::noncopyable
+    {
+    private:
+      Orthanc::ImageAccessor         accessor_;
+      std::unique_ptr<Orthanc::Image>  sagittal_;  // Unused for axial and coronal
+
+    public:
+      SliceReader(const ImageBuffer3D& that,
+                  VolumeProjection projection,
+                  unsigned int slice);
+
+      const Orthanc::ImageAccessor& GetAccessor() const
+      {
+        return accessor_;
+      }
+    };
+
+
+    class SliceWriter : public boost::noncopyable
+    {
+    private:
+      ImageBuffer3D&                 that_;
+      bool                           modified_;
+      Orthanc::ImageAccessor         accessor_;
+      std::unique_ptr<Orthanc::Image>  sagittal_;  // Unused for axial and coronal
+
+      void Flush();
+
+    public:
+      SliceWriter(ImageBuffer3D& that,
+                  VolumeProjection projection,
+                  unsigned int slice);
+
+      ~SliceWriter()
+      {
+        Flush();
+      }
+
+      const Orthanc::ImageAccessor& GetAccessor() const
+      {
+        return accessor_;
+      }
+
+      Orthanc::ImageAccessor& GetAccessor()
+      {
+        modified_ = true;
+        return accessor_;
+      }
+    };
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/OrientedVolumeBoundingBox.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,268 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "OrientedVolumeBoundingBox.h"
+
+#include "../Toolbox/GeometryToolbox.h"
+#include "ImageBuffer3D.h"
+
+#include <OrthancException.h>
+
+#include <cassert>
+
+namespace OrthancStone
+{
+  OrientedVolumeBoundingBox::OrientedVolumeBoundingBox(const VolumeImageGeometry& geometry)
+  {
+    unsigned int n = geometry.GetDepth();
+    if (n < 1)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageSize);      
+    }
+
+    Vector dim = geometry.GetVoxelDimensions(VolumeProjection_Axial);
+
+    u_ = geometry.GetAxialGeometry().GetAxisX();
+    v_ = geometry.GetAxialGeometry().GetAxisY();
+    w_ = geometry.GetAxialGeometry().GetNormal();
+
+    hu_ = static_cast<double>(geometry.GetWidth() * dim[0] / 2.0);
+    hv_ = static_cast<double>(geometry.GetHeight() * dim[1] / 2.0);
+    hw_ = static_cast<double>(geometry.GetDepth() * dim[2] / 2.0);
+      
+    c_ = (geometry.GetAxialGeometry().GetOrigin() + 
+          (hu_ - dim[0] / 2.0) * u_ +
+          (hv_ - dim[1] / 2.0) * v_ +
+          (hw_ - dim[2] / 2.0) * w_);
+  }
+
+
+  bool OrientedVolumeBoundingBox::HasIntersectionWithPlane(std::vector<Vector>& points,
+                                                           const Vector& normal,
+                                                           double d) const
+  {
+    assert(normal.size() == 3);
+
+    double r = (hu_ * fabs(boost::numeric::ublas::inner_prod(normal, u_)) +
+                hv_ * fabs(boost::numeric::ublas::inner_prod(normal, v_)) +
+                hw_ * fabs(boost::numeric::ublas::inner_prod(normal, w_)));
+
+    double s = boost::numeric::ublas::inner_prod(normal, c_) + d;
+
+    if (fabs(s) >= r)
+    {
+      // No intersection, or intersection is reduced to a single point
+      return false;
+    }
+    else
+    {
+      Vector p;
+
+      // Loop over all the 12 edges (segments) of the oriented
+      // bounding box, and check whether they intersect the plane
+        
+      // X-aligned edges
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ - u_ * hu_ - v_ * hv_ - w_ * hw_,
+           c_ + u_ * hu_ - v_ * hv_ - w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ - u_ * hu_ + v_ * hv_ - w_ * hw_,
+           c_ + u_ * hu_ + v_ * hv_ - w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ - u_ * hu_ - v_ * hv_ + w_ * hw_,
+           c_ + u_ * hu_ - v_ * hv_ + w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ - u_ * hu_ + v_ * hv_ + w_ * hw_,
+           c_ + u_ * hu_ + v_ * hv_ + w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      // Y-aligned edges
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ - u_ * hu_ - v_ * hv_ - w_ * hw_,
+           c_ - u_ * hu_ + v_ * hv_ - w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ + u_ * hu_ - v_ * hv_ - w_ * hw_,
+           c_ + u_ * hu_ + v_ * hv_ - w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ - u_ * hu_ - v_ * hv_ + w_ * hw_,
+           c_ - u_ * hu_ + v_ * hv_ + w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ + u_ * hu_ - v_ * hv_ + w_ * hw_,
+           c_ + u_ * hu_ + v_ * hv_ + w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      // Z-aligned edges
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ - u_ * hu_ - v_ * hv_ - w_ * hw_,
+           c_ - u_ * hu_ - v_ * hv_ + w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ + u_ * hu_ - v_ * hv_ - w_ * hw_,
+           c_ + u_ * hu_ - v_ * hv_ + w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ - u_ * hu_ + v_ * hv_ - w_ * hw_,
+           c_ - u_ * hu_ + v_ * hv_ + w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      if (GeometryToolbox::IntersectPlaneAndSegment
+          (p, normal, d,
+           c_ + u_ * hu_ + v_ * hv_ - w_ * hw_,
+           c_ + u_ * hu_ + v_ * hv_ + w_ * hw_))
+      {
+        points.push_back(p);
+      }
+
+      return true;
+    }
+  }
+
+
+  bool OrientedVolumeBoundingBox::HasIntersection(std::vector<Vector>& points,
+                                                  const CoordinateSystem3D& plane) const
+  {
+    // From the vector equation of a 3D plane (specified by origin
+    // and normal), to the general equation of a 3D plane (which
+    // looses information about the origin of the coordinate system)
+    const Vector& normal = plane.GetNormal();
+    const Vector& origin = plane.GetOrigin();
+    double d = -(normal[0] * origin[0] + normal[1] * origin[1] + normal[2] * origin[2]);
+
+    return HasIntersectionWithPlane(points, normal, d);
+  }
+  
+
+  bool OrientedVolumeBoundingBox::Contains(const Vector& p) const
+  {
+    assert(p.size() == 3);
+
+    const Vector q = p - c_;
+
+    return (fabs(boost::numeric::ublas::inner_prod(q, u_)) <= hu_ &&
+            fabs(boost::numeric::ublas::inner_prod(q, v_)) <= hv_ &&
+            fabs(boost::numeric::ublas::inner_prod(q, w_)) <= hw_);
+  }
+
+  
+  void OrientedVolumeBoundingBox::FromInternalCoordinates(Vector& target,
+                                                          double x,
+                                                          double y,
+                                                          double z) const
+  {
+    target = (c_ +
+              u_ * 2.0 * hu_ * (x - 0.5) +
+              v_ * 2.0 * hv_ * (y - 0.5) +
+              w_ * 2.0 * hw_ * (z - 0.5));
+  }
+
+  
+  void OrientedVolumeBoundingBox::FromInternalCoordinates(Vector& target,
+                                                          const Vector& source) const
+  {
+    assert(source.size() == 3);
+    FromInternalCoordinates(target, source[0], source[1], source[2]);
+  }
+
+  
+  void OrientedVolumeBoundingBox::ToInternalCoordinates(Vector& target,
+                                                        const Vector& source) const
+  {
+    assert(source.size() == 3);
+    const Vector q = source - c_;
+
+    double x = boost::numeric::ublas::inner_prod(q, u_) / (2.0 * hu_) + 0.5;
+    double y = boost::numeric::ublas::inner_prod(q, v_) / (2.0 * hv_) + 0.5;
+    double z = boost::numeric::ublas::inner_prod(q, w_) / (2.0 * hw_) + 0.5;
+
+    LinearAlgebra::AssignVector(target, x, y, z);
+  }
+
+
+  bool OrientedVolumeBoundingBox::ComputeExtent(Extent2D& extent,
+                                                const CoordinateSystem3D& plane) const
+  {
+    extent.Reset();
+    
+    std::vector<Vector> points;
+    if (HasIntersection(points, plane))
+    {
+      for (size_t i = 0; i < points.size(); i++)
+      {
+        double x, y;
+        plane.ProjectPoint(x, y, points[i]);
+        extent.AddPoint(x, y);
+      }
+      
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/OrientedVolumeBoundingBox.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,74 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/CoordinateSystem3D.h"
+#include "../Toolbox/Extent2D.h"
+#include "../Toolbox/LinearAlgebra.h"
+#include "VolumeImageGeometry.h"
+
+namespace OrthancStone
+{
+  class OrientedVolumeBoundingBox : public boost::noncopyable
+  {
+  private:
+    Vector  c_;   // center
+    Vector  u_;   // normalized width vector
+    Vector  v_;   // normalized height vector
+    Vector  w_;   // normalized depth vector
+    double  hu_;  // half width
+    double  hv_;  // half height
+    double  hw_;  // half depth
+
+  public:
+    OrientedVolumeBoundingBox(const VolumeImageGeometry& geometry);
+
+    const Vector& GetCenter() const
+    {
+      return c_;
+    }
+
+    bool HasIntersectionWithPlane(std::vector<Vector>& points,
+                                  const Vector& normal,
+                                  double d) const;
+
+    bool HasIntersection(std::vector<Vector>& points,
+                         const CoordinateSystem3D& plane) const;
+
+    bool Contains(const Vector& p) const;
+
+    void FromInternalCoordinates(Vector& target,
+                                 double x,
+                                 double y,
+                                 double z) const;
+
+    void FromInternalCoordinates(Vector& target,
+                                 const Vector& source) const;
+
+    void ToInternalCoordinates(Vector& target,
+                               const Vector& source) const;
+
+    bool ComputeExtent(Extent2D& extent,
+                       const CoordinateSystem3D& plane) const;
+  };
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/VolumeImageGeometry.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,356 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "VolumeImageGeometry.h"
+
+#include "../Toolbox/GeometryToolbox.h"
+
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+  void VolumeImageGeometry::Invalidate()
+  {
+    Vector p = (axialGeometry_.GetOrigin() +
+                static_cast<double>(depth_ - 1) * voxelDimensions_[2] * axialGeometry_.GetNormal());
+        
+    coronalGeometry_ = CoordinateSystem3D(p,
+                                          axialGeometry_.GetAxisX(),
+                                          -axialGeometry_.GetNormal());
+    
+    sagittalGeometry_ = CoordinateSystem3D(p,
+                                           axialGeometry_.GetAxisY(),
+                                           -axialGeometry_.GetNormal());
+
+    Vector origin = (
+      axialGeometry_.MapSliceToWorldCoordinates(-0.5 * voxelDimensions_[0],
+                                                -0.5 * voxelDimensions_[1]) -
+      0.5 * voxelDimensions_[2] * axialGeometry_.GetNormal());
+
+    LOG(TRACE) << "VolumeImageGeometry::Invalidate() origin = " << origin(0) << "," << origin(1) << "," << origin(2) << " | width_ = " << width_ << " | height_ = " << height_ << " | depth_ = " << depth_;
+
+    Vector scaling;
+    
+    if (width_ == 0 ||
+        height_ == 0 ||
+        depth_ == 0)
+    {
+      LinearAlgebra::AssignVector(scaling, 1, 1, 1);
+    }
+    else
+    {
+      scaling = (
+        axialGeometry_.GetAxisX() * voxelDimensions_[0] * static_cast<double>(width_) +
+        axialGeometry_.GetAxisY() * voxelDimensions_[1] * static_cast<double>(height_) +
+        axialGeometry_.GetNormal() * voxelDimensions_[2] * static_cast<double>(depth_));
+    }
+
+    transform_ = LinearAlgebra::Product(
+      GeometryToolbox::CreateTranslationMatrix(origin[0], origin[1], origin[2]),
+      GeometryToolbox::CreateScalingMatrix(scaling[0], scaling[1], scaling[2]));
+
+    LinearAlgebra::InvertMatrix(transformInverse_, transform_);
+  }
+
+  
+  VolumeImageGeometry::VolumeImageGeometry() :
+    width_(0),
+    height_(0),
+    depth_(0)
+  {
+    LinearAlgebra::AssignVector(voxelDimensions_, 1, 1, 1);
+    Invalidate();
+  }
+
+
+  void VolumeImageGeometry::SetSizeInVoxels(unsigned int width,
+                                    unsigned int height,
+                                    unsigned int depth)
+  {
+    width_ = width;
+    height_ = height;
+    depth_ = depth;
+    Invalidate();
+  }
+
+  
+  void VolumeImageGeometry::SetAxialGeometry(const CoordinateSystem3D& geometry)
+  {
+    axialGeometry_ = geometry;
+    Invalidate();
+  }
+
+
+  void VolumeImageGeometry::SetVoxelDimensions(double x,
+                                               double y,
+                                               double z)
+  {
+    if (x <= 0 ||
+        y <= 0 ||
+        z <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+    else
+    {
+      LinearAlgebra::AssignVector(voxelDimensions_, x, y, z);
+      Invalidate();
+    }
+  }
+
+
+  const CoordinateSystem3D& VolumeImageGeometry::GetProjectionGeometry(VolumeProjection projection) const
+  {
+    switch (projection)
+    {
+      case VolumeProjection_Axial:
+        return axialGeometry_;
+
+      case VolumeProjection_Coronal:
+        return coronalGeometry_;
+
+      case VolumeProjection_Sagittal:
+        return sagittalGeometry_;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+  
+  Vector VolumeImageGeometry::GetVoxelDimensions(VolumeProjection projection) const
+  {
+    switch (projection)
+    {
+      case VolumeProjection_Axial:
+        return voxelDimensions_;
+
+      case VolumeProjection_Coronal:
+        return LinearAlgebra::CreateVector(voxelDimensions_[0], voxelDimensions_[2], voxelDimensions_[1]);
+
+      case VolumeProjection_Sagittal:
+        return LinearAlgebra::CreateVector(voxelDimensions_[1], voxelDimensions_[2], voxelDimensions_[0]);
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  unsigned int VolumeImageGeometry::GetProjectionWidth(VolumeProjection projection) const
+  {
+    switch (projection)
+    {
+      case VolumeProjection_Axial:
+        return width_;
+
+      case VolumeProjection_Coronal:
+        return width_;
+
+      case VolumeProjection_Sagittal:
+        return height_;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  unsigned int VolumeImageGeometry::GetProjectionHeight(VolumeProjection projection) const
+  {
+    switch (projection)
+    {
+      case VolumeProjection_Axial:
+        return height_;
+
+      case VolumeProjection_Coronal:
+        return depth_;
+
+      case VolumeProjection_Sagittal:
+        return depth_;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }
+
+
+  unsigned int VolumeImageGeometry::GetProjectionDepth(VolumeProjection projection) const
+  {
+    switch (projection)
+    {
+      case VolumeProjection_Axial:
+        return depth_;
+
+      case VolumeProjection_Coronal:
+        return height_;
+
+      case VolumeProjection_Sagittal:
+        return width_;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }    
+  }
+
+
+  Vector VolumeImageGeometry::GetCoordinates(float x,
+                                             float y,
+                                             float z) const
+  {
+    Vector p = LinearAlgebra::Product(transform_, LinearAlgebra::CreateVector(x, y, z, 1));
+
+    assert(LinearAlgebra::IsNear(p[3], 1));  // Affine transform, no perspective effect
+
+    // Back to non-homogeneous coordinates
+    return LinearAlgebra::CreateVector(p[0], p[1], p[2]);
+  }
+
+
+  bool VolumeImageGeometry::DetectProjection(VolumeProjection& projection,
+                                             const Vector& planeNormal) const
+  {
+    if (GeometryToolbox::IsParallel(planeNormal, axialGeometry_.GetNormal()))
+    {
+      projection = VolumeProjection_Axial;
+      return true;
+    }
+    else if (GeometryToolbox::IsParallel(planeNormal, coronalGeometry_.GetNormal()))
+    {
+      projection = VolumeProjection_Coronal;
+      return true;
+    }
+    else if (GeometryToolbox::IsParallel(planeNormal, sagittalGeometry_.GetNormal()))
+    {
+      projection = VolumeProjection_Sagittal;
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+  
+  bool VolumeImageGeometry::DetectSlice(VolumeProjection& projection,
+                                        unsigned int& slice,
+                                        const CoordinateSystem3D& plane) const
+  {
+    if (!DetectProjection(projection, plane.GetNormal()))
+    {
+      return false;
+    }
+
+    // Transforms the coordinates of the origin of the plane, into the
+    // coordinates of the axial geometry
+    const Vector& origin = plane.GetOrigin();
+    Vector p = LinearAlgebra::Product(
+      transformInverse_,
+      LinearAlgebra::CreateVector(origin[0], origin[1], origin[2], 1));
+
+    assert(LinearAlgebra::IsNear(p[3], 1));
+
+    double z;
+
+    switch (projection)
+    {
+      case VolumeProjection_Axial:
+        z = p[2];
+        break;
+
+      case VolumeProjection_Coronal:
+        z = p[1];
+        break;
+
+      case VolumeProjection_Sagittal:
+        z = p[0];
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    const unsigned int projectionDepth = GetProjectionDepth(projection);
+    
+    z *= static_cast<double>(projectionDepth);
+    if (z < 0)
+    {
+      return false;
+    }
+    else
+    {
+      unsigned int d = static_cast<unsigned int>(std::floor(z));
+      if (d >= projectionDepth)
+      {
+        return false;
+      }
+      else
+      {
+        slice = d;
+        return true;
+      }
+    }
+  }
+
+
+  CoordinateSystem3D VolumeImageGeometry::GetProjectionSlice(VolumeProjection projection,
+                                                             unsigned int z) const
+  {
+    if (z >= GetProjectionDepth(projection))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    Vector dim = GetVoxelDimensions(projection);
+    CoordinateSystem3D plane = GetProjectionGeometry(projection);
+
+    Vector normal = plane.GetNormal();
+    if (projection == VolumeProjection_Sagittal)
+    {
+      /**
+       * WARNING: In sagittal geometry, the normal points to REDUCING
+       * X-axis in the 3D world. This is necessary to keep the
+       * right-hand coordinate system. Hence the negation.
+       **/
+      normal = -normal;
+    }
+    
+    plane.SetOrigin(plane.GetOrigin() + static_cast<double>(z) * dim[2] * normal);
+
+    return plane;
+  }
+
+  std::ostream& operator<<(std::ostream& s, const VolumeImageGeometry& v)
+  {
+    s << "width: " << v.width_ << " height: " << v.height_
+      << " depth: "             << v.depth_
+      << " axialGeometry: "     << v.axialGeometry_
+      << " coronalGeometry: "   << v.coronalGeometry_
+      << " sagittalGeometry: "  << v.sagittalGeometry_
+      << " voxelDimensions_: "  << v.voxelDimensions_
+      << " height: "            << v.height_
+      << " transform: "         << v.transform_
+      << " transformInverse: "  << v.transformInverse_;
+    return s;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/VolumeImageGeometry.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,138 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../StoneEnumerations.h"
+#include "../Toolbox/CoordinateSystem3D.h"
+
+#include <iosfwd>
+
+namespace OrthancStone
+{
+  class VolumeImageGeometry
+  {
+  private:
+    unsigned int           width_;
+    unsigned int           height_;
+    unsigned int           depth_;
+    CoordinateSystem3D     axialGeometry_;
+    CoordinateSystem3D     coronalGeometry_;
+    CoordinateSystem3D     sagittalGeometry_;
+    Vector                 voxelDimensions_;
+    Matrix                 transform_;
+    Matrix                 transformInverse_;
+
+    void Invalidate();
+
+    friend std::ostream& operator<<(std::ostream& s, const VolumeImageGeometry& v);
+
+  public:
+    VolumeImageGeometry();
+
+    unsigned int GetWidth() const
+    {
+      return width_;
+    }
+
+    unsigned int GetHeight() const
+    {
+      return height_;
+    }
+
+    unsigned int GetDepth() const
+    {
+      return depth_;
+    }
+
+    const CoordinateSystem3D& GetAxialGeometry() const
+    {
+      return axialGeometry_;
+    }
+
+    const CoordinateSystem3D& GetCoronalGeometry() const
+    {
+      return coronalGeometry_;
+    }
+
+    const CoordinateSystem3D& GetSagittalGeometry() const
+    {
+      return sagittalGeometry_;
+    }
+
+    const CoordinateSystem3D& GetProjectionGeometry(VolumeProjection projection) const;
+    
+    const Matrix& GetTransform() const
+    {
+      return transform_;
+    }
+
+    const Matrix& GetTransformInverse() const
+    {
+      return transformInverse_;
+    }
+
+    void SetSizeInVoxels(unsigned int width,
+                 unsigned int height,
+                 unsigned int depth);
+
+    // Set the geometry of the first axial slice (i.e. the one whose
+    // depth == 0)
+    void SetAxialGeometry(const CoordinateSystem3D& geometry);
+
+    void SetVoxelDimensions(double x,
+                            double y,
+                            double z);
+
+    Vector GetVoxelDimensions(VolumeProjection projection) const;
+
+    unsigned int GetProjectionWidth(VolumeProjection projection) const;
+
+    unsigned int GetProjectionHeight(VolumeProjection projection) const;
+
+    unsigned int GetProjectionDepth(VolumeProjection projection) const;
+
+    // Get the 3D position of a point in the volume, where x, y and z
+    // lie in the [0;1] range
+    Vector GetCoordinates(float x,
+                          float y,
+                          float z) const;
+
+    bool DetectProjection(VolumeProjection& projection,
+                          const Vector& planeNormal) const;
+
+    /**
+    Being given a cutting plane, this method will determine if it is an
+    axial, sagittal or coronal cut and returns 
+    the slice number corresponding to this cut.
+
+    If the cutting plane is not parallel to the three x = 0, y = 0 or z = 0
+    planes, it is considered as arbitrary and the method returns false. 
+    Otherwise, it returns true.
+    */
+    bool DetectSlice(VolumeProjection& projection,
+                     unsigned int& slice,
+                     const CoordinateSystem3D& plane) const;
+
+    CoordinateSystem3D GetProjectionSlice(VolumeProjection projection,
+                                          unsigned int z) const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/VolumeReslicer.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,839 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "VolumeReslicer.h"
+
+#include "../Toolbox/GeometryToolbox.h"
+#include "../Toolbox/SubvoxelReader.h"
+
+#include <Images/ImageTraits.h>
+#include <Logging.h>
+#include <OrthancException.h>
+
+#include <boost/math/special_functions/round.hpp>
+
+namespace OrthancStone
+{
+  // Anonymous namespace to avoid clashes between compilation modules
+  namespace
+  {
+    enum TransferFunction
+    {
+      TransferFunction_Copy,
+      TransferFunction_Float,
+      TransferFunction_Linear
+    };
+
+
+    template <Orthanc::PixelFormat InputFormat,
+              Orthanc::PixelFormat OutputFormat,
+              ImageInterpolation Interpolation,
+              TransferFunction Function>
+    class PixelShader;
+
+    
+    template <Orthanc::PixelFormat Format>
+    class PixelShader<Format, 
+                      Format, 
+                      ImageInterpolation_Nearest, 
+                      TransferFunction_Copy>
+    {
+    private:
+      typedef SubvoxelReader<Format, ImageInterpolation_Nearest>  VoxelReader;
+      typedef Orthanc::PixelTraits<Format>                        PixelWriter;
+
+      VoxelReader  reader_;
+      
+    public:
+      PixelShader(const ImageBuffer3D& image,
+                  float /* scaling */,
+                  float /* offset */) :
+        reader_(image)
+      {
+      }
+      
+      ORTHANC_FORCE_INLINE
+      void Apply(typename PixelWriter::PixelType* pixel,
+                 float volumeX,
+                 float volumeY,
+                 float volumeZ)
+      {
+        typename VoxelReader::PixelType value;
+
+        if (!reader_.GetValue(value, volumeX, volumeY, volumeZ))
+        {
+          VoxelReader::Traits::SetMinValue(value);
+        }
+
+        *pixel = value;
+      }        
+    };
+
+    
+    template <Orthanc::PixelFormat InputFormat,
+              Orthanc::PixelFormat OutputFormat>
+    class PixelShader<InputFormat, 
+                      OutputFormat, 
+                      ImageInterpolation_Nearest, 
+                      TransferFunction_Copy>
+    {
+    private:
+      typedef SubvoxelReader<InputFormat, ImageInterpolation_Nearest>  VoxelReader;
+      typedef Orthanc::PixelTraits<OutputFormat>                       PixelWriter;
+
+      VoxelReader  reader_;
+      
+    public:
+      PixelShader(const ImageBuffer3D& image,
+                  float /* scaling */,
+                  float /* offset */) :
+        reader_(image)
+      {
+      }
+      
+      ORTHANC_FORCE_INLINE
+      void Apply(typename PixelWriter::PixelType* pixel,
+                 float volumeX,
+                 float volumeY,
+                 float volumeZ)
+      {
+        typename VoxelReader::PixelType value;
+
+        if (!reader_.GetValue(value, volumeX, volumeY, volumeZ))
+        {
+          VoxelReader::Traits::SetMinValue(value);
+        }
+
+        PixelWriter::FloatToPixel(*pixel, VoxelReader::Traits::PixelToFloat(value));
+      }        
+    };
+
+    
+    template <Orthanc::PixelFormat InputFormat,
+              Orthanc::PixelFormat OutputFormat,
+              ImageInterpolation Interpolation>
+    class PixelShader<InputFormat,
+                      OutputFormat,
+                      Interpolation,
+                      TransferFunction_Float>
+    {
+    private:
+      typedef SubvoxelReader<InputFormat, Interpolation>  VoxelReader;
+      typedef Orthanc::PixelTraits<OutputFormat>          PixelWriter;
+
+      VoxelReader  reader_;
+      float        outOfVolume_;
+      
+    public:
+      PixelShader(const ImageBuffer3D& image,
+                  float /* scaling */,
+                  float /* offset */) :
+        reader_(image),
+        outOfVolume_(static_cast<float>(std::numeric_limits<typename VoxelReader::PixelType>::min()))
+      {
+      }
+      
+      ORTHANC_FORCE_INLINE
+      void Apply(typename PixelWriter::PixelType* pixel,
+                 float volumeX,
+                 float volumeY,
+                 float volumeZ)
+      {
+        float value;
+
+        if (!reader_.GetFloatValue(value, volumeX, volumeY, volumeZ))
+        {
+          value = outOfVolume_;
+        }
+
+        PixelWriter::FloatToPixel(*pixel, value);
+      }
+    };
+
+    
+   template <Orthanc::PixelFormat InputFormat,
+             Orthanc::PixelFormat OutputFormat,
+             ImageInterpolation Interpolation>
+    class PixelShader<InputFormat,
+                      OutputFormat,
+                      Interpolation,
+                      TransferFunction_Linear>
+    {
+    private:
+      typedef SubvoxelReader<InputFormat, Interpolation>  VoxelReader;
+      typedef Orthanc::PixelTraits<OutputFormat>          PixelWriter;
+
+      VoxelReader  reader_;
+      float        scaling_;
+      float        offset_;
+      float        outOfVolume_;
+      
+    public:
+      PixelShader(const ImageBuffer3D& image,
+                  float scaling,
+                  float offset) :
+        reader_(image),
+        scaling_(scaling),
+        offset_(offset),
+        outOfVolume_(static_cast<float>(std::numeric_limits<typename VoxelReader::PixelType>::min()))
+      {
+      }
+      
+      ORTHANC_FORCE_INLINE
+      void Apply(typename PixelWriter::PixelType* pixel,
+                 float volumeX,
+                 float volumeY,
+                 float volumeZ)
+      {
+        float value;
+
+        if (reader_.GetFloatValue(value, volumeX, volumeY, volumeZ))
+        {
+          value = scaling_ * value + offset_;
+        }
+        else
+        {
+          value = outOfVolume_;
+        }
+
+        PixelWriter::FloatToPixel(*pixel, value);
+      }        
+    };
+
+
+
+    class FastRowIterator : public boost::noncopyable
+    {
+    private:
+      float  position_[3];
+      float  offset_[3];
+      
+    public:
+      FastRowIterator(const Orthanc::ImageAccessor& slice,
+                      const Extent2D& extent,
+                      const CoordinateSystem3D& plane,
+                      const OrientedVolumeBoundingBox& box,
+                      unsigned int y)
+      {
+        const double width = static_cast<double>(slice.GetWidth());
+        const double height = static_cast<double>(slice.GetHeight());
+        assert(y < height);
+
+        Vector q1 = plane.MapSliceToWorldCoordinates
+          (extent.GetX1() + extent.GetWidth() * static_cast<double>(0) / static_cast<double>(width + 1),
+           extent.GetY1() + extent.GetHeight() * static_cast<double>(y) / static_cast<double>(height + 1));
+
+        Vector q2 = plane.MapSliceToWorldCoordinates
+          (extent.GetX1() + extent.GetWidth() * static_cast<double>(width - 1) / static_cast<double>(width + 1),
+           extent.GetY1() + extent.GetHeight() * static_cast<double>(y) / static_cast<double>(height + 1));
+
+        Vector r1, r2;
+        box.ToInternalCoordinates(r1, q1);
+        box.ToInternalCoordinates(r2, q2);
+
+        position_[0] = static_cast<float>(r1[0]);
+        position_[1] = static_cast<float>(r1[1]);
+        position_[2] = static_cast<float>(r1[2]);
+        
+        Vector tmp = (r2 - r1) / static_cast<double>(width - 1);
+        offset_[0] = static_cast<float>(tmp[0]);
+        offset_[1] = static_cast<float>(tmp[1]);
+        offset_[2] = static_cast<float>(tmp[2]);
+      }
+
+      ORTHANC_FORCE_INLINE
+      void Next()
+      {
+        position_[0] += offset_[0];
+        position_[1] += offset_[1];
+        position_[2] += offset_[2];
+      }
+
+      ORTHANC_FORCE_INLINE
+      void GetVolumeCoordinates(float& x,
+                                float& y,
+                                float& z) const
+      {
+        x = position_[0];
+        y = position_[1];
+        z = position_[2];
+      }
+    };
+
+
+    class SlowRowIterator : public boost::noncopyable
+    {
+    private:
+      const Orthanc::ImageAccessor&  slice_;
+      const Extent2D&                extent_;
+      const CoordinateSystem3D&      plane_;
+      const OrientedVolumeBoundingBox&     box_;
+      unsigned int                   x_;
+      unsigned int                   y_;
+      
+    public:
+      SlowRowIterator(const Orthanc::ImageAccessor& slice,
+                      const Extent2D& extent,
+                      const CoordinateSystem3D& plane,
+                      const OrientedVolumeBoundingBox& box,
+                      unsigned int y) :
+        slice_(slice),
+        extent_(extent),
+        plane_(plane),
+        box_(box),
+        x_(0),
+        y_(y)
+      {
+        assert(y_ < slice_.GetHeight());
+      }
+
+      void Next()
+      {
+        x_++;
+      }
+
+      void GetVolumeCoordinates(float& x,
+                                float& y,
+                                float& z) const
+      {
+        assert(x_ < slice_.GetWidth());
+        
+        const double width = static_cast<double>(slice_.GetWidth());
+        const double height = static_cast<double>(slice_.GetHeight());
+        
+        Vector q = plane_.MapSliceToWorldCoordinates
+          (extent_.GetX1() + extent_.GetWidth() * static_cast<double>(x_) / (width + 1.0),
+           extent_.GetY1() + extent_.GetHeight() * static_cast<double>(y_) / (height + 1.0));
+
+        Vector r;
+        box_.ToInternalCoordinates(r, q);
+
+        x = static_cast<float>(r[0]);
+        y = static_cast<float>(r[1]);
+        z = static_cast<float>(r[2]);
+      }
+    };
+
+
+    template <typename RowIterator,
+              Orthanc::PixelFormat InputFormat,
+              Orthanc::PixelFormat OutputFormat,
+              ImageInterpolation Interpolation,
+              TransferFunction Function>
+    static void ProcessImage(Orthanc::ImageAccessor& slice,
+                             const Extent2D& extent,
+                             const ImageBuffer3D& source,
+                             const CoordinateSystem3D& plane,
+                             const OrientedVolumeBoundingBox& box,
+                             float scaling,
+                             float offset)
+    {
+      typedef PixelShader<InputFormat, OutputFormat, Interpolation, Function>   Shader;
+
+      const unsigned int outputWidth = slice.GetWidth();
+      const unsigned int outputHeight = slice.GetHeight();
+
+      const float sourceWidth = static_cast<float>(source.GetWidth());
+      const float sourceHeight = static_cast<float>(source.GetHeight());
+      const float sourceDepth = static_cast<float>(source.GetDepth());
+
+      Shader shader(source, scaling, offset);
+
+      for (unsigned int y = 0; y < outputHeight; y++)
+      {
+        typedef typename Orthanc::ImageTraits<OutputFormat>::PixelType PixelType;
+        PixelType* p = reinterpret_cast<PixelType*>(slice.GetRow(y));
+
+        RowIterator it(slice, extent, plane, box, y);
+
+        for (unsigned int x = 0; x < outputWidth; x++, p++)
+        {
+          float volumeX, volumeY, volumeZ;
+          it.GetVolumeCoordinates(volumeX, volumeY, volumeZ);
+
+          shader.Apply(p, 
+                       volumeX * sourceWidth, 
+                       volumeY * sourceHeight, 
+                       volumeZ * sourceDepth);
+          it.Next();
+        }
+      }
+    }
+
+
+    template <typename RowIterator,
+              Orthanc::PixelFormat InputFormat,
+              Orthanc::PixelFormat OutputFormat>
+    static void ProcessImage(Orthanc::ImageAccessor& slice,
+                             const Extent2D& extent,
+                             const ImageBuffer3D& source,
+                             const CoordinateSystem3D& plane,
+                             const OrientedVolumeBoundingBox& box,
+                             ImageInterpolation interpolation,
+                             bool hasLinearFunction,
+                             float scaling,
+                             float offset)
+    {
+      if (hasLinearFunction)
+      {
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ProcessImage<RowIterator, InputFormat, OutputFormat,
+                         ImageInterpolation_Nearest, TransferFunction_Linear>
+              (slice, extent, source, plane, box, scaling, offset);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            ProcessImage<RowIterator, InputFormat, OutputFormat,
+                         ImageInterpolation_Bilinear, TransferFunction_Linear>
+              (slice, extent, source, plane, box, scaling, offset);
+            break;
+
+          case ImageInterpolation_Trilinear:
+            ProcessImage<RowIterator, InputFormat, OutputFormat,
+                         ImageInterpolation_Trilinear, TransferFunction_Linear>
+              (slice, extent, source, plane, box, scaling, offset);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }        
+      }
+      else
+      {
+        switch (interpolation)
+        {
+          case ImageInterpolation_Nearest:
+            ProcessImage<RowIterator, InputFormat, OutputFormat,
+                         ImageInterpolation_Nearest, TransferFunction_Copy>
+              (slice, extent, source, plane, box, 0, 0);
+            break;
+
+          case ImageInterpolation_Bilinear:
+            ProcessImage<RowIterator, InputFormat, OutputFormat,
+                         ImageInterpolation_Bilinear, TransferFunction_Float>
+              (slice, extent, source, plane, box, 0, 0);
+            break;
+
+          case ImageInterpolation_Trilinear:
+            ProcessImage<RowIterator, InputFormat, OutputFormat,
+                         ImageInterpolation_Trilinear, TransferFunction_Float>
+              (slice, extent, source, plane, box, 0, 0);
+            break;
+
+          default:
+            throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+        }        
+      }
+    }
+    
+    
+    template <typename RowIterator>
+    static void ProcessImage(Orthanc::ImageAccessor& slice,
+                             const Extent2D& extent,
+                             const ImageBuffer3D& source,
+                             const CoordinateSystem3D& plane,
+                             const OrientedVolumeBoundingBox& box,
+                             ImageInterpolation interpolation,
+                             bool hasLinearFunction,
+                             float scaling,
+                             float offset)
+    {
+      if (source.GetFormat() == Orthanc::PixelFormat_Grayscale16 &&
+          slice.GetFormat() == Orthanc::PixelFormat_Grayscale8)
+      {
+        ProcessImage<RowIterator,
+                     Orthanc::PixelFormat_Grayscale16,
+                     Orthanc::PixelFormat_Grayscale8>
+          (slice, extent, source, plane, box, interpolation, hasLinearFunction, scaling, offset);
+      }
+      else if (source.GetFormat() == Orthanc::PixelFormat_Grayscale16 &&
+               slice.GetFormat() == Orthanc::PixelFormat_Grayscale16)
+      {
+        ProcessImage<RowIterator,
+                     Orthanc::PixelFormat_Grayscale16,
+                     Orthanc::PixelFormat_Grayscale16>
+          (slice, extent, source, plane, box, interpolation, hasLinearFunction, scaling, offset);
+      }
+      else if (source.GetFormat() == Orthanc::PixelFormat_SignedGrayscale16 &&
+               slice.GetFormat() == Orthanc::PixelFormat_BGRA32)
+      {
+        ProcessImage<RowIterator,
+                     Orthanc::PixelFormat_SignedGrayscale16,
+                     Orthanc::PixelFormat_BGRA32>
+          (slice, extent, source, plane, box, interpolation, hasLinearFunction, scaling, offset);
+      }
+      else if (source.GetFormat() == Orthanc::PixelFormat_Grayscale16 &&
+               slice.GetFormat() == Orthanc::PixelFormat_BGRA32)
+      {
+        ProcessImage<RowIterator,
+                     Orthanc::PixelFormat_Grayscale16,
+                     Orthanc::PixelFormat_BGRA32>
+          (slice, extent, source, plane, box, interpolation, hasLinearFunction, scaling, offset);
+      }
+      else
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+    }
+  }
+    
+    
+
+  void VolumeReslicer::CheckIterators(const ImageBuffer3D& source,
+                                      const CoordinateSystem3D& plane,
+                                      const OrientedVolumeBoundingBox& box) const
+  {
+    for (unsigned int y = 0; y < slice_->GetHeight(); y++)
+    {
+      FastRowIterator fast(*slice_, extent_, plane, box, y);
+      SlowRowIterator slow(*slice_, extent_, plane, box, y);
+
+      for (unsigned int x = 0; x < slice_->GetWidth(); x++)
+      {
+        float px, py, pz;
+        fast.GetVolumeCoordinates(px, py, pz);
+
+        float qx, qy, qz;
+        slow.GetVolumeCoordinates(qx, qy, qz);
+
+        Vector d;
+        LinearAlgebra::AssignVector(d, px - qx, py - qy, pz - qz);
+        double norm = boost::numeric::ublas::norm_2(d);
+        if (norm > 0.0001)
+        {
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+        }
+          
+        fast.Next();
+        slow.Next();
+      }
+    }
+  }
+
+    
+  void VolumeReslicer::Reset()
+  {
+    success_ = false;
+    extent_.Reset();
+    slice_.reset(NULL);
+  }
+
+
+  float VolumeReslicer::GetMinOutputValue() const
+  {
+    switch (outputFormat_)
+    {
+      case Orthanc::PixelFormat_Grayscale8:
+      case Orthanc::PixelFormat_Grayscale16:
+      case Orthanc::PixelFormat_BGRA32:
+        return 0.0f;
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+
+    
+  float VolumeReslicer::GetMaxOutputValue() const
+  {
+    switch (outputFormat_)
+    {
+      case Orthanc::PixelFormat_Grayscale8:
+      case Orthanc::PixelFormat_BGRA32:
+        return static_cast<float>(std::numeric_limits<uint8_t>::max());
+        break;
+
+      case Orthanc::PixelFormat_Grayscale16:
+        return static_cast<float>(std::numeric_limits<uint16_t>::max());
+        break;
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+    }
+  }
+    
+
+  VolumeReslicer::VolumeReslicer() :
+    outputFormat_(Orthanc::PixelFormat_Grayscale8),
+    interpolation_(ImageInterpolation_Nearest),
+    fastMode_(true),
+    success_(false)
+  {
+    ResetLinearFunction();
+  }
+
+
+  void VolumeReslicer::GetLinearFunction(float& scaling,
+                                         float& offset) const
+  {
+    if (hasLinearFunction_)
+    {
+      scaling = scaling_;
+      offset = offset_;
+    }
+    else
+    {
+      scaling = 1.0f;
+      offset = 0.0f;
+    }
+  }
+
+  
+  void VolumeReslicer::ResetLinearFunction()
+  {
+    Reset();
+    hasLinearFunction_ = false;
+    scaling_ = 1.0f;
+    offset_ = 0.0f;
+  }
+    
+
+  void VolumeReslicer::SetLinearFunction(float scaling,
+                                         float offset)
+  {
+    Reset();
+    hasLinearFunction_ = true;
+    scaling_ = scaling;
+    offset_ = offset;
+  }
+
+  
+  void VolumeReslicer::SetWindow(float low,
+                                 float high)
+  {
+    //printf("Range in pixel values: %f->%f\n", low, high);
+    float scaling = (GetMaxOutputValue() - GetMinOutputValue()) / (high - low);
+    float offset = GetMinOutputValue() - scaling * low;
+    
+    SetLinearFunction(scaling, offset);
+
+    /*float x = scaling_ * low + offset_;
+    float y = scaling_ * high + offset_;
+    printf("%f %f (should be %f->%f)\n", x, y, GetMinOutputValue(), GetMaxOutputValue());*/
+  }
+  
+
+  void VolumeReslicer::FitRange(const ImageBuffer3D& image)
+  {
+    float minInputValue, maxInputValue;
+
+    if (!image.GetRange(minInputValue, maxInputValue) ||
+        maxInputValue < 1)
+    {
+      ResetLinearFunction();
+    }
+    else
+    {
+      SetWindow(minInputValue, maxInputValue);
+    }
+  }  
+
+  
+  void VolumeReslicer::SetWindowing(ImageWindowing windowing,
+                                    const ImageBuffer3D& image,
+                                    float rescaleSlope,
+                                    float rescaleIntercept)
+  {
+    if (windowing == ImageWindowing_Custom)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    float center, width;
+    ComputeWindowing(center, width, windowing, 0, 0);
+
+    float a = (center - width / 2.0f - rescaleIntercept) / rescaleSlope;
+    float b = (center + width / 2.0f - rescaleIntercept) / rescaleSlope;
+    SetWindow(a, b);
+  }
+
+
+  void VolumeReslicer::SetOutputFormat(Orthanc::PixelFormat format)
+  {
+    if (format != Orthanc::PixelFormat_Grayscale8 &&
+        format != Orthanc::PixelFormat_Grayscale16 &&
+        format != Orthanc::PixelFormat_BGRA32)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    if (hasLinearFunction_)
+    {
+      LOG(WARNING) << "Calls to VolumeReslicer::SetOutputFormat() should be done before VolumeReslicer::FitRange()";
+    }
+    
+    outputFormat_ = format;
+    Reset();
+  }
+
+
+  void VolumeReslicer::SetInterpolation(ImageInterpolation interpolation)
+  {
+    if (interpolation != ImageInterpolation_Nearest &&
+        interpolation != ImageInterpolation_Bilinear &&
+        interpolation != ImageInterpolation_Trilinear)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+
+    interpolation_ = interpolation;
+    Reset();
+  }
+
+
+  const Extent2D& VolumeReslicer::GetOutputExtent() const
+  {
+    if (success_)
+    {
+      return extent_;
+    }
+    else
+    {
+      LOG(ERROR) << "VolumeReslicer::GetOutputExtent(): (!success_)";
+
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  
+  const Orthanc::ImageAccessor& VolumeReslicer::GetOutputSlice() const
+  {
+    if (success_)
+    {
+      assert(slice_.get() != NULL);
+      return *slice_;
+    }
+    else
+    {
+      LOG(ERROR) << "VolumeReslicer::GetOutputSlice(): (!success_)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  
+  Orthanc::ImageAccessor* VolumeReslicer::ReleaseOutputSlice()
+  {
+    if (success_)
+    {
+      assert(slice_.get() != NULL);
+      success_ = false;
+      return slice_.release();
+    }
+    else
+    {
+      LOG(ERROR) << "VolumeReslicer::ReleaseOutputSlice(): (!success_)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+
+  
+  void VolumeReslicer::Apply(const ImageBuffer3D& source,
+                             const VolumeImageGeometry& geometry,
+                             const CoordinateSystem3D& plane)
+  {
+    // Choose the default voxel size as the finest voxel dimension
+    // of the source volumetric image
+    const OrthancStone::Vector dim =
+      geometry.GetVoxelDimensions(OrthancStone::VolumeProjection_Axial);
+    double voxelSize = dim[0];
+    
+    if (dim[1] < voxelSize)
+    {
+      voxelSize = dim[1];
+    }
+    
+    if (dim[2] < voxelSize)
+    {
+      voxelSize = dim[2];
+    }
+
+    if (voxelSize <= 0)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    Apply(source, geometry, plane, voxelSize);
+  }
+
+  
+  void VolumeReslicer::Apply(const ImageBuffer3D& source,
+                             const VolumeImageGeometry& geometry,
+                             const CoordinateSystem3D& plane,
+                             double voxelSize)
+  {
+    Reset();
+    pixelSpacing_ = voxelSize;
+
+    // Firstly, compute the intersection of the source volumetric
+    // image with the reslicing plane. This leads to a polygon with 3
+    // to 6 vertices. We compute the extent of the intersection
+    // polygon, with respect to the coordinate system of the reslicing
+    // plane.
+    OrientedVolumeBoundingBox box(geometry);
+
+    if (!box.ComputeExtent(extent_, plane))
+    {
+      // The plane does not intersect with the bounding box of the volume
+      slice_.reset(new Orthanc::Image(outputFormat_, 0, 0, false));
+      success_ = true;
+      return;
+    }
+
+    // Secondly, the extent together with the voxel size gives the
+    // size of the output image
+    unsigned int width = boost::math::iround(extent_.GetWidth() / voxelSize);
+    unsigned int height = boost::math::iround(extent_.GetHeight() / voxelSize);
+
+    slice_.reset(new Orthanc::Image(outputFormat_, width, height, false));
+
+    //CheckIterators(source, plane, box);
+      
+    if (fastMode_)
+    {
+      ProcessImage<FastRowIterator>(*slice_, extent_, source, plane, box,
+                                    interpolation_, hasLinearFunction_, scaling_, offset_);
+    }
+    else
+    {
+      ProcessImage<SlowRowIterator>(*slice_, extent_, source, plane, box,
+                                    interpolation_, hasLinearFunction_, scaling_, offset_);
+    }
+
+    success_ = true;
+  }
+
+
+  double VolumeReslicer::GetPixelSpacing() const
+  {
+    if (success_)
+    {
+      return pixelSpacing_;
+    }
+    else
+    {
+      LOG(ERROR) << "VolumeReslicer::GetPixelSpacing(): (!success_)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/VolumeReslicer.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,125 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Toolbox/Extent2D.h"
+#include "OrientedVolumeBoundingBox.h"
+#include "ImageBuffer3D.h"
+
+namespace OrthancStone
+{
+  // Hypothesis: The output voxels always have square size
+  class VolumeReslicer : public boost::noncopyable
+  {
+  private:
+    // Input parameters
+    Orthanc::PixelFormat           outputFormat_;
+    bool                           hasLinearFunction_;
+    float                          scaling_;  // "a" in "f(x) = a * x + b"
+    float                          offset_;   // "b" in "f(x) = a * x + b"
+    ImageInterpolation             interpolation_;
+    bool                           fastMode_;
+
+    // Output of reslicing
+    bool                           success_;
+    Extent2D                       extent_;
+    std::unique_ptr<Orthanc::Image>  slice_;
+    double                         pixelSpacing_;
+
+    void CheckIterators(const ImageBuffer3D& source,
+                        const CoordinateSystem3D& plane,
+                        const OrientedVolumeBoundingBox& box) const;
+
+    void Reset();
+
+    float GetMinOutputValue() const;
+
+    float GetMaxOutputValue() const;
+
+    void SetWindow(float low,
+                   float high);
+    
+  public:
+    VolumeReslicer();
+
+    void GetLinearFunction(float& scaling,
+                           float& offset) const;
+
+    void ResetLinearFunction();
+    
+    void SetLinearFunction(float scaling,
+                           float offset);
+
+    void FitRange(const ImageBuffer3D& image);
+
+    void SetWindowing(ImageWindowing windowing,
+                      const ImageBuffer3D& image,
+                      float rescaleSlope,
+                      float rescaleIntercept);
+
+    Orthanc::PixelFormat GetOutputFormat() const
+    {
+      return outputFormat_;
+    }
+
+    void SetOutputFormat(Orthanc::PixelFormat format);
+
+    ImageInterpolation GetInterpolation() const
+    {
+      return interpolation_;
+    }
+
+    void SetInterpolation(ImageInterpolation interpolation);
+
+    bool IsFastMode() const
+    {
+      return fastMode_;
+    }
+
+    void EnableFastMode(bool enabled)
+    {
+      fastMode_ = enabled;
+    }
+
+    bool IsSuccess() const
+    {
+      return success_;
+    }
+
+    const Extent2D& GetOutputExtent() const;
+
+    const Orthanc::ImageAccessor& GetOutputSlice() const;
+
+    Orthanc::ImageAccessor* ReleaseOutputSlice();
+
+    void Apply(const ImageBuffer3D& source,
+               const VolumeImageGeometry& geometry,
+               const CoordinateSystem3D& plane);
+
+    void Apply(const ImageBuffer3D& source,
+               const VolumeImageGeometry& geometry,
+               const CoordinateSystem3D& plane,
+               double voxelSize);
+
+    double GetPixelSpacing() const;
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/VolumeSceneLayerSource.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,175 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "VolumeSceneLayerSource.h"
+
+#include "../Scene2D/NullLayer.h"
+#include "../Viewport/IViewport.h"
+#include "../StoneException.h"
+
+#include <OrthancException.h>
+
+namespace OrthancStone
+{
+  static bool IsSameCuttingPlane(const CoordinateSystem3D& a,
+                                 const CoordinateSystem3D& b)
+  {
+    // TODO - What if the normal is reversed?
+    double distance;
+    return (CoordinateSystem3D::ComputeDistance(distance, a, b) &&
+            LinearAlgebra::IsCloseToZero(distance));
+  }
+
+
+  void VolumeSceneLayerSource::ClearLayer()
+  {
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      ViewportController& controller = lock->GetController();
+      Scene2D& scene = controller.GetScene();
+      scene.DeleteLayer(layerDepth_);
+    }
+    lastPlane_.reset(NULL);
+  }
+
+  VolumeSceneLayerSource::VolumeSceneLayerSource(
+    boost::shared_ptr<OrthancStone::IViewport>  viewport,
+    int layerDepth,
+    const boost::shared_ptr<IVolumeSlicer>& slicer)
+    : viewport_(viewport)
+    , layerDepth_(layerDepth)
+    , slicer_(slicer)
+  {
+    if (slicer == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    {
+      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+      ViewportController& controller = lock->GetController();
+      Scene2D& scene = controller.GetScene();
+      ORTHANC_ASSERT(!scene.HasLayer(layerDepth_));
+
+      // we need to book the scene layer depth by adding a dummy layer
+      std::unique_ptr<NullLayer> nullLayer(new NullLayer);
+      scene.SetLayer(layerDepth_,nullLayer.release());
+    }
+  }
+
+  VolumeSceneLayerSource::~VolumeSceneLayerSource()
+  {
+    ClearLayer();
+  }
+
+  void VolumeSceneLayerSource::RemoveConfigurator()
+  {
+    configurator_.reset();
+    lastPlane_.reset();
+  }
+
+
+  void VolumeSceneLayerSource::SetConfigurator(ILayerStyleConfigurator* configurator)  // Takes ownership
+  {
+    if (configurator == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    configurator_.reset(configurator);
+
+    // Invalidate the layer
+    lastPlane_.reset(NULL);
+  }
+
+
+  ILayerStyleConfigurator& VolumeSceneLayerSource::GetConfigurator() const
+  {
+    if (configurator_.get() == NULL)
+    {
+      LOG(ERROR) << "VolumeSceneLayerSource::GetConfigurator(): (configurator_.get() == NULL)";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+      
+    return *configurator_;
+  }
+
+
+  void VolumeSceneLayerSource::Update(const CoordinateSystem3D& plane)
+  {
+    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
+    ViewportController& controller = lock->GetController();
+    Scene2D& scene = controller.GetScene();
+
+    assert(slicer_.get() != NULL);
+    std::unique_ptr<IVolumeSlicer::IExtractedSlice> slice(slicer_->ExtractSlice(plane));
+
+    if (slice.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);        
+    }
+
+    if (!slice->IsValid())
+    {
+      // The slicer cannot handle this cutting plane: Clear the layer
+      ClearLayer();
+    }
+    else if (lastPlane_.get() != NULL &&
+             IsSameCuttingPlane(*lastPlane_, plane) &&
+             lastRevision_ == slice->GetRevision())
+    {
+      // The content of the slice has not changed: Don't update the
+      // layer content, but possibly update its style
+
+      if (configurator_.get() != NULL &&
+          configurator_->GetRevision() != lastConfiguratorRevision_ &&
+          scene.HasLayer(layerDepth_))
+      {
+        configurator_->ApplyStyle(scene.GetLayer(layerDepth_));
+      }
+    }
+    else
+    {
+      LOG(TRACE) << "VolumeSceneLayerSource::Update -- Content has changed: An update is needed";
+      // Content has changed: An update is needed
+      lastPlane_.reset(new CoordinateSystem3D(plane));
+      lastRevision_ = slice->GetRevision();
+
+      std::unique_ptr<ISceneLayer> layer(slice->CreateSceneLayer(configurator_.get(), plane));
+      if (layer.get() == NULL)
+      {
+        LOG(TRACE) << "VolumeSceneLayerSource::Update -- (layer.get() == NULL)";
+        ClearLayer();
+      }
+      else
+      {
+        LOG(TRACE) << "VolumeSceneLayerSource::Update -- (layer.get() != NULL)";
+        if (configurator_.get() != NULL)
+        {
+          lastConfiguratorRevision_ = configurator_->GetRevision();
+          configurator_->ApplyStyle(*layer);
+        }
+
+        scene.SetLayer(layerDepth_, layer.release());
+      }
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Volumes/VolumeSceneLayerSource.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,86 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../Scene2D/Scene2D.h"
+#include "IVolumeSlicer.h"
+
+#include <boost/shared_ptr.hpp>
+
+namespace OrthancStone
+{
+  class IViewport;
+  /**
+     This class applies one "volume slicer" to a "3D volume", in order
+     to create one "2D scene layer" that will be set onto the "2D
+     scene". The style of the layer can be fine-tuned using a "layer
+     style configurator". The class only changes the layer if the
+     cutting plane has been modified since the last call to "Update()".
+   */
+  class VolumeSceneLayerSource : public boost::noncopyable
+  {
+  private:
+    boost::shared_ptr<OrthancStone::IViewport>  viewport_;
+    int                                       layerDepth_;
+    boost::shared_ptr<IVolumeSlicer>          slicer_;
+    std::unique_ptr<ILayerStyleConfigurator>  configurator_;
+    std::unique_ptr<CoordinateSystem3D>       lastPlane_;
+    uint64_t                                  lastRevision_;
+    uint64_t                                  lastConfiguratorRevision_;
+    bool                                      layerInScene_;
+
+    void ClearLayer();
+
+  public:
+    VolumeSceneLayerSource(boost::shared_ptr<OrthancStone::IViewport>  viewport,
+                           int layerDepth,
+                           const boost::shared_ptr<IVolumeSlicer>& slicer);
+
+    ~VolumeSceneLayerSource();
+
+    const IVolumeSlicer& GetSlicer() const
+    {
+      return *slicer_;
+    }
+
+    void RemoveConfigurator();
+
+    void SetConfigurator(ILayerStyleConfigurator* configurator);
+
+    bool HasConfigurator() const
+    {
+      return configurator_.get() != NULL;
+    }
+
+    ILayerStyleConfigurator& GetConfigurator() const;
+
+    /**
+    Make sure the Scene2D is protected from concurrent accesses before 
+    calling this method.
+
+    If the scene that has been supplied to the ctor is part of an IViewport, 
+    you can lock the whole viewport data (including scene) by means of the 
+    IViewport::Lock method.
+    */ 
+    void Update(const CoordinateSystem3D& plane); 
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Wrappers/CairoContext.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,146 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoContext.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+
+
+namespace OrthancStone
+{
+  CairoContext::CairoContext(CairoSurface& surface) :
+    width_(surface.GetWidth()),
+    height_(surface.GetHeight())
+  {
+    context_ = cairo_create(surface.GetObject());
+    if (!context_)
+    {
+      LOG(ERROR) << "Cannot create Cairo drawing context";
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+  CairoContext::~CairoContext()
+  {
+    if (context_ != NULL)
+    {
+      cairo_destroy(context_);
+      context_ = NULL;
+    }
+  }
+
+
+  void CairoContext::SetSourceColor(uint8_t red,
+                                    uint8_t green,
+                                    uint8_t blue)
+  {
+    cairo_set_source_rgb(context_,
+                         static_cast<float>(red) / 255.0f,
+                         static_cast<float>(green) / 255.0f,
+                         static_cast<float>(blue) / 255.0f);
+  }
+
+
+  class CairoContext::AlphaSurface : public boost::noncopyable
+  {
+  private:
+    cairo_surface_t  *surface_;
+
+  public:
+    AlphaSurface(unsigned int width,
+                 unsigned int height)
+    {
+      surface_ = cairo_image_surface_create(CAIRO_FORMAT_A8, width, height);
+      
+      if (!surface_)
+      {
+        // Should never occur
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+
+      if (cairo_surface_status(surface_) != CAIRO_STATUS_SUCCESS)
+      {
+        LOG(ERROR) << "Cannot create a Cairo surface";
+        cairo_surface_destroy(surface_);
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+      }
+    }
+    
+    ~AlphaSurface()
+    {
+      cairo_surface_destroy(surface_);
+    }
+
+    void GetAccessor(Orthanc::ImageAccessor& target)
+    {
+      target.AssignWritable(Orthanc::PixelFormat_Grayscale8,
+                            cairo_image_surface_get_width(surface_),
+                            cairo_image_surface_get_height(surface_),
+                            cairo_image_surface_get_stride(surface_),
+                            cairo_image_surface_get_data(surface_));
+    }
+
+    void Blit(cairo_t* cr,
+              double x,
+              double y)
+    {
+      cairo_surface_mark_dirty(surface_);
+      cairo_mask_surface(cr, surface_, x, y);
+      cairo_fill(cr);
+    }
+  };
+
+
+  void CairoContext::DrawText(const Orthanc::Font& font,
+                              const std::string& text,
+                              double x,
+                              double y,
+                              BitmapAnchor anchor)
+  {
+    // Render a bitmap containing the text
+    unsigned int width, height;
+    font.ComputeTextExtent(width, height, text);
+    
+    AlphaSurface surface(width, height);
+
+    Orthanc::ImageAccessor accessor;
+    surface.GetAccessor(accessor);
+    font.Draw(accessor, text, 0, 0, 255);
+
+    // Correct the text location given the anchor location
+    double deltaX, deltaY;
+    ComputeAnchorTranslation(deltaX, deltaY, anchor, width, height);
+
+    // Cancel zoom/rotation before blitting the text onto the surface
+    double pixelX = x;
+    double pixelY = y;
+    cairo_user_to_device(context_, &pixelX, &pixelY);
+
+    cairo_save(context_);
+    cairo_identity_matrix(context_);
+
+    // Blit the text bitmap
+    surface.Blit(context_, pixelX + deltaX, pixelY + deltaY);
+    cairo_restore(context_);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Wrappers/CairoContext.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,76 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "CairoSurface.h"
+#include "../StoneEnumerations.h"
+
+#include <Images/Font.h>
+
+namespace OrthancStone
+{
+  // This is a RAII wrapper around the Cairo drawing context
+  class CairoContext : public boost::noncopyable
+  {
+  private:
+    class AlphaSurface;
+    
+    cairo_t*      context_;
+    unsigned int  width_;
+    unsigned int  height_;
+
+  public:
+    CairoContext(CairoSurface& surface);
+
+    ~CairoContext();
+
+    cairo_t* GetObject()
+    {
+      return context_;
+    }
+
+    unsigned int GetWidth() const
+    {
+      return width_;
+    }
+
+    unsigned int GetHeight() const
+    {
+      return height_;
+    }
+
+    void SetSourceColor(uint8_t red,
+                        uint8_t green,
+                        uint8_t blue);
+
+    void SetSourceColor(const uint8_t color[3])
+    {
+      SetSourceColor(color[0], color[1], color[2]);
+    }
+
+    void DrawText(const Orthanc::Font& font,
+                  const std::string& text,
+                  double x,
+                  double y,
+                  BitmapAnchor anchor);      
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Wrappers/CairoSurface.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,155 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "CairoSurface.h"
+
+#include <Logging.h>
+#include <OrthancException.h>
+#include <Images/ImageProcessing.h>
+
+namespace OrthancStone
+{
+  void CairoSurface::Release()
+  {
+    if (surface_)
+    {
+      cairo_surface_destroy(surface_);
+      surface_ = NULL;
+    }
+  }
+
+
+  void CairoSurface::Allocate(unsigned int width,
+                              unsigned int height,
+                              bool hasAlpha)
+  {
+    Release();
+
+    hasAlpha_ = hasAlpha;
+
+    surface_ = cairo_image_surface_create
+      (hasAlpha ? CAIRO_FORMAT_ARGB32 : CAIRO_FORMAT_RGB24, width, height);
+    if (!surface_)
+    {
+      // Should never occur
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    if (cairo_surface_status(surface_) != CAIRO_STATUS_SUCCESS)
+    {
+      LOG(ERROR) << "Cannot create a Cairo surface";
+      cairo_surface_destroy(surface_);
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    width_ = width;
+    height_ = height;
+    pitch_ = cairo_image_surface_get_stride(surface_);
+    buffer_ = cairo_image_surface_get_data(surface_);
+  }
+
+
+  CairoSurface::CairoSurface(Orthanc::ImageAccessor& accessor,
+                             bool hasAlpha) :
+    hasAlpha_(hasAlpha)
+  {
+    if (accessor.GetFormat() != Orthanc::PixelFormat_BGRA32)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat);
+    }      
+
+    width_ = accessor.GetWidth();
+    height_ = accessor.GetHeight();
+    pitch_ = accessor.GetPitch();
+    buffer_ = accessor.GetBuffer();
+
+    surface_ = cairo_image_surface_create_for_data
+      (reinterpret_cast<unsigned char*>(buffer_),
+       hasAlpha_ ? CAIRO_FORMAT_ARGB32 : CAIRO_FORMAT_RGB24,
+       width_, height_, pitch_);
+    if (!surface_)
+    {
+      // Should never occur
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+
+    if (cairo_surface_status(surface_) != CAIRO_STATUS_SUCCESS)
+    {
+      LOG(ERROR) << "Bad pitch for a Cairo surface";
+      cairo_surface_destroy(surface_);
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
+    }
+  }
+
+
+  void CairoSurface::SetSize(unsigned int width,
+                             unsigned int height,
+                             bool hasAlpha)
+  {
+    if (hasAlpha_ != hasAlpha ||
+        width_ != width ||
+        height_ != height)
+    {
+      Allocate(width, height, hasAlpha);
+    }
+  }
+
+
+  void CairoSurface::Copy(const CairoSurface& other)
+  {
+    SetSize(other.GetWidth(), other.GetHeight(), other.HasAlpha());
+    
+    Orthanc::ImageAccessor source, target;
+
+    other.GetReadOnlyAccessor(source);
+    GetWriteableAccessor(target);
+
+    Orthanc::ImageProcessing::Copy(target, source);
+
+    cairo_surface_mark_dirty(surface_);
+  }
+
+
+  void CairoSurface::Copy(const Orthanc::ImageAccessor& source,
+                          bool hasAlpha)
+  {
+    SetSize(source.GetWidth(), source.GetHeight(), hasAlpha);
+
+    Orthanc::ImageAccessor target;
+    GetWriteableAccessor(target);
+
+    Orthanc::ImageProcessing::Convert(target, source);
+
+    cairo_surface_mark_dirty(surface_);
+  }
+
+
+  void CairoSurface::GetReadOnlyAccessor(Orthanc::ImageAccessor& target) const
+  {
+    target.AssignReadOnly(Orthanc::PixelFormat_BGRA32, width_, height_, pitch_, buffer_);
+  }
+  
+
+  void CairoSurface::GetWriteableAccessor(Orthanc::ImageAccessor& target)
+  {
+    target.AssignWritable(Orthanc::PixelFormat_BGRA32, width_, height_, pitch_, buffer_);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/Sources/Wrappers/CairoSurface.h	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,118 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include <Images/ImageAccessor.h>
+
+#include <boost/noncopyable.hpp>
+#include <cairo.h>
+
+namespace OrthancStone
+{
+  class CairoSurface : public boost::noncopyable
+  {
+  private:
+    cairo_surface_t* surface_;
+    unsigned int     width_;
+    unsigned int     height_;
+    unsigned int     pitch_;
+    void*            buffer_;
+    bool             hasAlpha_;
+
+    void Release();
+
+    void Allocate(unsigned int width,
+                  unsigned int height,
+                  bool hasAlpha);
+
+  public:
+    CairoSurface() :
+      surface_(NULL)
+    {
+      Allocate(0, 0, false);
+    }
+
+    CairoSurface(unsigned int width,
+                 unsigned int height,
+                 bool hasAlpha) :
+      surface_(NULL)
+    {
+      Allocate(width, height, hasAlpha);
+    }
+
+    CairoSurface(Orthanc::ImageAccessor& accessor,
+                 bool hasAlpha);
+
+    ~CairoSurface()
+    {
+      Release();
+    }
+
+    void SetSize(unsigned int width,
+                 unsigned int height,
+                 bool hasAlpha);
+
+    void Copy(const CairoSurface& other);
+
+    void Copy(const Orthanc::ImageAccessor& source,
+              bool hasAlpha);
+
+    unsigned int GetWidth() const
+    {
+      return width_;
+    }
+
+    unsigned int GetHeight() const
+    {
+      return height_;
+    }
+
+    unsigned int GetPitch() const
+    {
+      return pitch_;
+    }
+
+    const void* GetBuffer() const
+    {
+      return buffer_;
+    }
+
+    void* GetBuffer()
+    {
+      return buffer_;
+    }
+
+    cairo_surface_t* GetObject()
+    {
+      return surface_;
+    }
+
+    bool HasAlpha() const
+    {
+      return hasAlpha_;
+    }
+
+    void GetReadOnlyAccessor(Orthanc::ImageAccessor& target) const;
+
+    void GetWriteableAccessor(Orthanc::ImageAccessor& target);
+  };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,45721 @@
+{
+   "0008,0005" : {
+      "Name" : "SpecificCharacterSet",
+      "Type" : "String",
+      "Value" : "ISO_IR 100"
+   },
+   "0008,0012" : {
+      "Name" : "InstanceCreationDate",
+      "Type" : "String",
+      "Value" : "20180624"
+   },
+   "0008,0013" : {
+      "Name" : "InstanceCreationTime",
+      "Type" : "String",
+      "Value" : "134156"
+   },
+   "0008,0016" : {
+      "Name" : "SOPClassUID",
+      "Type" : "String",
+      "Value" : "1.2.840.10008.5.1.4.1.1.481.3"
+   },
+   "0008,0018" : {
+      "Name" : "SOPInstanceUID",
+      "Type" : "String",
+      "Value" : "1.2.752.243.1.1.20180802070448020.2000.14574"
+   },
+   "0008,0020" : {
+      "Name" : "StudyDate",
+      "Type" : "String",
+      "Value" : "20180624"
+   },
+   "0008,0021" : {
+      "Name" : "SeriesDate",
+      "Type" : "String",
+      "Value" : "20180624"
+   },
+   "0008,0030" : {
+      "Name" : "StudyTime",
+      "Type" : "String",
+      "Value" : "120802"
+   },
+   "0008,0031" : {
+      "Name" : "SeriesTime",
+      "Type" : "String",
+      "Value" : "134156"
+   },
+   "0008,0050" : {
+      "Name" : "AccessionNumber",
+      "Type" : "String",
+      "Value" : ""
+   },
+   "0008,0060" : {
+      "Name" : "Modality",
+      "Type" : "String",
+      "Value" : "RTSTRUCT"
+   },
+   "0008,0070" : {
+      "Name" : "Manufacturer",
+      "Type" : "String",
+      "Value" : "RaySearch Laboratories"
+   },
+   "0008,0090" : {
+      "Name" : "ReferringPhysicianName",
+      "Type" : "String",
+      "Value" : ""
+   },
+   "0008,1030" : {
+      "Name" : "StudyDescription",
+      "Type" : "String",
+      "Value" : "RT^PCPT_120_KVP (Adult)"
+   },
+   "0008,103e" : {
+      "Name" : "SeriesDescription",
+      "Type" : "String",
+      "Value" : "RS: Approved Structure Set"
+   },
+   "0008,1070" : {
+      "Name" : "OperatorsName",
+      "Type" : "String",
+      "Value" : ""
+   },
+   "0008,1090" : {
+      "Name" : "ManufacturerModelName",
+      "Type" : "String",
+      "Value" : "RayStation"
+   },
+   "0010,0010" : {
+      "Name" : "PatientName",
+      "Type" : "String",
+      "Value" : "Provision^Phantom^QA"
+   },
+   "0010,0020" : {
+      "Name" : "PatientID",
+      "Type" : "String",
+      "Value" : "04041982"
+   },
+   "0010,0030" : {
+      "Name" : "PatientBirthDate",
+      "Type" : "String",
+      "Value" : "19820404"
+   },
+   "0010,0040" : {
+      "Name" : "PatientSex",
+      "Type" : "String",
+      "Value" : "O"
+   },
+   "0018,1020" : {
+      "Name" : "SoftwareVersions",
+      "Type" : "String",
+      "Value" : "8.0.1.6 (Dicom Export)"
+   },
+   "0020,000d" : {
+      "Name" : "StudyInstanceUID",
+      "Type" : "String",
+      "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412504788800000016"
+   },
+   "0020,000e" : {
+      "Name" : "SeriesInstanceUID",
+      "Type" : "String",
+      "Value" : "1.2.752.243.1.1.20180802070448020.2000.14574.1"
+   },
+   "0020,0010" : {
+      "Name" : "StudyID",
+      "Type" : "String",
+      "Value" : "1"
+   },
+   "0020,0011" : {
+      "Name" : "SeriesNumber",
+      "Type" : "String",
+      "Value" : "1"
+   },
+   "0020,0013" : {
+      "Name" : "InstanceNumber",
+      "Type" : "String",
+      "Value" : "1"
+   },
+   "0020,0052" : {
+      "Name" : "FrameOfReferenceUID",
+      "Type" : "String",
+      "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+   },
+   "0020,1040" : {
+      "Name" : "PositionReferenceIndicator",
+      "Type" : "String",
+      "Value" : ""
+   },
+   "3006,0002" : {
+      "Name" : "StructureSetLabel",
+      "Type" : "String",
+      "Value" : "RS: Approved"
+   },
+   "3006,0008" : {
+      "Name" : "StructureSetDate",
+      "Type" : "String",
+      "Value" : "20180624"
+   },
+   "3006,0009" : {
+      "Name" : "StructureSetTime",
+      "Type" : "String",
+      "Value" : "134156"
+   },
+   "3006,0010" : {
+      "Name" : "ReferencedFrameOfReferenceSequence",
+      "Type" : "Sequence",
+      "Value" : [
+         {
+            "0020,0052" : {
+               "Name" : "FrameOfReferenceUID",
+               "Type" : "String",
+               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+            },
+            "3006,0012" : {
+               "Name" : "RTReferencedStudySequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "0008,1150" : {
+                        "Name" : "ReferencedSOPClassUID",
+                        "Type" : "String",
+                        "Value" : "1.2.840.10008.3.1.2.3.1"
+                     },
+                     "0008,1155" : {
+                        "Name" : "ReferencedSOPInstanceUID",
+                        "Type" : "String",
+                        "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412504788800000016"
+                     },
+                     "3006,0014" : {
+                        "Name" : "RTReferencedSeriesSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0020,000e" : {
+                                 "Name" : "SeriesInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002193"
+                              },
+                              "3006,0016" : {
+                                 "Name" : "ContourImageSequence",
+                                 "Type" : "Sequence",
+                                 "Value" : [
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002194"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002195"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002196"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002197"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002198"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002199"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002200"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002201"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002202"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002203"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002204"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002205"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002206"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002207"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002208"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002209"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002210"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002211"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002212"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002213"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002214"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002215"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002216"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002217"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002218"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002219"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002220"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002221"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002222"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002223"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002224"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002225"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002226"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002227"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002228"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002229"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002230"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002231"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002232"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002233"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002234"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002235"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002236"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002237"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002238"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002239"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002240"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002241"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002242"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002243"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002244"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002245"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002246"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002247"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002248"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002249"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002250"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002251"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002252"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002253"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002254"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002255"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002256"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002257"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002258"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002259"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002260"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002261"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002262"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002264"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002265"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002266"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002346"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002347"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002348"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002349"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002350"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002351"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002352"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002357"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002358"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002359"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002366"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002367"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002368"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002369"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002370"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002371"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002372"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002373"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002374"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002375"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002376"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002377"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002378"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002379"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002380"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002381"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002382"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002383"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002384"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002385"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002387"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002388"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002389"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002390"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002391"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002392"
+                                       }
+                                    },
+                                    {
+                                       "0008,1150" : {
+                                          "Name" : "ReferencedSOPClassUID",
+                                          "Type" : "String",
+                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                                       },
+                                       "0008,1155" : {
+                                          "Name" : "ReferencedSOPInstanceUID",
+                                          "Type" : "String",
+                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002393"
+                                       }
+                                    }
+                                 ]
+                              }
+                           }
+                        ]
+                     }
+                  }
+               ]
+            }
+         }
+      ]
+   },
+   "3006,0020" : {
+      "Name" : "StructureSetROISequence",
+      "Type" : "Sequence",
+      "Value" : [
+         {
+            "3006,0022" : {
+               "Name" : "ROINumber",
+               "Type" : "String",
+               "Value" : "1"
+            },
+            "3006,0024" : {
+               "Name" : "ReferencedFrameOfReferenceUID",
+               "Type" : "String",
+               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+            },
+            "3006,0026" : {
+               "Name" : "ROIName",
+               "Type" : "String",
+               "Value" : "External"
+            },
+            "3006,0036" : {
+               "Name" : "ROIGenerationAlgorithm",
+               "Type" : "String",
+               "Value" : "SEMIAUTOMATIC"
+            }
+         },
+         {
+            "3006,0022" : {
+               "Name" : "ROINumber",
+               "Type" : "String",
+               "Value" : "2"
+            },
+            "3006,0024" : {
+               "Name" : "ReferencedFrameOfReferenceUID",
+               "Type" : "String",
+               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+            },
+            "3006,0026" : {
+               "Name" : "ROIName",
+               "Type" : "String",
+               "Value" : "CTV"
+            },
+            "3006,0036" : {
+               "Name" : "ROIGenerationAlgorithm",
+               "Type" : "String",
+               "Value" : "SEMIAUTOMATIC"
+            }
+         },
+         {
+            "3006,0022" : {
+               "Name" : "ROINumber",
+               "Type" : "String",
+               "Value" : "3"
+            },
+            "3006,0024" : {
+               "Name" : "ReferencedFrameOfReferenceUID",
+               "Type" : "String",
+               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+            },
+            "3006,0026" : {
+               "Name" : "ROIName",
+               "Type" : "String",
+               "Value" : "PTV"
+            },
+            "3006,0036" : {
+               "Name" : "ROIGenerationAlgorithm",
+               "Type" : "String",
+               "Value" : "SEMIAUTOMATIC"
+            }
+         },
+         {
+            "3006,0022" : {
+               "Name" : "ROINumber",
+               "Type" : "String",
+               "Value" : "4"
+            },
+            "3006,0024" : {
+               "Name" : "ReferencedFrameOfReferenceUID",
+               "Type" : "String",
+               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+            },
+            "3006,0026" : {
+               "Name" : "ROIName",
+               "Type" : "String",
+               "Value" : "PTV Eval"
+            },
+            "3006,0036" : {
+               "Name" : "ROIGenerationAlgorithm",
+               "Type" : "String",
+               "Value" : "SEMIAUTOMATIC"
+            }
+         },
+         {
+            "3006,0022" : {
+               "Name" : "ROINumber",
+               "Type" : "String",
+               "Value" : "5"
+            },
+            "3006,0024" : {
+               "Name" : "ReferencedFrameOfReferenceUID",
+               "Type" : "String",
+               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+            },
+            "3006,0026" : {
+               "Name" : "ROIName",
+               "Type" : "String",
+               "Value" : "Bladder"
+            },
+            "3006,0036" : {
+               "Name" : "ROIGenerationAlgorithm",
+               "Type" : "String",
+               "Value" : "SEMIAUTOMATIC"
+            }
+         },
+         {
+            "3006,0022" : {
+               "Name" : "ROINumber",
+               "Type" : "String",
+               "Value" : "6"
+            },
+            "3006,0024" : {
+               "Name" : "ReferencedFrameOfReferenceUID",
+               "Type" : "String",
+               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+            },
+            "3006,0026" : {
+               "Name" : "ROIName",
+               "Type" : "String",
+               "Value" : "Rectum"
+            },
+            "3006,0036" : {
+               "Name" : "ROIGenerationAlgorithm",
+               "Type" : "String",
+               "Value" : "SEMIAUTOMATIC"
+            }
+         },
+         {
+            "3006,0022" : {
+               "Name" : "ROINumber",
+               "Type" : "String",
+               "Value" : "7"
+            },
+            "3006,0024" : {
+               "Name" : "ReferencedFrameOfReferenceUID",
+               "Type" : "String",
+               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+            },
+            "3006,0026" : {
+               "Name" : "ROIName",
+               "Type" : "String",
+               "Value" : "Air Override"
+            },
+            "3006,0036" : {
+               "Name" : "ROIGenerationAlgorithm",
+               "Type" : "String",
+               "Value" : "SEMIAUTOMATIC"
+            }
+         },
+         {
+            "3006,0022" : {
+               "Name" : "ROINumber",
+               "Type" : "String",
+               "Value" : "8"
+            },
+            "3006,0024" : {
+               "Name" : "ReferencedFrameOfReferenceUID",
+               "Type" : "String",
+               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+            },
+            "3006,0026" : {
+               "Name" : "ROIName",
+               "Type" : "String",
+               "Value" : "CT Isocenter"
+            },
+            "3006,0036" : {
+               "Name" : "ROIGenerationAlgorithm",
+               "Type" : "String",
+               "Value" : "SEMIAUTOMATIC"
+            }
+         },
+         {
+            "3006,0022" : {
+               "Name" : "ROINumber",
+               "Type" : "String",
+               "Value" : "9"
+            },
+            "3006,0024" : {
+               "Name" : "ReferencedFrameOfReferenceUID",
+               "Type" : "String",
+               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
+            },
+            "3006,0026" : {
+               "Name" : "ROIName",
+               "Type" : "String",
+               "Value" : "Isocenter"
+            },
+            "3006,0036" : {
+               "Name" : "ROIGenerationAlgorithm",
+               "Type" : "String",
+               "Value" : "SEMIAUTOMATIC"
+            }
+         }
+      ]
+   },
+   "3006,0039" : {
+      "Name" : "ROIContourSequence",
+      "Type" : "Sequence",
+      "Value" : [
+         {
+            "3006,002a" : {
+               "Name" : "ROIDisplayColor",
+               "Type" : "String",
+               "Value" : "0\\128\\0"
+            },
+            "3006,0040" : {
+               "Name" : "ContourSequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002389"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "143"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "0"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-131.8359\\-272.7055\\-175\\-133.9264\\-270.5703\\-175\\-135.7422\\-268.5421\\-175\\-136.3525\\-266.6641\\-175\\-137.6953\\-265.4705\\-175\\-138.3168\\-264.7109\\-175\\-139.6484\\-263.4482\\-175\\-140.0744\\-262.7578\\-175\\-141.6016\\-259.7253\\-175\\-141.7969\\-258.8516\\-175\\-142.9287\\-256.8984\\-175\\-143.5547\\-256.1355\\-175\\-144.0694\\-254.9453\\-175\\-145.5078\\-253.7626\\-175\\-146.1325\\-252.9922\\-175\\-146.5718\\-251.0391\\-175\\-147.4609\\-249.871\\-175\\-148.7116\\-247.1328\\-175\\-149.2784\\-245.1797\\-175\\-149.954\\-243.2266\\-175\\-150.7428\\-241.2734\\-175\\-151.3672\\-240.705\\-175\\-152.203\\-239.3203\\-175\\-152.3438\\-237.3672\\-175\\-153.5667\\-235.4141\\-175\\-154.2728\\-231.5078\\-175\\-155.474\\-229.5547\\-175\\-155.6019\\-227.6016\\-175\\-156.6483\\-225.6484\\-175\\-156.9864\\-223.6953\\-175\\-157.1378\\-221.7422\\-175\\-158.2475\\-219.7891\\-175\\-158.3921\\-217.8359\\-175\\-159.6641\\-215.8828\\-175\\-160.0241\\-213.9297\\-175\\-160.1245\\-211.9766\\-175\\-160.1991\\-208.0703\\-175\\-160.4293\\-206.1172\\-175\\-161.4816\\-204.1641\\-175\\-161.4872\\-198.3047\\-175\\-160.4368\\-196.3516\\-175\\-160.2162\\-194.3984\\-175\\-160.1482\\-190.4922\\-175\\-160.0519\\-188.5391\\-175\\-159.6563\\-186.5859\\-175\\-158.4045\\-184.6328\\-175\\-158.1949\\-182.6797\\-175\\-157.0475\\-180.7266\\-175\\-156.6305\\-178.7734\\-175\\-155.7304\\-176.8203\\-175\\-154.1251\\-174.8672\\-175\\-153.5573\\-172.9141\\-175\\-151.3672\\-169.6098\\-175\\-149.4141\\-167.5505\\-175\\-146.9809\\-165.1016\\-175\\-146.1733\\-163.1484\\-175\\-145.5078\\-162.439\\-175\\-143.5547\\-160.7921\\-175\\-141.6016\\-159.9223\\-175\\-138.7921\\-157.2891\\-175\\-137.6953\\-156.5387\\-175\\-135.7422\\-155.4173\\-175\\-133.7891\\-153.8933\\-175\\-132.6069\\-153.3828\\-175\\-131.8359\\-153.2125\\-175\\-129.5856\\-151.4297\\-175\\-127.9297\\-150.8933\\-175\\-125.9766\\-149.1409\\-175\\-124.0234\\-148.9303\\-175\\-122.0703\\-147.9629\\-175\\-121.4844\\-147.5234\\-175\\-120.1172\\-147.1133\\-175\\-118.1641\\-147.0926\\-175\\-116.2109\\-146.791\\-175\\-114.7461\\-145.5703\\-175\\-114.1657\\-145.5703\\-175\\-114.2383\\-149.4766\\-175\\-116.0199\\-151.4297\\-175\\-116.0623\\-155.3359\\-175\\-117.8894\\-157.2891\\-175\\-117.9436\\-161.1953\\-175\\-118.1641\\-161.651\\-175\\-119.4119\\-163.1484\\-175\\-119.3704\\-165.1016\\-175\\-119.5204\\-167.0547\\-175\\-119.5204\\-169.0078\\-175\\-119.6899\\-170.9609\\-175\\-120.1172\\-171.1681\\-175\\-122.0703\\-171.4492\\-175\\-123.4809\\-172.9141\\-175\\-125.2219\\-174.8672\\-175\\-125.2848\\-178.7734\\-175\\-125.8681\\-180.7266\\-175\\-125.9766\\-181.7031\\-175\\-126.9531\\-182.6797\\-175\\-127.9297\\-182.7988\\-175\\-129.4643\\-184.6328\\-175\\-128.479\\-186.5859\\-175\\-127.9297\\-187.3184\\-175\\-125.9766\\-187.7456\\-175\\-125.4688\\-188.5391\\-175\\-126.0851\\-190.4922\\-175\\-126.0986\\-192.4453\\-175\\-126.3428\\-194.3984\\-175\\-127.727\\-196.3516\\-175\\-127.7956\\-202.2109\\-175\\-127.9297\\-202.6131\\-175\\-129.1282\\-204.1641\\-175\\-128.8365\\-206.1172\\-175\\-129.5876\\-208.0703\\-175\\-129.5573\\-211.9766\\-175\\-129.6237\\-213.9297\\-175\\-129.8828\\-214.3999\\-175\\-131.2175\\-215.8828\\-175\\-130.5589\\-217.8359\\-175\\-129.8828\\-218.5684\\-175\\-129.5499\\-219.7891\\-175\\-129.5499\\-221.7422\\-175\\-129.2969\\-223.6953\\-175\\-127.9297\\-225.3229\\-175\\-127.7982\\-225.6484\\-175\\-127.8711\\-227.6016\\-175\\-129.5499\\-229.5547\\-175\\-129.5876\\-235.4141\\-175\\-129.8828\\-236.3209\\-175\\-130.6966\\-237.3672\\-175\\-129.8096\\-239.3203\\-175\\-129.8828\\-241.599\\-175\\-130.7983\\-243.2266\\-175\\-131.1701\\-245.1797\\-175\\-131.4228\\-247.1328\\-175\\-131.1678\\-249.0859\\-175\\-131.2012\\-251.0391\\-175\\-131.8359\\-252.4496\\-175\\-132.2428\\-252.9922\\-175\\-132.512\\-254.9453\\-175\\-132.7428\\-258.8516\\-175\\-132.7428\\-264.7109\\-175\\-132.8125\\-266.6641\\-175\\-133.3365\\-268.6172\\-175\\-132.9102\\-270.5703\\-175\\-131.8359\\-271.5469\\-175\\-131.4523\\-272.5234\\-175"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002388"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "208"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "1"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-302.0705\\-173\\-83.00781\\-300.9754\\-173\\-86.91406\\-300.8166\\-173\\-88.86719\\-300.521\\-173\\-90.82031\\-299.9072\\-173\\-92.77344\\-299.5658\\-173\\-94.72656\\-299.0435\\-173\\-96.67969\\-298.3087\\-173\\-98.37431\\-297.9141\\-173\\-100.5859\\-296.6277\\-173\\-102.5391\\-296.1421\\-173\\-104.4922\\-295.0589\\-173\\-106.4453\\-294.7641\\-173\\-108.3984\\-293.6721\\-173\\-110.3516\\-292.811\\-173\\-112.3047\\-290.9783\\-173\\-114.2578\\-290.5478\\-173\\-116.2109\\-289.0671\\-173\\-118.119\\-288.1484\\-173\\-120.1172\\-286.5138\\-173\\-122.0703\\-285.335\\-173\\-124.0234\\-283.4826\\-173\\-127.9297\\-279.9471\\-173\\-131.1599\\-276.4297\\-173\\-133.7891\\-273.7756\\-173\\-136.4906\\-270.5703\\-173\\-138.0115\\-268.6172\\-173\\-139.1138\\-266.6641\\-173\\-140.7258\\-264.7109\\-173\\-142.0506\\-262.7578\\-173\\-142.9807\\-260.8047\\-173\\-144.1303\\-258.8516\\-173\\-145.1157\\-256.8984\\-173\\-145.5078\\-256.391\\-173\\-147.749\\-252.9922\\-173\\-148.4946\\-251.0391\\-173\\-150.2841\\-247.1328\\-173\\-150.9292\\-245.1797\\-173\\-152.0162\\-243.2266\\-173\\-152.7\\-241.2734\\-173\\-153.8602\\-239.3203\\-173\\-154.3324\\-237.3672\\-173\\-155.7617\\-233.4609\\-173\\-156.1929\\-231.5078\\-173\\-156.7742\\-229.5547\\-173\\-158.1292\\-225.6484\\-173\\-159.0056\\-221.7422\\-173\\-159.938\\-219.7891\\-173\\-160.2966\\-217.8359\\-173\\-161.4349\\-213.9297\\-173\\-161.7352\\-211.9766\\-173\\-162.1708\\-206.1172\\-173\\-162.366\\-204.1641\\-173\\-162.4242\\-202.2109\\-173\\-162.4157\\-198.3047\\-173\\-162.2089\\-196.3516\\-173\\-161.8108\\-190.4922\\-173\\-161.5221\\-188.5391\\-173\\-160.2804\\-184.6328\\-173\\-159.8476\\-182.6797\\-173\\-158.7508\\-180.7266\\-173\\-158.17\\-178.7734\\-173\\-157.2947\\-176.8203\\-173\\-156.1256\\-174.8672\\-173\\-155.2734\\-172.9282\\-173\\-154.1372\\-170.9609\\-173\\-151.3672\\-167.5165\\-173\\-149.198\\-165.1016\\-173\\-147.8591\\-163.1484\\-173\\-145.5078\\-160.7521\\-173\\-143.5547\\-159.118\\-173\\-141.6016\\-157.7076\\-173\\-141.1865\\-157.2891\\-173\\-137.6953\\-154.4925\\-173\\-131.8359\\-150.8857\\-173\\-129.7182\\-149.4766\\-173\\-127.9297\\-148.4627\\-173\\-125.9766\\-147.2246\\-173\\-124.0234\\-146.5265\\-173\\-120.1172\\-144.7879\\-173\\-118.1641\\-144.224\\-173\\-116.2109\\-143.181\\-173\\-114.2578\\-142.5557\\-173\\-110.3516\\-141.6247\\-173\\-108.3984\\-140.7968\\-173\\-106.4453\\-140.3998\\-173\\-104.4922\\-140.1908\\-173\\-102.5391\\-139.2664\\-173\\-98.63281\\-138.5217\\-173\\-96.67969\\-137.4128\\-173\\-92.77344\\-136.9472\\-173\\-90.82031\\-135.9013\\-173\\-88.86719\\-135.5287\\-173\\-86.91406\\-135.4302\\-173\\-84.96094\\-134.9024\\-173\\-83.00781\\-134.6305\\-173\\-81.05469\\-134.5352\\-173\\-77.14844\\-133.1644\\-173\\-73.24219\\-132.9727\\-173\\-69.33594\\-132.9144\\-173\\-63.47656\\-132.9329\\-173\\-59.57031\\-133.0063\\-173\\-53.71094\\-133.2785\\-173\\-51.58944\\-133.8516\\-173\\-49.80469\\-134.5417\\-173\\-47.85156\\-134.7486\\-173\\-44.04634\\-135.8047\\-173\\-41.99219\\-136.651\\-173\\-39.58038\\-137.7578\\-173\\-38.08594\\-138.9907\\-173\\-36.13281\\-139.503\\-173\\-34.17969\\-141.2263\\-173\\-33.33333\\-141.6641\\-173\\-32.22656\\-142.5228\\-173\\-30.27344\\-143.5539\\-173\\-28.28664\\-145.5703\\-173\\-27.00893\\-147.5234\\-173\\-26.36719\\-149.1278\\-173\\-25.39063\\-149.4766\\-173\\-24.41406\\-151.1042\\-173\\-24.2513\\-153.3828\\-173\\-24.41406\\-153.8711\\-173\\-25.39063\\-155.3359\\-173\\-25.8789\\-157.2891\\-173\\-25.8789\\-159.2422\\-173\\-26.85547\\-161.1953\\-173\\-27.34375\\-163.1484\\-173\\-26.85547\\-165.1016\\-173\\-28.32031\\-166.5664\\-173\\-29.29687\\-167.0547\\-173\\-30.27344\\-168.0313\\-173\\-30.76172\\-169.0078\\-173\\-31.25\\-170.9609\\-173\\-32.22656\\-171.4492\\-173\\-33.69141\\-172.9141\\-173\\-34.50521\\-174.8672\\-173\\-35.64453\\-176.8203\\-173\\-35.64453\\-178.7734\\-173\\-35.80729\\-180.7266\\-173\\-36.13281\\-181.2148\\-173\\-37.59766\\-182.6797\\-173\\-37.76041\\-184.6328\\-173\\-38.57422\\-186.5859\\-173\\-38.57422\\-188.5391\\-173\\-40.03906\\-191.4688\\-173\\-41.01563\\-194.3984\\-173\\-41.50391\\-196.3516\\-173\\-42.31771\\-198.3047\\-173\\-42.72461\\-200.2578\\-173\\-42.48047\\-202.2109\\-173\\-43.45703\\-204.1641\\-173\\-43.75\\-206.1172\\-173\\-43.70117\\-208.0703\\-173\\-44.18945\\-210.0234\\-173\\-44.27083\\-213.9297\\-173\\-44.92188\\-215.8828\\-173\\-44.43359\\-217.8359\\-173\\-44.43359\\-219.7891\\-173\\-44.92188\\-221.7422\\-173\\-44.92188\\-223.6953\\-173\\-44.43359\\-225.6484\\-173\\-44.92187\\-227.6016\\-173\\-44.92187\\-229.5547\\-173\\-45.89844\\-230.5313\\-173\\-46.22396\\-231.5078\\-173\\-46.22396\\-233.4609\\-173\\-46.38672\\-235.4141\\-173\\-46.38672\\-237.3672\\-173\\-47.36328\\-241.2734\\-173\\-47.36328\\-243.2266\\-173\\-49.31641\\-245.1797\\-173\\-49.07227\\-247.1328\\-173\\-49.47916\\-249.0859\\-173\\-49.31641\\-251.0391\\-173\\-49.47916\\-252.9922\\-173\\-49.80469\\-253.9688\\-173\\-50.78125\\-254.9453\\-173\\-50.78125\\-256.8984\\-173\\-51.75781\\-257.875\\-173\\-52.08333\\-258.8516\\-173\\-52.24609\\-260.8047\\-173\\-51.26953\\-262.7578\\-173\\-51.43229\\-264.7109\\-173\\-52.24609\\-266.6641\\-173\\-51.43229\\-268.6172\\-173\\-51.26953\\-270.5703\\-173\\-50.29297\\-274.4766\\-173\\-50.29297\\-280.3359\\-173\\-49.80469\\-281.3125\\-173\\-49.56055\\-282.2891\\-173\\-49.80469\\-283.2656\\-173\\-50.29297\\-284.2422\\-173\\-49.31641\\-286.1953\\-173\\-50.29297\\-288.1484\\-173\\-50.29297\\-292.0547\\-173\\-49.31641\\-294.0078\\-173\\-49.47917\\-295.9609\\-173\\-49.80469\\-296.0011\\-173\\-51.75781\\-297.9933\\-173\\-53.71094\\-298.1582\\-173\\-55.05371\\-299.8672\\-173\\-55.66406\\-300.2428\\-173\\-59.57031\\-300.5762\\-173\\-61.52344\\-301.8472\\-173\\-63.47656\\-302.0208\\-173\\-67.38281\\-302.1855\\-173\\-73.24219\\-302.2627\\-173\\-77.14844\\-302.2606\\-173"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002387"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "174"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "2"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-302.0081\\-171\\-88.86719\\-301.4367\\-171\\-92.77344\\-300.6752\\-171\\-94.72656\\-300.1905\\-171\\-96.67969\\-299.3295\\-171\\-98.63281\\-298.7279\\-171\\-102.5391\\-297.0441\\-171\\-104.4922\\-296.4428\\-171\\-106.4453\\-295.4397\\-171\\-108.3984\\-294.8102\\-171\\-112.3047\\-292.7268\\-171\\-114.2578\\-291.4096\\-171\\-116.2109\\-290.3423\\-171\\-118.1641\\-289.0867\\-171\\-120.1172\\-287.6334\\-171\\-122.0703\\-286.3098\\-171\\-124.3734\\-284.2422\\-171\\-127.9297\\-281.1463\\-171\\-129.8828\\-279.1208\\-171\\-134.1316\\-274.4766\\-171\\-135.4813\\-272.5234\\-171\\-140.0099\\-266.6641\\-171\\-141.1802\\-264.7109\\-171\\-142.4703\\-262.7578\\-171\\-144.6404\\-258.8516\\-171\\-145.967\\-256.8984\\-171\\-146.9277\\-254.9453\\-171\\-148.1223\\-252.9922\\-171\\-148.8627\\-251.0391\\-171\\-149.9157\\-249.0859\\-171\\-150.5687\\-247.1328\\-171\\-151.6568\\-245.1797\\-171\\-152.427\\-243.2266\\-171\\-153.4296\\-241.2734\\-171\\-154.184\\-239.3203\\-171\\-154.7985\\-237.3672\\-171\\-155.6626\\-235.4141\\-171\\-156.6319\\-231.5078\\-171\\-157.474\\-229.5547\\-171\\-158.5458\\-225.6484\\-171\\-159.3541\\-223.6953\\-171\\-159.9174\\-221.7422\\-171\\-160.3237\\-219.7891\\-171\\-160.8627\\-217.8359\\-171\\-161.5167\\-215.8828\\-171\\-161.8713\\-213.9297\\-171\\-162.1034\\-211.9766\\-171\\-162.6244\\-206.1172\\-171\\-162.9118\\-202.2109\\-171\\-162.9118\\-198.3047\\-171\\-162.7652\\-196.3516\\-171\\-162.17\\-190.4922\\-171\\-161.9274\\-188.5391\\-171\\-161.5646\\-186.5859\\-171\\-160.8329\\-184.6328\\-171\\-159.6591\\-180.7266\\-171\\-158.6172\\-178.7734\\-171\\-157.8757\\-176.8203\\-171\\-156.6885\\-174.8672\\-171\\-155.8687\\-172.9141\\-171\\-153.3203\\-169.1163\\-171\\-151.3672\\-166.558\\-171\\-148.4169\\-163.1484\\-171\\-146.5129\\-161.1953\\-171\\-142.2288\\-157.2891\\-171\\-139.6484\\-155.2266\\-171\\-135.7422\\-152.569\\-171\\-133.7891\\-151.3195\\-171\\-131.8359\\-150.2282\\-171\\-129.8828\\-148.8443\\-171\\-127.9297\\-147.8585\\-171\\-125.9766\\-146.7584\\-171\\-124.0234\\-146.0825\\-171\\-122.0703\\-145.044\\-171\\-120.1172\\-144.4328\\-171\\-118.1641\\-143.4942\\-171\\-114.2578\\-142.026\\-171\\-112.3047\\-141.1727\\-171\\-108.3984\\-140.1858\\-171\\-106.4453\\-139.4144\\-171\\-104.4922\\-138.919\\-171\\-102.5391\\-138.5402\\-171\\-100.5859\\-137.9576\\-171\\-98.63281\\-137.1797\\-171\\-94.72656\\-136.2451\\-171\\-92.77344\\-135.4857\\-171\\-86.91406\\-134.1339\\-171\\-84.96094\\-133.632\\-171\\-81.05469\\-133.0043\\-171\\-77.14844\\-132.5393\\-171\\-71.28906\\-131.5794\\-171\\-69.33594\\-131.4399\\-171\\-65.42969\\-131.3038\\-171\\-61.52344\\-131.3704\\-171\\-59.57031\\-131.5166\\-171\\-57.61719\\-131.762\\-171\\-53.71094\\-132.4681\\-171\\-49.80469\\-132.9677\\-171\\-47.85156\\-133.3135\\-171\\-43.94531\\-134.7256\\-171\\-41.99219\\-135.2492\\-171\\-38.08594\\-137.0089\\-171\\-34.17969\\-139.2227\\-171\\-28.32031\\-143.4777\\-171\\-24.41406\\-147.0985\\-171\\-22.13762\\-149.4766\\-171\\-21.32469\\-151.4297\\-171\\-19.71436\\-153.3828\\-171\\-19.11169\\-155.3359\\-171\\-18.55469\\-155.9842\\-171\\-17.73649\\-157.2891\\-171\\-17.04821\\-159.2422\\-171\\-15.88611\\-161.1953\\-171\\-15.60925\\-163.1484\\-171\\-14.41825\\-165.1016\\-171\\-14.16949\\-167.0547\\-171\\-13.58247\\-169.0078\\-171\\-13.12663\\-172.9141\\-171\\-12.93721\\-176.8203\\-171\\-12.28376\\-178.7734\\-171\\-11.83297\\-180.7266\\-171\\-11.63358\\-184.6328\\-171\\-11.54175\\-188.5391\\-171\\-10.23392\\-190.4922\\-171\\-10.01862\\-194.3984\\-171\\-9.942289\\-200.2578\\-171\\-9.994507\\-206.1172\\-171\\-9.978141\\-211.9766\\-171\\-10.04093\\-215.8828\\-171\\-10.25102\\-223.6953\\-171\\-10.36516\\-225.6484\\-171\\-11.58531\\-227.6016\\-171\\-11.71875\\-233.4609\\-171\\-11.95098\\-237.3672\\-171\\-12.76507\\-239.3203\\-171\\-13.31329\\-243.2266\\-171\\-13.95723\\-245.1797\\-171\\-14.32729\\-249.0859\\-171\\-15.46224\\-251.0391\\-171\\-15.74468\\-252.9922\\-171\\-16.29144\\-254.9453\\-171\\-17.56779\\-256.8984\\-171\\-17.6883\\-258.8516\\-171\\-18.55469\\-260.2833\\-171\\-19.03161\\-260.8047\\-171\\-19.64052\\-262.7578\\-171\\-20.66443\\-266.6641\\-171\\-21.74549\\-268.6172\\-171\\-23.18869\\-270.5703\\-171\\-23.6969\\-272.5234\\-171\\-25.23942\\-274.4766\\-171\\-25.96933\\-276.4297\\-171\\-27.52183\\-278.3828\\-171\\-28.34932\\-280.3359\\-171\\-32.22656\\-284.4049\\-171\\-33.66341\\-286.1953\\-171\\-34.9985\\-288.1484\\-171\\-37.0666\\-290.1016\\-171\\-39.61955\\-292.0547\\-171\\-41.99219\\-294.3489\\-171\\-43.94531\\-295.4144\\-171\\-45.89844\\-296.5841\\-171\\-47.85156\\-298.2568\\-171\\-49.80469\\-298.9216\\-171\\-51.75781\\-300.2641\\-171\\-53.71094\\-300.8955\\-171\\-57.61719\\-302.3018\\-171\\-61.52344\\-302.8631\\-171\\-67.38281\\-303.4177\\-171\\-69.33594\\-303.5293\\-171\\-71.28906\\-303.5311\\-171\\-75.19531\\-303.3842\\-171\\-83.00781\\-302.638\\-171\\-84.96094\\-302.3959\\-171"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002387"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "176"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "3"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "55.37684\\-297.9141\\-171\\53.71094\\-296.4235\\-171\\51.75781\\-296.1394\\-171\\51.41195\\-295.9609\\-171\\49.80469\\-294.418\\-171\\47.85156\\-294.2967\\-171\\45.89844\\-292.55\\-171\\43.94531\\-292.3643\\-171\\41.58266\\-290.1016\\-171\\40.03906\\-288.3926\\-171\\38.08594\\-286.6785\\-171\\36.13281\\-286.3474\\-171\\35.97819\\-286.1953\\-171\\35.52698\\-284.2422\\-171\\34.17969\\-282.7574\\-171\\32.22656\\-280.9361\\-171\\31.70277\\-280.3359\\-171\\30.27344\\-279.0781\\-171\\29.68618\\-278.3828\\-171\\29.26358\\-276.4297\\-171\\27.32077\\-274.4766\\-171\\26.66364\\-272.5234\\-171\\25.05208\\-270.5703\\-171\\24.41406\\-269.9568\\-171\\22.46094\\-267.4087\\-171\\21.25822\\-264.7109\\-171\\19.81141\\-260.8047\\-171\\19.42568\\-258.8516\\-171\\18.55469\\-256.8197\\-171\\17.85881\\-254.9453\\-171\\17.71851\\-252.9922\\-171\\16.18481\\-251.0391\\-171\\15.88579\\-249.0859\\-171\\14.97774\\-247.1328\\-171\\14.64844\\-246.1214\\-171\\14.03439\\-243.2266\\-171\\13.54774\\-241.2734\\-171\\13.36785\\-239.3203\\-171\\13.18359\\-233.4609\\-171\\12.69531\\-232.9541\\-171\\11.95817\\-231.5078\\-171\\11.86996\\-229.5547\\-171\\11.98572\\-227.6016\\-171\\11.73855\\-223.6953\\-171\\11.73222\\-221.7422\\-171\\10.54275\\-219.7891\\-171\\11.24108\\-217.8359\\-171\\10.74219\\-217.1895\\-171\\10.20281\\-215.8828\\-171\\10.11827\\-213.9297\\-171\\10.03339\\-208.0703\\-171\\10.04012\\-204.1641\\-171\\9.984334\\-196.3516\\-171\\10.07876\\-188.5391\\-171\\10.25391\\-182.6797\\-171\\11.71875\\-180.7266\\-171\\11.9598\\-172.9141\\-171\\13.23379\\-169.0078\\-171\\13.70216\\-167.0547\\-171\\14.64844\\-163.7909\\-171\\14.91672\\-163.1484\\-171\\16.60156\\-160.0878\\-171\\17.23189\\-159.2422\\-171\\18.01568\\-157.2891\\-171\\19.539\\-155.3359\\-171\\20.50781\\-153.5921\\-171\\21.89556\\-151.4297\\-171\\22.46094\\-150.9216\\-171\\24.41406\\-148.6911\\-171\\25.73482\\-147.5234\\-171\\28.32031\\-145.0642\\-171\\30.27344\\-144.5057\\-171\\32.22656\\-142.5121\\-171\\34.17969\\-140.8306\\-171\\36.13281\\-140.0894\\-171\\36.58466\\-139.7109\\-171\\40.03906\\-137.8083\\-171\\41.99219\\-138.7804\\-171\\43.94531\\-136.887\\-171\\45.89844\\-136.667\\-171\\47.85156\\-135.5117\\-171\\49.80469\\-135.3234\\-171\\51.75781\\-135.3634\\-171\\53.71094\\-134.7305\\-171\\55.66406\\-134.292\\-171\\57.61719\\-134.3295\\-171\\61.52344\\-134.5946\\-171\\63.47656\\-134.2955\\-171\\63.96484\\-133.8516\\-171\\65.42969\\-133.3406\\-171\\67.38281\\-133.4035\\-171\\68.24841\\-133.8516\\-171\\69.33594\\-134.9391\\-171\\71.28906\\-135.0885\\-171\\75.19531\\-135.6199\\-171\\77.63672\\-135.8047\\-171\\78.125\\-137.7578\\-171\\79.10156\\-138.7344\\-171\\79.24107\\-139.7109\\-171\\78.85742\\-141.6641\\-171\\76.9043\\-143.6172\\-171\\78.125\\-145.5703\\-171\\78.125\\-147.5234\\-171\\77.3112\\-151.4297\\-171\\78.40401\\-153.3828\\-171\\78.125\\-155.3359\\-171\\77.14844\\-156.4753\\-171\\75.19531\\-156.8008\\-171\\73.24219\\-157.9866\\-171\\71.28906\\-158.5098\\-171\\70.55664\\-159.2422\\-171\\69.0918\\-161.1953\\-171\\68.35938\\-163.1484\\-171\\67.87109\\-165.1016\\-171\\67.05729\\-167.0547\\-171\\68.35938\\-169.0078\\-171\\67.38281\\-169.9844\\-171\\66.79688\\-170.9609\\-171\\65.42969\\-173.8906\\-171\\65.10416\\-174.8672\\-171\\65.75521\\-176.8203\\-171\\65.18555\\-178.7734\\-171\\65.10416\\-180.7266\\-171\\64.45313\\-182.6797\\-171\\65.10416\\-184.6328\\-171\\63.80209\\-188.5391\\-171\\64.45313\\-190.4922\\-171\\64.45313\\-192.4453\\-171\\63.7207\\-194.3984\\-171\\63.7207\\-198.3047\\-171\\63.80209\\-200.2578\\-171\\62.5\\-202.2109\\-171\\62.5\\-206.1172\\-171\\61.19792\\-208.0703\\-171\\60.79102\\-210.0234\\-171\\60.05859\\-211.9766\\-171\\60.05859\\-217.8359\\-171\\59.24479\\-219.7891\\-171\\59.81445\\-221.7422\\-171\\60.05859\\-223.6953\\-171\\59.57031\\-224.6719\\-171\\59.32617\\-225.6484\\-171\\59.73307\\-227.6016\\-171\\59.24479\\-229.5547\\-171\\60.30273\\-231.5078\\-171\\59.81445\\-235.4141\\-171\\59.81445\\-237.3672\\-171\\59.57031\\-238.3438\\-171\\58.59375\\-239.3203\\-171\\58.34961\\-241.2734\\-171\\58.34961\\-245.1797\\-171\\57.37305\\-247.1328\\-171\\57.29167\\-249.0859\\-171\\56.88477\\-251.0391\\-171\\56.15234\\-252.9922\\-171\\56.64063\\-254.9453\\-171\\55.98959\\-256.8984\\-171\\56.64063\\-258.8516\\-171\\55.9082\\-260.8047\\-171\\55.66406\\-261.7813\\-171\\55.17578\\-262.7578\\-171\\55.17578\\-264.7109\\-171\\53.71094\\-267.6406\\-171\\53.4668\\-268.6172\\-171\\54.03646\\-270.5703\\-171\\53.95508\\-274.4766\\-171\\53.4668\\-276.4297\\-171\\52.73438\\-278.3828\\-171\\53.95508\\-280.3359\\-171\\53.38542\\-282.2891\\-171\\53.38542\\-284.2422\\-171\\54.93164\\-286.1953\\-171\\54.03646\\-290.1016\\-171\\54.85026\\-292.0547\\-171\\55.9082\\-295.9609\\-171\\57.29167\\-297.9141\\-171"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "176"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "4"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-73.24219\\-303.8542\\-169\\-75.19531\\-303.675\\-169\\-79.10156\\-303.1839\\-169\\-84.96094\\-302.5885\\-169\\-86.91406\\-302.2715\\-169\\-90.82031\\-301.2267\\-169\\-94.72656\\-300.4363\\-169\\-96.67969\\-299.662\\-169\\-100.5859\\-298.3394\\-169\\-102.5391\\-297.3136\\-169\\-104.4922\\-296.6992\\-169\\-106.4453\\-295.7298\\-169\\-108.3984\\-294.9905\\-169\\-110.3516\\-294.1102\\-169\\-112.3047\\-292.9929\\-169\\-114.2578\\-291.7224\\-169\\-116.2109\\-290.6448\\-169\\-122.0703\\-286.5929\\-169\\-124.6476\\-284.2422\\-169\\-127.9297\\-281.3329\\-169\\-129.8828\\-279.3381\\-169\\-131.8359\\-277.196\\-169\\-134.4105\\-274.4766\\-169\\-135.9787\\-272.5234\\-169\\-137.1861\\-270.5703\\-169\\-140.3014\\-266.6641\\-169\\-142.6606\\-262.7578\\-169\\-143.9251\\-260.8047\\-169\\-144.8669\\-258.8516\\-169\\-146.2197\\-256.8984\\-169\\-147.1953\\-254.9453\\-169\\-148.3177\\-252.9922\\-169\\-149.0861\\-251.0391\\-169\\-150.1282\\-249.0859\\-169\\-150.8028\\-247.1328\\-169\\-151.9624\\-245.1797\\-169\\-152.6912\\-243.2266\\-169\\-153.7619\\-241.2734\\-169\\-154.3957\\-239.3203\\-169\\-155.952\\-235.4141\\-169\\-156.367\\-233.4609\\-169\\-157.0253\\-231.5078\\-169\\-157.8465\\-229.5547\\-169\\-158.3226\\-227.6016\\-169\\-159.7611\\-223.6953\\-169\\-160.7096\\-219.7891\\-169\\-161.3966\\-217.8359\\-169\\-161.8514\\-215.8828\\-169\\-162.5682\\-210.0234\\-169\\-163.1557\\-206.1172\\-169\\-163.3599\\-204.1641\\-169\\-163.4646\\-202.2109\\-169\\-163.4961\\-198.3047\\-169\\-163.3954\\-196.3516\\-169\\-163.1406\\-194.3984\\-169\\-162.4244\\-190.4922\\-169\\-161.876\\-186.5859\\-169\\-161.3841\\-184.6328\\-169\\-160.5882\\-182.6797\\-169\\-160.0018\\-180.7266\\-169\\-159.1797\\-178.7865\\-169\\-157.2266\\-174.9214\\-169\\-156.1366\\-172.9141\\-169\\-153.7016\\-169.0078\\-169\\-151.3672\\-166.101\\-169\\-148.7422\\-163.1484\\-169\\-146.9126\\-161.1953\\-169\\-142.6151\\-157.2891\\-169\\-139.6484\\-154.8016\\-169\\-137.581\\-153.3828\\-169\\-133.7891\\-150.8891\\-169\\-131.8359\\-149.7809\\-169\\-129.8828\\-148.5287\\-169\\-127.9297\\-147.3937\\-169\\-125.9766\\-146.5408\\-169\\-124.0234\\-145.8032\\-169\\-122.0703\\-144.8222\\-169\\-120.1172\\-144.2056\\-169\\-118.1641\\-143.1472\\-169\\-116.2109\\-142.4861\\-169\\-114.2578\\-141.6564\\-169\\-112.3047\\-140.9361\\-169\\-110.3516\\-140.4684\\-169\\-108.3984\\-139.8427\\-169\\-106.4453\\-139.1134\\-169\\-102.5391\\-138.2558\\-169\\-100.5859\\-137.443\\-169\\-96.67969\\-136.4423\\-169\\-94.72656\\-135.6962\\-169\\-92.77344\\-135.1299\\-169\\-88.86719\\-134.2272\\-169\\-86.91406\\-133.6111\\-169\\-84.96094\\-133.2155\\-169\\-83.00781\\-132.9478\\-169\\-79.10156\\-132.5555\\-169\\-77.14844\\-132.2146\\-169\\-75.19531\\-131.7228\\-169\\-73.24219\\-131.4399\\-169\\-71.28906\\-131.2669\\-169\\-67.38281\\-131.1162\\-169\\-63.47656\\-131.0934\\-169\\-59.57031\\-131.2457\\-169\\-57.61719\\-131.4219\\-169\\-55.66406\\-131.7087\\-169\\-53.71094\\-132.1744\\-169\\-51.75781\\-132.5232\\-169\\-47.85156\\-133.0592\\-169\\-45.89844\\-133.5819\\-169\\-43.94531\\-134.3728\\-169\\-40.03906\\-135.59\\-169\\-38.08594\\-136.592\\-169\\-36.13281\\-137.4609\\-169\\-32.66398\\-139.7109\\-169\\-30.27344\\-141.3561\\-169\\-27.46302\\-143.6172\\-169\\-24.41406\\-146.4973\\-169\\-21.72112\\-149.4766\\-169\\-20.23199\\-151.4297\\-169\\-19.22526\\-153.3828\\-169\\-18.0161\\-155.3359\\-169\\-17.22301\\-157.2891\\-169\\-16.09281\\-159.2422\\-169\\-15.40612\\-161.1953\\-169\\-14.48328\\-163.1484\\-169\\-13.89492\\-165.1016\\-169\\-13.14041\\-169.0078\\-169\\-12.60938\\-170.9609\\-169\\-12.1844\\-172.9141\\-169\\-11.9687\\-174.8672\\-169\\-11.66539\\-178.7734\\-169\\-11.45089\\-180.7266\\-169\\-11.06542\\-182.6797\\-169\\-10.5806\\-184.6328\\-169\\-10.27135\\-186.5859\\-169\\-9.760791\\-192.4453\\-169\\-9.571362\\-196.3516\\-169\\-9.478082\\-200.2578\\-169\\-9.508928\\-206.1172\\-169\\-9.460802\\-210.0234\\-169\\-9.532335\\-213.9297\\-169\\-9.690118\\-217.8359\\-169\\-9.950508\\-225.6484\\-169\\-10.25391\\-229.5547\\-169\\-10.59358\\-231.5078\\-169\\-11.07449\\-233.4609\\-169\\-11.41036\\-235.4141\\-169\\-11.83877\\-239.3203\\-169\\-12.13458\\-241.2734\\-169\\-13.2393\\-245.1797\\-169\\-13.94413\\-249.0859\\-169\\-14.41988\\-251.0391\\-169\\-15.17519\\-252.9922\\-169\\-16.33103\\-256.8984\\-169\\-17.28678\\-258.8516\\-169\\-17.85562\\-260.8047\\-169\\-18.95229\\-262.7578\\-169\\-20.22182\\-266.6641\\-169\\-21.30418\\-268.6172\\-169\\-22.17134\\-270.5703\\-169\\-23.39124\\-272.5234\\-169\\-25.53991\\-276.4297\\-169\\-26.85205\\-278.3828\\-169\\-27.89142\\-280.3359\\-169\\-29.49089\\-282.2891\\-169\\-31.23146\\-284.2422\\-169\\-34.48683\\-288.1484\\-169\\-40.03906\\-293.359\\-169\\-41.99219\\-294.9531\\-169\\-43.94531\\-296.2575\\-169\\-45.89844\\-297.3216\\-169\\-47.85156\\-298.6786\\-169\\-51.75781\\-300.6086\\-169\\-53.71094\\-301.1629\\-169\\-57.61719\\-302.5222\\-169\\-67.38281\\-303.7811\\-169\\-69.33594\\-303.9089\\-169"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "257"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "5"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "63.47656\\-301.8099\\-169\\59.57031\\-301.3076\\-169\\57.61719\\-300.7721\\-169\\55.66406\\-300.4261\\-169\\54.13187\\-299.8672\\-169\\51.75781\\-298.7472\\-169\\49.80469\\-297.3715\\-169\\47.85156\\-296.6995\\-169\\45.89844\\-295.1841\\-169\\43.94531\\-294.386\\-169\\41.99219\\-292.9022\\-169\\40.03906\\-290.9544\\-169\\38.08594\\-289.1103\\-169\\36.13281\\-287.766\\-169\\34.47951\\-286.1953\\-169\\33.1563\\-284.2422\\-169\\31.40818\\-282.2891\\-169\\30.27344\\-281.1623\\-169\\27.97445\\-278.3828\\-169\\27.07435\\-276.4297\\-169\\25.61549\\-274.4766\\-169\\24.85988\\-272.5234\\-169\\24.41406\\-272.0064\\-169\\22.06643\\-268.6172\\-169\\21.21519\\-266.6641\\-169\\20.14951\\-264.7109\\-169\\18.96624\\-260.8047\\-169\\18.05124\\-258.8516\\-169\\17.19574\\-254.9453\\-169\\16.28675\\-252.9922\\-169\\15.67667\\-251.0391\\-169\\14.16331\\-247.1328\\-169\\13.34417\\-243.2266\\-169\\12.32824\\-239.3203\\-169\\12.07498\\-237.3672\\-169\\11.79778\\-233.4609\\-169\\10.86957\\-227.6016\\-169\\10.46036\\-225.6484\\-169\\10.28022\\-223.6953\\-169\\10.0234\\-219.7891\\-169\\10.0072\\-217.8359\\-169\\9.745173\\-213.9297\\-169\\9.53284\\-208.0703\\-169\\9.534486\\-202.2109\\-169\\9.480081\\-200.2578\\-169\\9.573514\\-192.4453\\-169\\9.709676\\-188.5391\\-169\\9.996536\\-182.6797\\-169\\10.23687\\-180.7266\\-169\\11.00787\\-176.8203\\-169\\11.85116\\-170.9609\\-169\\12.29239\\-169.0078\\-169\\13.09291\\-167.0547\\-169\\14.24864\\-163.1484\\-169\\15.33518\\-161.1953\\-169\\16.12261\\-159.2422\\-169\\17.39839\\-157.2891\\-169\\19.77873\\-153.3828\\-169\\21.21384\\-151.4297\\-169\\24.41406\\-147.6665\\-169\\26.64493\\-145.5703\\-169\\29.01786\\-143.6172\\-169\\31.62977\\-141.6641\\-169\\32.22656\\-141.1152\\-169\\34.47033\\-139.7109\\-169\\38.08594\\-137.6745\\-169\\40.03906\\-136.7691\\-169\\41.99219\\-136.5511\\-169\\43.94531\\-135.1235\\-169\\45.89844\\-134.7874\\-169\\47.85156\\-134.1081\\-169\\49.80469\\-133.5799\\-169\\51.75781\\-133.4423\\-169\\53.71094\\-132.8549\\-169\\55.66406\\-132.5882\\-169\\59.57031\\-132.2212\\-169\\61.52344\\-132.0883\\-169\\63.47656\\-131.8246\\-169\\65.42969\\-131.2578\\-169\\67.38281\\-131.2706\\-169\\69.33594\\-132.0406\\-169\\71.28906\\-132.1682\\-169\\73.24219\\-132.1355\\-169\\75.19531\\-132.212\\-169\\77.14844\\-132.4348\\-169\\81.05469\\-132.7626\\-169\\83.00781\\-133.0155\\-169\\84.96094\\-133.4167\\-169\\86.91406\\-133.5116\\-169\\88.86719\\-133.7043\\-169\\90.82031\\-134.032\\-169\\92.77344\\-134.7932\\-169\\96.67969\\-135.2239\\-169\\97.91396\\-135.8047\\-169\\100.5859\\-137.9317\\-169\\102.5391\\-138.0284\\-169\\104.4922\\-138.2513\\-169\\106.4453\\-139.2837\\-169\\108.3984\\-139.5005\\-169\\110.3516\\-140.4181\\-169\\112.3047\\-140.9561\\-169\\114.2578\\-141.0734\\-169\\116.0889\\-141.6641\\-169\\118.1641\\-142.6668\\-169\\120.1172\\-142.8375\\-169\\121.3257\\-143.6172\\-169\\122.0703\\-144.3712\\-169\\124.0234\\-144.6581\\-169\\125.9766\\-145.737\\-169\\129.8828\\-147.3755\\-169\\131.8359\\-148.7528\\-169\\133.7891\\-149.385\\-169\\135.7422\\-151.3442\\-169\\139.1907\\-153.3828\\-169\\139.6484\\-153.8711\\-169\\142.1509\\-155.3359\\-169\\145.5078\\-158.6642\\-169\\146.1515\\-159.2422\\-169\\147.9492\\-161.1953\\-169\\151.3672\\-164.6892\\-169\\151.6322\\-165.1016\\-169\\152.2311\\-167.0547\\-169\\153.7737\\-169.0078\\-169\\153.9307\\-170.9609\\-169\\154.034\\-174.8672\\-169\\153.3398\\-178.7734\\-169\\151.6602\\-180.7266\\-169\\151.6242\\-182.6797\\-169\\151.3672\\-183.2656\\-169\\149.4141\\-183.3933\\-169\\147.4609\\-182.7836\\-169\\145.5078\\-181.108\\-169\\143.5547\\-181.0573\\-169\\141.6016\\-181.6308\\-169\\139.6484\\-182.7685\\-169\\137.6953\\-181.1923\\-169\\135.9992\\-182.6797\\-169\\137.2255\\-184.6328\\-169\\138.6127\\-186.5859\\-169\\139.6484\\-187.8839\\-169\\140.4969\\-188.5391\\-169\\140.9053\\-190.4922\\-169\\141.6016\\-192.4918\\-169\\142.7455\\-194.3984\\-169\\142.5985\\-196.3516\\-169\\141.9271\\-198.3047\\-169\\141.6016\\-198.6709\\-169\\140.8288\\-200.2578\\-169\\140.0023\\-202.2109\\-169\\137.6953\\-204.3992\\-169\\135.7422\\-205.5854\\-169\\132.3844\\-208.0703\\-169\\133.7891\\-209.5564\\-169\\135.7422\\-209.1831\\-169\\137.6953\\-207.7167\\-169\\138.0157\\-208.0703\\-169\\138.339\\-210.0234\\-169\\138.3534\\-211.9766\\-169\\136.5039\\-213.9297\\-169\\136.3407\\-215.8828\\-169\\137.6953\\-217.5625\\-169\\138.0371\\-217.8359\\-169\\135.7422\\-219.9518\\-169\\133.7891\\-219.2371\\-169\\133.1209\\-219.7891\\-169\\133.7377\\-221.7422\\-169\\135.5591\\-223.6953\\-169\\135.7422\\-224.2813\\-169\\137.6953\\-223.5732\\-169\\139.6484\\-222.7188\\-169\\140.8854\\-221.7422\\-169\\140.408\\-219.7891\\-169\\143.5547\\-219.4318\\-169\\145.1823\\-219.7891\\-169\\148.0067\\-221.7422\\-169\\147.4609\\-222.5856\\-169\\145.5078\\-222.5309\\-169\\144.3434\\-223.6953\\-169\\143.8965\\-225.6484\\-169\\143.5547\\-226.2027\\-169\\141.6016\\-228.6697\\-169\\139.6484\\-228.9398\\-169\\139.0099\\-229.5547\\-169\\138.2042\\-231.5078\\-169\\138.2243\\-233.4609\\-169\\140.103\\-235.4141\\-169\\139.9148\\-237.3672\\-169\\139.5089\\-237.3672\\-169\\137.6953\\-235.7803\\-169\\135.7422\\-234.8607\\-169\\134.7656\\-235.4141\\-169\\133.7891\\-236.7975\\-169\\133.5261\\-237.3672\\-169\\134.2593\\-239.3203\\-169\\135.7422\\-240.9886\\-169\\136.1694\\-241.2734\\-169\\137.6953\\-243.0173\\-169\\139.6484\\-240.8713\\-169\\141.6016\\-240.7852\\-169\\143.5547\\-239.418\\-169\\145.5078\\-241.0022\\-169\\146.8395\\-241.2734\\-169\\147.4609\\-241.957\\-169\\149.4141\\-242.993\\-169\\149.6528\\-243.2266\\-169\\150.4883\\-245.1797\\-169\\151.3672\\-246.0586\\-169\\153.3203\\-246.6158\\-169\\155.2734\\-247.0491\\-169\\155.2734\\-247.2723\\-169\\153.6175\\-249.0859\\-169\\153.1808\\-252.9922\\-169\\151.5625\\-254.9453\\-169\\151.3672\\-255.3987\\-169\\149.9192\\-256.8984\\-169\\148.2928\\-258.8516\\-169\\147.8299\\-260.8047\\-169\\146.1033\\-262.7578\\-169\\145.841\\-264.7109\\-169\\145.5078\\-265.14\\-169\\141.9744\\-268.6172\\-169\\141.6016\\-269.6965\\-169\\139.9374\\-272.5234\\-169\\137.6953\\-274.6259\\-169\\135.7422\\-275.5833\\-169\\134.8958\\-276.4297\\-169\\133.7891\\-277.173\\-169\\132.6633\\-278.3828\\-169\\129.8828\\-281.0427\\-169\\127.9297\\-282.1638\\-169\\125.9766\\-283.597\\-169\\125.3744\\-284.2422\\-169\\122.0703\\-286.47\\-169\\120.1172\\-288.2671\\-169\\118.1641\\-288.6922\\-169\\116.2109\\-290.5596\\-169\\114.2578\\-291.1924\\-169\\113.3955\\-292.0547\\-169\\112.3047\\-292.8496\\-169\\110.3516\\-293.0136\\-169\\108.3984\\-294.2318\\-169\\106.4453\\-294.6619\\-169\\104.4922\\-295.9449\\-169\\102.5391\\-296.0929\\-169\\100.5859\\-297.2137\\-169\\98.63281\\-297.4314\\-169\\96.67969\\-298.5016\\-169\\94.72656\\-299.0335\\-169\\92.77344\\-299.1011\\-169\\90.82031\\-299.9676\\-169\\88.86719\\-300.647\\-169\\84.96094\\-300.7585\\-169\\82.20564\\-301.8203\\-169\\79.10156\\-302.577\\-169\\75.19531\\-302.6948\\-169\\71.28906\\-302.6257\\-169\\69.33594\\-302.2037\\-169"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "4"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "6"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "143.5547\\-189.3458\\-169\\143.133\\-188.5391\\-169\\143.5547\\-188.2349\\-169\\143.886\\-188.5391\\-169"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "4"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "145.5078\\-194.8053\\-169\\144.6036\\-194.3984\\-169\\145.5078\\-193.1777\\-169\\146.7928\\-194.3984\\-169"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "149.4141\\-216.2923\\-169\\149.1319\\-215.8828\\-169\\149.2473\\-213.9297\\-169\\147.4609\\-212.0023\\-169\\145.5078\\-214.0812\\-169\\143.5547\\-211.9014\\-169\\141.6016\\-210.566\\-169\\141.0203\\-210.0234\\-169\\141.6016\\-209.642\\-169\\143.5547\\-209.6297\\-169\\145.4139\\-208.0703\\-169\\145.3879\\-206.1172\\-169\\145.1737\\-204.1641\\-169\\145.3738\\-202.2109\\-169\\145.6533\\-202.2109\\-169\\147.4866\\-204.1641\\-169\\147.966\\-206.1172\\-169\\147.966\\-208.0703\\-169\\148.1934\\-210.0234\\-169\\147.4924\\-211.9766\\-169\\149.573\\-213.9297\\-169\\149.7875\\-215.8828\\-169"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002385"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "181"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-75.19531\\-303.8682\\-167\\-79.10156\\-303.2914\\-167\\-83.00781\\-302.8616\\-167\\-84.96094\\-302.7003\\-167\\-86.91406\\-302.4227\\-167\\-88.86719\\-301.9653\\-167\\-90.82031\\-301.3931\\-167\\-94.72656\\-300.5706\\-167\\-96.67969\\-299.9626\\-167\\-98.63281\\-299.1595\\-167\\-100.5859\\-298.5634\\-167\\-102.5391\\-297.5571\\-167\\-104.4922\\-296.8603\\-167\\-106.4453\\-296.0469\\-167\\-108.3984\\-295.1125\\-167\\-110.3516\\-294.3546\\-167\\-110.8253\\-294.0078\\-167\\-114.2288\\-292.0547\\-167\\-116.2109\\-290.8091\\-167\\-118.1641\\-289.3966\\-167\\-120.1172\\-288.2358\\-167\\-122.0703\\-286.7733\\-167\\-124.8006\\-284.2422\\-167\\-127.9297\\-281.4396\\-167\\-129.8828\\-279.4686\\-167\\-130.8533\\-278.3828\\-167\\-134.6139\\-274.4766\\-167\\-136.2235\\-272.5234\\-167\\-137.4283\\-270.5703\\-167\\-138.8977\\-268.6172\\-167\\-140.5108\\-266.6641\\-167\\-141.8457\\-264.7109\\-167\\-142.8571\\-262.7578\\-167\\-144.1561\\-260.8047\\-167\\-145.0998\\-258.8516\\-167\\-146.3941\\-256.8984\\-167\\-147.5296\\-254.9453\\-167\\-150.2918\\-249.0859\\-167\\-151.0728\\-247.1328\\-167\\-152.173\\-245.1797\\-167\\-152.9857\\-243.2266\\-167\\-154.0079\\-241.2734\\-167\\-154.6203\\-239.3203\\-167\\-155.5324\\-237.3672\\-167\\-156.1422\\-235.4141\\-167\\-156.5817\\-233.4609\\-167\\-157.5103\\-231.5078\\-167\\-158.6326\\-227.6016\\-167\\-159.5202\\-225.6484\\-167\\-160.5314\\-221.7422\\-167\\-161.202\\-219.7891\\-167\\-161.7525\\-217.8359\\-167\\-162.0739\\-215.8828\\-167\\-162.5779\\-211.9766\\-167\\-163.3599\\-208.0703\\-167\\-163.5866\\-206.1172\\-167\\-163.8046\\-202.2109\\-167\\-163.8359\\-198.3047\\-167\\-163.6258\\-194.3984\\-167\\-163.3336\\-192.4453\\-167\\-162.7894\\-190.4922\\-167\\-162.3999\\-188.5391\\-167\\-161.7479\\-184.6328\\-167\\-160.3162\\-180.7266\\-167\\-159.668\\-178.7734\\-167\\-158.5306\\-176.8203\\-167\\-157.6425\\-174.8672\\-167\\-156.3832\\-172.9141\\-167\\-154.0558\\-169.0078\\-167\\-152.4658\\-167.0547\\-167\\-147.3178\\-161.1953\\-167\\-142.9162\\-157.2891\\-167\\-139.6484\\-154.486\\-167\\-137.6953\\-153.0377\\-167\\-135.7422\\-151.9426\\-167\\-135.0999\\-151.4297\\-167\\-132.0143\\-149.4766\\-167\\-129.8828\\-148.2941\\-167\\-127.9297\\-147.0962\\-167\\-125.9766\\-146.3872\\-167\\-122.0703\\-144.6651\\-167\\-120.1172\\-143.9607\\-167\\-118.1641\\-142.9347\\-167\\-116.2109\\-142.2692\\-167\\-114.2578\\-141.3631\\-167\\-112.3047\\-140.7577\\-167\\-110.3516\\-140.2586\\-167\\-108.3984\\-139.4931\\-167\\-106.4453\\-138.919\\-167\\-104.4922\\-138.5426\\-167\\-100.5859\\-137.1515\\-167\\-98.63281\\-136.6768\\-167\\-96.67969\\-136.0983\\-167\\-94.72656\\-135.3253\\-167\\-90.82031\\-134.4635\\-167\\-88.86719\\-133.8125\\-167\\-86.91406\\-133.3207\\-167\\-84.96094\\-133.0084\\-167\\-79.10156\\-132.2986\\-167\\-77.14844\\-131.762\\-167\\-75.19531\\-131.3957\\-167\\-71.28906\\-131.099\\-167\\-67.38281\\-130.9686\\-167\\-63.47656\\-130.9637\\-167\\-59.57031\\-131.1143\\-167\\-55.66406\\-131.4584\\-167\\-51.75781\\-132.3674\\-167\\-47.85156\\-132.9223\\-167\\-45.89844\\-133.3207\\-167\\-41.99219\\-134.7265\\-167\\-40.03906\\-135.3318\\-167\\-38.08594\\-136.3564\\-167\\-36.13281\\-137.183\\-167\\-32.22656\\-139.5298\\-167\\-30.27344\\-140.8895\\-167\\-27.11565\\-143.6172\\-167\\-24.41406\\-146.2332\\-167\\-22.46094\\-148.3173\\-167\\-19.96228\\-151.4297\\-167\\-18.98636\\-153.3828\\-167\\-17.77872\\-155.3359\\-167\\-16.9181\\-157.2891\\-167\\-15.84671\\-159.2422\\-167\\-15.18165\\-161.1953\\-167\\-14.20111\\-163.1484\\-167\\-13.70129\\-165.1016\\-167\\-13.31042\\-167.0547\\-167\\-12.24002\\-170.9609\\-167\\-11.93576\\-172.9141\\-167\\-11.4787\\-178.7734\\-167\\-11.2087\\-180.7266\\-167\\-10.6756\\-182.6797\\-167\\-10.31681\\-184.6328\\-167\\-9.994284\\-188.5391\\-167\\-9.61691\\-192.4453\\-167\\-9.397322\\-196.3516\\-167\\-9.27124\\-202.2109\\-167\\-9.211189\\-210.0234\\-167\\-9.268246\\-213.9297\\-167\\-9.38522\\-215.8828\\-167\\-9.595352\\-221.7422\\-167\\-9.728599\\-223.6953\\-167\\-9.867447\\-227.6016\\-167\\-10.27135\\-231.5078\\-167\\-11.2274\\-235.4141\\-167\\-11.99525\\-241.2734\\-167\\-12.40517\\-243.2266\\-167\\-13.09543\\-245.1797\\-167\\-13.86834\\-249.0859\\-167\\-14.34744\\-251.0391\\-167\\-15.10976\\-252.9922\\-167\\-16.20483\\-256.8984\\-167\\-17.1875\\-258.8516\\-167\\-17.78886\\-260.8047\\-167\\-18.86345\\-262.7578\\-167\\-20.14838\\-266.6641\\-167\\-21.24605\\-268.6172\\-167\\-22.08984\\-270.5703\\-167\\-23.34547\\-272.5234\\-167\\-25.4889\\-276.4297\\-167\\-26.77582\\-278.3828\\-167\\-27.83526\\-280.3359\\-167\\-29.45006\\-282.2891\\-167\\-31.18369\\-284.2422\\-167\\-32.22656\\-285.627\\-167\\-34.17969\\-288.0341\\-167\\-40.03906\\-293.6157\\-167\\-40.4971\\-294.0078\\-167\\-43.94531\\-296.476\\-167\\-45.89844\\-297.5741\\-167\\-47.85156\\-298.8579\\-167\\-49.80469\\-299.875\\-167\\-51.75781\\-300.7254\\-167\\-53.71094\\-301.2894\\-167\\-55.66406\\-302.0497\\-167\\-57.61719\\-302.6075\\-167\\-61.52344\\-303.136\\-167\\-65.48394\\-303.7734\\-167\\-67.38281\\-304.0092\\-167\\-69.33594\\-304.099\\-167\\-73.24219\\-304.0209\\-167"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002385"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "174"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-301.8284\\-167\\57.61719\\-301.2669\\-167\\55.66406\\-300.8209\\-167\\53.71094\\-300.2383\\-167\\51.75781\\-299.2064\\-167\\49.80469\\-298.3557\\-167\\47.85156\\-297.0696\\-167\\43.94531\\-294.8546\\-167\\40.23918\\-292.0547\\-167\\38.08594\\-290.0756\\-167\\36.13281\\-288.4352\\-167\\33.88445\\-286.1953\\-167\\30.76528\\-282.2891\\-167\\30.27344\\-281.7747\\-167\\27.59399\\-278.3828\\-167\\26.36719\\-276.3754\\-167\\25.31226\\-274.4766\\-167\\23.96746\\-272.5234\\-167\\22.99528\\-270.5703\\-167\\21.67411\\-268.6172\\-167\\19.81378\\-264.7109\\-167\\19.32026\\-262.7578\\-167\\17.80149\\-258.8516\\-167\\17.44792\\-256.8984\\-167\\16.90051\\-254.9453\\-167\\16.04432\\-252.9922\\-167\\15.48623\\-251.0391\\-167\\14.64075\\-249.0859\\-167\\13.95256\\-247.1328\\-167\\13.13612\\-243.2266\\-167\\12.50895\\-241.2734\\-167\\12.07886\\-239.3203\\-167\\11.85591\\-237.3672\\-167\\11.59068\\-233.4609\\-167\\11.28203\\-231.5078\\-167\\10.47165\\-227.6016\\-167\\10.19597\\-225.6484\\-167\\10.0297\\-221.7422\\-167\\9.87885\\-219.7891\\-167\\9.453588\\-211.9766\\-167\\9.305334\\-208.0703\\-167\\9.353164\\-204.1641\\-167\\9.280454\\-200.2578\\-167\\9.423553\\-192.4453\\-167\\9.784867\\-184.6328\\-167\\10.33579\\-178.7734\\-167\\11.14695\\-174.8672\\-167\\11.76652\\-170.9609\\-167\\12.14718\\-169.0078\\-167\\12.9115\\-167.0547\\-167\\13.55205\\-165.1016\\-167\\14.05165\\-163.1484\\-167\\15.05859\\-161.1953\\-167\\15.87469\\-159.2422\\-167\\17.13929\\-157.2891\\-167\\18.1425\\-155.3359\\-167\\20.50781\\-151.8898\\-167\\22.3508\\-149.4766\\-167\\24.41406\\-147.2082\\-167\\26.36719\\-145.392\\-167\\28.44881\\-143.6172\\-167\\32.22656\\-140.7331\\-167\\34.17969\\-139.4076\\-167\\36.13281\\-138.5307\\-167\\38.08594\\-137.2415\\-167\\40.03906\\-136.425\\-167\\41.99219\\-135.3853\\-167\\45.89844\\-134.1866\\-167\\47.85156\\-133.3633\\-167\\49.80469\\-133.0172\\-167\\51.75781\\-132.7823\\-167\\56.22746\\-131.8984\\-167\\61.52344\\-130.9404\\-167\\67.38281\\-130.7693\\-167\\69.33594\\-130.8745\\-167\\73.24219\\-130.94\\-167\\77.14844\\-131.5474\\-167\\79.10156\\-131.9699\\-167\\81.05469\\-132.2767\\-167\\84.96094\\-132.7364\\-167\\88.86719\\-133.0913\\-167\\90.82031\\-133.3499\\-167\\92.77344\\-133.7663\\-167\\94.72656\\-134.3028\\-167\\98.63281\\-135.0223\\-167\\100.5859\\-136.0382\\-167\\104.4922\\-136.7813\\-167\\108.3984\\-138.2496\\-167\\113.9147\\-139.7109\\-167\\116.2109\\-140.4336\\-167\\120.1172\\-141.3096\\-167\\122.0703\\-142.3694\\-167\\124.0234\\-142.8761\\-167\\125.9766\\-143.9881\\-167\\127.9297\\-144.6889\\-167\\131.8359\\-146.7352\\-167\\133.4588\\-147.5234\\-167\\135.7422\\-148.9017\\-167\\137.6953\\-150.254\\-167\\139.6169\\-151.4297\\-167\\143.5547\\-154.1716\\-167\\147.105\\-157.2891\\-167\\149.4141\\-159.4714\\-167\\151.3672\\-161.4937\\-167\\153.3203\\-163.74\\-167\\154.3464\\-165.1016\\-167\\157.2266\\-169.2767\\-167\\158.045\\-170.9609\\-167\\160.4167\\-174.8672\\-167\\161.1328\\-176.7629\\-167\\162.0096\\-178.7734\\-167\\162.2523\\-180.7266\\-167\\163.5544\\-182.6797\\-167\\163.7434\\-184.6328\\-167\\163.8744\\-188.5391\\-167\\165.136\\-190.4922\\-167\\165.3985\\-194.3984\\-167\\165.4934\\-198.3047\\-167\\165.5239\\-202.2109\\-167\\165.5031\\-206.1172\\-167\\165.42\\-211.9766\\-167\\165.1517\\-217.8359\\-167\\165.0042\\-219.7891\\-167\\163.7494\\-221.7422\\-167\\163.6955\\-227.6016\\-167\\163.6098\\-229.5547\\-167\\162.7407\\-231.5078\\-167\\162.2759\\-233.4609\\-167\\162.0672\\-235.4141\\-167\\160.7866\\-239.3203\\-167\\160.2766\\-241.2734\\-167\\159.3646\\-243.2266\\-167\\158.0889\\-247.1328\\-167\\156.1468\\-251.0391\\-167\\155.4672\\-252.9922\\-167\\153.3203\\-256.5544\\-167\\151.6493\\-258.8516\\-167\\150.4322\\-260.8047\\-167\\149.0217\\-262.7578\\-167\\148.0278\\-264.7109\\-167\\146.4716\\-266.6641\\-167\\144.6487\\-268.6172\\-167\\143.0995\\-270.5703\\-167\\141.676\\-272.5234\\-167\\139.6484\\-274.6607\\-167\\137.6849\\-276.4297\\-167\\135.7422\\-277.8906\\-167\\131.8359\\-281.3664\\-167\\129.8828\\-282.933\\-167\\127.9297\\-284.1278\\-167\\124.0234\\-287.1297\\-167\\122.0703\\-288.433\\-167\\120.1172\\-289.5267\\-167\\116.1606\\-292.0547\\-167\\112.5632\\-294.0078\\-167\\112.3047\\-294.2061\\-167\\108.3984\\-295.5571\\-167\\106.4453\\-296.4652\\-167\\102.5391\\-297.7011\\-167\\100.5859\\-298.7838\\-167\\98.63281\\-299.1886\\-167\\96.67969\\-300.048\\-167\\94.72656\\-300.6429\\-167\\92.77344\\-300.884\\-167\\90.82031\\-301.2726\\-167\\88.86719\\-301.875\\-167\\86.91406\\-302.1985\\-167\\83.00781\\-302.6582\\-167\\81.05469\\-302.8131\\-167\\75.19531\\-303.0565\\-167\\71.28906\\-302.9643\\-167\\67.38281\\-302.7469\\-167\\63.47656\\-302.461\\-167\\61.52344\\-302.2685\\-167"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002384"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "183"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-75.19531\\-303.9729\\-165\\-81.05469\\-303.136\\-165\\-86.91406\\-302.53\\-165\\-88.86719\\-302.1411\\-165\\-90.82031\\-301.5382\\-165\\-94.72656\\-300.6905\\-165\\-96.67969\\-300.1794\\-165\\-98.63281\\-299.3523\\-165\\-100.5859\\-298.7287\\-165\\-104.4922\\-296.9863\\-165\\-106.4453\\-296.2888\\-165\\-108.3984\\-295.2131\\-165\\-110.3516\\-294.5291\\-165\\-112.3047\\-293.3054\\-165\\-114.2578\\-292.2541\\-165\\-117.3944\\-290.1016\\-165\\-118.1641\\-289.4879\\-165\\-120.1172\\-288.3963\\-165\\-122.0703\\-286.8789\\-165\\-125.9766\\-283.2656\\-165\\-127.9297\\-281.5332\\-165\\-129.8828\\-279.5642\\-165\\-130.9257\\-278.3828\\-165\\-134.7461\\-274.4766\\-165\\-136.369\\-272.5234\\-165\\-137.6869\\-270.5703\\-165\\-139.1066\\-268.6172\\-165\\-140.6712\\-266.6641\\-165\\-142.0864\\-264.7109\\-165\\-143.0315\\-262.7578\\-165\\-144.3212\\-260.8047\\-165\\-145.5078\\-258.6696\\-165\\-147.4609\\-255.443\\-165\\-147.8254\\-254.9453\\-165\\-148.6217\\-252.9922\\-165\\-149.6601\\-251.0391\\-165\\-150.4608\\-249.0859\\-165\\-151.4619\\-247.1328\\-165\\-153.3582\\-243.2266\\-165\\-154.2127\\-241.2734\\-165\\-154.8733\\-239.3203\\-165\\-155.8018\\-237.3672\\-165\\-156.2968\\-235.4141\\-165\\-156.9081\\-233.4609\\-165\\-157.8159\\-231.5078\\-165\\-158.3344\\-229.5547\\-165\\-159.8362\\-225.6484\\-165\\-160.3027\\-223.6953\\-165\\-160.8869\\-221.7422\\-165\\-161.5851\\-219.7891\\-165\\-161.9724\\-217.8359\\-165\\-162.5089\\-213.9297\\-165\\-163.4069\\-210.0234\\-165\\-163.6801\\-208.0703\\-165\\-164.0421\\-202.2109\\-165\\-164.0778\\-198.3047\\-165\\-163.8892\\-194.3984\\-165\\-163.7042\\-192.4453\\-165\\-163.3085\\-190.4922\\-165\\-162.7189\\-188.5391\\-165\\-161.9948\\-184.6328\\-165\\-161.5329\\-182.6797\\-165\\-160.6638\\-180.7266\\-165\\-159.9823\\-178.7734\\-165\\-159.1797\\-177.1683\\-165\\-157.2266\\-173.6533\\-165\\-156.6695\\-172.9141\\-165\\-155.694\\-170.9609\\-165\\-154.3333\\-169.0078\\-165\\-152.7495\\-167.0547\\-165\\-147.8195\\-161.1953\\-165\\-145.5078\\-159.1504\\-165\\-143.5547\\-157.5625\\-165\\-140.9875\\-155.3359\\-165\\-137.6953\\-152.7741\\-165\\-135.7422\\-151.6423\\-165\\-133.7891\\-150.3928\\-165\\-131.8359\\-149.0263\\-165\\-129.8828\\-148.0806\\-165\\-127.9297\\-146.9131\\-165\\-125.9766\\-146.2652\\-165\\-124.0234\\-145.2309\\-165\\-122.0703\\-144.5386\\-165\\-118.1641\\-142.7839\\-165\\-116.2109\\-142.0612\\-165\\-114.2578\\-141.1511\\-165\\-110.3516\\-140.0602\\-165\\-108.3984\\-139.2328\\-165\\-104.4922\\-138.345\\-165\\-102.5391\\-137.5221\\-165\\-100.5859\\-136.9357\\-165\\-98.63281\\-136.4501\\-165\\-96.67969\\-135.6826\\-165\\-94.72656\\-135.0979\\-165\\-92.77344\\-134.683\\-165\\-90.82031\\-134.1515\\-165\\-88.86719\\-133.4733\\-165\\-86.91406\\-133.1084\\-165\\-83.00781\\-132.6528\\-165\\-81.05469\\-132.3447\\-165\\-77.14844\\-131.4399\\-165\\-75.19531\\-131.2118\\-165\\-71.28906\\-130.9637\\-165\\-67.38281\\-130.8515\\-165\\-61.52344\\-130.9266\\-165\\-57.61719\\-131.1416\\-165\\-55.66406\\-131.3114\\-165\\-53.71094\\-131.6358\\-165\\-51.75781\\-132.2101\\-165\\-49.80469\\-132.5867\\-165\\-47.85156\\-132.8282\\-165\\-45.89844\\-133.1692\\-165\\-43.94531\\-133.7663\\-165\\-41.99219\\-134.5752\\-165\\-40.03906\\-135.1864\\-165\\-38.08594\\-136.2251\\-165\\-36.13281\\-137.0557\\-165\\-34.17969\\-138.2145\\-165\\-32.22656\\-139.2227\\-165\\-30.27344\\-140.6228\\-165\\-28.32031\\-142.2676\\-165\\-24.41406\\-146.0329\\-165\\-22.46094\\-148.0907\\-165\\-19.77379\\-151.4297\\-165\\-16.59393\\-157.2891\\-165\\-15.67613\\-159.2422\\-165\\-14.97176\\-161.1953\\-165\\-14.05531\\-163.1484\\-165\\-13.1638\\-167.0547\\-165\\-12.50895\\-169.0078\\-165\\-12.05842\\-170.9609\\-165\\-11.8207\\-172.9141\\-165\\-11.32111\\-178.7734\\-165\\-10.95998\\-180.7266\\-165\\-10.46036\\-182.6797\\-165\\-10.18807\\-184.6328\\-165\\-9.936063\\-188.5391\\-165\\-9.401483\\-194.3984\\-165\\-9.188863\\-202.2109\\-165\\-9.191176\\-204.1641\\-165\\-9.078664\\-210.0234\\-165\\-9.138778\\-213.9297\\-165\\-9.363839\\-217.8359\\-165\\-9.490317\\-221.7422\\-165\\-9.671271\\-225.6484\\-165\\-9.944898\\-229.5547\\-165\\-10.18807\\-231.5078\\-165\\-10.5806\\-233.4609\\-165\\-11.1341\\-235.4141\\-165\\-11.46376\\-237.3672\\-165\\-11.96435\\-241.2734\\-165\\-12.33082\\-243.2266\\-165\\-13.03469\\-245.1797\\-165\\-13.83846\\-249.0859\\-165\\-14.31418\\-251.0391\\-165\\-15.09123\\-252.9922\\-165\\-16.18562\\-256.8984\\-165\\-17.18298\\-258.8516\\-165\\-17.77242\\-260.8047\\-165\\-18.82234\\-262.7578\\-165\\-20.15953\\-266.6641\\-165\\-21.26034\\-268.6172\\-165\\-22.13319\\-270.5703\\-165\\-23.38637\\-272.5234\\-165\\-25.54515\\-276.4297\\-165\\-26.81843\\-278.3828\\-165\\-27.88412\\-280.3359\\-165\\-29.47329\\-282.2891\\-165\\-31.17811\\-284.2422\\-165\\-34.17969\\-288.1032\\-165\\-40.03906\\-293.7952\\-165\\-43.94531\\-296.5928\\-165\\-47.85156\\-298.9789\\-165\\-49.80469\\-300.0974\\-165\\-51.75781\\-300.8261\\-165\\-53.71094\\-301.4146\\-165\\-55.66406\\-302.2012\\-165\\-57.61719\\-302.6648\\-165\\-61.52344\\-303.2302\\-165\\-65.42969\\-303.9221\\-165\\-67.38281\\-304.1302\\-165\\-69.33594\\-304.1988\\-165\\-73.24219\\-304.1095\\-165"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002384"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "170"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.0479\\-165\\57.61719\\-301.4037\\-165\\53.71094\\-300.3893\\-165\\51.75781\\-299.3665\\-165\\49.80469\\-298.5216\\-165\\47.85156\\-297.2251\\-165\\45.89844\\-296.2389\\-165\\43.94531\\-294.9906\\-165\\40.03906\\-292.2198\\-165\\36.13281\\-288.6973\\-165\\33.64258\\-286.1953\\-165\\32.02967\\-284.2422\\-165\\27.45028\\-278.3828\\-165\\26.15957\\-276.4297\\-165\\25.14648\\-274.4766\\-165\\23.76478\\-272.5234\\-165\\22.67718\\-270.5703\\-165\\21.48438\\-268.6172\\-165\\20.48438\\-266.6641\\-165\\19.69203\\-264.7109\\-165\\19.18292\\-262.7578\\-165\\18.27469\\-260.8047\\-165\\17.6959\\-258.8516\\-165\\17.32086\\-256.8984\\-165\\15.90545\\-252.9922\\-165\\15.35135\\-251.0391\\-165\\14.44322\\-249.0859\\-165\\13.84995\\-247.1328\\-165\\12.9996\\-243.2266\\-165\\12.35594\\-241.2734\\-165\\11.98033\\-239.3203\\-165\\11.46205\\-233.4609\\-165\\11.09669\\-231.5078\\-165\\10.5806\\-229.5547\\-165\\10.26257\\-227.6016\\-165\\10.05314\\-225.6484\\-165\\9.874659\\-221.7422\\-165\\9.492842\\-215.8828\\-165\\9.203942\\-211.9766\\-165\\9.057273\\-208.0703\\-165\\9.132544\\-202.2109\\-165\\9.103436\\-200.2578\\-165\\9.331597\\-194.3984\\-165\\9.359195\\-192.4453\\-165\\9.746755\\-184.6328\\-165\\10.24534\\-178.7734\\-165\\10.5806\\-176.8203\\-165\\11.07871\\-174.8672\\-165\\12.07886\\-169.0078\\-165\\12.85429\\-167.0547\\-165\\13.49706\\-165.1016\\-165\\13.9719\\-163.1484\\-165\\15.76987\\-159.2422\\-165\\16.97515\\-157.2891\\-165\\17.96646\\-155.3359\\-165\\20.50781\\-151.5016\\-165\\22.07661\\-149.4766\\-165\\24.41406\\-146.8993\\-165\\28.04487\\-143.6172\\-165\\30.56453\\-141.6641\\-165\\34.17969\\-139.1276\\-165\\36.13281\\-138.2756\\-165\\38.08594\\-137.0114\\-165\\40.03906\\-136.1616\\-165\\41.99219\\-135.1444\\-165\\43.94531\\-134.5885\\-165\\45.89844\\-133.7492\\-165\\47.85156\\-133.1191\\-165\\51.75781\\-132.5845\\-165\\55.66406\\-131.6015\\-165\\61.52344\\-130.7611\\-165\\65.42969\\-130.7187\\-165\\67.38281\\-130.6103\\-165\\71.28906\\-130.5854\\-165\\73.24219\\-130.7049\\-165\\75.19531\\-131.1685\\-165\\77.14844\\-131.3622\\-165\\80.92152\\-131.8984\\-165\\84.96094\\-132.6003\\-165\\88.86719\\-132.946\\-165\\92.77344\\-133.4983\\-165\\96.67969\\-134.4924\\-165\\100.5859\\-135.1858\\-165\\104.4922\\-136.4883\\-165\\106.4453\\-136.9644\\-165\\110.3516\\-138.2899\\-165\\114.2578\\-139.3023\\-165\\116.2109\\-140.022\\-165\\118.1641\\-140.5541\\-165\\120.1172\\-140.9716\\-165\\124.0234\\-142.5744\\-165\\125.9766\\-143.2767\\-165\\127.9297\\-144.3557\\-165\\129.8828\\-145.1282\\-165\\131.8359\\-146.3114\\-165\\133.7891\\-147.0918\\-165\\137.5631\\-149.4766\\-165\\140.5415\\-151.4297\\-165\\141.6016\\-152.2792\\-165\\145.5078\\-155.0381\\-165\\148.0469\\-157.2891\\-165\\151.3672\\-160.5221\\-165\\153.6823\\-163.1484\\-165\\155.2734\\-165.3108\\-165\\157.7981\\-169.0078\\-165\\158.9284\\-170.9609\\-165\\160.1799\\-172.9141\\-165\\161.3069\\-174.8672\\-165\\162.0848\\-176.8203\\-165\\162.7341\\-178.7734\\-165\\163.608\\-180.7266\\-165\\164.1315\\-182.6797\\-165\\164.5477\\-184.6328\\-165\\165.1057\\-186.5859\\-165\\165.8754\\-190.4922\\-165\\166.2099\\-194.3984\\-165\\166.4851\\-198.3047\\-165\\166.6302\\-202.2109\\-165\\166.6439\\-206.1172\\-165\\166.4683\\-210.0234\\-165\\166.0989\\-215.8828\\-165\\165.798\\-219.7891\\-165\\164.7699\\-225.6484\\-165\\164.2103\\-229.5547\\-165\\163.4831\\-233.4609\\-165\\162.7276\\-235.4141\\-165\\162.2106\\-237.3672\\-165\\161.8225\\-239.3203\\-165\\160.2153\\-243.2266\\-165\\159.5741\\-245.1797\\-165\\158.4417\\-247.1328\\-165\\157.7002\\-249.0859\\-165\\156.561\\-251.0391\\-165\\155.8878\\-252.9922\\-165\\154.655\\-254.9453\\-165\\153.6761\\-256.8984\\-165\\153.3203\\-257.317\\-165\\151.3672\\-260.184\\-165\\150.855\\-260.8047\\-165\\149.742\\-262.7578\\-165\\148.4058\\-264.7109\\-165\\146.8963\\-266.6641\\-165\\143.5547\\-270.6868\\-165\\142.1144\\-272.5234\\-165\\139.6484\\-275.0791\\-165\\135.7422\\-278.6692\\-165\\133.7796\\-280.3359\\-165\\131.8359\\-281.7558\\-165\\128.6901\\-284.2422\\-165\\125.9766\\-286.2341\\-165\\122.0703\\-288.8873\\-165\\120.1172\\-289.8972\\-165\\116.2109\\-292.444\\-165\\114.2578\\-293.351\\-165\\112.3047\\-294.4863\\-165\\110.3516\\-295.1248\\-165\\106.4453\\-296.8033\\-165\\104.4922\\-297.4102\\-165\\102.5391\\-298.4052\\-165\\98.63281\\-299.6386\\-165\\96.67969\\-300.3949\\-165\\94.72656\\-300.8209\\-165\\90.82031\\-301.5671\\-165\\88.86719\\-302.1246\\-165\\86.91406\\-302.461\\-165\\83.00781\\-302.7694\\-165\\75.19531\\-303.1282\\-165\\71.28906\\-303.071\\-165\\63.47656\\-302.6097\\-165\\61.52344\\-302.4315\\-165"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002383"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "176"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-77.14844\\-303.811\\-163\\-81.05469\\-303.1958\\-163\\-86.91406\\-302.6028\\-163\\-88.86719\\-302.2611\\-163\\-92.77344\\-301.1966\\-163\\-96.67969\\-300.3524\\-163\\-98.63281\\-299.5352\\-163\\-102.5391\\-298.1011\\-163\\-104.4922\\-297.0938\\-163\\-106.4453\\-296.446\\-163\\-108.3984\\-295.329\\-163\\-110.3516\\-294.6439\\-163\\-112.3047\\-293.4267\\-163\\-114.2578\\-292.4012\\-163\\-117.4993\\-290.1016\\-163\\-118.1641\\-289.5598\\-163\\-120.1172\\-288.5174\\-163\\-122.0703\\-286.9676\\-163\\-125.9766\\-283.3192\\-163\\-127.2374\\-282.2891\\-163\\-129.8828\\-279.6872\\-163\\-131.046\\-278.3828\\-163\\-134.8503\\-274.4766\\-163\\-136.489\\-272.5234\\-163\\-137.6953\\-270.8145\\-163\\-139.6484\\-268.2672\\-163\\-142.2373\\-264.7109\\-163\\-143.207\\-262.7578\\-163\\-143.5547\\-262.3122\\-163\\-145.5078\\-259.0841\\-163\\-146.7523\\-256.8984\\-163\\-148.0107\\-254.9453\\-163\\-148.7822\\-252.9922\\-163\\-149.9057\\-251.0391\\-163\\-150.6333\\-249.0859\\-163\\-151.7857\\-247.1328\\-163\\-152.5836\\-245.1797\\-163\\-153.6832\\-243.2266\\-163\\-155.1735\\-239.3203\\-163\\-156.0059\\-237.3672\\-163\\-156.4777\\-235.4141\\-163\\-157.3351\\-233.4609\\-163\\-158.0438\\-231.5078\\-163\\-158.6008\\-229.5547\\-163\\-159.5158\\-227.6016\\-163\\-160.5722\\-223.6953\\-163\\-161.315\\-221.7422\\-163\\-161.8304\\-219.7891\\-163\\-162.4042\\-215.8828\\-163\\-162.8059\\-213.9297\\-163\\-163.3478\\-211.9766\\-163\\-163.6963\\-210.0234\\-163\\-163.8892\\-208.0703\\-163\\-164.1555\\-204.1641\\-163\\-164.3163\\-200.2578\\-163\\-164.2333\\-196.3516\\-163\\-163.9326\\-192.4453\\-163\\-163.6801\\-190.4922\\-163\\-163.1851\\-188.5391\\-163\\-162.5551\\-186.5859\\-163\\-161.8189\\-182.6797\\-163\\-161.1328\\-180.873\\-163\\-159.4597\\-176.8203\\-163\\-159.1797\\-176.4461\\-163\\-155.9663\\-170.9609\\-163\\-153.3203\\-167.3031\\-163\\-149.8241\\-163.1484\\-163\\-147.4609\\-160.585\\-163\\-145.5078\\-158.8353\\-163\\-141.3261\\-155.3359\\-163\\-137.6953\\-152.5873\\-163\\-135.7422\\-151.3477\\-163\\-133.7891\\-150.2247\\-163\\-131.8359\\-148.8389\\-163\\-129.8828\\-147.8804\\-163\\-127.9297\\-146.7632\\-163\\-125.9766\\-146.155\\-163\\-124.0234\\-145.0756\\-163\\-122.0703\\-144.431\\-163\\-120.1172\\-143.4178\\-163\\-116.2109\\-141.8834\\-163\\-114.2578\\-141.0071\\-163\\-112.3047\\-140.4934\\-163\\-110.3516\\-139.857\\-163\\-108.3984\\-139.0831\\-163\\-106.4453\\-138.6786\\-163\\-104.4922\\-138.1417\\-163\\-102.5391\\-137.2753\\-163\\-98.63281\\-136.2042\\-163\\-96.67969\\-135.3932\\-163\\-92.77344\\-134.4806\\-163\\-88.86719\\-133.2798\\-163\\-86.91406\\-132.9643\\-163\\-83.00781\\-132.5232\\-163\\-79.10156\\-131.6475\\-163\\-77.14844\\-131.2814\\-163\\-75.19531\\-131.0973\\-163\\-71.28906\\-130.8608\\-163\\-67.38281\\-130.7679\\-163\\-63.47656\\-130.7926\\-163\\-57.61719\\-131.058\\-163\\-55.66406\\-131.2251\\-163\\-53.71094\\-131.5166\\-163\\-51.75781\\-132.0952\\-163\\-49.80469\\-132.5155\\-163\\-45.89844\\-133.0691\\-163\\-43.94531\\-133.5965\\-163\\-41.99219\\-134.4763\\-163\\-40.03906\\-135.096\\-163\\-38.08594\\-136.1004\\-163\\-36.13281\\-136.9184\\-163\\-34.17969\\-138.0858\\-163\\-32.22656\\-139.0621\\-163\\-30.27344\\-140.4566\\-163\\-28.73283\\-141.6641\\-163\\-26.66708\\-143.6172\\-163\\-22.46094\\-147.9066\\-163\\-19.61946\\-151.4297\\-163\\-18.47141\\-153.3828\\-163\\-17.48101\\-155.3359\\-163\\-16.33708\\-157.2891\\-163\\-13.9719\\-163.1484\\-163\\-13.0598\\-167.0547\\-163\\-12.34209\\-169.0078\\-163\\-11.95427\\-170.9609\\-163\\-11.18665\\-178.7734\\-163\\-10.32624\\-182.6797\\-163\\-10.09971\\-184.6328\\-163\\-9.871572\\-188.5391\\-163\\-9.513775\\-192.4453\\-163\\-9.396575\\-194.3984\\-163\\-9.289109\\-198.3047\\-163\\-9.140115\\-206.1172\\-163\\-9.078664\\-211.9766\\-163\\-9.355918\\-217.8359\\-163\\-9.473179\\-221.7422\\-163\\-9.950508\\-229.5547\\-163\\-10.18025\\-231.5078\\-163\\-10.5806\\-233.4609\\-163\\-11.14695\\-235.4141\\-163\\-11.46376\\-237.3672\\-163\\-11.95427\\-241.2734\\-163\\-12.37916\\-243.2266\\-163\\-13.07091\\-245.1797\\-163\\-13.83846\\-249.0859\\-163\\-14.29036\\-251.0391\\-163\\-15.06958\\-252.9922\\-163\\-16.27604\\-256.8984\\-163\\-17.27598\\-258.8516\\-163\\-17.83539\\-260.8047\\-163\\-18.91043\\-262.7578\\-163\\-20.26013\\-266.6641\\-163\\-22.46094\\-270.7345\\-163\\-24.41406\\-274.1271\\-163\\-24.69829\\-274.4766\\-163\\-25.6633\\-276.4297\\-163\\-26.93899\\-278.3828\\-163\\-28.02459\\-280.3359\\-163\\-29.54889\\-282.2891\\-163\\-31.21405\\-284.2422\\-163\\-34.17969\\-288.0341\\-163\\-38.08594\\-291.9826\\-163\\-40.17857\\-294.0078\\-163\\-41.99219\\-295.2055\\-163\\-43.94531\\-296.6683\\-163\\-45.89844\\-297.9368\\-163\\-49.80469\\-300.2277\\-163\\-53.71094\\-301.5138\\-163\\-55.66406\\-302.3186\\-163\\-57.61719\\-302.7065\\-163\\-59.57031\\-302.98\\-163\\-65.42969\\-304.044\\-163\\-67.38281\\-304.2081\\-163\\-69.33594\\-304.2617\\-163\\-73.24219\\-304.1894\\-163\\-75.19531\\-304.0664\\-163"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002383"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "180"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.1646\\-163\\57.61719\\-301.5138\\-163\\53.71094\\-300.4924\\-163\\51.75781\\-299.5151\\-163\\49.80469\\-298.6384\\-163\\47.85156\\-297.3659\\-163\\45.89844\\-296.403\\-163\\42.28899\\-294.0078\\-163\\40.03906\\-292.4141\\-163\\36.13281\\-288.8605\\-163\\33.47736\\-286.1953\\-163\\31.83741\\-284.2422\\-163\\30.27344\\-282.2455\\-163\\27.34375\\-278.3828\\-163\\26.02466\\-276.4297\\-163\\25.02359\\-274.4766\\-163\\24.41406\\-273.7382\\-163\\22.40753\\-270.5703\\-163\\20.29803\\-266.6641\\-163\\19.61411\\-264.7109\\-163\\19.07854\\-262.7578\\-163\\18.12275\\-260.8047\\-163\\17.17169\\-256.8984\\-163\\16.33103\\-254.9453\\-163\\15.19739\\-251.0391\\-163\\14.28553\\-249.0859\\-163\\13.77589\\-247.1328\\-163\\12.86677\\-243.2266\\-163\\12.24002\\-241.2734\\-163\\11.89732\\-239.3203\\-163\\11.30281\\-233.4609\\-163\\10.36516\\-229.5547\\-163\\9.973204\\-225.6484\\-163\\9.61691\\-219.7891\\-163\\9.160156\\-213.9297\\-163\\8.942106\\-211.9766\\-163\\8.842889\\-210.0234\\-163\\8.766352\\-206.1172\\-163\\8.781433\\-204.1641\\-163\\8.926505\\-200.2578\\-163\\9.306408\\-194.3984\\-163\\9.522749\\-188.5391\\-163\\9.775061\\-184.6328\\-163\\10.2285\\-178.7734\\-163\\10.53049\\-176.8203\\-163\\11.02218\\-174.8672\\-163\\11.39884\\-172.9141\\-163\\12.03435\\-169.0078\\-163\\13.44883\\-165.1016\\-163\\13.92917\\-163.1484\\-163\\15.71038\\-159.2422\\-163\\16.87168\\-157.2891\\-163\\17.88364\\-155.3359\\-163\\19.1945\\-153.3828\\-163\\20.40375\\-151.4297\\-163\\21.92993\\-149.4766\\-163\\24.41406\\-146.7695\\-163\\27.80512\\-143.6172\\-163\\30.27344\\-141.6085\\-163\\34.17969\\-138.9754\\-163\\36.13281\\-138.0544\\-163\\38.08594\\-136.8666\\-163\\40.12451\\-135.8047\\-163\\41.99219\\-134.9837\\-163\\43.94531\\-134.3631\\-163\\45.89844\\-133.4371\\-163\\47.85156\\-132.9775\\-163\\51.75781\\-132.3669\\-163\\53.71094\\-131.7891\\-163\\55.66406\\-131.3509\\-163\\59.57031\\-130.9421\\-163\\63.47656\\-130.6994\\-163\\67.38281\\-130.5829\\-163\\71.28906\\-130.6301\\-163\\73.24219\\-130.7438\\-163\\75.19531\\-131.0421\\-163\\79.10156\\-131.3788\\-163\\81.05469\\-131.6015\\-163\\84.96094\\-132.4755\\-163\\90.82031\\-133.0642\\-163\\92.77344\\-133.3533\\-163\\94.72656\\-133.7663\\-163\\96.67969\\-134.33\\-163\\100.5859\\-135.0439\\-163\\102.5391\\-135.5323\\-163\\104.4922\\-136.3022\\-163\\108.3984\\-137.3463\\-163\\110.3516\\-138.1442\\-163\\112.3047\\-138.7057\\-163\\114.2578\\-139.062\\-163\\118.1641\\-140.3851\\-163\\120.1172\\-140.811\\-163\\122.0703\\-141.4952\\-163\\124.0234\\-142.3979\\-163\\125.9766\\-143.0798\\-163\\127.9297\\-144.1725\\-163\\129.8828\\-144.9012\\-163\\131.8359\\-146.0514\\-163\\133.7891\\-146.8353\\-163\\135.7422\\-148.1039\\-163\\137.6953\\-149.1487\\-163\\139.6484\\-150.622\\-163\\140.8936\\-151.4297\\-163\\141.6016\\-152.0544\\-163\\143.5547\\-153.3743\\-163\\145.5078\\-154.8062\\-163\\148.32\\-157.2891\\-163\\151.3672\\-160.2911\\-163\\153.905\\-163.1484\\-163\\155.4255\\-165.1016\\-163\\156.6476\\-167.0547\\-163\\157.2266\\-167.7595\\-163\\159.1797\\-170.8389\\-163\\161.522\\-174.8672\\-163\\162.2354\\-176.8203\\-163\\163.8224\\-180.7266\\-163\\164.2765\\-182.6797\\-163\\165.4644\\-186.5859\\-163\\166.0004\\-190.4922\\-163\\166.4265\\-194.3984\\-163\\166.923\\-200.2578\\-163\\167.0588\\-204.1641\\-163\\167.0298\\-206.1172\\-163\\166.8181\\-210.0234\\-163\\166.3392\\-215.8828\\-163\\165.7986\\-221.7422\\-163\\165.5587\\-223.6953\\-163\\165.2135\\-225.6484\\-163\\164.7044\\-227.6016\\-163\\163.6311\\-233.4609\\-163\\162.8698\\-235.4141\\-163\\162.2962\\-237.3672\\-163\\161.9177\\-239.3203\\-163\\161.202\\-241.2734\\-163\\160.3328\\-243.2266\\-163\\159.677\\-245.1797\\-163\\158.5305\\-247.1328\\-163\\157.7919\\-249.0859\\-163\\156.6115\\-251.0391\\-163\\155.9476\\-252.9922\\-163\\154.7126\\-254.9453\\-163\\153.7685\\-256.8984\\-163\\153.3203\\-257.4483\\-163\\151.3672\\-260.3417\\-163\\150.978\\-260.8047\\-163\\149.8504\\-262.7578\\-163\\147.4609\\-266.0663\\-163\\145.5078\\-268.4753\\-163\\143.5547\\-270.7864\\-163\\142.1724\\-272.5234\\-163\\139.6484\\-275.1344\\-163\\138.2025\\-276.4297\\-163\\135.7422\\-278.7921\\-163\\133.7891\\-280.51\\-163\\131.8359\\-281.8464\\-163\\128.8354\\-284.2422\\-163\\125.9766\\-286.4272\\-163\\124.0234\\-287.6534\\-163\\122.0703\\-288.981\\-163\\118.1641\\-291.2153\\-163\\116.2109\\-292.5703\\-163\\114.2578\\-293.4524\\-163\\112.3047\\-294.5938\\-163\\110.3516\\-295.2007\\-163\\108.3984\\-296.1459\\-163\\104.4922\\-297.5247\\-163\\102.5391\\-298.5121\\-163\\100.5859\\-299.0721\\-163\\98.54562\\-299.8672\\-163\\96.67969\\-300.4929\\-163\\92.77344\\-301.2433\\-163\\88.86719\\-302.2012\\-163\\86.91406\\-302.53\\-163\\84.96094\\-302.689\\-163\\79.10156\\-303.0133\\-163\\75.19531\\-303.172\\-163\\73.24219\\-303.1958\\-163\\69.33594\\-303.0637\\-163\\63.47656\\-302.7003\\-163\\61.52344\\-302.5222\\-163"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002382"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "178"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-77.14844\\-303.8682\\-161\\-81.05469\\-303.2424\\-161\\-86.91406\\-302.6466\\-161\\-88.86719\\-302.3477\\-161\\-92.77344\\-301.293\\-161\\-96.67969\\-300.465\\-161\\-102.5391\\-298.2606\\-161\\-104.4922\\-297.1845\\-161\\-106.4453\\-296.553\\-161\\-108.3984\\-295.4361\\-161\\-110.3516\\-294.7198\\-161\\-112.3047\\-293.5164\\-161\\-114.2578\\-292.492\\-161\\-117.57\\-290.1016\\-161\\-118.1641\\-289.603\\-161\\-120.1172\\-288.577\\-161\\-122.0703\\-287.0459\\-161\\-125.9766\\-283.3854\\-161\\-127.4063\\-282.2891\\-161\\-129.8828\\-279.8858\\-161\\-131.2188\\-278.3828\\-161\\-133.1357\\-276.4297\\-161\\-134.9438\\-274.4766\\-161\\-136.5819\\-272.5234\\-161\\-139.6484\\-268.538\\-161\\-142.3815\\-264.7109\\-161\\-143.4026\\-262.7578\\-161\\-144.6006\\-260.8047\\-161\\-145.9227\\-258.8516\\-161\\-146.9534\\-256.8984\\-161\\-148.1841\\-254.9453\\-161\\-148.9702\\-252.9922\\-161\\-150.1169\\-251.0391\\-161\\-150.8494\\-249.0859\\-161\\-152.031\\-247.1328\\-161\\-152.8258\\-245.1797\\-161\\-153.9208\\-243.2266\\-161\\-154.5874\\-241.2734\\-161\\-155.5304\\-239.3203\\-161\\-156.1726\\-237.3672\\-161\\-156.6992\\-235.4141\\-161\\-157.6613\\-233.4609\\-161\\-158.2391\\-231.5078\\-161\\-158.9373\\-229.5547\\-161\\-159.7744\\-227.6016\\-161\\-160.8646\\-223.6953\\-161\\-161.5982\\-221.7422\\-161\\-162.0094\\-219.7891\\-161\\-162.6143\\-215.8828\\-161\\-163.1995\\-213.9297\\-161\\-163.6431\\-211.9766\\-161\\-163.883\\-210.0234\\-161\\-164.2314\\-206.1172\\-161\\-164.5146\\-202.2109\\-161\\-164.5917\\-198.3047\\-161\\-164.3204\\-194.3984\\-161\\-163.9147\\-190.4922\\-161\\-163.568\\-188.5391\\-161\\-162.9118\\-186.5859\\-161\\-162.3706\\-184.6328\\-161\\-162.0255\\-182.6797\\-161\\-161.4746\\-180.7266\\-161\\-160.5164\\-178.7734\\-161\\-159.782\\-176.8203\\-161\\-158.5032\\-174.8672\\-161\\-157.4288\\-172.9141\\-161\\-156.1862\\-170.9609\\-161\\-154.7654\\-169.0078\\-161\\-153.4641\\-167.0547\\-161\\-150.0583\\-163.1484\\-161\\-147.4609\\-160.3988\\-161\\-145.5078\\-158.6301\\-161\\-141.6016\\-155.2817\\-161\\-137.6953\\-152.4318\\-161\\-135.7422\\-151.1174\\-161\\-133.7891\\-150.0442\\-161\\-131.8359\\-148.6964\\-161\\-127.9297\\-146.6561\\-161\\-125.9766\\-146.0142\\-161\\-124.0234\\-144.9456\\-161\\-122.0703\\-144.3131\\-161\\-120.1172\\-143.2402\\-161\\-118.1641\\-142.5279\\-161\\-114.2578\\-140.9026\\-161\\-112.3047\\-140.3808\\-161\\-108.3984\\-138.962\\-161\\-106.4453\\-138.5716\\-161\\-104.4922\\-137.9016\\-161\\-102.5391\\-137.098\\-161\\-100.5859\\-136.6141\\-161\\-96.67969\\-135.2007\\-161\\-92.77344\\-134.2805\\-161\\-90.82031\\-133.6002\\-161\\-88.86719\\-133.1408\\-161\\-84.96094\\-132.6762\\-161\\-83.00781\\-132.3705\\-161\\-81.05469\\-131.8459\\-161\\-77.14844\\-131.1823\\-161\\-73.24219\\-130.8752\\-161\\-69.33594\\-130.7158\\-161\\-63.47656\\-130.7314\\-161\\-59.57031\\-130.8845\\-161\\-55.66406\\-131.1514\\-161\\-53.71094\\-131.4043\\-161\\-49.80469\\-132.418\\-161\\-45.89844\\-133.0136\\-161\\-43.94531\\-133.4819\\-161\\-41.99219\\-134.3906\\-161\\-40.03906\\-135.0334\\-161\\-36.13281\\-136.8763\\-161\\-34.17969\\-137.9925\\-161\\-32.22656\\-138.9622\\-161\\-28.49212\\-141.6641\\-161\\-26.44231\\-143.6172\\-161\\-22.46094\\-147.7656\\-161\\-19.55645\\-151.4297\\-161\\-18.31055\\-153.3828\\-161\\-17.37723\\-155.3359\\-161\\-16.20206\\-157.2891\\-161\\-15.44596\\-159.2422\\-161\\-14.58135\\-161.1953\\-161\\-13.94087\\-163.1484\\-161\\-12.98757\\-167.0547\\-161\\-12.25322\\-169.0078\\-161\\-11.89076\\-170.9609\\-161\\-11.31766\\-176.8203\\-161\\-11.04526\\-178.7734\\-161\\-10.20397\\-182.6797\\-161\\-10.00855\\-184.6328\\-161\\-9.784138\\-188.5391\\-161\\-9.496942\\-192.4453\\-161\\-9.384246\\-196.3516\\-161\\-9.349575\\-202.2109\\-161\\-9.185987\\-208.0703\\-161\\-9.188565\\-213.9297\\-161\\-9.38707\\-217.8359\\-161\\-9.52657\\-221.7422\\-161\\-9.862439\\-225.6484\\-161\\-9.863281\\-227.6016\\-161\\-10.2285\\-231.5078\\-161\\-11.2087\\-235.4141\\-161\\-12.00701\\-241.2734\\-161\\-12.52254\\-243.2266\\-161\\-13.1638\\-245.1797\\-161\\-13.88442\\-249.0859\\-161\\-14.32512\\-251.0391\\-161\\-15.11261\\-252.9922\\-161\\-15.72414\\-254.9453\\-161\\-16.46613\\-256.8984\\-161\\-17.38178\\-258.8516\\-161\\-17.95069\\-260.8047\\-161\\-19.02636\\-262.7578\\-161\\-19.62595\\-264.7109\\-161\\-20.43915\\-266.6641\\-161\\-21.46792\\-268.6172\\-161\\-24.41406\\-273.863\\-161\\-24.89224\\-274.4766\\-161\\-25.78922\\-276.4297\\-161\\-27.07351\\-278.3828\\-161\\-28.22414\\-280.3359\\-161\\-29.65431\\-282.2891\\-161\\-32.86683\\-286.1953\\-161\\-34.17969\\-287.9343\\-161\\-36.13281\\-289.8998\\-161\\-38.08594\\-291.9821\\-161\\-40.12277\\-294.0078\\-161\\-41.99219\\-295.2423\\-161\\-43.94531\\-296.7361\\-161\\-45.89844\\-298.0638\\-161\\-49.80469\\-300.3271\\-161\\-53.71094\\-301.6041\\-161\\-55.66406\\-302.37\\-161\\-59.57031\\-303.027\\-161\\-63.47656\\-303.7961\\-161\\-65.42969\\-304.1095\\-161\\-69.33594\\-304.2871\\-161\\-73.24219\\-304.2264\\-161\\-75.19531\\-304.12\\-161"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002382"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "176"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "16"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.2369\\-161\\57.61719\\-301.5927\\-161\\53.71094\\-300.5748\\-161\\49.80469\\-298.7261\\-161\\47.85156\\-297.4852\\-161\\45.89844\\-296.5217\\-161\\43.94531\\-295.1913\\-161\\42.04413\\-294.0078\\-161\\40.03906\\-292.5462\\-161\\35.2382\\-288.1484\\-161\\33.35286\\-286.1953\\-161\\30.16076\\-282.2891\\-161\\28.32031\\-279.8561\\-161\\25.91378\\-276.4297\\-161\\24.91259\\-274.4766\\-161\\24.41406\\-273.897\\-161\\22.22909\\-270.5703\\-161\\21.29245\\-268.6172\\-161\\20.18458\\-266.6641\\-161\\19.01307\\-262.7578\\-161\\18.01934\\-260.8047\\-161\\16.98589\\-256.8984\\-161\\16.11328\\-254.9453\\-161\\15.63965\\-252.9922\\-161\\15.03276\\-251.0391\\-161\\14.15094\\-249.0859\\-161\\13.29385\\-245.1797\\-161\\12.13458\\-241.2734\\-161\\11.84353\\-239.3203\\-161\\11.43895\\-235.4141\\-161\\11.11577\\-233.4609\\-161\\10.59358\\-231.5078\\-161\\10.21205\\-229.5547\\-161\\10.02441\\-227.6016\\-161\\9.494067\\-219.7891\\-161\\9.173388\\-215.8828\\-161\\8.766352\\-211.9766\\-161\\8.640455\\-210.0234\\-161\\8.57736\\-204.1641\\-161\\8.751502\\-200.2578\\-161\\9.25948\\-194.3984\\-161\\9.539103\\-188.5391\\-161\\10.23687\\-178.7734\\-161\\10.51839\\-176.8203\\-161\\11.0338\\-174.8672\\-161\\11.41357\\-172.9141\\-161\\12.03435\\-169.0078\\-161\\13.40942\\-165.1016\\-161\\13.88239\\-163.1484\\-161\\14.64844\\-161.2671\\-161\\15.66256\\-159.2422\\-161\\16.79402\\-157.2891\\-161\\17.79812\\-155.3359\\-161\\19.1215\\-153.3828\\-161\\20.31558\\-151.4297\\-161\\21.80364\\-149.4766\\-161\\24.41406\\-146.6593\\-161\\27.6331\\-143.6172\\-161\\30.27344\\-141.4127\\-161\\34.17969\\-138.8662\\-161\\39.75866\\-135.8047\\-161\\40.03906\\-135.6053\\-161\\43.94531\\-134.1232\\-161\\45.89844\\-133.2591\\-161\\49.80469\\-132.5679\\-161\\51.75781\\-132.1261\\-161\\53.71094\\-131.537\\-161\\55.66406\\-131.1943\\-161\\59.57031\\-130.8532\\-161\\61.52344\\-130.8174\\-161\\65.42969\\-130.5647\\-161\\67.38281\\-130.5571\\-161\\71.28906\\-130.7019\\-161\\79.10156\\-131.2352\\-161\\81.05469\\-131.4399\\-161\\83.00781\\-131.8313\\-161\\84.96094\\-132.3435\\-161\\86.91406\\-132.6146\\-161\\90.82031\\-132.9709\\-161\\92.77344\\-133.2152\\-161\\94.72656\\-133.5593\\-161\\96.67969\\-134.1417\\-161\\98.63281\\-134.5782\\-161\\102.5391\\-135.3134\\-161\\104.4922\\-136.071\\-161\\106.4453\\-136.6578\\-161\\108.3984\\-137.1348\\-161\\110.3516\\-137.9051\\-161\\112.3047\\-138.5678\\-161\\114.2578\\-138.9167\\-161\\116.2109\\-139.4267\\-161\\118.1641\\-140.2026\\-161\\120.1172\\-140.6816\\-161\\122.0703\\-141.2721\\-161\\124.0234\\-142.2195\\-161\\125.9766\\-142.9173\\-161\\127.9297\\-143.945\\-161\\129.8828\\-144.7158\\-161\\131.8359\\-145.7641\\-161\\133.7891\\-146.6618\\-161\\135.7422\\-147.8245\\-161\\137.6953\\-148.877\\-161\\141.6016\\-151.7969\\-161\\143.5547\\-153.0829\\-161\\145.5078\\-154.5736\\-161\\148.5021\\-157.2891\\-161\\151.3672\\-160.1254\\-161\\154.1451\\-163.1484\\-161\\155.6858\\-165.1016\\-161\\156.8585\\-167.0547\\-161\\157.2266\\-167.4897\\-161\\159.1797\\-170.5548\\-161\\159.5123\\-170.9609\\-161\\160.4701\\-172.9141\\-161\\161.656\\-174.8672\\-161\\162.3403\\-176.8203\\-161\\163.2709\\-178.7734\\-161\\163.9192\\-180.7266\\-161\\164.3823\\-182.6797\\-161\\165.0618\\-184.6328\\-161\\165.5963\\-186.5859\\-161\\166.58\\-194.3984\\-161\\166.9843\\-198.3047\\-161\\167.1276\\-200.2578\\-161\\167.2664\\-204.1641\\-161\\167.1805\\-208.0703\\-161\\167.0869\\-210.0234\\-161\\165.7195\\-223.6953\\-161\\165.4061\\-225.6484\\-161\\164.4129\\-229.5547\\-161\\163.6847\\-233.4609\\-161\\162.3352\\-237.3672\\-161\\161.9605\\-239.3203\\-161\\161.2882\\-241.2734\\-161\\160.3933\\-243.2266\\-161\\159.715\\-245.1797\\-161\\158.565\\-247.1328\\-161\\157.8193\\-249.0859\\-161\\156.6202\\-251.0391\\-161\\155.9602\\-252.9922\\-161\\154.7486\\-254.9453\\-161\\153.792\\-256.8984\\-161\\153.3203\\-257.4911\\-161\\151.3672\\-260.4192\\-161\\151.0392\\-260.8047\\-161\\149.8956\\-262.7578\\-161\\147.4609\\-266.0951\\-161\\142.1724\\-272.5234\\-161\\139.6484\\-275.1253\\-161\\138.1797\\-276.4297\\-161\\135.7422\\-278.7951\\-161\\133.7891\\-280.5388\\-161\\131.8359\\-281.8941\\-161\\128.9063\\-284.2422\\-161\\125.9766\\-286.5231\\-161\\122.0703\\-289.0323\\-161\\118.1641\\-291.2612\\-161\\116.2109\\-292.6323\\-161\\114.2578\\-293.5227\\-161\\112.3047\\-294.6526\\-161\\110.3516\\-295.249\\-161\\108.3984\\-296.2369\\-161\\104.4922\\-297.6301\\-161\\102.5391\\-298.5848\\-161\\100.5859\\-299.1485\\-161\\98.63281\\-299.9634\\-161\\96.67969\\-300.5548\\-161\\92.77344\\-301.293\\-161\\88.86719\\-302.2611\\-161\\86.91406\\-302.5646\\-161\\83.00781\\-302.84\\-161\\75.19531\\-303.2128\\-161\\71.28906\\-303.2302\\-161\\69.33594\\-303.144\\-161\\63.47656\\-302.7522\\-161\\61.52344\\-302.5765\\-161"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002381"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "181"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-77.14844\\-303.9221\\-159\\-81.05469\\-303.2914\\-159\\-83.00781\\-303.0565\\-159\\-86.91406\\-302.689\\-159\\-88.86719\\-302.4139\\-159\\-92.77344\\-301.3619\\-159\\-96.67969\\-300.5589\\-159\\-98.63281\\-299.8903\\-159\\-100.5859\\-299.0534\\-159\\-102.5391\\-298.3877\\-159\\-104.4922\\-297.269\\-159\\-106.4453\\-296.6257\\-159\\-108.3984\\-295.5277\\-159\\-110.3516\\-294.7928\\-159\\-112.3047\\-293.5874\\-159\\-114.2578\\-292.5604\\-159\\-118.1641\\-289.6621\\-159\\-120.1172\\-288.6367\\-159\\-122.0703\\-287.0894\\-159\\-125.9766\\-283.5002\\-159\\-127.493\\-282.2891\\-159\\-129.8828\\-279.9815\\-159\\-131.3194\\-278.3828\\-159\\-133.2545\\-276.4297\\-159\\-135.7422\\-273.6875\\-159\\-137.6953\\-271.1719\\-159\\-139.8161\\-268.6172\\-159\\-141.1036\\-266.6641\\-159\\-142.5093\\-264.7109\\-159\\-144.7397\\-260.8047\\-159\\-146.103\\-258.8516\\-159\\-148.3392\\-254.9453\\-159\\-149.2233\\-252.9922\\-159\\-150.2708\\-251.0391\\-159\\-151.1361\\-249.0859\\-159\\-152.237\\-247.1328\\-159\\-154.1051\\-243.2266\\-159\\-154.7985\\-241.2734\\-159\\-155.785\\-239.3203\\-159\\-156.3155\\-237.3672\\-159\\-156.9843\\-235.4141\\-159\\-157.8829\\-233.4609\\-159\\-158.4432\\-231.5078\\-159\\-159.3541\\-229.5547\\-159\\-160.5067\\-225.6484\\-159\\-161.2312\\-223.6953\\-159\\-161.7942\\-221.7422\\-159\\-162.4453\\-217.8359\\-159\\-162.9132\\-215.8828\\-159\\-163.5164\\-213.9297\\-159\\-163.8318\\-211.9766\\-159\\-164.2589\\-208.0703\\-159\\-164.8452\\-202.2109\\-159\\-164.9558\\-198.3047\\-159\\-164.3638\\-192.4453\\-159\\-163.8156\\-188.5391\\-159\\-163.3599\\-186.5859\\-159\\-162.611\\-184.6328\\-159\\-161.7479\\-180.7266\\-159\\-160.0018\\-176.8203\\-159\\-157.7272\\-172.9141\\-159\\-155.0038\\-169.0078\\-159\\-153.7598\\-167.0547\\-159\\-149.4141\\-162.2509\\-159\\-147.4609\\-160.2391\\-159\\-141.6016\\-155.0009\\-159\\-139.6484\\-153.7411\\-159\\-135.7422\\-150.9477\\-159\\-133.7891\\-149.8552\\-159\\-131.8359\\-148.5705\\-159\\-129.8828\\-147.4679\\-159\\-127.9297\\-146.565\\-159\\-125.9766\\-145.8293\\-159\\-124.0234\\-144.8277\\-159\\-122.0703\\-144.1884\\-159\\-120.1172\\-143.1035\\-159\\-118.1641\\-142.402\\-159\\-116.2109\\-141.4603\\-159\\-114.2578\\-140.7915\\-159\\-112.3047\\-140.2477\\-159\\-110.3516\\-139.4267\\-159\\-108.3984\\-138.8681\\-159\\-106.4453\\-138.4537\\-159\\-104.4922\\-137.6357\\-159\\-102.5391\\-136.9653\\-159\\-100.5859\\-136.4576\\-159\\-98.63281\\-135.6177\\-159\\-96.67969\\-135.0655\\-159\\-94.72656\\-134.6181\\-159\\-92.77344\\-134.0629\\-159\\-90.82031\\-133.4034\\-159\\-88.86719\\-133.0378\\-159\\-84.96094\\-132.5985\\-159\\-83.00781\\-132.2378\\-159\\-81.05469\\-131.6837\\-159\\-77.14844\\-131.1201\\-159\\-75.19531\\-130.9451\\-159\\-71.28906\\-130.7137\\-159\\-67.38281\\-130.6289\\-159\\-63.47656\\-130.6853\\-159\\-59.57031\\-130.8266\\-159\\-55.66406\\-131.1012\\-159\\-53.71094\\-131.3114\\-159\\-51.75781\\-131.762\\-159\\-49.80469\\-132.3244\\-159\\-45.89844\\-132.9654\\-159\\-43.94531\\-133.3836\\-159\\-41.99219\\-134.3201\\-159\\-40.03906\\-134.9826\\-159\\-38.19719\\-135.8047\\-159\\-36.13281\\-136.8432\\-159\\-34.17969\\-137.9774\\-159\\-32.22656\\-138.9464\\-159\\-28.38604\\-141.6641\\-159\\-26.25775\\-143.6172\\-159\\-22.46094\\-147.7378\\-159\\-19.55645\\-151.4297\\-159\\-18.27272\\-153.3828\\-159\\-17.35233\\-155.3359\\-159\\-16.14092\\-157.2891\\-159\\-15.41103\\-159.2422\\-159\\-14.55226\\-161.1953\\-159\\-13.92183\\-163.1484\\-159\\-12.96099\\-167.0547\\-159\\-12.22997\\-169.0078\\-159\\-11.87785\\-170.9609\\-159\\-11.25458\\-176.8203\\-159\\-10.46036\\-180.7266\\-159\\-10.12074\\-182.6797\\-159\\-9.943182\\-184.6328\\-159\\-9.703998\\-188.5391\\-159\\-9.520206\\-192.4453\\-159\\-9.463103\\-196.3516\\-159\\-9.512247\\-202.2109\\-159\\-9.309506\\-208.0703\\-159\\-9.358724\\-210.0234\\-159\\-9.265287\\-213.9297\\-159\\-9.479929\\-219.7891\\-159\\-9.90576\\-225.6484\\-159\\-9.928386\\-227.6016\\-159\\-10.36516\\-231.5078\\-159\\-10.88066\\-233.4609\\-159\\-11.29597\\-235.4141\\-159\\-11.80413\\-239.3203\\-159\\-12.10814\\-241.2734\\-159\\-12.75044\\-243.2266\\-159\\-13.28891\\-245.1797\\-159\\-13.96833\\-249.0859\\-159\\-14.44615\\-251.0391\\-159\\-15.26019\\-252.9922\\-159\\-15.84371\\-254.9453\\-159\\-16.72454\\-256.8984\\-159\\-17.49342\\-258.8516\\-159\\-18.11023\\-260.8047\\-159\\-19.16105\\-262.7578\\-159\\-19.72297\\-264.7109\\-159\\-21.58746\\-268.6172\\-159\\-22.78426\\-270.5703\\-159\\-23.74752\\-272.5234\\-159\\-25.03319\\-274.4766\\-159\\-25.90315\\-276.4297\\-159\\-28.32031\\-280.1747\\-159\\-29.77856\\-282.2891\\-159\\-32.96371\\-286.1953\\-159\\-34.17969\\-287.8201\\-159\\-36.13281\\-289.8125\\-159\\-38.08594\\-291.9498\\-159\\-40.10417\\-294.0078\\-159\\-41.99219\\-295.2625\\-159\\-43.94531\\-296.7989\\-159\\-45.89844\\-298.1548\\-159\\-47.85156\\-299.2102\\-159\\-49.80469\\-300.3835\\-159\\-51.75781\\-300.9875\\-159\\-55.66406\\-302.4315\\-159\\-59.57031\\-303.0669\\-159\\-63.47656\\-303.8682\\-159\\-65.42969\\-304.1404\\-159\\-69.33594\\-304.3196\\-159\\-73.24219\\-304.2531\\-159\\-75.19531\\-304.1404\\-159"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002381"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "163"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.3053\\-159\\57.61719\\-301.6754\\-159\\53.71094\\-300.6357\\-159\\49.80469\\-298.7956\\-159\\47.85156\\-297.6002\\-159\\45.89844\\-296.6181\\-159\\43.94531\\-295.2728\\-159\\41.99219\\-294.1528\\-159\\40.03906\\-292.6522\\-159\\35.12186\\-288.1484\\-159\\33.26095\\-286.1953\\-159\\30.03294\\-282.2891\\-159\\28.32031\\-279.9959\\-159\\25.81202\\-276.4297\\-159\\24.79186\\-274.4766\\-159\\24.41406\\-274.0453\\-159\\22.46094\\-270.9819\\-159\\22.12213\\-270.5703\\-159\\21.23442\\-268.6172\\-159\\20.10257\\-266.6641\\-159\\18.94395\\-262.7578\\-159\\17.92769\\-260.8047\\-159\\17.43214\\-258.8516\\-159\\16.75236\\-256.8984\\-159\\15.96264\\-254.9453\\-159\\15.50603\\-252.9922\\-159\\14.86314\\-251.0391\\-159\\14.06371\\-249.0859\\-159\\13.22266\\-245.1797\\-159\\12.57997\\-243.2266\\-159\\12.0503\\-241.2734\\-159\\11.34536\\-235.4141\\-159\\10.9489\\-233.4609\\-159\\10.41667\\-231.5078\\-159\\10.10665\\-229.5547\\-159\\9.253231\\-217.8359\\-159\\8.640455\\-211.9766\\-159\\8.553341\\-210.0234\\-159\\8.4851\\-204.1641\\-159\\8.627473\\-200.2578\\-159\\9.193372\\-194.3984\\-159\\10.24534\\-178.7734\\-159\\10.54275\\-176.8203\\-159\\11.13669\\-174.8672\\-159\\12.07886\\-169.0078\\-159\\13.38935\\-165.1016\\-159\\13.84523\\-163.1484\\-159\\14.62555\\-161.1953\\-159\\15.61433\\-159.2422\\-159\\17.73999\\-155.3359\\-159\\19.06389\\-153.3828\\-159\\20.21708\\-151.4297\\-159\\21.736\\-149.4766\\-159\\24.41406\\-146.5746\\-159\\28.32031\\-142.8973\\-159\\30.27344\\-141.2858\\-159\\32.631\\-139.7109\\-159\\36.13281\\-137.6485\\-159\\38.08594\\-136.6378\\-159\\40.03906\\-135.4559\\-159\\41.99219\\-134.756\\-159\\45.89844\\-133.1487\\-159\\49.80469\\-132.4317\\-159\\51.75781\\-131.8313\\-159\\53.71094\\-131.3509\\-159\\55.66406\\-131.0521\\-159\\59.57031\\-130.7574\\-159\\61.52344\\-130.7318\\-159\\65.42969\\-130.5346\\-159\\67.38281\\-130.5267\\-159\\71.28906\\-130.6945\\-159\\75.19531\\-130.9122\\-159\\79.10156\\-131.185\\-159\\81.05469\\-131.3704\\-159\\83.00781\\-131.6715\\-159\\84.96094\\-132.2005\\-159\\86.91406\\-132.5515\\-159\\92.77344\\-133.113\\-159\\94.72656\\-133.4034\\-159\\98.63281\\-134.435\\-159\\102.5391\\-135.1777\\-159\\106.4453\\-136.4944\\-159\\108.3984\\-136.9413\\-159\\110.3516\\-137.5708\\-159\\112.3047\\-138.4068\\-159\\116.2109\\-139.243\\-159\\118.1641\\-140.0317\\-159\\122.0703\\-141.114\\-159\\124.0234\\-142.0376\\-159\\125.9766\\-142.7733\\-159\\131.8359\\-145.4688\\-159\\133.7891\\-146.5667\\-159\\135.7422\\-147.4988\\-159\\137.6953\\-148.6896\\-159\\139.6484\\-150.1799\\-159\\143.5547\\-152.8521\\-159\\145.5078\\-154.4026\\-159\\148.6656\\-157.2891\\-159\\153.3203\\-161.993\\-159\\155.8676\\-165.1016\\-159\\158.352\\-169.0078\\-159\\159.7106\\-170.9609\\-159\\160.691\\-172.9141\\-159\\161.8178\\-174.8672\\-159\\162.4824\\-176.8203\\-159\\163.4318\\-178.7734\\-159\\164.4766\\-182.6797\\-159\\165.2261\\-184.6328\\-159\\165.6954\\-186.5859\\-159\\166.4622\\-192.4453\\-159\\167.1276\\-198.3047\\-159\\167.3479\\-202.2109\\-159\\167.4017\\-204.1641\\-159\\167.3479\\-208.0703\\-159\\167.1143\\-211.9766\\-159\\166.212\\-219.7891\\-159\\165.793\\-223.6953\\-159\\165.5099\\-225.6484\\-159\\164.4853\\-229.5547\\-159\\163.7351\\-233.4609\\-159\\162.3752\\-237.3672\\-159\\161.9843\\-239.3203\\-159\\161.341\\-241.2734\\-159\\160.4189\\-243.2266\\-159\\159.7319\\-245.1797\\-159\\158.5926\\-247.1328\\-159\\157.8271\\-249.0859\\-159\\156.6202\\-251.0391\\-159\\155.9683\\-252.9922\\-159\\154.7619\\-254.9453\\-159\\153.802\\-256.8984\\-159\\153.3203\\-257.513\\-159\\149.9057\\-262.7578\\-159\\147.4609\\-266.0881\\-159\\145.5078\\-268.493\\-159\\142.1487\\-272.5234\\-159\\139.6484\\-275.098\\-159\\138.149\\-276.4297\\-159\\135.7422\\-278.7573\\-159\\133.7891\\-280.5403\\-159\\131.8359\\-281.9057\\-159\\128.9524\\-284.2422\\-159\\125.9766\\-286.5769\\-159\\120.1172\\-290.2785\\-159\\118.1641\\-291.3082\\-159\\116.2109\\-292.6724\\-159\\114.2578\\-293.5774\\-159\\112.3047\\-294.7018\\-159\\110.3516\\-295.2907\\-159\\108.3984\\-296.3092\\-159\\106.4453\\-296.9637\\-159\\104.4922\\-297.7319\\-159\\102.5391\\-298.6478\\-159\\100.5859\\-299.233\\-159\\98.63281\\-300.0695\\-159\\96.67969\\-300.6039\\-159\\92.77344\\-301.3254\\-159\\88.86719\\-302.325\\-159\\84.96094\\-302.7469\\-159\\75.19531\\-303.2604\\-159\\71.28906\\-303.282\\-159\\67.38281\\-303.0898\\-159\\61.52344\\-302.6214\\-159"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002380"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "174"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-77.14844\\-303.9851\\-157\\-81.05469\\-303.3633\\-157\\-83.00781\\-303.1013\\-157\\-86.91406\\-302.7239\\-157\\-88.86719\\-302.4734\\-157\\-90.82031\\-302.0497\\-157\\-92.77344\\-301.4447\\-157\\-96.67969\\-300.6312\\-157\\-98.63281\\-300.0454\\-157\\-100.5859\\-299.1348\\-157\\-102.5391\\-298.4888\\-157\\-104.4922\\-297.364\\-157\\-106.4453\\-296.6862\\-157\\-108.3984\\-295.6117\\-157\\-110.3516\\-294.8422\\-157\\-112.3047\\-293.6643\\-157\\-114.2578\\-292.6036\\-157\\-118.1641\\-289.6982\\-157\\-120.1172\\-288.6805\\-157\\-122.0703\\-287.1215\\-157\\-124.0234\\-285.2981\\-157\\-125.9766\\-283.5757\\-157\\-127.5635\\-282.2891\\-157\\-129.8828\\-280.0858\\-157\\-131.4321\\-278.3828\\-157\\-133.7891\\-275.9914\\-157\\-135.7422\\-273.8176\\-157\\-137.6953\\-271.3175\\-157\\-140.0104\\-268.6172\\-157\\-143.8802\\-262.7578\\-157\\-144.9181\\-260.8047\\-157\\-146.268\\-258.8516\\-157\\-147.469\\-256.8984\\-157\\-149.4141\\-253.1898\\-157\\-150.42\\-251.0391\\-157\\-151.4757\\-249.0859\\-157\\-152.4143\\-247.1328\\-157\\-153.4867\\-245.1797\\-157\\-155.0722\\-241.2734\\-157\\-155.9683\\-239.3203\\-157\\-156.4636\\-237.3672\\-157\\-157.3486\\-235.4141\\-157\\-158.0773\\-233.4609\\-157\\-158.6794\\-231.5078\\-157\\-159.6472\\-229.5547\\-157\\-160.7487\\-225.6484\\-157\\-161.5058\\-223.6953\\-157\\-161.9605\\-221.7422\\-157\\-162.6275\\-217.8359\\-157\\-163.2561\\-215.8828\\-157\\-163.7275\\-213.9297\\-157\\-164.6979\\-206.1172\\-157\\-165.2508\\-202.2109\\-157\\-165.332\\-198.3047\\-157\\-165.1877\\-196.3516\\-157\\-164.3273\\-190.4922\\-157\\-163.6635\\-186.5859\\-157\\-162.9542\\-184.6328\\-157\\-162.3628\\-182.6797\\-157\\-161.9374\\-180.7266\\-157\\-161.2037\\-178.7734\\-157\\-159.2024\\-174.8672\\-157\\-157.2266\\-171.8604\\-157\\-156.5337\\-170.9609\\-157\\-155.3784\\-169.0078\\-157\\-153.978\\-167.0547\\-157\\-151.3672\\-164.2597\\-157\\-149.4141\\-162.0951\\-157\\-147.4609\\-160.111\\-157\\-141.6016\\-154.8075\\-157\\-137.6953\\-152.2122\\-157\\-135.7422\\-150.8088\\-157\\-129.8828\\-147.3073\\-157\\-125.9766\\-145.6577\\-157\\-124.0234\\-144.7422\\-157\\-122.0703\\-144.0461\\-157\\-120.1172\\-142.9928\\-157\\-118.1641\\-142.2977\\-157\\-116.2109\\-141.312\\-157\\-112.3047\\-140.1457\\-157\\-110.3516\\-139.2885\\-157\\-106.4453\\-138.3326\\-157\\-104.4922\\-137.443\\-157\\-100.5859\\-136.2989\\-157\\-98.63281\\-135.4228\\-157\\-94.72656\\-134.4884\\-157\\-90.82031\\-133.2669\\-157\\-88.86719\\-132.9469\\-157\\-84.96094\\-132.5754\\-157\\-83.00781\\-132.2216\\-157\\-81.05469\\-131.6962\\-157\\-77.14844\\-131.0445\\-157\\-71.28906\\-130.6588\\-157\\-67.38281\\-130.584\\-157\\-63.47656\\-130.6294\\-157\\-59.57031\\-130.7817\\-157\\-55.66406\\-131.0527\\-157\\-53.71094\\-131.2669\\-157\\-51.75781\\-131.6715\\-157\\-49.80469\\-132.2823\\-157\\-45.89844\\-132.9229\\-157\\-43.94531\\-133.3267\\-157\\-41.99219\\-134.2759\\-157\\-40.03906\\-134.9385\\-157\\-38.0983\\-135.8047\\-157\\-32.22656\\-138.9436\\-157\\-28.36772\\-141.6641\\-157\\-26.24199\\-143.6172\\-157\\-22.46094\\-147.7833\\-157\\-19.60011\\-151.4297\\-157\\-18.33371\\-153.3828\\-157\\-17.37046\\-155.3359\\-157\\-16.15037\\-157.2891\\-157\\-15.42201\\-159.2422\\-157\\-14.55226\\-161.1953\\-157\\-13.89858\\-163.1484\\-157\\-12.94849\\-167.0547\\-157\\-12.25021\\-169.0078\\-157\\-11.88427\\-170.9609\\-157\\-11.49053\\-174.8672\\-157\\-11.23657\\-176.8203\\-157\\-10.74219\\-178.9362\\-157\\-10.09285\\-182.6797\\-157\\-9.689405\\-188.5391\\-157\\-9.563229\\-192.4453\\-157\\-9.557088\\-194.3984\\-157\\-9.658737\\-198.3047\\-157\\-9.61691\\-204.1641\\-157\\-9.412518\\-208.0703\\-157\\-9.303977\\-213.9297\\-157\\-9.39464\\-217.8359\\-157\\-9.640548\\-221.7422\\-157\\-9.941949\\-225.6484\\-157\\-10.02185\\-227.6016\\-157\\-10.22023\\-229.5547\\-157\\-10.5678\\-231.5078\\-157\\-11.08724\\-233.4609\\-157\\-11.39884\\-235.4141\\-157\\-11.86688\\-239.3203\\-157\\-12.25021\\-241.2734\\-157\\-12.93581\\-243.2266\\-157\\-13.39374\\-245.1797\\-157\\-14.07434\\-249.0859\\-157\\-14.64844\\-250.9805\\-157\\-15.43899\\-252.9922\\-157\\-15.96998\\-254.9453\\-157\\-16.93359\\-256.8984\\-157\\-18.31055\\-260.8047\\-157\\-19.28101\\-262.7578\\-157\\-19.82606\\-264.7109\\-157\\-20.84894\\-266.6641\\-157\\-21.69834\\-268.6172\\-157\\-22.95532\\-270.5703\\-157\\-23.85365\\-272.5234\\-157\\-25.15259\\-274.4766\\-157\\-26.03924\\-276.4297\\-157\\-29.93406\\-282.2891\\-157\\-33.01411\\-286.1953\\-157\\-34.17969\\-287.7394\\-157\\-36.13281\\-289.7335\\-157\\-40.08556\\-294.0078\\-157\\-41.99219\\-295.2994\\-157\\-43.94531\\-296.831\\-157\\-45.89844\\-298.2037\\-157\\-47.85156\\-299.2501\\-157\\-49.80469\\-300.4138\\-157\\-51.75781\\-301.0306\\-157\\-55.66406\\-302.4693\\-157\\-59.57031\\-303.1049\\-157\\-63.47656\\-303.9221\\-157\\-65.42969\\-304.1702\\-157\\-67.38281\\-304.2954\\-157\\-71.28906\\-304.3354\\-157\\-75.19531\\-304.1702\\-157"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002380"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "180"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.3477\\-157\\55.66406\\-301.1672\\-157\\53.71094\\-300.6819\\-157\\51.7985\\-299.8672\\-157\\49.80469\\-298.8484\\-157\\47.85156\\-297.7158\\-157\\45.89844\\-296.6903\\-157\\43.94531\\-295.3431\\-157\\41.99219\\-294.2501\\-157\\40.03906\\-292.7451\\-157\\35.03158\\-288.1484\\-157\\33.17759\\-286.1953\\-157\\29.91769\\-282.2891\\-157\\28.32031\\-280.1317\\-157\\25.72692\\-276.4297\\-157\\24.41406\\-274.1963\\-157\\22.46094\\-271.0906\\-157\\22.04333\\-270.5703\\-157\\21.16878\\-268.6172\\-157\\20.03255\\-266.6641\\-157\\18.88489\\-262.7578\\-157\\17.87324\\-260.8047\\-157\\17.34044\\-258.8516\\-157\\16.50682\\-256.8984\\-157\\15.85303\\-254.9453\\-157\\15.38732\\-252.9922\\-157\\13.99148\\-249.0859\\-157\\13.14041\\-245.1797\\-157\\12.45482\\-243.2266\\-157\\11.98774\\-241.2734\\-157\\11.54549\\-237.3672\\-157\\11.26664\\-235.4141\\-157\\10.2983\\-231.5078\\-157\\9.86649\\-227.6016\\-157\\9.487357\\-221.7422\\-157\\9.173388\\-217.8359\\-157\\8.666992\\-213.9297\\-157\\8.565267\\-211.9766\\-157\\8.44254\\-206.1172\\-157\\8.463542\\-202.2109\\-157\\8.694322\\-198.3047\\-157\\9.112384\\-194.3984\\-157\\9.372543\\-192.4453\\-157\\9.480575\\-190.4922\\-157\\9.807478\\-186.5859\\-157\\10.08606\\-180.7266\\-157\\10.28022\\-178.7734\\-157\\10.66142\\-176.8203\\-157\\11.25776\\-174.8672\\-157\\11.82666\\-170.9609\\-157\\12.17831\\-169.0078\\-157\\12.85306\\-167.0547\\-157\\13.40942\\-165.1016\\-157\\13.84995\\-163.1484\\-157\\14.62555\\-161.1953\\-157\\15.59333\\-159.2422\\-157\\17.70154\\-155.3359\\-157\\19.01802\\-153.3828\\-157\\20.12156\\-151.4297\\-157\\21.69279\\-149.4766\\-157\\24.41406\\-146.5192\\-157\\27.43936\\-143.6172\\-157\\30.27344\\-141.1554\\-157\\32.51852\\-139.7109\\-157\\36.13281\\-137.5069\\-157\\38.08594\\-136.5667\\-157\\40.03906\\-135.3563\\-157\\41.99219\\-134.65\\-157\\43.94531\\-133.7516\\-157\\45.89844\\-133.0691\\-157\\49.80469\\-132.2877\\-157\\51.75781\\-131.5904\\-157\\53.71094\\-131.1701\\-157\\55.66406\\-130.9117\\-157\\59.57031\\-130.6474\\-157\\67.38281\\-130.4796\\-157\\71.28906\\-130.6331\\-157\\75.19531\\-130.8486\\-157\\81.05469\\-131.3114\\-157\\83.00781\\-131.5904\\-157\\86.91406\\-132.5754\\-157\\88.86719\\-132.8221\\-157\\92.77344\\-133.0691\\-157\\94.72656\\-133.2835\\-157\\96.67969\\-133.7229\\-157\\98.63281\\-134.3138\\-157\\102.5391\\-135.0655\\-157\\104.4922\\-135.5809\\-157\\106.4453\\-136.3433\\-157\\108.3984\\-136.7865\\-157\\110.3516\\-137.3411\\-157\\112.3047\\-138.2299\\-157\\114.2578\\-138.7121\\-157\\116.2109\\-139.0958\\-157\\118.1641\\-139.8272\\-157\\120.1172\\-140.4524\\-157\\122.0703\\-140.9758\\-157\\127.9297\\-143.4178\\-157\\129.8828\\-144.4681\\-157\\131.8359\\-145.2401\\-157\\133.7891\\-146.4451\\-157\\135.7422\\-147.2476\\-157\\137.6953\\-148.517\\-157\\139.6484\\-149.9902\\-157\\141.6016\\-151.2528\\-157\\143.5547\\-152.7157\\-157\\146.7285\\-155.3359\\-157\\148.8193\\-157.2891\\-157\\152.7843\\-161.1953\\-157\\154.478\\-163.1484\\-157\\156.0241\\-165.1016\\-157\\157.362\\-167.0547\\-157\\158.5685\\-169.0078\\-157\\159.9136\\-170.9609\\-157\\161.1328\\-173.0981\\-157\\161.9576\\-174.8672\\-157\\162.6496\\-176.8203\\-157\\163.5898\\-178.7734\\-157\\164.534\\-182.6797\\-157\\165.2865\\-184.6328\\-157\\165.7469\\-186.5859\\-157\\166.5645\\-192.4453\\-157\\167.1691\\-198.3047\\-157\\167.4269\\-202.2109\\-157\\167.4744\\-206.1172\\-157\\167.4434\\-208.0703\\-157\\167.2531\\-211.9766\\-157\\167.0444\\-213.9297\\-157\\166.5286\\-217.8359\\-157\\165.8372\\-223.6953\\-157\\165.5692\\-225.6484\\-157\\165.1198\\-227.6016\\-157\\164.5235\\-229.5547\\-157\\163.7684\\-233.4609\\-157\\162.4036\\-237.3672\\-157\\161.9962\\-239.3203\\-157\\161.3805\\-241.2734\\-157\\160.4304\\-243.2266\\-157\\159.7402\\-245.1797\\-157\\158.6008\\-247.1328\\-157\\157.8306\\-249.0859\\-157\\156.6241\\-251.0391\\-157\\155.952\\-252.9922\\-157\\154.739\\-254.9453\\-157\\153.792\\-256.8984\\-157\\153.3203\\-257.4962\\-157\\151.3672\\-260.4565\\-157\\151.0639\\-260.8047\\-157\\149.9192\\-262.7578\\-157\\148.5072\\-264.7109\\-157\\145.5078\\-268.4613\\-157\\143.5547\\-270.7185\\-157\\142.0898\\-272.5234\\-157\\139.6484\\-275.0474\\-157\\138.0781\\-276.4297\\-157\\136.0808\\-278.3828\\-157\\133.7891\\-280.5087\\-157\\131.8359\\-281.9057\\-157\\128.9749\\-284.2422\\-157\\125.9766\\-286.6102\\-157\\120.1172\\-290.3285\\-157\\118.1641\\-291.3336\\-157\\116.2109\\-292.7076\\-157\\114.2578\\-293.6004\\-157\\112.3047\\-294.7141\\-157\\110.3516\\-295.3249\\-157\\108.3984\\-296.3556\\-157\\106.4453\\-296.9797\\-157\\102.5391\\-298.6817\\-157\\100.5859\\-299.2985\\-157\\98.63281\\-300.1199\\-157\\96.67969\\-300.6337\\-157\\92.77344\\-301.3691\\-157\\88.86719\\-302.3477\\-157\\84.96094\\-302.7638\\-157\\77.14844\\-303.1923\\-157\\73.24219\\-303.343\\-157\\69.33594\\-303.2514\\-157\\63.47656\\-302.8293\\-157\\61.52344\\-302.6533\\-157"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002379"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "179"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-303.4525\\-155\\-84.96094\\-302.9156\\-155\\-88.86719\\-302.5377\\-155\\-90.82031\\-302.1529\\-155\\-92.77344\\-301.5302\\-155\\-96.67969\\-300.7018\\-155\\-98.63281\\-300.1568\\-155\\-100.5859\\-299.2218\\-155\\-102.5391\\-298.5633\\-155\\-104.4922\\-297.4451\\-155\\-106.4453\\-296.7433\\-155\\-108.3984\\-295.7\\-155\\-110.3516\\-294.8806\\-155\\-114.2578\\-292.6464\\-155\\-118.1641\\-289.759\\-155\\-120.1172\\-288.7131\\-155\\-122.0703\\-287.1593\\-155\\-125.9766\\-283.6428\\-155\\-127.6687\\-282.2891\\-155\\-129.8828\\-280.2097\\-155\\-131.5384\\-278.3828\\-155\\-133.5178\\-276.4297\\-155\\-135.7422\\-274.0008\\-155\\-136.7835\\-272.5234\\-155\\-140.1531\\-268.6172\\-155\\-141.6016\\-266.5115\\-155\\-144.056\\-262.7578\\-155\\-145.1407\\-260.8047\\-155\\-145.5078\\-260.3384\\-155\\-147.7306\\-256.8984\\-155\\-148.6316\\-254.9453\\-155\\-149.7977\\-252.9922\\-155\\-150.5564\\-251.0391\\-155\\-151.7515\\-249.0859\\-155\\-152.595\\-247.1328\\-155\\-153.7452\\-245.1797\\-155\\-154.4457\\-243.2266\\-155\\-155.3758\\-241.2734\\-155\\-156.1114\\-239.3203\\-155\\-156.633\\-237.3672\\-155\\-157.633\\-235.4141\\-155\\-158.2591\\-233.4609\\-155\\-158.9886\\-231.5078\\-155\\-159.8578\\-229.5547\\-155\\-160.3636\\-227.6016\\-155\\-161.7188\\-223.6953\\-155\\-162.4005\\-219.7891\\-155\\-162.8698\\-217.8359\\-155\\-163.5264\\-215.8828\\-155\\-163.8787\\-213.9297\\-155\\-164.3824\\-210.0234\\-155\\-165.3539\\-204.1641\\-155\\-165.5187\\-202.2109\\-155\\-165.5692\\-198.3047\\-155\\-165.4738\\-196.3516\\-155\\-164.9857\\-192.4453\\-155\\-164.5631\\-190.4922\\-155\\-163.8683\\-186.5859\\-155\\-163.3459\\-184.6328\\-155\\-162.5682\\-182.6797\\-155\\-162.0911\\-180.7266\\-155\\-161.4911\\-178.7734\\-155\\-160.4062\\-176.8203\\-155\\-159.4966\\-174.8672\\-155\\-157.2266\\-171.5923\\-155\\-156.7108\\-170.9609\\-155\\-155.6568\\-169.0078\\-155\\-154.1471\\-167.0547\\-155\\-150.4957\\-163.1484\\-155\\-149.4141\\-161.9189\\-155\\-146.6957\\-159.2422\\-155\\-145.5078\\-158.2535\\-155\\-141.6016\\-154.6698\\-155\\-139.6484\\-153.2647\\-155\\-137.6953\\-152.131\\-155\\-135.7422\\-150.7031\\-155\\-130.3613\\-147.5234\\-155\\-129.8828\\-147.1792\\-155\\-127.9297\\-146.4309\\-155\\-124.0234\\-144.6667\\-155\\-122.0703\\-143.8912\\-155\\-120.1172\\-142.8874\\-155\\-118.1641\\-142.1829\\-155\\-116.2109\\-141.1915\\-155\\-112.3047\\-140.0294\\-155\\-110.3516\\-139.1765\\-155\\-106.4453\\-138.1867\\-155\\-104.4922\\-137.2813\\-155\\-102.5391\\-136.7761\\-155\\-100.5859\\-136.1148\\-155\\-98.63281\\-135.2673\\-155\\-94.72656\\-134.3591\\-155\\-92.77344\\-133.6418\\-155\\-90.82031\\-133.1736\\-155\\-88.86719\\-132.8929\\-155\\-84.96094\\-132.5188\\-155\\-83.00781\\-132.1764\\-155\\-81.05469\\-131.6475\\-155\\-79.10156\\-131.2562\\-155\\-77.14844\\-130.9823\\-155\\-73.24219\\-130.7098\\-155\\-69.33594\\-130.555\\-155\\-63.47656\\-130.5658\\-155\\-57.61719\\-130.8515\\-155\\-53.71094\\-131.2184\\-155\\-51.75781\\-131.5904\\-155\\-49.80469\\-132.2354\\-155\\-47.85156\\-132.6294\\-155\\-45.89844\\-132.8929\\-155\\-43.94531\\-133.2945\\-155\\-41.99219\\-134.2408\\-155\\-40.03906\\-134.9214\\-155\\-38.08594\\-135.7818\\-155\\-32.22656\\-138.936\\-155\\-28.38542\\-141.6641\\-155\\-26.24199\\-143.6172\\-155\\-22.46094\\-147.7716\\-155\\-19.61263\\-151.4297\\-155\\-18.40049\\-153.3828\\-155\\-17.39708\\-155.3359\\-155\\-16.18214\\-157.2891\\-155\\-15.43298\\-159.2422\\-155\\-14.49764\\-161.1953\\-155\\-13.87533\\-163.1484\\-155\\-12.94849\\-167.0547\\-155\\-12.27392\\-169.0078\\-155\\-11.89732\\-170.9609\\-155\\-11.49462\\-174.8672\\-155\\-11.21511\\-176.8203\\-155\\-10.35525\\-180.7266\\-155\\-10.08606\\-182.6797\\-155\\-9.820642\\-186.5859\\-155\\-9.62822\\-190.4922\\-155\\-9.633789\\-194.3984\\-155\\-9.7891\\-198.3047\\-155\\-9.770412\\-204.1641\\-155\\-9.419988\\-210.0234\\-155\\-9.346277\\-213.9297\\-155\\-9.427584\\-217.8359\\-155\\-9.665096\\-221.7422\\-155\\-10.12074\\-227.6016\\-155\\-10.3752\\-229.5547\\-155\\-11.23946\\-233.4609\\-155\\-11.94018\\-239.3203\\-155\\-12.40306\\-241.2734\\-155\\-13.0598\\-243.2266\\-155\\-13.48016\\-245.1797\\-155\\-14.18488\\-249.0859\\-155\\-15.57593\\-252.9922\\-155\\-16.08788\\-254.9453\\-155\\-17.10771\\-256.8984\\-155\\-17.70833\\-258.8516\\-155\\-19.37737\\-262.7578\\-155\\-19.94344\\-264.7109\\-155\\-21.01164\\-266.6641\\-155\\-21.81551\\-268.6172\\-155\\-23.10627\\-270.5703\\-155\\-23.98606\\-272.5234\\-155\\-25.26558\\-274.4766\\-155\\-26.21755\\-276.4297\\-155\\-27.41392\\-278.3828\\-155\\-30.11924\\-282.2891\\-155\\-31.53456\\-284.2422\\-155\\-34.17969\\-287.64\\-155\\-36.54436\\-290.1016\\-155\\-40.13853\\-294.0078\\-155\\-41.99219\\-295.3163\\-155\\-43.94531\\-296.8492\\-155\\-45.89844\\-298.2396\\-155\\-47.85156\\-299.2704\\-155\\-49.80469\\-300.4261\\-155\\-51.75781\\-301.05\\-155\\-55.66406\\-302.4978\\-155\\-59.57031\\-303.1244\\-155\\-63.47656\\-303.9729\\-155\\-65.42969\\-304.1988\\-155\\-69.33594\\-304.3658\\-155\\-73.24219\\-304.3196\\-155\\-77.14844\\-304.0664\\-155"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002379"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "185"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.37\\-155\\55.66406\\-301.1796\\-155\\53.71094\\-300.7001\\-155\\51.75781\\-299.9206\\-155\\47.9798\\-297.9141\\-155\\45.89844\\-296.7338\\-155\\43.94531\\-295.3885\\-155\\41.99219\\-294.3166\\-155\\40.03906\\-292.8026\\-155\\34.97617\\-288.1484\\-155\\33.12653\\-286.1953\\-155\\29.8055\\-282.2891\\-155\\28.32031\\-280.3264\\-155\\25.68423\\-276.4297\\-155\\24.41406\\-274.2795\\-155\\22.46094\\-271.1595\\-155\\22.00101\\-270.5703\\-155\\21.13689\\-268.6172\\-155\\20.00026\\-266.6641\\-155\\19.46654\\-264.7109\\-155\\18.83473\\-262.7578\\-155\\17.83539\\-260.8047\\-155\\17.28622\\-258.8516\\-155\\16.36584\\-256.8984\\-155\\15.7666\\-254.9453\\-155\\15.26839\\-252.9922\\-155\\14.49653\\-251.0391\\-155\\13.92917\\-249.0859\\-155\\13.07091\\-245.1797\\-155\\12.36747\\-243.2266\\-155\\11.94018\\-241.2734\\-155\\11.48802\\-237.3672\\-155\\11.17974\\-235.4141\\-155\\10.62012\\-233.4609\\-155\\10.21205\\-231.5078\\-155\\9.807083\\-227.6016\\-155\\9.571309\\-223.6953\\-155\\9.118895\\-217.8359\\-155\\8.565267\\-213.9297\\-155\\8.565267\\-211.9766\\-155\\8.432241\\-206.1172\\-155\\8.432241\\-202.2109\\-155\\8.4851\\-200.2578\\-155\\8.640455\\-198.3047\\-155\\9.07668\\-194.3984\\-155\\9.367536\\-192.4453\\-155\\9.86236\\-186.5859\\-155\\10.14985\\-180.7266\\-155\\10.38537\\-178.7734\\-155\\11.35685\\-174.8672\\-155\\11.88427\\-170.9609\\-155\\12.2635\\-169.0078\\-155\\12.94663\\-167.0547\\-155\\13.87293\\-163.1484\\-155\\14.61088\\-161.1953\\-155\\16.56371\\-157.2891\\-155\\18.55469\\-153.91\\-155\\18.9927\\-153.3828\\-155\\20.08725\\-151.4297\\-155\\21.65706\\-149.4766\\-155\\24.41406\\-146.485\\-155\\27.38473\\-143.6172\\-155\\30.27344\\-141.0768\\-155\\32.41984\\-139.7109\\-155\\34.17969\\-138.6808\\-155\\36.13281\\-137.4173\\-155\\38.08594\\-136.5039\\-155\\40.03906\\-135.2747\\-155\\41.99219\\-134.5752\\-155\\43.94531\\-133.6256\\-155\\45.89844\\-133.0206\\-155\\47.85156\\-132.6619\\-155\\49.80469\\-132.1641\\-155\\51.75781\\-131.4399\\-155\\53.71094\\-130.9991\\-155\\59.57031\\-130.5267\\-155\\61.52344\\-130.4218\\-155\\67.38281\\-130.4129\\-155\\73.24219\\-130.6608\\-155\\79.10156\\-131.0846\\-155\\83.00781\\-131.4967\\-155\\84.96094\\-131.9536\\-155\\86.91406\\-132.6881\\-155\\88.86719\\-132.9654\\-155\\90.82031\\-133.0941\\-155\\92.77344\\-133.0715\\-155\\94.72656\\-133.1779\\-155\\96.67969\\-133.6111\\-155\\98.63281\\-134.3028\\-155\\100.5859\\-134.5665\\-155\\102.5391\\-134.9792\\-155\\104.4922\\-135.5323\\-155\\106.4453\\-136.2899\\-155\\108.3984\\-136.6852\\-155\\110.3516\\-137.1956\\-155\\112.3047\\-138.1086\\-155\\116.2109\\-138.9695\\-155\\118.1641\\-139.5947\\-155\\120.1172\\-140.3432\\-155\\122.0703\\-140.8629\\-155\\124.0234\\-141.5808\\-155\\125.9766\\-142.505\\-155\\127.9297\\-143.2402\\-155\\129.8828\\-144.3408\\-155\\131.8359\\-145.069\\-155\\133.7891\\-146.2631\\-155\\135.7422\\-147.0489\\-155\\136.3604\\-147.5234\\-155\\141.6016\\-151.0403\\-155\\143.5547\\-152.5565\\-155\\146.9175\\-155.3359\\-155\\148.9709\\-157.2891\\-155\\153.3203\\-161.5555\\-155\\156.1969\\-165.1016\\-155\\157.6084\\-167.0547\\-155\\158.785\\-169.0078\\-155\\160.0978\\-170.9609\\-155\\161.2956\\-172.9141\\-155\\162.7849\\-176.8203\\-155\\163.7079\\-178.7734\\-155\\164.6352\\-182.6797\\-155\\165.3096\\-184.6328\\-155\\165.7662\\-186.5859\\-155\\166.0944\\-188.5391\\-155\\166.6277\\-192.4453\\-155\\166.7668\\-194.3984\\-155\\167.2818\\-198.3047\\-155\\167.4171\\-200.2578\\-155\\167.546\\-206.1172\\-155\\167.5166\\-208.0703\\-155\\167.335\\-211.9766\\-155\\167.1666\\-213.9297\\-155\\166.6054\\-217.8359\\-155\\165.6042\\-225.6484\\-155\\165.1611\\-227.6016\\-155\\164.5416\\-229.5547\\-155\\163.7756\\-233.4609\\-155\\162.4161\\-237.3672\\-155\\162.0028\\-239.3203\\-155\\161.3946\\-241.2734\\-155\\160.4117\\-243.2266\\-155\\159.7319\\-245.1797\\-155\\158.5845\\-247.1328\\-155\\157.8227\\-249.0859\\-155\\156.6074\\-251.0391\\-155\\155.9309\\-252.9922\\-155\\154.6901\\-254.9453\\-155\\153.7685\\-256.8984\\-155\\153.3203\\-257.4577\\-155\\151.3672\\-260.4192\\-155\\151.0392\\-260.8047\\-155\\149.8853\\-262.7578\\-155\\148.4819\\-264.7109\\-155\\146.9265\\-266.6641\\-155\\143.5547\\-270.5974\\-155\\142.0139\\-272.5234\\-155\\139.6484\\-274.979\\-155\\137.9661\\-276.4297\\-155\\136.0085\\-278.3828\\-155\\133.7891\\-280.4192\\-155\\131.8359\\-281.8828\\-155\\128.9749\\-284.2422\\-155\\125.9766\\-286.6202\\-155\\120.1172\\-290.3406\\-155\\118.1641\\-291.3596\\-155\\116.2109\\-292.7192\\-155\\114.2578\\-293.6107\\-155\\112.3047\\-294.7264\\-155\\110.3516\\-295.3466\\-155\\108.3984\\-296.3662\\-155\\106.4453\\-296.9959\\-155\\102.5391\\-298.7131\\-155\\100.5859\\-299.3351\\-155\\98.63281\\-300.1661\\-155\\96.67969\\-300.661\\-155\\92.77344\\-301.4066\\-155\\90.82031\\-301.95\\-155\\88.86719\\-302.37\\-155\\86.91406\\-302.6283\\-155\\83.00781\\-302.8881\\-155\\77.14844\\-303.2215\\-155\\73.24219\\-303.3558\\-155\\69.33594\\-303.2637\\-155\\63.47656\\-302.84\\-155\\61.52344\\-302.6648\\-155"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002378"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "175"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-303.882\\-153\\-81.05469\\-303.5258\\-153\\-84.96094\\-302.956\\-153\\-88.86719\\-302.591\\-153\\-90.82031\\-302.2369\\-153\\-92.77344\\-301.6339\\-153\\-96.67969\\-300.7472\\-153\\-98.63281\\-300.2253\\-153\\-100.5859\\-299.3033\\-153\\-102.5391\\-298.6208\\-153\\-104.4922\\-297.5221\\-153\\-106.4453\\-296.7738\\-153\\-108.3984\\-295.7687\\-153\\-110.3516\\-294.9107\\-153\\-114.2578\\-292.6849\\-153\\-118.1641\\-289.8108\\-153\\-120.1172\\-288.7357\\-153\\-122.0703\\-287.1845\\-153\\-125.9766\\-283.6989\\-153\\-127.7801\\-282.2891\\-153\\-129.8828\\-280.3272\\-153\\-131.6678\\-278.3828\\-153\\-133.6507\\-276.4297\\-153\\-135.7422\\-274.1568\\-153\\-136.8745\\-272.5234\\-153\\-140.2762\\-268.6172\\-153\\-141.7188\\-266.6641\\-153\\-142.8415\\-264.7109\\-153\\-144.2162\\-262.7578\\-153\\-147.4609\\-257.5223\\-153\\-147.9256\\-256.8984\\-153\\-148.7914\\-254.9453\\-153\\-149.9767\\-252.9922\\-153\\-150.7265\\-251.0391\\-153\\-151.9624\\-249.0859\\-153\\-152.795\\-247.1328\\-153\\-153.9263\\-245.1797\\-153\\-154.6161\\-243.2266\\-153\\-155.6458\\-241.2734\\-153\\-156.8569\\-237.3672\\-153\\-157.8362\\-235.4141\\-153\\-158.4446\\-233.4609\\-153\\-159.3667\\-231.5078\\-153\\-160.5756\\-227.6016\\-153\\-161.368\\-225.6484\\-153\\-161.8863\\-223.6953\\-153\\-162.5527\\-219.7891\\-153\\-163.1851\\-217.8359\\-153\\-163.7121\\-215.8828\\-153\\-164.5755\\-210.0234\\-153\\-165.3539\\-206.1172\\-153\\-165.6953\\-202.2109\\-153\\-165.7323\\-198.3047\\-153\\-165.5444\\-194.3984\\-153\\-165.332\\-192.4453\\-153\\-164.4052\\-188.5391\\-153\\-163.6258\\-184.6328\\-153\\-162.8548\\-182.6797\\-153\\-161.6899\\-178.7734\\-153\\-160.6132\\-176.8203\\-153\\-159.715\\-174.8672\\-153\\-156.9336\\-170.9609\\-153\\-155.8459\\-169.0078\\-153\\-154.2969\\-167.0547\\-153\\-150.705\\-163.1484\\-153\\-149.4141\\-161.6644\\-153\\-146.9219\\-159.2422\\-153\\-145.5078\\-158.1235\\-153\\-141.6016\\-154.561\\-153\\-139.6484\\-153.1219\\-153\\-137.6953\\-152.0697\\-153\\-135.7422\\-150.6359\\-153\\-133.7891\\-149.439\\-153\\-130.4785\\-147.5234\\-153\\-129.8828\\-147.1069\\-153\\-127.9297\\-146.3749\\-153\\-125.9766\\-145.4126\\-153\\-122.0703\\-143.7588\\-153\\-120.1172\\-142.7956\\-153\\-118.1641\\-142.0586\\-153\\-116.2109\\-141.0842\\-153\\-114.2578\\-140.5197\\-153\\-112.3047\\-139.8559\\-153\\-110.3516\\-139.0705\\-153\\-108.3984\\-138.6277\\-153\\-106.4453\\-137.9965\\-153\\-104.4922\\-137.1344\\-153\\-102.5391\\-136.638\\-153\\-98.63281\\-135.1664\\-153\\-94.72656\\-134.2381\\-153\\-92.77344\\-133.5008\\-153\\-90.82031\\-133.113\\-153\\-84.96094\\-132.3899\\-153\\-81.05469\\-131.4399\\-153\\-77.14844\\-130.9357\\-153\\-71.28906\\-130.555\\-153\\-69.33594\\-130.4978\\-153\\-63.47656\\-130.5057\\-153\\-57.61719\\-130.8128\\-153\\-53.71094\\-131.1859\\-153\\-51.75781\\-131.537\\-153\\-49.80469\\-132.2123\\-153\\-47.85156\\-132.6367\\-153\\-45.89844\\-132.8929\\-153\\-43.94531\\-133.2982\\-153\\-41.99219\\-134.2272\\-153\\-40.03906\\-134.9104\\-153\\-38.03759\\-135.8047\\-153\\-32.22656\\-138.9436\\-153\\-28.40245\\-141.6641\\-153\\-26.24199\\-143.6172\\-153\\-22.46094\\-147.7432\\-153\\-19.60589\\-151.4297\\-153\\-18.38707\\-153.3828\\-153\\-17.40106\\-155.3359\\-153\\-16.17237\\-157.2891\\-153\\-15.43511\\-159.2422\\-153\\-14.45737\\-161.1953\\-153\\-13.85679\\-163.1484\\-153\\-12.96099\\-167.0547\\-153\\-12.27392\\-169.0078\\-153\\-11.90848\\-170.9609\\-153\\-11.47729\\-174.8672\\-153\\-11.18382\\-176.8203\\-153\\-10.33579\\-180.7266\\-153\\-10.08606\\-182.6797\\-153\\-9.838982\\-186.5859\\-153\\-9.665096\\-190.4922\\-153\\-9.658737\\-192.4453\\-153\\-9.816778\\-196.3516\\-153\\-9.829812\\-200.2578\\-153\\-9.908537\\-204.1641\\-153\\-9.61691\\-208.0703\\-153\\-9.431112\\-211.9766\\-153\\-9.427374\\-215.8828\\-153\\-9.579145\\-219.7891\\-153\\-10.03689\\-225.6484\\-153\\-10.5678\\-229.5547\\-153\\-11.05656\\-231.5078\\-153\\-11.35748\\-233.4609\\-153\\-11.77154\\-237.3672\\-153\\-12.04227\\-239.3203\\-153\\-12.53756\\-241.2734\\-153\\-13.16699\\-243.2266\\-153\\-13.88889\\-247.1328\\-153\\-14.31418\\-249.0859\\-153\\-15.10976\\-251.0391\\-153\\-16.24474\\-254.9453\\-153\\-17.25443\\-256.8984\\-153\\-17.80389\\-258.8516\\-153\\-18.79519\\-260.8047\\-153\\-20.06572\\-264.7109\\-153\\-21.14922\\-266.6641\\-153\\-21.94913\\-268.6172\\-153\\-23.23676\\-270.5703\\-153\\-24.16487\\-272.5234\\-153\\-25.37893\\-274.4766\\-153\\-27.53789\\-278.3828\\-153\\-30.36296\\-282.2891\\-153\\-31.65409\\-284.2422\\-153\\-34.17969\\-287.5105\\-153\\-40.22382\\-294.0078\\-153\\-41.99219\\-295.2581\\-153\\-43.94531\\-296.8428\\-153\\-45.89844\\-298.2418\\-153\\-47.85156\\-299.274\\-153\\-49.80469\\-300.4261\\-153\\-51.75781\\-301.0621\\-153\\-55.66406\\-302.5179\\-153\\-59.57031\\-303.136\\-153\\-63.47656\\-303.9851\\-153\\-65.42969\\-304.2081\\-153\\-69.33594\\-304.3949\\-153\\-73.24219\\-304.3583\\-153\\-77.14844\\-304.12\\-153"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002378"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "181"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.3607\\-153\\55.66406\\-301.188\\-153\\53.71094\\-300.7116\\-153\\51.75781\\-299.9505\\-153\\47.90139\\-297.9141\\-153\\45.89844\\-296.7599\\-153\\43.94531\\-295.4116\\-153\\41.99219\\-294.3546\\-153\\40.03906\\-292.8149\\-153\\36.13281\\-289.1987\\-153\\34.93143\\-288.1484\\-153\\33.08823\\-286.1953\\-153\\29.73165\\-282.2891\\-153\\28.19454\\-280.3359\\-153\\26.99498\\-278.3828\\-153\\25.63794\\-276.4297\\-153\\23.33416\\-272.5234\\-153\\21.97266\\-270.5703\\-153\\21.14077\\-268.6172\\-153\\20.00026\\-266.6641\\-153\\19.46023\\-264.7109\\-153\\18.79519\\-262.7578\\-153\\17.80547\\-260.8047\\-153\\17.24718\\-258.8516\\-153\\16.28675\\-256.8984\\-153\\15.16272\\-252.9922\\-153\\14.39398\\-251.0391\\-153\\13.8707\\-249.0859\\-153\\12.99741\\-245.1797\\-153\\12.29795\\-243.2266\\-153\\11.8953\\-241.2734\\-153\\11.43895\\-237.3672\\-153\\11.0919\\-235.4141\\-153\\10.50647\\-233.4609\\-153\\10.14245\\-231.5078\\-153\\9.756369\\-227.6016\\-153\\9.520206\\-223.6953\\-153\\9.083998\\-217.8359\\-153\\8.565267\\-213.9297\\-153\\8.602061\\-211.9766\\-153\\8.47425\\-208.0703\\-153\\8.422074\\-204.1641\\-153\\8.47425\\-200.2578\\-153\\8.614676\\-198.3047\\-153\\9.542989\\-190.4922\\-153\\9.922986\\-186.5859\\-153\\10.09285\\-182.6797\\-153\\10.25391\\-180.7266\\-153\\10.54275\\-178.7734\\-153\\11.43185\\-174.8672\\-153\\11.92882\\-170.9609\\-153\\12.33082\\-169.0078\\-153\\13.01147\\-167.0547\\-153\\13.89146\\-163.1484\\-153\\14.64844\\-161.1628\\-153\\16.50611\\-157.2891\\-153\\18.55469\\-153.8581\\-153\\18.95551\\-153.3828\\-153\\20.04046\\-151.4297\\-153\\22.46094\\-148.5201\\-153\\24.41406\\-146.4575\\-153\\27.3234\\-143.6172\\-153\\30.27344\\-141.028\\-153\\32.31908\\-139.7109\\-153\\34.17969\\-138.6265\\-153\\36.13281\\-137.3437\\-153\\38.08594\\-136.4261\\-153\\40.03906\\-135.206\\-153\\41.99219\\-134.5086\\-153\\43.94531\\-133.5354\\-153\\45.89844\\-132.9654\\-153\\47.85156\\-132.6146\\-153\\51.75781\\-131.3445\\-153\\53.71094\\-130.9582\\-153\\57.61719\\-130.5653\\-153\\61.52344\\-130.2622\\-153\\67.38281\\-130.3247\\-153\\73.24219\\-130.6017\\-153\\79.10156\\-131.0049\\-153\\83.00781\\-131.3704\\-153\\84.96094\\-131.7487\\-153\\86.91406\\-132.6635\\-153\\88.86719\\-132.9286\\-153\\90.82031\\-133.0295\\-153\\94.72656\\-133.0812\\-153\\96.67969\\-133.5673\\-153\\98.63281\\-134.3364\\-153\\100.5859\\-134.435\\-153\\102.5391\\-134.8943\\-153\\104.4922\\-135.4814\\-153\\106.4453\\-136.2579\\-153\\108.3984\\-136.6256\\-153\\110.3516\\-137.1321\\-153\\112.3047\\-138.1387\\-153\\116.2109\\-138.8681\\-153\\118.1641\\-139.3642\\-153\\120.1172\\-140.2058\\-153\\124.0234\\-141.3801\\-153\\125.9766\\-142.3665\\-153\\127.9297\\-143.0944\\-153\\129.8828\\-144.213\\-153\\131.8359\\-144.9377\\-153\\133.7891\\-146.0951\\-153\\135.7422\\-146.9098\\-153\\136.599\\-147.5234\\-153\\139.639\\-149.4766\\-153\\142.3712\\-151.4297\\-153\\147.1139\\-155.3359\\-153\\149.4141\\-157.5291\\-153\\153.3203\\-161.3409\\-153\\155.2734\\-163.7462\\-153\\157.2266\\-166.2751\\-153\\159.1797\\-169.2448\\-153\\161.3957\\-172.9141\\-153\\162.9232\\-176.8203\\-153\\163.7915\\-178.7734\\-153\\164.2722\\-180.7266\\-153\\165.3959\\-184.6328\\-153\\166.1161\\-188.5391\\-153\\166.6794\\-192.4453\\-153\\166.7987\\-194.3984\\-153\\167.1573\\-196.3516\\-153\\167.4071\\-198.3047\\-153\\167.511\\-200.2578\\-153\\167.6018\\-206.1172\\-153\\167.5078\\-210.0234\\-153\\167.2279\\-213.9297\\-153\\166.9922\\-215.8286\\-153\\166.3882\\-219.7891\\-153\\165.6304\\-225.6484\\-153\\165.2007\\-227.6016\\-153\\164.5538\\-229.5547\\-153\\163.7827\\-233.4609\\-153\\162.4204\\-237.3672\\-153\\161.9962\\-239.3203\\-153\\161.368\\-241.2734\\-153\\160.3933\\-243.2266\\-153\\159.7064\\-245.1797\\-153\\158.5381\\-247.1328\\-153\\157.7838\\-249.0859\\-153\\156.5734\\-251.0391\\-153\\155.9095\\-252.9922\\-153\\154.668\\-254.9453\\-153\\153.734\\-256.8984\\-153\\153.3203\\-257.4076\\-153\\151.3672\\-260.3417\\-153\\150.9751\\-260.8047\\-153\\149.8286\\-262.7578\\-153\\148.4375\\-264.7109\\-153\\146.8555\\-266.6641\\-153\\145.104\\-268.6172\\-153\\141.9119\\-272.5234\\-153\\139.6484\\-274.8657\\-153\\137.8706\\-276.4297\\-153\\135.9175\\-278.3828\\-153\\133.78\\-280.3359\\-153\\129.8828\\-283.4195\\-153\\128.9444\\-284.2422\\-153\\125.9766\\-286.6102\\-153\\120.1172\\-290.3406\\-153\\118.1641\\-291.3711\\-153\\116.2109\\-292.7268\\-153\\114.2578\\-293.6211\\-153\\112.3047\\-294.7418\\-153\\110.3516\\-295.3555\\-153\\108.3984\\-296.3898\\-153\\106.4453\\-297.0122\\-153\\102.5391\\-298.7444\\-153\\100.5859\\-299.373\\-153\\98.63281\\-300.2014\\-153\\96.67969\\-300.6724\\-153\\92.77344\\-301.4202\\-153\\90.82031\\-301.9931\\-153\\88.86719\\-302.3793\\-153\\86.91406\\-302.6351\\-153\\84.96094\\-302.7804\\-153\\77.14844\\-303.2336\\-153\\75.19531\\-303.3135\\-153\\71.28906\\-303.333\\-153\\67.38281\\-303.1398\\-153\\61.52344\\-302.6712\\-153"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002377"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "186"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-303.9221\\-151\\-81.05469\\-303.5781\\-151\\-84.96094\\-303.0022\\-151\\-88.86719\\-302.6283\\-151\\-90.82031\\-302.302\\-151\\-94.72656\\-301.2006\\-151\\-98.63281\\-300.2693\\-151\\-100.5859\\-299.3611\\-151\\-102.5391\\-298.6532\\-151\\-104.4922\\-297.5908\\-151\\-106.4453\\-296.7972\\-151\\-110.3516\\-294.9294\\-151\\-114.2578\\-292.7151\\-151\\-116.2109\\-291.2234\\-151\\-118.1641\\-289.8517\\-151\\-120.1172\\-288.758\\-151\\-122.0703\\-287.1971\\-151\\-125.9766\\-283.7715\\-151\\-127.8845\\-282.2891\\-151\\-129.8828\\-280.431\\-151\\-131.7775\\-278.3828\\-151\\-133.7636\\-276.4297\\-151\\-135.7422\\-274.2884\\-151\\-136.9996\\-272.5234\\-151\\-138.6317\\-270.5703\\-151\\-140.3809\\-268.6172\\-151\\-141.8732\\-266.6641\\-151\\-142.9321\\-264.7109\\-151\\-144.3298\\-262.7578\\-151\\-145.6299\\-260.8047\\-151\\-146.7566\\-258.8516\\-151\\-148.0753\\-256.8984\\-151\\-148.9607\\-254.9453\\-151\\-150.116\\-252.9922\\-151\\-150.8955\\-251.0391\\-151\\-152.1163\\-249.0859\\-151\\-153.0016\\-247.1328\\-151\\-154.0728\\-245.1797\\-151\\-154.7985\\-243.2266\\-151\\-155.8211\\-241.2734\\-151\\-156.3436\\-239.3203\\-151\\-158.0068\\-235.4141\\-151\\-158.6391\\-233.4609\\-151\\-159.6225\\-231.5078\\-151\\-160.794\\-227.6016\\-151\\-161.5851\\-225.6484\\-151\\-162.0147\\-223.6953\\-151\\-162.3251\\-221.7422\\-151\\-162.7441\\-219.7891\\-151\\-163.4294\\-217.8359\\-151\\-163.8449\\-215.8828\\-151\\-164.4244\\-211.9766\\-151\\-164.8072\\-210.0234\\-151\\-165.2982\\-208.0703\\-151\\-165.561\\-206.1172\\-151\\-165.8331\\-202.2109\\-151\\-165.8825\\-200.2578\\-151\\-165.8273\\-196.3516\\-151\\-165.5444\\-192.4453\\-151\\-165.2007\\-190.4922\\-151\\-164.6242\\-188.5391\\-151\\-163.8128\\-184.6328\\-151\\-163.1705\\-182.6797\\-151\\-162.3628\\-180.7266\\-151\\-161.8448\\-178.7734\\-151\\-159.8925\\-174.8672\\-151\\-158.4503\\-172.9141\\-151\\-155.9947\\-169.0078\\-151\\-154.4411\\-167.0547\\-151\\-152.7613\\-165.1016\\-151\\-150.897\\-163.1484\\-151\\-149.4141\\-161.4374\\-151\\-147.1382\\-159.2422\\-151\\-145.5078\\-157.9335\\-151\\-141.6016\\-154.4908\\-151\\-139.6484\\-153.031\\-151\\-137.6953\\-152.0433\\-151\\-135.7422\\-150.613\\-151\\-133.7891\\-149.3545\\-151\\-130.5762\\-147.5234\\-151\\-129.8828\\-147.0485\\-151\\-127.9297\\-146.338\\-151\\-125.9766\\-145.3171\\-151\\-124.0234\\-144.566\\-151\\-120.1172\\-142.7122\\-151\\-118.1641\\-141.9203\\-151\\-116.2109\\-140.9834\\-151\\-114.2578\\-140.425\\-151\\-110.3516\\-138.9649\\-151\\-108.3984\\-138.5264\\-151\\-104.4922\\-137.0215\\-151\\-102.5391\\-136.4944\\-151\\-100.5859\\-135.6693\\-151\\-98.63281\\-135.0921\\-151\\-94.72656\\-134.1256\\-151\\-92.77344\\-133.4302\\-151\\-90.82031\\-133.0739\\-151\\-86.91406\\-132.625\\-151\\-84.96094\\-132.3009\\-151\\-83.00781\\-131.7345\\-151\\-81.05469\\-131.3038\\-151\\-79.10156\\-131.0823\\-151\\-75.19531\\-130.7567\\-151\\-71.28906\\-130.4978\\-151\\-67.38281\\-130.401\\-151\\-63.47656\\-130.419\\-151\\-59.57031\\-130.6258\\-151\\-55.66406\\-130.9451\\-151\\-53.71094\\-131.1537\\-151\\-51.75781\\-131.5066\\-151\\-49.80469\\-132.1984\\-151\\-47.85156\\-132.6439\\-151\\-45.89844\\-132.9109\\-151\\-43.94531\\-133.3435\\-151\\-41.99219\\-134.2381\\-151\\-40.03906\\-134.9263\\-151\\-38.08594\\-135.797\\-151\\-32.22656\\-138.9642\\-151\\-28.43896\\-141.6641\\-151\\-26.27458\\-143.6172\\-151\\-22.46094\\-147.6958\\-151\\-19.58101\\-151.4297\\-151\\-18.31055\\-153.3828\\-151\\-17.38175\\-155.3359\\-151\\-16.1438\\-157.2891\\-151\\-15.42426\\-159.2422\\-151\\-14.4322\\-161.1953\\-151\\-13.84523\\-163.1484\\-151\\-12.97331\\-167.0547\\-151\\-12.27392\\-169.0078\\-151\\-11.90848\\-170.9609\\-151\\-11.48395\\-174.8672\\-151\\-11.18382\\-176.8203\\-151\\-10.33579\\-180.7266\\-151\\-10.09971\\-182.6797\\-151\\-9.857321\\-186.5859\\-151\\-9.71398\\-190.4922\\-151\\-9.732441\\-192.4453\\-151\\-9.880786\\-196.3516\\-151\\-9.86649\\-200.2578\\-151\\-9.975228\\-204.1641\\-151\\-9.679033\\-208.0703\\-151\\-9.470016\\-213.9297\\-151\\-9.6268\\-219.7891\\-151\\-10.10665\\-225.6484\\-151\\-10.53049\\-227.6016\\-151\\-10.78033\\-229.5547\\-151\\-11.19626\\-231.5078\\-151\\-11.45583\\-233.4609\\-151\\-11.84353\\-237.3672\\-151\\-12.1563\\-239.3203\\-151\\-13.24142\\-243.2266\\-151\\-13.9608\\-247.1328\\-151\\-14.45875\\-249.0859\\-151\\-15.27544\\-251.0391\\-151\\-15.79255\\-252.9922\\-151\\-16.45296\\-254.9453\\-151\\-17.37968\\-256.8984\\-151\\-17.90926\\-258.8516\\-151\\-18.97608\\-260.8047\\-151\\-19.54309\\-262.7578\\-151\\-20.21976\\-264.7109\\-151\\-21.27041\\-266.6641\\-151\\-22.11217\\-268.6172\\-151\\-23.35394\\-270.5703\\-151\\-24.39135\\-272.5234\\-151\\-27.6753\\-278.3828\\-151\\-30.27344\\-281.9362\\-151\\-30.59156\\-282.2891\\-151\\-31.798\\-284.2422\\-151\\-33.23403\\-286.1953\\-151\\-34.84613\\-288.1484\\-151\\-40.30462\\-294.0078\\-151\\-41.99219\\-295.2254\\-151\\-43.94531\\-296.8177\\-151\\-45.89844\\-298.2171\\-151\\-47.85156\\-299.2538\\-151\\-49.80469\\-300.4261\\-151\\-51.75781\\-301.0621\\-151\\-55.66406\\-302.53\\-151\\-59.57031\\-303.1282\\-151\\-63.47656\\-303.9729\\-151\\-65.42969\\-304.2081\\-151\\-69.33594\\-304.402\\-151\\-73.24219\\-304.3732\\-151\\-77.14844\\-304.1604\\-151"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002377"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "179"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.3416\\-151\\55.66406\\-301.1837\\-151\\53.71094\\-300.7051\\-151\\51.75781\\-299.9505\\-151\\47.86163\\-297.9141\\-151\\45.89844\\-296.7718\\-151\\43.94531\\-295.4252\\-151\\41.99219\\-294.3661\\-151\\40.03906\\-292.8273\\-151\\36.13281\\-289.2054\\-151\\34.92273\\-288.1484\\-151\\33.07547\\-286.1953\\-151\\29.68618\\-282.2891\\-151\\28.125\\-280.3359\\-151\\26.95184\\-278.3828\\-151\\25.60484\\-276.4297\\-151\\23.33984\\-272.5234\\-151\\22.00396\\-270.5703\\-151\\21.17283\\-268.6172\\-151\\20.02276\\-266.6641\\-151\\19.46023\\-264.7109\\-151\\18.78231\\-262.7578\\-151\\17.78886\\-260.8047\\-151\\17.21398\\-258.8516\\-151\\16.23457\\-256.8984\\-151\\15.0791\\-252.9922\\-151\\14.30107\\-251.0391\\-151\\13.8172\\-249.0859\\-151\\12.9713\\-245.1797\\-151\\12.2635\\-243.2266\\-151\\11.87151\\-241.2734\\-151\\11.40625\\-237.3672\\-151\\11.02218\\-235.4141\\-151\\10.42737\\-233.4609\\-151\\10.09971\\-231.5078\\-151\\9.728599\\-227.6016\\-151\\9.051724\\-217.8359\\-151\\8.627473\\-213.9297\\-151\\8.614676\\-211.9766\\-151\\8.463542\\-208.0703\\-151\\8.422074\\-202.2109\\-151\\8.44254\\-200.2578\\-151\\8.565267\\-198.3047\\-151\\9.271389\\-192.4453\\-151\\9.553109\\-190.4922\\-151\\9.956287\\-186.5859\\-151\\10.14985\\-182.6797\\-151\\10.32624\\-180.7266\\-151\\10.6756\\-178.7734\\-151\\11.1341\\-176.8203\\-151\\11.48802\\-174.8672\\-151\\11.96145\\-170.9609\\-151\\12.39102\\-169.0078\\-151\\13.04854\\-167.0547\\-151\\13.90301\\-163.1484\\-151\\14.61088\\-161.1953\\-151\\16.47859\\-157.2891\\-151\\18.55469\\-153.7752\\-151\\18.89015\\-153.3828\\-151\\20.00578\\-151.4297\\-151\\22.46094\\-148.4799\\-151\\24.41406\\-146.4222\\-151\\27.26293\\-143.6172\\-151\\30.27344\\-140.9855\\-151\\32.22656\\-139.7026\\-151\\34.17969\\-138.5767\\-151\\36.13281\\-137.2521\\-151\\38.08594\\-136.33\\-151\\40.03906\\-135.1365\\-151\\41.99219\\-134.43\\-151\\43.94531\\-133.4379\\-151\\45.89844\\-132.9109\\-151\\47.85156\\-132.5515\\-151\\51.75781\\-131.2492\\-151\\53.71094\\-130.9465\\-151\\57.61719\\-130.4658\\-151\\61.52344\\-130.0683\\-151\\63.47656\\-130.0124\\-151\\67.38281\\-130.1691\\-151\\71.28906\\-130.401\\-151\\81.05469\\-131.0579\\-151\\84.96094\\-131.5166\\-151\\86.91406\\-132.4135\\-151\\88.86719\\-132.7931\\-151\\90.82031\\-132.9229\\-151\\94.72656\\-132.9948\\-151\\98.63281\\-134.2151\\-151\\100.5859\\-134.2805\\-151\\102.5391\\-134.7552\\-151\\104.4922\\-135.3288\\-151\\106.4453\\-136.0767\\-151\\108.3984\\-136.5103\\-151\\110.3516\\-137.0661\\-151\\112.3047\\-138.1554\\-151\\114.2578\\-138.5285\\-151\\116.2109\\-138.7795\\-151\\118.1641\\-139.1575\\-151\\120.1172\\-140.0032\\-151\\124.0234\\-141.1981\\-151\\125.9766\\-142.1984\\-151\\127.9297\\-142.9569\\-151\\129.8828\\-144.0664\\-151\\131.8359\\-144.8277\\-151\\133.7891\\-145.9595\\-151\\135.7422\\-146.7894\\-151\\137.6953\\-148.0842\\-151\\139.6484\\-149.2408\\-151\\142.5781\\-151.4297\\-151\\147.3832\\-155.3359\\-151\\151.3672\\-159.0991\\-151\\153.4339\\-161.1953\\-151\\157.2266\\-166.103\\-151\\159.2175\\-169.0078\\-151\\161.1328\\-172.4205\\-151\\161.4753\\-172.9141\\-151\\162.2228\\-174.8672\\-151\\163.0939\\-176.8203\\-151\\163.8595\\-178.7734\\-151\\164.3375\\-180.7266\\-151\\165.0391\\-182.7478\\-151\\165.5244\\-184.6328\\-151\\166.7589\\-192.4453\\-151\\167.3087\\-196.3516\\-151\\167.5817\\-200.2578\\-151\\167.649\\-206.1172\\-151\\167.4528\\-211.9766\\-151\\167.073\\-215.8828\\-151\\166.4317\\-219.7891\\-151\\165.6528\\-225.6484\\-151\\165.2261\\-227.6016\\-151\\164.5631\\-229.5547\\-151\\163.7897\\-233.4609\\-151\\162.4079\\-237.3672\\-151\\161.9843\\-239.3203\\-151\\161.3426\\-241.2734\\-151\\160.3751\\-243.2266\\-151\\159.6858\\-245.1797\\-151\\158.5118\\-247.1328\\-151\\157.7439\\-249.0859\\-151\\156.5524\\-251.0391\\-151\\155.8789\\-252.9922\\-151\\154.6502\\-254.9453\\-151\\153.6874\\-256.8984\\-151\\153.3203\\-257.3408\\-151\\151.3672\\-260.2549\\-151\\150.9032\\-260.8047\\-151\\149.7685\\-262.7578\\-151\\148.3931\\-264.7109\\-151\\146.7863\\-266.6641\\-151\\143.3281\\-270.5703\\-151\\141.7827\\-272.5234\\-151\\139.6484\\-274.7589\\-151\\137.7887\\-276.4297\\-151\\135.8193\\-278.3828\\-151\\133.6931\\-280.3359\\-151\\129.8828\\-283.4003\\-151\\128.9216\\-284.2422\\-151\\125.9766\\-286.6001\\-151\\120.1172\\-290.3406\\-151\\118.1641\\-291.3637\\-151\\116.2109\\-292.7232\\-151\\114.2578\\-293.6424\\-151\\112.3047\\-294.7539\\-151\\110.3516\\-295.3776\\-151\\108.3984\\-296.4201\\-151\\106.4453\\-297.0395\\-151\\102.5391\\-298.7666\\-151\\100.5859\\-299.4001\\-151\\98.63281\\-300.2229\\-151\\96.67969\\-300.6838\\-151\\92.77344\\-301.4311\\-151\\90.82031\\-301.9931\\-151\\88.86719\\-302.4012\\-151\\86.91406\\-302.6466\\-151\\81.05469\\-303.0244\\-151\\75.19531\\-303.3135\\-151\\71.28906\\-303.3135\\-151\\67.38281\\-303.1053\\-151\\61.52344\\-302.6648\\-151"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002376"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "183"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "27"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-303.9604\\-149\\-83.00781\\-303.3105\\-149\\-84.96094\\-303.0453\\-149\\-88.86719\\-302.6533\\-149\\-90.82031\\-302.3477\\-149\\-94.72656\\-301.2218\\-149\\-98.63281\\-300.3088\\-149\\-100.5859\\-299.4001\\-149\\-102.5391\\-298.6814\\-149\\-104.4922\\-297.6522\\-149\\-106.4453\\-296.8308\\-149\\-110.3516\\-294.9475\\-149\\-114.2578\\-292.7522\\-149\\-116.2109\\-291.2351\\-149\\-118.1641\\-289.8651\\-149\\-120.1172\\-288.7799\\-149\\-122.0703\\-287.2223\\-149\\-125.9766\\-283.8329\\-149\\-127.9297\\-282.347\\-149\\-129.8828\\-280.5279\\-149\\-131.908\\-278.3828\\-149\\-133.8833\\-276.4297\\-149\\-135.7422\\-274.3936\\-149\\-137.0908\\-272.5234\\-149\\-138.7236\\-270.5703\\-149\\-140.4757\\-268.6172\\-149\\-142.002\\-266.6641\\-149\\-143.0092\\-264.7109\\-149\\-145.8008\\-260.8047\\-149\\-146.8949\\-258.8516\\-149\\-148.1981\\-256.8984\\-149\\-149.1361\\-254.9453\\-149\\-150.222\\-252.9922\\-149\\-151.0706\\-251.0391\\-149\\-152.2455\\-249.0859\\-149\\-154.189\\-245.1797\\-149\\-154.9769\\-243.2266\\-149\\-155.952\\-241.2734\\-149\\-156.4512\\-239.3203\\-149\\-157.4136\\-237.3672\\-149\\-158.8477\\-233.4609\\-149\\-159.7991\\-231.5078\\-149\\-160.3353\\-229.5547\\-149\\-161.7362\\-225.6484\\-149\\-162.4288\\-221.7422\\-149\\-162.9552\\-219.7891\\-149\\-163.6136\\-217.8359\\-149\\-164.2439\\-213.9297\\-149\\-164.6142\\-211.9766\\-149\\-165.5099\\-208.0703\\-149\\-165.7056\\-206.1172\\-149\\-165.9614\\-202.2109\\-149\\-166.0156\\-198.3047\\-149\\-165.976\\-196.3516\\-149\\-165.6988\\-192.4453\\-149\\-165.4358\\-190.4922\\-149\\-164.3455\\-186.5859\\-149\\-163.9464\\-184.6328\\-149\\-163.4294\\-182.6797\\-149\\-162.5325\\-180.7266\\-149\\-161.9672\\-178.7734\\-149\\-160.0349\\-174.8672\\-149\\-158.6488\\-172.9141\\-149\\-157.4779\\-170.9609\\-149\\-155.2734\\-167.874\\-149\\-153.3203\\-165.5293\\-149\\-151.0827\\-163.1484\\-149\\-149.4141\\-161.2563\\-149\\-147.2938\\-159.2422\\-149\\-145.5078\\-157.8461\\-149\\-141.6016\\-154.4533\\-149\\-139.6484\\-152.9823\\-149\\-137.6953\\-152.0209\\-149\\-136.9525\\-151.4297\\-149\\-133.7891\\-149.3022\\-149\\-131.8359\\-148.2342\\-149\\-129.8828\\-146.9986\\-149\\-127.9297\\-146.3135\\-149\\-125.9766\\-145.2309\\-149\\-124.0234\\-144.5268\\-149\\-122.0703\\-143.4818\\-149\\-116.2109\\-140.8934\\-149\\-114.2578\\-140.3387\\-149\\-112.3047\\-139.4816\\-149\\-110.3516\\-138.8747\\-149\\-108.3984\\-138.4188\\-149\\-106.4453\\-137.5584\\-149\\-102.5391\\-136.3802\\-149\\-100.5859\\-135.5341\\-149\\-96.67969\\-134.6041\\-149\\-92.77344\\-133.3963\\-149\\-90.82031\\-133.0498\\-149\\-86.91406\\-132.5943\\-149\\-84.96094\\-132.2217\\-149\\-83.00781\\-131.6358\\-149\\-81.05469\\-131.2387\\-149\\-75.19531\\-130.7015\\-149\\-71.28906\\-130.4365\\-149\\-67.38281\\-130.3021\\-149\\-63.47656\\-130.3322\\-149\\-59.57031\\-130.5509\\-149\\-55.66406\\-130.8738\\-149\\-53.71094\\-131.0981\\-149\\-51.75781\\-131.4678\\-149\\-49.80469\\-132.1744\\-149\\-47.85156\\-132.651\\-149\\-45.89844\\-132.9229\\-149\\-43.94531\\-133.3767\\-149\\-41.99219\\-134.2624\\-149\\-40.03906\\-134.9495\\-149\\-38.17033\\-135.8047\\-149\\-36.13281\\-136.8439\\-149\\-34.17969\\-138.0168\\-149\\-32.22656\\-138.9801\\-149\\-28.45721\\-141.6641\\-149\\-26.32398\\-143.6172\\-149\\-22.46094\\-147.6641\\-149\\-19.54369\\-151.4297\\-149\\-18.24951\\-153.3828\\-149\\-17.34484\\-155.3359\\-149\\-16.11628\\-157.2891\\-149\\-15.40006\\-159.2422\\-149\\-14.40774\\-161.1953\\-149\\-13.83846\\-163.1484\\-149\\-12.98545\\-167.0547\\-149\\-12.29519\\-169.0078\\-149\\-11.91518\\-170.9609\\-149\\-11.51399\\-174.8672\\-149\\-11.21841\\-176.8203\\-149\\-10.39567\\-180.7266\\-149\\-10.1279\\-182.6797\\-149\\-9.990618\\-184.6328\\-149\\-9.826078\\-188.5391\\-149\\-9.79366\\-190.4922\\-149\\-9.946986\\-196.3516\\-149\\-9.928386\\-200.2578\\-149\\-9.973204\\-204.1641\\-149\\-9.727515\\-208.0703\\-149\\-9.557088\\-213.9297\\-149\\-9.6952\\-219.7891\\-149\\-9.811908\\-221.7422\\-149\\-10.17253\\-225.6484\\-149\\-11.24563\\-227.6016\\-149\\-10.94593\\-229.5547\\-149\\-11.30106\\-231.5078\\-149\\-11.92197\\-237.3672\\-149\\-12.2635\\-239.3203\\-149\\-12.86677\\-241.2734\\-149\\-13.31505\\-243.2266\\-149\\-14.03073\\-247.1328\\-149\\-14.64844\\-249.0675\\-149\\-15.39924\\-251.0391\\-149\\-15.8864\\-252.9922\\-149\\-17.49717\\-256.8984\\-149\\-18.0603\\-258.8516\\-149\\-19.11542\\-260.8047\\-149\\-19.63909\\-262.7578\\-149\\-20.4094\\-264.7109\\-149\\-22.46094\\-268.8232\\-149\\-24.41406\\-272.2278\\-149\\-24.65278\\-272.5234\\-149\\-25.56046\\-274.4766\\-149\\-26.7817\\-276.4297\\-149\\-27.80404\\-278.3828\\-149\\-30.27344\\-281.7031\\-149\\-30.78562\\-282.2891\\-149\\-31.96565\\-284.2422\\-149\\-33.32753\\-286.1953\\-149\\-34.95708\\-288.1484\\-149\\-36.79456\\-290.1016\\-149\\-40.03906\\-293.6745\\-149\\-43.94531\\-296.7798\\-149\\-45.89844\\-298.1685\\-149\\-47.85156\\-299.226\\-149\\-49.80469\\-300.4138\\-149\\-51.75781\\-301.0621\\-149\\-55.66406\\-302.5179\\-149\\-59.57031\\-303.1166\\-149\\-63.47656\\-303.9478\\-149\\-65.42969\\-304.2081\\-149\\-69.33594\\-304.409\\-149\\-73.24219\\-304.3877\\-149\\-77.14844\\-304.1988\\-149"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002376"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "179"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.3186\\-149\\55.66406\\-301.159\\-149\\53.71094\\-300.6819\\-149\\51.75781\\-299.9206\\-149\\47.85156\\-297.9217\\-149\\45.89844\\-296.7767\\-149\\43.94531\\-295.4289\\-149\\41.99219\\-294.3802\\-149\\40.03906\\-292.8198\\-149\\36.13281\\-289.211\\-149\\34.92606\\-288.1484\\-149\\33.07547\\-286.1953\\-149\\29.66391\\-282.2891\\-149\\28.08679\\-280.3359\\-149\\26.92057\\-278.3828\\-149\\25.57216\\-276.4297\\-149\\23.34449\\-272.5234\\-149\\22.04606\\-270.5703\\-149\\21.21538\\-268.6172\\-149\\20.05558\\-266.6641\\-149\\18.78231\\-262.7578\\-149\\17.78264\\-260.8047\\-149\\17.19527\\-258.8516\\-149\\16.21462\\-256.8984\\-149\\15.0303\\-252.9922\\-149\\14.24893\\-251.0391\\-149\\12.95906\\-245.1797\\-149\\12.24002\\-243.2266\\-149\\11.8606\\-241.2734\\-149\\11.38762\\-237.3672\\-149\\10.98633\\-235.4141\\-149\\10.39567\\-233.4609\\-149\\10.08606\\-231.5078\\-149\\9.709555\\-227.6016\\-149\\9.028081\\-217.8359\\-149\\8.708294\\-213.9297\\-149\\8.452972\\-208.0703\\-149\\8.402122\\-200.2578\\-149\\8.4851\\-198.3047\\-149\\9.190813\\-192.4453\\-149\\9.788877\\-188.5391\\-149\\9.956287\\-186.5859\\-149\\10.16488\\-182.6797\\-149\\10.36516\\-180.7266\\-149\\11.21511\\-176.8203\\-149\\11.53927\\-174.8672\\-149\\11.98774\\-170.9609\\-149\\12.42963\\-169.0078\\-149\\13.08457\\-167.0547\\-149\\13.89591\\-163.1484\\-149\\14.58185\\-161.1953\\-149\\15.55675\\-159.2422\\-149\\16.41323\\-157.2891\\-149\\19.96228\\-151.4297\\-149\\22.46094\\-148.4538\\-149\\24.41406\\-146.3725\\-149\\27.18991\\-143.6172\\-149\\30.27344\\-140.9395\\-149\\32.22656\\-139.6383\\-149\\34.17969\\-138.5181\\-149\\36.13281\\-137.1675\\-149\\38.08594\\-136.2251\\-149\\40.03906\\-135.0652\\-149\\41.99219\\-134.3463\\-149\\43.94531\\-133.3567\\-149\\47.85156\\-132.4645\\-149\\49.80469\\-131.6962\\-149\\51.75781\\-131.1813\\-149\\59.57031\\-130.1081\\-149\\61.52344\\-129.8645\\-149\\63.47656\\-129.7709\\-149\\67.38281\\-129.9529\\-149\\73.24219\\-130.4307\\-149\\79.10156\\-130.8353\\-149\\83.00781\\-131.1416\\-149\\84.96094\\-131.346\\-149\\86.91406\\-132.1028\\-149\\88.86719\\-132.6399\\-149\\90.82031\\-132.8158\\-149\\92.77344\\-132.8221\\-149\\94.72656\\-132.9342\\-149\\96.67969\\-133.6187\\-149\\98.63281\\-134.0677\\-149\\100.5859\\-134.1771\\-149\\102.5391\\-134.6059\\-149\\106.4453\\-135.8126\\-149\\108.3984\\-136.2867\\-149\\110.3516\\-136.9183\\-149\\112.3047\\-137.9943\\-149\\114.2578\\-138.3729\\-149\\118.1641\\-138.9968\\-149\\122.0703\\-140.4588\\-149\\124.0234\\-141.0272\\-149\\125.9766\\-141.9735\\-149\\127.9297\\-142.798\\-149\\129.8828\\-143.8685\\-149\\131.8359\\-144.7228\\-149\\133.7891\\-145.7916\\-149\\135.7422\\-146.6783\\-149\\139.6484\\-149.0432\\-149\\142.775\\-151.4297\\-149\\143.5547\\-152.1154\\-149\\147.4609\\-155.0827\\-149\\151.3672\\-158.872\\-149\\153.6628\\-161.1953\\-149\\156.5194\\-165.1016\\-149\\157.2266\\-165.9561\\-149\\159.3805\\-169.0078\\-149\\160.4167\\-170.9609\\-149\\161.6313\\-172.9141\\-149\\162.2813\\-174.8672\\-149\\163.2136\\-176.8203\\-149\\163.9238\\-178.7734\\-149\\164.4014\\-180.7266\\-149\\165.1611\\-182.6797\\-149\\165.659\\-184.6328\\-149\\166.5039\\-190.4922\\-149\\166.9922\\-192.8848\\-149\\167.4297\\-196.3516\\-149\\167.5563\\-198.3047\\-149\\167.6723\\-202.2109\\-149\\167.6988\\-206.1172\\-149\\167.5981\\-210.0234\\-149\\167.4956\\-211.9766\\-149\\167.1538\\-215.8828\\-149\\166.4686\\-219.7891\\-149\\165.6672\\-225.6484\\-149\\165.2261\\-227.6016\\-149\\164.5538\\-229.5547\\-149\\163.7827\\-233.4609\\-149\\162.3999\\-237.3672\\-149\\161.9724\\-239.3203\\-149\\161.315\\-241.2734\\-149\\160.3504\\-243.2266\\-149\\159.668\\-245.1797\\-149\\158.4861\\-247.1328\\-149\\157.7119\\-249.0859\\-149\\156.5317\\-251.0391\\-149\\155.8475\\-252.9922\\-149\\154.633\\-254.9453\\-149\\153.6505\\-256.8984\\-149\\153.3203\\-257.2874\\-149\\151.3672\\-260.1781\\-149\\150.845\\-260.8047\\-149\\149.6899\\-262.7578\\-149\\148.3367\\-264.7109\\-149\\146.716\\-266.6641\\-149\\143.2192\\-270.5703\\-149\\141.6016\\-272.5145\\-149\\139.6484\\-274.625\\-149\\137.6953\\-276.3708\\-149\\135.6671\\-278.3828\\-149\\133.5954\\-280.3359\\-149\\129.8828\\-283.3734\\-149\\128.9063\\-284.2422\\-149\\125.9766\\-286.5898\\-149\\120.1172\\-290.3525\\-149\\118.1641\\-291.3563\\-149\\116.2109\\-292.7423\\-149\\114.2578\\-293.6778\\-149\\112.3047\\-294.7734\\-149\\110.3516\\-295.4001\\-149\\108.3984\\-296.4619\\-149\\106.4453\\-297.0731\\-149\\104.4922\\-298.0226\\-149\\102.5391\\-298.7769\\-149\\100.5859\\-299.4066\\-149\\98.63281\\-300.2438\\-149\\96.67969\\-300.6953\\-149\\92.77344\\-301.4447\\-149\\90.82031\\-302.0081\\-149\\88.86719\\-302.4101\\-149\\86.91406\\-302.6533\\-149\\81.05469\\-303.0355\\-149\\77.14844\\-303.2336\\-149\\73.24219\\-303.3135\\-149\\71.28906\\-303.2852\\-149\\67.38281\\-303.0678\\-149\\61.52344\\-302.6466\\-149"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002375"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "174"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "29"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-304.0209\\-147\\-83.00781\\-303.333\\-147\\-86.91406\\-302.8559\\-147\\-88.86719\\-302.6776\\-147\\-90.82031\\-302.3884\\-147\\-94.72656\\-301.2485\\-147\\-98.63281\\-300.3524\\-147\\-100.5859\\-299.4407\\-147\\-102.5391\\-298.7155\\-147\\-104.4922\\-297.7173\\-147\\-106.4453\\-296.8628\\-147\\-110.3516\\-294.9598\\-147\\-114.2578\\-292.7816\\-147\\-116.2109\\-291.2487\\-147\\-118.1641\\-289.8669\\-147\\-120.1172\\-288.8016\\-147\\-122.0703\\-287.2533\\-147\\-125.9766\\-283.8851\\-147\\-127.9297\\-282.4251\\-147\\-129.8828\\-280.6184\\-147\\-132.0114\\-278.3828\\-147\\-133.9778\\-276.4297\\-147\\-135.7677\\-274.4766\\-147\\-137.1695\\-272.5234\\-147\\-138.8139\\-270.5703\\-147\\-140.557\\-268.6172\\-147\\-142.1102\\-266.6641\\-147\\-143.1013\\-264.7109\\-147\\-145.9246\\-260.8047\\-147\\-147.0349\\-258.8516\\-147\\-148.3077\\-256.8984\\-147\\-149.4141\\-254.7977\\-147\\-151.2798\\-251.0391\\-147\\-153.3203\\-247.34\\-147\\-156.0535\\-241.2734\\-147\\-156.5817\\-239.3203\\-147\\-157.6184\\-237.3672\\-147\\-158.2707\\-235.4141\\-147\\-159.9305\\-231.5078\\-147\\-160.4722\\-229.5547\\-147\\-161.3004\\-227.6016\\-147\\-161.8502\\-225.6484\\-147\\-162.5527\\-221.7422\\-147\\-163.1995\\-219.7891\\-147\\-163.7464\\-217.8359\\-147\\-164.36\\-213.9297\\-147\\-165.332\\-210.0234\\-147\\-165.6567\\-208.0703\\-147\\-165.976\\-204.1641\\-147\\-166.1441\\-200.2578\\-147\\-166.1067\\-196.3516\\-147\\-165.8213\\-192.4453\\-147\\-165.5963\\-190.4922\\-147\\-165.1198\\-188.5391\\-147\\-164.4939\\-186.5859\\-147\\-163.6169\\-182.6797\\-147\\-162.6883\\-180.7266\\-147\\-162.0667\\-178.7734\\-147\\-161.2181\\-176.8203\\-147\\-160.1396\\-174.8672\\-147\\-158.8329\\-172.9141\\-147\\-157.6584\\-170.9609\\-147\\-155.2734\\-167.6746\\-147\\-153.3203\\-165.3625\\-147\\-149.4141\\-161.1168\\-147\\-147.3976\\-159.2422\\-147\\-145.5078\\-157.7738\\-147\\-141.6016\\-154.4216\\-147\\-139.6484\\-152.9465\\-147\\-137.6953\\-152.0077\\-147\\-136.9691\\-151.4297\\-147\\-133.7891\\-149.2649\\-147\\-131.8359\\-148.2076\\-147\\-129.8828\\-146.9663\\-147\\-127.9297\\-146.2856\\-147\\-125.9766\\-145.1947\\-147\\-124.0234\\-144.4809\\-147\\-122.0703\\-143.3934\\-147\\-120.1172\\-142.5724\\-147\\-118.1641\\-141.6107\\-147\\-116.2109\\-140.8161\\-147\\-114.2578\\-140.2513\\-147\\-112.3047\\-139.3642\\-147\\-108.3984\\-138.3239\\-147\\-106.4453\\-137.4217\\-147\\-102.5391\\-136.305\\-147\\-100.5859\\-135.4686\\-147\\-96.67969\\-134.5854\\-147\\-92.77344\\-133.3831\\-147\\-90.82031\\-133.0308\\-147\\-86.91406\\-132.5436\\-147\\-84.96094\\-132.1227\\-147\\-83.00781\\-131.537\\-147\\-81.05469\\-131.1796\\-147\\-75.19531\\-130.6429\\-147\\-71.28906\\-130.3517\\-147\\-67.38281\\-130.181\\-147\\-63.47656\\-130.2159\\-147\\-61.52344\\-130.2964\\-147\\-55.66406\\-130.7381\\-147\\-53.71094\\-131.0054\\-147\\-51.75781\\-131.4131\\-147\\-49.80469\\-132.1114\\-147\\-47.85156\\-132.6439\\-147\\-45.89844\\-132.9349\\-147\\-43.94531\\-133.39\\-147\\-41.99219\\-134.2805\\-147\\-40.03906\\-134.9557\\-147\\-36.13281\\-136.8453\\-147\\-34.17969\\-138.0315\\-147\\-32.22656\\-138.9834\\-147\\-28.42262\\-141.6641\\-147\\-26.30722\\-143.6172\\-147\\-22.46094\\-147.6152\\-147\\-19.50637\\-151.4297\\-147\\-18.21588\\-153.3828\\-147\\-17.3133\\-155.3359\\-147\\-16.08975\\-157.2891\\-147\\-15.38224\\-159.2422\\-147\\-14.39576\\-161.1953\\-147\\-13.82698\\-163.1484\\-147\\-13.00921\\-167.0547\\-147\\-12.33082\\-169.0078\\-147\\-11.92882\\-170.9609\\-147\\-11.54307\\-174.8672\\-147\\-10.97238\\-178.7734\\-147\\-10.4947\\-180.7266\\-147\\-10.18807\\-182.6797\\-147\\-9.94873\\-186.5859\\-147\\-9.896457\\-190.4922\\-147\\-10.03689\\-196.3516\\-147\\-9.994284\\-204.1641\\-147\\-9.789328\\-208.0703\\-147\\-9.658737\\-211.9766\\-147\\-9.72296\\-217.8359\\-147\\-9.86236\\-221.7422\\-147\\-10.01827\\-223.6953\\-147\\-10.64745\\-225.6484\\-147\\-11.57003\\-227.6016\\-147\\-11.04318\\-229.5547\\-147\\-11.38006\\-231.5078\\-147\\-12.01468\\-237.3672\\-147\\-12.36747\\-239.3203\\-147\\-12.98545\\-241.2734\\-147\\-14.09466\\-247.1328\\-147\\-15.50356\\-251.0391\\-147\\-15.99855\\-252.9922\\-147\\-16.95726\\-254.9453\\-147\\-18.24951\\-258.8516\\-147\\-19.23587\\-260.8047\\-147\\-19.72535\\-262.7578\\-147\\-21.51035\\-266.6641\\-147\\-23.57328\\-270.5703\\-147\\-24.84588\\-272.5234\\-147\\-25.6633\\-274.4766\\-147\\-26.92805\\-276.4297\\-147\\-27.95493\\-278.3828\\-147\\-30.27344\\-281.497\\-147\\-30.93957\\-282.2891\\-147\\-33.42223\\-286.1953\\-147\\-35.04284\\-288.1484\\-147\\-40.51947\\-294.0078\\-147\\-43.94531\\-296.741\\-147\\-45.89844\\-298.1038\\-147\\-47.85156\\-299.1987\\-147\\-49.80469\\-300.3959\\-147\\-51.75781\\-301.0574\\-147\\-55.66406\\-302.51\\-147\\-59.57031\\-303.1166\\-147\\-63.47656\\-303.935\\-147\\-65.42969\\-304.1988\\-147\\-67.38281\\-304.3431\\-147\\-71.28906\\-304.4296\\-147\\-75.19531\\-304.3354\\-147"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002375"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "178"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.285\\-147\\57.61719\\-301.6489\\-147\\53.71094\\-300.6588\\-147\\51.75781\\-299.875\\-147\\47.86174\\-297.9141\\-147\\45.89844\\-296.7648\\-147\\43.94531\\-295.4058\\-147\\41.99219\\-294.3661\\-147\\40.03906\\-292.8073\\-147\\37.13669\\-290.1016\\-147\\34.94847\\-288.1484\\-147\\33.08823\\-286.1953\\-147\\29.6508\\-282.2891\\-147\\28.07442\\-280.3359\\-147\\26.89807\\-278.3828\\-147\\25.55751\\-276.4297\\-147\\24.5014\\-274.4766\\-147\\22.46094\\-271.0374\\-147\\22.10046\\-270.5703\\-147\\21.24168\\-268.6172\\-147\\20.076\\-266.6641\\-147\\18.78403\\-262.7578\\-147\\17.78264\\-260.8047\\-147\\17.21398\\-258.8516\\-147\\16.20483\\-256.8984\\-147\\15.01778\\-252.9922\\-147\\14.22631\\-251.0391\\-147\\12.9713\\-245.1797\\-147\\12.26054\\-243.2266\\-147\\11.8606\\-241.2734\\-147\\11.38762\\-237.3672\\-147\\10.97238\\-235.4141\\-147\\10.4061\\-233.4609\\-147\\10.08606\\-231.5078\\-147\\9.709555\\-227.6016\\-147\\9.15288\\-219.7891\\-147\\8.518528\\-210.0234\\-147\\8.422074\\-206.1172\\-147\\8.382667\\-200.2578\\-147\\8.44254\\-198.3047\\-147\\9.148186\\-192.4453\\-147\\9.779576\\-188.5391\\-147\\9.946986\\-186.5859\\-147\\10.18025\\-182.6797\\-147\\10.42737\\-180.7266\\-147\\11.28406\\-176.8203\\-147\\11.56649\\-174.8672\\-147\\12.01468\\-170.9609\\-147\\12.48076\\-169.0078\\-147\\13.10614\\-167.0547\\-147\\13.89591\\-163.1484\\-147\\14.56706\\-161.1953\\-147\\15.52998\\-159.2422\\-147\\16.35064\\-157.2891\\-147\\19.92985\\-151.4297\\-147\\22.46094\\-148.4406\\-147\\24.41406\\-146.3306\\-147\\27.13352\\-143.6172\\-147\\30.27344\\-140.8841\\-147\\32.22656\\-139.5327\\-147\\34.17969\\-138.449\\-147\\36.13281\\-137.1156\\-147\\38.08594\\-136.112\\-147\\40.03906\\-134.9955\\-147\\41.99219\\-134.2381\\-147\\43.94531\\-133.2669\\-147\\47.85156\\-132.3507\\-147\\49.80469\\-131.5474\\-147\\51.75781\\-131.1065\\-147\\55.66406\\-130.5766\\-147\\59.57031\\-129.9377\\-147\\61.52344\\-129.7215\\-147\\63.47656\\-129.6198\\-147\\67.38281\\-129.7583\\-147\\69.33594\\-129.8931\\-147\\75.19531\\-130.4733\\-147\\83.00781\\-131.054\\-147\\84.96094\\-131.2387\\-147\\86.91406\\-131.6731\\-147\\88.86719\\-132.3179\\-147\\90.82031\\-132.5889\\-147\\94.72656\\-132.8691\\-147\\96.67969\\-133.4945\\-147\\98.63281\\-133.9076\\-147\\100.5859\\-134.0903\\-147\\102.5391\\-134.4596\\-147\\108.3984\\-135.9589\\-147\\110.3516\\-136.7057\\-147\\112.3047\\-137.5796\\-147\\114.2578\\-137.9485\\-147\\118.1641\\-138.8513\\-147\\120.1172\\-139.4022\\-147\\122.0703\\-140.2773\\-147\\124.0234\\-140.8651\\-147\\125.9341\\-141.6641\\-147\\129.8828\\-143.565\\-147\\131.8359\\-144.5992\\-147\\133.7891\\-145.5303\\-147\\135.7422\\-146.5592\\-147\\139.6484\\-148.8427\\-147\\142.9798\\-151.4297\\-147\\143.5547\\-151.95\\-147\\145.5078\\-153.2779\\-147\\147.4609\\-154.8339\\-147\\151.3672\\-158.6831\\-147\\153.8295\\-161.1953\\-147\\155.3309\\-163.1484\\-147\\156.6145\\-165.1016\\-147\\157.2266\\-165.8199\\-147\\159.4966\\-169.0078\\-147\\160.5202\\-170.9609\\-147\\161.7513\\-172.9141\\-147\\162.3277\\-174.8672\\-147\\163.3085\\-176.8203\\-147\\163.9723\\-178.7734\\-147\\164.4566\\-180.7266\\-147\\165.2508\\-182.6797\\-147\\165.7441\\-184.6328\\-147\\166.6101\\-190.4922\\-147\\167.0588\\-192.4453\\-147\\167.3503\\-194.3984\\-147\\167.5232\\-196.3516\\-147\\167.7289\\-202.2109\\-147\\167.7473\\-206.1172\\-147\\167.6374\\-210.0234\\-147\\167.3891\\-213.9297\\-147\\167.1792\\-215.8828\\-147\\166.4919\\-219.7891\\-147\\165.6672\\-225.6484\\-147\\165.2007\\-227.6016\\-147\\164.5356\\-229.5547\\-147\\163.7612\\-233.4609\\-147\\162.3875\\-237.3672\\-147\\161.9605\\-239.3203\\-147\\161.287\\-241.2734\\-147\\160.3394\\-243.2266\\-147\\159.6375\\-245.1797\\-147\\158.461\\-247.1328\\-147\\157.6796\\-249.0859\\-147\\156.5158\\-251.0391\\-147\\155.8211\\-252.9922\\-147\\154.5993\\-254.9453\\-147\\153.6004\\-256.8984\\-147\\151.3672\\-260.1025\\-147\\150.7892\\-260.8047\\-147\\149.6063\\-262.7578\\-147\\148.2663\\-264.7109\\-147\\146.6585\\-266.6641\\-147\\144.882\\-268.6172\\-147\\141.4577\\-272.5234\\-147\\139.6484\\-274.4524\\-147\\137.6953\\-276.217\\-147\\133.5325\\-280.3359\\-147\\129.8828\\-283.3464\\-147\\128.8837\\-284.2422\\-147\\125.9766\\-286.5689\\-147\\120.1172\\-290.3642\\-147\\118.1641\\-291.3637\\-147\\116.2109\\-292.7498\\-147\\114.2578\\-293.6913\\-147\\112.3047\\-294.7854\\-147\\110.3516\\-295.4325\\-147\\108.3984\\-296.4897\\-147\\106.4453\\-297.1012\\-147\\104.4922\\-298.0627\\-147\\100.5859\\-299.4199\\-147\\98.63281\\-300.2641\\-147\\96.67969\\-300.7067\\-147\\92.77344\\-301.4558\\-147\\90.82031\\-302.0216\\-147\\88.86719\\-302.4227\\-147\\86.91406\\-302.6648\\-147\\81.05469\\-303.0355\\-147\\77.14844\\-303.2249\\-147\\73.24219\\-303.2945\\-147\\71.28906\\-303.2457\\-147\\67.38281\\-303.0453\\-147\\61.52344\\-302.6214\\-147"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002374"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "177"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-304.0553\\-145\\-83.00781\\-303.3633\\-145\\-90.82031\\-302.4189\\-145\\-94.72656\\-301.2835\\-145\\-98.63281\\-300.3828\\-145\\-100.5859\\-299.4703\\-145\\-102.5391\\-298.7489\\-145\\-104.4922\\-297.7863\\-145\\-108.3984\\-295.969\\-145\\-112.1553\\-294.0078\\-145\\-114.2578\\-292.7927\\-145\\-116.2109\\-291.2557\\-145\\-118.1641\\-289.8803\\-145\\-120.1172\\-288.823\\-145\\-123.38\\-286.1953\\-145\\-125.9766\\-283.9241\\-145\\-127.9297\\-282.4844\\-145\\-129.8828\\-280.7002\\-145\\-134.0393\\-276.4297\\-145\\-135.8805\\-274.4766\\-145\\-137.2419\\-272.5234\\-145\\-138.8829\\-270.5703\\-145\\-140.6312\\-268.6172\\-145\\-142.202\\-266.6641\\-145\\-143.2243\\-264.7109\\-145\\-146.0564\\-260.8047\\-145\\-148.4007\\-256.8984\\-145\\-149.4706\\-254.9453\\-145\\-150.374\\-252.9922\\-145\\-151.5046\\-251.0391\\-145\\-152.4665\\-249.0859\\-145\\-153.6501\\-247.1328\\-145\\-154.4124\\-245.1797\\-145\\-155.3601\\-243.2266\\-145\\-156.1422\\-241.2734\\-145\\-156.7253\\-239.3203\\-145\\-157.7755\\-237.3672\\-145\\-158.3739\\-235.4141\\-145\\-159.3667\\-233.4609\\-145\\-160.0438\\-231.5078\\-145\\-160.6198\\-229.5547\\-145\\-161.4898\\-227.6016\\-145\\-161.9486\\-225.6484\\-145\\-162.683\\-221.7422\\-145\\-163.4069\\-219.7891\\-145\\-163.8532\\-217.8359\\-145\\-164.5058\\-213.9297\\-145\\-165.0766\\-211.9766\\-145\\-165.5099\\-210.0234\\-145\\-165.9509\\-206.1172\\-145\\-166.2204\\-202.2109\\-145\\-166.2775\\-200.2578\\-145\\-166.2268\\-196.3516\\-145\\-166.1067\\-194.3984\\-145\\-165.7056\\-190.4922\\-145\\-165.3096\\-188.5391\\-145\\-164.6343\\-186.5859\\-145\\-163.7313\\-182.6797\\-145\\-162.827\\-180.7266\\-145\\-161.3733\\-176.8203\\-145\\-159.1797\\-173.1113\\-145\\-157.7999\\-170.9609\\-145\\-156.2912\\-169.0078\\-145\\-155.2734\\-167.4994\\-145\\-153.3203\\-165.1983\\-145\\-149.4141\\-161.0185\\-145\\-147.4609\\-159.2169\\-145\\-145.5078\\-157.7381\\-145\\-141.6016\\-154.4026\\-145\\-139.6484\\-152.9326\\-145\\-137.6953\\-151.9944\\-145\\-136.9858\\-151.4297\\-145\\-133.7891\\-149.2649\\-145\\-131.8359\\-148.2035\\-145\\-129.8828\\-146.9663\\-145\\-127.9297\\-146.2732\\-145\\-125.9766\\-145.1838\\-145\\-124.0234\\-144.4453\\-145\\-122.0703\\-143.3466\\-145\\-120.1172\\-142.5232\\-145\\-118.1641\\-141.5246\\-145\\-116.2109\\-140.7694\\-145\\-114.2578\\-140.1826\\-145\\-112.3047\\-139.2914\\-145\\-108.3984\\-138.2621\\-145\\-106.4453\\-137.3489\\-145\\-102.5391\\-136.2809\\-145\\-100.5859\\-135.4582\\-145\\-96.67969\\-134.5591\\-145\\-92.77344\\-133.3633\\-145\\-90.82031\\-133.0068\\-145\\-86.91406\\-132.4868\\-145\\-83.00781\\-131.4309\\-145\\-81.05469\\-131.1373\\-145\\-77.14844\\-130.7354\\-145\\-71.28906\\-130.2383\\-145\\-67.38281\\-130.0401\\-145\\-65.42969\\-130.0119\\-145\\-61.52344\\-130.0817\\-145\\-57.61719\\-130.3869\\-145\\-55.66406\\-130.5983\\-145\\-53.71094\\-130.9165\\-145\\-51.75781\\-131.3477\\-145\\-47.85156\\-132.5985\\-145\\-45.89844\\-132.9167\\-145\\-43.94531\\-133.3799\\-145\\-41.99219\\-134.2596\\-145\\-40.03906\\-134.9397\\-145\\-36.13281\\-136.8249\\-145\\-34.17969\\-138.0076\\-145\\-32.22656\\-138.9622\\-145\\-28.34961\\-141.6641\\-145\\-26.20994\\-143.6172\\-145\\-22.45331\\-147.5234\\-145\\-19.46239\\-151.4297\\-145\\-18.15257\\-153.3828\\-145\\-17.28795\\-155.3359\\-145\\-16.06942\\-157.2891\\-145\\-15.37531\\-159.2422\\-145\\-14.41988\\-161.1953\\-145\\-13.83846\\-163.1484\\-145\\-13.0598\\-167.0547\\-145\\-12.39102\\-169.0078\\-145\\-11.96145\\-170.9609\\-145\\-11.72394\\-172.9141\\-145\\-11.36877\\-176.8203\\-145\\-11.10026\\-178.7734\\-145\\-10.2892\\-182.6797\\-145\\-10.02441\\-186.5859\\-145\\-10.00855\\-190.4922\\-145\\-10.18025\\-196.3516\\-145\\-10.07269\\-204.1641\\-145\\-9.732441\\-211.9766\\-145\\-9.79366\\-217.8359\\-145\\-9.932242\\-221.7422\\-145\\-10.06611\\-223.6953\\-145\\-11.2274\\-225.6484\\-145\\-11.58422\\-227.6016\\-145\\-11.09789\\-229.5547\\-145\\-11.42798\\-231.5078\\-145\\-11.81481\\-235.4141\\-145\\-12.07886\\-237.3672\\-145\\-12.46939\\-239.3203\\-145\\-13.07091\\-241.2734\\-145\\-13.77467\\-245.1797\\-145\\-14.18488\\-247.1328\\-145\\-14.99815\\-249.0859\\-145\\-16.1279\\-252.9922\\-145\\-17.12514\\-254.9453\\-145\\-17.68038\\-256.8984\\-145\\-19.31818\\-260.8047\\-145\\-19.80939\\-262.7578\\-145\\-20.78978\\-264.7109\\-145\\-21.61872\\-266.6641\\-145\\-22.75459\\-268.6172\\-145\\-23.68438\\-270.5703\\-145\\-25.00124\\-272.5234\\-145\\-25.77076\\-274.4766\\-145\\-27.06653\\-276.4297\\-145\\-28.13947\\-278.3828\\-145\\-30.27344\\-281.3281\\-145\\-31.05342\\-282.2891\\-145\\-32.375\\-284.2422\\-145\\-33.5095\\-286.1953\\-145\\-35.13137\\-288.1484\\-145\\-40.64289\\-294.0078\\-145\\-43.94531\\-296.6855\\-145\\-45.89844\\-298.0226\\-145\\-49.80469\\-300.3868\\-145\\-51.75781\\-301.0574\\-145\\-55.66406\\-302.51\\-145\\-59.57031\\-303.1013\\-145\\-63.47656\\-303.9221\\-145\\-65.42969\\-304.1988\\-145\\-69.33594\\-304.4159\\-145\\-73.24219\\-304.4159\\-145\\-77.14844\\-304.2531\\-145"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002374"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "176"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "32"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.2369\\-145\\57.61719\\-301.5944\\-145\\53.71094\\-300.6126\\-145\\51.88519\\-299.8672\\-145\\47.96231\\-297.9141\\-145\\45.89844\\-296.7265\\-145\\43.94531\\-295.383\\-145\\41.99219\\-294.3166\\-145\\40.03906\\-292.7746\\-145\\37.17863\\-290.1016\\-145\\34.98186\\-288.1484\\-145\\33.11377\\-286.1953\\-145\\29.65979\\-282.2891\\-145\\28.08508\\-280.3359\\-145\\26.91118\\-278.3828\\-145\\25.58223\\-276.4297\\-145\\24.41406\\-274.3094\\-145\\22.46094\\-270.9729\\-145\\22.14656\\-270.5703\\-145\\21.26479\\-268.6172\\-145\\20.08928\\-266.6641\\-145\\18.79699\\-262.7578\\-145\\17.79914\\-260.8047\\-145\\17.23987\\-258.8516\\-145\\16.22453\\-256.8984\\-145\\15.0303\\-252.9922\\-145\\14.22631\\-251.0391\\-145\\13.799\\-249.0859\\-145\\13.07091\\-245.1797\\-145\\12.33956\\-243.2266\\-145\\11.89076\\-241.2734\\-145\\11.41357\\-237.3672\\-145\\11.04526\\-235.4141\\-145\\10.47165\\-233.4609\\-145\\10.12074\\-231.5078\\-145\\9.742373\\-227.6016\\-145\\9.170923\\-219.7891\\-145\\8.842468\\-213.9297\\-145\\8.541577\\-210.0234\\-145\\8.354373\\-202.2109\\-145\\8.432241\\-198.3047\\-145\\8.640455\\-196.3516\\-145\\8.965976\\-194.3984\\-145\\9.188286\\-192.4453\\-145\\9.788877\\-188.5391\\-145\\10.21205\\-182.6797\\-145\\10.4947\\-180.7266\\-145\\10.97238\\-178.7734\\-145\\11.59928\\-174.8672\\-145\\12.0503\\-170.9609\\-145\\12.53634\\-169.0078\\-145\\13.14041\\-167.0547\\-145\\13.91457\\-163.1484\\-145\\14.59625\\-161.1953\\-145\\15.50887\\-159.2422\\-145\\16.31394\\-157.2891\\-145\\16.60156\\-156.9108\\-145\\18.55469\\-153.587\\-145\\19.90736\\-151.4297\\-145\\22.46094\\-148.401\\-145\\24.41406\\-146.2939\\-145\\27.08424\\-143.6172\\-145\\30.27344\\-140.8207\\-145\\32.22656\\-139.433\\-145\\34.17969\\-138.3763\\-145\\36.13281\\-137.0385\\-145\\40.03906\\-134.9286\\-145\\41.99219\\-134.1153\\-145\\43.94531\\-133.1817\\-145\\47.85156\\-132.2467\\-145\\49.80469\\-131.4219\\-145\\51.75781\\-131.0457\\-145\\55.66406\\-130.4816\\-145\\59.57031\\-129.7583\\-145\\63.47656\\-129.5106\\-145\\67.38281\\-129.5885\\-145\\71.28906\\-129.8645\\-145\\75.19531\\-130.3347\\-145\\81.05469\\-130.8441\\-145\\84.96094\\-131.1438\\-145\\86.91406\\-131.3788\\-145\\88.86719\\-131.762\\-145\\90.82031\\-132.2517\\-145\\94.72656\\-132.7697\\-145\\100.5859\\-133.7818\\-145\\104.4922\\-134.7543\\-145\\108.3984\\-135.569\\-145\\110.3516\\-136.4921\\-145\\112.3047\\-137.1287\\-145\\114.2578\\-137.4217\\-145\\116.2109\\-138.1926\\-145\\120.1172\\-139.1669\\-145\\122.0703\\-140.0484\\-145\\125.9766\\-141.386\\-145\\127.9297\\-142.435\\-145\\129.8828\\-143.2807\\-145\\131.8359\\-144.4404\\-145\\133.7891\\-145.2542\\-145\\135.7422\\-146.4154\\-145\\137.6953\\-147.4063\\-145\\139.6484\\-148.6498\\-145\\143.5547\\-151.7296\\-145\\145.5078\\-152.982\\-145\\147.4609\\-154.6251\\-145\\152.0908\\-159.2422\\-145\\153.9411\\-161.1953\\-145\\155.5118\\-163.1484\\-145\\156.7034\\-165.1016\\-145\\157.2266\\-165.7069\\-145\\159.5912\\-169.0078\\-145\\160.6099\\-170.9609\\-145\\161.8158\\-172.9141\\-145\\162.384\\-174.8672\\-145\\163.3954\\-176.8203\\-145\\164.5203\\-180.7266\\-145\\165.332\\-182.6797\\-145\\165.7969\\-184.6328\\-145\\166.7668\\-190.4922\\-145\\167.1805\\-192.4453\\-145\\167.4269\\-194.3984\\-145\\167.6764\\-198.3047\\-145\\167.7632\\-202.2109\\-145\\167.7746\\-206.1172\\-145\\167.6607\\-210.0234\\-145\\167.4241\\-213.9297\\-145\\167.1916\\-215.8828\\-145\\166.51\\-219.7891\\-145\\165.6634\\-225.6484\\-145\\165.1877\\-227.6016\\-145\\164.5146\\-229.5547\\-145\\163.7538\\-233.4609\\-145\\162.3796\\-237.3672\\-145\\161.9536\\-239.3203\\-145\\161.2734\\-241.2734\\-145\\160.3172\\-243.2266\\-145\\159.6089\\-245.1797\\-145\\158.4323\\-247.1328\\-145\\157.6425\\-249.0859\\-145\\156.4957\\-251.0391\\-145\\155.7785\\-252.9922\\-145\\154.5581\\-254.9453\\-145\\153.5349\\-256.8984\\-145\\151.3672\\-260.0122\\-145\\150.7269\\-260.8047\\-145\\149.5181\\-262.7578\\-145\\148.1998\\-264.7109\\-145\\146.5949\\-266.6641\\-145\\144.8006\\-268.6172\\-145\\141.3739\\-272.5234\\-145\\139.6484\\-274.3305\\-145\\137.6953\\-276.1321\\-145\\133.7891\\-280.0326\\-145\\129.8828\\-283.3195\\-145\\128.8537\\-284.2422\\-145\\125.9766\\-286.5474\\-145\\120.1172\\-290.3642\\-145\\118.1641\\-291.3711\\-145\\116.2109\\-292.7613\\-145\\114.2578\\-293.7047\\-145\\112.3047\\-294.7903\\-145\\110.3516\\-295.4523\\-145\\108.3984\\-296.511\\-145\\106.4453\\-297.1121\\-145\\104.4922\\-298.1011\\-145\\100.5859\\-299.4423\\-145\\98.63281\\-300.2767\\-145\\96.67969\\-300.7132\\-145\\92.77344\\-301.4671\\-145\\90.82031\\-302.0216\\-145\\88.86719\\-302.4101\\-145\\86.91406\\-302.6466\\-145\\81.05469\\-303.0313\\-145\\77.14844\\-303.2128\\-145\\73.24219\\-303.2546\\-145\\67.38281\\-303.0089\\-145\\61.52344\\-302.5838\\-145"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002373"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "191"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "33"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-304.0664\\-143\\-83.00781\\-303.4081\\-143\\-86.91406\\-302.9048\\-143\\-88.86719\\-302.7239\\-143\\-90.82031\\-302.4401\\-143\\-92.77344\\-301.9357\\-143\\-94.72656\\-301.3094\\-143\\-98.63281\\-300.407\\-143\\-100.5859\\-299.5115\\-143\\-102.5391\\-298.7816\\-143\\-108.3984\\-296.0165\\-143\\-112.1798\\-294.0078\\-143\\-114.2578\\-292.8037\\-143\\-116.2109\\-291.2746\\-143\\-118.1641\\-289.9093\\-143\\-120.1172\\-288.823\\-143\\-123.4102\\-286.1953\\-143\\-125.9766\\-283.9772\\-143\\-127.9297\\-282.5428\\-143\\-129.8828\\-280.7556\\-143\\-134.125\\-276.4297\\-143\\-135.9566\\-274.4766\\-143\\-137.3528\\-272.5234\\-143\\-138.9624\\-270.5703\\-143\\-140.6987\\-268.6172\\-143\\-142.2806\\-266.6641\\-143\\-143.3454\\-264.7109\\-143\\-144.6768\\-262.7578\\-143\\-146.1843\\-260.8047\\-143\\-147.4609\\-258.7309\\-143\\-149.6185\\-254.9453\\-143\\-150.4697\\-252.9922\\-143\\-151.6837\\-251.0391\\-143\\-152.5937\\-249.0859\\-143\\-153.8025\\-247.1328\\-143\\-154.5291\\-245.1797\\-143\\-155.5324\\-243.2266\\-143\\-156.8733\\-239.3203\\-143\\-157.8904\\-237.3672\\-143\\-158.4972\\-235.4141\\-143\\-159.5388\\-233.4609\\-143\\-160.7723\\-229.5547\\-143\\-161.6147\\-227.6016\\-143\\-162.0383\\-225.6484\\-143\\-162.352\\-223.6953\\-143\\-162.8454\\-221.7422\\-143\\-163.568\\-219.7891\\-143\\-164.261\\-215.8828\\-143\\-164.668\\-213.9297\\-143\\-165.2982\\-211.9766\\-143\\-165.6528\\-210.0234\\-143\\-165.8911\\-208.0703\\-143\\-166.2332\\-204.1641\\-143\\-166.4367\\-200.2578\\-143\\-166.358\\-196.3516\\-143\\-166.2204\\-194.3984\\-143\\-165.8113\\-190.4922\\-143\\-165.4644\\-188.5391\\-143\\-164.7846\\-186.5859\\-143\\-164.2396\\-184.6328\\-143\\-163.8156\\-182.6797\\-143\\-162.2064\\-178.7734\\-143\\-161.5137\\-176.8203\\-143\\-161.1328\\-176.2778\\-143\\-159.2323\\-172.9141\\-143\\-157.9155\\-170.9609\\-143\\-156.3802\\-169.0078\\-143\\-155.2734\\-167.3169\\-143\\-153.3974\\-165.1016\\-143\\-149.4141\\-160.9268\\-143\\-147.4609\\-159.1201\\-143\\-145.5078\\-157.6869\\-143\\-141.6016\\-154.3907\\-143\\-139.6484\\-152.922\\-143\\-137.6953\\-151.9944\\-143\\-136.9858\\-151.4297\\-143\\-133.7891\\-149.2896\\-143\\-131.8359\\-148.2259\\-143\\-129.8828\\-146.9986\\-143\\-127.9297\\-146.2856\\-143\\-125.9766\\-145.1595\\-143\\-124.0234\\-144.4244\\-143\\-122.0703\\-143.3132\\-143\\-120.1172\\-142.4912\\-143\\-118.1641\\-141.4574\\-143\\-116.2109\\-140.7404\\-143\\-114.2578\\-140.1352\\-143\\-112.3047\\-139.236\\-143\\-108.3984\\-138.2299\\-143\\-106.4453\\-137.3021\\-143\\-102.5391\\-136.2531\\-143\\-100.5859\\-135.4178\\-143\\-96.67969\\-134.5085\\-143\\-92.77344\\-133.3148\\-143\\-90.82031\\-132.9579\\-143\\-86.91406\\-132.4088\\-143\\-84.96094\\-131.8164\\-143\\-83.00781\\-131.3348\\-143\\-81.05469\\-131.0714\\-143\\-75.19531\\-130.4566\\-143\\-69.33594\\-129.9377\\-143\\-65.42969\\-129.7837\\-143\\-61.52344\\-129.7967\\-143\\-59.57031\\-129.9682\\-143\\-53.71094\\-130.8054\\-143\\-51.75781\\-131.238\\-143\\-47.85156\\-132.5353\\-143\\-45.89844\\-132.881\\-143\\-43.94531\\-133.3303\\-143\\-41.99219\\-134.1909\\-143\\-40.03906\\-134.8951\\-143\\-38.08594\\-135.7813\\-143\\-36.13281\\-136.7758\\-143\\-34.17969\\-137.95\\-143\\-32.22656\\-138.9335\\-143\\-30.27344\\-140.3062\\-143\\-28.32031\\-141.5788\\-143\\-26.07579\\-143.6172\\-143\\-22.32247\\-147.5234\\-143\\-19.41076\\-151.4297\\-143\\-18.07251\\-153.3828\\-143\\-17.25447\\-155.3359\\-143\\-16.05261\\-157.2891\\-143\\-15.38495\\-159.2422\\-143\\-14.44615\\-161.1953\\-143\\-13.87293\\-163.1484\\-143\\-13.13008\\-167.0547\\-143\\-12.48238\\-169.0078\\-143\\-12.00701\\-170.9609\\-143\\-11.74472\\-172.9141\\-143\\-11.42082\\-176.8203\\-143\\-11.19626\\-178.7734\\-143\\-10.4061\\-182.6797\\-143\\-10.19597\\-184.6328\\-143\\-10.08606\\-188.5391\\-143\\-10.19597\\-192.4453\\-143\\-10.35525\\-196.3516\\-143\\-10.2983\\-200.2578\\-143\\-10.18025\\-204.1641\\-143\\-10.03062\\-206.1172\\-143\\-10.0297\\-208.0703\\-143\\-9.80788\\-211.9766\\-143\\-9.788877\\-213.9297\\-143\\-9.908424\\-219.7891\\-143\\-10.11366\\-223.6953\\-143\\-10.74219\\-225.5709\\-143\\-11.57715\\-227.6016\\-143\\-11.16161\\-229.5547\\-143\\-11.46656\\-231.5078\\-143\\-11.85438\\-235.4141\\-143\\-12.11684\\-237.3672\\-143\\-12.56662\\-239.3203\\-143\\-13.14041\\-241.2734\\-143\\-13.81382\\-245.1797\\-143\\-14.30107\\-247.1328\\-143\\-15.19165\\-249.0859\\-143\\-16.23457\\-252.9922\\-143\\-17.23214\\-254.9453\\-143\\-17.75568\\-256.8984\\-143\\-18.63994\\-258.8516\\-143\\-19.37737\\-260.8047\\-143\\-19.90539\\-262.7578\\-143\\-20.94822\\-264.7109\\-143\\-21.73504\\-266.6641\\-143\\-22.93044\\-268.6172\\-143\\-23.80732\\-270.5703\\-143\\-25.12267\\-272.5234\\-143\\-25.88232\\-274.4766\\-143\\-27.18406\\-276.4297\\-143\\-28.32031\\-278.3517\\-143\\-29.65943\\-280.3359\\-143\\-31.1561\\-282.2891\\-143\\-32.54229\\-284.2422\\-143\\-33.61328\\-286.1953\\-143\\-35.21845\\-288.1484\\-143\\-38.88768\\-292.0547\\-143\\-40.03906\\-293.3682\\-143\\-41.99219\\-295.0704\\-143\\-43.94531\\-296.6183\\-143\\-45.89844\\-297.9217\\-143\\-49.80469\\-300.3523\\-143\\-51.75781\\-301.0306\\-143\\-55.66406\\-302.4978\\-143\\-59.57031\\-303.0784\\-143\\-61.52344\\-303.4189\\-143\\-63.47656\\-303.8955\\-143\\-65.42969\\-304.1798\\-143\\-67.38281\\-304.3431\\-143\\-71.28906\\-304.4296\\-143\\-73.24219\\-304.4159\\-143\\-77.14844\\-304.2703\\-143"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002373"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "178"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "34"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.1646\\-143\\57.61719\\-301.5138\\-143\\53.71094\\-300.5589\\-143\\49.80469\\-298.8175\\-143\\45.89844\\-296.675\\-143\\43.94531\\-295.3473\\-143\\41.99219\\-294.2372\\-143\\40.03906\\-292.7079\\-143\\37.22796\\-290.1016\\-143\\35.03767\\-288.1484\\-143\\33.15206\\-286.1953\\-143\\29.70489\\-282.2891\\-143\\28.12644\\-280.3359\\-143\\26.93359\\-278.3828\\-143\\25.60695\\-276.4297\\-143\\24.41406\\-274.2586\\-143\\22.46094\\-270.9525\\-143\\22.15787\\-270.5703\\-143\\21.27878\\-268.6172\\-143\\20.11045\\-266.6641\\-143\\18.82234\\-262.7578\\-143\\17.82614\\-260.8047\\-143\\17.25803\\-258.8516\\-143\\16.25504\\-256.8984\\-143\\15.06519\\-252.9922\\-143\\14.25909\\-251.0391\\-143\\13.45351\\-247.1328\\-143\\13.18027\\-245.1797\\-143\\12.45301\\-243.2266\\-143\\11.94018\\-241.2734\\-143\\11.48135\\-237.3672\\-143\\11.16706\\-235.4141\\-143\\10.59358\\-233.4609\\-143\\10.18807\\-231.5078\\-143\\9.784138\\-227.6016\\-143\\9.238401\\-219.7891\\-143\\9.185987\\-217.8359\\-143\\8.965976\\-213.9297\\-143\\8.627473\\-210.0234\\-143\\8.327096\\-202.2109\\-143\\8.44254\\-198.3047\\-143\\8.680555\\-196.3516\\-143\\9.038255\\-194.3984\\-143\\9.606996\\-190.4922\\-143\\9.83042\\-188.5391\\-143\\10.09285\\-184.6328\\-143\\10.28022\\-182.6797\\-143\\10.59358\\-180.7266\\-143\\11.04736\\-178.7734\\-143\\11.37241\\-176.8203\\-143\\12.08726\\-170.9609\\-143\\13.177\\-167.0547\\-143\\13.93769\\-163.1484\\-143\\14.62573\\-161.1953\\-143\\15.51011\\-159.2422\\-143\\16.29352\\-157.2891\\-143\\16.60156\\-156.8756\\-143\\18.55469\\-153.5197\\-143\\19.87206\\-151.4297\\-143\\22.46094\\-148.3273\\-143\\24.41406\\-146.2377\\-143\\27.01595\\-143.6172\\-143\\28.32031\\-142.406\\-143\\30.27344\\-140.7505\\-143\\32.22656\\-139.342\\-143\\34.17969\\-138.3092\\-143\\36.13281\\-136.9545\\-143\\38.16451\\-135.8047\\-143\\40.03906\\-134.8565\\-143\\43.94531\\-133.1084\\-143\\45.89844\\-132.7044\\-143\\47.85156\\-132.1227\\-143\\49.80469\\-131.3158\\-143\\53.71094\\-130.7049\\-143\\55.66406\\-130.342\\-143\\57.61719\\-129.8787\\-143\\59.57031\\-129.5885\\-143\\63.47656\\-129.3912\\-143\\67.38281\\-129.44\\-143\\71.28906\\-129.6523\\-143\\75.19531\\-130.1447\\-143\\79.10156\\-130.5433\\-143\\81.05469\\-130.8024\\-143\\83.00781\\-130.8933\\-143\\86.91406\\-131.2216\\-143\\88.86719\\-131.4773\\-143\\92.77344\\-132.4214\\-143\\98.63281\\-133.1284\\-143\\100.5859\\-133.4733\\-143\\104.4922\\-134.5363\\-143\\108.3984\\-135.3253\\-143\\110.3516\\-136.5194\\-143\\112.3047\\-136.9099\\-143\\114.2578\\-137.1675\\-143\\118.1641\\-138.5542\\-143\\120.1172\\-138.977\\-143\\124.0234\\-140.5227\\-143\\125.9766\\-141.1353\\-143\\127.9297\\-142.1996\\-143\\129.8828\\-143.0374\\-143\\131.8359\\-144.2458\\-143\\133.7891\\-145.0257\\-143\\135.7422\\-146.2368\\-143\\137.6953\\-147.137\\-143\\139.6484\\-148.4383\\-143\\141.6016\\-149.9916\\-143\\145.5078\\-152.7614\\-143\\147.4609\\-154.432\\-143\\152.2481\\-159.2422\\-143\\154.0699\\-161.1953\\-143\\155.6597\\-163.1484\\-143\\156.8287\\-165.1016\\-143\\157.2266\\-165.5529\\-143\\159.6884\\-169.0078\\-143\\160.6937\\-170.9609\\-143\\161.8778\\-172.9141\\-143\\162.4453\\-174.8672\\-143\\163.4857\\-176.8203\\-143\\164.5986\\-180.7266\\-143\\165.4185\\-182.6797\\-143\\165.8537\\-184.6328\\-143\\166.5197\\-188.5391\\-143\\167.2664\\-192.4453\\-143\\167.6334\\-196.3516\\-143\\167.8022\\-202.2109\\-143\\167.7974\\-206.1172\\-143\\167.6018\\-211.9766\\-143\\167.2296\\-215.8828\\-143\\166.5315\\-219.7891\\-143\\165.6561\\-225.6484\\-143\\165.1611\\-227.6016\\-143\\164.4853\\-229.5547\\-143\\163.7351\\-233.4609\\-143\\162.3551\\-237.3672\\-143\\161.9436\\-239.3203\\-143\\161.2455\\-241.2734\\-143\\160.2997\\-243.2266\\-143\\159.5766\\-245.1797\\-143\\158.3974\\-247.1328\\-143\\157.6135\\-249.0859\\-143\\156.4711\\-251.0391\\-143\\155.731\\-252.9922\\-143\\154.518\\-254.9453\\-143\\153.3203\\-257.0323\\-143\\151.3672\\-259.9088\\-143\\150.6587\\-260.8047\\-143\\148.1142\\-264.7109\\-143\\146.5145\\-266.6641\\-143\\144.7119\\-268.6172\\-143\\141.2714\\-272.5234\\-143\\139.6484\\-274.2455\\-143\\137.3125\\-276.4297\\-143\\133.7891\\-279.9815\\-143\\129.8828\\-283.2926\\-143\\128.8236\\-284.2422\\-143\\125.9766\\-286.5118\\-143\\120.1172\\-290.3406\\-143\\118.1641\\-291.3786\\-143\\116.2109\\-292.7697\\-143\\114.2578\\-293.7238\\-143\\112.3047\\-294.8024\\-143\\110.3516\\-295.4659\\-143\\108.3984\\-296.5286\\-143\\106.4453\\-297.1295\\-143\\104.4922\\-298.1258\\-143\\100.5859\\-299.4577\\-143\\98.63281\\-300.2767\\-143\\96.67969\\-300.7181\\-143\\92.77344\\-301.4558\\-143\\90.82031\\-302.0081\\-143\\88.86719\\-302.3884\\-143\\84.96094\\-302.7804\\-143\\81.05469\\-303.0176\\-143\\77.14844\\-303.1839\\-143\\75.19531\\-303.2128\\-143\\71.28906\\-303.1638\\-143\\63.47656\\-302.7239\\-143\\61.52344\\-302.53\\-143"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002372"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "182"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-303.811\\-141\\-83.00781\\-303.4055\\-141\\-84.96094\\-303.1166\\-141\\-88.86719\\-302.7239\\-141\\-90.82031\\-302.4441\\-141\\-92.77344\\-301.9357\\-141\\-94.72656\\-301.2999\\-141\\-98.63281\\-300.4157\\-141\\-100.5859\\-299.5439\\-141\\-102.5391\\-298.8023\\-141\\-108.3984\\-296.0318\\-141\\-112.2037\\-294.0078\\-141\\-114.2578\\-292.7969\\-141\\-116.2109\\-291.2794\\-141\\-118.1641\\-289.9233\\-141\\-120.1172\\-288.8359\\-141\\-123.4207\\-286.1953\\-141\\-125.9766\\-284.0038\\-141\\-127.9297\\-282.5561\\-141\\-129.8828\\-280.7826\\-141\\-132.203\\-278.3828\\-141\\-134.2054\\-276.4297\\-141\\-136.0156\\-274.4766\\-141\\-137.4455\\-272.5234\\-141\\-139.0373\\-270.5703\\-141\\-140.7478\\-268.6172\\-141\\-142.3435\\-266.6641\\-141\\-143.4652\\-264.7109\\-141\\-144.7524\\-262.7578\\-141\\-146.2764\\-260.8047\\-141\\-147.5152\\-258.8516\\-141\\-148.5743\\-256.8984\\-141\\-149.7396\\-254.9453\\-141\\-150.5572\\-252.9922\\-141\\-151.8076\\-251.0391\\-141\\-152.7077\\-249.0859\\-141\\-153.9063\\-247.1328\\-141\\-154.6285\\-245.1797\\-141\\-155.6626\\-243.2266\\-141\\-156.2847\\-241.2734\\-141\\-157.0268\\-239.3203\\-141\\-157.9749\\-237.3672\\-141\\-158.6242\\-235.4141\\-141\\-159.6444\\-233.4609\\-141\\-160.2189\\-231.5078\\-141\\-160.915\\-229.5547\\-141\\-161.7113\\-227.6016\\-141\\-162.4246\\-223.6953\\-141\\-163.6766\\-219.7891\\-141\\-164.3566\\-215.8828\\-141\\-164.8466\\-213.9297\\-141\\-165.455\\-211.9766\\-141\\-165.9958\\-208.0703\\-141\\-166.358\\-204.1641\\-141\\-166.6028\\-200.2578\\-141\\-166.4919\\-196.3516\\-141\\-166.3319\\-194.3984\\-141\\-165.8923\\-190.4922\\-141\\-165.5723\\-188.5391\\-141\\-164.3304\\-184.6328\\-141\\-163.8767\\-182.6797\\-141\\-163.1705\\-180.7266\\-141\\-162.2813\\-178.7734\\-141\\-161.6211\\-176.8203\\-141\\-160.4252\\-174.8672\\-141\\-159.3959\\-172.9141\\-141\\-158.0067\\-170.9609\\-141\\-156.4834\\-169.0078\\-141\\-155.2734\\-167.14\\-141\\-153.5382\\-165.1016\\-141\\-149.4141\\-160.8539\\-141\\-147.4609\\-159.0741\\-141\\-145.5078\\-157.684\\-141\\-141.6016\\-154.4091\\-141\\-139.6484\\-152.9326\\-141\\-137.6953\\-152.0077\\-141\\-136.9629\\-151.4297\\-141\\-133.7891\\-149.328\\-141\\-131.8359\\-148.2672\\-141\\-129.8828\\-147.0453\\-141\\-127.9297\\-146.3182\\-141\\-125.9766\\-145.1838\\-141\\-124.0234\\-144.447\\-141\\-122.0703\\-143.3242\\-141\\-120.1172\\-142.4912\\-141\\-118.1641\\-141.4447\\-141\\-116.2109\\-140.7287\\-141\\-114.2578\\-140.1139\\-141\\-112.3047\\-139.2127\\-141\\-108.3984\\-138.207\\-141\\-106.4453\\-137.2813\\-141\\-102.5391\\-136.2016\\-141\\-100.5859\\-135.3608\\-141\\-96.67969\\-134.4436\\-141\\-94.72656\\-133.7824\\-141\\-92.77344\\-133.2278\\-141\\-88.86719\\-132.6554\\-141\\-86.91406\\-132.3009\\-141\\-84.96094\\-131.6475\\-141\\-83.00781\\-131.2387\\-141\\-75.19531\\-130.3147\\-141\\-69.33594\\-129.7096\\-141\\-65.42969\\-129.5683\\-141\\-61.52344\\-129.5783\\-141\\-59.57031\\-129.7215\\-141\\-53.71094\\-130.7074\\-141\\-51.75781\\-131.1161\\-141\\-49.80469\\-131.6594\\-141\\-47.85156\\-132.4466\\-141\\-43.94531\\-133.2412\\-141\\-41.99219\\-134.0742\\-141\\-38.08594\\-135.6371\\-141\\-34.17969\\-137.8619\\-141\\-32.22656\\-138.9003\\-141\\-30.27344\\-140.2565\\-141\\-28.32031\\-141.4462\\-141\\-25.95082\\-143.6172\\-141\\-22.18889\\-147.5234\\-141\\-20.50781\\-149.8081\\-141\\-18.02472\\-153.3828\\-141\\-17.25076\\-155.3359\\-141\\-16.06096\\-157.2891\\-141\\-15.39586\\-159.2422\\-141\\-14.47152\\-161.1953\\-141\\-13.90301\\-163.1484\\-141\\-13.1638\\-167.0547\\-141\\-12.52254\\-169.0078\\-141\\-12.02652\\-170.9609\\-141\\-11.77097\\-172.9141\\-141\\-11.24878\\-178.7734\\-141\\-10.4947\\-182.6797\\-141\\-10.26257\\-184.6328\\-141\\-10.15732\\-188.5391\\-141\\-10.31681\\-192.4453\\-141\\-10.53049\\-196.3516\\-141\\-10.53049\\-200.2578\\-141\\-10.31681\\-202.2109\\-141\\-10.07934\\-206.1172\\-141\\-9.859076\\-211.9766\\-141\\-9.84468\\-213.9297\\-141\\-9.960011\\-219.7891\\-141\\-10.16488\\-223.6953\\-141\\-10.39567\\-225.6484\\-141\\-11.57992\\-227.6016\\-141\\-11.36161\\-229.5547\\-141\\-11.49053\\-231.5078\\-141\\-11.87785\\-235.4141\\-141\\-12.14718\\-237.3672\\-141\\-13.17376\\-241.2734\\-141\\-13.82993\\-245.1797\\-141\\-14.34949\\-247.1328\\-141\\-15.24621\\-249.0859\\-141\\-15.70719\\-251.0391\\-141\\-16.30859\\-252.9922\\-141\\-17.28678\\-254.9453\\-141\\-17.80225\\-256.8984\\-141\\-18.76762\\-258.8516\\-141\\-19.42472\\-260.8047\\-141\\-19.97456\\-262.7578\\-141\\-21.05638\\-264.7109\\-141\\-21.8259\\-266.6641\\-141\\-23.06325\\-268.6172\\-141\\-23.91968\\-270.5703\\-141\\-25.20571\\-272.5234\\-141\\-25.98939\\-274.4766\\-141\\-29.74986\\-280.3359\\-141\\-32.61861\\-284.2422\\-141\\-33.68144\\-286.1953\\-141\\-35.29309\\-288.1484\\-141\\-38.92906\\-292.0547\\-141\\-40.03906\\-293.3044\\-141\\-41.99219\\-295.0212\\-141\\-43.94531\\-296.5574\\-141\\-49.80469\\-300.2976\\-141\\-55.66406\\-302.4693\\-141\\-59.57031\\-303.0524\\-141\\-61.52344\\-303.3973\\-141\\-63.47656\\-303.8542\\-141\\-65.42969\\-304.1604\\-141\\-69.33594\\-304.3877\\-141\\-73.24219\\-304.409\\-141\\-77.14844\\-304.2617\\-141"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002372"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "179"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-302.088\\-141\\57.61719\\-301.4394\\-141\\53.71094\\-300.5084\\-141\\51.75781\\-299.5852\\-141\\49.80469\\-298.7653\\-141\\47.85156\\-297.6361\\-141\\45.89844\\-296.6304\\-141\\43.94531\\-295.299\\-141\\41.99219\\-294.1528\\-141\\40.03906\\-292.6522\\-141\\38.08594\\-290.8324\\-141\\35.09347\\-288.1484\\-141\\33.19036\\-286.1953\\-141\\29.75125\\-282.2891\\-141\\28.1808\\-280.3359\\-141\\26.95184\\-278.3828\\-141\\25.61455\\-276.4297\\-141\\24.41406\\-274.2411\\-141\\22.46094\\-270.9593\\-141\\22.14656\\-270.5703\\-141\\21.26736\\-268.6172\\-141\\20.12392\\-266.6641\\-141\\18.80976\\-262.7578\\-141\\17.83265\\-260.8047\\-141\\17.28301\\-258.8516\\-141\\16.28675\\-256.8984\\-141\\15.10336\\-252.9922\\-141\\14.28223\\-251.0391\\-141\\13.48016\\-247.1328\\-141\\13.19019\\-245.1797\\-141\\12.53634\\-243.2266\\-141\\12.00701\\-241.2734\\-141\\11.56039\\-237.3672\\-141\\11.28078\\-235.4141\\-141\\10.2892\\-231.5078\\-141\\9.853148\\-227.6016\\-141\\9.355918\\-219.7891\\-141\\9.309506\\-217.8359\\-141\\9.099187\\-213.9297\\-141\\8.8125\\-210.0234\\-141\\8.736879\\-208.0703\\-141\\8.412035\\-204.1641\\-141\\8.34517\\-200.2578\\-141\\8.47425\\-198.3047\\-141\\9.118895\\-194.3984\\-141\\9.88483\\-188.5391\\-141\\10.13513\\-184.6328\\-141\\10.34546\\-182.6797\\-141\\11.11577\\-178.7734\\-141\\11.40625\\-176.8203\\-141\\12.09955\\-170.9609\\-141\\13.20623\\-167.0547\\-141\\13.93769\\-163.1484\\-141\\14.62573\\-161.1953\\-141\\15.51011\\-159.2422\\-141\\16.29352\\-157.2891\\-141\\16.60156\\-156.8718\\-141\\18.55469\\-153.4842\\-141\\19.84168\\-151.4297\\-141\\22.46094\\-148.2793\\-141\\24.41406\\-146.1807\\-141\\26.96132\\-143.6172\\-141\\28.32031\\-142.3387\\-141\\30.27344\\-140.6938\\-141\\32.22656\\-139.2683\\-141\\34.17969\\-138.2186\\-141\\34.74374\\-137.7578\\-141\\38.08594\\-135.7214\\-141\\41.99219\\-133.8436\\-141\\43.94531\\-133.057\\-141\\45.89844\\-132.6501\\-141\\49.80469\\-131.2316\\-141\\53.71094\\-130.6018\\-141\\57.61719\\-129.6635\\-141\\59.57031\\-129.4316\\-141\\61.52344\\-129.3168\\-141\\65.42969\\-129.2723\\-141\\69.33594\\-129.368\\-141\\73.24219\\-129.6092\\-141\\79.10156\\-130.3733\\-141\\81.05469\\-130.6722\\-141\\83.00781\\-130.7788\\-141\\88.86719\\-131.3348\\-141\\90.82031\\-131.7215\\-141\\92.77344\\-132.2579\\-141\\94.72656\\-132.6018\\-141\\98.63281\\-132.9881\\-141\\100.5859\\-133.2835\\-141\\102.5391\\-133.7524\\-141\\104.4922\\-134.3334\\-141\\108.3984\\-135.1371\\-141\\109.7566\\-135.8047\\-141\\110.3516\\-136.2668\\-141\\114.2578\\-136.9971\\-141\\116.2109\\-137.534\\-141\\118.1641\\-138.3573\\-141\\120.1172\\-138.8257\\-141\\122.0703\\-139.4121\\-141\\124.0234\\-140.3124\\-141\\125.9766\\-140.9197\\-141\\129.8828\\-142.8213\\-141\\131.8359\\-143.959\\-141\\133.7891\\-144.8408\\-141\\135.7422\\-146.0083\\-141\\137.6953\\-146.8919\\-141\\141.4248\\-149.4766\\-141\\145.5078\\-152.5767\\-141\\147.4609\\-154.2736\\-141\\149.4141\\-156.1972\\-141\\152.3969\\-159.2422\\-141\\154.2099\\-161.1953\\-141\\155.8206\\-163.1484\\-141\\157.0139\\-165.1016\\-141\\159.7837\\-169.0078\\-141\\160.7734\\-170.9609\\-141\\161.9228\\-172.9141\\-141\\162.5141\\-174.8672\\-141\\163.568\\-176.8203\\-141\\164.687\\-180.7266\\-141\\165.4764\\-182.6797\\-141\\165.9043\\-184.6328\\-141\\166.5847\\-188.5391\\-141\\167.0298\\-190.4922\\-141\\167.335\\-192.4453\\-141\\167.6647\\-196.3516\\-141\\167.8022\\-200.2578\\-141\\167.8317\\-204.1641\\-141\\167.7723\\-208.0703\\-141\\167.6217\\-211.9766\\-141\\167.2549\\-215.8828\\-141\\166.2268\\-221.7422\\-141\\165.6561\\-225.6484\\-141\\165.1338\\-227.6016\\-141\\164.4684\\-229.5547\\-141\\163.7198\\-233.4609\\-141\\162.9697\\-235.4141\\-141\\162.3428\\-237.3672\\-141\\161.9318\\-239.3203\\-141\\161.2015\\-241.2734\\-141\\160.2919\\-243.2266\\-141\\159.5563\\-245.1797\\-141\\158.3846\\-247.1328\\-141\\157.5936\\-249.0859\\-141\\156.4514\\-251.0391\\-141\\155.685\\-252.9922\\-141\\155.2734\\-253.6051\\-141\\153.3754\\-256.8984\\-141\\151.3672\\-259.8201\\-141\\150.5922\\-260.8047\\-141\\148.0429\\-264.7109\\-141\\145.5078\\-267.73\\-141\\141.185\\-272.5234\\-141\\139.6484\\-274.1632\\-141\\137.2845\\-276.4297\\-141\\133.7891\\-279.9439\\-141\\128.8003\\-284.2422\\-141\\125.9766\\-286.5005\\-141\\120.1172\\-290.3406\\-141\\118.1641\\-291.3826\\-141\\116.2109\\-292.777\\-141\\114.2578\\-293.7377\\-141\\112.3047\\-294.8145\\-141\\110.3516\\-295.4794\\-141\\108.3984\\-296.5372\\-141\\106.4453\\-297.1405\\-141\\104.4922\\-298.1378\\-141\\100.5859\\-299.4577\\-141\\98.63281\\-300.2767\\-141\\96.67969\\-300.7132\\-141\\92.77344\\-301.4447\\-141\\90.82031\\-301.9931\\-141\\88.86719\\-302.3793\\-141\\86.91406\\-302.6214\\-141\\81.05469\\-302.9999\\-141\\77.14844\\-303.1557\\-141\\75.19531\\-303.1839\\-141\\71.28906\\-303.1282\\-141\\63.47656\\-302.689\\-141\\61.52344\\-302.4817\\-141"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002371"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "182"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-303.84\\-139\\-83.00781\\-303.3922\\-139\\-84.96094\\-303.0933\\-139\\-88.86719\\-302.7239\\-139\\-90.82031\\-302.4526\\-139\\-92.77344\\-301.951\\-139\\-94.72656\\-301.3094\\-139\\-98.63281\\-300.4278\\-139\\-100.5859\\-299.5682\\-139\\-102.5391\\-298.8071\\-139\\-108.3984\\-296.0469\\-139\\-112.2261\\-294.0078\\-139\\-114.2578\\-292.7899\\-139\\-116.2109\\-291.2794\\-139\\-118.1641\\-289.9093\\-139\\-120.1172\\-288.8441\\-139\\-123.4422\\-286.1953\\-139\\-125.9766\\-283.9924\\-139\\-127.9297\\-282.5692\\-139\\-129.8828\\-280.8092\\-139\\-132.2389\\-278.3828\\-139\\-134.2473\\-276.4297\\-139\\-136.0703\\-274.4766\\-139\\-137.5299\\-272.5234\\-139\\-139.0987\\-270.5703\\-139\\-140.8191\\-268.6172\\-139\\-142.3966\\-266.6641\\-139\\-144.842\\-262.7578\\-139\\-146.3408\\-260.8047\\-139\\-147.6431\\-258.8516\\-139\\-148.6468\\-256.8984\\-139\\-149.858\\-254.9453\\-139\\-150.6392\\-252.9922\\-139\\-151.9104\\-251.0391\\-139\\-152.8256\\-249.0859\\-139\\-153.9848\\-247.1328\\-139\\-154.7181\\-245.1797\\-139\\-155.748\\-243.2266\\-139\\-156.3309\\-241.2734\\-139\\-158.0421\\-237.3672\\-139\\-158.7381\\-235.4141\\-139\\-159.7401\\-233.4609\\-139\\-160.2965\\-231.5078\\-139\\-161.794\\-227.6016\\-139\\-162.4962\\-223.6953\\-139\\-163.1995\\-221.7422\\-139\\-163.7612\\-219.7891\\-139\\-164.465\\-215.8828\\-139\\-165.5723\\-211.9766\\-139\\-166.1123\\-208.0703\\-139\\-166.4919\\-204.1641\\-139\\-166.7636\\-200.2578\\-139\\-166.7498\\-198.3047\\-139\\-166.4418\\-194.3984\\-139\\-165.9708\\-190.4922\\-139\\-165.6638\\-188.5391\\-139\\-165.1611\\-186.5859\\-139\\-164.4287\\-184.6328\\-139\\-163.9488\\-182.6797\\-139\\-163.3102\\-180.7266\\-139\\-162.3488\\-178.7734\\-139\\-161.7213\\-176.8203\\-139\\-160.5286\\-174.8672\\-139\\-159.5294\\-172.9141\\-139\\-157.2266\\-169.7813\\-139\\-156.5863\\-169.0078\\-139\\-155.3319\\-167.0547\\-139\\-153.6536\\-165.1016\\-139\\-149.4141\\-160.8031\\-139\\-147.4609\\-159.0596\\-139\\-145.5078\\-157.6984\\-139\\-141.6016\\-154.4397\\-139\\-139.6484\\-152.9683\\-139\\-137.6953\\-152.0392\\-139\\-135.7422\\-150.6427\\-139\\-133.7891\\-149.41\\-139\\-130.4726\\-147.5234\\-139\\-129.8828\\-147.1039\\-139\\-127.9297\\-146.3503\\-139\\-125.9766\\-145.2425\\-139\\-124.0234\\-144.4809\\-139\\-122.0703\\-143.3581\\-139\\-120.1172\\-142.5019\\-139\\-118.1641\\-141.4574\\-139\\-116.2109\\-140.7169\\-139\\-114.2578\\-140.0892\\-139\\-112.3047\\-139.1897\\-139\\-108.3984\\-138.1603\\-139\\-106.4453\\-137.2466\\-139\\-104.4922\\-136.7301\\-139\\-102.5391\\-136.0923\\-139\\-100.5859\\-135.2797\\-139\\-96.67969\\-134.3463\\-139\\-94.72656\\-133.6402\\-139\\-92.77344\\-133.133\\-139\\-88.86719\\-132.5672\\-139\\-86.91406\\-132.1098\\-139\\-84.96094\\-131.4773\\-139\\-83.00781\\-131.1416\\-139\\-77.14844\\-130.448\\-139\\-73.24219\\-129.8506\\-139\\-71.28906\\-129.6504\\-139\\-67.38281\\-129.3949\\-139\\-65.42969\\-129.3605\\-139\\-61.52344\\-129.4142\\-139\\-59.57031\\-129.5461\\-139\\-57.61719\\-129.8099\\-139\\-55.66406\\-130.2576\\-139\\-51.75781\\-130.9866\\-139\\-49.80469\\-131.4624\\-139\\-47.85156\\-132.2629\\-139\\-43.94531\\-133.116\\-139\\-41.99219\\-133.8436\\-139\\-40.03906\\-134.7126\\-139\\-38.08594\\-135.4526\\-139\\-36.13281\\-136.6285\\-139\\-34.17969\\-137.677\\-139\\-32.22656\\-138.8352\\-139\\-30.27344\\-140.175\\-139\\-28.32031\\-141.329\\-139\\-25.81018\\-143.6172\\-139\\-22.03954\\-147.5234\\-139\\-20.50781\\-149.5829\\-139\\-17.98405\\-153.3828\\-139\\-17.24709\\-155.3359\\-139\\-16.08112\\-157.2891\\-139\\-15.41574\\-159.2422\\-139\\-14.52546\\-161.1953\\-139\\-13.92613\\-163.1484\\-139\\-13.18687\\-167.0547\\-139\\-12.53756\\-169.0078\\-139\\-12.05426\\-170.9609\\-139\\-11.79751\\-172.9141\\-139\\-11.47056\\-176.8203\\-139\\-11.25458\\-178.7734\\-139\\-10.5678\\-182.6797\\-139\\-10.33579\\-184.6328\\-139\\-10.23687\\-188.5391\\-139\\-10.2983\\-190.4922\\-139\\-10.64745\\-194.3984\\-139\\-10.75013\\-196.3516\\-139\\-10.63368\\-200.2578\\-139\\-10.39567\\-202.2109\\-139\\-9.997914\\-208.0703\\-139\\-9.905802\\-211.9766\\-139\\-9.992074\\-219.7891\\-139\\-10.22023\\-223.6953\\-139\\-10.47165\\-225.6484\\-139\\-11.59075\\-227.6016\\-139\\-11.51816\\-231.5078\\-139\\-11.90186\\-235.4141\\-139\\-12.19733\\-237.3672\\-139\\-13.20623\\-241.2734\\-139\\-13.84788\\-245.1797\\-139\\-14.32729\\-247.1328\\-139\\-15.1784\\-249.0859\\-139\\-16.36584\\-252.9922\\-139\\-17.31806\\-254.9453\\-139\\-17.8371\\-256.8984\\-139\\-18.85679\\-258.8516\\-139\\-20.03933\\-262.7578\\-139\\-21.13767\\-264.7109\\-139\\-21.90369\\-266.6641\\-139\\-23.14397\\-268.6172\\-139\\-24.03249\\-270.5703\\-139\\-25.26004\\-272.5234\\-139\\-26.06614\\-274.4766\\-139\\-28.62762\\-278.3828\\-139\\-29.81771\\-280.3359\\-139\\-32.6629\\-284.2422\\-139\\-33.74945\\-286.1953\\-139\\-35.35031\\-288.1484\\-139\\-40.03906\\-293.2498\\-139\\-41.99219\\-294.9782\\-139\\-43.94531\\-296.4795\\-139\\-49.80469\\-300.2301\\-139\\-55.66406\\-302.4485\\-139\\-59.57031\\-303.034\\-139\\-65.42969\\-304.1302\\-139\\-69.33594\\-304.3732\\-139\\-73.24219\\-304.402\\-139\\-77.14844\\-304.2531\\-139"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002371"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "170"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "59.57031\\-301.9931\\-139\\57.61719\\-301.3825\\-139\\53.71094\\-300.4483\\-139\\51.75781\\-299.4911\\-139\\49.80469\\-298.7131\\-139\\47.85156\\-297.5411\\-139\\45.89844\\-296.5728\\-139\\43.94531\\-295.2431\\-139\\41.99219\\-294.0316\\-139\\40.03906\\-292.582\\-139\\35.13532\\-288.1484\\-139\\33.2224\\-286.1953\\-139\\29.78857\\-282.2891\\-139\\28.2234\\-280.3359\\-139\\25.62225\\-276.4297\\-139\\24.41406\\-274.2586\\-139\\22.46094\\-270.9758\\-139\\22.13542\\-270.5703\\-139\\21.25594\\-268.6172\\-139\\20.12392\\-266.6641\\-139\\18.80787\\-262.7578\\-139\\17.82614\\-260.8047\\-139\\17.30745\\-258.8516\\-139\\16.31974\\-256.8984\\-139\\15.13076\\-252.9922\\-139\\14.30339\\-251.0391\\-139\\13.87533\\-249.0859\\-139\\13.19661\\-245.1797\\-139\\12.08726\\-241.2734\\-139\\11.38762\\-235.4141\\-139\\10.97238\\-233.4609\\-139\\10.43822\\-231.5078\\-139\\10.10665\\-229.5547\\-139\\9.937686\\-227.6016\\-139\\9.591239\\-221.7422\\-139\\9.243983\\-213.9297\\-139\\8.872335\\-208.0703\\-139\\8.44254\\-204.1641\\-139\\8.373119\\-200.2578\\-139\\8.507236\\-198.3047\\-139\\9.250383\\-194.3984\\-139\\9.941499\\-188.5391\\-139\\10.18025\\-184.6328\\-139\\10.39567\\-182.6797\\-139\\11.14695\\-178.7734\\-139\\11.41357\\-176.8203\\-139\\12.09106\\-170.9609\\-139\\13.21572\\-167.0547\\-139\\13.93769\\-163.1484\\-139\\14.61088\\-161.1953\\-139\\15.50424\\-159.2422\\-139\\16.29352\\-157.2891\\-139\\16.60156\\-156.868\\-139\\18.55469\\-153.4293\\-139\\19.79933\\-151.4297\\-139\\22.46094\\-148.2268\\-139\\24.41406\\-146.1273\\-139\\26.9043\\-143.6172\\-139\\28.32031\\-142.2777\\-139\\30.27344\\-140.6364\\-139\\32.22656\\-139.1888\\-139\\34.17969\\-138.1123\\-139\\34.59944\\-137.7578\\-139\\38.08594\\-135.5853\\-139\\40.03906\\-134.719\\-139\\41.99219\\-133.7088\\-139\\43.94531\\-133.0136\\-139\\45.89844\\-132.5994\\-139\\49.80469\\-131.1685\\-139\\53.71094\\-130.4764\\-139\\55.66406\\-129.9377\\-139\\57.61719\\-129.5014\\-139\\59.57031\\-129.3098\\-139\\63.47656\\-129.1459\\-139\\69.33594\\-129.2265\\-139\\73.24219\\-129.3991\\-139\\77.14844\\-129.7837\\-139\\81.05469\\-130.4426\\-139\\88.86719\\-131.2082\\-139\\90.82031\\-131.5166\\-139\\94.72656\\-132.4696\\-139\\100.5859\\-133.133\\-139\\102.5391\\-133.5008\\-139\\104.4922\\-134.0903\\-139\\108.3984\\-134.9591\\-139\\110.3516\\-135.5171\\-139\\112.3047\\-136.2283\\-139\\114.2578\\-136.8324\\-139\\116.2109\\-137.2374\\-139\\118.1641\\-138.0621\\-139\\120.1172\\-138.6666\\-139\\122.0703\\-139.1315\\-139\\124.0234\\-140.0602\\-139\\125.9766\\-140.7173\\-139\\127.9297\\-141.5235\\-139\\131.8359\\-143.5491\\-139\\135.5405\\-145.5703\\-139\\137.6953\\-146.6767\\-139\\141.6016\\-149.2307\\-139\\145.5078\\-152.4063\\-139\\147.4609\\-154.1119\\-139\\149.4141\\-156.0257\\-139\\152.5563\\-159.2422\\-139\\154.3362\\-161.1953\\-139\\155.971\\-163.1484\\-139\\158.4667\\-167.0547\\-139\\159.8804\\-169.0078\\-139\\161.9743\\-172.9141\\-139\\162.5877\\-174.8672\\-139\\163.6292\\-176.8203\\-139\\164.1372\\-178.7734\\-139\\164.7949\\-180.7266\\-139\\165.5503\\-182.6797\\-139\\165.9555\\-184.6328\\-139\\166.6534\\-188.5391\\-139\\167.0876\\-190.4922\\-139\\167.379\\-192.4453\\-139\\167.6839\\-196.3516\\-139\\167.8251\\-200.2578\\-139\\167.8545\\-204.1641\\-139\\167.786\\-208.0703\\-139\\167.6296\\-211.9766\\-139\\167.2778\\-215.8828\\-139\\166.2332\\-221.7422\\-139\\165.6454\\-225.6484\\-139\\165.1057\\-227.6016\\-139\\164.4601\\-229.5547\\-139\\163.7121\\-233.4609\\-139\\162.9552\\-235.4141\\-139\\162.3305\\-237.3672\\-139\\161.9248\\-239.3203\\-139\\161.1866\\-241.2734\\-139\\160.281\\-243.2266\\-139\\159.5459\\-245.1797\\-139\\158.3739\\-247.1328\\-139\\157.5731\\-249.0859\\-139\\156.4392\\-251.0391\\-139\\155.6485\\-252.9922\\-139\\153.3203\\-256.8673\\-139\\152.0051\\-258.8516\\-139\\150.5452\\-260.8047\\-139\\147.9731\\-264.7109\\-139\\146.3593\\-266.6641\\-139\\143.5547\\-269.834\\-139\\139.6484\\-274.1076\\-139\\135.7422\\-277.9327\\-139\\133.7891\\-279.9381\\-139\\128.7613\\-284.2422\\-139\\125.9766\\-286.5005\\-139\\120.1172\\-290.3406\\-139\\118.1641\\-291.3751\\-139\\116.2109\\-292.777\\-139\\114.2578\\-293.7516\\-139\\112.3047\\-294.8337\\-139\\110.3516\\-295.493\\-139\\108.3984\\-296.5493\\-139\\106.4453\\-297.1515\\-139\\104.4922\\-298.1378\\-139\\100.5859\\-299.4703\\-139\\98.63281\\-300.2866\\-139\\96.67969\\-300.7196\\-139\\92.77344\\-301.4558\\-139\\90.82031\\-301.9931\\-139\\88.86719\\-302.37\\-139\\86.91406\\-302.6167\\-139\\81.05469\\-302.9889\\-139\\75.19531\\-303.1638\\-139\\71.28906\\-303.1013\\-139\\63.47656\\-302.6648\\-139\\61.52344\\-302.4315\\-139"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002370"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "178"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-303.8542\\-137\\-83.00781\\-303.4276\\-137\\-84.96094\\-303.1244\\-137\\-88.86719\\-302.7351\\-137\\-90.82031\\-302.4526\\-137\\-92.77344\\-301.9653\\-137\\-94.72656\\-301.3223\\-137\\-98.63281\\-300.4278\\-137\\-102.5391\\-298.8071\\-137\\-106.4453\\-296.9375\\-137\\-108.3984\\-296.0617\\-137\\-112.2261\\-294.0078\\-137\\-114.2578\\-292.7942\\-137\\-116.2109\\-291.284\\-137\\-118.1641\\-289.9233\\-137\\-120.1172\\-288.8523\\-137\\-123.4531\\-286.1953\\-137\\-125.9766\\-284.0057\\-137\\-127.9297\\-282.582\\-137\\-129.8828\\-280.8205\\-137\\-136.1224\\-274.4766\\-137\\-137.5895\\-272.5234\\-137\\-139.1635\\-270.5703\\-137\\-140.8803\\-268.6172\\-137\\-142.436\\-266.6641\\-137\\-144.9298\\-262.7578\\-137\\-145.5078\\-262.0614\\-137\\-147.7469\\-258.8516\\-137\\-148.7175\\-256.8984\\-137\\-149.9353\\-254.9453\\-137\\-150.7263\\-252.9922\\-137\\-151.9967\\-251.0391\\-137\\-152.9257\\-249.0859\\-137\\-154.0527\\-247.1328\\-137\\-154.8018\\-245.1797\\-137\\-155.8248\\-243.2266\\-137\\-156.3904\\-241.2734\\-137\\-157.3213\\-239.3203\\-137\\-158.8454\\-235.4141\\-137\\-159.8184\\-233.4609\\-137\\-160.3592\\-231.5078\\-137\\-161.8577\\-227.6016\\-137\\-162.5621\\-223.6953\\-137\\-163.3212\\-221.7422\\-137\\-163.8318\\-219.7891\\-137\\-164.5726\\-215.8828\\-137\\-165.2007\\-213.9297\\-137\\-165.66\\-211.9766\\-137\\-166.2204\\-208.0703\\-137\\-166.6448\\-204.1641\\-137\\-166.9537\\-200.2578\\-137\\-166.776\\-196.3516\\-137\\-166.0457\\-190.4922\\-137\\-165.7424\\-188.5391\\-137\\-165.2865\\-186.5859\\-137\\-164.5114\\-184.6328\\-137\\-163.4206\\-180.7266\\-137\\-162.4242\\-178.7734\\-137\\-161.807\\-176.8203\\-137\\-160.6225\\-174.8672\\-137\\-159.6426\\-172.9141\\-137\\-157.2266\\-169.6615\\-137\\-156.6714\\-169.0078\\-137\\-155.4268\\-167.0547\\-137\\-153.7335\\-165.1016\\-137\\-149.4141\\-160.7789\\-137\\-147.4609\\-159.0755\\-137\\-145.5078\\-157.7239\\-137\\-141.6016\\-154.4699\\-137\\-139.6484\\-153.0428\\-137\\-137.6953\\-152.0872\\-137\\-135.7422\\-150.7031\\-137\\-130.3474\\-147.5234\\-137\\-129.8828\\-147.1767\\-137\\-127.9297\\-146.3821\\-137\\-125.9766\\-145.3046\\-137\\-124.0234\\-144.5208\\-137\\-122.0703\\-143.4055\\-137\\-120.1172\\-142.5232\\-137\\-118.1641\\-141.4702\\-137\\-114.2578\\-140.0552\\-137\\-112.3047\\-139.1575\\-137\\-110.3516\\-138.6658\\-137\\-108.3984\\-138.0695\\-137\\-106.4453\\-137.1863\\-137\\-104.4922\\-136.6862\\-137\\-100.5859\\-135.1882\\-137\\-96.67969\\-134.2023\\-137\\-94.72656\\-133.4733\\-137\\-92.77344\\-133.0498\\-137\\-88.86719\\-132.4305\\-137\\-84.96094\\-131.3191\\-137\\-83.00781\\-131.0299\\-137\\-79.10156\\-130.5875\\-137\\-75.19531\\-129.8931\\-137\\-71.28906\\-129.4241\\-137\\-67.38281\\-129.1764\\-137\\-65.42969\\-129.1608\\-137\\-61.52344\\-129.2524\\-137\\-57.61719\\-129.5965\\-137\\-53.71094\\-130.4609\\-137\\-49.80469\\-131.2675\\-137\\-45.89844\\-132.6037\\-137\\-43.94531\\-132.9895\\-137\\-41.99219\\-133.5715\\-137\\-40.03906\\-134.5413\\-137\\-38.08594\\-135.2615\\-137\\-36.13281\\-136.4808\\-137\\-34.17969\\-137.4498\\-137\\-30.70854\\-139.7109\\-137\\-28.32031\\-141.1826\\-137\\-26.36719\\-142.9138\\-137\\-21.89453\\-147.5234\\-137\\-20.36171\\-149.4766\\-137\\-19.24214\\-151.4297\\-137\\-17.96759\\-153.3828\\-137\\-17.24709\\-155.3359\\-137\\-16.10151\\-157.2891\\-137\\-15.44356\\-159.2422\\-137\\-14.58185\\-161.1953\\-137\\-13.94924\\-163.1484\\-137\\-13.24142\\-167.0547\\-137\\-12.625\\-169.0078\\-137\\-12.10814\\-170.9609\\-137\\-11.83143\\-172.9141\\-137\\-11.49462\\-176.8203\\-137\\-11.2754\\-178.7734\\-137\\-10.66142\\-182.6797\\-137\\-10.41667\\-184.6328\\-137\\-10.31681\\-188.5391\\-137\\-10.55519\\-192.4453\\-137\\-10.86796\\-194.3984\\-137\\-10.96156\\-196.3516\\-137\\-10.69\\-200.2578\\-137\\-10.2892\\-204.1641\\-137\\-10.02798\\-208.0703\\-137\\-9.943182\\-211.9766\\-137\\-10.01578\\-219.7891\\-137\\-10.27135\\-223.6953\\-137\\-10.54275\\-225.6484\\-137\\-11.51021\\-227.6016\\-137\\-11.54119\\-231.5078\\-137\\-11.91518\\-235.4141\\-137\\-12.22997\\-237.3672\\-137\\-13.23785\\-241.2734\\-137\\-13.87747\\-245.1797\\-137\\-14.34039\\-247.1328\\-137\\-15.16025\\-249.0859\\-137\\-16.41456\\-252.9922\\-137\\-17.35476\\-254.9453\\-137\\-17.8689\\-256.8984\\-137\\-18.90542\\-258.8516\\-137\\-20.10769\\-262.7578\\-137\\-21.19814\\-264.7109\\-137\\-21.95562\\-266.6641\\-137\\-23.21\\-268.6172\\-137\\-24.12446\\-270.5703\\-137\\-25.3116\\-272.5234\\-137\\-26.14765\\-274.4766\\-137\\-27.36742\\-276.4297\\-137\\-28.707\\-278.3828\\-137\\-29.8865\\-280.3359\\-137\\-32.69777\\-284.2422\\-137\\-33.82138\\-286.1953\\-137\\-35.39088\\-288.1484\\-137\\-40.03906\\-293.1929\\-137\\-41.99219\\-294.9346\\-137\\-43.94531\\-296.4004\\-137\\-49.80469\\-300.1588\\-137\\-53.71094\\-301.6325\\-137\\-55.66406\\-302.4189\\-137\\-57.61719\\-302.7638\\-137\\-61.52344\\-303.333\\-137\\-65.42969\\-304.099\\-137\\-67.38281\\-304.2703\\-137\\-71.28906\\-304.3949\\-137\\-75.19531\\-304.3507\\-137\\-77.14844\\-304.2443\\-137"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002370"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "172"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "57.61719\\-301.3026\\-137\\53.71094\\-300.377\\-137\\51.75781\\-299.4073\\-137\\49.80469\\-298.6412\\-137\\47.85156\\-297.429\\-137\\45.89844\\-296.4873\\-137\\42.12042\\-294.0078\\-137\\40.03906\\-292.51\\-137\\35.17718\\-288.1484\\-137\\33.25486\\-286.1953\\-137\\29.82325\\-282.2891\\-137\\28.2527\\-280.3359\\-137\\25.64264\\-276.4297\\-137\\24.41406\\-274.2605\\-137\\22.46094\\-271.0179\\-137\\22.10046\\-270.5703\\-137\\21.24452\\-268.6172\\-137\\20.11045\\-266.6641\\-137\\18.80787\\-262.7578\\-137\\17.82614\\-260.8047\\-137\\17.30363\\-258.8516\\-137\\16.35408\\-256.8984\\-137\\15.15719\\-252.9922\\-137\\14.34949\\-251.0391\\-137\\13.90301\\-249.0859\\-137\\13.25061\\-245.1797\\-137\\12.78057\\-243.2266\\-137\\12.18776\\-241.2734\\-137\\11.89076\\-239.3203\\-137\\11.47056\\-235.4141\\-137\\11.15437\\-233.4609\\-137\\10.22023\\-229.5547\\-137\\10.02798\\-227.6016\\-137\\9.598775\\-219.7891\\-137\\9.359195\\-213.9297\\-137\\8.901743\\-208.0703\\-137\\8.47425\\-204.1641\\-137\\8.402122\\-202.2109\\-137\\8.432241\\-200.2578\\-137\\8.589623\\-198.3047\\-137\\9.409015\\-194.3984\\-137\\9.986291\\-188.5391\\-137\\10.22023\\-184.6328\\-137\\10.41667\\-182.6797\\-137\\11.1443\\-178.7734\\-137\\11.41357\\-176.8203\\-137\\12.07886\\-170.9609\\-137\\13.20623\\-167.0547\\-137\\13.92613\\-163.1484\\-137\\14.58185\\-161.1953\\-137\\15.49831\\-159.2422\\-137\\16.28041\\-157.2891\\-137\\17.47019\\-155.3359\\-137\\18.51563\\-153.3828\\-137\\19.7532\\-151.4297\\-137\\22.46094\\-148.1676\\-137\\24.41406\\-146.0623\\-137\\28.32031\\-142.1936\\-137\\30.27344\\-140.5598\\-137\\32.22656\\-139.1014\\-137\\37.6279\\-135.8047\\-137\\38.08594\\-135.4502\\-137\\40.03906\\-134.6458\\-137\\41.99219\\-133.6002\\-137\\43.94531\\-132.9643\\-137\\45.89844\\-132.5311\\-137\\47.85156\\-131.6837\\-137\\49.80469\\-131.1065\\-137\\53.71094\\-130.3347\\-137\\55.66406\\-129.7096\\-137\\57.61719\\-129.3757\\-137\\61.52344\\-129.098\\-137\\63.47656\\-129.031\\-137\\67.38281\\-129.0219\\-137\\73.24219\\-129.2166\\-137\\77.14844\\-129.5014\\-137\\79.10156\\-129.7583\\-137\\83.00781\\-130.451\\-137\\88.86719\\-131.0662\\-137\\90.82031\\-131.3114\\-137\\92.77344\\-131.6837\\-137\\94.72656\\-132.224\\-137\\96.67969\\-132.5635\\-137\\100.5859\\-132.9762\\-137\\102.5391\\-133.2618\\-137\\104.4922\\-133.7229\\-137\\106.4453\\-134.3169\\-137\\110.3516\\-135.1517\\-137\\112.3047\\-135.7092\\-137\\114.2578\\-136.5544\\-137\\116.2109\\-136.9413\\-137\\118.1641\\-137.5822\\-137\\120.1172\\-138.4269\\-137\\122.0703\\-138.9071\\-137\\124.0234\\-139.6389\\-137\\125.9766\\-140.476\\-137\\127.9297\\-141.1402\\-137\\129.8828\\-142.2799\\-137\\131.8359\\-143.1477\\-137\\133.7891\\-144.3853\\-137\\135.7422\\-145.328\\-137\\139.4892\\-147.5234\\-137\\141.6016\\-148.9176\\-137\\145.5078\\-152.2275\\-137\\147.0058\\-153.3828\\-137\\149.4141\\-155.6875\\-137\\152.843\\-159.2422\\-137\\156.1151\\-163.1484\\-137\\157.4475\\-165.1016\\-137\\158.6153\\-167.0547\\-137\\160.0052\\-169.0078\\-137\\161.1328\\-171.0722\\-137\\162.0422\\-172.9141\\-137\\162.6912\\-174.8672\\-137\\163.6956\\-176.8203\\-137\\164.1981\\-178.7734\\-137\\165.6337\\-182.6797\\-137\\166.724\\-188.5391\\-137\\167.1419\\-190.4922\\-137\\167.6099\\-194.3984\\-137\\167.8431\\-200.2578\\-137\\167.8545\\-204.1641\\-137\\167.7974\\-208.0703\\-137\\167.6296\\-211.9766\\-137\\167.2891\\-215.8828\\-137\\166.5728\\-219.7891\\-137\\165.6337\\-225.6484\\-137\\164.4554\\-229.5547\\-137\\163.7042\\-233.4609\\-137\\162.3305\\-237.3672\\-137\\161.9057\\-239.3203\\-137\\161.1716\\-241.2734\\-137\\160.2702\\-243.2266\\-137\\159.5225\\-245.1797\\-137\\158.3632\\-247.1328\\-137\\157.5521\\-249.0859\\-137\\156.4148\\-251.0391\\-137\\155.6343\\-252.9922\\-137\\153.3203\\-256.7662\\-137\\151.9704\\-258.8516\\-137\\150.5066\\-260.8047\\-137\\149.4141\\-262.5185\\-137\\147.8834\\-264.7109\\-137\\146.2927\\-266.6641\\-137\\141.0935\\-272.5234\\-137\\139.6484\\-274.0732\\-137\\135.7422\\-277.9174\\-137\\133.7891\\-279.9091\\-137\\128.7371\\-284.2422\\-137\\125.9766\\-286.489\\-137\\120.1172\\-290.3285\\-137\\118.1641\\-291.3637\\-137\\116.2109\\-292.7813\\-137\\112.3047\\-294.8457\\-137\\110.3516\\-295.5139\\-137\\108.3984\\-296.5577\\-137\\106.4453\\-297.1515\\-137\\104.4922\\-298.1378\\-137\\100.5859\\-299.4703\\-137\\98.63281\\-300.2866\\-137\\96.67969\\-300.7196\\-137\\92.77344\\-301.4447\\-137\\90.82031\\-301.9793\\-137\\88.86719\\-302.3571\\-137\\86.91406\\-302.6097\\-137\\84.96094\\-302.7527\\-137\\79.10156\\-303.0424\\-137\\75.19531\\-303.136\\-137\\71.28906\\-303.0607\\-137\\65.42969\\-302.7638\\-137\\63.47656\\-302.6097\\-137\\61.52344\\-302.3571\\-137"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002369"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "185"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-303.84\\-135\\-84.96094\\-303.1594\\-135\\-88.86719\\-302.7411\\-135\\-90.82031\\-302.461\\-135\\-92.77344\\-301.951\\-135\\-94.72656\\-301.3223\\-135\\-98.63281\\-300.4157\\-135\\-100.5859\\-299.5591\\-135\\-102.5391\\-298.8127\\-135\\-106.4453\\-296.9268\\-135\\-108.3984\\-296.0469\\-135\\-112.2037\\-294.0078\\-135\\-114.2578\\-292.8011\\-135\\-116.2109\\-291.284\\-135\\-118.1641\\-289.9375\\-135\\-120.1172\\-288.8523\\-135\\-123.4422\\-286.1953\\-135\\-125.9766\\-284.0209\\-135\\-127.9297\\-282.582\\-135\\-129.8828\\-280.8316\\-135\\-136.1607\\-274.4766\\-135\\-137.6374\\-272.5234\\-135\\-140.9225\\-268.6172\\-135\\-142.4731\\-266.6641\\-135\\-144.9992\\-262.7578\\-135\\-145.5078\\-262.1575\\-135\\-147.8229\\-258.8516\\-135\\-148.774\\-256.8984\\-135\\-150.0077\\-254.9453\\-135\\-150.7939\\-252.9922\\-135\\-152.0769\\-251.0391\\-135\\-153.0323\\-249.0859\\-135\\-154.1162\\-247.1328\\-135\\-154.8814\\-245.1797\\-135\\-155.9008\\-243.2266\\-135\\-156.4441\\-241.2734\\-135\\-157.4398\\-239.3203\\-135\\-158.9373\\-235.4141\\-135\\-159.8838\\-233.4609\\-135\\-160.4241\\-231.5078\\-135\\-161.2744\\-229.5547\\-135\\-161.901\\-227.6016\\-135\\-162.6275\\-223.6953\\-135\\-163.4294\\-221.7422\\-135\\-163.8911\\-219.7891\\-135\\-164.2226\\-217.8359\\-135\\-164.6893\\-215.8828\\-135\\-165.343\\-213.9297\\-135\\-165.746\\-211.9766\\-135\\-166.5827\\-206.1172\\-135\\-167.0298\\-202.2109\\-135\\-167.1276\\-200.2578\\-135\\-167.0869\\-198.3047\\-135\\-166.9235\\-196.3516\\-135\\-165.8074\\-188.5391\\-135\\-165.3752\\-186.5859\\-135\\-164.5821\\-184.6328\\-135\\-163.5192\\-180.7266\\-135\\-162.4987\\-178.7734\\-135\\-161.873\\-176.8203\\-135\\-160.7068\\-174.8672\\-135\\-159.7174\\-172.9141\\-135\\-156.7179\\-169.0078\\-135\\-155.4719\\-167.0547\\-135\\-153.7751\\-165.1016\\-135\\-149.4141\\-160.7789\\-135\\-147.4609\\-159.1211\\-135\\-145.5078\\-157.7704\\-135\\-141.6016\\-154.5171\\-135\\-139.6484\\-153.1499\\-135\\-137.6953\\-152.1428\\-135\\-135.7422\\-150.7767\\-135\\-130.2237\\-147.5234\\-135\\-129.8828\\-147.2518\\-135\\-127.9297\\-146.4187\\-135\\-125.9766\\-145.3706\\-135\\-124.0234\\-144.5432\\-135\\-122.0703\\-143.4556\\-135\\-120.1172\\-142.5398\\-135\\-118.1641\\-141.4558\\-135\\-114.2578\\-140.0175\\-135\\-112.3047\\-139.1085\\-135\\-110.3516\\-138.6202\\-135\\-108.3984\\-137.9428\\-135\\-106.4453\\-137.1085\\-135\\-104.4922\\-136.6022\\-135\\-102.5391\\-135.7239\\-135\\-100.5859\\-135.0736\\-135\\-98.63281\\-134.6041\\-135\\-94.72656\\-133.3018\\-135\\-90.82031\\-132.6691\\-135\\-88.86719\\-132.2467\\-135\\-86.91406\\-131.5794\\-135\\-84.96094\\-131.1915\\-135\\-79.10156\\-130.451\\-135\\-75.19531\\-129.6748\\-135\\-71.28906\\-129.2171\\-135\\-67.38281\\-129.0124\\-135\\-65.42969\\-128.9906\\-135\\-61.52344\\-129.0767\\-135\\-57.61719\\-129.431\\-135\\-55.66406\\-129.7336\\-135\\-53.71094\\-130.2597\\-135\\-49.80469\\-131.0981\\-135\\-47.85156\\-131.6015\\-135\\-45.89844\\-132.4128\\-135\\-41.99219\\-133.3303\\-135\\-40.03906\\-134.2997\\-135\\-38.08594\\-135.0636\\-135\\-36.13281\\-136.2279\\-135\\-34.17969\\-137.204\\-135\\-32.22656\\-138.5684\\-135\\-28.32031\\-141.0152\\-135\\-26.36719\\-142.7469\\-135\\-24.41406\\-144.7226\\-135\\-21.75705\\-147.5234\\-135\\-20.21123\\-149.4766\\-135\\-19.19922\\-151.4297\\-135\\-17.94362\\-153.3828\\-135\\-17.25812\\-155.3359\\-135\\-16.11032\\-157.2891\\-135\\-15.4772\\-159.2422\\-135\\-14.61088\\-161.1953\\-135\\-13.96484\\-163.1484\\-135\\-13.29385\\-167.0547\\-135\\-12.17831\\-170.9609\\-135\\-11.87785\\-172.9141\\-135\\-11.32111\\-178.7734\\-135\\-10.53049\\-184.6328\\-135\\-10.4061\\-188.5391\\-135\\-10.50647\\-190.4922\\-135\\-10.70463\\-192.4453\\-135\\-11.02218\\-194.3984\\-135\\-11.08099\\-196.3516\\-135\\-10.81085\\-200.2578\\-135\\-10.15732\\-206.1172\\-135\\-10.05959\\-208.0703\\-135\\-9.971217\\-211.9766\\-135\\-10.04676\\-219.7891\\-135\\-10.32624\\-223.6953\\-135\\-10.59358\\-225.6484\\-135\\-11.22437\\-227.6016\\-135\\-11.56012\\-229.5547\\-135\\-11.55341\\-231.5078\\-135\\-11.94018\\-235.4141\\-135\\-12.25322\\-237.3672\\-135\\-12.80975\\-239.3203\\-135\\-13.25969\\-241.2734\\-135\\-13.9074\\-245.1797\\-135\\-14.39925\\-247.1328\\-135\\-15.21382\\-249.0859\\-135\\-15.76803\\-251.0391\\-135\\-16.49306\\-252.9922\\-135\\-17.40011\\-254.9453\\-135\\-17.91295\\-256.8984\\-135\\-18.94124\\-258.8516\\-135\\-20.16844\\-262.7578\\-135\\-21.24161\\-264.7109\\-135\\-21.99897\\-266.6641\\-135\\-23.24548\\-268.6172\\-135\\-24.19936\\-270.5703\\-135\\-25.33418\\-272.5234\\-135\\-26.21993\\-274.4766\\-135\\-27.41477\\-276.4297\\-135\\-28.75077\\-278.3828\\-135\\-29.93735\\-280.3359\\-135\\-32.73519\\-284.2422\\-135\\-33.87318\\-286.1953\\-135\\-35.43709\\-288.1484\\-135\\-40.03906\\-293.1302\\-135\\-41.99219\\-294.878\\-135\\-43.94531\\-296.3271\\-135\\-45.89844\\-297.5025\\-135\\-47.85156\\-298.8906\\-135\\-49.80469\\-300.099\\-135\\-51.75781\\-300.8973\\-135\\-53.71094\\-301.578\\-135\\-55.66406\\-302.3793\\-135\\-57.61719\\-302.7411\\-135\\-61.52344\\-303.2914\\-135\\-65.42969\\-304.0553\\-135\\-67.38281\\-304.2531\\-135\\-71.28906\\-304.3805\\-135\\-75.19531\\-304.3431\\-135\\-79.10156\\-304.0774\\-135"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002369"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "171"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "61.52344\\-302.2715\\-135\\57.61719\\-301.2306\\-135\\55.66406\\-300.8267\\-135\\53.71094\\-300.3116\\-135\\51.75781\\-299.3152\\-135\\49.80469\\-298.5596\\-135\\47.85156\\-297.3269\\-135\\45.89844\\-296.4001\\-135\\42.26714\\-294.0078\\-135\\40.03906\\-292.4467\\-135\\36.13281\\-288.9827\\-135\\33.28776\\-286.1953\\-135\\29.86189\\-282.2891\\-135\\28.29742\\-280.3359\\-135\\25.65524\\-276.4297\\-135\\24.6063\\-274.4766\\-135\\22.46094\\-271.0465\\-135\\22.07937\\-270.5703\\-135\\21.2228\\-268.6172\\-135\\20.08642\\-266.6641\\-135\\18.80976\\-262.7578\\-135\\17.81581\\-260.8047\\-135\\17.29986\\-258.8516\\-135\\16.37777\\-256.8984\\-135\\15.18584\\-252.9922\\-135\\14.39576\\-251.0391\\-135\\13.93769\\-249.0859\\-135\\13.32355\\-245.1797\\-135\\12.90666\\-243.2266\\-135\\12.30876\\-241.2734\\-135\\11.973\\-239.3203\\-135\\11.55164\\-235.4141\\-135\\11.2893\\-233.4609\\-135\\10.89523\\-231.5078\\-135\\10.39567\\-229.5547\\-135\\10.12074\\-227.6016\\-135\\9.684245\\-219.7891\\-135\\9.434679\\-213.9297\\-135\\9.028081\\-210.0234\\-135\\8.496094\\-204.1641\\-135\\8.432241\\-202.2109\\-135\\8.781433\\-198.3047\\-135\\9.480575\\-194.3984\\-135\\9.997914\\-188.5391\\-135\\10.2285\\-184.6328\\-135\\10.4061\\-182.6797\\-135\\11.40625\\-176.8203\\-135\\12.0503\\-170.9609\\-135\\12.55035\\-169.0078\\-135\\13.17376\\-167.0547\\-135\\13.91457\\-163.1484\\-135\\14.55298\\-161.1953\\-135\\15.47558\\-159.2422\\-135\\16.2482\\-157.2891\\-135\\17.45412\\-155.3359\\-135\\18.47076\\-153.3828\\-135\\19.70766\\-151.4297\\-135\\22.46094\\-148.0966\\-135\\24.41406\\-146.0068\\-135\\28.32031\\-142.1131\\-135\\30.27344\\-140.4805\\-135\\32.22656\\-139.006\\-135\\36.13281\\-136.6456\\-135\\38.08594\\-135.3387\\-135\\40.03906\\-134.5535\\-135\\41.99219\\-133.4871\\-135\\43.94531\\-132.9105\\-135\\45.89844\\-132.441\\-135\\47.85156\\-131.5267\\-135\\49.80469\\-131.0267\\-135\\51.75781\\-130.6436\\-135\\55.66406\\-129.5294\\-135\\57.61719\\-129.2723\\-135\\59.57031\\-129.1131\\-135\\63.47656\\-128.9104\\-135\\69.33594\\-128.8902\\-135\\75.19531\\-129.1356\\-135\\77.14844\\-129.2684\\-135\\81.05469\\-129.6978\\-135\\84.96094\\-130.4571\\-135\\90.82031\\-131.1162\\-135\\92.77344\\-131.3842\\-135\\94.72656\\-131.7883\\-135\\96.67969\\-132.3302\\-135\\98.63281\\-132.6383\\-135\\102.5391\\-133.0498\\-135\\104.4922\\-133.39\\-135\\108.3984\\-134.454\\-135\\112.3047\\-135.2891\\-135\\114.2578\\-136.1565\\-135\\118.1641\\-137.1696\\-135\\120.1172\\-138.0255\\-135\\122.0703\\-138.6821\\-135\\124.0234\\-139.2058\\-135\\125.9766\\-140.1473\\-135\\127.9297\\-140.8279\\-135\\131.8359\\-142.8005\\-135\\133.7891\\-144.0367\\-135\\135.7422\\-144.9639\\-135\\137.6953\\-146.2147\\-135\\139.6484\\-147.2147\\-135\\141.6016\\-148.6422\\-135\\145.5078\\-151.963\\-135\\147.4609\\-153.3573\\-135\\149.4141\\-155.1916\\-135\\153.3203\\-159.3251\\-135\\155.2734\\-161.7982\\-135\\157.6717\\-165.1016\\-135\\158.8239\\-167.0547\\-135\\160.1453\\-169.0078\\-135\\161.2778\\-170.9609\\-135\\162.1155\\-172.9141\\-135\\162.8143\\-174.8672\\-135\\163.777\\-176.8203\\-135\\164.2857\\-178.7734\\-135\\165.0618\\-180.7266\\-135\\165.7127\\-182.6797\\-135\\166.4051\\-186.5859\\-135\\167.2054\\-190.4922\\-135\\167.6217\\-194.3984\\-135\\167.8022\\-198.3047\\-135\\167.8596\\-204.1641\\-135\\167.8022\\-208.0703\\-135\\167.5078\\-213.9297\\-135\\166.9922\\-217.7086\\-135\\166.5728\\-219.7891\\-135\\165.6413\\-225.6484\\-135\\164.4601\\-229.5547\\-135\\163.7121\\-233.4609\\-135\\162.9552\\-235.4141\\-135\\162.323\\-237.3672\\-135\\161.9057\\-239.3203\\-135\\161.1563\\-241.2734\\-135\\160.2485\\-243.2266\\-135\\159.4898\\-245.1797\\-135\\158.357\\-247.1328\\-135\\157.5195\\-249.0859\\-135\\156.3974\\-251.0391\\-135\\155.6085\\-252.9922\\-135\\153.3203\\-256.6892\\-135\\151.9176\\-258.8516\\-135\\150.47\\-260.8047\\-135\\149.4141\\-262.4449\\-135\\147.8192\\-264.7109\\-135\\146.2447\\-266.6641\\-135\\141.0707\\-272.5234\\-135\\139.6484\\-274.048\\-135\\133.7891\\-279.8726\\-135\\128.7063\\-284.2422\\-135\\125.9766\\-286.4412\\-135\\120.1172\\-290.3039\\-135\\118.1641\\-291.3481\\-135\\116.2109\\-292.7813\\-135\\112.3047\\-294.8457\\-135\\110.3516\\-295.5139\\-135\\108.3984\\-296.566\\-135\\106.4453\\-297.1405\\-135\\104.4922\\-298.1258\\-135\\100.5859\\-299.4603\\-135\\98.63281\\-300.2767\\-135\\96.67969\\-300.7181\\-135\\92.77344\\-301.4337\\-135\\90.82031\\-301.95\\-135\\88.86719\\-302.3381\\-135\\86.91406\\-302.591\\-135\\83.00781\\-302.84\\-135\\79.10156\\-303.0065\\-135\\75.19531\\-303.1013\\-135\\71.28906\\-303.0133\\-135\\65.42969\\-302.7299\\-135\\63.47656\\-302.5497\\-135"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002368"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "183"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.96094\\-303.1594\\-133\\-88.86719\\-302.7299\\-133\\-90.82031\\-302.4526\\-133\\-92.77344\\-301.951\\-133\\-94.72656\\-301.3094\\-133\\-98.63281\\-300.4037\\-133\\-100.5859\\-299.5352\\-133\\-102.5391\\-298.7966\\-133\\-104.4922\\-297.8156\\-133\\-108.3984\\-296.0161\\-133\\-112.1812\\-294.0078\\-133\\-114.2578\\-292.7899\\-133\\-116.2109\\-291.2769\\-133\\-118.1641\\-289.9519\\-133\\-120.1172\\-288.8523\\-133\\-123.4467\\-286.1953\\-133\\-125.9766\\-284.0469\\-133\\-127.9297\\-282.582\\-133\\-129.8828\\-280.8316\\-133\\-136.1867\\-274.4766\\-133\\-139.2927\\-270.5703\\-133\\-141.6016\\-267.8281\\-133\\-142.511\\-266.6641\\-133\\-145.0576\\-262.7578\\-133\\-145.5078\\-262.2289\\-133\\-147.8852\\-258.8516\\-133\\-148.8281\\-256.8984\\-133\\-150.0588\\-254.9453\\-133\\-150.8659\\-252.9922\\-133\\-152.1341\\-251.0391\\-133\\-154.179\\-247.1328\\-133\\-154.9408\\-245.1797\\-133\\-155.952\\-243.2266\\-133\\-156.4897\\-241.2734\\-133\\-157.5215\\-239.3203\\-133\\-158.2031\\-237.3672\\-133\\-159.9375\\-233.4609\\-133\\-160.503\\-231.5078\\-133\\-161.368\\-229.5547\\-133\\-161.9436\\-227.6016\\-133\\-162.7189\\-223.6953\\-133\\-163.5063\\-221.7422\\-133\\-164.2958\\-217.8359\\-133\\-164.7966\\-215.8828\\-133\\-165.455\\-213.9297\\-133\\-165.8253\\-211.9766\\-133\\-166.7277\\-206.1172\\-133\\-167.1792\\-202.2109\\-133\\-167.2531\\-200.2578\\-133\\-167.0869\\-196.3516\\-133\\-165.8627\\-188.5391\\-133\\-165.4455\\-186.5859\\-133\\-164.655\\-184.6328\\-133\\-163.5989\\-180.7266\\-133\\-162.5674\\-178.7734\\-133\\-161.9251\\-176.8203\\-133\\-160.7869\\-174.8672\\-133\\-159.7923\\-172.9141\\-133\\-156.7417\\-169.0078\\-133\\-155.5\\-167.0547\\-133\\-153.79\\-165.1016\\-133\\-149.4141\\-160.7671\\-133\\-147.4609\\-159.1519\\-133\\-145.5078\\-157.8248\\-133\\-141.6016\\-154.5805\\-133\\-139.6484\\-153.2656\\-133\\-137.6953\\-152.202\\-133\\-135.7422\\-150.8366\\-133\\-133.7891\\-149.7953\\-133\\-133.3756\\-149.4766\\-133\\-129.8828\\-147.3073\\-133\\-127.9297\\-146.4431\\-133\\-125.9766\\-145.4113\\-133\\-124.0234\\-144.5545\\-133\\-122.0703\\-143.4556\\-133\\-120.1172\\-142.5232\\-133\\-118.1641\\-141.4164\\-133\\-114.2578\\-139.9403\\-133\\-112.3047\\-139.0249\\-133\\-110.3516\\-138.5426\\-133\\-108.3984\\-137.7056\\-133\\-106.4453\\-136.9858\\-133\\-104.4922\\-136.4421\\-133\\-102.5391\\-135.4878\\-133\\-98.63281\\-134.4212\\-133\\-96.67969\\-133.6652\\-133\\-94.72656\\-133.1408\\-133\\-90.82031\\-132.5271\\-133\\-86.91406\\-131.3428\\-133\\-81.05469\\-130.5624\\-133\\-79.10156\\-130.2534\\-133\\-77.14844\\-129.7967\\-133\\-75.19531\\-129.4745\\-133\\-71.28906\\-129.0492\\-133\\-69.33594\\-128.9308\\-133\\-65.42969\\-128.8237\\-133\\-61.52344\\-128.8846\\-133\\-57.61719\\-129.251\\-133\\-55.66406\\-129.5173\\-133\\-51.75781\\-130.5289\\-133\\-47.85156\\-131.3348\\-133\\-45.89844\\-132.0997\\-133\\-43.94531\\-132.6953\\-133\\-41.99219\\-133.1238\\-133\\-38.08594\\-134.8568\\-133\\-36.19026\\-135.8047\\-133\\-34.17969\\-136.9732\\-133\\-32.22656\\-138.3665\\-133\\-30.27344\\-139.4879\\-133\\-28.32031\\-140.8427\\-133\\-26.36719\\-142.5812\\-133\\-23.4627\\-145.5703\\-133\\-21.6389\\-147.5234\\-133\\-20.12416\\-149.4766\\-133\\-19.16422\\-151.4297\\-133\\-17.90926\\-153.3828\\-133\\-17.23214\\-155.3359\\-133\\-16.11032\\-157.2891\\-133\\-15.47274\\-159.2422\\-133\\-14.58135\\-161.1953\\-133\\-13.95335\\-163.1484\\-133\\-13.30645\\-167.0547\\-133\\-12.22997\\-170.9609\\-133\\-11.92197\\-172.9141\\-133\\-11.36467\\-178.7734\\-133\\-10.63368\\-184.6328\\-133\\-10.50647\\-186.5859\\-133\\-10.50647\\-188.5391\\-133\\-10.82611\\-192.4453\\-133\\-11.0919\\-194.3984\\-133\\-11.15437\\-196.3516\\-133\\-10.9489\\-200.2578\\-133\\-10.75013\\-202.2109\\-133\\-10.20397\\-206.1172\\-133\\-10.07269\\-208.0703\\-133\\-9.980562\\-211.9766\\-133\\-9.997914\\-215.8828\\-133\\-10.07934\\-219.7891\\-133\\-10.3752\\-223.6953\\-133\\-10.64745\\-225.6484\\-133\\-11.41661\\-229.5547\\-133\\-11.56374\\-231.5078\\-133\\-11.973\\-235.4141\\-133\\-12.28448\\-237.3672\\-133\\-12.88027\\-239.3203\\-133\\-13.29001\\-241.2734\\-133\\-13.94924\\-245.1797\\-133\\-14.46144\\-247.1328\\-133\\-15.26786\\-249.0859\\-133\\-15.80529\\-251.0391\\-133\\-17.43645\\-254.9453\\-133\\-17.95504\\-256.8984\\-133\\-18.98358\\-258.8516\\-133\\-19.5372\\-260.8047\\-133\\-20.21767\\-262.7578\\-133\\-21.28364\\-264.7109\\-133\\-22.04499\\-266.6641\\-133\\-23.28643\\-268.6172\\-133\\-24.26327\\-270.5703\\-133\\-25.35088\\-272.5234\\-133\\-26.27985\\-274.4766\\-133\\-27.44498\\-276.4297\\-133\\-28.80233\\-278.3828\\-133\\-29.99161\\-280.3359\\-133\\-32.77209\\-284.2422\\-133\\-33.92651\\-286.1953\\-133\\-35.5013\\-288.1484\\-133\\-40.03906\\-293.0511\\-133\\-41.99219\\-294.8132\\-133\\-43.94531\\-296.2473\\-133\\-45.89844\\-297.4224\\-133\\-47.85156\\-298.8309\\-133\\-49.80469\\-299.993\\-133\\-51.75781\\-300.8438\\-133\\-53.71094\\-301.4995\\-133\\-55.66406\\-302.3186\\-133\\-57.61719\\-302.7127\\-133\\-61.52344\\-303.2424\\-133\\-65.42969\\-303.9851\\-133\\-67.38281\\-304.2173\\-133\\-71.28906\\-304.3583\\-133\\-75.19531\\-304.3116\\-133\\-79.10156\\-304.0664\\-133"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002368"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "170"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "61.52344\\-302.1874\\-133\\59.57031\\-301.6339\\-133\\55.66406\\-300.7699\\-133\\53.71094\\-300.2253\\-133\\51.75781\\-299.2181\\-133\\49.80469\\-298.4828\\-133\\47.85156\\-297.2293\\-133\\45.89844\\-296.3229\\-133\\43.94531\\-295.0658\\-133\\40.03906\\-292.3734\\-133\\36.13281\\-288.9492\\-133\\33.32682\\-286.1953\\-133\\29.9099\\-282.2891\\-133\\28.32031\\-280.308\\-133\\25.6633\\-276.4297\\-133\\24.41406\\-274.2432\\-133\\22.46094\\-271.0465\\-133\\22.07937\\-270.5703\\-133\\21.21964\\-268.6172\\-133\\20.05558\\-266.6641\\-133\\18.80976\\-262.7578\\-133\\17.80942\\-260.8047\\-133\\17.30363\\-258.8516\\-133\\16.38986\\-256.8984\\-133\\15.74707\\-254.9453\\-133\\15.21053\\-252.9922\\-133\\14.45875\\-251.0391\\-133\\13.96833\\-249.0859\\-133\\13.3728\\-245.1797\\-133\\12.99741\\-243.2266\\-133\\12.42963\\-241.2734\\-133\\12.0503\\-239.3203\\-133\\11.40248\\-233.4609\\-133\\11.08956\\-231.5078\\-133\\10.60675\\-229.5547\\-133\\10.25391\\-227.6016\\-133\\10.07934\\-225.6484\\-133\\9.848933\\-221.7422\\-133\\9.579373\\-215.8828\\-133\\9.294783\\-211.9766\\-133\\8.640455\\-206.1172\\-133\\8.507236\\-204.1641\\-133\\8.47425\\-202.2109\\-133\\8.812689\\-200.2578\\-133\\9.038549\\-198.3047\\-133\\9.165646\\-196.3516\\-133\\9.689405\\-192.4453\\-133\\10.00381\\-188.5391\\-133\\10.38537\\-182.6797\\-133\\10.6756\\-180.7266\\-133\\11.39509\\-176.8203\\-133\\12.01468\\-170.9609\\-133\\12.48238\\-169.0078\\-133\\13.11671\\-167.0547\\-133\\13.87747\\-163.1484\\-133\\14.48449\\-161.1953\\-133\\15.45235\\-159.2422\\-133\\16.21474\\-157.2891\\-133\\17.45279\\-155.3359\\-133\\18.48548\\-153.3828\\-133\\19.66809\\-151.4297\\-133\\22.46094\\-148.0045\\-133\\24.41406\\-145.9505\\-133\\28.32031\\-142.0385\\-133\\30.27344\\-140.4206\\-133\\32.22656\\-138.9335\\-133\\34.17969\\-137.677\\-133\\36.13281\\-136.5648\\-133\\38.08594\\-135.267\\-133\\40.03906\\-134.454\\-133\\41.99219\\-133.39\\-133\\45.89844\\-132.3198\\-133\\47.85156\\-131.3757\\-133\\51.75781\\-130.5074\\-133\\53.71094\\-129.8645\\-133\\55.66406\\-129.3834\\-133\\59.57031\\-129.0072\\-133\\63.47656\\-128.7825\\-133\\69.33594\\-128.6943\\-133\\75.19531\\-128.9393\\-133\\81.05469\\-129.3834\\-133\\83.00781\\-129.6305\\-133\\86.91406\\-130.4454\\-133\\94.72656\\-131.419\\-133\\98.63281\\-132.3867\\-133\\100.5859\\-132.6716\\-133\\104.4922\\-133.116\\-133\\106.4453\\-133.4568\\-133\\110.3516\\-134.5456\\-133\\112.3047\\-134.9523\\-133\\116.2109\\-136.28\\-133\\120.1172\\-137.4217\\-133\\122.0703\\-138.3334\\-133\\124.0234\\-138.8678\\-133\\125.9766\\-139.5928\\-133\\127.9297\\-140.5258\\-133\\129.8828\\-141.2475\\-133\\131.8359\\-142.4101\\-133\\133.7891\\-143.4428\\-133\\137.3355\\-145.5703\\-133\\139.6484\\-146.857\\-133\\141.6016\\-148.3685\\-133\\145.5078\\-151.5843\\-133\\147.4609\\-152.9997\\-133\\149.4141\\-154.84\\-133\\153.6381\\-159.2422\\-133\\155.2734\\-161.3581\\-133\\156.4077\\-163.1484\\-133\\157.8837\\-165.1016\\-133\\159.1797\\-167.1392\\-133\\161.1328\\-170.4824\\-133\\161.4771\\-170.9609\\-133\\162.9836\\-174.8672\\-133\\163.8661\\-176.8203\\-133\\164.3861\\-178.7734\\-133\\165.2135\\-180.7266\\-133\\165.774\\-182.6797\\-133\\166.4709\\-186.5859\\-133\\167.2549\\-190.4922\\-133\\167.4956\\-192.4453\\-133\\167.8136\\-198.3047\\-133\\167.8711\\-202.2109\\-133\\167.8136\\-208.0703\\-133\\167.6374\\-211.9766\\-133\\167.2911\\-215.8828\\-133\\166.9922\\-217.7935\\-133\\166.253\\-221.7422\\-133\\165.6561\\-225.6484\\-133\\165.1338\\-227.6016\\-133\\164.4768\\-229.5547\\-133\\163.7121\\-233.4609\\-133\\162.323\\-237.3672\\-133\\161.9057\\-239.3203\\-133\\161.1328\\-241.2584\\-133\\160.2268\\-243.2266\\-133\\159.4786\\-245.1797\\-133\\158.3344\\-247.1328\\-133\\157.4971\\-249.0859\\-133\\156.3782\\-251.0391\\-133\\155.5451\\-252.9922\\-133\\151.8738\\-258.8516\\-133\\150.4266\\-260.8047\\-133\\147.7817\\-264.7109\\-133\\146.2054\\-266.6641\\-133\\141.0352\\-272.5234\\-133\\139.6484\\-274.0199\\-133\\133.7891\\-279.8371\\-133\\128.666\\-284.2422\\-133\\125.9766\\-286.3629\\-133\\122.0703\\-289.0199\\-133\\120.1172\\-290.2785\\-133\\118.1641\\-291.3366\\-133\\116.2109\\-292.7697\\-133\\112.3047\\-294.8457\\-133\\110.3516\\-295.5139\\-133\\108.3984\\-296.566\\-133\\106.4453\\-297.1295\\-133\\104.4922\\-298.1135\\-133\\100.5859\\-299.4504\\-133\\98.63281\\-300.2667\\-133\\96.67969\\-300.7181\\-133\\92.77344\\-301.4202\\-133\\88.86719\\-302.325\\-133\\86.91406\\-302.572\\-133\\84.96094\\-302.7188\\-133\\79.10156\\-302.9824\\-133\\75.19531\\-303.0565\\-133\\71.28906\\-302.9715\\-133\\65.42969\\-302.689\\-133\\63.47656\\-302.5021\\-133"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002367"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "186"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-304.0325\\-131\\-83.00781\\-303.4081\\-131\\-86.91406\\-302.8929\\-131\\-88.86719\\-302.7127\\-131\\-90.82031\\-302.4227\\-131\\-92.77344\\-301.9211\\-131\\-94.72656\\-301.2964\\-131\\-98.63281\\-300.3916\\-131\\-100.5859\\-299.4906\\-131\\-102.5391\\-298.7639\\-131\\-104.4922\\-297.7587\\-131\\-108.3872\\-295.9609\\-131\\-112.1571\\-294.0078\\-131\\-114.2578\\-292.7787\\-131\\-116.2109\\-291.2653\\-131\\-118.1641\\-289.9362\\-131\\-120.1172\\-288.8441\\-131\\-122.0703\\-287.3177\\-131\\-125.9766\\-284.0329\\-131\\-127.9297\\-282.597\\-131\\-129.8828\\-280.8426\\-131\\-132.2943\\-278.3828\\-131\\-134.3356\\-276.4297\\-131\\-136.1979\\-274.4766\\-131\\-139.3066\\-270.5703\\-131\\-141.6016\\-267.8533\\-131\\-142.529\\-266.6641\\-131\\-145.0823\\-262.7578\\-131\\-145.5078\\-262.2572\\-131\\-147.9091\\-258.8516\\-131\\-148.8647\\-256.8984\\-131\\-150.0796\\-254.9453\\-131\\-150.9221\\-252.9922\\-131\\-152.1692\\-251.0391\\-131\\-154.2066\\-247.1328\\-131\\-155.0038\\-245.1797\\-131\\-155.9933\\-243.2266\\-131\\-156.529\\-241.2734\\-131\\-157.5776\\-239.3203\\-131\\-158.2387\\-237.3672\\-131\\-159.9842\\-233.4609\\-131\\-160.5756\\-231.5078\\-131\\-161.4445\\-229.5547\\-131\\-161.9792\\-227.6016\\-131\\-162.3324\\-225.6484\\-131\\-162.8183\\-223.6953\\-131\\-163.5866\\-221.7422\\-131\\-164.3638\\-217.8359\\-131\\-165.5388\\-213.9297\\-131\\-166.8674\\-206.1172\\-131\\-167.1408\\-204.1641\\-131\\-167.3112\\-202.2109\\-131\\-167.3456\\-198.3047\\-131\\-167.2175\\-196.3516\\-131\\-166.9241\\-194.3984\\-131\\-165.9264\\-188.5391\\-131\\-165.5187\\-186.5859\\-131\\-164.7571\\-184.6328\\-131\\-164.1575\\-182.6797\\-131\\-163.66\\-180.7266\\-131\\-162.6496\\-178.7734\\-131\\-161.969\\-176.8203\\-131\\-159.8609\\-172.9141\\-131\\-156.7625\\-169.0078\\-131\\-155.5426\\-167.0547\\-131\\-153.827\\-165.1016\\-131\\-149.4141\\-160.7588\\-131\\-147.4609\\-159.1683\\-131\\-145.5078\\-157.8615\\-131\\-143.5547\\-156.3008\\-131\\-141.6016\\-154.6286\\-131\\-139.6484\\-153.3425\\-131\\-137.6953\\-152.2199\\-131\\-135.7422\\-150.857\\-131\\-133.7891\\-149.7953\\-131\\-129.8828\\-147.3056\\-131\\-127.9297\\-146.4377\\-131\\-125.9766\\-145.3558\\-131\\-124.0234\\-144.4972\\-131\\-122.0703\\-143.3335\\-131\\-120.1172\\-142.431\\-131\\-118.1641\\-141.2936\\-131\\-116.2109\\-140.573\\-131\\-112.3047\\-138.8815\\-131\\-110.3516\\-138.3564\\-131\\-108.3984\\-137.3659\\-131\\-104.4922\\-136.1417\\-131\\-102.5391\\-135.2475\\-131\\-98.63281\\-134.1212\\-131\\-96.67969\\-133.34\\-131\\-92.77344\\-132.6473\\-131\\-90.82031\\-132.2146\\-131\\-88.86719\\-131.5267\\-131\\-86.91406\\-131.1262\\-131\\-83.00781\\-130.6053\\-131\\-81.05469\\-130.2941\\-131\\-79.10156\\-129.836\\-131\\-77.14844\\-129.484\\-131\\-75.19531\\-129.2385\\-131\\-71.28906\\-128.8596\\-131\\-67.38281\\-128.657\\-131\\-63.47656\\-128.6136\\-131\\-61.52344\\-128.6847\\-131\\-57.61719\\-129.0417\\-131\\-55.66406\\-129.2768\\-131\\-53.71094\\-129.6484\\-131\\-51.75781\\-130.2686\\-131\\-47.85156\\-131.0863\\-131\\-45.89844\\-131.6242\\-131\\-43.94531\\-132.4882\\-131\\-41.99219\\-132.9293\\-131\\-40.03906\\-133.5819\\-131\\-38.08594\\-134.6171\\-131\\-36.13281\\-135.4361\\-131\\-32.5728\\-137.7578\\-131\\-30.27344\\-139.1676\\-131\\-28.32031\\-140.681\\-131\\-26.36719\\-142.4116\\-131\\-23.33108\\-145.5703\\-131\\-21.52123\\-147.5234\\-131\\-20.03291\\-149.4766\\-131\\-19.12875\\-151.4297\\-131\\-17.8722\\-153.3828\\-131\\-17.18176\\-155.3359\\-131\\-16.03947\\-157.2891\\-131\\-15.42222\\-159.2422\\-131\\-14.52455\\-161.1953\\-131\\-13.92613\\-163.1484\\-131\\-13.28506\\-167.0547\\-131\\-12.27101\\-170.9609\\-131\\-11.94719\\-172.9141\\-131\\-11.39884\\-178.7734\\-131\\-10.71948\\-184.6328\\-131\\-10.5678\\-186.5859\\-131\\-10.70463\\-190.4922\\-131\\-11.14695\\-194.3984\\-131\\-11.2335\\-196.3516\\-131\\-11.1263\\-200.2578\\-131\\-10.89523\\-202.2109\\-131\\-10.54275\\-204.1641\\-131\\-10.07269\\-208.0703\\-131\\-9.986291\\-211.9766\\-131\\-10.00977\\-215.8828\\-131\\-10.10665\\-219.7891\\-131\\-10.43822\\-223.6953\\-131\\-10.71948\\-225.6484\\-131\\-11.11328\\-227.6016\\-131\\-12.00701\\-235.4141\\-131\\-12.35352\\-237.3672\\-131\\-12.95906\\-239.3203\\-131\\-13.33599\\-241.2734\\-131\\-13.99158\\-245.1797\\-131\\-14.52637\\-247.1328\\-131\\-15.31948\\-249.0859\\-131\\-15.84371\\-251.0391\\-131\\-17.45669\\-254.9453\\-131\\-17.99417\\-256.8984\\-131\\-19.0268\\-258.8516\\-131\\-19.55492\\-260.8047\\-131\\-20.24407\\-262.7578\\-131\\-21.31172\\-264.7109\\-131\\-22.08391\\-266.6641\\-131\\-23.31543\\-268.6172\\-131\\-25.37359\\-272.5234\\-131\\-26.31069\\-274.4766\\-131\\-27.4688\\-276.4297\\-131\\-28.81485\\-278.3828\\-131\\-30.0029\\-280.3359\\-131\\-32.79511\\-284.2422\\-131\\-33.97993\\-286.1953\\-131\\-35.57195\\-288.1484\\-131\\-40.03906\\-292.9914\\-131\\-41.99219\\-294.7595\\-131\\-43.94531\\-296.1517\\-131\\-45.89844\\-297.3346\\-131\\-47.85156\\-298.7597\\-131\\-49.80469\\-299.875\\-131\\-51.75781\\-300.7964\\-131\\-53.71094\\-301.4174\\-131\\-55.66406\\-302.2505\\-131\\-57.61719\\-302.6826\\-131\\-61.52344\\-303.1757\\-131\\-65.42969\\-303.9221\\-131\\-67.38281\\-304.1798\\-131\\-71.28906\\-304.3275\\-131\\-75.19531\\-304.2787\\-131"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002367"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "173"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "61.52344\\-302.1003\\-131\\59.57031\\-301.5403\\-131\\55.66406\\-300.7196\\-131\\53.71094\\-300.1317\\-131\\51.75781\\-299.132\\-131\\49.80469\\-298.3811\\-131\\47.85156\\-297.1455\\-131\\45.89844\\-296.2266\\-131\\43.94531\\-295.0153\\-131\\40.03906\\-292.2865\\-131\\37.57403\\-290.1016\\-131\\36.13281\\-288.9022\\-131\\33.36042\\-286.1953\\-131\\29.94792\\-282.2891\\-131\\28.32031\\-280.253\\-131\\25.67598\\-276.4297\\-131\\24.41406\\-274.2432\\-131\\22.46094\\-271.0303\\-131\\22.08984\\-270.5703\\-131\\21.21538\\-268.6172\\-131\\20.06869\\-266.6641\\-131\\18.80787\\-262.7578\\-131\\17.8197\\-260.8047\\-131\\17.30745\\-258.8516\\-131\\16.41456\\-256.8984\\-131\\15.75684\\-254.9453\\-131\\15.24554\\-252.9922\\-131\\14.48449\\-251.0391\\-131\\13.99158\\-249.0859\\-131\\13.42163\\-245.1797\\-131\\13.08187\\-243.2266\\-131\\12.55148\\-241.2734\\-131\\12.12565\\-239.3203\\-131\\11.84353\\-237.3672\\-131\\11.49053\\-233.4609\\-131\\11.21511\\-231.5078\\-131\\10.41667\\-227.6016\\-131\\10.17253\\-225.6484\\-131\\10.04044\\-223.6953\\-131\\9.521484\\-213.9297\\-131\\9.370484\\-211.9766\\-131\\8.653626\\-206.1172\\-131\\8.518528\\-204.1641\\-131\\8.496094\\-202.2109\\-131\\8.857727\\-200.2578\\-131\\9.193372\\-196.3516\\-131\\9.859076\\-190.4922\\-131\\10.3752\\-182.6797\\-131\\10.62012\\-180.7266\\-131\\11.36877\\-176.8203\\-131\\11.98033\\-170.9609\\-131\\12.44213\\-169.0078\\-131\\13.07091\\-167.0547\\-131\\13.83653\\-163.1484\\-131\\14.44469\\-161.1953\\-131\\15.42426\\-159.2422\\-131\\16.20464\\-157.2891\\-131\\17.45737\\-155.3359\\-131\\18.48602\\-153.3828\\-131\\19.66105\\-151.4297\\-131\\22.46094\\-147.9273\\-131\\24.41406\\-145.9084\\-131\\28.32031\\-141.9846\\-131\\30.27344\\-140.3685\\-131\\32.22656\\-138.8748\\-131\\34.17969\\-137.5461\\-131\\36.13281\\-136.4768\\-131\\38.08594\\-135.1921\\-131\\40.03906\\-134.3365\\-131\\41.99219\\-133.2889\\-131\\43.94531\\-132.7619\\-131\\45.89844\\-132.1261\\-131\\47.85156\\-131.2421\\-131\\51.75781\\-130.3091\\-131\\53.71094\\-129.5988\\-131\\55.66406\\-129.2392\\-131\\59.57031\\-128.863\\-131\\63.47656\\-128.597\\-131\\69.33594\\-128.4564\\-131\\75.19531\\-128.7299\\-131\\83.00781\\-129.3282\\-131\\84.96094\\-129.5885\\-131\\88.86719\\-130.3841\\-131\\92.77344\\-130.9421\\-131\\96.67969\\-131.4131\\-131\\100.5859\\-132.3435\\-131\\106.4453\\-133.0961\\-131\\108.3984\\-133.4679\\-131\\112.3047\\-134.5885\\-131\\116.2109\\-135.5484\\-131\\118.1641\\-136.3528\\-131\\122.0703\\-137.633\\-131\\124.0234\\-138.4824\\-131\\125.9766\\-139.0836\\-131\\127.9297\\-140.0414\\-131\\129.8828\\-140.8064\\-131\\133.7891\\-142.8848\\-131\\135.7422\\-144.1801\\-131\\137.6953\\-145.2303\\-131\\141.0423\\-147.5234\\-131\\143.5547\\-149.4681\\-131\\147.4609\\-152.6843\\-131\\149.4141\\-154.4877\\-131\\150.1736\\-155.3359\\-131\\153.969\\-159.2422\\-131\\155.558\\-161.1953\\-131\\156.6752\\-163.1484\\-131\\157.2266\\-163.8472\\-131\\159.4442\\-167.0547\\-131\\160.464\\-169.0078\\-131\\161.6478\\-170.9609\\-131\\162.3059\\-172.9141\\-131\\163.2276\\-174.8672\\-131\\163.9569\\-176.8203\\-131\\164.5081\\-178.7734\\-131\\165.3539\\-180.7266\\-131\\165.8335\\-182.6797\\-131\\167.2891\\-190.4922\\-131\\167.5199\\-192.4453\\-131\\167.8251\\-198.3047\\-131\\167.8711\\-202.2109\\-131\\167.8203\\-208.0703\\-131\\167.6374\\-211.9766\\-131\\167.3133\\-215.8828\\-131\\166.9998\\-217.8359\\-131\\166.2666\\-221.7422\\-131\\165.6706\\-225.6484\\-131\\165.1877\\-227.6016\\-131\\164.5146\\-229.5547\\-131\\163.7198\\-233.4609\\-131\\162.9697\\-235.4141\\-131\\162.323\\-237.3672\\-131\\161.8984\\-239.3203\\-131\\161.1328\\-241.2284\\-131\\160.221\\-243.2266\\-131\\159.4673\\-245.1797\\-131\\158.3226\\-247.1328\\-131\\157.474\\-249.0859\\-131\\156.366\\-251.0391\\-131\\155.5045\\-252.9922\\-131\\154.315\\-254.9453\\-131\\151.8242\\-258.8516\\-131\\150.3847\\-260.8047\\-131\\147.7431\\-264.7109\\-131\\146.1568\\-266.6641\\-131\\142.7612\\-270.5703\\-131\\139.6484\\-273.9883\\-131\\133.7891\\-279.8128\\-131\\131.8359\\-281.5251\\-131\\128.625\\-284.2422\\-131\\125.9766\\-286.3221\\-131\\122.0703\\-289.0076\\-131\\120.1172\\-290.2523\\-131\\118.1641\\-291.3336\\-131\\116.2109\\-292.7623\\-131\\112.3047\\-294.8526\\-131\\110.3516\\-295.5246\\-131\\108.3984\\-296.5577\\-131\\106.4453\\-297.1405\\-131\\104.4922\\-298.0884\\-131\\102.5391\\-298.8245\\-131\\100.5859\\-299.4478\\-131\\98.63281\\-300.2767\\-131\\96.67969\\-300.7181\\-131\\92.77344\\-301.4095\\-131\\88.86719\\-302.302\\-131\\86.91406\\-302.5527\\-131\\83.00781\\-302.8023\\-131\\79.10156\\-302.9605\\-131\\75.19531\\-303.0244\\-131\\71.28906\\-302.9372\\-131\\65.42969\\-302.6582\\-131\\63.47656\\-302.461\\-131"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002366"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "186"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-303.9729\\-129\\-83.00781\\-303.366\\-129\\-86.91406\\-302.8716\\-129\\-88.86719\\-302.6826\\-129\\-90.82031\\-302.3884\\-129\\-94.72656\\-301.265\\-129\\-98.63281\\-300.3616\\-129\\-100.5859\\-299.438\\-129\\-102.5391\\-298.7261\\-129\\-104.4922\\-297.6915\\-129\\-106.4453\\-296.8414\\-129\\-110.3516\\-294.9539\\-129\\-114.2578\\-292.7675\\-129\\-116.2109\\-291.2467\\-129\\-118.1641\\-289.9233\\-129\\-120.1172\\-288.8314\\-129\\-122.0703\\-287.3051\\-129\\-125.9766\\-284.0057\\-129\\-127.9297\\-282.597\\-129\\-129.8828\\-280.8426\\-129\\-132.3044\\-278.3828\\-129\\-134.3356\\-276.4297\\-129\\-136.1867\\-274.4766\\-129\\-139.3182\\-270.5703\\-129\\-140.9879\\-268.6172\\-129\\-142.5225\\-266.6641\\-129\\-143.8535\\-264.7109\\-129\\-145.0823\\-262.7578\\-129\\-145.5078\\-262.2614\\-129\\-147.9193\\-258.8516\\-129\\-148.8845\\-256.8984\\-129\\-150.0958\\-254.9453\\-129\\-150.9458\\-252.9922\\-129\\-152.1864\\-251.0391\\-129\\-154.2344\\-247.1328\\-129\\-155.0458\\-245.1797\\-129\\-156.0184\\-243.2266\\-129\\-156.5776\\-241.2734\\-129\\-157.6184\\-239.3203\\-129\\-158.281\\-237.3672\\-129\\-159.2319\\-235.4141\\-129\\-160.0146\\-233.4609\\-129\\-160.6353\\-231.5078\\-129\\-161.5032\\-229.5547\\-129\\-162.0265\\-227.6016\\-129\\-162.3718\\-225.6484\\-129\\-162.9132\\-223.6953\\-129\\-163.66\\-221.7422\\-129\\-164.4403\\-217.8359\\-129\\-165.6196\\-213.9297\\-129\\-166.2735\\-210.0234\\-129\\-167.0149\\-206.1172\\-129\\-167.2759\\-204.1641\\-129\\-167.4241\\-202.2109\\-129\\-167.4557\\-198.3047\\-129\\-167.322\\-196.3516\\-129\\-167.073\\-194.3984\\-129\\-165.6042\\-186.5859\\-129\\-164.2244\\-182.6797\\-129\\-163.7198\\-180.7266\\-129\\-162.7341\\-178.7734\\-129\\-162.031\\-176.8203\\-129\\-161.1328\\-175.0015\\-129\\-159.9212\\-172.9141\\-129\\-156.8316\\-169.0078\\-129\\-155.6115\\-167.0547\\-129\\-153.8834\\-165.1016\\-129\\-149.4141\\-160.7327\\-129\\-147.4609\\-159.1519\\-129\\-145.5078\\-157.8481\\-129\\-143.5547\\-156.2948\\-129\\-141.6016\\-154.6035\\-129\\-139.6484\\-153.2647\\-129\\-137.6953\\-152.1734\\-129\\-135.7422\\-150.7925\\-129\\-133.7891\\-149.6588\\-129\\-129.8828\\-147.1741\\-129\\-127.9297\\-146.3278\\-129\\-125.9766\\-145.146\\-129\\-124.0234\\-144.3191\\-129\\-122.0703\\-143.0652\\-129\\-120.1172\\-142.1803\\-129\\-118.1641\\-141.049\\-129\\-116.2109\\-140.3378\\-129\\-114.2578\\-139.2885\\-129\\-112.3047\\-138.657\\-129\\-110.3516\\-137.8917\\-129\\-108.3984\\-136.9933\\-129\\-106.4453\\-136.3707\\-129\\-104.4922\\-135.493\\-129\\-100.5859\\-134.3028\\-129\\-98.63281\\-133.5116\\-129\\-96.67969\\-133.0224\\-129\\-94.72656\\-132.671\\-129\\-92.77344\\-132.2216\\-129\\-90.82031\\-131.5751\\-129\\-88.86719\\-131.1377\\-129\\-84.96094\\-130.5208\\-129\\-81.05469\\-129.6752\\-129\\-77.14844\\-129.1453\\-129\\-71.28906\\-128.6055\\-129\\-67.38281\\-128.3947\\-129\\-63.47656\\-128.392\\-129\\-59.57031\\-128.6169\\-129\\-55.66406\\-129.0312\\-129\\-53.71094\\-129.3155\\-129\\-51.75781\\-129.7556\\-129\\-49.80469\\-130.4031\\-129\\-45.89844\\-131.2603\\-129\\-43.94531\\-132.1163\\-129\\-40.03906\\-133.242\\-129\\-38.08594\\-134.2711\\-129\\-36.13281\\-135.1046\\-129\\-34.17969\\-136.4244\\-129\\-32.22656\\-137.6024\\-129\\-30.27344\\-138.9183\\-129\\-26.89179\\-141.6641\\-129\\-24.41406\\-144.2197\\-129\\-21.41639\\-147.5234\\-129\\-19.93222\\-149.4766\\-129\\-19.06972\\-151.4297\\-129\\-17.81404\\-153.3828\\-129\\-17.08984\\-155.3359\\-129\\-15.95595\\-157.2891\\-129\\-15.34913\\-159.2422\\-129\\-14.45737\\-161.1953\\-129\\-13.88889\\-163.1484\\-129\\-13.25061\\-167.0547\\-129\\-12.24716\\-170.9609\\-129\\-11.93576\\-172.9141\\-129\\-11.39884\\-178.7734\\-129\\-10.66142\\-184.6328\\-129\\-10.54275\\-186.5859\\-129\\-10.70463\\-190.4922\\-129\\-11.17974\\-194.3984\\-129\\-11.30106\\-196.3516\\-129\\-11.28738\\-200.2578\\-129\\-10.59358\\-204.1641\\-129\\-10.07269\\-208.0703\\-129\\-10.00381\\-210.0234\\-129\\-9.992074\\-213.9297\\-129\\-10.05314\\-217.8359\\-129\\-10.15732\\-219.7891\\-129\\-10.51839\\-223.6953\\-129\\-11.19626\\-227.6016\\-129\\-11.38393\\-229.5547\\-129\\-12.05842\\-235.4141\\-129\\-12.46769\\-237.3672\\-129\\-13.05474\\-239.3203\\-129\\-14.02274\\-245.1797\\-129\\-14.58185\\-247.1328\\-129\\-15.34751\\-249.0859\\-129\\-15.86019\\-251.0391\\-129\\-16.739\\-252.9922\\-129\\-17.46235\\-254.9453\\-129\\-18.01934\\-256.8984\\-129\\-19.06224\\-258.8516\\-129\\-19.57293\\-260.8047\\-129\\-20.2691\\-262.7578\\-129\\-21.33331\\-264.7109\\-129\\-22.10412\\-266.6641\\-129\\-23.33774\\-268.6172\\-129\\-25.3792\\-272.5234\\-129\\-26.32683\\-274.4766\\-129\\-27.46212\\-276.4297\\-129\\-28.81804\\-278.3828\\-129\\-30.0029\\-280.3359\\-129\\-32.82187\\-284.2422\\-129\\-34.03585\\-286.1953\\-129\\-35.64116\\-288.1484\\-129\\-40.03906\\-292.9382\\-129\\-41.99219\\-294.7127\\-129\\-43.94531\\-296.0476\\-129\\-45.89844\\-297.2485\\-129\\-47.85156\\-298.6942\\-129\\-49.96142\\-299.8672\\-129\\-51.75781\\-300.7437\\-129\\-53.71094\\-301.3386\\-129\\-55.66406\\-302.1671\\-129\\-57.61719\\-302.6399\\-129\\-61.52344\\-303.1205\\-129\\-65.42969\\-303.8682\\-129\\-67.38281\\-304.1302\\-129\\-69.33594\\-304.2531\\-129\\-73.24219\\-304.2954\\-129\\-75.19531\\-304.2443\\-129"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002366"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "169"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "61.52344\\-302.0349\\-129\\59.57031\\-301.4646\\-129\\55.66406\\-300.6698\\-129\\53.71094\\-300.0169\\-129\\51.75781\\-299.0543\\-129\\49.80469\\-298.2674\\-129\\47.85156\\-297.0794\\-129\\45.89844\\-296.1337\\-129\\43.94531\\-294.9598\\-129\\40.03906\\-292.1786\\-129\\37.65462\\-290.1016\\-129\\36.13281\\-288.8677\\-129\\33.39448\\-286.1953\\-129\\29.98708\\-282.2891\\-129\\28.32031\\-280.2162\\-129\\25.68867\\-276.4297\\-129\\24.41406\\-274.2281\\-129\\22.46094\\-271.0142\\-129\\22.10046\\-270.5703\\-129\\21.22708\\-268.6172\\-129\\20.07892\\-266.6641\\-129\\18.82037\\-262.7578\\-129\\17.83265\\-260.8047\\-129\\17.32086\\-258.8516\\-129\\16.41456\\-256.8984\\-129\\15.7666\\-254.9453\\-129\\15.27936\\-252.9922\\-129\\14.53912\\-251.0391\\-129\\14.03073\\-249.0859\\-129\\13.49706\\-245.1797\\-129\\13.1537\\-243.2266\\-129\\12.19733\\-239.3203\\-129\\11.90396\\-237.3672\\-129\\11.55772\\-233.4609\\-129\\11.07449\\-229.5547\\-129\\10.62012\\-227.6016\\-129\\10.3075\\-225.6484\\-129\\10.12074\\-223.6953\\-129\\9.880786\\-219.7891\\-129\\9.595352\\-213.9297\\-129\\9.231852\\-210.0234\\-129\\8.694322\\-206.1172\\-129\\8.507236\\-202.2109\\-129\\9.841108\\-190.4922\\-129\\10.02798\\-188.5391\\-129\\10.21205\\-184.6328\\-129\\10.59358\\-180.7266\\-129\\11.34091\\-176.8203\\-129\\11.95427\\-170.9609\\-129\\12.40517\\-169.0078\\-129\\13.04605\\-167.0547\\-129\\13.82036\\-163.1484\\-129\\14.39576\\-161.1953\\-129\\15.39586\\-159.2422\\-129\\16.19204\\-157.2891\\-129\\17.45144\\-155.3359\\-129\\18.48548\\-153.3828\\-129\\19.65565\\-151.4297\\-129\\21.12815\\-149.4766\\-129\\22.46094\\-147.8589\\-129\\28.56237\\-141.6641\\-129\\31.01223\\-139.7109\\-129\\34.17969\\-137.4113\\-129\\36.13281\\-136.3479\\-129\\38.08594\\-135.0824\\-129\\41.99219\\-133.1692\\-129\\43.94531\\-132.664\\-129\\47.85156\\-131.0904\\-129\\49.80469\\-130.6444\\-129\\51.7759\\-129.9453\\-129\\53.71094\\-129.3583\\-129\\55.66406\\-129.0659\\-129\\59.57031\\-128.6188\\-129\\63.47656\\-128.2911\\-129\\67.38281\\-128.1296\\-129\\69.33594\\-128.1023\\-129\\75.19531\\-128.4463\\-129\\84.96094\\-129.1979\\-129\\88.86719\\-129.6733\\-129\\92.77344\\-130.4857\\-129\\98.63281\\-131.1798\\-129\\104.4922\\-132.404\\-129\\106.4453\\-132.6887\\-129\\110.3516\\-133.3633\\-129\\114.2578\\-134.5635\\-129\\116.2109\\-134.9685\\-129\\118.1641\\-135.5226\\-129\\120.1172\\-136.3581\\-129\\122.0703\\-136.944\\-129\\125.9766\\-138.6266\\-129\\127.9297\\-139.2934\\-129\\129.8828\\-140.3416\\-129\\131.8359\\-141.169\\-129\\133.7891\\-142.3714\\-129\\135.7422\\-143.4734\\-129\\139.6484\\-146.1508\\-129\\141.6016\\-147.295\\-129\\143.5547\\-148.8459\\-129\\146.537\\-151.4297\\-129\\149.4141\\-154.021\\-129\\152.5269\\-157.2891\\-129\\154.3172\\-159.2422\\-129\\155.877\\-161.1953\\-129\\158.3452\\-165.1016\\-129\\159.7524\\-167.0547\\-129\\160.7068\\-169.0078\\-129\\161.8367\\-170.9609\\-129\\162.4499\\-172.9141\\-129\\163.4404\\-174.8672\\-129\\164.6524\\-178.7734\\-129\\165.4738\\-180.7266\\-129\\165.911\\-182.6797\\-129\\167.335\\-190.4922\\-129\\167.6798\\-194.3984\\-129\\167.8317\\-198.3047\\-129\\167.8826\\-202.2109\\-129\\167.8203\\-208.0703\\-129\\167.649\\-211.9766\\-129\\167.3242\\-215.8828\\-129\\167.0298\\-217.8359\\-129\\166.2884\\-221.7422\\-129\\165.6883\\-225.6484\\-129\\165.2261\\-227.6016\\-129\\164.5356\\-229.5547\\-129\\163.7275\\-233.4609\\-129\\162.3352\\-237.3672\\-129\\161.8984\\-239.3203\\-129\\161.1328\\-241.2284\\-129\\160.221\\-243.2266\\-129\\159.4424\\-245.1797\\-129\\158.3122\\-247.1328\\-129\\157.4383\\-249.0859\\-129\\156.347\\-251.0391\\-129\\155.4627\\-252.9922\\-129\\154.2729\\-254.9453\\-129\\152.9558\\-256.8984\\-129\\151.7513\\-258.8516\\-129\\150.3433\\-260.8047\\-129\\147.6788\\-264.7109\\-129\\145.5078\\-267.3606\\-129\\142.7263\\-270.5703\\-129\\139.6484\\-273.9408\\-129\\133.7891\\-279.7691\\-129\\131.8359\\-281.4907\\-129\\128.5728\\-284.2422\\-129\\125.9766\\-286.308\\-129\\122.0703\\-289.0006\\-129\\120.1172\\-290.239\\-129\\118.1641\\-291.3223\\-129\\116.2109\\-292.7654\\-129\\112.3047\\-294.8526\\-129\\110.3516\\-295.5246\\-129\\108.3984\\-296.5577\\-129\\106.4453\\-297.1382\\-129\\104.4922\\-298.0757\\-129\\102.5391\\-298.8143\\-129\\100.5859\\-299.4478\\-129\\98.63281\\-300.2767\\-129\\96.67969\\-300.7067\\-129\\92.77344\\-301.4066\\-129\\88.86719\\-302.2818\\-129\\86.91406\\-302.5377\\-129\\83.00781\\-302.7969\\-129\\79.10156\\-302.9434\\-129\\75.19531\\-303.0065\\-129\\73.24219\\-302.9779\\-129\\67.38281\\-302.7527\\-129\\65.42969\\-302.6283\\-129\\63.47656\\-302.4012\\-129"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "178"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-303.8955\\-127\\-83.00781\\-303.3039\\-127\\-88.86719\\-302.6648\\-127\\-90.82031\\-302.3477\\-127\\-94.72656\\-301.2306\\-127\\-98.63281\\-300.3184\\-127\\-100.5859\\-299.388\\-127\\-102.5391\\-298.6878\\-127\\-104.4922\\-297.6381\\-127\\-106.4453\\-296.8201\\-127\\-110.3516\\-294.9359\\-127\\-114.2578\\-292.7522\\-127\\-116.2109\\-291.2419\\-127\\-118.1641\\-289.9093\\-127\\-120.1172\\-288.823\\-127\\-123.4111\\-286.1953\\-127\\-125.9766\\-284.0057\\-127\\-127.9297\\-282.582\\-127\\-129.8828\\-280.8279\\-127\\-136.1979\\-274.4766\\-127\\-139.33\\-270.5703\\-127\\-141.0143\\-268.6172\\-127\\-142.5159\\-266.6641\\-127\\-143.8535\\-264.7109\\-127\\-145.0684\\-262.7578\\-127\\-145.5078\\-262.2494\\-127\\-147.9326\\-258.8516\\-127\\-148.8882\\-256.8984\\-127\\-150.1116\\-254.9453\\-127\\-150.9671\\-252.9922\\-127\\-152.2035\\-251.0391\\-127\\-154.2571\\-247.1328\\-127\\-155.0871\\-245.1797\\-127\\-156.0385\\-243.2266\\-127\\-156.6193\\-241.2734\\-127\\-157.6599\\-239.3203\\-127\\-158.3239\\-237.3672\\-127\\-159.3413\\-235.4141\\-127\\-160.7079\\-231.5078\\-127\\-161.5617\\-229.5547\\-127\\-162.062\\-227.6016\\-127\\-162.4122\\-225.6484\\-127\\-163.0151\\-223.6953\\-127\\-163.7198\\-221.7422\\-127\\-164.5058\\-217.8359\\-127\\-165.2007\\-215.8828\\-127\\-165.6884\\-213.9297\\-127\\-166.3506\\-210.0234\\-127\\-167.1408\\-206.1172\\-127\\-167.379\\-204.1641\\-127\\-167.5166\\-202.2109\\-127\\-167.5494\\-198.3047\\-127\\-167.2296\\-194.3984\\-127\\-166.4215\\-190.4922\\-127\\-165.6954\\-186.5859\\-127\\-164.3053\\-182.6797\\-127\\-163.7827\\-180.7266\\-127\\-162.838\\-178.7734\\-127\\-162.1033\\-176.8203\\-127\\-161.2031\\-174.8672\\-127\\-159.9765\\-172.9141\\-127\\-158.4188\\-170.9609\\-127\\-156.9616\\-169.0078\\-127\\-155.7034\\-167.0547\\-127\\-153.9783\\-165.1016\\-127\\-149.4141\\-160.6673\\-127\\-147.4609\\-159.0469\\-127\\-145.5078\\-157.7349\\-127\\-141.6016\\-154.4768\\-127\\-139.6484\\-153.0403\\-127\\-137.6953\\-152.0433\\-127\\-136.9124\\-151.4297\\-127\\-133.7891\\-149.2771\\-127\\-131.8359\\-148.1725\\-127\\-129.8828\\-146.9148\\-127\\-127.9297\\-146.0303\\-127\\-125.9766\\-144.8617\\-127\\-123.6842\\-143.6172\\-127\\-120.1172\\-141.5774\\-127\\-114.2578\\-138.9071\\-127\\-112.3047\\-138.1784\\-127\\-110.3516\\-137.1882\\-127\\-108.3984\\-136.487\\-127\\-106.4453\\-135.5205\\-127\\-102.5391\\-134.2974\\-127\\-100.5859\\-133.5459\\-127\\-98.63281\\-132.9899\\-127\\-96.67969\\-132.5561\\-127\\-92.77344\\-131.4041\\-127\\-88.86719\\-130.5902\\-127\\-84.96094\\-129.638\\-127\\-81.05469\\-129.0287\\-127\\-73.24219\\-128.3652\\-127\\-69.33594\\-127.868\\-127\\-65.42969\\-127.7984\\-127\\-63.47656\\-127.8561\\-127\\-59.57031\\-128.1624\\-127\\-53.71094\\-128.9517\\-127\\-51.75781\\-129.2652\\-127\\-49.80469\\-129.7321\\-127\\-47.85156\\-130.4023\\-127\\-45.89844\\-130.9003\\-127\\-43.94531\\-131.5143\\-127\\-41.99219\\-132.356\\-127\\-40.03906\\-132.9177\\-127\\-38.08594\\-133.6578\\-127\\-34.31332\\-135.8047\\-127\\-32.22656\\-137.1564\\-127\\-30.27344\\-138.6859\\-127\\-28.7866\\-139.7109\\-127\\-26.36719\\-141.7256\\-127\\-24.7521\\-143.6172\\-127\\-22.46094\\-146.1592\\-127\\-21.32265\\-147.5234\\-127\\-19.84197\\-149.4766\\-127\\-18.99858\\-151.4297\\-127\\-17.73999\\-153.3828\\-127\\-16.95963\\-155.3359\\-127\\-15.88611\\-157.2891\\-127\\-15.26731\\-159.2422\\-127\\-14.38395\\-161.1953\\-127\\-13.86604\\-163.1484\\-127\\-13.22508\\-167.0547\\-127\\-12.18776\\-170.9609\\-127\\-11.90396\\-172.9141\\-127\\-11.36467\\-178.7734\\-127\\-10.55519\\-184.6328\\-127\\-10.47165\\-186.5859\\-127\\-10.66142\\-190.4922\\-127\\-10.9489\\-192.4453\\-127\\-11.31283\\-196.3516\\-127\\-11.38762\\-198.3047\\-127\\-11.33737\\-200.2578\\-127\\-10.53049\\-204.1641\\-127\\-10.07269\\-208.0703\\-127\\-9.9769\\-211.9766\\-127\\-10.06611\\-217.8359\\-127\\-10.18025\\-219.7891\\-127\\-10.46036\\-221.7422\\-127\\-10.5678\\-223.6953\\-127\\-11.28406\\-227.6016\\-127\\-11.43506\\-229.5547\\-127\\-12.10814\\-235.4141\\-127\\-13.10333\\-239.3203\\-127\\-14.03443\\-245.1797\\-127\\-14.62573\\-247.1328\\-127\\-15.36494\\-249.0859\\-127\\-15.87685\\-251.0391\\-127\\-16.76551\\-252.9922\\-127\\-17.47241\\-254.9453\\-127\\-18.03663\\-256.8984\\-127\\-19.08102\\-258.8516\\-127\\-19.59044\\-260.8047\\-127\\-20.28189\\-262.7578\\-127\\-21.34563\\-264.7109\\-127\\-22.11442\\-266.6641\\-127\\-23.35394\\-268.6172\\-127\\-26.34277\\-274.4766\\-127\\-27.45689\\-276.4297\\-127\\-28.81485\\-278.3828\\-127\\-29.99161\\-280.3359\\-127\\-32.84439\\-284.2422\\-127\\-34.10993\\-286.1953\\-127\\-35.69955\\-288.1484\\-127\\-40.03906\\-292.8663\\-127\\-41.99219\\-294.6567\\-127\\-45.89844\\-297.1832\\-127\\-47.85156\\-298.6288\\-127\\-51.75781\\-300.6732\\-127\\-53.71094\\-301.265\\-127\\-55.66406\\-302.0773\\-127\\-57.61719\\-302.5838\\-127\\-61.52344\\-303.0864\\-127\\-65.42969\\-303.7961\\-127\\-67.38281\\-304.0774\\-127\\-71.28906\\-304.2617\\-127\\-73.24219\\-304.2617\\-127\\-77.14844\\-304.0774\\-127"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "169"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "61.52344\\-301.95\\-127\\59.57031\\-301.396\\-127\\55.66406\\-300.5925\\-127\\53.71094\\-299.8899\\-127\\51.75781\\-298.977\\-127\\49.80469\\-298.165\\-127\\47.85156\\-297.0156\\-127\\45.89844\\-296.0318\\-127\\43.94531\\-294.9172\\-127\\40.03906\\-292.0923\\-127\\37.74372\\-290.1016\\-127\\36.13281\\-288.8106\\-127\\33.41571\\-286.1953\\-127\\30.02743\\-282.2891\\-127\\28.32031\\-280.1641\\-127\\25.70544\\-276.4297\\-127\\24.66196\\-274.4766\\-127\\24.41406\\-274.1963\\-127\\22.46094\\-270.9981\\-127\\22.11122\\-270.5703\\-127\\21.23442\\-268.6172\\-127\\20.08928\\-266.6641\\-127\\18.84694\\-262.7578\\-127\\17.84589\\-260.8047\\-127\\17.32746\\-258.8516\\-127\\16.42718\\-256.8984\\-127\\15.78203\\-254.9453\\-127\\15.32616\\-252.9922\\-127\\14.59585\\-251.0391\\-127\\14.08275\\-249.0859\\-127\\13.21916\\-243.2266\\-127\\12.28448\\-239.3203\\-127\\11.96145\\-237.3672\\-127\\11.28882\\-229.5547\\-127\\10.47165\\-225.6484\\-127\\10.07269\\-221.7422\\-127\\9.775061\\-215.8828\\-127\\9.508359\\-211.9766\\-127\\9.309506\\-210.0234\\-127\\8.736879\\-206.1172\\-127\\8.57736\\-204.1641\\-127\\8.553341\\-200.2578\\-127\\8.766352\\-198.3047\\-127\\9.08801\\-196.3516\\-127\\9.822237\\-190.4922\\-127\\10.00977\\-188.5391\\-127\\10.19597\\-184.6328\\-127\\10.53049\\-180.7266\\-127\\11.3246\\-176.8203\\-127\\11.94719\\-170.9609\\-127\\12.36747\\-169.0078\\-127\\13.02316\\-167.0547\\-127\\13.81549\\-163.1484\\-127\\14.37039\\-161.1953\\-127\\15.37812\\-159.2422\\-127\\16.1532\\-157.2891\\-127\\17.44088\\-155.3359\\-127\\18.47076\\-153.3828\\-127\\19.64321\\-151.4297\\-127\\21.06855\\-149.4766\\-127\\22.46094\\-147.7219\\-127\\26.40857\\-143.6172\\-127\\28.40021\\-141.6641\\-127\\30.89334\\-139.7109\\-127\\34.17969\\-137.2936\\-127\\36.13281\\-136.2045\\-127\\38.08594\\-134.9603\\-127\\41.99219\\-133.0327\\-127\\43.94531\\-132.5267\\-127\\45.89844\\-131.5166\\-127\\49.80469\\-130.3448\\-127\\51.75781\\-129.512\\-127\\53.71094\\-129.0972\\-127\\59.57031\\-128.1959\\-127\\63.47656\\-127.7587\\-127\\67.38281\\-127.6328\\-127\\69.33594\\-127.6218\\-127\\73.24219\\-127.739\\-127\\77.14844\\-127.9999\\-127\\81.05469\\-128.4079\\-127\\88.86719\\-128.9238\\-127\\94.72656\\-129.5371\\-127\\100.5859\\-130.651\\-127\\102.5391\\-130.9219\\-127\\106.4453\\-131.7215\\-127\\108.3984\\-132.2656\\-127\\114.2578\\-133.6054\\-127\\116.2109\\-134.2701\\-127\\120.1172\\-135.32\\-127\\122.0703\\-136.214\\-127\\124.0234\\-136.8977\\-127\\129.8828\\-139.5749\\-127\\133.7891\\-141.6071\\-127\\135.7422\\-142.8398\\-127\\137.6953\\-144.2614\\-127\\139.6484\\-145.3962\\-127\\141.6016\\-146.7164\\-127\\143.5547\\-148.2626\\-127\\147.3114\\-151.4297\\-127\\149.4141\\-153.3739\\-127\\153.3203\\-157.497\\-127\\155.2734\\-159.8467\\-127\\157.6001\\-163.1484\\-127\\158.6784\\-165.1016\\-127\\160.0176\\-167.0547\\-127\\162.0123\\-170.9609\\-127\\162.6252\\-172.9141\\-127\\163.6311\\-174.8672\\-127\\164.1692\\-176.8203\\-127\\165.5884\\-180.7266\\-127\\166.317\\-184.6328\\-127\\167.1007\\-188.5391\\-127\\167.379\\-190.4922\\-127\\167.7029\\-194.3984\\-127\\167.8431\\-198.3047\\-127\\167.8941\\-202.2109\\-127\\167.8711\\-206.1172\\-127\\167.649\\-211.9766\\-127\\167.3242\\-215.8828\\-127\\167.0444\\-217.8359\\-127\\166.3174\\-221.7422\\-127\\165.6954\\-225.6484\\-127\\165.2508\\-227.6016\\-127\\164.5447\\-229.5547\\-127\\163.7426\\-233.4609\\-127\\162.3428\\-237.3672\\-127\\161.9104\\-239.3203\\-127\\161.1328\\-241.229\\-127\\160.2153\\-243.2266\\-127\\159.4187\\-245.1797\\-127\\158.2961\\-247.1328\\-127\\157.4136\\-249.0859\\-127\\156.3293\\-251.0391\\-127\\155.4195\\-252.9922\\-127\\154.237\\-254.9453\\-127\\152.8855\\-256.8984\\-127\\151.6859\\-258.8516\\-127\\149.4141\\-262.1575\\-127\\147.5938\\-264.7109\\-127\\145.5078\\-267.2789\\-127\\142.6785\\-270.5703\\-127\\139.6484\\-273.8813\\-127\\133.7891\\-279.7231\\-127\\131.8359\\-281.4567\\-127\\128.546\\-284.2422\\-127\\125.9766\\-286.2792\\-127\\122.0703\\-288.9882\\-127\\120.1172\\-290.2255\\-127\\118.1641\\-291.3294\\-127\\116.2109\\-292.7654\\-127\\112.3047\\-294.8406\\-127\\110.3516\\-295.5139\\-127\\108.3984\\-296.5577\\-127\\106.4453\\-297.1274\\-127\\104.4922\\-298.0627\\-127\\102.5391\\-298.8088\\-127\\100.5859\\-299.4311\\-127\\98.63281\\-300.254\\-127\\96.67969\\-300.7018\\-127\\92.77344\\-301.3931\\-127\\88.86719\\-302.2685\\-127\\86.91406\\-302.5179\\-127\\83.00781\\-302.7859\\-127\\79.10156\\-302.9264\\-127\\75.19531\\-302.9715\\-127\\73.24219\\-302.9417\\-127\\67.38281\\-302.7358\\-127\\65.42969\\-302.5956\\-127\\63.47656\\-302.3477\\-127"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "177"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-303.811\\-125\\-81.05469\\-303.5014\\-125\\-84.96094\\-303.0133\\-125\\-88.86719\\-302.6283\\-125\\-90.82031\\-302.2952\\-125\\-92.77344\\-301.705\\-125\\-96.67969\\-300.7867\\-125\\-98.63281\\-300.2693\\-125\\-100.5859\\-299.3286\\-125\\-102.5391\\-298.6451\\-125\\-104.4922\\-297.5908\\-125\\-106.4453\\-296.808\\-125\\-108.3984\\-295.7982\\-125\\-110.3516\\-294.9237\\-125\\-114.2578\\-292.7299\\-125\\-116.2109\\-291.2351\\-125\\-118.1641\\-289.8803\\-125\\-120.1172\\-288.8102\\-125\\-122.0703\\-287.2727\\-125\\-125.7264\\-284.2422\\-125\\-127.9297\\-282.5692\\-125\\-129.8828\\-280.8168\\-125\\-136.1867\\-274.4766\\-125\\-139.3158\\-270.5703\\-125\\-141.0011\\-268.6172\\-125\\-142.5101\\-266.6641\\-125\\-143.8535\\-264.7109\\-125\\-145.0576\\-262.7578\\-125\\-145.5078\\-262.2332\\-125\\-147.9394\\-258.8516\\-125\\-148.8783\\-256.8984\\-125\\-150.1038\\-254.9453\\-125\\-150.9564\\-252.9922\\-125\\-152.2157\\-251.0391\\-125\\-153.3203\\-249.0515\\-125\\-154.2685\\-247.1328\\-125\\-156.0584\\-243.2266\\-125\\-156.6406\\-241.2734\\-125\\-157.697\\-239.3203\\-125\\-158.3509\\-237.3672\\-125\\-159.3791\\-235.4141\\-125\\-160.7617\\-231.5078\\-125\\-161.6081\\-229.5547\\-125\\-162.0857\\-227.6016\\-125\\-162.4577\\-225.6484\\-125\\-163.7756\\-221.7422\\-125\\-164.5821\\-217.8359\\-125\\-165.3209\\-215.8828\\-125\\-165.7664\\-213.9297\\-125\\-166.4384\\-210.0234\\-125\\-167.2414\\-206.1172\\-125\\-167.4866\\-204.1641\\-125\\-167.6099\\-202.2109\\-125\\-167.6413\\-198.3047\\-125\\-167.379\\-194.3984\\-125\\-165.7883\\-186.5859\\-125\\-165.2261\\-184.6328\\-125\\-164.3899\\-182.6797\\-125\\-163.8704\\-180.7266\\-125\\-162.9979\\-178.7734\\-125\\-161.3751\\-174.8672\\-125\\-160.0669\\-172.9141\\-125\\-158.5515\\-170.9609\\-125\\-155.8344\\-167.0547\\-125\\-154.1029\\-165.1016\\-125\\-149.4141\\-160.5187\\-125\\-147.4609\\-158.8329\\-125\\-145.5078\\-157.4122\\-125\\-142.9932\\-155.3359\\-125\\-139.6484\\-152.7077\\-125\\-137.6953\\-151.5978\\-125\\-135.7422\\-150.2716\\-125\\-133.7891\\-148.7905\\-125\\-128.3137\\-145.5703\\-125\\-125.9766\\-144.3021\\-125\\-124.0234\\-143.0051\\-125\\-122.0703\\-141.9846\\-125\\-120.1172\\-140.7831\\-125\\-118.1641\\-139.9866\\-125\\-116.2109\\-138.9422\\-125\\-114.2578\\-138.1317\\-125\\-112.3047\\-137.1271\\-125\\-110.3516\\-136.3113\\-125\\-108.3984\\-135.3873\\-125\\-104.4922\\-133.9592\\-125\\-102.5391\\-133.1627\\-125\\-100.5859\\-132.7983\\-125\\-96.67969\\-131.4173\\-125\\-94.72656\\-130.8803\\-125\\-92.77344\\-130.4482\\-125\\-88.86719\\-129.2771\\-125\\-86.91406\\-128.9481\\-125\\-81.05469\\-128.081\\-125\\-79.10156\\-127.7312\\-125\\-77.14844\\-127.4837\\-125\\-71.28906\\-127.1297\\-125\\-69.33594\\-127.0584\\-125\\-63.47656\\-127.0859\\-125\\-59.57031\\-127.2722\\-125\\-57.61719\\-127.4373\\-125\\-55.66406\\-127.7167\\-125\\-53.71094\\-128.3056\\-125\\-49.80469\\-129.0516\\-125\\-47.85156\\-129.4991\\-125\\-45.89844\\-130.2755\\-125\\-41.99219\\-131.5198\\-125\\-40.03906\\-132.4804\\-125\\-38.08594\\-133.1029\\-125\\-36.13281\\-134.2465\\-125\\-34.17969\\-135.2174\\-125\\-30.27344\\-138.2024\\-125\\-28.32031\\-139.5141\\-125\\-25.987\\-141.6641\\-125\\-22.46094\\-145.9068\\-125\\-19.75517\\-149.4766\\-125\\-18.90397\\-151.4297\\-125\\-17.68007\\-153.3828\\-125\\-16.80531\\-155.3359\\-125\\-15.82132\\-157.2891\\-125\\-15.18378\\-159.2422\\-125\\-14.31418\\-161.1953\\-125\\-13.8432\\-163.1484\\-125\\-13.18359\\-167.0547\\-125\\-12.16554\\-170.9609\\-125\\-11.87323\\-172.9141\\-125\\-11.31766\\-178.7734\\-125\\-11.0919\\-180.7266\\-125\\-10.46036\\-184.6328\\-125\\-10.39567\\-186.5859\\-125\\-10.59358\\-190.4922\\-125\\-10.88275\\-192.4453\\-125\\-11.2754\\-196.3516\\-125\\-11.36106\\-198.3047\\-125\\-11.24878\\-200.2578\\-125\\-10.70463\\-202.2109\\-125\\-10.21205\\-206.1172\\-125\\-9.988433\\-210.0234\\-125\\-9.9769\\-213.9297\\-125\\-10.14245\\-219.7891\\-125\\-10.5678\\-223.6953\\-125\\-11.31979\\-227.6016\\-125\\-11.8606\\-233.4609\\-125\\-12.12565\\-235.4141\\-125\\-13.11384\\-239.3203\\-125\\-14.02274\\-245.1797\\-125\\-14.61088\\-247.1328\\-125\\-15.36602\\-249.0859\\-125\\-15.87685\\-251.0391\\-125\\-16.77848\\-252.9922\\-125\\-17.48798\\-254.9453\\-125\\-18.03663\\-256.8984\\-125\\-19.09931\\-258.8516\\-125\\-19.59044\\-260.8047\\-125\\-20.2691\\-262.7578\\-125\\-21.3395\\-264.7109\\-125\\-22.13542\\-266.6641\\-125\\-23.35875\\-268.6172\\-125\\-26.3265\\-274.4766\\-125\\-27.45689\\-276.4297\\-125\\-28.80233\\-278.3828\\-125\\-29.98047\\-280.3359\\-125\\-32.85767\\-284.2422\\-125\\-34.15606\\-286.1953\\-125\\-35.74916\\-288.1484\\-125\\-40.03906\\-292.8003\\-125\\-41.99219\\-294.5897\\-125\\-45.89844\\-297.1244\\-125\\-47.85156\\-298.5522\\-125\\-49.80469\\-299.5307\\-125\\-51.75781\\-300.6188\\-125\\-53.71094\\-301.1925\\-125\\-55.66406\\-301.9805\\-125\\-57.61719\\-302.53\\-125\\-61.52344\\-303.0536\\-125\\-67.38281\\-304.0092\\-125\\-71.28906\\-304.2173\\-125\\-75.19531\\-304.1604\\-125"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "170"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "61.52344\\-301.86\\-125\\59.57031\\-301.3288\\-125\\55.66406\\-300.5317\\-125\\53.9363\\-299.8672\\-125\\49.80469\\-298.037\\-125\\43.94531\\-294.8615\\-125\\40.11418\\-292.0547\\-125\\37.82038\\-290.1016\\-125\\36.13281\\-288.7656\\-125\\33.45905\\-286.1953\\-125\\30.05559\\-282.2891\\-125\\28.32031\\-280.1317\\-125\\25.71399\\-276.4297\\-125\\24.6878\\-274.4766\\-125\\24.41406\\-274.1624\\-125\\22.46094\\-270.9658\\-125\\22.13319\\-270.5703\\-125\\21.25324\\-268.6172\\-125\\20.076\\-266.6641\\-125\\18.84909\\-262.7578\\-125\\17.84589\\-260.8047\\-125\\17.3236\\-258.8516\\-125\\16.42718\\-256.8984\\-125\\15.80166\\-254.9453\\-125\\15.34673\\-252.9922\\-125\\14.64844\\-250.9352\\-125\\14.11522\\-249.0859\\-125\\13.27237\\-243.2266\\-125\\12.89208\\-241.2734\\-125\\12.39102\\-239.3203\\-125\\12.03435\\-237.3672\\-125\\11.83745\\-235.4141\\-125\\11.36834\\-229.5547\\-125\\11.1183\\-227.6016\\-125\\10.6756\\-225.6484\\-125\\10.36516\\-223.6953\\-125\\10.17253\\-221.7422\\-125\\9.848933\\-215.8828\\-125\\9.577434\\-211.9766\\-125\\9.359195\\-210.0234\\-125\\8.766352\\-206.1172\\-125\\8.57736\\-204.1641\\-125\\8.507236\\-200.2578\\-125\\8.57736\\-198.3047\\-125\\9.80829\\-190.4922\\-125\\9.961872\\-188.5391\\-125\\10.14245\\-184.6328\\-125\\10.4831\\-180.7266\\-125\\11.31283\\-176.8203\\-125\\11.94018\\-170.9609\\-125\\12.34209\\-169.0078\\-125\\12.99741\\-167.0547\\-125\\13.804\\-163.1484\\-125\\14.35884\\-161.1953\\-125\\15.34999\\-159.2422\\-125\\16.11328\\-157.2891\\-125\\17.4136\\-155.3359\\-125\\18.41412\\-153.3828\\-125\\19.59924\\-151.4297\\-125\\22.46094\\-147.5829\\-125\\26.19485\\-143.6172\\-125\\28.32031\\-141.5202\\-125\\30.27344\\-140.1202\\-125\\34.17969\\-137.1707\\-125\\38.08594\\-134.8047\\-125\\40.03906\\-133.6761\\-125\\41.99219\\-132.8868\\-125\\43.94531\\-132.231\\-125\\45.89844\\-131.2088\\-125\\47.85156\\-130.6096\\-125\\49.80469\\-129.6926\\-125\\51.75781\\-129.1198\\-125\\57.61719\\-127.8786\\-125\\59.57031\\-127.5785\\-125\\63.47656\\-127.2769\\-125\\69.33594\\-127.0991\\-125\\77.14844\\-127.0446\\-125\\86.91406\\-127.2704\\-125\\92.77344\\-127.5845\\-125\\94.72656\\-127.7989\\-125\\96.67969\\-128.2409\\-125\\102.5391\\-129.0583\\-125\\104.4922\\-129.5101\\-125\\106.4453\\-130.1406\\-125\\108.3984\\-130.57\\-125\\110.3516\\-131.1601\\-125\\113.2813\\-131.8984\\-125\\118.1641\\-133.3894\\-125\\120.1172\\-134.2724\\-125\\122.0703\\-134.8968\\-125\\124.0234\\-135.7595\\-125\\127.9297\\-137.684\\-125\\133.7891\\-140.7831\\-125\\135.7422\\-142.0804\\-125\\137.6953\\-143.2765\\-125\\139.6484\\-144.7514\\-125\\140.9538\\-145.5703\\-125\\143.5547\\-147.413\\-125\\145.5078\\-148.9883\\-125\\148.2721\\-151.4297\\-125\\151.3672\\-154.5472\\-125\\153.8675\\-157.2891\\-125\\155.4118\\-159.2422\\-125\\156.6102\\-161.1953\\-125\\157.2266\\-161.9713\\-125\\159.1876\\-165.1016\\-125\\161.463\\-169.0078\\-125\\162.8937\\-172.9141\\-125\\163.7866\\-174.8672\\-125\\164.3192\\-176.8203\\-125\\165.0618\\-178.7734\\-125\\165.6813\\-180.7266\\-125\\167.1538\\-188.5391\\-125\\167.4241\\-190.4922\\-125\\167.7145\\-194.3984\\-125\\167.8545\\-198.3047\\-125\\167.8994\\-202.2109\\-125\\167.8251\\-208.0703\\-125\\167.6607\\-211.9766\\-125\\167.3242\\-215.8828\\-125\\167.0444\\-217.8359\\-125\\166.3356\\-221.7422\\-125\\165.7023\\-225.6484\\-125\\165.2748\\-227.6016\\-125\\164.5538\\-229.5547\\-125\\163.7464\\-233.4609\\-125\\162.3428\\-237.3672\\-125\\161.9057\\-239.3203\\-125\\161.1328\\-241.229\\-125\\160.2102\\-243.2266\\-125\\159.4187\\-245.1797\\-125\\158.2858\\-247.1328\\-125\\157.401\\-249.0859\\-125\\156.3171\\-251.0391\\-125\\155.375\\-252.9922\\-125\\154.2065\\-254.9453\\-125\\152.8288\\-256.8984\\-125\\151.6373\\-258.8516\\-125\\149.4141\\-262.0679\\-125\\147.4855\\-264.7109\\-125\\145.5078\\-267.1854\\-125\\142.6116\\-270.5703\\-125\\139.6484\\-273.8146\\-125\\133.7891\\-279.6604\\-125\\131.8359\\-281.4305\\-125\\128.514\\-284.2422\\-125\\125.9766\\-286.2344\\-125\\122.0703\\-288.9757\\-125\\120.1172\\-290.1978\\-125\\118.1641\\-291.318\\-125\\116.2109\\-292.7581\\-125\\112.3047\\-294.8286\\-125\\110.3516\\-295.4897\\-125\\108.3984\\-296.5457\\-125\\106.4453\\-297.1057\\-125\\104.4922\\-298.0361\\-125\\102.5391\\-298.793\\-125\\100.5859\\-299.4094\\-125\\98.63281\\-300.2334\\-125\\96.67969\\-300.6905\\-125\\92.77344\\-301.3691\\-125\\88.86719\\-302.2369\\-125\\86.91406\\-302.5057\\-125\\83.00781\\-302.7694\\-125\\79.10156\\-302.9036\\-125\\75.19531\\-302.9434\\-125\\73.24219\\-302.9143\\-125\\67.38281\\-302.7127\\-125\\65.42969\\-302.5572\\-125\\63.47656\\-302.292\\-125"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "184"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-77.14844\\-303.9221\\-123\\-81.05469\\-303.3867\\-123\\-88.86719\\-302.5765\\-123\\-90.82031\\-302.2123\\-123\\-92.77344\\-301.6058\\-123\\-96.67969\\-300.7295\\-123\\-98.63281\\-300.1905\\-123\\-100.5859\\-299.2675\\-123\\-102.5391\\-298.5922\\-123\\-104.4922\\-297.5221\\-123\\-106.4453\\-296.7802\\-123\\-108.3984\\-295.7549\\-123\\-110.3516\\-294.8994\\-123\\-114.2578\\-292.7039\\-123\\-116.2109\\-291.2102\\-123\\-118.1641\\-289.8387\\-123\\-120.1172\\-288.7887\\-123\\-122.0703\\-287.2475\\-123\\-125.9766\\-283.9621\\-123\\-127.9297\\-282.5408\\-123\\-129.8828\\-280.802\\-123\\-136.1607\\-274.4766\\-123\\-137.6703\\-272.5234\\-123\\-140.9658\\-268.6172\\-123\\-142.5044\\-266.6641\\-123\\-143.8264\\-264.7109\\-123\\-145.047\\-262.7578\\-123\\-145.5078\\-262.2215\\-123\\-147.9162\\-258.8516\\-123\\-148.8647\\-256.8984\\-123\\-150.0835\\-254.9453\\-123\\-150.9458\\-252.9922\\-123\\-152.2035\\-251.0391\\-123\\-153.3203\\-249.0292\\-123\\-154.2685\\-247.1328\\-123\\-156.0658\\-243.2266\\-123\\-156.6585\\-241.2734\\-123\\-157.7236\\-239.3203\\-123\\-158.3739\\-237.3672\\-123\\-159.4154\\-235.4141\\-123\\-160.7963\\-231.5078\\-123\\-161.6661\\-229.5547\\-123\\-162.4912\\-225.6484\\-123\\-163.2287\\-223.6953\\-123\\-163.8277\\-221.7422\\-123\\-164.2027\\-219.7891\\-123\\-164.6786\\-217.8359\\-123\\-165.3959\\-215.8828\\-123\\-165.8253\\-213.9297\\-123\\-166.5286\\-210.0234\\-123\\-167.3456\\-206.1172\\-123\\-167.5614\\-204.1641\\-123\\-167.7447\\-200.2578\\-123\\-167.6452\\-196.3516\\-123\\-167.4988\\-194.3984\\-123\\-167.2191\\-192.4453\\-123\\-166.7395\\-190.4922\\-123\\-165.8929\\-186.5859\\-123\\-165.4084\\-184.6328\\-123\\-164.5203\\-182.6797\\-123\\-163.978\\-180.7266\\-123\\-163.2146\\-178.7734\\-123\\-162.2886\\-176.8203\\-123\\-161.5553\\-174.8672\\-123\\-160.2273\\-172.9141\\-123\\-158.7796\\-170.9609\\-123\\-157.5346\\-169.0078\\-123\\-156.0172\\-167.0547\\-123\\-154.3588\\-165.1016\\-123\\-151.3672\\-162.067\\-123\\-149.4141\\-160.1828\\-123\\-143.5547\\-155.1057\\-123\\-141.3212\\-153.3828\\-123\\-135.7422\\-149.3848\\-123\\-133.7891\\-148.1953\\-123\\-131.8359\\-146.735\\-123\\-129.8828\\-145.5794\\-123\\-125.9766\\-143.0108\\-123\\-124.0234\\-141.9296\\-123\\-122.0703\\-140.6635\\-123\\-120.1172\\-139.5206\\-123\\-114.2578\\-136.4469\\-123\\-110.3516\\-134.5707\\-123\\-108.3984\\-133.8815\\-123\\-106.4453\\-132.9434\\-123\\-104.4922\\-132.2872\\-123\\-102.5391\\-131.4253\\-123\\-100.5859\\-131.0314\\-123\\-98.63281\\-130.1028\\-123\\-96.67969\\-129.6025\\-123\\-94.72656\\-128.8527\\-123\\-92.77344\\-128.4361\\-123\\-90.82031\\-128.1191\\-123\\-88.86719\\-127.4357\\-123\\-86.91406\\-127.0945\\-123\\-83.00781\\-126.6748\\-123\\-81.05469\\-126.5318\\-123\\-79.10156\\-126.221\\-123\\-77.14844\\-125.7493\\-123\\-73.24219\\-125.5813\\-123\\-69.33594\\-125.4824\\-123\\-63.47656\\-125.5906\\-123\\-61.52344\\-125.7615\\-123\\-59.57031\\-126.1042\\-123\\-55.66406\\-126.5186\\-123\\-53.71094\\-126.8893\\-123\\-51.75781\\-127.3608\\-123\\-49.77899\\-127.9922\\-123\\-45.89844\\-129.1174\\-123\\-43.94531\\-129.8485\\-123\\-40.03906\\-131.4861\\-123\\-38.08594\\-132.5186\\-123\\-36.13281\\-133.3417\\-123\\-32.43371\\-135.8047\\-123\\-30.27344\\-137.3933\\-123\\-28.32031\\-138.9939\\-123\\-26.36719\\-140.854\\-123\\-23.97075\\-143.6172\\-123\\-22.3736\\-145.5703\\-123\\-19.65256\\-149.4766\\-123\\-18.77254\\-151.4297\\-123\\-17.61014\\-153.3828\\-123\\-15.7638\\-157.2891\\-123\\-15.10336\\-159.2422\\-123\\-14.23356\\-161.1953\\-123\\-13.79251\\-163.1484\\-123\\-13.10614\\-167.0547\\-123\\-12.53634\\-169.0078\\-123\\-12.09578\\-170.9609\\-123\\-11.62109\\-174.8672\\-123\\-11.08099\\-180.7266\\-123\\-10.69\\-182.6797\\-123\\-10.41667\\-184.6328\\-123\\-10.32624\\-186.5859\\-123\\-10.4947\\-190.4922\\-123\\-11.00852\\-194.3984\\-123\\-11.20575\\-196.3516\\-123\\-11.26342\\-198.3047\\-123\\-11.03584\\-200.2578\\-123\\-10.51839\\-202.2109\\-123\\-10.13513\\-206.1172\\-123\\-10.03418\\-208.0703\\-123\\-9.932242\\-213.9297\\-123\\-10.05959\\-219.7891\\-123\\-10.22023\\-221.7422\\-123\\-10.51839\\-223.6953\\-123\\-11.33055\\-227.6016\\-123\\-11.84353\\-233.4609\\-123\\-12.08726\\-235.4141\\-123\\-13.06831\\-239.3203\\-123\\-14.00321\\-245.1797\\-123\\-14.52637\\-247.1328\\-123\\-15.33746\\-249.0859\\-123\\-15.85629\\-251.0391\\-123\\-17.46795\\-254.9453\\-123\\-18.0161\\-256.8984\\-123\\-19.09022\\-258.8516\\-123\\-19.56676\\-260.8047\\-123\\-20.24213\\-262.7578\\-123\\-21.32704\\-264.7109\\-123\\-22.10412\\-266.6641\\-123\\-23.3435\\-268.6172\\-123\\-25.36224\\-272.5234\\-123\\-26.29515\\-274.4766\\-123\\-27.44498\\-276.4297\\-123\\-28.78981\\-278.3828\\-123\\-29.98047\\-280.3359\\-123\\-32.86661\\-284.2422\\-123\\-34.17969\\-286.1663\\-123\\-35.78856\\-288.1484\\-123\\-38.08594\\-290.5975\\-123\\-39.36349\\-292.0547\\-123\\-41.99219\\-294.5099\\-123\\-43.94531\\-295.7092\\-123\\-47.85156\\-298.4648\\-123\\-49.80469\\-299.4102\\-123\\-51.75781\\-300.5284\\-123\\-53.71094\\-301.1174\\-123\\-55.66406\\-301.86\\-123\\-57.61719\\-302.4693\\-123\\-63.47656\\-303.2789\\-123\\-67.38281\\-303.9221\\-123\\-69.33594\\-304.0774\\-123\\-73.24219\\-304.1404\\-123"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "169"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "63.47656\\-302.234\\-123\\59.57031\\-301.2742\\-123\\55.66406\\-300.4731\\-123\\51.75781\\-298.8378\\-123\\47.85156\\-296.9048\\-123\\43.94531\\-294.8102\\-123\\40.19368\\-292.0547\\-123\\37.8854\\-290.1016\\-123\\36.13281\\-288.7289\\-123\\33.49474\\-286.1953\\-123\\30.09796\\-282.2891\\-123\\28.32031\\-280.116\\-123\\25.71829\\-276.4297\\-123\\24.70042\\-274.4766\\-123\\24.41406\\-274.1454\\-123\\22.46094\\-270.9365\\-123\\22.15576\\-270.5703\\-123\\21.26034\\-268.6172\\-123\\20.08928\\-266.6641\\-123\\18.82234\\-262.7578\\-123\\17.83265\\-260.8047\\-123\\17.32746\\-258.8516\\-123\\16.43997\\-256.8984\\-123\\15.82129\\-254.9453\\-123\\15.37047\\-252.9922\\-123\\14.15712\\-249.0859\\-123\\13.83653\\-247.1328\\-123\\13.31505\\-243.2266\\-123\\12.99741\\-241.2734\\-123\\12.1205\\-237.3672\\-123\\11.8953\\-235.4141\\-123\\11.43185\\-229.5547\\-123\\11.2274\\-227.6016\\-123\\10.53049\\-223.6953\\-123\\10.28022\\-221.7422\\-123\\9.924492\\-215.8828\\-123\\9.636739\\-211.9766\\-123\\9.409015\\-210.0234\\-123\\8.766352\\-206.1172\\-123\\8.553341\\-204.1641\\-123\\8.463542\\-200.2578\\-123\\8.4851\\-198.3047\\-123\\8.653626\\-196.3516\\-123\\9.449047\\-192.4453\\-123\\9.74169\\-190.4922\\-123\\10.07934\\-184.6328\\-123\\10.44922\\-180.7266\\-123\\11.26342\\-176.8203\\-123\\11.94018\\-170.9609\\-123\\12.31971\\-169.0078\\-123\\12.9996\\-167.0547\\-123\\13.79251\\-163.1484\\-123\\14.32292\\-161.1953\\-123\\15.32018\\-159.2422\\-123\\16.08351\\-157.2891\\-123\\17.3731\\-155.3359\\-123\\18.33531\\-153.3828\\-123\\20.50781\\-150.0589\\-123\\22.37894\\-147.5234\\-123\\26.00861\\-143.6172\\-123\\28.32031\\-141.3241\\-123\\32.22656\\-138.5115\\-123\\33.13961\\-137.7578\\-123\\36.13281\\-135.6937\\-123\\38.08594\\-134.5871\\-123\\40.03906\\-133.3633\\-123\\41.99219\\-132.6662\\-123\\43.94531\\-131.6048\\-123\\45.89844\\-130.8191\\-123\\47.85156\\-129.8461\\-123\\49.80469\\-129.0843\\-123\\51.75781\\-128.5994\\-123\\55.66406\\-127.5039\\-123\\61.52344\\-126.7887\\-123\\65.42969\\-126.4653\\-123\\71.28906\\-125.6813\\-123\\75.19531\\-125.3601\\-123\\79.10156\\-125.2142\\-123\\86.91406\\-125.1611\\-123\\92.77344\\-125.3092\\-123\\96.67969\\-125.5725\\-123\\98.63281\\-125.856\\-123\\100.5859\\-126.538\\-123\\104.4922\\-126.9512\\-123\\106.4453\\-127.414\\-123\\108.3984\\-128.1201\\-123\\110.3516\\-128.6025\\-123\\112.3047\\-129.3134\\-123\\114.2578\\-129.7861\\-123\\116.2109\\-130.6135\\-123\\118.1641\\-131.3246\\-123\\120.1172\\-132.4442\\-123\\122.0703\\-133.0395\\-123\\125.9766\\-135.1563\\-123\\129.8828\\-137.3625\\-123\\135.7422\\-140.8813\\-123\\141.6016\\-145.0397\\-123\\143.5547\\-146.5469\\-123\\147.086\\-149.4766\\-123\\149.1765\\-151.4297\\-123\\151.3672\\-153.668\\-123\\153.3203\\-155.8458\\-123\\155.9818\\-159.2422\\-123\\158.3582\\-163.1484\\-123\\159.7152\\-165.1016\\-123\\160.6315\\-167.0547\\-123\\161.7606\\-169.0078\\-123\\162.3614\\-170.9609\\-123\\163.2561\\-172.9141\\-123\\163.9358\\-174.8672\\-123\\164.4819\\-176.8203\\-123\\165.2748\\-178.7734\\-123\\165.7907\\-180.7266\\-123\\167.2296\\-188.5391\\-123\\167.4587\\-190.4922\\-123\\167.7376\\-194.3984\\-123\\167.8711\\-198.3047\\-123\\167.8994\\-204.1641\\-123\\167.7677\\-210.0234\\-123\\167.5494\\-213.9297\\-123\\167.073\\-217.8359\\-123\\166.6778\\-219.7891\\-123\\165.7263\\-225.6484\\-123\\165.2865\\-227.6016\\-123\\164.5726\\-229.5547\\-123\\163.7538\\-233.4609\\-123\\162.3428\\-237.3672\\-123\\161.8984\\-239.3203\\-123\\161.1328\\-241.2582\\-123\\160.2051\\-243.2266\\-123\\159.4066\\-245.1797\\-123\\158.2755\\-247.1328\\-123\\157.3752\\-249.0859\\-123\\156.2868\\-251.0391\\-123\\155.3449\\-252.9922\\-123\\154.1837\\-254.9453\\-123\\152.7894\\-256.8984\\-123\\151.3672\\-259.1148\\-123\\149.4141\\-262.0032\\-123\\145.8543\\-266.6641\\-123\\142.5307\\-270.5703\\-123\\140.7636\\-272.5234\\-123\\137.6953\\-275.6955\\-123\\133.7891\\-279.5953\\-123\\131.8359\\-281.3971\\-123\\128.466\\-284.2422\\-123\\125.9766\\-286.2032\\-123\\122.0703\\-288.9685\\-123\\118.1641\\-291.2996\\-123\\116.2109\\-292.7389\\-123\\114.2578\\-293.7121\\-123\\112.3047\\-294.8096\\-123\\110.3516\\-295.4659\\-123\\108.3984\\-296.5198\\-123\\106.4453\\-297.084\\-123\\104.4922\\-297.9948\\-123\\102.5391\\-298.7724\\-123\\100.5859\\-299.3789\\-123\\98.63281\\-300.2122\\-123\\96.67969\\-300.661\\-123\\92.77344\\-301.3588\\-123\\88.86719\\-302.2012\\-123\\86.91406\\-302.4775\\-123\\84.96094\\-302.6466\\-123\\81.05469\\-302.8185\\-123\\77.14844\\-302.9156\\-123\\73.24219\\-302.8823\\-123\\67.38281\\-302.684\\-123\\65.42969\\-302.5179\\-123"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "179"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-77.14844\\-303.7961\\-121\\-81.05469\\-303.3039\\-121\\-88.86719\\-302.5179\\-121\\-90.82031\\-302.1147\\-121\\-92.77344\\-301.4901\\-121\\-96.67969\\-300.6657\\-121\\-98.63281\\-300.0957\\-121\\-100.5859\\-299.1961\\-121\\-102.5391\\-298.5265\\-121\\-104.4922\\-297.4579\\-121\\-106.4453\\-296.7499\\-121\\-108.3984\\-295.6872\\-121\\-110.3516\\-294.8806\\-121\\-114.2578\\-292.6736\\-121\\-118.1641\\-289.7982\\-121\\-120.1172\\-288.758\\-121\\-122.0703\\-287.2223\\-121\\-125.9766\\-283.9093\\-121\\-127.9297\\-282.5138\\-121\\-129.8828\\-280.7791\\-121\\-136.1343\\-274.4766\\-121\\-137.6374\\-272.5234\\-121\\-140.944\\-268.6172\\-121\\-142.4854\\-266.6641\\-121\\-145.0229\\-262.7578\\-121\\-145.5078\\-262.1941\\-121\\-147.8957\\-258.8516\\-121\\-148.8551\\-256.8984\\-121\\-150.0672\\-254.9453\\-121\\-150.9221\\-252.9922\\-121\\-152.1801\\-251.0391\\-121\\-153.3203\\-249.0055\\-121\\-154.2512\\-247.1328\\-121\\-155.0993\\-245.1797\\-121\\-156.0584\\-243.2266\\-121\\-156.6495\\-241.2734\\-121\\-157.7323\\-239.3203\\-121\\-158.3802\\-237.3672\\-121\\-159.4388\\-235.4141\\-121\\-160.8184\\-231.5078\\-121\\-161.6972\\-229.5547\\-121\\-162.5216\\-225.6484\\-121\\-163.3212\\-223.6953\\-121\\-163.8682\\-221.7422\\-121\\-164.2589\\-219.7891\\-121\\-164.7727\\-217.8359\\-121\\-165.483\\-215.8828\\-121\\-166.2077\\-211.9766\\-121\\-167.1007\\-208.0703\\-121\\-167.4338\\-206.1172\\-121\\-167.6413\\-204.1641\\-121\\-167.8203\\-200.2578\\-121\\-167.8136\\-198.3047\\-121\\-167.6174\\-194.3984\\-121\\-167.3943\\-192.4453\\-121\\-166.4536\\-188.5391\\-121\\-165.5733\\-184.6328\\-121\\-164.7454\\-182.6797\\-121\\-163.4538\\-178.7734\\-121\\-162.4201\\-176.8203\\-121\\-161.7472\\-174.8672\\-121\\-159.1717\\-170.9609\\-121\\-157.2266\\-168.1651\\-121\\-155.2734\\-165.7098\\-121\\-152.9222\\-163.1484\\-121\\-149.4141\\-159.6146\\-121\\-146.9275\\-157.2891\\-121\\-144.6697\\-155.3359\\-121\\-143.5547\\-154.2297\\-121\\-141.6016\\-152.5535\\-121\\-140.1265\\-151.4297\\-121\\-137.6953\\-149.7544\\-121\\-135.7422\\-148.1718\\-121\\-133.7891\\-146.9422\\-121\\-131.8359\\-145.392\\-121\\-125.9766\\-141.2979\\-121\\-124.0234\\-140.1594\\-121\\-122.0703\\-138.7649\\-121\\-120.1367\\-137.7578\\-121\\-118.1641\\-136.3642\\-121\\-116.2109\\-135.193\\-121\\-114.2578\\-134.1382\\-121\\-109.6021\\-131.8984\\-121\\-108.3984\\-131.2349\\-121\\-106.4453\\-130.4953\\-121\\-104.4922\\-129.4402\\-121\\-102.5391\\-128.8511\\-121\\-100.5859\\-127.9521\\-121\\-98.63281\\-127.4468\\-121\\-94.72656\\-126.3097\\-121\\-92.77344\\-125.937\\-121\\-88.86719\\-124.9448\\-121\\-86.91406\\-124.6651\\-121\\-83.00781\\-124.2603\\-121\\-81.05469\\-123.6431\\-121\\-77.14844\\-123.3372\\-121\\-69.33594\\-123.0864\\-121\\-65.42969\\-123.2314\\-121\\-61.52344\\-123.5172\\-121\\-59.57031\\-124.1627\\-121\\-55.66406\\-124.4657\\-121\\-53.71094\\-124.8184\\-121\\-51.75781\\-125.4242\\-121\\-49.80469\\-126.212\\-121\\-47.85156\\-126.7433\\-121\\-43.94531\\-128.3315\\-121\\-41.99219\\-129.2863\\-121\\-37.1875\\-131.8984\\-121\\-34.17969\\-133.6612\\-121\\-32.22656\\-135.0162\\-121\\-28.9847\\-137.7578\\-121\\-26.91951\\-139.7109\\-121\\-24.41406\\-142.573\\-121\\-21.97944\\-145.5703\\-121\\-20.50781\\-147.7832\\-121\\-19.53125\\-149.4766\\-121\\-16.60156\\-155.1427\\-121\\-15.66984\\-157.2891\\-121\\-14.98047\\-159.2422\\-121\\-14.15094\\-161.1953\\-121\\-12.98545\\-167.0547\\-121\\-12.39102\\-169.0078\\-121\\-11.99944\\-170.9609\\-121\\-11.56811\\-174.8672\\-121\\-11.04526\\-180.7266\\-121\\-10.4061\\-184.6328\\-121\\-10.2892\\-186.5859\\-121\\-10.2983\\-188.5391\\-121\\-10.43822\\-190.4922\\-121\\-10.9489\\-194.3984\\-121\\-11.10026\\-196.3516\\-121\\-11.13669\\-198.3047\\-121\\-10.3752\\-202.2109\\-121\\-10.04963\\-206.1172\\-121\\-9.867447\\-213.9297\\-121\\-9.919085\\-217.8359\\-121\\-10.09971\\-221.7422\\-121\\-10.4061\\-223.6953\\-121\\-11.19536\\-227.6016\\-121\\-12.04227\\-235.4141\\-121\\-12.44213\\-237.3672\\-121\\-12.99526\\-239.3203\\-121\\-13.36513\\-241.2734\\-121\\-13.97996\\-245.1797\\-121\\-14.46144\\-247.1328\\-121\\-15.28653\\-249.0859\\-121\\-15.82132\\-251.0391\\-121\\-17.44792\\-254.9453\\-121\\-17.99916\\-256.8984\\-121\\-19.03654\\-258.8516\\-121\\-19.54309\\-260.8047\\-121\\-20.21767\\-262.7578\\-121\\-21.3143\\-264.7109\\-121\\-22.06421\\-266.6641\\-121\\-23.31674\\-268.6172\\-121\\-24.2513\\-270.5703\\-121\\-25.35088\\-272.5234\\-121\\-26.26397\\-274.4766\\-121\\-27.42661\\-276.4297\\-121\\-28.77055\\-278.3828\\-121\\-29.96947\\-280.3359\\-121\\-32.85767\\-284.2422\\-121\\-34.17969\\-286.1289\\-121\\-35.81437\\-288.1484\\-121\\-38.08594\\-290.5552\\-121\\-39.41761\\-292.0547\\-121\\-41.99219\\-294.4364\\-121\\-43.94531\\-295.6039\\-121\\-44.37641\\-295.9609\\-121\\-47.85156\\-298.3698\\-121\\-49.80469\\-299.3015\\-121\\-51.75781\\-300.442\\-121\\-53.71094\\-301.05\\-121\\-57.61719\\-302.4101\\-121\\-59.57031\\-302.7358\\-121\\-63.47656\\-303.2128\\-121\\-67.38281\\-303.811\\-121\\-69.33594\\-303.9851\\-121\\-73.24219\\-304.0553\\-121"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "178"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "63.47656\\-302.1646\\-121\\61.52344\\-301.6475\\-121\\55.66406\\-300.421\\-121\\51.75781\\-298.7898\\-121\\47.85156\\-296.8611\\-121\\45.89844\\-295.7397\\-121\\43.94531\\-294.7729\\-121\\40.25519\\-292.0547\\-121\\37.95155\\-290.1016\\-121\\36.13281\\-288.7055\\-121\\33.51727\\-286.1953\\-121\\30.11322\\-282.2891\\-121\\28.32031\\-280.0853\\-121\\25.72692\\-276.4297\\-121\\24.70042\\-274.4766\\-121\\24.41406\\-274.1454\\-121\\22.46094\\-270.9335\\-121\\22.15787\\-270.5703\\-121\\21.26034\\-268.6172\\-121\\20.0998\\-266.6641\\-121\\18.80976\\-262.7578\\-121\\17.82614\\-260.8047\\-121\\17.33398\\-258.8516\\-121\\16.45296\\-256.8984\\-121\\15.83708\\-254.9453\\-121\\15.38732\\-252.9922\\-121\\14.19724\\-249.0859\\-121\\13.8638\\-247.1328\\-121\\13.06831\\-241.2734\\-121\\12.20061\\-237.3672\\-121\\11.94719\\-235.4141\\-121\\11.32929\\-227.6016\\-121\\11.06994\\-225.6484\\-121\\10.4061\\-221.7422\\-121\\10.09285\\-217.8359\\-121\\9.988433\\-215.8828\\-121\\9.678171\\-211.9766\\-121\\9.459779\\-210.0234\\-121\\8.736879\\-206.1172\\-121\\8.529975\\-204.1641\\-121\\8.412035\\-200.2578\\-121\\8.541577\\-196.3516\\-121\\9.359195\\-192.4453\\-121\\9.638034\\-190.4922\\-121\\10.17253\\-182.6797\\-121\\10.36516\\-180.7266\\-121\\11.19338\\-176.8203\\-121\\11.49462\\-174.8672\\-121\\11.92197\\-170.9609\\-121\\12.29519\\-169.0078\\-121\\12.98545\\-167.0547\\-121\\13.78102\\-163.1484\\-121\\14.28796\\-161.1953\\-121\\15.29002\\-159.2422\\-121\\16.03771\\-157.2891\\-121\\17.33124\\-155.3359\\-121\\18.24951\\-153.3828\\-121\\20.50781\\-149.9464\\-121\\22.24314\\-147.5234\\-121\\24.41406\\-145.2529\\-121\\25.86806\\-143.6172\\-121\\28.32031\\-141.1688\\-121\\30.27344\\-139.6377\\-121\\32.22656\\-138.3424\\-121\\32.88535\\-137.7578\\-121\\36.13281\\-135.2784\\-121\\40.03906\\-133.0315\\-121\\41.99219\\-132.0796\\-121\\43.94531\\-130.9768\\-121\\47.85156\\-129.0251\\-121\\49.80469\\-128.3898\\-121\\51.75781\\-127.5822\\-121\\55.66406\\-126.7396\\-121\\57.61719\\-126.4063\\-121\\59.57031\\-125.9517\\-121\\61.52344\\-125.6177\\-121\\63.47656\\-125.1046\\-121\\69.33594\\-124.1765\\-121\\71.28906\\-123.5829\\-121\\73.24219\\-123.3369\\-121\\77.14844\\-122.9483\\-121\\83.00781\\-122.6428\\-121\\86.91406\\-122.6046\\-121\\92.77344\\-122.7591\\-121\\98.63281\\-123.1308\\-121\\100.5859\\-123.3899\\-121\\102.5391\\-123.7528\\-121\\104.4922\\-124.3533\\-121\\106.4453\\-124.6894\\-121\\110.3516\\-125.6064\\-121\\114.2578\\-127.099\\-121\\116.2109\\-127.6959\\-121\\118.1641\\-128.67\\-121\\120.1172\\-129.4422\\-121\\122.0703\\-130.6353\\-121\\124.0234\\-131.6514\\-121\\125.9766\\-132.9545\\-121\\127.9297\\-134.1291\\-121\\130.2472\\-135.8047\\-121\\131.8359\\-136.7813\\-121\\133.7891\\-138.2092\\-121\\135.7422\\-139.3668\\-121\\137.6953\\-140.8421\\-121\\139.6484\\-142.4438\\-121\\141.3574\\-143.6172\\-121\\143.5547\\-145.3197\\-121\\147.4609\\-148.6514\\-121\\152.1144\\-153.3828\\-121\\153.8652\\-155.3359\\-121\\155.282\\-157.2891\\-121\\156.4632\\-159.2422\\-121\\157.8186\\-161.1953\\-121\\158.8754\\-163.1484\\-121\\160.0861\\-165.1016\\-121\\161.1328\\-167.1198\\-121\\162.0069\\-169.0078\\-121\\162.5909\\-170.9609\\-121\\163.5362\\-172.9141\\-121\\164.6737\\-176.8203\\-121\\165.455\\-178.7734\\-121\\165.8998\\-180.7266\\-121\\166.5901\\-184.6328\\-121\\166.9998\\-186.5859\\-121\\167.511\\-190.4922\\-121\\167.653\\-192.4453\\-121\\167.8826\\-198.3047\\-121\\167.911\\-204.1641\\-121\\167.7746\\-210.0234\\-121\\167.5579\\-213.9297\\-121\\167.379\\-215.8828\\-121\\167.1007\\-217.8359\\-121\\166.6891\\-219.7891\\-121\\165.746\\-225.6484\\-121\\165.2982\\-227.6016\\-121\\164.5726\\-229.5547\\-121\\163.7538\\-233.4609\\-121\\162.3428\\-237.3672\\-121\\161.9104\\-239.3203\\-121\\161.1407\\-241.2734\\-121\\160.2108\\-243.2266\\-121\\159.4204\\-245.1797\\-121\\158.2548\\-247.1328\\-121\\157.362\\-249.0859\\-121\\156.2746\\-251.0391\\-121\\155.3295\\-252.9922\\-121\\154.1718\\-254.9453\\-121\\152.7706\\-256.8984\\-121\\151.3672\\-259.0676\\-121\\149.4141\\-261.9396\\-121\\145.7784\\-266.6641\\-121\\142.4644\\-270.5703\\-121\\140.6729\\-272.5234\\-121\\137.6953\\-275.63\\-121\\133.7891\\-279.5352\\-121\\131.8359\\-281.3518\\-121\\128.422\\-284.2422\\-121\\125.9481\\-286.1953\\-121\\122.0703\\-288.9612\\-121\\118.1641\\-291.2882\\-121\\116.2109\\-292.7235\\-121\\114.2578\\-293.6891\\-121\\112.3047\\-294.7903\\-121\\110.3516\\-295.4361\\-121\\108.3984\\-296.4987\\-121\\106.4453\\-297.0778\\-121\\104.4922\\-297.9662\\-121\\102.5391\\-298.7519\\-121\\100.5859\\-299.3554\\-121\\98.63281\\-300.1794\\-121\\96.67969\\-300.6518\\-121\\92.77344\\-301.3386\\-121\\88.86719\\-302.1985\\-121\\84.96094\\-302.6214\\-121\\81.05469\\-302.8023\\-121\\77.14844\\-302.8823\\-121\\73.24219\\-302.8609\\-121\\67.38281\\-302.6533\\-121\\65.42969\\-302.4775\\-121"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "180"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "57"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-75.19531\\-303.8542\\-119\\-81.05469\\-303.2162\\-119\\-86.91406\\-302.6762\\-119\\-88.86719\\-302.4401\\-119\\-90.82031\\-301.9931\\-119\\-92.77344\\-301.396\\-119\\-96.67969\\-300.5967\\-119\\-98.63281\\-299.9773\\-119\\-100.5859\\-299.1123\\-119\\-102.5391\\-298.4616\\-119\\-104.4922\\-297.3797\\-119\\-106.4453\\-296.7004\\-119\\-108.3984\\-295.5974\\-119\\-110.3516\\-294.8492\\-119\\-112.3047\\-293.6801\\-119\\-114.2578\\-292.6315\\-119\\-118.1641\\-289.7736\\-119\\-120.1172\\-288.7357\\-119\\-122.0703\\-287.1967\\-119\\-125.9766\\-283.8588\\-119\\-127.9297\\-282.4558\\-119\\-129.8828\\-280.7523\\-119\\-132.203\\-278.3828\\-119\\-134.2206\\-276.4297\\-119\\-136.0952\\-274.4766\\-119\\-139.2107\\-270.5703\\-119\\-140.918\\-268.6172\\-119\\-142.4662\\-266.6641\\-119\\-144.9992\\-262.7578\\-119\\-145.5078\\-262.1624\\-119\\-147.8718\\-258.8516\\-119\\-148.8281\\-256.8984\\-119\\-150.0588\\-254.9453\\-119\\-150.9018\\-252.9922\\-119\\-152.1627\\-251.0391\\-119\\-154.263\\-247.1328\\-119\\-155.0722\\-245.1797\\-119\\-156.046\\-243.2266\\-119\\-156.6368\\-241.2734\\-119\\-157.7408\\-239.3203\\-119\\-158.3739\\-237.3672\\-119\\-159.4502\\-235.4141\\-119\\-160.8508\\-231.5078\\-119\\-161.7099\\-229.5547\\-119\\-162.5527\\-225.6484\\-119\\-163.3838\\-223.6953\\-119\\-163.9075\\-221.7422\\-119\\-164.3066\\-219.7891\\-119\\-165.561\\-215.8828\\-119\\-166.2735\\-211.9766\\-119\\-167.2054\\-208.0703\\-119\\-167.5078\\-206.1172\\-119\\-167.7072\\-204.1641\\-119\\-167.8941\\-200.2578\\-119\\-167.8994\\-198.3047\\-119\\-167.7421\\-194.3984\\-119\\-167.5354\\-192.4453\\-119\\-167.2207\\-190.4922\\-119\\-166.6778\\-188.5391\\-119\\-165.7527\\-184.6328\\-119\\-165.0912\\-182.6797\\-119\\-164.2839\\-180.7266\\-119\\-163.6993\\-178.7734\\-119\\-162.6635\\-176.8203\\-119\\-161.9601\\-174.8672\\-119\\-159.6844\\-170.9609\\-119\\-159.1797\\-170.3594\\-119\\-157.2266\\-167.5595\\-119\\-155.366\\-165.1016\\-119\\-153.3203\\-162.6723\\-119\\-151.3672\\-160.5093\\-119\\-148.2115\\-157.2891\\-119\\-145.5078\\-154.6338\\-119\\-143.5547\\-152.833\\-119\\-141.6016\\-151.2588\\-119\\-139.6484\\-149.4863\\-119\\-135.7422\\-146.2182\\-119\\-129.8972\\-141.6641\\-119\\-124.597\\-137.7578\\-119\\-122.0703\\-136.0753\\-119\\-120.1172\\-134.6526\\-119\\-114.2578\\-130.8277\\-119\\-112.3047\\-129.7325\\-119\\-108.3984\\-127.7056\\-119\\-106.4453\\-126.8709\\-119\\-100.5859\\-124.6597\\-119\\-96.67969\\-123.5107\\-119\\-94.72656\\-122.8652\\-119\\-92.77344\\-122.3836\\-119\\-86.91406\\-121.2045\\-119\\-84.96094\\-120.9487\\-119\\-77.14844\\-120.1692\\-119\\-75.19531\\-120.0317\\-119\\-69.33594\\-119.9427\\-119\\-65.42969\\-120.0515\\-119\\-63.47656\\-120.2733\\-119\\-59.57031\\-120.5888\\-119\\-55.66406\\-121.181\\-119\\-53.71094\\-121.7357\\-119\\-49.80469\\-123.1523\\-119\\-45.89844\\-124.8881\\-119\\-43.94531\\-125.904\\-119\\-41.99219\\-127.0376\\-119\\-40.59938\\-127.9922\\-119\\-38.08594\\-129.5568\\-119\\-36.13281\\-130.8873\\-119\\-32.30424\\-133.8516\\-119\\-30.27344\\-135.4766\\-119\\-27.88382\\-137.7578\\-119\\-26.11699\\-139.7109\\-119\\-24.41406\\-141.7827\\-119\\-21.5908\\-145.5703\\-119\\-20.24489\\-147.5234\\-119\\-19.37548\\-149.4766\\-119\\-18.21356\\-151.4297\\-119\\-17.39054\\-153.3828\\-119\\-16.25504\\-155.3359\\-119\\-15.55342\\-157.2891\\-119\\-14.04333\\-161.1953\\-119\\-13.29774\\-165.1016\\-119\\-12.24308\\-169.0078\\-119\\-11.90848\\-170.9609\\-119\\-11.51816\\-174.8672\\-119\\-11.19626\\-178.7734\\-119\\-10.39567\\-184.6328\\-119\\-10.27135\\-186.5859\\-119\\-10.26257\\-188.5391\\-119\\-10.4061\\-190.4922\\-119\\-10.89523\\-194.3984\\-119\\-10.99664\\-196.3516\\-119\\-11.00028\\-198.3047\\-119\\-10.4947\\-200.2578\\-119\\-10.19597\\-202.2109\\-119\\-9.942746\\-206.1172\\-119\\-9.746571\\-213.9297\\-119\\-9.859076\\-219.7891\\-119\\-10.19597\\-223.6953\\-119\\-11.0104\\-227.6016\\-119\\-11.32581\\-229.5547\\-119\\-11.83143\\-233.4609\\-119\\-11.99525\\-235.4141\\-119\\-12.33082\\-237.3672\\-119\\-12.89208\\-239.3203\\-119\\-13.30645\\-241.2734\\-119\\-13.94187\\-245.1797\\-119\\-14.39925\\-247.1328\\-119\\-15.22524\\-249.0859\\-119\\-15.78363\\-251.0391\\-119\\-16.53498\\-252.9922\\-119\\-17.41028\\-254.9453\\-119\\-17.96301\\-256.8984\\-119\\-19.00692\\-258.8516\\-119\\-19.53125\\-260.8047\\-119\\-20.18229\\-262.7578\\-119\\-21.29017\\-264.7109\\-119\\-22.03556\\-266.6641\\-119\\-23.28808\\-268.6172\\-119\\-24.22437\\-270.5703\\-119\\-25.33953\\-272.5234\\-119\\-26.21875\\-274.4766\\-119\\-27.40294\\-276.4297\\-119\\-28.75362\\-278.3828\\-119\\-29.94792\\-280.3359\\-119\\-32.84862\\-284.2422\\-119\\-34.17969\\-286.1474\\-119\\-35.83623\\-288.1484\\-119\\-38.08594\\-290.5123\\-119\\-39.4545\\-292.0547\\-119\\-41.99219\\-294.3596\\-119\\-43.94531\\-295.5293\\-119\\-44.47719\\-295.9609\\-119\\-47.85156\\-298.281\\-119\\-49.80469\\-299.2142\\-119\\-51.75781\\-300.3682\\-119\\-55.66406\\-301.6206\\-119\\-57.61719\\-302.3381\\-119\\-59.57031\\-302.6953\\-119\\-63.47656\\-303.1477\\-119\\-69.33594\\-303.8955\\-119\\-73.24219\\-303.9478\\-119"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "171"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "58"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "63.47656\\-302.088\\-119\\61.52344\\-301.5423\\-119\\57.61719\\-300.8095\\-119\\55.66406\\-300.3764\\-119\\53.71094\\-299.4911\\-119\\51.75781\\-298.7579\\-119\\49.80469\\-297.6915\\-119\\47.85156\\-296.8188\\-119\\45.89844\\-295.683\\-119\\43.94531\\-294.748\\-119\\40.29895\\-292.0547\\-119\\37.98554\\-290.1016\\-119\\36.13281\\-288.6855\\-119\\33.53092\\-286.1953\\-119\\30.12734\\-282.2891\\-119\\28.32031\\-280.0704\\-119\\25.72692\\-276.4297\\-119\\24.70042\\-274.4766\\-119\\24.41406\\-274.1425\\-119\\22.46094\\-270.904\\-119\\22.18289\\-270.5703\\-119\\21.26736\\-268.6172\\-119\\20.0998\\-266.6641\\-119\\18.82234\\-262.7578\\-119\\17.83265\\-260.8047\\-119\\17.33011\\-258.8516\\-119\\16.47949\\-256.8984\\-119\\15.85681\\-254.9453\\-119\\15.42664\\-252.9922\\-119\\14.22902\\-249.0859\\-119\\13.88638\\-247.1328\\-119\\13.13741\\-241.2734\\-119\\12.28448\\-237.3672\\-119\\11.81959\\-233.4609\\-119\\11.40978\\-227.6016\\-119\\10.93606\\-223.6953\\-119\\10.5806\\-221.7422\\-119\\10.16488\\-217.8359\\-119\\10.04044\\-215.8828\\-119\\9.537407\\-210.0234\\-119\\8.694322\\-206.1172\\-119\\8.496094\\-204.1641\\-119\\8.382667\\-200.2578\\-119\\8.518528\\-196.3516\\-119\\8.766352\\-194.3984\\-119\\9.234619\\-192.4453\\-119\\9.538277\\-190.4922\\-119\\9.74215\\-188.5391\\-119\\10.08606\\-182.6797\\-119\\10.26257\\-180.7266\\-119\\10.62012\\-178.7734\\-119\\11.13154\\-176.8203\\-119\\11.49876\\-174.8672\\-119\\11.89076\\-170.9609\\-119\\12.27392\\-169.0078\\-119\\12.94663\\-167.0547\\-119\\13.76433\\-163.1484\\-119\\14.25653\\-161.1953\\-119\\15.23554\\-159.2422\\-119\\15.97858\\-157.2891\\-119\\17.26944\\-155.3359\\-119\\18.14993\\-153.3828\\-119\\20.50781\\-149.7925\\-119\\22.13093\\-147.5234\\-119\\24.41406\\-145.1214\\-119\\25.72761\\-143.6172\\-119\\28.32031\\-141.0338\\-119\\30.27344\\-139.3307\\-119\\32.22656\\-137.9124\\-119\\36.13281\\-134.8219\\-119\\38.08594\\-133.4299\\-119\\40.03906\\-132.383\\-119\\41.99219\\-131.0784\\-119\\44.00712\\-129.9453\\-119\\47.85156\\-127.9494\\-119\\49.80469\\-127.1561\\-119\\51.75781\\-126.5874\\-119\\53.71094\\-125.8777\\-119\\55.66406\\-125.3949\\-119\\57.61719\\-124.7787\\-119\\59.57031\\-124.2644\\-119\\63.47656\\-122.9633\\-119\\65.42969\\-122.4852\\-119\\67.38281\\-121.784\\-119\\73.24219\\-120.7331\\-119\\77.14844\\-120.0918\\-119\\79.10156\\-119.915\\-119\\83.00781\\-119.7296\\-119\\88.86719\\-119.6872\\-119\\94.72656\\-119.8048\\-119\\98.63281\\-120.1106\\-119\\100.5859\\-120.4936\\-119\\102.5391\\-120.7522\\-119\\106.4453\\-121.5105\\-119\\110.3516\\-122.6893\\-119\\112.3047\\-123.2168\\-119\\116.2109\\-124.865\\-119\\118.1641\\-125.7587\\-119\\122.0703\\-127.8029\\-119\\125.5247\\-129.9453\\-119\\127.9297\\-131.7097\\-119\\129.8828\\-133.002\\-119\\131.8359\\-134.537\\-119\\135.7422\\-137.3312\\-119\\141.6016\\-142.375\\-119\\143.236\\-143.6172\\-119\\147.4609\\-147.2815\\-119\\149.4141\\-149.2813\\-119\\153.3203\\-153.6009\\-119\\156.0126\\-157.2891\\-119\\158.2924\\-161.1953\\-119\\159.5871\\-163.1484\\-119\\160.4715\\-165.1016\\-119\\161.5798\\-167.0547\\-119\\162.9232\\-170.9609\\-119\\163.765\\-172.9141\\-119\\164.2288\\-174.8672\\-119\\165.5995\\-178.7734\\-119\\166.3136\\-182.6797\\-119\\167.1007\\-186.5859\\-119\\167.3584\\-188.5391\\-119\\167.6839\\-192.4453\\-119\\167.8941\\-198.3047\\-119\\167.9171\\-204.1641\\-119\\167.786\\-210.0234\\-119\\167.5494\\-213.9297\\-119\\167.1276\\-217.8359\\-119\\166.716\\-219.7891\\-119\\165.7626\\-225.6484\\-119\\165.3209\\-227.6016\\-119\\164.585\\-229.5547\\-119\\163.7389\\-233.4609\\-119\\162.3428\\-237.3672\\-119\\161.9104\\-239.3203\\-119\\161.1406\\-241.2734\\-119\\160.2159\\-243.2266\\-119\\159.3959\\-245.1797\\-119\\158.2499\\-247.1328\\-119\\157.3213\\-249.0859\\-119\\155.2977\\-252.9922\\-119\\154.1582\\-254.9453\\-119\\152.7485\\-256.8984\\-119\\149.4141\\-261.8849\\-119\\145.7072\\-266.6641\\-119\\143.9968\\-268.6172\\-119\\142.3895\\-270.5703\\-119\\137.6953\\-275.5451\\-119\\134.8985\\-278.3828\\-119\\131.8359\\-281.306\\-119\\128.3736\\-284.2422\\-119\\125.8422\\-286.1953\\-119\\122.0703\\-288.9284\\-119\\118.1641\\-291.2701\\-119\\116.2109\\-292.6998\\-119\\114.2578\\-293.6667\\-119\\112.3047\\-294.7734\\-119\\110.3516\\-295.4133\\-119\\108.3984\\-296.4619\\-119\\106.4453\\-297.0562\\-119\\102.5391\\-298.7313\\-119\\100.5859\\-299.3234\\-119\\98.63281\\-300.1548\\-119\\96.67969\\-300.6337\\-119\\92.77344\\-301.3156\\-119\\88.86719\\-302.1761\\-119\\84.96094\\-302.6028\\-119\\83.00781\\-302.7127\\-119\\79.10156\\-302.8344\\-119\\73.24219\\-302.8396\\-119\\67.38281\\-302.6235\\-119\\65.42969\\-302.4275\\-119"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "182"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "59"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-75.19531\\-303.7048\\-117\\-83.00781\\-302.9542\\-117\\-86.91406\\-302.6283\\-117\\-88.86719\\-302.3346\\-117\\-92.77344\\-301.293\\-117\\-96.67969\\-300.5163\\-117\\-100.5859\\-299.0191\\-117\\-102.5391\\-298.3579\\-117\\-104.4922\\-297.2926\\-117\\-106.4453\\-296.6411\\-117\\-108.3984\\-295.5139\\-117\\-110.3516\\-294.8001\\-117\\-112.3047\\-293.6211\\-117\\-114.2578\\-292.5774\\-117\\-118.1641\\-289.7238\\-117\\-120.1172\\-288.6998\\-117\\-122.0703\\-287.1719\\-117\\-125.9766\\-283.8105\\-117\\-127.9297\\-282.3793\\-117\\-129.8828\\-280.6719\\-117\\-132.1325\\-278.3828\\-117\\-134.1688\\-276.4297\\-117\\-136.0421\\-274.4766\\-117\\-139.1404\\-270.5703\\-117\\-140.8627\\-268.6172\\-117\\-142.4216\\-266.6641\\-117\\-144.9526\\-262.7578\\-117\\-146.4557\\-260.8047\\-117\\-147.7979\\-258.8516\\-117\\-148.7962\\-256.8984\\-117\\-150.0292\\-254.9453\\-117\\-150.8692\\-252.9922\\-117\\-152.1429\\-251.0391\\-117\\-154.2291\\-247.1328\\-117\\-155.0458\\-245.1797\\-117\\-156.0337\\-243.2266\\-117\\-156.6193\\-241.2734\\-117\\-157.7236\\-239.3203\\-117\\-158.3695\\-237.3672\\-117\\-159.4272\\-235.4141\\-117\\-160.8528\\-231.5078\\-117\\-161.7275\\-229.5547\\-117\\-162.5944\\-225.6484\\-117\\-163.4404\\-223.6953\\-117\\-164.375\\-219.7891\\-117\\-165.6304\\-215.8828\\-117\\-166.362\\-211.9766\\-117\\-167.3133\\-208.0703\\-117\\-167.7653\\-204.1641\\-117\\-167.9629\\-200.2578\\-117\\-167.9746\\-198.3047\\-117\\-167.8467\\-194.3984\\-117\\-167.4395\\-190.4922\\-117\\-166.3935\\-186.5859\\-117\\-165.4309\\-182.6797\\-117\\-164.5603\\-180.7266\\-117\\-163.9334\\-178.7734\\-117\\-163.1098\\-176.8203\\-117\\-161.3404\\-172.9141\\-117\\-160.1199\\-170.9609\\-117\\-158.796\\-169.0078\\-117\\-157.586\\-167.0547\\-117\\-156.136\\-165.1016\\-117\\-153.3203\\-161.5082\\-117\\-147.7318\\-155.3359\\-117\\-145.7607\\-153.3828\\-117\\-143.5547\\-150.8368\\-117\\-139.6484\\-146.9809\\-117\\-137.6953\\-145.2448\\-117\\-135.7422\\-143.7895\\-117\\-133.7891\\-141.9582\\-117\\-131.8359\\-140.3199\\-117\\-128.6501\\-137.7578\\-117\\-127.9297\\-137.3\\-117\\-125.9766\\-135.7429\\-117\\-122.0703\\-132.9669\\-117\\-118.1441\\-129.9453\\-117\\-116.2109\\-128.6297\\-117\\-114.2578\\-127.5108\\-117\\-112.3047\\-126.5921\\-117\\-110.3516\\-125.4731\\-117\\-107.6451\\-124.0859\\-117\\-104.4922\\-122.7518\\-117\\-100.5859\\-121.3763\\-117\\-96.67969\\-120.1933\\-117\\-94.72656\\-119.5251\\-117\\-92.77344\\-119.2854\\-117\\-90.82031\\-118.9292\\-117\\-88.86719\\-118.3301\\-117\\-86.91406\\-117.985\\-117\\-79.10156\\-117.355\\-117\\-77.14844\\-116.838\\-117\\-75.19531\\-116.6541\\-117\\-73.24219\\-116.661\\-117\\-71.28906\\-116.7692\\-117\\-67.38281\\-116.754\\-117\\-61.52344\\-117.033\\-117\\-57.61719\\-117.6817\\-117\\-55.66406\\-117.8422\\-117\\-54.32581\\-118.2266\\-117\\-51.75781\\-119.3199\\-117\\-49.80469\\-119.8667\\-117\\-47.85156\\-120.8187\\-117\\-43.94531\\-122.5448\\-117\\-41.44287\\-124.0859\\-117\\-38.08594\\-126.6173\\-117\\-36.13281\\-128.2863\\-117\\-34.17969\\-130.1021\\-117\\-32.44745\\-131.8984\\-117\\-30.27344\\-134.0143\\-117\\-26.77617\\-137.7578\\-117\\-25.24567\\-139.7109\\-117\\-23.60704\\-141.6641\\-117\\-22.18511\\-143.6172\\-117\\-21.06882\\-145.5703\\-117\\-19.79342\\-147.5234\\-117\\-19.04634\\-149.4766\\-117\\-17.87051\\-151.4297\\-117\\-17.10862\\-153.3828\\-117\\-15.98161\\-155.3359\\-117\\-15.34598\\-157.2891\\-117\\-14.42906\\-159.2422\\-117\\-13.87778\\-161.1953\\-117\\-13.10107\\-165.1016\\-117\\-12.50895\\-167.0547\\-117\\-12.07886\\-169.0078\\-117\\-11.81481\\-170.9609\\-117\\-11.1051\\-178.7734\\-117\\-10.5678\\-182.6797\\-117\\-10.35525\\-184.6328\\-117\\-10.2285\\-188.5391\\-117\\-10.33579\\-190.4922\\-117\\-10.93606\\-196.3516\\-117\\-10.81139\\-198.3047\\-117\\-10.28022\\-200.2578\\-117\\-10.05609\\-202.2109\\-117\\-9.808708\\-206.1172\\-117\\-9.573348\\-213.9297\\-117\\-9.569279\\-215.8828\\-117\\-9.683439\\-219.7891\\-117\\-10.0234\\-223.6953\\-117\\-10.2983\\-225.6484\\-117\\-11.18952\\-229.5547\\-117\\-11.80508\\-233.4609\\-117\\-11.92197\\-235.4141\\-117\\-12.19733\\-237.3672\\-117\\-13.22857\\-241.2734\\-117\\-13.89146\\-245.1797\\-117\\-14.30567\\-247.1328\\-117\\-15.15458\\-249.0859\\-117\\-15.7373\\-251.0391\\-117\\-16.43997\\-252.9922\\-117\\-17.37144\\-254.9453\\-117\\-17.90926\\-256.8984\\-117\\-18.9627\\-258.8516\\-117\\-19.50758\\-260.8047\\-117\\-20.15708\\-262.7578\\-117\\-21.25\\-264.7109\\-117\\-21.99897\\-266.6641\\-117\\-23.27564\\-268.6172\\-117\\-24.22437\\-270.5703\\-117\\-25.33953\\-272.5234\\-117\\-26.20443\\-274.4766\\-117\\-27.3911\\-276.4297\\-117\\-28.73047\\-278.3828\\-117\\-29.91662\\-280.3359\\-117\\-32.84862\\-284.2422\\-117\\-34.17969\\-286.1474\\-117\\-35.82405\\-288.1484\\-117\\-38.08594\\-290.4813\\-117\\-39.51214\\-292.0547\\-117\\-41.99219\\-294.3044\\-117\\-43.94531\\-295.4692\\-117\\-44.55891\\-295.9609\\-117\\-47.85156\\-298.1732\\-117\\-49.80469\\-299.132\\-117\\-51.75781\\-300.2773\\-117\\-55.66406\\-301.516\\-117\\-57.61719\\-302.2581\\-117\\-59.57031\\-302.6466\\-117\\-69.33594\\-303.7344\\-117\\-71.28906\\-303.8256\\-117"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "178"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "60"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "63.47656\\-302.0067\\-117\\61.52344\\-301.4809\\-117\\57.61719\\-300.7699\\-117\\55.66406\\-300.3372\\-117\\53.71094\\-299.4451\\-117\\51.75781\\-298.7092\\-117\\49.80469\\-297.6162\\-117\\47.85156\\-296.7802\\-117\\45.89844\\-295.6305\\-117\\43.94531\\-294.6945\\-117\\40.38509\\-292.0547\\-117\\38.03944\\-290.1016\\-117\\36.13281\\-288.6613\\-117\\33.54011\\-286.1953\\-117\\30.14168\\-282.2891\\-117\\28.32031\\-280.0656\\-117\\25.73568\\-276.4297\\-117\\24.72744\\-274.4766\\-117\\24.41406\\-274.1146\\-117\\22.46094\\-270.874\\-117\\22.20648\\-270.5703\\-117\\21.28566\\-268.6172\\-117\\20.11317\\-266.6641\\-117\\18.83473\\-262.7578\\-117\\17.84589\\-260.8047\\-117\\17.35711\\-258.8516\\-117\\16.54938\\-256.8984\\-117\\15.88907\\-254.9453\\-117\\15.46474\\-252.9922\\-117\\14.27185\\-249.0859\\-117\\13.92315\\-247.1328\\-117\\13.18359\\-241.2734\\-117\\12.36747\\-237.3672\\-117\\12.06236\\-235.4141\\-117\\11.8606\\-233.4609\\-117\\11.46376\\-227.6016\\-117\\11.0338\\-223.6953\\-117\\10.44922\\-219.7891\\-117\\9.727515\\-211.9766\\-117\\9.495856\\-210.0234\\-117\\8.653626\\-206.1172\\-117\\8.363688\\-202.2109\\-117\\8.363688\\-198.3047\\-117\\8.565267\\-194.3984\\-117\\9.441902\\-190.4922\\-117\\9.654432\\-188.5391\\-117\\10.14245\\-180.7266\\-117\\10.47165\\-178.7734\\-117\\11.05442\\-176.8203\\-117\\11.43185\\-174.8672\\-117\\11.84353\\-170.9609\\-117\\12.1844\\-169.0078\\-117\\12.82401\\-167.0547\\-117\\13.34429\\-165.1016\\-117\\14.17894\\-161.1953\\-117\\15.13365\\-159.2422\\-117\\15.89477\\-157.2891\\-117\\17.16383\\-155.3359\\-117\\18.02147\\-153.3828\\-117\\19.34735\\-151.4297\\-117\\20.50781\\-149.4872\\-117\\21.96296\\-147.5234\\-117\\26.36719\\-142.7119\\-117\\30.27344\\-138.9888\\-117\\34.17969\\-135.4219\\-117\\36.13281\\-134.0372\\-117\\38.92744\\-131.8984\\-117\\41.99219\\-129.8255\\-117\\45.18943\\-127.9922\\-117\\45.89844\\-127.4993\\-117\\47.85156\\-126.5959\\-117\\49.80469\\-125.4417\\-117\\51.75781\\-124.7151\\-117\\53.71094\\-123.7847\\-117\\55.66406\\-123.017\\-117\\61.52344\\-120.885\\-117\\63.47656\\-120.421\\-117\\65.42969\\-119.6137\\-117\\69.33594\\-118.9895\\-117\\71.28906\\-118.1698\\-117\\73.24219\\-117.8668\\-117\\77.14844\\-117.5476\\-117\\81.05469\\-116.9652\\-117\\84.96094\\-116.7823\\-117\\88.86719\\-116.7688\\-117\\94.72656\\-116.9802\\-117\\98.63281\\-117.5356\\-117\\102.5391\\-117.8541\\-117\\104.4922\\-118.1704\\-117\\106.4453\\-119.0058\\-117\\108.3984\\-119.3038\\-117\\110.3516\\-119.7595\\-117\\112.3047\\-120.595\\-117\\114.2578\\-121.1143\\-117\\116.2109\\-122.0569\\-117\\118.1641\\-123.1488\\-117\\120.1172\\-123.8906\\-117\\122.0703\\-125.2871\\-117\\123.3895\\-126.0391\\-117\\127.9297\\-129.0429\\-117\\129.8828\\-130.5724\\-117\\131.8359\\-132.2621\\-117\\133.7891\\-133.3273\\-117\\135.7422\\-135.0057\\-117\\138.6426\\-137.7578\\-117\\141.6016\\-140.4685\\-117\\145.5078\\-144.3125\\-117\\147.1804\\-145.5703\\-117\\149.4141\\-147.849\\-117\\151.3672\\-149.998\\-117\\152.4595\\-151.4297\\-117\\154.1461\\-153.3828\\-117\\155.5733\\-155.3359\\-117\\156.5686\\-157.2891\\-117\\157.8839\\-159.2422\\-117\\160.0691\\-163.1484\\-117\\161.9204\\-167.0547\\-117\\162.4455\\-169.0078\\-117\\163.3599\\-170.9609\\-117\\163.9664\\-172.9141\\-117\\164.425\\-174.8672\\-117\\165.2385\\-176.8203\\-117\\165.7374\\-178.7734\\-117\\166.4167\\-182.6797\\-117\\167.1805\\-186.5859\\-117\\167.4338\\-188.5391\\-117\\167.7145\\-192.4453\\-117\\167.8994\\-198.3047\\-117\\167.9225\\-204.1641\\-117\\167.7907\\-210.0234\\-117\\167.5698\\-213.9297\\-117\\167.1276\\-217.8359\\-117\\166.3925\\-221.7422\\-117\\165.7728\\-225.6484\\-117\\165.332\\-227.6016\\-117\\164.585\\-229.5547\\-117\\163.7464\\-233.4609\\-117\\162.3428\\-237.3672\\-117\\161.9177\\-239.3203\\-117\\161.1407\\-241.2734\\-117\\160.2159\\-243.2266\\-117\\159.3959\\-245.1797\\-117\\158.2553\\-247.1328\\-117\\157.3073\\-249.0859\\-117\\155.2734\\-252.9565\\-117\\154.1199\\-254.9453\\-117\\152.7092\\-256.8984\\-117\\149.4141\\-261.8249\\-117\\145.6163\\-266.6641\\-117\\143.8779\\-268.6172\\-117\\142.2905\\-270.5703\\-117\\140.5119\\-272.5234\\-117\\134.8382\\-278.3828\\-117\\131.8359\\-281.2399\\-117\\128.2826\\-284.2422\\-117\\125.7586\\-286.1953\\-117\\122.0703\\-288.9001\\-117\\120.1172\\-290.0142\\-117\\118.1641\\-291.2455\\-117\\116.2109\\-292.668\\-117\\114.2578\\-293.6317\\-117\\112.3047\\-294.7463\\-117\\110.3516\\-295.3776\\-117\\108.3984\\-296.4201\\-117\\106.4453\\-297.0287\\-117\\102.5391\\-298.6984\\-117\\100.5859\\-299.287\\-117\\98.63281\\-300.1079\\-117\\96.67969\\-300.6153\\-117\\92.77344\\-301.2799\\-117\\88.86719\\-302.1505\\-117\\86.91406\\-302.4101\\-117\\84.96094\\-302.5692\\-117\\81.05469\\-302.7638\\-117\\77.14844\\-302.8344\\-117\\73.24219\\-302.8185\\-117\\69.33594\\-302.7065\\-117\\65.42969\\-302.3793\\-117"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002359"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "182"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.86719\\-302.234\\-115\\-92.77344\\-301.2092\\-115\\-96.67969\\-300.4157\\-115\\-98.63281\\-299.6145\\-115\\-102.5391\\-298.2502\\-115\\-104.4922\\-297.2002\\-115\\-106.4453\\-296.5614\\-115\\-108.3984\\-295.4361\\-115\\-110.3516\\-294.748\\-115\\-112.3047\\-293.5419\\-115\\-114.2578\\-292.5104\\-115\\-117.6427\\-290.1016\\-115\\-118.1641\\-289.6621\\-115\\-120.1172\\-288.667\\-115\\-122.0703\\-287.1346\\-115\\-125.9766\\-283.7505\\-115\\-127.9297\\-282.2975\\-115\\-129.8828\\-280.5861\\-115\\-132.0538\\-278.3828\\-115\\-134.112\\-276.4297\\-115\\-135.9844\\-274.4766\\-115\\-137.4283\\-272.5234\\-115\\-140.8065\\-268.6172\\-115\\-142.3815\\-266.6641\\-115\\-144.9023\\-262.7578\\-115\\-146.4212\\-260.8047\\-115\\-147.731\\-258.8516\\-115\\-148.7608\\-256.8984\\-115\\-150.0077\\-254.9453\\-115\\-150.8246\\-252.9922\\-115\\-152.118\\-251.0391\\-115\\-154.1953\\-247.1328\\-115\\-155.0184\\-245.1797\\-115\\-156.0136\\-243.2266\\-115\\-156.6068\\-241.2734\\-115\\-157.697\\-239.3203\\-115\\-158.3739\\-237.3672\\-115\\-159.4272\\-235.4141\\-115\\-160.8646\\-231.5078\\-115\\-161.7314\\-229.5547\\-115\\-162.6275\\-225.6484\\-115\\-163.4961\\-223.6953\\-115\\-164.4244\\-219.7891\\-115\\-165.1476\\-217.8359\\-115\\-165.7059\\-215.8828\\-115\\-166.4709\\-211.9766\\-115\\-167.4017\\-208.0703\\-115\\-167.653\\-206.1172\\-115\\-167.9629\\-202.2109\\-115\\-168.0462\\-198.3047\\-115\\-167.9513\\-194.3984\\-115\\-167.6213\\-190.4922\\-115\\-167.2683\\-188.5391\\-115\\-166.6534\\-186.5859\\-115\\-165.721\\-182.6797\\-115\\-165.0467\\-180.7266\\-115\\-164.2158\\-178.7734\\-115\\-163.5963\\-176.8203\\-115\\-162.5502\\-174.8672\\-115\\-161.8472\\-172.9141\\-115\\-160.6761\\-170.9609\\-115\\-159.6746\\-169.0078\\-115\\-158.2344\\-167.0547\\-115\\-155.7166\\-163.1484\\-115\\-153.3203\\-159.8966\\-115\\-147.8202\\-153.3828\\-115\\-146.3137\\-151.4297\\-115\\-143.5547\\-148.1783\\-115\\-141.0656\\-145.5703\\-115\\-138.9348\\-143.6172\\-115\\-137.6953\\-142.3281\\-115\\-135.7422\\-140.5002\\-115\\-131.8359\\-137.1028\\-115\\-130.0007\\-135.8047\\-115\\-127.5984\\-133.8516\\-115\\-124.0234\\-131.1766\\-115\\-120.1172\\-127.8387\\-115\\-116.2109\\-125.3132\\-115\\-114.2578\\-124.4313\\-115\\-112.3047\\-123.1094\\-115\\-108.3984\\-121.2841\\-115\\-105.8919\\-120.1797\\-115\\-102.5391\\-118.9678\\-115\\-100.5859\\-118.4501\\-115\\-98.63281\\-117.5647\\-115\\-96.67969\\-117.145\\-115\\-94.72656\\-116.8573\\-115\\-92.77344\\-116.076\\-115\\-90.82031\\-115.7379\\-115\\-84.96094\\-114.991\\-115\\-83.00781\\-114.6012\\-115\\-80.56641\\-114.3203\\-115\\-77.14844\\-114.1339\\-115\\-71.28906\\-113.9376\\-115\\-67.38281\\-113.696\\-115\\-63.47656\\-114.0712\\-115\\-61.52344\\-114.1143\\-115\\-59.57031\\-114.2734\\-115\\-57.61719\\-114.6766\\-115\\-55.66406\\-115.2352\\-115\\-53.71094\\-115.6403\\-115\\-49.80469\\-117.0526\\-115\\-47.85156\\-117.5719\\-115\\-45.89844\\-118.4862\\-115\\-43.94531\\-119.1177\\-115\\-41.99219\\-120.1378\\-115\\-40.03906\\-121.3385\\-115\\-38.08594\\-122.7304\\-115\\-34.47896\\-126.0391\\-115\\-32.22656\\-128.5205\\-115\\-30.27344\\-130.8501\\-115\\-28.12704\\-133.8516\\-115\\-26.36719\\-136.2116\\-115\\-22.46094\\-141.8305\\-115\\-20.14923\\-145.5703\\-115\\-19.29209\\-147.5234\\-115\\-18.23815\\-149.4766\\-115\\-17.44948\\-151.4297\\-115\\-16.42336\\-153.3828\\-115\\-14.88196\\-157.2891\\-115\\-14.05374\\-159.2422\\-115\\-13.2393\\-163.1484\\-115\\-12.17491\\-167.0547\\-115\\-11.90396\\-169.0078\\-115\\-11.12888\\-176.8203\\-115\\-10.4831\\-182.6797\\-115\\-10.31681\\-184.6328\\-115\\-10.26257\\-186.5859\\-115\\-10.26257\\-190.4922\\-115\\-10.35525\\-192.4453\\-115\\-10.66142\\-196.3516\\-115\\-10.44922\\-198.3047\\-115\\-10.13513\\-200.2578\\-115\\-9.765625\\-204.1641\\-115\\-9.544614\\-210.0234\\-115\\-9.357766\\-213.9297\\-115\\-9.324407\\-215.8828\\-115\\-9.44553\\-219.7891\\-115\\-10.0591\\-225.6484\\-115\\-10.3752\\-227.6016\\-115\\-11.3445\\-231.5078\\-115\\-11.61791\\-233.4609\\-115\\-12.04227\\-237.3672\\-115\\-12.4566\\-239.3203\\-115\\-13.09543\\-241.2734\\-115\\-14.19724\\-247.1328\\-115\\-15.04536\\-249.0859\\-115\\-16.31974\\-252.9922\\-115\\-17.32086\\-254.9453\\-115\\-17.85399\\-256.8984\\-115\\-18.89167\\-258.8516\\-115\\-20.11855\\-262.7578\\-115\\-21.20937\\-264.7109\\-115\\-21.98132\\-266.6641\\-115\\-23.26931\\-268.6172\\-115\\-24.1855\\-270.5703\\-115\\-25.33953\\-272.5234\\-115\\-26.17645\\-274.4766\\-115\\-27.37926\\-276.4297\\-115\\-28.69642\\-278.3828\\-115\\-29.89641\\-280.3359\\-115\\-32.83524\\-284.2422\\-115\\-34.17969\\-286.1479\\-115\\-35.82176\\-288.1484\\-115\\-38.08594\\-290.4688\\-115\\-39.5436\\-292.0547\\-115\\-41.99219\\-294.2372\\-115\\-43.94531\\-295.4214\\-115\\-45.89844\\-296.823\\-115\\-47.85156\\-298.0757\\-115\\-49.80469\\-299.0672\\-115\\-51.75781\\-300.1859\\-115\\-53.71094\\-300.8671\\-115\\-55.66406\\-301.4066\\-115\\-57.61719\\-302.1646\\-115\\-59.57031\\-302.5838\\-115\\-67.38281\\-303.4081\\-115\\-69.33594\\-303.5796\\-115\\-73.24219\\-303.6608\\-115\\-75.19531\\-303.5541\\-115\\-84.96094\\-302.7527\\-115\\-86.91406\\-302.5646\\-115"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002359"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "180"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "62"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "63.47656\\-301.95\\-115\\61.52344\\-301.4447\\-115\\57.61719\\-300.7534\\-115\\55.66406\\-300.2964\\-115\\53.71094\\-299.3913\\-115\\51.75781\\-298.6724\\-115\\49.80469\\-297.5706\\-115\\47.85156\\-296.7345\\-115\\45.89844\\-295.5775\\-115\\43.94531\\-294.6567\\-115\\40.44028\\-292.0547\\-115\\38.07655\\-290.1016\\-115\\36.13281\\-288.6577\\-115\\33.54011\\-286.1953\\-115\\30.12734\\-282.2891\\-115\\28.32031\\-280.0808\\-115\\25.73568\\-276.4297\\-115\\24.72744\\-274.4766\\-115\\24.41406\\-274.1146\\-115\\22.46094\\-270.8458\\-115\\21.29021\\-268.6172\\-115\\20.11317\\-266.6641\\-115\\18.84694\\-262.7578\\-115\\17.85942\\-260.8047\\-115\\17.38383\\-258.8516\\-115\\15.91546\\-254.9453\\-115\\15.52586\\-252.9922\\-115\\15.02455\\-251.0391\\-115\\14.30339\\-249.0859\\-115\\13.95742\\-247.1328\\-115\\13.22857\\-241.2734\\-115\\12.44213\\-237.3672\\-115\\12.10814\\-235.4141\\-115\\11.89076\\-233.4609\\-115\\11.64165\\-229.5547\\-115\\11.3246\\-225.6484\\-115\\11.0919\\-223.6953\\-115\\10.4947\\-219.7891\\-115\\9.939341\\-213.9297\\-115\\9.45638\\-210.0234\\-115\\8.589623\\-206.1172\\-115\\8.31822\\-202.2109\\-115\\8.280793\\-198.3047\\-115\\8.452972\\-194.3984\\-115\\9.354441\\-190.4922\\-115\\9.57532\\-188.5391\\-115\\10.02081\\-180.7266\\-115\\10.33579\\-178.7734\\-115\\10.88066\\-176.8203\\-115\\11.31283\\-174.8672\\-115\\11.766\\-170.9609\\-115\\12.05842\\-169.0078\\-115\\13.22266\\-165.1016\\-115\\14.0722\\-161.1953\\-115\\15.75934\\-157.2891\\-115\\16.93157\\-155.3359\\-115\\17.84498\\-153.3828\\-115\\19.18154\\-151.4297\\-115\\20.17032\\-149.4766\\-115\\21.67844\\-147.5234\\-115\\25.30354\\-143.6172\\-115\\26.36719\\-142.2256\\-115\\30.81869\\-137.7578\\-115\\34.17969\\-134.2885\\-115\\36.13281\\-132.5465\\-115\\38.08594\\-130.9128\\-115\\39.42558\\-129.9453\\-115\\41.99219\\-127.7969\\-115\\43.94531\\-126.7227\\-115\\45.89844\\-125.1146\\-115\\47.85156\\-123.7083\\-115\\49.80469\\-122.8355\\-115\\51.75781\\-121.651\\-115\\53.71094\\-120.8352\\-115\\55.66406\\-120.1339\\-115\\57.61719\\-119.1524\\-115\\59.57031\\-118.605\\-115\\61.52344\\-117.6971\\-115\\63.47656\\-117.204\\-115\\65.42969\\-116.8616\\-115\\67.38281\\-116.0325\\-115\\69.33594\\-115.5875\\-115\\71.28906\\-115.3085\\-115\\75.19531\\-114.5609\\-115\\77.28795\\-114.3203\\-115\\81.05469\\-114.0151\\-115\\84.96094\\-113.9124\\-115\\88.86719\\-113.8931\\-115\\94.72656\\-114.0824\\-115\\98.63281\\-114.4194\\-115\\100.5859\\-114.6548\\-115\\102.5391\\-115.1341\\-115\\104.4922\\-115.4066\\-115\\108.1355\\-116.2734\\-115\\110.3516\\-117.1292\\-115\\112.3047\\-117.6136\\-115\\114.2578\\-118.5484\\-115\\116.2109\\-119.3078\\-115\\118.1641\\-120.1695\\-115\\122.0703\\-122.3308\\-115\\124.5209\\-124.0859\\-115\\125.9766\\-124.9626\\-115\\127.9297\\-126.3297\\-115\\129.8828\\-128.0038\\-115\\131.8359\\-129.2655\\-115\\134.8728\\-131.8984\\-115\\137.6953\\-134.4847\\-115\\139.6484\\-136.427\\-115\\142.8199\\-139.7109\\-115\\145.5078\\-142.3703\\-115\\149.4141\\-146.396\\-115\\151.3672\\-148.5248\\-115\\153.6856\\-151.4297\\-115\\155.2734\\-153.7331\\-115\\157.4618\\-157.2891\\-115\\158.4457\\-159.2422\\-115\\159.7457\\-161.1953\\-115\\160.552\\-163.1484\\-115\\161.5936\\-165.1016\\-115\\162.8143\\-169.0078\\-115\\163.6754\\-170.9609\\-115\\164.687\\-174.8672\\-115\\165.4671\\-176.8203\\-115\\165.8783\\-178.7734\\-115\\166.541\\-182.6797\\-115\\167.2778\\-186.5859\\-115\\167.4897\\-188.5391\\-115\\167.7492\\-192.4453\\-115\\167.911\\-198.3047\\-115\\167.9397\\-202.2109\\-115\\167.8826\\-208.0703\\-115\\167.7029\\-211.9766\\-115\\167.4017\\-215.8828\\-115\\167.1419\\-217.8359\\-115\\166.4005\\-221.7422\\-115\\165.779\\-225.6484\\-115\\165.3539\\-227.6016\\-115\\164.5946\\-229.5547\\-115\\163.7389\\-233.4609\\-115\\162.3504\\-237.3672\\-115\\161.9177\\-239.3203\\-115\\161.1407\\-241.2734\\-115\\159.4082\\-245.1797\\-115\\158.2553\\-247.1328\\-115\\157.2932\\-249.0859\\-115\\155.2734\\-252.8863\\-115\\154.0833\\-254.9453\\-115\\152.6755\\-256.8984\\-115\\150.0958\\-260.8047\\-115\\147.4609\\-264.3114\\-115\\145.5454\\-266.6641\\-115\\143.8184\\-268.6172\\-115\\142.2094\\-270.5703\\-115\\140.4381\\-272.5234\\-115\\134.7722\\-278.3828\\-115\\131.8359\\-281.1796\\-115\\127.9297\\-284.4166\\-115\\125.6767\\-286.1953\\-115\\122.0703\\-288.8663\\-115\\120.1172\\-289.9531\\-115\\118.1641\\-291.2057\\-115\\116.2109\\-292.6238\\-115\\114.2578\\-293.5645\\-115\\112.3047\\-294.7141\\-115\\110.3516\\-295.3555\\-115\\108.3984\\-296.3898\\-115\\106.4453\\-296.9959\\-115\\102.5391\\-298.6754\\-115\\100.5859\\-299.2519\\-115\\98.63281\\-300.0569\\-115\\96.67969\\-300.5852\\-115\\92.77344\\-301.2485\\-115\\88.86719\\-302.1126\\-115\\86.91406\\-302.3793\\-115\\84.96094\\-302.5453\\-115\\79.10156\\-302.7969\\-115\\75.19531\\-302.8185\\-115\\71.28906\\-302.758\\-115\\67.38281\\-302.5572\\-115\\65.42969\\-302.3381\\-115"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002358"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "188"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "63"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.86719\\-302.1268\\-113\\-90.82031\\-301.5527\\-113\\-94.72656\\-300.7647\\-113\\-96.67969\\-300.2991\\-113\\-98.63281\\-299.4629\\-113\\-100.5859\\-298.8311\\-113\\-102.5391\\-298.1011\\-113\\-104.4922\\-297.1095\\-113\\-106.4453\\-296.4746\\-113\\-108.3984\\-295.3418\\-113\\-110.3516\\-294.6652\\-113\\-112.3047\\-293.4472\\-113\\-114.2578\\-292.4317\\-113\\-117.5537\\-290.1016\\-113\\-118.1641\\-289.5929\\-113\\-120.1172\\-288.6092\\-113\\-122.0703\\-287.078\\-113\\-125.9766\\-283.6697\\-113\\-127.8302\\-282.2891\\-113\\-129.8828\\-280.4778\\-113\\-131.9391\\-278.3828\\-113\\-133.996\\-276.4297\\-113\\-135.8968\\-274.4766\\-113\\-137.3236\\-272.5234\\-113\\-140.7494\\-268.6172\\-113\\-142.3356\\-266.6641\\-113\\-144.813\\-262.7578\\-113\\-146.3702\\-260.8047\\-113\\-147.6692\\-258.8516\\-113\\-148.7175\\-256.8984\\-113\\-149.9859\\-254.9453\\-113\\-150.7887\\-252.9922\\-113\\-152.0883\\-251.0391\\-113\\-154.1902\\-247.1328\\-113\\-154.9913\\-245.1797\\-113\\-155.9933\\-243.2266\\-113\\-156.5859\\-241.2734\\-113\\-157.6879\\-239.3203\\-113\\-158.357\\-237.3672\\-113\\-159.4035\\-235.4141\\-113\\-160.8646\\-231.5078\\-113\\-161.7314\\-229.5547\\-113\\-162.6723\\-225.6484\\-113\\-163.5489\\-223.6953\\-113\\-164.4718\\-219.7891\\-113\\-165.2261\\-217.8359\\-113\\-165.774\\-215.8828\\-113\\-166.1179\\-213.9297\\-113\\-167.1007\\-210.0234\\-113\\-167.4774\\-208.0703\\-113\\-167.7188\\-206.1172\\-113\\-168.0335\\-202.2109\\-113\\-168.1264\\-198.3047\\-113\\-168.0516\\-194.3984\\-113\\-167.7769\\-190.4922\\-113\\-167.5232\\-188.5391\\-113\\-167.0593\\-186.5859\\-113\\-166.4701\\-184.6328\\-113\\-165.5215\\-180.7266\\-113\\-164.6102\\-178.7734\\-113\\-163.2561\\-174.8672\\-113\\-162.2957\\-172.9141\\-113\\-161.5421\\-170.9609\\-113\\-161.1328\\-170.3688\\-113\\-159.2327\\-167.0547\\-113\\-156.68\\-163.1484\\-113\\-155.6716\\-161.1953\\-113\\-153.3203\\-157.7556\\-113\\-149.9889\\-153.3828\\-113\\-149.4141\\-152.4822\\-113\\-145.5994\\-147.5234\\-113\\-143.9978\\-145.5703\\-113\\-140.4315\\-141.6641\\-113\\-138.3751\\-139.7109\\-113\\-133.7891\\-135.2342\\-113\\-131.8359\\-134.1838\\-113\\-129.2128\\-131.8984\\-113\\-127.9297\\-130.4464\\-113\\-125.9766\\-128.9168\\-113\\-122.0703\\-125.7172\\-113\\-119.8556\\-124.0859\\-113\\-116.2109\\-121.8073\\-113\\-113.1218\\-120.1797\\-113\\-108.3984\\-118.0292\\-113\\-102.5391\\-115.7899\\-113\\-100.5859\\-115.3226\\-113\\-98.63281\\-114.6101\\-113\\-96.67969\\-114.0963\\-113\\-94.72656\\-113.7612\\-113\\-92.77344\\-113.2857\\-113\\-87.10938\\-112.3672\\-113\\-84.96094\\-112.159\\-113\\-81.05469\\-111.9296\\-113\\-79.10156\\-111.584\\-113\\-73.24219\\-111.2389\\-113\\-71.28906\\-111.2279\\-113\\-69.33594\\-111.0108\\-113\\-67.38281\\-110.6648\\-113\\-63.47656\\-111.0609\\-113\\-61.52344\\-111.4536\\-113\\-59.57031\\-111.7418\\-113\\-56.10352\\-112.3672\\-113\\-53.71094\\-112.8716\\-113\\-51.75781\\-113.5479\\-113\\-49.80469\\-114.0178\\-113\\-45.89844\\-115.3579\\-113\\-43.94531\\-115.9707\\-113\\-39.38176\\-118.2266\\-113\\-36.32813\\-120.1797\\-113\\-34.17969\\-121.9169\\-113\\-32.22656\\-123.9666\\-113\\-30.27344\\-126.3245\\-113\\-28.32031\\-128.9404\\-113\\-26.36719\\-132.1091\\-113\\-25.53665\\-133.8516\\-113\\-24.41406\\-135.5924\\-113\\-22.15379\\-139.7109\\-113\\-21.26814\\-141.6641\\-113\\-20.10968\\-143.6172\\-113\\-19.34814\\-145.5703\\-113\\-18.30701\\-147.5234\\-113\\-17.51567\\-149.4766\\-113\\-15.70495\\-153.3828\\-113\\-15.03233\\-155.3359\\-113\\-14.11518\\-157.2891\\-113\\-13.26172\\-161.1953\\-113\\-12.13458\\-165.1016\\-113\\-11.87323\\-167.0547\\-113\\-11.52664\\-170.9609\\-113\\-11.0919\\-174.8672\\-113\\-10.60675\\-178.7734\\-113\\-10.46036\\-180.7266\\-113\\-10.2892\\-184.6328\\-113\\-10.2983\\-188.5391\\-113\\-10.20397\\-192.4453\\-113\\-10.25391\\-196.3516\\-113\\-9.907156\\-202.2109\\-113\\-9.667478\\-204.1641\\-113\\-9.412977\\-208.0703\\-113\\-9.357766\\-210.0234\\-113\\-9.01762\\-213.9297\\-113\\-8.930701\\-215.8828\\-113\\-9.099187\\-219.7891\\-113\\-9.625401\\-223.6953\\-113\\-10.09285\\-227.6016\\-113\\-10.46036\\-229.5547\\-113\\-11.02218\\-231.5078\\-113\\-11.41741\\-233.4609\\-113\\-11.89732\\-237.3672\\-113\\-12.22005\\-239.3203\\-113\\-12.85306\\-241.2734\\-113\\-13.33599\\-243.2266\\-113\\-14.07434\\-247.1328\\-113\\-15.57543\\-251.0391\\-113\\-16.17619\\-252.9922\\-113\\-17.23249\\-254.9453\\-113\\-17.78739\\-256.8984\\-113\\-18.7934\\-258.8516\\-113\\-20.07004\\-262.7578\\-113\\-21.16456\\-264.7109\\-113\\-21.95562\\-266.6641\\-113\\-23.23451\\-268.6172\\-113\\-24.12446\\-270.5703\\-113\\-25.32817\\-272.5234\\-113\\-26.14765\\-274.4766\\-113\\-27.34963\\-276.4297\\-113\\-29.86704\\-280.3359\\-113\\-32.8125\\-284.2422\\-113\\-34.15606\\-286.1953\\-113\\-35.80968\\-288.1484\\-113\\-39.59451\\-292.0547\\-113\\-41.99219\\-294.168\\-113\\-43.94531\\-295.3615\\-113\\-45.89844\\-296.7627\\-113\\-47.85156\\-297.9368\\-113\\-51.42558\\-299.8672\\-113\\-51.75781\\-300.1007\\-113\\-53.71094\\-300.8031\\-113\\-55.66406\\-301.3122\\-113\\-57.61719\\-302.0349\\-113\\-59.57031\\-302.5179\\-113\\-61.52344\\-302.7527\\-113\\-67.38281\\-303.3039\\-113\\-71.28906\\-303.5275\\-113\\-73.24219\\-303.5154\\-113\\-77.14844\\-303.2914\\-113\\-84.96094\\-302.7015\\-113\\-86.91406\\-302.4693\\-113"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002358"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "176"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "64"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "63.47656\\-301.9211\\-113\\61.52344\\-301.4337\\-113\\57.61719\\-300.7359\\-113\\55.66406\\-300.254\\-113\\53.71094\\-299.3516\\-113\\51.75781\\-298.6368\\-113\\49.80469\\-297.5039\\-113\\47.85156\\-296.6989\\-113\\45.89844\\-295.5293\\-113\\43.94531\\-294.631\\-113\\40.47394\\-292.0547\\-113\\38.08594\\-290.0931\\-113\\36.13281\\-288.6472\\-113\\33.54011\\-286.1953\\-113\\30.09796\\-282.2891\\-113\\28.32031\\-280.094\\-113\\25.73568\\-276.4297\\-113\\24.73958\\-274.4766\\-113\\24.41406\\-274.101\\-113\\22.46094\\-270.86\\-113\\22.21853\\-270.5703\\-113\\21.29021\\-268.6172\\-113\\20.12392\\-266.6641\\-113\\18.87084\\-262.7578\\-113\\17.88027\\-260.8047\\-113\\17.41621\\-258.8516\\-113\\15.94543\\-254.9453\\-113\\15.09766\\-251.0391\\-113\\14.33831\\-249.0859\\-113\\13.99158\\-247.1328\\-113\\13.47778\\-243.2266\\-113\\13.28506\\-241.2734\\-113\\12.94663\\-239.3203\\-113\\12.48238\\-237.3672\\-113\\11.91518\\-233.4609\\-113\\11.52449\\-227.6016\\-113\\11.12376\\-223.6953\\-113\\10.74219\\-221.4004\\-113\\10.27135\\-217.8359\\-113\\9.920561\\-213.9297\\-113\\9.41606\\-210.0234\\-113\\8.900036\\-208.0703\\-113\\8.496094\\-206.1172\\-113\\8.327096\\-204.1641\\-113\\8.22078\\-200.2578\\-113\\8.236608\\-198.3047\\-113\\8.4851\\-194.3984\\-113\\9.326461\\-190.4922\\-113\\9.506226\\-188.5391\\-113\\9.89772\\-180.7266\\-113\\10.16488\\-178.7734\\-113\\11.0919\\-174.8672\\-113\\11.40264\\-172.9141\\-113\\11.88427\\-169.0078\\-113\\12.30605\\-167.0547\\-113\\12.98757\\-165.1016\\-113\\13.88239\\-161.1953\\-113\\14.59418\\-159.2422\\-113\\16.60156\\-155.1309\\-113\\18.55469\\-151.7236\\-113\\19.78181\\-149.4766\\-113\\22.46094\\-145.9626\\-113\\24.44022\\-143.6172\\-113\\25.9011\\-141.6641\\-113\\27.66187\\-139.7109\\-113\\30.27344\\-136.5509\\-113\\34.42881\\-131.8984\\-113\\36.12132\\-129.9453\\-113\\37.9348\\-127.9922\\-113\\40.03906\\-125.8763\\-113\\41.99219\\-124.129\\-113\\44.53125\\-122.1328\\-113\\47.85156\\-120.0285\\-113\\49.80469\\-119.109\\-113\\51.75781\\-118.0736\\-113\\55.85395\\-116.2734\\-113\\59.57031\\-114.8994\\-113\\63.47656\\-113.6801\\-113\\67.38281\\-112.7043\\-113\\71.28906\\-111.9108\\-113\\73.24219\\-111.6504\\-113\\79.10156\\-111.0336\\-113\\83.00781\\-110.8656\\-113\\86.91406\\-110.8236\\-113\\90.82031\\-110.897\\-113\\96.67969\\-111.2686\\-113\\98.63281\\-111.4293\\-113\\100.5859\\-111.726\\-113\\104.4922\\-112.4682\\-113\\110.3516\\-114.0963\\-113\\112.3047\\-114.9804\\-113\\114.2578\\-115.5497\\-113\\115.9824\\-116.2734\\-113\\118.1641\\-117.3795\\-113\\122.0703\\-119.5634\\-113\\124.0234\\-120.9007\\-113\\125.9766\\-122.0221\\-113\\127.9297\\-123.4734\\-113\\131.8359\\-126.8798\\-113\\133.5192\\-127.9922\\-113\\135.7069\\-129.9453\\-113\\139.7569\\-133.8516\\-113\\141.2376\\-135.8047\\-113\\142.9543\\-137.7578\\-113\\147.4609\\-142.4119\\-113\\151.87\\-147.5234\\-113\\153.3203\\-149.4871\\-113\\155.9531\\-153.3828\\-113\\156.9595\\-155.3359\\-113\\159.2924\\-159.2422\\-113\\161.2031\\-163.1484\\-113\\161.9672\\-165.1016\\-113\\162.4715\\-167.0547\\-113\\163.2973\\-169.0078\\-113\\163.9176\\-170.9609\\-113\\164.3595\\-172.9141\\-113\\165.6371\\-176.8203\\-113\\166.3097\\-180.7266\\-113\\167.0869\\-184.6328\\-113\\167.5494\\-188.5391\\-113\\167.7907\\-192.4453\\-113\\167.922\\-198.3047\\-113\\167.9513\\-202.2109\\-113\\167.9171\\-206.1172\\-113\\167.8136\\-210.0234\\-113\\167.6099\\-213.9297\\-113\\167.155\\-217.8359\\-113\\166.4201\\-221.7422\\-113\\165.7853\\-225.6484\\-113\\165.3752\\-227.6016\\-113\\164.6369\\-229.5547\\-113\\163.7313\\-233.4609\\-113\\162.3474\\-237.3672\\-113\\161.9177\\-239.3203\\-113\\161.1716\\-241.2734\\-113\\160.2335\\-243.2266\\-113\\159.4204\\-245.1797\\-113\\158.2553\\-247.1328\\-113\\157.2787\\-249.0859\\-113\\155.2734\\-252.8446\\-113\\154.071\\-254.9453\\-113\\151.2806\\-258.8516\\-113\\150.0714\\-260.8047\\-113\\147.4609\\-264.2356\\-113\\145.5078\\-266.6216\\-113\\143.5547\\-268.8485\\-113\\142.1526\\-270.5703\\-113\\140.3748\\-272.5234\\-113\\137.6953\\-275.3229\\-113\\134.692\\-278.3828\\-113\\131.8359\\-281.1132\\-113\\129.8828\\-282.7598\\-113\\125.5676\\-286.1953\\-113\\122.0703\\-288.8235\\-113\\120.1172\\-289.882\\-113\\118.1641\\-291.1436\\-113\\116.2109\\-292.5522\\-113\\114.2578\\-293.5008\\-113\\112.3047\\-294.6609\\-113\\110.3516\\-295.312\\-113\\108.3984\\-296.3339\\-113\\106.4453\\-296.9746\\-113\\104.4922\\-297.7319\\-113\\102.5391\\-298.6334\\-113\\100.5859\\-299.1996\\-113\\98.63281\\-299.9773\\-113\\96.67969\\-300.5357\\-113\\90.82031\\-301.5671\\-113\\88.86719\\-302.0479\\-113\\86.91406\\-302.325\\-113\\83.00781\\-302.6351\\-113\\79.10156\\-302.7694\\-113\\75.19531\\-302.8023\\-113\\71.28906\\-302.7469\\-113\\67.38281\\-302.5179\\-113\\65.42969\\-302.3053\\-113"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002357"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "196"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "65"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.86719\\-301.9931\\-111\\-90.82031\\-301.4421\\-111\\-94.72656\\-300.6791\\-111\\-96.67969\\-300.2014\\-111\\-98.63281\\-299.3201\\-111\\-100.5859\\-298.7304\\-111\\-104.4922\\-297.0139\\-111\\-106.4453\\-296.3556\\-111\\-108.3984\\-295.2581\\-111\\-110.3516\\-294.5834\\-111\\-112.3047\\-293.3433\\-111\\-114.2578\\-292.3252\\-111\\-117.4501\\-290.1016\\-111\\-118.1641\\-289.5236\\-111\\-120.1172\\-288.4977\\-111\\-122.0703\\-287.0081\\-111\\-125.9766\\-283.5757\\-111\\-127.6768\\-282.2891\\-111\\-129.8828\\-280.3273\\-111\\-131.8359\\-278.2918\\-111\\-133.8331\\-276.4297\\-111\\-135.7507\\-274.4766\\-111\\-137.2174\\-272.5234\\-111\\-140.6683\\-268.6172\\-111\\-142.2721\\-266.6641\\-111\\-143.4186\\-264.7109\\-111\\-144.7427\\-262.7578\\-111\\-146.3063\\-260.8047\\-111\\-147.6151\\-258.8516\\-111\\-148.6703\\-256.8984\\-111\\-149.9353\\-254.9453\\-111\\-150.7385\\-252.9922\\-111\\-152.0623\\-251.0391\\-111\\-153.0343\\-249.0859\\-111\\-154.1566\\-247.1328\\-111\\-154.9527\\-245.1797\\-111\\-155.9854\\-243.2266\\-111\\-156.5571\\-241.2734\\-111\\-157.6504\\-239.3203\\-111\\-158.3464\\-237.3672\\-111\\-159.3791\\-235.4141\\-111\\-160.8412\\-231.5078\\-111\\-161.7525\\-229.5547\\-111\\-162.6967\\-225.6484\\-111\\-163.5773\\-223.6953\\-111\\-164.5178\\-219.7891\\-111\\-165.3096\\-217.8359\\-111\\-165.8316\\-215.8828\\-111\\-166.187\\-213.9297\\-111\\-167.193\\-210.0234\\-111\\-167.5442\\-208.0703\\-111\\-167.7838\\-206.1172\\-111\\-168.099\\-202.2109\\-111\\-168.2144\\-198.3047\\-111\\-168.158\\-194.3984\\-111\\-168.07\\-192.4453\\-111\\-167.7202\\-188.5391\\-111\\-167.4198\\-186.5859\\-111\\-166.3314\\-182.6797\\-111\\-165.8936\\-180.7266\\-111\\-165.3152\\-178.7734\\-111\\-164.4482\\-176.8203\\-111\\-163.8429\\-174.8672\\-111\\-163.0859\\-173.0654\\-111\\-161.236\\-169.0078\\-111\\-159.1797\\-165.231\\-111\\-157.9458\\-163.1484\\-111\\-155.7969\\-159.2422\\-111\\-153.3647\\-155.3359\\-111\\-150.6194\\-151.4297\\-111\\-149.0581\\-149.4766\\-111\\-148.0772\\-147.5234\\-111\\-146.4015\\-145.5703\\-111\\-144.5652\\-143.6172\\-111\\-143.5547\\-141.957\\-111\\-139.7461\\-137.7578\\-111\\-135.7422\\-133.7927\\-111\\-133.7891\\-132.8468\\-111\\-131.8359\\-132.2598\\-111\\-131.5044\\-131.8984\\-111\\-131.485\\-129.9453\\-111\\-129.1351\\-127.9922\\-111\\-127.9297\\-127.1155\\-111\\-124.0234\\-123.7683\\-111\\-121.6384\\-122.1328\\-111\\-120.1172\\-121.1911\\-111\\-118.1641\\-120.215\\-111\\-115.0278\\-118.2266\\-111\\-112.3047\\-116.8883\\-111\\-108.3984\\-115.1962\\-111\\-106.4453\\-114.5916\\-111\\-104.4922\\-113.7138\\-111\\-102.5391\\-113.2793\\-111\\-100.5859\\-113.0454\\-111\\-98.63281\\-111.9422\\-111\\-94.72656\\-111.5203\\-111\\-92.77344\\-110.6525\\-111\\-90.82031\\-110.3098\\-111\\-84.96094\\-109.7874\\-111\\-79.10156\\-109.0627\\-111\\-75.19531\\-108.8112\\-111\\-71.28906\\-108.8496\\-111\\-67.38281\\-108.7577\\-111\\-65.42969\\-108.7993\\-111\\-61.52344\\-109.1027\\-111\\-59.57031\\-109.3857\\-111\\-57.61719\\-109.7874\\-111\\-55.66406\\-109.9791\\-111\\-53.71094\\-110.3279\\-111\\-51.75781\\-111.1864\\-111\\-49.80469\\-111.6447\\-111\\-47.85156\\-111.9565\\-111\\-45.89844\\-112.7512\\-111\\-41.99219\\-113.9763\\-111\\-38.08594\\-115.9722\\-111\\-36.13281\\-117.492\\-111\\-34.74935\\-118.2266\\-111\\-32.22656\\-120.4727\\-111\\-30.49207\\-122.1328\\-111\\-28.32031\\-124.7429\\-111\\-27.57772\\-126.0391\\-111\\-26.05252\\-127.9922\\-111\\-25.23226\\-129.9453\\-111\\-23.89152\\-131.8984\\-111\\-23.07722\\-133.8516\\-111\\-22.46094\\-134.8754\\-111\\-21.01452\\-137.7578\\-111\\-20.19133\\-139.7109\\-111\\-19.47428\\-141.6641\\-111\\-18.94039\\-143.6172\\-111\\-17.91561\\-145.5703\\-111\\-17.26423\\-147.5234\\-111\\-16.33453\\-149.4766\\-111\\-14.85443\\-153.3828\\-111\\-14.02638\\-155.3359\\-111\\-13.05241\\-159.2422\\-111\\-12.42566\\-161.1953\\-111\\-12.01831\\-163.1484\\-111\\-11.76813\\-165.1016\\-111\\-11.17265\\-170.9609\\-111\\-10.55519\\-174.8672\\-111\\-10.34546\\-176.8203\\-111\\-10.17391\\-180.7266\\-111\\-10.08235\\-184.6328\\-111\\-10.09648\\-188.5391\\-111\\-9.944898\\-200.2578\\-111\\-9.813262\\-202.2109\\-111\\-9.045323\\-210.0234\\-111\\-8.679746\\-211.9766\\-111\\-8.478938\\-213.9297\\-111\\-8.503402\\-217.8359\\-111\\-8.600725\\-219.7891\\-111\\-9.602013\\-225.6484\\-111\\-10.08941\\-229.5547\\-111\\-10.4831\\-231.5078\\-111\\-11.08332\\-233.4609\\-111\\-11.45089\\-235.4141\\-111\\-12.03824\\-239.3203\\-111\\-12.52254\\-241.2734\\-111\\-13.19019\\-243.2266\\-111\\-13.94924\\-247.1328\\-111\\-14.58083\\-249.0859\\-111\\-15.44319\\-251.0391\\-111\\-16.02872\\-252.9922\\-111\\-17.09883\\-254.9453\\-111\\-17.6976\\-256.8984\\-111\\-18.625\\-258.8516\\-111\\-19.40104\\-260.8047\\-111\\-19.98047\\-262.7578\\-111\\-21.09375\\-264.7109\\-111\\-21.89265\\-266.6641\\-111\\-23.16655\\-268.6172\\-111\\-24.05599\\-270.5703\\-111\\-25.30031\\-272.5234\\-111\\-26.10627\\-274.4766\\-111\\-29.82045\\-280.3359\\-111\\-32.78556\\-284.2422\\-111\\-34.12456\\-286.1953\\-111\\-36.13281\\-288.5099\\-111\\-38.08594\\-290.4219\\-111\\-39.63216\\-292.0547\\-111\\-41.99219\\-294.0938\\-111\\-43.94531\\-295.3209\\-111\\-45.89844\\-296.707\\-111\\-49.80469\\-298.9333\\-111\\-51.75781\\-299.993\\-111\\-53.71094\\-300.7397\\-111\\-55.66406\\-301.2357\\-111\\-57.61719\\-301.9063\\-111\\-59.57031\\-302.4315\\-111\\-61.52344\\-302.7065\\-111\\-67.38281\\-303.2043\\-111\\-71.28906\\-303.3973\\-111\\-75.19531\\-303.3203\\-111\\-84.96094\\-302.6418\\-111\\-86.91406\\-302.3884\\-111"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002357"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "184"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "66"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "63.47656\\-301.9211\\-111\\61.52344\\-301.4337\\-111\\57.61719\\-300.7245\\-111\\55.66406\\-300.2206\\-111\\53.71094\\-299.3049\\-111\\51.75781\\-298.6076\\-111\\49.80469\\-297.4609\\-111\\47.85156\\-296.6737\\-111\\45.89844\\-295.4936\\-111\\43.94531\\-294.6003\\-111\\40.50085\\-292.0547\\-111\\38.08594\\-290.0763\\-111\\36.13281\\-288.6577\\-111\\33.53557\\-286.1953\\-111\\30.08418\\-282.2891\\-111\\28.32031\\-280.1317\\-111\\25.73568\\-276.4297\\-111\\24.72511\\-274.4766\\-111\\24.41406\\-274.1114\\-111\\22.46094\\-270.8625\\-111\\22.21853\\-270.5703\\-111\\21.27878\\-268.6172\\-111\\20.14587\\-266.6641\\-111\\18.88253\\-262.7578\\-111\\17.89455\\-260.8047\\-111\\17.41621\\-258.8516\\-111\\15.95909\\-254.9453\\-111\\15.05055\\-251.0391\\-111\\14.37231\\-249.0859\\-111\\14.00321\\-247.1328\\-111\\13.27237\\-241.2734\\-111\\12.9713\\-239.3203\\-111\\12.46939\\-237.3672\\-111\\11.92882\\-233.4609\\-111\\11.51816\\-227.6016\\-111\\11.06994\\-223.6953\\-111\\10.43822\\-219.7891\\-111\\9.660994\\-211.9766\\-111\\9.319026\\-210.0234\\-111\\8.781433\\-208.0703\\-111\\8.382667\\-206.1172\\-111\\8.244657\\-204.1641\\-111\\8.22078\\-200.2578\\-111\\8.31822\\-198.3047\\-111\\8.666992\\-194.3984\\-111\\9.234619\\-190.4922\\-111\\9.706737\\-180.7266\\-111\\10.22552\\-176.8203\\-111\\10.5678\\-174.8672\\-111\\11.37579\\-170.9609\\-111\\11.96145\\-167.0547\\-111\\12.46769\\-165.1016\\-111\\13.17022\\-163.1484\\-111\\14.13066\\-159.2422\\-111\\15.13046\\-157.2891\\-111\\15.8805\\-155.3359\\-111\\17.0318\\-153.3828\\-111\\17.95226\\-151.4297\\-111\\19.19427\\-149.4766\\-111\\20.13103\\-147.5234\\-111\\24.34957\\-141.6641\\-111\\25.9009\\-139.7109\\-111\\27.13186\\-137.7578\\-111\\30.27344\\-133.3562\\-111\\32.22656\\-130.9494\\-111\\34.17969\\-128.3566\\-111\\36.21557\\-126.0391\\-111\\38.08594\\-123.7651\\-111\\40.03906\\-121.7614\\-111\\41.99219\\-120.064\\-111\\43.94531\\-119.0811\\-111\\45.89844\\-117.5712\\-111\\47.85156\\-116.3725\\-111\\49.80469\\-115.3893\\-111\\53.71094\\-113.7203\\-111\\56.28255\\-112.3672\\-111\\57.61719\\-111.9708\\-111\\59.57031\\-111.7132\\-111\\61.52344\\-110.8955\\-111\\63.47656\\-110.3175\\-111\\65.42969\\-110.0024\\-111\\67.38281\\-109.5822\\-111\\71.28906\\-108.9212\\-111\\73.24219\\-108.7384\\-111\\79.10156\\-108.4054\\-111\\81.05469\\-108.0129\\-111\\84.96094\\-107.9499\\-111\\86.91406\\-108.0129\\-111\\88.86719\\-108.3229\\-111\\90.82031\\-108.3454\\-111\\94.72656\\-108.5395\\-111\\98.63281\\-108.8373\\-111\\100.5859\\-109.0429\\-111\\104.4922\\-109.955\\-111\\106.4453\\-110.347\\-111\\110.3516\\-111.7135\\-111\\112.3047\\-112.2587\\-111\\114.2578\\-113.2461\\-111\\116.2109\\-113.9541\\-111\\118.1641\\-114.8931\\-111\\122.0703\\-117.0489\\-111\\124.0234\\-118.5915\\-111\\125.9766\\-119.5693\\-111\\127.9297\\-121.1183\\-111\\129.8828\\-122.8118\\-111\\131.8218\\-124.0859\\-111\\133.7891\\-125.7451\\-111\\135.7422\\-127.5184\\-111\\138.1051\\-129.9453\\-111\\140.1042\\-131.8984\\-111\\141.9334\\-133.8516\\-111\\143.0966\\-135.8047\\-111\\144.8069\\-137.7578\\-111\\146.7104\\-139.7109\\-111\\148.4536\\-141.6641\\-111\\151.5732\\-145.5703\\-111\\155.6983\\-151.4297\\-111\\156.6349\\-153.3828\\-111\\157.856\\-155.3359\\-111\\158.8073\\-157.2891\\-111\\159.9573\\-159.2422\\-111\\161.7472\\-163.1484\\-111\\162.2445\\-165.1016\\-111\\162.8531\\-167.0547\\-111\\163.6635\\-169.0078\\-111\\164.6086\\-172.9141\\-111\\165.3752\\-174.8672\\-111\\165.793\\-176.8203\\-111\\166.4333\\-180.7266\\-111\\167.193\\-184.6328\\-111\\167.6099\\-188.5391\\-111\\167.8022\\-192.4453\\-111\\167.9337\\-198.3047\\-111\\167.9456\\-204.1641\\-111\\167.8888\\-208.0703\\-111\\167.6018\\-213.9297\\-111\\167.4434\\-215.8828\\-111\\167.1678\\-217.8359\\-111\\166.4283\\-221.7422\\-111\\165.7914\\-225.6484\\-111\\165.4061\\-227.6016\\-111\\164.6575\\-229.5547\\-111\\163.7538\\-233.4609\\-111\\162.9993\\-235.4141\\-111\\162.3474\\-237.3672\\-111\\161.9248\\-239.3203\\-111\\161.1407\\-241.2734\\-111\\159.3708\\-245.1797\\-111\\158.2548\\-247.1328\\-111\\156.2317\\-251.0391\\-111\\154.0588\\-254.9453\\-111\\151.207\\-258.8516\\-111\\150.0204\\-260.8047\\-111\\148.5497\\-262.7578\\-111\\145.5078\\-266.5246\\-111\\142.0934\\-270.5703\\-111\\140.3137\\-272.5234\\-111\\137.6953\\-275.2506\\-111\\134.6175\\-278.3828\\-111\\131.8359\\-281.0383\\-111\\129.8828\\-282.6725\\-111\\124.0234\\-287.2769\\-111\\122.0703\\-288.7663\\-111\\120.1172\\-289.7905\\-111\\118.1641\\-291.0727\\-111\\116.2109\\-292.4894\\-111\\114.2578\\-293.4352\\-111\\112.3047\\-294.619\\-111\\110.3516\\-295.2616\\-111\\108.3984\\-296.263\\-111\\104.4922\\-297.656\\-111\\102.5391\\-298.5881\\-111\\100.5859\\-299.1456\\-111\\98.63281\\-299.905\\-111\\96.67969\\-300.5008\\-111\\90.82031\\-301.5042\\-111\\88.86719\\-301.9781\\-111\\86.91406\\-302.292\\-111\\83.00781\\-302.6214\\-111\\79.10156\\-302.7469\\-111\\75.19531\\-302.7969\\-111\\71.28906\\-302.7239\\-111\\67.38281\\-302.51\\-111\\65.42969\\-302.2818\\-111"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "193"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "67"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-90.82031\\-301.3386\\-109\\-94.72656\\-300.6067\\-109\\-96.67969\\-300.0569\\-109\\-98.63281\\-299.1954\\-109\\-100.5859\\-298.6312\\-109\\-102.5391\\-297.6788\\-109\\-106.4453\\-296.2122\\-109\\-108.3984\\-295.1664\\-109\\-110.3516\\-294.4795\\-109\\-112.3047\\-293.2345\\-109\\-114.2578\\-292.1494\\-109\\-117.3116\\-290.1016\\-109\\-118.1641\\-289.431\\-109\\-120.1172\\-288.3663\\-109\\-122.0703\\-286.9199\\-109\\-125.9766\\-283.406\\-109\\-127.504\\-282.2891\\-109\\-129.8828\\-280.1342\\-109\\-131.8359\\-278.125\\-109\\-133.6167\\-276.4297\\-109\\-135.7422\\-274.2935\\-109\\-137.0817\\-272.5234\\-109\\-138.7601\\-270.5703\\-109\\-140.5628\\-268.6172\\-109\\-142.1701\\-266.6641\\-109\\-143.2897\\-264.7109\\-109\\-144.6734\\-262.7578\\-109\\-146.2271\\-260.8047\\-109\\-147.5152\\-258.8516\\-109\\-148.6162\\-256.8984\\-109\\-149.882\\-254.9453\\-109\\-150.706\\-252.9922\\-109\\-152.0163\\-251.0391\\-109\\-152.9857\\-249.0859\\-109\\-154.1275\\-247.1328\\-109\\-154.9037\\-245.1797\\-109\\-155.9602\\-243.2266\\-109\\-156.529\\-241.2734\\-109\\-157.6184\\-239.3203\\-109\\-158.3252\\-237.3672\\-109\\-159.3541\\-235.4141\\-109\\-160.8412\\-231.5078\\-109\\-161.7525\\-229.5547\\-109\\-162.7189\\-225.6484\\-109\\-163.5957\\-223.6953\\-109\\-164.5538\\-219.7891\\-109\\-165.3752\\-217.8359\\-109\\-165.8638\\-215.8828\\-109\\-166.2504\\-213.9297\\-109\\-167.2664\\-210.0234\\-109\\-167.6055\\-208.0703\\-109\\-167.8366\\-206.1172\\-109\\-168.1436\\-202.2109\\-109\\-168.2795\\-198.3047\\-109\\-168.2879\\-196.3516\\-109\\-168.1946\\-192.4453\\-109\\-167.8986\\-188.5391\\-109\\-167.6728\\-186.5859\\-109\\-167.3222\\-184.6328\\-109\\-166.7427\\-182.6797\\-109\\-165.7992\\-178.7734\\-109\\-165.1898\\-176.8203\\-109\\-164.3654\\-174.8672\\-109\\-163.7634\\-172.9141\\-109\\-162.8557\\-170.9609\\-109\\-161.2067\\-167.0547\\-109\\-159.2636\\-163.1484\\-109\\-158.1114\\-161.1953\\-109\\-157.2266\\-159.3385\\-109\\-153.9688\\-153.3828\\-109\\-152.6838\\-151.4297\\-109\\-151.1816\\-149.4766\\-109\\-150.1864\\-147.5234\\-109\\-148.5707\\-145.5703\\-109\\-147.4709\\-143.6172\\-109\\-145.5078\\-141.182\\-109\\-143.5547\\-138.9373\\-109\\-141.6016\\-136.8667\\-109\\-139.6484\\-134.6934\\-109\\-136.8064\\-131.8984\\-109\\-135.2081\\-129.9453\\-109\\-133.7891\\-128.8768\\-109\\-131.8359\\-127.0034\\-109\\-128.5761\\-124.0859\\-109\\-126.2455\\-122.1328\\-109\\-124.0234\\-120.7494\\-109\\-122.0703\\-119.364\\-109\\-120.1172\\-118.4374\\-109\\-118.1641\\-117.1896\\-109\\-116.2109\\-116.0948\\-109\\-114.2578\\-115.1785\\-109\\-112.3047\\-114.1231\\-109\\-108.3984\\-112.6569\\-109\\-106.4453\\-111.7129\\-109\\-104.4922\\-111.234\\-109\\-102.3763\\-110.4141\\-109\\-100.5859\\-109.9074\\-109\\-98.63281\\-109.5079\\-109\\-94.72656\\-108.4513\\-109\\-88.86719\\-107.759\\-109\\-86.91406\\-107.5779\\-109\\-84.96094\\-107.2005\\-109\\-83.00781\\-107.0013\\-109\\-75.19531\\-106.4832\\-109\\-73.24219\\-106.4279\\-109\\-69.33594\\-106.6033\\-109\\-65.42969\\-106.6429\\-109\\-61.52344\\-106.8265\\-109\\-57.61719\\-107.2483\\-109\\-51.75781\\-108.34\\-109\\-49.80469\\-109.0627\\-109\\-45.89844\\-109.8756\\-109\\-43.94531\\-110.7777\\-109\\-41.99219\\-111.3619\\-109\\-40.03906\\-112.4009\\-109\\-36.13281\\-114.1893\\-109\\-33.08652\\-116.2734\\-109\\-30.93804\\-118.2266\\-109\\-28.9223\\-120.1797\\-109\\-27.23389\\-122.1328\\-109\\-24.41406\\-126.2275\\-109\\-23.4561\\-127.9922\\-109\\-22.18054\\-129.9453\\-109\\-21.42962\\-131.8984\\-109\\-20.37342\\-133.8516\\-109\\-19.7633\\-135.8047\\-109\\-18.55469\\-138.71\\-109\\-17.55411\\-141.6641\\-109\\-17.12295\\-143.6172\\-109\\-16.27361\\-145.5703\\-109\\-15.17078\\-149.4766\\-109\\-14.34375\\-151.4297\\-109\\-13.28823\\-155.3359\\-109\\-12.07618\\-159.2422\\-109\\-10.99537\\-167.0547\\-109\\-10.39567\\-170.9609\\-109\\-10.19464\\-172.9141\\-109\\-9.947432\\-176.8203\\-109\\-9.683331\\-184.6328\\-109\\-9.641438\\-188.5391\\-109\\-9.66957\\-192.4453\\-109\\-9.755711\\-196.3516\\-109\\-9.706737\\-200.2578\\-109\\-9.610615\\-202.2109\\-109\\-9.136431\\-206.1172\\-109\\-8.200699\\-211.9766\\-109\\-8.025568\\-213.9297\\-109\\-8.07408\\-217.8359\\-109\\-8.151666\\-219.7891\\-109\\-8.354335\\-221.7422\\-109\\-8.679746\\-223.6953\\-109\\-9.203942\\-225.6484\\-109\\-9.543919\\-227.6016\\-109\\-10.10346\\-231.5078\\-109\\-10.4831\\-233.4609\\-109\\-11.15234\\-235.4141\\-109\\-11.62163\\-237.3672\\-109\\-12.21686\\-241.2734\\-109\\-13.00182\\-243.2266\\-109\\-13.82698\\-247.1328\\-109\\-14.3319\\-249.0859\\-109\\-15.28293\\-251.0391\\-109\\-15.90835\\-252.9922\\-109\\-16.87961\\-254.9453\\-109\\-18.41412\\-258.8516\\-109\\-19.34186\\-260.8047\\-109\\-19.8927\\-262.7578\\-109\\-21.01164\\-264.7109\\-109\\-21.81168\\-266.6641\\-109\\-23.08664\\-268.6172\\-109\\-23.97933\\-270.5703\\-109\\-25.27773\\-272.5234\\-109\\-26.05381\\-274.4766\\-109\\-29.7822\\-280.3359\\-109\\-32.77972\\-284.2422\\-109\\-34.10881\\-286.1953\\-109\\-36.13281\\-288.4945\\-109\\-38.08594\\-290.3953\\-109\\-40.03906\\-292.4079\\-109\\-42.04102\\-294.0078\\-109\\-45.89844\\-296.6506\\-109\\-49.80469\\-298.8429\\-109\\-51.79908\\-299.8672\\-109\\-53.71094\\-300.6657\\-109\\-55.66406\\-301.1548\\-109\\-59.57031\\-302.3381\\-109\\-61.52344\\-302.6533\\-109\\-67.38281\\-303.1205\\-109\\-71.28906\\-303.2945\\-109\\-73.24219\\-303.2914\\-109\\-77.14844\\-303.1128\\-109\\-83.00781\\-302.7469\\-109\\-86.91406\\-302.292\\-109"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "184"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "68"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "63.47656\\-301.8906\\-109\\61.52344\\-301.4095\\-109\\57.61719\\-300.7018\\-109\\55.66406\\-300.1862\\-109\\53.71094\\-299.2613\\-109\\51.75781\\-298.5632\\-109\\49.80469\\-297.4195\\-109\\47.85156\\-296.6519\\-109\\45.89844\\-295.4692\\-109\\43.94531\\-294.5649\\-109\\41.99219\\-293.154\\-109\\40.03906\\-291.553\\-109\\36.13281\\-288.6577\\-109\\33.53557\\-286.1953\\-109\\30.09796\\-282.2891\\-109\\28.32031\\-280.1336\\-109\\25.73568\\-276.4297\\-109\\24.72511\\-274.4766\\-109\\24.41406\\-274.1146\\-109\\22.46094\\-270.8625\\-109\\22.21853\\-270.5703\\-109\\21.29021\\-268.6172\\-109\\20.13482\\-266.6641\\-109\\18.88489\\-262.7578\\-109\\17.88737\\-260.8047\\-109\\17.42208\\-258.8516\\-109\\15.95909\\-254.9453\\-109\\15.06519\\-251.0391\\-109\\14.39752\\-249.0859\\-109\\14.00703\\-247.1328\\-109\\13.28125\\-241.2734\\-109\\12.94663\\-239.3203\\-109\\12.48238\\-237.3672\\-109\\12.14718\\-235.4141\\-109\\11.92197\\-233.4609\\-109\\11.66221\\-229.5547\\-109\\11.48135\\-227.6016\\-109\\10.93606\\-223.6953\\-109\\10.53049\\-221.7422\\-109\\10.31681\\-219.7891\\-109\\9.560601\\-211.9766\\-109\\9.134929\\-210.0234\\-109\\8.529975\\-208.0703\\-109\\8.251664\\-206.1172\\-109\\8.114246\\-204.1641\\-109\\8.128773\\-200.2578\\-109\\8.490115\\-194.3984\\-109\\8.827815\\-190.4922\\-109\\8.954216\\-186.5859\\-109\\8.957942\\-184.6328\\-109\\9.077113\\-182.6797\\-109\\9.63294\\-178.7734\\-109\\10.32366\\-172.9141\\-109\\11.33531\\-169.0078\\-109\\11.99434\\-165.1016\\-109\\12.48076\\-163.1484\\-109\\13.20394\\-161.1953\\-109\\14.26787\\-157.2891\\-109\\15.22786\\-155.3359\\-109\\15.97377\\-153.3828\\-109\\17.08623\\-151.4297\\-109\\17.87751\\-149.4766\\-109\\19.09375\\-147.5234\\-109\\20.04688\\-145.5703\\-109\\21.39353\\-143.6172\\-109\\22.35765\\-141.6641\\-109\\23.68164\\-139.7109\\-109\\24.87768\\-137.7578\\-109\\27.08258\\-133.8516\\-109\\28.59775\\-131.8984\\-109\\29.66049\\-129.9453\\-109\\32.79321\\-126.0391\\-109\\34.00578\\-124.0859\\-109\\36.13281\\-121.6227\\-109\\38.08594\\-119.6112\\-109\\39.53552\\-118.2266\\-109\\41.99219\\-116.0971\\-109\\43.94531\\-115.0026\\-109\\45.89844\\-113.6088\\-109\\47.85156\\-112.7499\\-109\\49.80469\\-111.6259\\-109\\51.75781\\-111.1067\\-109\\53.71094\\-110.0625\\-109\\57.61719\\-108.5883\\-109\\61.52344\\-107.7538\\-109\\63.47656\\-107.2432\\-109\\67.38281\\-106.7031\\-109\\71.28906\\-106.2604\\-109\\73.24219\\-105.7924\\-109\\75.19531\\-105.5855\\-109\\81.05469\\-105.3021\\-109\\86.91406\\-105.3652\\-109\\92.77344\\-105.6693\\-109\\94.72656\\-105.8131\\-109\\96.67969\\-106.2787\\-109\\98.87695\\-106.5078\\-109\\102.5391\\-106.991\\-109\\108.3984\\-108.612\\-109\\110.3516\\-109.4035\\-109\\112.3047\\-109.8869\\-109\\114.2578\\-111.0266\\-109\\116.2109\\-111.694\\-109\\122.0703\\-114.7512\\-109\\124.0234\\-115.8304\\-109\\125.9766\\-117.2592\\-109\\127.9297\\-118.8206\\-109\\131.8359\\-121.7403\\-109\\133.7891\\-123.5055\\-109\\137.6953\\-127.3023\\-109\\140.2911\\-129.9453\\-109\\142.0543\\-131.8984\\-109\\143.6719\\-133.8516\\-109\\144.9282\\-135.8047\\-109\\148.3729\\-139.7109\\-109\\149.8631\\-141.6641\\-109\\151.0918\\-143.6172\\-109\\152.6619\\-145.5703\\-109\\154.12\\-147.5234\\-109\\155.3314\\-149.4766\\-109\\156.3622\\-151.4297\\-109\\157.586\\-153.3828\\-109\\158.4848\\-155.3359\\-109\\159.6774\\-157.2891\\-109\\160.4461\\-159.2422\\-109\\161.4654\\-161.1953\\-109\\162.073\\-163.1484\\-109\\162.5383\\-165.1016\\-109\\163.3838\\-167.0547\\-109\\164.3447\\-170.9609\\-109\\165.5932\\-174.8672\\-109\\166.58\\-180.7266\\-109\\167.3002\\-184.6328\\-109\\167.4866\\-186.5859\\-109\\167.7376\\-190.4922\\-109\\167.8816\\-194.3984\\-109\\167.9454\\-198.3047\\-109\\167.9515\\-204.1641\\-109\\167.9002\\-208.0703\\-109\\167.7217\\-211.9766\\-109\\167.4214\\-215.8828\\-109\\167.1805\\-217.8359\\-109\\166.425\\-221.7422\\-109\\165.7914\\-225.6484\\-109\\165.4161\\-227.6016\\-109\\164.668\\-229.5547\\-109\\164.1499\\-231.5078\\-109\\163.7464\\-233.4609\\-109\\162.3474\\-237.3672\\-109\\161.9057\\-239.3203\\-109\\161.1328\\-241.229\\-109\\159.3448\\-245.1797\\-109\\158.2391\\-247.1328\\-109\\156.2195\\-251.0391\\-109\\155.0752\\-252.9922\\-109\\154.0466\\-254.9453\\-109\\152.5378\\-256.8984\\-109\\151.1493\\-258.8516\\-109\\149.9617\\-260.8047\\-109\\146.9075\\-264.7109\\-109\\143.67\\-268.6172\\-109\\139.6484\\-273.1466\\-109\\134.5232\\-278.3828\\-109\\131.8359\\-280.9259\\-109\\127.7738\\-284.2422\\-109\\124.0234\\-287.2087\\-109\\122.0703\\-288.6978\\-109\\120.1172\\-289.6791\\-109\\116.2109\\-292.378\\-109\\114.2578\\-293.3587\\-109\\112.3047\\-294.5446\\-109\\110.3516\\-295.2083\\-109\\108.3984\\-296.1869\\-109\\104.4922\\-297.5596\\-109\\102.5391\\-298.538\\-109\\100.5859\\-299.0807\\-109\\96.67969\\-300.4496\\-109\\94.72656\\-300.8212\\-109\\90.82031\\-301.4311\\-109\\86.91406\\-302.2232\\-109\\83.00781\\-302.591\\-109\\77.14844\\-302.7638\\-109\\71.28906\\-302.7127\\-109\\67.38281\\-302.4898\\-109\\65.42969\\-302.2581\\-109"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "194"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "69"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-302.1761\\-107\\-90.82031\\-301.2256\\-107\\-94.72656\\-300.5239\\-107\\-96.66285\\-299.8672\\-107\\-98.63281\\-299.0934\\-107\\-100.5859\\-298.5244\\-107\\-102.5391\\-297.5116\\-107\\-104.4922\\-296.8543\\-107\\-108.3984\\-295.0989\\-107\\-110.3516\\-294.3404\\-107\\-110.7929\\-294.0078\\-107\\-114.1012\\-292.0547\\-107\\-116.2109\\-290.7467\\-107\\-118.1641\\-289.342\\-107\\-120.1172\\-288.1729\\-107\\-122.0703\\-286.7928\\-107\\-125.9766\\-283.2954\\-107\\-127.3075\\-282.2891\\-107\\-129.4688\\-280.3359\\-107\\-131.3914\\-278.3828\\-107\\-135.7422\\-274.0778\\-107\\-136.8726\\-272.5234\\-107\\-140.4685\\-268.6172\\-107\\-142.0656\\-266.6641\\-107\\-143.1372\\-264.7109\\-107\\-146.1331\\-260.8047\\-107\\-147.4609\\-258.755\\-107\\-149.8117\\-254.9453\\-107\\-150.6747\\-252.9922\\-107\\-151.9603\\-251.0391\\-107\\-152.9257\\-249.0859\\-107\\-154.0843\\-247.1328\\-107\\-154.8814\\-245.1797\\-107\\-155.9309\\-243.2266\\-107\\-156.4897\\-241.2734\\-107\\-157.588\\-239.3203\\-107\\-158.2971\\-237.3672\\-107\\-159.3541\\-235.4141\\-107\\-160.8255\\-231.5078\\-107\\-161.7225\\-229.5547\\-107\\-162.7189\\-225.6484\\-107\\-163.6224\\-223.6953\\-107\\-164.585\\-219.7891\\-107\\-165.426\\-217.8359\\-107\\-166.2954\\-213.9297\\-107\\-167.3242\\-210.0234\\-107\\-167.6607\\-208.0703\\-107\\-168.0452\\-204.1641\\-107\\-168.1824\\-202.2109\\-107\\-168.3751\\-196.3516\\-107\\-168.3093\\-192.4453\\-107\\-168.2021\\-190.4922\\-107\\-167.8583\\-186.5859\\-107\\-167.6086\\-184.6328\\-107\\-167.2567\\-182.6797\\-107\\-166.1987\\-178.7734\\-107\\-165.7538\\-176.8203\\-107\\-165.1476\\-174.8672\\-107\\-164.3261\\-172.9141\\-107\\-163.7666\\-170.9609\\-107\\-162.875\\-169.0078\\-107\\-161.325\\-165.1016\\-107\\-159.5052\\-161.1953\\-107\\-158.418\\-159.2422\\-107\\-157.5835\\-157.2891\\-107\\-156.4716\\-155.3359\\-107\\-155.7213\\-153.3828\\-107\\-152.2859\\-147.5234\\-107\\-150.6143\\-145.5703\\-107\\-149.7116\\-143.6172\\-107\\-148.1761\\-141.6641\\-107\\-145.5078\\-138.011\\-107\\-143.5547\\-135.6148\\-107\\-141.9271\\-133.8516\\-107\\-140.2902\\-131.8984\\-107\\-137.6953\\-129.1182\\-107\\-134.5378\\-126.0391\\-107\\-131.8359\\-123.5434\\-107\\-127.6449\\-120.1797\\-107\\-124.9593\\-118.2266\\-107\\-124.0234\\-117.7001\\-107\\-121.905\\-116.2734\\-107\\-118.1641\\-114.1546\\-107\\-116.2109\\-113.2928\\-107\\-114.5733\\-112.3672\\-107\\-112.3047\\-111.3359\\-107\\-108.3984\\-109.7446\\-107\\-106.4453\\-109.1934\\-107\\-104.4922\\-108.4144\\-107\\-102.5391\\-107.9018\\-107\\-100.5859\\-107.6001\\-107\\-98.63281\\-106.9155\\-107\\-96.67969\\-106.4046\\-107\\-92.77344\\-105.9033\\-107\\-90.82031\\-105.4794\\-107\\-88.86719\\-105.2641\\-107\\-84.96094\\-104.5653\\-107\\-83.00781\\-104.5025\\-107\\-79.10156\\-104.2507\\-107\\-75.19531\\-104.1387\\-107\\-73.24219\\-103.6659\\-107\\-71.28906\\-103.7246\\-107\\-69.33594\\-103.9476\\-107\\-65.42969\\-104.0475\\-107\\-63.47656\\-104.2507\\-107\\-59.22154\\-104.5547\\-107\\-57.61719\\-104.7793\\-107\\-53.71094\\-105.4528\\-107\\-51.75781\\-105.94\\-107\\-48.71545\\-106.5078\\-107\\-45.89844\\-107.3749\\-107\\-43.94531\\-107.8642\\-107\\-42.06543\\-108.4609\\-107\\-38.08594\\-110.1962\\-107\\-34.22852\\-112.3672\\-107\\-32.22656\\-113.7851\\-107\\-30.27344\\-115.3713\\-107\\-28.32031\\-117.2188\\-107\\-25.68742\\-120.1797\\-107\\-24.10419\\-122.1328\\-107\\-22.46094\\-124.7127\\-107\\-21.70139\\-126.0391\\-107\\-20.90774\\-127.9922\\-107\\-19.83964\\-129.9453\\-107\\-19.24272\\-131.8984\\-107\\-18.17057\\-133.8516\\-107\\-16.60156\\-137.9622\\-107\\-16.08297\\-139.7109\\-107\\-15.16281\\-143.6172\\-107\\-14.04693\\-147.5234\\-107\\-13.28402\\-151.4297\\-107\\-12.5921\\-153.3828\\-107\\-11.70706\\-157.2891\\-107\\-11.38286\\-159.2422\\-107\\-10.54275\\-163.1484\\-107\\-10.03928\\-167.0547\\-107\\-9.817295\\-170.9609\\-107\\-9.311124\\-178.7734\\-107\\-8.948038\\-182.6797\\-107\\-8.708294\\-184.6328\\-107\\-8.458647\\-188.5391\\-107\\-8.559718\\-190.4922\\-107\\-8.766352\\-192.4453\\-107\\-9.126045\\-194.3984\\-107\\-9.274194\\-196.3516\\-107\\-9.216707\\-200.2578\\-107\\-9.092134\\-202.2109\\-107\\-8.663293\\-204.1641\\-107\\-8.336829\\-206.1172\\-107\\-7.925638\\-210.0234\\-107\\-7.431239\\-213.9297\\-107\\-7.467049\\-215.8828\\-107\\-7.688959\\-219.7891\\-107\\-8.128447\\-223.6953\\-107\\-8.481019\\-225.6484\\-107\\-9.475447\\-229.5547\\-107\\-10.10665\\-233.4609\\-107\\-11.39904\\-237.3672\\-107\\-11.95427\\-241.2734\\-107\\-13.26712\\-245.1797\\-107\\-14.14461\\-249.0859\\-107\\-15.06255\\-251.0391\\-107\\-15.76803\\-252.9922\\-107\\-17.51677\\-256.8984\\-107\\-18.21588\\-258.8516\\-107\\-19.2752\\-260.8047\\-107\\-19.81738\\-262.7578\\-107\\-20.8945\\-264.7109\\-107\\-21.7272\\-266.6641\\-107\\-22.99194\\-268.6172\\-107\\-23.89849\\-270.5703\\-107\\-25.21255\\-272.5234\\-107\\-25.95564\\-274.4766\\-107\\-27.27096\\-276.4297\\-107\\-28.32031\\-278.1895\\-107\\-29.73485\\-280.3359\\-107\\-32.75986\\-284.2422\\-107\\-34.07813\\-286.1953\\-107\\-36.13281\\-288.5099\\-107\\-40.03906\\-292.3802\\-107\\-42.15337\\-294.0078\\-107\\-45.89844\\-296.5976\\-107\\-47.85156\\-297.5979\\-107\\-49.80469\\-298.7745\\-107\\-53.71094\\-300.601\\-107\\-57.61719\\-301.6206\\-107\\-59.57031\\-302.2476\\-107\\-61.52344\\-302.5838\\-107\\-63.47656\\-302.7804\\-107\\-69.33594\\-303.1477\\-107\\-73.24219\\-303.1958\\-107\\-75.19531\\-303.1282\\-107\\-83.00781\\-302.689\\-107\\-84.96094\\-302.4817\\-107"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "183"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "70"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "61.52344\\-301.3989\\-107\\57.61719\\-300.697\\-107\\55.66406\\-300.1509\\-107\\53.71094\\-299.2258\\-107\\51.75781\\-298.5251\\-107\\49.80469\\-297.3674\\-107\\47.85156\\-296.6255\\-107\\45.89844\\-295.4388\\-107\\43.94531\\-294.5423\\-107\\41.99219\\-293.1491\\-107\\40.03906\\-291.5238\\-107\\36.13281\\-288.6577\\-107\\33.5126\\-286.1953\\-107\\30.08418\\-282.2891\\-107\\28.32031\\-280.0984\\-107\\25.72692\\-276.4297\\-107\\24.73719\\-274.4766\\-107\\24.41406\\-274.1042\\-107\\22.46094\\-270.865\\-107\\22.21853\\-270.5703\\-107\\21.29481\\-268.6172\\-107\\20.12392\\-266.6641\\-107\\18.88489\\-262.7578\\-107\\17.88737\\-260.8047\\-107\\17.42208\\-258.8516\\-107\\15.95909\\-254.9453\\-107\\15.06786\\-251.0391\\-107\\14.38578\\-249.0859\\-107\\14.00703\\-247.1328\\-107\\13.25969\\-241.2734\\-107\\12.49556\\-237.3672\\-107\\11.91518\\-233.4609\\-107\\11.61541\\-229.5547\\-107\\11.10026\\-225.6484\\-107\\10.34546\\-221.7422\\-107\\10.04249\\-217.8359\\-107\\9.296124\\-211.9766\\-107\\8.653626\\-210.0234\\-107\\8.236839\\-208.0703\\-107\\7.868948\\-204.1641\\-107\\7.789386\\-202.2109\\-107\\7.835614\\-198.3047\\-107\\8.006636\\-194.3984\\-107\\8.140042\\-186.5859\\-107\\8.112059\\-184.6328\\-107\\8.197021\\-182.6797\\-107\\8.507097\\-180.7266\\-107\\9.341033\\-176.8203\\-107\\9.812375\\-172.9141\\-107\\10.10742\\-170.9609\\-107\\10.55519\\-169.0078\\-107\\11.12608\\-167.0547\\-107\\12.28956\\-161.1953\\-107\\12.94513\\-159.2422\\-107\\13.98625\\-155.3359\\-107\\16.3762\\-149.4766\\-107\\17.47037\\-147.5234\\-107\\18.27072\\-145.5703\\-107\\19.4556\\-143.6172\\-107\\20.20418\\-141.6641\\-107\\21.31899\\-139.7109\\-107\\22.25494\\-137.7578\\-107\\23.37957\\-135.8047\\-107\\24.34748\\-133.8516\\-107\\25.56529\\-131.8984\\-107\\26.36719\\-130.3076\\-107\\28.32031\\-127.2907\\-107\\30.27344\\-124.5045\\-107\\32.00605\\-122.1328\\-107\\34.17969\\-119.5245\\-107\\36.13281\\-117.3983\\-107\\37.27214\\-116.2734\\-107\\40.03906\\-113.8493\\-107\\41.99219\\-112.2848\\-107\\43.94531\\-110.9865\\-107\\45.89844\\-109.8965\\-107\\49.80469\\-108.032\\-107\\53.53104\\-106.5078\\-107\\55.66406\\-105.793\\-107\\57.61719\\-105.3668\\-107\\61.52344\\-104.3673\\-107\\65.42969\\-103.6942\\-107\\69.33594\\-103.2559\\-107\\71.28906\\-102.9128\\-107\\75.19531\\-102.4759\\-107\\79.10156\\-102.2731\\-107\\86.91406\\-102.5352\\-107\\90.82031\\-103.0077\\-107\\96.67969\\-103.594\\-107\\98.63281\\-104.0086\\-107\\102.1396\\-104.5547\\-107\\104.4922\\-105.1458\\-107\\106.4453\\-105.9015\\-107\\108.3984\\-106.3323\\-107\\110.3516\\-107.2031\\-107\\112.3047\\-107.7394\\-107\\114.2578\\-108.6922\\-107\\116.2109\\-109.3536\\-107\\118.1641\\-110.2081\\-107\\120.1172\\-111.3281\\-107\\122.0703\\-112.5771\\-107\\124.0234\\-113.648\\-107\\127.9833\\-116.2734\\-107\\129.8828\\-117.7508\\-107\\133.7891\\-121.25\\-107\\135.7422\\-123.1014\\-107\\138.5079\\-126.0391\\-107\\140.4973\\-127.9922\\-107\\142.2203\\-129.9453\\-107\\143.7927\\-131.8984\\-107\\145.208\\-133.8516\\-107\\148.3652\\-137.7578\\-107\\149.7857\\-139.7109\\-107\\151.3672\\-142.0528\\-107\\153.8928\\-145.5703\\-107\\155.2734\\-147.8336\\-107\\157.2266\\-151.4409\\-107\\158.2204\\-153.3828\\-107\\159.3791\\-155.3359\\-107\\160.2019\\-157.2891\\-107\\161.1328\\-159.2574\\-107\\161.908\\-161.1953\\-107\\162.3182\\-163.1484\\-107\\163.7198\\-167.0547\\-107\\164.6369\\-170.9609\\-107\\165.3539\\-172.9141\\-107\\165.7638\\-174.8672\\-107\\166.3925\\-178.7734\\-107\\167.1143\\-182.6797\\-107\\167.5408\\-186.5859\\-107\\167.8416\\-192.4453\\-107\\167.9397\\-196.3516\\-107\\167.9804\\-200.2578\\-107\\167.9002\\-208.0703\\-107\\167.6099\\-213.9297\\-107\\167.1678\\-217.8359\\-107\\166.425\\-221.7422\\-107\\165.7953\\-225.6484\\-107\\165.4161\\-227.6016\\-107\\164.655\\-229.5547\\-107\\164.1452\\-231.5078\\-107\\163.7389\\-233.4609\\-107\\162.9697\\-235.4141\\-107\\162.3277\\-237.3672\\-107\\161.8863\\-239.3203\\-107\\161.1328\\-241.1423\\-107\\159.3436\\-245.1797\\-107\\158.2135\\-247.1328\\-107\\156.1886\\-251.0391\\-107\\154.0064\\-254.9453\\-107\\151.0808\\-258.8516\\-107\\149.9256\\-260.8047\\-107\\148.431\\-262.7578\\-107\\141.9096\\-270.5703\\-107\\139.6484\\-273.0508\\-107\\137.6953\\-275.085\\-107\\134.4286\\-278.3828\\-107\\131.8359\\-280.7872\\-107\\129.8828\\-282.4263\\-107\\124.0234\\-287.135\\-107\\122.0703\\-288.6051\\-107\\120.1172\\-289.5482\\-107\\119.4196\\-290.1016\\-107\\116.2109\\-292.2417\\-107\\114.2578\\-293.2754\\-107\\112.3047\\-294.4631\\-107\\110.3516\\-295.1542\\-107\\108.3984\\-296.0906\\-107\\106.4453\\-296.8539\\-107\\104.4922\\-297.5039\\-107\\102.5391\\-298.4823\\-107\\100.5859\\-299.0338\\-107\\96.67969\\-300.3916\\-107\\94.72656\\-300.7708\\-107\\90.82031\\-301.3619\\-107\\86.91406\\-302.1735\\-107\\84.96094\\-302.4012\\-107\\81.05469\\-302.6466\\-107\\77.14844\\-302.7469\\-107\\73.24219\\-302.7411\\-107\\69.33594\\-302.6028\\-107\\67.38281\\-302.4693\\-107\\65.42969\\-302.2369\\-107"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "199"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "71"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-302.0754\\-105\\-88.86719\\-301.5403\\-105\\-94.72656\\-300.4176\\-105\\-98.63281\\-298.994\\-105\\-100.5859\\-298.4194\\-105\\-102.5391\\-297.3674\\-105\\-104.4922\\-296.7615\\-105\\-106.4453\\-295.7731\\-105\\-108.3984\\-295.0203\\-105\\-110.3516\\-294.1528\\-105\\-112.3047\\-293.0152\\-105\\-114.2578\\-291.7002\\-105\\-116.2109\\-290.6146\\-105\\-118.1641\\-289.2384\\-105\\-122.0703\\-286.6435\\-105\\-124.7665\\-284.2422\\-105\\-127.077\\-282.2891\\-105\\-129.8828\\-279.7247\\-105\\-131.1604\\-278.3828\\-105\\-133.1962\\-276.4297\\-105\\-135.7422\\-273.8586\\-105\\-136.7843\\-272.5234\\-105\\-140.3359\\-268.6172\\-105\\-141.9149\\-266.6641\\-105\\-143.0226\\-264.7109\\-105\\-146.0113\\-260.8047\\-105\\-149.7129\\-254.9453\\-105\\-150.6011\\-252.9922\\-105\\-151.9138\\-251.0391\\-105\\-152.8611\\-249.0859\\-105\\-154.0456\\-247.1328\\-105\\-154.8357\\-245.1797\\-105\\-155.9095\\-243.2266\\-105\\-156.4822\\-241.2734\\-105\\-157.5346\\-239.3203\\-105\\-158.2707\\-237.3672\\-105\\-159.2744\\-235.4141\\-105\\-160.8163\\-231.5078\\-105\\-161.744\\-229.5547\\-105\\-162.7302\\-225.6484\\-105\\-163.6224\\-223.6953\\-105\\-164.6295\\-219.7891\\-105\\-165.4455\\-217.8359\\-105\\-166.3319\\-213.9297\\-105\\-167.3891\\-210.0234\\-105\\-167.6839\\-208.0703\\-105\\-168.219\\-202.2109\\-105\\-168.4669\\-196.3516\\-105\\-168.4538\\-192.4453\\-105\\-168.1974\\-188.5391\\-105\\-167.8401\\-184.6328\\-105\\-167.601\\-182.6797\\-105\\-167.2585\\-180.7266\\-105\\-166.6268\\-178.7734\\-105\\-165.7508\\-174.8672\\-105\\-165.1345\\-172.9141\\-105\\-164.3415\\-170.9609\\-105\\-163.7978\\-169.0078\\-105\\-162.2011\\-165.1016\\-105\\-161.6175\\-163.1484\\-105\\-160.623\\-161.1953\\-105\\-159.8238\\-159.2422\\-105\\-158.8058\\-157.2891\\-105\\-157.2266\\-153.8847\\-105\\-154.064\\-147.5234\\-105\\-152.5787\\-145.5703\\-105\\-151.6978\\-143.6172\\-105\\-150.1728\\-141.6641\\-105\\-148.8058\\-139.7109\\-105\\-147.6474\\-137.7578\\-105\\-144.2683\\-133.8516\\-105\\-143.5547\\-132.7471\\-105\\-141.1379\\-129.9453\\-105\\-139.6484\\-128.3597\\-105\\-133.3537\\-122.1328\\-105\\-130.9799\\-120.1797\\-105\\-129.8828\\-119.4201\\-105\\-125.8938\\-116.2734\\-105\\-124.0234\\-115.3461\\-105\\-122.0703\\-113.8953\\-105\\-120.1172\\-113.1214\\-105\\-118.1641\\-111.8038\\-105\\-116.2109\\-110.9537\\-105\\-114.2578\\-109.8193\\-105\\-112.3047\\-108.8686\\-105\\-108.3984\\-107.4504\\-105\\-106.4453\\-107.0304\\-105\\-104.4922\\-106.0953\\-105\\-100.5859\\-105.5381\\-105\\-98.63281\\-104.457\\-105\\-96.67969\\-104.0778\\-105\\-92.77344\\-103.7147\\-105\\-90.82031\\-103.1583\\-105\\-84.96094\\-102.5756\\-105\\-83.00781\\-102.5251\\-105\\-79.10156\\-102.276\\-105\\-75.19531\\-102.0995\\-105\\-73.24219\\-101.6083\\-105\\-71.28906\\-101.5213\\-105\\-67.38281\\-101.6507\\-105\\-63.47656\\-102.2007\\-105\\-59.57031\\-102.3998\\-105\\-57.61719\\-102.558\\-105\\-53.71094\\-103.0853\\-105\\-51.75781\\-103.6229\\-105\\-47.85156\\-104.2981\\-105\\-45.89844\\-105.1286\\-105\\-43.94531\\-105.6989\\-105\\-41.99219\\-106.0821\\-105\\-40.03906\\-107.1672\\-105\\-38.08594\\-107.9041\\-105\\-36.13281\\-108.7699\\-105\\-33.37191\\-110.4141\\-105\\-32.22656\\-111.2424\\-105\\-30.27344\\-112.9188\\-105\\-28.32031\\-113.9846\\-105\\-26.05509\\-116.2734\\-105\\-24.92474\\-118.2266\\-105\\-23.18464\\-120.1797\\-105\\-21.56929\\-122.1328\\-105\\-19.54713\\-126.0391\\-105\\-18.55469\\-128.1143\\-105\\-17.83258\\-129.9453\\-105\\-17.30725\\-131.8984\\-105\\-16.11328\\-133.8516\\-105\\-14.84721\\-137.7578\\-105\\-14.32554\\-139.7109\\-105\\-13.48692\\-143.6172\\-105\\-13.21051\\-145.5703\\-105\\-12.60653\\-147.5234\\-105\\-12.11958\\-149.4766\\-105\\-11.45924\\-153.3828\\-105\\-10.44339\\-157.2891\\-105\\-9.790193\\-161.1953\\-105\\-9.036959\\-167.0547\\-105\\-8.797269\\-170.9609\\-105\\-8.526142\\-172.9141\\-105\\-8.388601\\-174.8672\\-105\\-7.961107\\-178.7734\\-105\\-7.680334\\-180.7266\\-105\\-7.261619\\-184.6328\\-105\\-7.038288\\-188.5391\\-105\\-7.138412\\-190.4922\\-105\\-7.336528\\-192.4453\\-105\\-7.728577\\-194.3984\\-105\\-7.863514\\-196.3516\\-105\\-7.990057\\-200.2578\\-105\\-7.867908\\-202.2109\\-105\\-7.548167\\-204.1641\\-105\\-7.120768\\-208.0703\\-105\\-6.826073\\-210.0234\\-105\\-6.335347\\-211.9766\\-105\\-6.177819\\-215.8828\\-105\\-6.59375\\-219.7891\\-105\\-7.116037\\-221.7422\\-105\\-8.181841\\-227.6016\\-105\\-8.662333\\-229.5547\\-105\\-9.438119\\-231.5078\\-105\\-9.702958\\-233.4609\\-105\\-10.10388\\-235.4141\\-105\\-11.40671\\-239.3203\\-105\\-12.16554\\-243.2266\\-105\\-12.98757\\-245.1797\\-105\\-13.5263\\-247.1328\\-105\\-13.95597\\-249.0859\\-105\\-15.58494\\-252.9922\\-105\\-16.2976\\-254.9453\\-105\\-17.38601\\-256.8984\\-105\\-18.03024\\-258.8516\\-105\\-19.15322\\-260.8047\\-105\\-19.72779\\-262.7578\\-105\\-20.75549\\-264.7109\\-105\\-21.6306\\-266.6641\\-105\\-22.85807\\-268.6172\\-105\\-23.79209\\-270.5703\\-105\\-25.11503\\-272.5234\\-105\\-25.88232\\-274.4766\\-105\\-27.19116\\-276.4297\\-105\\-28.32031\\-278.3314\\-105\\-29.67113\\-280.3359\\-105\\-32.73216\\-284.2422\\-105\\-34.04897\\-286.1953\\-105\\-36.13281\\-288.5194\\-105\\-38.08594\\-290.375\\-105\\-40.03906\\-292.3307\\-105\\-42.2247\\-294.0078\\-105\\-45.89844\\-296.5306\\-105\\-47.85156\\-297.4852\\-105\\-49.80469\\-298.6878\\-105\\-53.71094\\-300.532\\-105\\-57.61719\\-301.4901\\-105\\-59.57031\\-302.1529\\-105\\-61.52344\\-302.51\\-105\\-63.47656\\-302.7299\\-105\\-69.33594\\-303.0607\\-105\\-71.28906\\-303.1128\\-105\\-75.19531\\-303.0607\\-105\\-81.05469\\-302.7804\\-105\\-84.96094\\-302.4012\\-105"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "183"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "72"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "61.52344\\-301.3752\\-105\\57.61719\\-300.6678\\-105\\55.66406\\-300.1281\\-105\\53.71094\\-299.199\\-105\\51.75781\\-298.4977\\-105\\49.80469\\-297.3414\\-105\\47.85156\\-296.5942\\-105\\45.89844\\-295.4116\\-105\\43.94531\\-294.5326\\-105\\41.99219\\-293.1379\\-105\\40.03906\\-291.5273\\-105\\36.13281\\-288.6817\\-105\\33.49474\\-286.1953\\-105\\30.05725\\-282.2891\\-105\\28.32031\\-280.1299\\-105\\25.72692\\-276.4297\\-105\\24.75155\\-274.4766\\-105\\24.41406\\-274.0876\\-105\\22.46094\\-270.8958\\-105\\22.19273\\-270.5703\\-105\\21.28791\\-268.6172\\-105\\20.11317\\-266.6641\\-105\\18.84694\\-262.7578\\-105\\17.88027\\-260.8047\\-105\\17.41201\\-258.8516\\-105\\15.93206\\-254.9453\\-105\\15.01225\\-251.0391\\-105\\14.33831\\-249.0859\\-105\\13.7006\\-245.1797\\-105\\13.21572\\-241.2734\\-105\\12.39102\\-237.3672\\-105\\11.82548\\-233.4609\\-105\\11.48961\\-229.5547\\-105\\11.21779\\-227.6016\\-105\\10.71948\\-225.6484\\-105\\10.32366\\-223.6953\\-105\\10.06171\\-221.7422\\-105\\9.718372\\-217.8359\\-105\\9.41155\\-215.8828\\-105\\8.42712\\-211.9766\\-105\\8.032822\\-210.0234\\-105\\7.213246\\-204.1641\\-105\\6.810462\\-202.2109\\-105\\6.587795\\-200.2578\\-105\\6.534755\\-196.3516\\-105\\6.962217\\-194.3984\\-105\\7.012729\\-188.5391\\-105\\7.11158\\-184.6328\\-105\\7.475011\\-180.7266\\-105\\8.506945\\-174.8672\\-105\\9.706439\\-169.0078\\-105\\10.31195\\-165.1016\\-105\\10.91028\\-163.1484\\-105\\11.76314\\-159.2422\\-105\\12.08044\\-157.2891\\-105\\13.39814\\-153.3828\\-105\\13.94024\\-151.4297\\-105\\14.74699\\-149.4766\\-105\\16.25279\\-145.5703\\-105\\17.53065\\-143.6172\\-105\\18.11975\\-141.6641\\-105\\19.2627\\-139.7109\\-105\\19.84156\\-137.7578\\-105\\20.90424\\-135.8047\\-105\\22.46094\\-132.3664\\-105\\23.99327\\-129.9453\\-105\\25.37448\\-127.9922\\-105\\26.35634\\-126.0391\\-105\\27.47881\\-124.0859\\-105\\28.90413\\-122.1328\\-105\\30.65321\\-120.1797\\-105\\31.87779\\-118.2266\\-105\\33.5323\\-116.2734\\-105\\35.40039\\-114.3203\\-105\\38.08594\\-111.8628\\-105\\40.03906\\-110.2374\\-105\\43.94531\\-107.7722\\-105\\47.85156\\-105.8932\\-105\\50.37435\\-104.5547\\-105\\55.66406\\-102.8539\\-105\\61.52344\\-101.5197\\-105\\65.42969\\-101.113\\-105\\67.38281\\-100.4755\\-105\\69.33594\\-100.2259\\-105\\71.28906\\-100.0766\\-105\\75.19531\\-99.92843\\-105\\81.05469\\-99.92416\\-105\\86.91406\\-100.1602\\-105\\88.86719\\-100.3886\\-105\\90.82031\\-100.9769\\-105\\96.67969\\-101.4748\\-105\\98.63281\\-101.9727\\-105\\102.5391\\-102.6309\\-105\\104.4922\\-103.1558\\-105\\106.4453\\-103.8562\\-105\\108.3984\\-104.3331\\-105\\110.3516\\-105.2391\\-105\\112.3047\\-105.83\\-105\\114.2578\\-106.9725\\-105\\116.2109\\-107.4766\\-105\\120.1172\\-109.2015\\-105\\122.0703\\-110.551\\-105\\125.105\\-112.3672\\-105\\127.9297\\-114.386\\-105\\129.8828\\-115.5516\\-105\\133.7891\\-119.2557\\-105\\134.8246\\-120.1797\\-105\\137.6953\\-123.0861\\-105\\139.6484\\-125.1989\\-105\\140.5481\\-126.0391\\-105\\143.5547\\-129.5409\\-105\\146.7056\\-133.8516\\-105\\148.2407\\-135.8047\\-105\\149.6761\\-137.7578\\-105\\150.871\\-139.7109\\-105\\151.3672\\-140.3201\\-105\\153.7095\\-143.6172\\-105\\154.7815\\-145.5703\\-105\\155.9855\\-147.5234\\-105\\156.8788\\-149.4766\\-105\\158.0043\\-151.4297\\-105\\159.9963\\-155.3359\\-105\\160.7436\\-157.2891\\-105\\161.7161\\-159.2422\\-105\\162.6912\\-163.1484\\-105\\163.5164\\-165.1016\\-105\\164.3937\\-169.0078\\-105\\165.6042\\-172.9141\\-105\\166.5315\\-178.7734\\-105\\167.2054\\-182.6797\\-105\\167.5936\\-186.5859\\-105\\167.8467\\-192.4453\\-105\\167.9513\\-196.3516\\-105\\167.9746\\-202.2109\\-105\\167.8763\\-208.0703\\-105\\167.7217\\-211.9766\\-105\\167.5936\\-213.9297\\-105\\167.155\\-217.8359\\-105\\166.4086\\-221.7422\\-105\\165.7914\\-225.6484\\-105\\165.3856\\-227.6016\\-105\\164.6343\\-229.5547\\-105\\163.7198\\-233.4609\\-105\\162.9257\\-235.4141\\-105\\162.3035\\-237.3672\\-105\\161.8743\\-239.3203\\-105\\159.2751\\-245.1797\\-105\\157.1075\\-249.0859\\-105\\156.164\\-251.0391\\-105\\154.9408\\-252.9922\\-105\\153.9566\\-254.9453\\-105\\151.0036\\-258.8516\\-105\\149.8748\\-260.8047\\-105\\148.372\\-262.7578\\-105\\145.0544\\-266.6641\\-105\\141.8142\\-270.5703\\-105\\140.0428\\-272.5234\\-105\\135.7422\\-276.7968\\-105\\134.2209\\-278.3828\\-105\\131.8359\\-280.671\\-105\\125.9766\\-285.4081\\-105\\124.0234\\-287.049\\-105\\122.0703\\-288.4814\\-105\\120.1172\\-289.436\\-105\\118.1641\\-290.8497\\-105\\116.2109\\-292.0623\\-105\\112.8027\\-294.0078\\-105\\112.3047\\-294.3586\\-105\\110.3516\\-295.1003\\-105\\106.4453\\-296.8154\\-105\\104.4922\\-297.4289\\-105\\102.5391\\-298.4194\\-105\\100.5859\\-298.9716\\-105\\96.67969\\-300.3401\\-105\\94.72656\\-300.7147\\-105\\90.82031\\-301.2964\\-105\\86.91406\\-302.088\\-105\\83.00781\\-302.5179\\-105\\81.05469\\-302.6214\\-105\\77.14844\\-302.7239\\-105\\73.24219\\-302.7178\\-105\\69.33594\\-302.5838\\-105\\65.42969\\-302.2123\\-105"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "203"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "73"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-301.9211\\-103\\-88.86719\\-301.4095\\-103\\-92.77344\\-300.7309\\-103\\-94.72656\\-300.3156\\-103\\-96.67969\\-299.5329\\-103\\-100.5859\\-298.281\\-103\\-102.5391\\-297.238\\-103\\-104.4922\\-296.6416\\-103\\-106.4453\\-295.6026\\-103\\-108.3984\\-294.9245\\-103\\-110.2661\\-294.0078\\-103\\-112.3047\\-292.8848\\-103\\-114.2578\\-291.5115\\-103\\-116.2109\\-290.4466\\-103\\-120.1172\\-287.7137\\-103\\-122.0703\\-286.4196\\-103\\-127.9297\\-281.3851\\-103\\-129.8828\\-279.4904\\-103\\-130.9079\\-278.3828\\-103\\-134.9542\\-274.4766\\-103\\-137.6953\\-271.3725\\-103\\-140.1961\\-268.6172\\-103\\-141.7488\\-266.6641\\-103\\-142.941\\-264.7109\\-103\\-145.8748\\-260.8047\\-103\\-148.4066\\-256.8984\\-103\\-149.6201\\-254.9453\\-103\\-150.5228\\-252.9922\\-103\\-151.8331\\-251.0391\\-103\\-152.7882\\-249.0859\\-103\\-153.9964\\-247.1328\\-103\\-154.7819\\-245.1797\\-103\\-155.8568\\-243.2266\\-103\\-156.4584\\-241.2734\\-103\\-157.4758\\-239.3203\\-103\\-158.2395\\-237.3672\\-103\\-159.2319\\-235.4141\\-103\\-160.0753\\-233.4609\\-103\\-160.8028\\-231.5078\\-103\\-161.7314\\-229.5547\\-103\\-162.7162\\-225.6484\\-103\\-163.6258\\-223.6953\\-103\\-164.6497\\-219.7891\\-103\\-165.4738\\-217.8359\\-103\\-166.3468\\-213.9297\\-103\\-167.4241\\-210.0234\\-103\\-167.7029\\-208.0703\\-103\\-168.2424\\-202.2109\\-103\\-168.5452\\-196.3516\\-103\\-168.5808\\-192.4453\\-103\\-168.2068\\-186.5859\\-103\\-167.8351\\-182.6797\\-103\\-167.5842\\-180.7266\\-103\\-166.6243\\-176.8203\\-103\\-165.7855\\-172.9141\\-103\\-165.1898\\-170.9609\\-103\\-164.4153\\-169.0078\\-103\\-163.8754\\-167.0547\\-103\\-163.1859\\-165.1016\\-103\\-162.3913\\-163.1484\\-103\\-161.8137\\-161.1953\\-103\\-160.8826\\-159.2422\\-103\\-159.2751\\-155.3359\\-103\\-158.2227\\-153.3828\\-103\\-156.4152\\-149.4766\\-103\\-155.4606\\-147.5234\\-103\\-153.3441\\-143.6172\\-103\\-152.07\\-141.6641\\-103\\-150.665\\-139.7109\\-103\\-149.4774\\-137.7578\\-103\\-148.0223\\-135.8047\\-103\\-146.4608\\-133.8516\\-103\\-145.5078\\-132.5239\\-103\\-143.5547\\-130.181\\-103\\-141.6016\\-127.9808\\-103\\-135.8716\\-122.1328\\-103\\-133.6844\\-120.1797\\-103\\-129.8828\\-116.9278\\-103\\-125.9766\\-114.0984\\-103\\-122.0703\\-111.7189\\-103\\-120.1172\\-110.9232\\-103\\-118.1641\\-109.5084\\-103\\-116.2109\\-108.5525\\-103\\-114.2578\\-107.349\\-103\\-112.3047\\-106.7715\\-103\\-108.3984\\-105.3545\\-103\\-106.4453\\-104.9364\\-103\\-104.4922\\-103.9621\\-103\\-102.5391\\-103.5858\\-103\\-100.5859\\-103.3396\\-103\\-98.63281\\-102.3313\\-103\\-96.67969\\-102.0048\\-103\\-92.77344\\-101.6776\\-103\\-90.82031\\-101.1675\\-103\\-84.96094\\-100.7182\\-103\\-79.10156\\-100.3885\\-103\\-75.19531\\-100.2832\\-103\\-73.24219\\-100.0221\\-103\\-69.33594\\-99.66373\\-103\\-67.38281\\-99.97746\\-103\\-63.47656\\-100.3229\\-103\\-61.52344\\-100.375\\-103\\-57.61719\\-100.6052\\-103\\-53.71094\\-101.0591\\-103\\-49.80469\\-101.8808\\-103\\-47.85156\\-102.1592\\-103\\-43.94531\\-103.4828\\-103\\-41.99219\\-103.9228\\-103\\-40.03906\\-105.03\\-103\\-38.08594\\-105.5934\\-103\\-36.13281\\-106.6003\\-103\\-34.17969\\-107.4844\\-103\\-32.22656\\-108.7832\\-103\\-30.27344\\-109.8496\\-103\\-27.25395\\-112.3672\\-103\\-24.41406\\-115.2636\\-103\\-22.03747\\-118.2266\\-103\\-21.0177\\-120.1797\\-103\\-19.77539\\-122.1328\\-103\\-17.68578\\-126.0391\\-103\\-16.8793\\-127.9922\\-103\\-15.8729\\-129.9453\\-103\\-15.28168\\-131.8984\\-103\\-14.31754\\-133.8516\\-103\\-13.9248\\-135.8047\\-103\\-13.29566\\-137.7578\\-103\\-12.50155\\-141.6641\\-103\\-11.8656\\-143.6172\\-103\\-11.29482\\-147.5234\\-103\\-10.64601\\-149.4766\\-103\\-10.18732\\-151.4297\\-103\\-9.651916\\-155.3359\\-103\\-8.375\\-161.1953\\-103\\-8.08071\\-163.1484\\-103\\-7.903181\\-165.1016\\-103\\-7.58886\\-167.0547\\-103\\-7.252038\\-170.9609\\-103\\-6.835938\\-174.7858\\-103\\-6.51826\\-176.8203\\-103\\-5.489309\\-180.7266\\-103\\-5.151099\\-182.6797\\-103\\-4.185268\\-184.6328\\-103\\-3.021816\\-186.5859\\-103\\-2.08554\\-188.5391\\-103\\-2.166193\\-190.4922\\-103\\-3.714425\\-192.4453\\-103\\-4.882813\\-193.7036\\-103\\-5.312965\\-194.3984\\-103\\-5.581943\\-196.3516\\-103\\-5.683813\\-198.3047\\-103\\-6.081883\\-200.2578\\-103\\-5.334342\\-204.1641\\-103\\-4.507212\\-206.1172\\-103\\-4.236356\\-208.0703\\-103\\-4.167424\\-211.9766\\-103\\-4.9467\\-213.9297\\-103\\-4.664522\\-215.8828\\-103\\-5.18645\\-217.8359\\-103\\-5.190738\\-219.7891\\-103\\-5.389519\\-221.7422\\-103\\-6.835938\\-225.7705\\-103\\-8.959221\\-233.4609\\-103\\-9.582876\\-235.4141\\-103\\-10.07045\\-237.3672\\-103\\-11.47461\\-241.2734\\-103\\-11.9015\\-243.2266\\-103\\-12.52254\\-245.1797\\-103\\-13.33165\\-247.1328\\-103\\-13.80718\\-249.0859\\-103\\-14.44172\\-251.0391\\-103\\-15.3902\\-252.9922\\-103\\-16.07354\\-254.9453\\-103\\-17.2083\\-256.8984\\-103\\-17.8833\\-258.8516\\-103\\-18.98193\\-260.8047\\-103\\-19.63373\\-262.7578\\-103\\-21.52661\\-266.6641\\-103\\-22.68191\\-268.6172\\-103\\-23.6942\\-270.5703\\-103\\-25.00498\\-272.5234\\-103\\-25.79864\\-274.4766\\-103\\-27.09173\\-276.4297\\-103\\-28.2219\\-278.3828\\-103\\-29.61658\\-280.3359\\-103\\-32.69392\\-284.2422\\-103\\-34.01947\\-286.1953\\-103\\-36.13281\\-288.5194\\-103\\-40.03906\\-292.2773\\-103\\-42.29621\\-294.0078\\-103\\-45.89844\\-296.4652\\-103\\-47.85156\\-297.3785\\-103\\-49.80469\\-298.617\\-103\\-51.75781\\-299.4701\\-103\\-53.71094\\-300.4434\\-103\\-57.61719\\-301.3931\\-103\\-59.57031\\-302.0216\\-103\\-61.52344\\-302.4315\\-103\\-63.47656\\-302.6648\\-103\\-67.38281\\-302.9048\\-103\\-71.28906\\-303.0424\\-103\\-75.19531\\-302.9933\\-103\\-81.05469\\-302.7239\\-103\\-84.96094\\-302.3152\\-103"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "193"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "74"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "65.42969\\-302.1874\\-103\\61.52344\\-301.355\\-103\\57.61719\\-300.645\\-103\\55.66406\\-300.0926\\-103\\53.71094\\-299.1514\\-103\\51.75781\\-298.4612\\-103\\49.80469\\-297.2926\\-103\\47.85156\\-296.5824\\-103\\45.89844\\-295.3924\\-103\\43.94531\\-294.5326\\-103\\41.99219\\-293.1429\\-103\\40.03906\\-291.5664\\-103\\36.13281\\-288.6716\\-103\\33.48599\\-286.1953\\-103\\30.05559\\-282.2891\\-103\\28.32031\\-280.1461\\-103\\25.73568\\-276.4297\\-103\\24.72744\\-274.4766\\-103\\24.41406\\-274.1114\\-103\\22.46094\\-270.865\\-103\\22.2168\\-270.5703\\-103\\21.2693\\-268.6172\\-103\\20.0998\\-266.6641\\-103\\18.80787\\-262.7578\\-103\\17.85942\\-260.8047\\-103\\17.37767\\-258.8516\\-103\\15.90545\\-254.9453\\-103\\15.4862\\-252.9922\\-103\\14.93217\\-251.0391\\-103\\14.27185\\-249.0859\\-103\\13.65444\\-245.1797\\-103\\13.11671\\-241.2734\\-103\\12.18776\\-237.3672\\-103\\11.2069\\-229.5547\\-103\\10.20479\\-225.6484\\-103\\9.609375\\-221.7422\\-103\\8.932898\\-217.8359\\-103\\7.445371\\-211.9766\\-103\\6.835938\\-209.1515\\-103\\5.46875\\-206.1172\\-103\\5.190642\\-204.1641\\-103\\4.913015\\-200.2578\\-103\\4.171489\\-198.3047\\-103\\4.161488\\-194.3984\\-103\\3.776042\\-190.4922\\-103\\3.802083\\-188.5391\\-103\\4.310826\\-186.5859\\-103\\5.230243\\-184.6328\\-103\\5.73088\\-180.7266\\-103\\7.012729\\-176.8203\\-103\\7.750605\\-172.9141\\-103\\8.042689\\-170.9609\\-103\\9.137835\\-165.1016\\-103\\9.601727\\-163.1484\\-103\\10.10895\\-159.2422\\-103\\10.55582\\-157.2891\\-103\\11.29002\\-155.3359\\-103\\11.67111\\-153.3828\\-103\\13.04155\\-149.4766\\-103\\13.58981\\-147.5234\\-103\\14.30622\\-145.5703\\-103\\15.3021\\-143.6172\\-103\\15.87314\\-141.6641\\-103\\16.81298\\-139.7109\\-103\\17.59541\\-137.7578\\-103\\18.68693\\-135.8047\\-103\\19.40679\\-133.8516\\-103\\20.28761\\-131.8984\\-103\\23.10902\\-127.9922\\-103\\23.61591\\-126.0391\\-103\\24.41406\\-124.7215\\-103\\26.16955\\-122.1328\\-103\\27.29885\\-120.1797\\-103\\28.94737\\-118.2266\\-103\\30.05255\\-116.2734\\-103\\31.96539\\-114.3203\\-103\\33.73579\\-112.3672\\-103\\36.13281\\-110.1275\\-103\\38.08594\\-108.8841\\-103\\40.03906\\-107.31\\-103\\41.99219\\-106.3339\\-103\\44.64518\\-104.5547\\-103\\45.89844\\-103.8175\\-103\\48.39124\\-102.6016\\-103\\53.71094\\-100.813\\-103\\55.66406\\-100.3191\\-103\\57.61719\\-99.65215\\-103\\63.47656\\-98.75018\\-103\\65.42969\\-98.098\\-103\\67.38281\\-97.93377\\-103\\71.28906\\-97.72717\\-103\\75.19531\\-97.6531\\-103\\79.10156\\-97.66272\\-103\\84.96094\\-97.87754\\-103\\86.91406\\-98.047\\-103\\88.86719\\-98.31647\\-103\\90.82031\\-98.92564\\-103\\96.67969\\-99.55698\\-103\\98.63281\\-100.1025\\-103\\102.5391\\-100.8788\\-103\\104.4922\\-101.5258\\-103\\108.3984\\-102.4731\\-103\\110.3516\\-103.3438\\-103\\112.3047\\-103.9214\\-103\\114.2578\\-105.047\\-103\\116.2109\\-105.7678\\-103\\120.1172\\-107.5712\\-103\\124.0234\\-109.6668\\-103\\127.9297\\-112.4725\\-103\\129.8828\\-113.6552\\-103\\131.8359\\-115.3049\\-103\\134.8714\\-118.2266\\-103\\137.6953\\-121.0667\\-103\\140.6101\\-124.0859\\-103\\142.305\\-126.0391\\-103\\143.8469\\-127.9922\\-103\\144.9677\\-129.9453\\-103\\146.6545\\-131.8984\\-103\\148.1596\\-133.8516\\-103\\150.694\\-137.7578\\-103\\151.3672\\-138.6377\\-103\\153.4575\\-141.6641\\-103\\154.541\\-143.6172\\-103\\155.7368\\-145.5703\\-103\\156.6007\\-147.5234\\-103\\157.7378\\-149.4766\\-103\\158.6003\\-151.4297\\-103\\159.7717\\-153.3828\\-103\\160.5086\\-155.3359\\-103\\161.4272\\-157.2891\\-103\\162.0544\\-159.2422\\-103\\162.4796\\-161.1953\\-103\\163.2287\\-163.1484\\-103\\163.8239\\-165.1016\\-103\\164.6786\\-169.0078\\-103\\165.3539\\-170.9609\\-103\\165.7676\\-172.9141\\-103\\166.6365\\-178.7734\\-103\\167.0298\\-180.7266\\-103\\167.4651\\-184.6328\\-103\\167.6255\\-186.5859\\-103\\167.7838\\-190.4922\\-103\\167.9513\\-196.3516\\-103\\167.9803\\-202.2109\\-103\\167.9345\\-206.1172\\-103\\167.7175\\-211.9766\\-103\\167.3991\\-215.8828\\-103\\167.1408\\-217.8359\\-103\\166.3847\\-221.7422\\-103\\165.7914\\-225.6484\\-103\\165.3752\\-227.6016\\-103\\164.6142\\-229.5547\\-103\\163.6963\\-233.4609\\-103\\162.8981\\-235.4141\\-103\\162.2891\\-237.3672\\-103\\161.8546\\-239.3203\\-103\\160.108\\-243.2266\\-103\\159.1797\\-245.1685\\-103\\157.2266\\-248.811\\-103\\156.1272\\-251.0391\\-103\\154.9037\\-252.9922\\-103\\153.9011\\-254.9453\\-103\\150.9586\\-258.8516\\-103\\149.8145\\-260.8047\\-103\\148.3253\\-262.7578\\-103\\144.9758\\-266.6641\\-103\\141.7092\\-270.5703\\-103\\139.9474\\-272.5234\\-103\\135.7422\\-276.7241\\-103\\134.1309\\-278.3828\\-103\\131.8359\\-280.5419\\-103\\127.9297\\-283.6973\\-103\\124.0234\\-286.9308\\-103\\122.0703\\-288.3714\\-103\\120.1172\\-289.3407\\-103\\118.1641\\-290.7467\\-103\\116.2109\\-291.8549\\-103\\114.2578\\-293.0909\\-103\\112.3047\\-294.2191\\-103\\108.3984\\-295.8292\\-103\\106.4453\\-296.7693\\-103\\104.4922\\-297.3586\\-103\\102.5391\\-298.3579\\-103\\98.63281\\-299.5329\\-103\\96.67969\\-300.2667\\-103\\94.72656\\-300.6518\\-103\\88.86719\\-301.5546\\-103\\86.91406\\-301.9931\\-103\\83.00781\\-302.4693\\-103\\79.10156\\-302.6712\\-103\\75.19531\\-302.7127\\-103\\71.28906\\-302.6466\\-103\\67.38281\\-302.4275\\-103"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002352"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "376"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "75"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.96094\\-302.2123\\-101\\-88.86719\\-301.3094\\-101\\-92.77344\\-300.6405\\-101\\-94.72656\\-300.197\\-101\\-96.67969\\-299.3972\\-101\\-98.63281\\-298.794\\-101\\-100.5859\\-298.0884\\-101\\-102.5391\\-297.1251\\-101\\-104.4922\\-296.511\\-101\\-106.4453\\-295.4336\\-101\\-108.3984\\-294.8388\\-101\\-110.3516\\-293.7218\\-101\\-112.3047\\-292.7338\\-101\\-114.2578\\-291.3408\\-101\\-116.2109\\-290.2117\\-101\\-118.1641\\-288.9792\\-101\\-121.9918\\-286.1953\\-101\\-125.9766\\-282.9245\\-101\\-127.9297\\-281.2461\\-101\\-130.8023\\-278.3828\\-101\\-134.833\\-274.4766\\-101\\-137.6953\\-271.214\\-101\\-140.0432\\-268.6172\\-101\\-141.6016\\-266.5566\\-101\\-142.832\\-264.7109\\-101\\-145.7195\\-260.8047\\-101\\-148.3255\\-256.8984\\-101\\-149.4867\\-254.9453\\-101\\-150.4417\\-252.9922\\-101\\-151.7241\\-251.0391\\-101\\-152.7039\\-249.0859\\-101\\-153.9217\\-247.1328\\-101\\-154.7127\\-245.1797\\-101\\-155.792\\-243.2266\\-101\\-156.4088\\-241.2734\\-101\\-157.4022\\-239.3203\\-101\\-158.2083\\-237.3672\\-101\\-160.0438\\-233.4609\\-101\\-160.7831\\-231.5078\\-101\\-161.6955\\-229.5547\\-101\\-162.705\\-225.6484\\-101\\-163.6258\\-223.6953\\-101\\-164.6343\\-219.7891\\-101\\-165.4948\\-217.8359\\-101\\-166.3543\\-213.9297\\-101\\-167.4366\\-210.0234\\-101\\-167.7072\\-208.0703\\-101\\-168.1125\\-204.1641\\-101\\-168.6292\\-196.3516\\-101\\-168.7177\\-192.4453\\-101\\-168.521\\-188.5391\\-101\\-168.0398\\-182.6797\\-101\\-167.567\\-178.7734\\-101\\-167.1959\\-176.8203\\-101\\-166.2414\\-172.9141\\-101\\-165.8149\\-170.9609\\-101\\-165.2883\\-169.0078\\-101\\-164.5117\\-167.0547\\-101\\-163.4206\\-163.1484\\-101\\-162.5665\\-161.1953\\-101\\-162.0002\\-159.2422\\-101\\-161.3139\\-157.2891\\-101\\-160.402\\-155.3359\\-101\\-159.7215\\-153.3828\\-101\\-158.6451\\-151.4297\\-101\\-157.2266\\-148.3985\\-101\\-156.7082\\-147.5234\\-101\\-155.8651\\-145.5703\\-101\\-154.6631\\-143.6172\\-101\\-153.7972\\-141.6641\\-101\\-152.3438\\-139.7109\\-101\\-151.3672\\-137.9787\\-101\\-147.4609\\-132.4361\\-101\\-145.5469\\-129.9453\\-101\\-143.7484\\-127.9922\\-101\\-142.2019\\-126.0391\\-101\\-140.4987\\-124.0859\\-101\\-137.6953\\-121.3249\\-101\\-133.7891\\-118.0056\\-101\\-131.8359\\-116.2473\\-101\\-129.3945\\-114.3203\\-101\\-127.9297\\-113.4744\\-101\\-125.9766\\-111.9586\\-101\\-123.6719\\-110.4141\\-101\\-122.0703\\-109.4901\\-101\\-120.1172\\-108.1354\\-101\\-118.1641\\-107.3662\\-101\\-116.2109\\-106.1897\\-101\\-114.2578\\-105.2454\\-101\\-112.3047\\-104.5311\\-101\\-108.3984\\-103.2129\\-101\\-106.4453\\-102.6472\\-101\\-104.4922\\-101.892\\-101\\-100.5859\\-101.3116\\-101\\-98.63281\\-100.3843\\-101\\-96.67969\\-100.1035\\-101\\-92.77344\\-99.75053\\-101\\-90.82031\\-99.29078\\-101\\-84.96094\\-98.65656\\-101\\-81.05469\\-98.4037\\-101\\-77.14844\\-98.27319\\-101\\-73.24219\\-98.22534\\-101\\-69.33594\\-97.89497\\-101\\-67.38281\\-98.18917\\-101\\-63.47656\\-98.24412\\-101\\-59.57031\\-98.39224\\-101\\-55.66406\\-98.74272\\-101\\-51.75781\\-99.35429\\-101\\-49.80469\\-99.83351\\-101\\-47.85156\\-100.1035\\-101\\-45.89844\\-100.4746\\-101\\-43.94531\\-101.3072\\-101\\-41.99219\\-101.8125\\-101\\-40.03906\\-102.4217\\-101\\-35.59352\\-104.5547\\-101\\-32.22656\\-106.2694\\-101\\-30.27344\\-107.5797\\-101\\-28.32031\\-109.0418\\-101\\-26.36719\\-110.3477\\-101\\-24.36756\\-112.3672\\-101\\-22.46094\\-114.6683\\-101\\-19.98853\\-118.2266\\-101\\-19.09543\\-120.1797\\-101\\-16.60156\\-124.4905\\-101\\-15.09734\\-127.9922\\-101\\-14.0144\\-129.9453\\-101\\-13.47229\\-131.8984\\-101\\-12.68682\\-133.8516\\-101\\-12.14014\\-135.8047\\-101\\-11.80474\\-137.7578\\-101\\-10.73431\\-141.6641\\-101\\-9.832974\\-145.5703\\-101\\-9.104331\\-149.4766\\-101\\-8.154654\\-153.3828\\-101\\-7.604721\\-157.2891\\-101\\-7.270813\\-159.2422\\-101\\-6.677351\\-161.1953\\-101\\-6.155095\\-165.1016\\-101\\-5.253544\\-169.0078\\-101\\-4.74462\\-170.9609\\-101\\-3.323228\\-174.8672\\-101\\-2.929688\\-175.6205\\-101\\-1.905488\\-176.8203\\-101\\-0.9765625\\-178.1805\\-101\\0.9765625\\-179.9534\\-101\\2.929688\\-179.6472\\-101\\3.193204\\-178.7734\\-101\\4.882813\\-175.7461\\-101\\5.850656\\-172.9141\\-101\\6.739161\\-169.0078\\-101\\7.401316\\-167.0547\\-101\\8.180589\\-159.2422\\-101\\8.732567\\-157.2891\\-101\\9.635925\\-153.3828\\-101\\10.74219\\-149.9291\\-101\\11.65911\\-147.5234\\-101\\12.69531\\-144.3556\\-101\\13.75325\\-141.6641\\-101\\14.43977\\-139.7109\\-101\\15.92043\\-135.8047\\-101\\16.89265\\-133.8516\\-101\\18.55469\\-130.148\\-101\\19.72472\\-127.9922\\-101\\20.8849\\-126.0391\\-101\\22.46094\\-123.1908\\-101\\24.30664\\-120.1797\\-101\\25.74728\\-118.2266\\-101\\26.36719\\-117.1782\\-101\\28.32031\\-114.4153\\-101\\30.27344\\-112.436\\-101\\32.22656\\-110.3421\\-101\\34.17969\\-108.451\\-101\\38.08594\\-105.5001\\-101\\42.58149\\-102.6016\\-101\\46.36452\\-100.6484\\-101\\47.85156\\-100.149\\-101\\51.67863\\-98.69531\\-101\\55.66406\\-97.56319\\-101\\59.57031\\-96.73425\\-101\\61.52344\\-96.18538\\-101\\63.47656\\-95.8877\\-101\\65.42969\\-95.70959\\-101\\69.33594\\-95.50147\\-101\\75.19531\\-95.41685\\-101\\79.10156\\-95.4931\\-101\\83.00781\\-95.69108\\-101\\86.91406\\-95.98017\\-101\\88.86719\\-96.25391\\-101\\90.82031\\-96.64453\\-101\\96.67969\\-97.64642\\-101\\100.5859\\-98.5558\\-101\\104.4922\\-99.74017\\-101\\106.4453\\-100.1927\\-101\\110.3516\\-101.5965\\-101\\112.3047\\-102.1443\\-101\\114.2578\\-103.101\\-101\\116.2109\\-103.8601\\-101\\118.1641\\-104.9209\\-101\\121.3881\\-106.5078\\-101\\124.0234\\-107.8975\\-101\\129.8828\\-111.856\\-101\\131.8359\\-113.4547\\-101\\133.7891\\-115.1892\\-101\\138.6868\\-120.1797\\-101\\140.6776\\-122.1328\\-101\\142.3432\\-124.0859\\-101\\143.8117\\-126.0391\\-101\\145.046\\-127.9922\\-101\\146.6563\\-129.9453\\-101\\148.1095\\-131.8984\\-101\\149.2844\\-133.8516\\-101\\151.3672\\-136.9057\\-101\\153.3203\\-139.9018\\-101\\155.5405\\-143.6172\\-101\\156.3849\\-145.5703\\-101\\157.4989\\-147.5234\\-101\\158.3547\\-149.4766\\-101\\159.4892\\-151.4297\\-101\\160.2915\\-153.3828\\-101\\161.2037\\-155.3359\\-101\\161.9178\\-157.2891\\-101\\162.3504\\-159.2422\\-101\\163.6431\\-163.1484\\-101\\164.475\\-167.0547\\-101\\165.0912\\-169.0078\\-101\\165.5915\\-170.9609\\-101\\166.7258\\-178.7734\\-101\\167.1143\\-180.7266\\-101\\167.4988\\-184.6328\\-101\\167.7974\\-190.4922\\-101\\167.94\\-196.3516\\-101\\167.9745\\-202.2109\\-101\\167.9116\\-206.1172\\-101\\167.6946\\-211.9766\\-101\\167.3765\\-215.8828\\-101\\167.1007\\-217.8359\\-101\\166.3656\\-221.7422\\-101\\165.7752\\-225.6484\\-101\\165.3539\\-227.6016\\-101\\164.5917\\-229.5547\\-101\\163.6882\\-233.4609\\-101\\162.8714\\-235.4141\\-101\\162.2721\\-237.3672\\-101\\161.8347\\-239.3203\\-101\\160.8766\\-241.2734\\-101\\160.0758\\-243.2266\\-101\\158.1158\\-247.1328\\-101\\156.9255\\-249.0859\\-101\\156.0903\\-251.0391\\-101\\154.8677\\-252.9922\\-101\\153.8536\\-254.9453\\-101\\151.3672\\-258.2672\\-101\\150.8721\\-258.8516\\-101\\149.742\\-260.8047\\-101\\148.2703\\-262.7578\\-101\\144.8852\\-266.6641\\-101\\143.5547\\-268.3024\\-101\\139.7992\\-272.5234\\-101\\137.6953\\-274.7068\\-101\\133.9919\\-278.3828\\-101\\131.8359\\-280.377\\-101\\127.2028\\-284.2422\\-101\\124.0234\\-286.8272\\-101\\122.0703\\-288.1735\\-101\\120.1172\\-289.2471\\-101\\118.1641\\-290.6303\\-101\\116.2109\\-291.6573\\-101\\114.2578\\-293.0044\\-101\\112.3047\\-294.077\\-101\\110.3516\\-294.9601\\-101\\108.3984\\-295.7298\\-101\\106.4453\\-296.7074\\-101\\104.4922\\-297.2728\\-101\\102.5391\\-298.281\\-101\\98.63281\\-299.4504\\-101\\96.67969\\-300.1883\\-101\\94.72656\\-300.5954\\-101\\88.86719\\-301.4809\\-101\\84.96094\\-302.2232\\-101\\83.00781\\-302.4315\\-101\\79.10156\\-302.6533\\-101\\75.19531\\-302.6953\\-101\\71.28906\\-302.6214\\-101\\67.38281\\-302.4101\\-101\\65.42969\\-302.1529\\-101\\61.52344\\-301.3288\\-101\\57.61719\\-300.6153\\-101\\55.66406\\-300.0299\\-101\\53.71094\\-299.1089\\-101\\51.75781\\-298.4202\\-101\\49.80469\\-297.2572\\-101\\47.85156\\-296.5577\\-101\\45.89844\\-295.3697\\-101\\43.94531\\-294.5193\\-101\\40.53852\\-292.0547\\-101\\38.08594\\-290.0765\\-101\\36.13281\\-288.6716\\-101\\33.47736\\-286.1953\\-101\\30.06904\\-282.2891\\-101\\28.32031\\-280.114\\-101\\25.74455\\-276.4297\\-101\\24.72979\\-274.4766\\-101\\24.41406\\-274.1146\\-101\\22.46094\\-270.8765\\-101\\22.20285\\-270.5703\\-101\\21.25047\\-268.6172\\-101\\20.06271\\-266.6641\\-101\\18.80787\\-262.7578\\-101\\17.84589\\-260.8047\\-101\\17.3379\\-258.8516\\-101\\16.53498\\-256.8984\\-101\\15.8754\\-254.9453\\-101\\15.42664\\-252.9922\\-101\\14.20681\\-249.0859\\-101\\13.29385\\-243.2266\\-101\\12.90825\\-241.2734\\-101\\12.31971\\-239.3203\\-101\\11.9687\\-237.3672\\-101\\11.42919\\-233.4609\\-101\\11.07681\\-231.5078\\-101\\10.45653\\-229.5547\\-101\\9.033203\\-223.6953\\-101\\7.536301\\-219.7891\\-101\\6.835938\\-217.2635\\-101\\4.882813\\-214.6892\\-101\\0.9765625\\-214.5924\\-101\\-0.9765625\\-216.9186\\-101\\-2.390392\\-219.7891\\-101\\-2.835181\\-221.7422\\-101\\-3.801243\\-223.6953\\-101\\-5.110981\\-225.6484\\-101\\-6.050728\\-227.6016\\-101\\-6.64719\\-229.5547\\-101\\-7.480197\\-231.5078\\-101\\-8.602695\\-235.4141\\-101\\-9.461938\\-237.3672\\-101\\-10.04861\\-239.3203\\-101\\-10.96644\\-241.2734\\-101\\-11.62946\\-243.2266\\-101\\-12.12198\\-245.1797\\-101\\-13.05362\\-247.1328\\-101\\-14.1825\\-251.0391\\-101\\-15.13672\\-252.9922\\-101\\-15.86383\\-254.9453\\-101\\-16.97266\\-256.8984\\-101\\-17.73314\\-258.8516\\-101\\-18.74394\\-260.8047\\-101\\-20.29647\\-264.7109\\-101\\-20.50781\\-265.0029\\-101\\-22.42338\\-268.6172\\-101\\-24.41406\\-271.9567\\-101\\-24.84883\\-272.5234\\-101\\-25.70106\\-274.4766\\-101\\-26.98084\\-276.4297\\-101\\-28.09934\\-278.3828\\-101\\-30.27344\\-281.29\\-101\\-32.65512\\-284.2422\\-101\\-33.99043\\-286.1953\\-101\\-36.13281\\-288.5316\\-101\\-37.84795\\-290.1016\\-101\\-40.03906\\-292.2355\\-101\\-42.36638\\-294.0078\\-101\\-45.89844\\-296.403\\-101\\-47.85156\\-297.2976\\-101\\-49.80469\\-298.5596\\-101\\-51.75781\\-299.3665\\-101\\-53.71094\\-300.3647\\-101\\-57.61719\\-301.3026\\-101\\-59.57031\\-301.8754\\-101\\-61.52344\\-302.3381\\-101\\-63.47656\\-302.6097\\-101\\-65.42969\\-302.7527\\-101\\-69.33594\\-302.9264\\-101\\-73.24219\\-302.9651\\-101\\-77.14844\\-302.8659\\-101\\-81.05469\\-302.6712\\-101"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002351"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "368"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "76"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.96094\\-302.0754\\-99\\-86.91406\\-301.5816\\-99\\-92.77344\\-300.5433\\-99\\-94.72656\\-300.0416\\-99\\-96.67969\\-299.2675\\-99\\-98.63281\\-298.6776\\-99\\-102.5391\\-297.013\\-99\\-104.4922\\-296.369\\-99\\-106.4453\\-295.3036\\-99\\-108.3984\\-294.7027\\-99\\-110.3516\\-293.5322\\-99\\-112.3047\\-292.5824\\-99\\-114.2578\\-291.1885\\-99\\-116.2109\\-289.9204\\-99\\-118.1641\\-288.819\\-99\\-121.6781\\-286.1953\\-99\\-124.0234\\-284.2337\\-99\\-125.9766\\-282.7303\\-99\\-127.9297\\-281.0835\\-99\\-131.8359\\-277.1989\\-99\\-134.6713\\-274.4766\\-99\\-136.4435\\-272.5234\\-99\\-137.6953\\-271.007\\-99\\-139.8226\\-268.6172\\-99\\-141.6016\\-266.2863\\-99\\-145.5305\\-260.8047\\-99\\-148.2156\\-256.8984\\-99\\-149.4141\\-254.8027\\-99\\-150.3348\\-252.9922\\-99\\-151.5739\\-251.0391\\-99\\-152.5937\\-249.0859\\-99\\-153.8269\\-247.1328\\-99\\-154.6408\\-245.1797\\-99\\-155.7098\\-243.2266\\-99\\-156.3553\\-241.2734\\-99\\-157.3079\\-239.3203\\-99\\-159.0539\\-235.4141\\-99\\-160.01\\-233.4609\\-99\\-160.7592\\-231.5078\\-99\\-161.6918\\-229.5547\\-99\\-162.7276\\-225.6484\\-99\\-163.6224\\-223.6953\\-99\\-164.6446\\-219.7891\\-99\\-165.4921\\-217.8359\\-99\\-166.3697\\-213.9297\\-99\\-166.9922\\-211.9014\\-99\\-167.4557\\-210.0234\\-99\\-167.7188\\-208.0703\\-99\\-168.1414\\-204.1641\\-99\\-168.6796\\-196.3516\\-99\\-168.8446\\-192.4453\\-99\\-168.7308\\-188.5391\\-99\\-168.2222\\-182.6797\\-99\\-167.588\\-176.8203\\-99\\-167.2604\\-174.8672\\-99\\-166.2326\\-170.9609\\-99\\-165.3818\\-167.0547\\-99\\-164.5909\\-165.1016\\-99\\-164.0079\\-163.1484\\-99\\-163.5678\\-161.1953\\-99\\-162.7234\\-159.2422\\-99\\-161.6104\\-155.3359\\-99\\-160.6996\\-153.3828\\-99\\-159.9371\\-151.4297\\-99\\-158.9476\\-149.4766\\-99\\-158.0627\\-147.5234\\-99\\-156.8879\\-145.5703\\-99\\-156.0398\\-143.6172\\-99\\-154.9235\\-141.6641\\-99\\-153.9738\\-139.7109\\-99\\-151.5193\\-135.8047\\-99\\-149.4141\\-132.7529\\-99\\-147.4609\\-130.0475\\-99\\-145.5078\\-127.822\\-99\\-143.5547\\-125.3262\\-99\\-140.7035\\-122.1328\\-99\\-136.586\\-118.2266\\-99\\-135.7422\\-117.6188\\-99\\-133.7891\\-115.8961\\-99\\-131.8359\\-114.2747\\-99\\-129.4118\\-112.3672\\-99\\-127.9297\\-111.5648\\-99\\-125.9766\\-109.8755\\-99\\-122.0703\\-107.5781\\-99\\-120.1172\\-106.3411\\-99\\-118.1641\\-105.4321\\-99\\-116.2109\\-104.088\\-99\\-112.3047\\-102.5756\\-99\\-108.3984\\-101.3392\\-99\\-106.4453\\-100.9163\\-99\\-104.4922\\-100.0206\\-99\\-100.5859\\-99.51024\\-99\\-98.63281\\-98.53939\\-99\\-96.67969\\-98.21772\\-99\\-92.77344\\-97.84082\\-99\\-90.82031\\-97.40137\\-99\\-86.91406\\-96.94825\\-99\\-79.10156\\-96.39182\\-99\\-75.19531\\-96.2643\\-99\\-67.38281\\-96.21013\\-99\\-61.52344\\-96.34433\\-99\\-57.61719\\-96.61805\\-99\\-53.71094\\-97.12103\\-99\\-51.75781\\-97.4375\\-99\\-49.80469\\-97.90507\\-99\\-47.85156\\-98.1861\\-99\\-45.89844\\-98.6058\\-99\\-43.94531\\-99.46629\\-99\\-41.99219\\-99.88061\\-99\\-40.03906\\-100.5534\\-99\\-36.13281\\-102.2458\\-99\\-32.22656\\-104.1837\\-99\\-30.27344\\-105.59\\-99\\-28.32031\\-107.1293\\-99\\-26.36719\\-108.1886\\-99\\-24.41406\\-109.956\\-99\\-22.10023\\-112.3672\\-99\\-20.50781\\-114.6743\\-99\\-19.50836\\-116.2734\\-99\\-18.16559\\-118.2266\\-99\\-17.29485\\-120.1797\\-99\\-16.05603\\-122.1328\\-99\\-14.09149\\-126.0391\\-99\\-13.38959\\-127.9922\\-99\\-12.38251\\-129.9453\\-99\\-11.29056\\-133.8516\\-99\\-10.47516\\-135.8047\\-99\\-10.06662\\-137.7578\\-99\\-8.578125\\-143.6172\\-99\\-7.805102\\-147.5234\\-99\\-7.169596\\-151.4297\\-99\\-6.111145\\-155.3359\\-99\\-5.668308\\-159.2422\\-99\\-4.817082\\-161.1953\\-99\\-3.806785\\-165.1016\\-99\\-2.929688\\-166.4548\\-99\\-0.7152289\\-169.0078\\-99\\0.9765625\\-170.8278\\-99\\2.929688\\-170.5514\\-99\\3.727214\\-169.0078\\-99\\4.882813\\-167.3167\\-99\\5.748402\\-165.1016\\-99\\6.305563\\-159.2422\\-99\\6.917318\\-157.2891\\-99\\7.657877\\-153.3828\\-99\\8.780185\\-149.4766\\-99\\10.2761\\-145.5703\\-99\\10.8631\\-143.6172\\-99\\11.81075\\-141.6641\\-99\\12.46197\\-139.7109\\-99\\13.25684\\-137.7578\\-99\\13.73184\\-135.8047\\-99\\14.5678\\-133.8516\\-99\\15.25427\\-131.8984\\-99\\16.60156\\-129.0307\\-99\\17.23069\\-127.9922\\-99\\18.16239\\-126.0391\\-99\\20.61743\\-122.1328\\-99\\22.46094\\-118.6908\\-99\\24.22931\\-116.2734\\-99\\25.87426\\-114.3203\\-99\\27.29181\\-112.3672\\-99\\28.96743\\-110.4141\\-99\\30.92041\\-108.4609\\-99\\34.17969\\-105.9202\\-99\\36.13281\\-104.0743\\-99\\38.13645\\-102.6016\\-99\\40.03906\\-101.625\\-99\\41.99219\\-100.1736\\-99\\43.94531\\-99.49198\\-99\\45.89844\\-98.24866\\-99\\47.85156\\-97.91023\\-99\\49.80469\\-96.64713\\-99\\51.75781\\-96.26806\\-99\\53.71094\\-95.7408\\-99\\55.66406\\-95.33838\\-99\\59.57031\\-94.78042\\-99\\61.52344\\-94.06065\\-99\\63.47656\\-93.79712\\-99\\67.38281\\-93.62755\\-99\\71.28906\\-93.56285\\-99\\77.14844\\-93.5899\\-99\\83.00781\\-93.84232\\-99\\84.96094\\-93.97526\\-99\\88.86719\\-94.47168\\-99\\90.82031\\-94.97055\\-99\\94.72656\\-95.50418\\-99\\98.63281\\-96.33588\\-99\\100.27\\-96.74219\\-99\\102.5391\\-97.49065\\-99\\106.4453\\-98.55811\\-99\\108.3984\\-99.57422\\-99\\110.3516\\-99.94392\\-99\\112.3047\\-100.8455\\-99\\114.2578\\-101.4823\\-99\\116.2109\\-102.2314\\-99\\118.1641\\-103.2958\\-99\\120.1172\\-104.2002\\-99\\124.0234\\-106.6073\\-99\\125.9766\\-107.6666\\-99\\129.8828\\-110.2802\\-99\\131.8359\\-111.8018\\-99\\134.7399\\-114.3203\\-99\\135.7422\\-115.2886\\-99\\139.6484\\-119.3853\\-99\\140.4932\\-120.1797\\-99\\142.2043\\-122.1328\\-99\\143.7188\\-124.0859\\-99\\144.8785\\-126.0391\\-99\\146.5203\\-127.9922\\-99\\147.9943\\-129.9453\\-99\\149.1019\\-131.8984\\-99\\151.7537\\-135.8047\\-99\\155.2819\\-141.6641\\-99\\156.1996\\-143.6172\\-99\\159.1797\\-149.5376\\-99\\160.0701\\-151.4297\\-99\\160.8528\\-153.3828\\-99\\161.7647\\-155.3359\\-99\\162.6912\\-159.2422\\-99\\163.4753\\-161.1953\\-99\\164.2832\\-165.1016\\-99\\164.7551\\-167.0547\\-99\\165.4061\\-169.0078\\-99\\165.7535\\-170.9609\\-99\\166.814\\-178.7734\\-99\\167.1666\\-180.7266\\-99\\167.5254\\-184.6328\\-99\\167.7838\\-190.4922\\-99\\167.9171\\-196.3516\\-99\\167.9171\\-204.1641\\-99\\167.8382\\-208.0703\\-99\\167.649\\-211.9766\\-99\\167.3327\\-215.8828\\-99\\167.0444\\-217.8359\\-99\\166.3319\\-221.7422\\-99\\165.746\\-225.6484\\-99\\165.3209\\-227.6016\\-99\\164.5631\\-229.5547\\-99\\163.6684\\-233.4609\\-99\\162.8309\\-235.4141\\-99\\162.2582\\-237.3672\\-99\\161.7942\\-239.3203\\-99\\160.8508\\-241.2734\\-99\\160.0602\\-243.2266\\-99\\159.0157\\-245.1797\\-99\\158.0733\\-247.1328\\-99\\156.8657\\-249.0859\\-99\\156.0535\\-251.0391\\-99\\154.8055\\-252.9922\\-99\\153.8246\\-254.9453\\-99\\150.797\\-258.8516\\-99\\149.677\\-260.8047\\-99\\148.1753\\-262.7578\\-99\\144.7879\\-266.6641\\-99\\143.5547\\-268.1671\\-99\\139.6484\\-272.5152\\-99\\135.8022\\-276.4297\\-99\\131.8359\\-280.1605\\-99\\129.3861\\-282.2891\\-99\\124.5476\\-286.1953\\-99\\124.0234\\-286.687\\-99\\121.804\\-288.1484\\-99\\120.1172\\-289.1605\\-99\\118.1641\\-290.4474\\-99\\116.2109\\-291.5066\\-99\\114.2578\\-292.8649\\-99\\110.3516\\-294.8928\\-99\\108.3984\\-295.5773\\-99\\106.4453\\-296.614\\-99\\104.4922\\-297.1859\\-99\\102.5391\\-298.1732\\-99\\98.63281\\-299.3641\\-99\\96.67969\\-300.1046\\-99\\94.72656\\-300.5354\\-99\\88.86719\\-301.4095\\-99\\84.96094\\-302.1505\\-99\\83.00781\\-302.3793\\-99\\79.10156\\-302.6283\\-99\\75.19531\\-302.6776\\-99\\71.28906\\-302.6028\\-99\\67.38281\\-302.37\\-99\\65.42969\\-302.1003\\-99\\61.52344\\-301.293\\-99\\57.61719\\-300.5738\\-99\\55.66406\\-299.9198\\-99\\53.71094\\-299.0658\\-99\\51.75781\\-298.3718\\-99\\49.80469\\-297.2305\\-99\\47.85156\\-296.5286\\-99\\45.89844\\-295.3514\\-99\\43.94531\\-294.5061\\-99\\40.54954\\-292.0547\\-99\\38.08594\\-290.0598\\-99\\36.13281\\-288.6679\\-99\\33.49946\\-286.1953\\-99\\30.11196\\-282.2891\\-99\\28.32031\\-280.0482\\-99\\25.75766\\-276.4297\\-99\\24.73958\\-274.4766\\-99\\24.41406\\-274.101\\-99\\22.46094\\-270.9496\\-99\\22.1444\\-270.5703\\-99\\21.23141\\-268.6172\\-99\\20.03933\\-266.6641\\-99\\18.74249\\-262.7578\\-99\\17.81581\\-260.8047\\-99\\17.32086\\-258.8516\\-99\\16.50682\\-256.8984\\-99\\15.84145\\-254.9453\\-99\\15.37162\\-252.9922\\-99\\14.21089\\-249.0859\\-99\\13.79395\\-247.1328\\-99\\13.13308\\-243.2266\\-99\\12.52254\\-241.2734\\-99\\12.03824\\-239.3203\\-99\\11.37514\\-235.4141\\-99\\9.586907\\-229.5547\\-99\\8.789063\\-227.6473\\-99\\6.835938\\-224.6418\\-99\\4.882813\\-223.8739\\-99\\3.662109\\-223.6953\\-99\\0.9765625\\-222.9803\\-99\\-0.9765625\\-224.8136\\-99\\-3.301056\\-227.6016\\-99\\-4.882813\\-229.4129\\-99\\-6.078125\\-231.5078\\-99\\-7.06999\\-233.4609\\-99\\-7.64057\\-235.4141\\-99\\-8.351046\\-237.3672\\-99\\-9.362399\\-239.3203\\-99\\-10.13545\\-241.2734\\-99\\-11.1617\\-243.2266\\-99\\-12.54921\\-247.1328\\-99\\-13.50066\\-249.0859\\-99\\-13.9552\\-251.0391\\-99\\-15.66723\\-254.9453\\-99\\-17.57813\\-258.8516\\-99\\-18.40049\\-260.8047\\-99\\-19.39944\\-262.7578\\-99\\-20.07004\\-264.7109\\-99\\-21.24885\\-266.6641\\-99\\-22.17721\\-268.6172\\-99\\-24.62861\\-272.5234\\-99\\-25.58717\\-274.4766\\-99\\-26.84508\\-276.4297\\-99\\-27.9903\\-278.3828\\-99\\-30.27344\\-281.3791\\-99\\-32.64408\\-284.2422\\-99\\-33.9635\\-286.1953\\-99\\-36.13281\\-288.5165\\-99\\-37.87904\\-290.1016\\-99\\-40.03906\\-292.1795\\-99\\-42.44911\\-294.0078\\-99\\-45.89844\\-296.3117\\-99\\-47.85156\\-297.2293\\-99\\-49.80469\\-298.4746\\-99\\-51.75781\\-299.2415\\-99\\-53.71094\\-300.2487\\-99\\-55.66406\\-300.7986\\-99\\-57.61719\\-301.2006\\-99\\-61.52344\\-302.2123\\-99\\-63.47656\\-302.51\\-99\\-67.38281\\-302.7969\\-99\\-71.28906\\-302.8977\\-99\\-77.14844\\-302.8237\\-99\\-81.05469\\-302.6028\\-99\\-83.00781\\-302.3921\\-99"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002350"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "368"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "77"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.96094\\-301.9211\\-97\\-86.91406\\-301.4584\\-97\\-92.77344\\-300.4614\\-97\\-94.72656\\-299.8748\\-97\\-96.67969\\-299.1375\\-97\\-98.63281\\-298.5742\\-97\\-100.5859\\-297.6578\\-97\\-104.4922\\-296.1739\\-97\\-106.4453\\-295.2131\\-97\\-108.3984\\-294.5575\\-97\\-110.3516\\-293.3588\\-97\\-112.3047\\-292.3847\\-97\\-112.7035\\-292.0547\\-97\\-115.7398\\-290.1016\\-97\\-116.2109\\-289.7007\\-97\\-118.1641\\-288.6505\\-97\\-121.3823\\-286.1953\\-97\\-124.0234\\-283.9269\\-97\\-125.9766\\-282.5\\-97\\-127.9297\\-280.891\\-97\\-131.8359\\-277.017\\-97\\-134.4925\\-274.4766\\-97\\-136.2855\\-272.5234\\-97\\-137.6953\\-270.7518\\-97\\-139.6484\\-268.5421\\-97\\-141.1331\\-266.6641\\-97\\-144.0131\\-262.7578\\-97\\-147.4609\\-257.7561\\-97\\-148.1141\\-256.8984\\-97\\-149.1491\\-254.9453\\-97\\-152.4905\\-249.0859\\-97\\-153.7325\\-247.1328\\-97\\-154.5638\\-245.1797\\-97\\-155.6253\\-243.2266\\-97\\-156.3023\\-241.2734\\-97\\-158.9988\\-235.4141\\-97\\-159.9725\\-233.4609\\-97\\-160.7254\\-231.5078\\-97\\-161.6732\\-229.5547\\-97\\-162.7276\\-225.6484\\-97\\-163.5957\\-223.6953\\-97\\-164.6446\\-219.7891\\-97\\-165.4921\\-217.8359\\-97\\-166.3506\\-213.9297\\-97\\-167.4681\\-210.0234\\-97\\-168.1605\\-204.1641\\-97\\-168.8446\\-194.3984\\-97\\-168.9211\\-192.4453\\-97\\-168.9372\\-188.5391\\-97\\-168.703\\-186.5859\\-97\\-168.3772\\-182.6797\\-97\\-167.8217\\-176.8203\\-97\\-167.2604\\-172.9141\\-97\\-166.2188\\-169.0078\\-97\\-165.8815\\-167.0547\\-97\\-165.3602\\-165.1016\\-97\\-164.6282\\-163.1484\\-97\\-163.6306\\-159.2422\\-97\\-162.8147\\-157.2891\\-97\\-161.7077\\-153.3828\\-97\\-159.1879\\-147.5234\\-97\\-158.1633\\-145.5703\\-97\\-157.0031\\-143.6172\\-97\\-156.2072\\-141.6641\\-97\\-155.0729\\-139.7109\\-97\\-154.1174\\-137.7578\\-97\\-153.3203\\-136.3857\\-97\\-151.6113\\-133.8516\\-97\\-150.1968\\-131.8984\\-97\\-148.9049\\-129.9453\\-97\\-147.4609\\-128.0471\\-97\\-145.5078\\-125.8839\\-97\\-143.5547\\-123.4032\\-97\\-141.6016\\-121.127\\-97\\-140.6907\\-120.1797\\-97\\-137.6953\\-117.3299\\-97\\-136.5095\\-116.2734\\-97\\-134.0451\\-114.3203\\-97\\-131.7574\\-112.3672\\-97\\-129.2503\\-110.4141\\-97\\-125.9766\\-108.1066\\-97\\-122.0703\\-105.7734\\-97\\-120.1172\\-105.0109\\-97\\-118.1641\\-103.4886\\-97\\-116.2109\\-102.2874\\-97\\-114.2578\\-101.8159\\-97\\-112.3047\\-100.9131\\-97\\-110.3516\\-100.1686\\-97\\-108.3984\\-99.57503\\-97\\-106.4453\\-99.14538\\-97\\-104.4922\\-98.28531\\-97\\-102.5391\\-97.85091\\-97\\-100.5859\\-97.57619\\-97\\-98.63281\\-96.86665\\-97\\-96.67969\\-96.39703\\-97\\-92.77344\\-95.97697\\-97\\-90.82031\\-95.87177\\-97\\-86.91406\\-95.25611\\-97\\-81.05469\\-94.79893\\-97\\-73.24219\\-94.52808\\-97\\-67.38281\\-94.49693\\-97\\-61.52344\\-94.6571\\-97\\-59.57031\\-94.77994\\-97\\-55.66406\\-95.13218\\-97\\-53.71094\\-95.54688\\-97\\-51.75781\\-95.85762\\-97\\-49.80469\\-96.05415\\-97\\-47.85156\\-96.41386\\-97\\-45.89844\\-97.11461\\-97\\-43.94531\\-97.65412\\-97\\-41.99219\\-98.0625\\-97\\-40.03906\\-99.10783\\-97\\-38.08594\\-99.58841\\-97\\-34.17969\\-101.3312\\-97\\-32.22656\\-102.2789\\-97\\-30.27344\\-103.5541\\-97\\-28.32031\\-105.1423\\-97\\-26.36719\\-106.2329\\-97\\-24.41406\\-107.9358\\-97\\-21.90645\\-110.4141\\-97\\-20.25035\\-112.3672\\-97\\-19.14228\\-114.3203\\-97\\-17.74729\\-116.2734\\-97\\-16.49397\\-118.2266\\-97\\-15.49797\\-120.1797\\-97\\-14.37062\\-122.1328\\-97\\-13.52692\\-124.0859\\-97\\-12.49015\\-126.0391\\-97\\-11.71875\\-127.9922\\-97\\-11.15042\\-129.9453\\-97\\-10.04791\\-131.8984\\-97\\-9.687783\\-133.8516\\-97\\-8.416645\\-137.7578\\-97\\-7.654747\\-141.6641\\-97\\-7.106236\\-143.6172\\-97\\-6.268168\\-147.5234\\-97\\-5.793724\\-149.4766\\-97\\-5.187988\\-153.3828\\-97\\-4.192947\\-155.3359\\-97\\-3.804348\\-157.2891\\-97\\-3.135851\\-159.2422\\-97\\-2.060309\\-161.1953\\-97\\-0.9765625\\-162.8721\\-97\\0.9765625\\-164.051\\-97\\2.929688\\-162.6938\\-97\\3.854305\\-161.1953\\-97\\4.099528\\-159.2422\\-97\\4.951862\\-157.2891\\-97\\5.343967\\-155.3359\\-97\\5.633319\\-153.3828\\-97\\6.826456\\-149.4766\\-97\\8.213141\\-145.5703\\-97\\8.799235\\-143.6172\\-97\\9.726872\\-141.6641\\-97\\10.40649\\-139.7109\\-97\\11.22175\\-137.7578\\-97\\11.62284\\-135.8047\\-97\\12.30277\\-133.8516\\-97\\13.95631\\-129.9453\\-97\\15.81513\\-126.0391\\-97\\17.15829\\-124.0859\\-97\\17.96312\\-122.1328\\-97\\19.32566\\-120.1797\\-97\\20.33841\\-118.2266\\-97\\21.69709\\-116.2734\\-97\\23.30972\\-114.3203\\-97\\24.41406\\-112.5826\\-97\\26.25304\\-110.4141\\-97\\28.32031\\-108.2013\\-97\\30.27344\\-106.3626\\-97\\34.17969\\-102.8957\\-97\\36.13281\\-101.6543\\-97\\38.08594\\-100.275\\-97\\40.03906\\-99.29263\\-97\\41.99219\\-97.92616\\-97\\43.94531\\-97.25663\\-97\\45.89844\\-96.12149\\-97\\47.85156\\-95.26159\\-97\\49.80469\\-94.65216\\-97\\51.75781\\-94.34517\\-97\\53.71094\\-93.67933\\-97\\55.66406\\-93.25849\\-97\\59.57031\\-92.90231\\-97\\61.52344\\-92.16606\\-97\\63.47656\\-91.89752\\-97\\65.42969\\-91.77545\\-97\\69.33594\\-91.66846\\-97\\73.24219\\-91.66261\\-97\\77.14844\\-91.74364\\-97\\83.00781\\-92.06537\\-97\\84.96094\\-92.30264\\-97\\86.91406\\-92.88244\\-97\\92.77344\\-93.60607\\-97\\98.63281\\-94.85295\\-97\\100.5859\\-95.45805\\-97\\104.4922\\-96.38779\\-97\\108.3984\\-97.82646\\-97\\112.3047\\-99.40895\\-97\\114.2578\\-100.0996\\-97\\116.2109\\-101.0762\\-97\\118.1641\\-101.8893\\-97\\122.0703\\-103.9013\\-97\\126.0864\\-106.5078\\-97\\127.9297\\-107.6165\\-97\\129.8828\\-109.0313\\-97\\131.8359\\-110.3238\\-97\\135.7422\\-113.6834\\-97\\137.6953\\-115.6026\\-97\\140.1804\\-118.2266\\-97\\141.8176\\-120.1797\\-97\\143.2264\\-122.1328\\-97\\146.3416\\-126.0391\\-97\\147.7071\\-127.9922\\-97\\153.9418\\-137.7578\\-97\\154.8967\\-139.7109\\-97\\156.0141\\-141.6641\\-97\\156.7524\\-143.6172\\-97\\157.9155\\-145.5703\\-97\\158.7763\\-147.5234\\-97\\159.8522\\-149.4766\\-97\\160.552\\-151.4297\\-97\\161.5192\\-153.3828\\-97\\162.0913\\-155.3359\\-97\\162.4974\\-157.2891\\-97\\163.2136\\-159.2422\\-97\\163.7835\\-161.1953\\-97\\164.5081\\-165.1016\\-97\\165.5932\\-169.0078\\-97\\166.343\\-174.8672\\-97\\167.193\\-180.7266\\-97\\167.5374\\-184.6328\\-97\\167.8431\\-192.4453\\-97\\167.9056\\-200.2578\\-97\\167.8826\\-204.1641\\-97\\167.7217\\-210.0234\\-97\\167.6179\\-211.9766\\-97\\167.2664\\-215.8828\\-97\\166.2735\\-221.7422\\-97\\165.7023\\-225.6484\\-97\\165.2508\\-227.6016\\-97\\164.5267\\-229.5547\\-97\\163.66\\-233.4609\\-97\\162.7915\\-235.4141\\-97\\161.7818\\-239.3203\\-97\\160.8233\\-241.2734\\-97\\160.0483\\-243.2266\\-97\\158.9886\\-245.1797\\-97\\158.0421\\-247.1328\\-97\\156.829\\-249.0859\\-97\\156.0059\\-251.0391\\-97\\154.7619\\-252.9922\\-97\\153.7624\\-254.9453\\-97\\150.7183\\-258.8516\\-97\\149.549\\-260.8047\\-97\\148.096\\-262.7578\\-97\\144.6734\\-266.6641\\-97\\143.5547\\-268.0343\\-97\\141.276\\-270.5703\\-97\\137.6953\\-274.3734\\-97\\135.6471\\-276.4297\\-97\\131.8359\\-279.9841\\-97\\129.2074\\-282.2891\\-97\\124.3035\\-286.1953\\-97\\124.0234\\-286.4839\\-97\\120.1172\\-289.0651\\-97\\116.2109\\-291.3657\\-97\\114.2578\\-292.7585\\-97\\112.3047\\-293.7121\\-97\\110.3516\\-294.8051\\-97\\108.3984\\-295.4727\\-97\\106.4453\\-296.5321\\-97\\104.4922\\-297.1186\\-97\\102.5391\\-298.0226\\-97\\100.5859\\-298.7461\\-97\\98.63281\\-299.2904\\-97\\96.67969\\-299.9893\\-97\\94.72656\\-300.497\\-97\\88.86719\\-301.365\\-97\\84.96094\\-302.1003\\-97\\81.05469\\-302.51\\-97\\77.14844\\-302.6466\\-97\\73.24219\\-302.6351\\-97\\69.33594\\-302.4978\\-97\\65.42969\\-302.0608\\-97\\63.47656\\-301.6206\\-97\\57.61719\\-300.5317\\-97\\51.75781\\-298.3184\\-97\\49.80469\\-297.2075\\-97\\47.85156\\-296.5021\\-97\\45.89844\\-295.3164\\-97\\43.94531\\-294.4622\\-97\\41.99219\\-293.1034\\-97\\38.08594\\-290.0436\\-97\\36.13281\\-288.6577\\-97\\33.5264\\-286.1953\\-97\\30.1875\\-282.2891\\-97\\28.32031\\-279.9989\\-97\\25.76673\\-276.4297\\-97\\24.74201\\-274.4766\\-97\\24.41406\\-274.1042\\-97\\22.46094\\-270.9819\\-97\\22.11981\\-270.5703\\-97\\21.20451\\-268.6172\\-97\\20.00651\\-266.6641\\-97\\18.68541\\-262.7578\\-97\\17.78666\\-260.8047\\-97\\17.28352\\-258.8516\\-97\\16.41456\\-256.8984\\-97\\15.76949\\-254.9453\\-97\\15.28293\\-252.9922\\-97\\14.1129\\-249.0859\\-97\\13.31851\\-245.1797\\-97\\12.12198\\-241.2734\\-97\\11.73598\\-239.3203\\-97\\11.25026\\-237.3672\\-97\\9.8066\\-233.4609\\-97\\8.789063\\-231.4913\\-97\\7.428851\\-229.5547\\-97\\6.835938\\-228.8724\\-97\\4.882813\\-228.3254\\-97\\0.9765625\\-228.3899\\-97\\-0.9765625\\-229.1609\\-97\\-2.929688\\-230.8698\\-97\\-4.882813\\-232.7896\\-97\\-5.375573\\-233.4609\\-97\\-6.187855\\-235.4141\\-97\\-7.397269\\-237.3672\\-97\\-8.260995\\-239.3203\\-97\\-9.433461\\-241.2734\\-97\\-10.30442\\-243.2266\\-97\\-11.41633\\-245.1797\\-97\\-12.0627\\-247.1328\\-97\\-13.07588\\-249.0859\\-97\\-14.4043\\-252.9922\\-97\\-15.43527\\-254.9453\\-97\\-16.2225\\-256.8984\\-97\\-17.38172\\-258.8516\\-97\\-18.07877\\-260.8047\\-97\\-19.20359\\-262.7578\\-97\\-19.85887\\-264.7109\\-97\\-21.03991\\-266.6641\\-97\\-21.93649\\-268.6172\\-97\\-23.27383\\-270.5703\\-97\\-24.31861\\-272.5234\\-97\\-26.36719\\-275.9813\\-97\\-27.86113\\-278.3828\\-97\\-30.27344\\-281.4655\\-97\\-32.62149\\-284.2422\\-97\\-33.94859\\-286.1953\\-97\\-36.13281\\-288.5165\\-97\\-37.92459\\-290.1016\\-97\\-40.03906\\-292.1073\\-97\\-43.94531\\-295.0092\\-97\\-45.89844\\-296.2141\\-97\\-47.85156\\-297.1571\\-97\\-49.80469\\-298.3811\\-97\\-51.75781\\-299.1432\\-97\\-53.71094\\-300.1181\\-97\\-55.66406\\-300.7083\\-97\\-59.57031\\-301.5403\\-97\\-61.52344\\-302.088\\-97\\-63.47656\\-302.4227\\-97\\-65.42969\\-302.6145\\-97\\-69.33594\\-302.7969\\-97\\-73.24219\\-302.8503\\-97\\-77.14844\\-302.7748\\-97\\-81.05469\\-302.53\\-97\\-83.00781\\-302.285\\-97"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002349"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "351"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "78"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-83.00781\\-302.1874\\-95\\-86.91406\\-301.3486\\-95\\-92.77344\\-300.3764\\-95\\-94.72656\\-299.6509\\-95\\-98.63281\\-298.4547\\-95\\-100.5859\\-297.4541\\-95\\-102.5391\\-296.8065\\-95\\-106.4453\\-295.1178\\-95\\-108.3984\\-294.3944\\-95\\-108.9607\\-294.0078\\-95\\-112.3047\\-292.0934\\-95\\-115.4514\\-290.1016\\-95\\-116.2109\\-289.4929\\-95\\-118.1641\\-288.4392\\-95\\-120.1172\\-287.0315\\-95\\-123.4242\\-284.2422\\-95\\-124.0234\\-283.6731\\-95\\-127.9297\\-280.659\\-95\\-132.2091\\-276.4297\\-95\\-133.7891\\-274.9794\\-95\\-136.0627\\-272.5234\\-95\\-137.6043\\-270.5703\\-95\\-139.6484\\-268.2586\\-95\\-142.483\\-264.7109\\-95\\-145.0853\\-260.8047\\-95\\-145.5078\\-260.3124\\-95\\-147.966\\-256.8984\\-95\\-148.9824\\-254.9453\\-95\\-150.1965\\-252.9922\\-95\\-151.1917\\-251.0391\\-95\\-153.6415\\-247.1328\\-95\\-154.4744\\-245.1797\\-95\\-155.5472\\-243.2266\\-95\\-156.2617\\-241.2734\\-95\\-157.1242\\-239.3203\\-95\\-158.0987\\-237.3672\\-95\\-158.9478\\-235.4141\\-95\\-159.9255\\-233.4609\\-95\\-160.6995\\-231.5078\\-95\\-161.6602\\-229.5547\\-95\\-162.705\\-225.6484\\-95\\-163.5773\\-223.6953\\-95\\-164.6015\\-219.7891\\-95\\-165.4644\\-217.8359\\-95\\-166.3392\\-213.9297\\-95\\-167.4463\\-210.0234\\-95\\-167.7376\\-208.0703\\-95\\-168.1507\\-204.1641\\-95\\-168.9056\\-194.3984\\-95\\-169.0162\\-192.4453\\-95\\-169.0461\\-188.5391\\-95\\-168.5561\\-182.6797\\-95\\-168.3262\\-180.7266\\-95\\-167.8167\\-174.8672\\-95\\-167.5684\\-172.9141\\-95\\-167.2084\\-170.9609\\-95\\-166.6352\\-169.0078\\-95\\-165.3796\\-163.1484\\-95\\-164.5898\\-161.1953\\-95\\-163.6658\\-157.2891\\-95\\-162.2933\\-153.3828\\-95\\-161.8034\\-151.4297\\-95\\-160.9116\\-149.4766\\-95\\-160.1563\\-147.5234\\-95\\-159.2663\\-145.5703\\-95\\-158.2277\\-143.6172\\-95\\-157.3671\\-141.6641\\-95\\-156.2709\\-139.7109\\-95\\-155.3976\\-137.7578\\-95\\-153.3203\\-134.2767\\-95\\-151.7086\\-131.8984\\-95\\-150.2539\\-129.9453\\-95\\-149.4141\\-128.5298\\-95\\-147.507\\-126.0391\\-95\\-144.0465\\-122.1328\\-95\\-142.5442\\-120.1797\\-95\\-140.6166\\-118.2266\\-95\\-137.6953\\-115.5067\\-95\\-135.7422\\-113.928\\-95\\-134.0355\\-112.3672\\-95\\-131.5836\\-110.4141\\-95\\-128.9617\\-108.4609\\-95\\-125.9766\\-106.3622\\-95\\-122.0703\\-103.9688\\-95\\-120.1172\\-103.0156\\-95\\-118.1641\\-101.7344\\-95\\-115.9237\\-100.6484\\-95\\-112.3047\\-99.2522\\-95\\-110.3516\\-98.42567\\-95\\-106.4453\\-97.29688\\-95\\-102.5391\\-96.034\\-95\\-98.63281\\-95.38712\\-95\\-94.72656\\-94.46901\\-95\\-92.77344\\-94.23212\\-95\\-88.86719\\-93.94893\\-95\\-86.91406\\-93.7571\\-95\\-84.96094\\-93.4581\\-95\\-79.10156\\-93.05589\\-95\\-73.24219\\-92.79491\\-95\\-67.38281\\-92.7178\\-95\\-61.52344\\-92.98965\\-95\\-55.66406\\-93.53455\\-95\\-53.71094\\-93.90946\\-95\\-49.80469\\-94.35591\\-95\\-47.85156\\-94.81594\\-95\\-45.89844\\-95.41256\\-95\\-41.99219\\-96.27376\\-95\\-40.03906\\-97.11779\\-95\\-38.08594\\-97.74903\\-95\\-32.22656\\-100.4171\\-95\\-30.27344\\-101.601\\-95\\-28.32031\\-103.0007\\-95\\-26.36719\\-104.2411\\-95\\-24.41406\\-105.9533\\-95\\-21.73913\\-108.4609\\-95\\-19.96707\\-110.4141\\-95\\-18.55469\\-112.4052\\-95\\-17.42903\\-114.3203\\-95\\-15.98751\\-116.2734\\-95\\-12.69531\\-122.3653\\-95\\-11.93728\\-124.0859\\-95\\-9.902057\\-127.9922\\-95\\-9.197298\\-129.9453\\-95\\-8.3125\\-131.8984\\-95\\-7.842319\\-133.8516\\-95\\-7.489483\\-135.8047\\-95\\-6.667259\\-137.7578\\-95\\-6.25465\\-139.7109\\-95\\-5.977958\\-141.6641\\-95\\-5.336828\\-143.6172\\-95\\-4.34932\\-147.5234\\-95\\-3.127078\\-151.4297\\-95\\-1.983173\\-153.3828\\-95\\-0.9765625\\-155.3576\\-95\\0.9765625\\-155.9295\\-95\\2.929688\\-153.8489\\-95\\3.831845\\-151.4297\\-95\\4.664902\\-149.4766\\-95\\5.313649\\-147.5234\\-95\\6.069841\\-145.5703\\-95\\6.64605\\-143.6172\\-95\\7.621951\\-141.6641\\-95\\8.009454\\-139.7109\\-95\\8.780103\\-137.7578\\-95\\10.0179\\-133.8516\\-95\\11.5754\\-129.9453\\-95\\12.44469\\-127.9922\\-95\\13.51061\\-126.0391\\-95\\14.32292\\-124.0859\\-95\\15.58291\\-122.1328\\-95\\16.60156\\-120.3424\\-95\\17.95313\\-118.2266\\-95\\19.01245\\-116.2734\\-95\\23.23615\\-110.4141\\-95\\24.41406\\-109.1157\\-95\\26.93315\\-106.5078\\-95\\30.27344\\-103.3109\\-95\\32.22656\\-101.6948\\-95\\33.63121\\-100.6484\\-95\\36.4926\\-98.69531\\-95\\38.08594\\-97.97452\\-95\\41.99219\\-95.73224\\-95\\43.94531\\-95.06428\\-95\\45.89844\\-94.08814\\-95\\47.85156\\-93.27901\\-95\\49.80469\\-92.6548\\-95\\51.75781\\-92.33428\\-95\\53.71094\\-91.72311\\-95\\55.66406\\-91.22286\\-95\\59.57031\\-90.64994\\-95\\61.52344\\-90.18641\\-95\\65.42969\\-89.80498\\-95\\69.33594\\-89.7065\\-95\\73.24219\\-89.74711\\-95\\77.14844\\-89.90625\\-95\\83.00781\\-90.3482\\-95\\88.86719\\-91.45058\\-95\\90.82031\\-91.69784\\-95\\95.93099\\-92.83594\\-95\\98.63281\\-93.60472\\-95\\102.5391\\-94.4159\\-95\\104.4922\\-95.15625\\-95\\108.3984\\-96.21291\\-95\\109.6824\\-96.74219\\-95\\114.2578\\-98.87364\\-95\\118.1641\\-100.6056\\-95\\120.1172\\-101.6181\\-95\\122.0703\\-102.5238\\-95\\129.8828\\-107.6208\\-95\\131.8359\\-109.1\\-95\\135.6938\\-112.3672\\-95\\139.704\\-116.2734\\-95\\143.5547\\-120.8633\\-95\\145.5078\\-123.3205\\-95\\147.4869\\-126.0391\\-95\\148.6398\\-127.9922\\-95\\150.0269\\-129.9453\\-95\\151.1603\\-131.8984\\-95\\153.7598\\-135.8047\\-95\\154.6578\\-137.7578\\-95\\155.8245\\-139.7109\\-95\\156.5867\\-141.6641\\-95\\157.7025\\-143.6172\\-95\\158.4778\\-145.5703\\-95\\159.6172\\-147.5234\\-95\\160.3527\\-149.4766\\-95\\161.2031\\-151.4297\\-95\\161.9301\\-153.3828\\-95\\162.323\\-155.3359\\-95\\162.8698\\-157.2891\\-95\\163.608\\-159.2422\\-95\\164.3273\\-163.1484\\-95\\164.781\\-165.1016\\-95\\165.3646\\-167.0547\\-95\\165.7191\\-169.0078\\-95\\166.6756\\-176.8203\\-95\\167.2431\\-180.7266\\-95\\167.5494\\-184.6328\\-95\\167.8136\\-192.4453\\-95\\167.8596\\-198.3047\\-95\\167.8317\\-204.1641\\-95\\167.6643\\-210.0234\\-95\\167.4143\\-213.9297\\-95\\167.193\\-215.8828\\-95\\166.5222\\-219.7891\\-95\\165.6634\\-225.6484\\-95\\165.2007\\-227.6016\\-95\\164.4939\\-229.5547\\-95\\163.6516\\-233.4609\\-95\\162.7794\\-235.4141\\-95\\161.7525\\-239.3203\\-95\\160.7869\\-241.2734\\-95\\160.0253\\-243.2266\\-95\\158.9373\\-245.1797\\-95\\158.0047\\-247.1328\\-95\\156.7902\\-249.0859\\-95\\155.9564\\-251.0391\\-95\\154.7145\\-252.9922\\-95\\153.6686\\-254.9453\\-95\\150.6426\\-258.8516\\-95\\149.4141\\-260.7947\\-95\\148.016\\-262.7578\\-95\\144.5618\\-266.6641\\-95\\143.5547\\-267.9035\\-95\\141.1482\\-270.5703\\-95\\139.2289\\-272.5234\\-95\\137.6953\\-274.1986\\-95\\135.4691\\-276.4297\\-95\\131.8359\\-279.8138\\-95\\129.0333\\-282.2891\\-95\\124.0234\\-286.2199\\-95\\120.1172\\-288.9458\\-95\\118.1641\\-289.9984\\-95\\116.2109\\-291.2152\\-95\\114.2578\\-292.6201\\-95\\112.3047\\-293.5508\\-95\\110.3516\\-294.7072\\-95\\108.3984\\-295.3634\\-95\\106.4453\\-296.4232\\-95\\104.4922\\-297.0406\\-95\\100.5859\\-298.6742\\-95\\98.63281\\-299.2143\\-95\\94.72656\\-300.4496\\-95\\88.86719\\-301.332\\-95\\84.96094\\-302.0626\\-95\\81.05469\\-302.4693\\-95\\77.14844\\-302.6214\\-95\\73.24219\\-302.6167\\-95\\69.33594\\-302.461\\-95\\67.38281\\-302.2818\\-95\\65.42969\\-301.9793\\-95\\63.47656\\-301.5423\\-95\\59.57031\\-300.8669\\-95\\57.61719\\-300.4768\\-95\\51.75781\\-298.2651\\-95\\49.80469\\-297.1746\\-95\\47.85156\\-296.4713\\-95\\45.89844\\-295.2863\\-95\\43.94531\\-294.438\\-95\\41.99219\\-293.0701\\-95\\40.03906\\-291.492\\-95\\36.13281\\-288.6226\\-95\\33.5719\\-286.1953\\-95\\31.8859\\-284.2422\\-95\\28.32031\\-279.9269\\-95\\25.77993\\-276.4297\\-95\\24.74201\\-274.4766\\-95\\24.41406\\-274.1042\\-95\\22.46094\\-271.0035\\-95\\22.09803\\-270.5703\\-95\\21.17283\\-268.6172\\-95\\19.97103\\-266.6641\\-95\\19.37548\\-264.7109\\-95\\17.74004\\-260.8047\\-95\\17.20908\\-258.8516\\-95\\16.26547\\-256.8984\\-95\\15.14267\\-252.9922\\-95\\14.3821\\-251.0391\\-95\\13.47778\\-247.1328\\-95\\12.96496\\-245.1797\\-95\\12.21035\\-243.2266\\-95\\11.14265\\-239.3203\\-95\\9.146554\\-235.4141\\-95\\8.789063\\-234.8802\\-95\\6.835938\\-233.3541\\-95\\4.882813\\-232.8874\\-95\\2.929688\\-232.5658\\-95\\0.9765625\\-232.8058\\-95\\-0.9765625\\-233.2656\\-95\\-2.929688\\-234.5135\\-95\\-4.882813\\-236.3398\\-95\\-5.771396\\-237.3672\\-95\\-7.234375\\-239.3203\\-95\\-8.244871\\-241.2734\\-95\\-9.571651\\-243.2266\\-95\\-11.61874\\-247.1328\\-95\\-12.45117\\-249.0859\\-95\\-13.43246\\-251.0391\\-95\\-14.06996\\-252.9922\\-95\\-15.13357\\-254.9453\\-95\\-15.92197\\-256.8984\\-95\\-17.09295\\-258.8516\\-95\\-17.82908\\-260.8047\\-95\\-18.9439\\-262.7578\\-95\\-19.65784\\-264.7109\\-95\\-21.73139\\-268.6172\\-95\\-23.07494\\-270.5703\\-95\\-24.04472\\-272.5234\\-95\\-25.32432\\-274.4766\\-95\\-27.72561\\-278.3828\\-95\\-30.27344\\-281.544\\-95\\-32.58366\\-284.2422\\-95\\-33.92075\\-286.1953\\-95\\-36.13281\\-288.5042\\-95\\-37.97259\\-290.1016\\-95\\-40.09699\\-292.0547\\-95\\-43.94531\\-294.9475\\-95\\-45.89844\\-296.1059\\-95\\-47.85156\\-297.0778\\-95\\-49.80469\\-298.2698\\-95\\-51.75781\\-299.0371\\-95\\-53.71094\\-299.9619\\-95\\-55.66406\\-300.6292\\-95\\-59.57031\\-301.4066\\-95\\-61.52344\\-301.951\\-95\\-63.47656\\-302.3152\\-95\\-65.42969\\-302.5497\\-95\\-69.33594\\-302.7522\\-95\\-73.24219\\-302.8023\\-95\\-77.14844\\-302.7178\\-95\\-81.05469\\-302.461\\-95"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002348"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "360"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "79"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-83.00781\\-302.0349\\-93\\-86.91406\\-301.2395\\-93\\-90.82031\\-300.6405\\-93\\-92.77344\\-300.254\\-93\\-94.72656\\-299.4603\\-93\\-98.63281\\-298.3184\\-93\\-100.5859\\-297.2964\\-93\\-102.5391\\-296.7031\\-93\\-104.4922\\-295.7565\\-93\\-108.3984\\-294.1914\\-93\\-110.3516\\-293.0313\\-93\\-112.3047\\-291.759\\-93\\-114.2578\\-290.6886\\-93\\-116.2109\\-289.3089\\-93\\-118.1535\\-288.1484\\-93\\-120.1172\\-286.8523\\-93\\-123.2291\\-284.2422\\-93\\-125.9766\\-281.8558\\-93\\-127.9297\\-280.3441\\-93\\-131.913\\-276.4297\\-93\\-134.0138\\-274.4766\\-93\\-137.33\\-270.5703\\-93\\-140.7948\\-266.6641\\-93\\-142.3404\\-264.7109\\-93\\-144.8975\\-260.8047\\-93\\-146.3982\\-258.8516\\-93\\-147.7347\\-256.8984\\-93\\-148.8105\\-254.9453\\-93\\-150.1038\\-252.9922\\-93\\-151.0204\\-251.0391\\-93\\-151.3672\\-250.5919\\-93\\-153.4947\\-247.1328\\-93\\-154.3904\\-245.1797\\-93\\-155.4362\\-243.2266\\-93\\-157.0511\\-239.3203\\-93\\-158.0659\\-237.3672\\-93\\-158.884\\-235.4141\\-93\\-159.844\\-233.4609\\-93\\-160.6478\\-231.5078\\-93\\-161.6506\\-229.5547\\-93\\-162.6694\\-225.6484\\-93\\-163.568\\-223.6953\\-93\\-164.5821\\-219.7891\\-93\\-165.4161\\-217.8359\\-93\\-165.92\\-215.8828\\-93\\-166.3097\\-213.9297\\-93\\-167.4143\\-210.0234\\-93\\-167.7304\\-208.0703\\-93\\-168.1507\\-204.1641\\-93\\-168.2921\\-202.2109\\-93\\-168.8156\\-196.3516\\-93\\-169.1043\\-192.4453\\-93\\-169.1466\\-188.5391\\-93\\-168.9053\\-184.6328\\-93\\-168.4869\\-180.7266\\-93\\-167.9806\\-174.8672\\-93\\-167.5175\\-170.9609\\-93\\-166.58\\-167.0547\\-93\\-165.7623\\-163.1484\\-93\\-165.2764\\-161.1953\\-93\\-164.5572\\-159.2422\\-93\\-163.6379\\-155.3359\\-93\\-162.8783\\-153.3828\\-93\\-162.2606\\-151.4297\\-93\\-161.8034\\-149.4766\\-93\\-160.9116\\-147.5234\\-93\\-159.2781\\-143.6172\\-93\\-158.2574\\-141.6641\\-93\\-157.3543\\-139.7109\\-93\\-156.3031\\-137.7578\\-93\\-155.4129\\-135.8047\\-93\\-153.3203\\-132.3413\\-93\\-151.7648\\-129.9453\\-93\\-150.2769\\-127.9922\\-93\\-149.4141\\-126.6376\\-93\\-147.5209\\-124.0859\\-93\\-145.8054\\-122.1328\\-93\\-143.8802\\-120.1797\\-93\\-142.0743\\-118.2266\\-93\\-139.6484\\-115.7316\\-93\\-133.7784\\-110.4141\\-93\\-131.8359\\-108.9123\\-93\\-127.9297\\-106.125\\-93\\-125.6553\\-104.5547\\-93\\-124.0234\\-103.656\\-93\\-122.0703\\-102.4348\\-93\\-120.1172\\-101.4163\\-93\\-118.1641\\-100.1757\\-93\\-114.2578\\-98.37959\\-93\\-112.3047\\-97.81702\\-93\\-109.9057\\-96.74219\\-93\\-106.4453\\-95.65466\\-93\\-104.4922\\-95.18129\\-93\\-102.5391\\-94.56561\\-93\\-100.5859\\-94.11679\\-93\\-98.63281\\-93.80542\\-93\\-96.67969\\-93.59626\\-93\\-94.72656\\-93.07594\\-93\\-92.77344\\-92.67696\\-93\\-88.86719\\-92.21274\\-93\\-84.96094\\-92.00299\\-93\\-81.05469\\-91.51166\\-93\\-75.19531\\-91.20557\\-93\\-71.28906\\-91.09511\\-93\\-69.33594\\-91.09328\\-93\\-65.42969\\-91.19757\\-93\\-59.57031\\-91.57338\\-93\\-57.61719\\-91.89577\\-93\\-53.71094\\-92.24741\\-93\\-51.75781\\-92.49595\\-93\\-49.80469\\-92.89808\\-93\\-47.85156\\-93.59087\\-93\\-45.89844\\-93.8125\\-93\\-43.94531\\-94.19101\\-93\\-41.99219\\-94.96896\\-93\\-40.03906\\-95.43756\\-93\\-36.38174\\-96.74219\\-93\\-32.22656\\-98.65358\\-93\\-30.27344\\-99.81683\\-93\\-28.32031\\-101.2147\\-93\\-26.36719\\-102.3369\\-93\\-24.41406\\-103.9655\\-93\\-21.75611\\-106.5078\\-93\\-19.87056\\-108.4609\\-93\\-18.30449\\-110.4141\\-93\\-15.68963\\-114.3203\\-93\\-14.57458\\-116.2734\\-93\\-12.69531\\-119.8259\\-93\\-10.74219\\-123.1354\\-93\\-9.289253\\-126.0391\\-93\\-8.201599\\-127.9922\\-93\\-6.845064\\-131.8984\\-93\\-6.059301\\-133.8516\\-93\\-5.724921\\-135.8047\\-93\\-4.76844\\-137.7578\\-93\\-4.354745\\-139.7109\\-93\\-4.085493\\-141.6641\\-93\\-3.019372\\-143.6172\\-93\\-1.638455\\-147.5234\\-93\\-0.9765625\\-148.5331\\-93\\0.9765625\\-149.3483\\-93\\2.783203\\-147.5234\\-93\\3.922129\\-145.5703\\-93\\4.54635\\-143.6172\\-93\\5.708582\\-141.6641\\-93\\6.024761\\-139.7109\\-93\\6.790304\\-137.7578\\-93\\7.913257\\-133.8516\\-93\\8.540919\\-131.8984\\-93\\9.322555\\-129.9453\\-93\\10.26848\\-127.9922\\-93\\11.43859\\-126.0391\\-93\\12.22358\\-124.0859\\-93\\13.51046\\-122.1328\\-93\\14.51765\\-120.1797\\-93\\15.75567\\-118.2266\\-93\\16.60156\\-116.4857\\-93\\18.23493\\-114.3203\\-93\\20.83965\\-110.4141\\-93\\22.51344\\-108.4609\\-93\\24.41406\\-105.978\\-93\\26.36719\\-103.9833\\-93\\28.09896\\-102.6016\\-93\\30.27344\\-101.0591\\-93\\33.08823\\-98.69531\\-93\\34.17969\\-98.05988\\-93\\36.13281\\-96.59907\\-93\\38.08594\\-95.84461\\-93\\40.03906\\-94.87523\\-93\\41.99219\\-93.79736\\-93\\43.94531\\-93.23805\\-93\\45.89844\\-92.15687\\-93\\49.80469\\-90.625\\-93\\51.75781\\-90.28136\\-93\\55.66406\\-89.41386\\-93\\59.57031\\-88.8552\\-93\\61.52344\\-88.40625\\-93\\65.42969\\-88.15871\\-93\\69.33594\\-88.11227\\-93\\73.24219\\-88.16447\\-93\\77.14844\\-88.37706\\-93\\79.10156\\-88.67188\\-93\\84.96094\\-89.35787\\-93\\88.86719\\-89.91294\\-93\\90.82031\\-90.28328\\-93\\92.77344\\-90.55022\\-93\\94.08482\\-90.88281\\-93\\96.67969\\-91.71891\\-93\\100.5859\\-92.6277\\-93\\102.5391\\-93.28125\\-93\\104.4922\\-93.82655\\-93\\106.4453\\-94.27386\\-93\\108.3984\\-95.17188\\-93\\110.3516\\-95.70689\\-93\\112.3047\\-96.44464\\-93\\118.1641\\-99.53718\\-93\\120.1172\\-100.3332\\-93\\122.0703\\-101.4455\\-93\\124.0234\\-102.4443\\-93\\127.2045\\-104.5547\\-93\\129.8828\\-106.5169\\-93\\131.8359\\-107.7832\\-93\\133.7891\\-109.3573\\-93\\137.0254\\-112.3672\\-93\\139.6484\\-114.9793\\-93\\142.5708\\-118.2266\\-93\\145.6539\\-122.1328\\-93\\147.4609\\-124.5795\\-93\\149.7371\\-127.9922\\-93\\150.8223\\-129.9453\\-93\\153.4712\\-133.8516\\-93\\154.4262\\-135.8047\\-93\\155.5687\\-137.7578\\-93\\156.3721\\-139.7109\\-93\\157.4413\\-141.6641\\-93\\158.2536\\-143.6172\\-93\\159.2331\\-145.5703\\-93\\160.0998\\-147.5234\\-93\\160.8392\\-149.4766\\-93\\161.7084\\-151.4297\\-93\\162.5716\\-155.3359\\-93\\163.3212\\-157.2891\\-93\\163.8443\\-159.2422\\-93\\164.4853\\-163.1484\\-93\\165.0912\\-165.1016\\-93\\165.5359\\-167.0547\\-93\\165.8074\\-169.0078\\-93\\166.2422\\-172.9141\\-93\\167.2414\\-180.7266\\-93\\167.5374\\-184.6328\\-93\\167.7217\\-190.4922\\-93\\167.8088\\-194.3984\\-93\\167.8088\\-198.3047\\-93\\167.7542\\-206.1172\\-93\\167.5046\\-211.9766\\-93\\167.379\\-213.9297\\-93\\167.1276\\-215.8828\\-93\\166.4536\\-219.7891\\-93\\165.6272\\-225.6484\\-93\\165.1338\\-227.6016\\-93\\164.452\\-229.5547\\-93\\163.6136\\-233.4609\\-93\\162.7417\\-235.4141\\-93\\161.7225\\-239.3203\\-93\\160.7303\\-241.2734\\-93\\159.9926\\-243.2266\\-93\\158.8745\\-245.1797\\-93\\157.959\\-247.1328\\-93\\156.7315\\-249.0859\\-93\\155.8871\\-251.0391\\-93\\154.6537\\-252.9922\\-93\\153.5538\\-254.9453\\-93\\152.1254\\-256.8984\\-93\\150.5432\\-258.8516\\-93\\149.4141\\-260.6056\\-93\\147.8909\\-262.7578\\-93\\144.4312\\-266.6641\\-93\\143.5547\\-267.7834\\-93\\141.0011\\-270.5703\\-93\\139.0728\\-272.5234\\-93\\137.6953\\-274.0307\\-93\\135.3214\\-276.4297\\-93\\133.7891\\-277.7664\\-93\\131.8359\\-279.6569\\-93\\128.8342\\-282.2891\\-93\\123.721\\-286.1953\\-93\\120.1172\\-288.8102\\-93\\118.1641\\-289.7736\\-93\\114.2578\\-292.4514\\-93\\112.3047\\-293.41\\-93\\110.3516\\-294.6182\\-93\\108.3984\\-295.2625\\-93\\106.4453\\-296.3092\\-93\\102.5391\\-297.6788\\-93\\100.5859\\-298.5941\\-93\\98.63281\\-299.1321\\-93\\94.72656\\-300.3884\\-93\\88.86719\\-301.2906\\-93\\84.96094\\-302.0081\\-93\\81.05469\\-302.4227\\-93\\77.14844\\-302.5956\\-93\\73.24219\\-302.5765\\-93\\69.33594\\-302.4139\\-93\\67.38281\\-302.2261\\-93\\63.47656\\-301.4696\\-93\\59.57031\\-300.815\\-93\\57.61719\\-300.4329\\-93\\55.66406\\-299.6525\\-93\\51.75781\\-298.209\\-93\\49.80469\\-297.1428\\-93\\47.85156\\-296.4201\\-93\\45.89844\\-295.249\\-93\\43.94531\\-294.3775\\-93\\41.99219\\-293.0367\\-93\\38.08594\\-289.9348\\-93\\36.13281\\-288.5376\\-93\\33.62863\\-286.1953\\-93\\31.9553\\-284.2422\\-93\\28.32031\\-279.8316\\-93\\25.79864\\-276.4297\\-93\\24.74201\\-274.4766\\-93\\24.41406\\-274.1073\\-93\\22.46094\\-271.0313\\-93\\22.07425\\-270.5703\\-93\\21.14868\\-268.6172\\-93\\19.93075\\-266.6641\\-93\\19.34928\\-264.7109\\-93\\17.67932\\-260.8047\\-93\\17.10464\\-258.8516\\-93\\16.12505\\-256.8984\\-93\\15.5894\\-254.9453\\-93\\14.9111\\-252.9922\\-93\\14.12307\\-251.0391\\-93\\13.18359\\-247.1328\\-93\\12.29195\\-245.1797\\-93\\11.66168\\-243.2266\\-93\\10.86426\\-241.2734\\-93\\9.880914\\-239.3203\\-93\\8.789063\\-237.9649\\-93\\6.835938\\-236.5878\\-93\\4.882813\\-236.4004\\-93\\0.9765625\\-236.3276\\-93\\-0.9765625\\-236.509\\-93\\-2.929688\\-237.6801\\-93\\-4.882813\\-238.6064\\-93\\-5.573552\\-239.3203\\-93\\-7.135759\\-241.2734\\-93\\-8.249383\\-243.2266\\-93\\-8.789063\\-243.8881\\-93\\-10.87827\\-247.1328\\-93\\-12.69531\\-250.5281\\-93\\-13.02573\\-251.0391\\-93\\-13.7623\\-252.9922\\-93\\-14.6405\\-254.9453\\-93\\-16.54857\\-258.8516\\-93\\-17.56203\\-260.8047\\-93\\-19.45755\\-264.7109\\-93\\-20.27847\\-266.6641\\-93\\-22.81303\\-270.5703\\-93\\-23.83475\\-272.5234\\-93\\-25.17641\\-274.4766\\-93\\-26.32581\\-276.4297\\-93\\-27.58943\\-278.3828\\-93\\-30.27344\\-281.6308\\-93\\-32.52989\\-284.2422\\-93\\-33.89116\\-286.1953\\-93\\-36.13281\\-288.4891\\-93\\-40.22167\\-292.0547\\-93\\-43.94531\\-294.8861\\-93\\-47.85156\\-296.9979\\-93\\-49.80469\\-298.1038\\-93\\-53.71094\\-299.7703\\-93\\-55.66406\\-300.5317\\-93\\-59.57031\\-301.2835\\-93\\-63.47656\\-302.2012\\-93\\-65.42969\\-302.461\\-93\\-69.33594\\-302.689\\-93\\-73.24219\\-302.7522\\-93\\-77.14844\\-302.6533\\-93\\-81.05469\\-302.3571\\-93"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002347"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "346"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "80"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.96094\\-301.4809\\-91\\-90.82031\\-300.5508\\-91\\-92.77344\\-300.0941\\-91\\-94.72656\\-299.3234\\-91\\-96.67969\\-298.7838\\-91\\-98.63281\\-298.1378\\-91\\-100.5859\\-297.1692\\-91\\-102.5391\\-296.5942\\-91\\-104.4922\\-295.5745\\-91\\-106.4453\\-294.907\\-91\\-108.2886\\-294.0078\\-91\\-110.3516\\-292.8958\\-91\\-112.3047\\-291.5237\\-91\\-114.2578\\-290.4934\\-91\\-116.2109\\-289.1436\\-91\\-120.1172\\-286.6494\\-91\\-123.0087\\-284.2422\\-91\\-127.5724\\-280.3359\\-91\\-131.8359\\-276.1321\\-91\\-133.7891\\-274.3219\\-91\\-135.353\\-272.5234\\-91\\-140.601\\-266.6641\\-91\\-142.174\\-264.7109\\-91\\-143.3546\\-262.7578\\-91\\-144.7132\\-260.8047\\-91\\-146.2259\\-258.8516\\-91\\-147.5336\\-256.8984\\-91\\-148.6445\\-254.9453\\-91\\-149.9859\\-252.9922\\-91\\-150.8689\\-251.0391\\-91\\-152.1886\\-249.0859\\-91\\-153.3203\\-247.1216\\-91\\-155.3299\\-243.2266\\-91\\-156.9569\\-239.3203\\-91\\-158.0132\\-237.3672\\-91\\-158.8427\\-235.4141\\-91\\-159.8726\\-233.4609\\-91\\-160.6165\\-231.5078\\-91\\-161.6277\\-229.5547\\-91\\-162.6275\\-225.6484\\-91\\-163.5264\\-223.6953\\-91\\-164.5416\\-219.7891\\-91\\-165.3646\\-217.8359\\-91\\-165.8841\\-215.8828\\-91\\-166.2854\\-213.9297\\-91\\-167.3943\\-210.0234\\-91\\-167.6955\\-208.0703\\-91\\-168.1386\\-204.1641\\-91\\-168.457\\-200.2578\\-91\\-168.8594\\-196.3516\\-91\\-169.1466\\-192.4453\\-91\\-169.2254\\-188.5391\\-91\\-169.0607\\-184.6328\\-91\\-168.2505\\-176.8203\\-91\\-168.1006\\-174.8672\\-91\\-167.6965\\-170.9609\\-91\\-167.3996\\-169.0078\\-91\\-166.4075\\-165.1016\\-91\\-165.6736\\-161.1953\\-91\\-165.1338\\-159.2422\\-91\\-164.4592\\-157.2891\\-91\\-163.5711\\-153.3828\\-91\\-162.7408\\-151.4297\\-91\\-161.7147\\-147.5234\\-91\\-160.8049\\-145.5703\\-91\\-160.0407\\-143.6172\\-91\\-159.1797\\-141.7275\\-91\\-155.2734\\-133.8648\\-91\\-153.3203\\-130.5847\\-91\\-151.6586\\-127.9922\\-91\\-147.4609\\-122.3345\\-91\\-141.6016\\-116.0136\\-91\\-139.6484\\-114.1356\\-91\\-135.4731\\-110.4141\\-91\\-133.1138\\-108.4609\\-91\\-130.4104\\-106.5078\\-91\\-127.8184\\-104.5547\\-91\\-125.9766\\-103.4848\\-91\\-124.0234\\-102.1174\\-91\\-122.0703\\-101.149\\-91\\-120.1172\\-100.0094\\-91\\-116.2109\\-97.97961\\-91\\-112.3047\\-96.25391\\-91\\-110.3516\\-95.67228\\-91\\-107.8074\\-94.78906\\-91\\-104.4922\\-93.83405\\-91\\-100.5859\\-93.07392\\-91\\-98.63281\\-92.35107\\-91\\-96.67969\\-92.00755\\-91\\-92.77344\\-91.54548\\-91\\-90.82031\\-90.89239\\-91\\-88.86719\\-90.57813\\-91\\-84.96094\\-90.21963\\-91\\-83.00781\\-90.10017\\-91\\-77.14844\\-89.88618\\-91\\-75.19531\\-89.69752\\-91\\-71.28906\\-89.61405\\-91\\-67.38281\\-89.66974\\-91\\-63.47656\\-89.93924\\-91\\-59.57031\\-90.09747\\-91\\-55.66406\\-90.43961\\-91\\-53.71094\\-90.74212\\-91\\-51.75781\\-91.15826\\-91\\-49.80469\\-91.70914\\-91\\-45.89844\\-92.30132\\-91\\-43.94531\\-92.95348\\-91\\-40.03906\\-93.99076\\-91\\-38.08594\\-94.65943\\-91\\-34.17969\\-96.16547\\-91\\-32.22656\\-97.26678\\-91\\-30.27344\\-98.11573\\-91\\-28.32031\\-99.52416\\-91\\-24.41406\\-102.1086\\-91\\-21.8011\\-104.5547\\-91\\-19.89632\\-106.5078\\-91\\-18.17255\\-108.4609\\-91\\-16.60156\\-110.6847\\-91\\-14.2985\\-114.3203\\-91\\-13.26834\\-116.2734\\-91\\-12.1213\\-118.2266\\-91\\-11.10734\\-120.1797\\-91\\-8.709882\\-124.0859\\-91\\-6.863839\\-127.9922\\-91\\-5.859375\\-129.9453\\-91\\-5.115327\\-131.8984\\-91\\-4.141671\\-133.8516\\-91\\-3.706135\\-135.8047\\-91\\-2.464117\\-137.7578\\-91\\-1.983643\\-139.7109\\-91\\-0.9765625\\-141.8879\\-91\\0.9765625\\-143.0086\\-91\\2.929688\\-141.3874\\-91\\4.882813\\-137.6633\\-91\\5.916262\\-133.8516\\-91\\6.669922\\-131.8984\\-91\\7.290378\\-129.9453\\-91\\8.203125\\-127.9922\\-91\\9.312855\\-126.0391\\-91\\10.14737\\-124.0859\\-91\\11.43101\\-122.1328\\-91\\12.37305\\-120.1797\\-91\\13.66266\\-118.2266\\-91\\14.61823\\-116.2734\\-91\\16.60156\\-113.2135\\-91\\18.82102\\-110.4141\\-91\\20.07039\\-108.4609\\-91\\21.48438\\-106.5078\\-91\\24.41406\\-103.4621\\-91\\26.36719\\-101.6447\\-91\\27.98412\\-100.6484\\-91\\30.27344\\-98.97852\\-91\\32.22656\\-97.26877\\-91\\36.13281\\-94.74165\\-91\\38.08594\\-93.97246\\-91\\40.03906\\-93.08236\\-91\\41.99219\\-91.9375\\-91\\43.94531\\-91.36295\\-91\\45.89844\\-90.21875\\-91\\47.85156\\-89.87815\\-91\\49.80469\\-89.0692\\-91\\51.75781\\-88.63503\\-91\\53.71094\\-88.38374\\-91\\55.66406\\-87.93799\\-91\\57.61719\\-87.62487\\-91\\59.57031\\-87.43563\\-91\\65.42969\\-87.07334\\-91\\71.28906\\-87.10619\\-91\\73.24219\\-87.17019\\-91\\77.14844\\-87.39735\\-91\\81.05469\\-87.68475\\-91\\84.96094\\-88.08955\\-91\\88.86719\\-88.72792\\-91\\94.72656\\-89.98284\\-91\\96.67969\\-90.30385\\-91\\98.63281\\-90.85777\\-91\\100.5859\\-91.74043\\-91\\102.5391\\-92.09532\\-91\\104.4922\\-92.56194\\-91\\106.4453\\-93.38189\\-91\\110.3516\\-94.71197\\-91\\114.2578\\-96.23608\\-91\\116.2109\\-97.43022\\-91\\118.1641\\-98.29485\\-91\\120.1172\\-99.47795\\-91\\122.0703\\-100.3152\\-91\\125.9766\\-102.5583\\-91\\127.9297\\-103.9059\\-91\\129.8828\\-105.4351\\-91\\133.7891\\-108.2575\\-91\\135.7422\\-109.9184\\-91\\140.2813\\-114.3203\\-91\\141.9168\\-116.2734\\-91\\143.4091\\-118.2266\\-91\\146.603\\-122.1328\\-91\\148.026\\-124.0859\\-91\\149.4141\\-126.2523\\-91\\150.4165\\-127.9922\\-91\\151.7821\\-129.9453\\-91\\152.908\\-131.8984\\-91\\154.1715\\-133.8516\\-91\\156.1479\\-137.7578\\-91\\156.9574\\-139.7109\\-91\\157.9824\\-141.6641\\-91\\158.8126\\-143.6172\\-91\\159.8327\\-145.5703\\-91\\160.4838\\-147.5234\\-91\\161.4108\\-149.4766\\-91\\161.969\\-151.4297\\-91\\162.3504\\-153.3828\\-91\\162.8831\\-155.3359\\-91\\163.6047\\-157.2891\\-91\\164.6343\\-163.1484\\-91\\165.2508\\-165.1016\\-91\\165.6164\\-167.0547\\-91\\166.2706\\-172.9141\\-91\\167.0298\\-178.7734\\-91\\167.2296\\-180.7266\\-91\\167.5828\\-186.5859\\-91\\167.7332\\-194.3984\\-91\\167.77\\-198.3047\\-91\\167.6832\\-206.1172\\-91\\167.4241\\-211.9766\\-91\\167.0298\\-215.8828\\-91\\166.3775\\-219.7891\\-91\\165.561\\-225.6484\\-91\\164.3899\\-229.5547\\-91\\163.5773\\-233.4609\\-91\\162.6939\\-235.4141\\-91\\161.6881\\-239.3203\\-91\\160.6895\\-241.2734\\-91\\159.9576\\-243.2266\\-91\\158.7825\\-245.1797\\-91\\157.8967\\-247.1328\\-91\\156.6619\\-249.0859\\-91\\155.8286\\-251.0391\\-91\\153.4029\\-254.9453\\-91\\152.0203\\-256.8984\\-91\\150.414\\-258.8516\\-91\\149.4141\\-260.442\\-91\\147.7455\\-262.7578\\-91\\146.0925\\-264.7109\\-91\\144.2522\\-266.6641\\-91\\143.5547\\-267.6104\\-91\\140.8675\\-270.5703\\-91\\137.0321\\-274.4766\\-91\\135.1744\\-276.4297\\-91\\133.7891\\-277.6291\\-91\\131.8359\\-279.4854\\-91\\129.8828\\-281.2279\\-91\\127.9297\\-282.8537\\-91\\125.9766\\-284.2171\\-91\\123.4343\\-286.1953\\-91\\120.1172\\-288.6768\\-91\\118.1641\\-289.5794\\-91\\117.5045\\-290.1016\\-91\\114.2578\\-292.2541\\-91\\112.3047\\-293.2726\\-91\\110.3516\\-294.4928\\-91\\108.3984\\-295.1664\\-91\\106.4453\\-296.1324\\-91\\102.5391\\-297.5511\\-91\\100.5859\\-298.5064\\-91\\98.63281\\-299.0368\\-91\\94.72656\\-300.3156\\-91\\92.77344\\-300.6744\\-91\\86.91406\\-301.5546\\-91\\83.00781\\-302.2012\\-91\\81.05469\\-302.3793\\-91\\77.14844\\-302.5572\\-91\\71.28906\\-302.4734\\-91\\67.38281\\-302.1529\\-91\\63.47656\\-301.4066\\-91\\59.57031\\-300.7752\\-91\\57.61719\\-300.3916\\-91\\55.66406\\-299.593\\-91\\51.75781\\-298.1616\\-91\\49.80469\\-297.1076\\-91\\47.85156\\-296.3795\\-91\\45.89844\\-295.216\\-91\\43.94531\\-294.3143\\-91\\41.99219\\-292.9871\\-91\\38.08594\\-289.8478\\-91\\36.13281\\-288.4437\\-91\\33.71635\\-286.1953\\-91\\28.32031\\-279.7768\\-91\\25.83143\\-276.4297\\-91\\24.76591\\-274.4766\\-91\\24.41406\\-274.0778\\-91\\22.46094\\-271.0547\\-91\\22.05078\\-270.5703\\-91\\21.11117\\-268.6172\\-91\\19.90928\\-266.6641\\-91\\19.31014\\-264.7109\\-91\\18.34797\\-262.7578\\-91\\16.96538\\-258.8516\\-91\\15.98566\\-256.8984\\-91\\15.4286\\-254.9453\\-91\\14.49539\\-252.9922\\-91\\13.85161\\-251.0391\\-91\\13.32642\\-249.0859\\-91\\11.5843\\-245.1797\\-91\\10.74219\\-243.6302\\-91\\8.789063\\-241.1496\\-91\\6.835938\\-240.1203\\-91\\4.882813\\-239.9677\\-91\\0.9765625\\-239.8928\\-91\\-0.9765625\\-239.9964\\-91\\-2.929688\\-240.3538\\-91\\-4.882813\\-241.894\\-91\\-6.835938\\-243.6618\\-91\\-8.128979\\-245.1797\\-91\\-8.789063\\-245.805\\-91\\-9.847574\\-247.1328\\-91\\-11.23414\\-249.0859\\-91\\-12.24293\\-251.0391\\-91\\-13.41318\\-252.9922\\-91\\-14.11033\\-254.9453\\-91\\-15.23062\\-256.8984\\-91\\-16.02746\\-258.8516\\-91\\-17.19835\\-260.8047\\-91\\-18.01696\\-262.7578\\-91\\-19.19495\\-264.7109\\-91\\-19.9245\\-266.6641\\-91\\-21.21519\\-268.6172\\-91\\-22.46094\\-270.6914\\-91\\-24.41406\\-273.779\\-91\\-24.98653\\-274.4766\\-91\\-26.08924\\-276.4297\\-91\\-27.45972\\-278.3828\\-91\\-29.06709\\-280.3359\\-91\\-30.84664\\-282.2891\\-91\\-33.84927\\-286.1953\\-91\\-36.13281\\-288.4891\\-91\\-38.07681\\-290.1016\\-91\\-40.30819\\-292.0547\\-91\\-43.94531\\-294.8175\\-91\\-49.80469\\-297.9218\\-91\\-51.75781\\-298.8329\\-91\\-55.66406\\-300.421\\-91\\-61.52344\\-301.5944\\-91\\-63.47656\\-302.0754\\-91\\-65.42969\\-302.3571\\-91\\-69.33594\\-302.6214\\-91\\-73.24219\\-302.689\\-91\\-77.14844\\-302.5765\\-91\\-81.05469\\-302.2476\\-91"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002346"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "341"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "81"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-302.1003\\-89\\-84.96094\\-301.3619\\-89\\-90.82031\\-300.4496\\-89\\-92.77344\\-299.905\\-89\\-94.72656\\-299.1924\\-89\\-96.67969\\-298.6943\\-89\\-100.5859\\-297.0702\\-89\\-102.5391\\-296.4713\\-89\\-104.4922\\-295.4459\\-89\\-106.4453\\-294.7781\\-89\\-108.3984\\-293.6869\\-89\\-110.3516\\-292.7312\\-89\\-112.3047\\-291.3378\\-89\\-114.2578\\-290.2523\\-89\\-116.2109\\-289.0006\\-89\\-120.1172\\-286.3823\\-89\\-122.7667\\-284.2422\\-89\\-127.3468\\-280.3359\\-89\\-129.8828\\-277.7679\\-89\\-133.7891\\-274.032\\-89\\-137.6953\\-269.7491\\-89\\-140.4047\\-266.6641\\-89\\-141.956\\-264.7109\\-89\\-143.1596\\-262.7578\\-89\\-146.0564\\-258.8516\\-89\\-147.4609\\-256.7237\\-89\\-149.8336\\-252.9922\\-89\\-150.7182\\-251.0391\\-89\\-152.0779\\-249.0859\\-89\\-154.2329\\-245.1797\\-89\\-156.1149\\-241.2734\\-89\\-156.8683\\-239.3203\\-89\\-157.9714\\-237.3672\\-89\\-158.7984\\-235.4141\\-89\\-159.8712\\-233.4609\\-89\\-160.5601\\-231.5078\\-89\\-161.581\\-229.5547\\-89\\-162.5846\\-225.6484\\-89\\-163.4646\\-223.6953\\-89\\-164.4802\\-219.7891\\-89\\-165.2865\\-217.8359\\-89\\-165.8418\\-215.8828\\-89\\-166.2439\\-213.9297\\-89\\-167.3503\\-210.0234\\-89\\-167.6683\\-208.0703\\-89\\-168.1125\\-204.1641\\-89\\-168.4473\\-200.2578\\-89\\-169.0313\\-194.3984\\-89\\-169.2518\\-190.4922\\-89\\-169.2755\\-188.5391\\-89\\-169.1181\\-184.6328\\-89\\-168.8004\\-180.7266\\-89\\-168.3478\\-176.8203\\-89\\-168.0343\\-172.9141\\-89\\-167.6093\\-169.0078\\-89\\-167.2466\\-167.0547\\-89\\-166.7041\\-165.1016\\-89\\-166.2699\\-163.1484\\-89\\-165.5564\\-159.2422\\-89\\-164.3473\\-155.3359\\-89\\-163.4206\\-151.4297\\-89\\-162.6219\\-149.4766\\-89\\-161.583\\-145.5703\\-89\\-160.6611\\-143.6172\\-89\\-159.934\\-141.6641\\-89\\-158.9188\\-139.7109\\-89\\-156.0927\\-133.8516\\-89\\-154.9531\\-131.8984\\-89\\-154.0093\\-129.9453\\-89\\-153.3203\\-128.8752\\-89\\-149.9941\\-124.0859\\-89\\-147.4609\\-120.8338\\-89\\-143.5547\\-116.5082\\-89\\-141.4759\\-114.3203\\-89\\-139.3573\\-112.3672\\-89\\-134.9037\\-108.4609\\-89\\-131.8359\\-106.0996\\-89\\-127.9297\\-103.351\\-89\\-125.9766\\-101.8785\\-89\\-124.0234\\-100.9599\\-89\\-122.0703\\-99.78455\\-89\\-120.1172\\-98.79209\\-89\\-118.1641\\-97.65506\\-89\\-114.2578\\-95.83392\\-89\\-112.3047\\-95.13611\\-89\\-110.3516\\-94.30451\\-89\\-108.3984\\-93.81928\\-89\\-104.4922\\-92.53935\\-89\\-102.5391\\-92.04818\\-89\\-98.63281\\-91.18508\\-89\\-96.67969\\-90.56437\\-89\\-94.72656\\-90.16711\\-89\\-86.91406\\-89.10202\\-89\\-84.96094\\-88.78899\\-89\\-81.05469\\-88.50677\\-89\\-77.14844\\-88.28588\\-89\\-73.24219\\-88.20081\\-89\\-69.33594\\-88.21122\\-89\\-63.47656\\-88.42305\\-89\\-59.57031\\-88.69563\\-89\\-57.61719\\-88.9381\\-89\\-49.80469\\-90.11112\\-89\\-46.28314\\-90.88281\\-89\\-43.94531\\-91.53625\\-89\\-41.99219\\-91.97019\\-89\\-40.03906\\-92.58994\\-89\\-38.08594\\-93.34375\\-89\\-34.17969\\-94.71128\\-89\\-30.27344\\-96.56985\\-89\\-28.32031\\-97.7575\\-89\\-26.36719\\-99.20885\\-89\\-24.41406\\-100.3287\\-89\\-22.46094\\-101.9834\\-89\\-19.86557\\-104.5547\\-89\\-18.16579\\-106.5078\\-89\\-16.60156\\-108.5177\\-89\\-15.3845\\-110.4141\\-89\\-14.02065\\-112.3672\\-89\\-11.92898\\-116.2734\\-89\\-9.707755\\-120.1797\\-89\\-8.444864\\-122.1328\\-89\\-7.458785\\-124.0859\\-89\\-6.276777\\-126.0391\\-89\\-5.33288\\-127.9922\\-89\\-3.957201\\-129.9453\\-89\\-2.95989\\-131.8984\\-89\\-0.9765625\\-134.877\\-89\\0.2335259\\-135.8047\\-89\\0.9765625\\-136.5477\\-89\\2.929688\\-135.5293\\-89\\3.590593\\-133.8516\\-89\\4.48666\\-131.8984\\-89\\5.282738\\-129.9453\\-89\\7.213665\\-126.0391\\-89\\8.019912\\-124.0859\\-89\\9.232133\\-122.1328\\-89\\10.21359\\-120.1797\\-89\\12.53568\\-116.2734\\-89\\14.98028\\-112.3672\\-89\\16.50301\\-110.4141\\-89\\17.68973\\-108.4609\\-89\\21.01452\\-104.5547\\-89\\22.46094\\-103.0215\\-89\\26.36719\\-99.51225\\-89\\28.32031\\-97.90864\\-89\\30.27344\\-96.71375\\-89\\32.22656\\-95.25452\\-89\\36.29557\\-92.83594\\-89\\38.08594\\-92.07468\\-89\\40.03906\\-91.12471\\-89\\41.99219\\-90.02069\\-89\\43.94531\\-89.43815\\-89\\45.89844\\-88.54072\\-89\\49.80469\\-87.71088\\-89\\51.75781\\-87.18076\\-89\\53.71094\\-86.78782\\-89\\59.57031\\-86.02123\\-89\\63.47656\\-85.77408\\-89\\69.33594\\-85.66691\\-89\\71.28906\\-85.70181\\-89\\75.19531\\-85.95959\\-89\\79.10156\\-86.34505\\-89\\81.05469\\-86.47453\\-89\\83.00781\\-86.80846\\-89\\84.96094\\-87.0376\\-89\\88.86719\\-87.7812\\-89\\90.82031\\-88.03507\\-89\\94.72656\\-88.70996\\-89\\96.67969\\-89.32478\\-89\\100.5859\\-90.28241\\-89\\104.4922\\-91.69994\\-89\\106.4453\\-92.2364\\-89\\108.3984\\-93.04284\\-89\\112.3047\\-94.35756\\-89\\114.2578\\-95.3648\\-89\\116.2109\\-96.18716\\-89\\118.1641\\-97.36801\\-89\\120.1172\\-98.24609\\-89\\122.0703\\-99.44705\\-89\\124.0234\\-100.4023\\-89\\125.9766\\-101.5557\\-89\\129.8828\\-104.2633\\-89\\135.2494\\-108.4609\\-89\\139.2402\\-112.3672\\-89\\141.1684\\-114.3203\\-89\\142.7225\\-116.2734\\-89\\146.0033\\-120.1797\\-89\\147.5034\\-122.1328\\-89\\148.7145\\-124.0859\\-89\\150.0767\\-126.0391\\-89\\152.4029\\-129.9453\\-89\\153.7673\\-131.8984\\-89\\154.7388\\-133.8516\\-89\\155.8913\\-135.8047\\-89\\156.5865\\-137.7578\\-89\\157.7025\\-139.7109\\-89\\158.4343\\-141.6641\\-89\\159.5117\\-143.6172\\-89\\160.9086\\-147.5234\\-89\\161.7314\\-149.4766\\-89\\162.5325\\-153.3828\\-89\\163.2276\\-155.3359\\-89\\163.7723\\-157.2891\\-89\\164.3975\\-161.1953\\-89\\164.7828\\-163.1484\\-89\\165.3539\\-165.1016\\-89\\165.888\\-169.0078\\-89\\166.51\\-174.8672\\-89\\167.0149\\-178.7734\\-89\\167.3327\\-182.6797\\-89\\167.5308\\-186.5859\\-89\\167.649\\-192.4453\\-89\\167.6988\\-198.3047\\-89\\167.6062\\-206.1172\\-89\\167.335\\-211.9766\\-89\\166.896\\-215.8828\\-89\\166.5853\\-217.8359\\-89\\165.8053\\-223.6953\\-89\\165.4738\\-225.6484\\-89\\164.3244\\-229.5547\\-89\\163.9546\\-231.5078\\-89\\163.4857\\-233.4609\\-89\\162.6244\\-235.4141\\-89\\161.6498\\-239.3203\\-89\\160.6257\\-241.2734\\-89\\159.9066\\-243.2266\\-89\\158.6699\\-245.1797\\-89\\157.8189\\-247.1328\\-89\\156.582\\-249.0859\\-89\\155.748\\-251.0391\\-89\\153.3203\\-254.84\\-89\\151.9112\\-256.8984\\-89\\150.3551\\-258.8516\\-89\\149.4141\\-260.2632\\-89\\147.583\\-262.7578\\-89\\145.9548\\-264.7109\\-89\\144.1687\\-266.6641\\-89\\143.5547\\-267.4468\\-89\\140.7399\\-270.5703\\-89\\139.6484\\-271.6272\\-89\\137.6953\\-273.7228\\-89\\135.0042\\-276.4297\\-89\\133.7891\\-277.4633\\-89\\129.8828\\-281.0733\\-89\\127.9297\\-282.6954\\-89\\125.9766\\-283.9142\\-89\\122.0703\\-287.0668\\-89\\120.1172\\-288.4859\\-89\\118.1641\\-289.4354\\-89\\116.2109\\-290.7966\\-89\\110.3516\\-294.3121\\-89\\108.3984\\-295.0693\\-89\\104.4922\\-296.7859\\-89\\102.5391\\-297.4011\\-89\\100.5859\\-298.3937\\-89\\96.67969\\-299.5352\\-89\\94.72656\\-300.2515\\-89\\92.77344\\-300.6249\\-89\\86.91406\\-301.4696\\-89\\83.00781\\-302.1147\\-89\\79.10156\\-302.4315\\-89\\75.19531\\-302.4978\\-89\\71.28906\\-302.3884\\-89\\67.38281\\-302.0349\\-89\\63.47656\\-301.3254\\-89\\59.57031\\-300.7196\\-89\\57.61719\\-300.3307\\-89\\55.66406\\-299.5138\\-89\\53.71094\\-298.8702\\-89\\51.75781\\-298.1011\\-89\\49.80469\\-297.0685\\-89\\47.85156\\-296.3229\\-89\\45.89844\\-295.1636\\-89\\43.94531\\-294.2354\\-89\\41.99219\\-292.9319\\-89\\38.08594\\-289.7512\\-89\\36.13281\\-288.3438\\-89\\33.8199\\-286.1953\\-89\\30.5625\\-282.2891\\-89\\28.32031\\-279.7237\\-89\\25.86515\\-276.4297\\-89\\24.78027\\-274.4766\\-89\\24.41406\\-274.0649\\-89\\22.46094\\-271.0701\\-89\\22.03776\\-270.5703\\-89\\21.07219\\-268.6172\\-89\\19.85051\\-266.6641\\-89\\19.24143\\-264.7109\\-89\\18.18359\\-262.7578\\-89\\17.50103\\-260.8047\\-89\\15.79392\\-256.8984\\-89\\15.13983\\-254.9453\\-89\\14.08406\\-252.9922\\-89\\13.48039\\-251.0391\\-89\\12.69531\\-249.3473\\-89\\11.49164\\-247.1328\\-89\\10.74219\\-246.0704\\-89\\8.789063\\-244.0684\\-89\\6.835938\\-243.5419\\-89\\4.882813\\-243.3264\\-89\\2.929688\\-243.2124\\-89\\0.9765625\\-243.2128\\-89\\-0.9765625\\-243.3253\\-89\\-2.929688\\-243.6507\\-89\\-4.882813\\-244.5326\\-89\\-6.835938\\-245.9444\\-89\\-8.789063\\-247.7581\\-89\\-10.74219\\-249.8765\\-89\\-11.5899\\-251.0391\\-89\\-12.7038\\-252.9922\\-89\\-14.64844\\-256.9527\\-89\\-16.60156\\-260.7721\\-89\\-18.55469\\-264.3717\\-89\\-18.80258\\-264.7109\\-89\\-19.6418\\-266.6641\\-89\\-21.93117\\-270.5703\\-89\\-23.38973\\-272.5234\\-89\\-24.72444\\-274.4766\\-89\\-25.8893\\-276.4297\\-89\\-27.32544\\-278.3828\\-89\\-28.93814\\-280.3359\\-89\\-30.78326\\-282.2891\\-89\\-33.82259\\-286.1953\\-89\\-36.13281\\-288.4865\\-89\\-38.08594\\-290.0431\\-89\\-40.38943\\-292.0547\\-89\\-43.94531\\-294.7527\\-89\\-45.89844\\-295.7092\\-89\\-47.85156\\-296.8333\\-89\\-49.80469\\-297.7058\\-89\\-51.75781\\-298.7367\\-89\\-53.71094\\-299.4325\\-89\\-55.66406\\-300.3156\\-89\\-57.61719\\-300.741\\-89\\-61.52344\\-301.4447\\-89\\-63.47656\\-301.9203\\-89\\-65.42969\\-302.234\\-89\\-69.33594\\-302.5377\\-89\\-73.24219\\-302.6028\\-89\\-77.14844\\-302.4898\\-89\\-79.10156\\-302.3442\\-89"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "342"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "82"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-301.95\\-87\\-83.00781\\-301.5546\\-87\\-88.86719\\-300.6905\\-87\\-90.82031\\-300.3464\\-87\\-94.72656\\-299.0786\\-87\\-96.67969\\-298.5848\\-87\\-98.63281\\-297.6699\\-87\\-102.5391\\-296.3229\\-87\\-104.4922\\-295.3163\\-87\\-106.4453\\-294.6692\\-87\\-108.3984\\-293.5036\\-87\\-110.3516\\-292.543\\-87\\-110.973\\-292.0547\\-87\\-114.2578\\-289.9375\\-87\\-116.2109\\-288.8497\\-87\\-119.9166\\-286.1953\\-87\\-122.4828\\-284.2422\\-87\\-125.9766\\-281.3446\\-87\\-127.9297\\-279.5614\\-87\\-129.8828\\-277.5714\\-87\\-133.7891\\-273.7957\\-87\\-137.6953\\-269.518\\-87\\-140.1828\\-266.6641\\-87\\-141.6423\\-264.7109\\-87\\-142.9478\\-262.7578\\-87\\-143.5547\\-262.0254\\-87\\-145.8513\\-258.8516\\-87\\-148.4438\\-254.9453\\-87\\-149.6582\\-252.9922\\-87\\-150.5969\\-251.0391\\-87\\-151.965\\-249.0859\\-87\\-152.9833\\-247.1328\\-87\\-154.1466\\-245.1797\\-87\\-156.0903\\-241.2734\\-87\\-156.81\\-239.3203\\-87\\-157.9383\\-237.3672\\-87\\-158.7137\\-235.4141\\-87\\-159.829\\-233.4609\\-87\\-160.5195\\-231.5078\\-87\\-161.5221\\-229.5547\\-87\\-162.0854\\-227.6016\\-87\\-162.5398\\-225.6484\\-87\\-163.4294\\-223.6953\\-87\\-164.4088\\-219.7891\\-87\\-165.2007\\-217.8359\\-87\\-165.7986\\-215.8828\\-87\\-166.671\\-211.9766\\-87\\-167.2818\\-210.0234\\-87\\-167.6296\\-208.0703\\-87\\-168.07\\-204.1641\\-87\\-168.6059\\-198.3047\\-87\\-169.0313\\-194.3984\\-87\\-169.2755\\-190.4922\\-87\\-169.2518\\-186.5859\\-87\\-169.0607\\-182.6797\\-87\\-168.641\\-178.7734\\-87\\-168.1125\\-172.9141\\-87\\-167.7231\\-169.0078\\-87\\-167.4521\\-167.0547\\-87\\-167.03\\-165.1016\\-87\\-166.4975\\-163.1484\\-87\\-165.8045\\-159.2422\\-87\\-165.4084\\-157.2891\\-87\\-164.7181\\-155.3359\\-87\\-164.2012\\-153.3828\\-87\\-163.8028\\-151.4297\\-87\\-163.2146\\-149.4766\\-87\\-162.4627\\-147.5234\\-87\\-161.9725\\-145.5703\\-87\\-161.3622\\-143.6172\\-87\\-160.4553\\-141.6641\\-87\\-159.7545\\-139.7109\\-87\\-158.6393\\-137.7578\\-87\\-157.8182\\-135.8047\\-87\\-156.692\\-133.8516\\-87\\-155.8183\\-131.8984\\-87\\-154.7164\\-129.9453\\-87\\-153.7211\\-127.9922\\-87\\-150.9124\\-124.0859\\-87\\-149.6698\\-122.1328\\-87\\-148.1247\\-120.1797\\-87\\-146.3382\\-118.2266\\-87\\-144.3998\\-116.2734\\-87\\-143.5547\\-115.2896\\-87\\-140.6599\\-112.3672\\-87\\-138.463\\-110.4141\\-87\\-137.6953\\-109.5421\\-87\\-135.7422\\-107.8227\\-87\\-133.7891\\-106.2969\\-87\\-129.8828\\-103.4834\\-87\\-127.9297\\-101.8963\\-87\\-125.5412\\-100.6484\\-87\\-118.1641\\-96.42938\\-87\\-114.2578\\-94.71197\\-87\\-112.3047\\-93.97414\\-87\\-110.3516\\-93.38885\\-87\\-108.3984\\-92.5622\\-87\\-106.4453\\-92.03911\\-87\\-102.5391\\-90.79548\\-87\\-98.63281\\-89.87454\\-87\\-96.67969\\-89.53326\\-87\\-90.82031\\-88.32713\\-87\\-86.91406\\-87.91968\\-87\\-79.10156\\-87.4313\\-87\\-77.14844\\-87.19447\\-87\\-73.24219\\-87.10176\\-87\\-67.38281\\-87.23438\\-87\\-63.47656\\-87.53969\\-87\\-59.57031\\-87.72093\\-87\\-55.66406\\-88.01332\\-87\\-51.75781\\-88.48986\\-87\\-47.85156\\-89.35461\\-87\\-43.94531\\-90.12535\\-87\\-41.99219\\-90.63492\\-87\\-40.03906\\-91.4294\\-87\\-36.13281\\-92.66448\\-87\\-34.17969\\-93.61306\\-87\\-32.22656\\-94.21235\\-87\\-28.32031\\-96.25391\\-87\\-26.36719\\-97.53095\\-87\\-24.41406\\-98.68697\\-87\\-21.95351\\-100.6484\\-87\\-20.50781\\-102.0013\\-87\\-18.11801\\-104.5547\\-87\\-16.60156\\-106.5639\\-87\\-15.32219\\-108.4609\\-87\\-13.90122\\-110.4141\\-87\\-12.8768\\-112.3672\\-87\\-10.44922\\-116.2734\\-87\\-9.427584\\-118.2266\\-87\\-8.28528\\-120.1797\\-87\\-7.370722\\-122.1328\\-87\\-3.431659\\-127.9922\\-87\\-1.726974\\-129.9453\\-87\\-0.9765625\\-130.9219\\-87\\0.9765625\\-131.7129\\-87\\2.929688\\-130.2069\\-87\\4.327948\\-127.9922\\-87\\5.379512\\-126.0391\\-87\\6.11764\\-124.0859\\-87\\7.284628\\-122.1328\\-87\\8.163061\\-120.1797\\-87\\10.47138\\-116.2734\\-87\\11.84264\\-114.3203\\-87\\12.69531\\-112.8169\\-87\\14.37988\\-110.4141\\-87\\15.53858\\-108.4609\\-87\\19.09722\\-104.5547\\-87\\20.79613\\-102.6016\\-87\\22.89807\\-100.6484\\-87\\26.36719\\-97.5284\\-87\\28.32031\\-95.98264\\-87\\30.27344\\-94.81779\\-87\\33.2955\\-92.83594\\-87\\36.66992\\-90.88281\\-87\\40.03906\\-89.40142\\-87\\41.99219\\-88.44551\\-87\\45.89844\\-87.3265\\-87\\47.85156\\-86.65844\\-87\\53.71094\\-85.51563\\-87\\57.61719\\-84.88847\\-87\\61.52344\\-84.5722\\-87\\67.38281\\-84.4375\\-87\\71.28906\\-84.47174\\-87\\75.19531\\-84.80889\\-87\\79.10156\\-85.34121\\-87\\83.00781\\-85.78448\\-87\\84.96094\\-86.10654\\-87\\86.91406\\-86.30196\\-87\\88.86719\\-86.62728\\-87\\92.77344\\-87.57374\\-87\\96.67969\\-88.21631\\-87\\100.5859\\-89.39642\\-87\\102.5391\\-89.91936\\-87\\104.4922\\-90.56666\\-87\\108.3984\\-92.10775\\-87\\110.3516\\-92.72412\\-87\\112.3047\\-93.60763\\-87\\114.2578\\-94.21333\\-87\\116.2109\\-95.37069\\-87\\118.1641\\-96.22274\\-87\\120.1172\\-97.38659\\-87\\122.0703\\-98.34457\\-87\\124.0234\\-99.57627\\-87\\125.9766\\-100.6067\\-87\\127.9297\\-101.8358\\-87\\129.8828\\-103.4006\\-87\\133.7891\\-106.2731\\-87\\135.7422\\-107.8932\\-87\\137.6953\\-109.7175\\-87\\138.2948\\-110.4141\\-87\\140.3256\\-112.3672\\-87\\142.0975\\-114.3203\\-87\\143.6571\\-116.2734\\-87\\145.0763\\-118.2266\\-87\\148.2408\\-122.1328\\-87\\149.4879\\-124.0859\\-87\\150.5657\\-126.0391\\-87\\151.983\\-127.9922\\-87\\155.4243\\-133.8516\\-87\\157.1065\\-137.7578\\-87\\158.0707\\-139.7109\\-87\\158.8937\\-141.6641\\-87\\159.8764\\-143.6172\\-87\\160.4718\\-145.5703\\-87\\161.3571\\-147.5234\\-87\\161.9153\\-149.4766\\-87\\162.7276\\-153.3828\\-87\\163.4513\\-155.3359\\-87\\163.849\\-157.2891\\-87\\164.4768\\-161.1953\\-87\\164.8702\\-163.1484\\-87\\165.4061\\-165.1016\\-87\\165.6849\\-167.0547\\-87\\166.4919\\-174.8672\\-87\\166.9693\\-178.7734\\-87\\167.2871\\-182.6797\\-87\\167.5199\\-188.5391\\-87\\167.6099\\-194.3984\\-87\\167.6062\\-202.2109\\-87\\167.4338\\-208.0703\\-87\\167.2175\\-211.9766\\-87\\165.7395\\-223.6953\\-87\\165.3856\\-225.6484\\-87\\164.736\\-227.6016\\-87\\164.2589\\-229.5547\\-87\\163.9058\\-231.5078\\-87\\163.3719\\-233.4609\\-87\\162.5682\\-235.4141\\-87\\161.5617\\-239.3203\\-87\\160.536\\-241.2734\\-87\\159.8326\\-243.2266\\-87\\158.5855\\-245.1797\\-87\\157.7402\\-247.1328\\-87\\156.502\\-249.0859\\-87\\155.6279\\-251.0391\\-87\\153.3203\\-254.673\\-87\\149.4141\\-260.0723\\-87\\147.4609\\-262.6914\\-87\\143.5547\\-267.3026\\-87\\140.5995\\-270.5703\\-87\\139.6484\\-271.4685\\-87\\137.6953\\-273.5716\\-87\\134.8159\\-276.4297\\-87\\133.7891\\-277.2971\\-87\\130.4321\\-280.3359\\-87\\129.8828\\-280.905\\-87\\127.9297\\-282.4544\\-87\\125.9766\\-283.687\\-87\\122.0703\\-286.9027\\-87\\120.1172\\-288.2045\\-87\\118.1641\\-289.3014\\-87\\116.2109\\-290.6293\\-87\\114.2578\\-291.6786\\-87\\112.3047\\-292.9773\\-87\\110.3516\\-294.0938\\-87\\108.3984\\-294.9844\\-87\\106.4453\\-295.6913\\-87\\104.4922\\-296.6759\\-87\\102.5391\\-297.2688\\-87\\100.5859\\-298.2502\\-87\\96.67969\\-299.4066\\-87\\94.72656\\-300.1621\\-87\\92.77344\\-300.5582\\-87\\86.91406\\-301.3855\\-87\\83.00781\\-302.0349\\-87\\79.10156\\-302.3664\\-87\\75.19531\\-302.4189\\-87\\71.28906\\-302.302\\-87\\67.38281\\-301.9063\\-87\\65.42969\\-301.5546\\-87\\59.57031\\-300.6698\\-87\\57.61719\\-300.2462\\-87\\55.66406\\-299.4311\\-87\\53.71094\\-298.8183\\-87\\51.75781\\-298.0088\\-87\\49.80469\\-297.0297\\-87\\47.85156\\-296.2511\\-87\\45.89844\\-295.1125\\-87\\43.94531\\-294.1528\\-87\\41.99219\\-292.8612\\-87\\36.13281\\-288.1733\\-87\\34.00143\\-286.1953\\-87\\30.70665\\-282.2891\\-87\\28.32031\\-279.6927\\-87\\25.87544\\-276.4297\\-87\\24.78299\\-274.4766\\-87\\24.41406\\-274.0683\\-87\\22.46094\\-271.1273\\-87\\21.98882\\-270.5703\\-87\\20.9763\\-268.6172\\-87\\19.75994\\-266.6641\\-87\\19.11734\\-264.7109\\-87\\17.99581\\-262.7578\\-87\\17.3133\\-260.8047\\-87\\16.22498\\-258.8516\\-87\\15.51589\\-256.8984\\-87\\12.77043\\-251.0391\\-87\\11.35578\\-249.0859\\-87\\10.74219\\-248.3856\\-87\\8.789063\\-247.0694\\-87\\6.835938\\-246.2015\\-87\\4.882813\\-245.8618\\-87\\0.9765625\\-245.7929\\-87\\-0.9765625\\-245.8711\\-87\\-6.835938\\-248.1008\\-87\\-8.789063\\-249.5742\\-87\\-10.74219\\-251.4601\\-87\\-11.86294\\-252.9922\\-87\\-13.10532\\-254.9453\\-87\\-13.99075\\-256.8984\\-87\\-15.13991\\-258.8516\\-87\\-16.04269\\-260.8047\\-87\\-17.31451\\-262.7578\\-87\\-18.18427\\-264.7109\\-87\\-19.39087\\-266.6641\\-87\\-20.32955\\-268.6172\\-87\\-21.64132\\-270.5703\\-87\\-23.11779\\-272.5234\\-87\\-24.36188\\-274.4766\\-87\\-25.70522\\-276.4297\\-87\\-28.32031\\-279.7856\\-87\\-30.6866\\-282.2891\\-87\\-33.80801\\-286.1953\\-87\\-36.13281\\-288.4588\\-87\\-38.08594\\-289.9632\\-87\\-41.99219\\-293.2393\\-87\\-43.94531\\-294.6736\\-87\\-45.89844\\-295.6012\\-87\\-47.85156\\-296.7499\\-87\\-49.80469\\-297.5354\\-87\\-51.75781\\-298.6258\\-87\\-53.71094\\-299.2766\\-87\\-55.66406\\-300.1752\\-87\\-57.61719\\-300.6427\\-87\\-61.52344\\-301.319\\-87\\-65.42969\\-302.088\\-87\\-67.38281\\-302.3152\\-87\\-71.28906\\-302.4978\\-87\\-73.24219\\-302.5179\\-87\\-77.14844\\-302.3884\\-87\\-79.10156\\-302.2232\\-87"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "333"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "83"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-302.0735\\-85\\-83.00781\\-301.4202\\-85\\-86.91406\\-300.9008\\-85\\-90.82031\\-300.2229\\-85\\-92.77344\\-299.5461\\-85\\-96.67969\\-298.4503\\-85\\-98.63281\\-297.4965\\-85\\-102.5391\\-296.1337\\-85\\-104.4922\\-295.1884\\-85\\-106.4453\\-294.5411\\-85\\-108.3984\\-293.3349\\-85\\-110.3516\\-292.3109\\-85\\-113.7181\\-290.1016\\-85\\-114.2578\\-289.6652\\-85\\-116.2109\\-288.6679\\-85\\-118.1641\\-287.2744\\-85\\-120.1172\\-285.7268\\-85\\-124.0234\\-282.7558\\-85\\-125.9766\\-281.1497\\-85\\-127.9297\\-279.3659\\-85\\-129.8828\\-277.392\\-85\\-131.8359\\-275.5487\\-85\\-134.7973\\-272.5234\\-85\\-136.5412\\-270.5703\\-85\\-139.8959\\-266.6641\\-85\\-142.7532\\-262.7578\\-85\\-143.5547\\-261.756\\-85\\-146.9038\\-256.8984\\-85\\-148.3311\\-254.9453\\-85\\-150.5172\\-251.0391\\-85\\-151.8524\\-249.0859\\-85\\-152.8416\\-247.1328\\-85\\-154.0864\\-245.1797\\-85\\-154.9871\\-243.2266\\-85\\-156.0658\\-241.2734\\-85\\-156.7219\\-239.3203\\-85\\-157.887\\-237.3672\\-85\\-158.6398\\-235.4141\\-85\\-159.7634\\-233.4609\\-85\\-160.4452\\-231.5078\\-85\\-161.449\\-229.5547\\-85\\-162.0558\\-227.6016\\-85\\-162.4874\\-225.6484\\-85\\-163.3478\\-223.6953\\-85\\-163.9237\\-221.7422\\-85\\-164.3494\\-219.7891\\-85\\-165.0912\\-217.8359\\-85\\-165.7336\\-215.8828\\-85\\-166.5728\\-211.9766\\-85\\-167.1819\\-210.0234\\-85\\-167.5698\\-208.0703\\-85\\-168.0279\\-204.1641\\-85\\-168.7589\\-196.3516\\-85\\-168.9853\\-194.3984\\-85\\-169.2397\\-190.4922\\-85\\-169.2518\\-186.5859\\-85\\-169.1043\\-182.6797\\-85\\-168.5002\\-176.8203\\-85\\-167.9982\\-170.9609\\-85\\-167.589\\-167.0547\\-85\\-167.2702\\-165.1016\\-85\\-166.7517\\-163.1484\\-85\\-166.3392\\-161.1953\\-85\\-165.648\\-157.2891\\-85\\-165.1611\\-155.3359\\-85\\-164.4714\\-153.3828\\-85\\-163.6258\\-149.4766\\-85\\-162.8399\\-147.5234\\-85\\-162.2392\\-145.5703\\-85\\-161.7902\\-143.6172\\-85\\-159.4256\\-137.7578\\-85\\-158.3368\\-135.8047\\-85\\-157.4673\\-133.8516\\-85\\-156.3358\\-131.8984\\-85\\-155.5272\\-129.9453\\-85\\-153.3203\\-126.3074\\-85\\-151.8621\\-124.0859\\-85\\-150.3641\\-122.1328\\-85\\-149.4141\\-120.6781\\-85\\-147.5042\\-118.2266\\-85\\-145.8256\\-116.2734\\-85\\-142.094\\-112.3672\\-85\\-139.6484\\-109.9604\\-85\\-137.6953\\-108.241\\-85\\-135.4797\\-106.5078\\-85\\-133.7891\\-105.4083\\-85\\-131.8359\\-103.7064\\-85\\-129.8828\\-102.183\\-85\\-125.9766\\-99.79311\\-85\\-124.0234\\-98.77449\\-85\\-120.1172\\-96.40673\\-85\\-118.1641\\-95.51968\\-85\\-116.2109\\-94.50658\\-85\\-112.3047\\-93.10009\\-85\\-110.3516\\-92.19567\\-85\\-108.3984\\-91.49225\\-85\\-106.4453\\-90.68153\\-85\\-104.4922\\-90.18153\\-85\\-100.5859\\-89.34821\\-85\\-96.67969\\-88.40162\\-85\\-94.72656\\-88.06088\\-85\\-88.86719\\-87.3125\\-85\\-86.91406\\-86.85347\\-85\\-81.05469\\-86.17361\\-85\\-75.19531\\-85.96461\\-85\\-69.33594\\-85.98595\\-85\\-63.47656\\-86.20229\\-85\\-57.61719\\-86.71875\\-85\\-55.66406\\-87.1489\\-85\\-47.85156\\-88.147\\-85\\-43.94531\\-88.93841\\-85\\-41.99219\\-89.55381\\-85\\-38.08594\\-90.66844\\-85\\-36.13281\\-91.69441\\-85\\-34.17969\\-92.16885\\-85\\-32.22656\\-93.08656\\-85\\-30.27344\\-93.88593\\-85\\-26.36719\\-95.92704\\-85\\-24.41406\\-97.43646\\-85\\-22.46094\\-99.12306\\-85\\-20.50781\\-100.3781\\-85\\-18.55469\\-102.3032\\-85\\-16.60156\\-104.5666\\-85\\-15.32813\\-106.5078\\-85\\-13.88451\\-108.4609\\-85\\-12.79386\\-110.4141\\-85\\-10.23888\\-114.3203\\-85\\-8.079529\\-118.2266\\-85\\-7.106236\\-120.1797\\-85\\-5.817282\\-122.1328\\-85\\-4.27132\\-124.0859\\-85\\-2.929688\\-126.2721\\-85\\-0.9765625\\-127.7083\\-85\\0.9765625\\-128.0736\\-85\\2.929688\\-126.6759\\-85\\3.348214\\-126.0391\\-85\\4.199219\\-124.0859\\-85\\5.449567\\-122.1328\\-85\\6.338266\\-120.1797\\-85\\7.642663\\-118.2266\\-85\\8.53056\\-116.2734\\-85\\10.74219\\-112.8805\\-85\\12.55446\\-110.4141\\-85\\13.62581\\-108.4609\\-85\\15.26663\\-106.5078\\-85\\18.55469\\-102.9866\\-85\\20.82689\\-100.6484\\-85\\22.46094\\-99.21332\\-85\\24.41406\\-97.37943\\-85\\26.36719\\-95.68853\\-85\\28.32031\\-94.50133\\-85\\30.78676\\-92.83594\\-85\\34.17969\\-90.78242\\-85\\36.13281\\-89.87186\\-85\\38.08594\\-88.76549\\-85\\41.99219\\-87.35217\\-85\\43.94531\\-86.49568\\-85\\45.89844\\-86.04954\\-85\\47.85156\\-85.73179\\-85\\49.80469\\-84.92106\\-85\\51.75781\\-84.54213\\-85\\55.66406\\-84.09245\\-85\\57.61719\\-83.7636\\-85\\59.57031\\-83.61869\\-85\\67.38281\\-83.38507\\-85\\69.33594\\-83.36893\\-85\\75.19531\\-83.86872\\-85\\77.14844\\-84.12524\\-85\\81.05469\\-84.43218\\-85\\83.00781\\-84.65176\\-85\\86.91406\\-85.40022\\-85\\88.86719\\-85.89787\\-85\\92.77344\\-86.51252\\-85\\94.72656\\-86.93654\\-85\\96.67969\\-87.57807\\-85\\100.5859\\-88.30953\\-85\\104.4922\\-89.73114\\-85\\106.4453\\-90.31426\\-85\\110.3516\\-91.98917\\-85\\112.3047\\-92.59544\\-85\\114.2578\\-93.54046\\-85\\116.2109\\-94.3158\\-85\\118.1641\\-95.46568\\-85\\120.1172\\-96.34459\\-85\\125.9766\\-99.82162\\-85\\127.9297\\-101.1291\\-85\\129.8828\\-102.3214\\-85\\131.8359\\-103.8413\\-85\\134.9626\\-106.5078\\-85\\137.6953\\-108.9063\\-85\\141.0404\\-112.3672\\-85\\143.5547\\-115.3052\\-85\\145.9284\\-118.2266\\-85\\147.4609\\-120.2524\\-85\\150.0498\\-124.0859\\-85\\151.3672\\-126.3519\\-85\\153.7228\\-129.9453\\-85\\154.701\\-131.8984\\-85\\155.8821\\-133.8516\\-85\\156.5524\\-135.8047\\-85\\157.6335\\-137.7578\\-85\\158.3499\\-139.7109\\-85\\159.4154\\-141.6641\\-85\\160.7489\\-145.5703\\-85\\161.6244\\-147.5234\\-85\\162.3831\\-151.4297\\-85\\162.9118\\-153.3828\\-85\\163.5957\\-155.3359\\-85\\164.5058\\-161.1953\\-85\\165.426\\-165.1016\\-85\\165.7088\\-167.0547\\-85\\166.4568\\-174.8672\\-85\\166.8683\\-178.7734\\-85\\167.2175\\-182.6797\\-85\\167.4338\\-188.5391\\-85\\167.5374\\-194.3984\\-85\\167.5046\\-202.2109\\-85\\167.4116\\-206.1172\\-85\\167.073\\-211.9766\\-85\\165.6672\\-223.6953\\-85\\165.2629\\-225.6484\\-85\\164.6369\\-227.6016\\-85\\163.8292\\-231.5078\\-85\\163.2561\\-233.4609\\-85\\162.4962\\-235.4141\\-85\\162.0558\\-237.3672\\-85\\161.4583\\-239.3203\\-85\\160.4452\\-241.2734\\-85\\159.7301\\-243.2266\\-85\\158.4967\\-245.1797\\-85\\157.6233\\-247.1328\\-85\\156.4097\\-249.0859\\-85\\155.5213\\-251.0391\\-85\\153.3203\\-254.4661\\-85\\150.2114\\-258.8516\\-85\\148.6603\\-260.8047\\-85\\147.4609\\-262.4749\\-85\\143.5547\\-267.1406\\-85\\140.4284\\-270.5703\\-85\\138.453\\-272.5234\\-85\\137.6953\\-273.4023\\-85\\134.583\\-276.4297\\-85\\133.7891\\-277.0945\\-85\\129.8828\\-280.6793\\-85\\127.7875\\-282.2891\\-85\\125.9766\\-283.4847\\-85\\122.0703\\-286.7096\\-85\\120.1172\\-287.8828\\-85\\116.2109\\-290.4206\\-85\\114.2578\\-291.4407\\-85\\112.3047\\-292.8037\\-85\\108.3984\\-294.8562\\-85\\106.4453\\-295.486\\-85\\104.4922\\-296.5321\\-85\\102.5391\\-297.1272\\-85\\100.5859\\-298.0495\\-85\\98.63281\\-298.7329\\-85\\96.67969\\-299.2801\\-85\\94.72656\\-300.0158\\-85\\92.77344\\-300.4695\\-85\\90.82031\\-300.7927\\-85\\84.96094\\-301.5816\\-85\\83.00781\\-301.9211\\-85\\79.10156\\-302.2787\\-85\\75.19531\\-302.325\\-85\\71.28906\\-302.1985\\-85\\67.38281\\-301.7809\\-85\\65.42969\\-301.4447\\-85\\59.57031\\-300.618\\-85\\57.61719\\-300.1548\\-85\\55.66406\\-299.3404\\-85\\53.71094\\-298.7577\\-85\\51.75781\\-297.9217\\-85\\49.80469\\-296.9807\\-85\\47.85156\\-296.1607\\-85\\43.94531\\-294.032\\-85\\41.99219\\-292.7816\\-85\\38.6734\\-290.1016\\-85\\36.39379\\-288.1484\\-85\\34.23762\\-286.1953\\-85\\32.54958\\-284.2422\\-85\\28.32031\\-279.6516\\-85\\25.87544\\-276.4297\\-85\\24.73461\\-274.4766\\-85\\21.87746\\-270.5703\\-85\\19.64043\\-266.6641\\-85\\18.94947\\-264.7109\\-85\\17.79701\\-262.7578\\-85\\16.9987\\-260.8047\\-85\\15.86359\\-258.8516\\-85\\15.05927\\-256.8984\\-85\\13.91258\\-254.9453\\-85\\12.91689\\-252.9922\\-85\\10.74219\\-250.5092\\-85\\8.789063\\-249.3634\\-85\\4.882813\\-248.8981\\-85\\2.929688\\-248.8196\\-85\\-0.9765625\\-249.0447\\-85\\-2.929688\\-249.2487\\-85\\-4.882813\\-249.6457\\-85\\-6.835938\\-250.4469\\-85\\-8.789063\\-251.5826\\-85\\-10.74219\\-253.133\\-85\\-12.17004\\-254.9453\\-85\\-13.45868\\-256.8984\\-85\\-14.38752\\-258.8516\\-85\\-16.60156\\-262.5442\\-85\\-17.78615\\-264.7109\\-85\\-19.03955\\-266.6641\\-85\\-19.941\\-268.6172\\-85\\-22.77261\\-272.5234\\-85\\-24.01456\\-274.4766\\-85\\-25.5028\\-276.4297\\-85\\-28.32031\\-279.9535\\-85\\-30.56483\\-282.2891\\-85\\-33.80238\\-286.1953\\-85\\-36.13281\\-288.4176\\-85\\-38.08594\\-289.9031\\-85\\-41.99219\\-293.1554\\-85\\-43.94531\\-294.5872\\-85\\-45.89844\\-295.4796\\-85\\-47.85156\\-296.6519\\-85\\-49.80469\\-297.3853\\-85\\-51.75781\\-298.5137\\-85\\-53.71094\\-299.1444\\-85\\-55.66406\\-299.9902\\-85\\-57.61719\\-300.5433\\-85\\-59.57031\\-300.9131\\-85\\-63.47656\\-301.516\\-85\\-67.38281\\-302.1761\\-85\\-71.28906\\-302.3884\\-85\\-73.24219\\-302.4189\\-85\\-77.14844\\-302.2476\\-85"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "315"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "84"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-301.9056\\-83\\-81.05469\\-301.5671\\-83\\-86.91406\\-300.8099\\-83\\-88.86719\\-300.5163\\-83\\-90.82031\\-300.0941\\-83\\-92.77344\\-299.391\\-83\\-96.67969\\-298.3108\\-83\\-98.63281\\-297.3484\\-83\\-100.5859\\-296.7561\\-83\\-104.4922\\-295.0814\\-83\\-106.4453\\-294.3672\\-83\\-106.9578\\-294.0078\\-83\\-110.3037\\-292.0547\\-83\\-113.4171\\-290.1016\\-83\\-114.2578\\-289.4655\\-83\\-116.2109\\-288.4564\\-83\\-118.1641\\-287.0826\\-83\\-122.0703\\-283.9423\\-83\\-125.9766\\-280.9538\\-83\\-128.7539\\-278.3828\\-83\\-129.8828\\-277.2124\\-83\\-131.8359\\-275.3625\\-83\\-134.6071\\-272.5234\\-83\\-136.3295\\-270.5703\\-83\\-139.5452\\-266.6641\\-83\\-141.0812\\-264.7109\\-83\\-144.0398\\-260.8047\\-83\\-145.3081\\-258.8516\\-83\\-148.2077\\-254.9453\\-83\\-149.2513\\-252.9922\\-83\\-150.4328\\-251.0391\\-83\\-151.7286\\-249.0859\\-83\\-152.7319\\-247.1328\\-83\\-154.0246\\-245.1797\\-83\\-154.8984\\-243.2266\\-83\\-156.0059\\-241.2734\\-83\\-156.6368\\-239.3203\\-83\\-157.8217\\-237.3672\\-83\\-158.562\\-235.4141\\-83\\-159.6994\\-233.4609\\-83\\-160.3777\\-231.5078\\-83\\-161.3571\\-229.5547\\-83\\-162.0135\\-227.6016\\-83\\-162.4412\\-225.6484\\-83\\-163.2561\\-223.6953\\-83\\-163.8682\\-221.7422\\-83\\-164.2891\\-219.7891\\-83\\-165.66\\-215.8828\\-83\\-166.4829\\-211.9766\\-83\\-167.0736\\-210.0234\\-83\\-167.4956\\-208.0703\\-83\\-167.9804\\-204.1641\\-83\\-168.5002\\-198.3047\\-83\\-169.076\\-192.4453\\-83\\-169.2397\\-188.5391\\-83\\-169.1876\\-184.6328\\-83\\-169.1043\\-182.6797\\-83\\-168.7725\\-178.7734\\-83\\-168.5561\\-176.8203\\-83\\-167.6998\\-167.0547\\-83\\-167.3996\\-165.1016\\-83\\-166.5323\\-161.1953\\-83\\-165.4644\\-155.3359\\-83\\-164.7772\\-153.3828\\-83\\-164.2545\\-151.4297\\-83\\-163.8661\\-149.4766\\-83\\-163.3085\\-147.5234\\-83\\-162.5065\\-145.5703\\-83\\-161.5248\\-141.6641\\-83\\-160.6158\\-139.7109\\-83\\-159.9235\\-137.7578\\-83\\-158.8518\\-135.8047\\-83\\-157.959\\-133.8516\\-83\\-156.8112\\-131.8984\\-83\\-156.0484\\-129.9453\\-83\\-153.8928\\-126.0391\\-83\\-152.4682\\-124.0859\\-83\\-149.8473\\-120.1797\\-83\\-148.3251\\-118.2266\\-83\\-145.5078\\-114.9307\\-83\\-141.1865\\-110.4141\\-83\\-139.6484\\-108.9135\\-83\\-137.6953\\-107.2303\\-83\\-134.3839\\-104.5547\\-83\\-131.7792\\-102.6016\\-83\\-127.9297\\-99.9248\\-83\\-124.0234\\-97.73802\\-83\\-122.0703\\-96.48843\\-83\\-120.1172\\-95.52827\\-83\\-118.1641\\-94.46354\\-83\\-114.2578\\-92.72743\\-83\\-110.3516\\-91.28665\\-83\\-108.3984\\-90.34706\\-83\\-102.5391\\-88.65842\\-83\\-94.72656\\-87.23856\\-83\\-90.82031\\-86.41951\\-83\\-86.91406\\-85.83724\\-83\\-83.00781\\-85.48167\\-83\\-81.05469\\-84.98241\\-83\\-79.10156\\-84.81744\\-83\\-75.19531\\-84.62865\\-83\\-71.28906\\-84.60393\\-83\\-69.33594\\-84.64838\\-83\\-63.47656\\-85.10122\\-83\\-61.52344\\-85.43034\\-83\\-57.61719\\-85.69161\\-83\\-55.66406\\-85.89385\\-83\\-53.71094\\-86.23595\\-83\\-51.75781\\-86.45998\\-83\\-48.64211\\-86.97656\\-83\\-43.94531\\-87.82481\\-83\\-40.03906\\-88.83546\\-83\\-38.08594\\-89.56409\\-83\\-36.13281\\-90.13978\\-83\\-34.30176\\-90.88281\\-83\\-30.27344\\-92.63417\\-83\\-26.36719\\-94.57677\\-83\\-24.41406\\-95.74237\\-83\\-23.12859\\-96.74219\\-83\\-20.82376\\-98.69531\\-83\\-18.55469\\-100.9207\\-83\\-16.60156\\-103.0047\\-83\\-15.30198\\-104.5547\\-83\\-13.8718\\-106.5078\\-83\\-11.3801\\-110.4141\\-83\\-10.06944\\-112.3672\\-83\\-5.530895\\-120.1797\\-83\\-2.929688\\-123.1405\\-83\\-0.9765625\\-124.9315\\-83\\0.9765625\\-124.8909\\-83\\2.929688\\-122.7348\\-83\\3.352239\\-122.1328\\-83\\4.347581\\-120.1797\\-83\\6.526067\\-116.2734\\-83\\8.789063\\-112.8027\\-83\\10.5523\\-110.4141\\-83\\11.71875\\-108.4609\\-83\\13.29985\\-106.5078\\-83\\14.983\\-104.5547\\-83\\16.60156\\-102.8066\\-83\\20.79102\\-98.69531\\-83\\24.41406\\-95.47691\\-83\\26.36719\\-94.0629\\-83\\32.22656\\-90.26563\\-83\\34.17969\\-89.32198\\-83\\36.13281\\-88.23328\\-83\\41.99219\\-85.97813\\-83\\43.94531\\-85.45313\\-83\\45.89844\\-84.70289\\-83\\47.85156\\-84.21642\\-83\\49.80469\\-83.8987\\-83\\53.71094\\-83.13028\\-83\\55.66406\\-82.7995\\-83\\57.61719\\-82.62018\\-83\\61.52344\\-82.45908\\-83\\65.42969\\-82.39893\\-83\\69.33594\\-82.39423\\-83\\71.28906\\-82.50349\\-83\\75.19531\\-82.83563\\-83\\79.10156\\-83.36105\\-83\\83.00781\\-83.83429\\-83\\88.86719\\-84.75775\\-83\\90.82031\\-85.33382\\-83\\92.77344\\-85.77927\\-83\\96.67969\\-86.55904\\-83\\100.5859\\-87.71902\\-83\\102.5391\\-88.16048\\-83\\106.4453\\-89.59165\\-83\\108.3984\\-90.19986\\-83\\112.3047\\-91.88457\\-83\\114.2578\\-92.58276\\-83\\116.2109\\-93.63811\\-83\\118.1641\\-94.54294\\-83\\120.1172\\-95.63962\\-83\\122.0703\\-96.56671\\-83\\125.9766\\-99.1729\\-83\\127.9297\\-100.1817\\-83\\131.2328\\-102.6016\\-83\\133.7412\\-104.5547\\-83\\137.6953\\-108.0625\\-83\\140.0905\\-110.4141\\-83\\141.8067\\-112.3672\\-83\\143.5547\\-114.5138\\-83\\144.8775\\-116.2734\\-83\\148.03\\-120.1797\\-83\\149.4141\\-122.3582\\-83\\150.3906\\-124.0859\\-83\\151.7454\\-126.0391\\-83\\154.127\\-129.9453\\-83\\156.1707\\-133.8516\\-83\\156.9132\\-135.8047\\-83\\157.9549\\-137.7578\\-83\\158.6882\\-139.7109\\-83\\159.7385\\-141.6641\\-83\\160.2997\\-143.6172\\-83\\161.8065\\-147.5234\\-83\\162.4835\\-151.4297\\-83\\163.6766\\-155.3359\\-83\\164.5146\\-161.1953\\-83\\165.426\\-165.1016\\-83\\165.6986\\-167.0547\\-83\\166.2585\\-172.9141\\-83\\166.9388\\-180.7266\\-83\\167.2054\\-184.6328\\-83\\167.2871\\-186.5859\\-83\\167.4434\\-194.3984\\-83\\167.4241\\-200.2578\\-83\\167.2982\\-206.1172\\-83\\167.073\\-210.0234\\-83\\166.7026\\-213.9297\\-83\\165.857\\-221.7422\\-83\\165.5853\\-223.6953\\-83\\165.1198\\-225.6484\\-83\\164.5058\\-227.6016\\-83\\163.7612\\-231.5078\\-83\\162.4165\\-235.4141\\-83\\161.9962\\-237.3672\\-83\\161.3164\\-239.3203\\-83\\160.3504\\-241.2734\\-83\\159.6089\\-243.2266\\-83\\158.3951\\-245.1797\\-83\\157.4857\\-247.1328\\-83\\156.3228\\-249.0859\\-83\\155.3615\\-251.0391\\-83\\154.1969\\-252.9922\\-83\\152.7894\\-254.9453\\-83\\150.1098\\-258.8516\\-83\\147.4609\\-262.3038\\-83\\145.3897\\-264.7109\\-83\\142.1606\\-268.6172\\-83\\140.2927\\-270.5703\\-83\\139.6484\\-271.1129\\-83\\137.6953\\-273.221\\-83\\134.4132\\-276.4297\\-83\\129.8828\\-280.4117\\-83\\127.4371\\-282.2891\\-83\\125.9766\\-283.3078\\-83\\122.0703\\-286.4673\\-83\\120.1172\\-287.6117\\-83\\118.1641\\-288.999\\-83\\114.2578\\-291.2527\\-83\\112.3047\\-292.6204\\-83\\110.3516\\-293.5486\\-83\\108.3984\\-294.7231\\-83\\106.4453\\-295.3246\\-83\\104.4922\\-296.3556\\-83\\102.5391\\-297.003\\-83\\98.63281\\-298.6199\\-83\\96.67969\\-299.1485\\-83\\94.57465\\-299.8672\\-83\\92.77344\\-300.3675\\-83\\88.86719\\-300.9908\\-83\\84.96094\\-301.4646\\-83\\81.05469\\-302.0201\\-83\\79.10156\\-302.1505\\-83\\75.19531\\-302.2123\\-83\\71.28906\\-302.0608\\-83\\69.33594\\-301.8906\\-83\\59.57031\\-300.5468\\-83\\57.61719\\-300.0569\\-83\\55.66406\\-299.2597\\-83\\53.71094\\-298.7004\\-83\\47.85156\\-296.0617\\-83\\44.09124\\-294.0078\\-83\\41.99219\\-292.6926\\-83\\38.78021\\-290.1016\\-83\\34.3623\\-286.1953\\-83\\32.63041\\-284.2422\\-83\\28.32031\\-279.6128\\-83\\25.83764\\-276.4297\\-83\\24.625\\-274.4766\\-83\\23.2433\\-272.5234\\-83\\21.72998\\-270.5703\\-83\\20.50781\\-268.6051\\-83\\19.53125\\-266.6641\\-83\\18.6579\\-264.7109\\-83\\14.64844\\-257.4864\\-83\\12.69531\\-254.6587\\-83\\10.74219\\-252.786\\-83\\8.789063\\-252.0156\\-83\\6.835938\\-251.5844\\-83\\2.929688\\-251.3899\\-83\\0.9765625\\-251.4968\\-83\\-0.9765625\\-251.7201\\-83\\-2.929688\\-252.1444\\-83\\-6.835938\\-252.8312\\-83\\-10.74219\\-254.6893\\-83\\-12.69531\\-257.1426\\-83\\-15.02623\\-260.8047\\-83\\-16.07771\\-262.7578\\-83\\-17.42608\\-264.7109\\-83\\-18.47076\\-266.6641\\-83\\-19.63337\\-268.6172\\-83\\-22.2853\\-272.5234\\-83\\-24.41406\\-275.3035\\-83\\-28.32031\\-280.1218\\-83\\-32.22656\\-284.3381\\-83\\-33.80238\\-286.1953\\-83\\-36.13281\\-288.3594\\-83\\-38.08594\\-289.817\\-83\\-41.99219\\-293.0818\\-83\\-43.94531\\-294.4995\\-83\\-45.89844\\-295.3656\\-83\\-47.85156\\-296.5541\\-83\\-49.80469\\-297.2572\\-83\\-51.75781\\-298.3782\\-83\\-53.71094\\-299.0233\\-83\\-55.89489\\-299.8672\\-83\\-57.61719\\-300.4413\\-83\\-59.57031\\-300.8154\\-83\\-63.47656\\-301.3722\\-83\\-67.38281\\-301.9931\\-83\\-71.28906\\-302.2581\\-83\\-73.24219\\-302.2818\\-83\\-77.14844\\-302.1003\\-83"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "311"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "85"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-77.14844\\-301.9211\\-81\\-81.05469\\-301.4229\\-81\\-84.96094\\-300.9774\\-81\\-88.86719\\-300.4176\\-81\\-90.82031\\-299.9198\\-81\\-92.77344\\-299.2366\\-81\\-94.72656\\-298.7561\\-81\\-96.67969\\-298.1258\\-81\\-98.63281\\-297.2157\\-81\\-100.5859\\-296.6665\\-81\\-102.5391\\-295.702\\-81\\-104.4922\\-294.9722\\-81\\-106.4453\\-294.1205\\-81\\-108.3984\\-293.0094\\-81\\-110.3516\\-291.7292\\-81\\-112.3047\\-290.657\\-81\\-114.2578\\-289.2898\\-81\\-116.2109\\-288.2223\\-81\\-118.1641\\-286.8937\\-81\\-122.0703\\-283.6973\\-81\\-125.9766\\-280.7336\\-81\\-128.52\\-278.3828\\-81\\-131.8359\\-275.168\\-81\\-134.3994\\-272.5234\\-81\\-136.0802\\-270.5703\\-81\\-142.4154\\-262.7578\\-81\\-143.8427\\-260.8047\\-81\\-145.0806\\-258.8516\\-81\\-148.0705\\-254.9453\\-81\\-149.0505\\-252.9922\\-81\\-151.5789\\-249.0859\\-81\\-152.617\\-247.1328\\-81\\-153.9246\\-245.1797\\-81\\-154.7919\\-243.2266\\-81\\-155.9309\\-241.2734\\-81\\-156.5448\\-239.3203\\-81\\-157.7269\\-237.3672\\-81\\-158.4813\\-235.4141\\-81\\-159.6354\\-233.4609\\-81\\-160.3154\\-231.5078\\-81\\-161.232\\-229.5547\\-81\\-161.9656\\-227.6016\\-81\\-162.4079\\-225.6484\\-81\\-163.8143\\-221.7422\\-81\\-164.2376\\-219.7891\\-81\\-164.8324\\-217.8359\\-81\\-165.5773\\-215.8828\\-81\\-166.3925\\-211.9766\\-81\\-167.4116\\-208.0703\\-81\\-167.9281\\-204.1641\\-81\\-168.4275\\-198.3047\\-81\\-169.0009\\-192.4453\\-81\\-169.2004\\-188.5391\\-81\\-169.1599\\-184.6328\\-81\\-169.076\\-182.6797\\-81\\-168.7725\\-178.7734\\-81\\-168.3992\\-174.8672\\-81\\-167.7511\\-167.0547\\-81\\-167.1945\\-163.1484\\-81\\-166.324\\-159.2422\\-81\\-165.6454\\-155.3359\\-81\\-165.1198\\-153.3828\\-81\\-164.4531\\-151.4297\\-81\\-163.6169\\-147.5234\\-81\\-162.8017\\-145.5703\\-81\\-162.2375\\-143.6172\\-81\\-161.8277\\-141.6641\\-81\\-159.4289\\-135.8047\\-81\\-158.3047\\-133.8516\\-81\\-157.4428\\-131.8984\\-81\\-156.3459\\-129.9453\\-81\\-155.5535\\-127.9922\\-81\\-153.3203\\-124.3542\\-81\\-151.871\\-122.1328\\-81\\-148.9444\\-118.2266\\-81\\-147.5483\\-116.2734\\-81\\-145.9615\\-114.3203\\-81\\-141.6016\\-109.6635\\-81\\-139.6484\\-107.7711\\-81\\-137.6953\\-106.1369\\-81\\-135.7422\\-104.7688\\-81\\-131.8359\\-101.6896\\-81\\-127.4414\\-98.69531\\-81\\-125.9766\\-97.94458\\-81\\-120.1172\\-94.48679\\-81\\-118.1641\\-93.67997\\-81\\-116.2109\\-92.69747\\-81\\-114.2578\\-92.02117\\-81\\-110.3516\\-90.23841\\-81\\-108.3984\\-89.64409\\-81\\-106.4453\\-88.88831\\-81\\-104.4922\\-88.25787\\-81\\-100.5859\\-87.61167\\-81\\-96.67969\\-86.60686\\-81\\-92.77344\\-85.97512\\-81\\-86.91406\\-84.70531\\-81\\-83.00781\\-84.31712\\-81\\-81.05469\\-84.02625\\-81\\-79.10156\\-83.8987\\-81\\-75.19531\\-83.77866\\-81\\-69.33594\\-83.72843\\-81\\-63.47656\\-84.07345\\-81\\-61.52344\\-84.27178\\-81\\-57.61719\\-84.48897\\-81\\-55.66406\\-84.72011\\-81\\-51.75781\\-85.52629\\-81\\-49.80469\\-85.75586\\-81\\-47.85156\\-86.1244\\-81\\-45.89844\\-86.31013\\-81\\-43.94531\\-86.68583\\-81\\-41.99219\\-87.47942\\-81\\-38.08594\\-88.32025\\-81\\-36.13281\\-89.08693\\-81\\-32.22656\\-90.49656\\-81\\-30.27344\\-91.47173\\-81\\-28.32031\\-92.31375\\-81\\-26.36719\\-93.42802\\-81\\-24.41406\\-94.34517\\-81\\-22.46094\\-95.72807\\-81\\-20.50781\\-97.31322\\-81\\-19.07723\\-98.69531\\-81\\-16.60156\\-101.2395\\-81\\-15.36923\\-102.6016\\-81\\-13.8747\\-104.5547\\-81\\-12.69531\\-106.4955\\-81\\-10.74219\\-109.2358\\-81\\-8.725767\\-112.3672\\-81\\-7.615613\\-114.3203\\-81\\-6.260016\\-116.2734\\-81\\-5.334165\\-118.2266\\-81\\-2.929688\\-120.9169\\-81\\-0.9765625\\-122.3632\\-81\\0.9765625\\-121.8732\\-81\\2.238724\\-120.1797\\-81\\4.649475\\-116.2734\\-81\\6.034045\\-114.3203\\-81\\6.835938\\-112.9692\\-81\\9.896415\\-108.4609\\-81\\11.50077\\-106.5078\\-81\\14.80962\\-102.6016\\-81\\20.88867\\-96.74219\\-81\\22.46094\\-95.375\\-81\\24.41406\\-93.82078\\-81\\25.79753\\-92.83594\\-81\\30.27344\\-89.87449\\-81\\32.22656\\-88.79405\\-81\\34.17969\\-87.86086\\-81\\36.13281\\-86.80846\\-81\\40.03906\\-85.45119\\-81\\41.99219\\-84.63133\\-81\\45.89844\\-83.61038\\-81\\48.15463\\-83.07031\\-81\\51.75781\\-82.29334\\-81\\57.61719\\-81.80862\\-81\\61.52344\\-81.70454\\-81\\69.33594\\-81.7101\\-81\\73.24219\\-82.00439\\-81\\75.19531\\-82.09375\\-81\\81.05469\\-82.54613\\-81\\84.96094\\-83.35884\\-81\\90.82031\\-84.35731\\-81\\94.72656\\-85.37115\\-81\\98.63281\\-86.26693\\-81\\100.5859\\-86.8138\\-81\\102.5391\\-87.60239\\-81\\104.4922\\-88.06683\\-81\\106.4453\\-88.72369\\-81\\108.3984\\-89.54333\\-81\\110.3516\\-90.19607\\-81\\112.3047\\-91.13458\\-81\\114.2578\\-91.88525\\-81\\118.1641\\-93.87893\\-81\\120.1172\\-94.95054\\-81\\122.0703\\-95.862\\-81\\124.0234\\-97.13135\\-81\\125.9766\\-98.25201\\-81\\131.8359\\-102.2037\\-81\\133.7891\\-103.8071\\-81\\137.6953\\-107.3896\\-81\\139.6484\\-109.2873\\-81\\142.4437\\-112.3672\\-81\\145.546\\-116.2734\\-81\\147.4609\\-118.807\\-81\\149.7919\\-122.1328\\-81\\150.7853\\-124.0859\\-81\\153.4769\\-127.9922\\-81\\154.4495\\-129.9453\\-81\\155.6279\\-131.8984\\-81\\156.3904\\-133.8516\\-81\\157.362\\-135.8047\\-81\\159.0243\\-139.7109\\-81\\159.941\\-141.6641\\-81\\160.4798\\-143.6172\\-81\\161.3164\\-145.5703\\-81\\161.8984\\-147.5234\\-81\\162.5527\\-151.4297\\-81\\163.1705\\-153.3828\\-81\\163.6847\\-155.3359\\-81\\164.5267\\-161.1953\\-81\\165.4061\\-165.1016\\-81\\165.8471\\-169.0078\\-81\\166.1955\\-172.9141\\-81\\167.073\\-184.6328\\-81\\167.2296\\-188.5391\\-81\\167.322\\-196.3516\\-81\\167.2759\\-202.2109\\-81\\167.1143\\-206.1172\\-81\\166.7046\\-211.9766\\-81\\166.1706\\-217.8359\\-81\\165.7589\\-221.7422\\-81\\165.4738\\-223.6953\\-81\\164.3824\\-227.6016\\-81\\163.6684\\-231.5078\\-81\\162.9132\\-233.4609\\-81\\162.3204\\-235.4141\\-81\\161.9225\\-237.3672\\-81\\159.4406\\-243.2266\\-81\\158.277\\-245.1797\\-81\\157.3073\\-247.1328\\-81\\155.2734\\-250.9142\\-81\\154.1051\\-252.9922\\-81\\152.6423\\-254.9453\\-81\\149.996\\-258.8516\\-81\\147.4609\\-262.1414\\-81\\145.1944\\-264.7109\\-81\\142.0495\\-268.6172\\-81\\139.6484\\-270.9647\\-81\\137.6953\\-273.0409\\-81\\135.7422\\-275.0126\\-81\\134.1973\\-276.4297\\-81\\131.8773\\-278.3828\\-81\\129.6609\\-280.3359\\-81\\127.9297\\-281.614\\-81\\124.0234\\-284.6997\\-81\\122.0058\\-286.1953\\-81\\120.1172\\-287.4311\\-81\\118.1641\\-288.819\\-81\\116.2109\\-289.8215\\-81\\115.8854\\-290.1016\\-81\\112.7102\\-292.0547\\-81\\112.3047\\-292.3824\\-81\\110.3516\\-293.3428\\-81\\108.3984\\-294.5575\\-81\\106.4453\\-295.1932\\-81\\104.4922\\-296.1324\\-81\\102.5391\\-296.8829\\-81\\100.5859\\-297.5325\\-81\\98.63281\\-298.4875\\-81\\96.67969\\-299.0009\\-81\\92.77344\\-300.2641\\-81\\88.86719\\-300.9008\\-81\\84.96094\\-301.3454\\-81\\81.05469\\-301.8597\\-81\\77.14844\\-302.0608\\-81\\73.24219\\-302.0201\\-81\\69.33594\\-301.7344\\-81\\63.47656\\-301.0261\\-81\\59.57031\\-300.4695\\-81\\57.61719\\-299.9343\\-81\\55.66406\\-299.182\\-81\\53.71094\\-298.6257\\-81\\51.75781\\-297.6646\\-81\\49.80469\\-296.857\\-81\\45.89844\\-294.9411\\-81\\41.99219\\-292.5751\\-81\\38.92624\\-290.1016\\-81\\34.50521\\-286.1953\\-81\\28.32031\\-279.609\\-81\\25.77718\\-276.4297\\-81\\23.08618\\-272.5234\\-81\\21.57054\\-270.5703\\-81\\20.2469\\-268.6172\\-81\\19.39087\\-266.6641\\-81\\18.22684\\-264.7109\\-81\\17.22935\\-262.7578\\-81\\15.85662\\-260.8047\\-81\\14.64844\\-258.8616\\-81\\12.69531\\-256.5297\\-81\\10.74219\\-255.0517\\-81\\8.789063\\-254.4778\\-81\\6.835938\\-254.3531\\-81\\2.929688\\-254.2459\\-81\\0.9765625\\-254.3228\\-81\\-6.835938\\-255.1459\\-81\\-10.74219\\-256.5698\\-81\\-13.02621\\-258.8516\\-81\\-14.18235\\-260.8047\\-81\\-14.64844\\-261.3851\\-81\\-16.88368\\-264.7109\\-81\\-17.9579\\-266.6641\\-81\\-19.31866\\-268.6172\\-81\\-20.50781\\-270.5594\\-81\\-21.89867\\-272.5234\\-81\\-25.21307\\-276.4297\\-81\\-28.32031\\-280.2907\\-81\\-32.22656\\-284.3707\\-81\\-33.82662\\-286.1953\\-81\\-36.13281\\-288.3138\\-81\\-38.08594\\-289.7363\\-81\\-41.99219\\-292.9981\\-81\\-43.94531\\-294.4054\\-81\\-45.89844\\-295.2735\\-81\\-47.85156\\-296.4428\\-81\\-49.80469\\-297.1428\\-81\\-51.75781\\-298.2201\\-81\\-55.66406\\-299.5891\\-81\\-57.61719\\-300.3278\\-81\\-59.57031\\-300.7309\\-81\\-67.38281\\-301.7806\\-81\\-71.28906\\-302.088\\-81\\-75.19531\\-302.086\\-81"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "325"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "86"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-75.19531\\-301.9056\\-79\\-81.05469\\-301.3223\\-79\\-86.91406\\-300.6405\\-79\\-88.86719\\-300.325\\-79\\-92.77344\\-299.1188\\-79\\-94.72656\\-298.6414\\-79\\-98.63281\\-297.0948\\-79\\-100.5859\\-296.5541\\-79\\-102.5391\\-295.5277\\-79\\-104.4922\\-294.8631\\-79\\-108.3984\\-292.8522\\-79\\-110.3516\\-291.4922\\-79\\-112.3047\\-290.4339\\-79\\-114.2578\\-289.1429\\-79\\-115.9566\\-288.1484\\-79\\-118.1641\\-286.6836\\-79\\-118.6844\\-286.1953\\-79\\-121.2553\\-284.2422\\-79\\-122.0703\\-283.4997\\-79\\-125.9766\\-280.4646\\-79\\-128.2552\\-278.3828\\-79\\-131.8359\\-274.9048\\-79\\-134.181\\-272.5234\\-79\\-138.9911\\-266.6641\\-79\\-140.6786\\-264.7109\\-79\\-142.2549\\-262.7578\\-79\\-144.8841\\-258.8516\\-79\\-147.9458\\-254.9453\\-79\\-148.8664\\-252.9922\\-79\\-150.2485\\-251.0391\\-79\\-151.4338\\-249.0859\\-79\\-152.5065\\-247.1328\\-79\\-153.8366\\-245.1797\\-79\\-154.694\\-243.2266\\-79\\-155.8568\\-241.2734\\-79\\-156.4777\\-239.3203\\-79\\-157.6361\\-237.3672\\-79\\-158.4104\\-235.4141\\-79\\-159.5691\\-233.4609\\-79\\-160.2689\\-231.5078\\-79\\-161.1407\\-229.5547\\-79\\-161.9104\\-227.6016\\-79\\-162.352\\-225.6484\\-79\\-162.9993\\-223.6953\\-79\\-163.7612\\-221.7422\\-79\\-164.1565\\-219.7891\\-79\\-164.7135\\-217.8359\\-79\\-165.4738\\-215.8828\\-79\\-166.2775\\-211.9766\\-79\\-166.7359\\-210.0234\\-79\\-167.3242\\-208.0703\\-79\\-167.6217\\-206.1172\\-79\\-168.0623\\-202.2109\\-79\\-168.3607\\-198.3047\\-79\\-168.9056\\-192.4453\\-79\\-169.1181\\-188.5391\\-79\\-169.0903\\-184.6328\\-79\\-168.9056\\-180.7266\\-79\\-168.4028\\-174.8672\\-79\\-167.9571\\-169.0078\\-79\\-167.5927\\-165.1016\\-79\\-167.3503\\-163.1484\\-79\\-166.4557\\-159.2422\\-79\\-165.7804\\-155.3359\\-79\\-165.343\\-153.3828\\-79\\-164.6446\\-151.4297\\-79\\-163.7835\\-147.5234\\-79\\-163.1406\\-145.5703\\-79\\-162.3831\\-143.6172\\-79\\-162.0056\\-141.6641\\-79\\-161.3879\\-139.7109\\-79\\-160.4522\\-137.7578\\-79\\-159.7724\\-135.8047\\-79\\-158.6225\\-133.8516\\-79\\-157.8125\\-131.8984\\-79\\-156.6471\\-129.9453\\-79\\-155.9135\\-127.9922\\-79\\-154.7164\\-126.0391\\-79\\-153.6933\\-124.0859\\-79\\-151.3672\\-120.8111\\-79\\-150.8246\\-120.1797\\-79\\-149.6425\\-118.2266\\-79\\-148.2267\\-116.2734\\-79\\-146.5339\\-114.3203\\-79\\-141.2161\\-108.4609\\-79\\-139.0714\\-106.5078\\-79\\-136.7904\\-104.5547\\-79\\-133.7891\\-102.2153\\-79\\-131.8359\\-100.9333\\-79\\-128.7258\\-98.69531\\-79\\-125.9766\\-97.08083\\-79\\-122.0703\\-94.67867\\-79\\-120.1172\\-93.84505\\-79\\-118.1499\\-92.83594\\-79\\-116.2109\\-91.99976\\-79\\-114.1113\\-90.88281\\-79\\-112.3047\\-90.15039\\-79\\-106.4453\\-88.03507\\-79\\-104.4922\\-87.69362\\-79\\-102.5391\\-87.20681\\-79\\-100.5859\\-86.60764\\-79\\-96.67969\\-85.9118\\-79\\-92.77344\\-84.8796\\-79\\-88.86719\\-84.24342\\-79\\-86.91406\\-83.79723\\-79\\-83.00781\\-83.35047\\-79\\-79.10156\\-83.01238\\-79\\-75.19531\\-82.81854\\-79\\-69.33594\\-82.76467\\-79\\-65.42969\\-83.01189\\-79\\-57.61719\\-83.64178\\-79\\-55.66406\\-83.8391\\-79\\-53.71094\\-84.23113\\-79\\-49.80469\\-84.74544\\-79\\-43.94531\\-85.90234\\-79\\-41.99219\\-86.23736\\-79\\-40.03906\\-86.81118\\-79\\-38.08594\\-87.53566\\-79\\-36.13281\\-88.02985\\-79\\-34.17969\\-88.65842\\-79\\-30.27344\\-90.22469\\-79\\-26.36719\\-92.22028\\-79\\-22.46094\\-94.53678\\-79\\-20.50781\\-95.89951\\-79\\-18.55469\\-97.76348\\-79\\-15.72738\\-100.6484\\-79\\-14.05927\\-102.6016\\-79\\-12.81072\\-104.5547\\-79\\-10.74219\\-107.3701\\-79\\-8.610734\\-110.4141\\-79\\-6.835938\\-113.3685\\-79\\-4.704484\\-116.2734\\-79\\-3.503632\\-118.2266\\-79\\-2.929688\\-118.8618\\-79\\-0.9765625\\-120.2565\\-79\\0.9765625\\-119.2599\\-79\\1.756099\\-118.2266\\-79\\2.821181\\-116.2734\\-79\\4.39021\\-114.3203\\-79\\5.648909\\-112.3672\\-79\\8.292644\\-108.4609\\-79\\9.722794\\-106.5078\\-79\\12.69531\\-103.0699\\-79\\14.99924\\-100.6484\\-79\\16.60156\\-99.20073\\-79\\18.55469\\-97.2476\\-79\\20.50781\\-95.39612\\-79\\24.41406\\-92.38929\\-79\\26.36719\\-91.12471\\-79\\28.32031\\-89.69641\\-79\\30.27344\\-88.53401\\-79\\32.22656\\-87.61967\\-79\\34.17969\\-86.50285\\-79\\36.13281\\-85.80894\\-79\\38.08594\\-84.72589\\-79\\40.03906\\-84.17622\\-79\\43.94531\\-82.88314\\-79\\45.89844\\-82.41187\\-79\\47.85156\\-82.04349\\-79\\49.80469\\-81.82806\\-79\\51.75781\\-81.51247\\-79\\55.66406\\-81.17663\\-79\\57.61719\\-80.85016\\-79\\61.52344\\-80.72225\\-79\\65.42969\\-80.73662\\-79\\69.33594\\-80.82866\\-79\\71.28906\\-80.98222\\-79\\73.24219\\-81.31567\\-79\\77.14844\\-81.59829\\-79\\83.00781\\-82.20297\\-79\\86.91406\\-82.83563\\-79\\88.86719\\-83.32013\\-79\\92.77344\\-84.1373\\-79\\94.72656\\-84.46257\\-79\\96.67969\\-84.91076\\-79\\102.5391\\-86.66319\\-79\\104.4922\\-87.46484\\-79\\106.4453\\-88.00555\\-79\\108.3984\\-88.72369\\-79\\110.3516\\-89.58293\\-79\\112.3047\\-90.28136\\-79\\116.2109\\-92.19932\\-79\\118.1641\\-93.3314\\-79\\120.1172\\-94.11349\\-79\\122.0703\\-95.27016\\-79\\124.0234\\-96.26088\\-79\\125.9766\\-97.70131\\-79\\127.63\\-98.69531\\-79\\131.8359\\-101.6115\\-79\\133.7891\\-103.202\\-79\\139.6484\\-108.6771\\-79\\141.2785\\-110.4141\\-79\\144.4774\\-114.3203\\-79\\145.5078\\-115.5156\\-79\\147.5948\\-118.2266\\-79\\150.1294\\-122.1328\\-79\\152.4212\\-126.0391\\-79\\153.8346\\-127.9922\\-79\\154.7032\\-129.9453\\-79\\155.8919\\-131.8984\\-79\\156.5564\\-133.8516\\-79\\157.6425\\-135.8047\\-79\\158.3542\\-137.7578\\-79\\159.3425\\-139.7109\\-79\\160.0623\\-141.6641\\-79\\160.6257\\-143.6172\\-79\\161.4445\\-145.5703\\-79\\161.9274\\-147.5234\\-79\\162.6042\\-151.4297\\-79\\163.2276\\-153.3828\\-79\\163.6927\\-155.3359\\-79\\164.5091\\-161.1953\\-79\\165.3539\\-165.1016\\-79\\165.7914\\-169.0078\\-79\\166.1113\\-172.9141\\-79\\166.882\\-184.6328\\-79\\167.0444\\-188.5391\\-79\\167.1143\\-192.4453\\-79\\167.1276\\-198.3047\\-79\\167.073\\-202.2109\\-79\\166.7636\\-208.0703\\-79\\166.3656\\-213.9297\\-79\\166.0505\\-217.8359\\-79\\165.6388\\-221.7422\\-79\\165.3096\\-223.6953\\-79\\164.7003\\-225.6484\\-79\\164.2718\\-227.6016\\-79\\163.5459\\-231.5078\\-79\\162.7441\\-233.4609\\-79\\162.2344\\-235.4141\\-79\\161.8268\\-237.3672\\-79\\160.1563\\-241.2734\\-79\\159.2173\\-243.2266\\-79\\157.2266\\-246.9454\\-79\\156.1408\\-249.0859\\-79\\155.0236\\-251.0391\\-79\\154.0045\\-252.9922\\-79\\151.1134\\-256.8984\\-79\\149.8814\\-258.8516\\-79\\148.4185\\-260.8047\\-79\\145.0195\\-264.7109\\-79\\141.8772\\-268.6172\\-79\\139.6484\\-270.7866\\-79\\135.7422\\-274.8281\\-79\\133.7891\\-276.5614\\-79\\131.8359\\-278.1199\\-79\\129.333\\-280.3359\\-79\\125.9766\\-283.0056\\-79\\122.0703\\-285.8061\\-79\\121.619\\-286.1953\\-79\\118.1641\\-288.6263\\-79\\116.2109\\-289.572\\-79\\115.5455\\-290.1016\\-79\\112.2947\\-292.0547\\-79\\108.8469\\-294.0078\\-79\\108.3984\\-294.324\\-79\\104.4922\\-295.8281\\-79\\102.5391\\-296.7499\\-79\\100.5859\\-297.3199\\-79\\98.63281\\-298.2959\\-79\\94.72656\\-299.4094\\-79\\92.77344\\-300.1062\\-79\\90.82031\\-300.5317\\-79\\88.86719\\-300.8099\\-79\\83.00781\\-301.4671\\-79\\79.10156\\-301.8123\\-79\\77.14844\\-301.8754\\-79\\73.24219\\-301.8123\\-79\\69.33594\\-301.5546\\-79\\65.42969\\-301.1672\\-79\\61.52344\\-300.6922\\-79\\59.57031\\-300.3764\\-79\\55.66406\\-299.0954\\-79\\53.71094\\-298.5311\\-79\\51.75781\\-297.5116\\-79\\49.80469\\-296.794\\-79\\47.85156\\-295.7281\\-79\\45.89844\\-294.8669\\-79\\41.99219\\-292.4317\\-79\\39.0625\\-290.1016\\-79\\34.63882\\-286.1953\\-79\\28.32031\\-279.629\\-79\\25.66867\\-276.4297\\-79\\24.16314\\-274.4766\\-79\\22.84483\\-272.5234\\-79\\19.99563\\-268.6172\\-79\\19.15111\\-266.6641\\-79\\16.60156\\-262.844\\-79\\14.64844\\-260.2058\\-79\\12.69531\\-258.3485\\-79\\10.74219\\-257.0139\\-79\\8.789063\\-256.6302\\-79\\2.929688\\-256.5838\\-79\\-0.9765625\\-256.714\\-79\\-4.882813\\-256.9386\\-79\\-6.835938\\-256.8886\\-79\\-8.789063\\-257.7717\\-79\\-10.74219\\-258.4126\\-79\\-12.69531\\-260.0611\\-79\\-14.91757\\-262.7578\\-79\\-16.12338\\-264.7109\\-79\\-16.60156\\-265.3087\\-79\\-18.55469\\-268.2319\\-79\\-18.88533\\-268.6172\\-79\\-20.03368\\-270.5703\\-79\\-21.56085\\-272.5234\\-79\\-26.68531\\-278.3828\\-79\\-28.2219\\-280.3359\\-79\\-32.22656\\-284.3853\\-79\\-33.85417\\-286.1953\\-79\\-36.13281\\-288.2534\\-79\\-38.08594\\-289.6603\\-79\\-41.99219\\-292.916\\-79\\-43.94531\\-294.2775\\-79\\-45.89844\\-295.1784\\-79\\-47.85156\\-296.3339\\-79\\-49.80469\\-297.0514\\-79\\-51.75781\\-298.0361\\-79\\-53.71094\\-298.8042\\-79\\-55.66406\\-299.416\\-79\\-57.61719\\-300.2122\\-79\\-59.57031\\-300.6292\\-79\\-61.52344\\-300.907\\-79\\-67.38281\\-301.5798\\-79\\-71.28906\\-301.9063\\-79"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "318"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "87"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.86719\\-300.197\\-77\\-90.82031\\-299.5461\\-77\\-94.72656\\-298.5388\\-77\\-96.67969\\-297.6788\\-77\\-100.5859\\-296.4102\\-77\\-102.5391\\-295.3634\\-77\\-104.4922\\-294.7585\\-77\\-106.4453\\-293.6004\\-77\\-108.3984\\-292.6813\\-77\\-110.3516\\-291.2951\\-77\\-114.2578\\-289.028\\-77\\-118.1641\\-286.4149\\-77\\-120.9961\\-284.2422\\-77\\-125.8079\\-280.3359\\-77\\-127.9543\\-278.3828\\-77\\-131.8359\\-274.6115\\-77\\-133.9265\\-272.5234\\-77\\-137.1779\\-268.6172\\-77\\-140.5015\\-264.7109\\-77\\-142.0898\\-262.7578\\-77\\-143.3421\\-260.8047\\-77\\-144.735\\-258.8516\\-77\\-147.8102\\-254.9453\\-77\\-148.7909\\-252.9922\\-77\\-150.1433\\-251.0391\\-77\\-152.4041\\-247.1328\\-77\\-153.7407\\-245.1797\\-77\\-154.5993\\-243.2266\\-77\\-155.7685\\-241.2734\\-77\\-156.4276\\-239.3203\\-77\\-157.5435\\-237.3672\\-77\\-158.3419\\-235.4141\\-77\\-159.4634\\-233.4609\\-77\\-160.1985\\-231.5078\\-77\\-161.8667\\-227.6016\\-77\\-162.2962\\-225.6484\\-77\\-162.8698\\-223.6953\\-77\\-163.6963\\-221.7422\\-77\\-164.5755\\-217.8359\\-77\\-165.3539\\-215.8828\\-77\\-165.8113\\-213.9297\\-77\\-166.6003\\-210.0234\\-77\\-167.2054\\-208.0703\\-77\\-167.5408\\-206.1172\\-77\\-167.9978\\-202.2109\\-77\\-168.6151\\-194.3984\\-77\\-168.8015\\-192.4453\\-77\\-169.0004\\-188.5391\\-77\\-169.0162\\-184.6328\\-77\\-168.8454\\-180.7266\\-77\\-167.9864\\-169.0078\\-77\\-167.6492\\-165.1016\\-77\\-167.4241\\-163.1484\\-77\\-167.0588\\-161.1953\\-77\\-166.5575\\-159.2422\\-77\\-165.483\\-153.3828\\-77\\-164.8072\\-151.4297\\-77\\-164.2698\\-149.4766\\-77\\-163.898\\-147.5234\\-77\\-163.3719\\-145.5703\\-77\\-162.5179\\-143.6172\\-77\\-162.1094\\-141.6641\\-77\\-161.5943\\-139.7109\\-77\\-160.6638\\-137.7578\\-77\\-160.0006\\-135.8047\\-77\\-158.9284\\-133.8516\\-77\\-158.0305\\-131.8984\\-77\\-156.9676\\-129.9453\\-77\\-156.1202\\-127.9922\\-77\\-154.0064\\-124.0859\\-77\\-151.3077\\-120.1797\\-77\\-150.0355\\-118.2266\\-77\\-147.4609\\-114.7453\\-77\\-145.5078\\-112.377\\-77\\-142.128\\-108.4609\\-77\\-140.1486\\-106.5078\\-77\\-137.6953\\-104.3906\\-77\\-131.8359\\-100.0711\\-77\\-127.9297\\-97.51916\\-77\\-125.9766\\-96.03815\\-77\\-122.0703\\-93.98689\\-77\\-120.1172\\-93.21905\\-77\\-119.5171\\-92.83594\\-77\\-115.8719\\-90.88281\\-77\\-114.2578\\-90.1282\\-77\\-112.3047\\-89.39302\\-77\\-110.3516\\-88.5015\\-77\\-108.3984\\-87.9325\\-77\\-106.4453\\-87.47942\\-77\\-104.4922\\-86.89063\\-77\\-100.5859\\-85.91537\\-77\\-98.63281\\-85.50454\\-77\\-96.67969\\-84.9081\\-77\\-94.72656\\-84.63405\\-77\\-92.77344\\-84.12448\\-77\\-88.86719\\-83.45657\\-77\\-86.91406\\-82.92305\\-77\\-84.96094\\-82.6371\\-77\\-79.10156\\-82.23617\\-77\\-75.19531\\-82.10035\\-77\\-69.33594\\-82.10668\\-77\\-65.42969\\-82.22084\\-77\\-59.57031\\-82.5611\\-77\\-57.61719\\-82.71725\\-77\\-55.66406\\-82.99767\\-77\\-53.71094\\-83.40323\\-77\\-49.80469\\-84.022\\-77\\-47.85156\\-84.25346\\-77\\-43.94531\\-84.95531\\-77\\-38.08594\\-86.44326\\-77\\-36.13281\\-87.21256\\-77\\-32.22656\\-88.32025\\-77\\-28.32031\\-90.04095\\-77\\-26.64812\\-90.88281\\-77\\-24.41406\\-92.15876\\-77\\-20.50781\\-94.78011\\-77\\-18.55469\\-96.50967\\-77\\-14.49033\\-100.6484\\-77\\-12.69531\\-102.9481\\-77\\-8.671514\\-108.4609\\-77\\-6.835938\\-111.2627\\-77\\-4.351021\\-114.3203\\-77\\-2.929688\\-116.4939\\-77\\-0.9765625\\-117.604\\-77\\0.9765625\\-116.2386\\-77\\2.929688\\-113.9032\\-77\\4.046816\\-112.3672\\-77\\4.882813\\-110.9878\\-77\\8.079594\\-106.5078\\-77\\9.598691\\-104.5547\\-77\\12.69531\\-101.1942\\-77\\15.17704\\-98.69531\\-77\\18.55469\\-95.48907\\-77\\20.50781\\-93.86258\\-77\\22.46094\\-92.5438\\-77\\26.36719\\-89.65397\\-77\\28.32031\\-88.36136\\-77\\30.83376\\-86.97656\\-77\\32.22656\\-86.2914\\-77\\34.17969\\-85.46875\\-77\\36.13281\\-84.44699\\-77\\38.08594\\-83.78119\\-77\\40.03906\\-83.00873\\-77\\43.94531\\-81.95119\\-77\\47.85156\\-81.14358\\-77\\51.75781\\-80.51362\\-77\\55.66406\\-80.26599\\-77\\59.57031\\-80.16582\\-77\\65.42969\\-80.18389\\-77\\71.28906\\-80.29713\\-77\\77.14844\\-80.75098\\-77\\79.10156\\-81.04395\\-77\\83.00781\\-81.73924\\-77\\86.91406\\-82.19141\\-77\\90.82031\\-82.87807\\-77\\92.77344\\-83.39826\\-77\\98.63281\\-84.67021\\-77\\100.5859\\-85.37924\\-77\\104.4922\\-86.65104\\-77\\106.4453\\-87.479\\-77\\108.3984\\-88.08078\\-77\\110.3516\\-88.79472\\-77\\112.3047\\-89.69698\\-77\\114.2578\\-90.42364\\-77\\116.2109\\-91.59721\\-77\\118.1641\\-92.47899\\-77\\120.1172\\-93.60555\\-77\\122.0703\\-94.47868\\-77\\127.9297\\-98.1669\\-77\\129.8828\\-99.68535\\-77\\133.7891\\-102.4655\\-77\\135.7422\\-104.2633\\-77\\138.0313\\-106.5078\\-77\\140.1331\\-108.4609\\-77\\141.9345\\-110.4141\\-77\\143.3809\\-112.3672\\-77\\145.5078\\-114.974\\-77\\148.0469\\-118.2266\\-77\\150.3967\\-122.1328\\-77\\151.6927\\-124.0859\\-77\\152.7239\\-126.0391\\-77\\154.0588\\-127.9922\\-77\\154.9503\\-129.9453\\-77\\156.0584\\-131.8984\\-77\\156.7215\\-133.8516\\-77\\157.7962\\-135.8047\\-77\\158.4967\\-137.7578\\-77\\159.5435\\-139.7109\\-77\\160.7567\\-143.6172\\-77\\161.5194\\-145.5703\\-77\\161.9446\\-147.5234\\-77\\162.6347\\-151.4297\\-77\\163.2548\\-153.3828\\-77\\163.7042\\-155.3359\\-77\\164.4636\\-161.1953\\-77\\165.2629\\-165.1016\\-77\\165.5444\\-167.0547\\-77\\165.8923\\-170.9609\\-77\\166.2824\\-176.8203\\-77\\166.6932\\-184.6328\\-77\\166.8127\\-188.5391\\-77\\166.9096\\-194.3984\\-77\\166.776\\-202.2109\\-77\\166.5438\\-208.0703\\-77\\166.3467\\-211.9766\\-77\\166.0804\\-215.8828\\-77\\165.7424\\-219.7891\\-77\\165.501\\-221.7422\\-77\\165.0766\\-223.6953\\-77\\164.5235\\-225.6484\\-77\\163.8555\\-229.5547\\-77\\163.3699\\-231.5078\\-77\\162.5846\\-233.4609\\-77\\161.6881\\-237.3672\\-77\\160.7567\\-239.3203\\-77\\160.0296\\-241.2734\\-77\\158.9603\\-243.2266\\-77\\158.0299\\-245.1797\\-77\\156.8773\\-247.1328\\-77\\156.0434\\-249.0859\\-77\\154.873\\-251.0391\\-77\\153.8844\\-252.9922\\-77\\151.3672\\-256.4061\\-77\\150.9292\\-256.8984\\-77\\149.7445\\-258.8516\\-77\\148.3154\\-260.8047\\-77\\144.8458\\-264.7109\\-77\\143.1894\\-266.6641\\-77\\141.6444\\-268.6172\\-77\\139.6484\\-270.5446\\-77\\135.7422\\-274.6028\\-77\\131.8359\\-277.8533\\-77\\127.9297\\-281.2669\\-77\\125.9766\\-282.8048\\-77\\124.0234\\-284.0453\\-77\\120.1172\\-287.0627\\-77\\118.1641\\-288.3697\\-77\\116.2109\\-289.3756\\-77\\114.2578\\-290.6909\\-77\\112.3047\\-291.6918\\-77\\110.3516\\-292.9702\\-77\\108.3984\\-294.0313\\-77\\106.4453\\-294.9245\\-77\\104.4922\\-295.5745\\-77\\102.5391\\-296.61\\-77\\100.5859\\-297.1582\\-77\\98.63281\\-298.0361\\-77\\96.67969\\-298.7313\\-77\\94.72656\\-299.2254\\-77\\92.77344\\-299.8749\\-77\\90.82031\\-300.4004\\-77\\88.86719\\-300.7147\\-77\\84.96094\\-301.1385\\-77\\81.05469\\-301.4925\\-77\\79.10156\\-301.6074\\-77\\75.19531\\-301.6765\\-77\\73.24219\\-301.6206\\-77\\69.33594\\-301.4095\\-77\\65.42969\\-301.0742\\-77\\61.52344\\-300.618\\-77\\59.57031\\-300.2741\\-77\\57.61719\\-299.5891\\-77\\53.71094\\-298.4223\\-77\\51.75781\\-297.382\\-77\\49.80469\\-296.7091\\-77\\47.85156\\-295.5745\\-77\\45.89844\\-294.7778\\-77\\41.99219\\-292.2664\\-77\\39.21875\\-290.1016\\-77\\36.13281\\-287.4694\\-77\\34.73874\\-286.1953\\-77\\28.32031\\-279.6674\\-77\\24.41406\\-275.0929\\-77\\22.46094\\-272.5143\\-77\\19.75114\\-268.6172\\-77\\18.62917\\-266.6641\\-77\\17.30496\\-264.7109\\-77\\16.60156\\-263.8363\\-77\\14.64844\\-261.6917\\-77\\12.69531\\-260.1865\\-77\\10.74219\\-259.2403\\-77\\8.789063\\-258.9441\\-77\\2.929688\\-258.9451\\-77\\0.9765625\\-258.9958\\-77\\-0.9765625\\-259.477\\-77\\-2.929688\\-259.7295\\-77\\-4.882813\\-259.7988\\-77\\-6.835938\\-259.7623\\-77\\-8.789063\\-260.0417\\-77\\-10.74219\\-260.5324\\-77\\-12.69531\\-261.6624\\-77\\-14.64844\\-263.5306\\-77\\-17.0379\\-266.6641\\-77\\-18.28704\\-268.6172\\-77\\-19.67544\\-270.5703\\-77\\-22.46094\\-273.9661\\-77\\-24.80316\\-276.4297\\-77\\-28.07242\\-280.3359\\-77\\-32.22656\\-284.416\\-77\\-33.89292\\-286.1953\\-77\\-36.14239\\-288.1484\\-77\\-38.08594\\-289.5955\\-77\\-41.99219\\-292.8326\\-77\\-43.94531\\-294.1385\\-77\\-45.89844\\-295.0949\\-77\\-47.85156\\-296.1869\\-77\\-49.80469\\-296.9588\\-77\\-53.71094\\-298.7046\\-77\\-55.66406\\-299.264\\-77\\-57.61719\\-300.0569\\-77\\-59.57031\\-300.5278\\-77\\-61.52344\\-300.8099\\-77\\-65.42969\\-301.2395\\-77\\-69.33594\\-301.5944\\-77\\-73.24219\\-301.735\\-77\\-75.19531\\-301.705\\-77\\-81.05469\\-301.2256\\-77\\-86.91406\\-300.5542\\-77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "308"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "88"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.86719\\-300.0666\\-75\\-90.82031\\-299.3819\\-75\\-94.72656\\-298.4194\\-75\\-96.67969\\-297.4937\\-75\\-100.5859\\-296.2122\\-75\\-102.5391\\-295.23\\-75\\-104.4922\\-294.6102\\-75\\-106.4453\\-293.4183\\-75\\-108.3984\\-292.488\\-75\\-112.3047\\-289.8387\\-75\\-114.2578\\-288.8934\\-75\\-120.1172\\-284.6861\\-75\\-123.1876\\-282.2891\\-75\\-125.9766\\-279.9184\\-75\\-127.6719\\-278.3828\\-75\\-131.8359\\-274.3892\\-75\\-133.6719\\-272.5234\\-75\\-135.7422\\-270.1814\\-75\\-137.0047\\-268.6172\\-75\\-140.357\\-264.7109\\-75\\-141.9396\\-262.7578\\-75\\-143.131\\-260.8047\\-75\\-144.5769\\-258.8516\\-75\\-146.178\\-256.8984\\-75\\-147.6224\\-254.9453\\-75\\-148.7021\\-252.9922\\-75\\-150.0456\\-251.0391\\-75\\-151.0538\\-249.0859\\-75\\-151.3672\\-248.7007\\-75\\-153.3203\\-245.534\\-75\\-153.6063\\-245.1797\\-75\\-154.5132\\-243.2266\\-75\\-155.6599\\-241.2734\\-75\\-156.3735\\-239.3203\\-75\\-157.426\\-237.3672\\-75\\-158.2504\\-235.4141\\-75\\-159.3161\\-233.4609\\-75\\-160.8869\\-229.5547\\-75\\-161.7981\\-227.6016\\-75\\-162.7417\\-223.6953\\-75\\-163.5957\\-221.7422\\-75\\-164.4484\\-217.8359\\-75\\-165.2007\\-215.8828\\-75\\-165.7191\\-213.9297\\-75\\-166.4798\\-210.0234\\-75\\-167.0444\\-208.0703\\-75\\-167.4557\\-206.1172\\-75\\-167.7145\\-204.1641\\-75\\-168.0938\\-200.2578\\-75\\-168.6673\\-192.4453\\-75\\-168.8594\\-188.5391\\-75\\-168.9056\\-184.6328\\-75\\-168.6531\\-178.7734\\-75\\-167.9982\\-169.0078\\-75\\-167.4557\\-163.1484\\-75\\-167.1143\\-161.1953\\-75\\-166.6236\\-159.2422\\-75\\-166.2314\\-157.2891\\-75\\-165.5527\\-153.3828\\-75\\-164.3415\\-149.4766\\-75\\-163.5063\\-145.5703\\-75\\-162.6482\\-143.6172\\-75\\-161.7264\\-139.7109\\-75\\-160.8448\\-137.7578\\-75\\-160.1246\\-135.8047\\-75\\-159.2173\\-133.8516\\-75\\-158.1874\\-131.8984\\-75\\-157.2932\\-129.9453\\-75\\-156.262\\-127.9922\\-75\\-155.3304\\-126.0391\\-75\\-154.213\\-124.0859\\-75\\-151.6974\\-120.1797\\-75\\-148.857\\-116.2734\\-75\\-147.6497\\-114.3203\\-75\\-145.9997\\-112.3672\\-75\\-144.2077\\-110.4141\\-75\\-143.5547\\-109.5256\\-75\\-140.6691\\-106.5078\\-75\\-135.7422\\-102.194\\-75\\-133.5685\\-100.6484\\-75\\-131.8359\\-99.54478\\-75\\-127.9297\\-96.60611\\-75\\-124.0234\\-94.16378\\-75\\-122.0703\\-93.3908\\-75\\-118.1641\\-91.35607\\-75\\-116.2109\\-90.23396\\-75\\-114.2578\\-89.54256\\-75\\-112.3047\\-88.53758\\-75\\-106.4453\\-86.69444\\-75\\-102.5391\\-85.78516\\-75\\-98.63281\\-84.55608\\-75\\-96.67969\\-84.20731\\-75\\-94.72656\\-84.25946\\-75\\-92.77344\\-83.42025\\-75\\-90.82031\\-82.90755\\-75\\-86.91406\\-82.25105\\-75\\-84.96094\\-82.0612\\-75\\-81.05469\\-81.86588\\-75\\-79.10156\\-81.66606\\-75\\-75.19531\\-81.53571\\-75\\-71.28906\\-81.53259\\-75\\-65.42969\\-81.68031\\-75\\-61.52344\\-81.93099\\-75\\-57.61719\\-82.08724\\-75\\-53.71094\\-82.48869\\-75\\-47.85156\\-83.5825\\-75\\-41.99219\\-84.54499\\-75\\-38.08594\\-85.72195\\-75\\-34.17969\\-86.81635\\-75\\-32.22656\\-87.5625\\-75\\-30.27344\\-88.18331\\-75\\-26.36719\\-89.9266\\-75\\-24.57894\\-90.88281\\-75\\-22.46094\\-92.22907\\-75\\-19.05777\\-94.78906\\-75\\-16.88449\\-96.74219\\-75\\-14.97105\\-98.69531\\-75\\-12.69531\\-101.3759\\-75\\-11.83116\\-102.6016\\-75\\-10.23171\\-104.5547\\-75\\-8.888527\\-106.5078\\-75\\-5.948893\\-110.4141\\-75\\-4.882813\\-111.6683\\-75\\-2.929688\\-113.758\\-75\\-0.9765625\\-115.1228\\-75\\0.9765625\\-114.0839\\-75\\2.459162\\-112.3672\\-75\\3.79357\\-110.4141\\-75\\5.246804\\-108.4609\\-75\\8.02234\\-104.5547\\-75\\9.740797\\-102.6016\\-75\\14.64844\\-97.61859\\-75\\16.60156\\-95.75775\\-75\\18.55469\\-94.08244\\-75\\20.50781\\-92.52376\\-75\\22.69666\\-90.88281\\-75\\26.36719\\-88.40326\\-75\\28.70302\\-86.97656\\-75\\34.17969\\-84.14815\\-75\\36.13281\\-83.50182\\-75\\38.08594\\-82.64539\\-75\\41.99219\\-81.64246\\-75\\43.94531\\-80.99512\\-75\\47.85156\\-80.28677\\-75\\51.75781\\-79.93607\\-75\\55.66406\\-79.52834\\-75\\59.57031\\-79.46395\\-75\\65.42969\\-79.55032\\-75\\73.24219\\-79.87489\\-75\\75.19531\\-80.15247\\-75\\79.10156\\-80.43484\\-75\\81.05469\\-80.64598\\-75\\84.96094\\-81.39729\\-75\\86.91406\\-81.72076\\-75\\92.77344\\-82.53177\\-75\\96.67969\\-83.62347\\-75\\98.63281\\-84.04053\\-75\\100.5859\\-84.60976\\-75\\102.5391\\-85.41837\\-75\\106.4453\\-86.68216\\-75\\108.3984\\-87.62537\\-75\\110.3516\\-88.14193\\-75\\112.2887\\-88.92969\\-75\\116.2109\\-90.78363\\-75\\118.1641\\-91.90006\\-75\\122.0703\\-93.94358\\-75\\124.0234\\-95.12711\\-75\\125.9766\\-96.2113\\-75\\129.3774\\-98.69531\\-75\\129.8828\\-99.14545\\-75\\131.8359\\-100.4341\\-75\\133.7891\\-101.8895\\-75\\135.7422\\-103.6765\\-75\\138.5749\\-106.5078\\-75\\140.6389\\-108.4609\\-75\\142.3788\\-110.4141\\-75\\145.5078\\-114.3482\\-75\\148.3797\\-118.2266\\-75\\149.5938\\-120.1797\\-75\\150.6587\\-122.1328\\-75\\151.9747\\-124.0859\\-75\\153.0215\\-126.0391\\-75\\154.225\\-127.9922\\-75\\155.2734\\-129.9844\\-75\\156.1707\\-131.8984\\-75\\156.8915\\-133.8516\\-75\\157.9034\\-135.8047\\-75\\158.614\\-137.7578\\-75\\159.6559\\-139.7109\\-75\\160.8276\\-143.6172\\-75\\161.5646\\-145.5703\\-75\\162.6557\\-151.4297\\-75\\163.7042\\-155.3359\\-75\\164.4088\\-161.1953\\-75\\165.1611\\-165.1016\\-75\\165.4644\\-167.0547\\-75\\165.8213\\-170.9609\\-75\\166.1792\\-176.8203\\-75\\166.516\\-184.6328\\-75\\166.6841\\-194.3984\\-75\\166.5315\\-202.2109\\-75\\166.358\\-208.0703\\-75\\166.1852\\-211.9766\\-75\\165.8074\\-217.8359\\-75\\165.3096\\-221.7422\\-75\\164.375\\-225.6484\\-75\\163.7351\\-229.5547\\-75\\162.437\\-233.4609\\-75\\162.0495\\-235.4141\\-75\\161.5302\\-237.3672\\-75\\160.5722\\-239.3203\\-75\\159.8726\\-241.2734\\-75\\158.7364\\-243.2266\\-75\\157.8979\\-245.1797\\-75\\156.6957\\-247.1328\\-75\\155.948\\-249.0859\\-75\\154.7163\\-251.0391\\-75\\153.7424\\-252.9922\\-75\\151.3672\\-256.1776\\-75\\150.7451\\-256.8984\\-75\\149.5781\\-258.8516\\-75\\148.2016\\-260.8047\\-75\\144.6681\\-264.7109\\-75\\141.6016\\-268.3859\\-75\\139.6484\\-270.2575\\-75\\137.3954\\-272.5234\\-75\\135.7422\\-274.318\\-75\\133.273\\-276.4297\\-75\\131.8359\\-277.5775\\-75\\127.9297\\-281.0866\\-75\\125.9766\\-282.5256\\-75\\124.0234\\-283.7434\\-75\\123.4597\\-284.2422\\-75\\120.1172\\-286.8483\\-75\\116.2109\\-289.1806\\-75\\114.2578\\-290.4526\\-75\\112.3047\\-291.4173\\-75\\110.3516\\-292.777\\-75\\108.3984\\-293.7121\\-75\\106.4453\\-294.7585\\-75\\104.4922\\-295.3869\\-75\\102.5391\\-296.4102\\-75\\98.63281\\-297.6931\\-75\\96.67969\\-298.5669\\-75\\92.77344\\-299.593\\-75\\90.82031\\-300.2229\\-75\\88.86719\\-300.5841\\-75\\84.96094\\-301.0026\\-75\\81.05469\\-301.3288\\-75\\79.10156\\-301.4311\\-75\\75.19531\\-301.4925\\-75\\69.33594\\-301.287\\-75\\65.42969\\-300.9841\\-75\\61.52344\\-300.5315\\-75\\59.57031\\-300.1396\\-75\\57.61719\\-299.4352\\-75\\53.71094\\-298.2911\\-75\\51.75781\\-297.2571\\-75\\49.80469\\-296.614\\-75\\47.85156\\-295.4494\\-75\\45.89844\\-294.6696\\-75\\41.99219\\-292.0623\\-75\\39.36919\\-290.1016\\-75\\36.13281\\-287.391\\-75\\34.79092\\-286.1953\\-75\\32.22656\\-283.6234\\-75\\28.8669\\-280.3359\\-75\\27.17653\\-278.3828\\-75\\24.41406\\-275.3774\\-75\\22.06643\\-272.5234\\-75\\19.4443\\-268.6172\\-75\\16.60156\\-265.1064\\-75\\14.64844\\-263.285\\-75\\12.69531\\-262.1158\\-75\\10.74219\\-261.3351\\-75\\8.789063\\-261.159\\-75\\2.929688\\-261.2038\\-75\\0.9765625\\-261.3766\\-75\\-0.9765625\\-261.7905\\-75\\-2.929688\\-261.9249\\-75\\-6.835938\\-262.0645\\-75\\-10.74219\\-262.4292\\-75\\-12.69531\\-263.1676\\-75\\-14.64844\\-264.7725\\-75\\-16.60156\\-267.1192\\-75\\-22.42156\\-274.4766\\-75\\-24.41406\\-276.4566\\-75\\-26.12106\\-278.3828\\-75\\-28.32031\\-280.7161\\-75\\-32.22656\\-284.4294\\-75\\-34.17969\\-286.4376\\-75\\-38.08594\\-289.5425\\-75\\-41.99219\\-292.7338\\-75\\-44.00344\\-294.0078\\-75\\-47.85156\\-296.0161\\-75\\-51.75781\\-297.6068\\-75\\-53.71094\\-298.595\\-75\\-55.66406\\-299.128\\-75\\-57.63842\\-299.8672\\-75\\-59.57031\\-300.4124\\-75\\-61.52344\\-300.7098\\-75\\-65.42969\\-301.1263\\-75\\-69.33594\\-301.4447\\-75\\-73.24219\\-301.5546\\-75\\-75.19531\\-301.5302\\-75\\-81.05469\\-301.1306\\-75\\-84.96094\\-300.7371\\-75\\-86.91406\\-300.4739\\-75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "315"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "89"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.86719\\-299.8748\\-73\\-90.82031\\-299.233\\-73\\-94.72656\\-298.2606\\-73\\-96.67969\\-297.3329\\-73\\-98.63281\\-296.8065\\-73\\-102.5391\\-295.123\\-73\\-104.4922\\-294.4351\\-73\\-106.4453\\-293.2433\\-73\\-108.3984\\-292.2541\\-73\\-111.6793\\-290.1016\\-73\\-112.3047\\-289.6065\\-73\\-114.2578\\-288.7264\\-73\\-118.1641\\-285.7845\\-73\\-120.1172\\-284.4539\\-73\\-124.0234\\-281.4128\\-73\\-127.4161\\-278.3828\\-73\\-129.5226\\-276.4297\\-73\\-133.4372\\-272.5234\\-73\\-135.2434\\-270.5703\\-73\\-136.8612\\-268.6172\\-73\\-137.6953\\-267.7404\\-73\\-141.7842\\-262.7578\\-73\\-142.9879\\-260.8047\\-73\\-144.4319\\-258.8516\\-73\\-146.03\\-256.8984\\-73\\-147.4609\\-254.8945\\-73\\-148.6167\\-252.9922\\-73\\-149.9326\\-251.0391\\-73\\-150.8823\\-249.0859\\-73\\-151.3672\\-248.483\\-73\\-153.448\\-245.1797\\-73\\-154.4303\\-243.2266\\-73\\-155.5598\\-241.2734\\-73\\-156.3147\\-239.3203\\-73\\-160.0414\\-231.5078\\-73\\-160.7567\\-229.5547\\-73\\-161.6935\\-227.6016\\-73\\-162.6347\\-223.6953\\-73\\-163.4753\\-221.7422\\-73\\-164.3487\\-217.8359\\-73\\-165.6272\\-213.9297\\-73\\-166.362\\-210.0234\\-73\\-167.3479\\-206.1172\\-73\\-167.6413\\-204.1641\\-73\\-168.1776\\-198.3047\\-73\\-168.5452\\-192.4453\\-73\\-168.7177\\-188.5391\\-73\\-168.7725\\-184.6328\\-73\\-168.7456\\-182.6797\\-73\\-168.5671\\-178.7734\\-73\\-167.9862\\-169.0078\\-73\\-167.4463\\-163.1484\\-73\\-167.0869\\-161.1953\\-73\\-166.253\\-157.2891\\-73\\-165.5773\\-153.3828\\-73\\-164.3673\\-149.4766\\-73\\-163.5585\\-145.5703\\-73\\-162.7276\\-143.6172\\-73\\-161.7944\\-139.7109\\-73\\-159.3541\\-133.8516\\-73\\-158.2876\\-131.8984\\-73\\-157.474\\-129.9453\\-73\\-156.3525\\-127.9922\\-73\\-155.5099\\-126.0391\\-73\\-153.3203\\-122.3261\\-73\\-151.9112\\-120.1797\\-73\\-150.4149\\-118.2266\\-73\\-149.4141\\-116.5654\\-73\\-147.9201\\-114.3203\\-73\\-146.3005\\-112.3672\\-73\\-144.5555\\-110.4141\\-73\\-143.5547\\-108.9358\\-73\\-141.2564\\-106.5078\\-73\\-139.1134\\-104.5547\\-73\\-137.6953\\-103.4528\\-73\\-135.7422\\-101.6738\\-73\\-133.7891\\-100.1811\\-73\\-129.8828\\-97.49393\\-73\\-127.9297\\-95.90614\\-73\\-125.9766\\-94.69803\\-73\\-122.0703\\-92.67939\\-73\\-120.1172\\-91.88277\\-73\\-118.1641\\-90.58623\\-73\\-114.2578\\-88.82477\\-73\\-112.3047\\-88.0495\\-73\\-110.3516\\-87.43915\\-73\\-108.3984\\-86.55408\\-73\\-106.4453\\-86.11894\\-73\\-98.63281\\-83.8758\\-73\\-94.72656\\-83.18967\\-73\\-92.77344\\-82.58554\\-73\\-90.82031\\-82.23047\\-73\\-88.86719\\-82.10009\\-73\\-84.96094\\-81.57291\\-73\\-81.05469\\-81.28392\\-73\\-79.10156\\-80.86737\\-73\\-75.19531\\-80.71382\\-73\\-71.28906\\-80.72514\\-73\\-65.42969\\-80.8942\\-73\\-63.47656\\-81.19105\\-73\\-59.57031\\-81.50929\\-73\\-57.61719\\-81.60547\\-73\\-53.71094\\-81.95518\\-73\\-49.80469\\-82.4305\\-73\\-47.85156\\-82.74954\\-73\\-43.94531\\-83.56196\\-73\\-41.99219\\-83.90472\\-73\\-38.08594\\-84.80889\\-73\\-36.13281\\-85.51528\\-73\\-32.22656\\-86.62728\\-73\\-30.27344\\-87.48704\\-73\\-28.32031\\-88.1055\\-73\\-26.38346\\-88.92969\\-73\\-22.71412\\-90.88281\\-73\\-20.50781\\-92.47166\\-73\\-18.55469\\-94.08814\\-73\\-16.60156\\-95.86735\\-73\\-13.82097\\-98.69531\\-73\\-10.6083\\-102.6016\\-73\\-7.720226\\-106.5078\\-73\\-4.882813\\-109.7784\\-73\\-2.929688\\-111.8699\\-73\\-0.9765625\\-113.1763\\-73\\0.9765625\\-112.2376\\-73\\2.372742\\-110.4141\\-73\\4.023162\\-108.4609\\-73\\4.882813\\-107.1046\\-73\\6.754557\\-104.5547\\-73\\8.370536\\-102.6016\\-73\\12.69531\\-98.3346\\-73\\14.64844\\-96.28312\\-73\\16.60156\\-94.48924\\-73\\21.01089\\-90.88281\\-73\\22.46094\\-89.76999\\-73\\24.41406\\-88.51228\\-73\\26.36719\\-87.52251\\-73\\28.32031\\-86.19959\\-73\\30.31921\\-85.02344\\-73\\34.17969\\-83.19769\\-73\\38.08594\\-81.87751\\-73\\40.03906\\-81.38134\\-73\\41.99219\\-80.68552\\-73\\43.94531\\-80.30878\\-73\\45.89844\\-80.04425\\-73\\49.80469\\-79.38019\\-73\\53.71094\\-78.93222\\-73\\55.66406\\-78.79048\\-73\\59.57031\\-78.71383\\-73\\65.42969\\-78.79048\\-73\\69.33594\\-78.99644\\-73\\71.28906\\-79.15643\\-73\\73.24219\\-79.17255\\-73\\75.19531\\-79.632\\-73\\77.14844\\-79.87486\\-73\\83.00781\\-80.42675\\-73\\84.96094\\-80.65642\\-73\\86.91406\\-81.02841\\-73\\88.86719\\-81.50924\\-73\\92.77344\\-82.07472\\-73\\94.72656\\-82.41249\\-73\\96.67969\\-82.92535\\-73\\98.63281\\-83.53825\\-73\\100.5859\\-84.00907\\-73\\102.5391\\-84.66769\\-73\\104.4922\\-85.50475\\-73\\106.4453\\-86.13181\\-73\\110.3516\\-87.69579\\-73\\112.3047\\-88.18723\\-73\\114.2578\\-89.20342\\-73\\116.2109\\-90.11723\\-73\\118.1641\\-91.29436\\-73\\120.1172\\-92.25231\\-73\\122.0703\\-93.46122\\-73\\124.0234\\-94.43326\\-73\\125.9766\\-95.71456\\-73\\129.8828\\-98.42567\\-73\\133.7891\\-101.5113\\-73\\135.7422\\-103.2257\\-73\\139.6484\\-107.1426\\-73\\141.0362\\-108.4609\\-73\\142.6345\\-110.4141\\-73\\145.9612\\-114.3203\\-73\\147.4609\\-116.4428\\-73\\149.9126\\-120.1797\\-73\\150.9032\\-122.1328\\-73\\151.3672\\-122.7331\\-73\\153.3203\\-126.0119\\-73\\155.4913\\-129.9453\\-73\\157.0358\\-133.8516\\-73\\158.0088\\-135.8047\\-73\\158.6945\\-137.7578\\-73\\159.6946\\-139.7109\\-73\\160.8528\\-143.6172\\-73\\161.581\\-145.5703\\-73\\161.969\\-147.5234\\-73\\162.6347\\-151.4297\\-73\\163.66\\-155.3359\\-73\\164.3313\\-161.1953\\-73\\164.6396\\-163.1484\\-73\\165.3539\\-167.0547\\-73\\165.7159\\-170.9609\\-73\\166.06\\-176.8203\\-73\\166.3504\\-184.6328\\-73\\166.4201\\-188.5391\\-73\\166.4717\\-194.3984\\-73\\166.3393\\-202.2109\\-73\\166.1994\\-208.0703\\-73\\166.0454\\-211.9766\\-73\\165.6743\\-217.8359\\-73\\165.4455\\-219.7891\\-73\\164.585\\-223.6953\\-73\\163.9512\\-227.6016\\-73\\163.5773\\-229.5547\\-73\\162.8309\\-231.5078\\-73\\161.9416\\-235.4141\\-73\\161.3164\\-237.3672\\-73\\160.3948\\-239.3203\\-73\\159.7055\\-241.2734\\-73\\158.5502\\-243.2266\\-73\\157.7358\\-245.1797\\-73\\156.5529\\-247.1328\\-73\\155.819\\-249.0859\\-73\\154.583\\-251.0391\\-73\\153.5226\\-252.9922\\-73\\152.1588\\-254.9453\\-73\\150.6185\\-256.8984\\-73\\148.083\\-260.8047\\-73\\146.3515\\-262.7578\\-73\\144.4953\\-264.7109\\-73\\141.6016\\-268.1406\\-73\\139.6484\\-270.0035\\-73\\137.1245\\-272.5234\\-73\\135.2699\\-274.4766\\-73\\131.8359\\-277.3577\\-73\\127.9297\\-280.8554\\-73\\124.0234\\-283.5181\\-73\\120.1172\\-286.6174\\-73\\118.1641\\-287.7369\\-73\\116.2109\\-289.0199\\-73\\112.3047\\-291.2029\\-73\\110.3516\\-292.5461\\-73\\108.3984\\-293.4577\\-73\\106.4453\\-294.5759\\-73\\104.4922\\-295.216\\-73\\102.5391\\-296.1473\\-73\\100.5859\\-296.8482\\-73\\98.63281\\-297.4227\\-73\\96.67969\\-298.3698\\-73\\92.77344\\-299.3641\\-73\\90.82031\\-300.0036\\-73\\88.86719\\-300.4261\\-73\\86.91406\\-300.6791\\-73\\83.00781\\-301.0475\\-73\\79.10156\\-301.2706\\-73\\75.19531\\-301.332\\-73\\69.33594\\-301.1796\\-73\\65.42969\\-300.9008\\-73\\61.52344\\-300.4393\\-73\\59.57031\\-299.9619\\-73\\57.61719\\-299.2951\\-73\\55.66406\\-298.7816\\-73\\53.71094\\-298.1378\\-73\\51.75781\\-297.1476\\-73\\49.80469\\-296.5056\\-73\\47.85156\\-295.3205\\-73\\45.89844\\-294.5592\\-73\\40.03906\\-290.4831\\-73\\38.08594\\-288.9656\\-73\\34.82365\\-286.1953\\-73\\30.81939\\-282.2891\\-73\\28.72467\\-280.3359\\-73\\27.02986\\-278.3828\\-73\\24.41406\\-275.6529\\-73\\21.71947\\-272.5234\\-73\\20.19004\\-270.5703\\-73\\18.81343\\-268.6172\\-73\\16.60156\\-266.3295\\-73\\14.64844\\-264.8528\\-73\\12.69531\\-263.8927\\-73\\10.74219\\-263.2092\\-73\\8.789063\\-263.0647\\-73\\2.929688\\-263.0987\\-73\\0.9765625\\-263.2879\\-73\\-0.9765625\\-263.6883\\-73\\-4.882813\\-263.9315\\-73\\-6.835938\\-263.9966\\-73\\-10.74219\\-264.2271\\-73\\-12.69531\\-264.856\\-73\\-14.64844\\-266.0624\\-73\\-16.60156\\-267.9375\\-73\\-18.91327\\-270.5703\\-73\\-20.35938\\-272.5234\\-73\\-21.9585\\-274.4766\\-73\\-23.97576\\-276.4297\\-73\\-28.32031\\-280.8458\\-73\\-32.22656\\-284.4423\\-73\\-34.17969\\-286.4082\\-73\\-38.08594\\-289.4851\\-73\\-38.7703\\-290.1016\\-73\\-41.99219\\-292.6349\\-73\\-45.89844\\-294.9287\\-73\\-49.80469\\-296.772\\-73\\-51.75781\\-297.4385\\-73\\-53.71094\\-298.4554\\-73\\-55.66406\\-299.0043\\-73\\-59.57031\\-300.2767\\-73\\-61.52344\\-300.6094\\-73\\-63.47656\\-300.8438\\-73\\-67.38281\\-301.188\\-73\\-69.33594\\-301.3094\\-73\\-73.24219\\-301.4095\\-73\\-75.19531\\-301.396\\-73\\-81.05469\\-301.0475\\-73\\-84.96094\\-300.6585\\-73\\-86.91406\\-300.3733\\-73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "320"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "90"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-300.2515\\-71\\-90.82031\\-299.1123\\-71\\-92.77344\\-298.6882\\-71\\-94.72656\\-298.0757\\-71\\-96.67969\\-297.2043\\-71\\-98.63281\\-296.7091\\-71\\-100.5859\\-295.7464\\-71\\-104.4922\\-294.2224\\-71\\-104.7726\\-294.0078\\-71\\-108.2403\\-292.0547\\-71\\-110.3516\\-290.8091\\-71\\-112.3047\\-289.4442\\-71\\-114.2578\\-288.5405\\-71\\-116.2109\\-287.1221\\-71\\-118.1641\\-285.5671\\-71\\-122.0703\\-282.767\\-71\\-124.0234\\-281.2339\\-71\\-129.317\\-276.4297\\-71\\-131.8359\\-273.971\\-71\\-135.08\\-270.5703\\-71\\-136.7188\\-268.6172\\-71\\-137.6953\\-267.5769\\-71\\-139.6484\\-265.1622\\-71\\-140.0997\\-264.7109\\-71\\-141.6016\\-262.7477\\-71\\-142.8497\\-260.8047\\-71\\-143.5547\\-259.9531\\-71\\-145.5078\\-257.2937\\-71\\-145.874\\-256.8984\\-71\\-147.4609\\-254.6542\\-71\\-149.8005\\-251.0391\\-71\\-150.7577\\-249.0859\\-71\\-152.1255\\-247.1328\\-71\\-153.3203\\-245.1029\\-71\\-155.4349\\-241.2734\\-71\\-157.0651\\-237.3672\\-71\\-158.0836\\-235.4141\\-71\\-158.9133\\-233.4609\\-71\\-159.9599\\-231.5078\\-71\\-160.6322\\-229.5547\\-71\\-161.5749\\-227.6016\\-71\\-162.1153\\-225.6484\\-71\\-162.5325\\-223.6953\\-71\\-163.3336\\-221.7422\\-71\\-163.8661\\-219.7891\\-71\\-164.2503\\-217.8359\\-71\\-164.7949\\-215.8828\\-71\\-165.5038\\-213.9297\\-71\\-166.2381\\-210.0234\\-71\\-167.2191\\-206.1172\\-71\\-167.7677\\-202.2109\\-71\\-168.0938\\-198.3047\\-71\\-168.521\\-190.4922\\-71\\-168.6035\\-186.5859\\-71\\-168.6175\\-182.6797\\-71\\-168.2798\\-174.8672\\-71\\-168.0753\\-170.9609\\-71\\-167.6255\\-165.1016\\-71\\-167.3917\\-163.1484\\-71\\-166.6028\\-159.2422\\-71\\-165.5527\\-153.3828\\-71\\-164.3638\\-149.4766\\-71\\-163.568\\-145.5703\\-71\\-162.7533\\-143.6172\\-71\\-162.236\\-141.6641\\-71\\-161.8195\\-139.7109\\-71\\-161.1328\\-137.9659\\-71\\-159.4035\\-133.8516\\-71\\-158.3205\\-131.8984\\-71\\-157.5305\\-129.9453\\-71\\-156.3834\\-127.9922\\-71\\-155.5892\\-126.0391\\-71\\-155.2734\\-125.5875\\-71\\-153.3279\\-122.1328\\-71\\-152.0287\\-120.1797\\-71\\-150.5241\\-118.2266\\-71\\-149.4141\\-116.284\\-71\\-148.0824\\-114.3203\\-71\\-145.5078\\-110.9808\\-71\\-143.5547\\-108.6312\\-71\\-141.6282\\-106.5078\\-71\\-139.6213\\-104.5547\\-71\\-137.4489\\-102.6016\\-71\\-135.1004\\-100.6484\\-71\\-133.7891\\-99.74847\\-71\\-129.8828\\-96.7001\\-71\\-127.9297\\-95.44244\\-71\\-125.9766\\-94.07201\\-71\\-124.0234\\-93.21571\\-71\\-123.4253\\-92.83594\\-71\\-118.1641\\-90.0524\\-71\\-114.2578\\-88.21263\\-71\\-112.3047\\-87.63898\\-71\\-110.3516\\-86.76363\\-71\\-108.3984\\-86.05782\\-71\\-106.4453\\-85.55036\\-71\\-104.4922\\-84.88287\\-71\\-100.5859\\-83.90646\\-71\\-96.67969\\-82.75751\\-71\\-92.77344\\-82.06788\\-71\\-88.86719\\-81.69363\\-71\\-84.96094\\-80.86737\\-71\\-81.05469\\-80.56009\\-71\\-75.19531\\-80.26111\\-71\\-71.28906\\-80.27209\\-71\\-67.38281\\-80.35764\\-71\\-61.52344\\-80.62212\\-71\\-57.61719\\-80.92342\\-71\\-51.75781\\-81.77938\\-71\\-45.89844\\-82.42578\\-71\\-43.94531\\-82.75459\\-71\\-40.03906\\-83.70142\\-71\\-38.08594\\-84.09727\\-71\\-36.13281\\-84.60686\\-71\\-34.17969\\-85.36148\\-71\\-32.22656\\-85.98756\\-71\\-30.27344\\-86.49179\\-71\\-28.32031\\-87.40807\\-71\\-26.36719\\-88.07004\\-71\\-24.48918\\-88.92969\\-71\\-22.46094\\-90.04095\\-71\\-21.2279\\-90.88281\\-71\\-18.68557\\-92.83594\\-71\\-16.60156\\-94.62772\\-71\\-14.64844\\-96.44497\\-71\\-12.61684\\-98.69531\\-71\\-9.606482\\-102.6016\\-71\\-6.835938\\-105.9777\\-71\\-4.647391\\-108.4609\\-71\\-2.929688\\-110.0776\\-71\\-0.9765625\\-111.3645\\-71\\0.9765625\\-110.4459\\-71\\2.929688\\-108.0723\\-71\\4.882813\\-105.4104\\-71\\6.835938\\-102.9105\\-71\\8.789063\\-100.8096\\-71\\10.9375\\-98.69531\\-71\\12.80063\\-96.74219\\-71\\14.77798\\-94.78906\\-71\\17.04102\\-92.83594\\-71\\20.50781\\-90.06307\\-71\\22.46094\\-88.67741\\-71\\24.41406\\-87.62512\\-71\\28.54773\\-85.02344\\-71\\32.43132\\-83.07031\\-71\\34.17969\\-82.29604\\-71\\36.13281\\-81.76115\\-71\\38.08594\\-81.05926\\-71\\40.03906\\-80.47737\\-71\\41.99219\\-80.15941\\-71\\45.89844\\-79.33355\\-71\\49.80469\\-78.71183\\-71\\53.71094\\-78.39373\\-71\\57.61719\\-78.21727\\-71\\61.52344\\-78.19949\\-71\\65.42969\\-78.26398\\-71\\69.33594\\-78.41055\\-71\\71.28906\\-78.56175\\-71\\73.24219\\-78.58166\\-71\\75.19531\\-78.78846\\-71\\79.10156\\-79.5943\\-71\\81.05469\\-79.87817\\-71\\84.96094\\-80.21432\\-71\\88.86719\\-80.7797\\-71\\92.77344\\-81.6665\\-71\\96.67969\\-82.36068\\-71\\98.63281\\-82.86749\\-71\\102.5391\\-84.10829\\-71\\104.4922\\-84.7916\\-71\\106.4453\\-85.65533\\-71\\108.3984\\-86.28333\\-71\\110.3516\\-87.0676\\-71\\114.2578\\-88.43423\\-71\\116.2109\\-89.64048\\-71\\118.1641\\-90.49355\\-71\\120.1172\\-91.77847\\-71\\124.0234\\-93.90679\\-71\\125.9766\\-95.24904\\-71\\127.9297\\-96.40717\\-71\\131.8359\\-99.5612\\-71\\133.2921\\-100.6484\\-71\\135.714\\-102.6016\\-71\\141.6016\\-108.5463\\-71\\142.8841\\-110.4141\\-71\\146.2645\\-114.3203\\-71\\147.7266\\-116.2734\\-71\\148.8105\\-118.2266\\-71\\150.1225\\-120.1797\\-71\\151.3672\\-122.3839\\-71\\153.3203\\-125.6798\\-71\\153.5983\\-126.0391\\-71\\154.4935\\-127.9922\\-71\\155.6458\\-129.9453\\-71\\156.3219\\-131.8984\\-71\\157.1392\\-133.8516\\-71\\158.0556\\-135.8047\\-71\\158.7256\\-137.7578\\-71\\159.7033\\-139.7109\\-71\\160.8392\\-143.6172\\-71\\161.5975\\-145.5703\\-71\\161.9759\\-147.5234\\-71\\162.5877\\-151.4297\\-71\\163.5957\\-155.3359\\-71\\163.8555\\-157.2891\\-71\\164.2631\\-161.1953\\-71\\164.7984\\-165.1016\\-71\\165.1611\\-167.0547\\-71\\165.5963\\-170.9609\\-71\\165.9379\\-176.8203\\-71\\166.1472\\-182.6797\\-71\\166.2651\\-188.5391\\-71\\166.2651\\-196.3516\\-71\\166.1767\\-202.2109\\-71\\166.0457\\-208.0703\\-71\\165.9033\\-211.9766\\-71\\165.6884\\-215.8828\\-71\\165.5187\\-217.8359\\-71\\165.2135\\-219.7891\\-71\\164.7551\\-221.7422\\-71\\164.4088\\-223.6953\\-71\\163.8449\\-227.6016\\-71\\163.3719\\-229.5547\\-71\\162.6174\\-231.5078\\-71\\161.8189\\-235.4141\\-71\\160.2253\\-239.3203\\-71\\159.5052\\-241.2734\\-71\\158.3668\\-243.2266\\-71\\157.5586\\-245.1797\\-71\\156.4276\\-247.1328\\-71\\155.6396\\-249.0859\\-71\\153.3203\\-252.8826\\-71\\152.0084\\-254.9453\\-71\\149.0622\\-258.8516\\-71\\147.9143\\-260.8047\\-71\\145.5078\\-263.4533\\-71\\140.911\\-268.6172\\-71\\139.6484\\-269.7502\\-71\\134.9654\\-274.4766\\-71\\127.9297\\-280.5403\\-71\\125.9766\\-281.8389\\-71\\122.9016\\-284.2422\\-71\\120.1172\\-286.29\\-71\\118.1641\\-287.491\\-71\\116.2109\\-288.8534\\-71\\114.2578\\-289.7407\\-71\\113.805\\-290.1016\\-71\\110.3516\\-292.2055\\-71\\106.9388\\-294.0078\\-71\\106.4453\\-294.3333\\-71\\102.5391\\-295.8137\\-71\\100.5859\\-296.6947\\-71\\98.63281\\-297.2116\\-71\\96.67969\\-298.1011\\-71\\94.72656\\-298.7085\\-71\\92.77344\\-299.1565\\-71\\88.86719\\-300.2413\\-71\\86.91406\\-300.5278\\-71\\83.00781\\-300.907\\-71\\81.05469\\-301.0403\\-71\\75.19531\\-301.2006\\-71\\71.28906\\-301.1342\\-71\\67.38281\\-300.9593\\-71\\63.47656\\-300.5954\\-71\\61.52344\\-300.3314\\-71\\57.61719\\-299.1673\\-71\\55.66406\\-298.6742\\-71\\53.71094\\-297.9217\\-71\\51.75781\\-297.0417\\-71\\49.80469\\-296.369\\-71\\47.85156\\-295.2178\\-71\\45.89844\\-294.4273\\-71\\41.99219\\-291.6418\\-71\\40.03906\\-290.3406\\-71\\38.08594\\-288.8809\\-71\\34.85243\\-286.1953\\-71\\32.22656\\-283.6621\\-71\\28.32031\\-280.1621\\-71\\26.36719\\-278.0135\\-71\\22.46094\\-273.8378\\-71\\20.50781\\-271.5081\\-71\\18.55469\\-269.3311\\-71\\16.60156\\-267.6558\\-71\\14.64844\\-266.248\\-71\\12.69531\\-265.7755\\-71\\10.74219\\-265.1898\\-71\\8.789063\\-265.0997\\-71\\2.929688\\-265.1147\\-71\\0.9765625\\-265.3224\\-71\\-0.9765625\\-265.6786\\-71\\-4.882813\\-265.9497\\-71\\-8.789063\\-266.1487\\-71\\-10.74219\\-266.3047\\-71\\-12.69531\\-266.7538\\-71\\-14.64844\\-267.5771\\-71\\-16.60156\\-269.0031\\-71\\-18.55469\\-270.9793\\-71\\-19.8093\\-272.5234\\-71\\-21.58134\\-274.4766\\-71\\-23.63709\\-276.4297\\-71\\-28.32031\\-280.9755\\-71\\-31.99926\\-284.2422\\-71\\-34.17969\\-286.3531\\-71\\-38.08594\\-289.4255\\-71\\-38.85938\\-290.1016\\-71\\-41.99219\\-292.5132\\-71\\-45.89844\\-294.8475\\-71\\-47.85156\\-295.6354\\-71\\-49.80469\\-296.6717\\-71\\-51.75781\\-297.2926\\-71\\-53.71094\\-298.3205\\-71\\-57.61719\\-299.455\\-71\\-59.57031\\-300.1414\\-71\\-61.52344\\-300.5201\\-71\\-63.47656\\-300.7545\\-71\\-69.33594\\-301.1966\\-71\\-73.24219\\-301.2964\\-71\\-75.19531\\-301.2835\\-71\\-79.10156\\-301.0954\\-71\\-83.00781\\-300.7873\\-71\\-84.96094\\-300.5769\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "317"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "91"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-300.1164\\-69\\-88.86719\\-299.4703\\-69\\-92.77344\\-298.5845\\-69\\-96.67969\\-297.0948\\-69\\-98.63281\\-296.5942\\-69\\-100.5859\\-295.5689\\-69\\-102.5391\\-294.9181\\-69\\-104.4541\\-294.0078\\-69\\-106.4453\\-292.9468\\-69\\-108.3984\\-291.6418\\-69\\-110.3516\\-290.6482\\-69\\-112.3047\\-289.3116\\-69\\-114.2578\\-288.2969\\-69\\-116.2109\\-286.9577\\-69\\-120.1172\\-283.876\\-69\\-122.0703\\-282.5692\\-69\\-124.0234\\-281.0468\\-69\\-129.1299\\-276.4297\\-69\\-131.8359\\-273.801\\-69\\-134.9306\\-270.5703\\-69\\-137.6953\\-267.4037\\-69\\-139.9472\\-264.7109\\-69\\-141.6016\\-262.5568\\-69\\-142.7327\\-260.8047\\-69\\-144.2901\\-258.8516\\-69\\-147.4609\\-254.4798\\-69\\-149.6469\\-251.0391\\-69\\-150.6633\\-249.0859\\-69\\-152.02\\-247.1328\\-69\\-153.0851\\-245.1797\\-69\\-154.2495\\-243.2266\\-69\\-155.2816\\-241.2734\\-69\\-156.1716\\-239.3203\\-69\\-156.9034\\-237.3672\\-69\\-157.9942\\-235.4141\\-69\\-158.7477\\-233.4609\\-69\\-159.8726\\-231.5078\\-69\\-160.4992\\-229.5547\\-69\\-161.4306\\-227.6016\\-69\\-162.032\\-225.6484\\-69\\-162.437\\-223.6953\\-69\\-163.7795\\-219.7891\\-69\\-164.6169\\-215.8828\\-69\\-165.332\\-213.9297\\-69\\-165.7804\\-211.9766\\-69\\-166.5193\\-208.0703\\-69\\-167.0448\\-206.1172\\-69\\-167.4143\\-204.1641\\-69\\-167.6647\\-202.2109\\-69\\-168.1195\\-196.3516\\-69\\-168.3262\\-192.4453\\-69\\-168.4504\\-188.5391\\-69\\-168.4768\\-182.6797\\-69\\-168.288\\-176.8203\\-69\\-168.1176\\-172.9141\\-69\\-167.8878\\-169.0078\\-69\\-167.5614\\-165.1016\\-69\\-167.3023\\-163.1484\\-69\\-166.51\\-159.2422\\-69\\-165.8711\\-155.3359\\-69\\-165.501\\-153.3828\\-69\\-164.8582\\-151.4297\\-69\\-164.3384\\-149.4766\\-69\\-163.5391\\-145.5703\\-69\\-162.7189\\-143.6172\\-69\\-161.8108\\-139.7109\\-69\\-159.3667\\-133.8516\\-69\\-158.2992\\-131.8984\\-69\\-157.4857\\-129.9453\\-69\\-156.3766\\-127.9922\\-69\\-155.6039\\-126.0391\\-69\\-154.4167\\-124.0859\\-69\\-153.3579\\-122.1328\\-69\\-152.0735\\-120.1797\\-69\\-150.6145\\-118.2266\\-69\\-149.5332\\-116.2734\\-69\\-148.2034\\-114.3203\\-69\\-143.6554\\-108.4609\\-69\\-141.9601\\-106.5078\\-69\\-140.0876\\-104.5547\\-69\\-137.6953\\-102.2735\\-69\\-135.7422\\-100.6232\\-69\\-133.7891\\-99.2727\\-69\\-130.5938\\-96.74219\\-69\\-129.8828\\-96.11192\\-69\\-127.8701\\-94.78906\\-69\\-125.9766\\-93.7873\\-69\\-124.0234\\-92.63311\\-69\\-122.0703\\-91.62389\\-69\\-120.1172\\-90.45258\\-69\\-118.1641\\-89.63932\\-69\\-116.2109\\-88.5625\\-69\\-114.2578\\-87.90206\\-69\\-112.2233\\-86.97656\\-69\\-110.3516\\-86.25666\\-69\\-106.4453\\-84.85828\\-69\\-104.4922\\-84.27369\\-69\\-102.5391\\-83.89947\\-69\\-100.5859\\-83.41706\\-69\\-98.63281\\-82.68406\\-69\\-96.67969\\-82.21667\\-69\\-88.86719\\-81.10891\\-69\\-86.91406\\-80.72798\\-69\\-83.00781\\-80.28991\\-69\\-79.10156\\-80.0921\\-69\\-75.19531\\-79.81735\\-69\\-73.24219\\-79.78989\\-69\\-67.38281\\-79.93089\\-69\\-65.42969\\-80.085\\-69\\-61.52344\\-80.23334\\-69\\-55.66406\\-80.63901\\-69\\-53.71094\\-80.88251\\-69\\-49.80469\\-81.52648\\-69\\-43.94531\\-82.20864\\-69\\-41.99219\\-82.4709\\-69\\-40.03906\\-82.89346\\-69\\-34.17969\\-84.47174\\-69\\-32.22656\\-85.20605\\-69\\-28.32031\\-86.52734\\-69\\-26.36719\\-87.38092\\-69\\-24.41406\\-88.1113\\-69\\-22.86458\\-88.92969\\-69\\-20.50781\\-90.32372\\-69\\-18.55469\\-91.90343\\-69\\-14.64844\\-95.43197\\-69\\-11.6442\\-98.69531\\-69\\-8.292906\\-102.6016\\-69\\-6.863318\\-104.5547\\-69\\-5.117563\\-106.5078\\-69\\-2.929688\\-108.6689\\-69\\-0.9765625\\-109.7357\\-69\\0.9765625\\-108.8835\\-69\\1.365459\\-108.4609\\-69\\4.336229\\-104.5547\\-69\\6.008469\\-102.6016\\-69\\7.788874\\-100.6484\\-69\\11.68981\\-96.74219\\-69\\12.69531\\-95.6386\\-69\\15.67508\\-92.83594\\-69\\18.55469\\-90.46429\\-69\\20.67814\\-88.92969\\-69\\24.41406\\-86.59031\\-69\\26.36719\\-85.51172\\-69\\28.32031\\-84.22126\\-69\\32.22656\\-82.33262\\-69\\34.17969\\-81.7187\\-69\\36.13281\\-80.95181\\-69\\38.08594\\-80.40404\\-69\\41.99219\\-79.57639\\-69\\43.94531\\-79.05556\\-69\\45.89844\\-78.69195\\-69\\49.80469\\-78.17522\\-69\\53.71094\\-77.89838\\-69\\57.61719\\-77.68584\\-69\\61.52344\\-77.64117\\-69\\67.38281\\-77.79946\\-69\\71.28906\\-78.10847\\-69\\75.19531\\-78.21146\\-69\\77.14844\\-78.51505\\-69\\83.00781\\-79.59733\\-69\\84.96094\\-79.7686\\-69\\90.82031\\-80.62554\\-69\\92.77344\\-81.06022\\-69\\94.72656\\-81.61244\\-69\\98.63281\\-82.34106\\-69\\100.5859\\-82.88536\\-69\\102.5391\\-83.65497\\-69\\104.4922\\-84.25278\\-69\\108.3984\\-85.84423\\-69\\110.3516\\-86.42318\\-69\\114.2578\\-88.05393\\-69\\118.1641\\-89.97903\\-69\\120.1172\\-91.17722\\-69\\122.0703\\-92.26991\\-69\\124.0234\\-93.53934\\-69\\125.9766\\-94.58894\\-69\\127.9297\\-95.95964\\-69\\131.8359\\-99.11384\\-69\\133.7891\\-100.4964\\-69\\135.7422\\-102.1398\\-69\\140.1032\\-106.5078\\-69\\141.9449\\-108.4609\\-69\\143.2746\\-110.4141\\-69\\146.4781\\-114.3203\\-69\\147.999\\-116.2734\\-69\\148.9715\\-118.2266\\-69\\150.2717\\-120.1797\\-69\\151.4338\\-122.1328\\-69\\152.4936\\-124.0859\\-69\\153.7417\\-126.0391\\-69\\154.5944\\-127.9922\\-69\\155.7414\\-129.9453\\-69\\156.3578\\-131.8984\\-69\\158.0672\\-135.8047\\-69\\158.7161\\-137.7578\\-69\\159.6889\\-139.7109\\-69\\160.7783\\-143.6172\\-69\\161.583\\-145.5703\\-69\\161.969\\-147.5234\\-69\\162.5013\\-151.4297\\-69\\162.927\\-153.3828\\-69\\163.4961\\-155.3359\\-69\\163.7827\\-157.2891\\-69\\164.6099\\-165.1016\\-69\\165.2261\\-169.0078\\-69\\165.4455\\-170.9609\\-69\\165.8035\\-176.8203\\-69\\165.9619\\-180.7266\\-69\\166.0904\\-186.5859\\-69\\166.1326\\-192.4453\\-69\\166.0811\\-198.3047\\-69\\165.9958\\-204.1641\\-69\\165.7552\\-211.9766\\-69\\165.5187\\-215.8828\\-69\\165.2982\\-217.8359\\-69\\164.5235\\-221.7422\\-69\\163.7042\\-227.6016\\-69\\162.4748\\-231.5078\\-69\\162.1212\\-233.4609\\-69\\161.6626\\-235.4141\\-69\\160.7783\\-237.3672\\-69\\160.0576\\-239.3203\\-69\\159.2024\\-241.2734\\-69\\158.1926\\-243.2266\\-69\\157.2937\\-245.1797\\-69\\156.2968\\-247.1328\\-69\\155.4219\\-249.0859\\-69\\154.2618\\-251.0391\\-69\\152.9584\\-252.9922\\-69\\151.7991\\-254.9453\\-69\\148.882\\-258.8516\\-69\\147.6653\\-260.8047\\-69\\145.9961\\-262.7578\\-69\\140.6986\\-268.6172\\-69\\138.6148\\-270.5703\\-69\\135.7422\\-273.5269\\-69\\133.7891\\-275.3294\\-69\\129.8828\\-278.6058\\-69\\127.7255\\-280.3359\\-69\\125.9766\\-281.6185\\-69\\122.0703\\-284.6133\\-69\\116.847\\-288.1484\\-69\\116.2109\\-288.6402\\-69\\114.2578\\-289.4738\\-69\\112.3047\\-290.7991\\-69\\110.3516\\-291.7947\\-69\\108.3984\\-292.9985\\-69\\104.4922\\-294.906\\-69\\102.5391\\-295.5171\\-69\\100.5859\\-296.4987\\-69\\98.63281\\-297.0287\\-69\\96.67969\\-297.7188\\-69\\94.72656\\-298.5129\\-69\\90.82031\\-299.4066\\-69\\88.86719\\-299.9765\\-69\\86.91406\\-300.3555\\-69\\83.00781\\-300.7656\\-69\\79.10156\\-300.9791\\-69\\75.19531\\-301.0522\\-69\\71.28906\\-301.0095\\-69\\67.38281\\-300.8438\\-69\\63.47656\\-300.4933\\-69\\61.52344\\-300.1841\\-69\\59.57031\\-299.5641\\-69\\55.66406\\-298.5668\\-69\\53.71094\\-297.6788\\-69\\49.80469\\-296.1739\\-69\\47.85156\\-295.1248\\-69\\45.89844\\-294.292\\-69\\41.99219\\-291.4785\\-69\\38.08594\\-288.8061\\-69\\34.87203\\-286.1953\\-69\\32.22656\\-283.7209\\-69\\28.32031\\-280.4987\\-69\\22.46094\\-274.4509\\-69\\20.50781\\-272.266\\-69\\18.55469\\-270.2624\\-69\\16.60156\\-269.0127\\-69\\14.64844\\-268.09\\-69\\12.69531\\-267.5511\\-69\\10.74219\\-267.1821\\-69\\8.789063\\-267.1523\\-69\\2.929688\\-267.1776\\-69\\0.9765625\\-267.284\\-69\\-0.9765625\\-267.5217\\-69\\-2.929688\\-267.5897\\-69\\-4.882813\\-267.9284\\-69\\-6.835938\\-268.1057\\-69\\-10.74219\\-268.3395\\-69\\-12.69531\\-268.5488\\-69\\-14.64844\\-269.0938\\-69\\-16.60156\\-269.9954\\-69\\-18.55469\\-271.7022\\-69\\-21.121\\-274.4766\\-69\\-24.41406\\-277.4718\\-69\\-28.32031\\-281.1104\\-69\\-31.99527\\-284.2422\\-69\\-34.17969\\-286.2786\\-69\\-36.13281\\-287.7966\\-69\\-38.96012\\-290.1016\\-69\\-41.99219\\-292.4012\\-69\\-43.94531\\-293.4975\\-69\\-45.89844\\-294.7498\\-69\\-47.85156\\-295.4693\\-69\\-49.80469\\-296.5736\\-69\\-51.75781\\-297.1703\\-69\\-53.71094\\-298.1498\\-69\\-55.66406\\-298.7717\\-69\\-57.61719\\-299.2883\\-69\\-59.57031\\-299.9619\\-69\\-61.52344\\-300.4227\\-69\\-65.42969\\-300.8381\\-69\\-71.28906\\-301.1672\\-69\\-75.19531\\-301.1796\\-69\\-79.10156\\-301.0026\\-69\\-83.00781\\-300.7034\\-69\\-84.96094\\-300.4739\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "308"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "92"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-299.9338\\-67\\-88.86719\\-299.3318\\-67\\-92.77344\\-298.4697\\-67\\-94.72656\\-297.6068\\-67\\-98.63281\\-296.4524\\-67\\-100.5859\\-295.4148\\-67\\-102.5391\\-294.8074\\-67\\-106.4453\\-292.7939\\-67\\-108.3984\\-291.4332\\-67\\-110.3516\\-290.4293\\-67\\-112.3047\\-289.1806\\-67\\-116.2109\\-286.7878\\-67\\-116.8791\\-286.1953\\-67\\-120.1172\\-283.6497\\-67\\-122.0703\\-282.3793\\-67\\-124.0234\\-280.8488\\-67\\-124.5326\\-280.3359\\-67\\-128.9503\\-276.4297\\-67\\-131.8359\\-273.6293\\-67\\-134.7656\\-270.5703\\-67\\-137.6953\\-267.2232\\-67\\-141.6016\\-262.3985\\-67\\-142.6708\\-260.8047\\-67\\-144.2037\\-258.8516\\-67\\-145.6241\\-256.8984\\-67\\-148.3647\\-252.9922\\-67\\-150.5822\\-249.0859\\-67\\-151.9134\\-247.1328\\-67\\-152.9417\\-245.1797\\-67\\-154.1599\\-243.2266\\-67\\-156.0974\\-239.3203\\-67\\-156.7722\\-237.3672\\-67\\-157.9006\\-235.4141\\-67\\-158.5926\\-233.4609\\-67\\-159.7484\\-231.5078\\-67\\-160.3683\\-229.5547\\-67\\-161.2734\\-227.6016\\-67\\-161.9416\\-225.6484\\-67\\-162.3399\\-223.6953\\-67\\-162.8981\\-221.7422\\-67\\-163.6719\\-219.7891\\-67\\-164.452\\-215.8828\\-67\\-165.6669\\-211.9766\\-67\\-166.3504\\-208.0703\\-67\\-167.2431\\-204.1641\\-67\\-167.5408\\-202.2109\\-67\\-167.7376\\-200.2578\\-67\\-168.0038\\-196.3516\\-67\\-168.2144\\-192.4453\\-67\\-168.3302\\-188.5391\\-67\\-168.3556\\-182.6797\\-67\\-168.2144\\-176.8203\\-67\\-167.9515\\-170.9609\\-67\\-167.4774\\-165.1016\\-67\\-167.193\\-163.1484\\-67\\-166.4005\\-159.2422\\-67\\-165.8053\\-155.3359\\-67\\-165.4161\\-153.3828\\-67\\-164.761\\-151.4297\\-67\\-164.2849\\-149.4766\\-67\\-163.4538\\-145.5703\\-67\\-162.6378\\-143.6172\\-67\\-161.7691\\-139.7109\\-67\\-160.8833\\-137.7578\\-67\\-159.2605\\-133.8516\\-67\\-158.2504\\-131.8984\\-67\\-157.362\\-129.9453\\-67\\-156.321\\-127.9922\\-67\\-155.5233\\-126.0391\\-67\\-155.2734\\-125.6888\\-67\\-153.3203\\-122.1437\\-67\\-152.0691\\-120.1797\\-67\\-150.6394\\-118.2266\\-67\\-149.5768\\-116.2734\\-67\\-148.2933\\-114.3203\\-67\\-143.8427\\-108.4609\\-67\\-142.2455\\-106.5078\\-67\\-140.4486\\-104.5547\\-67\\-137.6953\\-101.8868\\-67\\-135.7422\\-100.2185\\-67\\-131.2924\\-96.74219\\-67\\-127.9297\\-94.28993\\-67\\-125.9766\\-93.43426\\-67\\-124.0234\\-92.18708\\-67\\-120.1172\\-90.01405\\-67\\-118.1641\\-89.20973\\-67\\-116.2109\\-88.16864\\-67\\-114.2578\\-87.52544\\-67\\-112.3047\\-86.53146\\-67\\-110.3516\\-85.86328\\-67\\-106.4453\\-84.34437\\-67\\-104.4922\\-83.79782\\-67\\-102.5391\\-83.46231\\-67\\-98.63281\\-82.21172\\-67\\-94.72656\\-81.52103\\-67\\-92.77344\\-81.07581\\-67\\-84.96094\\-80.1823\\-67\\-83.00781\\-79.92361\\-67\\-81.05469\\-79.76763\\-67\\-73.24219\\-79.28513\\-67\\-67.38281\\-79.48461\\-67\\-61.52344\\-79.82188\\-67\\-59.57031\\-80.03555\\-67\\-55.66406\\-80.31046\\-67\\-49.80469\\-80.85628\\-67\\-45.89844\\-81.51212\\-67\\-40.03906\\-82.25651\\-67\\-38.08594\\-82.62124\\-67\\-34.17969\\-83.85281\\-67\\-32.22656\\-84.39868\\-67\\-30.36386\\-85.02344\\-67\\-28.32031\\-85.95148\\-67\\-26.36719\\-86.53575\\-67\\-24.41406\\-87.50183\\-67\\-22.46094\\-88.28097\\-67\\-18.55469\\-90.82388\\-67\\-16.60156\\-92.6692\\-67\\-14.64844\\-94.35239\\-67\\-12.69531\\-96.296\\-67\\-10.52782\\-98.69531\\-67\\-9.078721\\-100.6484\\-67\\-5.59677\\-104.5547\\-67\\-2.929688\\-107.2054\\-67\\-0.9765625\\-108.2656\\-67\\0.9765625\\-107.398\\-67\\4.882813\\-102.7597\\-67\\8.536784\\-98.69531\\-67\\10.74219\\-96.42442\\-67\\14.47976\\-92.83594\\-67\\16.71464\\-90.88281\\-67\\18.55469\\-89.64307\\-67\\20.50781\\-88.14984\\-67\\22.46094\\-86.875\\-67\\24.41406\\-85.84183\\-67\\26.36719\\-84.53169\\-67\\30.27344\\-82.48984\\-67\\32.22656\\-81.77985\\-67\\34.17969\\-80.95181\\-67\\36.13281\\-80.38794\\-67\\38.08594\\-79.92287\\-67\\41.99219\\-78.87041\\-67\\45.89844\\-78.18124\\-67\\47.85156\\-77.89453\\-67\\53.71094\\-77.34375\\-67\\57.61719\\-77.11253\\-67\\61.52344\\-77.01563\\-67\\63.47656\\-77.04206\\-67\\67.38281\\-77.21888\\-67\\71.28906\\-77.67995\\-67\\73.24219\\-77.7993\\-67\\75.19531\\-77.80185\\-67\\77.14844\\-78.02271\\-67\\79.10156\\-78.38167\\-67\\84.47266\\-79.16406\\-67\\88.86719\\-80.02749\\-67\\92.77344\\-80.54313\\-67\\94.72656\\-80.98331\\-67\\96.67969\\-81.59508\\-67\\100.5859\\-82.40012\\-67\\104.4922\\-83.82851\\-67\\106.4453\\-84.45581\\-67\\108.3984\\-85.34421\\-67\\112.3047\\-86.63719\\-67\\114.2578\\-87.77896\\-67\\116.2109\\-88.43443\\-67\\118.1641\\-89.56573\\-67\\120.1172\\-90.5199\\-67\\124.0234\\-93.06618\\-67\\125.9766\\-94.07336\\-67\\127.9297\\-95.60066\\-67\\131.8359\\-98.54805\\-67\\133.7891\\-100.1127\\-67\\135.7422\\-101.8217\\-67\\137.6953\\-103.7279\\-67\\139.6484\\-105.8188\\-67\\140.4176\\-106.5078\\-67\\142.2084\\-108.4609\\-67\\143.7124\\-110.4141\\-67\\145.0903\\-112.3672\\-67\\148.1729\\-116.2734\\-67\\149.1382\\-118.2266\\-67\\151.591\\-122.1328\\-67\\152.5908\\-124.0859\\-67\\153.815\\-126.0391\\-67\\154.6639\\-127.9922\\-67\\155.785\\-129.9453\\-67\\156.3766\\-131.8984\\-67\\158.0487\\-135.8047\\-67\\158.6465\\-137.7578\\-67\\159.6252\\-139.7109\\-67\\160.7023\\-143.6172\\-67\\161.499\\-145.5703\\-67\\161.9178\\-147.5234\\-67\\162.4042\\-151.4297\\-67\\162.7581\\-153.3828\\-67\\163.3336\\-155.3359\\-67\\163.6927\\-157.2891\\-67\\163.9075\\-159.2422\\-67\\164.4474\\-165.1016\\-67\\164.6704\\-167.0547\\-67\\165.2385\\-170.9609\\-67\\165.561\\-174.8672\\-67\\165.8273\\-180.7266\\-67\\165.9175\\-184.6328\\-67\\165.966\\-192.4453\\-67\\165.8948\\-202.2109\\-67\\165.7589\\-208.0703\\-67\\165.483\\-213.9297\\-67\\165.2865\\-215.8828\\-67\\164.3423\\-221.7422\\-67\\163.8661\\-225.6484\\-67\\163.5063\\-227.6016\\-67\\162.7794\\-229.5547\\-67\\161.9962\\-233.4609\\-67\\161.4698\\-235.4141\\-67\\160.5481\\-237.3672\\-67\\159.8894\\-239.3203\\-67\\158.8881\\-241.2734\\-67\\158.0324\\-243.2266\\-67\\156.9569\\-245.1797\\-67\\156.1726\\-247.1328\\-67\\154.0838\\-251.0391\\-67\\152.7294\\-252.9922\\-67\\151.5416\\-254.9453\\-67\\150.1888\\-256.8984\\-67\\147.4609\\-260.6652\\-67\\145.7291\\-262.7578\\-67\\142.3124\\-266.6641\\-67\\140.4903\\-268.6172\\-67\\137.6953\\-271.2737\\-67\\135.7422\\-273.3281\\-67\\133.7891\\-275.1253\\-67\\129.8828\\-278.2133\\-67\\127.3682\\-280.3359\\-67\\124.0234\\-282.8969\\-67\\120.1172\\-285.575\\-67\\118.1641\\-287.0468\\-67\\116.2109\\-288.356\\-67\\114.2578\\-289.2757\\-67\\112.3047\\-290.5711\\-67\\110.3516\\-291.4958\\-67\\108.3984\\-292.7746\\-67\\106.4453\\-293.6557\\-67\\104.4922\\-294.7186\\-67\\102.5391\\-295.2868\\-67\\100.5859\\-296.2247\\-67\\98.63281\\-296.8677\\-67\\96.67969\\-297.3978\\-67\\94.72656\\-298.2606\\-67\\92.77344\\-298.7648\\-67\\90.82031\\-299.1595\\-67\\86.91406\\-300.1281\\-67\\83.00781\\-300.6136\\-67\\79.10156\\-300.8438\\-67\\75.19531\\-300.9184\\-67\\71.28906\\-300.8894\\-67\\67.38281\\-300.7321\\-67\\63.47656\\-300.3644\\-67\\61.52344\\-300.0026\\-67\\59.57031\\-299.3759\\-67\\55.66406\\-298.4421\\-67\\53.71094\\-297.4807\\-67\\51.75781\\-296.8543\\-67\\45.89844\\-294.1102\\-67\\43.02979\\-292.0547\\-67\\38.08594\\-288.7705\\-67\\34.85292\\-286.1953\\-67\\32.22656\\-283.841\\-67\\30.27344\\-282.3793\\-67\\28.32031\\-280.7993\\-67\\23.89172\\-276.4297\\-67\\21.79747\\-274.4766\\-67\\18.55469\\-271.3501\\-67\\16.60156\\-270.1317\\-67\\12.69531\\-269.2213\\-67\\10.74219\\-269.0369\\-67\\6.835938\\-268.9634\\-67\\2.929688\\-269.0131\\-67\\-2.929688\\-269.1764\\-67\\-4.882813\\-269.7092\\-67\\-8.789063\\-269.9633\\-67\\-10.74219\\-269.5865\\-67\\-12.69531\\-269.8536\\-67\\-14.64844\\-270.3839\\-67\\-16.60156\\-271.3243\\-67\\-18.55469\\-272.6717\\-67\\-20.50781\\-274.5869\\-67\\-24.41406\\-277.8662\\-67\\-27.19411\\-280.3359\\-67\\-30.27344\\-282.9105\\-67\\-31.95866\\-284.2422\\-67\\-34.17969\\-286.2029\\-67\\-39.0705\\-290.1016\\-67\\-41.99219\\-292.2417\\-67\\-43.94531\\-293.3668\\-67\\-45.89844\\-294.6393\\-67\\-47.85156\\-295.3418\\-67\\-49.80469\\-296.446\\-67\\-51.75781\\-297.0637\\-67\\-55.66406\\-298.6641\\-67\\-57.61719\\-299.1456\\-67\\-61.52344\\-300.3005\\-67\\-63.47656\\-300.5615\\-67\\-67.38281\\-300.8894\\-67\\-71.28906\\-301.0594\\-67\\-75.19531\\-301.0879\\-67\\-81.05469\\-300.7938\\-67\\-84.96094\\-300.3644\\-67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "298"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "93"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.96094\\-300.2413\\-65\\-88.86719\\-299.1924\\-65\\-92.77344\\-298.3133\\-65\\-94.72656\\-297.4227\\-65\\-96.67969\\-296.8953\\-65\\-98.63281\\-296.263\\-65\\-100.5859\\-295.2792\\-65\\-102.5391\\-294.6858\\-65\\-104.4922\\-293.5322\\-65\\-106.4453\\-292.6152\\-65\\-108.3984\\-291.2679\\-65\\-112.3047\\-289.0446\\-65\\-114.2578\\-287.7537\\-65\\-116.2109\\-286.5873\\-65\\-120.1172\\-283.4383\\-65\\-121.8787\\-282.2891\\-65\\-124.0234\\-280.6487\\-65\\-128.7095\\-276.4297\\-65\\-131.8359\\-273.4312\\-65\\-133.7891\\-271.338\\-65\\-134.6029\\-270.5703\\-65\\-137.6953\\-267.0434\\-65\\-141.6016\\-262.2259\\-65\\-144.1136\\-258.8516\\-65\\-145.4671\\-256.8984\\-65\\-148.2798\\-252.9922\\-65\\-150.4877\\-249.0859\\-65\\-151.8291\\-247.1328\\-65\\-152.832\\-245.1797\\-65\\-154.0766\\-243.2266\\-65\\-154.9408\\-241.2734\\-65\\-156.0136\\-239.3203\\-65\\-156.651\\-237.3672\\-65\\-157.787\\-235.4141\\-65\\-158.4473\\-233.4609\\-65\\-159.5741\\-231.5078\\-65\\-160.2367\\-229.5547\\-65\\-161.8425\\-225.6484\\-65\\-162.6967\\-221.7422\\-65\\-163.5164\\-219.7891\\-65\\-164.3094\\-215.8828\\-65\\-164.8324\\-213.9297\\-65\\-165.5215\\-211.9766\\-65\\-166.5534\\-206.1172\\-65\\-167.3712\\-202.2109\\-65\\-167.6099\\-200.2578\\-65\\-167.9982\\-194.3984\\-65\\-168.2235\\-188.5391\\-65\\-168.239\\-182.6797\\-65\\-168.175\\-178.7734\\-65\\-168.057\\-174.8672\\-65\\-167.866\\-170.9609\\-65\\-167.5698\\-167.0547\\-65\\-167.3712\\-165.1016\\-65\\-167.0588\\-163.1484\\-65\\-166.2884\\-159.2422\\-65\\-165.7124\\-155.3359\\-65\\-165.2982\\-153.3828\\-65\\-164.6396\\-151.4297\\-65\\-163.8359\\-147.5234\\-65\\-163.3212\\-145.5703\\-65\\-162.5179\\-143.6172\\-65\\-161.6825\\-139.7109\\-65\\-160.7276\\-137.7578\\-65\\-160.0236\\-135.8047\\-65\\-156.25\\-127.9922\\-65\\-155.3615\\-126.0391\\-65\\-153.3203\\-122.3302\\-65\\-152.0244\\-120.1797\\-65\\-150.6165\\-118.2266\\-65\\-149.5625\\-116.2734\\-65\\-148.3211\\-114.3203\\-65\\-146.8645\\-112.3672\\-65\\-145.5154\\-110.4141\\-65\\-142.5068\\-106.5078\\-65\\-139.6484\\-103.3814\\-65\\-137.6953\\-101.5303\\-65\\-134.421\\-98.69531\\-65\\-131.8359\\-96.63898\\-65\\-127.9297\\-93.92026\\-65\\-125.9766\\-92.79779\\-65\\-124.0234\\-91.83481\\-65\\-122.0703\\-90.63692\\-65\\-120.1172\\-89.70483\\-65\\-118.1641\\-88.64518\\-65\\-116.2109\\-87.88758\\-65\\-114.2578\\-86.90569\\-65\\-112.3047\\-86.23223\\-65\\-109.375\\-85.02344\\-65\\-106.4453\\-83.94515\\-65\\-104.4922\\-83.45952\\-65\\-100.5859\\-82.36068\\-65\\-96.67969\\-81.4402\\-65\\-94.72656\\-80.92342\\-65\\-92.77344\\-80.69169\\-65\\-86.91406\\-80.13467\\-65\\-83.00781\\-79.57037\\-65\\-77.14844\\-79.05556\\-65\\-73.24219\\-78.8601\\-65\\-67.38281\\-78.96462\\-65\\-61.52344\\-79.36418\\-65\\-53.71094\\-80.14063\\-65\\-51.75781\\-80.25957\\-65\\-47.85156\\-80.59592\\-65\\-45.89844\\-80.82866\\-65\\-40.03906\\-81.82802\\-65\\-38.08594\\-82.10651\\-65\\-36.13281\\-82.48839\\-65\\-32.22656\\-83.80746\\-65\\-30.27344\\-84.30354\\-65\\-26.36719\\-85.98122\\-65\\-24.41406\\-86.67776\\-65\\-22.46094\\-87.74289\\-65\\-20.50781\\-88.61442\\-65\\-18.55469\\-89.95579\\-65\\-15.41516\\-92.83594\\-65\\-12.69531\\-95.43197\\-65\\-9.5628\\-98.69531\\-65\\-6.068638\\-102.6016\\-65\\-2.929688\\-105.8898\\-65\\-0.9765625\\-107.0576\\-65\\0.9765625\\-105.9368\\-65\\2.193622\\-104.5547\\-65\\7.704791\\-98.69531\\-65\\10.74219\\-95.60047\\-65\\13.60212\\-92.83594\\-65\\16.60156\\-90.04867\\-65\\18.55469\\-88.53092\\-65\\20.50781\\-87.40625\\-65\\24.41406\\-84.90625\\-65\\28.32031\\-82.67821\\-65\\32.22656\\-81.07545\\-65\\34.17969\\-80.39453\\-65\\36.13281\\-79.95431\\-65\\40.03906\\-78.7336\\-65\\45.89844\\-77.68546\\-65\\49.80469\\-77.15491\\-65\\53.71094\\-76.72607\\-65\\59.57031\\-76.52276\\-65\\63.47656\\-76.54037\\-65\\67.38281\\-76.66327\\-65\\69.33594\\-76.79642\\-65\\73.24219\\-77.32275\\-65\\75.19531\\-77.37856\\-65\\77.14844\\-77.60558\\-65\\79.10156\\-77.9816\\-65\\83.00781\\-78.43164\\-65\\86.91406\\-79.11188\\-65\\88.86719\\-79.6004\\-65\\94.72656\\-80.51968\\-65\\96.67969\\-80.96875\\-65\\98.63281\\-81.68574\\-65\\102.5391\\-82.5322\\-65\\104.4922\\-83.38421\\-65\\108.3984\\-84.69569\\-65\\110.3516\\-85.60287\\-65\\112.3047\\-86.28757\\-65\\114.2578\\-87.42997\\-65\\116.2109\\-88.06093\\-65\\120.1172\\-90.05183\\-65\\122.0703\\-91.36758\\-65\\124.0234\\-92.45501\\-65\\127.4884\\-94.78906\\-65\\129.8828\\-96.55958\\-65\\134.8208\\-100.6484\\-65\\137.6953\\-103.3975\\-65\\140.6767\\-106.5078\\-65\\142.4132\\-108.4609\\-65\\143.9807\\-110.4141\\-65\\145.3438\\-112.3672\\-65\\148.2706\\-116.2734\\-65\\150.4339\\-120.1797\\-65\\151.682\\-122.1328\\-65\\152.6633\\-124.0859\\-65\\153.8739\\-126.0391\\-65\\154.6862\\-127.9922\\-65\\155.7983\\-129.9453\\-65\\156.3525\\-131.8984\\-65\\158.0028\\-135.8047\\-65\\158.5535\\-137.7578\\-65\\159.518\\-139.7109\\-65\\160.5842\\-143.6172\\-65\\161.3235\\-145.5703\\-65\\161.8357\\-147.5234\\-65\\162.6107\\-153.3828\\-65\\163.5554\\-157.2891\\-65\\163.8075\\-159.2422\\-65\\164.304\\-165.1016\\-65\\164.681\\-169.0078\\-65\\164.9571\\-170.9609\\-65\\165.3752\\-174.8672\\-65\\165.6196\\-178.7734\\-65\\165.8014\\-186.5859\\-65\\165.8074\\-194.3984\\-65\\165.7424\\-200.2578\\-65\\165.7552\\-202.2109\\-65\\165.5963\\-208.0703\\-65\\165.3959\\-211.9766\\-65\\165.2385\\-213.9297\\-65\\164.668\\-217.8359\\-65\\163.7121\\-225.6484\\-65\\163.2425\\-227.6016\\-65\\162.5813\\-229.5547\\-65\\161.8546\\-233.4609\\-65\\161.1871\\-235.4141\\-65\\160.3527\\-237.3672\\-65\\159.7087\\-239.3203\\-65\\158.6225\\-241.2734\\-65\\157.8568\\-243.2266\\-65\\156.6862\\-245.1797\\-65\\156.0184\\-247.1328\\-65\\154.8479\\-249.0859\\-65\\153.8936\\-251.0391\\-65\\151.3672\\-254.7273\\-65\\150.0041\\-256.8984\\-65\\147.4609\\-260.308\\-65\\145.3369\\-262.7578\\-65\\142.0827\\-266.6641\\-65\\140.2358\\-268.6172\\-65\\138.142\\-270.5703\\-65\\135.7422\\-273.0723\\-65\\133.7891\\-274.8539\\-65\\131.8359\\-276.2925\\-65\\129.8828\\-277.8482\\-65\\127.9297\\-279.5891\\-65\\125.9766\\-281.1865\\-65\\124.0234\\-282.6072\\-65\\122.0703\\-283.8559\\-65\\118.1641\\-286.8191\\-65\\116.0048\\-288.1484\\-65\\112.5064\\-290.1016\\-65\\110.3516\\-291.2409\\-65\\108.3984\\-292.5309\\-65\\106.4453\\-293.3783\\-65\\104.4922\\-294.4928\\-65\\100.5859\\-295.8148\\-65\\98.63281\\-296.6833\\-65\\96.67969\\-297.1496\\-65\\92.77344\\-298.5633\\-65\\88.86719\\-299.3351\\-65\\84.96094\\-300.1992\\-65\\81.05469\\-300.6067\\-65\\77.14844\\-300.7534\\-65\\73.24219\\-300.7932\\-65\\67.38281\\-300.618\\-65\\63.47656\\-300.197\\-65\\55.66406\\-298.2523\\-65\\53.71094\\-297.3044\\-65\\51.75781\\-296.7501\\-65\\49.80469\\-295.7298\\-65\\47.85156\\-294.9417\\-65\\46.02944\\-294.0078\\-65\\43.94531\\-292.6956\\-65\\40.03906\\-289.9632\\-65\\38.08594\\-288.7478\\-65\\36.13281\\-287.2623\\-65\\32.22656\\-284.0534\\-65\\30.27344\\-282.6297\\-65\\28.32031\\-281.0566\\-65\\24.41406\\-277.3452\\-65\\22.46094\\-275.5609\\-65\\20.50781\\-273.9152\\-65\\18.55469\\-272.4774\\-65\\16.60156\\-271.6349\\-65\\14.64844\\-271.1817\\-65\\12.69531\\-270.8897\\-65\\8.789063\\-270.8051\\-65\\4.882813\\-270.8239\\-65\\-2.929688\\-271.0764\\-65\\-4.882813\\-271.4879\\-65\\-6.835938\\-271.6732\\-65\\-8.789063\\-271.7574\\-65\\-10.74219\\-270.7534\\-65\\-14.64844\\-272.0941\\-65\\-16.60156\\-272.7033\\-65\\-18.55469\\-273.6277\\-65\\-21.93377\\-276.4297\\-65\\-24.37233\\-278.3828\\-65\\-26.69271\\-280.3359\\-65\\-28.32031\\-281.4985\\-65\\-31.79721\\-284.2422\\-65\\-34.17969\\-286.2182\\-65\\-36.13281\\-287.6534\\-65\\-39.21022\\-290.1016\\-65\\-42.05668\\-292.0547\\-65\\-45.20089\\-294.0078\\-65\\-45.89844\\-294.5095\\-65\\-47.85156\\-295.2378\\-65\\-49.80469\\-296.2888\\-65\\-53.71094\\-297.6682\\-65\\-55.66406\\-298.5457\\-65\\-59.57031\\-299.5461\\-65\\-61.52344\\-300.1621\\-65\\-63.47656\\-300.4624\\-65\\-67.38281\\-300.8045\\-65\\-71.28906\\-300.9542\\-65\\-75.19531\\-300.9709\\-65\\-81.05469\\-300.6987\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "316"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "94"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.96094\\-300.0666\\-63\\-86.91406\\-299.5138\\-63\\-90.82031\\-298.6759\\-63\\-92.77344\\-298.1011\\-63\\-94.72656\\-297.2649\\-63\\-96.67969\\-296.7802\\-63\\-98.63281\\-296.0313\\-63\\-100.5859\\-295.1664\\-63\\-102.5391\\-294.5317\\-63\\-104.4922\\-293.343\\-63\\-106.4453\\-292.3889\\-63\\-110.3516\\-289.8786\\-63\\-112.3047\\-288.8904\\-63\\-114.2578\\-287.5509\\-63\\-116.2109\\-286.3369\\-63\\-120.1172\\-283.2713\\-63\\-121.5863\\-282.2891\\-63\\-124.0234\\-280.378\\-63\\-128.4888\\-276.4297\\-63\\-131.8359\\-273.2228\\-63\\-133.7891\\-271.1492\\-63\\-134.4467\\-270.5703\\-63\\-136.234\\-268.6172\\-63\\-139.3828\\-264.7109\\-63\\-141.6016\\-262.065\\-63\\-144.0264\\-258.8516\\-63\\-145.5078\\-256.6522\\-63\\-148.1995\\-252.9922\\-63\\-149.2188\\-251.0391\\-63\\-150.4087\\-249.0859\\-63\\-151.7137\\-247.1328\\-63\\-152.7077\\-245.1797\\-63\\-153.9815\\-243.2266\\-63\\-154.7953\\-241.2734\\-63\\-155.9181\\-239.3203\\-63\\-156.5442\\-237.3672\\-63\\-157.6425\\-235.4141\\-63\\-158.3168\\-233.4609\\-63\\-159.3667\\-231.5078\\-63\\-160.8412\\-227.6016\\-63\\-161.7188\\-225.6484\\-63\\-162.5398\\-221.7422\\-63\\-163.3085\\-219.7891\\-63\\-163.8359\\-217.8359\\-63\\-164.5917\\-213.9297\\-63\\-165.3209\\-211.9766\\-63\\-165.7263\\-210.0234\\-63\\-166.3355\\-206.1172\\-63\\-167.1419\\-202.2109\\-63\\-167.4338\\-200.2578\\-63\\-167.8711\\-194.3984\\-63\\-168.0923\\-188.5391\\-63\\-168.1176\\-184.6328\\-63\\-168.0634\\-178.7734\\-63\\-167.963\\-174.8672\\-63\\-167.7677\\-170.9609\\-63\\-167.4651\\-167.0547\\-63\\-167.2312\\-165.1016\\-63\\-166.5009\\-161.1953\\-63\\-165.6164\\-155.3359\\-63\\-165.1338\\-153.3828\\-63\\-164.4886\\-151.4297\\-63\\-163.7464\\-147.5234\\-63\\-162.4122\\-143.6172\\-63\\-162.0495\\-141.6641\\-63\\-161.5357\\-139.7109\\-63\\-160.5668\\-137.7578\\-63\\-159.8973\\-135.8047\\-63\\-158.8565\\-133.8516\\-63\\-158.0174\\-131.8984\\-63\\-156.9569\\-129.9453\\-63\\-156.153\\-127.9922\\-63\\-154.2033\\-124.0859\\-63\\-153.0116\\-122.1328\\-63\\-151.9279\\-120.1797\\-63\\-150.5395\\-118.2266\\-63\\-149.4861\\-116.2734\\-63\\-148.3008\\-114.3203\\-63\\-146.9523\\-112.3672\\-63\\-145.7087\\-110.4141\\-63\\-143.5547\\-107.5724\\-63\\-142.6527\\-106.5078\\-63\\-139.6484\\-103.2251\\-63\\-137.6953\\-101.3217\\-63\\-134.8522\\-98.69531\\-63\\-131.8359\\-96.23975\\-63\\-129.7862\\-94.78906\\-63\\-127.9297\\-93.57363\\-63\\-125.9766\\-92.404\\-63\\-124.0234\\-91.41235\\-63\\-122.0703\\-90.25055\\-63\\-120.1172\\-89.38093\\-63\\-118.1641\\-88.2583\\-63\\-116.2109\\-87.55395\\-63\\-114.2578\\-86.53744\\-63\\-112.3047\\-85.83724\\-63\\-110.3516\\-84.86185\\-63\\-108.3984\\-84.38604\\-63\\-104.47\\-83.07031\\-63\\-102.5391\\-82.47618\\-63\\-98.63281\\-81.65294\\-63\\-96.67969\\-80.95045\\-63\\-94.72656\\-80.60215\\-63\\-90.82031\\-80.2431\\-63\\-88.86719\\-79.98\\-63\\-86.91406\\-79.81726\\-63\\-84.96094\\-79.4548\\-63\\-81.05469\\-78.91658\\-63\\-75.19531\\-78.53583\\-63\\-69.33594\\-78.50252\\-63\\-67.38281\\-78.53627\\-63\\-65.42969\\-78.72937\\-63\\-61.52344\\-78.90498\\-63\\-57.61719\\-79.17263\\-63\\-53.71094\\-79.6899\\-63\\-49.80469\\-80.06322\\-63\\-43.94531\\-80.5732\\-63\\-41.99219\\-80.82866\\-63\\-38.08594\\-81.72173\\-63\\-34.17969\\-82.42578\\-63\\-28.32031\\-84.39918\\-63\\-26.36719\\-85.31868\\-63\\-24.41406\\-86.05708\\-63\\-20.50781\\-87.93927\\-63\\-18.97322\\-88.92969\\-63\\-16.60156\\-90.68893\\-63\\-10.74219\\-96.25787\\-63\\-8.3903\\-98.69531\\-63\\-5.023663\\-102.6016\\-63\\-2.929688\\-104.7666\\-63\\-0.9765625\\-105.7594\\-63\\0.9765625\\-104.8145\\-63\\2.929688\\-102.717\\-63\\4.947917\\-100.6484\\-63\\8.486794\\-96.74219\\-63\\14.64844\\-90.82285\\-63\\16.60156\\-89.22723\\-63\\20.50781\\-86.47371\\-63\\22.46094\\-85.43344\\-63\\24.41406\\-84.17224\\-63\\26.36719\\-83.02822\\-63\\28.32031\\-82.12674\\-63\\30.27344\\-81.37094\\-63\\32.22656\\-80.46838\\-63\\36.13281\\-79.36095\\-63\\38.08594\\-78.69756\\-63\\43.94531\\-77.45694\\-63\\47.85156\\-76.81048\\-63\\49.80469\\-76.61262\\-63\\53.71094\\-76.3295\\-63\\57.61719\\-76.17655\\-63\\61.52344\\-76.14502\\-63\\69.33594\\-76.40854\\-63\\73.24219\\-76.76884\\-63\\77.14844\\-77.06821\\-63\\79.10156\\-77.52261\\-63\\81.05469\\-77.83184\\-63\\86.91406\\-78.59226\\-63\\90.82031\\-79.53912\\-63\\94.72656\\-80.15323\\-63\\96.67969\\-80.55078\\-63\\100.5859\\-81.82913\\-63\\102.5391\\-82.19751\\-63\\104.4922\\-82.80067\\-63\\106.4453\\-83.67542\\-63\\108.3984\\-84.26389\\-63\\110.3516\\-85.07993\\-63\\114.2578\\-86.90625\\-63\\118.1641\\-88.55801\\-63\\122.0703\\-90.79618\\-63\\125.9766\\-93.48019\\-63\\127.9297\\-94.61673\\-63\\129.8828\\-96.17311\\-63\\130.4731\\-96.74219\\-63\\135.2043\\-100.6484\\-63\\137.6953\\-103.0529\\-63\\140.9437\\-106.5078\\-63\\143.5547\\-109.6056\\-63\\147.4609\\-114.9683\\-63\\148.3392\\-116.2734\\-63\\150.4643\\-120.1797\\-63\\151.724\\-122.1328\\-63\\152.6832\\-124.0859\\-63\\153.8792\\-126.0391\\-63\\154.6419\\-127.9922\\-63\\155.7617\\-129.9453\\-63\\156.2979\\-131.8984\\-63\\156.9955\\-133.8516\\-63\\157.9102\\-135.8047\\-63\\158.4432\\-137.7578\\-63\\159.3283\\-139.7109\\-63\\159.9682\\-141.6641\\-63\\160.4458\\-143.6172\\-63\\161.7084\\-147.5234\\-63\\162.0147\\-149.4766\\-63\\162.474\\-153.3828\\-63\\162.8203\\-155.3359\\-63\\163.3459\\-157.2891\\-63\\163.66\\-159.2422\\-63\\163.8703\\-161.1953\\-63\\164.4752\\-169.0078\\-63\\165.0766\\-174.8672\\-63\\165.4358\\-178.7734\\-63\\165.6042\\-184.6328\\-63\\165.6567\\-192.4453\\-63\\165.5692\\-200.2578\\-63\\165.5853\\-202.2109\\-63\\165.3752\\-208.0703\\-63\\165.1057\\-211.9766\\-63\\164.6369\\-215.8828\\-63\\163.8318\\-223.6953\\-63\\163.5063\\-225.6484\\-63\\162.9132\\-227.6016\\-63\\162.4204\\-229.5547\\-63\\162.1094\\-231.5078\\-63\\161.681\\-233.4609\\-63\\160.8508\\-235.4141\\-63\\159.4766\\-239.3203\\-63\\158.3822\\-241.2734\\-63\\157.6504\\-243.2266\\-63\\156.488\\-245.1797\\-63\\155.8152\\-247.1328\\-63\\154.6032\\-249.0859\\-63\\153.6365\\-251.0391\\-63\\151.3672\\-254.34\\-63\\150.855\\-254.9453\\-63\\149.7566\\-256.8984\\-63\\148.3745\\-258.8516\\-63\\146.7859\\-260.8047\\-63\\143.2989\\-264.7109\\-63\\141.7984\\-266.6641\\-63\\139.6484\\-268.873\\-63\\137.7887\\-270.5703\\-63\\135.7422\\-272.7482\\-63\\133.7891\\-274.4847\\-63\\131.8359\\-275.9414\\-63\\129.0283\\-278.3828\\-63\\125.9766\\-280.9455\\-63\\122.0703\\-283.5712\\-63\\121.2749\\-284.2422\\-63\\118.5092\\-286.1953\\-63\\118.1641\\-286.5255\\-63\\116.2109\\-287.6567\\-63\\114.2578\\-288.9384\\-63\\112.3047\\-289.8152\\-63\\111.9385\\-290.1016\\-63\\108.5612\\-292.0547\\-63\\104.7727\\-294.0078\\-63\\102.5391\\-294.9364\\-63\\100.5859\\-295.476\\-63\\98.63281\\-296.433\\-63\\94.72656\\-297.4609\\-63\\92.77344\\-298.2834\\-63\\90.82031\\-298.7329\\-63\\86.91406\\-299.438\\-63\\83.00781\\-300.2182\\-63\\79.10156\\-300.5615\\-63\\73.24219\\-300.654\\-63\\67.38281\\-300.4855\\-63\\65.42969\\-300.2937\\-63\\63.47656\\-299.9893\\-63\\61.52344\\-299.4703\\-63\\57.61719\\-298.6361\\-63\\55.66406\\-297.9807\\-63\\53.71094\\-297.1607\\-63\\51.75781\\-296.6179\\-63\\49.80469\\-295.5662\\-63\\47.85156\\-294.837\\-63\\43.94531\\-292.6799\\-63\\41.99219\\-291.2344\\-63\\40.03906\\-289.9031\\-63\\38.08594\\-288.7478\\-63\\34.65586\\-286.1953\\-63\\32.16019\\-284.2422\\-63\\30.27344\\-282.8736\\-63\\27.16261\\-280.3359\\-63\\24.41406\\-277.7813\\-63\\22.46094\\-276.1795\\-63\\20.50781\\-274.9114\\-63\\18.55469\\-273.8017\\-63\\16.60156\\-273.1719\\-63\\14.64844\\-272.8218\\-63\\10.74219\\-272.5918\\-63\\4.882813\\-272.6671\\-63\\-0.9765625\\-272.8828\\-63\\-2.929688\\-272.9897\\-63\\-6.835938\\-273.3799\\-63\\-8.789063\\-273.4916\\-63\\-10.74219\\-273.2452\\-63\\-12.69531\\-273.4332\\-63\\-14.64844\\-273.8122\\-63\\-16.60156\\-274.0203\\-63\\-18.55469\\-274.7752\\-63\\-20.50781\\-275.8468\\-63\\-22.46094\\-277.3326\\-63\\-26.36719\\-280.5897\\-63\\-28.32031\\-281.8223\\-63\\-30.27344\\-283.2408\\-63\\-34.17969\\-286.3762\\-63\\-36.13281\\-287.6534\\-63\\-40.03906\\-290.5745\\-63\\-41.99219\\-291.7807\\-63\\-45.89844\\-294.3661\\-63\\-47.85156\\-295.1441\\-63\\-49.80469\\-296.0906\\-63\\-51.75781\\-296.872\\-63\\-53.71094\\-297.4836\\-63\\-55.66406\\-297.7172\\-63\\-57.61719\\-298.8857\\-63\\-59.57031\\-299.3699\\-63\\-61.52344\\-299.9619\\-63\\-63.47656\\-300.3525\\-63\\-67.38281\\-300.705\\-63\\-73.24219\\-300.884\\-63\\-77.14844\\-300.8157\\-63\\-81.05469\\-300.5954\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "300"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "95"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-83.00781\\-300.2389\\-61\\-84.86643\\-299.8672\\-61\\-86.91406\\-299.3436\\-61\\-90.82031\\-298.5453\\-61\\-94.72656\\-297.1274\\-61\\-96.67969\\-296.6593\\-61\\-98.63281\\-295.7581\\-61\\-102.5391\\-294.3472\\-61\\-103.0273\\-294.0078\\-61\\-106.4453\\-292.0928\\-61\\-109.7621\\-290.1016\\-61\\-110.3516\\-289.6342\\-61\\-112.3047\\-288.7131\\-61\\-116.0049\\-286.1953\\-61\\-118.5918\\-284.2422\\-61\\-121.3359\\-282.2891\\-61\\-123.7382\\-280.3359\\-61\\-127.9297\\-276.7623\\-61\\-129.8828\\-274.9794\\-61\\-133.7891\\-271.0131\\-61\\-134.3056\\-270.5703\\-61\\-136.1103\\-268.6172\\-61\\-139.2182\\-264.7109\\-61\\-140.9354\\-262.7578\\-61\\-142.483\\-260.8047\\-61\\-143.9244\\-258.8516\\-61\\-145.156\\-256.8984\\-61\\-145.5078\\-256.4997\\-61\\-148.1223\\-252.9922\\-61\\-149.1084\\-251.0391\\-61\\-151.5416\\-247.1328\\-61\\-152.5894\\-245.1797\\-61\\-153.8775\\-243.2266\\-61\\-154.6849\\-241.2734\\-61\\-155.8079\\-239.3203\\-61\\-156.4392\\-237.3672\\-61\\-157.4504\\-235.4141\\-61\\-158.193\\-233.4609\\-61\\-159.9792\\-229.5547\\-61\\-160.6384\\-227.6016\\-61\\-161.5408\\-225.6484\\-61\\-162.0495\\-223.6953\\-61\\-162.4084\\-221.7422\\-61\\-163.6927\\-217.8359\\-61\\-164.3975\\-213.9297\\-61\\-165.5557\\-210.0234\\-61\\-166.459\\-204.1641\\-61\\-167.2054\\-200.2578\\-61\\-167.6018\\-196.3516\\-61\\-167.7332\\-194.3984\\-61\\-167.8932\\-190.4922\\-61\\-167.9919\\-186.5859\\-61\\-167.9862\\-182.6797\\-61\\-167.8671\\-174.8672\\-61\\-167.6647\\-170.9609\\-61\\-167.3242\\-167.0547\\-61\\-167.0444\\-165.1016\\-61\\-166.358\\-161.1953\\-61\\-165.8193\\-157.2891\\-61\\-165.501\\-155.3359\\-61\\-164.3527\\-151.4297\\-61\\-163.6345\\-147.5234\\-61\\-162.8831\\-145.5703\\-61\\-162.3305\\-143.6172\\-61\\-161.9517\\-141.6641\\-61\\-161.3311\\-139.7109\\-61\\-160.4105\\-137.7578\\-61\\-159.7418\\-135.8047\\-61\\-158.6331\\-133.8516\\-61\\-157.8605\\-131.8984\\-61\\-156.7416\\-129.9453\\-61\\-156.0309\\-127.9922\\-61\\-154.9553\\-126.0391\\-61\\-154.0838\\-124.0859\\-61\\-152.8156\\-122.1328\\-61\\-151.7932\\-120.1797\\-61\\-150.4498\\-118.2266\\-61\\-149.4141\\-116.2845\\-61\\-148.2671\\-114.3203\\-61\\-145.7452\\-110.4141\\-61\\-144.3374\\-108.4609\\-61\\-142.6974\\-106.5078\\-61\\-139.6484\\-103.0975\\-61\\-135.125\\-98.69531\\-61\\-131.8359\\-95.918\\-61\\-129.8828\\-94.48917\\-61\\-127.318\\-92.83594\\-61\\-125.9766\\-92.14236\\-61\\-123.894\\-90.88281\\-61\\-120.1172\\-88.87225\\-61\\-116.2109\\-87.20869\\-61\\-112.3047\\-85.34121\\-61\\-110.3516\\-84.57719\\-61\\-108.3984\\-84.08907\\-61\\-106.4453\\-83.4103\\-61\\-104.4922\\-82.55984\\-61\\-102.5391\\-82.15929\\-61\\-100.5859\\-81.89717\\-61\\-96.67969\\-80.667\\-61\\-88.86719\\-79.64537\\-61\\-86.91406\\-79.49201\\-61\\-84.96094\\-79.04199\\-61\\-83.00781\\-78.75716\\-61\\-81.05469\\-78.62666\\-61\\-77.14844\\-78.26587\\-61\\-75.19531\\-78.13774\\-61\\-67.38281\\-78.12283\\-61\\-65.42969\\-78.31771\\-61\\-61.52344\\-78.44966\\-61\\-59.57031\\-78.65747\\-61\\-57.61719\\-78.7336\\-61\\-53.71094\\-79.11188\\-61\\-49.80469\\-79.69495\\-61\\-41.99219\\-80.42675\\-61\\-40.03906\\-80.67017\\-61\\-38.08594\\-81.07616\\-61\\-36.13281\\-81.58052\\-61\\-32.22656\\-82.41276\\-61\\-26.36719\\-84.52213\\-61\\-22.46094\\-86.3195\\-61\\-18.55469\\-88.40442\\-61\\-15.55525\\-90.88281\\-61\\-9.40625\\-96.74219\\-61\\-7.564603\\-98.69531\\-61\\-4.024833\\-102.6016\\-61\\-2.929688\\-103.6889\\-61\\-0.9765625\\-104.6506\\-61\\0.9765625\\-103.7103\\-61\\4.882813\\-99.80157\\-61\\8.789063\\-95.63985\\-61\\12.69531\\-91.90891\\-61\\14.64844\\-89.97858\\-61\\16.60156\\-88.34375\\-61\\18.55469\\-87.17019\\-61\\22.46094\\-84.50764\\-61\\24.41406\\-83.51157\\-61\\26.36719\\-82.3718\\-61\\28.32031\\-81.63754\\-61\\30.27344\\-80.667\\-61\\32.22656\\-80.06403\\-61\\36.13281\\-78.70708\\-61\\38.08594\\-78.21727\\-61\\43.94531\\-76.911\\-61\\45.89844\\-76.57583\\-61\\47.85156\\-76.37294\\-61\\53.71094\\-76.04777\\-61\\57.61719\\-75.91524\\-61\\61.52344\\-75.92764\\-61\\69.33594\\-76.18645\\-61\\77.14844\\-76.67057\\-61\\79.10156\\-76.95284\\-61\\81.05469\\-77.43031\\-61\\83.00781\\-77.74866\\-61\\86.91406\\-78.15018\\-61\\90.82031\\-79.09748\\-61\\94.72656\\-79.79041\\-61\\98.63281\\-80.75365\\-61\\100.5859\\-81.46904\\-61\\104.4922\\-82.40877\\-61\\106.4453\\-83.24982\\-61\\110.3516\\-84.62363\\-61\\112.3047\\-85.72534\\-61\\114.2578\\-86.49786\\-61\\116.2109\\-87.48577\\-61\\118.1641\\-88.20218\\-61\\120.1172\\-89.43134\\-61\\122.0703\\-90.37721\\-61\\124.0234\\-91.87151\\-61\\127.9297\\-94.28296\\-61\\135.5202\\-100.6484\\-61\\137.6953\\-102.7536\\-61\\139.6484\\-104.7781\\-61\\141.6016\\-106.9961\\-61\\143.5547\\-109.3815\\-61\\145.5078\\-112.0787\\-61\\145.792\\-112.3672\\-61\\148.3704\\-116.2734\\-61\\150.4578\\-120.1797\\-61\\151.7033\\-122.1328\\-61\\152.6402\\-124.0859\\-61\\153.8399\\-126.0391\\-61\\154.5741\\-127.9922\\-61\\155.6343\\-129.9453\\-61\\156.8071\\-133.8516\\-61\\157.7807\\-135.8047\\-61\\158.3065\\-137.7578\\-61\\159.8252\\-141.6641\\-61\\160.8329\\-145.5703\\-61\\161.5111\\-147.5234\\-61\\161.8937\\-149.4766\\-61\\162.6174\\-155.3359\\-61\\163.4513\\-159.2422\\-61\\163.75\\-161.1953\\-61\\164.7454\\-174.8672\\-61\\165.1611\\-178.7734\\-61\\165.343\\-182.6797\\-61\\165.4358\\-186.5859\\-61\\165.455\\-192.4453\\-61\\165.3959\\-198.3047\\-61\\165.2865\\-204.1641\\-61\\165.0618\\-208.0703\\-61\\164.7571\\-211.9766\\-61\\163.9075\\-221.7422\\-61\\163.6684\\-223.6953\\-61\\163.2276\\-225.6484\\-61\\162.6306\\-227.6016\\-61\\161.9724\\-231.5078\\-61\\161.4538\\-233.4609\\-61\\160.6018\\-235.4141\\-61\\159.9917\\-237.3672\\-61\\158.1877\\-241.2734\\-61\\157.362\\-243.2266\\-61\\156.3404\\-245.1797\\-61\\155.5598\\-247.1328\\-61\\153.3203\\-250.9435\\-61\\152.0569\\-252.9922\\-61\\150.6174\\-254.9453\\-61\\148.1612\\-258.8516\\-61\\146.5414\\-260.8047\\-61\\142.9976\\-264.7109\\-61\\141.3687\\-266.6641\\-61\\139.6484\\-268.4112\\-61\\137.3465\\-270.5703\\-61\\135.4731\\-272.5234\\-61\\133.7891\\-274.096\\-61\\129.8828\\-277.3389\\-61\\128.7273\\-278.3828\\-61\\125.9766\\-280.6402\\-61\\124.0234\\-281.9117\\-61\\120.8577\\-284.2422\\-61\\118.0176\\-286.1953\\-61\\114.2578\\-288.7036\\-61\\112.3047\\-289.513\\-61\\110.3516\\-290.7966\\-61\\108.3984\\-291.7136\\-61\\106.4453\\-292.891\\-61\\102.5391\\-294.7341\\-61\\100.5859\\-295.2513\\-61\\98.63281\\-296.0763\\-61\\96.67969\\-296.7433\\-61\\94.72656\\-297.1872\\-61\\90.82031\\-298.4967\\-61\\84.96094\\-299.4881\\-61\\83.00781\\-299.9048\\-61\\81.05469\\-300.197\\-61\\79.10156\\-300.3853\\-61\\75.19531\\-300.497\\-61\\69.33594\\-300.4227\\-61\\67.38281\\-300.325\\-61\\65.42969\\-300.0804\\-61\\57.61719\\-298.4697\\-61\\55.66406\\-297.6699\\-61\\51.75781\\-296.4619\\-61\\49.80469\\-295.4133\\-61\\47.85156\\-294.7557\\-61\\45.89844\\-293.6348\\-61\\43.94531\\-292.6188\\-61\\41.99219\\-291.1872\\-61\\40.03906\\-289.875\\-61\\38.08594\\-288.7705\\-61\\34.45242\\-286.1953\\-61\\30.27344\\-283.0869\\-61\\28.32031\\-281.56\\-61\\26.6183\\-280.3359\\-61\\24.33559\\-278.3828\\-61\\22.46094\\-276.9737\\-61\\20.50781\\-275.7175\\-61\\18.55469\\-275.04\\-61\\16.60156\\-274.4854\\-61\\10.74219\\-274.2526\\-61\\8.789063\\-274.2526\\-61\\4.882813\\-274.3733\\-61\\0.9765625\\-274.5952\\-61\\-4.882813\\-274.8417\\-61\\-8.789063\\-275.0403\\-61\\-12.69531\\-275.0938\\-61\\-16.60156\\-275.3705\\-61\\-18.55469\\-275.7028\\-61\\-20.50781\\-276.7576\\-61\\-22.46094\\-277.9383\\-61\\-26.36719\\-280.9892\\-61\\-28.32031\\-282.2975\\-61\\-30.27344\\-283.4749\\-61\\-34.17969\\-286.5766\\-61\\-36.13281\\-287.748\\-61\\-40.03906\\-290.4733\\-61\\-41.99219\\-291.6315\\-61\\-43.94531\\-293.0146\\-61\\-45.89844\\-294.224\\-61\\-49.80469\\-295.8586\\-61\\-51.75781\\-296.7766\\-61\\-53.71094\\-297.183\\-61\\-55.66406\\-297.0258\\-61\\-57.61719\\-298.763\\-61\\-63.47656\\-300.2077\\-61\\-67.38281\\-300.6024\\-61\\-71.28906\\-300.7656\\-61\\-73.24219\\-300.7879\\-61\\-77.14844\\-300.7161\\-61\\-81.05469\\-300.4818\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "304"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "96"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-83.00781\\-300.0789\\-59\\-86.91406\\-299.1852\\-59\\-90.82031\\-298.3877\\-59\\-92.77344\\-297.584\\-59\\-96.67969\\-296.4987\\-59\\-98.63281\\-295.5307\\-59\\-100.5859\\-294.9252\\-59\\-102.5391\\-294.107\\-59\\-104.4922\\-293.0092\\-59\\-106.4453\\-291.7516\\-59\\-108.3984\\-290.7471\\-59\\-110.3516\\-289.4396\\-59\\-112.3047\\-288.5146\\-59\\-114.2578\\-287.2013\\-59\\-118.2838\\-284.2422\\-59\\-120.1172\\-283.0276\\-59\\-123.4551\\-280.3359\\-59\\-125.9766\\-278.107\\-59\\-127.9297\\-276.5758\\-59\\-129.8828\\-274.8125\\-59\\-135.9724\\-268.6172\\-59\\-137.4688\\-266.6641\\-59\\-139.082\\-264.7109\\-59\\-140.8266\\-262.7578\\-59\\-142.397\\-260.8047\\-59\\-143.7988\\-258.8516\\-59\\-145.0263\\-256.8984\\-59\\-146.5869\\-254.9453\\-59\\-148.038\\-252.9922\\-59\\-149.0107\\-251.0391\\-59\\-150.252\\-249.0859\\-59\\-152.4728\\-245.1797\\-59\\-153.7463\\-243.2266\\-59\\-154.5671\\-241.2734\\-59\\-155.6821\\-239.3203\\-59\\-156.3393\\-237.3672\\-59\\-158.0571\\-233.4609\\-59\\-158.8477\\-231.5078\\-59\\-159.8435\\-229.5547\\-59\\-160.4572\\-227.6016\\-59\\-161.315\\-225.6484\\-59\\-161.908\\-223.6953\\-59\\-162.7441\\-219.7891\\-59\\-163.5164\\-217.8359\\-59\\-163.9223\\-215.8828\\-59\\-164.227\\-213.9297\\-59\\-164.6575\\-211.9766\\-59\\-165.2982\\-210.0234\\-59\\-165.6988\\-208.0703\\-59\\-166.5381\\-202.2109\\-59\\-167.1805\\-198.3047\\-59\\-167.4143\\-196.3516\\-59\\-167.6914\\-192.4453\\-59\\-167.8545\\-186.5859\\-59\\-167.8532\\-180.7266\\-59\\-167.7587\\-174.8672\\-59\\-167.5408\\-170.9609\\-59\\-167.1408\\-167.0547\\-59\\-166.4949\\-163.1484\\-59\\-165.7092\\-157.2891\\-59\\-165.3209\\-155.3359\\-59\\-164.6655\\-153.3828\\-59\\-164.227\\-151.4297\\-59\\-163.4753\\-147.5234\\-59\\-162.6802\\-145.5703\\-59\\-161.8312\\-141.6641\\-59\\-160.2435\\-137.7578\\-59\\-159.5262\\-135.8047\\-59\\-158.4152\\-133.8516\\-59\\-157.6585\\-131.8984\\-59\\-156.5369\\-129.9453\\-59\\-155.8961\\-127.9922\\-59\\-154.7513\\-126.0391\\-59\\-153.9208\\-124.0859\\-59\\-152.6228\\-122.1328\\-59\\-151.5957\\-120.1797\\-59\\-150.3667\\-118.2266\\-59\\-149.4141\\-116.4211\\-59\\-148.1966\\-114.3203\\-59\\-145.5744\\-110.4141\\-59\\-143.5547\\-107.59\\-59\\-141.0251\\-104.5547\\-59\\-139.6484\\-102.9937\\-59\\-135.309\\-98.69531\\-59\\-131.8359\\-95.66866\\-59\\-129.8828\\-94.17699\\-59\\-127.7917\\-92.83594\\-59\\-125.9766\\-91.82386\\-59\\-124.0234\\-90.58841\\-59\\-122.0703\\-89.67162\\-59\\-120.1172\\-88.4131\\-59\\-118.1641\\-87.77204\\-59\\-116.2109\\-86.80379\\-59\\-114.2578\\-85.95443\\-59\\-112.3047\\-85.00072\\-59\\-108.3984\\-83.82493\\-59\\-106.4453\\-82.91823\\-59\\-104.4922\\-82.17686\\-59\\-100.5859\\-81.60893\\-59\\-98.63281\\-80.90957\\-59\\-96.67969\\-80.45988\\-59\\-90.82031\\-79.52657\\-59\\-86.91406\\-79.06932\\-59\\-83.00781\\-78.37671\\-59\\-81.05469\\-78.30587\\-59\\-77.14844\\-77.96167\\-59\\-75.19531\\-77.8556\\-59\\-67.38281\\-77.7889\\-59\\-61.52344\\-77.90647\\-59\\-59.57031\\-78.10778\\-59\\-57.61719\\-78.16657\\-59\\-55.66406\\-78.45877\\-59\\-53.71094\\-78.61047\\-59\\-47.85156\\-79.48959\\-59\\-43.94531\\-79.91952\\-59\\-38.08594\\-80.51083\\-59\\-36.13281\\-80.88068\\-59\\-34.17969\\-81.50344\\-59\\-30.27344\\-82.44347\\-59\\-24.41406\\-84.67918\\-59\\-22.46094\\-85.81846\\-59\\-20.50781\\-86.61946\\-59\\-18.55469\\-87.84997\\-59\\-16.60156\\-89.23683\\-59\\-12.69531\\-92.79491\\-59\\-10.74219\\-94.48795\\-59\\-8.393787\\-96.74219\\-59\\-6.835938\\-98.46402\\-59\\-2.929688\\-102.628\\-59\\-0.9765625\\-103.6313\\-59\\0.9765625\\-102.812\\-59\\3.288595\\-100.6484\\-59\\5.229856\\-98.69531\\-59\\8.789063\\-94.79819\\-59\\10.74219\\-92.9987\\-59\\15.04836\\-88.92969\\-59\\18.55469\\-86.42154\\-59\\22.46094\\-83.89304\\-59\\24.41406\\-82.7374\\-59\\26.36719\\-81.91315\\-59\\28.32031\\-80.95181\\-59\\32.22656\\-79.63478\\-59\\34.17969\\-78.78017\\-59\\36.13281\\-78.22389\\-59\\41.99219\\-76.84052\\-59\\45.89844\\-76.2599\\-59\\47.85156\\-76.12096\\-59\\53.71094\\-75.8112\\-59\\55.66406\\-75.60709\\-59\\61.52344\\-75.62751\\-59\\63.47656\\-75.77822\\-59\\67.38281\\-75.89443\\-59\\71.28906\\-76.09058\\-59\\79.10156\\-76.5368\\-59\\83.00781\\-77.37609\\-59\\84.96094\\-77.69614\\-59\\86.91406\\-77.88794\\-59\\88.86719\\-78.27367\\-59\\96.67969\\-79.92287\\-59\\100.5859\\-80.98331\\-59\\102.5391\\-81.72754\\-59\\104.4922\\-82.15925\\-59\\106.4453\\-82.77037\\-59\\108.3984\\-83.66608\\-59\\110.3516\\-84.32674\\-59\\112.3047\\-85.44774\\-59\\114.2578\\-86.23279\\-59\\116.2109\\-87.17188\\-59\\118.1641\\-87.99093\\-59\\122.0703\\-90.10786\\-59\\124.0234\\-91.5405\\-59\\127.9297\\-94.06984\\-59\\129.8828\\-95.52676\\-59\\135.7422\\-100.5574\\-59\\137.6953\\-102.4144\\-59\\139.7638\\-104.5547\\-59\\141.6016\\-106.7403\\-59\\143.5547\\-109.2115\\-59\\145.5078\\-111.9751\\-59\\145.8775\\-112.3672\\-59\\148.3647\\-116.2734\\-59\\150.4333\\-120.1797\\-59\\151.6377\\-122.1328\\-59\\152.5558\\-124.0859\\-59\\153.7332\\-126.0391\\-59\\154.4717\\-127.9922\\-59\\155.4195\\-129.9453\\-59\\156.1355\\-131.8984\\-59\\156.6291\\-133.8516\\-59\\157.5936\\-135.8047\\-59\\158.7722\\-139.7109\\-59\\159.6467\\-141.6641\\-59\\160.6041\\-145.5703\\-59\\161.2312\\-147.5234\\-59\\161.7323\\-149.4766\\-59\\162.0211\\-151.4297\\-59\\162.4493\\-155.3359\\-59\\162.7557\\-157.2891\\-59\\163.5649\\-161.1953\\-59\\163.9135\\-165.1016\\-59\\165.0467\\-182.6797\\-59\\165.2135\\-188.5391\\-59\\165.1338\\-196.3516\\-59\\165.0154\\-202.2109\\-59\\164.736\\-208.0703\\-59\\164.0929\\-217.8359\\-59\\163.75\\-221.7422\\-59\\163.4294\\-223.6953\\-59\\162.8583\\-225.6484\\-59\\162.4288\\-227.6016\\-59\\161.8103\\-231.5078\\-59\\160.3795\\-235.4141\\-59\\159.7872\\-237.3672\\-59\\158.7352\\-239.3203\\-59\\157.9964\\-241.2734\\-59\\156.9528\\-243.2266\\-59\\156.1707\\-245.1797\\-59\\154.1877\\-249.0859\\-59\\152.8841\\-251.0391\\-59\\151.7979\\-252.9922\\-59\\149.0734\\-256.8984\\-59\\147.8696\\-258.8516\\-59\\146.2751\\-260.8047\\-59\\141.0156\\-266.6641\\-59\\133.7891\\-273.7705\\-59\\131.8359\\-275.4664\\-59\\127.9297\\-278.7128\\-59\\125.8343\\-280.3359\\-59\\120.1172\\-284.4292\\-59\\118.1641\\-285.6749\\-59\\116.2109\\-287.0991\\-59\\114.2578\\-288.368\\-59\\112.3047\\-289.2847\\-59\\110.3516\\-290.5063\\-59\\108.3984\\-291.3711\\-59\\106.4453\\-292.6185\\-59\\104.4922\\-293.4352\\-59\\102.5391\\-294.4863\\-59\\98.63281\\-295.6378\\-59\\96.67969\\-296.511\\-59\\92.77344\\-297.4351\\-59\\90.82031\\-298.1378\\-59\\88.86719\\-298.6086\\-59\\84.96094\\-299.1814\\-59\\81.05469\\-299.8595\\-59\\79.10156\\-300.1164\\-59\\77.14844\\-300.2515\\-59\\73.24219\\-300.3342\\-59\\69.33594\\-300.2515\\-59\\67.38281\\-300.1046\\-59\\59.57031\\-298.7461\\-59\\57.61719\\-298.2606\\-59\\55.66406\\-297.4166\\-59\\53.71094\\-296.9004\\-59\\51.75781\\-296.2865\\-59\\49.80469\\-295.2824\\-59\\47.85156\\-294.6734\\-59\\45.89844\\-293.5131\\-59\\43.94531\\-292.5492\\-59\\41.99219\\-291.1577\\-59\\40.03906\\-289.8906\\-59\\38.08594\\-288.819\\-59\\36.13281\\-287.4536\\-59\\34.18936\\-286.1953\\-59\\32.22656\\-284.7956\\-59\\30.27344\\-283.3025\\-59\\28.32031\\-281.9484\\-59\\26.36719\\-280.7012\\-59\\24.41406\\-279.0937\\-59\\22.46094\\-277.5898\\-59\\18.55469\\-276.0242\\-59\\16.60156\\-275.5661\\-59\\14.64844\\-275.6913\\-59\\8.789063\\-275.7202\\-59\\4.882813\\-275.809\\-59\\2.929688\\-275.9716\\-59\\-0.9765625\\-276.165\\-59\\-2.929688\\-276.3435\\-59\\-10.74219\\-276.6826\\-59\\-16.60156\\-276.7439\\-59\\-18.55469\\-276.9714\\-59\\-20.50781\\-277.5275\\-59\\-24.41406\\-280.0005\\-59\\-28.32031\\-282.7207\\-59\\-30.27344\\-283.7748\\-59\\-34.17969\\-286.7686\\-59\\-36.13281\\-287.9043\\-59\\-40.03906\\-290.4314\\-59\\-41.99219\\-291.5293\\-59\\-43.94531\\-292.9147\\-59\\-45.89844\\-294.0634\\-59\\-47.85156\\-294.9844\\-59\\-49.80469\\-295.6643\\-59\\-51.75781\\-296.6675\\-59\\-53.71094\\-297.0925\\-59\\-55.66406\\-297.1888\\-59\\-57.61719\\-298.6426\\-59\\-61.52344\\-299.5138\\-59\\-63.47656\\-300.0288\\-59\\-67.38281\\-300.4818\\-59\\-71.28906\\-300.6606\\-59\\-73.24219\\-300.6893\\-59\\-77.14844\\-300.6024\\-59\\-81.05469\\-300.3614\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "300"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "97"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-83.00781\\-299.8748\\-57\\-84.96094\\-299.4123\\-57\\-88.86719\\-298.6742\\-57\\-90.82031\\-298.1846\\-57\\-92.77344\\-297.3776\\-57\\-96.67969\\-296.2979\\-57\\-98.63281\\-295.3506\\-57\\-100.5859\\-294.7927\\-57\\-104.4922\\-292.8257\\-57\\-106.4453\\-291.4855\\-57\\-108.3984\\-290.5443\\-57\\-110.3516\\-289.2636\\-57\\-112.3047\\-288.2358\\-57\\-114.2578\\-287.0248\\-57\\-118.1641\\-284.0484\\-57\\-120.1172\\-282.8593\\-57\\-122.0703\\-281.3189\\-57\\-124.0234\\-279.6478\\-57\\-125.9766\\-277.867\\-57\\-127.8153\\-276.4297\\-57\\-129.8828\\-274.6039\\-57\\-133.9143\\-270.5703\\-57\\-135.7847\\-268.6172\\-57\\-137.3062\\-266.6641\\-57\\-138.958\\-264.7109\\-57\\-140.7245\\-262.7578\\-57\\-142.3208\\-260.8047\\-57\\-144.9245\\-256.8984\\-57\\-146.4844\\-254.9453\\-57\\-147.9394\\-252.9922\\-57\\-148.912\\-251.0391\\-57\\-150.1601\\-249.0859\\-57\\-151.3672\\-246.8631\\-57\\-153.5924\\-243.2266\\-57\\-154.4577\\-241.2734\\-57\\-155.5176\\-239.3203\\-57\\-156.9322\\-235.4141\\-57\\-157.927\\-233.4609\\-57\\-158.6242\\-231.5078\\-57\\-159.6767\\-229.5547\\-57\\-160.2843\\-227.6016\\-57\\-161.7651\\-223.6953\\-57\\-162.5398\\-219.7891\\-57\\-163.2413\\-217.8359\\-57\\-163.7723\\-215.8828\\-57\\-164.4202\\-211.9766\\-57\\-165.501\\-208.0703\\-57\\-165.7992\\-206.1172\\-57\\-166.5381\\-200.2578\\-57\\-167.1805\\-196.3516\\-57\\-167.5254\\-192.4453\\-57\\-167.6607\\-188.5391\\-57\\-167.7376\\-180.7266\\-57\\-167.6179\\-174.8672\\-57\\-167.3815\\-170.9609\\-57\\-167.2054\\-169.0078\\-57\\-166.3246\\-163.1484\\-57\\-165.5473\\-157.2891\\-57\\-164.4684\\-153.3828\\-57\\-163.7684\\-149.4766\\-57\\-163.2276\\-147.5234\\-57\\-162.5103\\-145.5703\\-57\\-161.6602\\-141.6641\\-57\\-160.7516\\-139.7109\\-57\\-160.0709\\-137.7578\\-57\\-159.2024\\-135.8047\\-57\\-158.219\\-133.8516\\-57\\-157.3763\\-131.8984\\-57\\-156.3735\\-129.9453\\-57\\-155.7129\\-127.9922\\-57\\-154.5522\\-126.0391\\-57\\-153.7148\\-124.0859\\-57\\-152.4478\\-122.1328\\-57\\-148.1142\\-114.3203\\-57\\-145.3617\\-110.4141\\-57\\-143.5547\\-107.6994\\-57\\-141.0369\\-104.5547\\-57\\-139.6484\\-102.9348\\-57\\-137.6953\\-100.9148\\-57\\-133.3766\\-96.74219\\-57\\-129.8828\\-93.92941\\-57\\-127.9297\\-92.61214\\-57\\-124.0234\\-90.29429\\-57\\-122.0703\\-89.33015\\-57\\-120.1172\\-88.20703\\-57\\-118.1641\\-87.55704\\-57\\-116.2109\\-86.48828\\-57\\-112.3047\\-84.73383\\-57\\-108.3984\\-83.5825\\-57\\-106.4453\\-82.46184\\-57\\-104.4922\\-81.98888\\-57\\-102.5391\\-81.77474\\-57\\-100.5068\\-81.11719\\-57\\-98.63281\\-80.63569\\-57\\-94.72656\\-79.78934\\-57\\-92.77344\\-79.54137\\-57\\-88.86719\\-78.89353\\-57\\-86.91406\\-78.71472\\-57\\-83.00781\\-78.02897\\-57\\-79.10156\\-77.90498\\-57\\-75.19531\\-77.52938\\-57\\-73.24219\\-77.46412\\-57\\-65.42969\\-77.42548\\-57\\-63.47656\\-77.50534\\-57\\-57.61719\\-77.6241\\-57\\-55.66406\\-78.0036\\-57\\-53.71094\\-78.18132\\-57\\-47.85156\\-78.94027\\-57\\-43.94531\\-79.51591\\-57\\-38.08594\\-80.17702\\-57\\-34.17969\\-80.82866\\-57\\-32.22656\\-81.45264\\-57\\-28.32031\\-82.48839\\-57\\-24.41406\\-84.10908\\-57\\-20.50781\\-86.09055\\-57\\-16.60156\\-88.44514\\-57\\-14.64844\\-90.18224\\-57\\-12.69531\\-92.06425\\-57\\-8.789063\\-95.64173\\-57\\-2.929688\\-101.75\\-57\\-0.9765625\\-102.6605\\-57\\0.9765625\\-101.9092\\-57\\2.929688\\-100.1532\\-57\\4.387556\\-98.69531\\-57\\8.071437\\-94.78906\\-57\\12.12351\\-90.88281\\-57\\12.69531\\-90.24374\\-57\\14.64844\\-88.49818\\-57\\18.55469\\-85.84183\\-57\\20.50781\\-84.40199\\-57\\24.41406\\-82.21745\\-57\\26.36719\\-81.41708\\-57\\28.32031\\-80.4894\\-57\\30.27344\\-79.83082\\-57\\32.22656\\-79.04199\\-57\\34.17969\\-78.35652\\-57\\36.13281\\-77.79425\\-57\\40.03906\\-76.77767\\-57\\43.94531\\-76.2095\\-57\\49.80469\\-75.74946\\-57\\51.75781\\-75.4375\\-57\\53.71094\\-75.36102\\-57\\55.66406\\-75.05091\\-57\\61.52344\\-75.03809\\-57\\63.47656\\-75.31384\\-57\\65.42969\\-75.40508\\-57\\67.38281\\-75.66864\\-57\\75.19531\\-76.12784\\-57\\79.10156\\-76.26452\\-57\\81.05469\\-76.52419\\-57\\84.96094\\-77.36173\\-57\\88.86719\\-77.94035\\-57\\92.77344\\-78.76714\\-57\\96.67969\\-79.64883\\-57\\100.5859\\-80.64925\\-57\\102.5391\\-81.41824\\-57\\106.4453\\-82.46696\\-57\\108.3984\\-83.36813\\-57\\110.3516\\-84.11462\\-57\\114.2578\\-86\\-57\\116.2109\\-86.80511\\-57\\118.1641\\-87.80536\\-57\\120.1172\\-88.6474\\-57\\123.5968\\-90.88281\\-57\\127.9297\\-93.85182\\-57\\129.3694\\-94.78906\\-57\\131.8078\\-96.74219\\-57\\137.6953\\-102.1492\\-57\\140.0404\\-104.5547\\-57\\141.6605\\-106.5078\\-57\\143.0058\\-108.4609\\-57\\143.5547\\-109.0876\\-57\\145.5078\\-111.9305\\-57\\145.8861\\-112.3672\\-57\\148.3471\\-116.2734\\-57\\149.2959\\-118.2266\\-57\\151.5026\\-122.1328\\-57\\152.436\\-124.0859\\-57\\153.5413\\-126.0391\\-57\\155.1132\\-129.9453\\-57\\156.0012\\-131.8984\\-57\\156.4636\\-133.8516\\-57\\157.2932\\-135.8047\\-57\\158.0089\\-137.7578\\-57\\158.554\\-139.7109\\-57\\159.405\\-141.6641\\-57\\160.0018\\-143.6172\\-57\\160.4004\\-145.5703\\-57\\160.9026\\-147.5234\\-57\\161.5248\\-149.4766\\-57\\161.8697\\-151.4297\\-57\\162.5216\\-157.2891\\-57\\162.8454\\-159.2422\\-57\\163.2813\\-161.1953\\-57\\163.7756\\-165.1016\\-57\\164.1443\\-170.9609\\-57\\164.4623\\-176.8203\\-57\\164.8494\\-186.5859\\-57\\164.8072\\-196.3516\\-57\\164.6979\\-202.2109\\-57\\164.492\\-208.0703\\-57\\164.191\\-213.9297\\-57\\163.9398\\-217.8359\\-57\\163.5264\\-221.7422\\-57\\162.5846\\-225.6484\\-57\\162.0135\\-229.5547\\-57\\161.5851\\-231.5078\\-57\\160.8028\\-233.4609\\-57\\159.5225\\-237.3672\\-57\\158.4569\\-239.3203\\-57\\157.779\\-241.2734\\-57\\156.6564\\-243.2266\\-57\\155.9773\\-245.1797\\-57\\154.8569\\-247.1328\\-57\\153.9651\\-249.0859\\-57\\152.6042\\-251.0391\\-57\\151.4486\\-252.9922\\-57\\149.4141\\-256.0969\\-57\\147.485\\-258.8516\\-57\\145.957\\-260.8047\\-57\\142.5442\\-264.7109\\-57\\140.7271\\-266.6641\\-57\\136.7834\\-270.5703\\-57\\133.7891\\-273.4617\\-57\\131.8359\\-275.18\\-57\\124.0234\\-281.3384\\-57\\122.0703\\-282.8012\\-57\\120.1172\\-283.9167\\-57\\118.1641\\-285.3123\\-57\\116.2109\\-286.8104\\-57\\112.3047\\-289.057\\-57\\108.3984\\-291.0995\\-57\\106.4453\\-292.2316\\-57\\102.5391\\-294.107\\-57\\100.5859\\-294.8646\\-57\\98.63281\\-295.3377\\-57\\96.67969\\-296.1324\\-57\\94.72656\\-296.7455\\-57\\90.82031\\-297.6162\\-57\\88.86719\\-298.281\\-57\\86.91406\\-298.653\\-57\\81.05469\\-299.4531\\-57\\77.14844\\-299.9338\\-57\\73.24219\\-300.0926\\-57\\69.33594\\-299.9893\\-57\\67.38281\\-299.7717\\-57\\59.57031\\-298.5669\\-57\\57.61719\\-297.9516\\-57\\55.66406\\-297.2165\\-57\\53.71094\\-296.7802\\-57\\51.75781\\-296.0462\\-57\\49.80469\\-295.1784\\-57\\47.85156\\-294.5722\\-57\\45.89844\\-293.412\\-57\\43.94531\\-292.4751\\-57\\43.41634\\-292.0547\\-57\\40.03906\\-289.9063\\-57\\38.08594\\-288.8824\\-57\\36.13281\\-287.569\\-57\\34.17969\\-286.4516\\-57\\30.27344\\-283.551\\-57\\28.32031\\-282.4828\\-57\\26.36719\\-281.1158\\-57\\24.41406\\-279.651\\-57\\22.46094\\-278.6157\\-57\\20.50781\\-277.7641\\-57\\18.55469\\-277.3447\\-57\\16.60156\\-277.1345\\-57\\10.74219\\-277.2157\\-57\\4.882813\\-277.3417\\-57\\-0.9765625\\-277.5809\\-57\\-2.929688\\-277.8038\\-57\\-6.835938\\-277.9976\\-57\\-12.69531\\-278.1341\\-57\\-16.60156\\-278.1206\\-57\\-18.55469\\-278.2291\\-57\\-20.50781\\-278.6861\\-57\\-22.46094\\-279.4499\\-57\\-24.41406\\-280.7222\\-57\\-26.36719\\-281.761\\-57\\-27.10978\\-282.2891\\-57\\-30.27344\\-284.2008\\-57\\-32.22656\\-285.4676\\-57\\-34.17969\\-286.9414\\-57\\-36.16688\\-288.1484\\-57\\-38.08594\\-289.2064\\-57\\-40.03906\\-290.4526\\-57\\-41.99219\\-291.4652\\-57\\-43.94531\\-292.8304\\-57\\-46.05914\\-294.0078\\-57\\-47.85156\\-294.8928\\-57\\-49.80469\\-295.4893\\-57\\-51.75781\\-296.5408\\-57\\-55.66406\\-297.5274\\-57\\-57.61719\\-298.5044\\-57\\-65.42969\\-300.1396\\-57\\-69.33594\\-300.4739\\-57\\-73.24219\\-300.583\\-57\\-77.14844\\-300.4974\\-57\\-81.05469\\-300.216\\-57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "313"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "98"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-300.0158\\-55\\-84.96094\\-299.2216\\-55\\-88.86719\\-298.5422\\-55\\-92.77344\\-297.1983\\-55\\-94.72656\\-296.7433\\-55\\-98.63281\\-295.2007\\-55\\-100.5859\\-294.6321\\-55\\-102.5391\\-293.5195\\-55\\-104.4922\\-292.6188\\-55\\-106.4453\\-291.2636\\-55\\-108.3984\\-290.2772\\-55\\-114.2578\\-286.8283\\-55\\-117.6717\\-284.2422\\-55\\-118.1641\\-283.8105\\-55\\-120.1172\\-282.6526\\-55\\-122.0703\\-281.1497\\-55\\-125.9766\\-277.6732\\-55\\-127.5573\\-276.4297\\-55\\-129.8828\\-274.369\\-55\\-135.7422\\-268.45\\-55\\-137.1582\\-266.6641\\-55\\-138.8296\\-264.7109\\-55\\-140.6188\\-262.7578\\-55\\-142.237\\-260.8047\\-55\\-143.4498\\-258.8516\\-55\\-144.813\\-256.8984\\-55\\-146.3831\\-254.9453\\-55\\-147.8092\\-252.9922\\-55\\-148.8054\\-251.0391\\-55\\-150.0672\\-249.0859\\-55\\-150.9975\\-247.1328\\-55\\-151.3672\\-246.6536\\-55\\-153.3884\\-243.2266\\-55\\-155.2816\\-239.3203\\-55\\-156.1302\\-237.3672\\-55\\-156.735\\-235.4141\\-55\\-157.7917\\-233.4609\\-55\\-158.4446\\-231.5078\\-55\\-159.4727\\-229.5547\\-55\\-160.7963\\-225.6484\\-55\\-161.5982\\-223.6953\\-55\\-162.062\\-221.7422\\-55\\-162.3962\\-219.7891\\-55\\-162.8847\\-217.8359\\-55\\-163.5773\\-215.8828\\-55\\-164.2358\\-211.9766\\-55\\-164.6269\\-210.0234\\-55\\-165.2007\\-208.0703\\-55\\-165.6228\\-206.1172\\-55\\-166.3102\\-200.2578\\-55\\-167.1152\\-194.3984\\-55\\-167.3002\\-192.4453\\-55\\-167.4956\\-188.5391\\-55\\-167.5781\\-180.7266\\-55\\-167.4338\\-174.8672\\-55\\-167.1678\\-170.9609\\-55\\-166.3847\\-165.1016\\-55\\-165.6778\\-159.2422\\-55\\-165.3209\\-157.2891\\-55\\-164.7247\\-155.3359\\-55\\-164.3094\\-153.3828\\-55\\-163.6047\\-149.4766\\-55\\-162.8981\\-147.5234\\-55\\-162.3551\\-145.5703\\-55\\-161.9828\\-143.6172\\-55\\-161.4349\\-141.6641\\-55\\-160.5119\\-139.7109\\-55\\-159.8764\\-137.7578\\-55\\-158.8227\\-135.8047\\-55\\-158.0368\\-133.8516\\-55\\-156.9937\\-131.8984\\-55\\-155.4503\\-127.9922\\-55\\-154.3649\\-126.0391\\-55\\-153.4172\\-124.0859\\-55\\-151.125\\-120.1797\\-55\\-150.1687\\-118.2266\\-55\\-148.8845\\-116.2734\\-55\\-148.0141\\-114.3203\\-55\\-145.1991\\-110.4141\\-55\\-143.9909\\-108.4609\\-55\\-142.5849\\-106.5078\\-55\\-139.6484\\-102.9348\\-55\\-137.6953\\-100.8372\\-55\\-133.5867\\-96.74219\\-55\\-129.8828\\-93.76296\\-55\\-128.6286\\-92.83594\\-55\\-125.5047\\-90.88281\\-55\\-121.9779\\-88.92969\\-55\\-118.1641\\-87.19447\\-55\\-116.2109\\-86.15944\\-55\\-113.7022\\-85.02344\\-55\\-112.3047\\-84.51685\\-55\\-108.3984\\-83.31631\\-55\\-106.4453\\-82.17929\\-55\\-102.5391\\-81.47697\\-55\\-100.5859\\-80.79906\\-55\\-94.72656\\-79.58576\\-55\\-92.77344\\-79.28413\\-55\\-90.82031\\-78.88223\\-55\\-84.96094\\-78.13391\\-55\\-83.00781\\-77.80453\\-55\\-79.10156\\-77.62177\\-55\\-75.19531\\-77.11476\\-55\\-73.24219\\-77.03403\\-55\\-69.33594\\-77.03403\\-55\\-65.42969\\-76.98399\\-55\\-59.57031\\-77.3559\\-55\\-57.61719\\-77.43686\\-55\\-55.66406\\-77.69922\\-55\\-47.85156\\-78.48706\\-55\\-43.94531\\-78.96321\\-55\\-40.03906\\-79.60796\\-55\\-36.13281\\-80.10423\\-55\\-32.22656\\-80.78924\\-55\\-30.27344\\-81.48886\\-55\\-26.36719\\-82.61365\\-55\\-24.41406\\-83.5889\\-55\\-22.46094\\-84.39117\\-55\\-20.50781\\-85.55805\\-55\\-18.55469\\-86.55291\\-55\\-16.60156\\-87.95982\\-55\\-14.64844\\-89.59287\\-55\\-10.74219\\-93.17734\\-55\\-8.836013\\-94.78906\\-55\\-6.835938\\-96.82433\\-55\\-5.110116\\-98.69531\\-55\\-2.929688\\-100.8022\\-55\\-0.9765625\\-101.8352\\-55\\0.9765625\\-101.2773\\-55\\2.929688\\-99.56872\\-55\\5.69894\\-96.74219\\-55\\6.835938\\-95.46875\\-55\\9.4846\\-92.83594\\-55\\11.55379\\-90.88281\\-55\\12.69531\\-89.64964\\-55\\16.60156\\-86.45529\\-55\\22.46094\\-82.63864\\-55\\24.41406\\-81.81474\\-55\\26.36719\\-80.77466\\-55\\30.27344\\-79.34375\\-55\\32.22656\\-78.55602\\-55\\38.08594\\-76.83794\\-55\\40.03906\\-76.41546\\-55\\41.99219\\-76.19055\\-55\\47.85156\\-75.63605\\-55\\49.80469\\-75.13153\\-55\\51.75781\\-74.79603\\-55\\55.66406\\-74.69054\\-55\\61.52344\\-74.67468\\-55\\65.42969\\-74.88397\\-55\\69.33594\\-75.36019\\-55\\71.28906\\-75.68506\\-55\\77.14844\\-76.04978\\-55\\79.10156\\-76.10933\\-55\\81.05469\\-76.27605\\-55\\84.96094\\-76.92897\\-55\\94.72656\\-78.8601\\-55\\96.67969\\-79.32682\\-55\\98.63281\\-79.98093\\-55\\100.5859\\-80.41964\\-55\\102.5391\\-80.99905\\-55\\104.4922\\-81.7487\\-55\\106.4453\\-82.26151\\-55\\108.3984\\-82.97035\\-55\\110.3516\\-83.91629\\-55\\112.3047\\-84.70907\\-55\\114.2578\\-85.78693\\-55\\116.2109\\-86.56087\\-55\\118.1641\\-87.643\\-55\\120.1172\\-88.36468\\-55\\120.8852\\-88.92969\\-55\\123.9149\\-90.88281\\-55\\127.9297\\-93.64528\\-55\\129.806\\-94.78906\\-55\\131.8359\\-96.29829\\-55\\133.7891\\-98.32832\\-55\\134.25\\-98.69531\\-55\\137.6953\\-101.897\\-55\\140.3334\\-104.5547\\-55\\141.9144\\-106.5078\\-55\\143.0956\\-108.4609\\-55\\143.5547\\-108.9959\\-55\\145.5078\\-111.9451\\-55\\145.8586\\-112.3672\\-55\\147.0034\\-114.3203\\-55\\148.2989\\-116.2734\\-55\\149.1255\\-118.2266\\-55\\150.2991\\-120.1797\\-55\\152.2847\\-124.0859\\-55\\154.1263\\-127.9922\\-55\\154.851\\-129.9453\\-55\\155.8211\\-131.8984\\-55\\156.3029\\-133.8516\\-55\\156.92\\-135.8047\\-55\\157.8068\\-137.7578\\-55\\158.3686\\-139.7109\\-55\\159.7872\\-143.6172\\-55\\160.6325\\-147.5234\\-55\\161.2297\\-149.4766\\-55\\161.69\\-151.4297\\-55\\161.9673\\-153.3828\\-55\\162.5846\\-159.2422\\-55\\163.2957\\-163.1484\\-55\\163.5866\\-165.1016\\-55\\164.0024\\-170.9609\\-55\\164.2883\\-176.8203\\-55\\164.603\\-186.5859\\-55\\164.5784\\-196.3516\\-55\\164.521\\-200.2578\\-55\\164.2932\\-208.0703\\-55\\164.0425\\-213.9297\\-55\\163.7684\\-217.8359\\-55\\163.5362\\-219.7891\\-55\\163.1851\\-221.7422\\-55\\162.7215\\-223.6953\\-55\\162.3919\\-225.6484\\-55\\161.8469\\-229.5547\\-55\\161.287\\-231.5078\\-55\\160.535\\-233.4609\\-55\\159.962\\-235.4141\\-55\\158.2391\\-239.3203\\-55\\157.4971\\-241.2734\\-55\\156.4392\\-243.2266\\-55\\155.7685\\-245.1797\\-55\\154.6036\\-247.1328\\-55\\153.6933\\-249.0859\\-55\\151.3672\\-252.5553\\-55\\151.0036\\-252.9922\\-55\\149.9389\\-254.9453\\-55\\147.4609\\-258.3455\\-55\\145.5307\\-260.8047\\-55\\142.2502\\-264.7109\\-55\\139.6484\\-267.4648\\-55\\133.7891\\-273.133\\-55\\131.8359\\-274.7971\\-55\\129.8828\\-276.2724\\-55\\127.3468\\-278.3828\\-55\\124.0234\\-281.0288\\-55\\122.0703\\-282.4251\\-55\\120.1172\\-283.5473\\-55\\116.2109\\-286.4212\\-55\\114.2578\\-287.5333\\-55\\112.3047\\-288.793\\-55\\110.3516\\-289.6133\\-55\\108.3984\\-290.8083\\-55\\106.4453\\-291.6942\\-55\\104.4922\\-292.837\\-55\\102.5391\\-293.6292\\-55\\100.5859\\-294.615\\-55\\96.67969\\-295.6378\\-55\\94.72656\\-296.4713\\-55\\90.82031\\-297.2572\\-55\\86.91406\\-298.3326\\-55\\84.96094\\-298.6593\\-55\\81.05469\\-299.1401\\-55\\77.14844\\-299.5115\\-55\\73.24219\\-299.7175\\-55\\69.33594\\-299.6265\\-55\\65.42969\\-299.2402\\-55\\61.52344\\-298.7063\\-55\\59.57031\\-298.3579\\-55\\57.61719\\-297.6089\\-55\\55.66406\\-297.0702\\-55\\53.71094\\-296.6519\\-55\\51.75781\\-295.7855\\-55\\47.85156\\-294.4396\\-55\\45.89844\\-293.3195\\-55\\43.94531\\-292.4176\\-55\\43.48624\\-292.0547\\-55\\40.03906\\-289.9362\\-55\\38.08594\\-288.9685\\-55\\36.13281\\-287.7121\\-55\\34.17969\\-286.6963\\-55\\30.27344\\-283.9047\\-55\\28.32031\\-282.8855\\-55\\26.36719\\-281.5341\\-55\\24.20775\\-280.3359\\-55\\22.46094\\-279.4865\\-55\\20.50781\\-279.0503\\-55\\18.55469\\-278.8211\\-55\\14.64844\\-278.618\\-55\\10.74219\\-278.6785\\-55\\8.789063\\-278.8281\\-55\\-0.9765625\\-279.2016\\-55\\-2.929688\\-279.3015\\-55\\-6.835938\\-279.3947\\-55\\-12.69531\\-279.4718\\-55\\-16.60156\\-279.4296\\-55\\-18.55469\\-279.4858\\-55\\-20.50781\\-279.7219\\-55\\-22.46094\\-280.4254\\-55\\-24.41406\\-281.2663\\-55\\-28.32031\\-283.3328\\-55\\-30.27344\\-284.6496\\-55\\-32.22656\\-285.7514\\-55\\-32.80892\\-286.1953\\-55\\-36.13281\\-288.3513\\-55\\-38.08594\\-289.2636\\-55\\-40.03906\\-290.4834\\-55\\-41.99219\\-291.437\\-55\\-43.94531\\-292.7716\\-55\\-47.85156\\-294.8001\\-55\\-49.80469\\-295.3634\\-55\\-51.75781\\-296.3898\\-55\\-55.66406\\-297.5274\\-55\\-57.61719\\-298.3421\\-55\\-59.57031\\-298.7905\\-55\\-63.47656\\-299.501\\-55\\-65.42969\\-299.9194\\-55\\-67.38281\\-300.1841\\-55\\-69.33594\\-300.3342\\-55\\-73.24219\\-300.4589\\-55\\-77.14844\\-300.3703\\-55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "308"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "99"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-300.0288\\-53\\-86.91406\\-298.7434\\-53\\-88.86719\\-298.3579\\-53\\-90.82031\\-297.5818\\-53\\-94.72656\\-296.5983\\-53\\-96.67969\\-295.7168\\-53\\-100.5859\\-294.4158\\-53\\-102.5391\\-293.2898\\-53\\-104.4922\\-292.3599\\-53\\-104.871\\-292.0547\\-53\\-108.3984\\-289.9093\\-53\\-110.3516\\-288.9435\\-53\\-112.3047\\-287.6869\\-53\\-114.2578\\-286.6102\\-53\\-118.1641\\-283.6107\\-53\\-120.1172\\-282.4072\\-53\\-122.0703\\-280.9892\\-53\\-125.9766\\-277.479\\-53\\-127.3281\\-276.4297\\-53\\-129.8828\\-274.1588\\-53\\-131.4557\\-272.5234\\-53\\-135.7422\\-268.2888\\-53\\-137.0157\\-266.6641\\-53\\-138.6953\\-264.7109\\-53\\-140.5242\\-262.7578\\-53\\-142.1411\\-260.8047\\-53\\-143.3182\\-258.8516\\-53\\-144.7083\\-256.8984\\-53\\-146.295\\-254.9453\\-53\\-147.6405\\-252.9922\\-53\\-148.7044\\-251.0391\\-53\\-149.9675\\-249.0859\\-53\\-150.8494\\-247.1328\\-53\\-152.1322\\-245.1797\\-53\\-154.2222\\-241.2734\\-53\\-155.0458\\-239.3203\\-53\\-156.0136\\-237.3672\\-53\\-156.5859\\-235.4141\\-53\\-157.616\\-233.4609\\-53\\-158.2952\\-231.5078\\-53\\-159.9824\\-227.6016\\-53\\-160.5539\\-225.6484\\-53\\-161.3946\\-223.6953\\-53\\-161.9367\\-221.7422\\-53\\-162.6143\\-217.8359\\-53\\-163.3085\\-215.8828\\-53\\-163.7827\\-213.9297\\-53\\-164.4012\\-210.0234\\-53\\-164.8213\\-208.0703\\-53\\-165.3856\\-206.1172\\-53\\-165.6883\\-204.1641\\-53\\-166.3208\\-198.3047\\-53\\-166.7913\\-194.3984\\-53\\-167.1678\\-190.4922\\-53\\-167.3456\\-186.5859\\-53\\-167.4017\\-180.7266\\-53\\-167.3023\\-176.8203\\-53\\-167.073\\-172.9141\\-53\\-165.9756\\-163.1484\\-53\\-165.4921\\-159.2422\\-53\\-164.4972\\-155.3359\\-53\\-163.8425\\-151.4297\\-53\\-163.3954\\-149.4766\\-53\\-162.6451\\-147.5234\\-53\\-161.8391\\-143.6172\\-53\\-160.2902\\-139.7109\\-53\\-159.6559\\-137.7578\\-53\\-158.5383\\-135.8047\\-53\\-157.8306\\-133.8516\\-53\\-156.7053\\-131.8984\\-53\\-156.078\\-129.9453\\-53\\-154.1756\\-126.0391\\-53\\-153.0546\\-124.0859\\-53\\-152.0769\\-122.1328\\-53\\-150.8896\\-120.1797\\-53\\-150\\-118.2266\\-53\\-148.6962\\-116.2734\\-53\\-147.8354\\-114.3203\\-53\\-147.4609\\-113.8675\\-53\\-145.0296\\-110.4141\\-53\\-143.8664\\-108.4609\\-53\\-142.525\\-106.5078\\-53\\-139.6484\\-102.9844\\-53\\-135.6658\\-98.69531\\-53\\-133.7069\\-96.74219\\-53\\-128.843\\-92.83594\\-53\\-125.8517\\-90.88281\\-53\\-122.0703\\-88.70313\\-53\\-120.1172\\-87.93481\\-53\\-116.2109\\-85.86555\\-53\\-114.2578\\-84.9287\\-53\\-112.3047\\-84.29851\\-53\\-110.3516\\-83.76604\\-53\\-106.4453\\-82.03912\\-53\\-104.4922\\-81.69363\\-53\\-100.5859\\-80.65642\\-53\\-92.77344\\-78.98968\\-53\\-88.86719\\-78.34634\\-53\\-84.96094\\-77.96983\\-53\\-81.05469\\-77.31169\\-53\\-79.10156\\-77.25031\\-53\\-75.19531\\-76.76075\\-53\\-67.38281\\-76.62628\\-53\\-63.47656\\-76.73603\\-53\\-59.57031\\-77.05903\\-53\\-57.61719\\-77.15875\\-53\\-53.71094\\-77.62663\\-53\\-47.85156\\-78.12279\\-53\\-41.99219\\-78.78703\\-53\\-38.08594\\-79.46286\\-53\\-32.22656\\-80.40981\\-53\\-30.27344\\-80.86929\\-53\\-28.32031\\-81.68007\\-53\\-26.36719\\-82.19456\\-53\\-24.19562\\-83.07031\\-53\\-20.50781\\-84.84124\\-53\\-18.55469\\-86.06467\\-53\\-14.64844\\-88.83708\\-53\\-7.990761\\-94.78906\\-53\\-4.173224\\-98.69531\\-53\\-2.929688\\-99.91257\\-53\\-0.9765625\\-101.2242\\-53\\0.9765625\\-100.574\\-53\\2.929688\\-98.8261\\-53\\8.745466\\-92.83594\\-53\\12.69531\\-89.00611\\-53\\15.19775\\-86.97656\\-53\\18.55469\\-84.50125\\-53\\22.46094\\-82.17838\\-53\\24.41406\\-81.35556\\-53\\26.36719\\-80.35484\\-53\\28.32031\\-79.64883\\-53\\30.27344\\-78.79543\\-53\\32.22656\\-78.12608\\-53\\36.13281\\-76.93694\\-53\\38.08594\\-76.46416\\-53\\40.03906\\-76.13925\\-53\\43.94531\\-75.76935\\-53\\45.89844\\-75.36102\\-53\\49.80469\\-74.67046\\-53\\51.75781\\-74.54211\\-53\\55.66406\\-74.49609\\-53\\61.52344\\-74.50114\\-53\\65.42969\\-74.63636\\-53\\69.33594\\-74.89641\\-53\\71.43555\\-75.25781\\-53\\75.19531\\-75.77822\\-53\\81.05469\\-76.14082\\-53\\83.00781\\-76.33438\\-53\\86.91406\\-76.95284\\-53\\88.86719\\-77.45335\\-53\\94.72656\\-78.58997\\-53\\96.67969\\-79.04199\\-53\\98.63281\\-79.76552\\-53\\102.5391\\-80.68392\\-53\\104.4922\\-81.48611\\-53\\108.3984\\-82.6558\\-53\\110.3516\\-83.72335\\-53\\112.3047\\-84.41919\\-53\\114.2578\\-85.56954\\-53\\116.2109\\-86.38452\\-53\\118.1641\\-87.44728\\-53\\120.1172\\-88.19401\\-53\\122.0703\\-89.53922\\-53\\124.0234\\-90.70313\\-53\\125.9766\\-92.17938\\-53\\127.9297\\-93.51202\\-53\\129.8828\\-94.63943\\-53\\131.8359\\-96.04646\\-53\\133.7891\\-98.12615\\-53\\134.5196\\-98.69531\\-53\\137.6953\\-101.6887\\-53\\140.5472\\-104.5547\\-53\\142.1875\\-106.5078\\-53\\143.1478\\-108.4609\\-53\\144.3971\\-110.4141\\-53\\145.7591\\-112.3672\\-53\\146.9001\\-114.3203\\-53\\148.2117\\-116.2734\\-53\\148.9966\\-118.2266\\-53\\150.1743\\-120.1797\\-53\\150.9724\\-122.1328\\-53\\152.0956\\-124.0859\\-53\\152.9257\\-126.0391\\-53\\153.9533\\-127.9922\\-53\\154.6245\\-129.9453\\-53\\155.5722\\-131.8984\\-53\\156.6368\\-135.8047\\-53\\157.5671\\-137.7578\\-53\\158.7227\\-141.6641\\-53\\159.518\\-143.6172\\-53\\160.0056\\-145.5703\\-53\\160.3854\\-147.5234\\-53\\161.4423\\-151.4297\\-53\\162.0502\\-155.3359\\-53\\162.5977\\-161.1953\\-53\\163.2957\\-165.1016\\-53\\163.5554\\-167.0547\\-53\\163.8641\\-170.9609\\-53\\164.1226\\-176.8203\\-53\\164.3935\\-186.5859\\-53\\164.3936\\-196.3516\\-53\\164.3392\\-200.2578\\-53\\164.1388\\-208.0703\\-53\\163.8972\\-213.9297\\-53\\163.5554\\-217.8359\\-53\\163.2413\\-219.7891\\-53\\162.8079\\-221.7422\\-53\\162.4962\\-223.6953\\-53\\162.0147\\-227.6016\\-53\\161.6308\\-229.5547\\-53\\160.9291\\-231.5078\\-53\\159.7191\\-235.4141\\-53\\158.7132\\-237.3672\\-53\\158.0455\\-239.3203\\-53\\157.0938\\-241.2734\\-53\\155.4778\\-245.1797\\-53\\153.3436\\-249.0859\\-53\\152.1312\\-251.0391\\-53\\150.6848\\-252.9922\\-53\\149.6353\\-254.9453\\-53\\148.2693\\-256.8984\\-53\\146.7364\\-258.8516\\-53\\145.0376\\-260.8047\\-53\\141.8438\\-264.7109\\-53\\140.0378\\-266.6641\\-53\\137.6953\\-268.9632\\-53\\133.7891\\-272.7056\\-53\\131.6793\\-274.4766\\-53\\127.9297\\-277.5155\\-53\\126.9233\\-278.3828\\-53\\124.3887\\-280.3359\\-53\\124.0234\\-280.6957\\-53\\120.1172\\-283.2656\\-53\\118.1641\\-284.677\\-53\\116.2109\\-285.8745\\-53\\114.2578\\-287.231\\-53\\112.3047\\-288.4348\\-53\\110.3516\\-289.294\\-53\\108.3984\\-290.4733\\-53\\106.4453\\-291.314\\-53\\104.4922\\-292.4823\\-53\\102.5391\\-293.2668\\-53\\100.5859\\-294.243\\-53\\98.63281\\-294.8765\\-53\\96.67969\\-295.3078\\-53\\92.77344\\-296.6411\\-53\\88.86719\\-297.34\\-53\\84.96094\\-298.3514\\-53\\83.00781\\-298.653\\-53\\79.10156\\-299.0353\\-53\\75.19531\\-299.31\\-53\\71.28906\\-299.3641\\-53\\67.38281\\-299.2033\\-53\\63.47656\\-298.8023\\-53\\61.52344\\-298.535\\-53\\59.57031\\-298.0627\\-53\\57.61719\\-297.3776\\-53\\53.71094\\-296.4987\\-53\\51.75781\\-295.5773\\-53\\49.80469\\-294.9964\\-53\\47.85156\\-294.3173\\-53\\45.89844\\-293.2345\\-53\\43.94531\\-292.3578\\-53\\41.99219\\-291.1091\\-53\\40.03906\\-290.0128\\-53\\38.08594\\-289.0636\\-53\\36.13281\\-287.9191\\-53\\34.17969\\-286.9158\\-53\\32.22656\\-285.5675\\-53\\30.27344\\-284.4375\\-53\\28.32031\\-283.1993\\-53\\26.36719\\-282.1019\\-53\\24.41406\\-281.1871\\-53\\22.46094\\-280.6072\\-53\\20.50781\\-280.1903\\-53\\16.60156\\-279.8255\\-53\\10.74219\\-279.7789\\-53\\6.835938\\-280.2903\\-53\\-0.9765625\\-280.7408\\-53\\-4.882813\\-280.8511\\-53\\-14.64844\\-280.9307\\-53\\-18.55469\\-280.9262\\-53\\-20.50781\\-281.0174\\-53\\-22.46094\\-281.3329\\-53\\-24.41406\\-281.8759\\-53\\-26.36719\\-282.9069\\-53\\-28.32031\\-283.73\\-53\\-29.0314\\-284.2422\\-53\\-34.17969\\-287.2744\\-53\\-36.13281\\-288.5235\\-53\\-38.08594\\-289.3343\\-53\\-40.03906\\-290.5322\\-53\\-41.99219\\-291.4488\\-53\\-43.94531\\-292.7229\\-53\\-45.89844\\-293.6374\\-53\\-47.85156\\-294.7107\\-53\\-49.80469\\-295.2697\\-53\\-51.75781\\-296.2141\\-53\\-53.71094\\-296.8636\\-53\\-55.66406\\-297.3449\\-53\\-57.61719\\-298.1378\\-53\\-59.57031\\-298.6554\\-53\\-63.47656\\-299.2951\\-53\\-67.38281\\-299.9893\\-53\\-69.33594\\-300.1732\\-53\\-73.24219\\-300.31\\-53\\-77.14844\\-300.2055\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "301"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "100"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-77.14844\\-299.9893\\-51\\-81.05469\\-299.493\\-51\\-86.91406\\-298.5874\\-51\\-88.86719\\-298.0884\\-51\\-90.82031\\-297.3535\\-51\\-94.72656\\-296.4102\\-51\\-96.67969\\-295.493\\-51\\-98.63281\\-294.937\\-51\\-100.5859\\-294.1336\\-51\\-106.4453\\-290.8987\\-51\\-108.3984\\-289.6408\\-51\\-110.3516\\-288.7753\\-51\\-112.3047\\-287.458\\-51\\-114.2578\\-286.345\\-51\\-118.1641\\-283.442\\-51\\-122.0703\\-280.8101\\-51\\-125.9766\\-277.301\\-51\\-127.0873\\-276.4297\\-51\\-129.8828\\-273.9485\\-51\\-131.257\\-272.5234\\-51\\-135.7422\\-268.1087\\-51\\-136.8556\\-266.6641\\-51\\-139.6484\\-263.5046\\-51\\-140.4102\\-262.7578\\-51\\-142.0332\\-260.8047\\-51\\-143.1858\\-258.8516\\-51\\-144.604\\-256.8984\\-51\\-146.1848\\-254.9453\\-51\\-147.4838\\-252.9922\\-51\\-149.8473\\-249.0859\\-51\\-150.7182\\-247.1328\\-51\\-152.0201\\-245.1797\\-51\\-152.9696\\-243.2266\\-51\\-154.0889\\-241.2734\\-51\\-154.8733\\-239.3203\\-51\\-155.8878\\-237.3672\\-51\\-156.4465\\-235.4141\\-51\\-157.3882\\-233.4609\\-51\\-158.8631\\-229.5547\\-51\\-159.8147\\-227.6016\\-51\\-160.3461\\-225.6484\\-51\\-161.7571\\-221.7422\\-51\\-162.4246\\-217.8359\\-51\\-162.941\\-215.8828\\-51\\-163.5866\\-213.9297\\-51\\-163.9326\\-211.9766\\-51\\-164.5178\\-208.0703\\-51\\-165.4644\\-204.1641\\-51\\-165.7395\\-202.2109\\-51\\-166.6602\\-192.4453\\-51\\-167.0869\\-186.5859\\-51\\-167.155\\-182.6797\\-51\\-167.1152\\-178.7734\\-51\\-166.7636\\-172.9141\\-51\\-166.0256\\-165.1016\\-51\\-165.5915\\-161.1953\\-51\\-165.2135\\-159.2422\\-51\\-164.7025\\-157.2891\\-51\\-164.3066\\-155.3359\\-51\\-163.6684\\-151.4297\\-51\\-162.4286\\-147.5234\\-51\\-161.6532\\-143.6172\\-51\\-160.7759\\-141.6641\\-51\\-159.3294\\-137.7578\\-51\\-158.3029\\-135.8047\\-51\\-157.5648\\-133.8516\\-51\\-156.491\\-131.8984\\-51\\-155.8789\\-129.9453\\-51\\-154.7818\\-127.9922\\-51\\-153.9526\\-126.0391\\-51\\-152.7835\\-124.0859\\-51\\-151.8405\\-122.1328\\-51\\-150.6397\\-120.1797\\-51\\-149.7566\\-118.2266\\-51\\-148.5635\\-116.2734\\-51\\-147.5667\\-114.3203\\-51\\-144.8759\\-110.4141\\-51\\-142.4264\\-106.5078\\-51\\-139.6484\\-103.086\\-51\\-137.6953\\-100.8571\\-51\\-135.6994\\-98.69531\\-51\\-133.7891\\-96.73456\\-51\\-127.9297\\-92.05605\\-51\\-125.9766\\-90.79954\\-51\\-124.0234\\-89.7381\\-51\\-122.0703\\-88.52886\\-51\\-120.1172\\-87.83181\\-51\\-118.1641\\-86.71088\\-51\\-114.2578\\-84.69791\\-51\\-112.3047\\-84.0059\\-51\\-110.3516\\-83.57543\\-51\\-108.3984\\-82.61303\\-51\\-106.4453\\-81.98746\\-51\\-104.4922\\-81.54716\\-51\\-102.5391\\-80.95045\\-51\\-98.63281\\-80.08637\\-51\\-96.67969\\-79.55015\\-51\\-94.72656\\-79.22199\\-51\\-90.82031\\-78.42303\\-51\\-88.86719\\-78.10815\\-51\\-84.96094\\-77.79077\\-51\\-81.05469\\-76.99774\\-51\\-77.14844\\-76.64806\\-51\\-73.24219\\-76.44922\\-51\\-69.33594\\-76.41827\\-51\\-63.47656\\-76.48639\\-51\\-55.66406\\-76.93294\\-51\\-51.75781\\-77.48298\\-51\\-43.94531\\-78.19892\\-51\\-40.03906\\-78.61743\\-51\\-38.08594\\-78.92834\\-51\\-36.13281\\-79.3548\\-51\\-30.27344\\-80.4894\\-51\\-26.36719\\-81.83641\\-51\\-24.41406\\-82.41263\\-51\\-22.46094\\-83.44001\\-51\\-20.50781\\-84.32771\\-51\\-16.60156\\-86.80109\\-51\\-14.64844\\-88.23415\\-51\\-12.69531\\-89.90625\\-51\\-10.74219\\-91.79637\\-51\\-9.432164\\-92.83594\\-51\\-7.340771\\-94.78906\\-51\\-2.929688\\-99.20722\\-51\\-0.9765625\\-100.3555\\-51\\0.9765625\\-99.98135\\-51\\2.929688\\-98.1669\\-51\\6.283309\\-94.78906\\-51\\8.130787\\-92.83594\\-51\\10.74219\\-90.25699\\-51\\12.69531\\-88.42638\\-51\\14.64844\\-86.81759\\-51\\17.04102\\-85.02344\\-51\\20.50781\\-82.7226\\-51\\22.46094\\-81.87386\\-51\\24.41406\\-80.75098\\-51\\26.36719\\-80.01297\\-51\\28.32031\\-79.1265\\-51\\30.27344\\-78.35026\\-51\\34.17969\\-77.05196\\-51\\36.13281\\-76.53634\\-51\\38.08594\\-76.18462\\-51\\41.99219\\-75.75947\\-51\\45.89844\\-74.82631\\-51\\47.85156\\-74.61823\\-51\\51.75781\\-74.39321\\-51\\61.52344\\-74.36723\\-51\\67.38281\\-74.57355\\-51\\71.28906\\-74.84465\\-51\\73.24219\\-75.07064\\-51\\77.14844\\-75.73949\\-51\\83.00781\\-76.1597\\-51\\86.91406\\-76.67193\\-51\\90.82031\\-77.60024\\-51\\94.72656\\-78.30733\\-51\\96.67969\\-78.78703\\-51\\98.63281\\-79.50155\\-51\\102.5391\\-80.48085\\-51\\104.4358\\-81.11719\\-51\\106.4453\\-81.89471\\-51\\108.3984\\-82.4388\\-51\\110.3516\\-83.46767\\-51\\112.3047\\-84.1533\\-51\\114.2578\\-85.30556\\-51\\117.8869\\-86.97656\\-51\\120.1172\\-88.06654\\-51\\122.0703\\-89.36295\\-51\\124.0234\\-90.50776\\-51\\124.4247\\-90.88281\\-51\\127.2593\\-92.83594\\-51\\127.9297\\-93.40095\\-51\\129.8828\\-94.55069\\-51\\131.8359\\-95.92953\\-51\\133.7891\\-97.89222\\-51\\134.7281\\-98.69531\\-51\\137.6953\\-101.5663\\-51\\140.564\\-104.5547\\-51\\142.1296\\-106.5078\\-51\\143.1101\\-108.4609\\-51\\146.7786\\-114.3203\\-51\\148.0807\\-116.2734\\-51\\148.8551\\-118.2266\\-51\\150.0116\\-120.1797\\-51\\150.7349\\-122.1328\\-51\\151.8876\\-124.0859\\-51\\152.6712\\-126.0391\\-51\\153.7579\\-127.9922\\-51\\154.4204\\-129.9453\\-51\\155.9854\\-133.8516\\-51\\156.4324\\-135.8047\\-51\\157.9333\\-139.7109\\-51\\158.4256\\-141.6641\\-51\\159.7734\\-145.5703\\-51\\160.5636\\-149.4766\\-51\\161.592\\-153.3828\\-51\\161.8891\\-155.3359\\-51\\162.6075\\-163.1484\\-51\\163.2548\\-167.0547\\-51\\163.5063\\-169.0078\\-51\\163.8035\\-172.9141\\-51\\164.0376\\-178.7734\\-51\\164.2218\\-186.5859\\-51\\164.2131\\-196.3516\\-51\\164.1435\\-202.2109\\-51\\163.9193\\-210.0234\\-51\\163.7351\\-213.9297\\-51\\163.2681\\-217.8359\\-51\\162.5434\\-221.7422\\-51\\161.8502\\-227.6016\\-51\\161.3554\\-229.5547\\-51\\160.6172\\-231.5078\\-51\\160.0847\\-233.4609\\-51\\159.4154\\-235.4141\\-51\\158.4323\\-237.3672\\-51\\157.8203\\-239.3203\\-51\\156.7619\\-241.2734\\-51\\156.0903\\-243.2266\\-51\\155.0842\\-245.1797\\-51\\154.1929\\-247.1328\\-51\\152.9421\\-249.0859\\-51\\151.8619\\-251.0391\\-51\\150.4257\\-252.9922\\-51\\149.4141\\-254.7339\\-51\\147.9942\\-256.8984\\-51\\144.6717\\-260.8047\\-51\\143.5547\\-262.2171\\-51\\139.6484\\-266.5591\\-51\\137.6953\\-268.4789\\-51\\133.394\\-272.5234\\-51\\131.8359\\-273.9408\\-51\\128.8578\\-276.4297\\-51\\125.9766\\-278.7589\\-51\\123.8591\\-280.3359\\-51\\120.1172\\-283.0077\\-51\\118.1641\\-284.1689\\-51\\116.2109\\-285.4598\\-51\\114.2578\\-286.8963\\-51\\112.3047\\-287.9043\\-51\\110.3516\\-289.0255\\-51\\108.3984\\-289.9247\\-51\\106.4453\\-290.9898\\-51\\104.4922\\-291.9141\\-51\\102.5391\\-292.939\\-51\\100.5859\\-293.7047\\-51\\98.63281\\-294.5849\\-51\\94.72656\\-295.4994\\-51\\92.77344\\-296.2748\\-51\\90.82031\\-296.7254\\-51\\86.91406\\-297.3569\\-51\\83.00781\\-298.323\\-51\\81.05469\\-298.5982\\-51\\75.19531\\-299.0178\\-51\\71.28906\\-299.0995\\-51\\67.38281\\-298.9817\\-51\\63.47656\\-298.6145\\-51\\61.52344\\-298.301\\-51\\59.57031\\-297.6822\\-51\\57.61719\\-297.1844\\-51\\55.66406\\-296.8108\\-51\\53.71094\\-296.3229\\-51\\51.75781\\-295.4301\\-51\\49.80469\\-294.9197\\-51\\47.85156\\-294.1887\\-51\\45.89844\\-293.1684\\-51\\43.94531\\-292.2971\\-51\\41.99219\\-291.1244\\-51\\36.13281\\-288.2199\\-51\\30.27344\\-284.8374\\-51\\28.32031\\-283.5547\\-51\\24.41406\\-281.903\\-51\\22.46094\\-281.5119\\-51\\20.50781\\-281.2709\\-51\\18.55469\\-281.2064\\-51\\12.69531\\-281.2032\\-51\\10.74219\\-281.0991\\-51\\8.789063\\-281.4326\\-51\\6.835938\\-281.6197\\-51\\-0.9765625\\-281.9579\\-51\\-8.789063\\-282.0406\\-51\\-18.55469\\-282.0136\\-51\\-20.50781\\-282.0637\\-51\\-22.46094\\-282.348\\-51\\-24.41406\\-282.7983\\-51\\-26.36719\\-283.3748\\-51\\-30.27344\\-285.3279\\-51\\-32.22656\\-286.5792\\-51\\-34.17969\\-287.4655\\-51\\-36.13281\\-288.6866\\-51\\-38.08594\\-289.4013\\-51\\-40.03906\\-290.5986\\-51\\-41.99219\\-291.4806\\-51\\-43.94531\\-292.7076\\-51\\-45.89844\\-293.5357\\-51\\-47.85156\\-294.6229\\-51\\-49.80469\\-295.1884\\-51\\-53.71094\\-296.7476\\-51\\-55.66406\\-297.1913\\-51\\-59.57031\\-298.4823\\-51\\-61.52344\\-298.8317\\-51\\-69.33594\\-299.9757\\-51\\-73.24219\\-300.1377\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "315"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "101"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-73.24219\\-299.8899\\-49\\-77.14844\\-299.7044\\-49\\-81.05469\\-299.2904\\-49\\-84.96094\\-298.749\\-49\\-86.91406\\-298.4194\\-49\\-88.86719\\-297.7359\\-49\\-90.82031\\-297.1761\\-49\\-92.77344\\-296.7802\\-49\\-94.72656\\-296.1592\\-49\\-96.67969\\-295.2994\\-49\\-98.63281\\-294.7807\\-49\\-100.5859\\-293.79\\-49\\-102.5391\\-292.9078\\-49\\-104.4922\\-291.6371\\-49\\-106.4453\\-290.7012\\-49\\-108.3984\\-289.4104\\-49\\-110.3516\\-288.5518\\-49\\-110.8817\\-288.1484\\-49\\-113.9695\\-286.1953\\-49\\-116.2109\\-284.7112\\-49\\-120.1172\\-281.8211\\-49\\-122.0703\\-280.5838\\-49\\-124.5226\\-278.3828\\-49\\-126.8569\\-276.4297\\-49\\-129.8828\\-273.6993\\-49\\-135.1031\\-268.6172\\-49\\-136.7309\\-266.6641\\-49\\-139.6484\\-263.3847\\-49\\-140.2927\\-262.7578\\-49\\-141.9049\\-260.8047\\-49\\-143.0129\\-258.8516\\-49\\-146.0544\\-254.9453\\-49\\-147.4609\\-252.8193\\-49\\-149.7274\\-249.0859\\-49\\-150.6109\\-247.1328\\-49\\-151.886\\-245.1797\\-49\\-152.794\\-243.2266\\-49\\-153.9615\\-241.2734\\-49\\-154.7181\\-239.3203\\-49\\-155.7549\\-237.3672\\-49\\-156.3202\\-235.4141\\-49\\-157.0958\\-233.4609\\-49\\-158.0027\\-231.5078\\-49\\-158.6208\\-229.5547\\-49\\-159.6327\\-227.6016\\-49\\-160.7723\\-223.6953\\-49\\-161.5381\\-221.7422\\-49\\-161.9976\\-219.7891\\-49\\-162.2771\\-217.8359\\-49\\-162.6587\\-215.8828\\-49\\-163.3085\\-213.9297\\-49\\-163.765\\-211.9766\\-49\\-164.2932\\-208.0703\\-49\\-164.655\\-206.1172\\-49\\-165.5444\\-202.2109\\-49\\-165.9264\\-198.3047\\-49\\-166.2571\\-194.3984\\-49\\-166.7548\\-186.5859\\-49\\-166.827\\-182.6797\\-49\\-166.7652\\-178.7734\\-49\\-166.4891\\-172.9141\\-49\\-165.8529\\-165.1016\\-49\\-165.6494\\-163.1484\\-49\\-165.343\\-161.1953\\-49\\-164.8452\\-159.2422\\-49\\-164.1396\\-155.3359\\-49\\-163.849\\-153.3828\\-49\\-163.4182\\-151.4297\\-49\\-162.7327\\-149.4766\\-49\\-162.2742\\-147.5234\\-49\\-161.9274\\-145.5703\\-49\\-161.3946\\-143.6172\\-49\\-160.4957\\-141.6641\\-49\\-159.87\\-139.7109\\-49\\-158.8881\\-137.7578\\-49\\-158.0906\\-135.8047\\-49\\-156.3163\\-131.8984\\-49\\-155.6227\\-129.9453\\-49\\-154.541\\-127.9922\\-49\\-153.6933\\-126.0391\\-49\\-152.5677\\-124.0859\\-49\\-151.5666\\-122.1328\\-49\\-150.4477\\-120.1797\\-49\\-148.4187\\-116.2734\\-49\\-146.0539\\-112.3672\\-49\\-143.4471\\-108.4609\\-49\\-142.3222\\-106.5078\\-49\\-139.6484\\-103.195\\-49\\-137.6953\\-100.9215\\-49\\-135.7422\\-98.7592\\-49\\-133.7891\\-96.70463\\-49\\-127.9297\\-91.95137\\-49\\-125.9766\\-90.63867\\-49\\-124.0234\\-89.6263\\-49\\-122.0703\\-88.41024\\-49\\-120.1172\\-87.7443\\-49\\-118.1641\\-86.55054\\-49\\-116.2109\\-85.61819\\-49\\-114.2578\\-84.54977\\-49\\-112.3047\\-83.80991\\-49\\-110.3516\\-83.40533\\-49\\-108.3984\\-82.45465\\-49\\-104.4922\\-81.44525\\-49\\-102.5391\\-80.74826\\-49\\-100.5859\\-80.39538\\-49\\-98.63281\\-79.76447\\-49\\-96.67969\\-79.30476\\-49\\-92.77344\\-78.64601\\-49\\-90.82031\\-78.20558\\-49\\-84.96094\\-77.57632\\-49\\-81.05469\\-76.70483\\-49\\-79.10156\\-76.51141\\-49\\-73.24219\\-76.26528\\-49\\-63.47656\\-76.32907\\-49\\-55.66406\\-76.57904\\-49\\-51.75781\\-77.06233\\-49\\-45.89844\\-77.70241\\-49\\-40.03906\\-78.21691\\-49\\-36.13281\\-78.8601\\-49\\-30.27344\\-80.23418\\-49\\-28.32031\\-80.62212\\-49\\-26.36719\\-81.42757\\-49\\-22.46094\\-82.77958\\-49\\-18.55469\\-84.98275\\-49\\-15.65213\\-86.97656\\-49\\-13.14252\\-88.92969\\-49\\-10.74219\\-91.05371\\-49\\-8.580396\\-92.83594\\-49\\-4.882813\\-96.38638\\-49\\-2.929688\\-98.34654\\-49\\-0.9765625\\-99.75326\\-49\\0.9765625\\-99.51804\\-49\\5.836839\\-94.78906\\-49\\7.686038\\-92.83594\\-49\\8.789063\\-91.79999\\-49\\10.74219\\-89.78667\\-49\\12.69531\\-87.95313\\-49\\14.64844\\-86.26318\\-49\\16.60156\\-84.75895\\-49\\20.50781\\-82.27435\\-49\\22.46094\\-81.38632\\-49\\24.41406\\-80.36051\\-49\\27.13341\\-79.16406\\-49\\30.27344\\-77.96069\\-49\\34.17969\\-76.65384\\-49\\36.13281\\-76.25269\\-49\\40.03906\\-75.74609\\-49\\41.99219\\-75.2146\\-49\\43.94531\\-74.79173\\-49\\45.89844\\-74.56026\\-49\\49.80469\\-74.34839\\-49\\51.75781\\-74.29324\\-49\\57.61719\\-74.2339\\-49\\63.47656\\-74.29309\\-49\\69.33594\\-74.54341\\-49\\73.24219\\-74.79868\\-49\\75.19531\\-74.99792\\-49\\79.10156\\-75.74286\\-49\\83.00781\\-76.04024\\-49\\86.91406\\-76.47852\\-49\\88.86719\\-76.77181\\-49\\92.77344\\-77.77339\\-49\\94.72656\\-78.07297\\-49\\96.67969\\-78.53931\\-49\\100.5859\\-79.77274\\-49\\104.4922\\-80.81614\\-49\\106.4453\\-81.74039\\-49\\108.3984\\-82.28036\\-49\\112.3047\\-83.98546\\-49\\116.2109\\-86.07741\\-49\\118.1641\\-86.92143\\-49\\121.7413\\-88.92969\\-49\\124.0234\\-90.34834\\-49\\124.6665\\-90.88281\\-49\\127.4619\\-92.83594\\-49\\127.9297\\-93.25446\\-49\\129.8828\\-94.44135\\-49\\131.8359\\-95.95164\\-49\\134.8524\\-98.69531\\-49\\137.6953\\-101.5424\\-49\\140.5128\\-104.5547\\-49\\141.9519\\-106.5078\\-49\\143.0486\\-108.4609\\-49\\143.5547\\-109.1684\\-49\\145.3501\\-112.3672\\-49\\147.903\\-116.2734\\-49\\148.6962\\-118.2266\\-49\\149.8256\\-120.1797\\-49\\150.5445\\-122.1328\\-49\\151.6317\\-124.0859\\-49\\152.433\\-126.0391\\-49\\153.4577\\-127.9922\\-49\\154.9064\\-131.8984\\-49\\155.7885\\-133.8516\\-49\\156.765\\-137.7578\\-49\\157.6666\\-139.7109\\-49\\158.6853\\-143.6172\\-49\\159.4746\\-145.5703\\-49\\159.9496\\-147.5234\\-49\\160.7281\\-151.4297\\-49\\161.3004\\-153.3828\\-49\\161.6953\\-155.3359\\-49\\161.9177\\-157.2891\\-49\\162.4042\\-163.1484\\-49\\162.86\\-167.0547\\-49\\163.1705\\-169.0078\\-49\\163.6047\\-172.9141\\-49\\163.8929\\-178.7734\\-49\\164.0724\\-186.5859\\-49\\164.0877\\-192.4453\\-49\\164.0224\\-200.2578\\-49\\163.9091\\-206.1172\\-49\\163.7684\\-210.0234\\-49\\163.5164\\-213.9297\\-49\\162.6009\\-219.7891\\-49\\162.1813\\-223.6953\\-49\\161.6371\\-227.6016\\-49\\160.3636\\-231.5078\\-49\\159.8638\\-233.4609\\-49\\158.9745\\-235.4141\\-49\\157.5235\\-239.3203\\-49\\156.5125\\-241.2734\\-49\\155.8871\\-243.2266\\-49\\154.7786\\-245.1797\\-49\\153.9733\\-247.1328\\-49\\152.6184\\-249.0859\\-49\\151.3672\\-251.1799\\-49\\149.4141\\-254.2598\\-49\\147.6435\\-256.8984\\-49\\146.0341\\-258.8516\\-49\\144.3207\\-260.8047\\-49\\143.5547\\-261.8281\\-49\\139.6484\\-266.0699\\-49\\137.6953\\-268.0398\\-49\\135.0644\\-270.5703\\-49\\133.7891\\-271.6873\\-49\\131.8359\\-273.5698\\-49\\129.8828\\-275.2725\\-49\\127.9297\\-276.8106\\-49\\125.7951\\-278.3828\\-49\\122.0703\\-281.2608\\-49\\120.1172\\-282.6641\\-49\\118.1641\\-283.6967\\-49\\117.4762\\-284.2422\\-49\\114.2578\\-286.4984\\-49\\112.3047\\-287.4869\\-49\\110.3516\\-288.7303\\-49\\108.3984\\-289.4655\\-49\\106.4453\\-290.6571\\-49\\104.4922\\-291.4173\\-49\\102.5391\\-292.5783\\-49\\100.5859\\-293.274\\-49\\98.63281\\-294.1644\\-49\\96.67969\\-294.7903\\-49\\94.72656\\-295.198\\-49\\92.77344\\-295.7298\\-49\\90.82031\\-296.4001\\-49\\88.86719\\-296.791\\-49\\84.96094\\-297.3365\\-49\\81.05469\\-298.2502\\-49\\79.10156\\-298.4978\\-49\\75.19531\\-298.774\\-49\\71.28906\\-298.871\\-49\\67.38281\\-298.7617\\-49\\63.47656\\-298.3877\\-49\\61.52344\\-297.9662\\-49\\59.57031\\-297.3985\\-49\\55.66406\\-296.6737\\-49\\53.71094\\-296.0763\\-49\\51.75781\\-295.3036\\-49\\49.80469\\-294.8355\\-49\\47.85156\\-294.0463\\-49\\43.94531\\-292.257\\-49\\41.99219\\-291.1599\\-49\\40.03906\\-290.2913\\-49\\38.08594\\-289.2532\\-49\\36.13281\\-288.474\\-49\\34.17969\\-287.2756\\-49\\32.22656\\-286.3921\\-49\\30.27344\\-285.1799\\-49\\28.32031\\-284.1061\\-49\\26.36719\\-283.2594\\-49\\24.41406\\-282.8248\\-49\\20.50781\\-282.4101\\-49\\16.60156\\-282.3636\\-49\\10.74219\\-282.6297\\-49\\6.835938\\-282.9245\\-49\\2.929688\\-283.0279\\-49\\0.9765625\\-283.2161\\-49\\-4.882813\\-283.3084\\-49\\-8.789063\\-283.3152\\-49\\-14.64844\\-283.2379\\-49\\-20.50781\\-283.2317\\-49\\-22.46094\\-283.3188\\-49\\-24.41406\\-283.5131\\-49\\-26.36719\\-284.0437\\-49\\-26.69711\\-284.2422\\-49\\-30.27344\\-285.7605\\-49\\-32.22656\\-286.9006\\-49\\-34.17969\\-287.7398\\-49\\-36.13281\\-288.827\\-49\\-38.08594\\-289.4742\\-49\\-40.03906\\-290.675\\-49\\-41.99219\\-291.4924\\-49\\-43.94531\\-292.7039\\-49\\-45.89844\\-293.4757\\-49\\-47.85156\\-294.5317\\-49\\-49.80469\\-295.1057\\-49\\-51.75781\\-295.7855\\-49\\-53.71094\\-296.6331\\-49\\-57.61719\\-297.562\\-49\\-59.57031\\-298.2709\\-49\\-61.52344\\-298.6687\\-49\\-63.47656\\-298.9654\\-49\\-69.33594\\-299.689\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "302"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "102"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-298.1959\\-47\\-88.86719\\-297.4765\\-47\\-92.77344\\-296.6294\\-47\\-94.72656\\-295.8148\\-47\\-96.67969\\-295.137\\-47\\-98.63281\\-294.5849\\-47\\-100.5859\\-293.5226\\-47\\-102.5391\\-292.6964\\-47\\-104.4922\\-291.3711\\-47\\-106.4453\\-290.4489\\-47\\-108.3984\\-289.2089\\-47\\-110.3516\\-288.2675\\-47\\-112.3047\\-287.0563\\-47\\-114.2578\\-285.6563\\-47\\-118.1641\\-283.1198\\-47\\-120.1172\\-281.6105\\-47\\-122.0229\\-280.3359\\-47\\-124.2575\\-278.3828\\-47\\-127.9297\\-275.3555\\-47\\-129.8828\\-273.5393\\-47\\-130.823\\-272.5234\\-47\\-132.8929\\-270.5703\\-47\\-135.7422\\-267.7196\\-47\\-139.6484\\-263.2874\\-47\\-140.178\\-262.7578\\-47\\-141.7512\\-260.8047\\-47\\-142.9102\\-258.8516\\-47\\-145.9227\\-254.9453\\-47\\-148.4254\\-251.0391\\-47\\-149.5909\\-249.0859\\-47\\-150.4946\\-247.1328\\-47\\-151.7193\\-245.1797\\-47\\-152.6355\\-243.2266\\-47\\-153.8269\\-241.2734\\-47\\-154.5715\\-239.3203\\-47\\-155.5822\\-237.3672\\-47\\-156.8129\\-233.4609\\-47\\-157.8348\\-231.5078\\-47\\-158.4273\\-229.5547\\-47\\-159.3541\\-227.6016\\-47\\-159.9969\\-225.6484\\-47\\-160.5269\\-223.6953\\-47\\-161.2859\\-221.7422\\-47\\-161.8304\\-219.7891\\-47\\-162.4493\\-215.8828\\-47\\-162.927\\-213.9297\\-47\\-163.5391\\-211.9766\\-47\\-163.8892\\-210.0234\\-47\\-164.3899\\-206.1172\\-47\\-164.7475\\-204.1641\\-47\\-165.2261\\-202.2109\\-47\\-165.7395\\-198.3047\\-47\\-166.0557\\-194.3984\\-47\\-166.4568\\-186.5859\\-47\\-166.5193\\-182.6797\\-47\\-166.4005\\-176.8203\\-47\\-166.2332\\-172.9141\\-47\\-165.9958\\-169.0078\\-47\\-165.4358\\-163.1484\\-47\\-164.5508\\-159.2422\\-47\\-163.6766\\-153.3828\\-47\\-162.4912\\-149.4766\\-47\\-161.7352\\-145.5703\\-47\\-160.2654\\-141.6641\\-47\\-159.6089\\-139.7109\\-47\\-158.5577\\-137.7578\\-47\\-157.8544\\-135.8047\\-47\\-156.7795\\-133.8516\\-47\\-156.1149\\-131.8984\\-47\\-154.315\\-127.9922\\-47\\-152.3198\\-124.0859\\-47\\-151.1875\\-122.1328\\-47\\-150.2557\\-120.1797\\-47\\-149.069\\-118.2266\\-47\\-148.2685\\-116.2734\\-47\\-146.9289\\-114.3203\\-47\\-145.861\\-112.3672\\-47\\-145.5078\\-111.9144\\-47\\-143.5547\\-108.8423\\-47\\-143.2419\\-108.4609\\-47\\-142.1666\\-106.5078\\-47\\-139.6484\\-103.2905\\-47\\-137.6953\\-101.0116\\-47\\-133.7891\\-96.69\\-47\\-127.9297\\-91.91401\\-47\\-125.9766\\-90.55506\\-47\\-124.0234\\-89.52611\\-47\\-122.0703\\-88.31255\\-47\\-120.1172\\-87.62542\\-47\\-118.1641\\-86.374\\-47\\-115.8114\\-85.02344\\-47\\-114.2578\\-84.2407\\-47\\-110.3516\\-83.23307\\-47\\-108.3984\\-82.31448\\-47\\-106.4453\\-81.89458\\-47\\-102.5391\\-80.57539\\-47\\-100.5859\\-80.30436\\-47\\-98.63281\\-79.56571\\-47\\-96.67969\\-79.14135\\-47\\-92.77344\\-78.53748\\-47\\-90.82031\\-78.07832\\-47\\-86.91406\\-77.59505\\-47\\-83.00781\\-76.90576\\-47\\-81.05469\\-76.49756\\-47\\-75.19531\\-76.16068\\-47\\-63.47656\\-76.20565\\-47\\-55.66406\\-76.35275\\-47\\-53.71094\\-76.47074\\-47\\-47.85156\\-77.04456\\-47\\-43.94531\\-77.56544\\-47\\-40.03906\\-77.91954\\-47\\-34.17969\\-78.79785\\-47\\-30.27344\\-79.89957\\-47\\-28.32031\\-80.30338\\-47\\-26.36719\\-80.85628\\-47\\-24.41406\\-81.7487\\-47\\-22.46094\\-82.3363\\-47\\-18.55469\\-84.37891\\-47\\-16.60156\\-85.80338\\-47\\-14.85352\\-86.97656\\-47\\-12.69531\\-88.60679\\-47\\-7.842319\\-92.83594\\-47\\-4.882813\\-95.72347\\-47\\-2.929688\\-97.70547\\-47\\-0.9765625\\-99.27579\\-47\\0.9765625\\-98.91144\\-47\\2.929688\\-97.15535\\-47\\5.419121\\-94.78906\\-47\\10.74219\\-89.35648\\-47\\13.29304\\-86.97656\\-47\\15.625\\-85.02344\\-47\\18.55469\\-83.01238\\-47\\22.46094\\-80.80146\\-47\\24.41406\\-80.06403\\-47\\26.36719\\-79.05556\\-47\\32.22656\\-76.88541\\-47\\34.17969\\-76.38366\\-47\\38.08594\\-75.74609\\-47\\41.99219\\-74.72974\\-47\\45.89844\\-74.39868\\-47\\49.80469\\-74.23905\\-47\\51.75781\\-74.04389\\-47\\55.66406\\-73.98553\\-47\\57.61719\\-73.29706\\-47\\59.57031\\-73.83397\\-47\\63.47656\\-74.08723\\-47\\65.42969\\-74.28125\\-47\\73.24219\\-74.618\\-47\\77.14844\\-74.99792\\-47\\79.10156\\-75.43059\\-47\\81.05469\\-75.76205\\-47\\88.86719\\-76.56196\\-47\\90.82031\\-77.00719\\-47\\92.77344\\-77.56544\\-47\\96.67969\\-78.35123\\-47\\98.63281\\-78.92834\\-47\\100.5859\\-79.61108\\-47\\104.4922\\-80.65248\\-47\\106.4453\\-81.59869\\-47\\108.3984\\-82.16089\\-47\\110.653\\-83.07031\\-47\\114.2578\\-84.81174\\-47\\116.2109\\-85.96449\\-47\\118.1641\\-86.83273\\-47\\122.0129\\-88.92969\\-47\\124.0234\\-90.21299\\-47\\127.9297\\-93.04858\\-47\\129.8828\\-94.3478\\-47\\131.8359\\-95.90054\\-47\\134.9224\\-98.69531\\-47\\139.6484\\-103.6825\\-47\\140.4001\\-104.5547\\-47\\141.8281\\-106.5078\\-47\\142.9478\\-108.4609\\-47\\144.1767\\-110.4141\\-47\\145.1546\\-112.3672\\-47\\145.5078\\-112.82\\-47\\147.6962\\-116.2734\\-47\\148.537\\-118.2266\\-47\\149.5469\\-120.1797\\-47\\151.2199\\-124.0859\\-47\\152.2113\\-126.0391\\-47\\153.9851\\-129.9453\\-47\\154.6203\\-131.8984\\-47\\155.5063\\-133.8516\\-47\\156.1044\\-135.8047\\-47\\156.5092\\-137.7578\\-47\\157.3073\\-139.7109\\-47\\157.9577\\-141.6641\\-47\\158.3932\\-143.6172\\-47\\159.7077\\-147.5234\\-47\\160.4576\\-151.4297\\-47\\161.4265\\-155.3359\\-47\\161.9555\\-159.2422\\-47\\162.5655\\-167.0547\\-47\\162.7698\\-169.0078\\-47\\163.3085\\-172.9141\\-47\\163.5164\\-174.8672\\-47\\163.7275\\-178.7734\\-47\\163.9252\\-186.5859\\-47\\163.9353\\-196.3516\\-47\\163.821\\-204.1641\\-47\\163.6882\\-208.0703\\-47\\163.4069\\-211.9766\\-47\\163.1995\\-213.9297\\-47\\162.6237\\-217.8359\\-47\\162.2532\\-221.7422\\-47\\161.7777\\-225.6484\\-47\\161.3787\\-227.6016\\-47\\160.6572\\-229.5547\\-47\\159.6144\\-233.4609\\-47\\158.6345\\-235.4141\\-47\\158.0067\\-237.3672\\-47\\157.0805\\-239.3203\\-47\\155.6396\\-243.2266\\-47\\154.5516\\-245.1797\\-47\\153.7019\\-247.1328\\-47\\151.3672\\-250.6359\\-47\\151.0392\\-251.0391\\-47\\150.0116\\-252.9922\\-47\\147.4609\\-256.5207\\-47\\143.5547\\-261.3843\\-47\\140.5679\\-264.7109\\-47\\137.6953\\-267.6406\\-47\\134.6354\\-270.5703\\-47\\133.7891\\-271.2464\\-47\\131.8359\\-273.1413\\-47\\129.8828\\-274.8983\\-47\\125.9766\\-277.7513\\-47\\122.0703\\-280.9405\\-47\\120.1172\\-282.0983\\-47\\118.1641\\-283.372\\-47\\116.2109\\-284.7558\\-47\\110.3516\\-288.2823\\-47\\108.3984\\-289.1614\\-47\\102.5391\\-292.0159\\-47\\100.5859\\-292.9279\\-47\\98.63281\\-293.6031\\-47\\96.67969\\-294.4529\\-47\\94.72656\\-294.9484\\-47\\92.77344\\-295.3418\\-47\\90.82031\\-295.8594\\-47\\88.86719\\-296.493\\-47\\86.91406\\-296.8319\\-47\\83.00781\\-297.34\\-47\\79.10156\\-298.1011\\-47\\77.14844\\-298.367\\-47\\75.19531\\-298.5277\\-47\\71.28906\\-298.6275\\-47\\67.38281\\-298.5384\\-47\\65.42969\\-298.376\\-47\\63.47656\\-298.0361\\-47\\59.57031\\-297.1776\\-47\\55.66406\\-296.511\\-47\\53.71094\\-295.7731\\-47\\51.75781\\-295.1906\\-47\\49.80469\\-294.7493\\-47\\43.94531\\-292.2303\\-47\\41.99219\\-291.1804\\-47\\40.03906\\-290.4314\\-47\\38.08594\\-289.3584\\-47\\36.13281\\-288.6606\\-47\\34.17969\\-287.411\\-47\\32.22656\\-286.7825\\-47\\30.27344\\-285.571\\-47\\27.06262\\-284.2422\\-47\\26.36719\\-283.8945\\-47\\24.41406\\-283.4935\\-47\\20.50781\\-283.3443\\-47\\16.60156\\-283.3673\\-47\\4.882813\\-284.2333\\-47\\2.929688\\-284.3167\\-47\\0.9765625\\-284.5201\\-47\\-2.929688\\-284.62\\-47\\-6.835938\\-284.6314\\-47\\-14.64844\\-284.4901\\-47\\-20.50781\\-284.419\\-47\\-24.41406\\-284.6152\\-47\\-26.36719\\-284.927\\-47\\-28.32031\\-285.4225\\-47\\-30.27344\\-286.4147\\-47\\-32.22656\\-287.1839\\-47\\-36.13281\\-288.9407\\-47\\-38.08594\\-289.5576\\-47\\-40.03906\\-290.7435\\-47\\-41.99219\\-291.5043\\-47\\-43.94531\\-292.6889\\-47\\-45.89844\\-293.4194\\-47\\-47.85156\\-294.4499\\-47\\-49.80469\\-294.9489\\-47\\-51.75781\\-295.6026\\-47\\-53.71094\\-296.5021\\-47\\-57.61719\\-297.3449\\-47\\-59.57031\\-297.9948\\-47\\-61.52344\\-298.5244\\-47\\-63.47656\\-298.8121\\-47\\-67.38281\\-299.2632\\-47\\-71.28906\\-299.5461\\-47\\-73.24219\\-299.6027\\-47\\-77.14844\\-299.4434\\-47\\-81.05469\\-299.1036\\-47\\-84.96094\\-298.6109\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "308"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "103"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.96094\\-298.439\\-45\\-88.86719\\-297.2687\\-45\\-92.77344\\-296.4299\\-45\\-94.72656\\-295.5337\\-45\\-98.63281\\-294.3586\\-45\\-100.5859\\-293.2809\\-45\\-102.5391\\-292.4264\\-45\\-104.4922\\-291.1436\\-45\\-108.3984\\-289.0587\\-45\\-112.3047\\-286.8444\\-45\\-116.2109\\-284.0469\\-45\\-118.1641\\-282.9069\\-45\\-121.6446\\-280.3359\\-45\\-124.0234\\-278.3083\\-45\\-127.9297\\-275.219\\-45\\-129.8828\\-273.3922\\-45\\-130.6702\\-272.5234\\-45\\-134.7587\\-268.6172\\-45\\-135.7422\\-267.5904\\-45\\-139.6484\\-263.1323\\-45\\-141.6016\\-260.7549\\-45\\-142.8287\\-258.8516\\-45\\-145.7802\\-254.9453\\-45\\-147.0018\\-252.9922\\-45\\-148.3215\\-251.0391\\-45\\-149.4141\\-249.0523\\-45\\-150.3683\\-247.1328\\-45\\-151.5336\\-245.1797\\-45\\-152.5018\\-243.2266\\-45\\-153.6631\\-241.2734\\-45\\-154.4372\\-239.3203\\-45\\-155.3601\\-237.3672\\-45\\-156.1302\\-235.4141\\-45\\-156.6147\\-233.4609\\-45\\-157.6381\\-231.5078\\-45\\-158.2489\\-229.5547\\-45\\-158.9886\\-227.6016\\-45\\-159.8433\\-225.6484\\-45\\-160.3308\\-223.6953\\-45\\-161.6371\\-219.7891\\-45\\-162.0081\\-217.8359\\-45\\-162.6206\\-213.9297\\-45\\-163.2425\\-211.9766\\-45\\-163.7042\\-210.0234\\-45\\-164.452\\-204.1641\\-45\\-164.7727\\-202.2109\\-45\\-165.2261\\-200.2578\\-45\\-165.7092\\-196.3516\\-45\\-165.9655\\-192.4453\\-45\\-166.1486\\-188.5391\\-45\\-166.2439\\-184.6328\\-45\\-166.2638\\-180.7266\\-45\\-166.1123\\-174.8672\\-45\\-165.921\\-170.9609\\-45\\-165.638\\-167.0547\\-45\\-165.426\\-165.1016\\-45\\-164.6343\\-161.1953\\-45\\-164.3273\\-159.2422\\-45\\-163.8184\\-155.3359\\-45\\-163.4069\\-153.3828\\-45\\-162.7417\\-151.4297\\-45\\-161.9828\\-147.5234\\-45\\-161.4722\\-145.5703\\-45\\-160.6477\\-143.6172\\-45\\-160.0388\\-141.6641\\-45\\-159.2323\\-139.7109\\-45\\-158.3029\\-137.7578\\-45\\-157.5731\\-135.8047\\-45\\-156.5192\\-133.8516\\-45\\-155.905\\-131.8984\\-45\\-154.8462\\-129.9453\\-45\\-154.1004\\-127.9922\\-45\\-152.9803\\-126.0391\\-45\\-152.024\\-124.0859\\-45\\-150.8082\\-122.1328\\-45\\-150.0105\\-120.1797\\-45\\-148.8321\\-118.2266\\-45\\-148.0614\\-116.2734\\-45\\-146.6809\\-114.3203\\-45\\-145.5917\\-112.3672\\-45\\-143.5547\\-109.1213\\-45\\-143.0486\\-108.4609\\-45\\-141.9493\\-106.5078\\-45\\-140.5291\\-104.5547\\-45\\-137.6953\\-101.1288\\-45\\-133.7801\\-96.74219\\-45\\-129.1101\\-92.83594\\-45\\-125.9766\\-90.5331\\-45\\-122.0703\\-88.19228\\-45\\-120.1172\\-87.38346\\-45\\-118.1641\\-86.29014\\-45\\-116.2109\\-85.0695\\-45\\-114.2578\\-84.1048\\-45\\-112.3047\\-83.80599\\-45\\-108.3984\\-82.20151\\-45\\-106.4453\\-81.78816\\-45\\-104.4922\\-80.8349\\-45\\-102.5391\\-80.45564\\-45\\-100.5859\\-80.22481\\-45\\-98.63281\\-79.51283\\-45\\-96.67969\\-79.02863\\-45\\-88.86719\\-77.69598\\-45\\-86.5009\\-77.21094\\-45\\-83.00781\\-76.6014\\-45\\-81.05469\\-76.37666\\-45\\-75.19531\\-76.08367\\-45\\-65.42969\\-76.04498\\-45\\-61.52344\\-76.07064\\-45\\-55.66406\\-76.21126\\-45\\-51.75781\\-76.35181\\-45\\-45.89844\\-76.84644\\-45\\-41.99219\\-77.39314\\-45\\-38.08594\\-77.87209\\-45\\-34.17969\\-78.43451\\-45\\-32.22656\\-78.87109\\-45\\-30.27344\\-79.51081\\-45\\-26.36719\\-80.4894\\-45\\-24.41406\\-81.35187\\-45\\-20.50781\\-82.8094\\-45\\-18.55469\\-83.97127\\-45\\-14.64844\\-86.49179\\-45\\-12.69531\\-88.06084\\-45\\-9.447675\\-90.88281\\-45\\-7.284841\\-92.83594\\-45\\-5.271709\\-94.78906\\-45\\-2.929688\\-96.95824\\-45\\-0.9765625\\-98.53372\\-45\\0.9765625\\-98.18498\\-45\\2.824768\\-96.74219\\-45\\4.882813\\-94.88412\\-45\\6.835938\\-92.98686\\-45\\8.708294\\-90.88281\\-45\\10.74219\\-88.92148\\-45\\15.14089\\-85.02344\\-45\\18.55469\\-82.54716\\-45\\20.50781\\-81.58739\\-45\\22.46094\\-80.4894\\-45\\24.41406\\-79.68442\\-45\\26.36719\\-78.69505\\-45\\32.22656\\-76.60059\\-45\\36.13281\\-75.86024\\-45\\40.03906\\-74.78817\\-45\\41.99219\\-74.5303\\-45\\47.85156\\-74.20568\\-45\\51.75781\\-73.11768\\-45\\55.66406\\-73.06896\\-45\\57.61719\\-72.87\\-45\\63.47656\\-73.26713\\-45\\65.42969\\-74.05338\\-45\\67.38281\\-74.2636\\-45\\73.24219\\-74.51103\\-45\\77.14844\\-74.78761\\-45\\79.10156\\-75.02757\\-45\\83.00781\\-75.83487\\-45\\88.86719\\-76.39515\\-45\\90.82031\\-76.77181\\-45\\92.77344\\-77.3515\\-45\\96.67969\\-78.1992\\-45\\98.63281\\-78.75188\\-45\\102.5391\\-79.99322\\-45\\104.4922\\-80.52359\\-45\\106.4453\\-81.40355\\-45\\110.3516\\-82.70941\\-45\\112.3047\\-83.76701\\-45\\114.2578\\-84.67692\\-45\\116.2109\\-85.86979\\-45\\118.1641\\-86.73785\\-45\\120.1172\\-87.86157\\-45\\122.0703\\-88.81155\\-45\\124.0234\\-90.11466\\-45\\125.9766\\-91.5603\\-45\\127.9297\\-92.82831\\-45\\129.8828\\-94.23404\\-45\\131.8359\\-95.79733\\-45\\134.9567\\-98.69531\\-45\\137.6953\\-101.625\\-45\\139.6484\\-103.8125\\-45\\141.66\\-106.5078\\-45\\142.78\\-108.4609\\-45\\144.043\\-110.4141\\-45\\144.9653\\-112.3672\\-45\\146.2995\\-114.3203\\-45\\147.4609\\-116.3847\\-45\\148.3704\\-118.2266\\-45\\149.2048\\-120.1797\\-45\\150.1749\\-122.1328\\-45\\150.8625\\-124.0859\\-45\\151.9686\\-126.0391\\-45\\152.7123\\-127.9922\\-45\\153.7352\\-129.9453\\-45\\154.3969\\-131.8984\\-45\\155.9181\\-135.8047\\-45\\156.3329\\-137.7578\\-45\\156.8823\\-139.7109\\-45\\157.7002\\-141.6641\\-45\\158.6275\\-145.5703\\-45\\159.3667\\-147.5234\\-45\\159.8809\\-149.4766\\-45\\160.5756\\-153.3828\\-45\\161.4898\\-157.2891\\-45\\161.7859\\-159.2422\\-45\\162.2702\\-165.1016\\-45\\162.5216\\-169.0078\\-45\\162.9145\\-172.9141\\-45\\163.2136\\-174.8672\\-45\\163.4961\\-178.7734\\-45\\163.6684\\-182.6797\\-45\\163.7684\\-186.5859\\-45\\163.821\\-192.4453\\-45\\163.7897\\-196.3516\\-45\\163.6431\\-204.1641\\-45\\163.4857\\-208.0703\\-45\\163.2957\\-210.0234\\-45\\162.6009\\-215.8828\\-45\\162.127\\-221.7422\\-45\\161.569\\-225.6484\\-45\\160.3933\\-229.5547\\-45\\159.9345\\-231.5078\\-45\\159.2319\\-233.4609\\-45\\158.3677\\-235.4141\\-45\\157.7919\\-237.3672\\-45\\156.735\\-239.3203\\-45\\156.1541\\-241.2734\\-45\\155.3141\\-243.2266\\-45\\153.3203\\-247.1218\\-45\\152.1403\\-249.0859\\-45\\150.714\\-251.0391\\-45\\149.7026\\-252.9922\\-45\\148.3398\\-254.9453\\-45\\145.0872\\-258.8516\\-45\\143.6406\\-260.8047\\-45\\141.9658\\-262.7578\\-45\\140.1367\\-264.7109\\-45\\137.6953\\-267.2106\\-45\\135.7422\\-269.1238\\-45\\129.742\\-274.4766\\-45\\124.7025\\-278.3828\\-45\\122.0703\\-280.5388\\-45\\120.1172\\-281.6617\\-45\\118.1641\\-283.0716\\-45\\114.2578\\-285.451\\-45\\112.3047\\-286.7996\\-45\\110.3516\\-287.7121\\-45\\108.3984\\-288.865\\-45\\106.4453\\-289.5352\\-45\\104.4922\\-290.7119\\-45\\102.5391\\-291.4413\\-45\\100.5859\\-292.5604\\-45\\98.63281\\-293.2013\\-45\\94.72656\\-294.6692\\-45\\90.82031\\-295.4265\\-45\\86.91406\\-296.5743\\-45\\79.10156\\-297.5753\\-45\\75.19531\\-298.1959\\-45\\73.24219\\-298.301\\-45\\69.33594\\-298.3488\\-45\\67.38281\\-298.2396\\-45\\59.57031\\-297.0002\\-45\\57.61719\\-296.527\\-45\\55.66406\\-295.9165\\-45\\53.71094\\-295.5552\\-45\\49.80469\\-294.6444\\-45\\47.85156\\-293.7916\\-45\\43.94531\\-292.2174\\-45\\41.99219\\-291.2256\\-45\\40.03906\\-290.5509\\-45\\38.08594\\-289.4652\\-45\\36.13281\\-288.8777\\-45\\34.17969\\-287.7981\\-45\\32.22656\\-287.0666\\-45\\28.32031\\-285.2655\\-45\\26.36719\\-284.8417\\-45\\24.41406\\-284.5724\\-45\\22.46094\\-284.4292\\-45\\18.55469\\-284.5993\\-45\\16.60156\\-284.4305\\-45\\14.64844\\-284.7768\\-45\\6.835938\\-285.3593\\-45\\0.9765625\\-285.6384\\-45\\-2.929688\\-285.707\\-45\\-6.835938\\-285.7188\\-45\\-10.74219\\-285.666\\-45\\-16.60156\\-285.537\\-45\\-22.46094\\-285.4594\\-45\\-24.41406\\-285.4845\\-45\\-26.36719\\-285.6558\\-45\\-28.2959\\-286.1953\\-45\\-32.22656\\-287.5258\\-45\\-34.17969\\-288.474\\-45\\-36.13281\\-288.9644\\-45\\-38.08594\\-289.6514\\-45\\-40.03906\\-290.8006\\-45\\-41.99219\\-291.5161\\-45\\-43.94531\\-292.6736\\-45\\-45.89844\\-293.3826\\-45\\-47.85156\\-294.3015\\-45\\-49.80469\\-294.6726\\-45\\-53.71094\\-296.3229\\-45\\-55.66406\\-296.8108\\-45\\-57.61719\\-297.1803\\-45\\-59.57031\\-297.6699\\-45\\-61.52344\\-298.3205\\-45\\-63.47656\\-298.654\\-45\\-67.38281\\-299.0724\\-45\\-69.33594\\-299.2216\\-45\\-73.24219\\-299.3554\\-45\\-77.14844\\-299.218\\-45\\-81.05469\\-298.9397\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "306"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "104"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.96094\\-298.1846\\-43\\-86.91406\\-297.5325\\-43\\-90.82031\\-296.752\\-43\\-92.77344\\-296.1607\\-43\\-94.72656\\-295.3203\\-43\\-96.67969\\-294.8388\\-43\\-98.63281\\-294.0621\\-43\\-102.4892\\-292.0547\\-43\\-104.4922\\-290.9394\\-43\\-106.4453\\-289.6821\\-43\\-108.3984\\-288.8934\\-43\\-110.3516\\-287.6236\\-43\\-112.3047\\-286.5873\\-43\\-112.7809\\-286.1953\\-43\\-115.6494\\-284.2422\\-43\\-116.2109\\-283.7609\\-43\\-118.1641\\-282.6696\\-43\\-120.1172\\-281.2882\\-43\\-124.0234\\-278.0324\\-43\\-127.9297\\-275.0555\\-43\\-129.8828\\-273.228\\-43\\-131.8359\\-271.257\\-43\\-134.6251\\-268.6172\\-43\\-136.4388\\-266.6641\\-43\\-139.6484\\-262.9419\\-43\\-141.6016\\-260.535\\-43\\-142.7493\\-258.8516\\-43\\-145.6026\\-254.9453\\-43\\-148.2212\\-251.0391\\-43\\-151.2806\\-245.1797\\-43\\-153.4819\\-241.2734\\-43\\-155.1285\\-237.3672\\-43\\-156.009\\-235.4141\\-43\\-156.4605\\-233.4609\\-43\\-157.4136\\-231.5078\\-43\\-158.7126\\-227.6016\\-43\\-159.641\\-225.6484\\-43\\-160.6924\\-221.7422\\-43\\-161.4285\\-219.7891\\-43\\-161.8622\\-217.8359\\-43\\-162.4122\\-213.9297\\-43\\-162.8454\\-211.9766\\-43\\-163.4404\\-210.0234\\-43\\-163.7967\\-208.0703\\-43\\-164.467\\-202.2109\\-43\\-165.1745\\-198.3047\\-43\\-165.4738\\-196.3516\\-43\\-165.7728\\-192.4453\\-43\\-165.9371\\-188.5391\\-43\\-166.0405\\-184.6328\\-43\\-166.0509\\-180.7266\\-43\\-165.9712\\-176.8203\\-43\\-165.8313\\-172.9141\\-43\\-165.5884\\-169.0078\\-43\\-165.0912\\-165.1016\\-43\\-164.668\\-163.1484\\-43\\-163.9058\\-157.2891\\-43\\-163.5866\\-155.3359\\-43\\-162.4796\\-151.4297\\-43\\-161.7942\\-147.5234\\-43\\-160.3639\\-143.6172\\-43\\-159.7802\\-141.6641\\-43\\-158.7904\\-139.7109\\-43\\-158.0585\\-137.7578\\-43\\-156.3099\\-133.8516\\-43\\-155.6396\\-131.8984\\-43\\-154.5954\\-129.9453\\-43\\-153.9112\\-127.9922\\-43\\-152.7158\\-126.0391\\-43\\-151.7488\\-124.0859\\-43\\-150.5503\\-122.1328\\-43\\-149.7659\\-120.1797\\-43\\-148.6574\\-118.2266\\-43\\-147.7841\\-116.2734\\-43\\-147.4609\\-115.8589\\-43\\-145.29\\-112.3672\\-43\\-143.5547\\-109.4375\\-43\\-142.8657\\-108.4609\\-43\\-141.7376\\-106.5078\\-43\\-140.384\\-104.5547\\-43\\-137.6953\\-101.2813\\-43\\-137.0915\\-100.6484\\-43\\-133.7891\\-96.8381\\-43\\-131.8359\\-95.10187\\-43\\-129.1167\\-92.83594\\-43\\-125.9766\\-90.51172\\-43\\-122.0703\\-88.13128\\-43\\-120.1172\\-87.28937\\-43\\-118.1641\\-86.25809\\-43\\-116.2109\\-85.05057\\-43\\-114.2578\\-84.14536\\-43\\-112.3047\\-83.79156\\-43\\-110.3516\\-82.89503\\-43\\-108.3984\\-82.14763\\-43\\-106.4453\\-81.69205\\-43\\-104.4922\\-80.63588\\-43\\-102.5391\\-80.36367\\-43\\-98.63281\\-79.46395\\-43\\-96.67969\\-78.95236\\-43\\-92.77344\\-78.20536\\-43\\-90.82031\\-77.89268\\-43\\-86.91406\\-77.00865\\-43\\-83.00781\\-76.40854\\-43\\-81.05469\\-76.25269\\-43\\-79.10156\\-76.21011\\-43\\-75.19531\\-75.99634\\-43\\-69.33594\\-75.90271\\-43\\-63.47656\\-75.85635\\-43\\-51.75781\\-76.17519\\-43\\-47.85156\\-76.36584\\-43\\-43.94531\\-76.70286\\-43\\-40.19326\\-77.21094\\-43\\-34.17969\\-78.14822\\-43\\-32.22656\\-78.52619\\-43\\-30.27344\\-79.00247\\-43\\-28.32031\\-79.6756\\-43\\-24.41406\\-80.84345\\-43\\-22.46094\\-81.80014\\-43\\-20.50781\\-82.40835\\-43\\-16.60156\\-84.67838\\-43\\-13.42989\\-86.97656\\-43\\-8.789063\\-90.77431\\-43\\-2.339377\\-96.74219\\-43\\-0.9765625\\-97.90536\\-43\\0.9765625\\-97.74681\\-43\\2.342224\\-96.74219\\-43\\4.451308\\-94.78906\\-43\\6.835938\\-92.47343\\-43\\8.283944\\-90.88281\\-43\\10.74219\\-88.42305\\-43\\14.64844\\-84.91493\\-43\\18.55469\\-82.21745\\-43\\20.62196\\-81.11719\\-43\\22.46094\\-80.28424\\-43\\24.59039\\-79.16406\\-43\\26.36719\\-78.38873\\-43\\30.27344\\-76.94273\\-43\\32.22656\\-76.35569\\-43\\36.13281\\-75.67921\\-43\\38.08594\\-74.86565\\-43\\40.03906\\-74.59106\\-43\\43.94531\\-74.31102\\-43\\47.94922\\-73.30469\\-43\\49.80469\\-72.94787\\-43\\51.75781\\-72.84272\\-43\\57.61719\\-72.81641\\-43\\63.47656\\-72.88874\\-43\\67.38281\\-73.41319\\-43\\69.33594\\-74.24616\\-43\\77.14844\\-74.65002\\-43\\81.05469\\-75.10057\\-43\\83.00781\\-75.71004\\-43\\86.91406\\-76.116\\-43\\88.86719\\-76.26379\\-43\\90.82031\\-76.56641\\-43\\94.72656\\-77.66412\\-43\\96.67969\\-78.05054\\-43\\100.4519\\-79.16406\\-43\\102.5391\\-79.93693\\-43\\104.4922\\-80.42749\\-43\\108.3984\\-81.96395\\-43\\110.3516\\-82.59213\\-43\\112.3047\\-83.65379\\-43\\114.2578\\-84.54382\\-43\\116.2109\\-85.78693\\-43\\118.1641\\-86.62828\\-43\\120.1172\\-87.79343\\-43\\122.0703\\-88.67987\\-43\\125.9766\\-91.465\\-43\\127.9297\\-92.7005\\-43\\129.8828\\-94.15395\\-43\\131.8359\\-95.72065\\-43\\134.94\\-98.69531\\-43\\138.5102\\-102.6016\\-43\\140.1054\\-104.5547\\-43\\141.6016\\-106.7883\\-43\\143.806\\-110.4141\\-43\\144.7873\\-112.3672\\-43\\146.1009\\-114.3203\\-43\\147.0744\\-116.2734\\-43\\148.2117\\-118.2266\\-43\\148.9223\\-120.1797\\-43\\149.9767\\-122.1328\\-43\\150.6037\\-124.0859\\-43\\151.6433\\-126.0391\\-43\\152.4442\\-127.9922\\-43\\153.3874\\-129.9453\\-43\\154.1969\\-131.8984\\-43\\154.7584\\-133.8516\\-43\\155.7098\\-135.8047\\-43\\156.561\\-139.7109\\-43\\157.3351\\-141.6641\\-43\\157.9307\\-143.6172\\-43\\158.3522\\-145.5703\\-43\\158.8787\\-147.5234\\-43\\159.6354\\-149.4766\\-43\\160.6633\\-155.3359\\-43\\161.5457\\-159.2422\\-43\\161.9792\\-163.1484\\-43\\162.127\\-165.1016\\-43\\162.6107\\-172.9141\\-43\\163.0014\\-176.8203\\-43\\163.4294\\-182.6797\\-43\\163.6047\\-188.5391\\-43\\163.6345\\-194.3984\\-43\\163.5264\\-200.2578\\-43\\163.3954\\-204.1641\\-43\\163.1557\\-208.0703\\-43\\162.9132\\-210.0234\\-43\\162.5562\\-213.9297\\-43\\162.1449\\-219.7891\\-43\\161.7076\\-223.6953\\-43\\161.2723\\-225.6484\\-43\\160.6912\\-227.6016\\-43\\159.7139\\-231.5078\\-43\\158.7978\\-233.4609\\-43\\157.4989\\-237.3672\\-43\\156.5016\\-239.3203\\-43\\155.9773\\-241.2734\\-43\\154.9624\\-243.2266\\-43\\154.1303\\-245.1797\\-43\\152.9123\\-247.1328\\-43\\151.8586\\-249.0859\\-43\\150.4833\\-251.0391\\-43\\148.0781\\-254.9453\\-43\\144.7178\\-258.8516\\-43\\143.5547\\-260.3484\\-43\\141.6016\\-262.6403\\-43\\139.6484\\-264.5857\\-43\\135.7422\\-268.6772\\-43\\131.8359\\-272.0214\\-43\\129.8828\\-273.837\\-43\\125.9766\\-277.0616\\-43\\124.1388\\-278.3828\\-43\\121.6175\\-280.3359\\-43\\118.1641\\-282.6869\\-43\\116.2109\\-283.6989\\-43\\115.5282\\-284.2422\\-43\\112.3047\\-286.3369\\-43\\110.3516\\-287.3226\\-43\\108.3984\\-288.5003\\-43\\106.4453\\-289.2288\\-43\\104.4922\\-290.2255\\-43\\98.63281\\-292.8478\\-43\\96.67969\\-293.4472\\-43\\94.72656\\-294.3035\\-43\\92.77344\\-294.8096\\-43\\88.86719\\-295.5444\\-43\\86.91406\\-296.1852\\-43\\84.96094\\-296.5862\\-43\\83.00781\\-296.8482\\-43\\79.10156\\-297.2205\\-43\\75.19531\\-297.6822\\-43\\73.24219\\-297.8598\\-43\\69.33594\\-297.9368\\-43\\59.57031\\-296.8492\\-43\\55.66406\\-295.3227\\-43\\53.71094\\-295.3801\\-43\\49.80469\\-294.5341\\-43\\47.85156\\-293.6604\\-43\\43.94531\\-292.2291\\-43\\41.99219\\-291.2603\\-43\\40.03906\\-290.6572\\-43\\38.08594\\-289.6003\\-43\\36.13281\\-289.0411\\-43\\34.17969\\-288.3225\\-43\\32.22656\\-287.3561\\-43\\30.27344\\-286.733\\-43\\28.32031\\-285.9758\\-43\\26.36719\\-285.5379\\-43\\22.46094\\-285.317\\-43\\18.55469\\-285.5555\\-43\\16.60156\\-285.5321\\-43\\14.64844\\-285.8281\\-43\\10.74219\\-286.218\\-43\\8.789063\\-286.4795\\-43\\4.882813\\-286.7311\\-43\\0.9765625\\-286.8919\\-43\\-2.929688\\-286.9622\\-43\\-6.835938\\-286.9831\\-43\\-16.60156\\-286.8396\\-43\\-24.41406\\-286.6698\\-43\\-26.36719\\-286.7131\\-43\\-28.32031\\-286.9609\\-43\\-30.27344\\-287.3387\\-43\\-32.22656\\-287.8875\\-43\\-34.17969\\-288.6509\\-43\\-36.13281\\-288.9449\\-43\\-38.08594\\-289.7912\\-43\\-40.03906\\-290.8692\\-43\\-41.99219\\-291.5398\\-43\\-43.94531\\-292.67\\-43\\-45.89844\\-293.3587\\-43\\-47.85156\\-294.1834\\-43\\-49.80469\\-294.5616\\-43\\-53.71094\\-296.1048\\-43\\-55.66406\\-296.6849\\-43\\-59.57031\\-297.4197\\-43\\-61.52344\\-298.0495\\-43\\-63.47656\\-298.4792\\-43\\-67.38281\\-298.9102\\-43\\-69.33594\\-299.0323\\-43\\-73.24219\\-299.1401\\-43\\-77.14844\\-299.0323\\-43\\-81.05469\\-298.7752\\-43\\-83.00781\\-298.5634\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "313"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "105"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-83.00781\\-298.3579\\-41\\-86.91406\\-297.3037\\-41\\-90.82031\\-296.5743\\-41\\-92.77344\\-295.802\\-41\\-94.72656\\-295.1736\\-41\\-96.67969\\-294.6692\\-41\\-98.63281\\-293.6755\\-41\\-100.5859\\-292.8224\\-41\\-102.5391\\-291.6214\\-41\\-104.4922\\-290.731\\-41\\-106.4453\\-289.4155\\-41\\-108.3984\\-288.6902\\-41\\-110.3516\\-287.3635\\-41\\-112.3047\\-286.2033\\-41\\-115.3164\\-284.2422\\-41\\-116.2109\\-283.5326\\-41\\-118.1641\\-282.3617\\-41\\-120.1172\\-281.0838\\-41\\-122.0703\\-279.4854\\-41\\-124.0234\\-277.7699\\-41\\-125.9766\\-276.2344\\-41\\-127.9297\\-274.8539\\-41\\-129.8828\\-273.0448\\-41\\-131.8359\\-271.0825\\-41\\-134.4712\\-268.6172\\-41\\-136.2893\\-266.6641\\-41\\-139.6484\\-262.715\\-41\\-141.6016\\-260.3077\\-41\\-144.1002\\-256.8984\\-41\\-148.1182\\-251.0391\\-41\\-149.0451\\-249.0859\\-41\\-150.1988\\-247.1328\\-41\\-151.0728\\-245.1797\\-41\\-152.2615\\-243.2266\\-41\\-154.2127\\-239.3203\\-41\\-154.955\\-237.3672\\-41\\-155.8878\\-235.4141\\-41\\-156.3656\\-233.4609\\-41\\-157.9654\\-229.5547\\-41\\-158.5195\\-227.6016\\-41\\-159.3914\\-225.6484\\-41\\-159.9866\\-223.6953\\-41\\-160.4532\\-221.7422\\-41\\-161.7025\\-217.8359\\-41\\-162.0447\\-215.8828\\-41\\-162.5621\\-211.9766\\-41\\-163.568\\-208.0703\\-41\\-163.8384\\-206.1172\\-41\\-164.2296\\-202.2109\\-41\\-164.7454\\-198.3047\\-41\\-165.1198\\-196.3516\\-41\\-165.5723\\-192.4453\\-41\\-165.8053\\-186.5859\\-41\\-165.8627\\-180.7266\\-41\\-165.7752\\-176.8203\\-41\\-165.6119\\-172.9141\\-41\\-165.3209\\-169.0078\\-41\\-164.3936\\-163.1484\\-41\\-163.7042\\-157.2891\\-41\\-163.2561\\-155.3359\\-41\\-162.6587\\-153.3828\\-41\\-162.0147\\-149.4766\\-41\\-161.5275\\-147.5234\\-41\\-160.7357\\-145.5703\\-41\\-159.4746\\-141.6641\\-41\\-158.4586\\-139.7109\\-41\\-157.8114\\-137.7578\\-41\\-156.7722\\-135.8047\\-41\\-156.1202\\-133.8516\\-41\\-154.3981\\-129.9453\\-41\\-153.6797\\-127.9922\\-41\\-152.4752\\-126.0391\\-41\\-150.3489\\-122.1328\\-41\\-148.4563\\-118.2266\\-41\\-146.3117\\-114.3203\\-41\\-145.0162\\-112.3672\\-41\\-143.9807\\-110.4141\\-41\\-142.6595\\-108.4609\\-41\\-141.6016\\-106.7052\\-41\\-140.1738\\-104.5547\\-41\\-137.6953\\-101.4688\\-41\\-135.2611\\-98.69531\\-41\\-133.7891\\-96.90785\\-41\\-131.8359\\-95.17217\\-41\\-129.0899\\-92.83594\\-41\\-125.9766\\-90.5331\\-41\\-122.0703\\-88.13664\\-41\\-120.1172\\-87.27411\\-41\\-118.1641\\-86.24934\\-41\\-116.2109\\-85.08558\\-41\\-114.2578\\-84.22856\\-41\\-112.3047\\-83.74938\\-41\\-110.3516\\-82.88314\\-41\\-108.3984\\-82.12032\\-41\\-106.4453\\-81.616\\-41\\-104.4922\\-80.595\\-41\\-102.5391\\-80.31123\\-41\\-100.5859\\-79.70413\\-41\\-98.63281\\-79.39063\\-41\\-94.72656\\-78.40382\\-41\\-90.82031\\-77.72871\\-41\\-88.86719\\-77.17338\\-41\\-84.96094\\-76.50245\\-41\\-81.05469\\-76.16335\\-41\\-79.10156\\-76.11455\\-41\\-75.19531\\-75.8736\\-41\\-71.28906\\-75.82047\\-41\\-65.42969\\-75.63874\\-41\\-63.47656\\-75.62231\\-41\\-61.52344\\-75.7263\\-41\\-51.75781\\-76.01869\\-41\\-47.85156\\-76.18079\\-41\\-43.94531\\-76.41863\\-41\\-40.03906\\-76.84052\\-41\\-38.08594\\-77.14384\\-41\\-32.22656\\-78.19866\\-41\\-30.27344\\-78.64362\\-41\\-26.36719\\-79.98292\\-41\\-24.41406\\-80.49399\\-41\\-20.50781\\-82.13155\\-41\\-18.6181\\-83.07031\\-41\\-16.60156\\-84.22388\\-41\\-12.69531\\-87.12093\\-41\\-10.74219\\-88.49818\\-41\\-8.789063\\-90.22062\\-41\\-6.835938\\-92.1123\\-41\\-2.929688\\-95.6427\\-41\\-0.9765625\\-97.19009\\-41\\0.9765625\\-97.30981\\-41\\2.929688\\-95.81877\\-41\\4.076408\\-94.78906\\-41\\6.835938\\-92.1404\\-41\\8.789063\\-90.04867\\-41\\10.74219\\-88.09164\\-41\\14.64844\\-84.51057\\-41\\16.71832\\-83.07031\\-41\\20.50781\\-80.75098\\-41\\22.46094\\-79.94661\\-41\\24.41406\\-78.91457\\-41\\26.36719\\-78.09818\\-41\\28.32031\\-77.41917\\-41\\30.27344\\-76.59654\\-41\\34.17969\\-75.84756\\-41\\36.13281\\-75.13153\\-41\\38.08594\\-74.64574\\-41\\41.99219\\-74.3355\\-41\\43.94531\\-74.06573\\-41\\45.89844\\-72.98988\\-41\\51.75781\\-72.77455\\-41\\61.52344\\-72.78273\\-41\\67.38281\\-72.91775\\-41\\68.84766\\-73.30469\\-41\\71.28906\\-74.25184\\-41\\77.14844\\-74.55653\\-41\\81.05469\\-74.94254\\-41\\83.00781\\-75.41803\\-41\\84.96094\\-75.77822\\-41\\90.82031\\-76.45139\\-41\\92.77344\\-76.92897\\-41\\94.72656\\-77.51825\\-41\\98.63281\\-78.47373\\-41\\100.5859\\-79.09748\\-41\\102.5391\\-79.86503\\-41\\104.4922\\-80.34686\\-41\\106.4453\\-81.04514\\-41\\108.3984\\-81.89969\\-41\\110.3516\\-82.49235\\-41\\112.3047\\-83.56486\\-41\\114.2578\\-84.39774\\-41\\116.2109\\-85.66822\\-41\\118.1641\\-86.51504\\-41\\120.1172\\-87.72729\\-41\\122.0703\\-88.52886\\-41\\125.9766\\-91.37109\\-41\\127.9297\\-92.62424\\-41\\131.8359\\-95.59608\\-41\\134.9432\\-98.69531\\-41\\137.6953\\-101.7679\\-41\\139.9421\\-104.5547\\-41\\142.4689\\-108.4609\\-41\\144.5877\\-112.3672\\-41\\145.8443\\-114.3203\\-41\\146.8039\\-116.2734\\-41\\147.9848\\-118.2266\\-41\\148.6848\\-120.1797\\-41\\149.6857\\-122.1328\\-41\\150.3849\\-124.0859\\-41\\151.2199\\-126.0391\\-41\\152.2003\\-127.9922\\-41\\152.9499\\-129.9453\\-41\\153.961\\-131.8984\\-41\\154.5274\\-133.8516\\-41\\155.4243\\-135.8047\\-41\\156.0106\\-137.7578\\-41\\156.35\\-139.7109\\-41\\156.8483\\-141.6641\\-41\\157.6732\\-143.6172\\-41\\158.5342\\-147.5234\\-41\\159.2319\\-149.4766\\-41\\159.759\\-151.4297\\-41\\160.3812\\-155.3359\\-41\\160.7461\\-157.2891\\-41\\161.2154\\-159.2422\\-41\\161.5588\\-161.1953\\-41\\161.9858\\-165.1016\\-41\\162.4165\\-172.9141\\-41\\162.9282\\-180.7266\\-41\\163.2136\\-184.6328\\-41\\163.3336\\-188.5391\\-41\\163.3719\\-192.4453\\-41\\163.3459\\-196.3516\\-41\\163.2425\\-200.2578\\-41\\163.0466\\-204.1641\\-41\\162.495\\-211.9766\\-41\\162.2771\\-215.8828\\-41\\161.9962\\-219.7891\\-41\\161.794\\-221.7422\\-41\\161.4873\\-223.6953\\-41\\160.4141\\-227.6016\\-41\\159.9866\\-229.5547\\-41\\159.4035\\-231.5078\\-41\\158.4982\\-233.4609\\-41\\157.9564\\-235.4141\\-41\\157.0948\\-237.3672\\-41\\156.35\\-239.3203\\-41\\155.7685\\-241.2734\\-41\\154.6671\\-243.2266\\-41\\153.8844\\-245.1797\\-41\\152.5967\\-247.1328\\-41\\151.4902\\-249.0859\\-41\\150.2646\\-251.0391\\-41\\148.8627\\-252.9922\\-41\\147.7389\\-254.9453\\-41\\145.5078\\-257.5141\\-41\\143.5547\\-259.8571\\-41\\141.0404\\-262.7578\\-41\\139.6484\\-264.0442\\-41\\135.2379\\-268.6172\\-41\\131.8359\\-271.5352\\-41\\129.8828\\-273.4607\\-41\\127.9297\\-275.1479\\-41\\125.9766\\-276.6219\\-41\\124.0234\\-277.9294\\-41\\120.1172\\-281.0512\\-41\\118.1641\\-282.1263\\-41\\116.2109\\-283.3345\\-41\\114.2578\\-284.6687\\-41\\112.3047\\-285.7263\\-41\\110.3516\\-286.9754\\-41\\106.4453\\-288.9458\\-41\\104.4922\\-289.6336\\-41\\102.5391\\-290.7433\\-41\\100.5859\\-291.3906\\-41\\98.63281\\-292.4415\\-41\\94.72656\\-293.7415\\-41\\92.77344\\-294.4929\\-41\\90.82031\\-294.9245\\-41\\86.91406\\-295.6566\\-41\\84.96094\\-296.2122\\-41\\83.00781\\-296.61\\-41\\81.05469\\-296.8445\\-41\\77.14844\\-297.1641\\-41\\73.24219\\-297.4258\\-41\\71.28906\\-297.4793\\-41\\67.38281\\-297.3928\\-41\\63.47656\\-297.0778\\-41\\59.57031\\-296.6849\\-41\\57.61719\\-295.952\\-41\\55.66406\\-295.4554\\-41\\53.71094\\-295.2468\\-41\\51.75781\\-294.9015\\-41\\49.80469\\-294.4103\\-41\\47.85156\\-293.5349\\-41\\45.89844\\-292.9244\\-41\\43.94531\\-292.2033\\-41\\41.99219\\-291.2867\\-41\\40.03906\\-290.7544\\-41\\38.08594\\-289.769\\-41\\36.13281\\-289.1667\\-41\\34.17969\\-288.6635\\-41\\32.22656\\-287.7849\\-41\\30.27344\\-287.1837\\-41\\26.36719\\-286.5341\\-41\\24.41406\\-286.4163\\-41\\22.46094\\-286.4553\\-41\\10.74219\\-287.1719\\-41\\8.789063\\-287.3378\\-41\\4.882813\\-287.5501\\-41\\-0.9765625\\-287.8051\\-41\\-6.835938\\-287.9547\\-41\\-10.74219\\-287.8835\\-41\\-26.36719\\-287.4775\\-41\\-28.32031\\-287.597\\-41\\-30.27344\\-287.9424\\-41\\-32.22656\\-288.1393\\-41\\-34.17969\\-288.6288\\-41\\-36.13281\\-289.3191\\-41\\-40.03906\\-290.9438\\-41\\-41.99219\\-291.5969\\-41\\-43.94531\\-292.6587\\-41\\-45.89844\\-293.3168\\-41\\-47.85156\\-294.2003\\-41\\-49.80469\\-294.6218\\-41\\-53.71094\\-295.802\\-41\\-55.66406\\-296.5408\\-41\\-59.57031\\-297.2388\\-41\\-61.52344\\-297.6947\\-41\\-63.47656\\-298.2606\\-41\\-65.42969\\-298.553\\-41\\-69.33594\\-298.8564\\-41\\-73.24219\\-298.9554\\-41\\-77.14844\\-298.8665\\-41\\-81.05469\\-298.6037\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "321"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "106"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-83.00781\\-298.0757\\-39\\-84.96094\\-297.5066\\-39\\-88.86719\\-296.8108\\-39\\-90.82031\\-296.3448\\-39\\-92.77344\\-295.5232\\-39\\-96.67969\\-294.4529\\-39\\-98.63281\\-293.3745\\-39\\-100.5859\\-292.5744\\-39\\-102.5391\\-291.3265\\-39\\-104.4922\\-290.4404\\-39\\-106.4453\\-289.2395\\-39\\-108.3984\\-288.3944\\-39\\-112.3047\\-285.8274\\-39\\-114.2578\\-284.7097\\-39\\-118.1641\\-282.0111\\-39\\-120.1172\\-280.8598\\-39\\-122.0703\\-279.2734\\-39\\-124.0234\\-277.554\\-39\\-125.9766\\-275.9484\\-39\\-127.9297\\-274.5966\\-39\\-129.8828\\-272.7991\\-39\\-131.8359\\-270.8633\\-39\\-134.2995\\-268.6172\\-39\\-136.1047\\-266.6641\\-39\\-137.6701\\-264.7109\\-39\\-141.0407\\-260.8047\\-39\\-142.5529\\-258.8516\\-39\\-143.9495\\-256.8984\\-39\\-145.1823\\-254.9453\\-39\\-145.5078\\-254.5851\\-39\\-147.9883\\-251.0391\\-39\\-148.912\\-249.0859\\-39\\-150.1038\\-247.1328\\-39\\-150.9088\\-245.1797\\-39\\-152.1317\\-243.2266\\-39\\-154.0868\\-239.3203\\-39\\-154.7885\\-237.3672\\-39\\-155.7651\\-235.4141\\-39\\-156.8964\\-231.5078\\-39\\-157.8103\\-229.5547\\-39\\-158.3448\\-227.6016\\-39\\-159.8217\\-223.6953\\-39\\-160.2665\\-221.7422\\-39\\-160.8095\\-219.7891\\-39\\-161.4763\\-217.8359\\-39\\-161.8743\\-215.8828\\-39\\-162.384\\-211.9766\\-39\\-162.7077\\-210.0234\\-39\\-163.2146\\-208.0703\\-39\\-163.6169\\-206.1172\\-39\\-163.8597\\-204.1641\\-39\\-164.4323\\-198.3047\\-39\\-165.2261\\-192.4453\\-39\\-165.3959\\-190.4922\\-39\\-165.5804\\-186.5859\\-39\\-165.6567\\-182.6797\\-39\\-165.564\\-176.8203\\-39\\-165.332\\-172.9141\\-39\\-165.1476\\-170.9609\\-39\\-164.6071\\-167.0547\\-39\\-163.7684\\-159.2422\\-39\\-163.4069\\-157.2891\\-39\\-162.8183\\-155.3359\\-39\\-162.4122\\-153.3828\\-39\\-161.7776\\-149.4766\\-39\\-161.1866\\-147.5234\\-39\\-160.4221\\-145.5703\\-39\\-159.8687\\-143.6172\\-39\\-158.9715\\-141.6641\\-39\\-157.4892\\-137.7578\\-39\\-156.4851\\-135.8047\\-39\\-155.9092\\-133.8516\\-39\\-154.9099\\-131.8984\\-39\\-154.2076\\-129.9453\\-39\\-153.3203\\-127.9818\\-39\\-151.3672\\-124.5742\\-39\\-151.0272\\-124.0859\\-39\\-150.148\\-122.1328\\-39\\-149.091\\-120.1797\\-39\\-148.2737\\-118.2266\\-39\\-147.0414\\-116.2734\\-39\\-146.1014\\-114.3203\\-39\\-144.7132\\-112.3672\\-39\\-143.7396\\-110.4141\\-39\\-141.6016\\-107.0701\\-39\\-139.9065\\-104.5547\\-39\\-137.6953\\-101.6875\\-39\\-133.5112\\-96.74219\\-39\\-129.0376\\-92.83594\\-39\\-127.9297\\-91.95113\\-39\\-125.9766\\-90.56627\\-39\\-122.0703\\-88.14975\\-39\\-120.1172\\-87.24783\\-39\\-115.9882\\-85.02344\\-39\\-112.3047\\-83.72356\\-39\\-108.3984\\-82.08064\\-39\\-106.4453\\-81.62279\\-39\\-104.4922\\-80.61866\\-39\\-102.5391\\-80.29757\\-39\\-100.5859\\-79.59034\\-39\\-98.63281\\-79.27074\\-39\\-94.72656\\-78.32067\\-39\\-92.77344\\-78.04043\\-39\\-90.82031\\-77.63524\\-39\\-88.86719\\-77.03655\\-39\\-86.91406\\-76.59806\\-39\\-84.96094\\-76.3961\\-39\\-81.05469\\-76.1226\\-39\\-77.14844\\-75.92337\\-39\\-75.19531\\-75.74937\\-39\\-73.24219\\-75.69862\\-39\\-69.33594\\-75.43329\\-39\\-67.38281\\-75.40508\\-39\\-65.42969\\-75.21498\\-39\\-63.47656\\-75.23212\\-39\\-61.52344\\-75.43193\\-39\\-55.66406\\-75.73949\\-39\\-53.71094\\-75.77908\\-39\\-49.80469\\-75.99928\\-39\\-45.89844\\-76.12124\\-39\\-43.94531\\-76.23438\\-39\\-40.03906\\-76.57026\\-39\\-36.13281\\-77.08796\\-39\\-34.17969\\-77.56303\\-39\\-30.27344\\-78.36855\\-39\\-28.32031\\-78.90498\\-39\\-26.36719\\-79.68888\\-39\\-22.46094\\-80.86929\\-39\\-20.50781\\-81.86281\\-39\\-18.55469\\-82.65279\\-39\\-14.79492\\-85.02344\\-39\\-12.69531\\-86.51323\\-39\\-10.74219\\-88.06394\\-39\\-8.789063\\-89.80789\\-39\\-6.835938\\-91.75475\\-39\\-4.882813\\-93.43519\\-39\\-2.929688\\-95.00879\\-39\\-0.9765625\\-96.32366\\-39\\0.9765625\\-96.65955\\-39\\2.929688\\-95.53152\\-39\\4.882813\\-93.8323\\-39\\6.248191\\-92.83594\\-39\\6.835938\\-92.2427\\-39\\7.780793\\-90.88281\\-39\\10.74219\\-87.87231\\-39\\14.64844\\-84.22443\\-39\\16.60156\\-82.73529\\-39\\18.55469\\-81.67819\\-39\\20.50781\\-80.51573\\-39\\22.46094\\-79.67986\\-39\\24.41406\\-78.657\\-39\\28.32031\\-77.08887\\-39\\30.27344\\-76.39407\\-39\\34.17969\\-75.59041\\-39\\36.13281\\-74.82963\\-39\\38.08594\\-74.52701\\-39\\41.99219\\-74.24616\\-39\\44.30213\\-73.30469\\-39\\45.89844\\-72.81641\\-39\\51.75781\\-72.73502\\-39\\61.52344\\-72.74275\\-39\\67.38281\\-72.84272\\-39\\69.33594\\-73.03416\\-39\\71.28906\\-74.03377\\-39\\73.24219\\-74.26955\\-39\\79.10156\\-74.59138\\-39\\81.05469\\-74.79868\\-39\\83.00781\\-75.13261\\-39\\84.96094\\-75.65793\\-39\\88.86719\\-76.17659\\-39\\90.82031\\-76.3695\\-39\\92.77344\\-76.75255\\-39\\94.72656\\-77.35045\\-39\\98.63281\\-78.35026\\-39\\100.5859\\-78.97706\\-39\\102.5391\\-79.78832\\-39\\106.4453\\-80.91279\\-39\\108.3984\\-81.86213\\-39\\110.3516\\-82.43456\\-39\\112.3047\\-83.48792\\-39\\114.2578\\-84.33926\\-39\\116.2109\\-85.57682\\-39\\118.1641\\-86.44568\\-39\\120.1172\\-87.61261\\-39\\122.0703\\-88.4131\\-39\\122.6957\\-88.92969\\-39\\125.9766\\-91.28017\\-39\\127.9297\\-92.57685\\-39\\131.8359\\-95.46624\\-39\\133.191\\-96.74219\\-39\\134.9958\\-98.69531\\-39\\137.6953\\-101.9312\\-39\\139.6719\\-104.5547\\-39\\142.3029\\-108.4609\\-39\\143.2028\\-110.4141\\-39\\143.5547\\-110.8974\\-39\\145.5155\\-114.3203\\-39\\147.6835\\-118.2266\\-39\\149.3109\\-122.1328\\-39\\150.2131\\-124.0859\\-39\\150.8557\\-126.0391\\-39\\151.9294\\-127.9922\\-39\\152.6593\\-129.9453\\-39\\153.6549\\-131.8984\\-39\\154.9746\\-135.8047\\-39\\155.7856\\-137.7578\\-39\\156.5376\\-141.6641\\-39\\157.897\\-145.5703\\-39\\158.7656\\-149.4766\\-39\\159.4388\\-151.4297\\-39\\159.878\\-153.3828\\-39\\160.4572\\-157.2891\\-39\\161.2576\\-161.1953\\-39\\161.592\\-163.1484\\-39\\161.9555\\-167.0547\\-39\\162.1868\\-170.9609\\-39\\162.8327\\-184.6328\\-39\\162.9572\\-188.5391\\-39\\163.0007\\-192.4453\\-39\\162.9715\\-196.3516\\-39\\162.873\\-200.2578\\-39\\162.6206\\-206.1172\\-39\\162.2514\\-213.9297\\-39\\161.9843\\-217.8359\\-39\\161.5588\\-221.7422\\-39\\160.5963\\-225.6484\\-39\\159.77\\-229.5547\\-39\\158.965\\-231.5078\\-39\\158.2585\\-233.4609\\-39\\157.7002\\-235.4141\\-39\\156.7317\\-237.3672\\-39\\156.1726\\-239.3203\\-39\\155.4627\\-241.2734\\-39\\154.4355\\-243.2266\\-39\\153.5301\\-245.1797\\-39\\151.3672\\-248.6469\\-39\\151.0127\\-249.0859\\-39\\149.9865\\-251.0391\\-39\\147.4609\\-254.6597\\-39\\145.6889\\-256.8984\\-39\\142.4187\\-260.8047\\-39\\140.6181\\-262.7578\\-39\\139.6484\\-263.6293\\-39\\134.7656\\-268.6172\\-39\\131.8359\\-271.2022\\-39\\129.8828\\-273.062\\-39\\127.9297\\-274.7323\\-39\\125.9766\\-276.0204\\-39\\124.0234\\-277.5155\\-39\\122.0703\\-279.1403\\-39\\120.1172\\-280.5978\\-39\\118.1641\\-281.7072\\-39\\116.2109\\-282.9848\\-39\\114.2578\\-284.0484\\-39\\110.8221\\-286.1953\\-39\\110.3516\\-286.5573\\-39\\108.3984\\-287.4655\\-39\\106.4453\\-288.5848\\-39\\104.4922\\-289.2724\\-39\\102.5391\\-290.2523\\-39\\98.63281\\-291.7786\\-39\\96.67969\\-292.7372\\-39\\94.72656\\-293.292\\-39\\90.82031\\-294.6609\\-39\\86.91406\\-295.3246\\-39\\84.96094\\-295.7059\\-39\\83.00781\\-296.2609\\-39\\81.05469\\-296.5904\\-39\\77.14844\\-296.9427\\-39\\73.24219\\-297.1533\\-39\\71.28906\\-297.1953\\-39\\67.38281\\-297.1403\\-39\\61.52344\\-296.7368\\-39\\59.57031\\-296.4713\\-39\\55.66406\\-295.4242\\-39\\51.75781\\-294.795\\-39\\49.80469\\-294.2779\\-39\\47.85156\\-293.4337\\-39\\45.89844\\-292.8779\\-39\\43.94531\\-292.1901\\-39\\41.99219\\-291.3354\\-39\\40.03906\\-290.8263\\-39\\36.13281\\-289.2907\\-39\\34.17969\\-288.9184\\-39\\32.22656\\-288.3795\\-39\\30.27344\\-287.7046\\-39\\28.32031\\-287.3387\\-39\\26.36719\\-287.1597\\-39\\24.41406\\-287.1476\\-39\\18.55469\\-287.3947\\-39\\14.64844\\-287.6885\\-39\\10.74219\\-288.0426\\-39\\8.789063\\-288.2845\\-39\\4.882813\\-288.5865\\-39\\0.9765625\\-288.6716\\-39\\-0.9765625\\-288.7883\\-39\\-4.882813\\-288.8677\\-39\\-8.789063\\-288.8677\\-39\\-14.64844\\-288.8061\\-39\\-22.46094\\-288.6613\\-39\\-26.36719\\-288.5435\\-39\\-28.32031\\-288.5752\\-39\\-32.22656\\-288.8556\\-39\\-34.17969\\-289.1317\\-39\\-36.13281\\-289.6713\\-39\\-38.08594\\-290.4227\\-39\\-41.99219\\-291.6966\\-39\\-43.94531\\-292.6781\\-39\\-45.89844\\-293.2656\\-39\\-47.85156\\-294.1463\\-39\\-49.80469\\-294.7402\\-39\\-53.71094\\-295.6052\\-39\\-55.66406\\-296.3556\\-39\\-57.61719\\-296.7881\\-39\\-61.52344\\-297.4289\\-39\\-65.42969\\-298.3579\\-39\\-67.38281\\-298.5599\\-39\\-71.28906\\-298.7838\\-39\\-75.19531\\-298.7721\\-39\\-79.10156\\-298.5905\\-39\\-81.05469\\-298.4109\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "327"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "107"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-298.1011\\-37\\-84.96094\\-297.2611\\-37\\-88.86719\\-296.6445\\-37\\-92.77344\\-295.3205\\-37\\-94.72656\\-294.8712\\-37\\-96.67969\\-294.1365\\-37\\-98.63281\\-293.1392\\-37\\-100.5859\\-292.2417\\-37\\-102.5391\\-291.0941\\-37\\-106.4453\\-289.0886\\-37\\-110.3516\\-286.9414\\-37\\-112.3047\\-285.5384\\-37\\-114.2578\\-284.4038\\-37\\-118.1641\\-281.7595\\-37\\-120.1172\\-280.5783\\-37\\-122.0703\\-279.0401\\-37\\-125.9766\\-275.7461\\-37\\-127.6618\\-274.4766\\-37\\-129.8239\\-272.5234\\-37\\-131.8449\\-270.5703\\-37\\-133.7891\\-268.9017\\-37\\-135.8794\\-266.6641\\-37\\-137.3849\\-264.7109\\-37\\-139.072\\-262.7578\\-37\\-140.8803\\-260.8047\\-37\\-142.4647\\-258.8516\\-37\\-145.0027\\-254.9453\\-37\\-145.5078\\-254.3731\\-37\\-147.8419\\-251.0391\\-37\\-148.7872\\-249.0859\\-37\\-149.9859\\-247.1328\\-37\\-150.76\\-245.1797\\-37\\-152.0048\\-243.2266\\-37\\-152.8799\\-241.2734\\-37\\-153.9502\\-239.3203\\-37\\-154.6161\\-237.3672\\-37\\-155.6085\\-235.4141\\-37\\-156.2032\\-233.4609\\-37\\-156.6749\\-231.5078\\-37\\-157.6233\\-229.5547\\-37\\-158.7629\\-225.6484\\-37\\-159.6263\\-223.6953\\-37\\-160.5457\\-219.7891\\-37\\-161.1862\\-217.8359\\-37\\-161.6989\\-215.8828\\-37\\-162.0094\\-213.9297\\-37\\-162.4577\\-210.0234\\-37\\-162.8079\\-208.0703\\-37\\-163.3212\\-206.1172\\-37\\-163.6516\\-204.1641\\-37\\-163.8787\\-202.2109\\-37\\-164.2087\\-198.3047\\-37\\-164.9699\\-190.4922\\-37\\-165.2982\\-186.5859\\-37\\-165.3752\\-182.6797\\-37\\-165.3209\\-178.7734\\-37\\-165.2385\\-176.8203\\-37\\-164.7289\\-170.9609\\-37\\-164.3175\\-167.0547\\-37\\-163.8143\\-161.1953\\-37\\-163.5164\\-159.2422\\-37\\-162.9697\\-157.2891\\-37\\-162.5216\\-155.3359\\-37\\-161.9416\\-151.4297\\-37\\-161.5167\\-149.4766\\-37\\-160.7759\\-147.5234\\-37\\-159.5938\\-143.6172\\-37\\-158.5891\\-141.6641\\-37\\-157.9765\\-139.7109\\-37\\-157.0087\\-137.7578\\-37\\-155.6512\\-133.8516\\-37\\-154.6374\\-131.8984\\-37\\-153.9898\\-129.9453\\-37\\-152.9339\\-127.9922\\-37\\-151.9783\\-126.0391\\-37\\-150.7399\\-124.0859\\-37\\-149.9485\\-122.1328\\-37\\-148.857\\-120.1797\\-37\\-148.0562\\-118.2266\\-37\\-146.7829\\-116.2734\\-37\\-145.8244\\-114.3203\\-37\\-144.5018\\-112.3672\\-37\\-142.3112\\-108.4609\\-37\\-139.6484\\-104.6192\\-37\\-137.6953\\-101.9312\\-37\\-133.7891\\-97.16787\\-37\\-131.8359\\-95.3648\\-37\\-128.9469\\-92.83594\\-37\\-125.9766\\-90.60085\\-37\\-122.0703\\-88.15768\\-37\\-120.1172\\-87.20681\\-37\\-115.9494\\-85.02344\\-37\\-114.2578\\-84.48522\\-37\\-112.3047\\-83.70606\\-37\\-110.3516\\-82.77892\\-37\\-108.3984\\-82.04132\\-37\\-106.4453\\-81.6264\\-37\\-104.4922\\-80.65314\\-37\\-102.5391\\-80.29086\\-37\\-100.5859\\-79.57484\\-37\\-98.63281\\-79.20652\\-37\\-94.72656\\-78.18099\\-37\\-92.77344\\-77.90417\\-37\\-90.82031\\-77.52483\\-37\\-86.91406\\-76.48186\\-37\\-84.96094\\-76.30151\\-37\\-77.14844\\-75.82961\\-37\\-75.19531\\-75.63605\\-37\\-73.24219\\-75.29816\\-37\\-69.33594\\-75.02757\\-37\\-65.42969\\-74.96875\\-37\\-61.52344\\-75\\-37\\-53.71094\\-75.39063\\-37\\-51.75781\\-75.72252\\-37\\-49.80469\\-75.84\\-37\\-45.89844\\-75.96749\\-37\\-41.99219\\-76.21098\\-37\\-38.08594\\-76.53345\\-37\\-36.13281\\-76.76172\\-37\\-34.17969\\-77.17338\\-37\\-28.32031\\-78.56264\\-37\\-26.36719\\-79.32554\\-37\\-22.46094\\-80.56009\\-37\\-20.50781\\-81.54398\\-37\\-18.55469\\-82.31862\\-37\\-16.60156\\-83.52786\\-37\\-14.64844\\-84.62007\\-37\\-12.69531\\-86.12885\\-37\\-9.343552\\-88.92969\\-37\\-4.882813\\-92.84489\\-37\\-0.9765625\\-95.76563\\-37\\0.9765625\\-96.11845\\-37\\2.929688\\-95.11701\\-37\\4.882813\\-93.92446\\-37\\6.240234\\-94.78906\\-37\\6.835938\\-95.36185\\-37\\7.768111\\-96.74219\\-37\\8.209229\\-98.69531\\-37\\8.310355\\-102.6016\\-37\\9.350586\\-104.5547\\-37\\10.74219\\-105.6754\\-37\\12.69531\\-105.6487\\-37\\14.64844\\-104.3634\\-37\\15.61945\\-102.6016\\-37\\15.55287\\-100.6484\\-37\\14.67226\\-98.69531\\-37\\12.41757\\-96.74219\\-37\\8.789063\\-93.44176\\-37\\7.960839\\-92.83594\\-37\\7.618481\\-90.88281\\-37\\9.413775\\-88.92969\\-37\\11.51316\\-86.97656\\-37\\14.64844\\-83.95387\\-37\\16.60156\\-82.41263\\-37\\18.55469\\-81.45972\\-37\\20.50781\\-80.28104\\-37\\22.46094\\-79.45042\\-37\\24.41406\\-78.46974\\-37\\26.36719\\-77.67942\\-37\\28.32031\\-76.79143\\-37\\30.27344\\-76.25224\\-37\\32.22656\\-75.87756\\-37\\34.17969\\-75.2146\\-37\\36.13281\\-74.68874\\-37\\38.08594\\-74.43053\\-37\\40.03906\\-74.29309\\-37\\42.06731\\-73.30469\\-37\\43.94531\\-72.86079\\-37\\45.89844\\-72.77455\\-37\\53.71094\\-72.67616\\-37\\61.52344\\-72.69763\\-37\\65.42969\\-72.74275\\-37\\69.33594\\-72.87\\-37\\71.28906\\-73.16925\\-37\\73.24219\\-74.10484\\-37\\75.19531\\-74.3172\\-37\\79.10156\\-74.49052\\-37\\83.00781\\-74.91179\\-37\\84.96094\\-75.48891\\-37\\86.91406\\-75.84872\\-37\\90.82031\\-76.29832\\-37\\92.77344\\-76.60547\\-37\\96.67969\\-77.75415\\-37\\98.63281\\-78.20494\\-37\\100.5859\\-78.87109\\-37\\102.5391\\-79.73213\\-37\\106.4453\\-80.84551\\-37\\108.3984\\-81.81205\\-37\\110.3516\\-82.38357\\-37\\112.3047\\-83.43323\\-37\\114.2578\\-84.29388\\-37\\116.2109\\-85.52811\\-37\\118.1641\\-86.39573\\-37\\120.1172\\-87.54124\\-37\\122.0703\\-88.37263\\-37\\125.9766\\-91.24476\\-37\\127.9297\\-92.47912\\-37\\131.8359\\-95.45225\\-37\\133.2645\\-96.74219\\-37\\135.026\\-98.69531\\-37\\138.0208\\-102.6016\\-37\\142.1336\\-108.4609\\-37\\142.9228\\-110.4141\\-37\\144.2119\\-112.3672\\-37\\145.1381\\-114.3203\\-37\\146.3487\\-116.2734\\-37\\148.2706\\-120.1797\\-37\\148.9996\\-122.1328\\-37\\150.0038\\-124.0859\\-37\\150.5896\\-126.0391\\-37\\151.6164\\-127.9922\\-37\\154.091\\-133.8516\\-37\\154.6287\\-135.8047\\-37\\155.4794\\-137.7578\\-37\\156.0059\\-139.7109\\-37\\156.7948\\-143.6172\\-37\\157.606\\-145.5703\\-37\\158.4565\\-149.4766\\-37\\158.9774\\-151.4297\\-37\\159.6354\\-153.3828\\-37\\160.5305\\-159.2422\\-37\\161.2992\\-163.1484\\-37\\161.7859\\-167.0547\\-37\\162.0564\\-170.9609\\-37\\162.4005\\-178.7734\\-37\\162.6541\\-188.5391\\-37\\162.6886\\-192.4453\\-37\\162.6438\\-198.3047\\-37\\162.4329\\-206.1172\\-37\\162.2172\\-211.9766\\-37\\161.9792\\-215.8828\\-37\\161.6018\\-219.7891\\-37\\161.2297\\-221.7422\\-37\\160.7357\\-223.6953\\-37\\159.97\\-227.6016\\-37\\159.4945\\-229.5547\\-37\\158.6042\\-231.5078\\-37\\158.0445\\-233.4609\\-37\\157.3752\\-235.4141\\-37\\156.5048\\-237.3672\\-37\\155.9854\\-239.3203\\-37\\154.2022\\-243.2266\\-37\\152.0091\\-247.1328\\-37\\150.6797\\-249.0859\\-37\\149.6353\\-251.0391\\-37\\148.3629\\-252.9922\\-37\\145.1698\\-256.8984\\-37\\142.1044\\-260.8047\\-37\\140.2533\\-262.7578\\-37\\138.2082\\-264.7109\\-37\\135.7422\\-267.3175\\-37\\133.7891\\-269.1722\\-37\\132.0693\\-270.5703\\-37\\129.8828\\-272.532\\-37\\127.5866\\-274.4766\\-37\\125.9766\\-275.6523\\-37\\122.0703\\-278.6785\\-37\\118.1641\\-281.3313\\-37\\116.2109\\-282.5798\\-37\\114.2578\\-283.5383\\-37\\112.3047\\-284.8636\\-37\\110.3516\\-285.903\\-37\\108.3984\\-287.089\\-37\\104.4922\\-288.9757\\-37\\102.5391\\-289.6099\\-37\\100.5859\\-290.6637\\-37\\98.63281\\-291.3006\\-37\\96.67969\\-292.2679\\-37\\94.72656\\-292.9429\\-37\\92.77344\\-293.5012\\-37\\90.82031\\-294.3195\\-37\\88.86719\\-294.7879\\-37\\84.96094\\-295.3585\\-37\\83.00781\\-295.7186\\-37\\81.05469\\-296.2122\\-37\\79.10156\\-296.5286\\-37\\77.14844\\-296.7345\\-37\\73.24219\\-296.9324\\-37\\67.38281\\-296.9273\\-37\\63.47656\\-296.7235\\-37\\61.52344\\-296.5286\\-37\\59.57031\\-296.1607\\-37\\57.61719\\-295.6448\\-37\\53.71094\\-294.9346\\-37\\51.75781\\-294.669\\-37\\49.80469\\-294.0898\\-37\\47.85156\\-293.3248\\-37\\45.89844\\-292.8308\\-37\\43.94531\\-292.1768\\-37\\41.99219\\-291.3587\\-37\\40.03906\\-290.9037\\-37\\38.08594\\-290.2913\\-37\\36.13281\\-289.4773\\-37\\32.22656\\-288.7799\\-37\\28.32031\\-288.0012\\-37\\26.36719\\-287.8134\\-37\\24.41406\\-287.8017\\-37\\14.64844\\-288.6297\\-37\\10.74219\\-288.8792\\-37\\4.882813\\-289.1813\\-37\\2.929688\\-289.2314\\-37\\0.9765625\\-289.1443\\-37\\-0.9765625\\-289.3907\\-37\\-4.882813\\-289.4929\\-37\\-8.789063\\-289.5022\\-37\\-14.64844\\-289.4351\\-37\\-20.50781\\-289.3037\\-37\\-28.32031\\-289.1987\\-37\\-32.22656\\-289.3116\\-37\\-34.17969\\-289.5732\\-37\\-38.08594\\-290.7472\\-37\\-40.03906\\-291.1906\\-37\\-41.99219\\-291.848\\-37\\-43.94531\\-292.7147\\-37\\-45.89844\\-293.2299\\-37\\-47.85156\\-294.0457\\-37\\-49.80469\\-294.7054\\-37\\-53.71094\\-295.4563\\-37\\-55.66406\\-296.1175\\-37\\-57.61719\\-296.6445\\-37\\-61.52344\\-297.2244\\-37\\-63.47656\\-297.5885\\-37\\-65.42969\\-298.0757\\-37\\-67.38281\\-298.376\\-37\\-71.28906\\-298.6073\\-37\\-75.19531\\-298.6102\\-37\\-79.10156\\-298.3849\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "321"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "108"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-79.10156\\-298.0757\\-35\\-81.05469\\-297.642\\-35\\-86.91406\\-296.818\\-35\\-88.86719\\-296.4201\\-35\\-90.82031\\-295.6425\\-35\\-94.72656\\-294.6568\\-35\\-96.67969\\-293.7377\\-35\\-98.63281\\-292.921\\-35\\-100.5859\\-291.7766\\-35\\-102.5391\\-290.8924\\-35\\-104.4922\\-289.6761\\-35\\-106.4453\\-288.9135\\-35\\-108.3984\\-287.6805\\-35\\-110.3516\\-286.7192\\-35\\-111.0053\\-286.1953\\-35\\-114.2578\\-283.9684\\-35\\-116.2109\\-282.9034\\-35\\-119.9544\\-280.3359\\-35\\-122.0703\\-278.7853\\-35\\-127.3548\\-274.4766\\-35\\-129.4728\\-272.5234\\-35\\-131.8359\\-270.2448\\-35\\-133.7891\\-268.5754\\-35\\-135.7422\\-266.4793\\-35\\-137.0959\\-264.7109\\-35\\-140.7439\\-260.8047\\-35\\-142.3404\\-258.8516\\-35\\-144.8632\\-254.9453\\-35\\-146.363\\-252.9922\\-35\\-147.6755\\-251.0391\\-35\\-148.6391\\-249.0859\\-35\\-149.8336\\-247.1328\\-35\\-150.6257\\-245.1797\\-35\\-151.8585\\-243.2266\\-35\\-152.6908\\-241.2734\\-35\\-153.8086\\-239.3203\\-35\\-154.4766\\-237.3672\\-35\\-155.3897\\-235.4141\\-35\\-156.1062\\-233.4609\\-35\\-156.5256\\-231.5078\\-35\\-157.362\\-229.5547\\-35\\-158.0363\\-227.6016\\-35\\-158.5414\\-225.6484\\-35\\-159.3541\\-223.6953\\-35\\-159.907\\-221.7422\\-35\\-160.8297\\-217.8359\\-35\\-161.4873\\-215.8828\\-35\\-161.8381\\-213.9297\\-35\\-162.5252\\-208.0703\\-35\\-163.3699\\-204.1641\\-35\\-163.6801\\-202.2109\\-35\\-164.1865\\-196.3516\\-35\\-164.8353\\-186.5859\\-35\\-164.9429\\-182.6797\\-35\\-164.8883\\-178.7734\\-35\\-164.4238\\-170.9609\\-35\\-163.8143\\-163.1484\\-35\\-163.5489\\-161.1953\\-35\\-162.6075\\-157.2891\\-35\\-162.0739\\-153.3828\\-35\\-161.74\\-151.4297\\-35\\-161.1559\\-149.4766\\-35\\-160.4411\\-147.5234\\-35\\-159.9255\\-145.5703\\-35\\-158.3134\\-141.6641\\-35\\-157.6941\\-139.7109\\-35\\-156.633\\-137.7578\\-35\\-156.1166\\-135.8047\\-35\\-155.298\\-133.8516\\-35\\-154.3818\\-131.8984\\-35\\-153.6969\\-129.9453\\-35\\-152.6062\\-127.9922\\-35\\-151.6811\\-126.0391\\-35\\-150.4369\\-124.0859\\-35\\-149.6878\\-122.1328\\-35\\-148.6087\\-120.1797\\-35\\-147.7286\\-118.2266\\-35\\-146.5428\\-116.2734\\-35\\-144.3224\\-112.3672\\-35\\-143.0325\\-110.4141\\-35\\-142.1274\\-108.4609\\-35\\-139.2865\\-104.5547\\-35\\-137.9428\\-102.6016\\-35\\-134.9273\\-98.69531\\-35\\-133.7891\\-97.33135\\-35\\-131.8359\\-95.46683\\-35\\-128.8152\\-92.83594\\-35\\-125.9766\\-90.6875\\-35\\-122.0703\\-88.17386\\-35\\-115.8447\\-85.02344\\-35\\-114.2578\\-84.50976\\-35\\-110.3516\\-82.70891\\-35\\-108.3984\\-82.02116\\-35\\-106.4453\\-81.63006\\-35\\-104.4922\\-80.68552\\-35\\-102.5391\\-80.29086\\-35\\-100.5859\\-79.64471\\-35\\-96.67969\\-78.61011\\-35\\-94.72656\\-77.98263\\-35\\-90.82031\\-77.3125\\-35\\-86.91406\\-76.38959\\-35\\-77.14844\\-75.71934\\-35\\-75.19531\\-75.18204\\-35\\-73.24219\\-74.95554\\-35\\-65.42969\\-74.80209\\-35\\-61.52344\\-74.79108\\-35\\-55.66406\\-74.97105\\-35\\-53.71094\\-74.95067\\-35\\-49.80469\\-75.64707\\-35\\-47.85156\\-75.77559\\-35\\-43.94531\\-75.93069\\-35\\-40.03906\\-76.18268\\-35\\-36.13281\\-76.53766\\-35\\-34.17969\\-76.82163\\-35\\-28.32031\\-78.31026\\-35\\-26.36719\\-78.95236\\-35\\-24.41406\\-79.75651\\-35\\-22.46094\\-80.35369\\-35\\-18.55469\\-82.09375\\-35\\-14.64844\\-84.2797\\-35\\-12.69531\\-85.84056\\-35\\-10.74219\\-87.54564\\-35\\-8.789063\\-88.90421\\-35\\-6.835938\\-90.45284\\-35\\-4.882813\\-92.3064\\-35\\-2.929688\\-93.88226\\-35\\-0.9765625\\-95.16528\\-35\\0.9765625\\-95.73975\\-35\\2.929688\\-94.57813\\-35\\4.882813\\-93.73689\\-35\\6.177145\\-94.78906\\-35\\6.835938\\-95.52364\\-35\\7.665427\\-96.74219\\-35\\8.215616\\-98.69531\\-35\\8.195466\\-100.6484\\-35\\7.8125\\-102.6016\\-35\\8.375\\-104.5547\\-35\\8.789063\\-105.0048\\-35\\10.74219\\-106.2934\\-35\\12.69531\\-106.062\\-35\\14.51994\\-104.5547\\-35\\15.44009\\-102.6016\\-35\\15.45367\\-100.6484\\-35\\14.62296\\-98.69531\\-35\\12.69531\\-96.71375\\-35\\11.18201\\-94.78906\\-35\\7.521609\\-90.88281\\-35\\9.190286\\-88.92969\\-35\\14.64844\\-83.7417\\-35\\16.60156\\-82.19456\\-35\\18.55469\\-81.09236\\-35\\24.41406\\-78.1814\\-35\\26.36719\\-77.44965\\-35\\28.32031\\-76.57489\\-35\\32.22656\\-75.63017\\-35\\34.17969\\-74.87173\\-35\\36.13281\\-74.54818\\-35\\40.03906\\-74.15841\\-35\\41.99219\\-72.89829\\-35\\43.94531\\-72.74275\\-35\\47.85156\\-72.62606\\-35\\49.80469\\-72.65191\\-35\\51.75781\\-72.3691\\-35\\55.66406\\-72.59789\\-35\\57.61719\\-72.65535\\-35\\63.47656\\-72.67616\\-35\\67.38281\\-72.75057\\-35\\71.28906\\-72.90796\\-35\\73.24219\\-73.92035\\-35\\75.19531\\-74.25786\\-35\\79.10156\\-74.44297\\-35\\83.00781\\-74.80991\\-35\\84.96094\\-75.38957\\-35\\86.91406\\-75.80595\\-35\\92.77344\\-76.5205\\-35\\96.67969\\-77.69922\\-35\\98.63281\\-78.14681\\-35\\100.5859\\-78.82797\\-35\\102.5391\\-79.7066\\-35\\106.4453\\-80.80842\\-35\\108.3984\\-81.77873\\-35\\110.3516\\-82.35171\\-35\\112.3047\\-83.38686\\-35\\114.2578\\-84.25246\\-35\\116.2109\\-85.51832\\-35\\118.1641\\-86.3523\\-35\\120.1172\\-87.54677\\-35\\122.0703\\-88.34375\\-35\\125.9766\\-91.21302\\-35\\128.6669\\-92.83594\\-35\\129.8828\\-93.75463\\-35\\131.8359\\-95.43756\\-35\\133.7891\\-97.34126\\-35\\134.9915\\-98.69531\\-35\\137.8439\\-102.6016\\-35\\139.1314\\-104.5547\\-35\\140.5956\\-106.5078\\-35\\141.9271\\-108.4609\\-35\\142.7624\\-110.4141\\-35\\143.9386\\-112.3672\\-35\\144.8025\\-114.3203\\-35\\146.104\\-116.2734\\-35\\146.9322\\-118.2266\\-35\\148.0456\\-120.1797\\-35\\148.7311\\-122.1328\\-35\\149.6983\\-124.0859\\-35\\150.4025\\-126.0391\\-35\\151.207\\-127.9922\\-35\\152.2132\\-129.9453\\-35\\152.8971\\-131.8984\\-35\\153.8847\\-133.8516\\-35\\155.0058\\-137.7578\\-35\\155.7549\\-139.7109\\-35\\156.2032\\-141.6641\\-35\\156.5222\\-143.6172\\-35\\157.8475\\-147.5234\\-35\\158.6143\\-151.4297\\-35\\159.2463\\-153.3828\\-35\\159.7448\\-155.3359\\-35\\160.2875\\-159.2422\\-35\\160.9043\\-163.1484\\-35\\161.3123\\-165.1016\\-35\\161.586\\-167.0547\\-35\\161.927\\-170.9609\\-35\\162.2652\\-178.7734\\-35\\162.4005\\-184.6328\\-35\\162.4656\\-190.4922\\-35\\162.4533\\-196.3516\\-35\\162.4005\\-202.2109\\-35\\162.2463\\-208.0703\\-35\\162.08\\-211.9766\\-35\\161.814\\-215.8828\\-35\\161.3253\\-219.7891\\-35\\160.8276\\-221.7422\\-35\\160.4385\\-223.6953\\-35\\159.7602\\-227.6016\\-35\\158.3538\\-231.5078\\-35\\157.8547\\-233.4609\\-35\\156.9589\\-235.4141\\-35\\155.7651\\-239.3203\\-35\\154.739\\-241.2734\\-35\\153.9612\\-243.2266\\-35\\152.7491\\-245.1797\\-35\\151.7263\\-247.1328\\-35\\149.1623\\-251.0391\\-35\\148.0841\\-252.9922\\-35\\146.5093\\-254.9453\\-35\\144.7511\\-256.8984\\-35\\143.1393\\-258.8516\\-35\\141.66\\-260.8047\\-35\\139.7736\\-262.7578\\-35\\137.7537\\-264.7109\\-35\\135.9724\\-266.6641\\-35\\133.7891\\-268.7393\\-35\\131.8359\\-270.2173\\-35\\129.8828\\-271.8971\\-35\\127.9297\\-273.7753\\-35\\125.9766\\-275.3382\\-35\\124.0234\\-276.7408\\-35\\122.0703\\-278.0139\\-35\\121.6654\\-278.3828\\-35\\118.1641\\-280.9455\\-35\\110.3516\\-285.4059\\-35\\108.3984\\-286.696\\-35\\106.4453\\-287.5287\\-35\\104.4922\\-288.6401\\-35\\102.5391\\-289.2448\\-35\\98.63281\\-290.9599\\-35\\96.67969\\-291.5882\\-35\\94.72656\\-292.5774\\-35\\92.77344\\-293.1263\\-35\\88.86719\\-294.5088\\-35\\86.91406\\-294.866\\-35\\83.00781\\-295.3624\\-35\\81.05469\\-295.6953\\-35\\79.10156\\-296.1324\\-35\\77.14844\\-296.4619\\-35\\73.24219\\-296.7302\\-35\\69.33594\\-296.7711\\-35\\65.42969\\-296.6519\\-35\\61.52344\\-296.2122\\-35\\57.61719\\-295.4056\\-35\\53.71094\\-294.7674\\-35\\51.75781\\-294.5307\\-35\\47.85156\\-293.2363\\-35\\45.89844\\-292.7936\\-35\\43.94531\\-292.1768\\-35\\41.99219\\-291.3946\\-35\\38.08594\\-290.5033\\-35\\36.13281\\-289.7484\\-35\\34.17969\\-289.2907\\-35\\30.27344\\-288.8441\\-35\\28.32031\\-288.6902\\-35\\24.41406\\-288.6158\\-35\\18.55469\\-288.9633\\-35\\14.64844\\-289.1436\\-35\\10.74219\\-289.3908\\-35\\2.929688\\-290.0436\\-35\\0.9765625\\-290.14\\-35\\-0.9765625\\-290.356\\-35\\-4.882813\\-290.4806\\-35\\-8.789063\\-290.5308\\-35\\-12.69531\\-290.4138\\-35\\-14.64844\\-290.4138\\-35\\-20.50781\\-290.2255\\-35\\-26.36719\\-289.9975\\-35\\-30.27344\\-289.9093\\-35\\-32.22656\\-289.9975\\-35\\-34.17969\\-290.2785\\-35\\-40.03906\\-291.344\\-35\\-43.94531\\-292.7597\\-35\\-45.89844\\-293.2277\\-35\\-49.80469\\-294.6281\\-35\\-53.71094\\-295.3287\\-35\\-55.66406\\-295.8447\\-35\\-57.61719\\-296.4619\\-35\\-59.57031\\-296.7836\\-35\\-63.47656\\-297.3235\\-35\\-67.38281\\-298.0884\\-35\\-71.28906\\-298.4023\\-35\\-75.19531\\-298.4023\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "305"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "109"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-75.19531\\-298.0757\\-33\\-77.14844\\-297.8906\\-33\\-81.05469\\-297.3484\\-33\\-86.91406\\-296.6519\\-33\\-88.86719\\-296.0896\\-33\\-90.82031\\-295.3983\\-33\\-92.77344\\-294.9665\\-33\\-94.72656\\-294.4025\\-33\\-96.67969\\-293.4147\\-33\\-98.63281\\-292.6886\\-33\\-100.5859\\-291.4472\\-33\\-102.5391\\-290.6588\\-33\\-104.4922\\-289.4442\\-33\\-106.4453\\-288.6961\\-33\\-108.3984\\-287.4465\\-33\\-110.3516\\-286.4323\\-33\\-113.5274\\-284.2422\\-33\\-114.2578\\-283.6589\\-33\\-116.2109\\-282.6435\\-33\\-118.1641\\-281.3311\\-33\\-122.0703\\-278.4642\\-33\\-125.9766\\-275.4214\\-33\\-127.9297\\-273.7441\\-33\\-131.8359\\-269.9574\\-33\\-133.3308\\-268.6172\\-33\\-135.2574\\-266.6641\\-33\\-136.9529\\-264.7109\\-33\\-140.5882\\-260.8047\\-33\\-142.1701\\-258.8516\\-33\\-143.3144\\-256.8984\\-33\\-144.696\\-254.9453\\-33\\-146.2085\\-252.9922\\-33\\-147.4609\\-250.9622\\-33\\-149.6452\\-247.1328\\-33\\-150.4894\\-245.1797\\-33\\-151.6509\\-243.2266\\-33\\-152.5093\\-241.2734\\-33\\-153.6193\\-239.3203\\-33\\-155.0993\\-235.4141\\-33\\-155.9683\\-233.4609\\-33\\-156.3971\\-231.5078\\-33\\-157.0402\\-229.5547\\-33\\-157.8585\\-227.6016\\-33\\-158.3303\\-225.6484\\-33\\-159.7129\\-221.7422\\-33\\-160.5504\\-217.8359\\-33\\-161.6465\\-213.9297\\-33\\-161.9367\\-211.9766\\-33\\-162.5977\\-206.1172\\-33\\-163.3699\\-202.2109\\-33\\-163.6684\\-200.2578\\-33\\-163.9862\\-196.3516\\-33\\-164.2192\\-192.4453\\-33\\-164.4868\\-186.5859\\-33\\-164.5387\\-184.6328\\-33\\-164.5329\\-178.7734\\-33\\-164.2131\\-170.9609\\-33\\-163.8006\\-165.1016\\-33\\-163.5649\\-163.1484\\-33\\-162.7215\\-159.2422\\-33\\-162.3919\\-157.2891\\-33\\-161.8937\\-153.3828\\-33\\-161.4674\\-151.4297\\-33\\-160.7357\\-149.4766\\-33\\-159.662\\-145.5703\\-33\\-158.7068\\-143.6172\\-33\\-158.0791\\-141.6641\\-33\\-157.3351\\-139.7109\\-33\\-156.4077\\-137.7578\\-33\\-155.8878\\-135.8047\\-33\\-154.9241\\-133.8516\\-33\\-153.3203\\-129.8694\\-33\\-150.2906\\-124.0859\\-33\\-148.4312\\-120.1797\\-33\\-146.3323\\-116.2734\\-33\\-145.1129\\-114.3203\\-33\\-144.0965\\-112.3672\\-33\\-142.7772\\-110.4141\\-33\\-141.9173\\-108.4609\\-33\\-140.5485\\-106.5078\\-33\\-139.0365\\-104.5547\\-33\\-136.3212\\-100.6484\\-33\\-134.7724\\-98.69531\\-33\\-133.0511\\-96.74219\\-33\\-131.8359\\-95.56308\\-33\\-128.6534\\-92.83594\\-33\\-127.9297\\-92.34766\\-33\\-125.9766\\-90.75511\\-33\\-122.0703\\-88.22252\\-33\\-115.8673\\-85.02344\\-33\\-114.2578\\-84.51812\\-33\\-110.3516\\-82.73704\\-33\\-108.3984\\-82.06076\\-33\\-106.4453\\-81.66048\\-33\\-104.4922\\-80.6393\\-33\\-102.5391\\-80.25484\\-33\\-100.5859\\-79.60236\\-33\\-94.72656\\-77.8304\\-33\\-88.86719\\-76.64367\\-33\\-86.91406\\-76.30599\\-33\\-84.96094\\-76.13485\\-33\\-83.00781\\-76.06454\\-33\\-79.10156\\-75.78166\\-33\\-77.14844\\-75.5544\\-33\\-75.19531\\-74.96405\\-33\\-73.24219\\-74.77315\\-33\\-65.42969\\-74.66368\\-33\\-59.57031\\-74.67734\\-33\\-53.71094\\-74.76235\\-33\\-51.75781\\-74.85659\\-33\\-49.80469\\-75.10057\\-33\\-47.85156\\-75.51675\\-33\\-45.89844\\-75.69258\\-33\\-40.03906\\-76.03787\\-33\\-36.13281\\-76.37472\\-33\\-34.17969\\-76.61517\\-33\\-32.22656\\-77.03273\\-33\\-26.36719\\-78.69114\\-33\\-24.41406\\-79.54771\\-33\\-20.50781\\-80.90957\\-33\\-16.60156\\-82.82617\\-33\\-13.15542\\-85.02344\\-33\\-8.789063\\-88.5015\\-33\\-6.835938\\-90.13004\\-33\\-4.882813\\-91.90851\\-33\\-2.929688\\-93.49376\\-33\\-0.9765625\\-94.56068\\-33\\0.9765625\\-95.23925\\-33\\5.223474\\-92.83594\\-33\\6.835938\\-91.64049\\-33\\7.17926\\-90.88281\\-33\\8.789063\\-88.9389\\-33\\12.81178\\-85.02344\\-33\\15.15447\\-83.07031\\-33\\16.60156\\-82.03667\\-33\\18.55469\\-80.80146\\-33\\20.50781\\-79.94405\\-33\\22.46094\\-78.87109\\-33\\26.36719\\-77.14173\\-33\\28.32031\\-76.40421\\-33\\30.27344\\-76.01869\\-33\\32.22656\\-75.44561\\-33\\34.17969\\-74.71684\\-33\\38.08594\\-74.15755\\-33\\40.03906\\-73.20995\\-33\\41.99219\\-72.79937\\-33\\45.89844\\-72.55756\\-33\\47.85156\\-71.9504\\-33\\49.80469\\-72.34847\\-33\\51.75781\\-71.75673\\-33\\55.66406\\-71.91644\\-33\\57.61719\\-72.51304\\-33\\59.57031\\-72.63519\\-33\\63.47656\\-72.64856\\-33\\67.38281\\-72.71235\\-33\\71.28906\\-72.85171\\-33\\73.24219\\-72.98988\\-33\\75.19531\\-74.22894\\-33\\77.14844\\-74.30492\\-33\\81.05469\\-74.5612\\-33\\83.00781\\-74.76597\\-33\\86.91406\\-75.70703\\-33\\92.77344\\-76.46777\\-33\\94.72656\\-77.02393\\-33\\96.67969\\-77.69614\\-33\\98.63281\\-78.10754\\-33\\100.5859\\-78.78703\\-33\\102.5391\\-79.69383\\-33\\106.4453\\-80.8206\\-33\\108.3984\\-81.77034\\-33\\110.3516\\-82.35171\\-33\\112.3047\\-83.37762\\-33\\114.2578\\-84.25893\\-33\\116.2109\\-85.50512\\-33\\118.1641\\-86.33569\\-33\\120.1172\\-87.52795\\-33\\122.0703\\-88.34375\\-33\\125.9766\\-91.20126\\-33\\128.8035\\-92.83594\\-33\\129.8828\\-93.64333\\-33\\131.8359\\-95.5\\-33\\134.8604\\-98.69531\\-33\\136.3636\\-100.6484\\-33\\137.5722\\-102.6016\\-33\\138.9013\\-104.5547\\-33\\140.3973\\-106.5078\\-33\\141.6098\\-108.4609\\-33\\144.6006\\-114.3203\\-33\\145.7915\\-116.2734\\-33\\146.6604\\-118.2266\\-33\\147.7771\\-120.1797\\-33\\149.3117\\-124.0859\\-33\\150.2087\\-126.0391\\-33\\150.8304\\-127.9922\\-33\\151.8759\\-129.9453\\-33\\152.5678\\-131.8984\\-33\\153.4931\\-133.8516\\-33\\154.2076\\-135.8047\\-33\\154.7054\\-137.7578\\-33\\155.4195\\-139.7109\\-33\\156.0289\\-141.6641\\-33\\156.3488\\-143.6172\\-33\\156.7815\\-145.5703\\-33\\157.5521\\-147.5234\\-33\\158.0166\\-149.4766\\-33\\158.3549\\-151.4297\\-33\\158.7929\\-153.3828\\-33\\159.4615\\-155.3359\\-33\\159.8255\\-157.2891\\-33\\160.6061\\-163.1484\\-33\\161.2859\\-167.0547\\-33\\161.7576\\-170.9609\\-33\\161.9741\\-174.8672\\-33\\162.1922\\-180.7266\\-33\\162.2821\\-184.6328\\-33\\162.3204\\-190.4922\\-33\\162.3204\\-196.3516\\-33\\162.2532\\-202.2109\\-33\\162.0977\\-208.0703\\-33\\161.8019\\-213.9297\\-33\\161.3253\\-217.8359\\-33\\160.5103\\-221.7422\\-33\\159.9006\\-225.6484\\-33\\159.4727\\-227.6016\\-33\\158.6616\\-229.5547\\-33\\157.5834\\-233.4609\\-33\\156.6319\\-235.4141\\-33\\156.1671\\-237.3672\\-33\\155.4627\\-239.3203\\-33\\154.4788\\-241.2734\\-33\\153.6638\\-243.2266\\-33\\153.3203\\-243.7148\\-33\\150.1543\\-249.0859\\-33\\148.8472\\-251.0391\\-33\\147.6607\\-252.9922\\-33\\146.1736\\-254.9453\\-33\\141.6016\\-260.2389\\-33\\139.6484\\-262.2876\\-33\\137.2034\\-264.7109\\-33\\135.3683\\-266.6641\\-33\\133.2571\\-268.6172\\-33\\129.8828\\-271.56\\-33\\127.9297\\-273.3936\\-33\\125.9766\\-274.9718\\-33\\124.0234\\-276.1739\\-33\\122.0703\\-277.5901\\-33\\120.1172\\-279.111\\-33\\118.1641\\-280.4541\\-33\\116.2109\\-281.5782\\-33\\114.2578\\-282.8593\\-33\\112.3047\\-283.7471\\-33\\110.3516\\-285.0407\\-33\\108.275\\-286.1953\\-33\\104.3972\\-288.1484\\-33\\102.5391\\-288.9846\\-33\\100.5859\\-289.5518\\-33\\98.63281\\-290.5988\\-33\\96.67969\\-291.1896\\-33\\92.77344\\-292.8071\\-33\\90.82031\\-293.3317\\-33\\88.86719\\-294.0156\\-33\\86.91406\\-294.5987\\-33\\84.96094\\-294.9079\\-33\\81.05469\\-295.3585\\-33\\79.10156\\-295.6331\\-33\\75.19531\\-296.3117\\-33\\71.28906\\-296.5198\\-33\\67.38281\\-296.4839\\-33\\65.42969\\-296.369\\-33\\63.47656\\-296.1187\\-33\\59.57031\\-295.4694\\-33\\55.66406\\-295.0199\\-33\\51.75781\\-294.3732\\-33\\49.80469\\-293.7068\\-33\\47.85156\\-293.1611\\-33\\45.89844\\-292.7522\\-33\\43.94531\\-292.2033\\-33\\41.99219\\-291.4688\\-33\\38.08594\\-290.7072\\-33\\34.17969\\-289.5372\\-33\\30.27344\\-289.101\\-33\\24.41406\\-289.0636\\-33\\18.55469\\-289.3863\\-33\\14.64844\\-289.7565\\-33\\10.74219\\-290.2913\\-33\\6.835938\\-290.6792\\-33\\-0.9765625\\-291.0558\\-33\\-8.789063\\-291.1735\\-33\\-16.60156\\-291.0454\\-33\\-20.50781\\-290.9287\\-33\\-26.36719\\-290.8174\\-33\\-32.22656\\-290.7768\\-33\\-36.13281\\-290.968\\-33\\-38.08594\\-291.1748\\-33\\-40.03906\\-291.5391\\-33\\-41.99219\\-292.3022\\-33\\-45.89844\\-293.2545\\-33\\-49.80469\\-294.5614\\-33\\-53.71094\\-295.2131\\-33\\-55.66406\\-295.6307\\-33\\-57.61719\\-296.2369\\-33\\-59.57031\\-296.6405\\-33\\-65.42969\\-297.3689\\-33\\-69.33594\\-297.9061\\-33\\-73.24219\\-298.1378\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "299"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "110"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-296.3971\\-31\\-88.86719\\-295.6913\\-31\\-92.77344\\-294.7879\\-31\\-94.72656\\-294.0765\\-31\\-96.67969\\-293.1526\\-31\\-98.63281\\-292.3912\\-31\\-100.5859\\-291.2066\\-31\\-102.5391\\-290.3642\\-31\\-104.4922\\-289.2532\\-31\\-106.4453\\-288.4326\\-31\\-112.3047\\-284.8269\\-31\\-114.2578\\-283.4284\\-31\\-116.2109\\-282.346\\-31\\-118.1641\\-281.1135\\-31\\-121.7317\\-278.3828\\-31\\-122.0703\\-278.0623\\-31\\-125.9766\\-275.2172\\-31\\-127.9297\\-273.5193\\-31\\-129.8828\\-271.6315\\-31\\-133.7891\\-267.9776\\-31\\-135.0666\\-266.6641\\-31\\-136.7996\\-264.7109\\-31\\-140.4039\\-260.8047\\-31\\-141.956\\-258.8516\\-31\\-143.1362\\-256.8984\\-31\\-146.0337\\-252.9922\\-31\\-148.4007\\-249.0859\\-31\\-151.4048\\-243.2266\\-31\\-153.3434\\-239.3203\\-31\\-154.2066\\-237.3672\\-31\\-154.8733\\-235.4141\\-31\\-155.8079\\-233.4609\\-31\\-156.7815\\-229.5547\\-31\\-157.6613\\-227.6016\\-31\\-158.6616\\-223.6953\\-31\\-159.4502\\-221.7422\\-31\\-159.952\\-219.7891\\-31\\-160.7783\\-215.8828\\-31\\-161.3909\\-213.9297\\-31\\-161.7694\\-211.9766\\-31\\-162.0265\\-210.0234\\-31\\-162.4127\\-206.1172\\-31\\-162.9562\\-202.2109\\-31\\-163.3817\\-200.2578\\-31\\-163.6311\\-198.3047\\-31\\-163.9411\\-194.3984\\-31\\-164.1333\\-190.4922\\-31\\-164.2948\\-184.6328\\-31\\-164.3013\\-180.7266\\-31\\-164.191\\-174.8672\\-31\\-164.0172\\-170.9609\\-31\\-163.7612\\-167.0547\\-31\\-163.5459\\-165.1016\\-31\\-163.2276\\-163.1484\\-31\\-162.7675\\-161.1953\\-31\\-162.4577\\-159.2422\\-31\\-161.9707\\-155.3359\\-31\\-161.6684\\-153.3828\\-31\\-160.4353\\-149.4766\\-31\\-159.9515\\-147.5234\\-31\\-159.2882\\-145.5703\\-31\\-158.4017\\-143.6172\\-31\\-157.8212\\-141.6641\\-31\\-156.8915\\-139.7109\\-31\\-155.5966\\-135.8047\\-31\\-154.616\\-133.8516\\-31\\-153.9329\\-131.8984\\-31\\-152.0981\\-127.9922\\-31\\-150.9386\\-126.0391\\-31\\-150.1496\\-124.0859\\-31\\-149.057\\-122.1328\\-31\\-148.2305\\-120.1797\\-31\\-147.0501\\-118.2266\\-31\\-146.088\\-116.2734\\-31\\-144.7833\\-114.3203\\-31\\-143.797\\-112.3672\\-31\\-142.6453\\-110.4141\\-31\\-141.6262\\-108.4609\\-31\\-140.3625\\-106.5078\\-31\\-138.8288\\-104.5547\\-31\\-136.1103\\-100.6484\\-31\\-134.5607\\-98.69531\\-31\\-131.8359\\-95.72089\\-31\\-129.8828\\-94.01194\\-31\\-127.9297\\-92.48942\\-31\\-125.9766\\-90.85918\\-31\\-122.0703\\-88.29899\\-31\\-119.6696\\-86.97656\\-31\\-115.7588\\-85.02344\\-31\\-114.2578\\-84.54382\\-31\\-110.3516\\-82.75\\-31\\-108.3984\\-82.08082\\-31\\-106.4453\\-81.67236\\-31\\-104.4922\\-80.61515\\-31\\-102.5391\\-80.25484\\-31\\-100.5859\\-79.54996\\-31\\-94.72656\\-77.78241\\-31\\-88.86719\\-76.45465\\-31\\-86.91406\\-76.2078\\-31\\-83.00781\\-75.97771\\-31\\-79.10156\\-75.68805\\-31\\-75.19531\\-74.79173\\-31\\-73.24219\\-74.65525\\-31\\-69.33594\\-74.63576\\-31\\-63.47656\\-74.54818\\-31\\-57.61719\\-74.55288\\-31\\-53.71094\\-74.60013\\-31\\-49.80469\\-74.82132\\-31\\-43.94531\\-75.5621\\-31\\-36.13281\\-76.23438\\-31\\-34.17969\\-76.44945\\-31\\-32.22656\\-76.79333\\-31\\-28.32031\\-77.93755\\-31\\-26.36719\\-78.45331\\-31\\-22.46094\\-79.97583\\-31\\-20.50781\\-80.62554\\-31\\-18.55469\\-81.69363\\-31\\-16.60156\\-82.45318\\-31\\-12.69531\\-84.96501\\-31\\-10.74219\\-86.54977\\-31\\-4.882813\\-91.51856\\-31\\-2.929688\\-93.08206\\-31\\-0.9765625\\-94.20313\\-31\\0.9765625\\-94.67372\\-31\\2.929688\\-93.92034\\-31\\4.453462\\-92.83594\\-31\\6.623299\\-90.88281\\-31\\8.789063\\-88.62005\\-31\\12.69531\\-84.80186\\-31\\14.74095\\-83.07031\\-31\\18.55469\\-80.61207\\-31\\20.50781\\-79.79091\\-31\\22.46094\\-78.69322\\-31\\24.41406\\-77.85141\\-31\\26.36719\\-76.89756\\-31\\28.32031\\-76.26989\\-31\\30.27344\\-75.90271\\-31\\34.17969\\-74.62238\\-31\\36.13281\\-74.3728\\-31\\38.08594\\-73.90394\\-31\\40.03906\\-72.85171\\-31\\43.94531\\-72.58971\\-31\\45.89844\\-71.9747\\-31\\47.85156\\-71.6944\\-31\\51.75781\\-71.65284\\-31\\55.66406\\-71.69079\\-31\\59.57031\\-72.17849\\-31\\61.52344\\-72.16933\\-31\\63.47656\\-72.34198\\-31\\65.42969\\-72.64184\\-31\\73.24219\\-72.88874\\-31\\75.19531\\-74.19405\\-31\\77.14844\\-74.26955\\-31\\83.00781\\-74.7207\\-31\\84.96094\\-74.99792\\-31\\86.91406\\-75.63908\\-31\\88.86719\\-75.95788\\-31\\92.77344\\-76.43834\\-31\\96.67969\\-77.68386\\-31\\98.63281\\-78.11369\\-31\\100.5859\\-78.79707\\-31\\102.5391\\-79.68107\\-31\\106.4453\\-80.8206\\-31\\108.3984\\-81.75323\\-31\\110.3516\\-82.34716\\-31\\112.3047\\-83.35428\\-31\\114.2578\\-84.2455\\-31\\116.2109\\-85.47159\\-31\\118.1641\\-86.32349\\-31\\120.1172\\-87.53366\\-31\\122.0703\\-88.34375\\-31\\125.9766\\-91.1871\\-31\\128.7802\\-92.83594\\-31\\129.8828\\-93.67642\\-31\\131.8359\\-95.56551\\-31\\134.7222\\-98.69531\\-31\\136.1576\\-100.6484\\-31\\137.318\\-102.6016\\-31\\137.6953\\-103.0236\\-31\\139.6484\\-105.8645\\-31\\140.1817\\-106.5078\\-31\\141.2483\\-108.4609\\-31\\142.4622\\-110.4141\\-31\\143.2789\\-112.3672\\-31\\144.3991\\-114.3203\\-31\\145.3065\\-116.2734\\-31\\146.435\\-118.2266\\-31\\148.3162\\-122.1328\\-31\\148.9533\\-124.0859\\-31\\149.9581\\-126.0391\\-31\\150.5969\\-127.9922\\-31\\151.5158\\-129.9453\\-31\\152.9744\\-133.8516\\-31\\153.9329\\-135.8047\\-31\\155.0573\\-139.7109\\-31\\155.8079\\-141.6641\\-31\\156.5376\\-145.5703\\-31\\157.7917\\-149.4766\\-31\\158.5053\\-153.3828\\-31\\159.5764\\-157.2891\\-31\\159.9006\\-159.2422\\-31\\160.3632\\-163.1484\\-31\\160.915\\-167.0547\\-31\\161.5326\\-170.9609\\-31\\161.826\\-174.8672\\-31\\162.0626\\-180.7266\\-31\\162.1506\\-184.6328\\-31\\162.1987\\-190.4922\\-31\\162.1933\\-196.3516\\-31\\162.1212\\-202.2109\\-31\\162.0265\\-206.1172\\-31\\161.8726\\-210.0234\\-31\\161.5988\\-213.9297\\-31\\161.2992\\-215.8828\\-31\\160.579\\-219.7891\\-31\\159.6622\\-225.6484\\-31\\158.3849\\-229.5547\\-31\\157.9316\\-231.5078\\-31\\156.4254\\-235.4141\\-31\\155.9808\\-237.3672\\-31\\155.0589\\-239.3203\\-31\\154.2622\\-241.2734\\-31\\153.3203\\-243.1461\\-31\\152.1473\\-245.1797\\-31\\150.8557\\-247.1328\\-31\\149.8643\\-249.0859\\-31\\148.5596\\-251.0391\\-31\\145.7779\\-254.9453\\-31\\142.4984\\-258.8516\\-31\\140.7357\\-260.8047\\-31\\138.7475\\-262.7578\\-31\\134.9376\\-266.6641\\-31\\131.8359\\-269.5264\\-31\\127.9297\\-272.9438\\-31\\125.9464\\-274.4766\\-31\\124.0234\\-275.7901\\-31\\120.1172\\-278.6888\\-31\\118.1641\\-279.9012\\-31\\116.2109\\-281.2369\\-31\\114.2578\\-282.4081\\-31\\112.3047\\-283.3681\\-31\\110.3516\\-284.6237\\-31\\108.3984\\-285.5667\\-31\\106.4453\\-286.7895\\-31\\104.4922\\-287.5987\\-31\\102.5391\\-288.6635\\-31\\100.5859\\-289.2434\\-31\\98.63281\\-289.9853\\-31\\96.67969\\-290.8711\\-31\\94.72656\\-291.455\\-31\\92.77344\\-292.4161\\-31\\88.86719\\-293.5165\\-31\\86.91406\\-294.213\\-31\\84.96094\\-294.6487\\-31\\83.00781\\-294.9134\\-31\\73.24219\\-295.985\\-31\\69.33594\\-296.1723\\-31\\67.38281\\-296.1048\\-31\\61.52344\\-295.45\\-31\\55.66406\\-294.8844\\-31\\53.71094\\-294.6121\\-31\\51.75781\\-294.173\\-31\\49.80469\\-293.5349\\-31\\45.89844\\-292.7075\\-31\\43.94531\\-292.1768\\-31\\41.99219\\-291.5288\\-31\\40.03906\\-291.1318\\-31\\36.13281\\-290.4421\\-31\\34.17969\\-289.8722\\-31\\32.22656\\-289.5245\\-31\\30.27344\\-289.3119\\-31\\24.41406\\-289.4443\\-31\\20.50781\\-289.8278\\-31\\16.60156\\-290.4206\\-31\\12.69531\\-290.8312\\-31\\2.929688\\-291.5471\\-31\\-0.9765625\\-291.7482\\-31\\-6.835938\\-291.9523\\-31\\-10.74219\\-291.9673\\-31\\-16.60156\\-291.6902\\-31\\-18.55469\\-291.5273\\-31\\-22.46094\\-291.4749\\-31\\-30.27344\\-291.2858\\-31\\-34.17969\\-291.2552\\-31\\-36.13281\\-291.3088\\-31\\-38.08594\\-291.463\\-31\\-40.03906\\-291.8228\\-31\\-41.99219\\-292.4611\\-31\\-45.89844\\-293.2796\\-31\\-49.80469\\-294.5056\\-31\\-51.75781\\-294.8474\\-31\\-55.66406\\-295.4277\\-31\\-59.57031\\-296.4587\\-31\\-61.52344\\-296.7368\\-31\\-67.38281\\-297.3317\\-31\\-71.28906\\-297.6321\\-31\\-75.19531\\-297.6321\\-31\\-79.10156\\-297.3235\\-31\\-84.96094\\-296.7476\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "303"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "111"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.86719\\-295.3891\\-29\\-90.82031\\-295.0435\\-29\\-92.77344\\-294.5739\\-29\\-94.72656\\-293.6961\\-29\\-96.67969\\-292.9198\\-29\\-100.5859\\-290.9996\\-29\\-102.5391\\-289.9261\\-29\\-104.4922\\-289.0707\\-29\\-108.3984\\-287.012\\-29\\-110.3516\\-285.6906\\-29\\-112.3047\\-284.54\\-29\\-114.2578\\-283.2092\\-29\\-118.1641\\-280.844\\-29\\-118.747\\-280.3359\\-29\\-121.3882\\-278.3828\\-29\\-122.0703\\-277.7517\\-29\\-124.0234\\-276.2456\\-29\\-125.9766\\-274.9683\\-29\\-127.9297\\-273.2907\\-29\\-133.7891\\-267.7868\\-29\\-134.882\\-266.6641\\-29\\-140.2001\\-260.8047\\-29\\-141.6567\\-258.8516\\-29\\-142.9618\\-256.8984\\-29\\-143.5547\\-256.1766\\-29\\-145.8047\\-252.9922\\-29\\-146.9632\\-251.0391\\-29\\-148.2633\\-249.0859\\-29\\-149.1699\\-247.1328\\-29\\-150.2418\\-245.1797\\-29\\-151.083\\-243.2266\\-29\\-152.1915\\-241.2734\\-29\\-153.054\\-239.3203\\-29\\-154.0684\\-237.3672\\-29\\-154.6798\\-235.4141\\-29\\-155.6036\\-233.4609\\-29\\-156.1607\\-231.5078\\-29\\-156.5694\\-229.5547\\-29\\-157.401\\-227.6016\\-29\\-157.9988\\-225.6484\\-29\\-158.4379\\-223.6953\\-29\\-159.7786\\-219.7891\\-29\\-160.5108\\-215.8828\\-29\\-161.5791\\-211.9766\\-29\\-161.8963\\-210.0234\\-29\\-162.6408\\-202.2109\\-29\\-163.0308\\-200.2578\\-29\\-163.6136\\-196.3516\\-29\\-163.8929\\-192.4453\\-29\\-164.1026\\-184.6328\\-29\\-164.1121\\-180.7266\\-29\\-164.0228\\-174.8672\\-29\\-163.8449\\-170.9609\\-29\\-163.5063\\-167.0547\\-29\\-162.4874\\-161.1953\\-29\\-162.0614\\-157.2891\\-29\\-161.7942\\-155.3359\\-29\\-161.3787\\-153.3828\\-29\\-160.7096\\-151.4297\\-29\\-159.7129\\-147.5234\\-29\\-158.8135\\-145.5703\\-29\\-157.5084\\-141.6641\\-29\\-156.5818\\-139.7109\\-29\\-156.0509\\-137.7578\\-29\\-154.3752\\-133.8516\\-29\\-153.6503\\-131.8984\\-29\\-152.6515\\-129.9453\\-29\\-151.8138\\-127.9922\\-29\\-150.6145\\-126.0391\\-29\\-149.9581\\-124.0859\\-29\\-148.7608\\-122.1328\\-29\\-147.999\\-120.1797\\-29\\-146.7677\\-118.2266\\-29\\-145.8748\\-116.2734\\-29\\-144.561\\-114.3203\\-29\\-143.4346\\-112.3672\\-29\\-142.511\\-110.4141\\-29\\-140.1565\\-106.5078\\-29\\-139.6484\\-105.9294\\-29\\-137.6953\\-103.2129\\-29\\-137.1582\\-102.6016\\-29\\-135.8955\\-100.6484\\-29\\-133.7891\\-98.07462\\-29\\-131.8359\\-95.88188\\-29\\-130.669\\-94.78906\\-29\\-125.8329\\-90.88281\\-29\\-122.0703\\-88.32612\\-29\\-119.7007\\-86.97656\\-29\\-115.6006\\-85.02344\\-29\\-114.2578\\-84.57046\\-29\\-110.3516\\-82.76317\\-29\\-108.3984\\-82.08733\\-29\\-106.4453\\-81.70571\\-29\\-104.4922\\-80.68552\\-29\\-102.5391\\-80.29086\\-29\\-99.46646\\-79.16406\\-29\\-94.72656\\-77.77595\\-29\\-92.77344\\-77.34375\\-29\\-90.82031\\-76.77444\\-29\\-88.86719\\-76.37905\\-29\\-86.91406\\-76.12951\\-29\\-81.05469\\-75.74268\\-29\\-79.10156\\-75.37691\\-29\\-77.14844\\-74.90054\\-29\\-75.19531\\-74.6563\\-29\\-73.24219\\-74.56498\\-29\\-67.38281\\-74.50035\\-29\\-65.42969\\-74.51588\\-29\\-57.61719\\-74.43577\\-29\\-53.71094\\-74.49546\\-29\\-49.80469\\-74.67325\\-29\\-43.94531\\-75.05933\\-29\\-41.99219\\-75.57878\\-29\\-38.08594\\-75.91878\\-29\\-34.17969\\-76.32469\\-29\\-32.22656\\-76.5857\\-29\\-30.27344\\-77.03403\\-29\\-28.32031\\-77.733\\-29\\-24.41406\\-78.94027\\-29\\-22.46094\\-79.83389\\-29\\-20.50781\\-80.42315\\-29\\-18.55469\\-81.45972\\-29\\-16.60156\\-82.21582\\-29\\-14.64844\\-83.4505\\-29\\-12.69531\\-84.57554\\-29\\-8.789063\\-87.99354\\-29\\-6.835938\\-89.44256\\-29\\-4.882813\\-91.0797\\-29\\-2.929688\\-92.60021\\-29\\-0.9765625\\-93.80022\\-29\\0.9765625\\-94.09863\\-29\\2.929688\\-93.7316\\-29\\4.882813\\-92.19989\\-29\\6.312779\\-90.88281\\-29\\8.789063\\-88.35395\\-29\\12.69531\\-84.51296\\-29\\14.64844\\-82.85419\\-29\\16.60156\\-81.78332\\-29\\18.55469\\-80.40149\\-29\\21.06081\\-79.16406\\-29\\24.41406\\-77.6487\\-29\\26.36719\\-76.70286\\-29\\28.32031\\-76.16966\\-29\\30.27344\\-75.73949\\-29\\32.22656\\-74.91449\\-29\\34.17969\\-74.53181\\-29\\36.13281\\-74.30492\\-29\\38.08594\\-73.81516\\-29\\40.03906\\-72.78273\\-29\\41.99219\\-72.6904\\-29\\43.94531\\-72.48389\\-29\\45.89844\\-71.70185\\-29\\47.85156\\-71.63816\\-29\\57.61719\\-71.69079\\-29\\63.47656\\-71.80933\\-29\\65.42969\\-72.44154\\-29\\67.38281\\-72.68324\\-29\\73.24219\\-72.87\\-29\\75.19531\\-73.06896\\-29\\77.14844\\-74.24056\\-29\\83.00781\\-74.66781\\-29\\84.96094\\-74.94004\\-29\\86.91406\\-75.61476\\-29\\88.86719\\-75.93845\\-29\\92.77344\\-76.42358\\-29\\96.67969\\-77.66792\\-29\\98.63281\\-78.17066\\-29\\100.5859\\-78.84925\\-29\\102.5391\\-79.687\\-29\\106.4453\\-80.83296\\-29\\108.3984\\-81.75766\\-29\\110.3516\\-82.35171\\-29\\112.3047\\-83.35228\\-29\\114.2578\\-84.24987\\-29\\116.2109\\-85.44774\\-29\\118.1641\\-86.30743\\-29\\120.1172\\-87.53366\\-29\\122.0703\\-88.36287\\-29\\124.0234\\-89.73209\\-29\\125.9766\\-91.23355\\-29\\128.5979\\-92.83594\\-29\\129.8828\\-93.8125\\-29\\132.8443\\-96.74219\\-29\\134.6229\\-98.69531\\-29\\135.9825\\-100.6484\\-29\\137.1285\\-102.6016\\-29\\139.8979\\-106.5078\\-29\\140.9943\\-108.4609\\-29\\142.2674\\-110.4141\\-29\\142.9957\\-112.3672\\-29\\144.1876\\-114.3203\\-29\\144.9815\\-116.2734\\-29\\146.1719\\-118.2266\\-29\\147.0056\\-120.1797\\-29\\148.1099\\-122.1328\\-29\\148.7311\\-124.0859\\-29\\149.6582\\-126.0391\\-29\\150.4149\\-127.9922\\-29\\151.0728\\-129.9453\\-29\\152.0275\\-131.8984\\-29\\152.6518\\-133.8516\\-29\\153.6263\\-135.8047\\-29\\154.7625\\-139.7109\\-29\\155.5157\\-141.6641\\-29\\156.0412\\-143.6172\\-29\\156.7845\\-147.5234\\-29\\157.5305\\-149.4766\\-29\\157.9565\\-151.4297\\-29\\158.6507\\-155.3359\\-29\\159.2173\\-157.2891\\-29\\159.685\\-159.2422\\-29\\160.3911\\-165.1016\\-29\\161.4494\\-172.9141\\-29\\161.7697\\-176.8203\\-29\\161.9924\\-182.6797\\-29\\162.0502\\-188.5391\\-29\\162.0743\\-194.3984\\-29\\162.0158\\-200.2578\\-29\\161.8771\\-206.1172\\-29\\161.53\\-211.9766\\-29\\161.2702\\-213.9297\\-29\\160.6084\\-217.8359\\-29\\159.7827\\-223.6953\\-29\\159.3018\\-225.6484\\-29\\158.6192\\-227.6016\\-29\\157.6796\\-231.5078\\-29\\156.7513\\-233.4609\\-29\\155.7205\\-237.3672\\-29\\154.7496\\-239.3203\\-29\\154.0396\\-241.2734\\-29\\152.8223\\-243.2266\\-29\\151.8428\\-245.1797\\-29\\150.5427\\-247.1328\\-29\\149.4867\\-249.0859\\-29\\148.281\\-251.0391\\-29\\145.5078\\-254.625\\-29\\143.5547\\-257.0182\\-29\\142.1566\\-258.8516\\-29\\140.3792\\-260.8047\\-29\\138.3817\\-262.7578\\-29\\133.7891\\-267.3833\\-29\\131.8359\\-269.1518\\-29\\130.0197\\-270.5703\\-29\\125.9766\\-273.9305\\-29\\122.0703\\-276.854\\-29\\120.1172\\-278.041\\-29\\116.2109\\-280.9062\\-29\\114.2578\\-281.8558\\-29\\112.3047\\-283.0814\\-29\\110.0518\\-284.2422\\-29\\106.6272\\-286.1953\\-29\\102.5391\\-288.204\\-29\\100.5859\\-288.9846\\-29\\98.63281\\-289.4982\\-29\\96.67969\\-290.4959\\-29\\92.77344\\-291.814\\-29\\90.82031\\-292.6603\\-29\\88.86719\\-293.1299\\-29\\84.96094\\-294.2779\\-29\\81.05469\\-294.9259\\-29\\79.10156\\-295.1094\\-29\\73.24219\\-295.5396\\-29\\69.33594\\-295.6953\\-29\\67.38281\\-295.6331\\-29\\61.52344\\-295.2468\\-29\\55.66406\\-294.7358\\-29\\53.71094\\-294.4482\\-29\\49.80469\\-293.3702\\-29\\45.89844\\-292.6396\\-29\\41.99219\\-291.5574\\-29\\40.03906\\-291.207\\-29\\36.13281\\-290.6886\\-29\\32.22656\\-289.9709\\-29\\30.27344\\-289.795\\-29\\28.32031\\-289.8093\\-29\\24.41406\\-290.1093\\-29\\22.46094\\-290.4206\\-29\\18.55469\\-290.8531\\-29\\10.74219\\-291.5602\\-29\\6.835938\\-292.1494\\-29\\2.929688\\-292.5104\\-29\\-0.9765625\\-292.6637\\-29\\-6.835938\\-292.7606\\-29\\-10.74219\\-292.7606\\-29\\-16.60156\\-292.5879\\-29\\-18.55469\\-292.393\\-29\\-22.46094\\-292.3824\\-29\\-34.17969\\-291.8353\\-29\\-38.08594\\-291.9162\\-29\\-45.89844\\-293.312\\-29\\-49.80469\\-294.461\\-29\\-51.75781\\-294.7807\\-29\\-55.66406\\-295.2907\\-29\\-57.61719\\-295.6448\\-29\\-59.57031\\-296.1723\\-29\\-61.52344\\-296.5541\\-29\\-63.47656\\-296.7836\\-29\\-67.38281\\-297.0853\\-29\\-71.28906\\-297.3109\\-29\\-73.24219\\-297.3317\\-29\\-77.14844\\-297.2033\\-29\\-83.00781\\-296.7897\\-29\\-84.96094\\-296.5372\\-29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "308"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "112"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.96094\\-296.1459\\-27\\-86.91406\\-295.5717\\-27\\-90.82031\\-294.8145\\-27\\-92.77344\\-294.2537\\-27\\-94.72656\\-293.3433\\-27\\-96.67969\\-292.6736\\-27\\-98.63281\\-291.5366\\-27\\-100.5859\\-290.7716\\-27\\-102.5391\\-289.5999\\-27\\-104.4922\\-288.8809\\-27\\-106.4453\\-287.7195\\-27\\-108.3984\\-286.7967\\-27\\-110.3516\\-285.3893\\-27\\-112.3047\\-284.1241\\-27\\-114.2578\\-283.0426\\-27\\-116.2109\\-281.7183\\-27\\-118.1641\\-280.5267\\-27\\-121.0497\\-278.3828\\-27\\-124.0234\\-275.9818\\-27\\-125.9766\\-274.638\\-27\\-127.9297\\-273.0412\\-27\\-131.8359\\-269.4378\\-27\\-134.6739\\-266.6641\\-27\\-139.965\\-260.8047\\-27\\-143.5547\\-255.9219\\-27\\-145.5155\\-252.9922\\-27\\-146.748\\-251.0391\\-27\\-148.1014\\-249.0859\\-27\\-148.9359\\-247.1328\\-27\\-150.1045\\-245.1797\\-27\\-150.8557\\-243.2266\\-27\\-152.0128\\-241.2734\\-27\\-152.8169\\-239.3203\\-27\\-153.8602\\-237.3672\\-27\\-154.4958\\-235.4141\\-27\\-155.3438\\-233.4609\\-27\\-156.0213\\-231.5078\\-27\\-156.4186\\-229.5547\\-27\\-157.0416\\-227.6016\\-27\\-157.8212\\-225.6484\\-27\\-158.7436\\-221.7422\\-27\\-159.5262\\-219.7891\\-27\\-160.2935\\-215.8828\\-27\\-160.7281\\-213.9297\\-27\\-161.338\\-211.9766\\-27\\-161.7076\\-210.0234\\-27\\-162.1506\\-206.1172\\-27\\-162.4533\\-202.2109\\-27\\-162.6751\\-200.2578\\-27\\-163.3212\\-196.3516\\-27\\-163.6766\\-192.4453\\-27\\-163.7897\\-190.4922\\-27\\-163.9353\\-184.6328\\-27\\-163.8887\\-176.8203\\-27\\-163.7426\\-172.9141\\-27\\-163.4069\\-169.0078\\-27\\-162.7466\\-165.1016\\-27\\-162.5\\-163.1484\\-27\\-162.1094\\-159.2422\\-27\\-161.5485\\-155.3359\\-27\\-160.3837\\-151.4297\\-27\\-159.9681\\-149.4766\\-27\\-159.3541\\-147.5234\\-27\\-158.475\\-145.5703\\-27\\-157.9241\\-143.6172\\-27\\-157.0805\\-141.6641\\-27\\-156.3631\\-139.7109\\-27\\-155.8436\\-137.7578\\-27\\-154.8598\\-135.8047\\-27\\-154.1616\\-133.8516\\-27\\-153.3203\\-131.912\\-27\\-151.5026\\-127.9922\\-27\\-150.4456\\-126.0391\\-27\\-149.6857\\-124.0859\\-27\\-148.6013\\-122.1328\\-27\\-147.7841\\-120.1797\\-27\\-146.5599\\-118.2266\\-27\\-145.5454\\-116.2734\\-27\\-143.5547\\-112.9492\\-27\\-143.1372\\-112.3672\\-27\\-142.3494\\-110.4141\\-27\\-141.0445\\-108.4609\\-27\\-139.8778\\-106.5078\\-27\\-136.993\\-102.6016\\-27\\-135.7422\\-100.7569\\-27\\-134.1122\\-98.69531\\-27\\-131.8359\\-96.24366\\-27\\-129.8828\\-94.35909\\-27\\-127.9297\\-92.67435\\-27\\-125.6206\\-90.88281\\-27\\-122.0703\\-88.37466\\-27\\-120.1172\\-87.40148\\-27\\-118.1641\\-86.286\\-27\\-115.5543\\-85.02344\\-27\\-114.2578\\-84.57046\\-27\\-110.3516\\-82.77655\\-27\\-108.3984\\-82.1263\\-27\\-106.4453\\-81.73502\\-27\\-104.4922\\-80.67136\\-27\\-102.5391\\-80.30242\\-27\\-100.5859\\-79.54028\\-27\\-96.67969\\-78.25393\\-27\\-94.72656\\-77.69204\\-27\\-90.82031\\-76.71568\\-27\\-88.86719\\-76.31749\\-27\\-86.91406\\-76.12515\\-27\\-83.00781\\-75.87694\\-27\\-81.05469\\-75.67149\\-27\\-79.10156\\-74.82813\\-27\\-77.14844\\-74.75835\\-27\\-73.24219\\-74.44506\\-27\\-71.28906\\-74.49052\\-27\\-67.38281\\-74.42866\\-27\\-57.61719\\-74.35962\\-27\\-53.71094\\-74.41637\\-27\\-45.89844\\-74.73466\\-27\\-43.94531\\-74.85397\\-27\\-41.99219\\-75.08971\\-27\\-40.03906\\-75.57171\\-27\\-32.22656\\-76.43783\\-27\\-30.27344\\-76.81643\\-27\\-28.32031\\-77.50666\\-27\\-24.41406\\-78.70708\\-27\\-22.46094\\-79.62877\\-27\\-20.50781\\-80.26722\\-27\\-18.55469\\-81.04333\\-27\\-14.64844\\-83.0463\\-27\\-12.69531\\-84.29932\\-27\\-8.789063\\-87.7002\\-27\\-6.970994\\-88.92969\\-27\\-2.929688\\-92.25231\\-27\\-0.9765625\\-93.55381\\-27\\0.9765625\\-93.85418\\-27\\2.929688\\-93.34627\\-27\\4.882813\\-92.03206\\-27\\12.69531\\-84.33287\\-27\\14.64844\\-82.64539\\-27\\16.60156\\-81.6553\\-27\\18.55469\\-80.24549\\-27\\22.46094\\-78.24741\\-27\\26.36719\\-76.56604\\-27\\30.27344\\-75.62231\\-27\\32.22656\\-74.77671\\-27\\36.13281\\-74.24574\\-27\\38.39518\\-73.30469\\-27\\40.03906\\-72.75057\\-27\\41.99219\\-72.66914\\-27\\43.94531\\-71.71909\\-27\\45.89844\\-71.63816\\-27\\47.85156\\-71.69682\\-27\\53.71094\\-71.63196\\-27\\61.52344\\-71.73242\\-27\\63.47656\\-72.02295\\-27\\65.42969\\-72.56403\\-27\\67.38281\\-72.66914\\-27\\73.24219\\-72.84272\\-27\\75.19531\\-73.00072\\-27\\77.14844\\-74.22894\\-27\\79.10156\\-74.3286\\-27\\83.00781\\-74.64068\\-27\\84.96094\\-74.92454\\-27\\86.91406\\-75.60368\\-27\\88.86719\\-75.91085\\-27\\92.77344\\-76.42125\\-27\\94.72656\\-76.97521\\-27\\96.67969\\-77.65826\\-27\\100.5859\\-78.84925\\-27\\102.5391\\-79.70869\\-27\\104.4922\\-80.23418\\-27\\106.4453\\-80.8602\\-27\\108.3984\\-81.77873\\-27\\110.3516\\-82.37189\\-27\\112.3047\\-83.37338\\-27\\114.2578\\-84.2455\\-27\\116.2109\\-85.44483\\-27\\118.1641\\-86.31541\\-27\\120.1172\\-87.55215\\-27\\122.0703\\-88.37653\\-27\\124.0234\\-89.76409\\-27\\125.9766\\-91.26148\\-27\\127.9297\\-92.62424\\-27\\129.8828\\-94.11724\\-27\\131.8359\\-95.96245\\-27\\134.3068\\-98.69531\\-27\\135.7843\\-100.6484\\-27\\136.9308\\-102.6016\\-27\\137.6953\\-103.621\\-27\\141.6016\\-109.83\\-27\\142.0181\\-110.4141\\-27\\142.793\\-112.3672\\-27\\143.9359\\-114.3203\\-27\\144.7254\\-116.2734\\-27\\145.8997\\-118.2266\\-27\\146.7166\\-120.1797\\-27\\147.8422\\-122.1328\\-27\\149.2959\\-126.0391\\-27\\150.1703\\-127.9922\\-27\\150.7648\\-129.9453\\-27\\151.7358\\-131.8984\\-27\\152.4041\\-133.8516\\-27\\154.0259\\-137.7578\\-27\\154.5006\\-139.7109\\-27\\155.849\\-143.6172\\-27\\156.5496\\-147.5234\\-27\\157.0838\\-149.4766\\-27\\157.7319\\-151.4297\\-27\\158.3995\\-155.3359\\-27\\158.8003\\-157.2891\\-27\\159.3667\\-159.2422\\-27\\159.7416\\-161.1953\\-27\\160.614\\-169.0078\\-27\\161.3752\\-174.8672\\-27\\161.6649\\-178.7734\\-27\\161.8098\\-182.6797\\-27\\161.8891\\-188.5391\\-27\\161.9152\\-194.3984\\-27\\161.849\\-200.2578\\-27\\161.7658\\-204.1641\\-27\\161.5761\\-208.0703\\-27\\161.1854\\-211.9766\\-27\\160.8568\\-213.9297\\-27\\159.8394\\-221.7422\\-27\\159.4727\\-223.6953\\-27\\158.8369\\-225.6484\\-27\\157.941\\-229.5547\\-27\\157.2787\\-231.5078\\-27\\156.5104\\-233.4609\\-27\\156.0923\\-235.4141\\-27\\155.375\\-237.3672\\-27\\154.4675\\-239.3203\\-27\\153.7379\\-241.2734\\-27\\152.4841\\-243.2266\\-27\\151.4206\\-245.1797\\-27\\147.9388\\-251.0391\\-27\\145.5078\\-254.1655\\-27\\144.7921\\-254.9453\\-27\\139.8907\\-260.8047\\-27\\137.8764\\-262.7578\\-27\\133.9688\\-266.6641\\-27\\131.7336\\-268.6172\\-27\\127.9297\\-271.7846\\-27\\125.9766\\-273.4821\\-27\\124.0234\\-275.0316\\-27\\120.1172\\-277.5838\\-27\\118.1641\\-279.0958\\-27\\116.2109\\-280.4068\\-27\\114.2578\\-281.4917\\-27\\112.3047\\-282.7036\\-27\\110.3516\\-283.5383\\-27\\108.3984\\-284.8094\\-27\\106.4453\\-285.7039\\-27\\104.4922\\-286.8878\\-27\\102.5391\\-287.6536\\-27\\100.5859\\-288.6866\\-27\\98.63281\\-289.2328\\-27\\96.67969\\-289.9108\\-27\\94.72656\\-290.8036\\-27\\92.77344\\-291.34\\-27\\90.82031\\-292.1768\\-27\\88.86719\\-292.8079\\-27\\84.96094\\-293.7637\\-27\\83.00781\\-294.3378\\-27\\81.05469\\-294.6848\\-27\\79.10156\\-294.8961\\-27\\73.24219\\-295.2669\\-27\\69.33594\\-295.3585\\-27\\65.42969\\-295.2625\\-27\\61.52344\\-295.0682\\-27\\57.61719\\-294.764\\-27\\53.71094\\-294.2256\\-27\\51.75781\\-293.6643\\-27\\49.80469\\-293.2211\\-27\\45.89844\\-292.5848\\-27\\43.94531\\-292.1355\\-27\\41.99219\\-291.5695\\-27\\38.08594\\-291.0346\\-27\\32.22656\\-290.5131\\-27\\30.27344\\-290.4834\\-27\\26.36719\\-290.6189\\-27\\24.41406\\-290.7654\\-27\\18.55469\\-291.3366\\-27\\14.64844\\-291.8683\\-27\\12.69531\\-292.2303\\-27\\10.74219\\-292.4866\\-27\\6.835938\\-292.8392\\-27\\2.929688\\-293.0593\\-27\\-2.929688\\-293.2325\\-27\\-8.789063\\-293.2798\\-27\\-12.69531\\-293.214\\-27\\-16.60156\\-293.0754\\-27\\-18.55469\\-292.9471\\-27\\-22.46094\\-292.9138\\-27\\-30.27344\\-292.6747\\-27\\-32.22656\\-292.5889\\-27\\-38.08594\\-292.5077\\-27\\-41.99219\\-292.7846\\-27\\-45.89844\\-293.3707\\-27\\-49.80469\\-294.4049\\-27\\-51.75781\\-294.7054\\-27\\-57.61719\\-295.4112\\-27\\-61.52344\\-296.263\\-27\\-63.47656\\-296.566\\-27\\-67.38281\\-296.8853\\-27\\-71.28906\\-297.0524\\-27\\-73.24219\\-297.0762\\-27\\-77.14844\\-296.9886\\-27\\-81.05469\\-296.7497\\-27\\-83.00781\\-296.5457\\-27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "289"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "113"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-83.00781\\-296.1869\\-25\\-84.96094\\-295.6566\\-25\\-88.86719\\-294.9783\\-25\\-90.82031\\-294.5595\\-25\\-96.67969\\-292.3607\\-25\\-98.63281\\-291.2639\\-25\\-100.5859\\-290.5131\\-25\\-102.5391\\-289.3434\\-25\\-104.4922\\-288.6571\\-25\\-106.4453\\-287.4714\\-25\\-108.3984\\-286.5054\\-25\\-111.7188\\-284.2422\\-25\\-112.3047\\-283.7743\\-25\\-114.2578\\-282.8272\\-25\\-117.8416\\-280.3359\\-25\\-120.1172\\-278.8175\\-25\\-124.0234\\-275.74\\-25\\-127.9297\\-272.7145\\-25\\-131.8359\\-269.1887\\-25\\-133.7891\\-267.3219\\-25\\-136.2267\\-264.7109\\-25\\-139.6484\\-260.7629\\-25\\-142.6237\\-256.8984\\-25\\-144.0398\\-254.9453\\-25\\-145.1939\\-252.9922\\-25\\-147.9256\\-249.0859\\-25\\-148.7399\\-247.1328\\-25\\-149.9353\\-245.1797\\-25\\-150.6531\\-243.2266\\-25\\-151.8291\\-241.2734\\-25\\-152.5865\\-239.3203\\-25\\-153.6591\\-237.3672\\-25\\-155.0202\\-233.4609\\-25\\-155.862\\-231.5078\\-25\\-156.7415\\-227.6016\\-25\\-157.5834\\-225.6484\\-25\\-158.0897\\-223.6953\\-25\\-158.4806\\-221.7422\\-25\\-159.7667\\-217.8359\\-25\\-160.4912\\-213.9297\\-25\\-161.4873\\-210.0234\\-25\\-161.814\\-208.0703\\-25\\-162.1804\\-204.1641\\-25\\-162.4656\\-200.2578\\-25\\-162.6646\\-198.3047\\-25\\-163.3954\\-192.4453\\-25\\-163.5459\\-190.4922\\-25\\-163.7426\\-184.6328\\-25\\-163.75\\-180.7266\\-25\\-163.7042\\-176.8203\\-25\\-163.6136\\-174.8672\\-25\\-163.2957\\-170.9609\\-25\\-162.6994\\-167.0547\\-25\\-162.4826\\-165.1016\\-25\\-161.9486\\-159.2422\\-25\\-161.6498\\-157.2891\\-25\\-161.2009\\-155.3359\\-25\\-160.5808\\-153.3828\\-25\\-159.7129\\-149.4766\\-25\\-158.8653\\-147.5234\\-25\\-157.6666\\-143.6172\\-25\\-156.6992\\-141.6641\\-25\\-155.5577\\-137.7578\\-25\\-154.5911\\-135.8047\\-25\\-153.9292\\-133.8516\\-25\\-152.9391\\-131.8984\\-25\\-152.1846\\-129.9453\\-25\\-151.1193\\-127.9922\\-25\\-150.2924\\-126.0391\\-25\\-148.456\\-122.1328\\-25\\-147.4609\\-120.1917\\-25\\-145.5078\\-116.7859\\-25\\-145.1407\\-116.2734\\-25\\-144.1794\\-114.3203\\-25\\-142.946\\-112.3672\\-25\\-142.1862\\-110.4141\\-25\\-140.8386\\-108.4609\\-25\\-137.6953\\-103.7409\\-25\\-135.7422\\-101.0298\\-25\\-133.9072\\-98.69531\\-25\\-131.8359\\-96.39447\\-25\\-129.8828\\-94.47379\\-25\\-127.9206\\-92.83594\\-25\\-124.0234\\-89.82047\\-25\\-122.0703\\-88.44859\\-25\\-120.1172\\-87.7292\\-25\\-118.1641\\-86.41946\\-25\\-116.2109\\-85.58845\\-25\\-115.1968\\-85.02344\\-25\\-110.3516\\-82.80831\\-25\\-108.3984\\-82.17838\\-25\\-106.4453\\-81.75262\\-25\\-104.4922\\-80.68552\\-25\\-102.5391\\-80.31606\\-25\\-100.5859\\-79.49772\\-25\\-94.72656\\-77.63586\\-25\\-90.82031\\-76.69875\\-25\\-88.86719\\-76.29457\\-25\\-83.00781\\-75.84247\\-25\\-81.05469\\-75.61104\\-25\\-79.10156\\-74.76575\\-25\\-73.24219\\-74.37396\\-25\\-71.28906\\-74.44813\\-25\\-63.47656\\-74.33484\\-25\\-55.66406\\-74.30492\\-25\\-53.71094\\-74.32293\\-25\\-45.89844\\-74.60457\\-25\\-41.99219\\-74.90744\\-25\\-40.03906\\-75.18204\\-25\\-38.08594\\-75.62231\\-25\\-32.22656\\-76.31856\\-25\\-30.27344\\-76.63612\\-25\\-24.41406\\-78.53015\\-25\\-22.46094\\-79.36846\\-25\\-18.55469\\-80.81614\\-25\\-16.60156\\-81.8512\\-25\\-14.64844\\-82.6872\\-25\\-14.19975\\-83.07031\\-25\\-11.37251\\-85.02344\\-25\\-8.789063\\-87.15489\\-25\\-6.835938\\-88.66769\\-25\\-4.26794\\-90.88281\\-25\\-2.929688\\-91.93318\\-25\\-0.9765625\\-93.28723\\-25\\0.9765625\\-93.63982\\-25\\2.929688\\-92.95892\\-25\\4.882813\\-91.79717\\-25\\11.87525\\-85.02344\\-25\\12.69531\\-84.17057\\-25\\14.64844\\-82.4688\\-25\\18.55469\\-80.14697\\-25\\20.50781\\-79.04199\\-25\\22.46094\\-78.11472\\-25\\26.36719\\-76.4583\\-25\\30.27344\\-75.52155\\-25\\32.22656\\-74.687\\-25\\36.13281\\-74.16672\\-25\\38.08594\\-72.83385\\-25\\41.99219\\-72.64184\\-25\\43.94531\\-71.67709\\-25\\45.89844\\-71.62911\\-25\\47.85156\\-71.69336\\-25\\53.71094\\-71.64548\\-25\\63.47656\\-71.74829\\-25\\65.42969\\-72.3988\\-25\\67.38281\\-72.65535\\-25\\73.24219\\-72.83385\\-25\\75.19531\\-72.97916\\-25\\77.14844\\-74.22894\\-25\\81.05469\\-74.44297\\-25\\83.00781\\-74.609\\-25\\84.96094\\-74.88397\\-25\\86.91406\\-75.61476\\-25\\92.77344\\-76.45742\\-25\\94.72656\\-76.98714\\-25\\96.67969\\-77.67449\\-25\\100.5859\\-78.87109\\-25\\102.5391\\-79.76456\\-25\\104.4922\\-80.24464\\-25\\106.4453\\-80.88784\\-25\\108.3984\\-81.80393\\-25\\110.3516\\-82.38425\\-25\\112.3047\\-83.39584\\-25\\114.2578\\-84.26757\\-25\\116.2109\\-85.45525\\-25\\118.1641\\-86.33167\\-25\\120.1172\\-87.58292\\-25\\122.0703\\-88.38037\\-25\\124.0234\\-89.79569\\-25\\125.9766\\-91.33504\\-25\\127.9297\\-92.71387\\-25\\129.8828\\-94.35909\\-25\\131.8359\\-96.24366\\-25\\134.1266\\-98.69531\\-25\\135.7422\\-100.8523\\-25\\136.7371\\-102.6016\\-25\\138.0847\\-104.5547\\-25\\139.1763\\-106.5078\\-25\\140.5686\\-108.4609\\-25\\141.7015\\-110.4141\\-25\\142.5969\\-112.3672\\-25\\146.4563\\-120.1797\\-25\\147.4687\\-122.1328\\-25\\148.3191\\-124.0859\\-25\\148.9639\\-126.0391\\-25\\149.9449\\-127.9922\\-25\\150.5177\\-129.9453\\-25\\152.1692\\-133.8516\\-25\\152.8383\\-135.8047\\-25\\153.7781\\-137.7578\\-25\\154.8357\\-141.6641\\-25\\155.58\\-143.6172\\-25\\156.068\\-145.5703\\-25\\156.7223\\-149.4766\\-25\\157.4136\\-151.4297\\-25\\157.8863\\-153.3828\\-25\\158.4987\\-157.2891\\-25\\158.9054\\-159.2422\\-25\\159.4727\\-161.1953\\-25\\159.7827\\-163.1484\\-25\\160.7723\\-172.9141\\-25\\161.229\\-176.8203\\-25\\161.401\\-178.7734\\-25\\161.6084\\-182.6797\\-25\\161.6953\\-186.5859\\-25\\161.72\\-194.3984\\-25\\161.6615\\-200.2578\\-25\\161.53\\-204.1641\\-25\\161.2968\\-208.0703\\-25\\160.5504\\-213.9297\\-25\\160.1214\\-217.8359\\-25\\159.6051\\-221.7422\\-25\\158.5053\\-225.6484\\-25\\157.6885\\-229.5547\\-25\\156.8483\\-231.5078\\-25\\155.8789\\-235.4141\\-25\\154.9769\\-237.3672\\-25\\154.2239\\-239.3203\\-25\\153.3203\\-241.2614\\-25\\151.3672\\-244.5957\\-25\\150.9447\\-245.1797\\-25\\150.0165\\-247.1328\\-25\\148.6914\\-249.0859\\-25\\147.4693\\-251.0391\\-25\\146.0785\\-252.9922\\-25\\143.5547\\-256.0648\\-25\\139.6484\\-260.4366\\-25\\135.3441\\-264.7109\\-25\\131.8359\\-268.0481\\-25\\128.9597\\-270.5703\\-25\\125.9766\\-273.0498\\-25\\124.0234\\-274.5186\\-25\\122.0703\\-275.8271\\-25\\118.1641\\-278.6379\\-25\\116.2109\\-279.8409\\-25\\114.2578\\-281.1827\\-25\\112.0914\\-282.2891\\-25\\106.4453\\-285.306\\-25\\104.4922\\-286.4793\\-25\\102.5391\\-287.2939\\-25\\100.5859\\-288.2188\\-25\\98.63281\\-288.9794\\-25\\96.67969\\-289.4652\\-25\\94.72656\\-290.4206\\-25\\90.82031\\-291.5725\\-25\\88.86719\\-292.4706\\-25\\86.91406\\-292.9665\\-25\\84.96094\\-293.3511\\-25\\81.05469\\-294.3707\\-25\\79.10156\\-294.6447\\-25\\75.19531\\-294.9725\\-25\\73.24219\\-295.0499\\-25\\67.38281\\-295.123\\-25\\63.47656\\-295.0022\\-25\\59.57031\\-294.7713\\-25\\55.66406\\-294.3243\\-25\\51.75781\\-293.4472\\-25\\47.85156\\-292.7254\\-25\\45.89844\\-292.543\\-25\\43.94531\\-292.1494\\-25\\41.99219\\-291.6398\\-25\\38.08594\\-291.137\\-25\\34.17969\\-290.9032\\-25\\30.27344\\-290.8778\\-25\\26.36719\\-291.0527\\-25\\22.46094\\-291.437\\-25\\20.50781\\-291.7408\\-25\\16.60156\\-292.4636\\-25\\10.74219\\-293.0424\\-25\\6.835938\\-293.3712\\-25\\0.9765625\\-293.811\\-25\\-0.9765625\\-293.8951\\-25\\-6.835938\\-293.9999\\-25\\-12.69531\\-293.8672\\-25\\-18.55469\\-293.5361\\-25\\-32.22656\\-292.9692\\-25\\-36.13281\\-292.8693\\-25\\-40.03906\\-292.8768\\-25\\-41.99219\\-292.9764\\-25\\-45.89844\\-293.4701\\-25\\-49.80469\\-294.3513\\-25\\-51.75781\\-294.6321\\-25\\-57.61719\\-295.241\\-25\\-61.52344\\-295.8447\\-25\\-63.47656\\-296.263\\-25\\-67.38281\\-296.6737\\-25\\-73.24219\\-296.8596\\-25\\-77.14844\\-296.7774\\-25\\-81.05469\\-296.4897\\-25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "301"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "114"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-81.05469\\-296.1187\\-23\\-83.00781\\-295.683\\-23\\-88.86719\\-294.7807\\-23\\-90.82031\\-294.2659\\-23\\-92.77344\\-293.4337\\-23\\-94.72656\\-292.843\\-23\\-98.63281\\-291.0425\\-23\\-102.5391\\-289.1779\\-23\\-104.4922\\-288.3926\\-23\\-104.8244\\-288.1484\\-23\\-108.328\\-286.1953\\-23\\-110.3516\\-284.9389\\-23\\-112.3047\\-283.5113\\-23\\-114.2578\\-282.5776\\-23\\-116.2109\\-281.2621\\-23\\-118.1641\\-279.7878\\-23\\-120.2098\\-278.3828\\-23\\-122.8896\\-276.4297\\-23\\-125.9766\\-273.9492\\-23\\-127.6474\\-272.5234\\-23\\-129.8828\\-270.4932\\-23\\-131.8359\\-268.8885\\-23\\-133.7891\\-267.0475\\-23\\-135.9566\\-264.7109\\-23\\-137.5394\\-262.7578\\-23\\-139.6484\\-260.4245\\-23\\-142.445\\-256.8984\\-23\\-143.8042\\-254.9453\\-23\\-144.9418\\-252.9922\\-23\\-147.7141\\-249.0859\\-23\\-148.6145\\-247.1328\\-23\\-149.7372\\-245.1797\\-23\\-150.5024\\-243.2266\\-23\\-151.6029\\-241.2734\\-23\\-152.3965\\-239.3203\\-23\\-153.4442\\-237.3672\\-23\\-154.1741\\-235.4141\\-23\\-154.8049\\-233.4609\\-23\\-155.6792\\-231.5078\\-23\\-156.179\\-229.5547\\-23\\-156.5341\\-227.6016\\-23\\-157.2932\\-225.6484\\-23\\-157.9174\\-223.6953\\-23\\-158.3003\\-221.7422\\-23\\-158.8056\\-219.7891\\-23\\-159.5567\\-217.8359\\-23\\-160.295\\-213.9297\\-23\\-160.7134\\-211.9766\\-23\\-161.2438\\-210.0234\\-23\\-161.6431\\-208.0703\\-23\\-162.0564\\-204.1641\\-23\\-162.4451\\-198.3047\\-23\\-163.1851\\-190.4922\\-23\\-163.4513\\-186.5859\\-23\\-163.5264\\-180.7266\\-23\\-163.4294\\-176.8203\\-23\\-163.3085\\-174.8672\\-23\\-162.4451\\-167.0547\\-23\\-161.991\\-161.1953\\-23\\-161.7615\\-159.2422\\-23\\-161.3909\\-157.2891\\-23\\-160.8028\\-155.3359\\-23\\-159.9375\\-151.4297\\-23\\-159.3914\\-149.4766\\-23\\-158.5342\\-147.5234\\-23\\-158.0191\\-145.5703\\-23\\-156.4559\\-141.6641\\-23\\-155.9933\\-139.7109\\-23\\-154.3893\\-135.8047\\-23\\-153.7044\\-133.8516\\-23\\-152.6712\\-131.8984\\-23\\-151.9355\\-129.9453\\-23\\-150.797\\-127.9922\\-23\\-150.0796\\-126.0391\\-23\\-148.9808\\-124.0859\\-23\\-148.2919\\-122.1328\\-23\\-147.0886\\-120.1797\\-23\\-146.1298\\-118.2266\\-23\\-144.892\\-116.2734\\-23\\-143.9779\\-114.3203\\-23\\-142.7901\\-112.3672\\-23\\-141.9573\\-110.4141\\-23\\-138.045\\-104.5547\\-23\\-135.7422\\-101.2788\\-23\\-133.7891\\-98.81622\\-23\\-131.8359\\-96.55808\\-23\\-129.8828\\-94.57115\\-23\\-125.24\\-90.88281\\-23\\-122.0703\\-88.55238\\-23\\-120.1172\\-87.78625\\-23\\-118.1641\\-86.52734\\-23\\-116.2109\\-85.69441\\-23\\-114.2578\\-84.57954\\-23\\-110.6934\\-83.07031\\-23\\-108.3984\\-82.19012\\-23\\-106.4453\\-81.72587\\-23\\-104.4922\\-80.70789\\-23\\-102.5391\\-80.33002\\-23\\-100.5859\\-79.41032\\-23\\-98.63281\\-78.88223\\-23\\-94.72656\\-77.63586\\-23\\-88.86719\\-76.28901\\-23\\-83.00781\\-75.72252\\-23\\-81.05469\\-74.97059\\-23\\-79.10156\\-74.7218\\-23\\-73.24219\\-74.3419\\-23\\-71.28906\\-74.39722\\-23\\-67.38281\\-74.32293\\-23\\-59.57031\\-74.23502\\-23\\-53.71094\\-74.24616\\-23\\-45.89844\\-74.53656\\-23\\-41.99219\\-74.76256\\-23\\-40.03906\\-74.94501\\-23\\-38.08594\\-75.44561\\-23\\-36.13281\\-75.77822\\-23\\-32.22656\\-76.22308\\-23\\-30.27344\\-76.5303\\-23\\-28.32031\\-77.03655\\-23\\-22.46094\\-79.06932\\-23\\-20.50781\\-79.95673\\-23\\-18.55469\\-80.67017\\-23\\-16.60156\\-81.73158\\-23\\-14.64844\\-82.47199\\-23\\-10.9933\\-85.02344\\-23\\-8.789063\\-86.8316\\-23\\-6.389293\\-88.92969\\-23\\-2.929688\\-91.72069\\-23\\-0.9765625\\-92.91303\\-23\\0.9765625\\-93.32107\\-23\\2.929688\\-92.52113\\-23\\4.882813\\-91.45528\\-23\\8.789063\\-87.88151\\-23\\11.74852\\-85.02344\\-23\\12.69531\\-84.02809\\-23\\14.64844\\-82.30927\\-23\\16.60156\\-81.02767\\-23\\18.55469\\-80.07264\\-23\\20.50781\\-78.92834\\-23\\24.41406\\-77.11098\\-23\\26.36719\\-76.36038\\-23\\28.32031\\-75.93956\\-23\\30.27344\\-75.10057\\-23\\32.22656\\-74.61341\\-23\\36.13281\\-74.11349\\-23\\38.08594\\-72.79101\\-23\\41.99219\\-71.74009\\-23\\43.94531\\-71.63816\\-23\\47.85156\\-71.62061\\-23\\49.80469\\-71.66751\\-23\\53.71094\\-71.62921\\-23\\55.66406\\-71.68997\\-23\\61.52344\\-71.72865\\-23\\65.42969\\-71.78898\\-23\\67.38281\\-72.58311\\-23\\73.24219\\-72.82507\\-23\\75.19531\\-72.95817\\-23\\77.14844\\-74.24056\\-23\\81.05469\\-74.41637\\-23\\84.96094\\-74.87173\\-23\\86.91406\\-75.59244\\-23\\92.77344\\-76.48153\\-23\\94.72656\\-77.02393\\-23\\98.63281\\-78.23688\\-23\\100.5859\\-78.92834\\-23\\102.5391\\-79.79702\\-23\\104.4922\\-80.26126\\-23\\106.4453\\-80.92793\\-23\\108.3984\\-81.81205\\-23\\110.3516\\-82.39703\\-23\\112.3047\\-83.42482\\-23\\114.2578\\-84.29376\\-23\\116.2109\\-85.49192\\-23\\118.1641\\-86.34395\\-23\\120.1172\\-87.60435\\-23\\122.0703\\-88.4175\\-23\\124.0234\\-89.85712\\-23\\125.9766\\-91.42182\\-23\\127.9297\\-92.79838\\-23\\129.8828\\-94.47379\\-23\\131.8359\\-96.37051\\-23\\133.8778\\-98.69531\\-23\\135.7422\\-101.163\\-23\\137.8338\\-104.5547\\-23\\138.9292\\-106.5078\\-23\\140.3623\\-108.4609\\-23\\141.3156\\-110.4141\\-23\\142.443\\-112.3672\\-23\\143.2147\\-114.3203\\-23\\144.2734\\-116.2734\\-23\\145.1239\\-118.2266\\-23\\146.2402\\-120.1797\\-23\\147.1102\\-122.1328\\-23\\148.11\\-124.0859\\-23\\148.7229\\-126.0391\\-23\\149.6452\\-127.9922\\-23\\150.9221\\-131.8984\\-23\\151.931\\-133.8516\\-23\\152.5934\\-135.8047\\-23\\153.4433\\-137.7578\\-23\\154.096\\-139.7109\\-23\\154.5917\\-141.6641\\-23\\155.8838\\-145.5703\\-23\\156.4927\\-149.4766\\-23\\156.9896\\-151.4297\\-23\\157.6613\\-153.3828\\-23\\158.0164\\-155.3359\\-23\\158.5904\\-159.2422\\-23\\159.5262\\-163.1484\\-23\\159.8045\\-165.1016\\-23\\160.6599\\-174.8672\\-23\\161.0508\\-178.7734\\-23\\161.349\\-182.6797\\-23\\161.4849\\-188.5391\\-23\\161.4957\\-196.3516\\-23\\161.4128\\-200.2578\\-23\\161.2283\\-204.1641\\-23\\160.9276\\-208.0703\\-23\\160.1313\\-215.8828\\-23\\159.6593\\-219.7891\\-23\\159.2605\\-221.7422\\-23\\158.6561\\-223.6953\\-23\\157.9061\\-227.6016\\-23\\157.3073\\-229.5547\\-23\\156.5496\\-231.5078\\-23\\156.1671\\-233.4609\\-23\\155.606\\-235.4141\\-23\\154.6497\\-237.3672\\-23\\153.996\\-239.3203\\-23\\152.8611\\-241.2734\\-23\\151.9104\\-243.2266\\-23\\150.5896\\-245.1797\\-23\\149.6601\\-247.1328\\-23\\148.4058\\-249.0859\\-23\\145.6586\\-252.9922\\-23\\143.5547\\-255.6208\\-23\\140.6864\\-258.8516\\-23\\137.6953\\-261.9723\\-23\\134.918\\-264.7109\\-23\\131.8359\\-267.6342\\-23\\128.3897\\-270.5703\\-23\\124.0234\\-274.0016\\-23\\120.1172\\-276.8511\\-23\\118.1641\\-278.0072\\-23\\114.2578\\-280.8176\\-23\\112.3047\\-281.7414\\-23\\110.3516\\-282.9337\\-23\\108.3984\\-283.7375\\-23\\106.4453\\-284.9236\\-23\\104.4922\\-285.8653\\-23\\102.5391\\-286.9777\\-23\\100.5859\\-287.6831\\-23\\98.63281\\-288.6829\\-23\\96.67969\\-289.1897\\-23\\94.72656\\-289.8093\\-23\\92.77344\\-290.7325\\-23\\90.82031\\-291.2213\\-23\\86.91406\\-292.6757\\-23\\83.00781\\-293.4161\\-23\\79.10156\\-294.3333\\-23\\77.14844\\-294.5962\\-23\\75.19531\\-294.7595\\-23\\71.28906\\-294.9259\\-23\\65.42969\\-294.9079\\-23\\61.52344\\-294.7358\\-23\\57.61719\\-294.3599\\-23\\53.71094\\-293.6132\\-23\\49.80469\\-293.0012\\-23\\47.85156\\-292.6009\\-23\\45.89844\\-292.5255\\-23\\43.94531\\-292.1768\\-23\\41.99219\\-291.7159\\-23\\40.03906\\-291.4317\\-23\\38.08594\\-291.2683\\-23\\34.17969\\-291.117\\-23\\30.27344\\-291.1763\\-23\\26.36719\\-291.4958\\-23\\22.46094\\-292.2904\\-23\\20.50781\\-292.5797\\-23\\12.69531\\-293.3869\\-23\\8.789063\\-293.9834\\-23\\6.835938\\-294.2256\\-23\\2.929688\\-294.4865\\-23\\-0.9765625\\-294.6159\\-23\\-8.789063\\-294.6447\\-23\\-10.74219\\-294.6074\\-23\\-18.55469\\-294.3489\\-23\\-24.41406\\-293.9846\\-23\\-28.32031\\-293.6186\\-23\\-32.22656\\-293.351\\-23\\-38.08594\\-293.1279\\-23\\-41.99219\\-293.194\\-23\\-43.94531\\-293.3399\\-23\\-45.89844\\-293.5977\\-23\\-49.80469\\-294.3265\\-23\\-51.75781\\-294.5739\\-23\\-57.61719\\-295.1033\\-23\\-61.52344\\-295.5262\\-23\\-67.38281\\-296.4201\\-23\\-73.24219\\-296.6445\\-23\\-77.14844\\-296.5372\\-23\\-79.10156\\-296.387\\-23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "285"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "115"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-77.14844\\-296.1187\\-21\\-83.00781\\-295.3458\\-21\\-86.91406\\-294.8897\\-21\\-88.86719\\-294.5248\\-21\\-92.77344\\-293.1357\\-21\\-94.72656\\-292.5684\\-21\\-96.67969\\-291.5215\\-21\\-98.63281\\-290.8203\\-21\\-100.5859\\-289.6907\\-21\\-102.5391\\-289.0212\\-21\\-106.4453\\-287.0025\\-21\\-108.3984\\-285.7361\\-21\\-110.3516\\-284.6523\\-21\\-112.3047\\-283.302\\-21\\-114.1168\\-282.2891\\-21\\-116.2109\\-281.011\\-21\\-117.0221\\-280.3359\\-21\\-120.1172\\-278.0157\\-21\\-122.0703\\-276.7481\\-21\\-124.0234\\-275.2773\\-21\\-127.3095\\-272.5234\\-21\\-133.7967\\-266.6641\\-21\\-137.2878\\-262.7578\\-21\\-140.7175\\-258.8516\\-21\\-142.2637\\-256.8984\\-21\\-144.7393\\-252.9922\\-21\\-146.189\\-251.0391\\-21\\-147.4609\\-249.0311\\-21\\-148.4911\\-247.1328\\-21\\-152.2111\\-239.3203\\-21\\-154.0154\\-235.4141\\-21\\-154.6123\\-233.4609\\-21\\-155.4184\\-231.5078\\-21\\-156.0535\\-229.5547\\-21\\-156.3985\\-227.6016\\-21\\-156.9245\\-225.6484\\-21\\-157.7234\\-223.6953\\-21\\-158.5673\\-219.7891\\-21\\-159.7786\\-215.8828\\-21\\-160.4949\\-211.9766\\-21\\-161.3909\\-208.0703\\-21\\-161.7163\\-206.1172\\-21\\-161.92\\-204.1641\\-21\\-162.3204\\-198.3047\\-21\\-162.8862\\-188.5391\\-21\\-163.0466\\-186.5859\\-21\\-163.1995\\-180.7266\\-21\\-162.9024\\-174.8672\\-21\\-162.5784\\-170.9609\\-21\\-162.1804\\-165.1016\\-21\\-161.8103\\-161.1953\\-21\\-161.5115\\-159.2422\\-21\\-160.4875\\-155.3359\\-21\\-159.7024\\-151.4297\\-21\\-158.917\\-149.4766\\-21\\-158.2905\\-147.5234\\-21\\-157.7691\\-145.5703\\-21\\-156.8346\\-143.6172\\-21\\-155.7342\\-139.7109\\-21\\-154.8462\\-137.7578\\-21\\-154.1776\\-135.8047\\-21\\-153.3579\\-133.8516\\-21\\-152.427\\-131.8984\\-21\\-151.6281\\-129.9453\\-21\\-150.5726\\-127.9922\\-21\\-149.8473\\-126.0391\\-21\\-148.778\\-124.0859\\-21\\-148.0801\\-122.1328\\-21\\-146.8418\\-120.1797\\-21\\-145.8839\\-118.2266\\-21\\-144.6649\\-116.2734\\-21\\-143.7124\\-114.3203\\-21\\-141.6254\\-110.4141\\-21\\-140.473\\-108.4609\\-21\\-139.0118\\-106.5078\\-21\\-136.5145\\-102.6016\\-21\\-135.0338\\-100.6484\\-21\\-131.8359\\-96.78658\\-21\\-129.8828\\-94.78027\\-21\\-125.0895\\-90.88281\\-21\\-122.0703\\-88.6875\\-21\\-120.1172\\-87.83181\\-21\\-118.1641\\-86.61462\\-21\\-116.2109\\-85.73784\\-21\\-114.2578\\-84.6365\\-21\\-108.3984\\-82.15314\\-21\\-106.4453\\-81.68965\\-21\\-104.4922\\-80.68552\\-21\\-102.5391\\-80.31123\\-21\\-100.5859\\-79.37822\\-21\\-94.72656\\-77.68853\\-21\\-92.77344\\-77.25096\\-21\\-90.82031\\-76.6851\\-21\\-88.86719\\-76.24785\\-21\\-83.00781\\-75.68506\\-21\\-81.05469\\-74.8816\\-21\\-77.14844\\-74.52539\\-21\\-73.24219\\-74.32977\\-21\\-69.33594\\-74.26955\\-21\\-65.42969\\-74.2636\\-21\\-59.57031\\-74.18359\\-21\\-51.75781\\-74.24574\\-21\\-43.94531\\-74.52856\\-21\\-40.03906\\-74.79448\\-21\\-38.08594\\-75.05605\\-21\\-36.13281\\-75.64707\\-21\\-30.27344\\-76.4057\\-21\\-28.32031\\-76.85523\\-21\\-24.41406\\-78.16466\\-21\\-22.46094\\-78.87109\\-21\\-20.50781\\-79.83019\\-21\\-18.55469\\-80.53776\\-21\\-16.60156\\-81.6553\\-21\\-14.64844\\-82.35244\\-21\\-10.74219\\-84.83707\\-21\\-6.835938\\-88.21122\\-21\\-4.882813\\-90.00185\\-21\\-2.929688\\-91.68066\\-21\\-0.9765625\\-92.41056\\-21\\0.9940011\\-92.83594\\-21\\2.929688\\-92.23036\\-21\\4.882813\\-91.01051\\-21\\6.835938\\-89.26296\\-21\\11.15829\\-85.02344\\-21\\13.4639\\-83.07031\\-21\\16.60156\\-80.84136\\-21\\18.55469\\-79.99664\\-21\\20.50781\\-78.77467\\-21\\24.41406\\-76.93694\\-21\\26.36719\\-76.25269\\-21\\28.32031\\-75.85252\\-21\\30.27344\\-74.94004\\-21\\32.22656\\-74.5238\\-21\\34.17969\\-74.28125\\-21\\36.13281\\-72.87\\-21\\40.03906\\-72.66914\\-21\\41.99219\\-71.76109\\-21\\43.94531\\-71.66691\\-21\\47.85156\\-71.60069\\-21\\55.66406\\-71.68666\\-21\\57.61719\\-71.66444\\-21\\61.52344\\-71.76733\\-21\\67.38281\\-71.72717\\-21\\69.33594\\-72.68324\\-21\\73.24219\\-72.82507\\-21\\75.19531\\-72.9686\\-21\\77.14844\\-74.22894\\-21\\81.05469\\-74.41637\\-21\\84.96094\\-74.85659\\-21\\86.91406\\-75.60609\\-21\\90.82031\\-76.17119\\-21\\92.77344\\-76.50806\\-21\\98.63281\\-78.28681\\-21\\102.5391\\-79.83694\\-21\\104.4922\\-80.30436\\-21\\106.4453\\-80.97108\\-21\\108.3984\\-81.84495\\-21\\110.3516\\-82.4377\\-21\\112.3047\\-83.47012\\-21\\114.2578\\-84.32668\\-21\\116.2109\\-85.52474\\-21\\118.1641\\-86.36077\\-21\\120.1172\\-87.64212\\-21\\122.0703\\-88.46233\\-21\\124.0234\\-89.89426\\-21\\125.9766\\-91.48235\\-21\\127.8363\\-92.83594\\-21\\129.8828\\-94.60189\\-21\\131.8359\\-96.63368\\-21\\133.7891\\-98.95753\\-21\\135.0935\\-100.6484\\-21\\136.473\\-102.6016\\-21\\137.4741\\-104.5547\\-21\\138.7165\\-106.5078\\-21\\140.0832\\-108.4609\\-21\\141.0391\\-110.4141\\-21\\142.2505\\-112.3672\\-21\\142.9542\\-114.3203\\-21\\144.0677\\-116.2734\\-21\\144.8272\\-118.2266\\-21\\145.9837\\-120.1797\\-21\\146.7881\\-122.1328\\-21\\147.8529\\-124.0859\\-21\\148.5103\\-126.0391\\-21\\150.116\\-129.9453\\-21\\150.6553\\-131.8984\\-21\\151.6029\\-133.8516\\-21\\153.0287\\-137.7578\\-21\\153.8826\\-139.7109\\-21\\154.8952\\-143.6172\\-21\\155.6085\\-145.5703\\-21\\156.0584\\-147.5234\\-21\\156.673\\-151.4297\\-21\\157.2932\\-153.3828\\-21\\157.8039\\-155.3359\\-21\\158.339\\-159.2422\\-21\\158.6709\\-161.1953\\-21\\159.5365\\-165.1016\\-21\\159.772\\-167.0547\\-21\\160.1166\\-170.9609\\-21\\160.9134\\-182.6797\\-21\\161.1097\\-188.5391\\-21\\161.1251\\-192.4453\\-21\\160.9809\\-200.2578\\-21\\160.5656\\-208.0703\\-21\\160.1072\\-213.9297\\-21\\159.6934\\-217.8359\\-21\\159.3018\\-219.7891\\-21\\158.7656\\-221.7422\\-21\\158.0404\\-225.6484\\-21\\157.6135\\-227.6016\\-21\\156.8185\\-229.5547\\-21\\155.9602\\-233.4609\\-21\\154.3916\\-237.3672\\-21\\153.6654\\-239.3203\\-21\\152.5018\\-241.2734\\-21\\151.3672\\-243.3808\\-21\\148.0455\\-249.0859\\-21\\143.6406\\-254.9453\\-21\\141.9847\\-256.8984\\-21\\137.6953\\-261.5156\\-21\\134.4329\\-264.7109\\-21\\131.8359\\-267.1523\\-21\\129.8828\\-268.8493\\-21\\125.9766\\-271.8579\\-21\\124.0234\\-273.5369\\-21\\122.0703\\-275.0937\\-21\\120.1172\\-276.2514\\-21\\118.1641\\-277.564\\-21\\116.2109\\-279.0359\\-21\\114.1385\\-280.3359\\-21\\110.3516\\-282.5103\\-21\\108.3984\\-283.3722\\-21\\106.4453\\-284.5298\\-21\\104.4922\\-285.4313\\-21\\102.5391\\-286.5948\\-21\\100.5859\\-287.3155\\-21\\98.63281\\-288.2344\\-21\\96.67969\\-288.9602\\-21\\94.72656\\-289.4161\\-21\\92.77344\\-290.2785\\-21\\90.82031\\-290.935\\-21\\88.86719\\-291.4245\\-21\\86.91406\\-292.2033\\-21\\84.96094\\-292.732\\-21\\81.05469\\-293.4011\\-21\\77.14844\\-294.2003\\-21\\75.19531\\-294.4541\\-21\\71.28906\\-294.6968\\-21\\67.38281\\-294.7521\\-21\\61.52344\\-294.5274\\-21\\57.61719\\-294.0608\\-21\\53.71094\\-293.3901\\-21\\47.85156\\-292.697\\-21\\45.89844\\-292.5255\\-21\\43.94531\\-292.2291\\-21\\41.99219\\-291.8123\\-21\\40.03906\\-291.5941\\-21\\36.13281\\-291.3946\\-21\\32.22656\\-291.4745\\-21\\30.27344\\-291.5818\\-21\\28.32031\\-291.8579\\-21\\24.41406\\-292.6168\\-21\\18.55469\\-293.2652\\-21\\14.64844\\-293.805\\-21\\12.69531\\-294.1484\\-21\\8.789063\\-294.5849\\-21\\4.882813\\-294.8145\\-21\\-0.9765625\\-294.9663\\-21\\-8.789063\\-294.9904\\-21\\-16.60156\\-294.8196\\-21\\-24.41406\\-294.5341\\-21\\-30.27344\\-294.046\\-21\\-32.22656\\-293.8096\\-21\\-36.13281\\-293.5133\\-21\\-40.03906\\-293.4126\\-21\\-41.99219\\-293.4472\\-21\\-45.89844\\-293.7852\\-21\\-49.80469\\-294.3466\\-21\\-53.71094\\-294.7054\\-21\\-61.52344\\-295.2911\\-21\\-65.42969\\-295.7059\\-21\\-67.38281\\-295.969\\-21\\-71.28906\\-296.2389\\-21\\-75.19531\\-296.263\\-21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "298"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "116"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.86719\\-294.2017\\-19\\-90.82031\\-293.4387\\-19\\-92.77344\\-292.8896\\-19\\-94.72656\\-292.1768\\-19\\-96.67969\\-291.2365\\-19\\-98.63281\\-290.5432\\-19\\-100.5859\\-289.4006\\-19\\-102.5391\\-288.8186\\-19\\-104.4922\\-287.6536\\-19\\-106.4453\\-286.761\\-19\\-108.3984\\-285.4243\\-19\\-112.3047\\-283.1163\\-19\\-114.2578\\-281.794\\-19\\-116.2109\\-280.7534\\-19\\-120.1172\\-277.6931\\-19\\-124.0234\\-275.0434\\-19\\-125.9766\\-273.4161\\-19\\-129.2641\\-270.5703\\-19\\-133.421\\-266.6641\\-19\\-137.6953\\-262.1043\\-19\\-138.7579\\-260.8047\\-19\\-140.5094\\-258.8516\\-19\\-142.0506\\-256.8984\\-19\\-143.2166\\-254.9453\\-19\\-144.5368\\-252.9922\\-19\\-145.9863\\-251.0391\\-19\\-147.1052\\-249.0859\\-19\\-148.3244\\-247.1328\\-19\\-149.1277\\-245.1797\\-19\\-150.2179\\-243.2266\\-19\\-150.9698\\-241.2734\\-19\\-152.0594\\-239.3203\\-19\\-152.8289\\-237.3672\\-19\\-153.8503\\-235.4141\\-19\\-154.4356\\-233.4609\\-19\\-155.8966\\-229.5547\\-19\\-156.691\\-225.6484\\-19\\-157.474\\-223.6953\\-19\\-157.9949\\-221.7422\\-19\\-158.8607\\-217.8359\\-19\\-159.5861\\-215.8828\\-19\\-160.6476\\-210.0234\\-19\\-161.5221\\-206.1172\\-19\\-161.7658\\-204.1641\\-19\\-162.0564\\-200.2578\\-19\\-162.2842\\-196.3516\\-19\\-162.495\\-190.4922\\-19\\-162.6779\\-186.5859\\-19\\-162.772\\-180.7266\\-19\\-162.6107\\-174.8672\\-19\\-162.3011\\-169.0078\\-19\\-162.0265\\-165.1016\\-19\\-161.589\\-161.1953\\-19\\-161.1713\\-159.2422\\-19\\-160.6383\\-157.2891\\-19\\-159.8712\\-153.3828\\-19\\-159.3541\\-151.4297\\-19\\-158.5644\\-149.4766\\-19\\-158.0702\\-147.5234\\-19\\-157.4383\\-145.5703\\-19\\-156.5491\\-143.6172\\-19\\-156.1166\\-141.6641\\-19\\-155.4349\\-139.7109\\-19\\-154.5786\\-137.7578\\-19\\-153.9498\\-135.8047\\-19\\-152.9833\\-133.8516\\-19\\-152.1801\\-131.8984\\-19\\-151.2211\\-129.9453\\-19\\-149.5625\\-126.0391\\-19\\-148.6044\\-124.0859\\-19\\-147.8392\\-122.1328\\-19\\-145.5078\\-118.2165\\-19\\-143.3893\\-114.3203\\-19\\-142.4731\\-112.3672\\-19\\-141.3215\\-110.4141\\-19\\-140.2856\\-108.4609\\-19\\-138.7707\\-106.5078\\-19\\-137.5016\\-104.5547\\-19\\-136.3551\\-102.6016\\-19\\-133.7891\\-99.37139\\-19\\-131.8359\\-97.05368\\-19\\-129.8828\\-95.01834\\-19\\-127.3519\\-92.83594\\-19\\-124.0234\\-90.17543\\-19\\-122.0703\\-88.85326\\-19\\-120.1172\\-87.88599\\-19\\-118.1641\\-86.69856\\-19\\-116.2109\\-85.78225\\-19\\-114.2578\\-84.75291\\-19\\-112.3047\\-83.83664\\-19\\-108.3984\\-82.15479\\-19\\-106.4453\\-81.68401\\-19\\-104.4922\\-80.64983\\-19\\-102.5391\\-80.29757\\-19\\-100.5859\\-79.37822\\-19\\-96.67969\\-78.28648\\-19\\-92.77344\\-77.31332\\-19\\-90.82031\\-76.66541\\-19\\-88.86719\\-76.23438\\-19\\-83.00781\\-75.68211\\-19\\-81.05469\\-74.84041\\-19\\-79.10156\\-74.59515\\-19\\-77.14844\\-74.4494\\-19\\-71.28906\\-74.33484\\-19\\-67.38281\\-74.22346\\-19\\-61.52344\\-74.20035\\-19\\-59.57031\\-74.01432\\-19\\-57.61719\\-74.00701\\-19\\-55.66406\\-74.16672\\-19\\-51.75781\\-73.99525\\-19\\-49.80469\\-74.29309\\-19\\-43.94531\\-74.44813\\-19\\-40.03906\\-74.68137\\-19\\-38.08594\\-74.90201\\-19\\-34.17969\\-75.78758\\-19\\-30.27344\\-76.31856\\-19\\-28.32031\\-76.68461\\-19\\-22.46094\\-78.72017\\-19\\-20.50781\\-79.67269\\-19\\-18.55469\\-80.38004\\-19\\-16.60156\\-81.43291\\-19\\-14.64844\\-82.21269\\-19\\-13.09275\\-83.07031\\-19\\-10.74219\\-84.57719\\-19\\-8.789063\\-86.3196\\-19\\-7.900551\\-86.97656\\-19\\-5.801505\\-88.92969\\-19\\-4.266401\\-90.88281\\-19\\-2.929688\\-92.05347\\-19\\-0.9765625\\-92.15449\\-19\\0.9765625\\-92.46895\\-19\\2.929688\\-91.9707\\-19\\4.596044\\-90.88281\\-19\\8.789063\\-87.17533\\-19\\10.74219\\-85.15082\\-19\\13.16445\\-83.07031\\-19\\16.60156\\-80.72798\\-19\\18.55469\\-79.906\\-19\\20.50781\\-78.61944\\-19\\22.46094\\-77.78653\\-19\\24.41406\\-76.80843\\-19\\26.36719\\-76.17446\\-19\\28.32031\\-75.77482\\-19\\30.27344\\-74.83611\\-19\\32.22656\\-74.47531\\-19\\34.17969\\-74.25218\\-19\\36.13281\\-72.85171\\-19\\40.03906\\-72.66249\\-19\\41.99219\\-71.77303\\-19\\45.89844\\-71.6513\\-19\\49.80469\\-71.60755\\-19\\51.75781\\-71.671\\-19\\57.61719\\-71.67064\\-19\\61.52344\\-71.76733\\-19\\65.42969\\-71.77303\\-19\\67.38281\\-71.72308\\-19\\69.33594\\-72.67616\\-19\\73.24219\\-72.81641\\-19\\75.19531\\-72.98988\\-19\\77.14844\\-74.21191\\-19\\79.10156\\-74.29295\\-19\\83.00781\\-74.60013\\-19\\84.96094\\-74.85659\\-19\\86.91406\\-75.63081\\-19\\90.82031\\-76.20565\\-19\\92.77344\\-76.55363\\-19\\94.72656\\-77.26352\\-19\\98.63281\\-78.40331\\-19\\102.5391\\-79.9023\\-19\\104.4922\\-80.36095\\-19\\108.3984\\-81.86506\\-19\\110.3516\\-82.46696\\-19\\112.3047\\-83.53323\\-19\\114.2578\\-84.37424\\-19\\116.2109\\-85.57513\\-19\\118.1641\\-86.41219\\-19\\120.1172\\-87.69517\\-19\\122.0703\\-88.52338\\-19\\124.0234\\-89.96616\\-19\\127.6495\\-92.83594\\-19\\129.8372\\-94.78906\\-19\\131.8359\\-96.91898\\-19\\133.7891\\-99.28639\\-19\\136.2953\\-102.6016\\-19\\137.1535\\-104.5547\\-19\\137.6953\\-105.2486\\-19\\139.7578\\-108.4609\\-19\\140.8031\\-110.4141\\-19\\141.9992\\-112.3672\\-19\\142.7471\\-114.3203\\-19\\143.7789\\-116.2734\\-19\\144.6145\\-118.2266\\-19\\145.6575\\-120.1797\\-19\\147.5143\\-124.0859\\-19\\148.335\\-126.0391\\-19\\148.9639\\-127.9922\\-19\\149.9023\\-129.9453\\-19\\150.4592\\-131.8984\\-19\\151.1659\\-133.8516\\-19\\152.0916\\-135.8047\\-19\\152.7063\\-137.7578\\-19\\153.5965\\-139.7109\\-19\\154.1741\\-141.6641\\-19\\154.6452\\-143.6172\\-19\\155.862\\-147.5234\\-19\\156.2088\\-149.4766\\-19\\156.4534\\-151.4297\\-19\\156.8427\\-153.3828\\-19\\157.4857\\-155.3359\\-19\\157.8863\\-157.2891\\-19\\158.6914\\-163.1484\\-19\\159.5158\\-167.0547\\-19\\159.9134\\-170.9609\\-19\\160.3829\\-178.7734\\-19\\160.6599\\-184.6328\\-19\\160.7281\\-192.4453\\-19\\160.6172\\-200.2578\\-19\\160.298\\-208.0703\\-19\\159.8931\\-213.9297\\-19\\159.685\\-215.8828\\-19\\159.3541\\-217.8359\\-19\\158.8286\\-219.7891\\-19\\158.4499\\-221.7422\\-19\\157.8026\\-225.6484\\-19\\156.529\\-229.5547\\-19\\156.1607\\-231.5078\\-19\\155.6792\\-233.4609\\-19\\154.7885\\-235.4141\\-19\\154.1516\\-237.3672\\-19\\152.2066\\-241.2734\\-19\\150.9638\\-243.2266\\-19\\150.0543\\-245.1797\\-19\\148.7523\\-247.1328\\-19\\147.6263\\-249.0859\\-19\\146.2387\\-251.0391\\-19\\144.6337\\-252.9922\\-19\\143.5547\\-254.4489\\-19\\141.6016\\-256.7961\\-19\\137.6953\\-260.9151\\-19\\135.8685\\-262.7578\\-19\\133.815\\-264.7109\\-19\\129.473\\-268.6172\\-19\\127.1045\\-270.5703\\-19\\124.6303\\-272.5234\\-19\\124.0234\\-273.1053\\-19\\122.0703\\-274.6274\\-19\\120.1172\\-275.7595\\-19\\118.1641\\-277.2122\\-19\\116.2109\\-278.5382\\-19\\114.2578\\-279.7287\\-19\\112.3047\\-281.0353\\-19\\110.3516\\-281.9834\\-19\\108.3984\\-283.0979\\-19\\106.4453\\-283.8929\\-19\\104.4922\\-285.0737\\-19\\100.5859\\-287.0063\\-19\\98.63281\\-287.7212\\-19\\96.67969\\-288.6732\\-19\\92.77344\\-289.7123\\-19\\90.82031\\-290.6046\\-19\\86.91406\\-291.5847\\-19\\84.96094\\-292.3365\\-19\\83.00781\\-292.756\\-19\\73.24219\\-294.2256\\-19\\69.33594\\-294.4738\\-19\\65.42969\\-294.4834\\-19\\61.52344\\-294.2641\\-19\\59.57031\\-294.0307\\-19\\53.71094\\-293.2255\\-19\\45.89844\\-292.5077\\-19\\41.99219\\-291.9578\\-19\\40.03906\\-291.802\\-19\\36.13281\\-291.7182\\-19\\32.22656\\-292.0013\\-19\\28.32031\\-292.5574\\-19\\22.46094\\-293.2501\\-19\\20.50781\\-293.5261\\-19\\16.60156\\-294.2798\\-19\\10.74219\\-294.8247\\-19\\4.882813\\-295.1265\\-19\\0.9765625\\-295.2378\\-19\\-2.929688\\-295.2868\\-19\\-8.789063\\-295.2994\\-19\\-16.60156\\-295.1003\\-19\\-24.41406\\-294.8236\\-19\\-30.27344\\-294.4961\\-19\\-36.13281\\-293.9544\\-19\\-40.03906\\-293.7377\\-19\\-43.94531\\-293.8256\\-19\\-47.85156\\-294.2101\\-19\\-55.66406\\-294.7781\\-19\\-61.52344\\-295.123\\-19\\-69.33594\\-295.6643\\-19\\-71.28906\\-295.7316\\-19\\-75.19531\\-295.7448\\-19\\-81.05469\\-295.3078\\-19\\-84.96094\\-294.9314\\-19\\-86.91406\\-294.6649\\-19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "295"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "117"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-294.3814\\-17\\-90.82031\\-293.1252\\-17\\-92.77344\\-292.6295\\-17\\-94.72656\\-291.6478\\-17\\-96.67969\\-290.9908\\-17\\-100.5859\\-289.2238\\-17\\-102.5391\\-288.5349\\-17\\-104.4922\\-287.3803\\-17\\-106.4453\\-286.4498\\-17\\-109.8501\\-284.2422\\-17\\-110.3516\\-283.8388\\-17\\-112.3047\\-282.8803\\-17\\-114.2578\\-281.5364\\-17\\-116.2109\\-280.4068\\-17\\-118.1641\\-278.9852\\-17\\-120.1172\\-277.4233\\-17\\-122.0703\\-276.0376\\-17\\-124.0234\\-274.7567\\-17\\-128.958\\-270.5703\\-17\\-131.8359\\-267.9283\\-17\\-135.0215\\-264.7109\\-17\\-137.6953\\-261.8253\\-17\\-140.2618\\-258.8516\\-17\\-141.7683\\-256.8984\\-17\\-142.9606\\-254.9453\\-17\\-143.5547\\-254.2129\\-17\\-145.5078\\-251.2425\\-17\\-146.8372\\-249.0859\\-17\\-148.1506\\-247.1328\\-17\\-148.9155\\-245.1797\\-17\\-150.0588\\-243.2266\\-17\\-150.7429\\-241.2734\\-17\\-151.8703\\-239.3203\\-17\\-152.622\\-237.3672\\-17\\-153.648\\-235.4141\\-17\\-154.8705\\-231.5078\\-17\\-155.6929\\-229.5547\\-17\\-156.1798\\-227.6016\\-17\\-156.5073\\-225.6484\\-17\\-157.1121\\-223.6953\\-17\\-157.8296\\-221.7422\\-17\\-158.6062\\-217.8359\\-17\\-159.3283\\-215.8828\\-17\\-159.8007\\-213.9297\\-17\\-160.7917\\-208.0703\\-17\\-161.243\\-206.1172\\-17\\-161.583\\-204.1641\\-17\\-161.9339\\-200.2578\\-17\\-162.1511\\-196.3516\\-17\\-162.4127\\-188.5391\\-17\\-162.5038\\-180.7266\\-17\\-162.4127\\-174.8672\\-17\\-162.1567\\-169.0078\\-17\\-161.8652\\-165.1016\\-17\\-161.6524\\-163.1484\\-17\\-161.2992\\-161.1953\\-17\\-160.3702\\-157.2891\\-17\\-159.6263\\-153.3828\\-17\\-158.8716\\-151.4297\\-17\\-157.8179\\-147.5234\\-17\\-156.9972\\-145.5703\\-17\\-156.367\\-143.6172\\-17\\-155.9393\\-141.6641\\-17\\-155.098\\-139.7109\\-17\\-153.6944\\-135.8047\\-17\\-152.6994\\-133.8516\\-17\\-151.9413\\-131.8984\\-17\\-150.8855\\-129.9453\\-17\\-150.1894\\-127.9922\\-17\\-149.1911\\-126.0391\\-17\\-148.4194\\-124.0859\\-17\\-147.5\\-122.1328\\-17\\-146.3712\\-120.1797\\-17\\-145.1348\\-118.2266\\-17\\-144.2562\\-116.2734\\-17\\-143.1089\\-114.3203\\-17\\-142.3215\\-112.3672\\-17\\-141.0973\\-110.4141\\-17\\-140.0706\\-108.4609\\-17\\-138.6041\\-106.5078\\-17\\-137.286\\-104.5547\\-17\\-136.2055\\-102.6016\\-17\\-133.7891\\-99.56608\\-17\\-131.8359\\-97.29688\\-17\\-129.8828\\-95.23296\\-17\\-127.1891\\-92.83594\\-17\\-125.9766\\-92.03645\\-17\\-124.0234\\-90.29556\\-17\\-121.9644\\-88.92969\\-17\\-120.1172\\-87.9593\\-17\\-118.1641\\-86.77681\\-17\\-116.2109\\-85.85183\\-17\\-112.3047\\-83.83611\\-17\\-108.3984\\-82.10741\\-17\\-106.4453\\-81.71551\\-17\\-104.4922\\-80.61159\\-17\\-102.5391\\-80.27931\\-17\\-100.5859\\-79.43717\\-17\\-92.77344\\-77.28358\\-17\\-90.82031\\-76.64806\\-17\\-88.86719\\-76.22768\\-17\\-83.00781\\-75.68805\\-17\\-81.05469\\-74.78876\\-17\\-77.14844\\-74.4882\\-17\\-71.28906\\-74.31066\\-17\\-63.47656\\-74.19405\\-17\\-61.52344\\-74.11437\\-17\\-59.57031\\-73.1303\\-17\\-55.66406\\-73.1431\\-17\\-53.71094\\-73.09299\\-17\\-49.80469\\-74.2283\\-17\\-43.94531\\-74.40257\\-17\\-40.03906\\-74.60457\\-17\\-36.13281\\-75.00967\\-17\\-34.17969\\-75.67634\\-17\\-28.32031\\-76.58618\\-17\\-26.36719\\-77.20331\\-17\\-22.46094\\-78.60995\\-17\\-20.50781\\-79.5276\\-17\\-18.55469\\-80.26347\\-17\\-16.61551\\-81.11719\\-17\\-12.69531\\-83.02893\\-17\\-9.790453\\-85.02344\\-17\\-7.473186\\-86.97656\\-17\\-5.366991\\-88.92969\\-17\\-2.929688\\-91.5542\\-17\\-0.9765625\\-91.94205\\-17\\0.9765625\\-92.15285\\-17\\2.929688\\-91.74593\\-17\\4.254482\\-90.88281\\-17\\6.571785\\-88.92969\\-17\\8.789063\\-86.86031\\-17\\10.74219\\-84.86196\\-17\\12.88859\\-83.07031\\-17\\16.60156\\-80.61866\\-17\\18.55469\\-79.64133\\-17\\20.50781\\-78.46834\\-17\\22.46094\\-77.69262\\-17\\24.41406\\-76.72581\\-17\\26.36719\\-76.11984\\-17\\28.32031\\-75.7162\\-17\\30.27344\\-74.75538\\-17\\34.17969\\-74.23502\\-17\\36.13281\\-72.82507\\-17\\38.08594\\-72.71983\\-17\\40.03906\\-72.29057\\-17\\41.99219\\-71.71135\\-17\\43.94531\\-71.75195\\-17\\45.89844\\-71.68666\\-17\\49.80469\\-71.66143\\-17\\51.75781\\-71.74038\\-17\\53.71094\\-71.68306\\-17\\59.57031\\-71.70033\\-17\\61.52344\\-71.806\\-17\\65.42969\\-71.90269\\-17\\67.38281\\-71.79359\\-17\\69.33594\\-72.66914\\-17\\73.24219\\-72.81641\\-17\\75.19531\\-72.98988\\-17\\77.14844\\-74.20657\\-17\\79.10156\\-74.29295\\-17\\83.00781\\-74.61341\\-17\\84.96094\\-74.84465\\-17\\86.91406\\-75.65517\\-17\\90.82031\\-76.22863\\-17\\92.77344\\-76.56615\\-17\\94.72656\\-77.36063\\-17\\98.63281\\-78.46974\\-17\\102.5391\\-79.95106\\-17\\104.4922\\-80.42749\\-17\\106.4453\\-81.23344\\-17\\110.3516\\-82.54398\\-17\\112.3047\\-83.58589\\-17\\114.2578\\-84.4229\\-17\\116.2109\\-85.61814\\-17\\118.1641\\-86.45615\\-17\\120.1172\\-87.7292\\-17\\122.0703\\-88.61156\\-17\\124.0234\\-90.03646\\-17\\127.476\\-92.83594\\-17\\129.6196\\-94.78906\\-17\\131.8359\\-97.21062\\-17\\134.6198\\-100.6484\\-17\\136.0478\\-102.6016\\-17\\136.8958\\-104.5547\\-17\\138.3124\\-106.5078\\-17\\139.3441\\-108.4609\\-17\\140.5814\\-110.4141\\-17\\141.673\\-112.3672\\-17\\142.5842\\-114.3203\\-17\\143.3919\\-116.2734\\-17\\144.3925\\-118.2266\\-17\\145.2421\\-120.1797\\-17\\146.327\\-122.1328\\-17\\147.14\\-124.0859\\-17\\148.1181\\-126.0391\\-17\\148.7056\\-127.9922\\-17\\149.6033\\-129.9453\\-17\\150.2789\\-131.8984\\-17\\150.8304\\-133.8516\\-17\\151.8584\\-135.8047\\-17\\152.434\\-137.7578\\-17\\153.9542\\-141.6641\\-17\\154.9316\\-145.5703\\-17\\155.6177\\-147.5234\\-17\\156.0631\\-149.4766\\-17\\156.5735\\-153.3828\\-17\\157.0168\\-155.3359\\-17\\157.6425\\-157.2891\\-17\\157.9652\\-159.2422\\-17\\158.4218\\-163.1484\\-17\\158.7003\\-165.1016\\-17\\159.4388\\-169.0078\\-17\\159.6593\\-170.9609\\-17\\160.0688\\-176.8203\\-17\\160.3845\\-184.6328\\-17\\160.4368\\-192.4453\\-17\\160.3505\\-200.2578\\-17\\160.0777\\-208.0703\\-17\\159.668\\-213.9297\\-17\\159.3667\\-215.8828\\-17\\158.8607\\-217.8359\\-17\\158.4913\\-219.7891\\-17\\157.9204\\-223.6953\\-17\\157.4623\\-225.6484\\-17\\156.7319\\-227.6016\\-17\\155.9476\\-231.5078\\-17\\154.5079\\-235.4141\\-17\\153.8635\\-237.3672\\-17\\152.7511\\-239.3203\\-17\\151.8642\\-241.2734\\-17\\150.6145\\-243.2266\\-17\\149.7004\\-245.1797\\-17\\147.4609\\-248.7162\\-17\\145.8571\\-251.0391\\-17\\143.5547\\-253.9455\\-17\\140.9895\\-256.8984\\-17\\139.0084\\-258.8516\\-17\\135.2896\\-262.7578\\-17\\129.8828\\-267.7484\\-17\\127.9297\\-269.4385\\-17\\125.9766\\-271.0136\\-17\\121.4913\\-274.4766\\-17\\118.1641\\-276.7623\\-17\\116.2109\\-277.867\\-17\\115.6106\\-278.3828\\-17\\112.3047\\-280.6119\\-17\\110.3516\\-281.5678\\-17\\108.3984\\-282.7841\\-17\\106.4453\\-283.486\\-17\\104.4922\\-284.6963\\-17\\102.5391\\-285.5268\\-17\\100.5859\\-286.6474\\-17\\98.63281\\-287.3473\\-17\\96.67969\\-288.2638\\-17\\94.72656\\-288.9673\\-17\\92.77344\\-289.3572\\-17\\88.86719\\-290.7924\\-17\\84.96094\\-291.6653\\-17\\83.00781\\-292.3586\\-17\\81.05469\\-292.7347\\-17\\71.28906\\-293.9086\\-17\\69.33594\\-294.0898\\-17\\65.42969\\-294.1597\\-17\\63.47656\\-294.0604\\-17\\59.57031\\-293.6983\\-17\\55.66406\\-293.2578\\-17\\47.85156\\-292.6009\\-17\\45.89844\\-292.4801\\-17\\41.99219\\-292.0923\\-17\\38.08594\\-292.1069\\-17\\32.22656\\-292.5372\\-17\\26.36719\\-293.1622\\-17\\22.46094\\-293.7965\\-17\\20.50781\\-294.2145\\-17\\18.55469\\-294.5215\\-17\\14.64844\\-294.8765\\-17\\8.789063\\-295.241\\-17\\0.9765625\\-295.6566\\-17\\-4.882813\\-295.748\\-17\\-8.789063\\-295.7464\\-17\\-12.69531\\-295.5939\\-17\\-16.60156\\-295.375\\-17\\-24.41406\\-295.045\\-17\\-32.22656\\-294.6281\\-17\\-40.03906\\-294.0886\\-17\\-43.94531\\-294.0604\\-17\\-55.66406\\-294.7054\\-17\\-63.47656\\-295.1018\\-17\\-69.33594\\-295.3412\\-17\\-71.28906\\-295.3839\\-17\\-75.19531\\-295.3662\\-17\\-79.10156\\-295.1959\\-17\\-83.00781\\-294.9134\\-17\\-84.96094\\-294.7045\\-17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "298"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "118"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-296.0313\\-15\\-16.60156\\-295.8171\\-15\\-20.50781\\-295.5026\\-15\\-24.41406\\-295.2536\\-15\\-36.13281\\-294.6083\\-15\\-41.99219\\-294.2605\\-15\\-43.94531\\-294.2605\\-15\\-49.80469\\-294.4023\\-15\\-57.61719\\-294.701\\-15\\-61.52344\\-294.8765\\-15\\-69.33594\\-295.1195\\-15\\-75.19531\\-295.1248\\-15\\-79.10156\\-294.9964\\-15\\-81.05469\\-294.8712\\-15\\-84.96094\\-294.4076\\-15\\-88.86719\\-293.3214\\-15\\-90.82031\\-292.8574\\-15\\-92.77344\\-292.1901\\-15\\-94.72656\\-291.2893\\-15\\-96.67969\\-290.7285\\-15\\-98.63281\\-289.64\\-15\\-100.5859\\-289.0411\\-15\\-102.5005\\-288.1484\\-15\\-104.4922\\-287.1025\\-15\\-108.3984\\-284.8683\\-15\\-110.3516\\-283.5256\\-15\\-112.3047\\-282.5754\\-15\\-115.7272\\-280.3359\\-15\\-118.4082\\-278.3828\\-15\\-121.22\\-276.4297\\-15\\-125.9766\\-272.8329\\-15\\-128.624\\-270.5703\\-15\\-131.8359\\-267.6472\\-15\\-134.7656\\-264.7109\\-15\\-137.6953\\-261.4936\\-15\\-139.974\\-258.8516\\-15\\-141.6016\\-256.6567\\-15\\-142.7313\\-254.9453\\-15\\-144.1515\\-252.9922\\-15\\-145.5078\\-250.7792\\-15\\-147.9362\\-247.1328\\-15\\-148.7523\\-245.1797\\-15\\-149.8684\\-243.2266\\-15\\-150.5777\\-241.2734\\-15\\-151.6181\\-239.3203\\-15\\-152.4201\\-237.3672\\-15\\-153.4011\\-235.4141\\-15\\-154.1049\\-233.4609\\-15\\-154.6623\\-231.5078\\-15\\-155.4612\\-229.5547\\-15\\-156.0486\\-227.6016\\-15\\-156.3771\\-225.6484\\-15\\-156.8264\\-223.6953\\-15\\-157.6036\\-221.7422\\-15\\-158.4201\\-217.8359\\-15\\-158.9423\\-215.8828\\-15\\-159.5956\\-213.9297\\-15\\-159.9398\\-211.9766\\-15\\-160.5188\\-208.0703\\-15\\-161.3253\\-204.1641\\-15\\-161.7697\\-200.2578\\-15\\-162.0975\\-194.3984\\-15\\-162.2344\\-190.4922\\-15\\-162.337\\-184.6328\\-15\\-162.337\\-178.7734\\-15\\-162.2041\\-172.9141\\-15\\-162.0028\\-169.0078\\-15\\-161.6649\\-165.1016\\-15\\-161.3647\\-163.1484\\-15\\-160.8851\\-161.1953\\-15\\-159.8079\\-155.3359\\-15\\-159.2605\\-153.3828\\-15\\-158.5379\\-151.4297\\-15\\-158.0908\\-149.4766\\-15\\-157.5414\\-147.5234\\-15\\-156.6805\\-145.5703\\-15\\-155.7067\\-141.6641\\-15\\-154.7953\\-139.7109\\-15\\-154.1549\\-137.7578\\-15\\-153.3579\\-135.8047\\-15\\-152.432\\-133.8516\\-15\\-151.6905\\-131.8984\\-15\\-150.6378\\-129.9453\\-15\\-149.9987\\-127.9922\\-15\\-148.9467\\-126.0391\\-15\\-148.2384\\-124.0859\\-15\\-147.0965\\-122.1328\\-15\\-146.1568\\-120.1797\\-15\\-144.8709\\-118.2266\\-15\\-144.0979\\-116.2734\\-15\\-142.9058\\-114.3203\\-15\\-142.136\\-112.3672\\-15\\-140.894\\-110.4141\\-15\\-139.797\\-108.4609\\-15\\-137.0733\\-104.5547\\-15\\-136.0397\\-102.6016\\-15\\-134.4819\\-100.6484\\-15\\-131.8359\\-97.54958\\-15\\-129.8828\\-95.43756\\-15\\-126.961\\-92.83594\\-15\\-125.9766\\-92.14628\\-15\\-124.0234\\-90.46225\\-15\\-121.6863\\-88.92969\\-15\\-118.1641\\-86.84584\\-15\\-116.2109\\-85.93171\\-15\\-114.2578\\-84.87483\\-15\\-112.3047\\-83.66578\\-15\\-108.3984\\-82.14915\\-15\\-106.4453\\-81.7523\\-15\\-104.4922\\-80.66811\\-15\\-102.5391\\-80.31818\\-15\\-100.5859\\-79.57567\\-15\\-98.63281\\-79.06932\\-15\\-94.72656\\-77.73022\\-15\\-90.82031\\-76.65591\\-15\\-88.86719\\-76.23438\\-15\\-83.00781\\-75.72252\\-15\\-81.05469\\-74.79688\\-15\\-77.14844\\-74.51897\\-15\\-73.24219\\-74.31102\\-15\\-67.38281\\-74.21107\\-15\\-63.47656\\-73.98026\\-15\\-61.52344\\-73.02286\\-15\\-55.66406\\-72.98988\\-15\\-51.75781\\-72.92766\\-15\\-49.80469\\-74.09493\\-15\\-47.85156\\-74.25218\\-15\\-41.99219\\-74.44813\\-15\\-38.08594\\-74.70076\\-15\\-36.13281\\-74.89923\\-15\\-34.17969\\-75.32986\\-15\\-32.22656\\-75.91089\\-15\\-28.32031\\-76.5303\\-15\\-26.36719\\-77.07349\\-15\\-24.41406\\-77.84001\\-15\\-22.46094\\-78.5076\\-15\\-20.50781\\-79.41196\\-15\\-16.60156\\-80.96875\\-15\\-14.64844\\-81.95691\\-15\\-12.69531\\-82.76926\\-15\\-10.74219\\-84.01517\\-15\\-9.380139\\-85.02344\\-15\\-4.882813\\-89.06048\\-15\\-2.929688\\-90.63362\\-15\\-0.9765625\\-91.70027\\-15\\0.9765625\\-91.86411\\-15\\2.929688\\-91.49316\\-15\\4.882813\\-90.14567\\-15\\6.332632\\-88.92969\\-15\\8.789063\\-86.63719\\-15\\10.74219\\-84.70499\\-15\\12.70581\\-83.07031\\-15\\14.64844\\-81.84961\\-15\\16.60156\\-80.50279\\-15\\18.55469\\-79.5679\\-15\\20.50781\\-78.38911\\-15\\22.46094\\-77.5975\\-15\\24.41406\\-76.64127\\-15\\26.36719\\-76.08367\\-15\\28.32031\\-75.68211\\-15\\30.27344\\-74.74494\\-15\\32.22656\\-74.44094\\-15\\34.17969\\-74.24056\\-15\\36.13281\\-72.84272\\-15\\38.08594\\-72.71983\\-15\\41.99219\\-71.71909\\-15\\45.89844\\-71.67709\\-15\\53.71094\\-71.69899\\-15\\61.52344\\-71.78005\\-15\\63.47656\\-71.93931\\-15\\65.42969\\-72.47699\\-15\\67.38281\\-72.04039\\-15\\69.33594\\-72.67616\\-15\\73.24219\\-72.80784\\-15\\75.19531\\-72.97916\\-15\\77.14844\\-74.21806\\-15\\81.05469\\-74.44094\\-15\\84.96094\\-74.90904\\-15\\86.91406\\-75.68671\\-15\\92.77344\\-76.62119\\-15\\94.72656\\-77.41179\\-15\\98.63281\\-78.53046\\-15\\100.5859\\-79.37384\\-15\\102.5391\\-79.99868\\-15\\104.4922\\-80.48492\\-15\\106.4453\\-81.31847\\-15\\110.3516\\-82.61114\\-15\\112.3047\\-83.67173\\-15\\114.2578\\-84.47903\\-15\\116.2109\\-85.67651\\-15\\118.1641\\-86.50808\\-15\\120.1172\\-87.76887\\-15\\122.0703\\-88.69318\\-15\\124.0234\\-90.10767\\-15\\127.3003\\-92.83594\\-15\\129.8828\\-95.25749\\-15\\131.8359\\-97.45731\\-15\\134.4159\\-100.6484\\-15\\135.7422\\-102.6129\\-15\\136.773\\-104.5547\\-15\\138.0253\\-106.5078\\-15\\139.0281\\-108.4609\\-15\\140.3562\\-110.4141\\-15\\141.3156\\-112.3672\\-15\\142.3966\\-114.3203\\-15\\143.063\\-116.2734\\-15\\144.1918\\-118.2266\\-15\\144.9169\\-120.1797\\-15\\146.065\\-122.1328\\-15\\146.8315\\-124.0859\\-15\\147.8556\\-126.0391\\-15\\149.2112\\-129.9453\\-15\\150.0921\\-131.8984\\-15\\150.6037\\-133.8516\\-15\\151.5026\\-135.8047\\-15\\152.2094\\-137.7578\\-15\\152.8073\\-139.7109\\-15\\153.692\\-141.6641\\-15\\154.2146\\-143.6172\\-15\\154.6368\\-145.5703\\-15\\155.8452\\-149.4766\\-15\\156.6819\\-155.3359\\-15\\157.7062\\-159.2422\\-15\\157.9812\\-161.1953\\-15\\158.6796\\-167.0547\\-15\\159.5764\\-172.9141\\-15\\159.8562\\-176.8203\\-15\\160.0329\\-180.7266\\-15\\160.1313\\-184.6328\\-15\\160.1959\\-190.4922\\-15\\160.1166\\-200.2578\\-15\\159.942\\-206.1172\\-15\\159.7259\\-210.0234\\-15\\159.5365\\-211.9766\\-15\\158.9073\\-215.8828\\-15\\158.5305\\-217.8359\\-15\\157.997\\-221.7422\\-15\\157.633\\-223.6953\\-15\\156.9609\\-225.6484\\-15\\156.4534\\-227.6016\\-15\\156.1355\\-229.5547\\-15\\155.6792\\-231.5078\\-15\\154.8462\\-233.4609\\-15\\154.2398\\-235.4141\\-15\\153.3203\\-237.5733\\-15\\151.4048\\-241.2734\\-15\\148.1981\\-247.1328\\-15\\145.5078\\-250.7513\\-15\\143.9054\\-252.9922\\-15\\142.3001\\-254.9453\\-15\\140.5158\\-256.8984\\-15\\139.6484\\-257.6518\\-15\\135.7422\\-261.7338\\-15\\130.5013\\-266.6641\\-15\\129.8828\\-267.3267\\-15\\127.9297\\-269.0504\\-15\\125.9766\\-270.3718\\-15\\124.0234\\-271.8961\\-15\\122.0703\\-273.5804\\-15\\120.1172\\-275.0861\\-15\\118.1641\\-276.1913\\-15\\116.2109\\-277.5002\\-15\\114.2578\\-278.9485\\-15\\110.3516\\-281.2254\\-15\\108.3862\\-282.2891\\-15\\104.4922\\-284.139\\-15\\100.5859\\-286.1419\\-15\\98.63281\\-287.0364\\-15\\96.67969\\-287.7212\\-15\\94.72656\\-288.6367\\-15\\90.82031\\-289.5426\\-15\\88.86719\\-290.3525\\-15\\86.91406\\-290.912\\-15\\83.00781\\-291.6653\\-15\\81.05469\\-292.3138\\-15\\79.10156\\-292.6569\\-15\\73.24219\\-293.2781\\-15\\69.33594\\-293.5949\\-15\\65.42969\\-293.6869\\-15\\63.47656\\-293.6317\\-15\\59.57031\\-293.4064\\-15\\51.75781\\-292.827\\-15\\49.80469\\-292.2679\\-15\\47.85156\\-292.4611\\-15\\45.89844\\-292.4611\\-15\\41.99219\\-292.2785\\-15\\40.03906\\-292.3365\\-15\\34.17969\\-292.704\\-15\\30.27344\\-293.0626\\-15\\26.36719\\-293.6104\\-15\\22.46094\\-294.4103\\-15\\18.55469\\-294.8406\\-15\\8.789063\\-295.6307\\-15\\4.882813\\-296.0161\\-15\\0.9765625\\-296.2865\\-15\\-4.882813\\-296.3898\\-15\\-8.789063\\-296.3556\\-15\\-10.74219\\-296.2865\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "293"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "119"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-296.1869\\-13\\-24.41406\\-295.4925\\-13\\-30.27344\\-295.0949\\-13\\-34.17969\\-294.8897\\-13\\-40.03906\\-294.5241\\-13\\-43.94531\\-294.3894\\-13\\-49.80469\\-294.4153\\-13\\-55.66406\\-294.5365\\-13\\-65.42969\\-294.8526\\-13\\-71.28906\\-294.9542\\-13\\-75.19531\\-294.9245\\-13\\-79.10156\\-294.7687\\-13\\-81.05469\\-294.6326\\-13\\-83.00781\\-294.3839\\-13\\-86.91406\\-293.4055\\-13\\-90.82031\\-292.5341\\-13\\-92.77344\\-291.6158\\-13\\-96.67969\\-290.3525\\-13\\-98.63281\\-289.363\\-13\\-100.5859\\-288.8226\\-13\\-102.5391\\-287.7046\\-13\\-104.4922\\-286.8403\\-13\\-106.4453\\-285.5502\\-13\\-108.3984\\-284.524\\-13\\-112.3047\\-282.1108\\-13\\-114.2578\\-281.0668\\-13\\-118.1641\\-278.1387\\-13\\-120.1172\\-276.9433\\-13\\-123.392\\-274.4766\\-13\\-128.2193\\-270.5703\\-13\\-129.8828\\-269.1375\\-13\\-131.8359\\-267.335\\-13\\-134.4558\\-264.7109\\-13\\-137.6953\\-261.1356\\-13\\-141.6016\\-256.2738\\-13\\-143.8917\\-252.9922\\-13\\-144.971\\-251.0391\\-13\\-146.4088\\-249.0859\\-13\\-147.6819\\-247.1328\\-13\\-148.5797\\-245.1797\\-13\\-149.6048\\-243.2266\\-13\\-150.4019\\-241.2734\\-13\\-152.2418\\-237.3672\\-13\\-153.9657\\-233.4609\\-13\\-154.4696\\-231.5078\\-13\\-155.8926\\-227.6016\\-13\\-156.6185\\-223.6953\\-13\\-157.8863\\-219.7891\\-13\\-158.6538\\-215.8828\\-13\\-159.3018\\-213.9297\\-13\\-159.759\\-211.9766\\-13\\-160.6445\\-206.1172\\-13\\-161.338\\-202.2109\\-13\\-161.7576\\-198.3047\\-13\\-162.0447\\-192.4453\\-13\\-162.1388\\-188.5391\\-13\\-162.2106\\-182.6797\\-13\\-162.1868\\-178.7734\\-13\\-162.1094\\-174.8672\\-13\\-161.9623\\-170.9609\\-13\\-161.6338\\-167.0547\\-13\\-161.377\\-165.1016\\-13\\-160.5636\\-161.1953\\-13\\-159.925\\-157.2891\\-13\\-159.5365\\-155.3359\\-13\\-158.7981\\-153.3828\\-13\\-158.274\\-151.4297\\-13\\-157.8724\\-149.4766\\-13\\-157.1094\\-147.5234\\-13\\-156.4584\\-145.5703\\-13\\-156.0535\\-143.6172\\-13\\-155.3897\\-141.6641\\-13\\-154.5548\\-139.7109\\-13\\-153.9498\\-137.7578\\-13\\-152.9744\\-135.8047\\-13\\-152.2096\\-133.8516\\-13\\-150.4132\\-129.9453\\-13\\-149.7516\\-127.9922\\-13\\-148.7221\\-126.0391\\-13\\-148.0049\\-124.0859\\-13\\-146.8159\\-122.1328\\-13\\-145.931\\-120.1797\\-13\\-144.6931\\-118.2266\\-13\\-143.8546\\-116.2734\\-13\\-142.7274\\-114.3203\\-13\\-141.8981\\-112.3672\\-13\\-141.6016\\-111.9822\\-13\\-139.6484\\-108.6913\\-13\\-138.2825\\-106.5078\\-13\\-136.8293\\-104.5547\\-13\\-135.7677\\-102.6016\\-13\\-134.3122\\-100.6484\\-13\\-129.8828\\-95.72285\\-13\\-126.6731\\-92.83594\\-13\\-124.0234\\-90.63669\\-13\\-122.0703\\-89.43212\\-13\\-120.1172\\-88.08247\\-13\\-116.2109\\-86.03487\\-13\\-114.2578\\-84.90137\\-13\\-112.3047\\-83.62014\\-13\\-110.3516\\-83.07866\\-13\\-108.3984\\-82.23033\\-13\\-106.4453\\-81.77938\\-13\\-104.4922\\-80.76947\\-13\\-102.5391\\-80.39858\\-13\\-98.63281\\-79.14135\\-13\\-94.72656\\-77.69922\\-13\\-92.77344\\-77.25303\\-13\\-90.82031\\-76.7043\\-13\\-88.86719\\-76.27136\\-13\\-83.00781\\-75.71219\\-13\\-81.05469\\-74.72724\\-13\\-77.14844\\-74.45472\\-13\\-73.24219\\-74.25758\\-13\\-69.33594\\-74.20035\\-13\\-67.38281\\-74.07198\\-13\\-65.42969\\-73.33458\\-13\\-63.47656\\-72.97916\\-13\\-61.52344\\-72.94787\\-13\\-51.75781\\-72.90796\\-13\\-49.80469\\-73.97607\\-13\\-47.85156\\-74.21191\\-13\\-41.99219\\-74.40257\\-13\\-38.08594\\-74.63576\\-13\\-36.13281\\-74.83611\\-13\\-34.17969\\-75.24917\\-13\\-32.22656\\-75.85735\\-13\\-28.32031\\-76.43783\\-13\\-26.36719\\-76.92697\\-13\\-24.41406\\-77.733\\-13\\-22.46094\\-78.32619\\-13\\-20.50781\\-79.26644\\-13\\-18.55469\\-80.0927\\-13\\-16.60156\\-80.80614\\-13\\-14.64844\\-81.86983\\-13\\-12.69531\\-82.57867\\-13\\-10.74219\\-83.8503\\-13\\-9.143391\\-85.02344\\-13\\-4.658048\\-88.92969\\-13\\-2.929688\\-90.27397\\-13\\-0.9765625\\-91.42182\\-13\\0.9765625\\-91.61015\\-13\\2.929688\\-91.19762\\-13\\4.882813\\-89.92632\\-13\\8.789063\\-86.4756\\-13\\10.74219\\-84.57834\\-13\\12.69531\\-82.91439\\-13\\16.60156\\-80.41876\\-13\\18.55469\\-79.49698\\-13\\20.50781\\-78.31567\\-13\\22.46094\\-77.48494\\-13\\24.41406\\-76.50011\\-13\\28.32031\\-75.60456\\-13\\30.27344\\-74.72451\\-13\\32.22656\\-74.42683\\-13\\34.17969\\-74.22955\\-13\\36.13281\\-72.82507\\-13\\38.08594\\-72.72738\\-13\\41.99219\\-71.75673\\-13\\43.94531\\-71.7076\\-13\\55.66406\\-71.72133\\-13\\61.52344\\-71.79546\\-13\\65.42969\\-72.5815\\-13\\67.38281\\-72.4245\\-13\\69.33594\\-72.6904\\-13\\73.24219\\-72.83385\\-13\\75.19531\\-73.00072\\-13\\77.14844\\-74.22346\\-13\\79.10156\\-74.31066\\-13\\83.00781\\-74.64494\\-13\\84.96094\\-74.96642\\-13\\86.91406\\-75.69401\\-13\\90.82031\\-76.30994\\-13\\92.77344\\-76.67415\\-13\\94.72656\\-77.47543\\-13\\98.63281\\-78.60688\\-13\\100.5859\\-79.45211\\-13\\104.4922\\-80.53635\\-13\\106.4453\\-81.43563\\-13\\110.3516\\-82.66781\\-13\\112.3047\\-83.73911\\-13\\114.2578\\-84.54382\\-13\\116.2109\\-85.73527\\-13\\118.1641\\-86.5873\\-13\\120.1172\\-87.80054\\-13\\122.0703\\-88.79581\\-13\\124.0234\\-90.18346\\-13\\127.1217\\-92.83594\\-13\\129.8828\\-95.47343\\-13\\134.2036\\-100.6484\\-13\\136.6328\\-104.5547\\-13\\137.6374\\-106.5078\\-13\\138.7848\\-108.4609\\-13\\140.1098\\-110.4141\\-13\\140.9973\\-112.3672\\-13\\142.1795\\-114.3203\\-13\\142.8145\\-116.2734\\-13\\143.9141\\-118.2266\\-13\\144.6667\\-120.1797\\-13\\145.7316\\-122.1328\\-13\\147.5152\\-126.0391\\-13\\148.3109\\-127.9922\\-13\\148.8928\\-129.9453\\-13\\149.8443\\-131.8984\\-13\\151.051\\-135.8047\\-13\\151.9686\\-137.7578\\-13\\152.5248\\-139.7109\\-13\\153.3203\\-141.6803\\-13\\153.9844\\-143.6172\\-13\\154.8952\\-147.5234\\-13\\155.5657\\-149.4766\\-13\\155.9602\\-151.4297\\-13\\156.451\\-155.3359\\-13\\156.7948\\-157.2891\\-13\\157.3351\\-159.2422\\-13\\157.7402\\-161.1953\\-13\\158.0029\\-163.1484\\-13\\158.8499\\-170.9609\\-13\\159.4388\\-174.8672\\-13\\159.6327\\-176.8203\\-13\\159.8255\\-180.7266\\-13\\159.9459\\-186.5859\\-13\\159.9796\\-190.4922\\-13\\159.9381\\-196.3516\\-13\\159.8597\\-202.2109\\-13\\159.7016\\-206.1172\\-13\\159.3791\\-210.0234\\-13\\158.7656\\-213.9297\\-13\\158.0436\\-219.7891\\-13\\157.7402\\-221.7422\\-13\\156.5979\\-225.6484\\-13\\155.9053\\-229.5547\\-13\\154.5485\\-233.4609\\-13\\153.9615\\-235.4141\\-13\\152.9284\\-237.3672\\-13\\152.101\\-239.3203\\-13\\150.8992\\-241.2734\\-13\\150.046\\-243.2266\\-13\\148.8095\\-245.1797\\-13\\147.8167\\-247.1328\\-13\\146.3917\\-249.0859\\-13\\144.7707\\-251.0391\\-13\\141.8906\\-254.9453\\-13\\140.0681\\-256.8984\\-13\\138.109\\-258.8516\\-13\\135.7422\\-261.3681\\-13\\134.2969\\-262.7578\\-13\\129.8828\\-266.7893\\-13\\127.7513\\-268.6172\\-13\\125.9766\\-269.8643\\-13\\122.0703\\-273.1508\\-13\\120.1172\\-274.5765\\-13\\118.1641\\-275.7675\\-13\\116.2109\\-277.1463\\-13\\112.3047\\-279.5678\\-13\\110.3516\\-280.8873\\-13\\108.3984\\-281.7473\\-13\\106.4453\\-282.9337\\-13\\104.4922\\-283.6318\\-13\\102.5391\\-284.7977\\-13\\100.5859\\-285.6011\\-13\\98.63281\\-286.6836\\-13\\96.67969\\-287.3189\\-13\\92.77344\\-288.8558\\-13\\88.86719\\-289.7096\\-13\\86.91406\\-290.5157\\-13\\84.96094\\-290.9365\\-13\\81.05469\\-291.6091\\-13\\79.10156\\-292.1632\\-13\\77.14844\\-292.5574\\-13\\73.24219\\-292.9705\\-13\\69.33594\\-293.2386\\-13\\67.38281\\-293.2879\\-13\\63.47656\\-293.2838\\-13\\59.57031\\-293.1639\\-13\\55.66406\\-292.9671\\-13\\51.75781\\-292.7212\\-13\\50.32626\\-292.0547\\-13\\49.80469\\-291.6297\\-13\\47.85156\\-292.4416\\-13\\41.99219\\-292.4115\\-13\\34.17969\\-292.9356\\-13\\30.27344\\-293.3982\\-13\\28.32031\\-293.7318\\-13\\26.36719\\-294.1742\\-13\\22.46094\\-294.7493\\-13\\14.64844\\-295.4529\\-13\\10.74219\\-296.0006\\-13\\6.835938\\-296.4001\\-13\\2.929688\\-296.6022\\-13\\-0.9765625\\-296.71\\-13\\-8.789063\\-296.71\\-13\\-14.64844\\-296.511\\-13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "299"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "120"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-296.1473\\-11\\-24.41406\\-295.8456\\-11\\-28.32031\\-295.3965\\-11\\-30.27344\\-295.2456\\-11\\-40.03906\\-294.6609\\-11\\-43.94531\\-294.4992\\-11\\-49.80469\\-294.4153\\-11\\-55.66406\\-294.458\\-11\\-63.47656\\-294.6197\\-11\\-67.38281\\-294.7296\\-11\\-73.24219\\-294.7372\\-11\\-77.14844\\-294.6159\\-11\\-79.10156\\-294.5056\\-11\\-81.05469\\-294.2878\\-11\\-84.96094\\-293.4626\\-11\\-88.86719\\-292.7145\\-11\\-92.77344\\-291.2766\\-11\\-94.72656\\-290.7473\\-11\\-96.67969\\-289.805\\-11\\-100.5859\\-288.5155\\-11\\-102.5391\\-287.3781\\-11\\-104.4922\\-286.5163\\-11\\-104.9057\\-286.1953\\-11\\-108.1473\\-284.2422\\-11\\-110.3516\\-283.0465\\-11\\-112.3047\\-281.7533\\-11\\-114.2578\\-280.778\\-11\\-116.2109\\-279.3413\\-11\\-118.1641\\-277.7725\\-11\\-120.1172\\-276.6161\\-11\\-122.0703\\-275.2513\\-11\\-124.0234\\-273.682\\-11\\-125.9766\\-271.9831\\-11\\-129.8828\\-268.8474\\-11\\-131.8359\\-267.0066\\-11\\-134.1368\\-264.7109\\-11\\-136.0021\\-262.7578\\-11\\-137.6953\\-260.7121\\-11\\-139.1341\\-258.8516\\-11\\-140.8165\\-256.8984\\-11\\-142.3689\\-254.9453\\-11\\-144.7206\\-251.0391\\-11\\-146.1848\\-249.0859\\-11\\-147.4609\\-246.9375\\-11\\-148.3948\\-245.1797\\-11\\-150.26\\-241.2734\\-11\\-150.9752\\-239.3203\\-11\\-152.0759\\-237.3672\\-11\\-152.7926\\-235.4141\\-11\\-153.7816\\-233.4609\\-11\\-154.9177\\-229.5547\\-11\\-155.69\\-227.6016\\-11\\-156.1302\\-225.6484\\-11\\-156.4605\\-223.6953\\-11\\-156.9465\\-221.7422\\-11\\-157.7348\\-219.7891\\-11\\-158.4806\\-215.8828\\-11\\-158.968\\-213.9297\\-11\\-159.5861\\-211.9766\\-11\\-159.9459\\-210.0234\\-11\\-160.4724\\-206.1172\\-11\\-161.1405\\-202.2109\\-11\\-161.6399\\-198.3047\\-11\\-161.8726\\-194.3984\\-11\\-162.0509\\-186.5859\\-11\\-162.0502\\-178.7734\\-11\\-161.9623\\-174.8672\\-11\\-161.7818\\-170.9609\\-11\\-161.377\\-167.0547\\-11\\-160.593\\-163.1484\\-11\\-159.688\\-157.2891\\-11\\-158.4977\\-153.3828\\-11\\-157.5936\\-149.4766\\-11\\-156.7513\\-147.5234\\-11\\-155.862\\-143.6172\\-11\\-155.0078\\-141.6641\\-11\\-153.7122\\-137.7578\\-11\\-152.6673\\-135.8047\\-11\\-151.9897\\-133.8516\\-11\\-150.9752\\-131.8984\\-11\\-149.4385\\-127.9922\\-11\\-148.4938\\-126.0391\\-11\\-147.731\\-124.0859\\-11\\-146.628\\-122.1328\\-11\\-145.6586\\-120.1797\\-11\\-144.5038\\-118.2266\\-11\\-141.6098\\-112.3672\\-11\\-140.4832\\-110.4141\\-11\\-139.1438\\-108.4609\\-11\\-138.0846\\-106.5078\\-11\\-136.7188\\-104.5547\\-11\\-135.7422\\-102.9942\\-11\\-134.0736\\-100.6484\\-11\\-132.4219\\-98.69531\\-11\\-129.8828\\-95.95669\\-11\\-127.9297\\-94.10012\\-11\\-125.9766\\-92.44663\\-11\\-123.9355\\-90.88281\\-11\\-122.0703\\-89.60526\\-11\\-120.1172\\-88.16336\\-11\\-118.1641\\-87.39509\\-11\\-112.3047\\-83.7507\\-11\\-110.3516\\-83.33527\\-11\\-108.3984\\-82.36196\\-11\\-106.4453\\-81.83641\\-11\\-104.4922\\-80.97999\\-11\\-102.5391\\-80.48529\\-11\\-100.5859\\-79.8555\\-11\\-96.67969\\-78.42637\\-11\\-94.72656\\-77.7984\\-11\\-92.77344\\-77.36428\\-11\\-90.82031\\-76.80972\\-11\\-88.86719\\-76.3555\\-11\\-86.91406\\-76.09391\\-11\\-83.00781\\-75.68805\\-11\\-81.05469\\-74.67035\\-11\\-79.10156\\-74.47523\\-11\\-69.33594\\-74.09224\\-11\\-67.38281\\-73.16925\\-11\\-65.42969\\-72.92766\\-11\\-57.61719\\-72.85171\\-11\\-53.71094\\-72.90796\\-11\\-51.75781\\-72.87931\\-11\\-49.80469\\-73.15608\\-11\\-47.85156\\-74.19405\\-11\\-41.99219\\-74.35314\\-11\\-38.08594\\-74.59138\\-11\\-36.13281\\-74.78761\\-11\\-34.17969\\-75.19837\\-11\\-32.22656\\-75.80244\\-11\\-28.32031\\-76.36496\\-11\\-26.36719\\-76.82967\\-11\\-24.41406\\-77.6358\\-11\\-22.46094\\-78.25524\\-11\\-20.50781\\-79.06932\\-11\\-18.55469\\-80.01041\\-11\\-16.60156\\-80.66281\\-11\\-14.64844\\-81.7487\\-11\\-12.69531\\-82.35109\\-11\\-8.889457\\-85.02344\\-11\\-2.929688\\-89.9422\\-11\\-0.9765625\\-90.98199\\-11\\0.9765625\\-91.31081\\-11\\2.929688\\-90.73421\\-11\\4.882813\\-89.72092\\-11\\8.789063\\-86.32349\\-11\\10.74219\\-84.46629\\-11\\12.69531\\-82.75751\\-11\\15.21721\\-81.11719\\-11\\18.55469\\-79.38705\\-11\\20.50781\\-78.27682\\-11\\24.41406\\-76.45426\\-11\\26.36719\\-76.02339\\-11\\30.27344\\-74.69099\\-11\\32.22656\\-74.40257\\-11\\34.17969\\-74.21806\\-11\\36.13281\\-72.81641\\-11\\38.08594\\-72.71983\\-11\\40.03906\\-72.32813\\-11\\41.99219\\-71.75246\\-11\\49.80469\\-71.71777\\-11\\53.71094\\-71.67383\\-11\\55.66406\\-71.7441\\-11\\59.57031\\-71.756\\-11\\63.47656\\-71.91095\\-11\\65.42969\\-72.20313\\-11\\67.38281\\-72.61317\\-11\\73.24219\\-72.82507\\-11\\75.19531\\-73.00072\\-11\\77.14844\\-74.23502\\-11\\79.10156\\-74.3286\\-11\\83.00781\\-74.66368\\-11\\84.96094\\-75.00762\\-11\\86.91406\\-75.72375\\-11\\90.82031\\-76.31625\\-11\\92.77344\\-76.7607\\-11\\94.72656\\-77.56065\\-11\\98.63281\\-78.67886\\-11\\100.5859\\-79.50105\\-11\\104.4922\\-80.60911\\-11\\106.4453\\-81.52294\\-11\\110.3516\\-82.73569\\-11\\112.3047\\-83.79987\\-11\\114.2578\\-84.60749\\-11\\116.2109\\-85.79894\\-11\\118.1641\\-86.66267\\-11\\120.1172\\-87.83181\\-11\\122.0703\\-88.889\\-11\\124.0234\\-90.28639\\-11\\124.5968\\-90.88281\\-11\\126.9393\\-92.83594\\-11\\129.014\\-94.78906\\-11\\129.8828\\-95.70506\\-11\\132.3785\\-98.69531\\-11\\133.9063\\-100.6484\\-11\\136.4425\\-104.5547\\-11\\137.289\\-106.5078\\-11\\137.6953\\-107.0232\\-11\\139.7839\\-110.4141\\-11\\140.7429\\-112.3672\\-11\\141.9126\\-114.3203\\-11\\142.6331\\-116.2734\\-11\\143.5785\\-118.2266\\-11\\145.2933\\-122.1328\\-11\\146.3456\\-124.0859\\-11\\147.1286\\-126.0391\\-11\\148.1099\\-127.9922\\-11\\148.6739\\-129.9453\\-11\\149.5007\\-131.8984\\-11\\150.22\\-133.8516\\-11\\150.7303\\-135.8047\\-11\\151.6641\\-137.7578\\-11\\152.9009\\-141.6641\\-11\\153.7246\\-143.6172\\-11\\154.6123\\-147.5234\\-11\\155.735\\-151.4297\\-11\\156.0752\\-153.3828\\-11\\156.5265\\-157.2891\\-11\\156.8646\\-159.2422\\-11\\157.3882\\-161.1953\\-11\\157.7728\\-163.1484\\-11\\157.997\\-165.1016\\-11\\158.5449\\-170.9609\\-11\\158.9788\\-174.8672\\-11\\159.2605\\-176.8203\\-11\\159.4272\\-178.7734\\-11\\159.6505\\-182.6797\\-11\\159.7678\\-190.4922\\-11\\159.7338\\-196.3516\\-11\\159.6327\\-202.2109\\-11\\159.5365\\-204.1641\\-11\\159.1873\\-208.0703\\-11\\158.6914\\-211.9766\\-11\\158.295\\-215.8828\\-11\\157.8442\\-219.7891\\-11\\157.401\\-221.7422\\-11\\156.7415\\-223.6953\\-11\\156.0872\\-227.6016\\-11\\155.6085\\-229.5547\\-11\\154.8253\\-231.5078\\-11\\153.6193\\-235.4141\\-11\\152.5678\\-237.3672\\-11\\151.7334\\-239.3203\\-11\\150.5584\\-241.2734\\-11\\149.662\\-243.2266\\-11\\147.4609\\-246.8964\\-11\\146.0125\\-249.0859\\-11\\142.8158\\-252.9922\\-11\\141.6016\\-254.5972\\-11\\137.4333\\-258.8516\\-11\\135.7508\\-260.8047\\-11\\133.6559\\-262.7578\\-11\\131.8359\\-264.2744\\-11\\129.3645\\-266.6641\\-11\\127.1052\\-268.6172\\-11\\122.0703\\-272.6061\\-11\\118.1641\\-275.4276\\-11\\116.2109\\-276.7139\\-11\\114.2578\\-277.7677\\-11\\112.3047\\-279.1813\\-11\\110.3516\\-280.4068\\-11\\106.4453\\-282.4798\\-11\\104.4922\\-283.3073\\-11\\102.5391\\-284.3088\\-11\\98.56771\\-286.1953\\-11\\96.67969\\-287.0091\\-11\\94.72656\\-287.6187\\-11\\92.77344\\-288.455\\-11\\90.82031\\-288.9915\\-11\\88.86719\\-289.3309\\-11\\86.91406\\-289.8359\\-11\\84.96094\\-290.5749\\-11\\83.00781\\-290.9336\\-11\\79.10156\\-291.5398\\-11\\75.19531\\-292.4317\\-11\\73.24219\\-292.679\\-11\\69.33594\\-292.9311\\-11\\63.47656\\-293.0061\\-11\\59.57031\\-292.9612\\-11\\55.66406\\-292.8009\\-11\\49.80469\\-292.4986\\-11\\47.85156\\-292.4416\\-11\\43.94531\\-292.4611\\-11\\41.99219\\-292.5343\\-11\\38.08594\\-292.8153\\-11\\34.17969\\-293.179\\-11\\32.22656\\-293.4506\\-11\\28.32031\\-294.2623\\-11\\26.36719\\-294.5703\\-11\\20.50781\\-295.1636\\-11\\16.60156\\-295.6052\\-11\\12.69531\\-296.263\\-11\\10.74219\\-296.4897\\-11\\6.835938\\-296.7455\\-11\\-0.9765625\\-296.9843\\-11\\-6.835938\\-296.9897\\-11\\-10.74219\\-296.9219\\-11\\-14.64844\\-296.7774\\-11\\-18.55469\\-296.5493\\-11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "300"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "121"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-24.41406\\-296.2511\\-9\\-28.32031\\-295.6216\\-9\\-30.27344\\-295.3876\\-9\\-36.13281\\-294.9784\\-9\\-41.99219\\-294.6489\\-9\\-45.89844\\-294.5176\\-9\\-53.71094\\-294.3356\\-9\\-63.47656\\-294.4207\\-9\\-65.42969\\-294.4898\\-9\\-69.33594\\-294.5182\\-9\\-73.24219\\-294.464\\-9\\-77.14844\\-294.2779\\-9\\-79.10156\\-294.0754\\-9\\-86.91406\\-292.7897\\-9\\-88.86719\\-292.3138\\-9\\-90.82031\\-291.4991\\-9\\-92.77344\\-291.0034\\-9\\-94.72656\\-290.3872\\-9\\-96.67969\\-289.4443\\-9\\-98.63281\\-288.9087\\-9\\-102.5391\\-287.0963\\-9\\-106.4453\\-284.9539\\-9\\-108.3984\\-283.6537\\-9\\-110.3516\\-282.7603\\-9\\-112.3047\\-281.494\\-9\\-114.2578\\-280.3744\\-9\\-116.2109\\-279.0443\\-9\\-118.1641\\-277.5021\\-9\\-120.1172\\-276.1411\\-9\\-122.0703\\-274.9858\\-9\\-124.0234\\-273.414\\-9\\-125.9766\\-271.6771\\-9\\-129.7291\\-268.6172\\-9\\-133.7158\\-264.7109\\-9\\-135.7422\\-262.6055\\-9\\-138.8425\\-258.8516\\-9\\-140.5628\\-256.8984\\-9\\-142.1311\\-254.9453\\-9\\-143.1626\\-252.9922\\-9\\-145.905\\-249.0859\\-9\\-147.0048\\-247.1328\\-9\\-148.2088\\-245.1797\\-9\\-149.057\\-243.2266\\-9\\-150.1194\\-241.2734\\-9\\-150.7346\\-239.3203\\-9\\-151.8585\\-237.3672\\-9\\-152.5534\\-235.4141\\-9\\-153.5335\\-233.4609\\-9\\-154.1534\\-231.5078\\-9\\-154.671\\-229.5547\\-9\\-155.4312\\-227.6016\\-9\\-155.9842\\-225.6484\\-9\\-156.7383\\-221.7422\\-9\\-157.5414\\-219.7891\\-9\\-157.9949\\-217.8359\\-9\\-158.7369\\-213.9297\\-9\\-159.3791\\-211.9766\\-9\\-159.8113\\-210.0234\\-9\\-160.8921\\-202.2109\\-9\\-161.229\\-200.2578\\-9\\-161.6491\\-196.3516\\-9\\-161.7454\\-194.3984\\-9\\-161.9152\\-186.5859\\-9\\-161.9129\\-180.7266\\-9\\-161.7899\\-174.8672\\-9\\-161.5326\\-170.9609\\-9\\-161.311\\-169.0078\\-9\\-160.3119\\-163.1484\\-9\\-159.7744\\-159.2422\\-9\\-159.3283\\-157.2891\\-9\\-158.6766\\-155.3359\\-9\\-157.8578\\-151.4297\\-9\\-156.506\\-147.5234\\-9\\-156.1166\\-145.5703\\-9\\-155.5942\\-143.6172\\-9\\-154.7108\\-141.6641\\-9\\-154.1255\\-139.7109\\-9\\-153.3879\\-137.7578\\-9\\-152.4251\\-135.8047\\-9\\-151.6927\\-133.8516\\-9\\-150.6854\\-131.8984\\-9\\-150.0878\\-129.9453\\-9\\-149.1107\\-127.9922\\-9\\-148.3436\\-126.0391\\-9\\-147.4688\\-124.0859\\-9\\-145.3605\\-120.1797\\-9\\-144.3666\\-118.2266\\-9\\-143.2292\\-116.2734\\-9\\-142.4537\\-114.3203\\-9\\-140.2902\\-110.4141\\-9\\-138.8922\\-108.4609\\-9\\-137.8697\\-106.5078\\-9\\-136.5838\\-104.5547\\-9\\-135.1335\\-102.6016\\-9\\-133.7976\\-100.6484\\-9\\-132.2417\\-98.69531\\-9\\-129.8828\\-96.15327\\-9\\-127.9297\\-94.28993\\-9\\-120.9001\\-88.92969\\-9\\-120.1172\\-88.24326\\-9\\-118.1641\\-87.55704\\-9\\-116.2109\\-86.43884\\-9\\-114.0839\\-85.02344\\-9\\-112.3047\\-84.01659\\-9\\-110.3516\\-83.53365\\-9\\-108.3984\\-82.50916\\-9\\-104.4922\\-81.31567\\-9\\-102.5391\\-80.48529\\-9\\-100.5859\\-80.19056\\-9\\-98.37891\\-79.16406\\-9\\-96.67969\\-78.66721\\-9\\-94.72656\\-77.97049\\-9\\-90.82031\\-77.06233\\-9\\-88.86719\\-76.47662\\-9\\-86.91406\\-76.13265\\-9\\-83.00781\\-75.70483\\-9\\-81.05469\\-74.69648\\-9\\-79.10156\\-74.46436\\-9\\-75.19531\\-74.32397\\-9\\-71.28906\\-73.92997\\-9\\-69.33594\\-73.00776\\-9\\-67.38281\\-72.86079\\-9\\-61.52344\\-72.79937\\-9\\-57.61719\\-72.81641\\-9\\-53.71094\\-72.89829\\-9\\-51.75781\\-72.84272\\-9\\-49.80469\\-72.9377\\-9\\-47.85156\\-73.96688\\-9\\-43.94531\\-74.24056\\-9\\-38.08594\\-74.55288\\-9\\-36.13281\\-74.74123\\-9\\-34.17969\\-75.15022\\-9\\-32.22656\\-75.77146\\-9\\-28.32031\\-76.32979\\-9\\-26.36719\\-76.75478\\-9\\-24.41406\\-77.52748\\-9\\-20.50781\\-78.91658\\-9\\-18.55469\\-79.92964\\-9\\-16.60156\\-80.53253\\-9\\-14.64844\\-81.48886\\-9\\-12.69531\\-82.21745\\-9\\-8.511413\\-85.02344\\-9\\-6.835938\\-86.33804\\-9\\-3.882998\\-88.92969\\-9\\-2.929688\\-89.6666\\-9\\-0.9765625\\-90.5638\\-9\\0.9765625\\-90.8601\\-9\\2.929688\\-90.35697\\-9\\4.882813\\-89.39642\\-9\\6.835938\\-87.71088\\-9\\9.83538\\-85.02344\\-9\\12.26049\\-83.07031\\-9\\12.69531\\-82.62576\\-9\\15.01465\\-81.11719\\-9\\20.50781\\-78.21089\\-9\\24.41406\\-76.42586\\-9\\26.36719\\-76.00214\\-9\\30.27344\\-74.64494\\-9\\34.17969\\-74.21806\\-9\\36.13281\\-72.81641\\-9\\40.03906\\-72.64856\\-9\\41.99219\\-71.8046\\-9\\47.85156\\-71.70931\\-9\\49.80469\\-71.75533\\-9\\55.66406\\-71.71289\\-9\\61.52344\\-71.79999\\-9\\63.47656\\-71.98767\\-9\\65.42969\\-72.50294\\-9\\67.38281\\-72.66221\\-9\\73.24219\\-72.82507\\-9\\75.19531\\-73.00072\\-9\\77.14844\\-74.25786\\-9\\81.05469\\-74.5032\\-9\\83.00781\\-74.71066\\-9\\84.96094\\-75.10189\\-9\\86.91406\\-75.78414\\-9\\90.82031\\-76.35133\\-9\\92.77344\\-76.80882\\-9\\94.72656\\-77.6414\\-9\\98.63281\\-78.76714\\-9\\100.5859\\-79.53967\\-9\\104.4922\\-80.68695\\-9\\106.4453\\-81.61543\\-9\\108.3984\\-82.15294\\-9\\110.3516\\-82.83508\\-9\\112.3047\\-83.87289\\-9\\114.2578\\-84.67692\\-9\\116.2109\\-85.85806\\-9\\118.1641\\-86.72524\\-9\\121.9161\\-88.92969\\-9\\124.0234\\-90.42941\\-9\\124.4523\\-90.88281\\-9\\126.7241\\-92.83594\\-9\\128.7618\\-94.78906\\-9\\129.8828\\-95.99497\\-9\\132.1303\\-98.69531\\-9\\133.7891\\-100.9709\\-9\\136.2062\\-104.5547\\-9\\137.0465\\-106.5078\\-9\\138.3369\\-108.4609\\-9\\139.2963\\-110.4141\\-9\\140.5268\\-112.3672\\-9\\142.4676\\-116.2734\\-9\\143.1796\\-118.2266\\-9\\144.2506\\-120.1797\\-9\\144.9597\\-122.1328\\-9\\146.0859\\-124.0859\\-9\\146.8119\\-126.0391\\-9\\147.8396\\-127.9922\\-9\\149.1277\\-131.8984\\-9\\150.0165\\-133.8516\\-9\\150.486\\-135.8047\\-9\\151.1957\\-137.7578\\-9\\152.0348\\-139.7109\\-9\\152.5662\\-141.6641\\-9\\153.9465\\-145.5703\\-9\\154.7619\\-149.4766\\-9\\155.3734\\-151.4297\\-9\\155.8581\\-153.3828\\-9\\156.1369\\-155.3359\\-9\\156.5615\\-159.2422\\-9\\156.901\\-161.1953\\-9\\157.4136\\-163.1484\\-9\\157.7648\\-165.1016\\-9\\158.1454\\-169.0078\\-9\\158.4433\\-172.9141\\-9\\158.7954\\-176.8203\\-9\\159.2605\\-182.6797\\-9\\159.3914\\-186.5859\\-9\\159.4388\\-190.4922\\-9\\159.4272\\-194.3984\\-9\\159.4837\\-196.3516\\-9\\159.3151\\-202.2109\\-9\\159.172\\-204.1641\\-9\\158.1122\\-215.8828\\-9\\157.6036\\-219.7891\\-9\\156.9734\\-221.7422\\-9\\156.4794\\-223.6953\\-9\\155.8268\\-227.6016\\-9\\154.5053\\-231.5078\\-9\\154.0033\\-233.4609\\-9\\152.2433\\-237.3672\\-9\\151.1659\\-239.3203\\-9\\150.2722\\-241.2734\\-9\\149.134\\-243.2266\\-9\\148.1855\\-245.1797\\-9\\145.5078\\-249.0226\\-9\\144.0499\\-251.0391\\-9\\142.4888\\-252.9922\\-9\\140.8001\\-254.9453\\-9\\138.7708\\-256.8984\\-9\\135.7422\\-260.09\\-9\\132.9655\\-262.7578\\-9\\131.8359\\-263.7737\\-9\\127.9297\\-267.5169\\-9\\125.9766\\-269.1233\\-9\\122.0703\\-271.9401\\-9\\120.1172\\-273.5571\\-9\\118.1641\\-275.0394\\-9\\116.2109\\-276.1193\\-9\\112.3047\\-278.7174\\-9\\110.3516\\-279.8051\\-9\\108.3984\\-281.0714\\-9\\106.4453\\-281.8943\\-9\\104.4922\\-282.9964\\-9\\102.5391\\-283.7018\\-9\\100.5859\\-284.815\\-9\\98.63281\\-285.562\\-9\\96.67969\\-286.6102\\-9\\92.77344\\-287.8441\\-9\\90.82031\\-288.6635\\-9\\88.86719\\-289.0833\\-9\\86.91406\\-289.3886\\-9\\84.96094\\-289.9152\\-9\\83.00781\\-290.5416\\-9\\81.05469\\-290.8938\\-9\\77.14844\\-291.4358\\-9\\73.24219\\-292.2417\\-9\\71.28906\\-292.4801\\-9\\69.33594\\-292.6009\\-9\\65.42969\\-292.711\\-9\\59.57031\\-292.7248\\-9\\53.71094\\-292.5167\\-9\\47.85156\\-292.3695\\-9\\43.94531\\-292.5077\\-9\\38.08594\\-292.9535\\-9\\34.17969\\-293.4242\\-9\\32.22656\\-293.7868\\-9\\30.27344\\-294.2502\\-9\\28.32031\\-294.5754\\-9\\20.50781\\-295.3945\\-9\\16.60156\\-296.1048\\-9\\14.64844\\-296.4102\\-9\\10.74219\\-296.7972\\-9\\6.835938\\-297.0058\\-9\\0.9765625\\-297.2459\\-9\\-2.929688\\-297.3246\\-9\\-10.74219\\-297.1942\\-9\\-14.64844\\-296.9477\\-9\\-20.50781\\-296.6519\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "286"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "122"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-26.36719\\-296.2511\\-7\\-30.27344\\-295.5636\\-7\\-34.17969\\-295.198\\-7\\-40.03906\\-294.802\\-7\\-45.89844\\-294.5299\\-7\\-47.85156\\-294.4868\\-7\\-53.71094\\-294.2256\\-7\\-55.66406\\-294.1975\\-7\\-63.47656\\-294.186\\-7\\-67.38281\\-294.213\\-7\\-73.24219\\-294.0608\\-7\\-79.10156\\-293.5605\\-7\\-84.96094\\-292.8142\\-7\\-86.91406\\-292.424\\-7\\-88.86719\\-291.6909\\-7\\-92.77344\\-290.6987\\-7\\-94.72656\\-289.8072\\-7\\-98.63281\\-288.6164\\-7\\-100.5859\\-287.584\\-7\\-102.5391\\-286.8042\\-7\\-104.4922\\-285.5623\\-7\\-106.4453\\-284.6084\\-7\\-108.3984\\-283.3735\\-7\\-110.3516\\-282.3623\\-7\\-112.3047\\-281.2332\\-7\\-116.2109\\-278.6568\\-7\\-120.1172\\-275.7894\\-7\\-122.0703\\-274.6406\\-7\\-124.0234\\-273.1147\\-7\\-124.627\\-272.5234\\-7\\-127.0119\\-270.5703\\-7\\-129.8828\\-268.1028\\-7\\-135.2278\\-262.7578\\-7\\-137.6953\\-259.9279\\-7\\-139.6484\\-257.5606\\-7\\-140.293\\-256.8984\\-7\\-141.8108\\-254.9453\\-7\\-142.8805\\-252.9922\\-7\\-144.2979\\-251.0391\\-7\\-147.4609\\-245.9628\\-7\\-148.007\\-245.1797\\-7\\-148.8188\\-243.2266\\-7\\-149.9256\\-241.2734\\-7\\-150.5572\\-239.3203\\-7\\-151.5819\\-237.3672\\-7\\-153.9808\\-231.5078\\-7\\-154.4792\\-229.5547\\-7\\-155.7947\\-225.6484\\-7\\-156.5574\\-221.7422\\-7\\-157.8179\\-217.8359\\-7\\-158.5161\\-213.9297\\-7\\-159.03\\-211.9766\\-7\\-159.6416\\-210.0234\\-7\\-159.9381\\-208.0703\\-7\\-160.6294\\-202.2109\\-7\\-161.2004\\-198.3047\\-7\\-161.556\\-194.3984\\-7\\-161.556\\-192.4453\\-7\\-161.7286\\-186.5859\\-7\\-161.6989\\-178.7734\\-7\\-161.5532\\-174.8672\\-7\\-161.4148\\-172.9141\\-7\\-160.6028\\-167.0547\\-7\\-159.8498\\-161.1953\\-7\\-159.4837\\-159.2422\\-7\\-158.8477\\-157.2891\\-7\\-157.5753\\-151.4297\\-7\\-156.7513\\-149.4766\\-7\\-155.9309\\-145.5703\\-7\\-154.4717\\-141.6641\\-7\\-153.9063\\-139.7109\\-7\\-152.9574\\-137.7578\\-7\\-152.2005\\-135.8047\\-7\\-150.4725\\-131.8984\\-7\\-149.882\\-129.9453\\-7\\-148.8589\\-127.9922\\-7\\-148.1648\\-126.0391\\-7\\-147.161\\-124.0859\\-7\\-146.2693\\-122.1328\\-7\\-145.0534\\-120.1797\\-7\\-144.2238\\-118.2266\\-7\\-143.0361\\-116.2734\\-7\\-142.2852\\-114.3203\\-7\\-141.0499\\-112.3672\\-7\\-140.0764\\-110.4141\\-7\\-138.7121\\-108.4609\\-7\\-136.4397\\-104.5547\\-7\\-133.7891\\-100.9861\\-7\\-131.955\\-98.69531\\-7\\-129.8828\\-96.40853\\-7\\-127.9297\\-94.54294\\-7\\-125.9766\\-93.17926\\-7\\-124.0234\\-91.68066\\-7\\-122.0703\\-90.01547\\-7\\-120.1172\\-88.51891\\-7\\-118.1641\\-87.71902\\-7\\-113.732\\-85.02344\\-7\\-110.3516\\-83.68238\\-7\\-108.3984\\-82.69054\\-7\\-104.4922\\-81.36133\\-7\\-102.5391\\-80.54313\\-7\\-100.5859\\-80.23094\\-7\\-98.07751\\-79.16406\\-7\\-94.72656\\-78.06361\\-7\\-92.77344\\-77.69204\\-7\\-90.82031\\-77.15875\\-7\\-88.86719\\-76.5\\-7\\-86.91406\\-76.17897\\-7\\-83.00781\\-75.74268\\-7\\-81.05469\\-74.87533\\-7\\-79.10156\\-74.52539\\-7\\-75.19531\\-74.33038\\-7\\-73.24219\\-73.52867\\-7\\-71.28906\\-72.41624\\-7\\-69.33594\\-72.73059\\-7\\-67.38281\\-72.76647\\-7\\-59.57031\\-72.77455\\-7\\-55.66406\\-72.86079\\-7\\-51.75781\\-72.82507\\-7\\-47.85156\\-72.91775\\-7\\-43.94531\\-74.21731\\-7\\-41.99219\\-74.28713\\-7\\-38.08594\\-74.55288\\-7\\-36.13281\\-74.73466\\-7\\-34.17969\\-75.15202\\-7\\-32.22656\\-75.7558\\-7\\-28.32031\\-76.3125\\-7\\-26.36719\\-76.69793\\-7\\-20.50781\\-78.82797\\-7\\-18.55469\\-79.76953\\-7\\-16.60156\\-80.41087\\-7\\-14.64844\\-81.32645\\-7\\-12.69531\\-82.11962\\-7\\-11.11779\\-83.07031\\-7\\-8.176492\\-85.02344\\-7\\-5.8922\\-86.97656\\-7\\-2.929688\\-89.39324\\-7\\-0.9765625\\-90.2489\\-7\\0.9765625\\-90.45481\\-7\\2.929688\\-90.10265\\-7\\4.882813\\-89.10938\\-7\\6.835938\\-87.51563\\-7\\9.640625\\-85.02344\\-7\\12.69531\\-82.48575\\-7\\14.86171\\-81.11719\\-7\\20.50781\\-78.17006\\-7\\24.41406\\-76.40854\\-7\\26.36719\\-75.98274\\-7\\28.32031\\-75.23142\\-7\\30.27344\\-74.62238\\-7\\34.17969\\-74.22955\\-7\\36.13281\\-72.83385\\-7\\40.03906\\-72.65535\\-7\\41.99219\\-72.00559\\-7\\43.94531\\-71.7442\\-7\\45.89844\\-71.72027\\-7\\49.80469\\-71.77412\\-7\\55.66406\\-71.70393\\-7\\61.52344\\-71.83008\\-7\\63.47656\\-72.47028\\-7\\65.42969\\-72.64856\\-7\\69.33594\\-72.71235\\-7\\73.24219\\-72.84272\\-7\\75.19531\\-73.15608\\-7\\77.14844\\-74.2636\\-7\\81.05469\\-74.51588\\-7\\83.00781\\-74.74494\\-7\\84.96094\\-75.35938\\-7\\86.91406\\-75.86117\\-7\\90.82031\\-76.39515\\-7\\92.77344\\-76.89657\\-7\\94.72656\\-77.69312\\-7\\96.67969\\-78.32184\\-7\\98.63281\\-78.80724\\-7\\100.5859\\-79.57774\\-7\\104.4922\\-80.75629\\-7\\106.4453\\-81.66118\\-7\\108.3984\\-82.21212\\-7\\110.3516\\-82.94358\\-7\\112.3047\\-83.94263\\-7\\114.2578\\-84.76435\\-7\\116.2109\\-85.8972\\-7\\118.1641\\-86.81881\\-7\\121.7415\\-88.92969\\-7\\124.0234\\-90.57717\\-7\\126.5625\\-92.83594\\-7\\128.6069\\-94.78906\\-7\\130.3573\\-96.74219\\-7\\133.2031\\-100.6484\\-7\\134.6928\\-102.6016\\-7\\135.8895\\-104.5547\\-7\\136.8502\\-106.5078\\-7\\138.0521\\-108.4609\\-7\\138.9574\\-110.4141\\-7\\140.2937\\-112.3672\\-7\\141.1727\\-114.3203\\-7\\142.2674\\-116.2734\\-7\\142.9228\\-118.2266\\-7\\143.9779\\-120.1797\\-7\\144.6959\\-122.1328\\-7\\145.7705\\-124.0859\\-7\\146.5506\\-126.0391\\-7\\147.4687\\-127.9922\\-7\\148.2648\\-129.9453\\-7\\148.8268\\-131.8984\\-7\\149.7372\\-133.8516\\-7\\150.7924\\-137.7578\\-7\\151.7286\\-139.7109\\-7\\152.8568\\-143.6172\\-7\\153.6501\\-145.5703\\-7\\154.1158\\-147.5234\\-7\\154.9432\\-151.4297\\-7\\155.5411\\-153.3828\\-7\\155.935\\-155.3359\\-7\\156.5936\\-161.1953\\-7\\156.9127\\-163.1484\\-7\\157.4136\\-165.1016\\-7\\157.7234\\-167.0547\\-7\\158.0835\\-170.9609\\-7\\158.3534\\-174.8672\\-7\\158.7093\\-180.7266\\-7\\158.9073\\-186.5859\\-7\\158.9152\\-192.4453\\-7\\159.0558\\-196.3516\\-7\\158.8607\\-202.2109\\-7\\158.6709\\-206.1172\\-7\\158.0919\\-213.9297\\-7\\157.633\\-217.8359\\-7\\156.6147\\-221.7422\\-7\\155.9966\\-225.6484\\-7\\155.5011\\-227.6016\\-7\\154.7591\\-229.5547\\-7\\153.6841\\-233.4609\\-7\\152.6912\\-235.4141\\-7\\151.9104\\-237.3672\\-7\\150.7265\\-239.3203\\-7\\149.9581\\-241.2734\\-7\\148.7564\\-243.2266\\-7\\147.796\\-245.1797\\-7\\145.5078\\-248.3906\\-7\\144.9084\\-249.0859\\-7\\142.0934\\-252.9922\\-7\\140.3876\\-254.9453\\-7\\138.3867\\-256.8984\\-7\\134.6331\\-260.8047\\-7\\127.9297\\-267.0446\\-7\\124.0234\\-269.9731\\-7\\120.1172\\-273.1411\\-7\\118.1641\\-274.4849\\-7\\114.2578\\-277.0132\\-7\\112.3047\\-278.062\\-7\\108.3984\\-280.6521\\-7\\106.4453\\-281.5213\\-7\\104.4922\\-282.5901\\-7\\102.5391\\-283.3549\\-7\\100.5859\\-284.2798\\-7\\94.72656\\-286.8823\\-7\\92.77344\\-287.4086\\-7\\90.79996\\-288.1484\\-7\\88.86719\\-288.7628\\-7\\84.96094\\-289.4363\\-7\\83.00781\\-289.9003\\-7\\81.05469\\-290.5033\\-7\\79.10156\\-290.8634\\-7\\69.33594\\-292.0923\\-7\\67.38281\\-292.2417\\-7\\63.47656\\-292.3908\\-7\\59.57031\\-292.4217\\-7\\53.71094\\-292.2785\\-7\\47.85156\\-292.2904\\-7\\43.94531\\-292.5515\\-7\\38.08594\\-293.0913\\-7\\36.13281\\-293.3474\\-7\\30.27344\\-294.5182\\-7\\28.32031\\-294.7713\\-7\\24.41406\\-295.1686\\-7\\20.50781\\-295.7186\\-7\\18.55469\\-296.1607\\-7\\16.60156\\-296.4897\\-7\\10.74219\\-297.0442\\-7\\0.9765625\\-297.6281\\-7\\-2.929688\\-297.7439\\-7\\-10.74219\\-297.4965\\-7\\-14.64844\\-297.1253\\-7\\-20.50781\\-296.8167\\-7\\-24.41406\\-296.5021\\-7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "288"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "123"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-10.74219\\-297.9061\\-5\\-14.64844\\-297.3365\\-5\\-24.41406\\-296.6737\\-5\\-26.36719\\-296.4805\\-5\\-28.32031\\-296.1869\\-5\\-30.27344\\-295.776\\-5\\-34.17969\\-295.2872\\-5\\-40.03906\\-294.866\\-5\\-47.85156\\-294.4677\\-5\\-49.80469\\-294.3997\\-5\\-53.71094\\-294.118\\-5\\-57.61719\\-293.9544\\-5\\-61.52344\\-293.9102\\-5\\-67.38281\\-293.79\\-5\\-73.24219\\-293.6057\\-5\\-77.14844\\-293.3511\\-5\\-81.05469\\-293.0061\\-5\\-84.96094\\-292.4732\\-5\\-86.91406\\-291.8002\\-5\\-88.86719\\-291.287\\-5\\-90.82031\\-290.8879\\-5\\-92.77344\\-290.2655\\-5\\-94.72656\\-289.4161\\-5\\-96.67969\\-288.953\\-5\\-98.63281\\-288.1726\\-5\\-102.5391\\-286.4223\\-5\\-106.2207\\-284.2422\\-5\\-108.3984\\-283.1149\\-5\\-110.3516\\-281.9293\\-5\\-112.3047\\-280.9423\\-5\\-115.9307\\-278.3828\\-5\\-118.1641\\-276.9678\\-5\\-121.6996\\-274.4766\\-5\\-124.0234\\-272.731\\-5\\-128.9288\\-268.6172\\-5\\-129.8828\\-267.7559\\-5\\-135.7422\\-261.8188\\-5\\-139.6484\\-257.2192\\-5\\-139.9764\\-256.8984\\-5\\-141.6016\\-254.6893\\-5\\-144.0296\\-251.0391\\-5\\-145.1355\\-249.0859\\-5\\-145.5078\\-248.6319\\-5\\-147.749\\-245.1797\\-5\\-148.6013\\-243.2266\\-5\\-149.6601\\-241.2734\\-5\\-151.2082\\-237.3672\\-5\\-152.1667\\-235.4141\\-5\\-152.8568\\-233.4609\\-5\\-153.781\\-231.5078\\-5\\-154.8253\\-227.6016\\-5\\-155.5411\\-225.6484\\-5\\-156.0535\\-223.6953\\-5\\-156.8427\\-219.7891\\-5\\-157.5521\\-217.8359\\-5\\-157.9949\\-215.8828\\-5\\-158.3177\\-213.9297\\-5\\-158.7463\\-211.9766\\-5\\-159.4154\\-210.0234\\-5\\-159.8045\\-208.0703\\-5\\-160.2585\\-204.1641\\-5\\-160.6353\\-200.2578\\-5\\-160.8904\\-198.3047\\-5\\-161.2713\\-194.3984\\-5\\-161.2847\\-192.4453\\-5\\-161.4739\\-186.5859\\-5\\-161.5089\\-182.6797\\-5\\-161.4494\\-178.7734\\-5\\-161.2148\\-174.8672\\-5\\-160.1114\\-165.1016\\-5\\-159.5956\\-161.1953\\-5\\-159.0028\\-159.2422\\-5\\-158.5086\\-157.2891\\-5\\-157.787\\-153.3828\\-5\\-156.503\\-149.4766\\-5\\-156.1661\\-147.5234\\-5\\-155.6959\\-145.5703\\-5\\-154.8952\\-143.6172\\-5\\-153.6347\\-139.7109\\-5\\-152.6482\\-137.7578\\-5\\-151.9575\\-135.8047\\-5\\-150.9399\\-133.8516\\-5\\-149.5909\\-129.9453\\-5\\-148.6566\\-127.9922\\-5\\-147.9426\\-126.0391\\-5\\-146.8825\\-124.0859\\-5\\-146.0667\\-122.1328\\-5\\-144.8094\\-120.1797\\-5\\-144.0397\\-118.2266\\-5\\-142.859\\-116.2734\\-5\\-142.0864\\-114.3203\\-5\\-140.8099\\-112.3672\\-5\\-139.797\\-110.4141\\-5\\-137.6953\\-107.1136\\-5\\-137.2142\\-106.5078\\-5\\-136.2588\\-104.5547\\-5\\-133.7891\\-101.3135\\-5\\-129.8828\\-96.69739\\-5\\-127.8606\\-94.78906\\-5\\-125.9766\\-93.54557\\-5\\-122.8009\\-90.88281\\-5\\-122.0703\\-90.20258\\-5\\-120.0584\\-88.92969\\-5\\-116.5757\\-86.97656\\-5\\-114.2578\\-85.51172\\-5\\-108.7607\\-83.07031\\-5\\-106.4453\\-82.08724\\-5\\-104.4922\\-81.47025\\-5\\-102.5391\\-80.6393\\-5\\-100.5859\\-80.29266\\-5\\-97.65625\\-79.16406\\-5\\-94.72656\\-78.14277\\-5\\-92.77344\\-77.78241\\-5\\-88.86719\\-76.55721\\-5\\-86.91406\\-76.21314\\-5\\-83.00781\\-75.78987\\-5\\-81.05469\\-75.40508\\-5\\-79.10156\\-74.59954\\-5\\-75.19531\\-74.34924\\-5\\-73.24219\\-73.76934\\-5\\-71.28906\\-72.44147\\-5\\-69.33594\\-72.67561\\-5\\-67.38281\\-72.74275\\-5\\-63.47656\\-72.73502\\-5\\-57.61719\\-72.79101\\-5\\-55.66406\\-72.87931\\-5\\-51.75781\\-72.82507\\-5\\-47.85156\\-72.95817\\-5\\-45.89844\\-73.77747\\-5\\-43.94531\\-74.20035\\-5\\-38.08594\\-74.54466\\-5\\-36.13281\\-74.72451\\-5\\-34.17969\\-75.15113\\-5\\-32.22656\\-75.72993\\-5\\-28.32031\\-76.28489\\-5\\-26.36719\\-76.65376\\-5\\-24.41406\\-77.39045\\-5\\-20.50781\\-78.74812\\-5\\-18.55469\\-79.6791\\-5\\-16.60156\\-80.32522\\-5\\-12.69531\\-81.99027\\-5\\-10.74219\\-83.06224\\-5\\-8.789063\\-84.24632\\-5\\-4.882813\\-87.58863\\-5\\-2.929688\\-89.11938\\-5\\-0.9765625\\-90.02018\\-5\\0.9765625\\-90.21918\\-5\\2.929688\\-89.91187\\-5\\4.638672\\-88.92969\\-5\\6.835938\\-87.30475\\-5\\10.74219\\-83.90446\\-5\\12.69531\\-82.3396\\-5\\14.70727\\-81.11719\\-5\\16.60156\\-80.20308\\-5\\18.55469\\-79.0833\\-5\\22.50402\\-77.21094\\-5\\24.41406\\-76.39407\\-5\\26.36719\\-75.9631\\-5\\28.32031\\-75.18072\\-5\\30.27344\\-74.6267\\-5\\34.17969\\-74.23502\\-5\\36.13281\\-72.82507\\-5\\40.03906\\-72.66914\\-5\\41.99219\\-72.51995\\-5\\43.94531\\-71.7442\\-5\\47.85156\\-71.78667\\-5\\55.66406\\-71.7442\\-5\\59.57031\\-71.83984\\-5\\61.52344\\-72.15057\\-5\\63.47656\\-72.64184\\-5\\67.38281\\-72.67616\\-5\\73.24219\\-72.84272\\-5\\75.19531\\-73.99838\\-5\\77.14844\\-74.26955\\-5\\81.05469\\-74.55752\\-5\\83.00781\\-74.81326\\-5\\84.96094\\-75.45909\\-5\\86.91406\\-75.91896\\-5\\90.82031\\-76.4432\\-5\\92.77344\\-77.00422\\-5\\94.72656\\-77.76981\\-5\\96.67969\\-78.38176\\-5\\98.63281\\-78.83854\\-5\\100.5859\\-79.6153\\-5\\104.4922\\-80.81839\\-5\\106.4453\\-81.72355\\-5\\108.3984\\-82.27131\\-5\\110.3516\\-83.04688\\-5\\114.2578\\-84.87483\\-5\\116.2109\\-85.96026\\-5\\120.1172\\-88.00875\\-5\\121.5163\\-88.92969\\-5\\124.0234\\-90.77876\\-5\\127.9297\\-94.29711\\-5\\130.1193\\-96.74219\\-5\\131.4525\\-98.69531\\-5\\134.4875\\-102.6016\\-5\\135.4943\\-104.5547\\-5\\136.6441\\-106.5078\\-5\\138.7036\\-110.4141\\-5\\139.9694\\-112.3672\\-5\\140.881\\-114.3203\\-5\\142.0288\\-116.2734\\-5\\142.7255\\-118.2266\\-5\\143.6546\\-120.1797\\-5\\145.2996\\-124.0859\\-5\\146.3098\\-126.0391\\-5\\147.0557\\-127.9922\\-5\\148.053\\-129.9453\\-5\\148.5779\\-131.8984\\-5\\150.0712\\-135.8047\\-5\\150.5261\\-137.7578\\-5\\152.0236\\-141.6641\\-5\\152.5232\\-143.6172\\-5\\153.8609\\-147.5234\\-5\\154.6245\\-151.4297\\-5\\155.6431\\-155.3359\\-5\\156.2149\\-159.2422\\-5\\156.5855\\-163.1484\\-5\\157.3351\\-167.0547\\-5\\157.8689\\-170.9609\\-5\\158.1364\\-174.8672\\-5\\158.4258\\-180.7266\\-5\\158.5597\\-186.5859\\-5\\158.5414\\-192.4453\\-5\\158.6592\\-196.3516\\-5\\158.5562\\-202.2109\\-5\\158.3209\\-208.0703\\-5\\157.8689\\-213.9297\\-5\\157.5936\\-215.8828\\-5\\156.7129\\-219.7891\\-5\\156.0993\\-223.6953\\-5\\155.7381\\-225.6484\\-5\\154.4723\\-229.5547\\-5\\153.9999\\-231.5078\\-5\\153.3203\\-233.2423\\-5\\151.4773\\-237.3672\\-5\\150.4249\\-239.3203\\-5\\149.5613\\-241.2734\\-5\\148.4438\\-243.2266\\-5\\146.0549\\-247.1328\\-5\\143.5547\\-250.4192\\-5\\141.6016\\-252.8899\\-5\\139.8831\\-254.9453\\-5\\137.8794\\-256.8984\\-5\\133.7891\\-261.1672\\-5\\129.8828\\-264.5986\\-5\\127.6359\\-266.6641\\-5\\122.8335\\-270.5703\\-5\\120.1172\\-272.6042\\-5\\116.2109\\-275.3568\\-5\\114.2578\\-276.546\\-5\\112.3047\\-277.5956\\-5\\110.3516\\-278.9525\\-5\\106.4453\\-281.1927\\-5\\104.4922\\-282.0262\\-5\\102.5391\\-283.052\\-5\\100.5859\\-283.6689\\-5\\98.63281\\-284.7808\\-5\\96.67969\\-285.4742\\-5\\94.72656\\-286.4343\\-5\\92.77344\\-287.0676\\-5\\90.82031\\-287.6023\\-5\\88.86719\\-288.3497\\-5\\86.91406\\-288.8637\\-5\\83.00781\\-289.4404\\-5\\81.05469\\-289.8484\\-5\\79.10156\\-290.4757\\-5\\75.19531\\-291.0487\\-5\\71.28906\\-291.3836\\-5\\65.42969\\-291.7314\\-5\\61.52344\\-291.8907\\-5\\51.75781\\-291.9865\\-5\\47.85156\\-292.1901\\-5\\41.99219\\-292.7859\\-5\\38.08594\\-293.2488\\-5\\36.13281\\-293.5731\\-5\\32.22656\\-294.418\\-5\\30.27344\\-294.7131\\-5\\24.41406\\-295.3673\\-5\\22.46094\\-295.7078\\-5\\20.50781\\-296.1723\\-5\\18.55469\\-296.4987\\-5\\16.60156\\-296.7235\\-5\\8.789063\\-297.4415\\-5\\2.929688\\-298.0226\\-5\\-0.9765625\\-298.2709\\-5\\-4.882813\\-298.2396\\-5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "285"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "124"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-297.6301\\-3\\-18.55469\\-297.2384\\-3\\-26.36719\\-296.6331\\-3\\-28.32031\\-296.4001\\-3\\-32.22656\\-295.6708\\-3\\-34.17969\\-295.3965\\-3\\-38.08594\\-295.0869\\-3\\-49.80469\\-294.3659\\-3\\-55.66406\\-293.8402\\-3\\-59.57031\\-293.6604\\-3\\-71.28906\\-293.3474\\-3\\-77.14844\\-293.0364\\-3\\-81.05469\\-292.7005\\-3\\-83.00781\\-292.4317\\-3\\-86.91406\\-291.3518\\-3\\-90.82031\\-290.5416\\-3\\-92.77344\\-289.6565\\-3\\-96.67969\\-288.6536\\-3\\-98.63281\\-287.6931\\-3\\-100.5859\\-286.9666\\-3\\-102.5391\\-285.8698\\-3\\-104.4922\\-284.9147\\-3\\-106.4453\\-283.6144\\-3\\-108.3984\\-282.8462\\-3\\-110.3516\\-281.5915\\-3\\-112.3047\\-280.5489\\-3\\-114.2578\\-279.2401\\-3\\-116.2109\\-277.7339\\-3\\-120.1172\\-275.3287\\-3\\-124.0234\\-272.2101\\-3\\-127.9297\\-269.2059\\-3\\-129.8828\\-267.4521\\-3\\-131.8359\\-265.4103\\-3\\-134.5799\\-262.7578\\-3\\-136.382\\-260.8047\\-3\\-137.6953\\-259.1044\\-3\\-139.6484\\-256.7385\\-3\\-142.4921\\-252.9922\\-3\\-144.8217\\-249.0859\\-3\\-146.2586\\-247.1328\\-3\\-147.4609\\-245.0503\\-3\\-148.4129\\-243.2266\\-3\\-150.2386\\-239.3203\\-3\\-150.8756\\-237.3672\\-3\\-151.952\\-235.4141\\-3\\-152.6086\\-233.4609\\-3\\-153.4972\\-231.5078\\-3\\-154.1183\\-229.5547\\-3\\-154.5959\\-227.6016\\-3\\-155.8838\\-223.6953\\-3\\-156.5936\\-219.7891\\-3\\-157.7962\\-215.8828\\-3\\-158.5414\\-211.9766\\-3\\-159.7001\\-208.0703\\-3\\-160.0012\\-206.1172\\-3\\-160.429\\-200.2578\\-3\\-160.901\\-194.3984\\-3\\-161.0652\\-188.5391\\-3\\-161.1707\\-182.6797\\-3\\-161.0798\\-178.7734\\-3\\-160.6633\\-172.9141\\-3\\-159.8995\\-165.1016\\-3\\-159.6236\\-163.1484\\-3\\-158.6225\\-159.2422\\-3\\-157.9464\\-155.3359\\-3\\-157.4504\\-153.3828\\-3\\-156.735\\-151.4297\\-3\\-155.9966\\-147.5234\\-3\\-155.3594\\-145.5703\\-3\\-154.6163\\-143.6172\\-3\\-154.0754\\-141.6641\\-3\\-152.3864\\-137.7578\\-3\\-151.682\\-135.8047\\-3\\-150.6696\\-133.8516\\-3\\-150.0921\\-131.8984\\-3\\-149.1962\\-129.9453\\-3\\-147.7014\\-126.0391\\-3\\-146.6481\\-124.0859\\-3\\-145.8118\\-122.1328\\-3\\-144.6077\\-120.1797\\-3\\-143.7789\\-118.2266\\-3\\-142.6819\\-116.2734\\-3\\-141.8495\\-114.3203\\-3\\-141.6016\\-114.0163\\-3\\-138.3405\\-108.4609\\-3\\-137.0016\\-106.5078\\-3\\-136\\-104.5547\\-3\\-134.5952\\-102.6016\\-3\\-131.8359\\-99.32767\\-3\\-129.5732\\-96.74219\\-3\\-127.5124\\-94.78906\\-3\\-125.9766\\-93.71297\\-3\\-122.0703\\-90.43826\\-3\\-119.7374\\-88.92969\\-3\\-118.1641\\-87.9981\\-3\\-116.2109\\-87.06837\\-3\\-114.2578\\-85.76304\\-3\\-110.3516\\-83.81877\\-3\\-108.3984\\-83.11066\\-3\\-106.4453\\-82.15395\\-3\\-104.4922\\-81.59829\\-3\\-102.5391\\-80.74826\\-3\\-100.5859\\-80.34186\\-3\\-97.22222\\-79.16406\\-3\\-94.72656\\-78.35943\\-3\\-90.82031\\-77.31415\\-3\\-88.86719\\-76.71478\\-3\\-86.91406\\-76.27778\\-3\\-81.05469\\-75.60456\\-3\\-79.10156\\-74.64376\\-3\\-77.14844\\-74.46185\\-3\\-73.24219\\-74.21107\\-3\\-69.33594\\-72.79642\\-3\\-63.47656\\-72.71235\\-3\\-61.52344\\-72.75057\\-3\\-59.57031\\-72.6894\\-3\\-55.66406\\-72.85171\\-3\\-51.75781\\-72.81641\\-3\\-47.85156\\-73.02286\\-3\\-45.89844\\-74.04662\\-3\\-43.94531\\-74.21191\\-3\\-40.03906\\-74.38909\\-3\\-36.13281\\-74.7486\\-3\\-34.17969\\-75.15202\\-3\\-32.22656\\-75.7131\\-3\\-28.32031\\-76.2567\\-3\\-26.36719\\-76.62979\\-3\\-24.41406\\-77.34838\\-3\\-20.50781\\-78.65531\\-3\\-18.55469\\-79.58064\\-3\\-14.64844\\-80.94033\\-3\\-10.74219\\-82.82801\\-3\\-8.789063\\-83.96903\\-3\\-4.882813\\-87.43229\\-3\\-2.625168\\-88.92969\\-3\\-0.9765625\\-89.82108\\-3\\0.9765625\\-90.10051\\-3\\2.929688\\-89.73565\\-3\\6.835938\\-87.05434\\-3\\9.19805\\-85.02344\\-3\\12.69531\\-82.24192\\-3\\14.64844\\-81.05975\\-3\\16.60156\\-80.17991\\-3\\18.55469\\-79.02863\\-3\\22.50402\\-77.21094\\-3\\24.41406\\-76.38889\\-3\\26.36719\\-75.95185\\-3\\28.32031\\-75.11592\\-3\\30.27344\\-74.61777\\-3\\34.17969\\-74.22346\\-3\\36.13281\\-72.83385\\-3\\40.03906\\-72.66914\\-3\\41.99219\\-72.64184\\-3\\43.94531\\-71.8046\\-3\\45.89844\\-71.77303\\-3\\55.66406\\-71.81519\\-3\\57.61719\\-71.88335\\-3\\59.57031\\-72.06886\\-3\\61.52344\\-72.62781\\-3\\67.38281\\-72.6904\\-3\\71.28906\\-72.79937\\-3\\73.24219\\-72.92766\\-3\\75.19531\\-74.20657\\-3\\77.14844\\-74.2989\\-3\\81.05469\\-74.6267\\-3\\83.00781\\-74.91715\\-3\\84.96094\\-75.58802\\-3\\86.91406\\-75.97832\\-3\\90.82031\\-76.50356\\-3\\92.77344\\-77.11328\\-3\\94.72656\\-77.84454\\-3\\96.67969\\-78.43695\\-3\\98.63281\\-78.88223\\-3\\100.5859\\-79.65571\\-3\\104.4922\\-80.89765\\-3\\106.4453\\-81.78303\\-3\\108.3984\\-82.31407\\-3\\110.3516\\-83.15424\\-3\\114.2578\\-85.00072\\-3\\120.1172\\-88.08825\\-3\\121.3117\\-88.92969\\-3\\123.8148\\-90.88281\\-3\\128.2211\\-94.78906\\-3\\129.8828\\-96.88038\\-3\\131.174\\-98.69531\\-3\\134.2209\\-102.6016\\-3\\135.2041\\-104.5547\\-3\\136.4425\\-106.5078\\-3\\137.2559\\-108.4609\\-3\\137.6953\\-109.0469\\-3\\140.6306\\-114.3203\\-3\\141.6563\\-116.2734\\-3\\142.5296\\-118.2266\\-3\\143.2413\\-120.1797\\-3\\144.2716\\-122.1328\\-3\\144.9402\\-124.0859\\-3\\146.041\\-126.0391\\-3\\146.7576\\-127.9922\\-3\\147.7661\\-129.9453\\-3\\148.967\\-133.8516\\-3\\149.8088\\-135.8047\\-3\\150.8316\\-139.7109\\-3\\151.7033\\-141.6641\\-3\\152.7631\\-145.5703\\-3\\153.532\\-147.5234\\-3\\154.032\\-149.4766\\-3\\154.7402\\-153.3828\\-3\\155.7142\\-157.2891\\-3\\156.0166\\-159.2422\\-3\\156.5855\\-165.1016\\-3\\156.84\\-167.0547\\-3\\157.5834\\-170.9609\\-3\\157.9162\\-174.8672\\-3\\158.1936\\-180.7266\\-3\\158.2968\\-186.5859\\-3\\158.2906\\-192.4453\\-3\\158.3793\\-196.3516\\-3\\158.332\\-202.2109\\-3\\158.2711\\-204.1641\\-3\\158.4063\\-208.0703\\-3\\158.0529\\-210.0234\\-3\\157.5936\\-213.9297\\-3\\156.7545\\-217.8359\\-3\\155.8926\\-223.6953\\-3\\155.3734\\-225.6484\\-3\\154.7309\\-227.6016\\-3\\153.7198\\-231.5078\\-3\\152.7737\\-233.4609\\-3\\152.0888\\-235.4141\\-3\\150.9586\\-237.3672\\-3\\150.1989\\-239.3203\\-3\\149.0451\\-241.2734\\-3\\148.1315\\-243.2266\\-3\\145.5305\\-247.1328\\-3\\144.1779\\-249.0859\\-3\\141.0445\\-252.9922\\-3\\139.6484\\-254.5105\\-3\\137.2416\\-256.8984\\-3\\133.7891\\-260.5334\\-3\\129.8828\\-264.0525\\-3\\129.2193\\-264.7109\\-3\\125.9766\\-267.6161\\-3\\122.0703\\-270.5934\\-3\\120.1172\\-271.9375\\-3\\118.1641\\-273.5237\\-3\\116.2109\\-274.9579\\-3\\114.2578\\-275.9276\\-3\\112.3047\\-277.2357\\-3\\108.3984\\-279.53\\-3\\106.4453\\-280.8013\\-3\\104.4922\\-281.5841\\-3\\102.5391\\-282.6526\\-3\\100.5859\\-283.3227\\-3\\96.67969\\-285.0967\\-3\\94.72656\\-285.7906\\-3\\92.77344\\-286.7189\\-3\\88.86719\\-287.7755\\-3\\86.91406\\-288.5042\\-3\\84.96094\\-288.9162\\-3\\81.05469\\-289.4126\\-3\\79.10156\\-289.8236\\-3\\77.14844\\-290.3985\\-3\\75.19531\\-290.7259\\-3\\71.28906\\-291.0633\\-3\\67.38281\\-291.2538\\-3\\61.52344\\-291.4464\\-3\\53.71094\\-291.6406\\-3\\49.80469\\-291.8778\\-3\\43.94531\\-292.6617\\-3\\40.03906\\-293.0907\\-3\\38.08594\\-293.4003\\-3\\34.17969\\-294.2741\\-3\\32.22656\\-294.6121\\-3\\26.36719\\-295.3036\\-3\\24.41406\\-295.6307\\-3\\22.46094\\-296.1187\\-3\\20.50781\\-296.4897\\-3\\18.55469\\-296.7345\\-3\\14.64844\\-297.0869\\-3\\6.835938\\-298.1011\\-3\\4.882813\\-298.3108\\-3\\0.9765625\\-298.5558\\-3\\-0.9765625\\-298.6268\\-3\\-4.882813\\-298.5388\\-3\\-10.74219\\-298.281\\-3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "300"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "125"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-297.9516\\-1\\-18.55469\\-297.432\\-1\\-20.50781\\-297.2277\\-1\\-28.32031\\-296.5493\\-1\\-30.27344\\-296.2511\\-1\\-34.17969\\-295.5087\\-1\\-36.13281\\-295.2996\\-1\\-43.94531\\-294.7809\\-1\\-49.80469\\-294.3443\\-1\\-55.66406\\-293.6935\\-1\\-59.57031\\-293.444\\-1\\-67.38281\\-293.2213\\-1\\-75.19531\\-292.9054\\-1\\-79.10156\\-292.5879\\-1\\-81.05469\\-292.3138\\-1\\-84.96094\\-291.3761\\-1\\-88.86719\\-290.6875\\-1\\-92.77344\\-289.3334\\-1\\-94.72656\\-288.948\\-1\\-96.67969\\-288.2045\\-1\\-98.63281\\-287.3356\\-1\\-100.5859\\-286.6022\\-1\\-102.5391\\-285.4383\\-1\\-104.4922\\-284.5104\\-1\\-106.4453\\-283.3303\\-1\\-108.3984\\-282.4375\\-1\\-110.3516\\-281.2873\\-1\\-112.3047\\-280.036\\-1\\-114.2578\\-278.8984\\-1\\-118.1641\\-276.1091\\-1\\-120.1172\\-275.0506\\-1\\-122.0703\\-273.5062\\-1\\-125.9766\\-270.2349\\-1\\-127.9297\\-268.875\\-1\\-129.8828\\-267.1302\\-1\\-131.8359\\-265.0854\\-1\\-134.266\\-262.7578\\-1\\-136.0802\\-260.8047\\-1\\-137.4688\\-258.8516\\-1\\-140.7724\\-254.9453\\-1\\-142.2677\\-252.9922\\-1\\-143.2897\\-251.0391\\-1\\-145.9961\\-247.1328\\-1\\-147.0247\\-245.1797\\-1\\-148.2212\\-243.2266\\-1\\-149.0136\\-241.2734\\-1\\-150.0588\\-239.3203\\-1\\-150.6542\\-237.3672\\-1\\-151.6712\\-235.4141\\-1\\-153.1041\\-231.5078\\-1\\-153.919\\-229.5547\\-1\\-154.9341\\-225.6484\\-1\\-155.671\\-223.6953\\-1\\-156.1422\\-221.7422\\-1\\-156.4328\\-219.7891\\-1\\-156.8758\\-217.8359\\-1\\-157.5731\\-215.8828\\-1\\-158.0322\\-213.9297\\-1\\-158.3667\\-211.9766\\-1\\-158.824\\-210.0234\\-1\\-160.0157\\-208.0703\\-1\\-160.5596\\-206.1172\\-1\\-160.0985\\-204.1641\\-1\\-160.1214\\-202.2109\\-1\\-160.6116\\-194.3984\\-1\\-160.8073\\-182.6797\\-1\\-160.7179\\-178.7734\\-1\\-160.5067\\-174.8672\\-1\\-160.2381\\-170.9609\\-1\\-159.8969\\-167.0547\\-1\\-159.668\\-165.1016\\-1\\-158.7155\\-161.1953\\-1\\-157.6705\\-155.3359\\-1\\-156.9734\\-153.3828\\-1\\-156.4777\\-151.4297\\-1\\-155.7617\\-147.5234\\-1\\-154.9669\\-145.5703\\-1\\-153.8448\\-141.6641\\-1\\-152.8841\\-139.7109\\-1\\-152.1686\\-137.7578\\-1\\-150.4768\\-133.8516\\-1\\-149.8336\\-131.8984\\-1\\-148.8892\\-129.9453\\-1\\-148.3024\\-127.9922\\-1\\-145.5078\\-122.1446\\-1\\-143.4197\\-118.2266\\-1\\-142.5658\\-116.2734\\-1\\-141.6016\\-114.4262\\-1\\-140.4218\\-112.3672\\-1\\-139.0772\\-110.4141\\-1\\-138.1017\\-108.4609\\-1\\-135.5913\\-104.5547\\-1\\-134.4105\\-102.6016\\-1\\-132.7732\\-100.6484\\-1\\-129.1707\\-96.74219\\-1\\-127.1439\\-94.78906\\-1\\-124.0234\\-92.19567\\-1\\-122.0703\\-90.73438\\-1\\-119.4901\\-88.92969\\-1\\-118.1641\\-88.08421\\-1\\-116.2109\\-87.23646\\-1\\-112.3047\\-84.92426\\-1\\-110.3516\\-83.99373\\-1\\-108.3984\\-83.27471\\-1\\-106.4453\\-82.21233\\-1\\-104.4922\\-81.7523\\-1\\-102.5391\\-80.92188\\-1\\-98.63281\\-79.87976\\-1\\-96.48862\\-79.16406\\-1\\-94.72656\\-78.68445\\-1\\-92.77344\\-77.94863\\-1\\-88.86719\\-76.96346\\-1\\-86.91406\\-76.33203\\-1\\-81.05469\\-75.6526\\-1\\-79.10156\\-74.66889\\-1\\-77.14844\\-74.4833\\-1\\-73.24219\\-74.2283\\-1\\-71.28906\\-73.6273\\-1\\-69.33594\\-72.87\\-1\\-61.52344\\-72.61221\\-1\\-59.57031\\-72.34999\\-1\\-57.61719\\-72.6199\\-1\\-55.66406\\-72.78273\\-1\\-51.75781\\-72.77455\\-1\\-47.85156\\-72.85171\\-1\\-46.0612\\-73.30469\\-1\\-43.94531\\-74.16811\\-1\\-40.03906\\-74.36513\\-1\\-36.13281\\-74.72451\\-1\\-34.17969\\-75.12173\\-1\\-32.22656\\-75.71004\\-1\\-28.32031\\-76.25102\\-1\\-26.36719\\-76.62143\\-1\\-22.46094\\-77.96861\\-1\\-20.50781\\-78.55895\\-1\\-18.55469\\-79.48483\\-1\\-16.60156\\-80.22579\\-1\\-14.64844\\-80.79166\\-1\\-10.74219\\-82.5966\\-1\\-8.789063\\-83.87495\\-1\\-4.882813\\-87.19269\\-1\\-2.302632\\-88.92969\\-1\\-0.9765625\\-89.67072\\-1\\0.9765625\\-90.08115\\-1\\2.929688\\-89.54159\\-1\\6.835938\\-86.74894\\-1\\11.49269\\-83.07031\\-1\\12.69531\\-82.1807\\-1\\14.64844\\-80.98222\\-1\\16.60156\\-80.16295\\-1\\18.55469\\-79.01546\\-1\\24.41406\\-76.4034\\-1\\26.36719\\-75.95972\\-1\\28.32031\\-75.13153\\-1\\30.27344\\-74.63576\\-1\\34.17969\\-74.22346\\-1\\36.13281\\-72.85171\\-1\\41.99219\\-72.64184\\-1\\43.94531\\-71.88867\\-1\\45.89844\\-71.90269\\-1\\49.80469\\-71.77573\\-1\\55.66406\\-71.89729\\-1\\57.61719\\-72.26154\\-1\\59.57031\\-72.51525\\-1\\61.52344\\-72.66221\\-1\\69.33594\\-72.73502\\-1\\71.28906\\-72.80784\\-1\\73.02296\\-73.30469\\-1\\75.19531\\-74.23502\\-1\\77.14844\\-74.3286\\-1\\81.05469\\-74.69681\\-1\\83.00781\\-75.10319\\-1\\84.96094\\-75.7558\\-1\\90.82031\\-76.5998\\-1\\94.72656\\-77.91013\\-1\\98.63281\\-79.02863\\-1\\104.4922\\-80.99905\\-1\\106.4453\\-81.84495\\-1\\108.3984\\-82.36935\\-1\\112.3047\\-84.1608\\-1\\116.2109\\-86.13213\\-1\\118.1641\\-87.27761\\-1\\120.1172\\-88.17705\\-1\\122.0703\\-89.65094\\-1\\123.5428\\-90.88281\\-1\\125.9766\\-93.1227\\-1\\127.9297\\-94.79828\\-1\\129.8828\\-97.24321\\-1\\130.9265\\-98.69531\\-1\\132.4848\\-100.6484\\-1\\133.8577\\-102.6016\\-1\\134.967\\-104.5547\\-1\\136.1989\\-106.5078\\-1\\137.0079\\-108.4609\\-1\\138.2285\\-110.4141\\-1\\139.1197\\-112.3672\\-1\\140.3966\\-114.3203\\-1\\141.2421\\-116.2734\\-1\\142.3418\\-118.2266\\-1\\142.9583\\-120.1797\\-1\\143.998\\-122.1328\\-1\\144.6763\\-124.0859\\-1\\145.6975\\-126.0391\\-1\\148.1673\\-131.8984\\-1\\148.7067\\-133.8516\\-1\\150.151\\-137.7578\\-1\\150.5755\\-139.7109\\-1\\151.2385\\-141.6641\\-1\\152.0092\\-143.6172\\-1\\152.487\\-145.5703\\-1\\153.7816\\-149.4766\\-1\\154.8842\\-155.3359\\-1\\155.7815\\-159.2422\\-1\\156.0486\\-161.1953\\-1\\156.5537\\-167.0547\\-1\\156.7874\\-169.0078\\-1\\157.426\\-172.9141\\-1\\157.6233\\-174.8672\\-1\\157.8896\\-178.7734\\-1\\158.0185\\-182.6797\\-1\\158.0615\\-186.5859\\-1\\158.0726\\-192.4453\\-1\\158.1505\\-196.3516\\-1\\158.1555\\-200.2578\\-1\\158.0853\\-204.1641\\-1\\158.8364\\-206.1172\\-1\\159.8106\\-208.0703\\-1\\158.1569\\-210.0234\\-1\\157.5521\\-211.9766\\-1\\156.7743\\-215.8828\\-1\\156.3078\\-219.7891\\-1\\156.0213\\-221.7422\\-1\\155.6202\\-223.6953\\-1\\154.9713\\-225.6484\\-1\\154.0187\\-229.5547\\-1\\153.3203\\-231.4921\\-1\\152.448\\-233.4609\\-1\\151.7389\\-235.4141\\-1\\150.6117\\-237.3672\\-1\\149.8922\\-239.3203\\-1\\148.6881\\-241.2734\\-1\\147.7597\\-243.2266\\-1\\146.437\\-245.1797\\-1\\144.9544\\-247.1328\\-1\\143.7544\\-249.0859\\-1\\142.3099\\-251.0391\\-1\\139.6484\\-254.0545\\-1\\133.7891\\-260.0467\\-1\\131.8359\\-261.8965\\-1\\128.746\\-264.7109\\-1\\125.9766\\-267.1523\\-1\\122.0703\\-269.9887\\-1\\118.1641\\-273.0861\\-1\\116.1133\\-274.4766\\-1\\114.2578\\-275.5402\\-1\\112.3047\\-276.8273\\-1\\110.3516\\-277.7916\\-1\\108.3984\\-279.1443\\-1\\104.4922\\-281.2332\\-1\\102.5391\\-282.0678\\-1\\100.5859\\-283.05\\-1\\98.63281\\-283.6486\\-1\\96.67969\\-284.7122\\-1\\94.72656\\-285.3575\\-1\\92.72694\\-286.1953\\-1\\90.82031\\-286.8978\\-1\\88.86719\\-287.3637\\-1\\84.96094\\-288.5787\\-1\\83.00781\\-288.948\\-1\\79.10156\\-289.4161\\-1\\77.14844\\-289.7598\\-1\\75.19531\\-290.239\\-1\\73.24219\\-290.5601\\-1\\69.33594\\-290.8696\\-1\\65.42969\\-291.0286\\-1\\57.61719\\-291.2745\\-1\\51.75781\\-291.549\\-1\\49.80469\\-291.7142\\-1\\45.89844\\-292.4012\\-1\\40.03906\\-293.1906\\-1\\38.08594\\-293.5537\\-1\\36.13281\\-294.0749\\-1\\34.17969\\-294.4707\\-1\\32.22656\\-294.764\\-1\\28.32031\\-295.23\\-1\\26.36719\\-295.5128\\-1\\22.46094\\-296.4492\\-1\\20.50781\\-296.7031\\-1\\16.60156\\-297.0628\\-1\\14.64844\\-297.3\\-1\\10.74219\\-298.0226\\-1\\8.789063\\-298.2709\\-1\\4.882813\\-298.5909\\-1\\2.929688\\-298.668\\-1\\0.9765625\\-299.0438\\-1\\-0.9765625\\-299.5279\\-1\\-2.929688\\-298.8224\\-1\\-6.835938\\-298.6884\\-1\\-10.74219\\-298.5022\\-1\\-12.69531\\-298.2911\\-1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "307"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "126"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.9765625\\-301.1765\\1\\-2.116935\\-299.8672\\1\\-2.929688\\-299.1037\\1\\-4.882813\\-298.9106\\1\\-6.835938\\-298.866\\1\\-10.74219\\-298.6588\\1\\-12.69531\\-298.4946\\1\\-16.60156\\-297.9948\\1\\-20.50781\\-297.3864\\1\\-28.32031\\-296.6593\\1\\-30.27344\\-296.4201\\1\\-34.17969\\-295.647\\1\\-36.13281\\-295.3876\\1\\-40.03906\\-295.0682\\1\\-47.85156\\-294.4961\\1\\-49.80469\\-294.2974\\1\\-53.71094\\-293.7671\\1\\-59.57031\\-293.2009\\1\\-67.38281\\-293.0063\\1\\-75.19531\\-292.6417\\1\\-79.10156\\-292.1355\\1\\-81.05469\\-291.6966\\1\\-86.91406\\-290.7756\\1\\-88.86719\\-290.2117\\1\\-90.82031\\-289.503\\1\\-94.72656\\-288.6164\\1\\-96.67969\\-287.7003\\1\\-98.63281\\-287.0072\\1\\-102.5391\\-285.1096\\1\\-104.4922\\-283.9434\\1\\-106.4453\\-283.0836\\1\\-108.3984\\-281.9491\\1\\-110.3516\\-280.9891\\1\\-112.3047\\-279.6393\\1\\-114.2578\\-278.4494\\1\\-117.287\\-276.4297\\1\\-118.1641\\-275.7764\\1\\-120.1172\\-274.6494\\1\\-122.0703\\-273.2139\\1\\-125.9766\\-269.8618\\1\\-127.6618\\-268.6172\\1\\-129.8739\\-266.6641\\1\\-131.8359\\-264.5868\\1\\-133.8501\\-262.7578\\1\\-135.7422\\-260.7202\\1\\-137.0917\\-258.8516\\1\\-138.7522\\-256.8984\\1\\-140.5105\\-254.9453\\1\\-141.9766\\-252.9922\\1\\-143.0054\\-251.0391\\1\\-143.5547\\-250.32\\1\\-145.6694\\-247.1328\\1\\-146.7417\\-245.1797\\1\\-148.0107\\-243.2266\\1\\-148.7609\\-241.2734\\1\\-149.8117\\-239.3203\\1\\-150.4662\\-237.3672\\1\\-152.1723\\-233.4609\\1\\-152.8015\\-231.5078\\1\\-153.6841\\-229.5547\\1\\-154.6825\\-225.6484\\1\\-155.3897\\-223.6953\\1\\-155.9888\\-221.7422\\1\\-156.6357\\-217.8359\\1\\-157.8828\\-213.9297\\1\\-158.6242\\-210.0234\\1\\-159.1797\\-209.3463\\1\\-161.1006\\-208.0703\\1\\-161.6375\\-206.1172\\1\\-160.1563\\-204.1641\\1\\-159.9539\\-202.2109\\1\\-160.0915\\-200.2578\\1\\-160.3697\\-194.3984\\1\\-160.5261\\-182.6797\\1\\-160.4392\\-178.7734\\1\\-160.2699\\-174.8672\\1\\-159.8633\\-169.0078\\1\\-159.6505\\-167.0547\\1\\-159.2744\\-165.1016\\1\\-158.7603\\-163.1484\\1\\-157.8103\\-157.2891\\1\\-156.6223\\-153.3828\\1\\-155.9683\\-149.4766\\1\\-155.4184\\-147.5234\\1\\-154.6662\\-145.5703\\1\\-154.1453\\-143.6172\\1\\-153.5212\\-141.6641\\1\\-152.5722\\-139.7109\\1\\-151.9326\\-137.7578\\1\\-150.9119\\-135.8047\\1\\-150.2918\\-133.8516\\1\\-148.6538\\-129.9453\\1\\-148.1014\\-127.9922\\1\\-147.0501\\-126.0391\\1\\-146.2505\\-124.0859\\1\\-145.1242\\-122.1328\\1\\-144.2242\\-120.1797\\1\\-143.1013\\-118.2266\\1\\-142.4269\\-116.2734\\1\\-141.2014\\-114.3203\\1\\-140.2161\\-112.3672\\1\\-138.8328\\-110.4141\\1\\-137.8174\\-108.4609\\1\\-136.6471\\-106.5078\\1\\-135.2681\\-104.5547\\1\\-134.2096\\-102.6016\\1\\-132.6102\\-100.6484\\1\\-129.0351\\-96.74219\\1\\-127.9297\\-95.65933\\1\\-125.9766\\-93.93787\\1\\-124.0234\\-92.36858\\1\\-120.1172\\-89.51969\\1\\-118.1641\\-88.17386\\1\\-116.2109\\-87.38657\\1\\-114.2578\\-86.33515\\1\\-112.3047\\-84.95686\\1\\-108.3984\\-83.41284\\1\\-106.4453\\-82.34882\\1\\-104.4922\\-81.90743\\1\\-100.5859\\-80.56009\\1\\-98.63281\\-80.1346\\1\\-96.67969\\-79.52385\\1\\-92.77344\\-78.17474\\1\\-86.91406\\-76.50402\\1\\-84.96094\\-76.16179\\1\\-81.05469\\-75.69108\\1\\-79.10156\\-74.70087\\1\\-75.19531\\-74.45703\\1\\-73.24219\\-74.25148\\1\\-71.28906\\-73.64173\\1\\-69.33594\\-72.88874\\1\\-65.42969\\-72.73502\\1\\-63.47656\\-72.59174\\1\\-59.57031\\-71.52805\\1\\-57.61719\\-72.45349\\1\\-55.66406\\-72.72738\\1\\-47.85156\\-72.79937\\1\\-45.89844\\-72.94787\\1\\-43.94531\\-74.02391\\1\\-41.99219\\-74.23502\\1\\-38.08594\\-74.46515\\1\\-36.13281\\-74.66781\\1\\-34.17969\\-75.08971\\1\\-32.22656\\-75.72315\\1\\-28.32031\\-76.26244\\1\\-26.36719\\-76.62621\\1\\-24.41406\\-77.30711\\1\\-20.50781\\-78.5031\\1\\-18.55469\\-79.41914\\1\\-16.60156\\-80.17947\\1\\-14.64844\\-80.75365\\1\\-12.69531\\-81.66825\\1\\-10.74219\\-82.41187\\1\\-8.789063\\-83.87249\\1\\-6.835938\\-85.52629\\1\\-4.820097\\-86.97656\\1\\-0.9765625\\-89.49731\\1\\0.9765625\\-89.93693\\1\\2.929688\\-89.29676\\1\\4.882813\\-87.9325\\1\\11.35254\\-83.07031\\1\\12.69531\\-82.12674\\1\\14.64844\\-80.95313\\1\\16.60156\\-80.15179\\1\\18.55469\\-79.01546\\1\\22.50671\\-77.21094\\1\\24.41406\\-76.41827\\1\\26.36719\\-75.97962\\1\\28.32031\\-75.19678\\1\\30.27344\\-74.66781\\1\\34.17969\\-74.24658\\1\\36.13281\\-72.86079\\1\\41.99219\\-72.65535\\1\\43.94531\\-72.28407\\1\\45.89844\\-72.1875\\1\\47.85156\\-71.83984\\1\\49.80469\\-71.78447\\1\\53.71094\\-71.8046\\1\\55.66406\\-71.94313\\1\\57.61719\\-72.60178\\1\\61.52344\\-72.67616\\1\\63.47656\\-72.66221\\1\\71.28906\\-72.82507\\1\\73.24219\\-73.99363\\1\\75.19531\\-74.27544\\1\\79.10156\\-74.5032\\1\\81.05469\\-74.7841\\1\\83.00781\\-75.24909\\1\\84.96094\\-75.84129\\1\\88.86719\\-76.34995\\1\\90.82031\\-76.73568\\1\\92.77344\\-77.40063\\1\\100.5859\\-79.79476\\1\\102.5391\\-80.45584\\1\\106.4453\\-81.91402\\1\\108.3984\\-82.44165\\1\\110.3516\\-83.44331\\1\\112.3047\\-84.2651\\1\\114.2578\\-85.3693\\1\\116.2109\\-86.23833\\1\\118.1641\\-87.42997\\1\\120.1172\\-88.31934\\1\\122.0703\\-89.80798\\1\\123.2824\\-90.88281\\1\\127.9297\\-95.20067\\1\\130.7586\\-98.69531\\1\\132.2004\\-100.6484\\1\\134.7362\\-104.5547\\1\\135.8918\\-106.5078\\1\\136.7915\\-108.4609\\1\\137.9428\\-110.4141\\1\\138.8459\\-112.3672\\1\\140.1459\\-114.3203\\1\\140.9564\\-116.2734\\1\\142.1096\\-118.2266\\1\\142.745\\-120.1797\\1\\143.6399\\-122.1328\\1\\145.2298\\-126.0391\\1\\146.2728\\-127.9922\\1\\146.9389\\-129.9453\\1\\147.906\\-131.8984\\1\\149.0673\\-135.8047\\1\\149.9221\\-137.7578\\1\\150.8757\\-141.6641\\1\\151.7263\\-143.6172\\1\\152.7614\\-147.5234\\1\\153.4424\\-149.4766\\1\\153.9278\\-151.4297\\1\\154.9691\\-157.2891\\1\\155.4732\\-159.2422\\1\\155.8268\\-161.1953\\1\\156.068\\-163.1484\\1\\156.691\\-170.9609\\1\\157.4136\\-176.8203\\1\\157.5834\\-178.7734\\1\\157.7648\\-182.6797\\1\\157.8369\\-188.5391\\1\\157.8369\\-192.4453\\1\\157.9327\\-196.3516\\1\\157.959\\-200.2578\\1\\157.8653\\-204.1641\\1\\159.1797\\-206.2709\\1\\160.0878\\-208.0703\\1\\159.1797\\-209.2849\\1\\158.1432\\-210.0234\\1\\157.1399\\-211.9766\\1\\156.5222\\-215.8828\\1\\156.1607\\-219.7891\\1\\155.8079\\-221.7422\\1\\154.6787\\-225.6484\\1\\153.7715\\-229.5547\\1\\152.8701\\-231.5078\\1\\152.1623\\-233.4609\\1\\151.2199\\-235.4141\\1\\149.4387\\-239.3203\\1\\148.4062\\-241.2734\\1\\146.0631\\-245.1797\\1\\144.5655\\-247.1328\\1\\143.5547\\-248.69\\1\\141.8438\\-251.0391\\1\\140.1772\\-252.9922\\1\\137.6953\\-255.6481\\1\\135.7422\\-257.5712\\1\\134.5418\\-258.8516\\1\\131.8359\\-261.4855\\1\\128.1438\\-264.7109\\1\\125.7918\\-266.6641\\1\\120.1172\\-271.0891\\1\\118.1641\\-272.4081\\1\\114.2578\\-275.2312\\1\\112.3047\\-276.2067\\1\\108.3984\\-278.6724\\1\\106.4453\\-279.6589\\1\\104.4922\\-280.8633\\1\\102.5391\\-281.61\\1\\100.5859\\-282.6641\\1\\98.63281\\-283.3186\\1\\96.67969\\-284.0807\\1\\94.72656\\-285.0012\\1\\92.77344\\-285.5966\\1\\90.82031\\-286.4714\\1\\86.91406\\-287.4714\\1\\83.00781\\-288.6132\\1\\81.05469\\-288.948\\1\\75.19531\\-289.6036\\1\\71.28906\\-290.3039\\1\\69.33594\\-290.5033\\1\\65.42969\\-290.7328\\1\\53.71094\\-291.2644\\1\\49.80469\\-291.5843\\1\\47.85156\\-291.9326\\1\\45.89844\\-292.4012\\1\\40.03906\\-293.2834\\1\\38.08594\\-293.7026\\1\\36.13281\\-294.2741\\1\\34.17969\\-294.6121\\1\\28.32031\\-295.3624\\1\\26.36719\\-295.7731\\1\\24.41406\\-296.2979\\1\\22.46094\\-296.6445\\1\\16.60156\\-297.235\\1\\14.64844\\-297.5462\\1\\12.69531\\-298.0757\\1\\8.789063\\-298.5317\\1\\4.882813\\-298.7915\\1\\2.929688\\-298.8652\\1\\0.9864268\\-299.8672\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "307"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "127"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.9765625\\-300.7607\\3\\-2.929688\\-299.2102\\3\\-10.74219\\-298.7891\\3\\-16.60156\\-298.2396\\3\\-20.50781\\-297.562\\3\\-24.41406\\-297.102\\3\\-30.27344\\-296.5372\\3\\-32.22656\\-296.2247\\3\\-34.17969\\-295.7895\\3\\-36.13281\\-295.4956\\3\\-40.03906\\-295.1057\\3\\-43.94531\\-294.8206\\3\\-47.85156\\-294.4868\\3\\-49.80469\\-294.2485\\3\\-53.71094\\-293.6312\\3\\-57.61719\\-293.1686\\3\\-59.57031\\-292.6358\\3\\-61.52344\\-292.9155\\3\\-63.47656\\-292.9331\\3\\-67.38281\\-292.7946\\3\\-71.28906\\-292.596\\3\\-75.19531\\-292.2541\\3\\-79.10156\\-291.5694\\3\\-84.96094\\-290.7825\\3\\-86.91406\\-290.3285\\3\\-88.86719\\-289.6231\\3\\-92.77344\\-288.8352\\3\\-96.67969\\-287.3221\\3\\-98.63281\\-286.6648\\3\\-100.5859\\-285.5347\\3\\-102.5391\\-284.7425\\3\\-104.4922\\-283.5428\\3\\-106.4453\\-282.7706\\3\\-108.3984\\-281.5771\\3\\-110.3516\\-280.6076\\3\\-113.6719\\-278.3828\\3\\-114.2578\\-277.9149\\3\\-116.2109\\-276.8326\\3\\-122.0703\\-272.7974\\3\\-127.1779\\-268.6172\\3\\-129.3279\\-266.6641\\3\\-131.8359\\-264.1236\\3\\-133.7891\\-262.2996\\3\\-135.7422\\-260.2155\\3\\-136.8139\\-258.8516\\3\\-140.2092\\-254.9453\\3\\-141.6016\\-252.9195\\3\\-142.78\\-251.0391\\3\\-144.1154\\-249.0859\\3\\-147.4609\\-243.5859\\3\\-147.741\\-243.2266\\3\\-149.4855\\-239.3203\\3\\-150.2906\\-237.3672\\3\\-150.9324\\-235.4141\\3\\-151.9355\\-233.4609\\3\\-152.5534\\-231.5078\\3\\-153.3725\\-229.5547\\3\\-154.0146\\-227.6016\\3\\-154.4771\\-225.6484\\3\\-155.0441\\-223.6953\\3\\-155.8043\\-221.7422\\3\\-156.1853\\-219.7891\\3\\-156.4534\\-217.8359\\3\\-156.8987\\-215.8828\\3\\-157.6705\\-213.9297\\3\\-158.3685\\-210.0234\\3\\-159.1797\\-208.7241\\3\\-160.144\\-208.0703\\3\\-160.6717\\-206.1172\\3\\-159.7669\\-204.1641\\3\\-159.7525\\-202.2109\\3\\-159.8969\\-200.2578\\3\\-160.1662\\-194.3984\\3\\-160.2745\\-184.6328\\3\\-160.2596\\-180.7266\\3\\-160.1513\\-176.8203\\3\\-159.948\\-172.9141\\3\\-159.6144\\-169.0078\\3\\-159.2744\\-167.0547\\3\\-158.7954\\-165.1016\\3\\-158.4565\\-163.1484\\3\\-157.9002\\-159.2422\\3\\-157.474\\-157.2891\\3\\-156.7743\\-155.3359\\3\\-156.1182\\-151.4297\\3\\-155.7142\\-149.4766\\3\\-154.9934\\-147.5234\\3\\-153.919\\-143.6172\\3\\-153.0762\\-141.6641\\3\\-151.6181\\-137.7578\\3\\-150.6245\\-135.8047\\3\\-150.0672\\-133.8516\\3\\-149.1551\\-131.8984\\3\\-147.8392\\-127.9922\\3\\-146.7712\\-126.0391\\3\\-145.9778\\-124.0859\\3\\-144.8423\\-122.1328\\3\\-143.9599\\-120.1797\\3\\-142.8672\\-118.2266\\3\\-142.2194\\-116.2734\\3\\-140.9075\\-114.3203\\3\\-139.9442\\-112.3672\\3\\-137.4001\\-108.4609\\3\\-136.4265\\-106.5078\\3\\-135.08\\-104.5547\\3\\-133.8992\\-102.6016\\3\\-132.3776\\-100.6484\\3\\-128.8508\\-96.74219\\3\\-125.9766\\-94.0985\\3\\-124.0234\\-92.6437\\3\\-122.0703\\-91.28971\\3\\-120.1172\\-89.70695\\3\\-118.1641\\-88.33251\\3\\-116.2109\\-87.50463\\3\\-114.2578\\-86.42114\\3\\-112.3047\\-85.06865\\3\\-108.3984\\-83.54051\\3\\-106.4453\\-82.51768\\3\\-102.5391\\-81.41473\\3\\-100.5859\\-80.72798\\3\\-96.67969\\-79.74051\\3\\-94.72656\\-78.96462\\3\\-92.77344\\-78.42458\\3\\-90.82031\\-77.74424\\3\\-86.91406\\-76.77763\\3\\-84.96094\\-76.24107\\3\\-81.05469\\-75.75947\\3\\-79.10156\\-74.9516\\3\\-77.14844\\-74.58064\\3\\-75.19531\\-74.50198\\3\\-73.24219\\-74.28728\\3\\-71.28906\\-73.68682\\3\\-69.33594\\-72.87931\\3\\-65.42969\\-72.75848\\3\\-61.52344\\-72.17527\\3\\-59.57031\\-72.16817\\3\\-57.61719\\-72.54923\\3\\-55.66406\\-72.74275\\3\\-51.75781\\-72.74275\\3\\-45.89844\\-72.82507\\3\\-43.94531\\-73.96735\\3\\-41.99219\\-74.26381\\3\\-38.08594\\-74.42523\\3\\-36.13281\\-74.63636\\3\\-34.17969\\-75.05605\\3\\-32.22656\\-75.73307\\3\\-28.32031\\-76.25722\\3\\-26.36719\\-76.6189\\3\\-24.41406\\-77.29357\\3\\-20.50781\\-78.49119\\3\\-18.55469\\-79.39169\\3\\-16.60156\\-80.11224\\3\\-14.64844\\-80.73078\\3\\-12.69531\\-81.73006\\3\\-10.74219\\-82.48296\\3\\-7.220929\\-85.02344\\3\\-4.412957\\-86.97656\\3\\-0.9765625\\-89.1684\\3\\0.9765625\\-89.54943\\3\\2.929688\\-88.88966\\3\\4.882813\\-87.78922\\3\\8.453967\\-85.02344\\3\\12.69531\\-82.08715\\3\\14.64844\\-80.92495\\3\\16.60156\\-80.15166\\3\\18.55469\\-79.05556\\3\\22.56775\\-77.21094\\3\\24.41406\\-76.43862\\3\\26.36719\\-76.00671\\3\\30.27344\\-74.7207\\3\\32.22656\\-74.44813\\3\\34.17969\\-74.27544\\3\\36.13281\\-73.28197\\3\\38.08594\\-72.78273\\3\\43.94531\\-72.6274\\3\\45.89844\\-72.34198\\3\\47.85156\\-72.21187\\3\\49.80469\\-72.1875\\3\\53.71094\\-71.99356\\3\\55.66406\\-72.26849\\3\\57.61719\\-72.65535\\3\\63.47656\\-72.68324\\3\\69.33594\\-72.79937\\3\\71.28906\\-73.0456\\3\\73.24219\\-74.08977\\3\\75.19531\\-74.30464\\3\\79.10156\\-74.55288\\3\\81.05469\\-74.85967\\3\\83.00781\\-75.48544\\3\\84.96094\\-75.92258\\3\\88.86719\\-76.45659\\3\\90.82031\\-76.90363\\3\\92.77344\\-77.56303\\3\\96.67969\\-78.6904\\3\\98.63281\\-79.36382\\3\\102.5391\\-80.53253\\3\\104.4922\\-81.38886\\3\\108.3984\\-82.54738\\3\\110.3516\\-83.59664\\3\\112.3047\\-84.37801\\3\\114.2578\\-85.53377\\3\\116.2109\\-86.35566\\3\\118.1641\\-87.57186\\3\\120.1172\\-88.48579\\3\\122.0703\\-89.97903\\3\\127.2252\\-94.78906\\3\\128.9828\\-96.74219\\3\\130.5538\\-98.69531\\3\\133.1275\\-102.6016\\3\\134.502\\-104.5547\\3\\136.6082\\-108.4609\\3\\137.5046\\-110.4141\\3\\139.7714\\-114.3203\\3\\140.7123\\-116.2734\\3\\141.8013\\-118.2266\\3\\143.2683\\-122.1328\\3\\144.2457\\-124.0859\\3\\144.8831\\-126.0391\\3\\146.0109\\-127.9922\\3\\146.657\\-129.9453\\3\\147.5745\\-131.8984\\3\\148.3073\\-133.8516\\3\\148.7949\\-135.8047\\3\\149.6169\\-137.7578\\3\\150.2104\\-139.7109\\3\\150.6261\\-141.6641\\3\\152.0237\\-145.5703\\3\\153.0081\\-149.4766\\3\\153.6818\\-151.4297\\3\\154.0786\\-153.3828\\3\\154.6701\\-157.2891\\3\\155.5391\\-161.1953\\3\\155.8581\\-163.1484\\3\\156.068\\-165.1016\\3\\156.5815\\-172.9141\\3\\157.2641\\-180.7266\\3\\157.3882\\-182.6797\\3\\157.5195\\-188.5391\\3\\157.5731\\-194.3984\\3\\157.6705\\-196.3516\\3\\157.7402\\-200.2578\\3\\157.5627\\-204.1641\\3\\157.685\\-206.1172\\3\\159.0332\\-208.0703\\3\\157.2266\\-210.006\\3\\156.7096\\-211.9766\\3\\155.9639\\-219.7891\\3\\155.5285\\-221.7422\\3\\154.8842\\-223.6953\\3\\154.025\\-227.6016\\3\\153.3874\\-229.5547\\3\\152.5558\\-231.5078\\3\\151.8642\\-233.4609\\3\\150.7954\\-235.4141\\3\\150.0964\\-237.3672\\3\\148.9886\\-239.3203\\3\\148.1355\\-241.2734\\3\\145.5634\\-245.1797\\3\\143.5547\\-248.1508\\3\\141.6016\\-250.6538\\3\\139.6484\\-252.9494\\3\\137.6953\\-255.1039\\3\\134.037\\-258.8516\\3\\131.8359\\-260.9714\\3\\129.7815\\-262.7578\\3\\124.0234\\-267.6279\\3\\122.0703\\-269.2018\\3\\118.1641\\-271.8417\\3\\116.2109\\-273.4254\\3\\114.2578\\-274.8021\\3\\112.3047\\-275.7677\\3\\110.3516\\-277.0488\\3\\108.3984\\-277.988\\3\\106.4453\\-279.2352\\3\\104.4551\\-280.3359\\3\\102.5391\\-281.2761\\3\\100.5859\\-282.058\\3\\98.63281\\-283.0122\\3\\96.67969\\-283.5685\\3\\94.72656\\-284.5699\\3\\90.82031\\-285.8167\\3\\88.86719\\-286.6381\\3\\84.96094\\-287.5327\\3\\81.05469\\-288.6201\\3\\79.10156\\-288.9162\\3\\73.24219\\-289.4689\\3\\67.38281\\-290.0616\\3\\65.42969\\-290.3039\\3\\61.52344\\-290.6572\\3\\53.71094\\-291.1258\\3\\49.80469\\-291.4958\\3\\47.85156\\-291.8931\\3\\45.89844\\-292.4115\\3\\40.03906\\-293.3776\\3\\36.13281\\-294.4227\\3\\28.32031\\-295.5367\\3\\26.36719\\-296.0763\\3\\24.41406\\-296.511\\3\\22.46094\\-296.773\\3\\18.55469\\-297.1803\\3\\16.60156\\-297.4541\\3\\14.64844\\-297.8438\\3\\12.69531\\-298.3579\\3\\10.74219\\-298.553\\3\\4.882813\\-298.9607\\3\\2.929688\\-299.0368\\3\\0.9765625\\-299.7176\\3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "298"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "128"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-298.1846\\5\\-22.46094\\-297.4381\\5\\-26.36719\\-297.0043\\5\\-30.27344\\-296.6405\\5\\-32.22656\\-296.3556\\5\\-36.13281\\-295.5853\\5\\-38.08594\\-295.3203\\5\\-45.89844\\-294.6648\\5\\-49.80469\\-294.1975\\5\\-53.71094\\-293.5225\\5\\-57.61719\\-293.0265\\5\\-58.87988\\-292.0547\\5\\-59.57031\\-291.0954\\5\\-60.4968\\-292.0547\\5\\-61.52344\\-292.6902\\5\\-63.47656\\-292.7515\\5\\-67.38281\\-292.5684\\5\\-71.28906\\-292.2291\\5\\-73.24219\\-291.9299\\5\\-83.00781\\-290.7686\\5\\-84.96094\\-290.3758\\5\\-86.91406\\-289.7123\\5\\-90.82031\\-288.9846\\5\\-92.77344\\-288.4572\\5\\-94.72656\\-287.6059\\5\\-96.67969\\-287.0025\\5\\-98.4933\\-286.1953\\5\\-102.5069\\-284.2422\\5\\-108.3984\\-281.2942\\5\\-110.3516\\-280.0663\\5\\-112.3047\\-278.9382\\5\\-114.2578\\-277.5432\\5\\-118.1641\\-275.2041\\5\\-121.75\\-272.5234\\5\\-122.0703\\-272.2201\\5\\-125.9766\\-269.3195\\5\\-127.9297\\-267.6472\\5\\-134.8599\\-260.8047\\5\\-136.5746\\-258.8516\\5\\-139.8409\\-254.9453\\5\\-141.1393\\-252.9922\\5\\-142.5529\\-251.0391\\5\\-143.7934\\-249.0859\\5\\-144.8629\\-247.1328\\5\\-146.2301\\-245.1797\\5\\-148.3839\\-241.2734\\5\\-149.1153\\-239.3203\\5\\-150.1081\\-237.3672\\5\\-150.674\\-235.4141\\5\\-151.6621\\-233.4609\\5\\-152.9815\\-229.5547\\5\\-153.8056\\-227.6016\\5\\-154.7688\\-223.6953\\5\\-155.5678\\-221.7422\\5\\-156.0438\\-219.7891\\5\\-156.6481\\-215.8828\\5\\-157.401\\-213.9297\\5\\-157.8653\\-211.9766\\5\\-158.1596\\-210.0234\\5\\-159.052\\-206.1172\\5\\-159.1873\\-204.1641\\5\\-159.4837\\-202.2109\\5\\-159.8045\\-198.3047\\5\\-160.0231\\-192.4453\\5\\-160.0132\\-188.5391\\5\\-160.0625\\-184.6328\\5\\-160.0472\\-180.7266\\5\\-159.9459\\-176.8203\\5\\-159.7259\\-172.9141\\5\\-159.5365\\-170.9609\\5\\-158.4699\\-165.1016\\5\\-157.9627\\-161.1953\\5\\-157.5936\\-159.2422\\5\\-156.9734\\-157.2891\\5\\-156.503\\-155.3359\\5\\-155.9139\\-151.4297\\5\\-155.3587\\-149.4766\\5\\-154.6583\\-147.5234\\5\\-154.184\\-145.5703\\5\\-153.606\\-143.6172\\5\\-152.7261\\-141.6641\\5\\-152.0719\\-139.7109\\5\\-151.1378\\-137.7578\\5\\-150.4187\\-135.8047\\5\\-149.8227\\-133.8516\\5\\-148.8857\\-131.8984\\5\\-148.2648\\-129.9453\\5\\-146.5018\\-126.0391\\5\\-145.6718\\-124.0859\\5\\-144.6195\\-122.1328\\5\\-142.6971\\-118.2266\\5\\-141.932\\-116.2734\\5\\-141.6016\\-115.8426\\5\\-137.6953\\-109.2333\\5\\-137.1094\\-108.4609\\5\\-136.2089\\-106.5078\\5\\-133.7891\\-102.882\\5\\-132.0216\\-100.6484\\5\\-130.3861\\-98.69531\\5\\-127.9297\\-96.0365\\5\\-125.9766\\-94.32728\\5\\-124.0234\\-93.01122\\5\\-122.0703\\-91.58884\\5\\-120.1172\\-89.94505\\5\\-118.1641\\-88.60162\\5\\-116.2109\\-87.61564\\5\\-112.3047\\-85.30613\\5\\-108.3984\\-83.74213\\5\\-106.4453\\-82.77042\\5\\-104.4922\\-82.09375\\5\\-102.5391\\-81.63006\\5\\-100.5859\\-80.83924\\5\\-96.67969\\-79.8569\\5\\-94.72656\\-79.06932\\5\\-92.77344\\-78.52283\\5\\-90.82031\\-77.83109\\5\\-88.86719\\-77.42712\\5\\-84.96094\\-76.29627\\5\\-81.05469\\-75.85026\\5\\-79.10156\\-75.46381\\5\\-77.14844\\-74.71613\\5\\-73.24219\\-74.33038\\5\\-71.28906\\-73.9919\\5\\-69.33594\\-73.16925\\5\\-67.38281\\-73.03416\\5\\-65.42969\\-72.79101\\5\\-61.52344\\-72.74275\\5\\-53.71094\\-72.79937\\5\\-51.75781\\-72.77455\\5\\-45.89844\\-72.84272\\5\\-43.94531\\-73.97651\\5\\-41.99219\\-74.28125\\5\\-38.08594\\-74.43246\\5\\-36.13281\\-74.63199\\5\\-34.17969\\-75.02181\\5\\-32.22656\\-75.73967\\5\\-28.32031\\-76.22842\\5\\-26.36719\\-76.61623\\5\\-24.41406\\-77.29357\\5\\-20.50781\\-78.47928\\5\\-18.55469\\-79.35186\\5\\-14.64844\\-80.6947\\5\\-12.69531\\-81.73006\\5\\-10.74219\\-82.49545\\5\\-6.835938\\-85.21061\\5\\-4.882813\\-86.40012\\5\\-2.929688\\-87.73402\\5\\-0.9765625\\-88.64292\\5\\0.9765625\\-89.32705\\5\\4.882813\\-87.67609\\5\\8.268838\\-85.02344\\5\\11.08502\\-83.07031\\5\\14.64844\\-80.91119\\5\\16.60156\\-80.15727\\5\\18.55469\\-79.06932\\5\\24.41406\\-76.43599\\5\\28.32031\\-75.65793\\5\\30.27344\\-74.76597\\5\\32.22656\\-74.48286\\5\\36.13281\\-74.12548\\5\\38.08594\\-72.79101\\5\\43.94531\\-72.68324\\5\\45.89844\\-72.515\\5\\47.85156\\-72.62373\\5\\49.80469\\-72.60942\\5\\53.71094\\-72.4502\\5\\55.66406\\-72.64184\\5\\65.42969\\-72.73502\\5\\69.33594\\-72.85171\\5\\71.28906\\-73.74136\\5\\73.24219\\-74.25218\\5\\75.19531\\-74.34675\\5\\79.10156\\-74.65424\\5\\81.05469\\-74.97765\\5\\83.00781\\-75.73967\\5\\88.86719\\-76.58186\\5\\90.82031\\-77.06233\\5\\92.77344\\-77.718\\5\\96.67969\\-78.79707\\5\\98.63281\\-79.53114\\5\\102.5391\\-80.65248\\5\\104.4922\\-81.52582\\5\\108.3984\\-82.68101\\5\\110.3516\\-83.73534\\5\\112.3047\\-84.5022\\5\\114.2578\\-85.6844\\5\\116.2109\\-86.51062\\5\\118.1641\\-87.7203\\5\\120.1172\\-88.75691\\5\\122.0703\\-90.18439\\5\\127.0085\\-94.78906\\5\\128.7898\\-96.74219\\5\\130.2807\\-98.69531\\5\\131.4438\\-100.6484\\5\\131.8359\\-101.1065\\5\\134.2353\\-104.5547\\5\\135.22\\-106.5078\\5\\136.4128\\-108.4609\\5\\137.1644\\-110.4141\\5\\138.3856\\-112.3672\\5\\139.3229\\-114.3203\\5\\140.4969\\-116.2734\\5\\142.3791\\-120.1797\\5\\142.9845\\-122.1328\\5\\144.0009\\-124.0859\\5\\144.6478\\-126.0391\\5\\145.6432\\-127.9922\\5\\147.1652\\-131.8984\\5\\148.0976\\-133.8516\\5\\148.6123\\-135.8047\\5\\149.2248\\-137.7578\\5\\150.0126\\-139.7109\\5\\150.9149\\-143.6172\\5\\151.7466\\-145.5703\\5\\152.6824\\-149.4766\\5\\153.8408\\-153.3828\\5\\154.4405\\-157.2891\\5\\155.159\\-161.1953\\5\\155.58\\-163.1484\\5\\155.8581\\-165.1016\\5\\156.1853\\-169.0078\\5\\156.5735\\-176.8203\\5\\156.8896\\-182.6797\\5\\157.0979\\-190.4922\\5\\157.1274\\-194.3984\\5\\157.2932\\-196.3516\\5\\157.4383\\-200.2578\\5\\156.9734\\-206.1172\\5\\156.9058\\-208.0703\\5\\156.6394\\-210.0234\\5\\155.9966\\-217.8359\\5\\155.7247\\-219.7891\\5\\154.6043\\-223.6953\\5\\153.7845\\-227.6016\\5\\152.9442\\-229.5547\\5\\152.2854\\-231.5078\\5\\151.4486\\-233.4609\\5\\150.4959\\-235.4141\\5\\149.7634\\-237.3672\\5\\148.6769\\-239.3203\\5\\147.7794\\-241.2734\\5\\146.4722\\-243.2266\\5\\145.0361\\-245.1797\\5\\143.9141\\-247.1328\\5\\142.4544\\-249.0859\\5\\140.8578\\-251.0391\\5\\139.0169\\-252.9922\\5\\137.6953\\-254.5171\\5\\135.4274\\-256.8984\\5\\131.8359\\-260.3634\\5\\129.2234\\-262.7578\\5\\127.9297\\-263.7806\\5\\124.0234\\-267.2211\\5\\122.0703\\-268.7544\\5\\120.1172\\-269.9128\\5\\116.2109\\-272.9778\\5\\112.3047\\-275.4405\\5\\110.3516\\-276.5758\\5\\108.3984\\-277.5483\\5\\106.4453\\-278.7923\\5\\104.4922\\-279.7423\\5\\102.5391\\-280.9257\\5\\100.5859\\-281.6023\\5\\98.63281\\-282.6024\\5\\94.72656\\-283.912\\5\\92.77344\\-284.8304\\5\\90.82031\\-285.3669\\5\\86.91406\\-286.7789\\5\\83.00781\\-287.5751\\5\\79.10156\\-288.5892\\5\\77.14844\\-288.8762\\5\\73.24219\\-289.2069\\5\\67.38281\\-289.5846\\5\\63.47656\\-289.9862\\5\\61.52344\\-290.3039\\5\\57.61719\\-290.7186\\5\\53.71094\\-291.0171\\5\\49.80469\\-291.445\\5\\47.85156\\-291.8677\\5\\45.89844\\-292.4217\\5\\41.99219\\-293.0808\\5\\40.03906\\-293.4778\\5\\36.13281\\-294.5421\\5\\30.27344\\-295.3498\\5\\28.32031\\-295.7597\\5\\26.36719\\-296.3204\\5\\24.41406\\-296.6737\\5\\18.55469\\-297.3449\\5\\14.64844\\-298.1846\\5\\12.69531\\-298.5388\\5\\10.74219\\-298.7174\\5\\4.882813\\-299.1188\\5\\2.929688\\-299.1996\\5\\-0.9765625\\-299.5932\\5\\-2.929688\\-299.273\\5\\-6.835938\\-299.1814\\5\\-10.74219\\-298.9198\\5\\-16.60156\\-298.4194\\5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "294"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "129"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-297.6089\\7\\-26.36719\\-297.0837\\7\\-30.27344\\-296.7368\\7\\-32.22656\\-296.4897\\7\\-34.17969\\-296.1324\\7\\-36.13281\\-295.6708\\7\\-38.08594\\-295.375\\7\\-45.89844\\-294.6844\\7\\-49.80469\\-294.1575\\7\\-51.75781\\-293.7354\\7\\-53.71094\\-293.4264\\7\\-57.61719\\-292.9735\\7\\-59.22515\\-292.0547\\7\\-59.57031\\-291.6147\\7\\-60.1423\\-292.0547\\7\\-61.52344\\-292.6009\\7\\-63.47656\\-292.56\\7\\-67.38281\\-292.2541\\7\\-71.28906\\-291.7204\\7\\-79.10156\\-290.9745\\7\\-81.05469\\-290.7579\\7\\-83.00781\\-290.3758\\7\\-84.96094\\-289.7622\\7\\-86.91406\\-289.3691\\7\\-88.86719\\-289.0952\\7\\-90.82031\\-288.6961\\7\\-92.77344\\-287.9355\\7\\-96.67969\\-286.6523\\7\\-98.63281\\-285.5975\\7\\-100.5859\\-284.8581\\7\\-102.5391\\-283.6982\\7\\-104.4922\\-282.9593\\7\\-106.4453\\-281.8109\\7\\-108.3984\\-280.9849\\7\\-110.3516\\-279.6331\\7\\-115.5384\\-276.4297\\7\\-116.2109\\-275.9168\\7\\-118.1641\\-274.8336\\7\\-120.1172\\-273.4168\\7\\-124.0234\\-270.237\\7\\-125.9766\\-268.9102\\7\\-127.9297\\-267.3039\\7\\-133.7891\\-261.6208\\7\\-136.3012\\-258.8516\\7\\-137.6953\\-257.0017\\7\\-139.6484\\-254.6067\\7\\-142.3276\\-251.0391\\7\\-143.4026\\-249.0859\\7\\-144.599\\-247.1328\\7\\-145.944\\-245.1797\\7\\-146.976\\-243.2266\\7\\-148.1827\\-241.2734\\7\\-148.8532\\-239.3203\\7\\-149.889\\-237.3672\\7\\-150.4706\\-235.4141\\7\\-152.1196\\-231.5078\\7\\-152.6978\\-229.5547\\7\\-153.5457\\-227.6016\\7\\-154.1093\\-225.6484\\7\\-154.5561\\-223.6953\\7\\-155.2734\\-221.7214\\7\\-155.8709\\-219.7891\\7\\-156.4651\\-215.8828\\7\\-157.6796\\-211.9766\\7\\-158.0068\\-210.0234\\7\\-158.4499\\-206.1172\\7\\-159.3413\\-200.2578\\7\\-159.7016\\-196.3516\\7\\-159.853\\-192.4453\\7\\-159.815\\-188.5391\\7\\-159.8699\\-184.6328\\7\\-159.8007\\-178.7734\\7\\-159.6144\\-174.8672\\7\\-159.4272\\-172.9141\\7\\-158.7463\\-169.0078\\7\\-158.0108\\-163.1484\\7\\-157.7148\\-161.1953\\7\\-156.6308\\-157.2891\\7\\-156.0608\\-153.3828\\7\\-155.6571\\-151.4297\\7\\-154.9573\\-149.4766\\7\\-153.9343\\-145.5703\\7\\-153.1264\\-143.6172\\7\\-151.7937\\-139.7109\\7\\-150.7813\\-137.7578\\7\\-150.2337\\-135.8047\\7\\-148.649\\-131.8984\\7\\-148.0358\\-129.9453\\7\\-147.0025\\-127.9922\\7\\-146.2271\\-126.0391\\7\\-145.2421\\-124.0859\\7\\-144.3859\\-122.1328\\7\\-143.2594\\-120.1797\\7\\-142.5159\\-118.2266\\7\\-140.4584\\-114.3203\\7\\-139.1537\\-112.3672\\7\\-138.1778\\-110.4141\\7\\-136.8752\\-108.4609\\7\\-135.9233\\-106.5078\\7\\-134.7852\\-104.5547\\7\\-133.7891\\-103.2086\\7\\-131.5487\\-100.6484\\7\\-130.007\\-98.69531\\7\\-127.9297\\-96.33529\\7\\-125.9766\\-94.71264\\7\\-124.0234\\-93.34258\\7\\-123.4524\\-92.83594\\7\\-120.1172\\-90.22539\\7\\-118.1292\\-88.92969\\7\\-116.2109\\-87.81071\\7\\-114.2578\\-86.56855\\7\\-106.4453\\-83.09514\\7\\-104.4922\\-82.19691\\7\\-102.5391\\-81.84799\\7\\-100.5859\\-80.93458\\7\\-96.67969\\-79.86359\\7\\-94.72656\\-79.15643\\7\\-90.82031\\-78.04508\\7\\-86.91406\\-77.04456\\7\\-84.96094\\-76.4283\\7\\-83.00781\\-76.1309\\7\\-81.05469\\-75.94901\\7\\-79.10156\\-75.66936\\7\\-77.14844\\-74.97059\\7\\-75.19531\\-74.62341\\7\\-73.24219\\-74.39466\\7\\-71.28906\\-74.29933\\7\\-67.38281\\-73.80084\\7\\-65.42969\\-72.80784\\7\\-59.57031\\-72.78273\\7\\-55.66406\\-72.82507\\7\\-51.75781\\-72.79101\\7\\-45.89844\\-72.84272\\7\\-43.94531\\-73.97212\\7\\-41.99219\\-74.26381\\7\\-38.08594\\-74.45247\\7\\-36.13281\\-74.64658\\7\\-34.17969\\-75.01781\\7\\-32.22656\\-75.7558\\7\\-28.32031\\-76.20981\\7\\-26.36719\\-76.63151\\7\\-24.41406\\-77.32108\\7\\-20.50781\\-78.47576\\7\\-18.55469\\-79.33684\\7\\-14.64844\\-80.63901\\7\\-12.69531\\-81.67424\\7\\-10.74219\\-82.45744\\7\\-8.789063\\-83.84263\\7\\-6.835938\\-85.08237\\7\\-2.929688\\-87.40654\\7\\0.9765625\\-89.15394\\7\\4.882813\\-87.59297\\7\\8.129223\\-85.02344\\7\\11.00756\\-83.07031\\7\\14.64844\\-80.91119\\7\\16.60156\\-80.16869\\7\\18.55469\\-79.09748\\7\\22.46094\\-77.37731\\7\\24.41406\\-76.466\\7\\28.32031\\-75.68211\\7\\30.27344\\-74.82132\\7\\32.22656\\-74.53181\\7\\36.13281\\-74.14944\\7\\38.08594\\-72.81641\\7\\45.89844\\-72.68324\\7\\55.66406\\-72.66914\\7\\65.42969\\-72.76647\\7\\67.38281\\-72.81641\\7\\69.33594\\-72.97916\\7\\71.28906\\-74.08723\\7\\73.24219\\-74.2989\\7\\75.19531\\-74.39722\\7\\79.10156\\-74.77315\\7\\83.00781\\-75.82027\\7\\88.86719\\-76.6628\\7\\92.77344\\-77.84001\\7\\96.67969\\-78.91658\\7\\98.63281\\-79.67214\\7\\102.5391\\-80.80614\\7\\104.4922\\-81.6553\\7\\106.4453\\-82.18095\\7\\108.3984\\-82.85094\\7\\110.3516\\-83.86413\\7\\112.3047\\-84.67607\\7\\114.2578\\-85.82399\\7\\116.2109\\-86.70058\\7\\119.8832\\-88.92969\\7\\122.0703\\-90.41747\\7\\126.7705\\-94.78906\\7\\128.5468\\-96.74219\\7\\129.9076\\-98.69531\\7\\131.1384\\-100.6484\\7\\132.6184\\-102.6016\\7\\133.8867\\-104.5547\\7\\134.9597\\-106.5078\\7\\136.1848\\-108.4609\\7\\136.9177\\-110.4141\\7\\138.1202\\-112.3672\\7\\138.9875\\-114.3203\\7\\140.2754\\-116.2734\\7\\141.0853\\-118.2266\\7\\142.1624\\-120.1797\\7\\142.7624\\-122.1328\\7\\143.6691\\-124.0859\\7\\145.1939\\-127.9922\\7\\146.1855\\-129.9453\\7\\146.8558\\-131.8984\\7\\147.8529\\-133.8516\\7\\148.9224\\-137.7578\\7\\149.7491\\-139.7109\\7\\150.2714\\-141.6641\\7\\150.6522\\-143.6172\\7\\152.0272\\-147.5234\\7\\152.9036\\-151.4297\\7\\153.5335\\-153.3828\\7\\153.9509\\-155.3359\\7\\154.8212\\-161.1953\\7\\155.5777\\-165.1016\\7\\155.9966\\-169.0078\\7\\156.33\\-174.8672\\7\\156.6345\\-184.6328\\7\\156.7351\\-190.4922\\7\\156.7576\\-194.3984\\7\\156.8671\\-196.3516\\7\\156.9752\\-200.2578\\7\\156.6139\\-206.1172\\7\\156.3078\\-211.9766\\7\\156.0043\\-215.8828\\7\\155.7717\\-217.8359\\7\\155.4021\\-219.7891\\7\\154.8491\\-221.7422\\7\\154.0067\\-225.6484\\7\\153.4424\\-227.6016\\7\\152.6293\\-229.5547\\7\\152.0126\\-231.5078\\7\\150.9487\\-233.4609\\7\\150.262\\-235.4141\\7\\148.3948\\-239.3203\\7\\146.1315\\-243.2266\\7\\144.6563\\-245.1797\\7\\142.1465\\-249.0859\\7\\140.4644\\-251.0391\\7\\138.5719\\-252.9922\\7\\137.6953\\-254.0315\\7\\134.9308\\-256.8984\\7\\133.7891\\-257.9476\\7\\129.8828\\-261.7464\\7\\123.9953\\-266.6641\\7\\121.5059\\-268.6172\\7\\120.1172\\-269.5573\\7\\118.1641\\-271.0185\\7\\113.0914\\-274.4766\\7\\112.3047\\-275.0545\\7\\110.3516\\-275.9997\\7\\108.3984\\-277.205\\7\\106.0929\\-278.3828\\7\\102.5391\\-280.4205\\7\\100.5859\\-281.2827\\7\\98.63281\\-282.0281\\7\\96.67969\\-282.9589\\7\\94.72656\\-283.4715\\7\\90.82031\\-284.9963\\7\\88.86719\\-285.5083\\7\\86.91406\\-286.2479\\7\\84.96094\\-286.8445\\7\\81.05469\\-287.5913\\7\\77.14844\\-288.4927\\7\\73.24219\\-288.9743\\7\\63.47656\\-289.566\\7\\61.52344\\-289.8236\\7\\57.61719\\-290.4733\\7\\55.66406\\-290.7332\\7\\51.75781\\-291.1397\\7\\49.80469\\-291.3984\\7\\47.85156\\-291.8293\\7\\45.89844\\-292.4217\\7\\41.99219\\-293.1314\\7\\40.03906\\-293.5662\\7\\38.08594\\-294.173\\7\\36.13281\\-294.6369\\7\\30.27344\\-295.4596\\7\\26.36719\\-296.4987\\7\\24.41406\\-296.7957\\7\\20.50781\\-297.2462\\7\\18.55469\\-297.5487\\7\\16.60156\\-298.0361\\7\\14.64844\\-298.4109\\7\\10.74219\\-298.862\\7\\4.882813\\-299.2597\\7\\0.9765625\\-299.438\\7\\-0.9765625\\-299.4778\\7\\-4.882813\\-299.4496\\7\\-6.835938\\-299.3669\\7\\-18.55469\\-298.3488\\7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "291"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "130"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-298.1846\\9\\-24.41406\\-297.4411\\9\\-26.36719\\-297.1682\\9\\-32.22656\\-296.5824\\9\\-34.17969\\-296.249\\9\\-36.13281\\-295.7895\\9\\-38.08594\\-295.4405\\9\\-45.89844\\-294.692\\9\\-49.80469\\-294.1033\\9\\-51.75781\\-293.659\\9\\-53.71094\\-293.3371\\9\\-57.61719\\-292.9062\\9\\-59.57031\\-292.5714\\9\\-61.52344\\-292.5255\\9\\-63.47656\\-292.3365\\9\\-67.38281\\-291.7956\\9\\-71.28906\\-291.3836\\9\\-75.19531\\-291.0831\\9\\-79.10156\\-290.6919\\9\\-81.05469\\-290.3642\\9\\-83.00781\\-289.795\\9\\-84.96094\\-289.4083\\9\\-88.86719\\-288.8308\\9\\-90.82031\\-288.2638\\9\\-92.77344\\-287.4994\\9\\-94.72656\\-286.9487\\9\\-100.5859\\-284.4038\\9\\-102.5391\\-283.3722\\9\\-104.4922\\-282.5901\\9\\-106.4453\\-281.4968\\9\\-108.3984\\-280.5729\\9\\-112.3047\\-277.9244\\9\\-114.2578\\-276.9147\\9\\-116.2109\\-275.5825\\9\\-120.1172\\-273.0447\\9\\-123.228\\-270.5703\\9\\-124.0234\\-269.8708\\9\\-127.9297\\-266.8382\\9\\-131.8359\\-263.1406\\9\\-134.2381\\-260.8047\\9\\-135.8643\\-258.8516\\9\\-137.3367\\-256.8984\\9\\-140.5853\\-252.9922\\9\\-142.041\\-251.0391\\9\\-143.0806\\-249.0859\\9\\-143.5547\\-248.4744\\9\\-146.6881\\-243.2266\\9\\-147.9394\\-241.2734\\9\\-148.6415\\-239.3203\\9\\-149.5895\\-237.3672\\9\\-150.905\\-233.4609\\9\\-151.8821\\-231.5078\\9\\-152.4764\\-229.5547\\9\\-153.92\\-225.6484\\9\\-154.3707\\-223.6953\\9\\-154.9432\\-221.7422\\9\\-155.6431\\-219.7891\\9\\-156.0559\\-217.8359\\9\\-156.3247\\-215.8828\\9\\-156.719\\-213.9297\\9\\-157.3882\\-211.9766\\9\\-157.8147\\-210.0234\\9\\-158.6423\\-202.2109\\9\\-159.4272\\-196.3516\\9\\-159.6505\\-192.4453\\9\\-159.5956\\-188.5391\\9\\-159.6505\\-184.6328\\9\\-159.5365\\-178.7734\\9\\-159.2173\\-174.8672\\9\\-158.6944\\-170.9609\\9\\-158.0322\\-165.1016\\9\\-157.7679\\-163.1484\\9\\-157.3486\\-161.1953\\9\\-156.7612\\-159.2422\\9\\-156.4234\\-157.2891\\9\\-156.1908\\-155.3359\\9\\-155.8398\\-153.3828\\9\\-155.2975\\-151.4297\\9\\-154.6492\\-149.4766\\9\\-154.1964\\-147.5234\\9\\-153.6436\\-145.5703\\9\\-152.7462\\-143.6172\\9\\-152.1827\\-141.6641\\9\\-150.5228\\-137.7578\\9\\-150.0338\\-135.8047\\9\\-149.1255\\-133.8516\\9\\-147.7409\\-129.9453\\9\\-146.7066\\-127.9922\\9\\-145.9383\\-126.0391\\9\\-144.8927\\-124.0859\\9\\-144.1048\\-122.1328\\9\\-142.9879\\-120.1797\\9\\-142.3276\\-118.2266\\9\\-141.1393\\-116.2734\\9\\-140.2109\\-114.3203\\9\\-138.8941\\-112.3672\\9\\-137.8823\\-110.4141\\9\\-136.6882\\-108.4609\\9\\-134.6444\\-104.5547\\9\\-133.0809\\-102.6016\\9\\-131.2275\\-100.6484\\9\\-127.9208\\-96.74219\\9\\-123.1921\\-92.83594\\9\\-120.1172\\-90.5166\\9\\-114.2578\\-86.76202\\9\\-112.3047\\-86.04168\\9\\-110.337\\-85.02344\\9\\-108.3984\\-84.12769\\9\\-106.4453\\-83.37364\\9\\-104.4922\\-82.43555\\9\\-102.5391\\-81.97327\\9\\-100.5859\\-81.34375\\9\\-98.63281\\-80.56009\\9\\-94.11621\\-79.16406\\9\\-86.91406\\-77.23495\\9\\-84.96094\\-76.63449\\9\\-83.00781\\-76.20139\\9\\-79.10156\\-75.82422\\9\\-77.14844\\-75.39169\\9\\-75.19531\\-74.73254\\9\\-73.24219\\-74.4858\\9\\-67.38281\\-74.17618\\9\\-65.42969\\-73.11768\\9\\-63.47656\\-72.81641\\9\\-59.57031\\-72.79937\\9\\-57.61719\\-72.85171\\9\\-51.75781\\-72.79937\\9\\-45.89844\\-72.87931\\9\\-43.94531\\-73.98131\\9\\-41.99219\\-74.25218\\9\\-38.08594\\-74.48042\\9\\-36.13281\\-74.69054\\9\\-34.17969\\-75.06419\\9\\-32.22656\\-75.7946\\9\\-28.32031\\-76.24055\\9\\-26.36719\\-76.67647\\9\\-24.41406\\-77.39045\\9\\-20.50781\\-78.49526\\9\\-18.55469\\-79.31017\\9\\-14.64844\\-80.5863\\9\\-12.69531\\-81.61244\\9\\-10.74219\\-82.41263\\9\\-8.789063\\-83.79631\\9\\-6.835938\\-84.90137\\9\\-4.882813\\-86.14379\\9\\-2.997504\\-86.97656\\9\\-0.9765625\\-88.0566\\9\\0.9765625\\-88.7328\\9\\2.929688\\-88.26293\\9\\4.882813\\-87.53561\\9\\8.06536\\-85.02344\\9\\10.96755\\-83.07031\\9\\14.64844\\-80.91119\\9\\16.60156\\-80.17991\\9\\20.50781\\-78.23428\\9\\22.46094\\-77.44278\\9\\24.41406\\-76.50705\\9\\28.32031\\-75.70291\\9\\30.27344\\-74.85967\\9\\32.22656\\-74.5612\\9\\36.13281\\-74.19839\\9\\38.08594\\-73.16925\\9\\40.03906\\-72.79101\\9\\41.99219\\-72.75057\\9\\51.75781\\-72.6904\\9\\55.66406\\-72.69763\\9\\65.42969\\-72.79101\\9\\67.38281\\-72.88874\\9\\69.33594\\-73.68353\\9\\71.28906\\-74.2636\\9\\75.19531\\-74.47783\\9\\79.10156\\-74.9375\\9\\81.05469\\-75.61976\\9\\86.91406\\-76.44279\\9\\88.86719\\-76.81113\\9\\96.67969\\-79.06932\\9\\98.63281\\-79.80011\\9\\100.5859\\-80.35829\\9\\102.5391\\-81.01481\\9\\104.4922\\-81.78303\\9\\106.4453\\-82.28789\\9\\108.3554\\-83.07031\\9\\112.4657\\-85.02344\\9\\118.1641\\-88.00352\\9\\122.0703\\-90.67609\\9\\125.9766\\-94.26774\\9\\128.2722\\-96.74219\\9\\129.5111\\-98.69531\\9\\132.3425\\-102.6016\\9\\133.4612\\-104.5547\\9\\135.9063\\-108.4609\\9\\136.7364\\-110.4141\\9\\138.7432\\-114.3203\\9\\139.9972\\-116.2734\\9\\140.8237\\-118.2266\\9\\141.896\\-120.1797\\9\\143.283\\-124.0859\\9\\144.2654\\-126.0391\\9\\144.8952\\-127.9922\\9\\145.9263\\-129.9453\\9\\146.5996\\-131.8984\\9\\147.4994\\-133.8516\\9\\148.2244\\-135.8047\\9\\148.7021\\-137.7578\\9\\150.0835\\-141.6641\\9\\150.4568\\-143.6172\\9\\150.9487\\-145.5703\\9\\151.7566\\-147.5234\\9\\152.6027\\-151.4297\\9\\153.6997\\-155.3359\\9\\154.021\\-157.2891\\9\\154.8283\\-163.1484\\9\\155.5266\\-167.0547\\9\\155.9433\\-170.9609\\9\\156.1853\\-174.8672\\9\\156.3071\\-178.7734\\9\\156.497\\-188.5391\\9\\156.5232\\-194.3984\\9\\156.5975\\-196.3516\\9\\156.5695\\-202.2109\\9\\156.3414\\-208.0703\\9\\156.1435\\-211.9766\\9\\155.7912\\-215.8828\\9\\155.4732\\-217.8359\\9\\154.5837\\-221.7422\\9\\153.7564\\-225.6484\\9\\152.9838\\-227.6016\\9\\151.6773\\-231.5078\\9\\150.6245\\-233.4609\\9\\150.0077\\-235.4141\\9\\148.9223\\-237.3672\\9\\148.1014\\-239.3203\\9\\145.6914\\-243.2266\\9\\143.5547\\-246.2921\\9\\142.9014\\-247.1328\\9\\141.66\\-249.0859\\9\\139.9891\\-251.0391\\9\\137.6953\\-253.5406\\9\\134.4763\\-256.8984\\9\\133.7891\\-257.5048\\9\\129.8828\\-261.3152\\9\\127.9297\\-262.9826\\9\\125.9766\\-264.3579\\9\\122.0703\\-267.6938\\9\\120.1172\\-269.235\\9\\118.1641\\-270.3577\\9\\114.2578\\-273.2823\\9\\112.3047\\-274.4848\\9\\110.3516\\-275.5825\\9\\108.3984\\-276.7854\\9\\106.4453\\-277.6266\\9\\104.4922\\-278.8871\\9\\102.5391\\-279.7898\\9\\100.5859\\-280.9144\\9\\98.63281\\-281.5852\\9\\96.67969\\-282.5069\\9\\94.72656\\-283.1668\\9\\92.77344\\-283.6436\\9\\90.82031\\-284.5279\\9\\86.91406\\-285.6058\\9\\84.96094\\-286.3722\\9\\83.00781\\-286.8558\\9\\79.10156\\-287.5118\\9\\75.19531\\-288.3348\\9\\73.24219\\-288.6565\\9\\69.33594\\-288.9915\\9\\63.47656\\-289.3355\\9\\59.57031\\-289.7311\\9\\55.66406\\-290.5509\\9\\49.80469\\-291.344\\9\\47.85156\\-291.7598\\9\\45.89844\\-292.4217\\9\\41.99219\\-293.1729\\9\\40.03906\\-293.6288\\9\\38.08594\\-294.2878\\9\\36.13281\\-294.7121\\9\\32.22656\\-295.2423\\9\\30.27344\\-295.5827\\9\\28.32031\\-296.1996\\9\\26.36719\\-296.6331\\9\\20.50781\\-297.3809\\9\\16.60156\\-298.2709\\9\\12.69531\\-298.8084\\9\\10.74219\\-298.9898\\9\\4.882813\\-299.4066\\9\\0.9765625\\-299.6127\\9\\-2.929688\\-299.6704\\9\\-4.882813\\-299.6462\\9\\-6.835938\\-299.5198\\9\\-12.69531\\-298.9397\\9\\-18.55469\\-298.4682\\9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "295"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "131"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-24.41406\\-297.5325\\11\\-26.36719\\-297.25\\11\\-32.22656\\-296.6479\\11\\-34.17969\\-296.3422\\11\\-38.08594\\-295.4825\\11\\-40.03906\\-295.2468\\11\\-45.89844\\-294.6844\\11\\-47.85156\\-294.4126\\11\\-51.75781\\-293.5771\\11\\-55.66406\\-293.0122\\11\\-59.57031\\-292.6009\\11\\-65.42969\\-291.6956\\11\\-69.33594\\-291.3055\\11\\-75.19531\\-290.8429\\11\\-77.14844\\-290.6073\\11\\-79.10156\\-290.2655\\11\\-81.05469\\-289.7737\\11\\-83.00781\\-289.4161\\11\\-86.91406\\-288.9114\\11\\-88.86719\\-288.455\\11\\-90.82031\\-287.7166\\11\\-94.72656\\-286.5797\\11\\-96.67969\\-285.5939\\11\\-98.63281\\-284.8914\\11\\-100.5859\\-283.8044\\11\\-102.5391\\-283.1029\\11\\-104.4922\\-282.0831\\11\\-106.4453\\-281.2047\\11\\-108.3984\\-280.022\\11\\-110.3516\\-278.9472\\11\\-112.3047\\-277.5551\\11\\-116.2109\\-275.2925\\11\\-120.1172\\-272.5311\\11\\-122.7572\\-270.5703\\11\\-125.9766\\-267.9683\\11\\-127.5068\\-266.6641\\11\\-133.7891\\-260.7785\\11\\-137.0089\\-256.8984\\11\\-137.6953\\-256.1641\\11\\-140.2858\\-252.9922\\11\\-141.6585\\-251.0391\\11\\-142.806\\-249.0859\\11\\-144.1323\\-247.1328\\11\\-145.1239\\-245.1797\\11\\-146.4442\\-243.2266\\11\\-147.6163\\-241.2734\\11\\-149.2097\\-237.3672\\11\\-150.1116\\-235.4141\\11\\-150.6449\\-233.4609\\11\\-151.568\\-231.5078\\11\\-152.2714\\-229.5547\\11\\-152.8444\\-227.6016\\11\\-153.6944\\-225.6484\\11\\-154.6662\\-221.7422\\11\\-155.3286\\-219.7891\\11\\-155.8709\\-217.8359\\11\\-156.4605\\-213.9297\\11\\-156.8964\\-211.9766\\11\\-157.4623\\-210.0234\\11\\-158.0363\\-206.1172\\11\\-158.5638\\-200.2578\\11\\-159.2024\\-194.3984\\11\\-159.3283\\-192.4453\\11\\-159.2882\\-188.5391\\11\\-159.3018\\-184.6328\\11\\-159.2024\\-180.7266\\11\\-159.0989\\-178.7734\\11\\-158.7779\\-174.8672\\11\\-158.0533\\-167.0547\\11\\-157.8071\\-165.1016\\11\\-157.4504\\-163.1484\\11\\-156.901\\-161.1953\\11\\-156.5222\\-159.2422\\11\\-156.009\\-155.3359\\11\\-155.5678\\-153.3828\\11\\-154.9037\\-151.4297\\11\\-153.9694\\-147.5234\\11\\-152.4599\\-143.6172\\11\\-151.9179\\-141.6641\\11\\-150.9535\\-139.7109\\11\\-149.7608\\-135.8047\\11\\-148.84\\-133.8516\\11\\-148.2458\\-131.8984\\11\\-146.4679\\-127.9922\\11\\-144.589\\-124.0859\\11\\-143.7529\\-122.1328\\11\\-142.762\\-120.1797\\11\\-142.0689\\-118.2266\\11\\-140.8472\\-116.2734\\11\\-139.9065\\-114.3203\\11\\-137.4324\\-110.4141\\11\\-136.5349\\-108.4609\\11\\-134.3559\\-104.5547\\11\\-132.8501\\-102.6016\\11\\-131.0124\\-100.6484\\11\\-127.9297\\-97.1443\\11\\-125.9766\\-95.36392\\11\\-122.9467\\-92.83594\\11\\-120.1172\\-90.78807\\11\\-116.2109\\-88.19382\\11\\-113.9109\\-86.97656\\11\\-109.9459\\-85.02344\\11\\-108.3984\\-84.32492\\11\\-106.4453\\-83.62931\\11\\-104.4922\\-82.76926\\11\\-102.5391\\-82.13814\\11\\-100.5859\\-81.74451\\11\\-98.63281\\-80.7394\\11\\-96.67969\\-80.18501\\11\\-88.86719\\-77.81451\\11\\-86.91406\\-77.3559\\11\\-83.00781\\-76.2553\\11\\-81.05469\\-76.11694\\11\\-77.14844\\-75.70596\\11\\-75.19531\\-74.85938\\11\\-73.24219\\-74.58599\\11\\-71.28906\\-74.43443\\11\\-67.38281\\-74.25184\\11\\-65.42969\\-74.00809\\11\\-63.47656\\-73.1431\\11\\-61.52344\\-72.81641\\11\\-55.66406\\-72.86079\\11\\-51.75781\\-72.81641\\11\\-47.85156\\-72.87\\11\\-45.89844\\-73.1431\\11\\-43.94531\\-74.08977\\11\\-38.08594\\-74.50912\\11\\-36.13281\\-74.72581\\11\\-34.17969\\-75.19678\\11\\-32.22656\\-75.83487\\11\\-28.32031\\-76.31274\\11\\-26.36719\\-76.7597\\11\\-24.41406\\-77.47915\\11\\-20.50781\\-78.49904\\11\\-18.55469\\-79.28032\\11\\-14.64844\\-80.55453\\11\\-12.69531\\-81.58791\\11\\-10.74219\\-82.36903\\11\\-8.789063\\-83.70221\\11\\-6.835938\\-84.7047\\11\\-4.882813\\-86.00626\\11\\-2.929688\\-86.86031\\11\\-0.9765625\\-88.01251\\11\\0.9765625\\-88.35649\\11\\2.929688\\-88.14193\\11\\4.882813\\-87.41639\\11\\8.047921\\-85.02344\\11\\11.01047\\-83.07031\\11\\14.64844\\-80.93893\\11\\16.60156\\-80.17991\\11\\20.50781\\-78.26307\\11\\22.46094\\-77.50459\\11\\24.41406\\-76.58361\\11\\28.32031\\-75.74286\\11\\30.27344\\-74.89641\\11\\32.22656\\-74.57818\\11\\36.13281\\-74.25218\\11\\38.08594\\-73.81906\\11\\40.03906\\-72.80784\\11\\43.94531\\-72.74275\\11\\55.66406\\-72.71235\\11\\61.52344\\-72.75057\\11\\65.42969\\-72.82507\\11\\66.95902\\-73.30469\\11\\69.33594\\-74.22894\\11\\73.24219\\-74.40257\\11\\77.14844\\-74.76235\\11\\81.05469\\-75.76814\\11\\86.91406\\-76.53766\\11\\88.86719\\-76.99924\\11\\92.77344\\-78.03056\\11\\96.40842\\-79.16406\\11\\98.63281\\-79.96362\\11\\100.5859\\-80.46821\\11\\102.5391\\-81.25\\11\\104.4922\\-81.92178\\11\\106.4453\\-82.40529\\11\\108.3984\\-83.3463\\11\\110.3516\\-84.14732\\11\\112.3047\\-85.18119\\11\\114.2578\\-86.09032\\11\\116.2109\\-87.22833\\11\\118.1641\\-88.17014\\11\\121.9076\\-90.88281\\11\\125.9766\\-94.63182\\11\\127.9297\\-96.77148\\11\\130.6912\\-100.6484\\11\\132.0103\\-102.6016\\11\\133.1279\\-104.5547\\11\\134.4758\\-106.5078\\11\\136.5784\\-110.4141\\11\\137.3819\\-112.3672\\11\\137.6953\\-112.7914\\11\\139.6484\\-116.37\\11\\141.6016\\-120.3001\\11\\142.4326\\-122.1328\\11\\142.9883\\-124.0859\\11\\144.0139\\-126.0391\\11\\144.6589\\-127.9922\\11\\145.5744\\-129.9453\\11\\147.1015\\-133.8516\\11\\148.0056\\-135.8047\\11\\149.039\\-139.7109\\11\\149.8336\\-141.6641\\11\\150.6789\\-145.5703\\11\\151.9769\\-149.4766\\11\\152.7497\\-153.3828\\11\\153.3279\\-155.3359\\11\\153.7997\\-157.2891\\11\\154.0939\\-159.2422\\11\\154.5725\\-163.1484\\11\\155.1437\\-167.0547\\11\\155.5121\\-169.0078\\11\\155.8798\\-172.9141\\11\\156.1062\\-176.8203\\11\\156.2326\\-180.7266\\11\\156.3528\\-188.5391\\11\\156.3642\\-194.3984\\11\\156.4213\\-196.3516\\11\\156.3985\\-200.2578\\11\\156.3132\\-204.1641\\11\\156.0872\\-210.0234\\11\\155.7584\\-213.9297\\11\\155.4864\\-215.8828\\11\\155.0605\\-217.8359\\11\\153.9617\\-223.6953\\11\\153.3729\\-225.6484\\11\\152.6451\\-227.6016\\11\\152.0916\\-229.5547\\11\\151.1944\\-231.5078\\11\\149.673\\-235.4141\\11\\148.6214\\-237.3672\\11\\147.7389\\-239.3203\\11\\146.5075\\-241.2734\\11\\145.13\\-243.2266\\11\\143.9986\\-245.1797\\11\\141.0991\\-249.0859\\11\\137.5868\\-252.9922\\11\\135.9743\\-254.9453\\11\\133.9674\\-256.8984\\11\\131.8359\\-258.8256\\11\\129.8183\\-260.8047\\11\\127.4889\\-262.7578\\11\\125.9766\\-263.8896\\11\\122.0703\\-267.2904\\11\\120.1172\\-268.706\\11\\118.1641\\-269.8814\\11\\117.3188\\-270.5703\\11\\114.2578\\-272.7898\\11\\112.3047\\-273.9213\\11\\110.3516\\-275.2253\\11\\108.3984\\-276.1367\\11\\106.4453\\-277.2726\\11\\104.4922\\-278.2511\\11\\100.5859\\-280.3744\\11\\98.63281\\-281.2221\\11\\96.67969\\-281.897\\11\\94.72656\\-282.8139\\11\\90.82031\\-283.8364\\11\\88.86719\\-284.6943\\11\\84.96094\\-285.6915\\11\\83.00781\\-286.3962\\11\\81.05469\\-286.8482\\11\\77.14844\\-287.4115\\11\\71.28906\\-288.4786\\11\\69.33594\\-288.7148\\11\\65.42969\\-289.0411\\11\\59.57031\\-289.4768\\11\\57.61719\\-289.7995\\11\\55.66406\\-290.3406\\11\\53.71094\\-290.7259\\11\\49.80469\\-291.2824\\11\\47.85156\\-291.7059\\11\\45.89844\\-292.4217\\11\\41.99219\\-293.2069\\11\\40.03906\\-293.7089\\11\\38.08594\\-294.3707\\11\\36.13281\\-294.7739\\11\\32.22656\\-295.3036\\11\\30.27344\\-295.7078\\11\\28.32031\\-296.3448\\11\\26.36719\\-296.7126\\11\\22.46094\\-297.1994\\11\\20.50781\\-297.5405\\11\\18.55469\\-298.0627\\11\\16.60156\\-298.4277\\11\\10.74219\\-299.11\\11\\4.882813\\-299.5641\\11\\0.9765625\\-299.7266\\11\\-2.929688\\-299.7974\\11\\-4.882813\\-299.7266\\11\\-10.74219\\-299.2363\\11\\-14.64844\\-298.8525\\11\\-18.55469\\-298.5496\\11\\-20.50781\\-298.301\\11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "296"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "132"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-24.41406\\-297.636\\13\\-28.32031\\-297.0778\\13\\-32.22656\\-296.6947\\13\\-34.17969\\-296.4171\\13\\-38.08594\\-295.5158\\13\\-40.03906\\-295.2712\\13\\-45.89844\\-294.6726\\13\\-47.85156\\-294.3683\\13\\-51.75781\\-293.4991\\13\\-53.71094\\-293.1758\\13\\-59.57031\\-292.4514\\13\\-63.47656\\-291.6853\\13\\-67.38281\\-291.2584\\13\\-73.24219\\-290.7789\\13\\-75.19531\\-290.5443\\13\\-79.10156\\-289.7014\\13\\-81.05469\\-289.4006\\13\\-84.96094\\-288.9285\\13\\-86.91406\\-288.5542\\13\\-88.86719\\-287.8788\\13\\-92.77344\\-286.8482\\13\\-98.63281\\-284.4333\\13\\-100.5859\\-283.4342\\13\\-102.5391\\-282.7942\\13\\-104.4922\\-281.6795\\13\\-106.4453\\-280.8657\\13\\-108.3984\\-279.6035\\13\\-112.3047\\-277.2625\\13\\-114.2578\\-275.9276\\13\\-116.2109\\-274.9613\\13\\-118.1641\\-273.5117\\13\\-120.1172\\-271.9627\\13\\-124.0234\\-269.2101\\13\\-127.0672\\-266.6641\\13\\-129.205\\-264.7109\\13\\-133.7891\\-260.2794\\13\\-137.6953\\-255.8211\\13\\-139.9361\\-252.9922\\13\\-141.6016\\-250.5699\\13\\-143.8427\\-247.1328\\13\\-144.8308\\-245.1797\\13\\-146.1926\\-243.2266\\13\\-148.2338\\-239.3203\\13\\-148.9292\\-237.3672\\13\\-149.8922\\-235.4141\\13\\-150.4517\\-233.4609\\13\\-151.1413\\-231.5078\\13\\-152.0453\\-229.5547\\13\\-152.5797\\-227.6016\\13\\-153.328\\-225.6484\\13\\-153.9771\\-223.6953\\13\\-154.9316\\-219.7891\\13\\-155.58\\-217.8359\\13\\-156.0043\\-215.8828\\13\\-156.5412\\-211.9766\\13\\-156.8872\\-210.0234\\13\\-157.426\\-208.0703\\13\\-157.7838\\-206.1172\\13\\-157.997\\-204.1641\\13\\-158.4642\\-198.3047\\13\\-158.8369\\-192.4453\\13\\-158.896\\-188.5391\\13\\-158.7878\\-180.7266\\13\\-158.495\\-174.8672\\13\\-158.0436\\-169.0078\\13\\-157.8547\\-167.0547\\13\\-157.5195\\-165.1016\\13\\-156.6018\\-161.1953\\13\\-156.125\\-157.2891\\13\\-155.7815\\-155.3359\\13\\-154.6121\\-151.4297\\13\\-153.6969\\-147.5234\\13\\-152.8105\\-145.5703\\13\\-151.5416\\-141.6641\\13\\-150.6662\\-139.7109\\13\\-150.1703\\-137.7578\\13\\-148.6167\\-133.8516\\13\\-148.0181\\-131.8984\\13\\-146.9727\\-129.9453\\13\\-146.2277\\-127.9922\\13\\-145.097\\-126.0391\\13\\-144.3232\\-124.0859\\13\\-143.2938\\-122.1328\\13\\-142.5413\\-120.1797\\13\\-141.6576\\-118.2266\\13\\-139.6484\\-114.5339\\13\\-138.4092\\-112.3672\\13\\-137.1251\\-110.4141\\13\\-136.3322\\-108.4609\\13\\-134.01\\-104.5547\\13\\-132.4894\\-102.6016\\13\\-129.1145\\-98.69531\\13\\-127.2364\\-96.74219\\13\\-125.9766\\-95.57994\\13\\-124.0234\\-93.94503\\13\\-122.0703\\-92.4388\\13\\-120.1172\\-91.14175\\13\\-116.2109\\-88.43056\\13\\-114.2578\\-87.62985\\13\\-112.3047\\-86.39713\\13\\-108.3984\\-84.61543\\13\\-102.5391\\-82.30302\\13\\-100.5859\\-81.86983\\13\\-98.63281\\-80.96634\\13\\-90.82031\\-78.58847\\13\\-88.86719\\-77.93304\\13\\-86.91406\\-77.48261\\13\\-83.00781\\-76.38298\\13\\-79.10156\\-76.03068\\13\\-77.14844\\-75.80392\\13\\-75.19531\\-75.16441\\13\\-73.24219\\-74.68634\\13\\-71.28906\\-74.50409\\13\\-67.38281\\-74.27537\\13\\-65.42969\\-74.22894\\13\\-63.47656\\-73.97178\\13\\-61.52344\\-72.86079\\13\\-55.66406\\-72.90796\\13\\-51.75781\\-72.85171\\13\\-47.85156\\-72.87\\13\\-43.94531\\-74.21731\\13\\-41.99219\\-74.28125\\13\\-38.08594\\-74.53369\\13\\-36.13281\\-74.73649\\13\\-34.17969\\-75.50011\\13\\-32.22656\\-75.87814\\13\\-28.32031\\-76.38508\\13\\-26.36719\\-76.82729\\13\\-24.41406\\-77.54974\\13\\-20.50781\\-78.52319\\13\\-18.55469\\-79.32182\\13\\-14.64844\\-80.53253\\13\\-12.69531\\-81.57385\\13\\-10.74219\\-82.33951\\13\\-8.789063\\-83.61068\\13\\-6.835938\\-84.58567\\13\\-4.882813\\-85.75764\\13\\-2.929688\\-86.73607\\13\\-0.9765625\\-88.08529\\13\\0.9765625\\-88.21886\\13\\2.929688\\-88.01613\\13\\4.882813\\-87.11968\\13\\6.835938\\-85.93533\\13\\8.789063\\-84.54382\\13\\12.69531\\-82.08724\\13\\14.64844\\-80.99809\\13\\16.60156\\-80.20236\\13\\20.50781\\-78.31463\\13\\22.46094\\-77.57632\\13\\24.41406\\-76.69393\\13\\26.36719\\-76.16966\\13\\28.32031\\-75.80244\\13\\30.27344\\-74.94817\\13\\32.22656\\-74.60452\\13\\36.13281\\-74.28125\\13\\38.08594\\-73.98077\\13\\40.03906\\-72.95817\\13\\41.99219\\-72.79937\\13\\43.94531\\-72.76647\\13\\51.75781\\-72.73502\\13\\59.57031\\-72.75848\\13\\63.47656\\-72.82507\\13\\65.42969\\-73.06896\\13\\67.38281\\-74.13055\\13\\73.24219\\-74.46279\\13\\75.19531\\-74.63146\\13\\77.14844\\-74.94004\\13\\79.10156\\-75.57171\\13\\81.05469\\-75.86665\\13\\86.91406\\-76.63246\\13\\90.82031\\-77.68654\\13\\92.77344\\-78.14072\\13\\94.72656\\-78.75767\\13\\98.63281\\-80.09384\\13\\100.5859\\-80.5863\\13\\102.5391\\-81.44271\\13\\106.4453\\-82.53477\\13\\108.3984\\-83.53255\\13\\110.3516\\-84.29388\\13\\112.3047\\-85.39904\\13\\114.2578\\-86.25128\\13\\116.2109\\-87.41138\\13\\118.1641\\-88.32515\\13\\121.5328\\-90.88281\\13\\123.6979\\-92.83594\\13\\125.9766\\-95.08895\\13\\127.5204\\-96.74219\\13\\129.0485\\-98.69531\\13\\130.4321\\-100.6484\\13\\133.7891\\-105.9634\\13\\134.2163\\-106.5078\\13\\135.1681\\-108.4609\\13\\136.3824\\-110.4141\\13\\137.1029\\-112.3672\\13\\138.31\\-114.3203\\13\\139.1855\\-116.2734\\13\\140.3642\\-118.2266\\13\\141.183\\-120.1797\\13\\142.2463\\-122.1328\\13\\142.804\\-124.0859\\13\\143.6834\\-126.0391\\13\\145.1509\\-129.9453\\13\\146.1457\\-131.8984\\13\\146.804\\-133.8516\\13\\147.7291\\-135.8047\\13\\148.331\\-137.7578\\13\\148.7997\\-139.7109\\13\\149.5164\\-141.6641\\13\\150.127\\-143.6172\\13\\150.9251\\-147.5234\\13\\151.6927\\-149.4766\\13\\152.1657\\-151.4297\\13\\152.5004\\-153.3828\\13\\152.9335\\-155.3359\\13\\153.5087\\-157.2891\\13\\153.8857\\-159.2422\\13\\154.1504\\-161.1953\\13\\154.8387\\-167.0547\\13\\155.1882\\-169.0078\\13\\155.6517\\-172.9141\\13\\155.9514\\-176.8203\\13\\156.0942\\-180.7266\\13\\156.2149\\-186.5859\\13\\156.2787\\-196.3516\\13\\156.25\\-200.2578\\13\\156.1553\\-204.1641\\13\\155.992\\-208.0703\\13\\155.6764\\-211.9766\\13\\155.4031\\-213.9297\\13\\154.7001\\-217.8359\\13\\154.1158\\-221.7422\\13\\153.6865\\-223.6953\\13\\152.9284\\-225.6484\\13\\151.791\\-229.5547\\13\\150.8065\\-231.5078\\13\\150.2035\\-233.4609\\13\\148.3638\\-237.3672\\13\\146.1879\\-241.2734\\13\\144.7427\\-243.2266\\13\\143.4652\\-245.1797\\13\\142.2897\\-247.1328\\13\\140.6966\\-249.0859\\13\\137.0331\\-252.9922\\13\\135.7422\\-254.5499\\13\\133.3008\\-256.8984\\13\\131.8359\\-258.2168\\13\\129.1985\\-260.8047\\13\\126.9372\\-262.7578\\13\\124.4996\\-264.7109\\13\\122.0703\\-266.7361\\13\\116.2109\\-270.9073\\13\\114.2578\\-272.0992\\13\\110.3516\\-274.7845\\13\\108.3984\\-275.6908\\13\\106.4453\\-276.8881\\13\\104.4922\\-277.6967\\13\\102.5391\\-278.9348\\13\\100.5859\\-279.7719\\13\\98.63281\\-280.8469\\13\\96.67969\\-281.4867\\13\\92.77344\\-282.9714\\13\\90.82031\\-283.4145\\13\\88.86719\\-284.0128\\13\\86.91406\\-284.8109\\13\\83.00781\\-285.7102\\13\\81.05469\\-286.3318\\13\\79.10156\\-286.7708\\13\\73.24219\\-287.6059\\13\\69.33594\\-288.3062\\13\\67.38281\\-288.5997\\13\\63.47656\\-289.0119\\13\\59.57031\\-289.3238\\13\\57.61719\\-289.5786\\13\\53.71094\\-290.6158\\13\\49.80469\\-291.2352\\13\\47.85156\\-291.6853\\13\\45.89844\\-292.4115\\13\\41.99219\\-293.2424\\13\\38.08594\\-294.4383\\13\\36.13281\\-294.8206\\13\\32.22656\\-295.3673\\13\\30.27344\\-295.8602\\13\\28.32031\\-296.4619\\13\\26.36719\\-296.7897\\13\\22.46094\\-297.2994\\13\\20.50781\\-297.7058\\13\\18.55469\\-298.2502\\13\\16.60156\\-298.5426\\13\\10.74219\\-299.1999\\13\\4.882813\\-299.6877\\13\\2.929688\\-299.798\\13\\-0.9765625\\-299.8436\\13\\-4.882813\\-299.7277\\13\\-10.74219\\-299.2779\\13\\-18.55469\\-298.6066\\13\\-20.50781\\-298.4023\\13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "288"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "133"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.9765625\\-299.9338\\15\\-4.882813\\-299.7695\\15\\-8.789063\\-299.4881\\15\\-18.55469\\-298.6709\\15\\-22.46094\\-298.1846\\15\\-26.36719\\-297.3896\\15\\-28.32031\\-297.1275\\15\\-32.22656\\-296.739\\15\\-34.17969\\-296.4772\\15\\-38.08594\\-295.5608\\15\\-40.03906\\-295.2996\\15\\-45.89844\\-294.6648\\15\\-47.85156\\-294.3333\\15\\-51.75781\\-293.423\\15\\-53.71094\\-293.1196\\15\\-57.61719\\-292.6244\\15\\-59.57031\\-292.2664\\15\\-61.52344\\-291.7729\\15\\-63.47656\\-291.4643\\15\\-71.28906\\-290.7509\\15\\-73.24219\\-290.4859\\15\\-77.14844\\-289.6595\\15\\-79.10156\\-289.3886\\15\\-83.00781\\-288.9622\\15\\-84.96094\\-288.6234\\15\\-88.86719\\-287.4006\\15\\-90.82031\\-287.0128\\15\\-92.77344\\-286.4343\\15\\-94.72656\\-285.5236\\15\\-96.67969\\-284.8839\\15\\-98.63281\\-283.8285\\15\\-100.5859\\-283.1784\\15\\-102.6503\\-282.2891\\15\\-106.4453\\-280.4199\\15\\-108.3984\\-279.268\\15\\-110.3516\\-277.922\\15\\-112.3047\\-276.9313\\15\\-114.2578\\-275.6024\\15\\-116.2109\\-274.5014\\15\\-118.1641\\-273.1598\\15\\-122.0703\\-270.0749\\15\\-124.0234\\-268.7705\\15\\-125.9766\\-267.2321\\15\\-128.8328\\-264.7109\\15\\-131.8359\\-261.8905\\15\\-134.772\\-258.8516\\15\\-138.0381\\-254.9453\\15\\-142.3533\\-249.0859\\15\\-144.5818\\-245.1797\\15\\-145.8971\\-243.2266\\15\\-146.8689\\-241.2734\\15\\-147.9907\\-239.3203\\15\\-148.6895\\-237.3672\\15\\-149.5895\\-235.4141\\15\\-150.289\\-233.4609\\15\\-150.81\\-231.5078\\15\\-151.7591\\-229.5547\\15\\-152.9208\\-225.6484\\15\\-153.7298\\-223.6953\\15\\-154.6285\\-219.7891\\15\\-155.7483\\-215.8828\\15\\-156.1062\\-213.9297\\15\\-156.5656\\-210.0234\\15\\-156.9245\\-208.0703\\15\\-157.4504\\-206.1172\\15\\-157.7679\\-204.1641\\15\\-157.9652\\-202.2109\\15\\-158.2416\\-198.3047\\15\\-158.4447\\-194.3984\\15\\-158.5749\\-190.4922\\15\\-158.586\\-188.5391\\15\\-158.5056\\-180.7266\\15\\-158.2853\\-174.8672\\15\\-157.8513\\-169.0078\\15\\-157.5834\\-167.0547\\15\\-156.6819\\-163.1484\\15\\-155.935\\-157.2891\\15\\-155.4747\\-155.3359\\15\\-154.8491\\-153.3828\\15\\-153.92\\-149.4766\\15\\-153.3203\\-147.6455\\15\\-152.5228\\-145.5703\\15\\-151.9643\\-143.6172\\15\\-151.0651\\-141.6641\\15\\-149.9449\\-137.7578\\15\\-149.0331\\-135.8047\\15\\-147.7349\\-131.8984\\15\\-146.6989\\-129.9453\\15\\-145.9343\\-127.9922\\15\\-144.7917\\-126.0391\\15\\-144.065\\-124.0859\\15\\-142.9714\\-122.1328\\15\\-142.3181\\-120.1797\\15\\-141.2421\\-118.2266\\15\\-140.3939\\-116.2734\\15\\-139.1211\\-114.3203\\15\\-138.1416\\-112.3672\\15\\-136.8764\\-110.4141\\15\\-136.0502\\-108.4609\\15\\-133.7891\\-104.7586\\15\\-129.8828\\-99.79504\\15\\-128.958\\-98.69531\\15\\-125.9766\\-95.81445\\15\\-124.0234\\-94.15466\\15\\-116.2109\\-88.66769\\15\\-114.2578\\-87.8467\\15\\-112.3047\\-86.62081\\15\\-110.3516\\-85.87399\\15\\-106.4453\\-84.0533\\15\\-104.4922\\-83.37908\\15\\-102.5391\\-82.46986\\15\\-100.5859\\-81.98319\\15\\-98.63281\\-81.32813\\15\\-96.67969\\-80.49806\\15\\-94.72656\\-80.0342\\15\\-92.19752\\-79.16406\\15\\-90.82031\\-78.80599\\15\\-88.86719\\-78.0981\\15\\-83.00781\\-76.56227\\15\\-81.05469\\-76.27218\\15\\-77.14844\\-75.89849\\15\\-75.19531\\-75.5621\\15\\-73.24219\\-74.78088\\15\\-71.28906\\-74.57758\\15\\-67.38281\\-74.31102\\15\\-63.47656\\-74.20035\\15\\-61.52344\\-72.9377\\15\\-55.66406\\-72.9686\\15\\-47.85156\\-72.84272\\15\\-43.94531\\-74.22894\\15\\-41.99219\\-74.30492\\15\\-38.08594\\-74.56807\\15\\-36.13281\\-74.78876\\15\\-34.17969\\-75.66864\\15\\-28.32031\\-76.46021\\15\\-26.36719\\-76.9389\\15\\-24.41406\\-77.60545\\15\\-20.50781\\-78.59342\\15\\-18.55469\\-79.3754\\15\\-14.64844\\-80.5416\\15\\-12.69531\\-81.56301\\15\\-10.74219\\-82.32353\\15\\-8.789063\\-83.55527\\15\\-5.872938\\-85.02344\\15\\-2.282715\\-86.97656\\15\\-0.9765625\\-87.80586\\15\\0.9765625\\-88.09354\\15\\2.929688\\-87.9158\\15\\6.835938\\-85.8922\\15\\8.789063\\-84.53516\\15\\10.74219\\-83.38876\\15\\12.69531\\-82.11962\\15\\14.64844\\-81.07616\\15\\18.55469\\-79.3836\\15\\20.50781\\-78.36293\\15\\22.46094\\-77.6414\\15\\24.41406\\-76.79057\\15\\26.36719\\-76.22253\\15\\28.32031\\-75.87044\\15\\32.22656\\-74.65525\\15\\34.17969\\-74.45027\\15\\38.08594\\-74.18539\\15\\40.03906\\-73.23811\\15\\41.99219\\-72.83385\\15\\47.85156\\-72.78273\\15\\55.66406\\-72.76647\\15\\61.52344\\-72.81641\\15\\63.47656\\-73.01172\\15\\65.42969\\-73.89632\\15\\67.38281\\-74.20568\\15\\71.28906\\-74.40409\\15\\75.19531\\-74.72707\\15\\77.14844\\-75.166\\15\\79.10156\\-75.71699\\15\\84.96094\\-76.42394\\15\\86.91406\\-76.78329\\15\\88.86719\\-77.37609\\15\\92.77344\\-78.33904\\15\\94.72656\\-78.91658\\15\\96.67969\\-79.64556\\15\\100.5859\\-80.70856\\15\\102.5391\\-81.56738\\15\\106.4453\\-82.73801\\15\\108.3984\\-83.71532\\15\\110.3516\\-84.46452\\15\\112.3047\\-85.59677\\15\\114.2578\\-86.41246\\15\\116.2109\\-87.59862\\15\\118.1641\\-88.56348\\15\\120.1172\\-89.97559\\15\\123.4345\\-92.83594\\15\\125.9766\\-95.40922\\15\\127.2022\\-96.74219\\15\\128.8099\\-98.69531\\15\\130.1058\\-100.6484\\15\\131.2406\\-102.6016\\15\\131.8359\\-103.3707\\15\\133.7891\\-106.4119\\15\\134.9253\\-108.4609\\15\\136.1314\\-110.4141\\15\\136.898\\-112.3672\\15\\138.0358\\-114.3203\\15\\138.8926\\-116.2734\\15\\140.1149\\-118.2266\\15\\140.9091\\-120.1797\\15\\142.0045\\-122.1328\\15\\143.2957\\-126.0391\\15\\144.2603\\-127.9922\\15\\144.8357\\-129.9453\\15\\145.8635\\-131.8984\\15\\146.5441\\-133.8516\\15\\148.1262\\-137.7578\\15\\149.1444\\-141.6641\\15\\149.899\\-143.6172\\15\\150.6564\\-147.5234\\15\\151.9228\\-151.4297\\15\\152.6455\\-155.3359\\15\\153.0901\\-157.2891\\15\\153.6372\\-159.2422\\15\\153.9433\\-161.1953\\15\\155.0752\\-170.9609\\15\\155.5896\\-174.8672\\15\\155.7451\\-176.8203\\15\\155.9307\\-180.7266\\15\\156.0872\\-186.5859\\15\\156.1369\\-192.4453\\15\\156.0822\\-200.2578\\15\\155.9639\\-204.1641\\15\\155.7451\\-208.0703\\15\\155.3125\\-211.9766\\15\\154.9812\\-213.9297\\15\\154.1938\\-219.7891\\15\\153.8609\\-221.7422\\15\\152.6196\\-225.6484\\15\\152.125\\-227.6016\\15\\150.5457\\-231.5078\\15\\149.9544\\-233.4609\\15\\148.8685\\-235.4141\\15\\148.0928\\-237.3672\\15\\146.8406\\-239.3203\\15\\145.8068\\-241.2734\\15\\143.5547\\-244.4909\\15\\143.0114\\-245.1797\\15\\141.8795\\-247.1328\\15\\140.324\\-249.0859\\15\\137.6953\\-251.8361\\15\\134.8842\\-254.9453\\15\\131.8359\\-257.7892\\15\\129.8828\\-259.7173\\15\\127.9297\\-261.5354\\15\\125.9766\\-263.1231\\15\\124.0234\\-264.4688\\15\\121.4371\\-266.6641\\15\\118.1641\\-269.1441\\15\\116.2109\\-270.268\\15\\112.3047\\-273.0716\\15\\110.3516\\-274.1558\\15\\108.3984\\-275.366\\15\\106.2296\\-276.4297\\15\\100.5859\\-279.3378\\15\\96.67969\\-281.1328\\15\\94.72656\\-281.6955\\15\\92.77344\\-282.5219\\15\\90.82031\\-283.1029\\15\\88.86719\\-283.5053\\15\\84.96094\\-284.8575\\15\\81.05469\\-285.6347\\15\\77.14844\\-286.6745\\15\\69.33594\\-287.7865\\15\\65.42969\\-288.5757\\15\\61.52344\\-289.0421\\15\\57.61719\\-289.4287\\15\\55.66406\\-289.8539\\15\\53.71094\\-290.5131\\15\\49.80469\\-291.21\\15\\47.85156\\-291.6777\\15\\45.89844\\-292.4012\\15\\41.99219\\-293.2727\\15\\38.08594\\-294.493\\15\\36.13281\\-294.8557\\15\\32.22656\\-295.4466\\15\\28.32031\\-296.5457\\15\\22.46094\\-297.4106\\15\\18.55469\\-298.3937\\15\\16.60156\\-298.6416\\15\\10.74219\\-299.2624\\15\\4.882813\\-299.7688\\15\\2.929688\\-299.9048\\15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "290"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "134"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.882813\\-299.9048\\17\\-6.835938\\-299.7562\\17\\-18.55469\\-298.7327\\17\\-22.46094\\-298.2911\\17\\-26.36719\\-297.46\\17\\-28.32031\\-297.179\\17\\-34.17969\\-296.5372\\17\\-36.13281\\-296.1324\\17\\-38.08594\\-295.6102\\17\\-40.03906\\-295.3203\\17\\-45.89844\\-294.645\\17\\-47.85156\\-294.3068\\17\\-49.80469\\-293.7671\\17\\-51.75781\\-293.3549\\17\\-57.61719\\-292.5167\\17\\-61.52344\\-291.5693\\17\\-63.47656\\-291.2985\\17\\-67.38281\\-290.9406\\17\\-71.28906\\-290.4834\\17\\-75.19531\\-289.6165\\17\\-81.05469\\-288.9864\\17\\-83.00781\\-288.6852\\17\\-84.96094\\-288.1722\\17\\-86.91406\\-287.5039\\17\\-90.82031\\-286.6715\\17\\-92.77344\\-285.8138\\17\\-94.72656\\-285.1828\\17\\-96.67969\\-284.4539\\17\\-98.63281\\-283.486\\17\\-100.5859\\-282.9254\\17\\-102.5391\\-281.8998\\17\\-104.4922\\-281.1037\\17\\-106.4453\\-279.923\\17\\-108.3984\\-278.928\\17\\-110.3516\\-277.5659\\17\\-114.2578\\-275.3604\\17\\-118.1641\\-272.6849\\17\\-121.0469\\-270.5703\\17\\-122.0703\\-269.7117\\17\\-125.9766\\-266.7918\\17\\-128.3906\\-264.7109\\17\\-131.8359\\-261.5596\\17\\-134.4206\\-258.8516\\17\\-136.098\\-256.8984\\17\\-137.6953\\-254.8853\\17\\-139.0788\\-252.9922\\17\\-140.6544\\-251.0391\\17\\-142.1137\\-249.0859\\17\\-143.0698\\-247.1328\\17\\-143.5547\\-246.4848\\17\\-145.5155\\-243.2266\\17\\-147.6819\\-239.3203\\17\\-149.2233\\-235.4141\\17\\-150.1073\\-233.4609\\17\\-150.5802\\-231.5078\\17\\-152.1244\\-227.6016\\17\\-152.6306\\-225.6484\\17\\-153.3869\\-223.6953\\17\\-153.9994\\-221.7422\\17\\-154.8387\\-217.8359\\17\\-155.4462\\-215.8828\\17\\-155.9182\\-213.9297\\17\\-156.1977\\-211.9766\\17\\-156.6431\\-208.0703\\17\\-157.0152\\-206.1172\\17\\-157.4857\\-204.1641\\17\\-157.7648\\-202.2109\\17\\-158.0643\\-198.3047\\17\\-158.2508\\-194.3984\\17\\-158.3775\\-188.5391\\17\\-158.3003\\-180.7266\\17\\-158.1036\\-174.8672\\17\\-157.8189\\-170.9609\\17\\-157.6036\\-169.0078\\17\\-156.7319\\-165.1016\\17\\-156.0289\\-159.2422\\17\\-155.6792\\-157.2891\\17\\-155.0737\\-155.3359\\17\\-154.5681\\-153.3828\\17\\-153.6586\\-149.4766\\17\\-152.8633\\-147.5234\\17\\-151.6732\\-143.6172\\17\\-150.7507\\-141.6641\\17\\-150.27\\-139.7109\\17\\-149.6452\\-137.7578\\17\\-148.7736\\-135.8047\\17\\-148.2191\\-133.8516\\17\\-147.4609\\-132.1077\\17\\-145.56\\-127.9922\\17\\-144.5483\\-126.0391\\17\\-143.7396\\-124.0859\\17\\-142.7378\\-122.1328\\17\\-142.0831\\-120.1797\\17\\-140.9525\\-118.2266\\17\\-140.1149\\-116.2734\\17\\-138.8307\\-114.3203\\17\\-136.6766\\-110.4141\\17\\-135.7422\\-108.522\\17\\-134.5952\\-106.5078\\17\\-133.2505\\-104.5547\\17\\-130.2517\\-100.6484\\17\\-128.5685\\-98.69531\\17\\-125.9766\\-96.14806\\17\\-124.0234\\-94.45579\\17\\-118.1641\\-90.22147\\17\\-116.1244\\-88.92969\\17\\-112.3047\\-86.90569\\17\\-108.3984\\-85.33681\\17\\-106.4453\\-84.34544\\17\\-104.4922\\-83.60237\\17\\-102.5391\\-82.68111\\17\\-98.63281\\-81.60196\\17\\-96.67969\\-80.65642\\17\\-94.72656\\-80.25986\\17\\-92.77344\\-79.49471\\17\\-90.82031\\-78.96462\\17\\-88.86719\\-78.28783\\17\\-86.91406\\-77.74424\\17\\-81.05469\\-76.395\\17\\-77.14844\\-75.99175\\17\\-75.19531\\-75.7263\\17\\-73.24219\\-74.9592\\17\\-71.28906\\-74.66064\\17\\-67.38281\\-74.3783\\17\\-63.47656\\-74.22894\\17\\-59.57031\\-73.16925\\17\\-57.61719\\-73.0456\\17\\-55.66406\\-73.19618\\17\\-53.71094\\-73.10525\\17\\-51.75781\\-72.90796\\17\\-47.85156\\-72.87\\17\\-45.89844\\-73.69698\\17\\-43.94531\\-74.25786\\17\\-40.03906\\-74.45247\\17\\-38.08594\\-74.63253\\17\\-36.13281\\-74.9567\\17\\-34.17969\\-75.73626\\17\\-28.32031\\-76.52487\\17\\-24.41406\\-77.66117\\17\\-20.50781\\-78.67578\\17\\-18.55469\\-79.42975\\17\\-14.64844\\-80.5638\\17\\-12.69531\\-81.56626\\17\\-10.74219\\-82.298\\17\\-8.789063\\-83.49461\\17\\-5.769428\\-85.02344\\17\\-2.929688\\-86.53744\\17\\-0.9765625\\-87.44982\\17\\0.9765625\\-87.95313\\17\\2.929688\\-87.81628\\17\\6.835938\\-85.85602\\17\\8.789063\\-84.53516\\17\\10.74219\\-83.43481\\17\\12.69531\\-82.17034\\17\\14.76258\\-81.11719\\17\\18.55469\\-79.45259\\17\\20.50781\\-78.4226\\17\\22.46094\\-77.72721\\17\\24.41406\\-76.85643\\17\\26.36719\\-76.27605\\17\\30.27344\\-75.54586\\17\\32.22656\\-74.73363\\17\\34.17969\\-74.51897\\17\\38.08594\\-74.26969\\17\\40.03906\\-73.90958\\17\\41.99219\\-73.06896\\17\\45.89844\\-72.84272\\17\\53.71094\\-72.79937\\17\\57.61719\\-72.83385\\17\\61.52344\\-73.02286\\17\\63.47656\\-73.4628\\17\\65.42969\\-74.21191\\17\\67.38281\\-74.26381\\17\\71.28906\\-74.48286\\17\\75.19531\\-74.84465\\17\\77.14844\\-75.38853\\17\\79.10156\\-75.82027\\17\\84.96094\\-76.52615\\17\\86.91406\\-76.96001\\17\\88.86719\\-77.5583\\17\\90.82031\\-77.97948\\17\\94.72656\\-79.11188\\17\\96.67969\\-79.82149\\17\\98.63281\\-80.28949\\17\\100.5859\\-80.85825\\17\\102.5391\\-81.72266\\17\\104.4922\\-82.24445\\17\\106.4453\\-82.98831\\17\\108.3984\\-83.90493\\17\\110.3516\\-84.69791\\17\\112.3047\\-85.77968\\17\\114.2578\\-86.5953\\17\\118.1641\\-88.85705\\17\\120.1172\\-90.18694\\17\\123.2084\\-92.83594\\17\\125.9766\\-95.68132\\17\\128.5384\\-98.69531\\17\\130.9838\\-102.6016\\17\\132.354\\-104.5547\\17\\133.4683\\-106.5078\\17\\134.7114\\-108.4609\\17\\135.7822\\-110.4141\\17\\137.6703\\-114.3203\\17\\139.7453\\-118.2266\\17\\141.6409\\-122.1328\\17\\142.4515\\-124.0859\\17\\143.0166\\-126.0391\\17\\144.0176\\-127.9922\\17\\144.6109\\-129.9453\\17\\146.3117\\-133.8516\\17\\146.9727\\-135.8047\\17\\147.8738\\-137.7578\\17\\148.8664\\-141.6641\\17\\149.5882\\-143.6172\\17\\150.1346\\-145.5703\\17\\150.8853\\-149.4766\\17\\151.6147\\-151.4297\\17\\152.0919\\-153.3828\\17\\152.7581\\-157.2891\\17\\153.7195\\-161.1953\\17\\153.9951\\-163.1484\\17\\155.0221\\-172.9141\\17\\155.2813\\-174.8672\\17\\155.6242\\-178.7734\\17\\155.8846\\-184.6328\\17\\155.9719\\-192.4453\\17\\155.8846\\-200.2578\\17\\155.7419\\-204.1641\\17\\155.457\\-208.0703\\17\\153.9695\\-219.7891\\17\\153.556\\-221.7422\\17\\152.8662\\-223.6953\\17\\151.8555\\-227.6016\\17\\150.9221\\-229.5547\\17\\150.3389\\-231.5078\\17\\149.5895\\-233.4609\\17\\148.594\\-235.4141\\17\\147.7553\\-237.3672\\17\\147.4609\\-237.7559\\17\\144.1136\\-243.2266\\17\\141.6016\\-246.7551\\17\\139.7945\\-249.0859\\17\\137.6953\\-251.3591\\17\\136.317\\-252.9922\\17\\134.4896\\-254.9453\\17\\132.3594\\-256.8984\\17\\127.9297\\-261.0738\\17\\125.9766\\-262.4929\\17\\124.0234\\-264.0124\\17\\120.1172\\-267.2798\\17\\116.2109\\-269.8227\\17\\114.2578\\-271.2424\\17\\110.3516\\-273.6843\\17\\108.3984\\-275.0183\\17\\106.4453\\-275.8024\\17\\104.4922\\-276.9701\\17\\102.5391\\-277.7505\\17\\100.5859\\-278.9266\\17\\98.63281\\-279.679\\17\\96.67969\\-280.7172\\17\\92.77344\\-281.8998\\17\\90.82031\\-282.7006\\17\\86.91406\\-283.585\\17\\83.00781\\-284.8462\\17\\79.10156\\-285.5658\\17\\75.19531\\-286.5996\\17\\69.33594\\-287.4175\\17\\67.38281\\-287.7299\\17\\63.47656\\-288.6037\\17\\61.52344\\-288.8824\\17\\57.61719\\-289.3285\\17\\55.66406\\-289.6755\\17\\53.71094\\-290.3758\\17\\51.75781\\-290.8539\\17\\49.80469\\-291.1797\\17\\47.85156\\-291.6555\\17\\45.89844\\-292.4217\\17\\41.99219\\-293.301\\17\\38.08594\\-294.5365\\17\\32.22656\\-295.5158\\17\\30.27344\\-296.1324\\17\\28.32031\\-296.6178\\17\\24.41406\\-297.1682\\17\\22.46094\\-297.5325\\17\\20.50781\\-298.1135\\17\\18.55469\\-298.4989\\17\\16.60156\\-298.7342\\17\\6.835938\\-299.7266\\17\\2.929688\\-300.0288\\17\\-0.9765625\\-300.0542\\17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "300"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "135"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.835938\\-299.8899\\19\\-16.60156\\-298.9535\\19\\-20.50781\\-298.6037\\19\\-22.46094\\-298.367\\19\\-24.41406\\-297.9948\\19\\-26.36719\\-297.5247\\19\\-28.32031\\-297.2283\\19\\-34.17969\\-296.5743\\19\\-36.13281\\-296.1996\\19\\-38.08594\\-295.6588\\19\\-40.03906\\-295.3287\\19\\-45.89844\\-294.6249\\19\\-47.85156\\-294.2705\\19\\-49.80469\\-293.7109\\19\\-51.75781\\-293.3019\\19\\-57.61719\\-292.4012\\19\\-59.57031\\-291.8309\\19\\-61.52344\\-291.4196\\19\\-63.47656\\-291.1734\\19\\-67.38281\\-290.7852\\19\\-69.33594\\-290.4934\\19\\-73.24219\\-289.6295\\19\\-75.19531\\-289.3662\\19\\-79.10156\\-288.9999\\19\\-81.05469\\-288.7331\\19\\-83.00781\\-288.2771\\19\\-84.96094\\-287.6763\\19\\-88.86719\\-286.8183\\19\\-92.77344\\-285.4066\\19\\-94.72656\\-284.8546\\19\\-96.67969\\-283.8613\\19\\-100.5859\\-282.5607\\19\\-102.5391\\-281.5519\\19\\-104.4922\\-280.7872\\19\\-106.4453\\-279.5468\\19\\-108.3984\\-278.4775\\19\\-111.7149\\-276.4297\\19\\-112.3047\\-276.0011\\19\\-114.2578\\-275.0638\\19\\-118.1641\\-272.1154\\19\\-122.0703\\-269.418\\19\\-124.0234\\-267.8584\\19\\-127.8212\\-264.7109\\19\\-131.8359\\-261.1454\\19\\-134.0296\\-258.8516\\19\\-135.7422\\-256.8697\\19\\-138.7684\\-252.9922\\19\\-140.414\\-251.0391\\19\\-141.8092\\-249.0859\\19\\-142.8192\\-247.1328\\19\\-144.158\\-245.1797\\19\\-145.1021\\-243.2266\\19\\-146.3692\\-241.2734\\19\\-148.2937\\-237.3672\\19\\-148.9224\\-235.4141\\19\\-149.8857\\-233.4609\\19\\-150.9564\\-229.5547\\19\\-151.8869\\-227.6016\\19\\-152.9926\\-223.6953\\19\\-153.7724\\-221.7422\\19\\-154.5964\\-217.8359\\19\\-155.0885\\-215.8828\\19\\-155.7007\\-213.9297\\19\\-156.0438\\-211.9766\\19\\-156.6945\\-206.1172\\19\\-157.4623\\-202.2109\\19\\-157.7234\\-200.2578\\19\\-158.0049\\-196.3516\\19\\-158.0805\\-194.3984\\19\\-158.2079\\-188.5391\\19\\-158.1699\\-182.6797\\19\\-158.0697\\-178.7734\\19\\-157.9198\\-174.8672\\19\\-157.5627\\-170.9609\\19\\-156.7874\\-167.0547\\19\\-156.5073\\-165.1016\\19\\-156.1114\\-161.1953\\19\\-155.8174\\-159.2422\\19\\-154.7625\\-155.3359\\19\\-153.935\\-151.4297\\19\\-152.5687\\-147.5234\\19\\-152.0491\\-145.5703\\19\\-150.5374\\-141.6641\\19\\-150.0835\\-139.7109\\19\\-149.2668\\-137.7578\\19\\-147.9965\\-133.8516\\19\\-146.9884\\-131.8984\\19\\-146.2185\\-129.9453\\19\\-145.1239\\-127.9922\\19\\-144.3394\\-126.0391\\19\\-143.3087\\-124.0859\\19\\-141.7757\\-120.1797\\19\\-139.7569\\-116.2734\\19\\-137.6953\\-112.7871\\19\\-137.3796\\-112.3672\\19\\-136.5122\\-110.4141\\19\\-135.3443\\-108.4609\\19\\-134.3076\\-106.5078\\19\\-131.8359\\-103.0989\\19\\-129.9079\\-100.6484\\19\\-128.1795\\-98.69531\\19\\-125.9766\\-96.48035\\19\\-123.9551\\-94.78906\\19\\-121.4164\\-92.83594\\19\\-120.1172\\-91.95407\\19\\-118.1641\\-90.44955\\19\\-116.2109\\-89.34721\\19\\-114.2578\\-88.09541\\19\\-112.3047\\-87.28694\\19\\-110.3516\\-86.29804\\19\\-108.3984\\-85.60809\\19\\-106.4453\\-84.62393\\19\\-100.5859\\-82.24496\\19\\-98.63281\\-81.77487\\19\\-96.67969\\-80.88251\\19\\-94.72656\\-80.34186\\19\\-92.77344\\-79.64133\\19\\-90.82031\\-79.1265\\19\\-86.91406\\-77.87336\\19\\-84.96094\\-77.53878\\19\\-83.00781\\-77.08887\\19\\-81.05469\\-76.5313\\19\\-75.19531\\-75.80951\\19\\-71.28906\\-74.73649\\19\\-65.42969\\-74.3355\\19\\-61.52344\\-74.20035\\19\\-57.61719\\-73.67397\\19\\-55.66406\\-73.9255\\19\\-53.71094\\-73.82301\\19\\-51.75781\\-73.09299\\19\\-49.80469\\-72.89829\\19\\-48.127\\-73.30469\\19\\-45.89844\\-74.06866\\19\\-43.94531\\-74.2872\\19\\-40.03906\\-74.50409\\19\\-38.08594\\-74.70712\\19\\-36.13281\\-75.37407\\19\\-34.17969\\-75.79107\\19\\-28.32031\\-76.56203\\19\\-24.41406\\-77.71477\\19\\-22.46094\\-78.16543\\19\\-20.50781\\-78.72017\\19\\-18.55469\\-79.48251\\19\\-14.64844\\-80.59592\\19\\-12.69531\\-81.57385\\19\\-10.74219\\-82.29033\\19\\-8.789063\\-83.43481\\19\\-5.529626\\-85.02344\\19\\-2.929688\\-86.46623\\19\\-0.9765625\\-87.29183\\19\\0.9765625\\-87.80192\\19\\2.929688\\-87.67318\\19\\6.835938\\-85.83828\\19\\8.789063\\-84.53516\\19\\10.74219\\-83.47323\\19\\12.69531\\-82.21423\\19\\16.60156\\-80.33234\\19\\18.55469\\-79.49448\\19\\20.50781\\-78.48232\\19\\22.46094\\-77.79077\\19\\24.41406\\-76.9389\\19\\26.36719\\-76.32369\\19\\30.27344\\-75.60855\\19\\32.22656\\-74.81799\\19\\34.17969\\-74.57818\\19\\38.08594\\-74.30464\\19\\40.03906\\-74.22955\\19\\43.94531\\-73.6469\\19\\45.89844\\-72.87931\\19\\53.71094\\-72.82507\\19\\57.61719\\-72.86079\\19\\59.57031\\-73.57259\\19\\61.52344\\-73.88631\\19\\63.47656\\-74.01676\\19\\65.42969\\-74.26381\\19\\67.38281\\-74.3286\\19\\71.28906\\-74.5612\\19\\75.19531\\-74.97765\\19\\77.14844\\-75.63081\\19\\79.10156\\-75.91878\\19\\83.00781\\-76.3665\\19\\84.96094\\-76.65734\\19\\88.86719\\-77.70844\\19\\90.82031\\-78.08349\\19\\92.77344\\-78.64848\\19\\96.67969\\-79.95142\\19\\98.63281\\-80.40751\\19\\100.5859\\-81.06069\\19\\102.5391\\-81.8527\\19\\104.4922\\-82.36399\\19\\108.3984\\-84.09625\\19\\112.3047\\-85.96574\\19\\114.2578\\-86.83273\\19\\117.842\\-88.92969\\19\\120.1172\\-90.43162\\19\\122.9425\\-92.83594\\19\\125.9766\\-95.98264\\19\\128.2307\\-98.69531\\19\\129.4383\\-100.6484\\19\\132.0537\\-104.5547\\19\\133.1568\\-106.5078\\19\\134.4831\\-108.4609\\19\\135.4072\\-110.4141\\19\\136.5247\\-112.3672\\19\\137.2808\\-114.3203\\19\\138.433\\-116.2734\\19\\139.305\\-118.2266\\19\\140.453\\-120.1797\\19\\141.2446\\-122.1328\\19\\142.2589\\-124.0859\\19\\142.8145\\-126.0391\\19\\143.6834\\-127.9922\\19\\144.4198\\-129.9453\\19\\145.0291\\-131.8984\\19\\146.0432\\-133.8516\\19\\146.692\\-135.8047\\19\\147.5143\\-137.7578\\19\\148.1978\\-139.7109\\19\\148.6366\\-141.6641\\19\\149.183\\-143.6172\\19\\149.9089\\-145.5703\\19\\150.6376\\-149.4766\\19\\151.1704\\-151.4297\\19\\151.8409\\-153.3828\\19\\152.8884\\-159.2422\\19\\153.4151\\-161.1953\\19\\153.7879\\-163.1484\\19\\154.4211\\-169.0078\\19\\154.7659\\-172.9141\\19\\155.3426\\-178.7734\\19\\155.6013\\-182.6797\\19\\155.735\\-186.5859\\19\\155.7912\\-190.4922\\19\\155.7815\\-194.3984\\19\\155.6627\\-200.2578\\19\\155.4717\\-204.1641\\19\\155.102\\-208.0703\\19\\154.2694\\-215.8828\\19\\153.7122\\-219.7891\\19\\152.577\\-223.6953\\19\\152.1371\\-225.6484\\19\\151.4893\\-227.6016\\19\\150.6392\\-229.5547\\19\\150.1237\\-231.5078\\19\\149.1298\\-233.4609\\19\\148.3515\\-235.4141\\19\\146.207\\-239.3203\\19\\144.8217\\-241.2734\\19\\143.6844\\-243.2266\\19\\142.4208\\-245.1797\\19\\139.6484\\-248.5755\\19\\137.4151\\-251.0391\\19\\135.7507\\-252.9922\\19\\133.7891\\-255.1134\\19\\131.8359\\-256.7743\\19\\127.5276\\-260.8047\\19\\125.0895\\-262.7578\\19\\122.7679\\-264.7109\\19\\120.1172\\-266.7473\\19\\118.1641\\-268.0259\\19\\114.2578\\-270.7973\\19\\112.3047\\-271.8784\\19\\110.3516\\-273.3108\\19\\108.3984\\-274.4847\\19\\106.4453\\-275.484\\19\\100.5859\\-278.2828\\19\\98.63281\\-279.2661\\19\\96.67969\\-280.058\\19\\94.72656\\-280.9646\\19\\92.77344\\-281.467\\19\\90.82031\\-282.0695\\19\\88.86719\\-282.8139\\19\\84.96094\\-283.5974\\19\\81.05469\\-284.7911\\19\\77.14844\\-285.5002\\19\\73.24219\\-286.4922\\19\\71.28906\\-286.8369\\19\\67.38281\\-287.403\\19\\65.42969\\-287.778\\19\\63.47656\\-288.2901\\19\\59.57031\\-289.0052\\19\\55.66406\\-289.5217\\19\\53.71094\\-290.2109\\19\\51.75781\\-290.7991\\19\\49.80469\\-291.1455\\19\\47.85156\\-291.6146\\19\\45.89844\\-292.4115\\19\\41.99219\\-293.322\\19\\38.08594\\-294.5703\\19\\32.22656\\-295.5717\\19\\30.27344\\-296.2266\\19\\28.32031\\-296.6778\\19\\24.41406\\-297.2354\\19\\22.46094\\-297.656\\19\\20.50781\\-298.2396\\19\\18.55469\\-298.5804\\19\\6.835938\\-299.8748\\19\\2.929688\\-300.1377\\19\\-0.9765625\\-300.1602\\19\\-4.882813\\-300.0288\\19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "316"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "136"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.789063\\-299.8436\\21\\-12.69531\\-299.403\\21\\-20.50781\\-298.6453\\21\\-22.46094\\-298.4194\\21\\-24.41406\\-298.0757\\21\\-26.36719\\-297.5775\\21\\-28.32031\\-297.2538\\21\\-34.17969\\-296.6022\\21\\-36.13281\\-296.2369\\21\\-38.08594\\-295.685\\21\\-40.03906\\-295.3246\\21\\-45.89844\\-294.6046\\21\\-47.85156\\-294.2225\\21\\-49.80469\\-293.6568\\21\\-51.75781\\-293.2506\\21\\-55.66406\\-292.6617\\21\\-57.61719\\-292.2417\\21\\-59.57031\\-291.6458\\21\\-61.52344\\-291.3023\\21\\-67.38281\\-290.5691\\21\\-71.28906\\-289.6727\\21\\-73.24219\\-289.3929\\21\\-77.14844\\-289.0105\\21\\-79.10156\\-288.7635\\21\\-81.05469\\-288.3744\\21\\-83.00781\\-287.7755\\21\\-86.91406\\-286.9345\\21\\-88.86719\\-286.4445\\21\\-90.82031\\-285.6212\\21\\-92.77344\\-285.0785\\21\\-94.72656\\-284.3908\\21\\-96.67969\\-283.4979\\21\\-98.63281\\-282.9714\\21\\-100.5859\\-282.0321\\21\\-102.5391\\-281.2703\\21\\-104.4551\\-280.3359\\21\\-107.8161\\-278.3828\\21\\-108.3984\\-277.942\\21\\-110.3516\\-276.9737\\21\\-112.3047\\-275.6829\\21\\-114.2578\\-274.6343\\21\\-116.2109\\-273.296\\21\\-118.1641\\-271.6872\\21\\-120.1172\\-270.2159\\21\\-122.0703\\-269.0839\\21\\-129.5776\\-262.7578\\21\\-131.8359\\-260.6221\\21\\-135.7422\\-256.4231\\21\\-137.6953\\-254.0284\\21\\-139.6484\\-251.4998\\21\\-140.106\\-251.0391\\21\\-141.6016\\-248.8196\\21\\-143.8448\\-245.1797\\21\\-144.7905\\-243.2266\\21\\-146.088\\-241.2734\\21\\-146.9727\\-239.3203\\21\\-148.0767\\-237.3672\\21\\-148.6816\\-235.4141\\21\\-149.5602\\-233.4609\\21\\-150.2337\\-231.5078\\21\\-150.6824\\-229.5547\\21\\-151.5542\\-227.6016\\21\\-152.1741\\-225.6484\\21\\-152.6827\\-223.6953\\21\\-153.4557\\-221.7422\\21\\-153.9955\\-219.7891\\21\\-154.7852\\-215.8828\\21\\-155.3879\\-213.9297\\21\\-155.8581\\-211.9766\\21\\-156.125\\-210.0234\\21\\-156.4883\\-206.1172\\21\\-157.043\\-202.2109\\21\\-157.426\\-200.2578\\21\\-157.8189\\-196.3516\\21\\-157.9097\\-194.3984\\21\\-158.0412\\-188.5391\\21\\-158.0049\\-182.6797\\21\\-157.8963\\-178.7734\\21\\-157.6885\\-174.8672\\21\\-157.4857\\-172.9141\\21\\-156.7977\\-169.0078\\21\\-156.5341\\-167.0547\\21\\-156.1607\\-163.1484\\21\\-155.9139\\-161.1953\\21\\-155.5411\\-159.2422\\21\\-154.9292\\-157.2891\\21\\-154.1249\\-153.3828\\21\\-153.6523\\-151.4297\\21\\-152.8911\\-149.4766\\21\\-151.791\\-145.5703\\21\\-150.8853\\-143.6172\\21\\-149.8336\\-139.7109\\21\\-148.9533\\-137.7578\\21\\-148.3963\\-135.8047\\21\\-147.7209\\-133.8516\\21\\-146.7172\\-131.8984\\21\\-145.9506\\-129.9453\\21\\-144.8195\\-127.9922\\21\\-144.0993\\-126.0391\\21\\-142.9938\\-124.0859\\21\\-142.3791\\-122.1328\\21\\-141.3902\\-120.1797\\21\\-140.5234\\-118.2266\\21\\-139.3345\\-116.2734\\21\\-138.3523\\-114.3203\\21\\-137.0949\\-112.3672\\21\\-136.3107\\-110.4141\\21\\-135.0579\\-108.4609\\21\\-133.9844\\-106.5078\\21\\-131.8359\\-103.5244\\21\\-129.8828\\-100.9613\\21\\-127.8869\\-98.69531\\21\\-125.9766\\-96.81796\\21\\-123.6273\\-94.78906\\21\\-121.0586\\-92.83594\\21\\-120.1172\\-92.23193\\21\\-118.1641\\-90.72134\\21\\-116.2109\\-89.60876\\21\\-114.2578\\-88.23599\\21\\-112.3047\\-87.54903\\21\\-110.3516\\-86.53146\\21\\-108.3984\\-85.82732\\21\\-106.4453\\-84.9133\\21\\-104.4922\\-84.09798\\21\\-102.5391\\-83.39584\\21\\-100.5859\\-82.4388\\21\\-98.63281\\-81.94977\\21\\-94.72656\\-80.45163\\21\\-92.77344\\-79.94146\\21\\-88.86719\\-78.72017\\21\\-86.91406\\-78.00742\\21\\-84.96094\\-77.71224\\21\\-83.00781\\-77.29486\\21\\-81.05469\\-76.72908\\21\\-79.10156\\-76.36459\\21\\-75.19531\\-75.88207\\21\\-73.24219\\-75.55222\\21\\-71.28906\\-74.83154\\21\\-69.33594\\-74.64658\\21\\-65.42969\\-74.39868\\21\\-57.61719\\-74.14087\\21\\-55.66406\\-74.21191\\21\\-53.71094\\-74.16288\\21\\-51.75781\\-73.87616\\21\\-49.80469\\-73.70016\\21\\-47.85156\\-74.08977\\21\\-45.89844\\-74.2636\\21\\-41.99219\\-74.41986\\21\\-38.08594\\-74.79242\\21\\-36.13281\\-75.60855\\21\\-30.27344\\-76.31825\\21\\-28.32031\\-76.61452\\21\\-24.41406\\-77.77155\\21\\-22.46094\\-78.2206\\21\\-20.50781\\-78.76733\\21\\-18.55469\\-79.53967\\21\\-14.64844\\-80.62891\\21\\-12.69531\\-81.59508\\21\\-10.74219\\-82.28036\\21\\-8.789063\\-83.3746\\21\\-5.234375\\-85.02344\\21\\-2.929688\\-86.33515\\21\\-0.9765625\\-87.00204\\21\\0.9765625\\-87.50349\\21\\2.929688\\-87.42894\\21\\6.835938\\-85.82803\\21\\8.789063\\-84.54382\\21\\10.74219\\-83.50213\\21\\12.69531\\-82.27247\\21\\14.64844\\-81.39729\\21\\16.60156\\-80.37866\\21\\18.55469\\-79.55032\\21\\20.50781\\-78.53627\\21\\22.46094\\-77.85595\\21\\24.41406\\-77.01417\\21\\26.36719\\-76.37302\\21\\30.27344\\-75.67921\\21\\32.22656\\-74.90625\\21\\34.17969\\-74.63636\\21\\38.08594\\-74.33484\\21\\41.99219\\-74.22346\\21\\43.94531\\-74.09464\\21\\45.89844\\-73.67711\\21\\47.85156\\-72.9686\\21\\49.80469\\-72.87\\21\\53.71094\\-72.86079\\21\\55.66406\\-73.644\\21\\57.61719\\-73.6636\\21\\59.57031\\-74.0593\\21\\61.52344\\-74.21272\\21\\65.42969\\-74.31066\\21\\69.33594\\-74.49826\\21\\73.24219\\-74.85967\\21\\77.14844\\-75.81496\\21\\83.00781\\-76.46661\\21\\84.96094\\-76.83227\\21\\86.91406\\-77.40063\\21\\90.82031\\-78.25524\\21\\92.77344\\-78.80836\\21\\94.72656\\-79.51334\\21\\98.63281\\-80.53253\\21\\100.5859\\-81.32159\\21\\104.4922\\-82.5313\\21\\106.4453\\-83.51362\\21\\108.3984\\-84.2786\\21\\110.3516\\-85.34188\\21\\112.3047\\-86.14848\\21\\116.2109\\-88.08804\\21\\120.1172\\-90.76074\\21\\122.5701\\-92.83594\\21\\124.0234\\-94.27789\\21\\126.2999\\-96.74219\\21\\127.9297\\-98.8418\\21\\130.5147\\-102.6016\\21\\131.8359\\-104.8403\\21\\134.2076\\-108.4609\\21\\135.1318\\-110.4141\\21\\136.2974\\-112.3672\\21\\137.0124\\-114.3203\\21\\138.1718\\-116.2734\\21\\138.9878\\-118.2266\\21\\140.2141\\-120.1797\\21\\140.9683\\-122.1328\\21\\142.0259\\-124.0859\\21\\143.281\\-127.9922\\21\\144.2153\\-129.9453\\21\\144.7458\\-131.8984\\21\\145.6706\\-133.8516\\21\\146.4472\\-135.8047\\21\\147.1112\\-137.7578\\21\\147.9524\\-139.7109\\21\\148.8857\\-143.6172\\21\\149.6033\\-145.5703\\21\\150.1465\\-147.5234\\21\\150.8295\\-151.4297\\21\\151.5026\\-153.3828\\21\\151.9843\\-155.3359\\21\\152.6204\\-159.2422\\21\\153.0193\\-161.1953\\21\\153.532\\-163.1484\\21\\153.8346\\-165.1016\\21\\154.2429\\-169.0078\\21\\154.7253\\-174.8672\\21\\155.1735\\-180.7266\\21\\155.43\\-184.6328\\21\\155.5657\\-190.4922\\21\\155.4994\\-196.3516\\21\\155.3726\\-200.2578\\21\\155.1157\\-204.1641\\21\\154.6326\\-210.0234\\21\\154.0677\\-215.8828\\21\\153.7907\\-217.8359\\21\\153.3725\\-219.7891\\21\\152.7903\\-221.7422\\21\\151.8899\\-225.6484\\21\\151.0302\\-227.6016\\21\\149.8443\\-231.5078\\21\\148.8126\\-233.4609\\21\\148.1014\\-235.4141\\21\\146.8966\\-237.3672\\21\\145.8378\\-239.3203\\21\\142.0364\\-245.1797\\21\\140.5105\\-247.1328\\21\\137.6953\\-250.2954\\21\\133.7891\\-254.4906\\21\\131.1406\\-256.8984\\21\\129.1344\\-258.8516\\21\\125.9766\\-261.6836\\21\\122.0703\\-264.7187\\21\\120.1172\\-266.1332\\21\\116.2109\\-269.0729\\21\\114.2578\\-270.1869\\21\\113.7873\\-270.5703\\21\\110.7641\\-272.5234\\21\\110.3516\\-272.8628\\21\\108.3984\\-273.9249\\21\\106.4453\\-275.1468\\21\\104.4922\\-275.8939\\21\\102.5391\\-276.9941\\21\\100.5859\\-277.698\\21\\98.63281\\-278.7977\\21\\96.67969\\-279.5096\\21\\94.72656\\-280.4186\\21\\92.77344\\-281.0894\\21\\90.82031\\-281.5771\\21\\86.91406\\-282.8405\\21\\83.00781\\-283.5727\\21\\79.10156\\-284.7184\\21\\73.24219\\-285.8456\\21\\71.28906\\-286.4223\\21\\69.33594\\-286.8259\\21\\65.42969\\-287.4601\\21\\63.47656\\-287.8971\\21\\61.52344\\-288.474\\21\\59.57031\\-288.8748\\21\\55.66406\\-289.4057\\21\\53.71094\\-290.0163\\21\\51.75781\\-290.7293\\21\\47.85156\\-291.5664\\21\\45.89844\\-292.4012\\21\\41.99219\\-293.3292\\21\\38.08594\\-294.579\\21\\34.17969\\-295.2254\\21\\32.22656\\-295.6216\\21\\30.27344\\-296.2865\\21\\28.32031\\-296.7168\\21\\24.41406\\-297.303\\21\\22.46094\\-297.7735\\21\\20.50781\\-298.3579\\21\\18.55469\\-298.6514\\21\\12.69531\\-299.315\\21\\6.835938\\-300.0288\\21\\4.882813\\-300.149\\21\\0.9765625\\-300.2342\\21\\-2.929688\\-300.2033\\21\\-4.882813\\-300.1377\\21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "293"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "137"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.789063\\-299.9619\\23\\-12.69531\\-299.4828\\23\\-22.46094\\-298.4603\\23\\-24.41406\\-298.1258\\23\\-26.36719\\-297.6224\\23\\-28.32031\\-297.2798\\23\\-34.17969\\-296.6178\\23\\-36.13281\\-296.249\\23\\-38.08594\\-295.7096\\23\\-40.03906\\-295.3287\\23\\-45.89844\\-294.584\\23\\-47.85156\\-294.1706\\23\\-49.80469\\-293.584\\23\\-51.75781\\-293.1949\\23\\-55.66406\\-292.5766\\23\\-59.57031\\-291.4991\\23\\-61.52344\\-291.1924\\23\\-65.42969\\-290.6929\\23\\-67.38281\\-290.2772\\23\\-69.33594\\-289.7421\\23\\-71.28906\\-289.4366\\23\\-75.19531\\-289.054\\23\\-79.10156\\-288.4505\\23\\-83.00781\\-287.4175\\23\\-86.91406\\-286.6094\\23\\-88.86719\\-285.8588\\23\\-92.77344\\-284.7334\\23\\-94.72656\\-283.8001\\23\\-98.63281\\-282.6266\\23\\-100.5859\\-281.674\\23\\-102.5391\\-280.9931\\23\\-104.4922\\-279.8509\\23\\-106.4453\\-278.8889\\23\\-108.3984\\-277.5909\\23\\-110.3516\\-276.5746\\23\\-112.3047\\-275.4218\\23\\-116.2109\\-272.9017\\23\\-120.1172\\-269.8101\\23\\-122.0703\\-268.6256\\23\\-124.0234\\-267.1274\\23\\-124.4834\\-266.6641\\23\\-126.8584\\-264.7109\\23\\-129.8828\\-262.0655\\23\\-131.8359\\-260.1469\\23\\-134.9788\\-256.8984\\23\\-137.6953\\-253.6143\\23\\-139.6484\\-251.0299\\23\\-142.436\\-247.1328\\23\\-143.4051\\-245.1797\\23\\-145.7669\\-241.2734\\23\\-146.6944\\-239.3203\\23\\-147.7979\\-237.3672\\23\\-149.1718\\-233.4609\\23\\-150.0423\\-231.5078\\23\\-150.4922\\-229.5547\\23\\-151.1054\\-227.6016\\23\\-151.9531\\-225.6484\\23\\-152.433\\-223.6953\\23\\-153.0307\\-221.7422\\23\\-153.7537\\-219.7891\\23\\-154.5529\\-215.8828\\23\\-155.0184\\-213.9297\\23\\-155.5919\\-211.9766\\23\\-155.9639\\-210.0234\\23\\-156.1853\\-208.0703\\23\\-156.7162\\-202.2109\\23\\-157.5834\\-196.3516\\23\\-157.7807\\-192.4453\\23\\-157.8621\\-188.5391\\23\\-157.8621\\-184.6328\\23\\-157.7648\\-180.7266\\23\\-157.5521\\-176.8203\\23\\-157.3486\\-174.8672\\23\\-156.5341\\-169.0078\\23\\-156.1971\\-165.1016\\23\\-155.9763\\-163.1484\\23\\-155.6544\\-161.1953\\23\\-154.6537\\-157.2891\\23\\-153.9074\\-153.3828\\23\\-152.5987\\-149.4766\\23\\-152.118\\-147.5234\\23\\-151.4338\\-145.5703\\23\\-150.6261\\-143.6172\\23\\-150.1918\\-141.6641\\23\\-148.7229\\-137.7578\\23\\-148.2053\\-135.8047\\23\\-146.4789\\-131.8984\\23\\-144.5975\\-127.9922\\23\\-143.8184\\-126.0391\\23\\-142.7896\\-124.0859\\23\\-142.181\\-122.1328\\23\\-141.0812\\-120.1797\\23\\-140.2779\\-118.2266\\23\\-139.0198\\-116.2734\\23\\-138.0744\\-114.3203\\23\\-136.8878\\-112.3672\\23\\-136.0556\\-110.4141\\23\\-133.7891\\-106.8059\\23\\-132.2331\\-104.5547\\23\\-129.8828\\-101.3394\\23\\-127.5595\\-98.69531\\23\\-124.0234\\-95.3985\\23\\-123.2798\\-94.78906\\23\\-118.0099\\-90.88281\\23\\-116.2109\\-89.79429\\23\\-114.2578\\-88.3831\\23\\-112.3047\\-87.70737\\23\\-110.3516\\-86.76363\\23\\-106.4453\\-85.26215\\23\\-104.4922\\-84.30654\\23\\-102.5391\\-83.63634\\23\\-100.5859\\-82.65663\\23\\-96.67969\\-81.46229\\23\\-94.72656\\-80.59592\\23\\-92.77344\\-80.15247\\23\\-88.86719\\-78.88223\\23\\-84.96094\\-77.83006\\23\\-83.00781\\-77.46903\\23\\-81.05469\\-76.89404\\23\\-79.10156\\-76.46487\\23\\-73.24219\\-75.69558\\23\\-71.28906\\-75.09923\\23\\-69.33594\\-74.73649\\23\\-65.42969\\-74.46515\\23\\-59.57031\\-74.25786\\23\\-49.80469\\-74.20384\\23\\-43.94531\\-74.3728\\23\\-40.03906\\-74.63253\\23\\-38.08594\\-75.10057\\23\\-36.13281\\-75.70703\\23\\-30.27344\\-76.3695\\23\\-28.32031\\-76.72266\\23\\-24.41406\\-77.84834\\23\\-22.46094\\-78.28183\\23\\-20.50781\\-78.83854\\23\\-18.55469\\-79.59588\\23\\-14.64844\\-80.67329\\23\\-12.69531\\-81.62937\\23\\-10.74219\\-82.28781\\23\\-8.789063\\-83.32163\\23\\-5.080764\\-85.02344\\23\\-2.929688\\-86.18311\\23\\0.9765625\\-87.11491\\23\\2.929688\\-87.14466\\23\\4.882813\\-86.52734\\23\\6.835938\\-85.79858\\23\\8.789063\\-84.56147\\23\\10.74219\\-83.55217\\23\\12.69531\\-82.33147\\23\\14.64844\\-81.45264\\23\\16.60156\\-80.42675\\23\\18.55469\\-79.6274\\23\\20.50781\\-78.65747\\23\\24.41406\\-77.11098\\23\\26.36719\\-76.42598\\23\\30.27344\\-75.78414\\23\\32.22656\\-75.18139\\23\\34.17969\\-74.69877\\23\\38.08594\\-74.38501\\23\\41.99219\\-74.25813\\23\\45.89844\\-74.18124\\23\\47.85156\\-73.87006\\23\\49.80469\\-73.77747\\23\\53.71094\\-73.77747\\23\\55.66406\\-74.15771\\23\\59.57031\\-74.20657\\23\\65.42969\\-74.3783\\23\\69.33594\\-74.59562\\23\\71.28906\\-74.79523\\23\\75.19531\\-75.69991\\23\\81.05469\\-76.32575\\23\\83.00781\\-76.59904\\23\\86.91406\\-77.63306\\23\\90.82031\\-78.446\\23\\94.72656\\-79.67269\\23\\98.63281\\-80.6947\\23\\100.5859\\-81.58512\\23\\102.5391\\-82.10574\\23\\104.4922\\-82.75642\\23\\106.4453\\-83.75042\\23\\108.3984\\-84.47121\\23\\110.3516\\-85.58781\\23\\112.3047\\-86.3195\\23\\114.2578\\-87.43323\\23\\116.2109\\-88.28529\\23\\119.7917\\-90.88281\\23\\122.1637\\-92.83594\\23\\124.0234\\-94.64837\\23\\125.9766\\-96.81928\\23\\128.9192\\-100.6484\\23\\130.272\\-102.6016\\23\\131.2657\\-104.5547\\23\\132.6439\\-106.5078\\23\\133.8711\\-108.4609\\23\\135.7422\\-111.9788\\23\\136.0031\\-112.3672\\23\\136.7971\\-114.3203\\23\\137.8439\\-116.2734\\23\\138.7458\\-118.2266\\23\\139.8875\\-120.1797\\23\\140.7341\\-122.1328\\23\\141.6855\\-124.0859\\23\\142.4568\\-126.0391\\23\\142.9938\\-127.9922\\23\\143.9676\\-129.9453\\23\\144.5473\\-131.8984\\23\\145.2421\\-133.8516\\23\\146.2176\\-135.8047\\23\\146.8003\\-137.7578\\23\\147.6548\\-139.7109\\23\\148.2669\\-141.6641\\23\\148.6662\\-143.6172\\23\\149.2248\\-145.5703\\23\\149.9318\\-147.5234\\23\\150.5983\\-151.4297\\23\\151.0694\\-153.3828\\23\\151.7137\\-155.3359\\23\\152.1022\\-157.2891\\23\\152.7207\\-161.1953\\23\\153.6021\\-165.1016\\23\\154.0744\\-169.0078\\23\\154.6814\\-176.8203\\23\\155.1307\\-184.6328\\23\\155.2814\\-190.4922\\23\\155.2813\\-192.4453\\23\\155.1735\\-196.3516\\23\\154.9456\\-202.2109\\23\\154.4324\\-210.0234\\23\\153.8577\\-215.8828\\23\\153.5073\\-217.8359\\23\\152.9517\\-219.7891\\23\\152.114\\-223.6953\\23\\151.5416\\-225.6484\\23\\150.7141\\-227.6016\\23\\150.2337\\-229.5547\\23\\149.4701\\-231.5078\\23\\148.5831\\-233.4609\\23\\147.8027\\-235.4141\\23\\145.3214\\-239.3203\\23\\144.2312\\-241.2734\\23\\141.6016\\-245.1085\\23\\140.1084\\-247.1328\\23\\137.6953\\-249.887\\23\\133.7891\\-254.0434\\23\\131.8359\\-255.9151\\23\\129.8828\\-257.6811\\23\\128.7124\\-258.8516\\23\\125.9766\\-261.241\\23\\124.0136\\-262.7578\\23\\122.0703\\-264.1519\\23\\118.1641\\-267.3215\\23\\116.2109\\-268.6593\\23\\114.2578\\-269.7804\\23\\112.3047\\-271.1671\\23\\110.3516\\-272.2455\\23\\108.3984\\-273.5343\\23\\106.4453\\-274.6895\\23\\100.5859\\-277.3119\\23\\98.63281\\-278.0689\\23\\96.67969\\-279.082\\23\\94.72656\\-279.7525\\23\\92.77344\\-280.6219\\23\\90.82031\\-281.1927\\23\\88.86719\\-281.6317\\23\\84.96094\\-282.8462\\23\\81.05469\\-283.549\\23\\79.10156\\-284.026\\23\\77.14844\\-284.6687\\23\\73.24219\\-285.4022\\23\\71.28906\\-285.8348\\23\\69.33594\\-286.4677\\23\\67.38281\\-286.8843\\23\\63.47656\\-287.6038\\23\\59.57031\\-288.7344\\23\\55.66406\\-289.3376\\23\\53.71094\\-289.8646\\23\\51.75781\\-290.654\\23\\47.85156\\-291.532\\23\\45.89844\\-292.3802\\23\\41.99219\\-293.322\\23\\38.08594\\-294.5876\\23\\34.17969\\-295.2502\\23\\32.22656\\-295.6708\\23\\30.27344\\-296.3448\\23\\28.32031\\-296.7541\\23\\24.41406\\-297.3669\\23\\20.50781\\-298.4523\\23\\14.64844\\-299.1535\\23\\8.789063\\-299.9619\\23\\4.882813\\-300.2365\\23\\0.9765625\\-300.3045\\23\\-2.929688\\-300.2761\\23\\-6.835938\\-300.1147\\23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "290"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "138"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.789063\\-300.0542\\25\\-10.74219\\-299.8594\\25\\-12.69531\\-299.555\\25\\-16.60156\\-299.1116\\25\\-22.46094\\-298.4989\\25\\-24.41406\\-298.1732\\25\\-26.36719\\-297.6596\\25\\-28.32031\\-297.3065\\25\\-34.17969\\-296.6331\\25\\-36.13281\\-296.2609\\25\\-38.08594\\-295.7096\\25\\-40.03906\\-295.3287\\25\\-45.89844\\-294.5632\\25\\-47.85156\\-294.1033\\25\\-49.80469\\-293.5225\\25\\-51.75781\\-293.1414\\25\\-55.66406\\-292.4801\\25\\-57.61719\\-291.8415\\25\\-59.57031\\-291.3638\\25\\-63.47656\\-290.8277\\25\\-65.42969\\-290.4834\\25\\-67.38281\\-289.9048\\25\\-69.33594\\-289.4807\\25\\-75.19531\\-288.8592\\25\\-77.14844\\-288.5267\\25\\-81.05469\\-287.5313\\25\\-84.96094\\-286.7475\\25\\-88.86719\\-285.4453\\25\\-90.82031\\-284.9693\\25\\-94.72656\\-283.4484\\25\\-96.67969\\-283.0032\\25\\-98.63281\\-282.1573\\25\\-102.5391\\-280.6706\\25\\-103.0324\\-280.3359\\25\\-106.5549\\-278.3828\\25\\-109.9471\\-276.4297\\25\\-110.3516\\-276.1193\\25\\-112.3047\\-275.1341\\25\\-118.1641\\-271.0111\\25\\-121.4985\\-268.6172\\25\\-123.9958\\-266.6641\\25\\-127.9297\\-263.446\\25\\-129.8828\\-261.7056\\25\\-133.7891\\-257.6958\\25\\-134.646\\-256.8984\\25\\-136.3363\\-254.9453\\25\\-139.1869\\-251.0391\\25\\-140.7654\\-249.0859\\25\\-142.198\\-247.1328\\25\\-143.0698\\-245.1797\\25\\-144.3371\\-243.2266\\25\\-145.3229\\-241.2734\\25\\-146.4412\\-239.3203\\25\\-147.4609\\-237.3003\\25\\-148.3057\\-235.4141\\25\\-148.8928\\-233.4609\\25\\-149.8061\\-231.5078\\25\\-150.7996\\-227.6016\\25\\-151.6509\\-225.6484\\25\\-152.7057\\-221.7422\\25\\-153.4288\\-219.7891\\25\\-153.9656\\-217.8359\\25\\-154.7366\\-213.9297\\25\\-155.7451\\-210.0234\\25\\-156.2209\\-206.1172\\25\\-156.5043\\-202.2109\\25\\-156.9149\\-198.3047\\25\\-157.2027\\-196.3516\\25\\-157.5305\\-192.4453\\25\\-157.6425\\-188.5391\\25\\-157.633\\-184.6328\\25\\-157.5084\\-180.7266\\25\\-157.1723\\-176.8203\\25\\-156.7351\\-172.9141\\25\\-156.0364\\-165.1016\\25\\-155.7483\\-163.1484\\25\\-155.3281\\-161.1953\\25\\-154.8018\\-159.2422\\25\\-154.0719\\-155.3359\\25\\-153.6284\\-153.3828\\25\\-152.8662\\-151.4297\\25\\-151.8784\\-147.5234\\25\\-151.0254\\-145.5703\\25\\-150.4295\\-143.6172\\25\\-149.9949\\-141.6641\\25\\-149.1277\\-139.7109\\25\\-147.9619\\-135.8047\\25\\-146.9695\\-133.8516\\25\\-146.2527\\-131.8984\\25\\-145.1399\\-129.9453\\25\\-144.3988\\-127.9922\\25\\-143.4208\\-126.0391\\25\\-142.6208\\-124.0859\\25\\-141.92\\-122.1328\\25\\-140.8309\\-120.1797\\25\\-139.9672\\-118.2266\\25\\-138.7735\\-116.2734\\25\\-135.7422\\-110.5435\\25\\-134.5591\\-108.4609\\25\\-133.7891\\-107.2717\\25\\-130.4792\\-102.6016\\25\\-128.9278\\-100.6484\\25\\-127.1332\\-98.69531\\25\\-124.0234\\-95.71748\\25\\-122.0703\\-94.14925\\25\\-117.6465\\-90.88281\\25\\-114.2578\\-88.68356\\25\\-110.3516\\-87.09763\\25\\-108.3984\\-86.1802\\25\\-106.4453\\-85.49555\\25\\-104.4922\\-84.49243\\25\\-102.5391\\-83.81744\\25\\-100.5859\\-82.90394\\25\\-98.63281\\-82.20828\\25\\-96.67969\\-81.64925\\25\\-94.72656\\-80.7797\\25\\-92.77344\\-80.26194\\25\\-86.91406\\-78.5558\\25\\-84.96094\\-77.94336\\25\\-83.00781\\-77.61074\\25\\-81.05469\\-77.03655\\25\\-79.10156\\-76.562\\25\\-77.14844\\-76.27506\\25\\-73.24219\\-75.83115\\25\\-69.33594\\-74.83489\\25\\-65.42969\\-74.50612\\25\\-59.57031\\-74.31676\\25\\-47.85156\\-74.2989\\25\\-43.94531\\-74.42523\\25\\-40.03906\\-74.71123\\25\\-38.08594\\-75.35938\\25\\-36.13281\\-75.79335\\25\\-32.22656\\-76.1927\\25\\-30.27344\\-76.44364\\25\\-28.32031\\-76.87213\\25\\-26.36719\\-77.44112\\25\\-22.46094\\-78.32944\\25\\-20.50781\\-78.91658\\25\\-18.55469\\-79.64251\\25\\-14.64844\\-80.71959\\25\\-12.69531\\-81.67619\\25\\-10.74219\\-82.30033\\25\\-8.789063\\-83.32163\\25\\-2.929688\\-85.90047\\25\\-0.9765625\\-86.42114\\25\\0.9765625\\-86.71282\\25\\2.929688\\-86.7902\\25\\4.882813\\-86.33994\\25\\6.835938\\-85.64608\\25\\7.902299\\-85.02344\\25\\10.74219\\-83.59664\\25\\12.69531\\-82.38213\\25\\14.64844\\-81.51801\\25\\16.60156\\-80.48529\\25\\18.55469\\-79.71121\\25\\20.50781\\-78.76733\\25\\22.46094\\-77.97443\\25\\26.36719\\-76.51608\\25\\30.27344\\-75.86206\\25\\32.22656\\-75.38853\\25\\34.17969\\-74.75496\\25\\38.08594\\-74.43775\\25\\41.99219\\-74.29295\\25\\49.80469\\-74.20657\\25\\53.71094\\-74.20657\\25\\59.57031\\-74.26381\\25\\65.42969\\-74.47026\\25\\69.33594\\-74.7232\\25\\71.28906\\-75.02376\\25\\73.24219\\-75.62231\\25\\81.05469\\-76.44744\\25\\83.00781\\-76.79803\\25\\84.96094\\-77.37609\\25\\86.91406\\-77.85235\\25\\90.82031\\-78.63635\\25\\92.77344\\-79.26644\\25\\96.67969\\-80.32259\\25\\98.63281\\-80.92645\\25\\100.5859\\-81.79571\\25\\102.5391\\-82.27801\\25\\106.4453\\-83.95361\\25\\108.3984\\-84.70654\\25\\110.3516\\-85.78693\\25\\112.3047\\-86.53447\\25\\114.2578\\-87.69313\\25\\116.2109\\-88.50912\\25\\118.1641\\-89.91228\\25\\121.7835\\-92.83594\\25\\124.0234\\-95.02907\\25\\125.9766\\-97.27276\\25\\128.6703\\-100.6484\\25\\129.9398\\-102.6016\\25\\130.998\\-104.5547\\25\\132.3876\\-106.5078\\25\\133.4706\\-108.4609\\25\\134.6784\\-110.4141\\25\\136.6217\\-114.3203\\25\\137.4236\\-116.2734\\25\\138.5152\\-118.2266\\25\\139.4371\\-120.1797\\25\\140.5063\\-122.1328\\25\\141.2806\\-124.0859\\25\\142.2547\\-126.0391\\25\\142.787\\-127.9922\\25\\144.3768\\-131.8984\\25\\144.9366\\-133.8516\\25\\145.9754\\-135.8047\\25\\146.564\\-137.7578\\25\\148.0614\\-141.6641\\25\\148.9429\\-145.5703\\25\\149.6434\\-147.5234\\25\\150.142\\-149.4766\\25\\150.7704\\-153.3828\\25\\151.8755\\-157.2891\\25\\152.8291\\-163.1484\\25\\153.6458\\-167.0547\\25\\153.8824\\-169.0078\\25\\154.2222\\-172.9141\\25\\154.5069\\-176.8203\\25\\154.795\\-182.6797\\25\\154.9341\\-186.5859\\25\\154.9854\\-192.4453\\25\\154.7787\\-200.2578\\25\\154.4887\\-206.1172\\25\\154.2429\\-210.0234\\25\\153.8824\\-213.9297\\25\\153.604\\-215.8828\\25\\152.6527\\-219.7891\\25\\151.8729\\-223.6953\\25\\151.0912\\-225.6484\\25\\150.485\\-227.6016\\25\\150.0165\\-229.5547\\25\\149.0766\\-231.5078\\25\\148.3783\\-233.4609\\25\\146.3226\\-237.3672\\25\\144.9169\\-239.3203\\25\\143.903\\-241.2734\\25\\142.5523\\-243.2266\\25\\139.6484\\-247.0557\\25\\136.2231\\-251.0391\\25\\134.3844\\-252.9922\\25\\131.8359\\-255.5023\\25\\127.9297\\-259.0613\\25\\125.8752\\-260.8047\\25\\123.4444\\-262.7578\\25\\118.1641\\-266.8836\\25\\114.2578\\-269.5078\\25\\110.3516\\-271.7718\\25\\108.3984\\-273.1449\\25\\106.4453\\-274.0819\\25\\104.4922\\-275.2215\\25\\102.5391\\-275.8842\\25\\100.5859\\-276.9339\\25\\98.63281\\-277.5681\\25\\96.67969\\-278.5076\\25\\94.72656\\-279.2721\\25\\92.77344\\-279.9202\\25\\90.82031\\-280.7516\\25\\86.91406\\-281.6747\\25\\83.00781\\-282.8462\\25\\79.10156\\-283.4979\\25\\77.14844\\-283.9389\\25\\75.19531\\-284.644\\25\\71.28906\\-285.4173\\25\\69.33594\\-285.9173\\25\\67.38281\\-286.5971\\25\\63.47656\\-287.3706\\25\\61.52344\\-287.8725\\25\\59.57031\\-288.5593\\25\\57.61719\\-288.9743\\25\\55.66406\\-289.282\\25\\53.71094\\-289.7286\\25\\51.75781\\-290.5781\\25\\47.85156\\-291.4799\\25\\45.89844\\-292.3365\\25\\41.99219\\-293.308\\25\\40.01872\\-294.0078\\25\\38.08594\\-294.5913\\25\\34.17969\\-295.2749\\25\\32.22656\\-295.7222\\25\\30.27344\\-296.4001\\25\\28.32031\\-296.7957\\25\\24.41406\\-297.4289\\25\\22.46094\\-298.0361\\25\\20.50781\\-298.5284\\25\\14.64844\\-299.2291\\25\\8.789063\\-300.091\\25\\4.882813\\-300.2979\\25\\0.9765625\\-300.3729\\25\\-4.882813\\-300.2761\\25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "309"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "139"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-10.74219\\-299.948\\27\\-12.69531\\-299.637\\27\\-16.60156\\-299.1584\\27\\-22.46094\\-298.5355\\27\\-24.41406\\-298.207\\27\\-26.36719\\-297.6855\\27\\-28.32031\\-297.3224\\27\\-34.17969\\-296.6405\\27\\-36.13281\\-296.2726\\27\\-38.08594\\-295.683\\27\\-40.03906\\-295.3243\\27\\-43.94531\\-294.8274\\27\\-45.89844\\-294.5241\\27\\-49.80469\\-293.4621\\27\\-53.71094\\-292.7645\\27\\-55.66406\\-292.3477\\27\\-57.61719\\-291.6628\\27\\-59.57031\\-291.2508\\27\\-63.47656\\-290.6776\\27\\-67.38281\\-289.6101\\27\\-69.33594\\-289.3285\\27\\-73.24219\\-288.9114\\27\\-75.19531\\-288.6169\\27\\-79.10156\\-287.6221\\27\\-83.00781\\-286.8811\\27\\-84.96094\\-286.3581\\27\\-86.91406\\-285.6348\\27\\-90.82031\\-284.6036\\27\\-92.77344\\-283.7067\\27\\-96.67969\\-282.7086\\27\\-98.63281\\-281.7908\\27\\-100.5859\\-281.1788\\27\\-102.3784\\-280.3359\\27\\-104.4922\\-279.2239\\27\\-106.4453\\-277.9748\\27\\-108.3984\\-277.0827\\27\\-110.3516\\-275.7946\\27\\-112.3047\\-274.7876\\27\\-114.2578\\-273.4598\\27\\-116.2109\\-271.9131\\27\\-118.1641\\-270.5453\\27\\-120.1172\\-269.3303\\27\\-122.0703\\-267.8088\\27\\-125.9766\\-264.5899\\27\\-127.9297\\-263.1323\\27\\-129.8828\\-261.3863\\27\\-133.7891\\-257.39\\27\\-134.3276\\-256.8984\\27\\-136.0421\\-254.9453\\27\\-137.3528\\-252.9922\\27\\-138.8307\\-251.0391\\27\\-140.5119\\-249.0859\\27\\-141.8732\\-247.1328\\27\\-142.8462\\-245.1797\\27\\-144.0717\\-243.2266\\27\\-144.9507\\-241.2734\\27\\-146.183\\-239.3203\\27\\-147.0584\\-237.3672\\27\\-148.114\\-235.4141\\27\\-148.6863\\-233.4609\\27\\-149.5007\\-231.5078\\27\\-150.1657\\-229.5547\\27\\-150.5871\\-227.6016\\27\\-151.2375\\-225.6484\\27\\-151.9981\\-223.6953\\27\\-152.4586\\-221.7422\\27\\-153.0172\\-219.7891\\27\\-153.7371\\-217.8359\\27\\-154.9364\\-211.9766\\27\\-155.4598\\-210.0234\\27\\-155.8581\\-208.0703\\27\\-156.2442\\-204.1641\\27\\-156.497\\-200.2578\\27\\-157.1568\\-192.4453\\27\\-157.3351\\-188.5391\\27\\-157.2641\\-182.6797\\27\\-157.142\\-180.7266\\27\\-156.6554\\-174.8672\\27\\-156.2266\\-169.0078\\27\\-155.8268\\-165.1016\\27\\-154.5485\\-159.2422\\27\\-153.8493\\-155.3359\\27\\-152.5879\\-151.4297\\27\\-151.5542\\-147.5234\\27\\-150.7263\\-145.5703\\27\\-150.265\\-143.6172\\27\\-149.6983\\-141.6641\\27\\-148.8532\\-139.7109\\27\\-148.3244\\-137.7578\\27\\-147.6534\\-135.8047\\27\\-146.674\\-133.8516\\27\\-145.9619\\-131.8984\\27\\-144.8393\\-129.9453\\27\\-144.1643\\-127.9922\\27\\-143.1013\\-126.0391\\27\\-142.4377\\-124.0859\\27\\-140.6024\\-120.1797\\27\\-139.5068\\-118.2266\\27\\-137.6953\\-114.8037\\27\\-137.3382\\-114.3203\\27\\-136.5171\\-112.3672\\27\\-135.2952\\-110.4141\\27\\-134.3175\\-108.4609\\27\\-131.4499\\-104.5547\\27\\-130.2279\\-102.6016\\27\\-128.5926\\-100.6484\\27\\-126.7616\\-98.69531\\27\\-124.6807\\-96.74219\\27\\-124.0234\\-96.02008\\27\\-122.0703\\-94.37366\\27\\-120.1172\\-93.06432\\27\\-118.1641\\-91.51263\\27\\-116.2109\\-90.14397\\27\\-112.3047\\-88.06654\\27\\-110.3516\\-87.40022\\27\\-108.3984\\-86.35947\\27\\-106.4453\\-85.6805\\27\\-104.4922\\-84.7112\\27\\-102.5391\\-83.99043\\27\\-98.63281\\-82.33012\\27\\-96.67969\\-81.81654\\27\\-94.72656\\-80.99905\\27\\-92.77344\\-80.38168\\27\\-88.86719\\-79.43574\\27\\-86.91406\\-78.69409\\27\\-84.96094\\-78.05433\\27\\-83.00781\\-77.73052\\27\\-79.10156\\-76.69393\\27\\-77.14844\\-76.3356\\27\\-73.24219\\-75.91896\\27\\-71.28906\\-75.57626\\27\\-69.33594\\-74.98926\\27\\-67.38281\\-74.70894\\27\\-63.47656\\-74.46515\\27\\-57.61719\\-74.33484\\27\\-53.71094\\-74.37711\\27\\-47.85156\\-74.34756\\27\\-43.94531\\-74.47527\\27\\-40.03906\\-74.7506\\27\\-38.08594\\-75.43329\\27\\-36.13281\\-75.84872\\27\\-32.22656\\-76.25246\\27\\-30.27344\\-76.5181\\27\\-26.36719\\-77.57141\\27\\-22.46094\\-78.4673\\27\\-20.50781\\-79.02863\\27\\-18.55469\\-79.71017\\27\\-14.64844\\-80.78217\\27\\-12.69531\\-81.73083\\27\\-10.74219\\-82.32056\\27\\-8.789063\\-83.33405\\27\\-6.835938\\-84.15213\\27\\-2.929688\\-85.608\\27\\-0.9765625\\-86.12865\\27\\0.9765625\\-86.38344\\27\\2.929688\\-86.44785\\27\\4.882813\\-86.1618\\27\\6.835938\\-85.46605\\27\\7.667336\\-85.02344\\27\\10.74219\\-83.63998\\27\\12.69531\\-82.47389\\27\\14.64844\\-81.68007\\27\\16.60156\\-80.5732\\27\\18.55469\\-79.87721\\27\\20.50781\\-78.84925\\27\\22.46094\\-78.04546\\27\\26.36719\\-76.6124\\27\\28.32031\\-76.19971\\27\\30.27344\\-75.91085\\27\\32.22656\\-75.45909\\27\\34.17969\\-74.81461\\27\\36.13281\\-74.6227\\27\\40.03906\\-74.39722\\27\\45.89844\\-74.28713\\27\\51.75781\\-74.24658\\27\\59.57031\\-74.31676\\27\\63.47656\\-74.47026\\27\\67.38281\\-74.70279\\27\\69.33594\\-74.92454\\27\\71.28906\\-75.47236\\27\\73.24219\\-75.79682\\27\\77.14844\\-76.13672\\27\\81.05469\\-76.6124\\27\\83.00781\\-77.05903\\27\\84.96094\\-77.62312\\27\\88.86719\\-78.38839\\27\\90.82031\\-78.85602\\27\\92.77344\\-79.47744\\27\\94.72656\\-79.90968\\27\\96.67969\\-80.49345\\27\\98.63281\\-81.27866\\27\\100.5859\\-81.94817\\27\\102.5391\\-82.45918\\27\\104.4922\\-83.39354\\27\\106.4453\\-84.14508\\27\\110.3516\\-85.97128\\27\\112.3047\\-86.79161\\27\\114.2578\\-87.85485\\27\\116.2109\\-88.77884\\27\\118.1641\\-90.13208\\27\\121.4554\\-92.83594\\27\\124.0234\\-95.36578\\27\\126.8281\\-98.69531\\27\\128.4038\\-100.6484\\27\\129.5499\\-102.6016\\27\\132.0569\\-106.5078\\27\\133.1401\\-108.4609\\27\\134.4538\\-110.4141\\27\\135.3277\\-112.3672\\27\\136.4379\\-114.3203\\27\\137.1107\\-116.2734\\27\\138.3028\\-118.2266\\27\\139.0983\\-120.1797\\27\\140.2602\\-122.1328\\27\\140.9763\\-124.0859\\27\\142.0152\\-126.0391\\27\\143.2221\\-129.9453\\27\\144.1515\\-131.8984\\27\\144.6893\\-133.8516\\27\\145.6299\\-135.8047\\27\\146.35\\-137.7578\\27\\146.9603\\-139.7109\\27\\147.8214\\-141.6641\\27\\148.7273\\-145.5703\\27\\149.268\\-147.5234\\27\\149.9318\\-149.4766\\27\\150.5692\\-153.3828\\27\\150.944\\-155.3359\\27\\151.591\\-157.2891\\27\\152.0165\\-159.2422\\27\\152.9108\\-165.1016\\27\\153.6794\\-169.0078\\27\\153.9063\\-170.9609\\27\\154.3349\\-176.8203\\27\\154.6043\\-182.6797\\27\\154.7038\\-186.5859\\27\\154.7471\\-192.4453\\27\\154.5498\\-200.2578\\27\\154.3985\\-204.1641\\27\\154.189\\-208.0703\\27\\153.8824\\-211.9766\\27\\153.6351\\-213.9297\\27\\152.7817\\-217.8359\\27\\152.0751\\-221.7422\\27\\151.5416\\-223.6953\\27\\150.7629\\-225.6484\\27\\150.3125\\-227.6016\\27\\149.7251\\-229.5547\\27\\148.7997\\-231.5078\\27\\148.1384\\-233.4609\\27\\146.9791\\-235.4141\\27\\146.0215\\-237.3672\\27\\144.593\\-239.3203\\27\\142.2549\\-243.2266\\27\\140.7463\\-245.1797\\27\\137.6953\\-248.8196\\27\\135.7167\\-251.0391\\27\\133.8743\\-252.9922\\27\\131.8359\\-254.9539\\27\\129.7141\\-256.8984\\27\\125.9766\\-260.2282\\27\\124.0234\\-261.889\\27\\120.1172\\-264.9226\\27\\114.2578\\-269.2217\\27\\112.3047\\-270.0958\\27\\111.6808\\-270.5703\\27\\108.3984\\-272.6196\\27\\104.9389\\-274.4766\\27\\104.4922\\-274.7876\\27\\100.5859\\-276.2969\\27\\98.63281\\-277.2003\\27\\96.67969\\-277.8095\\27\\94.72656\\-278.7897\\27\\90.82031\\-280.05\\27\\88.86719\\-280.8178\\27\\84.96094\\-281.6926\\27\\81.05469\\-282.8555\\27\\79.10156\\-283.1721\\27\\77.14844\\-283.3816\\27\\75.19531\\-283.9411\\27\\73.24219\\-284.6755\\27\\69.33594\\-285.4986\\27\\65.42969\\-286.7688\\27\\61.52344\\-287.6255\\27\\59.57031\\-288.3598\\27\\57.61719\\-288.887\\27\\53.71094\\-289.6165\\27\\51.75781\\-290.4733\\27\\47.85156\\-291.4238\\27\\45.89844\\-292.2664\\27\\43.94531\\-292.845\\27\\41.99219\\-293.2971\\27\\40.03906\\-294.0156\\27\\38.08594\\-294.5999\\27\\34.17969\\-295.2911\\27\\32.22656\\-295.7746\\27\\30.27344\\-296.4524\\27\\28.32031\\-296.8342\\27\\26.36719\\-297.1064\\27\\24.41406\\-297.4892\\27\\22.46094\\-298.1616\\27\\20.50781\\-298.5736\\27\\14.64844\\-299.2985\\27\\10.74219\\-299.9338\\27\\8.789063\\-300.1602\\27\\6.835938\\-300.2857\\27\\0.9765625\\-300.4211\\27\\-4.882813\\-300.3257\\27\\-8.789063\\-300.1377\\27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "302"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "140"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-10.74219\\-300.0026\\29\\-16.60156\\-299.2072\\29\\-22.46094\\-298.5702\\29\\-24.41406\\-298.2502\\29\\-26.36719\\-297.723\\29\\-28.32031\\-297.3304\\29\\-34.17969\\-296.6405\\29\\-36.13281\\-296.2609\\29\\-38.08594\\-295.6588\\29\\-40.03906\\-295.312\\29\\-43.94531\\-294.8042\\29\\-45.89844\\-294.4803\\29\\-49.80469\\-293.3919\\29\\-53.71094\\-292.6829\\29\\-57.61719\\-291.532\\29\\-59.57031\\-291.1448\\29\\-61.52344\\-290.8584\\29\\-63.47656\\-290.463\\29\\-65.42969\\-289.8236\\29\\-67.38281\\-289.4209\\29\\-71.28906\\-288.9999\\29\\-73.24219\\-288.7255\\29\\-77.14844\\-287.7355\\29\\-79.10156\\-287.317\\29\\-81.05469\\-287.003\\29\\-83.00781\\-286.5772\\29\\-84.96094\\-285.8396\\29\\-88.86719\\-284.8661\\29\\-90.82031\\-284.0844\\29\\-92.77344\\-283.4237\\29\\-94.72656\\-283.023\\29\\-98.63281\\-281.5261\\29\\-100.5859\\-280.9086\\29\\-102.5391\\-279.8096\\29\\-104.4922\\-278.9469\\29\\-106.4453\\-277.6562\\29\\-108.3984\\-276.7942\\29\\-110.3516\\-275.5356\\29\\-114.2578\\-273.1647\\29\\-118.1641\\-270.1355\\29\\-120.1172\\-269.0235\\29\\-122.0703\\-267.5398\\29\\-124.0234\\-265.8049\\29\\-125.9766\\-264.1714\\29\\-127.8658\\-262.7578\\29\\-129.8828\\-261.0099\\29\\-133.9297\\-256.8984\\29\\-135.7422\\-254.8255\\29\\-137.0124\\-252.9922\\29\\-140.2306\\-249.0859\\29\\-142.6338\\-245.1797\\29\\-143.7529\\-243.2266\\29\\-144.6959\\-241.2734\\29\\-145.9173\\-239.3203\\29\\-146.7768\\-237.3672\\29\\-147.8795\\-235.4141\\29\\-149.1298\\-231.5078\\29\\-149.973\\-229.5547\\29\\-150.8951\\-225.6484\\29\\-151.7365\\-223.6953\\29\\-152.7092\\-219.7891\\29\\-153.4433\\-217.8359\\29\\-153.9621\\-215.8828\\29\\-154.6863\\-211.9766\\29\\-155.6405\\-208.0703\\29\\-156.1182\\-204.1641\\29\\-156.3806\\-200.2578\\29\\-156.5775\\-196.3516\\29\\-156.8453\\-192.4453\\29\\-156.9526\\-188.5391\\29\\-156.9033\\-182.6797\\29\\-156.7036\\-178.7734\\29\\-156.2442\\-170.9609\\29\\-155.867\\-167.0547\\29\\-155.5535\\-165.1016\\29\\-155.0475\\-163.1484\\29\\-154.0028\\-157.2891\\29\\-153.556\\-155.3359\\29\\-152.8568\\-153.3828\\29\\-151.8755\\-149.4766\\29\\-151.0791\\-147.5234\\29\\-150.5099\\-145.5703\\29\\-150.0754\\-143.6172\\29\\-148.6241\\-139.7109\\29\\-148.0976\\-137.7578\\29\\-146.424\\-133.8516\\29\\-144.596\\-129.9453\\29\\-143.8779\\-127.9922\\29\\-142.8672\\-126.0391\\29\\-142.2463\\-124.0859\\29\\-141.2096\\-122.1328\\29\\-140.3677\\-120.1797\\29\\-139.1197\\-118.2266\\29\\-138.2478\\-116.2734\\29\\-137.0465\\-114.3203\\29\\-136.2877\\-112.3672\\29\\-135.0473\\-110.4141\\29\\-133.9713\\-108.4609\\29\\-132.6005\\-106.5078\\29\\-130.998\\-104.5547\\29\\-129.8828\\-102.6341\\29\\-128.294\\-100.6484\\29\\-126.4648\\-98.69531\\29\\-124.0234\\-96.32257\\29\\-122.0703\\-94.65072\\29\\-120.1172\\-93.36286\\29\\-116.2109\\-90.37721\\29\\-114.2578\\-89.46416\\29\\-112.3047\\-88.272\\29\\-110.3516\\-87.612\\29\\-108.3984\\-86.55054\\29\\-106.4453\\-85.84976\\29\\-102.5391\\-84.15977\\29\\-100.5859\\-83.43819\\29\\-98.63281\\-82.48179\\29\\-96.67969\\-81.95159\\29\\-92.77344\\-80.51968\\29\\-88.86719\\-79.65894\\29\\-86.91406\\-78.86713\\29\\-84.96094\\-78.29276\\29\\-81.05469\\-77.39178\\29\\-79.10156\\-76.83227\\29\\-77.14844\\-76.40635\\29\\-73.24219\\-75.99763\\29\\-69.33594\\-75.45757\\29\\-67.38281\\-74.77326\\29\\-61.52344\\-74.43775\\29\\-57.61719\\-74.39043\\29\\-51.75781\\-74.38501\\29\\-47.85156\\-74.41809\\29\\-43.94531\\-74.56412\\29\\-41.99219\\-74.70295\\29\\-40.03906\\-75.01781\\29\\-38.08594\\-75.66357\\29\\-32.22656\\-76.3339\\29\\-30.27344\\-76.62223\\29\\-26.36719\\-77.71753\\29\\-24.41406\\-78.1052\\29\\-22.46094\\-78.59578\\29\\-18.55469\\-79.7923\\29\\-16.60156\\-80.23094\\29\\-14.64844\\-80.87119\\29\\-12.69531\\-81.78776\\29\\-10.74219\\-82.37096\\29\\-8.789063\\-83.3463\\29\\-2.929688\\-85.39849\\29\\-0.9765625\\-85.76058\\29\\0.9765625\\-85.95087\\29\\2.929688\\-86.03639\\29\\4.882813\\-85.88547\\29\\6.835938\\-85.33681\\29\\10.74219\\-83.66122\\29\\12.69531\\-82.56223\\29\\14.64844\\-81.79571\\29\\16.60156\\-80.67329\\29\\18.55469\\-80.01245\\29\\20.50781\\-78.96462\\29\\22.46094\\-78.14015\\29\\24.41406\\-77.4949\\29\\26.36719\\-76.69662\\29\\28.32031\\-76.24019\\29\\32.22656\\-75.66306\\29\\34.17969\\-74.97765\\29\\36.13281\\-74.70894\\29\\38.08594\\-74.56026\\29\\41.99219\\-74.39181\\29\\49.80469\\-74.29295\\29\\55.66406\\-74.31066\\29\\59.57031\\-74.39043\\29\\63.47656\\-74.55653\\29\\67.38281\\-74.86871\\29\\69.33594\\-75.44276\\29\\71.28906\\-75.73967\\29\\77.14844\\-76.25161\\29\\79.10156\\-76.49358\\29\\81.05469\\-76.85046\\29\\84.96094\\-77.8256\\29\\88.86719\\-78.6151\\29\\90.84744\\-79.16406\\29\\96.67969\\-80.68392\\29\\98.63281\\-81.53967\\29\\102.5391\\-82.6623\\29\\104.4922\\-83.63634\\29\\106.4453\\-84.36315\\29\\108.3984\\-85.35128\\29\\110.3516\\-86.13021\\29\\114.2578\\-87.97769\\29\\115.9397\\-88.92969\\29\\118.1641\\-90.39117\\29\\118.6523\\-90.88281\\29\\121.1448\\-92.83594\\29\\124.0234\\-95.69801\\29\\124.8314\\-96.74219\\29\\126.5536\\-98.69531\\29\\128.0658\\-100.6484\\29\\129.2251\\-102.6016\\29\\130.574\\-104.5547\\29\\131.6112\\-106.5078\\29\\134.1656\\-110.4141\\29\\135.0555\\-112.3672\\29\\136.2095\\-114.3203\\29\\136.8776\\-116.2734\\29\\138.0296\\-118.2266\\29\\138.8264\\-120.1797\\29\\139.9867\\-122.1328\\29\\140.7243\\-124.0859\\29\\141.7015\\-126.0391\\29\\142.4568\\-127.9922\\29\\142.9523\\-129.9453\\29\\143.8546\\-131.8984\\29\\145.1868\\-135.8047\\29\\146.1348\\-137.7578\\29\\146.7008\\-139.7109\\29\\147.5135\\-141.6641\\29\\148.1416\\-143.6172\\29\\148.9975\\-147.5234\\29\\149.6691\\-149.4766\\29\\150.1346\\-151.4297\\29\\150.7064\\-155.3359\\29\\151.7831\\-159.2422\\29\\152.1149\\-161.1953\\29\\152.6638\\-165.1016\\29\\153.4011\\-169.0078\\29\\153.6997\\-170.9609\\29\\154.0595\\-174.8672\\29\\154.2753\\-178.7734\\29\\154.4796\\-184.6328\\29\\154.5352\\-188.5391\\29\\154.5352\\-192.4453\\29\\154.3631\\-200.2578\\29\\154.2106\\-204.1641\\29\\153.9951\\-208.0703\\29\\153.648\\-211.9766\\29\\152.8503\\-215.8828\\29\\152.2092\\-219.7891\\29\\151.8046\\-221.7422\\29\\151.0791\\-223.6953\\29\\150.5357\\-225.6484\\29\\150.1346\\-227.6016\\29\\148.5779\\-231.5078\\29\\147.8556\\-233.4609\\29\\147.4609\\-234.0429\\29\\145.5078\\-237.4676\\29\\143.5547\\-240.5657\\29\\143.0114\\-241.2734\\29\\141.9119\\-243.2266\\29\\140.402\\-245.1797\\29\\138.6895\\-247.1328\\29\\137.6953\\-248.3927\\29\\135.2355\\-251.0391\\29\\131.8359\\-254.4605\\29\\129.2504\\-256.8984\\29\\127.9297\\-258.0021\\29\\125.9766\\-259.8219\\29\\124.0234\\-261.5253\\29\\122.0703\\-263.0933\\29\\120.1172\\-264.3684\\29\\116.2109\\-267.444\\29\\114.2578\\-268.8094\\29\\112.3047\\-269.7679\\29\\110.3516\\-271.0235\\29\\108.3984\\-271.9879\\29\\106.4453\\-273.2614\\29\\104.4922\\-274.1533\\29\\102.5391\\-275.1965\\29\\100.5859\\-275.7808\\29\\98.63281\\-276.7481\\29\\94.72656\\-278.055\\29\\92.77344\\-278.9569\\29\\90.82031\\-279.5013\\29\\86.91406\\-280.8529\\29\\83.00781\\-281.7057\\29\\79.10156\\-282.8517\\29\\75.19531\\-283.4979\\29\\73.24219\\-284.0694\\29\\71.28906\\-284.768\\29\\67.38281\\-285.7191\\29\\65.42969\\-286.5013\\29\\61.52344\\-287.4334\\29\\57.61719\\-288.7848\\29\\53.71094\\-289.5058\\29\\51.75781\\-290.3642\\29\\49.80469\\-290.9379\\29\\47.85156\\-291.3663\\29\\45.89844\\-292.2033\\29\\43.94531\\-292.8249\\29\\41.99219\\-293.2834\\29\\40.01953\\-294.0078\\29\\38.08594\\-294.6121\\29\\34.17969\\-295.312\\29\\32.22656\\-295.8312\\29\\30.27344\\-296.5021\\29\\26.36719\\-297.1468\\29\\24.41406\\-297.5644\\29\\22.46094\\-298.2502\\29\\20.50781\\-298.6102\\29\\14.64844\\-299.373\\29\\10.74219\\-300.0158\\29\\6.835938\\-300.3376\\29\\0.9765625\\-300.4712\\29\\-0.9765625\\-300.4599\\29\\-6.835938\\-300.3073\\29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "287"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "141"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-10.74219\\-300.0666\\31\\-16.60156\\-299.2437\\31\\-22.46094\\-298.5901\\31\\-24.41406\\-298.2911\\31\\-26.36719\\-297.761\\31\\-28.32031\\-297.3304\\31\\-34.17969\\-296.6331\\31\\-36.13281\\-296.2247\\31\\-38.08594\\-295.6331\\31\\-40.03906\\-295.2915\\31\\-43.94531\\-294.7809\\31\\-45.89844\\-294.4254\\31\\-49.80469\\-293.3156\\31\\-53.71094\\-292.596\\31\\-57.61719\\-291.3913\\31\\-61.52344\\-290.7403\\31\\-65.42969\\-289.5879\\31\\-71.28906\\-288.8345\\31\\-73.24219\\-288.4623\\31\\-75.19531\\-287.8745\\31\\-77.14844\\-287.4377\\31\\-81.05469\\-286.7429\\31\\-84.96094\\-285.4846\\31\\-86.91406\\-285.0585\\31\\-88.86719\\-284.4897\\31\\-90.82031\\-283.6674\\31\\-94.72656\\-282.7538\\31\\-96.67969\\-281.8804\\31\\-98.63281\\-281.2891\\31\\-100.5859\\-280.5886\\31\\-102.5391\\-279.4997\\31\\-104.4922\\-278.5753\\31\\-106.4453\\-277.4229\\31\\-110.3516\\-275.3199\\31\\-112.3047\\-274.0106\\31\\-114.2578\\-272.8336\\31\\-118.1641\\-269.8775\\31\\-122.0703\\-267.2565\\31\\-125.9766\\-263.8394\\31\\-127.3774\\-262.7578\\31\\-129.5766\\-260.8047\\31\\-133.7891\\-256.5125\\31\\-135.7422\\-254.3512\\31\\-136.7615\\-252.9922\\31\\-139.8803\\-249.0859\\31\\-141.0718\\-247.1328\\31\\-142.4164\\-245.1797\\31\\-143.5547\\-242.9749\\31\\-145.5309\\-239.3203\\31\\-147.4609\\-235.5536\\31\\-148.3257\\-233.4609\\31\\-148.8796\\-231.5078\\31\\-149.7106\\-229.5547\\31\\-150.2664\\-227.6016\\31\\-150.6755\\-225.6484\\31\\-152.0481\\-221.7422\\31\\-152.484\\-219.7891\\31\\-153.0676\\-217.8359\\31\\-153.7631\\-215.8828\\31\\-154.8387\\-210.0234\\31\\-155.3281\\-208.0703\\31\\-155.6977\\-206.1172\\31\\-155.9639\\-204.1641\\31\\-156.2672\\-200.2578\\31\\-156.5975\\-192.4453\\31\\-156.6888\\-186.5859\\31\\-156.6554\\-182.6797\\31\\-156.3414\\-174.8672\\31\\-156.1011\\-170.9609\\31\\-155.6267\\-167.0547\\31\\-154.7659\\-163.1484\\31\\-153.7659\\-157.2891\\31\\-152.5662\\-153.3828\\31\\-152.1267\\-151.4297\\31\\-151.5542\\-149.4766\\31\\-150.7463\\-147.5234\\31\\-149.8198\\-143.6172\\31\\-148.9808\\-141.6641\\31\\-147.8068\\-137.7578\\31\\-146.8762\\-135.8047\\31\\-146.1721\\-133.8516\\31\\-145.0949\\-131.8984\\31\\-144.3586\\-129.9453\\31\\-143.4515\\-127.9922\\31\\-142.6575\\-126.0391\\31\\-141.9908\\-124.0859\\31\\-140.9168\\-122.1328\\31\\-140.0773\\-120.1797\\31\\-138.8281\\-118.2266\\31\\-137.9544\\-116.2734\\31\\-136.8225\\-114.3203\\31\\-135.9769\\-112.3672\\31\\-133.7891\\-108.7273\\31\\-132.3135\\-106.5078\\31\\-130.7488\\-104.5547\\31\\-129.8828\\-103.2307\\31\\-127.9297\\-100.6968\\31\\-126.0517\\-98.69531\\31\\-124.0143\\-96.74219\\31\\-121.7954\\-94.78906\\31\\-120.1172\\-93.6881\\31\\-118.1641\\-92.12856\\31\\-116.2109\\-90.6875\\31\\-114.2578\\-89.68233\\31\\-112.3047\\-88.50912\\31\\-110.3516\\-87.77966\\31\\-108.3984\\-86.83273\\31\\-104.4922\\-85.32554\\31\\-102.5391\\-84.3317\\31\\-100.5859\\-83.63794\\31\\-98.63281\\-82.70582\\31\\-94.72656\\-81.46904\\31\\-92.77344\\-80.66281\\31\\-88.86719\\-79.77917\\31\\-84.96094\\-78.44791\\31\\-83.00781\\-77.92625\\31\\-81.05469\\-77.53191\\31\\-79.10156\\-76.96504\\31\\-77.14844\\-76.51608\\31\\-75.19531\\-76.25805\\31\\-69.33594\\-75.66306\\31\\-67.38281\\-74.85938\\31\\-65.42969\\-74.68462\\31\\-59.57031\\-74.46515\\31\\-53.71094\\-74.43577\\31\\-49.80469\\-74.47531\\31\\-43.94531\\-74.67046\\31\\-41.99219\\-74.87191\\31\\-40.03906\\-75.52746\\31\\-38.08594\\-75.81311\\31\\-32.22656\\-76.42069\\31\\-30.27344\\-76.80293\\31\\-26.36719\\-77.84834\\31\\-24.41406\\-78.21494\\31\\-22.46094\\-78.71108\\31\\-20.50781\\-79.40636\\31\\-18.55469\\-79.86597\\31\\-16.60156\\-80.1463\\31\\-12.69531\\-81.88717\\31\\-10.74219\\-82.42984\\31\\-8.789063\\-83.38421\\31\\-2.929688\\-85.14063\\31\\-0.9765625\\-85.38698\\31\\2.929688\\-85.61069\\31\\4.882813\\-85.54826\\31\\6.835938\\-85.14063\\31\\10.74219\\-83.6861\\31\\12.69531\\-82.6295\\31\\14.64844\\-81.86213\\31\\16.60156\\-80.79166\\31\\18.55469\\-80.08569\\31\\22.46094\\-78.25381\\31\\24.41406\\-77.62385\\31\\26.36719\\-76.79436\\31\\28.32031\\-76.32262\\31\\32.22656\\-75.82027\\31\\36.13281\\-74.82631\\31\\40.03906\\-74.54341\\31\\45.89844\\-74.39043\\31\\49.80469\\-74.34675\\31\\55.66406\\-74.37167\\31\\59.57031\\-74.47026\\31\\65.42969\\-74.82963\\31\\67.38281\\-75.18139\\31\\69.33594\\-75.70112\\31\\73.24219\\-76.00947\\31\\77.14844\\-76.39321\\31\\79.10156\\-76.68117\\31\\83.00781\\-77.60786\\31\\86.91406\\-78.37299\\31\\88.86719\\-78.8601\\31\\90.82031\\-79.46065\\31\\94.72656\\-80.35369\\31\\96.67969\\-80.94033\\31\\98.63281\\-81.74451\\31\\100.5859\\-82.22906\\31\\102.5391\\-82.91495\\31\\104.4922\\-83.82921\\31\\106.4453\\-84.56852\\31\\108.3984\\-85.58781\\31\\110.3516\\-86.31522\\31\\112.3047\\-87.36861\\31\\114.2578\\-88.12954\\31\\118.1641\\-90.73438\\31\\120.7854\\-92.83594\\31\\122.8275\\-94.78906\\31\\124.0234\\-96.05859\\31\\126.2059\\-98.69531\\31\\127.9297\\-101.0255\\31\\130.2973\\-104.5547\\31\\131.25\\-106.5078\\31\\132.6344\\-108.4609\\31\\133.7891\\-110.4252\\31\\135.7422\\-114.0846\\31\\137.6953\\-118.3446\\31\\139.6484\\-122.2142\\31\\141.3176\\-126.0391\\31\\142.2631\\-127.9922\\31\\142.7601\\-129.9453\\31\\143.4673\\-131.8984\\31\\144.2914\\-133.8516\\31\\144.8864\\-135.8047\\31\\145.8589\\-137.7578\\31\\147.14\\-141.6641\\31\\147.9523\\-143.6172\\31\\148.7903\\-147.5234\\31\\149.9509\\-151.4297\\31\\150.5388\\-155.3359\\31\\150.9012\\-157.2891\\31\\151.4893\\-159.2422\\31\\151.9165\\-161.1953\\31\\152.7207\\-167.0547\\31\\153.7292\\-172.9141\\31\\154.0232\\-176.8203\\31\\154.2115\\-180.7266\\31\\154.324\\-184.6328\\31\\154.3741\\-188.5391\\31\\154.3521\\-192.4453\\31\\154.1842\\-200.2578\\31\\153.9362\\-206.1172\\31\\153.8057\\-208.0703\\31\\153.2974\\-211.9766\\31\\152.9108\\-213.9297\\31\\151.9843\\-219.7891\\31\\150.7583\\-223.6953\\31\\149.9089\\-227.6016\\31\\149.0054\\-229.5547\\31\\148.3783\\-231.5078\\31\\147.4842\\-233.4609\\31\\146.4063\\-235.4141\\31\\145.1269\\-237.3672\\31\\144.0845\\-239.3203\\31\\142.7221\\-241.2734\\31\\141.6016\\-243.0391\\31\\140.0542\\-245.1797\\31\\139.6484\\-245.5743\\31\\137.6953\\-247.9688\\31\\134.8465\\-251.0391\\31\\133.7891\\-252.0219\\31\\131.8359\\-254.0453\\31\\129.8828\\-255.9219\\31\\127.9297\\-257.5978\\31\\124.0234\\-261.1577\\31\\121.9295\\-262.7578\\31\\120.1172\\-263.9583\\31\\116.2109\\-267.0727\\31\\114.2578\\-268.2308\\31\\112.3047\\-269.4873\\31\\110.3516\\-270.4645\\31\\106.4453\\-272.7898\\31\\104.4922\\-273.6666\\31\\102.5391\\-274.7587\\31\\98.63281\\-276.0779\\31\\96.67969\\-277.003\\31\\94.72656\\-277.5304\\31\\90.82031\\-279.0624\\31\\88.86719\\-279.5695\\31\\84.96094\\-280.9144\\31\\81.05469\\-281.7451\\31\\77.14844\\-282.8866\\31\\73.24219\\-283.6053\\31\\69.33594\\-284.9472\\31\\67.38281\\-285.4363\\31\\63.47656\\-286.8298\\31\\61.52344\\-287.281\\31\\59.57031\\-287.9115\\31\\57.61719\\-288.6758\\31\\53.71094\\-289.4445\\31\\51.75781\\-290.2523\\31\\49.80469\\-290.8877\\31\\47.85156\\-291.3392\\31\\45.89844\\-292.1632\\31\\43.94531\\-292.8148\\31\\41.99219\\-293.2767\\31\\38.08594\\-294.6326\\31\\34.17969\\-295.3332\\31\\30.27344\\-296.5493\\31\\26.36719\\-297.1884\\31\\24.41406\\-297.6578\\31\\22.46094\\-298.301\\31\\20.50781\\-298.6391\\31\\14.64844\\-299.4478\\31\\10.74219\\-300.091\\31\\6.835938\\-300.3759\\31\\4.882813\\-300.4474\\31\\-0.9765625\\-300.5014\\31\\-6.835938\\-300.3555\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "297"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "142"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-12.69531\\-299.8899\\33\\-16.60156\\-299.2937\\33\\-22.46094\\-298.6256\\33\\-24.41406\\-298.3394\\33\\-28.32031\\-297.342\\33\\-34.17969\\-296.6139\\33\\-36.13281\\-296.1979\\33\\-38.08594\\-295.6102\\33\\-40.03906\\-295.2669\\33\\-43.94531\\-294.7388\\33\\-45.89844\\-294.3575\\33\\-47.85156\\-293.7354\\33\\-49.80469\\-293.2379\\33\\-53.71094\\-292.5077\\33\\-55.66406\\-291.7729\\33\\-57.61719\\-291.2784\\33\\-61.52344\\-290.5781\\33\\-63.47656\\-289.8773\\33\\-65.42969\\-289.4366\\33\\-69.33594\\-288.9622\\33\\-71.28906\\-288.6301\\33\\-75.19531\\-287.5686\\33\\-79.10156\\-286.8409\\33\\-81.05469\\-286.3947\\33\\-83.00781\\-285.6804\\33\\-86.91406\\-284.7897\\33\\-88.86719\\-283.9803\\33\\-90.82031\\-283.4189\\33\\-92.77344\\-283.0305\\33\\-96.67969\\-281.5986\\33\\-98.63281\\-281.0478\\33\\-102.5391\\-279.2393\\33\\-104.4922\\-278.1028\\33\\-106.4453\\-277.1982\\33\\-108.3984\\-276.0122\\33\\-110.3516\\-275.0944\\33\\-111.1698\\-274.4766\\33\\-116.2109\\-271.0866\\33\\-120.1172\\-268.2171\\33\\-122.0703\\-266.9154\\33\\-124.6109\\-264.7109\\33\\-126.9757\\-262.7578\\33\\-129.8828\\-260.0811\\33\\-131.0298\\-258.8516\\33\\-133.0119\\-256.8984\\33\\-134.8852\\-254.9453\\33\\-136.5222\\-252.9922\\33\\-139.6484\\-248.8057\\33\\-142.194\\-245.1797\\33\\-143.0491\\-243.2266\\33\\-144.2686\\-241.2734\\33\\-145.1185\\-239.3203\\33\\-146.2992\\-237.3672\\33\\-148.1379\\-233.4609\\33\\-148.6709\\-231.5078\\33\\-150.1194\\-227.6016\\33\\-150.501\\-225.6484\\33\\-151.0302\\-223.6953\\33\\-151.8409\\-221.7422\\33\\-152.7817\\-217.8359\\33\\-153.4947\\-215.8828\\33\\-153.9621\\-213.9297\\33\\-154.6244\\-210.0234\\33\\-155.4312\\-206.1172\\33\\-155.7584\\-204.1641\\33\\-156.1435\\-200.2578\\33\\-156.2442\\-198.3047\\33\\-156.4442\\-192.4453\\33\\-156.497\\-188.5391\\33\\-156.497\\-184.6328\\33\\-156.4374\\-180.7266\\33\\-156.3017\\-176.8203\\33\\-156.0872\\-172.9141\\33\\-155.6764\\-169.0078\\33\\-154.8626\\-165.1016\\33\\-153.9039\\-159.2422\\33\\-153.4158\\-157.2891\\33\\-152.7751\\-155.3359\\33\\-151.8729\\-151.4297\\33\\-151.0771\\-149.4766\\33\\-150.5309\\-147.5234\\33\\-150.1237\\-145.5703\\33\\-148.7317\\-141.6641\\33\\-148.1995\\-139.7109\\33\\-146.5766\\-135.8047\\33\\-145.8506\\-133.8516\\33\\-144.7783\\-131.8984\\33\\-144.1239\\-129.9453\\33\\-143.0835\\-127.9922\\33\\-142.4744\\-126.0391\\33\\-141.6095\\-124.0859\\33\\-139.6563\\-120.1797\\33\\-137.5184\\-116.2734\\33\\-136.6205\\-114.3203\\33\\-134.5667\\-110.4141\\33\\-133.1712\\-108.4609\\33\\-131.9074\\-106.5078\\33\\-130.5272\\-104.5547\\33\\-127.9297\\-101.1929\\33\\-125.5383\\-98.69531\\33\\-123.5672\\-96.74219\\33\\-121.3503\\-94.78906\\33\\-118.1641\\-92.3726\\33\\-116.0265\\-90.88281\\33\\-112.3047\\-88.84235\\33\\-110.3516\\-87.94052\\33\\-108.3984\\-87.17188\\33\\-106.4453\\-86.23553\\33\\-104.4922\\-85.56245\\33\\-102.5391\\-84.53212\\33\\-100.5859\\-83.80855\\33\\-96.67969\\-82.20155\\33\\-94.72656\\-81.70571\\33\\-92.77344\\-80.84345\\33\\-88.86719\\-79.87601\\33\\-86.91406\\-79.29688\\33\\-84.96094\\-78.59837\\33\\-83.00781\\-78.05405\\33\\-81.05469\\-77.66016\\33\\-77.14844\\-76.64453\\33\\-75.19531\\-76.33685\\33\\-69.33594\\-75.72993\\33\\-65.42969\\-74.78455\\33\\-59.57031\\-74.54341\\33\\-51.75781\\-74.53994\\33\\-49.80469\\-74.57422\\33\\-43.94531\\-74.81116\\33\\-40.03906\\-75.75912\\33\\-34.17969\\-76.3054\\33\\-32.22656\\-76.57047\\33\\-30.27344\\-76.99623\\33\\-28.32031\\-77.54745\\33\\-24.41406\\-78.36208\\33\\-22.46094\\-78.8601\\33\\-20.50781\\-79.5423\\33\\-18.55469\\-79.99355\\33\\-16.60156\\-80.23714\\33\\-14.64844\\-81.18983\\33\\-12.69531\\-81.95863\\33\\-10.74219\\-82.48179\\33\\-8.789063\\-83.43226\\33\\-6.835938\\-83.98909\\33\\-4.882813\\-84.43981\\33\\-2.929688\\-84.74161\\33\\2.929688\\-84.98588\\33\\4.882813\\-85.00072\\33\\6.835938\\-84.77596\\33\\10.74219\\-83.70693\\33\\12.69531\\-82.70061\\33\\14.64844\\-81.93725\\33\\16.60156\\-80.95313\\33\\18.55469\\-80.17153\\33\\22.46094\\-78.45435\\33\\24.41406\\-77.76453\\33\\26.36719\\-76.97571\\33\\28.32031\\-76.4333\\33\\34.17969\\-75.65517\\33\\38.08594\\-74.81461\\33\\41.99219\\-74.55653\\33\\49.80469\\-74.41637\\33\\53.71094\\-74.42866\\33\\59.57031\\-74.58684\\33\\63.47656\\-74.85659\\33\\65.42969\\-75.16521\\33\\67.38281\\-75.58334\\33\\69.33594\\-75.82544\\33\\73.24219\\-76.12016\\33\\77.14844\\-76.56192\\33\\79.10156\\-76.94273\\33\\81.05469\\-77.45164\\33\\84.96094\\-78.17123\\33\\86.91406\\-78.58727\\33\\90.82031\\-79.6791\\33\\94.72656\\-80.50208\\33\\96.67969\\-81.26682\\33\\98.63281\\-81.90949\\33\\100.5859\\-82.37708\\33\\102.5391\\-83.23919\\33\\106.4453\\-84.8072\\33\\108.3984\\-85.79877\\33\\110.3516\\-86.52433\\33\\112.3047\\-87.60807\\33\\114.2578\\-88.32923\\33\\117.8414\\-90.88281\\33\\120.1172\\-92.57685\\33\\122.5698\\-94.78906\\33\\124.3014\\-96.74219\\33\\125.7176\\-98.69531\\33\\127.2943\\-100.6484\\33\\128.7456\\-102.6016\\33\\129.9235\\-104.5547\\33\\130.9854\\-106.5078\\33\\132.3515\\-108.4609\\33\\133.3866\\-110.4141\\33\\134.6068\\-112.3672\\33\\135.5362\\-114.3203\\33\\136.5662\\-116.2734\\33\\137.2514\\-118.2266\\33\\138.4\\-120.1797\\33\\139.2109\\-122.1328\\33\\140.3013\\-124.0859\\33\\141.0168\\-126.0391\\33\\142.0393\\-127.9922\\33\\143.1599\\-131.8984\\33\\144.1013\\-133.8516\\33\\144.6715\\-135.8047\\33\\146.2816\\-139.7109\\33\\146.8632\\-141.6641\\33\\147.7016\\-143.6172\\33\\148.2387\\-145.5703\\33\\149.047\\-149.4766\\33\\149.7206\\-151.4297\\33\\150.1465\\-153.3828\\33\\150.6987\\-157.2891\\33\\151.132\\-159.2422\\33\\151.682\\-161.1953\\33\\152.0508\\-163.1484\\33\\152.7207\\-169.0078\\33\\153.4819\\-172.9141\\33\\153.7195\\-174.8672\\33\\153.9805\\-178.7734\\33\\154.1748\\-184.6328\\33\\154.2057\\-188.5391\\33\\154.1842\\-192.4453\\33\\154.0093\\-200.2578\\33\\153.7195\\-206.1172\\33\\153.532\\-208.0703\\33\\152.9208\\-211.9766\\33\\152.0957\\-217.8359\\33\\151.6927\\-219.7891\\33\\150.9859\\-221.7422\\33\\150.1965\\-225.6484\\33\\149.6033\\-227.6016\\33\\148.7609\\-229.5547\\33\\148.1706\\-231.5078\\33\\147.0848\\-233.4609\\33\\146.1298\\-235.4141\\33\\144.7815\\-237.3672\\33\\143.7137\\-239.3203\\33\\142.4967\\-241.2734\\33\\141.6016\\-242.5203\\33\\137.6953\\-247.5153\\33\\136.3196\\-249.0859\\33\\134.4788\\-251.0391\\33\\133.7891\\-251.6405\\33\\131.8359\\-253.6712\\33\\129.8828\\-255.5655\\33\\123.8683\\-260.8047\\33\\121.3884\\-262.7578\\33\\118.1641\\-265.1725\\33\\116.0498\\-266.6641\\33\\112.3047\\-269.143\\33\\110.3516\\-269.9709\\33\\108.3984\\-271.2195\\33\\106.4453\\-272.0958\\33\\104.4922\\-273.276\\33\\102.5391\\-274.0927\\33\\100.5859\\-275.0917\\33\\98.63281\\-275.6472\\33\\94.72656\\-277.1635\\33\\92.77344\\-277.6623\\33\\90.82031\\-278.4648\\33\\88.86719\\-279.1166\\33\\86.91406\\-279.6326\\33\\83.00781\\-280.9768\\33\\79.10156\\-281.8109\\33\\77.14844\\-282.4645\\33\\75.19531\\-283.0032\\33\\73.24219\\-283.3508\\33\\71.28906\\-283.8208\\33\\69.33594\\-284.6607\\33\\65.42969\\-285.7759\\33\\63.47656\\-286.6538\\33\\59.57031\\-287.7432\\33\\57.61719\\-288.5593\\33\\55.66406\\-289.0357\\33\\53.71094\\-289.3929\\33\\49.80469\\-290.8562\\33\\47.85156\\-291.33\\33\\45.89844\\-292.1355\\33\\43.94531\\-292.8125\\33\\41.99219\\-293.2874\\33\\40.03906\\-294.0311\\33\\38.08594\\-294.6447\\33\\34.17969\\-295.3673\\33\\30.27344\\-296.5824\\33\\26.36719\\-297.2316\\33\\24.41406\\-297.7346\\33\\22.46094\\-298.3579\\33\\20.50781\\-298.6768\\33\\16.60156\\-299.2071\\33\\10.74219\\-300.1602\\33\\6.835938\\-300.4326\\33\\4.882813\\-300.5051\\33\\-0.9765625\\-300.5536\\33\\-4.882813\\-300.4747\\33\\-8.789063\\-300.2952\\33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "293"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "143"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-12.69531\\-300.0026\\35\\-16.60156\\-299.3641\\35\\-24.41406\\-298.3849\\35\\-28.32031\\-297.3585\\35\\-34.17969\\-296.5983\\35\\-36.13281\\-296.1723\\35\\-38.08594\\-295.5853\\35\\-40.03906\\-295.2546\\35\\-43.94531\\-294.7003\\35\\-45.89844\\-294.2859\\35\\-47.85156\\-293.6361\\35\\-49.80469\\-293.1658\\35\\-53.71094\\-292.3802\\35\\-55.66406\\-291.599\\35\\-59.57031\\-290.8415\\35\\-61.52344\\-290.3642\\35\\-63.47656\\-289.6523\\35\\-65.42969\\-289.3285\\35\\-69.33594\\-288.8179\\35\\-71.28906\\-288.3727\\35\\-73.24219\\-287.7646\\35\\-75.19531\\-287.3264\\35\\-79.10156\\-286.5647\\35\\-81.05469\\-285.9096\\35\\-83.00781\\-285.3798\\35\\-84.96094\\-284.9746\\35\\-86.91406\\-284.4038\\35\\-88.86719\\-283.6295\\35\\-92.77344\\-282.774\\35\\-94.72656\\-281.9359\\35\\-98.63281\\-280.7763\\35\\-100.5859\\-279.7453\\35\\-102.5391\\-278.9755\\35\\-104.4922\\-277.767\\35\\-106.4453\\-276.9594\\35\\-108.3984\\-275.7303\\35\\-110.3516\\-274.8284\\35\\-112.3047\\-273.4887\\35\\-114.2578\\-272.0159\\35\\-116.2109\\-270.7866\\35\\-118.1641\\-269.4385\\35\\-121.8783\\-266.6641\\35\\-124.1921\\-264.7109\\35\\-125.9766\\-263.3286\\35\\-127.9297\\-261.6274\\35\\-134.6062\\-254.9453\\35\\-136.241\\-252.9922\\35\\-137.5732\\-251.0391\\35\\-140.546\\-247.1328\\35\\-141.8837\\-245.1797\\35\\-142.8158\\-243.2266\\35\\-144.0303\\-241.2734\\35\\-144.8353\\-239.3203\\35\\-146.077\\-237.3672\\35\\-146.8798\\-235.4141\\35\\-147.9239\\-233.4609\\35\\-149.0673\\-229.5547\\35\\-149.9414\\-227.6016\\35\\-150.796\\-223.6953\\35\\-151.5789\\-221.7422\\35\\-152.1434\\-219.7891\\35\\-152.5704\\-217.8359\\35\\-153.7724\\-213.9297\\35\\-154.7402\\-208.0703\\35\\-155.5139\\-204.1641\\35\\-155.992\\-200.2578\\35\\-156.2731\\-194.3984\\35\\-156.3579\\-190.4922\\35\\-156.3806\\-184.6328\\35\\-156.3193\\-180.7266\\35\\-156.1735\\-176.8203\\35\\-155.9098\\-172.9141\\35\\-155.387\\-169.0078\\35\\-154.9341\\-167.0547\\35\\-154.0139\\-161.1953\\35\\-153.6284\\-159.2422\\35\\-152.9729\\-157.2891\\35\\-152.481\\-155.3359\\35\\-152.0996\\-153.3828\\35\\-151.5158\\-151.4297\\35\\-150.7501\\-149.4766\\35\\-149.889\\-145.5703\\35\\-149.0698\\-143.6172\\35\\-147.9556\\-139.7109\\35\\-146.998\\-137.7578\\35\\-146.3092\\-135.8047\\35\\-145.3651\\-133.8516\\35\\-143.7916\\-129.9453\\35\\-142.8269\\-127.9922\\35\\-142.2547\\-126.0391\\35\\-141.2229\\-124.0859\\35\\-140.433\\-122.1328\\35\\-139.2195\\-120.1797\\35\\-138.3445\\-118.2266\\35\\-137.1644\\-116.2734\\35\\-136.4212\\-114.3203\\35\\-135.2573\\-112.3672\\35\\-134.2431\\-110.4141\\35\\-131.8359\\-106.9699\\35\\-131.4438\\-106.5078\\35\\-130.2426\\-104.5547\\35\\-128.7658\\-102.6016\\35\\-127.0487\\-100.6484\\35\\-122.0703\\-95.69827\\35\\-120.1172\\-94.06306\\35\\-116.2109\\-91.50487\\35\\-114.2578\\-90.07006\\35\\-112.3047\\-89.17199\\35\\-110.3516\\-88.09898\\35\\-108.3984\\-87.41138\\35\\-106.4453\\-86.40175\\35\\-104.4922\\-85.72099\\35\\-102.5391\\-84.7285\\35\\-98.63281\\-83.26277\\35\\-96.67969\\-82.35244\\35\\-94.72656\\-81.84808\\35\\-92.77344\\-81.0765\\35\\-90.82031\\-80.46407\\35\\-86.91406\\-79.42497\\35\\-84.96094\\-78.73341\\35\\-83.00781\\-78.1875\\35\\-81.05469\\-77.76808\\35\\-77.14844\\-76.7746\\35\\-75.19531\\-76.3961\\35\\-73.24219\\-76.17043\\35\\-69.33594\\-75.81855\\35\\-67.38281\\-75.5621\\35\\-65.42969\\-74.91361\\35\\-63.47656\\-74.79173\\35\\-59.57031\\-74.65002\\35\\-51.75781\\-74.63146\\35\\-45.89844\\-74.85345\\35\\-43.94531\\-75.00126\\35\\-41.99219\\-75.64707\\35\\-40.03906\\-75.86895\\35\\-34.17969\\-76.41411\\35\\-32.22656\\-76.73568\\35\\-28.32031\\-77.69922\\35\\-24.41406\\-78.5\\35\\-20.50781\\-79.63573\\35\\-16.60156\\-80.50605\\35\\-14.64844\\-81.35006\\35\\-12.69531\\-82.00777\\35\\-10.74219\\-82.5322\\35\\-8.789063\\-83.45687\\35\\-6.835938\\-83.94643\\35\\-4.882813\\-84.22962\\35\\-2.929688\\-84.31815\\35\\0.9765625\\-84.29712\\35\\6.835938\\-84.36626\\35\\8.789063\\-84.13304\\35\\10.74219\\-83.70293\\35\\12.69531\\-82.74718\\35\\14.64844\\-82.00667\\35\\18.55469\\-80.25259\\35\\20.50781\\-79.51591\\35\\22.46094\\-78.61651\\35\\24.41406\\-77.88843\\35\\28.32031\\-76.55779\\35\\30.27344\\-76.24607\\35\\36.13281\\-75.58104\\35\\38.08594\\-74.94563\\35\\40.03906\\-74.76953\\35\\43.94531\\-74.59562\\35\\49.80469\\-74.49052\\35\\57.61719\\-74.63636\\35\\61.52344\\-74.82963\\35\\63.47656\\-75.13261\\35\\65.42969\\-75.5948\\35\\67.38281\\-75.79335\\35\\73.24219\\-76.2458\\35\\75.19531\\-76.43807\\35\\77.14844\\-76.7487\\35\\81.05469\\-77.70532\\35\\84.96094\\-78.38174\\35\\86.91406\\-78.81529\\35\\88.86719\\-79.43574\\35\\92.77344\\-80.24716\\35\\94.72656\\-80.70856\\35\\96.67969\\-81.52055\\35\\100.5859\\-82.54398\\35\\102.5391\\-83.49633\\35\\104.4922\\-84.21888\\35\\108.3984\\-85.97688\\35\\110.3516\\-86.76363\\35\\112.3047\\-87.77896\\35\\114.2578\\-88.57784\\35\\116.2109\\-89.93021\\35\\119.969\\-92.83594\\35\\122.3063\\-94.78906\\35\\124.0234\\-96.85866\\35\\125.3581\\-98.69531\\35\\126.9904\\-100.6484\\35\\128.5077\\-102.6016\\35\\129.4936\\-104.5547\\35\\132.0243\\-108.4609\\35\\133.0857\\-110.4141\\35\\134.3675\\-112.3672\\35\\135.2405\\-114.3203\\35\\136.3782\\-116.2734\\35\\137.0049\\-118.2266\\35\\138.1566\\-120.1797\\35\\138.9286\\-122.1328\\35\\140.0328\\-124.0859\\35\\140.7813\\-126.0391\\35\\141.7593\\-127.9922\\35\\142.4583\\-129.9453\\35\\142.9572\\-131.8984\\35\\143.8779\\-133.8516\\35\\145.1317\\-137.7578\\35\\146.0732\\-139.7109\\35\\146.64\\-141.6641\\35\\148.0736\\-145.5703\\35\\148.8607\\-149.4766\\35\\149.9911\\-153.3828\\35\\150.5325\\-157.2891\\35\\150.882\\-159.2422\\35\\151.8755\\-163.1484\\35\\152.1295\\-165.1016\\35\\152.5236\\-169.0078\\35\\153.4947\\-174.8672\\35\\153.823\\-178.7734\\35\\154.0125\\-184.6328\\35\\154.0232\\-192.4453\\35\\153.823\\-200.2578\\35\\153.6021\\-204.1641\\35\\153.4151\\-206.1172\\35\\152.6345\\-211.9766\\35\\152.1752\\-215.8828\\35\\151.867\\-217.8359\\35\\150.7103\\-221.7422\\35\\149.9949\\-225.6484\\35\\149.2248\\-227.6016\\35\\147.9201\\-231.5078\\35\\146.7733\\-233.4609\\35\\145.7935\\-235.4141\\35\\143.5547\\-238.9505\\35\\143.264\\-239.3203\\35\\142.2721\\-241.2734\\35\\140.7314\\-243.2266\\35\\139.0728\\-245.1797\\35\\135.9883\\-249.0859\\35\\129.8828\\-255.1794\\35\\127.9031\\-256.8984\\35\\125.9766\\-258.4566\\35\\123.3225\\-260.8047\\35\\120.1172\\-263.3851\\35\\118.1641\\-264.6207\\35\\114.2578\\-267.4799\\35\\112.3047\\-268.6254\\35\\110.3516\\-269.6247\\35\\108.3984\\-270.7355\\35\\106.4453\\-271.6477\\35\\104.4922\\-272.7658\\35\\100.5859\\-274.5452\\35\\98.63281\\-275.3057\\35\\96.67969\\-275.8333\\35\\94.72656\\-276.6829\\35\\92.77344\\-277.287\\35\\90.82031\\-277.7833\\35\\88.86719\\-278.6098\\35\\84.96094\\-279.7226\\35\\83.00781\\-280.4879\\35\\81.05469\\-281.0478\\35\\77.14844\\-281.9423\\35\\75.19531\\-282.6727\\35\\71.28906\\-283.5229\\35\\67.38281\\-285\\35\\65.42969\\-285.5424\\35\\63.47656\\-286.431\\35\\59.57031\\-287.5824\\35\\57.61719\\-288.4264\\35\\55.66406\\-288.9692\\35\\53.71094\\-289.3407\\35\\49.80469\\-290.8277\\35\\47.85156\\-291.3133\\35\\45.89844\\-292.1213\\35\\43.94531\\-292.8063\\35\\41.99219\\-293.304\\35\\40.03906\\-294.0612\\35\\38.08594\\-294.6728\\35\\34.17969\\-295.3929\\35\\30.27344\\-296.6255\\35\\26.36719\\-297.2612\\35\\22.46094\\-298.4109\\35\\16.60156\\-299.2589\\35\\12.69531\\-299.9619\\35\\10.74219\\-300.224\\35\\8.789063\\-300.3759\\35\\4.882813\\-300.5389\\35\\0.9765625\\-300.601\\35\\-4.882813\\-300.5313\\35\\-8.789063\\-300.3555\\35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "303"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "144"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-12.69531\\-300.091\\37\\-16.60156\\-299.4311\\37\\-24.41406\\-298.4109\\37\\-28.32031\\-297.3873\\37\\-34.17969\\-296.5904\\37\\-36.13281\\-296.1324\\37\\-38.08594\\-295.5636\\37\\-43.94531\\-294.6648\\37\\-45.89844\\-294.2115\\37\\-47.85156\\-293.5436\\37\\-49.80469\\-293.0947\\37\\-51.75781\\-292.7449\\37\\-53.71094\\-292.1901\\37\\-55.66406\\-291.4567\\37\\-59.57031\\-290.722\\37\\-63.47656\\-289.4935\\37\\-67.38281\\-288.988\\37\\-69.33594\\-288.6269\\37\\-73.24219\\-287.5034\\37\\-77.14844\\-286.7379\\37\\-81.05469\\-285.5608\\37\\-84.96094\\-284.6795\\37\\-86.91406\\-283.8963\\37\\-88.86719\\-283.3947\\37\\-90.82031\\-283.0305\\37\\-92.77344\\-282.4198\\37\\-94.72656\\-281.6568\\37\\-96.67969\\-281.1507\\37\\-98.63281\\-280.3893\\37\\-100.5859\\-279.4534\\37\\-102.5391\\-278.6437\\37\\-104.4922\\-277.5039\\37\\-106.7096\\-276.4297\\37\\-110.3403\\-274.4766\\37\\-112.3047\\-273.2415\\37\\-114.2578\\-271.7365\\37\\-116.2109\\-270.4022\\37\\-118.1641\\-269.2166\\37\\-121.441\\-266.6641\\37\\-124.0234\\-264.411\\37\\-125.9766\\-262.9547\\37\\-128.4846\\-260.8047\\37\\-134.2879\\-254.9453\\37\\-135.8154\\-252.9922\\37\\-137.1824\\-251.0391\\37\\-140.3052\\-247.1328\\37\\-141.6016\\-245.0132\\37\\-143.7262\\-241.2734\\37\\-144.6076\\-239.3203\\37\\-145.7859\\-237.3672\\37\\-146.6453\\-235.4141\\37\\-147.6506\\-233.4609\\37\\-148.3191\\-231.5078\\37\\-148.8477\\-229.5547\\37\\-149.7085\\-227.6016\\37\\-150.2355\\-225.6484\\37\\-150.6076\\-223.6953\\37\\-151.9619\\-219.7891\\37\\-152.8719\\-215.8828\\37\\-153.532\\-213.9297\\37\\-153.9621\\-211.9766\\37\\-154.8626\\-206.1172\\37\\-155.5777\\-202.2109\\37\\-155.9639\\-198.3047\\37\\-156.1488\\-194.3984\\37\\-156.25\\-190.4922\\37\\-156.2847\\-186.5859\\37\\-156.2558\\-182.6797\\37\\-156.0364\\-176.8203\\37\\-155.7112\\-172.9141\\37\\-154.6913\\-167.0547\\37\\-154.1242\\-163.1484\\37\\-153.7816\\-161.1953\\37\\-152.6599\\-157.2891\\37\\-151.8409\\-153.3828\\37\\-151.0533\\-151.4297\\37\\-150.5168\\-149.4766\\37\\-150.1801\\-147.5234\\37\\-149.5602\\-145.5703\\37\\-148.7997\\-143.6172\\37\\-148.3191\\-141.6641\\37\\-147.6163\\-139.7109\\37\\-146.692\\-137.7578\\37\\-146.0049\\-135.8047\\37\\-144.9577\\-133.8516\\37\\-144.3028\\-131.8984\\37\\-143.3368\\-129.9453\\37\\-141.9936\\-126.0391\\37\\-140.925\\-124.0859\\37\\-140.1602\\-122.1328\\37\\-138.9146\\-120.1797\\37\\-138.0744\\-118.2266\\37\\-136.9105\\-116.2734\\37\\-136.1597\\-114.3203\\37\\-134.9696\\-112.3672\\37\\-133.9111\\-110.4141\\37\\-132.6015\\-108.4609\\37\\-131.1035\\-106.5078\\37\\-128.5087\\-102.6016\\37\\-126.7424\\-100.6484\\37\\-122.0703\\-95.9596\\37\\-120.1172\\-94.35424\\37\\-118.1641\\-93.20403\\37\\-114.2578\\-90.31813\\37\\-112.3047\\-89.42793\\37\\-110.3516\\-88.31186\\37\\-108.3984\\-87.61661\\37\\-106.4453\\-86.59267\\37\\-104.4922\\-85.92004\\37\\-100.5859\\-84.15475\\37\\-98.63281\\-83.53625\\37\\-96.67969\\-82.56866\\37\\-92.77344\\-81.33844\\37\\-90.82031\\-80.5863\\37\\-86.91406\\-79.559\\37\\-84.96094\\-78.87109\\37\\-83.00781\\-78.29534\\37\\-79.10156\\-77.4479\\37\\-75.19531\\-76.49437\\37\\-73.24219\\-76.24593\\37\\-67.38281\\-75.73307\\37\\-63.47656\\-74.97993\\37\\-59.57031\\-74.77315\\37\\-57.61719\\-74.73089\\37\\-51.75781\\-74.70279\\37\\-47.85156\\-74.85345\\37\\-45.89844\\-75.03436\\37\\-43.94531\\-75.47566\\37\\-41.99219\\-75.77822\\37\\-34.17969\\-76.52919\\37\\-32.22656\\-76.90147\\37\\-30.27344\\-77.41917\\37\\-26.36719\\-78.19318\\37\\-24.41406\\-78.63731\\37\\-20.50781\\-79.75766\\37\\-16.60156\\-80.70856\\37\\-14.64844\\-81.49498\\37\\-10.74219\\-82.58881\\37\\-8.789063\\-83.43226\\37\\-6.835938\\-83.83433\\37\\-4.882813\\-83.98369\\37\\-2.929688\\-83.9767\\37\\0.9765625\\-83.85767\\37\\2.929688\\-83.85767\\37\\6.835938\\-83.97498\\37\\8.789063\\-83.93266\\37\\10.74219\\-83.63998\\37\\12.69531\\-82.77151\\37\\14.64844\\-82.08131\\37\\16.60156\\-81.28125\\37\\18.55469\\-80.36257\\37\\20.50781\\-79.69612\\37\\22.46094\\-78.76733\\37\\24.41406\\-78.01766\\37\\26.36719\\-77.45683\\37\\28.32031\\-76.71606\\37\\30.27344\\-76.33685\\37\\36.13281\\-75.73967\\37\\38.08594\\-75.41679\\37\\40.03906\\-74.9375\\37\\43.94531\\-74.70279\\37\\49.80469\\-74.59562\\37\\51.75781\\-74.609\\37\\57.61719\\-74.79523\\37\\59.57031\\-74.89354\\37\\61.52344\\-75.13261\\37\\63.47656\\-75.58334\\37\\65.42969\\-75.7774\\37\\73.24219\\-76.36968\\37\\75.19531\\-76.63246\\37\\77.14844\\-76.9947\\37\\79.10156\\-77.50255\\37\\84.96094\\-78.58387\\37\\88.86719\\-79.65234\\37\\92.77344\\-80.41087\\37\\94.72656\\-80.96875\\37\\96.67969\\-81.74908\\37\\98.63281\\-82.16477\\37\\100.5859\\-82.76084\\37\\102.5391\\-83.71937\\37\\104.4922\\-84.39774\\37\\106.4453\\-85.42355\\37\\108.3984\\-86.1551\\37\\110.3516\\-87.11264\\37\\112.3047\\-87.95313\\37\\114.2456\\-88.92969\\37\\116.2109\\-90.13494\\37\\119.5938\\-92.83594\\37\\121.9383\\-94.78906\\37\\124.0234\\-97.29907\\37\\125.0473\\-98.69531\\37\\126.7641\\-100.6484\\37\\128.2263\\-102.6016\\37\\129.2471\\-104.5547\\37\\130.5703\\-106.5078\\37\\131.573\\-108.4609\\37\\131.8359\\-108.7745\\37\\133.7891\\-111.9965\\37\\134.0771\\-112.3672\\37\\135.0098\\-114.3203\\37\\136.1647\\-116.2734\\37\\136.8401\\-118.2266\\37\\137.8569\\-120.1797\\37\\138.7036\\-122.1328\\37\\139.7155\\-124.0859\\37\\141.3933\\-127.9922\\37\\142.3035\\-129.9453\\37\\142.7821\\-131.8984\\37\\144.3327\\-135.8047\\37\\144.8821\\-137.7578\\37\\145.8247\\-139.7109\\37\\147.0488\\-143.6172\\37\\147.8684\\-145.5703\\37\\148.3387\\-147.5234\\37\\148.6987\\-149.4766\\37\\149.1718\\-151.4297\\37\\149.8061\\-153.3828\\37\\150.1872\\-155.3359\\37\\150.6911\\-159.2422\\37\\151.0832\\-161.1953\\37\\151.649\\-163.1484\\37\\151.9809\\-165.1016\\37\\152.4131\\-169.0078\\37\\152.8965\\-172.9141\\37\\153.4288\\-176.8203\\37\\153.6243\\-178.7734\\37\\153.8028\\-182.6797\\37\\153.8728\\-188.5391\\37\\153.8483\\-192.4453\\37\\153.7457\\-196.3516\\37\\153.5794\\-200.2578\\37\\153.4288\\-202.2109\\37\\152.2174\\-213.9297\\37\\151.9661\\-215.8828\\37\\151.5416\\-217.8359\\37\\150.8916\\-219.7891\\37\\150.2173\\-223.6953\\37\\149.7228\\-225.6484\\37\\148.906\\-227.6016\\37\\148.372\\-229.5547\\37\\147.5886\\-231.5078\\37\\144.2932\\-237.3672\\37\\142.9452\\-239.3203\\37\\141.9705\\-241.2734\\37\\140.4665\\-243.2266\\37\\137.0157\\-247.1328\\37\\135.7422\\-248.8156\\37\\131.5207\\-252.9922\\37\\129.8828\\-254.6833\\37\\127.3837\\-256.8984\\37\\125.9766\\-258.0514\\37\\122.0703\\-261.5421\\37\\120.1172\\-262.9791\\37\\118.1641\\-264.1345\\37\\117.4837\\-264.7109\\37\\114.2578\\-267.0844\\37\\112.3047\\-268.1155\\37\\110.3516\\-269.3303\\37\\108.3984\\-270.1095\\37\\106.4453\\-271.278\\37\\104.4922\\-272.0575\\37\\102.5391\\-273.1991\\37\\100.5859\\-273.9089\\37\\98.63281\\-274.8931\\37\\94.72656\\-276.0181\\37\\92.77344\\-276.8748\\37\\88.86719\\-277.8978\\37\\86.91406\\-278.7672\\37\\83.00781\\-279.8572\\37\\81.05469\\-280.6503\\37\\77.14844\\-281.5986\\37\\75.19531\\-282.2024\\37\\73.24219\\-282.9128\\37\\71.28906\\-283.3281\\37\\69.33594\\-283.8583\\37\\67.38281\\-284.7897\\37\\65.42969\\-285.3545\\37\\61.52344\\-286.9185\\37\\59.57031\\-287.4518\\37\\57.61719\\-288.2771\\37\\55.66406\\-288.9114\\37\\53.71094\\-289.2907\\37\\51.75781\\-289.9275\\37\\49.80469\\-290.7948\\37\\47.85156\\-291.2827\\37\\43.94531\\-292.8187\\37\\41.99219\\-293.322\\37\\40.03906\\-294.1047\\37\\38.08594\\-294.7045\\37\\34.17969\\-295.4312\\37\\32.22656\\-296.1048\\37\\30.27344\\-296.6665\\37\\26.36719\\-297.2952\\37\\22.46094\\-298.4682\\37\\18.55469\\-299.0152\\37\\14.64844\\-299.6494\\37\\12.69531\\-300.0542\\37\\10.74219\\-300.2883\\37\\6.835938\\-300.5126\\37\\2.929688\\-300.6136\\37\\-0.9765625\\-300.6385\\37\\-4.882813\\-300.5647\\37\\-8.789063\\-300.4244\\37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "287"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "145"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-299.9048\\39\\-18.55469\\-299.2071\\39\\-24.41406\\-298.436\\39\\-28.32031\\-297.4048\\39\\-30.27344\\-297.0909\\39\\-34.17969\\-296.5983\\39\\-38.08594\\-295.5396\\39\\-43.94531\\-294.6331\\39\\-45.89844\\-294.1317\\39\\-47.85156\\-293.4506\\39\\-51.75781\\-292.6503\\39\\-53.71094\\-291.9462\\39\\-55.66406\\-291.3402\\39\\-59.57031\\-290.5691\\39\\-61.52344\\-289.7484\\39\\-63.47656\\-289.3238\\39\\-67.38281\\-288.8425\\39\\-69.33594\\-288.3854\\39\\-71.28906\\-287.7432\\39\\-73.24219\\-287.2871\\39\\-75.19531\\-286.929\\39\\-77.14844\\-286.4428\\39\\-79.10156\\-285.7311\\39\\-83.00781\\-284.8879\\39\\-86.91406\\-283.5734\\39\\-90.82031\\-282.7773\\39\\-92.77344\\-281.9925\\39\\-96.67969\\-280.8914\\39\\-98.63281\\-279.9285\\39\\-100.5859\\-279.1855\\39\\-102.5391\\-278.1569\\39\\-104.4922\\-277.2842\\39\\-106.4453\\-276.1837\\39\\-108.3984\\-275.3426\\39\\-110.3516\\-274.0956\\39\\-112.3047\\-272.9596\\39\\-112.824\\-272.5234\\39\\-115.6494\\-270.5703\\39\\-116.2109\\-270.082\\39\\-118.1641\\-268.9228\\39\\-121.0938\\-266.6641\\39\\-124.0234\\-264.0668\\39\\-127.9297\\-260.8612\\39\\-131.776\\-256.8984\\39\\-133.7972\\-254.9453\\39\\-137.6953\\-250.1176\\39\\-140.0099\\-247.1328\\39\\-141.1393\\-245.1797\\39\\-142.4143\\-243.2266\\39\\-145.3662\\-237.3672\\39\\-146.4304\\-235.4141\\39\\-148.1695\\-231.5078\\39\\-148.6832\\-229.5547\\39\\-150.0712\\-225.6484\\39\\-150.9543\\-221.7422\\39\\-151.7342\\-219.7891\\39\\-152.6345\\-215.8828\\39\\-153.7631\\-211.9766\\39\\-154.0896\\-210.0234\\39\\-154.9341\\-204.1641\\39\\-155.5873\\-200.2578\\39\\-155.7781\\-198.3047\\39\\-155.9966\\-194.3984\\39\\-156.125\\-190.4922\\39\\-156.1553\\-186.5859\\39\\-156.125\\-182.6797\\39\\-155.9842\\-178.7734\\39\\-155.6871\\-174.8672\\39\\-155.4436\\-172.9141\\39\\-155.0605\\-170.9609\\39\\-154.4655\\-167.0547\\39\\-153.9243\\-163.1484\\39\\-153.4947\\-161.1953\\39\\-152.8474\\-159.2422\\39\\-152.027\\-155.3359\\39\\-151.448\\-153.3828\\39\\-150.7463\\-151.4297\\39\\-149.9414\\-147.5234\\39\\-149.1681\\-145.5703\\39\\-148.069\\-141.6641\\39\\-147.1749\\-139.7109\\39\\-145.6026\\-135.8047\\39\\-144.6763\\-133.8516\\39\\-144.0365\\-131.8984\\39\\-143.0143\\-129.9453\\39\\-142.4744\\-127.9922\\39\\-141.6567\\-126.0391\\39\\-139.797\\-122.1328\\39\\-138.6773\\-120.1797\\39\\-136.7247\\-116.2734\\39\\-135.8613\\-114.3203\\39\\-134.7239\\-112.3672\\39\\-132.3085\\-108.4609\\39\\-129.3772\\-104.5547\\39\\-128.1834\\-102.6016\\39\\-126.3873\\-100.6484\\39\\-122.0703\\-96.28981\\39\\-120.0266\\-94.78906\\39\\-118.1641\\-93.52568\\39\\-116.2109\\-91.98872\\39\\-114.2578\\-90.67759\\39\\-112.3047\\-89.68514\\39\\-110.3516\\-88.5897\\39\\-108.3984\\-87.83569\\39\\-106.4453\\-86.84686\\39\\-102.5391\\-85.27662\\39\\-100.5859\\-84.36678\\39\\-98.63281\\-83.73911\\39\\-96.67969\\-82.80067\\39\\-94.72656\\-82.10574\\39\\-92.77344\\-81.59508\\39\\-90.82031\\-80.73078\\39\\-86.91406\\-79.73261\\39\\-83.00781\\-78.51497\\39\\-81.05469\\-78.03056\\39\\-79.10156\\-77.64713\\39\\-75.19531\\-76.61849\\39\\-71.28906\\-76.1597\\39\\-65.42969\\-75.67634\\39\\-63.47656\\-75.41679\\39\\-61.52344\\-75.02181\\39\\-59.57031\\-74.89923\\39\\-55.66406\\-74.7841\\39\\-51.75781\\-74.78055\\39\\-47.85156\\-75.00341\\39\\-45.89844\\-75.49068\\39\\-43.94531\\-75.73599\\39\\-36.13281\\-76.44744\\39\\-34.17969\\-76.68709\\39\\-30.27344\\-77.61838\\39\\-26.36719\\-78.36149\\39\\-24.41406\\-78.81529\\39\\-22.46094\\-79.44206\\39\\-18.55469\\-80.3275\\39\\-16.60156\\-80.85825\\39\\-14.64844\\-81.68187\\39\\-10.74219\\-82.62642\\39\\-8.789063\\-83.39354\\39\\-6.835938\\-83.70327\\39\\-4.882813\\-83.72738\\39\\0.9765625\\-83.39826\\39\\4.882813\\-83.42477\\39\\8.789063\\-83.62003\\39\\10.74219\\-83.44855\\39\\12.69531\\-82.73283\\39\\16.60156\\-81.51212\\39\\18.55469\\-80.49399\\39\\20.50781\\-79.86795\\39\\22.46094\\-78.94027\\39\\24.41406\\-78.16324\\39\\26.36719\\-77.64713\\39\\28.32031\\-76.94645\\39\\30.27344\\-76.44096\\39\\32.22656\\-76.21098\\39\\38.08594\\-75.67634\\39\\40.03906\\-75.19785\\39\\41.99219\\-74.90625\\39\\47.85156\\-74.75868\\39\\51.75781\\-74.75868\\39\\55.66406\\-74.89641\\39\\57.61719\\-75.07064\\39\\61.52344\\-75.61724\\39\\69.33594\\-76.18327\\39\\73.24219\\-76.55779\\39\\76.71067\\-77.21094\\39\\79.10156\\-77.73631\\39\\83.00781\\-78.37943\\39\\84.96094\\-78.82578\\39\\86.91406\\-79.44411\\39\\92.77344\\-80.5732\\39\\96.67969\\-81.89233\\39\\98.63281\\-82.32424\\39\\102.5391\\-83.90493\\39\\104.4922\\-84.616\\39\\106.4453\\-85.66431\\39\\108.3984\\-86.36772\\39\\110.3516\\-87.41138\\39\\112.3047\\-88.12215\\39\\114.2578\\-89.31895\\39\\116.2109\\-90.40791\\39\\119.2062\\-92.83594\\39\\121.5025\\-94.78906\\39\\122.0703\\-95.36578\\39\\125.9766\\-100.0744\\39\\126.4951\\-100.6484\\39\\127.9297\\-102.6951\\39\\130.3223\\-106.5078\\39\\131.2713\\-108.4609\\39\\131.8359\\-109.1955\\39\\133.7891\\-112.4865\\39\\135.8739\\-116.2734\\39\\137.4758\\-120.1797\\39\\138.5135\\-122.1328\\39\\139.3704\\-124.0859\\39\\140.4001\\-126.0391\\39\\141.1133\\-127.9922\\39\\142.1186\\-129.9453\\39\\143.2172\\-133.8516\\39\\144.1525\\-135.8047\\39\\144.6886\\-137.7578\\39\\146.2668\\-141.6641\\39\\146.808\\-143.6172\\39\\147.614\\-145.5703\\39\\148.1771\\-147.5234\\39\\148.9597\\-151.4297\\39\\149.5743\\-153.3828\\39\\150.0423\\-155.3359\\39\\150.5497\\-159.2422\\39\\150.8634\\-161.1953\\39\\151.8111\\-165.1016\\39\\152.0934\\-167.0547\\39\\152.6894\\-172.9141\\39\\153.343\\-178.7734\\39\\153.4947\\-180.7266\\39\\153.6351\\-184.6328\\39\\153.6668\\-188.5391\\39\\153.6243\\-192.4453\\39\\153.4689\\-196.3516\\39\\153.2241\\-200.2578\\39\\152.5866\\-208.0703\\39\\152.0165\\-213.9297\\39\\151.6927\\-215.8828\\39\\151.1195\\-217.8359\\39\\150.6606\\-219.7891\\39\\150.0213\\-223.6953\\39\\148.6863\\-227.6016\\39\\148.1506\\-229.5547\\39\\146.2294\\-233.4609\\39\\144.978\\-235.4141\\39\\144.0364\\-237.3672\\39\\141.6016\\-241.1819\\39\\140.1505\\-243.2266\\39\\139.6484\\-243.7469\\39\\135.0222\\-249.0859\\39\\130.9998\\-252.9922\\39\\129.8828\\-254.2129\\39\\126.9458\\-256.8984\\39\\124.6533\\-258.8516\\39\\122.0703\\-261.1764\\39\\120.1172\\-262.3969\\39\\116.2109\\-265.2843\\39\\114.0685\\-266.6641\\39\\110.7845\\-268.6172\\39\\110.3516\\-268.9353\\39\\108.3984\\-269.7289\\39\\106.4453\\-270.7628\\39\\104.4922\\-271.6072\\39\\102.5391\\-272.6336\\39\\98.63281\\-274.2289\\39\\96.67969\\-275.1212\\39\\94.72656\\-275.6148\\39\\92.77344\\-276.2237\\39\\90.82031\\-277.0255\\39\\88.86719\\-277.4844\\39\\86.91406\\-278.0785\\39\\84.96094\\-278.9096\\39\\81.05469\\-280.0423\\39\\79.10156\\-280.8211\\39\\75.19531\\-281.7908\\39\\73.24219\\-282.5857\\39\\69.33594\\-283.6092\\39\\67.38281\\-284.5371\\39\\63.47656\\-285.8922\\39\\61.52344\\-286.7933\\39\\59.57031\\-287.3365\\39\\55.66406\\-288.8389\\39\\53.71094\\-289.2552\\39\\51.75781\\-289.8319\\39\\49.80469\\-290.7613\\39\\47.85156\\-291.2663\\39\\43.94531\\-292.8165\\39\\41.99219\\-293.333\\39\\40.03906\\-294.1326\\39\\38.08594\\-294.7121\\39\\34.17969\\-295.45\\39\\32.22656\\-296.1459\\39\\30.27344\\-296.692\\39\\26.36719\\-297.3386\\39\\22.46094\\-298.4914\\39\\16.60156\\-299.3523\\39\\12.69531\\-300.1029\\39\\10.74219\\-300.3376\\39\\4.882813\\-300.6136\\39\\-0.9765625\\-300.6782\\39\\-4.882813\\-300.6094\\39\\-8.789063\\-300.4633\\39\\-12.69531\\-300.182\\39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "290"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "146"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-299.9893\\41\\-18.55469\\-299.2478\\41\\-24.41406\\-298.476\\41\\-28.32031\\-297.4168\\41\\-30.27344\\-297.0968\\41\\-34.17969\\-296.5824\\41\\-38.08594\\-295.5158\\41\\-43.94531\\-294.601\\41\\-47.85156\\-293.3733\\41\\-51.75781\\-292.5515\\41\\-53.71094\\-291.7598\\41\\-55.66406\\-291.2393\\41\\-57.61719\\-290.8699\\41\\-59.57031\\-290.3758\\41\\-61.52344\\-289.5355\\41\\-63.47656\\-289.2186\\41\\-65.42969\\-289.0185\\41\\-67.38281\\-288.6817\\41\\-71.28906\\-287.4875\\41\\-75.19531\\-286.7233\\41\\-77.14844\\-286.0184\\41\\-79.10156\\-285.4445\\41\\-83.00781\\-284.5677\\41\\-84.96094\\-283.8001\\41\\-86.91406\\-283.3549\\41\\-88.86719\\-283.023\\41\\-90.82031\\-282.4198\\41\\-92.77344\\-281.6916\\41\\-94.72656\\-281.1869\\41\\-96.67969\\-280.5645\\41\\-98.63281\\-279.5938\\41\\-100.5859\\-278.9191\\41\\-102.5391\\-277.7702\\41\\-104.4922\\-277.0416\\41\\-106.4453\\-275.8633\\41\\-108.3984\\-275.1039\\41\\-115.2836\\-270.5703\\41\\-116.2109\\-269.8247\\41\\-118.0725\\-268.6172\\41\\-120.1172\\-267.1494\\41\\-123.0395\\-264.7109\\41\\-127.5034\\-260.8047\\41\\-131.3365\\-256.8984\\41\\-133.7891\\-254.4532\\41\\-136.6726\\-251.0391\\41\\-138.1805\\-249.0859\\41\\-139.6484\\-246.9984\\41\\-141.6016\\-244.0239\\41\\-142.1928\\-243.2266\\41\\-143.0129\\-241.2734\\41\\-144.2195\\-239.3203\\41\\-145.0357\\-237.3672\\41\\-146.2195\\-235.4141\\41\\-146.9789\\-233.4609\\41\\-147.9839\\-231.5078\\41\\-149.0839\\-227.6016\\41\\-149.889\\-225.6484\\41\\-150.7221\\-221.7422\\41\\-151.4338\\-219.7891\\41\\-152.0412\\-217.8359\\41\\-152.8719\\-213.9297\\41\\-153.5073\\-211.9766\\41\\-153.9397\\-210.0234\\41\\-154.7181\\-204.1641\\41\\-155.5494\\-198.3047\\41\\-155.8415\\-194.3984\\41\\-156.0195\\-188.5391\\41\\-155.9719\\-182.6797\\41\\-155.8008\\-178.7734\\41\\-155.4436\\-174.8672\\41\\-154.7917\\-170.9609\\41\\-154.0132\\-165.1016\\41\\-153.6691\\-163.1484\\41\\-152.5745\\-159.2422\\41\\-151.7639\\-155.3359\\41\\-151.0189\\-153.3828\\41\\-150.5182\\-151.4297\\41\\-150.173\\-149.4766\\41\\-149.6169\\-147.5234\\41\\-148.8664\\-145.5703\\41\\-148.3665\\-143.6172\\41\\-147.7567\\-141.6641\\41\\-146.804\\-139.7109\\41\\-146.1457\\-137.7578\\41\\-145.1317\\-135.8047\\41\\-144.4658\\-133.8516\\41\\-143.6974\\-131.8984\\41\\-142.7917\\-129.9453\\41\\-142.2714\\-127.9922\\41\\-141.2669\\-126.0391\\41\\-140.4455\\-124.0859\\41\\-139.3527\\-122.1328\\41\\-138.4666\\-120.1797\\41\\-137.3175\\-118.2266\\41\\-136.5714\\-116.2734\\41\\-134.4954\\-112.3672\\41\\-133.132\\-110.4141\\41\\-131.9453\\-108.4609\\41\\-130.6253\\-106.5078\\41\\-127.9297\\-102.9271\\41\\-125.9766\\-100.71\\41\\-122.0703\\-96.71875\\41\\-120.1172\\-95.28413\\41\\-116.2109\\-92.24303\\41\\-112.3047\\-89.92456\\41\\-110.3516\\-88.87225\\41\\-106.4453\\-87.15625\\41\\-104.4922\\-86.21836\\41\\-102.5391\\-85.51172\\41\\-100.5859\\-84.57684\\41\\-98.63281\\-83.91629\\41\\-94.72656\\-82.2324\\41\\-92.77344\\-81.74039\\41\\-90.82031\\-80.91279\\41\\-88.86719\\-80.35369\\41\\-84.96094\\-79.36689\\41\\-83.00781\\-78.70555\\41\\-81.05469\\-78.17594\\41\\-79.10156\\-77.82356\\41\\-75.19531\\-76.82159\\41\\-73.24219\\-76.44536\\41\\-71.28906\\-76.24005\\41\\-63.47656\\-75.65245\\41\\-61.52344\\-75.46915\\41\\-59.57031\\-75.02181\\41\\-53.71094\\-74.875\\41\\-49.80469\\-75.00126\\41\\-47.85156\\-75.56658\\41\\-41.99219\\-76.00214\\41\\-36.13281\\-76.57047\\41\\-34.17969\\-76.92133\\41\\-32.22656\\-77.4034\\41\\-26.36719\\-78.51106\\41\\-22.46094\\-79.60916\\41\\-18.55469\\-80.46407\\41\\-16.60156\\-81.02985\\41\\-14.64844\\-81.81291\\41\\-10.74219\\-82.66456\\41\\-8.789063\\-83.28165\\41\\-6.835938\\-83.49921\\41\\-4.882813\\-83.38421\\41\\-0.9765625\\-82.87807\\41\\0.9765625\\-82.73283\\41\\4.882813\\-82.74718\\41\\8.789063\\-83.15836\\41\\10.74219\\-83.111\\41\\16.60156\\-81.65294\\41\\18.55469\\-80.59237\\41\\20.50781\\-79.97375\\41\\24.41406\\-78.40201\\41\\30.27344\\-76.56208\\41\\32.22656\\-76.31625\\41\\40.03906\\-75.60609\\41\\43.94531\\-75.32869\\41\\45.89844\\-74.97533\\41\\51.75781\\-74.93491\\41\\53.71094\\-75.00553\\41\\55.66406\\-75.44276\\41\\65.42969\\-76.06102\\41\\69.33594\\-76.34352\\41\\71.28906\\-76.54111\\41\\73.24219\\-76.85399\\41\\77.14844\\-77.62582\\41\\81.05469\\-78.23801\\41\\83.00781\\-78.62666\\41\\86.91406\\-79.69141\\41\\90.82031\\-80.35631\\41\\92.77344\\-80.7797\\41\\94.72656\\-81.60547\\41\\98.63281\\-82.50224\\41\\100.5859\\-83.40912\\41\\102.5391\\-84.09625\\41\\104.4922\\-84.90046\\41\\106.4453\\-85.85638\\41\\108.3984\\-86.58192\\41\\110.3516\\-87.62981\\41\\112.3047\\-88.30284\\41\\114.2578\\-89.59103\\41\\116.2109\\-90.77184\\41\\118.1641\\-92.2077\\41\\121.1999\\-94.78906\\41\\123.0341\\-96.74219\\41\\126.1644\\-100.6484\\41\\128.8635\\-104.5547\\41\\130.0469\\-106.5078\\41\\131.046\\-108.4609\\41\\132.3556\\-110.4141\\41\\133.3782\\-112.3672\\41\\134.6048\\-114.3203\\41\\136.5519\\-118.2266\\41\\137.2171\\-120.1797\\41\\138.3158\\-122.1328\\41\\139.0778\\-124.0859\\41\\140.2157\\-126.0391\\41\\140.895\\-127.9922\\41\\141.8973\\-129.9453\\41\\142.5062\\-131.8984\\41\\142.9938\\-133.8516\\41\\143.9466\\-135.8047\\41\\145.1317\\-139.7109\\41\\146.0634\\-141.6641\\41\\146.6201\\-143.6172\\41\\148.0076\\-147.5234\\41\\148.799\\-151.4297\\41\\149.2844\\-153.3828\\41\\149.8756\\-155.3359\\41\\150.2307\\-157.2891\\41\\150.6951\\-161.1953\\41\\151.0599\\-163.1484\\41\\151.6029\\-165.1016\\41\\151.94\\-167.0547\\41\\152.3582\\-170.9609\\41\\153.0461\\-178.7734\\41\\153.3579\\-184.6328\\41\\153.3725\\-188.5391\\41\\153.3279\\-192.4453\\41\\153.1964\\-194.3984\\41\\152.9062\\-200.2578\\41\\152.6638\\-204.1641\\41\\152.2326\\-210.0234\\41\\151.7736\\-213.9297\\41\\150.8206\\-217.8359\\41\\150.2057\\-221.7422\\41\\149.7608\\-223.6953\\41\\149.0193\\-225.6484\\41\\147.9102\\-229.5547\\41\\146.8395\\-231.5078\\41\\145.9782\\-233.4609\\41\\144.7115\\-235.4141\\41\\143.7124\\-237.3672\\41\\142.5472\\-239.3203\\41\\139.7199\\-243.2266\\41\\136.4648\\-247.1328\\41\\134.6762\\-249.0859\\41\\130.6728\\-252.9922\\41\\129.8828\\-253.8595\\41\\127.9297\\-255.7033\\41\\121.8985\\-260.8047\\41\\120.1172\\-262.0379\\41\\118.1641\\-263.5115\\41\\114.2578\\-266.0234\\41\\112.3047\\-267.3599\\41\\110.3516\\-268.3455\\41\\108.3984\\-269.4373\\41\\106.4453\\-270.0754\\41\\104.4922\\-271.2155\\41\\102.5391\\-271.9594\\41\\100.5859\\-273.0608\\41\\98.63281\\-273.717\\41\\96.67969\\-274.6355\\41\\94.72656\\-275.3076\\41\\92.77344\\-275.7679\\41\\88.86719\\-277.1707\\41\\86.91406\\-277.6188\\41\\83.00781\\-279.0866\\41\\81.05469\\-279.6021\\41\\77.14844\\-281.0403\\41\\75.19531\\-281.5187\\41\\73.24219\\-282.1441\\41\\71.28906\\-282.9464\\41\\69.33594\\-283.4141\\41\\67.38281\\-284.1724\\41\\65.42969\\-285.0308\\41\\63.47656\\-285.6829\\41\\61.52344\\-286.669\\41\\59.57031\\-287.2329\\41\\57.61719\\-287.9487\\41\\55.66406\\-288.7762\\41\\53.71094\\-289.2197\\41\\51.75781\\-289.7831\\41\\49.80469\\-290.7259\\41\\47.85156\\-291.2502\\41\\43.94531\\-292.8125\\41\\41.99219\\-293.333\\41\\40.03906\\-294.1326\\41\\38.08594\\-294.724\\41\\34.17969\\-295.45\\41\\32.22656\\-296.1739\\41\\30.27344\\-296.7126\\41\\26.36719\\-297.3636\\41\\24.41406\\-298.0226\\41\\22.46094\\-298.5284\\41\\16.60156\\-299.4066\\41\\12.69531\\-300.1602\\41\\10.74219\\-300.3672\\41\\6.835938\\-300.5871\\41\\2.929688\\-300.6987\\41\\-2.929688\\-300.6987\\41\\-8.789063\\-300.5051\\41\\-12.69531\\-300.2365\\41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "286"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "147"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-300.0542\\43\\-18.55469\\-299.31\\43\\-24.41406\\-298.5138\\43\\-26.36719\\-298.0361\\43\\-28.32031\\-297.4441\\43\\-30.27344\\-297.1132\\43\\-34.17969\\-296.5824\\43\\-38.08594\\-295.4956\\43\\-43.94531\\-294.5632\\43\\-47.85156\\-293.3264\\43\\-51.75781\\-292.4514\\43\\-53.71094\\-291.624\\43\\-57.61719\\-290.7648\\43\\-61.52344\\-289.4287\\43\\-65.42969\\-288.8945\\43\\-67.38281\\-288.4854\\43\\-69.33594\\-287.778\\43\\-71.28906\\-287.2981\\43\\-75.19531\\-286.4544\\43\\-77.14844\\-285.6717\\43\\-81.05469\\-284.7915\\43\\-83.00781\\-284.0856\\43\\-84.96094\\-283.5156\\43\\-88.86719\\-282.774\\43\\-90.82031\\-282.007\\43\\-94.72656\\-280.9616\\43\\-96.67969\\-280.1041\\43\\-100.5859\\-278.5444\\43\\-102.5391\\-277.4945\\43\\-104.4922\\-276.734\\43\\-106.4453\\-275.6522\\43\\-108.3984\\-274.8349\\43\\-110.3516\\-273.5407\\43\\-112.3047\\-272.1473\\43\\-114.2578\\-270.9941\\43\\-120.1172\\-266.8127\\43\\-122.7031\\-264.7109\\43\\-125.9766\\-261.8589\\43\\-127.9297\\-260.0603\\43\\-131.8359\\-256.1158\\43\\-134.753\\-252.9922\\43\\-136.368\\-251.0391\\43\\-137.7908\\-249.0859\\43\\-139.0788\\-247.1328\\43\\-140.5793\\-245.1797\\43\\-141.9149\\-243.2266\\43\\-142.7795\\-241.2734\\43\\-143.9938\\-239.3203\\43\\-144.7885\\-237.3672\\43\\-145.9872\\-235.4141\\43\\-146.7411\\-233.4609\\43\\-147.7449\\-231.5078\\43\\-148.3846\\-229.5547\\43\\-148.857\\-227.6016\\43\\-149.6582\\-225.6484\\43\\-150.2057\\-223.6953\\43\\-150.5692\\-221.7422\\43\\-151.0812\\-219.7891\\43\\-151.8497\\-217.8359\\43\\-152.6274\\-213.9297\\43\\-153.7604\\-210.0234\\43\\-154.0661\\-208.0703\\43\\-154.7688\\-202.2109\\43\\-155.5104\\-196.3516\\43\\-155.7216\\-192.4453\\43\\-155.8415\\-188.5391\\43\\-155.7878\\-182.6797\\43\\-155.5636\\-178.7734\\43\\-155.387\\-176.8203\\43\\-154.8181\\-172.9141\\43\\-154.3353\\-169.0078\\43\\-153.7997\\-165.1016\\43\\-152.7401\\-161.1953\\43\\-151.9694\\-157.2891\\43\\-150.7181\\-153.3828\\43\\-149.9509\\-149.4766\\43\\-149.2112\\-147.5234\\43\\-148.6291\\-145.5703\\43\\-148.1542\\-143.6172\\43\\-146.528\\-139.7109\\43\\-145.8506\\-137.7578\\43\\-144.8357\\-135.8047\\43\\-144.2644\\-133.8516\\43\\-143.2957\\-131.8984\\43\\-142.0288\\-127.9922\\43\\-140.9605\\-126.0391\\43\\-140.2057\\-124.0859\\43\\-139.0072\\-122.1328\\43\\-138.2285\\-120.1797\\43\\-137.0727\\-118.2266\\43\\-136.3911\\-116.2734\\43\\-135.2004\\-114.3203\\43\\-134.2475\\-112.3672\\43\\-133.7891\\-111.7962\\43\\-131.8359\\-108.8959\\43\\-131.4497\\-108.4609\\43\\-130.2921\\-106.5078\\43\\-128.8935\\-104.5547\\43\\-127.2626\\-102.6016\\43\\-123.5098\\-98.69531\\43\\-121.4919\\-96.74219\\43\\-118.1641\\-93.99818\\43\\-116.2109\\-92.64206\\43\\-112.3047\\-90.22977\\43\\-108.3984\\-88.13184\\43\\-106.4453\\-87.44728\\43\\-104.4922\\-86.43194\\43\\-102.5391\\-85.7588\\43\\-100.5859\\-84.84905\\43\\-96.67969\\-83.32349\\43\\-94.72656\\-82.37189\\43\\-92.77344\\-81.86983\\43\\-88.86719\\-80.46407\\43\\-84.96094\\-79.54771\\43\\-83.00781\\-78.88223\\43\\-81.05469\\-78.35409\\43\\-77.14844\\-77.55206\\43\\-73.24219\\-76.54111\\43\\-71.28906\\-76.30994\\43\\-63.47656\\-75.77146\\43\\-59.57031\\-75.5621\\43\\-55.66406\\-75.18003\\43\\-51.75781\\-75.34515\\43\\-47.85156\\-75.79107\\43\\-43.94531\\-75.96749\\43\\-40.03906\\-76.30455\\43\\-36.13281\\-76.72926\\43\\-32.22656\\-77.6157\\43\\-28.32031\\-78.27782\\43\\-26.36719\\-78.71195\\43\\-24.41406\\-79.29478\\43\\-22.46094\\-79.77129\\43\\-18.55469\\-80.57682\\43\\-14.64844\\-81.89721\\43\\-12.69531\\-82.26857\\43\\-8.789063\\-83.12544\\43\\-6.835938\\-83.17027\\43\\-2.929688\\-82.63255\\43\\-0.9765625\\-82.44711\\43\\0.9765625\\-82.37096\\43\\4.882813\\-82.37189\\43\\8.789063\\-82.59213\\43\\10.74219\\-82.6508\\43\\12.69531\\-82.44826\\43\\16.60156\\-81.67424\\43\\18.55469\\-80.67017\\43\\22.46094\\-79.41006\\43\\24.41406\\-78.5949\\43\\30.27344\\-76.8035\\43\\32.22656\\-76.42125\\43\\38.08594\\-75.9231\\43\\41.99219\\-75.71004\\43\\47.85156\\-75.5338\\43\\51.75781\\-75.5338\\43\\61.52344\\-75.95788\\43\\65.42969\\-76.19971\\43\\69.33594\\-76.52552\\43\\71.28906\\-76.79803\\43\\75.19531\\-77.57715\\43\\79.10156\\-78.1544\\43\\83.00781\\-78.90498\\43\\84.96094\\-79.49666\\43\\88.86719\\-80.232\\43\\90.82031\\-80.51083\\43\\92.77344\\-81.06022\\43\\94.72656\\-81.78701\\43\\96.67969\\-82.18961\\43\\98.63281\\-82.74709\\43\\100.5859\\-83.65982\\43\\102.5391\\-84.28821\\43\\104.4922\\-85.28718\\43\\108.3984\\-86.8913\\43\\110.3516\\-87.80914\\43\\112.3047\\-88.57784\\43\\114.2578\\-89.79581\\43\\118.1641\\-92.50092\\43\\120.9491\\-94.78906\\43\\122.8476\\-96.74219\\43\\124.3896\\-98.69531\\43\\125.9766\\-100.9117\\43\\128.6776\\-104.5547\\43\\129.7017\\-106.5078\\43\\132.1065\\-110.4141\\43\\133.1043\\-112.3672\\43\\134.4257\\-114.3203\\43\\135.2705\\-116.2734\\43\\136.3911\\-118.2266\\43\\137.0295\\-120.1797\\43\\138.1392\\-122.1328\\43\\138.847\\-124.0859\\43\\139.9805\\-126.0391\\43\\140.7221\\-127.9922\\43\\142.3719\\-131.8984\\43\\142.7772\\-133.8516\\43\\143.6393\\-135.8047\\43\\144.3925\\-137.7578\\43\\144.8982\\-139.7109\\43\\145.8333\\-141.6641\\43\\147.0588\\-145.5703\\43\\147.832\\-147.5234\\43\\148.2873\\-149.4766\\43\\149.0558\\-153.3828\\43\\149.6817\\-155.3359\\43\\150.0995\\-157.2891\\43\\150.5543\\-161.1953\\43\\150.8451\\-163.1484\\43\\151.7541\\-167.0547\\43\\152.0335\\-169.0078\\43\\152.3826\\-172.9141\\43\\152.7967\\-178.7734\\43\\152.9775\\-182.6797\\43\\153.0442\\-186.5859\\43\\152.9883\\-192.4453\\43\\152.6675\\-200.2578\\43\\152.4627\\-204.1641\\43\\152.0503\\-210.0234\\43\\151.8202\\-211.9766\\43\\151.448\\-213.9297\\43\\150.9468\\-215.8828\\43\\150.0126\\-221.7422\\43\\148.7651\\-225.6484\\43\\148.2971\\-227.6016\\43\\147.4609\\-229.7412\\43\\145.6171\\-233.4609\\43\\143.5547\\-237.0321\\43\\143.2897\\-237.3672\\43\\142.3261\\-239.3203\\43\\140.877\\-241.2734\\43\\137.6035\\-245.1797\\43\\136.1576\\-247.1328\\43\\134.3563\\-249.0859\\43\\131.8359\\-251.4881\\43\\129.8828\\-253.5066\\43\\127.9297\\-255.3785\\43\\125.9766\\-256.84\\43\\124.0234\\-258.4595\\43\\121.334\\-260.8047\\43\\120.1172\\-261.7629\\43\\118.1641\\-263.1295\\43\\116.2109\\-264.2121\\43\\115.6283\\-264.7109\\43\\112.3047\\-266.948\\43\\110.3516\\-267.8909\\43\\108.3984\\-269.0566\\43\\106.4453\\-269.7375\\43\\104.4922\\-270.6951\\43\\100.5859\\-272.3986\\43\\98.63281\\-273.3299\\43\\96.67969\\-274.0174\\43\\94.72656\\-274.9419\\43\\90.82031\\-275.9482\\43\\88.86719\\-276.7691\\43\\84.96094\\-277.8066\\43\\83.00781\\-278.6888\\43\\79.10156\\-279.863\\43\\77.14844\\-280.7535\\43\\73.24219\\-281.8452\\43\\71.28906\\-282.7223\\43\\67.38281\\-283.8718\\43\\65.42969\\-284.8877\\43\\63.47656\\-285.5089\\43\\61.52344\\-286.5208\\43\\57.61719\\-287.8345\\43\\55.66406\\-288.7202\\43\\51.75781\\-289.7233\\43\\49.80469\\-290.6962\\43\\47.85156\\-291.2241\\43\\43.94531\\-292.8148\\43\\41.99219\\-293.3297\\43\\40.03906\\-294.1326\\43\\38.08594\\-294.7196\\43\\34.17969\\-295.4727\\43\\32.22656\\-296.2247\\43\\30.27344\\-296.7259\\43\\26.36719\\-297.3841\\43\\24.41406\\-298.0757\\43\\22.46094\\-298.5565\\43\\18.55469\\-299.1309\\43\\14.64844\\-299.9048\\43\\12.69531\\-300.216\\43\\10.74219\\-300.4078\\43\\6.835938\\-300.6273\\43\\0.9765625\\-300.7656\\43\\-2.929688\\-300.7433\\43\\-6.835938\\-300.6317\\43\\-10.74219\\-300.444\\43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "290"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "148"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-300.1029\\45\\-18.55469\\-299.3404\\45\\-24.41406\\-298.5426\\45\\-26.36719\\-298.0757\\45\\-28.32031\\-297.4629\\45\\-30.27344\\-297.1297\\45\\-34.17969\\-296.5824\\45\\-38.08594\\-295.4596\\45\\-43.94531\\-294.5332\\45\\-47.85156\\-293.2741\\45\\-51.75781\\-292.3365\\45\\-53.71094\\-291.5204\\45\\-57.61719\\-290.646\\45\\-59.57031\\-289.8503\\45\\-61.52344\\-289.3446\\45\\-65.42969\\-288.7382\\45\\-69.33594\\-287.5516\\45\\-73.24219\\-286.7126\\45\\-75.19531\\-285.993\\45\\-77.14844\\-285.413\\45\\-81.05469\\-284.466\\45\\-83.00781\\-283.6976\\45\\-86.91406\\-282.991\\45\\-88.86719\\-282.4198\\45\\-90.82031\\-281.7044\\45\\-94.72656\\-280.668\\45\\-96.67969\\-279.7382\\45\\-98.63281\\-279.0827\\45\\-100.5859\\-278.0174\\45\\-102.5391\\-277.291\\45\\-106.4453\\-275.447\\45\\-108.3161\\-274.4766\\45\\-110.3516\\-273.2869\\45\\-112.3047\\-271.8358\\45\\-116.2109\\-269.3868\\45\\-122.0703\\-264.8484\\45\\-125.9766\\-261.5687\\45\\-128.8231\\-258.8516\\45\\-131.8359\\-255.7998\\45\\-134.3963\\-252.9922\\45\\-135.9844\\-251.0391\\45\\-137.3122\\-249.0859\\45\\-138.7561\\-247.1328\\45\\-140.3213\\-245.1797\\45\\-141.6016\\-243.1267\\45\\-143.67\\-239.3203\\45\\-144.593\\-237.3672\\45\\-145.7072\\-235.4141\\45\\-147.4609\\-231.4338\\45\\-148.2172\\-229.5547\\45\\-148.6987\\-227.6016\\45\\-150.0547\\-223.6953\\45\\-150.8418\\-219.7891\\45\\-151.6029\\-217.8359\\45\\-152.1086\\-215.8828\\45\\-152.4709\\-213.9297\\45\\-152.9335\\-211.9766\\45\\-153.532\\-210.0234\\45\\-153.9096\\-208.0703\\45\\-154.3801\\-204.1641\\45\\-154.9975\\-198.3047\\45\\-155.3726\\-194.3984\\45\\-155.6267\\-188.5391\\45\\-155.5372\\-182.6797\\45\\-155.4162\\-180.7266\\45\\-154.8313\\-174.8672\\45\\-154.3801\\-170.9609\\45\\-153.8693\\-167.0547\\45\\-153.4819\\-165.1016\\45\\-152.9009\\-163.1484\\45\\-152.1227\\-159.2422\\45\\-151.6712\\-157.2891\\45\\-150.9209\\-155.3359\\45\\-150.173\\-151.4297\\45\\-149.6302\\-149.4766\\45\\-148.9025\\-147.5234\\45\\-147.8841\\-143.6172\\45\\-146.9447\\-141.6641\\45\\-146.2814\\-139.7109\\45\\-145.3943\\-137.7578\\45\\-144.6166\\-135.8047\\45\\-144.0108\\-133.8516\\45\\-143.007\\-131.8984\\45\\-142.4942\\-129.9453\\45\\-141.6719\\-127.9922\\45\\-140.7133\\-126.0391\\45\\-139.8754\\-124.0859\\45\\-138.7416\\-122.1328\\45\\-137.9207\\-120.1797\\45\\-136.8733\\-118.2266\\45\\-136.1707\\-116.2734\\45\\-134.9368\\-114.3203\\45\\-133.7891\\-112.2596\\45\\-131.8359\\-109.3014\\45\\-131.1478\\-108.4609\\45\\-128.6053\\-104.5547\\45\\-125.9766\\-101.533\\45\\-123.1752\\-98.69531\\45\\-120.1172\\-95.8763\\45\\-118.1641\\-94.31535\\45\\-116.2109\\-93.14558\\45\\-114.2578\\-91.74297\\45\\-112.3047\\-90.50982\\45\\-110.3516\\-89.50215\\45\\-108.3984\\-88.31255\\45\\-106.4453\\-87.70256\\45\\-104.4922\\-86.65104\\45\\-100.5859\\-85.13699\\45\\-96.67969\\-83.56519\\45\\-94.72656\\-82.51321\\45\\-90.82031\\-81.43056\\45\\-88.86719\\-80.59592\\45\\-84.96094\\-79.71173\\45\\-83.00781\\-79.06932\\45\\-79.10156\\-78.07962\\45\\-77.14844\\-77.71158\\45\\-73.24219\\-76.71295\\45\\-71.28906\\-76.40213\\45\\-65.42969\\-75.99763\\45\\-61.52344\\-75.80244\\45\\-55.66406\\-75.62231\\45\\-51.75781\\-75.68211\\45\\-43.94531\\-76.08367\\45\\-40.03906\\-76.42125\\45\\-36.13281\\-76.95826\\45\\-32.22656\\-77.78503\\45\\-30.27344\\-78.07962\\45\\-26.36719\\-78.91658\\45\\-24.41406\\-79.51729\\45\\-18.55469\\-80.73078\\45\\-16.60156\\-81.49224\\45\\-14.64844\\-81.96716\\45\\-10.74219\\-82.6674\\45\\-8.789063\\-82.91611\\45\\-6.835938\\-82.79027\\45\\-2.929688\\-82.3348\\45\\0.9765625\\-82.14227\\45\\4.882813\\-82.13595\\45\\10.74219\\-82.35837\\45\\12.69531\\-82.29536\\45\\14.64844\\-82.06855\\45\\16.60156\\-81.68965\\45\\18.55469\\-80.76534\\45\\22.46094\\-79.60796\\45\\24.41406\\-78.80599\\45\\28.32031\\-77.63412\\45\\30.27344\\-76.99314\\45\\32.22656\\-76.54075\\45\\34.17969\\-76.33438\\45\\40.03906\\-75.92284\\45\\43.94531\\-75.79335\\45\\47.85156\\-75.73652\\45\\51.75781\\-75.77146\\45\\57.61719\\-75.92661\\45\\61.52344\\-76.10725\\45\\65.42969\\-76.34615\\45\\69.33594\\-76.76763\\45\\71.28906\\-77.07451\\45\\75.19531\\-77.80155\\45\\79.10156\\-78.37061\\45\\81.05469\\-78.76733\\45\\84.96094\\-79.72672\\45\\90.82031\\-80.69169\\45\\92.77344\\-81.41824\\45\\94.72656\\-81.94817\\45\\96.67969\\-82.35171\\45\\100.5859\\-83.86377\\45\\102.5391\\-84.50539\\45\\104.4922\\-85.53099\\45\\106.4453\\-86.23011\\45\\108.3984\\-87.19781\\45\\110.3516\\-87.9593\\45\\112.3047\\-88.90567\\45\\114.2578\\-90.00507\\45\\116.2109\\-91.51432\\45\\120.1172\\-94.29025\\45\\122.6294\\-96.74219\\45\\124.0799\\-98.69531\\45\\125.4097\\-100.6484\\45\\127.0138\\-102.6016\\45\\128.47\\-104.5547\\45\\129.4448\\-106.5078\\45\\130.6846\\-108.4609\\45\\131.7493\\-110.4141\\45\\132.9141\\-112.3672\\45\\134.2151\\-114.3203\\45\\135.0724\\-116.2734\\45\\136.1785\\-118.2266\\45\\136.8713\\-120.1797\\45\\137.907\\-122.1328\\45\\138.677\\-124.0859\\45\\139.6711\\-126.0391\\45\\140.5511\\-127.9922\\45\\141.3196\\-129.9453\\45\\142.2088\\-131.8984\\45\\142.6273\\-133.8516\\45\\143.3105\\-135.8047\\45\\144.2343\\-137.7578\\45\\144.7299\\-139.7109\\45\\146.2758\\-143.6172\\45\\146.827\\-145.5703\\45\\147.5848\\-147.5234\\45\\148.1527\\-149.4766\\45\\148.8773\\-153.3828\\45\\149.9414\\-157.2891\\45\\150.2487\\-159.2422\\45\\150.7066\\-163.1484\\45\\151.0462\\-165.1016\\45\\151.5416\\-167.0547\\45\\151.8891\\-169.0078\\45\\152.2519\\-172.9141\\45\\152.5057\\-176.8203\\45\\152.7389\\-182.6797\\45\\152.7882\\-186.5859\\45\\152.7829\\-190.4922\\45\\152.5567\\-198.3047\\45\\152.2854\\-204.1641\\45\\151.8291\\-210.0234\\45\\151.5026\\-211.9766\\45\\150.6836\\-215.8828\\45\\150.173\\-219.7891\\45\\149.7724\\-221.7422\\45\\149.0558\\-223.6953\\45\\148.0939\\-227.6016\\45\\146.3362\\-231.5078\\45\\145.1667\\-233.4609\\45\\144.2728\\-235.4141\\45\\143.0075\\-237.3672\\45\\142.0518\\-239.3203\\45\\140.5949\\-241.2734\\45\\137.1646\\-245.1797\\45\\135.7422\\-246.9972\\45\\133.9274\\-249.0859\\45\\131.8359\\-251.0129\\45\\129.8828\\-253.0172\\45\\127.8132\\-254.9453\\45\\125.9766\\-256.3356\\45\\122.0703\\-259.8155\\45\\120.1172\\-261.415\\45\\116.2109\\-263.8493\\45\\114.2578\\-265.2495\\45\\112.3047\\-266.2775\\45\\110.3516\\-267.5104\\45\\106.4453\\-269.4586\\45\\104.4922\\-270.0888\\45\\102.5391\\-271.1735\\45\\100.5859\\-271.8331\\45\\98.63281\\-272.8839\\45\\96.67969\\-273.573\\45\\92.77344\\-275.1507\\45\\90.82031\\-275.6148\\45\\88.86719\\-276.1968\\45\\86.91406\\-277.0132\\45\\84.96094\\-277.4835\\45\\83.00781\\-278.1068\\45\\81.05469\\-278.9576\\45\\79.10156\\-279.532\\45\\75.19531\\-281.1045\\45\\73.24219\\-281.6192\\45\\71.28906\\-282.4505\\45\\69.33594\\-283.1501\\45\\67.38281\\-283.6674\\45\\65.42969\\-284.7364\\45\\63.47656\\-285.3895\\45\\61.52344\\-286.3947\\45\\57.61719\\-287.7299\\45\\55.66406\\-288.6628\\45\\51.75781\\-289.6668\\45\\49.80469\\-290.6652\\45\\47.85156\\-291.2027\\45\\43.94531\\-292.8148\\45\\41.99219\\-293.3149\\45\\40.03906\\-294.1473\\45\\38.08594\\-294.724\\45\\34.17969\\-295.4857\\45\\32.22656\\-296.2369\\45\\30.27344\\-296.7368\\45\\26.36719\\-297.4197\\45\\24.41406\\-298.1378\\45\\22.46094\\-298.587\\45\\18.55469\\-299.1613\\45\\16.60156\\-299.5091\\45\\14.64844\\-299.9619\\45\\12.69531\\-300.2566\\45\\10.74219\\-300.444\\45\\6.835938\\-300.654\\45\\0.9765625\\-300.8103\\45\\-2.929688\\-300.776\\45\\-6.835938\\-300.6652\\45\\-10.74219\\-300.4747\\45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "293"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "149"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-300.1602\\47\\-18.55469\\-299.388\\47\\-20.50781\\-299.0788\\47\\-24.41406\\-298.5634\\47\\-26.36719\\-298.1258\\47\\-28.32031\\-297.4821\\47\\-30.27344\\-297.1464\\47\\-34.17969\\-296.5824\\47\\-38.08594\\-295.4596\\47\\-41.99219\\-294.8507\\47\\-43.94531\\-294.4898\\47\\-45.89844\\-293.8055\\47\\-47.85156\\-293.2338\\47\\-49.80469\\-292.7933\\47\\-51.75781\\-292.2163\\47\\-53.71094\\-291.4273\\47\\-57.61719\\-290.5131\\47\\-59.57031\\-289.6595\\47\\-63.47656\\-288.9984\\47\\-65.42969\\-288.5727\\47\\-67.38281\\-287.8725\\47\\-69.33594\\-287.355\\47\\-71.28906\\-286.9543\\47\\-73.24219\\-286.4544\\47\\-75.19531\\-285.6464\\47\\-79.10156\\-284.7363\\47\\-81.05469\\-283.9682\\47\\-83.00781\\-283.4598\\47\\-86.91406\\-282.7299\\47\\-88.86719\\-281.9968\\47\\-92.77344\\-280.9929\\47\\-96.67969\\-279.4438\\47\\-98.63281\\-278.7672\\47\\-100.5859\\-277.6958\\47\\-102.5391\\-277.0748\\47\\-104.4922\\-275.9795\\47\\-106.4453\\-275.2443\\47\\-108.3984\\-274.0374\\47\\-110.3516\\-272.9955\\47\\-110.9407\\-272.5234\\47\\-113.8229\\-270.5703\\47\\-114.2578\\-270.1897\\47\\-116.2109\\-269.1366\\47\\-118.1641\\-267.6283\\47\\-125.9766\\-261.1744\\47\\-128.3937\\-258.8516\\47\\-129.8828\\-257.2365\\47\\-131.8359\\-255.3255\\47\\-134.0069\\-252.9922\\47\\-135.7422\\-250.7855\\47\\-136.9612\\-249.0859\\47\\-137.6953\\-248.2478\\47\\-139.6484\\-245.5478\\47\\-139.9878\\-245.1797\\47\\-141.1534\\-243.2266\\47\\-142.436\\-241.2734\\47\\-143.2683\\-239.3203\\47\\-144.4184\\-237.3672\\47\\-146.319\\-233.4609\\47\\-147.093\\-231.5078\\47\\-148.0408\\-229.5547\\47\\-149.0956\\-225.6484\\47\\-149.8788\\-223.6953\\47\\-150.6533\\-219.7891\\47\\-151.9355\\-215.8828\\47\\-152.7163\\-211.9766\\47\\-153.7388\\-208.0703\\47\\-154.2263\\-204.1641\\47\\-154.6043\\-200.2578\\47\\-155.1743\\-192.4453\\47\\-155.3281\\-188.5391\\47\\-155.2813\\-184.6328\\47\\-155.2037\\-182.6797\\47\\-154.9364\\-178.7734\\47\\-154.5964\\-174.8672\\47\\-154.1829\\-170.9609\\47\\-153.6152\\-167.0547\\47\\-153.0442\\-165.1016\\47\\-152.6135\\-163.1484\\47\\-151.8784\\-159.2422\\47\\-151.197\\-157.2891\\47\\-150.6491\\-155.3359\\47\\-149.9509\\-151.4297\\47\\-149.1864\\-149.4766\\47\\-148.1859\\-145.5703\\47\\-147.5143\\-143.6172\\47\\-146.6654\\-141.6641\\47\\-146.0314\\-139.7109\\47\\-145.004\\-137.7578\\47\\-144.4151\\-135.8047\\47\\-142.802\\-131.8984\\47\\-142.3112\\-129.9453\\47\\-141.2533\\-127.9922\\47\\-140.4769\\-126.0391\\47\\-139.3922\\-124.0859\\47\\-138.5196\\-122.1328\\47\\-137.5156\\-120.1797\\47\\-135.8623\\-116.2734\\47\\-132.3213\\-110.4141\\47\\-130.9026\\-108.4609\\47\\-128.1993\\-104.5547\\47\\-125.9766\\-101.8655\\47\\-122.814\\-98.69531\\47\\-120.6436\\-96.74219\\47\\-118.1641\\-94.76359\\47\\-115.4278\\-92.83594\\47\\-109.0035\\-88.92969\\47\\-108.3984\\-88.50799\\47\\-106.4453\\-87.81995\\47\\-104.4922\\-86.83273\\47\\-102.5391\\-86.04327\\47\\-100.5859\\-85.39386\\47\\-98.63281\\-84.47147\\47\\-96.67969\\-83.79212\\47\\-94.72656\\-82.74479\\47\\-92.77344\\-82.12389\\47\\-90.82031\\-81.60205\\47\\-88.86719\\-80.78217\\47\\-84.96094\\-79.86694\\47\\-81.05469\\-78.66429\\47\\-79.10156\\-78.20415\\47\\-75.19531\\-77.45164\\47\\-73.24219\\-76.90576\\47\\-71.28906\\-76.55351\\47\\-65.42969\\-76.0873\\47\\-59.57031\\-75.84985\\47\\-55.66406\\-75.77822\\47\\-51.75781\\-75.81311\\47\\-43.94531\\-76.22253\\47\\-40.03906\\-76.54939\\47\\-38.08594\\-76.82424\\47\\-34.17969\\-77.6414\\47\\-30.27344\\-78.24461\\47\\-28.32031\\-78.68159\\47\\-24.41406\\-79.68791\\47\\-20.50781\\-80.42749\\47\\-18.55469\\-80.91279\\47\\-16.60156\\-81.66858\\47\\-12.69531\\-82.3485\\47\\-10.74219\\-82.59864\\47\\-8.789063\\-82.6702\\47\\-2.929688\\-82.14227\\47\\0.9765625\\-81.96935\\47\\6.835938\\-81.96395\\47\\10.74219\\-82.11206\\47\\12.69531\\-82.12466\\47\\14.64844\\-82.00667\\47\\16.60156\\-81.70444\\47\\18.55469\\-80.84345\\47\\22.46094\\-79.74349\\47\\26.36719\\-78.37025\\47\\32.22656\\-76.73927\\47\\34.17969\\-76.42598\\47\\36.13281\\-76.27506\\47\\41.99219\\-75.99318\\47\\47.85156\\-75.89077\\47\\53.71094\\-75.95788\\47\\57.61719\\-76.06779\\47\\61.52344\\-76.24005\\47\\65.42969\\-76.50014\\47\\69.33594\\-77.01009\\47\\73.24219\\-77.72974\\47\\77.14844\\-78.27383\\47\\79.10156\\-78.61333\\47\\83.00781\\-79.58064\\47\\86.91406\\-80.25758\\47\\88.86719\\-80.53253\\47\\90.82031\\-80.92495\\47\\92.77344\\-81.67805\\47\\96.67969\\-82.57233\\47\\98.63281\\-83.40032\\47\\102.5391\\-84.75106\\47\\104.4922\\-85.71667\\47\\106.4453\\-86.37607\\47\\108.3984\\-87.38287\\47\\110.3516\\-88.09711\\47\\114.2578\\-90.24194\\47\\117.6162\\-92.83594\\47\\118.1641\\-93.32422\\47\\120.1172\\-94.60645\\47\\122.346\\-96.74219\\47\\123.6256\\-98.69531\\47\\126.8145\\-102.6016\\47\\128.1915\\-104.5547\\47\\129.2657\\-106.5078\\47\\130.5318\\-108.4609\\47\\131.4302\\-110.4141\\47\\131.8359\\-110.9331\\47\\133.9567\\-114.3203\\47\\134.9094\\-116.2734\\47\\135.96\\-118.2266\\47\\137.5772\\-122.1328\\47\\138.5345\\-124.0859\\47\\139.3548\\-126.0391\\47\\140.3943\\-127.9922\\47\\141.0672\\-129.9453\\47\\142.0569\\-131.8984\\47\\143.1003\\-135.8047\\47\\144.0677\\-137.7578\\47\\144.5739\\-139.7109\\47\\145.2358\\-141.6641\\47\\146.1168\\-143.6172\\47\\146.64\\-145.5703\\47\\148.0095\\-149.4766\\47\\148.7361\\-153.3828\\47\\149.1847\\-155.3359\\47\\149.7811\\-157.2891\\47\\150.142\\-159.2422\\47\\150.6003\\-163.1484\\47\\150.882\\-165.1016\\47\\151.7137\\-169.0078\\47\\152.1218\\-172.9141\\47\\152.3582\\-176.8203\\47\\152.5567\\-182.6797\\47\\152.6038\\-186.5859\\47\\152.584\\-190.4922\\47\\152.383\\-198.3047\\47\\152.2229\\-202.2109\\47\\151.9848\\-206.1172\\47\\151.8019\\-208.0703\\47\\151.5158\\-210.0234\\47\\150.7658\\-213.9297\\47\\150.284\\-217.8359\\47\\149.9821\\-219.7891\\47\\148.8077\\-223.6953\\47\\148.3907\\-225.6484\\47\\147.8554\\-227.6016\\47\\146.8567\\-229.5547\\47\\146.0854\\-231.5078\\47\\144.847\\-233.4609\\47\\144.0108\\-235.4141\\47\\142.7539\\-237.3672\\47\\141.6256\\-239.3203\\47\\140.2933\\-241.2734\\47\\135.189\\-247.1328\\47\\133.7891\\-248.6494\\47\\131.8359\\-250.4902\\47\\127.9297\\-254.3903\\47\\122.0703\\-259.4401\\47\\120.1172\\-260.9577\\47\\118.1641\\-262.187\\47\\116.2109\\-263.5478\\47\\112.3047\\-265.8181\\47\\110.3516\\-267.1232\\47\\108.3984\\-267.9599\\47\\106.4453\\-269.0884\\47\\104.4922\\-269.7341\\47\\100.5859\\-271.476\\47\\98.63281\\-272.2204\\47\\96.67969\\-273.2065\\47\\94.72656\\-273.8471\\47\\92.77344\\-274.726\\47\\90.82031\\-275.3372\\47\\88.86719\\-275.785\\47\\86.91406\\-276.5594\\47\\84.96094\\-277.2189\\47\\83.00781\\-277.7103\\47\\81.05469\\-278.5444\\47\\77.14844\\-279.9706\\47\\75.19531\\-280.9135\\47\\73.24219\\-281.4427\\47\\71.28906\\-282.1859\\47\\69.33594\\-283.0426\\47\\67.38281\\-283.5304\\47\\65.42969\\-284.5887\\47\\63.47656\\-285.2911\\47\\61.52344\\-286.2329\\47\\59.57031\\-287.027\\47\\57.61719\\-287.6537\\47\\55.66406\\-288.6068\\47\\51.75781\\-289.6362\\47\\49.80469\\-290.6378\\47\\47.85156\\-291.1916\\47\\43.94531\\-292.8047\\47\\41.99219\\-293.3259\\47\\40.03906\\-294.1742\\47\\38.08594\\-294.7358\\47\\34.17969\\-295.5087\\47\\32.22656\\-296.2748\\47\\30.27344\\-296.7624\\47\\28.32031\\-297.0718\\47\\26.36719\\-297.4793\\47\\24.41406\\-298.1959\\47\\22.46094\\-298.6194\\47\\18.55469\\-299.2071\\47\\14.64844\\-300.0288\\47\\12.69531\\-300.3073\\47\\10.74219\\-300.4747\\47\\6.835938\\-300.6987\\47\\0.9765625\\-300.8438\\47\\-4.882813\\-300.7708\\47\\-8.789063\\-300.6205\\47\\-12.69531\\-300.3642\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "284"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "150"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-300.2055\\49\\-18.55469\\-299.438\\49\\-20.50781\\-299.114\\49\\-24.41406\\-298.5901\\49\\-26.36719\\-298.1846\\49\\-28.32031\\-297.5222\\49\\-30.27344\\-297.1528\\49\\-34.17969\\-296.5824\\49\\-38.08594\\-295.45\\49\\-41.99219\\-294.8457\\49\\-43.94531\\-294.4355\\49\\-45.89844\\-293.7451\\49\\-47.85156\\-293.1889\\49\\-49.80469\\-292.7443\\49\\-51.75781\\-292.1069\\49\\-53.71094\\-291.343\\49\\-55.66406\\-290.9049\\49\\-57.61719\\-290.3406\\49\\-59.57031\\-289.5444\\49\\-63.47656\\-288.887\\49\\-65.42969\\-288.3598\\49\\-67.38281\\-287.6537\\49\\-71.28906\\-286.7958\\49\\-75.19531\\-285.4192\\49\\-77.14844\\-284.9797\\49\\-79.10156\\-284.3643\\49\\-81.05469\\-283.6288\\49\\-84.96094\\-282.9338\\49\\-86.91406\\-282.36\\49\\-88.86719\\-281.674\\49\\-92.77344\\-280.7253\\49\\-94.72656\\-279.8325\\49\\-96.67969\\-279.1966\\49\\-100.5859\\-277.4585\\49\\-102.5391\\-276.7804\\49\\-104.4922\\-275.7303\\49\\-106.4453\\-275.0004\\49\\-108.3984\\-273.7412\\49\\-110.3516\\-272.6204\\49\\-112.3047\\-271.3348\\49\\-114.2578\\-269.8755\\49\\-116.2109\\-268.8556\\49\\-118.1641\\-267.3714\\49\\-121.3504\\-264.7109\\49\\-122.0703\\-264.0163\\49\\-123.6518\\-262.7578\\49\\-125.9766\\-260.7482\\49\\-127.9862\\-258.8516\\49\\-131.7255\\-254.9453\\49\\-135.1657\\-251.0391\\49\\-138.1894\\-247.1328\\49\\-141.6016\\-242.1268\\49\\-142.2289\\-241.2734\\49\\-143.0107\\-239.3203\\49\\-144.2276\\-237.3672\\49\\-145.0007\\-235.4141\\49\\-146.1175\\-233.4609\\49\\-146.8395\\-231.5078\\49\\-147.8503\\-229.5547\\49\\-148.906\\-225.6484\\49\\-149.6564\\-223.6953\\49\\-150.1872\\-221.7422\\49\\-150.5046\\-219.7891\\49\\-150.9725\\-217.8359\\49\\-151.724\\-215.8828\\49\\-152.1671\\-213.9297\\49\\-152.9335\\-210.0234\\49\\-153.532\\-208.0703\\49\\-153.8514\\-206.1172\\49\\-154.4436\\-200.2578\\49\\-154.815\\-194.3984\\49\\-155.0097\\-188.5391\\49\\-154.9735\\-184.6328\\49\\-154.8283\\-180.7266\\49\\-154.5659\\-176.8203\\49\\-153.9914\\-170.9609\\49\\-153.7267\\-169.0078\\49\\-152.7321\\-165.1016\\49\\-152.0095\\-161.1953\\49\\-151.5416\\-159.2422\\49\\-150.8385\\-157.2891\\49\\-150.4389\\-155.3359\\49\\-150.139\\-153.3828\\49\\-149.6169\\-151.4297\\49\\-148.8532\\-149.4766\\49\\-147.9461\\-145.5703\\49\\-147.0768\\-143.6172\\49\\-145.6694\\-139.7109\\49\\-144.7452\\-137.7578\\49\\-144.2038\\-135.8047\\49\\-143.2316\\-133.8516\\49\\-142.0407\\-129.9453\\49\\-140.9845\\-127.9922\\49\\-140.2344\\-126.0391\\49\\-139.0223\\-124.0859\\49\\-138.2867\\-122.1328\\49\\-137.1867\\-120.1797\\49\\-136.5045\\-118.2266\\49\\-135.353\\-116.2734\\49\\-134.4337\\-114.3203\\49\\-133.0994\\-112.3672\\49\\-131.9714\\-110.4141\\49\\-129.8828\\-107.3335\\49\\-127.9297\\-104.75\\49\\-125.9766\\-102.3029\\49\\-124.0234\\-100.2722\\49\\-122.3931\\-98.69531\\49\\-120.1172\\-96.68961\\49\\-116.2109\\-93.68183\\49\\-114.9053\\-92.83594\\49\\-112.3047\\-91.35075\\49\\-110.3516\\-90.04137\\49\\-108.3984\\-88.85326\\49\\-104.4922\\-87.06917\\49\\-102.5391\\-86.28893\\49\\-100.5859\\-85.61435\\49\\-98.63281\\-84.68463\\49\\-96.67969\\-83.9884\\49\\-92.77344\\-82.30796\\49\\-90.82031\\-81.83376\\49\\-86.91406\\-80.44348\\49\\-83.00781\\-79.55606\\49\\-81.05469\\-78.87109\\49\\-77.14844\\-78.01351\\49\\-75.19531\\-77.65257\\49\\-71.28906\\-76.77474\\49\\-69.33594\\-76.51521\\49\\-65.42969\\-76.18815\\49\\-61.52344\\-76.02635\\49\\-55.66406\\-75.90679\\49\\-49.80469\\-76.00494\\49\\-41.99219\\-76.50356\\49\\-38.08594\\-77.07451\\49\\-36.13281\\-77.50459\\49\\-32.22656\\-78.12129\\49\\-28.32031\\-78.89353\\49\\-26.36719\\-79.46616\\49\\-22.46094\\-80.24977\\49\\-20.50781\\-80.55824\\49\\-16.60156\\-81.78332\\49\\-12.69531\\-82.35296\\49\\-10.74219\\-82.52421\\49\\-8.789063\\-82.47177\\49\\-4.882813\\-82.13014\\49\\-0.9765625\\-81.87674\\49\\2.929688\\-81.75723\\49\\6.835938\\-81.75294\\49\\12.69531\\-81.94634\\49\\14.64844\\-81.90215\\49\\16.60156\\-81.67429\\49\\18.55469\\-80.87119\\49\\22.46094\\-79.82581\\49\\26.36719\\-78.53883\\49\\34.17969\\-76.59729\\49\\36.13281\\-76.39407\\49\\40.03906\\-76.18268\\49\\47.85156\\-76.03092\\49\\53.71094\\-76.11514\\49\\61.52344\\-76.37642\\49\\65.42969\\-76.74802\\49\\67.38281\\-77.01009\\49\\71.28906\\-77.66501\\49\\75.19531\\-78.16543\\49\\77.14844\\-78.46974\\49\\79.10156\\-78.89353\\49\\81.05469\\-79.42975\\49\\84.96094\\-80.13481\\49\\88.86719\\-80.74213\\49\\90.82031\\-81.36508\\49\\94.72656\\-82.27612\\49\\96.67969\\-82.82263\\49\\98.63281\\-83.64791\\49\\100.5859\\-84.22998\\49\\104.4922\\-85.89599\\49\\106.4453\\-86.55804\\49\\108.3984\\-87.5811\\49\\110.3516\\-88.27644\\49\\112.3047\\-89.45946\\49\\114.2578\\-90.5423\\49\\117.3281\\-92.83594\\49\\119.7117\\-94.78906\\49\\121.875\\-96.74219\\49\\123.4063\\-98.69531\\49\\126.6092\\-102.6016\\49\\127.9376\\-104.5547\\49\\130.3404\\-108.4609\\49\\131.2162\\-110.4141\\49\\132.554\\-112.3672\\49\\134.7425\\-116.2734\\49\\136.6028\\-120.1797\\49\\137.2867\\-122.1328\\49\\138.3831\\-124.0859\\49\\139.1066\\-126.0391\\49\\140.2024\\-127.9922\\49\\140.8847\\-129.9453\\49\\141.851\\-131.8984\\49\\142.4689\\-133.8516\\49\\142.914\\-135.8047\\49\\143.8525\\-137.7578\\49\\144.9857\\-141.6641\\49\\145.9096\\-143.6172\\49\\147.0535\\-147.5234\\49\\147.8604\\-149.4766\\49\\148.2824\\-151.4297\\49\\148.9793\\-155.3359\\49\\149.573\\-157.2891\\49\\150.0299\\-159.2422\\49\\150.7415\\-165.1016\\49\\151.0577\\-167.0547\\49\\151.5026\\-169.0078\\49\\151.9886\\-172.9141\\49\\152.3053\\-178.7734\\49\\152.4118\\-182.6797\\49\\152.4484\\-186.5859\\49\\152.4276\\-190.4922\\49\\152.3535\\-194.3984\\49\\152.0503\\-202.2109\\49\\151.7639\\-206.1172\\49\\151.5026\\-208.0703\\49\\151.1054\\-210.0234\\49\\150.5672\\-213.9297\\49\\150.127\\-217.8359\\49\\149.7228\\-219.7891\\49\\149.0583\\-221.7422\\49\\148.2108\\-225.6484\\49\\147.5135\\-227.6016\\49\\145.7623\\-231.5078\\49\\144.5909\\-233.4609\\49\\143.6244\\-235.4141\\49\\142.5218\\-237.3672\\49\\139.9227\\-241.2734\\49\\136.617\\-245.1797\\49\\133.7891\\-248.3088\\49\\129.8828\\-252.0695\\49\\127.9297\\-254.0413\\49\\125.9766\\-255.7965\\49\\122.0703\\-258.9617\\49\\118.1641\\-261.8376\\49\\116.2109\\-263.1784\\49\\114.2578\\-264.1134\\49\\112.3047\\-265.4308\\49\\108.3984\\-267.5774\\49\\104.4922\\-269.432\\49\\102.5391\\-270.0226\\49\\100.5859\\-271.1077\\49\\98.63281\\-271.7389\\49\\96.67969\\-272.7488\\49\\92.77344\\-274.1578\\49\\90.82031\\-275.0392\\49\\86.91406\\-276.0102\\49\\84.96094\\-276.8919\\49\\81.05469\\-278.0174\\49\\79.10156\\-279.0246\\49\\77.14844\\-279.683\\49\\75.19531\\-280.6787\\49\\71.28906\\-281.9635\\49\\69.33594\\-282.9254\\49\\67.38281\\-283.4255\\49\\65.42969\\-284.4166\\49\\63.47656\\-285.2188\\49\\59.57031\\-286.9669\\49\\57.61719\\-287.5877\\49\\55.66406\\-288.5514\\49\\51.75781\\-289.6133\\49\\49.80469\\-290.6128\\49\\47.85156\\-291.1861\\49\\43.94531\\-292.7946\\49\\41.99219\\-293.344\\49\\40.03906\\-294.1873\\49\\38.08594\\-294.7476\\49\\34.17969\\-295.5291\\49\\32.22656\\-296.3314\\49\\30.27344\\-296.7852\\49\\28.32031\\-297.0942\\49\\26.36719\\-297.543\\49\\24.41406\\-298.2502\\49\\22.46094\\-298.6537\\49\\18.55469\\-299.2554\\49\\14.64844\\-300.0789\\49\\12.69531\\-300.3376\\49\\6.835938\\-300.7147\\49\\2.929688\\-300.8438\\49\\-2.929688\\-300.8495\\49\\-8.789063\\-300.6473\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "292"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "151"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-299.948\\51\\-18.55469\\-299.4906\\51\\-20.50781\\-299.1507\\51\\-24.41406\\-298.6158\\51\\-26.36719\\-298.2289\\51\\-28.32031\\-297.5667\\51\\-30.27344\\-297.1423\\51\\-34.17969\\-296.5824\\51\\-38.08594\\-295.4371\\51\\-41.99219\\-294.8274\\51\\-43.94531\\-294.4254\\51\\-45.89844\\-293.7109\\51\\-47.85156\\-293.1514\\51\\-49.80469\\-292.7006\\51\\-53.71094\\-291.2744\\51\\-55.66406\\-290.8365\\51\\-59.57031\\-289.4445\\51\\-63.47656\\-288.747\\51\\-67.38281\\-287.4601\\51\\-71.28906\\-286.5544\\51\\-73.24219\\-285.7469\\51\\-77.14844\\-284.739\\51\\-79.10156\\-283.9401\\51\\-81.05469\\-283.4028\\51\\-83.00781\\-283.1019\\51\\-84.96094\\-282.6588\\51\\-86.91406\\-281.9423\\51\\-90.82031\\-280.9969\\51\\-94.72656\\-279.5257\\51\\-96.67969\\-278.9033\\51\\-98.63281\\-277.8541\\51\\-100.5859\\-277.2381\\51\\-102.5391\\-276.3416\\51\\-106.4453\\-274.6601\\51\\-108.3984\\-273.4832\\51\\-110.3516\\-272.1452\\51\\-112.3047\\-271.049\\51\\-114.2578\\-269.6473\\51\\-115.9473\\-268.6172\\51\\-118.1641\\-267.0185\\51\\-120.9635\\-264.7109\\51\\-124.0234\\-262.0949\\51\\-127.5228\\-258.8516\\51\\-129.8828\\-256.4671\\51\\-131.8359\\-254.3822\\51\\-134.8295\\-251.0391\\51\\-136.3955\\-249.0859\\51\\-137.8174\\-247.1328\\51\\-139.0736\\-245.1797\\51\\-140.5833\\-243.2266\\51\\-141.9391\\-241.2734\\51\\-142.802\\-239.3203\\51\\-143.9704\\-237.3672\\51\\-144.7597\\-235.4141\\51\\-145.8972\\-233.4609\\51\\-146.62\\-231.5078\\51\\-147.5571\\-229.5547\\51\\-148.2621\\-227.6016\\51\\-148.7361\\-225.6484\\51\\-150.0423\\-221.7422\\51\\-150.7621\\-217.8359\\51\\-151.4338\\-215.8828\\51\\-151.992\\-213.9297\\51\\-152.7009\\-210.0234\\51\\-153.6564\\-206.1172\\51\\-153.9051\\-204.1641\\51\\-154.258\\-200.2578\\51\\-154.5731\\-194.3984\\51\\-154.72\\-190.4922\\51\\-154.7659\\-186.5859\\51\\-154.6043\\-180.7266\\51\\-154.3682\\-176.8203\\51\\-154.0132\\-172.9141\\51\\-153.7577\\-170.9609\\51\\-153.3869\\-169.0078\\51\\-152.8474\\-167.0547\\51\\-151.7442\\-161.1953\\51\\-151.0791\\-159.2422\\51\\-150.5871\\-157.2891\\51\\-149.8857\\-153.3828\\51\\-149.1699\\-151.4297\\51\\-148.6415\\-149.4766\\51\\-148.2126\\-147.5234\\51\\-147.614\\-145.5703\\51\\-146.7452\\-143.6172\\51\\-146.1387\\-141.6641\\51\\-145.1983\\-139.7109\\51\\-143.9226\\-135.8047\\51\\-142.9572\\-133.8516\\51\\-142.4377\\-131.8984\\51\\-141.6697\\-129.9453\\51\\-140.7292\\-127.9922\\51\\-139.8891\\-126.0391\\51\\-138.7706\\-124.0859\\51\\-138.0101\\-122.1328\\51\\-136.9613\\-120.1797\\51\\-136.2339\\-118.2266\\51\\-135.0547\\-116.2734\\51\\-134.1217\\-114.3203\\51\\-133.7891\\-113.9031\\51\\-131.8359\\-110.8326\\51\\-130.4014\\-108.4609\\51\\-128.9648\\-106.5078\\51\\-125.9766\\-102.8497\\51\\-124.0234\\-100.7769\\51\\-121.8363\\-98.69531\\51\\-118.1641\\-95.47473\\51\\-116.2109\\-94.00912\\51\\-114.2578\\-92.89538\\51\\-110.3516\\-90.29688\\51\\-108.3984\\-89.33832\\51\\-106.4453\\-88.16286\\51\\-104.4922\\-87.49315\\51\\-102.5391\\-86.44785\\51\\-100.5859\\-85.74334\\51\\-96.67969\\-84.2182\\51\\-94.72656\\-83.54557\\51\\-92.77344\\-82.58545\\51\\-88.86719\\-81.41016\\51\\-86.91406\\-80.63901\\51\\-83.00781\\-79.75651\\51\\-79.10156\\-78.62347\\51\\-77.14844\\-78.20454\\51\\-73.24219\\-77.51401\\51\\-71.28906\\-77.07451\\51\\-67.38281\\-76.47692\\51\\-63.47656\\-76.23438\\51\\-55.66406\\-76.02596\\51\\-49.80469\\-76.13672\\51\\-45.89844\\-76.36968\\51\\-41.99219\\-76.71947\\51\\-40.03906\\-77.01009\\51\\-36.13281\\-77.75415\\51\\-32.22656\\-78.31026\\51\\-30.27344\\-78.68466\\51\\-26.36719\\-79.67838\\51\\-22.46094\\-80.37286\\51\\-20.50781\\-80.77044\\51\\-18.55469\\-81.42052\\51\\-16.60156\\-81.89214\\51\\-14.64844\\-82.17763\\51\\-12.69531\\-82.35296\\51\\-10.74219\\-82.42553\\51\\-8.789063\\-82.31958\\51\\-2.929688\\-81.84319\\51\\2.929688\\-81.45467\\51\\6.835938\\-81.39301\\51\\12.69531\\-81.75745\\51\\14.64844\\-81.74451\\51\\16.60156\\-81.51479\\51\\18.55469\\-80.87119\\51\\24.41406\\-79.39516\\51\\26.36719\\-78.73606\\51\\28.32031\\-78.21556\\51\\32.22656\\-77.37609\\51\\34.17969\\-76.86914\\51\\36.13281\\-76.53634\\51\\38.08594\\-76.38178\\51\\41.99219\\-76.25182\\51\\47.85156\\-76.1597\\51\\51.75781\\-76.19463\\51\\57.61719\\-76.35792\\51\\61.52344\\-76.5451\\51\\65.42969\\-77.0226\\51\\67.38281\\-77.33576\\51\\73.24219\\-78.10847\\51\\77.14844\\-78.74554\\51\\81.05469\\-79.68184\\51\\86.91406\\-80.61894\\51\\88.86719\\-81.06022\\51\\90.82031\\-81.66858\\51\\94.72656\\-82.44165\\51\\98.63281\\-83.88596\\51\\100.5859\\-84.50677\\51\\102.5391\\-85.43145\\51\\106.4453\\-86.84787\\51\\108.3984\\-87.81097\\51\\110.3516\\-88.52039\\51\\110.9437\\-88.92969\\51\\114.2578\\-90.8601\\51\\116.2109\\-92.20404\\51\\118.1641\\-93.74607\\51\\120.1172\\-95.40271\\51\\121.5642\\-96.74219\\51\\123.2676\\-98.69531\\51\\126.3887\\-102.6016\\51\\127.9297\\-104.8904\\51\\130.1307\\-108.4609\\51\\131.0417\\-110.4141\\51\\132.3771\\-112.3672\\51\\133.3861\\-114.3203\\51\\134.5923\\-116.2734\\51\\135.4237\\-118.2266\\51\\136.4746\\-120.1797\\51\\137.0716\\-122.1328\\51\\138.2379\\-124.0859\\51\\138.9257\\-126.0391\\51\\140.0154\\-127.9922\\51\\140.7377\\-129.9453\\51\\142.3523\\-133.8516\\51\\142.7917\\-135.8047\\51\\144.3283\\-139.7109\\51\\144.8135\\-141.6641\\51\\145.6694\\-143.6172\\51\\146.3353\\-145.5703\\51\\146.855\\-147.5234\\51\\147.6618\\-149.4766\\51\\148.1643\\-151.4297\\51\\148.8514\\-155.3359\\51\\149.8857\\-159.2422\\51\\150.2125\\-161.1953\\51\\150.8727\\-167.0547\\51\\151.6263\\-170.9609\\51\\151.9886\\-174.8672\\51\\152.1842\\-178.7734\\51\\152.2815\\-182.6797\\51\\152.3102\\-188.5391\\51\\152.1994\\-194.3984\\51\\152.0669\\-198.3047\\51\\151.864\\-202.2109\\51\\151.4757\\-206.1172\\51\\150.8362\\-210.0234\\51\\150.2193\\-215.8828\\51\\149.9187\\-217.8359\\51\\148.8077\\-221.7422\\51\\147.9953\\-225.6484\\51\\146.3596\\-229.5547\\51\\145.2836\\-231.5078\\51\\144.3676\\-233.4609\\51\\143.2096\\-235.4141\\51\\142.2897\\-237.3672\\51\\139.6484\\-240.9613\\51\\136.3053\\-245.1797\\51\\134.5898\\-247.1328\\51\\131.8359\\-249.9021\\51\\127.9297\\-253.6804\\51\\125.9766\\-255.4372\\51\\122.0703\\-258.3491\\51\\121.5328\\-258.8516\\51\\118.1641\\-261.4708\\51\\116.0482\\-262.7578\\51\\114.2578\\-263.7403\\51\\112.3047\\-264.9568\\51\\110.3516\\-265.9588\\51\\108.3984\\-267.1951\\51\\106.4453\\-268.006\\51\\104.4922\\-269.0674\\51\\102.5391\\-269.6787\\51\\98.63281\\-271.3958\\51\\96.67969\\-272.0801\\51\\94.72656\\-273.1049\\51\\92.77344\\-273.7145\\51\\90.82031\\-274.5618\\51\\88.86719\\-275.2469\\51\\86.91406\\-275.6895\\51\\83.00781\\-277.1917\\51\\81.05469\\-277.7032\\51\\79.10156\\-278.7362\\51\\77.14844\\-279.4457\\51\\75.19531\\-280.3881\\51\\73.24219\\-281.1672\\51\\71.28906\\-281.8178\\51\\69.33594\\-282.8103\\51\\67.38281\\-283.3386\\51\\63.47656\\-285.1561\\51\\61.52344\\-285.9775\\51\\59.57031\\-286.907\\51\\57.61719\\-287.5489\\51\\55.66406\\-288.5267\\51\\51.75781\\-289.6003\\51\\49.80469\\-290.6128\\51\\47.85156\\-291.1916\\51\\43.94531\\-292.8086\\51\\41.99219\\-293.3697\\51\\40.03906\\-294.213\\51\\38.08594\\-294.764\\51\\34.17969\\-295.5636\\51\\32.22656\\-296.387\\51\\30.27344\\-296.8193\\51\\28.32031\\-297.1318\\51\\26.36719\\-297.6089\\51\\24.41406\\-298.3205\\51\\22.46094\\-298.6944\\51\\18.55469\\-299.315\\51\\14.64844\\-300.1263\\51\\12.69531\\-300.3584\\51\\8.789063\\-300.6429\\51\\2.929688\\-300.8721\\51\\-2.929688\\-300.8784\\51\\-6.835938\\-300.7534\\51\\-10.74219\\-300.5647\\51\\-14.64844\\-300.2466\\51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "292"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "152"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-300.0288\\53\\-18.55469\\-299.555\\53\\-20.50781\\-299.1999\\53\\-24.41406\\-298.638\\53\\-26.36719\\-298.2709\\53\\-28.32031\\-297.5798\\53\\-30.27344\\-297.1763\\53\\-34.17969\\-296.5904\\53\\-38.08594\\-295.45\\53\\-41.99219\\-294.8158\\53\\-43.94531\\-294.4153\\53\\-45.89844\\-293.6867\\53\\-47.85156\\-293.1259\\53\\-49.80469\\-292.669\\53\\-51.75781\\-291.8778\\53\\-53.71094\\-291.2169\\53\\-55.66406\\-290.7816\\53\\-57.61719\\-290.017\\53\\-59.57031\\-289.3766\\53\\-61.52344\\-289.054\\53\\-63.47656\\-288.6169\\53\\-65.42969\\-287.899\\53\\-67.38281\\-287.3106\\53\\-69.33594\\-286.8768\\53\\-71.28906\\-286.2619\\53\\-73.24219\\-285.5172\\53\\-75.19531\\-285.0543\\53\\-77.14844\\-284.4539\\53\\-79.10156\\-283.6379\\53\\-83.00781\\-282.9128\\53\\-86.91406\\-281.6444\\53\\-88.86719\\-281.2378\\53\\-90.82031\\-280.7304\\53\\-92.77344\\-279.8753\\53\\-94.72656\\-279.2664\\53\\-96.67969\\-278.4913\\53\\-98.63281\\-277.5672\\53\\-100.5859\\-277.0009\\53\\-102.5391\\-275.9585\\53\\-104.4922\\-275.2934\\53\\-108.3984\\-273.2218\\53\\-110.3516\\-271.8105\\53\\-114.2578\\-269.4569\\53\\-115.4349\\-268.6172\\53\\-120.1172\\-265.0149\\53\\-124.0234\\-261.7612\\53\\-127.1203\\-258.8516\\53\\-129.1233\\-256.8984\\53\\-131.8359\\-254.0097\\53\\-134.4857\\-251.0391\\53\\-136.0802\\-249.0859\\53\\-137.3119\\-247.1328\\53\\-140.3345\\-243.2266\\53\\-141.6016\\-241.239\\53\\-143.6546\\-237.3672\\53\\-145.5744\\-233.4609\\53\\-148.1061\\-227.6016\\53\\-149.103\\-223.6953\\53\\-149.8518\\-221.7422\\53\\-150.2728\\-219.7891\\53\\-150.5938\\-217.8359\\53\\-151.1054\\-215.8828\\53\\-151.8019\\-213.9297\\53\\-152.8815\\-208.0703\\53\\-153.3869\\-206.1172\\53\\-153.7483\\-204.1641\\53\\-154.1134\\-200.2578\\53\\-154.2146\\-198.3047\\53\\-154.5426\\-188.5391\\53\\-154.5425\\-184.6328\\53\\-154.4196\\-180.7266\\53\\-154.0719\\-176.8203\\53\\-153.9951\\-174.8672\\53\\-153.8057\\-172.9141\\53\\-153.4689\\-170.9609\\53\\-152.9541\\-169.0078\\53\\-152.5745\\-167.0547\\53\\-151.9165\\-163.1484\\53\\-150.7463\\-159.2422\\53\\-150.0952\\-155.3359\\53\\-148.8796\\-151.4297\\53\\-147.968\\-147.5234\\53\\-147.177\\-145.5703\\53\\-145.8439\\-141.6641\\53\\-144.8783\\-139.7109\\53\\-144.3283\\-137.7578\\53\\-142.7429\\-133.8516\\53\\-142.2294\\-131.8984\\53\\-141.2604\\-129.9453\\53\\-140.4894\\-127.9922\\53\\-139.4166\\-126.0391\\53\\-137.6227\\-122.1328\\53\\-135.8906\\-118.2266\\53\\-133.7891\\-114.4614\\53\\-132.5326\\-112.3672\\53\\-131.1574\\-110.4141\\53\\-130.0904\\-108.4609\\53\\-128.7227\\-106.5078\\53\\-125.9766\\-103.2356\\53\\-124.0234\\-101.125\\53\\-121.4563\\-98.69531\\53\\-118.1641\\-95.77891\\53\\-116.2109\\-94.32573\\53\\-114.2578\\-93.29166\\53\\-110.3516\\-90.71394\\53\\-108.3984\\-89.66988\\53\\-106.4453\\-88.42725\\53\\-104.4922\\-87.70728\\53\\-102.5391\\-86.69856\\53\\-100.5859\\-86.08828\\53\\-96.67969\\-84.42767\\53\\-94.72656\\-83.73146\\53\\-92.77344\\-82.83508\\53\\-90.82031\\-82.12505\\53\\-88.86719\\-81.66271\\53\\-86.91406\\-80.81839\\53\\-83.00781\\-79.91868\\53\\-79.10156\\-78.84925\\53\\-75.19531\\-78.03726\\53\\-73.24219\\-77.75757\\53\\-69.33594\\-77.03655\\53\\-65.42969\\-76.44586\\53\\-55.66406\\-76.14718\\53\\-51.75781\\-76.18206\\53\\-45.89844\\-76.51251\\53\\-41.99219\\-76.96346\\53\\-38.08594\\-77.63858\\53\\-34.17969\\-78.17066\\53\\-30.27344\\-78.92834\\53\\-28.32031\\-79.48251\\53\\-22.46094\\-80.53635\\53\\-20.50781\\-81.01398\\53\\-18.55469\\-81.64673\\53\\-16.60156\\-81.99548\\53\\-14.64844\\-82.20553\\53\\-12.69531\\-82.31407\\53\\-10.74219\\-82.30943\\53\\-8.789063\\-82.19498\\53\\-2.929688\\-81.71249\\53\\0.9765625\\-81.33504\\53\\4.882813\\-81.17322\\53\\6.835938\\-81.14181\\53\\10.74219\\-81.25107\\53\\12.69531\\-81.39301\\53\\14.64844\\-81.43056\\53\\16.60156\\-81.23532\\53\\20.50781\\-80.41964\\53\\24.41406\\-79.51334\\53\\26.36719\\-78.87109\\53\\28.32031\\-78.3493\\53\\32.22656\\-77.58452\\53\\34.17969\\-77.13017\\53\\38.08594\\-76.49306\\53\\43.94531\\-76.32793\\53\\51.75781\\-76.32262\\53\\59.57031\\-76.61452\\53\\61.52344\\-76.81643\\53\\65.42969\\-77.33576\\53\\67.38281\\-77.67087\\53\\71.28906\\-78.08705\\53\\75.19531\\-78.69931\\53\\77.14844\\-79.06932\\53\\79.10156\\-79.55332\\53\\83.00781\\-80.2153\\53\\84.96094\\-80.46821\\53\\86.91406\\-80.83296\\53\\90.82031\\-81.89721\\53\\92.77344\\-82.22396\\53\\94.72656\\-82.67836\\53\\96.67969\\-83.48047\\53\\100.5859\\-84.76435\\53\\102.5391\\-85.65639\\53\\104.4922\\-86.26796\\53\\106.4453\\-87.22446\\53\\108.3984\\-87.94702\\53\\110.3516\\-88.85705\\53\\112.3047\\-89.93497\\53\\114.2578\\-91.26646\\53\\116.2109\\-92.49713\\53\\118.1641\\-93.9472\\53\\121.304\\-96.74219\\53\\123.1\\-98.69531\\53\\126.1636\\-102.6016\\53\\128.7802\\-106.5078\\53\\129.9235\\-108.4609\\53\\130.9105\\-110.4141\\53\\132.1929\\-112.3672\\53\\133.1772\\-114.3203\\53\\134.4342\\-116.2734\\53\\135.2572\\-118.2266\\53\\136.3294\\-120.1797\\53\\136.9153\\-122.1328\\53\\138.0568\\-124.0859\\53\\138.7775\\-126.0391\\53\\139.81\\-127.9922\\53\\141.3591\\-131.8984\\53\\142.2422\\-133.8516\\53\\142.7047\\-135.8047\\53\\143.3519\\-137.7578\\53\\144.2038\\-139.7109\\53\\144.6761\\-141.6641\\53\\146.2137\\-145.5703\\53\\146.7026\\-147.5234\\53\\147.4609\\-149.5723\\53\\148.0421\\-151.4297\\53\\148.7317\\-155.3359\\53\\149.1484\\-157.2891\\53\\149.7206\\-159.2422\\53\\150.1073\\-161.1953\\53\\150.7415\\-167.0547\\53\\151.6602\\-172.9141\\53\\151.8468\\-174.8672\\53\\152.0533\\-178.7734\\53\\152.1802\\-184.6328\\53\\152.1762\\-188.5391\\53\\152.0533\\-194.3984\\53\\151.9054\\-198.3047\\53\\151.6263\\-202.2109\\53\\150.6503\\-210.0234\\53\\150.3024\\-213.9297\\53\\150.0507\\-215.8828\\53\\149.6564\\-217.8359\\53\\149.047\\-219.7891\\53\\148.2738\\-223.6953\\53\\147.739\\-225.6484\\53\\146.8348\\-227.6016\\53\\146.1189\\-229.5547\\53\\144.928\\-231.5078\\53\\144.1274\\-233.4609\\53\\142.8885\\-235.4141\\53\\141.956\\-237.3672\\53\\140.5625\\-239.3203\\53\\137.3567\\-243.2266\\53\\135.8325\\-245.1797\\53\\133.7891\\-247.5628\\53\\131.8359\\-249.5242\\53\\128.232\\-252.9922\\53\\125.9669\\-254.9453\\53\\122.0703\\-257.9516\\53\\121.0272\\-258.8516\\53\\118.1641\\-261.0107\\53\\116.2109\\-262.1449\\53\\114.2578\\-263.4363\\53\\112.3047\\-264.3023\\53\\110.3516\\-265.5619\\53\\108.3644\\-266.6641\\53\\106.4453\\-267.618\\53\\102.5391\\-269.4047\\53\\100.5859\\-269.9552\\53\\98.63281\\-271.0119\\53\\96.67969\\-271.6656\\53\\94.72656\\-272.6042\\53\\92.77344\\-273.3719\\53\\90.82031\\-274.0204\\53\\88.86719\\-274.9419\\53\\84.96094\\-276.0042\\53\\83.00781\\-276.9433\\53\\81.05469\\-277.4859\\53\\77.14844\\-279.2701\\53\\75.19531\\-280.1057\\53\\73.24219\\-281.0435\\53\\71.28906\\-281.6787\\53\\69.33594\\-282.6727\\53\\67.38281\\-283.2827\\53\\65.42969\\-284.1259\\53\\63.47656\\-285.0993\\53\\61.52344\\-285.8831\\53\\59.57031\\-286.8705\\53\\57.61719\\-287.5158\\53\\55.66406\\-288.5155\\53\\53.71094\\-289.1074\\53\\51.75781\\-289.5906\\53\\49.80469\\-290.6128\\53\\47.85156\\-291.2027\\53\\43.94531\\-292.8289\\53\\41.99219\\-293.3961\\53\\40.03906\\-294.2641\\53\\38.08594\\-294.795\\53\\34.17969\\-295.6354\\53\\32.22656\\-296.4396\\53\\30.27344\\-296.8557\\53\\28.32031\\-297.1723\\53\\26.36719\\-297.6947\\53\\24.41406\\-298.3937\\53\\18.55469\\-299.3699\\53\\16.42072\\-299.8672\\53\\14.64844\\-300.182\\53\\10.74219\\-300.5608\\53\\2.929688\\-300.8954\\53\\-0.9765625\\-300.9373\\53\\-6.835938\\-300.782\\53\\-12.69531\\-300.4825\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "289"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "153"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-300.091\\55\\-18.55469\\-299.6127\\55\\-20.50781\\-299.2442\\55\\-24.41406\\-298.6671\\55\\-26.36719\\-298.301\\55\\-28.32031\\-297.6224\\55\\-30.27344\\-297.1897\\55\\-34.17969\\-296.6178\\55\\-38.08594\\-295.4694\\55\\-41.99219\\-294.8158\\55\\-43.94531\\-294.4049\\55\\-45.89844\\-293.6673\\55\\-49.80469\\-292.6396\\55\\-51.75781\\-291.792\\55\\-53.71094\\-291.1763\\55\\-55.66406\\-290.7186\\55\\-57.61719\\-289.8773\\55\\-59.57031\\-289.3096\\55\\-61.52344\\-288.9761\\55\\-63.47656\\-288.474\\55\\-65.42969\\-287.7022\\55\\-69.33594\\-286.7066\\55\\-71.28906\\-285.9096\\55\\-73.24219\\-285.3289\\55\\-75.19531\\-284.8492\\55\\-77.14844\\-284.0439\\55\\-79.10156\\-283.4284\\55\\-81.05469\\-283.1019\\55\\-83.00781\\-282.6358\\55\\-84.96094\\-281.9308\\55\\-86.91406\\-281.4125\\55\\-88.86719\\-281.012\\55\\-92.77344\\-279.5515\\55\\-94.72656\\-278.9784\\55\\-96.67969\\-277.9908\\55\\-100.5859\\-276.6684\\55\\-102.5391\\-275.6715\\55\\-104.4922\\-275.0484\\55\\-106.4453\\-273.8942\\55\\-108.3984\\-272.9324\\55\\-112.3047\\-270.1839\\55\\-114.2578\\-269.2031\\55\\-116.2109\\-267.7288\\55\\-120.1172\\-264.5187\\55\\-122.0703\\-263.0933\\55\\-124.0234\\-261.4125\\55\\-127.9297\\-257.5713\\55\\-128.6804\\-256.8984\\55\\-131.8359\\-253.5794\\55\\-134.1271\\-251.0391\\55\\-135.7422\\-248.9806\\55\\-136.9504\\-247.1328\\55\\-139.6484\\-243.6304\\55\\-140.024\\-243.2266\\55\\-142.4377\\-239.3203\\55\\-143.2683\\-237.3672\\55\\-144.3768\\-235.4141\\55\\-145.1801\\-233.4609\\55\\-146.247\\-231.5078\\55\\-146.9389\\-229.5547\\55\\-147.8985\\-227.6016\\55\\-148.8796\\-223.6953\\55\\-149.6153\\-221.7422\\55\\-150.142\\-219.7891\\55\\-150.8328\\-215.8828\\55\\-151.5416\\-213.9297\\55\\-152.0235\\-211.9766\\55\\-152.6384\\-208.0703\\55\\-153.5197\\-204.1641\\55\\-153.9659\\-200.2578\\55\\-154.1795\\-196.3516\\55\\-154.3135\\-192.4453\\55\\-154.2908\\-188.5391\\55\\-154.3674\\-184.6328\\55\\-154.1971\\-180.7266\\55\\-153.3203\\-179.244\\55\\-152.4431\\-178.7734\\55\\-151.6062\\-176.8203\\55\\-153.6873\\-174.8672\\55\\-153.4288\\-172.9141\\55\\-152.6493\\-169.0078\\55\\-152.0235\\-165.1016\\55\\-151.591\\-163.1484\\55\\-150.9209\\-161.1953\\55\\-150.512\\-159.2422\\55\\-150.224\\-157.2891\\55\\-149.817\\-155.3359\\55\\-149.1298\\-153.3828\\55\\-148.6217\\-151.4297\\55\\-148.2457\\-149.4766\\55\\-147.6647\\-147.5234\\55\\-146.839\\-145.5703\\55\\-146.2467\\-143.6172\\55\\-144.6332\\-139.7109\\55\\-144.0979\\-137.7578\\55\\-143.1245\\-135.8047\\55\\-141.9523\\-131.8984\\55\\-140.9486\\-129.9453\\55\\-140.2252\\-127.9922\\55\\-139.0425\\-126.0391\\55\\-138.3118\\-124.0859\\55\\-137.2621\\-122.1328\\55\\-136.5297\\-120.1797\\55\\-135.4047\\-118.2266\\55\\-134.5691\\-116.2734\\55\\-133.284\\-114.3203\\55\\-132.2198\\-112.3672\\55\\-130.821\\-110.4141\\55\\-129.8828\\-108.6746\\55\\-128.4317\\-106.5078\\55\\-125.9766\\-103.5851\\55\\-124.0234\\-101.4488\\55\\-121.1291\\-98.69531\\55\\-118.1641\\-96.11486\\55\\-116.2109\\-94.63572\\55\\-112.3047\\-92.34447\\55\\-110.3516\\-91.27202\\55\\-108.3984\\-89.9866\\55\\-104.4922\\-87.99695\\55\\-98.63281\\-85.55919\\55\\-96.67969\\-84.66662\\55\\-90.82031\\-82.19456\\55\\-88.86719\\-81.76185\\55\\-86.91406\\-80.99905\\55\\-84.96094\\-80.45584\\55\\-81.05469\\-79.58655\\55\\-79.10156\\-79.01546\\55\\-75.19531\\-78.19892\\55\\-71.28906\\-77.62385\\55\\-65.42969\\-76.61681\\55\\-61.52344\\-76.42847\\55\\-55.66406\\-76.26452\\55\\-51.75781\\-76.29429\\55\\-49.80469\\-76.40706\\55\\-45.89844\\-76.73882\\55\\-42.04102\\-77.21094\\55\\-40.03906\\-77.56065\\55\\-34.17969\\-78.37486\\55\\-32.22656\\-78.74812\\55\\-28.32031\\-79.71745\\55\\-22.46094\\-80.74483\\55\\-20.50781\\-81.367\\55\\-18.55469\\-81.84319\\55\\-16.60156\\-82.05824\\55\\-12.69531\\-82.25947\\55\\-8.789063\\-82.06398\\55\\-4.882813\\-81.72173\\55\\-2.929688\\-81.41599\\55\\2.929688\\-81.02985\\55\\6.835938\\-80.94171\\55\\10.74219\\-80.95443\\55\\14.64844\\-81.1254\\55\\16.60156\\-80.99905\\55\\20.50781\\-80.41964\\55\\24.41406\\-79.63527\\55\\26.36719\\-79.02863\\55\\30.27344\\-78.12505\\55\\32.22656\\-77.79567\\55\\36.13281\\-77.02393\\55\\40.03906\\-76.57983\\55\\41.99219\\-76.47852\\55\\51.75781\\-76.48779\\55\\55.66406\\-76.62628\\55\\61.52344\\-77.14436\\55\\67.38281\\-77.92371\\55\\69.33594\\-78.12347\\55\\73.24219\\-78.64211\\55\\77.14844\\-79.44206\\55\\81.05469\\-80.17336\\55\\84.96094\\-80.65248\\55\\86.83268\\-81.11719\\55\\88.86719\\-81.73631\\55\\92.77344\\-82.41724\\55\\96.67969\\-83.73484\\55\\98.63281\\-84.30585\\55\\102.5391\\-85.86758\\55\\104.4922\\-86.47883\\55\\106.4453\\-87.50497\\55\\108.3984\\-88.12215\\55\\110.3516\\-89.21983\\55\\112.3047\\-90.21107\\55\\116.2109\\-92.96114\\55\\118.1641\\-94.21825\\55\\120.1172\\-95.84806\\55\\122.9162\\-98.69531\\55\\124.4801\\-100.6484\\55\\125.9766\\-102.7139\\55\\128.63\\-106.5078\\55\\130.7752\\-110.4141\\55\\131.9627\\-112.3672\\55\\133.0205\\-114.3203\\55\\134.2364\\-116.2734\\55\\135.0932\\-118.2266\\55\\136.1677\\-120.1797\\55\\136.8049\\-122.1328\\55\\137.8046\\-124.0859\\55\\139.4821\\-127.9922\\55\\140.4657\\-129.9453\\55\\141.1513\\-131.8984\\55\\142.1348\\-133.8516\\55\\143.1518\\-137.7578\\55\\144.0677\\-139.7109\\55\\144.5726\\-141.6641\\55\\145.1801\\-143.6172\\55\\146.0779\\-145.5703\\55\\146.5727\\-147.5234\\55\\147.8929\\-151.4297\\55\\148.3004\\-153.3828\\55\\148.9898\\-157.2891\\55\\149.9821\\-161.1953\\55\\150.2551\\-163.1484\\55\\150.824\\-169.0078\\55\\151.4048\\-172.9141\\55\\151.8019\\-176.8203\\55\\151.9742\\-180.7266\\55\\152.0433\\-184.6328\\55\\152.03\\-188.5391\\55\\151.8809\\-194.3984\\55\\151.6712\\-198.3047\\55\\151.3134\\-202.2109\\55\\150.8665\\-206.1172\\55\\150.1684\\-213.9297\\55\\149.8306\\-215.8828\\55\\148.8255\\-219.7891\\55\\148.0862\\-223.6953\\55\\147.4609\\-225.4333\\55\\145.7896\\-229.5547\\55\\144.6574\\-231.5078\\55\\143.7789\\-233.4609\\55\\141.6016\\-237.2491\\55\\140.2391\\-239.3203\\55\\137.6953\\-242.4979\\55\\133.7891\\-246.9756\\55\\129.6794\\-251.0391\\55\\125.9766\\-254.4806\\55\\123.014\\-256.8984\\55\\120.1172\\-259.1221\\55\\116.2109\\-261.7686\\55\\114.2578\\-263.0316\\55\\112.3047\\-263.8747\\55\\110.3516\\-265.1358\\55\\108.3984\\-266.047\\55\\106.4453\\-267.2523\\55\\104.4922\\-268.0053\\55\\102.5391\\-269.0535\\55\\100.5859\\-269.6411\\55\\98.63281\\-270.4231\\55\\96.67969\\-271.3548\\55\\94.72656\\-271.9849\\55\\92.77344\\-272.9997\\55\\90.82031\\-273.6573\\55\\86.91406\\-275.2301\\55\\84.96094\\-275.7223\\55\\83.00781\\-276.5874\\55\\79.10156\\-277.9727\\55\\77.14844\\-279.1044\\55\\75.19531\\-279.8724\\55\\73.24219\\-280.9243\\55\\71.28906\\-281.5783\\55\\69.33594\\-282.5733\\55\\67.38281\\-283.2484\\55\\65.42969\\-284.0409\\55\\63.47656\\-285.0516\\55\\61.52344\\-285.8291\\55\\59.57031\\-286.8558\\55\\57.61719\\-287.5118\\55\\55.66406\\-288.5267\\55\\53.71094\\-289.1074\\55\\51.75781\\-289.5777\\55\\49.80469\\-290.6296\\55\\47.85156\\-291.2226\\55\\43.94531\\-292.8592\\55\\41.99219\\-293.464\\55\\40.03906\\-294.3109\\55\\38.08594\\-294.8323\\55\\36.13281\\-295.1932\\55\\34.17969\\-295.7222\\55\\32.22656\\-296.4897\\55\\28.32031\\-297.2033\\55\\24.41406\\-298.4603\\55\\18.55469\\-299.4188\\55\\16.60156\\-299.9048\\55\\14.64844\\-300.2263\\55\\10.74219\\-300.5759\\55\\6.835938\\-300.7699\\55\\0.9765625\\-300.9503\\55\\-2.929688\\-300.932\\55\\-6.835938\\-300.8154\\55\\-12.69531\\-300.5275\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "299"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "154"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-300.1377\\57\\-20.50781\\-299.2951\\57\\-24.41406\\-298.7001\\57\\-26.36719\\-298.3488\\57\\-28.32031\\-297.6822\\57\\-30.27344\\-297.2142\\57\\-34.17969\\-296.6405\\57\\-36.13281\\-296.1175\\57\\-38.08594\\-295.4825\\57\\-41.99219\\-294.8341\\57\\-43.94531\\-294.4023\\57\\-45.89844\\-293.6521\\57\\-49.80469\\-292.6396\\57\\-51.75781\\-291.7357\\57\\-53.71094\\-291.1216\\57\\-55.66406\\-290.6572\\57\\-57.61719\\-289.7286\\57\\-59.57031\\-289.2537\\57\\-61.52344\\-288.8945\\57\\-63.47656\\-288.3186\\57\\-65.42969\\-287.5479\\57\\-69.33594\\-286.5418\\57\\-71.28906\\-285.6804\\57\\-75.19531\\-284.6291\\57\\-77.14844\\-283.7603\\57\\-81.05469\\-282.9254\\57\\-84.96094\\-281.6486\\57\\-88.86719\\-280.7581\\57\\-90.82031\\-279.8955\\57\\-94.72656\\-278.6066\\57\\-96.67969\\-277.649\\57\\-98.63281\\-277.118\\57\\-100.5859\\-276.16\\57\\-104.4922\\-274.7153\\57\\-104.8177\\-274.4766\\57\\-108.3139\\-272.5234\\57\\-110.3516\\-271.2896\\57\\-112.3047\\-269.8746\\57\\-114.2578\\-268.867\\57\\-116.2109\\-267.4364\\57\\-120.1172\\-264.1055\\57\\-122.0064\\-262.7578\\57\\-124.2247\\-260.8047\\57\\-128.3763\\-256.8984\\57\\-130.2279\\-254.9453\\57\\-133.7891\\-250.823\\57\\-135.7422\\-248.5017\\57\\-136.6828\\-247.1328\\57\\-138.19\\-245.1797\\57\\-139.6484\\-243.1271\\57\\-142.216\\-239.3203\\57\\-143.0092\\-237.3672\\57\\-144.1606\\-235.4141\\57\\-144.8938\\-233.4609\\57\\-146.0202\\-231.5078\\57\\-146.6964\\-229.5547\\57\\-147.6249\\-227.6016\\57\\-148.2689\\-225.6484\\57\\-148.6955\\-223.6953\\57\\-149.9821\\-219.7891\\57\\-150.6575\\-215.8828\\57\\-151.1574\\-213.9297\\57\\-151.8019\\-211.9766\\57\\-152.1752\\-210.0234\\57\\-152.7861\\-206.1172\\57\\-153.556\\-202.2109\\57\\-153.7823\\-200.2578\\57\\-154.031\\-196.3516\\57\\-154.1998\\-190.4922\\57\\-154.1901\\-184.6328\\57\\-154.1491\\-182.6797\\57\\-153.755\\-180.7266\\57\\-153.3203\\-180.2919\\57\\-151.3672\\-179.8018\\57\\-149.4141\\-181.1705\\57\\-147.4609\\-181.0335\\57\\-145.5078\\-180.0368\\57\\-143.5547\\-179.474\\57\\-142.4037\\-178.7734\\57\\-143.5547\\-177.6992\\57\\-144.2871\\-176.8203\\57\\-145.2456\\-174.8672\\57\\-145.5078\\-174.5627\\57\\-147.4609\\-173.087\\57\\-149.4141\\-173.3349\\57\\-151.3672\\-173.9317\\57\\-151.9134\\-172.9141\\57\\-152.491\\-170.9609\\57\\-152.4193\\-169.0078\\57\\-152.1474\\-167.0547\\57\\-151.7639\\-165.1016\\57\\-151.1302\\-163.1484\\57\\-150.6564\\-161.1953\\57\\-150.0423\\-157.2891\\57\\-148.8607\\-153.3828\\57\\-148.0493\\-149.4766\\57\\-147.24\\-147.5234\\57\\-145.9872\\-143.6172\\57\\-145.0133\\-141.6641\\57\\-144.439\\-139.7109\\57\\-143.7645\\-137.7578\\57\\-142.881\\-135.8047\\57\\-142.3816\\-133.8516\\57\\-140.6883\\-129.9453\\57\\-139.9075\\-127.9922\\57\\-138.7906\\-126.0391\\57\\-138.0143\\-124.0859\\57\\-137.0124\\-122.1328\\57\\-136.2953\\-120.1797\\57\\-135.1149\\-118.2266\\57\\-134.3061\\-116.2734\\57\\-132.9773\\-114.3203\\57\\-130.6839\\-110.4141\\57\\-128.1389\\-106.5078\\57\\-126.4986\\-104.5547\\57\\-124.0234\\-101.778\\57\\-120.785\\-98.69531\\57\\-118.4346\\-96.74219\\57\\-118.1641\\-96.4342\\57\\-115.9668\\-94.78906\\57\\-114.2578\\-93.82449\\57\\-112.3047\\-92.59004\\57\\-110.3516\\-91.6725\\57\\-108.3984\\-90.34956\\57\\-106.4453\\-89.43436\\57\\-104.4922\\-88.23599\\57\\-102.5391\\-87.60291\\57\\-100.5859\\-86.61713\\57\\-98.63281\\-85.82076\\57\\-94.72656\\-84.02403\\57\\-92.77344\\-83.27855\\57\\-90.82031\\-82.38287\\57\\-86.91406\\-81.39092\\57\\-84.96094\\-80.65248\\57\\-83.00781\\-80.26481\\57\\-79.10156\\-79.35043\\57\\-77.14844\\-78.80724\\57\\-73.24219\\-78.07589\\57\\-65.42969\\-76.95467\\57\\-61.52344\\-76.61734\\57\\-55.66406\\-76.395\\57\\-53.71094\\-76.37666\\57\\-49.80469\\-76.56208\\57\\-43.94531\\-77.24879\\57\\-40.03906\\-77.81236\\57\\-36.13281\\-78.26307\\57\\-32.22656\\-79.06932\\57\\-30.27344\\-79.58836\\57\\-24.41406\\-80.5863\\57\\-20.50781\\-81.64925\\57\\-18.55469\\-81.94634\\57\\-16.60156\\-82.12352\\57\\-12.69531\\-82.18961\\57\\-8.789063\\-81.95159\\57\\-4.882813\\-81.50924\\57\\-0.9765625\\-81.1254\\57\\2.929688\\-80.91436\\57\\4.882813\\-80.85825\\57\\10.74219\\-80.80614\\57\\14.64844\\-80.88609\\57\\16.60156\\-80.83296\\57\\18.55469\\-80.66281\\57\\22.46094\\-80.21276\\57\\26.36719\\-79.29688\\57\\28.32031\\-78.73869\\57\\32.22656\\-77.97443\\57\\36.13281\\-77.32191\\57\\40.03906\\-76.83794\\57\\41.99219\\-76.71606\\57\\51.75781\\-76.72266\\57\\55.66406\\-76.92911\\57\\59.57031\\-77.24879\\57\\69.33594\\-78.29058\\57\\73.24219\\-78.90498\\57\\75.19531\\-79.36382\\57\\77.14844\\-79.71017\\57\\81.05469\\-80.28257\\57\\83.00781\\-80.51476\\57\\84.96094\\-80.88432\\57\\86.91406\\-81.45467\\57\\88.86719\\-81.89233\\57\\92.77344\\-82.61808\\57\\94.72656\\-83.34431\\57\\98.63281\\-84.50539\\57\\100.5859\\-85.44662\\57\\102.5391\\-86.04414\\57\\104.4922\\-86.76522\\57\\106.4453\\-87.72631\\57\\108.3984\\-88.36501\\57\\110.3516\\-89.54479\\57\\112.3047\\-90.48301\\57\\115.7227\\-92.83594\\57\\116.2109\\-93.26412\\57\\118.1641\\-94.53329\\57\\120.1172\\-96.15244\\57\\122.6232\\-98.69531\\57\\124.1962\\-100.6484\\57\\128.4849\\-106.5078\\57\\129.4994\\-108.4609\\57\\130.677\\-110.4141\\57\\131.6745\\-112.3672\\57\\134.086\\-116.2734\\57\\134.9383\\-118.2266\\57\\135.9751\\-120.1797\\57\\137.5351\\-124.0859\\57\\138.5091\\-126.0391\\57\\139.2513\\-127.9922\\57\\140.3393\\-129.9453\\57\\141.0074\\-131.8984\\57\\141.9881\\-133.8516\\57\\142.5484\\-135.8047\\57\\143.0086\\-137.7578\\57\\143.9116\\-139.7109\\57\\145.0103\\-143.6172\\57\\145.9358\\-145.5703\\57\\146.9974\\-149.4766\\57\\147.739\\-151.4297\\57\\148.1992\\-153.3828\\57\\148.8643\\-157.2891\\57\\149.8413\\-161.1953\\57\\150.1539\\-163.1484\\57\\150.8852\\-170.9609\\57\\151.591\\-176.8203\\57\\151.724\\-178.7734\\57\\151.864\\-182.6797\\57\\151.864\\-188.5391\\57\\151.7442\\-192.4453\\57\\151.5542\\-196.3516\\57\\150.824\\-204.1641\\57\\150.2125\\-211.9766\\57\\149.9602\\-213.9297\\57\\149.559\\-215.8828\\57\\149.0111\\-217.8359\\57\\148.3104\\-221.7422\\57\\147.8581\\-223.6953\\57\\146.9974\\-225.6484\\57\\146.3397\\-227.6016\\57\\144.4246\\-231.5078\\57\\143.2957\\-233.4609\\57\\142.4216\\-235.4141\\57\\139.8186\\-239.3203\\57\\137.6953\\-242.0625\\57\\135.035\\-245.1797\\57\\131.8359\\-248.5474\\57\\129.2894\\-251.0391\\57\\125.9766\\-254.0932\\57\\124.0234\\-255.7173\\57\\122.0703\\-257.1928\\57\\120.1172\\-258.4568\\57\\116.2109\\-261.3919\\57\\114.2578\\-262.3916\\57\\112.3047\\-263.587\\57\\110.0426\\-264.7109\\57\\106.4453\\-266.6718\\57\\100.5859\\-269.3898\\57\\98.63281\\-269.9257\\57\\96.67969\\-270.9341\\57\\94.72656\\-271.6151\\57\\92.77344\\-272.4258\\57\\90.82031\\-273.3472\\57\\88.86719\\-274.004\\57\\86.91406\\-274.9616\\57\\84.96094\\-275.5194\\57\\83.00781\\-276.1855\\57\\81.05469\\-277.1321\\57\\79.10156\\-277.7695\\57\\77.14844\\-278.9064\\57\\75.19531\\-279.7098\\57\\73.24219\\-280.8085\\57\\71.28906\\-281.4945\\57\\69.33594\\-282.4645\\57\\65.42969\\-283.9745\\57\\63.47656\\-285.0308\\57\\61.52344\\-285.806\\57\\59.57031\\-286.8558\\57\\57.61719\\-287.5118\\57\\55.66406\\-288.5155\\57\\51.75781\\-289.6432\\57\\49.80469\\-290.6809\\57\\47.85156\\-291.2442\\57\\45.89844\\-292.1494\\57\\43.94531\\-292.9067\\57\\41.99219\\-293.5136\\57\\40.03906\\-294.3814\\57\\38.08594\\-294.8674\\57\\36.13281\\-295.2423\\57\\34.17969\\-295.8032\\57\\32.22656\\-296.5372\\57\\28.32031\\-297.2612\\57\\24.41406\\-298.5138\\57\\20.50781\\-299.144\\57\\16.60156\\-300.0026\\57\\14.64844\\-300.2787\\57\\10.74219\\-300.5982\\57\\6.835938\\-300.804\\57\\0.9765625\\-300.9908\\57\\-0.9765625\\-300.9976\\57\\-6.835938\\-300.8438\\57\\-12.69531\\-300.5569\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "301"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "155"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-300.1711\\59\\-20.50781\\-299.3404\\59\\-26.36719\\-298.3937\\59\\-28.32031\\-297.7477\\59\\-30.27344\\-297.2465\\59\\-34.17969\\-296.6593\\59\\-36.13281\\-296.1723\\59\\-38.08594\\-295.4956\\59\\-41.99219\\-294.8391\\59\\-43.94531\\-294.4049\\59\\-45.89844\\-293.6392\\59\\-49.80469\\-292.6166\\59\\-51.75781\\-291.6909\\59\\-53.71094\\-291.0877\\59\\-55.66406\\-290.5956\\59\\-57.61719\\-289.6393\\59\\-61.52344\\-288.8098\\59\\-65.42969\\-287.4218\\59\\-67.38281\\-286.9502\\59\\-69.33594\\-286.3174\\59\\-71.28906\\-285.4846\\59\\-73.24219\\-284.9938\\59\\-77.14844\\-283.5463\\59\\-81.05469\\-282.6838\\59\\-83.00781\\-281.9333\\59\\-86.91406\\-281.0044\\59\\-88.86719\\-280.3588\\59\\-90.82031\\-279.5536\\59\\-92.77344\\-278.9987\\59\\-94.72656\\-278.0596\\59\\-98.63281\\-276.7804\\59\\-100.5859\\-275.8146\\59\\-102.5391\\-275.2517\\59\\-106.4453\\-273.3015\\59\\-108.3984\\-271.9698\\59\\-110.3516\\-270.9648\\59\\-116.2109\\-267.0756\\59\\-120.1172\\-263.7461\\59\\-121.5041\\-262.7578\\59\\-123.7146\\-260.8047\\59\\-125.9766\\-258.625\\59\\-127.8865\\-256.8984\\59\\-129.8828\\-254.8477\\59\\-131.3726\\-252.9922\\59\\-134.8778\\-249.0859\\59\\-136.4553\\-247.1328\\59\\-139.1236\\-243.2266\\59\\-140.6136\\-241.2734\\59\\-141.9103\\-239.3203\\59\\-142.7847\\-237.3672\\59\\-143.9006\\-235.4141\\59\\-144.6607\\-233.4609\\59\\-145.721\\-231.5078\\59\\-147.2572\\-227.6016\\59\\-148.0818\\-225.6484\\59\\-149.0331\\-221.7422\\59\\-149.7467\\-219.7891\\59\\-150.1988\\-217.8359\\59\\-150.8634\\-213.9297\\59\\-151.5158\\-211.9766\\59\\-151.9954\\-210.0234\\59\\-152.8503\\-204.1641\\59\\-153.5441\\-200.2578\\59\\-153.8597\\-196.3516\\59\\-153.9477\\-194.3984\\59\\-154.0514\\-188.5391\\59\\-154.0232\\-184.6328\\59\\-153.9368\\-182.6797\\59\\-153.3203\\-181.8437\\59\\-151.3672\\-180.7744\\59\\-149.4141\\-182.2689\\59\\-147.4609\\-182.3821\\59\\-145.0331\\-180.7266\\59\\-143.5547\\-179.9874\\59\\-141.6016\\-179.6632\\59\\-140.479\\-178.7734\\59\\-143.0249\\-174.8672\\59\\-143.5547\\-173.7353\\59\\-144.1569\\-172.9141\\59\\-145.5078\\-171.7221\\59\\-147.4609\\-171.1296\\59\\-149.4141\\-172.0051\\59\\-151.3672\\-171.6743\\59\\-151.9695\\-170.9609\\59\\-152.2021\\-169.0078\\59\\-151.9165\\-167.0547\\59\\-150.8031\\-163.1484\\59\\-150.1918\\-159.2422\\59\\-149.7724\\-157.2891\\59\\-149.0583\\-155.3359\\59\\-148.2457\\-151.4297\\59\\-147.739\\-149.4766\\59\\-146.8918\\-147.5234\\59\\-146.3486\\-145.5703\\59\\-145.6442\\-143.6172\\59\\-144.7477\\-141.6641\\59\\-144.2115\\-139.7109\\59\\-143.2977\\-137.7578\\59\\-142.1513\\-133.8516\\59\\-141.1611\\-131.8984\\59\\-140.4224\\-129.9453\\59\\-139.4149\\-127.9922\\59\\-137.5781\\-124.0859\\59\\-135.9652\\-120.1797\\59\\-134.8748\\-118.2266\\59\\-133.9673\\-116.2734\\59\\-131.8359\\-112.9292\\59\\-131.4135\\-112.3672\\59\\-130.4803\\-110.4141\\59\\-127.9297\\-106.7302\\59\\-126.2008\\-104.5547\\59\\-124.0234\\-102.1133\\59\\-122.5586\\-100.6484\\59\\-120.1172\\-98.44783\\59\\-117.9874\\-96.74219\\59\\-115.4199\\-94.78906\\59\\-114.2578\\-94.02951\\59\\-112.3047\\-93.06432\\59\\-110.3516\\-91.98356\\59\\-108.3984\\-90.78807\\59\\-106.4453\\-89.76421\\59\\-104.4922\\-88.59423\\59\\-102.5391\\-87.86041\\59\\-100.5859\\-86.87581\\59\\-96.67969\\-85.22784\\59\\-94.72656\\-84.21061\\59\\-92.77344\\-83.53625\\59\\-90.82031\\-82.64008\\59\\-88.86719\\-82.09978\\59\\-86.91406\\-81.7005\\59\\-84.96094\\-80.89934\\59\\-83.00781\\-80.40751\\59\\-79.10156\\-79.66537\\59\\-77.14844\\-79.11188\\59\\-73.24219\\-78.27267\\59\\-63.47656\\-77.04935\\59\\-61.52344\\-76.90576\\59\\-57.61719\\-76.79057\\59\\-55.66406\\-76.63197\\59\\-53.71094\\-76.60059\\59\\-49.80469\\-76.87395\\59\\-45.89844\\-77.37856\\59\\-38.08594\\-78.24995\\59\\-36.13281\\-78.56175\\59\\-32.22656\\-79.48959\\59\\-26.36719\\-80.44348\\59\\-24.41406\\-80.87119\\59\\-22.46094\\-81.41824\\59\\-20.50781\\-81.86213\\59\\-16.60156\\-82.15925\\59\\-14.64844\\-82.19498\\59\\-12.69531\\-82.12389\\59\\-8.789063\\-81.83844\\59\\-4.882813\\-81.36319\\59\\-0.9765625\\-81\\59\\2.929688\\-80.84754\\59\\10.74219\\-80.68392\\59\\14.64844\\-80.70856\\59\\18.55469\\-80.59592\\59\\22.46094\\-80.24223\\59\\24.41406\\-79.81726\\59\\26.36719\\-79.49908\\59\\28.32031\\-78.98968\\59\\32.22656\\-78.1875\\59\\36.13281\\-77.62109\\59\\40.03906\\-77.15875\\59\\41.99219\\-77.06233\\59\\45.89844\\-77.02393\\59\\51.75781\\-77.0755\\59\\55.66406\\-77.23419\\59\\59.57031\\-77.55599\\59\\67.38281\\-78.25964\\59\\71.28906\\-78.79707\\59\\75.19531\\-79.61221\\59\\79.10156\\-80.18741\\59\\83.00781\\-80.70856\\59\\86.91406\\-81.72832\\59\\90.82031\\-82.37276\\59\\92.77344\\-82.88947\\59\\94.72656\\-83.59902\\59\\96.67969\\-84.13809\\59\\98.63281\\-84.78442\\59\\100.5859\\-85.68821\\59\\102.5391\\-86.25128\\59\\104.4922\\-87.14063\\59\\108.3984\\-88.63089\\59\\112.2735\\-90.88281\\59\\115.3129\\-92.83594\\59\\117.998\\-94.78906\\59\\120.1172\\-96.51839\\59\\122.2486\\-98.69531\\59\\124.0234\\-100.8349\\59\\125.9766\\-103.3224\\59\\128.3075\\-106.5078\\59\\129.3335\\-108.4609\\59\\130.5565\\-110.4141\\59\\131.4439\\-112.3672\\59\\131.8359\\-112.8923\\59\\133.8412\\-116.2734\\59\\135.7422\\-120.1448\\59\\136.6349\\-122.1328\\59\\137.3033\\-124.0859\\59\\138.3921\\-126.0391\\59\\139.0947\\-127.9922\\59\\140.2213\\-129.9453\\59\\140.8705\\-131.8984\\59\\141.8258\\-133.8516\\59\\142.4583\\-135.8047\\59\\142.9224\\-137.7578\\59\\143.7383\\-139.7109\\59\\144.379\\-141.6641\\59\\144.8817\\-143.6172\\59\\145.7553\\-145.5703\\59\\146.3629\\-147.5234\\59\\146.8307\\-149.4766\\59\\147.5571\\-151.4297\\59\\148.1022\\-153.3828\\59\\149.0979\\-159.2422\\59\\149.6434\\-161.1953\\59\\150.0299\\-163.1484\\59\\150.2615\\-165.1016\\59\\150.7142\\-170.9609\\59\\151.448\\-178.7734\\59\\151.649\\-182.6797\\59\\151.6377\\-188.5391\\59\\151.4893\\-192.4453\\59\\151.0237\\-198.3047\\59\\150.2355\\-210.0234\\59\\150.0338\\-211.9766\\59\\149.7206\\-213.9297\\59\\149.1995\\-215.8828\\59\\148.7903\\-217.8359\\59\\148.1297\\-221.7422\\59\\147.5285\\-223.6953\\59\\146.7203\\-225.6484\\59\\146.0714\\-227.6016\\59\\144.9542\\-229.5547\\59\\144.1833\\-231.5078\\59\\142.9269\\-233.4609\\59\\142.1274\\-235.4141\\59\\139.2645\\-239.3203\\59\\137.8823\\-241.2734\\59\\136.3253\\-243.2266\\59\\134.6608\\-245.1797\\59\\131.8359\\-248.1975\\59\\128.9135\\-251.0391\\59\\125.9766\\-253.6613\\59\\124.0234\\-255.3255\\59\\121.8284\\-256.8984\\59\\120.1172\\-258.0289\\59\\118.1641\\-259.5456\\59\\116.2109\\-260.8761\\59\\114.2578\\-261.9628\\59\\112.3047\\-263.2004\\59\\110.3516\\-264.0024\\59\\108.3984\\-265.2082\\59\\106.4453\\-266.0432\\59\\104.4922\\-267.2087\\59\\102.5391\\-267.9767\\59\\100.5859\\-268.9895\\59\\96.67969\\-270.3374\\59\\94.72656\\-271.2868\\59\\92.77344\\-271.9375\\59\\90.82031\\-272.9934\\59\\88.86719\\-273.6655\\59\\86.91406\\-274.5742\\59\\84.96094\\-275.3197\\59\\83.00781\\-275.9049\\59\\81.05469\\-276.9339\\59\\79.10156\\-277.5848\\59\\77.14844\\-278.7105\\59\\75.19531\\-279.5558\\59\\73.24219\\-280.6771\\59\\71.28906\\-281.4217\\59\\69.33594\\-282.3764\\59\\65.42969\\-283.9237\\59\\63.47656\\-285.014\\59\\61.52344\\-285.7732\\59\\59.57031\\-286.8558\\59\\57.61719\\-287.5242\\59\\55.66406\\-288.5377\\59\\51.75781\\-289.6773\\59\\49.80469\\-290.7259\\59\\47.85156\\-291.2951\\59\\45.89844\\-292.2664\\59\\41.99219\\-293.5786\\59\\40.03906\\-294.4482\\59\\36.13281\\-295.2915\\59\\34.17969\\-295.8906\\59\\32.22656\\-296.5983\\59\\28.32031\\-297.3304\\59\\26.36719\\-298.0226\\59\\24.41406\\-298.5634\\59\\20.50781\\-299.2033\\59\\16.60156\\-300.0789\\59\\12.69531\\-300.5051\\59\\6.835938\\-300.838\\59\\0.9765625\\-301.0095\\59\\-2.929688\\-300.9875\\59\\-8.789063\\-300.7927\\59\\-14.64844\\-300.4244\\59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "290"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "156"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-299.8748\\61\\-20.50781\\-299.385\\61\\-26.36719\\-298.4442\\61\\-30.27344\\-297.2798\\61\\-34.17969\\-296.6878\\61\\-36.13281\\-296.1979\\61\\-38.08594\\-295.5396\\61\\-41.99219\\-294.8457\\61\\-43.94531\\-294.4049\\61\\-45.89844\\-293.621\\61\\-49.80469\\-292.5848\\61\\-51.75781\\-291.6478\\61\\-55.66406\\-290.5227\\61\\-57.61719\\-289.5752\\61\\-61.52344\\-288.7255\\61\\-63.47656\\-287.9387\\61\\-65.42969\\-287.2946\\61\\-67.38281\\-286.8118\\61\\-71.28906\\-285.337\\61\\-73.24219\\-284.817\\61\\-75.19531\\-283.9305\\61\\-77.14844\\-283.3723\\61\\-79.10156\\-283.0109\\61\\-83.00781\\-281.6693\\61\\-86.91406\\-280.7554\\61\\-88.86719\\-279.9138\\61\\-92.77344\\-278.6202\\61\\-94.72656\\-277.6659\\61\\-96.67969\\-277.155\\61\\-98.63281\\-276.2695\\61\\-102.5391\\-274.9745\\61\\-104.4922\\-273.8513\\61\\-106.4453\\-272.9718\\61\\-108.3984\\-271.6283\\61\\-110.3516\\-270.4645\\61\\-112.3047\\-269.4047\\61\\-116.128\\-266.6641\\61\\-121.0556\\-262.7578\\61\\-124.0234\\-260.115\\61\\-125.9766\\-258.1634\\61\\-127.3831\\-256.8984\\61\\-129.8828\\-254.3795\\61\\-131.0179\\-252.9922\\61\\-133.7891\\-249.9031\\61\\-134.5952\\-249.0859\\61\\-136.1515\\-247.1328\\61\\-137.3004\\-245.1797\\61\\-140.3402\\-241.2734\\61\\-141.6016\\-239.1539\\61\\-142.5721\\-237.3672\\61\\-144.4581\\-233.4609\\61\\-145.2743\\-231.5078\\61\\-146.2709\\-229.5547\\61\\-146.931\\-227.6016\\61\\-147.8554\\-225.6484\\61\\-148.8116\\-221.7422\\61\\-150.0547\\-217.8359\\61\\-150.6575\\-213.9297\\61\\-151.1446\\-211.9766\\61\\-151.7736\\-210.0234\\61\\-152.1317\\-208.0703\\61\\-152.6096\\-204.1641\\61\\-153.4557\\-198.3047\\61\\-153.6564\\-196.3516\\61\\-153.8616\\-190.4922\\61\\-153.8696\\-186.5859\\61\\-153.8201\\-184.6328\\61\\-153.6668\\-182.6797\\61\\-153.3203\\-182.3332\\61\\-151.3672\\-181.3812\\61\\-150.1855\\-182.6797\\61\\-149.4141\\-183.2307\\61\\-147.4609\\-183.5457\\61\\-145.6956\\-182.6797\\61\\-143.5547\\-181.1632\\61\\-141.6016\\-180.3197\\61\\-139.474\\-178.7734\\61\\-139.6564\\-176.8203\\61\\-139.513\\-172.9141\\61\\-140.4188\\-170.9609\\61\\-141.6016\\-169.7232\\61\\-143.5547\\-169.1693\\61\\-145.5078\\-170.128\\61\\-147.4609\\-171.3153\\61\\-149.4141\\-171.888\\61\\-151.3672\\-171.2713\\61\\-151.6377\\-170.9609\\61\\-151.9815\\-169.0078\\61\\-151.591\\-167.0547\\61\\-150.9647\\-165.1016\\61\\-150.5737\\-163.1484\\61\\-149.9821\\-159.2422\\61\\-148.8037\\-155.3359\\61\\-148.0336\\-151.4297\\61\\-146.6293\\-147.5234\\61\\-146.1118\\-145.5703\\61\\-145.1755\\-143.6172\\61\\-143.9572\\-139.7109\\61\\-142.992\\-137.7578\\61\\-142.5126\\-135.8047\\61\\-141.8653\\-133.8516\\61\\-140.8636\\-131.8984\\61\\-140.1567\\-129.9453\\61\\-139.0265\\-127.9922\\61\\-138.3064\\-126.0391\\61\\-137.2104\\-124.0859\\61\\-136.5591\\-122.1328\\61\\-134.6656\\-118.2266\\61\\-132.4811\\-114.3203\\61\\-131.1128\\-112.3672\\61\\-130.1962\\-110.4141\\61\\-128.887\\-108.4609\\61\\-127.4414\\-106.5078\\61\\-124.0234\\-102.4063\\61\\-122.0703\\-100.4516\\61\\-116.2109\\-95.67622\\61\\-114.2578\\-94.26591\\61\\-112.3047\\-93.54788\\61\\-110.3516\\-92.23544\\61\\-108.3984\\-91.29082\\61\\-106.4453\\-90.0232\\61\\-102.5391\\-87.99045\\61\\-100.5859\\-87.21494\\61\\-98.63281\\-86.25024\\61\\-96.67969\\-85.49464\\61\\-94.72656\\-84.49847\\61\\-90.82031\\-82.94061\\61\\-88.86719\\-82.27348\\61\\-86.91406\\-81.86983\\61\\-83.00781\\-80.5863\\61\\-81.05469\\-80.25352\\61\\-77.14844\\-79.47796\\61\\-75.19531\\-78.91658\\61\\-71.28906\\-78.20415\\61\\-67.38281\\-77.75209\\61\\-61.52344\\-77.27855\\61\\-57.61719\\-77.10243\\61\\-53.71094\\-77.06125\\61\\-51.75781\\-77.10162\\61\\-49.80469\\-77.24938\\61\\-47.85156\\-77.50875\\61\\-40.03906\\-78.25603\\61\\-36.13281\\-78.90498\\61\\-34.17969\\-79.377\\61\\-26.36719\\-80.64925\\61\\-22.46094\\-81.77915\\61\\-20.50781\\-82.00883\\61\\-16.60156\\-82.18961\\61\\-14.64844\\-82.18307\\61\\-8.789063\\-81.71764\\61\\-6.835938\\-81.41824\\61\\-2.929688\\-81.02985\\61\\0.9765625\\-80.87305\\61\\10.74219\\-80.59592\\61\\12.69531\\-80.61894\\61\\18.55469\\-80.54539\\61\\22.46094\\-80.27769\\61\\26.36719\\-79.64902\\61\\32.22656\\-78.45845\\61\\34.17969\\-78.11193\\61\\38.08594\\-77.66412\\61\\40.03906\\-77.52317\\61\\45.89844\\-77.402\\61\\47.85156\\-77.46539\\61\\51.75781\\-77.47727\\61\\59.57031\\-77.82494\\61\\63.47656\\-78.09209\\61\\65.42969\\-78.28291\\61\\69.33594\\-78.78703\\61\\73.24219\\-79.51729\\61\\79.10156\\-80.36095\\61\\81.05469\\-80.59941\\61\\83.00781\\-80.96992\\61\\84.96094\\-81.56108\\61\\88.86719\\-82.19901\\61\\90.82031\\-82.58527\\61\\92.77344\\-83.28655\\61\\96.67969\\-84.34779\\61\\98.63281\\-85.23016\\61\\102.5391\\-86.48828\\61\\104.4922\\-87.47509\\61\\106.4453\\-88.06909\\61\\108.2571\\-88.92969\\61\\110.3516\\-90.04331\\61\\112.3047\\-91.3381\\61\\114.2578\\-92.42954\\61\\116.2109\\-93.75935\\61\\118.1641\\-95.24144\\61\\119.9236\\-96.74219\\61\\121.9636\\-98.69531\\61\\124.0234\\-101.0853\\61\\125.9766\\-103.5935\\61\\128.108\\-106.5078\\61\\129.1311\\-108.4609\\61\\130.4268\\-110.4141\\61\\131.2825\\-112.3672\\61\\132.5726\\-114.3203\\61\\134.6628\\-118.2266\\61\\136.5345\\-122.1328\\61\\137.1094\\-124.0859\\61\\138.2674\\-126.0391\\61\\138.9732\\-127.9922\\61\\140.1014\\-129.9453\\61\\140.7424\\-131.8984\\61\\141.625\\-133.8516\\61\\142.3523\\-135.8047\\61\\142.8238\\-137.7578\\61\\144.2734\\-141.6641\\61\\144.7822\\-143.6172\\61\\146.2506\\-147.5234\\61\\146.6936\\-149.4766\\61\\148.0008\\-153.3828\\61\\148.9324\\-159.2422\\61\\149.8756\\-163.1484\\61\\150.3361\\-167.0547\\61\\150.5652\\-170.9609\\61\\150.8758\\-174.8672\\61\\151.3438\\-182.6797\\61\\151.3593\\-186.5859\\61\\151.2688\\-190.4922\\61\\150.2728\\-208.0703\\61\\149.8088\\-211.9766\\61\\148.9324\\-215.8828\\61\\148.3054\\-219.7891\\61\\147.9245\\-221.7422\\61\\147.1444\\-223.6953\\61\\145.7669\\-227.6016\\61\\144.678\\-229.5547\\61\\143.8184\\-231.5078\\61\\142.7237\\-233.4609\\61\\141.7908\\-235.4141\\61\\140.4474\\-237.3672\\61\\137.33\\-241.2734\\61\\136\\-243.2266\\61\\134.2564\\-245.1797\\61\\133.7891\\-245.5912\\61\\131.8359\\-247.7691\\61\\130.3986\\-249.0859\\61\\128.4433\\-251.0391\\61\\125.9766\\-253.1904\\61\\123.8281\\-254.9453\\61\\121.251\\-256.8984\\61\\114.2578\\-261.6375\\61\\112.3047\\-262.5963\\61\\110.3516\\-263.6616\\61\\108.1848\\-264.7109\\61\\104.4573\\-266.6641\\61\\102.5391\\-267.6009\\61\\100.5859\\-268.3785\\61\\98.63281\\-269.3417\\61\\96.67969\\-269.8962\\61\\94.72656\\-270.9237\\61\\92.77344\\-271.5985\\61\\88.86719\\-273.3863\\61\\86.91406\\-274.14\\61\\84.96094\\-275.1338\\61\\83.00781\\-275.6912\\61\\81.05469\\-276.7198\\61\\79.10156\\-277.4499\\61\\77.14844\\-278.4913\\61\\75.19531\\-279.4333\\61\\73.24219\\-280.5427\\61\\71.28906\\-281.361\\61\\67.38281\\-283.1721\\61\\65.42969\\-283.9004\\61\\63.47656\\-284.9839\\61\\61.52344\\-285.7634\\61\\59.57031\\-286.8744\\61\\57.61719\\-287.5537\\61\\55.66406\\-288.5862\\61\\51.75781\\-289.7598\\61\\49.80469\\-290.7852\\61\\47.85156\\-291.3526\\61\\45.89844\\-292.3695\\61\\41.99219\\-293.7068\\61\\40.03906\\-294.5241\\61\\36.13281\\-295.3367\\61\\32.22656\\-296.6593\\61\\28.32031\\-297.4228\\61\\26.36719\\-298.1498\\61\\24.41406\\-298.6229\\61\\20.50781\\-299.2836\\61\\16.60156\\-300.1602\\61\\14.64844\\-300.379\\61\\10.74219\\-300.6893\\61\\2.929688\\-301.0115\\61\\-0.9765625\\-301.0257\\61\\-4.882813\\-300.9673\\61\\-8.789063\\-300.8209\\61\\-14.64844\\-300.452\\61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "310"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "157"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-299.948\\63\\-20.50781\\-299.4677\\63\\-22.46094\\-299.0911\\63\\-26.36719\\-298.4989\\63\\-30.27344\\-297.3386\\63\\-34.17969\\-296.7235\\63\\-36.13281\\-296.2726\\63\\-38.08594\\-295.5501\\63\\-41.99219\\-294.8507\\63\\-43.94531\\-294.4254\\63\\-45.89844\\-293.6312\\63\\-49.80469\\-292.543\\63\\-51.75781\\-291.6091\\63\\-55.66406\\-290.4733\\63\\-57.61719\\-289.5194\\63\\-61.52344\\-288.64\\63\\-63.47656\\-287.7728\\63\\-65.42969\\-287.1829\\63\\-67.38281\\-286.701\\63\\-69.33594\\-285.811\\63\\-73.24219\\-284.591\\63\\-75.19531\\-283.6797\\63\\-79.10156\\-282.7873\\63\\-81.05469\\-282.009\\63\\-84.96094\\-281.036\\63\\-86.91406\\-280.3885\\63\\-88.86719\\-279.5801\\63\\-90.82031\\-279.0134\\63\\-92.77344\\-278.085\\63\\-96.67969\\-276.8377\\63\\-98.63281\\-275.8952\\63\\-100.5859\\-275.3519\\63\\-102.5391\\-274.5313\\63\\-104.4922\\-273.5056\\63\\-108.3984\\-271.3505\\63\\-110.3516\\-270.0132\\63\\-112.3047\\-269.0598\\63\\-114.2578\\-267.6649\\63\\-118.1641\\-264.5313\\63\\-120.1172\\-263.208\\63\\-122.0703\\-261.5873\\63\\-124.8208\\-258.8516\\63\\-126.9464\\-256.8984\\63\\-129.8828\\-253.9185\\63\\-131.8359\\-251.6833\\63\\-134.2632\\-249.0859\\63\\-135.7422\\-247.0638\\63\\-136.9774\\-245.1797\\63\\-140.0065\\-241.2734\\63\\-141.1101\\-239.3203\\63\\-142.3765\\-237.3672\\63\\-143.1542\\-235.4141\\63\\-144.2562\\-233.4609\\63\\-144.9316\\-231.5078\\63\\-146.0283\\-229.5547\\63\\-146.6829\\-227.6016\\63\\-147.5436\\-225.6484\\63\\-148.2008\\-223.6953\\63\\-149.1218\\-219.7891\\63\\-149.8198\\-217.8359\\63\\-150.2307\\-215.8828\\63\\-150.4997\\-213.9297\\63\\-150.8695\\-211.9766\\63\\-151.4757\\-210.0234\\63\\-151.9291\\-208.0703\\63\\-152.1924\\-206.1172\\63\\-153.343\\-196.3516\\63\\-153.6021\\-192.4453\\63\\-153.6668\\-188.5391\\63\\-153.6243\\-186.5859\\63\\-153.2643\\-184.6328\\63\\-151.7729\\-182.6797\\63\\-151.3672\\-182.3127\\63\\-149.4141\\-183.4155\\63\\-147.4609\\-184.017\\63\\-145.5078\\-183.8333\\63\\-143.5547\\-182.3019\\63\\-141.6016\\-181.3258\\63\\-140.7128\\-180.7266\\63\\-139.6484\\-179.5121\\63\\-139.2814\\-178.7734\\63\\-139.7446\\-176.8203\\63\\-139.3019\\-174.8672\\63\\-139.1348\\-172.9141\\63\\-139.6484\\-171.8169\\63\\-140.5854\\-170.9609\\63\\-141.6016\\-170.3446\\63\\-143.5547\\-170.5316\\63\\-145.5078\\-171.4957\\63\\-147.4609\\-171.9102\\63\\-149.4141\\-173.1192\\63\\-151.3672\\-172.871\\63\\-152.0402\\-170.9609\\63\\-151.724\\-169.0078\\63\\-151.1177\\-167.0547\\63\\-150.7024\\-165.1016\\63\\-150.142\\-161.1953\\63\\-149.7085\\-159.2422\\63\\-149.0558\\-157.2891\\63\\-148.2434\\-153.3828\\63\\-147.764\\-151.4297\\63\\-146.9454\\-149.4766\\63\\-145.7802\\-145.5703\\63\\-144.8587\\-143.6172\\63\\-144.3197\\-141.6641\\63\\-142.8068\\-137.7578\\63\\-142.3079\\-135.8047\\63\\-141.4314\\-133.8516\\63\\-139.7839\\-129.9453\\63\\-138.7466\\-127.9922\\63\\-137.981\\-126.0391\\63\\-136.9492\\-124.0859\\63\\-136.3517\\-122.1328\\63\\-135.2336\\-120.1797\\63\\-134.4259\\-118.2266\\63\\-133.1886\\-116.2734\\63\\-132.1964\\-114.3203\\63\\-130.9136\\-112.3672\\63\\-128.6942\\-108.4609\\63\\-127.1601\\-106.5078\\63\\-125.4507\\-104.5547\\63\\-124.0234\\-102.7952\\63\\-121.9207\\-100.6484\\63\\-117.0379\\-96.74219\\63\\-116.2109\\-96.03011\\63\\-114.2578\\-94.64955\\63\\-112.3047\\-93.73689\\63\\-110.3516\\-92.56541\\63\\-108.3984\\-91.6443\\63\\-106.4453\\-90.36476\\63\\-104.4922\\-89.3705\\63\\-102.5391\\-88.18407\\63\\-100.5859\\-87.51606\\63\\-98.63281\\-86.48492\\63\\-96.67969\\-85.7809\\63\\-94.72656\\-84.824\\63\\-92.77344\\-84.01746\\63\\-90.82031\\-83.30903\\63\\-88.86719\\-82.45918\\63\\-84.96094\\-81.58512\\63\\-83.00781\\-80.8602\\63\\-81.05469\\-80.42395\\63\\-77.14844\\-79.7636\\63\\-73.24219\\-78.82797\\63\\-69.33594\\-78.19318\\63\\-65.42969\\-77.84808\\63\\-59.57031\\-77.56303\\63\\-55.66406\\-77.47727\\63\\-51.75781\\-77.52968\\63\\-49.80469\\-77.62109\\63\\-43.94531\\-78.09505\\63\\-40.03906\\-78.54261\\63\\-38.08594\\-78.87109\\63\\-36.13281\\-79.33818\\63\\-34.17969\\-79.68447\\63\\-28.32031\\-80.52744\\63\\-26.36719\\-80.95443\\63\\-24.41406\\-81.60893\\63\\-22.46094\\-81.93725\\63\\-20.50781\\-82.10574\\63\\-16.60156\\-82.20553\\63\\-14.64844\\-82.13543\\63\\-8.789063\\-81.65294\\63\\-6.835938\\-81.30943\\63\\-2.929688\\-80.95571\\63\\0.9765625\\-80.8206\\63\\6.835938\\-80.69768\\63\\10.74219\\-80.57682\\63\\18.55469\\-80.51865\\63\\22.46094\\-80.31398\\63\\24.41406\\-80.12907\\63\\28.32031\\-79.51081\\63\\32.22656\\-78.71108\\63\\36.13281\\-78.12902\\63\\38.08594\\-77.95076\\63\\41.99219\\-77.7801\\63\\45.89844\\-77.72974\\63\\49.80469\\-77.74194\\63\\53.71094\\-77.84079\\63\\59.57031\\-78.06474\\63\\63.47656\\-78.31808\\63\\67.38281\\-78.78703\\63\\71.28906\\-79.48022\\63\\79.10156\\-80.52359\\63\\81.05469\\-80.84551\\63\\84.96094\\-81.77034\\63\\88.86719\\-82.38062\\63\\90.82031\\-82.87354\\63\\92.77344\\-83.58589\\63\\96.67969\\-84.60402\\63\\98.63281\\-85.51491\\63\\100.5859\\-86.09433\\63\\102.5391\\-86.81881\\63\\104.4922\\-87.70581\\63\\106.4453\\-88.29364\\63\\108.3984\\-89.42125\\63\\110.3516\\-90.32207\\63\\112.3047\\-91.68182\\63\\114.2578\\-92.79838\\63\\116.2109\\-94.04845\\63\\118.1641\\-95.54183\\63\\121.593\\-98.69531\\63\\124.0234\\-101.3353\\63\\126.4741\\-104.5547\\63\\127.9297\\-106.7052\\63\\130.2464\\-110.4141\\63\\131.1051\\-112.3672\\63\\132.4171\\-114.3203\\63\\133.3659\\-116.2734\\63\\134.5345\\-118.2266\\63\\135.3698\\-120.1797\\63\\136.4251\\-122.1328\\63\\136.978\\-124.0859\\63\\138.1218\\-126.0391\\63\\138.8258\\-127.9922\\63\\139.919\\-129.9453\\63\\140.6302\\-131.8984\\63\\142.2629\\-135.8047\\63\\142.7358\\-137.7578\\63\\143.3253\\-139.7109\\63\\144.1845\\-141.6641\\63\\144.652\\-143.6172\\63\\145.276\\-145.5703\\63\\146.1317\\-147.5234\\63\\147.1182\\-151.4297\\63\\147.8425\\-153.3828\\63\\148.2135\\-155.3359\\63\\148.7863\\-159.2422\\63\\149.6711\\-163.1484\\63\\150.2193\\-167.0547\\63\\150.6802\\-174.8672\\63\\150.957\\-180.7266\\63\\151.0372\\-186.5859\\63\\150.97\\-190.4922\\63\\150.5371\\-200.2578\\63\\150.2373\\-206.1172\\63\\149.8518\\-210.0234\\63\\149.0583\\-213.9297\\63\\148.1334\\-219.7891\\63\\147.6378\\-221.7422\\63\\146.8273\\-223.6953\\63\\146.231\\-225.6484\\63\\145.2601\\-227.6016\\63\\144.4308\\-229.5547\\63\\143.3906\\-231.5078\\63\\142.5044\\-233.4609\\63\\140.0892\\-237.3672\\63\\139.6484\\-237.8517\\63\\137.6953\\-240.4396\\63\\136.9629\\-241.2734\\63\\135.7422\\-242.9619\\63\\131.8359\\-247.2995\\63\\129.8828\\-249.2445\\63\\127.9208\\-251.0391\\63\\125.9766\\-252.5888\\63\\124.0234\\-254.2831\\63\\122.0703\\-255.8572\\63\\120.1172\\-257.2877\\63\\118.1641\\-258.4045\\63\\117.6169\\-258.8516\\63\\114.2578\\-261.1993\\63\\112.3047\\-262.1003\\63\\110.3516\\-263.2764\\63\\108.3984\\-264.0161\\63\\106.4453\\-265.1962\\63\\104.4922\\-266.0232\\63\\102.5391\\-267.2107\\63\\100.5859\\-267.936\\63\\98.63281\\-268.9547\\63\\94.72656\\-270.3392\\63\\92.77344\\-271.3014\\63\\90.82031\\-272.0014\\63\\88.86719\\-273.0936\\63\\86.91406\\-273.8236\\63\\84.96094\\-274.8979\\63\\83.00781\\-275.549\\63\\81.05469\\-276.3897\\63\\77.14844\\-278.2521\\63\\73.24219\\-280.4344\\63\\67.38281\\-283.1604\\63\\65.42969\\-283.8751\\63\\63.47656\\-284.9905\\63\\61.52344\\-285.8242\\63\\59.57031\\-286.907\\63\\57.61719\\-287.6094\\63\\55.66406\\-288.6334\\63\\53.71094\\-289.1905\\63\\51.75781\\-289.8722\\63\\49.80469\\-290.844\\63\\47.85156\\-291.4238\\63\\45.89844\\-292.4706\\63\\43.94531\\-293.0818\\63\\40.03906\\-294.5962\\63\\36.13281\\-295.3913\\63\\34.17969\\-296.1459\\63\\32.22656\\-296.7193\\63\\30.27344\\-297.057\\63\\28.32031\\-297.5247\\63\\26.36719\\-298.2606\\63\\24.41406\\-298.6904\\63\\20.50781\\-299.385\\63\\16.60156\\-300.2342\\63\\14.64844\\-300.452\\63\\10.74219\\-300.7321\\63\\6.835938\\-300.9202\\63\\2.929688\\-301.05\\63\\-2.929688\\-301.0427\\63\\-6.835938\\-300.9256\\63\\-12.69531\\-300.6273\\63\\-16.60156\\-300.2566\\63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "290"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "158"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-300.0158\\65\\-22.46094\\-299.144\\65\\-26.36719\\-298.546\\65\\-28.32031\\-298.0495\\65\\-30.27344\\-297.4048\\65\\-34.17969\\-296.7541\\65\\-36.13281\\-296.3204\\65\\-38.08594\\-295.5964\\65\\-43.94531\\-294.4383\\65\\-45.89844\\-293.6235\\65\\-49.80469\\-292.5077\\65\\-51.75781\\-291.5724\\65\\-55.66406\\-290.4096\\65\\-57.61719\\-289.4773\\65\\-61.52344\\-288.5593\\65\\-63.47656\\-287.6602\\65\\-67.38281\\-286.5568\\65\\-69.33594\\-285.6151\\65\\-71.28906\\-285.0449\\65\\-75.19531\\-283.5126\\65\\-77.14844\\-283.1019\\65\\-79.10156\\-282.5441\\65\\-81.05469\\-281.7487\\65\\-84.96094\\-280.7929\\65\\-86.91406\\-279.9414\\65\\-90.82031\\-278.6665\\65\\-92.77344\\-277.718\\65\\-94.72656\\-277.1942\\65\\-98.63281\\-275.6324\\65\\-100.5859\\-275.0885\\65\\-102.5391\\-274.0505\\65\\-104.4922\\-273.1919\\65\\-106.4453\\-271.8973\\65\\-108.3984\\-270.9995\\65\\-110.3516\\-269.6945\\65\\-114.2578\\-267.3373\\65\\-118.1641\\-264.0981\\65\\-120.1074\\-262.7578\\65\\-122.0703\\-261.2714\\65\\-124.5153\\-258.8516\\65\\-126.6154\\-256.8984\\65\\-128.6161\\-254.9453\\65\\-130.3848\\-252.9922\\65\\-133.7891\\-249.077\\65\\-138.2286\\-243.2266\\65\\-139.6484\\-241.1897\\65\\-141.6016\\-238.0882\\65\\-142.1336\\-237.3672\\65\\-142.8723\\-235.4141\\65\\-144.0108\\-233.4609\\65\\-144.6857\\-231.5078\\65\\-145.7072\\-229.5547\\65\\-147.1579\\-225.6484\\65\\-148.0076\\-223.6953\\65\\-148.8997\\-219.7891\\65\\-150.0712\\-215.8828\\65\\-150.6721\\-211.9766\\65\\-151.0932\\-210.0234\\65\\-151.682\\-208.0703\\65\\-152.0165\\-206.1172\\65\\-152.251\\-204.1641\\65\\-152.8172\\-198.3047\\65\\-153.2389\\-192.4453\\65\\-153.3279\\-188.5391\\65\\-153.2673\\-186.5859\\65\\-152.6133\\-184.6328\\65\\-151.3672\\-183.2498\\65\\-149.4141\\-182.9912\\65\\-147.4609\\-183.8879\\65\\-145.5078\\-183.7641\\65\\-143.5547\\-182.414\\65\\-141.6016\\-181.3325\\65\\-140.709\\-180.7266\\65\\-139.6484\\-179.3937\\65\\-139.3445\\-178.7734\\65\\-139.7363\\-176.8203\\65\\-139.4367\\-174.8672\\65\\-139.449\\-172.9141\\65\\-139.6484\\-172.6062\\65\\-141.6016\\-171.1728\\65\\-143.5547\\-171.8167\\65\\-145.5078\\-172.6556\\65\\-147.4609\\-172.9226\\65\\-149.4141\\-173.8383\\65\\-151.3672\\-173.0952\\65\\-151.5288\\-172.9141\\65\\-151.8468\\-170.9609\\65\\-150.8083\\-167.0547\\65\\-149.9089\\-161.1953\\65\\-148.8176\\-157.2891\\65\\-148.0408\\-153.3828\\65\\-146.6808\\-149.4766\\65\\-146.1678\\-147.5234\\65\\-145.311\\-145.5703\\65\\-144.6273\\-143.6172\\65\\-144.0979\\-141.6641\\65\\-143.1683\\-139.7109\\65\\-142.0701\\-135.8047\\65\\-141.0604\\-133.8516\\65\\-140.374\\-131.8984\\65\\-139.3011\\-129.9453\\65\\-138.5073\\-127.9922\\65\\-137.5772\\-126.0391\\65\\-136.7604\\-124.0859\\65\\-136.0556\\-122.1328\\65\\-134.9696\\-120.1797\\65\\-134.1436\\-118.2266\\65\\-132.9229\\-116.2734\\65\\-130.7296\\-112.3672\\65\\-129.4465\\-110.4141\\65\\-128.4849\\-108.4609\\65\\-126.8968\\-106.5078\\65\\-124.0234\\-103.18\\65\\-121.55\\-100.6484\\65\\-120.1172\\-99.5954\\65\\-116.2109\\-96.35593\\65\\-114.2578\\-95.21272\\65\\-112.3047\\-93.94185\\65\\-108.3984\\-91.89324\\65\\-104.4922\\-89.68233\\65\\-102.5391\\-88.4131\\65\\-100.5859\\-87.79662\\65\\-98.63281\\-86.76363\\65\\-94.72656\\-85.26574\\65\\-92.77344\\-84.2683\\65\\-90.82031\\-83.61642\\65\\-88.86719\\-82.72606\\65\\-86.91406\\-82.20029\\65\\-84.96094\\-81.80393\\65\\-81.05469\\-80.64228\\65\\-75.19531\\-79.6683\\65\\-71.28906\\-78.75767\\65\\-67.38281\\-78.29928\\65\\-63.47656\\-78.00014\\65\\-57.61719\\-77.80511\\65\\-55.66406\\-77.78503\\65\\-49.80469\\-77.91429\\65\\-45.89844\\-78.15843\\65\\-40.03906\\-78.8601\\65\\-36.13281\\-79.64574\\65\\-30.27344\\-80.45584\\65\\-28.32031\\-80.78217\\65\\-26.36719\\-81.38011\\65\\-24.41406\\-81.83034\\65\\-22.46094\\-82.06949\\65\\-20.50781\\-82.16393\\65\\-16.60156\\-82.17661\\65\\-10.74219\\-81.78362\\65\\-6.835938\\-81.20524\\65\\-2.929688\\-80.89934\\65\\0.9765625\\-80.78217\\65\\6.835938\\-80.68392\\65\\10.74219\\-80.5638\\65\\18.55469\\-80.50605\\65\\20.50781\\-80.45584\\65\\24.41406\\-80.19294\\65\\28.32031\\-79.71745\\65\\32.22656\\-79.00247\\65\\38.08594\\-78.20494\\65\\43.94531\\-77.96346\\65\\49.80469\\-77.97049\\65\\53.71094\\-78.04719\\65\\59.57031\\-78.32781\\65\\63.47656\\-78.62872\\65\\65.42969\\-78.83854\\65\\69.33594\\-79.45847\\65\\77.14844\\-80.41964\\65\\79.10156\\-80.73354\\65\\83.00781\\-81.6456\\65\\86.91406\\-82.25651\\65\\88.86719\\-82.61808\\65\\92.77344\\-83.84158\\65\\94.72656\\-84.29656\\65\\96.67969\\-84.98588\\65\\98.63281\\-85.77779\\65\\100.5859\\-86.34296\\65\\102.5391\\-87.25239\\65\\106.4453\\-88.61631\\65\\108.3984\\-89.72166\\65\\110.3516\\-90.69925\\65\\114.2578\\-93.24826\\65\\116.2109\\-94.35909\\65\\118.1641\\-95.86596\\65\\121.2542\\-98.69531\\65\\124.0234\\-101.6578\\65\\126.2347\\-104.5547\\65\\128.8624\\-108.4609\\65\\130.0009\\-110.4141\\65\\130.9552\\-112.3672\\65\\132.2228\\-114.3203\\65\\133.172\\-116.2734\\65\\134.3786\\-118.2266\\65\\135.1851\\-120.1797\\65\\136.2936\\-122.1328\\65\\136.8776\\-124.0859\\65\\137.931\\-126.0391\\65\\138.7079\\-127.9922\\65\\139.686\\-129.9453\\65\\140.5217\\-131.8984\\65\\141.2254\\-133.8516\\65\\142.1749\\-135.8047\\65\\143.1738\\-139.7109\\65\\144.0585\\-141.6641\\65\\145.0902\\-145.5703\\65\\145.9726\\-147.5234\\65\\146.9223\\-151.4297\\65\\147.6249\\-153.3828\\65\\148.0866\\-155.3359\\65\\148.9868\\-161.1953\\65\\149.7923\\-165.1016\\65\\150.0671\\-167.0547\\65\\150.2373\\-169.0078\\65\\150.607\\-176.8203\\65\\150.8031\\-182.6797\\65\\150.7415\\-190.4922\\65\\150.4867\\-198.3047\\65\\150.2125\\-204.1641\\65\\150.0793\\-206.1172\\65\\149.5448\\-210.0234\\65\\148.8116\\-213.9297\\65\\148.2689\\-217.8359\\65\\147.9054\\-219.7891\\65\\147.2202\\-221.7422\\65\\145.9627\\-225.6484\\65\\144.8982\\-227.6016\\65\\144.188\\-229.5547\\65\\143.0325\\-231.5078\\65\\142.2505\\-233.4609\\65\\139.6484\\-237.285\\65\\138.196\\-239.3203\\65\\135.7422\\-242.4837\\65\\135.1031\\-243.2266\\65\\131.8359\\-246.7111\\65\\129.8828\\-248.7315\\65\\127.3362\\-251.0391\\65\\125.9766\\-252.1369\\65\\124.0234\\-253.899\\65\\122.0703\\-255.5161\\65\\120.1172\\-256.6772\\65\\118.1641\\-257.9775\\65\\116.2109\\-259.4413\\65\\112.3047\\-261.7448\\65\\110.314\\-262.7578\\65\\106.4453\\-264.5792\\65\\102.5272\\-266.6641\\65\\98.63281\\-268.4043\\65\\96.67969\\-269.3464\\65\\94.72656\\-269.913\\65\\92.77344\\-270.9724\\65\\90.82031\\-271.681\\65\\88.86719\\-272.7472\\65\\86.91406\\-273.5698\\65\\84.96094\\-274.5618\\65\\83.00781\\-275.4172\\65\\81.05469\\-276.1089\\65\\79.10156\\-277.2329\\65\\77.14844\\-278.0785\\65\\76.75228\\-278.3828\\65\\73.22998\\-280.3359\\65\\67.38281\\-283.1604\\65\\65.42969\\-283.8864\\65\\63.47656\\-285.0245\\65\\61.52344\\-285.8964\\65\\59.57031\\-286.9427\\65\\57.61719\\-287.6732\\65\\55.66406\\-288.6982\\65\\53.71094\\-289.2381\\65\\51.75781\\-290\\65\\49.80469\\-290.9096\\65\\47.85156\\-291.5288\\65\\45.89844\\-292.569\\65\\43.94531\\-293.1611\\65\\40.03906\\-294.6728\\65\\36.13281\\-295.4727\\65\\34.17969\\-296.2865\\65\\32.22656\\-296.7774\\65\\30.27344\\-297.1275\\65\\28.32031\\-297.6458\\65\\26.36719\\-298.367\\65\\20.50781\\-299.4856\\65\\18.55469\\-299.9757\\65\\16.60156\\-300.3073\\65\\14.64844\\-300.5126\\65\\10.74219\\-300.782\\65\\6.835938\\-300.9688\\65\\2.929688\\-301.0926\\65\\-2.929688\\-301.0818\\65\\-8.789063\\-300.8666\\65\\-12.69531\\-300.6562\\65\\-16.60156\\-300.3165\\65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "305"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "159"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-300.091\\67\\-22.46094\\-299.2144\\67\\-26.36719\\-298.5941\\67\\-28.32031\\-298.1258\\67\\-30.27344\\-297.4849\\67\\-32.22656\\-297.0778\\67\\-34.17969\\-296.7897\\67\\-36.13281\\-296.3766\\67\\-38.08594\\-295.6448\\67\\-40.03906\\-295.2074\\67\\-43.94531\\-294.4482\\67\\-45.89844\\-293.6109\\67\\-49.80469\\-292.5077\\67\\-51.75781\\-291.5429\\67\\-53.71094\\-290.9907\\67\\-55.66406\\-290.3406\\67\\-57.61719\\-289.4525\\67\\-59.57031\\-289.0238\\67\\-61.52344\\-288.4878\\67\\-63.47656\\-287.5824\\67\\-67.38281\\-286.3709\\67\\-69.33594\\-285.4709\\67\\-71.28906\\-284.9022\\67\\-73.24219\\-283.9927\\67\\-75.19531\\-283.3539\\67\\-77.14844\\-282.9422\\67\\-81.05469\\-281.5505\\67\\-83.00781\\-281.0885\\67\\-84.96094\\-280.4608\\67\\-86.91406\\-279.6172\\67\\-88.86719\\-279.0643\\67\\-90.82031\\-278.1476\\67\\-92.77344\\-277.4551\\67\\-94.72656\\-276.9307\\67\\-96.67969\\-275.9515\\67\\-98.63281\\-275.3995\\67\\-100.5859\\-274.7101\\67\\-104.7852\\-272.5234\\67\\-108.3984\\-270.4353\\67\\-110.3516\\-269.3972\\67\\-112.3047\\-268.0863\\67\\-114.2578\\-266.9031\\67\\-116.2109\\-265.4138\\67\\-120.1172\\-262.2365\\67\\-122.0437\\-260.8047\\67\\-124.0494\\-258.8516\\67\\-128.273\\-254.9453\\67\\-131.4979\\-251.0391\\67\\-133.7891\\-248.5015\\67\\-136.4929\\-245.1797\\67\\-137.8461\\-243.2266\\67\\-139.0967\\-241.2734\\67\\-140.5698\\-239.3203\\67\\-141.8194\\-237.3672\\67\\-142.6752\\-235.4141\\67\\-143.6546\\-233.4609\\67\\-145.2601\\-229.5547\\67\\-146.2233\\-227.6016\\67\\-146.8668\\-225.6484\\67\\-147.7661\\-223.6953\\67\\-148.3038\\-221.7422\\67\\-149.2128\\-217.8359\\67\\-149.8653\\-215.8828\\67\\-150.2487\\-213.9297\\67\\-150.8118\\-210.0234\\67\\-151.8202\\-206.1172\\67\\-152.087\\-204.1641\\67\\-152.4484\\-200.2578\\67\\-152.7121\\-196.3516\\67\\-152.9088\\-192.4453\\67\\-152.9565\\-190.4922\\67\\-152.9208\\-186.5859\\67\\-152.7945\\-184.6328\\67\\-152.2833\\-182.6797\\67\\-151.3672\\-181.5546\\67\\-149.4141\\-181.5181\\67\\-148.1879\\-182.6797\\67\\-147.4609\\-183.183\\67\\-145.5078\\-183.1046\\67\\-143.5547\\-181.867\\67\\-141.94\\-180.7266\\67\\-140.7538\\-178.7734\\67\\-141.8669\\-176.8203\\67\\-143.5547\\-175.3692\\67\\-145.5078\\-174.5446\\67\\-147.4609\\-174.391\\67\\-149.4141\\-174.4487\\67\\-150.9698\\-172.9141\\67\\-151.5158\\-170.9609\\67\\-150.9885\\-169.0078\\67\\-150.6138\\-167.0547\\67\\-150.3632\\-165.1016\\67\\-149.5829\\-163.1484\\67\\-148.9314\\-161.1953\\67\\-148.7706\\-159.2422\\67\\-148.2551\\-155.3359\\67\\-147.8107\\-153.3828\\67\\-147.0588\\-151.4297\\67\\-145.9142\\-147.5234\\67\\-144.9558\\-145.5703\\67\\-144.4477\\-143.6172\\67\\-143.7789\\-141.6641\\67\\-142.9228\\-139.7109\\67\\-142.4515\\-137.7578\\67\\-141.7432\\-135.8047\\67\\-140.8081\\-133.8516\\67\\-140.1184\\-131.8984\\67\\-138.9732\\-129.9453\\67\\-138.2701\\-127.9922\\67\\-137.2378\\-126.0391\\67\\-136.5974\\-124.0859\\67\\-135.7422\\-122.1997\\67\\-133.7891\\-118.2383\\67\\-131.8359\\-114.8489\\67\\-131.4184\\-114.3203\\67\\-130.5317\\-112.3672\\67\\-129.1954\\-110.4141\\67\\-128.2014\\-108.4609\\67\\-126.643\\-106.5078\\67\\-125.9766\\-105.8322\\67\\-124.0234\\-103.5512\\67\\-121.1231\\-100.6484\\67\\-118.1641\\-98.20367\\67\\-116.1397\\-96.74219\\67\\-114.2578\\-95.56138\\67\\-112.3047\\-94.2045\\67\\-110.3516\\-93.36286\\67\\-108.3984\\-92.14764\\67\\-106.4453\\-91.28532\\67\\-104.4922\\-89.94264\\67\\-102.5391\\-88.70996\\67\\-98.63281\\-87.12865\\67\\-96.67969\\-86.24567\\67\\-94.72656\\-85.54471\\67\\-92.77344\\-84.5231\\67\\-90.82031\\-83.8998\\67\\-86.91406\\-82.38425\\67\\-83.00781\\-81.57156\\67\\-81.05469\\-80.92939\\67\\-79.10156\\-80.46821\\67\\-75.19531\\-79.89648\\67\\-71.28906\\-79.14135\\67\\-69.33594\\-78.8601\\67\\-63.47656\\-78.27267\\67\\-57.61719\\-78.05656\\67\\-53.71094\\-78.04878\\67\\-49.80469\\-78.16543\\67\\-45.89844\\-78.44175\\67\\-41.99219\\-78.89353\\67\\-38.08594\\-79.63255\\67\\-34.17969\\-80.11121\\67\\-30.27344\\-80.68695\\67\\-26.36719\\-81.7487\\67\\-24.41406\\-82.0144\\67\\-22.46094\\-82.16477\\67\\-18.55469\\-82.2188\\67\\-14.64844\\-82.03233\\67\\-10.74219\\-81.73006\\67\\-8.789063\\-81.35006\\67\\-4.882813\\-80.96875\\67\\-0.9765625\\-80.84551\\67\\4.882813\\-80.74483\\67\\10.74219\\-80.56747\\67\\14.64844\\-80.50605\\67\\18.55469\\-80.51865\\67\\24.41406\\-80.28424\\67\\26.36719\\-80.11695\\67\\32.22656\\-79.36689\\67\\34.17969\\-79.01546\\67\\38.08594\\-78.52643\\67\\40.03906\\-78.37463\\67\\43.94531\\-78.2386\\67\\49.80469\\-78.20434\\67\\53.71094\\-78.30172\\67\\59.57031\\-78.63295\\67\\63.47656\\-78.95236\\67\\67.38281\\-79.50832\\67\\75.19531\\-80.36553\\67\\77.14844\\-80.63223\\67\\83.00781\\-81.85738\\67\\86.91406\\-82.45057\\67\\88.86719\\-82.95763\\67\\90.82031\\-83.61887\\67\\94.72656\\-84.61193\\67\\96.67969\\-85.43145\\67\\100.5859\\-86.65334\\67\\102.5391\\-87.55453\\67\\104.4922\\-88.13973\\67\\106.4453\\-89.13792\\67\\108.3984\\-90.01413\\67\\110.3516\\-91.23209\\67\\112.3047\\-92.29272\\67\\114.2578\\-93.60049\\67\\116.2109\\-94.74697\\67\\118.1641\\-96.24693\\67\\118.6057\\-96.74219\\67\\120.8221\\-98.69531\\67\\122.7649\\-100.6484\\67\\124.4727\\-102.6016\\67\\127.2512\\-106.5078\\67\\128.692\\-108.4609\\67\\129.7059\\-110.4141\\67\\131.9975\\-114.3203\\67\\133.0112\\-116.2734\\67\\134.2067\\-118.2266\\67\\135.0269\\-120.1797\\67\\136.1286\\-122.1328\\67\\136.7898\\-124.0859\\67\\138.6003\\-127.9922\\67\\139.4337\\-129.9453\\67\\140.4097\\-131.8984\\67\\141.0762\\-133.8516\\67\\142.0334\\-135.8047\\67\\143.0334\\-139.7109\\67\\143.9116\\-141.6641\\67\\144.9386\\-145.5703\\67\\145.7896\\-147.5234\\67\\146.3399\\-149.4766\\67\\146.7572\\-151.4297\\67\\147.9431\\-155.3359\\67\\148.2776\\-157.2891\\67\\149.0956\\-163.1484\\67\\149.8756\\-167.0547\\67\\150.0793\\-169.0078\\67\\150.3083\\-172.9141\\67\\150.4604\\-176.8203\\67\\150.607\\-182.6797\\67\\150.5717\\-190.4922\\67\\150.3526\\-198.3047\\67\\150.1801\\-202.2109\\67\\149.8725\\-206.1172\\67\\148.8773\\-211.9766\\67\\148.3918\\-215.8828\\67\\148.0743\\-217.8359\\67\\147.5984\\-219.7891\\67\\146.8855\\-221.7422\\67\\146.3321\\-223.6953\\67\\145.5454\\-225.6484\\67\\144.6284\\-227.6016\\67\\143.8664\\-229.5547\\67\\142.7847\\-231.5078\\67\\141.8837\\-233.4609\\67\\140.6133\\-235.4141\\67\\139.0728\\-237.3672\\67\\136.391\\-241.2734\\67\\134.7117\\-243.2266\\67\\129.8828\\-248.3004\\67\\126.8248\\-251.0391\\67\\124.5185\\-252.9922\\67\\124.0234\\-253.5014\\67\\122.0703\\-255.0341\\67\\120.1172\\-256.1911\\67\\118.1641\\-257.615\\67\\114.2578\\-260.0558\\67\\112.3047\\-261.36\\67\\110.3516\\-262.1988\\67\\108.3984\\-263.328\\67\\106.4453\\-264.0249\\67\\104.4922\\-265.2055\\67\\102.5391\\-266.056\\67\\100.5859\\-267.2196\\67\\98.63281\\-267.9519\\67\\96.67969\\-269.0176\\67\\94.72656\\-269.6529\\67\\92.77344\\-270.4386\\67\\90.82031\\-271.4235\\67\\88.86719\\-272.2571\\67\\86.91406\\-273.3433\\67\\84.96094\\-274.2065\\67\\83.00781\\-275.2639\\67\\81.05469\\-275.9216\\67\\79.10156\\-277.135\\67\\77.14844\\-277.948\\67\\75.19531\\-279.2071\\67\\71.28906\\-281.264\\67\\67.38281\\-283.1721\\67\\65.42969\\-283.9237\\67\\63.47656\\-285.071\\67\\61.52344\\-285.9668\\67\\59.57031\\-286.9973\\67\\57.61719\\-287.7511\\67\\55.66406\\-288.7548\\67\\53.71094\\-289.2808\\67\\49.80469\\-290.9647\\67\\47.85156\\-291.6282\\67\\45.89844\\-292.6671\\67\\43.94531\\-293.2513\\67\\41.99219\\-294.1171\\67\\40.03906\\-294.7402\\67\\36.13281\\-295.5853\\67\\34.17969\\-296.3971\\67\\32.22656\\-296.8539\\67\\30.27344\\-297.1994\\67\\26.36719\\-298.4603\\67\\22.46094\\-299.175\\67\\18.55469\\-300.0789\\67\\16.60156\\-300.3759\\67\\14.64844\\-300.5719\\67\\10.74219\\-300.8267\\67\\6.835938\\-301.0186\\67\\2.929688\\-301.138\\67\\-0.9765625\\-301.1336\\67\\-4.882813\\-301.0621\\67\\-10.74219\\-300.804\\67\\-14.64844\\-300.5463\\67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "289"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "160"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-300.1602\\69\\-22.46094\\-299.2779\\69\\-26.36719\\-298.6465\\69\\-28.32031\\-298.2289\\69\\-30.27344\\-297.556\\69\\-32.22656\\-297.1275\\69\\-36.13281\\-296.4396\\69\\-38.08594\\-295.6953\\69\\-40.03906\\-295.2102\\69\\-41.99219\\-294.8804\\69\\-43.94531\\-294.4282\\69\\-45.89844\\-293.6083\\69\\-49.80469\\-292.4986\\69\\-51.75781\\-291.5226\\69\\-53.71094\\-290.9669\\69\\-55.66406\\-290.2785\\69\\-57.61719\\-289.4126\\69\\-59.57031\\-288.9932\\69\\-61.52344\\-288.3979\\69\\-63.47656\\-287.5034\\69\\-65.42969\\-286.9453\\69\\-69.33594\\-285.3312\\69\\-71.28906\\-284.7305\\69\\-73.24219\\-283.7635\\69\\-77.14844\\-282.7434\\69\\-79.10156\\-281.9194\\69\\-83.00781\\-280.858\\69\\-84.96094\\-280.0126\\69\\-88.86719\\-278.7189\\69\\-90.82031\\-277.7538\\69\\-92.77344\\-277.2277\\69\\-96.67969\\-275.662\\69\\-98.63281\\-275.1297\\69\\-100.5859\\-274.1245\\69\\-102.5391\\-273.328\\69\\-104.4922\\-272.1105\\69\\-106.4453\\-271.1856\\69\\-108.3984\\-269.9086\\69\\-110.3516\\-269.0378\\69\\-116.2109\\-264.9849\\69\\-118.1641\\-263.5054\\69\\-121.4468\\-260.8047\\69\\-125.9766\\-256.5211\\69\\-127.9297\\-254.7533\\69\\-129.3314\\-252.9922\\69\\-134.6606\\-247.1328\\69\\-136.1515\\-245.1797\\69\\-137.3423\\-243.2266\\69\\-140.2779\\-239.3203\\69\\-142.4799\\-235.4141\\69\\-143.2079\\-233.4609\\69\\-144.277\\-231.5078\\69\\-144.9231\\-229.5547\\69\\-145.9698\\-227.6016\\69\\-146.6018\\-225.6484\\69\\-148.1179\\-221.7422\\69\\-148.9659\\-217.8359\\69\\-149.6019\\-215.8828\\69\\-150.0873\\-213.9297\\69\\-150.6095\\-210.0234\\69\\-150.9779\\-208.0703\\69\\-151.5026\\-206.1172\\69\\-151.8809\\-204.1641\\69\\-152.0971\\-202.2109\\69\\-152.3928\\-198.3047\\69\\-152.6493\\-192.4453\\69\\-152.6422\\-186.5859\\69\\-152.5116\\-182.6797\\69\\-152.2656\\-180.7266\\69\\-152.1658\\-178.7734\\69\\-151.3672\\-177.0645\\69\\-151.1047\\-176.8203\\69\\-150.8409\\-174.8672\\69\\-151.6029\\-172.9141\\69\\-151.1195\\-170.9609\\69\\-150.7377\\-169.0078\\69\\-150.1465\\-165.1016\\69\\-149.4141\\-163.81\\69\\-148.5938\\-163.1484\\69\\-147.4609\\-161.5751\\69\\-146.8124\\-163.1484\\69\\-145.5078\\-164.6345\\69\\-143.5547\\-165.2123\\69\\-141.6016\\-164.8614\\69\\-140.1702\\-163.1484\\69\\-140.8452\\-161.1953\\69\\-142.4576\\-159.2422\\69\\-143.5547\\-158.4694\\69\\-145.5078\\-158.8844\\69\\-146.4587\\-159.2422\\69\\-147.4609\\-160.5117\\69\\-148.0992\\-157.2891\\69\\-148.0818\\-155.3359\\69\\-147.4991\\-153.3828\\69\\-146.7746\\-151.4297\\69\\-146.2531\\-149.4766\\69\\-144.7299\\-145.5703\\69\\-144.2417\\-143.6172\\69\\-143.3792\\-141.6641\\69\\-142.7358\\-139.7109\\69\\-142.2629\\-137.7578\\69\\-141.3416\\-135.8047\\69\\-139.7439\\-131.8984\\69\\-138.7326\\-129.9453\\69\\-138.0208\\-127.9922\\69\\-136.98\\-126.0391\\69\\-136.4124\\-124.0859\\69\\-135.3725\\-122.1328\\69\\-134.5691\\-120.1797\\69\\-133.4078\\-118.2266\\69\\-132.4629\\-116.2734\\69\\-131.1356\\-114.3203\\69\\-130.2347\\-112.3672\\69\\-127.9297\\-108.6151\\69\\-126.3391\\-106.5078\\69\\-124.0234\\-103.8241\\69\\-122.0703\\-101.7715\\69\\-120.1172\\-100.0651\\69\\-116.2109\\-97.27549\\69\\-114.2578\\-95.82863\\69\\-112.3047\\-94.5625\\69\\-110.3516\\-93.62898\\69\\-108.3984\\-92.48942\\69\\-106.4453\\-91.6493\\69\\-104.4922\\-90.29816\\69\\-100.5859\\-88.09354\\69\\-98.63281\\-87.54511\\69\\-96.67969\\-86.51739\\69\\-94.72656\\-85.74799\\69\\-92.77344\\-84.83237\\69\\-88.86719\\-83.54243\\69\\-86.91406\\-82.65663\\69\\-84.96094\\-82.18417\\69\\-83.00781\\-81.82798\\69\\-79.10156\\-80.73354\\69\\-73.24219\\-79.82962\\69\\-65.42969\\-78.80724\\69\\-61.52344\\-78.45435\\69\\-55.66406\\-78.29911\\69\\-53.71094\\-78.3004\\69\\-49.80469\\-78.43451\\69\\-45.89844\\-78.77712\\69\\-38.08594\\-79.87038\\69\\-36.13281\\-80.07591\\69\\-32.22656\\-80.60565\\69\\-28.32031\\-81.56738\\69\\-26.36719\\-81.92178\\69\\-24.41406\\-82.12926\\69\\-22.46094\\-82.22745\\69\\-18.55469\\-82.2272\\69\\-14.64844\\-81.99985\\69\\-10.74219\\-81.70719\\69\\-8.789063\\-81.33672\\69\\-4.882813\\-81.01398\\69\\-0.9765625\\-80.88609\\69\\4.882813\\-80.79406\\69\\12.69531\\-80.55824\\69\\18.55469\\-80.52744\\69\\22.46094\\-80.42749\\69\\26.36719\\-80.25986\\69\\32.22656\\-79.61844\\69\\38.08594\\-78.8601\\69\\41.99219\\-78.63393\\69\\47.85156\\-78.49119\\69\\51.75781\\-78.55299\\69\\57.61719\\-78.83854\\69\\59.57031\\-78.97706\\69\\67.38281\\-79.7878\\69\\73.24219\\-80.36553\\69\\77.14844\\-80.92793\\69\\81.05469\\-81.79953\\69\\84.96094\\-82.32244\\69\\86.91406\\-82.71957\\69\\88.86719\\-83.39584\\69\\92.77344\\-84.32589\\69\\96.67969\\-85.73959\\69\\98.63281\\-86.2765\\69\\100.5859\\-87.07894\\69\\104.4922\\-88.43116\\69\\106.4453\\-89.52173\\69\\108.3984\\-90.35744\\69\\110.3516\\-91.64839\\69\\112.3047\\-92.68174\\69\\115.6078\\-94.78906\\69\\118.1641\\-96.70045\\69\\120.4325\\-98.69531\\69\\122.4985\\-100.6484\\69\\124.1684\\-102.6016\\69\\128.5038\\-108.4609\\69\\129.4603\\-110.4141\\69\\130.712\\-112.3672\\69\\131.8359\\-114.5022\\69\\133.7891\\-117.9489\\69\\134.8735\\-120.1797\\69\\135.9177\\-122.1328\\69\\137.4236\\-126.0391\\69\\138.4734\\-127.9922\\69\\139.2001\\-129.9453\\69\\140.2902\\-131.8984\\69\\140.9295\\-133.8516\\69\\141.8615\\-135.8047\\69\\142.4834\\-137.7578\\69\\142.9057\\-139.7109\\69\\143.7249\\-141.6641\\69\\144.3498\\-143.6172\\69\\144.795\\-145.5703\\69\\145.5454\\-147.5234\\69\\146.1878\\-149.4766\\69\\146.5935\\-151.4297\\69\\147.1052\\-153.3828\\69\\147.7466\\-155.3359\\69\\148.1334\\-157.2891\\69\\148.8997\\-163.1484\\69\\149.6153\\-167.0547\\69\\150.0423\\-170.9609\\69\\150.2615\\-174.8672\\69\\150.4226\\-180.7266\\69\\150.4653\\-184.6328\\69\\150.4282\\-190.4922\\69\\150.2125\\-198.3047\\69\\149.9821\\-202.2109\\69\\149.559\\-206.1172\\69\\148.9192\\-210.0234\\69\\148.1948\\-215.8828\\69\\147.819\\-217.8359\\69\\147.1829\\-219.7891\\69\\146.0683\\-223.6953\\69\\145.0674\\-225.6484\\69\\144.3971\\-227.6016\\69\\143.3906\\-229.5547\\69\\142.529\\-231.5078\\69\\140.2895\\-235.4141\\69\\137.2386\\-239.3203\\69\\136.0652\\-241.2734\\69\\134.3851\\-243.2266\\69\\130.5486\\-247.1328\\69\\129.8828\\-247.8705\\69\\127.9297\\-249.7393\\69\\121.4338\\-254.9453\\69\\118.1641\\-257.1331\\69\\116.2109\\-258.2295\\69\\114.2578\\-259.618\\69\\112.2444\\-260.8047\\69\\108.4828\\-262.7578\\69\\104.4922\\-264.5919\\69\\100.5859\\-266.7162\\69\\94.72656\\-269.4145\\69\\92.77344\\-270.0263\\69\\90.82031\\-271.1645\\69\\88.86719\\-271.9247\\69\\86.91406\\-273.124\\69\\84.96094\\-273.9512\\69\\83.00781\\-275.1255\\69\\81.05469\\-275.7974\\69\\79.10156\\-277.0408\\69\\77.14844\\-277.8815\\69\\75.19531\\-279.163\\69\\71.28906\\-281.2454\\69\\67.38281\\-283.1721\\69\\65.42969\\-283.9871\\69\\63.47656\\-285.1179\\69\\61.52344\\-286.0302\\69\\59.57031\\-287.0409\\69\\57.61719\\-287.8441\\69\\55.66406\\-288.8057\\69\\53.71094\\-289.3239\\69\\51.75781\\-290.2655\\69\\47.85156\\-291.7557\\69\\45.89844\\-292.7712\\69\\43.94531\\-293.3586\\69\\41.99219\\-294.2485\\69\\40.03906\\-294.8117\\69\\38.08594\\-295.2027\\69\\36.13281\\-295.7204\\69\\34.17969\\-296.4987\\69\\30.27344\\-297.2762\\69\\28.32031\\-297.9662\\69\\26.36719\\-298.5493\\69\\22.46094\\-299.2554\\69\\18.55469\\-300.1711\\69\\16.60156\\-300.4359\\69\\12.69531\\-300.7484\\69\\8.789063\\-300.9807\\69\\4.882813\\-301.138\\69\\0.9765625\\-301.1884\\69\\-2.929688\\-301.1418\\69\\-6.835938\\-301.0186\\69\\-10.74219\\-300.8323\\69\\-14.64844\\-300.5871\\69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002266"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "277"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "161"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-300.2365\\71\\-22.46094\\-299.3499\\71\\-26.36719\\-298.706\\71\\-28.32031\\-298.33\\71\\-30.27344\\-297.6717\\71\\-32.22656\\-297.1723\\71\\-36.13281\\-296.4805\\71\\-38.08594\\-295.748\\71\\-40.03906\\-295.2546\\71\\-43.94531\\-294.458\\71\\-45.89844\\-293.6497\\71\\-49.80469\\-292.4801\\71\\-51.75781\\-291.4975\\71\\-53.71094\\-290.9309\\71\\-57.61719\\-289.3691\\71\\-59.57031\\-288.9502\\71\\-61.52344\\-288.2762\\71\\-63.47656\\-287.4102\\71\\-65.42969\\-286.8556\\71\\-67.38281\\-285.9362\\71\\-71.28906\\-284.524\\71\\-73.24219\\-283.5852\\71\\-75.19531\\-283.1335\\71\\-77.14844\\-282.4919\\71\\-79.10156\\-281.6955\\71\\-81.05469\\-281.1883\\71\\-83.00781\\-280.5645\\71\\-84.96094\\-279.6792\\71\\-86.91406\\-279.0819\\71\\-88.86719\\-278.1992\\71\\-90.82031\\-277.4784\\71\\-92.77344\\-276.956\\71\\-94.72656\\-275.9964\\71\\-98.63281\\-274.7525\\71\\-100.5859\\-273.7232\\71\\-102.5391\\-272.9128\\71\\-104.4922\\-271.6745\\71\\-106.634\\-270.5703\\71\\-110.2056\\-268.6172\\71\\-112.3047\\-267.3495\\71\\-116.2109\\-264.3932\\71\\-118.1641\\-263.0985\\71\\-120.1172\\-261.5922\\71\\-122.0703\\-259.868\\71\\-125.1283\\-256.8984\\71\\-127.9297\\-254.2775\\71\\-129.8828\\-252.0532\\71\\-131.8359\\-249.9303\\71\\-134.3164\\-247.1328\\71\\-137.0056\\-243.2266\\71\\-137.6953\\-242.4114\\71\\-139.9065\\-239.3203\\71\\-140.9943\\-237.3672\\71\\-142.2331\\-235.4141\\71\\-142.8974\\-233.4609\\71\\-143.9938\\-231.5078\\71\\-144.6747\\-229.5547\\71\\-145.6163\\-227.6016\\71\\-146.3707\\-225.6484\\71\\-147.0205\\-223.6953\\71\\-147.8785\\-221.7422\\71\\-148.3736\\-219.7891\\71\\-148.7568\\-217.8359\\71\\-149.8756\\-213.9297\\71\\-150.2307\\-211.9766\\71\\-150.7298\\-208.0703\\71\\-151.1091\\-206.1172\\71\\-151.6029\\-204.1641\\71\\-151.9054\\-202.2109\\71\\-152.2021\\-198.3047\\71\\-152.4339\\-192.4453\\71\\-152.4239\\-186.5859\\71\\-152.2021\\-180.7266\\71\\-151.8891\\-176.8203\\71\\-151.649\\-174.8672\\71\\-150.8206\\-170.9609\\71\\-150.3361\\-167.0547\\71\\-149.8033\\-165.1016\\71\\-147.9604\\-163.1484\\71\\-147.9221\\-161.1953\\71\\-147.6979\\-159.2422\\71\\-148.2091\\-157.2891\\71\\-147.8858\\-155.3359\\71\\-147.1309\\-153.3828\\71\\-146.0328\\-149.4766\\71\\-145.1342\\-147.5234\\71\\-144.0079\\-143.6172\\71\\-143.0798\\-141.6641\\71\\-142.0437\\-137.7578\\71\\-141.0672\\-135.8047\\71\\-140.3959\\-133.8516\\71\\-139.3474\\-131.8984\\71\\-138.543\\-129.9453\\71\\-136.8347\\-126.0391\\71\\-136.2134\\-124.0859\\71\\-135.1103\\-122.1328\\71\\-134.3498\\-120.1797\\71\\-133.1279\\-118.2266\\71\\-132.1928\\-116.2734\\71\\-130.9521\\-114.3203\\71\\-128.8213\\-110.4141\\71\\-127.9297\\-109.097\\71\\-124.3514\\-104.5547\\71\\-122.0703\\-102.0615\\71\\-120.1172\\-100.3986\\71\\-118.1641\\-99.11072\\71\\-114.2578\\-96.13265\\71\\-112.3047\\-95.11948\\71\\-110.3516\\-93.88317\\71\\-106.4453\\-91.92913\\71\\-102.5391\\-89.63358\\71\\-100.5859\\-88.35483\\71\\-98.63281\\-87.74111\\71\\-94.72656\\-85.9622\\71\\-92.77344\\-85.23798\\71\\-90.82031\\-84.40573\\71\\-88.86719\\-83.82729\\71\\-84.96094\\-82.41301\\71\\-81.05469\\-81.66118\\71\\-77.14844\\-80.65248\\71\\-73.24219\\-80.10554\\71\\-67.38281\\-79.47057\\71\\-63.47656\\-78.94027\\71\\-59.57031\\-78.71108\\71\\-55.66406\\-78.59684\\71\\-53.71094\\-78.61364\\71\\-49.80469\\-78.76733\\71\\-47.85156\\-78.94027\\71\\-43.94531\\-79.45847\\71\\-40.03906\\-79.85892\\71\\-34.17969\\-80.51083\\71\\-32.22656\\-80.87119\\71\\-30.27344\\-81.45972\\71\\-28.32031\\-81.83709\\71\\-24.41406\\-82.2107\\71\\-22.46094\\-82.27612\\71\\-18.55469\\-82.20159\\71\\-10.74219\\-81.70313\\71\\-8.789063\\-81.39092\\71\\-6.835938\\-81.20524\\71\\-0.9765625\\-80.99905\\71\\0.9765625\\-80.98543\\71\\10.74219\\-80.62891\\71\\22.46094\\-80.4724\\71\\28.32031\\-80.23495\\71\\32.22656\\-79.81297\\71\\40.03906\\-79.09748\\71\\41.99219\\-78.96462\\71\\45.89844\\-78.84925\\71\\51.75781\\-78.89353\\71\\59.57031\\-79.41538\\71\\65.42969\\-79.84206\\71\\71.28906\\-80.35829\\71\\73.24219\\-80.56747\\71\\79.10156\\-81.69662\\71\\83.00781\\-82.23754\\71\\84.96094\\-82.56223\\71\\88.86719\\-83.71172\\71\\92.77344\\-84.65171\\71\\94.72656\\-85.46968\\71\\98.63281\\-86.57406\\71\\100.5859\\-87.45806\\71\\102.5391\\-88.01454\\71\\104.6381\\-88.92969\\71\\108.3984\\-90.81623\\71\\111.8262\\-92.83594\\71\\112.3047\\-93.19572\\71\\114.2578\\-94.16271\\71\\117.6196\\-96.74219\\71\\122.0969\\-100.6484\\71\\124.0234\\-102.8743\\71\\125.2346\\-104.5547\\71\\126.8024\\-106.5078\\71\\128.2647\\-108.4609\\71\\129.2426\\-110.4141\\71\\130.5402\\-112.3672\\71\\131.3996\\-114.3203\\71\\132.6614\\-116.2734\\71\\134.7244\\-120.1797\\71\\136.5922\\-124.0859\\71\\137.1971\\-126.0391\\71\\138.3301\\-127.9922\\71\\139.0029\\-129.9453\\71\\140.1155\\-131.8984\\71\\140.7795\\-133.8516\\71\\141.655\\-135.8047\\71\\142.3792\\-137.7578\\71\\142.7965\\-139.7109\\71\\144.2303\\-143.6172\\71\\144.6533\\-145.5703\\71\\145.2637\\-147.5234\\71\\146.054\\-149.4766\\71\\146.8889\\-153.3828\\71\\147.4836\\-155.3359\\71\\147.9675\\-157.2891\\71\\148.2573\\-159.2422\\71\\148.9525\\-165.1016\\71\\149.573\\-169.0078\\71\\149.9911\\-172.9141\\71\\150.1872\\-176.8203\\71\\150.2902\\-180.7266\\71\\150.3418\\-184.6328\\71\\150.3251\\-188.5391\\71\\150.2551\\-192.4453\\71\\150.1346\\-196.3516\\71\\149.899\\-200.2578\\71\\149.7206\\-202.2109\\71\\148.9094\\-208.0703\\71\\148.4904\\-211.9766\\71\\147.9675\\-215.8828\\71\\146.8385\\-219.7891\\71\\146.3617\\-221.7422\\71\\145.6962\\-223.6953\\71\\144.7477\\-225.6484\\71\\144.1406\\-227.6016\\71\\143.0189\\-229.5547\\71\\142.2461\\-231.5078\\71\\140.9889\\-233.4609\\71\\139.8786\\-235.4141\\71\\136.9078\\-239.3203\\71\\135.7422\\-241.0575\\71\\133.9614\\-243.2266\\71\\131.8359\\-245.3638\\71\\129.8828\\-247.4583\\71\\127.9297\\-249.3458\\71\\125.9766\\-250.7036\\71\\122.0703\\-253.9814\\71\\120.1172\\-255.4967\\71\\118.1641\\-256.5359\\71\\114.2578\\-259.1334\\71\\112.3047\\-260.1769\\71\\110.3516\\-261.4232\\71\\108.3984\\-262.2558\\71\\106.4453\\-263.3673\\71\\104.4922\\-264.0836\\71\\102.5391\\-265.2816\\71\\100.5859\\-266.1229\\71\\98.63281\\-267.2767\\71\\96.67969\\-268.0545\\71\\94.72656\\-269.1553\\71\\92.77344\\-269.7757\\71\\90.82031\\-270.8248\\71\\88.86719\\-271.6963\\71\\86.91406\\-272.9\\71\\84.96094\\-273.7658\\71\\83.00781\\-274.9943\\71\\81.05469\\-275.7234\\71\\79.10156\\-276.957\\71\\77.14844\\-277.8184\\71\\75.19531\\-279.1436\\71\\71.28906\\-281.2454\\71\\65.16602\\-284.2422\\71\\61.48897\\-286.1953\\71\\55.66406\\-288.8793\\71\\53.71094\\-289.3798\\71\\51.75781\\-290.4096\\71\\49.80469\\-291.1126\\71\\45.89844\\-292.8556\\71\\43.94531\\-293.4866\\71\\41.99219\\-294.3707\\71\\40.03906\\-294.8778\\71\\38.08594\\-295.259\\71\\36.13281\\-295.8757\\71\\34.17969\\-296.5904\\71\\30.27344\\-297.3669\\71\\28.32031\\-298.1135\\71\\26.36719\\-298.6312\\71\\22.46094\\-299.3467\\71\\18.55469\\-300.2466\\71\\16.60156\\-300.4938\\71\\10.74219\\-300.9256\\71\\4.882813\\-301.1798\\71\\0.9765625\\-301.2279\\71\\-2.929688\\-301.1884\\71\\-6.835938\\-301.0621\\71\\-10.74219\\-300.878\\71\\-14.64844\\-300.6205\\71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002265"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "281"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "162"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-299.9338\\73\\-22.46094\\-299.4338\\73\\-28.32031\\-298.4194\\73\\-32.22656\\-297.2212\\73\\-36.13281\\-296.5372\\73\\-38.08594\\-295.8032\\73\\-40.03906\\-295.2792\\73\\-43.94531\\-294.4992\\73\\-45.89844\\-293.6758\\73\\-49.80469\\-292.4706\\73\\-51.75781\\-291.4908\\73\\-53.71094\\-290.8839\\73\\-57.61719\\-289.3309\\73\\-59.57031\\-288.9114\\73\\-63.47656\\-287.3412\\73\\-65.42969\\-286.7755\\73\\-67.38281\\-285.7812\\73\\-69.33594\\-285.0986\\73\\-73.24219\\-283.4484\\73\\-75.19531\\-283.0109\\73\\-77.14844\\-282.2024\\73\\-79.10156\\-281.4994\\73\\-81.05469\\-280.9928\\73\\-84.96094\\-279.4071\\73\\-86.91406\\-278.7647\\73\\-88.86719\\-277.786\\73\\-90.82031\\-277.2435\\73\\-92.77344\\-276.5156\\73\\-94.72656\\-275.6818\\73\\-96.67969\\-275.1464\\73\\-98.63281\\-274.1966\\73\\-100.5859\\-273.3792\\73\\-102.5391\\-272.2616\\73\\-104.4922\\-271.3324\\73\\-106.4453\\-270.0921\\73\\-108.3984\\-269.3138\\73\\-110.3516\\-268.0208\\73\\-112.3047\\-266.9154\\73\\-115.3151\\-264.7109\\73\\-116.2109\\-263.9582\\73\\-120.1172\\-261.1967\\73\\-122.7532\\-258.8516\\73\\-125.9766\\-255.8349\\73\\-127.9297\\-253.9069\\73\\-131.8359\\-249.5209\\73\\-133.8567\\-247.1328\\73\\-138.1747\\-241.2734\\73\\-139.3506\\-239.3203\\73\\-140.6882\\-237.3672\\73\\-141.9247\\-235.4141\\73\\-142.7047\\-233.4609\\73\\-144.4607\\-229.5547\\73\\-145.1557\\-227.6016\\73\\-146.157\\-225.6484\\73\\-146.7369\\-223.6953\\73\\-147.5848\\-221.7422\\73\\-148.1802\\-219.7891\\73\\-148.9868\\-215.8828\\73\\-149.5882\\-213.9297\\73\\-150.063\\-211.9766\\73\\-150.8118\\-206.1172\\73\\-151.6263\\-202.2109\\73\\-152.0025\\-198.3047\\73\\-152.1671\\-194.3984\\73\\-152.2466\\-190.4922\\73\\-152.2217\\-186.5859\\73\\-152.087\\-182.6797\\73\\-151.8291\\-178.7734\\73\\-151.591\\-176.8203\\73\\-150.8634\\-172.9141\\73\\-150.5959\\-170.9609\\73\\-150.1988\\-167.0547\\73\\-149.8413\\-165.1016\\73\\-148.8997\\-163.1484\\73\\-148.7742\\-161.1953\\73\\-148.3907\\-159.2422\\73\\-148.1257\\-157.2891\\73\\-147.6366\\-155.3359\\73\\-146.855\\-153.3828\\73\\-146.3514\\-151.4297\\73\\-145.7316\\-149.4766\\73\\-144.8742\\-147.5234\\73\\-144.3802\\-145.5703\\73\\-143.7249\\-143.6172\\73\\-142.8686\\-141.6641\\73\\-142.4447\\-139.7109\\73\\-141.7969\\-137.7578\\73\\-140.8594\\-135.8047\\73\\-140.2007\\-133.8516\\73\\-139.0533\\-131.8984\\73\\-138.3686\\-129.9453\\73\\-137.3486\\-127.9922\\73\\-135.96\\-124.0859\\73\\-134.9182\\-122.1328\\73\\-134.1284\\-120.1797\\73\\-132.8987\\-118.2266\\73\\-131.8586\\-116.2734\\73\\-129.8828\\-112.7977\\73\\-128.6201\\-110.4141\\73\\-127.1497\\-108.4609\\73\\-122.2098\\-102.6016\\73\\-119.816\\-100.6484\\73\\-118.1641\\-99.47786\\73\\-116.2109\\-97.8869\\73\\-114.2578\\-96.52281\\73\\-112.3047\\-95.42911\\73\\-110.3516\\-94.14925\\73\\-108.3984\\-93.34515\\73\\-106.4453\\-92.20174\\73\\-104.4922\\-91.25842\\73\\-102.5391\\-89.94264\\73\\-100.5859\\-88.76159\\73\\-98.63281\\-87.95939\\73\\-96.67969\\-87.27411\\73\\-94.72656\\-86.29956\\73\\-90.82031\\-84.71539\\73\\-86.91406\\-83.50362\\73\\-84.96094\\-82.69989\\73\\-83.00781\\-82.24261\\73\\-79.10156\\-81.58123\\73\\-77.14844\\-81.02985\\73\\-75.19531\\-80.62231\\73\\-71.28906\\-80.14063\\73\\-65.42969\\-79.62559\\73\\-63.47656\\-79.41914\\73\\-59.57031\\-79.11188\\73\\-55.66406\\-78.96462\\73\\-53.71094\\-78.98968\\73\\-49.80469\\-79.18828\\73\\-45.89844\\-79.56982\\73\\-41.99219\\-79.898\\73\\-38.08594\\-80.31818\\73\\-36.13281\\-80.4724\\73\\-34.17969\\-80.76534\\73\\-30.27344\\-81.75723\\73\\-28.32031\\-82.00883\\73\\-24.41406\\-82.27131\\73\\-20.50781\\-82.25452\\73\\-16.60156\\-82.08772\\73\\-14.64844\\-81.93406\\73\\-10.74219\\-81.73502\\73\\-8.789063\\-81.48073\\73\\-4.882813\\-81.25\\73\\0.9765625\\-81.15754\\73\\6.835938\\-80.88432\\73\\8.789063\\-80.71959\\73\\14.64844\\-80.64228\\73\\18.55469\\-80.52359\\73\\22.46094\\-80.51476\\73\\28.32031\\-80.32554\\73\\30.27344\\-80.20837\\73\\32.22656\\-79.9789\\73\\36.13281\\-79.70217\\73\\41.99219\\-79.38025\\73\\45.89844\\-79.3079\\73\\51.75781\\-79.33684\\73\\59.57031\\-79.71576\\73\\63.47656\\-79.93693\\73\\71.28906\\-80.54539\\73\\73.24219\\-80.80842\\73\\75.19531\\-81.26329\\73\\77.14844\\-81.61225\\73\\83.00781\\-82.43805\\73\\84.96094\\-82.91376\\73\\86.91406\\-83.53682\\73\\90.82031\\-84.42027\\73\\94.72656\\-85.76886\\73\\96.67969\\-86.23391\\73\\100.5859\\-87.74916\\73\\102.5391\\-88.24673\\73\\104.4922\\-89.26667\\73\\106.4453\\-90.11391\\73\\108.3984\\-91.32491\\73\\110.3516\\-92.26474\\73\\112.3047\\-93.57967\\73\\114.2578\\-94.53729\\73\\116.2109\\-95.97018\\73\\118.1641\\-97.63297\\73\\121.5665\\-100.6484\\73\\124.0234\\-103.3096\\73\\124.9075\\-104.5547\\73\\126.5638\\-106.5078\\73\\127.9691\\-108.4609\\73\\130.3298\\-112.3672\\73\\131.187\\-114.3203\\73\\132.4815\\-116.2734\\73\\133.4212\\-118.2266\\73\\134.5762\\-120.1797\\73\\135.4214\\-122.1328\\73\\136.4621\\-124.0859\\73\\137.0422\\-126.0391\\73\\138.1601\\-127.9922\\73\\138.8372\\-129.9453\\73\\139.9111\\-131.8984\\73\\141.3949\\-135.8047\\73\\142.2587\\-137.7578\\73\\142.686\\-139.7109\\73\\143.2482\\-141.6641\\73\\144.0768\\-143.6172\\73\\145.0413\\-147.5234\\73\\145.8748\\-149.4766\\73\\146.6978\\-153.3828\\73\\147.1673\\-155.3359\\73\\147.7486\\-157.2891\\73\\148.3398\\-161.1953\\73\\148.7525\\-165.1016\\73\\149.2143\\-169.0078\\73\\149.7467\\-172.9141\\73\\150.0213\\-176.8203\\73\\150.1801\\-182.6797\\73\\150.1465\\-190.4922\\73\\150.0126\\-194.3984\\73\\149.7838\\-198.3047\\73\\149.5882\\-200.2578\\73\\148.8867\\-206.1172\\73\\148.3054\\-211.9766\\73\\148.0504\\-213.9297\\73\\147.6506\\-215.8828\\73\\147.0388\\-217.8359\\73\\146.0761\\-221.7422\\73\\145.1868\\-223.6953\\73\\143.766\\-227.6016\\73\\142.7346\\-229.5547\\73\\141.8732\\-231.5078\\73\\140.6691\\-233.4609\\73\\139.3042\\-235.4141\\73\\138.0573\\-237.3672\\73\\135.7422\\-240.5003\\73\\133.7891\\-242.8183\\73\\131.4259\\-245.1797\\73\\129.6072\\-247.1328\\73\\127.5645\\-249.0859\\73\\125.9766\\-250.2718\\73\\122.0703\\-253.5548\\73\\120.0853\\-254.9453\\73\\118.1641\\-256.1237\\73\\116.2109\\-257.4388\\73\\114.2578\\-258.4429\\73\\113.7091\\-258.8516\\73\\110.3516\\-260.921\\73\\106.4453\\-262.9206\\73\\104.4922\\-263.7586\\73\\100.5859\\-265.7307\\73\\98.63281\\-266.8579\\73\\96.67969\\-267.7225\\73\\94.72656\\-268.7774\\73\\90.82031\\-270.4076\\73\\90.61726\\-270.5703\\73\\84.96094\\-273.6291\\73\\83.00781\\-274.9038\\73\\81.05469\\-275.6667\\73\\79.10156\\-276.8912\\73\\77.14844\\-277.7843\\73\\75.19531\\-279.122\\73\\71.28906\\-281.2761\\73\\69.29977\\-282.2891\\73\\65.42969\\-284.1104\\73\\61.66847\\-286.1953\\73\\55.66406\\-288.943\\73\\53.71094\\-289.4485\\73\\51.75781\\-290.5416\\73\\49.80469\\-291.1939\\73\\47.85156\\-292.1768\\73\\43.94531\\-293.6263\\73\\41.99219\\-294.5023\\73\\38.08594\\-295.3203\\73\\34.17969\\-296.6634\\73\\30.27344\\-297.4724\\73\\28.32031\\-298.2502\\73\\26.36719\\-298.6983\\73\\22.46094\\-299.4434\\73\\20.50781\\-299.948\\73\\18.55469\\-300.3257\\73\\14.64844\\-300.7034\\73\\8.789063\\-301.0818\\73\\4.882813\\-301.2279\\73\\-0.9765625\\-301.2595\\73\\-4.882813\\-301.184\\73\\-10.74219\\-300.9351\\73\\-16.60156\\-300.4974\\73\\-18.55469\\-300.2883\\73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002264"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "272"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "163"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-300.0416\\75\\-22.46094\\-299.5374\\75\\-24.41406\\-299.1401\\75\\-28.32031\\-298.4946\\75\\-32.22656\\-297.2798\\75\\-36.13281\\-296.5983\\75\\-38.08594\\-295.861\\75\\-40.03906\\-295.2994\\75\\-43.94531\\-294.5208\\75\\-45.89844\\-293.6845\\75\\-49.80469\\-292.4894\\75\\-51.75781\\-291.4758\\75\\-53.71094\\-290.8287\\75\\-55.66406\\-289.9555\\75\\-57.61719\\-289.3074\\75\\-59.57031\\-288.8716\\75\\-63.47656\\-287.2835\\75\\-65.42969\\-286.6836\\75\\-67.38281\\-285.6431\\75\\-69.33594\\-284.9938\\75\\-71.28906\\-284.0572\\75\\-73.24219\\-283.3386\\75\\-75.19531\\-282.8517\\75\\-77.14844\\-281.9565\\75\\-81.05469\\-280.7581\\75\\-83.00781\\-279.8171\\75\\-84.96094\\-279.1566\\75\\-86.91406\\-278.2844\\75\\-88.86719\\-277.5117\\75\\-90.82031\\-276.9433\\75\\-92.77344\\-276.0211\\75\\-96.67969\\-274.7688\\75\\-98.63281\\-273.7441\\75\\-100.5859\\-272.9819\\75\\-102.5391\\-271.7867\\75\\-104.4922\\-270.9224\\75\\-106.4453\\-269.7393\\75\\-108.3984\\-268.8801\\75\\-110.3516\\-267.6223\\75\\-112.3047\\-266.2532\\75\\-114.2578\\-265.0365\\75\\-117.3459\\-262.7578\\75\\-119.8621\\-260.8047\\75\\-122.1837\\-258.8516\\75\\-125.9766\\-255.419\\75\\-128.3864\\-252.9922\\75\\-133.7891\\-246.6285\\75\\-136.4435\\-243.2266\\75\\-138.956\\-239.3203\\75\\-140.4099\\-237.3672\\75\\-142.5126\\-233.4609\\75\\-143.1683\\-231.5078\\75\\-144.2268\\-229.5547\\75\\-144.8282\\-227.6016\\75\\-145.8795\\-225.6484\\75\\-146.495\\-223.6953\\75\\-147.9707\\-219.7891\\75\\-148.7568\\-215.8828\\75\\-149.2413\\-213.9297\\75\\-149.8413\\-211.9766\\75\\-150.173\\-210.0234\\75\\-150.6027\\-206.1172\\75\\-151.5158\\-200.2578\\75\\-151.8809\\-196.3516\\75\\-152.0199\\-192.4453\\75\\-152.0165\\-186.5859\\75\\-151.8725\\-182.6797\\75\\-151.4757\\-178.7734\\75\\-150.8601\\-174.8672\\75\\-150.2664\\-169.0078\\75\\-150.0126\\-167.0547\\75\\-149.6169\\-165.1016\\75\\-149.047\\-163.1484\\75\\-147.9886\\-157.2891\\75\\-146.6462\\-153.3828\\75\\-146.1643\\-151.4297\\75\\-145.3402\\-149.4766\\75\\-144.6823\\-147.5234\\75\\-144.2077\\-145.5703\\75\\-143.3806\\-143.6172\\75\\-142.7409\\-141.6641\\75\\-142.292\\-139.7109\\75\\-140.6883\\-135.8047\\75\\-139.9633\\-133.8516\\75\\-138.8576\\-131.8984\\75\\-138.212\\-129.9453\\75\\-137.1107\\-127.9922\\75\\-136.5446\\-126.0391\\75\\-133.8281\\-120.1797\\75\\-131.8359\\-116.7279\\75\\-131.4984\\-116.2734\\75\\-130.5768\\-114.3203\\75\\-129.3395\\-112.3672\\75\\-128.3881\\-110.4141\\75\\-126.904\\-108.4609\\75\\-121.6474\\-102.6016\\75\\-118.1641\\-99.73126\\75\\-116.2109\\-98.22118\\75\\-113.9803\\-96.74219\\75\\-110.3516\\-94.47626\\75\\-108.3984\\-93.63378\\75\\-106.4453\\-92.50391\\75\\-104.4922\\-91.61818\\75\\-102.5391\\-90.23803\\75\\-100.5859\\-89.3615\\75\\-98.63281\\-88.21886\\75\\-96.67969\\-87.56527\\75\\-94.72656\\-86.55054\\75\\-90.82031\\-85.13969\\75\\-88.86719\\-84.32508\\75\\-86.91406\\-83.80701\\75\\-83.00781\\-82.49698\\75\\-79.10156\\-81.88226\\75\\-77.14844\\-81.50639\\75\\-75.19531\\-81.01481\\75\\-73.24219\\-80.62891\\75\\-71.28906\\-80.40751\\75\\-63.47656\\-79.76649\\75\\-59.57031\\-79.53376\\75\\-55.66406\\-79.44618\\75\\-53.71094\\-79.45847\\75\\-47.85156\\-79.70443\\75\\-41.99219\\-80.12864\\75\\-36.13281\\-80.76791\\75\\-32.22656\\-81.66271\\75\\-30.27344\\-81.95863\\75\\-26.36719\\-82.26151\\75\\-22.46094\\-82.30216\\75\\-16.60156\\-82.08176\\75\\-10.74219\\-81.78776\\75\\-6.835938\\-81.46647\\75\\-4.882813\\-81.39092\\75\\0.9765625\\-81.34828\\75\\6.835938\\-81.02914\\75\\8.789063\\-80.80381\\75\\10.74219\\-80.71959\\75\\14.64844\\-80.68695\\75\\18.55469\\-80.5863\\75\\24.41406\\-80.53253\\75\\30.27344\\-80.32775\\75\\36.13281\\-79.91381\\75\\41.99219\\-79.66918\\75\\47.85156\\-79.62559\\75\\51.75781\\-79.6756\\75\\61.52344\\-80.0394\\75\\69.33594\\-80.59941\\75\\73.24219\\-81.17322\\75\\75.19531\\-81.58512\\75\\81.05469\\-82.33179\\75\\83.00781\\-82.71957\\75\\84.96094\\-83.3503\\75\\88.86719\\-84.22395\\75\\90.82031\\-84.76435\\75\\92.77344\\-85.51491\\75\\96.67969\\-86.55054\\75\\98.63281\\-87.39108\\75\\102.5391\\-88.56879\\75\\104.4922\\-89.63065\\75\\106.4453\\-90.45362\\75\\108.3984\\-91.69279\\75\\110.3516\\-92.7005\\75\\113.8942\\-94.78906\\75\\116.2109\\-96.32162\\75\\118.8263\\-98.69531\\75\\121.0869\\-100.6484\\75\\123.0007\\-102.6016\\75\\124.6806\\-104.5547\\75\\126.2395\\-106.5078\\75\\127.9297\\-108.8939\\75\\128.9243\\-110.4141\\75\\130.075\\-112.3672\\75\\131.0139\\-114.3203\\75\\132.2706\\-116.2734\\75\\133.1764\\-118.2266\\75\\134.3971\\-120.1797\\75\\135.1851\\-122.1328\\75\\136.2899\\-124.0859\\75\\136.908\\-126.0391\\75\\137.931\\-127.9922\\75\\138.6769\\-129.9453\\75\\140.5029\\-133.8516\\75\\141.1683\\-135.8047\\75\\142.0995\\-137.7578\\75\\143.0369\\-141.6641\\75\\143.8525\\-143.6172\\75\\144.4092\\-145.5703\\75\\144.8474\\-147.5234\\75\\145.5744\\-149.4766\\75\\146.1356\\-151.4297\\75\\146.8952\\-155.3359\\75\\147.8957\\-159.2422\\75\\148.1717\\-161.1953\\75\\148.7903\\-167.0547\\75\\149.1464\\-170.9609\\75\\149.6169\\-174.8672\\75\\149.7698\\-176.8203\\75\\149.9694\\-182.6797\\75\\149.9784\\-186.5859\\75\\149.9187\\-190.4922\\75\\149.6019\\-196.3516\\75\\149.1864\\-200.2578\\75\\148.3296\\-210.0234\\75\\147.7505\\-213.9297\\75\\147.1848\\-215.8828\\75\\146.2777\\-219.7891\\75\\145.6822\\-221.7422\\75\\144.8161\\-223.6953\\75\\144.2613\\-225.6484\\75\\143.2316\\-227.6016\\75\\142.491\\-229.5547\\75\\140.3315\\-233.4609\\75\\138.8636\\-235.4141\\75\\137.5407\\-237.3672\\75\\136.35\\-239.3203\\75\\134.7591\\-241.2734\\75\\132.9278\\-243.2266\\75\\127.9297\\-248.271\\75\\125.9766\\-249.9661\\75\\122.0255\\-252.9922\\75\\118.1641\\-255.7613\\75\\114.2578\\-257.9881\\75\\112.3047\\-259.2747\\75\\110.3516\\-260.2825\\75\\108.3984\\-261.5324\\75\\106.4453\\-262.3574\\75\\104.4922\\-263.4535\\75\\102.5391\\-264.2124\\75\\100.5859\\-265.3929\\75\\98.63281\\-266.3096\\75\\96.67969\\-267.4488\\75\\94.72656\\-268.3151\\75\\92.77344\\-269.4022\\75\\90.82031\\-270.1095\\75\\88.86719\\-271.3548\\75\\86.91406\\-272.3182\\75\\83.41098\\-274.4766\\75\\83.00781\\-274.7973\\75\\81.05469\\-275.6279\\75\\79.10156\\-276.8434\\75\\77.14844\\-277.7546\\75\\75.19531\\-279.1084\\75\\71.28906\\-281.3004\\75\\69.33594\\-282.3135\\75\\65.42969\\-284.2015\\75\\63.47656\\-285.2508\\75\\61.52344\\-286.4085\\75\\59.57031\\-287.2218\\75\\57.61719\\-288.2036\\75\\55.66406\\-289.0172\\75\\53.71094\\-289.5319\\75\\51.75781\\-290.6637\\75\\49.80469\\-291.2911\\75\\47.85156\\-292.3496\\75\\43.94531\\-293.7654\\75\\41.99219\\-294.584\\75\\38.08594\\-295.4148\\75\\36.13281\\-296.1979\\75\\34.17969\\-296.7455\\75\\32.22656\\-297.0959\\75\\30.27344\\-297.6224\\75\\28.32031\\-298.3579\\75\\24.41406\\-299.1204\\75\\20.50781\\-300.0789\\75\\18.55469\\-300.3961\\75\\14.64844\\-300.7596\\75\\10.74219\\-301.0208\\75\\4.882813\\-301.2858\\75\\0.9765625\\-301.3221\\75\\-4.882813\\-301.2357\\75\\-10.74219\\-300.9774\\75\\-16.60156\\-300.5463\\75\\-18.55469\\-300.3555\\75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "271"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "164"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-300.1377\\77\\-24.41406\\-299.2071\\77\\-28.32031\\-298.5599\\77\\-30.27344\\-298.0088\\77\\-32.22656\\-297.3351\\77\\-36.13281\\-296.6405\\77\\-40.03906\\-295.3332\\77\\-43.94531\\-294.5332\\77\\-45.89844\\-293.7182\\77\\-49.80469\\-292.4986\\77\\-51.75781\\-291.4711\\77\\-53.71094\\-290.8419\\77\\-55.66406\\-289.9426\\77\\-57.61719\\-289.2887\\77\\-59.57031\\-288.8469\\77\\-61.52344\\-287.9531\\77\\-65.42969\\-286.5821\\77\\-67.38281\\-285.5239\\77\\-69.33594\\-284.8915\\77\\-71.28906\\-283.8583\\77\\-75.19531\\-282.6727\\77\\-77.14844\\-281.7357\\77\\-79.10156\\-281.1804\\77\\-81.05469\\-280.4724\\77\\-83.00781\\-279.5449\\77\\-84.96094\\-278.8889\\77\\-86.91406\\-277.8665\\77\\-88.86719\\-277.2738\\77\\-90.82031\\-276.546\\77\\-92.77344\\-275.7098\\77\\-94.72656\\-275.1794\\77\\-96.67969\\-274.2026\\77\\-98.63281\\-273.3969\\77\\-100.5859\\-272.3571\\77\\-102.5391\\-271.4282\\77\\-104.4922\\-270.3074\\77\\-106.4453\\-269.464\\77\\-108.3984\\-268.2797\\77\\-110.3516\\-267.2305\\77\\-114.2578\\-264.4157\\77\\-116.2109\\-263.2145\\77\\-118.1641\\-261.7424\\77\\-121.5567\\-258.8516\\77\\-125.9766\\-254.8125\\77\\-127.8265\\-252.9922\\77\\-131.2355\\-249.0859\\77\\-131.8359\\-248.4765\\77\\-134.6325\\-245.1797\\77\\-136.1195\\-243.2266\\77\\-137.2462\\-241.2734\\77\\-137.6953\\-240.7476\\77\\-139.6484\\-237.8715\\77\\-140.067\\-237.3672\\77\\-141.066\\-235.4141\\77\\-142.2714\\-233.4609\\77\\-142.8973\\-231.5078\\77\\-143.944\\-229.5547\\77\\-144.5946\\-227.6016\\77\\-146.2794\\-223.6953\\77\\-146.8833\\-221.7422\\77\\-147.7136\\-219.7891\\77\\-148.227\\-217.8359\\77\\-148.9763\\-213.9297\\77\\-149.5448\\-211.9766\\77\\-149.9821\\-210.0234\\77\\-150.2551\\-208.0703\\77\\-151.0715\\-200.2578\\77\\-151.5789\\-196.3516\\77\\-151.7639\\-192.4453\\77\\-151.8019\\-190.4922\\77\\-151.7639\\-186.5859\\77\\-151.5542\\-182.6797\\77\\-151.0462\\-178.7734\\77\\-150.6138\\-174.8672\\77\\-150.3074\\-170.9609\\77\\-149.7811\\-167.0547\\77\\-149.2551\\-165.1016\\77\\-148.8268\\-163.1484\\77\\-148.1963\\-159.2422\\77\\-147.7732\\-157.2891\\77\\-147.0165\\-155.3359\\77\\-145.9572\\-151.4297\\77\\-145.0508\\-149.4766\\77\\-144.0079\\-145.5703\\77\\-143.1169\\-143.6172\\77\\-142.1477\\-139.7109\\77\\-141.2542\\-137.7578\\77\\-140.532\\-135.8047\\77\\-138.7128\\-131.8984\\77\\-137.9883\\-129.9453\\77\\-136.98\\-127.9922\\77\\-136.4296\\-126.0391\\77\\-135.3725\\-124.0859\\77\\-134.6168\\-122.1328\\77\\-133.509\\-120.1797\\77\\-132.5335\\-118.2266\\77\\-131.2657\\-116.2734\\77\\-130.3745\\-114.3203\\77\\-129.1311\\-112.3672\\77\\-128.0136\\-110.4141\\77\\-126.617\\-108.4609\\77\\-123.174\\-104.5547\\77\\-121.2993\\-102.6016\\77\\-118.1641\\-100.0186\\77\\-112.3047\\-95.94378\\77\\-110.2189\\-94.78906\\77\\-104.4922\\-91.89286\\77\\-102.5391\\-90.62286\\77\\-100.5859\\-89.69318\\77\\-98.63281\\-88.58197\\77\\-96.67969\\-87.83672\\77\\-94.72656\\-86.8913\\77\\-92.77344\\-86.08932\\77\\-90.82031\\-85.53152\\77\\-88.86719\\-84.65723\\77\\-84.96094\\-83.58064\\77\\-83.00781\\-82.85897\\77\\-81.05469\\-82.38062\\77\\-77.14844\\-81.82568\\77\\-73.24219\\-81.03056\\77\\-71.28906\\-80.70856\\77\\-69.33594\\-80.49345\\77\\-63.47656\\-80.05131\\77\\-59.57031\\-79.86249\\77\\-55.66406\\-79.77917\\77\\-53.71094\\-79.79185\\77\\-47.85156\\-79.98292\\77\\-43.94531\\-80.25107\\77\\-40.03906\\-80.59592\\77\\-38.08594\\-80.84345\\77\\-34.17969\\-81.62937\\77\\-32.22656\\-81.91221\\77\\-28.32031\\-82.25947\\77\\-26.36719\\-82.3409\\77\\-22.46094\\-82.31407\\77\\-10.74219\\-81.86694\\77\\-4.882813\\-81.61225\\77\\0.9765625\\-81.58839\\77\\4.882813\\-81.38886\\77\\6.835938\\-81.20524\\77\\8.789063\\-80.91119\\77\\10.74219\\-80.80381\\77\\12.69531\\-80.81839\\77\\16.60156\\-80.70061\\77\\26.36719\\-80.57682\\77\\34.17969\\-80.28911\\77\\36.13281\\-80.15261\\77\\41.99219\\-79.92914\\77\\47.85156\\-79.89957\\77\\53.71094\\-79.98292\\77\\61.52344\\-80.29572\\77\\65.42969\\-80.50996\\77\\69.33594\\-80.91591\\77\\75.19531\\-81.8325\\77\\79.10156\\-82.25947\\77\\81.05469\\-82.55939\\77\\84.96094\\-83.66809\\77\\88.86719\\-84.50852\\77\\90.82031\\-85.23478\\77\\94.72656\\-86.30092\\77\\96.67969\\-86.93687\\77\\98.63281\\-87.68045\\77\\100.5859\\-88.15217\\77\\104.4922\\-89.92348\\77\\108.3984\\-91.99485\\77\\110.3516\\-93.21325\\77\\112.3047\\-94.10943\\77\\116.1056\\-96.74219\\77\\120.1172\\-100.0933\\77\\122.7426\\-102.6016\\77\\124.3985\\-104.5547\\77\\128.7364\\-110.4141\\77\\129.732\\-112.3672\\77\\132.0103\\-116.2734\\77\\132.9753\\-118.2266\\77\\134.1943\\-120.1797\\77\\135.019\\-122.1328\\77\\136.0653\\-124.0859\\77\\136.773\\-126.0391\\77\\138.5174\\-129.9453\\77\\139.2927\\-131.8984\\77\\140.3491\\-133.8516\\77\\140.9642\\-135.8047\\77\\141.8896\\-137.7578\\77\\142.4689\\-139.7109\\77\\142.8686\\-141.6641\\77\\144.2746\\-145.5703\\77\\144.679\\-147.5234\\77\\145.2258\\-149.4766\\77\\145.9358\\-151.4297\\77\\146.6551\\-155.3359\\77\\147.0898\\-157.2891\\77\\147.6237\\-159.2422\\77\\147.9797\\-161.1953\\77\\148.6053\\-167.0547\\77\\148.8867\\-170.9609\\77\\149.39\\-176.8203\\77\\149.6691\\-182.6797\\77\\149.6691\\-188.5391\\77\\149.4696\\-192.4453\\77\\148.4843\\-206.1172\\77\\148.11\\-210.0234\\77\\147.7975\\-211.9766\\77\\146.8194\\-215.8828\\77\\145.9754\\-219.7891\\77\\145.1185\\-221.7422\\77\\143.9251\\-225.6484\\77\\142.8889\\-227.6016\\77\\142.202\\-229.5547\\77\\140.9485\\-231.5078\\77\\139.8994\\-233.4609\\77\\137.6953\\-236.6348\\77\\137.097\\-237.3672\\77\\135.9089\\-239.3203\\77\\134.4154\\-241.2734\\77\\130.671\\-245.1797\\77\\127.9297\\-247.8939\\77\\125.9766\\-249.5635\\77\\124.0234\\-250.8696\\77\\122.0703\\-252.3302\\77\\120.1172\\-253.8941\\77\\118.1641\\-255.317\\77\\116.2109\\-256.3294\\77\\114.2578\\-257.6048\\77\\112.3047\\-258.6205\\77\\108.3984\\-261.097\\77\\106.4453\\-261.9679\\77\\104.4922\\-263.0611\\77\\102.5391\\-263.8625\\77\\100.5859\\-265.0039\\77\\98.63281\\-265.9071\\77\\96.67969\\-267.1523\\77\\94.72656\\-268.0014\\77\\92.77344\\-269.2005\\77\\90.82031\\-269.9301\\77\\88.86719\\-271.1786\\77\\86.91406\\-272.1086\\77\\83.00781\\-274.6644\\77\\81.05469\\-275.5918\\77\\79.10156\\-276.7942\\77\\77.14844\\-277.7133\\77\\75.19531\\-279.1056\\77\\73.07381\\-280.3359\\77\\69.33594\\-282.3764\\77\\67.38281\\-283.2599\\77\\63.47656\\-285.3051\\77\\61.52344\\-286.523\\77\\59.57031\\-287.2848\\77\\57.61719\\-288.3087\\77\\55.66406\\-289.0833\\77\\53.71094\\-289.6463\\77\\51.75781\\-290.7726\\77\\49.80469\\-291.4128\\77\\47.85156\\-292.504\\77\\45.89844\\-293.1403\\77\\41.99219\\-294.6728\\77\\38.08594\\-295.5367\\77\\36.13281\\-296.3556\\77\\34.17969\\-296.8272\\77\\32.22656\\-297.1844\\77\\28.32031\\-298.4792\\77\\24.41406\\-299.218\\77\\20.50781\\-300.1949\\77\\16.60156\\-300.654\\77\\12.69531\\-300.9542\\77\\6.835938\\-301.2763\\77\\0.9765625\\-301.3752\\77\\-2.929688\\-301.3386\\77\\-8.789063\\-301.114\\77\\-12.69531\\-300.878\\77\\-18.55469\\-300.4078\\77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002262"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "267"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "165"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-300.216\\79\\-24.41406\\-299.2632\\79\\-28.32031\\-298.6102\\79\\-30.27344\\-298.1378\\79\\-32.22656\\-297.3985\\79\\-36.13281\\-296.6737\\79\\-40.03906\\-295.3634\\79\\-43.94531\\-294.5579\\79\\-45.89844\\-293.7551\\79\\-49.80469\\-292.5167\\79\\-51.75781\\-291.4826\\79\\-53.71094\\-290.8919\\79\\-55.66406\\-290.0156\\79\\-57.61719\\-289.2887\\79\\-59.57031\\-288.8389\\79\\-61.52344\\-287.9132\\79\\-65.42969\\-286.4714\\79\\-67.38281\\-285.4299\\79\\-69.33594\\-284.7835\\79\\-71.28906\\-283.7159\\79\\-73.24219\\-283.1616\\79\\-75.19531\\-282.4783\\79\\-77.14844\\-281.5627\\79\\-79.10156\\-281.0084\\79\\-81.05469\\-280.1057\\79\\-84.96094\\-278.5325\\79\\-86.91406\\-277.5782\\79\\-88.86719\\-277.0265\\79\\-90.82031\\-276.0752\\79\\-94.72656\\-274.8159\\79\\-96.67969\\-273.769\\79\\-98.63281\\-273.0178\\79\\-100.5859\\-271.8331\\79\\-102.5391\\-271.0495\\79\\-104.4922\\-269.87\\79\\-106.4453\\-269.1122\\79\\-108.3984\\-267.8372\\79\\-110.3516\\-266.6721\\79\\-112.3047\\-265.3838\\79\\-114.2578\\-263.9108\\79\\-116.1194\\-262.7578\\79\\-118.1641\\-261.3305\\79\\-121.1007\\-258.8516\\79\\-123.3068\\-256.8984\\79\\-125.9766\\-254.3648\\79\\-129.1681\\-251.0391\\79\\-131.8359\\-248.0584\\79\\-134.2739\\-245.1797\\79\\-135.7422\\-243.135\\79\\-136.8952\\-241.2734\\79\\-138.3329\\-239.3203\\79\\-141.9548\\-233.4609\\79\\-142.6575\\-231.5078\\79\\-144.3818\\-227.6016\\79\\-145.0258\\-225.6484\\79\\-146.0314\\-223.6953\\79\\-146.6064\\-221.7422\\79\\-148.0164\\-217.8359\\79\\-149.1718\\-211.9766\\79\\-149.7206\\-210.0234\\79\\-150.0873\\-208.0703\\79\\-150.3024\\-206.1172\\79\\-150.9339\\-198.3047\\79\\-151.1195\\-196.3516\\79\\-151.3593\\-192.4453\\79\\-151.4194\\-188.5391\\79\\-151.3593\\-186.5859\\79\\-151.1072\\-182.6797\\79\\-150.7621\\-178.7734\\79\\-150.1465\\-170.9609\\79\\-149.8653\\-169.0078\\79\\-148.9975\\-165.1016\\79\\-148.629\\-163.1484\\79\\-148.0164\\-159.2422\\79\\-147.4686\\-157.2891\\79\\-146.7779\\-155.3359\\79\\-146.3087\\-153.3828\\79\\-145.6822\\-151.4297\\79\\-144.8399\\-149.4766\\79\\-144.388\\-147.5234\\79\\-143.7773\\-145.5703\\79\\-142.9396\\-143.6172\\79\\-142.5308\\-141.6641\\79\\-141.9772\\-139.7109\\79\\-141.0444\\-137.7578\\79\\-140.3809\\-135.8047\\79\\-139.3885\\-133.8516\\79\\-136.8835\\-127.9922\\79\\-136.3051\\-126.0391\\79\\-135.2113\\-124.0859\\79\\-134.4666\\-122.1328\\79\\-133.2617\\-120.1797\\79\\-132.3547\\-118.2266\\79\\-131.0757\\-116.2734\\79\\-130.1041\\-114.3203\\79\\-128.9185\\-112.3672\\79\\-126.3089\\-108.4609\\79\\-122.9162\\-104.5547\\79\\-120.1172\\-101.8609\\79\\-118.1641\\-100.3927\\79\\-116.2109\\-99.12023\\79\\-114.2578\\-97.58588\\79\\-112.3047\\-96.25054\\79\\-110.3516\\-95.21904\\79\\-108.3984\\-94.04228\\79\\-106.4453\\-93.26761\\79\\-105.7978\\-92.83594\\79\\-102.5391\\-91.1323\\79\\-100.5859\\-89.95193\\79\\-96.67969\\-88.06802\\79\\-92.77344\\-86.37231\\79\\-90.82031\\-85.83627\\79\\-86.91406\\-84.38535\\79\\-83.00781\\-83.36397\\79\\-81.05469\\-82.71957\\79\\-79.10156\\-82.3485\\79\\-73.24219\\-81.51479\\79\\-69.33594\\-80.83296\\79\\-63.47656\\-80.33234\\79\\-57.61719\\-80.10511\\79\\-53.71094\\-80.08768\\79\\-49.80469\\-80.16374\\79\\-43.94531\\-80.49345\\79\\-40.03906\\-80.92645\\79\\-36.13281\\-81.66271\\79\\-34.17969\\-81.89969\\79\\-30.27344\\-82.25452\\79\\-26.36719\\-82.39703\\79\\-22.46094\\-82.32598\\79\\-14.64844\\-82.05736\\79\\-6.835938\\-81.83709\\79\\0.9765625\\-81.80393\\79\\4.882813\\-81.63223\\79\\6.835938\\-81.45718\\79\\8.789063\\-81.09236\\79\\10.74219\\-80.98222\\79\\14.64844\\-80.91279\\79\\18.55469\\-80.75888\\79\\22.46094\\-80.75888\\79\\30.27344\\-80.60565\\79\\38.08594\\-80.30242\\79\\45.89844\\-80.18084\\79\\53.71094\\-80.23944\\79\\61.52344\\-80.49744\\79\\65.42969\\-80.79642\\79\\71.28906\\-81.59537\\79\\77.14844\\-82.20689\\79\\79.10156\\-82.45452\\79\\81.05469\\-82.8908\\79\\83.00781\\-83.48322\\79\\86.91406\\-84.34148\\79\\88.86719\\-84.90137\\79\\90.82031\\-85.60327\\79\\92.77344\\-86.02806\\79\\94.72656\\-86.57406\\79\\96.67969\\-87.37993\\79\\100.5859\\-88.40487\\79\\102.5391\\-89.45354\\79\\104.4922\\-90.22977\\79\\106.4453\\-91.43478\\79\\108.3984\\-92.31236\\79\\110.3516\\-93.56006\\79\\112.3047\\-94.50896\\79\\114.2578\\-95.79693\\79\\115.4665\\-96.74219\\79\\118.1641\\-99.04134\\79\\120.1172\\-100.591\\79\\122.3281\\-102.6016\\79\\125.4075\\-106.5078\\79\\125.9766\\-107.1406\\79\\128.5105\\-110.4141\\79\\129.456\\-112.3672\\79\\130.6824\\-114.3203\\79\\131.6452\\-116.2734\\79\\133.9296\\-120.1797\\79\\135.7982\\-124.0859\\79\\136.6404\\-126.0391\\79\\137.3117\\-127.9922\\79\\138.355\\-129.9453\\79\\139.0374\\-131.8984\\79\\140.1602\\-133.8516\\79\\140.7823\\-135.8047\\79\\141.625\\-137.7578\\79\\142.3401\\-139.7109\\79\\142.7288\\-141.6641\\79\\143.287\\-143.6172\\79\\144.0979\\-145.5703\\79\\144.9626\\-149.4766\\79\\145.6299\\-151.4297\\79\\146.1356\\-153.3828\\79\\146.8231\\-157.2891\\79\\147.7119\\-161.1953\\79\\148.0061\\-163.1484\\79\\148.4318\\-167.0547\\79\\148.9356\\-174.8672\\79\\149.2143\\-180.7266\\79\\149.2691\\-188.5391\\79\\148.8029\\-198.3047\\79\\148.2776\\-206.1172\\79\\147.806\\-210.0234\\79\\146.8971\\-213.9297\\79\\146.1461\\-217.8359\\79\\144.7519\\-221.7422\\79\\144.2829\\-223.6953\\79\\143.3932\\-225.6484\\79\\141.8044\\-229.5547\\79\\140.6193\\-231.5078\\79\\139.289\\-233.4609\\79\\137.6953\\-236.1398\\79\\133.9505\\-241.2734\\79\\130.179\\-245.1797\\79\\127.9297\\-247.3937\\79\\125.7999\\-249.0859\\79\\124.0234\\-250.3995\\79\\120.1172\\-253.4338\\79\\114.2578\\-257.1407\\79\\112.3047\\-258.0934\\79\\110.3516\\-259.4249\\79\\108.3984\\-260.4721\\79\\106.4453\\-261.6478\\79\\104.4922\\-262.5231\\79\\102.5391\\-263.5767\\79\\100.5859\\-264.4393\\79\\100.221\\-264.7109\\79\\96.67969\\-266.761\\79\\94.72656\\-267.7678\\79\\92.77344\\-268.9781\\79\\90.82031\\-269.7679\\79\\88.86719\\-271.0037\\79\\86.91406\\-271.9612\\79\\84.96094\\-273.324\\79\\83.00781\\-274.5317\\79\\81.05469\\-275.5435\\79\\79.10156\\-276.7458\\79\\77.14844\\-277.7133\\79\\75.19531\\-279.1056\\79\\73.09792\\-280.3359\\79\\69.52898\\-282.2891\\79\\67.38281\\-283.2829\\79\\65.42969\\-284.4049\\79\\63.47656\\-285.3606\\79\\61.52344\\-286.6233\\79\\59.57031\\-287.3683\\79\\57.61719\\-288.445\\79\\53.71094\\-289.7973\\79\\51.75781\\-290.8839\\79\\49.80469\\-291.5429\\79\\47.85156\\-292.6373\\79\\45.89844\\-293.2537\\79\\43.94531\\-294.1196\\79\\41.99219\\-294.7713\\79\\40.03906\\-295.1785\\79\\38.08594\\-295.6933\\79\\36.13281\\-296.4987\\79\\32.22656\\-297.2958\\79\\30.27344\\-298.0088\\79\\28.32031\\-298.5839\\79\\24.41406\\-299.3298\\79\\20.50781\\-300.2787\\79\\16.60156\\-300.7098\\79\\10.74219\\-301.1255\\79\\6.835938\\-301.3221\\79\\0.9765625\\-301.4123\\79\\-4.882813\\-301.3386\\79\\-8.789063\\-301.1588\\79\\-14.64844\\-300.7873\\79\\-18.55469\\-300.4474\\79"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002261"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "264"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "166"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-299.8748\\81\\-24.41406\\-299.3351\\81\\-28.32031\\-298.6611\\81\\-30.27344\\-298.2396\\81\\-32.22656\\-297.4793\\81\\-34.17969\\-297.0443\\81\\-36.13281\\-296.7126\\81\\-38.08594\\-296.1324\\81\\-40.03906\\-295.4076\\81\\-43.94531\\-294.5999\\81\\-47.85156\\-293.116\\81\\-49.80469\\-292.56\\81\\-51.75781\\-291.5109\\81\\-53.71094\\-290.9252\\81\\-57.61719\\-289.282\\81\\-59.57031\\-288.8264\\81\\-61.52344\\-287.8745\\81\\-65.42969\\-286.3722\\81\\-67.38281\\-285.3473\\81\\-69.33594\\-284.6769\\81\\-71.28906\\-283.5972\\81\\-73.24219\\-283.0644\\81\\-77.14844\\-281.4256\\81\\-79.10156\\-280.818\\81\\-81.05469\\-279.7974\\81\\-83.00781\\-279.1044\\81\\-84.96094\\-278.0711\\81\\-88.86719\\-276.681\\81\\-90.82031\\-275.7551\\81\\-92.77344\\-275.1952\\81\\-94.72656\\-274.2588\\81\\-96.67969\\-273.4338\\81\\-98.63281\\-272.3977\\81\\-106.3368\\-268.6172\\81\\-108.3984\\-267.4631\\81\\-110.3516\\-266.0716\\81\\-112.5127\\-264.7109\\81\\-115.4423\\-262.7578\\81\\-118.1152\\-260.8047\\81\\-120.5673\\-258.8516\\81\\-124.0234\\-255.8095\\81\\-125.9766\\-253.9057\\81\\-128.7697\\-251.0391\\81\\-131.8359\\-247.566\\81\\-133.7891\\-245.1327\\81\\-135.7422\\-242.5724\\81\\-137.9516\\-239.3203\\81\\-139.0412\\-237.3672\\81\\-140.4469\\-235.4141\\81\\-142.4255\\-231.5078\\81\\-143.1077\\-229.5547\\81\\-144.1323\\-227.6016\\81\\-144.7188\\-225.6484\\81\\-145.6432\\-223.6953\\81\\-146.3649\\-221.7422\\81\\-146.9397\\-219.7891\\81\\-147.7409\\-217.8359\\81\\-148.2153\\-215.8828\\81\\-148.8832\\-211.9766\\81\\-149.8413\\-208.0703\\81\\-150.1346\\-206.1172\\81\\-150.4503\\-202.2109\\81\\-150.8852\\-194.3984\\81\\-150.9752\\-190.4922\\81\\-150.957\\-186.5859\\81\\-150.7945\\-182.6797\\81\\-150.3024\\-174.8672\\81\\-149.9187\\-170.9609\\81\\-149.1075\\-167.0547\\81\\-148.4558\\-163.1484\\81\\-148.1919\\-161.1953\\81\\-147.7865\\-159.2422\\81\\-146.5794\\-155.3359\\81\\-146.1278\\-153.3828\\81\\-145.3256\\-151.4297\\81\\-144.6852\\-149.4766\\81\\-144.2411\\-147.5234\\81\\-142.8068\\-143.6172\\81\\-142.4173\\-141.6641\\81\\-141.7717\\-139.7109\\81\\-140.8663\\-137.7578\\81\\-140.2322\\-135.8047\\81\\-139.1539\\-133.8516\\81\\-138.4461\\-131.8984\\81\\-137.4153\\-129.9453\\81\\-136.1256\\-126.0391\\81\\-135.0393\\-124.0859\\81\\-134.2741\\-122.1328\\81\\-133.0582\\-120.1797\\81\\-132.0818\\-118.2266\\81\\-130.8833\\-116.2734\\81\\-128.7122\\-112.3672\\81\\-125.9766\\-108.5723\\81\\-124.3057\\-106.5078\\81\\-122.5956\\-104.5547\\81\\-120.1172\\-102.2152\\81\\-118.1641\\-100.8906\\81\\-115.34\\-98.69531\\81\\-112.3047\\-96.55582\\81\\-110.3516\\-95.53976\\81\\-108.3984\\-94.29381\\81\\-106.4453\\-93.55251\\81\\-104.4922\\-92.41107\\81\\-102.5391\\-91.51996\\81\\-100.5859\\-90.24158\\81\\-98.63281\\-89.4018\\81\\-96.67969\\-88.30334\\81\\-94.72656\\-87.57912\\81\\-92.77344\\-86.66267\\81\\-88.86719\\-85.55898\\81\\-86.91406\\-84.7285\\81\\-84.96094\\-84.17166\\81\\-81.05469\\-83.23793\\81\\-79.10156\\-82.6385\\81\\-75.19531\\-82.06398\\81\\-71.28906\\-81.62231\\81\\-69.33594\\-81.29404\\81\\-65.42969\\-80.80614\\81\\-61.52344\\-80.52359\\81\\-55.66406\\-80.36095\\81\\-49.80469\\-80.41528\\81\\-43.94531\\-80.80614\\81\\-38.08594\\-81.70844\\81\\-36.13281\\-81.93923\\81\\-30.27344\\-82.38062\\81\\-26.36719\\-82.44998\\81\\-16.60156\\-82.17116\\81\\-6.835938\\-81.98319\\81\\2.929688\\-81.94116\\81\\6.835938\\-81.7487\\81\\8.789063\\-81.47429\\81\\14.64844\\-81.14181\\81\\18.55469\\-80.87119\\81\\28.32031\\-80.83296\\81\\32.22656\\-80.75629\\81\\38.08594\\-80.49345\\81\\45.89844\\-80.40424\\81\\55.66406\\-80.51865\\81\\61.52344\\-80.80842\\81\\63.47656\\-80.98543\\81\\71.28906\\-81.84808\\81\\75.19531\\-82.18731\\81\\77.14844\\-82.41313\\81\\79.10156\\-82.75642\\81\\81.05469\\-83.31799\\81\\84.96094\\-84.15955\\81\\86.91406\\-84.63157\\81\\88.86719\\-85.38882\\81\\92.77344\\-86.28893\\81\\96.67969\\-87.68045\\81\\98.63281\\-88.10571\\81\\100.5859\\-88.81435\\81\\102.5391\\-89.77912\\81\\104.4922\\-90.62286\\81\\106.4453\\-91.76505\\81\\108.3984\\-92.72743\\81\\110.3516\\-93.83177\\81\\112.3047\\-95.06701\\81\\114.2578\\-96.14173\\81\\116.2109\\-97.74462\\81\\121.6935\\-102.6016\\81\\126.7541\\-108.4609\\81\\128.2037\\-110.4141\\81\\129.2251\\-112.3672\\81\\130.4713\\-114.3203\\81\\131.3343\\-116.2734\\81\\132.5684\\-118.2266\\81\\134.6784\\-122.1328\\81\\135.5017\\-124.0859\\81\\136.4948\\-126.0391\\81\\137.0716\\-127.9922\\81\\138.1778\\-129.9453\\81\\138.8408\\-131.8984\\81\\139.919\\-133.8516\\81\\141.3216\\-137.7578\\81\\142.1749\\-139.7109\\81\\143.0404\\-143.6172\\81\\143.8407\\-145.5703\\81\\144.3623\\-147.5234\\81\\145.2026\\-151.4297\\81\\145.8748\\-153.3828\\81\\146.2719\\-155.3359\\81\\146.8987\\-159.2422\\81\\147.7599\\-163.1484\\81\\148.0301\\-165.1016\\81\\148.3804\\-169.0078\\81\\148.7044\\-174.8672\\81\\148.8773\\-180.7266\\81\\148.9324\\-188.5391\\81\\148.7442\\-194.3984\\81\\148.5745\\-198.3047\\81\\148.2064\\-204.1641\\81\\147.7486\\-208.0703\\81\\146.9191\\-211.9766\\81\\146.2298\\-215.8828\\81\\145.7435\\-217.8359\\81\\144.9626\\-219.7891\\81\\143.944\\-223.6953\\81\\142.9791\\-225.6484\\81\\142.4062\\-227.6016\\81\\141.2737\\-229.5547\\81\\140.2814\\-231.5078\\81\\138.8504\\-233.4609\\81\\136.4663\\-237.3672\\81\\133.7891\\-240.7656\\81\\129.5185\\-245.1797\\81\\127.5156\\-247.1328\\81\\124.0234\\-250.0163\\81\\122.0703\\-251.4853\\81\\116.9976\\-254.9453\\81\\116.2109\\-255.5394\\81\\114.2578\\-256.5122\\81\\113.713\\-256.8984\\81\\108.3984\\-259.9959\\81\\106.4453\\-261.2498\\81\\104.4922\\-262.1267\\81\\102.5391\\-263.2764\\81\\100.5859\\-264.0454\\81\\98.63281\\-265.3077\\81\\96.67969\\-266.3223\\81\\96.21957\\-266.6641\\81\\92.77344\\-268.6886\\81\\90.82031\\-269.6365\\81\\88.86719\\-270.823\\81\\86.91406\\-271.8517\\81\\84.96094\\-273.2617\\81\\82.93269\\-274.4766\\81\\77.14844\\-277.7215\\81\\75.19531\\-279.1344\\81\\73.16451\\-280.3359\\81\\69.33594\\-282.4951\\81\\67.38281\\-283.3173\\81\\65.42969\\-284.5183\\81\\63.47656\\-285.4376\\81\\61.52344\\-286.7066\\81\\59.57031\\-287.4637\\81\\57.61719\\-288.5787\\81\\55.66406\\-289.2015\\81\\53.71094\\-290.0008\\81\\51.75781\\-290.9759\\81\\49.80469\\-291.7119\\81\\47.85156\\-292.7589\\81\\45.89844\\-293.3776\\81\\43.94531\\-294.3015\\81\\41.99219\\-294.8608\\81\\40.03906\\-295.2749\\81\\38.08594\\-295.875\\81\\36.13281\\-296.61\\81\\32.22656\\-297.4166\\81\\30.27344\\-298.207\\81\\28.32031\\-298.6709\\81\\24.41406\\-299.4504\\81\\22.46094\\-300.0026\\81\\20.50781\\-300.3584\\81\\18.55469\\-300.5941\\81\\12.69531\\-301.0355\\81\\8.789063\\-301.2669\\81\\2.929688\\-301.4696\\81\\-0.9765625\\-301.4809\\81\\-4.882813\\-301.3989\\81\\-10.74219\\-301.0972\\81\\-14.64844\\-300.8209\\81\\-18.55469\\-300.4938\\81\\-20.50781\\-300.2664\\81"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002260"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "259"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "167"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-299.9619\\83\\-24.41406\\-299.4123\\83\\-30.27344\\-298.33\\83\\-32.22656\\-297.5644\\83\\-34.17969\\-297.0822\\83\\-36.13281\\-296.7624\\83\\-38.08594\\-296.2369\\83\\-40.03906\\-295.4694\\83\\-43.94531\\-294.6489\\83\\-47.85156\\-293.1426\\83\\-49.80469\\-292.5929\\83\\-51.75781\\-291.5574\\83\\-53.71094\\-290.9407\\83\\-57.61719\\-289.2887\\83\\-59.57031\\-288.8264\\83\\-61.52344\\-287.8604\\83\\-65.42969\\-286.3183\\83\\-67.38281\\-285.2896\\83\\-69.33594\\-284.5783\\83\\-71.28906\\-283.5142\\83\\-73.24219\\-282.9628\\83\\-75.19531\\-282.0214\\83\\-79.10156\\-280.6179\\83\\-81.05469\\-279.5968\\83\\-83.00781\\-278.8622\\83\\-84.96094\\-277.7378\\83\\-86.91406\\-277.1331\\83\\-88.86719\\-276.1968\\83\\-92.77344\\-274.8658\\83\\-94.72656\\-273.8351\\83\\-96.67969\\-273.072\\83\\-98.63281\\-271.8782\\83\\-100.5859\\-271.1211\\83\\-102.5391\\-269.9648\\83\\-104.4922\\-269.2308\\83\\-106.4453\\-268.006\\83\\-108.3984\\-267.0294\\83\\-111.7205\\-264.7109\\83\\-112.3047\\-264.2436\\83\\-114.2578\\-263.1973\\83\\-116.2109\\-261.7617\\83\\-122.0703\\-257.0739\\83\\-124.0234\\-255.3434\\83\\-128.3218\\-251.0391\\83\\-130.0639\\-249.0859\\83\\-131.6216\\-247.1328\\83\\-134.8705\\-243.2266\\83\\-136.3416\\-241.2734\\83\\-137.4046\\-239.3203\\83\\-140.0761\\-235.4141\\83\\-141.0289\\-233.4609\\83\\-142.1587\\-231.5078\\83\\-142.8097\\-229.5547\\83\\-143.7789\\-227.6016\\83\\-145.1266\\-223.6953\\83\\-146.0859\\-221.7422\\83\\-146.657\\-219.7891\\83\\-147.9953\\-215.8828\\83\\-149.0083\\-210.0234\\83\\-149.8958\\-206.1172\\83\\-150.2852\\-202.2109\\83\\-150.4828\\-198.3047\\83\\-150.6721\\-192.4453\\83\\-150.6721\\-186.5859\\83\\-150.5561\\-182.6797\\83\\-150.3688\\-178.7734\\83\\-150.115\\-174.8672\\83\\-149.9089\\-172.9141\\83\\-149.6019\\-170.9609\\83\\-148.8514\\-167.0547\\83\\-148.0129\\-161.1953\\83\\-146.882\\-157.2891\\83\\-145.9167\\-153.3828\\83\\-145.0479\\-151.4297\\83\\-144.0768\\-147.5234\\83\\-143.2339\\-145.5703\\83\\-142.2791\\-141.6641\\83\\-140.7104\\-137.7578\\83\\-140.0548\\-135.8047\\83\\-138.9541\\-133.8516\\83\\-138.2835\\-131.8984\\83\\-137.2236\\-129.9453\\83\\-136.6652\\-127.9922\\83\\-135.8918\\-126.0391\\83\\-134.8855\\-124.0859\\83\\-134.0209\\-122.1328\\83\\-131.8359\\-118.424\\83\\-128.4944\\-112.3672\\83\\-125.9766\\-108.9984\\83\\-124.0234\\-106.675\\83\\-122.1454\\-104.5547\\83\\-120.0149\\-102.6016\\83\\-116.2109\\-99.63749\\83\\-114.9368\\-98.69531\\83\\-112.0016\\-96.74219\\83\\-108.3984\\-94.60645\\83\\-106.4453\\-93.77655\\83\\-102.5391\\-91.79903\\83\\-100.5859\\-90.61228\\83\\-98.63281\\-89.70743\\83\\-96.67969\\-88.62405\\83\\-94.72656\\-87.89171\\83\\-92.58823\\-86.97656\\83\\-90.82031\\-86.33968\\83\\-88.86719\\-85.82457\\83\\-84.96094\\-84.48485\\83\\-81.05469\\-83.63947\\83\\-77.14844\\-82.63119\\83\\-75.19531\\-82.32424\\83\\-69.33594\\-81.69515\\83\\-67.38281\\-81.5317\\83\\-63.47656\\-81.06069\\83\\-61.52344\\-80.89934\\83\\-57.61719\\-80.70856\\83\\-55.66406\\-80.66281\\83\\-49.80469\\-80.71959\\83\\-47.85156\\-80.84345\\83\\-43.94531\\-81.28257\\83\\-40.03906\\-81.81748\\83\\-36.13281\\-82.14227\\83\\-30.27344\\-82.50224\\83\\-26.36719\\-82.50065\\83\\-16.60156\\-82.24952\\83\\-4.882813\\-82.11183\\83\\0.9765625\\-82.15846\\83\\2.929688\\-82.11771\\83\\10.74219\\-81.71764\\83\\16.60156\\-81.29404\\83\\18.55469\\-81.04455\\83\\22.46094\\-80.99905\\83\\28.32031\\-81.02985\\83\\32.22656\\-81.01398\\83\\36.13281\\-80.8206\\83\\40.03906\\-80.71959\\83\\45.89844\\-80.66281\\83\\49.80469\\-80.69768\\83\\55.66406\\-80.84551\\83\\59.57031\\-81.09277\\83\\67.38281\\-81.75323\\83\\71.28906\\-82.02904\\83\\75.19531\\-82.39282\\83\\77.14844\\-82.69989\\83\\79.10156\\-83.22568\\83\\84.96094\\-84.41237\\83\\88.86719\\-85.67253\\83\\92.77344\\-86.60614\\83\\94.72656\\-87.39905\\83\\98.63281\\-88.3541\\83\\100.5859\\-89.31095\\83\\102.5391\\-90.05955\\83\\104.4922\\-91.1485\\83\\106.4453\\-92.08949\\83\\108.3984\\-93.25959\\83\\110.3516\\-94.14466\\83\\112.3047\\-95.4245\\83\\114.2578\\-96.59723\\83\\116.2109\\-98.10938\\83\\118.1641\\-99.76748\\83\\121.3686\\-102.6016\\83\\122.0703\\-103.3247\\83\\124.8328\\-106.5078\\83\\126.455\\-108.4609\\83\\127.9297\\-110.648\\83\\130.2108\\-114.3203\\83\\131.0974\\-116.2734\\83\\132.3636\\-118.2266\\83\\133.3174\\-120.1797\\83\\134.5009\\-122.1328\\83\\135.2505\\-124.0859\\83\\136.3294\\-126.0391\\83\\136.9034\\-127.9922\\83\\137.9191\\-129.9453\\83\\138.6719\\-131.8984\\83\\140.4286\\-135.8047\\83\\141.0651\\-137.7578\\83\\141.9635\\-139.7109\\83\\142.4888\\-141.6641\\83\\142.8643\\-143.6172\\83\\144.1767\\-147.5234\\83\\144.8895\\-151.4297\\83\\146.041\\-155.3359\\83\\146.9485\\-161.1953\\83\\147.7486\\-165.1016\\83\\148.179\\-169.0078\\83\\148.4898\\-174.8672\\83\\148.6123\\-178.7734\\83\\148.6709\\-182.6797\\83\\148.6832\\-188.5391\\83\\148.5204\\-194.3984\\83\\148.3566\\-198.3047\\83\\147.9399\\-204.1641\\83\\147.652\\-206.1172\\83\\147.2307\\-208.0703\\83\\146.2799\\-213.9297\\83\\145.9045\\-215.8828\\83\\145.1778\\-217.8359\\83\\144.6487\\-219.7891\\83\\144.2303\\-221.7422\\83\\143.4366\\-223.6953\\83\\142.0998\\-227.6016\\83\\139.6484\\-231.6966\\83\\137.6953\\-234.7602\\83\\137.162\\-235.4141\\83\\136.0652\\-237.3672\\83\\134.6071\\-239.3203\\83\\131.8359\\-242.4152\\83\\129.103\\-245.1797\\83\\126.9747\\-247.1328\\83\\124.0234\\-249.6129\\83\\120.1172\\-252.1937\\83\\118.1641\\-253.7324\\83\\116.2109\\-255.0186\\83\\114.2578\\-256.0931\\83\\112.3047\\-257.3209\\83\\110.3516\\-258.2511\\83\\108.3984\\-259.6222\\83\\102.5391\\-262.8769\\83\\100.5859\\-263.7806\\83\\96.67969\\-266.0151\\83\\94.72656\\-267.3706\\83\\92.4193\\-268.6172\\83\\86.91406\\-271.7522\\83\\84.96094\\-273.2004\\83\\79.50246\\-276.4297\\83\\77.14844\\-277.7255\\83\\75.19531\\-279.1718\\83\\73.24219\\-280.3596\\83\\71.28906\\-281.4108\\83\\69.33594\\-282.5628\\83\\67.38281\\-283.3863\\83\\65.42969\\-284.6237\\83\\63.47656\\-285.5384\\83\\61.52344\\-286.789\\83\\59.57031\\-287.5751\\83\\57.61719\\-288.6961\\83\\55.66406\\-289.2654\\83\\53.71094\\-290.2523\\83\\49.80469\\-291.9308\\83\\47.85156\\-292.8627\\83\\45.89844\\-293.5256\\83\\43.94531\\-294.4511\\83\\40.03906\\-295.3673\\83\\38.08594\\-296.1048\\83\\36.13281\\-296.7058\\83\\34.17969\\-297.0733\\83\\32.22656\\-297.5753\\83\\30.27344\\-298.3579\\83\\26.36719\\-299.11\\83\\22.46094\\-300.1377\\83\\20.50781\\-300.4277\\83\\16.60156\\-300.804\\83\\12.69531\\-301.0771\\83\\6.835938\\-301.3989\\83\\2.929688\\-301.5302\\83\\-0.9765625\\-301.569\\83\\-4.882813\\-301.4584\\83\\-10.74219\\-301.1462\\83\\-14.64844\\-300.8666\\83\\-20.50781\\-300.3165\\83"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002259"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "270"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "168"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-300.0542\\85\\-24.41406\\-299.493\\85\\-26.36719\\-299.0973\\85\\-30.27344\\-298.4194\\85\\-32.22656\\-297.6822\\85\\-34.17969\\-297.1445\\85\\-36.13281\\-296.8193\\85\\-38.08594\\-296.3339\\85\\-40.03906\\-295.5262\\85\\-43.94531\\-294.6884\\85\\-45.8816\\-294.0078\\85\\-47.85156\\-293.1966\\85\\-49.80469\\-292.6244\\85\\-51.75781\\-291.6158\\85\\-53.71094\\-290.9713\\85\\-57.61719\\-289.3074\\85\\-59.57031\\-288.8264\\85\\-61.52344\\-287.8625\\85\\-63.47656\\-287.1173\\85\\-65.42969\\-286.2619\\85\\-67.38281\\-285.254\\85\\-69.33594\\-284.466\\85\\-71.28906\\-283.4458\\85\\-73.24219\\-282.8737\\85\\-75.19531\\-281.8409\\85\\-77.14844\\-281.2021\\85\\-79.10156\\-280.3592\\85\\-81.05469\\-279.4056\\85\\-83.00781\\-278.5572\\85\\-84.96094\\-277.5016\\85\\-86.91406\\-276.8718\\85\\-88.86719\\-275.8595\\85\\-90.82031\\-275.2812\\85\\-96.67969\\-272.576\\85\\-98.63281\\-271.5361\\85\\-102.5391\\-269.6423\\85\\-104.4922\\-268.7511\\85\\-108.0097\\-266.6641\\85\\-110.3516\\-265.2185\\85\\-112.3047\\-263.8339\\85\\-116.2109\\-261.3657\\85\\-118.1641\\-259.7667\\85\\-120.1172\\-258.0448\\85\\-121.6426\\-256.8984\\85\\-124.0234\\-254.7758\\85\\-127.7328\\-251.0391\\85\\-129.8828\\-248.7347\\85\\-131.0922\\-247.1328\\85\\-134.5048\\-243.2266\\85\\-135.9233\\-241.2734\\85\\-136.995\\-239.3203\\85\\-138.3836\\-237.3672\\85\\-140.6905\\-233.4609\\85\\-141.7605\\-231.5078\\85\\-142.5721\\-229.5547\\85\\-143.2559\\-227.6016\\85\\-144.2308\\-225.6484\\85\\-144.7754\\-223.6953\\85\\-145.7072\\-221.7422\\85\\-146.3867\\-219.7891\\85\\-146.9124\\-217.8359\\85\\-147.6772\\-215.8828\\85\\-148.1375\\-213.9297\\85\\-149.0815\\-208.0703\\85\\-149.5303\\-206.1172\\85\\-149.8756\\-204.1641\\85\\-150.2307\\-200.2578\\85\\-150.3798\\-196.3516\\85\\-150.472\\-192.4453\\85\\-150.4877\\-188.5391\\85\\-150.3688\\-182.6797\\85\\-150.1872\\-178.7734\\85\\-149.8518\\-174.8672\\85\\-149.1847\\-170.9609\\85\\-148.3846\\-165.1016\\85\\-147.7732\\-161.1953\\85\\-147.1332\\-159.2422\\85\\-146.2325\\-155.3359\\85\\-145.6432\\-153.3828\\85\\-144.8435\\-151.4297\\85\\-144.4279\\-149.4766\\85\\-143.8757\\-147.5234\\85\\-143.0369\\-145.5703\\85\\-142.1279\\-141.6641\\85\\-141.2604\\-139.7109\\85\\-139.8354\\-135.8047\\85\\-138.7716\\-133.8516\\85\\-138.0796\\-131.8984\\85\\-137.0889\\-129.9453\\85\\-136.5591\\-127.9922\\85\\-135.5794\\-126.0391\\85\\-134.7239\\-124.0859\\85\\-132.6231\\-120.1797\\85\\-131.368\\-118.2266\\85\\-130.5191\\-116.2734\\85\\-129.2657\\-114.3203\\85\\-128.216\\-112.3672\\85\\-125.9766\\-109.3265\\85\\-124.0234\\-107.0441\\85\\-121.6986\\-104.5547\\85\\-120.1172\\-103.0831\\85\\-118.1641\\-101.4283\\85\\-116.2109\\-99.95089\\85\\-114.2578\\-98.57324\\85\\-110.3516\\-96.05793\\85\\-106.4453\\-93.96178\\85\\-104.4922\\-93.19304\\85\\-102.5391\\-92.04282\\85\\-100.5859\\-91.11137\\85\\-98.63281\\-89.97921\\85\\-94.72656\\-88.10631\\85\\-92.77344\\-87.53362\\85\\-90.82031\\-86.67446\\85\\-86.91406\\-85.59464\\85\\-83.00781\\-84.35938\\85\\-79.10156\\-83.57414\\85\\-75.19531\\-82.66507\\85\\-73.24219\\-82.39232\\85\\-69.33594\\-82.00777\\85\\-63.47656\\-81.56738\\85\\-57.61719\\-81.20524\\85\\-55.66406\\-81.12547\\85\\-49.80469\\-81.18923\\85\\-45.89844\\-81.56626\\85\\-36.13281\\-82.34716\\85\\-32.22656\\-82.57875\\85\\-30.27344\\-82.62216\\85\\-26.36719\\-82.58203\\85\\-20.50781\\-82.40085\\85\\-4.882813\\-82.27075\\85\\0.9765625\\-82.39661\\85\\12.69531\\-81.80463\\85\\16.60156\\-81.58839\\85\\18.55469\\-81.34018\\85\\22.46094\\-81.18983\\85\\28.32031\\-81.2204\\85\\32.22656\\-81.27995\\85\\40.03906\\-81.0765\\85\\47.85156\\-81.06116\\85\\53.71094\\-81.23438\\85\\59.57031\\-81.51479\\85\\69.33594\\-82.08205\\85\\73.24219\\-82.40085\\85\\75.19531\\-82.68642\\85\\79.10156\\-83.59902\\85\\81.05469\\-83.90179\\85\\84.96094\\-84.77251\\85\\86.91406\\-85.48938\\85\\90.82031\\-86.35947\\85\\94.72656\\-87.69188\\85\\96.67969\\-88.09351\\85\\98.63281\\-88.72686\\85\\100.5859\\-89.66355\\85\\102.5391\\-90.38217\\85\\104.4922\\-91.56888\\85\\106.4453\\-92.44659\\85\\108.3984\\-93.62102\\85\\110.3516\\-94.52203\\85\\113.7376\\-96.74219\\85\\118.1641\\-100.1232\\85\\120.9925\\-102.6016\\85\\122.8966\\-104.5547\\85\\126.0447\\-108.4609\\85\\128.7748\\-112.3672\\85\\130.8884\\-116.2734\\85\\132.0818\\-118.2266\\85\\133.0717\\-120.1797\\85\\134.2929\\-122.1328\\85\\135.0598\\-124.0859\\85\\136.1172\\-126.0391\\85\\136.7655\\-127.9922\\85\\137.5504\\-129.9453\\85\\138.4943\\-131.8984\\85\\139.1982\\-133.8516\\85\\140.2278\\-135.8047\\85\\140.839\\-137.7578\\85\\141.6406\\-139.7109\\85\\142.3157\\-141.6641\\85\\143.1489\\-145.5703\\85\\143.8893\\-147.5234\\85\\144.3455\\-149.4766\\85\\144.652\\-151.4297\\85\\145.0703\\-153.3828\\85\\145.6948\\-155.3359\\85\\146.1025\\-157.2891\\85\\146.6533\\-161.1953\\85\\147.6772\\-167.0547\\85\\147.915\\-169.0078\\85\\148.2776\\-174.8672\\85\\148.4433\\-180.7266\\85\\148.4666\\-186.5859\\85\\148.3503\\-192.4453\\85\\148.1061\\-198.3047\\85\\147.7843\\-202.2109\\85\\147.4988\\-204.1641\\85\\146.8155\\-208.0703\\85\\146.3022\\-211.9766\\85\\145.9635\\-213.9297\\85\\144.7991\\-217.8359\\85\\144.3864\\-219.7891\\85\\143.8642\\-221.7422\\85\\143.0107\\-223.6953\\85\\142.4877\\-225.6484\\85\\141.6409\\-227.6016\\85\\140.5611\\-229.5547\\85\\139.2327\\-231.5078\\85\\138.1718\\-233.4609\\85\\136.807\\-235.4141\\85\\135.7422\\-237.0811\\85\\134.1384\\-239.3203\\85\\131.8359\\-241.9269\\85\\128.6029\\-245.1797\\85\\125.9766\\-247.5137\\85\\123.9926\\-249.0859\\85\\122.0703\\-250.363\\85\\121.251\\-251.0391\\85\\118.4043\\-252.9922\\85\\114.2578\\-255.7559\\85\\112.3047\\-256.7188\\85\\110.3516\\-257.8689\\85\\108.3984\\-259.1659\\85\\106.4453\\-260.1804\\85\\104.4922\\-261.4793\\85\\102.5391\\-262.4127\\85\\100.5859\\-263.5617\\85\\98.63281\\-264.5202\\85\\96.67969\\-265.78\\85\\94.72656\\-267.1584\\85\\92.77344\\-268.1721\\85\\90.82031\\-269.4196\\85\\88.86719\\-270.4815\\85\\86.91406\\-271.6572\\85\\84.96094\\-273.1353\\85\\82.79639\\-274.4766\\85\\79.49829\\-276.4297\\85\\77.14844\\-277.7465\\85\\75.19531\\-279.2112\\85\\73.24219\\-280.4495\\85\\71.28906\\-281.4547\\85\\69.33594\\-282.6641\\85\\67.38281\\-283.4644\\85\\65.42969\\-284.7397\\85\\63.47656\\-285.6632\\85\\61.52344\\-286.8913\\85\\59.57031\\-287.7137\\85\\57.61719\\-288.8058\\85\\55.66406\\-289.3472\\85\\53.71094\\-290.4678\\85\\51.75781\\-291.1849\\85\\49.80469\\-292.2163\\85\\45.89844\\-293.6845\\85\\43.94531\\-294.5703\\85\\40.03906\\-295.4661\\85\\38.08594\\-296.2748\\85\\36.13281\\-296.7852\\85\\34.17969\\-297.1575\\85\\32.22656\\-297.7599\\85\\30.27344\\-298.4837\\85\\26.36719\\-299.2033\\85\\22.46094\\-300.224\\85\\20.50781\\-300.4938\\85\\16.60156\\-300.8438\\85\\10.74219\\-301.2409\\85\\6.835938\\-301.4584\\85\\2.929688\\-301.5944\\85\\-0.9765625\\-301.6489\\85\\-6.835938\\-301.4337\\85\\-10.74219\\-301.21\\85\\-16.60156\\-300.7484\\85\\-20.50781\\-300.3759\\85"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002258"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "267"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "169"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-300.1377\\87\\-24.41406\\-299.6009\\87\\-26.36719\\-299.1719\\87\\-30.27344\\-298.4989\\87\\-34.17969\\-297.2244\\87\\-38.08594\\-296.4428\\87\\-40.03906\\-295.6216\\87\\-43.94531\\-294.7476\\87\\-45.89844\\-294.1196\\87\\-47.85156\\-293.2635\\87\\-49.80469\\-292.6795\\87\\-51.75781\\-291.6885\\87\\-55.66406\\-290.2655\\87\\-57.61719\\-289.3381\\87\\-59.57031\\-288.8389\\87\\-61.52344\\-287.8866\\87\\-63.47656\\-287.1064\\87\\-65.42969\\-286.218\\87\\-67.38281\\-285.2238\\87\\-69.33594\\-284.3776\\87\\-71.28906\\-283.3993\\87\\-73.24219\\-282.7971\\87\\-75.19531\\-281.7135\\87\\-77.14844\\-281.0903\\87\\-79.10156\\-280.1057\\87\\-81.05469\\-279.2354\\87\\-83.00781\\-278.1831\\87\\-86.91406\\-276.515\\87\\-88.86719\\-275.623\\87\\-90.82031\\-275.0169\\87\\-92.77344\\-273.9456\\87\\-94.72656\\-273.18\\87\\-96.67969\\-272.0164\\87\\-98.63281\\-271.196\\87\\-100.5859\\-270.0206\\87\\-102.5391\\-269.3512\\87\\-104.4922\\-268.1764\\87\\-106.4453\\-267.2317\\87\\-108.3984\\-265.8463\\87\\-110.3516\\-264.6051\\87\\-112.3047\\-263.4805\\87\\-114.2578\\-262.0696\\87\\-116.2009\\-260.8047\\87\\-118.1641\\-259.3156\\87\\-118.6382\\-258.8516\\87\\-121.0861\\-256.8984\\87\\-124.0234\\-254.2129\\87\\-125.126\\-252.9922\\87\\-127.1605\\-251.0391\\87\\-129.8828\\-248.2016\\87\\-130.7055\\-247.1328\\87\\-134.0714\\-243.2266\\87\\-135.7422\\-240.7852\\87\\-137.989\\-237.3672\\87\\-139.0118\\-235.4141\\87\\-140.3531\\-233.4609\\87\\-141.2495\\-231.5078\\87\\-142.3135\\-229.5547\\87\\-142.8805\\-227.6016\\87\\-143.8546\\-225.6484\\87\\-145.1643\\-221.7422\\87\\-146.0938\\-219.7891\\87\\-146.5971\\-217.8359\\87\\-147.8657\\-213.9297\\87\\-148.2641\\-211.9766\\87\\-148.7949\\-208.0703\\87\\-149.5\\-204.1641\\87\\-149.9949\\-200.2578\\87\\-150.2125\\-196.3516\\87\\-150.2963\\-192.4453\\87\\-150.3074\\-188.5391\\87\\-150.173\\-182.6797\\87\\-149.9221\\-178.7734\\87\\-149.7206\\-176.8203\\87\\-148.8701\\-170.9609\\87\\-148.2081\\-165.1016\\87\\-147.8758\\-163.1484\\87\\-147.4609\\-161.3348\\87\\-146.8622\\-159.2422\\87\\-146.041\\-155.3359\\87\\-145.2884\\-153.3828\\87\\-144.6896\\-151.4297\\87\\-144.2803\\-149.4766\\87\\-142.9099\\-145.5703\\87\\-142.4953\\-143.6172\\87\\-141.9585\\-141.6641\\87\\-141.0496\\-139.7109\\87\\-140.4202\\-137.7578\\87\\-138.631\\-133.8516\\87\\-137.8569\\-131.8984\\87\\-136.9371\\-129.9453\\87\\-136.3867\\-127.9922\\87\\-135.3277\\-126.0391\\87\\-134.5305\\-124.0859\\87\\-133.3971\\-122.1328\\87\\-132.4219\\-120.1797\\87\\-131.1455\\-118.2266\\87\\-130.3161\\-116.2734\\87\\-127.9297\\-112.4415\\87\\-125.9766\\-109.7004\\87\\-124.0234\\-107.3505\\87\\-121.3718\\-104.5547\\87\\-118.1641\\-101.7047\\87\\-116.2109\\-100.2535\\87\\-110.3516\\-96.34725\\87\\-108.3984\\-95.38151\\87\\-106.4453\\-94.18452\\87\\-104.4922\\-93.48914\\87\\-102.5391\\-92.30379\\87\\-100.5859\\-91.50896\\87\\-98.63281\\-90.27687\\87\\-96.67969\\-89.51686\\87\\-94.72656\\-88.39258\\87\\-92.77344\\-87.81451\\87\\-88.86719\\-86.37978\\87\\-84.96094\\-85.46256\\87\\-83.00781\\-84.76257\\87\\-81.05469\\-84.27181\\87\\-77.14844\\-83.57738\\87\\-73.24219\\-82.77037\\87\\-71.28906\\-82.47672\\87\\-69.33594\\-82.28535\\87\\-65.42969\\-82.02661\\87\\-61.52344\\-81.83376\\87\\-55.66406\\-81.61572\\87\\-49.80469\\-81.62582\\87\\-45.89844\\-81.92028\\87\\-40.03906\\-82.25344\\87\\-34.17969\\-82.71456\\87\\-32.22656\\-82.80848\\87\\-28.32031\\-82.78635\\87\\-22.46094\\-82.53352\\87\\-20.50781\\-82.48948\\87\\-14.64844\\-82.50391\\87\\-8.789063\\-82.45521\\87\\-4.882813\\-82.50391\\87\\-0.9765625\\-82.74247\\87\\0.9765625\\-82.78017\\87\\2.929688\\-82.68105\\87\\4.882813\\-82.45248\\87\\10.74219\\-82.08147\\87\\16.60156\\-81.78303\\87\\20.50781\\-81.52055\\87\\26.36719\\-81.38011\\87\\32.22656\\-81.54269\\87\\38.08594\\-81.50639\\87\\45.89844\\-81.49498\\87\\53.71094\\-81.60883\\87\\65.42969\\-82.0761\\87\\71.28906\\-82.45057\\87\\73.24219\\-82.71957\\87\\77.14844\\-83.54591\\87\\81.05469\\-84.15977\\87\\83.00781\\-84.62421\\87\\84.96094\\-85.28339\\87\\86.91406\\-85.78549\\87\\88.86719\\-86.16741\\87\\90.82031\\-86.67662\\87\\92.77344\\-87.4445\\87\\96.67969\\-88.33218\\87\\98.63281\\-89.25291\\87\\100.5859\\-89.96021\\87\\102.572\\-90.88281\\87\\110.045\\-94.78906\\87\\112.3047\\-96.10644\\87\\114.2578\\-97.56557\\87\\116.2109\\-99.19478\\87\\118.1641\\-100.6399\\87\\120.1172\\-102.2182\\87\\122.4685\\-104.5547\\87\\125.9766\\-108.9413\\87\\128.5077\\-112.3672\\87\\131.8359\\-118.4159\\87\\134.0176\\-122.1328\\87\\134.8709\\-124.0859\\87\\135.8446\\-126.0391\\87\\136.6283\\-127.9922\\87\\137.2369\\-129.9453\\87\\138.2915\\-131.8984\\87\\138.9327\\-133.8516\\87\\139.9524\\-135.8047\\87\\141.2495\\-139.7109\\87\\142.0866\\-141.6641\\87\\142.8931\\-145.5703\\87\\144.1033\\-149.4766\\87\\144.7672\\-153.3828\\87\\145.2026\\-155.3359\\87\\145.7784\\-157.2891\\87\\146.1283\\-159.2422\\87\\146.9105\\-165.1016\\87\\147.528\\-169.0078\\87\\147.9179\\-172.9141\\87\\148.0504\\-174.8672\\87\\148.2179\\-180.7266\\87\\148.2108\\-188.5391\\87\\148.0336\\-194.3984\\87\\147.9274\\-196.3516\\87\\147.5423\\-200.2578\\87\\146.9757\\-204.1641\\87\\146.2736\\-210.0234\\87\\145.9815\\-211.9766\\87\\144.8938\\-215.8828\\87\\144.1101\\-219.7891\\87\\143.3253\\-221.7422\\87\\142.2167\\-225.6484\\87\\141.1197\\-227.6016\\87\\140.2074\\-229.5547\\87\\138.8318\\-231.5078\\87\\136.4859\\-235.4141\\87\\133.7891\\-238.966\\87\\131.8359\\-241.2646\\87\\129.8828\\-243.32\\87\\127.9561\\-245.1797\\87\\124.0234\\-248.4834\\87\\122.0703\\-249.972\\87\\120.1172\\-251.3513\\87\\118.1641\\-252.5514\\87\\114.2578\\-255.3402\\87\\112.3047\\-256.2584\\87\\110.3516\\-257.5169\\87\\108.3984\\-258.5236\\87\\107.9839\\-258.8516\\87\\104.8664\\-260.8047\\87\\104.4922\\-261.1035\\87\\102.5391\\-262.0612\\87\\100.5859\\-263.328\\87\\98.63281\\-264.1959\\87\\97.97894\\-264.7109\\87\\94.72656\\-266.9249\\87\\92.77344\\-268.01\\87\\90.82031\\-269.3257\\87\\88.86719\\-270.3224\\87\\86.91406\\-271.5848\\87\\84.96094\\-273.0878\\87\\79.10156\\-276.7623\\87\\77.14844\\-277.8072\\87\\76.45313\\-278.3828\\87\\73.24219\\-280.5457\\87\\71.28906\\-281.5191\\87\\69.33594\\-282.7466\\87\\67.38281\\-283.5532\\87\\65.42969\\-284.8436\\87\\63.47656\\-285.8141\\87\\61.52344\\-286.9967\\87\\59.57031\\-287.8684\\87\\57.61719\\-288.9135\\87\\55.66406\\-289.4565\\87\\53.71094\\-290.6252\\87\\51.75781\\-291.3022\\87\\49.80469\\-292.4115\\87\\47.85156\\-293.0866\\87\\43.94531\\-294.669\\87\\40.03906\\-295.5608\\87\\38.08594\\-296.4201\\87\\34.17969\\-297.25\\87\\30.27344\\-298.5668\\87\\26.36719\\-299.3067\\87\\22.46094\\-300.2979\\87\\18.55469\\-300.721\\87\\10.74219\\-301.299\\87\\6.835938\\-301.5302\\87\\0.9765625\\-301.735\\87\\-2.929688\\-301.6906\\87\\-6.835938\\-301.5064\\87\\-10.74219\\-301.2669\\87\\-16.60156\\-300.7986\\87\\-20.50781\\-300.4359\\87"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002257"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "275"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "170"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.9765625\\-301.8441\\89\\-4.882813\\-301.705\\89\\-10.74219\\-301.3254\\89\\-14.64844\\-301.0186\\89\\-20.50781\\-300.4897\\89\\-22.46094\\-300.224\\89\\-26.36719\\-299.2667\\89\\-30.27344\\-298.5804\\89\\-32.22656\\-298.0226\\89\\-34.17969\\-297.3189\\89\\-38.08594\\-296.5577\\89\\-40.03906\\-295.7746\\89\\-41.99219\\-295.2149\\89\\-43.94531\\-294.8138\\89\\-45.89844\\-294.2537\\89\\-47.85156\\-293.3475\\89\\-49.80469\\-292.7552\\89\\-51.75781\\-291.7902\\89\\-55.66406\\-290.3525\\89\\-57.61719\\-289.3647\\89\\-59.57031\\-288.8716\\89\\-61.52344\\-287.9258\\89\\-63.47656\\-287.1167\\89\\-67.38281\\-285.2137\\89\\-71.28906\\-283.3644\\89\\-73.24219\\-282.7086\\89\\-75.19531\\-281.6318\\89\\-77.14844\\-280.981\\89\\-79.10156\\-279.8886\\89\\-81.05469\\-279.0743\\89\\-83.00781\\-277.9107\\89\\-84.96094\\-277.1577\\89\\-86.91406\\-276.1331\\89\\-90.82031\\-274.6763\\89\\-92.77344\\-273.6152\\89\\-94.72656\\-272.7709\\89\\-96.67969\\-271.6352\\89\\-98.63281\\-270.7379\\89\\-100.5859\\-269.7003\\89\\-102.5391\\-268.9834\\89\\-103.0525\\-268.6172\\89\\-106.4347\\-266.6641\\89\\-109.5133\\-264.7109\\89\\-110.3516\\-264.0576\\89\\-112.3047\\-263.0096\\89\\-114.2578\\-261.7182\\89\\-118.1641\\-258.6406\\89\\-120.1172\\-257.231\\89\\-122.0703\\-255.608\\89\\-124.0234\\-253.7194\\89\\-124.6564\\-252.9922\\89\\-126.6972\\-251.0391\\89\\-128.6303\\-249.0859\\89\\-130.3779\\-247.1328\\89\\-131.8359\\-245.2413\\89\\-133.7891\\-242.8411\\89\\-136.3866\\-239.3203\\89\\-137.4283\\-237.3672\\89\\-139.9227\\-233.4609\\89\\-140.849\\-231.5078\\89\\-141.9599\\-229.5547\\89\\-143.3218\\-225.6484\\89\\-144.2423\\-223.6953\\89\\-144.7939\\-221.7422\\89\\-145.6835\\-219.7891\\89\\-146.3092\\-217.8359\\89\\-146.8042\\-215.8828\\89\\-148.0076\\-211.9766\\89\\-148.3271\\-210.0234\\89\\-149.0532\\-204.1641\\89\\-149.6302\\-200.2578\\89\\-149.9602\\-196.3516\\89\\-150.0916\\-192.4453\\89\\-150.0873\\-188.5391\\89\\-149.9821\\-184.6328\\89\\-149.7348\\-180.7266\\89\\-149.0221\\-174.8672\\89\\-148.4726\\-169.0078\\89\\-148.0008\\-165.1016\\89\\-147.5974\\-163.1484\\89\\-147.0588\\-161.1953\\89\\-146.2634\\-157.2891\\89\\-145.7784\\-155.3359\\89\\-145.0195\\-153.3828\\89\\-144.1239\\-149.4766\\89\\-143.3519\\-147.5234\\89\\-142.7844\\-145.5703\\89\\-142.3816\\-143.6172\\89\\-141.7558\\-141.6641\\89\\-140.8734\\-139.7109\\89\\-140.2794\\-137.7578\\89\\-139.2263\\-135.8047\\89\\-138.5065\\-133.8516\\89\\-137.5492\\-131.8984\\89\\-136.7772\\-129.9453\\89\\-136.1677\\-127.9922\\89\\-135.1061\\-126.0391\\89\\-134.3515\\-124.0859\\89\\-133.1648\\-122.1328\\89\\-132.2253\\-120.1797\\89\\-130.9606\\-118.2266\\89\\-130.0456\\-116.2734\\89\\-128.875\\-114.3203\\89\\-126.2139\\-110.4141\\89\\-124.0234\\-107.7067\\89\\-122.9626\\-106.5078\\89\\-121.008\\-104.5547\\89\\-118.1641\\-102.0074\\89\\-116.2109\\-100.6234\\89\\-114.2578\\-99.3624\\89\\-113.3807\\-98.69531\\89\\-110.3516\\-96.68569\\89\\-108.3984\\-95.62347\\89\\-106.4453\\-94.44135\\89\\-104.4922\\-93.68104\\89\\-102.5391\\-92.6365\\89\\-100.5859\\-91.79671\\89\\-98.63281\\-90.66344\\89\\-96.67969\\-89.82629\\89\\-94.72656\\-88.80762\\89\\-92.77344\\-88.04021\\89\\-90.82031\\-87.57186\\89\\-88.86719\\-86.73785\\89\\-86.91406\\-86.17601\\89\\-84.96094\\-85.79198\\89\\-83.00781\\-85.30144\\89\\-81.05469\\-84.66431\\89\\-79.10156\\-84.22289\\89\\-73.24219\\-83.31445\\89\\-71.28906\\-82.90144\\89\\-69.33594\\-82.61502\\89\\-65.42969\\-82.30737\\89\\-59.57031\\-82.0331\\89\\-53.71094\\-81.93725\\89\\-49.80469\\-81.96774\\89\\-43.94531\\-82.23591\\89\\-40.03906\\-82.48566\\89\\-34.17969\\-83.00165\\89\\-32.22656\\-83.07813\\89\\-30.27344\\-83.0476\\89\\-22.46094\\-82.68375\\89\\-18.55469\\-82.6623\\89\\-16.60156\\-82.71456\\89\\-8.789063\\-82.7401\\89\\-4.882813\\-82.91256\\89\\-0.9765625\\-83.33405\\89\\0.9765625\\-83.4073\\89\\2.929688\\-83.27007\\89\\6.835938\\-82.67826\\89\\8.789063\\-82.45667\\89\\12.69531\\-82.13647\\89\\18.55469\\-81.83376\\89\\26.36719\\-81.61225\\89\\28.32031\\-81.69662\\89\\34.17969\\-81.79953\\89\\40.03906\\-81.79518\\89\\51.75781\\-81.88493\\89\\55.66406\\-81.93798\\89\\65.42969\\-82.28062\\89\\67.38281\\-82.40897\\89\\71.28906\\-82.80657\\89\\75.19531\\-83.58659\\89\\79.10156\\-84.13515\\89\\81.05469\\-84.49807\\89\\84.96094\\-85.64053\\89\\88.86719\\-86.45119\\89\\90.82031\\-87.13932\\89\\92.77344\\-87.7292\\89\\94.72656\\-88.11282\\89\\96.67969\\-88.70034\\89\\98.63281\\-89.62638\\89\\100.5859\\-90.25259\\89\\102.5391\\-91.39982\\89\\104.4922\\-92.20647\\89\\106.4453\\-93.39111\\89\\108.3984\\-94.16222\\89\\110.3516\\-95.40113\\89\\112.3047\\-96.52764\\89\\115.2182\\-98.69531\\89\\120.1172\\-102.7683\\89\\121.875\\-104.5547\\89\\124.0234\\-107.0003\\89\\125.9766\\-109.3688\\89\\128.1626\\-112.3672\\89\\129.243\\-114.3203\\89\\130.5106\\-116.2734\\89\\131.3712\\-118.2266\\89\\132.6319\\-120.1797\\89\\134.6866\\-124.0859\\89\\135.5128\\-126.0391\\89\\136.4588\\-127.9922\\89\\137.0099\\-129.9453\\89\\138.0251\\-131.8984\\89\\138.6976\\-133.8516\\89\\140.3835\\-137.7578\\89\\140.9486\\-139.7109\\89\\141.7569\\-141.6641\\89\\142.343\\-143.6172\\89\\143.0697\\-147.5234\\89\\143.7515\\-149.4766\\89\\144.2303\\-151.4297\\89\\144.8474\\-155.3359\\89\\145.2516\\-157.2891\\89\\145.7896\\-159.2422\\89\\146.1317\\-161.1953\\89\\147.528\\-172.9141\\89\\147.832\\-176.8203\\89\\147.9492\\-180.7266\\89\\147.9616\\-184.6328\\89\\147.9179\\-188.5391\\89\\147.6632\\-194.3984\\89\\146.2061\\-208.0703\\89\\145.9358\\-210.0234\\89\\144.9421\\-213.9297\\89\\144.2603\\-217.8359\\89\\143.6546\\-219.7891\\89\\142.9396\\-221.7422\\89\\142.4988\\-223.6953\\89\\141.8275\\-225.6484\\89\\139.6866\\-229.5547\\89\\138.4938\\-231.5078\\89\\137.1173\\-233.4609\\89\\136.0899\\-235.4141\\89\\134.6214\\-237.3672\\89\\131.8359\\-240.5906\\89\\129.8828\\-242.7031\\89\\127.2714\\-245.1797\\89\\124.0234\\-248.0378\\89\\122.0703\\-249.592\\89\\120.1172\\-250.682\\89\\118.1641\\-252.0811\\89\\116.2109\\-253.5858\\89\\114.2578\\-254.7048\\89\\112.3047\\-255.9409\\89\\110.3516\\-257.0739\\89\\108.3984\\-258.0913\\89\\106.4453\\-259.4687\\89\\100.9663\\-262.7578\\89\\98.63281\\-263.9785\\89\\96.67969\\-265.4076\\89\\92.77344\\-267.8954\\89\\90.82031\\-269.235\\89\\88.86719\\-270.2424\\89\\86.91406\\-271.5631\\89\\84.96094\\-273.0695\\89\\82.81653\\-274.4766\\89\\77.14844\\-277.9116\\89\\76.5822\\-278.3828\\89\\73.24219\\-280.6592\\89\\71.28906\\-281.6145\\89\\69.33594\\-282.8462\\89\\67.38281\\-283.66\\89\\65.42969\\-284.9561\\89\\63.47656\\-285.9727\\89\\61.52344\\-287.1078\\89\\57.61719\\-289.0037\\89\\55.66406\\-289.6133\\89\\53.71094\\-290.7654\\89\\51.75781\\-291.44\\89\\49.80469\\-292.5684\\89\\47.85156\\-293.2088\\89\\45.89844\\-294.0765\\89\\43.94531\\-294.7713\\89\\41.99219\\-295.1785\\89\\40.03906\\-295.7078\\89\\38.08594\\-296.5372\\89\\34.17969\\-297.3603\\89\\32.22656\\-298.1378\\89\\30.27344\\-298.6626\\89\\26.36719\\-299.4094\\89\\24.41406\\-299.9619\\89\\22.46094\\-300.3759\\89\\18.55469\\-300.7656\\89\\10.74219\\-301.3619\\89\\2.929688\\-301.8123\\89"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002256"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "262"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "171"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.882813\\-301.8123\\91\\-12.69531\\-301.2539\\91\\-20.50781\\-300.5575\\91\\-22.46094\\-300.3165\\91\\-24.41406\\-299.9194\\91\\-26.36719\\-299.391\\91\\-30.27344\\-298.6626\\91\\-32.22656\\-298.1959\\91\\-34.17969\\-297.4411\\91\\-38.08594\\-296.6405\\91\\-41.99219\\-295.2872\\91\\-43.94531\\-294.8961\\91\\-45.89844\\-294.3732\\91\\-47.85156\\-293.444\\91\\-49.80469\\-292.839\\91\\-51.75781\\-291.9039\\91\\-53.71094\\-291.1123\\91\\-55.66406\\-290.4421\\91\\-57.61719\\-289.404\\91\\-59.57031\\-288.9114\\91\\-65.42969\\-286.2479\\91\\-67.38281\\-285.2137\\91\\-69.33594\\-284.323\\91\\-71.28906\\-283.3296\\91\\-73.24219\\-282.6122\\91\\-75.19531\\-281.5673\\91\\-77.14844\\-280.8771\\91\\-79.10156\\-279.7219\\91\\-81.05469\\-278.9108\\91\\-83.00781\\-277.7022\\91\\-84.96094\\-276.9652\\91\\-86.91406\\-275.8726\\91\\-88.86719\\-275.2663\\91\\-92.77344\\-273.3363\\91\\-94.72656\\-272.2069\\91\\-96.67969\\-271.3305\\91\\-98.63281\\-270.1588\\91\\-100.5859\\-269.4603\\91\\-104.4922\\-267.398\\91\\-106.4453\\-266.0393\\91\\-108.3984\\-264.9986\\91\\-112.3047\\-262.3744\\91\\-114.2578\\-261.2829\\91\\-116.2109\\-259.7457\\91\\-120.1172\\-256.5387\\91\\-122.0703\\-255.0999\\91\\-125.9766\\-251.2005\\91\\-128.1494\\-249.0859\\91\\-131.2849\\-245.1797\\91\\-134.6071\\-241.2734\\91\\-135.9359\\-239.3203\\91\\-136.9978\\-237.3672\\91\\-138.3057\\-235.4141\\91\\-139.2831\\-233.4609\\91\\-140.5022\\-231.5078\\91\\-142.3693\\-227.6016\\91\\-142.9274\\-225.6484\\91\\-143.8779\\-223.6953\\91\\-145.0977\\-219.7891\\91\\-145.9811\\-217.8359\\91\\-146.988\\-213.9297\\91\\-147.6391\\-211.9766\\91\\-148.0614\\-210.0234\\91\\-148.345\\-208.0703\\91\\-149.1464\\-200.2578\\91\\-149.573\\-196.3516\\91\\-149.7838\\-192.4453\\91\\-149.7583\\-188.5391\\91\\-149.6019\\-184.6328\\91\\-149.0583\\-178.7734\\91\\-148.2641\\-169.0078\\91\\-147.7254\\-165.1016\\91\\-146.7823\\-161.1953\\91\\-146.0522\\-157.2891\\91\\-144.8103\\-153.3828\\91\\-144.4105\\-151.4297\\91\\-143.9116\\-149.4766\\91\\-143.1245\\-147.5234\\91\\-142.2546\\-143.6172\\91\\-140.7162\\-139.7109\\91\\-140.1217\\-137.7578\\91\\-139.0106\\-135.8047\\91\\-138.3805\\-133.8516\\91\\-137.3005\\-131.8984\\91\\-135.9882\\-127.9922\\91\\-134.9696\\-126.0391\\91\\-134.1836\\-124.0859\\91\\-132.9695\\-122.1328\\91\\-131.9598\\-120.1797\\91\\-129.7059\\-116.2734\\91\\-128.6814\\-114.3203\\91\\-124.3136\\-108.4609\\91\\-122.6273\\-106.5078\\91\\-120.6192\\-104.5547\\91\\-118.1641\\-102.3786\\91\\-115.767\\-100.6484\\91\\-114.2578\\-99.70872\\91\\-112.3047\\-98.28448\\91\\-108.3984\\-95.86267\\91\\-104.4922\\-93.8747\\91\\-102.5391\\-93.08383\\91\\-100.5859\\-92.04539\\91\\-98.63281\\-91.19012\\91\\-96.67969\\-90.10042\\91\\-94.72656\\-89.32705\\91\\-92.77344\\-88.27644\\91\\-90.82031\\-87.82872\\91\\-88.86719\\-87.23949\\91\\-86.91406\\-86.48828\\91\\-83.00781\\-85.69672\\91\\-81.05469\\-85.2098\\91\\-79.10156\\-84.58588\\91\\-77.14844\\-84.2389\\91\\-71.28906\\-83.45962\\91\\-67.38281\\-82.84606\\91\\-63.47656\\-82.49326\\91\\-59.57031\\-82.29998\\91\\-53.71094\\-82.17973\\91\\-49.80469\\-82.23236\\91\\-43.94531\\-82.49235\\91\\-41.99219\\-82.63554\\91\\-36.13281\\-83.16797\\91\\-32.22656\\-83.28811\\91\\-22.46094\\-82.90394\\91\\-18.55469\\-82.91727\\91\\-16.60156\\-83.03156\\91\\-10.74219\\-83.06244\\91\\-4.882813\\-83.46495\\91\\-2.929688\\-83.66235\\91\\0.9765625\\-83.85041\\91\\4.882813\\-83.54876\\91\\8.789063\\-82.87807\\91\\12.69531\\-82.32537\\91\\16.60156\\-82.05736\\91\\22.46094\\-81.84961\\91\\26.36719\\-81.81205\\91\\30.27344\\-81.84034\\91\\34.17969\\-81.94996\\91\\40.03906\\-81.95844\\91\\55.66406\\-82.15223\\91\\63.47656\\-82.42553\\91\\67.38281\\-82.74709\\91\\73.24219\\-83.64791\\91\\77.14844\\-84.14883\\91\\79.10156\\-84.46117\\91\\83.00781\\-85.56116\\91\\86.91406\\-86.30446\\91\\88.86719\\-86.83383\\91\\90.82031\\-87.52795\\91\\94.72656\\-88.3763\\91\\96.67969\\-89.21568\\91\\100.5859\\-90.66811\\91\\102.5391\\-91.76286\\91\\104.4922\\-92.58326\\91\\106.4453\\-93.68966\\91\\108.3984\\-94.5241\\91\\111.8503\\-96.74219\\91\\114.2578\\-98.40234\\91\\118.1641\\-101.5021\\91\\120.1172\\-103.2363\\91\\121.445\\-104.5547\\91\\124.0234\\-107.3933\\91\\126.421\\-110.4141\\91\\127.9297\\-112.6591\\91\\130.2464\\-116.2734\\91\\131.1051\\-118.2266\\91\\132.4086\\-120.1797\\91\\133.3307\\-122.1328\\91\\134.4883\\-124.0859\\91\\135.2209\\-126.0391\\91\\136.2508\\-127.9922\\91\\136.8343\\-129.9453\\91\\138.4797\\-133.8516\\91\\139.1304\\-135.8047\\91\\140.1034\\-137.7578\\91\\141.3196\\-141.6641\\91\\142.0963\\-143.6172\\91\\142.8162\\-147.5234\\91\\143.2482\\-149.4766\\91\\143.9006\\-151.4297\\91\\144.3021\\-153.3828\\91\\144.8702\\-157.2891\\91\\145.2516\\-159.2422\\91\\145.7784\\-161.1953\\91\\146.3225\\-165.1016\\91\\146.8727\\-170.9609\\91\\147.35\\-176.8203\\91\\147.5285\\-180.7266\\91\\147.5429\\-184.6328\\91\\147.4532\\-188.5391\\91\\147.1136\\-194.3984\\91\\146.5046\\-202.2109\\91\\146.1168\\-206.1172\\91\\145.8543\\-208.0703\\91\\144.9746\\-211.9766\\91\\144.3478\\-215.8828\\91\\143.9006\\-217.8359\\91\\143.1381\\-219.7891\\91\\142.2119\\-223.6953\\91\\140.4153\\-227.6016\\91\\139.0931\\-229.5547\\91\\138.0951\\-231.5078\\91\\136.7679\\-233.4609\\91\\135.7422\\-235.1776\\91\\134.1812\\-237.3672\\91\\132.4764\\-239.3203\\91\\129.8828\\-242.1777\\91\\126.7108\\-245.1797\\91\\124.0234\\-247.5596\\91\\121.9991\\-249.0859\\91\\120.1172\\-250.2367\\91\\118.1641\\-251.6838\\91\\116.2109\\-253.0156\\91\\114.2578\\-254.2345\\91\\112.3047\\-255.603\\91\\110.3516\\-256.5481\\91\\106.4453\\-259.0583\\91\\104.4922\\-260.1896\\91\\102.5391\\-261.5747\\91\\98.63281\\-263.8326\\91\\96.67969\\-265.2305\\91\\91.55054\\-268.6172\\91\\90.82031\\-269.184\\91\\88.86719\\-270.2159\\91\\86.91406\\-271.5631\\91\\84.96094\\-273.0952\\91\\82.89591\\-274.4766\\91\\81.05469\\-275.5813\\91\\79.10156\\-276.9009\\91\\77.14844\\-278.031\\91\\76.73592\\-278.3828\\91\\73.7894\\-280.3359\\91\\73.24219\\-280.7648\\91\\71.28906\\-281.7205\\91\\69.33594\\-282.938\\91\\67.38281\\-283.7838\\91\\65.42969\\-285.0643\\91\\63.46628\\-286.1953\\91\\59.57031\\-288.2638\\91\\57.61719\\-289.0952\\91\\55.66406\\-289.8093\\91\\53.71094\\-290.8879\\91\\51.75781\\-291.6102\\91\\49.80469\\-292.7005\\91\\47.85156\\-293.3364\\91\\45.89844\\-294.2659\\91\\43.94531\\-294.8608\\91\\41.99219\\-295.2625\\91\\38.08594\\-296.6479\\91\\36.13281\\-297.0202\\91\\34.17969\\-297.5093\\91\\32.22656\\-298.301\\91\\30.27344\\-298.763\\91\\28.32031\\-299.0932\\91\\24.41406\\-300.0789\\91\\22.46094\\-300.4359\\91\\18.55469\\-300.8157\\91\\14.64844\\-301.1423\\91\\8.789063\\-301.5423\\91\\6.835938\\-301.7203\\91\\2.929688\\-301.9203\\91\\0.9765625\\-301.9641\\91"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002255"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "269"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "172"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.835938\\-301.7965\\93\\-12.69531\\-301.3254\\93\\-18.55469\\-300.8154\\93\\-22.46094\\-300.4161\\93\\-24.41406\\-300.091\\93\\-26.36719\\-299.5352\\93\\-28.32031\\-299.0932\\93\\-32.22656\\-298.3394\\93\\-34.17969\\-297.5775\\93\\-36.13281\\-297.0985\\93\\-38.08594\\-296.7193\\93\\-40.03906\\-296.1459\\93\\-41.99219\\-295.3576\\93\\-45.89844\\-294.4961\\93\\-47.85156\\-293.569\\93\\-49.80469\\-292.9266\\93\\-53.71094\\-291.1817\\93\\-55.66406\\-290.5416\\93\\-57.61719\\-289.4693\\93\\-59.57031\\-288.9572\\93\\-65.42969\\-286.3046\\93\\-67.38281\\-285.2239\\93\\-71.28906\\-283.3124\\93\\-73.24219\\-282.5351\\93\\-75.19531\\-281.5162\\93\\-77.14844\\-280.7822\\93\\-79.10156\\-279.5869\\93\\-81.05469\\-278.7316\\93\\-83.00781\\-277.5482\\93\\-84.96094\\-276.7575\\93\\-86.91406\\-275.6973\\93\\-88.86719\\-275.0625\\93\\-90.82031\\-273.923\\93\\-92.77344\\-273.0599\\93\\-94.72656\\-271.8291\\93\\-96.67969\\-270.9924\\93\\-98.63281\\-269.8301\\93\\-100.5859\\-269.1456\\93\\-102.5391\\-267.926\\93\\-104.4922\\-266.9542\\93\\-108.3984\\-264.3539\\93\\-110.3516\\-263.2973\\93\\-114.0704\\-260.8047\\93\\-116.2109\\-259.2681\\93\\-121.518\\-254.9453\\93\\-125.9766\\-250.4862\\93\\-127.9297\\-248.6175\\93\\-132.5503\\-243.2266\\93\\-134.1673\\-241.2734\\93\\-135.353\\-239.3203\\93\\-136.6549\\-237.3672\\93\\-137.8581\\-235.4141\\93\\-138.8264\\-233.4609\\93\\-140.1144\\-231.5078\\93\\-140.9565\\-229.5547\\93\\-142.0181\\-227.6016\\93\\-143.32\\-223.6953\\93\\-144.1883\\-221.7422\\93\\-144.7188\\-219.7891\\93\\-146.168\\-215.8828\\93\\-147.1029\\-211.9766\\93\\-147.6787\\-210.0234\\93\\-148.0698\\-208.0703\\93\\-148.4904\\-204.1641\\93\\-148.8077\\-200.2578\\93\\-149.2128\\-194.3984\\93\\-149.2833\\-192.4453\\93\\-149.2551\\-188.5391\\93\\-149.1075\\-184.6328\\93\\-148.6292\\-176.8203\\93\\-148.2224\\-170.9609\\93\\-147.7619\\-167.0547\\93\\-146.882\\-163.1484\\93\\-146.2195\\-159.2422\\93\\-145.7784\\-157.2891\\93\\-145.0576\\-155.3359\\93\\-144.2562\\-151.4297\\93\\-142.9396\\-147.5234\\93\\-142.0866\\-143.6172\\93\\-141.2254\\-141.6641\\93\\-139.8976\\-137.7578\\93\\-138.8683\\-135.8047\\93\\-138.2379\\-133.8516\\93\\-137.1838\\-131.8984\\93\\-136.6096\\-129.9453\\93\\-135.8603\\-127.9922\\93\\-134.844\\-126.0391\\93\\-133.9686\\-124.0859\\93\\-131.8359\\-120.4487\\93\\-130.6603\\-118.2266\\93\\-129.3979\\-116.2734\\93\\-128.4419\\-114.3203\\93\\-127.9297\\-113.72\\93\\-124.0234\\-108.5743\\93\\-122.2591\\-106.5078\\93\\-120.1172\\-104.5025\\93\\-117.8757\\-102.6016\\93\\-115.2625\\-100.6484\\93\\-110.3516\\-97.48103\\93\\-108.3984\\-96.1144\\93\\-106.4453\\-95.2254\\93\\-104.4922\\-94.07591\\93\\-102.5391\\-93.41925\\93\\-100.5859\\-92.31319\\93\\-98.63281\\-91.55889\\93\\-96.67969\\-90.4199\\93\\-94.72656\\-89.67955\\93\\-92.77344\\-88.67987\\93\\-90.82031\\-88.04021\\93\\-88.86719\\-87.61683\\93\\-86.91406\\-86.92143\\93\\-84.96094\\-86.3882\\93\\-81.05469\\-85.63534\\93\\-77.14844\\-84.62906\\93\\-73.24219\\-84.06297\\93\\-61.52344\\-82.78226\\93\\-57.61719\\-82.54297\\93\\-53.71094\\-82.46886\\93\\-49.80469\\-82.54447\\93\\-47.85156\\-82.69207\\93\\-41.99219\\-83.03217\\93\\-40.03906\\-83.21088\\93\\-36.13281\\-83.43079\\93\\-32.22656\\-83.43895\\93\\-26.36719\\-83.22222\\93\\-22.46094\\-83.12414\\93\\-20.50781\\-83.12457\\93\\-16.60156\\-83.31799\\93\\-10.74219\\-83.40262\\93\\-6.835938\\-83.64151\\93\\-0.9765625\\-84.15977\\93\\0.9765625\\-84.25893\\93\\4.882813\\-83.94806\\93\\8.789063\\-83.47323\\93\\12.69531\\-82.61907\\93\\14.64844\\-82.37189\\93\\18.55469\\-82.09978\\93\\22.46094\\-81.96716\\93\\28.32031\\-81.91893\\93\\34.17969\\-82.06468\\93\\45.89844\\-82.20553\\93\\49.80469\\-82.29745\\93\\55.66406\\-82.37276\\93\\61.52344\\-82.63554\\93\\65.42969\\-82.98639\\93\\69.33594\\-83.52055\\93\\75.19531\\-84.17636\\93\\77.14844\\-84.47633\\93\\79.10156\\-84.90046\\93\\81.05469\\-85.50529\\93\\84.96094\\-86.19643\\93\\86.91406\\-86.61713\\93\\88.86719\\-87.32841\\93\\92.77344\\-88.18949\\93\\94.72656\\-88.80099\\93\\96.67969\\-89.61447\\93\\98.63281\\-90.23759\\93\\100.5859\\-91.24573\\93\\102.5391\\-92.0513\\93\\104.4922\\-93.11604\\93\\106.4453\\-93.93144\\93\\108.3984\\-95.0798\\93\\110.3516\\-96.11954\\93\\116.2109\\-100.313\\93\\118.1641\\-101.8932\\93\\120.9733\\-104.5547\\93\\122.833\\-106.5078\\93\\124.4685\\-108.4609\\93\\125.9766\\-110.4589\\93\\128.7381\\-114.3203\\93\\129.891\\-116.2734\\93\\130.8891\\-118.2266\\93\\132.0904\\-120.1797\\93\\133.0537\\-122.1328\\93\\134.2431\\-124.0859\\93\\134.9745\\-126.0391\\93\\135.9751\\-127.9922\\93\\136.6776\\-129.9453\\93\\137.2338\\-131.8984\\93\\138.2212\\-133.8516\\93\\138.8346\\-135.8047\\93\\140.435\\-139.7109\\93\\140.9409\\-141.6641\\93\\141.6855\\-143.6172\\93\\142.2422\\-145.5703\\93\\142.9099\\-149.4766\\93\\143.3806\\-151.4297\\93\\143.998\\-153.3828\\93\\144.3498\\-155.3359\\93\\144.8587\\-159.2422\\93\\145.2142\\-161.1953\\93\\145.6948\\-163.1484\\93\\146.0191\\-165.1016\\93\\146.5505\\-170.9609\\93\\146.7969\\-174.8672\\93\\146.9974\\-180.7266\\93\\146.9818\\-186.5859\\93\\146.7896\\-192.4453\\93\\146.4693\\-198.3047\\93\\146.2061\\-202.2109\\93\\146.0161\\-204.1641\\93\\145.7072\\-206.1172\\93\\144.9289\\-210.0234\\93\\144.394\\-213.9297\\93\\144.0206\\-215.8828\\93\\143.3253\\-217.8359\\93\\142.8284\\-219.7891\\93\\142.4395\\-221.7422\\93\\141.8013\\-223.6953\\93\\140.842\\-225.6484\\93\\140.0018\\-227.6016\\93\\138.6999\\-229.5547\\93\\137.5\\-231.5078\\93\\136.4682\\-233.4609\\93\\135.0754\\-235.4141\\93\\133.7891\\-237.0795\\93\\130.2545\\-241.2734\\93\\127.9297\\-243.642\\93\\123.7382\\-247.1328\\93\\121.2908\\-249.0859\\93\\120.1172\\-249.9381\\93\\116.2109\\-252.3958\\93\\114.2578\\-253.8635\\93\\112.3047\\-255.1513\\93\\110.3516\\-256.1913\\93\\108.3984\\-257.4893\\93\\106.4453\\-258.545\\93\\104.4922\\-259.8991\\93\\102.5391\\-261.3581\\93\\100.5859\\-262.363\\93\\91.47418\\-268.6172\\93\\90.82031\\-269.1505\\93\\88.86719\\-270.2014\\93\\86.91406\\-271.5905\\93\\84.96094\\-273.1385\\93\\83.00781\\-274.4847\\93\\81.05469\\-275.6179\\93\\79.10156\\-276.9944\\93\\76.89558\\-278.3828\\93\\73.24219\\-280.8749\\93\\71.28906\\-281.8324\\93\\69.33594\\-283.0351\\93\\67.38281\\-283.9357\\93\\66.99036\\-284.2422\\93\\63.47656\\-286.4191\\93\\61.52344\\-287.3479\\93\\59.57031\\-288.455\\93\\57.61719\\-289.1779\\93\\53.71094\\-290.9988\\93\\51.75781\\-291.8123\\93\\49.80469\\-292.8227\\93\\47.85156\\-293.4692\\93\\45.89844\\-294.431\\93\\43.94531\\-294.9432\\93\\41.99219\\-295.3537\\93\\40.03906\\-296.1459\\93\\38.08594\\-296.7476\\93\\36.13281\\-297.1189\\93\\34.17969\\-297.6822\\93\\32.22656\\-298.4442\\93\\28.32031\\-299.1999\\93\\24.41406\\-300.216\\93\\22.46094\\-300.4974\\93\\18.55469\\-300.884\\93\\14.64844\\-301.2179\\93\\8.789063\\-301.6489\\93\\6.835938\\-301.8441\\93\\0.9765625\\-302.0462\\93\\-2.929688\\-301.9918\\93"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002254"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "257"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "173"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.835938\\-301.9203\\95\\-18.55469\\-300.8954\\95\\-22.46094\\-300.5014\\95\\-24.41406\\-300.2263\\95\\-28.32031\\-299.2106\\95\\-32.22656\\-298.4682\\95\\-34.17969\\-297.7746\\95\\-36.13281\\-297.1897\\95\\-38.08594\\-296.7988\\95\\-40.03906\\-296.2979\\95\\-41.99219\\-295.4405\\95\\-45.89844\\-294.5913\\95\\-47.85156\\-293.7298\\95\\-51.75781\\-292.2904\\95\\-53.71094\\-291.2663\\95\\-55.66406\\-290.646\\95\\-57.61719\\-289.5555\\95\\-59.57031\\-288.9932\\95\\-61.52344\\-288.1563\\95\\-65.42969\\-286.3593\\95\\-67.38281\\-285.2392\\95\\-71.28906\\-283.3007\\95\\-73.24219\\-282.4798\\95\\-75.19531\\-281.4614\\95\\-77.14844\\-280.6818\\95\\-79.10156\\-279.4733\\95\\-81.05469\\-278.5049\\95\\-83.00781\\-277.4174\\95\\-86.91406\\-275.5623\\95\\-88.86719\\-274.8273\\95\\-90.82031\\-273.6646\\95\\-96.67969\\-270.4971\\95\\-100.5859\\-268.6572\\95\\-102.5391\\-267.5696\\95\\-104.4922\\-266.3133\\95\\-106.4453\\-265.2202\\95\\-108.3984\\-263.8909\\95\\-110.3516\\-262.7831\\95\\-112.3047\\-261.5642\\95\\-118.1641\\-257.1676\\95\\-120.1172\\-255.6645\\95\\-122.0703\\-253.9283\\95\\-124.0234\\-251.9275\\95\\-126.9601\\-249.0859\\95\\-128.8132\\-247.1328\\95\\-132.0237\\-243.2266\\95\\-133.7891\\-240.9419\\95\\-136.2755\\-237.3672\\95\\-137.2353\\-235.4141\\95\\-137.6953\\-234.7917\\95\\-140.5798\\-229.5547\\95\\-142.3618\\-225.6484\\95\\-142.9015\\-223.6953\\95\\-143.766\\-221.7422\\95\\-144.4221\\-219.7891\\95\\-144.9351\\-217.8359\\95\\-145.7435\\-215.8828\\95\\-146.288\\-213.9297\\95\\-147.1005\\-210.0234\\95\\-147.6534\\-208.0703\\95\\-148.0042\\-206.1172\\95\\-148.227\\-204.1641\\95\\-148.5387\\-200.2578\\95\\-148.7442\\-196.3516\\95\\-148.8832\\-192.4453\\95\\-148.8607\\-188.5391\\95\\-148.7609\\-184.6328\\95\\-148.3852\\-176.8203\\95\\-147.9523\\-170.9609\\95\\-147.6772\\-169.0078\\95\\-146.9124\\-165.1016\\95\\-146.3369\\-161.1953\\95\\-145.9726\\-159.2422\\95\\-144.8248\\-155.3359\\95\\-144.0677\\-151.4297\\95\\-143.3271\\-149.4766\\95\\-142.7965\\-147.5234\\95\\-142.4274\\-145.5703\\95\\-141.8615\\-143.6172\\95\\-141.024\\-141.6641\\95\\-140.4412\\-139.7109\\95\\-138.749\\-135.8047\\95\\-138.092\\-133.8516\\95\\-137.0939\\-131.8984\\95\\-136.5247\\-129.9453\\95\\-135.7422\\-128.1762\\95\\-133.7891\\-124.2603\\95\\-132.6138\\-122.1328\\95\\-131.358\\-120.1797\\95\\-130.4701\\-118.2266\\95\\-129.1743\\-116.2734\\95\\-128.1357\\-114.3203\\95\\-126.6589\\-112.3672\\95\\-125.0529\\-110.4141\\95\\-124.0234\\-109.0133\\95\\-121.7924\\-106.5078\\95\\-118.1641\\-103.237\\95\\-116.2109\\-101.6649\\95\\-114.2578\\-100.2679\\95\\-112.3047\\-99.21476\\95\\-108.3984\\-96.44009\\95\\-106.4453\\-95.50438\\95\\-104.4922\\-94.34645\\95\\-102.5391\\-93.65991\\95\\-100.5859\\-92.68625\\95\\-98.63281\\-91.83803\\95\\-94.72656\\-89.94509\\95\\-92.77344\\-89.2275\\95\\-90.82031\\-88.30334\\95\\-86.91406\\-87.39713\\95\\-84.96094\\-86.73785\\95\\-83.00781\\-86.28409\\95\\-79.10156\\-85.62769\\95\\-75.19531\\-84.70863\\95\\-73.24219\\-84.41237\\95\\-69.33594\\-83.9872\\95\\-63.47656\\-83.53625\\95\\-57.61719\\-83.03125\\95\\-53.71094\\-82.92648\\95\\-49.80469\\-83.0461\\95\\-45.89844\\-83.34042\\95\\-36.13281\\-83.61218\\95\\-32.22656\\-83.59155\\95\\-26.36719\\-83.37338\\95\\-22.46094\\-83.3005\\95\\-20.50781\\-83.31621\\95\\-16.60156\\-83.51072\\95\\-10.74219\\-83.66344\\95\\-6.835938\\-83.9114\\95\\-0.9765625\\-84.56646\\95\\0.9765625\\-84.69791\\95\\4.882813\\-84.36247\\95\\8.789063\\-83.87627\\95\\10.74219\\-83.56519\\95\\14.64844\\-82.6674\\95\\18.55469\\-82.24116\\95\\22.46094\\-82.0878\\95\\26.36719\\-82.02825\\95\\30.27344\\-82.0761\\95\\40.03906\\-82.31866\\95\\45.89844\\-82.39661\\95\\49.80469\\-82.5313\\95\\55.66406\\-82.6702\\95\\59.57031\\-82.94261\\95\\71.28906\\-84.04145\\95\\75.19531\\-84.51419\\95\\79.10156\\-85.42868\\95\\81.05469\\-85.82601\\95\\84.96094\\-86.50755\\95\\88.86719\\-87.66776\\95\\90.82031\\-88.01943\\95\\92.77344\\-88.47845\\95\\94.72656\\-89.30836\\95\\98.63281\\-90.65097\\95\\100.5859\\-91.63358\\95\\102.5391\\-92.38187\\95\\104.4922\\-93.4979\\95\\106.4453\\-94.22618\\95\\108.3984\\-95.49035\\95\\110.3516\\-96.54995\\95\\112.3047\\-97.91779\\95\\114.2578\\-99.42095\\95\\116.0432\\-100.6484\\95\\118.1641\\-102.3574\\95\\120.5252\\-104.5547\\95\\122.3881\\-106.5078\\95\\124.0234\\-108.4702\\95\\125.431\\-110.4141\\95\\128.4455\\-114.3203\\95\\129.4653\\-116.2734\\95\\130.6728\\-118.2266\\95\\131.8359\\-120.446\\95\\133.8852\\-124.0859\\95\\136.4699\\-129.9453\\95\\136.9614\\-131.8984\\95\\137.8439\\-133.8516\\95\\138.5651\\-135.8047\\95\\139.1509\\-137.7578\\95\\140.1217\\-139.7109\\95\\141.1968\\-143.6172\\95\\141.9271\\-145.5703\\95\\142.3792\\-147.5234\\95\\142.992\\-151.4297\\95\\144.0398\\-155.3359\\95\\144.337\\-157.2891\\95\\144.8103\\-161.1953\\95\\145.1133\\-163.1484\\95\\145.8646\\-167.0547\\95\\146.2402\\-170.9609\\95\\146.5355\\-176.8203\\95\\146.6097\\-180.7266\\95\\146.5981\\-186.5859\\95\\146.454\\-192.4453\\95\\146.1712\\-198.3047\\95\\145.8333\\-202.2109\\95\\145.1367\\-206.1172\\95\\144.4092\\-211.9766\\95\\144.1067\\-213.9297\\95\\142.9396\\-217.8359\\95\\142.59\\-219.7891\\95\\142.1384\\-221.7422\\95\\141.2311\\-223.6953\\95\\140.4926\\-225.6484\\95\\139.339\\-227.6016\\95\\138.3522\\-229.5547\\95\\137.0421\\-231.5078\\95\\136.0603\\-233.4609\\95\\134.6821\\-235.4141\\95\\129.8828\\-241.0102\\95\\127.7097\\-243.2266\\95\\125.9766\\-244.6007\\95\\122.0703\\-248.0117\\95\\120.1172\\-249.5285\\95\\118.1641\\-250.5723\\95\\114.2578\\-253.4647\\95\\112.3047\\-254.5946\\95\\108.3984\\-257.1407\\95\\106.4453\\-258.1902\\95\\102.5391\\-261.1112\\95\\100.5859\\-262.1603\\95\\98.63281\\-263.5885\\95\\94.72656\\-266.2322\\95\\91.45171\\-268.6172\\95\\90.82031\\-269.1366\\95\\88.86719\\-270.2374\\95\\86.91406\\-271.6352\\95\\84.96094\\-273.2058\\95\\83.00781\\-274.5938\\95\\81.05469\\-275.6571\\95\\79.10156\\-277.0914\\95\\75.19531\\-279.6006\\95\\73.24219\\-280.9766\\95\\71.28906\\-281.9586\\95\\69.33594\\-283.1186\\95\\67.38281\\-284.1259\\95\\65.42969\\-285.2901\\95\\63.47656\\-286.6022\\95\\61.52344\\-287.4756\\95\\59.57031\\-288.6132\\95\\57.61719\\-289.2671\\95\\55.66406\\-290.3148\\95\\53.71094\\-291.1126\\95\\49.80469\\-292.9301\\95\\47.85156\\-293.6392\\95\\45.89844\\-294.5524\\95\\41.99219\\-295.4727\\95\\40.03906\\-296.3422\\95\\38.08594\\-296.8377\\95\\36.13281\\-297.2205\\95\\32.22656\\-298.5598\\95\\28.32031\\-299.3298\\95\\26.36719\\-299.9048\\95\\24.41406\\-300.3285\\95\\18.55469\\-300.9607\\95\\6.835938\\-301.95\\95\\2.929688\\-302.1003\\95\\-0.9765625\\-302.1246\\95"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002253"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "265"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "174"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.789063\\-301.8906\\97\\-16.60156\\-301.1714\\97\\-22.46094\\-300.5941\\97\\-24.41406\\-300.3405\\97\\-26.36719\\-299.9194\\97\\-28.32031\\-299.3404\\97\\-32.22656\\-298.5841\\97\\-34.17969\\-298.0088\\97\\-36.13281\\-297.2988\\97\\-40.03906\\-296.4299\\97\\-41.99219\\-295.5853\\97\\-45.89844\\-294.689\\97\\-49.80469\\-293.1186\\97\\-51.75781\\-292.4636\\97\\-53.71094\\-291.377\\97\\-55.66406\\-290.7473\\97\\-57.61719\\-289.6534\\97\\-59.57031\\-289.0476\\97\\-61.52344\\-288.262\\97\\-63.47656\\-287.2673\\97\\-65.42969\\-286.4377\\97\\-67.38281\\-285.265\\97\\-71.28906\\-283.3011\\97\\-73.24219\\-282.4352\\97\\-75.19531\\-281.4137\\97\\-77.14844\\-280.5695\\97\\-77.44962\\-280.3359\\97\\-81.05469\\-278.2286\\97\\-83.00781\\-277.2835\\97\\-84.96094\\-276.2101\\97\\-86.91406\\-275.4233\\97\\-88.86719\\-274.5\\97\\-90.82031\\-273.433\\97\\-92.77344\\-272.1869\\97\\-94.72656\\-271.2771\\97\\-96.67969\\-270.0581\\97\\-98.63281\\-269.3257\\97\\-100.5859\\-268.1355\\97\\-102.5391\\-267.2087\\97\\-104.4922\\-265.8395\\97\\-108.3984\\-263.5478\\97\\-110.3516\\-262.2207\\97\\-112.3047\\-261.0784\\97\\-114.2578\\-259.6269\\97\\-118.1641\\-256.4972\\97\\-120.1172\\-255.0803\\97\\-122.0703\\-253.3547\\97\\-124.0234\\-251.3594\\97\\-125.9766\\-249.5023\\97\\-128.3014\\-247.1328\\97\\-131.3365\\-243.2266\\97\\-131.8359\\-242.6902\\97\\-134.493\\-239.3203\\97\\-135.7422\\-237.3331\\97\\-136.807\\-235.4141\\97\\-137.9902\\-233.4609\\97\\-138.9146\\-231.5078\\97\\-140.1614\\-229.5547\\97\\-140.9644\\-227.6016\\97\\-141.9825\\-225.6484\\97\\-143.1683\\-221.7422\\97\\-144.0618\\-219.7891\\97\\-145.0977\\-215.8828\\97\\-145.8589\\-213.9297\\97\\-146.3155\\-211.9766\\97\\-147.0535\\-208.0703\\97\\-147.5571\\-206.1172\\97\\-147.8886\\-204.1641\\97\\-148.11\\-202.2109\\97\\-148.379\\-198.3047\\97\\-148.5641\\-192.4453\\97\\-148.5387\\-186.5859\\97\\-148.4259\\-182.6797\\97\\-148.11\\-176.8203\\97\\-147.7865\\-172.9141\\97\\-147.5285\\-170.9609\\97\\-147.1713\\-169.0078\\97\\-146.0871\\-161.1953\\97\\-145.6163\\-159.2422\\97\\-144.998\\-157.2891\\97\\-144.3088\\-153.3828\\97\\-143.8024\\-151.4297\\97\\-143.0534\\-149.4766\\97\\-142.2833\\-145.5703\\97\\-140.8457\\-141.6641\\97\\-140.2903\\-139.7109\\97\\-139.3011\\-137.7578\\97\\-137.907\\-133.8516\\97\\-136.9504\\-131.8984\\97\\-136.3954\\-129.9453\\97\\-135.3644\\-127.9922\\97\\-134.5426\\-126.0391\\97\\-133.381\\-124.0859\\97\\-132.4066\\-122.1328\\97\\-131.1275\\-120.1797\\97\\-130.2228\\-118.2266\\97\\-127.9297\\-114.5894\\97\\-126.3401\\-112.3672\\97\\-124.0234\\-109.4453\\97\\-121.3414\\-106.5078\\97\\-120.1172\\-105.4585\\97\\-118.1641\\-103.6037\\97\\-116.2109\\-101.9574\\97\\-114.2036\\-100.6484\\97\\-112.3047\\-99.55293\\97\\-110.3516\\-98.11066\\97\\-108.1414\\-96.74219\\97\\-104.4922\\-94.73209\\97\\-102.5391\\-93.86743\\97\\-100.5859\\-93.15671\\97\\-98.63281\\-92.09267\\97\\-96.67969\\-91.37109\\97\\-94.72656\\-90.25711\\97\\-92.77344\\-89.58273\\97\\-90.82031\\-88.71875\\97\\-88.86719\\-88.08997\\97\\-86.91406\\-87.7185\\97\\-84.96094\\-87.24152\\97\\-83.00781\\-86.61713\\97\\-81.05469\\-86.23279\\97\\-77.14844\\-85.65605\\97\\-73.24219\\-84.888\\97\\-69.33594\\-84.34434\\97\\-61.52344\\-83.78838\\97\\-59.57031\\-83.68294\\97\\-53.71094\\-83.47556\\97\\-49.80469\\-83.55233\\97\\-47.85156\\-83.65146\\97\\-40.03906\\-83.73849\\97\\-32.22656\\-83.71564\\97\\-24.41406\\-83.47775\\97\\-20.50781\\-83.49068\\97\\-16.60156\\-83.67625\\97\\-12.69531\\-83.79559\\97\\-8.789063\\-83.99107\\97\\-6.835938\\-84.16473\\97\\-2.929688\\-84.74161\\97\\-0.9765625\\-85.13969\\97\\0.9765625\\-85.3157\\97\\2.929688\\-85.22626\\97\\6.835938\\-84.48571\\97\\8.789063\\-84.2456\\97\\12.69531\\-83.58123\\97\\16.60156\\-82.70324\\97\\18.55469\\-82.42578\\97\\22.46094\\-82.21358\\97\\28.32031\\-82.17023\\97\\34.17969\\-82.30216\\97\\47.85156\\-82.74479\\97\\53.71094\\-83.07806\\97\\55.66406\\-83.15295\\97\\63.47656\\-83.71554\\97\\67.38281\\-83.9705\\97\\73.24219\\-84.58736\\97\\77.14844\\-85.42868\\97\\83.00781\\-86.40033\\97\\86.91406\\-87.52423\\97\\90.82031\\-88.26385\\97\\94.72656\\-89.66639\\97\\96.67969\\-90.24921\\97\\98.63281\\-91.2263\\97\\100.5859\\-91.97205\\97\\106.4453\\-94.66997\\97\\108.3984\\-95.81001\\97\\112.3047\\-98.34209\\97\\115.4494\\-100.6484\\97\\118.1641\\-102.9168\\97\\119.9268\\-104.5547\\97\\121.8669\\-106.5078\\97\\124.0234\\-109.0081\\97\\125.0179\\-110.4141\\97\\126.6255\\-112.3672\\97\\128.0329\\-114.3203\\97\\129.1488\\-116.2734\\97\\130.3914\\-118.2266\\97\\131.2447\\-120.1797\\97\\132.5077\\-122.1328\\97\\133.4078\\-124.0859\\97\\134.4977\\-126.0391\\97\\135.2077\\-127.9922\\97\\136.1861\\-129.9453\\97\\137.346\\-133.8516\\97\\138.2857\\-135.8047\\97\\138.8152\\-137.7578\\97\\140.3689\\-141.6641\\97\\140.8347\\-143.6172\\97\\142.0898\\-147.5234\\97\\142.4515\\-149.4766\\97\\143.0466\\-153.3828\\97\\144.0272\\-157.2891\\97\\144.3239\\-159.2422\\97\\144.9746\\-165.1016\\97\\145.5744\\-169.0078\\97\\146.0221\\-172.9141\\97\\146.2166\\-176.8203\\97\\146.2942\\-180.7266\\97\\146.2839\\-186.5859\\97\\146.1243\\-192.4453\\97\\145.9142\\-196.3516\\97\\145.7553\\-198.3047\\97\\145.2278\\-202.2109\\97\\144.7645\\-206.1172\\97\\144.3773\\-210.0234\\97\\144.089\\-211.9766\\97\\143.6094\\-213.9297\\97\\143.0202\\-215.8828\\97\\142.3279\\-219.7891\\97\\141.6558\\-221.7422\\97\\140.8031\\-223.6953\\97\\140.0761\\-225.6484\\97\\138.8504\\-227.6016\\97\\137.8976\\-229.5547\\97\\134.2564\\-235.4141\\97\\129.8828\\-240.4226\\97\\127.0828\\-243.2266\\97\\122.0703\\-247.5473\\97\\118.1641\\-250.2067\\97\\116.2109\\-251.6338\\97\\114.2578\\-252.875\\97\\111.2225\\-254.9453\\97\\110.3516\\-255.6075\\97\\108.3984\\-256.6875\\97\\106.4453\\-257.9328\\97\\104.4922\\-259.4401\\97\\102.5391\\-260.8283\\97\\100.5859\\-262.0379\\97\\98.63281\\-263.4853\\97\\94.72656\\-266.1824\\97\\90.82031\\-269.1743\\97\\88.86719\\-270.3319\\97\\86.91406\\-271.7115\\97\\84.96094\\-273.2864\\97\\83.00781\\-274.7375\\97\\81.05469\\-275.7268\\97\\79.10156\\-277.1948\\97\\77.14844\\-278.5203\\97\\75.19531\\-279.7364\\97\\73.24219\\-281.0941\\97\\69.33594\\-283.2139\\97\\67.38281\\-284.3806\\97\\65.42969\\-285.4288\\97\\63.47656\\-286.7694\\97\\61.52344\\-287.6221\\97\\59.57031\\-288.7716\\97\\57.61719\\-289.3875\\97\\55.66406\\-290.5227\\97\\53.71094\\-291.2315\\97\\51.75781\\-292.3138\\97\\49.80469\\-293.0569\\97\\45.89844\\-294.6811\\97\\41.99219\\-295.6588\\97\\40.03906\\-296.4987\\97\\36.13281\\-297.3434\\97\\34.17969\\-298.1378\\97\\32.22656\\-298.6742\\97\\28.32031\\-299.4828\\97\\26.36719\\-300.0681\\97\\24.41406\\-300.431\\97\\22.46094\\-300.6606\\97\\16.60156\\-301.2228\\97\\8.789063\\-301.9203\\97\\6.835938\\-302.0608\\97\\2.929688\\-302.1985\\97\\-0.9765625\\-302.2123\\97\\-6.835938\\-302.0332\\97"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002252"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "258"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "175"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-300.6782\\99\\-24.41406\\-300.4359\\99\\-26.36719\\-300.0926\\99\\-28.32031\\-299.501\\99\\-32.22656\\-298.6943\\99\\-34.17969\\-298.218\\99\\-36.13281\\-297.4228\\99\\-40.03906\\-296.5623\\99\\-41.99219\\-295.7746\\99\\-43.94531\\-295.1858\\99\\-45.89844\\-294.776\\99\\-47.85156\\-294.1326\\99\\-49.80469\\-293.2471\\99\\-51.75781\\-292.6086\\99\\-53.71094\\-291.5121\\99\\-55.66406\\-290.8377\\99\\-57.61719\\-289.7714\\99\\-61.52344\\-288.3744\\99\\-63.47656\\-287.3105\\99\\-65.42969\\-286.4984\\99\\-67.38281\\-285.2967\\99\\-71.28906\\-283.3068\\99\\-73.24219\\-282.4063\\99\\-77.30359\\-280.3359\\99\\-80.59776\\-278.3828\\99\\-81.05469\\-278.0417\\99\\-83.00781\\-277.1735\\99\\-84.96094\\-276.0292\\99\\-86.91406\\-275.2904\\99\\-88.86719\\-274.1556\\99\\-90.82031\\-273.2\\99\\-92.77344\\-271.863\\99\\-94.72656\\-270.9871\\99\\-96.67969\\-269.7679\\99\\-98.63281\\-268.9834\\99\\-99.14102\\-268.6172\\99\\-102.5391\\-266.7025\\99\\-104.4922\\-265.4672\\99\\-106.4453\\-264.0966\\99\\-108.3984\\-263.1641\\99\\-112.3047\\-260.3961\\99\\-114.2578\\-259.094\\99\\-118.1641\\-256.0311\\99\\-120.1172\\-254.3751\\99\\-122.0703\\-252.5539\\99\\-125.9766\\-248.7579\\99\\-127.9297\\-246.7238\\99\\-131.8359\\-242.0659\\99\\-133.9198\\-239.3203\\99\\-135.1115\\-237.3672\\99\\-136.4304\\-235.4141\\99\\-137.2808\\-233.4609\\99\\-138.5091\\-231.5078\\99\\-140.5545\\-227.6016\\99\\-142.2674\\-223.6953\\99\\-142.7747\\-221.7422\\99\\-143.4523\\-219.7891\\99\\-144.2348\\-217.8359\\99\\-145.1868\\-213.9297\\99\\-145.8795\\-211.9766\\99\\-146.2838\\-210.0234\\99\\-146.9575\\-206.1172\\99\\-147.7034\\-202.2109\\99\\-147.9399\\-200.2578\\99\\-148.1728\\-196.3516\\99\\-148.2669\\-192.4453\\99\\-148.2573\\-186.5859\\99\\-148.025\\-180.7266\\99\\-147.7273\\-176.8203\\99\\-146.7673\\-169.0078\\99\\-146.0871\\-163.1484\\99\\-145.7072\\-161.1953\\99\\-145.1317\\-159.2422\\99\\-144.7363\\-157.2891\\99\\-144.0768\\-153.3828\\99\\-143.3957\\-151.4297\\99\\-142.8528\\-149.4766\\99\\-142.1091\\-145.5703\\99\\-141.2828\\-143.6172\\99\\-140.0885\\-139.7109\\99\\-139.0896\\-137.7578\\99\\-138.5091\\-135.8047\\99\\-137.6073\\-133.8516\\99\\-136.8037\\-131.8984\\99\\-136.2134\\-129.9453\\99\\-135.1327\\-127.9922\\99\\-134.3444\\-126.0391\\99\\-133.1199\\-124.0859\\99\\-132.1528\\-122.1328\\99\\-130.9387\\-120.1797\\99\\-128.7818\\-116.2734\\99\\-124.4287\\-110.4141\\99\\-122.8337\\-108.4609\\99\\-120.9168\\-106.5078\\99\\-118.7022\\-104.5547\\99\\-118.1641\\-103.9937\\99\\-116.2109\\-102.3438\\99\\-114.2578\\-101.1473\\99\\-110.3516\\-98.5\\99\\-108.3984\\-97.37042\\99\\-106.4453\\-96.06519\\99\\-104.4922\\-95.16412\\99\\-102.5391\\-94.08057\\99\\-100.5859\\-93.48905\\99\\-98.63281\\-92.39038\\99\\-96.67969\\-91.70027\\99\\-94.72656\\-90.66811\\99\\-92.77344\\-89.87786\\99\\-90.82031\\-89.25066\\99\\-88.86719\\-88.38037\\99\\-84.96094\\-87.60807\\99\\-81.05469\\-86.57406\\99\\-79.10156\\-86.25128\\99\\-71.28906\\-85.207\\99\\-69.33594\\-84.82115\\99\\-67.38281\\-84.59696\\99\\-61.52344\\-84.12917\\99\\-53.71094\\-83.85041\\99\\-47.85156\\-83.93295\\99\\-40.03906\\-83.90659\\99\\-32.22656\\-83.82618\\99\\-24.41406\\-83.63093\\99\\-20.50781\\-83.68364\\99\\-14.64844\\-83.88596\\99\\-8.789063\\-84.21152\\99\\-4.882813\\-84.79808\\99\\-2.929688\\-85.30348\\99\\-0.9765625\\-85.63457\\99\\0.9765625\\-85.76035\\99\\2.929688\\-85.70143\\99\\4.882813\\-85.46854\\99\\8.789063\\-84.65723\\99\\12.69531\\-83.90992\\99\\14.64844\\-83.58732\\99\\18.55469\\-82.74479\\99\\20.50781\\-82.48438\\99\\22.46094\\-82.37911\\99\\28.32031\\-82.29998\\99\\36.13281\\-82.52421\\99\\45.89844\\-83.09357\\99\\47.85156\\-83.16649\\99\\51.75781\\-83.43079\\99\\59.57031\\-83.78721\\99\\67.38281\\-84.28017\\99\\71.28906\\-84.75106\\99\\75.19531\\-85.47266\\99\\81.05469\\-86.36324\\99\\83.00781\\-86.793\\99\\84.96094\\-87.42358\\99\\88.86719\\-88.1251\\99\\90.82031\\-88.60892\\99\\92.77344\\-89.40529\\99\\94.72656\\-89.98179\\99\\96.67969\\-90.67907\\99\\98.63281\\-91.62823\\99\\100.5859\\-92.31549\\99\\102.5391\\-93.35812\\99\\104.4922\\-94.05022\\99\\106.4453\\-95.20061\\99\\108.3984\\-96.16422\\99\\112.3047\\-98.92556\\99\\114.2578\\-100.1739\\99\\116.2109\\-101.7081\\99\\118.1641\\-103.4851\\99\\120.1172\\-105.4633\\99\\121.2877\\-106.5078\\99\\124.0234\\-109.5505\\99\\126.1534\\-112.3672\\99\\128.8689\\-116.2734\\99\\130.9465\\-120.1797\\99\\132.155\\-122.1328\\99\\133.0321\\-124.0859\\99\\134.1916\\-126.0391\\99\\134.9094\\-127.9922\\99\\136.5345\\-131.8984\\99\\137.0049\\-133.8516\\99\\137.8823\\-135.8047\\99\\139.1152\\-139.7109\\99\\140.0076\\-141.6641\\99\\140.9801\\-145.5703\\99\\141.625\\-147.5234\\99\\142.1659\\-149.4766\\99\\142.5126\\-151.4297\\99\\143.0404\\-155.3359\\99\\143.988\\-159.2422\\99\\144.2705\\-161.1953\\99\\144.8287\\-167.0547\\99\\144.9713\\-169.0078\\99\\145.6822\\-174.8672\\99\\145.9167\\-180.7266\\99\\145.907\\-186.5859\\99\\145.7784\\-190.4922\\99\\145.5154\\-194.3984\\99\\145.1262\\-198.3047\\99\\144.3197\\-208.0703\\99\\144.0585\\-210.0234\\99\\143.073\\-213.9297\\99\\142.4223\\-217.8359\\99\\141.9498\\-219.7891\\99\\141.0977\\-221.7422\\99\\140.4464\\-223.6953\\99\\139.3885\\-225.6484\\99\\138.4713\\-227.6016\\99\\137.283\\-229.5547\\99\\136.3642\\-231.5078\\99\\133.7891\\-235.208\\99\\130.4277\\-239.3203\\99\\127.9297\\-241.974\\99\\125.9766\\-243.7327\\99\\121.7731\\-247.1328\\99\\118.1641\\-249.879\\99\\114.2578\\-252.3685\\99\\110.7405\\-254.9453\\99\\110.3516\\-255.293\\99\\108.3984\\-256.3651\\99\\104.4922\\-259.2125\\99\\100.5859\\-261.9481\\99\\98.63281\\-263.4155\\99\\96.74737\\-264.7109\\99\\91.53427\\-268.6172\\99\\90.82031\\-269.2113\\99\\86.91406\\-271.7968\\99\\83.00781\\-274.8829\\99\\81.05469\\-275.8633\\99\\77.14844\\-278.7216\\99\\75.19531\\-279.907\\99\\73.24219\\-281.2166\\99\\71.28906\\-282.3301\\99\\69.33594\\-283.3296\\99\\67.38281\\-284.6212\\99\\65.42969\\-285.6069\\99\\63.47656\\-286.9277\\99\\61.52344\\-287.7839\\99\\59.57031\\-288.8963\\99\\57.61719\\-289.5389\\99\\55.66406\\-290.6886\\99\\53.71094\\-291.3657\\99\\51.75781\\-292.5251\\99\\49.80469\\-293.1976\\99\\47.85156\\-294.1047\\99\\45.89844\\-294.7998\\99\\43.94531\\-295.2224\\99\\41.99219\\-295.8757\\99\\40.03906\\-296.6331\\99\\38.08594\\-297.0154\\99\\36.13281\\-297.5196\\99\\34.17969\\-298.3421\\99\\30.27344\\-299.1643\\99\\26.36719\\-300.2077\\99\\24.41406\\-300.5201\\99\\20.50781\\-300.9362\\99\\14.64844\\-301.4833\\99\\10.74219\\-301.9056\\99\\6.835938\\-302.1505\\99\\2.929688\\-302.2818\\99\\-0.9765625\\-302.292\\99\\-4.882813\\-302.2123\\99\\-8.789063\\-302.0201\\99"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002251"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "252"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "176"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-10.74219\\-302.0201\\101\\-14.64844\\-301.5566\\101\\-22.46094\\-300.7596\\101\\-26.36719\\-300.2413\\101\\-30.27344\\-299.1961\\101\\-34.17969\\-298.3788\\101\\-36.13281\\-297.5997\\101\\-38.08594\\-297.0688\\101\\-40.03906\\-296.6778\\101\\-43.94531\\-295.2872\\101\\-45.89844\\-294.8778\\101\\-47.85156\\-294.313\\101\\-49.80469\\-293.3853\\101\\-51.75781\\-292.7399\\101\\-53.71094\\-291.683\\101\\-55.66406\\-290.9309\\101\\-57.61719\\-289.9413\\101\\-61.52344\\-288.5016\\101\\-63.47656\\-287.3803\\101\\-65.42969\\-286.5898\\101\\-67.38281\\-285.3454\\101\\-69.33594\\-284.3908\\101\\-71.28906\\-283.3186\\101\\-73.24219\\-282.4063\\101\\-77.14844\\-280.3747\\101\\-79.10156\\-279.2066\\101\\-81.05469\\-277.9103\\101\\-83.00781\\-277.0668\\101\\-84.96094\\-275.8879\\101\\-86.91406\\-275.1213\\101\\-88.86719\\-273.9054\\101\\-90.82031\\-272.9206\\101\\-92.77344\\-271.6265\\101\\-94.72656\\-270.5621\\101\\-98.47986\\-268.6172\\101\\-100.5859\\-267.4646\\101\\-102.5391\\-266.1367\\101\\-104.4922\\-265.0365\\101\\-106.4453\\-263.7464\\101\\-110.3516\\-261.4176\\101\\-114.2578\\-258.346\\101\\-116.2109\\-257.0166\\101\\-118.1641\\-255.5557\\101\\-120.1172\\-253.8474\\101\\-123.0839\\-251.0391\\101\\-125.9766\\-248.164\\101\\-128.7206\\-245.1797\\101\\-131.8359\\-241.2274\\101\\-134.6507\\-237.3672\\101\\-135.9089\\-235.4141\\101\\-136.8347\\-233.4609\\101\\-138.0231\\-231.5078\\101\\-138.8941\\-229.5547\\101\\-140.0901\\-227.6016\\101\\-140.8517\\-225.6484\\101\\-141.7894\\-223.6953\\101\\-142.4636\\-221.7422\\101\\-142.9274\\-219.7891\\101\\-143.7262\\-217.8359\\101\\-144.3124\\-215.8828\\101\\-145.1732\\-211.9766\\101\\-145.8247\\-210.0234\\101\\-146.2415\\-208.0703\\101\\-147.0768\\-202.2109\\101\\-147.3928\\-200.2578\\101\\-147.7887\\-196.3516\\101\\-147.9555\\-190.4922\\101\\-147.9112\\-186.5859\\101\\-147.5858\\-180.7266\\101\\-147.3361\\-178.7734\\101\\-146.4439\\-169.0078\\101\\-146.0191\\-165.1016\\101\\-145.6694\\-163.1484\\101\\-145.1557\\-161.1953\\101\\-144.7879\\-159.2422\\101\\-144.2076\\-155.3359\\101\\-143.7112\\-153.3828\\101\\-143.0598\\-151.4297\\101\\-142.3551\\-147.5234\\101\\-141.851\\-145.5703\\101\\-141.0324\\-143.6172\\101\\-140.4907\\-141.6641\\101\\-139.797\\-139.7109\\101\\-138.9469\\-137.7578\\101\\-138.3409\\-135.8047\\101\\-137.3089\\-133.8516\\101\\-135.9751\\-129.9453\\101\\-134.9472\\-127.9922\\101\\-134.0835\\-126.0391\\101\\-132.8636\\-124.0859\\101\\-130.7419\\-120.1797\\101\\-129.5139\\-118.2266\\101\\-128.5392\\-116.2734\\101\\-123.9014\\-110.4141\\101\\-122.4835\\-108.4609\\101\\-120.4234\\-106.5078\\101\\-115.8332\\-102.6016\\101\\-112.3047\\-100.0914\\101\\-110.3516\\-99.00812\\101\\-109.9808\\-98.69531\\101\\-106.4453\\-96.43488\\101\\-104.4922\\-95.51361\\101\\-102.5391\\-94.37154\\101\\-100.5859\\-93.72862\\101\\-96.67969\\-91.96495\\101\\-94.72656\\-91.21056\\101\\-92.77344\\-90.19518\\101\\-90.82031\\-89.60256\\101\\-88.86719\\-88.79581\\101\\-86.91406\\-88.20844\\101\\-83.00781\\-87.52795\\101\\-79.10156\\-86.61713\\101\\-77.14844\\-86.30003\\101\\-71.28906\\-85.67249\\101\\-67.38281\\-85.1684\\101\\-61.52344\\-84.51105\\101\\-57.61719\\-84.31876\\101\\-53.71094\\-84.17596\\101\\-47.85156\\-84.18716\\101\\-38.08594\\-84.00372\\101\\-34.17969\\-83.97217\\101\\-26.36719\\-83.80134\\101\\-22.46094\\-83.81676\\101\\-14.64844\\-84.05791\\101\\-8.789063\\-84.50786\\101\\-6.835938\\-84.79964\\101\\-4.882813\\-85.29108\\101\\-0.9765625\\-86.00574\\101\\0.9765625\\-86.13706\\101\\2.929688\\-86.11557\\101\\6.835938\\-85.60049\\101\\8.789063\\-85.25453\\101\\10.74219\\-84.71331\\101\\14.64844\\-83.91975\\101\\20.50781\\-82.88251\\101\\22.46094\\-82.66168\\101\\26.36719\\-82.47672\\101\\28.32031\\-82.47281\\101\\34.17969\\-82.62216\\101\\36.13281\\-82.74247\\101\\40.03906\\-83.10816\\101\\43.94531\\-83.36192\\101\\51.75781\\-83.7346\\101\\59.57031\\-84.06822\\101\\63.47656\\-84.31171\\101\\67.38281\\-84.6541\\101\\71.28906\\-85.3074\\101\\77.14844\\-86.0511\\101\\81.05469\\-86.76522\\101\\83.00781\\-87.31405\\101\\84.96094\\-87.7215\\101\\88.86719\\-88.42161\\101\\90.82031\\-89.14906\\101\\94.72656\\-90.31075\\101\\96.67969\\-91.25842\\101\\98.63281\\-91.96972\\101\\102.5391\\-93.67566\\101\\104.4922\\-94.40567\\101\\108.3984\\-96.62775\\101\\110.3516\\-97.9613\\101\\112.3047\\-99.45412\\101\\114.1851\\-100.6484\\101\\116.2109\\-102.1283\\101\\118.7212\\-104.5547\\101\\120.8357\\-106.5078\\101\\122.7001\\-108.4609\\101\\124.2511\\-110.4141\\101\\125.548\\-112.3672\\101\\128.5441\\-116.2734\\101\\129.4765\\-118.2266\\101\\130.6653\\-120.1797\\101\\133.7891\\-126.1998\\101\\134.6319\\-127.9922\\101\\135.294\\-129.9453\\101\\136.2271\\-131.8984\\101\\137.3033\\-135.8047\\101\\138.2041\\-137.7578\\101\\139.406\\-141.6641\\101\\140.1992\\-143.6172\\101\\141.1009\\-147.5234\\101\\141.7569\\-149.4766\\101\\142.2298\\-151.4297\\101\\143.0179\\-157.2891\\101\\143.8893\\-161.1953\\101\\144.1525\\-163.1484\\101\\144.5104\\-167.0547\\101\\144.7495\\-170.9609\\101\\145.0413\\-174.8672\\101\\145.3154\\-182.6797\\101\\145.2884\\-186.5859\\101\\145.1604\\-190.4922\\101\\144.6461\\-200.2578\\101\\144.219\\-206.1172\\101\\143.9572\\-208.0703\\101\\143.05\\-211.9766\\101\\142.4583\\-215.8828\\101\\142.08\\-217.8359\\101\\141.3435\\-219.7891\\101\\140.0171\\-223.6953\\101\\138.8683\\-225.6484\\101\\138.0623\\-227.6016\\101\\136.8646\\-229.5547\\101\\135.8772\\-231.5078\\101\\134.613\\-233.4609\\101\\131.8359\\-236.8906\\101\\127.9297\\-241.3622\\101\\123.48\\-245.1797\\101\\120.1172\\-247.9948\\101\\118.1641\\-249.4983\\101\\116.2109\\-250.6174\\101\\112.3047\\-253.5582\\101\\110.3002\\-254.9453\\101\\108.3984\\-256.1339\\101\\104.6404\\-258.8516\\101\\98.63281\\-263.3842\\101\\94.72656\\-266.2057\\101\\90.82031\\-269.2705\\101\\88.86719\\-270.6523\\101\\86.91406\\-271.9192\\101\\83.00781\\-275.0356\\101\\81.05469\\-276.0662\\101\\79.10156\\-277.4299\\101\\77.14844\\-278.9115\\101\\71.28906\\-282.5649\\101\\69.33594\\-283.4813\\101\\67.38281\\-284.819\\101\\65.42969\\-285.8249\\101\\63.47656\\-287.0703\\101\\59.57031\\-289.0225\\101\\57.61719\\-289.7179\\101\\55.66406\\-290.8391\\101\\53.71094\\-291.5574\\101\\51.75781\\-292.7039\\101\\49.80469\\-293.378\\101\\47.85156\\-294.3265\\101\\45.89844\\-294.9134\\101\\43.94531\\-295.3498\\101\\41.99219\\-296.1324\\101\\40.03906\\-296.7585\\101\\38.08594\\-297.1253\\101\\36.13281\\-297.7464\\101\\34.17969\\-298.5011\\101\\30.27344\\-299.31\\101\\28.32031\\-299.8899\\101\\26.36719\\-300.325\\101\\24.41406\\-300.6052\\101\\14.64844\\-301.609\\101\\10.74219\\-302.0332\\101\\6.835938\\-302.2581\\101\\2.929688\\-302.37\\101\\-2.929688\\-302.3571\\101\\-6.835938\\-302.2369\\101"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002250"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "255"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "177"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-301.4584\\103\\-24.41406\\-300.6429\\103\\-26.36719\\-300.3733\\103\\-28.32031\\-299.9194\\103\\-30.27344\\-299.3351\\103\\-34.17969\\-298.5163\\103\\-38.08594\\-297.1776\\103\\-40.03906\\-296.7864\\103\\-41.99219\\-296.2247\\103\\-43.94531\\-295.402\\103\\-47.85156\\-294.4738\\103\\-49.80469\\-293.5319\\103\\-51.75781\\-292.8598\\103\\-53.71094\\-291.8803\\103\\-57.61719\\-290.1692\\103\\-59.57031\\-289.2568\\103\\-61.52344\\-288.6201\\103\\-63.47656\\-287.4709\\103\\-65.42969\\-286.6773\\103\\-67.38281\\-285.413\\103\\-69.33594\\-284.4897\\103\\-71.28906\\-283.3366\\103\\-73.43301\\-282.2891\\103\\-77.13721\\-280.3359\\103\\-79.10156\\-279.1517\\103\\-81.05469\\-277.8102\\103\\-83.00781\\-276.9652\\103\\-84.96094\\-275.7591\\103\\-86.91406\\-274.945\\103\\-87.58076\\-274.4766\\103\\-94.17499\\-270.5703\\103\\-94.72656\\-270.1478\\103\\-96.67969\\-269.3384\\103\\-98.63281\\-268.0959\\103\\-100.5859\\-267.1085\\103\\-104.4922\\-264.4202\\103\\-106.4453\\-263.424\\103\\-108.3984\\-262.0735\\103\\-110.3516\\-260.8621\\103\\-112.3047\\-259.418\\103\\-114.2578\\-257.8445\\103\\-118.0396\\-254.9453\\103\\-120.1172\\-253.2274\\103\\-122.4365\\-251.0391\\103\\-125.9766\\-247.513\\103\\-128.0704\\-245.1797\\103\\-129.8828\\-242.9041\\103\\-131.0587\\-241.2734\\103\\-132.658\\-239.3203\\103\\-134.1316\\-237.3672\\103\\-135.2293\\-235.4141\\103\\-136.4634\\-233.4609\\103\\-137.3004\\-231.5078\\103\\-138.4487\\-229.5547\\103\\-139.3138\\-227.6016\\103\\-140.4054\\-225.6484\\103\\-141.1133\\-223.6953\\103\\-142.0424\\-221.7422\\103\\-143.0596\\-217.8359\\103\\-143.8165\\-215.8828\\103\\-144.3304\\-213.9297\\103\\-145.0846\\-210.0234\\103\\-145.7316\\-208.0703\\103\\-146.1196\\-206.1172\\103\\-146.8118\\-200.2578\\103\\-147.1579\\-196.3516\\103\\-147.3928\\-190.4922\\103\\-147.3214\\-186.5859\\103\\-146.985\\-180.7266\\103\\-146.8156\\-178.7734\\103\\-146.4278\\-172.9141\\103\\-146.1243\\-169.0078\\103\\-145.8669\\-167.0547\\103\\-145.0802\\-163.1484\\103\\-144.2562\\-157.2891\\103\\-143.8525\\-155.3359\\103\\-143.2197\\-153.3828\\103\\-142.8238\\-151.4297\\103\\-142.1313\\-147.5234\\103\\-140.7806\\-143.6172\\103\\-140.2609\\-141.6641\\103\\-139.3802\\-139.7109\\103\\-138.092\\-135.8047\\103\\-137.0721\\-133.8516\\103\\-136.4919\\-131.8984\\103\\-134.7414\\-127.9922\\103\\-133.7891\\-126.1884\\103\\-131.8359\\-122.748\\103\\-131.3996\\-122.1328\\103\\-130.5013\\-120.1797\\103\\-129.2206\\-118.2266\\103\\-128.159\\-116.2734\\103\\-126.6897\\-114.3203\\103\\-123.3746\\-110.4141\\103\\-121.8767\\-108.4609\\103\\-116.2109\\-103.395\\103\\-114.2578\\-101.8008\\103\\-112.3047\\-100.5435\\103\\-110.3516\\-99.40134\\103\\-108.3984\\-98.02321\\103\\-104.4922\\-95.81988\\103\\-102.4978\\-94.78906\\103\\-100.5859\\-93.94067\\103\\-98.63281\\-93.30714\\103\\-96.67969\\-92.25574\\103\\-94.72656\\-91.59252\\103\\-92.77344\\-90.58182\\103\\-88.86719\\-89.31095\\103\\-86.91406\\-88.5922\\103\\-84.96094\\-88.12954\\103\\-81.05469\\-87.55062\\103\\-77.14844\\-86.70058\\103\\-75.19531\\-86.4074\\103\\-69.33594\\-85.80828\\103\\-63.47656\\-85.32554\\103\\-61.52344\\-85.04707\\103\\-57.61719\\-84.71539\\103\\-53.71094\\-84.53212\\103\\-47.85156\\-84.48284\\103\\-38.08594\\-84.13416\\103\\-34.17969\\-84.09966\\103\\-26.36719\\-83.94492\\103\\-22.46094\\-83.98141\\103\\-16.60156\\-84.18235\\103\\-12.69531\\-84.42471\\103\\-8.789063\\-84.90137\\103\\-2.929688\\-86.02941\\103\\0.9765625\\-86.52041\\103\\2.929688\\-86.51062\\103\\8.789063\\-85.71018\\103\\10.74219\\-85.28237\\103\\14.64844\\-84.27531\\103\\16.60156\\-83.90326\\103\\22.46094\\-83.09357\\103\\26.36719\\-82.79027\\103\\28.32031\\-82.75416\\103\\34.17969\\-82.90144\\103\\38.08594\\-83.28811\\103\\41.99219\\-83.54623\\103\\49.80469\\-83.89907\\103\\53.71094\\-84.04688\\103\\59.57031\\-84.35584\\103\\63.47656\\-84.67239\\103\\69.33594\\-85.46674\\103\\73.24219\\-85.85152\\103\\77.14844\\-86.3808\\103\\79.10156\\-86.76522\\103\\81.05469\\-87.29733\\103\\86.91406\\-88.29779\\103\\90.82031\\-89.57878\\103\\92.77344\\-90.08083\\103\\94.72656\\-90.81623\\103\\96.67969\\-91.68805\\103\\98.63281\\-92.32036\\103\\100.5859\\-93.29349\\103\\102.5391\\-93.94396\\103\\106.4453\\-95.90778\\103\\108.3984\\-97.21291\\103\\110.3516\\-98.39651\\103\\113.435\\-100.6484\\103\\116.001\\-102.6016\\103\\120.3125\\-106.5078\\103\\122.2276\\-108.4609\\103\\123.5822\\-110.4141\\103\\126.6851\\-114.3203\\103\\128.0735\\-116.2734\\103\\129.1261\\-118.2266\\103\\130.3223\\-120.1797\\103\\131.1492\\-122.1328\\103\\132.3692\\-124.0859\\103\\133.1818\\-126.0391\\103\\134.2961\\-127.9922\\103\\134.9383\\-129.9453\\103\\136.4996\\-133.8516\\103\\136.9418\\-135.8047\\103\\138.4436\\-139.7109\\103\\138.9337\\-141.6641\\103\\140.3233\\-145.5703\\103\\141.184\\-149.4766\\103\\141.8258\\-151.4297\\103\\142.2213\\-153.3828\\103\\142.9662\\-159.2422\\103\\143.6244\\-163.1484\\103\\144.1883\\-167.0547\\103\\144.3478\\-169.0078\\103\\144.6487\\-174.8672\\103\\144.8287\\-182.6797\\103\\144.8175\\-186.5859\\103\\144.6913\\-192.4453\\103\\144.5519\\-196.3516\\103\\144.245\\-202.2109\\103\\143.7899\\-206.1172\\103\\143.3385\\-208.0703\\103\\143.005\\-210.0234\\103\\142.4888\\-213.9297\\103\\142.1477\\-215.8828\\103\\140.8395\\-219.7891\\103\\140.3051\\-221.7422\\103\\139.3138\\-223.6953\\103\\138.4733\\-225.6484\\103\\137.3943\\-227.6016\\103\\136.5196\\-229.5547\\103\\134.1261\\-233.4609\\103\\131.8359\\-236.3604\\103\\129.1794\\-239.3203\\103\\127.3304\\-241.2734\\103\\122.9616\\-245.1797\\103\\120.1172\\-247.5633\\103\\118.0115\\-249.0859\\103\\116.2109\\-250.2699\\103\\115.2751\\-251.0391\\103\\110.3516\\-254.5561\\103\\106.4453\\-257.4329\\103\\104.4922\\-258.7783\\103\\101.9641\\-260.8047\\103\\98.63281\\-263.3793\\103\\94.72656\\-266.2748\\103\\90.82031\\-269.3529\\103\\88.86719\\-270.811\\103\\86.91406\\-272.0974\\103\\83.00781\\-275.1647\\103\\81.05469\\-276.3106\\103\\79.10156\\-277.567\\103\\77.14844\\-279.1033\\103\\75.19531\\-280.4035\\103\\73.24219\\-281.524\\103\\71.28906\\-282.7841\\103\\69.33594\\-283.6666\\103\\68.58016\\-284.2422\\103\\65.35619\\-286.1953\\103\\61.52344\\-288.3348\\103\\57.61719\\-289.9698\\103\\55.66406\\-290.979\\103\\53.71094\\-291.8157\\103\\51.75781\\-292.8561\\103\\49.80469\\-293.5731\\103\\47.85156\\-294.5182\\103\\43.94531\\-295.5128\\103\\41.99219\\-296.3556\\103\\40.03906\\-296.8692\\103\\38.08594\\-297.2611\\103\\36.13281\\-298.0361\\103\\34.17969\\-298.6312\\103\\30.27344\\-299.4629\\103\\28.32031\\-300.0804\\103\\26.36719\\-300.4344\\103\\24.41406\\-300.6875\\103\\16.60156\\-301.5182\\103\\12.69531\\-301.9931\\103\\10.74219\\-302.1505\\103\\6.835938\\-302.3571\\103\\2.929688\\-302.4526\\103\\-2.929688\\-302.4485\\103\\-6.835938\\-302.3477\\103\\-10.74219\\-302.1505\\103"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002249"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "255"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "178"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-301.9056\\105\\-16.60156\\-301.5944\\105\\-26.36719\\-300.4818\\105\\-28.32031\\-300.1046\\105\\-30.27344\\-299.501\\105\\-34.17969\\-298.6312\\105\\-36.13281\\-298.0627\\105\\-38.08594\\-297.2958\\105\\-41.99219\\-296.4102\\105\\-43.94531\\-295.5444\\105\\-47.85156\\-294.6121\\105\\-49.80469\\-293.7162\\105\\-51.75781\\-292.9699\\105\\-53.71094\\-292.1213\\105\\-55.66406\\-291.1521\\105\\-57.61719\\-290.3642\\105\\-59.57031\\-289.3386\\105\\-61.52344\\-288.7293\\105\\-63.47656\\-287.5714\\105\\-65.42969\\-286.7715\\105\\-67.38281\\-285.4978\\105\\-69.33594\\-284.5677\\105\\-71.28906\\-283.3669\\105\\-73.47523\\-282.2891\\105\\-77.09418\\-280.3359\\105\\-79.10156\\-279.1195\\105\\-81.05469\\-277.726\\105\\-83.00781\\-276.8511\\105\\-84.96094\\-275.6472\\105\\-86.91406\\-274.7525\\105\\-90.42794\\-272.5234\\105\\-90.82031\\-272.2118\\105\\-92.77344\\-271.188\\105\\-94.72656\\-269.8674\\105\\-96.67969\\-269.0598\\105\\-97.277\\-268.6172\\105\\-102.5391\\-265.3875\\105\\-104.4922\\-263.9801\\105\\-106.4453\\-262.9375\\105\\-108.3984\\-261.6735\\105\\-112.3047\\-258.7166\\105\\-114.2578\\-257.3766\\105\\-116.2109\\-255.8276\\105\\-118.1641\\-254.1733\\105\\-121.6202\\-251.0391\\105\\-124.0234\\-248.7197\\105\\-127.281\\-245.1797\\105\\-128.969\\-243.2266\\105\\-130.5493\\-241.2734\\105\\-132.0101\\-239.3203\\105\\-134.7086\\-235.4141\\105\\-135.8302\\-233.4609\\105\\-137.8864\\-229.5547\\105\\-138.7432\\-227.6016\\105\\-139.7611\\-225.6484\\105\\-140.6022\\-223.6953\\105\\-141.3135\\-221.7422\\105\\-142.1718\\-219.7891\\105\\-143.0939\\-215.8828\\105\\-143.7916\\-213.9297\\105\\-144.2654\\-211.9766\\105\\-144.9667\\-208.0703\\105\\-145.9246\\-204.1641\\105\\-146.3682\\-200.2578\\105\\-146.6417\\-196.3516\\105\\-146.7666\\-192.4453\\105\\-146.808\\-188.5391\\105\\-146.5372\\-180.7266\\105\\-146.0699\\-172.9141\\105\\-145.6163\\-169.0078\\105\\-145.2121\\-167.0547\\105\\-144.6931\\-163.1484\\105\\-144.2343\\-159.2422\\105\\-143.8779\\-157.2891\\105\\-143.2996\\-155.3359\\105\\-142.8849\\-153.3828\\105\\-142.2913\\-149.4766\\105\\-141.7704\\-147.5234\\105\\-141.0253\\-145.5703\\105\\-140.5227\\-143.6172\\105\\-139.919\\-141.6641\\105\\-139.0265\\-139.7109\\105\\-138.4948\\-137.7578\\105\\-136.8401\\-133.8516\\105\\-136.2742\\-131.8984\\105\\-135.2539\\-129.9453\\105\\-134.4954\\-127.9922\\105\\-133.2942\\-126.0391\\105\\-132.3303\\-124.0859\\105\\-131.0833\\-122.1328\\105\\-130.1437\\-120.1797\\105\\-128.938\\-118.2266\\105\\-126.2403\\-114.3203\\105\\-124.6585\\-112.3672\\105\\-122.0703\\-109.2925\\105\\-121.2818\\-108.4609\\105\\-116.2109\\-103.8103\\105\\-114.2578\\-102.184\\105\\-112.3047\\-101.0608\\105\\-108.3984\\-98.43082\\105\\-106.4453\\-97.40721\\105\\-104.4922\\-96.12244\\105\\-102.5391\\-95.28759\\105\\-100.5859\\-94.2111\\105\\-98.63281\\-93.61346\\105\\-96.67969\\-92.6476\\105\\-92.77344\\-91.14091\\105\\-90.82031\\-90.24175\\105\\-86.91406\\-89.17558\\105\\-84.96094\\-88.45516\\105\\-83.00781\\-88.08825\\105\\-79.10156\\-87.60807\\105\\-77.14844\\-87.28994\\105\\-73.24219\\-86.55054\\105\\-71.28906\\-86.33144\\105\\-65.42969\\-85.82664\\105\\-63.47656\\-85.73527\\105\\-53.71094\\-85.00072\\105\\-47.85156\\-84.83643\\105\\-43.94531\\-84.58065\\105\\-36.13281\\-84.25217\\105\\-30.27344\\-84.14399\\105\\-26.36719\\-84.11091\\105\\-22.46094\\-84.16209\\105\\-16.60156\\-84.42471\\105\\-12.69531\\-84.72651\\105\\-8.789063\\-85.36523\\105\\-6.835938\\-85.60809\\105\\-2.929688\\-86.38565\\105\\0.9765625\\-87.06534\\105\\2.929688\\-87.034\\105\\4.882813\\-86.67446\\105\\8.789063\\-86.13021\\105\\12.69531\\-85.3157\\105\\14.64844\\-84.67007\\105\\18.55469\\-83.90155\\105\\20.50781\\-83.66985\\105\\24.41406\\-83.35228\\105\\28.32031\\-83.19704\\105\\32.22656\\-83.19514\\105\\36.13281\\-83.37131\\105\\40.03906\\-83.65741\\105\\51.75781\\-84.1669\\105\\59.57031\\-84.6936\\105\\61.52344\\-84.90137\\105\\65.42969\\-85.44381\\105\\73.24219\\-86.14677\\105\\77.14844\\-86.80511\\105\\79.10156\\-87.31158\\105\\81.05469\\-87.6507\\105\\84.96094\\-88.22231\\105\\86.91406\\-88.72993\\105\\88.86719\\-89.43352\\105\\92.77344\\-90.45087\\105\\94.72656\\-91.38345\\105\\96.67969\\-92.02029\\105\\100.5859\\-93.65281\\105\\102.5391\\-94.27327\\105\\104.4922\\-95.39774\\105\\106.4453\\-96.32851\\105\\109.8861\\-98.69531\\105\\110.3516\\-99.08748\\105\\112.3047\\-100.2415\\105\\114.2578\\-101.6781\\105\\116.2109\\-103.3587\\105\\121.5598\\-108.4609\\105\\122.0703\\-109.032\\105\\124.7116\\-112.3672\\105\\126.2008\\-114.3203\\105\\128.7928\\-118.2266\\105\\131.8437\\-124.0859\\105\\133.7891\\-128.0056\\105\\134.6269\\-129.9453\\105\\135.2439\\-131.8984\\105\\136.1427\\-133.8516\\105\\136.689\\-135.8047\\105\\137.1364\\-137.7578\\105\\138.0358\\-139.7109\\105\\139.066\\-143.6172\\105\\139.8631\\-145.5703\\105\\140.3795\\-147.5234\\105\\141.2149\\-151.4297\\105\\141.7851\\-153.3828\\105\\142.1786\\-155.3359\\105\\142.4583\\-157.2891\\105\\143.2459\\-165.1016\\105\\143.6824\\-167.0547\\105\\143.9545\\-169.0078\\105\\144.3148\\-174.8672\\105\\144.4304\\-178.7734\\105\\144.4895\\-182.6797\\105\\144.4949\\-186.5859\\105\\144.442\\-190.4922\\105\\144.2634\\-196.3516\\105\\144.1606\\-198.3047\\105\\143.7899\\-202.2109\\105\\143.1518\\-206.1172\\105\\142.4703\\-211.9766\\105\\142.1348\\-213.9297\\105\\141.6016\\-215.8596\\105\\140.9368\\-217.8359\\105\\140.4351\\-219.7891\\105\\139.7298\\-221.7422\\105\\138.7933\\-223.6953\\105\\138.0076\\-225.6484\\105\\136.903\\-227.6016\\105\\136.0899\\-229.5547\\105\\134.847\\-231.5078\\105\\132.0426\\-235.4141\\105\\128.7179\\-239.3203\\105\\125.9766\\-242.0724\\105\\122.3232\\-245.1797\\105\\117.4229\\-249.0859\\105\\114.2578\\-251.4412\\105\\112.3047\\-252.7663\\105\\108.3984\\-255.8394\\105\\106.4453\\-257.2989\\105\\104.4922\\-258.6423\\105\\100.5859\\-261.8606\\105\\88.86719\\-270.9547\\105\\86.65751\\-272.5234\\105\\83.00781\\-275.2979\\105\\81.05469\\-276.6025\\105\\79.10156\\-277.7338\\105\\77.14844\\-279.2829\\105\\75.19531\\-280.6794\\105\\73.24219\\-281.7018\\105\\71.28906\\-282.9632\\105\\69.33594\\-283.9072\\105\\68.92613\\-284.2422\\105\\65.77485\\-286.1953\\105\\65.42969\\-286.4813\\105\\63.47656\\-287.4099\\105\\61.52344\\-288.5892\\105\\59.57031\\-289.2878\\105\\57.61719\\-290.3039\\105\\55.66406\\-291.1287\\105\\53.71094\\-292.164\\105\\49.80469\\-293.7916\\105\\47.85156\\-294.6769\\105\\45.89844\\-295.1401\\105\\43.94531\\-295.7059\\105\\41.99219\\-296.5372\\105\\38.08594\\-297.4166\\105\\36.13281\\-298.2606\\105\\32.22656\\-299.1321\\105\\28.32031\\-300.2182\\105\\26.36719\\-300.5389\\105\\16.60156\\-301.6489\\105\\12.69531\\-302.1388\\105\\8.789063\\-302.3793\\105\\4.882813\\-302.51\\105\\-0.9765625\\-302.5497\\105\\-6.835938\\-302.461\\105\\-10.74219\\-302.2685\\105"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002248"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "249"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "179"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-302.0608\\107\\-18.55469\\-301.4925\\107\\-26.36719\\-300.5728\\107\\-28.32031\\-300.2389\\107\\-32.22656\\-299.1468\\107\\-36.13281\\-298.2606\\107\\-38.08594\\-297.4351\\107\\-41.99219\\-296.566\\107\\-43.94531\\-295.7186\\107\\-45.89844\\-295.1421\\107\\-47.85156\\-294.724\\107\\-51.75781\\-293.0884\\107\\-53.71094\\-292.3516\\107\\-55.66406\\-291.2561\\107\\-57.61719\\-290.5349\\107\\-59.57031\\-289.4236\\107\\-61.52344\\-288.81\\107\\-63.47656\\-287.68\\107\\-65.42969\\-286.8601\\107\\-67.38281\\-285.577\\107\\-69.33594\\-284.6389\\107\\-71.28906\\-283.4163\\107\\-73.57124\\-282.2891\\107\\-77.03168\\-280.3359\\107\\-79.10156\\-279.0862\\107\\-81.05469\\-277.6689\\107\\-83.00781\\-276.7575\\107\\-84.96094\\-275.5514\\107\\-86.91406\\-274.5156\\107\\-88.86719\\-273.3519\\107\\-90.82031\\-271.94\\107\\-92.77344\\-270.9138\\107\\-94.72656\\-269.6712\\107\\-96.67969\\-268.6746\\107\\-98.63281\\-267.4679\\107\\-100.5859\\-266.0552\\107\\-102.5391\\-264.9162\\107\\-106.4453\\-262.3044\\107\\-108.3984\\-261.2272\\107\\-112.3047\\-258.1048\\107\\-116.2109\\-255.3039\\107\\-118.1641\\-253.5894\\107\\-118.7326\\-252.9922\\107\\-120.9322\\-251.0391\\107\\-124.0234\\-248.005\\107\\-128.3993\\-243.2266\\107\\-129.8912\\-241.2734\\107\\-131.2008\\-239.3203\\107\\-134.15\\-235.4141\\107\\-135.1497\\-233.4609\\107\\-136.3458\\-231.5078\\107\\-137.1189\\-229.5547\\107\\-138.2457\\-227.6016\\107\\-138.956\\-225.6484\\107\\-140.0482\\-223.6953\\107\\-140.7392\\-221.7422\\107\\-142.2289\\-217.8359\\107\\-143.0397\\-213.9297\\107\\-143.6691\\-211.9766\\107\\-144.1838\\-210.0234\\107\\-145.1159\\-204.1641\\107\\-145.8398\\-200.2578\\107\\-146.1936\\-196.3516\\107\\-146.3216\\-192.4453\\107\\-146.3741\\-188.5391\\107\\-146.1348\\-180.7266\\107\\-145.8772\\-176.8203\\107\\-145.5078\\-173.4311\\107\\-145.1643\\-170.9609\\107\\-144.7409\\-167.0547\\107\\-144.1767\\-161.1953\\107\\-143.7916\\-159.2422\\107\\-143.2705\\-157.2891\\107\\-142.8974\\-155.3359\\107\\-142.3598\\-151.4297\\107\\-141.9498\\-149.4766\\107\\-141.2362\\-147.5234\\107\\-140.2186\\-143.6172\\107\\-139.3684\\-141.6641\\107\\-138.1806\\-137.7578\\107\\-137.1872\\-135.8047\\107\\-136.6272\\-133.8516\\107\\-135.9634\\-131.8984\\107\\-134.967\\-129.9453\\107\\-134.173\\-127.9922\\107\\-132.9614\\-126.0391\\107\\-131.9328\\-124.0859\\107\\-130.7883\\-122.1328\\107\\-128.6048\\-118.2266\\107\\-125.9766\\-114.7842\\107\\-125.5516\\-114.3203\\107\\-122.5972\\-110.4141\\107\\-120.1172\\-107.8541\\107\\-116.2109\\-104.3385\\107\\-114.0185\\-102.6016\\107\\-110.3516\\-100.0531\\107\\-108.3984\\-99.02326\\107\\-107.9839\\-98.69531\\107\\-104.7247\\-96.74219\\107\\-100.5859\\-94.59833\\107\\-96.67969\\-93.19948\\107\\-94.72656\\-92.22768\\107\\-92.77344\\-91.56292\\107\\-90.82031\\-90.7033\\107\\-88.86719\\-90.04819\\107\\-86.91406\\-89.60979\\107\\-83.00781\\-88.40487\\107\\-81.05469\\-88.12\\107\\-75.19531\\-87.40983\\107\\-71.28906\\-86.73785\\107\\-67.38281\\-86.28555\\107\\-61.52344\\-85.90567\\107\\-53.71094\\-85.46854\\107\\-47.85156\\-85.2797\\107\\-43.94531\\-84.888\\107\\-40.03906\\-84.63405\\107\\-36.13281\\-84.45473\\107\\-30.27344\\-84.30067\\107\\-26.36719\\-84.30067\\107\\-20.50781\\-84.46293\\107\\-16.60156\\-84.68515\\107\\-12.69531\\-85.1234\\107\\-6.835938\\-85.95265\\107\\-4.882813\\-86.3156\\107\\-0.9765625\\-87.31909\\107\\0.9765625\\-87.59021\\107\\2.929688\\-87.5811\\107\\4.882813\\-87.2673\\107\\8.789063\\-86.53744\\107\\12.69531\\-85.72534\\107\\16.60156\\-84.58338\\107\\18.55469\\-84.19574\\107\\22.46094\\-83.78957\\107\\24.41406\\-83.66344\\107\\28.32031\\-83.55233\\107\\32.22656\\-83.51477\\107\\36.13281\\-83.60682\\107\\40.03906\\-83.82865\\107\\45.89844\\-84.08485\\107\\49.80469\\-84.28963\\107\\53.71094\\-84.55587\\107\\57.61719\\-84.9287\\107\\63.47656\\-85.58754\\107\\69.33594\\-86.05968\\107\\73.24219\\-86.46623\\107\\77.14844\\-87.29969\\107\\79.10156\\-87.6507\\107\\83.00781\\-88.16675\\107\\84.96094\\-88.55999\\107\\86.91406\\-89.2926\\107\\90.82031\\-90.26815\\107\\92.77344\\-91.06102\\107\\96.67969\\-92.3971\\107\\98.63281\\-93.3208\\107\\100.5859\\-93.92306\\107\\102.5391\\-94.73209\\107\\104.4922\\-95.75945\\107\\108.3984\\-98.1364\\107\\112.3047\\-100.9197\\107\\114.2578\\-102.1061\\107\\116.2109\\-103.7804\\107\\121.0801\\-108.4609\\107\\122.7944\\-110.4141\\107\\125.5132\\-114.3203\\107\\125.9766\\-114.8493\\107\\128.3736\\-118.2266\\107\\129.312\\-120.1797\\107\\130.5191\\-122.1328\\107\\131.2695\\-124.0859\\107\\132.4327\\-126.0391\\107\\133.2069\\-127.9922\\107\\134.2711\\-129.9453\\107\\134.8943\\-131.8984\\107\\136.408\\-135.8047\\107\\136.8266\\-137.7578\\107\\137.4111\\-139.7109\\107\\138.2041\\-141.6641\\107\\139.1849\\-145.5703\\107\\139.9208\\-147.5234\\107\\140.4097\\-149.4766\\107\\141.1668\\-153.3828\\107\\141.6855\\-155.3359\\107\\142.08\\-157.2891\\107\\142.3598\\-159.2422\\107\\143.05\\-167.0547\\107\\143.6974\\-172.9141\\107\\143.9909\\-176.8203\\107\\144.1606\\-182.6797\\107\\144.1153\\-190.4922\\107\\143.8042\\-196.3516\\107\\142.9523\\-204.1641\\107\\142.6079\\-208.0703\\107\\142.1029\\-211.9766\\107\\140.9875\\-215.8828\\107\\140.5289\\-217.8359\\107\\139.9565\\-219.7891\\107\\139.0381\\-221.7422\\107\\138.3929\\-223.6953\\107\\137.3175\\-225.6484\\107\\136.5642\\-227.6016\\107\\134.3763\\-231.5078\\107\\131.8359\\-234.8234\\107\\129.8828\\-237.2451\\107\\128.0692\\-239.3203\\107\\125.9766\\-241.4402\\107\\122.0703\\-244.7534\\107\\118.1641\\-248.1411\\107\\116.2109\\-249.7166\\107\\112.3047\\-252.4461\\107\\108.3984\\-255.7279\\107\\104.4922\\-258.5586\\107\\101.8905\\-260.8047\\107\\94.59577\\-266.6641\\107\\89.58549\\-270.5703\\107\\83.00781\\-275.4341\\107\\81.05469\\-276.8405\\107\\79.10156\\-277.9556\\107\\75.19531\\-280.9181\\107\\73.24219\\-281.8998\\107\\72.68847\\-282.2891\\107\\69.33594\\-284.2798\\107\\67.38281\\-285.3732\\107\\65.42969\\-286.7274\\107\\63.47656\\-287.6176\\107\\61.52344\\-288.8016\\107\\59.57031\\-289.4274\\107\\57.61719\\-290.5629\\107\\55.66406\\-291.2957\\107\\53.71094\\-292.4516\\107\\51.75781\\-293.1654\\107\\49.80469\\-294.0765\\107\\47.85156\\-294.8138\\107\\45.89844\\-295.2546\\107\\41.99219\\-296.6737\\107\\40.03906\\-297.0642\\107\\38.08594\\-297.6089\\107\\36.13281\\-298.4277\\107\\32.22656\\-299.2519\\107\\30.20198\\-299.8672\\107\\28.32031\\-300.3405\\107\\26.36719\\-300.6136\\107\\18.55469\\-301.5302\\107\\14.64844\\-302.0735\\107\\12.69531\\-302.2581\\107\\8.789063\\-302.4734\\107\\4.882813\\-302.5956\\107\\-2.929688\\-302.6145\\107\\-6.835938\\-302.5497\\107\\-10.74219\\-302.3921\\107"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002247"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "245"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "180"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-301.9931\\109\\-20.50781\\-301.3722\\109\\-26.36719\\-300.654\\109\\-28.32031\\-300.3525\\109\\-30.27344\\-299.8748\\109\\-32.22656\\-299.264\\109\\-36.13281\\-298.4277\\109\\-38.08594\\-297.6068\\109\\-40.03906\\-297.0628\\109\\-41.99219\\-296.6808\\109\\-45.89844\\-295.2456\\109\\-47.85156\\-294.8187\\109\\-49.80469\\-294.1473\\109\\-51.75781\\-293.2103\\109\\-53.71094\\-292.528\\109\\-55.66406\\-291.3803\\109\\-57.61719\\-290.6797\\109\\-59.57031\\-289.5207\\109\\-61.52344\\-288.8963\\109\\-63.47656\\-287.8323\\109\\-65.42969\\-286.9363\\109\\-67.38281\\-285.6709\\109\\-69.33594\\-284.7334\\109\\-71.28906\\-283.4622\\109\\-73.24219\\-282.5754\\109\\-73.64309\\-282.2891\\109\\-77.0529\\-280.3359\\109\\-79.10156\\-279.0753\\109\\-81.05469\\-277.632\\109\\-83.32987\\-276.4297\\109\\-88.86719\\-273.2025\\109\\-90.82031\\-271.7365\\109\\-92.77344\\-270.562\\109\\-94.72656\\-269.5088\\109\\-96.67969\\-268.2537\\109\\-98.63281\\-267.1458\\109\\-99.20313\\-266.6641\\109\\-102.0713\\-264.7109\\109\\-102.5391\\-264.3016\\109\\-104.4922\\-263.2531\\109\\-108.0698\\-260.8047\\109\\-110.3516\\-259.1649\\109\\-116.2109\\-254.5138\\109\\-120.1172\\-250.8534\\109\\-122.0703\\-249.3057\\109\\-124.0234\\-247.2142\\109\\-127.9297\\-242.7993\\109\\-129.8828\\-240.3321\\109\\-132.0555\\-237.3672\\109\\-134.6079\\-233.4609\\109\\-136.6166\\-229.5547\\109\\-137.4152\\-227.6016\\109\\-138.4277\\-225.6484\\109\\-139.1569\\-223.6953\\109\\-140.2039\\-221.7422\\109\\-140.7936\\-219.7891\\109\\-142.194\\-215.8828\\109\\-142.941\\-211.9766\\109\\-143.9909\\-208.0703\\109\\-144.3257\\-206.1172\\109\\-145.6835\\-194.3984\\109\\-145.8268\\-190.4922\\109\\-145.8047\\-186.5859\\109\\-145.6163\\-182.6797\\109\\-145.1185\\-176.8203\\109\\-144.2192\\-165.1016\\109\\-143.988\\-163.1484\\109\\-143.1461\\-159.2422\\109\\-142.3523\\-153.3828\\109\\-141.9772\\-151.4297\\109\\-140.797\\-147.5234\\109\\-140.3562\\-145.5703\\109\\-138.9216\\-141.6641\\109\\-138.4318\\-139.7109\\109\\-136.8695\\-135.8047\\109\\-136.369\\-133.8516\\109\\-135.4411\\-131.8984\\109\\-134.6763\\-129.9453\\109\\-132.616\\-126.0391\\109\\-131.392\\-124.0859\\109\\-130.5106\\-122.1328\\109\\-129.2477\\-120.1797\\109\\-128.1357\\-118.2266\\109\\-126.6819\\-116.2734\\109\\-121.8921\\-110.4141\\109\\-120.1172\\-108.581\\109\\-115.7148\\-104.5547\\109\\-112.3047\\-101.8008\\109\\-110.3516\\-100.5284\\109\\-108.3984\\-99.45766\\109\\-106.4453\\-98.12962\\109\\-104.4922\\-97.1451\\109\\-102.5391\\-95.95972\\109\\-100.5859\\-95.13581\\109\\-98.63281\\-94.11446\\109\\-96.67969\\-93.57145\\109\\-94.72656\\-92.64893\\109\\-92.77344\\-91.92484\\109\\-90.82031\\-91.29851\\109\\-88.86719\\-90.43258\\109\\-84.96094\\-89.52173\\109\\-81.05469\\-88.45151\\109\\-79.10156\\-88.15217\\109\\-73.24219\\-87.54511\\109\\-71.28906\\-87.30451\\109\\-67.38281\\-86.66267\\109\\-61.52344\\-86.20766\\109\\-55.66406\\-85.93226\\109\\-53.71094\\-85.78164\\109\\-47.85156\\-85.59753\\109\\-40.03906\\-84.94267\\109\\-36.13281\\-84.69791\\109\\-30.27344\\-84.5322\\109\\-26.36719\\-84.5322\\109\\-22.46094\\-84.6365\\109\\-16.60156\\-85.01581\\109\\-10.74219\\-85.68062\\109\\-6.835938\\-86.29178\\109\\-4.882813\\-86.70058\\109\\-2.929688\\-87.38287\\109\\-0.9765625\\-87.73611\\109\\0.9765625\\-87.90399\\109\\2.929688\\-87.88599\\109\\6.835938\\-87.47182\\109\\8.789063\\-87.08148\\109\\10.74219\\-86.52734\\109\\14.64844\\-85.62679\\109\\18.55469\\-84.616\\109\\22.46094\\-84.07594\\109\\24.41406\\-83.939\\109\\32.22656\\-83.76786\\109\\36.13281\\-83.80979\\109\\45.89844\\-84.25653\\109\\51.75781\\-84.69791\\109\\57.61719\\-85.37553\\109\\69.33594\\-86.33533\\109\\71.28906\\-86.57132\\109\\75.19531\\-87.32584\\109\\77.14844\\-87.6424\\109\\81.05469\\-88.11588\\109\\83.00781\\-88.49492\\109\\86.91406\\-89.68131\\109\\88.86719\\-90.10262\\109\\90.82031\\-90.71886\\109\\92.77344\\-91.54734\\109\\94.72656\\-92.07334\\109\\96.67969\\-92.92471\\109\\98.63281\\-93.66509\\109\\100.5859\\-94.23389\\109\\102.5391\\-95.26695\\109\\104.4922\\-96.15887\\109\\106.4453\\-97.49194\\109\\110.3516\\-100.0042\\109\\114.0527\\-102.6016\\109\\116.2109\\-104.3691\\109\\120.1172\\-108.0509\\109\\122.2796\\-110.4141\\109\\123.5574\\-112.3672\\109\\126.5892\\-116.2734\\109\\127.9297\\-118.4374\\109\\130.075\\-122.1328\\109\\130.8945\\-124.0859\\109\\131.9328\\-126.0391\\109\\133.7891\\-130.0945\\109\\134.5576\\-131.8984\\109\\135.1318\\-133.8516\\109\\135.9863\\-135.8047\\109\\136.5519\\-137.7578\\109\\136.9644\\-139.7109\\109\\137.5625\\-141.6641\\109\\138.3188\\-143.6172\\109\\139.1944\\-147.5234\\109\\139.9208\\-149.4766\\109\\140.3902\\-151.4297\\109\\141.0461\\-155.3359\\109\\141.9155\\-159.2422\\109\\142.4033\\-163.1484\\109\\142.56\\-165.1016\\109\\143.285\\-176.8203\\109\\143.5785\\-182.6797\\109\\143.5785\\-186.5859\\109\\143.4991\\-190.4922\\109\\143.2339\\-194.3984\\109\\143.0238\\-198.3047\\109\\142.4888\\-206.1172\\109\\142.2956\\-208.0703\\109\\141.9772\\-210.0234\\109\\140.9563\\-213.9297\\109\\140.0776\\-217.8359\\109\\139.1982\\-219.7891\\109\\138.5874\\-221.7422\\109\\137.8192\\-223.6953\\109\\136.8556\\-225.6484\\109\\136.1228\\-227.6016\\109\\133.7891\\-231.3145\\109\\132.3369\\-233.4609\\109\\129.8828\\-236.4982\\109\\127.314\\-239.3203\\109\\124.0234\\-242.578\\109\\122.0703\\-244.2506\\109\\121.1215\\-245.1797\\109\\118.8217\\-247.1328\\109\\118.1641\\-247.7861\\109\\116.2109\\-249.3987\\109\\114.2578\\-250.6646\\109\\112.3047\\-252.2193\\109\\108.3984\\-255.6209\\109\\104.4922\\-258.5285\\109\\101.9149\\-260.8047\\109\\94.72656\\-266.7448\\109\\90.82031\\-269.6927\\109\\89.79762\\-270.5703\\109\\86.91406\\-272.8213\\109\\81.05469\\-277.0423\\109\\79.10156\\-278.2665\\109\\75.19531\\-281.1184\\109\\71.28906\\-283.3083\\109\\69.33594\\-284.6241\\109\\67.38281\\-285.6227\\109\\65.42969\\-286.938\\109\\63.47656\\-287.8914\\109\\61.52344\\-288.9673\\109\\59.57031\\-289.6033\\109\\57.61719\\-290.7835\\109\\55.66406\\-291.5109\\109\\53.71094\\-292.6664\\109\\51.75781\\-293.3549\\109\\49.80469\\-294.3401\\109\\47.85156\\-294.9432\\109\\45.89844\\-295.3983\\109\\43.94531\\-296.2369\\109\\41.99219\\-296.7836\\109\\40.03906\\-297.1953\\109\\36.13281\\-298.5599\\109\\32.22656\\-299.3972\\109\\30.27344\\-300.0416\\109\\28.32031\\-300.4474\\109\\20.50781\\-301.4066\\109\\16.60156\\-301.9931\\109\\12.69531\\-302.37\\109\\6.835938\\-302.6263\\109\\0.9765625\\-302.7003\\109\\-4.882813\\-302.6697\\109\\-10.74219\\-302.5021\\109\\-14.64844\\-302.2232\\109"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002246"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "246"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "181"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-301.4925\\111\\-28.32031\\-300.4589\\111\\-30.27344\\-300.0666\\111\\-32.22656\\-299.4227\\111\\-36.13281\\-298.5668\\111\\-40.03906\\-297.1857\\111\\-41.99219\\-296.7791\\111\\-43.94531\\-296.1723\\111\\-45.89844\\-295.3724\\111\\-47.85156\\-294.9134\\111\\-49.80469\\-294.3265\\111\\-51.75781\\-293.3357\\111\\-53.71094\\-292.6629\\111\\-55.66406\\-291.5141\\111\\-57.61719\\-290.8045\\111\\-59.57031\\-289.6331\\111\\-61.52344\\-288.9984\\111\\-65.42969\\-287.0299\\111\\-67.38281\\-285.8008\\111\\-69.33594\\-284.817\\111\\-71.28906\\-283.5067\\111\\-73.24219\\-282.6146\\111\\-75.19531\\-281.4029\\111\\-77.09478\\-280.3359\\111\\-79.10156\\-279.0598\\111\\-81.05469\\-277.6095\\111\\-83.00781\\-276.5746\\111\\-84.96094\\-275.404\\111\\-86.91406\\-274.1354\\111\\-88.86719\\-273.0384\\111\\-90.82031\\-271.5807\\111\\-92.77344\\-270.221\\111\\-94.72656\\-269.3257\\111\\-96.67969\\-267.9381\\111\\-98.63281\\-266.6883\\111\\-101.5302\\-264.7109\\111\\-102.5391\\-263.9131\\111\\-106.4453\\-261.4967\\111\\-112.3047\\-256.89\\111\\-114.2578\\-255.5617\\111\\-116.2109\\-253.8641\\111\\-120.1172\\-250.1471\\111\\-122.0703\\-248.4273\\111\\-126.847\\-243.2266\\111\\-128.5453\\-241.2734\\111\\-131.1826\\-237.3672\\111\\-131.8359\\-236.5184\\111\\-133.8882\\-233.4609\\111\\-136.0092\\-229.5547\\111\\-136.8001\\-227.6016\\111\\-138.5448\\-223.6953\\111\\-139.284\\-221.7422\\111\\-140.2196\\-219.7891\\111\\-141.3756\\-215.8828\\111\\-142.0591\\-213.9297\\111\\-142.4786\\-211.9766\\111\\-143.1183\\-208.0703\\111\\-144.0397\\-204.1641\\111\\-144.2929\\-202.2109\\111\\-144.6094\\-198.3047\\111\\-144.8468\\-194.3984\\111\\-144.9632\\-190.4922\\111\\-144.9667\\-186.5859\\111\\-144.7052\\-178.7734\\111\\-144.3988\\-172.9141\\111\\-144.1048\\-169.0078\\111\\-143.5941\\-165.1016\\111\\-142.9532\\-161.1953\\111\\-142.2796\\-155.3359\\111\\-141.8796\\-153.3828\\111\\-141.3058\\-151.4297\\111\\-140.4026\\-147.5234\\111\\-139.8253\\-145.5703\\111\\-139.019\\-143.6172\\111\\-138.0034\\-139.7109\\111\\-137.0939\\-137.7578\\111\\-136.589\\-135.8047\\111\\-135.9219\\-133.8516\\111\\-134.9847\\-131.8984\\111\\-134.2678\\-129.9453\\111\\-133.0906\\-127.9922\\111\\-132.1706\\-126.0391\\111\\-130.9792\\-124.0859\\111\\-130.0904\\-122.1328\\111\\-128.8737\\-120.1797\\111\\-126.1561\\-116.2734\\111\\-123.0259\\-112.3672\\111\\-121.2773\\-110.4141\\111\\-118.1641\\-107.2963\\111\\-115.1199\\-104.5547\\111\\-112.3047\\-102.2834\\111\\-109.7636\\-100.6484\\111\\-106.4453\\-98.6277\\111\\-104.4922\\-97.61349\\111\\-102.5391\\-96.32366\\111\\-100.5859\\-95.52759\\111\\-98.63281\\-94.47569\\111\\-94.72656\\-93.23354\\111\\-92.77344\\-92.3147\\111\\-90.82031\\-91.75893\\111\\-86.91406\\-90.31217\\111\\-83.00781\\-89.49731\\111\\-79.10156\\-88.51517\\111\\-75.19531\\-87.98952\\111\\-71.28906\\-87.67591\\111\\-65.42969\\-87.03306\\111\\-61.52344\\-86.54037\\111\\-59.57031\\-86.40033\\111\\-55.66406\\-86.21889\\111\\-49.80469\\-85.88214\\111\\-47.85156\\-85.82345\\111\\-41.99219\\-85.46384\\111\\-36.13281\\-85.01581\\111\\-32.22656\\-84.90137\\111\\-26.36719\\-84.79964\\111\\-22.46094\\-84.98588\\111\\-16.60156\\-85.37553\\111\\-12.69531\\-85.72013\\111\\-8.789063\\-86.30003\\111\\-6.835938\\-86.63958\\111\\-2.929688\\-87.73891\\111\\0.9765625\\-88.15971\\111\\2.929688\\-88.12729\\111\\6.835938\\-87.84116\\111\\8.789063\\-87.60341\\111\\12.69531\\-86.44102\\111\\14.64844\\-85.93529\\111\\20.50781\\-84.71331\\111\\22.46094\\-84.43871\\111\\26.36719\\-84.11901\\111\\32.22656\\-83.97635\\111\\38.08594\\-84.04688\\111\\45.89844\\-84.46948\\111\\49.80469\\-84.81174\\111\\53.71094\\-85.31709\\111\\55.66406\\-85.51172\\111\\61.52344\\-85.94032\\111\\67.38281\\-86.42993\\111\\69.33594\\-86.67662\\111\\73.24219\\-87.37416\\111\\75.19531\\-87.65508\\111\\79.10156\\-88.09692\\111\\81.05469\\-88.3929\\111\\84.96094\\-89.55539\\111\\88.86719\\-90.4687\\111\\90.82031\\-91.32322\\111\\94.72656\\-92.49317\\111\\96.67969\\-93.4139\\111\\98.63281\\-93.94934\\111\\102.5391\\-95.69676\\111\\104.4806\\-96.74219\\111\\107.5627\\-98.69531\\111\\108.3984\\-99.32059\\111\\112.3047\\-101.7969\\111\\115.6586\\-104.5547\\111\\120.1172\\-108.789\\111\\121.582\\-110.4141\\111\\124.6378\\-114.3203\\111\\125.9996\\-116.2734\\111\\128.5608\\-120.1797\\111\\129.448\\-122.1328\\111\\130.5857\\-124.0859\\111\\131.3039\\-126.0391\\111\\132.4016\\-127.9922\\111\\133.1281\\-129.9453\\111\\134.1302\\-131.8984\\111\\135.3698\\-135.8047\\111\\136.1677\\-137.7578\\111\\136.646\\-139.7109\\111\\137.0136\\-141.6641\\111\\138.3334\\-145.5703\\111\\139.1478\\-149.4766\\111\\139.8241\\-151.4297\\111\\140.275\\-153.3828\\111\\140.8395\\-157.2891\\111\\141.9409\\-163.1484\\111\\142.1913\\-165.1016\\111\\142.4756\\-169.0078\\111\\142.686\\-172.9141\\111\\142.97\\-182.6797\\111\\142.9572\\-188.5391\\111\\142.8889\\-192.4453\\111\\142.5781\\-200.2578\\111\\142.3\\-204.1641\\111\\142.0931\\-206.1172\\111\\141.7581\\-208.0703\\111\\141.2581\\-210.0234\\111\\140.5029\\-213.9297\\111\\140.0679\\-215.8828\\111\\139.2723\\-217.8359\\111\\138.1022\\-221.7422\\111\\137.1041\\-223.6953\\111\\136.4841\\-225.6484\\111\\135.3903\\-227.6016\\111\\134.4069\\-229.5547\\111\\133.7891\\-230.3376\\111\\130.1804\\-235.4141\\111\\128.5335\\-237.3672\\111\\124.0234\\-242.0475\\111\\120.6167\\-245.1797\\111\\118.1641\\-247.3594\\111\\116.1066\\-249.0859\\111\\114.2578\\-250.3902\\111\\112.3047\\-252.0099\\111\\110.3516\\-253.819\\111\\108.3984\\-255.5243\\111\\104.4922\\-258.5412\\111\\101.9546\\-260.8047\\111\\99.57862\\-262.7578\\111\\94.72656\\-266.9557\\111\\90.82031\\-269.8532\\111\\86.91406\\-273.0422\\111\\84.96094\\-274.5504\\111\\83.00781\\-275.8033\\111\\82.23815\\-276.4297\\111\\79.40383\\-278.3828\\111\\79.10156\\-278.667\\111\\75.19531\\-281.3125\\111\\73.24219\\-282.5237\\111\\71.28906\\-283.505\\111\\69.33594\\-284.8801\\111\\63.47656\\-288.25\\111\\59.57031\\-289.8854\\111\\57.61719\\-290.9586\\111\\55.66406\\-291.814\\111\\53.71094\\-292.8537\\111\\51.75781\\-293.5802\\111\\49.80469\\-294.5468\\111\\45.89844\\-295.5689\\111\\43.94531\\-296.4396\\111\\40.03906\\-297.3434\\111\\38.08594\\-298.1616\\111\\36.13281\\-298.6904\\111\\34.17969\\-299.0808\\111\\32.22656\\-299.5891\\111\\30.27344\\-300.216\\111\\28.32031\\-300.5463\\111\\20.50781\\-301.5423\\111\\16.60156\\-302.1621\\111\\12.69531\\-302.4817\\111\\6.835938\\-302.7003\\111\\0.9765625\\-302.7748\\111\\-4.882813\\-302.7411\\111\\-10.74219\\-302.5956\\111\\-14.64844\\-302.3477\\111\\-16.60156\\-302.1505\\111"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002245"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "252"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "182"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-302.0201\\113\\-20.50781\\-301.6353\\113\\-24.41406\\-301.0594\\113\\-28.32031\\-300.5575\\113\\-30.27344\\-300.216\\113\\-32.22656\\-299.599\\113\\-36.13281\\-298.6807\\113\\-38.08594\\-298.1258\\113\\-40.03906\\-297.3144\\113\\-43.94531\\-296.3662\\113\\-45.89844\\-295.5097\\113\\-49.80469\\-294.4865\\113\\-51.75781\\-293.4857\\113\\-53.71094\\-292.7712\\113\\-55.66406\\-291.6703\\113\\-57.61719\\-290.9128\\113\\-59.57031\\-289.7831\\113\\-61.52344\\-289.0895\\113\\-63.47656\\-288.2036\\113\\-69.33594\\-284.9023\\113\\-71.28906\\-283.5555\\113\\-73.24219\\-282.6755\\113\\-75.19531\\-281.4391\\113\\-77.14844\\-280.3439\\113\\-79.10156\\-279.0676\\113\\-81.05469\\-277.5869\\113\\-83.00781\\-276.5305\\113\\-84.96094\\-275.3412\\113\\-86.91406\\-274.0106\\113\\-88.86719\\-272.8722\\113\\-92.06543\\-270.5703\\113\\-92.77344\\-270.0001\\113\\-94.72656\\-269.0845\\113\\-98.63281\\-266.2018\\113\\-100.5859\\-264.9833\\113\\-104.4922\\-262.2309\\113\\-106.4453\\-260.9788\\113\\-108.3984\\-259.5005\\113\\-112.3047\\-256.2726\\113\\-114.0498\\-254.9453\\113\\-116.2109\\-253.125\\113\\-118.4372\\-251.0391\\113\\-120.1172\\-249.592\\113\\-122.6519\\-247.1328\\113\\-126.0173\\-243.2266\\113\\-127.9297\\-240.9326\\113\\-130.5496\\-237.3672\\113\\-133.7891\\-232.2136\\113\\-134.2876\\-231.5078\\113\\-135.1617\\-229.5547\\113\\-136.2817\\-227.6016\\113\\-136.9128\\-225.6484\\113\\-137.8762\\-223.6953\\113\\-139.2755\\-219.7891\\113\\-140.1772\\-217.8359\\113\\-141.183\\-213.9297\\113\\-141.8566\\-211.9766\\113\\-142.31\\-210.0234\\113\\-143.1655\\-204.1641\\113\\-143.8802\\-200.2578\\113\\-144.1083\\-198.3047\\113\\-144.3325\\-194.3984\\113\\-144.427\\-190.4922\\113\\-144.439\\-186.5859\\113\\-144.3894\\-182.6797\\113\\-144.1799\\-176.8203\\113\\-143.8802\\-172.9141\\113\\-143.6546\\-170.9609\\113\\-143.1003\\-167.0547\\113\\-142.5781\\-161.1953\\113\\-142.1193\\-157.2891\\113\\-141.716\\-155.3359\\113\\-141.1553\\-153.3828\\113\\-140.3795\\-149.4766\\113\\-139.8507\\-147.5234\\113\\-139.0553\\-145.5703\\113\\-138.0772\\-141.6641\\113\\-137.3119\\-139.7109\\113\\-136.188\\-135.8047\\113\\-135.2782\\-133.8516\\113\\-134.6029\\-131.8984\\113\\-132.6788\\-127.9922\\113\\-131.5178\\-126.0391\\113\\-130.6431\\-124.0859\\113\\-129.4592\\-122.1328\\113\\-128.463\\-120.1797\\113\\-127.0203\\-118.2266\\113\\-125.4433\\-116.2734\\113\\-124.0316\\-114.3203\\113\\-122.4594\\-112.3672\\113\\-120.7092\\-110.4141\\113\\-118.1641\\-107.8793\\113\\-114.2578\\-104.4445\\113\\-111.8738\\-102.6016\\113\\-108.3984\\-100.2058\\113\\-106.4453\\-99.23711\\113\\-104.4922\\-97.96733\\113\\-100.5859\\-95.83943\\113\\-96.67969\\-94.09334\\113\\-94.72656\\-93.62078\\113\\-90.82031\\-92.10491\\113\\-88.86719\\-91.5676\\113\\-86.91406\\-90.83023\\113\\-84.96094\\-90.23748\\113\\-81.05469\\-89.55059\\113\\-77.14844\\-88.64116\\113\\-75.19531\\-88.27649\\113\\-69.33594\\-87.76887\\113\\-65.42969\\-87.52423\\113\\-61.52344\\-87.03306\\113\\-57.61719\\-86.61713\\113\\-45.89844\\-85.92276\\113\\-41.99219\\-85.72179\\113\\-36.13281\\-85.35574\\113\\-30.27344\\-85.30343\\113\\-26.36719\\-85.17999\\113\\-16.60156\\-85.62855\\113\\-14.64844\\-85.79441\\113\\-10.74219\\-86.25967\\113\\-8.789063\\-86.60614\\113\\-4.882813\\-87.61683\\113\\-2.929688\\-87.96526\\113\\0.9765625\\-88.46892\\113\\2.929688\\-88.45516\\113\\8.789063\\-87.89819\\113\\10.74219\\-87.5811\\113\\14.64844\\-86.29178\\113\\16.60156\\-85.86787\\113\\18.55469\\-85.58418\\113\\22.46094\\-84.84779\\113\\26.36719\\-84.43522\\113\\30.27344\\-84.23447\\113\\34.17969\\-84.16964\\113\\38.08594\\-84.24331\\113\\45.89844\\-84.67692\\113\\47.85156\\-84.824\\113\\51.75781\\-85.37315\\113\\55.66406\\-85.73214\\113\\59.57031\\-85.9839\\113\\63.47656\\-86.31595\\113\\67.38281\\-86.77979\\113\\71.28906\\-87.43094\\113\\73.24219\\-87.69188\\113\\77.14844\\-88.07295\\113\\79.10156\\-88.33115\\113\\81.05469\\-88.78696\\113\\83.00781\\-89.43352\\113\\86.91406\\-90.28571\\113\\88.86719\\-91.06232\\113\\90.82031\\-91.71289\\113\\92.77344\\-92.23978\\113\\94.72656\\-93.10967\\113\\96.67969\\-93.75185\\113\\98.63281\\-94.29053\\113\\100.5859\\-95.31033\\113\\102.5391\\-96.08476\\113\\104.4922\\-97.38223\\113\\106.4453\\-98.5\\113\\112.3047\\-102.3613\\113\\115.0625\\-104.5547\\113\\118.1641\\-107.4042\\113\\120.1172\\-109.3887\\113\\122.7144\\-112.3672\\113\\124.1101\\-114.3203\\113\\125.3451\\-116.2734\\113\\126.7913\\-118.2266\\113\\128.0625\\-120.1797\\113\\129.0394\\-122.1328\\113\\130.1437\\-124.0859\\113\\130.92\\-126.0391\\113\\132.7046\\-129.9453\\113\\133.4383\\-131.8984\\113\\134.3858\\-133.8516\\113\\135.5378\\-137.7578\\113\\136.284\\-139.7109\\113\\137.0546\\-143.6172\\113\\138.3036\\-147.5234\\113\\139.0417\\-151.4297\\113\\140.1155\\-155.3359\\113\\141.2018\\-163.1484\\113\\141.5482\\-165.1016\\113\\142.0569\\-169.0078\\113\\142.3355\\-172.9141\\113\\142.5302\\-178.7734\\113\\142.6079\\-182.6797\\113\\142.5901\\-188.5391\\113\\142.5359\\-192.4453\\113\\142.4223\\-196.3516\\113\\142.2127\\-200.2578\\113\\141.7581\\-204.1641\\113\\141.0304\\-208.0703\\113\\140.4026\\-211.9766\\113\\139.9696\\-213.9297\\113\\139.2437\\-215.8828\\113\\138.2102\\-219.7891\\113\\137.3061\\-221.7422\\113\\136.6819\\-223.6953\\113\\135.9205\\-225.6484\\113\\133.7891\\-229.3988\\113\\132.3836\\-231.5078\\113\\130.8281\\-233.4609\\113\\129.8828\\-234.8138\\113\\127.9297\\-237.1592\\113\\125.9014\\-239.3203\\113\\124.0234\\-241.4203\\113\\122.0703\\-243.3661\\113\\120.1172\\-245.0263\\113\\115.673\\-249.0859\\113\\114.2578\\-250.1496\\113\\111.0397\\-252.9922\\113\\108.3984\\-255.4408\\113\\104.4922\\-258.554\\113\\102.0358\\-260.8047\\113\\99.6933\\-262.7578\\113\\94.72656\\-267.1555\\113\\90.82031\\-270.0357\\113\\86.91406\\-273.2804\\113\\84.96094\\-274.8363\\113\\81.05469\\-277.4173\\113\\79.10156\\-278.9764\\113\\77.14844\\-280.3753\\113\\75.19531\\-281.509\\113\\73.24219\\-282.8211\\113\\71.28906\\-283.7677\\113\\70.69798\\-284.2422\\113\\67.38281\\-286.3735\\113\\65.42969\\-287.3565\\113\\63.47656\\-288.5571\\113\\61.52344\\-289.2368\\113\\59.57031\\-290.2523\\113\\57.61719\\-291.1194\\113\\55.66406\\-292.2033\\113\\49.80469\\-294.7054\\113\\47.85156\\-295.1736\\113\\45.89844\\-295.802\\113\\43.94531\\-296.5983\\113\\41.99219\\-297.0043\\113\\40.03906\\-297.5247\\113\\38.08594\\-298.367\\113\\34.17969\\-299.2253\\113\\30.27344\\-300.3525\\113\\28.32031\\-300.6429\\113\\22.46094\\-301.3855\\113\\18.55469\\-302.0349\\113\\16.60156\\-302.302\\113\\12.69531\\-302.5765\\113\\6.835938\\-302.7638\\113\\0.9765625\\-302.8344\\113\\-4.882813\\-302.8023\\113\\-8.789063\\-302.7291\\113\\-12.69531\\-302.5838\\113\\-16.60156\\-302.2818\\113"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002244"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "246"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "183"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-302.1505\\115\\-22.46094\\-301.4337\\115\\-28.32031\\-300.6495\\115\\-30.27344\\-300.3434\\115\\-32.11031\\-299.8672\\115\\-34.17969\\-299.2216\\115\\-38.08594\\-298.3205\\115\\-40.03906\\-297.4793\\115\\-43.94531\\-296.5457\\115\\-45.89844\\-295.6665\\115\\-49.80469\\-294.6036\\115\\-51.75781\\-293.6473\\115\\-53.71094\\-292.8736\\115\\-55.66406\\-291.8538\\115\\-57.61719\\-291.0065\\115\\-59.57031\\-289.9853\\115\\-63.47656\\-288.3778\\115\\-69.33594\\-284.9987\\115\\-71.28906\\-283.623\\115\\-73.24219\\-282.7329\\115\\-75.19531\\-281.4651\\115\\-77.14844\\-280.375\\115\\-79.10156\\-279.0718\\115\\-81.05469\\-277.5802\\115\\-83.00781\\-276.5006\\115\\-84.96094\\-275.3163\\115\\-86.91406\\-273.9177\\115\\-88.86719\\-272.7104\\115\\-92.77344\\-269.8664\\115\\-94.72656\\-268.7954\\115\\-96.67969\\-267.4318\\115\\-98.63281\\-265.8512\\115\\-100.5859\\-264.45\\115\\-102.5391\\-263.28\\115\\-108.3984\\-258.8594\\115\\-112.3047\\-255.793\\115\\-114.2578\\-254.0867\\115\\-120.1172\\-248.6674\\115\\-121.6872\\-247.1328\\115\\-125.1157\\-243.2266\\115\\-125.9766\\-242.3115\\115\\-128.4539\\-239.3203\\115\\-130.938\\-235.4141\\115\\-132.3178\\-233.4609\\115\\-133.2705\\-231.5078\\115\\-134.5408\\-229.5547\\115\\-135.3616\\-227.6016\\115\\-136.3685\\-225.6484\\115\\-136.9893\\-223.6953\\115\\-137.9005\\-221.7422\\115\\-139.17\\-217.8359\\115\\-139.9896\\-215.8828\\115\\-140.9444\\-211.9766\\115\\-142.0379\\-208.0703\\115\\-142.3562\\-206.1172\\115\\-143.2096\\-198.3047\\115\\-143.5941\\-194.3984\\115\\-143.8042\\-190.4922\\115\\-143.8525\\-186.5859\\115\\-143.7916\\-182.6797\\115\\-143.5627\\-178.7734\\115\\-143.2002\\-174.8672\\115\\-142.6575\\-167.0547\\115\\-142.1456\\-161.1953\\115\\-140.9525\\-155.3359\\115\\-140.2552\\-151.4297\\115\\-139.7155\\-149.4766\\115\\-139.0033\\-147.5234\\115\\-138.0591\\-143.6172\\115\\-137.3147\\-141.6641\\115\\-136.3281\\-137.7578\\115\\-135.4813\\-135.8047\\115\\-134.0792\\-131.8984\\115\\-133.0042\\-129.9453\\115\\-132.1637\\-127.9922\\115\\-131.0106\\-126.0391\\115\\-130.1586\\-124.0859\\115\\-127.9297\\-120.3424\\115\\-126.5206\\-118.2266\\115\\-124.0234\\-115.0671\\115\\-121.7599\\-112.3672\\115\\-120.1172\\-110.5403\\115\\-118.1641\\-108.5189\\115\\-115.9712\\-106.5078\\115\\-113.5938\\-104.5547\\115\\-110.3516\\-101.9757\\115\\-108.214\\-100.6484\\115\\-106.4453\\-99.66585\\115\\-104.4922\\-98.40932\\115\\-102.5391\\-97.40747\\115\\-100.5859\\-96.19022\\115\\-98.63281\\-95.4632\\115\\-96.67969\\-94.48801\\115\\-94.72656\\-93.86609\\115\\-92.77344\\-93.39304\\115\\-90.82031\\-92.51479\\115\\-86.91406\\-91.43823\\115\\-84.96094\\-90.7059\\115\\-83.00781\\-90.2489\\115\\-77.14844\\-89.26431\\115\\-75.19531\\-88.75283\\115\\-73.24219\\-88.4111\\115\\-69.33594\\-88.02591\\115\\-65.42969\\-87.818\\115\\-59.57031\\-87.3401\\115\\-55.66406\\-86.84787\\115\\-49.80469\\-86.39896\\115\\-45.89844\\-86.18105\\115\\-38.08594\\-85.69592\\115\\-36.13281\\-85.62022\\115\\-30.27344\\-85.5857\\115\\-26.36719\\-85.52117\\115\\-20.50781\\-85.68423\\115\\-16.60156\\-85.8467\\115\\-12.69531\\-86.25256\\115\\-10.74219\\-86.54037\\115\\-6.835938\\-87.55849\\115\\-2.929688\\-88.20979\\115\\0.9765625\\-89.04237\\115\\2.929688\\-89.05838\\115\\8.789063\\-88.13973\\115\\10.74219\\-87.89092\\115\\12.69531\\-87.44728\\115\\14.64844\\-86.64194\\115\\16.60156\\-86.18521\\115\\24.56826\\-85.02344\\115\\26.36719\\-84.78771\\115\\30.27344\\-84.51469\\115\\36.13281\\-84.39359\\115\\40.03906\\-84.53226\\115\\45.89844\\-84.86185\\115\\47.85156\\-85.04688\\115\\51.75781\\-85.58062\\115\\59.57031\\-86.18105\\115\\63.47656\\-86.56365\\115\\67.38281\\-87.19275\\115\\71.28906\\-87.69971\\115\\77.14844\\-88.28071\\115\\79.10156\\-88.67837\\115\\81.05469\\-89.30327\\115\\84.96094\\-90.15314\\115\\86.91406\\-90.75983\\115\\88.86719\\-91.54343\\115\\90.82031\\-92.03645\\115\\92.77344\\-92.69951\\115\\94.72656\\-93.54332\\115\\96.67969\\-94.01411\\115\\100.5859\\-95.6946\\115\\102.5391\\-96.64063\\115\\104.4922\\-97.87327\\115\\106.4453\\-99.22861\\115\\108.3984\\-100.2421\\115\\111.7374\\-102.6016\\115\\114.2578\\-104.5171\\115\\118.1641\\-108.0108\\115\\120.4542\\-110.4141\\115\\122.096\\-112.3672\\115\\126.3248\\-118.2266\\115\\127.4111\\-120.1797\\115\\128.6716\\-122.1328\\115\\129.5022\\-124.0859\\115\\130.5446\\-126.0391\\115\\131.2086\\-127.9922\\115\\132.2428\\-129.9453\\115\\132.9129\\-131.8984\\115\\133.7968\\-133.8516\\115\\134.5127\\-135.8047\\115\\135.019\\-137.7578\\115\\136.3386\\-141.6641\\115\\137.038\\-145.5703\\115\\138.2127\\-149.4766\\115\\138.8683\\-153.3828\\115\\139.2723\\-155.3359\\115\\139.8112\\-157.2891\\115\\140.1838\\-159.2422\\115\\141.0762\\-167.0547\\115\\141.7717\\-172.9141\\115\\142.0229\\-176.8203\\115\\142.1605\\-180.7266\\115\\142.2079\\-186.5859\\115\\142.1642\\-190.4922\\115\\141.9294\\-196.3516\\115\\141.7717\\-198.3047\\115\\140.7731\\-206.1172\\115\\140.2321\\-210.0234\\115\\139.7586\\-211.9766\\115\\139.0999\\-213.9297\\115\\138.2166\\-217.8359\\115\\137.409\\-219.7891\\115\\136.1989\\-223.6953\\115\\135.1509\\-225.6484\\115\\134.2839\\-227.6016\\115\\131.4468\\-231.5078\\115\\128.7458\\-235.4141\\115\\125.1518\\-239.3203\\115\\124.0234\\-240.6148\\115\\121.5439\\-243.2266\\115\\120.1172\\-244.4522\\115\\116.2109\\-248.2654\\115\\112.3047\\-251.7176\\115\\108.3984\\-255.4155\\115\\104.4922\\-258.6094\\115\\102.1949\\-260.8047\\115\\100.5859\\-262.1046\\115\\98.63281\\-263.8069\\115\\94.72656\\-267.3378\\115\\92.77344\\-268.8973\\115\\90.82031\\-270.268\\115\\86.91406\\-273.5229\\115\\84.96094\\-275.0894\\115\\82.99842\\-276.4297\\115\\81.05469\\-277.6475\\115\\79.10156\\-279.2307\\115\\77.14844\\-280.7083\\115\\75.19531\\-281.7227\\115\\73.24219\\-283.0591\\115\\71.28906\\-284.1221\\115\\69.33594\\-285.3415\\115\\67.38281\\-286.6805\\115\\65.42969\\-287.5895\\115\\63.47656\\-288.7758\\115\\61.52344\\-289.3766\\115\\59.57031\\-290.5432\\115\\57.61719\\-291.2964\\115\\55.66406\\-292.4706\\115\\53.71094\\-293.202\\115\\51.75781\\-294.1494\\115\\49.80469\\-294.8423\\115\\47.85156\\-295.3036\\115\\45.89844\\-296.0754\\115\\43.94531\\-296.7302\\115\\41.99219\\-297.1296\\115\\40.03906\\-297.761\\115\\38.08594\\-298.5171\\115\\34.17969\\-299.403\\115\\32.22656\\-300.0428\\115\\30.27344\\-300.4624\\115\\22.46094\\-301.5182\\115\\18.55469\\-302.1985\\115\\16.60156\\-302.4101\\115\\12.69531\\-302.6648\\115\\4.882813\\-302.8503\\115\\-0.9765625\\-302.8929\\115\\-4.882813\\-302.8716\\115\\-12.69531\\-302.6648\\115\\-16.60156\\-302.3884\\115"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002243"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "246"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "184"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-301.9781\\117\\-22.46094\\-301.5566\\117\\-30.27344\\-300.4427\\117\\-32.22656\\-300.0428\\117\\-34.17969\\-299.3611\\117\\-38.08594\\-298.4792\\117\\-40.03906\\-297.6699\\117\\-41.99219\\-297.0628\\117\\-43.94531\\-296.6737\\117\\-45.89844\\-295.8594\\117\\-47.85156\\-295.198\\117\\-49.80469\\-294.7131\\117\\-55.66406\\-292.1069\\117\\-57.61719\\-291.0988\\117\\-61.52344\\-289.2303\\117\\-63.47656\\-288.5208\\117\\-65.42969\\-287.3356\\117\\-67.54701\\-286.1953\\117\\-70.63526\\-284.2422\\117\\-71.28906\\-283.7174\\117\\-73.24219\\-282.8139\\117\\-75.19531\\-281.5115\\117\\-77.14844\\-280.4504\\117\\-79.10156\\-279.0914\\117\\-81.05469\\-277.5936\\117\\-84.96094\\-275.2841\\117\\-86.91406\\-273.8557\\117\\-88.86719\\-272.561\\117\\-92.77344\\-269.7555\\117\\-96.67969\\-267.1853\\117\\-97.26414\\-266.6641\\117\\-100.5859\\-264.0451\\117\\-102.5391\\-262.8317\\117\\-104.4922\\-261.4398\\117\\-105.16\\-260.8047\\117\\-107.6547\\-258.8516\\117\\-108.3984\\-258.1755\\117\\-112.3047\\-255.1614\\117\\-114.2578\\-253.4285\\117\\-118.1641\\-249.7394\\117\\-120.8512\\-247.1328\\117\\-122.6651\\-245.1797\\117\\-126.0006\\-241.2734\\117\\-128.9272\\-237.3672\\117\\-130.2749\\-235.4141\\117\\-131.2002\\-233.4609\\117\\-132.5479\\-231.5078\\117\\-134.6717\\-227.6016\\117\\-135.4772\\-225.6484\\117\\-136.3955\\-223.6953\\117\\-136.9645\\-221.7422\\117\\-137.7792\\-219.7891\\117\\-138.4452\\-217.8359\\117\\-138.9266\\-215.8828\\117\\-140.2565\\-211.9766\\117\\-141.0683\\-208.0703\\117\\-141.9794\\-204.1641\\117\\-142.4467\\-200.2578\\117\\-142.715\\-196.3516\\117\\-142.8841\\-192.4453\\117\\-142.9728\\-186.5859\\117\\-142.9321\\-182.6797\\117\\-142.8207\\-178.7734\\117\\-142.572\\-172.9141\\117\\-142.3418\\-169.0078\\117\\-141.9599\\-165.1016\\117\\-140.9525\\-159.2422\\117\\-140.3906\\-155.3359\\117\\-140.03\\-153.3828\\117\\-139.3885\\-151.4297\\117\\-137.948\\-145.5703\\117\\-137.2208\\-143.6172\\117\\-136.3642\\-139.7109\\117\\-135.5781\\-137.7578\\117\\-134.2773\\-133.8516\\117\\-133.274\\-131.8984\\117\\-132.4811\\-129.9453\\117\\-131.376\\-127.9922\\117\\-130.571\\-126.0391\\117\\-129.4511\\-124.0859\\117\\-128.5517\\-122.1328\\117\\-124.4154\\-116.2734\\117\\-122.8612\\-114.3203\\117\\-121.1462\\-112.3672\\117\\-118.1641\\-109.1424\\117\\-115.282\\-106.5078\\117\\-112.3047\\-104.0129\\117\\-110.3516\\-102.5271\\117\\-106.4453\\-100.0258\\117\\-104.4922\\-99.0551\\117\\-102.5391\\-97.80392\\117\\-100.5859\\-96.7345\\117\\-98.63281\\-95.80631\\117\\-96.67969\\-95.04605\\117\\-94.72656\\-94.1488\\117\\-92.77344\\-93.69118\\117\\-90.82031\\-93.06881\\117\\-88.86719\\-92.31859\\117\\-84.96094\\-91.34274\\117\\-81.05469\\-90.2922\\117\\-75.19531\\-89.36588\\117\\-71.28906\\-88.58543\\117\\-67.38281\\-88.16195\\117\\-65.42969\\-88.06368\\117\\-57.61719\\-87.52795\\117\\-55.66406\\-87.27989\\117\\-49.80469\\-86.72707\\117\\-43.94531\\-86.29297\\117\\-38.08594\\-85.92188\\117\\-36.13281\\-85.8467\\117\\-32.22656\\-85.797\\117\\-26.36719\\-85.77156\\117\\-20.50781\\-85.88214\\117\\-16.60156\\-86.09327\\117\\-12.69531\\-86.53032\\117\\-10.74219\\-86.95255\\117\\-8.789063\\-87.54511\\117\\-4.882813\\-88.15971\\117\\-2.929688\\-88.57523\\117\\-0.9765625\\-89.237\\117\\0.9765625\\-89.55492\\117\\2.929688\\-89.55059\\117\\4.882813\\-89.37593\\117\\6.835938\\-89.04503\\117\\8.789063\\-88.47628\\117\\12.69531\\-87.78191\\117\\16.60156\\-86.50096\\117\\22.46094\\-85.63148\\117\\30.27344\\-84.83643\\117\\36.13281\\-84.63157\\117\\40.03906\\-84.71947\\117\\45.89844\\-85.07769\\117\\49.80469\\-85.51172\\117\\53.71094\\-85.87193\\117\\55.66406\\-86\\117\\61.52344\\-86.57406\\117\\65.42969\\-87.21886\\117\\69.33594\\-87.69971\\117\\75.19531\\-88.25598\\117\\77.14844\\-88.57895\\117\\79.10156\\-89.17737\\117\\81.05469\\-89.66492\\117\\84.96094\\-90.52945\\117\\86.91406\\-91.35873\\117\\90.82031\\-92.40675\\117\\92.77344\\-93.27227\\117\\96.67969\\-94.39413\\117\\98.63281\\-95.36312\\117\\100.5859\\-96.06419\\117\\102.5391\\-97.32411\\117\\104.4922\\-98.38142\\117\\106.4453\\-99.69644\\117\\108.1461\\-100.6484\\117\\110.3516\\-102.0425\\117\\113.5274\\-104.5547\\117\\115.8255\\-106.5078\\117\\118.1641\\-108.7111\\117\\121.4126\\-112.3672\\117\\122.9858\\-114.3203\\117\\124.4236\\-116.2734\\117\\125.5732\\-118.2266\\117\\126.9348\\-120.1797\\117\\128.1684\\-122.1328\\117\\130.0167\\-126.0391\\117\\131.5226\\-129.9453\\117\\132.4654\\-131.8984\\117\\133.1001\\-133.8516\\117\\133.9554\\-135.8047\\117\\134.5833\\-137.7578\\117\\135.0555\\-139.7109\\117\\136.3163\\-143.6172\\117\\136.9845\\-147.5234\\117\\137.4111\\-149.4766\\117\\138.0165\\-151.4297\\117\\138.3882\\-153.3828\\117\\139.3073\\-159.2422\\117\\139.7723\\-161.1953\\117\\140.1184\\-163.1484\\117\\140.5268\\-167.0547\\117\\140.9686\\-172.9141\\117\\141.3176\\-178.7734\\117\\141.4327\\-182.6797\\117\\141.4588\\-186.5859\\117\\141.3156\\-192.4453\\117\\140.9725\\-198.3047\\117\\140.663\\-202.2109\\117\\140.2588\\-206.1172\\117\\139.877\\-208.0703\\117\\139.3411\\-210.0234\\117\\138.1147\\-215.8828\\117\\137.3796\\-217.8359\\117\\136.3147\\-221.7422\\117\\135.3559\\-223.6953\\117\\134.5262\\-225.6484\\117\\132.0858\\-229.5547\\117\\130.7189\\-231.5078\\117\\129.2341\\-233.4609\\117\\127.9382\\-235.4141\\117\\122.8966\\-241.2734\\117\\121.0375\\-243.2266\\117\\120.1172\\-244.0466\\117\\115.0836\\-249.0859\\117\\112.3047\\-251.5884\\117\\108.3984\\-255.419\\117\\104.4922\\-258.7132\\117\\102.3934\\-260.8047\\117\\100.5859\\-262.2064\\117\\98.63281\\-263.9283\\117\\94.72656\\-267.5232\\117\\92.77344\\-269.1682\\117\\90.86772\\-270.5703\\117\\84.96094\\-275.3294\\117\\83.00781\\-276.7715\\117\\81.05469\\-277.945\\117\\77.14844\\-280.972\\117\\75.19531\\-282.0431\\117\\71.28906\\-284.5222\\117\\69.33594\\-285.5911\\117\\67.38281\\-286.9164\\117\\65.42969\\-287.854\\117\\63.47656\\-288.9384\\117\\61.52344\\-289.5777\\117\\59.57031\\-290.7694\\117\\57.61719\\-291.5182\\117\\55.66406\\-292.6718\\117\\53.71094\\-293.3895\\117\\51.75781\\-294.3917\\117\\49.80469\\-294.9665\\117\\47.85156\\-295.4371\\117\\45.89844\\-296.3204\\117\\41.99219\\-297.2725\\117\\40.03906\\-298.0627\\117\\38.08594\\-298.6516\\117\\34.17969\\-299.6063\\117\\32.22656\\-300.231\\117\\30.27344\\-300.58\\117\\24.41406\\-301.3619\\117\\20.50781\\-302.0735\\117\\16.60156\\-302.5179\\117\\10.74219\\-302.7969\\117\\2.929688\\-302.9479\\117\\-0.9765625\\-302.9803\\117\\-6.835938\\-302.9036\\117\\-12.69531\\-302.7239\\117\\-16.60156\\-302.4817\\117\\-18.55469\\-302.2818\\117"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002242"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "244"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "185"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-302.1365\\119\\-24.41406\\-301.3619\\119\\-30.27344\\-300.5468\\119\\-32.22656\\-300.1992\\119\\-34.17969\\-299.5352\\119\\-36.13281\\-299.0165\\119\\-38.08594\\-298.6182\\119\\-41.99219\\-297.1749\\119\\-43.94531\\-296.7667\\119\\-45.89844\\-296.1048\\119\\-47.85156\\-295.2911\\119\\-49.80469\\-294.8046\\119\\-51.75781\\-294.0314\\119\\-53.71094\\-293.0988\\119\\-55.66406\\-292.3477\\119\\-57.61719\\-291.2048\\119\\-59.57031\\-290.4249\\119\\-61.52344\\-289.3052\\119\\-63.47656\\-288.6401\\119\\-65.42969\\-287.4431\\119\\-67.38281\\-286.4869\\119\\-70.80503\\-284.2422\\119\\-71.28906\\-283.8417\\119\\-73.24219\\-282.9034\\119\\-75.19531\\-281.5771\\119\\-77.14844\\-280.5357\\119\\-79.10156\\-279.1372\\119\\-81.05469\\-277.6258\\119\\-83.00781\\-276.5163\\119\\-84.96094\\-275.2565\\119\\-88.78941\\-272.5234\\119\\-94.18688\\-268.6172\\119\\-96.67969\\-266.9172\\119\\-99.33143\\-264.7109\\119\\-100.5859\\-263.7459\\119\\-104.4922\\-260.9888\\119\\-108.3984\\-257.6713\\119\\-109.4396\\-256.8984\\119\\-112.3047\\-254.3982\\119\\-115.9769\\-251.0391\\119\\-118.1641\\-248.9618\\119\\-120.1172\\-246.9921\\119\\-121.7751\\-245.1797\\119\\-124.0234\\-242.5952\\119\\-128.1758\\-237.3672\\119\\-129.2813\\-235.4141\\119\\-130.6074\\-233.4609\\119\\-131.8359\\-231.1966\\119\\-133.8736\\-227.6016\\119\\-136.3866\\-221.7422\\119\\-136.8826\\-219.7891\\119\\-137.5156\\-217.8359\\119\\-138.2491\\-215.8828\\119\\-139.1862\\-211.9766\\119\\-139.9185\\-210.0234\\119\\-140.3795\\-208.0703\\119\\-141.0181\\-204.1641\\119\\-141.716\\-200.2578\\119\\-141.9992\\-198.3047\\119\\-142.2928\\-194.3984\\119\\-142.4112\\-190.4922\\119\\-142.4553\\-184.6328\\119\\-142.3915\\-180.7266\\119\\-142.2547\\-176.8203\\119\\-141.8917\\-170.9609\\119\\-140.8534\\-163.1484\\119\\-140.6411\\-161.1953\\119\\-140.0929\\-157.2891\\119\\-139.0758\\-153.3828\\119\\-138.3259\\-149.4766\\119\\-137.7624\\-147.5234\\119\\-137.0809\\-145.5703\\119\\-136.3426\\-141.6641\\119\\-134.9325\\-137.7578\\119\\-134.4088\\-135.8047\\119\\-133.4706\\-133.8516\\119\\-132.6819\\-131.8984\\119\\-131.7479\\-129.9453\\119\\-129.9869\\-126.0391\\119\\-127.9297\\-122.1669\\119\\-126.6556\\-120.1797\\119\\-125.0719\\-118.2266\\119\\-122.3617\\-114.3203\\119\\-120.1172\\-111.9281\\119\\-118.1641\\-109.7418\\119\\-116.2109\\-107.8461\\119\\-114.2578\\-106.187\\119\\-109.6259\\-102.6016\\119\\-108.3984\\-101.7214\\119\\-106.4453\\-100.5284\\119\\-104.4922\\-99.51334\\119\\-102.5391\\-98.23467\\119\\-100.5859\\-97.32567\\119\\-98.63281\\-96.1454\\119\\-96.67969\\-95.46706\\119\\-94.72656\\-94.54492\\119\\-92.77344\\-93.93534\\119\\-90.82031\\-93.49748\\119\\-86.91406\\-92.18674\\119\\-83.00781\\-91.40161\\119\\-79.10156\\-90.34959\\119\\-77.14844\\-90.02901\\119\\-71.28906\\-89.20369\\119\\-67.38281\\-88.51311\\119\\-63.47656\\-88.14233\\119\\-55.66406\\-87.66331\\119\\-53.71094\\-87.44777\\119\\-47.85156\\-86.98463\\119\\-41.99219\\-86.41246\\119\\-34.17969\\-86.02774\\119\\-28.32031\\-85.95586\\119\\-22.46094\\-86.03274\\119\\-16.60156\\-86.33134\\119\\-14.64844\\-86.53032\\119\\-12.69531\\-86.90625\\119\\-8.789063\\-87.818\\119\\-4.882813\\-88.46892\\119\\-2.929688\\-89.19343\\119\\-0.9765625\\-89.66917\\119\\0.9765625\\-89.88467\\119\\2.929688\\-89.88443\\119\\4.882813\\-89.77863\\119\\6.835938\\-89.53773\\119\\8.789063\\-89.11325\\119\\10.74219\\-88.44141\\119\\14.64844\\-87.53944\\119\\16.60156\\-86.92143\\119\\18.55469\\-86.48828\\119\\22.46094\\-85.89474\\119\\30.27344\\-85.24281\\119\\36.13281\\-84.9287\\119\\41.99219\\-85.04688\\119\\47.85156\\-85.42057\\119\\51.75781\\-85.80138\\119\\57.61719\\-86.31981\\119\\59.57031\\-86.54037\\119\\63.47656\\-87.21886\\119\\67.38281\\-87.69067\\119\\73.24219\\-88.22778\\119\\75.19531\\-88.51601\\119\\79.10156\\-89.54739\\119\\83.00781\\-90.371\\119\\84.96094\\-91.12522\\119\\86.91406\\-91.73269\\119\\88.86719\\-92.21599\\119\\92.77344\\-93.64562\\119\\94.72656\\-94.11446\\119\\98.63281\\-95.74731\\119\\100.5859\\-96.64453\\119\\102.5391\\-97.7547\\119\\104.4922\\-99.03597\\119\\106.4453\\-100.0625\\119\\108.3984\\-101.3909\\119\\110.3408\\-102.6016\\119\\112.3047\\-104.1077\\119\\115.1002\\-106.5078\\119\\118.1641\\-109.4573\\119\\120.1172\\-111.668\\119\\120.8895\\-112.3672\\119\\122.5294\\-114.3203\\119\\123.7131\\-116.2734\\119\\125.0234\\-118.2266\\119\\126.4381\\-120.1797\\119\\127.4827\\-122.1328\\119\\128.6371\\-124.0859\\119\\129.4049\\-126.0391\\119\\130.3914\\-127.9922\\119\\131.0152\\-129.9453\\119\\132.6072\\-133.8516\\119\\133.1959\\-135.8047\\119\\134.071\\-137.7578\\119\\135.0518\\-141.6641\\119\\136.2338\\-145.5703\\119\\136.6028\\-147.5234\\119\\137.168\\-151.4297\\119\\138.1806\\-155.3359\\119\\139.2137\\-163.1484\\119\\139.9129\\-167.0547\\119\\140.1457\\-169.0078\\119\\140.5263\\-174.8672\\119\\140.679\\-178.7734\\119\\140.7559\\-182.6797\\119\\140.7292\\-190.4922\\119\\140.625\\-194.3984\\119\\140.435\\-198.3047\\119\\140.1276\\-202.2109\\119\\139.7992\\-204.1641\\119\\138.9732\\-208.0703\\119\\138.3882\\-211.9766\\119\\137.958\\-213.9297\\119\\137.2204\\-215.8828\\119\\136.3997\\-219.7891\\119\\135.4685\\-221.7422\\119\\134.7034\\-223.6953\\119\\133.7891\\-225.4676\\119\\131.8359\\-228.658\\119\\131.1364\\-229.5547\\119\\128.6654\\-233.4609\\119\\127.1282\\-235.4141\\119\\125.374\\-237.3672\\119\\123.8393\\-239.3203\\119\\122.4261\\-241.2734\\119\\120.5754\\-243.2266\\119\\118.6207\\-245.1797\\119\\116.2109\\-247.7957\\119\\114.2578\\-249.698\\119\\112.3047\\-251.4627\\119\\108.3984\\-255.4226\\119\\104.5009\\-258.8516\\119\\102.5391\\-260.8773\\119\\98.63281\\-264.0576\\119\\95.9109\\-266.6641\\119\\92.77344\\-269.4024\\119\\88.86719\\-272.5756\\119\\83.83875\\-276.4297\\119\\79.10156\\-279.7487\\119\\77.14844\\-281.213\\119\\75.19531\\-282.4518\\119\\73.24219\\-283.3958\\119\\71.28906\\-284.8046\\119\\67.38281\\-287.1161\\119\\65.42969\\-288.1726\\119\\63.47656\\-289.0891\\119\\61.52344\\-289.8611\\119\\59.57031\\-290.9496\\119\\57.61719\\-291.7984\\119\\55.66406\\-292.8532\\119\\53.71094\\-293.6004\\119\\51.75781\\-294.5811\\119\\47.85156\\-295.6191\\119\\45.89844\\-296.4987\\119\\41.99219\\-297.4411\\119\\40.03906\\-298.3108\\119\\36.13281\\-299.2513\\119\\32.22656\\-300.3733\\119\\26.36719\\-301.2092\\119\\20.50781\\-302.234\\119\\18.55469\\-302.4526\\119\\14.64844\\-302.7065\\119\\6.835938\\-302.9695\\119\\-0.9765625\\-303.0791\\119\\-6.835938\\-302.9651\\119\\-12.69531\\-302.7859\\119\\-16.60156\\-302.5765\\119"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002241"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "249"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "186"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-301.9203\\121\\-24.41406\\-301.4785\\121\\-30.27344\\-300.6473\\121\\-32.22656\\-300.3342\\121\\-36.13281\\-299.144\\121\\-38.08594\\-298.7362\\121\\-40.03906\\-298.1616\\121\\-41.99219\\-297.303\\121\\-43.94531\\-296.8587\\121\\-45.89844\\-296.2865\\121\\-47.85156\\-295.3929\\121\\-49.80469\\-294.907\\121\\-51.75781\\-294.243\\121\\-53.71094\\-293.2428\\121\\-55.66406\\-292.5255\\121\\-57.61719\\-291.3291\\121\\-59.57031\\-290.6019\\121\\-61.52344\\-289.3854\\121\\-63.47656\\-288.758\\121\\-65.42969\\-287.5804\\121\\-67.38281\\-286.6369\\121\\-71.28906\\-283.9943\\121\\-73.24219\\-283.001\\121\\-75.19531\\-281.6659\\121\\-77.14844\\-280.6282\\121\\-81.05469\\-277.6938\\121\\-83.00781\\-276.546\\121\\-84.96094\\-275.2692\\121\\-85.96978\\-274.4766\\121\\-92.77344\\-269.5493\\121\\-94.72656\\-268.0157\\121\\-96.58203\\-266.6641\\121\\-98.98868\\-264.7109\\121\\-101.6101\\-262.7578\\121\\-104.0761\\-260.8047\\121\\-106.4453\\-258.8267\\121\\-108.3984\\-257.2767\\121\\-110.3516\\-255.6127\\121\\-114.2578\\-251.9542\\121\\-115.3122\\-251.0391\\121\\-118.1641\\-248.174\\121\\-119.0956\\-247.1328\\121\\-121.0273\\-245.1797\\121\\-122.7481\\-243.2266\\121\\-124.2993\\-241.2734\\121\\-125.6021\\-239.3203\\121\\-127.1821\\-237.3672\\121\\-128.6331\\-235.4141\\121\\-131.8359\\-229.704\\121\\-133.934\\-225.6484\\121\\-134.7404\\-223.6953\\121\\-135.4389\\-221.7422\\121\\-136.2478\\-219.7891\\121\\-137.2246\\-215.8828\\121\\-137.9849\\-213.9297\\121\\-138.8568\\-210.0234\\121\\-139.9304\\-206.1172\\121\\-140.3209\\-204.1641\\121\\-140.5804\\-202.2109\\121\\-141.2233\\-196.3516\\121\\-141.517\\-192.4453\\121\\-141.7031\\-188.5391\\121\\-141.7188\\-184.6328\\121\\-141.6096\\-180.7266\\121\\-141.2533\\-174.8672\\121\\-140.9763\\-170.9609\\121\\-140.4769\\-165.1016\\121\\-139.9935\\-161.1953\\121\\-139.086\\-157.2891\\121\\-138.4603\\-153.3828\\121\\-138.0615\\-151.4297\\121\\-137.4344\\-149.4766\\121\\-136.9708\\-147.5234\\121\\-136.2271\\-143.6172\\121\\-135.5362\\-141.6641\\121\\-134.3954\\-137.7578\\121\\-132.7951\\-133.8516\\121\\-132.0522\\-131.8984\\121\\-131.051\\-129.9453\\121\\-130.3468\\-127.9922\\121\\-129.2707\\-126.0391\\121\\-128.4678\\-124.0859\\121\\-124.6068\\-118.2266\\121\\-122.0703\\-114.857\\121\\-119.7018\\-112.3672\\121\\-116.2109\\-108.5733\\121\\-113.7821\\-106.5078\\121\\-110.3516\\-103.6961\\121\\-108.3984\\-102.1982\\121\\-106.4453\\-101.1679\\121\\-104.4922\\-99.86845\\121\\-98.78229\\-96.74219\\121\\-96.67969\\-95.81185\\121\\-94.72656\\-95.10751\\121\\-92.77344\\-94.23767\\121\\-88.86719\\-93.35371\\121\\-86.91406\\-92.6476\\121\\-84.96094\\-92.13216\\121\\-81.05469\\-91.41932\\121\\-77.14844\\-90.44808\\121\\-75.19531\\-90.12265\\121\\-69.33594\\-89.41482\\121\\-63.47656\\-88.44801\\121\\-61.52344\\-88.24734\\121\\-55.66406\\-87.87378\\121\\-45.89844\\-87.21706\\121\\-41.99219\\-86.75231\\121\\-40.03906\\-86.58461\\121\\-34.17969\\-86.28893\\121\\-28.32031\\-86.21397\\121\\-22.46094\\-86.27821\\121\\-16.60156\\-86.5953\\121\\-14.64844\\-86.90625\\121\\-10.74219\\-87.73402\\121\\-6.835938\\-88.39394\\121\\-2.929688\\-89.62975\\121\\-0.9765625\\-90.00446\\121\\0.9765625\\-90.19581\\121\\2.929688\\-90.21828\\121\\6.835938\\-89.90063\\121\\8.789063\\-89.60256\\121\\10.74219\\-89.03044\\121\\12.69531\\-88.29858\\121\\16.60156\\-87.37993\\121\\18.55469\\-86.84686\\121\\20.50781\\-86.47883\\121\\24.41406\\-85.95377\\121\\28.32031\\-85.65251\\121\\30.27344\\-85.5926\\121\\36.13281\\-85.24603\\121\\40.03906\\-85.25528\\121\\43.94531\\-85.33075\\121\\47.85156\\-85.5305\\121\\51.75781\\-85.86128\\121\\57.61719\\-86.4545\\121\\59.57031\\-86.75231\\121\\61.52344\\-87.14934\\121\\65.42969\\-87.667\\121\\69.33594\\-88.02415\\121\\73.24219\\-88.4713\\121\\77.14844\\-89.45506\\121\\81.05469\\-90.21522\\121\\83.00781\\-90.83063\\121\\84.96094\\-91.56191\\121\\86.91406\\-92.0204\\121\\88.86719\\-92.62424\\121\\90.82031\\-93.46326\\121\\92.77344\\-93.92993\\121\\94.72656\\-94.52815\\121\\96.67969\\-95.45519\\121\\98.63281\\-96.12708\\121\\100.5859\\-97.28472\\121\\102.5391\\-98.21687\\121\\104.4922\\-99.5539\\121\\108.3984\\-101.7922\\121\\112.0269\\-104.5547\\121\\114.2578\\-106.3065\\121\\116.2109\\-107.9955\\121\\118.1641\\-110.067\\121\\120.2239\\-112.3672\\121\\122.0703\\-114.649\\121\\124.5768\\-118.2266\\121\\125.6584\\-120.1797\\121\\126.9472\\-122.1328\\121\\128.0713\\-124.0859\\121\\128.9315\\-126.0391\\121\\129.6859\\-127.9922\\121\\130.5981\\-129.9453\\121\\131.1331\\-131.8984\\121\\131.9999\\-133.8516\\121\\132.6769\\-135.8047\\121\\133.2355\\-137.7578\\121\\134.0332\\-139.7109\\121\\134.5622\\-141.6641\\121\\135.4685\\-145.5703\\121\\136.0677\\-147.5234\\121\\136.4415\\-149.4766\\121\\136.9446\\-153.3828\\121\\137.2758\\-155.3359\\121\\138.1595\\-159.2422\\121\\138.6099\\-163.1484\\121\\139.1789\\-169.0078\\121\\139.8631\\-174.8672\\121\\140.0776\\-178.7734\\121\\140.1923\\-184.6328\\121\\140.189\\-188.5391\\121\\140.0146\\-194.3984\\121\\139.6713\\-198.3047\\121\\138.8994\\-204.1641\\121\\138.4436\\-208.0703\\121\\138.1314\\-210.0234\\121\\137.0762\\-213.9297\\121\\136.3107\\-217.8359\\121\\134.7842\\-221.7422\\121\\133.9208\\-223.6953\\121\\132.7876\\-225.6484\\121\\131.536\\-227.6016\\121\\130.4633\\-229.5547\\121\\127.9297\\-233.3083\\121\\126.4511\\-235.4141\\121\\123.2646\\-239.3203\\121\\122.0703\\-240.8573\\121\\120.1172\\-243.1014\\121\\118.1641\\-245.1888\\121\\116.6001\\-247.1328\\121\\114.7239\\-249.0859\\121\\112.3047\\-251.3797\\121\\108.3984\\-255.4734\\121\\106.7818\\-256.8984\\121\\104.7066\\-258.8516\\121\\102.5391\\-261.087\\121\\98.63281\\-264.3188\\121\\96.17683\\-266.6641\\121\\94.72656\\-267.951\\121\\90.82031\\-271.2409\\121\\88.86719\\-272.9568\\121\\86.86474\\-274.4766\\121\\84.96094\\-275.8039\\121\\81.05469\\-278.7917\\121\\75.19531\\-282.7706\\121\\73.24219\\-283.6486\\121\\71.28906\\-285.0522\\121\\69.33594\\-286.29\\121\\65.89227\\-288.1484\\121\\65.42969\\-288.474\\121\\63.47656\\-289.2133\\121\\61.52344\\-290.239\\121\\59.57031\\-291.1035\\121\\57.61719\\-292.1768\\121\\51.75781\\-294.7219\\121\\49.80469\\-295.2027\\121\\45.89844\\-296.6445\\121\\43.94531\\-297.0702\\121\\41.99219\\-297.6839\\121\\40.03906\\-298.4823\\121\\36.13281\\-299.4216\\121\\34.17969\\-300.0804\\121\\32.22656\\-300.4933\\121\\26.36719\\-301.3386\\121\\22.46094\\-302.0735\\121\\20.50781\\-302.3664\\121\\16.60156\\-302.6776\\121\\10.74219\\-302.925\\121\\2.929688\\-303.1638\\121\\-0.9765625\\-303.1923\\121\\-4.882813\\-303.1243\\121\\-10.74219\\-302.925\\121\\-16.60156\\-302.6582\\121\\-20.50781\\-302.2581\\121"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002240"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "251"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "187"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-302.088\\123\\-26.36719\\-301.293\\123\\-32.22656\\-300.4344\\123\\-34.17969\\-299.9765\\123\\-36.13281\\-299.2824\\123\\-40.03906\\-298.3326\\123\\-41.99219\\-297.4629\\123\\-45.89844\\-296.4619\\123\\-47.85156\\-295.5337\\123\\-51.75781\\-294.4131\\123\\-53.71094\\-293.3853\\123\\-55.66406\\-292.6718\\123\\-57.61719\\-291.489\\123\\-59.57031\\-290.7545\\123\\-61.52344\\-289.5282\\123\\-63.47656\\-288.8809\\123\\-65.42969\\-287.7212\\123\\-67.38281\\-286.7542\\123\\-69.33594\\-285.404\\123\\-73.24219\\-283.0864\\123\\-75.19531\\-281.7874\\123\\-77.14844\\-280.7417\\123\\-81.05469\\-277.7664\\123\\-83.00781\\-276.5899\\123\\-84.96094\\-275.2966\\123\\-88.86719\\-272.3089\\123\\-92.77344\\-269.4717\\123\\-96.30036\\-266.6641\\123\\-98.63281\\-264.7026\\123\\-100.5859\\-263.3319\\123\\-102.5391\\-261.7491\\123\\-106.4453\\-258.2848\\123\\-108.1997\\-256.8984\\123\\-110.3516\\-255.0884\\123\\-116.5938\\-249.0859\\123\\-120.1766\\-245.1797\\123\\-122.0703\\-242.9872\\123\\-126.36\\-237.3672\\123\\-128.9195\\-233.4609\\123\\-130.0349\\-231.5078\\123\\-130.9429\\-229.5547\\123\\-132.094\\-227.6016\\123\\-132.8964\\-225.6484\\123\\-133.8914\\-223.6953\\123\\-134.6648\\-221.7422\\123\\-135.2366\\-219.7891\\123\\-136.0502\\-217.8359\\123\\-136.5729\\-215.8828\\123\\-136.9904\\-213.9297\\123\\-137.5127\\-211.9766\\123\\-138.1582\\-210.0234\\123\\-139.2348\\-204.1641\\123\\-139.7171\\-202.2109\\123\\-140.3015\\-198.3047\\123\\-140.6541\\-192.4453\\123\\-140.7907\\-186.5859\\123\\-140.7406\\-180.7266\\123\\-140.552\\-174.8672\\123\\-140.3245\\-170.9609\\123\\-139.965\\-167.0547\\123\\-139.2672\\-163.1484\\123\\-138.4555\\-157.2891\\123\\-137.6953\\-153.469\\123\\-137.1268\\-151.4297\\123\\-136.4968\\-147.5234\\123\\-136.0051\\-145.5703\\123\\-135.3671\\-143.6172\\123\\-134.3609\\-139.7109\\123\\-133.5321\\-137.7578\\123\\-132.1729\\-133.8516\\123\\-131.1695\\-131.8984\\123\\-130.5446\\-129.9453\\123\\-129.5573\\-127.9922\\123\\-128.7435\\-126.0391\\123\\-126.5924\\-122.1328\\123\\-123.8091\\-118.2266\\123\\-122.6294\\-116.2734\\123\\-120.9845\\-114.3203\\123\\-117.213\\-110.4141\\123\\-116.2109\\-109.2867\\123\\-114.2578\\-107.4778\\123\\-110.3516\\-104.2581\\123\\-106.4453\\-101.5543\\123\\-104.4922\\-100.3033\\123\\-102.5391\\-99.38731\\123\\-100.5859\\-98.11983\\123\\-98.63281\\-97.25919\\123\\-96.67969\\-96.15382\\123\\-94.72656\\-95.51087\\123\\-90.82031\\-94.05192\\123\\-86.91406\\-93.23885\\123\\-84.96094\\-92.57507\\123\\-83.00781\\-92.13216\\123\\-79.10156\\-91.46875\\123\\-75.19531\\-90.57477\\123\\-73.24219\\-90.23365\\123\\-65.42969\\-89.32949\\123\\-61.52344\\-88.57394\\123\\-59.57031\\-88.36328\\123\\-53.71094\\-87.92336\\123\\-45.89844\\-87.54463\\123\\-41.99219\\-87.21706\\123\\-38.08594\\-86.83383\\123\\-34.17969\\-86.5953\\123\\-30.27344\\-86.48202\\123\\-26.36719\\-86.46029\\123\\-22.46094\\-86.55054\\123\\-18.55469\\-86.80511\\123\\-16.60156\\-87.00098\\123\\-12.69531\\-87.68045\\123\\-8.789063\\-88.27649\\123\\-4.882813\\-89.49935\\123\\-0.9765625\\-90.37357\\123\\0.9765625\\-90.64379\\123\\2.929688\\-90.71886\\123\\6.835938\\-90.29688\\123\\8.789063\\-89.95141\\123\\10.74219\\-89.50674\\123\\12.69531\\-88.69318\\123\\14.64844\\-88.09898\\123\\18.55469\\-87.34277\\123\\20.50781\\-86.86122\\123\\22.46094\\-86.50096\\123\\24.41406\\-86.25425\\123\\28.32031\\-85.89839\\123\\30.27344\\-85.828\\123\\36.13281\\-85.50214\\123\\41.99219\\-85.47662\\123\\45.89844\\-85.55554\\123\\47.85156\\-85.65639\\123\\51.75781\\-85.95586\\123\\57.61719\\-86.60868\\123\\61.52344\\-87.32082\\123\\65.42969\\-87.80054\\123\\67.38281\\-87.95908\\123\\71.28906\\-88.45124\\123\\73.24219\\-88.81613\\123\\75.19531\\-89.33984\\123\\79.10156\\-90.07078\\123\\81.05469\\-90.56592\\123\\83.00781\\-91.34274\\123\\86.91406\\-92.34766\\123\\88.86719\\-93.19948\\123\\92.77344\\-94.22438\\123\\94.72656\\-95.12408\\123\\96.67969\\-95.84399\\123\\98.63281\\-96.70313\\123\\102.5391\\-98.9237\\123\\104.4922\\-99.9556\\123\\106.4453\\-101.2468\\123\\108.3984\\-102.2512\\123\\110.3516\\-103.7721\\123\\113.6147\\-106.5078\\123\\116.2109\\-108.8341\\123\\117.5795\\-110.4141\\123\\121.2\\-114.3203\\123\\122.7726\\-116.2734\\123\\123.8393\\-118.2266\\123\\126.4026\\-122.1328\\123\\127.3322\\-124.0859\\123\\128.4383\\-126.0391\\123\\129.0926\\-127.9922\\123\\130.0019\\-129.9453\\123\\130.6874\\-131.8984\\123\\131.1913\\-133.8516\\123\\132.0522\\-135.8047\\123\\133.1818\\-139.7109\\123\\133.9148\\-141.6641\\123\\134.4421\\-143.6172\\123\\135.2236\\-147.5234\\123\\136.1707\\-151.4297\\123\\136.4968\\-153.3828\\123\\137.2003\\-159.2422\\123\\137.948\\-163.1484\\123\\138.1866\\-165.1016\\123\\138.527\\-169.0078\\123\\138.8844\\-174.8672\\123\\139.0564\\-178.7734\\123\\139.1794\\-184.6328\\123\\139.1794\\-188.5391\\123\\139.0895\\-192.4453\\123\\138.6932\\-200.2578\\123\\138.3332\\-204.1641\\123\\138.0694\\-206.1172\\123\\137.2003\\-210.0234\\123\\136.5748\\-213.9297\\123\\136.1597\\-215.8828\\123\\135.3997\\-217.8359\\123\\134.7782\\-219.7891\\123\\134.0069\\-221.7422\\123\\131.8763\\-225.6484\\123\\130.7357\\-227.6016\\123\\129.4847\\-229.5547\\123\\128.4746\\-231.5078\\123\\125.9766\\-234.913\\123\\125.5466\\-235.4141\\123\\122.8555\\-239.3203\\123\\121.2523\\-241.2734\\123\\117.726\\-245.1797\\123\\116.3167\\-247.1328\\123\\114.5784\\-249.0859\\123\\112.3047\\-251.3147\\123\\110.3516\\-253.492\\123\\108.3984\\-255.5269\\123\\104.896\\-258.8516\\123\\102.5391\\-261.293\\123\\100.5859\\-263.0508\\123\\98.63281\\-264.6689\\123\\96.60326\\-266.6641\\123\\94.29348\\-268.6172\\123\\92.77344\\-269.7983\\123\\88.86719\\-273.2589\\123\\86.91406\\-274.8401\\123\\84.96094\\-276.0766\\123\\83.00781\\-277.5252\\123\\81.99426\\-278.3828\\123\\79.10156\\-280.5252\\123\\77.14844\\-281.667\\123\\75.19531\\-282.9998\\123\\73.24219\\-283.958\\123\\72.89907\\-284.2422\\123\\69.33594\\-286.5922\\123\\67.38281\\-287.5158\\123\\65.42969\\-288.6998\\123\\63.47656\\-289.3601\\123\\61.52344\\-290.5254\\123\\59.57031\\-291.2851\\123\\57.61719\\-292.4565\\123\\55.66406\\-293.1869\\123\\53.71094\\-294.19\\123\\51.75781\\-294.8593\\123\\49.80469\\-295.3203\\123\\47.85156\\-296.1473\\123\\45.89844\\-296.7847\\123\\43.94531\\-297.1983\\123\\41.99219\\-297.9948\\123\\40.03906\\-298.6219\\123\\38.08594\\-299.0542\\123\\36.13281\\-299.593\\123\\34.17969\\-300.2515\\123\\32.22656\\-300.6024\\123\\26.36719\\-301.4671\\123\\22.46094\\-302.234\\123\\20.50781\\-302.4693\\123\\16.60156\\-302.7469\\123\\6.835938\\-303.1675\\123\\2.929688\\-303.3105\\123\\-0.9765625\\-303.3301\\123\\-6.835938\\-303.1757\\123\\-16.60156\\-302.7351\\123\\-20.50781\\-302.37\\123"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002239"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "245"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "188"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-302.2232\\125\\-26.36719\\-301.4066\\125\\-32.22656\\-300.5428\\125\\-34.17969\\-300.1396\\125\\-36.13281\\-299.4531\\125\\-40.03906\\-298.4934\\125\\-41.99219\\-297.6458\\125\\-43.94531\\-297.0419\\125\\-45.89844\\-296.6022\\125\\-47.85156\\-295.7186\\125\\-51.75781\\-294.5595\\125\\-53.71094\\-293.5662\\125\\-55.66406\\-292.8165\\125\\-57.61719\\-291.6918\\125\\-59.57031\\-290.8881\\125\\-61.52344\\-289.7123\\125\\-63.47656\\-288.9968\\125\\-67.38281\\-286.8823\\125\\-69.33594\\-285.5152\\125\\-71.5332\\-284.2422\\125\\-75.19531\\-281.9282\\125\\-77.14844\\-280.8607\\125\\-77.76563\\-280.3359\\125\\-81.05469\\-277.8599\\125\\-83.00781\\-276.659\\125\\-84.96094\\-275.3145\\125\\-88.86719\\-272.2664\\125\\-92.77344\\-269.384\\125\\-94.72656\\-267.788\\125\\-98.63281\\-264.3928\\125\\-100.5859\\-263.0858\\125\\-102.5391\\-261.5118\\125\\-106.4453\\-257.875\\125\\-110.3516\\-254.4716\\125\\-111.7986\\-252.9922\\125\\-116.2109\\-248.7135\\125\\-118.1641\\-246.4744\\125\\-119.1998\\-245.1797\\125\\-121.1267\\-243.2266\\125\\-122.7601\\-241.2734\\125\\-124.1108\\-239.3203\\125\\-125.3101\\-237.3672\\125\\-126.8467\\-235.4141\\125\\-128.1573\\-233.4609\\125\\-129.1587\\-231.5078\\125\\-130.3034\\-229.5547\\125\\-131.0813\\-227.6016\\125\\-132.1411\\-225.6484\\125\\-132.8881\\-223.6953\\125\\-133.8127\\-221.7422\\125\\-134.5546\\-219.7891\\125\\-135.1019\\-217.8359\\125\\-135.8302\\-215.8828\\125\\-136.4042\\-213.9297\\125\\-137.112\\-210.0234\\125\\-138.1712\\-206.1172\\125\\-138.4776\\-204.1641\\125\\-139.6719\\-194.3984\\125\\-139.965\\-190.4922\\125\\-140.0761\\-186.5859\\125\\-140.066\\-182.6797\\125\\-139.9762\\-178.7734\\125\\-139.7594\\-174.8672\\125\\-139.1174\\-169.0078\\125\\-138.5732\\-163.1484\\125\\-138.0744\\-159.2422\\125\\-137.1419\\-155.3359\\125\\-136.3386\\-149.4766\\125\\-135.8446\\-147.5234\\125\\-135.187\\-145.5703\\125\\-134.2961\\-141.6641\\125\\-133.487\\-139.7109\\125\\-132.2304\\-135.8047\\125\\-131.2487\\-133.8516\\125\\-130.6479\\-131.8984\\125\\-128.1189\\-126.0391\\125\\-124.6545\\-120.1797\\125\\-122.0703\\-116.5645\\125\\-120.3419\\-114.3203\\125\\-118.1641\\-112.007\\125\\-116.2109\\-109.8251\\125\\-114.2578\\-107.9019\\125\\-110.3516\\-105.075\\125\\-108.3984\\-103.4323\\125\\-106.4453\\-101.9483\\125\\-100.5753\\-98.69531\\125\\-96.83891\\-96.74219\\125\\-94.72656\\-95.84375\\125\\-92.77344\\-95.22987\\125\\-90.82031\\-94.40266\\125\\-88.86719\\-93.93382\\125\\-86.91406\\-93.61127\\125\\-84.96094\\-93.15438\\125\\-83.00781\\-92.55221\\125\\-81.05469\\-92.16888\\125\\-75.19531\\-91.21056\\125\\-73.24219\\-90.65746\\125\\-71.28906\\-90.34857\\125\\-65.42969\\-89.68555\\125\\-63.47656\\-89.42407\\125\\-59.57031\\-88.71514\\125\\-57.61719\\-88.45478\\125\\-53.71094\\-88.09692\\125\\-43.94531\\-87.65831\\125\\-34.17969\\-87.03214\\125\\-30.27344\\-86.86212\\125\\-26.36719\\-86.81881\\125\\-24.41406\\-86.8766\\125\\-16.60156\\-87.37702\\125\\-10.74219\\-88.18652\\125\\-8.789063\\-88.60416\\125\\-6.835938\\-89.3377\\125\\-2.929688\\-90.33385\\125\\-0.9765625\\-90.93707\\125\\0.9765625\\-91.26693\\125\\2.929688\\-91.35534\\125\\4.882813\\-91.18799\\125\\6.835938\\-90.80143\\125\\10.74219\\-89.84846\\125\\12.69531\\-89.28291\\125\\14.64844\\-88.43116\\125\\16.60156\\-87.97739\\125\\20.50781\\-87.31655\\125\\24.41406\\-86.56087\\125\\30.27344\\-86.01116\\125\\34.17969\\-85.79198\\125\\38.08594\\-85.69592\\125\\43.94531\\-85.64489\\125\\45.89844\\-85.68846\\125\\51.75781\\-86.07554\\125\\55.66406\\-86.47273\\125\\57.61719\\-86.75231\\125\\59.57031\\-87.17939\\125\\63.47656\\-87.72263\\125\\67.38281\\-88.08334\\125\\69.33594\\-88.34375\\125\\71.28906\\-88.73438\\125\\75.19531\\-89.61607\\125\\79.10156\\-90.34222\\125\\81.05469\\-91.07669\\125\\83.00781\\-91.66297\\125\\84.96094\\-92.14307\\125\\88.86719\\-93.54673\\125\\90.82031\\-93.99911\\125\\92.77344\\-94.66997\\125\\94.72656\\-95.53223\\125\\96.67969\\-96.19965\\125\\98.63281\\-97.30114\\125\\100.5859\\-98.23114\\125\\102.5391\\-99.44904\\125\\104.4922\\-100.4101\\125\\107.9699\\-102.6016\\125\\110.3516\\-104.3009\\125\\114.2578\\-107.558\\125\\116.2109\\-109.4163\\125\\118.1641\\-111.6132\\125\\120.6782\\-114.3203\\125\\122.1591\\-116.2734\\125\\123.2993\\-118.2266\\125\\124.6094\\-120.1797\\125\\125.579\\-122.1328\\125\\126.7998\\-124.0859\\125\\128.6621\\-127.9922\\125\\129.2602\\-129.9453\\125\\130.1437\\-131.8984\\125\\130.7292\\-133.8516\\125\\131.1786\\-135.8047\\125\\131.9867\\-137.7578\\125\\132.5824\\-139.7109\\125\\133.0625\\-141.6641\\125\\134.252\\-145.5703\\125\\135.3227\\-151.4297\\125\\136.203\\-155.3359\\125\\136.676\\-159.2422\\125\\136.9934\\-163.1484\\125\\137.207\\-165.1016\\125\\137.9943\\-170.9609\\125\\138.2508\\-174.8672\\125\\138.4421\\-180.7266\\125\\138.4837\\-188.5391\\125\\138.3805\\-194.3984\\125\\138.2015\\-198.3047\\125\\138.0615\\-200.2578\\125\\137.7773\\-202.2109\\125\\137.1017\\-206.1172\\125\\136.6638\\-210.0234\\125\\136.3824\\-211.9766\\125\\135.9037\\-213.9297\\125\\135.2336\\-215.8828\\125\\134.7114\\-217.8359\\125\\134.0278\\-219.7891\\125\\132.9845\\-221.7422\\125\\132.0854\\-223.6953\\125\\130.9291\\-225.6484\\125\\129.9561\\-227.6016\\125\\128.8545\\-229.5547\\125\\126.3997\\-233.4609\\125\\123.5532\\-237.3672\\125\\122.376\\-239.3203\\125\\120.902\\-241.2734\\125\\117.4844\\-245.1797\\125\\116.2109\\-246.9248\\125\\114.4501\\-249.0859\\125\\112.3047\\-251.2731\\125\\109.0566\\-254.9453\\125\\105.0453\\-258.8516\\125\\102.5391\\-261.5042\\125\\98.96609\\-264.7109\\125\\96.67969\\-266.972\\125\\94.72656\\-268.6589\\125\\92.77344\\-270.0332\\125\\90.82031\\-271.7233\\125\\88.86719\\-273.5309\\125\\86.91406\\-275.1427\\125\\83.00781\\-277.7969\\125\\82.36417\\-278.3828\\125\\79.69365\\-280.3359\\125\\79.10156\\-280.8475\\125\\71.28906\\-285.5063\\125\\69.33594\\-286.8289\\125\\67.38281\\-287.7376\\125\\65.42969\\-288.8809\\125\\63.47656\\-289.5426\\125\\61.52344\\-290.7293\\125\\59.57031\\-291.4826\\125\\57.61719\\-292.6622\\125\\55.66406\\-293.3858\\125\\53.71094\\-294.4103\\125\\49.80469\\-295.4893\\125\\47.85156\\-296.3795\\125\\43.94531\\-297.3689\\125\\41.99219\\-298.2396\\125\\38.08594\\-299.189\\125\\36.02184\\-299.8672\\125\\34.17969\\-300.3644\\125\\28.32031\\-301.2577\\125\\26.36719\\-301.609\\125\\24.41406\\-302.0608\\125\\22.46094\\-302.3477\\125\\18.55469\\-302.7065\\125\\4.882813\\-303.3973\\125\\0.9765625\\-303.5033\\125\\-2.929688\\-303.4661\\125\\-10.74219\\-303.1053\\125\\-18.55469\\-302.6648\\125"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002238"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "243"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "189"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-24.41406\\-302.0067\\127\\-26.36719\\-301.5423\\127\\-28.32031\\-301.1966\\127\\-32.22656\\-300.6249\\127\\-34.17969\\-300.2616\\127\\-38.08594\\-299.05\\127\\-40.03906\\-298.6086\\127\\-43.94531\\-297.1491\\127\\-45.89844\\-296.7143\\127\\-49.80469\\-295.1906\\127\\-51.75781\\-294.6975\\127\\-53.71094\\-293.7551\\127\\-55.66406\\-292.955\\127\\-59.57031\\-291.0018\\127\\-61.52344\\-289.9152\\127\\-63.47656\\-289.0771\\127\\-65.34529\\-288.1484\\127\\-67.38281\\-287.0268\\127\\-69.33594\\-285.6943\\127\\-71.28906\\-284.5919\\127\\-75.19531\\-282.0712\\127\\-77.14844\\-280.9633\\127\\-77.90024\\-280.3359\\127\\-81.05469\\-277.9643\\127\\-83.00781\\-276.7481\\127\\-84.96094\\-275.3453\\127\\-88.86719\\-272.2268\\127\\-92.77344\\-269.31\\127\\-94.72656\\-267.7013\\127\\-98.63281\\-264.1814\\127\\-100.5859\\-262.7662\\127\\-102.5391\\-261.2427\\127\\-105.067\\-258.8516\\127\\-108.3984\\-255.8625\\127\\-110.3516\\-253.9824\\127\\-111.2421\\-252.9922\\127\\-116.2109\\-248.0359\\127\\-120.477\\-243.2266\\127\\-122.0703\\-241.1255\\127\\-123.2778\\-239.3203\\127\\-124.6985\\-237.3672\\127\\-127.9297\\-232.3379\\127\\-128.5022\\-231.5078\\127\\-129.3521\\-229.5547\\127\\-130.4342\\-227.6016\\127\\-131.1147\\-225.6484\\127\\-132.1482\\-223.6953\\127\\-132.8522\\-221.7422\\127\\-134.438\\-217.8359\\127\\-135.4852\\-213.9297\\127\\-136.1342\\-211.9766\\127\\-136.5222\\-210.0234\\127\\-137.0989\\-206.1172\\127\\-137.936\\-202.2109\\127\\-138.2392\\-200.2578\\127\\-138.4386\\-198.3047\\127\\-138.688\\-194.3984\\127\\-138.9608\\-186.5859\\127\\-138.946\\-180.7266\\127\\-138.7798\\-174.8672\\127\\-138.4649\\-169.0078\\127\\-138.1121\\-165.1016\\127\\-137.8461\\-163.1484\\127\\-137.3965\\-161.1953\\127\\-136.8506\\-157.2891\\127\\-136.4334\\-153.3828\\127\\-136.0677\\-151.4297\\127\\-135.0348\\-147.5234\\127\\-134.1706\\-143.6172\\127\\-133.3866\\-141.6641\\127\\-132.2095\\-137.7578\\127\\-131.3147\\-135.8047\\127\\-130.7419\\-133.8516\\127\\-130.0019\\-131.8984\\127\\-129.0953\\-129.9453\\127\\-128.3976\\-127.9922\\127\\-127.2599\\-126.0391\\127\\-126.32\\-124.0859\\127\\-123.8675\\-120.1797\\127\\-122.7371\\-118.2266\\127\\-121.2086\\-116.2734\\127\\-115.878\\-110.4141\\127\\-114.2578\\-108.7301\\127\\-108.3984\\-103.8974\\127\\-106.4453\\-102.5318\\127\\-104.4922\\-101.3941\\127\\-102.5391\\-100.1263\\127\\-100.5859\\-99.28891\\127\\-98.63281\\-98.07386\\127\\-96.67969\\-97.25584\\127\\-94.72656\\-96.2036\\127\\-92.77344\\-95.6203\\127\\-88.86719\\-94.2282\\127\\-84.96094\\-93.53436\\127\\-83.00781\\-93.1282\\127\\-81.05469\\-92.55411\\127\\-79.10156\\-92.17596\\127\\-75.19531\\-91.64592\\127\\-73.24219\\-91.30494\\127\\-69.33594\\-90.47388\\127\\-67.38281\\-90.17693\\127\\-63.47656\\-89.75064\\127\\-59.57031\\-89.2213\\127\\-57.61719\\-88.87543\\127\\-53.71094\\-88.34503\\127\\-51.75781\\-88.20654\\127\\-34.17969\\-87.41737\\127\\-32.22656\\-87.31158\\127\\-28.32031\\-87.24621\\127\\-24.41406\\-87.28761\\127\\-18.55469\\-87.54677\\127\\-14.64844\\-87.84937\\127\\-12.69531\\-88.07444\\127\\-10.74219\\-88.43144\\127\\-8.789063\\-89.125\\127\\-4.882813\\-90.14745\\127\\-2.872243\\-90.88281\\127\\-0.9765625\\-91.47232\\127\\0.9765625\\-91.66517\\127\\2.929688\\-91.72989\\127\\4.882813\\-91.625\\127\\6.835938\\-91.36794\\127\\10.74219\\-90.21779\\127\\12.69531\\-89.70035\\127\\16.60156\\-88.20514\\127\\20.50781\\-87.65952\\127\\24.41406\\-86.95274\\127\\28.32031\\-86.42114\\127\\34.17969\\-86.02839\\127\\40.03906\\-85.82399\\127\\45.89844\\-85.84976\\127\\53.71094\\-86.32744\\127\\55.66406\\-86.57406\\127\\59.57031\\-87.33487\\127\\63.47656\\-87.82132\\127\\67.38281\\-88.22001\\127\\69.33594\\-88.54313\\127\\73.24219\\-89.47825\\127\\77.14844\\-90.18295\\127\\79.10156\\-90.69581\\127\\81.05469\\-91.45691\\127\\84.96094\\-92.47681\\127\\86.91406\\-93.28718\\127\\90.82031\\-94.29053\\127\\92.77344\\-95.19482\\127\\94.72656\\-95.86032\\127\\96.66666\\-96.74219\\127\\98.63281\\-97.73661\\127\\100.5859\\-98.88755\\127\\102.5391\\-99.8807\\127\\104.4922\\-101.0286\\127\\106.4453\\-102.0445\\127\\109.829\\-104.5547\\127\\114.2578\\-108.09\\127\\116.5613\\-110.4141\\127\\118.1384\\-112.3672\\127\\120.1172\\-114.5889\\127\\122.8711\\-118.2266\\127\\123.9168\\-120.1797\\127\\126.169\\-124.0859\\127\\127.0414\\-126.0391\\127\\128.0441\\-127.9922\\127\\128.7971\\-129.9453\\127\\129.3433\\-131.8984\\127\\130.2083\\-133.8516\\127\\131.1252\\-137.7578\\127\\132.4542\\-141.6641\\127\\133.2976\\-145.5703\\127\\133.9139\\-147.5234\\127\\134.3738\\-149.4766\\127\\135.294\\-155.3359\\127\\136.0556\\-159.2422\\127\\136.5197\\-163.1484\\127\\137.1159\\-172.9141\\127\\137.4364\\-178.7734\\127\\137.608\\-182.6797\\127\\137.6546\\-188.5391\\127\\137.5031\\-192.4453\\127\\137.1705\\-198.3047\\127\\136.5836\\-206.1172\\127\\136.0285\\-210.0234\\127\\135.4705\\-211.9766\\127\\134.5572\\-215.8828\\127\\133.8882\\-217.8359\\127\\132.9733\\-219.7891\\127\\132.1637\\-221.7422\\127\\131.0585\\-223.6953\\127\\130.2399\\-225.6484\\127\\129.1183\\-227.6016\\127\\128.1906\\-229.5547\\127\\126.9234\\-231.5078\\127\\125.5388\\-233.4609\\127\\124.4888\\-235.4141\\127\\121.7963\\-239.3203\\127\\120.5448\\-241.2734\\127\\118.8996\\-243.2266\\127\\115.8023\\-247.1328\\127\\114.3438\\-249.0859\\127\\112.3047\\-251.2893\\127\\109.1648\\-254.9453\\127\\105.2007\\-258.8516\\127\\102.5391\\-261.6856\\127\\99.25426\\-264.7109\\127\\96.67969\\-267.2709\\127\\94.72656\\-269.018\\127\\92.77344\\-270.4022\\127\\88.86719\\-273.806\\127\\86.91406\\-275.3775\\127\\80.07813\\-280.3359\\127\\79.10156\\-281.0934\\127\\77.13783\\-282.2891\\127\\75.19531\\-283.3592\\127\\73.24219\\-284.7117\\127\\71.28906\\-285.7635\\127\\69.33594\\-287.0428\\127\\65.42969\\-289.0346\\127\\63.47656\\-289.7784\\127\\61.52344\\-290.9037\\127\\59.57031\\-291.7336\\127\\57.61719\\-292.8649\\127\\55.66406\\-293.5929\\127\\53.71094\\-294.5739\\127\\49.80469\\-295.6933\\127\\47.85156\\-296.5577\\127\\45.89844\\-296.9952\\127\\43.94531\\-297.5536\\127\\41.99219\\-298.4109\\127\\38.08594\\-299.3234\\127\\36.13281\\-300.0416\\127\\34.17969\\-300.4704\\127\\28.32031\\-301.3588\\127\\24.41406\\-302.2012\\127\\22.46094\\-302.4441\\127\\18.55469\\-302.7804\\127\\14.64844\\-302.9651\\127\\10.74219\\-303.2162\\127\\2.929688\\-303.6599\\127\\-0.9765625\\-303.7042\\127\\-4.882813\\-303.5767\\127\\-10.74219\\-303.2249\\127\\-14.64844\\-302.9542\\127\\-18.55469\\-302.7351\\127\\-22.46094\\-302.3381\\127"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002237"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "253"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "190"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.882813\\-303.8256\\129\\-12.69531\\-303.1875\\129\\-20.50781\\-302.6516\\129\\-24.41406\\-302.1761\\129\\-26.36719\\-301.6916\\129\\-28.32031\\-301.3156\\129\\-34.17969\\-300.394\\129\\-36.06912\\-299.8672\\129\\-38.08594\\-299.1852\\129\\-40.03906\\-298.7221\\129\\-41.99219\\-298.1378\\129\\-43.94531\\-297.2802\\129\\-45.89844\\-296.808\\129\\-47.85156\\-296.1607\\129\\-49.80469\\-295.2915\\129\\-51.75781\\-294.8096\\129\\-53.69636\\-294.0078\\129\\-57.61719\\-292.2417\\129\\-59.57031\\-291.119\\129\\-63.47656\\-289.1605\\129\\-65.42969\\-288.2813\\129\\-71.28906\\-284.7709\\129\\-73.24219\\-283.3669\\129\\-75.16347\\-282.2891\\129\\-77.14844\\-281.0572\\129\\-81.05469\\-278.0927\\129\\-83.00781\\-276.8615\\129\\-84.96094\\-275.4148\\129\\-91.0443\\-270.5703\\129\\-92.77344\\-269.2794\\129\\-94.72656\\-267.6345\\129\\-98.63281\\-264.0533\\129\\-100.5859\\-262.4467\\129\\-102.5391\\-260.9984\\129\\-104.7678\\-258.8516\\129\\-108.3984\\-255.594\\129\\-110.3516\\-253.6062\\129\\-112.3047\\-251.4948\\129\\-114.7498\\-249.0859\\129\\-116.5213\\-247.1328\\129\\-117.9497\\-245.1797\\129\\-121.245\\-241.2734\\129\\-122.7553\\-239.3203\\129\\-123.8839\\-237.3672\\129\\-125.1134\\-235.4141\\129\\-126.4812\\-233.4609\\129\\-127.5152\\-231.5078\\129\\-128.6834\\-229.5547\\129\\-129.4735\\-227.6016\\129\\-130.4874\\-225.6484\\129\\-131.1478\\-223.6953\\129\\-132.0886\\-221.7422\\129\\-133.4194\\-217.8359\\129\\-134.2238\\-215.8828\\129\\-134.7355\\-213.9297\\129\\-135.1376\\-211.9766\\129\\-136.1707\\-208.0703\\129\\-136.5017\\-206.1172\\129\\-137.1596\\-200.2578\\129\\-137.4435\\-198.3047\\129\\-137.91\\-194.3984\\129\\-138.0487\\-192.4453\\129\\-138.2694\\-186.5859\\129\\-138.2859\\-180.7266\\129\\-138.1686\\-176.8203\\129\\-137.981\\-172.9141\\129\\-137.8183\\-170.9609\\129\\-137.3291\\-167.0547\\129\\-136.3911\\-157.2891\\129\\-136.1057\\-155.3359\\129\\-135.2041\\-151.4297\\129\\-134.4702\\-147.5234\\129\\-133.9567\\-145.5703\\129\\-133.2409\\-143.6172\\129\\-132.1857\\-139.7109\\129\\-131.2941\\-137.7578\\129\\-130.1193\\-133.8516\\129\\-129.2164\\-131.8984\\129\\-128.5786\\-129.9453\\129\\-127.5405\\-127.9922\\129\\-126.6297\\-126.0391\\129\\-125.4157\\-124.0859\\129\\-124.4888\\-122.1328\\129\\-122.0703\\-118.3646\\129\\-120.5716\\-116.2734\\129\\-117.1162\\-112.3672\\129\\-114.2578\\-109.3282\\129\\-112.3047\\-107.539\\129\\-110.3516\\-105.9745\\129\\-108.3984\\-104.5316\\129\\-104.4922\\-101.7802\\129\\-102.5042\\-100.6484\\129\\-98.63281\\-98.64191\\129\\-94.71241\\-96.74219\\129\\-92.77344\\-95.95979\\129\\-90.82031\\-95.4002\\129\\-88.86719\\-94.6573\\129\\-86.91406\\-94.12322\\129\\-83.00781\\-93.51393\\129\\-81.05469\\-93.13034\\129\\-79.10156\\-92.57685\\129\\-77.14844\\-92.21599\\129\\-71.28906\\-91.45488\\129\\-69.33594\\-91.07388\\129\\-67.38281\\-90.5638\\129\\-65.42969\\-90.25983\\129\\-57.61719\\-89.36724\\129\\-51.75781\\-88.49335\\129\\-49.80469\\-88.33609\\129\\-41.99219\\-87.94128\\129\\-32.22656\\-87.62547\\129\\-28.32031\\-87.58691\\129\\-24.41406\\-87.62122\\129\\-16.60156\\-87.89321\\129\\-14.64844\\-88.03247\\129\\-12.69531\\-88.3112\\129\\-10.74219\\-88.87366\\129\\-8.789063\\-89.54231\\129\\-6.835938\\-90.00277\\129\\-4.882813\\-90.57974\\129\\-2.929688\\-91.45197\\129\\-0.9765625\\-91.84882\\129\\0.9765625\\-92.04717\\129\\2.929688\\-92.11317\\129\\4.882813\\-92.00586\\129\\8.789063\\-91.41492\\129\\10.74219\\-90.70461\\129\\14.64844\\-89.44669\\129\\16.60156\\-88.56348\\129\\18.55469\\-88.14967\\129\\22.46094\\-87.74164\\129\\26.36719\\-87.0639\\129\\28.32031\\-86.77979\\129\\32.22656\\-86.41246\\129\\38.08594\\-86.13242\\129\\40.03906\\-86.07554\\129\\45.89844\\-86.08828\\129\\51.75781\\-86.33515\\129\\53.71094\\-86.48202\\129\\55.66406\\-86.75231\\129\\59.57031\\-87.45147\\129\\61.52344\\-87.71509\\129\\65.42969\\-88.10199\\129\\67.38281\\-88.37439\\129\\71.28906\\-89.34187\\129\\75.19531\\-90.03751\\129\\77.14844\\-90.4687\\129\\79.10156\\-91.19718\\129\\83.00781\\-92.20536\\129\\84.96094\\-92.9677\\129\\86.91406\\-93.60627\\129\\88.86719\\-94.02399\\129\\90.82031\\-94.70101\\129\\92.77344\\-95.5493\\129\\94.72656\\-96.23186\\129\\96.67969\\-97.30859\\129\\98.63281\\-98.21687\\129\\100.5859\\-99.43848\\129\\102.5391\\-100.2706\\129\\106.2861\\-102.6016\\129\\108.3984\\-104.005\\129\\110.3516\\-105.5859\\129\\113.7494\\-108.4609\\129\\115.7048\\-110.4141\\129\\118.1641\\-113.1438\\129\\120.8972\\-116.2734\\129\\122.237\\-118.2266\\129\\123.2778\\-120.1797\\129\\124.4857\\-122.1328\\129\\125.3443\\-124.0859\\129\\126.4743\\-126.0391\\129\\127.2234\\-127.9922\\129\\128.2077\\-129.9453\\129\\128.8499\\-131.8984\\129\\129.3876\\-133.8516\\129\\130.1157\\-135.8047\\129\\130.6106\\-137.7578\\129\\131.0049\\-139.7109\\129\\131.5104\\-141.6641\\129\\132.2021\\-143.6172\\129\\133.4246\\-149.4766\\129\\133.9815\\-151.4297\\129\\134.3725\\-153.3828\\129\\134.6539\\-155.3359\\129\\135.1149\\-159.2422\\129\\135.9482\\-165.1016\\129\\136.3334\\-169.0078\\129\\136.5423\\-172.9141\\129\\136.7373\\-178.7734\\129\\136.817\\-182.6797\\129\\136.8195\\-188.5391\\129\\136.7496\\-192.4453\\129\\136.5497\\-198.3047\\129\\136.3051\\-202.2109\\129\\135.7422\\-206.1579\\129\\134.7355\\-211.9766\\129\\134.3281\\-213.9297\\129\\133.7891\\-215.4959\\129\\132.1771\\-219.7891\\129\\131.1393\\-221.7422\\129\\130.438\\-223.6953\\129\\129.3395\\-225.6484\\129\\128.5786\\-227.6016\\129\\127.3541\\-229.5547\\129\\126.3323\\-231.5078\\129\\125\\-233.4609\\129\\122.793\\-237.3672\\129\\122.0703\\-238.3438\\129\\120.1172\\-241.2644\\129\\117.2319\\-245.1797\\129\\114.2658\\-249.0859\\129\\112.3047\\-251.3377\\129\\109.2613\\-254.9453\\129\\107.3694\\-256.8984\\129\\106.4453\\-257.7484\\129\\101.6507\\-262.7578\\129\\100.5859\\-263.665\\129\\96.67969\\-267.5329\\129\\94.72656\\-269.2881\\129\\93.10176\\-270.5703\\129\\88.47128\\-274.4766\\129\\86.91406\\-275.599\\129\\83.00781\\-278.6006\\129\\79.10156\\-281.3248\\129\\77.14844\\-282.617\\129\\75.19531\\-283.5932\\129\\73.24219\\-284.965\\129\\71.19846\\-286.1953\\129\\67.38281\\-288.3646\\129\\65.42969\\-289.1793\\129\\61.52344\\-291.0781\\129\\59.57031\\-292.1069\\129\\57.61719\\-293.026\\129\\53.71094\\-294.7447\\129\\51.75781\\-295.2178\\129\\47.85156\\-296.7074\\129\\45.89844\\-297.123\\129\\43.94531\\-297.7883\\129\\41.99219\\-298.553\\129\\40.03906\\-298.9661\\129\\38.08594\\-299.5034\\129\\36.13281\\-300.1949\\129\\34.17969\\-300.5759\\129\\28.32031\\-301.4809\\129\\26.36719\\-301.95\\129\\24.41406\\-302.3152\\129\\22.46094\\-302.5421\\129\\18.55469\\-302.8293\\129\\16.60156\\-302.9189\\129\\8.789063\\-303.4756\\129\\4.882813\\-303.811\\129\\0.9765625\\-303.9478\\129\\-2.929688\\-303.9221\\129"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002236"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "255"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "191"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.835938\\-303.9221\\131\\-12.69531\\-303.3039\\131\\-16.60156\\-302.9759\\131\\-20.50781\\-302.7239\\131\\-24.41406\\-302.3152\\131\\-28.32031\\-301.4447\\131\\-34.17969\\-300.5086\\131\\-36.13281\\-300.0542\\131\\-38.08594\\-299.3234\\131\\-41.99219\\-298.33\\131\\-43.94531\\-297.4289\\131\\-47.85156\\-296.3556\\131\\-49.80469\\-295.4184\\131\\-51.75781\\-294.9181\\131\\-53.71094\\-294.2537\\131\\-55.66406\\-293.2363\\131\\-57.61719\\-292.4441\\131\\-59.57031\\-291.2409\\131\\-61.52344\\-290.3872\\131\\-63.47656\\-289.2485\\131\\-65.42969\\-288.4618\\131\\-65.85385\\-288.1484\\131\\-69.22743\\-286.1953\\131\\-71.28906\\-284.9151\\131\\-73.24219\\-283.4766\\131\\-75.19531\\-282.4813\\131\\-77.14844\\-281.1793\\131\\-80.94524\\-278.3828\\131\\-83.00781\\-276.9652\\131\\-84.96094\\-275.5117\\131\\-92.77344\\-269.2928\\131\\-94.72656\\-267.6223\\131\\-98.63281\\-263.9868\\131\\-100.5859\\-262.2562\\131\\-102.5124\\-260.8047\\131\\-104.4922\\-258.7926\\131\\-106.5421\\-256.8984\\131\\-108.3984\\-255.2886\\131\\-110.5183\\-252.9922\\131\\-112.2289\\-251.0391\\131\\-114.2578\\-249.0254\\131\\-117.4216\\-245.1797\\131\\-120.7205\\-241.2734\\131\\-122.0703\\-239.2667\\131\\-123.2382\\-237.3672\\131\\-124.5473\\-235.4141\\131\\-125.5049\\-233.4609\\131\\-126.8043\\-231.5078\\131\\-128.8757\\-227.6016\\131\\-129.5965\\-225.6484\\131\\-130.5658\\-223.6953\\131\\-131.1286\\-221.7422\\131\\-132.0141\\-219.7891\\131\\-133.2409\\-215.8828\\131\\-134.0209\\-213.9297\\131\\-134.4858\\-211.9766\\131\\-135.2174\\-208.0703\\131\\-136.0822\\-204.1641\\131\\-136.3954\\-202.2109\\131\\-136.7249\\-198.3047\\131\\-137.0216\\-192.4453\\131\\-137.2204\\-186.5859\\131\\-137.2681\\-180.7266\\131\\-137.0929\\-174.8672\\131\\-136.8266\\-169.0078\\131\\-136.615\\-165.1016\\131\\-136.4588\\-163.1484\\131\\-135.9992\\-159.2422\\131\\-135.2439\\-155.3359\\131\\-134.3168\\-149.4766\\131\\-133.109\\-145.5703\\131\\-132.0766\\-141.6641\\131\\-131.2641\\-139.7109\\131\\-130.7635\\-137.7578\\131\\-130.1565\\-135.8047\\131\\-129.2834\\-133.8516\\131\\-128.7197\\-131.8984\\131\\-126.9124\\-127.9922\\131\\-125.8138\\-126.0391\\131\\-124.8498\\-124.0859\\131\\-123.6757\\-122.1328\\131\\-122.7327\\-120.1797\\131\\-121.2928\\-118.2266\\131\\-118.1641\\-114.4171\\131\\-116.4288\\-112.3672\\131\\-114.6603\\-110.4141\\131\\-112.3047\\-108.1657\\131\\-110.2283\\-106.5078\\131\\-108.3984\\-105.1989\\131\\-106.4453\\-103.661\\131\\-104.4922\\-102.2445\\131\\-102.5391\\-101.2249\\131\\-100.5859\\-100.0206\\131\\-98.63281\\-99.2709\\131\\-96.67969\\-98.08496\\131\\-94.72656\\-97.33531\\131\\-92.77344\\-96.32006\\131\\-88.86719\\-95.21336\\131\\-86.91406\\-94.47801\\131\\-84.96094\\-94.04887\\131\\-81.05469\\-93.52563\\131\\-79.10156\\-93.15907\\131\\-77.14844\\-92.64893\\131\\-75.19531\\-92.26765\\131\\-69.33594\\-91.52455\\131\\-65.42969\\-90.68196\\131\\-61.52344\\-90.0814\\131\\-53.71094\\-89.30078\\131\\-51.75781\\-89.05451\\131\\-49.80469\\-88.69859\\131\\-47.85156\\-88.50829\\131\\-43.94531\\-88.23214\\131\\-40.03906\\-88.03599\\131\\-32.22656\\-87.85727\\131\\-26.36719\\-87.82132\\131\\-22.46094\\-87.88763\\131\\-16.60156\\-88.08493\\131\\-14.64844\\-88.2595\\131\\-12.69531\\-88.70034\\131\\-10.74219\\-89.3987\\131\\-6.835938\\-90.3541\\131\\-4.882813\\-91.21282\\131\\-2.929688\\-91.82902\\131\\-0.9765625\\-92.21202\\131\\0.9765625\\-92.45651\\131\\2.929688\\-92.58675\\131\\4.882813\\-92.46421\\131\\6.835938\\-92.19785\\131\\10.74219\\-91.33504\\131\\12.69531\\-90.44662\\131\\16.60156\\-89.16322\\131\\18.55469\\-88.44819\\131\\20.50781\\-88.15709\\131\\26.36719\\-87.49783\\131\\32.22656\\-86.71473\\131\\36.13281\\-86.4545\\131\\40.03906\\-86.32359\\131\\43.94531\\-86.27501\\131\\47.85156\\-86.34671\\131\\51.75781\\-86.52041\\131\\53.71094\\-86.71473\\131\\59.57031\\-87.59167\\131\\65.42969\\-88.20788\\131\\67.38281\\-88.54313\\131\\69.33594\\-89.13343\\131\\71.28906\\-89.54004\\131\\75.19531\\-90.23738\\131\\79.10156\\-91.51266\\131\\81.05469\\-91.95161\\131\\83.00781\\-92.52113\\131\\84.96094\\-93.33418\\131\\88.86719\\-94.28043\\131\\90.82031\\-95.18385\\131\\92.77344\\-95.85387\\131\\94.72656\\-96.70434\\131\\96.67969\\-97.73045\\131\\98.63281\\-98.87079\\131\\100.5859\\-99.77713\\131\\104.4922\\-101.8591\\131\\110.3516\\-106.1416\\131\\112.3047\\-107.6756\\131\\115.2018\\-110.4141\\131\\118.1641\\-113.7658\\131\\120.2005\\-116.2734\\131\\122.832\\-120.1797\\131\\123.7178\\-122.1328\\131\\124.8151\\-124.0859\\131\\125.6183\\-126.0391\\131\\126.6716\\-127.9922\\131\\127.36\\-129.9453\\131\\128.2942\\-131.8984\\131\\128.8689\\-133.8516\\131\\129.3009\\-135.8047\\131\\130.506\\-139.7109\\131\\131.25\\-143.6172\\131\\132.383\\-147.5234\\131\\133.4321\\-153.3828\\131\\133.9286\\-155.3359\\131\\134.268\\-157.2891\\131\\134.7078\\-161.1953\\131\\135.905\\-174.8672\\131\\136.094\\-178.7734\\131\\136.2271\\-182.6797\\131\\136.2062\\-188.5391\\131\\136.1084\\-192.4453\\131\\135.905\\-196.3516\\131\\135.3306\\-202.2109\\131\\134.6954\\-208.0703\\131\\134.41\\-210.0234\\131\\133.9958\\-211.9766\\131\\133.3201\\-213.9297\\131\\132.7673\\-215.8828\\131\\132.106\\-217.8359\\131\\131.1618\\-219.7891\\131\\130.5658\\-221.7422\\131\\129.6049\\-223.6953\\131\\128.8203\\-225.6484\\131\\126.8402\\-229.5547\\131\\125.5552\\-231.5078\\131\\124.6405\\-233.4609\\131\\123.3617\\-235.4141\\131\\122.4958\\-237.3672\\131\\119.7225\\-241.2734\\131\\118.5162\\-243.2266\\131\\117.1245\\-245.1797\\131\\115.6276\\-247.1328\\131\\114.2578\\-249.0766\\131\\111.0383\\-252.9922\\131\\109.3684\\-254.9453\\131\\107.5604\\-256.8984\\131\\105.618\\-258.8516\\131\\104.4922\\-260.1232\\131\\101.98\\-262.7578\\131\\100.5859\\-263.936\\131\\95.7459\\-268.6172\\131\\91.26157\\-272.5234\\131\\88.86719\\-274.5653\\131\\86.91406\\-275.7939\\131\\83.00781\\-278.9489\\131\\81.02448\\-280.3359\\131\\79.10156\\-281.5551\\131\\77.14844\\-282.8945\\131\\75.19531\\-283.8698\\131\\74.74525\\-284.2422\\131\\71.64797\\-286.1953\\131\\71.28906\\-286.491\\131\\69.33594\\-287.4475\\131\\67.38281\\-288.6401\\131\\65.42969\\-289.3489\\131\\63.47656\\-290.4834\\131\\61.52344\\-291.2557\\131\\59.57031\\-292.4313\\131\\57.61719\\-293.1886\\131\\55.66406\\-294.1742\\131\\53.71094\\-294.8726\\131\\51.75781\\-295.3673\\131\\49.80469\\-296.2247\\131\\47.85156\\-296.8154\\131\\45.89844\\-297.2687\\131\\43.94531\\-298.0757\\131\\41.99219\\-298.6709\\131\\40.03906\\-299.0954\\131\\36.13281\\-300.31\\131\\34.17969\\-300.6718\\131\\30.27344\\-301.2614\\131\\28.32031\\-301.6353\\131\\26.36719\\-302.1126\\131\\24.41406\\-302.4101\\131\\20.50781\\-302.7748\\131\\16.60156\\-303.0042\\131\\12.69531\\-303.3232\\131\\6.835938\\-303.882\\131\\4.882813\\-304.0325\\131\\0.9765625\\-304.1404\\131\\-2.929688\\-304.12\\131"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002235"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "252"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "192"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.789063\\-303.9221\\133\\-14.64844\\-303.2336\\133\\-18.55469\\-302.9036\\133\\-22.46094\\-302.6466\\133\\-24.41406\\-302.4315\\133\\-26.36719\\-302.0754\\133\\-30.27344\\-301.214\\133\\-34.17969\\-300.6136\\133\\-36.13281\\-300.216\\133\\-38.08594\\-299.4804\\133\\-41.99219\\-298.4713\\133\\-43.94531\\-297.5975\\133\\-45.89844\\-297.0002\\133\\-47.85156\\-296.5021\\133\\-49.80469\\-295.5827\\133\\-53.71094\\-294.4235\\133\\-55.66406\\-293.3812\\133\\-57.61719\\-292.6201\\133\\-59.57031\\-291.3689\\133\\-61.52344\\-290.5629\\133\\-63.47656\\-289.3508\\133\\-65.42969\\-288.6333\\133\\-67.38281\\-287.3896\\133\\-69.33594\\-286.3439\\133\\-71.28906\\-285.0569\\133\\-73.24219\\-283.6224\\133\\-75.19531\\-282.6641\\133\\-79.10156\\-279.8541\\133\\-83.94299\\-276.4297\\133\\-88.86719\\-272.561\\133\\-92.77344\\-269.3243\\133\\-94.72656\\-267.6406\\133\\-98.63281\\-263.9633\\133\\-100.5859\\-262.2007\\133\\-102.25\\-260.8047\\133\\-104.4922\\-258.5055\\133\\-108.3984\\-254.9028\\133\\-111.7881\\-251.0391\\133\\-114.2578\\-248.4607\\133\\-117.0753\\-245.1797\\133\\-120.1172\\-241.195\\133\\-122.7716\\-237.3672\\133\\-123.7697\\-235.4141\\133\\-126.0901\\-231.5078\\133\\-127.1101\\-229.5547\\133\\-128.2552\\-227.6016\\133\\-129.7489\\-223.6953\\133\\-130.5812\\-221.7422\\133\\-131.1306\\-219.7891\\133\\-131.903\\-217.8359\\133\\-132.5546\\-215.8828\\133\\-133.0202\\-213.9297\\133\\-134.1912\\-210.0234\\133\\-134.5783\\-208.0703\\133\\-135.1486\\-204.1641\\133\\-135.8288\\-200.2578\\133\\-136.3216\\-196.3516\\133\\-136.5345\\-192.4453\\133\\-136.6828\\-186.5859\\133\\-136.7069\\-182.6797\\133\\-136.6469\\-176.8203\\133\\-136.5345\\-172.9141\\133\\-136.2101\\-167.0547\\133\\-135.9992\\-165.1016\\133\\-135.3777\\-161.1953\\133\\-134.4267\\-153.3828\\133\\-134.0281\\-151.4297\\133\\-133.437\\-149.4766\\133\\-132.5457\\-145.5703\\133\\-131.958\\-143.6172\\133\\-131.2117\\-141.6641\\133\\-130.7594\\-139.7109\\133\\-130.2083\\-137.7578\\133\\-129.3678\\-135.8047\\133\\-128.7818\\-133.8516\\133\\-128.0851\\-131.8984\\133\\-127.0951\\-129.9453\\133\\-126.2489\\-127.9922\\133\\-125.1131\\-126.0391\\133\\-124.2511\\-124.0859\\133\\-123.0907\\-122.1328\\133\\-122.0703\\-120.2378\\133\\-120.6853\\-118.2266\\133\\-118.1641\\-115.1541\\133\\-115.7011\\-112.3672\\133\\-112.3047\\-108.8826\\133\\-109.5133\\-106.5078\\133\\-106.4453\\-104.1576\\133\\-102.5391\\-101.6438\\133\\-100.5859\\-100.5156\\133\\-98.63281\\-99.65401\\133\\-96.67969\\-98.64313\\133\\-94.72656\\-97.73987\\133\\-90.82031\\-96.08922\\133\\-86.91406\\-95.05871\\133\\-84.96094\\-94.36658\\133\\-83.00781\\-94.01646\\133\\-79.10156\\-93.54889\\133\\-77.14844\\-93.23605\\133\\-75.19531\\-92.7005\\133\\-73.24219\\-92.3058\\133\\-67.38281\\-91.56426\\133\\-65.42969\\-91.26963\\133\\-61.52344\\-90.41806\\133\\-55.66406\\-89.79357\\133\\-51.75781\\-89.4768\\133\\-47.85156\\-89.0266\\133\\-43.94531\\-88.48344\\133\\-40.03906\\-88.23999\\133\\-36.13281\\-88.10199\\133\\-28.32031\\-87.9948\\133\\-24.41406\\-88.02415\\133\\-18.55469\\-88.18822\\133\\-16.60156\\-88.30994\\133\\-14.64844\\-88.59709\\133\\-12.69531\\-89.22334\\133\\-8.789063\\-90.16005\\133\\-4.882813\\-91.64972\\133\\-0.9765625\\-92.67435\\133\\0.9765625\\-93.1282\\133\\2.929688\\-93.27071\\133\\4.882813\\-93.14245\\133\\8.789063\\-92.26309\\133\\10.74219\\-91.76505\\133\\12.69531\\-91.10873\\133\\14.64844\\-90.17946\\133\\16.60156\\-89.63726\\133\\20.50781\\-88.41465\\133\\22.46094\\-88.10383\\133\\30.27344\\-87.40983\\133\\32.22656\\-87.12383\\133\\36.13281\\-86.793\\133\\41.99219\\-86.55338\\133\\45.89844\\-86.55338\\133\\49.80469\\-86.67662\\133\\51.75781\\-86.82001\\133\\59.57031\\-87.72729\\133\\63.47656\\-88.09517\\133\\65.42969\\-88.33878\\133\\67.38281\\-88.77314\\133\\69.33594\\-89.35181\\133\\73.24219\\-90.02832\\133\\75.19531\\-90.47642\\133\\77.14844\\-91.26438\\133\\81.05469\\-92.24458\\133\\84.96094\\-93.58667\\133\\86.91406\\-94.00171\\133\\88.86719\\-94.64296\\133\\90.82031\\-95.52759\\133\\92.77344\\-96.15128\\133\\94.72656\\-97.23689\\133\\96.67969\\-98.1044\\133\\98.63281\\-99.36087\\133\\100.5859\\-100.1044\\133\\102.5391\\-101.2928\\133\\104.4922\\-102.3517\\133\\106.4453\\-103.7307\\133\\112.3047\\-108.3418\\133\\114.5339\\-110.4141\\133\\116.2694\\-112.3672\\133\\118.1641\\-114.6265\\133\\120.9449\\-118.2266\\133\\122.25\\-120.1797\\133\\123.1408\\-122.1328\\133\\124.2098\\-124.0859\\133\\125\\-126.0391\\133\\126.7785\\-129.9453\\133\\127.4034\\-131.8984\\133\\128.2691\\-133.8516\\133\\128.7834\\-135.8047\\133\\129.6768\\-139.7109\\133\\130.3267\\-141.6641\\133\\130.7257\\-143.6172\\133\\131.3982\\-147.5234\\133\\131.9589\\-149.4766\\133\\132.4013\\-151.4297\\133\\133.2637\\-157.2891\\133\\133.9647\\-161.1953\\133\\134.2403\\-163.1484\\133\\134.5669\\-167.0547\\133\\134.8943\\-172.9141\\133\\135.1537\\-180.7266\\133\\135.1982\\-184.6328\\133\\135.1888\\-188.5391\\133\\134.9573\\-196.3516\\133\\134.7366\\-200.2578\\133\\134.4342\\-204.1641\\133\\134.2238\\-206.1172\\133\\133.8984\\-208.0703\\133\\133.3997\\-210.0234\\133\\132.5967\\-213.9297\\133\\131.9589\\-215.8828\\133\\131.1375\\-217.8359\\133\\130.6213\\-219.7891\\133\\128.999\\-223.6953\\133\\128.3027\\-225.6484\\133\\127.2116\\-227.6016\\133\\126.3735\\-229.5547\\133\\125.1371\\-231.5078\\133\\124.2084\\-233.4609\\133\\123.1197\\-235.4141\\133\\122.1576\\-237.3672\\133\\120.9581\\-239.3203\\133\\119.492\\-241.2734\\133\\118.3257\\-243.2266\\133\\117.0489\\-245.1797\\133\\115.5918\\-247.1328\\133\\114.2578\\-249.0583\\133\\110.3516\\-253.9764\\133\\107.777\\-256.8984\\133\\105.8824\\-258.8516\\133\\104.4922\\-260.4404\\133\\102.3339\\-262.7578\\133\\100.5859\\-264.2761\\133\\96.17486\\-268.6172\\133\\94.72656\\-269.692\\133\\91.55599\\-272.5234\\133\\90.82031\\-273.264\\133\\88.86719\\-274.9256\\133\\86.91406\\-276.1668\\133\\84.96094\\-277.6003\\133\\83.00781\\-279.2292\\133\\81.05469\\-280.7172\\133\\79.10156\\-281.8076\\133\\77.14844\\-283.0836\\133\\73.24219\\-285.3953\\133\\71.28906\\-286.765\\133\\69.33594\\-287.6862\\133\\67.38281\\-288.8352\\133\\65.42969\\-289.526\\133\\63.47656\\-290.7105\\133\\61.52344\\-291.462\\133\\59.57031\\-292.6736\\133\\57.61719\\-293.3901\\133\\55.66406\\-294.4207\\133\\51.75781\\-295.5201\\133\\49.80469\\-296.4299\\133\\45.89844\\-297.4197\\133\\43.94531\\-298.2911\\133\\40.03906\\-299.2402\\133\\38.08594\\-299.9338\\133\\36.13281\\-300.4393\\133\\30.27344\\-301.3752\\133\\26.36719\\-302.2476\\133\\22.46094\\-302.7127\\133\\16.60156\\-303.1053\\133\\12.69531\\-303.4777\\133\\10.74219\\-303.75\\133\\6.835938\\-304.0883\\133\\2.929688\\-304.2531\\133\\-2.929688\\-304.2617\\133\\-6.835938\\-304.0883\\133"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002234"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "246"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "193"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-10.74219\\-303.9089\\135\\-14.64844\\-303.366\\135\\-18.55469\\-302.9824\\135\\-24.41406\\-302.5377\\135\\-26.36719\\-302.2232\\135\\-30.27344\\-301.3288\\135\\-34.17969\\-300.705\\135\\-36.13281\\-300.3405\\135\\-40.03906\\-299.0645\\135\\-41.99219\\-298.5905\\135\\-45.89844\\-297.0976\\135\\-47.85156\\-296.637\\135\\-49.80469\\-295.7597\\135\\-51.75781\\-295.111\\135\\-53.71094\\-294.5649\\135\\-55.66406\\-293.5413\\135\\-57.61719\\-292.7624\\135\\-59.57031\\-291.5193\\135\\-61.52344\\-290.7146\\135\\-63.47656\\-289.4865\\135\\-65.42969\\-288.7758\\135\\-67.38281\\-287.5242\\135\\-69.33594\\-286.5591\\135\\-72.69498\\-284.2422\\135\\-73.24219\\-283.8014\\135\\-75.19531\\-282.8367\\135\\-79.10156\\-280.0722\\135\\-81.05469\\-278.7622\\135\\-88.86719\\-272.7351\\135\\-90.82031\\-271.0173\\135\\-94.72656\\-267.7036\\135\\-99.92767\\-262.7578\\135\\-102.1589\\-260.8047\\135\\-103.9254\\-258.8516\\135\\-106.4453\\-256.3627\\135\\-108.3984\\-254.5441\\135\\-111.5274\\-251.0391\\135\\-114.2578\\-248.1375\\135\\-116.7134\\-245.1797\\135\\-118.0081\\-243.2266\\135\\-119.4231\\-241.2734\\135\\-120.947\\-239.3203\\135\\-122.2344\\-237.3672\\135\\-123.2256\\-235.4141\\135\\-124.4523\\-233.4609\\135\\-125.3152\\-231.5078\\135\\-126.5613\\-229.5547\\135\\-127.3999\\-227.6016\\135\\-128.457\\-225.6484\\135\\-129.1155\\-223.6953\\135\\-130.6243\\-219.7891\\135\\-131.0608\\-217.8359\\135\\-131.6757\\-215.8828\\135\\-132.3897\\-213.9297\\135\\-133.2056\\-210.0234\\135\\-133.7891\\-208.0446\\135\\-134.2586\\-206.1172\\135\\-134.5434\\-204.1641\\135\\-135.4096\\-196.3516\\135\\-135.9314\\-190.4922\\135\\-136.1031\\-186.5859\\135\\-136.1286\\-180.7266\\135\\-135.9466\\-174.8672\\135\\-135.3044\\-167.0547\\135\\-134.597\\-159.2422\\135\\-134.0901\\-155.3359\\135\\-133.1439\\-151.4297\\135\\-132.4161\\-147.5234\\135\\-131.1584\\-143.6172\\135\\-130.2437\\-139.7109\\135\\-129.4188\\-137.7578\\135\\-128.8879\\-135.8047\\135\\-128.2436\\-133.8516\\135\\-127.2766\\-131.8984\\135\\-126.5542\\-129.9453\\135\\-125.3971\\-127.9922\\135\\-124.622\\-126.0391\\135\\-123.4606\\-124.0859\\135\\-122.6428\\-122.1328\\135\\-121.2801\\-120.1797\\135\\-118.3879\\-116.2734\\135\\-116.8038\\-114.3203\\135\\-115.1055\\-112.3672\\135\\-114.2578\\-111.5796\\135\\-112.3047\\-109.5233\\135\\-110.3516\\-107.7614\\135\\-108.3984\\-106.2421\\135\\-102.5391\\-102.0658\\135\\-100.5859\\-101.1435\\135\\-98.63281\\-100.0082\\135\\-96.67969\\-99.27474\\135\\-94.72656\\-98.12994\\135\\-92.77344\\-97.44463\\135\\-90.82031\\-96.52439\\135\\-88.86719\\-95.89621\\135\\-86.91406\\-95.45462\\135\\-83.00781\\-94.33151\\135\\-81.05469\\-93.99676\\135\\-77.14844\\-93.59029\\135\\-75.19531\\-93.27803\\135\\-71.28906\\-92.35632\\135\\-69.33594\\-92.0859\\135\\-65.42969\\-91.64822\\135\\-63.47656\\-91.33401\\135\\-59.57031\\-90.56166\\135\\-55.66406\\-90.06358\\135\\-47.85156\\-89.45644\\135\\-41.99219\\-88.71835\\135\\-40.03906\\-88.53233\\135\\-36.13281\\-88.33498\\135\\-30.27344\\-88.20337\\135\\-24.41406\\-88.23999\\135\\-20.50781\\-88.36162\\135\\-18.55469\\-88.48154\\135\\-16.60156\\-88.74474\\135\\-10.74219\\-90.0023\\135\\-8.789063\\-90.54672\\135\\-6.835938\\-91.39582\\135\\-2.929688\\-92.57685\\135\\-0.9765625\\-93.30442\\135\\0.9765625\\-93.56535\\135\\2.929688\\-93.63494\\135\\4.882813\\-93.56226\\135\\6.835938\\-93.31084\\135\\8.660567\\-92.83594\\135\\12.69531\\-91.60207\\135\\14.64844\\-90.68337\\135\\16.60156\\-89.99242\\135\\18.55469\\-89.54231\\135\\22.46094\\-88.38789\\135\\24.41406\\-88.1251\\135\\30.27344\\-87.72443\\135\\34.17969\\-87.3401\\135\\40.03906\\-87.00078\\135\\45.89844\\-86.95274\\135\\49.80469\\-87.06319\\135\\61.52344\\-88.00047\\135\\65.42969\\-88.49787\\135\\67.38281\\-89.06713\\135\\69.33594\\-89.52386\\135\\73.24219\\-90.21522\\135\\75.19531\\-90.76074\\135\\77.14844\\-91.48875\\135\\81.05469\\-92.49985\\135\\83.00781\\-93.29031\\135\\86.91406\\-94.215\\135\\88.86719\\-95.09783\\135\\92.77344\\-96.53547\\135\\94.72656\\-97.62223\\135\\98.63281\\-99.66592\\135\\100.5859\\-100.5604\\135\\102.5391\\-101.6694\\135\\106.4453\\-104.259\\135\\109.3427\\-106.5078\\135\\112.3047\\-109.0278\\135\\113.7517\\-110.4141\\135\\115.625\\-112.3672\\135\\118.1641\\-115.3594\\135\\120.3169\\-118.2266\\135\\122.7192\\-122.1328\\135\\123.4189\\-124.0859\\135\\124.485\\-126.0391\\135\\125.1489\\-127.9922\\135\\126.0431\\-129.9453\\135\\126.7818\\-131.8984\\135\\127.3489\\-133.8516\\135\\128.1279\\-135.8047\\135\\128.6621\\-137.7578\\135\\129.4511\\-141.6641\\135\\130.0872\\-143.6172\\135\\130.5151\\-145.5703\\135\\131.0559\\-149.4766\\135\\131.4273\\-151.4297\\135\\132.3089\\-155.3359\\135\\132.585\\-157.2891\\135\\132.9859\\-161.1953\\135\\134.0827\\-170.9609\\135\\134.2838\\-174.8672\\135\\134.434\\-180.7266\\135\\134.4543\\-186.5859\\135\\134.38\\-192.4453\\135\\134.2282\\-196.3516\\135\\133.9017\\-200.2578\\135\\132.6534\\-210.0234\\135\\132.3059\\-211.9766\\135\\131.0608\\-215.8828\\135\\130.6183\\-217.8359\\135\\129.9393\\-219.7891\\135\\129.1426\\-221.7422\\135\\128.562\\-223.6953\\135\\127.5997\\-225.6484\\135\\126.7849\\-227.6016\\135\\125.7378\\-229.5547\\135\\124.8629\\-231.5078\\135\\123.7518\\-233.4609\\135\\122.9431\\-235.4141\\135\\120.7886\\-239.3203\\135\\119.3438\\-241.2734\\135\\116.9909\\-245.1797\\135\\115.5746\\-247.1328\\135\\114.2656\\-249.0859\\135\\112.3047\\-251.5502\\135\\110.3516\\-254.1406\\135\\108.3984\\-256.4671\\135\\106.1695\\-258.8516\\135\\104.5003\\-260.8047\\135\\102.7129\\-262.7578\\135\\100.5859\\-264.7488\\135\\96.59677\\-268.6172\\135\\94.72656\\-270.0749\\135\\90.82031\\-273.545\\135\\88.86719\\-275.1958\\135\\86.91406\\-276.6065\\135\\84.96094\\-277.8945\\135\\81.05469\\-280.9931\\135\\79.10156\\-282.0695\\135\\75.19531\\-284.6192\\135\\73.24219\\-285.6433\\135\\71.28906\\-286.966\\135\\67.38281\\-289.0037\\135\\65.42969\\-289.7548\\135\\63.47656\\-290.9067\\135\\61.52344\\-291.7446\\135\\59.57031\\-292.858\\135\\57.61719\\-293.6107\\135\\55.66406\\-294.6074\\135\\51.75781\\-295.7039\\135\\49.80469\\-296.5904\\135\\47.85156\\-297.0315\\135\\45.89844\\-297.6341\\135\\43.94531\\-298.4713\\135\\40.03906\\-299.4283\\135\\38.08594\\-300.1396\\135\\36.13281\\-300.5615\\135\\32.22656\\-301.1548\\135\\30.27344\\-301.516\\135\\28.32031\\-302.0067\\135\\26.36719\\-302.3571\\135\\24.41406\\-302.6097\\135\\18.55469\\-303.0286\\135\\14.64844\\-303.3948\\135\\10.74219\\-303.9729\\135\\6.835938\\-304.2531\\135\\2.929688\\-304.3805\\135\\-2.929688\\-304.3877\\135\\-6.835938\\-304.2443\\135"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002233"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "257"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "194"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-303.5014\\137\\-18.55469\\-303.0678\\137\\-24.41406\\-302.6097\\137\\-26.36719\\-302.3477\\137\\-28.32031\\-301.95\\137\\-30.27344\\-301.4447\\137\\-36.13281\\-300.4393\\137\\-38.08594\\-299.8748\\137\\-40.03906\\-299.1788\\137\\-41.99219\\-298.7041\\137\\-43.94531\\-298.0495\\137\\-45.89844\\-297.1983\\137\\-47.85156\\-296.7455\\137\\-51.75781\\-295.1906\\137\\-53.71094\\-294.6811\\137\\-55.66406\\-293.7142\\137\\-57.61719\\-292.8694\\137\\-59.57031\\-291.7096\\137\\-61.52344\\-290.8315\\137\\-63.47656\\-289.6472\\137\\-65.42969\\-288.8934\\137\\-67.38281\\-287.6931\\137\\-69.33594\\-286.7405\\137\\-73.24219\\-283.998\\137\\-75.19531\\-282.9795\\137\\-77.14844\\-281.5962\\137\\-79.09139\\-280.3359\\137\\-81.05469\\-278.9272\\137\\-84.96094\\-275.8706\\137\\-86.86572\\-274.4766\\137\\-88.86719\\-272.897\\137\\-90.82031\\-271.1428\\137\\-94.72656\\-267.7792\\137\\-98.63281\\-263.9853\\137\\-102.1205\\-260.8047\\137\\-103.8886\\-258.8516\\137\\-105.8057\\-256.8984\\137\\-108.3984\\-254.3757\\137\\-110.3516\\-252.1395\\137\\-112.3047\\-250.0266\\137\\-114.8776\\-247.1328\\137\\-116.2836\\-245.1797\\137\\-117.5851\\-243.2266\\137\\-118.1641\\-242.5567\\137\\-120.5039\\-239.3203\\137\\-121.6355\\-237.3672\\137\\-122.8831\\-235.4141\\137\\-123.7645\\-233.4609\\137\\-124.9023\\-231.5078\\137\\-126.85\\-227.6016\\137\\-128.6483\\-223.6953\\137\\-129.2087\\-221.7422\\137\\-129.9702\\-219.7891\\137\\-130.5857\\-217.8359\\137\\-131.4494\\-213.9297\\137\\-132.1658\\-211.9766\\137\\-132.599\\-210.0234\\137\\-133.335\\-206.1172\\137\\-134.1886\\-202.2109\\137\\-134.4305\\-200.2578\\137\\-134.7656\\-196.3516\\137\\-135.1096\\-190.4922\\137\\-135.2539\\-186.5859\\137\\-135.2737\\-180.7266\\137\\-135.1303\\-174.8672\\137\\-134.7433\\-167.0547\\137\\-134.442\\-163.1484\\137\\-133.9928\\-159.2422\\137\\-133.2234\\-155.3359\\137\\-132.2377\\-149.4766\\137\\-131.5703\\-147.5234\\137\\-131.0816\\-145.5703\\137\\-130.7373\\-143.6172\\137\\-130.2437\\-141.6641\\137\\-129.4852\\-139.7109\\137\\-128.4277\\-135.8047\\137\\-127.4805\\-133.8516\\137\\-126.7499\\-131.8984\\137\\-125.7215\\-129.9453\\137\\-124.9075\\-127.9922\\137\\-123.9034\\-126.0391\\137\\-123.0283\\-124.0859\\137\\-122.0703\\-122.3051\\137\\-120.7357\\-120.1797\\137\\-119.0828\\-118.2266\\137\\-117.5795\\-116.2734\\137\\-116.2109\\-114.3682\\137\\-114.4287\\-112.3672\\137\\-112.3047\\-110.1738\\137\\-110.3516\\-108.319\\137\\-104.4922\\-103.9144\\137\\-102.5278\\-102.6016\\137\\-98.63281\\-100.4577\\137\\-96.67969\\-99.63069\\137\\-92.77344\\-97.80801\\137\\-90.82031\\-97.11007\\137\\-88.86719\\-96.20784\\137\\-84.96094\\-95.33517\\137\\-81.05469\\-94.26779\\137\\-79.10156\\-93.97021\\137\\-75.19531\\-93.58136\\137\\-73.24219\\-93.29818\\137\\-69.33594\\-92.38296\\137\\-63.47656\\-91.65239\\137\\-59.57031\\-91.09905\\137\\-55.66406\\-90.38277\\137\\-53.71094\\-90.17602\\137\\-45.89844\\-89.58624\\137\\-40.03906\\-89.02586\\137\\-38.08594\\-88.80199\\137\\-34.17969\\-88.56519\\137\\-30.27344\\-88.45802\\137\\-24.41406\\-88.50539\\137\\-22.46094\\-88.56261\\137\\-20.50781\\-88.71835\\137\\-16.60156\\-89.2597\\137\\-12.69531\\-89.87971\\137\\-10.74219\\-90.2901\\137\\-6.835938\\-91.75026\\137\\-4.882813\\-92.34766\\137\\-2.929688\\-93.20301\\137\\-0.9765625\\-93.64877\\137\\2.929688\\-93.87241\\137\\4.882813\\-93.83036\\137\\6.835938\\-93.68229\\137\\8.789063\\-93.40927\\137\\12.69531\\-91.98745\\137\\14.64844\\-91.36483\\137\\16.60156\\-90.40063\\137\\18.55469\\-89.8896\\137\\20.50781\\-89.50089\\137\\24.41406\\-88.44819\\137\\28.32031\\-88.03804\\137\\34.17969\\-87.69188\\137\\36.13281\\-87.6255\\137\\38.08594\\-87.45474\\137\\41.99219\\-87.33487\\137\\45.89844\\-87.33487\\137\\51.75781\\-87.48123\\137\\57.61719\\-87.81617\\137\\61.52344\\-88.1139\\137\\63.47656\\-88.34375\\137\\65.42969\\-88.71991\\137\\67.38281\\-89.32159\\137\\71.28906\\-89.98981\\137\\73.24219\\-90.39453\\137\\75.19531\\-91.11465\\137\\77.14844\\-91.67178\\137\\79.10156\\-92.13005\\137\\83.00781\\-93.51768\\137\\84.96094\\-93.90292\\137\\86.91406\\-94.47569\\137\\88.86719\\-95.4254\\137\\90.82031\\-96.04122\\137\\92.77344\\-97.05386\\137\\94.72656\\-97.92641\\137\\96.67969\\-99.13921\\137\\98.63281\\-99.92068\\137\\100.5859\\-101.1333\\137\\102.5391\\-102.0196\\137\\106.4453\\-104.9495\\137\\108.3984\\-106.2278\\137\\110.3516\\-107.8168\\137\\112.3047\\-109.619\\137\\114.2578\\-111.6871\\137\\115.0351\\-112.3672\\137\\116.7417\\-114.3203\\137\\118.2306\\-116.2734\\137\\119.4765\\-118.2266\\137\\120.95\\-120.1797\\137\\122.0703\\-122.1714\\137\\122.9855\\-124.0859\\137\\123.6637\\-126.0391\\137\\124.6399\\-127.9922\\137\\125.2125\\-129.9453\\137\\126.0442\\-131.8984\\137\\126.7455\\-133.8516\\137\\127.2727\\-135.8047\\137\\127.9533\\-137.7578\\137\\128.5282\\-139.7109\\137\\129.6768\\-145.5703\\137\\130.2203\\-147.5234\\137\\130.5768\\-149.4766\\137\\131.3155\\-155.3359\\137\\132.075\\-159.2422\\137\\132.3452\\-161.1953\\137\\132.701\\-165.1016\\137\\133.0752\\-170.9609\\137\\133.2881\\-176.8203\\137\\133.3866\\-180.7266\\137\\133.4104\\-188.5391\\137\\133.2728\\-194.3984\\137\\132.8125\\-202.2109\\137\\132.4998\\-206.1172\\137\\132.2554\\-208.0703\\137\\131.8586\\-210.0234\\137\\131.338\\-211.9766\\137\\130.6091\\-215.8828\\137\\130\\-217.8359\\137\\129.2892\\-219.7891\\137\\128.776\\-221.7422\\137\\128.0703\\-223.6953\\137\\127.1342\\-225.6484\\137\\126.4166\\-227.6016\\137\\125.3196\\-229.5547\\137\\124.6192\\-231.5078\\137\\123.4426\\-233.4609\\137\\122.8058\\-235.4141\\137\\121.6241\\-237.3672\\137\\120.6727\\-239.3203\\137\\119.2558\\-241.2734\\137\\118.028\\-243.2266\\137\\116.9782\\-245.1797\\137\\115.5831\\-247.1328\\137\\114.3265\\-249.0859\\137\\112.8673\\-251.0391\\137\\111.283\\-252.9922\\137\\110.3516\\-254.335\\137\\108.3984\\-256.7628\\137\\104.4922\\-261.1906\\137\\103.0087\\-262.7578\\137\\98.63281\\-267.0858\\137\\96.67969\\-268.9063\\137\\92.77344\\-272.0932\\137\\90.82031\\-273.8545\\137\\86.91406\\-276.9412\\137\\84.96094\\-278.2787\\137\\81.05469\\-281.2113\\137\\79.10156\\-282.4229\\137\\77.14844\\-283.4924\\137\\75.19531\\-284.8731\\137\\69.33594\\-288.3087\\137\\67.38281\\-289.1552\\137\\63.47656\\-291.073\\137\\61.52344\\-292.1355\\137\\55.66406\\-294.7447\\137\\53.71094\\-295.2378\\137\\49.80469\\-296.7126\\137\\47.85156\\-297.136\\137\\43.94531\\-298.6182\\137\\41.99219\\-299.0542\\137\\40.03906\\-299.6265\\137\\38.08594\\-300.3127\\137\\36.13281\\-300.6652\\137\\32.22656\\-301.265\\137\\28.32031\\-302.1646\\137\\26.36719\\-302.4817\\137\\24.41406\\-302.6762\\137\\18.55469\\-303.1205\\137\\14.64844\\-303.5767\\137\\12.69531\\-303.9221\\137\\10.74219\\-304.1404\\137\\6.835938\\-304.3732\\137\\2.929688\\-304.4752\\137\\-2.929688\\-304.4752\\137\\-6.835938\\-304.3583\\137\\-10.74219\\-304.0664\\137"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002232"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "255"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "195"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-303.6735\\139\\-20.50781\\-302.9739\\139\\-24.41406\\-302.6826\\139\\-26.36719\\-302.461\\139\\-28.32031\\-302.1003\\139\\-30.27344\\-301.5816\\139\\-32.22656\\-301.1796\\139\\-36.13281\\-300.5164\\139\\-38.08594\\-300.0666\\139\\-40.03906\\-299.31\\139\\-43.94531\\-298.2606\\139\\-45.89844\\-297.3281\\139\\-47.85156\\-296.8272\\139\\-49.80469\\-296.1996\\139\\-51.75781\\-295.3036\\139\\-53.71094\\-294.7879\\139\\-57.61719\\-292.9941\\139\\-63.18547\\-290.1016\\139\\-63.47656\\-289.8687\\139\\-65.42969\\-289.0037\\139\\-67.38281\\-287.9061\\139\\-69.33594\\-286.9103\\139\\-71.28906\\-285.53\\139\\-76.4695\\-282.2891\\139\\-77.14844\\-281.7798\\139\\-79.10156\\-280.6201\\139\\-81.05469\\-279.1362\\139\\-84.96094\\-276.0228\\139\\-86.91406\\-274.6331\\139\\-88.86719\\-273.0878\\139\\-90.82031\\-271.2847\\139\\-94.72656\\-267.8959\\139\\-96.0264\\-266.6641\\139\\-98.63281\\-264.0349\\139\\-102.1237\\-260.8047\\139\\-103.8744\\-258.8516\\139\\-105.7556\\-256.8984\\139\\-108.3984\\-254.2918\\139\\-110.3516\\-252.0156\\139\\-112.3047\\-249.8447\\139\\-114.6123\\-247.1328\\139\\-115.9144\\-245.1797\\139\\-118.1641\\-242.1259\\139\\-119.9105\\-239.3203\\139\\-122.5518\\-235.4141\\139\\-123.3003\\-233.4609\\139\\-124.5085\\-231.5078\\139\\-125.2573\\-229.5547\\139\\-126.3733\\-227.6016\\139\\-127.1451\\-225.6484\\139\\-128.0851\\-223.6953\\139\\-128.7827\\-221.7422\\139\\-129.2509\\-219.7891\\139\\-129.9543\\-217.8359\\139\\-130.5523\\-215.8828\\139\\-131.2699\\-211.9766\\139\\-132.4132\\-208.0703\\139\\-133.2856\\-202.2109\\139\\-134.0008\\-198.3047\\139\\-134.2291\\-196.3516\\139\\-134.5801\\-190.4922\\139\\-134.7053\\-186.5859\\139\\-134.7492\\-182.6797\\139\\-134.7053\\-178.7734\\139\\-134.5606\\-172.9141\\139\\-134.3659\\-169.0078\\139\\-134.0365\\-165.1016\\139\\-133.418\\-161.1953\\139\\-132.6867\\-155.3359\\139\\-132.4075\\-153.3828\\139\\-131.9845\\-151.4297\\139\\-131.3837\\-149.4766\\139\\-130.9821\\-147.5234\\139\\-130.686\\-145.5703\\139\\-130.2552\\-143.6172\\139\\-129.5361\\-141.6641\\139\\-128.5666\\-137.7578\\139\\-127.7199\\-135.8047\\139\\-126.1676\\-131.8984\\139\\-125.1468\\-129.9453\\139\\-124.4181\\-127.9922\\139\\-123.3222\\-126.0391\\139\\-122.5586\\-124.0859\\139\\-120.1172\\-120.3696\\139\\-118.5959\\-118.2266\\139\\-116.2109\\-115.2248\\139\\-113.6407\\-112.3672\\139\\-110.3516\\-109.0138\\139\\-109.7301\\-108.4609\\139\\-106.4453\\-105.8671\\139\\-104.4922\\-104.4832\\139\\-100.5859\\-101.8908\\139\\-98.63281\\-101.0434\\139\\-96.67969\\-99.94212\\139\\-94.72656\\-99.28125\\139\\-92.77344\\-98.1804\\139\\-90.82031\\-97.52682\\139\\-88.86719\\-96.67561\\139\\-86.91406\\-96.01987\\139\\-83.00781\\-95.25377\\139\\-81.05469\\-94.64523\\139\\-79.10156\\-94.22266\\139\\-77.14844\\-93.95115\\139\\-73.24219\\-93.5858\\139\\-71.28906\\-93.29818\\139\\-67.38281\\-92.43921\\139\\-63.47656\\-91.92073\\139\\-57.61719\\-91.22333\\139\\-53.71094\\-90.49587\\139\\-49.80469\\-90.11445\\139\\-41.99219\\-89.59728\\139\\-36.13281\\-89.18237\\139\\-32.22656\\-88.9973\\139\\-28.32031\\-88.93732\\139\\-26.36719\\-89.04066\\139\\-24.41406\\-89.02734\\139\\-20.50781\\-89.24406\\139\\-16.60156\\-89.60491\\139\\-12.69531\\-90.13286\\139\\-10.74219\\-90.66962\\139\\-8.789063\\-91.50052\\139\\-6.835938\\-92.0776\\139\\-4.882813\\-92.89197\\139\\-2.929688\\-93.59743\\139\\0.9765625\\-94.06916\\139\\2.929688\\-94.13176\\139\\4.882813\\-94.08619\\139\\8.789063\\-93.71484\\139\\10.74219\\-93.29433\\139\\12.69531\\-92.35971\\139\\14.64844\\-91.76068\\139\\18.55469\\-90.28665\\139\\24.41406\\-89.0816\\139\\26.36719\\-88.56615\\139\\28.32031\\-88.29779\\139\\30.27344\\-88.14967\\139\\38.08594\\-87.77339\\139\\43.94531\\-87.66626\\139\\47.85156\\-87.65831\\139\\51.75781\\-87.71803\\139\\57.61719\\-87.94128\\139\\61.52344\\-88.24427\\139\\63.47656\\-88.52168\\139\\67.38281\\-89.52933\\139\\71.28906\\-90.16124\\139\\73.24219\\-90.63362\\139\\75.19531\\-91.37109\\139\\79.10156\\-92.3298\\139\\81.05469\\-93.14023\\139\\83.00781\\-93.66871\\139\\84.96094\\-94.08517\\139\\88.86719\\-95.66562\\139\\90.82031\\-96.35563\\139\\92.77344\\-97.4519\\139\\94.72656\\-98.31828\\139\\96.67969\\-99.50412\\139\\98.63281\\-100.262\\139\\100.5859\\-101.4685\\139\\102.5391\\-102.4992\\139\\104.4922\\-103.8762\\139\\106.4453\\-105.43\\139\\108.0095\\-106.5078\\139\\110.3516\\-108.3347\\139\\112.3047\\-110.1738\\139\\114.445\\-112.3672\\139\\116.2109\\-114.388\\139\\120.3649\\-120.1797\\139\\121.3379\\-122.1328\\139\\122.5318\\-124.0859\\139\\123.8594\\-127.9922\\139\\124.725\\-129.9453\\139\\125.2214\\-131.8984\\139\\126.0287\\-133.8516\\139\\126.6902\\-135.8047\\139\\127.1652\\-137.7578\\139\\128.373\\-141.6641\\139\\128.771\\-143.6172\\139\\129.3747\\-147.5234\\139\\130.2804\\-151.4297\\139\\130.5682\\-153.3828\\139\\131.1435\\-159.2422\\139\\131.9307\\-165.1016\\139\\132.2889\\-169.0078\\139\\132.4564\\-172.9141\\139\\132.6119\\-180.7266\\139\\132.6392\\-188.5391\\139\\132.5552\\-194.3984\\139\\132.3901\\-198.3047\\139\\132.1289\\-202.2109\\139\\131.8881\\-204.1641\\139\\131.2858\\-208.0703\\139\\130.5804\\-213.9297\\139\\130.0583\\-215.8828\\139\\129.3713\\-217.8359\\139\\128.4211\\-221.7422\\139\\127.5249\\-223.6953\\139\\126.8246\\-225.6484\\139\\125.0483\\-229.5547\\139\\124.3234\\-231.5078\\139\\123.3003\\-233.4609\\139\\122.6601\\-235.4141\\139\\121.4489\\-237.3672\\139\\120.575\\-239.3203\\139\\119.1996\\-241.2734\\139\\117.9844\\-243.2266\\139\\116.9733\\-245.1797\\139\\115.6173\\-247.1328\\139\\114.4531\\-249.0859\\139\\112.9702\\-251.0391\\139\\111.3504\\-252.9922\\139\\110.3516\\-254.5529\\139\\108.5825\\-256.8984\\139\\106.8945\\-258.8516\\139\\104.4922\\-261.4676\\139\\101.3338\\-264.7109\\139\\99.26022\\-266.6641\\139\\98.63281\\-267.4029\\139\\95.15625\\-270.5703\\139\\90.50674\\-274.4766\\139\\88.86719\\-275.637\\139\\84.96094\\-278.6939\\139\\82.69794\\-280.3359\\139\\79.10156\\-282.7466\\139\\77.14844\\-283.7236\\139\\76.51654\\-284.2422\\139\\73.45448\\-286.1953\\139\\71.28906\\-287.3803\\139\\69.33594\\-288.5817\\139\\67.38281\\-289.3047\\139\\65.42969\\-290.4549\\139\\63.47656\\-291.2576\\139\\61.52344\\-292.4636\\139\\59.57031\\-293.217\\139\\57.61719\\-294.2031\\139\\55.66406\\-294.8712\\139\\53.71094\\-295.3891\\139\\51.75781\\-296.263\\139\\49.80469\\-296.8388\\139\\47.85156\\-297.303\\139\\45.89844\\-298.1959\\139\\43.94531\\-298.7617\\139\\41.99219\\-299.2216\\139\\40.03906\\-299.9194\\139\\38.08594\\-300.4427\\139\\32.22656\\-301.4066\\139\\28.32031\\-302.325\\139\\26.36719\\-302.591\\139\\22.46094\\-302.8813\\139\\18.55469\\-303.2514\\139\\12.69531\\-304.1505\\139\\8.789063\\-304.4159\\139\\0.9765625\\-304.5951\\139\\-4.882813\\-304.525\\139\\-8.789063\\-304.3658\\139\\-10.74219\\-304.2354\\139"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002231"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "245"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "196"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-303.5781\\141\\-20.50781\\-303.0607\\141\\-26.36719\\-302.5527\\141\\-28.32031\\-302.234\\141\\-32.22656\\-301.2835\\141\\-36.13281\\-300.6136\\141\\-38.08594\\-300.2286\\141\\-40.03906\\-299.4703\\141\\-43.94531\\-298.4194\\141\\-45.89844\\-297.4965\\141\\-49.80469\\-296.3766\\141\\-51.75781\\-295.4265\\141\\-53.71094\\-294.8897\\141\\-55.66406\\-294.1336\\141\\-57.61719\\-293.138\\141\\-59.57031\\-292.257\\141\\-61.52344\\-291.1178\\141\\-67.38281\\-288.2036\\141\\-69.33594\\-287.0857\\141\\-71.28906\\-285.7605\\141\\-73.24219\\-284.6101\\141\\-75.19531\\-283.2369\\141\\-79.10156\\-280.8607\\141\\-79.69501\\-280.3359\\141\\-82.27361\\-278.3828\\141\\-83.00781\\-277.7122\\141\\-84.96094\\-276.217\\141\\-86.91406\\-274.9224\\141\\-88.86719\\-273.2837\\141\\-90.82031\\-271.4563\\141\\-94.72656\\-268.0259\\141\\-98.63281\\-264.166\\141\\-102.2461\\-260.8047\\141\\-103.9103\\-258.8516\\141\\-105.7651\\-256.8984\\141\\-108.3984\\-254.2771\\141\\-112.8415\\-249.0859\\141\\-114.3932\\-247.1328\\141\\-115.6994\\-245.1797\\141\\-118.4789\\-241.2734\\141\\-119.5076\\-239.3203\\141\\-120.9551\\-237.3672\\141\\-122.1563\\-235.4141\\141\\-124.939\\-229.5547\\141\\-125.7026\\-227.6016\\141\\-126.7324\\-225.6484\\141\\-127.3885\\-223.6953\\141\\-128.3322\\-221.7422\\141\\-129.2864\\-217.8359\\141\\-130.494\\-213.9297\\141\\-131.1427\\-210.0234\\141\\-132.1742\\-206.1172\\141\\-132.4961\\-204.1641\\141\\-133.405\\-196.3516\\141\\-133.8838\\-192.4453\\141\\-134.1529\\-188.5391\\141\\-134.2279\\-186.5859\\141\\-134.2804\\-180.7266\\141\\-134.1986\\-176.8203\\141\\-133.9899\\-172.9141\\141\\-133.6506\\-169.0078\\141\\-133.2115\\-165.1016\\141\\-132.6663\\-159.2422\\141\\-132.1508\\-155.3359\\141\\-131.2488\\-151.4297\\141\\-130.6463\\-147.5234\\141\\-130.2411\\-145.5703\\141\\-129.5597\\-143.6172\\141\\-128.6438\\-139.7109\\141\\-127.9529\\-137.7578\\141\\-127.1405\\-135.8047\\141\\-126.4921\\-133.8516\\141\\-125.4213\\-131.8984\\141\\-124.7104\\-129.9453\\141\\-123.6905\\-127.9922\\141\\-122.9137\\-126.0391\\141\\-121.7923\\-124.0859\\141\\-120.7785\\-122.1328\\141\\-117.7572\\-118.2266\\141\\-116.539\\-116.2734\\141\\-114.9018\\-114.3203\\141\\-111.0715\\-110.4141\\141\\-110.3516\\-109.6176\\141\\-108.3984\\-107.803\\141\\-106.4453\\-106.4054\\141\\-104.4922\\-105.153\\141\\-102.5391\\-103.65\\141\\-100.5859\\-102.3521\\141\\-98.63281\\-101.4234\\141\\-96.67969\\-100.3351\\141\\-94.72656\\-99.62018\\141\\-90.82031\\-97.84151\\141\\-88.86719\\-97.18843\\141\\-86.91406\\-96.35549\\141\\-84.96094\\-95.88626\\141\\-81.05469\\-95.09335\\141\\-79.10156\\-94.54676\\141\\-77.14844\\-94.19156\\141\\-75.19531\\-93.93909\\141\\-71.28906\\-93.54562\\141\\-67.38281\\-92.92188\\141\\-65.42969\\-92.51041\\141\\-61.52344\\-91.93249\\141\\-57.61719\\-91.55041\\141\\-55.66406\\-91.3066\\141\\-51.75781\\-90.63533\\141\\-47.85156\\-90.21602\\141\\-38.08594\\-89.61935\\141\\-34.17969\\-89.46828\\141\\-28.32031\\-89.39324\\141\\-22.46094\\-89.50378\\141\\-16.60156\\-89.86402\\141\\-14.64844\\-90.10262\\141\\-12.69531\\-90.47591\\141\\-10.74219\\-91.21512\\141\\-6.835938\\-92.49985\\141\\-4.882813\\-93.38566\\141\\-2.929688\\-93.82449\\141\\0.9765625\\-94.41936\\141\\2.929688\\-94.52338\\141\\4.882813\\-94.44727\\141\\8.789063\\-93.95991\\141\\10.74219\\-93.62791\\141\\12.69531\\-92.93915\\141\\14.64844\\-92.08916\\141\\16.60156\\-91.53947\\141\\18.55469\\-90.78664\\141\\20.50781\\-90.21107\\141\\24.41406\\-89.55539\\141\\28.32031\\-88.78473\\141\\30.27344\\-88.49642\\141\\32.22656\\-88.31056\\141\\38.08594\\-88.00105\\141\\43.94531\\-87.86381\\141\\49.80469\\-87.85727\\141\\55.66406\\-87.99431\\141\\57.61719\\-88.08843\\141\\61.52344\\-88.4317\\141\\63.47656\\-88.81613\\141\\65.42969\\-89.34457\\141\\71.28906\\-90.36476\\141\\75.19531\\-91.55455\\141\\79.10156\\-92.57685\\141\\81.05469\\-93.35721\\141\\84.96094\\-94.30078\\141\\86.91406\\-95.27402\\141\\88.86719\\-95.88258\\141\\90.73154\\-96.74219\\141\\96.67969\\-99.7429\\141\\100.5859\\-101.769\\141\\104.4922\\-104.364\\141\\107.3649\\-106.5078\\141\\110.3516\\-108.9642\\141\\113.6947\\-112.3672\\141\\115.5104\\-114.3203\\141\\117.0489\\-116.2734\\141\\118.401\\-118.2266\\141\\119.5378\\-120.1797\\141\\120.8643\\-122.1328\\141\\122.7409\\-126.0391\\141\\123.2767\\-127.9922\\141\\124.0786\\-129.9453\\141\\124.753\\-131.8984\\141\\125.2339\\-133.8516\\141\\126.6142\\-137.7578\\141\\127.5112\\-141.6641\\141\\128.1523\\-143.6172\\141\\128.5828\\-145.5703\\141\\129.1177\\-149.4766\\141\\129.4465\\-151.4297\\141\\130.2321\\-155.3359\\141\\130.4979\\-157.2891\\141\\130.8363\\-161.1953\\141\\131.3244\\-169.0078\\141\\131.4776\\-172.9141\\141\\131.7042\\-182.6797\\141\\131.7486\\-186.5859\\141\\131.7344\\-190.4922\\141\\131.6467\\-194.3984\\141\\131.4715\\-198.3047\\141\\130.8481\\-208.0703\\141\\130.4455\\-211.9766\\141\\130.0569\\-213.9297\\141\\129.4526\\-215.8828\\141\\128.6373\\-219.7891\\141\\128.0117\\-221.7422\\141\\127.1738\\-223.6953\\141\\126.5848\\-225.6484\\141\\125.539\\-227.6016\\141\\124.8921\\-229.5547\\141\\123.2146\\-233.4609\\141\\122.5619\\-235.4141\\141\\121.3833\\-237.3672\\141\\120.504\\-239.3203\\141\\119.1833\\-241.2734\\141\\117.9858\\-243.2266\\141\\116.9934\\-245.1797\\141\\115.7096\\-247.1328\\141\\114.6061\\-249.0859\\141\\111.5271\\-252.9922\\141\\110.3516\\-254.8058\\141\\108.8365\\-256.8984\\141\\104.4922\\-261.8106\\141\\101.6846\\-264.7109\\141\\98.63281\\-267.7182\\141\\95.53205\\-270.5703\\141\\90.82031\\-274.5997\\141\\86.91406\\-277.4005\\141\\84.96094\\-279.0231\\141\\83.00781\\-280.5223\\141\\81.05469\\-281.6232\\141\\79.10156\\-283.0103\\141\\77.14844\\-284.1061\\141\\75.19531\\-285.3353\\141\\73.24219\\-286.6992\\141\\71.28906\\-287.6369\\141\\69.33594\\-288.8314\\141\\67.38281\\-289.4733\\141\\65.42969\\-290.7119\\141\\63.47656\\-291.5128\\141\\61.52344\\-292.6897\\141\\59.57031\\-293.4254\\141\\57.61719\\-294.4396\\141\\53.71094\\-295.558\\141\\51.75781\\-296.4713\\141\\47.85156\\-297.512\\141\\45.89844\\-298.4052\\141\\41.99219\\-299.4001\\141\\40.03906\\-300.1529\\141\\38.08594\\-300.5769\\141\\34.17969\\-301.1966\\141\\32.22656\\-301.5798\\141\\30.27344\\-302.1003\\141\\28.32031\\-302.4693\\141\\26.36719\\-302.689\\141\\22.46094\\-302.9824\\141\\18.55469\\-303.4189\\141\\14.64844\\-304.0774\\141\\12.69531\\-304.2954\\141\\8.789063\\-304.5287\\141\\4.882813\\-304.642\\141\\0.9765625\\-304.7033\\141\\-4.882813\\-304.6232\\141\\-8.789063\\-304.4625\\141\\-12.69531\\-304.1798\\141"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002230"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "241"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "197"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-303.1557\\143\\-26.36719\\-302.6283\\143\\-28.32031\\-302.3477\\143\\-30.27344\\-301.9203\\143\\-32.22656\\-301.3825\\143\\-38.08594\\-300.3405\\143\\-41.99219\\-299.0424\\143\\-43.94531\\-298.5528\\143\\-45.89844\\-297.6682\\143\\-47.85156\\-297.0258\\143\\-49.80469\\-296.511\\143\\-51.75781\\-295.5523\\143\\-55.66406\\-294.3513\\143\\-57.61719\\-293.2838\\143\\-59.57031\\-292.5059\\143\\-61.52344\\-291.2703\\143\\-63.47656\\-290.4421\\143\\-65.42969\\-289.2948\\143\\-67.38281\\-288.5208\\143\\-67.89526\\-288.1484\\143\\-73.24219\\-284.8717\\143\\-75.19531\\-283.4195\\143\\-77.14844\\-282.3301\\143\\-79.10156\\-281.0838\\143\\-82.53817\\-278.3828\\143\\-83.00781\\-277.9402\\143\\-86.91406\\-275.1516\\143\\-88.86719\\-273.4938\\143\\-92.77344\\-269.8595\\143\\-94.25813\\-268.6172\\143\\-96.42392\\-266.6641\\143\\-98.63281\\-264.3829\\143\\-102.5391\\-260.742\\143\\-103.98\\-258.8516\\143\\-105.8282\\-256.8984\\143\\-108.3984\\-254.2918\\143\\-112.7539\\-249.0859\\143\\-114.2578\\-247.1049\\143\\-116.9577\\-243.2266\\143\\-118.1717\\-241.2734\\143\\-119.2871\\-239.3203\\143\\-120.7252\\-237.3672\\143\\-121.7471\\-235.4141\\143\\-122.8962\\-233.4609\\143\\-123.5871\\-231.5078\\143\\-124.6647\\-229.5547\\143\\-125.271\\-227.6016\\143\\-126.2888\\-225.6484\\143\\-127.6855\\-221.7422\\143\\-128.4973\\-219.7891\\143\\-129.3351\\-215.8828\\143\\-130.4852\\-211.9766\\143\\-131.3997\\-206.1172\\143\\-132.276\\-202.2109\\143\\-132.5312\\-200.2578\\143\\-133.0473\\-194.3984\\143\\-133.5014\\-186.5859\\143\\-133.5713\\-180.7266\\143\\-133.4635\\-176.8203\\143\\-133.0432\\-169.0078\\143\\-132.6018\\-163.1484\\143\\-132.1951\\-159.2422\\143\\-131.3968\\-155.3359\\143\\-131.1093\\-153.3828\\143\\-130.6345\\-149.4766\\143\\-130.2296\\-147.5234\\143\\-129.5965\\-145.5703\\143\\-128.7287\\-141.6641\\143\\-128.1896\\-139.7109\\143\\-127.3246\\-137.7578\\143\\-126.7265\\-135.8047\\143\\-124.9943\\-131.8984\\143\\-124.2604\\-129.9453\\143\\-123.2308\\-127.9922\\143\\-122.4624\\-126.0391\\143\\-122.0703\\-125.4796\\143\\-120.1172\\-122.2005\\143\\-118.7397\\-120.1797\\143\\-116.2109\\-116.8697\\143\\-114.2578\\-114.4009\\143\\-112.2615\\-112.3672\\143\\-110.3516\\-110.2403\\143\\-108.3984\\-108.3691\\143\\-106.4453\\-107.0786\\143\\-102.5391\\-104.0632\\143\\-98.63281\\-101.7516\\143\\-96.67969\\-100.8714\\143\\-94.72656\\-99.88494\\143\\-92.77344\\-99.23785\\143\\-90.82031\\-98.17651\\143\\-88.86719\\-97.54675\\143\\-84.96094\\-96.16951\\143\\-81.05469\\-95.42133\\143\\-77.14844\\-94.50694\\143\\-75.19531\\-94.15717\\143\\-67.38281\\-93.31762\\143\\-65.42969\\-93.00871\\143\\-63.47656\\-92.56541\\143\\-61.52344\\-92.23113\\143\\-53.71094\\-91.39462\\143\\-49.80469\\-90.77431\\143\\-45.89844\\-90.3335\\143\\-41.99219\\-90.05074\\143\\-38.08594\\-89.86577\\143\\-34.17969\\-89.75561\\143\\-26.36719\\-89.69926\\143\\-20.50781\\-89.85899\\143\\-16.60156\\-90.13286\\143\\-14.64844\\-90.40341\\143\\-8.789063\\-92.19041\\143\\-6.835938\\-93.06703\\143\\-4.882813\\-93.66871\\143\\-2.929688\\-94.05192\\143\\0.9765625\\-94.96184\\143\\2.929688\\-95.09557\\143\\4.882813\\-95.00361\\143\\6.835938\\-94.67462\\143\\10.74219\\-93.87315\\143\\12.69531\\-93.40774\\143\\14.64844\\-92.449\\143\\18.55469\\-91.30768\\143\\20.50781\\-90.59715\\143\\22.46094\\-90.15594\\143\\30.27344\\-89.05642\\143\\32.22656\\-88.68739\\143\\36.13281\\-88.35635\\143\\40.03906\\-88.15936\\143\\43.94531\\-88.06097\\143\\49.80469\\-88.03599\\143\\55.66406\\-88.18079\\143\\59.57031\\-88.46745\\143\\61.52344\\-88.73292\\143\\63.47656\\-89.21165\\143\\65.42969\\-89.59013\\143\\69.33594\\-90.18994\\143\\71.28906\\-90.62015\\143\\73.24219\\-91.27216\\143\\77.14844\\-92.21945\\143\\81.05469\\-93.56226\\143\\83.00781\\-93.97729\\143\\84.96094\\-94.58307\\143\\86.91406\\-95.49874\\143\\88.86719\\-96.11311\\143\\90.82031\\-97.2112\\143\\92.77344\\-98.03487\\143\\94.72656\\-99.21916\\143\\96.67969\\-99.98689\\143\\98.63281\\-101.1743\\143\\100.5859\\-102.0969\\143\\103.9997\\-104.5547\\143\\104.4922\\-104.9753\\143\\106.4453\\-106.2361\\143\\108.3984\\-107.7051\\143\\110.3516\\-109.4652\\143\\115.0377\\-114.3203\\143\\116.649\\-116.2734\\143\\117.6793\\-118.2266\\143\\118.1641\\-118.8391\\143\\120.2691\\-122.1328\\143\\122.1719\\-126.0391\\143\\122.9171\\-127.9922\\143\\123.3874\\-129.9453\\143\\124.1936\\-131.8984\\143\\124.7991\\-133.8516\\143\\125.2258\\-135.8047\\143\\126.5321\\-139.7109\\143\\127.3621\\-143.6172\\143\\128.4084\\-147.5234\\143\\128.6978\\-149.4766\\143\\129.4556\\-155.3359\\143\\130.1139\\-159.2422\\143\\130.361\\-161.1953\\143\\130.6391\\-165.1016\\143\\130.8247\\-170.9609\\143\\130.9685\\-182.6797\\143\\131.0096\\-188.5391\\143\\130.9548\\-196.3516\\143\\130.8142\\-202.2109\\143\\130.6345\\-206.1172\\143\\130.2637\\-210.0234\\143\\129.4526\\-213.9297\\143\\128.7726\\-217.8359\\143\\128.3713\\-219.7891\\143\\127.58\\-221.7422\\143\\126.3171\\-225.6484\\143\\125.3084\\-227.6016\\143\\124.7614\\-229.5547\\143\\123.8222\\-231.5078\\143\\122.4783\\-235.4141\\143\\121.3421\\-237.3672\\143\\120.4514\\-239.3203\\143\\119.1879\\-241.2734\\143\\118.0753\\-243.2266\\143\\117.0647\\-245.1797\\143\\115.7973\\-247.1328\\143\\114.7263\\-249.0859\\143\\111.6599\\-252.9922\\143\\110.4707\\-254.9453\\143\\109.0205\\-256.8984\\143\\104.4922\\-262.084\\143\\101.9744\\-264.7109\\143\\98.63281\\-267.9865\\143\\95.86828\\-270.5703\\143\\94.72656\\-271.4946\\143\\92.77344\\-273.2789\\143\\90.82031\\-274.9323\\143\\86.91406\\-277.6642\\143\\83.00781\\-280.8411\\143\\81.05469\\-281.8943\\143\\77.14844\\-284.5146\\143\\75.19531\\-285.5948\\143\\73.24219\\-286.9363\\143\\69.33594\\-289.0158\\143\\67.38281\\-289.7345\\143\\65.42969\\-290.9225\\143\\63.47656\\-291.8353\\143\\61.52344\\-292.891\\143\\59.57031\\-293.6736\\143\\57.61719\\-294.636\\143\\55.66406\\-295.1421\\143\\53.71094\\-295.816\\143\\51.75781\\-296.6445\\143\\49.80469\\-297.102\\143\\47.85156\\-297.7883\\143\\45.89844\\-298.5848\\143\\41.99219\\-299.6525\\143\\40.03906\\-300.325\\143\\34.17969\\-301.3518\\143\\30.27344\\-302.2818\\143\\28.32031\\-302.5838\\143\\22.46094\\-303.0938\\143\\18.55469\\-303.6467\\143\\16.60156\\-304.0325\\143\\12.69531\\-304.4228\\143\\8.789063\\-304.6326\\143\\4.882813\\-304.75\\143\\0.9765625\\-304.7927\\143\\-4.882813\\-304.7077\\143\\-10.74219\\-304.456\\143\\-12.69531\\-304.3275\\143\\-14.64844\\-304.099\\143"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002229"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "247"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "198"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-304.0092\\145\\-20.50781\\-303.282\\145\\-22.46094\\-303.0466\\145\\-26.36719\\-302.6826\\145\\-28.32031\\-302.4401\\145\\-30.27344\\-302.0735\\145\\-32.22656\\-301.5115\\145\\-34.17969\\-301.1184\\145\\-38.08594\\-300.4543\\145\\-40.01991\\-299.8672\\145\\-41.99219\\-299.1681\\145\\-43.94531\\-298.6554\\145\\-47.85156\\-297.1233\\145\\-49.80469\\-296.6255\\145\\-51.75781\\-295.7168\\145\\-55.66406\\-294.5121\\145\\-57.61719\\-293.4472\\145\\-59.57031\\-292.6926\\145\\-61.52344\\-291.4464\\145\\-63.47656\\-290.6572\\145\\-65.42969\\-289.4569\\145\\-67.38281\\-288.7279\\145\\-69.33594\\-287.479\\145\\-71.28906\\-286.443\\145\\-74.44473\\-284.2422\\145\\-75.19531\\-283.6486\\145\\-77.14844\\-282.6048\\145\\-79.10156\\-281.2761\\145\\-81.05469\\-279.7663\\145\\-86.91406\\-275.3649\\145\\-88.86719\\-273.6915\\145\\-92.77344\\-270.021\\145\\-94.64518\\-268.6172\\145\\-96.78728\\-266.6641\\145\\-98.57388\\-264.7109\\145\\-100.5859\\-262.8636\\145\\-102.7072\\-260.8047\\145\\-104.2519\\-258.8516\\145\\-108.3984\\-254.3564\\145\\-112.7045\\-249.0859\\145\\-114.2578\\-246.9777\\145\\-116.8729\\-243.2266\\145\\-117.8903\\-241.2734\\145\\-119.1406\\-239.3203\\145\\-120.5143\\-237.3672\\145\\-121.4955\\-235.4141\\145\\-122.7193\\-233.4609\\145\\-123.3576\\-231.5078\\145\\-124.3604\\-229.5547\\145\\-125.6946\\-225.6484\\145\\-126.6694\\-223.6953\\145\\-127.225\\-221.7422\\145\\-128.0398\\-219.7891\\145\\-128.6256\\-217.8359\\145\\-129.3815\\-213.9297\\145\\-129.9844\\-211.9766\\145\\-130.4852\\-210.0234\\145\\-130.7761\\-208.0703\\145\\-131.2145\\-204.1641\\145\\-131.5619\\-202.2109\\145\\-132.0229\\-200.2578\\145\\-132.3242\\-198.3047\\145\\-132.6555\\-194.3984\\145\\-132.8621\\-190.4922\\145\\-133.0027\\-186.5859\\145\\-133.0553\\-182.6797\\145\\-132.9702\\-176.8203\\145\\-132.8323\\-172.9141\\145\\-132.6399\\-169.0078\\145\\-132.3442\\-165.1016\\145\\-132.1399\\-163.1484\\145\\-131.1947\\-157.2891\\145\\-130.6002\\-151.4297\\145\\-130.2411\\-149.4766\\145\\-129.6258\\-147.5234\\145\\-129.1629\\-145.5703\\145\\-128.3799\\-141.6641\\145\\-127.5536\\-139.7109\\145\\-126.2471\\-135.8047\\145\\-125.2959\\-133.8516\\145\\-124.6438\\-131.8984\\145\\-123.6119\\-129.9453\\145\\-122.8957\\-127.9922\\145\\-120.8089\\-124.0859\\145\\-119.3683\\-122.1328\\145\\-116.7759\\-118.2266\\145\\-114.2578\\-115.1971\\145\\-108.3984\\-109.0455\\145\\-106.4453\\-107.4333\\145\\-104.4922\\-105.9547\\145\\-98.63281\\-102.0648\\145\\-96.67969\\-101.2437\\145\\-94.72656\\-100.1602\\145\\-92.77344\\-99.54623\\145\\-90.82031\\-98.62873\\145\\-88.86719\\-97.84216\\145\\-86.91406\\-97.29075\\145\\-84.96094\\-96.53696\\145\\-83.00781\\-96.01691\\145\\-79.10156\\-95.34245\\145\\-77.14844\\-94.94804\\145\\-75.19531\\-94.44231\\145\\-73.24219\\-94.13591\\145\\-65.42969\\-93.37148\\145\\-63.47656\\-93.03569\\145\\-61.52344\\-92.57685\\145\\-57.61719\\-92.02213\\145\\-49.80469\\-91.23963\\145\\-45.89844\\-90.67111\\145\\-41.99219\\-90.3023\\145\\-38.08594\\-90.08654\\145\\-34.17969\\-89.99548\\145\\-26.36719\\-89.93661\\145\\-20.50781\\-90.10051\\145\\-16.60156\\-90.45481\\145\\-14.64844\\-90.87518\\145\\-12.69531\\-91.44169\\145\\-10.74219\\-91.90302\\145\\-8.789063\\-92.60021\\145\\-6.835938\\-93.48905\\145\\-2.929688\\-94.36955\\145\\-0.9765625\\-95.06911\\145\\0.9765625\\-95.42568\\145\\2.929688\\-95.52148\\145\\4.882813\\-95.45435\\145\\6.835938\\-95.21631\\145\\10.74219\\-94.12731\\145\\12.69531\\-93.68433\\145\\16.60156\\-92.15234\\145\\20.50781\\-91.11465\\145\\22.46094\\-90.53404\\145\\24.41406\\-90.14216\\145\\30.27344\\-89.51083\\145\\36.13281\\-88.70377\\145\\40.03906\\-88.41877\\145\\43.94531\\-88.28075\\145\\47.85156\\-88.23214\\145\\51.75781\\-88.27251\\145\\55.66406\\-88.39992\\145\\59.57031\\-88.81701\\145\\63.47656\\-89.50729\\145\\67.38281\\-90.07951\\145\\69.33594\\-90.42983\\145\\73.24219\\-91.50939\\145\\77.14844\\-92.41999\\145\\79.10156\\-93.20564\\145\\81.05469\\-93.73693\\145\\83.00781\\-94.11054\\145\\84.96094\\-94.93402\\145\\88.86719\\-96.37109\\145\\90.82031\\-97.50174\\145\\92.77344\\-98.32668\\145\\94.72656\\-99.49644\\145\\96.67969\\-100.2966\\145\\100.5859\\-102.5787\\145\\102.5391\\-103.8417\\145\\104.4922\\-105.4123\\145\\106.4453\\-106.8308\\145\\108.3984\\-108.1106\\145\\110.3516\\-109.9371\\145\\114.5531\\-114.3203\\145\\116.2109\\-116.5957\\145\\118.5974\\-120.1797\\145\\119.5337\\-122.1328\\145\\120.7738\\-124.0859\\145\\121.5006\\-126.0391\\145\\122.5185\\-127.9922\\145\\123.5119\\-131.8984\\145\\124.3467\\-133.8516\\145\\124.8461\\-135.8047\\145\\125.2413\\-137.7578\\145\\125.7813\\-139.7109\\145\\126.459\\-141.6641\\145\\127.254\\-145.5703\\145\\128.253\\-149.4766\\145\\128.563\\-151.4297\\145\\129.0298\\-155.3359\\145\\129.3846\\-159.2422\\145\\129.8909\\-163.1484\\145\\130.0841\\-165.1016\\145\\130.3267\\-170.9609\\145\\130.3811\\-174.8672\\145\\130.5804\\-182.6797\\145\\130.6345\\-188.5391\\145\\130.6152\\-196.3516\\145\\130.4546\\-202.2109\\145\\130.2271\\-206.1172\\145\\129.3815\\-211.9766\\145\\128.8947\\-215.8828\\145\\128.5671\\-217.8359\\145\\128.0794\\-219.7891\\145\\127.3035\\-221.7422\\145\\126.7609\\-223.6953\\145\\126.0287\\-225.6484\\145\\125.1708\\-227.6016\\145\\124.6802\\-229.5547\\145\\123.7169\\-231.5078\\145\\122.4542\\-235.4141\\145\\121.3408\\-237.3672\\145\\120.4834\\-239.3203\\145\\119.2415\\-241.2734\\145\\117.1448\\-245.1797\\145\\114.8425\\-249.0859\\145\\111.8164\\-252.9922\\145\\110.6916\\-254.9453\\145\\109.2122\\-256.8984\\145\\106.4453\\-260.1466\\145\\104.4922\\-262.3496\\145\\100.5859\\-266.4462\\145\\96.13962\\-270.5703\\145\\94.72656\\-271.7434\\145\\92.77344\\-273.5359\\145\\90.82031\\-275.1972\\145\\88.86719\\-276.6829\\145\\86.91406\\-277.9496\\145\\83.00781\\-281.0748\\145\\79.10156\\-283.4253\\145\\77.14844\\-284.8233\\145\\71.28906\\-288.3112\\145\\69.33594\\-289.1724\\145\\65.42969\\-291.1095\\145\\63.47656\\-292.2417\\145\\59.55574\\-294.0078\\145\\57.61719\\-294.8046\\145\\55.66406\\-295.2705\\145\\53.71094\\-296.1324\\145\\51.75781\\-296.8019\\145\\49.80469\\-297.2649\\145\\47.85156\\-298.1258\\145\\45.89844\\-298.7446\\145\\43.94531\\-299.2406\\145\\41.99219\\-299.9619\\145\\40.03906\\-300.4739\\145\\34.17969\\-301.528\\145\\32.22656\\-302.0754\\145\\30.27344\\-302.4526\\145\\28.32031\\-302.7003\\145\\24.41406\\-303.0244\\145\\22.46094\\-303.2514\\145\\16.60156\\-304.2173\\145\\14.64844\\-304.3877\\145\\8.789063\\-304.7265\\145\\4.882813\\-304.8366\\145\\-0.9765625\\-304.8666\\145\\-4.882813\\-304.7927\\145\\-10.74219\\-304.5461\\145\\-14.64844\\-304.2531\\145"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002228"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "241"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "199"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-303.4165\\147\\-24.41406\\-302.9264\\147\\-28.32031\\-302.5421\\147\\-30.27344\\-302.2012\\147\\-34.17969\\-301.2344\\147\\-38.08594\\-300.5656\\147\\-40.03906\\-300.0819\\147\\-41.99219\\-299.31\\147\\-43.94531\\-298.7805\\147\\-45.89844\\-298.1498\\147\\-47.85156\\-297.2388\\147\\-49.80469\\-296.7368\\147\\-53.71094\\-295.2055\\147\\-55.66406\\-294.6609\\147\\-57.61719\\-293.6667\\147\\-59.57031\\-292.8561\\147\\-61.52344\\-291.6909\\147\\-63.47656\\-290.8499\\147\\-65.42969\\-289.644\\147\\-67.38281\\-288.921\\147\\-69.33594\\-287.7107\\147\\-71.28906\\-286.7286\\147\\-71.95345\\-286.1953\\147\\-75.19531\\-283.9434\\147\\-77.14844\\-282.8763\\147\\-80.73821\\-280.3359\\147\\-83.00781\\-278.6744\\147\\-88.23438\\-274.4766\\147\\-92.77344\\-270.3577\\147\\-94.72656\\-268.8863\\147\\-96.67969\\-267.0501\\147\\-98.89063\\-264.7109\\147\\-100.9627\\-262.7578\\147\\-102.9072\\-260.8047\\147\\-104.4669\\-258.8516\\147\\-108.3984\\-254.4807\\147\\-112.7148\\-249.0859\\147\\-116.8155\\-243.2266\\147\\-117.7749\\-241.2734\\147\\-118.1641\\-240.7981\\147\\-120.1172\\-237.6072\\147\\-121.3321\\-235.4141\\147\\-122.5456\\-233.4609\\147\\-123.2096\\-231.5078\\147\\-124.8311\\-227.6016\\147\\-125.3706\\-225.6484\\147\\-126.3507\\-223.6953\\147\\-127.5378\\-219.7891\\147\\-128.3138\\-217.8359\\147\\-128.7493\\-215.8828\\147\\-129.4908\\-211.9766\\147\\-130.0841\\-210.0234\\147\\-130.5025\\-208.0703\\147\\-131.3997\\-200.2578\\147\\-132.0597\\-196.3516\\147\\-132.2889\\-194.3984\\147\\-132.5531\\-190.4922\\147\\-132.6793\\-186.5859\\147\\-132.7242\\-182.6797\\147\\-132.6892\\-178.7734\\147\\-132.5027\\-172.9141\\147\\-132.2613\\-169.0078\\147\\-132.0717\\-167.0547\\147\\-131.4901\\-163.1484\\147\\-131.2647\\-161.1953\\147\\-130.5442\\-153.3828\\147\\-130.2059\\-151.4297\\147\\-129.6535\\-149.4766\\147\\-129.213\\-147.5234\\147\\-128.4886\\-143.6172\\147\\-127.1076\\-139.7109\\147\\-126.55\\-137.7578\\147\\-125.5713\\-135.8047\\147\\-124.9107\\-133.8516\\147\\-123.182\\-129.9453\\147\\-122.4958\\-127.9922\\147\\-121.3\\-126.0391\\147\\-120.229\\-124.0859\\147\\-118.1641\\-121.0818\\147\\-117.4091\\-120.1797\\147\\-116.2109\\-118.4013\\147\\-114.6415\\-116.2734\\147\\-112.8976\\-114.3203\\147\\-109.2687\\-110.4141\\147\\-108.3984\\-109.5378\\147\\-106.4453\\-107.8351\\147\\-102.5391\\-105.1991\\147\\-100.5859\\-103.7362\\147\\-98.63281\\-102.5163\\147\\-94.72656\\-100.577\\147\\-92.77344\\-99.75907\\147\\-90.82031\\-99.12555\\147\\-88.86719\\-98.14489\\147\\-84.96094\\-96.98633\\147\\-83.00781\\-96.29773\\147\\-81.05469\\-95.9011\\147\\-77.14844\\-95.32232\\147\\-73.24219\\-94.39146\\147\\-69.33594\\-93.93233\\147\\-65.42969\\-93.60198\\147\\-63.47656\\-93.38056\\147\\-61.52344\\-93.03419\\147\\-59.57031\\-92.57685\\147\\-55.66406\\-92.03783\\147\\-51.75781\\-91.67336\\147\\-47.85156\\-91.36514\\147\\-40.03906\\-90.43892\\147\\-36.13281\\-90.26913\\147\\-28.32031\\-90.16917\\147\\-26.36719\\-90.18681\\147\\-20.50781\\-90.40048\\147\\-18.55469\\-90.58984\\147\\-16.60156\\-90.92066\\147\\-12.69531\\-91.7313\\147\\-10.74219\\-92.25\\147\\-8.789063\\-93.15671\\147\\-6.835938\\-93.73509\\147\\-4.882813\\-94.17467\\147\\-2.929688\\-94.89144\\147\\-0.9765625\\-95.49538\\147\\0.9765625\\-95.76008\\147\\2.929688\\-95.86987\\147\\4.882813\\-95.80976\\147\\6.835938\\-95.61359\\147\\8.789063\\-95.21336\\147\\10.74219\\-94.46354\\147\\14.64844\\-93.28176\\147\\16.60156\\-92.44407\\147\\18.55469\\-91.91905\\147\\20.50781\\-91.54734\\147\\24.41406\\-90.5638\\147\\26.36719\\-90.22237\\147\\28.32031\\-90.0082\\147\\34.17969\\-89.49538\\147\\38.08594\\-89.06815\\147\\41.99219\\-88.78473\\147\\47.85156\\-88.56261\\147\\51.75781\\-88.58543\\147\\55.66406\\-88.81525\\147\\59.57031\\-89.31638\\147\\65.42969\\-90.01651\\147\\67.38281\\-90.29801\\147\\69.33594\\-90.73421\\147\\71.28906\\-91.312\\147\\75.19531\\-92.11664\\147\\77.14844\\-92.67435\\147\\79.10156\\-93.42059\\147\\83.00781\\-94.27402\\147\\84.96094\\-95.19198\\147\\86.91406\\-95.84558\\147\\88.86719\\-96.73456\\147\\96.57749\\-100.6484\\147\\98.63281\\-101.7342\\147\\100.5859\\-103.0631\\147\\102.5391\\-104.2359\\147\\106.4453\\-107.2724\\147\\108.1181\\-108.4609\\147\\110.1406\\-110.4141\\147\\114.2578\\-114.7516\\147\\116.9302\\-118.2266\\147\\120.1172\\-123.9963\\147\\121.0769\\-126.0391\\147\\122.7564\\-129.9453\\147\\123.1873\\-131.8984\\147\\123.7246\\-133.8516\\147\\124.4894\\-135.8047\\147\\125.2741\\-139.7109\\147\\125.82\\-141.6641\\147\\126.4963\\-143.6172\\147\\127.1671\\-147.5234\\147\\128.0816\\-151.4297\\147\\128.4395\\-153.3828\\147\\128.8834\\-157.2891\\147\\129.3239\\-163.1484\\147\\129.5741\\-169.0078\\147\\129.7238\\-174.8672\\147\\129.9228\\-178.7734\\147\\130.099\\-184.6328\\147\\130.1649\\-188.5391\\147\\130.1398\\-196.3516\\147\\129.9384\\-202.2109\\147\\129.6552\\-206.1172\\147\\128.9353\\-213.9297\\147\\128.3997\\-217.8359\\147\\127.1389\\-221.7422\\147\\126.6473\\-223.6953\\147\\125.1149\\-227.6016\\147\\124.6454\\-229.5547\\147\\123.6792\\-231.5078\\147\\122.5124\\-235.4141\\147\\121.4058\\-237.3672\\147\\120.6203\\-239.3203\\147\\119.3217\\-241.2734\\147\\118.3758\\-243.2266\\147\\116.2109\\-247.056\\147\\114.9764\\-249.0859\\147\\112.0458\\-252.9922\\147\\110.88\\-254.9453\\147\\109.3814\\-256.8984\\147\\106.4453\\-260.4461\\147\\102.6293\\-264.7109\\147\\100.5859\\-266.841\\147\\96.67969\\-270.3469\\147\\92.77344\\-273.7817\\147\\88.86719\\-276.9594\\147\\84.96094\\-279.8111\\147\\83.00781\\-281.3125\\147\\81.05469\\-282.6669\\147\\79.10156\\-283.6497\\147\\78.35478\\-284.2422\\147\\75.19531\\-286.3962\\147\\73.24219\\-287.3995\\147\\71.28906\\-288.623\\147\\69.33594\\-289.336\\147\\67.38281\\-290.5308\\147\\65.42969\\-291.3278\\147\\63.47656\\-292.5517\\147\\61.52344\\-293.3001\\147\\59.57031\\-294.3311\\147\\57.61719\\-294.9665\\147\\55.66406\\-295.4596\\147\\53.71094\\-296.4102\\147\\49.80469\\-297.4864\\147\\47.85156\\-298.4081\\147\\43.94531\\-299.4753\\147\\41.99219\\-300.2286\\147\\40.03906\\-300.6337\\147\\36.13281\\-301.3094\\147\\32.22656\\-302.285\\147\\30.27344\\-302.5956\\147\\24.41406\\-303.1638\\147\\22.46094\\-303.4661\\147\\18.55469\\-304.1702\\147\\14.64844\\-304.5071\\147\\8.789063\\-304.827\\147\\2.929688\\-304.9813\\147\\-0.9765625\\-304.9687\\147\\-4.882813\\-304.8888\\147\\-10.74219\\-304.6378\\147\\-14.64844\\-304.3732\\147\\-16.60156\\-304.1604\\147"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002227"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "249"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "200"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-18.55469\\-304.044\\149\\-20.50781\\-303.6181\\149\\-24.41406\\-302.9999\\149\\-28.32031\\-302.6399\\149\\-30.27344\\-302.3284\\149\\-32.22656\\-301.9056\\149\\-34.17969\\-301.3619\\149\\-38.08594\\-300.6631\\149\\-40.03906\\-300.231\\149\\-41.99219\\-299.4906\\149\\-45.89844\\-298.3514\\149\\-47.85156\\-297.3809\\149\\-49.80469\\-296.8482\\149\\-51.75781\\-296.2122\\149\\-53.71094\\-295.3205\\149\\-55.66406\\-294.7903\\149\\-57.48981\\-294.0078\\149\\-61.53311\\-292.0547\\149\\-65.2073\\-290.1016\\149\\-67.38281\\-289.0891\\149\\-71.28906\\-286.9609\\149\\-73.24219\\-285.5582\\149\\-75.19531\\-284.3908\\149\\-81.05469\\-280.4744\\149\\-83.00781\\-278.9814\\149\\-86.91406\\-275.7248\\149\\-88.61205\\-274.4766\\149\\-92.95654\\-270.5703\\149\\-94.72656\\-269.1543\\149\\-96.67969\\-267.2888\\149\\-99.13163\\-264.7109\\149\\-101.2106\\-262.7578\\149\\-103.0941\\-260.8047\\149\\-106.3874\\-256.8984\\149\\-108.3984\\-254.6947\\149\\-109.6477\\-252.9922\\149\\-112.7608\\-249.0859\\149\\-114.2578\\-246.9747\\149\\-116.2109\\-244.0132\\149\\-116.7969\\-243.2266\\149\\-117.717\\-241.2734\\149\\-118.1641\\-240.7067\\149\\-120.1698\\-237.3672\\149\\-122.0703\\-233.9094\\149\\-122.3798\\-233.4609\\149\\-123.7684\\-229.5547\\149\\-124.6991\\-227.6016\\149\\-125.1771\\-225.6484\\149\\-126.709\\-221.7422\\149\\-127.2439\\-219.7891\\149\\-128.5275\\-215.8828\\149\\-129.2173\\-211.9766\\149\\-129.6152\\-210.0234\\149\\-130.1649\\-208.0703\\149\\-130.5151\\-206.1172\\149\\-130.7401\\-204.1641\\149\\-131.0714\\-200.2578\\149\\-131.5036\\-196.3516\\149\\-132.0476\\-192.4453\\149\\-132.213\\-190.4922\\149\\-132.401\\-186.5859\\149\\-132.4496\\-182.6797\\149\\-132.4088\\-178.7734\\149\\-132.2613\\-174.8672\\149\\-131.9845\\-170.9609\\149\\-131.7224\\-169.0078\\149\\-131.1294\\-163.1484\\149\\-130.6976\\-157.2891\\149\\-130.1794\\-153.3828\\149\\-129.2764\\-149.4766\\149\\-128.5666\\-145.5703\\149\\-128.0407\\-143.6172\\149\\-127.3035\\-141.6641\\149\\-126.7761\\-139.7109\\149\\-126.0437\\-137.7578\\149\\-125.172\\-135.8047\\149\\-124.5859\\-133.8516\\149\\-123.5455\\-131.8984\\149\\-122.9118\\-129.9453\\149\\-120.9211\\-126.0391\\149\\-119.535\\-124.0859\\149\\-118.3998\\-122.1328\\149\\-115.5001\\-118.2266\\149\\-114.2578\\-116.6523\\149\\-112.3047\\-114.3974\\149\\-108.7216\\-110.4141\\149\\-106.4453\\-108.3883\\149\\-100.5859\\-104.1159\\149\\-98.63281\\-103.0407\\149\\-96.67969\\-101.824\\149\\-94.72656\\-101.0093\\149\\-92.77344\\-99.9995\\149\\-90.82031\\-99.42925\\149\\-88.86719\\-98.52093\\149\\-86.91406\\-97.84082\\149\\-84.96094\\-97.33636\\149\\-81.05469\\-96.13258\\149\\-77.14844\\-95.56916\\149\\-75.19531\\-95.23416\\149\\-73.24219\\-94.74937\\149\\-71.28906\\-94.36955\\149\\-67.38281\\-93.90182\\149\\-63.47656\\-93.59743\\149\\-61.52344\\-93.36804\\149\\-59.57031\\-93.03419\\149\\-57.61719\\-92.57685\\149\\-55.66406\\-92.28182\\149\\-51.75781\\-91.86949\\149\\-43.94531\\-91.33854\\149\\-41.99219\\-91.15334\\149\\-40.03906\\-90.84525\\149\\-36.13281\\-90.57885\\149\\-30.27344\\-90.45744\\149\\-26.36719\\-90.51109\\149\\-22.46094\\-90.69581\\149\\-20.50781\\-90.87518\\149\\-16.60156\\-91.35904\\149\\-12.69531\\-92.0239\\149\\-10.74219\\-92.63365\\149\\-8.789063\\-93.50964\\149\\-6.835938\\-93.95991\\149\\-4.882813\\-94.53207\\149\\-2.929688\\-95.35547\\149\\-0.9765625\\-95.81614\\149\\0.9765625\\-96.06356\\149\\2.929688\\-96.16874\\149\\4.882813\\-96.11161\\149\\6.835938\\-95.92011\\149\\8.789063\\-95.58807\\149\\10.74219\\-94.9798\\149\\12.69531\\-94.14021\\149\\14.64844\\-93.57967\\149\\18.55469\\-92.25786\\149\\24.41406\\-91.12871\\149\\26.36719\\-90.64379\\149\\30.27344\\-90.12265\\149\\34.17969\\-89.79232\\149\\41.99219\\-89.35733\\149\\47.85156\\-89.13491\\149\\53.71094\\-89.21929\\149\\57.61719\\-89.48687\\149\\61.52344\\-89.81123\\149\\65.42969\\-90.26339\\149\\67.38281\\-90.59908\\149\\69.33594\\-91.15705\\149\\75.19531\\-92.31398\\149\\77.14844\\-93.02519\\149\\79.10156\\-93.58945\\149\\81.05469\\-93.94431\\149\\83.00781\\-94.50484\\149\\84.96094\\-95.4128\\149\\86.91406\\-96.04212\\149\\88.86719\\-97.11007\\149\\90.82031\\-97.93945\\149\\92.77344\\-99.11671\\149\\94.72656\\-99.9145\\149\\96.67969\\-101.0833\\149\\98.63281\\-102.026\\149\\99.38859\\-102.6016\\149\\104.4922\\-106.073\\149\\106.4453\\-107.5422\\149\\108.3984\\-109.19\\149\\112.3047\\-113.1833\\149\\115.0904\\-116.2734\\149\\116.4889\\-118.2266\\149\\117.4628\\-120.1797\\149\\118.7079\\-122.1328\\149\\119.5277\\-124.0859\\149\\120.7031\\-126.0391\\149\\121.4134\\-127.9922\\149\\122.382\\-129.9453\\149\\122.939\\-131.8984\\149\\123.3619\\-133.8516\\149\\124.633\\-137.7578\\149\\125.3546\\-141.6641\\149\\126.5241\\-145.5703\\149\\127.5302\\-151.4297\\149\\128.3518\\-155.3359\\149\\128.5865\\-157.2891\\149\\129.018\\-163.1484\\149\\129.2091\\-169.0078\\149\\129.2637\\-172.9141\\149\\129.541\\-184.6328\\149\\129.5906\\-192.4453\\149\\129.5157\\-200.2578\\149\\129.2982\\-206.1172\\149\\129.074\\-210.0234\\149\\128.7708\\-213.9297\\149\\128.5517\\-215.8828\\149\\128.2266\\-217.8359\\149\\127.574\\-219.7891\\149\\126.5821\\-223.6953\\149\\125.7464\\-225.6484\\149\\125.093\\-227.6016\\149\\124.6374\\-229.5547\\149\\123.705\\-231.5078\\149\\122.5779\\-235.4141\\149\\121.5131\\-237.3672\\149\\120.7406\\-239.3203\\149\\119.4642\\-241.2734\\149\\118.5509\\-243.2266\\149\\117.3331\\-245.1797\\149\\116.4017\\-247.1328\\149\\115.1078\\-249.0859\\149\\113.6545\\-251.0391\\149\\112.3718\\-252.9922\\149\\110.3516\\-255.8873\\149\\108.3984\\-258.3885\\149\\106.4453\\-260.7792\\149\\102.9914\\-264.7109\\149\\100.5859\\-267.1491\\149\\98.63281\\-268.9702\\149\\94.63629\\-272.5234\\149\\89.90832\\-276.4297\\149\\86.91406\\-278.7826\\149\\84.79656\\-280.3359\\149\\81.05469\\-282.9506\\149\\79.10156\\-283.9962\\149\\75.19531\\-286.7166\\149\\73.24219\\-287.6602\\149\\71.28906\\-288.8697\\149\\69.33594\\-289.59\\149\\67.38281\\-290.7937\\149\\65.42969\\-291.6006\\149\\63.47656\\-292.8005\\149\\61.52344\\-293.5759\\149\\59.57031\\-294.59\\149\\57.61719\\-295.1162\\149\\55.66406\\-295.7612\\149\\53.71094\\-296.6411\\149\\51.75781\\-297.1076\\149\\47.85156\\-298.6182\\149\\45.89844\\-299.1106\\149\\41.99219\\-300.4427\\149\\36.13281\\-301.5182\\149\\34.17969\\-302.0626\\149\\32.22656\\-302.461\\149\\30.27344\\-302.7239\\149\\28.32031\\-302.8724\\149\\24.41406\\-303.3633\\149\\20.50781\\-304.1095\\149\\18.55469\\-304.3507\\149\\10.74219\\-304.8462\\149\\6.835938\\-305.0045\\149\\2.929688\\-305.1031\\149\\-0.9765625\\-305.1031\\149\\-6.835938\\-304.9185\\149\\-10.74219\\-304.7311\\149\\-14.64844\\-304.4912\\149"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002226"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "243"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "201"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-303.882\\151\\-22.46094\\-303.4214\\151\\-24.41406\\-303.0938\\151\\-28.32031\\-302.7239\\151\\-32.22656\\-302.088\\151\\-34.17969\\-301.5302\\151\\-40.03906\\-300.3853\\151\\-43.94531\\-299.0413\\151\\-45.89844\\-298.5154\\151\\-47.85156\\-297.5975\\151\\-51.75781\\-296.4232\\151\\-53.71094\\-295.4661\\151\\-55.66406\\-294.9308\\151\\-57.61719\\-294.2573\\151\\-59.57031\\-293.1976\\151\\-61.52344\\-292.424\\151\\-63.47656\\-291.2094\\151\\-65.42969\\-290.3178\\151\\-67.38281\\-289.2328\\151\\-69.33594\\-288.4074\\151\\-73.24219\\-285.888\\151\\-75.19531\\-284.7392\\151\\-77.14844\\-283.3154\\151\\-79.10156\\-281.9983\\151\\-81.05469\\-280.8242\\151\\-83.00781\\-279.2488\\151\\-86.91406\\-275.9414\\151\\-88.86719\\-274.6719\\151\\-90.82031\\-272.9155\\151\\-93.31939\\-270.5703\\151\\-94.72656\\-269.3709\\151\\-96.67969\\-267.5314\\151\\-99.34938\\-264.7109\\151\\-101.4259\\-262.7578\\151\\-103.2815\\-260.8047\\151\\-106.4453\\-257.1163\\151\\-108.4227\\-254.9453\\151\\-109.7591\\-252.9922\\151\\-112.8493\\-249.0859\\151\\-114.2578\\-247.1231\\151\\-115.477\\-245.1797\\151\\-116.8246\\-243.2266\\151\\-117.7097\\-241.2734\\151\\-118.1641\\-240.6732\\151\\-120.1172\\-237.3573\\151\\-122.2642\\-233.4609\\151\\-123.029\\-231.5078\\151\\-123.6177\\-229.5547\\151\\-124.5841\\-227.6016\\151\\-125.0565\\-225.6484\\151\\-125.6714\\-223.6953\\151\\-126.5259\\-221.7422\\151\\-127.5954\\-217.8359\\151\\-128.3063\\-215.8828\\151\\-128.7256\\-213.9297\\151\\-129.3367\\-210.0234\\151\\-130.2525\\-206.1172\\151\\-130.7701\\-202.2109\\151\\-131.034\\-198.3047\\151\\-131.3539\\-194.3984\\151\\-131.752\\-190.4922\\151\\-132.0717\\-186.5859\\151\\-132.1399\\-184.6328\\151\\-132.1289\\-180.7266\\151\\-131.9714\\-176.8203\\151\\-131.6392\\-172.9141\\151\\-130.9077\\-163.1484\\151\\-130.6629\\-159.2422\\151\\-130.1649\\-155.3359\\151\\-129.6964\\-153.3828\\151\\-129.3257\\-151.4297\\151\\-128.6937\\-147.5234\\151\\-128.2441\\-145.5703\\151\\-127.5148\\-143.6172\\151\\-126.4259\\-139.7109\\151\\-125.4636\\-137.7578\\151\\-124.8873\\-135.8047\\151\\-124.1379\\-133.8516\\151\\-123.221\\-131.8984\\151\\-122.5784\\-129.9453\\151\\-121.4461\\-127.9922\\151\\-120.4791\\-126.0391\\151\\-120.1172\\-125.6004\\151\\-118.1641\\-122.6254\\151\\-117.7455\\-122.1328\\151\\-116.5213\\-120.1797\\151\\-115.0632\\-118.2266\\151\\-112.3047\\-114.9935\\151\\-109.9266\\-112.3672\\151\\-108.0604\\-110.4141\\151\\-106.4453\\-108.9458\\151\\-104.4922\\-107.342\\151\\-102.5391\\-105.8673\\151\\-97.38394\\-102.6016\\151\\-96.67969\\-102.1033\\151\\-94.72656\\-101.3143\\151\\-92.77344\\-100.2761\\151\\-88.86719\\-98.97536\\151\\-86.91406\\-98.11723\\151\\-83.00781\\-97.11328\\151\\-81.05469\\-96.43414\\151\\-79.10156\\-96.03658\\151\\-75.19531\\-95.49337\\151\\-71.28906\\-94.67372\\151\\-67.38281\\-94.05817\\151\\-61.52344\\-93.57417\\151\\-59.57031\\-93.34959\\151\\-57.61719\\-93.00739\\151\\-55.66406\\-92.56541\\151\\-53.71094\\-92.28662\\151\\-49.80469\\-91.92481\\151\\-41.99219\\-91.49588\\151\\-38.08594\\-91.1473\\151\\-34.17969\\-90.96481\\151\\-30.27344\\-90.87518\\151\\-26.36719\\-90.99463\\151\\-18.55469\\-91.44666\\151\\-14.64844\\-91.9201\\151\\-12.69531\\-92.33321\\151\\-10.74219\\-93.15671\\151\\-8.789063\\-93.74779\\151\\-6.835938\\-94.20181\\151\\-4.882813\\-95.0086\\151\\-2.929688\\-95.67317\\151\\0.9765625\\-96.41453\\151\\2.929688\\-96.5678\\151\\4.882813\\-96.49471\\151\\8.789063\\-95.88215\\151\\10.74219\\-95.39052\\151\\12.69531\\-94.43196\\151\\16.60156\\-93.331\\151\\18.55469\\-92.64893\\151\\20.50781\\-92.16029\\151\\22.46094\\-91.81\\151\\26.36719\\-91.22162\\151\\30.27344\\-90.50095\\151\\34.17969\\-90.09827\\151\\36.13281\\-89.97601\\151\\41.99219\\-89.70985\\151\\47.85156\\-89.59422\\151\\53.71094\\-89.62401\\151\\57.61719\\-89.78755\\151\\61.52344\\-90.06461\\151\\65.42969\\-90.58788\\151\\69.33594\\-91.42341\\151\\73.24219\\-92.11123\\151\\75.19531\\-92.55411\\151\\77.14844\\-93.27675\\151\\81.05469\\-94.07375\\151\\83.00781\\-94.76485\\151\\84.96094\\-95.59294\\151\\86.91406\\-96.26324\\151\\88.86719\\-97.36789\\151\\90.82031\\-98.15344\\151\\92.77344\\-99.3765\\151\\94.72656\\-100.1334\\151\\96.67969\\-101.3581\\151\\98.63281\\-102.3722\\151\\101.7624\\-104.5547\\151\\102.5391\\-105.2167\\151\\106.4453\\-107.8481\\151\\108.3984\\-109.5467\\151\\112.3047\\-113.5405\\151\\114.6926\\-116.2734\\151\\116.2109\\-118.611\\151\\118.2162\\-122.1328\\151\\120.1698\\-126.0391\\151\\121.0724\\-127.9922\\151\\122.6901\\-131.8984\\151\\123.5518\\-135.8047\\151\\124.2974\\-137.7578\\151\\124.7993\\-139.7109\\151\\125.4944\\-143.6172\\151\\126.1636\\-145.5703\\151\\126.6119\\-147.5234\\151\\127.5228\\-153.3828\\151\\127.9672\\-155.3359\\151\\128.3038\\-157.2891\\151\\128.5203\\-159.2422\\151\\128.7984\\-163.1484\\151\\128.9756\\-167.0547\\151\\129.1642\\-178.7734\\151\\129.2421\\-184.6328\\151\\129.2843\\-192.4453\\151\\129.238\\-200.2578\\151\\129.1489\\-204.1641\\151\\128.9998\\-208.0703\\151\\128.7772\\-211.9766\\151\\128.4059\\-215.8828\\151\\128.0651\\-217.8359\\151\\127.4535\\-219.7891\\151\\126.5526\\-223.6953\\151\\125.7324\\-225.6484\\151\\125.1195\\-227.6016\\151\\124.6726\\-229.5547\\151\\123.7558\\-231.5078\\151\\122.6525\\-235.4141\\151\\121.6527\\-237.3672\\151\\120.864\\-239.3203\\151\\119.6382\\-241.2734\\151\\118.7263\\-243.2266\\151\\117.4409\\-245.1797\\151\\116.6225\\-247.1328\\151\\113.8632\\-251.0391\\151\\112.6452\\-252.9922\\151\\110.3516\\-256.1506\\151\\108.3984\\-258.7295\\151\\106.4453\\-261.1535\\151\\103.2612\\-264.7109\\151\\101.3555\\-266.6641\\151\\98.63281\\-269.2753\\151\\94.72656\\-272.8224\\151\\92.68811\\-274.4766\\151\\88.86719\\-277.4548\\151\\84.96094\\-280.6139\\151\\82.40897\\-282.2891\\151\\77.14844\\-285.6131\\151\\75.19531\\-286.9912\\151\\71.28906\\-289.0643\\151\\69.15039\\-290.1016\\151\\63.47656\\-293.0419\\151\\59.57031\\-294.795\\151\\57.61719\\-295.2872\\151\\55.66406\\-296.1607\\151\\53.71094\\-296.8188\\151\\51.75781\\-297.3127\\151\\49.80469\\-298.2289\\151\\45.89844\\-299.3491\\151\\43.94531\\-300.1164\\151\\41.99219\\-300.5996\\151\\38.08594\\-301.2964\\151\\34.17969\\-302.2818\\151\\32.22656\\-302.5956\\151\\28.32031\\-302.9824\\151\\26.36719\\-303.2604\\151\\22.46094\\-304.044\\151\\18.55469\\-304.4912\\151\\12.69531\\-304.8612\\151\\4.882813\\-305.2148\\151\\-0.9765625\\-305.2533\\151\\-8.789063\\-304.9463\\151\\-14.64844\\-304.5965\\151\\-18.55469\\-304.2264\\151"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002225"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "238"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "202"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-304.1095\\153\\-24.41406\\-303.2424\\153\\-26.36719\\-302.9715\\153\\-30.27344\\-302.5838\\153\\-32.22656\\-302.2715\\153\\-36.13281\\-301.2614\\153\\-40.03906\\-300.5278\\153\\-41.99219\\-300.0026\\153\\-43.94531\\-299.1958\\153\\-45.89844\\-298.6776\\153\\-49.80469\\-297.1209\\153\\-51.75781\\-296.6022\\153\\-53.71094\\-295.7059\\153\\-57.61719\\-294.4961\\153\\-59.57031\\-293.4254\\153\\-61.52344\\-292.6825\\153\\-63.47656\\-291.4479\\153\\-65.42969\\-290.6293\\153\\-67.38281\\-289.3997\\153\\-69.33594\\-288.6902\\153\\-71.28906\\-287.4331\\153\\-73.24219\\-286.3519\\153\\-76.32396\\-284.2422\\153\\-77.14844\\-283.5671\\153\\-79.10156\\-282.3931\\153\\-81.05469\\-281.116\\153\\-83.00781\\-279.5253\\153\\-84.96094\\-277.8009\\153\\-88.86719\\-274.979\\153\\-90.82031\\-273.2355\\153\\-91.50849\\-272.5234\\153\\-96.67969\\-267.7635\\153\\-97.68113\\-266.6641\\153\\-100.5859\\-263.6932\\153\\-101.6422\\-262.7578\\153\\-103.444\\-260.8047\\153\\-106.4453\\-257.3721\\153\\-108.6593\\-254.9453\\153\\-109.9152\\-252.9922\\153\\-112.9859\\-249.0859\\153\\-114.4064\\-247.1328\\153\\-115.5536\\-245.1797\\153\\-116.8729\\-243.2266\\153\\-117.7416\\-241.2734\\153\\-118.1641\\-240.7269\\153\\-120.1172\\-237.3379\\153\\-122.2234\\-233.4609\\153\\-122.9814\\-231.5078\\153\\-123.5385\\-229.5547\\153\\-124.4894\\-227.6016\\153\\-125.5292\\-223.6953\\153\\-126.4113\\-221.7422\\153\\-127.3708\\-217.8359\\153\\-128.0794\\-215.8828\\153\\-128.5749\\-213.9297\\153\\-129.5183\\-208.0703\\153\\-130.3678\\-204.1641\\153\\-130.6345\\-202.2109\\153\\-131.2668\\-192.4453\\153\\-131.6806\\-186.5859\\153\\-131.7817\\-182.6797\\153\\-131.6954\\-178.7734\\153\\-131.4814\\-174.8672\\153\\-130.6417\\-161.1953\\153\\-130.1649\\-157.2891\\153\\-129.3979\\-153.3828\\153\\-128.8086\\-149.4766\\153\\-128.4485\\-147.5234\\153\\-127.1932\\-143.6172\\153\\-126.6997\\-141.6641\\153\\-125.1481\\-137.7578\\153\\-124.6046\\-135.8047\\153\\-123.6342\\-133.8516\\153\\-122.9806\\-131.8984\\153\\-122.125\\-129.9453\\153\\-121.0767\\-127.9922\\153\\-119.833\\-126.0391\\153\\-118.7027\\-124.0859\\153\\-116.2109\\-120.4629\\153\\-114.5809\\-118.2266\\153\\-112.3047\\-115.5056\\153\\-109.5215\\-112.3672\\153\\-106.4453\\-109.3436\\153\\-104.4922\\-107.673\\153\\-102.5391\\-106.2177\\153\\-100.5859\\-105.0879\\153\\-98.63281\\-103.6695\\153\\-96.67969\\-102.4166\\153\\-90.82031\\-99.82576\\153\\-88.86719\\-99.28622\\153\\-86.91406\\-98.41158\\153\\-84.96094\\-97.83823\\153\\-83.00781\\-97.41006\\153\\-79.10156\\-96.26596\\153\\-73.24219\\-95.40552\\153\\-71.28906\\-95.06706\\153\\-69.33594\\-94.6027\\153\\-67.38281\\-94.25227\\153\\-65.42969\\-94.03086\\153\\-59.57031\\-93.54777\\153\\-57.61719\\-93.3369\\153\\-53.71094\\-92.62424\\153\\-49.80469\\-92.16151\\153\\-45.89844\\-91.92673\\153\\-41.99219\\-91.75785\\153\\-40.03906\\-91.61655\\153\\-36.13281\\-91.45152\\153\\-30.27344\\-91.34637\\153\\-26.36719\\-91.43324\\153\\-20.50781\\-91.61523\\153\\-16.60156\\-91.90028\\153\\-14.64844\\-92.18307\\153\\-12.69531\\-92.72743\\153\\-10.74219\\-93.50964\\153\\-8.789063\\-93.92703\\153\\-6.835938\\-94.54492\\153\\-4.882813\\-95.40819\\153\\0.9765625\\-96.98808\\153\\2.929688\\-97.1598\\153\\4.882813\\-97.08099\\153\\6.835938\\-96.67561\\153\\10.74219\\-95.68915\\153\\14.64844\\-94.05981\\153\\18.55469\\-93.14699\\153\\20.50781\\-92.53197\\153\\22.46094\\-92.11904\\153\\24.41406\\-91.82664\\153\\28.32031\\-91.34274\\153\\32.22656\\-90.70843\\153\\36.13281\\-90.29572\\153\\40.03906\\-90.09174\\153\\43.94531\\-89.97028\\153\\47.85156\\-89.92235\\153\\53.71094\\-89.9276\\153\\57.61719\\-90.06811\\153\\61.52344\\-90.38554\\153\\63.47656\\-90.68337\\153\\67.38281\\-91.38895\\153\\71.28906\\-91.94584\\153\\73.24219\\-92.31625\\153\\77.14844\\-93.45968\\153\\81.05469\\-94.21886\\153\\83.00781\\-95.04414\\153\\86.91406\\-96.48951\\153\\88.86719\\-97.5769\\153\\90.82031\\-98.43265\\153\\92.77344\\-99.57942\\153\\94.72656\\-100.4156\\153\\98.3347\\-102.6016\\153\\100.5859\\-104.038\\153\\104.4922\\-106.9443\\153\\106.4453\\-108.2533\\153\\108.8797\\-110.4141\\153\\112.5636\\-114.3203\\153\\114.2578\\-116.3392\\153\\116.8815\\-120.1797\\153\\117.7033\\-122.1328\\153\\118.8519\\-124.0859\\153\\119.6512\\-126.0391\\153\\120.803\\-127.9922\\153\\121.4761\\-129.9453\\153\\122.4211\\-131.8984\\153\\122.963\\-133.8516\\153\\123.3337\\-135.8047\\153\\124.6212\\-139.7109\\153\\125.2869\\-143.6172\\153\\125.7827\\-145.5703\\153\\126.4113\\-147.5234\\153\\127.2768\\-153.3828\\153\\128.0382\\-157.2891\\153\\128.5203\\-161.1953\\153\\128.8498\\-167.0547\\153\\128.9119\\-169.0078\\153\\129.0583\\-182.6797\\153\\129.1028\\-190.4922\\153\\129.0601\\-200.2578\\153\\128.9291\\-206.1172\\153\\128.6537\\-211.9766\\153\\128.2807\\-215.8828\\153\\127.9297\\-217.6154\\153\\127.3692\\-219.7891\\153\\126.5448\\-223.6953\\153\\125.7713\\-225.6484\\153\\125.1418\\-227.6016\\153\\124.7025\\-229.5547\\153\\123.8632\\-231.5078\\153\\123.2217\\-233.4609\\153\\122.7398\\-235.4141\\153\\120.9755\\-239.3203\\153\\119.8471\\-241.2734\\153\\118.8881\\-243.2266\\153\\117.5666\\-245.1797\\153\\116.785\\-247.1328\\153\\115.4284\\-249.0859\\153\\112.8305\\-252.9922\\153\\111.3404\\-254.9453\\153\\108.5848\\-258.8516\\153\\106.4453\\-261.4288\\153\\103.4617\\-264.7109\\153\\101.5818\\-266.6641\\153\\98.63281\\-269.4968\\153\\94.72656\\-273.1094\\153\\92.77344\\-274.7673\\153\\90.82031\\-276.1836\\153\\84.96094\\-280.8988\\153\\82.85985\\-282.2891\\153\\81.05469\\-283.3342\\153\\79.10156\\-284.7812\\153\\73.24219\\-288.4222\\153\\71.28906\\-289.2532\\153\\69.33594\\-290.3872\\153\\67.38281\\-291.2348\\153\\65.42969\\-292.4362\\153\\63.47656\\-293.2683\\153\\61.52344\\-294.3035\\153\\59.57031\\-294.9607\\153\\57.61719\\-295.5066\\153\\55.66406\\-296.4619\\153\\53.71094\\-296.9692\\153\\51.75781\\-297.6068\\153\\49.80469\\-298.4934\\153\\47.85156\\-299.0101\\153\\43.94531\\-300.3616\\153\\40.03906\\-301.094\\153\\38.08594\\-301.516\\153\\36.13281\\-302.1003\\153\\32.22656\\-302.7127\\153\\28.32031\\-303.132\\153\\26.36719\\-303.4777\\153\\24.41406\\-303.9972\\153\\22.46094\\-304.2787\\153\\18.55469\\-304.6232\\153\\6.835938\\-305.317\\153\\2.929688\\-305.4122\\153\\-0.9765625\\-305.4143\\153\\-6.835938\\-305.1726\\153\\-12.69531\\-304.827\\153\\-18.55469\\-304.3805\\153"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002224"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "241"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "203"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-303.9221\\155\\-24.41406\\-303.43\\155\\-26.36719\\-303.0824\\155\\-30.27344\\-302.689\\155\\-32.22656\\-302.4227\\155\\-34.17969\\-301.9931\\155\\-36.13281\\-301.4174\\155\\-40.03906\\-300.6631\\155\\-41.99219\\-300.2182\\155\\-43.94531\\-299.388\\155\\-47.85156\\-298.207\\155\\-49.80469\\-297.2764\\155\\-51.75781\\-296.772\\155\\-55.66406\\-295.227\\155\\-57.61719\\-294.6896\\155\\-59.57031\\-293.6956\\155\\-61.52344\\-292.8795\\155\\-63.47656\\-291.7631\\155\\-65.42969\\-290.8617\\155\\-67.38281\\-289.6299\\155\\-69.33594\\-288.9059\\155\\-71.28906\\-287.7182\\155\\-73.24219\\-286.7057\\155\\-77.14844\\-283.8824\\155\\-79.10156\\-282.7564\\155\\-82.42516\\-280.3359\\155\\-84.96094\\-278.232\\155\\-86.91406\\-276.7841\\155\\-88.86719\\-275.2354\\155\\-90.82031\\-273.4869\\155\\-91.77734\\-272.5234\\155\\-94.72656\\-269.8007\\155\\-96.11192\\-268.6172\\155\\-97.94387\\-266.6641\\155\\-100.5859\\-263.9612\\155\\-101.8903\\-262.7578\\155\\-106.4453\\-257.5781\\155\\-108.8797\\-254.9453\\155\\-111.5374\\-251.0391\\155\\-113.1205\\-249.0859\\155\\-114.579\\-247.1328\\155\\-115.6741\\-245.1797\\155\\-116.945\\-243.2266\\155\\-117.8266\\-241.2734\\155\\-118.1641\\-240.8524\\155\\-120.1694\\-237.3672\\155\\-122.0703\\-233.6999\\155\\-122.9576\\-231.5078\\155\\-123.4831\\-229.5547\\155\\-124.4154\\-227.6016\\155\\-125.4521\\-223.6953\\155\\-126.3127\\-221.7422\\155\\-127.2329\\-217.8359\\155\\-128.4421\\-213.9297\\155\\-129.3367\\-208.0703\\155\\-130.1893\\-204.1641\\155\\-130.4986\\-202.2109\\155\\-130.8048\\-198.3047\\155\\-130.9921\\-194.3984\\155\\-131.4285\\-186.5859\\155\\-131.5059\\-182.6797\\155\\-131.4285\\-178.7734\\155\\-131.0801\\-170.9609\\155\\-130.7701\\-165.1016\\155\\-130.4509\\-161.1953\\155\\-130.1893\\-159.2422\\155\\-129.445\\-155.3359\\155\\-128.6098\\-149.4766\\155\\-128.1566\\-147.5234\\155\\-127.4414\\-145.5703\\155\\-126.4139\\-141.6641\\155\\-125.504\\-139.7109\\155\\-124.9302\\-137.7578\\155\\-124.2477\\-135.8047\\155\\-123.3322\\-133.8516\\155\\-122.7362\\-131.8984\\155\\-121.6443\\-129.9453\\155\\-120.7429\\-127.9922\\155\\-119.3683\\-126.0391\\155\\-118.2467\\-124.0859\\155\\-116.2109\\-121.0408\\155\\-112.4663\\-116.2734\\155\\-110.8434\\-114.3203\\155\\-109.098\\-112.3672\\155\\-106.4453\\-109.7323\\155\\-104.4922\\-108.0164\\155\\-102.4009\\-106.5078\\155\\-100.5859\\-105.3558\\155\\-98.63281\\-103.9016\\155\\-94.72656\\-101.7154\\155\\-92.77344\\-100.9835\\155\\-90.82031\\-100.0121\\155\\-88.86719\\-99.4938\\155\\-84.96094\\-98.06438\\155\\-81.05469\\-97.18382\\155\\-79.10156\\-96.53049\\155\\-77.14844\\-96.15289\\155\\-71.28906\\-95.312\\155\\-67.38281\\-94.48696\\155\\-65.42969\\-94.20823\\155\\-61.52344\\-93.8242\\155\\-55.66406\\-93.34018\\155\\-49.80469\\-92.46895\\155\\-45.89844\\-92.14873\\155\\-40.03906\\-91.85938\\155\\-36.13281\\-91.72346\\155\\-30.27344\\-91.64779\\155\\-24.41406\\-91.75029\\155\\-18.55469\\-91.97759\\155\\-16.60156\\-92.17231\\155\\-14.64844\\-92.52113\\155\\-12.69531\\-93.20564\\155\\-8.789063\\-94.15717\\155\\-6.835938\\-95.00691\\155\\-4.882813\\-95.71331\\155\\-2.929688\\-96.2569\\155\\-0.9765625\\-97.00214\\155\\0.9765625\\-97.42522\\155\\2.929688\\-97.54983\\155\\4.882813\\-97.48135\\155\\6.835938\\-97.22114\\155\\8.789063\\-96.5399\\155\\12.69531\\-95.27734\\155\\14.64844\\-94.34645\\155\\18.55469\\-93.50613\\155\\22.46094\\-92.49985\\155\\24.41406\\-92.13839\\155\\26.36719\\-91.8862\\155\\34.17969\\-91.04919\\155\\36.13281\\-90.74738\\155\\41.99219\\-90.37357\\155\\49.80469\\-90.21143\\155\\53.71094\\-90.21494\\155\\57.61719\\-90.37974\\155\\59.57031\\-90.5638\\155\\63.47656\\-91.20396\\155\\69.33594\\-91.88507\\155\\71.28906\\-92.14754\\155\\73.24219\\-92.54297\\155\\75.19531\\-93.15438\\155\\77.14844\\-93.60627\\155\\79.10156\\-93.93909\\155\\81.05469\\-94.41401\\155\\83.00781\\-95.31641\\155\\84.96094\\-95.93961\\155\\86.82291\\-96.74219\\155\\92.77344\\-99.72482\\155\\96.67969\\-101.7888\\155\\98.63281\\-103.1533\\155\\100.5859\\-104.3538\\155\\103.6099\\-106.5078\\155\\106.0846\\-108.4609\\155\\108.373\\-110.4141\\155\\112.3047\\-114.596\\155\\114.2578\\-116.8848\\155\\115.2893\\-118.2266\\155\\116.5915\\-120.1797\\155\\117.4286\\-122.1328\\155\\118.6096\\-124.0859\\155\\119.3638\\-126.0391\\155\\120.5287\\-127.9922\\155\\121.2477\\-129.9453\\155\\122.0939\\-131.8984\\155\\122.8164\\-133.8516\\155\\123.6816\\-137.7578\\155\\124.4596\\-139.7109\\155\\125.1628\\-143.6172\\155\\125.5644\\-145.5703\\155\\126.2123\\-147.5234\\155\\126.598\\-149.4766\\155\\127.4474\\-155.3359\\155\\128.155\\-159.2422\\155\\128.3967\\-161.1953\\155\\128.6692\\-165.1016\\155\\128.8272\\-169.0078\\155\\128.8834\\-172.9141\\155\\128.946\\-182.6797\\155\\128.9756\\-190.4922\\155\\128.9291\\-200.2578\\155\\128.8221\\-206.1172\\155\\128.5522\\-211.9766\\155\\128.415\\-213.9297\\155\\128.1654\\-215.8828\\155\\127.3103\\-219.7891\\155\\126.5603\\-223.6953\\155\\125.1795\\-227.6016\\155\\124.7709\\-229.5547\\155\\123.2774\\-233.4609\\155\\122.8285\\-235.4141\\155\\122.0703\\-237.236\\155\\120.1248\\-241.2734\\155\\118.1641\\-244.6777\\155\\117.7777\\-245.1797\\155\\116.9355\\-247.1328\\155\\115.5973\\-249.0859\\155\\114.4319\\-251.0391\\155\\112.3047\\-253.9765\\155\\111.512\\-254.9453\\155\\108.815\\-258.8516\\155\\106.4453\\-261.6548\\155\\105.3731\\-262.7578\\155\\101.7953\\-266.6641\\155\\97.71412\\-270.5703\\155\\94.72656\\-273.3649\\155\\92.77344\\-275.0844\\155\\88.86719\\-277.9966\\155\\88.45313\\-278.3828\\155\\84.96094\\-281.1465\\155\\83.00781\\-282.5256\\155\\81.05469\\-283.5766\\155\\77.14844\\-286.402\\155\\75.19531\\-287.4465\\155\\73.24219\\-288.7225\\155\\71.28906\\-289.4742\\155\\69.33594\\-290.6875\\155\\67.38281\\-291.5076\\155\\65.42969\\-292.7343\\155\\63.47656\\-293.5353\\155\\61.52344\\-294.5775\\155\\59.57031\\-295.1178\\155\\57.61719\\-295.7995\\155\\55.66406\\-296.6665\\155\\53.71094\\-297.1405\\155\\51.75781\\-297.9948\\155\\49.80469\\-298.6964\\155\\47.85156\\-299.2293\\155\\45.89844\\-300.0046\\155\\43.94531\\-300.5433\\155\\40.03906\\-301.2706\\155\\36.13281\\-302.325\\155\\34.17969\\-302.6097\\155\\30.27344\\-303.0382\\155\\28.32031\\-303.343\\155\\24.41406\\-304.2354\\155\\20.50781\\-304.6071\\155\\6.835938\\-305.5355\\155\\2.929688\\-305.6281\\155\\-2.929688\\-305.5484\\155\\-6.835938\\-305.3322\\155\\-16.60156\\-304.6745\\155\\-20.50781\\-304.2787\\155"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002223"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "237"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "204"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.929688\\-305.8073\\157\\-6.835938\\-305.5614\\157\\-12.69531\\-305.0666\\157\\-18.55469\\-304.622\\157\\-22.46094\\-304.1604\\157\\-26.36719\\-303.2391\\157\\-28.32031\\-302.9651\\157\\-32.22656\\-302.5572\\157\\-34.17969\\-302.1874\\157\\-38.08594\\-301.1505\\157\\-41.99219\\-300.3764\\157\\-45.89844\\-298.9951\\157\\-47.85156\\-298.4534\\157\\-49.80469\\-297.4937\\157\\-53.71094\\-296.3339\\157\\-55.66406\\-295.3839\\157\\-57.61719\\-294.8526\\157\\-59.57031\\-294.0469\\157\\-63.47656\\-292.1901\\157\\-67.38281\\-290\\157\\-71.18317\\-288.1484\\157\\-73.24219\\-286.9708\\157\\-75.19531\\-285.5544\\157\\-79.10156\\-283.0328\\157\\-81.05469\\-281.5806\\157\\-82.92165\\-280.3359\\157\\-86.91406\\-277.0912\\157\\-90.03751\\-274.4766\\157\\-94.72656\\-270.1603\\157\\-96.54772\\-268.6172\\157\\-100.5859\\-264.3428\\157\\-102.2084\\-262.7578\\157\\-104.4922\\-260.1263\\157\\-105.4921\\-258.8516\\157\\-107.3453\\-256.8984\\157\\-109.0694\\-254.9453\\157\\-110.4854\\-252.9922\\157\\-111.7042\\-251.0391\\157\\-112.3047\\-250.3393\\157\\-114.7585\\-247.1328\\157\\-115.8189\\-245.1797\\157\\-117.033\\-243.2266\\157\\-117.9872\\-241.2734\\157\\-120.3195\\-237.3672\\157\\-121.2356\\-235.4141\\157\\-122.2897\\-233.4609\\157\\-122.9759\\-231.5078\\157\\-123.4608\\-229.5547\\157\\-124.3804\\-227.6016\\157\\-125.4025\\-223.6953\\157\\-126.224\\-221.7422\\157\\-127.1537\\-217.8359\\157\\-128.334\\-213.9297\\157\\-128.6778\\-211.9766\\157\\-129.555\\-206.1172\\157\\-130.0266\\-204.1641\\157\\-130.3645\\-202.2109\\157\\-130.7352\\-198.3047\\157\\-130.9116\\-194.3984\\157\\-131.2256\\-188.5391\\157\\-131.3321\\-184.6328\\157\\-131.3262\\-180.7266\\157\\-131.1489\\-174.8672\\157\\-130.7821\\-167.0547\\157\\-130.49\\-163.1484\\157\\-130.2748\\-161.1953\\157\\-129.5296\\-157.2891\\157\\-128.7529\\-151.4297\\157\\-128.4119\\-149.4766\\157\\-127.1671\\-145.5703\\157\\-126.7051\\-143.6172\\157\\-126.0431\\-141.6641\\157\\-125.2275\\-139.7109\\157\\-124.7185\\-137.7578\\157\\-123.819\\-135.8047\\157\\-122.4512\\-131.8984\\157\\-121.3265\\-129.9453\\157\\-120.3425\\-127.9922\\157\\-118.1641\\-124.6701\\157\\-117.7\\-124.0859\\157\\-116.6922\\-122.1328\\157\\-115.2018\\-120.1797\\157\\-112.3047\\-116.6563\\157\\-110.4574\\-114.3203\\157\\-108.724\\-112.3672\\157\\-106.4453\\-110.1141\\157\\-104.4922\\-108.4015\\157\\-102.0255\\-106.5078\\157\\-99.12109\\-104.5547\\157\\-98.63281\\-104.1467\\157\\-96.67969\\-103.0832\\157\\-94.72656\\-101.8919\\157\\-92.77344\\-101.1961\\157\\-90.82031\\-100.2045\\157\\-86.91406\\-99.15449\\157\\-84.96094\\-98.30592\\157\\-81.05469\\-97.43819\\157\\-77.14844\\-96.3528\\157\\-75.19531\\-96.03928\\157\\-71.28906\\-95.51138\\157\\-69.33594\\-95.19707\\157\\-65.42969\\-94.4025\\157\\-61.52344\\-93.95629\\157\\-53.71094\\-93.37709\\157\\-51.75781\\-93.18668\\157\\-47.85156\\-92.6365\\157\\-43.94531\\-92.3058\\157\\-38.08594\\-92.0238\\157\\-30.27344\\-91.88563\\157\\-22.46094\\-92.06196\\157\\-18.55469\\-92.2489\\157\\-16.60156\\-92.48942\\157\\-12.69531\\-93.5015\\157\\-10.74219\\-93.88991\\157\\-8.789063\\-94.46593\\157\\-6.835938\\-95.37759\\157\\-2.929688\\-96.64745\\157\\-0.9765625\\-97.42178\\157\\0.9765625\\-97.74392\\157\\2.929688\\-97.85755\\157\\4.882813\\-97.79273\\157\\6.835938\\-97.55599\\157\\8.789063\\-97.0495\\157\\10.74219\\-96.20103\\157\\12.69531\\-95.58862\\157\\14.64844\\-94.78078\\157\\16.60156\\-94.10232\\157\\20.50781\\-93.41537\\157\\24.41406\\-92.52995\\157\\26.36719\\-92.23455\\157\\30.27344\\-91.77799\\157\\36.13281\\-91.33688\\157\\38.08594\\-91.25391\\157\\43.94531\\-90.83063\\157\\49.80469\\-90.55515\\157\\53.71094\\-90.59908\\157\\57.61719\\-90.84525\\157\\61.52344\\-91.36221\\157\\65.42969\\-91.68182\\157\\69.33594\\-92.09564\\157\\71.28906\\-92.38021\\157\\75.19531\\-93.37273\\157\\79.10156\\-94.06916\\157\\81.05469\\-94.68585\\157\\83.00781\\-95.53619\\157\\84.96094\\-96.10828\\157\\86.91406\\-97.10026\\157\\88.86719\\-97.91086\\157\\90.82031\\-99.05621\\157\\92.77344\\-99.87329\\157\\94.72656\\-101.06\\157\\96.67969\\-101.9742\\157\\97.51062\\-102.6016\\157\\102.5391\\-106.0036\\157\\104.4922\\-107.4582\\157\\107.9317\\-110.4141\\157\\109.8968\\-112.3672\\157\\112.3047\\-114.9352\\157\\115.033\\-118.2266\\157\\116.2842\\-120.1797\\157\\118.3138\\-124.0859\\157\\119.1774\\-126.0391\\157\\120.2526\\-127.9922\\157\\121.8401\\-131.8984\\157\\122.7069\\-133.8516\\157\\123.5418\\-137.7578\\157\\124.3115\\-139.7109\\157\\124.7972\\-141.6641\\157\\125.4762\\-145.5703\\157\\126.0851\\-147.5234\\157\\126.5385\\-149.4766\\157\\127.3562\\-155.3359\\157\\128.0382\\-159.2422\\157\\128.3241\\-161.1953\\157\\128.6127\\-165.1016\\157\\128.7884\\-169.0078\\157\\128.8445\\-172.9141\\157\\128.8894\\-182.6797\\157\\128.8779\\-196.3516\\157\\128.8221\\-202.2109\\157\\128.7453\\-206.1172\\157\\128.594\\-210.0234\\157\\128.3535\\-213.9297\\157\\128.0651\\-215.8828\\157\\127.2731\\-219.7891\\157\\126.5902\\-223.6953\\157\\125.2441\\-227.6016\\157\\124.8355\\-229.5547\\157\\124.1949\\-231.5078\\157\\123.3497\\-233.4609\\157\\122.927\\-235.4141\\157\\122.2269\\-237.3672\\157\\121.231\\-239.3203\\157\\120.399\\-241.2734\\157\\119.1567\\-243.2266\\157\\118.0459\\-245.1797\\157\\117.0662\\-247.1328\\157\\115.8046\\-249.0859\\157\\114.6715\\-251.0391\\157\\114.2578\\-251.5045\\157\\112.3047\\-254.2358\\157\\111.6869\\-254.9453\\157\\109.0299\\-258.8516\\157\\107.3727\\-260.8047\\157\\105.5434\\-262.7578\\157\\102.0033\\-266.6641\\157\\94.72656\\-273.6189\\157\\92.77344\\-275.3424\\157\\88.86719\\-278.4204\\157\\83.00781\\-282.8211\\157\\81.05469\\-283.8954\\157\\77.14844\\-286.7379\\157\\75.19531\\-287.7564\\157\\73.24219\\-288.9581\\157\\71.28906\\-289.776\\157\\69.33594\\-290.9424\\157\\67.38281\\-291.8907\\157\\65.42969\\-292.9722\\157\\61.52344\\-294.776\\157\\59.57031\\-295.2742\\157\\57.61719\\-296.1739\\157\\55.66406\\-296.8272\\157\\53.71094\\-297.3655\\157\\51.75781\\-298.3352\\157\\47.85156\\-299.4986\\157\\45.89844\\-300.2991\\157\\40.03906\\-301.4901\\157\\38.08594\\-302.0773\\157\\36.13281\\-302.51\\157\\32.22656\\-302.9514\\157\\30.27344\\-303.2302\\157\\26.36719\\-304.12\\157\\24.41406\\-304.4262\\157\\12.69531\\-305.3524\\157\\10.74219\\-305.5484\\157\\6.835938\\-305.8213\\157\\0.9765625\\-305.9009\\157"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002222"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "236"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "205"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.835938\\-305.862\\159\\-12.69531\\-305.2561\\159\\-18.55469\\-304.7595\\159\\-22.46094\\-304.3507\\159\\-24.41406\\-304.0092\\159\\-26.36719\\-303.4756\\159\\-28.32031\\-303.0938\\159\\-32.22656\\-302.6648\\159\\-34.17969\\-302.37\\159\\-38.08594\\-301.3156\\159\\-41.99219\\-300.5468\\159\\-43.94531\\-299.9765\\159\\-45.89844\\-299.1881\\159\\-47.85156\\-298.649\\159\\-51.75781\\-297.0731\\159\\-53.71094\\-296.5698\\159\\-55.66406\\-295.6167\\159\\-59.57031\\-294.3808\\159\\-61.52344\\-293.3142\\159\\-63.47656\\-292.5251\\159\\-65.42969\\-291.2657\\159\\-67.38281\\-290.4249\\159\\-69.33594\\-289.2501\\159\\-71.28906\\-288.4518\\159\\-71.6816\\-288.1484\\159\\-77.14844\\-284.7178\\159\\-81.05469\\-281.8496\\159\\-83.00781\\-280.6639\\159\\-85.64661\\-278.3828\\159\\-88.86719\\-275.7056\\159\\-90.46599\\-274.4766\\159\\-92.77344\\-272.3222\\159\\-96.67969\\-268.8792\\159\\-100.5859\\-264.7923\\159\\-102.599\\-262.7578\\159\\-105.8275\\-258.8516\\159\\-109.2715\\-254.9453\\159\\-110.7661\\-252.9922\\159\\-111.9358\\-251.0391\\159\\-114.9503\\-247.1328\\159\\-118.1641\\-241.4129\\159\\-119.2336\\-239.3203\\159\\-120.4962\\-237.3672\\159\\-121.3351\\-235.4141\\159\\-122.3776\\-233.4609\\159\\-122.9995\\-231.5078\\159\\-123.4961\\-229.5547\\159\\-124.4127\\-227.6016\\159\\-125.4059\\-223.6953\\159\\-126.2004\\-221.7422\\159\\-126.7251\\-219.7891\\159\\-127.6536\\-215.8828\\159\\-128.2911\\-213.9297\\159\\-128.6436\\-211.9766\\159\\-129.4855\\-206.1172\\159\\-130.2965\\-202.2109\\159\\-130.5318\\-200.2578\\159\\-130.81\\-196.3516\\159\\-131.1603\\-188.5391\\159\\-131.25\\-184.6328\\159\\-131.25\\-180.7266\\159\\-131.0801\\-174.8672\\159\\-130.7174\\-167.0547\\159\\-130.3971\\-163.1484\\159\\-130.1233\\-161.1953\\159\\-129.3879\\-157.2891\\159\\-128.6173\\-151.4297\\159\\-128.2021\\-149.4766\\159\\-127.4852\\-147.5234\\159\\-126.5046\\-143.6172\\159\\-125.6466\\-141.6641\\159\\-124.4924\\-137.7578\\159\\-123.5057\\-135.8047\\159\\-122.9553\\-133.8516\\159\\-122.1097\\-131.8984\\159\\-121.0562\\-129.9453\\159\\-119.8392\\-127.9922\\159\\-118.7729\\-126.0391\\159\\-117.3941\\-124.0859\\159\\-116.3005\\-122.1328\\159\\-114.9022\\-120.1797\\159\\-111.5987\\-116.2734\\159\\-110.3516\\-114.6255\\159\\-108.2935\\-112.3672\\159\\-104.4922\\-108.7239\\159\\-101.7197\\-106.5078\\159\\-98.80371\\-104.5547\\159\\-94.72656\\-102.0569\\159\\-92.77344\\-101.3558\\159\\-90.82031\\-100.444\\159\\-88.86719\\-99.78609\\159\\-86.91406\\-99.36008\\159\\-84.96094\\-98.57324\\159\\-83.00781\\-97.98743\\159\\-79.10156\\-97.22437\\159\\-77.14844\\-96.60675\\159\\-75.19531\\-96.19463\\159\\-69.33594\\-95.39711\\159\\-63.47656\\-94.34396\\159\\-59.57031\\-93.94946\\159\\-55.66406\\-93.6788\\159\\-49.80469\\-93.32422\\159\\-43.94531\\-92.67435\\159\\-41.99219\\-92.51041\\159\\-38.08594\\-92.3058\\159\\-30.27344\\-92.14628\\159\\-22.46094\\-92.35632\\159\\-18.55469\\-92.60021\\159\\-16.60156\\-92.92188\\159\\-10.74219\\-94.0942\\159\\-6.835938\\-95.64208\\159\\-4.882813\\-96.2298\\159\\-2.929688\\-97.16256\\159\\-0.9765625\\-97.72389\\159\\0.9765625\\-98.02852\\159\\2.929688\\-98.1491\\159\\4.882813\\-98.06715\\159\\6.835938\\-97.81995\\159\\8.789063\\-97.41036\\159\\10.74219\\-96.55112\\159\\12.69531\\-95.81921\\159\\14.64844\\-95.18666\\159\\16.60156\\-94.3886\\159\\18.55469\\-93.98447\\159\\22.46094\\-93.40614\\159\\26.36719\\-92.64893\\159\\30.27344\\-92.10491\\159\\34.17969\\-91.82301\\159\\40.03906\\-91.55762\\159\\45.89844\\-91.21484\\159\\49.80469\\-91.08656\\159\\53.71094\\-91.13549\\159\\55.66406\\-91.21707\\159\\61.52344\\-91.65486\\159\\63.47656\\-91.72952\\159\\67.38281\\-92.09213\\159\\71.28906\\-92.7005\\159\\73.24219\\-93.20301\\159\\79.10156\\-94.26065\\159\\83.00781\\-95.71569\\159\\84.96094\\-96.30056\\159\\86.91406\\-97.3328\\159\\88.86719\\-98.09821\\159\\90.82031\\-99.27997\\159\\92.77344\\-100.034\\159\\94.72656\\-101.2799\\159\\96.67969\\-102.1683\\159\\100.0176\\-104.5547\\159\\100.5859\\-105.0329\\159\\102.5391\\-106.2691\\159\\104.4922\\-107.6941\\159\\106.4453\\-109.3526\\159\\109.6316\\-112.3672\\159\\112.3047\\-115.219\\159\\114.8039\\-118.2266\\159\\116.2109\\-120.454\\159\\117.1332\\-122.1328\\159\\120.9666\\-129.9453\\159\\121.6682\\-131.8984\\159\\122.6184\\-133.8516\\159\\123.4681\\-137.7578\\159\\124.2217\\-139.7109\\159\\124.7531\\-141.6641\\159\\125.438\\-145.5703\\159\\126.0431\\-147.5234\\159\\126.5228\\-149.4766\\159\\127.0677\\-153.3828\\159\\127.667\\-157.2891\\159\\128.0382\\-159.2422\\159\\128.4819\\-163.1484\\159\\128.7835\\-169.0078\\159\\128.8445\\-174.8672\\159\\128.8837\\-184.6328\\159\\128.8724\\-190.4922\\159\\128.7946\\-202.2109\\159\\128.5826\\-210.0234\\159\\128.3314\\-213.9297\\159\\128.0518\\-215.8828\\159\\127.2842\\-219.7891\\159\\126.6398\\-223.6953\\159\\126.0713\\-225.6484\\159\\125.335\\-227.6016\\159\\124.9164\\-229.5547\\159\\124.3717\\-231.5078\\159\\123.4591\\-233.4609\\159\\123.0171\\-235.4141\\159\\122.4297\\-237.3672\\159\\121.38\\-239.3203\\159\\120.5997\\-241.2734\\159\\119.3126\\-243.2266\\159\\118.1641\\-245.3956\\159\\116.2109\\-248.8234\\159\\114.8564\\-251.0391\\159\\114.2578\\-251.7527\\159\\112.3047\\-254.4807\\159\\111.881\\-254.9453\\159\\110.6145\\-256.8984\\159\\109.1835\\-258.8516\\159\\107.5393\\-260.8047\\159\\103.9411\\-264.7109\\159\\102.238\\-266.6641\\159\\98.63281\\-270.082\\159\\94.72656\\-273.8629\\159\\92.77344\\-275.5521\\159\\88.86719\\-278.795\\159\\83.00781\\-283.0541\\159\\79.10156\\-285.5627\\159\\77.14844\\-287.0091\\159\\75.19531\\-288.1884\\159\\71.28906\\-290.2117\\159\\69.33594\\-291.1684\\159\\67.38281\\-292.3648\\159\\65.42969\\-293.1857\\159\\63.47656\\-294.2176\\159\\61.52344\\-294.937\\159\\59.57031\\-295.4727\\159\\57.61719\\-296.4619\\159\\55.66406\\-297.0009\\159\\53.71094\\-297.656\\159\\51.75781\\-298.5814\\159\\49.80469\\-299.1064\\159\\47.83381\\-299.8672\\159\\45.89844\\-300.5008\\159\\41.99219\\-301.2447\\159\\38.08594\\-302.3186\\159\\36.13281\\-302.6516\\159\\32.22656\\-303.1049\\159\\30.27344\\-303.5014\\159\\28.32031\\-304.0209\\159\\26.36719\\-304.3615\\159\\24.41406\\-304.5825\\159\\14.64844\\-305.4409\\159\\10.74219\\-305.9009\\159\\6.835938\\-306.0731\\159\\0.9765625\\-306.1233\\159\\-4.882813\\-305.9741\\159"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002221"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "241"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "206"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-305.2782\\161\\-22.46094\\-304.5144\\161\\-24.41406\\-304.2703\\161\\-28.32031\\-303.3009\\161\\-30.27344\\-302.9889\\161\\-34.17969\\-302.53\\161\\-36.13281\\-302.1388\\161\\-38.08594\\-301.516\\161\\-43.94531\\-300.2438\\161\\-45.89844\\-299.4325\\161\\-49.80469\\-298.2289\\161\\-51.75781\\-297.2767\\161\\-53.71094\\-296.7655\\161\\-57.61719\\-295.1421\\161\\-59.57031\\-294.6236\\161\\-61.52344\\-293.5983\\161\\-63.47656\\-292.7694\\161\\-65.42969\\-291.5359\\161\\-67.38281\\-290.7245\\161\\-69.33594\\-289.4738\\161\\-71.28906\\-288.7397\\161\\-73.24219\\-287.4587\\161\\-75.19531\\-286.385\\161\\-77.14844\\-285.0057\\161\\-79.10156\\-283.5082\\161\\-83.00781\\-280.9981\\161\\-86.91406\\-277.5882\\161\\-88.50828\\-276.4297\\161\\-90.82031\\-274.586\\161\\-93.03793\\-272.5234\\161\\-95.24094\\-270.5703\\161\\-98.63281\\-267.2656\\161\\-99.1452\\-266.6641\\161\\-102.9554\\-262.7578\\161\\-104.6229\\-260.8047\\161\\-106.1695\\-258.8516\\161\\-108.3984\\-256.3044\\161\\-110.9962\\-252.9922\\161\\-112.3047\\-251.0485\\161\\-115.1461\\-247.1328\\161\\-116.3291\\-245.1797\\161\\-117.2926\\-243.2266\\161\\-118.5209\\-241.2734\\161\\-119.3875\\-239.3203\\161\\-120.671\\-237.3672\\161\\-121.4644\\-235.4141\\161\\-122.5065\\-233.4609\\161\\-123.5722\\-229.5547\\161\\-124.4894\\-227.6016\\161\\-125.4731\\-223.6953\\161\\-126.2805\\-221.7422\\161\\-127.1813\\-217.8359\\161\\-128.3241\\-213.9297\\161\\-128.6621\\-211.9766\\161\\-129.4827\\-206.1172\\161\\-130.2857\\-202.2109\\161\\-130.686\\-198.3047\\161\\-130.8911\\-194.3984\\161\\-131.1344\\-188.5391\\161\\-131.214\\-184.6328\\161\\-131.214\\-180.7266\\161\\-131.1232\\-176.8203\\161\\-130.799\\-169.0078\\161\\-130.5318\\-165.1016\\161\\-130.334\\-163.1484\\161\\-129.5927\\-159.2422\\161\\-129.2982\\-157.2891\\161\\-128.8097\\-153.3828\\161\\-128.5073\\-151.4297\\161\\-128.0105\\-149.4766\\161\\-127.3108\\-147.5234\\161\\-126.2826\\-143.6172\\161\\-125.399\\-141.6641\\161\\-124.8933\\-139.7109\\161\\-124.2217\\-137.7578\\161\\-123.3206\\-135.8047\\161\\-122.7777\\-133.8516\\161\\-121.7403\\-131.8984\\161\\-120.8348\\-129.9453\\161\\-119.5007\\-127.9922\\161\\-118.4441\\-126.0391\\161\\-116.2109\\-122.5486\\161\\-114.624\\-120.1797\\161\\-111.3281\\-116.2734\\161\\-110.3516\\-114.9469\\161\\-107.9636\\-112.3672\\161\\-104.4922\\-108.9701\\161\\-101.4657\\-106.5078\\161\\-100.5859\\-105.8704\\161\\-94.72656\\-102.2255\\161\\-88.86719\\-99.91152\\161\\-86.91406\\-99.50912\\161\\-84.96094\\-98.90825\\161\\-83.00781\\-98.16213\\161\\-79.10156\\-97.44992\\161\\-75.19531\\-96.39567\\161\\-73.24219\\-96.06776\\161\\-67.38281\\-95.30271\\161\\-65.42969\\-95.0004\\161\\-63.47656\\-94.59081\\161\\-59.57031\\-94.09502\\161\\-53.71094\\-93.70724\\161\\-47.85156\\-93.42798\\161\\-40.03906\\-92.79838\\161\\-36.13281\\-92.55411\\161\\-32.22656\\-92.45891\\161\\-28.32031\\-92.45891\\161\\-22.46094\\-92.68733\\161\\-20.50781\\-92.82831\\161\\-16.60156\\-93.28409\\161\\-12.69531\\-93.89638\\161\\-10.74219\\-94.35883\\161\\-8.789063\\-95.22683\\161\\-4.882813\\-96.56398\\161\\-2.929688\\-97.49805\\161\\-0.9765625\\-97.98943\\161\\0.9765625\\-98.3805\\161\\2.929688\\-98.57324\\161\\4.882813\\-98.44783\\161\\8.789063\\-97.6925\\161\\10.74219\\-97.00214\\161\\12.69531\\-96.06891\\161\\14.64844\\-95.51221\\161\\16.66667\\-94.78906\\161\\18.55469\\-94.215\\161\\20.50781\\-93.93382\\161\\26.36719\\-93.20564\\161\\30.27344\\-92.54297\\161\\34.17969\\-92.15073\\161\\41.99219\\-91.71607\\161\\47.85156\\-91.51304\\161\\51.75781\\-91.49033\\161\\55.66406\\-91.5686\\161\\61.52344\\-91.89355\\161\\63.47656\\-91.94205\\161\\67.38281\\-92.34476\\161\\69.33594\\-92.67435\\161\\73.24219\\-93.45173\\161\\77.14844\\-94.02132\\161\\79.10156\\-94.50484\\161\\81.05469\\-95.32232\\161\\83.00781\\-95.86987\\161\\84.96094\\-96.5399\\161\\86.91406\\-97.53326\\161\\88.86719\\-98.29858\\161\\90.82031\\-99.43848\\161\\92.77344\\-100.1805\\161\\94.72656\\-101.3982\\161\\96.67969\\-102.3574\\161\\98.63281\\-103.7185\\161\\100.5859\\-105.2408\\161\\104.4922\\-107.8764\\161\\106.4453\\-109.5864\\161\\109.3959\\-112.3672\\161\\112.3047\\-115.4791\\161\\114.574\\-118.2266\\161\\116.2109\\-120.7245\\161\\117.0524\\-122.1328\\161\\117.8315\\-124.0859\\161\\118.9761\\-126.0391\\161\\119.8215\\-127.9922\\161\\120.883\\-129.9453\\161\\121.5759\\-131.8984\\161\\122.5424\\-133.8516\\161\\123.4464\\-137.7578\\161\\124.2084\\-139.7109\\161\\124.749\\-141.6641\\161\\125.4642\\-145.5703\\161\\126.112\\-147.5234\\161\\126.5462\\-149.4766\\161\\127.1006\\-153.3828\\161\\127.7274\\-157.2891\\161\\128.0913\\-159.2422\\161\\128.5052\\-163.1484\\161\\128.7996\\-169.0078\\161\\128.8557\\-172.9141\\161\\128.9177\\-184.6328\\161\\128.9006\\-190.4922\\161\\128.7884\\-202.2109\\161\\128.575\\-210.0234\\161\\128.3216\\-213.9297\\161\\128.0651\\-215.8828\\161\\127.6652\\-217.8359\\161\\126.6937\\-223.6953\\161\\126.2004\\-225.6484\\161\\125.4261\\-227.6016\\161\\124.5212\\-231.5078\\161\\123.6233\\-233.4609\\161\\122.5716\\-237.3672\\161\\121.5371\\-239.3203\\161\\120.7555\\-241.2734\\161\\119.4681\\-243.2266\\161\\118.5245\\-245.1797\\161\\117.2577\\-247.1328\\161\\116.2358\\-249.0859\\161\\114.9918\\-251.0391\\161\\112.0644\\-254.9453\\161\\110.7942\\-256.8984\\161\\109.3179\\-258.8516\\161\\107.6981\\-260.8047\\161\\104.1059\\-264.7109\\161\\102.5472\\-266.6641\\161\\100.5859\\-268.5772\\161\\98.63281\\-270.3281\\161\\96.44501\\-272.5234\\161\\94.72656\\-274.1298\\161\\90.82031\\-277.38\\161\\88.86719\\-279.0682\\161\\86.91406\\-280.6119\\161\\84.96094\\-281.8737\\161\\81.05469\\-284.6795\\161\\79.10156\\-285.9073\\161\\75.19531\\-288.56\\161\\73.24219\\-289.3537\\161\\71.28906\\-290.5745\\161\\69.33594\\-291.4094\\161\\67.38281\\-292.6552\\161\\65.42969\\-293.41\\161\\63.47656\\-294.4929\\161\\59.57031\\-295.7448\\161\\57.61719\\-296.6675\\161\\55.66406\\-297.1942\\161\\53.71094\\-298.0897\\161\\51.75781\\-298.7827\\161\\49.80469\\-299.3637\\161\\47.85156\\-300.1992\\161\\45.89844\\-300.6631\\161\\41.99219\\-301.4506\\161\\40.03906\\-302.088\\161\\38.08594\\-302.51\\161\\34.17969\\-302.9955\\161\\32.22656\\-303.3203\\161\\28.32031\\-304.2954\\161\\26.36719\\-304.54\\161\\20.50781\\-305.1176\\161\\14.64844\\-305.8073\\161\\10.74219\\-306.1425\\161\\4.882813\\-306.2838\\161\\0.9765625\\-306.2759\\161\\-4.882813\\-306.1795\\161\\-8.789063\\-305.9503\\161"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002220"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "242"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "207"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-12.69531\\-305.8351\\163\\-18.55469\\-305.0737\\163\\-24.41406\\-304.4695\\163\\-26.36719\\-304.1505\\163\\-30.27344\\-303.1638\\163\\-34.17969\\-302.6648\\163\\-36.13281\\-302.3477\\163\\-40.03906\\-301.2539\\163\\-43.94531\\-300.465\\163\\-47.85156\\-299.0517\\163\\-49.80469\\-298.4934\\163\\-51.75781\\-297.5354\\163\\-55.66406\\-296.2266\\163\\-57.61719\\-295.2824\\163\\-59.57031\\-294.8236\\163\\-61.42849\\-294.0078\\163\\-63.47656\\-292.9937\\163\\-65.42969\\-291.9152\\163\\-68.92825\\-290.1016\\163\\-69.33594\\-289.7905\\163\\-71.28906\\-288.9508\\163\\-73.24219\\-287.7455\\163\\-75.19531\\-286.723\\163\\-78.55631\\-284.2422\\163\\-79.10156\\-283.7814\\163\\-81.05469\\-282.7146\\163\\-83.00781\\-281.2547\\163\\-86.91406\\-277.9543\\163\\-88.86719\\-276.5313\\163\\-90.82031\\-274.9279\\163\\-92.77344\\-273.1723\\163\\-94.72656\\-271.2646\\163\\-95.57846\\-270.5703\\163\\-98.63281\\-267.614\\163\\-99.46903\\-266.6641\\163\\-101.408\\-264.7109\\163\\-104.4922\\-261.3705\\163\\-108.3984\\-256.7418\\163\\-110.3516\\-254.2107\\163\\-111.1861\\-252.9922\\163\\-112.7104\\-251.0391\\163\\-114.2578\\-248.8188\\163\\-116.6395\\-245.1797\\163\\-117.4721\\-243.2266\\163\\-118.7356\\-241.2734\\163\\-119.6106\\-239.3203\\163\\-120.851\\-237.3672\\163\\-121.6328\\-235.4141\\163\\-122.6488\\-233.4609\\163\\-123.7147\\-229.5547\\163\\-124.6129\\-227.6016\\163\\-125.0571\\-225.6484\\163\\-125.6161\\-223.6953\\163\\-126.4205\\-221.7422\\163\\-127.2694\\-217.8359\\163\\-128.3967\\-213.9297\\163\\-129.5321\\-206.1172\\163\\-130.3206\\-202.2109\\163\\-130.7109\\-198.3047\\163\\-130.9828\\-192.4453\\163\\-131.2219\\-184.6328\\163\\-131.2182\\-180.7266\\163\\-131.1529\\-176.8203\\163\\-130.8048\\-169.0078\\163\\-130.5359\\-165.1016\\163\\-130.2994\\-163.1484\\163\\-129.5321\\-159.2422\\163\\-128.7463\\-153.3828\\163\\-128.4149\\-151.4297\\163\\-127.1839\\-147.5234\\163\\-126.709\\-145.5703\\163\\-126.0287\\-143.6172\\163\\-125.2497\\-141.6641\\163\\-124.7656\\-139.7109\\163\\-123.9219\\-137.7578\\163\\-123.1995\\-135.8047\\163\\-122.6107\\-133.8516\\163\\-121.4905\\-131.8984\\163\\-120.6284\\-129.9453\\163\\-119.2809\\-127.9922\\163\\-118.0745\\-126.0391\\163\\-117.0382\\-124.0859\\163\\-115.6424\\-122.1328\\163\\-114.3451\\-120.1797\\163\\-112.8094\\-118.2266\\163\\-111.1624\\-116.2734\\163\\-110.3516\\-115.1945\\163\\-107.7584\\-112.3672\\163\\-104.4922\\-109.1319\\163\\-102.5391\\-107.4973\\163\\-100.5859\\-105.9975\\163\\-98.63281\\-104.8989\\163\\-96.67969\\-103.5724\\163\\-94.72656\\-102.3978\\163\\-92.77344\\-101.6016\\163\\-90.82031\\-100.9181\\163\\-88.86719\\-100.046\\163\\-84.96094\\-99.16065\\163\\-83.00781\\-98.3805\\163\\-81.05469\\-97.95056\\163\\-77.14844\\-97.23047\\163\\-75.19531\\-96.67561\\163\\-73.24219\\-96.23946\\163\\-65.42969\\-95.2513\\163\\-61.52344\\-94.5521\\163\\-59.57031\\-94.27474\\163\\-53.71094\\-93.84801\\163\\-43.94531\\-93.43643\\163\\-38.08594\\-93.12399\\163\\-34.17969\\-92.86015\\163\\-28.32031\\-92.81322\\163\\-26.36719\\-92.87563\\163\\-20.50781\\-93.21418\\163\\-16.60156\\-93.55454\\163\\-12.69531\\-94.0942\\163\\-10.74219\\-94.7038\\163\\-8.789063\\-95.50767\\163\\-6.835938\\-96.09309\\163\\-4.882813\\-97.0495\\163\\-2.929688\\-97.75965\\163\\0.9765625\\-98.90825\\163\\2.929688\\-99.10332\\163\\4.882813\\-98.98336\\163\\8.789063\\-97.94697\\163\\10.74219\\-97.3473\\163\\12.69531\\-96.36352\\163\\14.64844\\-95.74839\\163\\16.60156\\-95.26751\\163\\18.55469\\-94.58466\\163\\20.50781\\-94.17057\\163\\22.46094\\-93.92034\\163\\30.27344\\-93.16615\\163\\34.17969\\-92.56541\\163\\36.13281\\-92.36837\\163\\40.03906\\-92.08598\\163\\47.85156\\-91.81262\\163\\51.75781\\-91.77012\\163\\55.66406\\-91.83395\\163\\63.47656\\-92.21202\\163\\65.42969\\-92.3866\\163\\67.38281\\-92.67435\\163\\69.33594\\-93.08912\\163\\71.28906\\-93.39124\\163\\75.19531\\-93.87169\\163\\77.14844\\-94.18761\\163\\81.05469\\-95.52148\\163\\83.00781\\-96.02232\\163\\84.80748\\-96.74219\\163\\88.86719\\-98.52093\\163\\90.82031\\-99.5694\\163\\92.77344\\-100.3496\\163\\96.67969\\-102.5773\\163\\98.63281\\-103.8894\\163\\100.5859\\-105.4026\\163\\104.4922\\-108.0836\\163\\106.4453\\-109.8052\\163\\109.1588\\-112.3672\\163\\112.3047\\-115.7334\\163\\114.3444\\-118.2266\\163\\116.9934\\-122.1328\\163\\117.7338\\-124.0859\\163\\118.914\\-126.0391\\163\\119.7305\\-127.9922\\163\\120.8288\\-129.9453\\163\\121.5338\\-131.8984\\163\\122.5094\\-133.8516\\163\\123.4554\\-137.7578\\163\\124.2217\\-139.7109\\163\\124.7734\\-141.6641\\163\\125.5321\\-145.5703\\163\\126.224\\-147.5234\\163\\126.6121\\-149.4766\\163\\127.1684\\-153.3828\\163\\128.1772\\-159.2422\\163\\128.5558\\-163.1484\\163\\128.8333\\-169.0078\\163\\128.9288\\-174.8672\\163\\128.9818\\-180.7266\\163\\128.964\\-188.5391\\163\\128.8159\\-202.2109\\163\\128.6053\\-210.0234\\163\\128.3535\\-213.9297\\163\\128.1167\\-215.8828\\163\\127.3775\\-219.7891\\163\\126.7488\\-223.6953\\163\\126.3231\\-225.6484\\163\\125.5517\\-227.6016\\163\\124.6491\\-231.5078\\163\\123.7958\\-233.4609\\163\\122.6814\\-237.3672\\163\\121.7017\\-239.3203\\163\\120.8826\\-241.2734\\163\\119.6226\\-243.2266\\163\\118.6796\\-245.1797\\163\\117.3602\\-247.1328\\163\\116.4186\\-249.0859\\163\\115.116\\-251.0391\\163\\113.6407\\-252.9922\\163\\110.9416\\-256.8984\\163\\107.8566\\-260.8047\\163\\104.355\\-264.7109\\163\\102.8343\\-266.6641\\163\\100.5859\\-268.9526\\163\\98.74321\\-270.5703\\163\\96.86379\\-272.5234\\163\\94.69866\\-274.4766\\163\\92.77344\\-275.9205\\163\\88.86719\\-279.3051\\163\\86.91406\\-280.893\\163\\83.00781\\-283.4699\\163\\82.0625\\-284.2422\\163\\79.10156\\-286.3681\\163\\77.14844\\-287.4995\\163\\75.19531\\-288.8058\\163\\73.24219\\-289.5612\\163\\71.28906\\-290.8256\\163\\69.33594\\-291.705\\163\\67.38281\\-292.8702\\163\\65.42969\\-293.6913\\163\\63.47656\\-294.7097\\163\\61.52344\\-295.2224\\163\\59.57031\\-296.1048\\163\\57.61719\\-296.8393\\163\\55.66406\\-297.4166\\163\\53.71094\\-298.4023\\163\\51.75781\\-298.9789\\163\\47.85156\\-300.4176\\163\\43.94531\\-301.1925\\163\\40.03906\\-302.3152\\163\\38.08594\\-302.6648\\163\\34.17969\\-303.1638\\163\\32.22656\\-303.6181\\163\\30.27344\\-304.1702\\163\\28.32031\\-304.4796\\163\\20.50781\\-305.3755\\163\\16.60156\\-305.926\\163\\12.69531\\-306.2234\\163\\8.789063\\-306.3616\\163\\4.882813\\-306.4144\\163\\0.9765625\\-306.4144\\163\\-4.882813\\-306.3288\\163\\-8.789063\\-306.1704\\163"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002219"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "242"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "208"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-305.926\\165\\-18.55469\\-305.3223\\165\\-26.36719\\-304.3944\\165\\-28.32031\\-304.0325\\165\\-30.27344\\-303.4165\\165\\-32.22656\\-303.034\\165\\-36.13281\\-302.5377\\165\\-38.08594\\-302.1169\\165\\-40.03906\\-301.4877\\165\\-43.94531\\-300.6427\\165\\-45.89844\\-300.1216\\165\\-47.85156\\-299.287\\165\\-49.80469\\-298.7168\\165\\-53.71094\\-297.0994\\165\\-55.66406\\-296.4839\\165\\-57.61719\\-295.5075\\165\\-59.57031\\-294.9844\\165\\-61.52344\\-294.3401\\165\\-63.47656\\-293.2232\\165\\-65.42969\\-292.3557\\165\\-67.38281\\-291.1617\\165\\-69.33594\\-290.238\\165\\-75.19531\\-286.9823\\165\\-77.14844\\-285.5255\\165\\-79.10156\\-284.1696\\165\\-81.05469\\-282.9795\\165\\-84.51087\\-280.3359\\165\\-88.86719\\-276.8511\\165\\-92.77344\\-273.4631\\165\\-94.72656\\-271.5891\\165\\-95.89705\\-270.5703\\165\\-98.63281\\-267.91\\165\\-101.7464\\-264.7109\\165\\-104.4922\\-261.7431\\165\\-105.2291\\-260.8047\\165\\-108.6983\\-256.8984\\165\\-110.3516\\-254.6413\\165\\-111.3921\\-252.9922\\165\\-112.9908\\-251.0391\\165\\-114.4546\\-249.0859\\165\\-115.5831\\-247.1328\\165\\-116.8855\\-245.1797\\165\\-117.7107\\-243.2266\\165\\-118.9506\\-241.2734\\165\\-119.9247\\-239.3203\\165\\-121.0133\\-237.3672\\165\\-122.7877\\-233.4609\\165\\-123.2652\\-231.5078\\165\\-123.9368\\-229.5547\\165\\-124.7352\\-227.6016\\165\\-125.1708\\-225.6484\\165\\-126.5754\\-221.7422\\165\\-127.4294\\-217.8359\\165\\-128.0382\\-215.8828\\165\\-128.5003\\-213.9297\\165\\-129.3275\\-208.0703\\165\\-129.6441\\-206.1172\\165\\-130.0974\\-204.1641\\165\\-130.3971\\-202.2109\\165\\-130.7589\\-198.3047\\165\\-131.0911\\-190.4922\\165\\-131.2176\\-186.5859\\165\\-131.2788\\-182.6797\\165\\-131.1983\\-176.8203\\165\\-130.8214\\-169.0078\\165\\-130.5603\\-165.1016\\165\\-130.2965\\-163.1484\\165\\-129.5296\\-159.2422\\165\\-128.7052\\-153.3828\\165\\-128.3392\\-151.4297\\165\\-127.0875\\-147.5234\\165\\-126.6186\\-145.5703\\165\\-125.8102\\-143.6172\\165\\-125.1341\\-141.6641\\165\\-124.6491\\-139.7109\\165\\-123.7027\\-137.7578\\165\\-122.4486\\-133.8516\\165\\-121.297\\-131.8984\\165\\-120.3896\\-129.9453\\165\\-118.1641\\-126.4625\\165\\-117.8096\\-126.0391\\165\\-116.8984\\-124.0859\\165\\-114.2578\\-120.3348\\165\\-112.6718\\-118.2266\\165\\-110.3516\\-115.3584\\165\\-107.6497\\-112.3672\\165\\-104.4922\\-109.2016\\165\\-102.5391\\-107.549\\165\\-100.5859\\-106.1105\\165\\-98.63281\\-105.0364\\165\\-96.67969\\-103.6735\\165\\-94.72656\\-102.5788\\165\\-92.77344\\-101.7122\\165\\-90.82031\\-101.0923\\165\\-88.86719\\-100.2045\\165\\-84.96094\\-99.35628\\165\\-81.05469\\-98.11045\\165\\-77.14844\\-97.43121\\165\\-75.19531\\-97.00668\\165\\-73.24219\\-96.44922\\165\\-69.33594\\-95.89548\\165\\-63.47656\\-95.19707\\165\\-59.57031\\-94.52338\\165\\-57.61719\\-94.28776\\165\\-53.71094\\-93.98732\\165\\-49.80469\\-93.8008\\165\\-38.08594\\-93.43643\\165\\-34.17969\\-93.24962\\165\\-26.36719\\-93.21418\\165\\-22.46094\\-93.36328\\165\\-18.55469\\-93.59414\\165\\-14.64844\\-93.97729\\165\\-12.69531\\-94.33782\\165\\-10.74219\\-95.10751\\165\\-6.835938\\-96.36062\\165\\-4.882813\\-97.39516\\165\\-2.929688\\-98.01066\\165\\-0.9765625\\-98.76677\\165\\0.9765625\\-99.29108\\165\\2.929688\\-99.42192\\165\\4.882813\\-99.32827\\165\\6.835938\\-98.97331\\165\\8.789063\\-98.24233\\165\\10.74219\\-97.63737\\165\\14.64844\\-96.00549\\165\\18.55469\\-95.10983\\165\\20.50781\\-94.51942\\165\\22.46094\\-94.16994\\165\\24.41406\\-93.93909\\165\\30.27344\\-93.52493\\165\\34.17969\\-93.16378\\165\\36.13281\\-92.89152\\165\\40.03906\\-92.48717\\165\\47.85156\\-92.11835\\165\\51.75781\\-92.06216\\165\\55.66406\\-92.10883\\165\\63.47656\\-92.51041\\165\\65.42969\\-92.71387\\165\\67.38281\\-93.06528\\165\\71.28906\\-93.58945\\165\\75.19531\\-94.00171\\165\\77.14844\\-94.4167\\165\\79.10156\\-95.15614\\165\\83.00781\\-96.18666\\165\\84.96094\\-97.08567\\165\\86.91406\\-97.83745\\165\\88.86719\\-98.79769\\165\\92.77344\\-100.5452\\165\\96.37841\\-102.6016\\165\\98.63281\\-104.0369\\165\\100.5859\\-105.5759\\165\\104.4922\\-108.2915\\165\\106.4453\\-110.0012\\165\\108.9254\\-112.3672\\165\\112.5865\\-116.2734\\165\\115.5981\\-120.1797\\165\\116.9194\\-122.1328\\165\\117.6892\\-124.0859\\165\\118.8687\\-126.0391\\165\\119.6699\\-127.9922\\165\\120.8147\\-129.9453\\165\\121.5251\\-131.8984\\165\\122.5124\\-133.8516\\165\\123.4773\\-137.7578\\165\\124.2853\\-139.7109\\165\\124.8162\\-141.6641\\165\\125.1795\\-143.6172\\165\\125.6622\\-145.5703\\165\\126.3536\\-147.5234\\165\\126.7053\\-149.4766\\165\\127.2805\\-153.3828\\165\\128.0244\\-157.2891\\165\\128.2807\\-159.2422\\165\\128.6394\\-163.1484\\165\\128.964\\-170.9609\\165\\129.072\\-178.7734\\165\\129.0483\\-188.5391\\165\\128.8837\\-202.2109\\165\\128.7884\\-206.1172\\165\\128.575\\-211.9766\\165\\128.2246\\-215.8828\\165\\127.4785\\-219.7891\\165\\126.4562\\-225.6484\\165\\125.7084\\-227.6016\\165\\125.1601\\-229.5547\\165\\124.7614\\-231.5078\\165\\123.2774\\-235.4141\\165\\122.7766\\-237.3672\\165\\120.9893\\-241.2734\\165\\119.7984\\-243.2266\\165\\118.798\\-245.1797\\165\\117.47\\-247.1328\\165\\116.5654\\-249.0859\\165\\113.7888\\-252.9922\\165\\112.5041\\-254.9453\\165\\111.084\\-256.8984\\165\\108.3984\\-260.3753\\165\\104.4922\\-264.8924\\165\\103.0415\\-266.6641\\165\\101.1691\\-268.6172\\165\\99.05243\\-270.5703\\165\\96.67969\\-272.9976\\165\\94.72656\\-274.7971\\165\\92.77344\\-276.1779\\165\\90.82031\\-277.808\\165\\88.86719\\-279.556\\165\\86.91406\\-281.1487\\165\\84.96094\\-282.5256\\165\\83.00781\\-283.7366\\165\\82.4375\\-284.2422\\165\\79.69962\\-286.1953\\165\\79.10156\\-286.7062\\165\\77.14844\\-287.7992\\165\\75.19531\\-288.9899\\165\\73.24219\\-289.8574\\165\\72.92624\\-290.1016\\165\\69.4423\\-292.0547\\165\\65.42969\\-294.0472\\165\\63.47656\\-294.8831\\165\\61.52344\\-295.4148\\165\\59.57031\\-296.4232\\165\\57.61719\\-297.008\\165\\55.66406\\-297.7332\\165\\53.71094\\-298.6267\\165\\51.75781\\-299.1847\\165\\49.80469\\-300.0036\\165\\47.85156\\-300.5925\\165\\43.94531\\-301.396\\165\\41.99219\\-302.0479\\165\\40.03906\\-302.5222\\165\\36.13281\\-303.0201\\165\\34.17969\\-303.3948\\165\\32.22656\\-304.0092\\165\\30.27344\\-304.3911\\165\\24.41406\\-305.0992\\165\\18.55469\\-306.0084\\165\\16.60156\\-306.1795\\165\\12.69531\\-306.3864\\165\\8.789063\\-306.5068\\165\\2.929688\\-306.5882\\165\\-4.882813\\-306.4774\\165\\-8.789063\\-306.347\\165"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002218"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "229"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "209"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-305.9971\\167\\-22.46094\\-305.0737\\167\\-28.32031\\-304.3147\\167\\-32.22656\\-303.2757\\167\\-38.08594\\-302.383\\167\\-41.99219\\-301.2267\\167\\-45.89844\\-300.386\\167\\-47.85156\\-299.5911\\167\\-51.75781\\-298.3256\\167\\-53.71094\\-297.3163\\167\\-55.66406\\-296.7322\\167\\-59.57031\\-295.1664\\167\\-61.52344\\-294.5987\\167\\-63.47656\\-293.4882\\167\\-65.42969\\-292.6687\\167\\-67.38281\\-291.4131\\167\\-69.33594\\-290.5657\\167\\-71.28906\\-289.3266\\167\\-73.24219\\-288.4618\\167\\-75.19531\\-287.2126\\167\\-79.10156\\-284.584\\167\\-82.33696\\-282.2891\\167\\-84.96094\\-280.3612\\167\\-89.72749\\-276.4297\\167\\-92.77344\\-273.7394\\167\\-94.72656\\-271.8789\\167\\-96.2136\\-270.5703\\167\\-98.63281\\-268.2049\\167\\-102.0542\\-264.7109\\167\\-104.4922\\-262.0888\\167\\-105.5376\\-260.8047\\167\\-109.0062\\-256.8984\\167\\-110.4865\\-254.9453\\167\\-111.6815\\-252.9922\\167\\-114.7852\\-249.0859\\167\\-115.8642\\-247.1328\\167\\-117.0959\\-245.1797\\167\\-118.0591\\-243.2266\\167\\-120.1172\\-239.6059\\167\\-122.198\\-235.4141\\167\\-122.9337\\-233.4609\\167\\-123.4083\\-231.5078\\167\\-124.2477\\-229.5547\\167\\-124.8582\\-227.6016\\167\\-125.3274\\-225.6484\\167\\-126.1509\\-223.6953\\167\\-126.7384\\-221.7422\\167\\-127.1495\\-219.7891\\167\\-128.2508\\-215.8828\\167\\-128.6248\\-213.9297\\167\\-129.448\\-208.0703\\167\\-130.2411\\-204.1641\\167\\-130.511\\-202.2109\\167\\-130.8157\\-198.3047\\167\\-131.0801\\-192.4453\\167\\-131.2994\\-186.5859\\167\\-131.373\\-182.6797\\167\\-131.2702\\-176.8203\\167\\-130.7527\\-167.0547\\167\\-130.3645\\-163.1484\\167\\-129.5785\\-159.2422\\167\\-128.6723\\-153.3828\\167\\-128.2854\\-151.4297\\167\\-127.5954\\-149.4766\\167\\-126.5592\\-145.5703\\167\\-125.6966\\-143.6172\\167\\-125.0633\\-141.6641\\167\\-124.5488\\-139.7109\\167\\-123.5722\\-137.7578\\167\\-123.0229\\-135.8047\\167\\-122.2832\\-133.8516\\167\\-122.0703\\-133.5596\\167\\-120.1399\\-129.9453\\167\\-118.1641\\-126.6581\\167\\-117.6723\\-126.0391\\167\\-116.7889\\-124.0859\\167\\-114.2578\\-120.4549\\167\\-112.6112\\-118.2266\\167\\-110.3516\\-115.4219\\167\\-107.6054\\-112.3672\\167\\-104.4922\\-109.2487\\167\\-102.5391\\-107.5951\\167\\-100.5859\\-106.1917\\167\\-98.63281\\-105.1369\\167\\-96.67969\\-103.7609\\167\\-92.77344\\-101.8238\\167\\-90.82031\\-101.2279\\167\\-88.86719\\-100.3914\\167\\-86.91406\\-99.84731\\167\\-84.96094\\-99.50253\\167\\-83.00781\\-99.00921\\167\\-81.05469\\-98.29858\\167\\-79.10156\\-97.9031\\167\\-75.19531\\-97.24526\\167\\-71.28906\\-96.32366\\167\\-69.33594\\-96.06074\\167\\-63.47656\\-95.41772\\167\\-61.52344\\-95.16467\\167\\-57.61719\\-94.52338\\167\\-53.71094\\-94.14428\\167\\-49.80469\\-93.93233\\167\\-45.89844\\-93.78911\\167\\-40.03906\\-93.64117\\167\\-32.22656\\-93.48083\\167\\-26.36719\\-93.47227\\167\\-22.46094\\-93.57446\\167\\-16.60156\\-93.93909\\167\\-14.64844\\-94.1827\\167\\-12.69531\\-94.65936\\167\\-10.74219\\-95.38377\\167\\-8.789063\\-95.94218\\167\\-4.882813\\-97.64899\\167\\-2.929688\\-98.30837\\167\\-0.9765625\\-99.18359\\167\\0.9765625\\-99.52511\\167\\2.929688\\-99.62194\\167\\4.882813\\-99.55402\\167\\6.835938\\-99.32007\\167\\8.69864\\-98.69531\\167\\12.69531\\-97.23047\\167\\14.64844\\-96.29099\\167\\18.55469\\-95.43396\\167\\22.46094\\-94.46829\\167\\24.41406\\-94.14859\\167\\28.32031\\-93.83015\\167\\34.17969\\-93.51712\\167\\40.03906\\-93.08912\\167\\43.94531\\-92.72743\\167\\47.85156\\-92.52113\\167\\53.71094\\-92.40125\\167\\55.66406\\-92.45891\\167\\61.52344\\-92.84401\\167\\63.47656\\-92.92257\\167\\75.19531\\-94.17871\\167\\79.10156\\-95.37881\\167\\83.00781\\-96.36805\\167\\84.96094\\-97.2709\\167\\86.91406\\-97.99461\\167\\88.86719\\-99.02791\\167\\90.82031\\-99.79319\\167\\94.72656\\-101.741\\167\\98.63281\\-104.2104\\167\\100.5859\\-105.719\\167\\104.4245\\-108.4609\\167\\106.4453\\-110.1753\\167\\108.7815\\-112.3672\\167\\110.6721\\-114.3203\\167\\112.4401\\-116.2734\\167\\115.5313\\-120.1797\\167\\116.8771\\-122.1328\\167\\117.6463\\-124.0859\\167\\118.8576\\-126.0391\\167\\119.6699\\-127.9922\\167\\120.8354\\-129.9453\\167\\121.5579\\-131.8984\\167\\122.5488\\-133.8516\\167\\123.5221\\-137.7578\\167\\124.3804\\-139.7109\\167\\124.8805\\-141.6641\\167\\125.2688\\-143.6172\\167\\126.4902\\-147.5234\\167\\127.4444\\-153.3828\\167\\128.1906\\-157.2891\\167\\128.4089\\-159.2422\\167\\128.7323\\-163.1484\\167\\129.067\\-170.9609\\167\\129.1765\\-176.8203\\167\\129.1931\\-182.6797\\167\\129.0909\\-194.3984\\167\\128.9764\\-200.2578\\167\\128.9756\\-202.2109\\167\\128.8159\\-208.0703\\167\\128.6466\\-211.9766\\167\\128.3438\\-215.8828\\167\\128.0651\\-217.8359\\167\\127.2337\\-221.7422\\167\\126.5679\\-225.6484\\167\\125.275\\-229.5547\\167\\124.8613\\-231.5078\\167\\124.2348\\-233.4609\\167\\123.3621\\-235.4141\\167\\122.8721\\-237.3672\\167\\122.0703\\-239.2772\\167\\121.0938\\-241.2734\\167\\118.9006\\-245.1797\\167\\117.5705\\-247.1328\\167\\116.6922\\-249.0859\\167\\116.2109\\-249.7099\\167\\112.6661\\-254.9453\\167\\109.6765\\-258.8516\\167\\108.3984\\-260.6313\\167\\103.2146\\-266.6641\\167\\101.3849\\-268.6172\\167\\99.30463\\-270.5703\\167\\96.67969\\-273.2542\\167\\94.72656\\-275.0707\\167\\90.82031\\-278.1387\\167\\88.27311\\-280.3359\\167\\84.96094\\-282.8559\\167\\81.05469\\-285.4835\\167\\79.10156\\-286.9635\\167\\77.14844\\-288.1567\\167\\75.19531\\-289.1548\\167\\73.24219\\-290.2546\\167\\71.28906\\-291.2279\\167\\69.33594\\-292.4854\\167\\67.38281\\-293.295\\167\\65.42969\\-294.3834\\167\\61.52344\\-295.7059\\167\\59.57031\\-296.6527\\167\\57.61719\\-297.193\\167\\55.66406\\-298.1378\\167\\51.75781\\-299.4352\\167\\49.80469\\-300.2667\\167\\47.85156\\-300.7534\\167\\45.89844\\-301.1423\\167\\41.99219\\-302.3053\\167\\40.03906\\-302.6648\\167\\36.13281\\-303.2008\\167\\32.22656\\-304.2703\\167\\24.41406\\-305.3447\\167\\20.50781\\-306.0414\\167\\16.60156\\-306.3509\\167\\10.74219\\-306.6196\\167\\6.835938\\-306.7031\\167\\0.9765625\\-306.7463\\167\\-4.882813\\-306.6447\\167\\-8.789063\\-306.5089\\167\\-14.64844\\-306.1885\\167"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002217"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "230"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "210"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-305.7932\\169\\-22.46094\\-305.3708\\169\\-24.41406\\-305.0522\\169\\-30.27344\\-304.2264\\169\\-34.17969\\-303.1601\\169\\-38.08594\\-302.5956\\169\\-40.03906\\-302.1646\\169\\-41.99219\\-301.4901\\169\\-45.89844\\-300.5938\\169\\-47.85156\\-300.0046\\169\\-49.80469\\-299.1555\\169\\-51.75781\\-298.5885\\169\\-53.71094\\-297.6301\\169\\-57.61719\\-296.3229\\169\\-59.57031\\-295.3634\\169\\-61.52344\\-294.7998\\169\\-65.42969\\-292.9112\\169\\-67.38281\\-291.7336\\169\\-69.33594\\-290.8014\\169\\-71.28906\\-289.5464\\169\\-73.24219\\-288.7449\\169\\-75.19531\\-287.4343\\169\\-77.14844\\-286.293\\169\\-79.10156\\-284.8994\\169\\-81.05469\\-283.3892\\169\\-82.76139\\-282.2891\\169\\-84.96094\\-280.7104\\169\\-88.86719\\-277.3513\\169\\-90.04688\\-276.4297\\169\\-92.77344\\-274.0358\\169\\-96.5721\\-270.5703\\169\\-100.6381\\-266.6641\\169\\-104.1613\\-262.7578\\169\\-107.6109\\-258.8516\\169\\-109.2773\\-256.8984\\169\\-110.8156\\-254.9453\\169\\-112.0438\\-252.9922\\169\\-115.0551\\-249.0859\\169\\-116.2516\\-247.1328\\169\\-117.2858\\-245.1797\\169\\-118.461\\-243.2266\\169\\-119.3777\\-241.2734\\169\\-120.6493\\-239.3203\\169\\-121.4173\\-237.3672\\169\\-122.4811\\-235.4141\\169\\-123.5932\\-231.5078\\169\\-124.499\\-229.5547\\169\\-125.5489\\-225.6484\\169\\-126.4232\\-223.6953\\169\\-127.3508\\-219.7891\\169\\-127.9823\\-217.8359\\169\\-128.4574\\-215.8828\\169\\-129.302\\-210.0234\\169\\-130.4102\\-204.1641\\169\\-130.6299\\-202.2109\\169\\-130.9996\\-196.3516\\169\\-131.4285\\-186.5859\\169\\-131.4838\\-180.7266\\169\\-131.376\\-176.8203\\169\\-130.7932\\-167.0547\\169\\-130.4599\\-163.1484\\169\\-130.0974\\-161.1953\\169\\-129.6296\\-159.2422\\169\\-128.684\\-153.3828\\169\\-128.2854\\-151.4297\\169\\-127.5823\\-149.4766\\169\\-126.5241\\-145.5703\\169\\-125.6378\\-143.6172\\169\\-124.4796\\-139.7109\\169\\-123.4961\\-137.7578\\169\\-122.9806\\-135.8047\\169\\-122.1556\\-133.8516\\169\\-118.8992\\-127.9922\\169\\-117.5916\\-126.0391\\169\\-116.7295\\-124.0859\\169\\-114.2578\\-120.4904\\169\\-112.5969\\-118.2266\\169\\-110.3516\\-115.4375\\169\\-107.5868\\-112.3672\\169\\-104.4922\\-109.2617\\169\\-102.5391\\-107.6155\\169\\-100.5859\\-106.2421\\169\\-98.63281\\-105.2037\\169\\-96.67969\\-103.8324\\169\\-92.77344\\-101.9246\\169\\-90.82031\\-101.3433\\169\\-86.91406\\-99.95874\\169\\-83.00781\\-99.21825\\169\\-81.05469\\-98.54671\\169\\-79.10156\\-98.05659\\169\\-75.19531\\-97.43059\\169\\-73.24219\\-97.0612\\169\\-71.28906\\-96.55518\\169\\-69.33594\\-96.21416\\169\\-61.52344\\-95.37997\\169\\-55.66406\\-94.52338\\169\\-53.71094\\-94.34091\\169\\-49.80469\\-94.07827\\169\\-45.89844\\-93.91373\\169\\-40.03906\\-93.76019\\169\\-28.32031\\-93.65862\\169\\-22.46094\\-93.75891\\169\\-18.55469\\-93.95808\\169\\-16.60156\\-94.13176\\169\\-14.64844\\-94.44727\\169\\-10.74219\\-95.62856\\169\\-8.789063\\-96.16199\\169\\-6.835938\\-97.14469\\169\\-4.882813\\-97.87885\\169\\-2.929688\\-98.75089\\169\\-0.9765625\\-99.44966\\169\\0.9765625\\-99.71116\\169\\2.929688\\-99.78609\\169\\4.882813\\-99.73962\\169\\6.835938\\-99.54129\\169\\8.789063\\-99.10614\\169\\10.74219\\-98.1835\\169\\12.69531\\-97.50174\\169\\14.64844\\-96.61921\\169\\16.60156\\-96.01691\\169\\20.50781\\-95.30684\\169\\24.41406\\-94.39428\\169\\26.36719\\-94.15717\\169\\30.27344\\-93.85985\\169\\38.08594\\-93.54025\\169\\45.89844\\-93.14023\\169\\53.71094\\-92.81322\\169\\57.61719\\-93.11192\\169\\65.42969\\-93.39859\\169\\71.28906\\-93.88352\\169\\73.24219\\-94.08619\\169\\75.19531\\-94.42199\\169\\77.14844\\-95.05475\\169\\79.10156\\-95.56439\\169\\81.05469\\-95.95755\\169\\83.00781\\-96.55385\\169\\84.96094\\-97.41919\\169\\86.91406\\-98.15472\\169\\88.86719\\-99.19998\\169\\90.82031\\-99.90527\\169\\92.77344\\-100.9884\\169\\94.72656\\-101.8365\\169\\98.8023\\-104.5547\\169\\101.6195\\-106.5078\\169\\104.2434\\-108.4609\\169\\106.4453\\-110.3432\\169\\108.6604\\-112.3672\\169\\110.5781\\-114.3203\\169\\112.3047\\-116.2819\\169\\115.4801\\-120.1797\\169\\116.8555\\-122.1328\\169\\117.6367\\-124.0859\\169\\118.8687\\-126.0391\\169\\119.7097\\-127.9922\\169\\120.8704\\-129.9453\\169\\121.6162\\-131.8984\\169\\122.6071\\-133.8516\\169\\123.6205\\-137.7578\\169\\124.499\\-139.7109\\169\\125.3698\\-143.6172\\169\\126.0986\\-145.5703\\169\\126.6224\\-147.5234\\169\\127.2583\\-151.4297\\169\\128.0783\\-155.3359\\169\\128.3562\\-157.2891\\169\\128.703\\-161.1953\\169\\129.0415\\-167.0547\\169\\129.1844\\-170.9609\\169\\129.3147\\-176.8203\\169\\129.3367\\-182.6797\\169\\129.2091\\-194.3984\\169\\128.9987\\-206.1172\\169\\128.6167\\-213.9297\\169\\128.2246\\-217.8359\\169\\127.3658\\-221.7422\\169\\126.6807\\-225.6484\\169\\126.176\\-227.6016\\169\\125.4109\\-229.5547\\169\\124.4154\\-233.4609\\169\\123.4645\\-235.4141\\169\\122.951\\-237.3672\\169\\122.0703\\-239.522\\169\\120.1838\\-243.2266\\169\\118.1641\\-246.5299\\169\\117.6859\\-247.1328\\169\\116.7929\\-249.0859\\169\\112.8113\\-254.9453\\169\\109.8022\\-258.8516\\169\\108.4984\\-260.8047\\169\\104.4922\\-265.3594\\169\\103.3936\\-266.6641\\169\\101.5693\\-268.6172\\169\\99.50725\\-270.5703\\169\\96.67969\\-273.4661\\169\\94.72656\\-275.285\\169\\88.69538\\-280.3359\\169\\86.91406\\-281.6185\\169\\83.00781\\-284.5544\\169\\81.05469\\-285.8141\\169\\77.14844\\-288.4789\\169\\75.19531\\-289.3096\\169\\73.24219\\-290.5805\\169\\71.28906\\-291.4785\\169\\69.33594\\-292.7405\\169\\67.38281\\-293.5703\\169\\65.42969\\-294.6316\\169\\63.47656\\-295.2131\\169\\61.52344\\-296.1048\\169\\59.57031\\-296.8333\\169\\57.61719\\-297.4385\\169\\55.66406\\-298.439\\169\\53.71094\\-299.0279\\169\\49.80469\\-300.4731\\169\\45.89844\\-301.3354\\169\\43.94531\\-302.0067\\169\\41.99219\\-302.51\\169\\38.08594\\-303.0524\\169\\36.13281\\-303.4547\\169\\34.17969\\-304.0774\\169\\32.22656\\-304.4601\\169\\26.36719\\-305.2716\\169\\22.46094\\-306.0305\\169\\18.55469\\-306.39\\169\\12.69531\\-306.6979\\169\\6.835938\\-306.8838\\169\\0.9765625\\-306.9415\\169\\-2.929688\\-306.8791\\169\\-8.789063\\-306.6818\\169\\-14.64844\\-306.39\\169\\-18.55469\\-306.0731\\169"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002216"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "234"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "211"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-305.8073\\171\\-24.41406\\-305.3627\\171\\-26.36719\\-305.0237\\171\\-30.27344\\-304.4804\\171\\-32.22656\\-304.099\\171\\-34.17969\\-303.4618\\171\\-36.13281\\-303.041\\171\\-40.03906\\-302.4354\\171\\-43.94531\\-301.2228\\171\\-47.85156\\-300.3213\\171\\-49.80469\\-299.4624\\171\\-53.71094\\-298.0768\\171\\-55.66406\\-297.1539\\171\\-57.61719\\-296.5981\\171\\-59.57031\\-295.6142\\171\\-61.52344\\-294.9784\\171\\-63.47656\\-294.2191\\171\\-67.53943\\-292.0547\\171\\-70.96041\\-290.1016\\171\\-71.28906\\-289.8387\\171\\-73.24219\\-288.9581\\171\\-75.19531\\-287.6869\\171\\-77.14844\\-286.6476\\171\\-81.05469\\-283.6358\\171\\-83.00781\\-282.4544\\171\\-84.96094\\-280.9758\\171\\-88.03923\\-278.3828\\171\\-88.86719\\-277.616\\171\\-92.77344\\-274.3913\\171\\-94.72656\\-272.7131\\171\\-97.00259\\-270.5703\\171\\-101.0322\\-266.6641\\171\\-102.8519\\-264.7109\\171\\-108.3984\\-258.3063\\171\\-110.3516\\-255.9135\\171\\-112.5194\\-252.9922\\171\\-115.29\\-249.0859\\171\\-116.6255\\-247.1328\\171\\-117.4855\\-245.1797\\171\\-118.7547\\-243.2266\\171\\-119.6709\\-241.2734\\171\\-120.8868\\-239.3203\\171\\-121.6942\\-237.3672\\171\\-122.7066\\-235.4141\\171\\-123.2337\\-233.4609\\171\\-123.9063\\-231.5078\\171\\-124.7218\\-229.5547\\171\\-125.1964\\-227.6016\\171\\-126.6473\\-223.6953\\171\\-127.6266\\-219.7891\\171\\-128.2747\\-217.8359\\171\\-128.6447\\-215.8828\\171\\-129.4936\\-210.0234\\171\\-130.3101\\-206.1172\\171\\-130.7465\\-202.2109\\171\\-131.1232\\-196.3516\\171\\-131.5402\\-188.5391\\171\\-131.6671\\-182.6797\\171\\-131.6683\\-180.7266\\171\\-131.5172\\-176.8203\\171\\-130.5481\\-163.1484\\171\\-130.213\\-161.1953\\171\\-129.739\\-159.2422\\171\\-129.0838\\-155.3359\\171\\-128.3518\\-151.4297\\171\\-127.6175\\-149.4766\\171\\-126.5191\\-145.5703\\171\\-125.6268\\-143.6172\\171\\-124.4596\\-139.7109\\171\\-123.4737\\-137.7578\\171\\-122.9565\\-135.8047\\171\\-122.0941\\-133.8516\\171\\-121.0455\\-131.8984\\171\\-119.873\\-129.9453\\171\\-118.8816\\-127.9922\\171\\-117.5781\\-126.0391\\171\\-116.7295\\-124.0859\\171\\-114.2578\\-120.4753\\171\\-112.5969\\-118.2266\\171\\-110.3516\\-115.4045\\171\\-107.6212\\-112.3672\\171\\-104.4922\\-109.254\\171\\-102.5391\\-107.6211\\171\\-100.5859\\-106.2949\\171\\-98.63281\\-105.2665\\171\\-96.67969\\-103.9173\\171\\-94.72656\\-103.042\\171\\-92.77344\\-102.0132\\171\\-88.86719\\-100.8087\\171\\-86.91406\\-100.0766\\171\\-83.00781\\-99.38295\\171\\-81.05469\\-98.86547\\171\\-79.10156\\-98.23056\\171\\-77.14844\\-97.87738\\171\\-73.24219\\-97.28791\\171\\-69.33594\\-96.4061\\171\\-67.38281\\-96.15515\\171\\-61.52344\\-95.57146\\171\\-57.61719\\-95.1398\\171\\-55.66406\\-94.82844\\171\\-51.75781\\-94.38895\\171\\-47.85156\\-94.14428\\171\\-41.99219\\-93.93087\\171\\-36.13281\\-93.84191\\171\\-28.32031\\-93.82434\\171\\-24.41406\\-93.86609\\171\\-20.50781\\-93.99447\\171\\-16.60156\\-94.37538\\171\\-14.73999\\-94.78906\\171\\-10.74219\\-95.8539\\171\\-8.789063\\-96.44725\\171\\-6.835938\\-97.45294\\171\\-4.882813\\-98.13979\\171\\-2.929688\\-99.1638\\171\\-0.9765625\\-99.64929\\171\\0.9765625\\-99.8922\\171\\2.929688\\-99.99532\\171\\4.882813\\-99.91903\\171\\6.835938\\-99.71756\\171\\8.789063\\-99.3606\\171\\12.69531\\-97.72991\\171\\16.60156\\-96.24469\\171\\18.55469\\-95.84558\\171\\22.46094\\-95.24983\\171\\26.36719\\-94.40266\\171\\30.27344\\-94.02882\\171\\41.99219\\-93.58307\\171\\43.94531\\-93.55209\\171\\53.71094\\-93.23885\\171\\57.61719\\-93.44019\\171\\61.52344\\-93.50507\\171\\65.42969\\-93.63277\\171\\71.28906\\-94.03361\\171\\73.24219\\-94.29082\\171\\75.19531\\-94.73438\\171\\77.14844\\-95.29037\\171\\81.05469\\-96.061\\171\\86.91406\\-98.29581\\171\\88.86719\\-99.31444\\171\\90.82031\\-99.9995\\171\\92.77344\\-101.1367\\171\\94.72656\\-101.9357\\171\\96.67969\\-103.3\\171\\100.5859\\-105.8745\\171\\104.4922\\-108.7743\\171\\108.557\\-112.3672\\171\\110.4899\\-114.3203\\171\\112.3047\\-116.3637\\171\\115.4413\\-120.1797\\171\\116.8555\\-122.1328\\171\\117.6658\\-124.0859\\171\\118.9047\\-126.0391\\171\\119.7962\\-127.9922\\171\\120.9284\\-129.9453\\171\\121.7206\\-131.8984\\171\\122.6854\\-133.8516\\171\\123.1682\\-135.8047\\171\\123.7538\\-137.7578\\171\\124.5961\\-139.7109\\171\\125.5101\\-143.6172\\171\\126.3021\\-145.5703\\171\\126.7608\\-147.5234\\171\\127.4505\\-151.4297\\171\\127.9297\\-153.4165\\171\\128.2935\\-155.3359\\171\\128.5121\\-157.2891\\171\\128.9525\\-163.1484\\171\\129.2677\\-169.0078\\171\\129.4011\\-172.9141\\171\\129.5157\\-178.7734\\171\\129.5183\\-182.6797\\171\\129.472\\-186.5859\\171\\129.1219\\-206.1172\\171\\128.7143\\-213.9297\\171\\128.3535\\-217.8359\\171\\128.0244\\-219.7891\\171\\127.5302\\-221.7422\\171\\126.7987\\-225.6484\\171\\126.3733\\-227.6016\\171\\125.5691\\-229.5547\\171\\124.5488\\-233.4609\\171\\123.5722\\-235.4141\\171\\123.029\\-237.3672\\171\\122.3424\\-239.3203\\171\\121.2748\\-241.2734\\171\\120.3545\\-243.2266\\171\\118.1641\\-246.6959\\171\\117.8032\\-247.1328\\171\\116.8729\\-249.0859\\171\\115.5286\\-251.0391\\171\\114.3392\\-252.9922\\171\\112.9338\\-254.9453\\171\\109.9121\\-258.8516\\171\\108.6972\\-260.8047\\171\\104.4922\\-265.5573\\171\\102.5391\\-267.8117\\171\\100.5859\\-269.6665\\171\\97.71767\\-272.5234\\171\\95.83144\\-274.4766\\171\\88.86719\\-280.5949\\171\\86.91406\\-281.8527\\171\\83.00781\\-284.8593\\171\\81.05469\\-286.2332\\171\\79.10156\\-287.4298\\171\\77.14844\\-288.7344\\171\\75.19531\\-289.5298\\171\\73.24219\\-290.8284\\171\\71.28906\\-291.807\\171\\69.33594\\-292.9779\\171\\65.42969\\-294.8267\\171\\63.47656\\-295.4169\\171\\61.52344\\-296.4201\\171\\59.57031\\-297.0023\\171\\55.66406\\-298.6554\\171\\53.71094\\-299.264\\171\\51.75781\\-300.1079\\171\\49.80469\\-300.6564\\171\\45.89844\\-301.578\\171\\43.94531\\-302.2715\\171\\41.99219\\-302.6582\\171\\40.03906\\-302.9011\\171\\38.08594\\-303.2481\\171\\34.17969\\-304.3228\\171\\28.32031\\-305.179\\171\\24.41406\\-306.0084\\171\\22.46094\\-306.2485\\171\\18.55469\\-306.5421\\171\\10.74219\\-306.9647\\171\\6.835938\\-307.1012\\171\\2.929688\\-307.1721\\171\\-2.929688\\-307.11\\171\\-8.789063\\-306.8859\\171\\-16.60156\\-306.4564\\171\\-20.50781\\-306.1425\\171"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002215"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "232"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "212"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-24.41406\\-305.7787\\173\\-26.36719\\-305.3028\\173\\-28.32031\\-304.963\\173\\-32.22656\\-304.3905\\173\\-34.17969\\-303.9221\\173\\-36.13281\\-303.2852\\173\\-40.03906\\-302.6399\\173\\-41.99219\\-302.2039\\173\\-43.94531\\-301.4995\\173\\-47.85156\\-300.5623\\173\\-49.80469\\-299.8749\\173\\-51.75781\\-299.048\\173\\-53.71094\\-298.4345\\173\\-55.66406\\-297.4195\\173\\-57.61719\\-296.8113\\173\\-61.52344\\-295.1521\\173\\-63.47656\\-294.5125\\173\\-65.42969\\-293.3666\\173\\-67.38281\\-292.5309\\173\\-69.33594\\-291.2547\\173\\-71.56033\\-290.1016\\173\\-75.05267\\-288.1484\\173\\-77.14844\\-286.9216\\173\\-81.05469\\-283.9434\\173\\-83.00781\\-282.7317\\173\\-84.96094\\-281.209\\173\\-88.38264\\-278.3828\\173\\-88.86719\\-277.9161\\173\\-92.77344\\-274.812\\173\\-95.33435\\-272.5234\\173\\-101.381\\-266.6641\\173\\-103.2157\\-264.7109\\173\\-104.9045\\-262.7578\\173\\-106.7016\\-260.8047\\173\\-108.3984\\-258.7858\\173\\-112.3047\\-253.75\\173\\-114.2982\\-251.0391\\173\\-116.9067\\-247.1328\\173\\-117.7636\\-245.1797\\173\\-118.1641\\-244.6546\\173\\-120.1248\\-241.2734\\173\\-122.0783\\-237.3672\\173\\-122.9013\\-235.4141\\173\\-123.421\\-233.4609\\173\\-124.3234\\-231.5078\\173\\-125.4401\\-227.6016\\173\\-126.3148\\-225.6484\\173\\-127.3391\\-221.7422\\173\\-127.9968\\-219.7891\\173\\-128.4989\\-217.8359\\173\\-129.3815\\-211.9766\\173\\-130.2154\\-208.0703\\173\\-130.7109\\-204.1641\\173\\-131.2927\\-196.3516\\173\\-131.8123\\-188.5391\\173\\-131.9444\\-182.6797\\173\\-131.9167\\-180.7266\\173\\-131.7375\\-176.8203\\173\\-131.058\\-169.0078\\173\\-130.6299\\-163.1484\\173\\-130.3545\\-161.1953\\173\\-129.4691\\-157.2891\\173\\-128.8138\\-153.3828\\173\\-128.4241\\-151.4297\\173\\-127.0739\\-147.5234\\173\\-126.5659\\-145.5703\\173\\-125.6714\\-143.6172\\173\\-124.4894\\-139.7109\\173\\-123.4961\\-137.7578\\173\\-122.9685\\-135.8047\\173\\-122.1406\\-133.8516\\173\\-118.9248\\-127.9922\\173\\-117.6147\\-126.0391\\173\\-116.7756\\-124.0859\\173\\-114.2578\\-120.375\\173\\-112.6604\\-118.2266\\173\\-110.3516\\-115.335\\173\\-107.6827\\-112.3672\\173\\-104.4922\\-109.2278\\173\\-102.5391\\-107.6211\\173\\-100.5859\\-106.335\\173\\-98.63281\\-105.3117\\173\\-96.67969\\-103.9975\\173\\-94.72656\\-103.1359\\173\\-92.77344\\-102.0886\\173\\-88.86719\\-100.981\\173\\-86.91406\\-100.2076\\173\\-84.96094\\-99.79752\\173\\-83.00781\\-99.50636\\173\\-81.05469\\-99.11101\\173\\-79.10156\\-98.43623\\173\\-77.14844\\-98.01843\\173\\-71.28906\\-97.13657\\173\\-69.33594\\-96.66142\\173\\-67.38281\\-96.32366\\173\\-65.42969\\-96.09293\\173\\-57.61719\\-95.37125\\173\\-53.71094\\-94.93179\\173\\-51.75781\\-94.66037\\173\\-47.85156\\-94.32058\\173\\-41.99219\\-94.07495\\173\\-36.13281\\-93.98026\\173\\-24.41406\\-94.01392\\173\\-20.50781\\-94.19662\\173\\-18.55469\\-94.39706\\173\\-16.60156\\-94.70448\\173\\-10.74219\\-96.08174\\173\\-9.036847\\-96.74219\\173\\-4.882813\\-98.49303\\173\\-2.929688\\-99.43068\\173\\0.9765625\\-100.1307\\173\\2.929688\\-100.2787\\173\\4.882813\\-100.1602\\173\\6.835938\\-99.90697\\173\\8.789063\\-99.5535\\173\\10.74219\\-98.88605\\173\\12.69531\\-97.96576\\173\\14.64844\\-97.31842\\173\\16.60156\\-96.56654\\173\\18.55469\\-96.0574\\173\\24.41406\\-95.2193\\173\\28.32031\\-94.46354\\173\\32.22656\\-94.13164\\173\\41.99219\\-93.74316\\173\\53.71094\\-93.51343\\173\\55.66406\\-93.57859\\173\\63.47656\\-93.71894\\173\\69.33594\\-93.9895\\173\\71.28906\\-94.19156\\173\\73.24219\\-94.53588\\173\\77.14844\\-95.46234\\173\\81.05469\\-96.21586\\173\\83.00781\\-97.00028\\173\\84.96094\\-97.67197\\173\\86.91406\\-98.4529\\173\\88.86719\\-99.39466\\173\\90.82031\\-100.1008\\173\\92.77344\\-101.2357\\173\\94.72656\\-102.0445\\173\\98.63281\\-104.7952\\173\\100.5859\\-105.9366\\173\\104.4922\\-108.8672\\173\\106.4453\\-110.6319\\173\\108.4927\\-112.3672\\173\\110.4267\\-114.3203\\173\\112.3047\\-116.4095\\173\\115.4441\\-120.1797\\173\\116.89\\-122.1328\\173\\117.7308\\-124.0859\\173\\118.9616\\-126.0391\\173\\121.0054\\-129.9453\\173\\122.7607\\-133.8516\\173\\123.2311\\-135.8047\\173\\124.6955\\-139.7109\\173\\125.1281\\-141.6641\\173\\125.6946\\-143.6172\\173\\126.4793\\-145.5703\\173\\127.2583\\-149.4766\\173\\128.1924\\-153.3828\\173\\128.4629\\-155.3359\\173\\128.8272\\-159.2422\\173\\129.098\\-163.1484\\173\\129.5296\\-170.9609\\173\\129.7531\\-176.8203\\173\\129.7675\\-182.6797\\173\\129.71\\-186.5859\\173\\129.541\\-190.4922\\173\\129.555\\-192.4453\\173\\129.2465\\-206.1172\\173\\129.0551\\-210.0234\\173\\128.8097\\-213.9297\\173\\128.4768\\-217.8359\\173\\128.1906\\-219.7891\\173\\127.2879\\-223.6953\\173\\126.5228\\-227.6016\\173\\125.7556\\-229.5547\\173\\125.1267\\-231.5078\\173\\124.6491\\-233.4609\\173\\123.6884\\-235.4141\\173\\122.465\\-239.3203\\173\\121.3679\\-241.2734\\173\\120.4834\\-243.2266\\173\\119.1617\\-245.1797\\173\\117.9445\\-247.1328\\173\\116.945\\-249.0859\\173\\115.6315\\-251.0391\\173\\114.4968\\-252.9922\\173\\110.0757\\-258.8516\\173\\108.8625\\-260.8047\\173\\103.6794\\-266.6641\\173\\102.011\\-268.6172\\173\\100.5859\\-269.8912\\173\\97.94081\\-272.5234\\173\\96.08624\\-274.4766\\173\\92.77344\\-277.3448\\173\\90.82031\\-279.1734\\173\\88.86719\\-280.8891\\173\\84.96094\\-283.5493\\173\\84.14713\\-284.2422\\173\\81.05469\\-286.5821\\173\\79.10156\\-287.6735\\173\\77.14844\\-288.9234\\173\\75.19531\\-289.8174\\173\\74.84267\\-290.1016\\173\\71.28906\\-292.2055\\173\\67.80876\\-294.0078\\173\\67.38281\\-294.2918\\173\\63.47656\\-295.6767\\173\\61.52344\\-296.6445\\173\\59.57031\\-297.1859\\173\\57.61719\\-298.1846\\173\\53.71094\\-299.5329\\173\\51.75781\\-300.3555\\173\\47.85156\\-301.2485\\173\\43.94531\\-302.4651\\173\\40.03906\\-303.034\\173\\38.08594\\-303.4995\\173\\36.13281\\-304.1302\\173\\34.17969\\-304.4996\\173\\30.27344\\-305.0451\\173\\28.32031\\-305.4097\\173\\26.36719\\-305.9009\\173\\24.41406\\-306.2062\\173\\18.55469\\-306.6926\\173\\10.74219\\-307.1754\\173\\6.835938\\-307.3427\\173\\2.929688\\-307.441\\173\\-2.929688\\-307.3776\\173\\-8.789063\\-307.128\\173\\-14.64844\\-306.7787\\173\\-20.50781\\-306.3651\\173\\-22.46094\\-306.1425\\173"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002214"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "233"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "213"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.882813\\-307.6246\\175\\-8.789063\\-307.414\\175\\-14.64844\\-306.9991\\175\\-20.50781\\-306.5481\\175\\-24.41406\\-306.1135\\175\\-28.32031\\-305.2235\\175\\-34.17969\\-304.2817\\175\\-38.08594\\-303.1087\\175\\-41.99219\\-302.4651\\175\\-45.89844\\-301.2052\\175\\-49.80469\\-300.2358\\175\\-51.75781\\-299.3362\\175\\-53.71094\\-298.6922\\175\\-57.61719\\-297.0088\\175\\-59.57031\\-296.3583\\175\\-61.52344\\-295.3287\\175\\-63.47656\\-294.731\\175\\-65.42969\\-293.6643\\175\\-67.38281\\-292.7831\\175\\-69.33594\\-291.5326\\175\\-71.28906\\-290.6113\\175\\-73.24219\\-289.329\\175\\-75.19531\\-288.4472\\175\\-77.14844\\-287.1417\\175\\-79.10156\\-285.6472\\175\\-81.05469\\-284.3515\\175\\-83.00781\\-282.9465\\175\\-84.96094\\-281.4436\\175\\-92.77344\\-275.139\\175\\-94.72656\\-273.3772\\175\\-101.6576\\-266.6641\\175\\-106.4453\\-261.5064\\175\\-108.7708\\-258.8516\\175\\-111.611\\-254.9453\\175\\-112.3047\\-254.1595\\175\\-114.2578\\-251.5385\\175\\-114.7122\\-251.0391\\175\\-117.1091\\-247.1328\\175\\-119.2522\\-243.2266\\175\\-120.5627\\-241.2734\\175\\-121.3637\\-239.3203\\175\\-122.4623\\-237.3672\\175\\-123.7027\\-233.4609\\175\\-124.6202\\-231.5078\\175\\-125.1079\\-229.5547\\175\\-125.8089\\-227.6016\\175\\-126.6149\\-225.6484\\175\\-127.0919\\-223.6953\\175\\-128.319\\-219.7891\\175\\-128.6982\\-217.8359\\175\\-129.2717\\-213.9297\\175\\-129.6405\\-211.9766\\175\\-130.1122\\-210.0234\\175\\-130.4599\\-208.0703\\175\\-130.6792\\-206.1172\\175\\-131.0075\\-202.2109\\175\\-131.5499\\-196.3516\\175\\-132.0354\\-190.4922\\175\\-132.1825\\-186.5859\\175\\-132.2229\\-182.6797\\175\\-132.1508\\-178.7734\\175\\-131.8735\\-174.8672\\175\\-131.1868\\-169.0078\\175\\-130.7239\\-163.1484\\175\\-130.49\\-161.1953\\175\\-130.1251\\-159.2422\\175\\-129.6152\\-157.2891\\175\\-128.5073\\-151.4297\\175\\-127.1474\\-147.5234\\175\\-126.6402\\-145.5703\\175\\-125.7957\\-143.6172\\175\\-125.0893\\-141.6641\\175\\-124.5488\\-139.7109\\175\\-123.5619\\-137.7578\\175\\-122.9984\\-135.8047\\175\\-122.0703\\-133.6176\\175\\-120.1399\\-129.9453\\175\\-118.1641\\-126.6161\\175\\-117.7107\\-126.0391\\175\\-116.8512\\-124.0859\\175\\-114.2578\\-120.209\\175\\-110.3516\\-115.2188\\175\\-107.7542\\-112.3672\\175\\-104.4922\\-109.1934\\175\\-102.5391\\-107.6081\\175\\-100.5859\\-106.3781\\175\\-98.63281\\-105.3485\\175\\-96.67969\\-104.0603\\175\\-94.72656\\-103.2193\\175\\-92.77344\\-102.1739\\175\\-88.86719\\-101.1201\\175\\-86.91406\\-100.3663\\175\\-84.96094\\-99.8922\\175\\-81.05469\\-99.27155\\175\\-77.14844\\-98.16213\\175\\-71.28906\\-97.33149\\175\\-67.38281\\-96.53049\\175\\-65.42969\\-96.24242\\175\\-53.71094\\-95.20476\\175\\-47.85156\\-94.53588\\175\\-41.99219\\-94.25227\\175\\-36.13281\\-94.14428\\175\\-28.32031\\-94.17396\\175\\-24.41406\\-94.21347\\175\\-20.50781\\-94.45404\\175\\-18.55469\\-94.74969\\175\\-12.69531\\-95.8539\\175\\-10.74219\\-96.32808\\175\\-8.789063\\-97.23047\\175\\-6.835938\\-97.92606\\175\\-4.882813\\-98.93761\\175\\-2.929688\\-99.63259\\175\\0.9765625\\-100.4456\\175\\2.929688\\-100.6242\\175\\4.882813\\-100.4882\\175\\8.789063\\-99.76657\\175\\10.74219\\-99.15608\\175\\12.69531\\-98.21636\\175\\16.60156\\-97.0123\\175\\18.55469\\-96.34768\\175\\20.50781\\-95.99232\\175\\26.36719\\-95.25059\\175\\30.27344\\-94.58307\\175\\32.22656\\-94.39986\\175\\36.13281\\-94.21347\\175\\41.99219\\-93.88352\\175\\51.75781\\-93.70596\\175\\57.61719\\-93.73693\\175\\63.47656\\-93.83015\\175\\69.33594\\-94.11924\\175\\71.28906\\-94.38331\\175\\75.19531\\-95.25755\\175\\79.10156\\-95.91411\\175\\81.05469\\-96.42782\\175\\83.00781\\-97.21471\\175\\84.96094\\-97.84784\\175\\88.86719\\-99.49263\\175\\90.82031\\-100.2121\\175\\92.77344\\-101.3186\\175\\94.72656\\-102.14\\175\\98.63281\\-104.9104\\175\\100.5859\\-106.0069\\175\\103.8959\\-108.4609\\175\\108.4073\\-112.3672\\175\\110.3937\\-114.3203\\175\\112.3047\\-116.4546\\175\\115.4735\\-120.1797\\175\\116.9241\\-122.1328\\175\\117.8148\\-124.0859\\175\\118.1641\\-124.5417\\175\\120.1399\\-127.9922\\175\\122.0703\\-132.0277\\175\\122.8455\\-133.8516\\175\\123.3048\\-135.8047\\175\\124.1379\\-137.7578\\175\\124.8014\\-139.7109\\175\\125.2497\\-141.6641\\175\\126.6365\\-145.5703\\175\\127.469\\-149.4766\\175\\128.0105\\-151.4297\\175\\128.4026\\-153.3828\\175\\128.9818\\-159.2422\\175\\129.8125\\-170.9609\\175\\130.0692\\-176.8203\\175\\130.0974\\-178.7734\\175\\130.0125\\-186.5859\\175\\129.7969\\-190.4922\\175\\129.8119\\-192.4453\\175\\129.71\\-196.3516\\175\\129.5526\\-200.2578\\175\\129.4585\\-204.1641\\175\\129.2804\\-208.0703\\175\\128.9235\\-213.9297\\175\\128.5903\\-217.8359\\175\\128.3562\\-219.7891\\175\\127.9819\\-221.7422\\175\\127.4384\\-223.6953\\175\\126.6396\\-227.6016\\175\\125.9993\\-229.5547\\175\\125.2116\\-231.5078\\175\\124.7321\\-233.4609\\175\\123.8206\\-235.4141\\175\\122.565\\-239.3203\\175\\121.4644\\-241.2734\\175\\120.5901\\-243.2266\\175\\119.2367\\-245.1797\\175\\117.0258\\-249.0859\\175\\115.7294\\-251.0391\\175\\114.632\\-252.9922\\175\\112.3047\\-256.0668\\175\\111.5951\\-256.8984\\175\\109.0071\\-260.8047\\175\\107.3255\\-262.7578\\175\\105.5415\\-264.7109\\175\\103.8793\\-266.6641\\175\\102.5391\\-268.3688\\175\\100.5859\\-270.2173\\175\\98.26753\\-272.5234\\175\\96.67969\\-274.2568\\175\\94.17628\\-276.4297\\175\\92.77344\\-277.5627\\175\\90.82031\\-279.4044\\175\\88.86719\\-281.1367\\175\\86.91406\\-282.5947\\175\\84.96094\\-283.8154\\175\\84.48476\\-284.2422\\175\\81.05469\\-286.8289\\175\\75.35629\\-290.1016\\175\\73.24219\\-291.2292\\175\\71.28906\\-292.5242\\175\\69.33594\\-293.4158\\175\\67.38281\\-294.5559\\175\\65.42969\\-295.1686\\175\\63.47656\\-296.0462\\175\\61.52344\\-296.8141\\175\\59.57031\\-297.4289\\175\\57.61719\\-298.4648\\175\\55.66406\\-299.0551\\175\\53.6941\\-299.8672\\175\\51.75781\\-300.5357\\175\\47.85156\\-301.4532\\175\\45.89844\\-302.1529\\175\\43.94531\\-302.6145\\175\\40.03906\\-303.218\\175\\38.08594\\-303.84\\175\\36.13281\\-304.3507\\175\\30.27344\\-305.2533\\175\\26.36719\\-306.133\\175\\22.46094\\-306.5438\\175\\18.55469\\-306.8529\\175\\8.789063\\-307.537\\175\\2.929688\\-307.7484\\175\\-0.9765625\\-307.7484\\175"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002213"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "243"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "214"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.789063\\-307.7636\\177\\-20.50781\\-306.7191\\177\\-24.41406\\-306.3396\\177\\-26.36719\\-306.0627\\177\\-30.27344\\-305.1418\\177\\-34.17969\\-304.5196\\177\\-36.13281\\-304.12\\177\\-38.08594\\-303.3922\\177\\-40.03906\\-302.9596\\177\\-41.99219\\-302.6582\\177\\-43.94531\\-302.2261\\177\\-45.89844\\-301.4646\\177\\-49.80469\\-300.4924\\177\\-53.71094\\-298.927\\177\\-55.66406\\-298.2523\\177\\-57.61719\\-297.2339\\177\\-59.57031\\-296.6338\\177\\-61.52344\\-295.5912\\177\\-63.47656\\-294.9237\\177\\-65.42969\\-294.0475\\177\\-71.28906\\-290.8636\\177\\-73.24219\\-289.5313\\177\\-75.19531\\-288.717\\177\\-81.05469\\-284.6729\\177\\-84.22636\\-282.2891\\177\\-89.21712\\-278.3828\\177\\-92.77344\\-275.3867\\177\\-94.72656\\-273.6386\\177\\-101.9304\\-266.6641\\177\\-105.5242\\-262.7578\\177\\-106.4453\\-261.8301\\177\\-109.0913\\-258.8516\\177\\-110.5763\\-256.8984\\177\\-111.9366\\-254.9453\\177\\-114.998\\-251.0391\\177\\-116.2848\\-249.0859\\177\\-117.3073\\-247.1328\\177\\-118.6336\\-245.1797\\177\\-119.5636\\-243.2266\\177\\-120.862\\-241.2734\\177\\-121.6916\\-239.3203\\177\\-122.7445\\-237.3672\\177\\-123.2879\\-235.4141\\177\\-124.1234\\-233.4609\\177\\-124.8455\\-231.5078\\177\\-125.3551\\-229.5547\\177\\-126.2695\\-227.6016\\177\\-127.364\\-223.6953\\177\\-128.0805\\-221.7422\\177\\-128.5549\\-219.7891\\177\\-129.5046\\-213.9297\\177\\-130.0135\\-211.9766\\177\\-130.4006\\-210.0234\\177\\-130.6676\\-208.0703\\177\\-131.2188\\-202.2109\\177\\-131.7368\\-198.3047\\177\\-132.1289\\-194.3984\\177\\-132.3932\\-188.5391\\177\\-132.4463\\-182.6797\\177\\-132.3853\\-178.7734\\177\\-132.1928\\-174.8672\\177\\-131.9975\\-172.9141\\177\\-131.4026\\-169.0078\\177\\-130.9781\\-165.1016\\177\\-130.6345\\-161.1953\\177\\-130.3236\\-159.2422\\177\\-129.3425\\-155.3359\\177\\-128.6139\\-151.4297\\177\\-128.039\\-149.4766\\177\\-127.2579\\-147.5234\\177\\-126.7338\\-145.5703\\177\\-125.179\\-141.6641\\177\\-124.6449\\-139.7109\\177\\-123.6792\\-137.7578\\177\\-122.3888\\-133.8516\\177\\-121.2658\\-131.8984\\177\\-120.3664\\-129.9453\\177\\-118.1641\\-126.395\\177\\-117.8733\\-126.0391\\177\\-116.9529\\-124.0859\\177\\-115.6237\\-122.1328\\177\\-114.4333\\-120.1797\\177\\-112.8956\\-118.2266\\177\\-111.2241\\-116.2734\\177\\-110.3516\\-115.0647\\177\\-107.8575\\-112.3672\\177\\-104.4922\\-109.1406\\177\\-102.5391\\-107.5807\\177\\-100.5859\\-106.3925\\177\\-98.63281\\-105.3845\\177\\-96.67969\\-104.1255\\177\\-94.72656\\-103.2817\\177\\-92.77344\\-102.2542\\177\\-90.82031\\-101.6835\\177\\-88.86719\\-101.2331\\177\\-86.91406\\-100.5177\\177\\-84.96094\\-99.97897\\177\\-81.05469\\-99.3904\\177\\-79.10156\\-98.93227\\177\\-77.14844\\-98.32832\\177\\-75.19531\\-97.98282\\177\\-69.33594\\-97.19711\\177\\-65.42969\\-96.41666\\177\\-63.47656\\-96.20592\\177\\-53.71094\\-95.40169\\177\\-49.80469\\-95.05475\\177\\-45.89844\\-94.64633\\177\\-41.99219\\-94.43584\\177\\-38.08594\\-94.34091\\177\\-34.17969\\-94.33377\\177\\-28.32031\\-94.37823\\177\\-24.41406\\-94.47062\\177\\-22.46094\\-94.58624\\177\\-20.50781\\-94.82876\\177\\-14.64844\\-95.71511\\177\\-12.69531\\-96.06696\\177\\-10.74219\\-96.67561\\177\\-8.789063\\-97.49805\\177\\-6.835938\\-98.16856\\177\\-4.882813\\-99.25969\\177\\0.9765625\\-100.8362\\177\\2.929688\\-100.9927\\177\\4.882813\\-100.8646\\177\\8.789063\\-99.97473\\177\\10.74219\\-99.39561\\177\\12.69531\\-98.54562\\177\\14.64844\\-97.82909\\177\\16.60156\\-97.34361\\177\\18.55469\\-96.73456\\177\\20.50781\\-96.23512\\177\\22.46094\\-95.9342\\177\\26.36719\\-95.53339\\177\\30.27344\\-95.06706\\177\\38.08594\\-94.28098\\177\\41.99219\\-94.0613\\177\\49.80469\\-93.87169\\177\\53.71094\\-93.84191\\177\\59.57031\\-93.86609\\177\\65.42969\\-94.01873\\177\\69.33594\\-94.3041\\177\\71.28906\\-94.6027\\177\\75.19531\\-95.42168\\177\\79.10156\\-96.04971\\177\\81.05469\\-96.66142\\177\\83.00781\\-97.41067\\177\\84.96094\\-97.99696\\177\\86.91406\\-98.88311\\177\\90.82031\\-100.3351\\177\\92.77344\\-101.4059\\177\\94.72656\\-102.2533\\177\\98.07832\\-104.5547\\177\\98.63281\\-105.0028\\177\\100.5859\\-106.0818\\177\\104.4922\\-108.9967\\177\\108.3567\\-112.3672\\177\\110.377\\-114.3203\\177\\114.2578\\-118.695\\177\\115.5086\\-120.1797\\177\\116.9577\\-122.1328\\177\\117.9181\\-124.0859\\177\\120.3166\\-127.9922\\177\\122.1549\\-131.8984\\177\\122.9377\\-133.8516\\177\\123.4037\\-135.8047\\177\\124.3234\\-137.7578\\177\\125.4025\\-141.6641\\177\\126.2374\\-143.6172\\177\\127.219\\-147.5234\\177\\128.2725\\-151.4297\\177\\128.5749\\-153.3828\\177\\129.1367\\-159.2422\\177\\129.4347\\-163.1484\\177\\129.9991\\-169.0078\\177\\130.1379\\-170.9609\\177\\130.331\\-176.8203\\177\\130.331\\-182.6797\\177\\130.2748\\-186.5859\\177\\130.1525\\-190.4922\\177\\130.0841\\-194.3984\\177\\129.8125\\-200.2578\\177\\129.6699\\-204.1641\\177\\129.0415\\-213.9297\\177\\128.5003\\-219.7891\\177\\128.2021\\-221.7422\\177\\127.6287\\-223.6953\\177\\126.7488\\-227.6016\\177\\126.2004\\-229.5547\\177\\125.2975\\-231.5078\\177\\124.8079\\-233.4609\\177\\123.2167\\-237.3672\\177\\122.665\\-239.3203\\177\\121.5728\\-241.2734\\177\\120.7031\\-243.2266\\177\\119.3305\\-245.1797\\177\\118.2726\\-247.1328\\177\\114.7702\\-252.9922\\177\\112.3047\\-256.2347\\177\\111.7188\\-256.8984\\177\\110.5453\\-258.8516\\177\\109.1551\\-260.8047\\177\\105.7414\\-264.7109\\177\\104.1297\\-266.6641\\177\\102.6476\\-268.6172\\177\\100.5859\\-270.5936\\177\\98.67126\\-272.5234\\177\\96.67969\\-274.6489\\177\\92.77344\\-277.8772\\177\\90.82031\\-279.6737\\177\\88.86719\\-281.3575\\177\\86.91406\\-282.875\\177\\84.96094\\-284.1519\\177\\81.05469\\-287.0413\\177\\79.10156\\-288.2823\\177\\77.14844\\-289.2601\\177\\75.19531\\-290.5227\\177\\73.24219\\-291.4605\\177\\71.28906\\-292.7842\\177\\69.33594\\-293.71\\177\\67.38281\\-294.7613\\177\\65.42969\\-295.3685\\177\\63.47656\\-296.3795\\177\\61.52344\\-297.0015\\177\\59.57031\\-297.7873\\177\\57.61719\\-298.6859\\177\\55.66406\\-299.2965\\177\\53.71094\\-300.1794\\177\\49.80469\\-301.1428\\177\\47.85156\\-301.705\\177\\45.89844\\-302.37\\177\\43.94531\\-302.7411\\177\\41.99219\\-303.0022\\177\\40.03906\\-303.4661\\177\\38.08594\\-304.1404\\177\\36.13281\\-304.5182\\177\\32.22656\\-305.0953\\177\\28.32031\\-306.0084\\177\\26.36719\\-306.2948\\177\\22.46094\\-306.6823\\177\\12.69531\\-307.5231\\177\\10.74219\\-307.7184\\177\\6.835938\\-307.9274\\177\\0.9765625\\-308.0416\\177\\-4.882813\\-307.9557\\177"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002212"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "244"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "215"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-12.69531\\-307.7484\\179\\-20.50781\\-306.9019\\179\\-26.36719\\-306.3059\\179\\-28.32031\\-305.9971\\179\\-30.27344\\-305.4739\\179\\-32.22656\\-305.0484\\179\\-36.13281\\-304.4158\\179\\-40.03906\\-303.1851\\179\\-43.94531\\-302.4898\\179\\-47.85156\\-301.163\\179\\-49.80469\\-300.7282\\179\\-51.75781\\-300.1472\\179\\-53.71094\\-299.2029\\179\\-55.66406\\-298.5669\\179\\-57.61719\\-297.5546\\179\\-59.57031\\-296.8492\\179\\-63.47656\\-295.1072\\179\\-65.42969\\-294.3998\\179\\-67.38281\\-293.2614\\179\\-69.33594\\-292.3607\\179\\-72.88954\\-290.1016\\179\\-73.24219\\-289.8152\\179\\-75.19531\\-288.926\\179\\-77.14844\\-287.6164\\179\\-79.10156\\-286.4247\\179\\-82.00097\\-284.2422\\179\\-83.00781\\-283.3988\\179\\-86.91406\\-280.6139\\179\\-89.59029\\-278.3828\\179\\-94.72656\\-273.908\\179\\-96.2021\\-272.5234\\179\\-98.63281\\-270.1077\\179\\-102.2611\\-266.6641\\179\\-103.9931\\-264.7109\\179\\-107.666\\-260.8047\\179\\-109.3686\\-258.8516\\179\\-112.4148\\-254.9453\\179\\-115.2649\\-251.0391\\179\\-116.6346\\-249.0859\\179\\-117.5626\\-247.1328\\179\\-118.9242\\-245.1797\\179\\-121.1379\\-241.2734\\179\\-122.1401\\-239.3203\\179\\-122.9741\\-237.3672\\179\\-123.5453\\-235.4141\\179\\-124.5021\\-233.4609\\179\\-125.0647\\-231.5078\\179\\-125.7289\\-229.5547\\179\\-126.5855\\-227.6016\\179\\-127.1042\\-225.6484\\179\\-128.4056\\-221.7422\\179\\-129.3945\\-215.8828\\179\\-130.3443\\-211.9766\\179\\-130.6345\\-210.0234\\179\\-131.2476\\-204.1641\\179\\-131.9167\\-200.2578\\179\\-132.172\\-198.3047\\179\\-132.4348\\-194.3984\\179\\-132.6082\\-188.5391\\179\\-132.6201\\-180.7266\\179\\-132.4496\\-174.8672\\179\\-132.1178\\-170.9609\\179\\-131.7368\\-169.0078\\179\\-131.1335\\-165.1016\\179\\-130.7527\\-161.1953\\179\\-130.494\\-159.2422\\179\\-130.0841\\-157.2891\\179\\-129.5046\\-155.3359\\179\\-128.726\\-151.4297\\179\\-128.2286\\-149.4766\\179\\-127.4231\\-147.5234\\179\\-126.2374\\-143.6172\\179\\-125.3045\\-141.6641\\179\\-124.7672\\-139.7109\\179\\-123.8632\\-137.7578\\179\\-123.1439\\-135.8047\\179\\-122.5318\\-133.8516\\179\\-121.4095\\-131.8984\\179\\-120.5665\\-129.9453\\179\\-119.246\\-127.9922\\179\\-117.0631\\-124.0859\\179\\-115.7964\\-122.1328\\179\\-114.6356\\-120.1797\\179\\-111.3641\\-116.2734\\179\\-110.3516\\-114.9095\\179\\-107.9685\\-112.3672\\179\\-104.4922\\-109.083\\179\\-102.5391\\-107.5541\\179\\-100.5859\\-106.3781\\179\\-98.63281\\-105.3845\\179\\-96.67969\\-104.1603\\179\\-94.72656\\-103.3268\\179\\-92.77344\\-102.3254\\179\\-90.82031\\-101.7354\\179\\-88.86719\\-101.2974\\179\\-84.96094\\-100.046\\179\\-81.05469\\-99.47767\\179\\-79.10156\\-99.08727\\179\\-77.14844\\-98.49587\\179\\-75.19531\\-98.10297\\179\\-69.33594\\-97.36919\\179\\-65.42969\\-96.63368\\179\\-61.52344\\-96.14418\\179\\-49.80469\\-95.27734\\179\\-45.89844\\-94.9329\\179\\-41.99219\\-94.65936\\179\\-38.08594\\-94.53774\\179\\-32.22656\\-94.56481\\179\\-28.32031\\-94.61761\\179\\-24.41406\\-94.79707\\179\\-22.46094\\-94.96052\\179\\-16.60156\\-95.63801\\179\\-12.69531\\-96.30611\\179\\-10.74219\\-97.08099\\179\\-8.789063\\-97.71875\\179\\-6.835938\\-98.45795\\179\\-4.882813\\-99.47305\\179\\-2.929688\\-99.98288\\179\\-0.9494357\\-100.6484\\179\\0.9765625\\-101.1266\\179\\2.929688\\-101.2548\\179\\4.882813\\-101.16\\179\\6.835938\\-100.8239\\179\\10.74219\\-99.65974\\179\\12.69531\\-98.95824\\179\\14.64844\\-98.10822\\179\\18.55469\\-97.13932\\179\\20.50781\\-96.56268\\179\\22.46094\\-96.16737\\179\\24.41406\\-95.92936\\179\\28.32031\\-95.57149\\179\\34.17969\\-95.10522\\179\\38.08594\\-94.53399\\179\\40.03906\\-94.35883\\179\\45.89844\\-94.1235\\179\\49.80469\\-94.0066\\179\\59.57031\\-93.95115\\179\\65.42969\\-94.14012\\179\\69.33594\\-94.52338\\179\\73.24219\\-95.24435\\179\\77.14844\\-95.82666\\179\\79.10156\\-96.22012\\179\\83.00781\\-97.55965\\179\\84.96094\\-98.11291\\179\\86.91406\\-99.03957\\179\\88.86719\\-99.68372\\179\\90.82031\\-100.4562\\179\\92.77344\\-101.4776\\179\\94.72656\\-102.3334\\179\\96.67969\\-103.6188\\179\\98.63281\\-105.0594\\179\\100.5859\\-106.1348\\179\\102.5391\\-107.5227\\179\\104.4922\\-109.0161\\179\\108.3246\\-112.3672\\179\\110.377\\-114.3203\\179\\114.2578\\-118.6508\\179\\115.5354\\-120.1797\\179\\116.9859\\-122.1328\\179\\119.1782\\-126.0391\\179\\120.4533\\-127.9922\\179\\121.2792\\-129.9453\\179\\122.309\\-131.8984\\179\\123.0167\\-133.8516\\179\\123.5188\\-135.8047\\179\\124.4796\\-137.7578\\179\\125.5691\\-141.6641\\179\\126.4531\\-143.6172\\179\\127.4116\\-147.5234\\179\\128.039\\-149.4766\\179\\128.4629\\-151.4297\\179\\128.7302\\-153.3828\\179\\129.1246\\-157.2891\\179\\129.4691\\-161.1953\\179\\129.9537\\-165.1016\\179\\130.1379\\-167.0547\\179\\130.4509\\-172.9141\\179\\130.54\\-178.7734\\179\\130.4814\\-186.5859\\179\\130.3777\\-192.4453\\179\\130.213\\-198.3047\\179\\129.9531\\-204.1641\\179\\129.6048\\-208.0703\\179\\129.1565\\-213.9297\\179\\128.6207\\-219.7891\\179\\128.3464\\-221.7422\\179\\127.2916\\-225.6484\\179\\126.3436\\-229.5547\\179\\125.3976\\-231.5078\\179\\124.8657\\-233.4609\\179\\124.1379\\-235.4141\\179\\123.2879\\-237.3672\\179\\122.7521\\-239.3203\\179\\121.6758\\-241.2734\\179\\120.8082\\-243.2266\\179\\119.4269\\-245.1797\\179\\118.4115\\-247.1328\\179\\115.9948\\-251.0391\\179\\114.8952\\-252.9922\\179\\112.3047\\-256.4338\\179\\111.8841\\-256.8984\\179\\110.7465\\-258.8516\\179\\109.2926\\-260.8047\\179\\105.9502\\-264.7109\\179\\102.9251\\-268.6172\\179\\100.5859\\-270.9284\\179\\96.67969\\-274.9462\\179\\94.72656\\-276.672\\179\\92.77344\\-278.2628\\179\\90.45516\\-280.3359\\179\\87.97269\\-282.2891\\179\\84.96094\\-284.5079\\179\\82.57473\\-286.1953\\179\\79.62536\\-288.1484\\179\\79.10156\\-288.563\\179\\77.14844\\-289.457\\179\\75.19531\\-290.7508\\179\\73.24219\\-291.7516\\179\\71.28906\\-292.9924\\179\\69.33594\\-294.107\\179\\67.38281\\-294.9427\\179\\65.42969\\-295.6117\\179\\63.47656\\-296.614\\179\\61.52344\\-297.2085\\179\\59.57031\\-298.1997\\179\\55.66406\\-299.5891\\179\\53.71094\\-300.4037\\179\\49.80469\\-301.3288\\179\\47.85156\\-302.0216\\179\\45.89844\\-302.5497\\179\\41.99219\\-303.1757\\179\\38.08594\\-304.3539\\179\\34.17969\\-304.9423\\179\\32.22656\\-305.2986\\179\\30.27344\\-305.8213\\179\\28.32031\\-306.2002\\179\\26.36719\\-306.4278\\179\\14.64844\\-307.6105\\179\\10.74219\\-307.9796\\179\\4.882813\\-308.1906\\179\\0.9765625\\-308.253\\179\\-2.929688\\-308.2222\\179\\-6.835938\\-308.1319\\179\\-10.74219\\-307.9149\\179"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002211"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "248"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "216"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-14.64844\\-307.8619\\181\\-20.50781\\-307.1261\\181\\-28.32031\\-306.2628\\181\\-30.27344\\-305.9009\\181\\-32.22656\\-305.35\\181\\-34.17969\\-304.9402\\181\\-38.08594\\-304.2354\\181\\-40.03906\\-303.524\\181\\-41.99219\\-303.0001\\181\\-43.94531\\-302.6826\\181\\-45.89844\\-302.2179\\181\\-47.85156\\-301.4506\\181\\-51.75781\\-300.447\\181\\-53.71094\\-299.5528\\181\\-57.61719\\-298.0361\\181\\-59.57031\\-297.0527\\181\\-61.52344\\-296.3898\\181\\-63.47656\\-295.312\\181\\-65.42969\\-294.6693\\181\\-67.38281\\-293.5479\\181\\-69.33594\\-292.6587\\181\\-71.28906\\-291.3022\\181\\-76.86492\\-288.1484\\181\\-79.10156\\-286.745\\181\\-79.72569\\-286.1953\\181\\-82.37457\\-284.2422\\181\\-83.00781\\-283.6714\\181\\-86.91406\\-280.9503\\181\\-89.90077\\-278.3828\\181\\-92.77344\\-275.8314\\181\\-94.46101\\-274.4766\\181\\-96.60645\\-272.5234\\181\\-98.63281\\-270.4627\\181\\-100.5859\\-268.768\\181\\-102.7202\\-266.6641\\181\\-104.3691\\-264.7109\\181\\-108.3984\\-260.3571\\181\\-112.3047\\-255.5829\\181\\-114.2578\\-252.9824\\181\\-116.9159\\-249.0859\\181\\-117.9445\\-247.1328\\181\\-119.179\\-245.1797\\181\\-120.5246\\-243.2266\\181\\-121.4293\\-241.2734\\181\\-122.542\\-239.3203\\181\\-123.1873\\-237.3672\\181\\-124.7836\\-233.4609\\181\\-125.3275\\-231.5078\\181\\-126.2489\\-229.5547\\181\\-127.402\\-225.6484\\181\\-128.1738\\-223.6953\\181\\-128.6563\\-221.7422\\181\\-129.3072\\-217.8359\\181\\-129.7511\\-215.8828\\181\\-130.2994\\-213.9297\\181\\-130.6077\\-211.9766\\181\\-131.0379\\-208.0703\\181\\-131.6246\\-204.1641\\181\\-132.0476\\-202.2109\\181\\-132.3184\\-200.2578\\181\\-132.4888\\-198.3047\\181\\-132.6695\\-194.3984\\181\\-132.847\\-186.5859\\181\\-132.8273\\-180.7266\\181\\-132.7295\\-176.8203\\181\\-132.5504\\-172.9141\\181\\-132.4088\\-170.9609\\181\\-132.1399\\-169.0078\\181\\-131.37\\-165.1016\\181\\-131.0852\\-163.1484\\181\\-130.6417\\-159.2422\\181\\-130.3101\\-157.2891\\181\\-129.2591\\-153.3828\\181\\-128.4395\\-149.4766\\181\\-127.6615\\-147.5234\\181\\-126.4531\\-143.6172\\181\\-125.4945\\-141.6641\\181\\-124.9007\\-139.7109\\181\\-124.1521\\-137.7578\\181\\-123.241\\-135.8047\\181\\-122.6894\\-133.8516\\181\\-121.5978\\-131.8984\\181\\-120.7406\\-129.9453\\181\\-119.4171\\-127.9922\\181\\-118.3803\\-126.0391\\181\\-116.2109\\-122.3582\\181\\-114.8358\\-120.1797\\181\\-114.2578\\-119.555\\181\\-110.3516\\-114.7424\\181\\-108.1139\\-112.3672\\181\\-104.4922\\-109.0238\\181\\-102.5391\\-107.5288\\181\\-100.5859\\-106.3501\\181\\-98.63281\\-105.3958\\181\\-96.67969\\-104.183\\181\\-94.72656\\-103.3636\\181\\-92.77344\\-102.3853\\181\\-90.82031\\-101.7819\\181\\-88.86719\\-101.3389\\181\\-84.96094\\-100.1176\\181\\-83.00781\\-99.77348\\181\\-81.05469\\-99.54239\\181\\-79.10156\\-99.21159\\181\\-75.19531\\-98.22447\\181\\-73.24219\\-97.95056\\181\\-67.38281\\-97.24526\\181\\-63.47656\\-96.53049\\181\\-59.57031\\-96.10387\\181\\-45.89844\\-95.18918\\181\\-41.99219\\-94.94682\\181\\-38.08594\\-94.82813\\181\\-32.22656\\-94.84332\\181\\-28.32031\\-94.9329\\181\\-24.41406\\-95.12843\\181\\-18.55469\\-95.63015\\181\\-14.64844\\-96.13818\\181\\-12.69531\\-96.64745\\181\\-10.74219\\-97.38377\\181\\-8.789063\\-97.93172\\181\\-6.835938\\-98.84027\\181\\-4.882813\\-99.63721\\181\\-2.929688\\-100.1837\\181\\-0.9765625\\-100.9572\\181\\0.9765625\\-101.3396\\181\\2.929688\\-101.448\\181\\4.882813\\-101.3886\\181\\6.835938\\-101.1401\\181\\8.789063\\-100.487\\181\\12.69531\\-99.30971\\181\\14.64844\\-98.42478\\181\\16.60156\\-97.86523\\181\\22.46094\\-96.48773\\181\\26.36719\\-95.93898\\181\\32.22656\\-95.55055\\181\\36.13281\\-95.17562\\181\\40.03906\\-94.70243\\181\\43.94531\\-94.41936\\181\\47.85156\\-94.21726\\181\\57.61719\\-94.05355\\181\\59.57031\\-94.05355\\181\\63.47656\\-94.16127\\181\\67.38281\\-94.45885\\181\\69.33594\\-94.73481\\181\\73.24219\\-95.39242\\181\\77.14844\\-95.95536\\181\\79.10156\\-96.38412\\181\\81.05469\\-97.12376\\181\\84.96094\\-98.24696\\181\\86.91406\\-99.16698\\181\\88.86719\\-99.78883\\181\\90.82031\\-100.5919\\181\\94.72656\\-102.4105\\181\\96.67969\\-103.6537\\181\\98.63281\\-105.1044\\181\\100.5859\\-106.1708\\181\\102.5391\\-107.5354\\181\\104.4922\\-109.0482\\181\\108.3405\\-112.3672\\181\\110.3516\\-114.2598\\181\\114.2578\\-118.5928\\181\\115.5802\\-120.1797\\181\\117.0185\\-122.1328\\181\\119.262\\-126.0391\\181\\120.5665\\-127.9922\\181\\121.3793\\-129.9453\\181\\122.4459\\-131.8984\\181\\123.6651\\-135.8047\\181\\124.6166\\-137.7578\\181\\125.1248\\-139.7109\\181\\125.7957\\-141.6641\\181\\126.6151\\-143.6172\\181\\127.0812\\-145.5703\\181\\128.2831\\-149.4766\\181\\128.8775\\-153.3828\\181\\129.5046\\-159.2422\\181\\130.0418\\-163.1484\\181\\130.3875\\-167.0547\\181\\130.5603\\-170.9609\\181\\130.6676\\-176.8203\\181\\130.6745\\-182.6797\\181\\130.5958\\-190.4922\\181\\130.4289\\-198.3047\\181\\130.2857\\-202.2109\\181\\130.0556\\-206.1172\\181\\129.4585\\-211.9766\\181\\128.7369\\-219.7891\\181\\128.4801\\-221.7422\\181\\128.0527\\-223.6953\\181\\127.4235\\-225.6484\\181\\126.459\\-229.5547\\181\\125.5006\\-231.5078\\181\\124.2872\\-235.4141\\181\\123.3788\\-237.3672\\181\\122.8285\\-239.3203\\181\\121.814\\-241.2734\\181\\120.8995\\-243.2266\\181\\119.5431\\-245.1797\\181\\118.551\\-247.1328\\181\\117.2668\\-249.0859\\181\\115.0264\\-252.9922\\181\\112.1094\\-256.8984\\181\\110.9106\\-258.8516\\181\\108.3984\\-262.1475\\181\\106.2124\\-264.7109\\181\\104.7823\\-266.6641\\181\\103.1599\\-268.6172\\181\\101.2968\\-270.5703\\181\\100.5859\\-271.1674\\181\\98.63281\\-273.2509\\181\\95.33039\\-276.4297\\181\\93.04926\\-278.3828\\181\\90.82031\\-280.3944\\181\\86.91406\\-283.2478\\181\\84.96094\\-284.7731\\181\\82.97937\\-286.1953\\181\\81.05469\\-287.419\\181\\79.10156\\-288.7799\\181\\77.14844\\-289.6953\\181\\76.64696\\-290.1016\\181\\73.37182\\-292.0547\\181\\71.28906\\-293.2093\\181\\69.33594\\-294.4321\\181\\67.38281\\-295.111\\181\\63.47656\\-296.8065\\181\\61.52344\\-297.4638\\181\\59.57031\\-298.4828\\181\\57.61719\\-299.0849\\181\\55.66406\\-299.9338\\181\\53.71094\\-300.5895\\181\\51.75781\\-301.0235\\181\\49.80469\\-301.5652\\181\\47.85156\\-302.2818\\181\\45.89844\\-302.6826\\181\\43.94531\\-302.9734\\181\\41.99219\\-303.3867\\181\\40.03906\\-304.099\\181\\38.08594\\-304.5059\\181\\34.17969\\-305.1066\\181\\30.27344\\-306.0521\\181\\28.32031\\-306.3362\\181\\20.50781\\-307.1946\\181\\16.60156\\-307.6875\\181\\12.69531\\-308.0501\\181\\6.835938\\-308.312\\181\\0.9765625\\-308.406\\181\\-2.929688\\-308.3983\\181\\-6.835938\\-308.312\\181\\-10.74219\\-308.1581\\181"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002210"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "247"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "217"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.60156\\-307.9292\\183\\-20.50781\\-307.3937\\183\\-30.27344\\-306.1974\\183\\-32.22656\\-305.7641\\183\\-34.17969\\-305.203\\183\\-38.08594\\-304.497\\183\\-40.03906\\-303.9851\\183\\-41.99219\\-303.2447\\183\\-45.89844\\-302.494\\183\\-49.80469\\-301.1505\\183\\-51.75781\\-300.6683\\183\\-53.71094\\-300.0191\\183\\-55.66406\\-299.0826\\183\\-57.61719\\-298.4228\\183\\-59.57031\\-297.309\\183\\-61.52344\\-296.6519\\183\\-63.47656\\-295.5859\\183\\-65.42969\\-294.8752\\183\\-69.33594\\-292.8848\\183\\-71.28906\\-291.5664\\183\\-73.24219\\-290.5547\\183\\-75.19531\\-289.262\\183\\-77.14844\\-288.2981\\183\\-79.10156\\-286.9992\\183\\-83.00781\\-283.9864\\183\\-84.96094\\-282.684\\183\\-86.91406\\-281.2117\\183\\-88.86719\\-279.5585\\183\\-90.82031\\-277.7526\\183\\-92.77344\\-276.1217\\183\\-94.72656\\-274.6978\\183\\-96.67969\\-272.8738\\183\\-98.961\\-270.5703\\183\\-100.5859\\-269.1543\\183\\-103.1081\\-266.6641\\183\\-104.4922\\-265.0609\\183\\-108.4699\\-260.8047\\183\\-109.8737\\-258.8516\\183\\-112.3047\\-255.9673\\183\\-114.6782\\-252.9922\\183\\-118.4346\\-247.1328\\183\\-119.4761\\-245.1797\\183\\-120.8511\\-243.2266\\183\\-121.7863\\-241.2734\\183\\-122.8381\\-239.3203\\183\\-123.427\\-237.3672\\183\\-124.4154\\-235.4141\\183\\-125.7045\\-231.5078\\183\\-126.6071\\-229.5547\\183\\-127.1517\\-227.6016\\183\\-128.5009\\-223.6953\\183\\-129.213\\-219.7891\\183\\-129.6535\\-217.8359\\183\\-130.2178\\-215.8828\\183\\-130.5958\\-213.9297\\183\\-131.3382\\-208.0703\\183\\-132.1615\\-204.1641\\183\\-132.4273\\-202.2109\\183\\-132.7431\\-198.3047\\183\\-132.9283\\-194.3984\\183\\-133.0686\\-188.5391\\183\\-133.0862\\-182.6797\\183\\-132.9542\\-176.8203\\183\\-132.63\\-170.9609\\183\\-132.172\\-167.0547\\183\\-131.2982\\-163.1484\\183\\-130.5065\\-157.2891\\183\\-130.0278\\-155.3359\\183\\-129.4316\\-153.3828\\183\\-128.6139\\-149.4766\\183\\-128.0117\\-147.5234\\183\\-127.2015\\-145.5703\\183\\-126.6506\\-143.6172\\183\\-125.7668\\-141.6641\\183\\-125.038\\-139.7109\\183\\-124.4154\\-137.7578\\183\\-123.3871\\-135.8047\\183\\-122.8503\\-133.8516\\183\\-120.923\\-129.9453\\183\\-119.665\\-127.9922\\183\\-118.6586\\-126.0391\\183\\-117.3279\\-124.0859\\183\\-116.3618\\-122.1328\\183\\-115.0076\\-120.1797\\183\\-110.3516\\-114.5383\\183\\-108.2601\\-112.3672\\183\\-104.4922\\-108.9595\\183\\-102.5391\\-107.5096\\183\\-100.5859\\-106.3081\\183\\-98.63281\\-105.3893\\183\\-96.67969\\-104.1728\\183\\-94.72656\\-103.3905\\183\\-92.77344\\-102.4376\\183\\-90.82031\\-101.8168\\183\\-86.91406\\-100.8497\\183\\-84.96094\\-100.1941\\183\\-83.00781\\-99.82882\\183\\-79.10156\\-99.31302\\183\\-77.14844\\-98.89208\\183\\-75.19531\\-98.36979\\183\\-73.24219\\-98.04256\\183\\-67.38281\\-97.39141\\183\\-65.42969\\-97.1084\\183\\-61.52344\\-96.43822\\183\\-59.57031\\-96.2225\\183\\-55.66406\\-95.94939\\183\\-47.85156\\-95.47324\\183\\-41.99219\\-95.19989\\183\\-38.08594\\-95.11459\\183\\-32.22656\\-95.10296\\183\\-26.36719\\-95.27411\\183\\-22.46094\\-95.51266\\183\\-18.55469\\-95.82465\\183\\-16.60156\\-96.05001\\183\\-14.64844\\-96.38306\\183\\-12.69531\\-97.07645\\183\\-8.789063\\-98.15905\\183\\-6.835938\\-99.17376\\183\\-2.929688\\-100.4606\\183\\-0.9765625\\-101.1998\\183\\0.9765625\\-101.5172\\183\\2.929688\\-101.6191\\183\\4.882813\\-101.5833\\183\\6.835938\\-101.373\\183\\8.789063\\-100.8407\\183\\10.74219\\-100.069\\183\\12.69531\\-99.5437\\183\\16.60156\\-98.11389\\183\\18.55469\\-97.64063\\183\\20.50781\\-97.28882\\183\\24.41406\\-96.4777\\183\\26.36719\\-96.18677\\183\\30.27344\\-95.90126\\183\\41.99219\\-94.94928\\183\\43.94531\\-94.70313\\183\\47.85156\\-94.42457\\183\\53.71094\\-94.23934\\183\\57.61719\\-94.17871\\183\\61.52344\\-94.22266\\183\\65.42969\\-94.43331\\183\\67.38281\\-94.61629\\183\\71.28906\\-95.27411\\183\\77.14844\\-96.08543\\183\\79.10156\\-96.57703\\183\\81.05469\\-97.29441\\183\\83.00781\\-97.7765\\183\\84.96094\\-98.38932\\183\\86.91406\\-99.28125\\183\\88.86719\\-99.86127\\183\\90.69653\\-100.6484\\183\\94.72656\\-102.5202\\183\\96.67969\\-103.6937\\183\\98.63281\\-105.1532\\183\\100.5859\\-106.2177\\183\\102.5391\\-107.5482\\183\\104.4922\\-109.0664\\183\\108.34\\-112.3672\\183\\110.3516\\-114.2109\\183\\114.2578\\-118.5354\\183\\116.2109\\-120.9165\\183\\118.3025\\-124.0859\\183\\119.3326\\-126.0391\\183\\120.6727\\-127.9922\\183\\121.4844\\-129.9453\\183\\122.575\\-131.8984\\183\\123.1439\\-133.8516\\183\\123.848\\-135.8047\\183\\124.7403\\-137.7578\\183\\125.2484\\-139.7109\\183\\126.0851\\-141.6641\\183\\126.7588\\-143.6172\\183\\127.2427\\-145.5703\\183\\127.9373\\-147.5234\\183\\128.4716\\-149.4766\\183\\129.0128\\-153.3828\\183\\129.4585\\-157.2891\\183\\130.099\\-161.1953\\183\\130.3236\\-163.1484\\183\\130.5804\\-167.0547\\183\\130.7043\\-170.9609\\183\\130.7932\\-176.8203\\183\\130.799\\-182.6797\\183\\130.7527\\-188.5391\\183\\130.6417\\-196.3516\\183\\130.4814\\-202.2109\\183\\130.2748\\-206.1172\\183\\130.1104\\-208.0703\\183\\129.4244\\-213.9297\\183\\128.8491\\-219.7891\\183\\128.2508\\-223.6953\\183\\127.5823\\-225.6484\\183\\126.5669\\-229.5547\\183\\125.6378\\-231.5078\\183\\124.4363\\-235.4141\\183\\123.4663\\-237.3672\\183\\122.9082\\-239.3203\\183\\122.0703\\-241.1798\\183\\120.9834\\-243.2266\\183\\119.6699\\-245.1797\\183\\118.686\\-247.1328\\183\\117.3816\\-249.0859\\183\\116.4032\\-251.0391\\183\\115.1482\\-252.9922\\183\\113.7174\\-254.9453\\183\\111.0647\\-258.8516\\183\\108.3984\\-262.4622\\183\\104.4922\\-267.3177\\183\\101.5562\\-270.5703\\183\\100.5859\\-271.439\\183\\98.63281\\-273.5255\\183\\95.62296\\-276.4297\\183\\94.72656\\-277.1321\\183\\90.82031\\-280.7161\\183\\88.65327\\-282.2891\\183\\86.91406\\-283.4304\\183\\83.00781\\-286.5026\\183\\81.05469\\-287.6375\\183\\79.10156\\-288.9757\\183\\77.14844\\-290.0121\\183\\75.19531\\-291.1763\\183\\73.24219\\-292.5272\\183\\71.28906\\-293.4723\\183\\69.33594\\-294.6651\\183\\67.38281\\-295.2786\\183\\65.42969\\-296.3092\\183\\63.47656\\-296.9807\\183\\59.57031\\-298.6922\\183\\57.61719\\-299.3134\\183\\55.66406\\-300.21\\183\\53.71094\\-300.7524\\183\\51.75781\\-301.188\\183\\47.85156\\-302.4734\\183\\43.94531\\-303.136\\183\\40.03906\\-304.2984\\183\\36.13281\\-304.9303\\183\\34.17969\\-305.308\\183\\32.22656\\-305.8213\\183\\30.27344\\-306.2148\\183\\28.32031\\-306.4694\\183\\20.50781\\-307.3776\\183\\16.60156\\-307.9274\\183\\12.69531\\-308.2222\\183\\6.835938\\-308.45\\183\\-0.9765625\\-308.5417\\183\\-6.835938\\-308.4622\\183\\-10.74219\\-308.341\\183\\-14.64844\\-308.1115\\183"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002209"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "246"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "218"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-20.50781\\-307.7181\\185\\-24.41406\\-307.1261\\185\\-30.27344\\-306.3936\\185\\-32.22656\\-306.106\\185\\-36.13281\\-305.0701\\185\\-40.03906\\-304.3178\\185\\-41.99219\\-303.6033\\185\\-43.94531\\-303.0183\\185\\-45.89844\\-302.6813\\185\\-47.85156\\-302.2012\\185\\-49.80469\\-301.4146\\185\\-53.71094\\-300.3586\\185\\-55.66406\\-299.3977\\185\\-57.61719\\-298.6814\\185\\-59.57031\\-297.6281\\185\\-61.52344\\-296.8521\\185\\-65.42969\\-295.0637\\185\\-67.38281\\-294.2838\\185\\-67.7562\\-294.0078\\185\\-73.24219\\-290.8214\\185\\-75.19531\\-289.4738\\185\\-77.14844\\-288.5801\\185\\-79.10156\\-287.2192\\185\\-81.05469\\-285.7361\\185\\-83.00781\\-284.4061\\185\\-84.96094\\-282.96\\185\\-88.29886\\-280.3359\\185\\-90.82031\\-278.1072\\185\\-92.87383\\-276.4297\\185\\-94.72656\\-275.0237\\185\\-96.67969\\-273.1861\\185\\-99.29574\\-270.5703\\185\\-101.4579\\-268.6172\\185\\-108.876\\-260.8047\\185\\-111.7497\\-256.8984\\185\\-112.3047\\-256.2957\\185\\-114.9947\\-252.9922\\185\\-116.2523\\-251.0391\\185\\-117.4074\\-249.0859\\185\\-118.7654\\-247.1328\\185\\-119.882\\-245.1797\\185\\-121.1221\\-243.2266\\185\\-122.2567\\-241.2734\\185\\-123.0589\\-239.3203\\185\\-123.7497\\-237.3672\\185\\-124.7145\\-235.4141\\185\\-125.2741\\-233.4609\\185\\-126.2275\\-231.5078\\185\\-127.4852\\-227.6016\\185\\-128.2574\\-225.6484\\185\\-128.7474\\-223.6953\\185\\-129.5245\\-219.7891\\185\\-130.1398\\-217.8359\\185\\-130.5603\\-215.8828\\185\\-131.065\\-211.9766\\185\\-131.37\\-210.0234\\185\\-132.2545\\-206.1172\\185\\-132.5063\\-204.1641\\185\\-132.8779\\-200.2578\\185\\-133.2401\\-194.3984\\185\\-133.4022\\-188.5391\\185\\-133.4022\\-182.6797\\185\\-133.3067\\-178.7734\\185\\-133.1109\\-174.8672\\185\\-132.8273\\-170.9609\\185\\-132.4348\\-167.0547\\185\\-132.1178\\-165.1016\\185\\-131.5741\\-163.1484\\185\\-131.1908\\-161.1953\\185\\-130.6535\\-157.2891\\185\\-130.2776\\-155.3359\\185\\-129.6405\\-153.3828\\185\\-129.1519\\-151.4297\\185\\-128.3033\\-147.5234\\185\\-127.4351\\-145.5703\\185\\-126.8452\\-143.6172\\185\\-126.1382\\-141.6641\\185\\-125.2032\\-139.7109\\185\\-124.6405\\-137.7578\\185\\-123.6258\\-135.8047\\185\\-123.0105\\-133.8516\\185\\-122.2141\\-131.8984\\185\\-120.1172\\-128.1007\\185\\-118.8833\\-126.0391\\185\\-117.5194\\-124.0859\\185\\-116.6426\\-122.1328\\185\\-115.1966\\-120.1797\\185\\-110.3516\\-114.3295\\185\\-108.4589\\-112.3672\\185\\-106.273\\-110.4141\\185\\-104.4922\\-108.9111\\185\\-102.5391\\-107.4906\\185\\-100.5859\\-106.2691\\185\\-98.63281\\-105.3713\\185\\-96.67969\\-104.1653\\185\\-94.72656\\-103.4145\\185\\-92.77344\\-102.4914\\185\\-90.82031\\-101.8401\\185\\-86.91406\\-100.9035\\185\\-84.96094\\-100.2427\\185\\-83.00781\\-99.86601\\185\\-79.10156\\-99.39367\\185\\-77.14844\\-99.04118\\185\\-75.19531\\-98.49587\\185\\-73.24219\\-98.13338\\185\\-65.42969\\-97.26263\\185\\-61.52344\\-96.63368\\185\\-57.61719\\-96.19778\\185\\-53.71094\\-95.94743\\185\\-47.85156\\-95.62691\\185\\-41.99219\\-95.37997\\185\\-34.17969\\-95.2933\\185\\-30.27344\\-95.34266\\185\\-24.41406\\-95.57826\\185\\-20.50781\\-95.83388\\185\\-16.60156\\-96.26567\\185\\-14.71819\\-96.74219\\185\\-12.69531\\-97.38006\\185\\-10.74219\\-97.83219\\185\\-8.789063\\-98.43623\\185\\-6.835938\\-99.40826\\185\\-4.882813\\-99.97044\\185\\-2.929688\\-100.8074\\185\\-0.9765625\\-101.3934\\185\\0.9765625\\-101.6828\\185\\2.929688\\-101.7868\\185\\4.882813\\-101.7471\\185\\6.835938\\-101.5707\\185\\8.789063\\-101.1706\\185\\10.74219\\-100.2992\\185\\14.64844\\-99.12858\\185\\16.60156\\-98.38932\\185\\18.55469\\-97.90424\\185\\26.36719\\-96.51363\\185\\32.22656\\-95.90747\\185\\34.17969\\-95.75446\\185\\41.99219\\-95.26397\\185\\47.85156\\-94.71986\\185\\53.71094\\-94.37249\\185\\55.66406\\-94.31786\\185\\61.52344\\-94.36182\\185\\65.42969\\-94.61629\\185\\67.38281\\-94.82844\\185\\71.28906\\-95.42202\\185\\75.19531\\-95.90279\\185\\77.14844\\-96.22095\\185\\81.05469\\-97.43121\\185\\83.00781\\-97.89201\\185\\84.96094\\-98.53372\\185\\86.91406\\-99.3765\\185\\88.86719\\-99.92663\\185\\92.77344\\-101.6429\\185\\94.71451\\-102.6016\\185\\96.67969\\-103.7399\\185\\98.63281\\-105.1913\\185\\100.5859\\-106.2441\\185\\102.5391\\-107.5679\\185\\104.4922\\-109.0624\\185\\108.3732\\-112.3672\\185\\110.3516\\-114.1784\\185\\112.3047\\-116.2647\\185\\114.2578\\-118.4579\\185\\116.2109\\-120.8516\\185\\118.3942\\-124.0859\\185\\119.4096\\-126.0391\\185\\120.7548\\-127.9922\\185\\121.6038\\-129.9453\\185\\122.6639\\-131.8984\\185\\123.2239\\-133.8516\\185\\124.8318\\-137.7578\\185\\125.3715\\-139.7109\\185\\126.3231\\-141.6641\\185\\127.4322\\-145.5703\\185\\128.1924\\-147.5234\\185\\128.6321\\-149.4766\\185\\129.4111\\-155.3359\\185\\130.0974\\-159.2422\\185\\130.5318\\-163.1484\\185\\130.7174\\-167.0547\\185\\130.8266\\-170.9609\\185\\130.9133\\-176.8203\\185\\130.9077\\-182.6797\\185\\130.8594\\-188.5391\\185\\130.7589\\-196.3516\\185\\130.6226\\-202.2109\\185\\130.3206\\-208.0703\\185\\129.9225\\-211.9766\\185\\129.6048\\-213.9297\\185\\128.9702\\-219.7891\\185\\128.3997\\-223.6953\\185\\127.1666\\-227.6016\\185\\126.6892\\-229.5547\\185\\125.836\\-231.5078\\185\\125.094\\-233.4609\\185\\124.5754\\-235.4141\\185\\123.5764\\-237.3672\\185\\122.987\\-239.3203\\185\\122.2257\\-241.2734\\185\\120.1172\\-244.7944\\185\\118.8064\\-247.1328\\185\\117.5109\\-249.0859\\185\\116.603\\-251.0391\\185\\112.6489\\-256.8984\\185\\109.7887\\-260.8047\\185\\108.488\\-262.7578\\185\\104.4922\\-267.6181\\185\\101.8212\\-270.5703\\185\\99.841\\-272.5234\\185\\98.63281\\-273.8233\\185\\95.94167\\-276.4297\\185\\94.72656\\-277.3944\\185\\92.77344\\-279.2207\\185\\90.82031\\-280.948\\185\\88.86719\\-282.4544\\185\\86.91406\\-283.6589\\185\\83.00781\\-286.7724\\185\\79.10156\\-289.1499\\185\\77.14844\\-290.3892\\185\\75.19531\\-291.4294\\185\\73.24219\\-292.7969\\185\\69.33594\\-294.8562\\185\\67.38281\\-295.5066\\185\\65.42969\\-296.5652\\185\\63.47656\\-297.1703\\185\\61.52344\\-298.207\\185\\57.61719\\-299.5756\\185\\55.66406\\-300.4157\\185\\51.75781\\-301.3795\\185\\49.80469\\-302.1529\\185\\47.85156\\-302.6214\\185\\45.89844\\-302.9023\\185\\43.94531\\-303.3203\\185\\41.99219\\-303.9851\\185\\40.03906\\-304.4535\\185\\36.13281\\-305.0845\\185\\32.22656\\-306.0627\\185\\30.27344\\-306.3616\\185\\24.41406\\-307.0588\\185\\18.55469\\-307.9007\\185\\14.64844\\-308.2441\\185\\8.789063\\-308.5176\\185\\2.929688\\-308.6384\\185\\-2.929688\\-308.6503\\185\\-6.835938\\-308.5963\\185\\-12.69531\\-308.4106\\185\\-16.60156\\-308.145\\185"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002208"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "246"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "219"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-22.46094\\-307.7484\\187\\-26.36719\\-307.0876\\187\\-32.22656\\-306.3169\\187\\-34.17969\\-305.9857\\187\\-36.13281\\-305.3651\\187\\-40.03906\\-304.5497\\187\\-41.99219\\-304.044\\187\\-43.94531\\-303.2505\\187\\-47.85156\\-302.461\\187\\-51.75781\\-301.0848\\187\\-53.71094\\-300.5981\\187\\-55.53288\\-299.8672\\187\\-59.57031\\-298.078\\187\\-61.52344\\-297.0562\\187\\-63.47656\\-296.3229\\187\\-65.42969\\-295.2697\\187\\-67.38281\\-294.5539\\187\\-69.33594\\-293.339\\187\\-71.28906\\-292.3347\\187\\-71.63128\\-292.0547\\187\\-74.79581\\-290.1016\\187\\-75.19531\\-289.7736\\187\\-77.14844\\-288.819\\187\\-83.00781\\-284.7525\\187\\-86.91406\\-281.6622\\187\\-88.71488\\-280.3359\\187\\-93.25761\\-276.4297\\187\\-94.72656\\-275.2565\\187\\-96.67969\\-273.4596\\187\\-98.63281\\-271.4655\\187\\-102.5391\\-267.793\\187\\-105.3863\\-264.7109\\187\\-107.3276\\-262.7578\\187\\-109.1595\\-260.8047\\187\\-110.7407\\-258.8516\\187\\-112.1501\\-256.8984\\187\\-114.2578\\-254.3232\\187\\-116.6458\\-251.0391\\187\\-117.726\\-249.0859\\187\\-118.1641\\-248.5634\\187\\-120.1172\\-245.5106\\187\\-120.4012\\-245.1797\\187\\-121.4012\\-243.2266\\187\\-122.6048\\-241.2734\\187\\-123.2605\\-239.3203\\187\\-124.2084\\-237.3672\\187\\-125.6087\\-233.4609\\187\\-126.5841\\-231.5078\\187\\-127.154\\-229.5547\\187\\-127.9297\\-227.5835\\187\\-128.5747\\-225.6484\\187\\-129.3846\\-221.7422\\187\\-130.0146\\-219.7891\\187\\-130.5025\\-217.8359\\187\\-131.0535\\-213.9297\\187\\-131.3968\\-211.9766\\187\\-132.3184\\-208.0703\\187\\-132.5852\\-206.1172\\187\\-133.1894\\-200.2578\\187\\-133.6929\\-194.3984\\187\\-133.8698\\-190.4922\\187\\-133.9245\\-186.5859\\187\\-133.8976\\-182.6797\\187\\-133.722\\-178.7734\\187\\-133.4252\\-174.8672\\187\\-133.062\\-170.9609\\187\\-132.6481\\-167.0547\\187\\-132.3853\\-165.1016\\187\\-131.9714\\-163.1484\\187\\-131.4202\\-161.1953\\187\\-131.0513\\-159.2422\\187\\-130.4764\\-155.3359\\187\\-129.3257\\-151.4297\\187\\-128.5181\\-147.5234\\187\\-127.054\\-143.6172\\187\\-126.447\\-141.6641\\187\\-125.4502\\-139.7109\\187\\-124.8485\\-137.7578\\187\\-123.189\\-133.8516\\187\\-122.5382\\-131.8984\\187\\-121.3938\\-129.9453\\187\\-120.4622\\-127.9922\\187\\-118.1641\\-124.5249\\187\\-117.8096\\-124.0859\\187\\-116.8553\\-122.1328\\187\\-115.4125\\-120.1797\\187\\-112.3047\\-116.3668\\187\\-110.5197\\-114.3203\\187\\-108.6446\\-112.3672\\187\\-106.4189\\-110.4141\\187\\-103.9855\\-108.4609\\187\\-100.5859\\-106.2298\\187\\-98.63281\\-105.3394\\187\\-96.67969\\-104.1555\\187\\-94.72656\\-103.4316\\187\\-92.77344\\-102.5196\\187\\-90.82031\\-101.8706\\187\\-86.91406\\-100.9646\\187\\-84.96094\\-100.2901\\187\\-83.00781\\-99.88494\\187\\-79.10156\\-99.44176\\187\\-77.14844\\-99.10822\\187\\-75.19531\\-98.60057\\187\\-73.24219\\-98.2157\\187\\-69.33594\\-97.76226\\187\\-65.42969\\-97.37668\\187\\-59.57031\\-96.54275\\187\\-57.61719\\-96.31681\\187\\-53.71094\\-96.05067\\187\\-45.89844\\-95.66138\\187\\-41.99219\\-95.53448\\187\\-38.08594\\-95.4697\\187\\-34.17969\\-95.46194\\187\\-28.32031\\-95.5737\\187\\-24.41406\\-95.74953\\187\\-20.50781\\-95.99789\\187\\-18.55469\\-96.21944\\187\\-16.60156\\-96.55518\\187\\-14.64844\\-97.16705\\187\\-10.74219\\-98.01802\\187\\-6.835938\\-99.57942\\187\\-4.882813\\-100.1703\\187\\-2.929688\\-101.0955\\187\\-0.9765625\\-101.5771\\187\\0.9765625\\-101.849\\187\\2.929688\\-101.9563\\187\\4.882813\\-101.9098\\187\\6.835938\\-101.7354\\187\\8.789063\\-101.4059\\187\\12.69531\\-99.89298\\187\\14.64844\\-99.35686\\187\\18.55469\\-98.15472\\187\\20.50781\\-97.77331\\187\\26.36719\\-96.95998\\187\\28.32031\\-96.60675\\187\\32.22656\\-96.06208\\187\\34.17969\\-95.9011\\187\\41.99219\\-95.47448\\187\\49.80469\\-94.90262\\187\\53.71094\\-94.54492\\187\\57.61719\\-94.49248\\187\\61.52344\\-94.56314\\187\\65.42969\\-94.81288\\187\\71.28906\\-95.55308\\187\\75.19531\\-96.00422\\187\\77.14844\\-96.36313\\187\\79.10156\\-97.02981\\187\\83.00781\\-98.00691\\187\\86.91406\\-99.45421\\187\\88.86719\\-99.98288\\187\\90.82031\\-100.9093\\187\\92.77344\\-101.696\\187\\94.59556\\-102.6016\\187\\96.67969\\-103.7932\\187\\98.63281\\-105.228\\187\\100.5859\\-106.2691\\187\\102.5391\\-107.5807\\187\\104.4922\\-109.0534\\187\\108.4428\\-112.3672\\187\\110.3516\\-114.1465\\187\\112.3047\\-116.1816\\187\\114.2578\\-118.3761\\187\\116.2109\\-120.7674\\187\\118.4784\\-124.0859\\187\\119.5001\\-126.0391\\187\\120.8412\\-127.9922\\187\\121.7098\\-129.9453\\187\\122.7445\\-131.8984\\187\\123.3206\\-133.8516\\187\\124.2604\\-135.8047\\187\\125.5333\\-139.7109\\187\\126.5015\\-141.6641\\187\\127.0255\\-143.6172\\187\\127.6516\\-145.5703\\187\\128.3838\\-147.5234\\187\\128.7578\\-149.4766\\187\\129.3202\\-153.3828\\187\\130.0569\\-157.2891\\187\\130.3545\\-159.2422\\187\\130.686\\-163.1484\\187\\130.7761\\-165.1016\\187\\130.9903\\-172.9141\\187\\131.047\\-176.8203\\187\\131.0359\\-182.6797\\187\\130.9842\\-188.5391\\187\\130.854\\-196.3516\\187\\130.7288\\-202.2109\\187\\130.4986\\-208.0703\\187\\130.1772\\-211.9766\\187\\129.5667\\-215.8828\\187\\129.086\\-219.7891\\187\\128.5239\\-223.6953\\187\\128.039\\-225.6484\\187\\127.3072\\-227.6016\\187\\126.7997\\-229.5547\\187\\126.0851\\-231.5078\\187\\125.2116\\-233.4609\\187\\124.7065\\-235.4141\\187\\123.7392\\-237.3672\\187\\122.3724\\-241.2734\\187\\122.0703\\-241.6811\\187\\118.1641\\-248.4263\\187\\117.6419\\-249.0859\\187\\116.7661\\-251.0391\\187\\114.2578\\-254.8608\\187\\112.8673\\-256.8984\\187\\111.3641\\-258.8516\\187\\108.7963\\-262.7578\\187\\105.4511\\-266.6641\\187\\104.4922\\-267.9077\\187\\102.1027\\-270.5703\\187\\98.63281\\-274.1315\\187\\96.24301\\-276.4297\\187\\90.82031\\-281.1552\\187\\88.86719\\-282.7317\\187\\86.91406\\-283.9664\\187\\84.96094\\-285.4324\\187\\83.00781\\-287.0122\\187\\81.05469\\-288.3377\\187\\79.10156\\-289.342\\187\\77.14844\\-290.6792\\187\\71.28906\\-294.1956\\187\\67.38281\\-295.8438\\187\\65.42969\\-296.7682\\187\\63.47656\\-297.4131\\187\\61.52344\\-298.4713\\187\\59.57031\\-299.0658\\187\\57.61719\\-299.9202\\187\\55.66406\\-300.601\\187\\51.75781\\-301.591\\187\\49.80469\\-302.3607\\187\\45.89844\\-303.0227\\187\\43.94531\\-303.5525\\187\\41.99219\\-304.2173\\187\\36.13281\\-305.2681\\187\\34.17969\\-305.8351\\187\\32.22656\\-306.2348\\187\\24.41406\\-307.2205\\187\\20.50781\\-307.8619\\187\\18.55469\\-308.0982\\187\\14.64844\\-308.3894\\187\\8.789063\\-308.6207\\187\\0.9765625\\-308.7551\\187\\-6.835938\\-308.6974\\187\\-12.69531\\-308.5484\\187\\-18.55469\\-308.2001\\187"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002207"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "248"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "220"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-26.36719\\-307.3427\\189\\-30.27344\\-306.7463\\189\\-34.17969\\-306.2546\\189\\-36.13281\\-305.7932\\189\\-38.08594\\-305.1579\\189\\-41.99219\\-304.3307\\189\\-43.94531\\-303.5752\\189\\-45.89844\\-303.0025\\189\\-47.85156\\-302.6582\\189\\-49.80469\\-302.1553\\189\\-51.75781\\-301.332\\189\\-55.66406\\-300.1905\\189\\-57.61719\\-299.1392\\189\\-59.57031\\-298.3806\\189\\-61.52344\\-297.2805\\189\\-63.47656\\-296.5942\\189\\-65.42969\\-295.4897\\189\\-67.38281\\-294.7708\\189\\-69.33594\\-293.6185\\189\\-71.28906\\-292.6515\\189\\-73.24219\\-291.2636\\189\\-75.19531\\-290.1978\\189\\-77.14844\\-289.0199\\189\\-79.10156\\-287.7289\\189\\-81.05469\\-286.5534\\189\\-86.91406\\-281.9491\\189\\-88.86719\\-280.6097\\189\\-96.67969\\-273.686\\189\\-100.5859\\-269.8737\\189\\-102.5391\\-268.1403\\189\\-105.6706\\-264.7109\\189\\-107.6213\\-262.7578\\189\\-109.4012\\-260.8047\\189\\-111.0528\\-258.8516\\189\\-114.2578\\-254.8624\\189\\-116.9727\\-251.0391\\189\\-119.3438\\-247.1328\\189\\-120.7546\\-245.1797\\189\\-121.7542\\-243.2266\\189\\-122.8676\\-241.2734\\189\\-123.4986\\-239.3203\\189\\-124.577\\-237.3672\\189\\-125.1919\\-235.4141\\189\\-126.113\\-233.4609\\189\\-126.8523\\-231.5078\\189\\-127.4893\\-229.5547\\189\\-128.3268\\-227.6016\\189\\-129.2468\\-223.6953\\189\\-130.4232\\-219.7891\\189\\-131.0354\\-215.8828\\189\\-131.3968\\-213.9297\\189\\-131.9444\\-211.9766\\189\\-132.3753\\-210.0234\\189\\-132.6447\\-208.0703\\189\\-133.3407\\-202.2109\\189\\-133.8976\\-198.3047\\189\\-134.0709\\-196.3516\\189\\-134.2891\\-190.4922\\189\\-134.318\\-186.5859\\189\\-134.2861\\-182.6797\\189\\-134.1584\\-178.7734\\189\\-133.8838\\-174.8672\\189\\-133.0754\\-169.0078\\189\\-132.5899\\-165.1016\\189\\-132.2825\\-163.1484\\189\\-131.2354\\-159.2422\\189\\-130.6463\\-155.3359\\189\\-130.2178\\-153.3828\\189\\-129.562\\-151.4297\\189\\-129.0782\\-149.4766\\189\\-128.7121\\-147.5234\\189\\-128.1105\\-145.5703\\189\\-127.2961\\-143.6172\\189\\-126.7198\\-141.6641\\189\\-125.8176\\-139.7109\\189\\-125.0721\\-137.7578\\189\\-124.4495\\-135.8047\\189\\-123.4455\\-133.8516\\189\\-122.8201\\-131.8984\\189\\-121.7244\\-129.9453\\189\\-120.782\\-127.9922\\189\\-119.4042\\-126.0391\\189\\-117.0435\\-122.1328\\189\\-116.2109\\-120.9075\\189\\-114.2578\\-118.3984\\189\\-112.3047\\-116.0451\\189\\-108.7935\\-112.3672\\189\\-106.4453\\-110.3005\\189\\-103.9855\\-108.4609\\189\\-100.5859\\-106.2057\\189\\-98.63281\\-105.3162\\189\\-96.67969\\-104.1458\\189\\-94.72656\\-103.4208\\189\\-92.77344\\-102.534\\189\\-90.82031\\-101.894\\189\\-86.91406\\-100.9902\\189\\-84.96094\\-100.3158\\189\\-83.00781\\-99.90411\\189\\-79.10156\\-99.47099\\189\\-77.14844\\-99.15147\\189\\-73.24219\\-98.26994\\189\\-71.28906\\-98.01884\\189\\-63.47656\\-97.2571\\189\\-57.61719\\-96.46036\\189\\-53.71094\\-96.14752\\189\\-49.80469\\-95.93274\\189\\-45.89844\\-95.77094\\189\\-41.99219\\-95.66138\\189\\-34.17969\\-95.60287\\189\\-28.32031\\-95.7388\\189\\-24.41406\\-95.90739\\189\\-20.50781\\-96.18655\\189\\-18.55469\\-96.4831\\189\\-14.64844\\-97.43895\\189\\-10.74219\\-98.23959\\189\\-8.789063\\-99.1506\\189\\-4.882813\\-100.4173\\189\\-2.929688\\-101.3146\\189\\-0.9765625\\-101.7368\\189\\0.9765625\\-102.0156\\189\\2.929688\\-102.1409\\189\\4.882813\\-102.0771\\189\\6.835938\\-101.8823\\189\\8.789063\\-101.5707\\189\\10.74219\\-100.9789\\189\\12.69531\\-100.082\\189\\16.60156\\-99.05106\\189\\18.55469\\-98.42294\\189\\22.46094\\-97.70808\\189\\26.36719\\-97.29441\\189\\28.32031\\-96.99487\\189\\30.27344\\-96.56654\\189\\32.22656\\-96.25706\\189\\34.17969\\-96.05389\\189\\41.99219\\-95.63654\\189\\49.80469\\-95.10751\\189\\53.71094\\-94.79707\\189\\55.66406\\-94.71761\\189\\61.52344\\-94.78112\\189\\65.42969\\-95.01498\\189\\73.24219\\-95.87354\\189\\75.19531\\-96.1197\\189\\77.14844\\-96.5525\\189\\79.10156\\-97.19711\\189\\83.00781\\-98.1349\\189\\84.96094\\-98.90825\\189\\86.91406\\-99.52826\\189\\88.86719\\-100.0421\\189\\90.82031\\-101.0003\\189\\92.77344\\-101.7315\\189\\94.48242\\-102.6016\\189\\96.67969\\-103.8397\\189\\98.63281\\-105.2633\\189\\100.5859\\-106.3081\\189\\102.5391\\-107.5936\\189\\104.4922\\-109.0443\\189\\108.5108\\-112.3672\\189\\110.3516\\-114.0863\\189\\112.3047\\-116.0893\\189\\114.2578\\-118.2899\\189\\116.2109\\-120.677\\189\\118.556\\-124.0859\\189\\119.5851\\-126.0391\\189\\120.9062\\-127.9922\\189\\122.8258\\-131.8984\\189\\123.431\\-133.8516\\189\\124.4259\\-135.8047\\189\\125.0159\\-137.7578\\189\\125.7147\\-139.7109\\189\\126.6436\\-141.6641\\189\\127.1647\\-143.6172\\189\\127.9297\\-145.6642\\189\\128.5228\\-147.5234\\189\\128.889\\-149.4766\\189\\129.5157\\-153.3828\\189\\130.3206\\-157.2891\\189\\130.6995\\-161.1953\\189\\130.8862\\-165.1016\\189\\131.0965\\-170.9609\\189\\131.2102\\-176.8203\\189\\131.2182\\-180.7266\\189\\131.1303\\-188.5391\\189\\130.9184\\-198.3047\\189\\130.7174\\-206.1172\\189\\130.3875\\-211.9766\\189\\130.1505\\-213.9297\\189\\129.4691\\-217.8359\\189\\128.6404\\-223.6953\\189\\128.2266\\-225.6484\\189\\127.469\\-227.6016\\189\\126.3148\\-231.5078\\189\\125.3662\\-233.4609\\189\\124.8273\\-235.4141\\189\\123.1667\\-239.3203\\189\\122.484\\-241.2734\\189\\121.2925\\-243.2266\\189\\120.1172\\-245.3938\\189\\118.1641\\-248.6798\\189\\117.8215\\-249.0859\\189\\116.9194\\-251.0391\\189\\115.6212\\-252.9922\\189\\114.4913\\-254.9453\\189\\113.0703\\-256.8984\\189\\111.5369\\-258.8516\\189\\110.3599\\-260.8047\\189\\109.0113\\-262.7578\\189\\105.6802\\-266.6641\\189\\104.4922\\-268.1929\\189\\102.4228\\-270.5703\\189\\100.609\\-272.5234\\189\\98.63281\\-274.4853\\189\\96.56634\\-276.4297\\189\\90.82031\\-281.3851\\189\\88.86719\\-282.9465\\189\\84.96094\\-285.7274\\189\\81.05469\\-288.6571\\189\\79.10156\\-289.533\\189\\78.37975\\-290.1016\\189\\75.19531\\-292.2163\\189\\73.24219\\-293.2855\\189\\71.28906\\-294.5095\\189\\69.33594\\-295.2055\\189\\67.38281\\-296.2266\\189\\63.47656\\-297.7439\\189\\61.52344\\-298.668\\189\\59.57031\\-299.2883\\189\\57.61719\\-300.2169\\189\\53.71094\\-301.2131\\189\\49.80469\\-302.51\\189\\45.89844\\-303.172\\189\\41.99219\\-304.3877\\189\\38.08594\\-305.0351\\189\\36.13281\\-305.4908\\189\\34.17969\\-306.0731\\189\\32.22656\\-306.3794\\189\\28.32031\\-306.8576\\189\\24.41406\\-307.4178\\189\\22.46094\\-307.7915\\189\\18.55469\\-308.2441\\189\\14.64844\\-308.5005\\189\\8.789063\\-308.7154\\189\\4.882813\\-308.8065\\189\\0.9765625\\-308.8458\\189\\-4.882813\\-308.8296\\189\\-12.69531\\-308.6621\\189\\-16.60156\\-308.4814\\189\\-20.50781\\-308.2222\\189\\-22.46094\\-308.028\\189"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002206"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "241"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "221"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-24.41406\\-307.9914\\191\\-30.27344\\-306.9487\\191\\-34.17969\\-306.4459\\191\\-36.13281\\-306.133\\191\\-38.08594\\-305.4639\\191\\-40.03906\\-304.9402\\191\\-41.99219\\-304.5319\\191\\-43.94531\\-304.0092\\191\\-45.89844\\-303.2234\\191\\-49.80469\\-302.4227\\191\\-51.75781\\-301.619\\191\\-55.66406\\-300.4483\\191\\-57.61719\\-299.1766\\191\\-59.57031\\-298.4283\\191\\-61.52344\\-297.5596\\191\\-63.47656\\-296.8004\\191\\-65.42969\\-295.7687\\191\\-67.38281\\-294.9604\\191\\-69.29977\\-294.0078\\191\\-71.28906\\-292.8893\\191\\-73.24219\\-291.5215\\191\\-75.19531\\-290.5322\\191\\-77.14844\\-289.2054\\191\\-79.00391\\-288.1484\\191\\-81.05469\\-286.8483\\191\\-84.31244\\-284.2422\\191\\-84.96094\\-283.6617\\191\\-86.91406\\-282.3623\\191\\-88.86719\\-280.9259\\191\\-92.77344\\-277.3624\\191\\-96.19928\\-274.4766\\191\\-100.5859\\-270.2473\\191\\-102.478\\-268.6172\\191\\-106.0217\\-264.7109\\191\\-108.3984\\-262.3015\\191\\-112.3047\\-257.6547\\191\\-114.6361\\-254.9453\\191\\-115.8526\\-252.9922\\191\\-118.5988\\-249.0859\\191\\-119.7043\\-247.1328\\191\\-121.0438\\-245.1797\\191\\-122.2176\\-243.2266\\191\\-123.8906\\-239.3203\\191\\-124.8372\\-237.3672\\191\\-125.4979\\-235.4141\\191\\-126.5077\\-233.4609\\191\\-127.1277\\-231.5078\\191\\-128.6222\\-227.6016\\191\\-129.584\\-223.6953\\191\\-130.2886\\-221.7422\\191\\-130.6908\\-219.7891\\191\\-131.3445\\-215.8828\\191\\-131.958\\-213.9297\\191\\-132.3996\\-211.9766\\191\\-133.2101\\-206.1172\\191\\-133.8698\\-202.2109\\191\\-134.1482\\-200.2578\\191\\-134.4085\\-196.3516\\191\\-134.5735\\-190.4922\\191\\-134.5949\\-186.5859\\191\\-134.5147\\-180.7266\\191\\-134.2448\\-174.8672\\191\\-134.0709\\-172.9141\\191\\-133.054\\-167.0547\\191\\-132.4992\\-163.1484\\191\\-132.1289\\-161.1953\\191\\-131.5104\\-159.2422\\191\\-131.067\\-157.2891\\191\\-130.4764\\-153.3828\\191\\-129.2637\\-149.4766\\191\\-128.8944\\-147.5234\\191\\-128.4084\\-145.5703\\191\\-127.6381\\-143.6172\\191\\-126.3193\\-139.7109\\191\\-125.3355\\-137.7578\\191\\-124.7403\\-135.8047\\191\\-123.8158\\-133.8516\\191\\-122.2141\\-129.9453\\191\\-121.0706\\-127.9922\\191\\-119.7527\\-126.0391\\191\\-118.5889\\-124.0859\\191\\-116.2109\\-120.5374\\191\\-114.4907\\-118.2266\\191\\-112.3047\\-115.7958\\191\\-108.9331\\-112.3672\\191\\-106.4453\\-110.2319\\191\\-104.4922\\-108.9277\\191\\-102.5391\\-107.478\\191\\-100.5859\\-106.1823\\191\\-98.63281\\-105.2973\\191\\-96.67969\\-104.124\\191\\-94.72656\\-103.4163\\191\\-92.77344\\-102.534\\191\\-90.82031\\-101.894\\191\\-86.91406\\-101.0267\\191\\-84.96094\\-100.3419\\191\\-83.00781\\-99.93108\\191\\-79.10156\\-99.48877\\191\\-77.14844\\-99.19305\\191\\-73.24219\\-98.31828\\191\\-71.28906\\-98.05977\\191\\-63.47656\\-97.34619\\191\\-59.57031\\-96.89079\\191\\-57.61719\\-96.60675\\191\\-53.71094\\-96.24242\\191\\-49.80469\\-96.019\\191\\-43.94531\\-95.8074\\191\\-38.08594\\-95.73325\\191\\-32.22656\\-95.76031\\191\\-26.36719\\-95.95988\\191\\-22.46094\\-96.18974\\191\\-20.50781\\-96.4061\\191\\-16.60156\\-97.30756\\191\\-12.69531\\-98.0038\\191\\-10.74219\\-98.54671\\191\\-8.789063\\-99.37231\\191\\-6.835938\\-99.88756\\191\\-4.882813\\-100.7358\\191\\-2.929688\\-101.4724\\191\\-0.9765625\\-101.8973\\191\\0.9765625\\-102.192\\191\\2.929688\\-102.3762\\191\\4.882813\\-102.2804\\191\\6.835938\\-102.053\\191\\8.789063\\-101.725\\191\\10.74219\\-101.2036\\191\\12.69531\\-100.2849\\191\\20.50781\\-98.24871\\191\\22.46094\\-97.91949\\191\\26.36719\\-97.5203\\191\\28.32031\\-97.24833\\191\\32.22656\\-96.50317\\191\\36.13281\\-96.09706\\191\\40.03906\\-95.88904\\191\\47.85156\\-95.39242\\191\\53.71094\\-95.0528\\191\\57.61719\\-94.94561\\191\\61.52344\\-94.98731\\191\\65.42969\\-95.22088\\191\\69.33594\\-95.57146\\191\\73.24219\\-95.98807\\191\\75.19531\\-96.2569\\191\\79.10156\\-97.31696\\191\\83.00781\\-98.26994\\191\\84.96094\\-99.05726\\191\\88.86719\\-100.0951\\191\\90.82031\\-101.0739\\191\\92.77344\\-101.7789\\191\\96.67969\\-103.8822\\191\\98.63281\\-105.2973\\191\\100.5859\\-106.364\\191\\102.5391\\-107.5936\\191\\104.4922\\-109.0534\\191\\108.5598\\-112.3672\\191\\110.3516\\-114.0289\\191\\112.3047\\-116.0177\\191\\114.2662\\-118.2266\\191\\116.2109\\-120.5758\\191\\118.6276\\-124.0859\\191\\119.6781\\-126.0391\\191\\120.9772\\-127.9922\\191\\122.9065\\-131.8984\\191\\123.5522\\-133.8516\\191\\124.5667\\-135.8047\\191\\125.1309\\-137.7578\\191\\126.7671\\-141.6641\\191\\127.3193\\-143.6172\\191\\128.1334\\-145.5703\\191\\128.649\\-147.5234\\191\\129.3164\\-151.4297\\191\\130.2013\\-155.3359\\191\\130.511\\-157.2891\\191\\130.6928\\-159.2422\\191\\131.0167\\-165.1016\\191\\131.2805\\-170.9609\\191\\131.4361\\-176.8203\\191\\131.4573\\-180.7266\\191\\131.4026\\-184.6328\\191\\131.0404\\-198.3047\\191\\130.8157\\-206.1172\\191\\130.6629\\-210.0234\\191\\130.3678\\-213.9297\\191\\130.1104\\-215.8828\\191\\129.3331\\-219.7891\\191\\128.7511\\-223.6953\\191\\128.3809\\-225.6484\\191\\127.0358\\-229.5547\\191\\126.5024\\-231.5078\\191\\125.5418\\-233.4609\\191\\124.936\\-235.4141\\191\\124.1936\\-237.3672\\191\\123.2557\\-239.3203\\191\\122.6071\\-241.2734\\191\\121.4252\\-243.2266\\191\\120.5117\\-245.1797\\191\\119.2082\\-247.1328\\191\\118.0753\\-249.0859\\191\\117.0755\\-251.0391\\191\\115.808\\-252.9922\\191\\114.7494\\-254.9453\\191\\111.7763\\-258.8516\\191\\110.6649\\-260.8047\\191\\109.21\\-262.7578\\191\\102.7517\\-270.5703\\191\\100.9498\\-272.5234\\191\\98.63281\\-274.8021\\191\\94.6841\\-278.3828\\191\\90.00788\\-282.2891\\191\\86.91406\\-284.6826\\191\\81.05469\\-288.8777\\191\\79.10156\\-289.813\\191\\77.14844\\-291.1406\\191\\75.19531\\-292.5665\\191\\73.24219\\-293.5645\\191\\71.28906\\-294.7402\\191\\69.33594\\-295.4169\\191\\67.38281\\-296.493\\191\\65.42969\\-297.1095\\191\\63.47656\\-298.1258\\191\\59.57031\\-299.5439\\191\\57.61719\\-300.4192\\191\\53.71094\\-301.3722\\191\\51.75781\\-302.1147\\191\\49.80469\\-302.6214\\191\\47.85156\\-302.9156\\191\\45.89844\\-303.3401\\191\\43.94531\\-304.0553\\191\\41.99219\\-304.5168\\191\\38.08594\\-305.2007\\191\\36.13281\\-305.7787\\191\\34.17969\\-306.2515\\191\\28.32031\\-306.9991\\191\\22.46094\\-307.9892\\191\\18.55469\\-308.3615\\191\\14.64844\\-308.5916\\191\\8.789063\\-308.8065\\191\\4.882813\\-308.8847\\191\\-0.9765625\\-308.9452\\191\\-6.835938\\-308.8918\\191\\-12.69531\\-308.7667\\191\\-20.50781\\-308.3938\\191"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002205"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "239"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "222"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-26.36719\\-307.9292\\193\\-28.32031\\-307.4829\\193\\-30.27344\\-307.1688\\193\\-36.13281\\-306.3322\\193\\-38.08594\\-305.8486\\193\\-40.03906\\-305.1497\\193\\-43.94531\\-304.2984\\193\\-45.89844\\-303.5116\\193\\-47.85156\\-302.9403\\193\\-49.80469\\-302.591\\193\\-51.75781\\-301.9375\\193\\-53.71094\\-301.1714\\193\\-55.66406\\-300.6427\\193\\-56.91964\\-299.8672\\193\\-57.61719\\-299.1953\\193\\-59.57031\\-298.4194\\193\\-61.52344\\-297.9368\\193\\-63.47656\\-296.9702\\193\\-65.42969\\-296.1473\\193\\-67.38281\\-295.1299\\193\\-69.33594\\-294.338\\193\\-72.99107\\-292.0547\\193\\-75.19531\\-290.7868\\193\\-77.14844\\-289.431\\193\\-79.10156\\-288.4518\\193\\-82.24655\\-286.1953\\193\\-84.96094\\-283.9884\\193\\-86.91406\\-282.6984\\193\\-88.86719\\-281.1758\\193\\-92.77344\\-277.6311\\193\\-94.72656\\-275.9884\\193\\-96.67039\\-274.4766\\193\\-98.60689\\-272.5234\\193\\-102.5391\\-268.9375\\193\\-104.4922\\-266.8894\\193\\-106.437\\-264.7109\\193\\-108.3984\\-262.7486\\193\\-110.3516\\-260.4395\\193\\-111.553\\-258.8516\\193\\-114.9369\\-254.9453\\193\\-116.299\\-252.9922\\193\\-117.4759\\-251.0391\\193\\-118.1641\\-250.1551\\193\\-120.2257\\-247.1328\\193\\-122.0703\\-243.959\\193\\-122.5789\\-243.2266\\193\\-123.2879\\-241.2734\\193\\-124.349\\-239.3203\\193\\-125.0603\\-237.3672\\193\\-126.7965\\-233.4609\\193\\-127.4507\\-231.5078\\193\\-128.3529\\-229.5547\\193\\-129.3351\\-225.6484\\193\\-130.0721\\-223.6953\\193\\-130.6033\\-221.7422\\193\\-131.2913\\-217.8359\\193\\-132.4107\\-213.9297\\193\\-133.0046\\-210.0234\\193\\-134.0614\\-204.1641\\193\\-134.4604\\-200.2578\\193\\-134.7332\\-194.3984\\193\\-134.8489\\-186.5859\\193\\-134.7547\\-180.7266\\193\\-134.4889\\-174.8672\\193\\-134.1167\\-170.9609\\193\\-133.3069\\-167.0547\\193\\-132.401\\-161.1953\\193\\-131.9167\\-159.2422\\193\\-131.2982\\-157.2891\\193\\-130.6723\\-153.3828\\193\\-130.2296\\-151.4297\\193\\-129.5131\\-149.4766\\193\\-128.6621\\-145.5703\\193\\-128.1092\\-143.6172\\193\\-127.2846\\-141.6641\\193\\-126.6781\\-139.7109\\193\\-125.7506\\-137.7578\\193\\-124.3115\\-133.8516\\193\\-123.2926\\-131.8984\\193\\-122.618\\-129.9453\\193\\-121.3763\\-127.9922\\193\\-120.2325\\-126.0391\\193\\-117.4497\\-122.1328\\193\\-116.2195\\-120.1797\\193\\-114.7629\\-118.2266\\193\\-112.3047\\-115.5101\\193\\-109.1291\\-112.3672\\193\\-106.4453\\-110.1682\\193\\-100.5859\\-106.1348\\193\\-98.63281\\-105.2739\\193\\-96.67969\\-104.1026\\193\\-94.72656\\-103.4055\\193\\-92.77344\\-102.534\\193\\-90.82031\\-101.894\\193\\-86.91406\\-101.0486\\193\\-84.96094\\-100.3934\\193\\-83.00781\\-99.95089\\193\\-77.14844\\-99.23853\\193\\-73.24219\\-98.36979\\193\\-71.28906\\-98.10297\\193\\-63.47656\\-97.41661\\193\\-59.57031\\-97.01456\\193\\-55.66406\\-96.49471\\193\\-53.71094\\-96.32624\\193\\-49.80469\\-96.10367\\193\\-43.94531\\-95.89548\\193\\-38.08594\\-95.83874\\193\\-34.17969\\-95.84354\\193\\-28.32031\\-96.00845\\193\\-24.41406\\-96.21722\\193\\-22.46094\\-96.39567\\193\\-20.50781\\-96.73456\\193\\-18.55469\\-97.19054\\193\\-14.64844\\-97.83894\\193\\-12.69531\\-98.23056\\193\\-10.74219\\-98.95905\\193\\-6.835938\\-100.0509\\193\\-4.882813\\-101.029\\193\\-2.929688\\-101.6309\\193\\0.9765625\\-102.4247\\193\\2.929688\\-102.6713\\193\\4.882813\\-102.5494\\193\\8.789063\\-101.8472\\193\\10.74219\\-101.3523\\193\\12.69531\\-100.5156\\193\\14.64844\\-99.8922\\193\\18.55469\\-99.04854\\193\\20.50781\\-98.52093\\193\\22.46094\\-98.15278\\193\\28.32031\\-97.43506\\193\\34.17969\\-96.52748\\193\\38.08594\\-96.14948\\193\\49.80469\\-95.40485\\193\\53.71094\\-95.21796\\193\\57.61719\\-95.13086\\193\\61.52344\\-95.18106\\193\\67.38281\\-95.50521\\193\\73.24219\\-96.07459\\193\\75.19531\\-96.39342\\193\\77.14844\\-96.94304\\193\\81.05469\\-97.7848\\193\\83.00781\\-98.39135\\193\\84.96094\\-99.19002\\193\\88.86719\\-100.1703\\193\\90.82031\\-101.147\\193\\92.77344\\-101.8334\\193\\96.67969\\-103.9295\\193\\98.63281\\-105.3394\\193\\100.5859\\-106.4071\\193\\102.5391\\-107.6064\\193\\106.2073\\-110.4141\\193\\108.5904\\-112.3672\\193\\110.3516\\-114.0025\\193\\112.3047\\-115.9631\\193\\114.3627\\-118.2266\\193\\116.2109\\-120.4896\\193\\118.6908\\-124.0859\\193\\119.7664\\-126.0391\\193\\121.0438\\-127.9922\\193\\122.1542\\-129.9453\\193\\122.9797\\-131.8984\\193\\123.6834\\-133.8516\\193\\124.6802\\-135.8047\\193\\125.2441\\-137.7578\\193\\126.2356\\-139.7109\\193\\127.4921\\-143.6172\\193\\128.3008\\-145.5703\\193\\128.7676\\-147.5234\\193\\129.4992\\-151.4297\\193\\130.0278\\-153.3828\\193\\130.4196\\-155.3359\\193\\130.6676\\-157.2891\\193\\131.183\\-165.1016\\193\\131.6406\\-172.9141\\193\\131.828\\-178.7734\\193\\131.7082\\-184.6328\\193\\131.2382\\-196.3516\\193\\130.7761\\-210.0234\\193\\130.5442\\-213.9297\\193\\130.3443\\-215.8828\\193\\129.9688\\-217.8359\\193\\129.4936\\-219.7891\\193\\128.5156\\-225.6484\\193\\127.9297\\-227.5441\\193\\127.1797\\-229.5547\\193\\126.651\\-231.5078\\193\\125.7324\\-233.4609\\193\\124.3581\\-237.3672\\193\\123.3454\\-239.3203\\193\\122.7193\\-241.2734\\193\\121.5758\\-243.2266\\193\\120.6913\\-245.1797\\193\\119.3656\\-247.1328\\193\\118.3758\\-249.0859\\193\\116.2109\\-252.8912\\193\\114.981\\-254.9453\\193\\112.0718\\-258.8516\\193\\110.8897\\-260.8047\\193\\109.3945\\-262.7578\\193\\103.0238\\-270.5703\\193\\101.1955\\-272.5234\\193\\98.63281\\-275.0597\\193\\95.03455\\-278.3828\\193\\90.31042\\-282.2891\\193\\88.86719\\-283.3278\\193\\84.96094\\-286.5087\\193\\81.05469\\-289.0522\\193\\77.14844\\-291.4098\\193\\75.19531\\-292.8458\\193\\71.28906\\-294.9294\\193\\69.33594\\-295.6872\\193\\67.38281\\-296.6862\\193\\65.42969\\-297.297\\193\\63.47656\\-298.3788\\193\\61.52344\\-299.0101\\193\\59.52229\\-299.8672\\193\\57.61719\\-300.563\\193\\53.71094\\-301.5671\\193\\51.75781\\-302.3186\\193\\49.80469\\-302.7239\\193\\47.85156\\-303.0133\\193\\45.89844\\-303.524\\193\\43.94531\\-304.2443\\193\\40.03906\\-304.9852\\193\\38.08594\\-305.4076\\193\\36.13281\\-306.0414\\193\\34.17969\\-306.39\\193\\30.27344\\-306.8817\\193\\26.36719\\-307.4961\\193\\24.41406\\-307.875\\193\\22.46094\\-308.145\\193\\18.55469\\-308.4573\\193\\12.69531\\-308.7498\\193\\4.882813\\-308.9916\\193\\-0.9765625\\-309.0862\\193\\-4.882813\\-309.0481\\193\\-12.69531\\-308.8458\\193\\-20.50781\\-308.5193\\193\\-24.41406\\-308.1906\\193"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002204"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "238"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "223"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-28.32031\\-307.7344\\195\\-36.13281\\-306.5047\\195\\-38.08594\\-306.133\\195\\-40.03906\\-305.4256\\195\\-41.99219\\-304.8917\\195\\-43.94531\\-304.5046\\195\\-45.89844\\-303.882\\195\\-47.85156\\-303.1087\\195\\-49.80469\\-302.7127\\195\\-51.75781\\-302.2039\\195\\-53.71094\\-301.3659\\195\\-55.66406\\-300.8035\\195\\-57.60528\\-299.8672\\195\\-59.57031\\-298.7537\\195\\-61.52344\\-298.2834\\195\\-63.47656\\-297.1362\\195\\-65.42969\\-296.4263\\195\\-67.38281\\-295.2824\\195\\-69.33594\\-294.5925\\195\\-71.28906\\-293.3345\\195\\-73.55368\\-292.0547\\195\\-76.69442\\-290.1016\\195\\-77.14844\\-289.7153\\195\\-79.10156\\-288.7397\\195\\-82.6656\\-286.1953\\195\\-85.15083\\-284.2422\\195\\-86.91406\\-282.9727\\195\\-90.13052\\-280.3359\\195\\-92.77344\\-277.9402\\195\\-96.67969\\-274.8504\\195\\-99.00145\\-272.5234\\195\\-101.1429\\-270.5703\\195\\-104.4922\\-267.2294\\195\\-106.4453\\-265.0892\\195\\-108.7752\\-262.7578\\195\\-110.4574\\-260.8047\\195\\-111.8699\\-258.8516\\195\\-115.1966\\-254.9453\\195\\-116.6676\\-252.9922\\195\\-117.7215\\-251.0391\\195\\-120.6352\\-247.1328\\195\\-121.6784\\-245.1797\\195\\-122.8453\\-243.2266\\195\\-123.5318\\-241.2734\\195\\-124.6487\\-239.3203\\195\\-125.3078\\-237.3672\\195\\-126.3977\\-235.4141\\195\\-127.0752\\-233.4609\\195\\-128.6426\\-229.5547\\195\\-129.1274\\-227.6016\\195\\-129.7226\\-225.6484\\195\\-130.4362\\-223.6953\\195\\-131.175\\-219.7891\\195\\-132.3442\\-215.8828\\195\\-133.3696\\-210.0234\\195\\-133.8412\\-208.0703\\195\\-134.4079\\-204.1641\\195\\-134.8386\\-198.3047\\195\\-134.9995\\-194.3984\\195\\-135.1427\\-186.5859\\195\\-135.0068\\-180.7266\\195\\-134.8311\\-176.8203\\195\\-134.3592\\-170.9609\\195\\-134.1146\\-169.0078\\195\\-133.2368\\-165.1016\\195\\-132.2798\\-159.2422\\195\\-131.6658\\-157.2891\\195\\-131.1594\\-155.3359\\195\\-130.4803\\-151.4297\\195\\-129.8421\\-149.4766\\195\\-129.3351\\-147.5234\\195\\-128.4618\\-143.6172\\195\\-127.6659\\-141.6641\\195\\-126.2999\\-137.7578\\195\\-125.269\\-135.8047\\195\\-124.6525\\-133.8516\\195\\-123.57\\-131.8984\\195\\-122.9047\\-129.9453\\195\\-120.6481\\-126.0391\\195\\-119.096\\-124.0859\\195\\-117.7228\\-122.1328\\195\\-116.4932\\-120.1797\\195\\-115.0145\\-118.2266\\195\\-112.3047\\-115.2765\\195\\-109.2948\\-112.3672\\195\\-106.4453\\-110.0511\\195\\-104.1379\\-108.4609\\195\\-100.5859\\-106.1026\\195\\-98.63281\\-105.2623\\195\\-96.67969\\-104.0905\\195\\-94.72656\\-103.3991\\195\\-92.77344\\-102.5486\\195\\-90.82031\\-101.9057\\195\\-86.91406\\-101.0698\\195\\-84.96094\\-100.4191\\195\\-83.00781\\-99.96669\\195\\-77.14844\\-99.26799\\195\\-75.19531\\-98.90509\\195\\-73.24219\\-98.43623\\195\\-71.28906\\-98.1412\\195\\-59.57031\\-97.09324\\195\\-55.66406\\-96.59358\\195\\-51.75781\\-96.28022\\195\\-43.94531\\-95.98899\\195\\-38.08594\\-95.92063\\195\\-34.17969\\-95.94743\\195\\-30.27344\\-96.06123\\195\\-26.36719\\-96.24242\\195\\-24.41406\\-96.4061\\195\\-22.46094\\-96.69\\195\\-20.50781\\-97.106\\195\\-14.64844\\-98.03902\\195\\-12.69531\\-98.54671\\195\\-10.74219\\-99.27013\\195\\-8.789063\\-99.71703\\195\\-6.835938\\-100.2734\\195\\-4.882813\\-101.2489\\195\\-2.929688\\-101.7887\\195\\0.9765625\\-102.7421\\195\\2.929688\\-102.9669\\195\\4.882813\\-102.8615\\195\\6.835938\\-102.4388\\195\\10.74219\\-101.4794\\195\\14.64844\\-100.0247\\195\\20.50781\\-98.85186\\195\\22.46094\\-98.36979\\195\\24.41406\\-98.06715\\195\\32.22656\\-97.12376\\195\\36.13281\\-96.52899\\195\\38.08594\\-96.29559\\195\\45.89844\\-95.72765\\195\\53.71094\\-95.3498\\195\\59.57031\\-95.27734\\195\\61.52344\\-95.32585\\195\\67.38281\\-95.61581\\195\\73.24219\\-96.16077\\195\\75.19531\\-96.50646\\195\\77.14844\\-97.09324\\195\\79.10156\\-97.42175\\195\\81.05469\\-97.84834\\195\\83.00781\\-98.50831\\195\\84.96094\\-99.28735\\195\\86.91406\\-99.71116\\195\\88.86719\\-100.2398\\195\\90.82031\\-101.2036\\195\\92.77344\\-101.8886\\195\\94.72656\\-102.9857\\195\\96.67969\\-103.9616\\195\\98.63281\\-105.3695\\195\\100.5859\\-106.4375\\195\\102.5391\\-107.6321\\195\\106.2073\\-110.4141\\195\\108.6053\\-112.3672\\195\\110.3516\\-113.977\\195\\112.3047\\-115.9137\\195\\114.4516\\-118.2266\\195\\116.2109\\-120.3999\\195\\117.344\\-122.1328\\195\\118.7443\\-124.0859\\195\\122.2929\\-129.9453\\195\\123.8312\\-133.8516\\195\\124.7667\\-135.8047\\195\\125.3834\\-137.7578\\195\\126.4287\\-139.7109\\195\\127.0109\\-141.6641\\195\\128.4335\\-145.5703\\195\\129.2509\\-149.4766\\195\\130.2637\\-153.3828\\195\\130.5804\\-155.3359\\195\\130.7872\\-157.2891\\195\\131.2226\\-163.1484\\195\\131.9167\\-170.9609\\195\\132.1178\\-174.8672\\195\\132.2029\\-178.7734\\195\\132.1399\\-182.6797\\195\\131.9167\\-188.5391\\195\\131.5381\\-194.3984\\195\\131.2718\\-200.2578\\195\\130.7932\\-211.9766\\195\\130.5194\\-215.8828\\195\\130.2154\\-217.8359\\195\\129.302\\-221.7422\\195\\128.633\\-225.6484\\195\\128.1305\\-227.6016\\195\\127.3345\\-229.5547\\195\\126.7568\\-231.5078\\195\\125.102\\-235.4141\\195\\124.4894\\-237.3672\\195\\123.421\\-239.3203\\195\\122.8333\\-241.2734\\195\\121.7493\\-243.2266\\195\\120.8469\\-245.1797\\195\\119.5348\\-247.1328\\195\\118.6096\\-249.0859\\195\\117.3765\\-251.0391\\195\\116.4952\\-252.9922\\195\\115.1801\\-254.9453\\195\\113.7463\\-256.8984\\195\\112.4453\\-258.8516\\195\\110.3516\\-261.7898\\195\\106.5119\\-266.6641\\195\\103.2597\\-270.5703\\195\\101.4359\\-272.5234\\195\\98.63281\\-275.3008\\195\\95.32374\\-278.3828\\195\\92.77344\\-280.6223\\195\\90.66068\\-282.2891\\195\\88.86719\\-283.5844\\195\\88.13852\\-284.2422\\195\\84.96094\\-286.8097\\195\\82.93431\\-288.1484\\195\\81.05469\\-289.2015\\195\\79.10156\\-290.6186\\195\\73.24219\\-294.3001\\195\\71.28906\\-295.1003\\195\\67.38281\\-296.8355\\195\\65.42969\\-297.5116\\195\\63.47656\\-298.5597\\195\\61.52344\\-299.1847\\195\\59.57031\\-300.1199\\195\\57.61719\\-300.6887\\195\\55.66406\\-301.1505\\195\\51.75781\\-302.4651\\195\\47.85156\\-303.1282\\195\\43.94531\\-304.3805\\195\\40.03906\\-305.1218\\195\\36.13281\\-306.2234\\195\\30.27344\\-307.0306\\195\\28.32031\\-307.3403\\195\\26.36719\\-307.7484\\195\\22.46094\\-308.2744\\195\\16.60156\\-308.6739\\195\\4.882813\\-309.1445\\195\\-0.9765625\\-309.2982\\195\\-4.882813\\-309.2408\\195\\-20.50781\\-308.6326\\195\\-24.41406\\-308.3658\\195\\-26.36719\\-308.1381\\195"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002203"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "247"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "224"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-30.27344\\-307.763\\197\\-32.22656\\-307.3451\\197\\-38.08594\\-306.3169\\197\\-40.03906\\-305.7932\\197\\-41.99219\\-305.0996\\197\\-45.89844\\-304.1604\\197\\-47.85156\\-303.2979\\197\\-51.75781\\-302.405\\197\\-53.71094\\-301.5927\\197\\-57.61719\\-300.2932\\197\\-59.57031\\-299.1782\\197\\-61.52344\\-298.5054\\197\\-63.47656\\-297.3516\\197\\-65.42969\\-296.6338\\197\\-67.38281\\-295.4828\\197\\-69.33594\\-294.7952\\197\\-71.28906\\-293.6132\\197\\-73.24219\\-292.6323\\197\\-75.19531\\-291.2572\\197\\-79.10156\\-288.9738\\197\\-81.05469\\-287.5751\\197\\-83.00781\\-286.3221\\197\\-85.5625\\-284.2422\\197\\-90.50336\\-280.3359\\197\\-92.77344\\-278.3258\\197\\-94.72656\\-276.7715\\197\\-96.67969\\-275.1159\\197\\-98.63281\\-273.2721\\197\\-99.27455\\-272.5234\\197\\-101.4202\\-270.5703\\197\\-104.4922\\-267.4711\\197\\-105.1839\\-266.6641\\197\\-109.0518\\-262.7578\\197\\-110.7942\\-260.8047\\197\\-112.2963\\-258.8516\\197\\-115.4413\\-254.9453\\197\\-116.9241\\-252.9922\\197\\-118.1227\\-251.0391\\197\\-119.4558\\-249.0859\\197\\-120.9375\\-247.1328\\197\\-122.11\\-245.1797\\197\\-123.059\\-243.2266\\197\\-123.9053\\-241.2734\\197\\-124.8644\\-239.3203\\197\\-125.6533\\-237.3672\\197\\-126.6981\\-235.4141\\197\\-127.3878\\-233.4609\\197\\-128.3322\\-231.5078\\197\\-129.4181\\-227.6016\\197\\-130.2178\\-225.6484\\197\\-130.7091\\-223.6953\\197\\-131.0467\\-221.7422\\197\\-131.5458\\-219.7891\\197\\-132.2733\\-217.8359\\197\\-133.3921\\-211.9766\\197\\-133.9111\\-210.0234\\197\\-134.4898\\-206.1172\\197\\-134.8447\\-202.2109\\197\\-135.1303\\-198.3047\\197\\-135.3074\\-194.3984\\197\\-135.5052\\-186.5859\\197\\-135.3001\\-180.7266\\197\\-135.0812\\-176.8203\\197\\-134.5564\\-170.9609\\197\\-134.3479\\-169.0078\\197\\-134.0248\\-167.0547\\197\\-133.1473\\-163.1484\\197\\-132.5409\\-159.2422\\197\\-132.1289\\-157.2891\\197\\-131.4765\\-155.3359\\197\\-130.7123\\-151.4297\\197\\-130.272\\-149.4766\\197\\-129.1551\\-145.5703\\197\\-128.7356\\-143.6172\\197\\-128.1615\\-141.6641\\197\\-127.3049\\-139.7109\\197\\-126.6629\\-137.7578\\197\\-125.6745\\-135.8047\\197\\-124.9158\\-133.8516\\197\\-122.2331\\-127.9922\\197\\-120.938\\-126.0391\\197\\-119.4196\\-124.0859\\197\\-116.7817\\-120.1797\\197\\-115.2536\\-118.2266\\197\\-112.3047\\-115.0527\\197\\-109.4416\\-112.3672\\197\\-106.4453\\-109.9166\\197\\-104.3586\\-108.4609\\197\\-100.5859\\-106.0687\\197\\-98.63281\\-105.2472\\197\\-96.67969\\-104.0724\\197\\-94.72656\\-103.4055\\197\\-92.77344\\-102.5785\\197\\-90.82031\\-101.9209\\197\\-86.91406\\-101.0935\\197\\-84.96094\\-100.4456\\197\\-83.00781\\-99.98709\\197\\-77.14844\\-99.29673\\197\\-73.24219\\-98.49587\\197\\-71.28906\\-98.18163\\197\\-67.38281\\-97.80534\\197\\-59.57031\\-97.15171\\197\\-55.66406\\-96.69\\197\\-51.75781\\-96.34546\\197\\-45.89844\\-96.12513\\197\\-38.08594\\-96.01239\\197\\-34.17969\\-96.04012\\197\\-30.27344\\-96.18494\\197\\-26.36719\\-96.43822\\197\\-24.41406\\-96.69\\197\\-22.46094\\-97.06334\\197\\-16.60156\\-97.89941\\197\\-14.64844\\-98.26994\\197\\-12.69531\\-98.961\\197\\-10.74219\\-99.49586\\197\\-8.789063\\-99.8922\\197\\-6.835938\\-100.6081\\197\\-4.882813\\-101.4384\\197\\0.9765625\\-103.0363\\197\\2.929688\\-103.2003\\197\\4.882813\\-103.093\\197\\6.835938\\-102.6855\\197\\12.69531\\-101.0003\\197\\14.64844\\-100.1735\\197\\16.60156\\-99.74568\\197\\20.50781\\-99.09782\\197\\22.46094\\-98.61455\\197\\24.41406\\-98.23335\\197\\28.32031\\-97.72384\\197\\32.22656\\-97.33835\\197\\36.13281\\-96.78063\\197\\38.08594\\-96.44922\\197\\43.94531\\-95.9427\\197\\51.75781\\-95.5273\\197\\53.71094\\-95.45409\\197\\59.57031\\-95.3886\\197\\61.52344\\-95.43396\\197\\67.38281\\-95.71167\\197\\71.28906\\-96.0363\\197\\73.24219\\-96.24809\\197\\75.19531\\-96.64745\\197\\77.14844\\-97.21841\\197\\81.05469\\-98.00275\\197\\84.96094\\-99.36411\\197\\86.91406\\-99.76325\\197\\88.86719\\-100.3158\\197\\90.82031\\-101.2758\\197\\92.77344\\-101.9324\\197\\94.72656\\-103.0449\\197\\96.67969\\-104.0237\\197\\98.63281\\-105.4056\\197\\102.5391\\-107.6503\\197\\104.4922\\-109.0801\\197\\108.3984\\-112.1788\\197\\110.3516\\-113.9401\\197\\112.3047\\-115.8756\\197\\114.5187\\-118.2266\\197\\116.2109\\-120.3247\\197\\117.3816\\-122.1328\\197\\118.8022\\-124.0859\\197\\122.3958\\-129.9453\\197\\123.1384\\-131.8984\\197\\124.8826\\-135.8047\\197\\125.5562\\-137.7578\\197\\126.5806\\-139.7109\\197\\127.1561\\-141.6641\\197\\127.9374\\-143.6172\\197\\128.5588\\-145.5703\\197\\129.3913\\-149.4766\\197\\130.4325\\-153.3828\\197\\130.7158\\-155.3359\\197\\131.0404\\-159.2422\\197\\131.4598\\-163.1484\\197\\131.9714\\-167.0547\\197\\132.1508\\-169.0078\\197\\132.3496\\-172.9141\\197\\132.4463\\-176.8203\\197\\132.3979\\-182.6797\\197\\132.2229\\-188.5391\\197\\132.0229\\-192.4453\\197\\131.6007\\-198.3047\\197\\131.284\\-204.1641\\197\\131.0012\\-210.0234\\197\\130.6606\\-215.8828\\197\\130.4196\\-217.8359\\197\\129.9982\\-219.7891\\197\\129.4585\\-221.7422\\197\\128.7511\\-225.6484\\197\\128.2935\\-227.6016\\197\\127.4881\\-229.5547\\197\\126.1382\\-233.4609\\197\\125.1746\\-235.4141\\197\\124.5961\\-237.3672\\197\\123.5057\\-239.3203\\197\\122.9323\\-241.2734\\197\\120.9823\\-245.1797\\197\\119.7486\\-247.1328\\197\\118.8019\\-249.0859\\197\\117.5152\\-251.0391\\197\\116.726\\-252.9922\\197\\116.2109\\-253.6949\\197\\112.7223\\-258.8516\\197\\111.2203\\-260.8047\\197\\108.3984\\-264.6621\\197\\106.7814\\-266.6641\\197\\103.4483\\-270.5703\\197\\101.6474\\-272.5234\\197\\98.63281\\-275.4875\\197\\96.67969\\-277.2697\\197\\95.57427\\-278.3828\\197\\92.77344\\-280.9084\\197\\90.82031\\-282.4558\\197\\88.86719\\-283.8864\\197\\84.96094\\-287.0506\\197\\83.00781\\-288.4564\\197\\81.05469\\-289.4236\\197\\79.10156\\-290.8954\\197\\77.14844\\-292.2444\\197\\75.19531\\-293.347\\197\\73.24219\\-294.5796\\197\\71.28906\\-295.2697\\197\\69.33594\\-296.3092\\197\\67.38281\\-296.9692\\197\\63.47656\\-298.7192\\197\\61.52344\\-299.3789\\197\\59.57031\\-300.2991\\197\\55.66406\\-301.2706\\197\\53.71094\\-302.0349\\197\\51.75781\\-302.5646\\197\\47.85156\\-303.2391\\197\\45.89844\\-303.9729\\197\\43.94531\\-304.4959\\197\\40.03906\\-305.2932\\197\\38.08594\\-305.9623\\197\\36.13281\\-306.3582\\197\\30.27344\\-307.185\\197\\26.36719\\-307.9537\\197\\24.41406\\-308.2222\\197\\18.55469\\-308.6739\\197\\12.69531\\-308.9262\\197\\10.74219\\-309.0602\\197\\2.929688\\-309.436\\197\\-0.9765625\\-309.5938\\197\\-6.835938\\-309.4102\\197\\-14.64844\\-308.9527\\197\\-22.46094\\-308.6386\\197\\-26.36719\\-308.3245\\197"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002202"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "239"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "225"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.835938\\-309.6707\\199\\-10.74219\\-309.3608\\199\\-16.60156\\-308.976\\199\\-22.46094\\-308.7381\\199\\-28.32031\\-308.2908\\199\\-30.27344\\-308.0167\\199\\-34.17969\\-307.185\\199\\-40.03906\\-306.0753\\199\\-41.99219\\-305.3297\\199\\-45.89844\\-304.3715\\199\\-47.85156\\-303.5492\\199\\-49.80469\\-302.9293\\199\\-51.75781\\-302.5497\\199\\-55.66406\\-301.0668\\199\\-57.61719\\-300.463\\199\\-59.57031\\-299.4296\\199\\-61.52344\\-298.6719\\199\\-63.47656\\-297.5885\\199\\-65.42969\\-296.802\\199\\-67.38281\\-295.7298\\199\\-69.33594\\-294.9542\\199\\-73.24219\\-292.8567\\199\\-75.19531\\-291.489\\199\\-77.14844\\-290.4781\\199\\-80.6776\\-288.1484\\199\\-83.00781\\-286.667\\199\\-86.91406\\-283.3869\\199\\-88.46457\\-282.2891\\199\\-90.82031\\-280.459\\199\\-93.12529\\-278.3828\\199\\-95.47244\\-276.4297\\199\\-98.63281\\-273.5578\\199\\-99.5857\\-272.5234\\199\\-101.7198\\-270.5703\\199\\-104.4922\\-267.8034\\199\\-105.5001\\-266.6641\\199\\-107.4345\\-264.7109\\199\\-110.3516\\-261.6172\\199\\-114.2578\\-256.8891\\199\\-116.2109\\-254.3092\\199\\-122.5036\\-245.1797\\199\\-123.2767\\-243.2266\\199\\-124.3234\\-241.2734\\199\\-125.0933\\-239.3203\\199\\-126.1535\\-237.3672\\199\\-128.6272\\-231.5078\\199\\-129.1675\\-229.5547\\199\\-130.5442\\-225.6484\\199\\-131.3737\\-221.7422\\199\\-132.1197\\-219.7891\\199\\-132.5995\\-217.8359\\199\\-133.3769\\-213.9297\\199\\-133.9388\\-211.9766\\199\\-134.3095\\-210.0234\\199\\-134.9574\\-204.1641\\199\\-135.4765\\-198.3047\\199\\-135.7342\\-194.3984\\199\\-135.8849\\-190.4922\\199\\-135.9404\\-186.5859\\199\\-135.7969\\-182.6797\\199\\-135.5035\\-178.7734\\199\\-134.7281\\-170.9609\\199\\-134.2918\\-167.0547\\199\\-133.9377\\-165.1016\\199\\-133.0853\\-161.1953\\199\\-132.4599\\-157.2891\\199\\-131.9714\\-155.3359\\199\\-131.3223\\-153.3828\\199\\-130.6002\\-149.4766\\199\\-130.1398\\-147.5234\\199\\-129.4284\\-145.5703\\199\\-128.5082\\-141.6641\\199\\-127.7054\\-139.7109\\199\\-126.224\\-135.8047\\199\\-125.1754\\-133.8516\\199\\-124.4236\\-131.8984\\199\\-123.3241\\-129.9453\\199\\-122.5825\\-127.9922\\199\\-118.4896\\-122.1328\\199\\-115.4521\\-118.2266\\199\\-113.7028\\-116.2734\\199\\-112.3047\\-114.8652\\199\\-109.5963\\-112.3672\\199\\-106.4453\\-109.7688\\199\\-104.4922\\-108.3871\\199\\-102.5391\\-107.2801\\199\\-100.5859\\-106.0163\\199\\-98.63281\\-105.2353\\199\\-96.67969\\-104.0694\\199\\-94.72656\\-103.4099\\199\\-92.77344\\-102.5785\\199\\-90.82031\\-101.9328\\199\\-86.91406\\-101.1201\\199\\-84.96094\\-100.4606\\199\\-83.00781\\-100.0078\\199\\-77.14844\\-99.30492\\199\\-75.19531\\-98.96735\\199\\-73.24219\\-98.52093\\199\\-71.28906\\-98.20703\\199\\-67.38281\\-97.82458\\199\\-59.57031\\-97.20924\\199\\-53.71094\\-96.55518\\199\\-51.75781\\-96.39567\\199\\-45.89844\\-96.19598\\199\\-40.03906\\-96.10014\\199\\-34.17969\\-96.13998\\199\\-30.27344\\-96.31681\\199\\-28.32031\\-96.49471\\199\\-22.46094\\-97.33041\\199\\-18.55469\\-97.81061\\199\\-16.60156\\-98.09972\\199\\-14.64844\\-98.64313\\199\\-12.69531\\-99.29108\\199\\-8.789063\\-100.1369\\199\\-6.835938\\-100.9884\\199\\-4.882813\\-101.613\\199\\-2.929688\\-102.1226\\199\\-0.9765625\\-102.8083\\199\\0.9765625\\-103.2618\\199\\2.929688\\-103.3963\\199\\4.882813\\-103.284\\199\\6.835938\\-102.911\\199\\8.789063\\-102.2122\\199\\12.69531\\-101.1768\\199\\14.64844\\-100.3788\\199\\16.60156\\-99.86601\\199\\20.50781\\-99.28004\\199\\24.41406\\-98.42478\\199\\28.32031\\-97.86043\\199\\32.22656\\-97.50174\\199\\36.13281\\-97.00668\\199\\40.03906\\-96.36516\\199\\43.94531\\-96.0246\\199\\49.80469\\-95.70595\\199\\55.66406\\-95.50832\\199\\59.57031\\-95.48494\\199\\63.47656\\-95.60287\\199\\67.38281\\-95.81339\\199\\71.28906\\-96.10014\\199\\73.24219\\-96.32624\\199\\75.11393\\-96.74219\\199\\77.14844\\-97.30604\\199\\81.05469\\-98.08102\\199\\84.96094\\-99.43635\\199\\86.91406\\-99.79752\\199\\88.86719\\-100.4043\\199\\90.82031\\-101.327\\199\\92.77344\\-101.9686\\199\\94.72656\\-103.1025\\199\\96.67969\\-104.0788\\199\\98.63281\\-105.4234\\199\\102.5391\\-107.6578\\199\\104.4922\\-109.0928\\199\\108.6219\\-112.3672\\199\\110.3516\\-113.9372\\199\\112.3047\\-115.8418\\199\\114.5712\\-118.2266\\199\\116.2109\\-120.2487\\199\\117.43\\-122.1328\\199\\118.1641\\-123.061\\199\\120.1172\\-126.0678\\199\\122.5021\\-129.9453\\199\\123.2159\\-131.8984\\199\\124.2084\\-133.8516\\199\\125.754\\-137.7578\\199\\126.709\\-139.7109\\199\\127.304\\-141.6641\\199\\128.1704\\-143.6172\\199\\128.6932\\-145.5703\\199\\129.5644\\-149.4766\\199\\130.1629\\-151.4297\\199\\130.5603\\-153.3828\\199\\131.1791\\-159.2422\\199\\131.4466\\-161.1953\\199\\132.0834\\-165.1016\\199\\132.4208\\-169.0078\\199\\132.5658\\-172.9141\\199\\132.6358\\-176.8203\\199\\132.5783\\-182.6797\\199\\132.4208\\-188.5391\\199\\132.0717\\-196.3516\\199\\131.8436\\-200.2578\\199\\131.4055\\-206.1172\\199\\130.7761\\-215.8828\\199\\130.576\\-217.8359\\199\\130.2386\\-219.7891\\199\\129.6831\\-221.7422\\199\\129.2255\\-223.6953\\199\\128.4241\\-227.6016\\199\\127.6401\\-229.5547\\199\\126.2826\\-233.4609\\199\\125.2526\\-235.4141\\199\\124.6725\\-237.3672\\199\\123.6177\\-239.3203\\199\\122.9989\\-241.2734\\199\\122.1556\\-243.2266\\199\\118.9528\\-249.0859\\199\\117.6758\\-251.0391\\199\\116.8727\\-252.9922\\199\\115.5363\\-254.9453\\199\\114.3138\\-256.8984\\199\\112.9034\\-258.8516\\199\\111.3645\\-260.8047\\199\\108.6554\\-264.7109\\199\\106.4453\\-267.3462\\199\\103.6173\\-270.5703\\199\\101.8317\\-272.5234\\199\\98.63281\\-275.6554\\199\\95.78394\\-278.3828\\199\\92.77344\\-281.1421\\199\\90.82031\\-282.7349\\199\\83.00781\\-288.7478\\199\\81.05469\\-289.7523\\199\\77.14844\\-292.58\\199\\73.24219\\-294.7755\\199\\71.28906\\-295.4558\\199\\69.33594\\-296.4987\\199\\67.38281\\-297.1057\\199\\65.42969\\-298.1135\\199\\61.52344\\-299.5796\\199\\59.57031\\-300.421\\199\\55.66406\\-301.4066\\199\\53.71094\\-302.1874\\199\\51.75781\\-302.6418\\199\\49.80469\\-302.9278\\199\\47.85156\\-303.3633\\199\\45.89844\\-304.1302\\199\\43.94531\\-304.6001\\199\\41.99219\\-304.9687\\199\\40.03906\\-305.4892\\199\\38.08594\\-306.1425\\199\\30.27344\\-307.3658\\199\\26.36719\\-308.1086\\199\\24.41406\\-308.3492\\199\\18.55469\\-308.7615\\199\\12.69531\\-309.0481\\199\\6.835938\\-309.4912\\199\\0.9765625\\-309.7956\\199\\-2.929688\\-309.8337\\199"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002201"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "243"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "226"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.789063\\-309.6854\\201\\-10.74219\\-309.5021\\201\\-16.60156\\-309.0739\\201\\-22.46094\\-308.7949\\201\\-28.32031\\-308.3983\\201\\-32.22656\\-307.8486\\201\\-36.13281\\-306.9415\\201\\-40.03906\\-306.2323\\201\\-43.94531\\-304.9443\\201\\-45.89844\\-304.502\\201\\-49.80469\\-303.0297\\201\\-51.75781\\-302.6399\\201\\-53.71094\\-302.0081\\201\\-55.66406\\-301.1588\\201\\-57.61719\\-300.552\\201\\-59.57031\\-299.5971\\201\\-61.52344\\-298.7748\\201\\-63.47656\\-297.8141\\201\\-67.38281\\-296.0161\\201\\-69.33594\\-295.0627\\201\\-71.28906\\-294.2372\\201\\-71.58015\\-294.0078\\201\\-77.14844\\-290.7198\\201\\-79.10156\\-289.3499\\201\\-81.05469\\-288.2508\\201\\-83.00781\\-286.9199\\201\\-86.91406\\-283.6327\\201\\-88.86719\\-282.3304\\201\\-90.82031\\-280.7951\\201\\-91.27269\\-280.3359\\201\\-94.72656\\-277.276\\201\\-95.79258\\-276.4297\\201\\-98.63281\\-273.8233\\201\\-100.5859\\-271.8411\\201\\-102.0121\\-270.5703\\201\\-104.4922\\-268.1139\\201\\-105.8102\\-266.6641\\201\\-107.7275\\-264.7109\\201\\-110.3516\\-261.9262\\201\\-114.2578\\-257.2335\\201\\-114.6055\\-256.8984\\201\\-116.2109\\-254.6842\\201\\-117.2467\\-252.9922\\201\\-120.1992\\-249.0859\\201\\-122.7533\\-245.1797\\201\\-123.5214\\-243.2266\\201\\-124.6212\\-241.2734\\201\\-125.3595\\-239.3203\\201\\-126.5251\\-237.3672\\201\\-127.2609\\-235.4141\\201\\-128.2708\\-233.4609\\201\\-129.4936\\-229.5547\\201\\-130.3236\\-227.6016\\201\\-131.1991\\-223.6953\\201\\-131.9025\\-221.7422\\201\\-132.503\\-219.7891\\201\\-133.3131\\-215.8828\\201\\-133.8976\\-213.9297\\201\\-134.3297\\-211.9766\\201\\-135.5163\\-202.2109\\201\\-135.9271\\-198.3047\\201\\-136.0583\\-196.3516\\201\\-136.26\\-190.4922\\201\\-136.2731\\-186.5859\\201\\-136.1451\\-182.6797\\201\\-135.8699\\-178.7734\\201\\-135.3475\\-174.8672\\201\\-134.2566\\-165.1016\\201\\-133.9111\\-163.1484\\201\\-133.4022\\-161.1953\\201\\-132.3496\\-155.3359\\201\\-131.1909\\-151.4297\\201\\-130.494\\-147.5234\\201\\-129.2254\\-143.6172\\201\\-128.7812\\-141.6641\\201\\-128.2017\\-139.7109\\201\\-127.3049\\-137.7578\\201\\-126.6257\\-135.8047\\201\\-125.5253\\-133.8516\\201\\-124.7484\\-131.8984\\201\\-123.6484\\-129.9453\\201\\-122.827\\-127.9922\\201\\-120.2848\\-124.0859\\201\\-118.1641\\-121.3015\\201\\-114.2578\\-116.6336\\201\\-112.3047\\-114.6856\\201\\-109.7656\\-112.3672\\201\\-106.4453\\-109.6061\\201\\-104.4922\\-108.2244\\201\\-102.5391\\-107.2127\\201\\-100.5859\\-105.9701\\201\\-98.63281\\-105.2195\\201\\-96.67969\\-104.0905\\201\\-94.72656\\-103.4099\\201\\-92.77344\\-102.5938\\201\\-90.82031\\-101.9406\\201\\-86.91406\\-101.1367\\201\\-84.96094\\-100.4882\\201\\-83.00781\\-100.0247\\201\\-81.05469\\-99.75606\\201\\-77.14844\\-99.3286\\201\\-75.19531\\-98.98131\\201\\-73.24219\\-98.53372\\201\\-71.28906\\-98.22447\\201\\-67.38281\\-97.84383\\201\\-59.57031\\-97.28278\\201\\-51.75781\\-96.49471\\201\\-45.89844\\-96.26257\\201\\-41.99219\\-96.20397\\201\\-36.13281\\-96.22552\\201\\-32.22656\\-96.36516\\201\\-30.27344\\-96.51839\\201\\-26.36719\\-97.1084\\201\\-18.55469\\-98.02877\\201\\-16.60156\\-98.41348\\201\\-14.64844\\-99.09543\\201\\-12.69531\\-99.54129\\201\\-10.74219\\-99.88756\\201\\-8.789063\\-100.5167\\201\\-6.835938\\-101.306\\201\\-2.929688\\-102.3869\\201\\-0.9765625\\-103.1171\\201\\0.9765625\\-103.4702\\201\\2.929688\\-103.5732\\201\\4.882813\\-103.4805\\201\\6.835938\\-103.1501\\201\\8.789063\\-102.4388\\201\\10.74219\\-101.8517\\201\\12.69531\\-101.373\\201\\16.60156\\-100.0078\\201\\20.50781\\-99.45045\\201\\22.46094\\-99.11568\\201\\26.36719\\-98.26731\\201\\28.32031\\-98.00507\\201\\34.17969\\-97.41661\\201\\36.13281\\-97.17826\\201\\40.03906\\-96.50646\\201\\41.99219\\-96.27462\\201\\47.85156\\-95.8877\\201\\51.75781\\-95.71167\\201\\55.66406\\-95.60287\\201\\59.57031\\-95.59164\\201\\63.47656\\-95.71625\\201\\69.33594\\-96.02569\\201\\73.24219\\-96.4061\\201\\77.14844\\-97.38028\\201\\81.05469\\-98.1491\\201\\83.00781\\-98.92123\\201\\84.96094\\-99.47995\\201\\86.91406\\-99.84731\\201\\88.86719\\-100.4882\\201\\90.82031\\-101.3683\\201\\92.77344\\-102.0095\\201\\94.72656\\-103.164\\201\\96.67969\\-104.1227\\201\\98.63281\\-105.4635\\201\\102.5391\\-107.6655\\201\\104.4922\\-109.1099\\201\\108.3984\\-112.154\\201\\110.3516\\-113.9134\\201\\112.3047\\-115.7989\\201\\114.6214\\-118.2266\\201\\116.2195\\-120.1797\\201\\117.4805\\-122.1328\\201\\118.1641\\-122.9873\\201\\120.1172\\-125.9359\\201\\122.575\\-129.9453\\201\\123.2894\\-131.8984\\201\\124.3717\\-133.8516\\201\\125.0755\\-135.8047\\201\\126.8144\\-139.7109\\201\\127.4572\\-141.6641\\201\\128.319\\-143.6172\\201\\129.2087\\-147.5234\\201\\130.3101\\-151.4297\\201\\130.6676\\-153.3828\\201\\131.3382\\-159.2422\\201\\132.095\\-163.1484\\201\\132.3496\\-165.1016\\201\\132.5057\\-167.0547\\201\\132.6959\\-170.9609\\201\\132.8125\\-176.8203\\201\\132.7787\\-180.7266\\201\\132.6959\\-184.6328\\201\\132.1825\\-200.2578\\201\\131.9025\\-204.1641\\201\\131.7082\\-206.1172\\201\\130.6995\\-217.8359\\201\\130.4102\\-219.7891\\201\\129.3202\\-223.6953\\201\\128.5156\\-227.6016\\201\\127.0207\\-231.5078\\201\\126.3758\\-233.4609\\201\\125.3236\\-235.4141\\201\\124.7373\\-237.3672\\201\\123.729\\-239.3203\\201\\122.3108\\-243.2266\\201\\122.0703\\-243.5623\\201\\120.1172\\-247.2865\\201\\118.1641\\-250.6284\\201\\117.8409\\-251.0391\\201\\116.9835\\-252.9922\\201\\115.6924\\-254.9453\\201\\114.5399\\-256.8984\\201\\111.4898\\-260.8047\\201\\108.8455\\-264.7109\\201\\106.4453\\-267.5575\\201\\101.9744\\-272.5234\\201\\100.5859\\-273.9214\\201\\96.67969\\-277.6343\\201\\95.95758\\-278.3828\\201\\92.77344\\-281.2863\\201\\88.86719\\-284.524\\201\\86.69411\\-286.1953\\201\\83.00781\\-288.9258\\201\\79.10156\\-291.3281\\201\\77.14844\\-292.7945\\201\\75.00989\\-294.0078\\201\\73.24219\\-294.8861\\201\\71.28906\\-295.5804\\201\\69.33594\\-296.6022\\201\\67.38281\\-297.193\\201\\65.42969\\-298.218\\201\\61.52344\\-299.6053\\201\\59.57031\\-300.4398\\201\\55.66406\\-301.4532\\201\\53.71094\\-302.1927\\201\\51.75781\\-302.6123\\201\\49.80469\\-302.9245\\201\\47.85156\\-303.3788\\201\\45.89844\\-304.1404\\201\\41.99219\\-304.9807\\201\\38.08594\\-306.1613\\201\\32.22656\\-307.1041\\201\\28.32031\\-307.8765\\201\\26.36719\\-308.1614\\201\\22.46094\\-308.5281\\201\\18.55469\\-308.8016\\201\\16.60156\\-308.8803\\201\\12.69531\\-309.1381\\201\\6.835938\\-309.6557\\201\\0.9765625\\-309.8937\\201\\-2.929688\\-309.9277\\201"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002200"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "271"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "227"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-32.22656\\-307.4844\\203\\-34.17969\\-306.6061\\203\\-38.08594\\-306.3246\\203\\-40.03906\\-306.0857\\203\\-41.99219\\-304.6846\\203\\-43.94531\\-304.5751\\203\\-47.85156\\-302.925\\203\\-49.80469\\-302.7671\\203\\-51.75781\\-302.2629\\203\\-53.71094\\-301.4862\\203\\-55.66406\\-300.5088\\203\\-57.61719\\-300.2839\\203\\-59.57031\\-299.0259\\203\\-61.52344\\-298.5941\\203\\-63.47656\\-296.9858\\203\\-65.42969\\-296.3446\\203\\-67.38281\\-295.4615\\203\\-71.28906\\-293.4809\\203\\-73.24219\\-292.8369\\203\\-75.19531\\-291.0544\\203\\-77.14844\\-290.5085\\203\\-79.10156\\-288.8061\\203\\-81.05469\\-288.1211\\203\\-83.31948\\-286.1953\\203\\-86.04677\\-284.2422\\203\\-86.91406\\-283.4522\\203\\-88.86719\\-281.9794\\203\\-90.82031\\-280.8991\\203\\-91.36746\\-280.3359\\203\\-94.72656\\-277.4311\\203\\-95.9744\\-276.4297\\203\\-98.63281\\-274.0024\\203\\-100.5859\\-272.0284\\203\\-102.201\\-270.5703\\203\\-104.4922\\-268.305\\203\\-110.3516\\-262.1147\\203\\-114.2578\\-257.4031\\203\\-114.7911\\-256.8984\\203\\-116.2684\\-254.9453\\203\\-117.3937\\-252.9922\\203\\-120.4826\\-249.0859\\203\\-121.6211\\-247.1328\\203\\-122.9309\\-245.1797\\203\\-123.7755\\-243.2266\\203\\-124.8519\\-241.2734\\203\\-125.6419\\-239.3203\\203\\-126.7545\\-237.3672\\203\\-127.5618\\-235.4141\\203\\-128.5707\\-233.4609\\203\\-129.1302\\-231.5078\\203\\-129.9232\\-229.5547\\203\\-130.6122\\-227.6016\\203\\-130.9933\\-225.6484\\203\\-131.56\\-223.6953\\203\\-132.3412\\-221.7422\\203\\-133.202\\-217.8359\\203\\-133.8412\\-215.8828\\203\\-134.2861\\-213.9297\\203\\-134.5993\\-211.9766\\203\\-135.3692\\-206.1172\\203\\-135.9535\\-202.2109\\203\\-136.2565\\-198.3047\\203\\-136.4159\\-194.3984\\203\\-136.5004\\-190.4922\\203\\-136.5125\\-186.5859\\203\\-136.3011\\-180.7266\\203\\-135.9535\\-176.8203\\203\\-135.3369\\-172.9141\\203\\-135.0812\\-170.9609\\203\\-134.4851\\-165.1016\\203\\-134.2448\\-163.1484\\203\\-133.8557\\-161.1953\\203\\-133.3313\\-159.2422\\203\\-132.2706\\-153.3828\\203\\-131.5499\\-151.4297\\203\\-131.0379\\-149.4766\\203\\-130.7465\\-147.5234\\203\\-130.313\\-145.5703\\203\\-129.5386\\-143.6172\\203\\-128.5539\\-139.7109\\203\\-127.6945\\-137.7578\\203\\-126.9585\\-135.8047\\203\\-124.9777\\-131.8984\\203\\-124.0938\\-129.9453\\203\\-123.0217\\-127.9922\\203\\-120.6055\\-124.0859\\203\\-114.2578\\-116.4031\\203\\-112.3047\\-114.5029\\203\\-109.9466\\-112.3672\\203\\-106.4453\\-109.4492\\203\\-104.4922\\-108.0689\\203\\-102.5391\\-107.1523\\203\\-100.5859\\-105.9316\\203\\-98.63281\\-105.2195\\203\\-96.67969\\-104.1026\\203\\-94.72656\\-103.4208\\203\\-92.756\\-102.6016\\203\\-90.82031\\-101.9446\\203\\-86.91406\\-101.1367\\203\\-84.96094\\-100.5035\\203\\-83.00781\\-100.0373\\203\\-77.14844\\-99.33655\\203\\-73.24219\\-98.54671\\203\\-71.28906\\-98.22447\\203\\-69.33594\\-98.03246\\203\\-57.61719\\-97.20924\\203\\-51.75781\\-96.63368\\203\\-47.85156\\-96.41666\\203\\-41.99219\\-96.29829\\203\\-36.13281\\-96.35525\\203\\-32.22656\\-96.5806\\203\\-26.36719\\-97.36919\\203\\-22.46094\\-97.75259\\203\\-18.55469\\-98.30837\\203\\-14.64844\\-99.38361\\203\\-10.74219\\-100.1602\\203\\-8.789063\\-100.945\\203\\-6.835938\\-101.5643\\203\\-4.882813\\-102.0426\\203\\-2.929688\\-102.8334\\203\\-0.9765625\\-103.386\\203\\0.9765625\\-103.6674\\203\\2.929688\\-103.7764\\203\\4.882813\\-103.6674\\203\\6.835938\\-103.3817\\203\\8.789063\\-102.7983\\203\\10.74219\\-102.0253\\203\\12.69531\\-101.5579\\203\\14.64844\\-100.9595\\203\\16.60156\\-100.1735\\203\\18.55469\\-99.79752\\203\\22.46094\\-99.30125\\203\\24.41406\\-98.95526\\203\\26.36719\\-98.43623\\203\\30.27344\\-97.90337\\203\\36.13281\\-97.30428\\203\\41.99219\\-96.42738\\203\\43.94531\\-96.21416\\203\\47.85156\\-95.96622\\203\\51.75781\\-95.80278\\203\\55.66406\\-95.7066\\203\\59.57031\\-95.68514\\203\\63.47656\\-95.81899\\203\\69.33594\\-96.10742\\203\\73.24219\\-96.50646\\203\\77.14844\\-97.45869\\203\\81.05469\\-98.23335\\203\\83.00781\\-99.01854\\203\\84.96094\\-99.52679\\203\\86.91406\\-99.88494\\203\\88.86719\\-100.5618\\203\\90.82031\\-101.4135\\203\\92.77344\\-102.0604\\203\\94.72656\\-103.218\\203\\96.67969\\-104.1653\\203\\98.63281\\-105.4974\\203\\100.5859\\-106.6563\\203\\102.5391\\-107.6759\\203\\104.4922\\-109.1351\\203\\106.4453\\-110.7042\\203\\108.3984\\-112.154\\203\\110.3516\\-113.9018\\203\\112.3047\\-115.7648\\203\\114.6554\\-118.2266\\203\\116.2694\\-120.1797\\203\\117.5197\\-122.1328\\203\\120.327\\-126.0391\\203\\121.4012\\-127.9922\\203\\122.6367\\-129.9453\\203\\123.3573\\-131.8984\\203\\124.4796\\-133.8516\\203\\125.1563\\-135.8047\\203\\126.1405\\-137.7578\\203\\127.6131\\-141.6641\\203\\128.4363\\-143.6172\\203\\129.311\\-147.5234\\203\\130.4232\\-151.4297\\203\\130.7465\\-153.3828\\203\\131.1907\\-157.2891\\203\\131.515\\-159.2422\\203\\131.9975\\-161.1953\\203\\132.3242\\-163.1484\\203\\132.5291\\-165.1016\\203\\132.7883\\-169.0078\\203\\132.9371\\-172.9141\\203\\132.9845\\-176.8203\\203\\132.9216\\-182.6797\\203\\132.5671\\-192.4453\\203\\132.3901\\-200.2578\\203\\132.172\\-204.1641\\203\\131.8359\\-208.0006\\203\\131.3664\\-211.9766\\203\\130.7761\\-217.8359\\203\\130.5151\\-219.7891\\203\\130.0289\\-221.7422\\203\\129.3912\\-223.6953\\203\\128.5592\\-227.6016\\203\\127.9297\\-229.3431\\203\\127.0336\\-231.5078\\203\\126.3758\\-233.4609\\203\\125.3196\\-235.4141\\203\\124.7342\\-237.3672\\203\\123.7497\\-239.3203\\203\\122.3524\\-243.2266\\203\\121.2357\\-245.1797\\203\\120.1172\\-247.3281\\203\\118.1641\\-250.6848\\203\\117.8861\\-251.0391\\203\\116.9705\\-252.9922\\203\\114.5442\\-256.8984\\203\\112.9729\\-258.8516\\203\\109.5332\\-262.7578\\203\\108.6629\\-264.7109\\203\\106.4453\\-267.3049\\203\\105.0548\\-268.6172\\203\\103.2715\\-270.5703\\203\\102.5391\\-271.2273\\203\\101.4367\\-272.5234\\203\\99.28191\\-274.4766\\203\\98.63281\\-275.214\\203\\96.67969\\-277.0342\\203\\95.47822\\-278.3828\\203\\93.33062\\-280.3359\\203\\92.77344\\-280.9455\\203\\90.82031\\-282.6043\\203\\88.86719\\-283.395\\203\\88.01997\\-284.2422\\203\\85.80405\\-286.1953\\203\\84.96094\\-287.1251\\203\\81.05469\\-289.3565\\203\\80.26886\\-290.1016\\203\\77.20686\\-292.0547\\203\\75.19531\\-293.6079\\203\\73.24219\\-294.3265\\203\\71.28906\\-294.8228\\203\\69.33594\\-295.4371\\203\\68.75394\\-295.9609\\203\\67.38281\\-296.7642\\203\\65.42969\\-297.2329\\203\\64.50861\\-297.9141\\203\\63.47656\\-298.4514\\203\\61.52344\\-298.7007\\203\\59.57031\\-299.9348\\203\\57.61719\\-300.2876\\203\\55.66406\\-300.9439\\203\\53.71094\\-301.3079\\203\\51.75781\\-301.4839\\203\\49.80469\\-302.4272\\203\\47.85156\\-302.6891\\203\\45.89844\\-302.8178\\203\\43.94531\\-303.9881\\203\\41.99219\\-304.4516\\203\\40.03906\\-304.5427\\203\\38.08594\\-305.1461\\203\\36.13281\\-306.1109\\203\\32.22656\\-306.3443\\203\\30.27344\\-306.8688\\203\\28.32031\\-307.2518\\203\\26.36719\\-307.4506\\203\\22.46094\\-307.6659\\203\\20.50781\\-307.6878\\203\\18.55469\\-308.202\\203\\16.60156\\-308.4886\\203\\14.64844\\-308.5761\\203\\6.835938\\-308.7249\\203\\-2.929688\\-308.7946\\203\\-8.789063\\-308.7884\\203\\-16.60156\\-308.7051\\203\\-22.46094\\-308.547\\203\\-24.41406\\-307.8235\\203\\-28.32031\\-307.8064\\203"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002199"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "280"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "228"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.91406\\-280.4469\\205\\-88.86719\\-279.2467\\205\\-90.82031\\-278.8235\\205\\-92.77344\\-276.9073\\205\\-94.6841\\-276.4297\\205\\-96.77124\\-274.4766\\205\\-98.63281\\-272.8665\\205\\-100.9994\\-270.5703\\205\\-102.5391\\-268.9271\\205\\-104.4922\\-267.121\\205\\-106.9137\\-264.7109\\205\\-110.6663\\-260.8047\\205\\-111.259\\-258.8516\\205\\-115.2433\\-254.9453\\205\\-116.8887\\-252.9922\\205\\-117.6227\\-251.0391\\205\\-119.4949\\-249.0859\\205\\-120.1172\\-248.2164\\205\\-120.6275\\-247.1328\\205\\-122.2237\\-245.1797\\205\\-123.0844\\-243.2266\\205\\-124.4343\\-241.2734\\205\\-124.7816\\-239.3203\\205\\-125.4198\\-237.3672\\205\\-125.9766\\-236.6317\\205\\-126.578\\-235.4141\\205\\-127.9835\\-233.4609\\205\\-129.0248\\-231.5078\\205\\-129.9072\\-229.5547\\205\\-131.4745\\-223.6953\\205\\-132.4185\\-221.7422\\205\\-133.148\\-217.8359\\205\\-134.0008\\-215.8828\\205\\-134.4161\\-213.9297\\205\\-135.0281\\-208.0703\\205\\-135.6211\\-206.1172\\205\\-135.8838\\-204.1641\\205\\-136.1873\\-200.2578\\205\\-136.387\\-194.3984\\205\\-136.4731\\-188.5391\\205\\-136.453\\-186.5859\\205\\-136.5247\\-182.6797\\205\\-136.323\\-178.7734\\205\\-135.9258\\-174.8672\\205\\-135.2637\\-170.9609\\205\\-134.4601\\-163.1484\\205\\-134.1883\\-161.1953\\205\\-133.2335\\-157.2891\\205\\-132.558\\-153.3828\\205\\-132.0476\\-151.4297\\205\\-131.335\\-149.4766\\205\\-130.5925\\-145.5703\\205\\-129.2555\\-141.6641\\205\\-128.7984\\-139.7109\\205\\-128.1756\\-137.7578\\205\\-127.233\\-135.8047\\205\\-126.4335\\-133.8516\\205\\-125.2294\\-131.8984\\205\\-124.4181\\-129.9453\\205\\-123.1658\\-127.9922\\205\\-122.0787\\-126.0391\\205\\-120.7702\\-124.0859\\205\\-118.1641\\-120.8794\\205\\-117.5106\\-120.1797\\205\\-114.3244\\-116.2734\\205\\-112.3047\\-114.362\\205\\-107.7946\\-110.4141\\205\\-106.4453\\-109.3682\\205\\-104.4922\\-108.0043\\205\\-102.5391\\-107.1305\\205\\-100.5859\\-105.9316\\205\\-98.63281\\-105.2506\\205\\-96.67969\\-104.124\\205\\-94.72656\\-103.4486\\205\\-92.72112\\-102.6016\\205\\-90.82031\\-101.9564\\205\\-86.91406\\-101.16\\205\\-84.96094\\-100.5322\\205\\-83.00781\\-100.0587\\205\\-81.05469\\-99.77975\\205\\-77.14844\\-99.35217\\205\\-75.19531\\-99.02762\\205\\-71.28906\\-98.26994\\205\\-69.33594\\-98.06678\\205\\-57.61719\\-97.30428\\205\\-49.80469\\-96.64745\\205\\-45.89844\\-96.46036\\205\\-41.99219\\-96.42738\\205\\-36.13281\\-96.55518\\205\\-34.17969\\-96.67561\\205\\-26.36719\\-97.57277\\205\\-22.46094\\-97.96541\\205\\-20.50781\\-98.24233\\205\\-16.60156\\-99.26651\\205\\-12.69531\\-99.96237\\205\\-8.789063\\-101.327\\205\\-6.835938\\-101.8119\\205\\-4.882813\\-102.4485\\205\\-2.929688\\-103.2352\\205\\-0.9765625\\-103.6287\\205\\0.9765625\\-103.8879\\205\\2.929688\\-104.0054\\205\\4.882813\\-103.8983\\205\\6.835938\\-103.6095\\205\\8.789063\\-103.1113\\205\\10.74219\\-102.2581\\205\\14.64844\\-101.1829\\205\\16.60156\\-100.4061\\205\\18.55469\\-99.91152\\205\\24.41406\\-99.14849\\205\\28.32031\\-98.29858\\205\\30.27344\\-98.022\\205\\38.08594\\-97.16333\\205\\41.99219\\-96.55518\\205\\43.94531\\-96.31681\\205\\47.85156\\-96.05001\\205\\53.71094\\-95.83874\\205\\57.61719\\-95.79188\\205\\63.47656\\-95.91788\\205\\69.33594\\-96.24242\\205\\71.28906\\-96.4061\\205\\73.24219\\-96.71947\\205\\75.19531\\-97.17826\\205\\79.10156\\-97.89542\\205\\81.05469\\-98.33849\\205\\83.00781\\-99.10056\\205\\84.96094\\-99.58769\\205\\86.91406\\-99.93108\\205\\90.82031\\-101.4653\\205\\92.77344\\-102.126\\205\\94.72656\\-103.274\\205\\96.67969\\-104.1861\\205\\98.63281\\-105.5029\\205\\100.5859\\-106.6563\\205\\102.5391\\-107.6759\\205\\104.4922\\-109.1225\\205\\106.4453\\-110.6778\\205\\108.3984\\-112.1298\\205\\112.3047\\-115.7353\\205\\114.6803\\-118.2266\\205\\116.2694\\-120.1797\\205\\117.5197\\-122.1328\\205\\118.1641\\-122.9093\\205\\120.1172\\-125.7674\\205\\120.379\\-126.0391\\205\\121.4377\\-127.9922\\205\\122.6807\\-129.9453\\205\\123.409\\-131.8984\\205\\124.5212\\-133.8516\\205\\125.2009\\-135.8047\\205\\126.2642\\-137.7578\\205\\126.9745\\-139.7109\\205\\128.5192\\-143.6172\\205\\129.3519\\-147.5234\\205\\129.9688\\-149.4766\\205\\130.4102\\-151.4297\\205\\130.9673\\-155.3359\\205\\131.4361\\-159.2422\\205\\131.7368\\-161.1953\\205\\132.6201\\-165.1016\\205\\132.8316\\-169.0078\\205\\132.9643\\-174.8672\\205\\132.9036\\-182.6797\\205\\132.5092\\-194.3984\\205\\132.3822\\-200.2578\\205\\131.8359\\-202.1914\\205\\130.8335\\-204.1641\\205\\130.7189\\-211.9766\\205\\130.5664\\-215.8828\\205\\129.2646\\-219.7891\\205\\129.1297\\-221.7422\\205\\128.0296\\-225.6484\\205\\127.7061\\-227.6016\\205\\126.937\\-229.5547\\205\\126.3043\\-231.5078\\205\\124.6721\\-233.4609\\205\\124.5117\\-235.4141\\205\\124.0234\\-236.6305\\205\\123.4482\\-237.3672\\205\\122.794\\-239.3203\\205\\122.0703\\-240.7423\\205\\121.6185\\-241.2734\\205\\120.8283\\-243.2266\\205\\120.3021\\-245.1797\\205\\118.5238\\-247.1328\\205\\118.1641\\-248.3921\\205\\117.657\\-249.0859\\205\\116.2109\\-251.8235\\205\\115.1778\\-252.9922\\205\\114.5591\\-254.9453\\205\\112.3047\\-257.1378\\205\\110.3516\\-257.0538\\205\\108.3984\\-258.6074\\205\\106.4453\\-258.2656\\205\\104.4922\\-259.0957\\205\\102.5391\\-259.0469\\205\\100.5859\\-259.0957\\205\\98.63281\\-260.0723\\205\\94.72656\\-260.0723\\205\\92.77344\\-261.0488\\205\\90.82031\\-260.9674\\205\\88.86719\\-261.0488\\205\\86.91406\\-261.3906\\205\\84.96094\\-261.5371\\205\\83.00781\\-262.0254\\205\\81.05469\\-262.0254\\205\\79.10156\\-262.1719\\205\\77.14844\\-262.4323\\205\\75.19531\\-262.5625\\205\\73.24219\\-263.002\\205\\69.33594\\-263.002\\205\\67.38281\\-263.7344\\205\\65.42969\\-263.3438\\205\\63.47656\\-263.4902\\205\\61.52344\\-264.3854\\205\\59.57031\\-263.7344\\205\\55.66406\\-264.2227\\205\\55.17578\\-264.7109\\205\\53.71094\\-265.1992\\205\\51.75781\\-265.2969\\205\\49.80469\\-265.0365\\205\\47.85156\\-265.6875\\205\\45.89844\\-265.6875\\205\\43.94531\\-266.2979\\205\\41.99219\\-266.5664\\205\\39.55078\\-266.6641\\205\\36.13281\\-268.1289\\205\\32.22656\\-267.6406\\205\\30.27344\\-268.9427\\205\\26.36719\\-268.9427\\205\\24.41406\\-269.8379\\205\\22.46094\\-269.8379\\205\\20.50781\\-270.2448\\205\\18.55469\\-270.8145\\205\\16.60156\\-271.1563\\205\\14.64844\\-270.8958\\205\\12.69531\\-271.0586\\205\\10.74219\\-271.5469\\205\\8.789063\\-272.3281\\205\\6.835938\\-272.3839\\205\\4.882813\\-272.7188\\205\\2.929688\\-272.2793\\205\\0.9765625\\-272.7676\\205\\-0.9765625\\-273.1094\\205\\-2.929688\\-273.2559\\205\\-4.882813\\-273.5\\205\\-6.835938\\-273.8906\\205\\-8.789063\\-273.6628\\205\\-10.74219\\-274.2324\\205\\-14.64844\\-274.151\\205\\-16.60156\\-274.7207\\205\\-18.55469\\-274.7207\\205\\-20.50781\\-275.4531\\205\\-28.32031\\-275.4531\\205\\-32.22656\\-276.7552\\205\\-34.17969\\-276.918\\205\\-36.13281\\-277.4063\\205\\-38.08594\\-276.7552\\205\\-40.03906\\-278.0573\\205\\-41.99219\\-278.0573\\205\\-43.94531\\-278.7083\\205\\-47.85156\\-278.7083\\205\\-49.80469\\-279.3594\\205\\-51.75781\\-279.3594\\205\\-53.71094\\-279.6035\\205\\-55.66406\\-280.5313\\205\\-57.61719\\-280.5313\\205\\-59.57031\\-280.9219\\205\\-60.30273\\-280.3359\\205\\-61.52344\\-279.7934\\205\\-63.15104\\-280.3359\\205\\-63.47656\\-280.5801\\205\\-65.42969\\-280.1406\\205\\-69.33594\\-280.1964\\205\\-71.28906\\-280.5801\\205\\-77.14844\\-280.5801\\205\\-79.10156\\-280.1964\\205\\-81.05469\\-280.9219\\205\\-83.00781\\-281.3125\\205\\-84.96094\\-281.8008\\205"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002198"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "282"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "229"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-126.6741\\-227.6016\\207\\-127.9297\\-226.9738\\207\\-128.5482\\-225.6484\\207\\-128.9063\\-223.6953\\207\\-129.8828\\-222.7861\\207\\-130.3415\\-221.7422\\207\\-130.7828\\-219.7891\\207\\-130.9204\\-217.8359\\207\\-131.8359\\-216.7896\\207\\-132.2368\\-215.8828\\207\\-132.6238\\-213.9297\\207\\-132.872\\-208.0703\\207\\-133.7891\\-207.1304\\207\\-134.476\\-206.1172\\207\\-134.6393\\-200.2578\\207\\-134.7892\\-188.5391\\207\\-134.7969\\-186.5859\\207\\-135.7422\\-183.7999\\207\\-136.0307\\-182.6797\\207\\-135.9435\\-178.7734\\207\\-135.7107\\-174.8672\\207\\-135.4465\\-172.9141\\207\\-134.8763\\-170.9609\\207\\-134.6866\\-169.0078\\207\\-134.4125\\-163.1484\\207\\-134.0728\\-161.1953\\207\\-133.0357\\-159.2422\\207\\-132.803\\-155.3359\\207\\-132.5966\\-153.3828\\207\\-131.7274\\-151.4297\\207\\-131.1512\\-149.4766\\207\\-130.6956\\-145.5703\\207\\-130.2059\\-143.6172\\207\\-129.4358\\-141.6641\\207\\-128.4018\\-137.7578\\207\\-127.4515\\-135.8047\\207\\-126.6413\\-133.8516\\207\\-125.4085\\-131.8984\\207\\-124.543\\-129.9453\\207\\-123.2747\\-127.9922\\207\\-122.2199\\-126.0391\\207\\-120.8761\\-124.0859\\207\\-118.1641\\-120.7434\\207\\-117.6348\\-120.1797\\207\\-114.4695\\-116.2734\\207\\-112.3047\\-114.2633\\207\\-107.8525\\-110.4141\\207\\-104.4922\\-107.983\\207\\-102.5391\\-107.1347\\207\\-100.5859\\-105.9701\\207\\-98.63281\\-105.2665\\207\\-96.67969\\-104.1529\\207\\-94.72656\\-103.4702\\207\\-92.65351\\-102.6016\\207\\-90.82031\\-101.9605\\207\\-86.91406\\-101.1733\\207\\-84.96094\\-100.5776\\207\\-83.00781\\-100.0895\\207\\-81.05469\\-99.79752\\207\\-77.14844\\-99.40189\\207\\-75.19531\\-99.14156\\207\\-71.28906\\-98.40234\\207\\-69.33594\\-98.17336\\207\\-65.42969\\-97.91505\\207\\-55.66406\\-97.31898\\207\\-49.80469\\-96.87963\\207\\-45.89844\\-96.64745\\207\\-43.94531\\-96.62012\\207\\-38.08594\\-96.8098\\207\\-34.17969\\-97.07422\\207\\-28.32031\\-97.59159\\207\\-24.41406\\-97.98088\\207\\-22.46094\\-98.26062\\207\\-18.55469\\-99.20896\\207\\-14.64844\\-99.84943\\207\\-12.69531\\-100.4005\\207\\-10.74219\\-101.2344\\207\\-6.835938\\-102.2233\\207\\-4.882813\\-103.0964\\207\\-2.929688\\-103.5999\\207\\0.9765625\\-104.2507\\207\\2.929688\\-104.4599\\207\\4.882813\\-104.2956\\207\\6.835938\\-103.9353\\207\\8.789063\\-103.4362\\207\\12.69531\\-101.9075\\207\\14.64844\\-101.426\\207\\18.55469\\-100.1176\\207\\20.50781\\-99.81549\\207\\26.36719\\-99.02994\\207\\28.32031\\-98.55988\\207\\30.27344\\-98.19846\\207\\32.22656\\-97.93976\\207\\38.08594\\-97.31898\\207\\40.03906\\-97.07422\\207\\43.94531\\-96.47166\\207\\47.85156\\-96.1801\\207\\53.71094\\-95.97908\\207\\57.61719\\-95.9451\\207\\63.47656\\-96.07487\\207\\69.33594\\-96.47166\\207\\71.28906\\-96.70463\\207\\73.24219\\-97.06994\\207\\79.10156\\-98.02164\\207\\81.05469\\-98.55988\\207\\83.00781\\-99.25246\\207\\86.91406\\-100.0333\\207\\88.86719\\-100.8544\\207\\92.77344\\-102.2716\\207\\94.72656\\-103.4048\\207\\96.67969\\-104.3415\\207\\100.5859\\-106.7836\\207\\102.5391\\-107.7767\\207\\104.4922\\-109.2126\\207\\108.3984\\-112.2442\\207\\110.6491\\-114.3203\\207\\111.8601\\-116.2734\\207\\115.6734\\-120.1797\\207\\117.2406\\-122.1328\\207\\118.248\\-124.0859\\207\\120.1172\\-126.4878\\207\\122.0703\\-129.5432\\207\\122.4073\\-129.9453\\207\\122.9452\\-131.8984\\207\\123.83\\-133.8516\\207\\124.9012\\-135.8047\\207\\125.4391\\-137.7578\\207\\126.7034\\-139.7109\\207\\127.0116\\-141.6641\\207\\128.2097\\-143.6172\\207\\128.5015\\-145.5703\\207\\129.3855\\-149.4766\\207\\129.351\\-151.4297\\207\\129.4899\\-153.3828\\207\\130.1651\\-155.3359\\207\\130.2299\\-161.1953\\207\\130.3275\\-163.1484\\207\\131.3065\\-165.1016\\207\\131.4314\\-169.0078\\207\\131.4364\\-170.9609\\207\\131.3477\\-174.8672\\207\\131.121\\-180.7266\\207\\130.9136\\-184.6328\\207\\130.4139\\-192.4453\\207\\130.2426\\-196.3516\\207\\130.0746\\-198.3047\\207\\129.8828\\-198.7523\\207\\127.9297\\-198.5091\\207\\125.9766\\-198.4675\\207\\124.0234\\-198.5488\\207\\118.1641\\-198.5488\\207\\116.2109\\-198.9395\\207\\114.7461\\-200.2578\\207\\114.2578\\-200.4301\\207\\108.3984\\-200.502\\207\\106.4453\\-201.1646\\207\\104.4922\\-200.6205\\207\\102.5391\\-200.5675\\207\\100.5859\\-201.4514\\207\\98.63281\\-201.5895\\207\\97.26563\\-202.2109\\207\\94.72656\\-202.7188\\207\\90.82031\\-202.7188\\207\\88.86719\\-202.2342\\207\\86.91406\\-201.9446\\207\\84.96094\\-201.9668\\207\\83.00781\\-202.1133\\207\\81.05469\\-202.7399\\207\\79.10156\\-202.7399\\207\\75.19531\\-202.875\\207\\73.24219\\-203.0015\\207\\71.95724\\-204.1641\\207\\71.28906\\-204.4814\\207\\70.58377\\-204.1641\\207\\69.33594\\-203.0945\\207\\67.38281\\-202.9855\\207\\65.42969\\-203.3503\\207\\64.45313\\-204.1641\\207\\63.47656\\-204.5213\\207\\59.57031\\-204.5213\\207\\57.61719\\-205.2555\\207\\56.57087\\-206.1172\\207\\55.66406\\-206.3523\\207\\54.25347\\-206.1172\\207\\53.71094\\-205.7103\\207\\51.75781\\-204.641\\207\\49.80469\\-206.177\\207\\45.89844\\-206.6473\\207\\43.94531\\-208.2426\\207\\41.99219\\-208.1313\\207\\40.03906\\-206.4485\\207\\38.08594\\-206.9375\\207\\36.59539\\-208.0703\\207\\36.13281\\-208.2426\\207\\30.27344\\-208.2769\\207\\28.32031\\-208.6563\\207\\26.36719\\-208.4558\\207\\24.41406\\-209.0469\\207\\23.38867\\-210.0234\\207\\22.46094\\-210.5249\\207\\20.50781\\-210.8122\\207\\19.19158\\-211.9766\\207\\18.55469\\-212.2583\\207\\14.64844\\-212.3202\\207\\12.69531\\-212.8404\\207\\10.74219\\-214.8656\\207\\9.632458\\-215.8828\\207\\8.789063\\-216.4451\\207\\6.835938\\-216.9082\\207\\5.67627\\-217.8359\\207\\4.882813\\-218.1119\\207\\2.929688\\-218.1544\\207\\1.464844\\-217.8359\\207\\0.9765625\\-217.4603\\207\\-0.9765625\\-216.5634\\207\\-2.476283\\-217.8359\\207\\-2.792969\\-219.7891\\207\\-3.78418\\-219.7891\\207\\-4.882813\\-219.1613\\207\\-8.789063\\-218.3583\\207\\-12.69531\\-218.2225\\207\\-14.64844\\-219.1613\\207\\-15.38086\\-219.7891\\207\\-16.60156\\-220.0554\\207\\-20.50781\\-220.0909\\207\\-22.46094\\-218.3242\\207\\-24.41406\\-218.427\\207\\-25.85178\\-219.7891\\207\\-26.36719\\-220.1146\\207\\-32.22656\\-220.0909\\207\\-34.17969\\-220.6726\\207\\-36.13281\\-220.1688\\207\\-38.08594\\-221.7625\\207\\-40.03906\\-221.6608\\207\\-41.99219\\-222.4049\\207\\-43.94531\\-222.4746\\207\\-47.85156\\-222.3807\\207\\-51.75781\\-222.5167\\207\\-53.71094\\-222.5017\\207\\-55.17578\\-223.6953\\207\\-55.66406\\-223.9573\\207\\-57.61719\\-222.5167\\207\\-59.57031\\-222.6141\\207\\-60.94638\\-223.6953\\207\\-61.52344\\-224.005\\207\\-63.47656\\-224.0814\\207\\-64.58334\\-223.6953\\207\\-65.42969\\-222.99\\207\\-66.48763\\-223.6953\\207\\-67.38281\\-223.9573\\207\\-69.33594\\-223.8479\\207\\-71.28906\\-222.5444\\207\\-72.9852\\-223.6953\\207\\-73.52941\\-223.6953\\207\\-75.19531\\-222.6061\\207\\-77.14844\\-223.47\\207\\-81.05469\\-224.0906\\207\\-83.00781\\-224.0441\\207\\-84.05413\\-223.6953\\207\\-84.96094\\-223.0271\\207\\-86.01888\\-223.6953\\207\\-86.91406\\-225.4857\\207\\-88.86719\\-224.0906\\207\\-90.82031\\-224.4684\\207\\-92.77344\\-224.1836\\207\\-94.72656\\-224.0912\\207\\-96.67969\\-224.557\\207\\-98.63281\\-224.0906\\207\\-100.5859\\-224.1614\\207\\-102.5391\\-225.8835\\207\\-104.4922\\-225.8835\\207\\-106.4453\\-224.2568\\207\\-108.3984\\-225.5597\\207\\-110.3516\\-224.5498\\207\\-112.3047\\-224.3024\\207\\-114.2578\\-224.2908\\207\\-116.2109\\-225.9449\\207\\-118.1641\\-225.9449\\207\\-120.1172\\-227.6602\\207\\-122.0703\\-226.3809\\207\\-124.0234\\-226.3356\\207\\-125.7324\\-227.6016\\207"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002197"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "263"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "230"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-131.8359\\-171.1004\\209\\-132.0539\\-167.0547\\209\\-132.1875\\-163.1484\\209\\-132.0247\\-161.1953\\209\\-130.4726\\-159.2422\\209\\-130.6424\\-153.3828\\209\\-129.862\\-151.4297\\209\\-129.289\\-149.4766\\209\\-129.7689\\-147.5234\\209\\-129.9253\\-145.5703\\209\\-129.2623\\-143.6172\\209\\-128.8806\\-141.6641\\209\\-128.3138\\-139.7109\\209\\-128.0671\\-137.7578\\209\\-126.7183\\-135.8047\\209\\-125.9844\\-133.8516\\209\\-124.0234\\-130.5744\\209\\-123.4444\\-129.9453\\209\\-122.8793\\-127.9922\\209\\-121.2713\\-126.0391\\209\\-120.6172\\-124.0859\\209\\-118.1641\\-121.3917\\209\\-116.2109\\-119.4688\\209\\-115.1808\\-118.2266\\209\\-114.2578\\-117.4084\\209\\-112.3047\\-115.3205\\209\\-111.1424\\-114.3203\\209\\-109.2832\\-112.3672\\209\\-108.3984\\-111.6388\\209\\-106.4453\\-109.6491\\209\\-104.4922\\-108.3361\\209\\-102.5391\\-107.4777\\209\\-100.5859\\-106.9095\\209\\-100.1332\\-106.5078\\209\\-98.63281\\-105.6109\\209\\-94.72656\\-103.7609\\209\\-92.77344\\-103.4784\\209\\-90.82031\\-102.1804\\209\\-86.91406\\-101.8259\\209\\-84.96094\\-100.9606\\209\\-83.00781\\-100.7106\\209\\-81.05469\\-100.5645\\209\\-79.10156\\-99.71162\\209\\-73.24219\\-99.02552\\209\\-69.33594\\-98.40234\\209\\-63.47656\\-97.95643\\209\\-47.85156\\-97.0487\\209\\-45.89844\\-97.01386\\209\\-43.94531\\-97.58422\\209\\-41.99219\\-97.71875\\209\\-32.22656\\-97.79561\\209\\-28.32031\\-97.9567\\209\\-26.36719\\-98.116\\209\\-24.41406\\-99.1729\\209\\-22.46094\\-99.47305\\209\\-18.55469\\-99.67776\\209\\-16.60156\\-99.9035\\209\\-14.64844\\-100.8187\\209\\-12.69531\\-101.2523\\209\\-10.74219\\-101.9525\\209\\-8.789063\\-102.31\\209\\-6.835938\\-103.3208\\209\\-4.882813\\-103.8055\\209\\-2.929688\\-104.1379\\209\\-0.9765625\\-105.5084\\209\\2.929688\\-105.6174\\209\\6.835938\\-105.5371\\209\\8.789063\\-104.1227\\209\\10.74219\\-103.6436\\209\\12.69531\\-102.3978\\209\\14.64844\\-102.0545\\209\\16.60156\\-101.317\\209\\18.55469\\-100.9362\\209\\20.50781\\-100.7161\\209\\22.46094\\-99.89098\\209\\26.36719\\-99.6134\\209\\30.27344\\-99.485\\209\\32.22656\\-98.88697\\209\\34.17969\\-98.04603\\209\\40.03906\\-97.80795\\209\\43.94531\\-97.77141\\209\\45.89844\\-97.30946\\209\\47.85156\\-96.51839\\209\\53.71094\\-96.31153\\209\\57.61719\\-96.28368\\209\\63.47656\\-96.4362\\209\\65.42969\\-96.5806\\209\\67.38281\\-97.703\\209\\69.33594\\-97.78677\\209\\73.24219\\-97.83308\\209\\77.14844\\-98.03548\\209\\78.48987\\-98.69531\\209\\79.10156\\-99.17518\\209\\81.05469\\-99.59724\\209\\83.00781\\-99.7275\\209\\88.86719\\-101.4531\\209\\90.82031\\-102.1475\\209\\92.77344\\-103.56\\209\\94.72656\\-103.9665\\209\\96.67969\\-105.6141\\209\\100.5859\\-107.4283\\209\\102.5391\\-108.8961\\209\\104.4922\\-109.8518\\209\\107.3242\\-112.3672\\209\\108.3984\\-113.5711\\209\\109.2262\\-114.3203\\209\\109.7841\\-116.2734\\209\\111.414\\-118.2266\\209\\113.3827\\-120.1797\\209\\115.2344\\-122.1328\\209\\115.6561\\-124.0859\\209\\117.207\\-126.0391\\209\\118.1641\\-127.0572\\209\\118.5272\\-127.9922\\209\\120.3906\\-129.9453\\209\\120.3451\\-131.8984\\209\\120.4007\\-133.8516\\209\\120.1172\\-134.6506\\209\\118.1641\\-134.5276\\209\\116.5039\\-135.8047\\209\\116.2109\\-136.3906\\209\\114.2578\\-136.7813\\209\\110.3516\\-136.7813\\209\\108.3984\\-137.5137\\209\\104.4922\\-137.5625\\209\\102.5391\\-137.9531\\209\\98.63281\\-137.9531\\209\\96.67969\\-138.4902\\209\\92.77344\\-138.4902\\209\\90.82031\\-138.3438\\209\\88.86719\\-137.9206\\209\\86.91406\\-138.9785\\209\\84.96094\\-138.7344\\209\\83.00781\\-139.0134\\209\\81.05469\\-138.7344\\209\\78.125\\-139.7109\\209\\77.14844\\-139.9551\\209\\75.19531\\-139.9063\\209\\73.24219\\-139.5156\\209\\71.28906\\-140.2969\\209\\69.33594\\-140.0365\\209\\67.38281\\-140.4434\\209\\65.42969\\-141.3385\\209\\63.47656\\-141.4199\\209\\61.52344\\-141.9896\\209\\59.57031\\-143.1289\\209\\57.61719\\-143.373\\209\\55.66406\\-143.4219\\209\\53.71094\\-143.8613\\209\\51.75781\\-143.9427\\209\\49.80469\\-143.8613\\209\\47.85156\\-144.5938\\209\\43.94531\\-145.3262\\209\\41.99219\\-145.082\\209\\39.0625\\-145.5703\\209\\38.08594\\-145.8958\\209\\36.13281\\-145.9365\\209\\34.17969\\-146.5469\\209\\30.27344\\-147.2793\\209\\28.32031\\-147.849\\209\\27.83203\\-147.5234\\209\\26.36719\\-147.1049\\209\\23.92578\\-147.5234\\209\\22.46094\\-148.9883\\209\\20.50781\\-149.151\\209\\18.55469\\-148.221\\209\\16.60156\\-147.4014\\209\\16.40625\\-147.5234\\209\\15.25879\\-149.4766\\209\\17.57813\\-151.4297\\209\\18.35938\\-153.3828\\209\\18.55469\\-153.5223\\209\\19.22286\\-155.3359\\209\\18.55469\\-156.7465\\209\\18.14779\\-157.2891\\209\\16.60156\\-160.6319\\209\\16.11328\\-161.1953\\209\\14.64844\\-162.2173\\209\\13.49198\\-161.1953\\209\\13.73106\\-159.2422\\209\\14.64844\\-158.0313\\209\\15.625\\-157.2891\\209\\15.93339\\-155.3359\\209\\15.80256\\-153.3828\\209\\15.23438\\-151.4297\\209\\14.64844\\-150.6973\\209\\12.69531\\-150.6973\\209\\11.71875\\-147.5234\\209\\10.74219\\-146.73\\209\\9.684245\\-147.5234\\209\\8.789063\\-151.1042\\209\\5.859377\\-151.4297\\209\\4.882813\\-152.4063\\209\\2.929688\\-152.8945\\209\\0.9765625\\-152.4063\\209\\-0.9765625\\-152.4063\\209\\-3.906252\\-151.4297\\209\\-6.835938\\-150.8193\\209\\-8.789063\\-150.7321\\209\\-8.957436\\-151.4297\\209\\-8.789063\\-152.2435\\209\\-8.029513\\-153.3828\\209\\-7.93457\\-155.3359\\209\\-8.32648\\-157.2891\\209\\-8.789063\\-158.7539\\209\\-12.36979\\-157.2891\\209\\-12.69531\\-157.228\\209\\-14.07138\\-155.3359\\209\\-14.64844\\-154.278\\209\\-15.31982\\-153.3828\\209\\-16.60156\\-150.9414\\209\\-20.50781\\-152.1272\\209\\-22.46094\\-152.8945\\209\\-24.41406\\-153.5223\\209\\-26.36719\\-153.9688\\209\\-28.32031\\-155.4754\\209\\-30.27344\\-155.8242\\209\\-32.22656\\-157.0449\\209\\-34.17969\\-157.5332\\209\\-36.13281\\-157.5332\\209\\-40.03906\\-158.998\\209\\-41.01562\\-159.2422\\209\\-40.85286\\-161.1953\\209\\-40.03906\\-162.416\\209\\-38.57422\\-165.1016\\209\\-40.03906\\-165.6875\\209\\-41.99219\\-166.0781\\209\\-43.94531\\-166.7292\\209\\-47.85156\\-166.8105\\209\\-51.75781\\-167.8685\\209\\-53.71094\\-167.8685\\209\\-55.66406\\-168.4219\\209\\-59.57031\\-169.2031\\209\\-65.42969\\-169.9844\\209\\-65.84821\\-169.0078\\209\\-66.16211\\-167.0547\\209\\-67.38281\\-165.4271\\209\\-69.33594\\-165.6875\\209\\-71.28906\\-165.6875\\209\\-73.24219\\-165.9154\\209\\-79.10156\\-165.834\\209\\-81.05469\\-165.6875\\209\\-83.00781\\-164.9063\\209\\-88.86719\\-166.0781\\209\\-90.82031\\-166.3223\\209\\-92.77344\\-166.4688\\209\\-94.72656\\-166.4688\\209\\-96.67969\\-167.2175\\209\\-98.63281\\-167.6406\\209\\-100.5859\\-167.6406\\209\\-102.5391\\-168.0313\\209\\-104.4922\\-168.0313\\209\\-106.4453\\-168.2754\\209\\-108.3984\\-168.4219\\209\\-110.3516\\-168.4219\\209\\-112.3047\\-168.6823\\209\\-114.2578\\-169.1473\\209\\-118.1641\\-169.2031\\209\\-120.1172\\-168.5195\\209\\-122.0703\\-169.1706\\209\\-124.0234\\-169.7054\\209\\-125.9766\\-169.5938\\209\\-129.8828\\-170.4727\\209"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002197"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "231"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "51.75781\\-192.8374\\209\\47.85156\\-191.9751\\209\\45.89844\\-191.3626\\209\\43.94531\\-189.9756\\209\\41.99219\\-188.0658\\209\\40.6562\\-186.5859\\209\\39.25341\\-184.6328\\209\\38.76101\\-182.6797\\209\\38.01957\\-180.7266\\209\\37.71973\\-178.7734\\209\\37.64416\\-176.8203\\209\\37.83308\\-174.8672\\209\\39.07697\\-170.9609\\209\\40.4077\\-169.0078\\209\\41.99219\\-167.0938\\209\\43.94531\\-165.3\\209\\45.89844\\-163.7719\\209\\47.85156\\-162.8125\\209\\51.75781\\-161.8297\\209\\53.71094\\-161.7799\\209\\55.66406\\-161.8635\\209\\57.61719\\-162.2324\\209\\61.52344\\-163.3738\\209\\63.47656\\-165.071\\209\\65.42969\\-167.1659\\209\\66.8288\\-169.0078\\209\\67.50036\\-170.9609\\209\\68.29279\\-172.9141\\209\\68.82983\\-174.8672\\209\\69.01041\\-176.8203\\209\\68.90412\\-178.7734\\209\\68.52979\\-180.7266\\209\\67.87456\\-182.6797\\209\\65.75801\\-186.5859\\209\\64.19906\\-188.5391\\209\\63.47656\\-189.2616\\209\\61.52344\\-190.8434\\209\\59.57031\\-191.5836\\209\\57.61719\\-192.0448\\209\\55.66406\\-192.721\\209\\53.71094\\-192.9473\\209"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002196"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "232"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-83.00781\\-104.6361\\211\\-83.00781\\-104.4937\\211\\-81.05469\\-104.4896\\211\\-79.92188\\-102.6016\\211\\-79.10156\\-102.0473\\211\\-78.125\\-100.6484\\211\\-77.14844\\-100.2377\\211\\-73.24219\\-100.1109\\211\\-65.42969\\-100.105\\211\\-63.47656\\-99.59558\\211\\-61.55599\\-98.69531\\211\\-55.66406\\-98.38308\\211\\-45.89844\\-98.39959\\211\\-45.37354\\-98.69531\\211\\-43.94531\\-100.3512\\211\\-41.99219\\-100.5539\\211\\-39.0625\\-100.6484\\211\\-40.03906\\-100.7569\\211\\-43.94531\\-102.1133\\211\\-45.89844\\-102.5625\\211\\-47.85156\\-102.8269\\211\\-49.80469\\-103.5171\\211\\-51.75781\\-103.8385\\211\\-53.71094\\-104.3594\\211\\-55.66406\\-104.4849\\211\\-59.57031\\-104.4937\\211\\-61.52344\\-104.7988\\211\\-63.47656\\-104.4462\\211\\-67.38281\\-104.4896\\211\\-69.33594\\-104.78\\211\\-71.28906\\-105.1761\\211\\-73.24219\\-105.165\\211\\-77.14844\\-104.4896\\211\\-79.10156\\-104.4659\\211\\-81.05469\\-104.6435\\211"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002196"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "233"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "45.89844\\-191.2246\\211\\43.94531\\-189.441\\211\\43.23557\\-188.5391\\211\\41.29895\\-186.5859\\211\\40.03906\\-184.5932\\211\\39.17034\\-182.6797\\211\\38.04656\\-178.7734\\211\\38.06212\\-176.8203\\211\\38.71783\\-174.8672\\211\\39.1344\\-172.9141\\211\\39.90834\\-170.9609\\211\\41.09792\\-169.0078\\211\\43.94531\\-165.7084\\211\\45.89844\\-164.3343\\211\\51.75781\\-162.8821\\211\\53.71094\\-162.8119\\211\\55.66406\\-163.0798\\211\\57.61719\\-163.2176\\211\\59.57031\\-163.7488\\211\\61.52344\\-164.6063\\211\\62.06092\\-165.1016\\211\\63.73312\\-167.0547\\211\\65.42969\\-169.2883\\211\\66.36002\\-170.9609\\211\\67.10085\\-172.9141\\211\\68.543\\-174.8672\\211\\69.14247\\-176.8203\\211\\68.88458\\-178.7734\\211\\67.82362\\-180.7266\\211\\66.90079\\-182.6797\\211\\66.20002\\-184.6328\\211\\64.85324\\-186.5859\\211\\63.47656\\-189.0774\\211\\62.42559\\-190.4922\\211\\61.52344\\-191.2623\\211\\59.57031\\-191.6682\\211\\57.61719\\-191.6891\\211\\53.71094\\-192.2084\\211\\49.80469\\-191.8809\\211\\47.85156\\-191.8428\\211"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002195"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "234"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "45.89844\\-191.5885\\213\\43.94531\\-189.3946\\213\\42.22552\\-186.5859\\213\\40.52734\\-184.6328\\213\\39.52474\\-182.6797\\213\\38.42298\\-180.7266\\213\\38.04688\\-178.7734\\213\\38.09524\\-176.8203\\213\\38.88434\\-174.8672\\213\\39.47303\\-172.9141\\213\\40.57943\\-170.9609\\213\\41.3769\\-169.0078\\213\\43.09824\\-167.0547\\213\\43.94531\\-165.9517\\213\\45.89844\\-164.2711\\213\\47.85156\\-164.0427\\213\\51.75781\\-163.7856\\213\\53.71094\\-163.7527\\213\\55.66406\\-163.8592\\213\\59.57031\\-163.6367\\213\\61.52344\\-164.8556\\213\\64.68461\\-169.0078\\213\\65.85217\\-170.9609\\213\\66.52222\\-172.9141\\213\\68.27126\\-174.8672\\213\\69.87601\\-176.8203\\213\\68.8829\\-178.7734\\213\\66.91108\\-180.7266\\213\\66.41228\\-182.6797\\213\\65.77897\\-184.6328\\213\\64.27361\\-186.5859\\213\\63.60427\\-188.5391\\213\\62.11605\\-190.4922\\213\\61.52344\\-191.0425\\213\\59.57031\\-191.7453\\213\\57.61719\\-191.4547\\213\\53.71094\\-191.7867\\213\\49.80469\\-191.6541\\213\\47.85156\\-192.1294\\213"
+                     }
+                  }
+               ]
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "1"
+            }
+         },
+         {
+            "3006,002a" : {
+               "Name" : "ROIDisplayColor",
+               "Type" : "String",
+               "Value" : "255\\128\\0"
+            },
+            "3006,0040" : {
+               "Name" : "ContourSequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "0"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.822617\\-185.532\\-53\\-3.217159\\-185.016\\-53\\-4.008816\\-184.5845\\-53\\-5.647892\\-183.1425\\-53\\-6.398726\\-182.0491\\-53\\-7.210587\\-180.1176\\-53\\-7.346458\\-179.2563\\-53\\-7.377643\\-177.2732\\-53\\-7.126414\\-176.1662\\-53\\-6.619712\\-174.8111\\-53\\-5.605105\\-173.2615\\-53\\-4.617378\\-172.2797\\-53\\-2.766951\\-171.1722\\-53\\-1.271545\\-170.6588\\-53\\-0.0942254\\-170.4699\\-53\\2.401256\\-170.6252\\-53\\4.452537\\-171.345\\-53\\5.834437\\-172.2258\\-53\\6.781363\\-173.1533\\-53\\7.660157\\-174.3542\\-53\\8.380367\\-175.9948\\-53\\8.713982\\-178.0575\\-53\\8.469196\\-180.1765\\-53\\7.653542\\-182.0623\\-53\\6.902081\\-183.148\\-53\\5.191735\\-184.6208\\-53\\4.422974\\-185.0313\\-53\\3.000576\\-185.5425\\-53\\1.200459\\-185.8655\\-53\\0.01856305\\-185.8689\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "1"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.341555\\-188.6337\\-51\\-3.535146\\-188.3137\\-51\\-5.369791\\-187.5508\\-51\\-7.173401\\-186.3121\\-51\\-8.14281\\-185.3723\\-51\\-8.990662\\-184.2822\\-51\\-9.847253\\-182.7528\\-51\\-10.39609\\-181.203\\-51\\-10.71813\\-179.6096\\-51\\-10.77989\\-177.9484\\-51\\-10.54996\\-176.1485\\-51\\-10.1444\\-174.7373\\-51\\-9.088316\\-172.5497\\-51\\-8.272603\\-171.4671\\-51\\-7.298368\\-170.4557\\-51\\-6.209515\\-169.5924\\-51\\-4.749192\\-168.7345\\-51\\-2.19852\\-167.8273\\-51\\-0.6399968\\-167.5823\\-51\\1.771882\\-167.5708\\-51\\4.245574\\-168.0636\\-51\\5.91089\\-168.708\\-51\\7.559203\\-169.6802\\-51\\8.420381\\-170.3498\\-51\\9.505224\\-171.4484\\-51\\10.31162\\-172.5158\\-51\\11.35321\\-174.6068\\-51\\11.81211\\-176.1853\\-51\\11.97659\\-177.2013\\-51\\11.94348\\-179.7251\\-51\\11.63167\\-181.2601\\-51\\10.85321\\-183.1923\\-51\\10.08713\\-184.4571\\-51\\8.580834\\-186.1377\\-51\\6.968125\\-187.3102\\-51\\4.756684\\-188.2898\\-51\\3.254199\\-188.6678\\-51\\1.365167\\-188.914\\-51\\-0.09017476\\-188.9274\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "2"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.608414\\-190.8814\\-49\\-2.645632\\-190.735\\-49\\-4.589392\\-190.2724\\-49\\-7.0136\\-189.2481\\-49\\-8.287686\\-188.4489\\-49\\-9.628903\\-187.2869\\-49\\-10.3438\\-186.5149\\-49\\-11.82217\\-184.2494\\-49\\-12.70732\\-181.9412\\-49\\-12.98179\\-180.6998\\-49\\-13.16898\\-178.4189\\-49\\-13.05518\\-176.7242\\-49\\-12.85543\\-175.5786\\-49\\-12.08132\\-173.2456\\-49\\-11.03628\\-171.3663\\-49\\-9.825652\\-169.8201\\-49\\-8.695223\\-168.7595\\-49\\-7.077835\\-167.6154\\-49\\-5.095147\\-166.6542\\-49\\-3.767403\\-166.1914\\-49\\-2.059778\\-165.8097\\-49\\-0.6657854\\-165.6538\\-49\\1.859423\\-165.656\\-49\\3.165309\\-165.8142\\-49\\4.951316\\-166.2173\\-49\\6.370563\\-166.7074\\-49\\8.303261\\-167.6476\\-49\\9.938641\\-168.799\\-49\\11.07829\\-169.8779\\-49\\12.73386\\-172.1206\\-49\\13.48909\\-173.6905\\-49\\14.06981\\-175.5351\\-49\\14.36629\\-177.6962\\-49\\14.37679\\-179.1843\\-49\\13.92681\\-181.9256\\-49\\13.02016\\-184.2536\\-49\\11.53705\\-186.488\\-49\\10.66682\\-187.4052\\-49\\8.596537\\-188.9759\\-49\\7.012528\\-189.7673\\-49\\5.771133\\-190.215\\-49\\3.820653\\-190.6934\\-49\\0.915529\\-190.9782\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "3"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.766109\\-192.449\\-47\\-4.545334\\-192.0033\\-47\\-6.383731\\-191.4537\\-47\\-8.912426\\-190.2184\\-47\\-10.74276\\-188.8016\\-47\\-11.76466\\-187.7107\\-47\\-12.85325\\-186.2136\\-47\\-13.4939\\-185.0675\\-47\\-14.16497\\-183.4894\\-47\\-14.80652\\-181.0453\\-47\\-14.9981\\-178.2717\\-47\\-14.73243\\-175.6446\\-47\\-14.22203\\-173.7833\\-47\\-13.71214\\-172.5214\\-47\\-12.9784\\-171.1141\\-47\\-12.20102\\-169.9789\\-47\\-11.17459\\-168.7754\\-47\\-9.609863\\-167.3787\\-47\\-7.623668\\-166.1301\\-47\\-5.717514\\-165.303\\-47\\-3.140729\\-164.6207\\-47\\-0.2983212\\-164.2986\\-47\\1.37434\\-164.3013\\-47\\4.332889\\-164.6626\\-47\\6.884155\\-165.3468\\-47\\8.175083\\-165.8712\\-47\\9.766849\\-166.7243\\-47\\11.6268\\-168.0956\\-47\\13.3617\\-169.9562\\-47\\14.39541\\-171.511\\-47\\15.38894\\-173.6825\\-47\\15.94131\\-175.6663\\-47\\16.11355\\-176.7408\\-47\\16.20782\\-178.5872\\-47\\16.01542\\-181.0023\\-47\\15.35206\\-183.5091\\-47\\14.85419\\-184.6912\\-47\\13.86121\\-186.4645\\-47\\12.95067\\-187.6651\\-47\\11.65571\\-188.9811\\-47\\10.10412\\-190.1278\\-47\\7.54406\\-191.3674\\-47\\5.612908\\-191.9473\\-47\\2.955307\\-192.4017\\-47\\0.9817407\\-192.5283\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "4"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.140761\\-193.7074\\-45\\-4.687198\\-193.3627\\-45\\-6.623366\\-192.8527\\-45\\-8.896114\\-191.9043\\-45\\-10.65378\\-190.7969\\-45\\-11.66073\\-189.9634\\-45\\-12.79229\\-188.8113\\-45\\-13.77693\\-187.5283\\-45\\-14.69869\\-185.9812\\-45\\-15.44591\\-184.3086\\-45\\-16.02585\\-182.3833\\-45\\-16.37223\\-180.4318\\-45\\-16.45874\\-179.1066\\-45\\-16.41418\\-177.2073\\-45\\-16.11909\\-175.2643\\-45\\-15.4728\\-173.0481\\-45\\-14.9034\\-171.7483\\-45\\-13.86018\\-169.9272\\-45\\-12.73055\\-168.4862\\-45\\-11.96184\\-167.6871\\-45\\-10.60552\\-166.5473\\-45\\-9.521469\\-165.8239\\-45\\-7.886041\\-164.9711\\-45\\-6.418256\\-164.3974\\-45\\-4.860384\\-163.9617\\-45\\-2.930271\\-163.5989\\-45\\-0.72114\\-163.4032\\-45\\1.8841\\-163.4224\\-45\\3.771169\\-163.6114\\-45\\5.364509\\-163.879\\-45\\7.559484\\-164.4669\\-45\\9.085904\\-165.0659\\-45\\10.46447\\-165.765\\-45\\11.71759\\-166.56\\-45\\13.49652\\-168.0904\\-45\\15.06668\\-169.9921\\-45\\15.72351\\-171.0691\\-45\\16.67154\\-173.0784\\-45\\17.31111\\-175.2739\\-45\\17.6105\\-177.2485\\-45\\17.65084\\-179.2095\\-45\\17.33424\\-181.8578\\-45\\16.62098\\-184.3224\\-45\\15.88099\\-185.9563\\-45\\14.61162\\-187.969\\-45\\12.93161\\-189.8138\\-45\\11.82021\\-190.7118\\-45\\10.06631\\-191.7967\\-45\\7.79474\\-192.7375\\-45\\5.85596\\-193.2606\\-45\\2.902209\\-193.6915\\-45\\0.6107318\\-193.8097\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "5"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.947727\\-194.6507\\-43\\-6.683777\\-194.0739\\-43\\-8.366441\\-193.4799\\-43\\-10.49791\\-192.3744\\-43\\-11.74501\\-191.4837\\-43\\-12.83203\\-190.5254\\-43\\-14.53089\\-188.5235\\-43\\-15.66893\\-186.6947\\-43\\-16.35616\\-185.2073\\-43\\-16.88515\\-183.6866\\-43\\-17.36\\-181.7038\\-43\\-17.58575\\-179.8169\\-43\\-17.60777\\-177.949\\-43\\-17.42749\\-176.0556\\-43\\-16.99187\\-174.0566\\-43\\-16.29703\\-172.1052\\-43\\-15.68627\\-170.8136\\-43\\-14.61173\\-169.1167\\-43\\-13.76594\\-168.0586\\-43\\-12.5461\\-166.8405\\-43\\-10.72443\\-165.4708\\-43\\-9.581362\\-164.8218\\-43\\-8.044\\-164.128\\-43\\-6.546018\\-163.6264\\-43\\-3.792288\\-163.0456\\-43\\-2.35171\\-162.8714\\-43\\0.1365536\\-162.7499\\-43\\3.502366\\-162.9258\\-43\\5.039333\\-163.1376\\-43\\7.561336\\-163.6948\\-43\\9.051079\\-164.1841\\-43\\10.7699\\-164.9427\\-43\\12.85463\\-166.232\\-43\\14.07534\\-167.2561\\-43\\15.80034\\-169.1895\\-43\\16.66054\\-170.4831\\-43\\17.49128\\-172.1681\\-43\\18.18336\\-174.1126\\-43\\18.61912\\-176.1209\\-43\\18.7822\\-177.8264\\-43\\18.76648\\-179.8252\\-43\\18.54255\\-181.6972\\-43\\18.06285\\-183.6877\\-43\\17.53193\\-185.1978\\-43\\16.81882\\-186.7126\\-43\\16.17732\\-187.8007\\-43\\14.8746\\-189.5352\\-43\\13.99732\\-190.4683\\-43\\12.89922\\-191.4061\\-43\\11.12269\\-192.5905\\-43\\9.515988\\-193.361\\-43\\7.735961\\-193.9766\\-43\\5.124373\\-194.5478\\-43\\2.327199\\-194.8432\\-43\\0.5318326\\-194.9219\\-43\\-1.1571\\-194.8876\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "6"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.27534\\-195.8569\\-41\\-4.335244\\-195.623\\-41\\-5.918368\\-195.3287\\-41\\-8.253383\\-194.6237\\-41\\-9.518801\\-194.0752\\-41\\-11.41795\\-192.9626\\-41\\-12.81964\\-191.8723\\-41\\-14.07298\\-190.6338\\-41\\-14.98739\\-189.5319\\-41\\-16.48104\\-187.1359\\-41\\-17.2977\\-185.3021\\-41\\-18.10059\\-182.599\\-41\\-18.4371\\-180.3407\\-41\\-18.50148\\-178.2657\\-41\\-18.35611\\-176.4015\\-41\\-17.94641\\-174.1963\\-41\\-17.14885\\-171.8785\\-41\\-16.44548\\-170.4306\\-41\\-15.30129\\-168.6468\\-41\\-13.39483\\-166.5619\\-41\\-11.68497\\-165.2527\\-41\\-9.149891\\-163.9167\\-41\\-6.475635\\-163.0583\\-41\\-4.695973\\-162.7053\\-41\\-2.095681\\-162.4253\\-41\\0.1862088\\-162.355\\-41\\3.279232\\-162.4901\\-41\\6.518366\\-162.9473\\-41\\8.719695\\-163.4903\\-41\\11.35423\\-164.5342\\-41\\12.86096\\-165.3879\\-41\\14.68143\\-166.7743\\-41\\15.8761\\-168.0039\\-41\\16.82797\\-169.203\\-41\\17.62696\\-170.5009\\-41\\18.75608\\-173.0168\\-41\\19.35952\\-175.256\\-41\\19.67778\\-178.2775\\-41\\19.61115\\-180.3702\\-41\\19.05021\\-183.5517\\-41\\18.46996\\-185.3001\\-41\\17.93382\\-186.5632\\-41\\17.15242\\-188.0015\\-41\\16.15121\\-189.4989\\-41\\15.2311\\-190.5983\\-41\\13.99592\\-191.7868\\-41\\12.5863\\-192.862\\-41\\10.68986\\-193.9503\\-41\\8.988591\\-194.651\\-41\\7.111657\\-195.1968\\-41\\5.070956\\-195.5813\\-41\\3.444153\\-195.7864\\-41\\0.9071178\\-195.934\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "6.883477\\-196.1855\\-39\\3.31687\\-196.7449\\-39\\0.1840343\\-196.8911\\-39\\-2.168188\\-196.8065\\-39\\-5.131364\\-196.4182\\-39\\-6.865339\\-196.0183\\-39\\-8.391089\\-195.5025\\-39\\-10.35013\\-194.5941\\-39\\-12.31495\\-193.3082\\-39\\-14.41963\\-191.373\\-39\\-15.44767\\-190.1358\\-39\\-17.01392\\-187.6382\\-39\\-17.95422\\-185.5337\\-39\\-18.60554\\-183.4256\\-39\\-18.94471\\-181.7539\\-39\\-19.14719\\-179.9703\\-39\\-19.15868\\-177.733\\-39\\-18.9477\\-175.797\\-39\\-18.21297\\-172.8511\\-39\\-17.34949\\-170.792\\-39\\-16.36503\\-169.1001\\-39\\-14.84135\\-167.176\\-39\\-13.37627\\-165.8261\\-39\\-11.26581\\-164.4245\\-39\\-9.478131\\-163.5988\\-39\\-7.785415\\-163.0387\\-39\\-5.800844\\-162.5915\\-39\\-2.845564\\-162.2306\\-39\\-0.296187\\-162.1483\\-39\\2.879539\\-162.2264\\-39\\5.571328\\-162.5124\\-39\\7.021233\\-162.7483\\-39\\8.998903\\-163.2188\\-39\\10.64914\\-163.7668\\-39\\12.47289\\-164.611\\-39\\14.57109\\-165.9861\\-39\\16.06158\\-167.3453\\-39\\16.83329\\-168.2302\\-39\\17.80139\\-169.6003\\-39\\18.5317\\-170.8773\\-39\\19.2148\\-172.4211\\-39\\19.70044\\-173.9077\\-39\\20.11936\\-175.8158\\-39\\20.33403\\-177.7819\\-39\\20.32064\\-179.9968\\-39\\20.11448\\-181.7866\\-39\\19.77521\\-183.4439\\-39\\19.11833\\-185.5512\\-39\\18.17838\\-187.6401\\-39\\16.6192\\-190.1019\\-39\\15.58879\\-191.3326\\-39\\14.57395\\-192.329\\-39\\12.9265\\-193.6254\\-39\\11.5263\\-194.4823\\-39\\9.278243\\-195.4815\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "58"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.3652583\\-197.7523\\-37\\-2.84042\\-197.6062\\-37\\-5.249024\\-197.2277\\-37\\-7.959698\\-196.4566\\-37\\-9.176228\\-195.9621\\-37\\-10.75031\\-195.1422\\-37\\-12.37077\\-194.0488\\-37\\-14.18201\\-192.4338\\-37\\-15.01975\\-191.5288\\-37\\-16.36035\\-189.7464\\-37\\-17.25987\\-188.2488\\-37\\-18.20497\\-186.2015\\-37\\-18.99448\\-183.8128\\-37\\-19.40045\\-181.9088\\-37\\-19.62643\\-179.4507\\-37\\-19.59429\\-177.4891\\-37\\-19.37653\\-175.6184\\-37\\-19.02017\\-174.0032\\-37\\-18.41396\\-172.151\\-37\\-17.85656\\-170.8487\\-37\\-16.68548\\-168.8338\\-37\\-14.89802\\-166.6857\\-37\\-13.4893\\-165.4794\\-37\\-12.39336\\-164.7149\\-37\\-10.0785\\-163.5587\\-37\\-8.660318\\-163.0602\\-37\\-7.077616\\-162.6559\\-37\\-5.030459\\-162.3145\\-37\\-2.545675\\-162.0878\\-37\\-0.6050572\\-162.0288\\-37\\1.834189\\-162.0677\\-37\\4.870774\\-162.2885\\-37\\7.004755\\-162.5879\\-37\\9.824748\\-163.2504\\-37\\11.28433\\-163.7707\\-37\\13.48506\\-164.8479\\-37\\14.67924\\-165.6614\\-37\\16.14462\\-166.9021\\-37\\17.85059\\-168.9353\\-37\\19.03722\\-170.9476\\-37\\19.58371\\-172.214\\-37\\20.18371\\-174.0237\\-37\\20.55072\\-175.665\\-37\\20.76628\\-177.5179\\-37\\20.79492\\-179.6206\\-37\\20.55993\\-181.9842\\-37\\20.1623\\-183.8388\\-37\\19.37411\\-186.2137\\-37\\18.41123\\-188.2842\\-37\\16.8483\\-190.6992\\-37\\15.76595\\-191.9756\\-37\\13.64206\\-193.9089\\-37\\11.95624\\-195.0376\\-37\\9.522807\\-196.2016\\-37\\7.614946\\-196.8369\\-37\\6.393201\\-197.1375\\-37\\4.028552\\-197.5366\\-37\\1.585741\\-197.7315\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.011054\\-198.45\\-35\\-3.515336\\-198.2757\\-35\\-5.820865\\-197.8132\\-35\\-8.492883\\-196.9121\\-35\\-10.33341\\-195.9786\\-35\\-11.73128\\-195.1129\\-35\\-12.78396\\-194.3101\\-35\\-15.02464\\-192.1009\\-35\\-16.20895\\-190.5655\\-35\\-17.17096\\-189.049\\-35\\-18.33889\\-186.6698\\-35\\-19.16713\\-184.2496\\-35\\-19.6025\\-182.3057\\-35\\-19.795\\-180.8852\\-35\\-19.87189\\-178.8853\\-35\\-19.79253\\-176.8255\\-35\\-19.60343\\-175.46\\-35\\-19.16522\\-173.5886\\-35\\-18.36777\\-171.3731\\-35\\-16.93981\\-168.8086\\-35\\-15.47414\\-166.9951\\-35\\-14.23786\\-165.8372\\-35\\-12.23188\\-164.456\\-35\\-10.69007\\-163.6889\\-35\\-9.492958\\-163.2328\\-35\\-7.84963\\-162.7676\\-35\\-5.719952\\-162.3644\\-35\\-4.173187\\-162.184\\-35\\-1.681149\\-162.0459\\-35\\0.144162\\-162.037\\-35\\3.238762\\-162.1386\\-35\\6.88022\\-162.5323\\-35\\9.023931\\-162.9675\\-35\\10.75736\\-163.476\\-35\\13.31658\\-164.6056\\-35\\15.37676\\-165.9858\\-35\\16.63979\\-167.1398\\-35\\18.14849\\-168.9837\\-35\\19.53145\\-171.4421\\-35\\20.56552\\-174.5061\\-35\\20.96635\\-176.8945\\-35\\21.0423\\-179.024\\-35\\20.97064\\-180.8634\\-35\\20.77291\\-182.3294\\-35\\20.33835\\-184.2698\\-35\\19.50653\\-186.6964\\-35\\18.34611\\-189.0515\\-35\\16.86303\\-191.2905\\-35\\15.80127\\-192.5407\\-35\\13.99531\\-194.2418\\-35\\12.40674\\-195.3945\\-35\\9.707335\\-196.8209\\-35\\6.990014\\-197.741\\-35\\4.667814\\-198.2197\\-35\\3.190203\\-198.4089\\-35\\0.5833686\\-198.547\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.9237666\\-199.18\\-33\\2.717184\\-199.114\\-33\\4.315667\\-198.9167\\-33\\6.102829\\-198.5715\\-33\\9.199105\\-197.5732\\-33\\11.28817\\-196.5405\\-33\\12.50523\\-195.7674\\-33\\13.84302\\-194.7506\\-33\\14.92268\\-193.7848\\-33\\16.81388\\-191.6602\\-33\\18.52025\\-189.0442\\-33\\19.76457\\-186.3371\\-33\\20.14809\\-185.2369\\-33\\20.77979\\-182.741\\-33\\21.00422\\-181.1959\\-33\\21.12359\\-179.018\\-33\\20.98653\\-176.5416\\-33\\20.55878\\-174.2877\\-33\\19.96604\\-172.3991\\-33\\19.5264\\-171.3693\\-33\\18.52998\\-169.5264\\-33\\17.69972\\-168.3344\\-33\\16.80214\\-167.3034\\-33\\14.96535\\-165.6799\\-33\\13.39843\\-164.6786\\-33\\10.90186\\-163.5725\\-33\\8.356034\\-162.8876\\-33\\5.223742\\-162.3858\\-33\\2.483041\\-162.1695\\-33\\-1.293987\\-162.1078\\-33\\-4.056855\\-162.244\\-33\\-6.059783\\-162.4789\\-33\\-9.004567\\-163.121\\-33\\-10.69523\\-163.7302\\-33\\-12.17222\\-164.4402\\-33\\-14.42947\\-165.9964\\-33\\-15.65638\\-167.1688\\-33\\-16.65851\\-168.3688\\-33\\-17.57818\\-169.775\\-33\\-18.79206\\-172.3076\\-33\\-19.40941\\-174.2853\\-33\\-19.81692\\-176.4846\\-33\\-19.95404\\-178.8181\\-33\\-19.83517\\-181.1443\\-33\\-19.61795\\-182.6488\\-33\\-19.2083\\-184.4238\\-33\\-18.59839\\-186.2833\\-33\\-17.35473\\-188.9958\\-33\\-15.65456\\-191.6227\\-33\\-13.85898\\-193.6727\\-33\\-11.72565\\-195.4899\\-33\\-9.805804\\-196.7376\\-33\\-7.863381\\-197.6676\\-33\\-4.901328\\-198.6204\\-33\\-1.986058\\-199.0976\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "57"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "2.660912\\-199.6445\\-31\\4.226826\\-199.4462\\-31\\6.097453\\-199.0435\\-31\\7.896241\\-198.4689\\-31\\9.824241\\-197.6435\\-31\\10.8982\\-197.066\\-31\\12.3295\\-196.118\\-31\\14.01524\\-194.7723\\-31\\16.01427\\-192.7027\\-31\\17.05584\\-191.3518\\-31\\18.34218\\-189.2645\\-31\\19.24446\\-187.4211\\-31\\20.12814\\-184.9806\\-31\\20.54638\\-183.3534\\-31\\20.95838\\-180.4412\\-31\\20.9555\\-177.5709\\-31\\20.55608\\-174.8552\\-31\\19.94983\\-172.7844\\-31\\18.795\\-170.2538\\-31\\17.86502\\-168.8378\\-31\\16.46647\\-167.1849\\-31\\15.38389\\-166.2226\\-31\\13.51335\\-164.9364\\-31\\12.64582\\-164.4844\\-31\\10.32381\\-163.5727\\-31\\8.893404\\-163.1776\\-31\\6.505832\\-162.7141\\-31\\5.050382\\-162.527\\-31\\2.347314\\-162.3247\\-31\\-0.4595994\\-162.2558\\-31\\-3.967167\\-162.3983\\-31\\-7.341415\\-162.8928\\-31\\-9.122101\\-163.3443\\-31\\-11.0698\\-164.0863\\-31\\-12.28379\\-164.6953\\-31\\-13.70665\\-165.6371\\-31\\-15.32403\\-167.0487\\-31\\-16.68543\\-168.6904\\-31\\-17.64228\\-170.1695\\-31\\-18.78241\\-172.7049\\-31\\-19.38939\\-174.796\\-31\\-19.78473\\-177.5036\\-31\\-19.78773\\-180.3918\\-31\\-19.37545\\-183.3009\\-31\\-18.95291\\-184.9476\\-31\\-18.09381\\-187.3181\\-31\\-17.18\\-189.1844\\-31\\-15.88642\\-191.2932\\-31\\-14.81701\\-192.6714\\-31\\-12.63814\\-194.9186\\-31\\-11.07162\\-196.1511\\-31\\-9.025517\\-197.4393\\-31\\-7.531065\\-198.1386\\-31\\-4.926319\\-199.056\\-31\\-3.031982\\-199.4621\\-31\\-1.515858\\-199.6529\\-31\\0.7690603\\-199.7182\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "58"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "1.412349\\-200.0875\\-29\\3.219846\\-199.9358\\-29\\4.670805\\-199.6858\\-29\\6.861041\\-199.0859\\-29\\8.47685\\-198.4476\\-29\\10.25429\\-197.5354\\-29\\12.7034\\-195.8563\\-29\\14.17598\\-194.5401\\-29\\15.33043\\-193.2992\\-29\\16.49088\\-191.8359\\-29\\17.56162\\-190.1828\\-29\\18.38729\\-188.6836\\-29\\19.47412\\-186.0897\\-29\\20.10225\\-183.965\\-29\\20.55823\\-181.4346\\-29\\20.65493\\-178.4025\\-29\\20.54999\\-176.7789\\-29\\20.19482\\-174.8399\\-29\\19.77271\\-173.3128\\-29\\19.15315\\-171.7258\\-29\\18.3006\\-170.0972\\-29\\16.83395\\-168.0862\\-29\\15.78183\\-167.0124\\-29\\13.85394\\-165.5461\\-29\\12.41315\\-164.7274\\-29\\11.27372\\-164.2252\\-29\\8.254211\\-163.3058\\-29\\6.320167\\-162.9473\\-29\\3.673314\\-162.647\\-29\\-0.3223828\\-162.4922\\-29\\-2.568819\\-162.5553\\-29\\-5.216539\\-162.7949\\-29\\-7.057449\\-163.1081\\-29\\-8.775189\\-163.5559\\-29\\-11.27512\\-164.5356\\-29\\-12.69376\\-165.3564\\-29\\-14.61176\\-166.8408\\-29\\-15.66345\\-167.9321\\-29\\-17.1428\\-169.9929\\-29\\-17.98554\\-171.6288\\-29\\-18.60535\\-173.2359\\-29\\-19.0226\\-174.7456\\-29\\-19.3792\\-176.7111\\-29\\-19.47831\\-179.7989\\-29\\-19.3891\\-181.3425\\-29\\-18.92397\\-183.9145\\-29\\-18.26879\\-186.1048\\-29\\-17.17722\\-188.6788\\-29\\-15.81327\\-191.0266\\-29\\-14.4059\\-192.9133\\-29\\-13.07098\\-194.3863\\-29\\-11.61316\\-195.7147\\-29\\-10.07028\\-196.856\\-29\\-8.101531\\-198.0305\\-29\\-5.634142\\-199.0816\\-29\\-3.475472\\-199.68\\-29\\-2.032731\\-199.9321\\-29\\-0.2768756\\-200.085\\-29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.481232\\-199.746\\-27\\-5.013044\\-199.3006\\-27\\-7.25056\\-198.3716\\-27\\-8.585252\\-197.6228\\-27\\-11.1061\\-195.8249\\-27\\-13.23437\\-193.7473\\-27\\-14.42582\\-192.315\\-27\\-15.43683\\-190.8579\\-27\\-16.57709\\-188.8754\\-27\\-17.785\\-186.0533\\-27\\-18.49081\\-183.6031\\-27\\-18.79461\\-181.9119\\-27\\-18.9603\\-180.2495\\-27\\-18.93498\\-177.6739\\-27\\-18.7735\\-176.2413\\-27\\-18.40058\\-174.4273\\-27\\-17.72743\\-172.4099\\-27\\-16.46043\\-169.93\\-27\\-14.82731\\-167.8201\\-27\\-13.49565\\-166.5749\\-27\\-11.70075\\-165.3324\\-27\\-10.14801\\-164.5412\\-27\\-7.98289\\-163.7732\\-27\\-5.466483\\-163.2217\\-27\\-3.201627\\-162.9633\\-27\\0.7001616\\-162.8449\\-27\\4.365788\\-163.0684\\-27\\6.65586\\-163.3797\\-27\\9.191432\\-163.975\\-27\\11.30018\\-164.7283\\-27\\12.86595\\-165.5231\\-27\\14.7683\\-166.832\\-27\\15.99012\\-167.9712\\-27\\17.62197\\-170.0456\\-27\\18.37139\\-171.3631\\-27\\19.12995\\-173.1078\\-27\\19.56762\\-174.4957\\-27\\19.94318\\-176.3027\\-27\\20.10716\\-177.7353\\-27\\20.13619\\-180.2916\\-27\\19.96795\\-181.9967\\-27\\19.67255\\-183.6552\\-27\\18.95786\\-186.1509\\-27\\17.99604\\-188.4773\\-27\\17.21602\\-189.968\\-27\\15.59781\\-192.4395\\-27\\13.60563\\-194.7172\\-27\\12.31807\\-195.9032\\-27\\9.974627\\-197.5729\\-27\\8.451646\\-198.4279\\-27\\6.240468\\-199.333\\-27\\4.03852\\-199.9206\\-27\\1.516819\\-200.2208\\-27\\-0.3991877\\-200.2114\\-27\\-1.633978\\-200.0908\\-27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.185663\\-200.1234\\-25\\3.256205\\-199.9214\\-25\\5.832376\\-199.2668\\-25\\7.611921\\-198.543\\-25\\9.582726\\-197.4335\\-25\\11.26943\\-196.23\\-25\\13.54712\\-194.0715\\-25\\14.58444\\-192.8494\\-25\\16.24645\\-190.4324\\-25\\17.27654\\-188.506\\-25\\18.34132\\-185.8458\\-25\\18.95859\\-183.5814\\-25\\19.33558\\-181.1944\\-25\\19.4011\\-178.3316\\-25\\19.10145\\-175.8849\\-25\\18.66952\\-174.1868\\-25\\18.18242\\-172.7807\\-25\\17.34504\\-171.055\\-25\\16.17856\\-169.3289\\-25\\15.37545\\-168.4019\\-25\\13.35405\\-166.6551\\-25\\11.90313\\-165.7527\\-25\\10.7535\\-165.1932\\-25\\8.61746\\-164.4069\\-25\\5.583602\\-163.7381\\-25\\3.198856\\-163.44\\-25\\-0.4785639\\-163.3213\\-25\\-2.008536\\-163.3704\\-25\\-4.400415\\-163.6136\\-25\\-6.264466\\-163.9456\\-25\\-8.370073\\-164.5317\\-25\\-10.745\\-165.5811\\-25\\-12.508\\-166.7241\\-25\\-14.22305\\-168.2729\\-25\\-15.58332\\-169.9987\\-25\\-16.36557\\-171.3024\\-25\\-17.02022\\-172.7041\\-25\\-17.50209\\-174.1138\\-25\\-17.93183\\-175.8206\\-25\\-18.22518\\-178.2495\\-25\\-18.15415\\-181.1573\\-25\\-17.76797\\-183.5519\\-25\\-17.16986\\-185.7233\\-25\\-16.08179\\-188.4207\\-25\\-15.03626\\-190.3443\\-25\\-13.43329\\-192.6635\\-25\\-12.3151\\-193.9789\\-25\\-10.12761\\-196.0521\\-25\\-8.417209\\-197.3008\\-25\\-6.853009\\-198.2316\\-25\\-5.414006\\-198.8908\\-25\\-3.802698\\-199.4691\\-25\\-2.132722\\-199.8714\\-25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.07837604\\-199.6779\\-23\\2.431958\\-199.5861\\-23\\3.436413\\-199.4285\\-23\\5.20365\\-198.9564\\-23\\7.654629\\-197.9007\\-23\\9.649947\\-196.6496\\-23\\11.49915\\-195.1177\\-23\\13.54391\\-192.9075\\-23\\15.02104\\-190.8191\\-23\\15.83574\\-189.4024\\-23\\16.74062\\-187.5359\\-23\\17.30989\\-186.0417\\-23\\18.07808\\-183.1658\\-23\\18.38577\\-180.8733\\-23\\18.4127\\-178.3936\\-23\\18.31808\\-177.3272\\-23\\17.8785\\-175.0415\\-23\\17.33068\\-173.4198\\-23\\16.54432\\-171.714\\-23\\15.48916\\-170.0771\\-23\\14.27016\\-168.6671\\-23\\13.16352\\-167.6805\\-23\\11.8863\\-166.7685\\-23\\9.741194\\-165.6643\\-23\\7.9375\\-165.0112\\-23\\5.268491\\-164.3885\\-23\\3.180732\\-164.1257\\-23\\1.261507\\-163.9848\\-23\\-1.996709\\-164.0643\\-23\\-4.110225\\-164.2878\\-23\\-5.502007\\-164.5465\\-23\\-7.774304\\-165.1954\\-23\\-9.37663\\-165.8759\\-23\\-11.09252\\-166.86\\-23\\-12.16324\\-167.671\\-23\\-13.86175\\-169.3726\\-23\\-14.94153\\-170.859\\-23\\-16.12964\\-173.227\\-23\\-16.70781\\-174.972\\-23\\-17.14531\\-177.2835\\-23\\-17.23403\\-178.3416\\-23\\-17.20185\\-180.8079\\-23\\-16.88508\\-183.0977\\-23\\-16.4387\\-184.8998\\-23\\-15.76538\\-186.8796\\-23\\-14.99123\\-188.5945\\-23\\-13.77763\\-190.7324\\-23\\-12.35614\\-192.7228\\-23\\-10.27783\\-194.9755\\-23\\-8.84327\\-196.1978\\-23\\-7.384455\\-197.2179\\-23\\-5.427882\\-198.2863\\-23\\-3.656532\\-198.9833\\-23\\-2.284822\\-199.3635\\-23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "16"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "3.98182\\-198.4269\\-21\\6.29082\\-197.5728\\-21\\8.083325\\-196.583\\-21\\10.44217\\-194.7254\\-21\\11.96358\\-193.1431\\-21\\12.87122\\-192.0051\\-21\\14.05624\\-190.2481\\-21\\14.88011\\-188.7763\\-21\\15.85204\\-186.5755\\-21\\16.48686\\-184.6488\\-21\\16.99897\\-182.1364\\-21\\17.16245\\-179.1668\\-21\\17.01657\\-177.2991\\-21\\16.78024\\-176.0205\\-21\\16.03852\\-173.6517\\-21\\15.37458\\-172.2917\\-21\\14.54147\\-170.9638\\-21\\12.82453\\-169.0054\\-21\\11.20515\\-167.7301\\-21\\9.962468\\-166.9923\\-21\\8.206527\\-166.1958\\-21\\6.75092\\-165.7118\\-21\\3.521514\\-165.0587\\-21\\1.543854\\-164.8992\\-21\\-1.192336\\-164.9101\\-21\\-3.46555\\-165.1579\\-21\\-5.75534\\-165.6519\\-21\\-6.99636\\-166.0598\\-21\\-8.731181\\-166.8276\\-21\\-10.02547\\-167.5912\\-21\\-11.61092\\-168.8404\\-21\\-13.01537\\-170.375\\-21\\-13.91475\\-171.6831\\-21\\-14.86979\\-173.5788\\-21\\-15.60217\\-175.9473\\-21\\-15.8355\\-177.2316\\-21\\-15.97555\\-179.0813\\-21\\-15.79508\\-182.1241\\-21\\-15.27197\\-184.5975\\-21\\-14.67615\\-186.379\\-21\\-13.42753\\-189.0896\\-21\\-12.10266\\-191.2193\\-21\\-10.72468\\-192.9962\\-21\\-9.042567\\-194.7226\\-21\\-7.785137\\-195.7792\\-21\\-6.413276\\-196.7185\\-21\\-4.173418\\-197.8622\\-21\\-2.440898\\-198.4348\\-21\\-1.164569\\-198.7136\\-21\\0.6191094\\-198.8593\\-21\\2.335062\\-198.7626\\-21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.5889828\\-197.5246\\-19\\2.835643\\-197.332\\-19\\4.30677\\-196.9336\\-19\\5.709937\\-196.3677\\-19\\6.881927\\-195.7212\\-19\\8.124926\\-194.8623\\-19\\9.839561\\-193.3575\\-19\\11.40593\\-191.5383\\-19\\12.70374\\-189.6326\\-19\\13.74795\\-187.6603\\-19\\14.58252\\-185.5632\\-19\\15.29049\\-182.7444\\-19\\15.53867\\-180.3367\\-19\\15.42756\\-177.9723\\-19\\15.19261\\-176.5847\\-19\\14.69539\\-174.8309\\-19\\14.00282\\-173.2608\\-19\\13.13703\\-171.8342\\-19\\12.05496\\-170.5098\\-19\\10.70214\\-169.2813\\-19\\8.479903\\-167.8711\\-19\\6.386815\\-167.0245\\-19\\4.919351\\-166.608\\-19\\3.045448\\-166.272\\-19\\0.8626077\\-166.1093\\-19\\-2.075699\\-166.2534\\-19\\-3.758297\\-166.5414\\-19\\-5.2565\\-166.9532\\-19\\-6.887741\\-167.5745\\-19\\-8.371519\\-168.3612\\-19\\-9.530785\\-169.1743\\-19\\-10.88979\\-170.4183\\-19\\-11.98201\\-171.7669\\-19\\-12.83368\\-173.1905\\-19\\-13.52013\\-174.7657\\-19\\-14.02571\\-176.6176\\-19\\-14.24492\\-177.9435\\-19\\-14.33936\\-180.3024\\-19\\-14.20106\\-181.9133\\-19\\-13.86696\\-183.7047\\-19\\-13.20319\\-185.8977\\-19\\-12.73275\\-187.054\\-19\\-11.75172\\-188.9993\\-19\\-10.82458\\-190.48\\-19\\-9.554393\\-192.1282\\-19\\-8.637105\\-193.1485\\-19\\-7.039917\\-194.587\\-19\\-5.717835\\-195.5364\\-19\\-4.517857\\-196.2186\\-19\\-3.186833\\-196.7988\\-19\\-1.669466\\-197.257\\-19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.1235377\\-195.474\\-17\\1.804056\\-195.4358\\-17\\3.193761\\-195.1728\\-17\\4.936379\\-194.5104\\-17\\7.081278\\-193.1535\\-17\\8.424042\\-191.9718\\-17\\9.772861\\-190.4307\\-17\\10.66149\\-189.1545\\-17\\11.48567\\-187.7544\\-17\\12.26737\\-185.9685\\-17\\12.8173\\-184.3466\\-17\\13.29074\\-182.0984\\-17\\13.40055\\-179.3775\\-17\\13.07205\\-176.968\\-17\\12.53151\\-175.2713\\-17\\11.47048\\-173.2201\\-17\\10.42338\\-171.8802\\-17\\8.871119\\-170.4704\\-17\\7.842943\\-169.7776\\-17\\6.013384\\-168.8929\\-17\\4.277493\\-168.3248\\-17\\1.7721\\-167.9162\\-17\\-0.6045735\\-167.9008\\-17\\-3.11303\\-168.2811\\-17\\-4.849556\\-168.8343\\-17\\-6.437299\\-169.5556\\-17\\-7.709316\\-170.4028\\-17\\-9.257141\\-171.8151\\-17\\-10.29888\\-173.159\\-17\\-11.35214\\-175.2177\\-17\\-11.87741\\-176.882\\-17\\-12.19843\\-179.3271\\-17\\-12.07064\\-182.0387\\-17\\-11.39801\\-184.8957\\-17\\-10.33594\\-187.4394\\-17\\-9.433351\\-188.9828\\-17\\-8.49837\\-190.3111\\-17\\-7.219549\\-191.7679\\-17\\-5.795415\\-193.0425\\-17\\-3.744724\\-194.3721\\-17\\-1.994946\\-195.0855\\-17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.7068194\\-192.3193\\-15\\1.778206\\-192.2554\\-15\\3.278348\\-191.8488\\-15\\5.270322\\-190.8209\\-15\\6.444961\\-189.8547\\-15\\7.695644\\-188.4697\\-15\\9.096697\\-186.2276\\-15\\9.615885\\-185.0309\\-15\\10.12963\\-183.4464\\-15\\10.33149\\-182.4313\\-15\\10.51023\\-180.2237\\-15\\10.3229\\-178.3365\\-15\\9.868426\\-176.6739\\-15\\8.912128\\-174.7967\\-15\\7.811391\\-173.4004\\-15\\6.810744\\-172.5222\\-15\\5.713912\\-171.8099\\-15\\3.66125\\-170.9448\\-15\\1.180124\\-170.5237\\-15\\-1.314152\\-170.6611\\-15\\-2.488662\\-170.9164\\-15\\-4.607367\\-171.8135\\-15\\-6.15391\\-172.9093\\-15\\-6.968218\\-173.7279\\-15\\-7.729516\\-174.7539\\-15\\-8.665351\\-176.588\\-15\\-9.117551\\-178.2786\\-15\\-9.292521\\-180.2088\\-15\\-9.125008\\-182.1612\\-15\\-8.899356\\-183.3273\\-15\\-8.361764\\-184.9581\\-15\\-7.812262\\-186.1729\\-15\\-6.460924\\-188.2952\\-15\\-5.798864\\-189.1324\\-15\\-4.021014\\-190.7058\\-15\\-3.00817\\-191.3242\\-15\\-1.225947\\-192.0618\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.09172209\\-186.5479\\-13\\1.081909\\-186.5705\\-13\\2.730814\\-186.019\\-13\\4.171261\\-184.7574\\-13\\5.077491\\-183.1443\\-13\\5.434966\\-181.8303\\-13\\5.467434\\-179.6536\\-13\\5.072665\\-178.4028\\-13\\4.113387\\-177.0428\\-13\\3.520375\\-176.4499\\-13\\2.286752\\-175.7327\\-13\\1.468056\\-175.5158\\-13\\-0.2742291\\-175.5056\\-13\\-1.488022\\-175.9041\\-13\\-2.364897\\-176.4514\\-13\\-3.28625\\-177.5044\\-13\\-4.115311\\-178.9828\\-13\\-4.307397\\-180.078\\-13\\-4.283947\\-181.0146\\-13\\-3.822874\\-183.088\\-13\\-2.927249\\-184.6766\\-13\\-1.546395\\-185.9364\\-13"
+                     }
+                  }
+               ]
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "2"
+            }
+         },
+         {
+            "3006,002a" : {
+               "Name" : "ROIDisplayColor",
+               "Type" : "String",
+               "Value" : "0\\0\\255"
+            },
+            "3006,0040" : {
+               "Name" : "ContourSequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "0"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.0846473\\-179.8274\\-61\\-1.105887\\-178.6369\\-61\\-1.105887\\-177.6369\\-61\\0.0846473\\-176.4464\\-61\\1.084647\\-176.4464\\-61\\2.275181\\-177.6369\\-61\\2.275181\\-178.6369\\-61\\1.084647\\-179.8274\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "1"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.415353\\-186.8274\\-59\\-2.915353\\-186.3274\\-59\\-3.415353\\-186.3274\\-59\\-3.915353\\-185.8274\\-59\\-4.415353\\-185.8274\\-59\\-7.605886\\-182.6369\\-59\\-7.605886\\-182.1369\\-59\\-8.105886\\-181.6369\\-59\\-8.105886\\-180.1369\\-59\\-8.605886\\-179.6369\\-59\\-8.605886\\-177.1369\\-59\\-8.105886\\-176.6369\\-59\\-8.105886\\-175.1369\\-59\\-7.605886\\-174.6369\\-59\\-7.605886\\-174.1369\\-59\\-4.915353\\-171.4464\\-59\\-4.415353\\-171.4464\\-59\\-3.915353\\-170.9464\\-59\\-3.415353\\-170.9464\\-59\\-2.915353\\-170.4464\\-59\\-2.415353\\-170.4464\\-59\\-1.915353\\-169.9464\\-59\\3.084647\\-169.9464\\-59\\3.584647\\-170.4464\\-59\\4.084647\\-170.4464\\-59\\4.584647\\-170.9464\\-59\\5.084647\\-170.9464\\-59\\5.584647\\-171.4464\\-59\\6.084647\\-171.4464\\-59\\8.775181\\-174.1369\\-59\\8.775181\\-174.6369\\-59\\9.275181\\-175.1369\\-59\\9.275181\\-176.1369\\-59\\9.775181\\-176.6369\\-59\\9.775181\\-180.6369\\-59\\9.275181\\-181.1369\\-59\\9.275181\\-181.6369\\-59\\8.775181\\-182.1369\\-59\\8.775181\\-182.6369\\-59\\5.084647\\-186.3274\\-59\\4.084647\\-186.3274\\-59\\3.584647\\-186.8274\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "74"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "2"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.415353\\-190.8274\\-57\\-1.915353\\-190.3274\\-57\\-3.915353\\-190.3274\\-57\\-4.415353\\-189.8274\\-57\\-4.915353\\-189.8274\\-57\\-5.415353\\-189.3274\\-57\\-5.915353\\-189.3274\\-57\\-6.415353\\-188.8274\\-57\\-6.915353\\-188.8274\\-57\\-7.915353\\-187.8274\\-57\\-8.415353\\-187.8274\\-57\\-9.605886\\-186.6369\\-57\\-9.605886\\-186.1369\\-57\\-10.60589\\-185.1369\\-57\\-10.60589\\-184.6369\\-57\\-11.10589\\-184.1369\\-57\\-11.10589\\-183.6369\\-57\\-11.60589\\-183.1369\\-57\\-11.60589\\-182.6369\\-57\\-12.10589\\-182.1369\\-57\\-12.10589\\-175.1369\\-57\\-11.60589\\-174.6369\\-57\\-11.60589\\-173.6369\\-57\\-10.60589\\-172.6369\\-57\\-10.60589\\-172.1369\\-57\\-7.415353\\-168.9464\\-57\\-6.915353\\-168.9464\\-57\\-6.415353\\-168.4464\\-57\\-5.915353\\-168.4464\\-57\\-5.415353\\-167.9464\\-57\\-4.915353\\-167.9464\\-57\\-4.415353\\-167.4464\\-57\\-3.915353\\-167.4464\\-57\\-3.415353\\-166.9464\\-57\\-1.415353\\-166.9464\\-57\\-0.9153527\\-166.4464\\-57\\2.084647\\-166.4464\\-57\\2.584647\\-166.9464\\-57\\4.584647\\-166.9464\\-57\\5.084647\\-167.4464\\-57\\5.584647\\-167.4464\\-57\\6.084647\\-167.9464\\-57\\6.584647\\-167.9464\\-57\\7.084647\\-168.4464\\-57\\7.584647\\-168.4464\\-57\\8.084647\\-168.9464\\-57\\8.584647\\-168.9464\\-57\\12.27518\\-172.6369\\-57\\12.27518\\-173.1369\\-57\\12.77518\\-173.6369\\-57\\12.77518\\-174.6369\\-57\\13.27518\\-175.1369\\-57\\13.27518\\-176.6369\\-57\\13.77518\\-177.1369\\-57\\13.77518\\-180.1369\\-57\\13.27518\\-180.6369\\-57\\13.27518\\-182.1369\\-57\\12.77518\\-182.6369\\-57\\12.77518\\-183.6369\\-57\\12.27518\\-184.1369\\-57\\12.27518\\-184.6369\\-57\\11.27518\\-185.6369\\-57\\11.27518\\-186.1369\\-57\\9.584647\\-187.8274\\-57\\9.084647\\-187.8274\\-57\\8.084647\\-188.8274\\-57\\7.584647\\-188.8274\\-57\\7.084647\\-189.3274\\-57\\6.584647\\-189.3274\\-57\\6.084647\\-189.8274\\-57\\5.584647\\-189.8274\\-57\\5.084647\\-190.3274\\-57\\3.084647\\-190.3274\\-57\\2.584647\\-190.8274\\-57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "82"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "3"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.415353\\-192.8274\\-55\\-4.915353\\-192.3274\\-55\\-5.915353\\-192.3274\\-55\\-6.415353\\-191.8274\\-55\\-6.915353\\-191.8274\\-55\\-7.415353\\-191.3274\\-55\\-7.915353\\-191.3274\\-55\\-8.415353\\-190.8274\\-55\\-8.915353\\-190.8274\\-55\\-9.915353\\-189.8274\\-55\\-10.41535\\-189.8274\\-55\\-12.10589\\-188.1369\\-55\\-12.10589\\-187.6369\\-55\\-13.10589\\-186.6369\\-55\\-13.10589\\-186.1369\\-55\\-13.60589\\-185.6369\\-55\\-13.60589\\-185.1369\\-55\\-14.10589\\-184.6369\\-55\\-14.10589\\-184.1369\\-55\\-14.60589\\-183.6369\\-55\\-14.60589\\-182.1369\\-55\\-15.10589\\-181.6369\\-55\\-15.10589\\-175.6369\\-55\\-14.60589\\-175.1369\\-55\\-14.60589\\-174.1369\\-55\\-14.10589\\-173.6369\\-55\\-14.10589\\-172.6369\\-55\\-13.60589\\-172.1369\\-55\\-13.60589\\-171.6369\\-55\\-12.60589\\-170.6369\\-55\\-12.60589\\-170.1369\\-55\\-10.41535\\-167.9464\\-55\\-9.915353\\-167.9464\\-55\\-8.415353\\-166.4464\\-55\\-7.915353\\-166.4464\\-55\\-7.415353\\-165.9464\\-55\\-6.415353\\-165.9464\\-55\\-5.915353\\-165.4464\\-55\\-5.415353\\-165.4464\\-55\\-4.915353\\-164.9464\\-55\\-3.415353\\-164.9464\\-55\\-2.915353\\-164.4464\\-55\\4.084647\\-164.4464\\-55\\4.584647\\-164.9464\\-55\\6.084647\\-164.9464\\-55\\6.584647\\-165.4464\\-55\\7.084647\\-165.4464\\-55\\7.584647\\-165.9464\\-55\\8.584647\\-165.9464\\-55\\9.084647\\-166.4464\\-55\\9.584647\\-166.4464\\-55\\10.58465\\-167.4464\\-55\\11.08465\\-167.4464\\-55\\13.77518\\-170.1369\\-55\\13.77518\\-170.6369\\-55\\14.77518\\-171.6369\\-55\\14.77518\\-172.1369\\-55\\15.27518\\-172.6369\\-55\\15.27518\\-173.1369\\-55\\15.77518\\-173.6369\\-55\\15.77518\\-175.1369\\-55\\16.27518\\-175.6369\\-55\\16.27518\\-182.1369\\-55\\15.77518\\-182.6369\\-55\\15.77518\\-183.6369\\-55\\15.27518\\-184.1369\\-55\\15.27518\\-184.6369\\-55\\14.77518\\-185.1369\\-55\\14.77518\\-185.6369\\-55\\14.27518\\-186.1369\\-55\\14.27518\\-186.6369\\-55\\12.77518\\-188.1369\\-55\\12.77518\\-188.6369\\-55\\11.58465\\-189.8274\\-55\\11.08465\\-189.8274\\-55\\10.08465\\-190.8274\\-55\\9.584647\\-190.8274\\-55\\8.584647\\-191.8274\\-55\\7.584647\\-191.8274\\-55\\7.084647\\-192.3274\\-55\\6.084647\\-192.3274\\-55\\5.584647\\-192.8274\\-55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "80"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "4"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.915353\\-194.8274\\-53\\-5.415353\\-194.3869\\-53\\-6.915353\\-194.3274\\-53\\-7.415353\\-193.8274\\-53\\-7.915353\\-193.8274\\-53\\-8.415353\\-193.3274\\-53\\-8.915353\\-193.3274\\-53\\-9.415353\\-192.8274\\-53\\-9.915353\\-192.8274\\-53\\-10.91535\\-191.8274\\-53\\-11.41535\\-191.8274\\-53\\-14.10589\\-189.1369\\-53\\-14.10589\\-188.6369\\-53\\-15.10589\\-187.6369\\-53\\-15.10589\\-187.1369\\-53\\-16.10589\\-186.1369\\-53\\-16.10589\\-185.1369\\-53\\-16.60589\\-184.6369\\-53\\-16.60589\\-183.6369\\-53\\-17.10589\\-183.1369\\-53\\-17.10589\\-174.6369\\-53\\-16.60589\\-174.1369\\-53\\-16.60589\\-173.1369\\-53\\-16.10589\\-172.6369\\-53\\-16.10589\\-172.1369\\-53\\-15.60589\\-171.6369\\-53\\-15.60589\\-171.1369\\-53\\-15.10589\\-170.6369\\-53\\-15.10589\\-170.1369\\-53\\-10.41535\\-165.4464\\-53\\-9.915353\\-165.4464\\-53\\-9.415353\\-164.9464\\-53\\-8.915353\\-164.9464\\-53\\-8.415353\\-164.4464\\-53\\-7.915353\\-164.4464\\-53\\-7.415353\\-163.9464\\-53\\-6.415353\\-163.9464\\-53\\-5.915353\\-163.4464\\-53\\-4.415353\\-163.3869\\-53\\-3.915353\\-162.9464\\-53\\-1.915353\\-162.8869\\-53\\3.084647\\-162.8869\\-53\\5.084647\\-162.9464\\-53\\5.584647\\-163.3869\\-53\\7.084647\\-163.4464\\-53\\7.584647\\-163.9464\\-53\\8.584647\\-163.9464\\-53\\9.084647\\-164.4464\\-53\\9.584647\\-164.4464\\-53\\10.08465\\-164.9464\\-53\\10.58465\\-164.9464\\-53\\11.08465\\-165.4464\\-53\\11.58465\\-165.4464\\-53\\16.27518\\-170.1369\\-53\\16.27518\\-170.6369\\-53\\17.27518\\-171.6369\\-53\\17.27518\\-172.6369\\-53\\17.77518\\-173.1369\\-53\\17.77518\\-174.1369\\-53\\18.27518\\-174.6369\\-53\\18.27518\\-183.1369\\-53\\17.77518\\-183.6369\\-53\\17.77518\\-185.1369\\-53\\17.27518\\-185.6369\\-53\\17.27518\\-186.1369\\-53\\16.27518\\-187.1369\\-53\\16.27518\\-187.6369\\-53\\15.27518\\-188.6369\\-53\\15.27518\\-189.1369\\-53\\13.08465\\-191.3274\\-53\\12.58465\\-191.3274\\-53\\11.08465\\-192.8274\\-53\\10.58465\\-192.8274\\-53\\10.08465\\-193.3274\\-53\\9.584647\\-193.3274\\-53\\9.084647\\-193.8274\\-53\\8.584647\\-193.8274\\-53\\8.084647\\-194.3274\\-53\\6.584647\\-194.3274\\-53\\6.084647\\-194.8274\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "93"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "5"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.415353\\-196.8274\\-51\\-3.915353\\-196.3869\\-51\\-5.915353\\-196.3274\\-51\\-6.415353\\-195.8869\\-51\\-7.915353\\-195.8274\\-51\\-8.415353\\-195.3274\\-51\\-8.915353\\-195.3274\\-51\\-9.415353\\-194.8274\\-51\\-9.915353\\-194.8274\\-51\\-10.41535\\-194.3274\\-51\\-10.91535\\-194.3274\\-51\\-12.41535\\-192.8274\\-51\\-12.91535\\-192.8274\\-51\\-15.60589\\-190.1369\\-51\\-15.60589\\-189.6369\\-51\\-17.10589\\-188.1369\\-51\\-17.10589\\-187.6369\\-51\\-17.60589\\-187.1369\\-51\\-17.60589\\-186.6369\\-51\\-18.10589\\-186.1369\\-51\\-18.16535\\-185.1369\\-51\\-18.60589\\-184.6369\\-51\\-18.66535\\-183.1369\\-51\\-19.10589\\-182.6369\\-51\\-19.10589\\-175.1369\\-51\\-18.66535\\-174.6369\\-51\\-18.60589\\-173.1369\\-51\\-18.10589\\-172.6369\\-51\\-18.10589\\-172.1369\\-51\\-17.60589\\-171.6369\\-51\\-17.60589\\-171.1369\\-51\\-17.10589\\-170.6369\\-51\\-17.10589\\-170.1369\\-51\\-16.10589\\-169.1369\\-51\\-16.10589\\-168.6369\\-51\\-12.41535\\-164.9464\\-51\\-11.91535\\-164.9464\\-51\\-11.41535\\-164.4464\\-51\\-10.91535\\-164.3869\\-51\\-9.915353\\-163.4464\\-51\\-8.915353\\-163.3869\\-51\\-8.415353\\-162.9464\\-51\\-7.415353\\-162.8869\\-51\\-6.915353\\-162.4464\\-51\\-5.915353\\-162.3869\\-51\\-5.415353\\-161.9464\\-51\\-3.415353\\-161.8869\\-51\\-2.915353\\-161.4464\\-51\\3.584647\\-161.4464\\-51\\4.084647\\-161.8869\\-51\\6.584647\\-161.9464\\-51\\7.084647\\-162.3869\\-51\\8.084647\\-162.4464\\-51\\8.584647\\-162.8869\\-51\\9.584647\\-162.9464\\-51\\11.08465\\-163.8869\\-51\\12.58465\\-164.4464\\-51\\13.58465\\-165.3869\\-51\\14.08465\\-165.4464\\-51\\17.27518\\-168.6369\\-51\\17.27518\\-169.1369\\-51\\18.27518\\-170.1369\\-51\\18.27518\\-170.6369\\-51\\18.77518\\-171.1369\\-51\\19.27518\\-172.1369\\-51\\19.27518\\-172.6369\\-51\\19.77518\\-173.1369\\-51\\19.77518\\-174.1369\\-51\\20.27518\\-174.6369\\-51\\20.27518\\-182.6369\\-51\\19.83465\\-183.1369\\-51\\19.77518\\-184.6369\\-51\\19.33465\\-185.1369\\-51\\19.27518\\-186.1369\\-51\\18.77518\\-186.6369\\-51\\18.77518\\-187.1369\\-51\\18.27518\\-187.6369\\-51\\18.27518\\-188.1369\\-51\\15.77518\\-190.6369\\-51\\15.77518\\-191.1369\\-51\\14.58465\\-192.3274\\-51\\14.08465\\-192.3274\\-51\\12.08465\\-194.3274\\-51\\11.58465\\-194.3274\\-51\\11.08465\\-194.8274\\-51\\10.58465\\-194.8274\\-51\\10.08465\\-195.3274\\-51\\9.084647\\-195.3869\\-51\\8.584647\\-195.8274\\-51\\7.084647\\-195.8869\\-51\\6.584647\\-196.3274\\-51\\5.084647\\-196.3869\\-51\\4.584647\\-196.8274\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "87"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "6"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.915353\\-198.3274\\-49\\-3.415353\\-197.8869\\-49\\-5.915353\\-197.8274\\-49\\-6.415353\\-197.3869\\-49\\-7.415353\\-197.3274\\-49\\-7.915353\\-196.8869\\-49\\-8.915353\\-196.8274\\-49\\-9.415353\\-196.3869\\-49\\-10.41535\\-196.3274\\-49\\-10.91535\\-195.8274\\-49\\-11.41535\\-195.8274\\-49\\-12.41535\\-194.8274\\-49\\-12.91535\\-194.8274\\-49\\-17.10589\\-190.6369\\-49\\-17.16535\\-190.1369\\-49\\-18.10589\\-189.1369\\-49\\-19.60589\\-186.1369\\-49\\-19.66535\\-185.1369\\-49\\-20.10589\\-184.6369\\-49\\-20.16535\\-183.1369\\-49\\-20.60589\\-182.6369\\-49\\-20.66535\\-177.6369\\-49\\-20.60589\\-174.6369\\-49\\-20.16535\\-174.1369\\-49\\-20.10589\\-173.1369\\-49\\-19.66535\\-172.6369\\-49\\-19.60589\\-171.6369\\-49\\-19.10589\\-170.6369\\-49\\-18.60589\\-170.1369\\-49\\-18.60589\\-169.6369\\-49\\-17.16535\\-168.1369\\-49\\-17.10589\\-167.6369\\-49\\-13.91535\\-164.4464\\-49\\-13.41535\\-164.3869\\-49\\-12.41535\\-163.4464\\-49\\-9.915353\\-162.3869\\-49\\-9.415353\\-161.9464\\-49\\-8.415353\\-161.8869\\-49\\-7.915353\\-161.4464\\-49\\-6.415353\\-161.3869\\-49\\-5.915353\\-160.9464\\-49\\-3.415353\\-160.8869\\-49\\-2.915353\\-160.4464\\-49\\4.084647\\-160.4464\\-49\\4.584647\\-160.8869\\-49\\7.084647\\-160.9464\\-49\\7.584647\\-161.3869\\-49\\9.084647\\-161.4464\\-49\\10.58465\\-162.3869\\-49\\11.58465\\-162.4464\\-49\\12.08465\\-162.9464\\-49\\12.58465\\-162.9464\\-49\\13.58465\\-163.4464\\-49\\15.08465\\-164.8869\\-49\\15.58465\\-164.9464\\-49\\18.27518\\-167.6369\\-49\\18.33465\\-168.1369\\-49\\19.77518\\-169.6369\\-49\\19.77518\\-170.1369\\-49\\20.27518\\-170.6369\\-49\\20.77518\\-171.6369\\-49\\20.83465\\-172.6369\\-49\\21.27518\\-173.1369\\-49\\21.33465\\-174.1369\\-49\\21.77518\\-174.6369\\-49\\21.83465\\-176.6369\\-49\\21.83465\\-180.6369\\-49\\21.77518\\-183.1369\\-49\\21.33465\\-183.6369\\-49\\21.27518\\-184.6369\\-49\\20.83465\\-185.1369\\-49\\20.77518\\-186.1369\\-49\\20.33465\\-186.6369\\-49\\19.27518\\-189.1369\\-49\\18.27518\\-190.1369\\-49\\18.27518\\-190.6369\\-49\\14.58465\\-194.3274\\-49\\14.08465\\-194.3274\\-49\\13.08465\\-195.3274\\-49\\11.58465\\-195.8869\\-49\\10.08465\\-196.8274\\-49\\9.084647\\-196.8869\\-49\\8.584647\\-197.3274\\-49\\7.084647\\-197.3869\\-49\\6.584647\\-197.8274\\-49\\4.084647\\-197.8869\\-49\\3.584647\\-198.3274\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "85"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.415353\\-199.3274\\-47\\-4.915353\\-198.8869\\-47\\-6.915353\\-198.8274\\-47\\-7.415353\\-198.3869\\-47\\-8.415353\\-198.3274\\-47\\-8.915353\\-197.8869\\-47\\-9.915353\\-197.8274\\-47\\-11.41535\\-196.8869\\-47\\-12.91535\\-196.3274\\-47\\-13.91535\\-195.3869\\-47\\-14.41535\\-195.3274\\-47\\-17.60589\\-192.1369\\-47\\-17.66535\\-191.6369\\-47\\-19.10589\\-190.1369\\-47\\-19.16535\\-189.6369\\-47\\-20.60589\\-187.1369\\-47\\-20.66535\\-186.1369\\-47\\-21.10589\\-185.6369\\-47\\-21.16535\\-184.6369\\-47\\-21.60589\\-184.1369\\-47\\-21.66535\\-182.1369\\-47\\-22.10589\\-181.6369\\-47\\-22.10589\\-176.1369\\-47\\-21.66535\\-175.6369\\-47\\-21.60589\\-173.6369\\-47\\-21.16535\\-173.1369\\-47\\-21.10589\\-172.1369\\-47\\-19.66535\\-169.6369\\-47\\-19.60589\\-169.1369\\-47\\-18.66535\\-168.1369\\-47\\-18.60589\\-167.6369\\-47\\-16.41535\\-165.3869\\-47\\-14.41535\\-163.4464\\-47\\-13.91535\\-163.3869\\-47\\-12.41535\\-162.4464\\-47\\-9.915353\\-161.3869\\-47\\-9.415353\\-160.9464\\-47\\-7.915353\\-160.8869\\-47\\-7.415353\\-160.4464\\-47\\-5.915353\\-160.3869\\-47\\-5.415353\\-159.9464\\-47\\-4.415353\\-159.8869\\-47\\5.584647\\-159.8869\\-47\\6.584647\\-160.3869\\-47\\8.584647\\-160.4464\\-47\\9.084647\\-160.8869\\-47\\10.08465\\-160.9464\\-47\\10.58465\\-161.3869\\-47\\11.58465\\-161.4464\\-47\\12.08465\\-161.8869\\-47\\14.58465\\-162.9464\\-47\\15.58465\\-163.8869\\-47\\16.08465\\-163.9464\\-47\\19.77518\\-167.6369\\-47\\19.83465\\-168.1369\\-47\\20.77518\\-169.1369\\-47\\20.83465\\-169.6369\\-47\\22.27518\\-172.1369\\-47\\22.33465\\-173.1369\\-47\\22.77518\\-173.6369\\-47\\22.83465\\-175.6369\\-47\\23.27518\\-176.1369\\-47\\23.27518\\-182.1369\\-47\\22.83465\\-182.6369\\-47\\22.77518\\-184.1369\\-47\\22.33465\\-184.6369\\-47\\22.27518\\-185.6369\\-47\\21.83465\\-186.1369\\-47\\21.77518\\-187.1369\\-47\\21.33465\\-187.6369\\-47\\20.27518\\-190.1369\\-47\\18.33465\\-192.1369\\-47\\18.27518\\-192.6369\\-47\\16.08465\\-194.8274\\-47\\15.58465\\-194.8869\\-47\\14.08465\\-196.3274\\-47\\13.58465\\-196.3274\\-47\\13.08465\\-196.8274\\-47\\12.08465\\-197.3274\\-47\\11.08465\\-197.3869\\-47\\9.584647\\-198.3274\\-47\\8.084647\\-198.3869\\-47\\7.584647\\-198.8274\\-47\\5.584647\\-198.8869\\-47\\5.084647\\-199.3274\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "96"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-5.415353\\-200.3274\\-45\\-5.915353\\-199.8869\\-45\\-7.415353\\-199.8274\\-45\\-7.915353\\-199.3869\\-45\\-8.915353\\-199.3274\\-45\\-9.415353\\-198.8869\\-45\\-10.41535\\-198.8274\\-45\\-10.91535\\-198.3869\\-45\\-13.41535\\-197.3274\\-45\\-14.41535\\-196.3869\\-45\\-14.91535\\-196.3274\\-45\\-19.10589\\-192.1369\\-45\\-19.16535\\-191.6369\\-45\\-20.10589\\-190.6369\\-45\\-21.60589\\-187.6369\\-45\\-21.66535\\-186.6369\\-45\\-22.10589\\-186.1369\\-45\\-22.16535\\-185.1369\\-45\\-22.60589\\-184.6369\\-45\\-22.66535\\-182.6369\\-45\\-23.10589\\-182.1369\\-45\\-23.10589\\-175.6369\\-45\\-22.66535\\-175.1369\\-45\\-22.60589\\-173.6369\\-45\\-22.16535\\-173.1369\\-45\\-22.10589\\-172.1369\\-45\\-20.66535\\-169.6369\\-45\\-20.60589\\-169.1369\\-45\\-19.66535\\-167.6369\\-45\\-19.60589\\-167.1369\\-45\\-16.41535\\-163.9464\\-45\\-15.91535\\-163.8869\\-45\\-14.91535\\-162.9464\\-45\\-14.41535\\-162.8869\\-45\\-13.41535\\-161.9464\\-45\\-12.91535\\-161.8869\\-45\\-11.41535\\-160.9464\\-45\\-10.41535\\-160.8869\\-45\\-9.915353\\-160.4464\\-45\\-8.915353\\-160.3869\\-45\\-8.415353\\-159.9464\\-45\\-6.915353\\-159.8869\\-45\\-6.415353\\-159.4464\\-45\\-5.415353\\-159.3869\\-45\\-1.915353\\-159.3869\\-45\\-1.415353\\-158.9464\\-45\\1.584647\\-158.9464\\-45\\2.084647\\-159.3869\\-45\\6.084647\\-159.3869\\-45\\7.084647\\-159.4464\\-45\\7.584647\\-159.8869\\-45\\9.084647\\-159.9464\\-45\\9.584647\\-160.3869\\-45\\10.58465\\-160.4464\\-45\\11.08465\\-160.8869\\-45\\12.08465\\-160.9464\\-45\\12.58465\\-161.3869\\-45\\13.08465\\-161.3869\\-45\\13.58465\\-161.8869\\-45\\14.08465\\-161.8869\\-45\\14.58465\\-162.3869\\-45\\16.08465\\-162.9464\\-45\\17.58465\\-164.3869\\-45\\18.08465\\-164.4464\\-45\\20.27518\\-166.6369\\-45\\20.33465\\-167.1369\\-45\\21.27518\\-168.1369\\-45\\21.83465\\-169.6369\\-45\\23.27518\\-172.1369\\-45\\23.33465\\-173.1369\\-45\\23.77518\\-173.6369\\-45\\23.83465\\-175.1369\\-45\\24.27518\\-175.6369\\-45\\24.27518\\-182.6369\\-45\\23.83465\\-183.1369\\-45\\23.77518\\-184.6369\\-45\\23.33465\\-185.1369\\-45\\23.27518\\-186.1369\\-45\\22.83465\\-186.6369\\-45\\22.77518\\-187.6369\\-45\\21.27518\\-190.6369\\-45\\19.83465\\-192.1369\\-45\\19.77518\\-192.6369\\-45\\16.58465\\-195.8274\\-45\\16.08465\\-195.8869\\-45\\14.58465\\-197.3274\\-45\\12.08465\\-198.3869\\-45\\11.58465\\-198.8274\\-45\\10.58465\\-198.8869\\-45\\10.08465\\-199.3274\\-45\\8.584647\\-199.3869\\-45\\8.084647\\-199.8274\\-45\\6.084647\\-199.8869\\-45\\5.584647\\-200.3274\\-45\\3.084647\\-200.3869\\-45\\-2.915353\\-200.3869\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "103"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-5.415353\\-201.3274\\-43\\-5.915353\\-200.8869\\-43\\-7.415353\\-200.8274\\-43\\-7.915353\\-200.3869\\-43\\-9.415353\\-200.3274\\-43\\-10.91535\\-199.3869\\-43\\-11.91535\\-199.3274\\-43\\-12.91535\\-198.8274\\-43\\-13.91535\\-197.8869\\-43\\-14.41535\\-197.8274\\-43\\-15.41535\\-196.8869\\-43\\-15.91535\\-196.8274\\-43\\-19.10589\\-193.6369\\-43\\-19.16535\\-193.1369\\-43\\-20.10589\\-192.1369\\-43\\-20.16535\\-191.6369\\-43\\-21.10589\\-190.6369\\-43\\-21.66535\\-189.1369\\-43\\-22.10589\\-188.6369\\-43\\-22.16535\\-187.6369\\-43\\-22.60589\\-187.1369\\-43\\-22.66535\\-186.1369\\-43\\-23.10589\\-185.6369\\-43\\-23.16535\\-184.6369\\-43\\-23.60589\\-184.1369\\-43\\-23.66535\\-182.1369\\-43\\-24.10589\\-181.6369\\-43\\-24.10589\\-176.6369\\-43\\-23.66535\\-176.1369\\-43\\-23.60589\\-173.6369\\-43\\-23.16535\\-173.1369\\-43\\-23.10589\\-172.1369\\-43\\-21.66535\\-169.6369\\-43\\-21.10589\\-168.1369\\-43\\-20.16535\\-167.1369\\-43\\-20.10589\\-166.6369\\-43\\-16.91535\\-163.4464\\-43\\-16.41535\\-163.3869\\-43\\-15.41535\\-162.4464\\-43\\-14.91535\\-162.3869\\-43\\-14.41535\\-161.8869\\-43\\-13.91535\\-161.8869\\-43\\-12.91535\\-160.9464\\-43\\-11.91535\\-160.8869\\-43\\-11.41535\\-160.3869\\-43\\-10.91535\\-160.3869\\-43\\-10.41535\\-159.9464\\-43\\-8.915353\\-159.8869\\-43\\-8.415353\\-159.4464\\-43\\-6.415353\\-159.3869\\-43\\-5.415353\\-158.8869\\-43\\6.084647\\-158.8869\\-43\\7.084647\\-159.3869\\-43\\9.084647\\-159.4464\\-43\\9.584647\\-159.8869\\-43\\11.08465\\-159.9464\\-43\\11.58465\\-160.3869\\-43\\12.58465\\-160.4464\\-43\\15.08465\\-161.8869\\-43\\15.58465\\-161.9464\\-43\\16.58465\\-162.8869\\-43\\17.08465\\-162.9464\\-43\\18.08465\\-163.8869\\-43\\18.58465\\-163.9464\\-43\\21.27518\\-166.6369\\-43\\21.33465\\-167.1369\\-43\\22.27518\\-168.1369\\-43\\22.83465\\-169.6369\\-43\\24.27518\\-172.1369\\-43\\24.33465\\-173.1369\\-43\\24.77518\\-173.6369\\-43\\24.83465\\-176.1369\\-43\\25.27518\\-176.6369\\-43\\25.27518\\-181.6369\\-43\\24.83465\\-182.1369\\-43\\24.77518\\-184.1369\\-43\\24.33465\\-184.6369\\-43\\24.27518\\-185.6369\\-43\\23.83465\\-186.1369\\-43\\23.77518\\-187.1369\\-43\\23.33465\\-187.6369\\-43\\23.27518\\-188.6369\\-43\\22.83465\\-189.1369\\-43\\22.27518\\-190.6369\\-43\\21.33465\\-191.6369\\-43\\21.27518\\-192.1369\\-43\\19.83465\\-193.6369\\-43\\19.77518\\-194.1369\\-43\\17.58465\\-196.3274\\-43\\17.08465\\-196.3869\\-43\\15.58465\\-197.8274\\-43\\14.08465\\-198.3869\\-43\\13.58465\\-198.8274\\-43\\12.08465\\-199.3869\\-43\\11.58465\\-199.8274\\-43\\10.58465\\-199.8869\\-43\\10.08465\\-200.3274\\-43\\8.584647\\-200.3869\\-43\\8.084647\\-200.8274\\-43\\6.084647\\-200.8869\\-43\\5.584647\\-201.3274\\-43\\3.084647\\-201.3869\\-43\\-3.415353\\-201.3869\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "109"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.915353\\-202.3274\\-41\\-5.415353\\-201.8869\\-41\\-7.415353\\-201.8274\\-41\\-7.915353\\-201.3869\\-41\\-8.915353\\-201.3274\\-41\\-9.415353\\-200.8869\\-41\\-10.41535\\-200.8274\\-41\\-12.91535\\-199.3869\\-41\\-14.41535\\-198.8274\\-41\\-15.91535\\-197.3869\\-41\\-16.41535\\-197.3274\\-41\\-19.60589\\-194.1369\\-41\\-19.66535\\-193.6369\\-41\\-20.60589\\-192.6369\\-41\\-20.66535\\-192.1369\\-41\\-21.60589\\-191.1369\\-41\\-22.16535\\-189.6369\\-41\\-23.10589\\-188.1369\\-41\\-23.16535\\-187.1369\\-41\\-23.60589\\-186.6369\\-41\\-23.66535\\-185.6369\\-41\\-24.10589\\-185.1369\\-41\\-24.16535\\-183.1369\\-41\\-24.60589\\-182.6369\\-41\\-24.66535\\-181.6369\\-41\\-24.66535\\-176.6369\\-41\\-24.60589\\-175.1369\\-41\\-24.16535\\-174.6369\\-41\\-24.10589\\-173.1369\\-41\\-23.66535\\-172.6369\\-41\\-23.60589\\-171.6369\\-41\\-22.66535\\-170.1369\\-41\\-22.66535\\-169.6369\\-41\\-22.16535\\-169.1369\\-41\\-22.10589\\-168.6369\\-41\\-21.16535\\-167.6369\\-41\\-21.10589\\-167.1369\\-41\\-20.16535\\-166.1369\\-41\\-20.10589\\-165.6369\\-41\\-18.41535\\-163.9464\\-41\\-17.91535\\-163.8869\\-41\\-16.41535\\-162.4464\\-41\\-15.91535\\-162.3869\\-41\\-15.41535\\-161.8869\\-41\\-14.91535\\-161.8869\\-41\\-13.91535\\-160.9464\\-41\\-12.91535\\-160.4464\\-41\\-11.91535\\-160.3869\\-41\\-11.41535\\-159.8869\\-41\\-10.41535\\-159.8869\\-41\\-9.915353\\-159.3869\\-41\\-8.415353\\-159.3869\\-41\\-7.915353\\-158.9464\\-41\\-4.415353\\-158.8869\\-41\\-3.915353\\-158.4464\\-41\\-2.915353\\-158.3869\\-41\\3.584647\\-158.3869\\-41\\4.584647\\-158.4464\\-41\\5.084647\\-158.8869\\-41\\8.084647\\-158.9464\\-41\\8.584647\\-159.3869\\-41\\10.58465\\-159.3869\\-41\\11.08465\\-159.8869\\-41\\12.08465\\-159.8869\\-41\\12.58465\\-160.3869\\-41\\13.58465\\-160.4464\\-41\\16.58465\\-161.9464\\-41\\17.58465\\-162.8869\\-41\\18.58465\\-163.3869\\-41\\21.83465\\-166.6369\\-41\\22.33465\\-167.6369\\-41\\23.27518\\-168.6369\\-41\\23.83465\\-170.1369\\-41\\24.77518\\-171.6369\\-41\\24.83465\\-172.6369\\-41\\25.27518\\-173.1369\\-41\\25.33465\\-174.6369\\-41\\25.77518\\-175.1369\\-41\\25.83465\\-176.1369\\-41\\25.83465\\-181.6369\\-41\\25.77518\\-182.6369\\-41\\25.33465\\-183.1369\\-41\\25.27518\\-185.1369\\-41\\24.83465\\-185.6369\\-41\\24.77518\\-186.6369\\-41\\24.33465\\-187.1369\\-41\\24.27518\\-188.1369\\-41\\23.33465\\-189.6369\\-41\\22.77518\\-191.1369\\-41\\21.83465\\-192.1369\\-41\\21.77518\\-192.6369\\-41\\20.83465\\-193.6369\\-41\\20.77518\\-194.1369\\-41\\18.08465\\-196.8274\\-41\\17.58465\\-196.8869\\-41\\16.08465\\-198.3274\\-41\\15.58465\\-198.3869\\-41\\14.58465\\-199.3274\\-41\\12.58465\\-200.3274\\-41\\11.58465\\-200.3869\\-41\\11.08465\\-200.8274\\-41\\10.08465\\-200.8869\\-41\\9.584647\\-201.3274\\-41\\8.584647\\-201.3869\\-41\\8.084647\\-201.8274\\-41\\5.584647\\-201.8869\\-41\\5.084647\\-202.3274\\-41\\3.084647\\-202.3869\\-41\\-2.415353\\-202.3869\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "135"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.415353\\-203.3274\\-39\\-3.915353\\-202.8869\\-39\\-6.415353\\-202.8274\\-39\\-6.915353\\-202.3869\\-39\\-8.415353\\-202.3274\\-39\\-8.915353\\-201.8869\\-39\\-9.915353\\-201.8274\\-39\\-11.41535\\-200.8869\\-39\\-11.91535\\-200.8869\\-39\\-12.41535\\-200.3869\\-39\\-12.91535\\-200.3869\\-39\\-13.41535\\-199.8869\\-39\\-13.91535\\-199.8274\\-39\\-14.91535\\-198.8869\\-39\\-15.41535\\-198.8274\\-39\\-16.91535\\-197.3869\\-39\\-17.41535\\-197.3274\\-39\\-19.10589\\-195.6369\\-39\\-19.16535\\-195.1369\\-39\\-20.60589\\-193.6369\\-39\\-20.66535\\-193.1369\\-39\\-21.60589\\-192.1369\\-39\\-21.66535\\-191.6369\\-39\\-22.16535\\-191.1369\\-39\\-22.16535\\-190.6369\\-39\\-22.66535\\-190.1369\\-39\\-22.66535\\-189.6369\\-39\\-23.16535\\-189.1369\\-39\\-23.16535\\-188.6369\\-39\\-23.60589\\-188.1369\\-39\\-23.66535\\-187.1369\\-39\\-24.16535\\-186.6369\\-39\\-24.16535\\-185.6369\\-39\\-24.60589\\-185.1369\\-39\\-24.66535\\-183.1369\\-39\\-25.10589\\-182.6369\\-39\\-25.16535\\-181.6369\\-39\\-25.16535\\-176.6369\\-39\\-25.10589\\-175.6369\\-39\\-24.66535\\-175.1369\\-39\\-24.60589\\-173.1369\\-39\\-24.16535\\-172.6369\\-39\\-24.10589\\-171.6369\\-39\\-23.66535\\-171.1369\\-39\\-23.66535\\-170.6369\\-39\\-23.16535\\-170.1369\\-39\\-23.10589\\-169.1369\\-39\\-22.16535\\-168.1369\\-39\\-22.10589\\-167.6369\\-39\\-21.16535\\-166.6369\\-39\\-21.10589\\-166.1369\\-39\\-17.91535\\-162.9464\\-39\\-17.41535\\-162.8869\\-39\\-16.41535\\-161.9464\\-39\\-15.91535\\-161.8869\\-39\\-15.41535\\-161.3869\\-39\\-14.91535\\-161.3869\\-39\\-14.41535\\-160.8869\\-39\\-13.91535\\-160.8869\\-39\\-13.41535\\-160.3869\\-39\\-12.91535\\-160.3869\\-39\\-12.41535\\-159.8869\\-39\\-11.41535\\-159.8869\\-39\\-10.91535\\-159.3869\\-39\\-9.415353\\-159.3869\\-39\\-8.915353\\-158.8869\\-39\\-6.415353\\-158.8869\\-39\\-5.415353\\-158.3869\\-39\\5.584647\\-158.3869\\-39\\6.584647\\-158.8869\\-39\\9.084647\\-158.8869\\-39\\9.584647\\-159.3869\\-39\\11.58465\\-159.4464\\-39\\12.08465\\-159.8869\\-39\\13.08465\\-159.8869\\-39\\13.58465\\-160.3869\\-39\\14.08465\\-160.3869\\-39\\14.58465\\-160.8869\\-39\\15.08465\\-160.8869\\-39\\15.58465\\-161.3869\\-39\\16.08465\\-161.3869\\-39\\16.58465\\-161.8869\\-39\\17.08465\\-161.8869\\-39\\17.58465\\-162.3869\\-39\\18.08465\\-162.4464\\-39\\19.58465\\-163.8869\\-39\\20.08465\\-163.9464\\-39\\21.77518\\-165.6369\\-39\\21.83465\\-166.1369\\-39\\23.27518\\-167.6369\\-39\\23.33465\\-168.1369\\-39\\23.83465\\-168.6369\\-39\\23.83465\\-169.1369\\-39\\24.33465\\-169.6369\\-39\\24.33465\\-170.1369\\-39\\24.83465\\-170.6369\\-39\\24.83465\\-171.1369\\-39\\25.27518\\-171.6369\\-39\\25.33465\\-172.6369\\-39\\25.77518\\-173.1369\\-39\\25.83465\\-175.1369\\-39\\26.33465\\-176.1369\\-39\\26.33465\\-181.6369\\-39\\26.27518\\-182.6369\\-39\\25.83465\\-183.1369\\-39\\25.77518\\-185.1369\\-39\\25.33465\\-185.6369\\-39\\25.33465\\-186.6369\\-39\\24.83465\\-187.1369\\-39\\24.77518\\-188.1369\\-39\\23.83465\\-189.6369\\-39\\23.83465\\-190.1369\\-39\\23.33465\\-190.6369\\-39\\23.33465\\-191.1369\\-39\\22.83465\\-191.6369\\-39\\22.77518\\-192.1369\\-39\\21.83465\\-193.1369\\-39\\21.77518\\-193.6369\\-39\\19.83465\\-195.6369\\-39\\19.77518\\-196.1369\\-39\\19.08465\\-196.8274\\-39\\18.58465\\-196.8869\\-39\\16.58465\\-198.8274\\-39\\16.08465\\-198.8869\\-39\\15.08465\\-199.8274\\-39\\12.58465\\-200.8869\\-39\\12.08465\\-201.3274\\-39\\11.08465\\-201.3869\\-39\\10.58465\\-201.8274\\-39\\9.584647\\-201.8869\\-39\\9.084647\\-202.3274\\-39\\7.584647\\-202.3869\\-39\\7.084647\\-202.8274\\-39\\4.584647\\-202.8869\\-39\\4.084647\\-203.3274\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "134"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.915353\\-203.8274\\-37\\-5.415353\\-203.3869\\-37\\-6.915353\\-203.3274\\-37\\-7.415353\\-202.8869\\-37\\-8.915353\\-202.8274\\-37\\-9.415353\\-202.3869\\-37\\-10.41535\\-202.3274\\-37\\-12.91535\\-200.8869\\-37\\-13.41535\\-200.8274\\-37\\-14.41535\\-199.8869\\-37\\-14.91535\\-199.8274\\-37\\-16.41535\\-198.3869\\-37\\-16.91535\\-198.3274\\-37\\-19.10589\\-196.1369\\-37\\-19.16535\\-195.6369\\-37\\-21.10589\\-193.6369\\-37\\-21.16535\\-193.1369\\-37\\-22.10589\\-192.1369\\-37\\-22.66535\\-190.6369\\-37\\-23.16535\\-190.1369\\-37\\-23.16535\\-189.6369\\-37\\-23.66535\\-189.1369\\-37\\-23.66535\\-188.1369\\-37\\-24.16535\\-187.6369\\-37\\-24.16535\\-187.1369\\-37\\-24.60589\\-186.6369\\-37\\-24.66535\\-185.1369\\-37\\-25.10589\\-184.6369\\-37\\-25.16535\\-182.1369\\-37\\-25.60589\\-181.6369\\-37\\-25.66535\\-180.6369\\-37\\-25.66535\\-177.1369\\-37\\-25.60589\\-176.1369\\-37\\-25.16535\\-175.6369\\-37\\-25.10589\\-173.6369\\-37\\-24.66535\\-173.1369\\-37\\-24.66535\\-172.1369\\-37\\-24.16535\\-171.6369\\-37\\-24.10589\\-170.6369\\-37\\-23.66535\\-170.1369\\-37\\-23.66535\\-169.6369\\-37\\-23.16535\\-169.1369\\-37\\-23.16535\\-168.6369\\-37\\-22.66535\\-168.1369\\-37\\-22.60589\\-167.6369\\-37\\-21.16535\\-166.1369\\-37\\-21.10589\\-165.6369\\-37\\-18.91535\\-163.4464\\-37\\-18.41535\\-163.3869\\-37\\-17.41535\\-162.3869\\-37\\-16.91535\\-162.3869\\-37\\-15.91535\\-161.4464\\-37\\-15.41535\\-161.3869\\-37\\-14.91535\\-160.8869\\-37\\-14.41535\\-160.8869\\-37\\-13.91535\\-160.3869\\-37\\-13.41535\\-160.3869\\-37\\-12.91535\\-159.9464\\-37\\-11.91535\\-159.8869\\-37\\-11.41535\\-159.3869\\-37\\-9.915353\\-159.3869\\-37\\-9.415353\\-158.8869\\-37\\-7.415353\\-158.8869\\-37\\-6.415353\\-158.3869\\-37\\-2.915353\\-158.3869\\-37\\-2.415353\\-157.8869\\-37\\2.584647\\-157.8869\\-37\\3.084647\\-158.3869\\-37\\6.584647\\-158.3869\\-37\\7.584647\\-158.8869\\-37\\9.584647\\-158.8869\\-37\\10.08465\\-159.3869\\-37\\11.58465\\-159.3869\\-37\\12.08465\\-159.8869\\-37\\13.58465\\-159.8869\\-37\\14.08465\\-160.3869\\-37\\14.58465\\-160.3869\\-37\\15.08465\\-160.8869\\-37\\15.58465\\-160.8869\\-37\\16.08465\\-161.3869\\-37\\16.58465\\-161.3869\\-37\\17.08465\\-161.8869\\-37\\17.58465\\-161.8869\\-37\\18.58465\\-162.8869\\-37\\19.08465\\-162.8869\\-37\\23.33465\\-167.1369\\-37\\23.33465\\-167.6369\\-37\\24.33465\\-168.6369\\-37\\24.33465\\-169.1369\\-37\\24.83465\\-169.6369\\-37\\24.83465\\-170.1369\\-37\\25.27518\\-170.6369\\-37\\25.33465\\-171.6369\\-37\\25.77518\\-172.1369\\-37\\25.83465\\-173.6369\\-37\\26.33465\\-174.1369\\-37\\26.33465\\-175.6369\\-37\\26.83465\\-176.6369\\-37\\26.83465\\-180.6369\\-37\\26.77518\\-181.6369\\-37\\26.33465\\-182.1369\\-37\\26.27518\\-184.6369\\-37\\25.83465\\-185.1369\\-37\\25.77518\\-186.6369\\-37\\25.33465\\-187.1369\\-37\\25.33465\\-187.6369\\-37\\24.83465\\-188.1369\\-37\\24.77518\\-189.1369\\-37\\24.33465\\-189.6369\\-37\\24.33465\\-190.1369\\-37\\23.83465\\-190.6369\\-37\\23.83465\\-191.1369\\-37\\23.33465\\-191.6369\\-37\\23.27518\\-192.1369\\-37\\22.33465\\-193.1369\\-37\\22.27518\\-193.6369\\-37\\20.33465\\-195.6369\\-37\\20.27518\\-196.1369\\-37\\18.08465\\-198.3274\\-37\\17.58465\\-198.3869\\-37\\16.08465\\-199.8274\\-37\\14.58465\\-200.3869\\-37\\13.58465\\-201.3274\\-37\\12.58465\\-201.8274\\-37\\11.58465\\-201.8869\\-37\\11.08465\\-202.3274\\-37\\10.08465\\-202.3869\\-37\\9.584647\\-202.8274\\-37\\8.584647\\-202.8869\\-37\\8.084647\\-203.3274\\-37\\6.584647\\-203.3869\\-37\\6.084647\\-203.8274\\-37\\4.584647\\-203.8869\\-37\\-3.915353\\-203.8869\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "128"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.415353\\-204.8274\\-35\\-2.915353\\-204.3869\\-35\\-5.415353\\-204.3274\\-35\\-5.915353\\-203.8869\\-35\\-7.415353\\-203.8274\\-35\\-7.915353\\-203.3869\\-35\\-8.915353\\-203.3274\\-35\\-9.415353\\-202.8869\\-35\\-10.41535\\-202.8274\\-35\\-12.91535\\-201.3869\\-35\\-13.41535\\-201.3274\\-35\\-14.41535\\-200.3869\\-35\\-15.41535\\-199.8869\\-35\\-20.66535\\-194.6369\\-35\\-21.16535\\-193.6369\\-35\\-22.10589\\-192.6369\\-35\\-22.16535\\-192.1369\\-35\\-22.66535\\-191.6369\\-35\\-22.66535\\-191.1369\\-35\\-23.16535\\-190.6369\\-35\\-23.16535\\-190.1369\\-35\\-23.66535\\-189.6369\\-35\\-23.66535\\-188.6369\\-35\\-24.16535\\-188.1369\\-35\\-24.16535\\-187.6369\\-35\\-24.66535\\-187.1369\\-35\\-24.66535\\-185.6369\\-35\\-25.16535\\-185.1369\\-35\\-25.16535\\-183.6369\\-35\\-25.66535\\-182.6369\\-35\\-25.66535\\-175.1369\\-35\\-25.16535\\-174.1369\\-35\\-25.16535\\-173.1369\\-35\\-24.66535\\-172.6369\\-35\\-24.66535\\-171.6369\\-35\\-24.16535\\-171.1369\\-35\\-24.16535\\-170.1369\\-35\\-23.66535\\-169.6369\\-35\\-23.66535\\-169.1369\\-35\\-23.16535\\-168.6369\\-35\\-23.16535\\-168.1369\\-35\\-22.16535\\-167.1369\\-35\\-21.66535\\-166.1369\\-35\\-18.41535\\-162.8869\\-35\\-17.91535\\-162.8869\\-35\\-16.91535\\-161.8869\\-35\\-16.41535\\-161.8869\\-35\\-15.91535\\-161.3869\\-35\\-15.41535\\-161.3869\\-35\\-14.91535\\-160.8869\\-35\\-14.41535\\-160.8869\\-35\\-13.91535\\-160.3869\\-35\\-13.41535\\-160.3869\\-35\\-12.91535\\-159.8869\\-35\\-11.91535\\-159.8869\\-35\\-11.41535\\-159.3869\\-35\\-9.915353\\-159.3869\\-35\\-9.415353\\-158.8869\\-35\\-7.415353\\-158.8869\\-35\\-6.915353\\-158.3869\\-35\\-3.415353\\-158.3869\\-35\\-2.915353\\-157.8869\\-35\\3.084647\\-157.8869\\-35\\3.584647\\-158.3869\\-35\\7.084647\\-158.3869\\-35\\7.584647\\-158.8869\\-35\\9.584647\\-158.8869\\-35\\10.08465\\-159.3869\\-35\\11.58465\\-159.3869\\-35\\12.08465\\-159.8869\\-35\\13.58465\\-159.8869\\-35\\14.08465\\-160.3869\\-35\\14.58465\\-160.3869\\-35\\15.08465\\-160.8869\\-35\\15.58465\\-160.8869\\-35\\16.08465\\-161.3869\\-35\\16.58465\\-161.3869\\-35\\17.08465\\-161.8869\\-35\\17.58465\\-161.8869\\-35\\18.08465\\-162.3869\\-35\\18.58465\\-162.3869\\-35\\20.08465\\-163.8869\\-35\\20.58465\\-163.8869\\-35\\22.77518\\-166.1369\\-35\\22.83465\\-166.6369\\-35\\23.83465\\-167.6369\\-35\\23.83465\\-168.1369\\-35\\24.83465\\-169.1369\\-35\\24.83465\\-169.6369\\-35\\25.27518\\-170.1369\\-35\\25.33465\\-171.1369\\-35\\25.83465\\-171.6369\\-35\\25.83465\\-172.6369\\-35\\26.33465\\-173.1369\\-35\\26.33465\\-174.1369\\-35\\26.83465\\-175.1369\\-35\\26.83465\\-182.6369\\-35\\26.33465\\-183.6369\\-35\\26.33465\\-185.1369\\-35\\25.83465\\-185.6369\\-35\\25.83465\\-187.1369\\-35\\25.33465\\-187.6369\\-35\\25.27518\\-188.6369\\-35\\24.83465\\-189.1369\\-35\\24.83465\\-189.6369\\-35\\24.33465\\-190.1369\\-35\\24.33465\\-190.6369\\-35\\23.83465\\-191.1369\\-35\\23.83465\\-191.6369\\-35\\23.33465\\-192.1369\\-35\\23.27518\\-192.6369\\-35\\22.33465\\-193.6369\\-35\\21.83465\\-194.6369\\-35\\16.58465\\-199.8869\\-35\\15.58465\\-200.3869\\-35\\15.08465\\-200.8869\\-35\\14.58465\\-200.8869\\-35\\13.58465\\-201.8274\\-35\\12.08465\\-202.3869\\-35\\11.58465\\-202.8274\\-35\\10.58465\\-202.8869\\-35\\10.08465\\-203.3274\\-35\\9.084647\\-203.3869\\-35\\8.584647\\-203.8274\\-35\\7.084647\\-203.8869\\-35\\6.584647\\-204.3274\\-35\\4.084647\\-204.3869\\-35\\3.584647\\-204.8274\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "151"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.415353\\-205.3274\\-33\\-2.915353\\-204.8869\\-33\\-5.415353\\-204.8274\\-33\\-5.915353\\-204.3869\\-33\\-7.415353\\-204.3274\\-33\\-7.915353\\-203.8869\\-33\\-8.915353\\-203.8274\\-33\\-9.415353\\-203.3869\\-33\\-9.915353\\-203.3869\\-33\\-10.41535\\-202.8869\\-33\\-10.91535\\-202.8869\\-33\\-11.41535\\-202.3869\\-33\\-11.91535\\-202.3869\\-33\\-12.41535\\-201.8869\\-33\\-12.91535\\-201.8869\\-33\\-13.41535\\-201.3869\\-33\\-13.91535\\-201.3274\\-33\\-15.91535\\-199.3869\\-33\\-16.41535\\-199.3869\\-33\\-19.10589\\-196.6369\\-33\\-19.16535\\-196.1369\\-33\\-21.16535\\-194.1369\\-33\\-21.16535\\-193.6369\\-33\\-22.16535\\-192.6369\\-33\\-22.16535\\-192.1369\\-33\\-22.66535\\-191.6369\\-33\\-22.66535\\-191.1369\\-33\\-23.16535\\-190.6369\\-33\\-23.16535\\-190.1369\\-33\\-23.66535\\-189.6369\\-33\\-23.66535\\-189.1369\\-33\\-24.16535\\-188.6369\\-33\\-24.16535\\-187.6369\\-33\\-24.66535\\-187.1369\\-33\\-24.66535\\-185.6369\\-33\\-25.16535\\-185.1369\\-33\\-25.16535\\-183.6369\\-33\\-25.66535\\-183.1369\\-33\\-25.66535\\-179.6369\\-33\\-26.16535\\-179.1369\\-33\\-26.16535\\-178.6369\\-33\\-25.66535\\-178.1369\\-33\\-25.66535\\-174.6369\\-33\\-25.16535\\-174.1369\\-33\\-25.16535\\-173.1369\\-33\\-24.66535\\-172.6369\\-33\\-24.66535\\-171.6369\\-33\\-24.16535\\-171.1369\\-33\\-24.16535\\-170.1369\\-33\\-23.66535\\-169.6369\\-33\\-23.66535\\-169.1369\\-33\\-23.16535\\-168.6369\\-33\\-23.16535\\-168.1369\\-33\\-22.16535\\-167.1369\\-33\\-22.16535\\-166.6369\\-33\\-18.41535\\-162.8869\\-33\\-17.91535\\-162.8869\\-33\\-16.91535\\-161.8869\\-33\\-16.41535\\-161.8869\\-33\\-15.91535\\-161.3869\\-33\\-15.41535\\-161.3869\\-33\\-14.91535\\-160.8869\\-33\\-14.41535\\-160.8869\\-33\\-13.91535\\-160.3869\\-33\\-13.41535\\-160.3869\\-33\\-12.91535\\-159.8869\\-33\\-11.91535\\-159.8869\\-33\\-11.41535\\-159.3869\\-33\\-9.915353\\-159.3869\\-33\\-9.415353\\-158.8869\\-33\\-6.915353\\-158.8274\\-33\\-6.415353\\-158.3869\\-33\\-2.415353\\-158.3869\\-33\\-1.415353\\-157.8869\\-33\\0.0846473\\-157.8869\\-33\\0.5846473\\-158.3274\\-33\\1.584647\\-158.3869\\-33\\6.584647\\-158.3869\\-33\\7.084647\\-158.8869\\-33\\9.584647\\-158.8869\\-33\\10.08465\\-159.3869\\-33\\11.58465\\-159.3869\\-33\\12.08465\\-159.8869\\-33\\13.58465\\-159.8869\\-33\\14.08465\\-160.3869\\-33\\14.58465\\-160.3869\\-33\\15.08465\\-160.8869\\-33\\15.58465\\-160.8869\\-33\\16.08465\\-161.3869\\-33\\16.58465\\-161.3869\\-33\\17.08465\\-161.8869\\-33\\17.58465\\-161.8869\\-33\\18.08465\\-162.3869\\-33\\18.58465\\-162.3869\\-33\\20.08465\\-163.8869\\-33\\20.58465\\-163.8869\\-33\\22.83465\\-166.1369\\-33\\22.83465\\-166.6369\\-33\\23.83465\\-167.6369\\-33\\23.89411\\-168.1369\\-33\\24.83465\\-169.1369\\-33\\24.83465\\-169.6369\\-33\\25.33465\\-170.1369\\-33\\25.33465\\-171.1369\\-33\\25.83465\\-171.6369\\-33\\25.83465\\-172.6369\\-33\\26.33465\\-173.1369\\-33\\26.33465\\-174.1369\\-33\\26.83465\\-174.6369\\-33\\26.83465\\-177.6369\\-33\\27.33465\\-178.1369\\-33\\27.33465\\-179.1369\\-33\\26.83465\\-179.6369\\-33\\26.83465\\-183.1369\\-33\\26.33465\\-183.6369\\-33\\26.33465\\-185.1369\\-33\\25.83465\\-185.6369\\-33\\25.83465\\-187.1369\\-33\\25.33465\\-187.6369\\-33\\25.33465\\-188.6369\\-33\\24.83465\\-189.1369\\-33\\24.83465\\-189.6369\\-33\\24.33465\\-190.1369\\-33\\24.33465\\-190.6369\\-33\\23.83465\\-191.1369\\-33\\23.83465\\-191.6369\\-33\\23.33465\\-192.1369\\-33\\23.33465\\-192.6369\\-33\\22.33465\\-193.6369\\-33\\22.33465\\-194.1369\\-33\\20.83465\\-195.6369\\-33\\20.77518\\-196.1369\\-33\\17.58465\\-199.3869\\-33\\17.08465\\-199.3869\\-33\\15.08465\\-201.3274\\-33\\14.58465\\-201.3869\\-33\\14.08465\\-201.8869\\-33\\13.58465\\-201.8869\\-33\\13.08465\\-202.3869\\-33\\12.58465\\-202.3869\\-33\\12.08465\\-202.8869\\-33\\11.58465\\-202.8869\\-33\\11.08465\\-203.3869\\-33\\10.58465\\-203.3869\\-33\\10.08465\\-203.8274\\-33\\9.084647\\-203.8869\\-33\\8.584647\\-204.3274\\-33\\7.084647\\-204.3869\\-33\\6.584647\\-204.8274\\-33\\4.084647\\-204.8869\\-33\\3.584647\\-205.3274\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "136"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.415353\\-205.8274\\-31\\-1.915353\\-205.3869\\-31\\-4.915353\\-205.3274\\-31\\-5.415353\\-204.8869\\-31\\-6.915353\\-204.8274\\-31\\-7.415353\\-204.3869\\-31\\-8.415353\\-204.3869\\-31\\-8.915353\\-203.8869\\-31\\-9.415353\\-203.8869\\-31\\-9.915353\\-203.3869\\-31\\-10.41535\\-203.3869\\-31\\-10.91535\\-202.8869\\-31\\-11.41535\\-202.8869\\-31\\-11.91535\\-202.3869\\-31\\-12.41535\\-202.3869\\-31\\-13.41535\\-201.3869\\-31\\-13.91535\\-201.3869\\-31\\-15.91535\\-199.3869\\-31\\-16.41535\\-199.3869\\-31\\-19.16535\\-196.6369\\-31\\-19.16535\\-196.1369\\-31\\-21.16535\\-194.1369\\-31\\-21.16535\\-193.6369\\-31\\-22.16535\\-192.6369\\-31\\-22.16535\\-192.1369\\-31\\-22.66535\\-191.6369\\-31\\-22.66535\\-191.1369\\-31\\-23.16535\\-190.6369\\-31\\-23.16535\\-190.1369\\-31\\-23.66535\\-189.6369\\-31\\-23.72482\\-188.6369\\-31\\-24.16535\\-188.1369\\-31\\-24.16535\\-187.6369\\-31\\-24.66535\\-187.1369\\-31\\-24.66535\\-185.6369\\-31\\-25.16535\\-185.1369\\-31\\-25.22482\\-183.1369\\-31\\-25.66535\\-182.6369\\-31\\-25.66535\\-175.1369\\-31\\-25.16535\\-174.6369\\-31\\-25.16535\\-173.6369\\-31\\-24.72482\\-173.1369\\-31\\-24.66535\\-171.6369\\-31\\-24.16535\\-171.1369\\-31\\-24.16535\\-170.6369\\-31\\-23.72482\\-170.1369\\-31\\-23.16535\\-168.6369\\-31\\-22.66535\\-168.1369\\-31\\-22.66535\\-167.6369\\-31\\-21.22482\\-166.1369\\-31\\-21.16535\\-165.6369\\-31\\-18.91535\\-163.3869\\-31\\-18.41535\\-163.3869\\-31\\-17.41535\\-162.3869\\-31\\-16.91535\\-162.3274\\-31\\-15.91535\\-161.3869\\-31\\-15.41535\\-161.3869\\-31\\-14.91535\\-160.8869\\-31\\-14.41535\\-160.8869\\-31\\-13.91535\\-160.3869\\-31\\-12.91535\\-160.3869\\-31\\-12.41535\\-159.8869\\-31\\-11.41535\\-159.8274\\-31\\-10.91535\\-159.3869\\-31\\-9.415353\\-159.3869\\-31\\-8.915353\\-158.8869\\-31\\-5.915353\\-158.8274\\-31\\-5.415353\\-158.3869\\-31\\5.584647\\-158.3869\\-31\\6.084647\\-158.8869\\-31\\9.084647\\-158.8869\\-31\\9.584647\\-159.3869\\-31\\11.58465\\-159.3869\\-31\\12.08465\\-159.8869\\-31\\13.08465\\-159.8869\\-31\\13.58465\\-160.3869\\-31\\14.58465\\-160.3869\\-31\\15.08465\\-160.8869\\-31\\15.58465\\-160.8869\\-31\\16.08465\\-161.3869\\-31\\16.58465\\-161.3869\\-31\\17.08465\\-161.8869\\-31\\17.58465\\-161.8869\\-31\\18.58465\\-162.8869\\-31\\19.08465\\-162.8869\\-31\\23.83465\\-167.6369\\-31\\23.83465\\-168.1369\\-31\\24.33465\\-168.6369\\-31\\24.33465\\-169.1369\\-31\\24.83465\\-169.6369\\-31\\24.83465\\-170.1369\\-31\\25.33465\\-170.6369\\-31\\25.33465\\-171.1369\\-31\\25.83465\\-171.6369\\-31\\25.89411\\-173.1369\\-31\\26.33465\\-173.6369\\-31\\26.33465\\-174.6369\\-31\\26.83465\\-175.1369\\-31\\26.83465\\-182.6369\\-31\\26.39411\\-183.1369\\-31\\26.33465\\-185.1369\\-31\\25.83465\\-185.6369\\-31\\25.83465\\-187.1369\\-31\\25.33465\\-187.6369\\-31\\25.33465\\-188.6369\\-31\\24.83465\\-189.1369\\-31\\24.83465\\-189.6369\\-31\\24.33465\\-190.1369\\-31\\24.33465\\-190.6369\\-31\\23.83465\\-191.1369\\-31\\23.83465\\-191.6369\\-31\\23.33465\\-192.1369\\-31\\23.33465\\-192.6369\\-31\\22.33465\\-193.6369\\-31\\22.33465\\-194.1369\\-31\\20.83465\\-195.6369\\-31\\20.83465\\-196.1369\\-31\\17.08465\\-199.8869\\-31\\16.58465\\-199.8869\\-31\\14.58465\\-201.8869\\-31\\14.08465\\-201.8869\\-31\\13.58465\\-202.3869\\-31\\13.08465\\-202.3869\\-31\\12.58465\\-202.8869\\-31\\12.08465\\-202.8869\\-31\\11.58465\\-203.3869\\-31\\11.08465\\-203.3869\\-31\\10.58465\\-203.8869\\-31\\10.08465\\-203.8869\\-31\\9.584647\\-204.3274\\-31\\8.584647\\-204.3869\\-31\\8.084647\\-204.8274\\-31\\6.584647\\-204.8869\\-31\\6.084647\\-205.3274\\-31\\3.084647\\-205.3869\\-31\\2.584647\\-205.8274\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "144"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "16"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.415353\\-205.8869\\-29\\-3.915353\\-205.3869\\-29\\-5.415353\\-205.3869\\-29\\-5.915353\\-204.8869\\-29\\-7.415353\\-204.8869\\-29\\-7.915353\\-204.3869\\-29\\-8.415353\\-204.3869\\-29\\-8.915353\\-203.8869\\-29\\-9.415353\\-203.8869\\-29\\-9.915353\\-203.3869\\-29\\-10.41535\\-203.3869\\-29\\-10.91535\\-202.8869\\-29\\-11.41535\\-202.8869\\-29\\-11.91535\\-202.3869\\-29\\-12.41535\\-202.3869\\-29\\-13.41535\\-201.3869\\-29\\-13.91535\\-201.3869\\-29\\-16.41535\\-198.9464\\-29\\-16.91535\\-198.8869\\-29\\-18.16535\\-197.6369\\-29\\-18.22482\\-197.1369\\-29\\-20.66535\\-194.6369\\-29\\-20.66535\\-194.1369\\-29\\-21.66535\\-193.1369\\-29\\-21.66535\\-192.6369\\-29\\-22.16535\\-192.1369\\-29\\-22.16535\\-191.6369\\-29\\-22.66535\\-191.1369\\-29\\-22.66535\\-190.6369\\-29\\-23.16535\\-190.1369\\-29\\-23.16535\\-189.6369\\-29\\-23.66535\\-189.1369\\-29\\-23.72482\\-188.1369\\-29\\-24.16535\\-187.6369\\-29\\-24.22482\\-186.6369\\-29\\-24.66535\\-186.1369\\-29\\-24.72482\\-184.6369\\-29\\-25.16535\\-184.1369\\-29\\-25.22482\\-180.6369\\-29\\-25.66535\\-180.1369\\-29\\-25.66535\\-178.1369\\-29\\-25.22482\\-177.6369\\-29\\-25.16535\\-174.6369\\-29\\-24.72482\\-174.1369\\-29\\-24.66535\\-172.6369\\-29\\-24.16535\\-172.1369\\-29\\-24.16535\\-171.1369\\-29\\-23.66535\\-170.6369\\-29\\-23.66535\\-170.1369\\-29\\-23.16535\\-169.1369\\-29\\-22.66535\\-168.6369\\-29\\-22.66535\\-168.1369\\-29\\-21.22482\\-166.6369\\-29\\-21.16535\\-166.1369\\-29\\-18.41535\\-163.3869\\-29\\-17.91535\\-163.3274\\-29\\-16.91535\\-162.3869\\-29\\-16.41535\\-162.3274\\-29\\-15.41535\\-161.3869\\-29\\-14.91535\\-161.3869\\-29\\-14.41535\\-160.8869\\-29\\-13.41535\\-160.8274\\-29\\-11.91535\\-159.8869\\-29\\-10.91535\\-159.8869\\-29\\-10.41535\\-159.3869\\-29\\-7.915353\\-159.3274\\-29\\-7.415353\\-158.8869\\-29\\-3.415353\\-158.8274\\-29\\-2.915353\\-158.3869\\-29\\2.584647\\-158.3869\\-29\\3.084647\\-158.8274\\-29\\4.084647\\-158.8869\\-29\\7.584647\\-158.8869\\-29\\8.084647\\-159.3274\\-29\\10.58465\\-159.3869\\-29\\11.08465\\-159.8274\\-29\\12.58465\\-159.8869\\-29\\13.08465\\-160.3869\\-29\\14.08465\\-160.3869\\-29\\14.58465\\-160.8869\\-29\\15.08465\\-160.8869\\-29\\15.58465\\-161.3869\\-29\\16.08465\\-161.3869\\-29\\16.58465\\-161.8869\\-29\\17.08465\\-161.8869\\-29\\18.08465\\-162.8274\\-29\\18.58465\\-162.8869\\-29\\20.08465\\-164.3274\\-29\\20.58465\\-164.3869\\-29\\21.83465\\-165.6369\\-29\\21.89411\\-166.1369\\-29\\23.33465\\-167.6369\\-29\\23.39411\\-168.1369\\-29\\24.33465\\-169.1369\\-29\\24.33465\\-169.6369\\-29\\24.83465\\-170.1369\\-29\\24.89411\\-171.1369\\-29\\25.33465\\-171.6369\\-29\\25.33465\\-172.1369\\-29\\25.83465\\-172.6369\\-29\\25.89411\\-174.1369\\-29\\26.33465\\-174.6369\\-29\\26.39411\\-177.1369\\-29\\26.83465\\-177.6369\\-29\\26.83465\\-180.1369\\-29\\26.39411\\-180.6369\\-29\\26.33465\\-184.1369\\-29\\25.89411\\-184.6369\\-29\\25.83465\\-186.1369\\-29\\25.39411\\-186.6369\\-29\\25.33465\\-188.1369\\-29\\24.83465\\-188.6369\\-29\\24.83465\\-189.1369\\-29\\24.33465\\-189.6369\\-29\\24.33465\\-190.1369\\-29\\23.83465\\-190.6369\\-29\\23.83465\\-191.1369\\-29\\23.33465\\-191.6369\\-29\\23.33465\\-192.1369\\-29\\22.83465\\-192.6369\\-29\\22.83465\\-193.1369\\-29\\21.89411\\-194.1369\\-29\\21.83465\\-194.6369\\-29\\20.39411\\-196.1369\\-29\\20.33465\\-196.6369\\-29\\17.08465\\-199.8869\\-29\\16.58465\\-199.8869\\-29\\14.58465\\-201.8869\\-29\\14.08465\\-201.8869\\-29\\13.58465\\-202.3869\\-29\\13.08465\\-202.3869\\-29\\12.58465\\-202.8869\\-29\\12.08465\\-202.8869\\-29\\11.58465\\-203.3869\\-29\\11.08465\\-203.3869\\-29\\10.58465\\-203.8869\\-29\\10.08465\\-203.8869\\-29\\9.584647\\-204.3869\\-29\\9.084647\\-204.3869\\-29\\8.584647\\-204.8869\\-29\\7.084647\\-204.8869\\-29\\6.584647\\-205.3869\\-29\\5.084647\\-205.3869\\-29\\4.584647\\-205.8869\\-29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "128"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.4153527\\-206.3869\\-27\\-0.9153527\\-205.8869\\-27\\-3.415353\\-205.8869\\-27\\-3.915353\\-205.3869\\-27\\-5.415353\\-205.3869\\-27\\-5.915353\\-204.8869\\-27\\-7.415353\\-204.8869\\-27\\-7.915353\\-204.3869\\-27\\-8.415353\\-204.3869\\-27\\-8.915353\\-203.8869\\-27\\-9.415353\\-203.8869\\-27\\-9.915353\\-203.3869\\-27\\-10.41535\\-203.3869\\-27\\-10.91535\\-202.8869\\-27\\-11.41535\\-202.8869\\-27\\-11.91535\\-202.3869\\-27\\-12.41535\\-202.3869\\-27\\-13.91535\\-200.9464\\-27\\-14.41535\\-200.8869\\-27\\-19.16535\\-196.1369\\-27\\-19.22482\\-195.6369\\-27\\-20.66535\\-194.1369\\-27\\-21.22482\\-192.6369\\-27\\-22.16535\\-191.6369\\-27\\-22.16535\\-191.1369\\-27\\-22.66535\\-190.6369\\-27\\-22.72482\\-189.6369\\-27\\-23.66535\\-188.1369\\-27\\-23.72482\\-187.1369\\-27\\-24.16535\\-186.6369\\-27\\-24.22482\\-185.1369\\-27\\-24.66535\\-184.6369\\-27\\-24.72482\\-181.6369\\-27\\-25.16535\\-181.1369\\-27\\-25.16535\\-177.6369\\-27\\-24.72482\\-177.1369\\-27\\-24.66535\\-174.1369\\-27\\-24.22482\\-173.6369\\-27\\-24.16535\\-172.6369\\-27\\-23.72482\\-172.1369\\-27\\-23.66535\\-171.1369\\-27\\-22.72482\\-169.6369\\-27\\-22.66535\\-169.1369\\-27\\-21.72482\\-168.1369\\-27\\-21.66535\\-167.6369\\-27\\-20.72482\\-166.6369\\-27\\-20.66535\\-166.1369\\-27\\-18.41535\\-163.8869\\-27\\-17.91535\\-163.8274\\-27\\-16.91535\\-162.8869\\-27\\-16.41535\\-162.8274\\-27\\-15.41535\\-161.8869\\-27\\-14.91535\\-161.8869\\-27\\-14.41535\\-161.3869\\-27\\-13.91535\\-161.3869\\-27\\-13.41535\\-160.8869\\-27\\-12.91535\\-160.8869\\-27\\-12.41535\\-160.3869\\-27\\-11.41535\\-160.3869\\-27\\-10.91535\\-159.8869\\-27\\-9.415353\\-159.8274\\-27\\-8.915353\\-159.3869\\-27\\-5.915353\\-159.3274\\-27\\-5.415353\\-158.8869\\-27\\5.084647\\-158.8869\\-27\\5.584647\\-159.3274\\-27\\9.084647\\-159.3869\\-27\\9.584647\\-159.8274\\-27\\11.08465\\-159.8869\\-27\\11.58465\\-160.3274\\-27\\13.08465\\-160.3869\\-27\\13.58465\\-160.8869\\-27\\14.08465\\-160.8869\\-27\\17.08465\\-162.3869\\-27\\18.08465\\-163.3274\\-27\\18.58465\\-163.3869\\-27\\19.39411\\-164.1369\\-27\\22.83465\\-167.6369\\-27\\22.89411\\-168.1369\\-27\\23.83465\\-169.1369\\-27\\23.83465\\-169.6369\\-27\\24.33465\\-170.1369\\-27\\24.33465\\-170.6369\\-27\\24.83465\\-171.1369\\-27\\24.89411\\-172.1369\\-27\\25.33465\\-172.6369\\-27\\25.39411\\-173.6369\\-27\\25.83465\\-174.1369\\-27\\25.89411\\-176.6369\\-27\\26.33465\\-177.1369\\-27\\26.33465\\-181.1369\\-27\\25.89411\\-181.6369\\-27\\25.83465\\-184.6369\\-27\\25.39411\\-185.1369\\-27\\25.33465\\-186.6369\\-27\\24.89411\\-187.1369\\-27\\24.83465\\-188.1369\\-27\\24.39411\\-188.6369\\-27\\24.33465\\-189.6369\\-27\\23.83465\\-190.1369\\-27\\23.83465\\-190.6369\\-27\\23.33465\\-191.1369\\-27\\23.33465\\-191.6369\\-27\\22.83465\\-192.1369\\-27\\22.83465\\-192.6369\\-27\\21.89411\\-193.6369\\-27\\21.83465\\-194.1369\\-27\\20.89411\\-195.1369\\-27\\20.83465\\-195.6369\\-27\\15.08465\\-201.3869\\-27\\14.58465\\-201.3869\\-27\\13.58465\\-202.3869\\-27\\13.08465\\-202.3869\\-27\\12.58465\\-202.8869\\-27\\12.08465\\-202.8869\\-27\\11.58465\\-203.3869\\-27\\11.08465\\-203.3869\\-27\\10.58465\\-203.8869\\-27\\10.08465\\-203.8869\\-27\\9.584647\\-204.3869\\-27\\9.084647\\-204.3869\\-27\\8.584647\\-204.8869\\-27\\7.584647\\-204.8869\\-27\\7.084647\\-205.3869\\-27\\5.584647\\-205.3869\\-27\\5.084647\\-205.8869\\-27\\2.584647\\-205.8869\\-27\\2.084647\\-206.3869\\-27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "118"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.915353\\-205.8869\\-25\\-3.415353\\-205.3869\\-25\\-5.415353\\-205.3869\\-25\\-5.915353\\-204.8869\\-25\\-6.915353\\-204.8869\\-25\\-7.415353\\-204.3869\\-25\\-7.915353\\-204.3869\\-25\\-10.41535\\-202.9464\\-25\\-10.91535\\-202.8869\\-25\\-11.41535\\-202.3869\\-25\\-11.91535\\-202.3869\\-25\\-13.41535\\-200.9464\\-25\\-13.91535\\-200.8869\\-25\\-17.41535\\-197.4464\\-25\\-18.66535\\-196.1369\\-25\\-18.72482\\-195.6369\\-25\\-19.66535\\-194.6369\\-25\\-19.72482\\-194.1369\\-25\\-20.66535\\-193.1369\\-25\\-21.22482\\-191.6369\\-25\\-21.66535\\-191.1369\\-25\\-22.22482\\-189.6369\\-25\\-22.66535\\-189.1369\\-25\\-22.72482\\-188.1369\\-25\\-23.16535\\-187.6369\\-25\\-23.22482\\-186.6369\\-25\\-23.66535\\-186.1369\\-25\\-23.72482\\-185.1369\\-25\\-24.16535\\-184.6369\\-25\\-24.22482\\-181.1369\\-25\\-24.66535\\-180.6369\\-25\\-24.66535\\-178.1369\\-25\\-24.22482\\-177.6369\\-25\\-24.16535\\-174.6369\\-25\\-23.72482\\-174.1369\\-25\\-23.66535\\-172.6369\\-25\\-22.66535\\-170.6369\\-25\\-22.22482\\-170.1369\\-25\\-21.66535\\-168.6369\\-25\\-20.72482\\-167.6369\\-25\\-20.66535\\-167.1369\\-25\\-19.91535\\-166.3274\\-25\\-17.41535\\-163.8869\\-25\\-16.91535\\-163.8274\\-25\\-15.91535\\-162.8869\\-25\\-15.41535\\-162.8274\\-25\\-14.41535\\-161.8869\\-25\\-13.91535\\-161.8869\\-25\\-13.41535\\-161.3869\\-25\\-12.41535\\-161.3274\\-25\\-10.91535\\-160.3869\\-25\\-9.415353\\-160.3274\\-25\\-8.915353\\-159.8869\\-25\\-6.915353\\-159.8274\\-25\\-6.415353\\-159.3869\\-25\\6.584647\\-159.3869\\-25\\7.084647\\-159.8274\\-25\\9.584647\\-159.8869\\-25\\10.08465\\-160.3274\\-25\\11.58465\\-160.3869\\-25\\12.08465\\-160.8869\\-25\\12.58465\\-160.8869\\-25\\13.08465\\-161.3274\\-25\\14.08465\\-161.3869\\-25\\14.58465\\-161.8869\\-25\\15.08465\\-161.8869\\-25\\16.08465\\-162.3869\\-25\\17.08465\\-163.3274\\-25\\17.58465\\-163.3869\\-25\\18.58465\\-164.3274\\-25\\19.08465\\-164.3869\\-25\\21.33465\\-166.6369\\-25\\21.39411\\-167.1369\\-25\\22.83465\\-168.6369\\-25\\23.39411\\-170.1369\\-25\\24.33465\\-171.6369\\-25\\24.39411\\-172.6369\\-25\\24.83465\\-173.1369\\-25\\24.89411\\-174.1369\\-25\\25.33465\\-174.6369\\-25\\25.39411\\-177.6369\\-25\\25.83465\\-178.1369\\-25\\25.83465\\-181.1369\\-25\\25.39411\\-181.6369\\-25\\25.33465\\-184.6369\\-25\\24.89411\\-185.1369\\-25\\24.83465\\-186.6369\\-25\\24.39411\\-187.1369\\-25\\24.33465\\-188.1369\\-25\\23.83465\\-188.6369\\-25\\23.83465\\-189.1369\\-25\\23.39411\\-189.6369\\-25\\23.33465\\-190.6369\\-25\\22.83465\\-191.1369\\-25\\22.83465\\-191.6369\\-25\\21.89411\\-192.6369\\-25\\21.33465\\-194.1369\\-25\\20.39411\\-195.1369\\-25\\20.33465\\-195.6369\\-25\\18.39411\\-197.6369\\-25\\18.33465\\-198.1369\\-25\\17.08465\\-199.3869\\-25\\16.58465\\-199.4464\\-25\\14.58465\\-201.3869\\-25\\14.08465\\-201.4464\\-25\\13.08465\\-202.3869\\-25\\12.58465\\-202.4464\\-25\\11.58465\\-203.3869\\-25\\11.08465\\-203.3869\\-25\\10.58465\\-203.8869\\-25\\10.08465\\-203.8869\\-25\\9.584647\\-204.3869\\-25\\8.584647\\-204.4464\\-25\\8.084647\\-204.8869\\-25\\7.084647\\-204.8869\\-25\\6.584647\\-205.3869\\-25\\4.584647\\-205.4464\\-25\\4.084647\\-205.8869\\-25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "102"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.915353\\-205.3869\\-23\\-4.415353\\-204.9464\\-23\\-5.915353\\-204.8869\\-23\\-6.415353\\-204.3869\\-23\\-6.915353\\-204.3869\\-23\\-8.415353\\-203.4464\\-23\\-9.415353\\-203.3869\\-23\\-10.41535\\-202.4464\\-23\\-10.91535\\-202.3869\\-23\\-11.91535\\-201.4464\\-23\\-12.41535\\-201.3869\\-23\\-13.41535\\-200.4464\\-23\\-13.91535\\-200.3869\\-23\\-17.16535\\-197.1369\\-23\\-17.22482\\-196.6369\\-23\\-18.66535\\-195.1369\\-23\\-18.72482\\-194.6369\\-23\\-19.66535\\-193.6369\\-23\\-20.22482\\-192.1369\\-23\\-21.16535\\-191.1369\\-23\\-21.22482\\-190.1369\\-23\\-22.16535\\-188.6369\\-23\\-22.22482\\-187.6369\\-23\\-22.66535\\-187.1369\\-23\\-22.72482\\-186.1369\\-23\\-23.16535\\-185.6369\\-23\\-23.22482\\-183.6369\\-23\\-23.66535\\-183.1369\\-23\\-23.66535\\-175.6369\\-23\\-23.22482\\-175.1369\\-23\\-23.16535\\-173.6369\\-23\\-22.72482\\-173.1369\\-23\\-22.66535\\-172.1369\\-23\\-21.22482\\-169.6369\\-23\\-21.16535\\-169.1369\\-23\\-20.22482\\-168.1369\\-23\\-20.16535\\-167.6369\\-23\\-19.41535\\-166.8274\\-23\\-16.41535\\-163.8869\\-23\\-15.91535\\-163.8274\\-23\\-14.91535\\-162.8869\\-23\\-11.91535\\-161.3869\\-23\\-10.91535\\-161.3274\\-23\\-10.41535\\-160.8869\\-23\\-9.415353\\-160.8274\\-23\\-8.915353\\-160.3869\\-23\\-6.915353\\-160.3274\\-23\\-6.415353\\-159.8869\\-23\\-2.915353\\-159.8274\\-23\\2.584647\\-159.8274\\-23\\3.084647\\-159.8869\\-23\\7.084647\\-159.8869\\-23\\7.584647\\-160.3274\\-23\\9.084647\\-160.3869\\-23\\9.584647\\-160.8274\\-23\\11.08465\\-160.8869\\-23\\11.58465\\-161.3274\\-23\\12.58465\\-161.3869\\-23\\15.08465\\-162.8274\\-23\\16.58465\\-163.3869\\-23\\18.08465\\-164.8274\\-23\\18.58465\\-164.8869\\-23\\20.83465\\-167.1369\\-23\\20.89411\\-167.6369\\-23\\21.83465\\-168.6369\\-23\\22.39411\\-170.1369\\-23\\22.83465\\-170.6369\\-23\\23.89411\\-173.1369\\-23\\24.33465\\-173.6369\\-23\\24.39411\\-175.6369\\-23\\24.83465\\-176.1369\\-23\\24.83465\\-183.1369\\-23\\24.39411\\-183.6369\\-23\\24.33465\\-185.6369\\-23\\23.89411\\-186.1369\\-23\\23.83465\\-187.1369\\-23\\23.39411\\-187.6369\\-23\\23.33465\\-188.6369\\-23\\22.39411\\-190.1369\\-23\\22.33465\\-191.1369\\-23\\21.83465\\-192.1369\\-23\\20.89411\\-193.1369\\-23\\20.33465\\-194.6369\\-23\\18.89411\\-196.1369\\-23\\18.83465\\-196.6369\\-23\\16.39411\\-199.1369\\-23\\14.58465\\-200.8869\\-23\\14.08465\\-200.9464\\-23\\13.08465\\-201.8869\\-23\\12.58465\\-201.9464\\-23\\11.58465\\-202.8869\\-23\\11.08465\\-202.8869\\-23\\10.58465\\-203.3869\\-23\\10.08465\\-203.3869\\-23\\9.584647\\-203.8869\\-23\\9.084647\\-203.8869\\-23\\8.584647\\-204.3869\\-23\\7.584647\\-204.4464\\-23\\7.084647\\-204.8869\\-23\\5.584647\\-204.9464\\-23\\5.084647\\-205.3869\\-23\\-0.9153527\\-205.4464\\-23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "99"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.415353\\-204.8869\\-21\\-3.915353\\-204.4464\\-21\\-5.415353\\-204.3869\\-21\\-5.915353\\-203.9464\\-21\\-6.915353\\-203.8869\\-21\\-8.415353\\-202.9464\\-21\\-9.915353\\-202.3869\\-21\\-10.91535\\-201.4464\\-21\\-11.41535\\-201.3869\\-21\\-13.41535\\-199.4464\\-21\\-13.91535\\-199.3869\\-21\\-16.16535\\-197.1369\\-21\\-16.22482\\-196.6369\\-21\\-17.66535\\-195.1369\\-21\\-17.72482\\-194.6369\\-21\\-18.66535\\-193.6369\\-21\\-19.22482\\-192.1369\\-21\\-20.16535\\-191.1369\\-21\\-20.66535\\-190.1369\\-21\\-20.72482\\-189.1369\\-21\\-21.16535\\-188.6369\\-21\\-21.22482\\-187.6369\\-21\\-21.66535\\-187.1369\\-21\\-21.72482\\-186.1369\\-21\\-22.16535\\-185.6369\\-21\\-22.22482\\-184.1369\\-21\\-22.66535\\-183.6369\\-21\\-22.72482\\-181.1369\\-21\\-22.72482\\-177.6369\\-21\\-22.66535\\-175.6369\\-21\\-22.22482\\-175.1369\\-21\\-22.16535\\-173.6369\\-21\\-21.22482\\-172.1369\\-21\\-21.16535\\-171.1369\\-21\\-20.66535\\-170.1369\\-21\\-19.72482\\-169.1369\\-21\\-19.66535\\-168.6369\\-21\\-18.72482\\-167.6369\\-21\\-18.66535\\-167.1369\\-21\\-17.41535\\-165.8869\\-21\\-16.91535\\-165.8274\\-21\\-14.91535\\-163.8869\\-21\\-10.91535\\-161.8869\\-21\\-9.915353\\-161.8274\\-21\\-9.415353\\-161.3869\\-21\\-8.415353\\-161.3274\\-21\\-7.915353\\-160.8869\\-21\\-5.915353\\-160.8274\\-21\\-5.415353\\-160.3869\\-21\\5.584647\\-160.3869\\-21\\6.084647\\-160.8274\\-21\\8.584647\\-160.8869\\-21\\9.084647\\-161.3274\\-21\\10.08465\\-161.3869\\-21\\10.58465\\-161.8274\\-21\\11.58465\\-161.8869\\-21\\12.08465\\-162.3274\\-21\\13.08465\\-162.3869\\-21\\14.58465\\-163.3274\\-21\\15.08465\\-163.3869\\-21\\16.08465\\-164.3274\\-21\\16.58465\\-164.3869\\-21\\20.58465\\-168.3274\\-21\\21.39411\\-170.1369\\-21\\21.83465\\-170.6369\\-21\\22.39411\\-172.1369\\-21\\22.83465\\-172.6369\\-21\\22.89411\\-173.6369\\-21\\23.33465\\-174.1369\\-21\\23.39411\\-175.1369\\-21\\23.83465\\-175.6369\\-21\\23.89411\\-177.6369\\-21\\23.89411\\-181.6369\\-21\\23.83465\\-183.6369\\-21\\23.39411\\-184.1369\\-21\\23.33465\\-185.6369\\-21\\22.89411\\-186.1369\\-21\\22.83465\\-187.6369\\-21\\21.89411\\-189.1369\\-21\\21.83465\\-190.1369\\-21\\20.39411\\-192.6369\\-21\\20.33465\\-193.1369\\-21\\19.39411\\-194.1369\\-21\\19.33465\\-194.6369\\-21\\17.89411\\-196.1369\\-21\\17.83465\\-196.6369\\-21\\17.08465\\-197.4464\\-21\\14.08465\\-200.3869\\-21\\13.58465\\-200.4464\\-21\\12.08465\\-201.8869\\-21\\10.08465\\-202.8869\\-21\\9.584647\\-202.9464\\-21\\8.084647\\-203.8869\\-21\\7.084647\\-203.9464\\-21\\6.584647\\-204.3869\\-21\\5.584647\\-204.4464\\-21\\5.084647\\-204.8869\\-21\\3.084647\\-204.9464\\-21\\-1.915353\\-204.9464\\-21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "100"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.915353\\-204.3869\\-19\\-2.415353\\-203.9464\\-19\\-4.415353\\-203.8869\\-19\\-4.915353\\-203.4464\\-19\\-5.915353\\-203.3869\\-19\\-6.415353\\-202.9464\\-19\\-8.915353\\-201.8869\\-19\\-9.915353\\-200.9464\\-19\\-10.41535\\-200.8869\\-19\\-11.91535\\-199.4464\\-19\\-12.41535\\-199.3869\\-19\\-15.16535\\-196.6369\\-19\\-15.22482\\-196.1369\\-19\\-17.16535\\-194.1369\\-19\\-17.22482\\-193.6369\\-19\\-18.16535\\-192.6369\\-19\\-18.22482\\-192.1369\\-19\\-19.66535\\-189.6369\\-19\\-19.72482\\-188.6369\\-19\\-20.16535\\-188.1369\\-19\\-20.22482\\-187.1369\\-19\\-20.66535\\-186.6369\\-19\\-20.72482\\-185.6369\\-19\\-21.16535\\-185.1369\\-19\\-21.22482\\-183.1369\\-19\\-21.66535\\-182.6369\\-19\\-21.66535\\-176.6369\\-19\\-21.22482\\-176.1369\\-19\\-21.16535\\-174.6369\\-19\\-20.72482\\-174.1369\\-19\\-20.66535\\-173.1369\\-19\\-20.22482\\-172.6369\\-19\\-20.16535\\-171.6369\\-19\\-19.66535\\-170.6369\\-19\\-18.72482\\-169.6369\\-19\\-18.41535\\-168.8274\\-19\\-14.72482\\-165.1369\\-19\\-13.91535\\-164.8274\\-19\\-12.91535\\-163.8869\\-19\\-12.41535\\-163.8274\\-19\\-10.91535\\-162.8869\\-19\\-9.915353\\-162.8274\\-19\\-9.415353\\-162.3869\\-19\\-8.415353\\-162.3274\\-19\\-7.915353\\-161.8869\\-19\\-6.415353\\-161.8274\\-19\\-5.915353\\-161.3869\\-19\\-3.915353\\-161.3274\\-19\\5.084647\\-161.3274\\-19\\6.584647\\-161.3869\\-19\\7.084647\\-161.8274\\-19\\8.584647\\-161.8869\\-19\\9.084647\\-162.3274\\-19\\10.08465\\-162.3869\\-19\\10.58465\\-162.8274\\-19\\11.58465\\-162.8869\\-19\\13.08465\\-163.8274\\-19\\13.58465\\-163.8274\\-19\\14.08465\\-164.3274\\-19\\14.58465\\-164.3869\\-19\\15.58465\\-165.3274\\-19\\16.39411\\-165.6369\\-19\\19.08465\\-168.3274\\-19\\19.39411\\-169.1369\\-19\\20.39411\\-170.1369\\-19\\20.39411\\-170.6369\\-19\\20.89411\\-171.1369\\-19\\20.89411\\-171.6369\\-19\\21.39411\\-172.1369\\-19\\21.39411\\-172.6369\\-19\\21.83465\\-173.1369\\-19\\21.89411\\-174.1369\\-19\\22.33465\\-174.6369\\-19\\22.39411\\-176.1369\\-19\\22.83465\\-176.6369\\-19\\22.83465\\-182.6369\\-19\\22.39411\\-183.1369\\-19\\22.33465\\-185.1369\\-19\\21.89411\\-185.6369\\-19\\21.83465\\-187.1369\\-19\\21.39411\\-187.6369\\-19\\21.33465\\-188.6369\\-19\\19.89411\\-191.1369\\-19\\19.89411\\-191.6369\\-19\\19.39411\\-192.1369\\-19\\18.83465\\-193.6369\\-19\\17.39411\\-195.1369\\-19\\17.08465\\-195.9464\\-19\\12.89411\\-200.1369\\-19\\12.08465\\-200.4464\\-19\\11.08465\\-201.3869\\-19\\10.58465\\-201.4464\\-19\\9.584647\\-202.3869\\-19\\8.584647\\-202.8869\\-19\\7.584647\\-202.9464\\-19\\7.084647\\-203.3869\\-19\\6.084647\\-203.4464\\-19\\5.584647\\-203.8869\\-19\\3.584647\\-203.9464\\-19\\3.084647\\-204.3869\\-19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "104"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.9153527\\-203.3869\\-17\\-1.415353\\-202.9464\\-17\\-3.415353\\-202.8869\\-17\\-3.915353\\-202.4464\\-17\\-4.915353\\-202.3869\\-17\\-5.415353\\-201.9464\\-17\\-6.415353\\-201.8869\\-17\\-7.915353\\-200.9464\\-17\\-8.415353\\-200.8869\\-17\\-9.915353\\-199.4464\\-17\\-10.41535\\-199.4464\\-17\\-14.91535\\-194.9464\\-17\\-15.22482\\-194.1369\\-17\\-16.22482\\-193.1369\\-17\\-16.22482\\-192.6369\\-17\\-17.22482\\-191.6369\\-17\\-17.22482\\-191.1369\\-17\\-17.72482\\-190.6369\\-17\\-17.72482\\-190.1369\\-17\\-18.66535\\-188.6369\\-17\\-18.72482\\-187.6369\\-17\\-19.16535\\-187.1369\\-17\\-19.22482\\-185.6369\\-17\\-19.66535\\-185.1369\\-17\\-19.72482\\-183.6369\\-17\\-20.16535\\-183.1369\\-17\\-20.22482\\-182.1369\\-17\\-20.22482\\-177.6369\\-17\\-20.16535\\-176.6369\\-17\\-19.72482\\-176.1369\\-17\\-19.72482\\-174.6369\\-17\\-19.22482\\-174.1369\\-17\\-19.22482\\-173.1369\\-17\\-18.72482\\-172.6369\\-17\\-18.72482\\-172.1369\\-17\\-18.22482\\-171.6369\\-17\\-18.22482\\-171.1369\\-17\\-17.72482\\-170.6369\\-17\\-17.72482\\-170.1369\\-17\\-12.91535\\-165.3274\\-17\\-12.41535\\-165.3274\\-17\\-11.91535\\-164.8274\\-17\\-11.41535\\-164.8274\\-17\\-10.91535\\-164.3274\\-17\\-10.41535\\-164.3274\\-17\\-9.915353\\-163.8274\\-17\\-9.415353\\-163.8274\\-17\\-8.915353\\-163.3869\\-17\\-7.915353\\-163.3274\\-17\\-7.415353\\-162.8869\\-17\\-5.915353\\-162.8274\\-17\\-5.415353\\-162.3869\\-17\\-3.915353\\-162.3274\\-17\\4.584647\\-162.3274\\-17\\6.084647\\-162.3869\\-17\\6.584647\\-162.8274\\-17\\8.084647\\-162.8869\\-17\\8.584647\\-163.3274\\-17\\9.584647\\-163.3869\\-17\\10.08465\\-163.8274\\-17\\11.08465\\-163.8869\\-17\\12.58465\\-164.8274\\-17\\13.08465\\-164.8869\\-17\\14.08465\\-165.8274\\-17\\14.89411\\-166.1369\\-17\\18.39411\\-169.6369\\-17\\18.39411\\-170.1369\\-17\\19.39411\\-171.1369\\-17\\19.39411\\-171.6369\\-17\\19.89411\\-172.1369\\-17\\19.89411\\-172.6369\\-17\\20.39411\\-173.1369\\-17\\20.39411\\-174.1369\\-17\\20.89411\\-174.6369\\-17\\20.89411\\-176.1369\\-17\\21.33465\\-176.6369\\-17\\21.39411\\-177.6369\\-17\\21.39411\\-182.6369\\-17\\20.89411\\-183.6369\\-17\\20.83465\\-185.6369\\-17\\20.39411\\-186.1369\\-17\\20.39411\\-187.1369\\-17\\19.89411\\-187.6369\\-17\\19.89411\\-188.6369\\-17\\19.39411\\-189.1369\\-17\\19.33465\\-190.1369\\-17\\18.83465\\-191.1369\\-17\\17.89411\\-192.1369\\-17\\17.89411\\-192.6369\\-17\\16.89411\\-193.6369\\-17\\16.89411\\-194.1369\\-17\\10.89411\\-200.1369\\-17\\10.08465\\-200.4464\\-17\\9.584647\\-200.9464\\-17\\9.084647\\-200.9464\\-17\\8.584647\\-201.4464\\-17\\8.084647\\-201.4464\\-17\\7.584647\\-201.9464\\-17\\7.084647\\-201.9464\\-17\\6.584647\\-202.3869\\-17\\5.584647\\-202.4464\\-17\\5.084647\\-202.8869\\-17\\3.084647\\-202.9464\\-17\\2.584647\\-203.3869\\-17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "93"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.915353\\-200.9464\\-15\\-4.915353\\-200.9464\\-15\\-5.415353\\-200.4464\\-15\\-6.415353\\-200.3869\\-15\\-7.415353\\-199.4464\\-15\\-7.915353\\-199.4464\\-15\\-9.415353\\-197.9464\\-15\\-9.915353\\-197.9464\\-15\\-13.22482\\-194.6369\\-15\\-13.22482\\-194.1369\\-15\\-15.22482\\-192.1369\\-15\\-15.22482\\-191.6369\\-15\\-15.72482\\-191.1369\\-15\\-15.72482\\-190.6369\\-15\\-16.22482\\-190.1369\\-15\\-16.22482\\-189.6369\\-15\\-16.72482\\-189.1369\\-15\\-16.72482\\-188.6369\\-15\\-17.22482\\-188.1369\\-15\\-17.22482\\-187.1369\\-15\\-17.72482\\-186.6369\\-15\\-17.72482\\-185.1369\\-15\\-18.22482\\-184.6369\\-15\\-18.22482\\-176.1369\\-15\\-17.72482\\-175.6369\\-15\\-17.72482\\-174.1369\\-15\\-17.22482\\-173.6369\\-15\\-17.22482\\-172.6369\\-15\\-16.22482\\-171.6369\\-15\\-16.22482\\-171.1369\\-15\\-15.72482\\-170.6369\\-15\\-15.72482\\-170.1369\\-15\\-12.41535\\-166.8274\\-15\\-11.91535\\-166.8274\\-15\\-10.91535\\-165.8274\\-15\\-10.41535\\-165.8274\\-15\\-9.915353\\-165.3274\\-15\\-9.415353\\-165.3274\\-15\\-8.915353\\-164.8869\\-15\\-7.915353\\-164.8274\\-15\\-7.415353\\-164.3869\\-15\\-6.415353\\-164.3274\\-15\\-5.915353\\-163.8869\\-15\\-4.415353\\-163.8274\\-15\\-3.915353\\-163.3869\\-15\\-2.915353\\-163.3274\\-15\\3.584647\\-163.3274\\-15\\4.584647\\-163.3869\\-15\\5.084647\\-163.8274\\-15\\6.584647\\-163.8869\\-15\\7.084647\\-164.3274\\-15\\8.084647\\-164.3274\\-15\\8.584647\\-164.8274\\-15\\9.584647\\-164.8274\\-15\\10.08465\\-165.3274\\-15\\11.08465\\-165.3869\\-15\\12.08465\\-165.8869\\-15\\13.58465\\-167.3274\\-15\\14.08465\\-167.3274\\-15\\16.39411\\-169.6369\\-15\\16.39411\\-170.1369\\-15\\17.39411\\-171.1369\\-15\\17.39411\\-171.6369\\-15\\17.89411\\-172.1369\\-15\\17.89411\\-172.6369\\-15\\18.39411\\-173.1369\\-15\\18.39411\\-173.6369\\-15\\18.89411\\-174.1369\\-15\\18.89411\\-175.1369\\-15\\19.39411\\-175.6369\\-15\\19.39411\\-184.6369\\-15\\18.89411\\-185.6369\\-15\\18.83465\\-187.1369\\-15\\18.39411\\-187.6369\\-15\\18.39411\\-188.1369\\-15\\17.89411\\-188.6369\\-15\\17.89411\\-189.6369\\-15\\17.39411\\-190.1369\\-15\\17.39411\\-190.6369\\-15\\16.39411\\-191.6369\\-15\\16.39411\\-192.1369\\-15\\15.39411\\-193.1369\\-15\\15.39411\\-193.6369\\-15\\10.08465\\-198.9464\\-15\\9.584647\\-198.9464\\-15\\8.584647\\-199.9464\\-15\\8.084647\\-199.9464\\-15\\7.584647\\-200.4464\\-15\\7.084647\\-200.4464\\-15\\6.584647\\-200.9464\\-15\\5.584647\\-200.9464\\-15\\4.584647\\-201.4464\\-15\\-2.915353\\-201.4464\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "90"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.915353\\-199.4464\\-13\\-3.415353\\-198.9464\\-13\\-4.415353\\-198.9464\\-13\\-4.915353\\-198.4464\\-13\\-5.415353\\-198.4464\\-13\\-5.915353\\-197.9464\\-13\\-6.415353\\-197.9464\\-13\\-6.915353\\-197.4464\\-13\\-7.415353\\-197.4464\\-13\\-8.915353\\-195.9464\\-13\\-9.415353\\-195.9464\\-13\\-11.22482\\-194.1369\\-13\\-11.22482\\-193.6369\\-13\\-12.72482\\-192.1369\\-13\\-12.72482\\-191.6369\\-13\\-13.72482\\-190.6369\\-13\\-13.72482\\-190.1369\\-13\\-14.22482\\-189.6369\\-13\\-14.22482\\-189.1369\\-13\\-14.72482\\-188.6369\\-13\\-14.72482\\-188.1369\\-13\\-15.22482\\-187.6369\\-13\\-15.22482\\-186.6369\\-13\\-15.72482\\-186.1369\\-13\\-15.72482\\-184.6369\\-13\\-16.22482\\-184.1369\\-13\\-16.22482\\-176.6369\\-13\\-15.72482\\-176.1369\\-13\\-15.72482\\-174.6369\\-13\\-15.22482\\-174.1369\\-13\\-15.22482\\-173.6369\\-13\\-14.72482\\-173.1369\\-13\\-14.72482\\-172.6369\\-13\\-14.22482\\-172.1369\\-13\\-14.22482\\-171.6369\\-13\\-10.41535\\-167.8274\\-13\\-9.915353\\-167.8274\\-13\\-8.915353\\-166.8274\\-13\\-8.415353\\-166.8274\\-13\\-7.915353\\-166.3274\\-13\\-6.915353\\-166.3274\\-13\\-6.415353\\-165.8274\\-13\\-5.415353\\-165.8274\\-13\\-4.915353\\-165.3274\\-13\\-2.915353\\-165.3274\\-13\\-2.415353\\-164.8274\\-13\\3.084647\\-164.8274\\-13\\4.084647\\-165.3274\\-13\\6.084647\\-165.3274\\-13\\6.584647\\-165.8274\\-13\\7.584647\\-165.8274\\-13\\8.084647\\-166.3274\\-13\\8.584647\\-166.3274\\-13\\9.084647\\-166.8274\\-13\\9.584647\\-166.8274\\-13\\10.08465\\-167.3274\\-13\\10.58465\\-167.3274\\-13\\11.08465\\-167.8274\\-13\\11.58465\\-167.8274\\-13\\15.39411\\-171.6369\\-13\\15.39411\\-172.1369\\-13\\15.89411\\-172.6369\\-13\\15.89411\\-173.1369\\-13\\16.39411\\-173.6369\\-13\\16.39411\\-174.1369\\-13\\16.89411\\-174.6369\\-13\\16.89411\\-176.1369\\-13\\17.39411\\-176.6369\\-13\\17.39411\\-184.1369\\-13\\16.89411\\-184.6369\\-13\\16.89411\\-186.1369\\-13\\16.39411\\-186.6369\\-13\\16.39411\\-187.6369\\-13\\15.89411\\-188.1369\\-13\\15.89411\\-189.1369\\-13\\15.39411\\-189.6369\\-13\\15.39411\\-190.1369\\-13\\14.39411\\-191.1369\\-13\\14.39411\\-191.6369\\-13\\13.39411\\-192.6369\\-13\\13.39411\\-193.1369\\-13\\9.584647\\-196.9464\\-13\\9.084647\\-196.9464\\-13\\8.084647\\-197.9464\\-13\\7.584647\\-197.9464\\-13\\7.084647\\-198.4464\\-13\\6.584647\\-198.4464\\-13\\6.084647\\-198.9464\\-13\\5.084647\\-198.9464\\-13\\4.584647\\-199.4464\\-13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "84"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.915353\\-196.9464\\-11\\-2.415353\\-196.4464\\-11\\-3.415353\\-196.4464\\-11\\-3.915353\\-195.9464\\-11\\-4.415353\\-195.9464\\-11\\-4.915353\\-195.4464\\-11\\-5.415353\\-195.4464\\-11\\-5.915353\\-194.9464\\-11\\-6.415353\\-194.9464\\-11\\-10.72482\\-190.6369\\-11\\-10.72482\\-190.1369\\-11\\-11.22482\\-189.6369\\-11\\-11.22482\\-189.1369\\-11\\-11.72482\\-188.6369\\-11\\-11.72482\\-188.1369\\-11\\-12.22482\\-187.6369\\-11\\-12.22482\\-187.1369\\-11\\-12.72482\\-186.6369\\-11\\-12.72482\\-186.1369\\-11\\-13.22482\\-185.6369\\-11\\-13.22482\\-184.1369\\-11\\-13.72482\\-183.6369\\-11\\-13.72482\\-177.1369\\-11\\-13.22482\\-176.6369\\-11\\-13.22482\\-175.6369\\-11\\-12.72482\\-175.1369\\-11\\-12.72482\\-174.6369\\-11\\-12.22482\\-174.1369\\-11\\-12.22482\\-173.6369\\-11\\-10.72482\\-172.1369\\-11\\-10.72482\\-171.6369\\-11\\-9.415353\\-170.3274\\-11\\-8.915353\\-170.3274\\-11\\-7.915353\\-169.3274\\-11\\-7.415353\\-169.3274\\-11\\-6.915353\\-168.8274\\-11\\-6.415353\\-168.8274\\-11\\-5.915353\\-168.3274\\-11\\-5.415353\\-168.3274\\-11\\-4.915353\\-167.8274\\-11\\-4.415353\\-167.8274\\-11\\-3.915353\\-167.3274\\-11\\-1.415353\\-167.3274\\-11\\-0.9153527\\-166.8274\\-11\\2.084647\\-166.8274\\-11\\2.584647\\-167.3274\\-11\\4.584647\\-167.3274\\-11\\5.084647\\-167.8274\\-11\\6.084647\\-167.8274\\-11\\6.584647\\-168.3274\\-11\\7.084647\\-168.3274\\-11\\7.584647\\-168.8274\\-11\\8.084647\\-168.8274\\-11\\8.584647\\-169.3274\\-11\\9.084647\\-169.3274\\-11\\13.39411\\-173.6369\\-11\\13.39411\\-174.1369\\-11\\13.89411\\-174.6369\\-11\\13.89411\\-175.1369\\-11\\14.39411\\-175.6369\\-11\\14.39411\\-176.6369\\-11\\14.89411\\-177.1369\\-11\\14.89411\\-184.1369\\-11\\14.39411\\-184.6369\\-11\\14.39411\\-185.6369\\-11\\13.89411\\-186.1369\\-11\\13.89411\\-187.1369\\-11\\13.39411\\-187.6369\\-11\\13.39411\\-188.1369\\-11\\12.89411\\-188.6369\\-11\\12.89411\\-189.1369\\-11\\12.39411\\-189.6369\\-11\\12.39411\\-190.1369\\-11\\10.89411\\-191.6369\\-11\\10.89411\\-192.1369\\-11\\9.084647\\-193.9464\\-11\\8.584647\\-193.9464\\-11\\7.084647\\-195.4464\\-11\\6.584647\\-195.4464\\-11\\6.084647\\-195.9464\\-11\\5.584647\\-195.9464\\-11\\5.084647\\-196.4464\\-11\\4.084647\\-196.4464\\-11\\3.584647\\-196.9464\\-11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "60"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.915353\\-192.9464\\-9\\-2.415353\\-192.4464\\-9\\-3.415353\\-192.4464\\-9\\-4.415353\\-191.4464\\-9\\-4.915353\\-191.4464\\-9\\-7.724819\\-188.6369\\-9\\-7.724819\\-188.1369\\-9\\-8.724819\\-187.1369\\-9\\-8.724819\\-186.6369\\-9\\-9.224819\\-186.1369\\-9\\-9.224819\\-185.6369\\-9\\-9.724819\\-185.1369\\-9\\-9.724819\\-183.6369\\-9\\-10.22482\\-183.1369\\-9\\-10.22482\\-178.1369\\-9\\-9.724819\\-177.6369\\-9\\-9.724819\\-176.6369\\-9\\-9.224819\\-176.1369\\-9\\-9.224819\\-175.6369\\-9\\-8.724819\\-175.1369\\-9\\-8.724819\\-174.6369\\-9\\-5.915353\\-171.8274\\-9\\-5.415353\\-171.8274\\-9\\-4.915353\\-171.3274\\-9\\-4.415353\\-171.3274\\-9\\-3.915353\\-170.8274\\-9\\-2.915353\\-170.8274\\-9\\-2.415353\\-170.3274\\-9\\-0.4153527\\-170.3274\\-9\\0.0846473\\-169.8274\\-9\\1.084647\\-169.8274\\-9\\1.584647\\-170.3274\\-9\\3.584647\\-170.3274\\-9\\4.084647\\-170.8274\\-9\\5.084647\\-170.8274\\-9\\5.584647\\-171.3274\\-9\\6.084647\\-171.3274\\-9\\6.584647\\-171.8274\\-9\\7.084647\\-171.8274\\-9\\9.894114\\-174.6369\\-9\\9.894114\\-175.1369\\-9\\10.39411\\-175.6369\\-9\\10.39411\\-176.1369\\-9\\10.89411\\-176.6369\\-9\\10.89411\\-177.6369\\-9\\11.39411\\-178.1369\\-9\\11.39411\\-183.6369\\-9\\10.89411\\-184.1369\\-9\\10.89411\\-185.1369\\-9\\10.39411\\-185.6369\\-9\\10.39411\\-186.1369\\-9\\9.894114\\-186.6369\\-9\\9.894114\\-187.1369\\-9\\9.394114\\-187.6369\\-9\\9.394114\\-188.1369\\-9\\5.584647\\-191.9464\\-9\\5.084647\\-191.9464\\-9\\4.584647\\-192.4464\\-9\\4.084647\\-192.4464\\-9\\3.584647\\-192.9464\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "27"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.4153527\\-185.9464\\-7\\-0.9153527\\-185.4464\\-7\\-1.415353\\-185.4464\\-7\\-2.724819\\-184.1369\\-7\\-2.724819\\-183.6369\\-7\\-3.224819\\-183.1369\\-7\\-3.224819\\-182.6369\\-7\\-3.724819\\-182.1369\\-7\\-3.724819\\-179.1369\\-7\\-3.224819\\-178.6369\\-7\\-3.224819\\-178.1369\\-7\\-1.415353\\-176.3274\\-7\\-0.4153527\\-176.3274\\-7\\0.0846473\\-175.8274\\-7\\1.084647\\-175.8274\\-7\\1.584647\\-176.3274\\-7\\2.584647\\-176.3274\\-7\\4.394114\\-178.1369\\-7\\4.394114\\-178.6369\\-7\\4.894114\\-179.1369\\-7\\4.894114\\-182.6369\\-7\\4.394114\\-183.1369\\-7\\4.394114\\-183.6369\\-7\\2.584647\\-185.4464\\-7\\2.084647\\-185.4464\\-7\\1.584647\\-185.9464\\-7"
+                     }
+                  }
+               ]
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "3"
+            }
+         },
+         {
+            "3006,002a" : {
+               "Name" : "ROIDisplayColor",
+               "Type" : "String",
+               "Value" : "0\\255\\0"
+            },
+            "3006,0040" : {
+               "Name" : "ContourSequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "0"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.915353\\-179.8274\\-61\\-6.105886\\-178.6369\\-61\\-6.105886\\-177.6369\\-61\\-4.915353\\-176.4464\\-61\\6.084647\\-176.4464\\-61\\7.275181\\-177.6369\\-61\\7.275181\\-178.6369\\-61\\6.084647\\-179.8274\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "1"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-7.415353\\-186.8274\\-59\\-7.915353\\-186.3274\\-59\\-8.415353\\-186.3274\\-59\\-8.915353\\-185.8274\\-59\\-9.415353\\-185.8274\\-59\\-12.60589\\-182.6369\\-59\\-12.60589\\-182.1369\\-59\\-13.10589\\-181.6369\\-59\\-13.10589\\-180.1369\\-59\\-13.60589\\-179.6369\\-59\\-13.60589\\-177.1369\\-59\\-13.10589\\-176.6369\\-59\\-13.10589\\-175.1369\\-59\\-12.60589\\-174.6369\\-59\\-12.60589\\-174.1369\\-59\\-9.915353\\-171.4464\\-59\\-9.415353\\-171.4464\\-59\\-8.915353\\-170.9464\\-59\\-8.415353\\-170.9464\\-59\\-7.915353\\-170.4464\\-59\\-7.415353\\-170.4464\\-59\\-6.915353\\-169.9464\\-59\\8.084647\\-169.9464\\-59\\8.584647\\-170.4464\\-59\\9.084647\\-170.4464\\-59\\9.584647\\-170.9464\\-59\\10.08465\\-170.9464\\-59\\10.58465\\-171.4464\\-59\\11.08465\\-171.4464\\-59\\13.77518\\-174.1369\\-59\\13.77518\\-174.6369\\-59\\14.27518\\-175.1369\\-59\\14.27518\\-176.1369\\-59\\14.77518\\-176.6369\\-59\\14.77518\\-180.6369\\-59\\14.27518\\-181.1369\\-59\\14.27518\\-181.6369\\-59\\13.77518\\-182.1369\\-59\\13.77518\\-182.6369\\-59\\10.08465\\-186.3274\\-59\\9.084647\\-186.3274\\-59\\8.584647\\-186.8274\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "74"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "2"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.415353\\-190.8274\\-57\\-6.915353\\-190.3274\\-57\\-8.915353\\-190.3274\\-57\\-9.415353\\-189.8274\\-57\\-9.915353\\-189.8274\\-57\\-10.41535\\-189.3274\\-57\\-10.91535\\-189.3274\\-57\\-11.41535\\-188.8274\\-57\\-11.91535\\-188.8274\\-57\\-12.91535\\-187.8274\\-57\\-13.41535\\-187.8274\\-57\\-14.60589\\-186.6369\\-57\\-14.60589\\-186.1369\\-57\\-15.60589\\-185.1369\\-57\\-15.60589\\-184.6369\\-57\\-16.10589\\-184.1369\\-57\\-16.10589\\-183.6369\\-57\\-16.60589\\-183.1369\\-57\\-16.60589\\-182.6369\\-57\\-17.10589\\-182.1369\\-57\\-17.10589\\-175.1369\\-57\\-16.60589\\-174.6369\\-57\\-16.60589\\-173.6369\\-57\\-15.60589\\-172.6369\\-57\\-15.60589\\-172.1369\\-57\\-12.41535\\-168.9464\\-57\\-11.91535\\-168.9464\\-57\\-11.41535\\-168.4464\\-57\\-10.91535\\-168.4464\\-57\\-10.41535\\-167.9464\\-57\\-9.915353\\-167.9464\\-57\\-9.415353\\-167.4464\\-57\\-8.915353\\-167.4464\\-57\\-8.415353\\-166.9464\\-57\\-6.415353\\-166.9464\\-57\\-5.915353\\-166.4464\\-57\\7.084647\\-166.4464\\-57\\7.584647\\-166.9464\\-57\\9.584647\\-166.9464\\-57\\10.08465\\-167.4464\\-57\\10.58465\\-167.4464\\-57\\11.08465\\-167.9464\\-57\\11.58465\\-167.9464\\-57\\12.08465\\-168.4464\\-57\\12.58465\\-168.4464\\-57\\13.08465\\-168.9464\\-57\\13.58465\\-168.9464\\-57\\17.27518\\-172.6369\\-57\\17.27518\\-173.1369\\-57\\17.77518\\-173.6369\\-57\\17.77518\\-174.6369\\-57\\18.27518\\-175.1369\\-57\\18.27518\\-176.6369\\-57\\18.77518\\-177.1369\\-57\\18.77518\\-180.1369\\-57\\18.27518\\-180.6369\\-57\\18.27518\\-182.1369\\-57\\17.77518\\-182.6369\\-57\\17.77518\\-183.6369\\-57\\17.27518\\-184.1369\\-57\\17.27518\\-184.6369\\-57\\16.27518\\-185.6369\\-57\\16.27518\\-186.1369\\-57\\14.58465\\-187.8274\\-57\\14.08465\\-187.8274\\-57\\13.08465\\-188.8274\\-57\\12.58465\\-188.8274\\-57\\12.08465\\-189.3274\\-57\\11.58465\\-189.3274\\-57\\11.08465\\-189.8274\\-57\\10.58465\\-189.8274\\-57\\10.08465\\-190.3274\\-57\\8.084647\\-190.3274\\-57\\7.584647\\-190.8274\\-57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "82"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "3"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-9.415353\\-192.8274\\-55\\-9.915353\\-192.3274\\-55\\-10.91535\\-192.3274\\-55\\-11.41535\\-191.8274\\-55\\-11.91535\\-191.8274\\-55\\-12.41535\\-191.3274\\-55\\-12.91535\\-191.3274\\-55\\-13.41535\\-190.8274\\-55\\-13.91535\\-190.8274\\-55\\-14.91535\\-189.8274\\-55\\-15.41535\\-189.8274\\-55\\-17.10589\\-188.1369\\-55\\-17.10589\\-187.6369\\-55\\-18.10589\\-186.6369\\-55\\-18.10589\\-186.1369\\-55\\-18.60589\\-185.6369\\-55\\-18.60589\\-185.1369\\-55\\-19.10589\\-184.6369\\-55\\-19.10589\\-184.1369\\-55\\-19.60589\\-183.6369\\-55\\-19.60589\\-182.1369\\-55\\-20.10589\\-181.6369\\-55\\-20.10589\\-175.6369\\-55\\-19.60589\\-175.1369\\-55\\-19.60589\\-174.1369\\-55\\-19.10589\\-173.6369\\-55\\-19.10589\\-172.6369\\-55\\-18.60589\\-172.1369\\-55\\-18.60589\\-171.6369\\-55\\-17.60589\\-170.6369\\-55\\-17.60589\\-170.1369\\-55\\-15.41535\\-167.9464\\-55\\-14.91535\\-167.9464\\-55\\-13.41535\\-166.4464\\-55\\-12.91535\\-166.4464\\-55\\-12.41535\\-165.9464\\-55\\-11.41535\\-165.9464\\-55\\-10.91535\\-165.4464\\-55\\-10.41535\\-165.4464\\-55\\-9.915353\\-164.9464\\-55\\-8.415353\\-164.9464\\-55\\-7.915353\\-164.4464\\-55\\9.084647\\-164.4464\\-55\\9.584647\\-164.9464\\-55\\11.08465\\-164.9464\\-55\\11.58465\\-165.4464\\-55\\12.08465\\-165.4464\\-55\\12.58465\\-165.9464\\-55\\13.58465\\-165.9464\\-55\\14.08465\\-166.4464\\-55\\14.58465\\-166.4464\\-55\\15.58465\\-167.4464\\-55\\16.08465\\-167.4464\\-55\\18.77518\\-170.1369\\-55\\18.77518\\-170.6369\\-55\\19.77518\\-171.6369\\-55\\19.77518\\-172.1369\\-55\\20.27518\\-172.6369\\-55\\20.27518\\-173.1369\\-55\\20.77518\\-173.6369\\-55\\20.77518\\-175.1369\\-55\\21.27518\\-175.6369\\-55\\21.27518\\-182.1369\\-55\\20.77518\\-182.6369\\-55\\20.77518\\-183.6369\\-55\\20.27518\\-184.1369\\-55\\20.27518\\-184.6369\\-55\\19.77518\\-185.1369\\-55\\19.77518\\-185.6369\\-55\\19.27518\\-186.1369\\-55\\19.27518\\-186.6369\\-55\\17.77518\\-188.1369\\-55\\17.77518\\-188.6369\\-55\\16.58465\\-189.8274\\-55\\16.08465\\-189.8274\\-55\\15.08465\\-190.8274\\-55\\14.58465\\-190.8274\\-55\\13.58465\\-191.8274\\-55\\12.58465\\-191.8274\\-55\\12.08465\\-192.3274\\-55\\11.08465\\-192.3274\\-55\\10.58465\\-192.8274\\-55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "80"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "4"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-9.915353\\-194.8274\\-53\\-10.41535\\-194.3869\\-53\\-11.91535\\-194.3274\\-53\\-12.41535\\-193.8274\\-53\\-12.91535\\-193.8274\\-53\\-13.41535\\-193.3274\\-53\\-13.91535\\-193.3274\\-53\\-14.41535\\-192.8274\\-53\\-14.91535\\-192.8274\\-53\\-15.91535\\-191.8274\\-53\\-16.41535\\-191.8274\\-53\\-19.10589\\-189.1369\\-53\\-19.10589\\-188.6369\\-53\\-20.10589\\-187.6369\\-53\\-20.10589\\-187.1369\\-53\\-21.10589\\-186.1369\\-53\\-21.10589\\-185.1369\\-53\\-21.60589\\-184.6369\\-53\\-21.60589\\-183.6369\\-53\\-22.10589\\-183.1369\\-53\\-22.10589\\-174.6369\\-53\\-21.60589\\-174.1369\\-53\\-21.60589\\-173.1369\\-53\\-21.10589\\-172.6369\\-53\\-21.10589\\-172.1369\\-53\\-20.60589\\-171.6369\\-53\\-20.60589\\-171.1369\\-53\\-20.10589\\-170.6369\\-53\\-20.10589\\-170.1369\\-53\\-15.41535\\-165.4464\\-53\\-14.91535\\-165.4464\\-53\\-14.41535\\-164.9464\\-53\\-13.91535\\-164.9464\\-53\\-13.41535\\-164.4464\\-53\\-12.91535\\-164.4464\\-53\\-12.41535\\-163.9464\\-53\\-11.41535\\-163.9464\\-53\\-10.91535\\-163.4464\\-53\\-9.415353\\-163.3869\\-53\\-8.915353\\-162.9464\\-53\\-6.915353\\-162.8869\\-53\\8.084647\\-162.8869\\-53\\10.08465\\-162.9464\\-53\\10.58465\\-163.3869\\-53\\12.08465\\-163.4464\\-53\\12.58465\\-163.9464\\-53\\13.58465\\-163.9464\\-53\\14.08465\\-164.4464\\-53\\14.58465\\-164.4464\\-53\\15.08465\\-164.9464\\-53\\15.58465\\-164.9464\\-53\\16.08465\\-165.4464\\-53\\16.58465\\-165.4464\\-53\\21.27518\\-170.1369\\-53\\21.27518\\-170.6369\\-53\\22.27518\\-171.6369\\-53\\22.27518\\-172.6369\\-53\\22.77518\\-173.1369\\-53\\22.77518\\-174.1369\\-53\\23.27518\\-174.6369\\-53\\23.27518\\-183.1369\\-53\\22.77518\\-183.6369\\-53\\22.77518\\-185.1369\\-53\\22.27518\\-185.6369\\-53\\22.27518\\-186.1369\\-53\\21.27518\\-187.1369\\-53\\21.27518\\-187.6369\\-53\\20.27518\\-188.6369\\-53\\20.27518\\-189.1369\\-53\\18.08465\\-191.3274\\-53\\17.58465\\-191.3274\\-53\\16.08465\\-192.8274\\-53\\15.58465\\-192.8274\\-53\\15.08465\\-193.3274\\-53\\14.58465\\-193.3274\\-53\\14.08465\\-193.8274\\-53\\13.58465\\-193.8274\\-53\\13.08465\\-194.3274\\-53\\11.58465\\-194.3274\\-53\\11.08465\\-194.8274\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "92"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "5"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.415353\\-196.8274\\-51\\-8.915353\\-196.3869\\-51\\-10.91535\\-196.3274\\-51\\-11.41535\\-195.8869\\-51\\-12.91535\\-195.8274\\-51\\-13.41535\\-195.3274\\-51\\-13.91535\\-195.3274\\-51\\-14.41535\\-194.8274\\-51\\-14.91535\\-194.8274\\-51\\-15.41535\\-194.3274\\-51\\-15.91535\\-194.3274\\-51\\-17.41535\\-192.8274\\-51\\-17.91535\\-192.8274\\-51\\-20.60589\\-190.1369\\-51\\-20.60589\\-189.6369\\-51\\-22.10589\\-188.1369\\-51\\-22.10589\\-187.6369\\-51\\-22.60589\\-187.1369\\-51\\-22.60589\\-186.6369\\-51\\-23.10589\\-186.1369\\-51\\-23.16535\\-185.1369\\-51\\-23.60589\\-184.6369\\-51\\-23.66535\\-183.1369\\-51\\-24.10589\\-182.6369\\-51\\-24.10589\\-175.1369\\-51\\-23.66535\\-174.6369\\-51\\-23.60589\\-173.1369\\-51\\-23.10589\\-172.6369\\-51\\-23.10589\\-172.1369\\-51\\-22.60589\\-171.6369\\-51\\-22.60589\\-171.1369\\-51\\-22.10589\\-170.6369\\-51\\-22.10589\\-170.1369\\-51\\-21.10589\\-169.1369\\-51\\-21.10589\\-168.6369\\-51\\-17.41535\\-164.9464\\-51\\-16.91535\\-164.9464\\-51\\-16.41535\\-164.4464\\-51\\-15.91535\\-164.3869\\-51\\-14.91535\\-163.4464\\-51\\-13.91535\\-163.3869\\-51\\-13.41535\\-162.9464\\-51\\-12.41535\\-162.8869\\-51\\-11.91535\\-162.4464\\-51\\-10.91535\\-162.3869\\-51\\-10.41535\\-161.9464\\-51\\-8.415353\\-161.8869\\-51\\-7.915353\\-161.4464\\-51\\8.584647\\-161.4464\\-51\\9.084647\\-161.8869\\-51\\11.58465\\-161.9464\\-51\\12.08465\\-162.3869\\-51\\13.08465\\-162.4464\\-51\\13.58465\\-162.8869\\-51\\14.58465\\-162.9464\\-51\\17.58465\\-164.4464\\-51\\18.58465\\-165.3869\\-51\\19.08465\\-165.4464\\-51\\22.27518\\-168.6369\\-51\\22.27518\\-169.1369\\-51\\23.27518\\-170.1369\\-51\\23.27518\\-170.6369\\-51\\23.77518\\-171.1369\\-51\\24.27518\\-172.1369\\-51\\24.27518\\-172.6369\\-51\\24.77518\\-173.1369\\-51\\24.77518\\-174.1369\\-51\\25.27518\\-174.6369\\-51\\25.27518\\-182.6369\\-51\\24.83465\\-183.1369\\-51\\24.77518\\-184.6369\\-51\\24.33465\\-185.1369\\-51\\24.27518\\-186.1369\\-51\\23.77518\\-186.6369\\-51\\23.77518\\-187.1369\\-51\\23.27518\\-187.6369\\-51\\23.27518\\-188.1369\\-51\\20.77518\\-190.6369\\-51\\20.77518\\-191.1369\\-51\\19.58465\\-192.3274\\-51\\19.08465\\-192.3274\\-51\\17.08465\\-194.3274\\-51\\16.58465\\-194.3274\\-51\\16.08465\\-194.8274\\-51\\15.58465\\-194.8274\\-51\\15.08465\\-195.3274\\-51\\14.08465\\-195.3869\\-51\\13.58465\\-195.8274\\-51\\12.08465\\-195.8869\\-51\\11.58465\\-196.3274\\-51\\10.08465\\-196.3869\\-51\\9.584647\\-196.8274\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "88"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "6"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-7.915353\\-198.3274\\-49\\-8.415353\\-197.8869\\-49\\-10.91535\\-197.8274\\-49\\-11.41535\\-197.3869\\-49\\-12.41535\\-197.3274\\-49\\-12.91535\\-196.8869\\-49\\-13.91535\\-196.8274\\-49\\-14.41535\\-196.3869\\-49\\-15.41535\\-196.3274\\-49\\-15.91535\\-195.8274\\-49\\-16.41535\\-195.8274\\-49\\-17.41535\\-194.8274\\-49\\-17.91535\\-194.8274\\-49\\-22.10589\\-190.6369\\-49\\-22.16535\\-190.1369\\-49\\-23.10589\\-189.1369\\-49\\-23.66535\\-187.6369\\-49\\-24.60589\\-186.1369\\-49\\-24.66535\\-185.1369\\-49\\-25.10589\\-184.6369\\-49\\-25.16535\\-183.1369\\-49\\-25.60589\\-182.6369\\-49\\-25.66535\\-177.6369\\-49\\-25.60589\\-174.6369\\-49\\-25.16535\\-174.1369\\-49\\-25.10589\\-173.1369\\-49\\-24.66535\\-172.6369\\-49\\-24.60589\\-171.6369\\-49\\-24.10589\\-170.6369\\-49\\-23.60589\\-170.1369\\-49\\-23.60589\\-169.6369\\-49\\-22.16535\\-168.1369\\-49\\-22.10589\\-167.6369\\-49\\-18.91535\\-164.4464\\-49\\-18.41535\\-164.3869\\-49\\-17.41535\\-163.4464\\-49\\-16.91535\\-163.3869\\-49\\-14.41535\\-161.9464\\-49\\-13.41535\\-161.8869\\-49\\-12.91535\\-161.4464\\-49\\-11.41535\\-161.3869\\-49\\-10.91535\\-160.9464\\-49\\-8.415353\\-160.8869\\-49\\-7.915353\\-160.4464\\-49\\9.084647\\-160.4464\\-49\\9.584647\\-160.8869\\-49\\12.08465\\-160.9464\\-49\\12.58465\\-161.3869\\-49\\14.08465\\-161.4464\\-49\\15.58465\\-162.3869\\-49\\16.58465\\-162.4464\\-49\\17.08465\\-162.9464\\-49\\17.58465\\-162.9464\\-49\\18.58465\\-163.4464\\-49\\20.08465\\-164.8869\\-49\\20.58465\\-164.9464\\-49\\23.27518\\-167.6369\\-49\\23.33465\\-168.1369\\-49\\24.77518\\-169.6369\\-49\\24.77518\\-170.1369\\-49\\25.27518\\-170.6369\\-49\\25.77518\\-171.6369\\-49\\25.83465\\-172.6369\\-49\\26.27518\\-173.1369\\-49\\26.33465\\-174.1369\\-49\\26.77518\\-174.6369\\-49\\26.83465\\-176.6369\\-49\\26.83465\\-180.6369\\-49\\26.77518\\-183.1369\\-49\\26.33465\\-183.6369\\-49\\26.27518\\-184.6369\\-49\\25.83465\\-185.1369\\-49\\25.77518\\-186.1369\\-49\\25.33465\\-186.6369\\-49\\24.27518\\-189.1369\\-49\\23.27518\\-190.1369\\-49\\23.27518\\-190.6369\\-49\\19.58465\\-194.3274\\-49\\19.08465\\-194.3274\\-49\\18.08465\\-195.3274\\-49\\16.58465\\-195.8869\\-49\\15.08465\\-196.8274\\-49\\14.08465\\-196.8869\\-49\\13.58465\\-197.3274\\-49\\12.08465\\-197.3869\\-49\\11.58465\\-197.8274\\-49\\9.084647\\-197.8869\\-49\\8.584647\\-198.3274\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "84"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-9.415353\\-199.3274\\-47\\-9.915353\\-198.8869\\-47\\-11.91535\\-198.8274\\-47\\-12.41535\\-198.3869\\-47\\-13.41535\\-198.3274\\-47\\-13.91535\\-197.8869\\-47\\-14.91535\\-197.8274\\-47\\-15.41535\\-197.3869\\-47\\-17.91535\\-196.3274\\-47\\-18.91535\\-195.3869\\-47\\-19.41535\\-195.3274\\-47\\-22.60589\\-192.1369\\-47\\-22.66535\\-191.6369\\-47\\-24.10589\\-190.1369\\-47\\-24.16535\\-189.6369\\-47\\-25.60589\\-187.1369\\-47\\-25.66535\\-186.1369\\-47\\-26.10589\\-185.6369\\-47\\-26.16535\\-184.6369\\-47\\-26.60589\\-184.1369\\-47\\-26.66535\\-182.1369\\-47\\-27.10589\\-181.6369\\-47\\-27.10589\\-176.1369\\-47\\-26.66535\\-175.6369\\-47\\-26.60589\\-173.6369\\-47\\-26.16535\\-173.1369\\-47\\-26.10589\\-172.1369\\-47\\-24.66535\\-169.6369\\-47\\-24.60589\\-169.1369\\-47\\-23.66535\\-168.1369\\-47\\-23.60589\\-167.6369\\-47\\-21.41535\\-165.3869\\-47\\-19.41535\\-163.4464\\-47\\-15.91535\\-161.8869\\-47\\-14.41535\\-160.9464\\-47\\-12.91535\\-160.8869\\-47\\-12.41535\\-160.4464\\-47\\-10.91535\\-160.3869\\-47\\-10.41535\\-159.9464\\-47\\-9.415353\\-159.8869\\-47\\10.58465\\-159.8869\\-47\\11.58465\\-160.3869\\-47\\13.58465\\-160.4464\\-47\\14.08465\\-160.8869\\-47\\15.08465\\-160.9464\\-47\\15.58465\\-161.3869\\-47\\16.58465\\-161.4464\\-47\\17.08465\\-161.8869\\-47\\19.08465\\-162.8869\\-47\\19.58465\\-162.9464\\-47\\20.58465\\-163.8869\\-47\\21.08465\\-163.9464\\-47\\24.77518\\-167.6369\\-47\\24.83465\\-168.1369\\-47\\25.77518\\-169.1369\\-47\\25.83465\\-169.6369\\-47\\27.27518\\-172.1369\\-47\\27.33465\\-173.1369\\-47\\27.77518\\-173.6369\\-47\\27.83465\\-175.6369\\-47\\28.27518\\-176.1369\\-47\\28.27518\\-182.1369\\-47\\27.83465\\-182.6369\\-47\\27.77518\\-184.1369\\-47\\27.33465\\-184.6369\\-47\\27.27518\\-185.6369\\-47\\26.83465\\-186.1369\\-47\\26.77518\\-187.1369\\-47\\25.33465\\-189.6369\\-47\\25.27518\\-190.1369\\-47\\23.33465\\-192.1369\\-47\\23.27518\\-192.6369\\-47\\21.08465\\-194.8274\\-47\\20.58465\\-194.8869\\-47\\19.08465\\-196.3274\\-47\\18.58465\\-196.3274\\-47\\18.08465\\-196.8274\\-47\\17.08465\\-197.3274\\-47\\16.08465\\-197.3869\\-47\\14.58465\\-198.3274\\-47\\13.08465\\-198.3869\\-47\\12.58465\\-198.8274\\-47\\10.58465\\-198.8869\\-47\\10.08465\\-199.3274\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "97"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-10.41535\\-200.3274\\-45\\-10.91535\\-199.8869\\-45\\-12.41535\\-199.8274\\-45\\-12.91535\\-199.3869\\-45\\-13.91535\\-199.3274\\-45\\-14.41535\\-198.8869\\-45\\-15.41535\\-198.8274\\-45\\-15.91535\\-198.3869\\-45\\-18.41535\\-197.3274\\-45\\-19.41535\\-196.3869\\-45\\-19.91535\\-196.3274\\-45\\-24.10589\\-192.1369\\-45\\-24.16535\\-191.6369\\-45\\-25.10589\\-190.6369\\-45\\-26.60589\\-187.6369\\-45\\-26.66535\\-186.6369\\-45\\-27.10589\\-186.1369\\-45\\-27.16535\\-185.1369\\-45\\-27.60589\\-184.6369\\-45\\-27.66535\\-182.6369\\-45\\-28.10589\\-182.1369\\-45\\-28.10589\\-175.6369\\-45\\-27.66535\\-175.1369\\-45\\-27.60589\\-173.6369\\-45\\-27.16535\\-173.1369\\-45\\-27.10589\\-172.1369\\-45\\-25.66535\\-169.6369\\-45\\-25.60589\\-169.1369\\-45\\-24.66535\\-167.6369\\-45\\-24.60589\\-167.1369\\-45\\-21.41535\\-163.9464\\-45\\-20.91535\\-163.8869\\-45\\-19.91535\\-162.9464\\-45\\-19.41535\\-162.8869\\-45\\-18.41535\\-161.9464\\-45\\-16.91535\\-161.3869\\-45\\-16.41535\\-160.9464\\-45\\-15.41535\\-160.8869\\-45\\-14.91535\\-160.4464\\-45\\-13.91535\\-160.3869\\-45\\-13.41535\\-159.9464\\-45\\-11.91535\\-159.8869\\-45\\-11.41535\\-159.4464\\-45\\-10.41535\\-159.3869\\-45\\-6.915353\\-159.3869\\-45\\-6.415353\\-158.9464\\-45\\6.584647\\-158.9464\\-45\\7.084647\\-159.3869\\-45\\11.08465\\-159.3869\\-45\\12.08465\\-159.4464\\-45\\12.58465\\-159.8869\\-45\\14.08465\\-159.9464\\-45\\14.58465\\-160.3869\\-45\\15.58465\\-160.4464\\-45\\16.08465\\-160.8869\\-45\\17.08465\\-160.9464\\-45\\17.58465\\-161.3869\\-45\\18.08465\\-161.3869\\-45\\18.58465\\-161.8869\\-45\\19.08465\\-161.8869\\-45\\19.58465\\-162.3869\\-45\\21.08465\\-162.9464\\-45\\22.58465\\-164.3869\\-45\\23.08465\\-164.4464\\-45\\25.27518\\-166.6369\\-45\\25.33465\\-167.1369\\-45\\26.27518\\-168.1369\\-45\\26.83465\\-169.6369\\-45\\28.27518\\-172.1369\\-45\\28.33465\\-173.1369\\-45\\28.77518\\-173.6369\\-45\\28.83465\\-175.1369\\-45\\29.27518\\-175.6369\\-45\\29.27518\\-182.6369\\-45\\28.83465\\-183.1369\\-45\\28.77518\\-184.6369\\-45\\28.33465\\-185.1369\\-45\\28.27518\\-186.1369\\-45\\27.83465\\-186.6369\\-45\\27.77518\\-187.6369\\-45\\26.83465\\-189.1369\\-45\\26.27518\\-190.6369\\-45\\24.83465\\-192.1369\\-45\\24.77518\\-192.6369\\-45\\21.58465\\-195.8274\\-45\\21.08465\\-195.8869\\-45\\19.58465\\-197.3274\\-45\\17.08465\\-198.3869\\-45\\16.58465\\-198.8274\\-45\\15.58465\\-198.8869\\-45\\15.08465\\-199.3274\\-45\\13.58465\\-199.3869\\-45\\13.08465\\-199.8274\\-45\\11.08465\\-199.8869\\-45\\10.58465\\-200.3274\\-45\\8.084647\\-200.3869\\-45\\-7.915353\\-200.3869\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "102"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-10.41535\\-201.3274\\-43\\-10.91535\\-200.8869\\-43\\-12.41535\\-200.8274\\-43\\-12.91535\\-200.3869\\-43\\-14.41535\\-200.3274\\-43\\-15.91535\\-199.3869\\-43\\-16.91535\\-199.3274\\-43\\-17.91535\\-198.8274\\-43\\-18.91535\\-197.8869\\-43\\-19.41535\\-197.8274\\-43\\-20.41535\\-196.8869\\-43\\-20.91535\\-196.8274\\-43\\-24.10589\\-193.6369\\-43\\-24.16535\\-193.1369\\-43\\-25.10589\\-192.1369\\-43\\-25.16535\\-191.6369\\-43\\-26.10589\\-190.6369\\-43\\-26.66535\\-189.1369\\-43\\-27.10589\\-188.6369\\-43\\-27.16535\\-187.6369\\-43\\-27.60589\\-187.1369\\-43\\-27.66535\\-186.1369\\-43\\-28.10589\\-185.6369\\-43\\-28.16535\\-184.6369\\-43\\-28.60589\\-184.1369\\-43\\-28.66535\\-182.1369\\-43\\-29.10589\\-181.6369\\-43\\-29.10589\\-176.6369\\-43\\-28.66535\\-176.1369\\-43\\-28.60589\\-173.6369\\-43\\-28.16535\\-173.1369\\-43\\-28.10589\\-172.1369\\-43\\-26.66535\\-169.6369\\-43\\-26.10589\\-168.1369\\-43\\-25.16535\\-167.1369\\-43\\-25.10589\\-166.6369\\-43\\-21.91535\\-163.4464\\-43\\-21.41535\\-163.3869\\-43\\-20.41535\\-162.4464\\-43\\-19.91535\\-162.3869\\-43\\-19.41535\\-161.8869\\-43\\-18.91535\\-161.8869\\-43\\-17.91535\\-160.9464\\-43\\-16.91535\\-160.8869\\-43\\-16.41535\\-160.3869\\-43\\-15.91535\\-160.3869\\-43\\-15.41535\\-159.9464\\-43\\-13.91535\\-159.8869\\-43\\-13.41535\\-159.4464\\-43\\-11.41535\\-159.3869\\-43\\-10.41535\\-158.8869\\-43\\11.08465\\-158.8869\\-43\\12.08465\\-159.3869\\-43\\14.08465\\-159.4464\\-43\\14.58465\\-159.8869\\-43\\16.08465\\-159.9464\\-43\\16.58465\\-160.3869\\-43\\17.58465\\-160.4464\\-43\\20.08465\\-161.8869\\-43\\20.58465\\-161.9464\\-43\\21.58465\\-162.8869\\-43\\22.08465\\-162.9464\\-43\\23.08465\\-163.8869\\-43\\23.58465\\-163.9464\\-43\\26.27518\\-166.6369\\-43\\26.33465\\-167.1369\\-43\\27.27518\\-168.1369\\-43\\27.83465\\-169.6369\\-43\\29.27518\\-172.1369\\-43\\29.33465\\-173.1369\\-43\\29.77518\\-173.6369\\-43\\29.83465\\-176.1369\\-43\\30.27518\\-176.6369\\-43\\30.27518\\-181.6369\\-43\\29.83465\\-182.1369\\-43\\29.77518\\-184.1369\\-43\\29.33465\\-184.6369\\-43\\29.27518\\-185.6369\\-43\\28.83465\\-186.1369\\-43\\28.77518\\-187.1369\\-43\\28.33465\\-187.6369\\-43\\28.27518\\-188.6369\\-43\\27.27518\\-190.6369\\-43\\26.33465\\-191.6369\\-43\\26.27518\\-192.1369\\-43\\24.83465\\-193.6369\\-43\\24.77518\\-194.1369\\-43\\22.58465\\-196.3274\\-43\\22.08465\\-196.3869\\-43\\20.58465\\-197.8274\\-43\\19.08465\\-198.3869\\-43\\18.58465\\-198.8274\\-43\\17.08465\\-199.3869\\-43\\16.58465\\-199.8274\\-43\\15.58465\\-199.8869\\-43\\15.08465\\-200.3274\\-43\\13.58465\\-200.3869\\-43\\13.08465\\-200.8274\\-43\\11.08465\\-200.8869\\-43\\10.58465\\-201.3274\\-43\\8.084647\\-201.3869\\-43\\-8.415353\\-201.3869\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "109"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-9.915353\\-202.3274\\-41\\-10.41535\\-201.8869\\-41\\-12.41535\\-201.8274\\-41\\-12.91535\\-201.3869\\-41\\-13.91535\\-201.3274\\-41\\-14.41535\\-200.8869\\-41\\-15.41535\\-200.8274\\-41\\-16.91535\\-199.8869\\-41\\-19.41535\\-198.8274\\-41\\-20.91535\\-197.3869\\-41\\-21.41535\\-197.3274\\-41\\-24.60589\\-194.1369\\-41\\-24.66535\\-193.6369\\-41\\-25.60589\\-192.6369\\-41\\-25.66535\\-192.1369\\-41\\-26.60589\\-191.1369\\-41\\-27.16535\\-189.6369\\-41\\-28.10589\\-188.1369\\-41\\-28.16535\\-187.1369\\-41\\-28.60589\\-186.6369\\-41\\-28.66535\\-185.6369\\-41\\-29.10589\\-185.1369\\-41\\-29.16535\\-183.1369\\-41\\-29.60589\\-182.6369\\-41\\-29.66535\\-181.6369\\-41\\-29.66535\\-176.6369\\-41\\-29.60589\\-175.1369\\-41\\-29.16535\\-174.6369\\-41\\-29.10589\\-173.1369\\-41\\-28.66535\\-172.6369\\-41\\-28.60589\\-171.6369\\-41\\-27.66535\\-170.1369\\-41\\-27.66535\\-169.6369\\-41\\-27.16535\\-169.1369\\-41\\-27.10589\\-168.6369\\-41\\-26.16535\\-167.6369\\-41\\-26.10589\\-167.1369\\-41\\-25.16535\\-166.1369\\-41\\-25.10589\\-165.6369\\-41\\-23.41535\\-163.9464\\-41\\-22.91535\\-163.8869\\-41\\-21.41535\\-162.4464\\-41\\-20.91535\\-162.3869\\-41\\-20.41535\\-161.8869\\-41\\-19.91535\\-161.8869\\-41\\-18.91535\\-160.9464\\-41\\-17.91535\\-160.4464\\-41\\-16.91535\\-160.3869\\-41\\-16.41535\\-159.8869\\-41\\-15.41535\\-159.8869\\-41\\-14.91535\\-159.3869\\-41\\-13.41535\\-159.3869\\-41\\-12.91535\\-158.9464\\-41\\-9.415353\\-158.8869\\-41\\-8.915353\\-158.4464\\-41\\-7.915353\\-158.3869\\-41\\8.584647\\-158.3869\\-41\\9.584647\\-158.4464\\-41\\10.08465\\-158.8869\\-41\\13.08465\\-158.9464\\-41\\13.58465\\-159.3869\\-41\\15.58465\\-159.3869\\-41\\16.08465\\-159.8869\\-41\\17.08465\\-159.8869\\-41\\17.58465\\-160.3869\\-41\\18.58465\\-160.4464\\-41\\21.58465\\-161.9464\\-41\\22.58465\\-162.8869\\-41\\23.58465\\-163.3869\\-41\\26.83465\\-166.6369\\-41\\27.33465\\-167.6369\\-41\\28.27518\\-168.6369\\-41\\28.83465\\-170.1369\\-41\\29.77518\\-171.6369\\-41\\29.83465\\-172.6369\\-41\\30.27518\\-173.1369\\-41\\30.33465\\-174.6369\\-41\\30.77518\\-175.1369\\-41\\30.83465\\-176.1369\\-41\\30.83465\\-181.6369\\-41\\30.77518\\-182.6369\\-41\\30.33465\\-183.1369\\-41\\30.27518\\-185.1369\\-41\\29.83465\\-185.6369\\-41\\29.77518\\-186.6369\\-41\\29.33465\\-187.1369\\-41\\29.27518\\-188.1369\\-41\\28.33465\\-189.6369\\-41\\27.77518\\-191.1369\\-41\\26.83465\\-192.1369\\-41\\26.77518\\-192.6369\\-41\\25.83465\\-193.6369\\-41\\25.77518\\-194.1369\\-41\\23.08465\\-196.8274\\-41\\22.58465\\-196.8869\\-41\\21.08465\\-198.3274\\-41\\20.58465\\-198.3869\\-41\\19.58465\\-199.3274\\-41\\17.58465\\-200.3274\\-41\\16.58465\\-200.3869\\-41\\16.08465\\-200.8274\\-41\\15.08465\\-200.8869\\-41\\14.58465\\-201.3274\\-41\\13.58465\\-201.3869\\-41\\13.08465\\-201.8274\\-41\\10.58465\\-201.8869\\-41\\10.08465\\-202.3274\\-41\\8.084647\\-202.3869\\-41\\-7.415353\\-202.3869\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "135"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.415353\\-203.3274\\-39\\-8.915353\\-202.8869\\-39\\-11.41535\\-202.8274\\-39\\-11.91535\\-202.3869\\-39\\-13.41535\\-202.3274\\-39\\-13.91535\\-201.8869\\-39\\-14.91535\\-201.8274\\-39\\-16.41535\\-200.8869\\-39\\-16.91535\\-200.8869\\-39\\-17.41535\\-200.3869\\-39\\-17.91535\\-200.3869\\-39\\-18.41535\\-199.8869\\-39\\-18.91535\\-199.8274\\-39\\-19.91535\\-198.8869\\-39\\-20.41535\\-198.8274\\-39\\-21.91535\\-197.3869\\-39\\-22.41535\\-197.3274\\-39\\-24.10589\\-195.6369\\-39\\-24.16535\\-195.1369\\-39\\-25.60589\\-193.6369\\-39\\-25.66535\\-193.1369\\-39\\-26.60589\\-192.1369\\-39\\-26.66535\\-191.6369\\-39\\-27.16535\\-191.1369\\-39\\-27.16535\\-190.6369\\-39\\-27.66535\\-190.1369\\-39\\-27.66535\\-189.6369\\-39\\-28.16535\\-189.1369\\-39\\-28.16535\\-188.6369\\-39\\-28.60589\\-188.1369\\-39\\-28.66535\\-187.1369\\-39\\-29.16535\\-186.6369\\-39\\-29.16535\\-185.6369\\-39\\-29.60589\\-185.1369\\-39\\-29.66535\\-183.1369\\-39\\-30.10589\\-182.6369\\-39\\-30.16535\\-181.6369\\-39\\-30.16535\\-176.6369\\-39\\-30.10589\\-175.6369\\-39\\-29.66535\\-175.1369\\-39\\-29.60589\\-173.1369\\-39\\-29.16535\\-172.6369\\-39\\-29.10589\\-171.6369\\-39\\-28.66535\\-171.1369\\-39\\-28.66535\\-170.6369\\-39\\-28.16535\\-170.1369\\-39\\-28.10589\\-169.1369\\-39\\-27.16535\\-168.1369\\-39\\-27.10589\\-167.6369\\-39\\-26.16535\\-166.6369\\-39\\-26.10589\\-166.1369\\-39\\-22.91535\\-162.9464\\-39\\-22.41535\\-162.8869\\-39\\-21.41535\\-161.9464\\-39\\-20.91535\\-161.8869\\-39\\-20.41535\\-161.3869\\-39\\-19.91535\\-161.3869\\-39\\-19.41535\\-160.8869\\-39\\-18.91535\\-160.8869\\-39\\-18.41535\\-160.3869\\-39\\-17.91535\\-160.3869\\-39\\-17.41535\\-159.8869\\-39\\-16.41535\\-159.8869\\-39\\-15.91535\\-159.3869\\-39\\-14.41535\\-159.3869\\-39\\-13.91535\\-158.8869\\-39\\-11.41535\\-158.8869\\-39\\-10.41535\\-158.3869\\-39\\10.58465\\-158.3869\\-39\\11.58465\\-158.8869\\-39\\14.08465\\-158.8869\\-39\\14.58465\\-159.3869\\-39\\16.58465\\-159.4464\\-39\\17.08465\\-159.8869\\-39\\18.08465\\-159.8869\\-39\\18.58465\\-160.3869\\-39\\19.08465\\-160.3869\\-39\\19.58465\\-160.8869\\-39\\20.08465\\-160.8869\\-39\\20.58465\\-161.3869\\-39\\21.08465\\-161.3869\\-39\\21.58465\\-161.8869\\-39\\22.08465\\-161.8869\\-39\\22.58465\\-162.3869\\-39\\23.08465\\-162.4464\\-39\\24.58465\\-163.8869\\-39\\25.08465\\-163.9464\\-39\\26.77518\\-165.6369\\-39\\26.83465\\-166.1369\\-39\\28.27518\\-167.6369\\-39\\28.33465\\-168.1369\\-39\\28.83465\\-168.6369\\-39\\28.83465\\-169.1369\\-39\\29.33465\\-169.6369\\-39\\29.33465\\-170.1369\\-39\\29.83465\\-170.6369\\-39\\29.83465\\-171.1369\\-39\\30.27518\\-171.6369\\-39\\30.33465\\-172.6369\\-39\\30.77518\\-173.1369\\-39\\30.83465\\-175.1369\\-39\\31.33465\\-176.1369\\-39\\31.33465\\-181.6369\\-39\\31.27518\\-182.6369\\-39\\30.83465\\-183.1369\\-39\\30.77518\\-185.1369\\-39\\30.33465\\-185.6369\\-39\\30.33465\\-186.6369\\-39\\29.83465\\-187.1369\\-39\\29.77518\\-188.1369\\-39\\28.83465\\-189.6369\\-39\\28.83465\\-190.1369\\-39\\28.33465\\-190.6369\\-39\\28.33465\\-191.1369\\-39\\27.83465\\-191.6369\\-39\\27.77518\\-192.1369\\-39\\26.83465\\-193.1369\\-39\\26.77518\\-193.6369\\-39\\24.83465\\-195.6369\\-39\\24.77518\\-196.1369\\-39\\24.08465\\-196.8274\\-39\\23.58465\\-196.8869\\-39\\21.58465\\-198.8274\\-39\\21.08465\\-198.8869\\-39\\20.08465\\-199.8274\\-39\\17.58465\\-200.8869\\-39\\17.08465\\-201.3274\\-39\\16.08465\\-201.3869\\-39\\15.58465\\-201.8274\\-39\\14.58465\\-201.8869\\-39\\14.08465\\-202.3274\\-39\\12.58465\\-202.3869\\-39\\12.08465\\-202.8274\\-39\\9.584647\\-202.8869\\-39\\9.084647\\-203.3274\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "134"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-9.915353\\-203.8274\\-37\\-10.41535\\-203.3869\\-37\\-11.91535\\-203.3274\\-37\\-12.41535\\-202.8869\\-37\\-13.91535\\-202.8274\\-37\\-14.41535\\-202.3869\\-37\\-15.41535\\-202.3274\\-37\\-17.91535\\-200.8869\\-37\\-18.41535\\-200.8274\\-37\\-19.41535\\-199.8869\\-37\\-19.91535\\-199.8274\\-37\\-21.41535\\-198.3869\\-37\\-21.91535\\-198.3274\\-37\\-24.10589\\-196.1369\\-37\\-24.16535\\-195.6369\\-37\\-26.10589\\-193.6369\\-37\\-26.16535\\-193.1369\\-37\\-27.10589\\-192.1369\\-37\\-27.66535\\-190.6369\\-37\\-28.16535\\-190.1369\\-37\\-28.16535\\-189.6369\\-37\\-28.66535\\-189.1369\\-37\\-28.66535\\-188.1369\\-37\\-29.16535\\-187.6369\\-37\\-29.16535\\-187.1369\\-37\\-29.60589\\-186.6369\\-37\\-29.66535\\-185.1369\\-37\\-30.10589\\-184.6369\\-37\\-30.16535\\-182.1369\\-37\\-30.60589\\-181.6369\\-37\\-30.66535\\-180.6369\\-37\\-30.66535\\-177.1369\\-37\\-30.60589\\-176.1369\\-37\\-30.16535\\-175.6369\\-37\\-30.10589\\-173.6369\\-37\\-29.66535\\-173.1369\\-37\\-29.66535\\-172.1369\\-37\\-29.16535\\-171.6369\\-37\\-29.10589\\-170.6369\\-37\\-28.66535\\-170.1369\\-37\\-28.66535\\-169.6369\\-37\\-28.16535\\-169.1369\\-37\\-28.16535\\-168.6369\\-37\\-27.66535\\-168.1369\\-37\\-27.60589\\-167.6369\\-37\\-26.16535\\-166.1369\\-37\\-26.10589\\-165.6369\\-37\\-23.91535\\-163.4464\\-37\\-23.41535\\-163.3869\\-37\\-22.41535\\-162.3869\\-37\\-21.91535\\-162.3869\\-37\\-20.91535\\-161.4464\\-37\\-20.41535\\-161.3869\\-37\\-19.91535\\-160.8869\\-37\\-19.41535\\-160.8869\\-37\\-18.91535\\-160.3869\\-37\\-18.41535\\-160.3869\\-37\\-17.91535\\-159.9464\\-37\\-16.91535\\-159.8869\\-37\\-16.41535\\-159.3869\\-37\\-14.91535\\-159.3869\\-37\\-14.41535\\-158.8869\\-37\\-12.41535\\-158.8869\\-37\\-11.41535\\-158.3869\\-37\\-7.915353\\-158.3869\\-37\\-7.415353\\-157.8869\\-37\\7.584647\\-157.8869\\-37\\8.084647\\-158.3869\\-37\\11.58465\\-158.3869\\-37\\12.58465\\-158.8869\\-37\\14.58465\\-158.8869\\-37\\15.08465\\-159.3869\\-37\\16.58465\\-159.3869\\-37\\17.08465\\-159.8869\\-37\\18.58465\\-159.8869\\-37\\19.08465\\-160.3869\\-37\\19.58465\\-160.3869\\-37\\20.08465\\-160.8869\\-37\\20.58465\\-160.8869\\-37\\21.08465\\-161.3869\\-37\\21.58465\\-161.3869\\-37\\22.08465\\-161.8869\\-37\\22.58465\\-161.8869\\-37\\23.58465\\-162.8869\\-37\\24.08465\\-162.8869\\-37\\28.33465\\-167.1369\\-37\\28.33465\\-167.6369\\-37\\29.33465\\-168.6369\\-37\\29.33465\\-169.1369\\-37\\29.83465\\-169.6369\\-37\\29.83465\\-170.1369\\-37\\30.27518\\-170.6369\\-37\\30.33465\\-171.6369\\-37\\30.77518\\-172.1369\\-37\\30.83465\\-173.6369\\-37\\31.33465\\-174.1369\\-37\\31.33465\\-175.6369\\-37\\31.83465\\-176.6369\\-37\\31.83465\\-180.6369\\-37\\31.77518\\-181.6369\\-37\\31.33465\\-182.1369\\-37\\31.27518\\-184.6369\\-37\\30.83465\\-185.1369\\-37\\30.77518\\-186.6369\\-37\\30.33465\\-187.1369\\-37\\30.33465\\-187.6369\\-37\\29.83465\\-188.1369\\-37\\29.77518\\-189.1369\\-37\\29.33465\\-189.6369\\-37\\29.33465\\-190.1369\\-37\\28.83465\\-190.6369\\-37\\28.83465\\-191.1369\\-37\\28.33465\\-191.6369\\-37\\28.27518\\-192.1369\\-37\\27.33465\\-193.1369\\-37\\27.27518\\-193.6369\\-37\\25.33465\\-195.6369\\-37\\25.27518\\-196.1369\\-37\\23.08465\\-198.3274\\-37\\22.58465\\-198.3869\\-37\\21.08465\\-199.8274\\-37\\19.58465\\-200.3869\\-37\\18.58465\\-201.3274\\-37\\17.58465\\-201.8274\\-37\\16.58465\\-201.8869\\-37\\16.08465\\-202.3274\\-37\\15.08465\\-202.3869\\-37\\14.58465\\-202.8274\\-37\\13.58465\\-202.8869\\-37\\13.08465\\-203.3274\\-37\\11.58465\\-203.3869\\-37\\11.08465\\-203.8274\\-37\\9.584647\\-203.8869\\-37\\-8.915353\\-203.8869\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "128"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-7.415353\\-204.8274\\-35\\-7.915353\\-204.3869\\-35\\-10.41535\\-204.3274\\-35\\-10.91535\\-203.8869\\-35\\-12.41535\\-203.8274\\-35\\-12.91535\\-203.3869\\-35\\-13.91535\\-203.3274\\-35\\-14.41535\\-202.8869\\-35\\-15.41535\\-202.8274\\-35\\-16.91535\\-201.8869\\-35\\-18.41535\\-201.3274\\-35\\-19.41535\\-200.3869\\-35\\-20.41535\\-199.8869\\-35\\-25.66535\\-194.6369\\-35\\-26.16535\\-193.6369\\-35\\-27.10589\\-192.6369\\-35\\-27.16535\\-192.1369\\-35\\-27.66535\\-191.6369\\-35\\-27.66535\\-191.1369\\-35\\-28.16535\\-190.6369\\-35\\-28.16535\\-190.1369\\-35\\-28.66535\\-189.6369\\-35\\-28.66535\\-188.6369\\-35\\-29.16535\\-188.1369\\-35\\-29.16535\\-187.6369\\-35\\-29.66535\\-187.1369\\-35\\-29.66535\\-185.6369\\-35\\-30.16535\\-185.1369\\-35\\-30.16535\\-183.6369\\-35\\-30.66535\\-182.6369\\-35\\-30.66535\\-175.1369\\-35\\-30.16535\\-174.1369\\-35\\-30.16535\\-173.1369\\-35\\-29.66535\\-172.6369\\-35\\-29.66535\\-171.6369\\-35\\-29.16535\\-171.1369\\-35\\-29.16535\\-170.1369\\-35\\-28.66535\\-169.6369\\-35\\-28.66535\\-169.1369\\-35\\-28.16535\\-168.6369\\-35\\-28.16535\\-168.1369\\-35\\-27.16535\\-167.1369\\-35\\-26.66535\\-166.1369\\-35\\-23.41535\\-162.8869\\-35\\-22.91535\\-162.8869\\-35\\-21.91535\\-161.8869\\-35\\-21.41535\\-161.8869\\-35\\-20.91535\\-161.3869\\-35\\-20.41535\\-161.3869\\-35\\-19.91535\\-160.8869\\-35\\-19.41535\\-160.8869\\-35\\-18.91535\\-160.3869\\-35\\-18.41535\\-160.3869\\-35\\-17.91535\\-159.8869\\-35\\-16.91535\\-159.8869\\-35\\-16.41535\\-159.3869\\-35\\-14.91535\\-159.3869\\-35\\-14.41535\\-158.8869\\-35\\-12.41535\\-158.8869\\-35\\-11.91535\\-158.3869\\-35\\-8.415353\\-158.3869\\-35\\-7.915353\\-157.8869\\-35\\8.084647\\-157.8869\\-35\\8.584647\\-158.3869\\-35\\12.08465\\-158.3869\\-35\\12.58465\\-158.8869\\-35\\14.58465\\-158.8869\\-35\\15.08465\\-159.3869\\-35\\16.58465\\-159.3869\\-35\\17.08465\\-159.8869\\-35\\18.58465\\-159.8869\\-35\\19.08465\\-160.3869\\-35\\19.58465\\-160.3869\\-35\\20.08465\\-160.8869\\-35\\20.58465\\-160.8869\\-35\\21.08465\\-161.3869\\-35\\21.58465\\-161.3869\\-35\\22.08465\\-161.8869\\-35\\22.58465\\-161.8869\\-35\\23.08465\\-162.3869\\-35\\23.58465\\-162.3869\\-35\\25.08465\\-163.8869\\-35\\25.58465\\-163.8869\\-35\\27.77518\\-166.1369\\-35\\27.83465\\-166.6369\\-35\\28.83465\\-167.6369\\-35\\28.83465\\-168.1369\\-35\\29.83465\\-169.1369\\-35\\29.83465\\-169.6369\\-35\\30.27518\\-170.1369\\-35\\30.33465\\-171.1369\\-35\\30.83465\\-171.6369\\-35\\30.83465\\-172.6369\\-35\\31.33465\\-173.1369\\-35\\31.33465\\-174.1369\\-35\\31.83465\\-175.1369\\-35\\31.83465\\-182.6369\\-35\\31.33465\\-183.6369\\-35\\31.33465\\-185.1369\\-35\\30.83465\\-185.6369\\-35\\30.83465\\-187.1369\\-35\\30.33465\\-187.6369\\-35\\30.27518\\-188.6369\\-35\\29.83465\\-189.1369\\-35\\29.83465\\-189.6369\\-35\\29.33465\\-190.1369\\-35\\29.33465\\-190.6369\\-35\\28.83465\\-191.1369\\-35\\28.83465\\-191.6369\\-35\\28.33465\\-192.1369\\-35\\28.27518\\-192.6369\\-35\\27.33465\\-193.6369\\-35\\26.83465\\-194.6369\\-35\\21.58465\\-199.8869\\-35\\20.58465\\-200.3869\\-35\\20.08465\\-200.8869\\-35\\19.58465\\-200.8869\\-35\\18.58465\\-201.8274\\-35\\17.08465\\-202.3869\\-35\\16.58465\\-202.8274\\-35\\15.58465\\-202.8869\\-35\\15.08465\\-203.3274\\-35\\14.08465\\-203.3869\\-35\\13.58465\\-203.8274\\-35\\12.08465\\-203.8869\\-35\\11.58465\\-204.3274\\-35\\9.084647\\-204.3869\\-35\\8.584647\\-204.8274\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "151"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-7.415353\\-205.3274\\-33\\-7.915353\\-204.8869\\-33\\-10.41535\\-204.8274\\-33\\-10.91535\\-204.3869\\-33\\-12.41535\\-204.3274\\-33\\-12.91535\\-203.8869\\-33\\-13.91535\\-203.8274\\-33\\-14.41535\\-203.3869\\-33\\-14.91535\\-203.3869\\-33\\-15.41535\\-202.8869\\-33\\-15.91535\\-202.8869\\-33\\-16.41535\\-202.3869\\-33\\-16.91535\\-202.3869\\-33\\-17.41535\\-201.8869\\-33\\-17.91535\\-201.8869\\-33\\-18.41535\\-201.3869\\-33\\-18.91535\\-201.3274\\-33\\-20.91535\\-199.3869\\-33\\-21.41535\\-199.3869\\-33\\-24.10589\\-196.6369\\-33\\-24.16535\\-196.1369\\-33\\-26.16535\\-194.1369\\-33\\-26.16535\\-193.6369\\-33\\-27.16535\\-192.6369\\-33\\-27.16535\\-192.1369\\-33\\-27.66535\\-191.6369\\-33\\-27.66535\\-191.1369\\-33\\-28.16535\\-190.6369\\-33\\-28.16535\\-190.1369\\-33\\-28.66535\\-189.6369\\-33\\-28.66535\\-189.1369\\-33\\-29.16535\\-188.6369\\-33\\-29.16535\\-187.6369\\-33\\-29.66535\\-187.1369\\-33\\-29.66535\\-185.6369\\-33\\-30.16535\\-185.1369\\-33\\-30.16535\\-183.6369\\-33\\-30.66535\\-183.1369\\-33\\-30.66535\\-179.6369\\-33\\-31.16535\\-179.1369\\-33\\-31.16535\\-178.6369\\-33\\-30.66535\\-178.1369\\-33\\-30.66535\\-174.6369\\-33\\-30.16535\\-174.1369\\-33\\-30.16535\\-173.1369\\-33\\-29.66535\\-172.6369\\-33\\-29.66535\\-171.6369\\-33\\-29.16535\\-171.1369\\-33\\-29.16535\\-170.1369\\-33\\-28.66535\\-169.6369\\-33\\-28.66535\\-169.1369\\-33\\-28.16535\\-168.6369\\-33\\-28.16535\\-168.1369\\-33\\-27.16535\\-167.1369\\-33\\-27.16535\\-166.6369\\-33\\-23.41535\\-162.8869\\-33\\-22.91535\\-162.8869\\-33\\-21.91535\\-161.8869\\-33\\-21.41535\\-161.8869\\-33\\-20.91535\\-161.3869\\-33\\-20.41535\\-161.3869\\-33\\-19.91535\\-160.8869\\-33\\-19.41535\\-160.8869\\-33\\-18.91535\\-160.3869\\-33\\-18.41535\\-160.3869\\-33\\-17.91535\\-159.8869\\-33\\-16.91535\\-159.8869\\-33\\-16.41535\\-159.3869\\-33\\-14.91535\\-159.3869\\-33\\-14.41535\\-158.8869\\-33\\-11.91535\\-158.8274\\-33\\-11.41535\\-158.3869\\-33\\-7.415353\\-158.3869\\-33\\-6.415353\\-157.8869\\-33\\5.084647\\-157.8869\\-33\\5.584647\\-158.3274\\-33\\6.584647\\-158.3869\\-33\\11.58465\\-158.3869\\-33\\12.08465\\-158.8869\\-33\\14.58465\\-158.8869\\-33\\15.08465\\-159.3869\\-33\\16.58465\\-159.3869\\-33\\17.08465\\-159.8869\\-33\\18.58465\\-159.8869\\-33\\19.08465\\-160.3869\\-33\\19.58465\\-160.3869\\-33\\20.08465\\-160.8869\\-33\\20.58465\\-160.8869\\-33\\21.08465\\-161.3869\\-33\\21.58465\\-161.3869\\-33\\22.08465\\-161.8869\\-33\\22.58465\\-161.8869\\-33\\23.08465\\-162.3869\\-33\\23.58465\\-162.3869\\-33\\25.08465\\-163.8869\\-33\\25.58465\\-163.8869\\-33\\27.83465\\-166.1369\\-33\\27.83465\\-166.6369\\-33\\28.83465\\-167.6369\\-33\\28.89411\\-168.1369\\-33\\29.83465\\-169.1369\\-33\\29.83465\\-169.6369\\-33\\30.33465\\-170.1369\\-33\\30.33465\\-171.1369\\-33\\30.83465\\-171.6369\\-33\\30.83465\\-172.6369\\-33\\31.33465\\-173.1369\\-33\\31.33465\\-174.1369\\-33\\31.83465\\-174.6369\\-33\\31.83465\\-177.6369\\-33\\32.33465\\-178.1369\\-33\\32.33465\\-179.1369\\-33\\31.83465\\-179.6369\\-33\\31.83465\\-183.1369\\-33\\31.33465\\-183.6369\\-33\\31.33465\\-185.1369\\-33\\30.83465\\-185.6369\\-33\\30.83465\\-187.1369\\-33\\30.33465\\-187.6369\\-33\\30.33465\\-188.6369\\-33\\29.83465\\-189.1369\\-33\\29.83465\\-189.6369\\-33\\29.33465\\-190.1369\\-33\\29.33465\\-190.6369\\-33\\28.83465\\-191.1369\\-33\\28.83465\\-191.6369\\-33\\28.33465\\-192.1369\\-33\\28.33465\\-192.6369\\-33\\27.33465\\-193.6369\\-33\\27.33465\\-194.1369\\-33\\25.83465\\-195.6369\\-33\\25.77518\\-196.1369\\-33\\22.58465\\-199.3869\\-33\\22.08465\\-199.3869\\-33\\20.08465\\-201.3274\\-33\\19.58465\\-201.3869\\-33\\19.08465\\-201.8869\\-33\\18.58465\\-201.8869\\-33\\18.08465\\-202.3869\\-33\\17.58465\\-202.3869\\-33\\17.08465\\-202.8869\\-33\\16.58465\\-202.8869\\-33\\16.08465\\-203.3869\\-33\\15.58465\\-203.3869\\-33\\15.08465\\-203.8274\\-33\\14.08465\\-203.8869\\-33\\13.58465\\-204.3274\\-33\\12.08465\\-204.3869\\-33\\11.58465\\-204.8274\\-33\\9.084647\\-204.8869\\-33\\8.584647\\-205.3274\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "135"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.415353\\-205.8274\\-31\\-6.915353\\-205.3869\\-31\\-9.915353\\-205.3274\\-31\\-10.41535\\-204.8869\\-31\\-11.91535\\-204.8274\\-31\\-12.41535\\-204.3869\\-31\\-13.41535\\-204.3869\\-31\\-13.91535\\-203.8869\\-31\\-14.41535\\-203.8869\\-31\\-14.91535\\-203.3869\\-31\\-15.41535\\-203.3869\\-31\\-15.91535\\-202.8869\\-31\\-16.41535\\-202.8869\\-31\\-16.91535\\-202.3869\\-31\\-17.41535\\-202.3869\\-31\\-18.41535\\-201.3869\\-31\\-18.91535\\-201.3869\\-31\\-20.91535\\-199.3869\\-31\\-21.41535\\-199.3869\\-31\\-24.16535\\-196.6369\\-31\\-24.16535\\-196.1369\\-31\\-26.16535\\-194.1369\\-31\\-26.16535\\-193.6369\\-31\\-27.16535\\-192.6369\\-31\\-27.16535\\-192.1369\\-31\\-27.66535\\-191.6369\\-31\\-27.66535\\-191.1369\\-31\\-28.16535\\-190.6369\\-31\\-28.16535\\-190.1369\\-31\\-28.66535\\-189.6369\\-31\\-28.72482\\-188.6369\\-31\\-29.16535\\-188.1369\\-31\\-29.16535\\-187.6369\\-31\\-29.66535\\-187.1369\\-31\\-29.66535\\-185.6369\\-31\\-30.16535\\-185.1369\\-31\\-30.22482\\-183.1369\\-31\\-30.66535\\-182.6369\\-31\\-30.66535\\-175.1369\\-31\\-30.16535\\-174.6369\\-31\\-30.16535\\-173.6369\\-31\\-29.72482\\-173.1369\\-31\\-29.66535\\-171.6369\\-31\\-29.16535\\-171.1369\\-31\\-29.16535\\-170.6369\\-31\\-28.16535\\-168.6369\\-31\\-27.66535\\-168.1369\\-31\\-27.66535\\-167.6369\\-31\\-26.22482\\-166.1369\\-31\\-26.16535\\-165.6369\\-31\\-23.91535\\-163.3869\\-31\\-23.41535\\-163.3869\\-31\\-22.41535\\-162.3869\\-31\\-21.91535\\-162.3274\\-31\\-20.91535\\-161.3869\\-31\\-20.41535\\-161.3869\\-31\\-19.91535\\-160.8869\\-31\\-19.41535\\-160.8869\\-31\\-18.91535\\-160.3869\\-31\\-17.91535\\-160.3869\\-31\\-17.41535\\-159.8869\\-31\\-16.41535\\-159.8274\\-31\\-15.91535\\-159.3869\\-31\\-14.41535\\-159.3869\\-31\\-13.91535\\-158.8869\\-31\\-10.91535\\-158.8274\\-31\\-10.41535\\-158.3869\\-31\\10.58465\\-158.3869\\-31\\11.08465\\-158.8869\\-31\\14.08465\\-158.8869\\-31\\14.58465\\-159.3869\\-31\\16.58465\\-159.3869\\-31\\17.08465\\-159.8869\\-31\\18.08465\\-159.8869\\-31\\18.58465\\-160.3869\\-31\\19.58465\\-160.3869\\-31\\20.08465\\-160.8869\\-31\\20.58465\\-160.8869\\-31\\21.08465\\-161.3869\\-31\\21.58465\\-161.3869\\-31\\22.08465\\-161.8869\\-31\\22.58465\\-161.8869\\-31\\23.58465\\-162.8869\\-31\\24.08465\\-162.8869\\-31\\28.83465\\-167.6369\\-31\\28.83465\\-168.1369\\-31\\29.33465\\-168.6369\\-31\\29.33465\\-169.1369\\-31\\29.83465\\-169.6369\\-31\\29.83465\\-170.1369\\-31\\30.33465\\-170.6369\\-31\\30.33465\\-171.1369\\-31\\30.83465\\-171.6369\\-31\\30.89411\\-173.1369\\-31\\31.33465\\-173.6369\\-31\\31.33465\\-174.6369\\-31\\31.83465\\-175.1369\\-31\\31.83465\\-182.6369\\-31\\31.39411\\-183.1369\\-31\\31.33465\\-185.1369\\-31\\30.83465\\-185.6369\\-31\\30.83465\\-187.1369\\-31\\30.33465\\-187.6369\\-31\\30.33465\\-188.6369\\-31\\29.83465\\-189.1369\\-31\\29.83465\\-189.6369\\-31\\29.33465\\-190.1369\\-31\\29.33465\\-190.6369\\-31\\28.83465\\-191.1369\\-31\\28.83465\\-191.6369\\-31\\28.33465\\-192.1369\\-31\\28.33465\\-192.6369\\-31\\27.33465\\-193.6369\\-31\\27.33465\\-194.1369\\-31\\25.83465\\-195.6369\\-31\\25.83465\\-196.1369\\-31\\22.08465\\-199.8869\\-31\\21.58465\\-199.8869\\-31\\19.58465\\-201.8869\\-31\\19.08465\\-201.8869\\-31\\18.58465\\-202.3869\\-31\\18.08465\\-202.3869\\-31\\17.58465\\-202.8869\\-31\\17.08465\\-202.8869\\-31\\16.58465\\-203.3869\\-31\\16.08465\\-203.3869\\-31\\15.58465\\-203.8869\\-31\\15.08465\\-203.8869\\-31\\14.58465\\-204.3274\\-31\\13.58465\\-204.3869\\-31\\13.08465\\-204.8274\\-31\\11.58465\\-204.8869\\-31\\11.08465\\-205.3274\\-31\\8.084647\\-205.3869\\-31\\7.584647\\-205.8274\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "144"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "16"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.415353\\-205.8869\\-29\\-8.915353\\-205.3869\\-29\\-10.41535\\-205.3869\\-29\\-10.91535\\-204.8869\\-29\\-12.41535\\-204.8869\\-29\\-12.91535\\-204.3869\\-29\\-13.41535\\-204.3869\\-29\\-13.91535\\-203.8869\\-29\\-14.41535\\-203.8869\\-29\\-14.91535\\-203.3869\\-29\\-15.41535\\-203.3869\\-29\\-15.91535\\-202.8869\\-29\\-16.41535\\-202.8869\\-29\\-16.91535\\-202.3869\\-29\\-17.41535\\-202.3869\\-29\\-18.41535\\-201.3869\\-29\\-18.91535\\-201.3869\\-29\\-21.41535\\-198.9464\\-29\\-21.91535\\-198.8869\\-29\\-23.16535\\-197.6369\\-29\\-23.22482\\-197.1369\\-29\\-25.66535\\-194.6369\\-29\\-25.66535\\-194.1369\\-29\\-26.66535\\-193.1369\\-29\\-26.66535\\-192.6369\\-29\\-27.16535\\-192.1369\\-29\\-27.16535\\-191.6369\\-29\\-27.66535\\-191.1369\\-29\\-27.66535\\-190.6369\\-29\\-28.16535\\-190.1369\\-29\\-28.16535\\-189.6369\\-29\\-28.66535\\-189.1369\\-29\\-28.72482\\-188.1369\\-29\\-29.16535\\-187.6369\\-29\\-29.22482\\-186.6369\\-29\\-29.66535\\-186.1369\\-29\\-29.72482\\-184.6369\\-29\\-30.16535\\-184.1369\\-29\\-30.22482\\-180.6369\\-29\\-30.66535\\-180.1369\\-29\\-30.66535\\-178.1369\\-29\\-30.22482\\-177.6369\\-29\\-30.16535\\-174.6369\\-29\\-29.72482\\-174.1369\\-29\\-29.66535\\-172.6369\\-29\\-29.16535\\-172.1369\\-29\\-29.16535\\-171.1369\\-29\\-28.66535\\-170.6369\\-29\\-28.66535\\-170.1369\\-29\\-28.16535\\-169.1369\\-29\\-27.66535\\-168.6369\\-29\\-27.66535\\-168.1369\\-29\\-26.22482\\-166.6369\\-29\\-26.16535\\-166.1369\\-29\\-23.41535\\-163.3869\\-29\\-22.91535\\-163.3274\\-29\\-21.91535\\-162.3869\\-29\\-21.41535\\-162.3274\\-29\\-20.41535\\-161.3869\\-29\\-19.91535\\-161.3869\\-29\\-19.41535\\-160.8869\\-29\\-18.41535\\-160.8274\\-29\\-16.91535\\-159.8869\\-29\\-15.91535\\-159.8869\\-29\\-15.41535\\-159.3869\\-29\\-12.91535\\-159.3274\\-29\\-12.41535\\-158.8869\\-29\\-8.415353\\-158.8274\\-29\\-7.915353\\-158.3869\\-29\\7.584647\\-158.3869\\-29\\8.084647\\-158.8274\\-29\\9.084647\\-158.8869\\-29\\12.58465\\-158.8869\\-29\\13.08465\\-159.3274\\-29\\15.58465\\-159.3869\\-29\\16.08465\\-159.8274\\-29\\17.58465\\-159.8869\\-29\\18.08465\\-160.3869\\-29\\19.08465\\-160.3869\\-29\\19.58465\\-160.8869\\-29\\20.08465\\-160.8869\\-29\\20.58465\\-161.3869\\-29\\21.08465\\-161.3869\\-29\\21.58465\\-161.8869\\-29\\22.08465\\-161.8869\\-29\\23.08465\\-162.8274\\-29\\23.58465\\-162.8869\\-29\\25.08465\\-164.3274\\-29\\25.58465\\-164.3869\\-29\\26.83465\\-165.6369\\-29\\26.89411\\-166.1369\\-29\\28.33465\\-167.6369\\-29\\28.39411\\-168.1369\\-29\\29.33465\\-169.1369\\-29\\29.33465\\-169.6369\\-29\\29.83465\\-170.1369\\-29\\29.89411\\-171.1369\\-29\\30.33465\\-171.6369\\-29\\30.33465\\-172.1369\\-29\\30.83465\\-172.6369\\-29\\30.89411\\-174.1369\\-29\\31.33465\\-174.6369\\-29\\31.39411\\-177.1369\\-29\\31.83465\\-177.6369\\-29\\31.83465\\-180.1369\\-29\\31.39411\\-180.6369\\-29\\31.33465\\-184.1369\\-29\\30.89411\\-184.6369\\-29\\30.83465\\-186.1369\\-29\\30.39411\\-186.6369\\-29\\30.33465\\-188.1369\\-29\\29.83465\\-188.6369\\-29\\29.83465\\-189.1369\\-29\\29.33465\\-189.6369\\-29\\29.33465\\-190.1369\\-29\\28.83465\\-190.6369\\-29\\28.83465\\-191.1369\\-29\\28.33465\\-191.6369\\-29\\28.33465\\-192.1369\\-29\\27.83465\\-192.6369\\-29\\27.83465\\-193.1369\\-29\\26.89411\\-194.1369\\-29\\26.83465\\-194.6369\\-29\\25.39411\\-196.1369\\-29\\25.33465\\-196.6369\\-29\\22.08465\\-199.8869\\-29\\21.58465\\-199.8869\\-29\\19.58465\\-201.8869\\-29\\19.08465\\-201.8869\\-29\\18.58465\\-202.3869\\-29\\18.08465\\-202.3869\\-29\\17.58465\\-202.8869\\-29\\17.08465\\-202.8869\\-29\\16.58465\\-203.3869\\-29\\16.08465\\-203.3869\\-29\\15.58465\\-203.8869\\-29\\15.08465\\-203.8869\\-29\\14.58465\\-204.3869\\-29\\14.08465\\-204.3869\\-29\\13.58465\\-204.8869\\-29\\12.08465\\-204.8869\\-29\\11.58465\\-205.3869\\-29\\10.08465\\-205.3869\\-29\\9.584647\\-205.8869\\-29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "128"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-5.415353\\-206.3869\\-27\\-5.915353\\-205.8869\\-27\\-8.415353\\-205.8869\\-27\\-8.915353\\-205.3869\\-27\\-10.41535\\-205.3869\\-27\\-10.91535\\-204.8869\\-27\\-12.41535\\-204.8869\\-27\\-12.91535\\-204.3869\\-27\\-13.41535\\-204.3869\\-27\\-13.91535\\-203.8869\\-27\\-14.41535\\-203.8869\\-27\\-14.91535\\-203.3869\\-27\\-15.41535\\-203.3869\\-27\\-15.91535\\-202.8869\\-27\\-16.41535\\-202.8869\\-27\\-16.91535\\-202.3869\\-27\\-17.41535\\-202.3869\\-27\\-18.91535\\-200.9464\\-27\\-19.41535\\-200.8869\\-27\\-24.16535\\-196.1369\\-27\\-24.22482\\-195.6369\\-27\\-25.66535\\-194.1369\\-27\\-26.22482\\-192.6369\\-27\\-27.16535\\-191.6369\\-27\\-27.16535\\-191.1369\\-27\\-27.66535\\-190.6369\\-27\\-27.72482\\-189.6369\\-27\\-28.66535\\-188.1369\\-27\\-28.72482\\-187.1369\\-27\\-29.16535\\-186.6369\\-27\\-29.22482\\-185.1369\\-27\\-29.66535\\-184.6369\\-27\\-29.72482\\-181.6369\\-27\\-30.16535\\-181.1369\\-27\\-30.16535\\-177.6369\\-27\\-29.72482\\-177.1369\\-27\\-29.66535\\-174.1369\\-27\\-29.22482\\-173.6369\\-27\\-29.16535\\-172.6369\\-27\\-28.72482\\-172.1369\\-27\\-28.66535\\-171.1369\\-27\\-27.72482\\-169.6369\\-27\\-27.66535\\-169.1369\\-27\\-26.72482\\-168.1369\\-27\\-26.66535\\-167.6369\\-27\\-25.72482\\-166.6369\\-27\\-25.66535\\-166.1369\\-27\\-23.41535\\-163.8869\\-27\\-22.91535\\-163.8274\\-27\\-21.91535\\-162.8869\\-27\\-21.41535\\-162.8274\\-27\\-20.41535\\-161.8869\\-27\\-19.91535\\-161.8869\\-27\\-19.41535\\-161.3869\\-27\\-18.91535\\-161.3869\\-27\\-18.41535\\-160.8869\\-27\\-17.91535\\-160.8869\\-27\\-17.41535\\-160.3869\\-27\\-16.41535\\-160.3869\\-27\\-15.91535\\-159.8869\\-27\\-14.41535\\-159.8274\\-27\\-13.91535\\-159.3869\\-27\\-10.91535\\-159.3274\\-27\\-10.41535\\-158.8869\\-27\\10.08465\\-158.8869\\-27\\10.58465\\-159.3274\\-27\\14.08465\\-159.3869\\-27\\14.58465\\-159.8274\\-27\\16.08465\\-159.8869\\-27\\16.58465\\-160.3274\\-27\\18.08465\\-160.3869\\-27\\18.58465\\-160.8869\\-27\\19.08465\\-160.8869\\-27\\22.08465\\-162.3869\\-27\\23.08465\\-163.3274\\-27\\23.58465\\-163.3869\\-27\\24.39411\\-164.1369\\-27\\27.83465\\-167.6369\\-27\\27.89411\\-168.1369\\-27\\28.83465\\-169.1369\\-27\\28.83465\\-169.6369\\-27\\29.33465\\-170.1369\\-27\\29.33465\\-170.6369\\-27\\29.83465\\-171.1369\\-27\\29.89411\\-172.1369\\-27\\30.33465\\-172.6369\\-27\\30.39411\\-173.6369\\-27\\30.83465\\-174.1369\\-27\\30.89411\\-176.6369\\-27\\31.33465\\-177.1369\\-27\\31.33465\\-181.1369\\-27\\30.89411\\-181.6369\\-27\\30.83465\\-184.6369\\-27\\30.39411\\-185.1369\\-27\\30.33465\\-186.6369\\-27\\29.89411\\-187.1369\\-27\\29.83465\\-188.1369\\-27\\29.39411\\-188.6369\\-27\\29.33465\\-189.6369\\-27\\28.83465\\-190.1369\\-27\\28.83465\\-190.6369\\-27\\28.33465\\-191.1369\\-27\\28.33465\\-191.6369\\-27\\27.83465\\-192.1369\\-27\\27.83465\\-192.6369\\-27\\26.89411\\-193.6369\\-27\\26.83465\\-194.1369\\-27\\25.89411\\-195.1369\\-27\\25.83465\\-195.6369\\-27\\20.08465\\-201.3869\\-27\\19.58465\\-201.3869\\-27\\18.58465\\-202.3869\\-27\\18.08465\\-202.3869\\-27\\17.58465\\-202.8869\\-27\\17.08465\\-202.8869\\-27\\16.58465\\-203.3869\\-27\\16.08465\\-203.3869\\-27\\15.58465\\-203.8869\\-27\\15.08465\\-203.8869\\-27\\14.58465\\-204.3869\\-27\\14.08465\\-204.3869\\-27\\13.58465\\-204.8869\\-27\\12.58465\\-204.8869\\-27\\12.08465\\-205.3869\\-27\\10.58465\\-205.3869\\-27\\10.08465\\-205.8869\\-27\\7.584647\\-205.8869\\-27\\7.084647\\-206.3869\\-27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "120"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-7.915353\\-205.8869\\-25\\-8.415353\\-205.3869\\-25\\-10.41535\\-205.3869\\-25\\-10.91535\\-204.8869\\-25\\-11.91535\\-204.8869\\-25\\-12.41535\\-204.3869\\-25\\-12.91535\\-204.3869\\-25\\-14.41535\\-203.4464\\-25\\-15.91535\\-202.8869\\-25\\-16.41535\\-202.3869\\-25\\-16.91535\\-202.3869\\-25\\-18.41535\\-200.9464\\-25\\-18.91535\\-200.8869\\-25\\-22.41535\\-197.4464\\-25\\-23.66535\\-196.1369\\-25\\-23.72482\\-195.6369\\-25\\-24.66535\\-194.6369\\-25\\-24.72482\\-194.1369\\-25\\-25.66535\\-193.1369\\-25\\-26.22482\\-191.6369\\-25\\-26.66535\\-191.1369\\-25\\-27.22482\\-189.6369\\-25\\-27.66535\\-189.1369\\-25\\-27.72482\\-188.1369\\-25\\-28.16535\\-187.6369\\-25\\-28.22482\\-186.6369\\-25\\-28.66535\\-186.1369\\-25\\-28.72482\\-185.1369\\-25\\-29.16535\\-184.6369\\-25\\-29.22482\\-181.1369\\-25\\-29.66535\\-180.6369\\-25\\-29.66535\\-178.1369\\-25\\-29.22482\\-177.6369\\-25\\-29.16535\\-174.6369\\-25\\-28.72482\\-174.1369\\-25\\-28.66535\\-172.6369\\-25\\-27.66535\\-170.6369\\-25\\-27.22482\\-170.1369\\-25\\-26.66535\\-168.6369\\-25\\-25.72482\\-167.6369\\-25\\-25.66535\\-167.1369\\-25\\-23.22482\\-164.6369\\-25\\-22.41535\\-163.8869\\-25\\-21.91535\\-163.8274\\-25\\-20.91535\\-162.8869\\-25\\-20.41535\\-162.8274\\-25\\-19.41535\\-161.8869\\-25\\-18.91535\\-161.8869\\-25\\-18.41535\\-161.3869\\-25\\-17.41535\\-161.3274\\-25\\-15.91535\\-160.3869\\-25\\-14.41535\\-160.3274\\-25\\-13.91535\\-159.8869\\-25\\-11.91535\\-159.8274\\-25\\-11.41535\\-159.3869\\-25\\11.58465\\-159.3869\\-25\\12.08465\\-159.8274\\-25\\14.58465\\-159.8869\\-25\\15.08465\\-160.3274\\-25\\16.58465\\-160.3869\\-25\\17.08465\\-160.8869\\-25\\17.58465\\-160.8869\\-25\\18.08465\\-161.3274\\-25\\19.08465\\-161.3869\\-25\\19.58465\\-161.8869\\-25\\20.08465\\-161.8869\\-25\\21.08465\\-162.3869\\-25\\22.08465\\-163.3274\\-25\\22.58465\\-163.3869\\-25\\23.58465\\-164.3274\\-25\\24.08465\\-164.3869\\-25\\26.33465\\-166.6369\\-25\\26.39411\\-167.1369\\-25\\27.83465\\-168.6369\\-25\\29.33465\\-171.6369\\-25\\29.39411\\-172.6369\\-25\\29.83465\\-173.1369\\-25\\29.89411\\-174.1369\\-25\\30.33465\\-174.6369\\-25\\30.39411\\-177.6369\\-25\\30.83465\\-178.1369\\-25\\30.83465\\-181.1369\\-25\\30.39411\\-181.6369\\-25\\30.33465\\-184.6369\\-25\\29.89411\\-185.1369\\-25\\29.83465\\-186.6369\\-25\\29.39411\\-187.1369\\-25\\29.33465\\-188.1369\\-25\\28.83465\\-188.6369\\-25\\28.83465\\-189.1369\\-25\\28.39411\\-189.6369\\-25\\28.33465\\-190.6369\\-25\\27.83465\\-191.1369\\-25\\27.83465\\-191.6369\\-25\\26.89411\\-192.6369\\-25\\26.33465\\-194.1369\\-25\\25.39411\\-195.1369\\-25\\25.33465\\-195.6369\\-25\\23.39411\\-197.6369\\-25\\23.33465\\-198.1369\\-25\\22.08465\\-199.3869\\-25\\21.58465\\-199.4464\\-25\\19.58465\\-201.3869\\-25\\19.08465\\-201.4464\\-25\\18.08465\\-202.3869\\-25\\17.58465\\-202.4464\\-25\\16.58465\\-203.3869\\-25\\16.08465\\-203.3869\\-25\\15.58465\\-203.8869\\-25\\15.08465\\-203.8869\\-25\\14.58465\\-204.3869\\-25\\13.58465\\-204.4464\\-25\\13.08465\\-204.8869\\-25\\12.08465\\-204.8869\\-25\\11.58465\\-205.3869\\-25\\9.584647\\-205.4464\\-25\\9.084647\\-205.8869\\-25\\5.584647\\-205.8869\\-25\\5.084647\\-205.9464\\-25\\-4.915353\\-205.9464\\-25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "103"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.915353\\-205.3869\\-23\\-9.415353\\-204.9464\\-23\\-10.91535\\-204.8869\\-23\\-11.41535\\-204.3869\\-23\\-11.91535\\-204.3869\\-23\\-13.41535\\-203.4464\\-23\\-14.41535\\-203.3869\\-23\\-15.41535\\-202.4464\\-23\\-15.91535\\-202.3869\\-23\\-16.91535\\-201.4464\\-23\\-17.41535\\-201.3869\\-23\\-18.41535\\-200.4464\\-23\\-18.91535\\-200.3869\\-23\\-22.16535\\-197.1369\\-23\\-22.22482\\-196.6369\\-23\\-23.66535\\-195.1369\\-23\\-23.72482\\-194.6369\\-23\\-24.66535\\-193.6369\\-23\\-25.22482\\-192.1369\\-23\\-26.16535\\-191.1369\\-23\\-26.22482\\-190.1369\\-23\\-27.16535\\-188.6369\\-23\\-27.22482\\-187.6369\\-23\\-27.66535\\-187.1369\\-23\\-27.72482\\-186.1369\\-23\\-28.16535\\-185.6369\\-23\\-28.22482\\-183.6369\\-23\\-28.66535\\-183.1369\\-23\\-28.66535\\-175.6369\\-23\\-28.22482\\-175.1369\\-23\\-28.16535\\-173.6369\\-23\\-27.72482\\-173.1369\\-23\\-27.66535\\-172.1369\\-23\\-26.22482\\-169.6369\\-23\\-26.16535\\-169.1369\\-23\\-25.22482\\-168.1369\\-23\\-25.16535\\-167.6369\\-23\\-24.41535\\-166.8274\\-23\\-21.41535\\-163.8869\\-23\\-20.91535\\-163.8274\\-23\\-19.91535\\-162.8869\\-23\\-19.41535\\-162.8274\\-23\\-16.91535\\-161.3869\\-23\\-15.91535\\-161.3274\\-23\\-15.41535\\-160.8869\\-23\\-14.41535\\-160.8274\\-23\\-13.91535\\-160.3869\\-23\\-11.91535\\-160.3274\\-23\\-11.41535\\-159.8869\\-23\\-7.915353\\-159.8274\\-23\\7.584647\\-159.8274\\-23\\8.084647\\-159.8869\\-23\\12.08465\\-159.8869\\-23\\12.58465\\-160.3274\\-23\\14.08465\\-160.3869\\-23\\14.58465\\-160.8274\\-23\\16.08465\\-160.8869\\-23\\16.58465\\-161.3274\\-23\\17.58465\\-161.3869\\-23\\21.58465\\-163.3869\\-23\\23.08465\\-164.8274\\-23\\23.58465\\-164.8869\\-23\\25.83465\\-167.1369\\-23\\25.89411\\-167.6369\\-23\\26.83465\\-168.6369\\-23\\27.39411\\-170.1369\\-23\\27.83465\\-170.6369\\-23\\28.39411\\-172.1369\\-23\\29.33465\\-173.6369\\-23\\29.39411\\-175.6369\\-23\\29.83465\\-176.1369\\-23\\29.83465\\-183.1369\\-23\\29.39411\\-183.6369\\-23\\29.33465\\-185.6369\\-23\\28.89411\\-186.1369\\-23\\28.83465\\-187.1369\\-23\\28.39411\\-187.6369\\-23\\28.33465\\-188.6369\\-23\\27.39411\\-190.1369\\-23\\27.33465\\-191.1369\\-23\\26.83465\\-192.1369\\-23\\25.89411\\-193.1369\\-23\\25.33465\\-194.6369\\-23\\23.89411\\-196.1369\\-23\\23.83465\\-196.6369\\-23\\22.58465\\-197.9464\\-23\\19.58465\\-200.8869\\-23\\19.08465\\-200.9464\\-23\\18.08465\\-201.8869\\-23\\17.58465\\-201.9464\\-23\\16.58465\\-202.8869\\-23\\16.08465\\-202.8869\\-23\\15.58465\\-203.3869\\-23\\15.08465\\-203.3869\\-23\\14.58465\\-203.8869\\-23\\14.08465\\-203.8869\\-23\\13.58465\\-204.3869\\-23\\12.58465\\-204.4464\\-23\\12.08465\\-204.8869\\-23\\10.58465\\-204.9464\\-23\\10.08465\\-205.3869\\-23\\7.084647\\-205.4464\\-23\\-5.915353\\-205.4464\\-23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "99"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.415353\\-204.8869\\-21\\-8.915353\\-204.4464\\-21\\-10.41535\\-204.3869\\-21\\-10.91535\\-203.9464\\-21\\-11.91535\\-203.8869\\-21\\-12.41535\\-203.4464\\-21\\-14.91535\\-202.3869\\-21\\-15.91535\\-201.4464\\-21\\-16.41535\\-201.3869\\-21\\-18.41535\\-199.4464\\-21\\-18.91535\\-199.3869\\-21\\-21.16535\\-197.1369\\-21\\-21.22482\\-196.6369\\-21\\-22.66535\\-195.1369\\-21\\-22.72482\\-194.6369\\-21\\-23.66535\\-193.6369\\-21\\-24.22482\\-192.1369\\-21\\-25.16535\\-191.1369\\-21\\-25.66535\\-190.1369\\-21\\-25.72482\\-189.1369\\-21\\-26.16535\\-188.6369\\-21\\-26.22482\\-187.6369\\-21\\-26.66535\\-187.1369\\-21\\-26.72482\\-186.1369\\-21\\-27.16535\\-185.6369\\-21\\-27.22482\\-184.1369\\-21\\-27.66535\\-183.6369\\-21\\-27.72482\\-181.1369\\-21\\-27.72482\\-177.6369\\-21\\-27.66535\\-175.6369\\-21\\-27.22482\\-175.1369\\-21\\-27.16535\\-173.6369\\-21\\-26.22482\\-172.1369\\-21\\-26.16535\\-171.1369\\-21\\-25.66535\\-170.1369\\-21\\-24.72482\\-169.1369\\-21\\-24.66535\\-168.6369\\-21\\-23.72482\\-167.6369\\-21\\-23.66535\\-167.1369\\-21\\-22.41535\\-165.8869\\-21\\-21.91535\\-165.8274\\-21\\-19.91535\\-163.8869\\-21\\-19.41535\\-163.8274\\-21\\-17.91535\\-162.8869\\-21\\-15.91535\\-161.8869\\-21\\-14.91535\\-161.8274\\-21\\-14.41535\\-161.3869\\-21\\-13.41535\\-161.3274\\-21\\-12.91535\\-160.8869\\-21\\-10.91535\\-160.8274\\-21\\-10.41535\\-160.3869\\-21\\10.58465\\-160.3869\\-21\\11.08465\\-160.8274\\-21\\13.58465\\-160.8869\\-21\\14.08465\\-161.3274\\-21\\15.08465\\-161.3869\\-21\\15.58465\\-161.8274\\-21\\16.58465\\-161.8869\\-21\\17.08465\\-162.3274\\-21\\18.08465\\-162.3869\\-21\\19.58465\\-163.3274\\-21\\20.08465\\-163.3869\\-21\\21.08465\\-164.3274\\-21\\21.58465\\-164.3869\\-21\\25.58465\\-168.3274\\-21\\26.39411\\-170.1369\\-21\\27.83465\\-172.6369\\-21\\27.89411\\-173.6369\\-21\\28.33465\\-174.1369\\-21\\28.39411\\-175.1369\\-21\\28.83465\\-175.6369\\-21\\28.89411\\-177.6369\\-21\\28.89411\\-181.6369\\-21\\28.83465\\-183.6369\\-21\\28.39411\\-184.1369\\-21\\28.33465\\-185.6369\\-21\\27.89411\\-186.1369\\-21\\27.83465\\-187.6369\\-21\\26.89411\\-189.1369\\-21\\26.83465\\-190.1369\\-21\\25.33465\\-193.1369\\-21\\24.39411\\-194.1369\\-21\\24.33465\\-194.6369\\-21\\22.89411\\-196.1369\\-21\\22.83465\\-196.6369\\-21\\22.08465\\-197.4464\\-21\\19.08465\\-200.3869\\-21\\18.58465\\-200.4464\\-21\\17.08465\\-201.8869\\-21\\16.58465\\-201.9464\\-21\\15.08465\\-202.8869\\-21\\13.58465\\-203.4464\\-21\\13.08465\\-203.8869\\-21\\12.08465\\-203.9464\\-21\\11.58465\\-204.3869\\-21\\10.58465\\-204.4464\\-21\\10.08465\\-204.8869\\-21\\8.084647\\-204.9464\\-21\\-6.915353\\-204.9464\\-21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "101"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.915353\\-204.3869\\-19\\-7.415353\\-203.9464\\-19\\-9.415353\\-203.8869\\-19\\-9.915353\\-203.4464\\-19\\-10.91535\\-203.3869\\-19\\-13.41535\\-201.9464\\-19\\-13.91535\\-201.8869\\-19\\-14.91535\\-200.9464\\-19\\-15.41535\\-200.8869\\-19\\-16.91535\\-199.4464\\-19\\-17.41535\\-199.3869\\-19\\-20.16535\\-196.6369\\-19\\-20.22482\\-196.1369\\-19\\-22.16535\\-194.1369\\-19\\-22.22482\\-193.6369\\-19\\-23.16535\\-192.6369\\-19\\-23.22482\\-192.1369\\-19\\-24.66535\\-189.6369\\-19\\-24.72482\\-188.6369\\-19\\-25.16535\\-188.1369\\-19\\-25.22482\\-187.1369\\-19\\-25.66535\\-186.6369\\-19\\-25.72482\\-185.6369\\-19\\-26.16535\\-185.1369\\-19\\-26.22482\\-183.1369\\-19\\-26.66535\\-182.6369\\-19\\-26.66535\\-176.6369\\-19\\-26.22482\\-176.1369\\-19\\-26.16535\\-174.6369\\-19\\-25.72482\\-174.1369\\-19\\-25.66535\\-173.1369\\-19\\-25.22482\\-172.6369\\-19\\-25.16535\\-171.6369\\-19\\-24.66535\\-170.6369\\-19\\-23.72482\\-169.6369\\-19\\-23.41535\\-168.8274\\-19\\-19.72482\\-165.1369\\-19\\-18.91535\\-164.8274\\-19\\-17.91535\\-163.8869\\-19\\-17.41535\\-163.8274\\-19\\-15.91535\\-162.8869\\-19\\-14.91535\\-162.8274\\-19\\-14.41535\\-162.3869\\-19\\-13.41535\\-162.3274\\-19\\-12.91535\\-161.8869\\-19\\-11.41535\\-161.8274\\-19\\-10.91535\\-161.3869\\-19\\-8.915353\\-161.3274\\-19\\10.08465\\-161.3274\\-19\\11.58465\\-161.3869\\-19\\12.08465\\-161.8274\\-19\\13.58465\\-161.8869\\-19\\14.08465\\-162.3274\\-19\\15.08465\\-162.3869\\-19\\15.58465\\-162.8274\\-19\\16.58465\\-162.8869\\-19\\18.08465\\-163.8274\\-19\\18.58465\\-163.8274\\-19\\19.08465\\-164.3274\\-19\\19.58465\\-164.3869\\-19\\20.58465\\-165.3274\\-19\\21.39411\\-165.6369\\-19\\24.08465\\-168.3274\\-19\\24.39411\\-169.1369\\-19\\25.39411\\-170.1369\\-19\\25.39411\\-170.6369\\-19\\25.89411\\-171.1369\\-19\\25.89411\\-171.6369\\-19\\26.39411\\-172.1369\\-19\\26.39411\\-172.6369\\-19\\26.83465\\-173.1369\\-19\\26.89411\\-174.1369\\-19\\27.33465\\-174.6369\\-19\\27.39411\\-176.1369\\-19\\27.83465\\-176.6369\\-19\\27.83465\\-182.6369\\-19\\27.39411\\-183.1369\\-19\\27.33465\\-185.1369\\-19\\26.89411\\-185.6369\\-19\\26.83465\\-187.1369\\-19\\26.39411\\-187.6369\\-19\\26.33465\\-188.6369\\-19\\25.33465\\-190.6369\\-19\\24.89411\\-191.1369\\-19\\24.89411\\-191.6369\\-19\\24.39411\\-192.1369\\-19\\23.83465\\-193.6369\\-19\\22.39411\\-195.1369\\-19\\22.08465\\-195.9464\\-19\\17.89411\\-200.1369\\-19\\17.08465\\-200.4464\\-19\\16.08465\\-201.3869\\-19\\15.58465\\-201.4464\\-19\\14.58465\\-202.3869\\-19\\13.58465\\-202.8869\\-19\\12.58465\\-202.9464\\-19\\12.08465\\-203.3869\\-19\\11.08465\\-203.4464\\-19\\10.58465\\-203.8869\\-19\\8.584647\\-203.9464\\-19\\8.084647\\-204.3869\\-19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "103"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-5.915353\\-203.3869\\-17\\-6.415353\\-202.9464\\-17\\-8.415353\\-202.8869\\-17\\-8.915353\\-202.4464\\-17\\-9.915353\\-202.3869\\-17\\-10.41535\\-201.9464\\-17\\-11.41535\\-201.8869\\-17\\-13.41535\\-200.8869\\-17\\-14.91535\\-199.4464\\-17\\-15.41535\\-199.4464\\-17\\-19.91535\\-194.9464\\-17\\-20.22482\\-194.1369\\-17\\-21.22482\\-193.1369\\-17\\-21.22482\\-192.6369\\-17\\-22.22482\\-191.6369\\-17\\-22.22482\\-191.1369\\-17\\-22.72482\\-190.6369\\-17\\-22.72482\\-190.1369\\-17\\-23.66535\\-188.6369\\-17\\-23.72482\\-187.6369\\-17\\-24.16535\\-187.1369\\-17\\-24.22482\\-185.6369\\-17\\-24.66535\\-185.1369\\-17\\-24.72482\\-183.6369\\-17\\-25.16535\\-183.1369\\-17\\-25.22482\\-182.1369\\-17\\-25.22482\\-177.6369\\-17\\-25.16535\\-176.6369\\-17\\-24.72482\\-176.1369\\-17\\-24.72482\\-174.6369\\-17\\-24.22482\\-174.1369\\-17\\-24.22482\\-173.1369\\-17\\-23.72482\\-172.6369\\-17\\-23.72482\\-172.1369\\-17\\-23.22482\\-171.6369\\-17\\-23.22482\\-171.1369\\-17\\-22.72482\\-170.6369\\-17\\-22.72482\\-170.1369\\-17\\-17.91535\\-165.3274\\-17\\-17.41535\\-165.3274\\-17\\-16.91535\\-164.8274\\-17\\-16.41535\\-164.8274\\-17\\-15.91535\\-164.3274\\-17\\-15.41535\\-164.3274\\-17\\-14.91535\\-163.8274\\-17\\-14.41535\\-163.8274\\-17\\-13.91535\\-163.3869\\-17\\-12.91535\\-163.3274\\-17\\-12.41535\\-162.8869\\-17\\-10.91535\\-162.8274\\-17\\-10.41535\\-162.3869\\-17\\-8.915353\\-162.3274\\-17\\9.584647\\-162.3274\\-17\\11.08465\\-162.3869\\-17\\11.58465\\-162.8274\\-17\\13.08465\\-162.8869\\-17\\13.58465\\-163.3274\\-17\\14.58465\\-163.3869\\-17\\15.08465\\-163.8274\\-17\\16.08465\\-163.8869\\-17\\17.58465\\-164.8274\\-17\\18.08465\\-164.8869\\-17\\19.08465\\-165.8274\\-17\\19.89411\\-166.1369\\-17\\23.39411\\-169.6369\\-17\\23.39411\\-170.1369\\-17\\24.39411\\-171.1369\\-17\\24.39411\\-171.6369\\-17\\24.89411\\-172.1369\\-17\\24.89411\\-172.6369\\-17\\25.39411\\-173.1369\\-17\\25.39411\\-174.1369\\-17\\25.89411\\-174.6369\\-17\\25.89411\\-176.1369\\-17\\26.33465\\-176.6369\\-17\\26.39411\\-177.6369\\-17\\26.39411\\-182.6369\\-17\\25.89411\\-183.6369\\-17\\25.83465\\-185.6369\\-17\\25.39411\\-186.1369\\-17\\25.39411\\-187.1369\\-17\\24.89411\\-187.6369\\-17\\24.89411\\-188.6369\\-17\\24.39411\\-189.1369\\-17\\24.33465\\-190.1369\\-17\\23.83465\\-191.1369\\-17\\22.89411\\-192.1369\\-17\\22.89411\\-192.6369\\-17\\21.89411\\-193.6369\\-17\\21.89411\\-194.1369\\-17\\15.89411\\-200.1369\\-17\\15.08465\\-200.4464\\-17\\14.58465\\-200.9464\\-17\\14.08465\\-200.9464\\-17\\13.58465\\-201.4464\\-17\\13.08465\\-201.4464\\-17\\12.58465\\-201.9464\\-17\\12.08465\\-201.9464\\-17\\11.58465\\-202.3869\\-17\\10.58465\\-202.4464\\-17\\10.08465\\-202.8869\\-17\\8.084647\\-202.9464\\-17\\7.584647\\-203.3869\\-17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "93"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.915353\\-200.9464\\-15\\-9.915353\\-200.9464\\-15\\-10.41535\\-200.4464\\-15\\-11.41535\\-200.3869\\-15\\-12.41535\\-199.4464\\-15\\-12.91535\\-199.4464\\-15\\-14.41535\\-197.9464\\-15\\-14.91535\\-197.9464\\-15\\-18.22482\\-194.6369\\-15\\-18.22482\\-194.1369\\-15\\-20.22482\\-192.1369\\-15\\-20.22482\\-191.6369\\-15\\-20.72482\\-191.1369\\-15\\-20.72482\\-190.6369\\-15\\-21.22482\\-190.1369\\-15\\-21.22482\\-189.6369\\-15\\-21.72482\\-189.1369\\-15\\-21.72482\\-188.6369\\-15\\-22.22482\\-188.1369\\-15\\-22.22482\\-187.1369\\-15\\-22.72482\\-186.6369\\-15\\-22.72482\\-185.1369\\-15\\-23.22482\\-184.6369\\-15\\-23.22482\\-176.1369\\-15\\-22.72482\\-175.6369\\-15\\-22.72482\\-174.1369\\-15\\-22.22482\\-173.6369\\-15\\-22.22482\\-172.6369\\-15\\-21.22482\\-171.6369\\-15\\-21.22482\\-171.1369\\-15\\-20.72482\\-170.6369\\-15\\-20.72482\\-170.1369\\-15\\-17.41535\\-166.8274\\-15\\-16.91535\\-166.8274\\-15\\-15.91535\\-165.8274\\-15\\-15.41535\\-165.8274\\-15\\-14.91535\\-165.3274\\-15\\-14.41535\\-165.3274\\-15\\-13.91535\\-164.8869\\-15\\-12.91535\\-164.8274\\-15\\-12.41535\\-164.3869\\-15\\-11.41535\\-164.3274\\-15\\-10.91535\\-163.8869\\-15\\-9.415353\\-163.8274\\-15\\-8.915353\\-163.3869\\-15\\-7.915353\\-163.3274\\-15\\8.584647\\-163.3274\\-15\\9.584647\\-163.3869\\-15\\10.08465\\-163.8274\\-15\\11.58465\\-163.8869\\-15\\12.08465\\-164.3274\\-15\\13.08465\\-164.3274\\-15\\13.58465\\-164.8274\\-15\\14.58465\\-164.8274\\-15\\15.08465\\-165.3274\\-15\\16.08465\\-165.3869\\-15\\17.08465\\-165.8869\\-15\\18.58465\\-167.3274\\-15\\19.08465\\-167.3274\\-15\\21.39411\\-169.6369\\-15\\21.39411\\-170.1369\\-15\\22.39411\\-171.1369\\-15\\22.39411\\-171.6369\\-15\\22.89411\\-172.1369\\-15\\22.89411\\-172.6369\\-15\\23.39411\\-173.1369\\-15\\23.39411\\-173.6369\\-15\\23.89411\\-174.1369\\-15\\23.89411\\-175.1369\\-15\\24.39411\\-175.6369\\-15\\24.39411\\-184.6369\\-15\\23.89411\\-185.6369\\-15\\23.83465\\-187.1369\\-15\\23.39411\\-187.6369\\-15\\23.39411\\-188.1369\\-15\\22.89411\\-188.6369\\-15\\22.89411\\-189.6369\\-15\\22.39411\\-190.1369\\-15\\22.39411\\-190.6369\\-15\\21.39411\\-191.6369\\-15\\21.39411\\-192.1369\\-15\\20.39411\\-193.1369\\-15\\20.39411\\-193.6369\\-15\\15.08465\\-198.9464\\-15\\14.58465\\-198.9464\\-15\\13.58465\\-199.9464\\-15\\13.08465\\-199.9464\\-15\\12.58465\\-200.4464\\-15\\12.08465\\-200.4464\\-15\\11.58465\\-200.9464\\-15\\10.58465\\-200.9464\\-15\\9.584647\\-201.4464\\-15\\-7.915353\\-201.4464\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "90"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-7.915353\\-199.4464\\-13\\-8.415353\\-198.9464\\-13\\-9.415353\\-198.9464\\-13\\-9.915353\\-198.4464\\-13\\-10.41535\\-198.4464\\-13\\-10.91535\\-197.9464\\-13\\-11.41535\\-197.9464\\-13\\-11.91535\\-197.4464\\-13\\-12.41535\\-197.4464\\-13\\-13.91535\\-195.9464\\-13\\-14.41535\\-195.9464\\-13\\-16.22482\\-194.1369\\-13\\-16.22482\\-193.6369\\-13\\-17.72482\\-192.1369\\-13\\-17.72482\\-191.6369\\-13\\-18.72482\\-190.6369\\-13\\-18.72482\\-190.1369\\-13\\-19.22482\\-189.6369\\-13\\-19.22482\\-189.1369\\-13\\-19.72482\\-188.6369\\-13\\-19.72482\\-188.1369\\-13\\-20.22482\\-187.6369\\-13\\-20.22482\\-186.6369\\-13\\-20.72482\\-186.1369\\-13\\-20.72482\\-184.6369\\-13\\-21.22482\\-184.1369\\-13\\-21.22482\\-176.6369\\-13\\-20.72482\\-176.1369\\-13\\-20.72482\\-174.6369\\-13\\-20.22482\\-174.1369\\-13\\-20.22482\\-173.6369\\-13\\-19.72482\\-173.1369\\-13\\-19.72482\\-172.6369\\-13\\-19.22482\\-172.1369\\-13\\-19.22482\\-171.6369\\-13\\-15.41535\\-167.8274\\-13\\-14.91535\\-167.8274\\-13\\-13.91535\\-166.8274\\-13\\-13.41535\\-166.8274\\-13\\-12.91535\\-166.3274\\-13\\-11.91535\\-166.3274\\-13\\-11.41535\\-165.8274\\-13\\-10.41535\\-165.8274\\-13\\-9.915353\\-165.3274\\-13\\-7.915353\\-165.3274\\-13\\-7.415353\\-164.8274\\-13\\8.084647\\-164.8274\\-13\\9.084647\\-165.3274\\-13\\11.08465\\-165.3274\\-13\\11.58465\\-165.8274\\-13\\12.58465\\-165.8274\\-13\\13.08465\\-166.3274\\-13\\13.58465\\-166.3274\\-13\\14.08465\\-166.8274\\-13\\14.58465\\-166.8274\\-13\\15.08465\\-167.3274\\-13\\15.58465\\-167.3274\\-13\\16.08465\\-167.8274\\-13\\16.58465\\-167.8274\\-13\\20.39411\\-171.6369\\-13\\20.39411\\-172.1369\\-13\\20.89411\\-172.6369\\-13\\20.89411\\-173.1369\\-13\\21.39411\\-173.6369\\-13\\21.39411\\-174.1369\\-13\\21.89411\\-174.6369\\-13\\21.89411\\-176.1369\\-13\\22.39411\\-176.6369\\-13\\22.39411\\-184.1369\\-13\\21.89411\\-184.6369\\-13\\21.89411\\-186.1369\\-13\\21.39411\\-186.6369\\-13\\21.39411\\-187.6369\\-13\\20.89411\\-188.1369\\-13\\20.89411\\-189.1369\\-13\\20.39411\\-189.6369\\-13\\20.39411\\-190.1369\\-13\\19.39411\\-191.1369\\-13\\19.39411\\-191.6369\\-13\\18.39411\\-192.6369\\-13\\18.39411\\-193.1369\\-13\\14.58465\\-196.9464\\-13\\14.08465\\-196.9464\\-13\\13.08465\\-197.9464\\-13\\12.58465\\-197.9464\\-13\\12.08465\\-198.4464\\-13\\11.58465\\-198.4464\\-13\\11.08465\\-198.9464\\-13\\10.08465\\-198.9464\\-13\\9.584647\\-199.4464\\-13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "84"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.915353\\-196.9464\\-11\\-7.415353\\-196.4464\\-11\\-8.415353\\-196.4464\\-11\\-8.915353\\-195.9464\\-11\\-9.415353\\-195.9464\\-11\\-9.915353\\-195.4464\\-11\\-10.41535\\-195.4464\\-11\\-10.91535\\-194.9464\\-11\\-11.41535\\-194.9464\\-11\\-15.72482\\-190.6369\\-11\\-15.72482\\-190.1369\\-11\\-16.22482\\-189.6369\\-11\\-16.22482\\-189.1369\\-11\\-16.72482\\-188.6369\\-11\\-16.72482\\-188.1369\\-11\\-17.22482\\-187.6369\\-11\\-17.22482\\-187.1369\\-11\\-17.72482\\-186.6369\\-11\\-17.72482\\-186.1369\\-11\\-18.22482\\-185.6369\\-11\\-18.22482\\-184.1369\\-11\\-18.72482\\-183.6369\\-11\\-18.72482\\-177.1369\\-11\\-18.22482\\-176.6369\\-11\\-18.22482\\-175.6369\\-11\\-17.72482\\-175.1369\\-11\\-17.72482\\-174.6369\\-11\\-17.22482\\-174.1369\\-11\\-17.22482\\-173.6369\\-11\\-15.72482\\-172.1369\\-11\\-15.72482\\-171.6369\\-11\\-14.41535\\-170.3274\\-11\\-13.91535\\-170.3274\\-11\\-12.91535\\-169.3274\\-11\\-12.41535\\-169.3274\\-11\\-11.91535\\-168.8274\\-11\\-11.41535\\-168.8274\\-11\\-10.91535\\-168.3274\\-11\\-10.41535\\-168.3274\\-11\\-9.915353\\-167.8274\\-11\\-9.415353\\-167.8274\\-11\\-8.915353\\-167.3274\\-11\\-6.415353\\-167.3274\\-11\\-5.915353\\-166.8274\\-11\\7.084647\\-166.8274\\-11\\7.584647\\-167.3274\\-11\\9.584647\\-167.3274\\-11\\10.08465\\-167.8274\\-11\\11.08465\\-167.8274\\-11\\11.58465\\-168.3274\\-11\\12.08465\\-168.3274\\-11\\12.58465\\-168.8274\\-11\\13.08465\\-168.8274\\-11\\13.58465\\-169.3274\\-11\\14.08465\\-169.3274\\-11\\18.39411\\-173.6369\\-11\\18.39411\\-174.1369\\-11\\18.89411\\-174.6369\\-11\\18.89411\\-175.1369\\-11\\19.39411\\-175.6369\\-11\\19.39411\\-176.6369\\-11\\19.89411\\-177.1369\\-11\\19.89411\\-184.1369\\-11\\19.39411\\-184.6369\\-11\\19.39411\\-185.6369\\-11\\18.89411\\-186.1369\\-11\\18.89411\\-187.1369\\-11\\18.39411\\-187.6369\\-11\\18.39411\\-188.1369\\-11\\17.89411\\-188.6369\\-11\\17.89411\\-189.1369\\-11\\17.39411\\-189.6369\\-11\\17.39411\\-190.1369\\-11\\15.89411\\-191.6369\\-11\\15.89411\\-192.1369\\-11\\14.08465\\-193.9464\\-11\\13.58465\\-193.9464\\-11\\12.08465\\-195.4464\\-11\\11.58465\\-195.4464\\-11\\11.08465\\-195.9464\\-11\\10.58465\\-195.9464\\-11\\10.08465\\-196.4464\\-11\\9.084647\\-196.4464\\-11\\8.584647\\-196.9464\\-11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "60"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.915353\\-192.9464\\-9\\-7.415353\\-192.4464\\-9\\-8.415353\\-192.4464\\-9\\-9.415353\\-191.4464\\-9\\-9.915353\\-191.4464\\-9\\-12.72482\\-188.6369\\-9\\-12.72482\\-188.1369\\-9\\-13.72482\\-187.1369\\-9\\-13.72482\\-186.6369\\-9\\-14.22482\\-186.1369\\-9\\-14.22482\\-185.6369\\-9\\-14.72482\\-185.1369\\-9\\-14.72482\\-183.6369\\-9\\-15.22482\\-183.1369\\-9\\-15.22482\\-178.1369\\-9\\-14.72482\\-177.6369\\-9\\-14.72482\\-176.6369\\-9\\-14.22482\\-176.1369\\-9\\-14.22482\\-175.6369\\-9\\-13.72482\\-175.1369\\-9\\-13.72482\\-174.6369\\-9\\-10.91535\\-171.8274\\-9\\-10.41535\\-171.8274\\-9\\-9.915353\\-171.3274\\-9\\-9.415353\\-171.3274\\-9\\-8.915353\\-170.8274\\-9\\-7.915353\\-170.8274\\-9\\-7.415353\\-170.3274\\-9\\-5.415353\\-170.3274\\-9\\-4.915353\\-169.8274\\-9\\6.084647\\-169.8274\\-9\\6.584647\\-170.3274\\-9\\8.584647\\-170.3274\\-9\\9.084647\\-170.8274\\-9\\10.08465\\-170.8274\\-9\\10.58465\\-171.3274\\-9\\11.08465\\-171.3274\\-9\\11.58465\\-171.8274\\-9\\12.08465\\-171.8274\\-9\\14.89411\\-174.6369\\-9\\14.89411\\-175.1369\\-9\\15.39411\\-175.6369\\-9\\15.39411\\-176.1369\\-9\\15.89411\\-176.6369\\-9\\15.89411\\-177.6369\\-9\\16.39411\\-178.1369\\-9\\16.39411\\-183.6369\\-9\\15.89411\\-184.1369\\-9\\15.89411\\-185.1369\\-9\\15.39411\\-185.6369\\-9\\15.39411\\-186.1369\\-9\\14.89411\\-186.6369\\-9\\14.89411\\-187.1369\\-9\\14.39411\\-187.6369\\-9\\14.39411\\-188.1369\\-9\\10.58465\\-191.9464\\-9\\10.08465\\-191.9464\\-9\\9.584647\\-192.4464\\-9\\9.084647\\-192.4464\\-9\\8.584647\\-192.9464\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "27"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-5.415353\\-185.9464\\-7\\-5.915353\\-185.4464\\-7\\-6.415353\\-185.4464\\-7\\-7.724819\\-184.1369\\-7\\-7.724819\\-183.6369\\-7\\-8.224819\\-183.1369\\-7\\-8.224819\\-182.6369\\-7\\-8.724819\\-182.1369\\-7\\-8.724819\\-179.1369\\-7\\-8.224819\\-178.6369\\-7\\-8.224819\\-178.1369\\-7\\-6.415353\\-176.3274\\-7\\-5.415353\\-176.3274\\-7\\-4.915353\\-175.8274\\-7\\6.084647\\-175.8274\\-7\\6.584647\\-176.3274\\-7\\7.584647\\-176.3274\\-7\\9.394114\\-178.1369\\-7\\9.394114\\-178.6369\\-7\\9.894114\\-179.1369\\-7\\9.894114\\-182.6369\\-7\\9.394114\\-183.1369\\-7\\9.394114\\-183.6369\\-7\\7.584647\\-185.4464\\-7\\7.084647\\-185.4464\\-7\\6.584647\\-185.9464\\-7"
+                     }
+                  }
+               ]
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "4"
+            }
+         },
+         {
+            "3006,002a" : {
+               "Name" : "ROIDisplayColor",
+               "Type" : "String",
+               "Value" : "255\\255\\0"
+            },
+            "3006,0040" : {
+               "Name" : "ContourSequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "58"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "0"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "2.118783\\-200.688\\-7\\3.688119\\-200.4978\\-7\\5.064636\\-200.0758\\-7\\6.460264\\-200.0264\\-7\\7.564238\\-199.5488\\-7\\8.963009\\-199.3706\\-7\\9.836956\\-198.8362\\-7\\10.55657\\-198.8968\\-7\\11.28211\\-198.4411\\-7\\12.275\\-198.3316\\-7\\14.16791\\-197.7549\\-7\\15.50114\\-197.832\\-7\\16.29665\\-197.6216\\-7\\17.00278\\-197.7832\\-7\\17.45366\\-198.2698\\-7\\18.59054\\-199.0016\\-7\\19.21973\\-200.6346\\-7\\19.49258\\-202.3157\\-7\\18.92627\\-204.8141\\-7\\18.22073\\-206.092\\-7\\17.54166\\-207.0491\\-7\\15.64322\\-209.0824\\-7\\12.91953\\-210.7655\\-7\\10.07212\\-212.0289\\-7\\8.292524\\-212.4787\\-7\\5.70048\\-212.8561\\-7\\4.445841\\-213.1447\\-7\\3.398423\\-213.1118\\-7\\1.34725\\-213.295\\-7\\-0.371215\\-213.2948\\-7\\-2.35529\\-213.1097\\-7\\-3.460436\\-213.138\\-7\\-4.730655\\-212.8487\\-7\\-7.296126\\-212.4844\\-7\\-9.096278\\-212.0284\\-7\\-11.94889\\-210.7569\\-7\\-14.66847\\-209.0861\\-7\\-16.56054\\-207.0503\\-7\\-17.24433\\-206.0919\\-7\\-17.94979\\-204.8142\\-7\\-18.51423\\-202.3195\\-7\\-18.27359\\-200.6581\\-7\\-17.40776\\-198.7672\\-7\\-16.49381\\-198.2694\\-7\\-16.00928\\-197.7922\\-7\\-15.31869\\-197.6215\\-7\\-14.52699\\-197.8338\\-7\\-13.31736\\-197.6794\\-7\\-12.22724\\-198.1126\\-7\\-10.58196\\-198.3851\\-7\\-9.658433\\-198.8586\\-7\\-8.861181\\-198.8359\\-7\\-7.989448\\-199.3696\\-7\\-6.621591\\-199.5406\\-7\\-5.501807\\-200.0241\\-7\\-4.076972\\-200.0788\\-7\\-2.811528\\-200.4866\\-7\\-1.550765\\-200.6176\\-7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "1"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "2.638206\\-193.8351\\-5\\4.27789\\-193.5854\\-5\\9.087528\\-191.5363\\-5\\9.707728\\-190.9396\\-5\\10.19323\\-190.836\\-5\\12.97652\\-189.1775\\-5\\14.22778\\-188.5783\\-5\\16.42825\\-188.1113\\-5\\17.89869\\-188.0158\\-5\\20.06059\\-188.6115\\-5\\21.94577\\-189.9909\\-5\\23.19127\\-191.2707\\-5\\24.221\\-193.0529\\-5\\24.8614\\-194.5046\\-5\\25.38822\\-196.4797\\-5\\25.65618\\-199.9844\\-5\\25.18298\\-203.4908\\-5\\24.5757\\-205.3404\\-5\\23.86917\\-206.8904\\-5\\22.57464\\-209.1143\\-5\\20.08956\\-211.9573\\-5\\18.50864\\-213.2627\\-5\\16.59299\\-214.5708\\-5\\14.02119\\-215.888\\-5\\12.57855\\-216.4844\\-5\\9.800355\\-217.3315\\-5\\6.525309\\-217.9846\\-5\\2.20525\\-218.3889\\-5\\0.6021065\\-218.4633\\-5\\-1.300326\\-218.398\\-5\\-5.548341\\-217.9847\\-5\\-8.823057\\-217.3318\\-5\\-11.60107\\-216.4846\\-5\\-13.04884\\-215.8828\\-5\\-15.23056\\-214.7541\\-5\\-17.54913\\-213.2539\\-5\\-19.11278\\-211.9575\\-5\\-21.59816\\-209.1141\\-5\\-22.92257\\-206.836\\-5\\-23.62809\\-205.2501\\-5\\-24.20657\\-203.4767\\-5\\-24.67878\\-199.9896\\-5\\-24.41169\\-196.4795\\-5\\-23.8864\\-194.508\\-5\\-23.25277\\-193.0608\\-5\\-22.21377\\-191.2699\\-5\\-20.96932\\-189.9909\\-5\\-19.08403\\-188.6115\\-5\\-16.92213\\-188.0158\\-5\\-14.26493\\-188.3163\\-5\\-12.09743\\-189.1377\\-5\\-11.23366\\-189.693\\-5\\-8.731774\\-190.9395\\-5\\-8.110901\\-191.5363\\-5\\-3.304572\\-193.5722\\-5\\-0.8416062\\-193.8936\\-5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "76"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "2"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.864589\\-221.8821\\-3\\-4.262839\\-221.705\\-3\\-6.966069\\-221.2908\\-3\\-10.64893\\-220.3757\\-3\\-14.25606\\-219.1237\\-3\\-17.98728\\-217.0966\\-3\\-19.8985\\-215.6573\\-3\\-21.56731\\-214.2381\\-3\\-23.44175\\-212.1059\\-3\\-24.59382\\-210.5732\\-3\\-26.01821\\-207.9047\\-3\\-26.77742\\-206.1993\\-3\\-27.35131\\-204.3581\\-3\\-27.84531\\-201.8294\\-3\\-27.98084\\-200.0783\\-3\\-28.03899\\-197.6873\\-3\\-27.82421\\-195.3723\\-3\\-27.39288\\-193.1793\\-3\\-26.38541\\-190.2343\\-3\\-25.9979\\-189.3203\\-3\\-24.23606\\-186.2188\\-3\\-23.11403\\-184.7514\\-3\\-22.14576\\-183.6978\\-3\\-20.29444\\-181.9018\\-3\\-17.92085\\-180.2553\\-3\\-14.91576\\-178.7754\\-3\\-12.09181\\-178.0114\\-3\\-10.41864\\-177.6524\\-3\\-8.380567\\-177.7356\\-3\\-7.821159\\-177.5995\\-3\\-6.256923\\-177.9025\\-3\\-5.568405\\-177.6836\\-3\\-3.728723\\-178.3027\\-3\\-2.461752\\-178.4334\\-3\\-1.873984\\-178.2949\\-3\\-1.278085\\-178.617\\-3\\-0.6892607\\-178.5616\\-3\\0.915863\\-178.7556\\-3\\1.413679\\-178.5143\\-3\\2.260312\\-178.6259\\-3\\2.849585\\-178.2998\\-3\\3.442821\\-178.436\\-3\\5.749365\\-178.0533\\-3\\6.584952\\-177.6623\\-3\\7.209674\\-177.8984\\-3\\8.797851\\-177.5999\\-3\\9.35713\\-177.7356\\-3\\11.3952\\-177.6524\\-3\\13.06837\\-178.0114\\-3\\15.89232\\-178.7754\\-3\\16.71202\\-179.1062\\-3\\19.12932\\-180.402\\-3\\20.75851\\-181.5704\\-3\\22.18242\\-182.7463\\-3\\24.09221\\-184.7533\\-3\\25.21266\\-186.2189\\-3\\26.97704\\-189.3233\\-3\\27.36121\\-190.2331\\-3\\28.37042\\-193.1835\\-3\\28.76588\\-195.0818\\-3\\29.0182\\-197.6763\\-3\\28.96166\\-200.9124\\-3\\28.38528\\-204.1257\\-3\\27.75371\\-206.1993\\-3\\26.99477\\-207.9047\\-3\\25.57038\\-210.5732\\-3\\24.41832\\-212.1058\\-3\\22.54387\\-214.2381\\-3\\19.49674\\-216.7331\\-3\\17.89876\\-217.7106\\-3\\15.2332\\-219.1235\\-3\\11.62549\\-220.3757\\-3\\7.942632\\-221.2908\\-3\\5.239401\\-221.705\\-3\\2.843655\\-221.8819\\-3\\0.4587926\\-221.9557\\-3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "69"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "3"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.505893\\-224.659\\-1\\-3.872592\\-224.5329\\-1\\-6.075192\\-224.2514\\-1\\-10.10377\\-223.4046\\-1\\-12.09372\\-222.8099\\-1\\-15.40204\\-221.5276\\-1\\-17.30988\\-220.5775\\-1\\-19.52165\\-219.2113\\-1\\-21.64827\\-217.6772\\-1\\-24.03179\\-215.3864\\-1\\-25.01208\\-214.2589\\-1\\-27.05294\\-211.3666\\-1\\-28.61117\\-208.2582\\-1\\-29.29426\\-206.4117\\-1\\-29.91546\\-204.106\\-1\\-30.2992\\-201.8872\\-1\\-30.53119\\-198.9491\\-1\\-30.3863\\-195.7051\\-1\\-29.95169\\-192.8636\\-1\\-29.52408\\-191.1825\\-1\\-28.35457\\-187.8148\\-1\\-27.50398\\-185.9839\\-1\\-26.57295\\-184.29\\-1\\-25.47632\\-182.5485\\-1\\-24.10098\\-180.6762\\-1\\-22.8449\\-179.206\\-1\\-21.20982\\-177.5157\\-1\\-18.44579\\-175.1434\\-1\\-15.26518\\-172.9597\\-1\\-13.75686\\-172.1249\\-1\\-10.84213\\-170.7385\\-1\\-7.96404\\-169.6793\\-1\\-5.895551\\-169.0958\\-1\\-2.046023\\-168.4893\\-1\\-0.101065\\-168.4183\\-1\\2.370644\\-168.4714\\-1\\4.407464\\-168.665\\-1\\6.877327\\-169.0973\\-1\\8.940471\\-169.6793\\-1\\11.81951\\-170.7388\\-1\\14.7207\\-172.1159\\-1\\17.70461\\-173.9061\\-1\\20.25886\\-175.7929\\-1\\22.28488\\-177.589\\-1\\24.25022\\-179.6929\\-1\\26.49762\\-182.5952\\-1\\27.66922\\-184.4665\\-1\\29.33005\\-187.8129\\-1\\30.50064\\-191.1825\\-1\\30.92746\\-192.861\\-1\\31.27184\\-194.9045\\-1\\31.47488\\-197.6931\\-1\\31.41817\\-200.4838\\-1\\31.26016\\-201.9663\\-1\\30.82529\\-204.4017\\-1\\30.27291\\-206.4079\\-1\\29.58772\\-208.2582\\-1\\28.02929\\-211.3663\\-1\\25.97207\\-214.2774\\-1\\24.95238\\-215.4348\\-1\\22.62433\\-217.678\\-1\\20.50612\\-219.2063\\-1\\18.28639\\-220.5776\\-1\\16.3786\\-221.5276\\-1\\13.07029\\-222.8099\\-1\\11.08033\\-223.4046\\-1\\7.05121\\-224.2515\\-1\\4.857371\\-224.5319\\-1\\0.9292888\\-224.704\\-1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "74"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "4"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.230072\\-226.988\\1\\1.617026\\-227.0116\\1\\5.893857\\-226.7186\\1\\9.422059\\-226.1311\\1\\12.82796\\-225.243\\1\\16.03768\\-224.1147\\1\\19.40093\\-222.4731\\1\\21.62452\\-221.1039\\1\\22.9313\\-220.1671\\1\\25.06567\\-218.3331\\1\\27.12967\\-216.1705\\1\\28.78583\\-213.9369\\1\\29.86313\\-212.229\\1\\30.97235\\-210.1181\\1\\32.10492\\-207.151\\1\\32.72127\\-205.0031\\1\\33.13824\\-202.708\\1\\33.44806\\-199.6716\\1\\33.46246\\-198.0082\\1\\33.29013\\-195.2014\\1\\33.01165\\-193.3288\\1\\32.51138\\-190.9886\\1\\31.80636\\-188.4967\\1\\30.6123\\-185.512\\1\\29.06974\\-182.4883\\1\\27.56436\\-180.0939\\1\\26.32525\\-178.4071\\1\\24.40985\\-176.106\\1\\22.75132\\-174.4283\\1\\21.24067\\-173.0551\\1\\19.72177\\-171.8311\\1\\17.56783\\-170.317\\1\\15.52231\\-169.1041\\1\\12.61545\\-167.7029\\1\\10.1143\\-166.806\\1\\7.618216\\-166.143\\1\\5.625355\\-165.7783\\1\\1.528728\\-165.3489\\1\\-0.7995239\\-165.3682\\1\\-4.667117\\-165.7833\\1\\-6.629262\\-166.138\\1\\-9.138115\\-166.8062\\1\\-11.63889\\-167.7029\\1\\-14.54575\\-169.1041\\1\\-16.59123\\-170.317\\1\\-18.74592\\-171.832\\1\\-20.28835\\-173.0799\\1\\-22.52108\\-175.159\\1\\-24.25586\\-177.0566\\1\\-25.41307\\-178.4684\\1\\-26.59302\\-180.0987\\1\\-28.58984\\-183.391\\1\\-29.63597\\-185.512\\1\\-30.8298\\-188.4967\\1\\-31.53481\\-190.9886\\1\\-32.0358\\-193.3289\\1\\-32.30801\\-195.136\\1\\-32.47206\\-199.6432\\1\\-32.34568\\-201.3506\\1\\-31.75202\\-204.9769\\1\\-31.12837\\-207.1509\\1\\-29.99633\\-210.1172\\1\\-29.05882\\-211.905\\1\\-27.81673\\-213.929\\1\\-25.93152\\-216.4034\\1\\-24.09339\\-218.3303\\1\\-21.59067\\-220.4518\\1\\-19.56627\\-221.7962\\1\\-17.17303\\-223.1198\\1\\-15.05823\\-224.1127\\1\\-12.72814\\-224.9722\\1\\-10.90476\\-225.5172\\1\\-8.454619\\-226.1279\\1\\-4.813118\\-226.7221\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "76"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "5"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.3135906\\-228.9314\\3\\1.290305\\-228.9303\\3\\4.793899\\-228.7583\\3\\7.307244\\-228.4516\\3\\10.98056\\-227.7123\\3\\13.59094\\-226.9913\\3\\15.95373\\-226.1736\\3\\19.26485\\-224.678\\3\\20.92691\\-223.7265\\3\\22.81876\\-222.4889\\3\\24.3543\\-221.3317\\3\\26.22543\\-219.7086\\3\\27.37218\\-218.5479\\3\\29.24239\\-216.3239\\3\\30.38726\\-214.6923\\3\\31.41593\\-213.0145\\3\\32.74849\\-210.2846\\3\\33.9155\\-206.9134\\3\\34.60811\\-204.0022\\3\\35.0148\\-200.3019\\3\\35.01503\\-196.413\\3\\34.80304\\-194.4035\\3\\34.45737\\-192.2376\\3\\34.00693\\-190.1625\\3\\33.21647\\-187.5761\\3\\32.32428\\-185.2765\\3\\31.40952\\-183.2593\\3\\30.05162\\-180.7046\\3\\28.06799\\-177.6877\\3\\25.71058\\-174.7955\\3\\23.80749\\-172.8204\\3\\22.07121\\-171.2518\\3\\19.2796\\-169.1515\\3\\17.22806\\-167.8832\\3\\15.05452\\-166.7691\\3\\11.73059\\-165.5063\\3\\8.736152\\-164.6779\\3\\5.936163\\-164.1722\\3\\2.654293\\-163.8878\\3\\-1.301358\\-163.8856\\3\\-4.962992\\-164.1727\\3\\-7.758486\\-164.6777\\3\\-9.65784\\-165.1808\\3\\-12.71687\\-166.1844\\3\\-14.08671\\-166.7715\\3\\-16.24262\\-167.8787\\3\\-18.67115\\-169.4019\\3\\-20.83492\\-171.025\\3\\-22.69699\\-172.6715\\3\\-24.68094\\-174.731\\3\\-27.11776\\-177.7423\\3\\-29.0754\\-180.7054\\3\\-30.43284\\-183.2591\\3\\-31.34771\\-185.2765\\3\\-32.23991\\-187.5761\\3\\-33.03045\\-190.1627\\3\\-33.55018\\-192.5997\\3\\-34.03828\\-196.4082\\3\\-34.04025\\-200.2078\\3\\-33.79142\\-202.9676\\3\\-33.52932\\-204.4788\\3\\-32.93048\\-206.9364\\3\\-31.77195\\-210.2846\\3\\-30.43933\\-213.0145\\3\\-29.41279\\-214.6913\\3\\-28.21924\\-216.381\\3\\-25.89614\\-219.083\\3\\-23.44763\\-221.2687\\3\\-21.03433\\-223.0565\\3\\-18.62058\\-224.47\\3\\-17.00047\\-225.3025\\3\\-14.29901\\-226.427\\3\\-12.64971\\-226.9758\\3\\-10.00135\\-227.7132\\3\\-6.330335\\-228.4518\\3\\-3.812125\\-228.7596\\3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "79"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "6"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.252691\\-230.4623\\5\\-6.212992\\-230.1293\\5\\-9.146994\\-229.5928\\5\\-12.73069\\-228.6603\\5\\-16.33685\\-227.3569\\5\\-18.70528\\-226.2385\\5\\-21.84462\\-224.3979\\5\\-23.28526\\-223.3784\\5\\-25.33088\\-221.7136\\5\\-26.99786\\-220.1182\\5\\-28.97999\\-217.8698\\5\\-30.75214\\-215.3696\\5\\-31.29977\\-214.4659\\5\\-32.71239\\-211.6962\\5\\-33.4382\\-209.9144\\5\\-34.49167\\-206.6018\\5\\-34.82876\\-205.0423\\5\\-35.27651\\-202.1661\\5\\-35.44458\\-199.6658\\5\\-35.37939\\-196.1625\\5\\-34.99789\\-192.9438\\5\\-34.52095\\-190.5999\\5\\-33.75994\\-187.8714\\5\\-32.98402\\-185.629\\5\\-32.15805\\-183.6363\\5\\-31.00288\\-181.3047\\5\\-29.33825\\-178.5006\\5\\-26.90814\\-175.1217\\5\\-24.91504\\-172.884\\5\\-22.77211\\-170.8369\\5\\-20.66631\\-169.1362\\5\\-18.51003\\-167.6791\\5\\-17.01823\\-166.8163\\5\\-15.51472\\-166.0764\\5\\-13.59794\\-165.2959\\5\\-12.13263\\-164.8016\\5\\-9.508026\\-164.0994\\5\\-7.533429\\-163.7547\\5\\-4.755338\\-163.3887\\5\\0.6029193\\-163.1679\\5\\5.724001\\-163.3857\\5\\9.877586\\-163.9805\\5\\11.77233\\-164.418\\5\\14.50093\\-165.2692\\5\\16.44098\\-166.0604\\5\\19.38646\\-167.6241\\5\\21.63471\\-169.1293\\5\\23.75167\\-170.84\\5\\26.22358\\-173.2368\\5\\27.8851\\-175.1225\\5\\29.46671\\-177.2436\\5\\31.12628\\-179.8239\\5\\31.9417\\-181.2482\\5\\33.13614\\-183.6406\\5\\33.96057\\-185.6289\\5\\34.7365\\-187.8714\\5\\35.49983\\-190.6069\\5\\35.93556\\-192.8452\\5\\36.35567\\-196.16\\5\\36.42181\\-199.6032\\5\\36.25412\\-202.1605\\5\\35.66015\\-205.7325\\5\\35.12953\\-207.7594\\5\\34.41796\\-209.9017\\5\\33.69498\\-211.6962\\5\\32.27636\\-214.4658\\5\\31.7289\\-215.3694\\5\\29.95662\\-217.8699\\5\\28.03683\\-220.076\\5\\26.30546\\-221.7157\\5\\24.27489\\-223.3727\\5\\21.71678\\-225.0882\\5\\19.68466\\-226.2368\\5\\17.31322\\-227.357\\5\\13.70726\\-228.6603\\5\\10.12356\\-229.5928\\5\\7.206679\\-230.1255\\5\\4.211326\\-230.461\\5\\0.4916681\\-230.5871\\5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "79"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.113355\\-231.9815\\7\\1.78387\\-231.9958\\7\\5.839989\\-231.6794\\7\\7.611424\\-231.4675\\7\\9.987147\\-231.0579\\7\\12.91806\\-230.3536\\7\\15.50904\\-229.5385\\7\\17.72618\\-228.6717\\7\\20.56344\\-227.3343\\7\\23.81407\\-225.377\\7\\26.31833\\-223.4626\\7\\27.75669\\-222.2016\\7\\29.74725\\-220.1285\\7\\31.10832\\-218.4566\\7\\32.34916\\-216.7125\\7\\33.77028\\-214.3543\\7\\34.78714\\-212.3056\\7\\35.90201\\-209.4008\\7\\36.51296\\-207.3902\\7\\36.98742\\-205.3055\\7\\37.47757\\-201.6117\\7\\37.56797\\-197.5989\\7\\37.3562\\-194.4153\\7\\36.79647\\-191.0921\\7\\36.2218\\-188.8031\\7\\35.06652\\-185.2823\\7\\33.42091\\-181.5529\\7\\31.93871\\-178.8714\\7\\29.70436\\-175.5734\\7\\28.22831\\-173.7659\\7\\26.38695\\-171.7636\\7\\24.68287\\-170.174\\7\\22.94795\\-168.7995\\7\\21.15678\\-167.5496\\7\\18.40044\\-166.0376\\7\\15.17508\\-164.7411\\7\\12.34891\\-163.9888\\7\\9.686124\\-163.5579\\7\\6.619918\\-163.267\\7\\2.036601\\-163.1488\\7\\-3.364203\\-163.1777\\7\\-5.648504\\-163.267\\7\\-10.16484\\-163.7568\\7\\-12.99839\\-164.3995\\7\\-14.20547\\-164.7418\\7\\-16.97895\\-165.8251\\7\\-18.19831\\-166.4128\\7\\-20.17971\\-167.5494\\7\\-21.97139\\-168.7995\\7\\-23.70631\\-170.174\\7\\-25.41785\\-171.7746\\7\\-27.25049\\-173.7628\\7\\-28.72779\\-175.5734\\7\\-30.96593\\-178.8796\\7\\-32.72195\\-182.1051\\7\\-34.08269\\-185.2576\\7\\-35.24524\\-188.8031\\7\\-35.82001\\-191.0926\\7\\-36.37973\\-194.4156\\7\\-36.62768\\-198.1999\\7\\-36.50275\\-201.6698\\7\\-36.01051\\-205.3088\\7\\-35.53661\\-207.3902\\7\\-34.92545\\-209.401\\7\\-33.70901\\-212.5259\\7\\-32.53335\\-214.8377\\7\\-30.92758\\-217.3744\\7\\-28.79788\\-220.1051\\7\\-26.66315\\-222.302\\7\\-25.34836\\-223.4622\\7\\-22.82267\\-225.3763\\7\\-20.65603\\-226.7433\\7\\-18.55426\\-227.8498\\7\\-16.74965\\-228.6716\\7\\-14.53247\\-229.5385\\7\\-11.94139\\-230.3536\\7\\-9.010533\\-231.0579\\7\\-6.634991\\-231.4674\\7\\-4.863411\\-231.6793\\7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "83"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.4003342\\-233.2461\\9\\4.02504\\-233.0949\\9\\6.533574\\-232.8296\\9\\9.712001\\-232.3584\\9\\11.8706\\-231.8688\\9\\15.03886\\-230.9707\\9\\18.33954\\-229.7097\\9\\20.95532\\-228.458\\9\\24.30868\\-226.4386\\9\\26.23126\\-225.0348\\9\\28.40893\\-223.133\\9\\29.68939\\-221.8814\\9\\31.66967\\-219.5752\\9\\33.24977\\-217.3623\\9\\34.16417\\-215.841\\9\\35.29821\\-213.738\\9\\36.0014\\-212.1932\\9\\37.10344\\-209.0577\\9\\37.45719\\-207.8224\\9\\38.05902\\-205.1721\\9\\38.5475\\-201.1462\\9\\38.59718\\-197.9972\\9\\38.44669\\-195.317\\9\\38.12399\\-192.9546\\9\\37.68431\\-190.6108\\9\\36.4941\\-186.3636\\9\\35.53729\\-183.8625\\9\\34.36541\\-181.2518\\9\\32.9718\\-178.722\\9\\32.24244\\-177.5356\\9\\30.71769\\-175.3617\\9\\28.87608\\-173.0675\\9\\26.74139\\-170.8697\\9\\25.37294\\-169.6574\\9\\23.92429\\-168.5262\\9\\21.80225\\-167.1184\\9\\19.61738\\-165.9521\\9\\18.3121\\-165.3829\\9\\16.36147\\-164.7129\\9\\14.34965\\-164.2001\\9\\11.1674\\-163.7356\\9\\7.199081\\-163.5224\\9\\1.372858\\-163.5936\\9\\-4.748299\\-163.5675\\9\\-6.222456\\-163.5224\\9\\-10.19083\\-163.7356\\9\\-13.36962\\-164.1991\\9\\-15.38274\\-164.7125\\9\\-17.3416\\-165.3844\\9\\-19.30886\\-166.2719\\9\\-20.82355\\-167.1171\\9\\-22.94773\\-168.5262\\9\\-24.39638\\-169.6574\\9\\-25.76461\\-170.8695\\9\\-27.89928\\-173.0672\\9\\-29.74113\\-175.3617\\9\\-31.26588\\-177.5356\\9\\-33.38591\\-181.2446\\9\\-34.55597\\-183.8606\\9\\-35.51778\\-186.3646\\9\\-36.7073\\-190.5943\\9\\-37.14925\\-192.93\\9\\-37.47027\\-195.3165\\9\\-37.62305\\-197.996\\9\\-37.55172\\-201.3841\\9\\-37.08222\\-205.1741\\9\\-36.47828\\-207.8301\\9\\-36.1259\\-209.0615\\9\\-35.02481\\-212.1933\\9\\-33.73475\\-214.8871\\9\\-32.56988\\-216.9276\\9\\-30.68651\\-219.584\\9\\-28.7129\\-221.8813\\9\\-26.32982\\-224.1456\\9\\-24.95306\\-225.2711\\9\\-22.80794\\-226.7836\\9\\-20.11026\\-228.3863\\9\\-17.95666\\-229.4615\\9\\-13.97597\\-231.0012\\9\\-10.92568\\-231.8589\\9\\-8.734808\\-232.3585\\9\\-5.55708\\-232.8296\\9\\-3.048317\\-233.0951\\9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "86"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.347774\\-234.2774\\11\\2.076297\\-234.2512\\11\\5.315486\\-234.076\\11\\8.891184\\-233.5704\\11\\12.76923\\-232.7454\\11\\15.01874\\-232.092\\11\\18.17616\\-230.8951\\11\\19.70145\\-230.2389\\11\\22.5713\\-228.7495\\11\\24.2843\\-227.6906\\11\\26.40683\\-226.1659\\11\\27.72368\\-225.0999\\11\\29.91719\\-223.0515\\11\\31.85921\\-220.8909\\11\\32.75888\\-219.7371\\11\\34.06079\\-217.8211\\11\\35.67154\\-215.0535\\11\\36.85835\\-212.443\\11\\38.08195\\-208.9933\\11\\38.54485\\-207.0529\\11\\39.00657\\-204.5316\\11\\39.21459\\-202.9322\\11\\39.45261\\-199.6305\\11\\39.32095\\-195.9739\\11\\38.9065\\-192.5048\\11\\38.4711\\-190.3198\\11\\37.71616\\-187.4484\\11\\37.20184\\-185.9004\\11\\35.70038\\-182.1832\\11\\34.86518\\-180.4969\\11\\33.22965\\-177.6419\\11\\31.78922\\-175.481\\11\\29.46731\\-172.6306\\11\\27.50459\\-170.6222\\11\\25.57172\\-168.9939\\11\\23.93461\\-167.8008\\11\\22.10848\\-166.709\\11\\18.96548\\-165.3339\\11\\17.47947\\-164.8615\\11\\15.0394\\-164.3373\\11\\12.10361\\-164.052\\11\\9.684925\\-164.0091\\11\\5.773968\\-164.1576\\11\\3.828449\\-164.3023\\11\\-2.873777\\-164.3022\\11\\-4.768305\\-164.1588\\11\\-8.708386\\-164.0091\\11\\-11.12704\\-164.052\\11\\-14.12973\\-164.3563\\11\\-16.50329\\-164.8615\\11\\-17.98896\\-165.3339\\11\\-21.13229\\-166.7092\\11\\-22.95804\\-167.8008\\11\\-24.59516\\-168.9939\\11\\-26.52803\\-170.6222\\11\\-28.49075\\-172.6306\\11\\-30.81266\\-175.481\\11\\-32.25309\\-177.6419\\11\\-33.88862\\-180.4969\\11\\-34.72403\\-182.1839\\11\\-36.22878\\-185.9097\\11\\-36.74054\\-187.4451\\11\\-37.49325\\-190.3164\\11\\-37.92682\\-192.4971\\11\\-38.34434\\-195.973\\11\\-38.47602\\-199.6328\\11\\-38.2383\\-202.9321\\11\\-38.03004\\-204.5313\\11\\-37.56659\\-207.1261\\11\\-37.10224\\-209.0008\\11\\-35.87864\\-212.4493\\11\\-34.08095\\-216.1853\\11\\-33.06963\\-217.8515\\11\\-31.78241\\-219.737\\11\\-30.88265\\-220.8909\\11\\-28.94056\\-223.0516\\11\\-27.72459\\-224.2173\\11\\-25.42918\\-226.166\\11\\-23.30767\\-227.6906\\11\\-21.59467\\-228.7496\\11\\-18.74289\\-230.2425\\11\\-15.78055\\-231.4655\\11\\-14.02753\\-232.0893\\11\\-11.78584\\-232.7469\\11\\-7.914277\\-233.5708\\11\\-4.331664\\-234.077\\11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "85"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "8.493884\\-234.5764\\13\\11.79889\\-233.9312\\13\\14.11177\\-233.2976\\13\\17.48217\\-232.1583\\13\\21.00282\\-230.5951\\13\\23.41281\\-229.274\\13\\26.76602\\-226.9787\\13\\28.83936\\-225.2561\\13\\30.94899\\-223.165\\13\\32.75066\\-221.0801\\13\\34.07261\\-219.2731\\13\\35.24554\\-217.4447\\13\\36.50222\\-215.1296\\13\\37.28791\\-213.442\\13\\38.0702\\-211.4309\\13\\38.88156\\-208.9017\\13\\39.72481\\-205.0045\\13\\40.0441\\-202.2794\\13\\40.19049\\-199.5818\\13\\40.13769\\-197.0911\\13\\39.80278\\-193.6548\\13\\39.22738\\-190.4314\\13\\38.45135\\-187.5511\\13\\37.5313\\-184.8195\\13\\36.23561\\-181.7441\\13\\35.25876\\-179.8088\\13\\34.27408\\-178.0789\\13\\32.52323\\-175.4213\\13\\30.94167\\-173.3975\\13\\29.6861\\-172.0036\\13\\27.91198\\-170.2863\\13\\25.3169\\-168.2355\\13\\23.68431\\-167.2091\\13\\21.5541\\-166.1696\\13\\19.30247\\-165.3401\\13\\16.11502\\-164.7093\\13\\13.49307\\-164.5035\\13\\11.23911\\-164.5566\\13\\6.408697\\-165.0268\\13\\3.100249\\-165.2863\\13\\-0.7164387\\-165.3562\\13\\-5.432432\\-165.0266\\13\\-10.26396\\-164.5568\\13\\-12.51007\\-164.5049\\13\\-15.12665\\-164.7087\\13\\-16.3662\\-164.8919\\13\\-18.32609\\-165.3402\\13\\-20.57754\\-166.1696\\13\\-22.70788\\-167.2092\\13\\-24.3404\\-168.2355\\13\\-26.93542\\-170.2863\\13\\-28.70954\\-172.0036\\13\\-29.96511\\-173.3975\\13\\-31.54667\\-175.4213\\13\\-33.29752\\-178.0789\\13\\-34.2822\\-179.8088\\13\\-35.25905\\-181.7441\\13\\-36.81007\\-185.4838\\13\\-37.62061\\-188.0353\\13\\-38.25008\\-190.4274\\13\\-38.82615\\-193.6542\\13\\-39.16125\\-197.0911\\13\\-39.21392\\-199.5818\\13\\-39.06759\\-202.2792\\13\\-38.7482\\-205.0048\\13\\-37.90586\\-208.8992\\13\\-36.99252\\-211.729\\13\\-36.31318\\-213.4341\\13\\-35.52634\\-215.1275\\13\\-34.27116\\-217.4413\\13\\-33.09589\\-219.2734\\13\\-31.7741\\-221.0801\\13\\-29.97243\\-223.165\\13\\-27.86122\\-225.2573\\13\\-25.7893\\-226.9787\\13\\-22.43624\\-229.274\\13\\-20.01815\\-230.5973\\13\\-17.40203\\-231.8029\\13\\-15.30777\\-232.6044\\13\\-10.82813\\-233.929\\13\\-7.524759\\-234.5817\\13\\-5.269984\\-234.904\\13\\-2.816839\\-235.1104\\13\\0.9473966\\-235.236\\13\\6.244745\\-234.9043\\13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "91"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.352428\\-235.8766\\15\\-0.2751435\\-236.0274\\15\\4.346042\\-235.8818\\15\\8.495686\\-235.379\\15\\11.06613\\-234.9151\\15\\14.32617\\-234.0538\\15\\16.99848\\-233.1746\\15\\19.38593\\-232.2192\\15\\21.40554\\-231.223\\15\\24.18315\\-229.6686\\15\\25.36932\\-228.9052\\15\\27.42297\\-227.392\\15\\28.83851\\-226.2276\\15\\30.91222\\-224.2525\\15\\33.00831\\-221.88\\15\\35.25417\\-218.7149\\15\\36.24412\\-217.0504\\15\\37.27632\\-215.0163\\15\\38.14688\\-213.0815\\15\\39.25492\\-209.8866\\15\\40.14484\\-206.1315\\15\\40.53278\\-203.5353\\15\\40.65158\\-202.2302\\15\\40.73747\\-199.5977\\15\\40.61519\\-195.4557\\15\\40.04453\\-191.5536\\15\\39.27789\\-188.2651\\15\\38.71294\\-186.3867\\15\\38.02491\\-184.4544\\15\\36.27225\\-180.55\\15\\35.15323\\-178.4959\\15\\33.48592\\-175.8985\\15\\31.2849\\-173.0847\\15\\29.07742\\-170.8158\\15\\27.71301\\-169.6174\\15\\25.43394\\-167.971\\15\\23.93298\\-167.1358\\15\\22.13282\\-166.3177\\15\\20.29844\\-165.7189\\15\\18.72643\\-165.3374\\15\\16.12563\\-165.0569\\15\\14.06328\\-165.0467\\15\\11.78314\\-165.1992\\15\\10.041\\-165.4037\\15\\6.943377\\-165.9\\15\\3.907112\\-166.2342\\15\\0.8798413\\-166.412\\15\\-0.6704234\\-166.3927\\15\\-3.197479\\-166.2017\\15\\-5.896914\\-165.9104\\15\\-9.107254\\-165.3954\\15\\-10.80505\\-165.199\\15\\-13.10921\\-165.0527\\15\\-15.15511\\-165.0575\\15\\-17.74988\\-165.3374\\15\\-19.32188\\-165.719\\15\\-21.15606\\-166.3176\\15\\-22.4703\\-166.8992\\15\\-24.35965\\-167.9235\\15\\-26.73643\\-169.6174\\15\\-28.10086\\-170.8158\\15\\-30.30834\\-173.0847\\15\\-32.50935\\-175.8985\\15\\-34.17667\\-178.4959\\15\\-35.29569\\-180.55\\15\\-37.04974\\-184.456\\15\\-37.73783\\-186.3914\\15\\-38.29824\\-188.2576\\15\\-39.0706\\-191.5646\\15\\-39.6387\\-195.4538\\15\\-39.74317\\-197.4321\\15\\-39.76262\\-199.6461\\15\\-39.67511\\-202.2437\\15\\-39.1681\\-206.1319\\15\\-38.27806\\-209.8794\\15\\-37.17265\\-213.073\\15\\-36.29976\\-215.0163\\15\\-35.26755\\-217.0504\\15\\-34.27761\\-218.7149\\15\\-32.03175\\-221.88\\15\\-29.93566\\-224.2525\\15\\-27.86196\\-226.2276\\15\\-26.44641\\-227.392\\15\\-24.39276\\-228.9052\\15\\-23.2063\\-229.6688\\15\\-20.88731\\-230.9883\\15\\-19.11937\\-231.8959\\15\\-16.00317\\-233.187\\15\\-13.31468\\-234.0595\\15\\-10.09784\\-234.9124\\15\\-7.404643\\-235.3997\\15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "91"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.029942\\-236.6653\\17\\2.010749\\-236.6631\\17\\4.446617\\-236.5433\\17\\7.80014\\-236.192\\17\\11.24284\\-235.5591\\17\\14.3904\\-234.7445\\17\\16.36345\\-234.1138\\17\\18.94065\\-233.0963\\17\\22.1008\\-231.612\\17\\24.14786\\-230.4455\\17\\25.90031\\-229.2962\\17\\28.79989\\-227.0577\\17\\30.52427\\-225.4877\\17\\32.30814\\-223.6189\\17\\33.45079\\-222.2632\\17\\34.81234\\-220.4238\\17\\36.2802\\-218.109\\17\\37.21424\\-216.3908\\17\\38.1212\\-214.5175\\17\\39.37437\\-211.2721\\17\\40.25782\\-208.0095\\17\\40.97256\\-204.1384\\17\\41.16975\\-201.4004\\17\\41.194\\-197.9985\\17\\40.995\\-194.4936\\17\\40.12784\\-189.6766\\17\\38.99094\\-185.823\\17\\37.74787\\-182.6521\\17\\36.88046\\-180.7916\\17\\35.49171\\-178.2528\\17\\34.59517\\-176.8215\\17\\33.08762\\-174.694\\17\\31.4337\\-172.7147\\17\\29.65073\\-170.9631\\17\\28.23744\\-169.74\\17\\26.13827\\-168.256\\17\\23.89013\\-167.0711\\17\\21.29716\\-166.1405\\17\\19.91508\\-165.8356\\17\\17.64164\\-165.5893\\17\\16.16661\\-165.5578\\17\\13.18897\\-165.7594\\17\\9.827169\\-166.2907\\17\\9.030597\\-166.4862\\17\\5.331411\\-167.0857\\17\\2.805104\\-167.2884\\17\\0.5181172\\-167.3798\\17\\-2.145707\\-167.2692\\17\\-4.359952\\-167.0851\\17\\-8.052878\\-166.4862\\17\\-8.839521\\-166.2936\\17\\-12.21871\\-165.7586\\17\\-14.4383\\-165.5712\\17\\-16.64768\\-165.5859\\17\\-18.93849\\-165.8356\\17\\-20.32041\\-166.1404\\17\\-22.96261\\-167.1066\\17\\-25.16241\\-168.2557\\17\\-27.26087\\-169.74\\17\\-28.67417\\-170.9631\\17\\-30.45713\\-172.7147\\17\\-32.11098\\-174.694\\17\\-33.61861\\-176.8215\\17\\-34.51515\\-178.2528\\17\\-35.90389\\-180.7916\\17\\-36.77374\\-182.6609\\17\\-38.05385\\-185.9387\\17\\-39.1563\\-189.6925\\17\\-40.01937\\-194.4906\\17\\-40.22412\\-197.8868\\17\\-40.25567\\-200.0251\\17\\-39.99991\\-204.1131\\17\\-39.27728\\-208.04\\17\\-38.3979\\-211.2717\\17\\-37.14464\\-214.5175\\17\\-36.23768\\-216.3908\\17\\-35.30364\\-218.109\\17\\-33.83577\\-220.4238\\17\\-32.47423\\-222.2632\\17\\-31.33158\\-223.6189\\17\\-29.5477\\-225.4877\\17\\-27.82333\\-227.0577\\17\\-24.92375\\-229.2962\\17\\-23.1713\\-230.4455\\17\\-21.11721\\-231.6143\\17\\-17.96264\\-233.0968\\17\\-15.38684\\-234.1138\\17\\-12.07484\\-235.1296\\17\\-8.607195\\-235.8893\\17\\-6.823508\\-236.192\\17\\-3.461445\\-236.5527\\17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "91"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.683462\\-237.1808\\19\\-0.3255929\\-237.2869\\19\\1.98873\\-237.2744\\19\\6.102846\\-236.9748\\19\\8.808264\\-236.6017\\19\\11.8226\\-236.0039\\19\\15.15961\\-235.084\\19\\17.59692\\-234.2435\\19\\21.17103\\-232.6884\\19\\23.70801\\-231.3148\\19\\25.63118\\-230.0909\\19\\27.22925\\-228.9643\\19\\29.64411\\-226.9581\\19\\31.27211\\-225.3938\\19\\32.6134\\-223.9785\\19\\33.65456\\-222.7374\\19\\34.92638\\-221.0197\\19\\36.92345\\-217.8707\\19\\37.80421\\-216.1634\\19\\39.01139\\-213.4186\\19\\40.21777\\-209.8514\\19\\40.93425\\-206.8082\\19\\41.44651\\-203.388\\19\\41.53868\\-201.9218\\19\\41.58962\\-198.2017\\19\\41.47086\\-195.6101\\19\\40.99016\\-192.0179\\19\\40.49805\\-189.7695\\19\\39.78902\\-187.1465\\19\\38.0587\\-182.4983\\19\\37.23079\\-180.7453\\19\\35.86929\\-178.3167\\19\\34.26572\\-175.836\\19\\33.18003\\-174.382\\19\\31.90347\\-172.8926\\19\\29.2744\\-170.4186\\19\\27.71636\\-169.2266\\19\\26.30185\\-168.3265\\19\\24.7761\\-167.5538\\19\\23.44883\\-167.0246\\19\\21.57928\\-166.4988\\19\\19.73483\\-166.2275\\19\\17.51628\\-166.082\\19\\13.82242\\-166.4349\\19\\11.24808\\-166.8884\\19\\6.648745\\-167.8427\\19\\2.705294\\-168.2977\\19\\-0.3347399\\-168.3679\\19\\-2.307163\\-168.2352\\19\\-5.671096\\-167.8429\\19\\-10.26944\\-166.8886\\19\\-14.32032\\-166.2309\\19\\-16.49104\\-166.0875\\19\\-19.59993\\-166.3339\\19\\-21.13187\\-166.6263\\19\\-23.80653\\-167.5589\\19\\-25.32434\\-168.3261\\19\\-26.7399\\-169.2267\\19\\-28.29752\\-170.4184\\19\\-30.92687\\-172.8926\\19\\-32.10453\\-174.2648\\19\\-33.28954\\-175.8364\\19\\-34.89272\\-178.3167\\19\\-36.25507\\-180.7468\\19\\-37.08184\\-182.4977\\19\\-38.81234\\-187.1461\\19\\-39.53094\\-189.7971\\19\\-39.99321\\-191.935\\19\\-40.49356\\-195.5714\\19\\-40.61342\\-198.1896\\19\\-40.60046\\-200.9537\\19\\-40.46983\\-203.3885\\19\\-39.96544\\-206.7779\\19\\-39.24426\\-209.8392\\19\\-38.03483\\-213.4186\\19\\-36.82764\\-216.1634\\19\\-35.94689\\-217.8707\\19\\-33.94993\\-221.0195\\19\\-32.68019\\-222.7339\\19\\-31.6368\\-223.9785\\19\\-30.29556\\-225.3937\\19\\-28.66755\\-226.958\\19\\-26.25268\\-228.9643\\19\\-24.65469\\-230.0906\\19\\-22.73081\\-231.3152\\19\\-20.19467\\-232.6883\\19\\-16.62036\\-234.2435\\19\\-14.18234\\-235.0842\\19\\-10.84966\\-236.0035\\19\\-7.831686\\-236.6017\\19\\-5.126106\\-236.9749\\19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "89"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-7.395645\\-237.1539\\21\\-5.306133\\-237.4465\\21\\-1.839133\\-237.7328\\21\\-0.2842809\\-237.7869\\21\\2.888096\\-237.7201\\21\\6.287021\\-237.4457\\21\\8.372333\\-237.1539\\21\\12.0181\\-236.4454\\21\\15.61547\\-235.4113\\21\\19.22269\\-234.0662\\21\\21.98839\\-232.7559\\21\\25.03997\\-231.0009\\21\\26.98458\\-229.6644\\21\\29.05565\\-227.992\\21\\31.54506\\-225.6577\\21\\32.48167\\-224.6909\\21\\34.09058\\-222.7743\\21\\35.60046\\-220.6714\\21\\37.31148\\-217.8795\\21\\38.7951\\-214.7482\\21\\39.74943\\-212.3699\\21\\40.51642\\-209.866\\21\\40.99348\\-208.0448\\21\\41.45464\\-205.5703\\21\\41.80071\\-202.592\\21\\41.88151\\-201.3297\\21\\41.88874\\-197.8653\\21\\41.81102\\-196.4728\\21\\41.45572\\-193.2742\\21\\40.96309\\-190.6114\\21\\40.59074\\-189.0445\\21\\39.74879\\-186.2077\\21\\38.86715\\-183.821\\21\\37.84655\\-181.5504\\21\\36.43913\\-178.8346\\21\\34.43165\\-175.7988\\21\\33.05247\\-174.0063\\21\\31.33508\\-172.1742\\21\\29.6805\\-170.6856\\21\\27.39972\\-169.0863\\21\\24.77579\\-167.7686\\21\\22.22219\\-166.998\\21\\20.05033\\-166.6939\\21\\17.04919\\-166.7386\\21\\13.51682\\-167.2449\\21\\6.849967\\-168.7165\\21\\4.290162\\-169.1081\\21\\1.848251\\-169.3105\\21\\-1.52107\\-169.2661\\21\\-4.729115\\-168.9312\\21\\-8.234799\\-168.2235\\21\\-12.55383\\-167.2427\\21\\-16.22912\\-166.7331\\21\\-19.07346\\-166.6938\\21\\-21.30426\\-167.0212\\21\\-23.31525\\-167.5782\\21\\-24.7057\\-168.1694\\21\\-26.43823\\-169.0961\\21\\-28.71857\\-170.7057\\21\\-30.35854\\-172.1742\\21\\-32.07625\\-174.0068\\21\\-33.45519\\-175.7989\\21\\-35.46249\\-178.8344\\21\\-37.13916\\-182.1024\\21\\-37.89063\\-183.8214\\21\\-38.77219\\-186.2077\\21\\-39.61443\\-189.0458\\21\\-39.98876\\-190.6182\\21\\-40.47935\\-193.2755\\21\\-40.83527\\-196.4711\\21\\-40.92815\\-199.0401\\21\\-40.82614\\-202.5875\\21\\-40.47823\\-205.5696\\21\\-40.01206\\-208.064\\21\\-39.53767\\-209.8693\\21\\-38.77287\\-212.3699\\21\\-37.81854\\-214.7482\\21\\-36.33566\\-217.8782\\21\\-34.62394\\-220.6713\\21\\-32.88985\\-223.0571\\21\\-31.49877\\-224.6991\\21\\-30.56858\\-225.6576\\21\\-28.07457\\-227.9989\\21\\-26.00935\\-229.6635\\21\\-24.12276\\-230.9619\\21\\-21.01183\\-232.7559\\21\\-18.24613\\-234.0662\\21\\-14.63894\\-235.4113\\21\\-11.04153\\-236.4454\\21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "87"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.753596\\-237.9068\\23\\-7.798041\\-237.4943\\23\\-12.49881\\-236.4653\\23\\-14.92717\\-235.7205\\23\\-17.91876\\-234.5966\\23\\-20.97709\\-233.1124\\23\\-23.39151\\-231.7868\\23\\-24.52939\\-231.0763\\23\\-26.46242\\-229.6994\\23\\-28.32055\\-228.1715\\23\\-30.59839\\-226.0416\\23\\-32.9426\\-223.4142\\23\\-34.19903\\-221.718\\23\\-35.41452\\-219.9157\\23\\-37.05581\\-216.9329\\23\\-37.93576\\-215.1135\\23\\-39.16697\\-211.8353\\23\\-40.049\\-208.7443\\23\\-40.48323\\-206.6258\\23\\-40.93272\\-203.2229\\23\\-41.04909\\-198.6833\\23\\-40.91858\\-195.6227\\23\\-40.51166\\-192.5473\\23\\-40.11248\\-190.5581\\23\\-39.25061\\-187.2482\\23\\-38.19663\\-184.3367\\23\\-37.45996\\-182.5188\\23\\-35.485\\-178.6937\\23\\-33.64775\\-175.9321\\23\\-32.37863\\-174.3356\\23\\-30.103\\-171.9627\\23\\-27.50261\\-169.9239\\23\\-24.99735\\-168.5609\\23\\-23.94234\\-168.1558\\23\\-22.20877\\-167.6713\\23\\-20.17484\\-167.3306\\23\\-17.85983\\-167.2667\\23\\-15.82807\\-167.4507\\23\\-12.94633\\-167.9768\\23\\-7.278864\\-169.34\\23\\-5.3747\\-169.7353\\23\\-2.782075\\-170.1234\\23\\-0.1803772\\-170.3169\\23\\1.211557\\-170.3144\\23\\3.757592\\-170.1218\\23\\6.351666\\-169.7354\\23\\8.256512\\-169.3402\\23\\13.90996\\-167.9789\\23\\16.61414\\-167.4835\\23\\18.83676\\-167.2667\\23\\21.15127\\-167.3306\\23\\23.17904\\-167.6704\\23\\25.95107\\-168.5521\\23\\28.50536\\-169.9458\\23\\30.09743\\-171.1355\\23\\31.61209\\-172.4674\\23\\33.33221\\-174.3126\\23\\34.67731\\-175.9927\\23\\36.46438\\-178.6976\\23\\38.05774\\-181.6987\\23\\38.93901\\-183.6968\\23\\40.22915\\-187.2592\\23\\41.07985\\-190.5024\\23\\41.47528\\-192.4789\\23\\41.89619\\-195.6398\\23\\42.01239\\-198.1642\\23\\42.0208\\-200.5878\\23\\41.90052\\-203.3836\\23\\41.46058\\-206.6285\\23\\41.02722\\-208.7396\\23\\40.14355\\-211.8357\\23\\38.91092\\-215.1169\\23\\38.04168\\-216.9199\\23\\36.39198\\-219.9142\\23\\35.17476\\-221.7196\\23\\33.90102\\-223.4383\\23\\31.57782\\-226.0384\\23\\28.89132\\-228.5272\\23\\27.4328\\-229.703\\23\\24.36909\\-231.7857\\23\\21.95364\\-233.1124\\23\\18.89659\\-234.5961\\23\\15.90339\\-235.7207\\23\\13.48157\\-236.4646\\23\\8.774865\\-237.4942\\23\\5.767869\\-237.9031\\23\\0.4896935\\-238.1725\\23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "88"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "16"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "4.048399\\-238.3469\\25\\7.277422\\-238.0141\\25\\9.884943\\-237.5736\\25\\13.97069\\-236.601\\25\\16.38051\\-235.8169\\25\\19.9451\\-234.3963\\25\\21.37597\\-233.7215\\25\\24.86881\\-231.7308\\25\\26.40133\\-230.7061\\25\\28.8117\\-228.8449\\25\\31.13347\\-226.7313\\25\\33.31998\\-224.3756\\25\\35.48628\\-221.5382\\25\\36.58189\\-219.8341\\25\\38.12429\\-217.0754\\25\\38.92406\\-215.3398\\25\\39.79585\\-213.1714\\25\\40.99886\\-209.2183\\25\\41.42735\\-207.3092\\25\\41.85594\\-204.6539\\25\\42.12229\\-200.6738\\25\\42.12553\\-198.9667\\25\\41.89124\\-194.9655\\25\\41.41027\\-191.7418\\25\\40.62634\\-188.4188\\25\\39.39574\\-184.7328\\25\\38.24226\\-182.1304\\25\\36.95335\\-179.5813\\25\\35.21127\\-176.7896\\25\\33.375\\-174.4627\\25\\32.22188\\-173.2283\\25\\29.96692\\-171.2278\\25\\27.81486\\-169.8414\\25\\25.13781\\-168.6561\\25\\23.87956\\-168.305\\25\\21.90726\\-167.9758\\25\\19.20375\\-167.9256\\25\\17.32254\\-168.1313\\25\\14.95999\\-168.5373\\25\\12.37971\\-169.1585\\25\\8.008792\\-170.3103\\25\\4.971269\\-170.8907\\25\\2.334427\\-171.2197\\25\\0.4871397\\-171.2889\\25\\-1.371287\\-171.2183\\25\\-4.08017\\-170.8727\\25\\-7.032401\\-170.3103\\25\\-11.41537\\-169.1541\\25\\-15.55213\\-168.2392\\25\\-18.22731\\-167.9256\\25\\-20.93111\\-167.9758\\25\\-22.83704\\-168.2807\\25\\-24.13958\\-168.6436\\25\\-25.78547\\-169.3058\\25\\-27.90437\\-170.4867\\25\\-29.13807\\-171.3391\\25\\-31.32607\\-173.3061\\25\\-32.48741\\-174.5445\\25\\-34.35188\\-176.9543\\25\\-35.94552\\-179.5131\\25\\-37.20418\\-181.9399\\25\\-38.41994\\-184.7355\\25\\-39.65216\\-188.4303\\25\\-40.46104\\-191.8705\\25\\-40.91464\\-194.9659\\25\\-41.14793\\-198.68\\25\\-41.16267\\-199.9126\\25\\-40.88074\\-204.6442\\25\\-40.42034\\-207.4778\\25\\-40.06873\\-209.0601\\25\\-38.82009\\-213.1691\\25\\-38.15368\\-214.8128\\25\\-36.54058\\-218.1881\\25\\-35.60959\\-219.8293\\25\\-34.50632\\-221.5435\\25\\-32.34322\\-224.3759\\25\\-30.18397\\-226.7013\\25\\-27.83978\\-228.8404\\25\\-25.41993\\-230.7106\\25\\-23.88605\\-231.7353\\25\\-20.39869\\-233.722\\25\\-18.95782\\-234.4007\\25\\-15.40254\\-235.8178\\25\\-12.97344\\-236.5978\\25\\-10.60687\\-237.2122\\25\\-6.377011\\-238.0053\\25\\-2.883398\\-238.3622\\25\\0.4586823\\-238.4255\\25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "93"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.03459688\\-238.6139\\27\\4.904679\\-238.4729\\27\\7.818363\\-238.1249\\27\\9.986352\\-237.7584\\27\\13.27563\\-236.9786\\27\\16.60685\\-235.917\\27\\18.22424\\-235.2912\\27\\22.26905\\-233.4154\\27\\24.6817\\-231.9871\\27\\25.95901\\-231.1438\\27\\28.17739\\-229.4771\\27\\29.45213\\-228.4237\\27\\31.67609\\-226.2693\\27\\33.61864\\-224.0833\\27\\35.45016\\-221.6339\\27\\36.9472\\-219.2343\\27\\38.94528\\-215.2966\\27\\39.83692\\-213.0724\\27\\40.61589\\-210.6761\\27\\41.40452\\-207.3687\\27\\41.89172\\-204.0721\\27\\42.06532\\-200.765\\27\\42.08072\\-198.9393\\27\\41.88657\\-195.2258\\27\\41.48308\\-192.4421\\27\\41.03865\\-190.2398\\27\\40.21426\\-187.2357\\27\\39.06013\\-184.1378\\27\\38.06069\\-181.8863\\27\\36.43656\\-178.8604\\27\\35.03962\\-176.8033\\27\\33.86467\\-175.2868\\27\\32.52273\\-173.8039\\27\\31.52626\\-172.8636\\27\\29.41476\\-171.2155\\27\\27.92555\\-170.3192\\27\\26.40118\\-169.5958\\27\\24.98025\\-169.1189\\27\\22.60722\\-168.6688\\27\\20.19957\\-168.5711\\27\\17.88089\\-168.7913\\27\\16.07779\\-169.0979\\27\\14.02724\\-169.5716\\27\\9.145086\\-170.916\\27\\6.601874\\-171.5438\\27\\2.729523\\-172.1479\\27\\0.1094743\\-172.2408\\27\\-1.757627\\-172.1476\\27\\-5.622898\\-171.5443\\27\\-8.136178\\-170.9295\\27\\-13.40357\\-169.4913\\27\\-15.09846\\-169.0974\\27\\-16.90388\\-168.7914\\27\\-19.22301\\-168.5711\\27\\-21.63097\\-168.6688\\27\\-23.58984\\-169.0176\\27\\-25.42688\\-169.5959\\27\\-26.93791\\-170.3158\\27\\-28.22816\\-171.0692\\27\\-29.96432\\-172.3705\\27\\-31.69272\\-173.9609\\27\\-32.89073\\-175.2887\\27\\-34.87782\\-177.9464\\27\\-36.23392\\-180.1901\\27\\-37.38808\\-182.5407\\27\\-38.08374\\-184.1379\\27\\-39.23799\\-187.2373\\27\\-40.11014\\-190.525\\27\\-40.51105\\-192.4794\\27\\-40.91004\\-195.2247\\27\\-41.02796\\-197.2805\\27\\-41.10802\\-200.3053\\27\\-40.91162\\-204.097\\27\\-40.4935\\-206.9815\\27\\-39.98569\\-209.3535\\27\\-38.86222\\-213.0662\\27\\-37.98161\\-215.2875\\27\\-37.17999\\-217.013\\27\\-35.96891\\-219.2391\\27\\-34.90492\\-220.9825\\27\\-33.97001\\-222.3341\\27\\-32.40631\\-224.3739\\27\\-30.68747\\-226.2804\\27\\-28.80373\\-228.136\\27\\-27.8726\\-228.9475\\27\\-25.56764\\-230.7291\\27\\-23.38526\\-232.1795\\27\\-21.05225\\-233.5269\\27\\-16.71018\\-235.533\\27\\-13.36723\\-236.6658\\27\\-8.980839\\-237.7621\\27\\-6.912771\\-238.1162\\27\\-3.682885\\-238.4816\\27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "86"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.413155\\-238.7541\\29\\5.023041\\-238.5659\\29\\8.150431\\-238.1874\\29\\10.27469\\-237.7945\\29\\13.26938\\-237.0727\\29\\17.56068\\-235.6528\\29\\21.21932\\-233.993\\29\\22.79973\\-233.1467\\29\\26.12589\\-231.0507\\29\\28.66479\\-229.0784\\29\\30.45506\\-227.4759\\29\\33.03888\\-224.7294\\29\\33.99401\\-223.5474\\29\\36.15505\\-220.4792\\29\\37.20221\\-218.6946\\29\\38.90091\\-215.2383\\29\\39.80353\\-212.8287\\29\\41.01338\\-208.7018\\29\\41.45699\\-206.4105\\29\\41.84095\\-203.4432\\29\\41.95745\\-200.293\\29\\41.83922\\-196.0952\\29\\41.4432\\-193.0125\\29\\40.96298\\-190.5797\\29\\40.09978\\-187.421\\29\\38.52546\\-183.272\\29\\37.61929\\-181.3711\\29\\35.48587\\-177.8592\\29\\34.25529\\-176.1794\\29\\32.52202\\-174.2382\\29\\30.02571\\-172.1448\\29\\28.87105\\-171.3671\\29\\26.30465\\-170.1524\\29\\23.79359\\-169.4824\\29\\22.00226\\-169.2916\\29\\20.29381\\-169.3234\\29\\18.33458\\-169.5027\\29\\14.76035\\-170.2191\\29\\11.33772\\-171.2109\\29\\7.438661\\-172.2641\\29\\5.378239\\-172.7119\\29\\3.424526\\-172.9936\\29\\0.4580991\\-173.1884\\29\\-2.457453\\-172.9929\\29\\-4.401687\\-172.7118\\29\\-6.824599\\-172.1784\\29\\-11.68959\\-170.7874\\29\\-15.42822\\-169.8439\\29\\-17.35658\\-169.503\\29\\-19.31737\\-169.3233\\29\\-21.02546\\-169.2916\\29\\-22.81627\\-169.4822\\29\\-25.33453\\-170.1537\\29\\-27.89765\\-171.3699\\29\\-29.0554\\-172.1488\\29\\-31.54563\\-174.2385\\29\\-33.27873\\-176.1794\\29\\-34.50931\\-177.8592\\29\\-36.64312\\-181.3722\\29\\-37.54911\\-183.2725\\29\\-39.12331\\-187.4211\\29\\-39.98946\\-190.5872\\29\\-40.46658\\-193.0122\\29\\-40.86082\\-196.0722\\29\\-40.97685\\-198.9644\\29\\-40.93272\\-202.2657\\29\\-40.85752\\-203.4983\\29\\-40.4788\\-206.4231\\29\\-40.03172\\-208.7132\\29\\-38.82713\\-212.8279\\29\\-37.92532\\-215.2365\\29\\-36.22628\\-218.6937\\29\\-35.17873\\-220.4788\\29\\-33.01707\\-223.5479\\29\\-32.06234\\-224.7295\\29\\-29.65695\\-227.3036\\29\\-27.79914\\-228.9852\\29\\-26.26655\\-230.21\\29\\-24.12762\\-231.7298\\29\\-22.121\\-232.9879\\29\\-20.16258\\-234.0261\\29\\-16.4124\\-235.7099\\29\\-12.28331\\-237.077\\29\\-9.271958\\-237.7982\\29\\-7.467124\\-238.1452\\29\\-4.080799\\-238.5643\\29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "84"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.4901226\\-238.7366\\31\\4.307921\\-238.6424\\31\\7.446903\\-238.2924\\31\\9.917973\\-237.8726\\31\\13.9465\\-236.8512\\31\\17.67932\\-235.5356\\31\\21.27737\\-233.9167\\31\\25.13845\\-231.6337\\31\\27.64256\\-229.787\\31\\28.9626\\-228.6737\\31\\31.36633\\-226.3819\\31\\33.49854\\-223.9586\\31\\35.39708\\-221.2745\\31\\37.55659\\-217.6499\\31\\38.74607\\-215.0237\\31\\39.73824\\-212.4469\\31\\40.47105\\-209.8965\\31\\40.98198\\-207.8148\\31\\41.40693\\-205.2838\\31\\41.68865\\-201.8148\\31\\41.75964\\-199.5409\\31\\41.41822\\-194.4963\\31\\40.99544\\-191.8885\\31\\40.09607\\-188.3015\\31\\39.31947\\-186.007\\31\\37.98592\\-182.7767\\31\\37.09343\\-181.0414\\31\\35.54602\\-178.4887\\31\\33.86545\\-176.2896\\31\\32.62204\\-174.9317\\31\\31.27496\\-173.7163\\31\\29.66087\\-172.4931\\31\\28.41368\\-171.7478\\31\\26.78667\\-171.0172\\31\\24.1816\\-170.2549\\31\\21.31641\\-170.0368\\31\\19.59637\\-170.1471\\31\\17.39042\\-170.4745\\31\\15.19672\\-170.9739\\31\\7.979877\\-173.0299\\31\\4.596751\\-173.7646\\31\\1.916388\\-174.0483\\31\\-0.6310761\\-174.0825\\31\\-3.613085\\-173.7657\\31\\-7.004896\\-173.0296\\31\\-12.193\\-171.526\\31\\-16.41236\\-170.4641\\31\\-18.61145\\-170.1465\\31\\-20.35093\\-170.0359\\31\\-23.20504\\-170.2549\\31\\-25.8102\\-171.0172\\31\\-27.43696\\-171.7478\\31\\-28.6843\\-172.4931\\31\\-30.2984\\-173.7163\\31\\-31.64548\\-174.9317\\31\\-32.88889\\-176.2896\\31\\-34.56945\\-178.4887\\31\\-36.11686\\-181.0414\\31\\-37.00936\\-182.7767\\31\\-38.34291\\-186.007\\31\\-39.11985\\-188.3023\\31\\-39.98562\\-191.7552\\31\\-40.4445\\-194.524\\31\\-40.76713\\-198.9238\\31\\-40.70885\\-201.8533\\31\\-40.46113\\-205.0827\\31\\-40.02164\\-207.7572\\31\\-39.20723\\-210.9518\\31\\-38.76167\\-212.4469\\31\\-37.76955\\-215.0235\\31\\-36.58002\\-217.6499\\31\\-34.42748\\-221.2671\\31\\-32.52197\\-223.9586\\31\\-30.99468\\-225.7379\\31\\-28.32024\\-228.3686\\31\\-26.19358\\-230.1669\\31\\-24.15025\\-231.641\\31\\-20.29691\\-233.9186\\31\\-17.91772\\-235.0095\\31\\-15.4289\\-236.0352\\31\\-12.9876\\-236.8521\\31\\-8.942101\\-237.8723\\31\\-6.478204\\-238.292\\31\\-3.542845\\-238.6289\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "90"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.4953977\\-238.7004\\33\\2.750556\\-238.6575\\33\\6.656632\\-238.3173\\33\\9.024737\\-237.942\\33\\13.48291\\-236.8813\\33\\16.08524\\-236.0259\\33\\19.23837\\-234.7399\\33\\21.7297\\-233.4525\\33\\24.23479\\-231.9745\\33\\26.6918\\-230.2872\\33\\29.07076\\-228.273\\33\\32.02996\\-225.3131\\33\\33.16754\\-223.9576\\33\\35.50502\\-220.6669\\33\\37.07004\\-217.9509\\33\\37.89184\\-216.2903\\33\\39.45831\\-212.2763\\33\\40.24522\\-209.568\\33\\40.99987\\-205.9013\\33\\41.36486\\-202.1829\\33\\41.44279\\-200.4987\\33\\41.33272\\-197.2349\\33\\40.95243\\-193.6895\\33\\40.10103\\-189.631\\33\\39.23831\\-186.8839\\33\\38.54536\\-184.9983\\33\\37.7583\\-183.2423\\33\\36.59358\\-180.9804\\33\\35.20951\\-178.8038\\33\\33.4445\\-176.5375\\33\\32.18155\\-175.2398\\33\\30.51949\\-173.8254\\33\\28.40141\\-172.493\\33\\26.19894\\-171.5501\\33\\25.01247\\-171.2166\\33\\23.32162\\-170.953\\33\\20.72319\\-170.8793\\33\\18.1765\\-171.1597\\33\\16.3128\\-171.5532\\33\\12.56025\\-172.5728\\33\\9.754065\\-173.4435\\33\\7.603109\\-174.0198\\33\\5.220454\\-174.5403\\33\\3.43474\\-174.8145\\33\\1.153885\\-174.9719\\33\\-0.3174352\\-174.9824\\33\\-2.459932\\-174.8144\\33\\-4.238948\\-174.5412\\33\\-6.626546\\-174.0198\\33\\-8.777449\\-173.4435\\33\\-13.63095\\-171.9926\\33\\-16.07005\\-171.3863\\33\\-18.26521\\-171.0082\\33\\-19.89178\\-170.8556\\33\\-22.34499\\-170.953\\33\\-24.03591\\-171.2166\\33\\-25.73358\\-171.7285\\33\\-28.26204\\-172.9639\\33\\-29.54293\\-173.8254\\33\\-31.20499\\-175.2398\\33\\-32.46794\\-176.5375\\33\\-34.23293\\-178.8041\\33\\-35.61702\\-180.9804\\33\\-36.78174\\-183.2423\\33\\-37.56881\\-184.9983\\33\\-38.26184\\-186.884\\33\\-39.12965\\-189.6468\\33\\-40.01433\\-193.8777\\33\\-40.3143\\-196.8376\\33\\-40.4475\\-198.8009\\33\\-40.38829\\-202.2036\\33\\-40.04157\\-205.8176\\33\\-39.26876\\-209.5669\\33\\-38.48176\\-212.2762\\33\\-36.91528\\-216.2903\\33\\-36.09344\\-217.9508\\33\\-34.97908\\-219.9547\\33\\-33.6489\\-221.9684\\33\\-32.19098\\-223.9576\\33\\-30.47704\\-225.9456\\33\\-28.08905\\-228.2809\\33\\-25.72135\\-230.283\\33\\-23.94052\\-231.5493\\33\\-21.15728\\-233.2631\\33\\-18.26126\\-234.7402\\33\\-15.10819\\-236.0256\\33\\-12.51236\\-236.8809\\33\\-8.047938\\-237.9421\\33\\-5.483054\\-238.3414\\33\\-2.218568\\-238.6264\\33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "85"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.000859\\-238.4568\\35\\2.036119\\-238.4849\\35\\4.143352\\-238.3752\\35\\6.613834\\-238.1095\\35\\9.514951\\-237.627\\35\\12.33269\\-236.9785\\35\\15.53581\\-235.954\\35\\19.42916\\-234.3671\\35\\22.94777\\-232.4604\\35\\25.02822\\-231.1092\\35\\27.5958\\-229.1517\\35\\29.03459\\-227.8704\\35\\31.28551\\-225.6089\\35\\32.91689\\-223.6862\\35\\35.34478\\-220.2166\\35\\36.57921\\-218.0723\\35\\37.74644\\-215.6492\\35\\38.42889\\-213.9913\\35\\39.35489\\-211.3383\\35\\40.40844\\-206.7554\\35\\40.92302\\-202.2714\\35\\41.00206\\-199.7695\\35\\40.93535\\-197.9866\\35\\40.66289\\-195.0022\\35\\40.07468\\-191.502\\35\\39.24739\\-188.4096\\35\\38.50623\\-186.2061\\35\\36.90047\\-182.6232\\35\\36.08315\\-181.1808\\35\\34.83999\\-179.2665\\35\\32.98299\\-176.9483\\35\\30.91133\\-174.9926\\35\\29.24399\\-173.817\\35\\26.68323\\-172.5698\\35\\25.37802\\-172.1649\\35\\23.34433\\-171.7898\\35\\20.98104\\-171.7251\\35\\19.32048\\-171.8611\\35\\16.92815\\-172.2928\\35\\14.67541\\-172.8482\\35\\10.65421\\-174.0508\\35\\8.156789\\-174.7474\\35\\4.922141\\-175.4625\\35\\2.723269\\-175.7374\\35\\0.4495099\\-175.8301\\35\\-1.732899\\-175.7384\\35\\-3.945446\\-175.4625\\35\\-7.180226\\-174.7474\\35\\-12.94566\\-173.0651\\35\\-15.53978\\-172.3788\\35\\-18.24297\\-171.8915\\35\\-20.00237\\-171.7255\\35\\-22.36777\\-171.7898\\35\\-24.40134\\-172.1649\\35\\-25.7159\\-172.5713\\35\\-28.26852\\-173.8174\\35\\-29.93477\\-174.9926\\35\\-32.00647\\-176.9484\\35\\-33.86517\\-179.27\\35\\-35.10661\\-181.1808\\35\\-35.92391\\-182.6232\\35\\-37.53215\\-186.2058\\35\\-38.27248\\-188.4124\\35\\-39.10156\\-191.5144\\35\\-39.68585\\-194.9945\\35\\-39.97252\\-198.107\\35\\-40.01736\\-201.139\\35\\-39.59502\\-205.6914\\35\\-39.2518\\-207.7293\\35\\-38.3785\\-211.3382\\35\\-37.45229\\-213.9914\\35\\-36.76987\\-215.6492\\35\\-35.60251\\-218.0725\\35\\-34.37028\\-220.2115\\35\\-31.94033\\-223.6862\\35\\-30.30895\\-225.6089\\35\\-28.05807\\-227.8703\\35\\-26.61924\\-229.1517\\35\\-24.0249\\-231.129\\35\\-21.98286\\-232.4527\\35\\-18.45258\\-234.3672\\35\\-14.5715\\-235.9517\\35\\-11.35603\\-236.9786\\35\\-8.538386\\-237.627\\35\\-5.602347\\-238.1122\\35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "87"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.61614\\-237.6672\\37\\-10.98535\\-236.7354\\37\\-14.51257\\-235.6436\\37\\-17.65323\\-234.3289\\37\\-21.22044\\-232.4753\\37\\-23.51953\\-231.0013\\37\\-24.98857\\-229.9255\\37\\-27.8242\\-227.5122\\37\\-29.54052\\-225.7867\\37\\-30.79133\\-224.3732\\37\\-32.45856\\-222.2233\\37\\-33.85873\\-220.1125\\37\\-35.11557\\-217.9072\\37\\-35.85318\\-216.4401\\37\\-37.16885\\-213.3141\\37\\-38.003\\-210.7243\\37\\-38.43382\\-209.0325\\37\\-39.0409\\-205.897\\37\\-39.43265\\-202.0462\\37\\-39.37213\\-197.2073\\37\\-38.91679\\-193.5749\\37\\-38.23898\\-190.3668\\37\\-37.60628\\-188.2453\\37\\-36.71917\\-185.776\\37\\-35.76009\\-183.722\\37\\-34.08898\\-180.7492\\37\\-33.02569\\-179.2651\\37\\-31.76208\\-177.7688\\37\\-30.65273\\-176.6622\\37\\-29.07246\\-175.3406\\37\\-27.88852\\-174.5473\\37\\-26.47118\\-173.8304\\37\\-25.22582\\-173.3481\\37\\-23.84299\\-172.9659\\37\\-21.62577\\-172.6531\\37\\-20.26233\\-172.6532\\37\\-17.86761\\-172.8491\\37\\-14.26632\\-173.589\\37\\-8.348366\\-175.2729\\37\\-4.379842\\-176.2158\\37\\-2.388492\\-176.495\\37\\0.1449418\\-176.6609\\37\\1.875269\\-176.6272\\37\\5.358457\\-176.2152\\37\\9.324851\\-175.2729\\37\\15.23803\\-173.5915\\37\\18.02307\\-172.979\\37\\21.24292\\-172.6531\\37\\22.60233\\-172.6531\\37\\24.81956\\-172.9659\\37\\26.86782\\-173.5768\\37\\28.85266\\-174.5411\\37\\30.04928\\-175.3407\\37\\31.6293\\-176.6622\\37\\32.73854\\-177.7687\\37\\33.68728\\-178.8876\\37\\35.07052\\-180.757\\37\\36.73661\\-183.7219\\37\\37.72141\\-185.852\\37\\38.25498\\-187.2657\\37\\39.2155\\-190.3667\\37\\39.89351\\-193.5759\\37\\40.34883\\-197.2083\\37\\40.40963\\-202.048\\37\\40.01748\\-205.8969\\37\\39.41037\\-209.0326\\37\\38.99327\\-210.6581\\37\\37.94262\\-213.8319\\37\\36.82975\\-216.4401\\37\\36.09213\\-217.9072\\37\\34.83552\\-220.1121\\37\\33.43513\\-222.2233\\37\\31.76789\\-224.3732\\37\\30.51708\\-225.7867\\37\\28.80077\\-227.5122\\37\\25.96513\\-229.9255\\37\\24.49606\\-231.0013\\37\\22.19667\\-232.4754\\37\\18.62989\\-234.3289\\37\\16.48496\\-235.2552\\37\\14.84352\\-235.8546\\37\\11.9587\\-236.7358\\37\\7.592703\\-237.6672\\37\\5.001103\\-237.9932\\37\\2.409481\\-238.1873\\37\\-1.532403\\-238.1847\\37\\-4.024491\\-237.9932\\37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "83"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.702011\\-237.6129\\39\\-1.211487\\-237.7944\\39\\2.181149\\-237.7945\\39\\4.685203\\-237.6135\\39\\7.860736\\-237.1998\\39\\11.88129\\-236.3153\\39\\14.14131\\-235.6363\\39\\16.36092\\-234.8151\\39\\18.63998\\-233.816\\39\\20.80708\\-232.6991\\39\\23.50611\\-231.068\\39\\26.56095\\-228.7745\\39\\28.37767\\-227.1652\\39\\30.90448\\-224.5071\\39\\32.53694\\-222.4393\\39\\33.87878\\-220.5102\\39\\35.12926\\-218.4678\\39\\36.53879\\-215.611\\39\\37.93586\\-211.9901\\39\\38.7508\\-209.0889\\39\\39.34272\\-205.9254\\39\\39.67249\\-203.3363\\39\\39.78941\\-200.5734\\39\\39.75761\\-198.8169\\39\\39.51723\\-195.7409\\39\\39.00574\\-192.5483\\39\\38.46976\\-190.2929\\39\\37.64039\\-187.6277\\39\\36.67556\\-185.2806\\39\\35.34\\-182.7097\\39\\33.48629\\-179.905\\39\\32.07675\\-178.2744\\39\\29.92944\\-176.3831\\39\\28.30461\\-175.3548\\39\\26.20537\\-174.3951\\39\\23.68919\\-173.7934\\39\\22.16423\\-173.6378\\39\\19.27844\\-173.7463\\39\\15.70568\\-174.3975\\39\\8.223543\\-176.3965\\39\\5.378874\\-177.0056\\39\\3.461764\\-177.2816\\39\\1.472076\\-177.4337\\39\\-0.4933432\\-177.4327\\39\\-2.466461\\-177.2858\\39\\-4.045619\\-177.0645\\39\\-7.23469\\-176.3978\\39\\-14.72956\\-174.3975\\39\\-18.29946\\-173.7507\\39\\-21.1878\\-173.6378\\39\\-22.71219\\-173.7935\\39\\-24.21482\\-174.0921\\39\\-26.08353\\-174.7365\\39\\-27.50921\\-175.4565\\39\\-28.95288\\-176.3831\\39\\-31.10019\\-178.2744\\39\\-32.50885\\-179.9039\\39\\-34.01783\\-182.1251\\39\\-35.48392\\-184.8132\\39\\-36.6627\\-187.6236\\39\\-37.48743\\-190.283\\39\\-38.03294\\-192.571\\39\\-38.54067\\-195.7409\\39\\-38.78103\\-198.8165\\39\\-38.81285\\-200.5735\\39\\-38.69593\\-203.3363\\39\\-38.36618\\-205.9219\\39\\-37.77484\\-209.0889\\39\\-36.61217\\-212.9868\\39\\-35.56226\\-215.6108\\39\\-34.15272\\-218.4678\\39\\-32.90222\\-220.5102\\39\\-31.56038\\-222.4393\\39\\-29.92792\\-224.5071\\39\\-27.40102\\-227.1654\\39\\-25.58439\\-228.7745\\39\\-22.52944\\-231.0681\\39\\-19.83947\\-232.6957\\39\\-17.66599\\-233.815\\39\\-15.3811\\-234.8158\\39\\-13.51527\\-235.513\\39\\-10.39749\\-236.4391\\39\\-6.884175\\-237.1998\\39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "84"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.3400956\\-237.2985\\41\\-3.233385\\-237.1493\\41\\-7.737672\\-236.492\\41\\-10.04799\\-235.9853\\41\\-14.54029\\-234.5463\\41\\-17.77674\\-233.0933\\41\\-19.93046\\-231.9582\\41\\-21.18027\\-231.2044\\41\\-24.37808\\-228.9078\\41\\-25.76576\\-227.7526\\41\\-27.87546\\-225.7523\\41\\-28.98915\\-224.5288\\41\\-30.57085\\-222.6016\\41\\-32.3194\\-220.1352\\41\\-33.69656\\-217.7817\\41\\-35.36361\\-214.1454\\41\\-36.01065\\-212.458\\41\\-36.9594\\-209.23\\41\\-37.35035\\-207.4368\\41\\-37.71606\\-205.0721\\41\\-37.97752\\-202.5728\\41\\-38.0004\\-198.8415\\41\\-37.85862\\-196.5713\\41\\-37.44385\\-193.8403\\41\\-36.6803\\-190.4399\\41\\-35.73935\\-187.5616\\41\\-34.26327\\-184.3181\\41\\-33.04035\\-182.2709\\41\\-32.26568\\-181.1462\\41\\-30.9919\\-179.5856\\41\\-29.96336\\-178.5467\\41\\-28.67622\\-177.472\\41\\-26.37898\\-176.059\\41\\-24.77358\\-175.3962\\41\\-22.06712\\-174.7763\\41\\-20.15941\\-174.6766\\41\\-18.57177\\-174.7414\\41\\-16.59039\\-174.9821\\41\\-14.53618\\-175.3825\\41\\-7.747453\\-177.0903\\41\\-6.204718\\-177.444\\41\\-3.500894\\-177.9178\\41\\-0.8682781\\-178.1636\\41\\1.530129\\-178.186\\41\\4.511961\\-177.9179\\41\\8.733384\\-177.0879\\41\\15.51274\\-175.3825\\41\\17.56694\\-174.9821\\41\\19.54817\\-174.7414\\41\\21.12675\\-174.676\\41\\23.05467\\-174.777\\41\\25.82758\\-175.4239\\41\\27.34306\\-176.0523\\41\\29.65279\\-177.472\\41\\30.93995\\-178.5467\\41\\31.96724\\-179.5837\\41\\33.43142\\-181.3729\\41\\34.50909\\-182.9986\\41\\35.295\\-184.4318\\41\\36.3792\\-186.71\\41\\37.36567\\-189.5115\\41\\37.84663\\-191.1509\\41\\38.42079\\-193.8375\\41\\38.83489\\-196.5692\\41\\38.97879\\-198.8264\\41\\38.95415\\-202.5714\\41\\38.69285\\-205.0701\\41\\38.26485\\-207.6837\\41\\37.50433\\-210.8386\\41\\36.33387\\-214.1667\\41\\34.67833\\-217.7717\\41\\33.29601\\-220.1352\\41\\31.54742\\-222.6016\\41\\29.96554\\-224.5292\\41\\28.83795\\-225.7647\\41\\26.74392\\-227.7472\\41\\25.35453\\-228.9079\\41\\22.14914\\-231.209\\41\\18.73229\\-233.1064\\41\\15.43164\\-234.5793\\41\\11.00961\\-235.9893\\41\\8.710009\\-236.4923\\41\\4.328912\\-237.12\\41\\1.313616\\-237.2967\\41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "84"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.955154\\-236.2846\\43\\-2.707301\\-236.501\\43\\1.202072\\-236.6001\\43\\4.107514\\-236.4532\\43\\5.930137\\-236.2856\\43\\8.445067\\-235.865\\43\\10.48218\\-235.4241\\43\\14.03991\\-234.3177\\43\\16.11947\\-233.5263\\43\\19.04493\\-232.1423\\43\\20.98556\\-231.0457\\43\\22.73697\\-229.8897\\43\\24.68273\\-228.4667\\43\\27.00895\\-226.4374\\43\\29.76091\\-223.5387\\43\\30.65047\\-222.4255\\43\\32.23809\\-220.2175\\43\\33.41503\\-218.2785\\43\\34.36595\\-216.4765\\43\\36.01795\\-212.5974\\43\\36.93511\\-209.5831\\43\\37.32171\\-207.9585\\43\\37.70532\\-205.8017\\43\\37.97639\\-203.3611\\43\\38.06329\\-201.6431\\43\\38.00877\\-197.9967\\43\\37.66869\\-194.8309\\43\\36.87068\\-191.1074\\43\\35.73542\\-187.7982\\43\\34.77942\\-185.6406\\43\\33.44427\\-183.2631\\43\\32.25814\\-181.6049\\43\\30.33052\\-179.5509\\43\\28.85168\\-178.3182\\43\\27.01671\\-177.2258\\43\\25.64424\\-176.63\\43\\23.84089\\-176.1033\\43\\21.49493\\-175.8133\\43\\19.59134\\-175.8229\\43\\17.38559\\-176.0377\\43\\13.4158\\-176.8141\\43\\10.13593\\-177.6155\\43\\6.292988\\-178.4255\\43\\2.716954\\-178.8667\\43\\0.65814\\-178.9406\\43\\-1.74198\\-178.8663\\43\\-5.316413\\-178.4255\\43\\-9.159284\\-177.6155\\43\\-12.43955\\-176.814\\43\\-16.40882\\-176.0378\\43\\-18.61486\\-175.8229\\43\\-20.53669\\-175.8165\\43\\-23.13804\\-176.1575\\43\\-25.36633\\-176.8953\\43\\-27.03267\\-177.7669\\43\\-28.30706\\-178.6481\\43\\-29.3285\\-179.5227\\43\\-31.2833\\-181.6073\\43\\-32.51058\\-183.3202\\43\\-33.80414\\-185.6419\\43\\-34.75871\\-187.798\\43\\-35.8939\\-191.1069\\43\\-36.69219\\-194.8313\\43\\-36.99111\\-197.5941\\43\\-37.11143\\-201.0014\\43\\-36.99994\\-203.3603\\43\\-36.72874\\-205.8024\\43\\-36.33923\\-207.9854\\43\\-35.95862\\-209.5827\\43\\-35.04138\\-212.5974\\43\\-33.80167\\-215.5842\\43\\-32.58022\\-218.0595\\43\\-31.28763\\-220.1815\\43\\-29.67391\\-222.4255\\43\\-28.78436\\-223.5386\\43\\-26.7344\\-225.7667\\43\\-25.59165\\-226.8523\\43\\-23.70625\\-228.4667\\43\\-21.76042\\-229.8897\\43\\-18.66968\\-231.825\\43\\-15.93942\\-233.1724\\43\\-13.06401\\-234.3177\\43\\-10.81817\\-235.0614\\43\\-7.545309\\-235.8298\\43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "82"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.100227\\-235.7332\\45\\1.437713\\-235.8003\\45\\5.294383\\-235.5499\\45\\6.804339\\-235.3395\\45\\10.51384\\-234.5422\\45\\12.7683\\-233.8944\\45\\15.00934\\-233.0731\\45\\17.38166\\-232.0212\\45\\19.0458\\-231.1523\\45\\21.10321\\-229.9139\\45\\22.53\\-228.9478\\45\\25.12174\\-226.8947\\45\\26.87385\\-225.2957\\45\\28.26976\\-223.7979\\45\\30.55404\\-220.9503\\45\\32.14964\\-218.4886\\45\\33.48821\\-216.0404\\45\\34.92249\\-212.6543\\45\\35.88692\\-209.5876\\45\\36.32925\\-207.7695\\45\\36.75126\\-205.1409\\45\\37.04799\\-201.5114\\45\\36.95938\\-197.8098\\45\\36.60044\\-195.1116\\45\\35.8653\\-191.5822\\45\\35.50805\\-190.383\\45\\34.59135\\-187.9586\\45\\33.69322\\-186.0481\\45\\32.8547\\-184.5539\\45\\31.87257\\-183.0983\\45\\30.4122\\-181.36\\45\\28.13129\\-179.4048\\45\\26.90944\\-178.656\\45\\25.15255\\-177.8439\\45\\22.8357\\-177.2106\\45\\21.33761\\-177.023\\45\\19.37333\\-176.983\\45\\17.72774\\-177.0813\\45\\14.55401\\-177.5571\\45\\8.662991\\-178.7782\\45\\6.573238\\-179.168\\45\\3.933375\\-179.5311\\45\\1.705158\\-179.6717\\45\\-0.7371299\\-179.6709\\45\\-2.78506\\-179.5449\\45\\-5.572783\\-179.1703\\45\\-9.201396\\-178.4734\\45\\-11.53369\\-177.9544\\45\\-14.97319\\-177.3044\\45\\-17.92788\\-176.9971\\45\\-19.54189\\-176.9788\\45\\-22.29094\\-177.2938\\45\\-23.63145\\-177.659\\45\\-25.80092\\-178.5809\\45\\-27.11061\\-179.3631\\45\\-28.40954\\-180.3949\\45\\-29.43712\\-181.3611\\45\\-30.89596\\-183.0981\\45\\-31.87783\\-184.5536\\45\\-32.71107\\-186.0414\\45\\-33.5854\\-187.8715\\45\\-34.5313\\-190.3825\\45\\-34.88872\\-191.5822\\45\\-35.62388\\-195.1116\\45\\-35.9823\\-197.8023\\45\\-36.07149\\-201.5149\\45\\-35.77505\\-205.1384\\45\\-35.35269\\-207.7695\\45\\-34.91042\\-209.5873\\45\\-33.94565\\-212.6538\\45\\-33.03407\\-214.8826\\45\\-31.68403\\-217.6209\\45\\-29.57736\\-220.9505\\45\\-27.29504\\-223.796\\45\\-25.75001\\-225.4355\\45\\-24.14528\\-226.8943\\45\\-21.55342\\-228.9478\\45\\-18.6119\\-230.8521\\45\\-15.63765\\-232.3666\\45\\-11.795\\-233.8934\\45\\-9.539515\\-234.5415\\45\\-5.827325\\-235.3395\\45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "76"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "27"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.352002\\-234.8572\\47\\2.327949\\-234.8578\\47\\6.529886\\-234.396\\47\\9.582994\\-233.7909\\47\\12.01802\\-233.087\\47\\15.29542\\-231.8733\\47\\17.26853\\-230.9367\\47\\19.22566\\-229.8668\\47\\21.95089\\-228.0791\\47\\24.28699\\-226.2204\\47\\26.61855\\-223.9811\\47\\28.56215\\-221.7475\\47\\30.8011\\-218.5682\\47\\31.86789\\-216.702\\47\\32.7491\\-214.9375\\47\\33.90556\\-212.0882\\47\\34.85136\\-208.8762\\47\\35.32409\\-206.7744\\47\\35.58638\\-205.0795\\47\\35.87545\\-200.8659\\47\\35.82267\\-198.8716\\47\\35.271\\-194.4814\\47\\34.67645\\-191.9465\\47\\34.05193\\-189.9698\\47\\33.10344\\-187.7412\\47\\31.68133\\-185.2255\\47\\30.37927\\-183.4487\\47\\28.38676\\-181.4048\\47\\26.35579\\-179.9827\\47\\24.27835\\-179.0401\\47\\21.92644\\-178.4214\\47\\20.46898\\-178.2515\\47\\17.62013\\-178.2567\\47\\15.58224\\-178.4631\\47\\12.7661\\-178.8753\\47\\6.619486\\-179.9942\\47\\4.355937\\-180.2575\\47\\2.18924\\-180.4008\\47\\-0.1275444\\-180.4426\\47\\-2.663076\\-180.3201\\47\\-5.576665\\-179.9965\\47\\-13.10967\\-178.669\\47\\-16.73705\\-178.2459\\47\\-19.49224\\-178.2496\\47\\-20.9081\\-178.4081\\47\\-22.83438\\-178.8881\\47\\-23.87511\\-179.2603\\47\\-25.36547\\-179.9907\\47\\-27.41222\\-181.4064\\47\\-29.4066\\-183.4528\\47\\-30.70476\\-185.2254\\47\\-32.12716\\-187.7414\\47\\-33.07545\\-189.9703\\47\\-33.69988\\-191.9465\\47\\-34.29444\\-194.4814\\47\\-34.77962\\-198.0478\\47\\-34.90196\\-200.4547\\47\\-34.76553\\-203.2309\\47\\-34.6021\\-205.0937\\47\\-34.34883\\-206.7671\\47\\-33.87418\\-208.8779\\47\\-32.91704\\-212.0867\\47\\-31.77262\\-214.9375\\47\\-30.89486\\-216.6933\\47\\-29.81977\\-218.5779\\47\\-28.30831\\-220.8152\\47\\-27.15636\\-222.2609\\47\\-25.6508\\-223.9763\\47\\-23.54604\\-225.994\\47\\-21.40775\\-227.7592\\47\\-18.25686\\-229.8614\\47\\-16.29125\\-230.9366\\47\\-14.3218\\-231.8719\\47\\-11.04131\\-233.0871\\47\\-8.609464\\-233.7895\\47\\-5.532891\\-234.4047\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "78"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.586367\\-233.7692\\49\\-4.514985\\-233.403\\49\\-6.729055\\-233.0348\\49\\-9.032927\\-232.5018\\49\\-11.84868\\-231.6054\\49\\-14.23164\\-230.625\\49\\-16.59274\\-229.4488\\49\\-18.94414\\-227.9973\\49\\-20.4453\\-226.9577\\49\\-22.41385\\-225.3631\\49\\-23.49748\\-224.362\\49\\-25.29828\\-222.4891\\49\\-26.95232\\-220.4763\\49\\-28.30385\\-218.5452\\49\\-29.14141\\-217.1767\\49\\-30.57886\\-214.3882\\49\\-31.96657\\-210.8574\\49\\-32.92613\\-207.0903\\49\\-33.33209\\-204.6764\\49\\-33.51704\\-201.9398\\49\\-33.51541\\-199.7307\\49\\-33.34029\\-197.3005\\49\\-32.72715\\-193.7449\\49\\-32.17788\\-191.8219\\49\\-31.63612\\-190.2728\\49\\-30.92518\\-188.6159\\49\\-29.47046\\-186.1052\\49\\-28.73272\\-185.0459\\49\\-27.46505\\-183.6122\\49\\-26.28099\\-182.5291\\49\\-24.96325\\-181.5919\\49\\-23.78745\\-180.9234\\49\\-21.21263\\-179.9911\\49\\-19.43706\\-179.6503\\49\\-17.06289\\-179.5035\\49\\-15.2568\\-179.5542\\49\\-10.79308\\-180.0697\\49\\-5.359003\\-180.8951\\49\\-1.9823\\-181.1865\\49\\0.4868818\\-181.2394\\49\\2.957352\\-181.1866\\49\\6.328884\\-180.896\\49\\11.76956\\-180.0697\\49\\16.23252\\-179.5542\\49\\18.03996\\-179.5037\\49\\20.36407\\-179.6425\\49\\21.90669\\-179.9239\\49\\23.59489\\-180.4357\\49\\25.01028\\-181.059\\49\\27.27857\\-182.5436\\49\\29.04501\\-184.2726\\49\\30.44515\\-186.1025\\49\\31.90175\\-188.6159\\49\\32.61268\\-190.2728\\49\\33.15444\\-191.8219\\49\\33.70371\\-193.7449\\49\\34.31683\\-197.3083\\49\\34.47989\\-199.67\\49\\34.49369\\-201.9434\\49\\34.28286\\-204.7752\\49\\33.90208\\-207.0959\\49\\32.94308\\-210.8574\\49\\31.5554\\-214.3883\\49\\30.11962\\-217.1731\\49\\29.28031\\-218.5453\\49\\27.86812\\-220.5497\\49\\26.73426\\-221.9643\\49\\25.34393\\-223.4911\\49\\23.36901\\-225.3817\\49\\21.38063\\-226.9917\\49\\20.11714\\-227.8702\\49\\17.56931\\-229.4488\\49\\15.2082\\-230.625\\49\\12.82524\\-231.6054\\49\\10.00915\\-232.502\\49\\8.02219\\-232.9743\\49\\5.513772\\-233.3979\\49\\1.782654\\-233.7549\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "76"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "29"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.4788265\\-232.4674\\51\\2.913418\\-232.3855\\51\\6.284549\\-231.978\\51\\8.513913\\-231.5119\\51\\11.24444\\-230.7303\\51\\13.76363\\-229.7963\\51\\15.26823\\-229.0834\\51\\17.53312\\-227.8738\\51\\18.91449\\-227.01\\51\\21.63127\\-224.9897\\51\\23.28301\\-223.5265\\51\\25.27138\\-221.4612\\51\\26.79997\\-219.5609\\51\\28.04951\\-217.7491\\51\\29.70911\\-214.8422\\51\\30.93\\-212.0411\\51\\31.59792\\-210.1046\\51\\32.29706\\-207.4125\\51\\32.70765\\-205.1378\\51\\32.94046\\-202.5233\\51\\32.93384\\-200.3055\\51\\32.72424\\-197.1287\\51\\32.5313\\-195.9349\\51\\31.93222\\-193.2978\\51\\31.28674\\-191.4237\\51\\30.51685\\-189.5914\\51\\29.52436\\-187.8418\\51\\28.43461\\-186.2404\\51\\27.58209\\-185.2284\\51\\26.11936\\-183.8802\\51\\24.04256\\-182.4999\\51\\22.06322\\-181.6479\\51\\20.61372\\-181.2627\\51\\18.3985\\-180.9224\\51\\15.66515\\-180.8663\\51\\12.95305\\-181.0412\\51\\9.919917\\-181.4013\\51\\4.926303\\-181.9264\\51\\1.477127\\-182.1143\\51\\-0.5807838\\-182.1148\\51\\-3.949467\\-181.9264\\51\\-8.943355\\-181.4013\\51\\-11.97649\\-181.0412\\51\\-14.68858\\-180.8663\\51\\-17.42187\\-180.9224\\51\\-19.65405\\-181.2605\\51\\-21.64181\\-181.8331\\51\\-23.06819\\-182.5018\\51\\-24.66653\\-183.5275\\51\\-26.08599\\-184.7231\\51\\-27.03238\\-185.7309\\51\\-27.99373\\-186.9772\\51\\-29.54024\\-189.5913\\51\\-30.31016\\-191.4237\\51\\-30.95569\\-193.298\\51\\-31.53636\\-195.8363\\51\\-31.81158\\-197.7394\\51\\-31.94215\\-199.3501\\51\\-31.99932\\-201.6339\\51\\-31.73083\\-205.139\\51\\-31.32049\\-207.4125\\51\\-30.62136\\-210.1046\\51\\-29.95344\\-212.0411\\51\\-28.74346\\-214.8272\\51\\-27.77425\\-216.5827\\51\\-25.86349\\-219.496\\51\\-24.07564\\-221.6938\\51\\-22.29071\\-223.5446\\51\\-19.51143\\-225.896\\51\\-16.55571\\-227.8749\\51\\-14.29134\\-229.0836\\51\\-12.78707\\-229.7963\\51\\-10.26788\\-230.7303\\51\\-7.537351\\-231.5119\\51\\-5.307986\\-231.978\\51\\-1.734085\\-232.4022\\51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "74"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.9877779\\-230.9355\\53\\4.486869\\-230.7041\\53\\7.022734\\-230.2955\\53\\8.944558\\-229.8163\\53\\10.94564\\-229.1848\\53\\13.6383\\-228.0975\\53\\15.52082\\-227.1861\\53\\17.23051\\-226.1865\\53\\18.89039\\-225.078\\53\\21.45873\\-222.9931\\53\\23.6603\\-220.7808\\53\\25.06766\\-219.0926\\53\\26.45644\\-217.1164\\53\\27.6746\\-215.0903\\53\\28.86301\\-212.6291\\53\\29.64749\\-210.5279\\53\\30.28515\\-208.4486\\53\\30.71211\\-206.6179\\53\\31.02842\\-204.5966\\53\\31.20989\\-201.864\\53\\31.16084\\-199.3531\\53\\30.97486\\-197.6067\\53\\30.34172\\-194.4462\\53\\29.17732\\-191.1388\\53\\28.60739\\-189.9997\\53\\27.51967\\-188.2268\\53\\25.83354\\-186.2561\\53\\24.35108\\-184.9746\\53\\22.45431\\-183.8206\\53\\21.29148\\-183.3188\\53\\18.45971\\-182.5389\\53\\15.78529\\-182.2691\\53\\12.69964\\-182.2955\\53\\10.08759\\-182.4671\\53\\7.137596\\-182.7626\\53\\4.822176\\-182.9205\\53\\0.9723852\\-183.0581\\53\\-2.462666\\-182.9866\\53\\-6.189179\\-182.7598\\53\\-9.111023\\-182.4671\\53\\-11.72274\\-182.2956\\53\\-14.80881\\-182.269\\53\\-17.48314\\-182.5389\\53\\-20.3146\\-183.3187\\53\\-21.47771\\-183.8207\\53\\-23.37465\\-184.9749\\53\\-24.86145\\-186.2602\\53\\-26.54256\\-188.2262\\53\\-27.63078\\-189.9996\\53\\-28.20084\\-191.1387\\53\\-28.92394\\-193.0278\\53\\-29.51733\\-195.0057\\53\\-30.0009\\-197.6103\\53\\-30.18413\\-199.3416\\53\\-30.23373\\-201.8548\\53\\-30.08429\\-204.2943\\53\\-29.73396\\-206.6251\\53\\-29.30851\\-208.4488\\53\\-28.67107\\-210.5275\\53\\-27.88404\\-212.6292\\53\\-26.69554\\-215.0875\\53\\-25.48743\\-217.1053\\53\\-24.0894\\-219.0945\\53\\-22.66061\\-220.8107\\53\\-21.50497\\-222.0081\\53\\-19.70906\\-223.6477\\53\\-17.32664\\-225.4926\\53\\-14.55236\\-227.1779\\53\\-12.72484\\-228.0808\\53\\-9.971407\\-229.1838\\53\\-7.967996\\-229.8163\\53\\-6.046172\\-230.2955\\53\\-3.510362\\-230.704\\53\\-1.326811\\-230.8918\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "69"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.931477\\-229.067\\55\\0.5037407\\-229.1619\\55\\2.909452\\-229.0665\\55\\5.040643\\-228.8164\\55\\7.295846\\-228.3616\\55\\9.425772\\-227.8119\\55\\10.72097\\-227.3606\\55\\13.64646\\-226.1012\\55\\15.88495\\-224.8573\\55\\17.84682\\-223.5394\\55\\18.95674\\-222.6789\\55\\20.60209\\-221.2146\\55\\22.42559\\-219.3141\\55\\23.7379\\-217.6922\\55\\25.53761\\-214.9379\\55\\27.12781\\-211.6854\\55\\28.24475\\-208.4618\\55\\28.70173\\-206.5608\\55\\28.94021\\-205.0969\\55\\29.18653\\-202.0917\\55\\29.12651\\-199.624\\55\\28.92341\\-197.6218\\55\\28.32661\\-194.9262\\55\\27.77718\\-193.2782\\55\\27.01268\\-191.6519\\55\\25.54392\\-189.1922\\55\\24.37959\\-187.8965\\55\\22.95992\\-186.6362\\55\\21.97119\\-185.944\\55\\20.49822\\-185.1757\\55\\19.20589\\-184.6393\\55\\17.796\\-184.2572\\55\\15.15539\\-183.8459\\55\\13.55124\\-183.7513\\55\\10.2443\\-183.7425\\55\\6.348239\\-183.9617\\55\\2.780094\\-184.0823\\55\\-1.817295\\-184.082\\55\\-5.387124\\-183.9629\\55\\-9.268621\\-183.7425\\55\\-13.67699\\-183.7912\\55\\-16.81925\\-184.2571\\55\\-18.22933\\-184.6393\\55\\-19.52166\\-185.1757\\55\\-20.99463\\-185.944\\55\\-21.98336\\-186.6362\\55\\-23.40302\\-187.8965\\55\\-24.56736\\-189.1922\\55\\-26.03612\\-191.6519\\55\\-26.80019\\-193.2778\\55\\-27.45898\\-195.3237\\55\\-27.97836\\-197.8177\\55\\-28.14787\\-199.8485\\55\\-28.2149\\-202.0984\\55\\-28.04641\\-204.4785\\55\\-27.72893\\-206.5652\\55\\-27.26824\\-208.4617\\55\\-26.16336\\-211.6632\\55\\-24.561\\-214.9381\\55\\-22.76068\\-217.6932\\55\\-21.01845\\-219.8008\\55\\-18.59926\\-222.1508\\55\\-16.87041\\-223.5393\\55\\-14.90805\\-224.8582\\55\\-12.66214\\-226.1062\\55\\-10.89876\\-226.896\\55\\-8.444405\\-227.8139\\55\\-6.309231\\-228.363\\55\\-4.051909\\-228.8174\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "32"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.793279\\-226.9717\\57\\-4.598895\\-226.615\\57\\-6.08763\\-226.2953\\57\\-7.991784\\-225.7051\\57\\-10.11324\\-224.9261\\57\\-12.81841\\-223.5908\\57\\-15.02908\\-222.19\\57\\-17.59372\\-220.1392\\57\\-19.75173\\-217.8914\\57\\-21.63069\\-215.4707\\57\\-23.34215\\-212.4236\\57\\-24.35789\\-210.0593\\57\\-25.18137\\-207.4173\\57\\-25.57248\\-205.6027\\57\\-25.89632\\-202.1783\\57\\-25.83419\\-200.2823\\57\\-25.43758\\-197.2175\\57\\-24.93854\\-195.3036\\57\\-24.36317\\-193.7866\\57\\-23.64673\\-192.3625\\57\\-22.72882\\-190.9226\\57\\-21.80332\\-189.8069\\57\\-20.65436\\-188.7135\\57\\-19.54524\\-187.8382\\57\\-17.39332\\-186.6967\\57\\-15.7959\\-186.1086\\57\\-13.6237\\-185.6334\\57\\-11.70106\\-185.3875\\57\\-7.609021\\-185.2267\\57\\-2.400037\\-185.3348\\57\\3.371206\\-185.3348\\57\\8.579274\\-185.2257\\57\\12.67692\\-185.3876\\57\\14.59939\\-185.6335\\57\\16.77251\\-186.1086\\57\\18.36988\\-186.6967\\57\\20.5218\\-187.8382\\57\\21.63092\\-188.7135\\57\\22.77989\\-189.8069\\57\\23.70539\\-190.9226\\57\\24.62329\\-192.3625\\57\\25.33991\\-193.7872\\57\\25.94422\\-195.4058\\57\\26.41677\\-197.2344\\57\\26.81017\\-200.1715\\57\\26.86265\\-201.6363\\57\\26.79383\\-203.5401\\57\\26.54897\\-205.6027\\57\\26.15793\\-207.4173\\57\\25.33446\\-210.0593\\57\\24.31871\\-212.4236\\57\\22.60739\\-215.4704\\57\\21.03864\\-217.5256\\57\\18.57056\\-220.1393\\57\\16.00564\\-222.19\\57\\13.79497\\-223.5908\\57\\11.0898\\-224.9261\\57\\8.967829\\-225.7052\\57\\7.060122\\-226.2962\\57\\4.792458\\-226.7433\\57\\1.316508\\-227.0675\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "57"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "33"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.007898\\-224.1842\\59\\-5.633465\\-223.823\\59\\-7.388333\\-223.2772\\59\\-9.525916\\-222.4253\\59\\-12.24367\\-220.9544\\59\\-13.77391\\-219.9508\\59\\-15.91024\\-218.1614\\59\\-17.46073\\-216.5652\\59\\-19.10684\\-214.4567\\59\\-20.66047\\-211.8987\\59\\-21.75287\\-209.5192\\59\\-22.54363\\-206.882\\59\\-23.04093\\-204.2319\\59\\-23.13367\\-202.0268\\59\\-22.94877\\-199.426\\59\\-22.45282\\-196.7966\\59\\-21.77791\\-195.0977\\59\\-20.90553\\-193.3357\\59\\-20.24132\\-192.3807\\59\\-18.98284\\-190.9573\\59\\-18.16468\\-190.2555\\59\\-15.7657\\-188.727\\59\\-14.14937\\-188.0709\\59\\-11.10525\\-187.3542\\59\\-8.265779\\-187.0049\\59\\-5.726636\\-186.851\\59\\-3.29828\\-186.8177\\59\\6.715771\\-186.8536\\59\\9.642008\\-187.0367\\59\\12.08205\\-187.3533\\59\\15.13399\\-188.0757\\59\\16.74223\\-188.727\\59\\19.14125\\-190.2555\\59\\19.9594\\-190.9573\\59\\21.21788\\-192.3807\\59\\21.88209\\-193.3357\\59\\22.75447\\-195.0977\\59\\23.42877\\-196.7948\\59\\23.92281\\-199.4456\\59\\24.06277\\-200.9095\\59\\24.08795\\-202.9561\\59\\24.00546\\-204.2538\\59\\23.47472\\-207.0727\\59\\22.7294\\-209.5192\\59\\21.63708\\-211.8987\\59\\20.11054\\-214.439\\59\\18.78767\\-216.1893\\59\\16.33028\\-218.6924\\59\\14.76846\\-219.9596\\59\\13.21276\\-220.966\\59\\10.50257\\-222.4254\\59\\8.364835\\-223.2772\\59\\6.610652\\-223.823\\59\\4.977284\\-224.1879\\59\\2.007368\\-224.5406\\59\\0.4325693\\-224.6072\\59\\-1.004857\\-224.5432\\59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "34"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "1.764367\\-221.4984\\61\\3.654794\\-221.3179\\61\\7.203878\\-220.4183\\61\\9.339288\\-219.5722\\61\\11.9681\\-218.0688\\61\\13.79902\\-216.7584\\61\\16.1487\\-214.3184\\61\\17.52622\\-212.6309\\61\\18.7694\\-210.4807\\61\\19.94951\\-207.6994\\61\\20.42612\\-205.7367\\61\\20.73337\\-203.3174\\61\\20.80488\\-201.5498\\61\\20.64866\\-200.0113\\61\\20.26042\\-198.1714\\61\\19.07385\\-195.3121\\61\\17.64525\\-193.3923\\61\\15.65859\\-191.6211\\61\\13.04623\\-190.3073\\61\\10.32528\\-189.4553\\61\\8.439642\\-189.1374\\61\\5.345034\\-188.8738\\61\\0.4571372\\-188.6552\\61\\-4.352931\\-188.8738\\61\\-7.530559\\-189.145\\61\\-9.348761\\-189.4554\\61\\-10.60953\\-189.7913\\61\\-12.46985\\-190.4942\\61\\-14.68204\\-191.6211\\61\\-16.66868\\-193.3923\\61\\-18.09729\\-195.3121\\61\\-19.2845\\-198.1844\\61\\-19.66375\\-199.9591\\61\\-19.83198\\-201.5849\\61\\-19.75667\\-203.3159\\61\\-19.45048\\-205.7354\\61\\-18.97295\\-207.6994\\61\\-17.77633\\-210.5106\\61\\-16.50928\\-212.6572\\61\\-15.1487\\-214.3571\\61\\-12.88452\\-216.7218\\61\\-11.55351\\-217.7256\\61\\-9.578808\\-218.9419\\61\\-7.648614\\-219.8824\\61\\-5.095757\\-220.774\\61\\-2.682042\\-221.3173\\61\\-0.5944416\\-221.5246\\61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.116315\\-217.5211\\63\\2.525019\\-217.4579\\63\\4.246804\\-217.1772\\63\\6.333959\\-216.5989\\63\\8.590102\\-215.5211\\63\\10.15074\\-214.5676\\63\\11.27054\\-213.6739\\63\\13.19327\\-211.6382\\63\\14.96154\\-208.9368\\63\\15.64968\\-207.4078\\63\\16.21769\\-205.4836\\63\\16.57324\\-202.9722\\63\\16.40019\\-202.2493\\63\\16.41231\\-200.831\\63\\15.95592\\-199.0985\\63\\14.74458\\-196.5793\\63\\13.62659\\-195.1967\\63\\12.09371\\-194.0262\\63\\10.4419\\-193.0549\\63\\8.833938\\-192.4071\\63\\7.166197\\-191.9658\\63\\4.288877\\-191.4669\\63\\2.13356\\-191.2932\\63\\-0.7566112\\-191.2767\\63\\-3.418837\\-191.4973\\63\\-6.217521\\-191.9706\\63\\-7.865997\\-192.4099\\63\\-9.935484\\-193.2915\\63\\-11.92157\\-194.5695\\63\\-12.6587\\-195.2066\\63\\-13.77571\\-196.5776\\63\\-14.97968\\-199.098\\63\\-15.43575\\-200.8311\\63\\-15.42365\\-202.2478\\63\\-15.59671\\-202.9725\\63\\-15.24105\\-205.483\\63\\-14.67312\\-207.4078\\63\\-13.985\\-208.9368\\63\\-12.4394\\-211.3325\\63\\-10.295\\-213.6731\\63\\-9.101588\\-214.6196\\63\\-8.217945\\-215.14\\63\\-5.360232\\-216.5986\\63\\-3.26926\\-217.1783\\63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "33"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.5933019\\-211.6764\\65\\1.5833\\-211.6789\\65\\2.160541\\-211.4577\\65\\2.975951\\-211.5574\\65\\5.119955\\-210.6432\\65\\6.759023\\-209.634\\65\\7.755369\\-208.6972\\65\\8.492185\\-207.7591\\65\\9.450212\\-205.9687\\65\\9.887464\\-204.6694\\65\\10.13643\\-203.2983\\65\\9.873201\\-201.1\\65\\8.385763\\-198.5388\\65\\7.587423\\-197.7187\\65\\6.257915\\-197.046\\65\\3.591137\\-196.0411\\65\\2.492168\\-195.7818\\65\\0.6393334\\-195.6101\\65\\-1.485472\\-195.7764\\65\\-2.646059\\-196.0535\\65\\-4.571265\\-196.7523\\65\\-6.576953\\-197.6478\\65\\-7.758991\\-199.0457\\65\\-8.613137\\-200.4699\\65\\-9.128022\\-201.8906\\65\\-9.161495\\-203.2404\\65\\-8.908936\\-204.6779\\65\\-8.082075\\-206.8487\\65\\-6.786169\\-208.657\\65\\-5.777151\\-209.6353\\65\\-4.145667\\-210.6442\\65\\-1.99099\\-211.5607\\65\\-1.183566\\-211.4585\\65"
+                     }
+                  }
+               ]
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "5"
+            }
+         },
+         {
+            "3006,002a" : {
+               "Name" : "ROIDisplayColor",
+               "Type" : "String",
+               "Value" : "128\\64\\64"
+            },
+            "3006,0040" : {
+               "Name" : "ContourSequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "0"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "13.69339\\-153.7846\\-71\\13.55374\\-151.832\\-71\\13.13763\\-149.9193\\-71\\12.45355\\-148.0851\\-71\\11.5154\\-146.3671\\-71\\10.34229\\-144.8\\-71\\8.958109\\-143.4158\\-71\\7.391023\\-142.2427\\-71\\5.672937\\-141.3045\\-71\\3.838827\\-140.6204\\-71\\1.92603\\-140.2043\\-71\\-0.02651533\\-140.0647\\-71\\-1.979061\\-140.2043\\-71\\-3.891858\\-140.6204\\-71\\-5.725968\\-141.3045\\-71\\-7.444054\\-142.2427\\-71\\-9.01114\\-143.4158\\-71\\-10.39532\\-144.8\\-71\\-11.56843\\-146.3671\\-71\\-12.50658\\-148.0851\\-71\\-13.19066\\-149.9193\\-71\\-13.60677\\-151.832\\-71\\-13.74642\\-153.7846\\-71\\-13.60677\\-155.7371\\-71\\-13.19066\\-157.6499\\-71\\-12.50658\\-159.484\\-71\\-11.56843\\-161.2021\\-71\\-10.39532\\-162.7692\\-71\\-9.01114\\-164.1534\\-71\\-7.444054\\-165.3265\\-71\\-5.725968\\-166.2646\\-71\\-3.891858\\-166.9487\\-71\\-1.979061\\-167.3648\\-71\\-0.02651533\\-167.5045\\-71\\1.92603\\-167.3648\\-71\\3.838827\\-166.9487\\-71\\5.672937\\-166.2646\\-71\\7.391023\\-165.3265\\-71\\8.958109\\-164.1534\\-71\\10.34229\\-162.7692\\-71\\11.5154\\-161.2021\\-71\\12.45355\\-159.484\\-71\\13.13763\\-157.6499\\-71\\13.55374\\-155.7371\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "1"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-5.148041\\-165.9794\\-69\\-5.15705\\-165.9716\\-69\\-7.148041\\-164.7573\\-69\\-8.215205\\-163.9716\\-69\\-9.148041\\-163.2319\\-69\\-10.30565\\-161.9716\\-69\\-11.14804\\-160.8723\\-69\\-11.81296\\-159.9716\\-69\\-12.55688\\-157.9716\\-69\\-13.14804\\-156.3745\\-69\\-13.33953\\-155.9716\\-69\\-13.65681\\-153.9716\\-69\\-13.60259\\-151.9716\\-69\\-13.14804\\-150.3049\\-69\\-13.03693\\-149.9716\\-69\\-12.3037\\-147.9716\\-69\\-11.47041\\-145.9716\\-69\\-11.14804\\-145.6113\\-69\\-9.866431\\-143.9716\\-69\\-9.148041\\-143.2319\\-69\\-7.387711\\-141.9716\\-69\\-7.148041\\-141.7673\\-69\\-5.148041\\-140.745\\-69\\-3.148041\\-140.1884\\-69\\-2.488467\\-139.9716\\-69\\-1.148041\\-139.5753\\-69\\0.8519591\\-139.5077\\-69\\2.851959\\-139.9034\\-69\\2.99712\\-139.9716\\-69\\4.851959\\-140.5932\\-69\\6.851959\\-141.3352\\-69\\7.781647\\-141.9716\\-69\\8.851959\\-142.7456\\-69\\10.12097\\-143.9716\\-69\\10.85196\\-144.7939\\-69\\11.71669\\-145.9716\\-69\\12.59853\\-147.9716\\-69\\12.85196\\-148.4069\\-69\\13.53753\\-149.9716\\-69\\13.78946\\-151.9716\\-69\\13.81931\\-153.9716\\-69\\13.66591\\-155.9716\\-69\\13.09334\\-157.9716\\-69\\12.85196\\-158.3018\\-69\\11.97572\\-159.9716\\-69\\10.85196\\-161.759\\-69\\10.66047\\-161.9716\\-69\\8.851959\\-163.8889\\-69\\8.764658\\-163.9716\\-69\\6.851959\\-165.1415\\-69\\5.351959\\-165.9716\\-69\\4.851959\\-166.3369\\-69\\2.851959\\-166.7397\\-69\\0.8519591\\-166.9805\\-69\\-1.148041\\-166.9536\\-69\\-3.148041\\-166.6639\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "2"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.148041\\-166.1237\\-67\\-3.431825\\-165.9716\\-67\\-5.148041\\-165.3066\\-67\\-7.148041\\-164.225\\-67\\-7.434863\\-163.9716\\-67\\-9.148041\\-162.6639\\-67\\-9.816612\\-161.9716\\-67\\-11.14804\\-160.2064\\-67\\-11.36482\\-159.9716\\-67\\-12.2759\\-157.9716\\-67\\-12.84804\\-155.9716\\-67\\-13.14804\\-154.8466\\-67\\-13.38942\\-153.9716\\-67\\-13.40147\\-151.9716\\-67\\-13.14804\\-150.9438\\-67\\-12.90666\\-149.9716\\-67\\-12.30225\\-147.9716\\-67\\-11.58362\\-145.9716\\-67\\-11.14804\\-145.4571\\-67\\-10.01544\\-143.9716\\-67\\-9.148041\\-143.0314\\-67\\-7.83693\\-141.9716\\-67\\-7.148041\\-141.4371\\-67\\-5.148041\\-140.4261\\-67\\-4.0451\\-139.9716\\-67\\-3.148041\\-139.5855\\-67\\-1.148041\\-139.1744\\-67\\0.8519591\\-139.11\\-67\\2.851959\\-139.2997\\-67\\4.851959\\-139.9637\\-67\\4.86206\\-139.9716\\-67\\6.851959\\-140.9232\\-67\\8.587959\\-141.9716\\-67\\8.851959\\-142.2007\\-67\\10.66047\\-143.9716\\-67\\10.85196\\-144.1746\\-67\\12.02353\\-145.9716\\-67\\12.85196\\-147.522\\-67\\13.17433\\-147.9716\\-67\\13.73354\\-149.9716\\-67\\13.90175\\-151.9716\\-67\\13.89704\\-153.9716\\-67\\13.70846\\-155.9716\\-67\\13.08113\\-157.9716\\-67\\12.85196\\-158.2662\\-67\\11.89696\\-159.9716\\-67\\10.85196\\-161.4538\\-67\\10.40684\\-161.9716\\-67\\8.851959\\-163.5077\\-67\\8.281589\\-163.9716\\-67\\6.851959\\-164.8777\\-67\\4.851959\\-165.7181\\-67\\4.140421\\-165.9716\\-67\\2.851959\\-166.3877\\-67\\0.8519591\\-166.6966\\-67\\-1.148041\\-166.6365\\-67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "3"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.148041\\-166.0397\\-65\\-1.321118\\-165.9716\\-65\\-3.148041\\-165.4287\\-65\\-5.148041\\-164.9246\\-65\\-6.640688\\-163.9716\\-65\\-7.148041\\-163.5456\\-65\\-9.148041\\-162.025\\-65\\-9.201476\\-161.9716\\-65\\-10.73189\\-159.9716\\-65\\-11.14804\\-159.4678\\-65\\-12.04444\\-157.9716\\-65\\-12.52642\\-155.9716\\-65\\-13.00935\\-153.9716\\-65\\-13.14804\\-152.0716\\-65\\-13.15585\\-151.9716\\-65\\-13.14804\\-151.9345\\-65\\-12.80389\\-149.9716\\-65\\-12.30082\\-147.9716\\-65\\-11.6909\\-145.9716\\-65\\-11.14804\\-145.293\\-65\\-10.164\\-143.9716\\-65\\-9.148041\\-142.8279\\-65\\-8.18831\\-141.9716\\-65\\-7.148041\\-141.1767\\-65\\-5.221811\\-139.9716\\-65\\-5.148041\\-139.9034\\-65\\-3.148041\\-139.2216\\-65\\-1.148041\\-138.9093\\-65\\0.8519591\\-138.8471\\-65\\2.851959\\-138.9716\\-65\\4.851959\\-139.3425\\-65\\6.070709\\-139.9716\\-65\\6.851959\\-140.4261\\-65\\8.851959\\-141.5456\\-65\\9.302939\\-141.9716\\-65\\10.85196\\-143.5105\\-65\\11.28754\\-143.9716\\-65\\12.42603\\-145.9716\\-65\\12.85196\\-146.648\\-65\\13.54427\\-147.9716\\-65\\13.89451\\-149.9716\\-65\\14.03251\\-151.9716\\-65\\13.98028\\-153.9716\\-65\\13.74326\\-155.9716\\-65\\13.08113\\-157.9716\\-65\\12.85196\\-158.2512\\-65\\11.81625\\-159.9716\\-65\\10.85196\\-161.1988\\-65\\10.16805\\-161.9716\\-65\\8.851959\\-163.2094\\-65\\7.791809\\-163.9716\\-65\\6.851959\\-164.6295\\-65\\4.851959\\-165.2928\\-65\\2.851959\\-165.7801\\-65\\1.951959\\-165.9716\\-65\\0.8519591\\-166.2007\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "4"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "14.39637\\-151.9821\\-63\\14.25672\\-150.0296\\-63\\13.84062\\-148.1168\\-63\\13.15653\\-146.2827\\-63\\12.21838\\-144.5646\\-63\\11.04528\\-142.9975\\-63\\9.661092\\-141.6133\\-63\\8.094006\\-140.4402\\-63\\6.37592\\-139.5021\\-63\\4.54181\\-138.818\\-63\\2.629012\\-138.4019\\-63\\0.6764669\\-138.2622\\-63\\-1.276079\\-138.4019\\-63\\-3.188876\\-138.818\\-63\\-5.022986\\-139.5021\\-63\\-6.741072\\-140.4402\\-63\\-8.308158\\-141.6133\\-63\\-9.692343\\-142.9975\\-63\\-10.86545\\-144.5646\\-63\\-11.80359\\-146.2827\\-63\\-12.48768\\-148.1168\\-63\\-12.90379\\-150.0296\\-63\\-13.04343\\-151.9821\\-63\\-12.90379\\-153.9347\\-63\\-12.48768\\-155.8475\\-63\\-11.80359\\-157.6816\\-63\\-10.86545\\-159.3997\\-63\\-9.692343\\-160.9668\\-63\\-8.308158\\-162.351\\-63\\-6.741072\\-163.524\\-63\\-5.022986\\-164.4622\\-63\\-3.188876\\-165.1463\\-63\\-1.276079\\-165.5624\\-63\\0.6764669\\-165.702\\-63\\2.629012\\-165.5624\\-63\\4.54181\\-165.1463\\-63\\6.37592\\-164.4622\\-63\\8.094006\\-163.524\\-63\\9.661092\\-162.351\\-63\\11.04528\\-160.9668\\-63\\12.21838\\-159.3997\\-63\\13.15653\\-157.6816\\-63\\13.84062\\-155.8475\\-63\\14.25672\\-153.9347\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "5"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.148041\\-164.6571\\-61\\-4.969959\\-163.9716\\-61\\-5.148041\\-163.8745\\-61\\-7.148041\\-162.5874\\-61\\-7.833576\\-161.9716\\-61\\-9.148041\\-160.7201\\-61\\-9.838649\\-159.9716\\-61\\-11.14804\\-158.1054\\-61\\-11.27304\\-157.9716\\-61\\-12.02598\\-155.9716\\-61\\-12.46928\\-153.9716\\-61\\-12.6306\\-151.9716\\-61\\-12.52642\\-149.9716\\-61\\-12.24496\\-147.9716\\-61\\-11.77707\\-145.9716\\-61\\-11.14804\\-145.1358\\-61\\-10.32063\\-143.9716\\-61\\-9.148041\\-142.4618\\-61\\-8.679291\\-141.9716\\-61\\-7.148041\\-140.6614\\-61\\-6.170768\\-139.9716\\-61\\-5.148041\\-139.2793\\-61\\-3.148041\\-138.6705\\-61\\-1.148041\\-138.2129\\-61\\0.6940643\\-137.9716\\-61\\0.8519591\\-137.9483\\-61\\1.001959\\-137.9716\\-61\\2.851959\\-138.225\\-61\\4.851959\\-138.6772\\-61\\6.851959\\-139.3499\\-61\\7.771959\\-139.9716\\-61\\8.851959\\-140.7093\\-61\\10.2605\\-141.9716\\-61\\10.85196\\-142.6314\\-61\\11.90543\\-143.9716\\-61\\12.85196\\-145.4344\\-61\\13.25821\\-145.9716\\-61\\13.83077\\-147.9716\\-61\\14.03251\\-149.9716\\-61\\14.09586\\-151.9716\\-61\\14.00061\\-153.9716\\-61\\13.68758\\-155.9716\\-61\\12.85196\\-157.6818\\-61\\12.63518\\-157.9716\\-61\\11.36073\\-159.9716\\-61\\10.85196\\-160.5119\\-61\\9.33583\\-161.9716\\-61\\8.851959\\-162.4261\\-61\\6.851959\\-163.7063\\-61\\6.393136\\-163.9716\\-61\\4.851959\\-164.6503\\-61\\2.851959\\-164.9941\\-61\\0.8519591\\-165.1151\\-61\\-1.148041\\-165.0168\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "6"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.148041\\-164.1102\\-59\\-3.415647\\-163.9716\\-59\\-5.148041\\-163.3031\\-59\\-7.139911\\-161.9716\\-59\\-7.148041\\-161.9637\\-59\\-9.148041\\-160.1237\\-59\\-9.300215\\-159.9716\\-59\\-10.63927\\-157.9716\\-59\\-11.14804\\-157.143\\-59\\-11.79883\\-155.9716\\-59\\-12.29669\\-153.9716\\-59\\-12.42945\\-151.9716\\-59\\-12.39194\\-149.9716\\-59\\-12.19465\\-147.9716\\-59\\-11.7844\\-145.9716\\-59\\-11.14804\\-145.1216\\-59\\-10.34304\\-143.9716\\-59\\-9.148041\\-142.2765\\-59\\-8.85945\\-141.9716\\-59\\-7.148041\\-140.4537\\-59\\-6.520134\\-139.9716\\-59\\-5.148041\\-139.1406\\-59\\-3.148041\\-138.3474\\-59\\-1.991178\\-137.9716\\-59\\-1.148041\\-137.683\\-59\\0.8519591\\-137.4541\\-59\\2.851959\\-137.6274\\-59\\3.891175\\-137.9716\\-59\\4.851959\\-138.2939\\-59\\6.851959\\-139.111\\-59\\8.356161\\-139.9716\\-59\\8.851959\\-140.3474\\-59\\10.64773\\-141.9716\\-59\\10.85196\\-142.1999\\-59\\12.09505\\-143.9716\\-59\\12.85196\\-145.1132\\-59\\13.42738\\-145.9716\\-59\\13.85196\\-147.9716\\-59\\13.99546\\-149.9716\\-59\\14.01105\\-151.9716\\-59\\13.92004\\-153.9716\\-59\\13.57055\\-155.9716\\-59\\12.85196\\-157.1732\\-59\\12.3091\\-157.9716\\-59\\10.87521\\-159.9716\\-59\\10.85196\\-159.9948\\-59\\8.851959\\-161.8061\\-59\\8.677716\\-161.9716\\-59\\6.851959\\-163.2535\\-59\\5.143098\\-163.9716\\-59\\4.851959\\-164.137\\-59\\2.851959\\-164.6902\\-59\\0.8519591\\-164.8609\\-59\\-1.148041\\-164.7154\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.271281\\-164.1144\\-57\\-3.771281\\-163.4351\\-57\\-5.271281\\-162.8887\\-57\\-7.271281\\-161.4484\\-57\\-8.981404\\-159.8185\\-57\\-9.903447\\-158.8185\\-57\\-11.98291\\-154.8185\\-57\\-12.37776\\-152.3185\\-57\\-12.43219\\-150.3185\\-57\\-12.01284\\-146.8185\\-57\\-11.32857\\-145.3185\\-57\\-9.486599\\-142.3185\\-57\\-7.271281\\-140.0635\\-57\\-5.271281\\-139.0502\\-57\\-3.771281\\-138.1114\\-57\\-2.771281\\-137.7305\\-57\\0.7287188\\-137.2339\\-57\\2.728719\\-137.3661\\-57\\4.728719\\-137.7029\\-57\\6.728719\\-138.6215\\-57\\8.728719\\-139.7457\\-57\\9.228719\\-140.1428\\-57\\11.37872\\-142.3185\\-57\\12.43545\\-143.8185\\-57\\13.40675\\-145.8185\\-57\\13.82006\\-147.3185\\-57\\14.01332\\-148.8185\\-57\\14.06249\\-150.8185\\-57\\13.93082\\-153.3185\\-57\\13.4018\\-155.8185\\-57\\12.34539\\-157.8185\\-57\\10.72872\\-159.8165\\-57\\8.228719\\-161.9943\\-57\\6.728719\\-163.0251\\-57\\5.728719\\-163.4045\\-57\\3.728719\\-163.957\\-57\\0.7287188\\-164.4045\\-57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.7712812\\-162.3907\\-55\\-2.771281\\-161.903\\-55\\-5.271281\\-160.9637\\-55\\-7.271281\\-159.5261\\-55\\-9.465337\\-157.3185\\-55\\-10.46659\\-155.8185\\-55\\-11.481\\-153.8185\\-55\\-11.95412\\-152.3185\\-55\\-12.15075\\-150.3185\\-55\\-12.18795\\-148.8185\\-55\\-12.09488\\-146.8185\\-55\\-11.85187\\-145.3185\\-55\\-11.49982\\-144.3185\\-55\\-10.3678\\-142.3185\\-55\\-9.396281\\-140.8185\\-55\\-7.771281\\-138.9171\\-55\\-6.771281\\-138.0685\\-55\\-4.771281\\-137.0019\\-55\\-3.271281\\-136.0665\\-55\\-1.271281\\-135.5645\\-55\\0.7287188\\-135.3013\\-55\\2.728719\\-135.3946\\-55\\4.728719\\-135.7281\\-55\\6.296901\\-136.3185\\-55\\8.728719\\-137.673\\-55\\10.72872\\-139.5331\\-55\\11.93449\\-140.8185\\-55\\12.9705\\-142.3185\\-55\\13.44804\\-143.3185\\-55\\13.92794\\-144.8185\\-55\\14.32267\\-146.8185\\-55\\14.48337\\-148.3185\\-55\\14.39841\\-150.3185\\-55\\13.92515\\-152.8185\\-55\\13.32778\\-154.8185\\-55\\12.44833\\-156.3185\\-55\\11.34338\\-157.8185\\-55\\10.22872\\-158.9868\\-55\\6.728719\\-161.3464\\-55\\4.728719\\-161.9753\\-55\\2.728719\\-162.3988\\-55\\0.7287188\\-162.5742\\-55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.771281\\-160.4794\\-53\\-3.271281\\-160.0187\\-53\\-5.271281\\-159.106\\-53\\-6.271281\\-158.4856\\-53\\-7.67889\\-157.3185\\-53\\-8.771281\\-156.216\\-53\\-9.921006\\-154.8185\\-53\\-10.53123\\-153.8185\\-53\\-11.45093\\-151.8185\\-53\\-11.91314\\-150.3185\\-53\\-12.10858\\-148.8185\\-53\\-12.22991\\-146.8185\\-53\\-11.97614\\-144.3185\\-53\\-11.38256\\-142.3185\\-53\\-10.95748\\-141.3185\\-53\\-9.791958\\-139.3185\\-53\\-8.771281\\-138.0747\\-53\\-7.271281\\-136.6074\\-53\\-5.271281\\-135.212\\-53\\-3.271281\\-134.2706\\-53\\-1.271281\\-133.6957\\-53\\1.228719\\-133.4974\\-53\\3.228719\\-133.5724\\-53\\4.228719\\-133.7169\\-53\\5.728719\\-134.1446\\-53\\7.228719\\-134.7095\\-53\\8.228719\\-135.2521\\-53\\9.728719\\-136.2738\\-53\\11.39702\\-137.8185\\-53\\12.27336\\-138.8185\\-53\\13.30653\\-140.3185\\-53\\13.8515\\-141.3185\\-53\\14.40837\\-142.8185\\-53\\14.82524\\-144.3185\\-53\\15.06075\\-146.8185\\-53\\14.99249\\-148.8185\\-53\\14.8515\\-149.8185\\-53\\13.90512\\-152.8185\\-53\\12.42455\\-155.3185\\-53\\11.72872\\-156.1313\\-53\\9.728719\\-158.0586\\-53\\7.228719\\-159.5793\\-53\\4.728719\\-160.4521\\-53\\1.228719\\-160.8757\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.7287188\\-160.9344\\-51\\-1.271281\\-160.5247\\-51\\-3.771281\\-159.6612\\-51\\-4.771281\\-159.4098\\-51\\-6.271281\\-158.4668\\-51\\-8.125693\\-156.8185\\-51\\-9.964287\\-154.8185\\-51\\-11.27128\\-152.3339\\-51\\-11.95253\\-150.8185\\-51\\-12.24703\\-148.3185\\-51\\-12.30253\\-146.8185\\-51\\-11.91314\\-143.3185\\-51\\-11.51654\\-142.3185\\-51\\-10.61775\\-140.8185\\-51\\-9.846281\\-139.3185\\-51\\-9.099493\\-138.3185\\-51\\-7.624832\\-136.8185\\-51\\-6.771281\\-136.1162\\-51\\-4.771281\\-135.0282\\-51\\-3.271281\\-134.1122\\-51\\-1.271281\\-133.6372\\-51\\0.7287188\\-133.5338\\-51\\2.728719\\-133.5591\\-51\\4.728719\\-133.7492\\-51\\6.228719\\-134.2942\\-51\\8.728719\\-135.6202\\-51\\10.72872\\-137.3014\\-51\\11.72872\\-138.4046\\-51\\13.27978\\-140.3185\\-51\\13.9018\\-141.8185\\-51\\14.16837\\-142.8185\\-51\\14.92515\\-144.8185\\-51\\15.12716\\-146.8185\\-51\\14.91313\\-149.3185\\-51\\13.94546\\-152.3185\\-51\\13.2565\\-153.8185\\-51\\12.34769\\-155.3185\\-51\\11.22872\\-156.6797\\-51\\9.728719\\-157.9801\\-51\\8.228719\\-158.9643\\-51\\7.228719\\-159.4562\\-51\\4.228719\\-160.4297\\-51\\2.228719\\-160.8631\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.771281\\-160.5362\\-49\\-2.771281\\-160.126\\-49\\-4.771281\\-159.5163\\-49\\-5.771281\\-158.9917\\-49\\-7.211929\\-157.8185\\-49\\-8.849406\\-156.3185\\-49\\-10.43012\\-154.3185\\-49\\-11.48175\\-152.3185\\-49\\-12.01805\\-150.8185\\-49\\-12.32234\\-148.8185\\-49\\-12.37034\\-146.3185\\-49\\-11.85732\\-142.8185\\-49\\-9.880177\\-139.3185\\-49\\-9.118665\\-138.3185\\-49\\-7.771281\\-136.9865\\-49\\-6.771281\\-136.1436\\-49\\-3.771281\\-134.5172\\-49\\-3.271281\\-134.1488\\-49\\-1.271281\\-133.6807\\-49\\0.7287188\\-133.5674\\-49\\2.728719\\-133.5993\\-49\\4.728719\\-133.9018\\-49\\6.728719\\-134.6891\\-49\\8.728719\\-135.7245\\-49\\10.53541\\-137.3185\\-49\\12.38943\\-139.3185\\-49\\13.43509\\-140.8185\\-49\\14.43647\\-143.8185\\-49\\14.85372\\-145.3185\\-49\\15.01849\\-146.8185\\-49\\14.93082\\-148.8185\\-49\\14.57146\\-149.8185\\-49\\13.91313\\-152.3185\\-49\\12.94924\\-154.3185\\-49\\11.22872\\-156.6811\\-49\\9.728719\\-157.9994\\-49\\8.228719\\-159.0063\\-49\\6.228719\\-159.8848\\-49\\2.728719\\-160.9662\\-49\\0.7287188\\-161.0388\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.771281\\-160.4273\\-47\\-5.271281\\-159.399\\-47\\-6.771281\\-158.4478\\-47\\-8.083393\\-157.3185\\-47\\-9.921006\\-155.3185\\-47\\-11.39847\\-152.8185\\-47\\-11.96031\\-151.3185\\-47\\-12.41907\\-149.3185\\-47\\-12.5203\\-147.3185\\-47\\-12.42292\\-145.3185\\-47\\-11.97885\\-143.3185\\-47\\-11.42669\\-141.8185\\-47\\-10.32234\\-139.8185\\-47\\-9.271281\\-138.4354\\-47\\-7.643116\\-136.8185\\-47\\-6.271281\\-135.7706\\-47\\-4.271281\\-134.6848\\-47\\-2.771281\\-134.1192\\-47\\-0.7712812\\-133.6766\\-47\\1.228719\\-133.5776\\-47\\3.228719\\-133.6957\\-47\\5.228719\\-134.1505\\-47\\6.728719\\-134.7169\\-47\\9.228719\\-136.1891\\-47\\10.22872\\-137.0286\\-47\\11.50725\\-138.3185\\-47\\12.32524\\-139.3185\\-47\\13.50587\\-141.3185\\-47\\14.31205\\-143.3185\\-47\\14.83276\\-145.8185\\-47\\14.92659\\-147.3185\\-47\\14.82524\\-148.8185\\-47\\14.42075\\-150.8185\\-47\\13.92515\\-152.3185\\-47\\12.93467\\-154.3185\\-47\\11.90026\\-155.8185\\-47\\10.22872\\-157.5495\\-47\\8.228719\\-159.0278\\-47\\6.68751\\-159.8185\\-47\\4.728719\\-160.5219\\-47\\2.728719\\-160.9249\\-47\\1.228719\\-161.0191\\-47\\-0.2712812\\-160.9273\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.271281\\-159.9757\\-45\\-3.771281\\-159.5566\\-45\\-5.271281\\-158.9994\\-45\\-7.271281\\-157.4532\\-45\\-9.347207\\-155.3185\\-45\\-10.43747\\-153.8185\\-45\\-11.92669\\-150.8185\\-45\\-12.27323\\-148.3185\\-45\\-12.34628\\-146.8185\\-45\\-11.90907\\-142.8185\\-45\\-9.771281\\-138.8207\\-45\\-9.434689\\-138.3185\\-45\\-7.271281\\-136.186\\-45\\-3.771281\\-134.1264\\-45\\-1.771281\\-133.5841\\-45\\0.7287188\\-133.3391\\-45\\4.728719\\-133.6122\\-45\\6.728719\\-134.2219\\-45\\8.228719\\-135.0745\\-45\\9.728719\\-136.1583\\-45\\10.93011\\-137.3185\\-45\\12.29208\\-138.8185\\-45\\13.36414\\-140.3185\\-45\\13.92369\\-141.8185\\-45\\14.89841\\-144.8185\\-45\\15.05232\\-146.8185\\-45\\14.91468\\-148.8185\\-45\\14.05397\\-151.3185\\-45\\13.82778\\-152.3185\\-45\\13.3352\\-153.3185\\-45\\12.36054\\-154.8185\\-45\\10.72872\\-156.8978\\-45\\9.228719\\-158.0096\\-45\\7.728719\\-158.9456\\-45\\6.728719\\-159.4321\\-45\\4.728719\\-160.0075\\-45\\2.728719\\-160.4175\\-45\\0.7287188\\-160.512\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.771281\\-159.4847\\-43\\-4.271281\\-158.9249\\-43\\-5.271281\\-158.3877\\-43\\-7.271281\\-156.9082\\-43\\-9.271281\\-154.7764\\-43\\-9.98719\\-153.8185\\-43\\-11.37284\\-151.3185\\-43\\-11.90907\\-149.8185\\-43\\-12.18524\\-146.8185\\-43\\-12.11402\\-144.8185\\-43\\-11.89628\\-142.8185\\-43\\-10.0982\\-139.3185\\-43\\-9.946152\\-138.8185\\-43\\-9.271281\\-137.9948\\-43\\-7.636188\\-136.3185\\-43\\-5.271281\\-134.5922\\-43\\-3.271281\\-133.6026\\-43\\-1.271281\\-133.154\\-43\\0.7287188\\-132.9175\\-43\\2.728719\\-132.9981\\-43\\4.228719\\-133.1668\\-43\\6.228719\\-133.6325\\-43\\7.728719\\-134.2674\\-43\\9.228719\\-135.2188\\-43\\10.50267\\-136.3185\\-43\\12.3939\\-138.3185\\-43\\13.36443\\-139.8185\\-43\\13.87455\\-140.8185\\-43\\14.14001\\-141.8185\\-43\\14.90512\\-143.8185\\-43\\15.10372\\-144.8185\\-43\\15.27336\\-146.8185\\-43\\14.97543\\-148.8185\\-43\\13.49547\\-152.8185\\-43\\12.9028\\-153.8185\\-43\\10.87266\\-156.3185\\-43\\8.728719\\-158.0166\\-43\\6.728719\\-159.0696\\-43\\5.228719\\-159.5479\\-43\\2.728719\\-159.9478\\-43\\0.7287188\\-159.9829\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.271281\\-159.4829\\-41\\-3.271281\\-158.8726\\-41\\-5.271281\\-157.8497\\-41\\-7.170254\\-156.3185\\-41\\-9.271281\\-154.1263\\-41\\-10.52356\\-152.3185\\-41\\-11.41514\\-150.3185\\-41\\-12\\-148.3185\\-41\\-12.06371\\-144.8185\\-41\\-11.85187\\-142.8185\\-41\\-11.44603\\-141.8185\\-41\\-10.63766\\-140.3185\\-41\\-10.02244\\-138.8185\\-41\\-9.346281\\-137.8185\\-41\\-8.45844\\-136.8185\\-41\\-7.271281\\-135.6967\\-41\\-5.271281\\-134.136\\-41\\-4.271281\\-133.6913\\-41\\-1.271281\\-132.634\\-41\\0.7287188\\-132.2002\\-41\\2.728719\\-132.2521\\-41\\4.228719\\-132.5902\\-41\\6.228719\\-133.2351\\-41\\8.728719\\-134.2072\\-41\\11.22872\\-136.4643\\-41\\12.93227\\-138.3185\\-41\\13.27336\\-138.8185\\-41\\14.95854\\-142.8185\\-41\\15.38781\\-144.8185\\-41\\15.35591\\-147.3185\\-41\\14.89841\\-149.3185\\-41\\14.60818\\-149.8185\\-41\\13.44638\\-152.8185\\-41\\12.36761\\-154.3185\\-41\\10.72872\\-156.067\\-41\\9.728719\\-156.979\\-41\\8.228719\\-157.9997\\-41\\6.228719\\-158.8818\\-41\\4.728719\\-159.42\\-41\\2.728719\\-159.5921\\-41\\0.7287188\\-159.5993\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "16"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.771281\\-158.5638\\-39\\-4.271281\\-157.9542\\-39\\-5.271281\\-157.4098\\-39\\-7.271281\\-155.9649\\-39\\-8.426606\\-154.8185\\-39\\-9.965292\\-152.8185\\-39\\-10.96479\\-150.8185\\-39\\-11.49531\\-149.3185\\-39\\-11.92669\\-147.3185\\-39\\-12.00115\\-145.3185\\-39\\-11.91711\\-143.8185\\-39\\-11.48019\\-141.8185\\-39\\-10.93575\\-140.3185\\-39\\-9.924596\\-138.3185\\-39\\-8.367061\\-136.3185\\-39\\-7.271281\\-135.2373\\-39\\-5.771281\\-134.128\\-39\\-4.271281\\-133.2804\\-39\\-2.771281\\-132.6462\\-39\\-0.7712812\\-132.1057\\-39\\1.728719\\-131.9249\\-39\\4.728719\\-132.2144\\-39\\6.228719\\-132.6575\\-39\\7.728719\\-133.2907\\-39\\9.228719\\-134.136\\-39\\10.72872\\-135.2581\\-39\\11.79798\\-136.3185\\-39\\13.37057\\-138.3185\\-39\\14.37844\\-140.3185\\-39\\14.91622\\-141.8185\\-39\\15.35591\\-143.8185\\-39\\15.45033\\-145.3185\\-39\\15.36855\\-147.3185\\-39\\14.93494\\-149.3185\\-39\\14.39841\\-150.8185\\-39\\13.40526\\-152.8185\\-39\\11.86842\\-154.8185\\-39\\10.72872\\-155.9523\\-39\\8.728719\\-157.3934\\-39\\7.728719\\-157.9435\\-39\\6.228719\\-158.5452\\-39\\4.728719\\-159.0044\\-39\\1.728719\\-159.3126\\-39\\-0.7712812\\-159.0847\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.7287188\\-159.3848\\-37\\-1.771281\\-158.9603\\-37\\-3.271281\\-158.2324\\-37\\-5.271281\\-157.495\\-37\\-7.271281\\-155.9742\\-37\\-8.921281\\-154.3185\\-37\\-10.37284\\-152.3185\\-37\\-11.50318\\-149.8185\\-37\\-11.98151\\-148.3185\\-37\\-12.13145\\-146.3185\\-37\\-12.13145\\-144.8185\\-37\\-11.98019\\-142.8185\\-37\\-11.50073\\-141.3185\\-37\\-10.35461\\-138.8185\\-37\\-8.905896\\-136.8185\\-37\\-7.271281\\-135.195\\-37\\-5.271281\\-133.6869\\-37\\-3.271281\\-132.899\\-37\\-1.771281\\-132.1869\\-37\\0.7287188\\-131.8088\\-37\\2.728719\\-131.8531\\-37\\4.728719\\-132.115\\-37\\9.228719\\-134.2643\\-37\\10.72872\\-135.5533\\-37\\12.39024\\-137.3185\\-37\\13.45081\\-138.8185\\-37\\14.88598\\-142.3185\\-37\\15.37257\\-144.8185\\-37\\15.32006\\-146.8185\\-37\\14.89319\\-148.8185\\-37\\13.22872\\-152.718\\-37\\12.41455\\-153.8185\\-37\\10.72872\\-155.604\\-37\\9.228719\\-156.9263\\-37\\8.228719\\-157.5148\\-37\\6.228719\\-158.2907\\-37\\4.728719\\-159.0273\\-37\\2.728719\\-159.3427\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.771281\\-159.0158\\-35\\-5.271281\\-157.5469\\-35\\-6.271281\\-156.92\\-35\\-8.624831\\-154.8185\\-35\\-9.88938\\-153.3185\\-35\\-11.4067\\-150.8185\\-35\\-12.0138\\-148.8185\\-35\\-12.33163\\-146.3185\\-35\\-12.33163\\-144.8185\\-35\\-11.90907\\-141.8185\\-35\\-11.39551\\-140.3185\\-35\\-9.870337\\-137.8185\\-35\\-9.08514\\-136.8185\\-35\\-7.271281\\-135.0657\\-35\\-5.271281\\-133.6168\\-35\\-3.271281\\-132.7297\\-35\\-1.271281\\-132.0256\\-35\\0.7287188\\-131.7838\\-35\\2.228719\\-131.8318\\-35\\4.728719\\-132.163\\-35\\5.228719\\-132.4882\\-35\\8.728719\\-134.0483\\-35\\10.72872\\-135.6626\\-35\\11.83157\\-136.8185\\-35\\13.27336\\-138.8185\\-35\\13.90837\\-140.3185\\-35\\14.93358\\-143.8185\\-35\\15.04747\\-144.8185\\-35\\14.93762\\-147.3185\\-35\\13.91653\\-150.8185\\-35\\13.27009\\-152.3185\\-35\\11.40592\\-154.8185\\-35\\10.22872\\-155.9404\\-35\\8.728719\\-157.1197\\-35\\5.228719\\-158.637\\-35\\4.728719\\-158.9682\\-35\\2.228719\\-159.3631\\-35\\0.7287188\\-159.4045\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.271281\\-159.154\\-33\\-2.271281\\-158.8963\\-33\\-4.771281\\-157.8877\\-33\\-6.271281\\-157.0421\\-33\\-7.249963\\-156.3185\\-33\\-9.418083\\-154.3185\\-33\\-10.43271\\-152.8185\\-33\\-11.88725\\-150.3185\\-33\\-12.46331\\-146.8185\\-33\\-12.4049\\-143.8185\\-33\\-11.90064\\-140.8185\\-33\\-10.41773\\-138.3185\\-33\\-9.417235\\-136.8185\\-33\\-7.224985\\-134.8185\\-33\\-6.271281\\-134.1172\\-33\\-4.771281\\-133.2907\\-33\\-3.271281\\-132.608\\-33\\-1.271281\\-132.0029\\-33\\0.7287188\\-131.7838\\-33\\2.728719\\-131.9018\\-33\\4.728719\\-132.2521\\-33\\7.228719\\-133.5129\\-33\\8.728719\\-134.1408\\-33\\11.22872\\-136.3506\\-33\\12.36761\\-137.8185\\-33\\13.25297\\-139.3185\\-33\\13.91925\\-140.8185\\-33\\14.77978\\-144.8185\\-33\\14.76339\\-146.3185\\-33\\14.39495\\-148.3185\\-33\\13.92369\\-150.3185\\-33\\13.2494\\-151.8185\\-33\\12.37586\\-153.3185\\-33\\11.23067\\-154.8185\\-33\\8.728719\\-157.0105\\-33\\7.228719\\-157.6488\\-33\\4.728719\\-158.8663\\-33\\2.228719\\-159.3243\\-33\\0.7287188\\-159.4045\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.271281\\-158.9682\\-31\\-4.771281\\-158.0707\\-31\\-6.771281\\-156.9828\\-31\\-8.207413\\-155.8185\\-31\\-9.271281\\-154.7684\\-31\\-10.4375\\-153.3185\\-31\\-11.31592\\-151.8185\\-31\\-11.98703\\-150.3185\\-31\\-12.44267\\-148.8185\\-31\\-12.79196\\-145.8185\\-31\\-12.42669\\-142.3185\\-31\\-11.97057\\-140.8185\\-31\\-11.50733\\-139.8185\\-31\\-10.38256\\-137.8185\\-31\\-9.271281\\-136.4691\\-31\\-8.108529\\-135.3185\\-31\\-6.771281\\-134.2297\\-31\\-4.771281\\-133.1206\\-31\\-3.771281\\-132.7169\\-31\\-1.771281\\-132.142\\-31\\0.7287188\\-131.9273\\-31\\3.728719\\-132.1786\\-31\\5.228719\\-132.6087\\-31\\6.728719\\-133.1848\\-31\\9.228719\\-134.7156\\-31\\10.95849\\-136.3185\\-31\\11.80931\\-137.3185\\-31\\13.3515\\-139.8185\\-31\\13.92262\\-141.3185\\-31\\14.41468\\-143.3185\\-31\\14.54431\\-145.8185\\-31\\14.4777\\-147.3185\\-31\\13.94017\\-149.8185\\-31\\13.38225\\-151.3185\\-31\\11.88404\\-153.8185\\-31\\11.02568\\-154.8185\\-31\\9.228719\\-156.5063\\-31\\7.728719\\-157.4932\\-31\\5.728719\\-158.439\\-31\\4.228719\\-158.9367\\-31\\2.728719\\-159.1575\\-31\\0.7287188\\-159.3165\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.271281\\-159.3757\\-29\\-3.771281\\-158.9072\\-29\\-7.271281\\-156.9045\\-29\\-9.034212\\-155.3185\\-29\\-9.911112\\-154.3185\\-29\\-10.66724\\-152.8185\\-29\\-11.93037\\-150.8185\\-29\\-12.41111\\-148.3185\\-29\\-12.51099\\-146.8185\\-29\\-12.40064\\-143.8185\\-29\\-11.92292\\-141.3185\\-29\\-11.49616\\-140.3185\\-29\\-8.98694\\-136.8185\\-29\\-7.271281\\-135.1918\\-29\\-5.771281\\-134.1362\\-29\\-4.771281\\-133.6505\\-29\\-1.771281\\-132.6557\\-29\\0.7287188\\-132.2219\\-29\\2.728719\\-132.4542\\-29\\3.728719\\-132.6766\\-29\\6.728719\\-133.7219\\-29\\7.728719\\-134.2144\\-29\\9.228719\\-135.1466\\-29\\10.72872\\-136.3355\\-29\\12.88855\\-139.3185\\-29\\13.43467\\-140.3185\\-29\\13.90346\\-141.8185\\-29\\14.47372\\-144.8185\\-29\\14.50832\\-146.8185\\-29\\14.33276\\-148.3185\\-29\\13.94284\\-150.3185\\-29\\12.92477\\-152.8185\\-29\\11.72872\\-154.6072\\-29\\10.56778\\-155.8185\\-29\\8.728719\\-157.3243\\-29\\5.728719\\-158.8726\\-29\\4.228719\\-159.4175\\-29\\3.228719\\-159.5526\\-29\\0.7287188\\-159.6249\\-29\\-1.271281\\-159.5563\\-29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.271281\\-159.506\\-27\\-5.271281\\-158.516\\-27\\-6.771281\\-157.5182\\-27\\-8.271281\\-156.361\\-27\\-9.371599\\-155.3185\\-27\\-10.33163\\-153.8185\\-27\\-11.96123\\-150.8185\\-27\\-12.3491\\-148.3185\\-27\\-12.44603\\-146.8185\\-27\\-12.39182\\-144.8185\\-27\\-11.92101\\-142.3185\\-27\\-11.38492\\-140.8185\\-27\\-10.37532\\-139.3185\\-27\\-8.444246\\-136.8185\\-27\\-7.271281\\-135.6999\\-27\\-5.771281\\-134.6592\\-27\\-4.771281\\-134.0937\\-27\\-3.271281\\-133.5775\\-27\\-1.271281\\-133.1454\\-27\\0.7287188\\-132.9997\\-27\\2.728719\\-133.073\\-27\\3.728719\\-133.2095\\-27\\5.728719\\-133.7351\\-27\\6.728719\\-134.1015\\-27\\8.728719\\-135.2194\\-27\\10.72872\\-136.7478\\-27\\12.35372\\-138.8185\\-27\\13.3515\\-140.3185\\-27\\13.84925\\-141.8185\\-27\\14.46155\\-144.3185\\-27\\14.71167\\-146.8185\\-27\\14.36022\\-149.3185\\-27\\13.84468\\-151.3185\\-27\\13.22872\\-152.8884\\-27\\12.4242\\-154.3185\\-27\\10.57499\\-156.3185\\-27\\9.228719\\-157.42\\-27\\7.228719\\-158.6128\\-27\\6.728719\\-159.0187\\-27\\5.228719\\-159.5343\\-27\\2.728719\\-159.972\\-27\\0.7287188\\-160.0351\\-27\\-0.7712812\\-159.9249\\-27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.7712812\\-160.42\\-25\\-2.771281\\-159.9478\\-25\\-5.271281\\-159.0036\\-25\\-7.271281\\-157.4827\\-25\\-8.612997\\-156.3185\\-25\\-9.927359\\-154.8185\\-25\\-11.28464\\-152.3185\\-25\\-11.98175\\-150.8185\\-25\\-12.28464\\-148.3185\\-25\\-12.3678\\-146.3185\\-25\\-12.22991\\-144.8185\\-25\\-11.84628\\-142.8185\\-25\\-10.96144\\-140.8185\\-25\\-9.932618\\-139.3185\\-25\\-7.271281\\-136.2379\\-25\\-4.771281\\-134.6192\\-25\\-3.771281\\-134.1612\\-25\\-1.271281\\-133.5674\\-25\\0.7287188\\-133.4603\\-25\\2.728719\\-133.509\\-25\\4.728719\\-133.6979\\-25\\6.728719\\-134.5803\\-25\\8.728719\\-135.5917\\-25\\10.22872\\-136.6485\\-25\\11.34035\\-137.8185\\-25\\12.88855\\-139.8185\\-25\\13.4633\\-140.8185\\-25\\14.39495\\-143.8185\\-25\\14.84698\\-145.8185\\-25\\14.94911\\-146.8185\\-25\\14.85591\\-148.3185\\-25\\14.38412\\-150.3185\\-25\\13.92515\\-151.8185\\-25\\12.87651\\-154.3185\\-25\\10.67515\\-156.8185\\-25\\7.728719\\-158.9521\\-25\\6.728719\\-159.509\\-25\\5.228719\\-159.9542\\-25\\2.728719\\-160.5299\\-25\\0.7287188\\-160.6023\\-25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.271281\\-160.9965\\-23\\-3.271281\\-160.126\\-23\\-5.271281\\-159.3818\\-23\\-7.271281\\-157.8565\\-23\\-9.432798\\-155.8185\\-23\\-10.39628\\-154.3185\\-23\\-11.44267\\-152.3185\\-23\\-11.99461\\-150.8185\\-23\\-12.23324\\-148.3185\\-23\\-12.26933\\-146.8185\\-23\\-12.08845\\-144.8185\\-23\\-11.90064\\-143.8185\\-23\\-10.8491\\-141.3185\\-23\\-9.915627\\-139.8185\\-23\\-9.054068\\-138.8185\\-23\\-7.103042\\-136.8185\\-23\\-5.771281\\-135.7379\\-23\\-4.771281\\-135.1522\\-23\\-2.271281\\-134.1766\\-23\\-0.2712812\\-133.7738\\-23\\0.7287188\\-133.6746\\-23\\2.728719\\-133.7245\\-23\\4.728719\\-134.0765\\-23\\9.228719\\-136.2086\\-23\\10.72872\\-137.5296\\-23\\12.33653\\-139.3185\\-23\\13.40512\\-140.8185\\-23\\14.42369\\-143.8185\\-23\\14.86443\\-145.3185\\-23\\15.05069\\-146.8185\\-23\\14.92515\\-149.3185\\-23\\14.37455\\-151.3185\\-23\\13.28601\\-154.3185\\-23\\12.95635\\-154.8185\\-23\\11.22872\\-156.7847\\-23\\8.728719\\-158.9846\\-23\\5.228719\\-160.5397\\-23\\3.728719\\-160.9997\\-23\\2.728719\\-161.131\\-23\\0.7287188\\-161.1848\\-23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.771281\\-160.9757\\-21\\-4.271281\\-160.3818\\-21\\-5.771281\\-159.5609\\-21\\-7.271281\\-158.5038\\-21\\-8.97267\\-156.8185\\-21\\-10.39847\\-154.8185\\-21\\-11.36523\\-152.8185\\-21\\-11.96771\\-150.8185\\-21\\-12.24003\\-147.8185\\-21\\-11.93575\\-144.8185\\-21\\-11.47738\\-143.3185\\-21\\-10.82857\\-141.8185\\-21\\-9.974161\\-140.3185\\-21\\-8.81017\\-138.8185\\-21\\-7.771281\\-137.7722\\-21\\-5.771281\\-136.2324\\-21\\-3.771281\\-135.2169\\-21\\-2.271281\\-134.6827\\-21\\-0.2712812\\-134.3355\\-21\\1.228719\\-134.1807\\-21\\2.728719\\-134.2771\\-21\\4.728719\\-134.5972\\-21\\6.728719\\-135.2907\\-21\\7.728719\\-135.7492\\-21\\9.228719\\-136.6324\\-21\\10.65908\\-137.8185\\-21\\11.6509\\-138.8185\\-21\\12.87137\\-140.3185\\-21\\13.93647\\-142.3185\\-21\\14.34\\-143.3185\\-21\\14.89841\\-145.3185\\-21\\15.09936\\-147.8185\\-21\\14.99106\\-149.8185\\-21\\14.40512\\-152.3185\\-21\\13.82267\\-153.8185\\-21\\13.27978\\-154.8185\\-21\\11.86333\\-156.8185\\-21\\10.22872\\-158.4379\\-21\\8.728719\\-159.5296\\-21\\6.728719\\-160.556\\-21\\5.728719\\-160.9456\\-21\\3.228719\\-161.5219\\-21\\1.228719\\-161.5954\\-21\\-0.7712812\\-161.472\\-21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.271281\\-161.5534\\-19\\-4.771281\\-160.8663\\-19\\-6.271281\\-159.9966\\-19\\-7.735567\\-158.8185\\-19\\-9.957422\\-156.3185\\-19\\-11.92669\\-152.3185\\-19\\-12.13978\\-150.3185\\-19\\-12.20202\\-148.8185\\-19\\-12.12156\\-146.8185\\-19\\-11.82234\\-144.8185\\-19\\-10.01287\\-141.3185\\-19\\-9.386007\\-140.3185\\-19\\-7.271281\\-138.1688\\-19\\-5.771281\\-137.0964\\-19\\-4.271281\\-136.212\\-19\\-3.271281\\-135.7674\\-19\\-0.2712812\\-135.2581\\-19\\0.7287188\\-135.1522\\-19\\2.728719\\-135.2095\\-19\\5.228719\\-135.6612\\-19\\6.728719\\-136.2492\\-19\\9.228719\\-137.6523\\-19\\10.72872\\-138.99\\-19\\11.95741\\-140.3185\\-19\\12.95755\\-141.8185\\-19\\13.87844\\-143.8185\\-19\\14.38036\\-145.3185\\-19\\14.84468\\-147.3185\\-19\\14.9691\\-148.8185\\-19\\14.79798\\-150.3185\\-19\\14.04122\\-152.8185\\-19\\13.86234\\-153.8185\\-19\\13.4655\\-154.8185\\-19\\12.8352\\-155.8185\\-19\\10.72872\\-158.3604\\-19\\8.728719\\-160.0485\\-19\\7.228719\\-161.0219\\-19\\6.228719\\-161.4297\\-19\\4.228719\\-161.9045\\-19\\0.7287188\\-162.2838\\-19\\-1.271281\\-162.0142\\-19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "27"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.7287188\\-163.3243\\-17\\-1.271281\\-163.0501\\-17\\-3.271281\\-162.1979\\-17\\-5.271281\\-161.5221\\-17\\-6.771281\\-160.4306\\-17\\-8.50683\\-158.8185\\-17\\-9.446281\\-157.8185\\-17\\-10.45298\\-156.3185\\-17\\-11.50469\\-154.3185\\-17\\-12.0158\\-152.8185\\-17\\-12.26933\\-150.3185\\-17\\-12.2435\\-148.8185\\-17\\-12.08075\\-146.8185\\-17\\-11.52916\\-144.8185\\-17\\-10.47753\\-142.8185\\-17\\-9.4785\\-141.3185\\-17\\-8.542588\\-140.3185\\-17\\-6.771281\\-138.6381\\-17\\-5.271281\\-137.5829\\-17\\-3.271281\\-136.6444\\-17\\-1.771281\\-136.1133\\-17\\0.7287188\\-135.7907\\-17\\2.728719\\-135.9098\\-17\\4.728719\\-136.2706\\-17\\7.228719\\-137.5503\\-17\\8.728719\\-138.1269\\-17\\10.63472\\-139.8185\\-17\\11.9027\\-141.3185\\-17\\13.34235\\-143.8185\\-17\\13.82006\\-144.8185\\-17\\14.47193\\-147.8185\\-17\\14.55733\\-148.8185\\-17\\14.47661\\-150.8185\\-17\\14.04431\\-152.8185\\-17\\13.83276\\-154.3185\\-17\\12.77009\\-156.3185\\-17\\10.93237\\-158.8185\\-17\\8.702775\\-160.8185\\-17\\6.228719\\-162.039\\-17\\3.728719\\-162.9273\\-17\\2.728719\\-163.1253\\-17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-2.771281\\-163.415\\-15\\-3.771281\\-163.0526\\-15\\-5.771281\\-162.0211\\-15\\-7.271281\\-161.0078\\-15\\-9.487383\\-158.8185\\-15\\-9.865231\\-158.3185\\-15\\-10.55003\\-156.8185\\-15\\-11.49003\\-155.3185\\-15\\-11.96479\\-154.3185\\-15\\-12.29196\\-152.3185\\-15\\-12.40064\\-150.8185\\-15\\-12.30253\\-148.8185\\-15\\-11.94436\\-146.3185\\-15\\-10.41907\\-143.3185\\-15\\-9.365459\\-141.8185\\-15\\-7.271281\\-139.6763\\-15\\-5.271281\\-138.2872\\-15\\-3.771281\\-137.642\\-15\\-1.771281\\-137.1167\\-15\\0.7287188\\-136.7095\\-15\\4.228719\\-137.1707\\-15\\5.728719\\-137.6113\\-15\\7.228719\\-138.2463\\-15\\9.228719\\-139.5954\\-15\\10.72872\\-141.0194\\-15\\11.40098\\-141.8185\\-15\\13.44035\\-144.8185\\-15\\13.85808\\-146.3185\\-15\\14.33028\\-148.8185\\-15\\14.34\\-150.8185\\-15\\13.91155\\-154.3185\\-15\\13.3515\\-155.8185\\-15\\12.84496\\-156.8185\\-15\\11.8352\\-158.3185\\-15\\10.48431\\-159.8185\\-15\\8.728719\\-161.4933\\-15\\6.228719\\-162.8427\\-15\\4.728719\\-163.4562\\-15\\1.728719\\-163.8757\\-15\\0.2287188\\-163.9072\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "29"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.2287188\\-164.9321\\-13\\-1.771281\\-164.4738\\-13\\-3.771281\\-163.7219\\-13\\-5.271281\\-163.3877\\-13\\-8.271281\\-160.965\\-13\\-9.417254\\-159.8185\\-13\\-10.50711\\-158.3185\\-13\\-11.94267\\-155.3185\\-13\\-12.39406\\-153.3185\\-13\\-12.47885\\-150.3185\\-13\\-12.35461\\-148.8185\\-13\\-12.00426\\-146.8185\\-13\\-10.96429\\-144.8185\\-13\\-9.271281\\-142.3204\\-13\\-7.230683\\-140.3185\\-13\\-5.271281\\-139.1205\\-13\\-3.271281\\-138.0825\\-13\\-1.271281\\-137.647\\-13\\0.7287188\\-137.5495\\-13\\2.728719\\-137.6101\\-13\\5.228719\\-138.1193\\-13\\6.728719\\-139.0432\\-13\\8.228719\\-139.663\\-13\\9.119103\\-140.3185\\-13\\10.72872\\-141.954\\-13\\11.8889\\-143.3185\\-13\\12.88036\\-144.8185\\-13\\13.3352\\-145.8185\\-13\\13.82267\\-147.3185\\-13\\14.03229\\-148.8185\\-13\\14.13477\\-150.8185\\-13\\13.95154\\-154.3185\\-13\\13.41925\\-156.3185\\-13\\11.9081\\-158.8185\\-13\\10.72872\\-160.2131\\-13\\8.228719\\-162.4987\\-13\\6.728719\\-163.4898\\-13\\4.228719\\-164.1097\\-13\\3.228719\\-164.5408\\-13\\1.228719\\-164.9478\\-13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-3.271281\\-164.9709\\-11\\-5.771281\\-163.9072\\-11\\-7.271281\\-162.9867\\-11\\-9.974498\\-160.3185\\-11\\-10.99843\\-158.8185\\-11\\-11.91907\\-156.8185\\-11\\-12.46479\\-154.8185\\-11\\-12.60681\\-152.8185\\-11\\-12.58378\\-150.8185\\-11\\-12.41111\\-148.8185\\-11\\-11.95093\\-146.8185\\-11\\-10.35999\\-144.3185\\-11\\-9.271281\\-142.9763\\-11\\-6.771281\\-140.6415\\-11\\-5.271281\\-139.6891\\-11\\-2.271281\\-138.6746\\-11\\0.7287188\\-138.1454\\-11\\3.728719\\-138.6207\\-11\\6.728719\\-139.6786\\-11\\8.228719\\-140.5795\\-11\\10.72872\\-142.9246\\-11\\11.92113\\-144.3185\\-11\\12.89775\\-145.8185\\-11\\13.40837\\-146.8185\\-11\\13.92515\\-148.8185\\-11\\14.06075\\-152.8185\\-11\\13.94156\\-154.8185\\-11\\13.44924\\-156.8185\\-11\\12.40628\\-158.8185\\-11\\11.41015\\-160.3185\\-11\\8.728719\\-162.9957\\-11\\7.228719\\-163.8848\\-11\\4.728719\\-165.0337\\-11\\2.728719\\-165.5326\\-11\\0.7287188\\-165.6231\\-11\\-1.271281\\-165.5318\\-11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.271281\\-166.4273\\-9\\-3.271281\\-165.9847\\-9\\-5.771281\\-164.939\\-9\\-7.271281\\-164.0142\\-9\\-8.676523\\-162.8185\\-9\\-9.771281\\-161.6935\\-9\\-10.87478\\-160.3185\\-9\\-11.96709\\-158.3185\\-9\\-12.48344\\-156.8185\\-9\\-12.95724\\-154.8185\\-9\\-13.04846\\-152.8185\\-9\\-12.96479\\-150.8185\\-9\\-12.34343\\-148.3185\\-9\\-11.9691\\-147.3185\\-9\\-10.89628\\-145.3185\\-9\\-9.690689\\-143.8185\\-9\\-8.715526\\-142.8185\\-9\\-6.771281\\-141.2406\\-9\\-4.771281\\-140.1786\\-9\\-3.271281\\-139.63\\-9\\-1.271281\\-139.1786\\-9\\0.7287188\\-139.0809\\-9\\2.228719\\-139.154\\-9\\4.728719\\-139.7072\\-9\\5.728719\\-140.0908\\-9\\7.728719\\-141.0915\\-9\\9.228719\\-142.1443\\-9\\11.36866\\-144.3185\\-9\\12.40709\\-145.8185\\-9\\13.37844\\-147.8185\\-9\\13.87057\\-149.3185\\-9\\14.30931\\-152.8185\\-9\\13.86443\\-156.3185\\-9\\13.36443\\-157.8185\\-9\\12.39588\\-159.8185\\-9\\10.92024\\-161.8185\\-9\\9.228719\\-163.4804\\-9\\7.728719\\-164.5341\\-9\\5.728719\\-165.5333\\-9\\4.228719\\-166.0497\\-9\\2.228719\\-166.4542\\-9\\0.7287188\\-166.5329\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "32"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.7712812\\-167.3848\\-7\\-2.771281\\-166.9757\\-7\\-5.271281\\-165.8391\\-7\\-6.771281\\-165.0282\\-7\\-9.377184\\-162.8185\\-7\\-11.43931\\-159.8185\\-7\\-11.97152\\-158.8185\\-7\\-12.35732\\-157.3185\\-7\\-12.6648\\-154.3185\\-7\\-12.66\\-152.8185\\-7\\-12.45093\\-150.3185\\-7\\-11.84343\\-148.3185\\-7\\-11.01359\\-146.8185\\-7\\-9.969198\\-145.3185\\-7\\-9.271281\\-144.5486\\-7\\-7.271281\\-142.6365\\-7\\-4.771281\\-141.212\\-7\\-3.271281\\-140.5793\\-7\\-1.771281\\-140.1044\\-7\\0.7287188\\-139.9124\\-7\\3.228719\\-140.0975\\-7\\5.228719\\-140.7643\\-7\\7.228719\\-141.7025\\-7\\8.728719\\-142.6048\\-7\\10.72872\\-144.4036\\-7\\11.83761\\-145.8185\\-7\\12.8665\\-147.3185\\-7\\13.41432\\-148.3185\\-7\\13.93221\\-150.3185\\-7\\14.27336\\-152.8185\\-7\\14.28601\\-154.3185\\-7\\13.88036\\-157.3185\\-7\\13.4552\\-158.8185\\-7\\12.39896\\-160.8185\\-7\\10.91778\\-162.8185\\-7\\9.728719\\-163.9124\\-7\\8.228719\\-165.0588\\-7\\6.728719\\-165.8906\\-7\\4.228719\\-166.9775\\-7\\2.728719\\-167.3391\\-7\\0.7287188\\-167.4811\\-7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "33"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-1.771281\\-167.9542\\-5\\-3.271281\\-167.5379\\-5\\-4.771281\\-166.9847\\-5\\-7.271281\\-165.4656\\-5\\-8.271281\\-164.5796\\-5\\-9.94198\\-162.8185\\-5\\-10.94446\\-161.3185\\-5\\-11.89406\\-159.3185\\-5\\-12.46626\\-157.3185\\-5\\-12.71399\\-154.3185\\-5\\-12.38018\\-151.3185\\-5\\-11.51171\\-148.8185\\-5\\-10.39793\\-146.8185\\-5\\-9.271281\\-145.478\\-5\\-8.107374\\-144.3185\\-5\\-6.771281\\-143.1866\\-5\\-4.771281\\-142.0776\\-5\\-2.271281\\-141.2072\\-5\\0.7287188\\-140.8663\\-5\\2.728719\\-140.9959\\-5\\4.228719\\-141.2169\\-5\\6.728719\\-142.0831\\-5\\8.728719\\-143.2324\\-5\\10.04348\\-144.3185\\-5\\11.22872\\-145.5048\\-5\\12.29798\\-146.8185\\-5\\13.44351\\-148.8185\\-5\\13.84\\-149.8185\\-5\\14.39669\\-151.8185\\-5\\14.59722\\-154.3185\\-5\\14.37455\\-157.3185\\-5\\13.95258\\-158.8185\\-5\\13.39582\\-160.3185\\-5\\11.85145\\-162.8185\\-5\\10.22872\\-164.5365\\-5\\9.228719\\-165.4269\\-5\\6.728719\\-166.9591\\-5\\5.228719\\-167.5221\\-5\\3.728719\\-167.939\\-5\\2.728719\\-168.0805\\-5\\0.7287188\\-168.1593\\-5"
+                     }
+                  }
+               ]
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "6"
+            }
+         },
+         {
+            "3006,002a" : {
+               "Name" : "ROIDisplayColor",
+               "Type" : "String",
+               "Value" : "0\\0\\255"
+            },
+            "3006,0040" : {
+               "Name" : "ContourSequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002384"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "0"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-119.4995\\-203.5678\\-165\\-120.5937\\-201.6146\\-165\\-120.5044\\-199.6615\\-165\\-119.4168\\-198.4154\\-165\\-117.7781\\-199.6615\\-165\\-117.4883\\-201.6146\\-165\\-119.3273\\-203.5678\\-165"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002383"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "1"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-119.4168\\-204.4669\\-163\\-120.5383\\-203.5678\\-163\\-120.7776\\-201.6146\\-163\\-119.8859\\-199.6615\\-163\\-119.4168\\-199.1956\\-163\\-118.7628\\-199.6615\\-163\\-117.4637\\-201.0101\\-163\\-117.067\\-201.6146\\-163\\-118.4403\\-203.5678\\-163"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002382"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "2"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-119.4168\\-204.5322\\-161\\-120.6583\\-203.5678\\-161\\-120.7851\\-201.6146\\-161\\-119.4168\\-199.7137\\-161\\-117.4637\\-200.5271\\-161\\-116.7459\\-201.6146\\-161\\-118.3749\\-203.5678\\-161"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002381"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "6"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "3"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-119.4168\\-204.3647\\-159\\-120.2877\\-203.5678\\-159\\-120.7776\\-201.6146\\-159\\-119.4168\\-199.7281\\-159\\-117.4637\\-199.9097\\-159\\-116.4779\\-201.6146\\-159"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002380"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "6"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "4"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-119.4168\\-203.5156\\-157\\-120.993\\-201.6146\\-157\\-119.4168\\-199.7281\\-157\\-117.4637\\-199.6877\\-157\\-116.4161\\-201.6146\\-157\\-117.4637\\-202.5824\\-157"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002379"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "5"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-121.37\\-202.397\\-155\\-122.0797\\-201.6146\\-155\\-121.37\\-200.5042\\-155\\-119.4168\\-199.6994\\-155\\-117.4637\\-199.8824\\-155\\-116.637\\-201.6146\\-155\\-117.4637\\-202.3495\\-155\\-119.4168\\-202.8882\\-155"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002378"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "6"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-121.37\\-203.1456\\-153\\-122.5448\\-201.6146\\-153\\-122.4594\\-199.6615\\-153\\-123.3231\\-198.3154\\-153\\-125.2762\\-197.9441\\-153\\-127.2293\\-198.8704\\-153\\-128.3016\\-197.7084\\-153\\-127.2293\\-196.5592\\-153\\-125.2762\\-196.9653\\-153\\-123.3231\\-196.9339\\-153\\-121.37\\-197.3683\\-153\\-119.6871\\-199.6615\\-153\\-118.0209\\-201.6146\\-153\\-119.4168\\-202.6304\\-153"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002377"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-121.37\\-203.344\\-151\\-122.6089\\-201.6146\\-151\\-122.4269\\-199.6615\\-151\\-121.37\\-198.3038\\-151\\-120.3819\\-199.6615\\-151\\-118.5777\\-201.6146\\-151\\-119.4168\\-202.4454\\-151"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002376"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-171.2091\\-149\\-43.15147\\-170.3646\\-149\\-45.1981\\-168.3139\\-149\\-46.11063\\-166.4584\\-149\\-45.1981\\-165.2122\\-149\\-42.53649\\-162.5521\\-149\\-41.29185\\-161.6277\\-149\\-39.33873\\-161.7262\\-149\\-37.3856\\-163.6955\\-149\\-36.4542\\-164.5053\\-149\\-34.88807\\-166.4584\\-149\\-36.44037\\-168.4115\\-149\\-38.3279\\-170.3646\\-149\\-39.33873\\-171.1723\\-149"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002375"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-45.1981\\-173.0039\\-147\\-46.62139\\-172.3178\\-147\\-47.15123\\-171.9095\\-147\\-49.10435\\-171.6348\\-147\\-51.05748\\-170.9334\\-147\\-51.39357\\-170.3646\\-147\\-50.16919\\-168.4115\\-147\\-49.36344\\-166.4584\\-147\\-49.10435\\-166.172\\-147\\-46.74353\\-164.5053\\-147\\-45.1981\\-163.6972\\-147\\-43.24498\\-161.7185\\-147\\-41.29185\\-161.0959\\-147\\-39.33873\\-161.5796\\-147\\-37.3856\\-163.5331\\-147\\-35.54006\\-164.5053\\-147\\-34.40963\\-166.4584\\-147\\-38.14181\\-170.3646\\-147\\-39.33873\\-171.3974\\-147\\-41.29185\\-172.114\\-147\\-43.24498\\-173.6062\\-147"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002374"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-51.05748\\-172.2589\\-145\\-51.88936\\-170.3646\\-145\\-49.9113\\-166.4584\\-145\\-49.10435\\-165.6514\\-145\\-45.1981\\-163.6128\\-145\\-43.24498\\-161.6333\\-145\\-41.29185\\-161.015\\-145\\-39.33873\\-161.5001\\-145\\-37.3856\\-162.8581\\-145\\-35.43248\\-163.8162\\-145\\-34.65681\\-164.5053\\-145\\-34.33782\\-166.4584\\-145\\-37.3856\\-169.495\\-145\\-39.33873\\-170.5286\\-145\\-41.29185\\-170.5388\\-145\\-45.1981\\-169.2225\\-145\\-47.15123\\-169.6139\\-145\\-49.10435\\-171.4739\\-145"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002373"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-204.958\\-143\\-124.2414\\-203.5678\\-143\\-123.3231\\-202.4856\\-143\\-121.37\\-201.0149\\-143\\-119.4168\\-200.6575\\-143\\-117.4637\\-200.6332\\-143\\-116.4622\\-201.6146\\-143\\-117.4637\\-202.5912\\-143\\-119.4168\\-202.5718\\-143\\-120.4331\\-203.5678\\-143\\-121.37\\-204.7359\\-143"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002373"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-51.05748\\-172.1929\\-143\\-51.86792\\-170.3646\\-143\\-51.05748\\-168.578\\-143\\-49.93924\\-166.4584\\-143\\-49.10435\\-165.6278\\-143\\-45.1981\\-163.6128\\-143\\-43.24498\\-161.6333\\-143\\-41.29185\\-161.0054\\-143\\-39.33873\\-161.0699\\-143\\-37.3856\\-161.6558\\-143\\-34.47985\\-164.5053\\-143\\-34.13548\\-166.4584\\-143\\-36.05906\\-168.4115\\-143\\-37.3856\\-169.4889\\-143\\-39.33873\\-170.3873\\-143\\-41.29185\\-170.3873\\-143\\-45.1981\\-168.52\\-143\\-47.15123\\-169.4972\\-143\\-49.10435\\-171.4468\\-143"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002372"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-206.564\\-141\\-124.4056\\-205.5209\\-141\\-124.8603\\-203.5678\\-141\\-123.4396\\-201.6146\\-141\\-123.1701\\-201.6146\\-141\\-121.37\\-202.3617\\-141\\-119.4168\\-201.3438\\-141\\-117.4637\\-200.4936\\-141\\-116.4512\\-201.6146\\-141\\-117.4637\\-202.6\\-141\\-119.4168\\-203.9364\\-141\\-120.4755\\-205.5209\\-141\\-121.37\\-206.4524\\-141"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002372"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-51.05748\\-171.144\\-141\\-51.53709\\-170.3646\\-141\\-50.94897\\-168.4115\\-141\\-49.93924\\-166.4584\\-141\\-49.10435\\-165.6278\\-141\\-45.1981\\-163.6128\\-141\\-43.24498\\-161.6333\\-141\\-41.29185\\-161.0054\\-141\\-39.33873\\-161.0054\\-141\\-37.3856\\-161.782\\-141\\-35.43248\\-163.8127\\-141\\-34.65681\\-164.5053\\-141\\-33.71507\\-166.4584\\-141\\-35.50452\\-168.4115\\-141\\-37.3856\\-169.4889\\-141\\-39.33873\\-170.3873\\-141\\-41.29185\\-170.3873\\-141\\-45.06961\\-168.4115\\-141\\-45.335\\-168.4115\\-141\\-47.15123\\-169.4397\\-141\\-49.10435\\-171.4324\\-141"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002371"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-208.2524\\-139\\-124.6333\\-207.474\\-139\\-125.2762\\-206.9345\\-139\\-126.2388\\-205.5209\\-139\\-126.9103\\-203.5678\\-139\\-127.987\\-201.6146\\-139\\-129.8008\\-199.6615\\-139\\-129.9937\\-197.7084\\-139\\-129.1825\\-196.8613\\-139\\-127.2293\\-195.7637\\-139\\-126.0461\\-197.7084\\-139\\-126.0514\\-199.6615\\-139\\-125.2762\\-200.3583\\-139\\-123.3231\\-200.6518\\-139\\-120.1878\\-203.5678\\-139\\-120.3096\\-205.5209\\-139\\-121.37\\-206.5723\\-139"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002371"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "16"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-51.06511\\-170.3646\\-139\\-50.9465\\-168.4115\\-139\\-49.93924\\-166.4584\\-139\\-49.10435\\-165.6278\\-139\\-45.1981\\-163.6128\\-139\\-43.24498\\-161.6333\\-139\\-41.29185\\-161.0054\\-139\\-39.33873\\-161.0054\\-139\\-37.3856\\-162.4204\\-139\\-35.33741\\-164.5053\\-139\\-33.62796\\-166.4584\\-139\\-35.38265\\-168.4115\\-139\\-37.3856\\-169.4889\\-139\\-39.33873\\-170.3873\\-139\\-41.29185\\-170.3873\\-139\\-43.24498\\-169.3976\\-139\\-45.1981\\-167.7354\\-139\\-47.15123\\-168.4348\\-139\\-49.10435\\-171.2141\\-139"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002370"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-125.2762\\-208.1304\\-137\\-125.9399\\-207.474\\-137\\-127.3648\\-205.5209\\-137\\-129.1825\\-202.1513\\-137\\-129.5619\\-201.6146\\-137\\-130.3909\\-199.6615\\-137\\-130.0337\\-197.7084\\-137\\-129.1825\\-196.8433\\-137\\-127.2293\\-195.7629\\-137\\-125.2762\\-196.6599\\-137\\-124.2997\\-197.7084\\-137\\-122.2621\\-199.6615\\-137\\-121.0577\\-201.6146\\-137\\-120.2314\\-203.5678\\-137\\-119.9222\\-205.5209\\-137\\-121.37\\-206.7067\\-137\\-123.3231\\-208.4724\\-137"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002370"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-170.5765\\-137\\-50.00279\\-170.3646\\-137\\-50.9301\\-168.4115\\-137\\-49.93924\\-166.4584\\-137\\-49.10435\\-165.6278\\-137\\-47.15123\\-164.4677\\-137\\-45.1981\\-163.5647\\-137\\-43.24498\\-161.6333\\-137\\-41.29185\\-161.0054\\-137\\-39.33873\\-161.0054\\-137\\-37.39323\\-162.5521\\-137\\-33.62796\\-166.4584\\-137\\-35.38265\\-168.4115\\-137\\-37.3856\\-169.4889\\-137\\-39.33873\\-170.3873\\-137\\-41.29185\\-170.3873\\-137\\-43.24498\\-169.3929\\-137\\-45.1981\\-167.5378\\-137\\-47.15123\\-167.6395\\-137\\-47.95702\\-168.4115\\-137"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002369"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-125.2762\\-207.7558\\-135\\-127.2293\\-206.295\\-135\\-127.9764\\-205.5209\\-135\\-129.4864\\-203.5678\\-135\\-130.3591\\-201.6146\\-135\\-130.6917\\-199.6615\\-135\\-130.0337\\-197.7084\\-135\\-129.1825\\-196.8433\\-135\\-127.2293\\-195.8907\\-135\\-125.2762\\-196.606\\-135\\-123.3231\\-197.1559\\-135\\-121.37\\-198.1381\\-135\\-119.4268\\-199.6615\\-135\\-118.9955\\-201.6146\\-135\\-119.7529\\-203.5678\\-135\\-119.2814\\-205.5209\\-135\\-121.37\\-206.9043\\-135\\-123.3231\\-208.0513\\-135"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002369"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-170.3873\\-135\\-43.24498\\-169.3881\\-135\\-45.1981\\-167.478\\-135\\-47.15123\\-167.5463\\-135\\-48.03013\\-168.4115\\-135\\-49.10435\\-169.7198\\-135\\-50.92669\\-168.4115\\-135\\-49.93924\\-166.4584\\-135\\-47.15123\\-163.8424\\-135\\-45.1981\\-163.3728\\-135\\-43.24498\\-161.624\\-135\\-41.29185\\-161.0054\\-135\\-39.33873\\-161.0054\\-135\\-37.3856\\-162.3643\\-135\\-35.28936\\-164.5053\\-135\\-33.62796\\-166.4584\\-135\\-35.38265\\-168.4115\\-135\\-37.3856\\-169.4064\\-135\\-39.33873\\-170.2561\\-135"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002368"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-206.3476\\-133\\-129.9039\\-203.5678\\-133\\-130.6826\\-201.6146\\-133\\-130.7586\\-199.6615\\-133\\-130.0337\\-197.7084\\-133\\-129.1825\\-196.8433\\-133\\-127.2293\\-196.3109\\-133\\-125.2762\\-197.0659\\-133\\-121.37\\-196.7771\\-133\\-119.4168\\-198.278\\-133\\-117.4864\\-199.6615\\-133\\-118.4003\\-201.6146\\-133\\-119.06\\-203.5678\\-133\\-120.1311\\-205.5209\\-133\\-121.37\\-206.6685\\-133\\-123.3231\\-207.17\\-133\\-125.2762\\-207.1172\\-133"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002368"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.32029\\-170.3646\\-133\\-43.24498\\-169.3881\\-133\\-45.1981\\-167.478\\-133\\-47.15123\\-167.5463\\-133\\-49.10435\\-169.5208\\-133\\-50.92669\\-168.4115\\-133\\-49.93924\\-166.4584\\-133\\-47.15123\\-163.7041\\-133\\-45.1981\\-162.9292\\-133\\-43.24498\\-161.624\\-133\\-41.29185\\-161.0054\\-133\\-39.33873\\-161.0054\\-133\\-37.3856\\-161.7295\\-133\\-35.43248\\-163.7582\\-133\\-34.61152\\-164.5053\\-133\\-33.62796\\-166.4584\\-133\\-35.43248\\-168.2761\\-133\\-37.3856\\-168.9142\\-133\\-39.33873\\-169.7291\\-133"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002367"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-206.4227\\-131\\-129.9608\\-203.5678\\-131\\-130.7389\\-201.6146\\-131\\-130.7586\\-199.6615\\-131\\-130.0337\\-197.7084\\-131\\-129.1825\\-196.8433\\-131\\-127.2293\\-196.497\\-131\\-125.2762\\-197.4609\\-131\\-123.3231\\-197.1387\\-131\\-121.37\\-197.1465\\-131\\-119.4168\\-197.8169\\-131\\-118.1332\\-199.6615\\-131\\-118.973\\-203.5678\\-131\\-119.4168\\-204.0694\\-131\\-120.3186\\-205.5209\\-131\\-121.37\\-206.5767\\-131\\-123.3231\\-207.0393\\-131\\-125.2762\\-207.0393\\-131"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002367"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.30143\\-170.3646\\-131\\-43.24498\\-169.3881\\-131\\-45.1981\\-167.478\\-131\\-47.15123\\-167.5463\\-131\\-49.10435\\-169.4972\\-131\\-50.92669\\-168.4115\\-131\\-49.93924\\-166.4584\\-131\\-47.15123\\-163.6592\\-131\\-45.15527\\-162.5521\\-131\\-43.24498\\-161.5885\\-131\\-41.29185\\-161.0054\\-131\\-39.33873\\-161.0054\\-131\\-37.3856\\-161.5968\\-131\\-34.46535\\-164.5053\\-131\\-33.63014\\-166.4584\\-131\\-35.43248\\-167.7284\\-131\\-37.3856\\-167.776\\-131\\-39.33873\\-169.5411\\-131"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002366"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-206.6955\\-129\\-128.4934\\-205.5209\\-129\\-129.9666\\-203.5678\\-129\\-130.7389\\-201.6146\\-129\\-130.7586\\-199.6615\\-129\\-130.128\\-197.7084\\-129\\-129.1825\\-196.7371\\-129\\-127.2293\\-196.4582\\-129\\-125.2762\\-196.9323\\-129\\-123.3231\\-196.8128\\-129\\-121.37\\-197.6276\\-129\\-119.4168\\-197.7471\\-129\\-118.2459\\-199.6615\\-129\\-118.7921\\-201.6146\\-129\\-118.973\\-203.5678\\-129\\-120.262\\-205.5209\\-129\\-121.37\\-206.7145\\-129\\-123.3231\\-207.2035\\-129\\-125.2762\\-207.0486\\-129"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002366"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.30143\\-170.3646\\-129\\-43.24498\\-169.3881\\-129\\-45.1981\\-167.478\\-129\\-47.15123\\-167.5463\\-129\\-49.10435\\-169.4972\\-129\\-50.92669\\-168.4115\\-129\\-49.93924\\-166.4584\\-129\\-48.09834\\-164.5053\\-129\\-45.1981\\-161.8307\\-129\\-41.29185\\-161.0054\\-129\\-39.33873\\-161.0054\\-129\\-37.3856\\-161.584\\-129\\-34.45126\\-164.5053\\-129\\-33.64341\\-166.4584\\-129\\-35.43248\\-167.5284\\-129\\-37.3856\\-167.6038\\-129\\-39.33873\\-169.5001\\-129"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "27"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-208.1576\\-127\\-125.2762\\-207.3932\\-127\\-127.2293\\-207.097\\-127\\-128.6942\\-205.5209\\-127\\-129.9666\\-203.5678\\-127\\-130.7389\\-201.6146\\-127\\-130.7586\\-199.6615\\-127\\-130.5285\\-197.7084\\-127\\-129.1825\\-196.2082\\-127\\-127.2293\\-196.0701\\-127\\-123.3231\\-196.5014\\-127\\-121.37\\-197.5201\\-127\\-119.4168\\-197.7459\\-127\\-117.7998\\-199.6615\\-127\\-118.4891\\-201.6146\\-127\\-118.9639\\-203.5678\\-127\\-119.6406\\-205.5209\\-127\\-120.7763\\-207.474\\-127\\-121.37\\-208.0513\\-127"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-115.5106\\-206.2984\\-127\\-116.1531\\-205.5209\\-127\\-115.2401\\-203.5678\\-127\\-113.5575\\-201.7094\\-127\\-111.6043\\-203.2542\\-127\\-111.3686\\-203.5678\\-127\\-112.5125\\-205.5209\\-127\\-113.5575\\-206.5467\\-127"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "29"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.30143\\-170.3646\\-127\\-43.24498\\-169.3881\\-127\\-45.1981\\-167.478\\-127\\-47.15123\\-167.5463\\-127\\-49.10435\\-169.4972\\-127\\-50.92669\\-168.4115\\-127\\-49.95071\\-166.4584\\-127\\-48.54872\\-164.5053\\-127\\-45.1981\\-161.6746\\-127\\-43.24498\\-161.0873\\-127\\-39.33873\\-161.0054\\-127\\-37.3856\\-161.584\\-127\\-34.45126\\-164.5053\\-127\\-33.64745\\-166.4584\\-127\\-35.43248\\-167.5004\\-127\\-37.3856\\-167.5673\\-127\\-39.33873\\-169.5001\\-127"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.0329\\-125\\-127.8083\\-207.474\\-125\\-128.8464\\-205.5209\\-125\\-130.0424\\-203.5678\\-125\\-130.7389\\-201.6146\\-125\\-130.7292\\-197.7084\\-125\\-129.1825\\-195.8907\\-125\\-127.2293\\-195.7928\\-125\\-125.2762\\-195.8218\\-125\\-123.3231\\-196.0701\\-125\\-119.4168\\-197.5075\\-125\\-117.4637\\-199.5872\\-125\\-118.3749\\-201.6146\\-125\\-118.8051\\-203.5678\\-125\\-118.8259\\-205.5209\\-125\\-121.37\\-207.9114\\-125\\-123.3231\\-208.5313\\-125\\-125.2762\\-208.6126\\-125"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-115.5106\\-206.6492\\-125\\-116.367\\-205.5209\\-125\\-115.2515\\-203.5678\\-125\\-113.5575\\-201.6223\\-125\\-111.6043\\-203.1936\\-125\\-111.3338\\-203.5678\\-125\\-112.5125\\-205.5209\\-125\\-113.5575\\-206.5515\\-125"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "32"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.30143\\-170.3646\\-125\\-43.24498\\-169.3321\\-125\\-45.1981\\-167.4105\\-125\\-47.15123\\-167.5463\\-125\\-49.10435\\-169.4972\\-125\\-50.92669\\-168.4115\\-125\\-49.95635\\-166.4584\\-125\\-48.84526\\-164.5053\\-125\\-46.73161\\-162.5521\\-125\\-45.1981\\-161.6434\\-125\\-43.24498\\-161.0054\\-125\\-39.33873\\-161.0054\\-125\\-37.3856\\-161.584\\-125\\-34.45126\\-164.5053\\-125\\-33.64745\\-166.4584\\-125\\-35.43248\\-167.5004\\-125\\-37.3856\\-167.5673\\-125\\-39.33873\\-169.5001\\-125"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "33"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2358\\-123\\-127.9872\\-207.474\\-123\\-129.6649\\-205.5209\\-123\\-130.5003\\-203.5678\\-123\\-130.7487\\-201.6146\\-123\\-130.7586\\-197.7084\\-123\\-129.1825\\-195.7928\\-123\\-125.2762\\-195.7476\\-123\\-123.3231\\-195.7928\\-123\\-121.37\\-196.152\\-123\\-119.4168\\-196.8409\\-123\\-118.4508\\-197.7084\\-123\\-118.2183\\-199.6615\\-123\\-118.3101\\-201.6146\\-123\\-118.1062\\-203.5678\\-123\\-117.6253\\-205.5209\\-123\\-119.9837\\-207.474\\-123\\-121.37\\-208.3961\\-123\\-123.3231\\-208.7068\\-123\\-125.2762\\-208.873\\-123"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "34"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-115.5106\\-205.8584\\-123\\-116.822\\-205.5209\\-123\\-115.5106\\-204.4777\\-123\\-115.2401\\-203.5678\\-123\\-113.5575\\-201.6223\\-123\\-111.6043\\-203.1936\\-123\\-111.3338\\-203.5678\\-123\\-112.4254\\-205.5209\\-123\\-113.5575\\-206.5646\\-123"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.30133\\-170.3646\\-123\\-43.24498\\-168.7758\\-123\\-45.1981\\-166.9525\\-123\\-47.15123\\-167.5463\\-123\\-49.10435\\-169.4972\\-123\\-50.92669\\-168.4115\\-123\\-49.10435\\-164.8212\\-123\\-48.88055\\-164.5053\\-123\\-46.83384\\-162.5521\\-123\\-45.1981\\-161.6434\\-123\\-43.24498\\-161.0054\\-123\\-39.33873\\-161.0054\\-123\\-37.3856\\-161.584\\-123\\-34.45126\\-164.5053\\-123\\-33.64745\\-166.4584\\-123\\-35.43248\\-167.5004\\-123\\-37.3856\\-167.5673\\-123\\-39.33873\\-169.5001\\-123"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2563\\-121\\-129.9137\\-205.5209\\-121\\-130.7197\\-203.5678\\-121\\-130.7586\\-197.7084\\-121\\-129.1825\\-195.7928\\-121\\-127.2293\\-195.7476\\-121\\-125.2762\\-195.5669\\-121\\-123.3231\\-195.5026\\-121\\-121.37\\-195.7928\\-121\\-119.4168\\-196.8074\\-121\\-118.6712\\-197.7084\\-121\\-118.6107\\-199.6615\\-121\\-118.2693\\-201.6146\\-121\\-117.4637\\-203.2483\\-121\\-116.5873\\-203.5678\\-121\\-116.3163\\-205.5209\\-121\\-117.4637\\-206.4771\\-121\\-117.7984\\-207.474\\-121\\-119.4168\\-208.5975\\-121\\-123.3231\\-208.9218\\-121\\-125.2762\\-208.9652\\-121"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-206.7537\\-121\\-115.2868\\-205.5209\\-121\\-115.2288\\-203.5678\\-121\\-113.5575\\-201.6223\\-121\\-111.6043\\-203.1646\\-121\\-111.3114\\-203.5678\\-121\\-111.8038\\-205.5209\\-121"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-169.4972\\-121\\-50.92669\\-168.4115\\-121\\-49.10435\\-164.8212\\-121\\-48.88055\\-164.5053\\-121\\-46.83384\\-162.5521\\-121\\-45.1981\\-161.6434\\-121\\-43.24498\\-161.0054\\-121\\-41.29185\\-160.7476\\-121\\-39.33873\\-160.7211\\-121\\-37.3856\\-161.584\\-121\\-34.45126\\-164.5053\\-121\\-33.64745\\-166.4584\\-121\\-35.43248\\-167.5004\\-121\\-37.3856\\-167.5673\\-121\\-39.33873\\-169.5001\\-121\\-41.29185\\-170.1529\\-121\\-43.24498\\-167.9797\\-121\\-45.1981\\-166.5805\\-121\\-47.15123\\-167.5463\\-121"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2563\\-119\\-129.9453\\-205.5209\\-119\\-130.7487\\-203.5678\\-119\\-130.7586\\-197.7084\\-119\\-129.1825\\-195.7928\\-119\\-127.2293\\-195.7476\\-119\\-125.2762\\-195.0465\\-119\\-123.3231\\-194.7631\\-119\\-121.37\\-195.4791\\-119\\-119.4168\\-197.0306\\-119\\-118.8949\\-197.7084\\-119\\-118.7468\\-199.6615\\-119\\-118.1528\\-201.6146\\-119\\-117.4637\\-202.9998\\-119\\-116.6329\\-203.5678\\-119\\-116.3504\\-205.5209\\-119\\-117.1308\\-207.474\\-119\\-117.4637\\-207.8147\\-119\\-119.4168\\-208.8809\\-119\\-125.2762\\-208.9652\\-119"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-207.2149\\-119\\-115.2288\\-205.5209\\-119\\-115.0493\\-203.5678\\-119\\-113.5575\\-201.8908\\-119\\-111.6043\\-203.1683\\-119\\-111.3114\\-203.5678\\-119\\-111.3453\\-205.5209\\-119\\-111.6043\\-205.828\\-119"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-169.4972\\-119\\-50.92669\\-168.4115\\-119\\-50.07069\\-166.4584\\-119\\-49.11198\\-164.5053\\-119\\-46.83384\\-162.5521\\-119\\-45.1981\\-161.6434\\-119\\-43.24498\\-160.9957\\-119\\-41.29185\\-159.8112\\-119\\-39.33873\\-159.76\\-119\\-37.3856\\-161.5756\\-119\\-34.45126\\-164.5053\\-119\\-33.64745\\-166.4584\\-119\\-35.43248\\-167.5004\\-119\\-37.3856\\-167.5673\\-119\\-39.33873\\-169.5001\\-119\\-41.29185\\-169.5997\\-119\\-43.24498\\-167.5473\\-119\\-45.1981\\-166.5106\\-119\\-47.15123\\-167.5463\\-119"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2563\\-117\\-129.9453\\-205.5209\\-117\\-130.7487\\-203.5678\\-117\\-131.1759\\-199.6615\\-117\\-130.7718\\-197.7084\\-117\\-129.1825\\-196.0314\\-117\\-127.2293\\-195.553\\-117\\-125.2762\\-194.7524\\-117\\-123.3231\\-194.0859\\-117\\-121.37\\-194.8409\\-117\\-120.3395\\-195.7553\\-117\\-118.7856\\-197.7084\\-117\\-118.3291\\-199.6615\\-117\\-117.5159\\-201.6146\\-117\\-117.0219\\-203.5678\\-117\\-116.3504\\-205.5209\\-117\\-117.4095\\-207.474\\-117\\-119.4168\\-208.8575\\-117\\-121.37\\-208.9652\\-117\\-125.2762\\-208.9652\\-117"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-208.0864\\-117\\-114.3155\\-207.474\\-117\\-115.2288\\-205.5209\\-117\\-114.5537\\-203.5678\\-117\\-113.5575\\-202.5511\\-117\\-111.5522\\-203.5678\\-117\\-111.3114\\-205.5209\\-117\\-112.867\\-207.474\\-117"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-169.4972\\-117\\-50.95982\\-168.4115\\-117\\-50.57807\\-166.4584\\-117\\-49.75014\\-164.5053\\-117\\-49.10435\\-163.8304\\-117\\-47.15123\\-162.8112\\-117\\-45.1981\\-161.6434\\-117\\-43.24498\\-160.9859\\-117\\-41.29185\\-159.6522\\-117\\-39.33873\\-159.6019\\-117\\-34.45126\\-164.5053\\-117\\-33.64745\\-166.4584\\-117\\-35.43248\\-167.5004\\-117\\-37.3856\\-167.5673\\-117\\-39.33873\\-169.5001\\-117\\-41.29185\\-169.4247\\-117\\-43.24498\\-167.5004\\-117\\-45.1981\\-166.5106\\-117\\-47.15123\\-167.5463\\-117"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002359"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2563\\-115\\-129.9453\\-205.5209\\-115\\-130.7487\\-203.5678\\-115\\-131.7007\\-201.6146\\-115\\-132.2463\\-199.6615\\-115\\-130.8465\\-197.7084\\-115\\-129.1825\\-196.596\\-115\\-127.2293\\-195.0877\\-115\\-125.2762\\-194.1382\\-115\\-123.3231\\-193.7355\\-115\\-121.37\\-194.6252\\-115\\-120.121\\-195.7553\\-115\\-118.3182\\-197.7084\\-115\\-117.3951\\-199.6615\\-115\\-116.941\\-201.6146\\-115\\-117.0851\\-203.5678\\-115\\-116.3504\\-205.5209\\-115\\-117.4637\\-206.0411\\-115\\-118.2116\\-207.474\\-115\\-119.4168\\-208.6022\\-115\\-121.37\\-208.9652\\-115\\-125.2762\\-208.9652\\-115"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002359"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-169.4972\\-115\\-50.95982\\-168.4115\\-115\\-50.90887\\-166.4584\\-115\\-49.92955\\-164.5053\\-115\\-49.10435\\-163.6801\\-115\\-47.15123\\-162.8112\\-115\\-45.1981\\-161.6434\\-115\\-43.24498\\-160.9859\\-115\\-41.29185\\-159.6437\\-115\\-39.33873\\-159.5937\\-115\\-34.45126\\-164.5053\\-115\\-33.95162\\-166.4584\\-115\\-35.43248\\-167.3662\\-115\\-37.3856\\-167.5621\\-115\\-39.33873\\-169.3595\\-115\\-41.29185\\-169.2801\\-115\\-43.24498\\-167.4954\\-115\\-45.1981\\-166.5106\\-115\\-47.15123\\-167.5463\\-115"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002358"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2563\\-113\\-129.9453\\-205.5209\\-113\\-130.7487\\-203.5678\\-113\\-131.8924\\-201.6146\\-113\\-132.6823\\-199.6615\\-113\\-131.1356\\-197.5845\\-113\\-129.1825\\-196.6416\\-113\\-127.2293\\-194.9086\\-113\\-125.2762\\-193.7945\\-113\\-123.3231\\-193.7074\\-113\\-121.37\\-194.4888\\-113\\-119.582\\-195.7553\\-113\\-117.4637\\-198.2539\\-113\\-116.4872\\-199.6615\\-113\\-116.5007\\-201.6146\\-113\\-117.0718\\-203.5678\\-113\\-115.5106\\-205.3607\\-113\\-113.5575\\-203.3808\\-113\\-111.6043\\-205.1102\\-113\\-111.3114\\-205.5209\\-113\\-111.6043\\-205.8753\\-113\\-113.5575\\-207.4218\\-113\\-115.5106\\-205.7301\\-113\\-117.4637\\-206.4975\\-113\\-118.0847\\-207.474\\-113\\-119.4168\\-208.5933\\-113\\-121.37\\-208.9652\\-113\\-125.2762\\-208.9652\\-113"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002358"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-169.4972\\-113\\-50.95982\\-168.4115\\-113\\-50.68089\\-166.4584\\-113\\-49.79962\\-164.5053\\-113\\-49.10435\\-163.7985\\-113\\-47.15123\\-162.8112\\-113\\-45.1981\\-161.6434\\-113\\-41.29185\\-159.5836\\-113\\-39.33873\\-159.5937\\-113\\-34.45126\\-164.5053\\-113\\-34.84488\\-166.4584\\-113\\-35.43248\\-166.8838\\-113\\-37.3856\\-167.557\\-113\\-39.33873\\-168.8179\\-113\\-41.29185\\-168.7909\\-113\\-43.24498\\-167.4905\\-113\\-45.1981\\-166.5106\\-113\\-47.15123\\-167.5463\\-113"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002357"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "29"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2563\\-111\\-129.9453\\-205.5209\\-111\\-130.7487\\-203.5678\\-111\\-131.9022\\-201.6146\\-111\\-132.7319\\-199.6615\\-111\\-131.8204\\-197.7084\\-111\\-131.1356\\-197.0592\\-111\\-129.1825\\-195.967\\-111\\-127.2293\\-194.7032\\-111\\-125.2762\\-193.7355\\-111\\-123.3231\\-193.6936\\-111\\-121.37\\-194.0379\\-111\\-119.4168\\-195.0982\\-111\\-118.8086\\-195.7553\\-111\\-117.9774\\-197.7084\\-111\\-116.2356\\-199.6615\\-111\\-115.7705\\-201.6146\\-111\\-116.1515\\-203.5678\\-111\\-115.5106\\-204.0484\\-111\\-113.5575\\-202.8835\\-111\\-112.7051\\-203.5678\\-111\\-111.3225\\-205.5209\\-111\\-112.6888\\-207.474\\-111\\-113.5575\\-208.2721\\-111\\-115.5106\\-207.8906\\-111\\-117.4637\\-207.9017\\-111\\-119.4168\\-208.6526\\-111\\-121.37\\-208.9652\\-111\\-125.2762\\-208.9652\\-111"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002357"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-169.3309\\-111\\-50.62059\\-168.4115\\-111\\-50.16104\\-166.4584\\-111\\-49.25296\\-164.5053\\-111\\-46.83384\\-162.5521\\-111\\-45.1981\\-161.6434\\-111\\-43.24498\\-159.8717\\-111\\-41.29185\\-159.3601\\-111\\-39.33873\\-159.5937\\-111\\-37.3856\\-161.567\\-111\\-34.35008\\-164.5053\\-111\\-35.27732\\-166.4584\\-111\\-37.3856\\-167.552\\-111\\-39.33873\\-168.4491\\-111\\-41.29185\\-168.4342\\-111\\-43.24498\\-167.4856\\-111\\-45.1981\\-166.1635\\-111\\-47.15123\\-167.4729\\-111"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "27"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2563\\-109\\-129.9453\\-205.5209\\-109\\-130.7487\\-203.5678\\-109\\-131.9022\\-201.6146\\-109\\-132.7319\\-199.6615\\-109\\-131.9704\\-197.7084\\-109\\-131.1356\\-196.8599\\-109\\-129.1825\\-195.125\\-109\\-127.2293\\-194.159\\-109\\-125.2762\\-193.6936\\-109\\-121.37\\-193.7074\\-109\\-119.4168\\-194.6904\\-109\\-118.4125\\-195.7553\\-109\\-117.5445\\-197.7084\\-109\\-116.0821\\-199.6615\\-109\\-115.5106\\-200.2234\\-109\\-113.5575\\-201.53\\-109\\-111.7398\\-203.5678\\-109\\-111.6991\\-205.5209\\-109\\-112.6791\\-207.474\\-109\\-113.5575\\-208.3844\\-109\\-115.5106\\-208.7021\\-109\\-117.4637\\-207.7397\\-109\\-119.4168\\-208.0972\\-109\\-121.37\\-208.8129\\-109\\-123.3231\\-208.9652\\-109\\-125.2762\\-208.9652\\-109"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-54.96373\\-192.6368\\-109\\-55.80775\\-191.849\\-109\\-54.17596\\-189.8959\\-109\\-53.0106\\-188.7382\\-109\\-51.05748\\-187.0464\\-109\\-50.31601\\-187.9428\\-109\\-51.71575\\-189.8959\\-109\\-53.0106\\-191.1812\\-109"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-168.8554\\-109\\-49.75251\\-168.4115\\-109\\-49.97186\\-166.4584\\-109\\-48.88175\\-164.5053\\-109\\-46.83384\\-162.5521\\-109\\-45.1981\\-161.6392\\-109\\-43.24498\\-159.7\\-109\\-41.29185\\-159.1512\\-109\\-39.33873\\-159.5937\\-109\\-37.3856\\-161.567\\-109\\-36.10386\\-162.5521\\-109\\-33.99061\\-164.5053\\-109\\-35.32818\\-166.4584\\-109\\-37.3856\\-167.552\\-109\\-39.33873\\-168.4039\\-109\\-41.29185\\-168.4039\\-109\\-43.24498\\-167.4768\\-109\\-45.1981\\-165.68\\-109\\-46.38026\\-166.4584\\-109\\-48.51841\\-168.4115\\-109"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "27"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2563\\-107\\-129.9453\\-205.5209\\-107\\-130.7487\\-203.5678\\-107\\-131.9022\\-201.6146\\-107\\-132.7319\\-199.6615\\-107\\-131.9764\\-197.7084\\-107\\-129.1825\\-194.9174\\-107\\-127.2293\\-193.8098\\-107\\-125.2762\\-193.6936\\-107\\-121.37\\-193.6936\\-107\\-119.4168\\-194.6292\\-107\\-118.2575\\-195.7553\\-107\\-116.8657\\-197.7084\\-107\\-116.2258\\-199.6615\\-107\\-115.5106\\-200.6055\\-107\\-113.5575\\-201.0835\\-107\\-112.8797\\-201.6146\\-107\\-111.3453\\-203.5678\\-107\\-112.3242\\-205.5209\\-107\\-113.0408\\-207.474\\-107\\-113.5575\\-208.0827\\-107\\-115.5106\\-208.9052\\-107\\-117.4637\\-207.0967\\-107\\-119.4168\\-206.8859\\-107\\-121.37\\-208.6377\\-107\\-123.3231\\-208.9652\\-107\\-125.2762\\-208.9652\\-107"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-56.91685\\-192.1797\\-107\\-57.38867\\-191.849\\-107\\-56.91685\\-191.3772\\-107\\-55.89487\\-189.8959\\-107\\-51.96428\\-185.9896\\-107\\-51.05748\\-185.2972\\-107\\-49.10435\\-183.5184\\-107\\-48.11643\\-184.0365\\-107\\-48.47075\\-185.9896\\-107\\-53.0106\\-190.5408\\-107\\-55.64436\\-191.849\\-107"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.11422\\-168.4115\\-107\\-49.95635\\-166.4584\\-107\\-48.85258\\-164.5053\\-107\\-46.83384\\-162.5521\\-107\\-45.1981\\-161.6349\\-107\\-43.24498\\-159.6909\\-107\\-41.29185\\-159.1255\\-107\\-39.33873\\-159.5937\\-107\\-37.3856\\-161.567\\-107\\-35.70213\\-162.5521\\-107\\-33.64094\\-164.5053\\-107\\-35.32716\\-166.4584\\-107\\-37.3856\\-167.552\\-107\\-39.33873\\-168.4039\\-107\\-41.29185\\-168.4039\\-107\\-43.24498\\-167.4678\\-107\\-45.1981\\-165.5566\\-107\\-46.73043\\-166.4584\\-107\\-47.15123\\-166.9124\\-107"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "29"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "57"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2563\\-105\\-129.9453\\-205.5209\\-105\\-131.1356\\-203.4433\\-105\\-132.0776\\-201.6146\\-105\\-132.7319\\-199.6615\\-105\\-132.1379\\-197.7084\\-105\\-131.1356\\-196.5612\\-105\\-129.1825\\-194.7032\\-105\\-127.2293\\-193.7646\\-105\\-125.2762\\-193.6936\\-105\\-121.37\\-193.6936\\-105\\-119.4168\\-194.6198\\-105\\-118.1341\\-195.7553\\-105\\-116.36\\-197.7084\\-105\\-115.9417\\-201.6146\\-105\\-115.5106\\-202.1463\\-105\\-114.7388\\-201.6146\\-105\\-113.5575\\-201.1625\\-105\\-112.962\\-201.6146\\-105\\-111.3338\\-203.5678\\-105\\-112.3467\\-205.5209\\-105\\-113.0634\\-207.474\\-105\\-113.5575\\-208.0504\\-105\\-115.5106\\-208.9074\\-105\\-116.9113\\-207.474\\-105\\-117.4637\\-206.4344\\-105\\-119.4168\\-206.9057\\-105\\-121.37\\-208.6487\\-105\\-125.2762\\-208.8498\\-105"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "58"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-60.8231\\-196.3584\\-105\\-61.56079\\-195.7553\\-105\\-61.42183\\-193.8021\\-105\\-53.0106\\-185.4116\\-105\\-51.05748\\-184.5899\\-105\\-49.10435\\-183.4166\\-105\\-48.51028\\-184.0365\\-105\\-50.05766\\-185.9896\\-105\\-53.99479\\-189.8959\\-105\\-56.91685\\-192.4655\\-105"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "59"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-168.4001\\-105\\-49.95635\\-166.4584\\-105\\-49.10435\\-164.8212\\-105\\-46.83384\\-162.5521\\-105\\-45.1981\\-161.6349\\-105\\-43.24498\\-159.6909\\-105\\-41.29185\\-159.1255\\-105\\-39.33873\\-159.5937\\-105\\-37.3856\\-161.5102\\-105\\-35.43248\\-162.3404\\-105\\-33.62796\\-164.5053\\-105\\-35.73611\\-166.4584\\-105\\-37.3856\\-167.4548\\-105\\-39.33873\\-168.4039\\-105\\-41.29185\\-168.4039\\-105\\-43.24498\\-167.4633\\-105\\-45.1981\\-165.5472\\-105\\-46.74631\\-166.4584\\-105\\-47.15123\\-166.8991\\-105"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "60"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2563\\-103\\-129.9453\\-205.5209\\-103\\-131.6929\\-203.5678\\-103\\-132.4907\\-201.6146\\-103\\-132.7422\\-199.6615\\-103\\-132.5094\\-197.7084\\-103\\-131.4611\\-195.7553\\-103\\-131.1356\\-195.4274\\-103\\-129.1825\\-194.1965\\-103\\-127.2293\\-193.6936\\-103\\-123.3231\\-193.6667\\-103\\-121.37\\-193.4453\\-103\\-119.4168\\-194.4794\\-103\\-115.5106\\-197.454\\-103\\-115.2912\\-197.7084\\-103\\-114.7308\\-199.6615\\-103\\-113.5575\\-200.5302\\-103\\-112.4907\\-201.6146\\-103\\-111.3225\\-203.5678\\-103\\-112.8672\\-207.474\\-103\\-113.5575\\-208.2587\\-103\\-115.5106\\-208.9013\\-103\\-117.3107\\-207.474\\-103\\-117.4637\\-206.6852\\-103\\-119.4168\\-207.4069\\-103\\-121.37\\-208.5536\\-103\\-123.3231\\-208.3438\\-103\\-125.2762\\-208.6277\\-103"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-60.8231\\-195.0559\\-103\\-62.08502\\-193.8021\\-103\\-53.0106\\-184.7531\\-103\\-51.05748\\-183.0235\\-103\\-49.67312\\-182.0834\\-103\\-49.10435\\-181.5269\\-103\\-48.71519\\-182.0834\\-103\\-50.10823\\-184.0365\\-103\\-51.74948\\-185.9896\\-103"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "62"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-168.4001\\-103\\-49.95635\\-166.4584\\-103\\-49.10435\\-164.8212\\-103\\-46.85012\\-162.5521\\-103\\-45.1981\\-161.6301\\-103\\-43.24498\\-159.6909\\-103\\-41.29185\\-159.1255\\-103\\-39.33873\\-159.5937\\-103\\-37.3856\\-161.2653\\-103\\-35.43248\\-161.7527\\-103\\-34.58307\\-162.5521\\-103\\-33.63471\\-164.5053\\-103\\-36.67002\\-166.4584\\-103\\-39.33873\\-168.4039\\-103\\-41.29185\\-168.4039\\-103\\-43.24498\\-167.4633\\-103\\-45.1981\\-165.5472\\-103\\-46.74631\\-166.4584\\-103\\-47.15123\\-166.8991\\-103"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002352"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "63"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2624\\-101\\-131.8849\\-203.5678\\-101\\-132.7319\\-201.6146\\-101\\-132.7526\\-197.7084\\-101\\-131.9734\\-195.7553\\-101\\-131.1356\\-194.9128\\-101\\-129.1825\\-193.7945\\-101\\-127.2293\\-193.6801\\-101\\-123.3231\\-193.1769\\-101\\-121.37\\-192.8527\\-101\\-119.4168\\-193.4477\\-101\\-117.4637\\-195.3288\\-101\\-115.5106\\-196.5167\\-101\\-114.4045\\-197.7084\\-101\\-113.6395\\-199.6615\\-101\\-112.3942\\-201.6146\\-101\\-111.3225\\-203.5678\\-101\\-113.3678\\-207.474\\-101\\-113.5575\\-207.685\\-101\\-115.5106\\-208.7848\\-101\\-117.4637\\-208.6312\\-101\\-121.37\\-208.5206\\-101\\-123.3231\\-208.156\\-101\\-125.2762\\-208.6141\\-101"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002352"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "64"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-62.77623\\-194.7142\\-101\\-63.36574\\-193.8021\\-101\\-59.63448\\-189.8959\\-101\\-58.86998\\-188.8507\\-101\\-53.0106\\-183.0145\\-101\\-49.10435\\-179.2079\\-101\\-47.96503\\-180.1303\\-101\\-48.494\\-182.0834\\-101\\-60.8231\\-194.3927\\-101"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002352"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "65"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-168.4001\\-101\\-49.95635\\-166.4584\\-101\\-49.10435\\-164.8212\\-101\\-47.15123\\-162.3651\\-101\\-45.1981\\-161.5396\\-101\\-43.24498\\-159.6812\\-101\\-41.29185\\-159.1255\\-101\\-39.33873\\-159.5937\\-101\\-37.77495\\-160.599\\-101\\-37.3856\\-160.976\\-101\\-35.43248\\-161.5799\\-101\\-34.43372\\-162.5521\\-101\\-33.99295\\-164.5053\\-101\\-35.43248\\-165.4307\\-101\\-37.293\\-166.4584\\-101\\-39.33873\\-168.4039\\-101\\-41.29185\\-168.4039\\-101\\-43.24498\\-167.4586\\-101\\-45.1981\\-165.5423\\-101\\-46.74958\\-166.4584\\-101\\-47.15123\\-166.8991\\-101"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002351"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "66"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.2803\\-99\\-130.1688\\-205.5209\\-99\\-131.8909\\-203.5678\\-99\\-132.7319\\-201.6146\\-99\\-132.7526\\-197.7084\\-99\\-132.1435\\-195.7553\\-99\\-131.1356\\-194.613\\-99\\-129.1825\\-193.381\\-99\\-127.2293\\-193.4304\\-99\\-125.2762\\-192.8424\\-99\\-123.3231\\-192.3532\\-99\\-121.37\\-192.1117\\-99\\-119.4168\\-192.7555\\-99\\-117.4637\\-194.8091\\-99\\-115.8185\\-195.7553\\-99\\-113.6522\\-197.7084\\-99\\-113.2535\\-199.6615\\-99\\-112.3999\\-201.6146\\-99\\-111.3453\\-203.5678\\-99\\-112.5082\\-205.5209\\-99\\-113.5575\\-206.7403\\-99\\-115.5106\\-208.4259\\-99\\-117.4637\\-208.7847\\-99\\-119.4168\\-208.9475\\-99\\-123.3231\\-208.6553\\-99\\-125.2762\\-208.839\\-99"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002351"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "67"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-62.77623\\-194.5872\\-99\\-63.49121\\-193.8021\\-99\\-62.77623\\-192.7485\\-99\\-60.8231\\-190.4311\\-99\\-60.17585\\-189.8959\\-99\\-59.65918\\-187.9428\\-99\\-58.86998\\-186.8823\\-99\\-54.96373\\-182.9913\\-99\\-51.05748\\-179.1537\\-99\\-49.10435\\-177.7188\\-99\\-48.43719\\-178.1771\\-99\\-48.30838\\-180.1303\\-99\\-49.10435\\-181.0674\\-99\\-58.86998\\-190.7943\\-99\\-60.8231\\-192.9747\\-99"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002351"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "68"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-168.4003\\-99\\-49.96194\\-166.4584\\-99\\-48.86409\\-164.5053\\-99\\-47.88497\\-162.5521\\-99\\-47.15123\\-161.8377\\-99\\-45.1981\\-161.262\\-99\\-43.24498\\-159.667\\-99\\-41.29185\\-159.1255\\-99\\-39.33873\\-159.5898\\-99\\-37.75181\\-160.599\\-99\\-37.3856\\-160.9558\\-99\\-35.43248\\-161.5799\\-99\\-34.42916\\-162.5521\\-99\\-34.7133\\-164.5053\\-99\\-37.30297\\-166.4584\\-99\\-39.33873\\-168.4039\\-99\\-41.29185\\-168.4039\\-99\\-43.24498\\-167.3163\\-99\\-45.1981\\-165.4048\\-99\\-46.7823\\-166.4584\\-99\\-47.15123\\-166.8991\\-99"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002350"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "27"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "69"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.4694\\-97\\-129.1825\\-207.0796\\-97\\-130.5641\\-205.5209\\-97\\-131.9121\\-203.5678\\-97\\-132.7319\\-201.6146\\-97\\-132.7526\\-197.7084\\-97\\-132.5153\\-195.7553\\-97\\-131.1356\\-193.6792\\-97\\-129.1825\\-192.9335\\-97\\-127.2293\\-192.8198\\-97\\-125.2762\\-192.0154\\-97\\-123.3231\\-191.6133\\-97\\-121.37\\-191.6496\\-97\\-119.4168\\-192.6976\\-97\\-117.4637\\-194.4226\\-97\\-115.5106\\-195.3097\\-97\\-113.5575\\-196.9853\\-97\\-113.0067\\-197.7084\\-97\\-112.9671\\-199.6615\\-97\\-112.5857\\-201.6146\\-97\\-111.6991\\-203.5678\\-97\\-112.3305\\-205.5209\\-97\\-113.5575\\-206.8959\\-97\\-115.5106\\-208.2563\\-97\\-117.4637\\-208.5615\\-97\\-121.37\\-208.9652\\-97\\-125.2762\\-208.9652\\-97"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002350"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "70"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-62.77623\\-193.2986\\-97\\-63.35246\\-191.849\\-97\\-61.40206\\-189.8959\\-97\\-60.8231\\-188.3665\\-97\\-60.50223\\-187.9428\\-97\\-59.94572\\-185.9896\\-97\\-58.86998\\-185.0267\\-97\\-53.93615\\-180.1303\\-97\\-52.02604\\-178.1771\\-97\\-51.05748\\-177.4293\\-97\\-49.10435\\-178.0053\\-97\\-48.94843\\-178.1771\\-97\\-50.15179\\-180.1303\\-97\\-51.05748\\-181.0287\\-97\\-51.90258\\-182.0834\\-97\\-53.74945\\-184.0365\\-97\\-54.96373\\-185.1758\\-97\\-56.01004\\-185.9896\\-97\\-58.86998\\-188.8354\\-97\\-60.09288\\-189.8959\\-97\\-60.8231\\-191.6205\\-97"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002350"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "71"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-168.3654\\-97\\-50.15721\\-166.4584\\-97\\-49.23979\\-164.5053\\-97\\-48.00927\\-162.5521\\-97\\-47.15123\\-161.6899\\-97\\-45.1981\\-160.9957\\-97\\-43.24498\\-159.6578\\-97\\-41.29185\\-159.0989\\-97\\-39.33873\\-159.5058\\-97\\-37.3856\\-160.4221\\-97\\-35.43248\\-161.4912\\-97\\-34.16401\\-162.5521\\-97\\-35.16996\\-164.5053\\-97\\-35.43248\\-164.6796\\-97\\-39.33873\\-168.4039\\-97\\-41.29185\\-168.4039\\-97\\-43.24498\\-167.103\\-97\\-45.1981\\-165.2288\\-97\\-46.83469\\-166.4584\\-97\\-47.15123\\-166.8646\\-97"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002349"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "72"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-129.1825\\-208.0542\\-95\\-129.7661\\-207.474\\-95\\-131.1356\\-205.4564\\-95\\-132.1169\\-203.5678\\-95\\-132.7422\\-201.6146\\-95\\-132.8069\\-197.7084\\-95\\-132.7848\\-195.7553\\-95\\-131.9804\\-193.8021\\-95\\-131.1356\\-193.0497\\-95\\-129.1825\\-192.6535\\-95\\-127.2293\\-191.7676\\-95\\-125.2762\\-191.1773\\-95\\-123.3231\\-191.3522\\-95\\-121.37\\-191.6746\\-95\\-119.4168\\-192.7123\\-95\\-117.4637\\-193.9507\\-95\\-115.5106\\-194.8503\\-95\\-113.5575\\-196.658\\-95\\-112.6116\\-197.7084\\-95\\-112.4406\\-199.6615\\-95\\-112.8113\\-201.6146\\-95\\-112.2396\\-203.5678\\-95\\-111.7659\\-205.5209\\-95\\-112.9203\\-207.474\\-95\\-113.5575\\-208.1073\\-95\\-115.5106\\-208.6448\\-95\\-117.4637\\-208.5421\\-95\\-119.4168\\-208.6712\\-95\\-121.37\\-208.9652\\-95\\-125.2762\\-208.9652\\-95\\-127.2293\\-208.7847\\-95"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002349"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "73"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-60.8231\\-189.7594\\-95\\-62.74294\\-187.9428\\-95\\-61.8286\\-185.9896\\-95\\-58.86998\\-183.4462\\-95\\-55.50892\\-180.1303\\-95\\-53.0106\\-177.4369\\-95\\-51.05748\\-177.3568\\-95\\-50.34042\\-178.1771\\-95\\-51.9435\\-180.1303\\-95\\-53.12157\\-182.0834\\-95\\-55.0764\\-184.0365\\-95\\-56.91685\\-185.3731\\-95\\-58.86998\\-187.3188\\-95\\-59.64987\\-187.9428\\-95"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002349"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "74"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-168.0558\\-95\\-50.6214\\-166.4584\\-95\\-49.76434\\-164.5053\\-95\\-47.15123\\-161.6794\\-95\\-45.1981\\-160.9558\\-95\\-43.24498\\-159.6357\\-95\\-41.29185\\-158.5933\\-95\\-39.33873\\-158.4476\\-95\\-37.3856\\-159.5415\\-95\\-35.43248\\-160.7746\\-95\\-33.47935\\-161.8704\\-95\\-32.62582\\-162.5521\\-95\\-33.47935\\-163.9784\\-95\\-34.45591\\-164.5053\\-95\\-35.43248\\-164.7758\\-95\\-39.33873\\-168.4039\\-95\\-41.29185\\-168.4039\\-95\\-43.24498\\-167.3163\\-95\\-45.1981\\-165.3988\\-95\\-47.15123\\-166.3658\\-95"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002348"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "75"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-129.1825\\-208.2248\\-93\\-131.688\\-205.5209\\-93\\-132.5172\\-203.5678\\-93\\-132.7848\\-201.6146\\-93\\-133.4882\\-197.7084\\-93\\-133.1263\\-195.7553\\-93\\-132.4845\\-193.8021\\-93\\-131.1356\\-192.334\\-93\\-129.1825\\-191.8723\\-93\\-127.2293\\-190.9495\\-93\\-125.2762\\-190.3471\\-93\\-123.3231\\-190.9319\\-93\\-121.37\\-192.0106\\-93\\-119.4168\\-192.9018\\-93\\-117.4637\\-193.6277\\-93\\-115.5106\\-194.6485\\-93\\-112.4275\\-197.7084\\-93\\-111.7137\\-199.6615\\-93\\-112.6352\\-201.6146\\-93\\-112.6331\\-203.5678\\-93\\-111.7398\\-205.5209\\-93\\-112.5382\\-207.474\\-93\\-113.5575\\-208.4834\\-93\\-115.5106\\-208.9563\\-93\\-117.4637\\-208.7847\\-93\\-119.4168\\-208.8201\\-93\\-121.37\\-208.9652\\-93\\-127.2293\\-208.9563\\-93"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002348"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "76"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-62.77623\\-190.9084\\-93\\-63.79619\\-189.8959\\-93\\-64.03902\\-187.9428\\-93\\-63.5418\\-185.9896\\-93\\-62.77623\\-185.247\\-93\\-60.8231\\-183.7641\\-93\\-58.86998\\-182.6535\\-93\\-56.91685\\-180.4785\\-93\\-56.50862\\-180.1303\\-93\\-54.96373\\-178.1414\\-93\\-53.0106\\-177.1517\\-93\\-52.19029\\-178.1771\\-93\\-53.44375\\-180.1303\\-93\\-54.25634\\-182.0834\\-93\\-56.91685\\-184.6781\\-93\\-60.17767\\-187.9428\\-93\\-61.95661\\-189.8959\\-93"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002348"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "77"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-168.5063\\-93\\-43.24498\\-167.4916\\-93\\-45.1981\\-165.5616\\-93\\-47.15123\\-165.7385\\-93\\-49.10435\\-167.6698\\-93\\-50.98299\\-166.4584\\-93\\-49.96546\\-164.5053\\-93\\-48.23468\\-162.5521\\-93\\-47.15123\\-161.5249\\-93\\-45.1981\\-160.3858\\-93\\-43.24498\\-159.3859\\-93\\-42.35884\\-158.6459\\-93\\-41.29185\\-157.4286\\-93\\-39.33873\\-156.562\\-93\\-37.3856\\-157.5049\\-93\\-36.12515\\-158.6459\\-93\\-33.47935\\-160.6804\\-93\\-31.52623\\-161.8348\\-93\\-30.62537\\-162.5521\\-93\\-31.52623\\-163.9868\\-93\\-32.10945\\-164.5053\\-93\\-33.47935\\-165.0689\\-93\\-35.43248\\-165.3591\\-93\\-36.77838\\-166.4584\\-93\\-37.3856\\-167.1208\\-93\\-39.33873\\-168.5063\\-93"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002347"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "78"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-129.1825\\-208.2248\\-91\\-131.8729\\-205.5209\\-91\\-132.7739\\-203.5678\\-91\\-133.2503\\-201.6146\\-91\\-133.9235\\-199.6615\\-91\\-134.2849\\-197.7084\\-91\\-133.7454\\-195.7553\\-91\\-132.8069\\-193.8021\\-91\\-131.1356\\-191.662\\-91\\-129.1825\\-191.2717\\-91\\-127.2293\\-190.5699\\-91\\-125.2762\\-189.6484\\-91\\-123.3231\\-190.7419\\-91\\-121.37\\-192.3373\\-91\\-119.4168\\-193.1257\\-91\\-117.4637\\-193.3957\\-91\\-115.5106\\-194.4589\\-91\\-112.401\\-197.7084\\-91\\-111.3004\\-199.6615\\-91\\-112.4751\\-201.6146\\-91\\-113.4345\\-203.5678\\-91\\-112.3213\\-205.5209\\-91\\-112.5432\\-207.474\\-91\\-113.5575\\-208.4834\\-91\\-115.5106\\-208.9652\\-91\\-119.4168\\-208.9218\\-91\\-123.3231\\-208.9652\\-91\\-127.2293\\-208.9563\\-91"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002347"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "79"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-64.72935\\-190.1274\\-91\\-64.89211\\-189.8959\\-91\\-65.32645\\-187.9428\\-91\\-65.17381\\-185.9896\\-91\\-64.72935\\-184.9991\\-91\\-63.81877\\-184.0365\\-91\\-62.77623\\-183.2329\\-91\\-60.64872\\-182.0834\\-91\\-59.31023\\-180.1303\\-91\\-58.86998\\-179.2777\\-91\\-57.92017\\-178.1771\\-91\\-55.45201\\-176.224\\-91\\-54.96373\\-175.987\\-91\\-54.58008\\-176.224\\-91\\-54.11892\\-178.1771\\-91\\-54.96373\\-180.0446\\-91\\-56.04308\\-182.0834\\-91\\-58.86998\\-184.9236\\-91\\-59.72149\\-185.9896\\-91\\-61.476\\-187.9428\\-91\\-61.98135\\-189.8959\\-91\\-62.77623\\-191.2522\\-91"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002347"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "29"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "80"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-169.2568\\-91\\-43.24498\\-167.7991\\-91\\-45.1981\\-165.6988\\-91\\-47.15123\\-165.4679\\-91\\-49.10435\\-167.3957\\-91\\-51.05748\\-166.9141\\-91\\-51.37229\\-166.4584\\-91\\-51.05748\\-166.0349\\-91\\-49.10435\\-162.6928\\-91\\-47.15123\\-160.7874\\-91\\-45.1981\\-159.5259\\-91\\-44.07686\\-158.6459\\-91\\-43.51702\\-156.6928\\-91\\-43.24498\\-156.3081\\-91\\-41.29185\\-154.7006\\-91\\-37.3856\\-154.6704\\-91\\-35.43248\\-155.4899\\-91\\-34.00301\\-156.6928\\-91\\-33.47935\\-157.5331\\-91\\-33.14473\\-158.6459\\-91\\-31.52623\\-160.5746\\-91\\-29.5731\\-161.8005\\-91\\-28.62636\\-162.5521\\-91\\-28.72675\\-164.5053\\-91\\-31.52623\\-164.769\\-91\\-33.47935\\-166.1177\\-91\\-35.43248\\-167.1242\\-91\\-37.3856\\-168.843\\-91\\-39.33873\\-169.3881\\-91"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002346"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "81"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-129.1825\\-208.2248\\-89\\-131.8729\\-205.5209\\-89\\-133.1553\\-203.5678\\-89\\-133.9641\\-201.6146\\-89\\-134.4482\\-199.6615\\-89\\-134.6953\\-197.7084\\-89\\-134.0749\\-195.7553\\-89\\-133.2108\\-193.8021\\-89\\-131.7747\\-191.849\\-89\\-131.1356\\-191.3407\\-89\\-129.1825\\-191.2871\\-89\\-127.2293\\-190.5764\\-89\\-125.2762\\-189.5598\\-89\\-123.3231\\-190.7252\\-89\\-121.37\\-192.2837\\-89\\-119.4168\\-193.0469\\-89\\-117.4637\\-193.0139\\-89\\-115.5106\\-193.2997\\-89\\-115.0745\\-193.8021\\-89\\-113.9156\\-195.7553\\-89\\-112.1745\\-197.7084\\-89\\-111.0315\\-199.6615\\-89\\-112.2177\\-201.6146\\-89\\-113.5575\\-202.759\\-89\\-115.5106\\-203.4448\\-89\\-117.4637\\-203.168\\-89\\-118.7048\\-203.5678\\-89\\-119.4168\\-204.4915\\-89\\-119.6777\\-205.5209\\-89\\-119.4168\\-205.864\\-89\\-117.4637\\-205.9586\\-89\\-116.7884\\-205.5209\\-89\\-115.5106\\-203.8049\\-89\\-113.5575\\-204.7265\\-89\\-112.7127\\-205.5209\\-89\\-112.5382\\-207.474\\-89\\-113.5575\\-208.4834\\-89\\-115.5106\\-208.9652\\-89\\-117.4637\\-208.8473\\-89\\-119.4168\\-208.5378\\-89\\-123.3231\\-208.9303\\-89\\-127.2293\\-208.9563\\-89"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002346"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "82"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-64.72935\\-192.9191\\-89\\-66.3895\\-189.8959\\-89\\-67.20176\\-187.9428\\-89\\-67.21145\\-184.0365\\-89\\-66.68247\\-182.6259\\-89\\-66.21297\\-182.0834\\-89\\-67.30222\\-180.1303\\-89\\-67.51163\\-178.1771\\-89\\-66.68247\\-177.742\\-89\\-64.72935\\-179.6383\\-89\\-62.77623\\-180.8028\\-89\\-60.8231\\-180.4755\\-89\\-58.86998\\-178.6086\\-89\\-56.95053\\-178.1771\\-89\\-57.11739\\-180.1303\\-89\\-57.88578\\-182.0834\\-89\\-58.86998\\-183.0235\\-89\\-60.8231\\-183.8326\\-89\\-60.96261\\-184.0365\\-89\\-61.8792\\-187.9428\\-89\\-61.9398\\-189.8959\\-89\\-62.14433\\-191.849\\-89\\-62.77623\\-192.6421\\-89"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002346"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "83"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-172.592\\-89\\-43.24498\\-169.8198\\-89\\-45.75188\\-166.4584\\-89\\-47.15123\\-165.3223\\-89\\-49.10435\\-166.551\\-89\\-51.05748\\-167.6263\\-89\\-51.96246\\-166.4584\\-89\\-50.05957\\-162.5521\\-89\\-45.96318\\-158.6459\\-89\\-43.70415\\-154.7396\\-89\\-43.24498\\-154.2865\\-89\\-41.29185\\-153.5093\\-89\\-37.3856\\-153.5093\\-89\\-35.43248\\-153.7893\\-89\\-33.47935\\-155.4951\\-89\\-32.43875\\-156.6928\\-89\\-31.69385\\-158.6459\\-89\\-29.5731\\-160.6219\\-89\\-27.61998\\-161.9449\\-89\\-27.05613\\-162.5521\\-89\\-27.61998\\-164.3738\\-89\\-29.5731\\-163.9172\\-89\\-30.63755\\-164.5053\\-89\\-31.52623\\-165.589\\-89\\-32.06223\\-166.4584\\-89\\-32.80389\\-168.4115\\-89\\-33.47935\\-169.2386\\-89\\-35.43248\\-171.1522\\-89\\-36.8222\\-172.3178\\-89\\-37.3856\\-172.6167\\-89"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "84"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-129.1825\\-208.2312\\-87\\-131.1356\\-206.319\\-87\\-133.6917\\-203.5678\\-87\\-134.4548\\-201.6146\\-87\\-134.6953\\-199.6615\\-87\\-134.7058\\-197.7084\\-87\\-134.4559\\-195.7553\\-87\\-133.931\\-193.8021\\-87\\-133.0887\\-192.1611\\-87\\-132.8058\\-191.849\\-87\\-131.1356\\-190.8984\\-87\\-129.1825\\-191.1179\\-87\\-127.2293\\-189.8583\\-87\\-125.2762\\-189.1465\\-87\\-123.3231\\-190.3842\\-87\\-121.37\\-192.311\\-87\\-119.4168\\-192.9202\\-87\\-117.4637\\-192.6685\\-87\\-115.5106\\-192.7573\\-87\\-112.7466\\-195.7553\\-87\\-111.5668\\-197.7084\\-87\\-110.6376\\-199.6615\\-87\\-110.196\\-201.6146\\-87\\-111.6043\\-203.1012\\-87\\-113.5575\\-202.6755\\-87\\-115.5106\\-202.5357\\-87\\-117.4637\\-201.5475\\-87\\-119.4168\\-201.1874\\-87\\-120.8817\\-201.6146\\-87\\-120.8671\\-203.5678\\-87\\-120.6791\\-205.5209\\-87\\-121.0684\\-207.474\\-87\\-123.3231\\-208.7778\\-87\\-125.2762\\-208.9652\\-87\\-127.2293\\-208.9563\\-87"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "85"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-121.37\\-188.7396\\-87\\-122.7666\\-187.9428\\-87\\-122.1597\\-185.9896\\-87\\-121.37\\-185.4677\\-87\\-119.4168\\-185.8676\\-87\\-118.4684\\-187.9428\\-87\\-119.4168\\-189.1095\\-87"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "86"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-117.4637\\-208.4865\\-87\\-118.626\\-207.474\\-87\\-115.7982\\-205.5209\\-87\\-115.5106\\-205.2052\\-87\\-113.5575\\-205.0111\\-87\\-111.6043\\-204.3045\\-87\\-111.1359\\-205.5209\\-87\\-112.5333\\-207.474\\-87\\-113.5575\\-208.4834\\-87\\-115.5106\\-208.9563\\-87"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "87"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-64.72935\\-196.2396\\-87\\-66.11471\\-195.7553\\-87\\-66.34738\\-193.8021\\-87\\-66.68247\\-192.9685\\-87\\-67.80195\\-191.849\\-87\\-70.29349\\-189.8959\\-87\\-70.58872\\-189.5432\\-87\\-71.07291\\-187.9428\\-87\\-71.10316\\-184.0365\\-87\\-71.62538\\-182.0834\\-87\\-71.92943\\-180.1303\\-87\\-71.94951\\-178.1771\\-87\\-72.54185\\-176.6716\\-87\\-72.54185\\-176.1085\\-87\\-70.58872\\-175.5968\\-87\\-69.88737\\-176.224\\-87\\-69.48196\\-178.1771\\-87\\-68.6356\\-178.7995\\-87\\-66.68247\\-179.3808\\-87\\-66.12685\\-180.1303\\-87\\-66.77637\\-182.0834\\-87\\-63.25056\\-184.0365\\-87\\-62.77623\\-184.1821\\-87\\-61.74595\\-185.9896\\-87\\-60.8231\\-188.9193\\-87\\-59.91312\\-187.9428\\-87\\-59.01359\\-185.9896\\-87\\-58.42608\\-185.9896\\-87\\-56.91685\\-186.8338\\-87\\-54.16853\\-187.9428\\-87\\-53.81932\\-189.8959\\-87\\-56.15433\\-191.849\\-87\\-58.86998\\-193.7716\\-87\\-60.8231\\-193.5186\\-87\\-62.77623\\-197.0927\\-87"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "34"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "88"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-174.5184\\-87\\-39.33873\\-174.1701\\-87\\-41.29185\\-173.2812\\-87\\-43.24498\\-172.6167\\-87\\-43.64448\\-172.3178\\-87\\-45.1981\\-170.0705\\-87\\-46.04807\\-168.4115\\-87\\-46.57315\\-166.4584\\-87\\-47.15123\\-165.7923\\-87\\-49.10435\\-165.4072\\-87\\-51.05748\\-167.1669\\-87\\-51.84871\\-166.4584\\-87\\-51.90926\\-164.5053\\-87\\-51.31656\\-162.5521\\-87\\-47.02916\\-158.6459\\-87\\-45.9049\\-156.6928\\-87\\-43.24498\\-153.8864\\-87\\-41.29185\\-153.1832\\-87\\-37.3856\\-153.1832\\-87\\-35.43248\\-153.3247\\-87\\-33.47935\\-154.195\\-87\\-32.92405\\-154.7396\\-87\\-31.37762\\-156.6928\\-87\\-30.47495\\-158.6459\\-87\\-29.5731\\-159.6167\\-87\\-28.32689\\-160.599\\-87\\-26.81325\\-162.5521\\-87\\-27.61998\\-163.192\\-87\\-29.5731\\-163.7615\\-87\\-30.38875\\-164.5053\\-87\\-31.2444\\-168.4115\\-87\\-32.49636\\-170.3646\\-87\\-33.47935\\-171.5319\\-87\\-35.43248\\-173.4851\\-87"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "89"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "58.20655\\-189.8959\\-87\\58.02259\\-187.9428\\-87\\59.41157\\-185.9896\\-87\\60.00053\\-184.0365\\-87\\60.27065\\-183.7757\\-87\\62.22377\\-183.7757\\-87\\62.49389\\-184.0365\\-87\\62.80058\\-185.9896\\-87\\62.79063\\-187.9428\\-87\\62.22377\\-189.2237\\-87\\61.54275\\-189.8959\\-87\\60.27065\\-190.5001\\-87"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "90"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-129.1825\\-208.2827\\-85\\-131.1356\\-206.5541\\-85\\-132.1589\\-205.5209\\-85\\-133.8307\\-203.5678\\-85\\-134.6749\\-201.6146\\-85\\-134.7058\\-195.7553\\-85\\-134.4638\\-193.8021\\-85\\-133.7707\\-191.849\\-85\\-133.0887\\-191.1351\\-85\\-131.1356\\-190.7262\\-85\\-129.1825\\-190.9919\\-85\\-127.2293\\-189.0407\\-85\\-125.8004\\-187.9428\\-85\\-124.026\\-185.9896\\-85\\-123.3231\\-185.3697\\-85\\-121.37\\-183.9557\\-85\\-119.4168\\-183.7045\\-85\\-118.8444\\-184.0365\\-85\\-117.6764\\-185.9896\\-85\\-117.2399\\-187.9428\\-85\\-118.2866\\-189.8959\\-85\\-116.6546\\-191.849\\-85\\-115.5106\\-192.5474\\-85\\-112.4242\\-195.7553\\-85\\-111.2374\\-197.7084\\-85\\-110.4394\\-199.6615\\-85\\-109.2842\\-201.6146\\-85\\-109.3151\\-203.5678\\-85\\-110.6422\\-205.5209\\-85\\-113.5575\\-208.4834\\-85\\-115.5106\\-208.9218\\-85\\-117.5722\\-207.474\\-85\\-115.5106\\-205.2372\\-85\\-113.5575\\-203.9157\\-85\\-113.2772\\-203.5678\\-85\\-115.5106\\-202.3856\\-85\\-117.4637\\-200.5849\\-85\\-118.796\\-199.6615\\-85\\-118.9535\\-197.7084\\-85\\-119.4168\\-196.1602\\-85\\-119.9051\\-195.7553\\-85\\-121.37\\-195.4232\\-85\\-122.2923\\-195.7553\\-85\\-123.3231\\-196.9922\\-85\\-123.5654\\-197.7084\\-85\\-123.3231\\-198.4578\\-85\\-122.6141\\-199.6615\\-85\\-122.4686\\-201.6146\\-85\\-122.0193\\-205.5209\\-85\\-122.3811\\-207.474\\-85\\-123.3231\\-208.4609\\-85\\-125.2762\\-209.0501\\-85\\-127.2293\\-209.0112\\-85"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "91"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-62.77623\\-200.1789\\-85\\-63.93182\\-199.6615\\-85\\-64.72935\\-199.0986\\-85\\-67.31564\\-197.7084\\-85\\-69.4494\\-195.7553\\-85\\-71.3535\\-193.8021\\-85\\-72.54185\\-192.33\\-85\\-74.49497\\-188.6034\\-85\\-74.65656\\-187.9428\\-85\\-74.61704\\-185.9896\\-85\\-73.571\\-182.0834\\-85\\-72.75703\\-180.1303\\-85\\-72.5576\\-178.1771\\-85\\-73.53934\\-176.224\\-85\\-72.54185\\-174.6189\\-85\\-70.58872\\-175.3977\\-85\\-69.77938\\-176.224\\-85\\-70.58872\\-177.7586\\-85\\-72.48441\\-178.1771\\-85\\-71.98988\\-180.1303\\-85\\-70.58872\\-180.4493\\-85\\-68.6356\\-181.1068\\-85\\-68.05533\\-180.1303\\-85\\-67.44541\\-178.1771\\-85\\-66.68247\\-176.7123\\-85\\-64.72935\\-176.383\\-85\\-62.39588\\-178.1771\\-85\\-60.60991\\-180.1303\\-85\\-60.45522\\-182.0834\\-85\\-58.44318\\-184.0365\\-85\\-57.31445\\-185.9896\\-85\\-55.26031\\-187.9428\\-85\\-54.15371\\-189.8959\\-85\\-54.51583\\-193.8021\\-85\\-53.51923\\-195.7553\\-85\\-53.062\\-197.7084\\-85\\-54.96373\\-197.9683\\-85\\-56.91685\\-197.857\\-85\\-58.86998\\-196.4682\\-85\\-60.8231\\-196.7683\\-85\\-61.61045\\-197.7084\\-85\\-62.27012\\-199.6615\\-85"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "34"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "92"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-174.836\\-85\\-43.24498\\-174.2\\-85\\-45.36086\\-172.3178\\-85\\-46.26588\\-170.3646\\-85\\-46.7921\\-168.4115\\-85\\-47.51505\\-166.4584\\-85\\-49.10435\\-164.2151\\-85\\-51.05748\\-164.6861\\-85\\-52.45744\\-162.5521\\-85\\-51.68159\\-160.599\\-85\\-51.05748\\-160.0959\\-85\\-49.10435\\-159.6415\\-85\\-47.91771\\-158.6459\\-85\\-46.06449\\-156.6928\\-85\\-43.24498\\-153.8864\\-85\\-41.29185\\-153.1832\\-85\\-35.43248\\-153.1832\\-85\\-33.47935\\-153.7925\\-85\\-32.40846\\-154.7396\\-85\\-30.45743\\-156.6928\\-85\\-29.3584\\-158.6459\\-85\\-27.61998\\-160.1497\\-85\\-26.65626\\-160.599\\-85\\-25.66685\\-161.4734\\-85\\-23.71373\\-162.5761\\-85\\-25.66685\\-163.0915\\-85\\-27.61998\\-162.9292\\-85\\-29.63968\\-164.5053\\-85\\-30.42159\\-168.4115\\-85\\-31.18571\\-170.3646\\-85\\-32.46399\\-172.3178\\-85\\-34.22523\\-174.2709\\-85\\-35.43248\\-175.273\\-85\\-37.3856\\-175.9339\\-85"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "93"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-196.7531\\-85\\52.82857\\-195.7553\\-85\\54.04394\\-193.8021\\-85\\54.41127\\-192.0613\\-85\\55.88823\\-189.8959\\-85\\55.92752\\-185.9896\\-85\\56.3644\\-185.0499\\-85\\57.10017\\-184.0365\\-85\\58.12075\\-182.0834\\-85\\60.27065\\-180.014\\-85\\64.1769\\-179.7319\\-85\\66.13003\\-179.8174\\-85\\66.74976\\-180.1303\\-85\\68.08315\\-181.5453\\-85\\68.27015\\-182.0834\\-85\\66.68667\\-184.0365\\-85\\66.13003\\-185.0486\\-85\\65.33375\\-185.9896\\-85\\64.56055\\-187.9428\\-85\\64.49564\\-189.8959\\-85\\62.6981\\-191.849\\-85\\62.22377\\-192.1901\\-85\\60.27065\\-192.6464\\-85\\58.31752\\-194.102\\-85\\56.3644\\-195.8627\\-85"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "94"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-209.4498\\-83\\-129.1825\\-208.4828\\-83\\-130.7785\\-207.474\\-83\\-132.6034\\-205.5209\\-83\\-133.869\\-203.5678\\-83\\-134.6749\\-201.6146\\-83\\-134.8548\\-195.7553\\-83\\-134.8548\\-193.8021\\-83\\-134.1254\\-191.849\\-83\\-133.0887\\-190.8123\\-83\\-131.1356\\-190.7395\\-83\\-129.1825\\-190.8499\\-83\\-128.3447\\-189.8959\\-83\\-127.2293\\-188.152\\-83\\-125.2762\\-185.841\\-83\\-123.3231\\-184.7318\\-83\\-121.37\\-183.0988\\-83\\-119.4168\\-182.622\\-83\\-117.4637\\-183.0668\\-83\\-116.6902\\-184.0365\\-83\\-116.5641\\-185.9896\\-83\\-116.4494\\-189.8959\\-83\\-115.551\\-191.849\\-83\\-114.3584\\-193.8021\\-83\\-112.4182\\-195.7553\\-83\\-110.9622\\-197.7084\\-83\\-110.1906\\-199.6615\\-83\\-109.2742\\-201.6146\\-83\\-109.3257\\-203.5678\\-83\\-110.6324\\-205.5209\\-83\\-113.5575\\-208.4506\\-83\\-115.5106\\-208.873\\-83\\-117.0384\\-207.474\\-83\\-115.6614\\-205.5209\\-83\\-113.9143\\-203.5678\\-83\\-115.5106\\-202.3589\\-83\\-118.0031\\-199.6615\\-83\\-118.3705\\-195.7553\\-83\\-119.4168\\-194.7983\\-83\\-121.37\\-194.2591\\-83\\-123.3231\\-194.4555\\-83\\-125.2762\\-195.122\\-83\\-126.357\\-195.7553\\-83\\-126.6735\\-197.7084\\-83\\-125.2762\\-198.459\\-83\\-124.3997\\-199.6615\\-83\\-123.3231\\-201.7774\\-83\\-122.6912\\-203.5678\\-83\\-122.6322\\-205.5209\\-83\\-123.4178\\-207.474\\-83\\-124.8329\\-209.4271\\-83\\-125.2762\\-209.8457\\-83"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "95"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-53.0106\\-201.7632\\-83\\-54.96373\\-200.4173\\-83\\-56.91685\\-199.8972\\-83\\-58.86998\\-198.7744\\-83\\-60.8231\\-197.214\\-83\\-62.77623\\-196.9594\\-83\\-63.90371\\-195.7553\\-83\\-64.72935\\-194.5758\\-83\\-66.24302\\-195.7553\\-83\\-66.68247\\-196.7318\\-83\\-68.6356\\-197.5066\\-83\\-70.58872\\-196.5803\\-83\\-71.71024\\-195.7553\\-83\\-73.64672\\-193.8021\\-83\\-74.99562\\-191.849\\-83\\-76.06877\\-189.8959\\-83\\-76.64754\\-187.9428\\-83\\-76.18176\\-185.9896\\-83\\-74.49497\\-184.3167\\-83\\-72.54185\\-183.9297\\-83\\-71.45778\\-182.0834\\-83\\-71.66675\\-180.1303\\-83\\-71.29819\\-178.1771\\-83\\-71.60017\\-176.224\\-83\\-70.58872\\-175.0033\\-83\\-68.6356\\-173.9363\\-83\\-64.72935\\-173.9047\\-83\\-62.77623\\-175.1421\\-83\\-60.8231\\-177.2901\\-83\\-60.235\\-178.1771\\-83\\-59.48398\\-180.1303\\-83\\-58.05363\\-182.0834\\-83\\-57.25434\\-184.0365\\-83\\-56.89414\\-185.9896\\-83\\-55.79869\\-187.9428\\-83\\-54.31802\\-189.8959\\-83\\-53.75125\\-191.849\\-83\\-51.06705\\-195.7553\\-83\\-50.68137\\-197.7084\\-83\\-50.72488\\-199.6615\\-83\\-51.05748\\-200.7047\\-83\\-52.34906\\-201.6146\\-83"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "96"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-176.5601\\-83\\-41.29185\\-175.8917\\-83\\-43.24498\\-175.3425\\-83\\-44.59356\\-174.2709\\-83\\-46.23733\\-172.3178\\-83\\-47.24597\\-170.3646\\-83\\-47.84209\\-168.4115\\-83\\-48.2009\\-166.4584\\-83\\-48.82253\\-164.5053\\-83\\-49.10435\\-164.1942\\-83\\-51.05748\\-163.624\\-83\\-53.0106\\-163.1879\\-83\\-53.54882\\-162.5521\\-83\\-53.18499\\-160.599\\-83\\-51.05748\\-159.3758\\-83\\-49.10435\\-159.2031\\-83\\-47.15123\\-157.7373\\-83\\-43.24498\\-153.8864\\-83\\-41.29185\\-153.1832\\-83\\-37.3856\\-153.1832\\-83\\-35.43248\\-153.133\\-83\\-33.47935\\-153.5905\\-83\\-31.52623\\-154.7018\\-83\\-29.33574\\-156.6928\\-83\\-28.29412\\-158.6459\\-83\\-27.61998\\-159.299\\-83\\-25.66685\\-159.8874\\-83\\-23.71373\\-160.0616\\-83\\-23.03087\\-160.599\\-83\\-22.73716\\-162.5521\\-83\\-23.71373\\-163.3007\\-83\\-25.66685\\-162.9895\\-83\\-27.61998\\-163.291\\-83\\-28.79086\\-164.5053\\-83\\-29.06779\\-166.4584\\-83\\-29.5731\\-168.1967\\-83\\-30.34645\\-170.3646\\-83\\-31.1545\\-172.3178\\-83\\-32.43212\\-174.2709\\-83\\-33.47935\\-175.3113\\-83\\-35.43248\\-176.6207\\-83\\-37.3856\\-176.9683\\-83"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "97"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "32.9269\\-201.9917\\-83\\32.45412\\-201.6146\\-83\\32.30545\\-199.6615\\-83\\33.9982\\-197.7084\\-83\\34.88002\\-196.8331\\-83\\36.83315\\-195.3577\\-83\\38.47033\\-195.7553\\-83\\37.98462\\-197.7084\\-83\\36.83315\\-198.512\\-83\\35.96424\\-199.6615\\-83\\34.88002\\-200.6521\\-83"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "98"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-199.8684\\-83\\48.37751\\-199.6615\\-83\\47.7168\\-197.7084\\-83\\48.5519\\-196.2787\\-83\\49.11595\\-195.7553\\-83\\50.50502\\-194.0591\\-83\\50.83494\\-193.8021\\-83\\51.98537\\-191.849\\-83\\52.71585\\-189.8959\\-83\\53.32094\\-187.9428\\-83\\53.13131\\-185.9896\\-83\\54.20611\\-184.0365\\-83\\56.09991\\-182.0834\\-83\\56.21579\\-180.1303\\-83\\56.07587\\-178.1771\\-83\\56.3644\\-177.6482\\-83\\58.31752\\-175.5232\\-83\\60.27065\\-174.0622\\-83\\62.22377\\-173.9562\\-83\\64.1769\\-173.9728\\-83\\64.96358\\-174.2709\\-83\\66.13003\\-175.0208\\-83\\68.08315\\-176.9643\\-83\\68.65281\\-178.1771\\-83\\69.21423\\-180.1303\\-83\\69.32159\\-182.0834\\-83\\68.91592\\-184.0365\\-83\\67.72424\\-185.9896\\-83\\66.79269\\-187.9428\\-83\\66.48325\\-189.8959\\-83\\64.1769\\-192.6319\\-83\\62.22377\\-194.25\\-83\\60.27065\\-195.1848\\-83\\59.52237\\-195.7553\\-83\\58.31752\\-196.4179\\-83\\56.3644\\-197.87\\-83\\54.41127\\-198.8713\\-83\\52.45815\\-199.6282\\-83\\50.50502\\-199.8869\\-83"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "99"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-210.0347\\-81\\-129.1825\\-208.6141\\-81\\-131.1356\\-207.7577\\-81\\-133.1695\\-205.5209\\-81\\-134.0745\\-203.5678\\-81\\-134.76\\-201.6146\\-81\\-134.7944\\-199.6615\\-81\\-135.2656\\-197.7084\\-81\\-135.5881\\-195.7553\\-81\\-135.596\\-193.8021\\-81\\-134.9586\\-191.849\\-81\\-133.0887\\-190.4466\\-81\\-131.1356\\-190.8396\\-81\\-129.1825\\-189.9716\\-81\\-128.19\\-187.9428\\-81\\-126.2583\\-185.9896\\-81\\-123.9723\\-184.0365\\-81\\-123.3231\\-183.3945\\-81\\-119.4168\\-181.5029\\-81\\-117.4637\\-181.4127\\-81\\-115.5261\\-182.0834\\-81\\-115.0678\\-184.0365\\-81\\-115.6758\\-185.9896\\-81\\-115.7633\\-187.9428\\-81\\-115.2401\\-191.849\\-81\\-114.3584\\-193.8021\\-81\\-112.412\\-195.7553\\-81\\-110.6476\\-197.7084\\-81\\-109.6589\\-199.6615\\-81\\-109.2742\\-201.6146\\-81\\-109.6512\\-203.033\\-81\\-109.9507\\-203.5678\\-81\\-111.6043\\-205.3395\\-81\\-112.5658\\-203.5678\\-81\\-113.5575\\-202.8836\\-81\\-115.5106\\-202.0493\\-81\\-115.948\\-201.6146\\-81\\-117.2893\\-199.6615\\-81\\-117.6754\\-197.7084\\-81\\-118.3098\\-195.7553\\-81\\-119.4168\\-194.6697\\-81\\-121.37\\-193.8248\\-81\\-123.3231\\-194.3403\\-81\\-125.2762\\-193.7794\\-81\\-127.2293\\-193.8918\\-81\\-128.8313\\-195.7553\\-81\\-129.4284\\-197.7084\\-81\\-129.3876\\-199.6615\\-81\\-129.1825\\-200.131\\-81\\-127.2293\\-200.9004\\-81\\-125.2762\\-201.1527\\-81\\-123.9408\\-203.5678\\-81\\-123.9067\\-205.5209\\-81\\-124.2997\\-207.474\\-81\\-124.5015\\-209.4271\\-81\\-125.2762\\-210.375\\-81"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "100"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-62.77623\\-201.5572\\-81\\-60.8231\\-201.2977\\-81\\-59.75113\\-199.6615\\-81\\-60.8231\\-198.4735\\-81\\-66.68247\\-194.9925\\-81\\-68.6356\\-194.2346\\-81\\-69.42997\\-195.7553\\-81\\-70.58872\\-196.757\\-81\\-72.54185\\-196.2496\\-81\\-73.03623\\-195.7553\\-81\\-74.31528\\-193.8021\\-81\\-72.1246\\-191.849\\-81\\-71.94786\\-189.8959\\-81\\-71.45998\\-187.9428\\-81\\-71.25248\\-185.9896\\-81\\-72.10472\\-184.0365\\-81\\-74.70424\\-180.1303\\-81\\-73.45385\\-178.1771\\-81\\-72.43947\\-176.224\\-81\\-71.53477\\-174.2709\\-81\\-70.58872\\-173.1328\\-81\\-68.6356\\-171.9412\\-81\\-66.68247\\-171.8859\\-81\\-64.72935\\-170.844\\-81\\-64.28245\\-170.3646\\-81\\-64.72935\\-169.9825\\-81\\-65.70591\\-168.4115\\-81\\-64.72935\\-167.7991\\-81\\-62.77623\\-168.2499\\-81\\-62.61464\\-168.4115\\-81\\-62.21378\\-170.3646\\-81\\-62.77623\\-171.1242\\-81\\-64.01205\\-172.3178\\-81\\-62.77623\\-173.3012\\-81\\-60.8231\\-175.3719\\-81\\-60.12989\\-176.224\\-81\\-59.72098\\-178.1771\\-81\\-58.04842\\-180.1303\\-81\\-56.52746\\-182.0834\\-81\\-56.07909\\-184.0365\\-81\\-55.98298\\-185.9896\\-81\\-54.96373\\-187.8005\\-81\\-53.19321\\-189.8959\\-81\\-52.26085\\-191.849\\-81\\-50.98827\\-193.8021\\-81\\-49.84701\\-195.7553\\-81\\-48.92997\\-199.6615\\-81\\-48.70699\\-201.6146\\-81\\-49.10435\\-202.174\\-81\\-51.05748\\-202.9323\\-81\\-53.0106\\-202.8313\\-81\\-54.96373\\-202.1608\\-81\\-56.91685\\-201.0769\\-81\\-58.86998\\-202.0731\\-81\\-60.8231\\-202.0348\\-81"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "101"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-43.24498\\-176.2316\\-81\\-45.1981\\-175.0004\\-81\\-45.94076\\-174.2709\\-81\\-46.75936\\-172.3178\\-81\\-48.01753\\-170.3646\\-81\\-48.54882\\-168.4115\\-81\\-48.72492\\-166.4584\\-81\\-49.48592\\-164.5053\\-81\\-51.05748\\-163.4066\\-81\\-53.0106\\-163.5333\\-81\\-54.39732\\-162.5521\\-81\\-53.98716\\-160.599\\-81\\-53.0106\\-159.6274\\-81\\-51.05748\\-159.1512\\-81\\-49.55896\\-158.6459\\-81\\-47.15123\\-157.5346\\-81\\-45.1981\\-155.7849\\-81\\-43.24498\\-153.8864\\-81\\-41.29185\\-153.1832\\-81\\-37.3856\\-153.057\\-81\\-35.43248\\-152.6249\\-81\\-33.47935\\-152.7638\\-81\\-31.52623\\-153.7027\\-81\\-29.5731\\-155.3201\\-81\\-27.61998\\-157.4725\\-81\\-25.62035\\-158.6459\\-81\\-23.71373\\-159.3095\\-81\\-21.7606\\-160.1295\\-81\\-21.31671\\-160.599\\-81\\-21.7606\\-161.253\\-81\\-23.71373\\-162.1868\\-81\\-25.66685\\-162.1868\\-81\\-27.86587\\-164.5053\\-81\\-28.43645\\-166.4584\\-81\\-29.18616\\-170.3646\\-81\\-30.32123\\-172.3178\\-81\\-31.1419\\-174.2709\\-81\\-33.00609\\-176.224\\-81\\-33.47935\\-176.6109\\-81\\-35.43248\\-177.3291\\-81\\-37.3856\\-177.8118\\-81\\-41.29185\\-176.8163\\-81"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "102"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "34.88002\\-202.0114\\-81\\34.12435\\-201.6146\\-81\\34.19485\\-199.6615\\-81\\35.43225\\-197.7084\\-81\\36.04395\\-195.7553\\-81\\36.83315\\-194.8681\\-81\\38.78627\\-193.75\\-81\\40.7394\\-193.7214\\-81\\41.58379\\-195.7553\\-81\\41.54834\\-197.7084\\-81\\40.7394\\-198.8145\\-81\\38.78627\\-199.6122\\-81\\36.83315\\-200.5883\\-81"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "103"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-204.0421\\-81\\46.25997\\-203.5678\\-81\\46.66327\\-199.6615\\-81\\48.5519\\-194.2567\\-81\\50.84096\\-189.8959\\-81\\51.96987\\-185.9896\\-81\\53.19732\\-184.0365\\-81\\54.90598\\-182.0834\\-81\\55.1587\\-180.1303\\-81\\54.80864\\-178.1771\\-81\\55.37571\\-176.224\\-81\\56.3644\\-174.5659\\-81\\58.31752\\-172.6827\\-81\\60.27065\\-171.2191\\-81\\62.22377\\-170.6389\\-81\\64.1769\\-170.995\\-81\\66.13003\\-171.6546\\-81\\66.9379\\-172.3178\\-81\\68.90415\\-174.2709\\-81\\70.30865\\-176.224\\-81\\69.74331\\-180.1303\\-81\\69.75445\\-182.0834\\-81\\69.99813\\-184.0365\\-81\\68.60355\\-187.9428\\-81\\68.46408\\-189.8959\\-81\\66.99706\\-191.849\\-81\\66.13003\\-192.7001\\-81\\65.24026\\-193.8021\\-81\\64.1769\\-195.4334\\-81\\63.77802\\-195.7553\\-81\\62.22377\\-196.4672\\-81\\58.31752\\-197.9078\\-81\\56.3644\\-198.8767\\-81\\54.41127\\-200.6451\\-81\\52.45815\\-202.141\\-81\\49.87207\\-203.5678\\-81\\48.5519\\-204.0368\\-81"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "60"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "104"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-210.1278\\-79\\-129.1825\\-208.3059\\-79\\-131.1356\\-207.1275\\-79\\-133.0887\\-206.1664\\-79\\-133.7063\\-205.5209\\-79\\-135.3237\\-201.6146\\-79\\-135.3779\\-199.6615\\-79\\-136.3014\\-195.7553\\-79\\-136.3086\\-193.8021\\-79\\-135.7573\\-191.849\\-79\\-135.0419\\-191.1057\\-79\\-133.0887\\-190.6644\\-79\\-131.1356\\-191.1408\\-79\\-130.2142\\-189.8959\\-79\\-129.1825\\-188.205\\-79\\-127.2293\\-185.7305\\-79\\-125.2762\\-184.9163\\-79\\-123.3231\\-183.0816\\-79\\-121.37\\-181.5105\\-79\\-119.4168\\-181.0426\\-79\\-117.4637\\-180.0073\\-79\\-115.5106\\-179.6673\\-79\\-113.9264\\-180.1303\\-79\\-113.5575\\-180.5559\\-79\\-113.1681\\-182.0834\\-79\\-114.2067\\-184.0365\\-79\\-114.75\\-185.9896\\-79\\-115.0759\\-187.9428\\-79\\-115.2288\\-191.849\\-79\\-114.3356\\-193.8021\\-79\\-112.4582\\-195.7553\\-79\\-111.0086\\-197.7084\\-79\\-110.7374\\-199.6615\\-79\\-110.694\\-201.6146\\-79\\-111.6043\\-202.1985\\-79\\-113.3947\\-201.6146\\-79\\-115.5106\\-200.6686\\-79\\-116.8423\\-199.6615\\-79\\-117.4637\\-198.9243\\-79\\-118.1131\\-197.7084\\-79\\-118.7678\\-195.7553\\-79\\-119.4168\\-195.0228\\-79\\-121.37\\-194.4018\\-79\\-123.3231\\-195.3082\\-79\\-124.6515\\-193.8021\\-79\\-125.2762\\-192.7321\\-79\\-127.2293\\-192.6432\\-79\\-128.9023\\-193.8021\\-79\\-130.7986\\-195.7553\\-79\\-131.1356\\-196.6208\\-79\\-132.0376\\-199.6615\\-79\\-131.7443\\-201.6146\\-79\\-131.1356\\-202.3199\\-79\\-129.1825\\-203.2748\\-79\\-127.2293\\-202.8803\\-79\\-126.288\\-203.5678\\-79\\-124.9623\\-205.5209\\-79\\-125.371\\-207.474\\-79\\-124.9944\\-209.4271\\-79\\-125.2762\\-209.8089\\-79"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "105"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-51.05748\\-203.9958\\-79\\-53.0106\\-202.8427\\-79\\-54.96373\\-202.2775\\-79\\-56.91685\\-201.4152\\-79\\-58.86998\\-202.2605\\-79\\-60.8231\\-202.6199\\-79\\-61.88458\\-201.6146\\-79\\-60.8231\\-199.6532\\-79\\-63.33072\\-197.7084\\-79\\-64.72935\\-196.8577\\-79\\-66.68247\\-195.8907\\-79\\-68.6356\\-194.7728\\-79\\-70.58872\\-195.2975\\-79\\-72.25797\\-193.8021\\-79\\-71.48299\\-191.849\\-79\\-72.25462\\-189.8959\\-79\\-73.41774\\-187.9428\\-79\\-73.21502\\-185.9896\\-79\\-73.94266\\-184.0365\\-79\\-75.04393\\-182.0834\\-79\\-75.19252\\-180.1303\\-79\\-74.79708\\-178.1771\\-79\\-73.58245\\-176.224\\-79\\-72.63659\\-174.2709\\-79\\-71.50681\\-172.3178\\-79\\-70.58872\\-171.3713\\-79\\-68.6356\\-170.3569\\-79\\-66.68247\\-169.9184\\-79\\-64.72935\\-168.59\\-79\\-62.77623\\-168.164\\-79\\-62.52874\\-168.4115\\-79\\-61.99596\\-170.3646\\-79\\-62.62762\\-172.3178\\-79\\-61.58008\\-174.2709\\-79\\-60.8231\\-174.9587\\-79\\-59.81733\\-176.224\\-79\\-59.44282\\-178.1771\\-79\\-57.78831\\-180.1303\\-79\\-55.94937\\-182.0834\\-79\\-54.78934\\-184.0365\\-79\\-54.02016\\-185.9896\\-79\\-52.42334\\-187.9428\\-79\\-51.57035\\-189.8959\\-79\\-50.3869\\-191.849\\-79\\-49.10435\\-194.502\\-79\\-48.64862\\-195.7553\\-79\\-48.29313\\-197.7084\\-79\\-47.83186\\-199.6615\\-79\\-46.88069\\-201.6146\\-79\\-46.72475\\-203.5678\\-79\\-47.15123\\-204.0525\\-79\\-49.10435\\-204.348\\-79"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "106"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-178.4246\\-79\\-39.33873\\-178.0957\\-79\\-41.29185\\-177.2997\\-79\\-43.24498\\-176.8013\\-79\\-45.1981\\-175.4757\\-79\\-46.37101\\-174.2709\\-79\\-47.45721\\-172.3178\\-79\\-48.35908\\-170.3646\\-79\\-48.89265\\-168.4115\\-79\\-49.02358\\-166.4584\\-79\\-50.00079\\-164.5053\\-79\\-51.05748\\-163.4952\\-79\\-53.0106\\-163.4462\\-79\\-54.96373\\-162.7444\\-79\\-55.13811\\-162.5521\\-79\\-54.72471\\-160.599\\-79\\-53.0106\\-159.2596\\-79\\-51.05748\\-159.1167\\-79\\-50.34485\\-158.6459\\-79\\-45.1981\\-155.5607\\-79\\-43.24498\\-153.8311\\-79\\-41.29185\\-153.0456\\-79\\-37.3856\\-152.1489\\-79\\-35.43248\\-151.7496\\-79\\-33.47935\\-151.7227\\-79\\-31.52623\\-152.2602\\-79\\-29.5731\\-153.5517\\-79\\-26.41407\\-156.6928\\-79\\-25.66685\\-157.3332\\-79\\-23.50575\\-158.6459\\-79\\-21.7606\\-159.5564\\-79\\-20.7796\\-160.599\\-79\\-21.7606\\-161.7409\\-79\\-23.71373\\-161.571\\-79\\-25.66685\\-161.9719\\-79\\-26.23371\\-162.5521\\-79\\-27.03946\\-164.5053\\-79\\-27.59727\\-166.4584\\-79\\-27.92729\\-168.4115\\-79\\-28.4131\\-170.3646\\-79\\-29.22433\\-172.3178\\-79\\-30.37311\\-174.2709\\-79\\-32.30362\\-176.224\\-79\\-33.47935\\-177.1312\\-79\\-35.43248\\-178.1393\\-79"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "107"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "36.83315\\-200.1202\\-79\\36.52736\\-199.6615\\-79\\37.28888\\-197.7084\\-79\\37.48234\\-195.7553\\-79\\38.78627\\-194.1726\\-79\\40.7394\\-193.6801\\-79\\42.27658\\-195.7553\\-79\\42.32553\\-197.7084\\-79\\41.12875\\-199.6615\\-79\\40.7394\\-200.0385\\-79\\38.78627\\-200.3446\\-79"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "108"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "44.64565\\-206.2478\\-79\\44.07695\\-205.5209\\-79\\44.08056\\-203.5678\\-79\\45.00275\\-201.6146\\-79\\45.74487\\-199.6615\\-79\\46.06864\\-197.7084\\-79\\47.3462\\-195.7553\\-79\\47.94485\\-193.8021\\-79\\49.15864\\-191.849\\-79\\49.95091\\-189.8959\\-79\\50.51271\\-187.9428\\-79\\51.52553\\-185.9896\\-79\\52.89284\\-184.0365\\-79\\53.76894\\-182.0834\\-79\\54.50602\\-180.1303\\-79\\54.33051\\-178.1771\\-79\\54.8511\\-174.2709\\-79\\55.79193\\-172.3178\\-79\\56.3644\\-171.7569\\-79\\58.41306\\-170.3646\\-79\\60.27065\\-169.3936\\-79\\62.22377\\-169.3076\\-79\\64.1769\\-169.6403\\-79\\66.13003\\-170.1529\\-79\\68.08315\\-171.379\\-79\\70.03628\\-173.2674\\-79\\70.90758\\-174.2709\\-79\\71.37539\\-176.224\\-79\\70.65973\\-180.1303\\-79\\70.66685\\-182.0834\\-79\\71.28091\\-184.0365\\-79\\71.18975\\-185.9896\\-79\\70.45876\\-187.9428\\-79\\70.42017\\-189.8959\\-79\\70.72195\\-191.849\\-79\\70.03628\\-193.0885\\-79\\68.08315\\-192.8511\\-79\\65.07786\\-195.7553\\-79\\64.1769\\-196.4826\\-79\\62.22377\\-197.4208\\-79\\60.27065\\-198.1431\\-79\\58.31752\\-198.7206\\-79\\56.3644\\-200.2893\\-79\\54.41127\\-202.1366\\-79\\52.45815\\-202.9741\\-79\\50.50502\\-204.3039\\-79\\48.5519\\-205.0116\\-79\\46.59877\\-206.2034\\-79"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "109"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-208.5668\\-77\\-128.2271\\-207.474\\-77\\-129.1825\\-206.2184\\-77\\-131.1356\\-206.6456\\-77\\-133.0887\\-206.281\\-77\\-133.8224\\-205.5209\\-77\\-135.2034\\-203.5678\\-77\\-135.9283\\-201.6146\\-77\\-136.2015\\-199.6615\\-77\\-136.5517\\-195.7553\\-77\\-136.6341\\-193.8021\\-77\\-136.1186\\-191.849\\-77\\-135.0419\\-190.7381\\-77\\-133.0887\\-190.7433\\-77\\-132.0353\\-191.849\\-77\\-133.5369\\-193.8021\\-77\\-133.5016\\-195.7553\\-77\\-133.6109\\-197.7084\\-77\\-133.9916\\-199.6615\\-77\\-133.0887\\-201.4559\\-77\\-131.6354\\-203.5678\\-77\\-131.1356\\-204.1497\\-77\\-129.1825\\-205.2692\\-77\\-127.2293\\-204.7572\\-77\\-126.764\\-205.5209\\-77\\-126.8708\\-207.474\\-77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "32"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "110"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-117.4637\\-198.8086\\-77\\-119.3181\\-197.7084\\-77\\-121.37\\-195.8224\\-77\\-123.3231\\-196.4303\\-77\\-124.0027\\-195.7553\\-77\\-124.5931\\-193.8021\\-77\\-123.3805\\-191.849\\-77\\-125.2762\\-190.2377\\-77\\-129.1825\\-192.1664\\-77\\-129.6708\\-191.849\\-77\\-130.9848\\-189.8959\\-77\\-129.8644\\-187.9428\\-77\\-127.2293\\-185.2153\\-77\\-125.2762\\-183.7416\\-77\\-123.3231\\-182.7904\\-77\\-121.37\\-181.0335\\-77\\-119.4168\\-179.8222\\-77\\-117.4637\\-179.085\\-77\\-115.5106\\-178.5846\\-77\\-113.5575\\-178.6262\\-77\\-111.6043\\-179.3191\\-77\\-110.9637\\-180.1303\\-77\\-113.0408\\-184.0365\\-77\\-114.2384\\-185.9896\\-77\\-114.5714\\-187.9428\\-77\\-114.7658\\-189.8959\\-77\\-115.1111\\-191.849\\-77\\-114.2106\\-193.8021\\-77\\-113.1712\\-195.7553\\-77\\-113.5575\\-196.3178\\-77\\-115.5106\\-196.9991\\-77\\-116.0768\\-197.7084\\-77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "111"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-47.15123\\-205.7356\\-77\\-51.05748\\-204.3519\\-77\\-53.0106\\-202.5313\\-77\\-56.91685\\-200.9793\\-77\\-58.86998\\-200.8426\\-77\\-60.8231\\-200.9506\\-77\\-61.05005\\-199.6615\\-77\\-62.77623\\-198.2025\\-77\\-66.68247\\-196.5188\\-77\\-68.6356\\-195.5642\\-77\\-70.58872\\-194.711\\-77\\-71.51359\\-193.8021\\-77\\-73.09895\\-191.849\\-77\\-75.00531\\-189.8959\\-77\\-75.77381\\-187.9428\\-77\\-75.79456\\-185.9896\\-77\\-75.94746\\-182.0834\\-77\\-75.94746\\-180.1303\\-77\\-75.50069\\-178.1771\\-77\\-74.69441\\-176.224\\-77\\-73.29428\\-174.2709\\-77\\-72.2207\\-172.3178\\-77\\-70.58872\\-170.2561\\-77\\-68.6356\\-169.2667\\-77\\-66.68247\\-168.7485\\-77\\-64.72935\\-168.5077\\-77\\-62.77623\\-169.7219\\-77\\-62.3205\\-170.3646\\-77\\-62.46141\\-172.3178\\-77\\-61.86571\\-174.2709\\-77\\-60.26101\\-176.224\\-77\\-59.23932\\-178.1771\\-77\\-57.68977\\-180.1303\\-77\\-54.00111\\-184.0365\\-77\\-53.22379\\-185.9896\\-77\\-51.9593\\-187.9428\\-77\\-51.05748\\-189.864\\-77\\-49.99645\\-191.849\\-77\\-48.56809\\-193.8021\\-77\\-47.86094\\-195.7553\\-77\\-46.81294\\-197.7084\\-77\\-46.42155\\-199.6615\\-77\\-45.1981\\-203.6073\\-77\\-46.80721\\-205.5209\\-77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "112"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-178.4477\\-77\\-41.29185\\-178.1543\\-77\\-43.24498\\-177.0851\\-77\\-45.1981\\-176.2616\\-77\\-47.15123\\-173.7783\\-77\\-48.04818\\-172.3178\\-77\\-48.75558\\-170.3646\\-77\\-48.91735\\-168.4115\\-77\\-49.49622\\-166.4584\\-77\\-50.31509\\-164.5053\\-77\\-51.05748\\-163.5221\\-77\\-53.0106\\-162.2798\\-77\\-54.96373\\-163.4174\\-77\\-55.79869\\-162.5521\\-77\\-55.48568\\-160.599\\-77\\-54.96373\\-160.0384\\-77\\-53.0106\\-159.0644\\-77\\-51.05748\\-159.0328\\-77\\-49.10435\\-157.7348\\-77\\-47.15123\\-155.8996\\-77\\-45.25969\\-154.7396\\-77\\-41.29185\\-152.1374\\-77\\-39.33873\\-151.5475\\-77\\-37.3856\\-150.4254\\-77\\-35.43248\\-150.3071\\-77\\-33.47935\\-150.2979\\-77\\-31.52623\\-150.4016\\-77\\-29.5731\\-151.5603\\-77\\-25.66685\\-155.4519\\-77\\-24.66661\\-156.6928\\-77\\-23.71373\\-157.6286\\-77\\-21.7606\\-159.1376\\-77\\-20.56261\\-160.599\\-77\\-21.7606\\-161.5399\\-77\\-23.71373\\-161.2309\\-77\\-25.55754\\-162.5521\\-77\\-26.44915\\-164.5053\\-77\\-27.02109\\-166.4584\\-77\\-27.65783\\-170.3646\\-77\\-29.5731\\-174.1413\\-77\\-31.33808\\-176.224\\-77\\-33.47935\\-177.2595\\-77\\-35.43248\\-178.459\\-77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "60"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "113"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "44.64565\\-208.097\\-77\\43.35519\\-207.474\\-77\\42.69252\\-206.8818\\-77\\42.01205\\-205.5209\\-77\\42.08616\\-203.5678\\-77\\43.51398\\-201.6146\\-77\\43.88173\\-199.6615\\-77\\42.69252\\-198.4626\\-77\\40.7394\\-200.1639\\-77\\40.03904\\-199.6615\\-77\\39.32449\\-197.7084\\-77\\39.46862\\-195.7553\\-77\\40.7394\\-194.5891\\-77\\42.39142\\-195.7553\\-77\\43.58458\\-197.7084\\-77\\44.64565\\-198.7594\\-77\\45.33535\\-197.7084\\-77\\46.29073\\-195.7553\\-77\\47.55489\\-193.8021\\-77\\48.29281\\-191.849\\-77\\49.54891\\-189.8959\\-77\\50.25754\\-187.9428\\-77\\51.40537\\-185.9896\\-77\\52.96642\\-184.0365\\-77\\53.7383\\-182.0834\\-77\\54.2892\\-180.1303\\-77\\54.49204\\-176.224\\-77\\54.4189\\-174.2709\\-77\\55.36158\\-172.3178\\-77\\56.3644\\-171.3661\\-77\\58.31752\\-169.8504\\-77\\60.27065\\-168.6839\\-77\\62.22377\\-167.8896\\-77\\64.1769\\-167.9407\\-77\\66.13003\\-169.1019\\-77\\68.08315\\-169.8008\\-77\\68.76958\\-170.3646\\-77\\70.65273\\-172.3178\\-77\\71.59502\\-174.2709\\-77\\71.82781\\-176.224\\-77\\71.54315\\-180.1303\\-77\\71.93243\\-182.0834\\-77\\73.31968\\-184.0365\\-77\\73.1822\\-185.9896\\-77\\72.43271\\-187.9428\\-77\\71.94802\\-189.8959\\-77\\71.59248\\-191.849\\-77\\70.03628\\-193.7634\\-77\\68.08315\\-194.3646\\-77\\65.80138\\-195.7553\\-77\\64.1769\\-196.5834\\-77\\62.22377\\-197.7459\\-77\\60.27065\\-198.4716\\-77\\58.31752\\-199.8485\\-77\\56.3644\\-200.6561\\-77\\54.41127\\-202.2841\\-77\\52.45815\\-202.8207\\-77\\50.50502\\-204.4176\\-77\\48.5519\\-205.88\\-77\\46.59877\\-206.7899\\-77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "114"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-133.0887\\-206.281\\-75\\-135.7113\\-203.5678\\-75\\-136.4182\\-201.6146\\-75\\-136.1452\\-199.6615\\-75\\-136.4872\\-197.7084\\-75\\-136.5141\\-195.7553\\-75\\-137.2541\\-193.8021\\-75\\-137.4918\\-191.849\\-75\\-136.995\\-191.2197\\-75\\-135.0419\\-189.5704\\-75\\-133.0887\\-189.7738\\-75\\-131.1356\\-189.5288\\-75\\-130.0004\\-187.9428\\-75\\-128.1431\\-185.9896\\-75\\-125.2762\\-183.1492\\-75\\-123.3231\\-181.3216\\-75\\-121.37\\-179.9433\\-75\\-119.4168\\-179.0627\\-75\\-117.4637\\-177.9163\\-75\\-115.5106\\-177.4091\\-75\\-113.5575\\-177.3659\\-75\\-111.6043\\-177.4365\\-75\\-110.0349\\-178.1771\\-75\\-109.6512\\-178.7425\\-75\\-109.1776\\-180.1303\\-75\\-110.5958\\-182.0834\\-75\\-112.4655\\-184.0365\\-75\\-113.3705\\-185.9896\\-75\\-113.6395\\-187.9428\\-75\\-114.2352\\-189.8959\\-75\\-114.4514\\-191.849\\-75\\-113.4627\\-193.8021\\-75\\-113.5575\\-193.967\\-75\\-115.5106\\-193.8835\\-75\\-116.2885\\-191.849\\-75\\-117.4637\\-190.8037\\-75\\-119.4168\\-189.6602\\-75\\-125.2762\\-189.6602\\-75\\-127.2293\\-191.0068\\-75\\-129.1825\\-191.6496\\-75\\-131.1356\\-190.4295\\-75\\-132.447\\-191.849\\-75\\-133.0887\\-192.3202\\-75\\-134.1326\\-193.8021\\-75\\-134.1519\\-197.7084\\-75\\-134.5361\\-199.6615\\-75\\-133.7966\\-201.6146\\-75\\-131.9486\\-203.5678\\-75\\-131.1356\\-204.8881\\-75\\-130.5938\\-205.5209\\-75\\-131.1356\\-206.0819\\-75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "115"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-119.4168\\-198.4368\\-75\\-121.37\\-196.9922\\-75\\-122.7679\\-195.7553\\-75\\-123.8397\\-193.8021\\-75\\-123.3231\\-193.3036\\-75\\-121.37\\-194.1731\\-75\\-119.4168\\-194.8215\\-75\\-118.5807\\-195.7553\\-75\\-118.5013\\-197.7084\\-75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "116"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-208.8291\\-75\\-114.8337\\-207.474\\-75\\-113.5575\\-206.1414\\-75\\-111.6043\\-204.7806\\-75\\-109.6512\\-203.0729\\-75\\-109.1496\\-203.5678\\-75\\-109.6512\\-205.4458\\-75\\-110.7531\\-207.474\\-75\\-111.6043\\-208.3344\\-75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "117"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-205.857\\-75\\-51.05748\\-204.4188\\-75\\-53.0106\\-202.4576\\-75\\-54.96373\\-201.3789\\-75\\-56.91685\\-200.5598\\-75\\-58.86998\\-199.8652\\-75\\-60.8231\\-198.69\\-75\\-62.77623\\-197.2618\\-75\\-66.68247\\-196.6046\\-75\\-68.6356\\-196.0592\\-75\\-70.58872\\-194.696\\-75\\-73.88613\\-191.849\\-75\\-75.57207\\-189.8959\\-75\\-76.36733\\-187.9428\\-75\\-76.39592\\-184.0365\\-75\\-76.51469\\-182.0834\\-75\\-76.38152\\-180.1303\\-75\\-76.10759\\-178.1771\\-75\\-75.31549\\-176.224\\-75\\-73.44608\\-174.2709\\-75\\-72.54185\\-172.3929\\-75\\-71.35563\\-170.3646\\-75\\-70.58872\\-169.5\\-75\\-68.6356\\-167.8342\\-75\\-66.68247\\-167.9147\\-75\\-64.72935\\-168.5217\\-75\\-63.18773\\-170.3646\\-75\\-63.16809\\-172.3178\\-75\\-61.98853\\-174.2709\\-75\\-60.8231\\-175.7683\\-75\\-58.24606\\-178.1771\\-75\\-57.58635\\-180.1303\\-75\\-55.84002\\-182.0834\\-75\\-53.91997\\-184.0365\\-75\\-53.11911\\-185.9896\\-75\\-51.94481\\-187.9428\\-75\\-51.05748\\-189.8224\\-75\\-49.99069\\-191.849\\-75\\-48.14371\\-193.8021\\-75\\-46.66006\\-195.7553\\-75\\-45.93727\\-197.7084\\-75\\-44.77273\\-199.6615\\-75\\-44.4538\\-201.6146\\-75\\-44.32273\\-203.5678\\-75\\-44.44733\\-205.5209\\-75\\-45.1981\\-206.4044\\-75\\-47.15123\\-206.5244\\-75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "118"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-178.459\\-75\\-43.24498\\-177.1534\\-75\\-45.1981\\-176.517\\-75\\-47.42176\\-174.2709\\-75\\-48.33207\\-172.3178\\-75\\-48.90491\\-170.3646\\-75\\-49.02358\\-168.4115\\-75\\-50.0202\\-166.4584\\-75\\-50.80999\\-164.5053\\-75\\-51.23127\\-162.5521\\-75\\-53.0106\\-161.5846\\-75\\-54.96373\\-163.1827\\-75\\-55.78114\\-162.5521\\-75\\-55.94494\\-160.599\\-75\\-54.96373\\-159.3349\\-75\\-53.0106\\-158.2247\\-75\\-51.05748\\-158.3054\\-75\\-49.10435\\-157.3493\\-75\\-45.1981\\-153.4683\\-75\\-43.24498\\-151.5841\\-75\\-41.29185\\-150.3549\\-75\\-39.33873\\-149.634\\-75\\-37.3856\\-148.4211\\-75\\-31.52623\\-148.3984\\-75\\-29.5731\\-149.356\\-75\\-27.61998\\-151.2834\\-75\\-25.66685\\-153.3997\\-75\\-23.17185\\-156.6928\\-75\\-21.7606\\-157.9173\\-75\\-20.64113\\-158.6459\\-75\\-20.9038\\-160.599\\-75\\-21.7606\\-161.124\\-75\\-23.71373\\-161.412\\-75\\-25.01754\\-162.5521\\-75\\-25.54478\\-164.5053\\-75\\-26.42171\\-166.4584\\-75\\-27.01365\\-168.4115\\-75\\-27.36089\\-170.3646\\-75\\-29.09063\\-174.2709\\-75\\-30.78185\\-176.224\\-75\\-31.52623\\-176.8089\\-75\\-33.47935\\-177.4589\\-75\\-35.43248\\-178.459\\-75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "119"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-212.6675\\-75\\-38.97663\\-211.3803\\-75\\-38.77942\\-209.4271\\-75\\-40.71965\\-207.474\\-75\\-39.99188\\-205.5209\\-75\\-39.33873\\-204.9461\\-75\\-37.3856\\-206.485\\-75\\-35.76817\\-207.474\\-75\\-35.43248\\-207.8872\\-75\\-34.73412\\-209.4271\\-75\\-35.43248\\-210.7768\\-75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "120"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "40.7394\\-210.2787\\-75\\39.44636\\-209.4271\\-75\\39.17891\\-207.474\\-75\\40.13042\\-205.5209\\-75\\40.04552\\-203.5678\\-75\\41.91685\\-201.6146\\-75\\41.77662\\-199.6615\\-75\\40.50755\\-197.7084\\-75\\40.7394\\-197.3105\\-75\\42.69252\\-195.9748\\-75\\44.64565\\-196.6708\\-75\\45.67855\\-195.7553\\-75\\47.21819\\-193.8021\\-75\\47.93761\\-191.849\\-75\\49.44199\\-189.8959\\-75\\50.25754\\-187.9428\\-75\\50.50502\\-187.6201\\-75\\52.52473\\-184.0365\\-75\\54.34469\\-180.1303\\-75\\54.88212\\-178.1771\\-75\\55.18678\\-176.224\\-75\\55.18501\\-174.2709\\-75\\55.9753\\-172.3178\\-75\\56.3644\\-171.9719\\-75\\58.31752\\-171.2158\\-75\\60.91588\\-168.4115\\-75\\62.22377\\-167.2961\\-75\\64.1769\\-166.9086\\-75\\66.13003\\-167.4933\\-75\\68.08315\\-168.2121\\-75\\70.03628\\-170.4572\\-75\\71.14304\\-172.3178\\-75\\72.1764\\-174.2709\\-75\\72.61331\\-176.224\\-75\\72.73133\\-180.1303\\-75\\74.74574\\-182.0834\\-75\\75.35311\\-184.0365\\-75\\74.87685\\-185.9896\\-75\\74.0646\\-187.9428\\-75\\73.04388\\-189.8959\\-75\\72.15099\\-191.849\\-75\\70.03628\\-193.7214\\-75\\68.08315\\-194.6264\\-75\\66.13003\\-195.7629\\-75\\64.1769\\-196.5529\\-75\\62.10826\\-197.7084\\-75\\60.27065\\-198.5107\\-75\\58.31752\\-200.0775\\-75\\56.3644\\-200.7502\\-75\\52.45815\\-202.5106\\-75\\48.5519\\-206.3289\\-75\\46.59877\\-208.1492\\-75\\44.64565\\-209.3419\\-75\\42.69252\\-209.969\\-75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "121"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-133.0887\\-206.315\\-73\\-135.8035\\-203.5678\\-73\\-136.5796\\-201.6146\\-73\\-136.2788\\-199.6615\\-73\\-136.1555\\-197.7084\\-73\\-135.9191\\-195.7553\\-73\\-136.995\\-195.1449\\-73\\-137.7261\\-193.8021\\-73\\-138.2989\\-191.849\\-73\\-136.995\\-189.9205\\-73\\-135.0419\\-189.0748\\-73\\-133.47\\-189.8959\\-73\\-134.6401\\-193.8021\\-73\\-134.6991\\-195.7553\\-73\\-134.6401\\-197.7084\\-73\\-134.685\\-199.6615\\-73\\-134.0835\\-201.6146\\-73\\-132.3589\\-203.5678\\-73\\-131.3221\\-205.5209\\-73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "122"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-121.37\\-206.4117\\-73\\-122.2831\\-205.5209\\-73\\-122.5685\\-203.5678\\-73\\-121.37\\-201.8966\\-73\\-119.4168\\-201.8141\\-73\\-117.4637\\-203.5045\\-73\\-118.4046\\-205.5209\\-73\\-119.4168\\-206.4975\\-73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "123"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-208.5717\\-73\\-114.3147\\-207.474\\-73\\-112.2386\\-205.5209\\-73\\-109.6512\\-202.6777\\-73\\-108.7274\\-203.5678\\-73\\-109.1893\\-205.5209\\-73\\-110.6229\\-207.474\\-73\\-111.6043\\-208.4313\\-73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "29"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "124"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-193.957\\-73\\-115.5106\\-193.2341\\-73\\-116.2483\\-191.849\\-73\\-117.4637\\-190.7419\\-73\\-119.4168\\-189.6484\\-73\\-121.37\\-189.6484\\-73\\-125.2762\\-189.5289\\-73\\-127.2293\\-190.9589\\-73\\-129.1825\\-191.5279\\-73\\-130.5259\\-189.8959\\-73\\-130.015\\-187.9428\\-73\\-128.5678\\-185.9896\\-73\\-124.6165\\-182.0834\\-73\\-121.37\\-179.2264\\-73\\-119.4168\\-177.8915\\-73\\-117.4637\\-177.0816\\-73\\-115.5106\\-176.0357\\-73\\-113.5575\\-175.5675\\-73\\-111.6043\\-175.5675\\-73\\-109.6512\\-175.892\\-73\\-109.2181\\-176.224\\-73\\-107.5627\\-178.1771\\-73\\-108.3004\\-180.1303\\-73\\-109.6512\\-181.9643\\-73\\-111.7671\\-184.0365\\-73\\-112.8151\\-185.9896\\-73\\-113.1607\\-187.9428\\-73\\-113.5053\\-191.849\\-73\\-113.4627\\-193.8021\\-73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "125"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-45.1981\\-208.1927\\-73\\-47.15123\\-206.6477\\-73\\-49.10435\\-206.1272\\-73\\-51.05748\\-204.3919\\-73\\-53.0106\\-202.43\\-73\\-54.96373\\-200.9085\\-73\\-56.91685\\-200.2612\\-73\\-58.86998\\-198.961\\-73\\-60.8231\\-198.3403\\-73\\-62.77623\\-196.6874\\-73\\-64.72935\\-196.0352\\-73\\-66.68247\\-196.4542\\-73\\-68.6356\\-196.2772\\-73\\-70.58872\\-194.9567\\-73\\-72.54185\\-193.9765\\-73\\-74.49497\\-192.5546\\-73\\-75.19653\\-191.849\\-73\\-76.4481\\-189.3857\\-73\\-76.99432\\-187.9428\\-73\\-76.97005\\-184.0365\\-73\\-77.19821\\-182.0834\\-73\\-76.99432\\-180.1303\\-73\\-76.4481\\-178.3061\\-73\\-75.57109\\-176.224\\-73\\-73.91025\\-174.2709\\-73\\-72.95779\\-172.3178\\-73\\-71.49218\\-170.3646\\-73\\-70.35177\\-168.4115\\-73\\-68.6356\\-166.8019\\-73\\-66.68247\\-167.5251\\-73\\-65.40209\\-168.4115\\-73\\-64.72935\\-169.0602\\-73\\-63.84714\\-170.3646\\-73\\-63.66721\\-172.3178\\-73\\-60.02756\\-176.224\\-73\\-59.35244\\-178.1771\\-73\\-57.75454\\-180.1303\\-73\\-55.8448\\-182.0834\\-73\\-54.12996\\-184.0365\\-73\\-53.52428\\-185.9896\\-73\\-51.97979\\-187.9428\\-73\\-51.08018\\-189.8959\\-73\\-49.99069\\-191.849\\-73\\-46.17466\\-195.7553\\-73\\-44.93901\\-197.7084\\-73\\-44.2021\\-199.6615\\-73\\-42.69086\\-201.6146\\-73\\-42.52568\\-203.5678\\-73\\-42.47607\\-205.5209\\-73\\-41.29185\\-207.3941\\-73\\-41.29185\\-207.7182\\-73\\-43.24498\\-209.4158\\-73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "126"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-178.459\\-73\\-43.24498\\-177.1534\\-73\\-45.1981\\-176.4357\\-73\\-47.15123\\-174.8887\\-73\\-47.67925\\-174.2709\\-73\\-48.49067\\-172.3178\\-73\\-48.91735\\-170.3646\\-73\\-49.52549\\-168.4115\\-73\\-50.32877\\-166.4584\\-73\\-50.97671\\-164.5053\\-73\\-51.00529\\-162.5521\\-73\\-53.0106\\-161.1483\\-73\\-54.96373\\-161.7758\\-73\\-56.51209\\-160.599\\-73\\-55.86871\\-158.6459\\-73\\-54.96373\\-157.7313\\-73\\-53.0106\\-157.5801\\-73\\-51.05748\\-157.5989\\-73\\-49.8256\\-156.6928\\-73\\-47.85458\\-154.7396\\-73\\-45.1981\\-151.6358\\-73\\-43.24498\\-149.6111\\-73\\-41.29185\\-148.3336\\-73\\-39.33873\\-147.6403\\-73\\-37.3856\\-146.3819\\-73\\-29.5731\\-146.3786\\-73\\-27.61998\\-147.5417\\-73\\-25.66685\\-149.6718\\-73\\-25.0434\\-150.8334\\-73\\-24.58868\\-152.7865\\-73\\-21.7606\\-156.6257\\-73\\-19.80748\\-157.6793\\-73\\-18.83091\\-158.6459\\-73\\-18.958\\-160.599\\-73\\-19.80748\\-161.2552\\-73\\-21.7606\\-160.9245\\-73\\-23.71373\\-161.774\\-73\\-24.47158\\-162.5521\\-73\\-25.50526\\-166.4584\\-73\\-26.39004\\-168.4115\\-73\\-27.03622\\-170.3646\\-73\\-27.58242\\-172.3178\\-73\\-28.61788\\-174.2709\\-73\\-31.52623\\-177.1702\\-73\\-33.47935\\-178.2579\\-73\\-35.43248\\-178.459\\-73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "127"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-215.6929\\-73\\-39.48958\\-213.3334\\-73\\-39.92275\\-211.3803\\-73\\-39.33873\\-210.9454\\-73\\-37.3856\\-210.1075\\-73\\-36.88252\\-209.4271\\-73\\-37.61021\\-207.474\\-73\\-37.21633\\-205.5209\\-73\\-35.43248\\-204.8167\\-73\\-34.41892\\-205.5209\\-73\\-33.02159\\-207.474\\-73\\-32.69705\\-209.4271\\-73\\-32.70338\\-211.3803\\-73\\-33.47935\\-212.7877\\-73\\-35.43248\\-214.6752\\-73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "128"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "40.7394\\-210.8636\\-73\\38.83886\\-209.4271\\-73\\37.76113\\-207.474\\-73\\38.74813\\-205.5209\\-73\\39.84422\\-203.5678\\-73\\41.64118\\-201.6146\\-73\\41.79734\\-199.6615\\-73\\41.66924\\-197.7084\\-73\\42.69252\\-196.5461\\-73\\44.64565\\-196.2935\\-73\\45.27298\\-195.7553\\-73\\47.6057\\-191.849\\-73\\49.44199\\-189.8959\\-73\\50.31802\\-187.9428\\-73\\51.45243\\-185.9896\\-73\\52.85737\\-184.0365\\-73\\53.66274\\-182.0834\\-73\\54.86426\\-180.1303\\-73\\55.85287\\-178.1771\\-73\\57.25677\\-176.224\\-73\\58.9395\\-174.2709\\-73\\59.77006\\-172.3178\\-73\\60.27065\\-171.5128\\-73\\61.6511\\-168.4115\\-73\\62.22377\\-167.8492\\-73\\64.1769\\-167.0344\\-73\\66.13003\\-166.6223\\-73\\68.08315\\-167.3594\\-73\\69.1746\\-168.4115\\-73\\70.8186\\-170.3646\\-73\\71.62794\\-172.3178\\-73\\72.77173\\-174.2709\\-73\\73.49921\\-176.224\\-73\\74.03726\\-178.1771\\-73\\74.84856\\-180.1303\\-73\\75.54688\\-182.0834\\-73\\75.70865\\-184.0365\\-73\\75.54688\\-185.9896\\-73\\74.97739\\-187.9428\\-73\\74.09113\\-189.8959\\-73\\72.71759\\-191.849\\-73\\71.9894\\-192.5857\\-73\\69.76799\\-193.8021\\-73\\68.08315\\-194.6264\\-73\\66.13003\\-195.7629\\-73\\64.1769\\-196.3466\\-73\\62.22377\\-197.1203\\-73\\60.27065\\-198.3509\\-73\\58.31752\\-198.7817\\-73\\56.3644\\-199.9688\\-73\\54.41127\\-200.8502\\-73\\52.45815\\-202.3851\\-73\\46.59877\\-208.3534\\-73\\44.64565\\-210.2114\\-73\\42.69252\\-211.2375\\-73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "129"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-136.995\\-195.3323\\-71\\-137.9204\\-193.8021\\-71\\-138.4512\\-191.849\\-71\\-137.5271\\-189.8959\\-71\\-136.995\\-189.3822\\-71\\-135.0419\\-188.8947\\-71\\-133.9586\\-189.8959\\-71\\-134.65\\-191.849\\-71\\-135.5115\\-193.8021\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "130"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-131.1356\\-208.3379\\-71\\-133.0887\\-206.7127\\-71\\-135.0419\\-204.7114\\-71\\-136.0366\\-203.5678\\-71\\-137.4109\\-201.6146\\-71\\-137.6967\\-199.6615\\-71\\-137.4014\\-197.7084\\-71\\-136.995\\-196.6358\\-71\\-135.0419\\-198.8692\\-71\\-134.76\\-199.6615\\-71\\-134.5653\\-201.6146\\-71\\-133.7457\\-203.5678\\-71\\-131.8905\\-205.5209\\-71\\-130.1651\\-207.474\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "131"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-129.1825\\-191.1576\\-71\\-130.0827\\-189.8959\\-71\\-129.8677\\-185.9896\\-71\\-125.2762\\-181.3496\\-71\\-123.3231\\-179.8134\\-71\\-121.37\\-178.8333\\-71\\-119.4168\\-177.099\\-71\\-117.4637\\-176.0246\\-71\\-115.5106\\-175.1328\\-71\\-113.5575\\-174.7001\\-71\\-111.6043\\-174.6804\\-71\\-109.6512\\-175.0007\\-71\\-108.2722\\-176.224\\-71\\-107.2098\\-178.1771\\-71\\-107.362\\-180.1303\\-71\\-108.6896\\-182.0834\\-71\\-110.6179\\-184.0365\\-71\\-112.1892\\-185.9896\\-71\\-112.5809\\-187.9428\\-71\\-112.8325\\-189.8959\\-71\\-113.5575\\-191.3314\\-71\\-115.5106\\-191.8109\\-71\\-117.4637\\-190.5022\\-71\\-119.4168\\-189.6484\\-71\\-121.37\\-189.6484\\-71\\-123.3231\\-189.2264\\-71\\-125.2762\\-189.0859\\-71\\-127.2293\\-190.4581\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "132"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-205.8242\\-71\\-123.5955\\-205.5209\\-71\\-122.4817\\-203.5678\\-71\\-121.37\\-202.3226\\-71\\-119.4168\\-202.1448\\-71\\-117.969\\-203.5678\\-71\\-118.3928\\-205.5209\\-71\\-119.4168\\-206.5272\\-71\\-121.37\\-206.8315\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "133"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-121.37\\-198.1614\\-71\\-121.8489\\-197.7084\\-71\\-122.0953\\-195.7553\\-71\\-121.37\\-195.1025\\-71\\-119.4168\\-194.4584\\-71\\-117.4637\\-194.6383\\-71\\-116.0995\\-195.7553\\-71\\-117.4637\\-197.3093\\-71\\-117.9573\\-197.7084\\-71\\-119.4168\\-198.4191\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "134"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.8104\\-207.474\\-71\\-111.4073\\-205.5209\\-71\\-110.7921\\-203.5678\\-71\\-109.6512\\-202.4214\\-71\\-108.2874\\-203.5678\\-71\\-108.7494\\-205.5209\\-71\\-109.6512\\-206.6209\\-71\\-111.3575\\-207.474\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "135"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-212.4209\\-71\\-44.08998\\-209.4271\\-71\\-47.15123\\-206.4649\\-71\\-49.10435\\-205.2061\\-71\\-51.05748\\-204.1185\\-71\\-53.63406\\-201.6146\\-71\\-54.96373\\-200.4886\\-71\\-56.91685\\-199.0052\\-71\\-60.8231\\-197.775\\-71\\-62.77623\\-196.5764\\-71\\-64.72935\\-195.7629\\-71\\-66.68247\\-195.8907\\-71\\-68.6356\\-195.8638\\-71\\-70.58872\\-195.5796\\-71\\-72.54185\\-194.5866\\-71\\-75.35576\\-191.849\\-71\\-76.95341\\-189.8959\\-71\\-77.45631\\-187.9428\\-71\\-77.29089\\-185.9896\\-71\\-77.29594\\-184.0365\\-71\\-77.93417\\-182.0834\\-71\\-76.95341\\-178.1771\\-71\\-76.4481\\-176.8799\\-71\\-75.25808\\-174.2709\\-71\\-72.10854\\-170.3646\\-71\\-71.29661\\-168.4115\\-71\\-70.58872\\-167.5647\\-71\\-68.6356\\-166.5938\\-71\\-66.68247\\-167.5341\\-71\\-65.76791\\-168.4115\\-71\\-64.31341\\-170.3646\\-71\\-63.76729\\-172.3178\\-71\\-61.84233\\-174.2709\\-71\\-60.45611\\-176.224\\-71\\-59.74255\\-178.1771\\-71\\-55.86683\\-182.0834\\-71\\-53.87813\\-185.9896\\-71\\-52.26585\\-187.9428\\-71\\-51.49483\\-189.8959\\-71\\-49.99069\\-191.849\\-71\\-46.09674\\-195.7553\\-71\\-44.49281\\-197.7084\\-71\\-43.86203\\-199.6615\\-71\\-43.24498\\-200.33\\-71\\-40.57408\\-203.5678\\-71\\-40.49991\\-205.5209\\-71\\-40.09035\\-207.474\\-71\\-39.19489\\-209.4271\\-71\\-38.83542\\-211.3803\\-71\\-39.33873\\-211.9395\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "136"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-178.3641\\-71\\-44.66209\\-176.224\\-71\\-46.6485\\-174.2709\\-71\\-48.18058\\-172.3178\\-71\\-48.92997\\-170.3646\\-71\\-50.00858\\-168.4115\\-71\\-50.84577\\-166.4584\\-71\\-50.97671\\-164.5053\\-71\\-51.00529\\-162.5521\\-71\\-53.0106\\-160.9245\\-71\\-54.96373\\-161.4695\\-71\\-56.13679\\-160.599\\-71\\-56.64448\\-158.6459\\-71\\-54.96373\\-157.2177\\-71\\-51.05748\\-157.181\\-71\\-49.10435\\-155.6864\\-71\\-48.32798\\-154.7396\\-71\\-47.40042\\-152.7865\\-71\\-45.90886\\-150.8334\\-71\\-43.24498\\-147.6437\\-71\\-41.29185\\-146.3445\\-71\\-39.33873\\-145.6769\\-71\\-37.3856\\-144.3643\\-71\\-35.43248\\-144.3248\\-71\\-29.5731\\-144.3569\\-71\\-27.61998\\-145.4807\\-71\\-25.66685\\-147.4154\\-71\\-24.57868\\-148.8803\\-71\\-23.56512\\-150.8334\\-71\\-23.13642\\-152.7865\\-71\\-22.57853\\-154.7396\\-71\\-21.7606\\-155.625\\-71\\-20.32108\\-156.6928\\-71\\-17.96367\\-158.6459\\-71\\-19.80748\\-160.0823\\-71\\-21.7606\\-160.1194\\-71\\-22.28018\\-160.599\\-71\\-23.71373\\-162.7498\\-71\\-24.47383\\-164.5053\\-71\\-25.54478\\-168.4115\\-71\\-26.62252\\-170.3646\\-71\\-27.34944\\-172.3178\\-71\\-28.53319\\-174.2709\\-71\\-31.52623\\-177.2358\\-71\\-33.47935\\-178.459\\-71\\-39.33873\\-178.459\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "137"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-35.43248\\-217.6743\\-71\\-35.86716\\-217.2396\\-71\\-36.3024\\-215.2865\\-71\\-36.41446\\-213.3334\\-71\\-36.38306\\-211.3803\\-71\\-36.12399\\-209.4271\\-71\\-35.57317\\-207.474\\-71\\-34.42262\\-205.5209\\-71\\-33.47935\\-205.0208\\-71\\-32.92963\\-205.5209\\-71\\-31.4862\\-207.474\\-71\\-30.72405\\-209.4271\\-71\\-30.75418\\-213.3334\\-71\\-31.52623\\-214.7378\\-71\\-33.47935\\-216.6264\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "138"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "40.7394\\-211.8422\\-71\\38.78627\\-210.515\\-71\\37.81871\\-209.4271\\-71\\37.88586\\-207.474\\-71\\38.65084\\-205.5209\\-71\\39.66735\\-203.5678\\-71\\41.57061\\-201.6146\\-71\\42.12286\\-199.6615\\-71\\43.38929\\-197.7084\\-71\\45.48643\\-195.7553\\-71\\46.93706\\-193.8021\\-71\\47.80107\\-191.849\\-71\\49.50249\\-189.8959\\-71\\50.89441\\-187.9428\\-71\\51.93771\\-185.9896\\-71\\53.83504\\-184.0365\\-71\\55.05\\-182.0834\\-71\\55.47879\\-180.1303\\-71\\57.12844\\-178.1771\\-71\\58.00063\\-176.224\\-71\\59.2135\\-174.2709\\-71\\60.84795\\-172.3178\\-71\\61.29649\\-170.3646\\-71\\62.22377\\-169.3172\\-71\\64.1769\\-167.4163\\-71\\66.13003\\-165.8513\\-71\\68.08315\\-166.0237\\-71\\68.5748\\-166.4584\\-71\\70.19904\\-168.4115\\-71\\71.18723\\-170.3646\\-71\\72.34622\\-172.3178\\-71\\73.80709\\-176.224\\-71\\74.74107\\-178.1771\\-71\\75.56799\\-180.1303\\-71\\75.78714\\-182.0834\\-71\\75.78714\\-184.0365\\-71\\75.56799\\-187.9428\\-71\\74.7121\\-189.8959\\-71\\73.94253\\-190.6959\\-71\\71.9894\\-192.4126\\-71\\70.03628\\-193.2032\\-71\\68.08315\\-194.6054\\-71\\66.13003\\-195.6605\\-71\\64.1769\\-195.8773\\-71\\62.22377\\-196.6207\\-71\\60.27065\\-197.6418\\-71\\58.31752\\-197.8828\\-71\\56.3644\\-198.6242\\-71\\54.41127\\-200.3036\\-71\\52.5279\\-201.6146\\-71\\50.49733\\-203.5678\\-71\\49.04599\\-205.5209\\-71\\47.39098\\-207.474\\-71\\44.64565\\-210.2193\\-71\\42.69252\\-211.7268\\-71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "139"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-133.0887\\-208.1307\\-69\\-135.7049\\-205.5209\\-69\\-137.2425\\-203.5678\\-69\\-137.9537\\-201.6146\\-69\\-138.4024\\-199.6615\\-69\\-138.2607\\-197.7084\\-69\\-137.5646\\-195.7553\\-69\\-138.2992\\-193.8021\\-69\\-138.5711\\-191.849\\-69\\-137.7673\\-189.8959\\-69\\-136.995\\-189.1575\\-69\\-135.0419\\-188.8344\\-69\\-134.2122\\-189.8959\\-69\\-135.4189\\-191.849\\-69\\-136.665\\-195.7553\\-69\\-135.4414\\-199.6615\\-69\\-133.8381\\-203.5678\\-69\\-132.195\\-205.5209\\-69\\-131.1356\\-206.5947\\-69\\-130.0678\\-207.474\\-69\\-131.1356\\-208.7696\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "140"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-129.1825\\-190.8336\\-69\\-129.987\\-189.8959\\-69\\-130.002\\-185.9896\\-69\\-125.2762\\-181.2064\\-69\\-121.37\\-177.4358\\-69\\-119.4168\\-176.6134\\-69\\-117.4637\\-175.4358\\-69\\-115.5106\\-174.7175\\-69\\-113.5575\\-174.4947\\-69\\-111.6043\\-174.4947\\-69\\-109.6512\\-174.6277\\-69\\-107.6981\\-175.862\\-69\\-107.4163\\-176.224\\-69\\-107.2098\\-178.1771\\-69\\-107.2917\\-180.1303\\-69\\-108.6191\\-182.0834\\-69\\-110.5075\\-184.0365\\-69\\-111.3806\\-185.9896\\-69\\-111.5378\\-187.9428\\-69\\-112.2243\\-189.8959\\-69\\-113.5575\\-191.207\\-69\\-115.5106\\-190.8518\\-69\\-117.4637\\-189.7605\\-69\\-119.4168\\-189.6484\\-69\\-121.37\\-189.6484\\-69\\-123.3231\\-188.8677\\-69\\-125.2762\\-187.9506\\-69\\-127.2293\\-189.1635\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "141"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-206.3011\\-69\\-124.0755\\-205.5209\\-69\\-121.37\\-202.8622\\-69\\-119.4168\\-202.3113\\-69\\-118.476\\-203.5678\\-69\\-119.2258\\-205.5209\\-69\\-119.4168\\-205.7106\\-69\\-121.37\\-206.5426\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "142"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-119.4168\\-200.5468\\-69\\-119.9875\\-199.6615\\-69\\-122.3289\\-197.7084\\-69\\-122.1838\\-195.7553\\-69\\-121.37\\-195.4623\\-69\\-119.4168\\-195.882\\-69\\-117.4637\\-194.7918\\-69\\-116.3846\\-195.7553\\-69\\-116.7832\\-197.7084\\-69\\-118.8173\\-199.6615\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "143"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-109.6512\\-207.9681\\-69\\-110.3261\\-207.474\\-69\\-111.2638\\-205.5209\\-69\\-111.1335\\-203.5678\\-69\\-109.6512\\-201.7501\\-69\\-107.6981\\-202.9767\\-69\\-107.2822\\-203.5678\\-69\\-107.4163\\-205.5209\\-69\\-109.0941\\-207.474\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "144"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-213.5204\\-69\\-41.50111\\-213.3334\\-69\\-43.24498\\-210.8343\\-69\\-44.12101\\-209.4271\\-69\\-46.01353\\-207.474\\-69\\-48.06578\\-205.5209\\-69\\-50.41875\\-203.5678\\-69\\-52.10506\\-201.6146\\-69\\-53.0106\\-200.8638\\-69\\-54.96373\\-199.7281\\-69\\-56.91685\\-198.3788\\-69\\-58.86998\\-197.6708\\-69\\-62.77623\\-196.3656\\-69\\-64.72935\\-195.7629\\-69\\-68.6356\\-195.6067\\-69\\-70.58872\\-195.5937\\-69\\-72.54185\\-194.6177\\-69\\-74.49497\\-192.7188\\-69\\-77.29414\\-189.8959\\-69\\-78.002\\-187.9428\\-69\\-77.34256\\-185.9896\\-69\\-77.33937\\-184.0365\\-69\\-78.1194\\-182.0834\\-69\\-78.0218\\-180.1303\\-69\\-77.32793\\-178.1771\\-69\\-75.60079\\-174.2709\\-69\\-74.95694\\-172.3178\\-69\\-73.58523\\-170.3646\\-69\\-72.85667\\-168.4115\\-69\\-72.54185\\-168.0571\\-69\\-70.58872\\-166.5861\\-69\\-68.6356\\-167.1181\\-69\\-66.68247\\-168.1035\\-69\\-66.37235\\-168.4115\\-69\\-65.20876\\-170.3646\\-69\\-63.93415\\-172.3178\\-69\\-62.3919\\-174.2709\\-69\\-61.45839\\-176.224\\-69\\-59.77108\\-178.1771\\-69\\-57.81529\\-180.1303\\-69\\-56.08044\\-182.0834\\-69\\-55.62658\\-184.0365\\-69\\-54.14993\\-185.9896\\-69\\-53.44529\\-187.9428\\-69\\-51.9261\\-189.8959\\-69\\-50.02813\\-191.849\\-69\\-45.1981\\-196.6483\\-69\\-42.53697\\-199.6615\\-69\\-41.4558\\-201.6146\\-69\\-40.10569\\-203.5678\\-69\\-38.50617\\-205.5209\\-69\\-38.35792\\-209.4271\\-69\\-38.37479\\-211.3803\\-69\\-39.33873\\-212.9441\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "145"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-178.3766\\-69\\-41.29185\\-177.5486\\-69\\-43.24498\\-176.9071\\-69\\-45.1981\\-175.2525\\-69\\-48.12254\\-172.3178\\-69\\-48.92997\\-170.3646\\-69\\-50.07079\\-168.4115\\-69\\-50.97671\\-166.4584\\-69\\-51.00529\\-162.5521\\-69\\-52.28399\\-160.599\\-69\\-53.0106\\-159.9531\\-69\\-54.96373\\-160.146\\-69\\-56.80835\\-158.6459\\-69\\-55.34197\\-156.6928\\-69\\-54.96373\\-156.3462\\-69\\-53.0106\\-156.2045\\-69\\-51.05748\\-156.2768\\-69\\-49.36344\\-154.7396\\-69\\-48.27501\\-152.7865\\-69\\-46.63631\\-150.8334\\-69\\-45.53419\\-148.8803\\-69\\-44.24221\\-146.9271\\-69\\-43.24498\\-145.9556\\-69\\-41.29185\\-144.5301\\-69\\-39.33873\\-143.9975\\-69\\-37.3856\\-142.5413\\-69\\-35.43248\\-142.3031\\-69\\-31.52623\\-142.3129\\-69\\-29.5731\\-142.5862\\-69\\-29.03303\\-143.0209\\-69\\-26.05595\\-144.974\\-69\\-25.66685\\-145.3631\\-69\\-23.12886\\-148.8803\\-69\\-22.61865\\-152.7865\\-69\\-21.15839\\-154.7396\\-69\\-19.80748\\-155.8108\\-69\\-18.48168\\-156.6928\\-69\\-17.85435\\-157.3842\\-69\\-17.03901\\-158.6459\\-69\\-17.85435\\-159.4498\\-69\\-21.7606\\-159.6849\\-69\\-22.68316\\-160.599\\-69\\-23.37764\\-162.5521\\-69\\-23.57829\\-164.5053\\-69\\-24.68067\\-166.4584\\-69\\-25.32033\\-168.4115\\-69\\-26.32655\\-170.3646\\-69\\-27.01292\\-172.3178\\-69\\-28.53319\\-174.2709\\-69\\-31.52623\\-177.2056\\-69\\-33.47935\\-178.3888\\-69\\-37.3856\\-178.459\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "146"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-31.52623\\-219.8064\\-69\\-33.47935\\-218.4551\\-69\\-34.37799\\-217.2396\\-69\\-33.96763\\-215.2865\\-69\\-33.47935\\-214.7827\\-69\\-32.58854\\-213.3334\\-69\\-32.58417\\-211.3803\\-69\\-34.43372\\-207.474\\-69\\-33.66291\\-205.5209\\-69\\-31.52623\\-204.455\\-69\\-29.5731\\-204.5255\\-69\\-28.81935\\-205.5209\\-69\\-28.78344\\-213.3334\\-69\\-28.69089\\-217.2396\\-69\\-29.5731\\-218.9624\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "147"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "36.83315\\-210.2154\\-69\\36.22009\\-209.4271\\-69\\37.74612\\-207.474\\-69\\38.80898\\-205.5209\\-69\\39.5479\\-203.5678\\-69\\41.02313\\-201.6146\\-69\\41.89561\\-199.6615\\-69\\43.63098\\-197.7084\\-69\\47.47339\\-193.8021\\-69\\48.88799\\-191.849\\-69\\50.01974\\-189.8959\\-69\\50.50502\\-189.3888\\-69\\53.26329\\-185.9896\\-69\\55.17788\\-184.0365\\-69\\56.10631\\-182.0834\\-69\\56.29731\\-180.1303\\-69\\58.22278\\-176.224\\-69\\59.26122\\-174.2709\\-69\\61.10706\\-172.3178\\-69\\61.68248\\-170.3646\\-69\\63.24141\\-168.4115\\-69\\66.13003\\-165.5566\\-69\\68.08315\\-165.436\\-69\\69.44424\\-166.4584\\-69\\71.12982\\-168.4115\\-69\\72.28237\\-170.3646\\-69\\73.06313\\-172.3178\\-69\\73.62563\\-174.2709\\-69\\76.40096\\-182.0834\\-69\\76.43387\\-184.0365\\-69\\75.78714\\-185.9896\\-69\\75.63656\\-187.9428\\-69\\74.74341\\-189.8959\\-69\\73.94253\\-190.7276\\-69\\70.03628\\-192.7354\\-69\\68.08315\\-194.3134\\-69\\66.13003\\-195.0858\\-69\\64.1769\\-195.6745\\-69\\62.22377\\-196.3696\\-69\\58.31752\\-197.0523\\-69\\56.3644\\-198.3403\\-69\\54.41127\\-198.9517\\-69\\52.45815\\-200.5127\\-69\\49.41714\\-203.5678\\-69\\46.59877\\-207.0846\\-69\\44.23671\\-209.4271\\-69\\42.69252\\-210.6813\\-69\\40.7394\\-210.9183\\-69\\38.78627\\-210.834\\-69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "148"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-133.0887\\-208.5296\\-67\\-135.0419\\-206.7921\\-67\\-139.3735\\-201.6146\\-67\\-139.4189\\-199.6615\\-67\\-138.9481\\-198.7626\\-67\\-137.9505\\-197.7084\\-67\\-137.4395\\-195.7553\\-67\\-137.912\\-193.8021\\-67\\-138.9481\\-193.1486\\-67\\-139.7376\\-191.849\\-67\\-138.9481\\-190.8493\\-67\\-136.995\\-189.2816\\-67\\-135.8637\\-189.8959\\-67\\-135.9193\\-191.849\\-67\\-136.5392\\-193.8021\\-67\\-136.618\\-195.7553\\-67\\-136.4783\\-197.7084\\-67\\-135.7606\\-199.6615\\-67\\-134.598\\-201.6146\\-67\\-133.8091\\-203.5678\\-67\\-133.0887\\-204.8786\\-67\\-131.3965\\-207.474\\-67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "149"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-129.1825\\-190.9792\\-67\\-130.6509\\-189.8959\\-67\\-130.002\\-185.9896\\-67\\-126.23\\-182.0834\\-67\\-121.37\\-177.354\\-67\\-119.4168\\-176.6109\\-67\\-117.4637\\-175.6589\\-67\\-115.5106\\-175.0058\\-67\\-113.5575\\-174.5964\\-67\\-111.6043\\-174.5414\\-67\\-109.6512\\-174.8923\\-67\\-108.1689\\-176.224\\-67\\-107.3413\\-178.1771\\-67\\-108.8451\\-182.0834\\-67\\-110.4589\\-184.0365\\-67\\-111.1697\\-185.9896\\-67\\-111.1884\\-187.9428\\-67\\-111.3686\\-189.8959\\-67\\-111.6043\\-190.2183\\-67\\-113.5575\\-191.556\\-67\\-115.5106\\-190.7634\\-67\\-117.4637\\-189.6484\\-67\\-121.37\\-189.6484\\-67\\-123.3231\\-188.8259\\-67\\-125.2762\\-187.6953\\-67\\-127.2293\\-189.0711\\-67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "150"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-119.4168\\-201.3056\\-67\\-120.4992\\-199.6615\\-67\\-121.37\\-198.9458\\-67\\-123.3231\\-198.4348\\-67\\-124.1515\\-197.7084\\-67\\-125.1355\\-195.7553\\-67\\-123.3231\\-194.5046\\-67\\-121.8379\\-195.7553\\-67\\-119.7712\\-197.7084\\-67\\-119.4168\\-198.1686\\-67\\-118.7333\\-199.6615\\-67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "151"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-109.6512\\-208.4313\\-67\\-111.1814\\-207.474\\-67\\-110.6529\\-203.5678\\-67\\-109.6512\\-201.5608\\-67\\-107.6981\\-201.3003\\-67\\-107.3941\\-201.6146\\-67\\-106.9538\\-203.5678\\-67\\-107.1761\\-205.5209\\-67\\-108.6939\\-207.474\\-67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "152"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-214.1275\\-67\\-42.11936\\-213.3334\\-67\\-42.89845\\-211.3803\\-67\\-43.83964\\-209.4271\\-67\\-44.90513\\-207.474\\-67\\-47.15123\\-205.27\\-67\\-48.99421\\-203.5678\\-67\\-51.05748\\-201.3445\\-67\\-53.0106\\-200.2931\\-67\\-54.96373\\-198.5604\\-67\\-56.91685\\-197.0453\\-67\\-60.8231\\-196.4221\\-67\\-62.77623\\-195.8638\\-67\\-64.72935\\-195.6468\\-67\\-66.68247\\-195.0662\\-67\\-68.6356\\-194.8169\\-67\\-70.58872\\-194.8003\\-67\\-72.54185\\-194.3465\\-67\\-74.49497\\-192.7188\\-67\\-77.32939\\-189.8959\\-67\\-78.1194\\-187.9428\\-67\\-77.5021\\-185.9896\\-67\\-77.4929\\-184.0365\\-67\\-78.13069\\-182.0834\\-67\\-78.14214\\-180.1303\\-67\\-77.5042\\-178.1771\\-67\\-77.26413\\-176.224\\-67\\-76.89199\\-174.2709\\-67\\-75.51739\\-172.3178\\-67\\-75.20918\\-170.3646\\-67\\-74.17421\\-168.4115\\-67\\-72.54185\\-166.7301\\-67\\-70.58872\\-165.8586\\-67\\-68.6356\\-167.3949\\-67\\-65.64996\\-170.3646\\-67\\-64.00902\\-172.3178\\-67\\-63.34132\\-174.2709\\-67\\-61.73425\\-176.224\\-67\\-59.77584\\-178.1771\\-67\\-57.98976\\-180.1303\\-67\\-57.54538\\-182.0834\\-67\\-56.02463\\-184.0365\\-67\\-55.47741\\-185.9896\\-67\\-52.244\\-189.8959\\-67\\-51.05748\\-191.5325\\-67\\-48.7766\\-193.8021\\-67\\-47.15123\\-195.0381\\-67\\-45.1981\\-196.6563\\-67\\-43.24498\\-198.5966\\-67\\-38.5166\\-203.5678\\-67\\-38.0998\\-205.5209\\-67\\-36.61515\\-207.474\\-67\\-36.48756\\-209.4271\\-67\\-36.75057\\-211.3803\\-67\\-38.23501\\-213.3334\\-67\\-39.33873\\-214.4201\\-67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "153"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-178.2293\\-67\\-39.33873\\-177.4945\\-67\\-41.29185\\-176.9786\\-67\\-43.24498\\-175.6621\\-67\\-45.1981\\-174.9442\\-67\\-47.15123\\-173.2372\\-67\\-48.08054\\-172.3178\\-67\\-48.86863\\-170.3646\\-67\\-50.03561\\-168.4115\\-67\\-50.90887\\-166.4584\\-67\\-50.99089\\-162.5521\\-67\\-51.73477\\-160.599\\-67\\-53.0106\\-159.5004\\-67\\-54.96373\\-159.6801\\-67\\-56.67455\\-158.6459\\-67\\-55.9969\\-156.6928\\-67\\-54.96373\\-155.634\\-67\\-51.05748\\-155.5678\\-67\\-50.00813\\-154.7396\\-67\\-48.88055\\-152.7865\\-67\\-48.24146\\-150.8334\\-67\\-46.6474\\-148.8803\\-67\\-45.57513\\-146.9271\\-67\\-43.24498\\-144.4857\\-67\\-41.29185\\-143.5881\\-67\\-39.33873\\-142.2708\\-67\\-37.3856\\-141.5277\\-67\\-35.43248\\-140.3281\\-67\\-33.47935\\-140.3221\\-67\\-31.52623\\-140.6331\\-67\\-29.5731\\-141.9855\\-67\\-27.61998\\-142.2708\\-67\\-25.66685\\-143.2711\\-67\\-23.12139\\-146.9271\\-67\\-22.62394\\-148.8803\\-67\\-21.61199\\-150.8334\\-67\\-21.47878\\-152.7865\\-67\\-20.39213\\-154.7396\\-67\\-19.80748\\-155.2563\\-67\\-17.85435\\-155.8328\\-67\\-16.98136\\-156.6928\\-67\\-16.3178\\-158.6459\\-67\\-17.85435\\-159.5889\\-67\\-19.80748\\-159.0523\\-67\\-21.7606\\-159.8023\\-67\\-22.50625\\-160.599\\-67\\-23.3672\\-164.5053\\-67\\-24.40037\\-166.4584\\-67\\-25.53142\\-170.3646\\-67\\-26.64861\\-172.3178\\-67\\-29.5731\\-175.2997\\-67\\-31.52623\\-176.9711\\-67\\-33.47935\\-177.5278\\-67\\-35.43248\\-178.2437\\-67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "154"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-31.52623\\-222.677\\-67\\-32.17556\\-221.1459\\-67\\-32.41527\\-219.1928\\-67\\-32.48144\\-217.2396\\-67\\-31.60332\\-215.2865\\-67\\-30.62365\\-213.3334\\-67\\-30.62818\\-211.3803\\-67\\-31.47364\\-209.4271\\-67\\-32.54763\\-207.474\\-67\\-32.24493\\-205.5209\\-67\\-31.52623\\-204.8062\\-67\\-29.5731\\-203.8304\\-67\\-27.73011\\-205.5209\\-67\\-27.61235\\-207.474\\-67\\-27.07376\\-209.4271\\-67\\-26.82652\\-211.3803\\-67\\-26.32018\\-213.3334\\-67\\-25.17857\\-215.2865\\-67\\-25.004\\-217.2396\\-67\\-25.66685\\-218.819\\-67\\-27.75086\\-221.1459\\-67\\-29.5731\\-222.7675\\-67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "155"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "38.78627\\-210.4719\\-67\\37.05252\\-209.4271\\-67\\38.78627\\-207.3505\\-67\\39.5479\\-205.5209\\-67\\39.59183\\-203.5678\\-67\\40.57545\\-201.6146\\-67\\42.34147\\-199.6615\\-67\\48.5519\\-193.4048\\-67\\52.80467\\-187.9428\\-67\\53.62342\\-185.9896\\-67\\56.89453\\-182.0834\\-67\\57.45505\\-178.1771\\-67\\58.92458\\-176.224\\-67\\59.39807\\-174.2709\\-67\\61.00065\\-172.3178\\-67\\61.37712\\-170.3646\\-67\\64.1769\\-167.4536\\-67\\66.13003\\-165.5049\\-67\\68.08315\\-164.789\\-67\\70.03628\\-165.7116\\-67\\70.80782\\-166.4584\\-67\\72.28237\\-168.4115\\-67\\73.07716\\-170.3646\\-67\\73.61486\\-172.3178\\-67\\73.73082\\-174.2709\\-67\\74.7185\\-176.224\\-67\\75.57875\\-178.1771\\-67\\75.73406\\-180.1303\\-67\\76.70015\\-182.0834\\-67\\76.87222\\-184.0365\\-67\\76.29238\\-185.9896\\-67\\75.07949\\-187.9428\\-67\\74.38258\\-189.8959\\-67\\73.94253\\-190.3842\\-67\\71.27325\\-191.849\\-67\\68.08315\\-193.2098\\-67\\66.13003\\-194.4331\\-67\\64.1769\\-195.0991\\-67\\62.22377\\-195.8773\\-67\\60.27065\\-195.979\\-67\\58.31752\\-196.601\\-67\\56.3644\\-197.716\\-67\\54.41127\\-198.3506\\-67\\52.45815\\-199.3204\\-67\\46.11049\\-205.5209\\-67\\44.64565\\-206.8967\\-67\\42.69252\\-208.8809\\-67\\40.7394\\-210.3455\\-67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "156"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-136.995\\-197.4864\\-65\\-137.2558\\-195.7553\\-65\\-137.3706\\-193.8021\\-65\\-138.9481\\-193.2228\\-65\\-140.1579\\-191.849\\-65\\-138.9481\\-189.9037\\-65\\-136.995\\-190.7138\\-65\\-136.4479\\-191.849\\-65\\-136.7458\\-193.8021\\-65\\-136.5572\\-195.7553\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "157"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-131.1356\\-210.0249\\-65\\-133.0887\\-208.8885\\-65\\-135.0419\\-208.1378\\-65\\-137.5087\\-205.5209\\-65\\-138.4128\\-203.5678\\-65\\-138.9481\\-203.0053\\-65\\-139.8952\\-201.6146\\-65\\-139.8087\\-199.6615\\-65\\-138.9481\\-198.685\\-65\\-136.995\\-197.7481\\-65\\-135.8003\\-199.6615\\-65\\-134.1702\\-201.6146\\-65\\-132.7526\\-205.5209\\-65\\-131.8203\\-207.474\\-65\\-131.1356\\-208.5695\\-65\\-129.1825\\-209.3324\\-65\\-129.1825\\-209.5942\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "158"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-199.2377\\-65\\-124.521\\-197.7084\\-65\\-124.4706\\-195.7553\\-65\\-123.3231\\-194.7215\\-65\\-121.7619\\-195.7553\\-65\\-120.6426\\-197.7084\\-65\\-121.2922\\-199.6615\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "159"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-192.2359\\-65\\-115.5106\\-190.7634\\-65\\-117.4637\\-189.6484\\-65\\-121.37\\-189.5391\\-65\\-123.3231\\-188.723\\-65\\-125.2762\\-187.4291\\-65\\-127.2293\\-188.9525\\-65\\-129.1825\\-190.2261\\-65\\-129.8996\\-189.8959\\-65\\-130.2623\\-187.9428\\-65\\-129.7052\\-185.9896\\-65\\-127.2293\\-182.5447\\-65\\-125.2762\\-180.9743\\-65\\-123.3231\\-179.2833\\-65\\-121.37\\-177.8389\\-65\\-119.4168\\-177.0024\\-65\\-117.4637\\-176.517\\-65\\-115.5106\\-175.6075\\-65\\-113.5575\\-175.0337\\-65\\-111.6043\\-174.927\\-65\\-109.6512\\-175.9603\\-65\\-109.3855\\-176.224\\-65\\-108.6068\\-178.1771\\-65\\-108.8014\\-180.1303\\-65\\-109.1982\\-182.0834\\-65\\-110.1042\\-184.0365\\-65\\-110.5453\\-185.9896\\-65\\-110.5502\\-187.9428\\-65\\-110.8298\\-189.8959\\-65\\-111.6043\\-191.2397\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "160"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.6043\\-208.0998\\-65\\-112.118\\-207.474\\-65\\-110.9349\\-205.5209\\-65\\-110.5918\\-203.5678\\-65\\-110.5882\\-201.6146\\-65\\-109.6512\\-199.5338\\-65\\-107.6981\\-200.234\\-65\\-106.707\\-201.6146\\-65\\-106.3835\\-203.5678\\-65\\-106.9621\\-205.5209\\-65\\-108.6606\\-207.474\\-65\\-109.6512\\-208.4841\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "59"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "161"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-214.1861\\-65\\-42.17027\\-213.3334\\-65\\-42.89845\\-211.3803\\-65\\-43.16421\\-209.4271\\-65\\-44.32954\\-207.474\\-65\\-48.06494\\-203.5678\\-65\\-49.59574\\-201.6146\\-65\\-50.5419\\-199.6615\\-65\\-51.05748\\-199.089\\-65\\-53.0106\\-198.5322\\-65\\-54.96373\\-197.2695\\-65\\-56.91685\\-196.4045\\-65\\-58.86998\\-195.991\\-65\\-60.8231\\-195.8773\\-65\\-62.77623\\-195.6332\\-65\\-66.68247\\-194.4295\\-65\\-68.6356\\-193.9765\\-65\\-70.58872\\-193.8543\\-65\\-72.54185\\-193.5904\\-65\\-74.49497\\-192.5998\\-65\\-77.21042\\-189.8959\\-65\\-77.89591\\-187.9428\\-65\\-77.90438\\-185.9896\\-65\\-78.14214\\-182.0834\\-65\\-78.14214\\-180.1303\\-65\\-77.88997\\-176.224\\-65\\-77.327\\-174.2709\\-65\\-76.41025\\-172.3178\\-65\\-76.24435\\-170.3646\\-65\\-75.52061\\-168.4115\\-65\\-74.49497\\-166.8535\\-65\\-74.10287\\-166.4584\\-65\\-72.54185\\-165.4677\\-65\\-70.58872\\-165.5147\\-65\\-69.57169\\-166.4584\\-65\\-63.7963\\-172.3178\\-65\\-62.50569\\-174.2709\\-65\\-61.76228\\-176.224\\-65\\-59.78056\\-178.1771\\-65\\-58.48304\\-180.1303\\-65\\-57.79107\\-182.0834\\-65\\-56.65776\\-184.0365\\-65\\-55.81591\\-185.9896\\-65\\-53.92886\\-187.9428\\-65\\-52.94402\\-189.8959\\-65\\-52.1772\\-191.849\\-65\\-51.05748\\-193.6769\\-65\\-49.10435\\-195.5131\\-65\\-47.15123\\-196.4248\\-65\\-45.1981\\-197.0591\\-65\\-43.24498\\-198.6138\\-65\\-38.28736\\-203.5678\\-65\\-36.58275\\-205.5209\\-65\\-35.40885\\-207.474\\-65\\-34.54149\\-209.4271\\-65\\-35.25163\\-211.3803\\-65\\-36.4379\\-213.3334\\-65\\-37.3856\\-214.3904\\-65\\-39.33873\\-214.8996\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "162"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-176.9589\\-65\\-41.29185\\-175.6243\\-65\\-43.24498\\-174.9788\\-65\\-45.1981\\-173.7012\\-65\\-47.15123\\-172.3101\\-65\\-49.68696\\-168.4115\\-65\\-50.36843\\-166.4584\\-65\\-50.89589\\-164.5053\\-65\\-51.13824\\-160.599\\-65\\-52.39147\\-158.6459\\-65\\-53.0106\\-158.0983\\-65\\-54.96373\\-159.1044\\-65\\-55.61196\\-158.6459\\-65\\-56.64448\\-156.6928\\-65\\-54.96373\\-155.2308\\-65\\-53.0106\\-155.1035\\-65\\-51.05748\\-154.2847\\-65\\-49.6131\\-152.7865\\-65\\-48.85686\\-150.8334\\-65\\-48.246\\-148.8803\\-65\\-47.15123\\-147.4842\\-65\\-45.1981\\-145.4102\\-65\\-41.29185\\-141.6411\\-65\\-40.63358\\-141.0678\\-65\\-39.33873\\-140.2432\\-65\\-37.3856\\-139.7242\\-65\\-33.47935\\-139.659\\-65\\-31.52623\\-140.0157\\-65\\-29.5731\\-140.2509\\-65\\-27.61998\\-140.3341\\-65\\-25.66685\\-141.3195\\-65\\-23.71373\\-143.2556\\-65\\-22.89769\\-144.974\\-65\\-22.51681\\-146.9271\\-65\\-21.13207\\-148.8803\\-65\\-20.86715\\-150.8334\\-65\\-20.85053\\-152.7865\\-65\\-19.80748\\-154.1636\\-65\\-17.85435\\-155.5008\\-65\\-16.71274\\-156.6928\\-65\\-16.32115\\-158.6459\\-65\\-17.85435\\-159.4012\\-65\\-19.80748\\-157.7135\\-65\\-20.82755\\-158.6459\\-65\\-21.7606\\-160.6571\\-65\\-22.54474\\-162.5521\\-65\\-22.96945\\-164.5053\\-65\\-23.59166\\-166.4584\\-65\\-24.69517\\-168.4115\\-65\\-25.38503\\-170.3646\\-65\\-26.59119\\-172.3178\\-65\\-29.5731\\-175.2475\\-65\\-31.52623\\-176.5058\\-65\\-33.47935\\-176.9906\\-65\\-35.43248\\-177.2006\\-65\\-37.3856\\-177.1961\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "163"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-33.47935\\-225.3561\\-65\\-33.79158\\-225.0521\\-65\\-34.0205\\-223.099\\-65\\-31.56437\\-221.1459\\-65\\-29.5731\\-219.0097\\-65\\-28.76395\\-217.2396\\-65\\-28.64767\\-213.3334\\-65\\-28.65308\\-211.3803\\-65\\-29.1574\\-209.4271\\-65\\-30.40928\\-207.474\\-65\\-29.83408\\-205.5209\\-65\\-29.18989\\-205.5209\\-65\\-27.61998\\-206.9464\\-65\\-27.31601\\-207.474\\-65\\-25.66685\\-209.5023\\-65\\-24.87197\\-211.3803\\-65\\-24.7754\\-213.3334\\-65\\-24.23496\\-215.2865\\-65\\-23.51429\\-217.2396\\-65\\-24.40804\\-219.1928\\-65\\-24.91832\\-221.1459\\-65\\-25.66685\\-222.0342\\-65\\-27.36645\\-223.099\\-65\\-30.28925\\-225.0521\\-65\\-31.52623\\-225.7251\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "164"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-200.9465\\-65\\45.63759\\-199.6615\\-65\\46.59877\\-198.6\\-65\\48.77726\\-195.7553\\-65\\49.72486\\-193.8021\\-65\\50.90175\\-191.849\\-65\\51.754\\-189.8959\\-65\\53.30886\\-187.9428\\-65\\54.24968\\-185.9896\\-65\\55.31516\\-184.0365\\-65\\56.92633\\-182.0834\\-65\\57.39815\\-180.1303\\-65\\57.98986\\-178.1771\\-65\\59.15923\\-176.224\\-65\\59.86171\\-174.2709\\-65\\60.20406\\-172.3178\\-65\\61.25177\\-170.3646\\-65\\63.22274\\-168.4115\\-65\\64.85419\\-166.4584\\-65\\66.13003\\-165.312\\-65\\68.08315\\-164.6407\\-65\\70.03628\\-165.3749\\-65\\71.5737\\-166.4584\\-65\\73.07827\\-168.4115\\-65\\73.61486\\-170.3646\\-65\\73.95016\\-174.2709\\-65\\75.70865\\-178.1771\\-65\\75.73406\\-180.1303\\-65\\76.70177\\-182.0834\\-65\\76.8599\\-184.0365\\-65\\75.68394\\-185.9896\\-65\\73.12958\\-189.8959\\-65\\71.9894\\-191.0301\\-65\\70.03628\\-191.2871\\-65\\68.96621\\-191.849\\-65\\65.99915\\-193.8021\\-65\\62.22377\\-195.5436\\-65\\60.27065\\-195.6332\\-65\\56.3644\\-196.9339\\-65\\54.41127\\-197.0243\\-65\\52.45815\\-197.2708\\-65\\50.50502\\-198.8909\\-65\\49.44775\\-199.6615\\-65\\48.5519\\-200.5084\\-65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "165"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-136.995\\-194.1552\\-63\\-138.9481\\-193.2639\\-63\\-140.2798\\-191.849\\-63\\-138.9481\\-189.6964\\-63\\-136.995\\-190.7995\\-63\\-136.1376\\-191.849\\-63\\-136.5014\\-193.8021\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "166"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-133.0887\\-209.953\\-63\\-135.0419\\-208.5647\\-63\\-136.4148\\-207.474\\-63\\-138.9481\\-204.825\\-63\\-139.873\\-203.5678\\-63\\-140.2909\\-201.6146\\-63\\-139.9626\\-199.6615\\-63\\-138.9481\\-198.5868\\-63\\-136.995\\-198.7759\\-63\\-135.0419\\-200.4841\\-63\\-133.8944\\-201.6146\\-63\\-132.6633\\-203.5678\\-63\\-132.575\\-205.5209\\-63\\-131.799\\-207.474\\-63\\-131.1356\\-208.1837\\-63\\-129.563\\-209.4271\\-63\\-131.1356\\-210.5018\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "167"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-198.7583\\-63\\-124.3633\\-197.7084\\-63\\-124.2078\\-195.7553\\-63\\-123.3231\\-194.8792\\-63\\-121.37\\-194.8143\\-63\\-120.4482\\-195.7553\\-63\\-120.4755\\-197.7084\\-63\\-121.37\\-198.7612\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "168"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-192.5405\\-63\\-115.5106\\-190.7634\\-63\\-117.4637\\-189.6484\\-63\\-119.4168\\-189.6254\\-63\\-121.37\\-189.1458\\-63\\-123.3231\\-187.4045\\-63\\-125.1276\\-185.9896\\-63\\-127.2293\\-184.1166\\-63\\-126.6176\\-182.0834\\-63\\-125.2762\\-181.0273\\-63\\-123.3231\\-180.6011\\-63\\-121.37\\-180.4558\\-63\\-119.4168\\-179.1293\\-63\\-118.7244\\-178.1771\\-63\\-117.4637\\-177.1575\\-63\\-115.5106\\-176.686\\-63\\-113.5575\\-175.8372\\-63\\-111.6043\\-176.1096\\-63\\-110.0182\\-178.1771\\-63\\-109.2448\\-180.1303\\-63\\-109.2742\\-182.0834\\-63\\-109.5026\\-185.9896\\-63\\-109.5026\\-187.9428\\-63\\-110.8668\\-191.849\\-63\\-111.6043\\-193.3396\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "169"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.6043\\-208.8154\\-63\\-112.7265\\-207.474\\-63\\-112.1012\\-205.5209\\-63\\-111.8281\\-203.5678\\-63\\-113.5575\\-200.5985\\-63\\-113.9828\\-199.6615\\-63\\-114.5232\\-197.7084\\-63\\-113.5575\\-196.6485\\-63\\-112.2496\\-195.7553\\-63\\-111.6043\\-194.874\\-63\\-111.0308\\-195.7553\\-63\\-109.6512\\-196.4736\\-63\\-107.2542\\-199.6615\\-63\\-106.5506\\-201.6146\\-63\\-105.3386\\-203.5678\\-63\\-106.717\\-205.5209\\-63\\-107.6981\\-206.6021\\-63\\-109.6512\\-208.5304\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "170"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-64.72935\\-194.3968\\-63\\-66.68247\\-193.6936\\-63\\-68.6356\\-193.5092\\-63\\-70.58872\\-193.0219\\-63\\-72.54185\\-192.7645\\-63\\-74.49497\\-191.3125\\-63\\-76.4481\\-189.2644\\-63\\-77.33311\\-187.9428\\-63\\-77.50824\\-185.9896\\-63\\-78.14214\\-184.0365\\-63\\-78.13069\\-176.224\\-63\\-77.55184\\-174.2709\\-63\\-77.31379\\-172.3178\\-63\\-77.30902\\-170.3646\\-63\\-76.95341\\-168.4115\\-63\\-75.3062\\-166.4584\\-63\\-74.49497\\-165.6879\\-63\\-72.54185\\-164.854\\-63\\-70.58872\\-165.2757\\-63\\-69.16235\\-166.4584\\-63\\-67.57723\\-168.4115\\-63\\-63.74297\\-172.3178\\-63\\-62.35085\\-174.2709\\-63\\-61.76228\\-176.224\\-63\\-59.8205\\-178.1771\\-63\\-58.77523\\-180.1303\\-63\\-57.83474\\-182.0834\\-63\\-56.99762\\-184.0365\\-63\\-55.85853\\-185.9896\\-63\\-54.17959\\-187.9428\\-63\\-52.94402\\-191.849\\-63\\-53.46467\\-193.8021\\-63\\-54.96373\\-195.203\\-63\\-56.91685\\-195.6198\\-63\\-60.8231\\-195.5078\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "171"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-214.1077\\-63\\-42.08626\\-213.3334\\-63\\-42.78301\\-211.3803\\-63\\-43.75325\\-209.4271\\-63\\-44.41962\\-207.474\\-63\\-46.03582\\-205.5209\\-63\\-47.4236\\-203.5678\\-63\\-47.96593\\-201.6146\\-63\\-46.98685\\-199.6615\\-63\\-45.1981\\-198.7254\\-63\\-43.24498\\-199.0195\\-63\\-41.29185\\-200.5626\\-63\\-39.33873\\-202.4944\\-63\\-34.40828\\-207.474\\-63\\-33.83847\\-209.4271\\-63\\-32.92382\\-211.3803\\-63\\-32.80878\\-213.3334\\-63\\-33.47935\\-213.943\\-63\\-37.3856\\-214.9071\\-63\\-39.33873\\-214.9095\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "172"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-176.4357\\-63\\-39.33873\\-175.5612\\-63\\-41.29185\\-174.9341\\-63\\-45.1981\\-172.3575\\-63\\-47.19093\\-170.3646\\-63\\-49.70145\\-166.4584\\-63\\-50.33714\\-164.5053\\-63\\-50.87048\\-162.5521\\-63\\-50.97671\\-160.599\\-63\\-51.67794\\-158.6459\\-63\\-53.0106\\-157.5027\\-63\\-54.96373\\-157.8656\\-63\\-56.81364\\-156.6928\\-63\\-55.37741\\-154.7396\\-63\\-54.96373\\-154.3626\\-63\\-51.05748\\-153.2377\\-63\\-50.59153\\-152.7865\\-63\\-49.53904\\-150.8334\\-63\\-48.77669\\-148.8803\\-63\\-47.89039\\-146.9271\\-63\\-45.1981\\-143.5726\\-63\\-42.6472\\-141.0678\\-63\\-39.90595\\-139.1146\\-63\\-39.33873\\-138.5764\\-63\\-37.3856\\-138.1852\\-63\\-33.47935\\-138.1719\\-63\\-31.52623\\-138.2371\\-63\\-29.5731\\-138.7129\\-63\\-27.61998\\-139.7844\\-63\\-25.66685\\-140.0955\\-63\\-24.0271\\-141.0678\\-63\\-23.71373\\-141.3859\\-63\\-21.7606\\-144.2775\\-63\\-21.22238\\-144.974\\-63\\-20.89019\\-146.9271\\-63\\-20.7045\\-148.8803\\-63\\-20.02067\\-150.8334\\-63\\-19.14778\\-152.7865\\-63\\-17.44067\\-154.7396\\-63\\-16.26065\\-156.6928\\-63\\-17.85435\\-157.9607\\-63\\-19.80748\\-157.3853\\-63\\-21.24393\\-158.6459\\-63\\-21.72304\\-162.5521\\-63\\-22.75936\\-164.5053\\-63\\-23.40976\\-166.4584\\-63\\-24.64072\\-168.4115\\-63\\-25.49246\\-170.3646\\-63\\-26.70816\\-172.3178\\-63\\-27.61998\\-173.2346\\-63\\-29.5731\\-174.8698\\-63\\-31.52623\\-175.5161\\-63\\-33.47935\\-176.3325\\-63\\-35.43248\\-176.4478\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "173"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-33.47935\\-225.9411\\-63\\-34.43244\\-225.0521\\-63\\-33.7769\\-223.099\\-63\\-33.47935\\-222.8399\\-63\\-31.52623\\-222.5658\\-63\\-30.12439\\-223.099\\-63\\-29.5731\\-223.7826\\-63\\-29.17637\\-225.0521\\-63\\-29.5731\\-225.4643\\-63\\-31.52623\\-226.2046\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "174"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-25.66685\\-223.7275\\-63\\-26.86043\\-223.099\\-63\\-27.5238\\-221.1459\\-63\\-26.73169\\-219.1928\\-63\\-26.64866\\-217.2396\\-63\\-26.70689\\-211.3803\\-63\\-25.92125\\-209.4271\\-63\\-25.66685\\-209.2154\\-63\\-23.71373\\-210.5843\\-63\\-23.09228\\-211.3803\\-63\\-22.8773\\-213.3334\\-63\\-22.79019\\-219.1928\\-63\\-22.90291\\-221.1459\\-63\\-23.71373\\-222.3734\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "175"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-196.3028\\-63\\52.45815\\-195.1457\\-63\\51.44193\\-193.8021\\-63\\51.66188\\-191.849\\-63\\52.84509\\-189.8959\\-63\\53.66889\\-187.9428\\-63\\54.95749\\-185.9896\\-63\\55.57655\\-184.0365\\-63\\57.22897\\-180.1303\\-63\\57.992\\-178.1771\\-63\\59.20152\\-176.224\\-63\\60.00011\\-174.2709\\-63\\60.01156\\-172.3178\\-63\\61.18242\\-170.3646\\-63\\63.182\\-168.4115\\-63\\63.89507\\-166.4584\\-63\\64.1769\\-166.1606\\-63\\66.13003\\-164.7982\\-63\\68.08315\\-164.6273\\-63\\70.03628\\-164.7982\\-63\\71.9894\\-165.7364\\-63\\72.71919\\-166.4584\\-63\\73.5834\\-168.4115\\-63\\73.82046\\-170.3646\\-63\\74.48874\\-172.3178\\-63\\75.09058\\-176.224\\-63\\75.70865\\-178.1771\\-63\\75.72126\\-180.1303\\-63\\76.42578\\-182.0834\\-63\\76.46531\\-184.0365\\-63\\74.90414\\-185.9896\\-63\\73.23837\\-187.9428\\-63\\71.9894\\-189.7006\\-63\\70.03628\\-190.6475\\-63\\68.08315\\-191.039\\-63\\66.13003\\-193.0896\\-63\\64.1769\\-194.2933\\-63\\62.22377\\-194.7333\\-63\\60.27065\\-194.9806\\-63\\58.23476\\-195.7553\\-63\\56.3644\\-196.3616\\-63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "176"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-135.0419\\-209.8563\\-61\\-136.995\\-208.1972\\-61\\-139.696\\-205.5209\\-61\\-140.4482\\-203.5678\\-61\\-141.5843\\-201.6146\\-61\\-141.4817\\-199.6615\\-61\\-140.9012\\-199.0204\\-61\\-138.9481\\-198.278\\-61\\-136.995\\-199.1403\\-61\\-136.4705\\-199.6615\\-61\\-133.7684\\-201.6146\\-61\\-133.0887\\-202.1861\\-61\\-131.9083\\-203.5678\\-61\\-131.8909\\-205.5209\\-61\\-131.3473\\-207.474\\-61\\-129.8577\\-209.4271\\-61\\-131.1356\\-210.7908\\-61\\-133.0887\\-210.5557\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "177"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-198.126\\-61\\-123.7223\\-197.7084\\-61\\-123.7346\\-195.7553\\-61\\-123.3231\\-195.3161\\-61\\-121.37\\-194.7133\\-61\\-119.713\\-195.7553\\-61\\-119.954\\-197.7084\\-61\\-121.37\\-198.6479\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "178"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.6043\\-208.8274\\-61\\-113.0866\\-207.474\\-61\\-112.7475\\-205.5209\\-61\\-112.6849\\-203.5678\\-61\\-114.2471\\-201.6146\\-61\\-114.9712\\-199.6615\\-61\\-116.1857\\-197.7084\\-61\\-115.5106\\-196.794\\-61\\-114.4719\\-195.7553\\-61\\-113.5575\\-195.1837\\-61\\-112.2777\\-193.8021\\-61\\-113.5575\\-192.2333\\-61\\-115.5106\\-190.7634\\-61\\-117.4637\\-189.6368\\-61\\-119.4168\\-189.4895\\-61\\-121.37\\-188.4341\\-61\\-121.8404\\-187.9428\\-61\\-122.3095\\-185.9896\\-61\\-121.37\\-184.3779\\-61\\-121.034\\-184.0365\\-61\\-119.4168\\-182.9837\\-61\\-117.4637\\-182.4726\\-61\\-116.7931\\-182.0834\\-61\\-115.5106\\-179.743\\-61\\-113.5575\\-178.1998\\-61\\-111.6043\\-178.7567\\-61\\-110.5804\\-180.1303\\-61\\-109.9218\\-182.0834\\-61\\-109.5846\\-184.0365\\-61\\-109.3473\\-185.9896\\-61\\-109.2742\\-187.9428\\-61\\-109.3694\\-189.8959\\-61\\-110.1525\\-191.849\\-61\\-110.1829\\-193.8021\\-61\\-109.6512\\-194.2452\\-61\\-108.8358\\-195.7553\\-61\\-106.8551\\-199.6615\\-61\\-105.1988\\-203.5678\\-61\\-106.1916\\-205.5209\\-61\\-107.3992\\-207.474\\-61\\-107.6981\\-207.7771\\-61\\-109.6512\\-208.6851\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "179"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-64.72935\\-193.8248\\-61\\-66.68247\\-193.0722\\-61\\-68.6356\\-192.7758\\-61\\-70.58872\\-192.3138\\-61\\-72.54185\\-191.1676\\-61\\-74.49497\\-189.5959\\-61\\-77.32656\\-185.9896\\-61\\-78.00449\\-184.0365\\-61\\-78.13069\\-182.0834\\-61\\-78.13069\\-174.2709\\-61\\-77.85191\\-170.3646\\-61\\-77.4639\\-168.4115\\-61\\-76.39297\\-166.4584\\-61\\-74.49497\\-165.3586\\-61\\-72.54185\\-164.6539\\-61\\-70.58872\\-164.7758\\-61\\-68.6356\\-165.8092\\-61\\-68.03587\\-166.4584\\-61\\-66.5604\\-168.4115\\-61\\-65.22359\\-170.3646\\-61\\-63.69448\\-172.3178\\-61\\-62.35085\\-174.2709\\-61\\-61.76711\\-176.224\\-61\\-59.99055\\-178.1771\\-61\\-59.62952\\-180.1303\\-61\\-58.0083\\-182.0834\\-61\\-57.63719\\-184.0365\\-61\\-55.88152\\-185.9896\\-61\\-54.96373\\-187.8958\\-61\\-53.88462\\-189.8959\\-61\\-53.68668\\-191.849\\-61\\-54.96373\\-193.9123\\-61\\-56.91685\\-194.6969\\-61\\-60.8231\\-194.6928\\-61\\-62.77623\\-194.3434\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "180"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-174.9132\\-61\\-43.23722\\-172.3178\\-61\\-45.34536\\-170.3646\\-61\\-47.15123\\-168.3884\\-61\\-49.67913\\-164.5053\\-61\\-50.87048\\-160.599\\-61\\-51.15222\\-158.6459\\-61\\-52.43921\\-156.6928\\-61\\-53.0106\\-156.3394\\-61\\-54.96373\\-157.7391\\-61\\-56.81017\\-156.6928\\-61\\-55.74394\\-154.7396\\-61\\-54.96373\\-153.9676\\-61\\-53.0106\\-153.3176\\-61\\-51.05748\\-152.114\\-61\\-49.9138\\-150.8334\\-61\\-48.99585\\-148.8803\\-61\\-48.36438\\-146.9271\\-61\\-47.48732\\-144.974\\-61\\-45.98239\\-143.0209\\-61\\-43.24498\\-140.2451\\-61\\-41.29185\\-138.5574\\-61\\-39.33873\\-138.0671\\-61\\-37.3856\\-137.831\\-61\\-35.43248\\-137.7077\\-61\\-33.47935\\-137.7077\\-61\\-31.52623\\-137.8278\\-61\\-29.5731\\-138.0481\\-61\\-27.61998\\-138.4549\\-61\\-25.66685\\-139.7144\\-61\\-23.71373\\-140.2418\\-61\\-22.87996\\-141.0678\\-61\\-21.16826\\-143.0209\\-61\\-20.69566\\-144.974\\-61\\-20.01918\\-146.9271\\-61\\-18.98535\\-150.8334\\-61\\-18.60369\\-152.7865\\-61\\-16.86397\\-154.7396\\-61\\-16.08685\\-156.6928\\-61\\-17.85435\\-157.6738\\-61\\-19.80748\\-157.4983\\-61\\-20.91919\\-158.6459\\-61\\-21.52488\\-160.599\\-61\\-21.52488\\-162.5521\\-61\\-22.72372\\-164.5053\\-61\\-23.39891\\-166.4584\\-61\\-24.64072\\-168.4115\\-61\\-26.24163\\-170.3646\\-61\\-27.61998\\-172.2943\\-61\\-29.5731\\-173.6974\\-61\\-31.52623\\-174.9132\\-61\\-33.47935\\-175.1986\\-61\\-37.3856\\-175.1897\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "181"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-35.43248\\-215.5795\\-61\\-37.3856\\-214.8996\\-61\\-39.33873\\-214.4772\\-61\\-41.29185\\-212.9664\\-61\\-42.44474\\-211.3803\\-61\\-43.68887\\-209.4271\\-61\\-44.36167\\-207.474\\-61\\-45.39754\\-205.5209\\-61\\-46.0315\\-203.5678\\-61\\-45.25555\\-201.6146\\-61\\-43.24498\\-200.5646\\-61\\-41.29185\\-200.8343\\-61\\-39.33873\\-202.5956\\-61\\-38.38377\\-203.5678\\-61\\-37.3856\\-204.8568\\-61\\-34.73739\\-207.474\\-61\\-33.92324\\-209.4271\\-61\\-33.47935\\-209.9617\\-61\\-31.09154\\-213.3334\\-61\\-31.52623\\-213.9037\\-61\\-33.47935\\-215.4481\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "182"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-23.71373\\-221.5727\\-61\\-24.18216\\-221.1459\\-61\\-24.54181\\-219.1928\\-61\\-24.6098\\-217.2396\\-61\\-24.4793\\-215.2865\\-61\\-24.52407\\-213.3334\\-61\\-23.71373\\-211.4905\\-61\\-22.92027\\-213.3334\\-61\\-22.49781\\-215.2865\\-61\\-21.7606\\-216.0166\\-61\\-21.10447\\-217.2396\\-61\\-20.86286\\-219.1928\\-61\\-21.7606\\-220.7816\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "183"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-195.0069\\-61\\53.05957\\-193.8021\\-61\\52.45815\\-191.8149\\-61\\54.17555\\-187.9428\\-61\\55.23944\\-185.9896\\-61\\56.11691\\-184.0365\\-61\\56.25589\\-182.0834\\-61\\56.93406\\-180.1303\\-61\\57.48114\\-178.1771\\-61\\59.14207\\-176.224\\-61\\59.85471\\-174.2709\\-61\\60.01156\\-172.3178\\-61\\60.93021\\-170.3646\\-61\\62.80618\\-168.4115\\-61\\63.64677\\-166.4584\\-61\\64.1769\\-165.8927\\-61\\66.13003\\-164.6407\\-61\\70.03628\\-164.6407\\-61\\71.9894\\-165.3403\\-61\\73.15832\\-166.4584\\-61\\74.51983\\-170.3646\\-61\\75.06605\\-172.3178\\-61\\75.46765\\-174.2709\\-61\\75.58083\\-176.224\\-61\\75.81488\\-178.1771\\-61\\75.82906\\-182.0834\\-61\\75.69621\\-184.0365\\-61\\74.7208\\-185.9896\\-61\\71.9894\\-188.8699\\-61\\68.08315\\-190.7841\\-61\\66.13003\\-192.7209\\-61\\64.1769\\-193.6667\\-61\\62.22377\\-193.9376\\-61\\60.27065\\-194.3672\\-61\\56.3644\\-195.5683\\-61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "184"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-135.0419\\-210.5507\\-59\\-136.5067\\-209.4271\\-59\\-138.5876\\-207.474\\-59\\-140.9012\\-205.1264\\-59\\-141.8737\\-203.5678\\-59\\-142.0104\\-201.6146\\-59\\-142.027\\-199.6615\\-59\\-141.6536\\-197.7084\\-59\\-140.9012\\-196.88\\-59\\-138.9481\\-197.3807\\-59\\-136.995\\-199.1112\\-59\\-135.0419\\-201.2681\\-59\\-133.0887\\-201.6522\\-59\\-131.1356\\-203.2313\\-59\\-130.8651\\-203.5678\\-59\\-130.8101\\-207.474\\-59\\-129.8893\\-209.4271\\-59\\-131.1356\\-211.1492\\-59\\-133.0887\\-210.9094\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "33"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "185"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.6043\\-208.5122\\-59\\-112.6179\\-207.474\\-59\\-113.1045\\-205.5209\\-59\\-113.1805\\-203.5678\\-59\\-114.2911\\-201.6146\\-59\\-115.0759\\-199.6615\\-59\\-115.3362\\-197.7084\\-59\\-114.4863\\-195.7553\\-59\\-112.5298\\-193.8021\\-59\\-113.433\\-191.849\\-59\\-115.5106\\-190.7578\\-59\\-117.4637\\-189.5089\\-59\\-119.4168\\-188.8539\\-59\\-120.2364\\-187.9428\\-59\\-119.9936\\-185.9896\\-59\\-119.4168\\-185.5403\\-59\\-117.4637\\-185.1927\\-59\\-115.5106\\-184.9526\\-59\\-113.5575\\-183.9033\\-59\\-111.6043\\-183.9601\\-59\\-110.202\\-185.9896\\-59\\-109.3364\\-187.9428\\-59\\-109.2742\\-189.8959\\-59\\-109.3473\\-191.849\\-59\\-108.8611\\-193.8021\\-59\\-107.9799\\-195.7553\\-59\\-106.8631\\-197.7084\\-59\\-105.1753\\-201.6146\\-59\\-105.0956\\-203.5678\\-59\\-105.2313\\-205.5209\\-59\\-106.7826\\-207.474\\-59\\-107.6981\\-208.4214\\-59\\-109.6512\\-208.8809\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "186"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-60.8231\\-193.9242\\-59\\-64.72935\\-193.4766\\-59\\-68.73325\\-191.849\\-59\\-72.54185\\-190.45\\-59\\-74.49497\\-188.8944\\-59\\-75.40043\\-187.9428\\-59\\-77.04784\\-185.9896\\-59\\-77.4935\\-184.0365\\-59\\-78.13069\\-182.0834\\-59\\-78.14214\\-176.224\\-59\\-79.05056\\-174.2709\\-59\\-79.00096\\-172.3178\\-59\\-78.13069\\-170.3646\\-59\\-77.95734\\-168.4115\\-59\\-77.23978\\-166.4584\\-59\\-76.4481\\-165.6628\\-59\\-74.49497\\-164.8518\\-59\\-72.54185\\-164.6407\\-59\\-70.58872\\-164.6273\\-59\\-68.6356\\-165.5319\\-59\\-65.85463\\-168.4115\\-59\\-64.05327\\-170.3646\\-59\\-63.37089\\-172.3178\\-59\\-62.26254\\-174.2709\\-59\\-61.74464\\-176.224\\-59\\-60.33482\\-178.1771\\-59\\-59.78285\\-180.1303\\-59\\-58.48304\\-182.0834\\-59\\-57.80425\\-184.0365\\-59\\-56.11235\\-185.9896\\-59\\-55.61985\\-187.9428\\-59\\-54.21898\\-189.8959\\-59\\-54.29005\\-191.849\\-59\\-54.96373\\-192.6463\\-59\\-56.91685\\-193.6801\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "187"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-174.393\\-59\\-39.33873\\-173.5712\\-59\\-43.24498\\-170.9994\\-59\\-44.00669\\-170.3646\\-59\\-45.79081\\-168.4115\\-59\\-47.18998\\-166.4584\\-59\\-49.64565\\-162.5521\\-59\\-50.30957\\-160.599\\-59\\-50.87048\\-158.6459\\-59\\-51.20861\\-156.6928\\-59\\-53.0106\\-155.8919\\-59\\-54.96373\\-157.7391\\-59\\-56.64103\\-156.6928\\-59\\-55.73209\\-154.7396\\-59\\-54.96373\\-153.9345\\-59\\-53.0106\\-153.1384\\-59\\-51.05748\\-151.692\\-59\\-50.36968\\-150.8334\\-59\\-49.10435\\-147.6386\\-59\\-47.89891\\-144.974\\-59\\-45.1981\\-141.4942\\-59\\-42.75381\\-139.1146\\-59\\-41.29185\\-138.0542\\-59\\-39.33873\\-137.804\\-59\\-37.3856\\-136.5122\\-59\\-35.43248\\-136.1602\\-59\\-33.47935\\-136.1602\\-59\\-31.52623\\-136.6472\\-59\\-29.5731\\-137.8757\\-59\\-27.61998\\-138.0357\\-59\\-25.66685\\-138.4346\\-59\\-23.71373\\-139.9702\\-59\\-22.46759\\-141.0678\\-59\\-20.87084\\-143.0209\\-59\\-19.80748\\-145.0895\\-59\\-19.00135\\-146.9271\\-59\\-18.6689\\-150.8334\\-59\\-17.21932\\-152.7865\\-59\\-16.66077\\-154.7396\\-59\\-16.37376\\-156.6928\\-59\\-17.85435\\-157.4137\\-59\\-19.80748\\-157.5443\\-59\\-20.77979\\-158.6459\\-59\\-21.38357\\-160.599\\-59\\-21.52488\\-162.5521\\-59\\-22.72372\\-164.5053\\-59\\-23.53934\\-166.4584\\-59\\-24.70992\\-168.4115\\-59\\-27.61998\\-171.4285\\-59\\-29.5731\\-172.9459\\-59\\-31.52623\\-173.6109\\-59\\-33.47935\\-174.393\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "188"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-35.43248\\-215.557\\-59\\-37.3856\\-214.482\\-59\\-39.33873\\-213.7588\\-59\\-41.29185\\-212.2712\\-59\\-42.16484\\-211.3803\\-59\\-43.80222\\-207.474\\-59\\-44.28257\\-205.5209\\-59\\-44.20285\\-203.5678\\-59\\-43.24498\\-202.2593\\-59\\-41.29185\\-202.282\\-59\\-39.33873\\-204.9941\\-59\\-37.3856\\-207.0719\\-59\\-35.06138\\-209.4271\\-59\\-33.47935\\-211.3564\\-59\\-31.65593\\-213.3334\\-59\\-33.1634\\-215.2865\\-59\\-33.47935\\-215.5103\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "189"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-17.85435\\-222.3654\\-59\\-19.80748\\-219.9523\\-59\\-21.21487\\-219.1928\\-59\\-21.7606\\-218.5301\\-59\\-22.40201\\-217.2396\\-59\\-21.7606\\-216.5663\\-59\\-20.3343\\-217.2396\\-59\\-19.80748\\-217.6656\\-59\\-19.0675\\-219.1928\\-59\\-17.85435\\-220.1495\\-59\\-16.87779\\-221.1459\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "190"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-11.99498\\-231.8804\\-59\\-14.91694\\-228.9584\\-59\\-12.96382\\-227.0053\\-59\\-12.96382\\-225.0521\\-59\\-11.99498\\-224.0833\\-59\\-10.04185\\-224.0833\\-59\\-7.119884\\-227.0053\\-59\\-9.073009\\-228.9584\\-59\\-9.073009\\-230.9115\\-59\\-10.04185\\-231.8804\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "191"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-194.655\\-59\\54.41127\\-193.7432\\-59\\53.42152\\-191.849\\-59\\53.72223\\-189.8959\\-59\\54.41127\\-188.0106\\-59\\56.25589\\-184.0365\\-59\\56.25589\\-182.0834\\-59\\56.51301\\-180.1303\\-59\\57.34096\\-178.1771\\-59\\58.90239\\-176.224\\-59\\59.3246\\-174.2709\\-59\\59.87392\\-172.3178\\-59\\60.20406\\-170.3646\\-59\\61.46481\\-168.4115\\-59\\62.22377\\-167.7098\\-59\\64.1769\\-165.5836\\-59\\66.13003\\-164.6407\\-59\\68.08315\\-164.4387\\-59\\70.03628\\-164.4825\\-59\\71.9894\\-164.8092\\-59\\73.596\\-166.4584\\-59\\74.45621\\-168.4115\\-59\\75.08105\\-170.3646\\-59\\75.58083\\-172.3178\\-59\\75.82906\\-176.224\\-59\\76.44977\\-178.1771\\-59\\76.44977\\-180.1303\\-59\\75.70865\\-182.0834\\-59\\75.0711\\-184.0365\\-59\\73.48476\\-185.9896\\-59\\72.35638\\-187.9428\\-59\\71.9894\\-188.3696\\-59\\69.67355\\-189.8959\\-59\\68.08315\\-190.7702\\-59\\66.13003\\-192.2864\\-59\\62.22377\\-193.5783\\-59\\60.27065\\-193.7794\\-59\\58.31752\\-194.3323\\-59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "192"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-133.0887\\-211.9092\\-57\\-135.0419\\-210.8749\\-57\\-136.995\\-210.166\\-57\\-138.9481\\-208.6972\\-57\\-140.9012\\-206.9713\\-57\\-141.9532\\-205.5209\\-57\\-142.2188\\-203.5678\\-57\\-143.4291\\-201.6146\\-57\\-143.8433\\-199.6615\\-57\\-143.2487\\-197.7084\\-57\\-141.9858\\-195.7553\\-57\\-141.8613\\-193.8021\\-57\\-141.5331\\-191.849\\-57\\-139.8363\\-189.8959\\-57\\-138.9481\\-189.0502\\-57\\-136.995\\-189.5729\\-57\\-136.7132\\-189.8959\\-57\\-137.7153\\-191.849\\-57\\-139.0207\\-193.8021\\-57\\-138.5238\\-195.7553\\-57\\-137.4297\\-197.7084\\-57\\-136.5696\\-199.6615\\-57\\-135.0419\\-201.4402\\-57\\-133.0887\\-201.5339\\-57\\-131.1356\\-202.4664\\-57\\-130.2049\\-203.5678\\-57\\-130.2901\\-205.5209\\-57\\-130.6917\\-207.474\\-57\\-129.8893\\-209.4271\\-57\\-129.3593\\-211.3803\\-57\\-131.1356\\-212.3873\\-57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "193"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.6043\\-207.8464\\-57\\-111.9404\\-207.474\\-57\\-112.6306\\-205.5209\\-57\\-113.1705\\-203.5678\\-57\\-114.0194\\-201.6146\\-57\\-115.2176\\-197.7084\\-57\\-114.7207\\-195.7553\\-57\\-113.5575\\-193.8568\\-57\\-114.0943\\-191.849\\-57\\-116.2735\\-189.8959\\-57\\-116.9594\\-187.9428\\-57\\-113.5575\\-185.6126\\-57\\-111.6043\\-186.1474\\-57\\-110.2068\\-187.9428\\-57\\-109.3473\\-189.8959\\-57\\-109.1982\\-191.849\\-57\\-108.4826\\-193.8021\\-57\\-106.8947\\-195.7553\\-57\\-105.9807\\-197.7084\\-57\\-104.8865\\-199.6615\\-57\\-104.6564\\-201.6146\\-57\\-104.6654\\-203.5678\\-57\\-104.941\\-205.5209\\-57\\-106.6504\\-207.474\\-57\\-107.6981\\-208.5217\\-57\\-109.6512\\-208.9475\\-57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "34"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "194"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-66.68247\\-192.265\\-57\\-70.58872\\-190.7634\\-57\\-72.54185\\-189.7089\\-57\\-74.49497\\-188.8446\\-57\\-75.36571\\-187.9428\\-57\\-76.47081\\-185.9896\\-57\\-77.34399\\-184.0365\\-57\\-78.1194\\-182.0834\\-57\\-78.14214\\-176.224\\-57\\-79.20678\\-174.2709\\-57\\-79.16853\\-172.3178\\-57\\-78.14214\\-170.3646\\-57\\-78.1194\\-168.4115\\-57\\-77.57001\\-166.4584\\-57\\-76.4481\\-165.2931\\-57\\-74.49497\\-164.6539\\-57\\-70.58872\\-164.4387\\-57\\-68.6356\\-165.4673\\-57\\-64.72935\\-169.3261\\-57\\-63.77649\\-170.3646\\-57\\-62.50569\\-172.3178\\-57\\-61.47931\\-176.224\\-57\\-60.43616\\-178.1771\\-57\\-59.79536\\-180.1303\\-57\\-58.63425\\-182.0834\\-57\\-57.83081\\-184.0365\\-57\\-55.8323\\-187.9428\\-57\\-54.97136\\-189.8959\\-57\\-55.83376\\-191.849\\-57\\-56.91685\\-192.692\\-57\\-58.86998\\-193.0844\\-57\\-60.8231\\-193.5904\\-57\\-62.77623\\-193.0551\\-57\\-64.72935\\-192.7195\\-57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "195"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-173.1018\\-57\\-39.08441\\-172.3178\\-57\\-43.24498\\-169.6426\\-57\\-46.21432\\-166.4584\\-57\\-47.65395\\-164.5053\\-57\\-48.46881\\-162.5521\\-57\\-49.65056\\-160.599\\-57\\-50.32877\\-158.6459\\-57\\-50.88309\\-156.6928\\-57\\-51.05748\\-156.4786\\-57\\-53.0106\\-155.855\\-57\\-54.96373\\-157.6985\\-57\\-55.98468\\-156.6928\\-57\\-55.47741\\-154.7396\\-57\\-53.0106\\-152.3706\\-57\\-51.05748\\-150.4149\\-57\\-49.85114\\-148.8803\\-57\\-47.96167\\-144.974\\-57\\-46.70733\\-143.0209\\-57\\-45.89492\\-141.0678\\-57\\-43.24498\\-138.3847\\-57\\-41.29185\\-137.8819\\-57\\-39.33873\\-136.6819\\-57\\-37.3856\\-136.0562\\-57\\-35.43248\\-135.9348\\-57\\-33.47935\\-135.9348\\-57\\-31.52623\\-136.2604\\-57\\-29.5731\\-137.6997\\-57\\-25.66685\\-138.0366\\-57\\-23.71373\\-138.6149\\-57\\-21.13207\\-141.0678\\-57\\-20.57646\\-143.0209\\-57\\-19.05372\\-144.974\\-57\\-18.70448\\-146.9271\\-57\\-18.23138\\-148.8803\\-57\\-17.94909\\-150.8334\\-57\\-16.88687\\-152.7865\\-57\\-16.23353\\-154.7396\\-57\\-17.85435\\-155.9745\\-57\\-19.34602\\-156.6928\\-57\\-19.80748\\-157.2049\\-57\\-20.43937\\-158.6459\\-57\\-20.89491\\-160.599\\-57\\-21.67983\\-162.5521\\-57\\-22.76392\\-164.5053\\-57\\-24.35952\\-166.4584\\-57\\-25.66685\\-168.2596\\-57\\-27.77652\\-170.3646\\-57\\-29.5731\\-171.7172\\-57\\-31.52623\\-172.806\\-57\\-33.47935\\-173.1794\\-57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "196"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-11.99498\\-231.8881\\-57\\-12.97154\\-230.9115\\-57\\-12.95598\\-228.9584\\-57\\-11.00285\\-227.0053\\-57\\-11.00285\\-225.0521\\-57\\-12.97154\\-223.099\\-57\\-11.99498\\-222.1225\\-57\\-7.127726\\-227.0053\\-57\\-7.127726\\-228.9584\\-57\\-10.04185\\-231.8725\\-57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "197"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-192.1346\\-57\\54.19957\\-191.849\\-57\\54.18748\\-189.8959\\-57\\54.98734\\-187.9428\\-57\\55.68832\\-185.9896\\-57\\56.25589\\-184.0365\\-57\\56.25589\\-182.0834\\-57\\57.0339\\-180.1303\\-57\\57.5925\\-178.1771\\-57\\58.94606\\-174.2709\\-57\\59.39807\\-172.3178\\-57\\60.02316\\-170.3646\\-57\\61.25656\\-168.4115\\-57\\64.1769\\-165.4953\\-57\\66.13003\\-164.4387\\-57\\68.08315\\-163.6944\\-57\\70.03628\\-163.8628\\-57\\71.9894\\-164.8308\\-57\\73.5857\\-166.4584\\-57\\74.67495\\-168.4115\\-57\\75.58083\\-170.3646\\-57\\75.70865\\-172.3178\\-57\\75.70865\\-174.2709\\-57\\76.39249\\-176.224\\-57\\76.67413\\-178.1771\\-57\\76.32102\\-180.1303\\-57\\75.69621\\-182.0834\\-57\\74.82825\\-184.0365\\-57\\72.92631\\-185.9896\\-57\\71.78996\\-187.9428\\-57\\70.03628\\-189.7473\\-57\\68.08315\\-190.8575\\-57\\66.13003\\-191.7405\\-57\\64.1769\\-192.2508\\-57\\62.22377\\-193.0542\\-57\\60.27065\\-193.6801\\-57\\56.3644\\-193.7945\\-57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "198"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-135.0419\\-211.7721\\-55\\-136.995\\-210.6419\\-55\\-138.9481\\-210.4731\\-55\\-140.9012\\-208.9244\\-55\\-143.3514\\-205.5209\\-55\\-143.9109\\-203.5678\\-55\\-144.2455\\-199.6615\\-55\\-144.0126\\-197.7084\\-55\\-143.3855\\-195.7553\\-55\\-142.1279\\-193.8021\\-55\\-141.9487\\-191.849\\-55\\-140.9826\\-189.8959\\-55\\-138.9481\\-188.5815\\-55\\-136.995\\-189.4312\\-55\\-136.628\\-189.8959\\-55\\-137.4297\\-191.849\\-55\\-137.7392\\-193.8021\\-55\\-137.4833\\-195.7553\\-55\\-136.8595\\-197.7084\\-55\\-136.8206\\-199.6615\\-55\\-135.0419\\-201.3328\\-55\\-133.0887\\-201.3328\\-55\\-131.1356\\-202.1366\\-55\\-129.1443\\-203.5678\\-55\\-129.4182\\-205.5209\\-55\\-130.3496\\-207.474\\-55\\-129.8893\\-209.4271\\-55\\-128.2376\\-211.3803\\-55\\-129.1825\\-212.4937\\-55\\-131.1356\\-212.8365\\-55\\-133.0887\\-212.5855\\-55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "199"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-109.6512\\-208.9475\\-55\\-111.3686\\-207.474\\-55\\-111.9509\\-205.5209\\-55\\-112.6709\\-203.5678\\-55\\-114.1099\\-201.6146\\-55\\-114.8138\\-199.6615\\-55\\-115.2288\\-197.7084\\-55\\-115.1436\\-195.7553\\-55\\-114.3043\\-193.8021\\-55\\-114.2643\\-191.849\\-55\\-114.6088\\-189.8959\\-55\\-113.5575\\-187.9701\\-55\\-111.6043\\-188.1116\\-55\\-109.6512\\-190.4975\\-55\\-107.7057\\-193.8021\\-55\\-106.4648\\-195.7553\\-55\\-104.8693\\-197.7084\\-55\\-103.2836\\-201.6146\\-55\\-103.348\\-203.5678\\-55\\-104.7596\\-205.5209\\-55\\-105.932\\-207.474\\-55\\-107.6981\\-208.7129\\-55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "200"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-64.72935\\-191.8566\\-55\\-66.68247\\-191.7405\\-55\\-68.6356\\-191.1536\\-55\\-74.49497\\-188.8446\\-55\\-75.36571\\-187.9428\\-55\\-77.33002\\-184.0365\\-55\\-78.1194\\-182.0834\\-55\\-78.14214\\-176.224\\-55\\-79.00096\\-174.2709\\-55\\-78.94744\\-172.3178\\-55\\-78.33464\\-170.3646\\-55\\-78.26579\\-168.4115\\-55\\-77.85993\\-166.4584\\-55\\-76.4481\\-164.961\\-55\\-74.49497\\-164.6407\\-55\\-72.54185\\-163.8838\\-55\\-70.58872\\-163.7176\\-55\\-68.6356\\-165.1108\\-55\\-66.68247\\-166.1635\\-55\\-64.42538\\-168.4115\\-55\\-63.29897\\-170.3646\\-55\\-62.36028\\-172.3178\\-55\\-61.80431\\-174.2709\\-55\\-60.6114\\-176.224\\-55\\-60.44608\\-178.1771\\-55\\-59.82948\\-180.1303\\-55\\-58.83242\\-182.0834\\-55\\-58.02214\\-184.0365\\-55\\-57.6706\\-185.9896\\-55\\-55.94029\\-187.9428\\-55\\-55.7153\\-189.8959\\-55\\-56.91685\\-191.228\\-55\\-58.86998\\-192.4141\\-55\\-60.8231\\-193.0672\\-55\\-62.77623\\-192.7284\\-55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "201"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-171.2701\\-55\\-39.33873\\-170.2398\\-55\\-41.29185\\-169.3176\\-55\\-43.24498\\-168.1295\\-55\\-45.1981\\-166.0771\\-55\\-46.39963\\-164.5053\\-55\\-48.1137\\-162.5521\\-55\\-49.10435\\-160.1422\\-55\\-50.33656\\-156.6928\\-55\\-51.05748\\-155.8731\\-55\\-53.0106\\-155.855\\-55\\-54.96373\\-157.5639\\-55\\-55.75813\\-156.6928\\-55\\-55.07223\\-154.7396\\-55\\-53.77135\\-152.7865\\-55\\-49.90144\\-148.8803\\-55\\-48.86863\\-146.9271\\-55\\-47.96753\\-144.974\\-55\\-46.8047\\-143.0209\\-55\\-46.0111\\-141.0678\\-55\\-43.24498\\-138.2742\\-55\\-41.29185\\-137.6997\\-55\\-39.33873\\-136.2556\\-55\\-37.3856\\-135.9287\\-55\\-33.47935\\-135.8645\\-55\\-31.52623\\-136.0033\\-55\\-29.5731\\-136.5712\\-55\\-27.61998\\-137.6997\\-55\\-25.66685\\-137.8757\\-55\\-23.71373\\-138.2636\\-55\\-20.91425\\-141.0678\\-55\\-19.96906\\-143.0209\\-55\\-18.90974\\-144.974\\-55\\-18.15831\\-146.9271\\-55\\-17.75961\\-148.8803\\-55\\-17.06633\\-150.8334\\-55\\-16.59027\\-152.7865\\-55\\-16.24263\\-154.7396\\-55\\-19.68438\\-156.6928\\-55\\-20.03127\\-158.6459\\-55\\-20.85379\\-160.599\\-55\\-22.49791\\-162.5521\\-55\\-23.0576\\-164.5053\\-55\\-24.7002\\-166.4584\\-55\\-27.61998\\-169.4426\\-55\\-29.5731\\-170.8355\\-55\\-33.47935\\-171.7261\\-55\\-35.43248\\-171.713\\-55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "202"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-25.66685\\-222.1225\\-55\\-26.64341\\-221.1459\\-55\\-26.59939\\-217.2396\\-55\\-25.66685\\-216.3071\\-55\\-23.71373\\-216.3071\\-55\\-20.74001\\-219.1928\\-55\\-20.74001\\-221.1459\\-55\\-21.7606\\-222.1665\\-55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "203"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-193.1212\\-55\\55.10583\\-191.849\\-55\\54.61071\\-189.8959\\-55\\55.29066\\-187.9428\\-55\\56.1406\\-185.9896\\-55\\56.37203\\-182.0834\\-55\\57.25096\\-180.1303\\-55\\58.02456\\-178.1771\\-55\\58.15593\\-176.224\\-55\\58.10582\\-174.2709\\-55\\59.18838\\-172.3178\\-55\\60.01156\\-170.3646\\-55\\61.16964\\-168.4115\\-55\\62.22377\\-166.9561\\-55\\64.1769\\-165.1041\\-55\\66.13003\\-163.6855\\-55\\68.08315\\-163.4792\\-55\\70.03628\\-163.7728\\-55\\73.06748\\-166.4584\\-55\\74.7248\\-168.4115\\-55\\75.68394\\-170.3646\\-55\\75.70865\\-172.3178\\-55\\75.84347\\-174.2709\\-55\\76.39249\\-176.224\\-55\\76.36649\\-178.1771\\-55\\75.81488\\-180.1303\\-55\\75.69621\\-182.0834\\-55\\74.79071\\-184.0365\\-55\\72.92245\\-185.9896\\-55\\71.9894\\-187.7348\\-55\\70.67695\\-189.8959\\-55\\70.03628\\-190.4707\\-55\\68.08315\\-191.2347\\-55\\66.13003\\-191.6373\\-55\\64.1769\\-191.2171\\-55\\60.27065\\-193.543\\-55\\58.31752\\-193.6936\\-55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "204"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-135.0419\\-212.2074\\-53\\-136.995\\-211.1097\\-53\\-138.9481\\-211.0442\\-53\\-140.9012\\-210.745\\-53\\-142.0854\\-209.4271\\-53\\-143.3547\\-207.474\\-53\\-144.0995\\-205.5209\\-53\\-145.1816\\-203.5678\\-53\\-145.8219\\-201.6146\\-53\\-145.8672\\-199.6615\\-53\\-145.2313\\-197.7084\\-53\\-143.9711\\-195.7553\\-53\\-143.4674\\-193.8021\\-53\\-142.2258\\-191.849\\-53\\-141.6968\\-189.8959\\-53\\-140.9012\\-189.123\\-53\\-138.9481\\-188.0521\\-53\\-136.9142\\-189.8959\\-53\\-137.1447\\-193.8021\\-53\\-137.0325\\-195.7553\\-53\\-137.6545\\-197.7084\\-53\\-137.9715\\-199.6615\\-53\\-136.995\\-200.9616\\-53\\-135.0419\\-200.9085\\-53\\-133.0887\\-200.6605\\-53\\-131.1356\\-201.2935\\-53\\-129.1825\\-202.1144\\-53\\-128.0279\\-203.5678\\-53\\-128.4525\\-205.5209\\-53\\-130.1544\\-207.474\\-53\\-129.8316\\-209.4271\\-53\\-129.1825\\-210.0801\\-53\\-127.2293\\-210.9375\\-53\\-125.2762\\-210.9402\\-53\\-123.3231\\-210.6441\\-53\\-121.37\\-210.7017\\-53\\-120.6958\\-211.3803\\-53\\-121.37\\-212.0135\\-53\\-123.3231\\-212.4358\\-53\\-125.2762\\-212.3061\\-53\\-127.2293\\-212.3061\\-53\\-129.1825\\-212.8811\\-53\\-133.0887\\-212.9869\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "205"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-109.6512\\-208.9475\\-53\\-111.3806\\-207.474\\-53\\-111.6271\\-205.5209\\-53\\-112.5428\\-203.5678\\-53\\-113.5575\\-202.4956\\-53\\-114.6672\\-201.6146\\-53\\-116.0944\\-199.6615\\-53\\-115.5632\\-197.7084\\-53\\-115.503\\-195.7553\\-53\\-114.4487\\-193.8021\\-53\\-113.5575\\-191.3711\\-53\\-112.7871\\-189.8959\\-53\\-111.6043\\-189.311\\-53\\-109.6512\\-190.7088\\-53\\-107.6981\\-192.7965\\-53\\-105.745\\-195.1208\\-53\\-105.1141\\-195.7553\\-53\\-102.872\\-199.6615\\-53\\-102.7245\\-201.6146\\-53\\-102.9021\\-203.5678\\-53\\-104.9426\\-207.474\\-53\\-105.745\\-208.3641\\-53\\-107.6981\\-208.9052\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "34"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "206"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-62.77623\\-192.2058\\-53\\-64.72935\\-191.6496\\-53\\-66.68247\\-191.6496\\-53\\-68.6356\\-191.2871\\-53\\-70.58872\\-190.6373\\-53\\-74.49497\\-188.8446\\-53\\-75.36571\\-187.9428\\-53\\-77.33002\\-184.0365\\-53\\-78.1194\\-182.0834\\-53\\-78.15374\\-176.224\\-53\\-78.26579\\-174.2709\\-53\\-78.25262\\-172.3178\\-53\\-79.1396\\-170.3646\\-53\\-79.02975\\-168.4115\\-53\\-77.45142\\-166.4584\\-53\\-76.4481\\-165.4411\\-53\\-72.54185\\-163.665\\-53\\-70.58872\\-163.3898\\-53\\-68.6356\\-163.7537\\-53\\-66.68247\\-165.5366\\-53\\-63.89027\\-168.4115\\-53\\-62.48326\\-170.3646\\-53\\-62.27091\\-172.3178\\-53\\-61.73804\\-174.2709\\-53\\-60.46628\\-176.224\\-53\\-60.45611\\-178.1771\\-53\\-59.65215\\-182.0834\\-53\\-58.53389\\-184.0365\\-53\\-57.98806\\-185.9896\\-53\\-57.23586\\-187.9428\\-53\\-56.19908\\-189.8959\\-53\\-56.91685\\-190.7403\\-53\\-58.86998\\-191.7543\\-53\\-60.8231\\-192.371\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "207"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-35.43248\\-170.7806\\-53\\-37.3856\\-169.6648\\-53\\-39.33873\\-168.8998\\-53\\-41.29185\\-167.7045\\-53\\-43.07736\\-166.4584\\-53\\-45.1981\\-164.2936\\-53\\-47.15123\\-162.2086\\-53\\-48.34203\\-160.599\\-53\\-48.90491\\-158.6459\\-53\\-49.59263\\-156.6928\\-53\\-51.05748\\-155.3539\\-53\\-53.0106\\-155.8491\\-53\\-54.96373\\-157.2903\\-53\\-55.51415\\-156.6928\\-53\\-54.95477\\-154.7396\\-53\\-53.8034\\-152.7865\\-53\\-49.90144\\-148.8803\\-53\\-48.86863\\-146.9271\\-53\\-47.96753\\-144.974\\-53\\-46.8047\\-143.0209\\-53\\-46.0111\\-141.0678\\-53\\-43.24498\\-138.2702\\-53\\-41.29185\\-136.6617\\-53\\-39.33873\\-136.0139\\-53\\-37.3856\\-135.8577\\-53\\-31.52623\\-135.8974\\-53\\-29.5731\\-136.0192\\-53\\-27.61998\\-136.5559\\-53\\-25.66685\\-137.7156\\-53\\-23.71373\\-138.2011\\-53\\-20.86933\\-141.0678\\-53\\-19.64589\\-143.0209\\-53\\-18.85291\\-144.974\\-53\\-17.12565\\-148.8803\\-53\\-16.59027\\-150.8334\\-53\\-15.9091\\-152.7865\\-53\\-18.06577\\-154.7396\\-53\\-19.80748\\-156.8503\\-53\\-20.60268\\-158.6459\\-53\\-21.0464\\-160.599\\-53\\-22.77823\\-162.5521\\-53\\-23.71373\\-163.7438\\-53\\-25.66685\\-166.0102\\-53\\-28.16072\\-168.4115\\-53\\-29.5731\\-169.2493\\-53\\-31.52623\\-169.7077\\-53\\-33.47935\\-170.7806\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "208"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-23.71373\\-224.0756\\-53\\-26.57366\\-221.1459\\-53\\-23.71373\\-218.2162\\-53\\-19.80748\\-218.2162\\-53\\-16.80803\\-221.1459\\-53\\-16.80803\\-223.099\\-53\\-17.85435\\-224.1453\\-53\\-21.7606\\-224.1453\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "209"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-192.6763\\-53\\55.6949\\-191.849\\-53\\55.41756\\-189.8959\\-53\\55.70827\\-187.9428\\-53\\56.25589\\-185.9896\\-53\\56.38711\\-184.0365\\-53\\57.62789\\-180.1303\\-53\\58.15593\\-178.1771\\-53\\58.15593\\-176.224\\-53\\57.45399\\-174.2709\\-53\\57.55581\\-172.3178\\-53\\59.70627\\-170.3646\\-53\\60.74149\\-168.4115\\-53\\61.29929\\-166.4584\\-53\\62.22377\\-165.4679\\-53\\64.1769\\-163.7901\\-53\\66.13003\\-163.3757\\-53\\68.08315\\-163.5503\\-53\\70.03628\\-164.2462\\-53\\71.9894\\-165.7525\\-53\\74.67361\\-168.4115\\-53\\75.68394\\-170.3646\\-53\\75.82906\\-172.3178\\-53\\76.53417\\-174.2709\\-53\\76.62685\\-176.224\\-53\\75.94783\\-178.1771\\-53\\75.70865\\-180.1303\\-53\\75.69621\\-182.0834\\-53\\74.85429\\-184.0365\\-53\\73.3884\\-185.9896\\-53\\72.60182\\-187.9428\\-53\\71.0018\\-189.8959\\-53\\70.03628\\-190.8001\\-53\\68.08315\\-191.5235\\-53\\66.13003\\-191.6252\\-53\\64.1769\\-191.0073\\-53\\62.22377\\-190.96\\-53\\60.27065\\-193.0219\\-53\\58.31752\\-193.6667\\-53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "210"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-135.0419\\-213.4621\\-51\\-136.995\\-212.6192\\-51\\-140.9012\\-212.5855\\-51\\-142.8544\\-210.9456\\-51\\-143.9466\\-209.4271\\-51\\-144.4405\\-207.474\\-51\\-145.8763\\-205.5209\\-51\\-146.0845\\-201.6146\\-51\\-146.0845\\-199.6615\\-51\\-145.6966\\-197.7084\\-51\\-144.186\\-195.7553\\-51\\-143.9711\\-193.8021\\-51\\-143.3656\\-191.849\\-51\\-140.9012\\-189.2783\\-51\\-138.9481\\-188.8579\\-51\\-138.1103\\-189.8959\\-51\\-137.9847\\-195.7553\\-51\\-138.0536\\-197.7084\\-51\\-139.2842\\-199.6615\\-51\\-138.3048\\-201.6146\\-51\\-136.995\\-202.3931\\-51\\-135.7056\\-201.6146\\-51\\-135.0419\\-200.9509\\-51\\-133.0887\\-200.1668\\-51\\-129.1825\\-200.6931\\-51\\-128.2108\\-201.6146\\-51\\-127.9027\\-203.5678\\-51\\-128.5331\\-205.5209\\-51\\-130.037\\-207.474\\-51\\-129.1825\\-209.2729\\-51\\-127.2293\\-210.1714\\-51\\-125.2762\\-210.2166\\-51\\-123.3231\\-209.898\\-51\\-121.37\\-209.1123\\-51\\-119.0275\\-211.3803\\-51\\-119.4168\\-211.8535\\-51\\-121.37\\-212.9973\\-51\\-123.3231\\-213.1339\\-51\\-131.1356\\-213.198\\-51\\-133.0887\\-214.0516\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "211"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.6043\\-208.052\\-51\\-112.1131\\-207.474\\-51\\-112.6101\\-205.5209\\-51\\-113.6607\\-203.5678\\-51\\-115.5106\\-202.5954\\-51\\-116.549\\-201.6146\\-51\\-116.6635\\-199.6615\\-51\\-116.5232\\-195.7553\\-51\\-115.5106\\-194.3557\\-51\\-113.5575\\-192.8479\\-51\\-111.6043\\-190.7035\\-51\\-109.6512\\-190.7993\\-51\\-108.4898\\-191.849\\-51\\-105.745\\-194.529\\-51\\-103.7918\\-196.5691\\-51\\-102.9171\\-197.7084\\-51\\-101.404\\-201.6146\\-51\\-102.2257\\-203.5678\\-51\\-102.8901\\-205.5209\\-51\\-105.745\\-208.4792\\-51\\-107.6981\\-208.9652\\-51\\-109.6512\\-209.0806\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "212"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-60.8231\\-191.8566\\-51\\-62.77623\\-191.7136\\-51\\-68.6356\\-191.5785\\-51\\-70.58872\\-191.2276\\-51\\-72.54185\\-190.5129\\-51\\-74.49497\\-188.8896\\-51\\-75.45644\\-187.9428\\-51\\-76.59671\\-185.9896\\-51\\-78.1194\\-182.0834\\-51\\-78.14214\\-180.1303\\-51\\-78.42393\\-176.224\\-51\\-78.14214\\-172.3178\\-51\\-79.26781\\-170.3646\\-51\\-79.18523\\-168.4115\\-51\\-76.4481\\-165.6338\\-51\\-74.49497\\-163.9279\\-51\\-70.58872\\-162.909\\-51\\-68.6356\\-163.3583\\-51\\-66.68247\\-164.0893\\-51\\-66.26395\\-164.5053\\-51\\-65.10349\\-166.4584\\-51\\-64.72935\\-166.905\\-51\\-62.77623\\-169.908\\-51\\-62.3795\\-170.3646\\-51\\-61.94886\\-172.3178\\-51\\-61.33678\\-174.2709\\-51\\-60.46628\\-176.224\\-51\\-60.46628\\-178.1771\\-51\\-60.36113\\-180.1303\\-51\\-59.79667\\-182.0834\\-51\\-58.67054\\-184.0365\\-51\\-58.54446\\-185.9896\\-51\\-57.81436\\-187.9428\\-51\\-56.91685\\-189.9428\\-51\\-58.86998\\-191.7968\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "213"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-35.43248\\-169.2139\\-51\\-37.3856\\-168.0648\\-51\\-39.33873\\-167.3146\\-51\\-41.29185\\-166.9552\\-51\\-43.24498\\-165.5245\\-51\\-46.20753\\-162.5521\\-51\\-47.51822\\-160.599\\-51\\-48.3465\\-158.6459\\-51\\-48.79212\\-156.6928\\-51\\-49.10435\\-155.9403\\-51\\-50.15067\\-154.7396\\-51\\-51.05748\\-154.3353\\-51\\-53.0106\\-155.8833\\-51\\-54.76361\\-154.7396\\-51\\-53.75236\\-152.7865\\-51\\-49.90144\\-148.8803\\-51\\-48.77669\\-146.9271\\-51\\-47.90443\\-144.974\\-51\\-46.8047\\-143.0209\\-51\\-46.0111\\-141.0678\\-51\\-43.24498\\-138.1816\\-51\\-41.29185\\-136.2768\\-51\\-39.33873\\-135.7466\\-51\\-37.3856\\-135.6614\\-51\\-31.52623\\-135.6614\\-51\\-27.61998\\-136.0139\\-51\\-25.66685\\-136.5932\\-51\\-23.71373\\-138.0176\\-51\\-21.7606\\-138.8197\\-51\\-21.46763\\-139.1146\\-51\\-20.54351\\-141.0678\\-51\\-19.0253\\-143.0209\\-51\\-18.55331\\-144.974\\-51\\-17.94909\\-146.9271\\-51\\-16.94127\\-148.8803\\-51\\-15.23051\\-150.8334\\-51\\-14.79014\\-152.7865\\-51\\-15.90123\\-154.1915\\-51\\-17.85435\\-153.4819\\-51\\-19.55999\\-154.7396\\-51\\-19.87406\\-156.6928\\-51\\-20.78404\\-158.6459\\-51\\-22.47309\\-160.599\\-51\\-23.71373\\-162.2201\\-51\\-28.10038\\-166.4584\\-51\\-29.5731\\-167.3449\\-51\\-31.52623\\-167.9436\\-51\\-32.06964\\-168.4115\\-51\\-33.47935\\-169.2245\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "5"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "214"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-27.61998\\-229.8381\\-51\\-28.49972\\-228.9584\\-51\\-28.49972\\-225.0521\\-51\\-27.61998\\-224.1724\\-51\\-24.7871\\-227.0053\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "215"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-19.80748\\-227.9818\\-51\\-24.69029\\-223.099\\-51\\-24.59347\\-219.1928\\-51\\-23.71373\\-218.313\\-51\\-19.80748\\-218.2162\\-51\\-17.85435\\-220.1693\\-51\\-15.90123\\-220.1693\\-51\\-12.87472\\-223.099\\-51\\-12.87472\\-225.0521\\-51\\-15.90123\\-228.0786\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "34"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "216"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.1774\\-191.849\\-51\\56.08257\\-189.8959\\-51\\56.28363\\-185.9896\\-51\\57.00687\\-184.0365\\-51\\58.05844\\-180.1303\\-51\\58.15593\\-176.224\\-51\\57.13308\\-172.3178\\-51\\57.65618\\-170.3646\\-51\\59.43569\\-168.4115\\-51\\60.83258\\-166.4584\\-51\\61.63674\\-164.5053\\-51\\62.22377\\-163.9279\\-51\\64.1769\\-163.3614\\-51\\66.13003\\-163.0434\\-51\\70.03628\\-165.8811\\-51\\71.9894\\-167.241\\-51\\73.94253\\-168.2121\\-51\\75.55913\\-170.3646\\-51\\76.4794\\-172.3178\\-51\\77.08388\\-174.2709\\-51\\77.07806\\-176.224\\-51\\76.59247\\-178.1771\\-51\\75.84347\\-180.1303\\-51\\75.81488\\-182.0834\\-51\\75.33372\\-184.0365\\-51\\74.49974\\-185.9896\\-51\\72.21037\\-189.8959\\-51\\70.03628\\-191.2793\\-51\\68.08315\\-191.6496\\-51\\66.13003\\-191.6133\\-51\\64.1769\\-191.0099\\-51\\62.22377\\-190.9005\\-51\\60.27065\\-192.8404\\-51\\58.31752\\-193.7945\\-51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "217"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-140.9012\\-214.4141\\-49\\-142.4306\\-213.3334\\-49\\-144.0143\\-211.3803\\-49\\-145.144\\-209.4271\\-49\\-145.9674\\-207.474\\-49\\-146.0911\\-205.5209\\-49\\-146.1181\\-199.6615\\-49\\-146.0105\\-197.7084\\-49\\-145.3449\\-195.7553\\-49\\-144.0933\\-193.8021\\-49\\-143.2545\\-191.849\\-49\\-142.8544\\-191.482\\-49\\-140.9012\\-191.543\\-49\\-140.5847\\-191.849\\-49\\-139.3545\\-195.7553\\-49\\-138.3062\\-197.7084\\-49\\-136.995\\-199.5038\\-49\\-135.0419\\-198.5107\\-49\\-133.0887\\-198.7993\\-49\\-131.1356\\-199.8231\\-49\\-129.1825\\-200.5269\\-49\\-128.0783\\-201.6146\\-49\\-128.052\\-203.5678\\-49\\-129.0701\\-207.474\\-49\\-127.2293\\-208.9185\\-49\\-123.3231\\-209.1342\\-49\\-121.37\\-209.1566\\-49\\-119.4168\\-210.3402\\-49\\-118.3663\\-211.3803\\-49\\-119.4168\\-212.8451\\-49\\-121.37\\-214.1057\\-49\\-123.3231\\-214.4616\\-49\\-131.1356\\-214.472\\-49\\-133.0887\\-214.7016\\-49\\-135.0419\\-214.6372\\-49\\-136.995\\-214.4375\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "218"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.6043\\-209.451\\-49\\-112.8397\\-207.474\\-49\\-113.2645\\-205.5209\\-49\\-114.909\\-203.5678\\-49\\-115.5106\\-203.1093\\-49\\-116.9275\\-201.6146\\-49\\-117.9939\\-199.6615\\-49\\-118.3699\\-197.7084\\-49\\-118.0019\\-195.7553\\-49\\-117.4637\\-195.1914\\-49\\-115.3938\\-193.8021\\-49\\-113.5575\\-192.9176\\-49\\-111.6043\\-191.4051\\-49\\-109.6512\\-191.2793\\-49\\-108.1864\\-191.849\\-49\\-105.745\\-193.1353\\-49\\-103.1083\\-195.7553\\-49\\-101.8387\\-198.1536\\-49\\-101.2594\\-199.6615\\-49\\-100.8795\\-201.6146\\-49\\-100.8792\\-203.5678\\-49\\-102.1748\\-205.5209\\-49\\-105.745\\-208.5122\\-49\\-107.6981\\-209.091\\-49\\-109.6512\\-210.1992\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "219"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-60.8231\\-192.5511\\-49\\-62.77623\\-191.7543\\-49\\-64.72935\\-191.6496\\-49\\-68.6356\\-191.6496\\-49\\-70.58872\\-191.5235\\-49\\-72.54185\\-190.8153\\-49\\-74.49497\\-189.3906\\-49\\-76.4481\\-188.42\\-49\\-76.89199\\-187.9428\\-49\\-77.51467\\-185.9896\\-49\\-77.75189\\-184.0365\\-49\\-78.33464\\-182.0834\\-49\\-78.27915\\-180.1303\\-49\\-79.11543\\-178.1771\\-49\\-79.38596\\-176.224\\-49\\-79.1409\\-174.2709\\-49\\-78.40122\\-172.5335\\-49\\-78.40122\\-172.1393\\-49\\-79.27597\\-170.3646\\-49\\-79.17394\\-168.4115\\-49\\-76.4481\\-165.6577\\-49\\-74.49497\\-164.1383\\-49\\-70.58872\\-162.834\\-49\\-68.6356\\-162.7759\\-49\\-66.68247\\-163.5287\\-49\\-65.77196\\-164.5053\\-49\\-64.40383\\-166.4584\\-49\\-63.74791\\-168.4115\\-49\\-62.28213\\-170.3646\\-49\\-61.76648\\-172.3178\\-49\\-60.56401\\-174.2709\\-49\\-60.46628\\-176.224\\-49\\-60.46628\\-178.1771\\-49\\-60.36113\\-180.1303\\-49\\-59.76978\\-182.0834\\-49\\-58.67054\\-184.0365\\-49\\-58.65827\\-185.9896\\-49\\-58.10835\\-187.9428\\-49\\-57.69136\\-189.8959\\-49\\-58.05433\\-191.849\\-49\\-58.86998\\-192.574\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "220"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-35.43248\\-167.3151\\-49\\-37.3856\\-166.0563\\-49\\-39.33873\\-165.4334\\-49\\-41.29185\\-165.3846\\-49\\-42.62292\\-164.5053\\-49\\-45.1981\\-161.9878\\-49\\-46.34792\\-160.599\\-49\\-47.41031\\-158.6459\\-49\\-47.80398\\-156.6928\\-49\\-48.38117\\-154.7396\\-49\\-49.10435\\-153.9337\\-49\\-51.05748\\-154.4191\\-49\\-53.0106\\-156.5533\\-49\\-54.07902\\-154.7396\\-49\\-53.37759\\-152.7865\\-49\\-51.83551\\-150.8334\\-49\\-49.8888\\-148.8803\\-49\\-48.25538\\-146.9271\\-49\\-47.32561\\-144.974\\-49\\-46.8047\\-143.0209\\-49\\-46.07939\\-141.0678\\-49\\-44.56957\\-139.1146\\-49\\-43.25311\\-137.1615\\-49\\-41.2841\\-135.2084\\-49\\-39.33873\\-134.0736\\-49\\-35.43248\\-134.009\\-49\\-31.52623\\-134.1152\\-49\\-29.5731\\-134.6349\\-49\\-27.61998\\-135.8227\\-49\\-25.66685\\-136.2821\\-49\\-23.71373\\-137.7686\\-49\\-21.7606\\-138.2191\\-49\\-20.87322\\-139.1146\\-49\\-19.74089\\-141.0678\\-49\\-18.09007\\-144.974\\-49\\-17.90653\\-146.9271\\-49\\-16.60252\\-148.8803\\-49\\-15.90123\\-149.4576\\-49\\-14.63715\\-150.8334\\-49\\-14.44017\\-152.7865\\-49\\-15.90123\\-154.548\\-49\\-17.85435\\-153.205\\-49\\-19.55828\\-154.7396\\-49\\-20.60648\\-156.6928\\-49\\-20.9933\\-158.6459\\-49\\-23.71373\\-161.6262\\-49\\-25.66685\\-163.3074\\-49\\-27.61998\\-164.1438\\-49\\-29.5731\\-165.4776\\-49\\-31.52623\\-165.9884\\-49\\-33.47935\\-167.3338\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "221"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-17.85435\\-230.0652\\-49\\-19.80748\\-228.112\\-49\\-20.78404\\-227.0053\\-49\\-24.69029\\-223.099\\-49\\-24.69029\\-221.1459\\-49\\-21.7606\\-218.3464\\-49\\-19.80748\\-218.3464\\-49\\-17.85435\\-220.1693\\-49\\-15.90123\\-220.1693\\-49\\-13.9481\\-222.1225\\-49\\-11.99498\\-222.1225\\-49\\-11.01841\\-223.099\\-49\\-10.88821\\-225.0521\\-49\\-15.90123\\-230.0652\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "222"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "19.25502\\-233.2251\\-49\\18.75305\\-232.8646\\-49\\18.07058\\-230.9115\\-49\\17.81223\\-227.0053\\-49\\19.25502\\-226.0536\\-49\\20.80803\\-227.0053\\-49\\21.60002\\-228.9584\\-49\\20.3627\\-230.9115\\-49\\19.63595\\-232.8646\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "223"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "58.31752\\-194.5622\\-49\\57.41286\\-193.8021\\-49\\56.25589\\-191.849\\-49\\56.25589\\-187.9428\\-49\\56.40196\\-185.9896\\-49\\58.07004\\-182.0834\\-49\\58.15593\\-180.1303\\-49\\58.15593\\-176.224\\-49\\58.0818\\-174.2709\\-49\\57.61577\\-172.3178\\-49\\57.72518\\-170.3646\\-49\\58.87164\\-168.4115\\-49\\59.42592\\-166.4584\\-49\\61.12089\\-164.5053\\-49\\62.22377\\-163.5579\\-49\\64.1769\\-162.8987\\-49\\66.13003\\-163.83\\-49\\66.76192\\-164.5053\\-49\\66.96124\\-166.4584\\-49\\67.93011\\-168.4115\\-49\\70.03628\\-170.3262\\-49\\71.9894\\-170.2545\\-49\\73.94253\\-169.7119\\-49\\75.89565\\-171.4604\\-49\\76.67176\\-172.3178\\-49\\77.55581\\-174.2709\\-49\\77.55581\\-176.224\\-49\\77.17546\\-178.1771\\-49\\76.64561\\-180.1303\\-49\\76.49274\\-184.0365\\-49\\75.34943\\-185.9896\\-49\\74.58279\\-187.9428\\-49\\73.43426\\-189.8959\\-49\\71.9894\\-191.3754\\-49\\70.03628\\-191.7136\\-49\\66.13003\\-191.6373\\-49\\64.1769\\-191.3522\\-49\\62.22377\\-192.0607\\-49\\60.27065\\-194.0016\\-49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "224"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-142.8544\\-213.9684\\-47\\-143.5072\\-213.3334\\-47\\-145.1064\\-211.3803\\-47\\-145.9692\\-209.4271\\-47\\-146.2144\\-205.5209\\-47\\-146.2305\\-203.5678\\-47\\-146.1181\\-201.6146\\-47\\-146.0977\\-197.7084\\-47\\-145.5835\\-195.7553\\-47\\-142.8544\\-192.5765\\-47\\-140.9012\\-194.3389\\-47\\-139.7873\\-195.7553\\-47\\-138.9481\\-196.6263\\-47\\-136.995\\-198.3187\\-47\\-135.0419\\-198.4646\\-47\\-129.1825\\-200.4978\\-47\\-128.1327\\-201.6146\\-47\\-127.3648\\-203.5678\\-47\\-127.6337\\-205.5209\\-47\\-126.4914\\-207.474\\-47\\-125.2762\\-208.4924\\-47\\-123.3231\\-209.9583\\-47\\-121.37\\-210.5641\\-47\\-119.4168\\-210.6977\\-47\\-117.4637\\-210.7174\\-47\\-116.4236\\-211.3803\\-47\\-116.2162\\-213.3334\\-47\\-117.4637\\-214.3965\\-47\\-119.4168\\-214.5451\\-47\\-121.37\\-214.8996\\-47\\-123.3231\\-214.9935\\-47\\-125.2762\\-214.9095\\-47\\-131.1356\\-214.9195\\-47\\-133.0887\\-215.0995\\-47\\-135.0419\\-215.1644\\-47\\-136.995\\-214.9935\\-47\\-140.9012\\-214.8996\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "225"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.6043\\-210.7452\\-47\\-112.9906\\-209.4271\\-47\\-113.358\\-207.474\\-47\\-114.0014\\-205.5209\\-47\\-115.0194\\-203.5678\\-47\\-116.4782\\-201.6146\\-47\\-118.2196\\-199.6615\\-47\\-118.4106\\-197.7084\\-47\\-117.7567\\-195.7553\\-47\\-115.4994\\-193.8021\\-47\\-113.5575\\-192.9268\\-47\\-111.6043\\-191.6496\\-47\\-109.6512\\-191.5899\\-47\\-107.6981\\-191.6874\\-47\\-105.745\\-192.7222\\-47\\-102.5953\\-195.7553\\-47\\-100.8938\\-197.7084\\-47\\-100.5909\\-199.6615\\-47\\-100.1447\\-201.6146\\-47\\-100.3593\\-203.5678\\-47\\-100.9313\\-205.5209\\-47\\-103.7918\\-208.2445\\-47\\-105.745\\-208.7511\\-47\\-107.6981\\-210.1827\\-47\\-109.6512\\-210.7073\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "226"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-76.4481\\-192.0105\\-47\\-76.62959\\-191.849\\-47\\-77.47892\\-189.8959\\-47\\-78.40122\\-188.4465\\-47\\-78.97308\\-187.9428\\-47\\-80.34634\\-185.9896\\-47\\-79.50335\\-184.0365\\-47\\-79.51012\\-182.0834\\-47\\-79.24345\\-180.1303\\-47\\-79.29966\\-178.1771\\-47\\-79.79242\\-176.224\\-47\\-79.10923\\-172.3178\\-47\\-78.62502\\-168.4115\\-47\\-77.20924\\-166.4584\\-47\\-76.4481\\-165.6972\\-47\\-74.33746\\-164.5053\\-47\\-72.54185\\-163.6985\\-47\\-70.58872\\-162.9733\\-47\\-68.6356\\-161.837\\-47\\-66.68247\\-161.5712\\-47\\-65.4269\\-162.5521\\-47\\-64.96671\\-164.5053\\-47\\-64.2293\\-166.4584\\-47\\-63.13203\\-168.4115\\-47\\-62.77623\\-168.7237\\-47\\-61.64907\\-170.3646\\-47\\-61.23204\\-172.3178\\-47\\-60.46628\\-174.2709\\-47\\-60.44608\\-178.1771\\-47\\-59.43191\\-182.0834\\-47\\-58.65827\\-184.0365\\-47\\-58.65827\\-185.9896\\-47\\-58.55516\\-187.9428\\-47\\-58.1184\\-189.8959\\-47\\-58.21041\\-191.849\\-47\\-58.86998\\-192.5857\\-47\\-60.8231\\-193.1529\\-47\\-62.77623\\-192.3284\\-47\\-64.72935\\-191.6496\\-47\\-68.6356\\-191.9041\\-47\\-70.58872\\-191.7682\\-47\\-72.54185\\-191.3933\\-47\\-74.49497\\-191.2408\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "227"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-165.0415\\-47\\-39.33873\\-163.7946\\-47\\-41.29185\\-163.4651\\-47\\-42.71424\\-162.5521\\-47\\-44.69606\\-160.599\\-47\\-45.86153\\-158.6459\\-47\\-46.47791\\-156.6928\\-47\\-47.53309\\-154.7396\\-47\\-49.10435\\-153.3854\\-47\\-51.03441\\-154.7396\\-47\\-52.46077\\-156.6928\\-47\\-53.0106\\-157.0992\\-47\\-53.4917\\-156.6928\\-47\\-53.87811\\-154.7396\\-47\\-53.04816\\-152.7865\\-47\\-51.83551\\-150.8334\\-47\\-49.88238\\-148.8803\\-47\\-48.08731\\-146.9271\\-47\\-47.02916\\-144.974\\-47\\-46.83641\\-143.0209\\-47\\-46.53362\\-141.0678\\-47\\-45.73436\\-139.1146\\-47\\-43.24498\\-135.3735\\-47\\-41.29185\\-133.955\\-47\\-39.33873\\-132.8108\\-47\\-37.3856\\-132.2275\\-47\\-35.43248\\-132.2096\\-47\\-33.47935\\-132.7887\\-47\\-31.52623\\-133.6992\\-47\\-29.5731\\-133.9317\\-47\\-27.61998\\-134.6122\\-47\\-25.66685\\-135.8403\\-47\\-23.71373\\-136.4476\\-47\\-21.7606\\-137.9268\\-47\\-20.40307\\-139.1146\\-47\\-18.9605\\-141.0678\\-47\\-18.54691\\-143.0209\\-47\\-17.94909\\-144.974\\-47\\-17.74504\\-146.9271\\-47\\-16.10177\\-148.8803\\-47\\-14.04966\\-150.8334\\-47\\-15.90123\\-152.4748\\-47\\-17.85435\\-153.0108\\-47\\-18.91045\\-154.7396\\-47\\-20.69234\\-156.6928\\-47\\-21.33523\\-158.6459\\-47\\-22.86349\\-160.599\\-47\\-23.71373\\-161.3976\\-47\\-25.66685\\-161.8396\\-47\\-27.61998\\-163.6109\\-47\\-29.5731\\-164.6669\\-47\\-31.52623\\-165.1683\\-47\\-33.47935\\-165.4565\\-47\\-35.43248\\-165.4016\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "228"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-17.85435\\-232.0486\\-47\\-18.83091\\-230.9115\\-47\\-20.78404\\-228.9584\\-47\\-20.78404\\-227.0053\\-47\\-23.71373\\-224.0756\\-47\\-24.85082\\-223.099\\-47\\-24.52976\\-221.1459\\-47\\-23.71373\\-220.3298\\-47\\-21.7606\\-220.1693\\-47\\-19.80748\\-220.1693\\-47\\-17.85435\\-220.3298\\-47\\-15.90123\\-220.3298\\-47\\-13.9481\\-222.1225\\-47\\-11.99498\\-222.283\\-47\\-9.065289\\-225.0521\\-47\\-10.85788\\-227.0053\\-47\\-10.85788\\-230.9115\\-47\\-11.99498\\-232.0486\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "229"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "19.25502\\-234.0953\\-47\\17.56823\\-232.8646\\-47\\17.46087\\-227.0053\\-47\\19.25502\\-226.0162\\-47\\21.20815\\-227.8363\\-47\\22.19295\\-228.9584\\-47\\22.2507\\-230.9115\\-47\\21.2314\\-232.8646\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "230"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "58.31752\\-195.2386\\-47\\56.82915\\-193.8021\\-47\\56.25589\\-191.849\\-47\\56.28363\\-187.9428\\-47\\57.70717\\-184.0365\\-47\\58.01154\\-182.0834\\-47\\58.01154\\-180.1303\\-47\\58.15593\\-178.1771\\-47\\58.15593\\-174.2709\\-47\\57.9458\\-170.3646\\-47\\58.12919\\-168.4115\\-47\\58.83121\\-166.4584\\-47\\57.72034\\-164.5053\\-47\\56.3644\\-163.4523\\-47\\55.48389\\-162.5521\\-47\\56.3644\\-161.6668\\-47\\58.31752\\-161.5954\\-47\\60.36972\\-162.5521\\-47\\62.22377\\-163.2184\\-47\\64.1769\\-162.8227\\-47\\65.42828\\-164.5053\\-47\\65.48069\\-166.4584\\-47\\67.14334\\-168.4115\\-47\\70.03628\\-171.4226\\-47\\71.9894\\-171.3196\\-47\\73.94253\\-170.4601\\-47\\75.89565\\-171.5207\\-47\\76.68421\\-172.3178\\-47\\77.75404\\-174.2709\\-47\\77.90874\\-176.224\\-47\\78.61651\\-178.1771\\-47\\78.25369\\-180.1303\\-47\\77.26945\\-182.0834\\-47\\77.21005\\-184.0365\\-47\\76.8479\\-185.9896\\-47\\76.72197\\-187.9428\\-47\\75.89565\\-189.7689\\-47\\74.80606\\-191.849\\-47\\73.94253\\-192.8256\\-47\\71.9894\\-193.0971\\-47\\70.03628\\-192.7562\\-47\\68.08315\\-191.9432\\-47\\64.1769\\-191.6252\\-47\\62.22377\\-192.6102\\-47\\60.27065\\-194.5308\\-47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "62"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "231"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-136.995\\-215.7574\\-45\\-138.9481\\-215.0047\\-45\\-140.9012\\-214.9935\\-45\\-142.8544\\-214.0375\\-45\\-145.4927\\-211.3803\\-45\\-146.1987\\-209.4271\\-45\\-146.3447\\-207.474\\-45\\-147.2874\\-205.5209\\-45\\-147.3476\\-203.5678\\-45\\-146.1321\\-201.6146\\-45\\-146.1181\\-197.7084\\-45\\-145.2138\\-195.7553\\-45\\-144.8075\\-195.3938\\-45\\-142.8544\\-194.9912\\-45\\-141.3784\\-195.7553\\-45\\-136.995\\-198.3577\\-45\\-135.0419\\-198.9842\\-45\\-133.0887\\-200.2388\\-45\\-131.1356\\-200.4993\\-45\\-129.1825\\-200.8805\\-45\\-128.5911\\-201.6146\\-45\\-127.7706\\-203.5678\\-45\\-126.3638\\-205.5209\\-45\\-124.0407\\-209.4271\\-45\\-123.3231\\-210.118\\-45\\-121.37\\-210.7805\\-45\\-119.4168\\-210.8749\\-45\\-117.4637\\-210.7588\\-45\\-115.5106\\-210.2021\\-45\\-114.8242\\-209.4271\\-45\\-113.9237\\-205.5209\\-45\\-114.6131\\-203.5678\\-45\\-116.3058\\-201.6146\\-45\\-118.229\\-199.6615\\-45\\-118.3634\\-197.7084\\-45\\-117.4637\\-196.2249\\-45\\-115.5106\\-193.979\\-45\\-113.5575\\-192.9268\\-45\\-111.6043\\-191.6746\\-45\\-107.6981\\-191.6496\\-45\\-105.745\\-192.6056\\-45\\-103.7918\\-193.9386\\-45\\-101.8387\\-195.054\\-45\\-101.1337\\-195.7553\\-45\\-98.94222\\-199.6615\\-45\\-98.90456\\-201.6146\\-45\\-99.37321\\-203.5678\\-45\\-100.1916\\-205.5209\\-45\\-102.4447\\-207.474\\-45\\-103.7918\\-208.519\\-45\\-105.745\\-209.091\\-45\\-107.6981\\-210.4579\\-45\\-109.6512\\-210.9007\\-45\\-111.6043\\-212.0517\\-45\\-113.5575\\-212.5196\\-45\\-115.5106\\-214.2445\\-45\\-119.4168\\-216.0081\\-45\\-121.37\\-216.4019\\-45\\-125.2762\\-215.2945\\-45\\-131.1356\\-215.3103\\-45\\-133.0887\\-216.0538\\-45\\-135.0419\\-216.3777\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "232"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.2606\\-202.4949\\-45\\-85.56919\\-201.6146\\-45\\-85.19905\\-199.6615\\-45\\-82.30747\\-196.8648\\-45\\-81.41229\\-197.7084\\-45\\-81.85449\\-199.6615\\-45\\-83.37642\\-201.6146\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "233"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-78.40122\\-192.1607\\-45\\-78.69419\\-191.849\\-45\\-79.20146\\-189.8959\\-45\\-80.35435\\-188.3587\\-45\\-82.43137\\-185.9896\\-45\\-83.16133\\-184.0365\\-45\\-82.5045\\-182.0834\\-45\\-80.86704\\-180.1303\\-45\\-80.35435\\-179.38\\-45\\-79.7971\\-178.1771\\-45\\-80.25961\\-176.224\\-45\\-80.01826\\-174.2709\\-45\\-79.21117\\-172.3178\\-45\\-78.06071\\-170.3646\\-45\\-77.43903\\-168.4115\\-45\\-76.64754\\-166.4584\\-45\\-74.49497\\-164.8586\\-45\\-72.54185\\-164.0893\\-45\\-70.58872\\-163.5065\\-45\\-68.6356\\-161.7344\\-45\\-66.68247\\-161.0054\\-45\\-64.72935\\-161.4458\\-45\\-63.91251\\-162.5521\\-45\\-64.25605\\-164.5053\\-45\\-63.57355\\-166.4584\\-45\\-61.29522\\-168.4115\\-45\\-60.64872\\-170.3646\\-45\\-60.46628\\-174.2709\\-45\\-60.45611\\-178.1771\\-45\\-59.70385\\-182.0834\\-45\\-58.65827\\-184.0365\\-45\\-58.65827\\-187.9428\\-45\\-58.42338\\-189.8959\\-45\\-58.3669\\-191.849\\-45\\-58.86998\\-192.4594\\-45\\-60.8231\\-192.719\\-45\\-62.77623\\-191.1998\\-45\\-64.72935\\-191.8263\\-45\\-66.68247\\-192.714\\-45\\-68.6356\\-193.2197\\-45\\-70.58872\\-192.6744\\-45\\-72.54185\\-192.7509\\-45\\-74.49497\\-193.1304\\-45\\-76.4481\\-193.2016\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "234"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-33.47935\\-164.7871\\-45\\-35.43248\\-163.8222\\-45\\-37.3856\\-163.4992\\-45\\-39.33873\\-163.3015\\-45\\-41.29185\\-161.8596\\-45\\-42.81697\\-160.599\\-45\\-46.263\\-156.6928\\-45\\-46.90374\\-154.7396\\-45\\-47.15123\\-154.4141\\-45\\-49.10435\\-152.9609\\-45\\-51.16337\\-154.7396\\-45\\-52.58714\\-156.6928\\-45\\-53.0106\\-157.0076\\-45\\-53.38739\\-156.6928\\-45\\-53.82182\\-154.7396\\-45\\-53.0106\\-152.8231\\-45\\-51.83551\\-150.8334\\-45\\-49.98486\\-148.8803\\-45\\-48.61607\\-146.9271\\-45\\-46.98964\\-143.0209\\-45\\-46.7742\\-141.0678\\-45\\-46.08281\\-139.1146\\-45\\-44.90513\\-137.1615\\-45\\-44.06221\\-135.2084\\-45\\-43.24498\\-134.3457\\-45\\-41.29185\\-132.7546\\-45\\-39.33873\\-132.0297\\-45\\-37.3856\\-131.746\\-45\\-35.43248\\-131.6382\\-45\\-31.52623\\-132.1686\\-45\\-29.5731\\-132.7243\\-45\\-27.61998\\-133.8235\\-45\\-25.66685\\-134.0682\\-45\\-23.71373\\-134.9465\\-45\\-21.7606\\-136.4845\\-45\\-19.07384\\-139.1146\\-45\\-18.04135\\-143.0209\\-45\\-17.73138\\-144.974\\-45\\-16.98452\\-146.9271\\-45\\-15.90123\\-148.1584\\-45\\-13.9481\\-149.4212\\-45\\-12.80689\\-150.8334\\-45\\-13.9481\\-152.3669\\-45\\-15.90123\\-151.4897\\-45\\-17.84648\\-152.7865\\-45\\-18.78984\\-154.7396\\-45\\-20.27223\\-156.6928\\-45\\-20.90666\\-158.6459\\-45\\-21.7606\\-159.5484\\-45\\-23.71373\\-161.061\\-45\\-25.66685\\-161.6482\\-45\\-27.61998\\-163.2673\\-45\\-29.5731\\-163.7839\\-45\\-31.52623\\-164.729\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "235"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-17.85435\\-233.8412\\-45\\-18.83091\\-232.8646\\-45\\-18.83091\\-230.9115\\-45\\-20.78404\\-228.9584\\-45\\-20.9766\\-227.0053\\-45\\-23.71373\\-224.2681\\-45\\-25.66685\\-224.0756\\-45\\-26.64341\\-223.099\\-45\\-25.66685\\-222.1225\\-45\\-23.71373\\-221.9299\\-45\\-21.7606\\-220.1693\\-45\\-19.80748\\-220.3619\\-45\\-19.02348\\-221.1459\\-45\\-18.83091\\-223.099\\-45\\-17.85435\\-224.0756\\-45\\-15.90123\\-224.2681\\-45\\-13.9481\\-222.315\\-45\\-11.99498\\-224.0756\\-45\\-10.04185\\-224.0756\\-45\\-9.065289\\-225.0521\\-45\\-8.872726\\-227.0053\\-45\\-8.872726\\-232.8646\\-45\\-10.04185\\-234.0338\\-45\\-15.90123\\-234.0338\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "236"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "19.25502\\-234.2876\\-45\\17.38267\\-232.8646\\-45\\17.38267\\-230.9115\\-45\\17.20716\\-228.9584\\-45\\17.26405\\-227.0053\\-45\\19.25502\\-226.0201\\-45\\22.28464\\-228.9584\\-45\\22.97427\\-230.9115\\-45\\22.09071\\-232.8646\\-45\\21.20815\\-233.6898\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "237"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "58.28636\\-195.7553\\-45\\56.35677\\-193.8021\\-45\\56.25589\\-191.849\\-45\\56.25589\\-189.8959\\-45\\56.44517\\-187.9428\\-45\\57.26985\\-185.9896\\-45\\57.92813\\-184.0365\\-45\\57.369\\-182.0834\\-45\\57.42686\\-180.1303\\-45\\58.14314\\-178.1771\\-45\\58.15593\\-172.3178\\-45\\57.46362\\-170.3646\\-45\\57.46064\\-168.4115\\-45\\58.05666\\-166.4584\\-45\\56.3644\\-164.513\\-45\\54.41127\\-162.6858\\-45\\54.41127\\-162.4454\\-45\\55.62523\\-160.599\\-45\\56.3644\\-159.8985\\-45\\58.31752\\-160.0466\\-45\\60.27065\\-161.6943\\-45\\62.22377\\-162.8987\\-45\\64.1769\\-162.8227\\-45\\66.13003\\-164.055\\-45\\66.58025\\-164.5053\\-45\\67.36084\\-166.4584\\-45\\69.62216\\-170.3646\\-45\\70.03628\\-170.9191\\-45\\71.9894\\-171.6057\\-45\\73.94253\\-170.9283\\-45\\75.89565\\-171.4362\\-45\\76.82757\\-172.3178\\-45\\78.5942\\-174.2709\\-45\\80.02726\\-176.224\\-45\\80.68081\\-178.1771\\-45\\80.61118\\-180.1303\\-45\\79.8019\\-181.691\\-45\\78.23571\\-184.0365\\-45\\76.83553\\-185.9896\\-45\\75.87103\\-189.8959\\-45\\74.82407\\-191.849\\-45\\73.94253\\-192.7704\\-45\\71.9894\\-194.2064\\-45\\70.03628\\-194.9661\\-45\\68.08315\\-194.1326\\-45\\66.13003\\-192.6234\\-45\\64.1769\\-191.6496\\-45\\62.22377\\-192.1081\\-45\\60.27065\\-194.1834\\-45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "238"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-138.4763\\-215.2865\\-43\\-138.9481\\-215.0047\\-43\\-140.9012\\-214.8437\\-43\\-142.8544\\-213.8187\\-43\\-145.4336\\-211.3803\\-43\\-147.1163\\-209.4271\\-43\\-147.8309\\-207.474\\-43\\-147.9813\\-205.5209\\-43\\-147.6239\\-203.5678\\-43\\-146.1391\\-201.6146\\-43\\-146.1181\\-197.7084\\-43\\-145.1813\\-195.7553\\-43\\-144.8075\\-195.4183\\-43\\-142.8544\\-196.0409\\-43\\-140.9012\\-197.0884\\-43\\-138.9481\\-197.6418\\-43\\-136.995\\-198.4621\\-43\\-134.7736\\-199.6615\\-43\\-133.0887\\-200.4168\\-43\\-131.1356\\-201.0386\\-43\\-129.1825\\-202.0168\\-43\\-126.1653\\-205.5209\\-43\\-123.3231\\-209.4348\\-43\\-121.37\\-210.4913\\-43\\-119.4168\\-210.9183\\-43\\-117.4637\\-210.8001\\-43\\-116.1224\\-209.4271\\-43\\-115.9291\\-207.474\\-43\\-114.6537\\-205.5209\\-43\\-114.9774\\-203.5678\\-43\\-116.4414\\-201.6146\\-43\\-118.3001\\-199.6615\\-43\\-118.3333\\-197.7084\\-43\\-115.5106\\-194.634\\-43\\-113.5575\\-192.938\\-43\\-111.6043\\-191.6746\\-43\\-107.6981\\-191.6496\\-43\\-105.745\\-192.0744\\-43\\-103.7918\\-192.9728\\-43\\-101.8387\\-194.6002\\-43\\-100.5885\\-195.7553\\-43\\-98.88557\\-197.7084\\-43\\-98.13191\\-199.6615\\-43\\-98.13191\\-201.6146\\-43\\-98.47869\\-203.5678\\-43\\-98.9419\\-205.5209\\-43\\-101.8387\\-208.2641\\-43\\-103.7918\\-208.9135\\-43\\-105.745\\-210.2427\\-43\\-107.6981\\-210.766\\-43\\-109.6512\\-211.1328\\-43\\-111.6043\\-212.5288\\-43\\-113.5575\\-214.0772\\-43\\-115.5106\\-214.7897\\-43\\-117.4637\\-216.0215\\-43\\-119.4168\\-216.7095\\-43\\-121.37\\-216.9141\\-43\\-123.3231\\-216.5764\\-43\\-125.2762\\-216.4369\\-43\\-131.1356\\-216.4471\\-43\\-135.0419\\-216.8626\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "239"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.2606\\-202.3638\\-43\\-85.32527\\-201.6146\\-43\\-85.09549\\-199.6615\\-43\\-82.30747\\-196.789\\-43\\-80.99861\\-197.7084\\-43\\-81.48116\\-199.6615\\-43\\-82.30747\\-200.5395\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "240"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-74.49497\\-194.0016\\-43\\-76.4481\\-192.493\\-43\\-76.99667\\-191.849\\-43\\-77.74773\\-189.8959\\-43\\-79.44796\\-187.9428\\-43\\-82.30747\\-185.1096\\-43\\-83.22574\\-184.0365\\-43\\-84.56864\\-182.0834\\-43\\-84.43607\\-180.1303\\-43\\-82.30747\\-177.8852\\-43\\-81.54018\\-176.224\\-43\\-81.07419\\-174.2709\\-43\\-79.24163\\-172.3178\\-43\\-77.51636\\-170.3646\\-43\\-76.97005\\-168.4115\\-43\\-75.51041\\-166.4584\\-43\\-74.49497\\-165.4771\\-43\\-72.54185\\-164.3698\\-43\\-70.58872\\-163.5897\\-43\\-66.68247\\-159.9118\\-43\\-64.72935\\-159.8781\\-43\\-64.01591\\-160.599\\-43\\-63.65513\\-162.5521\\-43\\-63.59584\\-164.5053\\-43\\-62.77623\\-165.2456\\-43\\-60.8231\\-165.8923\\-43\\-60.30035\\-166.4584\\-43\\-60.53013\\-168.4115\\-43\\-60.46628\\-170.3646\\-43\\-60.46628\\-178.1771\\-43\\-60.26585\\-180.1303\\-43\\-59.72777\\-182.0834\\-43\\-58.67054\\-184.0365\\-43\\-58.65827\\-187.9428\\-43\\-57.95642\\-189.8959\\-43\\-57.66113\\-191.849\\-43\\-58.86998\\-193.5904\\-43\\-61.26456\\-191.849\\-43\\-62.77623\\-191.1133\\-43\\-63.58764\\-191.849\\-43\\-66.19761\\-193.8021\\-43\\-66.68247\\-194.2495\\-43\\-68.6356\\-195.0943\\-43\\-70.58872\\-195.0797\\-43\\-72.54185\\-194.8329\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "241"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-162.8882\\-43\\-41.29185\\-161.6211\\-43\\-46.23355\\-156.6928\\-43\\-46.82571\\-154.7396\\-43\\-47.53462\\-152.7865\\-43\\-49.10435\\-151.6533\\-43\\-50.46278\\-152.7865\\-43\\-51.83429\\-154.7396\\-43\\-53.0106\\-155.8813\\-43\\-53.86847\\-154.7396\\-43\\-53.14703\\-152.7865\\-43\\-50.61192\\-148.8803\\-43\\-49.63238\\-146.9271\\-43\\-48.52504\\-144.974\\-43\\-47.84799\\-143.0209\\-43\\-47.02916\\-141.0678\\-43\\-46.55149\\-139.1146\\-43\\-45.76496\\-137.1615\\-43\\-43.24498\\-133.2014\\-43\\-41.29185\\-132.0235\\-43\\-39.33873\\-131.6891\\-43\\-37.3856\\-130.715\\-43\\-35.43248\\-130.2409\\-43\\-33.47935\\-130.7825\\-43\\-31.52623\\-131.584\\-43\\-27.61998\\-132.1105\\-43\\-25.66685\\-132.7332\\-43\\-21.7606\\-134.8345\\-43\\-21.42123\\-135.2084\\-43\\-20.3102\\-137.1615\\-43\\-18.82659\\-139.1146\\-43\\-18.06605\\-141.0678\\-43\\-17.69159\\-143.0209\\-43\\-17.03069\\-144.974\\-43\\-15.90123\\-146.6429\\-43\\-13.25238\\-148.8803\\-43\\-12.34269\\-150.8334\\-43\\-13.34956\\-152.7865\\-43\\-14.08354\\-152.7865\\-43\\-15.90123\\-151.1902\\-43\\-17.89191\\-152.7865\\-43\\-18.76673\\-154.7396\\-43\\-20.81008\\-158.6459\\-43\\-21.7606\\-159.6049\\-43\\-23.71373\\-160.9859\\-43\\-25.66685\\-161.6253\\-43\\-27.61998\\-162.8987\\-43\\-29.5731\\-163.5853\\-43\\-31.52623\\-164.3968\\-43\\-33.47935\\-164.3698\\-43\\-35.43248\\-163.5377\\-43\\-37.3856\\-162.9775\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "242"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-15.90123\\-235.7943\\-43\\-16.87779\\-234.8178\\-43\\-18.59863\\-232.8646\\-43\\-18.83091\\-230.9115\\-43\\-26.64341\\-223.099\\-43\\-23.71373\\-220.1693\\-43\\-21.7606\\-220.1693\\-43\\-20.78404\\-221.1459\\-43\\-19.80748\\-222.3547\\-43\\-17.11008\\-225.0521\\-43\\-15.90123\\-226.0287\\-43\\-13.9481\\-224.3079\\-43\\-11.99498\\-224.0756\\-43\\-10.04185\\-224.0756\\-43\\-7.112164\\-227.0053\\-43\\-7.112164\\-232.8646\\-43\\-8.088726\\-234.0735\\-43\\-10.04185\\-236.0266\\-43\\-13.9481\\-236.0266\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "243"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "19.25502\\-234.4712\\-43\\17.38267\\-232.8646\\-43\\17.16547\\-230.9115\\-43\\16.48725\\-228.9584\\-43\\16.6683\\-227.0053\\-43\\17.3019\\-226.4106\\-43\\19.25502\\-226.1186\\-43\\21.20815\\-227.9859\\-43\\23.29491\\-228.9584\\-43\\24.37201\\-230.9115\\-43\\23.40358\\-232.8646\\-43\\23.16127\\-233.1288\\-43\\21.20815\\-234.3441\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "244"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "58.31752\\-196.3834\\-43\\57.11947\\-195.7553\\-43\\56.26966\\-193.8021\\-43\\56.26966\\-189.8959\\-43\\56.94815\\-187.9428\\-43\\57.49542\\-185.9896\\-43\\57.36467\\-184.0365\\-43\\56.9417\\-182.0834\\-43\\57.34096\\-180.1303\\-43\\58.14314\\-178.1771\\-43\\58.15593\\-172.3178\\-43\\57.59396\\-170.3646\\-43\\57.17744\\-168.4115\\-43\\57.45419\\-166.4584\\-43\\56.42282\\-164.5053\\-43\\54.41127\\-163.5574\\-43\\53.83843\\-162.5521\\-43\\55.43998\\-160.599\\-43\\56.3644\\-159.6965\\-43\\58.31752\\-159.7428\\-43\\60.27065\\-161.6609\\-43\\62.22377\\-162.8227\\-43\\64.1769\\-162.8227\\-43\\66.13003\\-163.6042\\-43\\68.08315\\-165.1179\\-43\\70.03628\\-166.3703\\-43\\72.07154\\-168.4115\\-43\\73.94253\\-169.7115\\-43\\75.89565\\-170.6769\\-43\\77.84878\\-171.7888\\-43\\79.8019\\-173.745\\-43\\80.57095\\-174.2709\\-43\\81.75503\\-175.3986\\-43\\82.19949\\-176.224\\-43\\81.33908\\-178.1771\\-43\\80.69708\\-180.1303\\-43\\79.8019\\-181.2217\\-43\\78.85406\\-182.0834\\-43\\76.94238\\-184.0365\\-43\\76.03108\\-185.9896\\-43\\75.01514\\-187.9428\\-43\\74.43081\\-189.8959\\-43\\73.1654\\-191.849\\-43\\70.34965\\-195.7553\\-43\\70.03628\\-196.039\\-43\\68.08315\\-195.2746\\-43\\67.1015\\-193.8021\\-43\\66.13003\\-192.8742\\-43\\64.1769\\-191.6496\\-43\\62.22377\\-191.6874\\-43\\60.07121\\-193.8021\\-43\\58.97408\\-195.7553\\-43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "64"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "245"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-217.2952\\-41\\-125.2762\\-217.0402\\-41\\-127.2293\\-216.9141\\-41\\-135.0419\\-216.9578\\-41\\-136.995\\-216\\-41\\-138.9481\\-214.8132\\-41\\-140.9012\\-214.2431\\-41\\-142.8544\\-212.4783\\-41\\-144.7132\\-211.3803\\-41\\-146.7606\\-209.9826\\-41\\-147.2992\\-209.4271\\-41\\-147.9679\\-207.474\\-41\\-148.0679\\-205.5209\\-41\\-147.7277\\-203.5678\\-41\\-146.3259\\-201.6146\\-41\\-146.1181\\-199.6615\\-41\\-146.1181\\-197.7084\\-41\\-145.9722\\-195.7553\\-41\\-144.8075\\-194.47\\-41\\-142.8544\\-195.3955\\-41\\-140.9012\\-197.6418\\-41\\-138.9481\\-197.7459\\-41\\-136.995\\-198.4906\\-41\\-134.9169\\-199.6615\\-41\\-133.0887\\-200.4399\\-41\\-131.1356\\-201.4152\\-41\\-129.1825\\-201.9294\\-41\\-127.0299\\-203.5678\\-41\\-126.126\\-205.5209\\-41\\-125.2762\\-206.6467\\-41\\-123.3231\\-208.8284\\-41\\-121.37\\-210.0873\\-41\\-119.4168\\-210.7349\\-41\\-117.4637\\-210.1612\\-41\\-116.8589\\-209.4271\\-41\\-116.4224\\-207.474\\-41\\-115.5106\\-205.6062\\-41\\-116.201\\-203.5678\\-41\\-117.8859\\-201.6146\\-41\\-118.6423\\-199.6615\\-41\\-118.3365\\-197.7084\\-41\\-115.5106\\-194.8542\\-41\\-113.5575\\-192.9496\\-41\\-111.6043\\-191.6746\\-41\\-107.6981\\-191.6496\\-41\\-105.745\\-191.6874\\-41\\-103.7918\\-192.6354\\-41\\-101.8387\\-193.8687\\-41\\-99.8856\\-194.9568\\-41\\-98.99256\\-195.7553\\-41\\-96.82784\\-199.6615\\-41\\-96.39086\\-201.6146\\-41\\-96.93359\\-203.5678\\-41\\-98.09406\\-205.5209\\-41\\-100.3232\\-207.474\\-41\\-103.7918\\-210.2453\\-41\\-107.6981\\-211.1097\\-41\\-109.6512\\-212.1848\\-41\\-111.6043\\-213.878\\-41\\-113.5575\\-214.7324\\-41\\-115.5106\\-215.2489\\-41\\-117.4637\\-216.3226\\-41\\-119.4168\\-217.2169\\-41\\-121.37\\-217.3835\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "246"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-70.58872\\-196.7539\\-41\\-71.84233\\-195.7553\\-41\\-73.05276\\-193.8021\\-41\\-74.10594\\-191.849\\-41\\-75.64347\\-189.8959\\-41\\-77.50365\\-187.9428\\-41\\-78.97456\\-185.9896\\-41\\-80.35435\\-184.636\\-41\\-82.30747\\-183.2341\\-41\\-84.4484\\-182.0834\\-41\\-85.43736\\-180.1303\\-41\\-84.74504\\-178.1771\\-41\\-84.2606\\-177.6889\\-41\\-81.47768\\-174.2709\\-41\\-79.41415\\-172.3178\\-41\\-77.88154\\-170.3646\\-41\\-77.16587\\-168.4115\\-41\\-74.49497\\-165.6477\\-41\\-72.54185\\-163.8127\\-41\\-70.58872\\-163.2418\\-41\\-68.6356\\-161.7036\\-41\\-66.68247\\-159.7517\\-41\\-64.72935\\-159.6584\\-41\\-63.82223\\-160.599\\-41\\-61.95633\\-164.5053\\-41\\-60.16354\\-166.4584\\-41\\-60.67449\\-168.4115\\-41\\-60.74233\\-170.3646\\-41\\-60.46628\\-172.3178\\-41\\-60.44608\\-178.1771\\-41\\-59.91661\\-180.1303\\-41\\-59.2268\\-182.0834\\-41\\-58.65827\\-184.0365\\-41\\-58.65827\\-185.9896\\-41\\-58.44883\\-187.9428\\-41\\-57.02536\\-191.849\\-41\\-57.2374\\-193.8021\\-41\\-58.86998\\-195.0173\\-41\\-60.8231\\-194.2064\\-41\\-62.77623\\-193.0381\\-41\\-64.72935\\-193.2075\\-41\\-66.68247\\-194.719\\-41\\-68.6356\\-196.466\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "247"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-162.8227\\-41\\-39.33873\\-162.5294\\-41\\-41.29185\\-161.5542\\-41\\-46.23355\\-156.6928\\-41\\-46.82571\\-154.7396\\-41\\-46.9155\\-152.7865\\-41\\-47.15123\\-152.5017\\-41\\-49.10435\\-151.2104\\-41\\-50.90887\\-152.7865\\-41\\-51.9084\\-154.7396\\-41\\-53.0106\\-155.7316\\-41\\-54.1669\\-154.7396\\-41\\-53.64912\\-152.7865\\-41\\-52.40424\\-150.8334\\-41\\-51.60001\\-148.8803\\-41\\-49.87423\\-146.9271\\-41\\-48.84526\\-144.974\\-41\\-48.53607\\-143.0209\\-41\\-47.77602\\-141.0678\\-41\\-46.79441\\-139.1146\\-41\\-46.08452\\-137.1615\\-41\\-44.96238\\-135.2084\\-41\\-43.96256\\-133.2553\\-41\\-43.24498\\-132.5494\\-41\\-41.29185\\-131.8241\\-41\\-39.33873\\-130.7772\\-41\\-37.3856\\-130.0255\\-41\\-35.43248\\-129.8543\\-41\\-31.52623\\-130.2142\\-41\\-29.5731\\-130.2525\\-41\\-27.61998\\-130.7432\\-41\\-25.66685\\-131.8815\\-41\\-23.71373\\-132.1969\\-41\\-21.7606\\-133.0406\\-41\\-21.5459\\-133.2553\\-41\\-18.97963\\-137.1615\\-41\\-17.92093\\-141.0678\\-41\\-17.05491\\-143.0209\\-41\\-16.55056\\-144.974\\-41\\-15.90123\\-145.8008\\-41\\-12.57178\\-148.8803\\-41\\-12.21896\\-150.8334\\-41\\-12.85886\\-152.7865\\-41\\-13.9481\\-153.1277\\-41\\-14.14754\\-152.7865\\-41\\-15.90123\\-150.9555\\-41\\-17.89191\\-152.7865\\-41\\-19.71273\\-156.6928\\-41\\-20.79712\\-158.6459\\-41\\-21.7606\\-159.6094\\-41\\-23.71373\\-160.9859\\-41\\-25.66685\\-161.6253\\-41\\-27.61998\\-162.8112\\-41\\-31.52623\\-163.6786\\-41\\-33.47935\\-163.6634\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "248"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-13.9481\\-237.7475\\-41\\-14.92466\\-236.7709\\-41\\-16.60923\\-234.8178\\-41\\-16.60923\\-232.8646\\-41\\-18.56236\\-230.9115\\-41\\-21.05259\\-228.9584\\-41\\-23.71373\\-226.2973\\-41\\-25.66685\\-223.807\\-41\\-26.37486\\-223.099\\-41\\-24.69029\\-221.1459\\-41\\-23.71373\\-220.1693\\-41\\-21.7606\\-220.1693\\-41\\-20.78404\\-221.1459\\-41\\-20.78404\\-223.099\\-41\\-17.85435\\-226.0287\\-41\\-15.90123\\-226.2973\\-41\\-13.9481\\-226.2973\\-41\\-11.99498\\-224.3441\\-41\\-10.04185\\-224.3441\\-41\\-8.088726\\-226.0287\\-41\\-7.112164\\-227.0053\\-41\\-7.112164\\-234.8178\\-41\\-8.088726\\-236.0629\\-41\\-10.04185\\-237.7475\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "249"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "19.25502\\-235.4552\\-41\\18.56828\\-234.8178\\-41\\16.90622\\-232.8646\\-41\\15.61931\\-228.9584\\-41\\16.16167\\-227.0053\\-41\\17.3019\\-226.0941\\-41\\19.25502\\-226.0663\\-41\\21.20815\\-227.8738\\-41\\23.16127\\-228.2988\\-41\\25.1144\\-228.3159\\-41\\26.15774\\-228.9584\\-41\\25.81728\\-230.9115\\-41\\25.1144\\-231.8628\\-41\\23.33813\\-234.8178\\-41\\21.20815\\-235.9657\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "250"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-196.1773\\-41\\56.01611\\-195.7553\\-41\\56.04325\\-193.8021\\-41\\56.25589\\-191.849\\-41\\56.26966\\-189.8959\\-41\\56.66836\\-187.9428\\-41\\56.96413\\-185.9896\\-41\\56.78977\\-184.0365\\-41\\57.05983\\-182.0834\\-41\\58.15593\\-178.1771\\-41\\58.15593\\-172.3178\\-41\\57.43103\\-170.3646\\-41\\56.88636\\-168.4115\\-41\\57.29911\\-166.4584\\-41\\57.55415\\-164.5053\\-41\\55.19648\\-162.5521\\-41\\55.88193\\-160.599\\-41\\56.3644\\-160.0692\\-41\\58.31752\\-159.7284\\-41\\60.27065\\-161.6609\\-41\\62.22377\\-162.8227\\-41\\64.1769\\-162.8227\\-41\\68.08315\\-163.7728\\-41\\70.03628\\-165.0257\\-41\\71.9894\\-166.0939\\-41\\73.94253\\-167.9649\\-41\\75.89565\\-168.9722\\-41\\77.84878\\-169.1811\\-41\\79.8019\\-170.2728\\-41\\81.75503\\-172.361\\-41\\82.81818\\-174.2709\\-41\\82.83186\\-176.224\\-41\\82.16653\\-178.1771\\-41\\79.8019\\-180.5172\\-41\\77.84878\\-181.3992\\-41\\77.04977\\-182.0834\\-41\\75.12396\\-184.0365\\-41\\74.31666\\-185.9896\\-41\\73.90079\\-187.9428\\-41\\72.95398\\-189.8959\\-41\\71.22108\\-191.849\\-41\\70.03628\\-194.2793\\-41\\68.08315\\-194.6795\\-41\\67.36784\\-193.8021\\-41\\66.13003\\-192.7847\\-41\\64.1769\\-191.5107\\-41\\62.22377\\-191.4797\\-41\\61.76649\\-191.849\\-41\\60.00011\\-193.8021\\-41\\59.11742\\-195.7553\\-41\\58.31752\\-196.5512\\-41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "64"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "251"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-129.1825\\-217.4098\\-39\\-133.0887\\-217.0158\\-39\\-135.0419\\-216.7605\\-39\\-136.995\\-215.8845\\-39\\-138.9481\\-214.3147\\-39\\-140.9012\\-213.341\\-39\\-144.2215\\-211.3803\\-39\\-144.8075\\-210.9643\\-39\\-146.4566\\-209.4271\\-39\\-147.1575\\-207.474\\-39\\-147.636\\-205.5209\\-39\\-147.9468\\-203.5678\\-39\\-147.3954\\-201.6146\\-39\\-146.1321\\-199.6615\\-39\\-146.101\\-195.7553\\-39\\-144.8075\\-194.0275\\-39\\-142.8544\\-195.1795\\-39\\-140.9012\\-197.7311\\-39\\-138.9481\\-197.7606\\-39\\-136.995\\-198.4906\\-39\\-135.0419\\-199.797\\-39\\-133.0887\\-200.5453\\-39\\-131.1356\\-201.4926\\-39\\-129.1825\\-201.8356\\-39\\-127.2293\\-203.3517\\-39\\-126.1513\\-205.5209\\-39\\-125.2762\\-206.432\\-39\\-123.3231\\-208.0622\\-39\\-121.37\\-208.5245\\-39\\-119.4168\\-209.7229\\-39\\-117.4637\\-207.9297\\-39\\-117.1447\\-207.474\\-39\\-116.8385\\-205.5209\\-39\\-118.5913\\-201.6146\\-39\\-118.8949\\-199.6615\\-39\\-118.3355\\-197.7084\\-39\\-113.5575\\-192.9496\\-39\\-111.6043\\-191.6746\\-39\\-107.6981\\-191.3765\\-39\\-105.745\\-191.4647\\-39\\-103.7918\\-192.0622\\-39\\-101.8387\\-192.8515\\-39\\-100.0151\\-193.8021\\-39\\-97.93247\\-195.0103\\-39\\-96.98767\\-195.7553\\-39\\-96.26118\\-197.7084\\-39\\-94.94582\\-199.6615\\-39\\-94.37728\\-201.6146\\-39\\-95.05374\\-203.5678\\-39\\-95.97935\\-204.9324\\-39\\-97.19562\\-207.474\\-39\\-97.93247\\-208.0108\\-39\\-99.8856\\-208.7882\\-39\\-101.8387\\-210.1113\\-39\\-103.7918\\-210.7378\\-39\\-105.745\\-210.9007\\-39\\-107.6981\\-212.1277\\-39\\-109.6512\\-212.927\\-39\\-111.6043\\-214.3944\\-39\\-117.4637\\-216.9805\\-39\\-119.4168\\-218.0877\\-39\\-121.37\\-218.3851\\-39\\-123.3231\\-218.3807\\-39\\-127.2293\\-217.4232\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "252"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-70.58872\\-196.0238\\-39\\-70.81567\\-195.7553\\-39\\-71.52361\\-193.8021\\-39\\-72.72885\\-191.849\\-39\\-73.77373\\-189.8959\\-39\\-75.14374\\-187.9428\\-39\\-78.62978\\-184.0365\\-39\\-80.35435\\-182.6856\\-39\\-82.30747\\-181.4669\\-39\\-84.2606\\-180.714\\-39\\-84.93913\\-180.1303\\-39\\-86.41197\\-178.1771\\-39\\-86.47072\\-176.224\\-39\\-86.21372\\-175.9915\\-39\\-84.2606\\-175.4361\\-39\\-83.54852\\-174.2709\\-39\\-82.30747\\-173.1539\\-39\\-80.35435\\-171.9586\\-39\\-79.04015\\-170.3646\\-39\\-76.4481\\-167.435\\-39\\-73.52367\\-164.5053\\-39\\-72.54185\\-163.6188\\-39\\-70.58872\\-162.6742\\-39\\-68.6356\\-161.6227\\-39\\-66.68247\\-159.8248\\-39\\-64.72935\\-159.7325\\-39\\-63.89164\\-160.599\\-39\\-62.4297\\-162.5521\\-39\\-61.85584\\-164.5053\\-39\\-60.44608\\-166.4584\\-39\\-61.53098\\-168.4115\\-39\\-61.70345\\-170.3646\\-39\\-60.78554\\-172.3178\\-39\\-60.46628\\-174.2709\\-39\\-60.44608\\-178.1771\\-39\\-59.87281\\-180.1303\\-39\\-59.03157\\-182.0834\\-39\\-58.65827\\-184.0365\\-39\\-58.65827\\-185.9896\\-39\\-57.93336\\-187.9428\\-39\\-57.31358\\-189.8959\\-39\\-56.83608\\-191.849\\-39\\-56.0233\\-193.8021\\-39\\-55.51841\\-195.7553\\-39\\-56.91685\\-196.9777\\-39\\-58.86998\\-195.6332\\-39\\-62.51772\\-193.8021\\-39\\-62.77623\\-193.6151\\-39\\-64.72935\\-192.9402\\-39\\-66.16109\\-193.8021\\-39\\-68.6356\\-196.3697\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "253"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-162.7879\\-39\\-39.33873\\-161.746\\-39\\-41.29185\\-161.2786\\-39\\-43.24498\\-159.6401\\-39\\-44.28142\\-158.6459\\-39\\-46.09674\\-156.6928\\-39\\-46.72057\\-154.7396\\-39\\-46.85826\\-152.7865\\-39\\-47.15123\\-152.4292\\-39\\-49.10435\\-150.9419\\-39\\-50.97671\\-152.7865\\-39\\-52.15434\\-154.7396\\-39\\-53.0106\\-155.3682\\-39\\-53.82553\\-154.7396\\-39\\-53.80115\\-152.7865\\-39\\-53.0106\\-151.0078\\-39\\-51.78856\\-148.8803\\-39\\-49.8949\\-146.9271\\-39\\-48.90491\\-144.974\\-39\\-48.82253\\-143.0209\\-39\\-47.95238\\-141.0678\\-39\\-46.85826\\-139.1146\\-39\\-46.45802\\-137.1615\\-39\\-45.64089\\-135.2084\\-39\\-44.02309\\-133.2553\\-39\\-43.24498\\-132.4894\\-39\\-41.29185\\-131.799\\-39\\-39.33873\\-130.5469\\-39\\-37.3856\\-129.8286\\-39\\-33.47935\\-129.4711\\-39\\-31.52623\\-129.5234\\-39\\-29.5731\\-129.6851\\-39\\-27.61998\\-130.0429\\-39\\-25.66685\\-130.6689\\-39\\-23.71373\\-131.6792\\-39\\-21.7606\\-132.4572\\-39\\-19.09031\\-135.2084\\-39\\-18.47914\\-137.1615\\-39\\-17.64116\\-141.0678\\-39\\-16.85518\\-143.0209\\-39\\-15.96781\\-144.974\\-39\\-13.9481\\-147.0131\\-39\\-12.30445\\-148.8803\\-39\\-12.34593\\-150.8334\\-39\\-12.85886\\-152.7865\\-39\\-13.61626\\-154.7396\\-39\\-14.19578\\-154.7396\\-39\\-14.14754\\-152.7865\\-39\\-14.80259\\-150.8334\\-39\\-15.90123\\-150.0927\\-39\\-16.6722\\-150.8334\\-39\\-17.89191\\-152.7865\\-39\\-18.76673\\-154.7396\\-39\\-19.99581\\-156.6928\\-39\\-20.95089\\-158.6459\\-39\\-21.7606\\-159.4556\\-39\\-23.71373\\-160.7075\\-39\\-27.61998\\-162.4996\\-39\\-31.52623\\-163.2152\\-39\\-33.47935\\-163.2352\\-39\\-35.43248\\-162.8882\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "254"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-21.7606\\-229.6212\\-39\\-24.37657\\-227.0053\\-39\\-24.37657\\-225.0521\\-39\\-22.42345\\-223.099\\-39\\-24.37657\\-221.1459\\-39\\-23.71373\\-220.483\\-39\\-21.7606\\-220.483\\-39\\-21.09775\\-221.1459\\-39\\-21.09775\\-223.099\\-39\\-17.1915\\-227.0053\\-39\\-19.80748\\-229.6212\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "255"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-13.9481\\-237.4337\\-39\\-14.61095\\-236.7709\\-39\\-12.65782\\-234.8178\\-39\\-12.65782\\-232.8646\\-39\\-14.61095\\-230.9115\\-39\\-14.61095\\-228.9584\\-39\\-11.99498\\-226.3424\\-39\\-8.088726\\-226.3424\\-39\\-7.425878\\-227.0053\\-39\\-7.425878\\-236.7709\\-39\\-8.088726\\-237.4337\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "256"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "21.20815\\-237.2592\\-39\\19.25502\\-236.4316\\-39\\17.3019\\-234.5248\\-39\\15.34877\\-233.8678\\-39\\13.39565\\-233.3834\\-39\\12.59235\\-232.8646\\-39\\13.04913\\-230.9115\\-39\\13.20368\\-228.9584\\-39\\13.39565\\-228.55\\-39\\15.02951\\-227.0053\\-39\\17.3019\\-226.2083\\-39\\19.25502\\-226.1869\\-39\\23.16127\\-227.9278\\-39\\25.1144\\-228.0937\\-39\\27.06752\\-228.0516\\-39\\28.16195\\-228.9584\\-39\\27.32128\\-230.9115\\-39\\25.1144\\-233.8412\\-39\\24.48661\\-234.8178\\-39\\23.16127\\-236.0676\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "257"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-197.4521\\-39\\54.92309\\-195.7553\\-39\\55.45724\\-193.8021\\-39\\56.25589\\-191.849\\-39\\56.34169\\-187.9428\\-39\\56.60012\\-185.9896\\-39\\56.60012\\-184.0365\\-39\\56.76113\\-182.0834\\-39\\57.38203\\-180.1303\\-39\\58.14314\\-178.1771\\-39\\58.15593\\-172.3178\\-39\\57.19072\\-168.4115\\-39\\57.3649\\-166.4584\\-39\\58.04699\\-164.5053\\-39\\56.97145\\-162.5521\\-39\\56.20281\\-160.599\\-39\\56.3644\\-160.4179\\-39\\58.31752\\-159.7233\\-39\\60.27065\\-161.61\\-39\\62.22377\\-162.3454\\-39\\64.1769\\-162.3583\\-39\\66.13003\\-162.6469\\-39\\70.03628\\-163.8456\\-39\\71.9894\\-165.1365\\-39\\73.94253\\-166.0476\\-39\\75.89565\\-167.1272\\-39\\77.84878\\-167.675\\-39\\79.8019\\-168.7906\\-39\\82.54697\\-172.3178\\-39\\83.02151\\-174.2709\\-39\\82.5782\\-176.224\\-39\\81.75503\\-177.2067\\-39\\79.8019\\-179.079\\-39\\77.84878\\-180.4871\\-39\\75.89565\\-181.3824\\-39\\73.31683\\-184.0365\\-39\\72.44638\\-185.9896\\-39\\72.28632\\-187.9428\\-39\\71.01284\\-189.8959\\-39\\70.03628\\-190.9053\\-39\\68.08315\\-192.2498\\-39\\66.13003\\-191.792\\-39\\64.1769\\-190.9722\\-39\\62.22377\\-190.9025\\-39\\61.17508\\-191.849\\-39\\59.78832\\-193.8021\\-39\\59.05503\\-195.7553\\-39\\58.31752\\-196.5045\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "258"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "75.89565\\-205.8244\\-39\\71.83709\\-201.6146\\-39\\71.72717\\-199.6615\\-39\\71.9894\\-199.4064\\-39\\73.94253\\-199.5988\\-39\\75.89565\\-200.9761\\-39\\77.33986\\-199.6615\\-39\\77.84878\\-199.3857\\-39\\79.8019\\-199.0826\\-39\\83.70815\\-198.9655\\-39\\85.66128\\-200.6855\\-39\\86.9602\\-201.6146\\-39\\87.6144\\-202.6056\\-39\\88.56265\\-203.5678\\-39\\87.6144\\-204.3375\\-39\\85.66128\\-204.4393\\-39\\81.75503\\-204.4393\\-39\\79.8019\\-205.6997\\-39\\77.84878\\-206.1434\\-39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "79"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "259"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-219.0312\\-37\\-125.2762\\-218.5227\\-37\\-127.2293\\-218.3833\\-37\\-129.1825\\-218.364\\-37\\-131.1356\\-217.9039\\-37\\-132.9492\\-217.2396\\-37\\-136.995\\-215.2941\\-37\\-140.9012\\-212.9464\\-37\\-142.8544\\-212.2721\\-37\\-144.8075\\-211.0984\\-37\\-146.1321\\-209.4271\\-37\\-146.1833\\-207.474\\-37\\-146.5249\\-205.5209\\-37\\-147.6042\\-203.5678\\-37\\-147.4559\\-201.6146\\-37\\-146.1321\\-199.6615\\-37\\-146.0786\\-195.7553\\-37\\-144.8075\\-194.4089\\-37\\-142.8544\\-196.4395\\-37\\-140.9012\\-198.1029\\-37\\-138.9481\\-198.1333\\-37\\-136.995\\-198.6901\\-37\\-135.0419\\-200.4459\\-37\\-131.1356\\-201.5199\\-37\\-129.1825\\-202.2716\\-37\\-128.1023\\-203.5678\\-37\\-126.2262\\-205.5209\\-37\\-125.2762\\-206.3736\\-37\\-123.3231\\-207.1485\\-37\\-121.37\\-207.5825\\-37\\-119.4168\\-207.5128\\-37\\-118.5201\\-205.5209\\-37\\-118.5976\\-203.5678\\-37\\-119.1129\\-201.6146\\-37\\-119.3075\\-199.6615\\-37\\-118.2565\\-197.7084\\-37\\-115.5106\\-194.8855\\-37\\-113.5575\\-192.9496\\-37\\-111.6043\\-191.543\\-37\\-107.6981\\-190.5638\\-37\\-105.745\\-190.8777\\-37\\-103.7918\\-191.4773\\-37\\-101.8387\\-191.9304\\-37\\-99.8856\\-192.732\\-37\\-97.93247\\-193.8543\\-37\\-95.97935\\-194.5022\\-37\\-93.36704\\-195.7553\\-37\\-92.0731\\-196.8804\\-37\\-90.11997\\-196.2435\\-37\\-87.67857\\-193.8021\\-37\\-85.83813\\-191.849\\-37\\-84.17182\\-189.8959\\-37\\-82.30747\\-189.419\\-37\\-78.40122\\-189.6029\\-37\\-78.09964\\-189.8959\\-37\\-78.12409\\-193.8021\\-37\\-78.00684\\-195.7553\\-37\\-78.40122\\-197.8711\\-37\\-79.81467\\-199.6615\\-37\\-79.82851\\-203.5678\\-37\\-82.30747\\-205.7256\\-37\\-84.2606\\-205.6051\\-37\\-86.21372\\-204.0041\\-37\\-90.11997\\-203.9863\\-37\\-92.0731\\-205.6914\\-37\\-93.80087\\-207.474\\-37\\-95.97935\\-208.8547\\-37\\-97.93247\\-209.168\\-37\\-99.8856\\-210.2559\\-37\\-101.8387\\-210.7275\\-37\\-103.7918\\-210.9007\\-37\\-105.745\\-211.1933\\-37\\-109.6512\\-214.1472\\-37\\-111.6043\\-214.8069\\-37\\-113.5575\\-216.0414\\-37\\-115.5106\\-216.7688\\-37\\-117.4637\\-217.9936\\-37\\-119.4168\\-218.6874\\-37\\-121.3483\\-219.1928\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "260"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-56.91685\\-197.8528\\-37\\-59.0976\\-195.7553\\-37\\-62.77623\\-193.4831\\-37\\-64.72935\\-192.6271\\-37\\-66.68247\\-192.9678\\-37\\-68.6356\\-194.1684\\-37\\-70.58872\\-192.9984\\-37\\-71.52256\\-191.849\\-37\\-72.46673\\-189.8959\\-37\\-74.49497\\-186.185\\-37\\-76.03642\\-184.0365\\-37\\-76.4481\\-183.6366\\-37\\-80.35435\\-181.101\\-37\\-82.30747\\-180.3893\\-37\\-84.2606\\-179.1306\\-37\\-86.22222\\-178.1771\\-37\\-87.18278\\-176.224\\-37\\-85.39088\\-174.2709\\-37\\-84.2606\\-173.4405\\-37\\-82.30747\\-172.7409\\-37\\-80.35435\\-171.4633\\-37\\-79.30804\\-170.3646\\-37\\-77.92793\\-168.4115\\-37\\-76.72047\\-166.4584\\-37\\-74.49497\\-164.2462\\-37\\-72.54185\\-163.0404\\-37\\-70.58872\\-161.7326\\-37\\-68.6356\\-161.3168\\-37\\-66.68247\\-160.3858\\-37\\-64.72935\\-160.2607\\-37\\-62.36983\\-162.5521\\-37\\-61.85084\\-164.5053\\-37\\-60.8231\\-166.4503\\-37\\-61.79966\\-168.4115\\-37\\-62.09363\\-170.3646\\-37\\-61.6498\\-172.3178\\-37\\-60.47658\\-174.2709\\-37\\-60.45611\\-178.1771\\-37\\-60.17035\\-180.1303\\-37\\-59.63896\\-182.0834\\-37\\-58.67054\\-184.0365\\-37\\-58.65827\\-185.9896\\-37\\-57.84841\\-187.9428\\-37\\-56.93956\\-189.8959\\-37\\-56.82211\\-191.849\\-37\\-55.86255\\-193.8021\\-37\\-54.69739\\-195.7553\\-37\\-54.02353\\-197.7084\\-37\\-54.96373\\-199.2454\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "261"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-35.43248\\-162.7996\\-37\\-37.3856\\-162.4292\\-37\\-41.29185\\-160.786\\-37\\-43.24498\\-159.4158\\-37\\-44.04889\\-158.6459\\-37\\-46.39568\\-154.7396\\-37\\-46.84726\\-152.7865\\-37\\-48.25713\\-150.8334\\-37\\-49.10435\\-150.0896\\-37\\-50.22654\\-150.8334\\-37\\-50.97671\\-152.7865\\-37\\-52.3792\\-154.7396\\-37\\-53.0106\\-155.1835\\-37\\-53.55719\\-154.7396\\-37\\-53.81575\\-152.7865\\-37\\-53.0106\\-150.8944\\-37\\-51.77618\\-148.8803\\-37\\-50.03416\\-146.9271\\-37\\-49.11204\\-144.974\\-37\\-48.671\\-143.0209\\-37\\-47.85169\\-141.0678\\-37\\-46.84726\\-139.1146\\-37\\-46.22681\\-137.1615\\-37\\-45.1981\\-135.4245\\-37\\-43.70789\\-133.2553\\-37\\-43.24498\\-132.7983\\-37\\-41.29185\\-131.9118\\-37\\-39.33873\\-130.5257\\-37\\-37.3856\\-129.802\\-37\\-35.43248\\-128.8293\\-37\\-33.47935\\-128.3001\\-37\\-31.52623\\-128.2945\\-37\\-29.5731\\-128.6999\\-37\\-27.61998\\-129.6308\\-37\\-25.66685\\-130.0326\\-37\\-23.71373\\-130.77\\-37\\-21.7606\\-132.4203\\-37\\-18.93371\\-135.2084\\-37\\-18.00296\\-137.1615\\-37\\-17.90653\\-139.1146\\-37\\-17.05706\\-141.0678\\-37\\-16.52976\\-143.0209\\-37\\-15.17651\\-144.974\\-37\\-13.29103\\-146.9271\\-37\\-12.262\\-148.8803\\-37\\-12.69688\\-150.8334\\-37\\-13.08795\\-154.7396\\-37\\-13.9481\\-155.5268\\-37\\-14.67778\\-154.7396\\-37\\-14.1351\\-152.7865\\-37\\-14.22615\\-150.8334\\-37\\-15.90123\\-149.4706\\-37\\-17.2875\\-150.8334\\-37\\-18.16034\\-152.7865\\-37\\-18.85416\\-154.7396\\-37\\-20.62606\\-156.6928\\-37\\-22.18097\\-158.6459\\-37\\-25.66685\\-161.3043\\-37\\-27.61998\\-161.6964\\-37\\-29.5731\\-162.4567\\-37\\-31.52623\\-162.8669\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "262"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "19.22887\\-238.724\\-37\\17.3019\\-236.797\\-37\\15.34877\\-235.9698\\-37\\13.39565\\-235.4037\\-37\\11.44252\\-234.1687\\-37\\10.19276\\-232.8646\\-37\\10.64013\\-230.9115\\-37\\11.74851\\-228.9584\\-37\\13.39565\\-226.8309\\-37\\15.34877\\-226.467\\-37\\19.25502\\-226.2478\\-37\\21.20815\\-226.2715\\-37\\23.16127\\-226.8814\\-37\\25.1144\\-227.9043\\-37\\27.06752\\-227.9118\\-37\\28.7964\\-228.9584\\-37\\28.54103\\-230.9115\\-37\\25.73149\\-234.8178\\-37\\25.1144\\-235.4667\\-37\\23.16127\\-236.5234\\-37\\21.20815\\-238.0343\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "263"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-199.5235\\-37\\53.26749\\-197.7084\\-37\\53.57496\\-195.7553\\-37\\55.2799\\-193.8021\\-37\\56.25589\\-191.849\\-37\\56.28363\\-187.9428\\-37\\57.02763\\-185.9896\\-37\\57.2319\\-184.0365\\-37\\56.75631\\-182.0834\\-37\\57.35947\\-180.1303\\-37\\58.14314\\-178.1771\\-37\\58.15593\\-172.3178\\-37\\58.0818\\-170.3646\\-37\\57.72286\\-168.4115\\-37\\57.73701\\-166.4584\\-37\\58.11808\\-164.5053\\-37\\57.18272\\-162.5521\\-37\\56.3644\\-160.5245\\-37\\58.31752\\-159.7183\\-37\\60.27065\\-161.37\\-37\\64.1769\\-161.4302\\-37\\66.13003\\-161.7408\\-37\\68.08315\\-162.3713\\-37\\70.03628\\-163.4814\\-37\\72.63463\\-164.5053\\-37\\75.89565\\-165.6953\\-37\\77.84878\\-166.835\\-37\\79.8019\\-167.6489\\-37\\80.53564\\-168.4115\\-37\\81.5193\\-170.3646\\-37\\82.62257\\-172.3178\\-37\\82.55833\\-174.2709\\-37\\81.75503\\-175.3695\\-37\\78.94282\\-178.1771\\-37\\75.89565\\-180.4451\\-37\\73.98009\\-182.0834\\-37\\71.9894\\-184.6648\\-37\\70.81079\\-185.9896\\-37\\70.03628\\-187.3934\\-37\\68.08315\\-189.4607\\-37\\66.13003\\-190.3011\\-37\\64.1769\\-189.8238\\-37\\62.22377\\-189.9035\\-37\\60.27065\\-192.2321\\-37\\59.30334\\-193.8021\\-37\\58.65361\\-195.7553\\-37\\56.3644\\-198.396\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "264"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "75.89565\\-213.7995\\-37\\75.32599\\-213.3334\\-37\\74.4308\\-211.3803\\-37\\74.07616\\-209.4271\\-37\\73.01937\\-207.474\\-37\\72.48379\\-205.5209\\-37\\71.75038\\-203.5678\\-37\\70.51546\\-201.6146\\-37\\70.18488\\-199.6615\\-37\\71.9894\\-198.1243\\-37\\73.94253\\-198.2466\\-37\\75.89565\\-199.0709\\-37\\77.84878\\-198.9572\\-37\\79.8019\\-199.0475\\-37\\81.75503\\-198.7263\\-37\\83.36192\\-199.6615\\-37\\83.70815\\-200.0624\\-37\\85.78104\\-201.6146\\-37\\87.6144\\-202.7126\\-37\\88.61024\\-203.5678\\-37\\89.56753\\-205.1324\\-37\\89.95605\\-205.5209\\-37\\91.14334\\-207.474\\-37\\91.52065\\-207.8513\\-37\\92.21238\\-207.474\\-37\\93.47378\\-207.2481\\-37\\93.81393\\-207.474\\-37\\94.20836\\-209.4271\\-37\\93.58503\\-211.3803\\-37\\93.47378\\-212.3568\\-37\\92.67477\\-213.3334\\-37\\91.52065\\-215.147\\-37\\89.54874\\-213.3334\\-37\\89.36484\\-211.3803\\-37\\89.78725\\-209.4271\\-37\\89.56753\\-209.2074\\-37\\87.6144\\-208.3405\\-37\\85.66128\\-208.3725\\-37\\83.70815\\-209.4106\\-37\\81.75503\\-209.9254\\-37\\79.8019\\-210.2664\\-37\\77.84878\\-211.2624\\-37\\77.3605\\-211.3803\\-37\\76.36173\\-213.3334\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "265"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "87.6144\\-194.0768\\-37\\87.38904\\-193.8021\\-37\\88.67167\\-191.849\\-37\\89.56753\\-191.091\\-37\\90.85798\\-191.849\\-37\\91.52065\\-192.6676\\-37\\92.0564\\-193.8021\\-37\\91.52065\\-194.7098\\-37\\89.56753\\-194.9929\\-37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "90"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "266"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-123.3231\\-219.6781\\-35\\-125.2762\\-218.9337\\-35\\-129.1825\\-218.8888\\-35\\-131.1356\\-218.5187\\-35\\-133.0887\\-217.719\\-35\\-135.0419\\-216.0215\\-35\\-136.995\\-214.9717\\-35\\-138.9481\\-214.0781\\-35\\-140.9012\\-212.9367\\-35\\-142.8544\\-212.5997\\-35\\-144.7113\\-211.3803\\-35\\-145.9468\\-209.4271\\-35\\-146.1321\\-205.5209\\-35\\-146.5131\\-203.5678\\-35\\-146.5489\\-201.6146\\-35\\-146.1251\\-199.6615\\-35\\-146.1043\\-197.7084\\-35\\-145.7338\\-195.7553\\-35\\-144.8075\\-194.9319\\-35\\-142.8544\\-197.5863\\-35\\-140.9012\\-198.7272\\-35\\-138.9481\\-198.8916\\-35\\-137.2946\\-199.6615\\-35\\-135.0419\\-200.9907\\-35\\-133.0887\\-201.4402\\-35\\-131.1356\\-201.5339\\-35\\-129.1825\\-201.9612\\-35\\-127.2669\\-203.5678\\-35\\-125.9587\\-205.5209\\-35\\-125.2762\\-206.1919\\-35\\-123.3231\\-207.012\\-35\\-121.37\\-206.9377\\-35\\-119.4168\\-205.8319\\-35\\-119.135\\-205.5209\\-35\\-119.1694\\-203.5678\\-35\\-120.2248\\-201.6146\\-35\\-120.2616\\-199.6615\\-35\\-119.4168\\-198.8965\\-35\\-117.4637\\-197.7943\\-35\\-116.2377\\-195.7553\\-35\\-113.5575\\-192.9554\\-35\\-111.6043\\-191.1783\\-35\\-109.6512\\-190.3074\\-35\\-107.6981\\-189.7343\\-35\\-105.745\\-190.1451\\-35\\-103.7918\\-190.862\\-35\\-99.8856\\-191.0617\\-35\\-97.93247\\-192.5251\\-35\\-95.97935\\-193.2017\\-35\\-94.02622\\-193.0051\\-35\\-92.0731\\-192.141\\-35\\-89.33598\\-189.8959\\-35\\-88.16685\\-188.7742\\-35\\-86.21372\\-187.924\\-35\\-84.2606\\-186.3664\\-35\\-82.30747\\-186.3567\\-35\\-80.35435\\-186.6385\\-35\\-78.40122\\-187.3481\\-35\\-76.4481\\-187.3781\\-35\\-75.69348\\-187.9428\\-35\\-75.89451\\-189.8959\\-35\\-75.73863\\-193.8021\\-35\\-75.10277\\-195.7553\\-35\\-75.31027\\-197.7084\\-35\\-76.64754\\-199.6615\\-35\\-76.69559\\-203.5678\\-35\\-76.84288\\-205.5209\\-35\\-78.40122\\-207.4483\\-35\\-80.35435\\-209.282\\-35\\-82.30747\\-210.0026\\-35\\-84.2606\\-210.1389\\-35\\-87.67857\\-209.4271\\-35\\-90.11997\\-209.1467\\-35\\-92.0731\\-209.0057\\-35\\-92.86186\\-209.4271\\-35\\-94.02622\\-210.3004\\-35\\-95.97935\\-210.9309\\-35\\-97.93247\\-210.9739\\-35\\-99.8856\\-211.2059\\-35\\-101.8387\\-210.9094\\-35\\-103.7918\\-210.834\\-35\\-105.745\\-212.1018\\-35\\-107.6981\\-213.9302\\-35\\-109.6512\\-214.7483\\-35\\-111.6043\\-215.0047\\-35\\-113.5575\\-216.2529\\-35\\-115.5106\\-217.0402\\-35\\-115.759\\-217.2396\\-35\\-119.2569\\-219.1928\\-35\\-121.37\\-220.0747\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "267"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-54.96373\\-200.9616\\-35\\-56.29595\\-199.6615\\-35\\-57.67428\\-197.7084\\-35\\-59.59977\\-195.7553\\-35\\-61.86001\\-193.8021\\-35\\-62.77623\\-192.9011\\-35\\-64.72935\\-191.6668\\-35\\-66.68247\\-191.6707\\-35\\-68.6356\\-192.15\\-35\\-69.19187\\-191.849\\-35\\-70.58872\\-190.2948\\-35\\-71.56528\\-187.9428\\-35\\-72.9435\\-185.9896\\-35\\-73.67995\\-184.0365\\-35\\-74.49497\\-183.3715\\-35\\-76.4481\\-181.4975\\-35\\-78.40122\\-180.6604\\-35\\-80.35435\\-179.4977\\-35\\-82.30747\\-178.7184\\-35\\-83.27407\\-178.1771\\-35\\-84.38067\\-176.224\\-35\\-83.06852\\-174.2709\\-35\\-79.86026\\-170.3646\\-35\\-79.1896\\-168.4115\\-35\\-77.44578\\-166.4584\\-35\\-73.20489\\-162.5521\\-35\\-72.54185\\-161.8856\\-35\\-70.58872\\-161.3106\\-35\\-68.6356\\-161.061\\-35\\-66.68247\\-160.5913\\-35\\-64.72935\\-160.5176\\-35\\-62.77623\\-161.9594\\-35\\-62.20657\\-162.5521\\-35\\-61.72136\\-164.5053\\-35\\-61.54926\\-166.4584\\-35\\-62.10673\\-168.4115\\-35\\-62.31426\\-170.3646\\-35\\-61.8607\\-172.3178\\-35\\-60.9051\\-174.2709\\-35\\-60.46628\\-176.224\\-35\\-60.39773\\-180.1303\\-35\\-59.85492\\-182.0834\\-35\\-59.01859\\-184.0365\\-35\\-58.68298\\-185.9896\\-35\\-57.15421\\-189.8959\\-35\\-56.82211\\-191.849\\-35\\-55.84214\\-193.8021\\-35\\-54.06648\\-195.7553\\-35\\-53.39754\\-197.7084\\-35\\-53.57134\\-199.6615\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "268"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-161.3586\\-35\\-42.70438\\-158.6459\\-35\\-44.47339\\-156.6928\\-35\\-46.09591\\-154.7396\\-35\\-46.71387\\-152.7865\\-35\\-47.46346\\-150.8334\\-35\\-49.10435\\-149.4706\\-35\\-50.90443\\-150.8334\\-35\\-51.27577\\-152.7865\\-35\\-52.74837\\-154.7396\\-35\\-53.26122\\-154.7396\\-35\\-53.79916\\-152.7865\\-35\\-53.0106\\-150.896\\-35\\-52.635\\-150.8334\\-35\\-51.72565\\-148.8803\\-35\\-50.52324\\-146.9271\\-35\\-49.55927\\-144.974\\-35\\-48.09104\\-143.0209\\-35\\-47.15123\\-140.7805\\-35\\-46.6485\\-139.1146\\-35\\-45.8964\\-137.1615\\-35\\-44.29406\\-135.2084\\-35\\-42.41464\\-133.2553\\-35\\-41.29185\\-132.236\\-35\\-39.33873\\-130.6812\\-35\\-37.3856\\-129.9437\\-35\\-35.43248\\-128.6191\\-35\\-33.47935\\-127.8842\\-35\\-31.52623\\-127.8578\\-35\\-29.5731\\-128.0898\\-35\\-27.61998\\-128.8398\\-35\\-25.66685\\-129.8199\\-35\\-23.71373\\-130.381\\-35\\-20.92836\\-133.2553\\-35\\-18.92436\\-135.2084\\-35\\-17.90653\\-137.1615\\-35\\-17.89191\\-139.1146\\-35\\-16.90338\\-141.0678\\-35\\-16.18305\\-143.0209\\-35\\-14.94932\\-144.974\\-35\\-12.97154\\-146.9271\\-35\\-12.2411\\-148.8803\\-35\\-11.89952\\-150.8334\\-35\\-11.79269\\-152.7865\\-35\\-13.00705\\-154.7396\\-35\\-13.9481\\-155.6219\\-35\\-14.82535\\-154.7396\\-35\\-14.29687\\-152.7865\\-35\\-14.1598\\-150.8334\\-35\\-15.90123\\-149.1732\\-35\\-17.77358\\-150.8334\\-35\\-18.63849\\-152.7865\\-35\\-19.37948\\-154.7396\\-35\\-20.97223\\-156.6928\\-35\\-23.71373\\-159.4323\\-35\\-25.66685\\-160.6938\\-35\\-27.61998\\-161.3106\\-35\\-29.5731\\-161.6804\\-35\\-31.52623\\-162.2179\\-35\\-35.43248\\-162.2071\\-35\\-37.3856\\-161.713\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "269"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "19.25502\\-239.6371\\-35\\17.3019\\-238.4071\\-35\\13.39565\\-236.4669\\-35\\11.44252\\-235.3436\\-35\\9.380892\\-232.8646\\-35\\9.761773\\-230.9115\\-35\\10.89999\\-228.9584\\-35\\11.44252\\-228.4701\\-35\\13.39565\\-227.7592\\-35\\15.34877\\-226.6587\\-35\\17.3019\\-226.4055\\-35\\21.20815\\-225.6172\\-35\\23.16127\\-225.9236\\-35\\25.20318\\-227.0053\\-35\\27.06752\\-227.8598\\-35\\29.02065\\-228.3019\\-35\\29.75917\\-228.9584\\-35\\29.55279\\-230.9115\\-35\\27.97433\\-232.8646\\-35\\26.5293\\-234.8178\\-35\\25.1144\\-236.5118\\-35\\23.16127\\-237.5291\\-35\\21.20815\\-239.3961\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "270"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-201.9136\\-35\\53.59747\\-201.6146\\-35\\52.45815\\-199.9956\\-35\\52.36341\\-197.7084\\-35\\53.33706\\-195.7553\\-35\\55.26383\\-193.8021\\-35\\56.25589\\-191.849\\-35\\56.28363\\-187.9428\\-35\\57.22063\\-185.9896\\-35\\57.7793\\-184.0365\\-35\\57.51123\\-182.0834\\-35\\57.76821\\-180.1303\\-35\\58.15593\\-178.1771\\-35\\58.16891\\-170.3646\\-35\\58.10582\\-168.4115\\-35\\58.13052\\-164.5053\\-35\\57.31749\\-162.5521\\-35\\57.2233\\-160.599\\-35\\58.31752\\-160.0584\\-35\\60.27065\\-161.061\\-35\\64.1769\\-161.0873\\-35\\66.13003\\-161.3469\\-35\\68.08315\\-161.4144\\-35\\70.03628\\-162.1307\\-35\\71.9894\\-163.2013\\-35\\73.94253\\-163.7067\\-35\\75.89565\\-164.9122\\-35\\77.84878\\-165.6412\\-35\\79.8019\\-166.8141\\-35\\81.22079\\-168.4115\\-35\\82.55313\\-170.3646\\-35\\82.60838\\-172.3178\\-35\\81.75503\\-173.4959\\-35\\80.85863\\-174.2709\\-35\\76.94675\\-178.1771\\-35\\75.89565\\-179.0117\\-35\\73.94253\\-180.8627\\-35\\71.9894\\-182.478\\-35\\69.76888\\-184.0365\\-35\\68.08315\\-186.4474\\-35\\66.61831\\-187.9428\\-35\\66.13003\\-188.2821\\-35\\64.1769\\-188.3293\\-35\\62.22377\\-188.9602\\-35\\61.30258\\-189.8959\\-35\\60.07121\\-191.849\\-35\\58.31752\\-195.5859\\-35\\57.17006\\-197.7084\\-35\\55.78962\\-199.6615\\-35\\54.7082\\-201.6146\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "271"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "83.70815\\-197.1969\\-35\\82.93191\\-195.7553\\-35\\83.70815\\-194.6741\\-35\\84.81788\\-193.8021\\-35\\85.66128\\-193.622\\-35\\86.85485\\-191.849\\-35\\87.6144\\-191.1654\\-35\\89.56753\\-190.1796\\-35\\91.52065\\-190.451\\-35\\92.70728\\-191.849\\-35\\92.86343\\-193.8021\\-35\\91.52065\\-195.6323\\-35\\89.56753\\-195.6605\\-35\\85.66128\\-196.2834\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "272"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "87.6144\\-230.2388\\-35\\85.91978\\-228.9584\\-35\\85.71731\\-227.0053\\-35\\83.70815\\-224.9795\\-35\\79.8019\\-224.8611\\-35\\77.84878\\-223.0255\\-35\\76.00873\\-221.1459\\-35\\74.92722\\-219.1928\\-35\\74.13476\\-217.2396\\-35\\72.71243\\-215.2865\\-35\\72.33817\\-213.3334\\-35\\74.01433\\-209.4271\\-35\\73.93465\\-207.474\\-35\\73.04331\\-203.5678\\-35\\71.34611\\-201.6146\\-35\\70.73045\\-199.6615\\-35\\71.9894\\-198.647\\-35\\73.94253\\-198.6292\\-35\\75.89565\\-199.6522\\-35\\77.84878\\-201.0786\\-35\\79.8019\\-200.6496\\-35\\81.25401\\-199.6615\\-35\\81.75503\\-198.7322\\-35\\82.30376\\-199.6615\\-35\\82.78518\\-201.6146\\-35\\83.70815\\-202.9309\\-35\\85.66128\\-203.1446\\-35\\86.27755\\-203.5678\\-35\\87.6144\\-205.0977\\-35\\89.56753\\-207.7792\\-35\\91.32534\\-209.4271\\-35\\92.09264\\-211.3803\\-35\\93.47378\\-213.1381\\-35\\94.11066\\-215.2865\\-35\\95.4269\\-216.9378\\-35\\97.04266\\-219.1928\\-35\\96.71542\\-221.1459\\-35\\96.02049\\-223.099\\-35\\95.4269\\-224.1802\\-35\\95.19438\\-225.0521\\-35\\94.07109\\-227.0053\\-35\\93.47378\\-228.287\\-35\\91.68341\\-228.9584\\-35\\89.56753\\-230.5816\\-35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "94"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "273"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-125.2762\\-219.3414\\-33\\-129.1825\\-218.9811\\-33\\-131.1356\\-218.8998\\-33\\-133.0887\\-217.8853\\-33\\-135.0419\\-215.9915\\-33\\-136.995\\-214.9504\\-33\\-138.9481\\-214.0781\\-33\\-140.9012\\-212.9367\\-33\\-142.8544\\-212.3946\\-33\\-143.9366\\-211.3803\\-33\\-145.2811\\-209.4271\\-33\\-146.0367\\-205.5209\\-33\\-146.1321\\-203.5678\\-33\\-146.0824\\-197.7084\\-33\\-144.8075\\-196.1472\\-33\\-142.8544\\-197.9559\\-33\\-140.9012\\-198.7036\\-33\\-136.995\\-200.4174\\-33\\-135.0419\\-201.3789\\-33\\-133.0887\\-201.5339\\-33\\-131.1356\\-201.5199\\-33\\-129.1825\\-201.2741\\-33\\-127.2293\\-201.4268\\-33\\-126.7598\\-201.6146\\-33\\-125.5307\\-203.5678\\-33\\-125.2762\\-204.1505\\-33\\-124.3322\\-205.5209\\-33\\-123.3231\\-206.2777\\-33\\-121.37\\-206.104\\-33\\-120.6831\\-205.5209\\-33\\-120.6131\\-203.5678\\-33\\-121.37\\-202.2122\\-33\\-121.9766\\-201.6146\\-33\\-120.6297\\-199.6615\\-33\\-119.4168\\-199.2085\\-33\\-117.4637\\-198.6468\\-33\\-116.5253\\-197.7084\\-33\\-114.2613\\-193.8021\\-33\\-111.6043\\-191.0171\\-33\\-109.6512\\-189.7089\\-33\\-105.745\\-189.3403\\-33\\-103.7918\\-189.6673\\-33\\-99.8856\\-189.8437\\-33\\-95.97935\\-191.3452\\-33\\-94.02622\\-191.078\\-33\\-92.0731\\-190.0478\\-33\\-90.11997\\-188.8513\\-33\\-89.36838\\-187.9428\\-33\\-87.50687\\-185.9896\\-33\\-86.21372\\-183.9893\\-33\\-84.2606\\-182.353\\-33\\-82.30747\\-182.8104\\-33\\-80.83612\\-184.0365\\-33\\-80.35435\\-184.2983\\-33\\-78.40122\\-186.0272\\-33\\-76.4481\\-186.1653\\-33\\-74.49497\\-186.4413\\-33\\-73.67226\\-187.9428\\-33\\-74.64359\\-189.8959\\-33\\-74.09286\\-191.849\\-33\\-73.10116\\-193.8021\\-33\\-72.87837\\-195.7553\\-33\\-72.85409\\-197.7084\\-33\\-73.07223\\-199.6615\\-33\\-73.46656\\-201.6146\\-33\\-74.49497\\-203.9625\\-33\\-74.93887\\-205.5209\\-33\\-75.83857\\-207.474\\-33\\-76.4481\\-208.2006\\-33\\-78.40122\\-210.173\\-33\\-80.35435\\-212.0443\\-33\\-82.30747\\-212.8906\\-33\\-84.1835\\-213.3334\\-33\\-86.21372\\-214.0824\\-33\\-88.16685\\-214.1863\\-33\\-89.48808\\-213.3334\\-33\\-90.11997\\-213.0714\\-33\\-92.0731\\-212.5814\\-33\\-94.02622\\-212.56\\-33\\-95.97935\\-212.6978\\-33\\-97.93247\\-212.6573\\-33\\-99.8856\\-212.5172\\-33\\-101.8387\\-211.6124\\-33\\-103.7918\\-211.2175\\-33\\-106.2083\\-213.3334\\-33\\-107.6981\\-214.4307\\-33\\-109.6512\\-214.9825\\-33\\-111.6043\\-215.0274\\-33\\-113.5575\\-216.2682\\-33\\-115.5106\\-217.0652\\-33\\-117.4637\\-218.076\\-33\\-119.4168\\-219.6752\\-33\\-121.37\\-220.2895\\-33\\-123.3231\\-219.7484\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "274"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-54.96373\\-202.3925\\-33\\-55.65693\\-201.6146\\-33\\-56.91685\\-199.3943\\-33\\-57.75587\\-197.7084\\-33\\-61.61751\\-193.8021\\-33\\-62.81692\\-191.849\\-33\\-64.72935\\-190.6218\\-33\\-66.68247\\-189.9035\\-33\\-68.6356\\-188.1451\\-33\\-70.46767\\-185.9896\\-33\\-72.54185\\-183.7442\\-33\\-74.49497\\-182.4217\\-33\\-76.4481\\-180.9667\\-33\\-78.40122\\-179.3165\\-33\\-80.35435\\-178.5465\\-33\\-80.89283\\-178.1771\\-33\\-82.22671\\-176.224\\-33\\-81.60573\\-172.3178\\-33\\-81.18067\\-170.3646\\-33\\-79.87784\\-168.4115\\-33\\-78.68305\\-166.4584\\-33\\-78.40122\\-166.1766\\-33\\-74.49497\\-163.4722\\-33\\-72.54185\\-161.5184\\-33\\-70.58872\\-160.3923\\-33\\-68.6356\\-160.5176\\-33\\-66.68247\\-159.8754\\-33\\-64.72935\\-159.7939\\-33\\-61.91152\\-162.5521\\-33\\-61.15076\\-164.5053\\-33\\-62.29661\\-168.4115\\-33\\-62.36028\\-170.3646\\-33\\-62.12689\\-172.3178\\-33\\-61.65126\\-174.2709\\-33\\-60.46628\\-176.224\\-33\\-60.45611\\-180.1303\\-33\\-59.2669\\-185.9896\\-33\\-58.39346\\-187.9428\\-33\\-56.91685\\-191.7164\\-33\\-55.84214\\-193.8021\\-33\\-53.91166\\-195.7553\\-33\\-53.04816\\-197.7084\\-33\\-53.04816\\-199.6615\\-33\\-53.76918\\-201.6146\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "58"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "275"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-161.1403\\-33\\-38.84293\\-160.599\\-33\\-41.29185\\-159.4142\\-33\\-44.04049\\-156.6928\\-33\\-45.29284\\-154.7396\\-33\\-46.24857\\-152.7865\\-33\\-46.76184\\-150.8334\\-33\\-47.15123\\-150.381\\-33\\-49.10435\\-149.1508\\-33\\-50.96273\\-150.8334\\-33\\-52.3475\\-152.7865\\-33\\-53.0106\\-153.3519\\-33\\-53.38102\\-152.7865\\-33\\-53.0106\\-150.9961\\-33\\-52.46807\\-150.8334\\-33\\-50.89589\\-146.9271\\-33\\-49.3189\\-144.974\\-33\\-47.28666\\-143.0209\\-33\\-46.65713\\-141.0678\\-33\\-46.12841\\-139.1146\\-33\\-45.1981\\-137.4312\\-33\\-43.68829\\-135.2084\\-33\\-41.29185\\-132.8233\\-33\\-39.33873\\-131.619\\-33\\-37.3856\\-130.3114\\-33\\-35.43248\\-128.7742\\-33\\-33.47935\\-128.0049\\-33\\-31.52623\\-127.8118\\-33\\-29.5731\\-127.8306\\-33\\-27.61998\\-128.5794\\-33\\-25.66685\\-129.7929\\-33\\-23.71373\\-130.0122\\-33\\-22.27795\\-131.3021\\-33\\-20.9067\\-133.2553\\-33\\-18.92436\\-135.2084\\-33\\-17.90653\\-137.1615\\-33\\-17.58382\\-139.1146\\-33\\-16.12502\\-143.0209\\-33\\-14.70356\\-144.974\\-33\\-12.56649\\-146.9271\\-33\\-12.19843\\-148.8803\\-33\\-11.35688\\-150.8334\\-33\\-11.22344\\-152.7865\\-33\\-13.9481\\-155.5176\\-33\\-14.93164\\-154.7396\\-33\\-14.65225\\-152.7865\\-33\\-14.1598\\-150.8334\\-33\\-15.94602\\-148.8803\\-33\\-17.86198\\-150.8334\\-33\\-18.74681\\-152.7865\\-33\\-20.57584\\-154.7396\\-33\\-21.7606\\-156.3061\\-33\\-24.13324\\-158.6459\\-33\\-25.66685\\-159.7348\\-33\\-27.61998\\-160.6366\\-33\\-29.5731\\-161.3043\\-33\\-31.52623\\-161.425\\-33\\-35.43248\\-161.4197\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "276"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "15.34877\\-239.1022\\-33\\13.39565\\-237.9395\\-33\\11.85485\\-236.7709\\-33\\10.44438\\-234.8178\\-33\\9.315013\\-232.8646\\-33\\9.598716\\-230.9115\\-33\\10.95786\\-228.9584\\-33\\11.44252\\-228.552\\-33\\13.39565\\-228.0795\\-33\\15.34877\\-227.354\\-33\\17.3019\\-226.4055\\-33\\19.25502\\-225.9254\\-33\\21.20815\\-224.6751\\-33\\25.1144\\-225.975\\-33\\29.02065\\-227.4666\\-33\\30.97377\\-228.9288\\-33\\29.02065\\-232.8121\\-33\\27.81247\\-234.8178\\-33\\26.42274\\-236.7709\\-33\\25.1144\\-237.9048\\-33\\21.20815\\-240.0244\\-33\\19.25502\\-240.0486\\-33\\17.3019\\-239.77\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "277"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.34964\\-201.6146\\-33\\52.27115\\-199.6615\\-33\\52.55289\\-197.7084\\-33\\53.46571\\-195.7553\\-33\\55.12597\\-193.8021\\-33\\55.93793\\-191.849\\-33\\56.25589\\-189.8959\\-33\\56.28363\\-187.9428\\-33\\58.11808\\-184.0365\\-33\\58.05844\\-182.0834\\-33\\58.15593\\-178.1771\\-33\\58.15593\\-174.2709\\-33\\58.50452\\-172.3178\\-33\\58.50452\\-170.3646\\-33\\58.16891\\-168.4115\\-33\\58.15593\\-164.5053\\-33\\57.79557\\-162.5521\\-33\\58.31752\\-161.8589\\-33\\60.27065\\-160.9957\\-33\\64.1769\\-160.319\\-33\\68.08315\\-160.4182\\-33\\70.03628\\-160.8714\\-33\\71.9894\\-161.634\\-33\\73.94253\\-162.7928\\-33\\75.89565\\-163.5897\\-33\\77.84878\\-164.8691\\-33\\79.8019\\-165.6863\\-33\\81.75503\\-167.5254\\-33\\82.48745\\-168.4115\\-33\\82.84544\\-170.3646\\-33\\81.88372\\-172.3178\\-33\\79.8019\\-173.6295\\-33\\77.84878\\-175.579\\-33\\75.89565\\-177.4045\\-33\\74.66261\\-178.1771\\-33\\73.94253\\-178.8561\\-33\\71.9894\\-180.211\\-33\\70.03628\\-180.8627\\-33\\68.08315\\-183.0457\\-33\\66.13003\\-184.6414\\-33\\64.1769\\-186.0129\\-33\\62.22377\\-187.609\\-33\\60.27065\\-191.4682\\-33\\59.16356\\-193.8021\\-33\\58.14314\\-195.7553\\-33\\56.3644\\-199.3952\\-33\\55.35366\\-201.6146\\-33\\54.41127\\-202.8796\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "18"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "278"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "79.8019\\-197.4398\\-33\\78.11733\\-195.7553\\-33\\78.22855\\-193.8021\\-33\\79.8019\\-192.7979\\-33\\81.75503\\-192.1081\\-33\\83.70815\\-192.1745\\-33\\85.66128\\-191.8261\\-33\\87.6144\\-190.6442\\-33\\89.56753\\-189.6842\\-33\\91.52065\\-190.1349\\-33\\93.47378\\-191.1016\\-33\\93.93442\\-191.849\\-33\\92.93954\\-193.8021\\-33\\91.52065\\-195.3891\\-33\\89.56753\\-195.7629\\-33\\87.6144\\-196.4263\\-33\\85.66128\\-197.3573\\-33\\83.70815\\-198.0123\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "279"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "81.75503\\-249.0608\\-33\\81.15356\\-248.4896\\-33\\80.59066\\-246.5365\\-33\\79.8019\\-245.56\\-33\\79.27152\\-244.5834\\-33\\77.69067\\-242.6303\\-33\\76.53547\\-238.724\\-33\\77.23124\\-236.7709\\-33\\76.4201\\-234.8178\\-33\\74.38197\\-232.8646\\-33\\74.62612\\-230.9115\\-33\\75.09541\\-228.9584\\-33\\75.30634\\-227.0053\\-33\\75.22546\\-225.0521\\-33\\74.67494\\-223.099\\-33\\75.33533\\-221.1459\\-33\\75.56055\\-219.1928\\-33\\75.63273\\-217.2396\\-33\\75.60352\\-215.2865\\-33\\75.76389\\-213.3334\\-33\\77.23124\\-211.3803\\-33\\77.46664\\-209.4271\\-33\\77.12178\\-207.474\\-33\\75.89565\\-205.8976\\-33\\75.89565\\-205.0814\\-33\\77.25117\\-203.5678\\-33\\79.8019\\-202.2848\\-33\\80.48346\\-203.5678\\-33\\81.75503\\-205.0039\\-33\\83.70815\\-205.2409\\-33\\84.63929\\-205.5209\\-33\\85.66128\\-206.5672\\-33\\85.94763\\-207.474\\-33\\86.01722\\-209.4271\\-33\\86.8657\\-211.3803\\-33\\87.6144\\-212.1548\\-33\\87.97801\\-213.3334\\-33\\88.98159\\-215.2865\\-33\\89.56753\\-215.8725\\-33\\90.02325\\-217.2396\\-33\\91.52065\\-218.737\\-33\\91.83713\\-219.1928\\-33\\92.2802\\-221.1459\\-33\\92.9448\\-223.099\\-33\\93.47378\\-223.628\\-33\\93.71792\\-225.0521\\-33\\93.74081\\-232.8646\\-33\\93.55515\\-234.8178\\-33\\91.99537\\-236.7709\\-33\\91.52065\\-237.9102\\-33\\90.70685\\-238.724\\-33\\90.20048\\-240.6771\\-33\\90.04893\\-242.6303\\-33\\89.56753\\-243.3898\\-33\\85.66128\\-247.0323\\-33\\83.70815\\-249.1578\\-33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "89"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "280"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-219.6928\\-31\\-129.1825\\-218.6723\\-31\\-131.1356\\-218.524\\-31\\-133.0887\\-217.7514\\-31\\-135.0419\\-215.9915\\-31\\-136.995\\-214.9504\\-31\\-138.9481\\-214.0781\\-31\\-140.9012\\-212.9367\\-31\\-142.8544\\-211.9764\\-31\\-143.4505\\-211.3803\\-31\\-144.1057\\-209.4271\\-31\\-144.5837\\-207.474\\-31\\-145.6569\\-205.5209\\-31\\-146.0306\\-203.5678\\-31\\-146.1181\\-201.6146\\-31\\-146.0786\\-197.7084\\-31\\-144.8075\\-196.4851\\-31\\-142.8544\\-197.9559\\-31\\-140.9012\\-198.6382\\-31\\-138.883\\-199.6615\\-31\\-135.0419\\-201.1442\\-31\\-133.0887\\-201.2057\\-31\\-131.1356\\-201.0489\\-31\\-129.1825\\-200.6632\\-31\\-127.2293\\-200.4288\\-31\\-125.2762\\-200.4878\\-31\\-123.3231\\-200.1997\\-31\\-121.37\\-199.6991\\-31\\-119.4168\\-199.6239\\-31\\-117.4637\\-198.8394\\-31\\-116.2655\\-197.7084\\-31\\-114.578\\-195.7553\\-31\\-113.7445\\-193.8021\\-31\\-112.451\\-191.849\\-31\\-111.6043\\-191.0023\\-31\\-109.6512\\-189.5189\\-31\\-107.6981\\-189.0296\\-31\\-105.745\\-188.6928\\-31\\-101.8387\\-188.6951\\-31\\-99.8856\\-189.0489\\-31\\-97.93247\\-189.7089\\-31\\-95.97935\\-190.1316\\-31\\-94.02622\\-189.5598\\-31\\-92.0731\\-189.1843\\-31\\-90.11997\\-189.0322\\-31\\-89.07288\\-187.9428\\-31\\-87.44096\\-185.9896\\-31\\-85.9319\\-182.0834\\-31\\-84.2606\\-180.6604\\-31\\-82.30747\\-180.4558\\-31\\-80.35435\\-181.0629\\-31\\-79.73653\\-182.0834\\-31\\-77.74393\\-184.0365\\-31\\-76.4481\\-185.0732\\-31\\-74.49497\\-185.0459\\-31\\-72.99659\\-185.9896\\-31\\-72.57941\\-187.9428\\-31\\-72.63659\\-189.8959\\-31\\-71.31686\\-191.849\\-31\\-70.82445\\-193.8021\\-31\\-70.80043\\-195.7553\\-31\\-71.21017\\-199.6615\\-31\\-71.63504\\-201.6146\\-31\\-72.70344\\-203.5678\\-31\\-73.58108\\-205.5209\\-31\\-75.78197\\-209.4271\\-31\\-77.59383\\-211.3803\\-31\\-80.35435\\-213.794\\-31\\-82.30747\\-214.6583\\-31\\-84.21257\\-215.2865\\-31\\-86.21372\\-216.0712\\-31\\-88.16685\\-216.3721\\-31\\-90.11997\\-215.6844\\-31\\-92.0731\\-214.8136\\-31\\-94.02622\\-214.1318\\-31\\-95.97935\\-214.1618\\-31\\-97.93247\\-214.0367\\-31\\-99.8856\\-213.159\\-31\\-101.8387\\-212.9766\\-31\\-103.7918\\-213.3613\\-31\\-105.745\\-214.4544\\-31\\-107.6981\\-214.7982\\-31\\-109.6512\\-215.0047\\-31\\-111.6043\\-215.016\\-31\\-113.5575\\-216.103\\-31\\-117.4637\\-217.5862\\-31\\-121.37\\-219.6896\\-31\\-123.3231\\-219.2303\\-31\\-125.2762\\-219.9428\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "281"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-54.96373\\-203.7509\\-31\\-56.78141\\-199.6615\\-31\\-57.76504\\-197.7084\\-31\\-59.73958\\-195.7553\\-31\\-61.10683\\-193.8021\\-31\\-61.91074\\-191.849\\-31\\-62.77623\\-190.9077\\-31\\-64.72935\\-189.4895\\-31\\-66.68247\\-188.5299\\-31\\-70.58872\\-184.6664\\-31\\-72.54185\\-183.5101\\-31\\-73.51841\\-182.0834\\-31\\-74.49497\\-181.2054\\-31\\-76.4481\\-180.7151\\-31\\-78.40122\\-179.4772\\-31\\-80.35435\\-177.767\\-31\\-81.42586\\-176.224\\-31\\-81.82787\\-174.2709\\-31\\-81.79379\\-172.3178\\-31\\-81.59946\\-170.3646\\-31\\-81.15025\\-168.4115\\-31\\-79.4509\\-166.4584\\-31\\-76.4481\\-163.8098\\-31\\-74.7307\\-162.5521\\-31\\-72.54185\\-160.4066\\-31\\-70.58872\\-159.4619\\-31\\-68.6356\\-159.7387\\-31\\-66.68247\\-159.7262\\-31\\-64.72935\\-159.5576\\-31\\-62.77623\\-161.5088\\-31\\-61.90291\\-162.5521\\-31\\-61.22522\\-164.5053\\-31\\-62.34154\\-168.4115\\-31\\-62.33233\\-172.3178\\-31\\-61.7668\\-174.2709\\-31\\-60.46628\\-176.224\\-31\\-60.46628\\-180.1303\\-31\\-60.81547\\-182.0834\\-31\\-60.27378\\-184.0365\\-31\\-60.19531\\-185.9896\\-31\\-59.8581\\-187.9428\\-31\\-57.88843\\-189.8959\\-31\\-55.84214\\-193.8021\\-31\\-54.03829\\-195.7553\\-31\\-53.26969\\-197.7084\\-31\\-53.00297\\-199.6615\\-31\\-53.05666\\-201.6146\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "57"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "282"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-159.4514\\-31\\-41.29185\\-158.1486\\-31\\-43.24498\\-156.2358\\-31\\-44.46059\\-154.7396\\-31\\-45.50206\\-152.7865\\-31\\-46.26005\\-150.8334\\-31\\-47.15123\\-149.7388\\-31\\-49.10435\\-148.8879\\-31\\-51.05748\\-150.9863\\-31\\-52.46807\\-150.8334\\-31\\-51.9134\\-148.8803\\-31\\-51.05748\\-146.808\\-31\\-47.15123\\-143.6895\\-31\\-46.63997\\-143.0209\\-31\\-46.11813\\-141.0678\\-31\\-44.99866\\-139.1146\\-31\\-44.17576\\-137.1615\\-31\\-42.40722\\-135.2084\\-31\\-39.33873\\-132.2182\\-31\\-37.3856\\-130.516\\-31\\-35.27766\\-129.349\\-31\\-33.47935\\-128.5388\\-31\\-31.52623\\-128.1554\\-31\\-29.5731\\-128.1484\\-31\\-27.61998\\-128.7584\\-31\\-25.66685\\-129.7837\\-31\\-23.71373\\-129.811\\-31\\-21.7606\\-130.9452\\-31\\-21.42451\\-131.3021\\-31\\-20.78873\\-133.2553\\-31\\-18.91927\\-135.2084\\-31\\-17.85435\\-137.241\\-31\\-17.07215\\-139.1146\\-31\\-16.56407\\-141.0678\\-31\\-15.77916\\-143.0209\\-31\\-13.9481\\-144.9816\\-31\\-12.26551\\-146.9271\\-31\\-12.17466\\-148.8803\\-31\\-11.29743\\-150.8334\\-31\\-11.50302\\-152.7865\\-31\\-11.99498\\-153.1929\\-31\\-13.9481\\-154.211\\-31\\-14.76533\\-152.7865\\-31\\-14.38279\\-150.8334\\-31\\-15.36007\\-148.8803\\-31\\-15.90123\\-148.3715\\-31\\-16.76818\\-148.8803\\-31\\-17.85435\\-150.2277\\-31\\-18.16916\\-150.8334\\-31\\-18.8496\\-152.7865\\-31\\-23.71373\\-157.717\\-31\\-25.66685\\-159.3539\\-31\\-27.61998\\-159.7187\\-31\\-29.5731\\-160.3427\\-31\\-31.52623\\-160.3923\\-31\\-35.43248\\-160.3672\\-31\\-37.3856\\-159.7738\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "283"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "13.39565\\-238.9597\\-31\\11.44252\\-237.5856\\-31\\10.6466\\-236.7709\\-31\\9.866426\\-234.8178\\-31\\9.58414\\-232.8646\\-31\\10.31266\\-230.9115\\-31\\12.01738\\-228.9584\\-31\\13.39565\\-228.0947\\-31\\17.3019\\-226.4204\\-31\\19.25502\\-225.912\\-31\\21.20815\\-224.3524\\-31\\23.16127\\-224.3463\\-31\\27.06752\\-225.3581\\-31\\29.02065\\-225.577\\-31\\31.37942\\-227.0053\\-31\\32.42626\\-228.9584\\-31\\31.35626\\-230.9115\\-31\\30.60756\\-232.8646\\-31\\29.36881\\-234.8178\\-31\\27.81126\\-236.7709\\-31\\27.06752\\-237.4728\\-31\\25.1144\\-238.7906\\-31\\23.16127\\-239.6912\\-31\\21.20815\\-239.9238\\-31\\17.3019\\-240.2242\\-31\\15.34877\\-239.8147\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "284"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-205.1077\\-31\\52.84725\\-203.5678\\-31\\52.28376\\-201.6146\\-31\\52.27115\\-199.6615\\-31\\53.8946\\-195.7553\\-31\\54.85517\\-193.8021\\-31\\56.25589\\-189.8959\\-31\\56.28363\\-187.9428\\-31\\58.15593\\-184.0365\\-31\\58.15593\\-174.2709\\-31\\59.06606\\-172.3178\\-31\\59.15105\\-170.3646\\-31\\58.71425\\-168.4115\\-31\\58.68687\\-162.5521\\-31\\60.27065\\-160.8599\\-31\\62.22377\\-159.7708\\-31\\64.1769\\-159.4514\\-31\\70.03628\\-159.4567\\-31\\71.9894\\-160.1437\\-31\\72.69869\\-160.599\\-31\\75.89565\\-162.2024\\-31\\79.8019\\-165.0333\\-31\\81.75503\\-166.1766\\-31\\82.04069\\-166.4584\\-31\\82.87807\\-168.4115\\-31\\82.66936\\-170.3646\\-31\\81.75503\\-171.3839\\-31\\79.8019\\-172.9037\\-31\\77.84878\\-175.1852\\-31\\75.89565\\-176.7036\\-31\\73.94253\\-176.7036\\-31\\71.9894\\-176.8089\\-31\\70.40326\\-178.1771\\-31\\69.19024\\-180.1303\\-31\\68.08315\\-181.3523\\-31\\66.13003\\-183.028\\-31\\62.22377\\-185.121\\-31\\61.33549\\-185.9896\\-31\\60.58546\\-189.8959\\-31\\59.74481\\-191.849\\-31\\59.06133\\-193.8021\\-31\\58.14314\\-195.7553\\-31\\56.3644\\-200.101\\-31\\55.83943\\-201.6146\\-31\\55.67833\\-203.5678\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "285"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "75.89565\\-199.2474\\-31\\74.0535\\-197.7084\\-31\\73.55559\\-195.7553\\-31\\73.94253\\-195.1338\\-31\\74.24147\\-193.8021\\-31\\75.89565\\-191.738\\-31\\77.84878\\-191.8566\\-31\\79.8019\\-191.7004\\-31\\83.70815\\-191.6874\\-31\\85.66128\\-191.0043\\-31\\87.6144\\-190.1316\\-31\\89.56753\\-190.1244\\-31\\91.52065\\-190.8572\\-31\\93.47378\\-191.4362\\-31\\93.76603\\-191.849\\-31\\92.53769\\-193.8021\\-31\\91.52065\\-194.8298\\-31\\89.56753\\-195.778\\-31\\87.6144\\-196.0592\\-31\\85.66128\\-196.8476\\-31\\83.70815\\-197.4727\\-31\\81.75503\\-197.1921\\-31\\79.8019\\-198.3816\\-31\\77.84878\\-199.2474\\-31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "139"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "286"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-127.2293\\-219.3881\\-29\\-129.1825\\-217.7076\\-29\\-131.1356\\-217.5695\\-29\\-133.0887\\-217.2623\\-29\\-135.0419\\-216.1757\\-29\\-138.9481\\-214.2551\\-29\\-140.9012\\-213.1848\\-29\\-142.5838\\-211.3803\\-29\\-143.7007\\-209.4271\\-29\\-144.5484\\-205.5209\\-29\\-145.6394\\-203.5678\\-29\\-146.0233\\-201.6146\\-29\\-146.0464\\-199.6615\\-29\\-145.6587\\-197.7084\\-29\\-144.8075\\-196.8956\\-29\\-142.8544\\-198.2997\\-29\\-140.9012\\-199.1202\\-29\\-138.9202\\-199.6615\\-29\\-136.995\\-200.0775\\-29\\-135.0419\\-200.6522\\-29\\-133.0887\\-200.7648\\-29\\-131.1356\\-200.3177\\-29\\-129.1825\\-200.1172\\-29\\-125.2762\\-200.3819\\-29\\-123.3231\\-199.7281\\-29\\-119.4168\\-199.6842\\-29\\-117.4637\\-199.3127\\-29\\-115.5106\\-197.4582\\-29\\-113.5575\\-194.4404\\-29\\-113.0632\\-193.8021\\-29\\-112.2835\\-191.849\\-29\\-109.6512\\-189.3186\\-29\\-107.6981\\-188.6497\\-29\\-105.745\\-187.7433\\-29\\-101.8387\\-187.7558\\-29\\-99.8856\\-188.7409\\-29\\-97.93247\\-189.3932\\-29\\-95.97935\\-189.6721\\-29\\-94.02622\\-189.4163\\-29\\-92.0731\\-189.3546\\-29\\-90.11997\\-189.4134\\-29\\-88.16685\\-188.1985\\-29\\-87.93829\\-187.9428\\-29\\-86.97095\\-185.9896\\-29\\-85.76984\\-184.0365\\-29\\-85.34517\\-182.0834\\-29\\-84.2606\\-180.5551\\-29\\-82.30747\\-178.4983\\-29\\-81.75746\\-178.1771\\-29\\-81.58187\\-176.224\\-29\\-81.82787\\-174.2709\\-29\\-82.26991\\-172.3178\\-29\\-82.47636\\-170.3646\\-29\\-81.70446\\-168.4115\\-29\\-80.70771\\-166.4584\\-29\\-80.35435\\-166.1119\\-29\\-78.40122\\-164.8563\\-29\\-76.4481\\-163.446\\-29\\-73.58817\\-160.599\\-29\\-72.54185\\-159.6563\\-29\\-70.58872\\-159.176\\-29\\-68.6356\\-159.552\\-29\\-66.68247\\-159.6225\\-29\\-64.72935\\-159.3055\\-29\\-62.8992\\-160.599\\-29\\-62.30538\\-162.5521\\-29\\-62.41241\\-164.5053\\-29\\-62.32963\\-166.4584\\-29\\-62.36028\\-172.3178\\-29\\-61.87077\\-174.2709\\-29\\-60.98705\\-176.224\\-29\\-60.46628\\-178.1771\\-29\\-60.48701\\-180.1303\\-29\\-61.40361\\-182.0834\\-29\\-61.33678\\-185.9896\\-29\\-61.00002\\-187.9428\\-29\\-58.86998\\-189.3262\\-29\\-58.19538\\-189.8959\\-29\\-56.82211\\-191.849\\-29\\-55.97481\\-193.8021\\-29\\-54.7128\\-195.7553\\-29\\-53.352\\-199.6615\\-29\\-53.00297\\-201.6146\\-29\\-53.65265\\-205.5209\\-29\\-54.10408\\-207.474\\-29\\-54.96373\\-208.9447\\-29\\-56.68303\\-207.474\\-29\\-57.83916\\-205.5209\\-29\\-56.76494\\-203.5678\\-29\\-56.716\\-201.6146\\-29\\-56.83393\\-199.6615\\-29\\-57.8499\\-197.7084\\-29\\-59.73958\\-195.7553\\-29\\-60.49758\\-193.8021\\-29\\-61.7668\\-191.849\\-29\\-62.77623\\-190.689\\-29\\-66.68247\\-187.2467\\-29\\-68.6356\\-185.1923\\-29\\-70.58872\\-183.2676\\-29\\-72.54185\\-182.4605\\-29\\-72.81197\\-182.0834\\-29\\-74.49497\\-180.9693\\-29\\-76.4481\\-180.8152\\-29\\-78.20403\\-182.0834\\-29\\-76.4481\\-183.928\\-29\\-74.49497\\-184.2497\\-29\\-72.54185\\-185.4969\\-29\\-72.19533\\-185.9896\\-29\\-71.60244\\-187.9428\\-29\\-70.40759\\-189.8959\\-29\\-69.31756\\-191.849\\-29\\-68.8763\\-195.7553\\-29\\-69.35323\\-197.7084\\-29\\-69.95803\\-199.6615\\-29\\-70.66949\\-201.6146\\-29\\-72.66392\\-205.5209\\-29\\-73.54439\\-207.474\\-29\\-75.73962\\-211.3803\\-29\\-76.4481\\-212.0707\\-29\\-78.40122\\-213.0516\\-29\\-80.35435\\-214.4009\\-29\\-82.30747\\-215.9606\\-29\\-84.2606\\-216.4498\\-29\\-88.16685\\-216.9691\\-29\\-92.0731\\-216.4129\\-29\\-94.02622\\-215.7748\\-29\\-95.97935\\-215.3408\\-29\\-97.93247\\-215.2039\\-29\\-99.8856\\-214.2021\\-29\\-101.8387\\-214.1805\\-29\\-103.7918\\-214.7615\\-29\\-105.745\\-214.9717\\-29\\-111.6043\\-215.0047\\-29\\-113.5575\\-215.5239\\-29\\-115.5106\\-216.3011\\-29\\-117.4637\\-216.6363\\-29\\-121.37\\-218.796\\-29\\-123.3231\\-218.9933\\-29\\-125.2762\\-219.9931\\-29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "287"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-158.8329\\-29\\-41.29185\\-157.4291\\-29\\-44.01146\\-154.7396\\-29\\-45.50409\\-150.8334\\-29\\-46.72636\\-148.8803\\-29\\-47.15123\\-148.4554\\-29\\-49.10435\\-148.323\\-29\\-49.71157\\-148.8803\\-29\\-51.05748\\-150.6596\\-29\\-52.44794\\-148.8803\\-29\\-51.81953\\-146.9271\\-29\\-51.05748\\-146.1562\\-29\\-49.10435\\-145.2792\\-29\\-47.15123\\-144.0797\\-29\\-46.24071\\-143.0209\\-29\\-45.1981\\-140.9655\\-29\\-43.36705\\-137.1615\\-29\\-42.13788\\-135.2084\\-29\\-37.3856\\-130.5278\\-29\\-35.43248\\-129.7837\\-29\\-33.47935\\-129.4575\\-29\\-31.52623\\-129.0213\\-29\\-29.5731\\-128.8293\\-29\\-27.61998\\-129.1874\\-29\\-25.66685\\-129.7837\\-29\\-23.71373\\-129.802\\-29\\-21.7606\\-130.5762\\-29\\-21.0609\\-131.3021\\-29\\-20.36789\\-133.2553\\-29\\-18.89936\\-135.2084\\-29\\-16.90338\\-139.1146\\-29\\-16.13695\\-141.0678\\-29\\-15.18139\\-143.0209\\-29\\-13.46939\\-144.974\\-29\\-12.46539\\-146.9271\\-29\\-11.88647\\-148.8803\\-29\\-11.68485\\-150.8334\\-29\\-11.99498\\-151.3491\\-29\\-13.84903\\-152.7865\\-29\\-14.00507\\-152.7865\\-29\\-14.67919\\-150.8334\\-29\\-15.65203\\-148.8803\\-29\\-15.90123\\-148.6146\\-29\\-17.85435\\-148.9837\\-29\\-18.62507\\-150.8334\\-29\\-19.18269\\-152.7865\\-29\\-20.75573\\-154.7396\\-29\\-23.71373\\-157.5982\\-29\\-25.66685\\-158.7813\\-29\\-27.61998\\-159.3476\\-29\\-29.5731\\-159.452\\-29\\-35.43248\\-159.452\\-29\\-37.3856\\-159.3783\\-29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "288"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "15.34877\\-239.3692\\-29\\13.39565\\-238.2391\\-29\\11.44252\\-237.7928\\-29\\10.24829\\-236.7709\\-29\\9.367329\\-234.8178\\-29\\10.06285\\-232.8646\\-29\\11.18166\\-230.9115\\-29\\12.6981\\-228.9584\\-29\\13.39565\\-228.3855\\-29\\15.34877\\-227.7235\\-29\\17.3019\\-226.7013\\-29\\19.25502\\-225.965\\-29\\21.20815\\-224.2344\\-29\\23.16127\\-223.9589\\-29\\29.02065\\-223.5282\\-29\\30.97377\\-224.3023\\-29\\31.81362\\-225.0521\\-29\\32.9269\\-225.4738\\-29\\34.33071\\-227.0053\\-29\\34.34568\\-228.9584\\-29\\33.27812\\-230.9115\\-29\\32.51946\\-232.8646\\-29\\31.52018\\-234.8178\\-29\\30.97377\\-235.1629\\-29\\29.02065\\-236.8251\\-29\\27.06752\\-237.938\\-29\\25.1144\\-238.1484\\-29\\23.16127\\-238.6441\\-29\\21.20815\\-238.7318\\-29\\17.3019\\-239.7875\\-29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "289"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-208.4091\\-29\\53.34546\\-207.474\\-29\\52.88194\\-203.5678\\-29\\52.86768\\-199.6615\\-29\\53.46507\\-197.7084\\-29\\55.85613\\-191.849\\-29\\56.25589\\-189.8959\\-29\\56.28363\\-187.9428\\-29\\58.15593\\-184.0365\\-29\\58.15593\\-176.224\\-29\\58.52923\\-174.2709\\-29\\59.32267\\-172.3178\\-29\\59.60761\\-170.3646\\-29\\59.41675\\-168.4115\\-29\\59.42618\\-162.5521\\-29\\60.13422\\-160.599\\-29\\62.22377\\-159.3902\\-29\\64.1769\\-159.1596\\-29\\66.13003\\-159.1512\\-29\\68.08315\\-158.7125\\-29\\70.03628\\-158.8453\\-29\\73.94253\\-159.8\\-29\\75.89565\\-161.2234\\-29\\77.84878\\-162.2334\\-29\\79.8019\\-163.6743\\-29\\81.75503\\-165.4409\\-29\\82.64648\\-166.4584\\-29\\83.00285\\-168.4115\\-29\\81.79572\\-170.3646\\-29\\79.8019\\-171.607\\-29\\79.07087\\-172.3178\\-29\\77.8409\\-174.2709\\-29\\77.28845\\-176.224\\-29\\75.89565\\-177.2006\\-29\\73.94253\\-176.7041\\-29\\71.9894\\-177.0067\\-29\\70.03628\\-179.1818\\-29\\69.29144\\-180.1303\\-29\\68.08315\\-181.1735\\-29\\66.13003\\-182.5917\\-29\\64.1769\\-183.0012\\-29\\62.22377\\-183.9411\\-29\\60.54118\\-185.9896\\-29\\60.05895\\-187.9428\\-29\\59.74481\\-189.8959\\-29\\58.14314\\-195.7553\\-29\\57.73049\\-197.7084\\-29\\56.77333\\-201.6146\\-29\\57.27012\\-203.5678\\-29\\57.08311\\-205.5209\\-29\\55.59129\\-207.474\\-29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "290"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "71.9894\\-198.5184\\-29\\71.27856\\-197.7084\\-29\\70.70387\\-195.7553\\-29\\71.38668\\-193.8021\\-29\\72.36353\\-191.849\\-29\\72.36806\\-187.9428\\-29\\72.94026\\-185.9896\\-29\\73.94253\\-184.7611\\-29\\75.89565\\-184.3207\\-29\\77.6159\\-185.9896\\-29\\77.43024\\-187.9428\\-29\\77.38654\\-189.8959\\-29\\77.84878\\-190.4689\\-29\\79.8019\\-190.8054\\-29\\81.75503\\-190.8144\\-29\\83.70815\\-190.9335\\-29\\87.6144\\-190.1366\\-29\\89.56753\\-190.888\\-29\\91.52065\\-191.3933\\-29\\92.11744\\-191.849\\-29\\92.33535\\-193.8021\\-29\\91.52065\\-194.6124\\-29\\89.56753\\-195.7629\\-29\\87.6144\\-195.7928\\-29\\85.66128\\-196.4399\\-29\\83.70815\\-196.9004\\-29\\81.75503\\-196.6508\\-29\\79.8019\\-197.2083\\-29\\77.84878\\-198.6445\\-29\\75.89565\\-199.235\\-29\\73.94253\\-199.4007\\-29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "151"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "291"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-125.2762\\-219.4967\\-27\\-127.2293\\-217.7481\\-27\\-127.6596\\-217.2396\\-27\\-129.1825\\-215.9198\\-27\\-131.1356\\-216.5164\\-27\\-133.0887\\-216.9921\\-27\\-135.0419\\-216.6382\\-27\\-136.995\\-215.8062\\-27\\-138.9481\\-214.6962\\-27\\-140.9012\\-213.8417\\-27\\-141.428\\-213.3334\\-27\\-142.205\\-211.3803\\-27\\-142.6069\\-209.4271\\-27\\-143.6791\\-207.474\\-27\\-143.9654\\-205.5209\\-27\\-144.3728\\-203.5678\\-27\\-145.5919\\-201.6146\\-27\\-145.5236\\-199.6615\\-27\\-144.8075\\-198.7237\\-27\\-142.8544\\-198.6354\\-27\\-140.9012\\-199.8485\\-27\\-138.9481\\-200.0285\\-27\\-136.995\\-199.7137\\-27\\-135.0419\\-200.3512\\-27\\-133.0887\\-200.5191\\-27\\-131.1356\\-199.77\\-27\\-129.1825\\-199.7137\\-27\\-127.2293\\-199.9976\\-27\\-125.2762\\-200.1411\\-27\\-123.3231\\-199.6842\\-27\\-117.4637\\-199.6691\\-27\\-115.5106\\-198.3067\\-27\\-114.9988\\-197.7084\\-27\\-114.0393\\-195.7553\\-27\\-112.4778\\-193.8021\\-27\\-111.385\\-191.849\\-27\\-109.6512\\-189.8732\\-27\\-107.6981\\-188.9807\\-27\\-105.745\\-188.3536\\-27\\-101.8387\\-188.0648\\-27\\-99.8856\\-188.6324\\-27\\-95.97935\\-189.6254\\-27\\-90.11997\\-189.6254\\-27\\-88.16685\\-188.9139\\-27\\-87.29282\\-187.9428\\-27\\-86.17616\\-185.9896\\-27\\-85.03078\\-182.0834\\-27\\-83.76376\\-180.1303\\-27\\-83.52172\\-178.1771\\-27\\-82.61695\\-176.224\\-27\\-81.95065\\-174.2709\\-27\\-83.18839\\-172.3178\\-27\\-83.43243\\-170.3646\\-27\\-83.01521\\-168.4115\\-27\\-81.70111\\-166.4584\\-27\\-80.35435\\-165.1624\\-27\\-77.03101\\-162.5521\\-27\\-74.49497\\-160.0464\\-27\\-72.54185\\-159.0176\\-27\\-68.6356\\-159.3055\\-27\\-64.72935\\-159.3135\\-27\\-63.09238\\-160.599\\-27\\-63.57523\\-162.5521\\-27\\-63.92945\\-164.5053\\-27\\-63.65615\\-166.4584\\-27\\-62.81437\\-168.4115\\-27\\-62.36028\\-170.3646\\-27\\-62.36028\\-172.3178\\-27\\-62.14433\\-174.2709\\-27\\-61.66219\\-176.224\\-27\\-60.47658\\-178.1771\\-27\\-60.48701\\-180.1303\\-27\\-61.01144\\-182.0834\\-27\\-60.99874\\-185.9896\\-27\\-60.64619\\-187.9428\\-27\\-58.27997\\-189.8959\\-27\\-56.80835\\-191.849\\-27\\-56.38059\\-193.8021\\-27\\-55.82082\\-195.7553\\-27\\-55.67208\\-197.7084\\-27\\-56.21931\\-199.6615\\-27\\-54.96373\\-200.061\\-27\\-53.90662\\-201.6146\\-27\\-53.83652\\-203.5678\\-27\\-53.60294\\-205.5209\\-27\\-53.04816\\-207.474\\-27\\-52.64678\\-209.4271\\-27\\-52.49282\\-211.3803\\-27\\-51.95355\\-213.3334\\-27\\-51.65712\\-215.2865\\-27\\-51.01309\\-217.2396\\-27\\-50.76622\\-219.1928\\-27\\-51.05748\\-219.6414\\-27\\-53.0106\\-220.7318\\-27\\-54.96373\\-220.5057\\-27\\-58.86998\\-216.7158\\-27\\-60.8231\\-215.1252\\-27\\-62.31625\\-213.3334\\-27\\-62.25743\\-211.3803\\-27\\-61.61656\\-209.4271\\-27\\-60.2921\\-207.474\\-27\\-59.84184\\-205.5209\\-27\\-58.73354\\-203.5678\\-27\\-58.03182\\-201.6146\\-27\\-57.07607\\-199.6615\\-27\\-58.12752\\-197.7084\\-27\\-58.86998\\-196.9857\\-27\\-59.74472\\-195.7553\\-27\\-60.46628\\-193.8021\\-27\\-61.60739\\-191.849\\-27\\-62.60211\\-189.8959\\-27\\-64.72935\\-187.8906\\-27\\-66.68247\\-186.5608\\-27\\-67.2431\\-185.9896\\-27\\-68.6356\\-183.9174\\-27\\-70.82627\\-182.0834\\-27\\-72.54185\\-181.1312\\-27\\-74.49497\\-181.0165\\-27\\-75.98344\\-182.0834\\-27\\-74.49497\\-183.0651\\-27\\-71.714\\-185.9896\\-27\\-70.8611\\-187.9428\\-27\\-70.58872\\-188.2657\\-27\\-68.21445\\-191.849\\-27\\-67.62594\\-193.8021\\-27\\-67.2347\\-195.7553\\-27\\-67.41784\\-197.7084\\-27\\-68.26725\\-199.6615\\-27\\-68.6356\\-200.113\\-27\\-70.62658\\-203.5678\\-27\\-71.59183\\-205.5209\\-27\\-73.67287\\-209.4271\\-27\\-74.8942\\-211.3803\\-27\\-76.4481\\-213.061\\-27\\-78.40122\\-214.3549\\-27\\-84.2606\\-217.3204\\-27\\-86.21372\\-217.6011\\-27\\-92.0731\\-217.5907\\-27\\-94.02622\\-217.1715\\-27\\-95.97935\\-216.6131\\-27\\-97.93247\\-216.4275\\-27\\-99.8856\\-215.8123\\-27\\-101.8387\\-214.9805\\-27\\-107.6981\\-215.0047\\-27\\-109.6512\\-214.7491\\-27\\-111.6043\\-214.6217\\-27\\-113.5575\\-214.6255\\-27\\-117.4637\\-215.3262\\-27\\-119.4168\\-215.6225\\-27\\-121.37\\-217.7923\\-27\\-123.3231\\-218.7113\\-27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "292"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-158.433\\-27\\-39.33873\\-157.827\\-27\\-40.76208\\-156.6928\\-27\\-43.24498\\-154.2701\\-27\\-44.43799\\-152.7865\\-27\\-44.89414\\-150.8334\\-27\\-46.08444\\-148.8803\\-27\\-47.15123\\-147.8579\\-27\\-49.10435\\-147.9297\\-27\\-50.08091\\-148.8803\\-27\\-51.05748\\-150.1043\\-27\\-52.91905\\-148.8803\\-27\\-52.49569\\-146.9271\\-27\\-51.05748\\-145.4156\\-27\\-49.10435\\-144.9218\\-27\\-47.15123\\-144.1736\\-27\\-46.06563\\-143.0209\\-27\\-44.84128\\-141.0678\\-27\\-44.24905\\-139.1146\\-27\\-42.24936\\-135.2084\\-27\\-39.33873\\-132.4541\\-27\\-37.3856\\-130.5377\\-27\\-35.43248\\-129.7929\\-27\\-33.47935\\-129.7744\\-27\\-31.52623\\-129.536\\-27\\-29.5731\\-128.6689\\-27\\-27.61998\\-128.6498\\-27\\-25.66685\\-129.536\\-27\\-23.71373\\-129.802\\-27\\-21.7606\\-130.4982\\-27\\-20.9647\\-131.3021\\-27\\-19.46919\\-133.2553\\-27\\-18.78506\\-135.2084\\-27\\-17.90653\\-137.1615\\-27\\-16.89485\\-139.1146\\-27\\-16.08823\\-141.0678\\-27\\-14.93419\\-143.0209\\-27\\-13.30669\\-144.974\\-27\\-12.72488\\-146.9271\\-27\\-11.35688\\-148.8803\\-27\\-11.70591\\-150.8334\\-27\\-11.99498\\-151.0843\\-27\\-13.9481\\-151.101\\-27\\-14.24186\\-150.8334\\-27\\-15.90123\\-148.6641\\-27\\-17.85435\\-148.8907\\-27\\-18.71984\\-150.8334\\-27\\-20.0465\\-152.7865\\-27\\-21.03783\\-154.7396\\-27\\-21.7606\\-155.4624\\-27\\-23.71373\\-157.0797\\-27\\-25.66685\\-157.8051\\-27\\-27.61998\\-158.7544\\-27\\-29.5731\\-159.1512\\-27\\-33.47935\\-159.1427\\-27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "33"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "293"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "13.39565\\-236.7789\\-27\\11.44252\\-236.5551\\-27\\10.10847\\-234.8178\\-27\\10.51706\\-232.8646\\-27\\13.39565\\-229.7172\\-27\\15.34877\\-228.3374\\-27\\17.3019\\-227.7036\\-27\\19.25502\\-226.3665\\-27\\23.16127\\-224.5351\\-27\\25.1144\\-224.0101\\-27\\27.06752\\-223.1512\\-27\\29.02065\\-222.1225\\-27\\30.97377\\-221.3591\\-27\\32.9269\\-220.0133\\-27\\34.88002\\-219.4197\\-27\\36.83315\\-220.8651\\-27\\37.02512\\-221.1459\\-27\\36.84078\\-223.099\\-27\\36.31656\\-225.0521\\-27\\36.33517\\-228.9584\\-27\\35.30938\\-230.9115\\-27\\34.50136\\-232.8646\\-27\\34.27472\\-234.8178\\-27\\32.9269\\-236.1121\\-27\\30.97377\\-236.3067\\-27\\29.02065\\-237.2529\\-27\\27.06752\\-237.6118\\-27\\25.1144\\-237.1499\\-27\\23.16127\\-237.1314\\-27\\21.20815\\-236.9262\\-27\\19.25502\\-236.3932\\-27\\17.3019\\-237.4667\\-27\\15.34877\\-237.4587\\-27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "84"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "294"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-208.0812\\-27\\53.65948\\-207.474\\-27\\53.6699\\-199.6615\\-27\\53.92591\\-197.7084\\-27\\54.55988\\-195.7553\\-27\\56.24233\\-191.849\\-27\\56.25589\\-189.8959\\-27\\56.56384\\-187.9428\\-27\\58.15593\\-184.0365\\-27\\58.15593\\-178.1771\\-27\\57.96182\\-176.224\\-27\\59.05275\\-174.2709\\-27\\59.65696\\-172.3178\\-27\\59.97768\\-170.3646\\-27\\59.95584\\-162.5521\\-27\\60.01156\\-160.599\\-27\\60.27065\\-160.3105\\-27\\62.22377\\-159.1255\\-27\\66.13003\\-159.1167\\-27\\68.08315\\-157.8222\\-27\\70.03628\\-157.8445\\-27\\71.9894\\-158.8203\\-27\\75.89565\\-159.8854\\-27\\77.84878\\-161.197\\-27\\79.8019\\-162.3148\\-27\\82.00594\\-164.5053\\-27\\83.08379\\-166.4584\\-27\\82.87041\\-168.4115\\-27\\81.75503\\-169.5492\\-27\\78.74603\\-172.3178\\-27\\76.94695\\-174.2709\\-27\\77.83701\\-176.224\\-27\\79.82461\\-178.1771\\-27\\80.71855\\-180.1303\\-27\\81.24747\\-182.0834\\-27\\81.25704\\-184.0365\\-27\\81.47904\\-185.9896\\-27\\81.75503\\-186.443\\-27\\83.10961\\-187.9428\\-27\\83.70815\\-188.4354\\-27\\85.66128\\-189.1942\\-27\\86.41307\\-189.8959\\-27\\87.6144\\-190.7185\\-27\\90.8877\\-191.849\\-27\\91.52065\\-192.3669\\-27\\92.10179\\-193.8021\\-27\\91.52065\\-194.4094\\-27\\89.56753\\-195.7476\\-27\\87.6144\\-195.778\\-27\\85.66128\\-196.039\\-27\\83.70815\\-196.6156\\-27\\81.75503\\-197.0169\\-27\\79.8019\\-197.5444\\-27\\77.84878\\-198.4282\\-27\\75.89565\\-198.9076\\-27\\73.94253\\-200.3108\\-27\\71.9894\\-200.3555\\-27\\71.24378\\-199.6615\\-27\\70.18707\\-197.7084\\-27\\69.65925\\-195.7553\\-27\\70.04402\\-193.8021\\-27\\70.97857\\-191.849\\-27\\70.95181\\-189.8959\\-27\\70.54552\\-187.9428\\-27\\71.15025\\-185.9896\\-27\\72.16379\\-184.0365\\-27\\73.94253\\-180.2\\-27\\73.94253\\-179.9983\\-27\\71.9894\\-179.0535\\-27\\70.72964\\-180.1303\\-27\\68.08315\\-181.598\\-27\\66.13003\\-182.232\\-27\\62.22377\\-183.1925\\-27\\61.32703\\-184.0365\\-27\\60.55247\\-185.9896\\-27\\60.37915\\-187.9428\\-27\\59.32186\\-189.8959\\-27\\58.63234\\-191.849\\-27\\58.13562\\-193.8021\\-27\\58.13052\\-197.7084\\-27\\57.52531\\-201.6146\\-27\\58.18008\\-203.5678\\-27\\57.86819\\-205.5209\\-27\\56.3644\\-207.0247\\-27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "156"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "295"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-54.96373\\-224.1935\\-25\\-56.09627\\-223.099\\-25\\-57.65989\\-221.1459\\-25\\-60.8231\\-217.9649\\-25\\-62.77623\\-216.4808\\-25\\-64.09531\\-215.2865\\-25\\-63.70653\\-211.3803\\-25\\-62.57537\\-209.4271\\-25\\-61.78003\\-207.474\\-25\\-60.55073\\-205.5209\\-25\\-60.0093\\-203.5678\\-25\\-59.72324\\-201.6146\\-25\\-59.06942\\-199.6615\\-25\\-58.86998\\-198.748\\-25\\-58.33287\\-197.7084\\-25\\-58.86998\\-197.3656\\-25\\-59.63446\\-195.7553\\-25\\-60.8231\\-192.2717\\-25\\-61.9118\\-189.8959\\-25\\-64.72935\\-186.9662\\-25\\-66.68247\\-185.17\\-25\\-67.71182\\-184.0365\\-25\\-70.58872\\-181.1996\\-25\\-72.54185\\-180.3556\\-25\\-74.47208\\-182.0834\\-25\\-73.28047\\-184.0365\\-25\\-71.46908\\-185.9896\\-25\\-70.2117\\-187.9428\\-25\\-69.35138\\-189.8959\\-25\\-67.8008\\-191.849\\-25\\-66.67484\\-193.8021\\-25\\-66.72062\\-195.7553\\-25\\-67.3728\\-199.6615\\-25\\-68.21966\\-201.6146\\-25\\-69.62296\\-203.5678\\-25\\-71.58157\\-207.474\\-25\\-73.17171\\-209.4271\\-25\\-74.12084\\-211.3803\\-25\\-75.64489\\-213.3334\\-25\\-78.40122\\-215.842\\-25\\-80.35435\\-216.4938\\-25\\-82.30747\\-217.0264\\-25\\-84.2606\\-218.09\\-25\\-86.21372\\-218.3858\\-25\\-94.02622\\-218.3652\\-25\\-95.97935\\-217.8079\\-25\\-97.93247\\-216.9921\\-25\\-99.8856\\-216.7022\\-25\\-101.8387\\-216.0666\\-25\\-103.7918\\-215.2199\\-25\\-107.6981\\-214.7343\\-25\\-111.6043\\-213.5347\\-25\\-113.5575\\-213.3741\\-25\\-115.5106\\-213.3741\\-25\\-117.4637\\-213.5866\\-25\\-119.4168\\-213.5757\\-25\\-121.37\\-214.3625\\-25\\-122.5833\\-215.2865\\-25\\-123.5383\\-217.2396\\-25\\-125.2762\\-218.1552\\-25\\-126.1307\\-217.2396\\-25\\-127.2293\\-216.2912\\-25\\-129.1825\\-215.6758\\-25\\-131.1356\\-216.4509\\-25\\-133.0887\\-217.0039\\-25\\-135.0419\\-216.9357\\-25\\-136.995\\-216\\-25\\-138.9481\\-214.739\\-25\\-140.9012\\-213.6524\\-25\\-141.2267\\-213.3334\\-25\\-142.0834\\-211.3803\\-25\\-142.1982\\-209.4271\\-25\\-142.5725\\-207.474\\-25\\-143.1574\\-205.5209\\-25\\-143.8527\\-203.5678\\-25\\-144.31\\-201.6146\\-25\\-142.8544\\-199.7019\\-25\\-140.9012\\-200.4417\\-25\\-138.9481\\-200.6279\\-25\\-136.995\\-200.2072\\-25\\-135.0419\\-200.3569\\-25\\-133.0887\\-200.3975\\-25\\-131.1356\\-200.1835\\-25\\-127.2293\\-200.1835\\-25\\-125.2762\\-200.26\\-25\\-123.3231\\-200.4825\\-25\\-119.4168\\-200.1782\\-25\\-117.4637\\-200.1668\\-25\\-115.5106\\-199.057\\-25\\-112.8103\\-195.7553\\-25\\-111.385\\-193.8021\\-25\\-110.5036\\-191.849\\-25\\-109.6512\\-190.9331\\-25\\-107.6981\\-189.7462\\-25\\-105.745\\-189.5176\\-25\\-103.7918\\-188.9656\\-25\\-101.8387\\-188.8032\\-25\\-99.8856\\-189.1921\\-25\\-97.93247\\-189.3466\\-25\\-95.97935\\-189.9625\\-25\\-94.02622\\-190.2851\\-25\\-92.0731\\-190.296\\-25\\-90.11997\\-190.1137\\-25\\-88.16685\\-189.0049\\-25\\-87.1417\\-187.9428\\-25\\-85.74288\\-185.9896\\-25\\-85.33709\\-184.0365\\-25\\-84.25297\\-182.0834\\-25\\-83.77232\\-180.1303\\-25\\-83.75529\\-178.1771\\-25\\-82.80235\\-176.224\\-25\\-82.60188\\-174.2709\\-25\\-83.90955\\-172.3178\\-25\\-84.39132\\-170.3646\\-25\\-83.75488\\-168.4115\\-25\\-83.30586\\-166.4584\\-25\\-82.30747\\-164.8036\\-25\\-80.35435\\-163.3049\\-25\\-79.12255\\-162.5521\\-25\\-77.13937\\-160.599\\-25\\-76.4481\\-160.0863\\-25\\-74.49497\\-158.2735\\-25\\-72.54185\\-157.8801\\-25\\-70.58872\\-159.1078\\-25\\-66.68247\\-159.1342\\-25\\-64.72935\\-159.7496\\-25\\-63.96576\\-160.599\\-25\\-64.26739\\-164.5053\\-25\\-64.10082\\-166.4584\\-25\\-63.67012\\-168.4115\\-25\\-62.81467\\-170.3646\\-25\\-62.36028\\-172.3178\\-25\\-62.35085\\-174.2709\\-25\\-61.87514\\-176.224\\-25\\-61.00002\\-178.1771\\-25\\-60.47658\\-180.1303\\-25\\-60.48701\\-185.9896\\-25\\-59.91788\\-187.9428\\-25\\-57.93967\\-189.8959\\-25\\-56.82211\\-191.849\\-25\\-56.79478\\-193.8021\\-25\\-56.40559\\-195.7553\\-25\\-56.47129\\-199.6615\\-25\\-55.86839\\-201.6146\\-25\\-54.08537\\-203.5678\\-25\\-51.9585\\-209.4271\\-25\\-51.25833\\-213.3334\\-25\\-50.99089\\-215.2865\\-25\\-49.76937\\-217.2396\\-25\\-49.10435\\-217.9481\\-25\\-47.40409\\-219.1928\\-25\\-45.67188\\-221.1459\\-25\\-45.83106\\-223.099\\-25\\-47.15123\\-224.1322\\-25\\-49.10435\\-224.4339\\-25\\-53.0106\\-224.5505\\-25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "296"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-157.0992\\-25\\-41.29185\\-155.6278\\-25\\-44.29094\\-152.7865\\-25\\-44.86201\\-150.8334\\-25\\-45.78632\\-148.8803\\-25\\-47.15123\\-147.6518\\-25\\-49.10435\\-147.5052\\-25\\-50.76587\\-148.8803\\-25\\-51.05748\\-149.2392\\-25\\-52.05729\\-148.8803\\-25\\-52.91142\\-146.9271\\-25\\-51.65363\\-144.974\\-25\\-51.05748\\-144.3947\\-25\\-47.15123\\-143.8718\\-25\\-46.33833\\-143.0209\\-25\\-45.1981\\-140.2688\\-25\\-44.06762\\-137.1615\\-25\\-42.81432\\-135.2084\\-25\\-40.7348\\-133.2553\\-25\\-39.33873\\-132.2929\\-25\\-37.3856\\-130.5377\\-25\\-35.43248\\-129.802\\-25\\-33.47935\\-129.7837\\-25\\-29.5731\\-128.0487\\-25\\-27.61998\\-128.0416\\-25\\-25.66685\\-128.8254\\-25\\-23.71373\\-129.7929\\-25\\-21.7606\\-130.4924\\-25\\-19.0675\\-133.2553\\-25\\-18.39565\\-135.2084\\-25\\-17.57062\\-137.1615\\-25\\-16.07561\\-141.0678\\-25\\-14.69523\\-143.0209\\-25\\-12.69252\\-144.974\\-25\\-12.48033\\-146.9271\\-25\\-11.1333\\-148.8803\\-25\\-11.58427\\-150.8334\\-25\\-11.99498\\-151.1264\\-25\\-13.9481\\-150.1693\\-25\\-15.90123\\-148.0655\\-25\\-17.85435\\-148.479\\-25\\-18.19044\\-148.8803\\-25\\-18.85922\\-150.8334\\-25\\-20.58372\\-152.7865\\-25\\-21.7606\\-154.2576\\-25\\-23.71373\\-155.9999\\-25\\-25.66685\\-157.3455\\-25\\-27.61998\\-157.7901\\-25\\-29.5731\\-158.4054\\-25\\-33.47935\\-158.3821\\-25\\-35.43248\\-157.7933\\-25\\-37.3856\\-157.4955\\-25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "297"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "32.9269\\-237.5271\\-25\\30.97377\\-236.7028\\-25\\29.02065\\-236.1876\\-25\\27.06752\\-236.1487\\-25\\25.1144\\-235.7356\\-25\\23.16127\\-235.69\\-25\\21.20815\\-235.3868\\-25\\19.25502\\-234.3295\\-25\\17.3019\\-233.8725\\-25\\15.34877\\-234.0141\\-25\\13.39565\\-234.4516\\-25\\12.24153\\-232.8646\\-25\\13.39565\\-231.6637\\-25\\13.86738\\-230.9115\\-25\\16.3593\\-228.9584\\-25\\17.3019\\-228.3595\\-25\\19.25502\\-227.7169\\-25\\21.20815\\-226.4064\\-25\\23.16127\\-226.0909\\-25\\25.1144\\-225.3842\\-25\\28.04409\\-223.099\\-25\\29.02065\\-222.2595\\-25\\30.97377\\-221.2267\\-25\\32.9269\\-219.9973\\-25\\34.88002\\-218.9811\\-25\\36.83315\\-218.4977\\-25\\38.78627\\-218.403\\-25\\39.96576\\-219.1928\\-25\\39.22261\\-221.1459\\-25\\38.78627\\-221.7673\\-25\\38.4655\\-223.099\\-25\\38.42274\\-228.9584\\-25\\37.55447\\-230.9115\\-25\\37.34058\\-232.8646\\-25\\36.84219\\-234.8178\\-25\\34.56535\\-236.7709\\-25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "85"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "298"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-206.5494\\-25\\53.80323\\-205.5209\\-25\\54.26266\\-201.6146\\-25\\54.2892\\-197.7084\\-25\\54.58566\\-195.7553\\-25\\55.59083\\-193.8021\\-25\\56.25589\\-191.849\\-25\\56.26966\\-189.8959\\-25\\57.05658\\-187.9428\\-25\\58.48291\\-184.0365\\-25\\58.46613\\-182.0834\\-25\\57.76939\\-180.1303\\-25\\57.69229\\-178.1771\\-25\\57.42917\\-176.224\\-25\\58.31752\\-175.0571\\-25\\59.21824\\-174.2709\\-25\\59.96334\\-172.3178\\-25\\60.00616\\-164.5053\\-25\\60.39272\\-162.5521\\-25\\60.63764\\-160.599\\-25\\62.22377\\-159.2884\\-25\\64.1769\\-159.1167\\-25\\66.13003\\-158.6228\\-25\\68.08315\\-157.5581\\-25\\70.03628\\-157.3728\\-25\\71.9894\\-158.0229\\-25\\73.94253\\-159.1342\\-25\\75.89565\\-159.393\\-25\\77.84878\\-159.8922\\-25\\79.8019\\-161.6518\\-25\\82.60168\\-164.5053\\-25\\84.27828\\-166.4584\\-25\\83.46025\\-168.4115\\-25\\81.75503\\-169.5035\\-25\\78.73067\\-172.3178\\-25\\77.10165\\-174.2709\\-25\\77.84878\\-175.6489\\-25\\78.55779\\-176.224\\-25\\79.8019\\-176.9564\\-25\\82.23705\\-180.1303\\-25\\82.82344\\-182.0834\\-25\\82.83311\\-184.0365\\-25\\83.70815\\-185.4973\\-25\\85.66128\\-188.0419\\-25\\86.80216\\-189.8959\\-25\\87.6144\\-190.8725\\-25\\89.56753\\-191.6133\\-25\\89.90594\\-191.849\\-25\\91.17094\\-193.8021\\-25\\89.56753\\-195.5999\\-25\\87.6144\\-196.0592\\-25\\85.66128\\-195.778\\-25\\83.70815\\-196.562\\-25\\81.74087\\-197.7084\\-25\\79.8019\\-198.398\\-25\\75.89565\\-199.4578\\-25\\73.94253\\-200.6231\\-25\\71.9894\\-200.9274\\-25\\70.5125\\-199.6615\\-25\\69.67945\\-197.7084\\-25\\69.64934\\-193.8021\\-25\\70.37679\\-189.8959\\-25\\70.36648\\-187.9428\\-25\\71.71886\\-184.0365\\-25\\72.13801\\-182.0834\\-25\\71.9894\\-181.8135\\-25\\70.03628\\-181.0168\\-25\\68.08315\\-182.1781\\-25\\66.13003\\-182.2055\\-25\\64.1769\\-182.8987\\-25\\62.22377\\-183.4872\\-25\\61.63065\\-184.0365\\-25\\60.95969\\-185.9896\\-25\\60.41926\\-187.9428\\-25\\59.0652\\-189.8959\\-25\\58.31752\\-191.6255\\-25\\57.22607\\-191.849\\-25\\58.04361\\-193.8021\\-25\\58.15593\\-195.7553\\-25\\58.16891\\-199.6615\\-25\\58.51696\\-201.6146\\-25\\59.24401\\-203.5678\\-25\\59.07882\\-205.5209\\-25\\58.31752\\-206.2989\\-25\\56.3644\\-207.012\\-25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "164"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "299"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-47.15123\\-227.1093\\-23\\-49.10435\\-226.5907\\-23\\-51.05748\\-226.5689\\-23\\-53.0106\\-226.2757\\-23\\-54.96373\\-225.7192\\-23\\-57.76161\\-223.099\\-23\\-59.34524\\-221.1459\\-23\\-61.19404\\-219.1928\\-23\\-62.77623\\-217.9992\\-23\\-64.11523\\-217.2396\\-23\\-64.72935\\-216.7305\\-23\\-65.65255\\-215.2865\\-23\\-65.02594\\-213.3334\\-23\\-64.75418\\-211.3803\\-23\\-63.92181\\-209.4271\\-23\\-61.71828\\-205.5209\\-23\\-60.47658\\-203.5678\\-23\\-60.17723\\-201.6146\\-23\\-59.67336\\-199.6615\\-23\\-58.86998\\-197.9627\\-23\\-58.39127\\-197.7084\\-23\\-58.86998\\-197.0302\\-23\\-59.79229\\-193.8021\\-23\\-60.24259\\-191.849\\-23\\-61.77641\\-189.8959\\-23\\-63.52301\\-187.9428\\-23\\-64.49363\\-185.9896\\-23\\-66.68247\\-184.0136\\-23\\-68.6356\\-182.8735\\-23\\-70.58872\\-181.0116\\-23\\-72.54185\\-179.2795\\-23\\-74.49497\\-179.3348\\-23\\-75.06183\\-180.1303\\-23\\-73.61894\\-182.0834\\-23\\-72.54185\\-184.0108\\-23\\-71.32114\\-185.9896\\-23\\-69.75533\\-187.9428\\-23\\-68.8138\\-189.8959\\-23\\-67.7435\\-191.849\\-23\\-67.0056\\-193.8021\\-23\\-67.57581\\-195.7553\\-23\\-67.89613\\-197.7084\\-23\\-67.9116\\-199.6615\\-23\\-68.13876\\-201.6146\\-23\\-68.82394\\-203.5678\\-23\\-70.58872\\-207.1006\\-23\\-71.94506\\-209.4271\\-23\\-75.46655\\-213.3334\\-23\\-78.40122\\-216.2212\\-23\\-80.35435\\-217.0039\\-23\\-82.30747\\-217.9475\\-23\\-84.2606\\-218.6987\\-23\\-86.21372\\-218.9811\\-23\\-92.0731\\-218.9811\\-23\\-94.02622\\-218.9222\\-23\\-97.58595\\-217.2396\\-23\\-97.93247\\-217.0158\\-23\\-99.8856\\-217.0039\\-23\\-101.8387\\-216.716\\-23\\-103.7918\\-215.7926\\-23\\-107.6981\\-214.2834\\-23\\-109.6512\\-212.9598\\-23\\-111.6043\\-211.9807\\-23\\-113.5575\\-211.3887\\-23\\-115.5106\\-211.4216\\-23\\-117.4637\\-212.015\\-23\\-119.4168\\-212.1066\\-23\\-121.37\\-212.5196\\-23\\-123.3231\\-214.1431\\-23\\-127.2293\\-216.2523\\-23\\-131.1356\\-216.7875\\-23\\-133.0887\\-216.9921\\-23\\-135.0419\\-216.6907\\-23\\-136.995\\-215.5966\\-23\\-138.9481\\-214.1649\\-23\\-140.9012\\-212.3442\\-23\\-141.6794\\-211.3803\\-23\\-141.9652\\-209.4271\\-23\\-142.1783\\-205.5209\\-23\\-143.4966\\-203.5678\\-23\\-143.2294\\-201.6146\\-23\\-142.8544\\-201.2527\\-23\\-140.9012\\-201.0399\\-23\\-138.9481\\-201.2057\\-23\\-136.995\\-200.9117\\-23\\-133.0887\\-200.8678\\-23\\-129.1825\\-201.2728\\-23\\-127.2293\\-201.3325\\-23\\-126.0392\\-201.6146\\-23\\-123.3231\\-203.0634\\-23\\-121.37\\-202.4988\\-23\\-120.087\\-201.6146\\-23\\-119.4168\\-201.3577\\-23\\-117.4637\\-201.3202\\-23\\-115.5106\\-200.667\\-23\\-114.4664\\-199.6615\\-23\\-113.1482\\-197.7084\\-23\\-112.0257\\-195.7553\\-23\\-110.4907\\-193.8021\\-23\\-109.2892\\-191.849\\-23\\-107.6981\\-190.7821\\-23\\-105.745\\-190.8943\\-23\\-103.7918\\-190.1324\\-23\\-101.8387\\-189.9214\\-23\\-99.8856\\-190.0703\\-23\\-97.93247\\-189.6721\\-23\\-95.97935\\-190.5666\\-23\\-94.02622\\-191.1466\\-23\\-92.0731\\-191.1729\\-23\\-90.11997\\-190.6529\\-23\\-87.40479\\-187.9428\\-23\\-86.06512\\-185.9896\\-23\\-84.5011\\-182.0834\\-23\\-84.46035\\-178.1771\\-23\\-82.89341\\-176.224\\-23\\-83.02246\\-174.2709\\-23\\-84.98217\\-172.3178\\-23\\-85.38496\\-170.3646\\-23\\-84.99583\\-168.4115\\-23\\-84.02488\\-166.4584\\-23\\-83.29312\\-164.5053\\-23\\-82.30747\\-163.4073\\-23\\-81.31326\\-162.5521\\-23\\-80.35435\\-161.105\\-23\\-78.40122\\-159.4227\\-23\\-76.4481\\-158.1875\\-23\\-74.49497\\-157.4126\\-23\\-72.54185\\-157.6693\\-23\\-70.58872\\-159.0989\\-23\\-68.6356\\-159.1167\\-23\\-66.68247\\-159.2635\\-23\\-64.70664\\-160.599\\-23\\-64.32295\\-162.5521\\-23\\-64.30398\\-166.4584\\-23\\-64.1223\\-168.4115\\-23\\-63.56479\\-170.3646\\-23\\-62.36983\\-172.3178\\-23\\-62.36028\\-174.2709\\-23\\-62.15526\\-176.224\\-23\\-61.75482\\-178.1771\\-23\\-60.87609\\-180.1303\\-23\\-60.47658\\-182.0834\\-23\\-60.45611\\-185.9896\\-23\\-59.82454\\-187.9428\\-23\\-57.84177\\-189.8959\\-23\\-56.82211\\-191.849\\-23\\-56.78141\\-195.7553\\-23\\-56.45553\\-197.7084\\-23\\-55.90431\\-199.6615\\-23\\-55.5226\\-201.6146\\-23\\-53.94186\\-203.5678\\-23\\-52.67009\\-205.5209\\-23\\-52.023\\-207.474\\-23\\-50.94734\\-209.4271\\-23\\-50.48782\\-211.3803\\-23\\-50.35295\\-213.3334\\-23\\-50.1132\\-215.2865\\-23\\-49.10435\\-216.4717\\-23\\-47.10545\\-217.2396\\-23\\-45.1981\\-219.5218\\-23\\-44.37714\\-221.1459\\-23\\-43.6841\\-223.099\\-23\\-44.55576\\-225.0521\\-23\\-45.1981\\-226.1151\\-23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "300"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-157.1724\\-23\\-39.33873\\-155.9552\\-23\\-41.29185\\-155.382\\-23\\-43.24498\\-153.787\\-23\\-44.28631\\-152.7865\\-23\\-45.33761\\-150.8334\\-23\\-46.17466\\-148.8803\\-23\\-47.15123\\-147.8982\\-23\\-49.10435\\-147.1746\\-23\\-51.05748\\-148.2273\\-23\\-52.91957\\-146.9271\\-23\\-51.81369\\-144.974\\-23\\-51.05748\\-144.2178\\-23\\-49.10435\\-143.6559\\-23\\-47.78377\\-143.0209\\-23\\-47.15123\\-142.4223\\-23\\-46.42722\\-141.0678\\-23\\-46.01733\\-139.1146\\-23\\-44.82108\\-137.1615\\-23\\-44.05787\\-135.2084\\-23\\-43.24498\\-134.3816\\-23\\-41.29185\\-132.7095\\-23\\-39.33873\\-131.9652\\-23\\-37.3856\\-130.5317\\-23\\-35.43248\\-129.802\\-23\\-33.47935\\-129.7837\\-23\\-31.52623\\-128.6246\\-23\\-29.5731\\-127.8118\\-23\\-27.61998\\-127.8118\\-23\\-25.66685\\-128.3979\\-23\\-23.71373\\-129.5234\\-23\\-21.7606\\-130.3305\\-23\\-18.93995\\-133.2553\\-23\\-17.85435\\-135.2907\\-23\\-17.07798\\-137.1615\\-23\\-16.44744\\-139.1146\\-23\\-15.70179\\-141.0678\\-23\\-12.24246\\-144.974\\-23\\-12.15892\\-146.9271\\-23\\-11.12286\\-148.8803\\-23\\-11.59505\\-150.8334\\-23\\-11.99498\\-151.1152\\-23\\-13.9481\\-149.8852\\-23\\-14.85308\\-148.8803\\-23\\-15.90123\\-147.3039\\-23\\-17.85435\\-147.6351\\-23\\-18.60142\\-148.8803\\-23\\-19.54482\\-150.8334\\-23\\-21.03373\\-152.7865\\-23\\-23.71373\\-155.4565\\-23\\-25.66685\\-156.7875\\-23\\-27.61998\\-157.3317\\-23\\-29.5731\\-157.4918\\-23\\-33.47935\\-157.4979\\-23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "34"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "301"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "30.97377\\-235.3968\\-23\\27.06752\\-233.9508\\-23\\25.1144\\-233.3478\\-23\\23.16127\\-233.4291\\-23\\21.20815\\-233.2568\\-23\\19.25502\\-232.8728\\-23\\17.3019\\-231.9436\\-23\\16.19433\\-230.9115\\-23\\18.77784\\-228.9584\\-23\\21.20815\\-227.8925\\-23\\23.16127\\-226.7936\\-23\\25.1144\\-226.011\\-23\\27.06752\\-224.5972\\-23\\29.02065\\-223.6345\\-23\\30.97377\\-222.0842\\-23\\32.9269\\-220.3263\\-23\\34.96807\\-219.1928\\-23\\38.16992\\-217.2396\\-23\\38.78627\\-216.7811\\-23\\40.7394\\-216.9684\\-23\\42.69252\\-218.6726\\-23\\43.83185\\-219.1928\\-23\\44.64565\\-219.744\\-23\\46.25517\\-221.1459\\-23\\45.94065\\-223.099\\-23\\44.64565\\-224.709\\-23\\44.11131\\-227.0053\\-23\\42.69252\\-228.4797\\-23\\42.41509\\-228.9584\\-23\\40.59676\\-230.9115\\-23\\38.4258\\-234.8178\\-23\\36.83315\\-236.1075\\-23\\34.88002\\-236.4175\\-23\\32.9269\\-236.5221\\-23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "302"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-164.754\\-23\\50.99331\\-164.5053\\-23\\50.50502\\-164.1537\\-23\\49.3274\\-162.5521\\-23\\50.50502\\-161.3009\\-23\\52.45815\\-160.9859\\-23\\53.14174\\-160.599\\-23\\56.3644\\-159.7905\\-23\\57.38123\\-160.599\\-23\\57.65292\\-162.5521\\-23\\56.3644\\-163.6566\\-23\\54.41127\\-163.1518\\-23\\52.95564\\-164.5053\\-23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "97"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "303"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-208.0585\\-23\\53.53459\\-207.474\\-23\\52.96848\\-205.5209\\-23\\53.52657\\-203.5678\\-23\\54.27584\\-201.6146\\-23\\54.30277\\-197.7084\\-23\\53.85413\\-195.7553\\-23\\55.22931\\-193.8021\\-23\\56.25589\\-191.849\\-23\\56.28363\\-189.8959\\-23\\57.31985\\-187.9428\\-23\\58.16891\\-185.9896\\-23\\59.39174\\-184.0365\\-23\\59.07165\\-182.0834\\-23\\58.31752\\-181.2849\\-23\\56.43013\\-180.1303\\-23\\56.67004\\-178.1771\\-23\\56.71092\\-176.224\\-23\\56.26966\\-174.2709\\-23\\56.3644\\-174.1488\\-23\\58.31752\\-174.5261\\-23\\58.99816\\-174.2709\\-23\\59.96732\\-172.3178\\-23\\59.97904\\-166.4584\\-23\\59.59171\\-164.5053\\-23\\60.27065\\-163.9011\\-23\\61.07867\\-162.5521\\-23\\61.3761\\-160.599\\-23\\62.22377\\-159.7108\\-23\\64.1769\\-159.1078\\-23\\66.13003\\-157.8296\\-23\\68.08315\\-157.3137\\-23\\70.03628\\-157.1896\\-23\\71.9894\\-157.8389\\-23\\73.94253\\-159.1167\\-23\\77.84878\\-159.5015\\-23\\79.36307\\-160.599\\-23\\80.84717\\-162.5521\\-23\\83.70815\\-165.4157\\-23\\84.65247\\-166.4584\\-23\\84.47995\\-168.4115\\-23\\83.70815\\-169.1592\\-23\\81.75503\\-169.9557\\-23\\79.8019\\-171.294\\-23\\78.73163\\-172.3178\\-23\\78.51503\\-174.2709\\-23\\79.8019\\-175.1768\\-23\\80.97234\\-176.224\\-23\\82.28937\\-178.1771\\-23\\82.96024\\-180.1303\\-23\\83.19447\\-182.0834\\-23\\83.54656\\-184.0365\\-23\\83.70815\\-184.2148\\-23\\85.66128\\-187.63\\-23\\85.93741\\-187.9428\\-23\\86.94036\\-189.8959\\-23\\87.6144\\-190.6521\\-23\\89.56753\\-191.4596\\-23\\90.02666\\-191.849\\-23\\90.57542\\-193.8021\\-23\\89.56753\\-195.2746\\-23\\89.04168\\-195.7553\\-23\\87.6144\\-196.683\\-23\\85.66128\\-196.0914\\-23\\83.70815\\-196.562\\-23\\81.75503\\-197.7311\\-23\\79.8019\\-198.5183\\-23\\77.75383\\-199.6615\\-23\\75.89565\\-200.3547\\-23\\73.94253\\-201.3483\\-23\\71.9894\\-201.1417\\-23\\70.54552\\-199.6615\\-23\\69.66929\\-197.7084\\-23\\69.62988\\-193.8021\\-23\\69.66929\\-191.849\\-23\\70.65514\\-189.8959\\-23\\71.24992\\-187.9428\\-23\\71.70757\\-184.0365\\-23\\71.67367\\-182.0834\\-23\\70.03628\\-181.0313\\-23\\68.08315\\-182.2055\\-23\\66.13003\\-182.2188\\-23\\64.1769\\-182.9185\\-23\\62.22377\\-183.4418\\-23\\61.28178\\-184.0365\\-23\\60.58546\\-185.9896\\-23\\59.40323\\-187.9428\\-23\\58.59935\\-189.8959\\-23\\58.31752\\-191.2081\\-23\\57.1782\\-191.849\\-23\\58.11245\\-193.8021\\-23\\58.16891\\-197.7084\\-23\\58.55325\\-199.6615\\-23\\59.7479\\-203.5678\\-23\\59.96965\\-205.5209\\-23\\58.31752\\-206.7838\\-23\\56.3644\\-207.3655\\-23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "169"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "304"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-53.0106\\-227.5592\\-21\\-54.96373\\-226.1876\\-21\\-56.91685\\-225.2759\\-21\\-59.09534\\-223.099\\-21\\-60.33482\\-221.1459\\-21\\-60.8231\\-220.5966\\-21\\-62.77623\\-218.8217\\-21\\-64.72935\\-217.8117\\-21\\-65.3374\\-217.2396\\-21\\-66.33595\\-215.2865\\-21\\-66.43833\\-213.3334\\-21\\-66.15406\\-211.3803\\-21\\-65.46329\\-209.4271\\-21\\-64.19847\\-207.474\\-21\\-62.49623\\-205.5209\\-21\\-60.48701\\-203.5678\\-21\\-60.46628\\-201.6146\\-21\\-59.9268\\-199.6615\\-21\\-59.16294\\-197.7084\\-21\\-58.86998\\-196.3767\\-21\\-58.46786\\-195.7553\\-21\\-58.86998\\-195.1338\\-21\\-59.16491\\-193.8021\\-21\\-59.91133\\-191.849\\-21\\-61.74802\\-189.8959\\-21\\-62.81437\\-187.9428\\-21\\-63.67012\\-185.9896\\-21\\-65.66708\\-184.0365\\-21\\-66.68247\\-183.1732\\-21\\-68.6356\\-182.5207\\-21\\-70.58872\\-181.0116\\-21\\-72.54185\\-179.2539\\-21\\-74.49497\\-179.2344\\-21\\-75.10056\\-180.1303\\-21\\-74.49497\\-180.7497\\-21\\-71.89597\\-184.0365\\-21\\-70.82943\\-185.9896\\-21\\-69.35319\\-187.9428\\-21\\-68.37651\\-189.8959\\-21\\-67.91329\\-193.8021\\-21\\-68.33163\\-197.7084\\-21\\-68.36507\\-203.5678\\-21\\-69.62116\\-205.5209\\-21\\-70.38929\\-207.474\\-21\\-71.57017\\-209.4271\\-21\\-77.4295\\-215.2865\\-21\\-78.40122\\-216.2212\\-21\\-80.35435\\-217.0158\\-21\\-82.30747\\-218.1557\\-21\\-84.2606\\-218.9811\\-21\\-86.21372\\-219.0058\\-21\\-88.16685\\-219.3544\\-21\\-90.11997\\-219.5871\\-21\\-92.0731\\-219.2593\\-21\\-94.02622\\-218.6554\\-21\\-97.93247\\-217.0279\\-21\\-101.8387\\-217.0039\\-21\\-103.7918\\-216.0124\\-21\\-107.6981\\-213.4783\\-21\\-110.0802\\-211.3803\\-21\\-111.6043\\-209.9241\\-21\\-113.5575\\-209.2222\\-21\\-115.5106\\-209.0589\\-21\\-117.4637\\-209.2876\\-21\\-119.4168\\-209.6321\\-21\\-121.37\\-210.4508\\-21\\-123.3231\\-212.1103\\-21\\-124.082\\-213.3334\\-21\\-125.2762\\-214.4409\\-21\\-127.2293\\-216.0381\\-21\\-129.1825\\-216.5321\\-21\\-133.0887\\-216.513\\-21\\-135.0419\\-215.8818\\-21\\-136.995\\-214.2638\\-21\\-138.9481\\-212.9672\\-21\\-140.3839\\-211.3803\\-21\\-141.1298\\-209.4271\\-21\\-141.6735\\-207.474\\-21\\-142.0398\\-205.5209\\-21\\-142.5078\\-203.5678\\-21\\-141.5997\\-201.6146\\-21\\-140.9012\\-201.0195\\-21\\-138.9481\\-201.0973\\-21\\-136.995\\-201.4926\\-21\\-135.0419\\-201.5771\\-21\\-133.0887\\-201.9446\\-21\\-131.1356\\-202.7964\\-21\\-129.6774\\-203.5678\\-21\\-129.1825\\-204.0696\\-21\\-127.2293\\-205.3146\\-21\\-123.3231\\-205.4185\\-21\\-117.4637\\-205.3146\\-21\\-115.5106\\-203.839\\-21\\-115.4264\\-203.5678\\-21\\-112.3086\\-199.6615\\-21\\-111.5084\\-197.7084\\-21\\-110.5948\\-195.7553\\-21\\-109.3137\\-193.8021\\-21\\-107.6981\\-192.0157\\-21\\-105.745\\-191.7964\\-21\\-103.7918\\-191.2039\\-21\\-101.8387\\-191.1689\\-21\\-99.8856\\-190.8404\\-21\\-97.93247\\-190.3809\\-21\\-95.97935\\-190.9464\\-21\\-94.02622\\-191.6133\\-21\\-92.0731\\-191.9711\\-21\\-90.11997\\-190.757\\-21\\-89.56602\\-189.8959\\-21\\-88.55616\\-187.9428\\-21\\-86.87736\\-185.9896\\-21\\-85.56785\\-184.0365\\-21\\-85.40793\\-182.0834\\-21\\-85.40793\\-180.1303\\-21\\-85.29142\\-178.1771\\-21\\-84.2606\\-177.024\\-21\\-82.55456\\-176.224\\-21\\-82.83589\\-174.2709\\-21\\-84.2606\\-173.2256\\-21\\-85.19186\\-172.3178\\-21\\-85.72544\\-170.3646\\-21\\-85.52651\\-168.4115\\-21\\-84.88002\\-166.4584\\-21\\-83.54811\\-164.5053\\-21\\-82.69682\\-162.5521\\-21\\-81.47997\\-160.599\\-21\\-80.35435\\-159.4303\\-21\\-78.40122\\-157.986\\-21\\-76.4481\\-157.4089\\-21\\-74.49497\\-157.1896\\-21\\-72.54185\\-157.6646\\-21\\-70.58872\\-159.0989\\-21\\-68.6356\\-159.1342\\-21\\-66.68247\\-159.5973\\-21\\-65.6088\\-160.599\\-21\\-65.08009\\-162.5521\\-21\\-64.7672\\-164.5053\\-21\\-64.34241\\-166.4584\\-21\\-64.30398\\-168.4115\\-21\\-63.87786\\-170.3646\\-21\\-62.85886\\-172.3178\\-21\\-62.36983\\-174.2709\\-21\\-62.35085\\-176.224\\-21\\-62.16254\\-178.1771\\-21\\-61.57703\\-180.1303\\-21\\-60.46628\\-182.0834\\-21\\-60.46628\\-184.0365\\-21\\-60.19831\\-185.9896\\-21\\-59.67505\\-187.9428\\-21\\-57.83238\\-189.8959\\-21\\-56.82211\\-191.849\\-21\\-56.79478\\-193.8021\\-21\\-56.43745\\-195.7553\\-21\\-55.29982\\-199.6615\\-21\\-53.71313\\-203.5678\\-21\\-52.12775\\-205.5209\\-21\\-51.35241\\-207.474\\-21\\-50.18649\\-209.4271\\-21\\-48.72342\\-213.3334\\-21\\-47.66029\\-215.2865\\-21\\-45.75984\\-217.2396\\-21\\-46.34647\\-219.1928\\-21\\-45.8412\\-221.1459\\-21\\-45.00279\\-223.099\\-21\\-44.86201\\-227.0053\\-21\\-45.1981\\-227.3698\\-21\\-47.15123\\-228.2083\\-21\\-49.10435\\-228.0702\\-21\\-51.05748\\-228.0512\\-21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "305"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-157.1636\\-21\\-39.33873\\-155.6987\\-21\\-41.29185\\-155.2193\\-21\\-43.24498\\-153.787\\-21\\-44.28631\\-152.7865\\-21\\-46.03439\\-150.8334\\-21\\-46.69824\\-148.8803\\-21\\-47.15123\\-148.3581\\-21\\-49.10435\\-146.8186\\-21\\-51.05748\\-147.9601\\-21\\-52.89986\\-146.9271\\-21\\-52.01878\\-144.974\\-21\\-51.05748\\-144.0512\\-21\\-49.10435\\-143.0285\\-21\\-47.21781\\-141.0678\\-21\\-46.60501\\-139.1146\\-21\\-45.82156\\-137.1615\\-21\\-44.60344\\-135.2084\\-21\\-43.24498\\-133.7257\\-21\\-41.29185\\-132.2692\\-21\\-39.33873\\-131.5138\\-21\\-37.3856\\-130.3448\\-21\\-35.43248\\-129.802\\-21\\-33.47935\\-129.7837\\-21\\-31.52623\\-128.6206\\-21\\-29.5731\\-127.8306\\-21\\-27.61998\\-127.8213\\-21\\-25.66685\\-128.0523\\-21\\-23.71373\\-128.8116\\-21\\-21.7606\\-129.9806\\-21\\-19.80748\\-131.5183\\-21\\-17.85435\\-134.8322\\-21\\-17.54836\\-135.2084\\-21\\-16.04983\\-139.1146\\-21\\-15.12101\\-141.0678\\-21\\-13.09217\\-143.0209\\-21\\-12.20668\\-144.974\\-21\\-12.17183\\-146.9271\\-21\\-11.12286\\-148.8803\\-21\\-11.59505\\-150.8334\\-21\\-11.99498\\-151.1152\\-21\\-13.9481\\-149.544\\-21\\-14.45685\\-148.8803\\-21\\-15.23716\\-146.9271\\-21\\-15.90123\\-146.2743\\-21\\-17.85435\\-146.978\\-21\\-18.71171\\-148.8803\\-21\\-20.54885\\-150.8334\\-21\\-21.7606\\-152.3363\\-21\\-24.21983\\-154.7396\\-21\\-25.66685\\-155.841\\-21\\-27.61998\\-156.7875\\-21\\-29.5731\\-157.1724\\-21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "32"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "306"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "34.88002\\-235.6556\\-21\\33.40501\\-234.8178\\-21\\30.97377\\-233.0349\\-21\\29.02065\\-232.656\\-21\\25.1144\\-230.6243\\-21\\23.16127\\-231.1312\\-21\\21.20815\\-231.0792\\-21\\20.74699\\-230.9115\\-21\\21.20815\\-230.5506\\-21\\22.35256\\-228.9584\\-21\\23.16127\\-228.4559\\-21\\25.07684\\-227.0053\\-21\\28.89123\\-225.0521\\-21\\30.97377\\-223.81\\-21\\33.66528\\-221.1459\\-21\\38.78627\\-216.7107\\-21\\40.7394\\-215.9801\\-21\\42.69252\\-216.4365\\-21\\44.64565\\-216.6189\\-21\\46.59877\\-215.5286\\-21\\48.5519\\-214.084\\-21\\50.50502\\-213.4699\\-21\\51.81468\\-215.2865\\-21\\52.194\\-217.2396\\-21\\52.00371\\-219.1928\\-21\\50.50502\\-221.6799\\-21\\48.82271\\-225.0521\\-21\\47.22656\\-227.0053\\-21\\43.32031\\-230.9115\\-21\\40.7394\\-233.1291\\-21\\38.78627\\-235.152\\-21\\36.83315\\-235.9552\\-21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "307"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-209.5356\\-21\\52.25871\\-207.474\\-21\\52.27115\\-205.5209\\-21\\52.45815\\-205.2673\\-21\\54.23689\\-201.6146\\-21\\54.30277\\-197.7084\\-21\\53.91657\\-195.7553\\-21\\56.25589\\-191.849\\-21\\56.28363\\-189.8959\\-21\\57.33559\\-187.9428\\-21\\58.18982\\-185.9896\\-21\\58.91044\\-185.9896\\-21\\59.23399\\-187.9428\\-21\\58.55325\\-189.8959\\-21\\58.31752\\-191.2105\\-21\\57.27993\\-191.849\\-21\\58.15757\\-193.8021\\-21\\58.20902\\-197.7084\\-21\\59.0575\\-199.6615\\-21\\59.68361\\-201.6146\\-21\\61.1935\\-205.5209\\-21\\61.30825\\-207.474\\-21\\60.27065\\-208.0311\\-21\\58.31752\\-207.8711\\-21\\56.3644\\-208.3778\\-21\\54.41127\\-209.8334\\-21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "84"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "308"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "71.9894\\-202.1803\\-21\\71.41673\\-201.6146\\-21\\70.46963\\-199.6615\\-21\\69.64934\\-195.7553\\-21\\69.67945\\-191.849\\-21\\70.69672\\-189.8959\\-21\\71.30522\\-187.9428\\-21\\71.68543\\-184.0365\\-21\\71.67367\\-182.0834\\-21\\70.03628\\-181.0313\\-21\\68.08315\\-182.2055\\-21\\66.13003\\-182.2055\\-21\\62.22377\\-182.8006\\-21\\60.27065\\-182.5991\\-21\\59.93805\\-182.0834\\-21\\58.31752\\-180.7362\\-21\\56.3644\\-181.5362\\-21\\54.80344\\-180.1303\\-21\\55.93105\\-176.224\\-21\\56.26966\\-174.2709\\-21\\57.03257\\-174.2709\\-21\\58.31752\\-174.9889\\-21\\59.05734\\-174.2709\\-21\\59.94789\\-172.3178\\-21\\59.99065\\-170.3646\\-21\\59.50939\\-168.4115\\-21\\59.6626\\-166.4584\\-21\\58.31752\\-165.2702\\-21\\57.45862\\-166.4584\\-21\\56.3644\\-167.3152\\-21\\54.41127\\-166.666\\-21\\51.0853\\-164.5053\\-21\\52.45815\\-162.5721\\-21\\54.41127\\-163.2888\\-21\\54.77642\\-162.5521\\-21\\55.00981\\-160.599\\-21\\56.3644\\-159.7362\\-21\\57.88219\\-160.599\\-21\\58.31752\\-161.0143\\-21\\59.00716\\-162.5521\\-21\\60.27065\\-164.4671\\-21\\61.55399\\-162.5521\\-21\\61.82705\\-160.599\\-21\\62.22377\\-160.1069\\-21\\64.1769\\-158.3599\\-21\\66.13003\\-157.5359\\-21\\68.08315\\-157.181\\-21\\70.03628\\-157.1896\\-21\\71.9894\\-157.6693\\-21\\73.94253\\-158.8329\\-21\\75.89565\\-159.4873\\-21\\77.84878\\-159.4722\\-21\\79.8019\\-159.9283\\-21\\80.44778\\-160.599\\-21\\81.75503\\-162.2572\\-21\\83.99976\\-164.5053\\-21\\85.11555\\-166.4584\\-21\\84.74125\\-168.4115\\-21\\83.70815\\-169.3418\\-21\\81.75503\\-170.3723\\-21\\79.8019\\-171.3038\\-21\\78.73701\\-172.3178\\-21\\79.4277\\-174.2709\\-21\\79.8019\\-174.5414\\-21\\81.75503\\-175.3479\\-21\\82.55357\\-176.224\\-21\\82.97451\\-178.1771\\-21\\83.58608\\-180.1303\\-21\\83.99011\\-182.0834\\-21\\84.50065\\-184.0365\\-21\\85.17592\\-185.9896\\-21\\86.41714\\-187.9428\\-21\\87.9562\\-189.8959\\-21\\90.42767\\-191.849\\-21\\90.44939\\-193.8021\\-21\\88.9183\\-195.7553\\-21\\87.6144\\-197.0592\\-21\\85.66128\\-196.7318\\-21\\83.70815\\-196.7919\\-21\\81.75503\\-197.775\\-21\\79.8019\\-198.5291\\-21\\77.84878\\-199.9433\\-21\\75.89565\\-200.8121\\-21\\73.94253\\-202.4672\\-21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "24"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "309"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-135.0419\\-214.1947\\-19\\-136.995\\-212.9466\\-19\\-138.9481\\-211.9582\\-19\\-139.4693\\-211.3803\\-19\\-139.9778\\-209.4271\\-19\\-140.3785\\-207.474\\-19\\-141.6436\\-205.5209\\-19\\-141.9344\\-203.5678\\-19\\-141.7852\\-201.6146\\-19\\-140.9012\\-200.6225\\-19\\-138.9481\\-200.5324\\-19\\-136.995\\-201.1146\\-19\\-135.0419\\-201.9186\\-19\\-133.0887\\-202.9292\\-19\\-132.397\\-203.5678\\-19\\-131.1356\\-205.9623\\-19\\-129.6029\\-207.474\\-19\\-127.4037\\-209.4271\\-19\\-125.8437\\-211.3803\\-19\\-125.7645\\-213.3334\\-19\\-127.2293\\-214.5001\\-19\\-129.1825\\-215.0359\\-19\\-131.1356\\-215.1293\\-19\\-133.0887\\-215.0978\\-19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "139"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "310"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-53.0106\\-227.8294\\-19\\-54.96373\\-226.391\\-19\\-56.91685\\-225.8719\\-19\\-59.69734\\-223.099\\-19\\-60.8231\\-221.7481\\-19\\-62.77623\\-219.7976\\-19\\-65.79623\\-217.2396\\-19\\-67.43683\\-215.2865\\-19\\-67.88847\\-213.3334\\-19\\-67.41067\\-211.3803\\-19\\-66.09544\\-209.4271\\-19\\-65.48421\\-207.474\\-19\\-64.72935\\-206.6982\\-19\\-62.77623\\-205.1242\\-19\\-60.8231\\-203.88\\-19\\-60.51914\\-203.5678\\-19\\-60.46628\\-201.6146\\-19\\-60.19493\\-199.6615\\-19\\-59.76802\\-197.7084\\-19\\-58.86998\\-194.4092\\-19\\-57.62215\\-193.8021\\-19\\-58.86998\\-193.5498\\-19\\-59.63834\\-191.849\\-19\\-61.35961\\-189.8959\\-19\\-61.92243\\-187.9428\\-19\\-61.55552\\-185.9896\\-19\\-62.77623\\-185.4262\\-19\\-64.72935\\-184.3425\\-19\\-66.68247\\-183.0327\\-19\\-68.6356\\-182.1642\\-19\\-72.2249\\-180.1303\\-19\\-72.54185\\-179.8776\\-19\\-73.05804\\-180.1303\\-19\\-73.42841\\-182.0834\\-19\\-72.12332\\-184.0365\\-19\\-70.96432\\-185.9896\\-19\\-68.83091\\-187.9428\\-19\\-68.36507\\-189.8959\\-19\\-68.33163\\-193.8021\\-19\\-68.34263\\-201.6146\\-19\\-68.78421\\-203.5678\\-19\\-69.77013\\-205.5209\\-19\\-70.41434\\-207.474\\-19\\-71.57017\\-209.4271\\-19\\-77.4295\\-215.2865\\-19\\-78.40122\\-216.2212\\-19\\-80.35435\\-217.0158\\-19\\-82.30747\\-218.1557\\-19\\-84.2606\\-218.9811\\-19\\-86.21372\\-218.9933\\-19\\-88.16685\\-219.6724\\-19\\-90.11997\\-219.988\\-19\\-92.0731\\-219.5183\\-19\\-94.02622\\-218.2011\\-19\\-95.97935\\-217.7016\\-19\\-99.8856\\-217.0158\\-19\\-101.8387\\-216.7309\\-19\\-103.7918\\-215.8014\\-19\\-105.745\\-214.2834\\-19\\-106.7732\\-213.3334\\-19\\-108.0497\\-211.3803\\-19\\-109.2163\\-209.4271\\-19\\-111.0111\\-207.474\\-19\\-111.1824\\-205.5209\\-19\\-110.3649\\-203.5678\\-19\\-110.4584\\-201.6146\\-19\\-109.7985\\-197.7084\\-19\\-109.13\\-195.7553\\-19\\-107.9992\\-193.8021\\-19\\-107.6981\\-193.5154\\-19\\-103.7918\\-192.076\\-19\\-101.8387\\-191.6496\\-19\\-97.93247\\-191.1922\\-19\\-95.97935\\-191.2032\\-19\\-94.02622\\-191.3549\\-19\\-92.0731\\-192.4679\\-19\\-90.32809\\-191.849\\-19\\-90.11997\\-191.6049\\-19\\-89.59723\\-189.8959\\-19\\-88.8307\\-187.9428\\-19\\-87.14356\\-185.9896\\-19\\-85.76074\\-184.0365\\-19\\-85.75176\\-180.1303\\-19\\-85.46362\\-178.1771\\-19\\-84.2606\\-176.932\\-19\\-82.46818\\-176.224\\-19\\-82.8161\\-174.2709\\-19\\-84.2606\\-173.2256\\-19\\-85.19186\\-172.3178\\-19\\-85.73412\\-170.3646\\-19\\-85.70841\\-168.4115\\-19\\-85.26575\\-166.4584\\-19\\-84.11199\\-164.5053\\-19\\-83.33243\\-162.5521\\-19\\-82.30747\\-160.7022\\-19\\-79.79335\\-158.6459\\-19\\-78.40122\\-157.7413\\-19\\-76.4481\\-157.2147\\-19\\-74.49497\\-157.181\\-19\\-72.54185\\-157.6646\\-19\\-70.58872\\-159.1078\\-19\\-68.6356\\-159.2986\\-19\\-66.68247\\-160.3567\\-19\\-66.45712\\-160.599\\-19\\-65.95005\\-162.5521\\-19\\-65.6312\\-164.5053\\-19\\-64.81136\\-166.4584\\-19\\-64.33262\\-168.4115\\-19\\-64.13701\\-170.3646\\-19\\-63.69012\\-172.3178\\-19\\-62.85823\\-174.2709\\-19\\-62.36028\\-176.224\\-19\\-62.34154\\-178.1771\\-19\\-61.79098\\-180.1303\\-19\\-60.50829\\-182.0834\\-19\\-61.00501\\-184.0365\\-19\\-60.52817\\-185.9896\\-19\\-59.58988\\-187.9428\\-19\\-58.86998\\-188.6112\\-19\\-57.83734\\-189.8959\\-19\\-56.86467\\-191.849\\-19\\-56.82211\\-193.8021\\-19\\-56.00441\\-195.7553\\-19\\-55.29982\\-197.7084\\-19\\-54.91154\\-199.6615\\-19\\-53.29243\\-203.5678\\-19\\-51.88593\\-205.5209\\-19\\-50.67561\\-207.474\\-19\\-49.77195\\-209.4271\\-19\\-48.21412\\-211.3803\\-19\\-48.13282\\-213.3334\\-19\\-47.83418\\-215.2865\\-19\\-47.88108\\-217.2396\\-19\\-48.81829\\-219.1928\\-19\\-47.8364\\-221.1459\\-19\\-45.25028\\-227.0053\\-19\\-47.15123\\-228.6654\\-19\\-49.10435\\-228.3298\\-19\\-51.05748\\-228.3228\\-19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "311"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-157.1636\\-19\\-39.33873\\-155.6987\\-19\\-41.29185\\-155.2193\\-19\\-43.24498\\-153.787\\-19\\-46.25096\\-150.8334\\-19\\-46.89214\\-148.8803\\-19\\-48.38509\\-146.9271\\-19\\-49.10435\\-146.2561\\-19\\-51.05748\\-147.2168\\-19\\-51.83429\\-146.9271\\-19\\-52.50354\\-144.974\\-19\\-51.05748\\-143.6923\\-19\\-49.10435\\-142.2946\\-19\\-48.00776\\-141.0678\\-19\\-47.20341\\-139.1146\\-19\\-45.1981\\-135.2176\\-19\\-43.77708\\-133.2553\\-19\\-43.24498\\-132.746\\-19\\-41.29185\\-131.9549\\-19\\-39.33873\\-130.7577\\-19\\-37.3856\\-129.9948\\-19\\-35.43248\\-129.7929\\-19\\-33.47935\\-129.7837\\-19\\-31.52623\\-128.8577\\-19\\-29.5731\\-128.2246\\-19\\-25.66685\\-128.2246\\-19\\-23.71373\\-128.7869\\-19\\-21.7606\\-129.7929\\-19\\-19.80748\\-130.5685\\-19\\-19.07379\\-131.3021\\-19\\-18.35412\\-133.2553\\-19\\-17.10431\\-135.2084\\-19\\-16.42318\\-137.1615\\-19\\-16.04983\\-139.1146\\-19\\-14.73917\\-141.0678\\-19\\-12.5407\\-143.0209\\-19\\-12.16936\\-144.974\\-19\\-12.18372\\-146.9271\\-19\\-11.12286\\-148.8803\\-19\\-11.59505\\-150.8334\\-19\\-11.99498\\-151.1152\\-19\\-12.38743\\-150.8334\\-19\\-14.18382\\-148.8803\\-19\\-15.02482\\-146.9271\\-19\\-15.90123\\-146.0975\\-19\\-17.85435\\-147.0356\\-19\\-18.71171\\-148.8803\\-19\\-23.71373\\-153.8677\\-19\\-25.66685\\-155.3539\\-19\\-27.61998\\-156.0398\\-19\\-29.5731\\-157.181\\-19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "312"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "36.81145\\-234.8178\\-19\\34.88002\\-234.2057\\-19\\32.9269\\-233.0119\\-19\\30.97377\\-231.5347\\-19\\29.58074\\-230.9115\\-19\\27.28036\\-228.9584\\-19\\28.81407\\-227.0053\\-19\\30.97377\\-225.7943\\-19\\39.55684\\-217.2396\\-19\\40.7394\\-216.2816\\-19\\42.69252\\-215.7574\\-19\\44.64565\\-215.0356\\-19\\46.59877\\-214.043\\-19\\48.5519\\-212.3889\\-19\\50.50502\\-210.9881\\-19\\51.56514\\-209.4271\\-19\\52.25871\\-207.474\\-19\\52.27115\\-205.5209\\-19\\53.13816\\-203.5678\\-19\\53.73917\\-201.6146\\-19\\54.26266\\-197.7084\\-19\\54.2892\\-195.7553\\-19\\56.25589\\-191.849\\-19\\56.28363\\-189.8959\\-19\\58.31752\\-185.8501\\-19\\60.27065\\-185.6641\\-19\\60.43224\\-185.9896\\-19\\59.38612\\-187.9428\\-19\\59.03173\\-189.8959\\-19\\58.84336\\-191.849\\-19\\58.22278\\-195.7553\\-19\\58.61049\\-197.7084\\-19\\60.08365\\-201.6146\\-19\\61.03761\\-203.5678\\-19\\63.16068\\-207.474\\-19\\62.22377\\-209.3197\\-19\\60.27065\\-209.1123\\-19\\58.31752\\-208.6595\\-19\\56.3644\\-209.7131\\-19\\52.94643\\-211.3803\\-19\\52.45815\\-212.0778\\-19\\51.9445\\-213.3334\\-19\\53.17505\\-215.2865\\-19\\53.92651\\-217.2396\\-19\\53.90207\\-219.1928\\-19\\53.033\\-221.1459\\-19\\51.63068\\-223.099\\-19\\50.56774\\-225.0521\\-19\\48.86805\\-227.0053\\-19\\46.59877\\-229.2404\\-19\\44.48406\\-230.9115\\-19\\42.69252\\-232.0644\\-19\\40.7394\\-233.6469\\-19\\38.78627\\-234.5703\\-19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "73"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "313"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "71.9894\\-202.4704\\-19\\71.1731\\-201.6146\\-19\\70.85835\\-199.6615\\-19\\70.92355\\-197.7084\\-19\\70.38456\\-195.7553\\-19\\70.35017\\-193.8021\\-19\\69.99871\\-191.849\\-19\\70.07442\\-189.8959\\-19\\70.47105\\-187.9428\\-19\\71.9894\\-181.9362\\-19\\70.03628\\-181.0262\\-19\\68.08315\\-182.2188\\-19\\66.13003\\-182.245\\-19\\62.22377\\-182.8429\\-19\\61.09436\\-182.0834\\-19\\59.48779\\-180.1303\\-19\\59.83066\\-178.1771\\-19\\59.84747\\-174.2709\\-19\\59.98817\\-172.3178\\-19\\59.74422\\-170.3646\\-19\\58.31752\\-168.83\\-19\\57.5513\\-168.4115\\-19\\56.10088\\-166.4584\\-19\\56.01563\\-164.5053\\-19\\56.3644\\-162.4148\\-19\\58.31752\\-161.0906\\-19\\59.31192\\-162.5521\\-19\\58.73004\\-164.5053\\-19\\60.27065\\-166.6415\\-19\\61.44638\\-164.5053\\-19\\62.34675\\-162.5521\\-19\\62.27596\\-160.599\\-19\\63.00613\\-158.6459\\-19\\64.1769\\-157.6358\\-19\\66.13003\\-157.2958\\-19\\68.08315\\-157.1547\\-19\\70.03628\\-157.1547\\-19\\71.9894\\-157.356\\-19\\73.94253\\-158.0704\\-19\\75.89565\\-159.3349\\-19\\77.84878\\-159.4998\\-19\\79.8019\\-159.9051\\-19\\81.75503\\-161.6609\\-19\\84.78385\\-164.5053\\-19\\86.38114\\-166.4584\\-19\\85.20889\\-168.4115\\-19\\83.70815\\-169.3608\\-19\\81.75503\\-170.3873\\-19\\79.8019\\-171.3086\\-19\\78.73701\\-172.3178\\-19\\78.8724\\-174.2709\\-19\\79.8019\\-174.7328\\-19\\81.75503\\-174.8071\\-19\\83.01203\\-176.224\\-19\\83.22854\\-178.1771\\-19\\84.42907\\-180.1303\\-19\\84.8049\\-182.0834\\-19\\84.91337\\-184.0365\\-19\\85.98894\\-185.9896\\-19\\86.78736\\-187.9428\\-19\\87.6144\\-188.9138\\-19\\89.56753\\-190.7993\\-19\\91.04338\\-191.849\\-19\\91.03711\\-193.8021\\-19\\89.56753\\-194.7541\\-19\\87.6144\\-197.0517\\-19\\85.66128\\-197.9884\\-19\\83.70815\\-197.9377\\-19\\81.75503\\-198.3913\\-19\\79.8019\\-199.0988\\-19\\76.72258\\-201.6146\\-19\\75.89565\\-202.422\\-19\\73.94253\\-203.35\\-19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "16"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "314"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-137.1171\\-211.3803\\-17\\-138.5074\\-209.4271\\-17\\-138.9481\\-208.6489\\-17\\-140.2362\\-205.5209\\-17\\-140.6116\\-203.5678\\-17\\-140.617\\-201.6146\\-17\\-138.9481\\-200.4499\\-17\\-136.995\\-201.0657\\-17\\-135.0419\\-202.6575\\-17\\-134.0843\\-203.5678\\-17\\-133.1596\\-205.5209\\-17\\-132.7705\\-207.474\\-17\\-131.4954\\-209.4271\\-17\\-131.2492\\-211.3803\\-17\\-133.0887\\-212.6162\\-17\\-135.0419\\-212.3648\\-17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "83"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "315"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-90.11997\\-219.2593\\-17\\-92.0731\\-218.5923\\-17\\-94.02622\\-217.819\\-17\\-97.93247\\-217.6167\\-17\\-101.8387\\-216.2631\\-17\\-103.3931\\-215.2865\\-17\\-105.9432\\-213.3334\\-17\\-109.2874\\-207.474\\-17\\-108.7178\\-203.5678\\-17\\-109.2165\\-201.6146\\-17\\-109.0829\\-199.6615\\-17\\-108.5843\\-197.7084\\-17\\-107.9698\\-195.7553\\-17\\-106.2019\\-193.8021\\-17\\-105.745\\-193.4723\\-17\\-103.7918\\-192.6823\\-17\\-101.8387\\-191.6373\\-17\\-97.93247\\-191.5899\\-17\\-95.97935\\-191.1052\\-17\\-94.02622\\-190.7742\\-17\\-92.08296\\-191.849\\-17\\-90.11997\\-190.964\\-17\\-88.53619\\-187.9428\\-17\\-87.29612\\-185.9896\\-17\\-86.58984\\-184.0365\\-17\\-86.56823\\-182.0834\\-17\\-86.16154\\-180.1303\\-17\\-85.87764\\-178.1771\\-17\\-84.2606\\-176.7622\\-17\\-83.42231\\-176.224\\-17\\-83.14529\\-174.2709\\-17\\-85.212\\-172.3178\\-17\\-85.77904\\-170.3646\\-17\\-85.76984\\-168.4115\\-17\\-85.55743\\-166.4584\\-17\\-85.0601\\-164.5053\\-17\\-83.8326\\-162.5521\\-17\\-82.97427\\-160.599\\-17\\-82.30747\\-159.9138\\-17\\-80.35435\\-159.1167\\-17\\-78.40122\\-157.7413\\-17\\-76.4481\\-157.2147\\-17\\-74.49497\\-157.181\\-17\\-72.54185\\-157.6506\\-17\\-70.58872\\-159.0806\\-17\\-68.6356\\-159.6122\\-17\\-67.59429\\-160.599\\-17\\-66.68247\\-162.8384\\-17\\-66.13626\\-164.5053\\-17\\-65.64753\\-166.4584\\-17\\-64.82553\\-168.4115\\-17\\-64.33262\\-170.3646\\-17\\-64.13701\\-172.3178\\-17\\-63.53933\\-174.2709\\-17\\-62.36028\\-176.224\\-17\\-62.34154\\-178.1771\\-17\\-61.80399\\-180.1303\\-17\\-61.03604\\-182.0834\\-17\\-62.77623\\-183.5863\\-17\\-64.72935\\-183.3221\\-17\\-66.68247\\-182.8924\\-17\\-68.6356\\-181.6527\\-17\\-70.58872\\-181.0414\\-17\\-72.54185\\-180.7399\\-17\\-73.77341\\-182.0834\\-17\\-71.9966\\-185.9896\\-17\\-68.79556\\-187.9428\\-17\\-69.01427\\-189.8959\\-17\\-68.36507\\-193.8021\\-17\\-68.74574\\-195.7553\\-17\\-68.73106\\-197.7084\\-17\\-68.39988\\-199.6615\\-17\\-68.79836\\-201.6146\\-17\\-69.55821\\-203.5678\\-17\\-70.82445\\-207.474\\-17\\-71.72296\\-209.4271\\-17\\-73.51841\\-211.3803\\-17\\-78.40122\\-216.2119\\-17\\-80.35435\\-216.9921\\-17\\-82.30747\\-218.1464\\-17\\-84.2606\\-218.957\\-17\\-86.21372\\-218.9811\\-17\\-88.16685\\-219.3414\\-17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "316"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-49.10435\\-228.3298\\-17\\-51.05748\\-228.2955\\-17\\-53.0106\\-227.8199\\-17\\-54.96373\\-226.3697\\-17\\-56.91685\\-225.8561\\-17\\-60.8231\\-221.952\\-17\\-62.77623\\-220.1267\\-17\\-64.72935\\-219.2321\\-17\\-66.95213\\-217.2396\\-17\\-68.0588\\-215.2865\\-17\\-68.33163\\-213.3334\\-17\\-67.69952\\-211.3803\\-17\\-66.29554\\-209.4271\\-17\\-65.74294\\-207.474\\-17\\-64.72935\\-206.4884\\-17\\-61.02539\\-203.5678\\-17\\-60.47658\\-201.6146\\-17\\-60.46628\\-199.6615\\-17\\-60.21275\\-197.7084\\-17\\-59.78306\\-195.7553\\-17\\-58.86998\\-192.6059\\-17\\-56.91685\\-193.6122\\-17\\-55.82909\\-195.7553\\-17\\-54.9561\\-197.7084\\-17\\-54.89714\\-199.6615\\-17\\-53.85358\\-201.6146\\-17\\-52.59909\\-203.5678\\-17\\-51.74412\\-205.5209\\-17\\-50.16829\\-207.474\\-17\\-49.28127\\-209.4271\\-17\\-47.98754\\-211.3803\\-17\\-48.19532\\-213.3334\\-17\\-48.62495\\-215.2865\\-17\\-49.56499\\-217.2396\\-17\\-50.23367\\-219.1928\\-17\\-49.69965\\-221.1459\\-17\\-47.52232\\-225.0521\\-17\\-46.06794\\-227.0053\\-17\\-47.06154\\-228.9584\\-17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "317"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-157.1636\\-17\\-39.33873\\-155.6987\\-17\\-41.29185\\-155.2193\\-17\\-43.24498\\-153.787\\-17\\-46.23538\\-150.8334\\-17\\-46.8694\\-148.8803\\-17\\-48.2033\\-146.9271\\-17\\-49.10435\\-146.0353\\-17\\-51.05748\\-146.2705\\-17\\-52.92182\\-144.974\\-17\\-51.05748\\-142.9982\\-17\\-49.10435\\-141.3907\\-17\\-48.83198\\-141.0678\\-17\\-46.60501\\-137.1615\\-17\\-45.78978\\-135.2084\\-17\\-43.24498\\-132.4894\\-17\\-41.29185\\-131.799\\-17\\-39.33873\\-130.5199\\-17\\-37.3856\\-129.802\\-17\\-33.47935\\-129.7837\\-17\\-31.52623\\-129.5106\\-17\\-29.5731\\-129.048\\-17\\-25.66685\\-129.048\\-17\\-21.7606\\-129.811\\-17\\-19.80748\\-130.4899\\-17\\-18.97111\\-131.3021\\-17\\-17.85435\\-133.3414\\-17\\-16.06281\\-137.1615\\-17\\-16.04983\\-139.1146\\-17\\-14.75201\\-141.0678\\-17\\-12.51772\\-143.0209\\-17\\-12.17062\\-144.974\\-17\\-12.21095\\-146.9271\\-17\\-11.12286\\-148.8803\\-17\\-11.59505\\-150.8334\\-17\\-11.99498\\-151.1152\\-17\\-12.38743\\-150.8334\\-17\\-14.1719\\-148.8803\\-17\\-14.94076\\-146.9271\\-17\\-15.90123\\-146.1065\\-17\\-17.2255\\-146.9271\\-17\\-17.85435\\-147.6075\\-17\\-18.61925\\-148.8803\\-17\\-19.80748\\-150.3246\\-17\\-22.26443\\-152.7865\\-17\\-23.71373\\-154.072\\-17\\-25.66685\\-155.2533\\-17\\-27.61998\\-155.8344\\-17\\-29.5731\\-157.181\\-17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "138"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "318"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "36.83315\\-233.6978\\-17\\35.35854\\-232.8646\\-17\\33.23978\\-230.9115\\-17\\31.31392\\-228.9584\\-17\\32.07369\\-227.0053\\-17\\32.9269\\-226.143\\-17\\33.7407\\-225.0521\\-17\\36.83315\\-221.9442\\-17\\39.19058\\-219.1928\\-17\\40.7394\\-217.6439\\-17\\42.69252\\-216.1708\\-17\\44.64565\\-214.4409\\-17\\46.59877\\-212.5936\\-17\\48.5519\\-211.3137\\-17\\50.50502\\-210.6114\\-17\\51.70302\\-209.4271\\-17\\52.27115\\-207.474\\-17\\52.27115\\-205.5209\\-17\\52.96198\\-201.6146\\-17\\53.37067\\-199.6615\\-17\\53.94086\\-197.7084\\-17\\54.26266\\-195.7553\\-17\\56.25589\\-191.849\\-17\\56.28363\\-189.8959\\-17\\57.31985\\-187.9428\\-17\\58.18209\\-185.9896\\-17\\59.33341\\-184.0365\\-17\\60.05441\\-182.0834\\-17\\60.00011\\-180.1303\\-17\\60.01156\\-174.2709\\-17\\60.51814\\-172.3178\\-17\\60.58877\\-170.3646\\-17\\60.90039\\-168.4115\\-17\\61.83514\\-166.4584\\-17\\62.22377\\-165.922\\-17\\62.79855\\-164.5053\\-17\\63.08373\\-162.5521\\-17\\63.05312\\-160.599\\-17\\63.19042\\-158.6459\\-17\\64.1769\\-157.6594\\-17\\68.08315\\-156.6546\\-17\\70.03628\\-156.7875\\-17\\71.9894\\-157.1724\\-17\\73.94253\\-157.6645\\-17\\75.89565\\-158.7945\\-17\\79.8019\\-160.1901\\-17\\80.21601\\-160.599\\-17\\83.03527\\-162.5521\\-17\\83.70815\\-163.1652\\-17\\85.66128\\-164.2508\\-17\\85.91936\\-164.5053\\-17\\86.89456\\-166.4584\\-17\\86.0736\\-168.4115\\-17\\85.66128\\-168.7706\\-17\\83.70815\\-169.5365\\-17\\81.75503\\-170.6902\\-17\\79.8019\\-171.4744\\-17\\78.85844\\-172.3178\\-17\\77.18762\\-174.2709\\-17\\77.84878\\-175.7093\\-17\\81.75503\\-174.7328\\-17\\83.70815\\-175.7594\\-17\\84.08473\\-176.224\\-17\\84.17232\\-178.1771\\-17\\84.73679\\-180.1303\\-17\\85.07641\\-182.0834\\-17\\84.917\\-184.0365\\-17\\85.22392\\-185.9896\\-17\\86.68501\\-187.9428\\-17\\87.6144\\-188.9771\\-17\\89.56753\\-190.2124\\-17\\91.52065\\-191.1958\\-17\\92.21122\\-191.849\\-17\\92.47233\\-193.8021\\-17\\91.52065\\-194.7599\\-17\\89.56753\\-195.2851\\-17\\89.15534\\-195.7553\\-17\\88.10614\\-197.7084\\-17\\87.6144\\-198.2587\\-17\\85.66128\\-199.6351\\-17\\83.70815\\-199.6527\\-17\\81.75503\\-200.283\\-17\\79.75224\\-201.6146\\-17\\77.84878\\-202.5059\\-17\\75.89565\\-204.3767\\-17\\73.94253\\-204.2095\\-17\\73.2971\\-203.5678\\-17\\71.88089\\-201.6146\\-17\\71.45828\\-199.6615\\-17\\71.49255\\-197.7084\\-17\\71.25117\\-195.7553\\-17\\71.24227\\-193.8021\\-17\\70.87253\\-191.849\\-17\\70.40166\\-189.8959\\-17\\70.47363\\-185.9896\\-17\\71.14887\\-184.0365\\-17\\72.69065\\-182.0834\\-17\\73.07583\\-180.1303\\-17\\71.9894\\-179.5659\\-17\\71.36858\\-180.1303\\-17\\68.08315\\-182.3191\\-17\\66.13003\\-182.5832\\-17\\64.1769\\-183.1031\\-17\\62.68181\\-184.0365\\-17\\62.22377\\-184.4905\\-17\\61.23018\\-185.9896\\-17\\59.36029\\-187.9428\\-17\\59.19199\\-189.8959\\-17\\59.53555\\-191.849\\-17\\58.8956\\-195.7553\\-17\\59.18391\\-197.7084\\-17\\59.73641\\-199.6615\\-17\\60.27065\\-200.9778\\-17\\61.54282\\-203.5678\\-17\\63.1381\\-205.5209\\-17\\63.9899\\-207.474\\-17\\64.27531\\-209.4271\\-17\\62.22377\\-210.8817\\-17\\60.27065\\-210.2174\\-17\\58.31752\\-208.9742\\-17\\56.3644\\-210.0466\\-17\\54.41127\\-210.598\\-17\\52.33775\\-211.3803\\-17\\51.80149\\-213.3334\\-17\\53.09076\\-215.2865\\-17\\55.01177\\-217.2396\\-17\\55.23677\\-219.1928\\-17\\54.23176\\-221.1459\\-17\\53.56688\\-223.099\\-17\\52.43077\\-225.0521\\-17\\50.50502\\-226.131\\-17\\47.1824\\-228.9584\\-17\\46.59877\\-229.5318\\-17\\44.64565\\-230.4468\\-17\\44.10615\\-230.9115\\-17\\41.33185\\-232.8646\\-17\\40.7394\\-233.3874\\-17\\38.78627\\-233.9887\\-17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "319"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-136.995\\-208.4831\\-15\\-137.683\\-207.474\\-15\\-138.9481\\-205.1901\\-15\\-139.5132\\-203.5678\\-15\\-139.0866\\-201.6146\\-15\\-138.9481\\-201.4662\\-15\\-136.995\\-202.4243\\-15\\-135.8214\\-203.5678\\-15\\-134.6833\\-205.5209\\-15\\-134.668\\-207.474\\-15\\-135.0419\\-208.431\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "88"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "320"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-92.0731\\-217.3229\\-15\\-94.02622\\-217.0499\\-15\\-95.97935\\-217.0249\\-15\\-97.93247\\-216.6642\\-15\\-99.8856\\-216.4795\\-15\\-101.8387\\-215.839\\-15\\-103.7918\\-214.294\\-15\\-104.8503\\-213.3334\\-15\\-106.5205\\-211.3803\\-15\\-107.3162\\-209.4271\\-15\\-108.5007\\-207.474\\-15\\-108.3152\\-203.5678\\-15\\-108.863\\-201.6146\\-15\\-108.5656\\-199.6615\\-15\\-107.4257\\-197.7084\\-15\\-106.9219\\-195.7553\\-15\\-105.745\\-194.215\\-15\\-103.7918\\-192.9335\\-15\\-101.8387\\-191.4143\\-15\\-99.8856\\-191.1854\\-15\\-97.93247\\-191.0901\\-15\\-95.97935\\-190.5641\\-15\\-94.02622\\-189.7215\\-15\\-92.0731\\-189.745\\-15\\-90.11997\\-188.7125\\-15\\-89.55103\\-187.9428\\-15\\-88.46344\\-185.9896\\-15\\-87.68867\\-184.0365\\-15\\-87.11391\\-180.1303\\-15\\-87.09702\\-178.1771\\-15\\-86.21372\\-176.9583\\-15\\-84.2606\\-176.749\\-15\\-83.36139\\-176.224\\-15\\-83.39693\\-174.2709\\-15\\-85.59602\\-172.3178\\-15\\-86.77087\\-170.3646\\-15\\-86.69886\\-168.4115\\-15\\-85.54041\\-164.5053\\-15\\-84.89536\\-162.5521\\-15\\-83.19733\\-160.599\\-15\\-82.30747\\-159.7133\\-15\\-80.35435\\-159.1167\\-15\\-78.40122\\-157.7503\\-15\\-76.4481\\-157.239\\-15\\-74.49497\\-157.181\\-15\\-72.54185\\-157.5542\\-15\\-70.58872\\-158.5933\\-15\\-68.6356\\-160.055\\-15\\-68.15599\\-160.599\\-15\\-67.487\\-162.5521\\-15\\-66.35696\\-164.5053\\-15\\-66.12836\\-166.4584\\-15\\-65.66368\\-168.4115\\-15\\-64.82553\\-170.3646\\-15\\-63.74791\\-174.2709\\-15\\-62.3992\\-176.224\\-15\\-62.35085\\-178.1771\\-15\\-61.87779\\-180.1303\\-15\\-62.42999\\-182.0834\\-15\\-62.77623\\-182.3479\\-15\\-64.72935\\-182.6931\\-15\\-66.4536\\-182.0834\\-15\\-68.6356\\-181.0824\\-15\\-72.54185\\-181.0926\\-15\\-74.49497\\-181.9338\\-15\\-74.49497\\-182.2111\\-15\\-73.30249\\-184.0365\\-15\\-72.50215\\-185.9896\\-15\\-70.11341\\-187.9428\\-15\\-69.90266\\-189.8959\\-15\\-69.30377\\-191.849\\-15\\-68.46121\\-193.8021\\-15\\-69.36663\\-195.7553\\-15\\-69.49346\\-197.7084\\-15\\-69.13287\\-199.6615\\-15\\-69.5746\\-201.6146\\-15\\-70.14484\\-203.5678\\-15\\-70.44012\\-205.5209\\-15\\-71.3771\\-207.474\\-15\\-73.66592\\-211.3803\\-15\\-75.48649\\-213.3334\\-15\\-78.40122\\-216.024\\-15\\-80.35435\\-216.7485\\-15\\-82.30747\\-217.9632\\-15\\-84.2606\\-218.6815\\-15\\-86.21372\\-218.9222\\-15\\-88.16685\\-218.6134\\-15\\-90.11997\\-218.031\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "321"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-53.0106\\-227.5311\\-15\\-54.96373\\-226.1485\\-15\\-56.91685\\-225.3227\\-15\\-58.86998\\-223.6913\\-15\\-60.8231\\-221.9466\\-15\\-62.77623\\-220.5411\\-15\\-64.72935\\-220.3907\\-15\\-66.21176\\-219.1928\\-15\\-67.77906\\-217.2396\\-15\\-68.79955\\-215.2865\\-15\\-68.37651\\-213.3334\\-15\\-67.85538\\-211.3803\\-15\\-66.68247\\-209.3788\\-15\\-65.76199\\-207.474\\-15\\-61.67041\\-203.5678\\-15\\-60.49758\\-201.6146\\-15\\-60.46628\\-197.7084\\-15\\-60.22009\\-195.7553\\-15\\-59.64622\\-193.8021\\-15\\-58.86998\\-192.9469\\-15\\-56.91685\\-193.7681\\-15\\-55.82909\\-195.7553\\-15\\-54.9561\\-197.7084\\-15\\-54.89714\\-199.6615\\-15\\-53.85757\\-201.6146\\-15\\-52.11256\\-203.5678\\-15\\-51.2932\\-205.5209\\-15\\-49.92955\\-207.474\\-15\\-48.6643\\-209.4271\\-15\\-48.05839\\-211.3803\\-15\\-48.35355\\-213.3334\\-15\\-48.96891\\-215.2865\\-15\\-50.49554\\-219.1928\\-15\\-50.57219\\-221.1459\\-15\\-49.72084\\-223.099\\-15\\-47.98488\\-225.0521\\-15\\-46.62927\\-227.0053\\-15\\-47.15123\\-227.8162\\-15\\-49.10435\\-228.2823\\-15\\-51.05748\\-228.1363\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "322"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-157.1636\\-15\\-39.33873\\-155.7074\\-15\\-41.29185\\-155.2365\\-15\\-43.24498\\-153.787\\-15\\-44.28631\\-152.7865\\-15\\-46.06785\\-150.8334\\-15\\-46.68648\\-148.8803\\-15\\-48.01753\\-146.9271\\-15\\-49.10435\\-145.9164\\-15\\-51.05748\\-146.125\\-15\\-52.92182\\-144.974\\-15\\-51.67397\\-143.0209\\-15\\-49.57477\\-141.0678\\-15\\-47.7609\\-139.1146\\-15\\-46.8047\\-137.1615\\-15\\-45.96798\\-135.2084\\-15\\-43.24498\\-132.4894\\-15\\-41.29185\\-131.799\\-15\\-39.33873\\-130.5314\\-15\\-37.3856\\-129.8199\\-15\\-35.43248\\-129.7837\\-15\\-23.71373\\-129.7929\\-15\\-21.7606\\-129.9772\\-15\\-19.80748\\-130.6999\\-15\\-19.17725\\-131.3021\\-15\\-17.85435\\-133.3414\\-15\\-16.06281\\-137.1615\\-15\\-16.04983\\-139.1146\\-15\\-14.93375\\-141.0678\\-15\\-12.91205\\-143.0209\\-15\\-12.21595\\-144.974\\-15\\-12.36319\\-146.9271\\-15\\-11.99498\\-147.1636\\-15\\-11.12286\\-148.8803\\-15\\-11.59505\\-150.8334\\-15\\-11.99498\\-151.1152\\-15\\-12.38743\\-150.8334\\-15\\-14.14754\\-148.8803\\-15\\-14.66425\\-146.9271\\-15\\-15.90123\\-146.1357\\-15\\-16.79423\\-146.9271\\-15\\-18.17987\\-148.8803\\-15\\-19.08219\\-150.8334\\-15\\-21.7606\\-153.5058\\-15\\-23.71373\\-155.0234\\-15\\-27.61998\\-156.0289\\-15\\-29.5731\\-157.239\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "323"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "38.78627\\-233.0212\\-15\\36.83315\\-232.4572\\-15\\35.26672\\-230.9115\\-15\\34.88002\\-229.0529\\-15\\34.98761\\-227.0053\\-15\\36.09553\\-225.0521\\-15\\36.83315\\-224.2902\\-15\\39.08934\\-221.1459\\-15\\39.95486\\-219.1928\\-15\\40.7394\\-218.4169\\-15\\42.69252\\-217.091\\-15\\45.50202\\-213.3334\\-15\\46.59877\\-212.2137\\-15\\48.5519\\-210.7699\\-15\\50.0104\\-211.3803\\-15\\50.50502\\-212.0856\\-15\\50.96031\\-213.3334\\-15\\51.90843\\-215.2865\\-15\\52.45815\\-215.8362\\-15\\54.41127\\-216.8453\\-15\\54.88453\\-217.2396\\-15\\55.83226\\-219.1928\\-15\\55.27875\\-221.1459\\-15\\54.58566\\-223.099\\-15\\53.06448\\-225.0521\\-15\\52.45815\\-225.6585\\-15\\50.50502\\-226.1021\\-15\\46.59877\\-228.4387\\-15\\44.64565\\-229.7125\\-15\\42.69252\\-231.1991\\-15\\40.7394\\-232.3793\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "73"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "324"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "62.22377\\-212.1544\\-15\\61.3937\\-211.3803\\-15\\58.97418\\-209.4271\\-15\\58.31752\\-208.8129\\-15\\56.3644\\-209.0086\\-15\\54.41127\\-209.7665\\-15\\53.71777\\-209.4271\\-15\\52.45815\\-207.9786\\-15\\52.24645\\-207.474\\-15\\52.27115\\-203.5678\\-15\\52.63253\\-201.6146\\-15\\53.67759\\-197.7084\\-15\\54.27584\\-195.7553\\-15\\56.25589\\-191.849\\-15\\56.28363\\-189.8959\\-15\\57.36303\\-187.9428\\-15\\58.16891\\-185.9896\\-15\\58.55325\\-184.0365\\-15\\59.33994\\-182.0834\\-15\\59.97768\\-180.1303\\-15\\60.01156\\-174.2709\\-15\\61.03297\\-172.3178\\-15\\61.55498\\-170.3646\\-15\\62.22377\\-168.9678\\-15\\63.57201\\-166.4584\\-15\\63.69749\\-164.5053\\-15\\63.52077\\-162.5521\\-15\\63.48785\\-160.599\\-15\\63.92941\\-158.6459\\-15\\64.1769\\-158.3821\\-15\\66.13003\\-157.3246\\-15\\68.08315\\-155.9297\\-15\\70.03628\\-156.0976\\-15\\71.9894\\-157.1547\\-15\\73.94253\\-157.3728\\-15\\75.89565\\-157.8551\\-15\\77.84878\\-159.0952\\-15\\79.8019\\-159.8087\\-15\\81.75503\\-161.4994\\-15\\83.70815\\-162.3651\\-15\\85.66128\\-163.6636\\-15\\86.51933\\-164.5053\\-15\\87.35531\\-166.4584\\-15\\86.97044\\-168.4115\\-15\\85.66128\\-169.3987\\-15\\83.70815\\-170.0285\\-15\\81.75503\\-171.1429\\-15\\79.8019\\-171.9667\\-15\\77.84878\\-173.3048\\-15\\76.93169\\-174.2709\\-15\\75.89565\\-175.9717\\-15\\73.86475\\-178.1771\\-15\\71.9894\\-179.3677\\-15\\70.03628\\-181.3032\\-15\\68.08315\\-182.8739\\-15\\66.13003\\-183.4955\\-15\\64.1769\\-184.7245\\-15\\62.22377\\-186.5942\\-15\\60.27065\\-187.4487\\-15\\59.62718\\-187.9428\\-15\\59.21078\\-189.8959\\-15\\60.03493\\-191.849\\-15\\59.69587\\-193.8021\\-15\\59.57078\\-195.7553\\-15\\59.69587\\-197.7084\\-15\\60.57664\\-199.6615\\-15\\61.32716\\-201.6146\\-15\\63.06747\\-203.5678\\-15\\64.58182\\-205.5209\\-15\\65.75842\\-207.474\\-15\\66.15365\\-209.4271\\-15\\64.90556\\-211.3803\\-15\\64.1769\\-212.0118\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "325"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "75.89565\\-205.9208\\-15\\73.87594\\-203.5678\\-15\\72.92881\\-201.6146\\-15\\72.17773\\-199.6615\\-15\\71.75368\\-197.7084\\-15\\71.69643\\-193.8021\\-15\\71.25553\\-189.8959\\-15\\71.25117\\-187.9428\\-15\\70.92061\\-185.9896\\-15\\71.2934\\-184.0365\\-15\\73.08142\\-182.0834\\-15\\73.94253\\-180.861\\-15\\75.89565\\-178.5922\\-15\\77.84878\\-177.3308\\-15\\79.8019\\-176.3188\\-15\\81.75503\\-175.0531\\-15\\83.70815\\-174.8797\\-15\\84.80801\\-176.224\\-15\\84.73267\\-178.1771\\-15\\84.81986\\-180.1303\\-15\\85.08397\\-182.0834\\-15\\84.81492\\-184.0365\\-15\\84.82484\\-185.9896\\-15\\87.6144\\-189.0032\\-15\\90.70685\\-189.8959\\-15\\95.4269\\-191.5235\\-15\\95.59499\\-191.849\\-15\\93.85659\\-193.8021\\-15\\91.52065\\-196.1182\\-15\\89.56753\\-197.1151\\-15\\87.93992\\-199.6615\\-15\\85.66128\\-202.0076\\-15\\83.70815\\-203.6985\\-15\\79.8019\\-204.1018\\-15\\78.20856\\-205.5209\\-15\\77.84878\\-205.9766\\-15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "92"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "326"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.16685\\-218.0109\\-13\\-90.10603\\-217.2396\\-13\\-92.0731\\-216.0833\\-13\\-94.02622\\-216.3377\\-13\\-95.97935\\-216.1181\\-13\\-97.93247\\-215.4804\\-13\\-99.8856\\-215.6708\\-13\\-101.8387\\-214.9588\\-13\\-103.8764\\-213.3334\\-13\\-105.745\\-210.8443\\-13\\-106.7165\\-209.4271\\-13\\-107.5111\\-207.474\\-13\\-107.6173\\-205.5209\\-13\\-107.5627\\-203.5678\\-13\\-108.0054\\-201.6146\\-13\\-107.6173\\-199.6615\\-13\\-106.9717\\-197.7084\\-13\\-106.1607\\-195.7553\\-13\\-104.6195\\-193.8021\\-13\\-101.8387\\-191.0982\\-13\\-99.8856\\-190.1171\\-13\\-97.93247\\-189.4665\\-13\\-95.97935\\-189.0013\\-13\\-94.02622\\-188.7705\\-13\\-92.59736\\-187.9428\\-13\\-92.0731\\-187.0204\\-13\\-91.0791\\-185.9896\\-13\\-90.11997\\-184.5762\\-13\\-88.84167\\-182.0834\\-13\\-88.48586\\-180.1303\\-13\\-88.3308\\-178.1771\\-13\\-88.16685\\-177.9632\\-13\\-86.21372\\-176.7653\\-13\\-84.2606\\-177.2696\\-13\\-82.30747\\-177.9981\\-13\\-81.5631\\-176.224\\-13\\-82.30747\\-175.5237\\-13\\-84.2606\\-174.1093\\-13\\-86.21372\\-173.1779\\-13\\-87.42758\\-172.3178\\-13\\-88.62413\\-170.3646\\-13\\-88.10941\\-168.4115\\-13\\-86.84793\\-166.4584\\-13\\-85.70841\\-164.5053\\-13\\-85.12502\\-162.5521\\-13\\-82.30747\\-159.7133\\-13\\-80.35435\\-159.1167\\-13\\-78.40122\\-157.9297\\-13\\-76.4481\\-157.4043\\-13\\-74.49497\\-157.1896\\-13\\-72.54185\\-157.4429\\-13\\-70.58872\\-158.2902\\-13\\-70.21831\\-158.6459\\-13\\-68.6356\\-160.8149\\-13\\-67.83444\\-162.5521\\-13\\-66.81891\\-164.5053\\-13\\-66.29554\\-166.4584\\-13\\-66.12836\\-168.4115\\-13\\-65.50739\\-170.3646\\-13\\-64.35233\\-172.3178\\-13\\-63.88204\\-174.2709\\-13\\-63.00159\\-176.224\\-13\\-62.3992\\-178.1771\\-13\\-62.18388\\-180.1303\\-13\\-62.77623\\-180.8677\\-13\\-64.65739\\-182.0834\\-13\\-66.68247\\-181.2955\\-13\\-68.6356\\-180.8383\\-13\\-70.58872\\-181.0201\\-13\\-72.54185\\-181.3745\\-13\\-74.16567\\-182.0834\\-13\\-73.80919\\-184.0365\\-13\\-72.91888\\-185.9896\\-13\\-71.56528\\-187.9428\\-13\\-70.83792\\-189.8959\\-13\\-69.77927\\-191.849\\-13\\-69.19601\\-193.8021\\-13\\-69.786\\-195.7553\\-13\\-70.09167\\-197.7084\\-13\\-69.90862\\-199.6615\\-13\\-70.44012\\-203.5678\\-13\\-70.85926\\-205.5209\\-13\\-71.73383\\-207.474\\-13\\-73.3488\\-209.4271\\-13\\-74.49497\\-211.3208\\-13\\-75.85973\\-213.3334\\-13\\-76.4481\\-213.9075\\-13\\-78.65292\\-215.2865\\-13\\-80.35435\\-216.1884\\-13\\-82.30747\\-217.0513\\-13\\-84.2606\\-218.1035\\-13\\-86.21372\\-218.3649\\-13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "327"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-51.05748\\-227.4428\\-13\\-53.0106\\-226.3138\\-13\\-54.96373\\-225.4113\\-13\\-58.86998\\-222.5434\\-13\\-62.77623\\-220.8311\\-13\\-64.72935\\-220.4966\\-13\\-66.68247\\-219.4727\\-13\\-68.83688\\-217.2396\\-13\\-69.61765\\-215.2865\\-13\\-69.12096\\-213.3334\\-13\\-68.51171\\-211.3803\\-13\\-67.60853\\-209.4271\\-13\\-66.05949\\-207.474\\-13\\-64.72935\\-206.3925\\-13\\-61.8628\\-203.5678\\-13\\-60.50829\\-201.6146\\-13\\-60.46628\\-195.7553\\-13\\-59.66898\\-193.8021\\-13\\-58.86998\\-193.0475\\-13\\-56.91685\\-194.2668\\-13\\-55.84843\\-195.7553\\-13\\-55.00129\\-197.7084\\-13\\-54.91154\\-199.6615\\-13\\-54.04433\\-201.6146\\-13\\-51.99478\\-203.5678\\-13\\-50.65108\\-205.5209\\-13\\-49.79522\\-207.474\\-13\\-48.22544\\-209.4271\\-13\\-48.15245\\-211.3803\\-13\\-48.72492\\-213.3334\\-13\\-50.12456\\-217.2396\\-13\\-50.71095\\-219.1928\\-13\\-50.88309\\-221.1459\\-13\\-49.87271\\-223.099\\-13\\-47.86002\\-225.0521\\-13\\-47.21989\\-227.0053\\-13\\-49.10435\\-228.0821\\-13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "328"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-157.1981\\-13\\-39.33873\\-155.9223\\-13\\-41.29185\\-155.3682\\-13\\-43.24498\\-153.7823\\-13\\-44.26593\\-152.7865\\-13\\-45.39056\\-150.8334\\-13\\-47.15123\\-147.2947\\-13\\-47.39712\\-146.9271\\-13\\-49.10435\\-145.5475\\-13\\-51.05748\\-146.1309\\-13\\-52.92182\\-144.974\\-13\\-51.82026\\-143.0209\\-13\\-51.05748\\-142.2581\\-13\\-49.10435\\-141.1199\\-13\\-47.20341\\-139.1146\\-13\\-46.59398\\-137.1615\\-13\\-45.7749\\-135.2084\\-13\\-43.24498\\-132.5255\\-13\\-41.29185\\-131.8158\\-13\\-39.33873\\-130.7417\\-13\\-37.3856\\-130.0052\\-13\\-35.43248\\-129.811\\-13\\-33.47935\\-129.7837\\-13\\-23.71373\\-129.7929\\-13\\-21.7606\\-130.3207\\-13\\-20.05374\\-131.3021\\-13\\-18.00296\\-133.2553\\-13\\-16.94754\\-135.2084\\-13\\-16.06281\\-137.1615\\-13\\-16.04983\\-139.1146\\-13\\-14.96885\\-141.0678\\-13\\-13.09361\\-143.0209\\-13\\-12.23912\\-144.974\\-13\\-12.32528\\-146.9271\\-13\\-11.99498\\-147.1636\\-13\\-11.12286\\-148.8803\\-13\\-11.59505\\-150.8334\\-13\\-11.99498\\-151.1152\\-13\\-12.38743\\-150.8334\\-13\\-14.15039\\-148.8803\\-13\\-15.16076\\-146.9271\\-13\\-15.90123\\-146.506\\-13\\-16.32237\\-146.9271\\-13\\-17.3019\\-148.8803\\-13\\-18.63084\\-150.8334\\-13\\-19.80748\\-152.3132\\-13\\-21.7606\\-154.2731\\-13\\-23.71373\\-155.8123\\-13\\-27.61998\\-157.0722\\-13\\-29.5731\\-157.4731\\-13\\-33.47935\\-157.2469\\-13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "329"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "38.78627\\-231.8831\\-13\\37.11584\\-230.9115\\-13\\36.92933\\-228.9584\\-13\\37.36175\\-227.0053\\-13\\38.89641\\-225.0521\\-13\\39.7032\\-223.099\\-13\\40.95564\\-221.1459\\-13\\41.60499\\-219.1928\\-13\\42.69252\\-218.3121\\-13\\43.64255\\-217.2396\\-13\\44.78208\\-215.2865\\-13\\45.71938\\-213.3334\\-13\\46.59877\\-212.3233\\-13\\48.5519\\-210.4738\\-13\\49.85159\\-211.3803\\-13\\50.1795\\-213.3334\\-13\\51.49734\\-215.2865\\-13\\52.45815\\-216.2422\\-13\\54.41127\\-217.4405\\-13\\55.95546\\-219.1928\\-13\\55.81867\\-221.1459\\-13\\54.85787\\-223.099\\-13\\54.41127\\-223.5456\\-13\\52.45815\\-224.5788\\-13\\50.50502\\-224.9147\\-13\\48.5519\\-225.7162\\-13\\46.59877\\-227.4712\\-13\\44.64565\\-228.334\\-13\\43.45546\\-228.9584\\-13\\40.7394\\-231.3231\\-13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "117"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "330"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "62.22377\\-212.3613\\-13\\60.27065\\-210.431\\-13\\58.31752\\-208.6598\\-13\\56.3644\\-208.6059\\-13\\54.41127\\-208.9218\\-13\\52.45815\\-207.9728\\-13\\52.03278\\-207.474\\-13\\51.97853\\-205.5209\\-13\\52.25871\\-203.5678\\-13\\53.13544\\-201.6146\\-13\\53.73427\\-199.6615\\-13\\53.94711\\-197.7084\\-13\\54.33051\\-195.7553\\-13\\56.25589\\-191.849\\-13\\56.28363\\-189.8959\\-13\\57.28024\\-187.9428\\-13\\58.15593\\-185.9896\\-13\\58.16891\\-184.0365\\-13\\59.19084\\-182.0834\\-13\\59.97768\\-180.1303\\-13\\60.07121\\-174.2709\\-13\\62.22377\\-170.7046\\-13\\64.1769\\-168.7052\\-13\\66.13003\\-166.9513\\-13\\66.53439\\-166.4584\\-13\\66.27314\\-164.5053\\-13\\64.13934\\-162.5521\\-13\\63.74221\\-160.599\\-13\\64.96527\\-158.6459\\-13\\66.13003\\-157.555\\-13\\68.08315\\-155.9617\\-13\\70.03628\\-155.7683\\-13\\71.9894\\-156.8544\\-13\\73.94253\\-157.1896\\-13\\75.89565\\-157.4115\\-13\\77.84878\\-158.03\\-13\\79.8019\\-159.5325\\-13\\83.70815\\-161.8524\\-13\\86.51398\\-164.5053\\-13\\88.17825\\-166.4584\\-13\\88.57803\\-168.4115\\-13\\87.6144\\-169.585\\-13\\85.66128\\-170.0717\\-13\\81.75503\\-171.4841\\-13\\79.95609\\-172.3178\\-13\\77.84878\\-173.6977\\-13\\77.36349\\-174.2709\\-13\\76.32455\\-176.224\\-13\\74.39175\\-178.1771\\-13\\73.94253\\-179.041\\-13\\72.9189\\-180.1303\\-13\\73.94253\\-181.8295\\-13\\75.89565\\-180.3173\\-13\\78.51196\\-178.1771\\-13\\79.8019\\-177.2428\\-13\\81.75503\\-175.5674\\-13\\83.70815\\-174.977\\-13\\84.91193\\-176.224\\-13\\84.81002\\-178.1771\\-13\\84.82484\\-180.1303\\-13\\85.173\\-182.0834\\-13\\85.29429\\-184.0365\\-13\\86.04783\\-185.9896\\-13\\87.6144\\-188.0494\\-13\\89.56753\\-189.138\\-13\\91.52065\\-189.2261\\-13\\93.47378\\-189.4612\\-13\\95.4269\\-190.2689\\-13\\96.53684\\-191.849\\-13\\95.4269\\-193.4978\\-13\\91.52065\\-197.325\\-13\\89.56753\\-198.6917\\-13\\88.80442\\-199.6615\\-13\\88.2495\\-201.6146\\-13\\88.50844\\-203.5678\\-13\\89.70809\\-205.5209\\-13\\89.74722\\-207.474\\-13\\89.56753\\-207.7817\\-13\\87.6144\\-209.9229\\-13\\86.17915\\-211.3803\\-13\\85.66128\\-211.6581\\-13\\83.70815\\-211.4994\\-13\\81.75503\\-209.9192\\-13\\80.45959\\-209.4271\\-13\\79.8019\\-208.7826\\-13\\77.84878\\-208.1576\\-13\\77.09415\\-207.474\\-13\\73.55559\\-201.6146\\-13\\72.95517\\-199.6615\\-13\\72.45696\\-197.7084\\-13\\71.73031\\-193.8021\\-13\\71.69643\\-191.849\\-13\\71.81376\\-185.9896\\-13\\72.73434\\-184.0365\\-13\\73.81806\\-182.0834\\-13\\71.9894\\-180.7017\\-13\\70.03628\\-182.7282\\-13\\68.36331\\-184.0365\\-13\\66.13003\\-186.2984\\-13\\64.1769\\-187.0883\\-13\\63.18749\\-187.9428\\-13\\62.22377\\-188.4343\\-13\\60.27065\\-189.8817\\-13\\60.58546\\-191.849\\-13\\60.10906\\-193.8021\\-13\\60.14858\\-197.7084\\-13\\62.22377\\-200.6292\\-13\\63.66909\\-201.6146\\-13\\64.1769\\-202.1511\\-13\\66.13003\\-203.2446\\-13\\66.48159\\-203.5678\\-13\\66.84103\\-205.5209\\-13\\67.56279\\-207.474\\-13\\68.13614\\-209.4271\\-13\\67.24458\\-211.3803\\-13\\66.13003\\-212.7849\\-13\\64.1769\\-213.0743\\-13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "90"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "331"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.21372\\-217.5757\\-11\\-88.16685\\-217.173\\-11\\-90.11997\\-216.6341\\-11\\-91.6662\\-215.2865\\-11\\-92.0731\\-214.6388\\-11\\-93.49454\\-213.3334\\-11\\-94.02622\\-212.9988\\-11\\-95.47627\\-213.3334\\-11\\-97.93247\\-214.2303\\-11\\-99.8856\\-214.5062\\-11\\-101.8387\\-214.1204\\-11\\-103.7918\\-212.3952\\-11\\-104.7183\\-211.3803\\-11\\-106.2856\\-209.4271\\-11\\-107.042\\-207.474\\-11\\-107.1928\\-205.5209\\-11\\-107.2098\\-199.6615\\-11\\-107.0838\\-197.7084\\-11\\-105.745\\-195.8773\\-11\\-103.7691\\-193.8021\\-11\\-102.7486\\-191.849\\-11\\-100.701\\-189.8959\\-11\\-99.8856\\-189.0191\\-11\\-97.93247\\-187.5081\\-11\\-95.97935\\-186.8588\\-11\\-94.62132\\-185.9896\\-11\\-94.29933\\-184.0365\\-11\\-94.02622\\-183.1158\\-11\\-92.99386\\-182.0834\\-11\\-92.0731\\-181.785\\-11\\-90.11997\\-179.8802\\-11\\-89.33982\\-178.1771\\-11\\-88.16685\\-177.1428\\-11\\-86.21372\\-177.2255\\-11\\-84.2606\\-178.4811\\-11\\-82.30747\\-179.2836\\-11\\-78.40122\\-182.0183\\-11\\-77.30596\\-180.1303\\-11\\-78.93234\\-178.1771\\-11\\-82.30747\\-175.4236\\-11\\-86.21372\\-174.1624\\-11\\-88.16685\\-173.6327\\-11\\-89.28761\\-172.3178\\-11\\-89.42455\\-170.3646\\-11\\-88.74365\\-168.4115\\-11\\-87.07685\\-166.4584\\-11\\-85.70841\\-164.5053\\-11\\-85.12502\\-162.5521\\-11\\-82.30747\\-159.7133\\-11\\-80.35435\\-159.1167\\-11\\-78.40122\\-158.2299\\-11\\-76.4481\\-157.5266\\-11\\-74.49497\\-157.2229\\-11\\-72.54185\\-157.5938\\-11\\-71.19757\\-158.6459\\-11\\-69.4281\\-160.599\\-11\\-68.14732\\-162.5521\\-11\\-67.48943\\-164.5053\\-11\\-66.35696\\-166.4584\\-11\\-66.28574\\-168.4115\\-11\\-65.86295\\-170.3646\\-11\\-64.72935\\-172.6123\\-11\\-64.15205\\-174.2709\\-11\\-63.73255\\-176.224\\-11\\-63.04676\\-178.1771\\-11\\-62.97708\\-180.1303\\-11\\-64.72935\\-181.694\\-11\\-66.68247\\-182.2717\\-11\\-68.6356\\-181.2269\\-11\\-70.58872\\-180.8745\\-11\\-74.49497\\-181.7092\\-11\\-76.4481\\-181.6091\\-11\\-78.1655\\-182.0834\\-11\\-76.4481\\-182.5669\\-11\\-75.38959\\-184.0365\\-11\\-73.63131\\-185.9896\\-11\\-71.57072\\-189.8959\\-11\\-70.16734\\-193.8021\\-11\\-70.2319\\-195.7553\\-11\\-70.49399\\-197.7084\\-11\\-70.49399\\-201.6146\\-11\\-70.89269\\-203.5678\\-11\\-71.55998\\-205.5209\\-11\\-72.54185\\-207.4226\\-11\\-73.91383\\-209.4271\\-11\\-76.4481\\-212.3343\\-11\\-77.43958\\-213.3334\\-11\\-78.40122\\-214.1062\\-11\\-82.30747\\-216.1611\\-11\\-84.2606\\-216.9904\\-11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "332"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-51.05748\\-225.9568\\-11\\-53.0106\\-224.7625\\-11\\-54.96373\\-223.982\\-11\\-56.91685\\-222.5164\\-11\\-58.86998\\-221.543\\-11\\-60.8231\\-220.4452\\-11\\-62.77623\\-220.2908\\-11\\-64.72935\\-219.8974\\-11\\-66.68247\\-218.7527\\-11\\-68.6356\\-217.7369\\-11\\-69.16193\\-217.2396\\-11\\-70.14484\\-215.2865\\-11\\-69.92024\\-213.3334\\-11\\-69.58984\\-211.3803\\-11\\-68.6356\\-209.6225\\-11\\-67.33552\\-207.474\\-11\\-66.68247\\-206.8404\\-11\\-64.72935\\-205.7701\\-11\\-62.77623\\-204.5017\\-11\\-61.86226\\-203.5678\\-11\\-60.6361\\-201.6146\\-11\\-60.46628\\-195.7553\\-11\\-59.26758\\-193.8021\\-11\\-58.86998\\-193.4453\\-11\\-56.91685\\-194.7074\\-11\\-55.99802\\-195.7553\\-11\\-55.37967\\-197.7084\\-11\\-54.48721\\-201.6146\\-11\\-51.05748\\-204.7777\\-11\\-50.42894\\-205.5209\\-11\\-49.57801\\-207.474\\-11\\-48.24123\\-209.4271\\-11\\-48.35908\\-211.3803\\-11\\-49.34007\\-213.3334\\-11\\-50.12456\\-215.2865\\-11\\-50.69049\\-217.2396\\-11\\-50.88309\\-219.1928\\-11\\-50.49363\\-221.1459\\-11\\-49.10435\\-222.9837\\-11\\-47.15123\\-224.7577\\-11\\-46.24125\\-225.0521\\-11\\-47.15123\\-225.4781\\-11\\-49.10435\\-226.6328\\-11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "333"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-156.8414\\-11\\-41.29185\\-155.627\\-11\\-44.15931\\-152.7865\\-11\\-44.68442\\-150.8334\\-11\\-46.21905\\-148.8803\\-11\\-46.85826\\-146.9271\\-11\\-47.15123\\-146.5891\\-11\\-49.10435\\-145.2215\\-11\\-52.65456\\-146.9271\\-11\\-53.0106\\-147.2689\\-11\\-53.25474\\-146.9271\\-11\\-52.92182\\-144.974\\-11\\-51.82026\\-143.0209\\-11\\-51.05748\\-142.2581\\-11\\-49.10435\\-141.5731\\-11\\-48.44088\\-141.0678\\-11\\-46.8047\\-139.1146\\-11\\-46.18961\\-137.1615\\-11\\-45.1981\\-135.6666\\-11\\-43.24498\\-133.2316\\-11\\-41.29185\\-131.965\\-11\\-39.33873\\-131.5259\\-11\\-37.3856\\-130.542\\-11\\-35.43248\\-130.0188\\-11\\-33.47935\\-129.8199\\-11\\-31.52623\\-129.7837\\-11\\-25.66685\\-129.7837\\-11\\-23.71373\\-129.8199\\-11\\-21.7606\\-130.5022\\-11\\-19.80748\\-131.9617\\-11\\-18.47196\\-133.2553\\-11\\-16.95255\\-135.2084\\-11\\-16.06281\\-137.1615\\-11\\-16.06281\\-139.1146\\-11\\-15.13255\\-141.0678\\-11\\-13.25452\\-143.0209\\-11\\-12.2307\\-144.974\\-11\\-12.14869\\-146.9271\\-11\\-11.10109\\-148.8803\\-11\\-11.55785\\-150.8334\\-11\\-11.99498\\-151.1373\\-11\\-12.41606\\-150.8334\\-11\\-14.21891\\-148.8803\\-11\\-15.90123\\-147.7163\\-11\\-16.87779\\-148.8803\\-11\\-18.24129\\-150.8334\\-11\\-19.09058\\-152.7865\\-11\\-21.7606\\-155.4372\\-11\\-23.71373\\-156.8013\\-11\\-25.66685\\-157.3882\\-11\\-27.61998\\-157.7695\\-11\\-29.5731\\-158.2672\\-11\\-31.52623\\-157.7426\\-11\\-33.47935\\-157.4876\\-11\\-37.3856\\-157.3818\\-11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "334"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "44.64565\\-224.9301\\-11\\42.90179\\-223.099\\-11\\42.97257\\-221.1459\\-11\\43.63094\\-219.1928\\-11\\45.10629\\-217.2396\\-11\\45.74352\\-215.2865\\-11\\46.59877\\-214.0233\\-11\\48.5519\\-211.4418\\-11\\51.20257\\-215.2865\\-11\\52.45815\\-216.4807\\-11\\54.41127\\-218.0042\\-11\\55.5177\\-219.1928\\-11\\55.77846\\-221.1459\\-11\\54.41127\\-222.6698\\-11\\52.45815\\-223.8608\\-11\\48.5519\\-224.0199\\-11\\46.59877\\-224.8262\\-11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "75"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "335"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "64.1769\\-218.3464\\-11\\62.99107\\-217.2396\\-11\\64.15419\\-215.2865\\-11\\63.50618\\-213.3334\\-11\\62.31995\\-211.3803\\-11\\60.27065\\-209.4195\\-11\\58.31752\\-208.5614\\-11\\56.3644\\-208.6008\\-11\\54.41127\\-208.7381\\-11\\52.45815\\-207.8042\\-11\\52.15419\\-207.474\\-11\\51.79858\\-205.5209\\-11\\52.45815\\-203.4213\\-11\\54.26266\\-199.6615\\-11\\54.35909\\-197.7084\\-11\\54.6931\\-195.7553\\-11\\55.41225\\-193.8021\\-11\\56.25589\\-191.849\\-11\\56.34169\\-189.8959\\-11\\58.15593\\-185.9896\\-11\\58.23676\\-184.0365\\-11\\59.20414\\-182.0834\\-11\\59.97768\\-180.1303\\-11\\60.07121\\-176.224\\-11\\61.30172\\-172.3178\\-11\\62.22377\\-171.2744\\-11\\64.1769\\-169.8284\\-11\\66.13003\\-168.9596\\-11\\66.67816\\-168.4115\\-11\\67.46886\\-166.4584\\-11\\67.39793\\-164.5053\\-11\\66.13003\\-163.2087\\-11\\65.26278\\-162.5521\\-11\\64.44743\\-160.599\\-11\\65.29626\\-158.6459\\-11\\66.13003\\-157.7394\\-11\\68.08315\\-156.7735\\-11\\70.03628\\-155.7068\\-11\\71.9894\\-156.1509\\-11\\73.94253\\-157.2229\\-11\\75.89565\\-157.4192\\-11\\77.84878\\-158.0294\\-11\\79.8019\\-159.6225\\-11\\81.63296\\-160.599\\-11\\83.70815\\-161.9618\\-11\\88.40881\\-166.4584\\-11\\89.30843\\-168.4115\\-11\\87.86594\\-170.3646\\-11\\85.66128\\-170.771\\-11\\83.70815\\-171.3623\\-11\\79.8019\\-172.7337\\-11\\77.84878\\-174.6687\\-11\\76.77754\\-176.224\\-11\\74.83076\\-178.1771\\-11\\71.80106\\-182.0834\\-11\\70.5537\\-184.0365\\-11\\68.08315\\-185.7899\\-11\\66.34956\\-187.9428\\-11\\64.1769\\-190.1696\\-11\\62.22377\\-191.5663\\-11\\61.20039\\-193.8021\\-11\\62.22377\\-195.444\\-11\\64.1769\\-197.3793\\-11\\64.40624\\-197.7084\\-11\\65.13468\\-199.6615\\-11\\66.13003\\-200.5695\\-11\\67.52903\\-203.5678\\-11\\68.08315\\-205.3943\\-11\\68.99936\\-207.474\\-11\\69.57404\\-209.4271\\-11\\69.89828\\-211.3803\\-11\\68.58047\\-213.3334\\-11\\68.63614\\-215.2865\\-11\\68.52517\\-217.2396\\-11\\68.08315\\-217.5677\\-11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "336"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "83.70815\\-211.9255\\-11\\81.75503\\-210.305\\-11\\79.8019\\-209.1016\\-11\\77.84878\\-207.3302\\-11\\76.69903\\-205.5209\\-11\\75.08022\\-203.5678\\-11\\73.94253\\-199.7572\\-11\\73.26189\\-197.7084\\-11\\72.93323\\-195.7553\\-11\\72.16379\\-193.8021\\-11\\71.77769\\-191.849\\-11\\72.47768\\-187.9428\\-11\\72.91871\\-185.9896\\-11\\73.82162\\-184.0365\\-11\\75.05593\\-182.0834\\-11\\75.89565\\-181.3124\\-11\\80.48006\\-178.1771\\-11\\81.75503\\-177.1793\\-11\\83.70815\\-176.0362\\-11\\83.9116\\-176.224\\-11\\84.92886\\-178.1771\\-11\\85.31475\\-180.1303\\-11\\86.24503\\-182.0834\\-11\\86.6557\\-184.0365\\-11\\87.6144\\-185.5059\\-11\\89.56753\\-187.4955\\-11\\90.18101\\-187.9428\\-11\\91.52065\\-188.5685\\-11\\93.47378\\-189.311\\-11\\95.4269\\-190.9452\\-11\\96.22202\\-191.849\\-11\\95.80847\\-193.8021\\-11\\94.40965\\-195.7553\\-11\\93.47378\\-196.8105\\-11\\91.52065\\-198.7521\\-11\\90.40136\\-199.6615\\-11\\90.07508\\-201.6146\\-11\\91.52065\\-204.7295\\-11\\91.97964\\-205.5209\\-11\\93.77239\\-207.474\\-11\\93.9883\\-209.4271\\-11\\93.47378\\-209.8829\\-11\\91.52065\\-210.6762\\-11\\90.87653\\-211.3803\\-11\\89.56753\\-211.8804\\-11\\85.66128\\-212.4506\\-11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "337"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-90.11997\\-215.9824\\-9\\-92.0731\\-214.0085\\-9\\-94.02622\\-212.6292\\-9\\-95.97935\\-212.8114\\-9\\-97.93247\\-213.3712\\-9\\-99.8856\\-213.6761\\-9\\-101.8387\\-212.927\\-9\\-103.7918\\-211.3726\\-9\\-105.2654\\-209.4271\\-9\\-106.5095\\-207.474\\-9\\-107.0353\\-205.5209\\-9\\-107.1844\\-203.5678\\-9\\-107.2098\\-197.7084\\-9\\-106.1667\\-195.7553\\-9\\-103.8873\\-193.8021\\-9\\-102.9201\\-191.849\\-9\\-101.1635\\-189.8959\\-9\\-100.2471\\-187.9428\\-9\\-99.8856\\-186.8723\\-9\\-98.96764\\-185.9896\\-9\\-97.95518\\-184.0365\\-9\\-96.45859\\-182.0834\\-9\\-95.97935\\-181.7056\\-9\\-92.0731\\-179.4604\\-9\\-88.16685\\-178.1057\\-9\\-86.21372\\-178.4129\\-9\\-84.2606\\-179.4413\\-9\\-82.30747\\-180.6271\\-9\\-80.35435\\-181.4872\\-9\\-78.40122\\-183.1601\\-9\\-76.4481\\-184.5954\\-9\\-75.01055\\-185.9896\\-9\\-73.53976\\-187.9428\\-9\\-72.59403\\-189.8959\\-9\\-71.95094\\-191.849\\-9\\-71.15066\\-195.7553\\-9\\-71.21352\\-201.6146\\-9\\-71.60326\\-203.5678\\-9\\-72.54185\\-205.4041\\-9\\-73.75124\\-207.474\\-9\\-75.32597\\-209.4271\\-9\\-77.08549\\-211.3803\\-9\\-78.40122\\-212.6728\\-9\\-80.35435\\-214.2312\\-9\\-82.30747\\-215.0627\\-9\\-84.2606\\-216.1552\\-9\\-86.21372\\-216.4434\\-9\\-88.16685\\-216.4292\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "338"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-68.6356\\-182.5779\\-9\\-70.58872\\-180.9519\\-9\\-72.54185\\-181.1673\\-9\\-74.49497\\-181.7536\\-9\\-76.4481\\-180.9587\\-9\\-78.40122\\-179.0653\\-9\\-80.35435\\-177.3449\\-9\\-82.30747\\-176.4732\\-9\\-84.2606\\-175.3529\\-9\\-86.21372\\-174.9798\\-9\\-88.16685\\-174.7684\\-9\\-88.87948\\-174.2709\\-9\\-90.11997\\-172.3584\\-9\\-89.19936\\-170.3646\\-9\\-87.07685\\-166.4584\\-9\\-85.70841\\-164.5053\\-9\\-85.12502\\-162.5521\\-9\\-82.30747\\-159.7224\\-9\\-80.35435\\-159.176\\-9\\-78.40122\\-157.9352\\-9\\-76.4481\\-157.3723\\-9\\-74.49497\\-157.3623\\-9\\-72.54185\\-157.8321\\-9\\-70.58872\\-159.6225\\-9\\-69.64884\\-160.599\\-9\\-68.4118\\-162.5521\\-9\\-67.83222\\-164.5053\\-9\\-66.87081\\-166.4584\\-9\\-66.29554\\-168.4115\\-9\\-66.13626\\-170.3646\\-9\\-65.52016\\-172.3178\\-9\\-64.35233\\-174.2709\\-9\\-64.14126\\-176.224\\-9\\-63.72837\\-178.1771\\-9\\-63.71272\\-180.1303\\-9\\-65.3623\\-182.0834\\-9\\-66.68247\\-183.1474\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "339"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-45.1981\\-225.803\\-9\\-46.77088\\-225.0521\\-9\\-47.15123\\-224.0198\\-9\\-49.10435\\-224.4334\\-9\\-51.05748\\-224.3915\\-9\\-53.0106\\-223.4985\\-9\\-56.91685\\-221.4759\\-9\\-58.86998\\-220.0427\\-9\\-60.8231\\-219.0707\\-9\\-64.72935\\-218.4809\\-9\\-66.68247\\-217.9388\\-9\\-68.6356\\-216.7697\\-9\\-69.99163\\-215.2865\\-9\\-70.66949\\-213.3334\\-9\\-70.55058\\-211.3803\\-9\\-69.60101\\-209.4271\\-9\\-68.0991\\-207.474\\-9\\-66.68247\\-206.3707\\-9\\-64.72935\\-205.1539\\-9\\-62.77623\\-204.5713\\-9\\-61.85735\\-203.5678\\-9\\-61.51031\\-201.6146\\-9\\-61.48633\\-199.6615\\-9\\-61.18222\\-197.7084\\-9\\-60.54128\\-195.7553\\-9\\-58.86998\\-193.6667\\-9\\-56.91685\\-195.188\\-9\\-56.44355\\-195.7553\\-9\\-54.92617\\-199.6615\\-9\\-54.45247\\-201.6146\\-9\\-52.68983\\-203.5678\\-9\\-51.03476\\-205.5209\\-9\\-49.8198\\-207.474\\-9\\-48.74523\\-209.4271\\-9\\-48.81138\\-211.3803\\-9\\-49.91724\\-213.3334\\-9\\-50.67805\\-215.2865\\-9\\-50.4921\\-217.2396\\-9\\-49.87165\\-219.1928\\-9\\-49.10435\\-220.4992\\-9\\-47.87739\\-221.1459\\-9\\-47.15123\\-222.0594\\-9\\-45.75007\\-223.099\\-9\\-45.1981\\-223.252\\-9\\-43.24498\\-224.7027\\-9\\-43.24498\\-225.3242\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "340"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-33.47935\\-158.4233\\-9\\-35.43248\\-158.3249\\-9\\-37.3856\\-157.763\\-9\\-39.33873\\-157.4822\\-9\\-41.29185\\-156.1456\\-9\\-42.48266\\-154.7396\\-9\\-43.98736\\-152.7865\\-9\\-44.54876\\-150.8334\\-9\\-46.03299\\-148.8803\\-9\\-46.66294\\-146.9271\\-9\\-47.15123\\-146.2837\\-9\\-49.10435\\-144.8519\\-9\\-52.05497\\-146.9271\\-9\\-53.0106\\-148.5587\\-9\\-53.72605\\-146.9271\\-9\\-53.0106\\-145.1192\\-9\\-51.82026\\-143.0209\\-9\\-51.05748\\-142.2581\\-9\\-49.10435\\-141.5731\\-9\\-47.15123\\-139.8664\\-9\\-46.57392\\-139.1146\\-9\\-45.78404\\-137.1615\\-9\\-44.18106\\-135.2084\\-9\\-43.24498\\-134.2102\\-9\\-41.29185\\-132.53\\-9\\-39.33873\\-131.9782\\-9\\-37.3856\\-131.5379\\-9\\-35.43248\\-130.56\\-9\\-33.47935\\-130.0392\\-9\\-31.52623\\-129.8459\\-9\\-25.66685\\-129.8459\\-9\\-23.71373\\-130.0223\\-9\\-21.7606\\-130.7274\\-9\\-19.80748\\-132.2598\\-9\\-16.96786\\-135.2084\\-9\\-16.06281\\-137.1615\\-9\\-16.06281\\-139.1146\\-9\\-15.6655\\-141.0678\\-9\\-12.28794\\-144.974\\-9\\-11.77118\\-146.9271\\-9\\-10.89822\\-148.8803\\-9\\-11.01841\\-150.8334\\-9\\-11.99498\\-151.3471\\-9\\-12.67335\\-150.8334\\-9\\-14.38523\\-148.8803\\-9\\-15.90123\\-148.0883\\-9\\-16.68924\\-148.8803\\-9\\-17.85435\\-150.9579\\-9\\-18.74681\\-152.7865\\-9\\-21.7606\\-155.7683\\-9\\-23.71373\\-157.3556\\-9\\-25.66685\\-157.7795\\-9\\-27.6412\\-158.6459\\-9\\-29.5731\\-159.1596\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "341"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-222.4143\\-9\\45.34478\\-221.1459\\-9\\45.58283\\-219.1928\\-9\\46.32264\\-217.2396\\-9\\47.48111\\-215.2865\\-9\\48.5519\\-213.9149\\-9\\50.50502\\-215.9644\\-9\\52.45815\\-217.5427\\-9\\54.41127\\-218.6319\\-9\\54.94337\\-219.1928\\-9\\54.95894\\-221.1459\\-9\\54.41127\\-221.6722\\-9\\52.45815\\-222.4276\\-9\\50.50502\\-222.5002\\-9\\48.5519\\-222.4051\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "79"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "342"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "62.22377\\-218.765\\-9\\61.24202\\-217.2396\\-9\\63.20499\\-215.2865\\-9\\63.59203\\-213.3334\\-9\\63.76826\\-211.3803\\-9\\64.32186\\-209.4271\\-9\\64.1769\\-207.8809\\-9\\63.91991\\-207.474\\-9\\62.22377\\-207.0609\\-9\\60.27065\\-207.0412\\-9\\58.31752\\-207.19\\-9\\56.3644\\-207.4997\\-9\\54.41127\\-207.5004\\-9\\52.96907\\-205.5209\\-9\\53.05049\\-203.5678\\-9\\53.50582\\-201.6146\\-9\\54.33051\\-199.6615\\-9\\54.71524\\-197.7084\\-9\\55.91604\\-193.8021\\-9\\56.40196\\-191.849\\-9\\56.78034\\-189.8959\\-9\\57.36873\\-187.9428\\-9\\58.31752\\-185.7611\\-9\\59.3476\\-182.0834\\-9\\59.98882\\-180.1303\\-9\\60.08365\\-178.1771\\-9\\60.71454\\-176.224\\-9\\61.65549\\-172.3178\\-9\\62.22377\\-171.693\\-9\\64.39519\\-170.3646\\-9\\66.13003\\-169.5966\\-9\\67.23997\\-168.4115\\-9\\67.64846\\-166.4584\\-9\\67.66721\\-164.5053\\-9\\66.47428\\-162.5521\\-9\\65.12976\\-160.599\\-9\\65.51573\\-158.6459\\-9\\66.13003\\-157.9449\\-9\\68.08315\\-157.181\\-9\\70.03628\\-155.9229\\-9\\71.9894\\-156.1574\\-9\\73.94253\\-157.407\\-9\\75.89565\\-157.8678\\-9\\79.8019\\-159.7068\\-9\\83.09109\\-162.5521\\-9\\83.70815\\-163.2246\\-9\\85.66128\\-164.2815\\-9\\88.10863\\-166.4584\\-9\\89.43109\\-168.4115\\-9\\90.35722\\-170.3646\\-9\\89.56753\\-171.3193\\-9\\87.6144\\-171.1323\\-9\\85.66128\\-171.3895\\-9\\83.70815\\-172.4125\\-9\\81.75503\\-173.0266\\-9\\79.8019\\-173.5211\\-9\\75.23869\\-178.1771\\-9\\73.84561\\-180.1303\\-9\\71.9894\\-183.3302\\-9\\70.03628\\-185.8245\\-9\\68.08315\\-187.6051\\-9\\66.57704\\-189.8959\\-9\\66.13003\\-191.1405\\-9\\65.43517\\-191.849\\-9\\64.44115\\-193.8021\\-9\\65.91139\\-195.7553\\-9\\67.09179\\-197.7084\\-9\\68.08315\\-199.1624\\-9\\68.24474\\-199.6615\\-9\\68.69141\\-203.5678\\-9\\69.2129\\-205.5209\\-9\\70.49466\\-207.474\\-9\\70.996\\-209.4271\\-9\\71.25698\\-211.3803\\-9\\70.03628\\-213.9086\\-9\\68.55933\\-217.2396\\-9\\68.08315\\-217.6454\\-9\\66.13003\\-218.4376\\-9\\64.1769\\-218.7742\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "343"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "85.66128\\-211.4495\\-9\\83.70815\\-210.4292\\-9\\81.75503\\-209.0703\\-9\\79.8019\\-208.1431\\-9\\77.27467\\-205.5209\\-9\\76.26499\\-203.5678\\-9\\73.58107\\-195.7553\\-9\\72.94932\\-193.8021\\-9\\72.54352\\-191.849\\-9\\73.27004\\-187.9428\\-9\\73.53728\\-185.9896\\-9\\74.79986\\-184.0365\\-9\\75.89565\\-182.8731\\-9\\77.84878\\-182.0183\\-9\\79.96828\\-180.1303\\-9\\83.70815\\-177.2977\\-9\\84.68472\\-178.1771\\-9\\86.35278\\-180.1303\\-9\\87.11132\\-182.0834\\-9\\88.29189\\-184.0365\\-9\\91.65608\\-187.9428\\-9\\93.47378\\-189.1458\\-9\\94.36615\\-189.8959\\-9\\95.50767\\-191.849\\-9\\95.46446\\-193.8021\\-9\\95.7592\\-195.7553\\-9\\95.4269\\-196.6253\\-9\\94.72607\\-197.7084\\-9\\92.64891\\-199.6615\\-9\\92.10659\\-201.6146\\-9\\92.65371\\-203.5678\\-9\\94.67228\\-207.474\\-9\\95.03751\\-209.4271\\-9\\93.47378\\-210.7997\\-9\\91.52065\\-211.5638\\-9\\89.56753\\-211.9756\\-9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "344"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.16685\\-215.5428\\-7\\-90.11997\\-214.8071\\-7\\-94.02622\\-212.8804\\-7\\-97.93247\\-212.8804\\-7\\-99.8856\\-212.7086\\-7\\-101.8387\\-211.7576\\-7\\-104.1463\\-209.4271\\-7\\-105.2567\\-207.474\\-7\\-106.5051\\-205.5209\\-7\\-107.012\\-203.5678\\-7\\-107.1599\\-201.6146\\-7\\-107.1599\\-197.7084\\-7\\-106.5095\\-195.7553\\-7\\-104.7125\\-193.8021\\-7\\-103.5787\\-191.849\\-7\\-102.5964\\-189.8959\\-7\\-101.3758\\-187.9428\\-7\\-100.8881\\-185.9896\\-7\\-99.8856\\-184.3924\\-7\\-97.47471\\-182.0834\\-7\\-95.97935\\-181.034\\-7\\-94.02622\\-180.6356\\-7\\-92.0731\\-179.3896\\-7\\-90.11997\\-179.2144\\-7\\-86.21372\\-179.4293\\-7\\-84.2606\\-180.9506\\-7\\-82.30747\\-182.1927\\-7\\-80.35435\\-183.2191\\-7\\-79.25083\\-184.0365\\-7\\-76.4481\\-185.8435\\-7\\-74.49497\\-188.0502\\-7\\-73.50266\\-189.8959\\-7\\-73.14159\\-191.849\\-7\\-71.98826\\-195.7553\\-7\\-71.98826\\-197.7084\\-7\\-72.97921\\-203.5678\\-7\\-73.81534\\-205.5209\\-7\\-75.36236\\-207.474\\-7\\-76.4481\\-209.1231\\-7\\-78.19683\\-211.3803\\-7\\-80.35435\\-213.386\\-7\\-82.30747\\-215.022\\-7\\-84.2606\\-215.4874\\-7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "345"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-66.68247\\-184.5489\\-7\\-68.6356\\-183.1339\\-7\\-70.58872\\-181.0262\\-7\\-72.54185\\-181.1838\\-7\\-74.49497\\-182.7153\\-7\\-76.4481\\-181.4304\\-7\\-78.40122\\-179.5004\\-7\\-80.35435\\-178.4721\\-7\\-82.30747\\-177.2737\\-7\\-85.93202\\-176.224\\-7\\-88.16685\\-175.3604\\-7\\-90.11997\\-174.4826\\-7\\-90.36024\\-174.2709\\-7\\-90.78426\\-172.3178\\-7\\-89.23356\\-170.3646\\-7\\-87.07685\\-166.4584\\-7\\-85.70841\\-164.5053\\-7\\-85.12502\\-162.5521\\-7\\-82.30747\\-159.8957\\-7\\-80.35435\\-159.396\\-7\\-78.40122\\-157.7743\\-7\\-76.4481\\-157.3142\\-7\\-74.49497\\-157.5868\\-7\\-70.58872\\-159.7775\\-7\\-69.81236\\-160.599\\-7\\-68.6356\\-163.1078\\-7\\-67.47723\\-166.4584\\-7\\-66.30545\\-168.4115\\-7\\-66.27608\\-170.3646\\-7\\-65.85463\\-172.3178\\-7\\-64.89094\\-174.2709\\-7\\-64.29466\\-176.224\\-7\\-64.12634\\-178.1771\\-7\\-64.09746\\-180.1303\\-7\\-64.52991\\-182.0834\\-7\\-65.95434\\-184.0365\\-7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "346"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-45.1981\\-223.7642\\-7\\-46.17466\\-223.099\\-7\\-47.15123\\-222.7165\\-7\\-51.05748\\-222.6532\\-7\\-53.0106\\-221.7591\\-7\\-58.86998\\-218.511\\-7\\-60.8231\\-217.9776\\-7\\-62.77623\\-217.1042\\-7\\-66.68247\\-216.5321\\-7\\-68.6356\\-215.6958\\-7\\-70.9281\\-213.3334\\-7\\-71.56528\\-211.3803\\-7\\-70.59635\\-209.4271\\-7\\-69.51389\\-207.474\\-7\\-68.6356\\-206.6173\\-7\\-66.68247\\-205.7933\\-7\\-62.77623\\-204.65\\-7\\-61.87896\\-203.5678\\-7\\-62.09893\\-201.6146\\-7\\-62.15627\\-199.6615\\-7\\-61.79966\\-197.7084\\-7\\-61.22485\\-195.7553\\-7\\-59.41166\\-193.8021\\-7\\-58.86998\\-193.3768\\-7\\-58.35638\\-193.8021\\-7\\-56.87929\\-195.7553\\-7\\-55.83749\\-197.7084\\-7\\-54.04433\\-201.6146\\-7\\-51.80223\\-205.5209\\-7\\-50.22997\\-207.474\\-7\\-49.75014\\-209.4271\\-7\\-49.72532\\-211.3803\\-7\\-50.3359\\-213.3334\\-7\\-50.62947\\-215.2865\\-7\\-49.10435\\-217.4812\\-7\\-47.15123\\-218.8067\\-7\\-44.99436\\-221.1459\\-7\\-44.7846\\-223.099\\-7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "347"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-158.8329\\-7\\-39.33873\\-158.4609\\-7\\-41.29185\\-157.4171\\-7\\-42.0452\\-156.6928\\-7\\-43.46122\\-154.7396\\-7\\-44.27691\\-152.7865\\-7\\-44.70125\\-150.8334\\-7\\-45.36325\\-148.8803\\-7\\-46.37498\\-146.9271\\-7\\-47.15123\\-145.8223\\-7\\-49.11223\\-144.974\\-7\\-51.49039\\-146.9271\\-7\\-52.44047\\-148.8803\\-7\\-53.0106\\-149.6219\\-7\\-54.7719\\-148.8803\\-7\\-53.77071\\-146.9271\\-7\\-53.0106\\-145.2322\\-7\\-51.79111\\-143.0209\\-7\\-51.05748\\-142.2761\\-7\\-49.10435\\-141.5731\\-7\\-47.15123\\-140.1873\\-7\\-46.1795\\-139.1146\\-7\\-45.1981\\-137.657\\-7\\-43.24498\\-135.2004\\-7\\-41.29185\\-133.7606\\-7\\-39.33873\\-132.5384\\-7\\-37.3856\\-131.9982\\-7\\-35.43248\\-131.5727\\-7\\-33.47935\\-130.5997\\-7\\-31.52623\\-130.2254\\-7\\-25.66685\\-130.2209\\-7\\-23.71373\\-130.5669\\-7\\-19.80748\\-132.4055\\-7\\-16.97306\\-135.2084\\-7\\-16.06281\\-137.1615\\-7\\-16.04983\\-141.0678\\-7\\-14.76841\\-143.0209\\-7\\-12.5764\\-144.974\\-7\\-11.28426\\-146.9271\\-7\\-10.49119\\-148.8803\\-7\\-9.518917\\-150.8334\\-7\\-9.726502\\-152.7865\\-7\\-10.04185\\-153.0091\\-7\\-11.99498\\-151.8699\\-7\\-13.9481\\-149.6287\\-7\\-15.90123\\-148.5482\\-7\\-16.23106\\-148.8803\\-7\\-17.27503\\-150.8334\\-7\\-19.80748\\-154.3477\\-7\\-22.49913\\-156.6928\\-7\\-23.71373\\-157.6271\\-7\\-25.66685\\-158.6535\\-7\\-27.61998\\-159.1678\\-7\\-29.5731\\-159.3902\\-7\\-31.52623\\-159.4671\\-7\\-35.43248\\-159.3662\\-7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "77"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "348"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "62.22377\\-217.2758\\-7\\63.47535\\-215.2865\\-7\\64.33966\\-213.3334\\-7\\65.05782\\-211.3803\\-7\\66.27386\\-209.4271\\-7\\66.66463\\-207.474\\-7\\66.13003\\-206.1891\\-7\\65.47337\\-205.5209\\-7\\64.4169\\-203.5678\\-7\\64.1769\\-203.3532\\-7\\60.27065\\-203.3499\\-7\\58.31752\\-203.7267\\-7\\56.3644\\-205.1102\\-7\\54.41127\\-204.056\\-7\\54.20528\\-203.5678\\-7\\54.07924\\-201.6146\\-7\\54.7578\\-199.6615\\-7\\55.2958\\-197.7084\\-7\\55.93521\\-195.7553\\-7\\56.68992\\-193.8021\\-7\\57.27361\\-189.8959\\-7\\57.8626\\-187.9428\\-7\\58.80581\\-185.9896\\-7\\59.73439\\-182.0834\\-7\\60.00011\\-180.1303\\-7\\60.68659\\-178.1771\\-7\\61.64446\\-174.2709\\-7\\62.61841\\-172.3178\\-7\\64.1769\\-171.1075\\-7\\66.13003\\-170.5262\\-7\\67.48013\\-168.4115\\-7\\68.14973\\-166.4584\\-7\\68.61942\\-164.5053\\-7\\65.82606\\-160.599\\-7\\65.68613\\-158.6459\\-7\\66.13003\\-158.1408\\-7\\68.08315\\-157.231\\-7\\70.03628\\-156.7449\\-7\\71.9894\\-156.9165\\-7\\73.94253\\-157.6935\\-7\\75.89565\\-158.7813\\-7\\77.84878\\-159.1512\\-7\\79.8019\\-159.7165\\-7\\83.70815\\-163.7716\\-7\\85.66128\\-164.729\\-7\\87.09245\\-166.4584\\-7\\88.55164\\-168.4115\\-7\\89.56753\\-169.3072\\-7\\90.51811\\-170.3646\\-7\\90.39913\\-172.3178\\-7\\89.56753\\-172.9366\\-7\\87.6144\\-172.3985\\-7\\85.66128\\-172.4805\\-7\\83.70815\\-173.3649\\-7\\81.75503\\-174.0994\\-7\\79.8019\\-175.3062\\-7\\75.89565\\-179.1613\\-7\\73.27824\\-182.0834\\-7\\72.2354\\-184.0365\\-7\\71.08337\\-185.9896\\-7\\70.03628\\-188.2023\\-7\\68.78591\\-189.8959\\-7\\68.22925\\-191.849\\-7\\68.20034\\-193.8021\\-7\\68.62222\\-195.7553\\-7\\69.25373\\-197.7084\\-7\\69.37598\\-199.6615\\-7\\69.67932\\-201.6146\\-7\\70.25725\\-203.5678\\-7\\71.11522\\-205.5209\\-7\\72.53359\\-207.474\\-7\\72.3439\\-209.4271\\-7\\71.71886\\-211.3803\\-7\\70.77847\\-213.3334\\-7\\68.08315\\-216.1316\\-7\\66.13003\\-216.7894\\-7\\64.1769\\-217.1645\\-7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "349"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "85.66128\\-210.0676\\-7\\83.70815\\-208.7741\\-7\\81.51376\\-207.474\\-7\\79.56344\\-205.5209\\-7\\78.04101\\-203.5678\\-7\\76.31418\\-199.6615\\-7\\75.18125\\-197.7084\\-7\\74.54554\\-195.7553\\-7\\74.29935\\-193.8021\\-7\\73.6075\\-191.849\\-7\\73.5787\\-189.8959\\-7\\74.22435\\-187.9428\\-7\\74.67051\\-185.9896\\-7\\75.89565\\-184.5661\\-7\\77.84878\\-183.3055\\-7\\81.75503\\-179.5199\\-7\\83.70815\\-178.7103\\-7\\85.66128\\-179.4585\\-7\\88.26724\\-182.0834\\-7\\88.9288\\-184.0365\\-7\\90.43613\\-185.9896\\-7\\91.52065\\-187.1953\\-7\\93.47378\\-188.405\\-7\\94.8628\\-189.8959\\-7\\95.16781\\-191.849\\-7\\95.17941\\-193.8021\\-7\\96.03932\\-195.7553\\-7\\95.89732\\-197.7084\\-7\\94.58891\\-199.6615\\-7\\93.16981\\-203.5678\\-7\\93.48141\\-205.5209\\-7\\94.0532\\-207.474\\-7\\93.9252\\-209.4271\\-7\\93.47378\\-209.8396\\-7\\91.52065\\-210.1408\\-7\\89.56753\\-210.2841\\-7\\87.6144\\-210.5696\\-7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "350"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-90.11997\\-213.9453\\-5\\-92.0731\\-212.8365\\-5\\-94.02622\\-212.5237\\-5\\-97.93247\\-212.4659\\-5\\-99.8856\\-211.7401\\-5\\-100.2911\\-211.3803\\-5\\-104.1198\\-207.474\\-5\\-106.398\\-203.5678\\-5\\-106.8126\\-201.6146\\-5\\-106.808\\-197.7084\\-5\\-106.2364\\-195.7553\\-5\\-105.0489\\-193.8021\\-5\\-104.4925\\-191.849\\-5\\-103.0344\\-189.8959\\-5\\-102.5058\\-187.9428\\-5\\-99.8856\\-184.6744\\-5\\-97.93247\\-183.4881\\-5\\-95.97935\\-182.4308\\-5\\-92.0731\\-180.7653\\-5\\-90.11997\\-180.6439\\-5\\-88.16685\\-180.7076\\-5\\-86.21372\\-181.0043\\-5\\-84.2606\\-182.4322\\-5\\-82.30747\\-183.3874\\-5\\-80.35435\\-185.1782\\-5\\-79.27248\\-185.9896\\-5\\-78.40122\\-186.8609\\-5\\-76.4481\\-188.2683\\-5\\-74.71692\\-189.8959\\-5\\-74.69441\\-191.849\\-5\\-73.27281\\-195.7553\\-5\\-73.19814\\-197.7084\\-5\\-73.80215\\-199.6615\\-5\\-74.68198\\-201.6146\\-5\\-74.70817\\-203.5678\\-5\\-75.65649\\-205.5209\\-5\\-77.01537\\-207.474\\-5\\-78.40122\\-208.994\\-5\\-79.04064\\-209.4271\\-5\\-80.35435\\-210.9598\\-5\\-81.40325\\-213.3334\\-5\\-82.30747\\-214.8041\\-5\\-84.2606\\-214.689\\-5\\-86.21372\\-214.4655\\-5\\-88.16685\\-214.4456\\-5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "351"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-66.68247\\-187.0116\\-5\\-68.6356\\-185.2572\\-5\\-69.75458\\-184.0365\\-5\\-70.58872\\-181.9538\\-5\\-71.80943\\-182.0834\\-5\\-72.54185\\-182.435\\-5\\-74.49497\\-183.8568\\-5\\-76.4481\\-183.1792\\-5\\-79.48058\\-180.1303\\-5\\-80.35435\\-179.4217\\-5\\-82.30747\\-178.5048\\-5\\-88.16685\\-176.7894\\-5\\-90.11997\\-175.8818\\-5\\-91.29795\\-174.2709\\-5\\-91.1775\\-172.3178\\-5\\-89.89142\\-170.3646\\-5\\-88.78934\\-168.4115\\-5\\-87.07685\\-166.4584\\-5\\-85.70841\\-164.5053\\-5\\-85.10917\\-162.5521\\-5\\-84.2606\\-161.7157\\-5\\-82.30747\\-160.7476\\-5\\-80.35435\\-159.5846\\-5\\-78.40122\\-158.0037\\-5\\-76.4481\\-157.5228\\-5\\-74.49497\\-157.8518\\-5\\-72.54185\\-159.3154\\-5\\-70.58872\\-160.559\\-5\\-68.36507\\-164.5053\\-5\\-67.65421\\-166.4584\\-5\\-66.31549\\-168.4115\\-5\\-66.28574\\-170.3646\\-5\\-66.13807\\-172.3178\\-5\\-65.51168\\-174.2709\\-5\\-64.30398\\-176.224\\-5\\-64.28546\\-178.1771\\-5\\-64.05327\\-180.1303\\-5\\-63.94535\\-182.0834\\-5\\-64.13701\\-184.0365\\-5\\-64.18214\\-185.9896\\-5\\-64.72935\\-187.2851\\-5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "352"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-47.2832\\-221.1459\\-5\\-49.10435\\-219.9207\\-5\\-51.05748\\-219.8952\\-5\\-53.1815\\-219.1928\\-5\\-54.96373\\-217.9421\\-5\\-57.09674\\-217.2396\\-5\\-58.86998\\-216.7514\\-5\\-60.8231\\-216.5448\\-5\\-62.77623\\-215.9594\\-5\\-66.68247\\-215.0596\\-5\\-68.6356\\-214.1713\\-5\\-70.58872\\-213.1296\\-5\\-72.40338\\-211.3803\\-5\\-71.86101\\-209.4271\\-5\\-70.58872\\-206.3773\\-5\\-69.81561\\-205.5209\\-5\\-68.6356\\-204.5094\\-5\\-66.68247\\-204.0811\\-5\\-64.72935\\-204.0878\\-5\\-63.39471\\-203.5678\\-5\\-64.07298\\-201.6146\\-5\\-64.18829\\-199.6615\\-5\\-63.53435\\-197.7084\\-5\\-62.77623\\-196.268\\-5\\-61.74464\\-193.8021\\-5\\-60.8231\\-193.173\\-5\\-58.86998\\-192.9892\\-5\\-58.05703\\-193.8021\\-5\\-57.33279\\-195.7553\\-5\\-55.98701\\-197.7084\\-5\\-55.40762\\-199.6615\\-5\\-54.093\\-201.6146\\-5\\-53.43597\\-203.5678\\-5\\-52.18428\\-205.5209\\-5\\-50.84293\\-209.4271\\-5\\-50.57877\\-211.3803\\-5\\-51.34144\\-213.3334\\-5\\-51.41555\\-215.2865\\-5\\-51.05748\\-216.1817\\-5\\-49.10435\\-218.1106\\-5\\-47.10802\\-219.1928\\-5\\-47.01559\\-221.1459\\-5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "60"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "353"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.33873\\-159.4619\\-5\\-41.29185\\-158.17\\-5\\-43.24498\\-156.1867\\-5\\-44.28836\\-154.7396\\-5\\-44.69833\\-152.7865\\-5\\-44.89414\\-148.8803\\-5\\-46.29364\\-146.9271\\-5\\-47.15123\\-145.978\\-5\\-49.10435\\-145.9099\\-5\\-50.14642\\-146.9271\\-5\\-53.0106\\-150.2348\\-5\\-54.77498\\-148.8803\\-5\\-53.73794\\-146.9271\\-5\\-52.45338\\-144.974\\-5\\-51.62714\\-143.0209\\-5\\-51.05748\\-142.435\\-5\\-49.10435\\-141.5731\\-5\\-47.15123\\-140.4362\\-5\\-45.77742\\-139.1146\\-5\\-44.17146\\-137.1615\\-5\\-43.24498\\-136.1743\\-5\\-41.29185\\-134.5363\\-5\\-39.33873\\-133.7689\\-5\\-37.3856\\-132.5569\\-5\\-35.43248\\-132.0183\\-5\\-31.52623\\-131.3397\\-5\\-29.5731\\-131.2941\\-5\\-25.66685\\-131.3248\\-5\\-21.7606\\-131.8562\\-5\\-19.80748\\-132.4576\\-5\\-17.02501\\-135.2084\\-5\\-16.17176\\-137.1615\\-5\\-16.06281\\-139.1146\\-5\\-16.06281\\-141.0678\\-5\\-15.13134\\-143.0209\\-5\\-13.9481\\-144.2773\\-5\\-11.99498\\-146.0388\\-5\\-11.15419\\-146.9271\\-5\\-9.153595\\-150.8334\\-5\\-8.331031\\-152.7865\\-5\\-9.525399\\-154.7396\\-5\\-10.04185\\-155.1346\\-5\\-10.5583\\-154.7396\\-5\\-11.99498\\-152.6208\\-5\\-13.08894\\-150.8334\\-5\\-13.9481\\-149.9501\\-5\\-15.90123\\-149.7514\\-5\\-16.85816\\-150.8334\\-5\\-18.21347\\-152.7865\\-5\\-19.03151\\-154.7396\\-5\\-19.80748\\-155.4952\\-5\\-21.7606\\-157.1274\\-5\\-23.71373\\-157.9277\\-5\\-25.66685\\-159.1596\\-5\\-27.61998\\-159.396\\-5\\-29.5731\\-159.7697\\-5\\-31.52623\\-160.2735\\-5\\-33.47935\\-160.2493\\-5\\-35.43248\\-159.722\\-5\\-37.3856\\-159.4722\\-5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "77"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "354"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "66.13003\\-215.1115\\-5\\65.1328\\-213.3334\\-5\\65.58562\\-211.3803\\-5\\66.99429\\-209.4271\\-5\\67.74487\\-207.474\\-5\\67.38285\\-205.5209\\-5\\66.49197\\-203.5678\\-5\\66.13003\\-203.157\\-5\\64.1769\\-201.6395\\-5\\62.22377\\-201.2173\\-5\\58.31752\\-201.2679\\-5\\56.3644\\-201.8421\\-5\\56.13698\\-201.6146\\-5\\55.62872\\-199.6615\\-5\\56.03888\\-197.7084\\-5\\56.77079\\-195.7553\\-5\\57.73769\\-191.849\\-5\\57.95131\\-189.8959\\-5\\58.78837\\-187.9428\\-5\\59.75939\\-184.0365\\-5\\60.00011\\-182.0834\\-5\\60.09626\\-180.1303\\-5\\61.08216\\-178.1771\\-5\\61.59219\\-176.224\\-5\\62.22377\\-174.7714\\-5\\63.51947\\-172.3178\\-5\\64.1769\\-171.7295\\-5\\66.13003\\-171.3825\\-5\\67.13202\\-170.3646\\-5\\67.57784\\-168.4115\\-5\\68.82745\\-166.4584\\-5\\69.27905\\-164.5053\\-5\\68.79929\\-162.5521\\-5\\66.82603\\-160.599\\-5\\66.22476\\-158.6459\\-5\\68.08315\\-157.3623\\-5\\70.03628\\-157.1724\\-5\\71.9894\\-157.1896\\-5\\73.94253\\-157.8254\\-5\\75.89565\\-159.1078\\-5\\77.84878\\-159.1596\\-5\\79.8019\\-159.7417\\-5\\80.63577\\-160.599\\-5\\81.55559\\-162.5521\\-5\\83.70815\\-164.4105\\-5\\85.66128\\-165.4747\\-5\\86.4154\\-166.4584\\-5\\87.16311\\-168.4115\\-5\\87.6144\\-168.7958\\-5\\89.56753\\-169.7719\\-5\\90.20441\\-170.3646\\-5\\91.88259\\-172.3178\\-5\\92.48559\\-174.2709\\-5\\91.52065\\-175.0428\\-5\\89.56753\\-174.6459\\-5\\87.6144\\-173.8524\\-5\\85.66128\\-173.5706\\-5\\83.70815\\-174.8229\\-5\\81.75503\\-175.5366\\-5\\80.89853\\-176.224\\-5\\77.84878\\-179.1394\\-5\\74.94846\\-182.0834\\-5\\73.19382\\-184.0365\\-5\\71.9894\\-187.2148\\-5\\70.87791\\-189.8959\\-5\\70.27858\\-191.849\\-5\\70.26219\\-193.8021\\-5\\70.59515\\-197.7084\\-5\\70.62222\\-199.6615\\-5\\71.22768\\-201.6146\\-5\\73.13251\\-205.5209\\-5\\73.88869\\-207.474\\-5\\73.04226\\-209.4271\\-5\\71.9894\\-211.3709\\-5\\70.72327\\-213.3334\\-5\\70.03628\\-214.0204\\-5\\68.08315\\-215.1249\\-5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "355"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "85.08929\\-207.474\\-5\\83.70815\\-205.2846\\-5\\82.30756\\-203.5678\\-5\\81.75503\\-203.2635\\-5\\79.8019\\-202.5912\\-5\\79.04765\\-201.6146\\-5\\76.0994\\-195.7553\\-5\\76.05724\\-193.8021\\-5\\75.42392\\-191.849\\-5\\75.05183\\-189.8959\\-5\\75.63097\\-187.9428\\-5\\75.89565\\-187.4932\\-5\\77.22983\\-185.9896\\-5\\77.84878\\-185.5221\\-5\\79.8019\\-183.5099\\-5\\80.94763\\-182.0834\\-5\\81.75503\\-181.2946\\-5\\83.70815\\-180.5284\\-5\\85.66128\\-180.8186\\-5\\87.6144\\-181.4486\\-5\\88.26359\\-182.0834\\-5\\89.02131\\-184.0365\\-5\\90.46053\\-185.9896\\-5\\91.52065\\-186.9247\\-5\\93.47378\\-187.4374\\-5\\94.02737\\-187.9428\\-5\\95.14507\\-189.8959\\-5\\95.16781\\-193.8021\\-5\\95.46475\\-195.7553\\-5\\95.46446\\-197.7084\\-5\\95.11208\\-199.6615\\-5\\94.24628\\-201.6146\\-5\\93.08684\\-203.5678\\-5\\92.80046\\-205.5209\\-5\\91.97757\\-207.474\\-5\\91.52065\\-207.9352\\-5\\89.56753\\-208.8809\\-5\\87.6144\\-209.2304\\-5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "356"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-92.0731\\-211.8482\\-3\\-94.02622\\-211.1194\\-3\\-97.93247\\-210.7319\\-3\\-99.8856\\-209.669\\-3\\-101.8387\\-207.8052\\-3\\-104.0131\\-205.5209\\-3\\-104.8674\\-203.5678\\-3\\-105.186\\-201.6146\\-3\\-105.1897\\-197.7084\\-3\\-105.0043\\-195.7553\\-3\\-104.9949\\-193.8021\\-3\\-104.4528\\-191.849\\-3\\-102.7308\\-189.8959\\-3\\-101.8778\\-187.9428\\-3\\-99.8856\\-186.817\\-3\\-98.6942\\-185.9896\\-3\\-95.97935\\-184.9987\\-3\\-94.67076\\-184.0365\\-3\\-92.0731\\-183.0874\\-3\\-90.11997\\-182.9558\\-3\\-88.16685\\-182.561\\-3\\-86.21372\\-182.7005\\-3\\-84.2606\\-183.6872\\-3\\-82.30747\\-185.1478\\-3\\-81.45976\\-185.9896\\-3\\-80.35435\\-187.4773\\-3\\-78.40122\\-189.4459\\-3\\-77.83458\\-189.8959\\-3\\-76.78614\\-191.849\\-3\\-76.70719\\-193.8021\\-3\\-76.4481\\-194.5346\\-3\\-75.69243\\-195.7553\\-3\\-75.1335\\-197.7084\\-3\\-76.71864\\-201.6146\\-3\\-76.72047\\-203.5678\\-3\\-77.68043\\-205.5209\\-3\\-78.40122\\-206.3777\\-3\\-80.35435\\-208.0075\\-3\\-81.82858\\-209.4271\\-3\\-82.30747\\-210.1002\\-3\\-84.2606\\-212.0028\\-3\\-86.21372\\-212.7379\\-3\\-88.16685\\-212.805\\-3\\-90.11997\\-212.46\\-3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "76"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "357"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-66.68247\\-213.9319\\-3\\-68.6356\\-213.0977\\-3\\-70.58872\\-212.663\\-3\\-72.54185\\-211.6402\\-3\\-72.80368\\-211.3803\\-3\\-73.43423\\-209.4271\\-3\\-72.89063\\-207.474\\-3\\-72.85923\\-205.5209\\-3\\-72.54185\\-204.7885\\-3\\-71.74839\\-203.5678\\-3\\-70.96714\\-201.6146\\-3\\-70.83485\\-197.7084\\-3\\-70.58872\\-196.9876\\-3\\-69.46355\\-195.7553\\-3\\-69.33964\\-193.8021\\-3\\-70.58872\\-193.0005\\-3\\-71.40945\\-191.849\\-3\\-73.35565\\-189.8959\\-3\\-74.65903\\-187.9428\\-3\\-75.35177\\-185.9896\\-3\\-76.4481\\-185.1351\\-3\\-80.35435\\-181.2209\\-3\\-82.30747\\-179.4813\\-3\\-84.2606\\-178.9748\\-3\\-86.21372\\-178.7896\\-3\\-88.16685\\-178.3058\\-3\\-90.11997\\-178.3607\\-3\\-92.0731\\-178.5824\\-3\\-94.02622\\-178.5159\\-3\\-94.47091\\-178.1771\\-3\\-94.92838\\-176.224\\-3\\-92.97231\\-174.2709\\-3\\-92.0731\\-173.1213\\-3\\-90.75388\\-170.3646\\-3\\-88.9763\\-168.4115\\-3\\-87.07132\\-166.4584\\-3\\-85.65961\\-164.5053\\-3\\-84.90613\\-162.5521\\-3\\-84.2606\\-161.9278\\-3\\-82.30747\\-161.3586\\-3\\-80.35435\\-159.6517\\-3\\-78.40122\\-158.8576\\-3\\-76.4481\\-158.4637\\-3\\-74.49497\\-158.7406\\-3\\-72.54185\\-159.4408\\-3\\-71.14285\\-160.599\\-3\\-69.62142\\-162.5521\\-3\\-68.37651\\-164.5053\\-3\\-67.66387\\-166.4584\\-3\\-66.31549\\-168.4115\\-3\\-66.27608\\-172.3178\\-3\\-65.68048\\-174.2709\\-3\\-64.30398\\-176.224\\-3\\-64.28546\\-178.1771\\-3\\-63.83036\\-180.1303\\-3\\-63.02571\\-182.0834\\-3\\-63.02391\\-184.0365\\-3\\-62.31426\\-185.9896\\-3\\-61.37951\\-189.8959\\-3\\-60.8231\\-190.4459\\-3\\-60.09214\\-191.849\\-3\\-58.45586\\-193.8021\\-3\\-57.71454\\-195.7553\\-3\\-56.64072\\-197.7084\\-3\\-55.15073\\-201.6146\\-3\\-54.03939\\-203.5678\\-3\\-53.0106\\-207.198\\-3\\-52.09507\\-209.4271\\-3\\-51.95266\\-211.3803\\-3\\-53.0106\\-212.7494\\-3\\-54.96373\\-212.9681\\-3\\-56.07655\\-213.3334\\-3\\-56.91685\\-213.8284\\-3\\-58.86998\\-214.4904\\-3\\-60.8231\\-214.5346\\-3\\-64.72935\\-214.4487\\-3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "358"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-160.5754\\-3\\-39.33873\\-160.56\\-3\\-41.29185\\-159.6774\\-3\\-42.56138\\-158.6459\\-3\\-44.26426\\-156.6928\\-3\\-44.82638\\-154.7396\\-3\\-44.9864\\-152.7865\\-3\\-45.02372\\-148.8803\\-3\\-46.5379\\-146.9271\\-3\\-47.15123\\-146.3457\\-3\\-49.10435\\-146.7595\\-3\\-51.05748\\-149.5346\\-3\\-52.13983\\-150.8334\\-3\\-53.0106\\-151.448\\-3\\-53.76779\\-150.8334\\-3\\-54.36663\\-148.8803\\-3\\-53.21289\\-146.9271\\-3\\-51.80393\\-144.974\\-3\\-51.01992\\-143.0209\\-3\\-49.10435\\-141.7033\\-3\\-47.15123\\-141.4348\\-3\\-45.1981\\-139.6796\\-3\\-43.24498\\-137.0631\\-3\\-41.29185\\-135.7932\\-3\\-39.33873\\-134.284\\-3\\-37.3856\\-133.6712\\-3\\-35.43248\\-132.6338\\-3\\-33.47935\\-132.184\\-3\\-23.71373\\-132.1653\\-3\\-21.7606\\-132.2071\\-3\\-19.80748\\-133.0642\\-3\\-17.63338\\-135.2084\\-3\\-16.53677\\-137.1615\\-3\\-16.17176\\-139.1146\\-3\\-16.06281\\-141.0678\\-3\\-15.72558\\-143.0209\\-3\\-14.77082\\-144.974\\-3\\-13.9481\\-145.6724\\-3\\-11.99498\\-146.3147\\-3\\-11.32585\\-146.9271\\-3\\-9.818055\\-148.8803\\-3\\-8.036543\\-152.7865\\-3\\-8.288477\\-154.7396\\-3\\-9.065289\\-156.6928\\-3\\-10.04185\\-157.6568\\-3\\-10.55338\\-156.6928\\-3\\-11.79522\\-154.7396\\-3\\-12.15657\\-152.7865\\-3\\-13.30763\\-150.8334\\-3\\-13.9481\\-150.2566\\-3\\-15.90123\\-150.2586\\-3\\-16.49641\\-150.8334\\-3\\-17.85435\\-153.0168\\-3\\-18.74084\\-154.7396\\-3\\-21.7606\\-157.6182\\-3\\-23.71373\\-158.8576\\-3\\-25.66685\\-159.396\\-3\\-27.61998\\-159.7753\\-3\\-29.5731\\-160.7606\\-3\\-31.52623\\-161.1372\\-3\\-33.47935\\-161.1292\\-3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "359"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-131.9597\\-3\\48.93942\\-131.3021\\-3\\48.5519\\-131.0007\\-3\\46.59877\\-128.3217\\-3\\46.16409\\-127.3959\\-3\\46.35129\\-125.4428\\-3\\46.59877\\-125.1172\\-3\\48.5519\\-124.3478\\-3\\49.92403\\-125.4428\\-3\\51.86971\\-127.3959\\-3\\53.03798\\-129.349\\-3\\52.29835\\-131.3021\\-3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "73"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "360"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "68.08315\\-214.3036\\-3\\66.66016\\-213.3334\\-3\\66.6872\\-211.3803\\-3\\67.19069\\-209.4271\\-3\\68.41081\\-207.474\\-3\\68.76727\\-205.5209\\-3\\68.08315\\-204.0835\\-3\\66.3684\\-201.6146\\-3\\66.13003\\-201.3999\\-3\\64.1769\\-200.5941\\-3\\62.22377\\-200.0613\\-3\\60.27065\\-199.9847\\-3\\58.31752\\-199.4502\\-3\\57.05591\\-197.7084\\-3\\57.3723\\-195.7553\\-3\\58.67434\\-191.849\\-3\\59.25706\\-187.9428\\-3\\59.78529\\-185.9896\\-3\\60.09626\\-184.0365\\-3\\60.20406\\-182.0834\\-3\\61.7984\\-176.224\\-3\\62.86611\\-174.2709\\-3\\63.27794\\-172.3178\\-3\\64.1769\\-171.2404\\-3\\66.13003\\-171.5767\\-3\\67.1401\\-170.3646\\-3\\67.41365\\-168.4115\\-3\\68.67483\\-166.4584\\-3\\69.17584\\-164.5053\\-3\\69.0092\\-162.5521\\-3\\68.08315\\-161.6858\\-3\\66.59676\\-160.599\\-3\\66.92857\\-158.6459\\-3\\68.08315\\-157.5645\\-3\\70.03628\\-157.181\\-3\\71.9894\\-157.1981\\-3\\73.94253\\-157.8312\\-3\\75.89565\\-159.1167\\-3\\77.84878\\-159.2232\\-3\\79.8019\\-159.9831\\-3\\80.39749\\-160.599\\-3\\80.9489\\-162.5521\\-3\\81.75503\\-163.4612\\-3\\85.07867\\-166.4584\\-3\\86.5738\\-168.4115\\-3\\87.6144\\-169.4191\\-3\\89.56753\\-170.2019\\-3\\91.52065\\-171.5419\\-3\\92.29647\\-172.3178\\-3\\93.77976\\-174.2709\\-3\\94.28345\\-176.224\\-3\\93.47378\\-177.7116\\-3\\91.52065\\-177.0094\\-3\\89.56753\\-176.6732\\-3\\87.6144\\-176.0421\\-3\\85.66128\\-175.6543\\-3\\84.69997\\-176.224\\-3\\81.75503\\-177.3768\\-3\\79.8019\\-179.0542\\-3\\77.84878\\-180.892\\-3\\75.04298\\-184.0365\\-3\\74.23266\\-185.9896\\-3\\73.19691\\-187.9428\\-3\\72.45273\\-189.8959\\-3\\72.25905\\-191.849\\-3\\72.2299\\-197.7084\\-3\\72.31773\\-199.6615\\-3\\73.33547\\-201.6146\\-3\\75.24734\\-205.5209\\-3\\74.95837\\-207.474\\-3\\73.94253\\-209.2069\\-3\\72.2299\\-211.3803\\-3\\70.03628\\-213.3258\\-3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "33"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "361"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "89.56753\\-207.5643\\-3\\88.97073\\-207.474\\-3\\87.6144\\-206.8142\\-3\\87.00092\\-205.5209\\-3\\85.66128\\-204.1982\\-3\\85.20012\\-203.5678\\-3\\83.70815\\-202.0618\\-3\\81.75503\\-201.0578\\-3\\80.20507\\-199.6615\\-3\\78.43722\\-195.7553\\-3\\78.32543\\-193.8021\\-3\\78.36345\\-191.849\\-3\\78.94411\\-189.8959\\-3\\79.8019\\-188.6264\\-3\\80.97136\\-185.9896\\-3\\82.29911\\-184.0365\\-3\\83.70815\\-183.1316\\-3\\85.66128\\-182.8142\\-3\\87.6144\\-182.8983\\-3\\88.57954\\-184.0365\\-3\\89.56753\\-185.6008\\-3\\90.0341\\-185.9896\\-3\\91.52065\\-186.6901\\-3\\93.47378\\-187.0511\\-3\\94.40594\\-187.9428\\-3\\95.04987\\-189.8959\\-3\\95.04987\\-191.849\\-3\\95.16781\\-195.7553\\-3\\95.16781\\-197.7084\\-3\\95.07008\\-199.6615\\-3\\94.04855\\-201.6146\\-3\\92.55432\\-203.5678\\-3\\91.61092\\-205.5209\\-3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "362"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-94.02622\\-209.5792\\-1\\-95.97935\\-208.5367\\-1\\-97.93247\\-207.8496\\-1\\-99.8856\\-206.7079\\-1\\-101.0236\\-205.5209\\-1\\-102.2647\\-203.5678\\-1\\-103.0446\\-201.6146\\-1\\-103.1754\\-199.6615\\-1\\-102.8346\\-195.7553\\-1\\-103.9427\\-193.8021\\-1\\-103.7918\\-193.4766\\-1\\-102.3193\\-191.849\\-1\\-101.8387\\-191.505\\-1\\-99.8856\\-191.1194\\-1\\-99.12083\\-191.849\\-1\\-98.65269\\-193.8021\\-1\\-98.52271\\-195.7553\\-1\\-97.78599\\-197.7084\\-1\\-95.97935\\-200.0269\\-1\\-94.02622\\-200.952\\-1\\-92.0731\\-201.0165\\-1\\-88.16685\\-201.0165\\-1\\-86.67149\\-201.6146\\-1\\-85.7412\\-201.6146\\-1\\-84.2606\\-200.8975\\-1\\-83.39135\\-199.6615\\-1\\-82.86357\\-197.7084\\-1\\-82.67738\\-195.7553\\-1\\-83.39135\\-193.8021\\-1\\-82.30747\\-192.451\\-1\\-80.35435\\-192.4322\\-1\\-79.15151\\-193.8021\\-1\\-79.13667\\-201.6146\\-1\\-78.26324\\-203.5678\\-1\\-80.35435\\-204.5254\\-1\\-81.54667\\-205.5209\\-1\\-86.21372\\-209.9417\\-1\\-88.16685\\-210.4953\\-1\\-90.11997\\-209.608\\-1\\-92.0731\\-209.8089\\-1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "363"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-84.2606\\-191.4421\\-1\\-85.13036\\-189.8959\\-1\\-86.56468\\-187.9428\\-1\\-87.17549\\-185.9896\\-1\\-86.21372\\-185.3143\\-1\\-84.2606\\-186.8091\\-1\\-82.97965\\-187.9428\\-1\\-83.5648\\-189.8959\\-1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "68"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "364"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-70.58872\\-211.6859\\-1\\-72.54185\\-210.6365\\-1\\-73.85007\\-209.4271\\-1\\-75.21622\\-207.474\\-1\\-75.44078\\-205.5209\\-1\\-74.97029\\-203.5678\\-1\\-74.86733\\-201.6146\\-1\\-73.84047\\-199.6615\\-1\\-73.15801\\-197.7084\\-1\\-72.92398\\-195.7553\\-1\\-72.94061\\-193.8021\\-1\\-73.90552\\-191.849\\-1\\-75.13455\\-189.8959\\-1\\-75.92774\\-187.9428\\-1\\-77.59229\\-185.9896\\-1\\-80.35435\\-183.2286\\-1\\-82.30747\\-181.4403\\-1\\-84.2606\\-180.7474\\-1\\-86.21372\\-180.64\\-1\\-88.16685\\-179.6857\\-1\\-90.11997\\-179.8861\\-1\\-92.0731\\-180.658\\-1\\-94.02622\\-180.658\\-1\\-95.97935\\-181.2958\\-1\\-96.96479\\-180.1303\\-1\\-96.51257\\-178.1771\\-1\\-95.65383\\-176.224\\-1\\-94.10071\\-174.2709\\-1\\-92.0731\\-172.1016\\-1\\-90.92139\\-170.3646\\-1\\-87.06573\\-166.4584\\-1\\-85.50396\\-164.5053\\-1\\-83.63584\\-162.5521\\-1\\-82.30747\\-161.5931\\-1\\-80.35435\\-159.6647\\-1\\-78.40122\\-159.1427\\-1\\-74.49497\\-158.9607\\-1\\-72.54185\\-159.1078\\-1\\-70.58872\\-160.6595\\-1\\-69.58466\\-162.5521\\-1\\-68.33163\\-164.5053\\-1\\-67.6252\\-166.4584\\-1\\-66.31549\\-168.4115\\-1\\-66.28574\\-172.3178\\-1\\-65.71095\\-174.2709\\-1\\-64.37253\\-176.224\\-1\\-64.28546\\-178.1771\\-1\\-63.77519\\-180.1303\\-1\\-62.45071\\-182.0834\\-1\\-62.36983\\-184.0365\\-1\\-61.88647\\-185.9896\\-1\\-60.98586\\-187.9428\\-1\\-60.48701\\-189.8959\\-1\\-59.30733\\-193.8021\\-1\\-57.96317\\-195.7553\\-1\\-57.61228\\-197.7084\\-1\\-57.11629\\-199.6615\\-1\\-55.95509\\-201.6146\\-1\\-55.01591\\-205.5209\\-1\\-54.05692\\-207.474\\-1\\-53.73061\\-209.4271\\-1\\-54.96373\\-210.6708\\-1\\-56.91685\\-210.8954\\-1\\-60.8231\\-210.9057\\-1\\-61.90992\\-211.3803\\-1\\-62.77623\\-211.9397\\-1\\-64.72935\\-212.6748\\-1\\-68.6356\\-212.4707\\-1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "62"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "365"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-161.4469\\-1\\-42.66662\\-160.599\\-1\\-44.57525\\-158.6459\\-1\\-45.71111\\-156.6928\\-1\\-45.80561\\-154.7396\\-1\\-45.83934\\-150.8334\\-1\\-46.00028\\-148.8803\\-1\\-47.15123\\-147.7766\\-1\\-49.10435\\-148.4652\\-1\\-49.48746\\-148.8803\\-1\\-50.62275\\-150.8334\\-1\\-51.05748\\-151.3857\\-1\\-53.0106\\-152.6001\\-1\\-54.01752\\-150.8334\\-1\\-53.4082\\-148.8803\\-1\\-51.835\\-146.9271\\-1\\-50.66309\\-144.974\\-1\\-50.17363\\-143.0209\\-1\\-49.10435\\-142.1633\\-1\\-47.15123\\-142.0311\\-1\\-45.83106\\-141.0678\\-1\\-44.13769\\-139.1146\\-1\\-42.26305\\-137.1615\\-1\\-41.29185\\-136.2821\\-1\\-39.33873\\-134.7872\\-1\\-37.3856\\-134.1631\\-1\\-33.47935\\-133.491\\-1\\-23.71373\\-133.479\\-1\\-21.7606\\-133.6668\\-1\\-19.80748\\-134.4509\\-1\\-17.85435\\-136.2688\\-1\\-17.07205\\-137.1615\\-1\\-16.55735\\-139.1146\\-1\\-16.17176\\-141.0678\\-1\\-16.06281\\-143.0209\\-1\\-15.74586\\-144.974\\-1\\-13.9481\\-146.7449\\-1\\-11.99498\\-147.0887\\-1\\-10.04185\\-148.1778\\-1\\-9.347532\\-148.8803\\-1\\-8.317284\\-150.8334\\-1\\-8.022142\\-152.7865\\-1\\-7.993985\\-156.6928\\-1\\-7.927136\\-158.6459\\-1\\-8.088726\\-159.6668\\-1\\-10.04185\\-159.0057\\-1\\-10.84403\\-156.6928\\-1\\-11.73411\\-154.7396\\-1\\-12.28794\\-152.7865\\-1\\-13.9481\\-151.0328\\-1\\-15.90123\\-151.3283\\-1\\-17.02529\\-152.7865\\-1\\-18.16659\\-154.7396\\-1\\-20.13749\\-156.6928\\-1\\-22.59665\\-158.6459\\-1\\-23.71373\\-159.396\\-1\\-25.66685\\-159.827\\-1\\-27.61998\\-160.892\\-1\\-29.5731\\-161.3756\\-1\\-31.52623\\-161.4895\\-1\\-37.3856\\-161.5096\\-1\\-39.33873\\-161.6152\\-1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "366"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "13.39565\\-202.0426\\-1\\12.88583\\-201.6146\\-1\\11.90029\\-199.6615\\-1\\13.39565\\-198.7108\\-1\\15.34877\\-198.2541\\-1\\19.25502\\-198.084\\-1\\25.1144\\-198.084\\-1\\27.06752\\-198.6713\\-1\\29.02065\\-199.0695\\-1\\32.9269\\-199.0974\\-1\\34.1219\\-199.6615\\-1\\34.88002\\-201.1777\\-1\\34.88002\\-201.7367\\-1\\32.9269\\-202.3099\\-1\\27.06752\\-202.3339\\-1\\25.1144\\-202.5349\\-1\\21.20815\\-202.4577\\-1\\19.25502\\-202.5529\\-1\\17.3019\\-202.3339\\-1\\15.34877\\-202.3301\\-1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "367"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-135.5953\\-1\\53.61227\\-135.2084\\-1\\52.45815\\-134.4005\\-1\\50.50502\\-133.8558\\-1\\48.5519\\-133.1144\\-1\\46.59877\\-131.1608\\-1\\45.86635\\-129.349\\-1\\45.38741\\-127.3959\\-1\\45.80323\\-125.4428\\-1\\46.59877\\-123.5464\\-1\\48.5519\\-121.859\\-1\\50.50502\\-121.3352\\-1\\52.45815\\-122.5673\\-1\\54.41127\\-124.5735\\-1\\56.5882\\-127.3959\\-1\\56.68992\\-131.3021\\-1\\56.6813\\-133.2553\\-1\\56.3644\\-134.0528\\-1\\55.32953\\-135.2084\\-1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "71"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "368"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "68.08315\\-211.4204\\-1\\67.59779\\-209.4271\\-1\\67.92156\\-207.474\\-1\\68.71473\\-205.5209\\-1\\68.64824\\-203.5678\\-1\\67.22237\\-201.6146\\-1\\66.13003\\-200.5334\\-1\\62.22377\\-199.0964\\-1\\60.27065\\-198.7754\\-1\\58.88784\\-197.7084\\-1\\58.82284\\-195.7553\\-1\\58.98702\\-193.8021\\-1\\59.27914\\-191.849\\-1\\59.82143\\-189.8959\\-1\\59.93014\\-187.9428\\-1\\60.21847\\-185.9896\\-1\\60.74149\\-184.0365\\-1\\61.21556\\-180.1303\\-1\\61.63241\\-178.1771\\-1\\61.81738\\-176.224\\-1\\62.15719\\-174.2709\\-1\\62.12903\\-172.3178\\-1\\61.85678\\-170.3646\\-1\\62.22377\\-169.9531\\-1\\66.13003\\-168.9799\\-1\\66.42757\\-168.4115\\-1\\67.07376\\-166.4584\\-1\\66.89825\\-164.5053\\-1\\64.40578\\-162.5521\\-1\\65.22246\\-160.599\\-1\\66.78658\\-158.6459\\-1\\68.08315\\-157.5264\\-1\\70.03628\\-157.181\\-1\\71.9894\\-157.1981\\-1\\73.94253\\-157.7982\\-1\\75.89565\\-159.0618\\-1\\77.84878\\-159.4393\\-1\\79.19632\\-160.599\\-1\\80.70034\\-162.5521\\-1\\84.62864\\-166.4584\\-1\\87.6144\\-169.5699\\-1\\89.50571\\-170.3646\\-1\\91.52065\\-171.5619\\-1\\92.26807\\-172.3178\\-1\\94.38208\\-176.224\\-1\\95.29\\-178.1771\\-1\\94.13042\\-180.1303\\-1\\93.47378\\-180.3893\\-1\\91.52065\\-179.2306\\-1\\89.56753\\-178.688\\-1\\85.66128\\-178.6333\\-1\\83.70815\\-178.7588\\-1\\81.75503\\-179.4608\\-1\\79.8019\\-180.8481\\-1\\78.44041\\-182.0834\\-1\\77.00667\\-184.0365\\-1\\75.89565\\-186.7859\\-1\\75.24178\\-187.9428\\-1\\74.43081\\-189.8959\\-1\\74.28672\\-191.849\\-1\\74.24247\\-193.8021\\-1\\74.30143\\-195.7553\\-1\\74.50917\\-197.7084\\-1\\75.27611\\-199.6615\\-1\\76.41136\\-201.6146\\-1\\77.07683\\-203.5678\\-1\\77.55038\\-205.5209\\-1\\76.29515\\-207.474\\-1\\73.94253\\-209.7437\\-1\\70.96401\\-211.3803\\-1\\70.03628\\-212.0245\\-1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "22"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "369"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "89.56753\\-202.2695\\-1\\87.6144\\-200.7336\\-1\\85.66128\\-200.309\\-1\\83.70815\\-198.8292\\-1\\82.44363\\-197.7084\\-1\\82.41812\\-191.849\\-1\\82.45963\\-189.8959\\-1\\82.94975\\-187.9428\\-1\\84.34617\\-185.9896\\-1\\85.66128\\-185.0591\\-1\\87.6144\\-185.6099\\-1\\89.56753\\-187.6471\\-1\\93.47378\\-187.3475\\-1\\94.06103\\-187.9428\\-1\\94.32325\\-191.849\\-1\\94.77034\\-193.8021\\-1\\95.04987\\-195.7553\\-1\\95.10138\\-197.7084\\-1\\94.7473\\-199.6615\\-1\\93.47378\\-200.8849\\-1\\91.82969\\-201.6146\\-1\\91.52065\\-201.9088\\-1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "370"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-90.11997\\-206.1372\\1\\-90.82527\\-205.5209\\1\\-92.0731\\-204.7771\\1\\-97.93247\\-204.7592\\1\\-99.09293\\-203.5678\\1\\-100.5667\\-201.6146\\1\\-101.0587\\-199.6615\\1\\-99.8856\\-198.0905\\1\\-97.93247\\-198.8695\\1\\-95.97935\\-200.8639\\1\\-94.02622\\-202.4542\\1\\-88.16685\\-202.4821\\1\\-86.40903\\-203.5678\\1\\-87.23167\\-205.5209\\1\\-88.16685\\-206.4805\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "64"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "371"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-70.58872\\-210.0848\\1\\-72.54185\\-208.9652\\1\\-74.49497\\-208.5975\\1\\-76.4481\\-207.6156\\1\\-77.66117\\-205.5209\\1\\-78.01282\\-203.5678\\1\\-77.25401\\-201.6146\\1\\-77.21608\\-199.6615\\1\\-77.03256\\-197.7084\\1\\-75.87424\\-195.7553\\1\\-75.7938\\-193.8021\\1\\-76.4481\\-192.9058\\1\\-76.93638\\-191.849\\1\\-77.54881\\-189.8959\\1\\-78.40122\\-188.8589\\1\\-78.92397\\-187.9428\\1\\-79.58008\\-185.9896\\1\\-80.35435\\-185.2263\\1\\-82.30747\\-184.3446\\1\\-84.2606\\-182.9425\\1\\-86.21372\\-182.7215\\1\\-92.0731\\-182.7143\\1\\-94.02622\\-182.8581\\1\\-95.97935\\-183.618\\1\\-97.93247\\-182.1367\\1\\-97.53325\\-180.1303\\1\\-96.80605\\-178.1771\\1\\-95.31612\\-176.224\\1\\-94.49039\\-174.2709\\1\\-92.76669\\-172.3178\\1\\-90.92139\\-170.3646\\1\\-88.16685\\-167.6064\\1\\-85.25603\\-164.5053\\1\\-80.35435\\-159.6692\\1\\-74.49497\\-158.0185\\1\\-72.54185\\-158.0111\\1\\-71.65613\\-158.6459\\1\\-70.58872\\-159.8228\\1\\-70.06375\\-160.599\\1\\-69.32647\\-162.5521\\1\\-68.06594\\-164.5053\\1\\-67.38155\\-166.4584\\1\\-66.30545\\-168.4115\\1\\-66.28574\\-172.3178\\1\\-65.85167\\-174.2709\\1\\-64.87796\\-176.224\\1\\-64.29466\\-178.1771\\1\\-63.88513\\-180.1303\\1\\-62.44014\\-184.0365\\1\\-61.90769\\-185.9896\\1\\-60.67449\\-189.8959\\1\\-60.36737\\-191.849\\1\\-59.83737\\-193.8021\\1\\-58.39103\\-197.7084\\1\\-57.87038\\-199.6615\\1\\-56.01658\\-205.5209\\1\\-55.74346\\-207.474\\1\\-56.91685\\-208.6474\\1\\-58.86998\\-208.7087\\1\\-60.8231\\-208.5935\\1\\-62.77623\\-208.6234\\1\\-64.72935\\-209.8755\\1\\-66.68247\\-210.6797\\1\\-68.6356\\-210.7525\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "372"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-62.77623\\-130.7763\\1\\-63.3634\\-129.349\\1\\-63.286\\-127.3959\\1\\-61.93801\\-125.4428\\1\\-58.86998\\-122.4178\\1\\-56.91685\\-121.0974\\1\\-54.96373\\-121.1496\\1\\-54.41927\\-121.5365\\1\\-52.82091\\-123.4896\\1\\-52.40635\\-125.4428\\1\\-53.0106\\-127.4072\\1\\-54.96373\\-128.196\\1\\-56.71053\\-127.3959\\1\\-56.91685\\-127.1773\\1\\-58.86998\\-127.5194\\1\\-59.91037\\-129.349\\1\\-60.8231\\-131.2361\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "373"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-45.1981\\-133.9364\\1\\-46.5775\\-133.2553\\1\\-47.15123\\-132.515\\1\\-47.77267\\-131.3021\\1\\-47.76482\\-129.349\\1\\-47.15123\\-128.6342\\1\\-45.1981\\-127.0559\\1\\-44.39286\\-127.3959\\1\\-43.24498\\-128.131\\1\\-42.57996\\-129.349\\1\\-42.64524\\-131.3021\\1\\-43.24498\\-132.8786\\1\\-43.62165\\-133.2553\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "374"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-43.24498\\-163.5058\\1\\-44.61655\\-162.5521\\1\\-45.1981\\-161.7173\\1\\-46.75211\\-158.6459\\1\\-47.06245\\-156.6928\\1\\-46.69205\\-154.7396\\1\\-47.28086\\-152.7865\\1\\-48.68266\\-150.8334\\1\\-49.10435\\-150.66\\1\\-51.05748\\-152.2913\\1\\-51.87319\\-152.7865\\1\\-53.0106\\-153.9801\\1\\-53.59654\\-152.7865\\1\\-51.81011\\-148.8803\\1\\-49.10435\\-144.4715\\1\\-47.15123\\-143.7874\\1\\-46.07939\\-143.0209\\1\\-45.1981\\-141.9786\\1\\-43.34189\\-139.1146\\1\\-41.29185\\-137.1081\\1\\-39.33873\\-136.0368\\1\\-37.3856\\-135.7167\\1\\-35.43248\\-134.6774\\1\\-33.47935\\-134.2066\\1\\-23.71373\\-134.2066\\1\\-21.7606\\-134.6343\\1\\-19.80748\\-135.8332\\1\\-18.4116\\-137.1615\\1\\-17.04806\\-139.1146\\1\\-16.18305\\-143.0209\\1\\-16.06281\\-144.974\\1\\-14.70477\\-146.9271\\1\\-13.9481\\-147.5515\\1\\-11.99498\\-147.8012\\1\\-10.04185\\-148.407\\1\\-9.517032\\-148.8803\\1\\-8.126287\\-150.8334\\1\\-7.980219\\-154.7396\\1\\-7.635742\\-156.6928\\1\\-7.394166\\-158.6459\\1\\-7.600445\\-160.599\\1\\-8.088726\\-162.4436\\1\\-10.04185\\-161.116\\1\\-10.17729\\-158.6459\\1\\-10.44107\\-156.6928\\1\\-11.63407\\-154.7396\\1\\-13.03523\\-152.7865\\1\\-13.9481\\-151.9353\\1\\-15.00673\\-152.7865\\1\\-16.38566\\-154.7396\\1\\-17.85435\\-156.3203\\1\\-20.41783\\-158.6459\\1\\-21.7606\\-159.4048\\1\\-23.71373\\-159.8893\\1\\-25.66685\\-161.2379\\1\\-29.5731\\-161.8538\\1\\-31.52623\\-163.0345\\1\\-33.47935\\-163.2559\\1\\-37.3856\\-163.2679\\1\\-39.33873\\-163.8813\\1\\-41.29185\\-163.9193\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "375"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "21.20815\\-204.5516\\1\\19.25502\\-203.405\\1\\17.3019\\-202.8367\\1\\15.34877\\-202.6388\\1\\13.39565\\-202.3164\\1\\11.44252\\-200.8517\\1\\9.489399\\-200.3363\\1\\5.583149\\-200.1498\\1\\4.975681\\-199.6615\\1\\5.583149\\-198.9197\\1\\7.536274\\-198.4197\\1\\9.489399\\-198.4103\\1\\11.44252\\-198.1967\\1\\15.34877\\-197.5598\\1\\17.3019\\-197.1528\\1\\19.25502\\-196.8705\\1\\21.20815\\-196.7194\\1\\23.16127\\-196.7318\\1\\27.06752\\-197.0399\\1\\30.97377\\-197.9702\\1\\32.9269\\-198.0407\\1\\34.88002\\-198.2267\\1\\36.83315\\-198.7853\\1\\38.78627\\-199.1361\\1\\39.8643\\-199.6615\\1\\40.7394\\-200.56\\1\\41.35259\\-201.6146\\1\\40.7394\\-202.0883\\1\\38.78627\\-202.3378\\1\\34.88002\\-202.3037\\1\\32.9269\\-202.0287\\1\\30.97377\\-202.1117\\1\\29.02065\\-202.4068\\1\\25.1144\\-203.3392\\1\\23.16127\\-204.5588\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "376"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "36.83315\\-132.5473\\1\\34.94183\\-131.3021\\1\\33.29051\\-129.349\\1\\33.66871\\-127.3959\\1\\34.88002\\-126.623\\1\\36.83315\\-126.2553\\1\\38.78627\\-126.2725\\1\\40.70184\\-127.3959\\1\\40.45551\\-129.349\\1\\39.62865\\-131.3021\\1\\38.78627\\-132.2701\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "377"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-135.5014\\1\\46.59877\\-134.4866\\1\\44.85061\\-133.2553\\1\\43.8305\\-131.3021\\1\\44.45865\\-127.3959\\1\\45.71391\\-125.4428\\1\\46.11916\\-123.4896\\1\\47.49631\\-121.5365\\1\\48.5519\\-120.3733\\1\\50.50502\\-118.6949\\1\\52.45815\\-118.8305\\1\\55.18501\\-121.5365\\1\\56.66836\\-123.4896\\1\\57.12273\\-125.4428\\1\\57.82282\\-127.3959\\1\\57.94192\\-129.349\\1\\58.34024\\-131.3021\\1\\58.54132\\-133.2553\\1\\57.42815\\-135.2084\\1\\56.3644\\-136.3467\\1\\54.41127\\-136.5779\\1\\52.45815\\-135.8986\\1\\50.50502\\-135.5549\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "65"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "378"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "70.03628\\-210.5771\\1\\68.732\\-209.4271\\1\\67.98841\\-205.5209\\1\\68.48238\\-203.5678\\1\\68.09084\\-201.6146\\1\\66.13003\\-199.4241\\1\\62.22377\\-198.2708\\1\\61.47066\\-197.7084\\1\\60.47009\\-195.7553\\1\\59.85774\\-193.8021\\1\\60.99099\\-189.8959\\1\\61.00307\\-185.9896\\1\\61.22481\\-184.0365\\1\\61.57458\\-182.0834\\1\\61.81738\\-178.1771\\1\\61.82705\\-170.3646\\1\\63.21777\\-168.4115\\1\\63.70605\\-166.4584\\1\\63.78017\\-164.5053\\1\\63.64677\\-162.5521\\1\\64.72131\\-160.599\\1\\65.55718\\-158.6459\\1\\66.13003\\-158.005\\1\\68.08315\\-157.1513\\1\\71.9894\\-157.1896\\1\\73.94253\\-157.6089\\1\\77.84878\\-159.6922\\1\\80.63329\\-162.5521\\1\\84.55672\\-166.4584\\1\\87.6144\\-169.5761\\1\\89.36989\\-170.3646\\1\\91.52065\\-171.8229\\1\\91.97842\\-172.3178\\1\\92.83875\\-174.2709\\1\\94.24107\\-176.224\\1\\96.23444\\-178.1771\\1\\98.09297\\-180.1303\\1\\97.96243\\-182.0834\\1\\97.38003\\-182.7236\\1\\95.4269\\-182.6993\\1\\93.8328\\-182.0834\\1\\91.52065\\-181.0098\\1\\89.56753\\-180.7334\\1\\87.6144\\-180.7878\\1\\85.66128\\-180.9685\\1\\83.70815\\-181.3998\\1\\81.75503\\-182.9719\\1\\79.8019\\-183.3302\\1\\79.16399\\-184.0365\\1\\78.38732\\-185.9896\\1\\78.27525\\-187.9428\\1\\78.31998\\-189.8959\\1\\77.84878\\-191.0005\\1\\77.28619\\-191.849\\1\\76.58778\\-193.8021\\1\\77.84878\\-194.9937\\1\\79.12582\\-195.7553\\1\\79.8019\\-196.4112\\1\\80.63761\\-197.7084\\1\\80.55376\\-201.6146\\1\\80.40353\\-203.5678\\1\\79.8019\\-204.0082\\1\\77.84878\\-205.9447\\1\\75.89565\\-207.5498\\1\\71.9894\\-210.1062\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "379"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "93.47378\\-199.4174\\1\\91.5904\\-197.7084\\1\\90.12726\\-195.7553\\1\\89.56753\\-195.3663\\1\\87.6144\\-194.8044\\1\\86.62085\\-193.8021\\1\\87.6144\\-192.2787\\1\\89.56753\\-192.1393\\1\\91.52065\\-193.0149\\1\\93.47378\\-194.1362\\1\\94.52847\\-195.7553\\1\\94.68011\\-197.7084\\1"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "82"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "380"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-80.454\\-207.474\\3\\-81.68516\\-205.5209\\3\\-81.23916\\-203.5678\\3\\-81.57505\\-201.6146\\3\\-81.68603\\-199.6615\\3\\-80.13606\\-197.7084\\3\\-79.20023\\-195.7553\\3\\-79.20824\\-191.849\\3\\-79.99364\\-189.8959\\3\\-81.23454\\-187.9428\\3\\-81.82733\\-185.9896\\3\\-82.30747\\-185.5923\\3\\-84.2606\\-184.9198\\3\\-86.21372\\-184.8189\\3\\-88.16685\\-184.9135\\3\\-90.11997\\-184.8058\\3\\-92.0731\\-184.866\\3\\-94.02622\\-185.7243\\3\\-95.97935\\-186.9007\\3\\-97.93247\\-187.5544\\3\\-98.34428\\-187.9428\\3\\-98.98875\\-189.8959\\3\\-99.06674\\-191.849\\3\\-99.8856\\-192.8403\\3\\-100.8695\\-191.849\\3\\-100.814\\-189.8959\\3\\-100.6003\\-187.9428\\3\\-100.1693\\-185.9896\\3\\-98.79784\\-184.0365\\3\\-98.47869\\-182.0834\\3\\-97.15599\\-180.1303\\3\\-96.61464\\-178.1771\\3\\-94.94684\\-176.224\\3\\-94.02622\\-174.3828\\3\\-92.84267\\-172.3178\\3\\-88.16685\\-167.6064\\3\\-86.21372\\-165.5415\\3\\-84.2606\\-163.3053\\3\\-82.30747\\-161.5154\\3\\-80.35435\\-159.6266\\3\\-78.40122\\-159.0806\\3\\-76.4481\\-157.8248\\3\\-74.49497\\-157.3345\\3\\-72.54185\\-157.2465\\3\\-70.58872\\-158.1946\\3\\-70.20686\\-158.6459\\3\\-69.36247\\-160.599\\3\\-68.23887\\-162.5521\\3\\-67.47956\\-164.5053\\3\\-66.53387\\-166.4584\\3\\-66.28574\\-168.4115\\3\\-66.24779\\-172.3178\\3\\-65.95745\\-174.2709\\3\\-65.28976\\-176.224\\3\\-64.30398\\-178.1771\\3\\-64.18806\\-180.1303\\3\\-63.8094\\-182.0834\\3\\-63.18773\\-184.0365\\3\\-62.30538\\-185.9896\\3\\-61.84509\\-187.9428\\3\\-61.63145\\-189.8959\\3\\-61.24163\\-191.849\\3\\-60.46398\\-193.8021\\3\\-59.37825\\-197.7084\\3\\-58.58432\\-199.6615\\3\\-58.08553\\-201.6146\\3\\-57.89341\\-203.5678\\3\\-58.7709\\-205.5209\\3\\-58.96626\\-205.5209\\3\\-60.8231\\-204.4036\\3\\-62.83601\\-203.5678\\3\\-64.72935\\-203.0315\\3\\-65.74884\\-203.5678\\3\\-66.68247\\-204.6432\\3\\-67.16734\\-205.5209\\3\\-67.34594\\-207.474\\3\\-68.6356\\-208.6233\\3\\-70.58872\\-208.5698\\3\\-72.54185\\-208.0851\\3\\-74.49497\\-207.287\\3\\-76.4481\\-208.1233\\3\\-78.40122\\-207.7215\\3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "381"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-45.1981\\-135.9117\\3\\-46.7327\\-135.2084\\3\\-49.10435\\-133.7309\\3\\-51.05748\\-132.0067\\3\\-53.0106\\-131.4106\\3\\-54.96373\\-130.5955\\3\\-56.91685\\-130.1079\\3\\-58.86998\\-131.2673\\3\\-60.8231\\-133.2276\\3\\-62.77623\\-133.9861\\3\\-64.03022\\-133.2553\\3\\-64.72935\\-132.6637\\3\\-65.71269\\-131.3021\\3\\-65.57247\\-129.349\\3\\-65.21456\\-127.3959\\3\\-64.72935\\-125.8529\\3\\-63.53646\\-123.4896\\3\\-62.77623\\-122.6064\\3\\-59.714\\-119.5834\\3\\-58.86998\\-118.9377\\3\\-56.91685\\-118.8931\\3\\-54.96373\\-119.1842\\3\\-54.17027\\-119.5834\\3\\-53.0106\\-120.4424\\3\\-52.33921\\-121.5365\\3\\-51.64722\\-123.4896\\3\\-50.34789\\-125.4428\\3\\-49.10435\\-126.9329\\3\\-47.15123\\-126.1425\\3\\-45.1981\\-124.7469\\3\\-43.24498\\-124.2536\\3\\-39.33873\\-124.4208\\3\\-37.3856\\-124.4208\\3\\-36.48262\\-125.4428\\3\\-37.3856\\-126.6983\\3\\-38.08315\\-127.3959\\3\\-39.33873\\-128.2748\\3\\-40.39881\\-129.349\\3\\-41.21108\\-131.3021\\3\\-42.20807\\-133.2553\\3\\-43.24498\\-134.546\\3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "70"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "382"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.088726\\-169.0701\\3\\-8.438359\\-168.4115\\3\\-9.104879\\-166.4584\\3\\-9.515021\\-164.5053\\3\\-10.02829\\-162.5521\\3\\-10.17729\\-160.599\\3\\-10.64058\\-158.6459\\3\\-10.95776\\-156.6928\\3\\-11.99498\\-155.6555\\3\\-13.9481\\-155.6021\\3\\-14.96452\\-156.6928\\3\\-15.90123\\-158.2755\\3\\-16.31439\\-158.6459\\3\\-17.85435\\-159.463\\3\\-19.80748\\-160.2597\\3\\-21.7606\\-161.405\\3\\-23.71373\\-161.5815\\3\\-25.66685\\-162.2922\\3\\-27.61998\\-163.3176\\3\\-29.5731\\-163.4141\\3\\-31.52623\\-164.1865\\3\\-33.47935\\-165.2601\\3\\-37.3856\\-165.3547\\3\\-39.33873\\-166.1469\\3\\-41.29185\\-167.1691\\3\\-43.24498\\-167.1622\\3\\-44.69298\\-166.4584\\3\\-46.67312\\-164.5053\\3\\-47.15123\\-163.7767\\3\\-48.4973\\-160.599\\3\\-49.52753\\-158.6459\\3\\-48.40766\\-156.6928\\3\\-47.96503\\-154.7396\\3\\-49.10435\\-153.5173\\3\\-51.05748\\-153.5601\\3\\-52.79269\\-154.7396\\3\\-53.0106\\-155.1453\\3\\-53.38728\\-154.7396\\3\\-53.49888\\-152.7865\\3\\-51.93584\\-150.8334\\3\\-50.53454\\-148.8803\\3\\-49.10435\\-146.7407\\3\\-47.15123\\-145.9193\\3\\-45.49436\\-144.974\\3\\-45.1981\\-144.6525\\3\\-43.51263\\-141.0678\\3\\-41.29185\\-138.7475\\3\\-39.33873\\-137.8493\\3\\-37.58627\\-137.1615\\3\\-35.43248\\-136.118\\3\\-33.47935\\-135.9379\\3\\-27.61998\\-135.9307\\3\\-23.71373\\-135.8757\\3\\-21.7606\\-135.9886\\3\\-19.80748\\-136.807\\3\\-19.44805\\-137.1615\\3\\-18.4647\\-139.1146\\3\\-17.10276\\-141.0678\\3\\-16.18305\\-144.974\\3\\-14.95534\\-146.9271\\3\\-13.9481\\-147.9344\\3\\-11.99498\\-149.2253\\3\\-10.04185\\-149.6923\\3\\-8.669558\\-150.8334\\3\\-7.763205\\-154.7396\\3\\-6.401283\\-158.6459\\3\\-6.920053\\-160.599\\3\\-7.32562\\-162.5521\\3\\-7.590744\\-166.4584\\3\\-7.869189\\-168.4115\\3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "383"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "21.20815\\-211.9906\\3\\19.96923\\-211.3803\\3\\19.25502\\-210.8601\\3\\17.66664\\-209.4271\\3\\15.34877\\-207.1286\\3\\14.45799\\-205.5209\\3\\13.50416\\-203.5678\\3\\11.44252\\-201.6067\\3\\9.489399\\-200.4787\\3\\7.536274\\-200.1498\\3\\5.583149\\-200.0458\\3\\3.630024\\-200.0679\\3\\1.676899\\-200.4874\\3\\-0.276226\\-200.3291\\3\\-0.9219313\\-199.6615\\3\\-0.276226\\-198.2548\\3\\0.3702308\\-197.7084\\3\\1.676899\\-197.1461\\3\\5.583149\\-196.9996\\3\\7.536274\\-197.2057\\3\\9.489399\\-197.573\\3\\11.44252\\-197.573\\3\\15.34877\\-196.8154\\3\\17.3019\\-195.9629\\3\\19.25502\\-194.1657\\3\\19.83434\\-193.8021\\3\\21.20815\\-193.2724\\3\\23.16127\\-193.2724\\3\\25.1144\\-194.4092\\3\\27.06752\\-195.127\\3\\29.02065\\-196.307\\3\\30.97377\\-196.8821\\3\\32.9269\\-197.1941\\3\\34.88002\\-197.6708\\3\\36.83315\\-197.9322\\3\\40.7394\\-198.1738\\3\\42.69252\\-198.7731\\3\\44.06948\\-199.6615\\3\\44.64565\\-200.2494\\3\\46.59877\\-200.8736\\3\\47.83384\\-201.6146\\3\\46.59877\\-202.6388\\3\\44.64565\\-202.6599\\3\\42.69252\\-202.4698\\3\\40.7394\\-202.5345\\3\\38.78627\\-202.4862\\3\\36.83315\\-202.0855\\3\\34.88002\\-201.9816\\3\\30.97377\\-202.5796\\3\\29.7368\\-203.5678\\3\\29.68845\\-205.5209\\3\\28.28823\\-207.474\\3\\27.786\\-209.4271\\3\\27.06752\\-210.4749\\3\\26.0569\\-211.3803\\3\\25.1144\\-211.9807\\3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "384"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-137.9012\\3\\52.45815\\-136.6403\\3\\50.50502\\-136.1081\\3\\48.5519\\-136.1214\\3\\46.59877\\-135.9182\\3\\44.64565\\-134.6992\\3\\42.69252\\-133.6992\\3\\40.7394\\-133.467\\3\\36.83315\\-133.894\\3\\34.88002\\-133.9241\\3\\33.32578\\-133.2553\\3\\32.9269\\-132.8326\\3\\32.2523\\-131.3021\\3\\30.97377\\-129.215\\3\\30.35528\\-127.3959\\3\\30.57166\\-125.4428\\3\\30.97377\\-125.2003\\3\\32.9269\\-126.1736\\3\\36.83315\\-125.8681\\3\\38.78627\\-125.8957\\3\\40.7394\\-126.7128\\3\\42.69252\\-128.5666\\3\\44.64565\\-126.5905\\3\\45.50788\\-125.4428\\3\\45.96751\\-121.5365\\3\\47.52493\\-119.5834\\3\\49.82143\\-117.6303\\3\\50.50502\\-116.7758\\3\\52.45815\\-116.5173\\3\\53.44105\\-117.6303\\3\\56.3644\\-120.6325\\3\\57.12891\\-121.5365\\3\\57.93097\\-123.4896\\3\\58.07512\\-125.4428\\3\\58.7429\\-127.3959\\3\\59.05614\\-129.349\\3\\59.4491\\-133.2553\\3\\58.95942\\-135.2084\\3\\58.31752\\-136.1605\\3\\57.37172\\-137.1615\\3\\56.3644\\-137.8244\\3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "68"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "385"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "70.03628\\-207.9998\\3\\69.671\\-207.474\\3\\68.79072\\-205.5209\\3\\69.11625\\-203.5678\\3\\69.15737\\-201.6146\\3\\68.08315\\-200.4744\\3\\66.13003\\-198.725\\3\\64.1769\\-197.5173\\3\\62.22377\\-196.4402\\3\\61.60732\\-195.7553\\3\\61.08524\\-193.8021\\3\\61.28608\\-191.849\\3\\61.76022\\-189.8959\\3\\61.61135\\-185.9896\\3\\61.81738\\-182.0834\\3\\61.81738\\-180.1303\\3\\62.01207\\-176.224\\3\\61.81738\\-172.3178\\3\\61.81738\\-170.3646\\3\\62.12903\\-168.4115\\3\\63.07074\\-166.4584\\3\\63.30359\\-164.5053\\3\\63.42678\\-162.5521\\3\\65.11239\\-160.599\\3\\65.54516\\-158.6459\\3\\66.13003\\-157.7662\\3\\67.16909\\-156.6928\\3\\68.08315\\-156.0509\\3\\71.9894\\-157.0496\\3\\73.94253\\-157.261\\3\\75.89565\\-157.9569\\3\\78.66029\\-160.599\\3\\84.55672\\-166.4584\\3\\87.6144\\-169.5761\\3\\89.56753\\-170.9235\\3\\90.97811\\-172.3178\\3\\92.42168\\-174.2709\\3\\94.00275\\-176.224\\3\\97.38003\\-179.4378\\3\\98.02192\\-180.1303\\3\\98.43613\\-182.0834\\3\\98.48789\\-185.9896\\3\\97.38003\\-187.4226\\3\\96.43156\\-185.9896\\3\\95.4269\\-185.0062\\3\\93.47378\\-184.9405\\3\\91.52065\\-184.5464\\3\\89.56753\\-182.9682\\3\\88.02209\\-184.0365\\3\\85.66128\\-186.0458\\3\\83.70815\\-186.9662\\3\\81.75503\\-187.4598\\3\\81.27211\\-187.9428\\3\\82.41909\\-189.8959\\3\\84.31746\\-191.849\\3\\84.65661\\-193.8021\\3\\84.59296\\-201.6146\\3\\84.55218\\-203.5678\\3\\86.53008\\-205.5209\\3\\86.2871\\-207.474\\3\\85.66128\\-208.0061\\3\\83.70815\\-207.5119\\3\\81.75503\\-206.2238\\3\\79.8019\\-204.6647\\3\\77.84878\\-204.7063\\3\\76.2881\\-205.5209\\3\\73.94253\\-207.9387\\3\\71.9894\\-209.1943\\3"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "82"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "386"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-86.21372\\-212.4242\\5\\-86.82738\\-211.3803\\5\\-85.14561\\-209.4271\\5\\-84.97034\\-207.474\\5\\-85.32027\\-205.5209\\5\\-86.80949\\-203.5678\\5\\-86.29362\\-201.6146\\5\\-85.18223\\-199.6615\\5\\-85.21789\\-195.7553\\5\\-84.92736\\-193.8021\\5\\-84.96292\\-191.849\\5\\-85.70127\\-189.8959\\5\\-86.21372\\-189.3834\\5\\-88.16685\\-189.0451\\5\\-90.11997\\-188.4155\\5\\-92.0731\\-188.708\\5\\-95.97935\\-192.2821\\5\\-97.02608\\-193.8021\\5\\-95.7373\\-195.7553\\5\\-95.13648\\-197.7084\\5\\-95.97935\\-198.6046\\5\\-97.93247\\-199.1075\\5\\-99.03481\\-197.7084\\5\\-98.99458\\-195.7553\\5\\-100.4749\\-193.8021\\5\\-101.1894\\-191.849\\5\\-100.6543\\-187.9428\\5\\-99.56008\\-185.9896\\5\\-98.82766\\-184.0365\\5\\-97.27627\\-182.0834\\5\\-96.70669\\-180.1303\\5\\-95.97935\\-178.2173\\5\\-94.85529\\-176.224\\5\\-93.38389\\-174.2709\\5\\-92.60422\\-172.3178\\5\\-90.92139\\-170.3646\\5\\-87.07132\\-166.4584\\5\\-85.59612\\-164.5053\\5\\-84.88406\\-162.5521\\5\\-84.2606\\-161.9251\\5\\-82.30747\\-160.5043\\5\\-80.35435\\-159.5341\\5\\-78.40122\\-158.3378\\5\\-76.4481\\-157.5357\\5\\-74.49497\\-156.4626\\5\\-72.54185\\-155.8402\\5\\-70.58872\\-157.0764\\5\\-69.18919\\-158.6459\\5\\-67.93145\\-160.599\\5\\-67.47303\\-162.5521\\5\\-66.52089\\-164.5053\\5\\-66.28574\\-166.4584\\5\\-66.20287\\-170.3646\\5\\-66.02291\\-172.3178\\5\\-65.49065\\-174.2709\\5\\-64.51765\\-176.224\\5\\-64.30398\\-178.1771\\5\\-64.30398\\-180.1303\\5\\-64.19922\\-182.0834\\5\\-63.82322\\-184.0365\\5\\-63.21628\\-185.9896\\5\\-62.38929\\-187.9428\\5\\-62.33344\\-189.8959\\5\\-61.88025\\-191.849\\5\\-61.69067\\-193.8021\\5\\-61.14\\-195.7553\\5\\-59.92713\\-197.7084\\5\\-59.78369\\-199.6615\\5\\-60.56711\\-201.6146\\5\\-60.8231\\-201.8565\\5\\-62.77623\\-202.5187\\5\\-64.72935\\-202.2039\\5\\-66.68247\\-202.4919\\5\\-68.15868\\-203.5678\\5\\-68.6356\\-204.1271\\5\\-70.58872\\-205.6651\\5\\-72.54185\\-206.6008\\5\\-74.49497\\-206.561\\5\\-78.40122\\-207.1379\\5\\-80.35435\\-208.4192\\5\\-82.30747\\-210.1181\\5\\-84.2606\\-211.4333\\5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "387"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-62.77623\\-137.5134\\5\\-64.72935\\-136.9432\\5\\-65.57198\\-135.2084\\5\\-67.34611\\-131.3021\\5\\-67.25261\\-129.349\\5\\-66.68247\\-127.6484\\5\\-65.77135\\-125.4428\\5\\-65.31528\\-123.4896\\5\\-63.84916\\-121.5365\\5\\-62.00195\\-119.5834\\5\\-60.8231\\-118.5709\\5\\-58.86998\\-117.7264\\5\\-56.91685\\-118.348\\5\\-53.0106\\-118.5363\\5\\-51.31261\\-119.5834\\5\\-50.77948\\-121.5365\\5\\-49.10435\\-123.0076\\5\\-47.15123\\-123.3619\\5\\-45.1981\\-123.4669\\5\\-43.24498\\-122.9123\\5\\-41.29185\\-123.2191\\5\\-39.33873\\-123.8465\\5\\-37.3856\\-123.915\\5\\-35.69156\\-125.4428\\5\\-36.19805\\-127.3959\\5\\-37.3856\\-128.3825\\5\\-38.86967\\-129.349\\5\\-39.33873\\-129.7838\\5\\-40.33398\\-131.3021\\5\\-40.86972\\-133.2553\\5\\-42.40419\\-135.2084\\5\\-42.91946\\-137.1615\\5\\-43.24498\\-137.4754\\5\\-45.1981\\-137.9018\\5\\-47.15123\\-137.7825\\5\\-48.20917\\-137.1615\\5\\-49.10435\\-136.0991\\5\\-49.60162\\-135.2084\\5\\-50.39719\\-133.2553\\5\\-51.05748\\-132.5509\\5\\-53.0106\\-132.0308\\5\\-54.96373\\-132.1696\\5\\-56.91685\\-132.0866\\5\\-58.74477\\-133.2553\\5\\-60.8231\\-135.3533\\5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "78"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "388"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.182476\\-183.1748\\5\\-5.68691\\-182.0834\\5\\-6.135601\\-181.9268\\5\\-8.088726\\-180.7864\\5\\-8.76602\\-180.1303\\5\\-7.852215\\-178.1771\\5\\-7.293704\\-176.224\\5\\-7.413866\\-174.2709\\5\\-7.774056\\-172.3178\\5\\-7.726453\\-170.3646\\5\\-8.088726\\-170.0294\\5\\-8.745687\\-168.4115\\5\\-9.257484\\-166.4584\\5\\-9.318666\\-164.5053\\5\\-9.732377\\-162.5521\\5\\-10.72544\\-160.599\\5\\-11.99498\\-159.4449\\5\\-13.1086\\-160.599\\5\\-13.9481\\-162.2682\\5\\-14.22872\\-162.5521\\5\\-15.90123\\-163.4131\\5\\-19.80748\\-163.4299\\5\\-21.7606\\-164.3228\\5\\-23.71373\\-165.3818\\5\\-29.5731\\-165.424\\5\\-31.56285\\-166.4584\\5\\-33.47935\\-167.2528\\5\\-35.43248\\-167.3149\\5\\-37.54429\\-168.4115\\5\\-39.33873\\-169.1592\\5\\-45.1981\\-169.1128\\5\\-46.36479\\-168.4115\\5\\-48.38356\\-166.4584\\5\\-49.60162\\-164.5053\\5\\-49.66661\\-162.5521\\5\\-50.25634\\-160.599\\5\\-51.05748\\-159.1125\\5\\-53.0106\\-158.2455\\5\\-54.50362\\-156.6928\\5\\-53.01823\\-152.7865\\5\\-51.53916\\-150.8334\\5\\-51.05748\\-150.3613\\5\\-49.10435\\-149.2918\\5\\-47.79576\\-148.8803\\5\\-45.1981\\-147.7222\\5\\-44.39275\\-146.9271\\5\\-42.70057\\-144.974\\5\\-42.53627\\-143.0209\\5\\-42.08984\\-141.0678\\5\\-41.29185\\-140.0843\\5\\-39.33873\\-139.1373\\5\\-37.3856\\-139.8508\\5\\-35.52126\\-139.1146\\5\\-33.47935\\-137.968\\5\\-27.61998\\-137.8441\\5\\-25.66685\\-137.7538\\5\\-23.71373\\-137.2423\\5\\-21.7606\\-137.1221\\5\\-19.54753\\-139.1146\\5\\-18.67753\\-141.0678\\5\\-17.48897\\-143.0209\\5\\-16.6101\\-144.974\\5\\-15.00851\\-146.9271\\5\\-13.04792\\-148.8803\\5\\-11.99498\\-150.0366\\5\\-10.04185\\-151.6351\\5\\-9.00561\\-152.7865\\5\\-8.088726\\-154.7281\\5\\-6.812478\\-156.6928\\5\\-6.127972\\-158.6459\\5\\-5.799511\\-160.599\\5\\-5.59622\\-162.5521\\5\\-5.511343\\-170.3646\\5\\-4.630898\\-172.3178\\5\\-4.182476\\-172.9547\\5\\-3.654451\\-174.2709\\5\\-3.630021\\-180.1303\\5\\-3.823353\\-182.0834\\5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "389"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "21.20815\\-215.7338\\5\\19.25502\\-214.6054\\5\\17.3019\\-213.8975\\5\\16.25799\\-213.3334\\5\\15.34877\\-212.6515\\5\\12.00451\\-209.4271\\5\\10.11973\\-207.474\\5\\9.489399\\-206.6583\\5\\8.906991\\-205.5209\\5\\8.836396\\-201.6146\\5\\7.536274\\-200.4727\\5\\3.630024\\-199.9433\\5\\1.676899\\-200.4398\\5\\-0.276226\\-200.6015\\5\\-2.095468\\-199.6615\\5\\-3.212173\\-197.7084\\5\\-3.399192\\-195.7553\\5\\-2.229351\\-194.2579\\5\\-0.8597816\\-195.7553\\5\\-0.276226\\-196.132\\5\\1.676899\\-196.0718\\5\\5.583149\\-196.0718\\5\\7.536274\\-196.5458\\5\\9.489399\\-196.8459\\5\\11.44252\\-196.8101\\5\\13.39565\\-196.2106\\5\\13.97653\\-195.7553\\5\\15.95808\\-193.8021\\5\\17.3019\\-192.7469\\5\\19.25502\\-191.543\\5\\21.20815\\-191.2869\\5\\23.16127\\-191.2869\\5\\25.1144\\-191.5882\\5\\27.06752\\-192.753\\5\\29.02065\\-194.3895\\5\\30.97377\\-195.1318\\5\\32.9269\\-196.2532\\5\\34.88002\\-197.164\\5\\36.83315\\-197.573\\5\\40.7394\\-197.573\\5\\44.64565\\-197.9525\\5\\46.59877\\-198.6339\\5\\48.5519\\-198.8953\\5\\50.50502\\-198.9379\\5\\51.65914\\-199.6615\\5\\52.8858\\-201.6146\\5\\52.45815\\-202.1103\\5\\50.50502\\-202.4947\\5\\48.5519\\-202.4368\\5\\46.59877\\-202.6383\\5\\44.64565\\-202.6464\\5\\42.69252\\-202.5164\\5\\40.7394\\-202.0493\\5\\38.78627\\-202.3774\\5\\34.88002\\-202.5602\\5\\33.73973\\-203.5678\\5\\33.55513\\-207.474\\5\\32.9269\\-208.5346\\5\\32.21743\\-209.4271\\5\\27.06752\\-214.5741\\5\\25.1144\\-215.7338\\5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "390"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-137.3371\\5\\44.64565\\-136.0736\\5\\42.69252\\-134.476\\5\\40.7394\\-133.9877\\5\\38.78627\\-134.1585\\5\\36.58241\\-135.2084\\5\\34.88002\\-135.8857\\5\\32.9269\\-135.0776\\5\\30.97377\\-133.2799\\5\\29.02065\\-131.1987\\5\\27.07958\\-129.349\\5\\27.87319\\-127.3959\\5\\29.02065\\-126.005\\5\\29.86404\\-125.4428\\5\\30.97377\\-124.9962\\5\\32.9269\\-125.9224\\5\\34.88002\\-125.9729\\5\\38.78627\\-125.931\\5\\40.7394\\-126.4417\\5\\42.4728\\-127.3959\\5\\42.94606\\-127.3959\\5\\44.51021\\-125.4428\\5\\44.7154\\-121.5365\\5\\45.94946\\-119.5834\\5\\46.59877\\-118.9163\\5\\48.5916\\-117.6303\\5\\49.7673\\-115.6771\\5\\49.85202\\-113.724\\5\\50.50502\\-113.0109\\5\\52.45815\\-112.9555\\5\\53.36642\\-113.724\\5\\54.85683\\-115.6771\\5\\55.42335\\-117.6303\\5\\57.21334\\-119.5834\\5\\58.52923\\-121.5365\\5\\59.06227\\-123.4896\\5\\59.08413\\-125.4428\\5\\59.44685\\-127.3959\\5\\60.87366\\-129.349\\5\\60.97866\\-133.2553\\5\\60.90957\\-135.2084\\5\\60.27065\\-136.81\\5\\60.00431\\-137.1615\\5\\56.3644\\-139.0595\\5\\54.41127\\-138.9889\\5\\52.45815\\-137.938\\5\\50.50502\\-137.6235\\5\\48.5519\\-137.7968\\5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "391"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "77.84878\\-212.1099\\5\\75.89565\\-211.1117\\5\\73.94253\\-210.436\\5\\71.9894\\-209.6204\\5\\71.9894\\-208.8814\\5\\73.94253\\-208.1145\\5\\75.89565\\-208.1313\\5\\77.84878\\-208.6281\\5\\79.8019\\-210.3924\\5\\81.12669\\-211.3803\\5\\79.8019\\-212.3458\\5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "62"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "392"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "85.66128\\-209.604\\5\\83.70815\\-208.2945\\5\\82.92401\\-207.474\\5\\79.8019\\-204.6005\\5\\77.84878\\-203.0912\\5\\75.89565\\-203.6341\\5\\74.93359\\-205.5209\\5\\73.94253\\-207.0261\\5\\71.9894\\-207.0429\\5\\70.97166\\-205.5209\\5\\70.71281\\-203.5678\\5\\70.62689\\-201.6146\\5\\70.03628\\-200.8441\\5\\68.08315\\-199.2598\\5\\66.13003\\-198.2752\\5\\63.45903\\-195.7553\\5\\62.98609\\-193.8021\\5\\63.08263\\-189.8959\\5\\62.73204\\-187.9428\\5\\61.99998\\-185.9896\\5\\61.99998\\-184.0365\\5\\61.81738\\-180.1303\\5\\62.6008\\-178.1771\\5\\63.05893\\-176.224\\5\\62.66113\\-174.2709\\5\\61.89825\\-172.3178\\5\\61.81738\\-168.4115\\5\\62.26222\\-164.5053\\5\\63.391\\-162.5521\\5\\65.28603\\-160.599\\5\\65.62471\\-158.6459\\5\\65.52297\\-156.6928\\5\\66.13003\\-155.2343\\5\\66.61831\\-154.7396\\5\\68.08315\\-154.0472\\5\\70.03628\\-155.3763\\5\\73.94253\\-156.6851\\5\\75.89565\\-157.8414\\5\\82.60673\\-164.5053\\5\\85.66128\\-167.6076\\5\\90.45776\\-172.3178\\5\\92.31172\\-174.2709\\5\\93.35171\\-176.224\\5\\94.67932\\-178.1771\\5\\95.4269\\-178.7793\\5\\96.72032\\-180.1303\\5\\97.82166\\-182.0834\\5\\98.49413\\-184.0365\\5\\98.82784\\-185.9896\\5\\98.4703\\-189.8959\\5\\98.42684\\-191.849\\5\\97.78955\\-193.8021\\5\\96.58173\\-195.7553\\5\\95.52308\\-197.7084\\5\\94.14386\\-199.6615\\5\\93.51134\\-201.6146\\5\\92.33256\\-203.5678\\5\\91.52065\\-204.6178\\5\\90.63744\\-205.5209\\5\\89.56753\\-206.362\\5\\88.42916\\-207.474\\5\\87.6144\\-208.5172\\5"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "70"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "393"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.16685\\-213.3593\\7\\-87.30246\\-211.3803\\7\\-84.71083\\-209.4271\\7\\-84.91364\\-207.474\\7\\-86.21372\\-206.4352\\7\\-88.16685\\-205.6294\\7\\-90.11997\\-203.4351\\7\\-91.18853\\-201.6146\\7\\-92.0731\\-200.7171\\7\\-94.02622\\-199.9976\\7\\-95.97935\\-199.5394\\7\\-97.93247\\-199.5129\\7\\-99.28587\\-197.7084\\7\\-99.02781\\-195.7553\\7\\-99.62112\\-193.8021\\7\\-100.8957\\-191.849\\7\\-100.5853\\-189.8959\\7\\-99.54951\\-187.9428\\7\\-98.96771\\-185.9896\\7\\-98.63422\\-184.0365\\7\\-96.88046\\-182.0834\\7\\-95.95664\\-180.1303\\7\\-95.68638\\-178.1771\\7\\-94.83075\\-176.224\\7\\-92.97175\\-174.2709\\7\\-92.0731\\-172.4345\\7\\-90.92139\\-170.3646\\7\\-87.06008\\-166.4584\\7\\-85.50571\\-164.5053\\7\\-84.90294\\-162.5521\\7\\-82.30747\\-159.7789\\7\\-78.40122\\-157.4577\\7\\-76.4481\\-155.9528\\7\\-75.0955\\-154.7396\\7\\-74.49497\\-153.5522\\7\\-72.54185\\-151.2259\\7\\-70.58872\\-150.9998\\7\\-69.79865\\-152.7865\\7\\-69.46192\\-154.7396\\7\\-68.27878\\-156.6928\\7\\-67.4649\\-158.6459\\7\\-66.47077\\-160.599\\7\\-66.19419\\-164.5053\\7\\-66.18563\\-166.4584\\7\\-65.8627\\-170.3646\\7\\-65.46965\\-172.3178\\7\\-64.48186\\-174.2709\\7\\-64.30398\\-176.224\\7\\-64.27637\\-184.0365\\7\\-63.85759\\-185.9896\\7\\-63.6534\\-187.9428\\7\\-63.64954\\-189.8959\\7\\-63.08019\\-191.849\\7\\-62.34154\\-193.8021\\7\\-61.96994\\-195.7553\\7\\-61.79966\\-197.7084\\7\\-62.77623\\-198.7252\\7\\-66.68247\\-200.7211\\7\\-68.6356\\-201.56\\7\\-70.58872\\-202.7197\\7\\-72.54185\\-202.7573\\7\\-73.9843\\-203.5678\\7\\-75.90089\\-205.5209\\7\\-76.4481\\-205.9385\\7\\-78.40122\\-206.6093\\7\\-80.35435\\-208.3945\\7\\-82.30747\\-210.0097\\7\\-83.38914\\-211.3803\\7\\-84.2606\\-212.8414\\7\\-86.21372\\-214.4032\\7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "126"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "394"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.182476\\-183.8035\\7\\-5.037658\\-182.0834\\7\\-5.527342\\-180.1303\\7\\-5.535071\\-178.1771\\7\\-5.764507\\-176.224\\7\\-6.915818\\-174.2709\\7\\-7.32549\\-172.3178\\7\\-7.312359\\-170.3646\\7\\-7.439473\\-168.4115\\7\\-7.975172\\-166.4584\\7\\-8.868942\\-164.5053\\7\\-10.04185\\-163.0274\\7\\-11.99498\\-164.2306\\7\\-14.02852\\-166.4584\\7\\-15.90123\\-167.3282\\7\\-19.80748\\-167.3577\\7\\-21.8628\\-168.4115\\7\\-23.71373\\-169.2034\\7\\-29.5731\\-169.2074\\7\\-33.47935\\-169.3076\\7\\-35.43248\\-170.553\\7\\-37.3856\\-171.1336\\7\\-41.29185\\-171.1336\\7\\-43.24498\\-171.0824\\7\\-45.1981\\-170.6794\\7\\-47.15123\\-169.5614\\7\\-49.10435\\-167.8079\\7\\-50.20853\\-166.4584\\7\\-51.30496\\-164.5053\\7\\-51.67054\\-162.5521\\7\\-53.0106\\-160.8168\\7\\-54.96373\\-161.3162\\7\\-55.74609\\-160.599\\7\\-55.59849\\-158.6459\\7\\-54.28371\\-156.6928\\7\\-53.54998\\-154.7396\\7\\-52.33656\\-152.7865\\7\\-51.05748\\-151.4643\\7\\-49.10435\\-149.9707\\7\\-47.15123\\-148.6565\\7\\-45.1981\\-147.8239\\7\\-43.92923\\-146.9271\\7\\-41.46073\\-144.974\\7\\-40.30947\\-143.0209\\7\\-40.84525\\-141.0678\\7\\-41.29185\\-140.4865\\7\\-43.24498\\-139.9008\\7\\-45.1981\\-139.9145\\7\\-47.15123\\-138.7381\\7\\-50.98317\\-137.1615\\7\\-52.52232\\-135.2084\\7\\-53.0106\\-134.8693\\7\\-53.6366\\-135.2084\\7\\-54.96373\\-135.5489\\7\\-56.91685\\-134.193\\7\\-58.86998\\-135.8354\\7\\-60.04876\\-137.1615\\7\\-60.64619\\-139.1146\\7\\-62.77623\\-141.1935\\7\\-64.72935\\-141.8996\\7\\-66.68247\\-141.4307\\7\\-67.03584\\-141.0678\\7\\-67.5247\\-139.1146\\7\\-68.6356\\-137.1444\\7\\-69.23862\\-135.2084\\7\\-69.18491\\-131.3021\\7\\-68.6356\\-129.4064\\7\\-67.75818\\-127.3959\\7\\-67.33523\\-125.4428\\7\\-66.68247\\-123.5917\\7\\-65.71111\\-121.5365\\7\\-65.39565\\-119.5834\\7\\-63.61245\\-117.6303\\7\\-62.77623\\-116.9214\\7\\-60.8231\\-116.3756\\7\\-58.86998\\-116.1688\\7\\-56.91685\\-116.7729\\7\\-54.96373\\-116.8966\\7\\-53.0106\\-117.8541\\7\\-51.05748\\-118.7036\\7\\-49.68598\\-119.5834\\7\\-49.10435\\-120.2426\\7\\-47.15123\\-120.5599\\7\\-46.4394\\-121.5365\\7\\-45.1981\\-122.5319\\7\\-43.24498\\-122.1931\\7\\-41.29185\\-122.5755\\7\\-37.3856\\-123.1967\\7\\-34.96163\\-125.4428\\7\\-34.55678\\-127.3959\\7\\-35.02097\\-129.349\\7\\-37.3856\\-131.8682\\7\\-38.50814\\-133.2553\\7\\-38.79161\\-135.2084\\7\\-40.19159\\-137.1615\\7\\-39.33873\\-138.0624\\7\\-38.59905\\-139.1146\\7\\-37.3856\\-140.3716\\7\\-35.43248\\-141.6837\\7\\-33.47935\\-141.8824\\7\\-31.52623\\-141.1212\\7\\-29.58446\\-139.1146\\7\\-27.61998\\-138.1302\\7\\-25.66685\\-138.0319\\7\\-23.71373\\-136.5087\\7\\-21.7606\\-136.1739\\7\\-20.81058\\-137.1615\\7\\-22.15733\\-139.1146\\7\\-20.77829\\-141.0678\\7\\-19.83054\\-143.0209\\7\\-17.85435\\-144.3167\\7\\-15.90123\\-146.0851\\7\\-13.08643\\-148.8803\\7\\-12.03254\\-150.8334\\7\\-11.65729\\-152.7865\\7\\-10.55233\\-154.7396\\7\\-7.999948\\-156.6928\\7\\-7.040816\\-158.6459\\7\\-5.588048\\-160.599\\7\\-4.454518\\-162.5521\\7\\-3.825655\\-164.5053\\7\\-3.2901\\-168.4115\\7\\-2.512554\\-170.3646\\7\\-2.424664\\-174.2709\\7\\-2.426121\\-180.1303\\7\\-2.5191\\-182.0834\\7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "64"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "395"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "19.25502\\-217.7221\\7\\17.3019\\-216.5036\\7\\15.34877\\-215.8032\\7\\13.39565\\-214.5879\\7\\11.44252\\-213.9139\\7\\10.36528\\-213.3334\\7\\9.489399\\-212.5319\\7\\8.840089\\-211.3803\\7\\8.033275\\-209.4271\\7\\7.536274\\-208.8086\\7\\6.893936\\-207.474\\7\\6.859801\\-203.5678\\7\\5.872132\\-201.6146\\7\\3.630024\\-200.3074\\7\\1.676899\\-199.909\\7\\-0.276226\\-199.9545\\7\\-2.229351\\-198.7676\\7\\-3.245571\\-197.7084\\7\\-3.934333\\-195.7553\\7\\-3.127789\\-193.8021\\7\\-2.229351\\-192.3047\\7\\-2.067761\\-193.8021\\7\\-0.276226\\-195.7476\\7\\5.583149\\-195.7476\\7\\7.536274\\-195.85\\7\\9.489399\\-195.3984\\7\\11.44252\\-195.0627\\7\\13.39565\\-194.2832\\7\\15.34877\\-192.6079\\7\\17.3019\\-191.3607\\7\\21.20815\\-190.0103\\7\\23.16127\\-190.0103\\7\\25.1144\\-190.7138\\7\\27.06752\\-191.1629\\7\\28.30631\\-191.849\\7\\29.02065\\-192.4001\\7\\32.9269\\-194.6121\\7\\34.88002\\-196.1842\\7\\36.83315\\-196.7454\\7\\42.69252\\-196.6986\\7\\46.59877\\-196.851\\7\\50.50502\\-197.8967\\7\\52.45815\\-198.543\\7\\53.79414\\-199.6615\\7\\54.97956\\-201.6146\\7\\54.92253\\-203.5678\\7\\54.41127\\-204.3043\\7\\52.45815\\-204.2438\\7\\51.96376\\-203.5678\\7\\50.50502\\-202.4872\\7\\48.5519\\-202.0114\\7\\46.59877\\-202.3742\\7\\44.64565\\-202.5291\\7\\42.69252\\-202.5422\\7\\40.7394\\-202.7788\\7\\39.82666\\-203.5678\\7\\39.51991\\-205.5209\\7\\38.78627\\-207.2975\\7\\36.83315\\-208.9298\\7\\34.32805\\-211.3803\\7\\30.97377\\-214.5541\\7\\29.02065\\-216.4801\\7\\27.06752\\-217.7479\\7\\21.20815\\-217.7728\\7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "396"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-141.8694\\7\\54.41127\\-140.5088\\7\\52.45815\\-139.4156\\7\\52.16122\\-139.1146\\7\\50.50502\\-138.0847\\7\\46.59877\\-139.632\\7\\45.04674\\-139.1146\\7\\42.69252\\-137.5545\\7\\42.46873\\-137.1615\\7\\42.09771\\-135.2084\\7\\40.7394\\-134.4382\\7\\38.78627\\-135.9235\\7\\36.83315\\-136.563\\7\\34.88002\\-137.6584\\7\\32.9269\\-136.6599\\7\\29.16199\\-135.2084\\7\\28.26367\\-133.2553\\7\\27.06752\\-132.1626\\7\\25.00508\\-131.3021\\7\\24.45136\\-129.349\\7\\25.1144\\-128.1139\\7\\25.7404\\-127.3959\\7\\27.06752\\-126.6458\\7\\30.97377\\-125.7996\\7\\32.9269\\-126.2818\\7\\34.88002\\-126.4458\\7\\36.83315\\-126.4368\\7\\40.7394\\-126.0064\\7\\42.69252\\-126.9558\\7\\44.22451\\-125.4428\\7\\44.27866\\-121.5365\\7\\45.54954\\-119.5834\\7\\47.3939\\-117.6303\\7\\47.89914\\-115.6771\\7\\47.26253\\-113.724\\7\\47.98611\\-111.7709\\7\\48.5519\\-111.3308\\7\\50.50502\\-111.1356\\7\\52.45815\\-111.3429\\7\\54.41127\\-112.7413\\7\\55.27044\\-113.724\\7\\56.53878\\-115.6771\\7\\57.36902\\-117.6303\\7\\58.93897\\-119.5834\\7\\59.43876\\-121.5365\\7\\60.91999\\-123.4896\\7\\60.95675\\-125.4428\\7\\61.14258\\-127.3959\\7\\62.43548\\-129.349\\7\\62.81187\\-131.3021\\7\\61.80966\\-133.2553\\7\\62.48286\\-135.2084\\7\\62.99449\\-137.1615\\7\\62.99829\\-139.1146\\7\\62.27676\\-141.0678\\7\\60.27065\\-141.9412\\7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "397"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "73.94253\\-210.4491\\7\\72.74183\\-209.4271\\7\\72.33161\\-207.474\\7\\71.69643\\-205.5209\\7\\71.9894\\-205.1063\\7\\73.94253\\-204.352\\7\\75.36243\\-205.5209\\7\\77.25278\\-207.474\\7\\79.58897\\-209.4271\\7\\77.84878\\-210.7728\\7\\75.89565\\-210.5313\\7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "69"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "398"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "85.66128\\-210.8023\\7\\84.77466\\-209.4271\\7\\83.98997\\-207.474\\7\\81.75503\\-205.3593\\7\\79.8019\\-204.4518\\7\\77.84878\\-202.4357\\7\\75.6515\\-201.6146\\7\\73.94253\\-201.0949\\7\\71.9894\\-200.3884\\7\\71.30856\\-199.6615\\7\\70.03628\\-198.7971\\7\\68.08315\\-198.3143\\7\\65.44643\\-195.7553\\7\\64.97066\\-193.8021\\7\\64.9591\\-191.849\\7\\64.45872\\-189.8959\\7\\63.31356\\-187.9428\\7\\63.11353\\-185.9896\\7\\63.10569\\-184.0365\\7\\62.78571\\-182.0834\\7\\62.01207\\-180.1303\\7\\62.97535\\-178.1771\\7\\63.26627\\-176.224\\7\\63.21342\\-174.2709\\7\\62.65846\\-172.3178\\7\\61.81738\\-170.3646\\7\\61.81738\\-166.4584\\7\\61.95324\\-164.5053\\7\\64.42867\\-162.5521\\7\\65.55272\\-160.599\\7\\65.56809\\-158.6459\\7\\64.77003\\-156.6928\\7\\63.06376\\-154.7396\\7\\63.00357\\-152.7865\\7\\63.44326\\-150.8334\\7\\61.92483\\-148.8803\\7\\62.22377\\-147.3649\\7\\64.1769\\-147.3829\\7\\66.13003\\-148.2452\\7\\67.22636\\-148.8803\\7\\68.08315\\-149.5898\\7\\70.03628\\-151.6591\\7\\72.50031\\-154.7396\\7\\73.94253\\-155.9631\\7\\75.89565\\-157.8038\\7\\79.8019\\-161.6807\\7\\85.66128\\-167.6076\\7\\87.6144\\-169.2962\\7\\88.68813\\-170.3646\\7\\90.36505\\-172.3178\\7\\92.31172\\-174.2709\\7\\93.19195\\-176.224\\7\\94.27769\\-178.1771\\7\\95.98741\\-180.1303\\7\\96.1487\\-182.0834\\7\\96.63982\\-184.0365\\7\\97.38003\\-184.7451\\7\\98.31627\\-185.9896\\7\\98.32523\\-191.849\\7\\97.88829\\-193.8021\\7\\96.54778\\-195.7553\\7\\95.4269\\-197.0555\\7\\94.62789\\-197.7084\\7\\93.43621\\-199.6615\\7\\92.88642\\-205.5209\\7\\92.05715\\-207.474\\7\\90.88274\\-209.4271\\7\\89.56753\\-210.6442\\7\\87.6144\\-211.2739\\7"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "399"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.16685\\-214.3782\\9\\-89.17902\\-213.3334\\9\\-88.52826\\-211.3803\\9\\-88.16685\\-211.0763\\9\\-86.21372\\-210.6419\\9\\-84.2606\\-210.4738\\9\\-83.28941\\-211.3803\\9\\-83.25271\\-213.3334\\9\\-84.2606\\-214.3863\\9\\-86.21372\\-214.9916\\9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "121"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "400"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-82.30747\\-208.3292\\9\\-84.2606\\-206.7979\\9\\-86.21372\\-206.5585\\9\\-88.16685\\-205.9828\\9\\-90.11997\\-204.3694\\9\\-92.0731\\-202.5149\\9\\-94.02622\\-200.9081\\9\\-95.97935\\-200.1411\\9\\-97.93247\\-198.863\\9\\-98.8963\\-197.7084\\9\\-98.68775\\-195.7553\\9\\-98.08333\\-193.8021\\9\\-98.81633\\-191.849\\9\\-99.08444\\-189.8959\\9\\-98.95495\\-187.9428\\9\\-98.65025\\-185.9896\\9\\-96.81705\\-182.0834\\9\\-95.77991\\-180.1303\\9\\-94.57868\\-176.224\\9\\-92.8913\\-174.2709\\9\\-90.92139\\-170.3646\\9\\-87.06573\\-166.4584\\9\\-85.42603\\-164.5053\\9\\-84.64754\\-162.5521\\9\\-83.1932\\-160.599\\9\\-80.35435\\-157.756\\9\\-79.18748\\-156.6928\\9\\-77.24952\\-154.7396\\9\\-76.69559\\-152.7865\\9\\-75.3296\\-150.8334\\9\\-74.96582\\-148.8803\\9\\-74.49497\\-147.9605\\9\\-73.55953\\-146.9271\\9\\-72.54185\\-146.2911\\9\\-71.36423\\-144.974\\9\\-71.18107\\-141.0678\\9\\-71.18846\\-137.1615\\9\\-71.11886\\-133.2553\\9\\-70.65531\\-131.3021\\9\\-69.73932\\-129.349\\9\\-69.29173\\-127.3959\\9\\-68.6356\\-125.4872\\9\\-67.76367\\-123.4896\\9\\-67.38422\\-121.5365\\9\\-66.68247\\-119.7688\\9\\-65.64257\\-117.6303\\9\\-62.77623\\-114.7834\\9\\-60.8231\\-113.1621\\9\\-58.86998\\-112.9993\\9\\-56.91685\\-112.5471\\9\\-54.96373\\-112.7259\\9\\-54.16991\\-113.724\\9\\-54.08911\\-115.6771\\9\\-53.43439\\-117.6303\\9\\-53.0106\\-118.054\\9\\-51.05748\\-117.7966\\9\\-49.10435\\-116.2264\\9\\-47.15123\\-117.3496\\9\\-45.96045\\-119.5834\\9\\-45.1981\\-120.404\\9\\-43.24498\\-121.1018\\9\\-41.29185\\-122.0728\\9\\-39.33873\\-122.1362\\9\\-37.3856\\-122.4654\\9\\-36.03101\\-123.4896\\9\\-33.93464\\-125.4428\\9\\-32.68685\\-127.3959\\9\\-32.29679\\-129.349\\9\\-31.26714\\-131.3021\\9\\-33.08149\\-133.2553\\9\\-35.43248\\-135.4081\\9\\-36.9858\\-137.1615\\9\\-36.32223\\-139.1146\\9\\-35.37989\\-141.0678\\9\\-37.3856\\-142.8181\\9\\-39.33873\\-142.5955\\9\\-41.29185\\-141.9029\\9\\-43.24498\\-141.8077\\9\\-45.1981\\-142.2355\\9\\-47.15123\\-140.6211\\9\\-49.75909\\-139.1146\\9\\-51.05748\\-138.4386\\9\\-53.0106\\-137.8939\\9\\-56.91685\\-137.8694\\9\\-58.67321\\-139.1146\\9\\-60.8231\\-141.2645\\9\\-62.31267\\-143.0209\\9\\-64.1669\\-144.974\\9\\-65.8264\\-146.9271\\9\\-66.01269\\-148.8803\\9\\-66.04694\\-150.8334\\9\\-66.61589\\-152.7865\\9\\-67.71275\\-154.7396\\9\\-67.1216\\-156.6928\\9\\-65.93237\\-158.6459\\9\\-65.84605\\-160.599\\9\\-65.84605\\-166.4584\\9\\-65.47216\\-168.4115\\9\\-64.69179\\-170.3646\\9\\-64.30398\\-174.2709\\9\\-64.30398\\-176.224\\9\\-64.47026\\-180.1303\\9\\-64.48186\\-182.0834\\9\\-65.17324\\-184.0365\\9\\-65.04417\\-185.9896\\9\\-64.29466\\-187.9428\\9\\-64.97684\\-189.8959\\9\\-63.74307\\-193.8021\\9\\-64.72935\\-195.6209\\9\\-66.14899\\-197.7084\\9\\-66.68247\\-198.2051\\9\\-68.6356\\-198.8557\\9\\-70.58872\\-198.8965\\9\\-72.05357\\-199.6615\\9\\-72.54185\\-200.0905\\9\\-74.49497\\-201.0366\\9\\-75.28699\\-201.6146\\9\\-76.4481\\-202.7577\\9\\-77.03513\\-203.5678\\9\\-79.04356\\-205.5209\\9\\-80.35435\\-206.9628\\9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "144"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "401"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "19.25502\\-219.4518\\9\\17.3019\\-218.269\\9\\15.34877\\-217.4266\\9\\13.39565\\-216.3543\\9\\11.44252\\-215.8085\\9\\9.489399\\-214.7558\\9\\7.880472\\-213.3334\\9\\5.583149\\-210.8403\\9\\4.947608\\-209.4271\\9\\4.900552\\-205.5209\\9\\3.95229\\-203.5678\\9\\3.630024\\-203.1748\\9\\2.967176\\-201.6146\\9\\1.676899\\-200.331\\9\\-0.276226\\-199.7836\\9\\-2.229351\\-198.6189\\9\\-3.181253\\-197.7084\\9\\-3.934333\\-195.7553\\9\\-3.127789\\-193.8021\\9\\-3.127789\\-184.0365\\9\\-4.182476\\-182.4855\\9\\-4.485547\\-180.1303\\9\\-4.574386\\-178.1771\\9\\-5.098585\\-176.224\\9\\-6.367447\\-172.3178\\9\\-6.449974\\-170.3646\\9\\-6.966408\\-168.4115\\9\\-8.088726\\-166.6491\\9\\-10.04185\\-165.3312\\9\\-11.49332\\-166.4584\\9\\-12.88338\\-168.4115\\9\\-13.9481\\-170.5143\\9\\-15.90123\\-171.1941\\9\\-17.85435\\-171.232\\9\\-29.5731\\-171.3111\\9\\-31.52623\\-172.3553\\9\\-33.47935\\-173.0266\\9\\-37.3856\\-173.0693\\9\\-41.29185\\-173.0442\\9\\-43.24498\\-172.6848\\9\\-45.1981\\-171.6353\\9\\-47.15123\\-170.8355\\9\\-49.10435\\-169.3019\\9\\-49.95953\\-168.4115\\9\\-51.4143\\-166.4584\\9\\-52.58335\\-164.5053\\9\\-53.0106\\-163.9794\\9\\-54.96373\\-163.2819\\9\\-55.69747\\-162.5521\\9\\-55.97411\\-160.599\\9\\-55.51304\\-158.6459\\9\\-53.84983\\-156.6928\\9\\-52.38963\\-154.7396\\9\\-51.2834\\-152.7865\\9\\-47.88365\\-148.8803\\9\\-47.15123\\-148.1765\\9\\-45.1981\\-147.3165\\9\\-43.24498\\-146.9937\\9\\-41.29185\\-146.243\\9\\-39.33873\\-145.7922\\9\\-37.3856\\-145.7409\\9\\-35.43248\\-145.085\\9\\-33.47935\\-143.647\\9\\-31.52623\\-142.9458\\9\\-30.31894\\-141.0678\\9\\-30.31148\\-139.1146\\9\\-29.5731\\-138.3008\\9\\-27.61998\\-137.8939\\9\\-25.66685\\-137.8633\\9\\-23.71373\\-136.6674\\9\\-21.7606\\-136.1382\\9\\-20.72381\\-137.1615\\9\\-20.74135\\-139.1146\\9\\-21.34466\\-141.0678\\9\\-21.7606\\-141.6859\\9\\-23.30856\\-143.0209\\9\\-21.7606\\-145.0979\\9\\-19.80748\\-145.7995\\9\\-17.85435\\-145.9358\\9\\-15.90123\\-146.4965\\9\\-13.9481\\-148.098\\9\\-13.14861\\-148.8803\\9\\-12.28794\\-150.8334\\9\\-11.62799\\-152.7865\\9\\-10.79806\\-154.7396\\9\\-9.711435\\-156.6928\\9\\-9.14881\\-158.6459\\9\\-7.924354\\-160.599\\9\\-6.135601\\-161.4432\\9\\-4.893168\\-162.5521\\9\\-3.546935\\-164.5053\\9\\-3.120012\\-166.4584\\9\\-2.46671\\-168.4115\\9\\-2.067761\\-170.3646\\9\\-2.067761\\-193.8021\\9\\-0.276226\\-195.7476\\9\\3.630024\\-195.7476\\9\\5.583149\\-195.6605\\9\\7.536274\\-195.1555\\9\\9.489399\\-194.4662\\9\\11.44252\\-193.9131\\9\\13.39565\\-192.8925\\9\\15.34877\\-191.3694\\9\\17.3019\\-190.6617\\9\\19.25502\\-189.8011\\9\\21.20815\\-189.4895\\9\\23.16127\\-189.4895\\9\\27.06752\\-190.0501\\9\\29.02065\\-190.7621\\9\\30.97377\\-192.35\\9\\32.9269\\-193.3582\\9\\34.88002\\-194.5346\\9\\36.83315\\-193.958\\9\\38.78627\\-193.1326\\9\\40.7394\\-193.0736\\9\\44.64565\\-193.1195\\9\\46.13219\\-193.8021\\9\\48.5519\\-196.0013\\9\\50.50502\\-196.7502\\9\\52.45815\\-197.2288\\9\\54.41127\\-198.5184\\9\\55.80938\\-199.6615\\9\\58.31752\\-202.3471\\9\\59.11653\\-203.5678\\9\\58.31752\\-204.7345\\9\\56.3644\\-204.4216\\9\\54.41127\\-205.0706\\9\\52.45815\\-203.2818\\9\\50.50502\\-202.5036\\9\\48.5519\\-202.611\\9\\47.43665\\-203.5678\\9\\47.35645\\-205.5209\\9\\46.59877\\-207.1897\\9\\44.34047\\-209.4271\\9\\40.7394\\-211.1063\\9\\40.4621\\-211.3803\\9\\36.83315\\-212.929\\9\\36.42459\\-213.3334\\9\\34.88002\\-214.2914\\9\\33.05181\\-215.2865\\9\\30.97377\\-216.6318\\9\\29.02065\\-218.5484\\9\\27.06752\\-219.681\\9\\21.20815\\-219.6896\\9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "402"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "75.89565\\-208.741\\9\\73.94253\\-207.8181\\9\\73.62833\\-207.474\\9\\71.9894\\-206.4715\\9\\70.99101\\-205.5209\\9\\71.9894\\-204.2444\\9\\73.94253\\-203.7042\\9\\75.89565\\-204.5341\\9\\78.55679\\-207.474\\9\\77.85884\\-209.4271\\9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "130"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "403"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "85.66128\\-212.1512\\9\\84.98519\\-211.3803\\9\\84.61135\\-207.474\\9\\81.75503\\-204.7387\\9\\80.19128\\-203.5678\\9\\77.84878\\-201.0527\\9\\75.89565\\-200.6426\\9\\73.94253\\-200.0244\\9\\71.9894\\-198.5004\\9\\68.08315\\-196.1475\\9\\67.69093\\-195.7553\\9\\66.90614\\-193.8021\\9\\66.87\\-191.849\\9\\65.70863\\-189.8959\\9\\65.00914\\-187.9428\\9\\64.91552\\-185.9896\\9\\64.46987\\-184.0365\\9\\63.24787\\-182.0834\\9\\62.9598\\-178.1771\\9\\63.28798\\-174.2709\\9\\63.02322\\-172.3178\\9\\61.81738\\-170.3646\\9\\61.83683\\-166.4584\\9\\62.81439\\-164.5053\\9\\64.1769\\-163.5073\\9\\65.23405\\-162.5521\\9\\65.56036\\-160.599\\9\\65.32447\\-158.6459\\9\\64.1769\\-157.3818\\9\\62.22377\\-155.6831\\9\\61.42477\\-154.7396\\9\\60.17299\\-152.7865\\9\\59.52069\\-150.8334\\9\\59.45595\\-148.8803\\9\\58.31752\\-147.2318\\9\\56.0904\\-144.974\\9\\55.30812\\-143.0209\\9\\54.41127\\-142.2408\\9\\52.45815\\-141.8816\\9\\50.50502\\-141.2996\\9\\48.5519\\-140.866\\9\\46.59877\\-141.8583\\9\\44.64565\\-141.7346\\9\\42.69252\\-139.9935\\9\\40.7394\\-137.7251\\9\\38.78627\\-137.8819\\9\\34.88002\\-138.0898\\9\\32.9269\\-138.0029\\9\\30.97377\\-137.804\\9\\27.60607\\-135.2084\\9\\27.06752\\-134.6271\\9\\25.1144\\-133.5027\\9\\23.16127\\-131.8641\\9\\21.99167\\-131.3021\\9\\22.10798\\-129.349\\9\\23.16127\\-128.5343\\9\\25.1144\\-127.7903\\9\\27.06752\\-127.5703\\9\\29.02065\\-126.6257\\9\\30.97377\\-126.3093\\9\\34.85783\\-127.3959\\9\\36.83315\\-127.2605\\9\\38.78627\\-126.4809\\9\\40.7394\\-125.8867\\9\\42.39956\\-127.3959\\9\\42.69252\\-127.8585\\9\\43.34842\\-127.3959\\9\\44.22186\\-125.4428\\9\\44.22971\\-123.4896\\9\\44.35268\\-121.5365\\9\\44.82129\\-119.5834\\9\\46.01826\\-117.6303\\9\\46.77829\\-115.6771\\9\\46.4767\\-113.724\\9\\46.51801\\-109.8178\\9\\47.97943\\-107.8646\\9\\48.5519\\-107.5391\\9\\50.50502\\-107.6289\\9\\52.45815\\-108.9115\\9\\54.95647\\-111.7709\\9\\56.5882\\-113.724\\9\\57.52672\\-115.6771\\9\\59.0997\\-117.6303\\9\\60.50637\\-119.5834\\9\\61.18586\\-121.5365\\9\\62.39816\\-123.4896\\9\\62.95248\\-125.4428\\9\\63.01364\\-127.3959\\9\\63.40923\\-129.349\\9\\64.1769\\-131.3268\\9\\63.12899\\-133.2553\\9\\63.91991\\-135.2084\\9\\64.92694\\-137.1615\\9\\64.93475\\-139.1146\\9\\65.46495\\-141.0678\\9\\66.13003\\-141.7956\\9\\66.83209\\-143.0209\\9\\67.38811\\-144.974\\9\\68.08315\\-145.6391\\9\\70.03628\\-147.9319\\9\\70.59039\\-148.8803\\9\\71.30976\\-150.8334\\9\\72.60369\\-152.7865\\9\\73.3438\\-154.7396\\9\\75.20347\\-156.6928\\9\\79.8019\\-161.3752\\9\\80.82186\\-162.5521\\9\\83.70815\\-165.6338\\9\\85.66128\\-167.6076\\9\\87.6144\\-168.6262\\9\\89.01507\\-170.3646\\9\\90.36505\\-172.3178\\9\\92.31172\\-174.2709\\9\\93.47378\\-176.9001\\9\\94.80545\\-180.1303\\9\\95.22746\\-182.0834\\9\\96.52617\\-185.9896\\9\\96.49952\\-191.849\\9\\96.38821\\-193.8021\\9\\95.4269\\-195.5768\\9\\93.47378\\-198.4803\\9\\92.82444\\-199.6615\\9\\92.84525\\-201.6146\\9\\93.18081\\-203.5678\\9\\93.18081\\-205.5209\\9\\92.59714\\-207.474\\9\\92.16998\\-209.4271\\9\\91.52065\\-210.2485\\9\\89.56753\\-211.6277\\9\\87.6144\\-212.4301\\9"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "144"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "404"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.16685\\-215.4609\\11\\-89.73811\\-213.3334\\11\\-88.93459\\-211.3803\\11\\-88.16685\\-210.7378\\11\\-84.97777\\-209.4271\\11\\-83.98716\\-207.474\\11\\-86.21372\\-205.8659\\11\\-88.16685\\-204.8413\\11\\-90.11997\\-204.5914\\11\\-92.0731\\-203.9863\\11\\-94.02622\\-202.2603\\11\\-96.50832\\-199.6615\\11\\-97.3269\\-197.7084\\11\\-97.85171\\-195.7553\\11\\-97.21999\\-191.849\\11\\-98.12217\\-189.8959\\11\\-98.64404\\-187.9428\\11\\-97.10126\\-184.0365\\11\\-96.62868\\-182.0834\\11\\-94.02622\\-176.2345\\11\\-92.8913\\-174.2709\\11\\-90.92139\\-170.3646\\11\\-87.07132\\-166.4584\\11\\-85.63642\\-164.5053\\11\\-85.04087\\-162.5521\\11\\-83.28403\\-160.599\\11\\-81.42473\\-158.6459\\11\\-80.35435\\-157.2124\\11\\-79.82538\\-156.6928\\11\\-78.84512\\-154.7396\\11\\-77.443\\-152.7865\\11\\-77.1307\\-150.8334\\11\\-76.69559\\-148.8803\\11\\-75.48679\\-146.9271\\11\\-74.56156\\-143.0209\\11\\-73.44824\\-141.0678\\11\\-73.14159\\-139.1146\\11\\-73.10378\\-137.1615\\11\\-72.25989\\-133.2553\\11\\-71.63853\\-131.3021\\11\\-71.25157\\-129.349\\11\\-70.66949\\-127.3959\\11\\-69.72794\\-125.4428\\11\\-69.34361\\-123.4896\\11\\-68.6356\\-121.6265\\11\\-67.68321\\-119.5834\\11\\-65.65255\\-115.6771\\11\\-64.72935\\-114.6715\\11\\-60.8231\\-110.9007\\11\\-58.86998\\-109.5703\\11\\-56.91685\\-109.6183\\11\\-55.12368\\-111.7709\\11\\-54.62947\\-113.724\\11\\-54.5769\\-115.6771\\11\\-54.1465\\-117.6303\\11\\-53.36742\\-119.5834\\11\\-53.0106\\-120.743\\11\\-51.96033\\-119.5834\\11\\-51.05748\\-119.0575\\11\\-50.37746\\-117.6303\\11\\-49.10435\\-116.5199\\11\\-47.15123\\-116.8308\\11\\-45.1981\\-118.7352\\11\\-43.24498\\-120.2286\\11\\-41.29185\\-120.8162\\11\\-37.3856\\-120.894\\11\\-35.43248\\-122.1634\\11\\-32.58228\\-123.4896\\11\\-31.52623\\-124.3005\\11\\-30.78675\\-125.4428\\11\\-30.56243\\-127.3959\\11\\-29.5731\\-128.8655\\11\\-27.77671\\-131.3021\\11\\-28.42869\\-133.2553\\11\\-29.5731\\-133.7046\\11\\-33.47935\\-136.5131\\11\\-34.19198\\-137.1615\\11\\-33.47935\\-138.0213\\11\\-31.52623\\-138.2097\\11\\-29.5731\\-137.7363\\11\\-27.61998\\-137.6498\\11\\-25.66685\\-137.783\\11\\-23.71373\\-137.8109\\11\\-21.7606\\-137.6997\\11\\-20.22342\\-139.1146\\11\\-20.87008\\-141.0678\\11\\-21.7606\\-142.0213\\11\\-23.48348\\-143.0209\\11\\-23.71373\\-143.2856\\11\\-25.66685\\-143.4595\\11\\-27.61998\\-143.4595\\11\\-31.52623\\-143.6303\\11\\-33.47935\\-142.2492\\11\\-35.43248\\-142.2345\\11\\-37.3856\\-142.9401\\11\\-39.33873\\-142.8988\\11\\-41.29185\\-142.2332\\11\\-45.1981\\-143.9544\\11\\-47.1024\\-143.0209\\11\\-48.05736\\-141.0678\\11\\-49.10435\\-140.0868\\11\\-51.05748\\-139.951\\11\\-53.0106\\-140.757\\11\\-54.96373\\-141.1945\\11\\-56.91685\\-139.9866\\11\\-58.24131\\-141.0678\\11\\-60.01615\\-143.0209\\11\\-60.56044\\-144.974\\11\\-62.11594\\-146.9271\\11\\-62.77623\\-148.715\\11\\-63.97474\\-150.8334\\11\\-64.22404\\-152.7865\\11\\-65.35347\\-154.7396\\11\\-65.50719\\-156.6928\\11\\-64.72172\\-158.6459\\11\\-64.72172\\-166.4584\\11\\-64.51765\\-170.3646\\11\\-64.50555\\-176.224\\11\\-65.26254\\-178.1771\\11\\-65.61507\\-180.1303\\11\\-65.61507\\-182.0834\\11\\-65.87681\\-184.0365\\11\\-65.87854\\-185.9896\\11\\-65.63986\\-187.9428\\11\\-66.2477\\-189.8959\\11\\-67.36064\\-191.849\\11\\-67.3735\\-193.8021\\11\\-67.74988\\-195.7553\\11\\-68.6356\\-196.5893\\11\\-70.58872\\-196.8594\\11\\-72.54185\\-196.9646\\11\\-73.80848\\-197.7084\\11\\-74.49497\\-198.4232\\11\\-75.20996\\-199.6615\\11\\-77.41924\\-201.6146\\11\\-78.96316\\-203.5678\\11\\-79.48978\\-205.5209\\11\\-80.35435\\-206.4314\\11\\-82.30747\\-208.1301\\11\\-83.95663\\-209.4271\\11\\-82.97111\\-211.3803\\11\\-83.12363\\-213.3334\\11\\-84.2606\\-215.0388\\11\\-86.21372\\-216.0069\\11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "132"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "405"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "17.3019\\-219.4967\\11\\15.34877\\-218.3028\\11\\11.44252\\-216.8875\\11\\7.536274\\-215.9008\\11\\6.252478\\-215.2865\\11\\5.583149\\-214.7298\\11\\3.141743\\-211.3803\\11\\2.934593\\-209.4271\\11\\2.928273\\-207.474\\11\\2.594985\\-205.5209\\11\\1.124444\\-203.5678\\11\\0.918452\\-201.6146\\11\\-0.276226\\-200.3628\\11\\-3.181253\\-197.7084\\11\\-3.934333\\-195.7553\\11\\-3.127789\\-193.8021\\11\\-3.127789\\-184.0365\\11\\-3.726747\\-182.0834\\11\\-4.182476\\-181.9843\\11\\-4.845324\\-180.1303\\11\\-5.101333\\-178.1771\\11\\-5.192569\\-176.224\\11\\-5.597382\\-174.2709\\11\\-6.858785\\-170.3646\\11\\-8.088726\\-168.8062\\11\\-10.04185\\-167.6463\\11\\-10.76396\\-168.4115\\11\\-11.19699\\-170.3646\\11\\-11.82059\\-172.3178\\11\\-13.9481\\-174.4703\\11\\-15.90123\\-175.0405\\11\\-17.85435\\-175.103\\11\\-21.7606\\-175.103\\11\\-23.71373\\-175.1593\\11\\-27.61998\\-175.4071\\11\\-31.52623\\-175.2407\\11\\-35.43248\\-175.1827\\11\\-37.3856\\-175.076\\11\\-41.29185\\-175.0021\\11\\-43.24498\\-174.0196\\11\\-45.1981\\-173.2025\\11\\-46.5728\\-172.3178\\11\\-49.10435\\-170.0369\\11\\-51.05748\\-167.676\\11\\-53.0106\\-165.7146\\11\\-54.96373\\-165.9658\\11\\-55.7688\\-164.5053\\11\\-55.84177\\-162.5521\\11\\-55.51618\\-160.599\\11\\-54.96373\\-159.8553\\11\\-51.69197\\-154.7396\\11\\-50.05317\\-152.7865\\11\\-47.83761\\-148.8803\\11\\-47.15123\\-148.2016\\11\\-45.1981\\-147.2737\\11\\-41.29185\\-147.0079\\11\\-39.33873\\-146.7897\\11\\-35.43248\\-146.9647\\11\\-31.52623\\-146.7792\\11\\-29.5731\\-147.3716\\11\\-27.61998\\-147.6281\\11\\-23.71373\\-147.6507\\11\\-21.7606\\-147.512\\11\\-19.80748\\-147.5447\\11\\-17.85435\\-147.7784\\11\\-15.90123\\-147.8988\\11\\-13.9481\\-148.975\\11\\-12.67106\\-150.8334\\11\\-11.53301\\-152.7865\\11\\-10.75605\\-154.7396\\11\\-10.20344\\-156.6928\\11\\-9.918877\\-158.6459\\11\\-9.283515\\-160.599\\11\\-8.088726\\-162.2964\\11\\-6.135601\\-163.4776\\11\\-5.153613\\-164.5053\\11\\-2.98999\\-168.4115\\11\\-2.39094\\-170.3646\\11\\-2.067761\\-174.2709\\11\\-2.067761\\-193.8021\\11\\-0.276226\\-195.7476\\11\\3.630024\\-195.5558\\11\\5.583149\\-195.0991\\11\\7.536274\\-194.4476\\11\\9.489399\\-193.272\\11\\11.44252\\-192.9374\\11\\13.39565\\-192.4947\\11\\15.34877\\-190.9173\\11\\17.3019\\-189.8437\\11\\19.25502\\-189.2816\\11\\21.20815\\-189.0851\\11\\23.16127\\-189.0696\\11\\25.1144\\-189.2744\\11\\27.06752\\-189.6484\\11\\29.02065\\-189.8732\\11\\30.97377\\-191.0556\\11\\32.9269\\-192.5933\\11\\34.88002\\-192.9357\\11\\36.8712\\-191.849\\11\\38.78627\\-191.081\\11\\40.7394\\-189.8437\\11\\42.69252\\-189.8293\\11\\44.64565\\-190.9372\\11\\46.59877\\-191.1258\\11\\48.4315\\-191.849\\11\\50.76396\\-193.8021\\11\\52.35939\\-195.7553\\11\\56.3644\\-198.4839\\11\\58.31752\\-200.262\\11\\60.90619\\-203.5678\\11\\60.27065\\-204.4777\\11\\59.23535\\-205.5209\\11\\58.31752\\-206.1668\\11\\57.59946\\-205.5209\\11\\56.3644\\-204.0423\\11\\54.41127\\-202.7896\\11\\52.22418\\-203.5678\\11\\50.50502\\-206.7721\\11\\48.5519\\-209.0831\\11\\46.23668\\-211.3803\\11\\43.72949\\-213.3334\\11\\42.69252\\-213.8985\\11\\40.7394\\-214.2021\\11\\38.55117\\-215.2865\\11\\36.83315\\-215.8167\\11\\34.88002\\-215.9883\\11\\32.9269\\-216.7547\\11\\30.28882\\-219.1928\\11\\29.02065\\-220.139\\11\\27.06752\\-220.6021\\11\\21.20815\\-220.6021\\11\\19.25502\\-220.2104\\11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "406"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "73.94253\\-206.3512\\11\\71.9894\\-204.7855\\11\\70.70183\\-203.5678\\11\\71.9894\\-202.567\\11\\73.94253\\-202.8184\\11\\75.89565\\-203.9512\\11\\76.8251\\-205.5209\\11\\75.89565\\-206.6664\\11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "125"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "407"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "87.6144\\-213.5691\\11\\85.66128\\-212.1205\\11\\85.03983\\-211.3803\\11\\84.95953\\-209.4271\\11\\84.65392\\-207.474\\11\\80.67241\\-203.5678\\11\\78.91703\\-201.6146\\11\\77.84878\\-200.2272\\11\\75.89565\\-198.617\\11\\73.94253\\-197.3829\\11\\71.9894\\-196.7372\\11\\70.87246\\-195.7553\\11\\69.3879\\-193.8021\\11\\68.23176\\-189.8959\\11\\67.04948\\-187.9428\\11\\66.37751\\-185.9896\\11\\65.2443\\-184.0365\\11\\64.98492\\-182.0834\\11\\64.51518\\-180.1303\\11\\63.29355\\-178.1771\\11\\63.21235\\-176.224\\11\\63.24436\\-174.2709\\11\\63.03911\\-172.3178\\11\\62.08834\\-170.3646\\11\\61.86695\\-166.4584\\11\\64.1769\\-164.2347\\11\\65.46053\\-162.5521\\11\\65.314\\-160.599\\11\\64.1769\\-159.0426\\11\\61.70949\\-156.6928\\11\\59.92952\\-154.7396\\11\\58.95893\\-152.7865\\11\\56.3644\\-148.9517\\11\\52.37221\\-144.974\\11\\50.50502\\-143.2949\\11\\48.5519\\-142.4374\\11\\46.59877\\-143.6874\\11\\44.64565\\-142.4316\\11\\42.69252\\-140.484\\11\\40.7394\\-139.9402\\11\\38.78627\\-139.7743\\11\\36.83315\\-139.9094\\11\\34.88002\\-140.2096\\11\\32.9269\\-139.8208\\11\\30.97377\\-138.5657\\11\\29.02065\\-137.409\\11\\27.06752\\-135.9348\\11\\25.1144\\-135.4559\\11\\23.16127\\-134.4065\\11\\22.30825\\-133.2553\\11\\20.16333\\-131.3021\\11\\21.02596\\-129.349\\11\\23.16127\\-128.2673\\11\\25.1144\\-127.8667\\11\\27.06752\\-128.1649\\11\\29.1268\\-127.3959\\11\\30.97377\\-126.8902\\11\\32.9269\\-127.6777\\11\\34.88002\\-127.1484\\11\\36.83315\\-126.7534\\11\\40.7394\\-125.8297\\11\\42.08547\\-127.3959\\11\\42.69252\\-128.5419\\11\\43.91323\\-127.3959\\11\\44.35803\\-125.4428\\11\\44.51021\\-123.4896\\11\\45.3913\\-121.5365\\11\\45.57636\\-119.5834\\11\\46.77316\\-117.6303\\11\\47.50624\\-115.6771\\11\\47.46832\\-113.724\\11\\45.82586\\-109.8178\\11\\45.28569\\-107.8646\\11\\46.11049\\-105.9115\\11\\46.59877\\-105.5445\\11\\48.5519\\-105.4956\\11\\50.50502\\-106.1792\\11\\52.45815\\-107.3701\\11\\54.59827\\-109.8178\\11\\55.71907\\-111.7709\\11\\58.31752\\-114.6295\\11\\60.57461\\-117.6303\\11\\61.35305\\-119.5834\\11\\62.99245\\-121.5365\\11\\63.19605\\-123.4896\\11\\64.21446\\-125.4428\\11\\64.89133\\-127.3959\\11\\65.10439\\-129.349\\11\\65.47327\\-131.3021\\11\\65.98781\\-133.2553\\11\\66.76855\\-135.2084\\11\\67.01118\\-139.1146\\11\\68.08315\\-141.1776\\11\\68.9455\\-143.0209\\11\\72.04158\\-148.8803\\11\\72.98171\\-150.8334\\11\\74.09113\\-152.7865\\11\\74.93484\\-154.7396\\11\\76.54481\\-156.6928\\11\\80.45811\\-160.599\\11\\82.01411\\-162.5521\\11\\82.82481\\-164.5053\\11\\85.66128\\-167.5655\\11\\87.707\\-168.4115\\11\\89.56753\\-171.0695\\11\\90.36505\\-172.3178\\11\\92.31172\\-174.2709\\11\\93.18081\\-176.224\\11\\93.32516\\-178.1771\\11\\94.36733\\-180.1303\\11\\94.73785\\-182.0834\\11\\94.79837\\-184.0365\\11\\95.40419\\-185.9896\\11\\94.80545\\-187.9428\\11\\94.83655\\-189.8959\\11\\94.24107\\-193.8021\\11\\94.07971\\-195.7553\\11\\93.29939\\-197.7084\\11\\92.71788\\-199.6615\\11\\92.74136\\-201.6146\\11\\93.18081\\-203.5678\\11\\93.18081\\-205.5209\\11\\92.93317\\-209.4271\\11\\91.65453\\-211.3803\\11\\89.56753\\-212.5843\\11"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "160"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "408"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-88.16685\\-216.3311\\13\\-89.53915\\-215.2865\\13\\-90.59082\\-213.3334\\13\\-89.05895\\-211.3803\\13\\-87.0754\\-209.4271\\13\\-86.32387\\-207.474\\13\\-88.16685\\-205.9128\\13\\-90.11997\\-204.9747\\13\\-92.0731\\-204.5399\\13\\-93.1522\\-203.5678\\13\\-94.85468\\-201.6146\\13\\-96.00206\\-199.6615\\13\\-96.91049\\-197.7084\\13\\-97.61766\\-195.7553\\13\\-97.15976\\-193.8021\\13\\-96.88828\\-191.849\\13\\-97.17786\\-189.8959\\13\\-97.83774\\-187.9428\\13\\-97.60696\\-185.9896\\13\\-96.87308\\-184.0365\\13\\-95.97172\\-182.0834\\13\\-95.75555\\-180.1303\\13\\-94.02622\\-176.3165\\13\\-91.8614\\-172.3178\\13\\-90.92139\\-170.3646\\13\\-88.16685\\-167.5872\\13\\-87.13763\\-166.4584\\13\\-85.78835\\-164.5053\\13\\-85.21065\\-162.5521\\13\\-83.4204\\-160.599\\13\\-82.67682\\-158.6459\\13\\-82.30747\\-158.2159\\13\\-80.35435\\-155.2547\\13\\-79.87233\\-154.7396\\13\\-79.1455\\-152.7865\\13\\-78.67176\\-150.8334\\13\\-77.443\\-148.8803\\13\\-77.1623\\-146.9271\\13\\-76.70719\\-144.974\\13\\-75.49985\\-143.0209\\13\\-75.19672\\-141.0678\\13\\-74.76551\\-139.1146\\13\\-74.10563\\-137.1615\\13\\-73.55544\\-135.2084\\13\\-73.30915\\-133.2553\\13\\-72.87794\\-131.3021\\13\\-72.14493\\-129.349\\13\\-71.61246\\-127.3959\\13\\-71.28416\\-125.4428\\13\\-70.64091\\-123.4896\\13\\-68.71637\\-119.5834\\13\\-66.73466\\-115.6771\\13\\-65.64188\\-113.724\\13\\-64.72935\\-112.8262\\13\\-63.33723\\-111.7709\\13\\-60.8231\\-109.4795\\13\\-58.86998\\-108.672\\13\\-56.91685\\-108.9622\\13\\-55.92995\\-109.8178\\13\\-55.25669\\-111.7709\\13\\-55.22281\\-115.6771\\13\\-54.94084\\-117.6303\\13\\-54.15158\\-119.5834\\13\\-53.81084\\-121.5365\\13\\-53.63205\\-123.4896\\13\\-53.13267\\-125.4428\\13\\-52.94611\\-127.3959\\13\\-52.92065\\-129.349\\13\\-51.05748\\-131.2888\\13\\-50.33502\\-129.349\\13\\-50.09035\\-127.3959\\13\\-49.36244\\-123.4896\\13\\-50.27523\\-121.5365\\13\\-50.83368\\-119.5834\\13\\-49.44373\\-117.6303\\13\\-49.10435\\-117.3091\\13\\-47.15123\\-117.1449\\13\\-45.1981\\-118.4603\\13\\-43.24498\\-118.7099\\13\\-41.29185\\-119.3596\\13\\-39.33873\\-120.2432\\13\\-37.54358\\-119.5834\\13\\-37.23214\\-119.5834\\13\\-35.43248\\-120.3288\\13\\-29.72682\\-123.4896\\13\\-27.61998\\-124.8857\\13\\-25.66685\\-125.0789\\13\\-24.07645\\-125.4428\\13\\-21.7606\\-126.6311\\13\\-19.80748\\-126.6311\\13\\-17.85435\\-126.9113\\13\\-17.22587\\-127.3959\\13\\-15.90123\\-129.3881\\13\\-17.85435\\-130.0786\\13\\-19.80748\\-130.5697\\13\\-20.65383\\-131.3021\\13\\-21.7606\\-131.7006\\13\\-24.26936\\-133.2553\\13\\-27.61998\\-134.4987\\13\\-28.70815\\-135.2084\\13\\-27.61998\\-135.9701\\13\\-25.66685\\-137.6054\\13\\-23.71373\\-138.1339\\13\\-21.7606\\-138.4294\\13\\-21.07158\\-139.1146\\13\\-21.39126\\-141.0678\\13\\-21.7606\\-141.4468\\13\\-23.71373\\-142.3994\\13\\-25.66685\\-143.1156\\13\\-27.61998\\-143.2914\\13\\-29.5731\\-143.8454\\13\\-31.52623\\-144.0401\\13\\-33.47935\\-143.7242\\13\\-35.43248\\-142.3648\\13\\-37.3856\\-142.1946\\13\\-39.33873\\-142.2206\\13\\-41.29185\\-142.524\\13\\-43.24498\\-144.0813\\13\\-45.1981\\-144.9663\\13\\-47.15123\\-144.2375\\13\\-48.35439\\-143.0209\\13\\-49.10435\\-141.8089\\13\\-50.04762\\-141.0678\\13\\-51.05748\\-140.5481\\13\\-53.0106\\-142.4204\\13\\-54.96373\\-143.3716\\13\\-56.91685\\-143.4921\\13\\-58.17825\\-144.974\\13\\-59.52766\\-146.9271\\13\\-61.98277\\-150.8334\\13\\-62.66772\\-152.7865\\13\\-63.85582\\-154.7396\\13\\-64.04031\\-156.6928\\13\\-64.32295\\-162.5521\\13\\-64.41454\\-166.4584\\13\\-65.24303\\-168.4115\\13\\-65.61507\\-170.3646\\13\\-65.66743\\-176.224\\13\\-66.36374\\-178.1771\\13\\-66.95301\\-180.1303\\13\\-66.97741\\-182.0834\\13\\-67.51588\\-184.0365\\13\\-67.46042\\-187.9428\\13\\-68.2405\\-189.8959\\13\\-68.6356\\-190.4407\\13\\-70.41212\\-193.8021\\13\\-72.54185\\-194.8723\\13\\-74.49497\\-195.9913\\13\\-76.4481\\-198.1486\\13\\-77.46783\\-199.6615\\13\\-79.05735\\-201.6146\\13\\-79.49187\\-203.5678\\13\\-81.07314\\-205.5209\\13\\-81.50352\\-207.474\\13\\-82.53339\\-209.4271\\13\\-83.10648\\-211.3803\\13\\-83.42419\\-213.3334\\13\\-83.87366\\-215.2865\\13\\-84.2606\\-215.7167\\13\\-86.21372\\-216.7396\\13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "409"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "9.489399\\-131.584\\13\\7.536274\\-130.3194\\13\\5.583149\\-129.7434\\13\\5.196209\\-129.349\\13\\5.583149\\-128.4168\\13\\6.469765\\-127.3959\\13\\7.536274\\-126.9163\\13\\8.933768\\-127.3959\\13\\9.489399\\-127.7351\\13\\11.33663\\-129.349\\13\\11.64196\\-131.3021\\13\\11.44252\\-131.5016\\13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "148"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "410"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "17.3019\\-219.9909\\13\\15.34877\\-218.844\\13\\13.39565\\-218.3167\\13\\11.44252\\-217.9955\\13\\7.536274\\-217.8245\\13\\5.583149\\-216.8744\\13\\3.630024\\-214.9182\\13\\2.808824\\-213.3334\\13\\2.011525\\-211.3803\\13\\0.9145823\\-209.4271\\13\\0.7895203\\-205.5209\\13\\0.4536789\\-203.5678\\13\\-0.8742334\\-201.6146\\13\\-1.418709\\-199.6615\\13\\-3.186284\\-197.7084\\13\\-3.945965\\-195.7553\\13\\-3.469849\\-193.8021\\13\\-3.127789\\-191.849\\13\\-3.127789\\-187.9428\\13\\-3.726747\\-185.9896\\13\\-4.182476\\-185.3682\\13\\-4.290983\\-184.0365\\13\\-4.890484\\-182.0834\\13\\-5.797315\\-178.1771\\13\\-5.923899\\-176.224\\13\\-7.711942\\-172.3178\\13\\-8.088726\\-171.8486\\13\\-10.04185\\-173.7493\\13\\-11.88054\\-176.224\\13\\-13.9481\\-178.4352\\13\\-15.90123\\-178.9937\\13\\-17.85435\\-179.2359\\13\\-19.80748\\-179.0296\\13\\-21.7606\\-179.0084\\13\\-23.71373\\-180.342\\13\\-25.66685\\-180.6185\\13\\-29.5731\\-180.6185\\13\\-31.52623\\-180.2657\\13\\-33.47935\\-179.0016\\13\\-35.43248\\-178.8677\\13\\-37.3856\\-178.2992\\13\\-39.33873\\-177.0975\\13\\-41.29185\\-176.9846\\13\\-43.24498\\-175.8467\\13\\-45.1981\\-175.0511\\13\\-46.22085\\-174.2709\\13\\-48.05844\\-172.3178\\13\\-49.99673\\-170.3646\\13\\-51.69774\\-168.4115\\13\\-53.0106\\-167.4103\\13\\-54.96373\\-167.2947\\13\\-55.74033\\-166.4584\\13\\-55.54424\\-164.5053\\13\\-54.29364\\-162.5521\\13\\-53.98716\\-160.599\\13\\-53.01841\\-158.6459\\13\\-51.73707\\-156.6928\\13\\-51.05748\\-154.877\\13\\-49.8651\\-152.7865\\13\\-47.15123\\-149.2696\\13\\-45.1981\\-147.7989\\13\\-43.24498\\-147.371\\13\\-39.33873\\-147.3525\\13\\-37.3856\\-147.7822\\13\\-35.43248\\-147.9691\\13\\-31.52623\\-148.016\\13\\-29.5731\\-148.371\\13\\-27.61998\\-149.0023\\13\\-23.71373\\-149.0023\\13\\-21.7606\\-148.5012\\13\\-19.80748\\-148.395\\13\\-15.90123\\-149.5295\\13\\-13.9481\\-150.7258\\13\\-11.4195\\-154.7396\\13\\-10.71135\\-156.6928\\13\\-10.21624\\-158.6459\\13\\-9.933344\\-160.599\\13\\-8.99727\\-162.5521\\13\\-7.259236\\-164.5053\\13\\-6.189427\\-166.4584\\13\\-4.182476\\-168.5092\\13\\-3.22873\\-170.3646\\13\\-2.999805\\-172.3178\\13\\-2.403737\\-174.2709\\13\\-2.403737\\-176.224\\13\\-2.067761\\-180.1303\\13\\-2.067761\\-191.849\\13\\-1.925388\\-193.8021\\13\\-0.276226\\-195.5195\\13\\1.676899\\-195.0535\\13\\3.630024\\-194.7545\\13\\5.583149\\-193.9599\\13\\7.536274\\-192.9644\\13\\9.489399\\-192.5722\\13\\11.44252\\-191.9592\\13\\13.39565\\-191.6252\\13\\15.34877\\-190.8123\\13\\17.3019\\-189.6368\\13\\21.20815\\-188.7324\\13\\23.16127\\-188.1713\\13\\25.1144\\-189.0231\\13\\27.06752\\-189.6368\\13\\29.02065\\-189.6602\\13\\30.97377\\-190.6141\\13\\32.9269\\-191.3189\\13\\34.88002\\-191.2784\\13\\36.86761\\-189.8959\\13\\38.78627\\-189.0638\\13\\40.7394\\-187.9052\\13\\42.69252\\-187.3003\\13\\44.64565\\-187.3965\\13\\46.59877\\-187.9052\\13\\48.5519\\-188.9779\\13\\50.50502\\-189.3183\\13\\51.64631\\-189.8959\\13\\53.73674\\-191.849\\13\\54.41127\\-192.6879\\13\\54.91659\\-193.8021\\13\\55.17438\\-195.7553\\13\\56.3644\\-197.0363\\13\\58.31752\\-198.8282\\13\\60.91999\\-201.6146\\13\\61.34531\\-203.5678\\13\\60.97594\\-205.5209\\13\\60.27065\\-206.2407\\13\\58.31752\\-206.734\\13\\57.24286\\-205.5209\\13\\57.46904\\-203.5678\\13\\56.3644\\-202.567\\13\\54.41127\\-202.7669\\13\\53.57035\\-203.5678\\13\\53.12765\\-205.5209\\13\\52.45815\\-206.7579\\13\\50.50502\\-209.5636\\13\\49.42894\\-211.3803\\13\\48.5519\\-212.2409\\13\\46.59877\\-213.3856\\13\\42.69252\\-215.3673\\13\\40.7394\\-215.9883\\13\\38.78627\\-216.2966\\13\\36.83315\\-216.7335\\13\\34.88002\\-217.2918\\13\\32.9269\\-218.2212\\13\\30.97377\\-219.7959\\13\\29.02065\\-220.7344\\13\\27.06752\\-220.8754\\13\\21.20815\\-220.8754\\13\\19.25502\\-220.7274\\13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "136"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "411"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "87.6144\\-214.1497\\13\\86.72513\\-213.3334\\13\\85.09934\\-211.3803\\13\\84.86104\\-209.4271\\13\\84.43317\\-207.474\\13\\82.71524\\-205.5209\\13\\80.73618\\-203.5678\\13\\79.49591\\-201.6146\\13\\78.60432\\-199.6615\\13\\77.84878\\-198.864\\13\\75.89565\\-197.1773\\13\\73.94253\\-196.1445\\13\\73.48249\\-195.7553\\13\\71.8063\\-193.8021\\13\\70.81194\\-191.849\\13\\69.63052\\-189.8959\\13\\68.9047\\-187.9428\\13\\67.68851\\-185.9896\\13\\66.96781\\-184.0365\\13\\66.87486\\-182.0834\\13\\66.13003\\-180.1727\\13\\65.01755\\-178.1771\\13\\64.50893\\-176.224\\13\\63.36609\\-174.2709\\13\\63.14466\\-170.3646\\13\\62.90025\\-168.4115\\13\\61.99998\\-166.4584\\13\\63.84506\\-164.5053\\13\\64.1769\\-164.2646\\13\\65.28219\\-162.5521\\13\\64.1769\\-161.0511\\13\\57.96924\\-154.7396\\13\\57.31605\\-152.7865\\13\\56.3644\\-151.2943\\13\\52.32845\\-146.9271\\13\\50.1257\\-144.974\\13\\48.5519\\-144.0496\\13\\46.59877\\-144.3837\\13\\44.64565\\-143.8733\\13\\43.89712\\-143.0209\\13\\40.7394\\-140.2002\\13\\38.78627\\-139.9659\\13\\36.83315\\-140.1748\\13\\34.88002\\-141.3496\\13\\32.9269\\-140.422\\13\\30.97377\\-139.9025\\13\\29.02065\\-138.1381\\13\\27.06752\\-136.2561\\13\\25.1144\\-135.8509\\13\\23.16127\\-135.6051\\13\\22.75437\\-135.2084\\13\\20.15997\\-133.2553\\13\\19.90778\\-131.3021\\13\\21.20815\\-130.0286\\13\\23.16127\\-128.8096\\13\\25.1144\\-128.2166\\13\\27.06752\\-128.2635\\13\\29.02065\\-128.0984\\13\\30.97377\\-127.6664\\13\\32.9269\\-127.7107\\13\\34.88002\\-126.6301\\13\\36.83315\\-126.0081\\13\\38.78627\\-125.1172\\13\\40.7394\\-125.0081\\13\\41.18219\\-125.4428\\13\\41.74892\\-127.3959\\13\\42.47782\\-129.349\\13\\42.97545\\-129.349\\13\\44.64565\\-127.0161\\13\\45.36444\\-125.4428\\13\\45.59521\\-123.4896\\13\\46.62221\\-121.5365\\13\\47.40599\\-119.5834\\13\\48.5519\\-117.2006\\13\\49.16619\\-115.6771\\13\\48.5519\\-114.2489\\13\\47.12874\\-111.7709\\13\\44.64565\\-108.885\\13\\43.88403\\-107.8646\\13\\43.86165\\-105.9115\\13\\44.64565\\-104.1537\\13\\46.59877\\-103.4875\\13\\48.5519\\-103.5617\\13\\50.50502\\-104.6559\\13\\52.45815\\-106.4886\\13\\56.3644\\-110.5952\\13\\57.23616\\-111.7709\\13\\58.95584\\-113.724\\13\\60.57461\\-115.6771\\13\\61.18567\\-117.6303\\13\\62.9271\\-119.5834\\13\\63.46803\\-121.5365\\13\\64.1769\\-123.4495\\13\\65.17146\\-125.4428\\13\\65.45001\\-127.3959\\13\\65.58873\\-129.349\\13\\66.44484\\-131.3021\\13\\67.1349\\-133.2553\\13\\67.50837\\-135.2084\\13\\68.08315\\-137.1062\\13\\68.84975\\-139.1146\\13\\69.15407\\-141.0678\\13\\70.21066\\-143.0209\\13\\71.10561\\-144.974\\13\\72.22512\\-146.9271\\13\\73.05967\\-148.8803\\13\\74.25734\\-150.8334\\13\\75.01186\\-152.7865\\13\\76.30205\\-154.7396\\13\\77.30021\\-156.6928\\13\\78.92715\\-158.6459\\13\\80.68772\\-160.599\\13\\82.6167\\-162.5521\\13\\83.93195\\-164.5053\\13\\85.03387\\-166.4584\\13\\85.66128\\-167.0965\\13\\87.6144\\-167.9768\\13\\88.09936\\-168.4115\\13\\89.16113\\-170.3646\\13\\90.4174\\-172.3178\\13\\92.31172\\-174.2709\\13\\93.18081\\-176.224\\13\\93.19195\\-178.1771\\13\\94.28349\\-180.1303\\13\\94.65398\\-182.0834\\13\\94.69689\\-185.9896\\13\\94.13015\\-187.9428\\13\\94.06844\\-191.849\\13\\93.55515\\-193.8021\\13\\93.18081\\-197.7084\\13\\93.0484\\-199.6615\\13\\93.18081\\-203.5678\\13\\93.16981\\-209.4271\\13\\92.55202\\-211.3803\\13\\91.52065\\-212.4012\\13\\89.56753\\-213.7483\\13"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "176"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "412"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-90.11997\\-216.2631\\15\\-91.12308\\-215.2865\\15\\-91.28856\\-213.3334\\15\\-88.73223\\-211.3803\\15\\-87.43196\\-209.4271\\15\\-87.33182\\-207.474\\15\\-88.16685\\-206.4632\\15\\-90.11997\\-205.0156\\15\\-92.0731\\-204.8681\\15\\-94.02622\\-203.9128\\15\\-94.36231\\-203.5678\\15\\-95.08379\\-201.6146\\15\\-96.48466\\-199.6615\\15\\-97.61766\\-195.7553\\15\\-97.12798\\-193.8021\\15\\-97.03949\\-191.849\\15\\-97.48588\\-189.8959\\15\\-97.6395\\-187.9428\\15\\-97.59639\\-185.9896\\15\\-96.11478\\-182.0834\\15\\-95.89858\\-180.1303\\15\\-95.10873\\-178.1771\\15\\-94.47012\\-176.224\\15\\-92.9474\\-174.2709\\15\\-90.92139\\-170.3646\\15\\-89.05784\\-168.4115\\15\\-87.3885\\-166.4584\\15\\-86.54981\\-164.5053\\15\\-85.40068\\-162.5521\\15\\-84.47231\\-160.599\\15\\-83.37241\\-158.6459\\15\\-82.54649\\-156.6928\\15\\-81.35719\\-154.7396\\15\\-80.49078\\-152.7865\\15\\-79.36505\\-150.8334\\15\\-78.84512\\-148.8803\\15\\-77.87011\\-146.9271\\15\\-76.90108\\-143.0209\\15\\-76.01475\\-141.0678\\15\\-75.48045\\-139.1146\\15\\-75.05691\\-137.1615\\15\\-74.44239\\-135.2084\\15\\-74.12084\\-133.2553\\15\\-72.46047\\-127.3959\\15\\-72.14747\\-125.4428\\15\\-71.56055\\-123.4896\\15\\-70.58872\\-121.4361\\15\\-68.61271\\-117.6303\\15\\-67.69222\\-115.6771\\15\\-66.68247\\-113.8684\\15\\-64.56396\\-111.7709\\15\\-62.77623\\-110.7446\\15\\-58.86998\\-109.2919\\15\\-57.90403\\-109.8178\\15\\-56.91685\\-110.6995\\15\\-56.22715\\-111.7709\\15\\-55.99509\\-113.724\\15\\-55.76928\\-117.6303\\15\\-55.0858\\-121.5365\\15\\-54.32952\\-123.4896\\15\\-53.18499\\-127.3959\\15\\-53.00156\\-129.349\\15\\-51.05748\\-130.9277\\15\\-49.74522\\-129.349\\15\\-48.96891\\-127.3959\\15\\-49.27874\\-125.4428\\15\\-49.11198\\-123.4896\\15\\-50.09943\\-121.5365\\15\\-50.18571\\-119.5834\\15\\-49.10435\\-118.5475\\15\\-47.15123\\-118.2588\\15\\-45.1981\\-118.4143\\15\\-43.24498\\-118.3898\\15\\-41.29185\\-118.6477\\15\\-39.33873\\-118.7688\\15\\-37.3856\\-118.6606\\15\\-35.43248\\-118.9341\\15\\-33.47935\\-120.6116\\15\\-29.5731\\-121.0146\\15\\-27.61998\\-121.266\\15\\-25.66685\\-121.8262\\15\\-23.71373\\-122.7399\\15\\-21.7606\\-124.5042\\15\\-19.80748\\-124.7164\\15\\-17.85435\\-125.1388\\15\\-15.90123\\-126.777\\15\\-13.9481\\-128.1088\\15\\-11.99498\\-128.379\\15\\-10.04185\\-129.0235\\15\\-8.088726\\-129.2824\\15\\-5.915087\\-129.349\\15\\-4.182476\\-130.659\\15\\-2.229351\\-130.9458\\15\\-0.276226\\-130.7162\\15\\1.005512\\-129.349\\15\\3.630024\\-128.5235\\15\\5.583149\\-126.8186\\15\\7.536274\\-126.7328\\15\\9.489399\\-128.1821\\15\\11.44252\\-129.1734\\15\\13.32477\\-131.3021\\15\\12.89368\\-133.2553\\15\\11.44252\\-134.1131\\15\\9.489399\\-133.3638\\15\\7.536274\\-132.3701\\15\\3.630024\\-132.2787\\15\\1.676899\\-132.0466\\15\\-0.276226\\-131.6491\\15\\-6.135601\\-131.6277\\15\\-10.04185\\-131.5631\\15\\-13.9481\\-131.0336\\15\\-17.85435\\-131.6989\\15\\-19.80748\\-131.773\\15\\-21.7606\\-132.337\\15\\-23.71373\\-133.6806\\15\\-25.66685\\-134.7237\\15\\-26.115\\-135.2084\\15\\-26.33008\\-137.1615\\15\\-26.05885\\-139.1146\\15\\-25.66685\\-140.2743\\15\\-24.78113\\-141.0678\\15\\-29.5731\\-142.8214\\15\\-31.52623\\-143.1258\\15\\-33.47935\\-142.7562\\15\\-34.73396\\-141.0678\\15\\-35.43248\\-140.483\\15\\-37.3856\\-140.6784\\15\\-37.77254\\-141.0678\\15\\-40.69408\\-143.0209\\15\\-41.29185\\-143.5977\\15\\-43.24498\\-144.4915\\15\\-45.1981\\-145.8648\\15\\-47.15123\\-145.6808\\15\\-47.89071\\-144.974\\15\\-49.58653\\-143.0209\\15\\-51.05748\\-141.8615\\15\\-52.34355\\-143.0209\\15\\-53.92696\\-144.974\\15\\-54.96373\\-145.839\\15\\-56.91685\\-146.1626\\15\\-57.58859\\-146.9271\\15\\-58.97236\\-148.8803\\15\\-60.10064\\-150.8334\\15\\-61.48339\\-152.7865\\15\\-62.14769\\-154.7396\\15\\-63.46344\\-156.6928\\15\\-63.83141\\-158.6459\\15\\-63.94535\\-160.599\\15\\-64.29466\\-162.5521\\15\\-64.41454\\-164.5053\\15\\-65.28347\\-166.4584\\15\\-65.85023\\-168.4115\\15\\-66.29309\\-170.3646\\15\\-66.31313\\-172.3178\\15\\-67.0145\\-174.2709\\15\\-67.49352\\-176.224\\15\\-67.84505\\-178.1771\\15\\-67.99007\\-180.1303\\15\\-69.42243\\-184.0365\\15\\-69.58595\\-187.9428\\15\\-70.7642\\-189.8959\\15\\-72.54185\\-191.9543\\15\\-74.49497\\-193.0222\\15\\-75.38474\\-193.8021\\15\\-76.82513\\-195.7553\\15\\-77.62968\\-197.7084\\15\\-79.07072\\-199.6615\\15\\-79.5959\\-201.6146\\15\\-81.07938\\-203.5678\\15\\-81.73017\\-207.474\\15\\-82.98079\\-209.4271\\15\\-83.42805\\-211.3803\\15\\-83.91408\\-215.2865\\15\\-84.2606\\-215.6621\\15\\-86.21372\\-216.9141\\15\\-88.16685\\-216.8602\\15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "145"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "413"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "17.3019\\-220.0581\\15\\15.34877\\-219.0058\\15\\13.39565\\-218.9204\\15\\9.489399\\-218.8826\\15\\7.536274\\-218.7663\\15\\5.583149\\-218.2551\\15\\4.048551\\-217.2396\\15\\1.676899\\-214.7342\\15\\0.8592031\\-213.3334\\15\\0.07952174\\-211.3803\\15\\-1.099892\\-209.4271\\15\\-1.149214\\-205.5209\\15\\-1.248309\\-203.5678\\15\\-1.573059\\-201.6146\\15\\-2.221722\\-199.6615\\15\\-3.248997\\-197.7084\\15\\-3.969283\\-195.7553\\15\\-3.921415\\-193.8021\\15\\-3.469849\\-191.849\\15\\-3.726747\\-189.8959\\15\\-4.182476\\-189.4076\\15\\-4.331083\\-187.9428\\15\\-4.897635\\-185.9896\\15\\-5.186291\\-184.0365\\15\\-5.626853\\-182.0834\\15\\-7.908274\\-178.1771\\15\\-8.088726\\-177.0704\\15\\-8.396162\\-178.1771\\15\\-9.859416\\-180.1303\\15\\-11.99498\\-182.2633\\15\\-13.9481\\-183.7296\\15\\-14.51348\\-184.0365\\15\\-15.90123\\-184.274\\15\\-17.85435\\-184.4012\\15\\-19.80748\\-184.2393\\15\\-21.7606\\-183.1373\\15\\-23.71373\\-184.1662\\15\\-25.66685\\-184.505\\15\\-29.5731\\-184.505\\15\\-31.52623\\-184.0912\\15\\-33.47935\\-182.8934\\15\\-35.43248\\-182.5909\\15\\-37.3856\\-182.1803\\15\\-39.33873\\-180.2888\\15\\-43.24498\\-178.2453\\15\\-45.1981\\-176.7639\\15\\-47.15123\\-174.8621\\15\\-49.10435\\-172.4445\\15\\-51.57777\\-170.3646\\15\\-53.0106\\-169.3179\\15\\-53.90627\\-168.4115\\15\\-54.71453\\-166.4584\\15\\-54.05616\\-164.5053\\15\\-52.87417\\-162.5521\\15\\-52.14312\\-160.599\\15\\-51.57954\\-158.6459\\15\\-50.25758\\-154.7396\\15\\-49.43201\\-152.7865\\15\\-47.15123\\-150.4388\\15\\-44.75342\\-148.8803\\15\\-43.24498\\-148.0641\\15\\-39.33873\\-148.0752\\15\\-37.3856\\-148.6412\\15\\-35.43248\\-149.6509\\15\\-33.47935\\-149.9231\\15\\-29.5731\\-150.1802\\15\\-23.71373\\-150.2238\\15\\-19.80748\\-150.1802\\15\\-17.85435\\-150.3105\\15\\-15.90123\\-151.3992\\15\\-14.45656\\-152.7865\\15\\-13.1964\\-154.7396\\15\\-12.26551\\-156.6928\\15\\-10.80768\\-158.6459\\15\\-10.22885\\-160.599\\15\\-9.198874\\-162.5521\\15\\-8.036141\\-164.5053\\15\\-7.658267\\-166.4584\\15\\-6.551004\\-168.4115\\15\\-5.024696\\-170.3646\\15\\-4.252789\\-172.3178\\15\\-3.257997\\-174.2709\\15\\-3.231726\\-176.224\\15\\-3.024892\\-178.1771\\15\\-2.441053\\-180.1303\\15\\-2.447145\\-182.0834\\15\\-2.067761\\-185.9896\\15\\-2.067761\\-189.8959\\15\\-1.925388\\-191.849\\15\\-1.269247\\-193.8021\\15\\-0.276226\\-194.6949\\15\\3.630024\\-192.9554\\15\\5.583149\\-192.4623\\15\\7.536274\\-191.8263\\15\\9.489399\\-191.6252\\15\\11.44252\\-191.1795\\15\\13.39565\\-190.9466\\15\\15.34877\\-190.5344\\15\\17.3019\\-189.6368\\15\\19.25502\\-189.4799\\15\\21.20815\\-188.9281\\15\\23.16127\\-188.0648\\15\\25.1144\\-189.0085\\15\\27.06752\\-189.6368\\15\\29.02065\\-189.6484\\15\\30.97377\\-189.8583\\15\\32.9269\\-190.6085\\15\\34.88002\\-189.6797\\15\\36.88681\\-187.9428\\15\\38.78627\\-187.1313\\15\\40.7394\\-186.68\\15\\42.69252\\-185.4677\\15\\44.64565\\-185.1948\\15\\46.59877\\-185.2632\\15\\48.5519\\-185.4843\\15\\50.50502\\-186.5569\\15\\52.45815\\-188.2808\\15\\54.41127\\-190.1826\\15\\56.01403\\-191.849\\15\\57.0339\\-193.8021\\15\\57.09682\\-195.7553\\15\\57.97166\\-197.7084\\15\\60.27065\\-200.0351\\15\\62.89709\\-203.5678\\15\\60.27065\\-206.0003\\15\\58.38728\\-205.5209\\15\\59.10152\\-203.5678\\15\\58.31752\\-202.6651\\15\\56.3644\\-202.4406\\15\\55.19347\\-203.5678\\15\\54.61951\\-205.5209\\15\\53.49543\\-207.474\\15\\51.93081\\-209.4271\\15\\50.80397\\-211.3803\\15\\48.5519\\-213.4419\\15\\46.59877\\-214.4037\\15\\44.64565\\-215.4982\\15\\42.69252\\-216.3008\\15\\40.7394\\-216.7426\\15\\36.83315\\-217.0039\\15\\36.43103\\-217.2396\\15\\32.9269\\-218.8034\\15\\30.97377\\-219.9771\\15\\29.02065\\-220.8868\\15\\19.25502\\-220.8868\\15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "142"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "414"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "87.6144\\-213.8827\\15\\85.66128\\-212.0553\\15\\85.09934\\-211.3803\\15\\84.70711\\-209.4271\\15\\83.39333\\-207.474\\15\\82.72752\\-205.5209\\15\\80.92381\\-203.5678\\15\\80.50365\\-201.6146\\15\\77.84878\\-197.9066\\15\\75.73431\\-195.7553\\15\\73.94253\\-192.5366\\15\\71.91093\\-189.8959\\15\\70.854\\-187.9428\\15\\70.03628\\-186.0574\\15\\68.90276\\-184.0365\\15\\68.73224\\-180.1303\\15\\68.08315\\-178.9258\\15\\66.13003\\-176.1788\\15\\65.08406\\-174.2709\\15\\64.95287\\-172.3178\\15\\64.50242\\-170.3646\\15\\63.33535\\-168.4115\\15\\62.78886\\-166.4584\\15\\61.34808\\-164.5053\\15\\62.22377\\-163.4081\\15\\63.47815\\-162.5521\\15\\62.22377\\-161.253\\15\\61.76885\\-160.599\\15\\60.27065\\-158.8883\\15\\56.20785\\-154.7396\\15\\55.13308\\-152.7865\\15\\53.84405\\-150.8334\\15\\52.97938\\-148.8803\\15\\50.50502\\-146.4731\\15\\48.5519\\-145.966\\15\\46.59877\\-145.7523\\15\\44.64565\\-144.2921\\15\\43.57235\\-143.0209\\15\\42.69252\\-142.1692\\15\\40.7394\\-140.5541\\15\\38.78627\\-140.1324\\15\\36.83315\\-140.4116\\15\\34.88002\\-141.5474\\15\\32.9269\\-141.3933\\15\\30.97377\\-140.2156\\15\\29.75179\\-139.1146\\15\\27.06752\\-136.3792\\15\\25.1144\\-135.7703\\15\\23.85707\\-135.2084\\15\\21.20815\\-133.7689\\15\\20.61963\\-133.2553\\15\\20.52349\\-131.3021\\15\\21.20815\\-130.6061\\15\\25.1144\\-128.8263\\15\\27.06752\\-128.2543\\15\\29.02065\\-127.8927\\15\\30.97377\\-127.7926\\15\\34.88002\\-126.3124\\15\\36.83315\\-125.0657\\15\\38.78627\\-124.4001\\15\\40.56435\\-123.4896\\15\\40.89149\\-123.4896\\15\\41.80597\\-125.4428\\15\\41.63987\\-127.3959\\15\\40.7394\\-128.8404\\15\\40.28164\\-129.349\\15\\39.94805\\-131.3021\\15\\40.7394\\-132.8669\\15\\42.69252\\-134.1601\\15\\43.53554\\-133.2553\\15\\43.58553\\-131.3021\\15\\44.00755\\-129.349\\15\\45.39647\\-127.3959\\15\\45.85777\\-125.4428\\15\\47.18209\\-123.4896\\15\\48.5519\\-122.3743\\15\\49.38971\\-121.5365\\15\\49.38706\\-115.6771\\15\\48.5519\\-114.0438\\15\\47.16104\\-111.7709\\15\\44.64565\\-109.2505\\15\\41.76271\\-105.9115\\15\\41.83018\\-103.9584\\15\\42.69252\\-102.8413\\15\\44.64565\\-101.6183\\15\\46.59877\\-101.5344\\15\\48.0113\\-102.0053\\15\\50.50502\\-103.1137\\15\\51.65431\\-103.9584\\15\\52.45815\\-104.7257\\15\\54.41127\\-107.168\\15\\55.05629\\-107.8646\\15\\57.18329\\-109.8178\\15\\58.57661\\-111.7709\\15\\59.54747\\-113.724\\15\\61.19342\\-115.6771\\15\\62.27596\\-117.6303\\15\\63.23758\\-119.5834\\15\\63.74221\\-121.5365\\15\\64.95124\\-123.4896\\15\\65.46372\\-125.4428\\15\\65.61634\\-127.3959\\15\\66.13003\\-128.8292\\15\\67.15774\\-131.3021\\15\\67.56648\\-133.2553\\15\\68.4342\\-135.2084\\15\\69.13729\\-137.1615\\15\\69.52502\\-139.1146\\15\\70.03628\\-140.5632\\15\\71.13251\\-143.0209\\15\\72.27122\\-144.974\\15\\73.07716\\-146.9271\\15\\74.29935\\-148.8803\\15\\75.02597\\-150.8334\\15\\76.31159\\-152.7865\\15\\77.20736\\-154.7396\\15\\77.84878\\-155.4301\\15\\80.33203\\-158.6459\\15\\81.07455\\-160.599\\15\\81.75503\\-161.2831\\15\\85.66128\\-165.8203\\15\\88.3817\\-168.4115\\15\\89.80325\\-170.3646\\15\\90.72658\\-172.3178\\15\\92.35996\\-174.2709\\15\\93.18081\\-176.224\\15\\93.28677\\-178.1771\\15\\94.32827\\-180.1303\\15\\95.0205\\-182.0834\\15\\95.0205\\-184.0365\\15\\94.6392\\-185.9896\\15\\94.02789\\-187.9428\\15\\94.06612\\-189.8959\\15\\94.3102\\-191.849\\15\\94.25226\\-193.8021\\15\\93.92676\\-195.7553\\15\\93.39301\\-197.7084\\15\\93.16981\\-201.6146\\15\\93.18081\\-209.4271\\15\\93.03642\\-211.3803\\15\\91.52065\\-212.8336\\15\\89.56753\\-213.661\\15"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "189"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "415"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-92.0731\\-215.6211\\17\\-92.38792\\-215.2865\\17\\-92.78111\\-213.3334\\17\\-92.0731\\-212.5997\\17\\-90.11997\\-212.5331\\17\\-88.12929\\-211.3803\\17\\-87.69601\\-209.4271\\17\\-87.68724\\-207.474\\17\\-89.08141\\-205.5209\\17\\-90.11997\\-204.6523\\17\\-92.0731\\-204.7387\\17\\-94.02622\\-204.6534\\17\\-95.01635\\-203.5678\\17\\-95.65383\\-201.6146\\17\\-96.79315\\-199.6615\\17\\-97.42421\\-197.7084\\17\\-97.61766\\-195.7553\\17\\-97.59639\\-193.8021\\17\\-97.77089\\-191.849\\17\\-97.62851\\-187.9428\\17\\-97.60696\\-185.9896\\17\\-97.03875\\-184.0365\\17\\-96.61489\\-180.1303\\17\\-94.83424\\-176.224\\17\\-93.26\\-174.2709\\17\\-92.46983\\-172.3178\\17\\-90.9886\\-170.3646\\17\\-89.36993\\-168.4115\\17\\-88.40257\\-166.4584\\17\\-88.16685\\-166.2033\\17\\-86.21372\\-163.1958\\17\\-85.71688\\-162.5521\\17\\-85.15205\\-160.599\\17\\-83.73047\\-158.6459\\17\\-83.19147\\-156.6928\\17\\-81.77734\\-154.7396\\17\\-81.21575\\-152.7865\\17\\-79.86607\\-150.8334\\17\\-79.37361\\-148.8803\\17\\-79.02267\\-146.9271\\17\\-78.01184\\-144.974\\17\\-77.42899\\-143.0209\\17\\-77.06955\\-141.0678\\17\\-76.17573\\-139.1146\\17\\-75.51186\\-137.1615\\17\\-75.32637\\-135.2084\\17\\-74.94796\\-133.2553\\17\\-74.17808\\-131.3021\\17\\-73.59673\\-129.349\\17\\-73.37701\\-127.3959\\17\\-72.94825\\-125.4428\\17\\-71.30589\\-121.5365\\17\\-70.22961\\-119.5834\\17\\-69.32647\\-117.6303\\17\\-68.24622\\-115.6771\\17\\-67.32437\\-113.724\\17\\-65.78301\\-111.7709\\17\\-64.72935\\-110.7943\\17\\-62.77623\\-110.3829\\17\\-60.8231\\-110.6802\\17\\-59.71695\\-111.7709\\17\\-58.26036\\-113.724\\17\\-57.82141\\-115.6771\\17\\-57.63105\\-119.5834\\17\\-57.03892\\-121.5365\\17\\-55.92085\\-123.4896\\17\\-55.12532\\-125.4428\\17\\-53.74174\\-127.3959\\17\\-53.18499\\-129.349\\17\\-53.0106\\-129.6173\\17\\-51.05748\\-130.6145\\17\\-49.86932\\-129.349\\17\\-49.77089\\-127.3959\\17\\-49.99991\\-125.4428\\17\\-49.52029\\-123.4896\\17\\-49.75023\\-121.5365\\17\\-49.4124\\-119.5834\\17\\-49.10435\\-119.2733\\17\\-47.15123\\-118.4754\\17\\-45.1981\\-118.4087\\17\\-43.24498\\-117.4675\\17\\-41.29185\\-117.1956\\17\\-39.33873\\-118.3454\\17\\-37.3856\\-118.4087\\17\\-35.43248\\-118.6897\\17\\-33.47935\\-120.2497\\17\\-31.52623\\-120.4979\\17\\-29.5731\\-120.5795\\17\\-25.66685\\-120.483\\17\\-23.71373\\-120.7015\\17\\-22.30843\\-121.5365\\17\\-21.7606\\-122.0213\\17\\-19.65155\\-123.4896\\17\\-17.85435\\-124.4618\\17\\-16.44376\\-125.4428\\17\\-15.90123\\-125.9616\\17\\-13.9481\\-126.9895\\17\\-11.99498\\-127.6228\\17\\-8.088726\\-128.0083\\17\\-6.135601\\-128.0193\\17\\-2.229351\\-128.5668\\17\\-0.276226\\-128.3585\\17\\1.676899\\-127.9773\\17\\3.630024\\-127.7573\\17\\5.583149\\-126.9612\\17\\7.536274\\-127.2089\\17\\9.489399\\-128.8058\\17\\11.44252\\-129.9339\\17\\13.39565\\-130.7809\\17\\13.89542\\-131.3021\\17\\14.21776\\-133.2553\\17\\13.39565\\-134.3016\\17\\11.44252\\-135.8577\\17\\9.489399\\-134.7514\\17\\7.536274\\-134.3769\\17\\5.583149\\-134.3851\\17\\3.630024\\-135.1043\\17\\-0.276226\\-135.1043\\17\\-2.229351\\-135.2618\\17\\-6.135601\\-135.1827\\17\\-8.088726\\-134.0396\\17\\-10.04185\\-133.5914\\17\\-11.99498\\-132.3689\\17\\-13.9481\\-131.7275\\17\\-15.90123\\-131.6382\\17\\-19.80748\\-131.7551\\17\\-21.7606\\-132.1098\\17\\-23.71373\\-132.9583\\17\\-25.66685\\-134.1602\\17\\-26.62933\\-135.2084\\17\\-27.61998\\-136.9399\\17\\-29.5731\\-137.4244\\17\\-31.52623\\-137.1371\\17\\-33.47935\\-137.6691\\17\\-35.43248\\-139.047\\17\\-37.3856\\-140.6331\\17\\-39.33873\\-142.3784\\17\\-41.29185\\-144.3926\\17\\-42.03145\\-144.974\\17\\-44.9201\\-146.9271\\17\\-45.1981\\-147.2093\\17\\-47.15123\\-147.7\\17\\-47.86296\\-146.9271\\17\\-48.10264\\-144.974\\17\\-48.68379\\-143.0209\\17\\-49.10435\\-142.6539\\17\\-51.05748\\-141.7706\\17\\-52.12225\\-143.0209\\17\\-53.38232\\-144.974\\17\\-54.27126\\-146.9271\\17\\-54.96373\\-147.5727\\17\\-56.91685\\-148.5295\\17\\-58.86998\\-150.2052\\17\\-59.43359\\-150.8334\\17\\-60.03344\\-152.7865\\17\\-61.79514\\-154.7396\\17\\-62.52874\\-156.6928\\17\\-62.96456\\-158.6459\\17\\-63.845\\-160.599\\17\\-64.40383\\-162.5521\\17\\-65.3364\\-164.5053\\17\\-65.87512\\-166.4584\\17\\-67.09842\\-168.4115\\17\\-67.631\\-170.3646\\17\\-67.67828\\-172.3178\\17\\-69.47975\\-176.224\\17\\-69.56947\\-178.1771\\17\\-70.24935\\-180.1303\\17\\-71.30914\\-182.0834\\17\\-71.44252\\-184.0365\\17\\-72.07852\\-185.9896\\17\\-74.30683\\-189.8959\\17\\-76.4481\\-192.0372\\17\\-77.34708\\-193.8021\\17\\-78.18829\\-195.7553\\17\\-79.29175\\-197.7084\\17\\-80.03781\\-199.6615\\17\\-80.35435\\-199.9965\\17\\-81.30576\\-201.6146\\17\\-81.52716\\-203.5678\\17\\-82.0145\\-205.5209\\17\\-82.14589\\-207.474\\17\\-83.2976\\-209.4271\\17\\-83.67574\\-211.3803\\17\\-83.76376\\-213.3334\\17\\-84.88002\\-215.2865\\17\\-86.21372\\-216.5413\\17\\-88.16685\\-217.0039\\17\\-90.11997\\-216.8503\\17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "137"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "416"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "7.536274\\-219.7851\\17\\3.630024\\-218.0355\\17\\0.7859116\\-215.2865\\17\\-0.8051974\\-213.3334\\17\\-1.498207\\-211.3803\\17\\-2.027063\\-209.4271\\17\\-2.792967\\-207.474\\17\\-3.128943\\-205.5209\\17\\-3.27073\\-199.6615\\17\\-3.557686\\-197.7084\\17\\-4.304546\\-195.7553\\17\\-4.331083\\-191.849\\17\\-4.92867\\-189.8959\\17\\-5.305997\\-187.9428\\17\\-6.135601\\-185.8776\\17\\-7.890362\\-184.0365\\17\\-8.226719\\-184.0365\\17\\-10.04185\\-187.0664\\17\\-11.99498\\-189.1104\\17\\-13.9481\\-189.941\\17\\-15.90123\\-190.1648\\17\\-17.85435\\-189.7114\\17\\-19.80748\\-188.5429\\17\\-23.71373\\-187.1311\\17\\-29.5731\\-187.1438\\17\\-31.52623\\-187.0218\\17\\-33.47935\\-186.6473\\17\\-37.3856\\-185.1708\\17\\-39.33873\\-184.677\\17\\-41.29185\\-183.8906\\17\\-45.1981\\-179.9791\\17\\-46.05814\\-178.1771\\17\\-47.15123\\-176.3958\\17\\-49.10435\\-174.2629\\17\\-51.05748\\-173.2712\\17\\-53.0106\\-173.882\\17\\-54.38082\\-172.3178\\17\\-54.42051\\-170.3646\\17\\-54.09196\\-168.4115\\17\\-53.0106\\-166.5168\\17\\-51.74646\\-164.5053\\17\\-51.18518\\-162.5521\\17\\-51.01992\\-160.599\\17\\-50.25354\\-158.6459\\17\\-50.01116\\-156.6928\\17\\-49.3313\\-154.7396\\17\\-47.98164\\-152.7865\\17\\-47.15123\\-152.0642\\17\\-45.1981\\-151.4082\\17\\-43.24498\\-150.0349\\17\\-41.29185\\-149.9501\\17\\-39.33873\\-150.0004\\17\\-37.3856\\-151.0197\\17\\-35.43248\\-151.8567\\17\\-33.47935\\-152.5236\\17\\-31.52623\\-153.58\\17\\-27.61998\\-153.9133\\17\\-25.66685\\-153.943\\17\\-23.71373\\-153.7559\\17\\-21.7606\\-153.6833\\17\\-19.80748\\-153.7559\\17\\-17.85435\\-154.5115\\17\\-15.90123\\-156.4178\\17\\-13.72412\\-158.6459\\17\\-11.99498\\-159.6592\\17\\-10.96063\\-160.599\\17\\-9.545004\\-162.5521\\17\\-8.088726\\-166.3272\\17\\-7.143166\\-168.4115\\17\\-5.743732\\-170.3646\\17\\-5.414683\\-172.3178\\17\\-4.746325\\-174.2709\\17\\-3.805449\\-176.224\\17\\-3.454937\\-178.1771\\17\\-3.270161\\-180.1303\\17\\-3.270161\\-182.0834\\17\\-2.972705\\-184.0365\\17\\-2.093915\\-185.9896\\17\\-1.707395\\-189.8959\\17\\-1.166621\\-191.849\\17\\-0.276226\\-192.7447\\17\\1.676899\\-192.4211\\17\\3.630024\\-191.2717\\17\\5.583149\\-190.9557\\17\\9.489399\\-190.9035\\17\\11.44252\\-190.6179\\17\\13.39565\\-190.0323\\17\\17.3019\\-189.6484\\17\\19.25502\\-189.6141\\17\\21.20815\\-189.1659\\17\\23.16127\\-188.975\\17\\25.1144\\-189.2163\\17\\27.06752\\-189.6368\\17\\30.97377\\-189.6484\\17\\32.9269\\-189.272\\17\\36.83315\\-186.7404\\17\\38.78627\\-185.3973\\17\\42.69252\\-184.7415\\17\\44.64565\\-183.4451\\17\\46.59877\\-183.1328\\17\\48.5519\\-183.4302\\17\\50.50502\\-184.8855\\17\\52.20833\\-185.9896\\17\\56.3644\\-190.1225\\17\\57.46552\\-191.849\\17\\58.08897\\-193.8021\\17\\58.14061\\-195.7553\\17\\59.13804\\-197.7084\\17\\60.27065\\-198.8237\\17\\62.22377\\-200.4831\\17\\63.15769\\-201.6146\\17\\63.37017\\-203.5678\\17\\62.22377\\-204.5819\\17\\60.81124\\-203.5678\\17\\60.27065\\-203.0106\\17\\58.31752\\-202.4115\\17\\56.69423\\-203.5678\\17\\55.55145\\-205.5209\\17\\54.82021\\-207.474\\17\\53.51652\\-209.4271\\17\\51.87467\\-211.3803\\17\\48.5519\\-214.103\\17\\46.59877\\-215.4481\\17\\44.64565\\-216.3291\\17\\42.69252\\-216.8602\\17\\40.7394\\-217.0039\\17\\36.83315\\-217.0158\\17\\36.48663\\-217.2396\\17\\32.54286\\-219.1928\\17\\29.02065\\-220.7891\\17\\27.06752\\-220.8984\\17\\21.20815\\-220.8984\\17\\19.25502\\-220.7891\\17\\15.44753\\-219.1928\\17\\13.39565\\-219.7701\\17\\11.44252\\-220.0088\\17\\9.489399\\-220.0088\\17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "144"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "417"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "85.66128\\-212.0553\\17\\85.09934\\-211.3803\\17\\84.66671\\-209.4271\\17\\83.17802\\-207.474\\17\\82.43811\\-203.5678\\17\\80.91332\\-201.6146\\17\\80.64825\\-199.6615\\17\\79.8019\\-198.2715\\17\\79.29434\\-197.7084\\17\\78.2056\\-195.7553\\17\\76.98643\\-193.8021\\17\\75.60268\\-191.849\\17\\74.71587\\-189.8959\\17\\73.49014\\-187.9428\\17\\72.72182\\-185.9896\\17\\71.54238\\-184.0365\\17\\70.8613\\-182.0834\\17\\70.34431\\-180.1303\\17\\69.28235\\-178.1771\\17\\68.83221\\-176.224\\17\\67.64234\\-174.2709\\17\\66.9384\\-172.3178\\17\\66.13003\\-170.701\\17\\64.68304\\-168.4115\\17\\63.10539\\-166.4584\\17\\61.34748\\-164.5053\\17\\61.10186\\-160.599\\17\\58.31752\\-157.7028\\17\\55.29858\\-154.7396\\17\\53.69306\\-152.7865\\17\\52.91307\\-150.8334\\17\\51.43052\\-148.8803\\17\\50.50502\\-148.131\\17\\48.5519\\-147.9469\\17\\46.59877\\-146.6512\\17\\44.64565\\-145.8377\\17\\43.90962\\-144.974\\17\\43.36549\\-143.0209\\17\\42.69252\\-142.3444\\17\\40.7394\\-141.899\\17\\38.78627\\-141.8421\\17\\36.83315\\-141.6675\\17\\34.88002\\-141.7881\\17\\32.9269\\-141.6748\\17\\29.02065\\-139.5189\\17\\28.62392\\-139.1146\\17\\27.49552\\-137.1615\\17\\25.1144\\-134.936\\17\\23.16127\\-134.0956\\17\\22.12891\\-133.2553\\17\\22.08191\\-131.3021\\17\\23.16127\\-130.2279\\17\\25.1144\\-129.7457\\17\\27.06752\\-128.451\\17\\29.02065\\-127.8118\\17\\30.97377\\-127.8023\\17\\32.9269\\-126.6661\\17\\34.88002\\-125.8681\\17\\36.83315\\-124.6365\\17\\38.78627\\-123.0367\\17\\40.7394\\-122.5846\\17\\41.91895\\-123.4896\\17\\42.22168\\-125.4428\\17\\41.75068\\-127.3959\\17\\40.16789\\-129.349\\17\\39.70515\\-131.3021\\17\\39.87773\\-133.2553\\17\\40.7394\\-134.1933\\17\\42.09502\\-135.2084\\17\\44.43893\\-137.1615\\17\\44.64565\\-138.5101\\17\\44.95017\\-137.1615\\17\\45.59247\\-135.2084\\17\\45.03752\\-133.2553\\17\\45.23935\\-131.3021\\17\\45.96005\\-127.3959\\17\\47.27925\\-125.4428\\17\\47.88181\\-123.4896\\17\\49.24154\\-121.5365\\17\\49.00763\\-119.5834\\17\\48.35246\\-117.6303\\17\\47.83156\\-115.6771\\17\\47.51817\\-113.724\\17\\46.59877\\-111.9949\\17\\44.48406\\-109.8178\\17\\42.69252\\-107.4881\\17\\40.06293\\-103.9584\\17\\41.53359\\-102.0053\\17\\42.69252\\-101.1228\\17\\44.64565\\-100.8659\\17\\46.59877\\-100.7969\\17\\48.5519\\-101.1097\\17\\50.35131\\-102.0053\\17\\52.45815\\-103.4356\\17\\54.70424\\-105.9115\\17\\56.26034\\-107.8646\\17\\58.42603\\-109.8178\\17\\59.27229\\-111.7709\\17\\60.93369\\-113.724\\17\\61.69059\\-115.6771\\17\\63.08049\\-117.6303\\17\\63.52756\\-119.5834\\17\\64.55392\\-121.5365\\17\\65.24184\\-123.4896\\17\\65.5918\\-125.4428\\17\\65.71408\\-127.3959\\17\\66.83977\\-129.349\\17\\67.48013\\-131.3021\\17\\68.08315\\-132.8138\\17\\69.18689\\-135.2084\\17\\69.59238\\-137.1615\\17\\71.15838\\-141.0678\\17\\72.31492\\-143.0209\\17\\73.06778\\-144.974\\17\\74.21306\\-146.9271\\17\\74.99814\\-148.8803\\17\\76.22117\\-150.8334\\17\\76.98654\\-152.7865\\17\\77.84878\\-153.9343\\17\\80.21784\\-156.6928\\17\\80.86022\\-158.6459\\17\\84.10738\\-162.5521\\17\\84.81344\\-164.5053\\17\\86.55565\\-166.4584\\17\\88.48525\\-168.4115\\17\\90.2713\\-170.3646\\17\\91.69504\\-172.3178\\17\\92.65675\\-174.2709\\17\\94.59588\\-180.1303\\17\\95.15636\\-182.0834\\17\\95.15636\\-184.0365\\17\\95.03017\\-185.9896\\17\\94.5251\\-187.9428\\17\\94.61552\\-189.8959\\17\\94.96839\\-191.849\\17\\94.90721\\-193.8021\\17\\94.548\\-195.7553\\17\\93.95338\\-199.6615\\17\\93.40719\\-201.6146\\17\\93.39301\\-203.5678\\17\\93.22629\\-205.5209\\17\\93.16981\\-211.3803\\17\\91.52065\\-212.927\\17\\87.6144\\-213.0859\\17"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "185"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "418"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-92.0731\\-216.3833\\19\\-93.12147\\-215.2865\\19\\-93.44157\\-213.3334\\19\\-92.0731\\-212.3087\\19\\-90.11997\\-212.5749\\19\\-88.84089\\-211.3803\\19\\-87.87388\\-209.4271\\19\\-87.77012\\-207.474\\19\\-89.07183\\-205.5209\\19\\-90.11997\\-204.6428\\19\\-92.0731\\-205.6448\\19\\-94.02622\\-206.4309\\19\\-95.01241\\-205.5209\\19\\-95.97935\\-203.3123\\19\\-96.57909\\-201.6146\\19\\-97.0855\\-199.6615\\19\\-97.9401\\-197.7084\\19\\-97.98466\\-195.7553\\19\\-98.57495\\-193.8021\\19\\-98.81683\\-191.849\\19\\-98.59532\\-189.8959\\19\\-97.98466\\-187.9428\\19\\-97.98466\\-185.9896\\19\\-97.77089\\-184.0365\\19\\-97.45\\-182.0834\\19\\-96.61489\\-178.1771\\19\\-95.19321\\-176.224\\19\\-94.40325\\-174.2709\\19\\-91.33559\\-170.3646\\19\\-90.43479\\-168.4115\\19\\-87.43196\\-164.5053\\19\\-86.75195\\-162.5521\\19\\-85.44844\\-160.599\\19\\-84.81785\\-158.6459\\19\\-83.46743\\-156.6928\\19\\-82.89884\\-154.7396\\19\\-81.47739\\-152.7865\\19\\-81.00366\\-150.8334\\19\\-79.85751\\-148.8803\\19\\-79.38603\\-146.9271\\19\\-79.05056\\-144.974\\19\\-78.03424\\-143.0209\\19\\-77.4374\\-141.0678\\19\\-77.08364\\-139.1146\\19\\-76.20061\\-137.1615\\19\\-75.98335\\-135.2084\\19\\-74.48734\\-131.3021\\19\\-74.202\\-129.349\\19\\-74.04838\\-127.3959\\19\\-70.91425\\-119.5834\\19\\-69.80283\\-117.6303\\19\\-68.90797\\-115.6771\\19\\-67.84417\\-113.724\\19\\-66.68247\\-111.7786\\19\\-64.72935\\-109.8848\\19\\-62.77623\\-109.045\\19\\-60.8231\\-110.2484\\19\\-58.86998\\-112.2936\\19\\-57.82185\\-113.724\\19\\-57.84438\\-115.6771\\19\\-58.20367\\-117.6303\\19\\-58.32066\\-119.5834\\19\\-57.99242\\-121.5365\\19\\-57.78254\\-123.4896\\19\\-56.91685\\-124.7853\\19\\-54.36757\\-127.3959\\19\\-53.73452\\-129.349\\19\\-53.0106\\-130.3126\\19\\-51.05748\\-130.4928\\19\\-50.25847\\-129.349\\19\\-50.40127\\-127.3959\\19\\-50.66809\\-125.4428\\19\\-49.78437\\-123.4896\\19\\-48.29055\\-119.5834\\19\\-47.15123\\-118.6193\\19\\-45.1981\\-118.4032\\19\\-43.24498\\-116.9016\\19\\-41.29185\\-116.6042\\19\\-39.33873\\-116.6782\\19\\-37.3856\\-117.2143\\19\\-36.94229\\-117.6303\\19\\-35.43248\\-118.5945\\19\\-33.47935\\-119.1964\\19\\-31.52623\\-120.5515\\19\\-29.5731\\-120.7153\\19\\-27.61998\\-120.6048\\19\\-26.67118\\-119.5834\\19\\-27.36089\\-117.6303\\19\\-25.66685\\-117.1272\\19\\-23.71373\\-117.4897\\19\\-22.35838\\-119.5834\\19\\-21.7606\\-120.1812\\19\\-19.80748\\-122.5536\\19\\-17.85435\\-123.9692\\19\\-15.90123\\-124.7724\\19\\-13.9481\\-126.3188\\19\\-10.04185\\-126.9429\\19\\-8.088726\\-127.6076\\19\\-6.135601\\-127.6076\\19\\-2.229351\\-127.8239\\19\\-0.276226\\-127.7214\\19\\1.676899\\-126.9992\\19\\3.630024\\-126.6064\\19\\5.583149\\-126.8906\\19\\7.536274\\-128.2262\\19\\8.5174\\-129.349\\19\\9.489399\\-131.4339\\19\\11.44252\\-131.8196\\19\\13.39565\\-133.0925\\19\\13.47703\\-133.2553\\19\\12.20774\\-135.2084\\19\\11.44252\\-135.778\\19\\9.489399\\-135.9926\\19\\7.536274\\-136.3064\\19\\5.583149\\-136.4591\\19\\3.630024\\-136.9313\\19\\1.676899\\-136.9951\\19\\-0.276226\\-137.561\\19\\-2.229351\\-138.2724\\19\\-4.182476\\-138.2438\\19\\-6.135601\\-137.3853\\19\\-8.45982\\-135.2084\\19\\-10.04185\\-134.073\\19\\-11.99498\\-132.4538\\19\\-13.9481\\-131.0092\\19\\-15.90123\\-130.4448\\19\\-17.85435\\-130.4539\\19\\-19.80748\\-131.0092\\19\\-21.7606\\-131.8562\\19\\-23.71373\\-132.4406\\19\\-25.66685\\-133.6926\\19\\-29.5731\\-135.9712\\19\\-31.52623\\-135.9433\\19\\-33.47935\\-136.7748\\19\\-33.84634\\-137.1615\\19\\-34.60543\\-139.1146\\19\\-36.4337\\-141.0678\\19\\-38.4722\\-143.0209\\19\\-39.33873\\-143.9531\\19\\-41.29185\\-145.7956\\19\\-43.24498\\-146.3543\\19\\-45.1981\\-148.007\\19\\-47.15123\\-148.7983\\19\\-48.68321\\-146.9271\\19\\-47.26109\\-143.0209\\19\\-49.10435\\-142.2836\\19\\-51.05748\\-141.0983\\19\\-53.0106\\-141.6956\\19\\-53.89561\\-144.974\\19\\-54.14756\\-146.9271\\19\\-55.57124\\-148.8803\\19\\-57.93016\\-150.8334\\19\\-61.70439\\-154.7396\\19\\-62.36028\\-156.6928\\19\\-63.33664\\-158.6459\\19\\-63.95643\\-160.599\\19\\-65.36124\\-162.5521\\19\\-65.90218\\-164.5053\\19\\-67.19982\\-166.4584\\19\\-67.93353\\-168.4115\\19\\-69.03991\\-170.3646\\19\\-69.54391\\-172.3178\\19\\-71.4848\\-176.224\\19\\-71.51192\\-178.1771\\19\\-71.88187\\-180.1303\\19\\-73.00602\\-182.0834\\19\\-73.52402\\-184.0365\\19\\-74.49497\\-185.8729\\19\\-76.4481\\-188.3928\\19\\-77.32999\\-189.8959\\19\\-79.28013\\-193.8021\\19\\-79.57014\\-195.7553\\19\\-80.98593\\-197.7084\\19\\-81.51019\\-199.6615\\19\\-81.84551\\-201.6146\\19\\-83.03989\\-203.5678\\19\\-83.32128\\-205.5209\\19\\-83.32128\\-207.474\\19\\-83.47842\\-209.4271\\19\\-83.76376\\-211.3803\\19\\-83.89362\\-213.3334\\19\\-85.26134\\-215.2865\\19\\-86.21372\\-216.2885\\19\\-88.16685\\-217.0158\\19\\-90.11997\\-217.0158\\19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "146"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "419"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "5.583149\\-219.7547\\19\\1.803628\\-217.2396\\19\\-0.276226\\-215.2189\\19\\-2.229351\\-213.1188\\19\\-3.249316\\-211.3803\\19\\-3.302256\\-209.4271\\19\\-3.547185\\-207.474\\19\\-3.969283\\-205.5209\\19\\-3.970774\\-199.6615\\19\\-4.856516\\-197.7084\\19\\-5.26414\\-195.7553\\19\\-5.37659\\-193.8021\\19\\-5.662298\\-191.849\\19\\-6.135601\\-190.5843\\19\\-8.115359\\-189.8959\\19\\-10.08394\\-191.849\\19\\-11.99498\\-194.1953\\19\\-13.9481\\-195.3367\\19\\-15.90123\\-195.2791\\19\\-17.85435\\-194.7244\\19\\-19.80748\\-193.3304\\19\\-21.7606\\-191.6377\\19\\-23.71373\\-191.0544\\19\\-25.66685\\-190.8206\\19\\-31.52623\\-190.6956\\19\\-33.47935\\-189.7672\\19\\-35.43248\\-189.1946\\19\\-37.3856\\-188.8578\\19\\-39.33873\\-187.7058\\19\\-41.29185\\-187.2356\\19\\-43.24498\\-185.7914\\19\\-45.1981\\-184.9548\\19\\-45.82589\\-184.0365\\19\\-48.03736\\-180.1303\\19\\-48.30195\\-178.1771\\19\\-49.10435\\-176.5825\\19\\-49.54686\\-176.224\\19\\-51.05748\\-175.5751\\19\\-53.0106\\-176.8431\\19\\-54.96373\\-180.0473\\19\\-55.90326\\-178.1771\\19\\-55.64329\\-176.224\\19\\-55.63981\\-174.2709\\19\\-55.21121\\-172.3178\\19\\-55.59226\\-170.3646\\19\\-54.96373\\-169.346\\19\\-53.0106\\-168.1335\\19\\-51.05748\\-167.3223\\19\\-50.11033\\-166.4584\\19\\-49.94775\\-164.5053\\19\\-49.91108\\-160.599\\19\\-49.34171\\-158.6459\\19\\-48.2442\\-156.6928\\19\\-47.15123\\-155.1646\\19\\-45.1981\\-154.0507\\19\\-43.1562\\-152.7865\\19\\-41.29185\\-152.1375\\19\\-39.42751\\-152.7865\\19\\-37.3856\\-153.8202\\19\\-35.43248\\-153.8851\\19\\-33.58275\\-154.7396\\19\\-31.52623\\-155.8301\\19\\-29.5731\\-156.454\\19\\-27.61998\\-157.8661\\19\\-25.66685\\-157.9172\\19\\-23.71373\\-156.6213\\19\\-21.7606\\-156.0832\\19\\-19.80748\\-156.7012\\19\\-17.62899\\-158.6459\\19\\-13.9481\\-160.8137\\19\\-11.99498\\-161.638\\19\\-10.83105\\-162.5521\\19\\-9.152741\\-164.5053\\19\\-7.245331\\-168.4115\\19\\-6.127972\\-170.3646\\19\\-5.853774\\-172.3178\\19\\-5.459128\\-174.2709\\19\\-4.902313\\-176.224\\19\\-3.867663\\-178.1771\\19\\-3.729492\\-180.1303\\19\\-3.711633\\-182.0834\\19\\-3.210352\\-184.0365\\19\\-1.776367\\-185.9896\\19\\-1.315637\\-187.9428\\19\\-0.276226\\-189.8343\\19\\1.676899\\-190.7383\\19\\3.630024\\-190.3929\\19\\5.583149\\-189.7605\\19\\9.489399\\-189.9913\\19\\13.39565\\-189.6602\\19\\19.25502\\-189.6368\\19\\23.16127\\-189.425\\19\\25.1144\\-189.5704\\19\\29.02065\\-189.6484\\19\\30.97377\\-189.5289\\19\\32.9269\\-188.847\\19\\34.88002\\-186.9815\\19\\36.83315\\-185.2693\\19\\38.78627\\-184.8149\\19\\40.7394\\-183.3667\\19\\42.69252\\-183.0764\\19\\44.64565\\-182.95\\19\\46.59877\\-182.5717\\19\\50.50502\\-183.2849\\19\\52.45815\\-184.8535\\19\\54.14559\\-185.9896\\19\\56.3644\\-188.1335\\19\\57.49233\\-189.8959\\19\\58.98037\\-191.849\\19\\59.19263\\-193.8021\\19\\59.19727\\-195.7553\\19\\59.44755\\-197.7084\\19\\60.27065\\-198.5814\\19\\62.22377\\-199.8359\\19\\63.59959\\-201.6146\\19\\64.86411\\-203.5678\\19\\64.1769\\-204.2737\\19\\62.22377\\-204.4171\\19\\60.27065\\-202.4589\\19\\58.31752\\-202.6106\\19\\57.41432\\-203.5678\\19\\57.19072\\-205.5209\\19\\55.93105\\-207.474\\19\\54.81558\\-209.4271\\19\\52.45815\\-212.0139\\19\\50.50502\\-213.5724\\19\\48.5519\\-214.5349\\19\\46.59877\\-215.9466\\19\\44.64565\\-216.7867\\19\\42.69252\\-217.0158\\19\\36.83315\\-217.0158\\19\\36.46694\\-217.2396\\19\\32.9269\\-218.8672\\19\\30.97377\\-219.6547\\19\\29.02065\\-220.2476\\19\\27.06752\\-220.6663\\19\\25.1144\\-220.7891\\19\\23.16127\\-220.7789\\19\\21.20815\\-220.6663\\19\\19.25502\\-220.2552\\19\\17.3019\\-219.7064\\19\\15.34877\\-219.731\\19\\13.39565\\-220.2593\\19\\11.44252\\-220.6292\\19\\9.489399\\-220.6292\\19\\7.536274\\-220.2733\\19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "145"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "420"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "85.66128\\-212.0553\\19\\85.09934\\-211.3803\\19\\84.70255\\-209.4271\\19\\83.46066\\-207.474\\19\\83.21987\\-205.5209\\19\\82.45755\\-201.6146\\19\\81.30843\\-199.6615\\19\\80.63124\\-197.7084\\19\\79.07986\\-195.7553\\19\\78.71832\\-193.8021\\19\\77.61768\\-191.849\\19\\76.78484\\-189.8959\\19\\75.72018\\-187.9428\\19\\74.82886\\-185.9896\\19\\73.76033\\-184.0365\\19\\72.88548\\-182.0834\\19\\71.86458\\-180.1303\\19\\70.99281\\-178.1771\\19\\70.39675\\-176.224\\19\\69.3424\\-174.2709\\19\\68.9295\\-172.3178\\19\\67.84962\\-170.3646\\19\\64.1769\\-166.4506\\19\\62.84813\\-164.5053\\19\\61.41227\\-162.5521\\19\\61.01492\\-160.599\\19\\58.31752\\-157.7836\\19\\55.19357\\-154.7396\\19\\53.26838\\-152.7865\\19\\51.52951\\-150.8334\\19\\50.50502\\-150.0067\\19\\48.5519\\-149.89\\19\\46.59877\\-149.1523\\19\\44.64565\\-148.0865\\19\\42.69252\\-147.457\\19\\42.36269\\-146.9271\\19\\43.20987\\-144.974\\19\\43.60608\\-143.0209\\19\\42.69252\\-142.0491\\19\\40.7394\\-142.1165\\19\\38.78627\\-142.5561\\19\\36.83315\\-142.2812\\19\\32.9269\\-142.0102\\19\\30.97377\\-141.4348\\19\\29.02065\\-140.1099\\19\\28.05317\\-139.1146\\19\\26.6905\\-137.1615\\19\\25.8309\\-135.2084\\19\\25.1144\\-134.4958\\19\\23.29303\\-133.2553\\19\\23.32643\\-131.3021\\19\\25.1144\\-130.1102\\19\\27.06752\\-128.5361\\19\\29.02065\\-127.8118\\19\\30.97377\\-127.8023\\19\\32.9269\\-126.5777\\19\\34.88002\\-125.0121\\19\\37.06424\\-123.4896\\19\\38.78627\\-122.4642\\19\\40.7394\\-122.584\\19\\41.71148\\-123.4896\\19\\42.27658\\-125.4428\\19\\41.98096\\-127.3959\\19\\41.55091\\-129.349\\19\\40.38028\\-131.3021\\19\\40.39288\\-133.2553\\19\\41.94087\\-135.2084\\19\\42.69252\\-135.8936\\19\\43.72627\\-137.1615\\19\\43.57414\\-139.1146\\19\\44.64565\\-140.3523\\19\\46.0832\\-139.1146\\19\\46.00606\\-135.2084\\19\\45.47918\\-133.2553\\19\\45.7667\\-131.3021\\19\\47.16415\\-129.349\\19\\47.58402\\-127.3959\\19\\48.08993\\-123.4896\\19\\48.22638\\-121.5365\\19\\48.10801\\-119.5834\\19\\47.70671\\-117.6303\\19\\46.91779\\-115.6771\\19\\45.79205\\-113.724\\19\\45.48341\\-111.7709\\19\\43.60434\\-109.8178\\19\\42.65496\\-107.8646\\19\\41.86797\\-105.9115\\19\\40.87684\\-103.9584\\19\\41.10982\\-102.0053\\19\\44.25055\\-100.0521\\19\\44.64565\\-99.71604\\19\\46.59877\\-99.24658\\19\\48.41965\\-100.0521\\19\\50.50502\\-101.3843\\19\\52.45815\\-102.9818\\19\\53.94007\\-103.9584\\19\\56.3644\\-106.4224\\19\\57.43192\\-107.8646\\19\\59.02365\\-109.8178\\19\\60.47009\\-111.7709\\19\\61.25132\\-113.724\\19\\62.22377\\-115.2172\\19\\62.66113\\-115.6771\\19\\63.26627\\-117.6303\\19\\63.67159\\-119.5834\\19\\64.92165\\-121.5365\\19\\65.48069\\-123.4896\\19\\65.62471\\-125.4428\\19\\67.26482\\-129.349\\19\\67.65778\\-131.3021\\19\\68.78693\\-133.2553\\19\\70.4548\\-137.1615\\19\\71.16203\\-139.1146\\19\\72.24849\\-141.0678\\19\\73.08917\\-143.0209\\19\\73.64956\\-144.974\\19\\73.94253\\-145.427\\19\\75.60268\\-148.8803\\19\\76.648\\-150.8334\\19\\78.25517\\-152.7865\\19\\78.96281\\-154.7396\\19\\82.24619\\-158.6459\\19\\82.87045\\-160.599\\19\\84.61873\\-162.5521\\19\\87.17277\\-166.4584\\19\\87.6144\\-166.9057\\19\\89.56753\\-169.3759\\19\\92.29022\\-172.3178\\19\\93.95338\\-176.224\\19\\95.11208\\-180.1303\\19\\95.41927\\-182.0834\\19\\95.43453\\-185.9896\\19\\95.27829\\-187.9428\\19\\95.92374\\-189.8959\\19\\95.94058\\-191.849\\19\\95.44961\\-193.8021\\19\\95.11\\-197.7084\\19\\94.60677\\-199.6615\\19\\94.33835\\-201.6146\\19\\94.32938\\-203.5678\\19\\93.84076\\-205.5209\\19\\93.18081\\-207.474\\19\\93.18081\\-211.3803\\19\\91.52065\\-212.927\\19\\87.6144\\-212.9367\\19"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "188"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "421"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-92.0731\\-216.8828\\21\\-93.69014\\-215.2865\\21\\-92.60489\\-213.3334\\21\\-92.0731\\-212.9869\\21\\-90.11997\\-212.6489\\21\\-89.42386\\-211.3803\\21\\-88.76907\\-209.4271\\21\\-87.77012\\-207.474\\21\\-89.48633\\-205.5209\\21\\-90.11997\\-205.0326\\21\\-90.70869\\-205.5209\\21\\-93.58846\\-207.474\\21\\-94.02622\\-207.8758\\21\\-95.97935\\-206.1287\\21\\-96.48466\\-205.5209\\21\\-96.8591\\-203.5678\\21\\-96.97268\\-201.6146\\21\\-98.42075\\-199.6615\\21\\-98.83487\\-197.7084\\21\\-98.92135\\-193.8021\\21\\-99.2161\\-191.849\\21\\-98.92552\\-189.8959\\21\\-98.83929\\-187.9428\\21\\-98.83487\\-184.0365\\21\\-98.63422\\-182.0834\\21\\-97.60696\\-180.1303\\21\\-96.52557\\-176.224\\21\\-93.27387\\-172.3178\\21\\-92.46004\\-170.3646\\21\\-92.0731\\-169.9461\\21\\-89.40653\\-166.4584\\21\\-88.6377\\-164.5053\\21\\-87.40942\\-162.5521\\21\\-86.57055\\-160.599\\21\\-85.42056\\-158.6459\\21\\-84.61166\\-156.6928\\21\\-83.4204\\-154.7396\\21\\-82.78399\\-152.7865\\21\\-81.44759\\-150.8334\\21\\-81.01739\\-148.8803\\21\\-79.85751\\-146.9271\\21\\-79.38999\\-144.974\\21\\-79.07072\\-143.0209\\21\\-78.0547\\-141.0678\\21\\-77.44981\\-139.1146\\21\\-77.07663\\-137.1615\\21\\-76.4481\\-135.3152\\21\\-75.57552\\-133.2553\\21\\-75.07984\\-131.3021\\21\\-74.47227\\-129.349\\21\\-74.35954\\-127.3959\\21\\-73.02146\\-123.4896\\21\\-72.21633\\-121.5365\\21\\-70.58872\\-118.1028\\21\\-70.29575\\-117.6303\\21\\-67.32034\\-111.7709\\21\\-65.83307\\-109.8178\\21\\-64.72935\\-108.8182\\21\\-62.77623\\-108.4343\\21\\-60.8231\\-109.0138\\21\\-58.86998\\-110.9034\\21\\-57.83121\\-111.7709\\21\\-56.16064\\-113.724\\21\\-57.48651\\-115.6771\\21\\-57.85289\\-117.6303\\21\\-58.35629\\-119.5834\\21\\-58.42608\\-121.5365\\21\\-58.36466\\-123.4896\\21\\-57.74591\\-125.4428\\21\\-55.71377\\-127.3959\\21\\-53.0106\\-131.0828\\21\\-51.05748\\-131.3687\\21\\-50.39444\\-129.349\\21\\-50.89589\\-127.3959\\21\\-50.89589\\-125.4428\\21\\-48.77883\\-121.5365\\21\\-47.8591\\-119.5834\\21\\-47.15123\\-118.8866\\21\\-45.1981\\-118.4552\\21\\-43.24498\\-116.8291\\21\\-41.29185\\-116.5235\\21\\-39.33873\\-116.5332\\21\\-37.3856\\-116.7365\\21\\-35.43248\\-118.3919\\21\\-33.47935\\-118.8281\\21\\-31.52623\\-120.6218\\21\\-29.5731\\-121.3627\\21\\-27.61998\\-120.0885\\21\\-27.61998\\-119.4741\\21\\-29.5731\\-118.5542\\21\\-30.5108\\-117.6303\\21\\-31.19639\\-115.6771\\21\\-29.5731\\-114.6296\\21\\-25.66685\\-116.5123\\21\\-23.71373\\-116.5985\\21\\-22.32598\\-117.6303\\21\\-21.05885\\-119.5834\\21\\-19.80748\\-120.9903\\21\\-17.85435\\-123.0249\\21\\-15.90123\\-124.4054\\21\\-13.9481\\-125.0268\\21\\-11.99498\\-125.8681\\21\\-10.04185\\-126.2467\\21\\-8.088726\\-126.4828\\21\\-2.229351\\-126.4926\\21\\-0.276226\\-126.5345\\21\\1.676899\\-126.3651\\21\\3.630024\\-126.0425\\21\\5.583149\\-126.388\\21\\6.745723\\-127.3959\\21\\8.369536\\-131.3021\\21\\9.962703\\-133.2553\\21\\10.04185\\-135.2084\\21\\8.843969\\-137.1615\\21\\7.536274\\-138.2101\\21\\5.583149\\-139.047\\21\\3.630024\\-140.3442\\21\\1.676899\\-140.4943\\21\\-2.229351\\-140.4622\\21\\-4.182476\\-140.2327\\21\\-5.441728\\-139.1146\\21\\-8.088726\\-136.2525\\21\\-11.18475\\-133.2553\\21\\-13.9481\\-130.5074\\21\\-15.90123\\-129.9109\\21\\-17.85435\\-129.9187\\21\\-19.80748\\-130.4915\\21\\-21.7606\\-131.6277\\21\\-23.71373\\-132.0522\\21\\-25.66685\\-132.3221\\21\\-27.61998\\-133.3917\\21\\-29.5731\\-134.2926\\21\\-30.96536\\-135.2084\\21\\-31.52623\\-135.7145\\21\\-34.30672\\-139.1146\\21\\-39.33873\\-144.158\\21\\-41.29185\\-146.0698\\21\\-43.21414\\-146.9271\\21\\-45.1981\\-148.0512\\21\\-46.92831\\-148.8803\\21\\-47.38969\\-148.8803\\21\\-49.10435\\-147.3442\\21\\-50.05766\\-146.9271\\21\\-49.10435\\-146.3205\\21\\-48.46959\\-144.974\\21\\-48.23876\\-143.0209\\21\\-51.05748\\-142.0874\\21\\-53.0106\\-142.4212\\21\\-53.887\\-144.974\\21\\-53.0106\\-146.1261\\21\\-51.78148\\-146.9271\\21\\-52.53833\\-148.8803\\21\\-53.0106\\-149.2618\\21\\-54.96373\\-149.3849\\21\\-56.91685\\-150.3451\\21\\-58.86998\\-151.9488\\21\\-61.69913\\-154.7396\\21\\-62.45071\\-156.6928\\21\\-63.71133\\-158.6459\\21\\-65.28181\\-160.599\\21\\-65.93683\\-162.5521\\21\\-67.19122\\-164.5053\\21\\-68.30785\\-166.4584\\21\\-69.61695\\-168.4115\\21\\-70.38787\\-170.3646\\21\\-71.53524\\-172.3178\\21\\-72.40542\\-174.2709\\21\\-73.42314\\-176.224\\21\\-73.49796\\-178.1771\\21\\-74.23232\\-180.1303\\21\\-75.42576\\-182.0834\\21\\-76.06377\\-184.0365\\21\\-77.33466\\-185.9896\\21\\-79.32834\\-189.8959\\21\\-79.52589\\-191.849\\21\\-80.90681\\-193.8021\\21\\-81.36723\\-195.7553\\21\\-81.57145\\-197.7084\\21\\-83.05223\\-199.6615\\21\\-83.34997\\-201.6146\\21\\-83.74692\\-205.5209\\21\\-83.78099\\-209.4271\\21\\-83.86387\\-211.3803\\21\\-84.96107\\-213.3334\\21\\-85.55088\\-215.2865\\21\\-86.21372\\-216.0714\\21\\-88.16685\\-217.0158\\21\\-90.11997\\-217.0111\\21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "142"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "422"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "5.583149\\-220.0305\\21\\3.630024\\-218.9453\\21\\1.676899\\-218.072\\21\\-0.276226\\-216.5036\\21\\-1.980159\\-215.2865\\21\\-3.452471\\-213.3334\\21\\-3.95868\\-211.3803\\21\\-4.746092\\-209.4271\\21\\-5.252857\\-207.474\\21\\-5.295405\\-203.5678\\21\\-5.370314\\-201.6146\\21\\-5.555089\\-199.6615\\21\\-5.910241\\-197.7084\\21\\-6.135601\\-197.2545\\21\\-7.656249\\-195.7553\\21\\-8.088726\\-195.5327\\21\\-10.37779\\-197.7084\\21\\-13.9481\\-200.9571\\21\\-15.90123\\-200.9108\\21\\-17.85435\\-200.2583\\21\\-19.80748\\-198.9695\\21\\-21.7606\\-197.1403\\21\\-23.71373\\-196.4945\\21\\-24.69029\\-195.7553\\21\\-25.66685\\-195.2208\\21\\-27.61998\\-194.7713\\21\\-31.52623\\-194.7225\\21\\-33.47935\\-194.5694\\21\\-35.43248\\-193.2891\\21\\-37.3856\\-192.776\\21\\-39.33873\\-192.6381\\21\\-41.29185\\-191.349\\21\\-43.24498\\-190.8173\\21\\-45.1981\\-190.4416\\21\\-47.15123\\-189.2423\\21\\-48.46088\\-187.9428\\21\\-49.77532\\-185.9896\\21\\-50.18467\\-182.0834\\21\\-50.79114\\-180.1303\\21\\-51.05748\\-179.8481\\21\\-53.0106\\-180.6111\\21\\-54.96373\\-182.2461\\21\\-55.15247\\-182.0834\\21\\-55.9747\\-180.1303\\21\\-55.11234\\-176.224\\21\\-55.31025\\-174.2709\\21\\-56.0923\\-170.3646\\21\\-56.31454\\-168.4115\\21\\-54.96373\\-167.4433\\21\\-53.0106\\-167.7901\\21\\-51.95414\\-168.4115\\21\\-49.10435\\-170.3548\\21\\-48.08104\\-168.4115\\21\\-48.02421\\-166.4584\\21\\-48.02421\\-162.5521\\21\\-47.96676\\-160.599\\21\\-47.0931\\-158.6459\\21\\-45.1981\\-157.7566\\21\\-43.24498\\-156.4128\\21\\-41.29185\\-155.7656\\21\\-35.43248\\-155.9062\\21\\-33.79756\\-156.6928\\21\\-31.52623\\-158.3719\\21\\-29.0675\\-160.599\\21\\-27.61998\\-161.6195\\21\\-25.66685\\-161.6481\\21\\-23.71373\\-160.3074\\21\\-21.7606\\-159.7932\\21\\-19.80748\\-159.825\\21\\-17.85435\\-160.9652\\21\\-15.90123\\-161.729\\21\\-13.9481\\-161.9532\\21\\-13.20053\\-162.5521\\21\\-10.39394\\-164.5053\\21\\-8.833998\\-166.4584\\21\\-7.609112\\-168.4115\\21\\-6.083418\\-172.3178\\21\\-5.865067\\-174.2709\\21\\-5.217927\\-176.224\\21\\-4.115892\\-178.1771\\21\\-3.923388\\-182.0834\\21\\-2.981784\\-184.0365\\21\\-2.229351\\-184.7426\\21\\-0.3588582\\-185.9896\\21\\1.676899\\-188.1937\\21\\3.630024\\-188.9103\\21\\5.583149\\-188.9279\\21\\7.536274\\-189.1659\\21\\9.489399\\-189.5704\\21\\11.44252\\-189.6484\\21\\23.16127\\-189.6484\\21\\27.06752\\-189.8883\\21\\29.02065\\-189.7343\\21\\30.97377\\-189.161\\21\\32.58185\\-187.9428\\21\\34.88002\\-185.6641\\21\\36.83315\\-184.8533\\21\\38.78627\\-183.2506\\21\\40.7394\\-182.9384\\21\\42.69252\\-182.5273\\21\\46.59877\\-182.2055\\21\\48.5519\\-182.3652\\21\\50.50502\\-182.9185\\21\\52.45815\\-183.3151\\21\\54.41127\\-185.1612\\21\\56.3644\\-186.7797\\21\\57.48249\\-187.9428\\21\\59.01295\\-189.8959\\21\\59.43424\\-191.849\\21\\59.96669\\-193.8021\\21\\60.00011\\-195.7553\\21\\60.23309\\-197.7084\\21\\62.33712\\-199.6615\\21\\64.1769\\-200.7517\\21\\64.97244\\-201.6146\\21\\65.26755\\-203.5678\\21\\64.1769\\-204.5609\\21\\62.22377\\-202.7915\\21\\60.27065\\-202.3986\\21\\58.86374\\-203.5678\\21\\57.11293\\-207.474\\21\\55.51709\\-209.4271\\21\\54.41127\\-210.6144\\21\\52.45815\\-212.2315\\21\\50.50502\\-214.074\\21\\48.5519\\-214.9195\\21\\46.59877\\-215.5905\\21\\44.64565\\-216.3598\\21\\42.69252\\-216.8429\\21\\38.78627\\-217.0158\\21\\36.83315\\-217.0158\\21\\32.9269\\-218.3054\\21\\30.97377\\-218.8672\\21\\29.02065\\-219.6087\\21\\25.1144\\-220.2407\\21\\23.16127\\-220.2503\\21\\19.25502\\-219.6981\\21\\17.3019\\-219.098\\21\\13.39565\\-220.7689\\21\\11.44252\\-220.8984\\21\\9.489399\\-220.8984\\21\\7.536274\\-220.7689\\21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "423"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "40.7394\\-148.3082\\21\\39.66383\\-146.9271\\21\\38.78627\\-145.2115\\21\\36.83315\\-144.1881\\21\\34.88002\\-143.8736\\21\\32.9269\\-142.2387\\21\\30.97377\\-141.6601\\21\\29.02065\\-140.2855\\21\\27.82597\\-139.1146\\21\\26.24632\\-137.1615\\21\\25.41133\\-135.2084\\21\\23.89761\\-133.2553\\21\\23.85515\\-131.3021\\21\\25.1144\\-130.0998\\21\\27.06752\\-128.5361\\21\\29.02065\\-127.8118\\21\\30.97377\\-127.8023\\21\\32.9269\\-126.5777\\21\\34.04371\\-125.4428\\21\\36.83315\\-122.009\\21\\38.78627\\-121.2325\\21\\40.7394\\-122.7223\\21\\41.51782\\-123.4896\\21\\42.24863\\-125.4428\\21\\43.18369\\-127.3959\\21\\42.7887\\-129.349\\21\\41.59719\\-131.3021\\21\\41.4057\\-133.2553\\21\\42.01605\\-135.2084\\21\\43.43588\\-137.1615\\21\\43.25446\\-139.1146\\21\\42.40491\\-141.0678\\21\\40.27523\\-143.0209\\21\\39.46236\\-144.974\\21\\40.7394\\-145.3175\\21\\42.69252\\-146.4686\\21\\43.66909\\-146.9271\\21\\42.69252\\-147.7023\\21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "108"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "424"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "85.66128\\-212.0553\\21\\85.09934\\-211.3803\\21\\84.85046\\-209.4271\\21\\84.73334\\-207.474\\21\\84.48656\\-205.5209\\21\\83.35133\\-203.5678\\21\\82.95071\\-201.6146\\21\\82.7438\\-199.6615\\21\\80.78746\\-195.7553\\21\\80.40163\\-193.8021\\21\\79.01577\\-191.849\\21\\78.72324\\-189.8959\\21\\77.72107\\-187.9428\\21\\76.82213\\-185.9896\\21\\74.87331\\-182.0834\\21\\73.83321\\-180.1303\\21\\71.03152\\-174.2709\\21\\70.39919\\-172.3178\\21\\69.32839\\-170.3646\\21\\68.08315\\-168.5402\\21\\64.04047\\-164.5053\\21\\63.22068\\-162.5521\\21\\62.22377\\-161.4792\\21\\59.19322\\-158.6459\\21\\58.31752\\-157.7448\\21\\54.41127\\-153.9488\\21\\52.45815\\-152.5274\\21\\50.50502\\-151.5796\\21\\48.5519\\-150.8856\\21\\46.59877\\-149.7722\\21\\45.90914\\-148.8803\\21\\45.11562\\-146.9271\\21\\45.54745\\-144.974\\21\\45.87123\\-141.0678\\21\\46.1734\\-139.1146\\21\\46.17077\\-135.2084\\21\\45.81477\\-133.2553\\21\\46.98812\\-131.3021\\21\\47.85934\\-129.349\\21\\48.02177\\-127.3959\\21\\48.13596\\-123.4896\\21\\47.72453\\-121.5365\\21\\47.48039\\-119.5834\\21\\46.73421\\-117.6303\\21\\45.70474\\-115.6771\\21\\44.1488\\-113.724\\21\\43.13912\\-109.8178\\21\\43.57187\\-107.8646\\21\\43.72677\\-105.9115\\21\\43.77808\\-102.0053\\21\\44.42185\\-100.0521\\21\\44.64565\\-99.82834\\21\\46.59877\\-99.1113\\21\\48.5519\\-99.53845\\21\\50.50502\\-101.0584\\21\\52.45815\\-101.8968\\21\\54.41127\\-103.0358\\21\\55.72835\\-103.9584\\21\\56.3644\\-104.5626\\21\\58.71425\\-107.8646\\21\\59.33711\\-109.8178\\21\\60.91652\\-111.7709\\21\\61.63891\\-113.724\\21\\62.96713\\-115.6771\\21\\63.56985\\-117.6303\\21\\63.7705\\-119.5834\\21\\65.02263\\-121.5365\\21\\65.58381\\-123.4896\\21\\65.70465\\-125.4428\\21\\66.87432\\-127.3959\\21\\67.4761\\-129.349\\21\\69.2653\\-133.2553\\21\\70.35317\\-135.2084\\21\\71.19081\\-137.1615\\21\\71.62241\\-139.1146\\21\\72.74624\\-141.0678\\21\\74.46448\\-144.974\\21\\75.1252\\-146.9271\\21\\76.45758\\-148.8803\\21\\77.04539\\-150.8334\\21\\79.8019\\-154.2223\\21\\80.30721\\-154.7396\\21\\80.84271\\-156.6928\\21\\82.60047\\-158.6459\\21\\84.22482\\-160.599\\21\\84.84007\\-162.5521\\21\\87.6144\\-165.7141\\21\\88.3547\\-166.4584\\21\\91.20191\\-170.3646\\21\\92.6935\\-172.3178\\21\\93.90846\\-174.2709\\21\\95.13393\\-178.1771\\21\\95.95703\\-180.1303\\21\\96.29447\\-182.0834\\21\\96.29836\\-187.9428\\21\\96.51545\\-189.8959\\21\\96.48936\\-191.849\\21\\96.29836\\-193.8021\\21\\96.2896\\-197.7084\\21\\95.94058\\-199.6615\\21\\95.14507\\-201.6146\\21\\94.99221\\-203.5678\\21\\94.25212\\-205.5209\\21\\93.23805\\-207.474\\21\\93.18081\\-211.3803\\21\\91.52065\\-212.9869\\21\\89.56753\\-213.0294\\21\\87.6144\\-212.9367\\21"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "184"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "425"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-92.0731\\-216.9096\\23\\-93.73051\\-215.2865\\23\\-92.0731\\-213.9568\\23\\-90.11997\\-213.3967\\23\\-89.72324\\-211.3803\\23\\-89.00608\\-209.4271\\23\\-88.16685\\-208.1584\\23\\-87.51824\\-207.474\\23\\-88.16685\\-206.8054\\23\\-90.11997\\-205.3214\\23\\-92.0731\\-206.58\\23\\-94.02622\\-208.4186\\23\\-95.97935\\-207.9928\\23\\-96.46763\\-207.474\\23\\-97.58595\\-203.5678\\23\\-97.72077\\-201.6146\\23\\-98.76503\\-199.6615\\23\\-99.22947\\-197.7084\\23\\-99.25707\\-195.7553\\23\\-99.41476\\-193.8021\\23\\-99.6739\\-191.849\\23\\-99.42364\\-187.9428\\23\\-99.25006\\-184.0365\\23\\-98.62152\\-180.1303\\23\\-97.61766\\-178.1771\\23\\-97.03069\\-176.224\\23\\-95.97935\\-174.4558\\23\\-94.52599\\-172.3178\\23\\-92.88005\\-170.3646\\23\\-91.37556\\-168.4115\\23\\-90.58472\\-166.4584\\23\\-89.38878\\-164.5053\\23\\-88.52367\\-162.5521\\23\\-88.16685\\-162.176\\23\\-86.21372\\-159.2757\\23\\-85.70841\\-158.6459\\23\\-85.11084\\-156.6928\\23\\-83.73047\\-154.7396\\23\\-83.43428\\-152.7865\\23\\-82.69686\\-150.8334\\23\\-81.42312\\-148.8803\\23\\-81.01392\\-146.9271\\23\\-79.87474\\-144.974\\23\\-79.38989\\-143.0209\\23\\-79.07072\\-141.0678\\23\\-78.07571\\-139.1146\\23\\-77.45848\\-137.1615\\23\\-77.00222\\-135.2084\\23\\-76.14413\\-133.2553\\23\\-74.38647\\-127.3959\\23\\-74.18016\\-125.4428\\23\\-73.22142\\-123.4896\\23\\-72.39324\\-121.5365\\23\\-71.78658\\-119.5834\\23\\-70.93525\\-117.6303\\23\\-69.84445\\-115.6771\\23\\-69.01746\\-113.724\\23\\-68.6356\\-113.1673\\23\\-66.86068\\-109.8178\\23\\-64.72935\\-107.8262\\23\\-62.77623\\-106.9621\\23\\-60.8231\\-108.1138\\23\\-58.86998\\-108.9286\\23\\-56.91685\\-109.1396\\23\\-56.20299\\-109.8178\\23\\-55.72535\\-111.7709\\23\\-55.54859\\-113.724\\23\\-56.0186\\-115.6771\\23\\-57.45507\\-117.6303\\23\\-57.7681\\-119.5834\\23\\-57.91464\\-121.5365\\23\\-58.39036\\-123.4896\\23\\-57.90258\\-125.4428\\23\\-56.24706\\-127.3959\\23\\-55.67889\\-129.349\\23\\-53.88053\\-131.3021\\23\\-53.0106\\-132.0552\\23\\-51.05748\\-132.488\\23\\-49.50812\\-133.2553\\23\\-49.10435\\-133.5912\\23\\-48.61607\\-133.2553\\23\\-48.77883\\-131.3021\\23\\-50.27729\\-129.349\\23\\-50.97671\\-127.3959\\23\\-50.82175\\-125.4428\\23\\-49.78164\\-123.4896\\23\\-48.26661\\-121.5365\\23\\-46.51313\\-119.5834\\23\\-44.00508\\-117.6303\\23\\-43.24498\\-116.8855\\23\\-41.29185\\-116.488\\23\\-39.33873\\-116.472\\23\\-37.3856\\-116.5751\\23\\-35.43248\\-117.2023\\23\\-33.47935\\-118.726\\23\\-31.52623\\-120.3885\\23\\-30.26639\\-119.5834\\23\\-30.7061\\-117.6303\\23\\-30.37769\\-115.6771\\23\\-29.5731\\-115.0143\\23\\-27.61998\\-114.9176\\23\\-25.66685\\-116.3912\\23\\-24.79737\\-117.6303\\23\\-23.71373\\-118.8534\\23\\-21.7606\\-119.1487\\23\\-19.80748\\-120.6925\\23\\-17.85435\\-122.7093\\23\\-15.90123\\-124.0279\\23\\-13.9481\\-124.4228\\23\\-11.99498\\-124.5888\\23\\-8.088726\\-124.5463\\23\\-6.135601\\-124.6117\\23\\-2.229351\\-124.6388\\23\\1.676899\\-125.7893\\23\\3.630024\\-125.7246\\23\\5.583149\\-125.9564\\23\\7.022591\\-127.3959\\23\\7.26574\\-129.349\\23\\8.265953\\-131.3021\\23\\8.875712\\-133.2553\\23\\8.730388\\-135.2084\\23\\9.122411\\-137.1615\\23\\8.434081\\-139.1146\\23\\7.536274\\-139.9982\\23\\5.583149\\-142.2752\\23\\3.642544\\-143.0209\\23\\1.676899\\-144.1685\\23\\-2.229351\\-144.19\\23\\-4.115892\\-143.0209\\23\\-5.142557\\-141.0678\\23\\-5.507069\\-139.1146\\23\\-7.284788\\-137.1615\\23\\-11.19356\\-133.2553\\23\\-12.64431\\-131.3021\\23\\-13.9481\\-130.0632\\23\\-15.90123\\-129.6638\\23\\-17.85435\\-129.6638\\23\\-21.7606\\-130.3121\\23\\-25.66685\\-131.7641\\23\\-27.61998\\-132.0843\\23\\-29.03886\\-133.2553\\23\\-32.34325\\-137.1615\\23\\-39.33873\\-144.158\\23\\-41.29185\\-145.8285\\23\\-43.24498\\-146.373\\23\\-45.1981\\-147.6787\\23\\-47.15123\\-148.4066\\23\\-49.10435\\-149.6064\\23\\-51.05748\\-149.5771\\23\\-53.0106\\-149.954\\23\\-54.96373\\-150.4564\\23\\-56.91685\\-150.7249\\23\\-58.86998\\-151.9985\\23\\-61.69913\\-154.7396\\23\\-63.33507\\-156.6928\\23\\-64.47026\\-158.6459\\23\\-65.96828\\-160.599\\23\\-68.38293\\-164.5053\\23\\-70.58872\\-166.8412\\23\\-71.55566\\-168.4115\\23\\-72.31805\\-170.3646\\23\\-73.51363\\-172.3178\\23\\-73.75747\\-174.2709\\23\\-75.03237\\-176.224\\23\\-75.48116\\-178.1771\\23\\-77.43861\\-182.0834\\23\\-77.55304\\-184.0365\\23\\-78.97729\\-185.9896\\23\\-79.49874\\-187.9428\\23\\-80.92913\\-189.8959\\23\\-81.44179\\-191.849\\23\\-81.54585\\-193.8021\\23\\-82.83961\\-195.7553\\23\\-83.41425\\-197.7084\\23\\-83.78099\\-201.6146\\23\\-84.95448\\-203.5678\\23\\-85.34332\\-205.5209\\23\\-85.40817\\-207.474\\23\\-84.83868\\-209.4271\\23\\-84.96107\\-211.3803\\23\\-85.4813\\-213.3334\\23\\-85.77904\\-215.2865\\23\\-86.21372\\-215.7957\\23\\-88.16685\\-216.9578\\23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "426"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-47.15123\\-112.0964\\23\\-47.57691\\-111.7709\\23\\-48.59969\\-109.8178\\23\\-47.15123\\-108.6254\\23\\-45.1981\\-108.7699\\23\\-43.24498\\-108.4188\\23\\-41.29185\\-109.2332\\23\\-40.7948\\-109.8178\\23\\-40.94308\\-111.7709\\23\\-41.29185\\-112.129\\23\\-43.24498\\-112.5901\\23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "141"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "427"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "3.630024\\-219.7547\\23\\1.676899\\-218.4812\\23\\-0.276226\\-217.7616\\23\\-2.229351\\-216.097\\23\\-3.061238\\-215.2865\\23\\-4.718739\\-213.3334\\23\\-5.304203\\-211.3803\\23\\-5.500061\\-209.4271\\23\\-6.000165\\-207.474\\23\\-6.143948\\-205.5209\\23\\-6.948161\\-203.5678\\23\\-8.088726\\-202.7468\\23\\-10.04185\\-202.9902\\23\\-11.99498\\-204.9085\\23\\-13.9481\\-204.9448\\23\\-15.90123\\-204.5401\\23\\-17.85435\\-203.2401\\23\\-19.80748\\-202.6241\\23\\-21.7606\\-202.5817\\23\\-23.71373\\-200.9804\\23\\-25.66685\\-200.5858\\23\\-27.61998\\-199.1183\\23\\-29.5731\\-198.6908\\23\\-33.47935\\-198.5746\\23\\-35.43248\\-197.289\\23\\-37.3856\\-196.7318\\23\\-41.29185\\-196.5932\\23\\-43.24498\\-195.2028\\23\\-45.1981\\-194.7432\\23\\-47.15123\\-194.6067\\23\\-49.10435\\-193.2046\\23\\-50.43373\\-191.849\\23\\-51.89688\\-189.8959\\23\\-52.10274\\-185.9896\\23\\-52.77488\\-184.0365\\23\\-53.0106\\-183.7991\\23\\-54.96373\\-183.3976\\23\\-56.70456\\-184.0365\\23\\-57.02536\\-184.0365\\23\\-56.69149\\-182.0834\\23\\-55.87247\\-180.1303\\23\\-54.28325\\-178.1771\\23\\-54.96373\\-176.3231\\23\\-55.86994\\-174.2709\\23\\-56.02387\\-172.3178\\23\\-56.43745\\-170.3646\\23\\-55.70225\\-168.4115\\23\\-54.96373\\-167.783\\23\\-53.0106\\-167.9495\\23\\-52.43054\\-168.4115\\23\\-50.80999\\-170.3646\\23\\-51.21907\\-172.3178\\23\\-51.05748\\-172.5097\\23\\-49.10435\\-173.3939\\23\\-47.57553\\-172.3178\\23\\-46.43139\\-170.3646\\23\\-46.16598\\-168.4115\\23\\-46.03447\\-162.5521\\23\\-45.1981\\-160.6539\\23\\-42.7053\\-158.6459\\23\\-41.29185\\-157.8402\\23\\-37.3856\\-157.8305\\23\\-35.43248\\-158.5645\\23\\-33.47935\\-159.7723\\23\\-31.87366\\-160.599\\23\\-29.5731\\-162.6361\\23\\-27.61998\\-163.7158\\23\\-23.71373\\-163.705\\23\\-21.7606\\-162.5761\\23\\-19.80748\\-162.4855\\23\\-17.85435\\-163.608\\23\\-13.9481\\-163.7436\\23\\-11.99498\\-164.8464\\23\\-10.04185\\-166.726\\23\\-8.798469\\-168.4115\\23\\-7.558592\\-170.3646\\23\\-6.069017\\-174.2709\\23\\-4.954981\\-178.1771\\23\\-4.087735\\-180.1303\\23\\-3.463686\\-182.0834\\23\\-2.229351\\-183.2754\\23\\-0.276226\\-184.8495\\23\\1.676899\\-185.7288\\23\\3.630024\\-187.3115\\23\\5.583149\\-187.8762\\23\\7.536274\\-188.6318\\23\\9.489399\\-189.1934\\23\\11.44252\\-189.6484\\23\\19.25502\\-189.6484\\23\\23.16127\\-189.8583\\23\\25.1144\\-190.6505\\23\\27.06752\\-190.9929\\23\\29.02065\\-190.5452\\23\\30.97377\\-188.9917\\23\\34.88002\\-185.0798\\23\\38.78627\\-183.0348\\23\\40.7394\\-182.3425\\23\\42.69252\\-182.2055\\23\\44.64565\\-182.2055\\23\\46.59877\\-182.091\\23\\48.5519\\-182.0758\\23\\50.50502\\-182.3539\\23\\52.45815\\-183.168\\23\\54.41127\\-184.8035\\23\\56.3644\\-185.3754\\23\\58.87164\\-187.9428\\23\\59.43943\\-189.8959\\23\\60.89918\\-191.849\\23\\61.20702\\-193.8021\\23\\61.21896\\-197.7084\\23\\62.22377\\-198.9062\\23\\64.1769\\-200.3446\\23\\65.35535\\-201.6146\\23\\64.1769\\-203.4303\\23\\62.22377\\-202.4254\\23\\60.27065\\-202.5771\\23\\59.3589\\-203.5678\\23\\58.97365\\-205.5209\\23\\57.56899\\-207.474\\23\\56.87315\\-209.4271\\23\\54.41127\\-211.8163\\23\\52.45815\\-212.6192\\23\\50.50502\\-214.1135\\23\\48.5519\\-215.0047\\23\\46.59877\\-215.039\\23\\44.64565\\-215.6433\\23\\40.7394\\-216.3598\\23\\38.78627\\-216.8503\\23\\34.88002\\-216.9227\\23\\32.9269\\-217.5652\\23\\30.97377\\-217.8958\\23\\29.02065\\-217.9351\\23\\27.06752\\-218.3656\\23\\25.1144\\-219.4633\\23\\23.16127\\-219.4402\\23\\21.20815\\-218.3763\\23\\19.25502\\-218.3305\\23\\17.3019\\-218.8888\\23\\15.34877\\-219.9927\\23\\13.39565\\-220.8868\\23\\7.536274\\-220.8868\\23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "428"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "40.59117\\-148.8803\\23\\38.78627\\-147.7816\\23\\36.83315\\-145.849\\23\\34.88002\\-144.5032\\23\\32.9269\\-143.5307\\23\\32.40732\\-143.0209\\23\\29.3989\\-141.0678\\23\\29.02065\\-140.7212\\23\\27.06752\\-139.7386\\23\\26.44361\\-139.1146\\23\\25.46317\\-137.1615\\23\\24.2742\\-135.2084\\23\\23.63494\\-133.2553\\23\\23.16127\\-131.2201\\23\\25.80514\\-129.349\\23\\27.06752\\-128.5361\\23\\29.02065\\-127.8118\\23\\30.97377\\-127.8023\\23\\32.9269\\-126.5777\\23\\34.00917\\-125.4428\\23\\35.02863\\-123.4896\\23\\35.66431\\-121.5365\\23\\36.83315\\-120.6043\\23\\38.78627\\-120.8285\\23\\41.48275\\-123.4896\\23\\42.30558\\-125.4428\\23\\43.49988\\-127.3959\\23\\43.67356\\-129.349\\23\\41.98096\\-131.3021\\23\\41.79206\\-133.2553\\23\\41.85736\\-135.2084\\23\\41.77856\\-137.1615\\23\\43.4441\\-139.1146\\23\\43.73884\\-141.0678\\23\\41.78302\\-144.974\\23\\42.4107\\-146.9271\\23\\40.89602\\-148.8803\\23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "109"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "429"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "89.56753\\-213.9257\\23\\85.66128\\-211.8248\\23\\85.28425\\-211.3803\\23\\84.94707\\-207.474\\23\\84.75888\\-203.5678\\23\\84.75888\\-201.6146\\23\\84.30616\\-199.6615\\23\\82.92783\\-197.7084\\23\\82.75211\\-195.7553\\23\\81.58987\\-193.8021\\23\\80.80982\\-191.849\\23\\80.28725\\-189.8959\\23\\78.99195\\-187.9428\\23\\78.8159\\-185.9896\\23\\72.94202\\-174.2709\\23\\71.02653\\-170.3646\\23\\70.03628\\-168.6418\\23\\65.94302\\-164.5053\\23\\64.68871\\-162.5521\\23\\62.22377\\-159.9358\\23\\60.27065\\-158.7544\\23\\58.18982\\-156.6928\\23\\56.3644\\-155.4758\\23\\54.41127\\-153.8929\\23\\52.45815\\-153.1013\\23\\50.50502\\-151.9639\\23\\48.22006\\-150.8334\\23\\47.25861\\-148.8803\\23\\47.08706\\-146.9271\\23\\45.89077\\-144.974\\23\\46.24772\\-143.0209\\23\\46.28065\\-141.0678\\23\\46.1734\\-137.1615\\23\\46.18283\\-133.2553\\23\\47.64545\\-131.3021\\23\\48.09892\\-129.349\\23\\48.15517\\-125.4428\\23\\48.06362\\-123.4896\\23\\47.38503\\-121.5365\\23\\45.75599\\-119.5834\\23\\45.54743\\-117.6303\\23\\44.00734\\-115.6771\\23\\43.05165\\-113.724\\23\\42.39956\\-111.7709\\23\\42.42199\\-109.8178\\23\\43.75909\\-107.8646\\23\\45.40248\\-105.9115\\23\\45.69197\\-103.9584\\23\\45.71442\\-102.0053\\23\\46.59877\\-100.613\\23\\48.5519\\-100.1329\\23\\50.50502\\-100.8306\\23\\52.45815\\-101.0545\\23\\54.41127\\-101.8959\\23\\56.3644\\-103.3544\\23\\58.55325\\-105.9115\\23\\59.31513\\-107.8646\\23\\59.87392\\-109.8178\\23\\61.02372\\-111.7709\\23\\61.80783\\-113.724\\23\\63.00407\\-115.6771\\23\\63.69728\\-117.6303\\23\\64.62079\\-119.5834\\23\\65.27832\\-121.5365\\23\\65.59989\\-123.4896\\23\\66.51941\\-125.4428\\23\\67.29369\\-127.3959\\23\\67.63926\\-129.349\\23\\68.77673\\-131.3021\\23\\69.58329\\-133.2553\\23\\70.67048\\-135.2084\\23\\71.62241\\-137.1615\\23\\72.33592\\-139.1146\\23\\73.21499\\-141.0678\\23\\74.43369\\-143.0209\\23\\75.05663\\-144.974\\23\\76.33954\\-146.9271\\23\\76.99658\\-148.8803\\23\\78.38699\\-150.8334\\23\\78.9602\\-152.7865\\23\\80.59333\\-154.7396\\23\\81.23307\\-156.6928\\23\\82.64568\\-158.6459\\23\\84.59881\\-160.599\\23\\86.15833\\-162.5521\\23\\87.30428\\-164.5053\\23\\87.6144\\-164.8196\\23\\90.37083\\-168.4115\\23\\92.22839\\-170.3646\\23\\93.15896\\-172.3178\\23\\94.26234\\-174.2709\\23\\95.4269\\-176.8326\\23\\95.96317\\-178.1771\\23\\96.4942\\-180.1303\\23\\96.90918\\-182.0834\\23\\97.07606\\-185.9896\\23\\97.07606\\-187.9428\\23\\97.20564\\-189.8959\\23\\97.19302\\-191.849\\23\\97.07606\\-193.8021\\23\\97.0545\\-197.7084\\23\\96.54881\\-199.6615\\23\\96.32534\\-201.6146\\23\\95.90651\\-203.5678\\23\\94.70049\\-205.5209\\23\\93.22629\\-209.4271\\23\\93.18081\\-211.3803\\23\\91.90986\\-213.3334\\23\\91.52065\\-213.6799\\23"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "173"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "430"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-95.97935\\-208.6449\\25\\-97.02536\\-207.474\\25\\-98.53221\\-205.5209\\25\\-98.86818\\-203.5678\\25\\-98.90483\\-201.6146\\25\\-99.08659\\-199.6615\\25\\-99.61507\\-197.7084\\25\\-99.62651\\-195.7553\\25\\-100.5418\\-193.8021\\25\\-100.8784\\-191.849\\25\\-100.8784\\-187.9428\\25\\-100.612\\-185.9896\\25\\-99.62651\\-184.0365\\25\\-99.52878\\-182.0834\\25\\-98.98185\\-180.1303\\25\\-98.61858\\-178.1771\\25\\-97.60696\\-176.224\\25\\-96.74167\\-174.2709\\25\\-95.17033\\-172.3178\\25\\-93.95647\\-170.3646\\25\\-92.0731\\-167.6687\\25\\-91.34694\\-166.4584\\25\\-90.53592\\-164.5053\\25\\-90.11997\\-164.0733\\25\\-87.49735\\-160.599\\25\\-86.71944\\-158.6459\\25\\-85.50571\\-156.6928\\25\\-84.78645\\-154.7396\\25\\-83.73865\\-152.7865\\25\\-83.12378\\-150.8334\\25\\-81.79379\\-148.8803\\25\\-81.03082\\-144.974\\25\\-79.89239\\-143.0209\\25\\-79.38979\\-141.0678\\25\\-79.06407\\-139.1146\\25\\-78.08641\\-137.1615\\25\\-76.35336\\-133.2553\\25\\-76.13329\\-131.3021\\25\\-75.16128\\-129.349\\25\\-74.38647\\-127.3959\\25\\-74.29554\\-125.4428\\25\\-73.24798\\-123.4896\\25\\-72.41978\\-121.5365\\25\\-72.28276\\-119.5834\\25\\-71.20634\\-117.6303\\25\\-70.3069\\-115.6771\\25\\-69.83862\\-113.724\\25\\-68.6356\\-111.5455\\25\\-67.87971\\-109.8178\\25\\-66.68247\\-108.2417\\25\\-64.37964\\-105.9115\\25\\-62.77623\\-104.499\\25\\-60.8231\\-106.2284\\25\\-56.91685\\-107.8873\\25\\-55.23426\\-109.8178\\25\\-54.89663\\-113.724\\25\\-55.50195\\-115.6771\\25\\-55.98956\\-117.6303\\25\\-56.92448\\-119.5834\\25\\-57.5383\\-121.5365\\25\\-57.74825\\-123.4896\\25\\-57.6059\\-125.4428\\25\\-55.98423\\-129.349\\25\\-53.0106\\-132.3448\\25\\-51.05748\\-134.0796\\25\\-50.11171\\-135.2084\\25\\-49.10435\\-136.1892\\25\\-47.44781\\-135.2084\\25\\-47.87368\\-133.2553\\25\\-49.6131\\-131.3021\\25\\-50.58663\\-129.349\\25\\-50.86914\\-127.3959\\25\\-50.16837\\-125.4428\\25\\-49.22642\\-123.4896\\25\\-47.85711\\-121.5365\\25\\-45.1981\\-118.8635\\25\\-43.22227\\-117.6303\\25\\-41.29185\\-116.5661\\25\\-39.33873\\-116.472\\25\\-37.3856\\-116.5235\\25\\-35.43248\\-116.7873\\25\\-33.47935\\-118.5254\\25\\-31.52623\\-118.5736\\25\\-29.5731\\-116.6733\\25\\-27.61998\\-116.5396\\25\\-25.66685\\-118.032\\25\\-23.71373\\-118.6351\\25\\-21.7606\\-118.6431\\25\\-19.80748\\-119.8558\\25\\-18.73326\\-121.5365\\25\\-17.85435\\-122.5732\\25\\-15.90123\\-123.9516\\25\\-11.99498\\-124.0967\\25\\-10.04185\\-123.0832\\25\\-8.088726\\-122.3351\\25\\-5.81008\\-123.4896\\25\\-4.182476\\-124.0967\\25\\-2.229351\\-124.1039\\25\\-0.276226\\-124.4214\\25\\1.676899\\-124.5617\\25\\3.630024\\-124.5617\\25\\5.006706\\-125.4428\\25\\5.583149\\-125.9552\\25\\6.699888\\-127.3959\\25\\7.71066\\-131.3021\\25\\8.098207\\-133.2553\\25\\7.882796\\-135.2084\\25\\8.352305\\-137.1615\\25\\7.980166\\-139.1146\\25\\7.074307\\-141.0678\\25\\6.818501\\-143.0209\\25\\5.583149\\-145.0941\\25\\3.630024\\-146.2068\\25\\-0.276226\\-146.2643\\25\\-2.229351\\-147.1674\\25\\-4.182476\\-145.4869\\25\\-4.633673\\-144.974\\25\\-5.469301\\-143.0209\\25\\-5.150434\\-141.0678\\25\\-5.366617\\-139.1146\\25\\-8.088726\\-136.3367\\25\\-11.19356\\-133.2553\\25\\-11.99498\\-131.6524\\25\\-13.58952\\-129.349\\25\\-13.9481\\-129.0389\\25\\-15.90123\\-128.4192\\25\\-17.85435\\-128.3939\\25\\-21.7606\\-128.4805\\25\\-23.71373\\-129.4976\\25\\-27.61998\\-130.9948\\25\\-27.95544\\-131.3021\\25\\-29.5731\\-133.4236\\25\\-30.38182\\-135.2084\\25\\-32.30847\\-137.1615\\25\\-39.33873\\-144.1389\\25\\-41.29185\\-145.278\\25\\-45.1981\\-146.4832\\25\\-47.15123\\-148.1237\\25\\-49.10435\\-149.9433\\25\\-51.05748\\-149.9169\\25\\-53.0106\\-150.0511\\25\\-54.96373\\-151.1039\\25\\-56.91685\\-151.648\\25\\-58.86998\\-152.4935\\25\\-60.8231\\-153.8298\\25\\-62.77623\\-155.7757\\25\\-64.72935\\-157.3818\\25\\-66.02634\\-158.6459\\25\\-66.68247\\-159.8016\\25\\-68.42241\\-162.5521\\25\\-72.54185\\-166.7065\\25\\-73.48734\\-168.4115\\25\\-74.32059\\-170.3646\\25\\-75.47153\\-172.3178\\25\\-75.51299\\-174.2709\\25\\-76.58308\\-176.224\\25\\-77.45192\\-178.1771\\25\\-78.48581\\-180.1303\\25\\-79.41738\\-182.0834\\25\\-79.43034\\-184.0365\\25\\-80.55112\\-185.9896\\25\\-82.30747\\-189.7738\\25\\-83.38085\\-191.849\\25\\-83.4394\\-193.8021\\25\\-84.17983\\-195.7553\\25\\-85.31579\\-197.7084\\25\\-85.40817\\-201.6146\\25\\-85.5852\\-203.5678\\25\\-86.21372\\-204.6323\\25\\-87.22018\\-205.5209\\25\\-88.16685\\-206.051\\25\\-92.0731\\-206.7416\\25\\-94.02622\\-208.4969\\25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "431"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-92.0731\\-216.3667\\25\\-93.13712\\-215.2865\\25\\-92.0731\\-213.6157\\25\\-90.11997\\-212.453\\25\\-88.16685\\-209.8447\\25\\-86.21372\\-209.1123\\25\\-85.89891\\-209.4271\\25\\-85.52468\\-211.3803\\25\\-85.76074\\-213.3334\\25\\-86.89894\\-215.2865\\25\\-88.16685\\-216.4944\\25\\-90.11997\\-217.0158\\25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "432"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-45.34671\\-111.7709\\25\\-45.93541\\-109.8178\\25\\-45.1981\\-109.0163\\25\\-43.24498\\-107.4479\\25\\-41.29185\\-107.2873\\25\\-38.72631\\-109.8178\\25\\-40.20206\\-111.7709\\25\\-41.29185\\-112.9903\\25\\-43.24498\\-113.601\\25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "139"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "433"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "3.630024\\-219.6367\\25\\1.676899\\-218.8998\\25\\-0.276226\\-218.0519\\25\\-3.130406\\-215.2865\\25\\-5.052227\\-213.3334\\25\\-5.853774\\-211.3803\\25\\-6.800369\\-209.4271\\25\\-8.088726\\-207.2623\\25\\-10.04185\\-207.107\\25\\-11.99498\\-208.571\\25\\-13.9481\\-207.5443\\25\\-15.90123\\-206.2224\\25\\-17.85435\\-204.6973\\25\\-21.7606\\-204.6144\\25\\-23.71373\\-203.6965\\25\\-25.66685\\-202.6358\\25\\-29.5731\\-202.5958\\25\\-31.52623\\-201.1606\\25\\-33.47935\\-200.67\\25\\-39.33873\\-200.589\\25\\-41.29185\\-199.4258\\25\\-43.24498\\-198.7133\\25\\-45.1981\\-198.6255\\25\\-47.15123\\-197.5214\\25\\-49.10435\\-196.7509\\25\\-51.05748\\-195.5501\\25\\-53.0106\\-192.0725\\25\\-53.20167\\-191.849\\25\\-53.93963\\-189.8959\\25\\-53.9828\\-187.9428\\25\\-54.96373\\-185.9669\\25\\-56.91685\\-186.2896\\25\\-57.22791\\-185.9896\\25\\-57.7966\\-184.0365\\25\\-55.7751\\-180.1303\\25\\-54.96373\\-178.277\\25\\-55.64279\\-176.224\\25\\-55.82451\\-174.2709\\25\\-55.59927\\-172.3178\\25\\-54.79603\\-170.3646\\25\\-53.0106\\-169.3125\\25\\-51.32719\\-170.3646\\25\\-52.02884\\-174.2709\\25\\-53.0106\\-175.7242\\25\\-53.75739\\-176.224\\25\\-53.0106\\-177.0484\\25\\-51.05748\\-177.1635\\25\\-49.10435\\-176.3342\\25\\-46.77709\\-174.2709\\25\\-46.10702\\-172.3178\\25\\-45.62347\\-170.3646\\25\\-44.90317\\-168.4115\\25\\-44.38673\\-166.4584\\25\\-44.13643\\-164.5053\\25\\-43.24498\\-162.7855\\25\\-41.08746\\-160.599\\25\\-39.33873\\-159.6431\\25\\-37.3856\\-160.3858\\25\\-35.43248\\-161.6954\\25\\-33.47935\\-162.4996\\25\\-31.52623\\-163.7104\\25\\-29.78236\\-164.5053\\25\\-27.61998\\-165.6635\\25\\-23.71373\\-165.7025\\25\\-21.7606\\-165.0099\\25\\-19.80748\\-163.8358\\25\\-15.90123\\-165.3208\\25\\-13.9481\\-165.7141\\25\\-11.99498\\-166.8153\\25\\-10.04185\\-168.7441\\25\\-8.813099\\-170.3646\\25\\-7.583412\\-172.3178\\25\\-6.861763\\-174.2709\\25\\-5.986994\\-176.224\\25\\-5.521312\\-178.1771\\25\\-4.928127\\-180.1303\\25\\-3.139792\\-182.0834\\25\\-2.229351\\-182.8927\\25\\-0.276226\\-183.2599\\25\\1.676899\\-184.8577\\25\\3.630024\\-185.6967\\25\\5.583149\\-187.1912\\25\\7.536274\\-187.7942\\25\\9.489399\\-188.9694\\25\\11.44252\\-189.6484\\25\\13.39565\\-189.6484\\25\\17.3019\\-189.8151\\25\\19.25502\\-189.8437\\25\\21.20815\\-190.6821\\25\\23.16127\\-191.0874\\25\\27.06752\\-191.6133\\25\\29.02065\\-191.242\\25\\30.97377\\-190.0598\\25\\33.12919\\-187.9428\\25\\34.32591\\-185.9896\\25\\34.88002\\-185.3574\\25\\36.83315\\-184.0138\\25\\38.78627\\-183.0092\\25\\40.7394\\-182.2055\\25\\44.64565\\-182.2055\\25\\46.59877\\-181.2773\\25\\48.5519\\-181.334\\25\\50.50502\\-182.3072\\25\\52.45815\\-183.1432\\25\\56.3644\\-185.1699\\25\\59.13208\\-187.9428\\25\\60.88494\\-189.8959\\25\\61.31427\\-191.849\\25\\61.63143\\-193.8021\\25\\61.63143\\-195.7553\\25\\61.77079\\-197.7084\\25\\62.22377\\-198.2031\\25\\64.1769\\-199.6868\\25\\66.13003\\-200.9655\\25\\66.73901\\-201.6146\\25\\66.13003\\-202.314\\25\\64.1769\\-202.6311\\25\\62.22377\\-202.4214\\25\\60.93407\\-203.5678\\25\\59.38167\\-205.5209\\25\\59.28124\\-207.474\\25\\58.31752\\-209.275\\25\\56.32684\\-211.3803\\25\\54.41127\\-212.6131\\25\\52.45815\\-212.9564\\25\\50.50502\\-214.1221\\25\\48.5519\\-214.8946\\25\\44.64565\\-214.925\\25\\42.69252\\-215.0009\\25\\38.78627\\-215.929\\25\\32.9269\\-215.929\\25\\27.06752\\-216.0069\\25\\23.16127\\-216.1025\\25\\21.20815\\-216.0538\\25\\19.25502\\-216.6755\\25\\15.34877\\-219.9341\\25\\13.39565\\-220.8076\\25\\11.44252\\-220.8984\\25\\7.536274\\-220.8868\\25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "434"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "38.78627\\-147.6583\\25\\36.83315\\-146.4832\\25\\34.88002\\-145.8562\\25\\32.9269\\-144.1349\\25\\30.97377\\-142.5679\\25\\29.02065\\-142.0223\\25\\27.06752\\-140.6614\\25\\25.1144\\-139.6887\\25\\24.51863\\-139.1146\\25\\23.59596\\-135.2084\\25\\22.82518\\-133.2553\\25\\22.77433\\-131.3021\\25\\23.16127\\-130.8627\\25\\25.56717\\-129.349\\25\\27.06752\\-128.4983\\25\\29.02065\\-127.8118\\25\\30.97377\\-127.7424\\25\\32.9269\\-126.5105\\25\\33.94437\\-125.4428\\25\\35.71355\\-121.5365\\25\\36.83315\\-120.5972\\25\\38.78627\\-120.8041\\25\\41.48647\\-123.4896\\25\\43.23693\\-125.4428\\25\\43.7944\\-127.3959\\25\\43.92531\\-129.349\\25\\43.55099\\-131.3021\\25\\42.24863\\-133.2553\\25\\41.99709\\-135.2084\\25\\42.46716\\-137.1615\\25\\43.80424\\-139.1146\\25\\44.06078\\-141.0678\\25\\43.73628\\-143.0209\\25\\42.51814\\-144.974\\25\\42.55709\\-146.9271\\25\\40.7394\\-148.4007\\25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "106"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "435"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "89.56753\\-214.1997\\25\\87.6144\\-212.4747\\25\\86.76804\\-211.3803\\25\\86.3646\\-209.4271\\25\\85.24533\\-207.474\\25\\85.19931\\-205.5209\\25\\86.12544\\-203.5678\\25\\86.22012\\-201.6146\\25\\84.9229\\-199.6615\\25\\84.78152\\-197.7084\\25\\84.23927\\-195.7553\\25\\82.87942\\-193.8021\\25\\82.80972\\-191.849\\25\\80.81381\\-187.9428\\25\\80.75704\\-185.9896\\25\\79.88267\\-184.0365\\25\\78.82534\\-182.0834\\25\\76.86761\\-178.1771\\25\\75.9809\\-176.224\\25\\74.90527\\-174.2709\\25\\74.04409\\-172.3178\\25\\71.9894\\-168.6693\\25\\69.8395\\-166.4584\\25\\66.13003\\-162.7715\\25\\64.02829\\-160.599\\25\\59.91017\\-156.6928\\25\\58.31752\\-155.4942\\25\\56.3644\\-154.2847\\25\\54.41127\\-153.4883\\25\\52.45815\\-153.1226\\25\\50.50502\\-151.9781\\25\\49.07409\\-150.8334\\25\\47.8693\\-148.8803\\25\\48.02387\\-146.9271\\25\\47.78661\\-144.974\\25\\47.68719\\-141.0678\\25\\47.06962\\-139.1146\\25\\46.16812\\-137.1615\\25\\46.26268\\-135.2084\\25\\47.36923\\-133.2553\\25\\47.93761\\-131.3021\\25\\48.15517\\-129.349\\25\\48.13596\\-125.4428\\25\\47.67393\\-123.4896\\25\\45.88434\\-121.5365\\25\\44.88137\\-119.5834\\25\\43.73732\\-117.6303\\25\\42.04324\\-115.6771\\25\\41.6489\\-113.724\\25\\41.65336\\-111.7709\\25\\41.99641\\-109.8178\\25\\45.7437\\-105.9115\\25\\46.15488\\-103.9584\\25\\46.30581\\-102.0053\\25\\46.59877\\-101.6936\\25\\48.5519\\-100.7547\\25\\50.50502\\-100.7663\\25\\52.45815\\-99.79305\\25\\54.41127\\-100.5973\\25\\56.3644\\-102.4154\\25\\58.31752\\-105.1548\\25\\58.93181\\-105.9115\\25\\60.74149\\-109.8178\\25\\61.80783\\-113.724\\25\\63.00407\\-115.6771\\25\\63.69728\\-117.6303\\25\\64.93804\\-119.5834\\25\\65.50858\\-121.5365\\25\\65.62471\\-123.4896\\25\\66.82529\\-125.4428\\25\\67.48341\\-127.3959\\25\\69.30386\\-131.3021\\25\\69.68975\\-133.2553\\25\\70.8164\\-135.2084\\25\\72.71297\\-139.1146\\25\\74.22435\\-141.0678\\25\\75.08031\\-143.0209\\25\\75.63656\\-144.974\\25\\76.63666\\-146.9271\\25\\78.24551\\-148.8803\\25\\78.89945\\-150.8334\\25\\80.33203\\-152.7865\\25\\81.25818\\-156.6928\\25\\82.75162\\-158.6459\\25\\83.70815\\-159.4823\\25\\85.66128\\-160.9373\\25\\87.6144\\-163.56\\25\\89.97183\\-166.4584\\25\\92.76962\\-170.3646\\25\\93.98806\\-172.3178\\25\\94.7216\\-174.2709\\25\\95.97445\\-176.224\\25\\97.07606\\-180.1303\\25\\97.25796\\-182.0834\\25\\97.97562\\-184.0365\\25\\98.2929\\-185.9896\\25\\98.2929\\-197.7084\\25\\97.85368\\-199.6615\\25\\97.0545\\-201.6146\\25\\96.55129\\-203.5678\\25\\95.82613\\-205.5209\\25\\94.6596\\-207.474\\25\\93.87051\\-209.4271\\25\\93.18081\\-211.3803\\25\\92.17365\\-213.3334\\25\\91.52065\\-213.9636\\25"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "187"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "436"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-95.97935\\-209.9414\\27\\-98.49441\\-207.474\\27\\-99.38029\\-203.5678\\27\\-100.4661\\-201.6146\\27\\-100.8827\\-199.6615\\27\\-100.8909\\-195.7553\\27\\-100.9654\\-193.8021\\27\\-101.2614\\-191.849\\27\\-101.2317\\-187.9428\\27\\-100.9199\\-185.9896\\27\\-100.8909\\-182.0834\\27\\-100.5687\\-180.1303\\27\\-98.99978\\-178.1771\\27\\-98.61205\\-176.224\\27\\-97.12412\\-174.2709\\27\\-96.5631\\-172.3178\\27\\-94.78982\\-170.3646\\27\\-93.30006\\-168.4115\\27\\-92.55271\\-166.4584\\27\\-90.89832\\-164.5053\\27\\-89.49519\\-162.5521\\27\\-88.6339\\-160.599\\27\\-87.49077\\-158.6459\\27\\-86.61548\\-156.6928\\27\\-85.46362\\-154.7396\\27\\-84.74596\\-152.7865\\27\\-83.4766\\-150.8334\\27\\-82.89451\\-148.8803\\27\\-81.79379\\-146.9271\\27\\-81.04045\\-143.0209\\27\\-79.90137\\-141.0678\\27\\-79.38979\\-139.1146\\27\\-79.03677\\-137.1615\\27\\-77.5021\\-135.2084\\27\\-77.01776\\-133.2553\\27\\-76.4481\\-131.7016\\27\\-75.20286\\-129.349\\27\\-74.38647\\-127.3959\\27\\-74.29554\\-125.4428\\27\\-73.24798\\-123.4896\\27\\-72.43334\\-121.5365\\27\\-72.38026\\-119.5834\\27\\-71.2346\\-117.6303\\27\\-70.40173\\-115.6771\\27\\-70.31819\\-113.724\\27\\-69.20625\\-111.7709\\27\\-67.21018\\-107.8646\\27\\-65.92293\\-105.9115\\27\\-64.92042\\-103.9584\\27\\-62.77623\\-102.0723\\27\\-60.8231\\-104.0546\\27\\-58.64521\\-105.9115\\27\\-56.91685\\-107.0887\\27\\-56.07735\\-107.8646\\27\\-54.8873\\-109.8178\\27\\-54.02531\\-111.7709\\27\\-53.97745\\-113.724\\27\\-54.96373\\-115.9158\\27\\-55.93593\\-119.5834\\27\\-56.72578\\-121.5365\\27\\-56.92448\\-123.4896\\27\\-56.95441\\-125.4428\\27\\-56.82211\\-127.3959\\27\\-56.03495\\-129.349\\27\\-54.96373\\-130.5026\\27\\-52.16818\\-133.2553\\27\\-51.4369\\-135.2084\\27\\-52.15175\\-137.1615\\27\\-52.09427\\-139.1146\\27\\-51.05748\\-140.4672\\27\\-49.80561\\-139.1146\\27\\-49.10435\\-137.5069\\27\\-47.70345\\-135.2084\\27\\-48.2518\\-133.2553\\27\\-50.16447\\-131.3021\\27\\-50.90887\\-129.349\\27\\-49.39732\\-125.4428\\27\\-48.2108\\-123.4896\\27\\-44.375\\-119.5834\\27\\-42.74813\\-117.6303\\27\\-41.74075\\-115.6771\\27\\-43.33972\\-113.724\\27\\-44.09016\\-111.7709\\27\\-44.08014\\-109.8178\\27\\-43.24498\\-108.7808\\27\\-41.29185\\-108.0341\\27\\-39.33873\\-108.5985\\27\\-38.30845\\-109.8178\\27\\-39.87774\\-111.7709\\27\\-40.55582\\-113.724\\27\\-40.82012\\-115.6771\\27\\-39.33873\\-116.4827\\27\\-37.3856\\-116.4272\\27\\-35.43248\\-116.4932\\27\\-33.47935\\-117.1637\\27\\-31.52623\\-118.3627\\27\\-29.5731\\-117.4938\\27\\-27.61998\\-117.4433\\27\\-25.66685\\-118.4087\\27\\-21.7606\\-118.6282\\27\\-20.70856\\-119.5834\\27\\-17.85435\\-122.7053\\27\\-15.90123\\-124.0416\\27\\-11.99498\\-124.0322\\27\\-10.04185\\-123.3676\\27\\-8.088726\\-122.8335\\27\\-4.182476\\-124.0695\\27\\-2.229351\\-124.0063\\27\\3.630024\\-124.1144\\27\\5.145793\\-125.4428\\27\\6.363338\\-127.3959\\27\\6.777315\\-129.349\\27\\6.50499\\-131.3021\\27\\6.559711\\-137.1615\\27\\6.475886\\-143.0209\\27\\6.623959\\-144.974\\27\\6.171673\\-146.9271\\27\\5.583149\\-147.5157\\27\\3.630024\\-148.2344\\27\\1.676899\\-148.2413\\27\\-0.276226\\-149.345\\27\\-2.229351\\-150.1059\\27\\-3.591113\\-148.8803\\27\\-3.946754\\-146.9271\\27\\-4.68779\\-144.974\\27\\-5.060525\\-143.0209\\27\\-5.269915\\-141.0678\\27\\-5.605467\\-139.1146\\27\\-7.284788\\-137.1615\\27\\-11.15716\\-133.2553\\27\\-11.16417\\-131.3021\\27\\-11.95622\\-129.349\\27\\-13.9481\\-128.1725\\27\\-15.90123\\-127.8398\\27\\-17.85435\\-127.0802\\27\\-19.80748\\-127.1158\\27\\-21.7606\\-127.7926\\27\\-23.71373\\-126.9873\\27\\-25.66685\\-127.6815\\27\\-27.61998\\-129.4156\\27\\-28.93756\\-131.3021\\27\\-29.40795\\-133.2553\\27\\-30.24484\\-135.2084\\27\\-33.47935\\-138.2865\\27\\-37.3856\\-142.2153\\27\\-39.33873\\-143.9161\\27\\-41.29185\\-144.3967\\27\\-43.24498\\-145.3829\\27\\-45.1981\\-146.1779\\27\\-47.15123\\-148.0621\\27\\-49.10435\\-149.5296\\27\\-51.05748\\-150.0136\\27\\-54.96373\\-151.1589\\27\\-56.91685\\-151.8811\\27\\-58.86998\\-152.1088\\27\\-60.8231\\-152.8531\\27\\-62.77623\\-154.8344\\27\\-64.72935\\-155.5697\\27\\-66.36558\\-156.6928\\27\\-67.81065\\-158.6459\\27\\-68.48699\\-160.599\\27\\-72.54185\\-164.5443\\27\\-74.49497\\-167.56\\27\\-76.4481\\-170.4565\\27\\-77.40746\\-172.3178\\27\\-78.00672\\-174.2709\\27\\-78.40122\\-174.6817\\27\\-79.39075\\-176.224\\27\\-79.40337\\-178.1771\\27\\-80.51456\\-180.1303\\27\\-81.43894\\-182.0834\\27\\-81.44376\\-184.0365\\27\\-82.30747\\-185.6834\\27\\-82.58542\\-185.9896\\27\\-83.43187\\-187.9428\\27\\-83.52818\\-189.8959\\27\\-84.81948\\-191.849\\27\\-85.3954\\-193.8021\\27\\-85.73412\\-197.7084\\27\\-86.7556\\-199.6615\\27\\-87.33298\\-201.6146\\27\\-87.3419\\-203.5678\\27\\-87.96741\\-205.5209\\27\\-88.16685\\-205.7261\\27\\-90.11997\\-206.6685\\27\\-92.0731\\-207.107\\27\\-94.02622\\-208.8825\\27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "437"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-92.0731\\-216.0052\\27\\-92.79181\\-215.2865\\27\\-92.28915\\-213.3334\\27\\-90.11997\\-212.3673\\27\\-88.16685\\-210.7447\\27\\-86.96568\\-211.3803\\27\\-86.8874\\-213.3334\\27\\-87.57451\\-215.2865\\27\\-88.16685\\-216.0044\\27\\-90.11997\\-216.9163\\27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "122"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "438"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "5.583149\\-220.0467\\27\\3.630024\\-219.0573\\27\\1.676899\\-218.9811\\27\\-0.276226\\-218.0959\\27\\-5.096371\\-213.3334\\27\\-6.135601\\-212.1263\\27\\-6.936382\\-211.3803\\27\\-8.088726\\-210.5725\\27\\-11.99498\\-210.5363\\27\\-13.9481\\-209.6182\\27\\-17.85435\\-207.4364\\27\\-19.80748\\-206.6201\\27\\-21.7606\\-206.6201\\27\\-23.71373\\-205.695\\27\\-25.66685\\-204.6\\27\\-29.5731\\-204.6\\27\\-33.47935\\-202.6126\\27\\-41.29185\\-202.5912\\27\\-43.24498\\-201.5332\\27\\-45.1981\\-200.6553\\27\\-47.15123\\-200.6076\\27\\-51.05748\\-198.6716\\27\\-52.66288\\-197.7084\\27\\-53.0106\\-197.358\\27\\-53.93148\\-195.7553\\27\\-53.98309\\-193.8021\\27\\-54.31439\\-191.849\\27\\-54.96373\\-189.728\\27\\-56.91685\\-188.4271\\27\\-57.35487\\-187.9428\\27\\-58.46358\\-185.9896\\27\\-57.75705\\-184.0365\\27\\-54.28764\\-180.1303\\27\\-53.0106\\-179.204\\27\\-51.05748\\-178.8732\\27\\-50.23479\\-178.1771\\27\\-48.62474\\-176.224\\27\\-46.48856\\-174.2709\\27\\-44.93901\\-172.3178\\27\\-44.41184\\-170.3646\\27\\-44.09016\\-168.4115\\27\\-43.24498\\-167.1026\\27\\-40.89425\\-164.5053\\27\\-40.25961\\-162.5521\\27\\-39.33873\\-160.8989\\27\\-37.3856\\-159.7861\\27\\-36.62071\\-160.599\\27\\-36.6995\\-162.5521\\27\\-35.43248\\-163.7013\\27\\-33.96763\\-164.5053\\27\\-33.47935\\-164.9139\\27\\-31.52623\\-165.7105\\27\\-29.5731\\-165.8965\\27\\-27.61998\\-167.2977\\27\\-25.66685\\-167.6937\\27\\-19.80748\\-167.6108\\27\\-13.9481\\-167.6999\\27\\-11.99498\\-168.8659\\27\\-10.04185\\-170.7919\\27\\-8.827892\\-172.3178\\27\\-7.635742\\-174.2709\\27\\-6.899647\\-176.224\\27\\-5.192548\\-180.1303\\27\\-4.182476\\-181.1022\\27\\-2.229351\\-182.3309\\27\\-0.276226\\-183.0805\\27\\3.630024\\-185.0797\\27\\5.583149\\-187.0036\\27\\7.536274\\-187.6837\\27\\9.489399\\-188.9344\\27\\11.44252\\-189.6484\\27\\13.39565\\-189.7215\\27\\15.34877\\-190.6244\\27\\17.3019\\-191.0558\\27\\19.25502\\-191.1011\\27\\21.20815\\-192.2923\\27\\23.16127\\-192.9906\\27\\27.06752\\-193.0484\\27\\29.02065\\-192.4941\\27\\30.97377\\-190.8556\\27\\33.81789\\-187.9428\\27\\35.489\\-185.9896\\27\\38.78627\\-183.0258\\27\\40.7394\\-182.2828\\27\\44.64565\\-182.2055\\27\\46.59877\\-181.4273\\27\\48.5519\\-181.5293\\27\\50.50502\\-182.95\\27\\52.45815\\-183.3439\\27\\54.41127\\-184.0289\\27\\56.3644\\-185.1403\\27\\61.09697\\-189.8959\\27\\61.74416\\-191.849\\27\\61.89825\\-195.7553\\27\\63.02493\\-197.7084\\27\\64.1769\\-198.8832\\27\\66.13003\\-200.3109\\27\\67.3941\\-201.6146\\27\\66.13003\\-203.2529\\27\\64.1769\\-202.8948\\27\\62.22377\\-203.7722\\27\\61.25973\\-205.5209\\27\\60.83258\\-207.474\\27\\59.14384\\-209.4271\\27\\56.3644\\-212.1774\\27\\54.41127\\-212.9367\\27\\52.45815\\-213.8592\\27\\50.50502\\-214.2352\\27\\48.5519\\-214.013\\27\\42.69252\\-213.9861\\27\\36.83315\\-214.045\\27\\34.88002\\-212.9789\\27\\32.9269\\-212.3524\\27\\30.97377\\-212.3186\\27\\25.1144\\-212.3186\\27\\23.16127\\-212.3524\\27\\21.20815\\-213.2607\\27\\19.25502\\-214.7602\\27\\14.73438\\-219.1928\\27\\13.39565\\-220.1837\\27\\11.44252\\-220.8116\\27\\7.536274\\-220.8008\\27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "439"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "42.69252\\-149.6587\\27\\40.7394\\-148.136\\27\\38.78627\\-147.2737\\27\\36.83315\\-147.0492\\27\\34.88002\\-146.0757\\27\\32.9269\\-144.5676\\27\\30.97377\\-143.9744\\27\\29.02065\\-142.6145\\27\\27.06752\\-142.2424\\27\\25.1144\\-141.7059\\27\\23.16127\\-140.1715\\27\\22.14616\\-139.1146\\27\\22.13092\\-133.2553\\27\\22.16019\\-131.3021\\27\\23.16127\\-129.2934\\27\\25.1144\\-128.3596\\27\\29.02065\\-127.7629\\27\\30.97377\\-126.8455\\27\\32.9269\\-125.2405\\27\\34.25906\\-123.4896\\27\\35.89507\\-121.5365\\27\\36.83315\\-120.6748\\27\\38.78627\\-120.8041\\27\\40.7394\\-122.7513\\27\\42.69252\\-124.3809\\27\\43.77808\\-125.4428\\27\\44.13197\\-127.3959\\27\\44.18368\\-129.349\\27\\43.7094\\-131.3021\\27\\42.43344\\-133.2553\\27\\43.21222\\-135.2084\\27\\43.78954\\-137.1615\\27\\44.16603\\-139.1146\\27\\44.28883\\-141.0678\\27\\45.17676\\-143.0209\\27\\45.78727\\-144.974\\27\\45.89907\\-146.9271\\27\\45.20107\\-148.8803\\27\\44.64565\\-149.3999\\27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "116"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "440"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "89.56753\\-212.9415\\27\\88.21149\\-211.3803\\27\\86.9318\\-209.4271\\27\\86.80511\\-207.474\\27\\86.79985\\-205.5209\\27\\86.92535\\-201.6146\\27\\86.79985\\-199.6615\\27\\86.19778\\-197.7084\\27\\84.89965\\-195.7553\\27\\84.78323\\-191.849\\27\\82.80103\\-187.9428\\27\\82.40055\\-185.9896\\27\\81.75503\\-185.3095\\27\\80.83318\\-184.0365\\27\\80.76994\\-182.0834\\27\\79.93833\\-180.1303\\27\\78.82094\\-178.1771\\27\\77.96412\\-176.224\\27\\76.85438\\-174.2709\\27\\76.06711\\-172.3178\\27\\75.89565\\-172.1351\\27\\73.94253\\-168.5499\\27\\71.90482\\-166.4584\\27\\66.13003\\-160.8499\\27\\63.91781\\-158.6459\\27\\62.22377\\-157.4131\\27\\58.31752\\-154.2755\\27\\56.3644\\-153.4626\\27\\54.41127\\-153.1226\\27\\50.50502\\-151.4689\\27\\49.61527\\-150.8334\\27\\48.1305\\-148.8803\\27\\47.87936\\-146.9271\\27\\48.09058\\-143.0209\\27\\48.02177\\-141.0678\\27\\47.39045\\-139.1146\\27\\46.59877\\-137.6454\\27\\46.17585\\-137.1615\\27\\46.59877\\-136.6687\\27\\47.38679\\-135.2084\\27\\47.90256\\-133.2553\\27\\48.12653\\-131.3021\\27\\48.15517\\-127.3959\\27\\48.11721\\-125.4428\\27\\47.40922\\-123.4896\\27\\46.59877\\-122.6956\\27\\44.64565\\-121.2585\\27\\43.64478\\-119.5834\\27\\43.06955\\-117.6303\\27\\41.62759\\-115.6771\\27\\40.76211\\-113.724\\27\\40.80598\\-111.7709\\27\\42.8653\\-109.8178\\27\\44.07599\\-107.8646\\27\\44.64565\\-107.2719\\27\\46.59877\\-105.8886\\27\\47.7753\\-103.9584\\27\\47.85294\\-102.0053\\27\\48.5519\\-101.2728\\27\\50.50502\\-100.8364\\27\\52.45815\\-99.40966\\27\\54.41127\\-99.59016\\27\\56.85268\\-102.0053\\27\\58.9634\\-105.9115\\27\\59.84265\\-107.8646\\27\\60.91999\\-109.8178\\27\\61.70182\\-111.7709\\27\\61.81738\\-113.724\\27\\63.00407\\-115.6771\\27\\63.69728\\-117.6303\\27\\64.94558\\-119.5834\\27\\65.56036\\-121.5365\\27\\65.63318\\-123.4896\\27\\66.85982\\-125.4428\\27\\67.54493\\-127.3959\\27\\68.72473\\-129.349\\27\\70.03628\\-132.4367\\27\\71.9894\\-133.777\\27\\72.57315\\-135.2084\\27\\72.36642\\-137.1615\\27\\73.2864\\-139.1146\\27\\74.67123\\-141.0678\\27\\75.89565\\-143.6185\\27\\77.07627\\-146.9271\\27\\78.57015\\-148.8803\\27\\79.43491\\-150.8334\\27\\80.52223\\-152.7865\\27\\80.75146\\-154.7396\\27\\80.76978\\-156.6928\\27\\81.75503\\-157.7191\\27\\83.70815\\-159.1078\\27\\85.66128\\-159.8324\\27\\86.42406\\-160.599\\27\\88.04909\\-162.5521\\27\\89.56753\\-164.6179\\27\\90.81366\\-166.4584\\27\\92.24776\\-168.4115\\27\\93.873\\-170.3646\\27\\94.71533\\-172.3178\\27\\95.92395\\-174.2709\\27\\96.59232\\-176.224\\27\\97.07606\\-178.1771\\27\\97.98635\\-180.1303\\27\\98.31503\\-182.0834\\27\\98.46844\\-184.0365\\27\\98.82784\\-185.9896\\27\\98.91721\\-191.849\\27\\98.91721\\-197.7084\\27\\98.51102\\-199.6615\\27\\98.33077\\-201.6146\\27\\97.88275\\-203.5678\\27\\96.59232\\-205.5209\\27\\95.8333\\-207.474\\27\\94.18742\\-209.4271\\27\\93.125\\-211.3803\\27\\91.52065\\-213.3105\\27"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "176"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "441"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-98.06528\\-209.4271\\29\\-99.01022\\-207.474\\29\\-100.5315\\-205.5209\\29\\-100.8911\\-203.5678\\29\\-100.9654\\-201.6146\\29\\-101.2846\\-199.6615\\29\\-101.3005\\-195.7553\\29\\-102.4122\\-193.8021\\29\\-102.8927\\-191.849\\29\\-102.8927\\-189.8959\\29\\-102.5549\\-187.9428\\29\\-101.3679\\-185.9896\\29\\-101.3005\\-182.0834\\29\\-100.9947\\-180.1303\\29\\-100.5521\\-178.1771\\29\\-99.02999\\-176.224\\29\\-98.56065\\-174.2709\\29\\-97.12024\\-172.3178\\29\\-96.10142\\-170.3646\\29\\-94.58507\\-168.4115\\29\\-92.88775\\-166.4584\\29\\-91.45604\\-164.5053\\29\\-90.57296\\-162.5521\\29\\-89.43689\\-160.599\\29\\-88.57836\\-158.6459\\29\\-87.01461\\-156.6928\\29\\-85.73412\\-154.7396\\29\\-85.05769\\-152.7865\\29\\-83.75529\\-150.8334\\29\\-83.44228\\-148.8803\\29\\-82.88799\\-146.9271\\29\\-81.74554\\-144.974\\29\\-81.03043\\-141.0678\\29\\-79.84904\\-139.1146\\29\\-79.21656\\-137.1615\\29\\-78.09726\\-135.2084\\29\\-76.4481\\-131.4765\\29\\-75.24657\\-129.349\\29\\-74.45741\\-127.3959\\29\\-74.29554\\-125.4428\\29\\-73.24798\\-123.4896\\29\\-72.43334\\-121.5365\\29\\-72.38026\\-119.5834\\29\\-71.2346\\-117.6303\\29\\-70.40173\\-115.6771\\29\\-70.40173\\-113.724\\29\\-69.23433\\-111.7709\\29\\-67.29713\\-107.8646\\29\\-66.19419\\-105.9115\\29\\-65.90813\\-103.9584\\29\\-64.3428\\-102.0053\\29\\-62.77623\\-101.0115\\29\\-60.8231\\-101.0153\\29\\-59.80508\\-102.0053\\29\\-58.90783\\-103.9584\\29\\-56.83471\\-105.9115\\29\\-53.0106\\-107.8198\\29\\-51.05748\\-107.7914\\29\\-49.78956\\-109.8178\\29\\-50.32949\\-111.7709\\29\\-52.20261\\-113.724\\29\\-53.6703\\-115.6771\\29\\-54.01941\\-117.6303\\29\\-55.36045\\-119.5834\\29\\-55.73664\\-121.5365\\29\\-55.98448\\-123.4896\\29\\-56.75526\\-125.4428\\29\\-56.82211\\-127.3959\\29\\-56.35176\\-129.349\\29\\-55.60577\\-131.3021\\29\\-54.96373\\-131.9624\\29\\-53.05163\\-133.2553\\29\\-51.82058\\-135.2084\\29\\-52.9021\\-137.1615\\29\\-52.37871\\-139.1146\\29\\-51.05748\\-142.4381\\29\\-49.10435\\-142.6453\\29\\-48.95574\\-141.0678\\29\\-48.96891\\-139.1146\\29\\-48.88055\\-137.1615\\29\\-48.45504\\-135.2084\\29\\-48.72733\\-133.2553\\29\\-50.24725\\-131.3021\\29\\-50.93541\\-129.349\\29\\-49.88247\\-127.3959\\29\\-47.94403\\-123.4896\\29\\-44.11972\\-119.5834\\29\\-44.05878\\-117.6303\\29\\-43.43331\\-115.6771\\29\\-43.24498\\-115.4574\\29\\-41.29185\\-115.0545\\29\\-40.71562\\-115.6771\\29\\-39.33873\\-116.597\\29\\-37.82037\\-115.6771\\29\\-36.54935\\-113.724\\29\\-35.43248\\-112.7897\\29\\-34.43588\\-113.724\\29\\-33.79102\\-115.6771\\29\\-33.47935\\-115.9701\\29\\-31.52623\\-116.6288\\29\\-29.5731\\-116.6292\\29\\-27.61998\\-117.1996\\29\\-25.66685\\-118.7\\29\\-23.71373\\-118.7148\\29\\-21.76867\\-117.6303\\29\\-20.76968\\-115.6771\\29\\-19.80748\\-114.7243\\29\\-18.12979\\-115.6771\\29\\-17.85435\\-116.5252\\29\\-15.90123\\-117.4094\\29\\-14.7464\\-115.6771\\29\\-13.9481\\-114.9834\\29\\-13.30743\\-115.6771\\29\\-13.9481\\-116.3219\\29\\-15.90123\\-117.7862\\29\\-17.85435\\-117.9508\\29\\-19.80748\\-116.874\\29\\-21.74534\\-117.6303\\29\\-21.18009\\-119.5834\\29\\-21.52188\\-121.5365\\29\\-21.7606\\-121.812\\29\\-23.71373\\-122.6767\\29\\-25.66685\\-123.8427\\29\\-26.79122\\-125.4428\\29\\-27.61998\\-127.29\\29\\-28.86146\\-129.349\\29\\-28.86336\\-131.3021\\29\\-28.30045\\-133.2553\\29\\-28.3326\\-135.2084\\29\\-29.5731\\-136.4422\\29\\-31.31062\\-137.1615\\29\\-33.47935\\-138.3733\\29\\-36.12791\\-141.0678\\29\\-37.3856\\-142.6744\\29\\-39.33873\\-144.285\\29\\-41.29185\\-144.681\\29\\-43.24498\\-145.8589\\29\\-45.1981\\-146.5501\\29\\-47.15123\\-147.6268\\29\\-49.10435\\-148.4155\\29\\-51.05748\\-150.0086\\29\\-53.0106\\-151.0809\\29\\-54.96373\\-151.0572\\29\\-56.91685\\-151.3666\\29\\-58.86998\\-150.6551\\29\\-60.8231\\-150.9842\\29\\-62.77623\\-151.7664\\29\\-63.82753\\-152.7865\\29\\-64.72935\\-154.2006\\29\\-65.2212\\-154.7396\\29\\-66.68247\\-155.858\\29\\-67.51255\\-156.6928\\29\\-69.13657\\-158.6459\\29\\-70.58091\\-160.599\\29\\-74.5892\\-164.5053\\29\\-76.4481\\-166.6093\\29\\-77.40119\\-168.4115\\29\\-77.63255\\-170.3646\\29\\-79.10458\\-172.3178\\29\\-80.35435\\-174.3123\\29\\-81.39873\\-176.224\\29\\-81.44199\\-178.1771\\29\\-82.50278\\-180.1303\\29\\-84.2606\\-184.0259\\29\\-85.31568\\-185.9896\\29\\-85.42952\\-189.8959\\29\\-86.44482\\-191.849\\29\\-87.35055\\-193.8021\\29\\-87.40237\\-197.7084\\29\\-89.19895\\-201.6146\\29\\-88.64307\\-203.5678\\29\\-88.871\\-205.5209\\29\\-90.11997\\-206.635\\29\\-92.0731\\-208.2202\\29\\-94.02622\\-210.2203\\29\\-95.97935\\-210.6406\\29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "442"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-39.45628\\-103.9584\\29\\-40.4115\\-102.0053\\29\\-40.31529\\-98.09901\\29\\-39.33873\\-97.2343\\29\\-37.3856\\-97.23911\\29\\-35.90212\\-98.09901\\29\\-36.27451\\-100.0521\\29\\-38.02684\\-102.0053\\29\\-39.20509\\-103.9584\\29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "443"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.182476\\-156.313\\29\\-6.135601\\-154.5255\\29\\-8.088726\\-154.2232\\29\\-10.04185\\-153.3779\\29\\-10.3725\\-152.7865\\29\\-10.04185\\-152.4866\\29\\-8.088726\\-152.0203\\29\\-6.135601\\-151.0921\\29\\-5.900923\\-150.8334\\29\\-4.838685\\-146.9271\\29\\-4.101708\\-144.974\\29\\-4.370813\\-143.0209\\29\\-5.340724\\-141.0678\\29\\-5.923899\\-139.1146\\29\\-7.236725\\-137.1615\\29\\-9.161344\\-135.2084\\29\\-10.53013\\-133.2553\\29\\-10.51269\\-131.3021\\29\\-10.60394\\-129.349\\29\\-11.99498\\-128.0695\\29\\-13.9481\\-127.6998\\29\\-14.58558\\-127.3959\\29\\-14.84412\\-125.4428\\29\\-13.9481\\-124.9374\\29\\-11.99498\\-124.9374\\29\\-10.04185\\-124.533\\29\\-8.088726\\-123.9849\\29\\-6.135601\\-124.7029\\29\\-4.182476\\-126.6696\\29\\-2.229351\\-124.573\\29\\-0.276226\\-124.1054\\29\\1.676899\\-124.1094\\29\\3.630024\\-124.5545\\29\\4.560328\\-125.4428\\29\\4.814246\\-127.3959\\29\\4.620276\\-129.349\\29\\4.800951\\-131.3021\\29\\6.311696\\-135.2084\\29\\6.528639\\-137.1615\\29\\5.635733\\-139.1146\\29\\5.488408\\-141.0678\\29\\6.338421\\-143.0209\\29\\7.536274\\-144.7703\\29\\9.337312\\-146.9271\\29\\7.777244\\-148.8803\\29\\5.583149\\-150.1804\\29\\3.630024\\-151.0153\\29\\2.653461\\-152.7865\\29\\1.676899\\-153.7178\\29\\-0.276226\\-154.3353\\29\\-0.7425126\\-154.7396\\29\\-2.229351\\-155.6129\\29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "130"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "444"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "5.583149\\-219.6274\\29\\3.630024\\-218.9811\\29\\1.676899\\-218.8998\\29\\-0.276226\\-218.0652\\29\\-4.182476\\-214.2235\\29\\-6.135601\\-212.7086\\29\\-8.088726\\-212.4648\\29\\-10.04185\\-212.4409\\29\\-11.99498\\-211.9092\\29\\-13.9481\\-210.7105\\29\\-15.90123\\-210.0208\\29\\-17.85435\\-208.741\\29\\-21.7606\\-208.5649\\29\\-23.82562\\-207.474\\29\\-25.66685\\-206.6283\\29\\-29.5731\\-206.58\\29\\-33.47935\\-204.6079\\29\\-41.29185\\-204.5708\\29\\-43.24498\\-203.8085\\29\\-45.1981\\-202.6226\\29\\-47.15123\\-202.2933\\29\\-49.10435\\-200.9793\\29\\-51.05748\\-200.6337\\29\\-53.0106\\-199.7733\\29\\-54.24656\\-197.7084\\29\\-54.84166\\-195.7553\\29\\-54.91154\\-193.8021\\29\\-56.13018\\-191.849\\29\\-56.91685\\-191.3372\\29\\-58.86998\\-192.4763\\29\\-59.42393\\-191.849\\29\\-59.33194\\-189.8959\\29\\-58.45145\\-187.9428\\29\\-57.89802\\-185.9896\\29\\-56.91685\\-184.729\\29\\-54.40321\\-182.0834\\29\\-52.13946\\-180.1303\\29\\-50.54921\\-178.1771\\29\\-49.67448\\-176.224\\29\\-49.10435\\-175.5877\\29\\-47.15123\\-174.5857\\29\\-45.1981\\-173.2773\\29\\-43.24498\\-170.9235\\29\\-41.29185\\-168.8493\\29\\-39.33873\\-166.8964\\29\\-37.3856\\-165.6782\\29\\-35.43248\\-166.7607\\29\\-31.71646\\-168.4115\\29\\-29.5731\\-169.5582\\29\\-25.66685\\-169.6902\\29\\-15.90123\\-169.6832\\29\\-13.9481\\-170.6878\\29\\-11.99498\\-171.5922\\29\\-10.72161\\-172.3178\\29\\-10.04185\\-172.9909\\29\\-9.340596\\-174.2709\\29\\-8.554068\\-176.224\\29\\-7.40461\\-178.1771\\29\\-5.630934\\-180.1303\\29\\-4.182476\\-181.1435\\29\\-2.229351\\-182.245\\29\\1.676899\\-183.9699\\29\\3.630024\\-185.0433\\29\\5.583149\\-186.9851\\29\\7.536274\\-187.6837\\29\\9.489399\\-188.9344\\29\\11.44252\\-189.6484\\29\\13.39565\\-190.6047\\29\\15.34877\\-191.3189\\29\\17.3019\\-191.6874\\29\\19.25502\\-192.5546\\29\\21.20815\\-194.205\\29\\25.7624\\-197.7084\\29\\27.06752\\-198.4473\\29\\28.56912\\-197.7084\\29\\30.97377\\-195.5671\\29\\31.92147\\-193.8021\\29\\32.11147\\-191.849\\29\\33.31359\\-189.8959\\29\\34.39756\\-187.9428\\29\\35.82171\\-185.9896\\29\\36.83315\\-185.0319\\29\\38.78627\\-183.3976\\29\\40.7394\\-182.9339\\29\\42.69252\\-182.3072\\29\\46.59877\\-182.1781\\29\\48.5519\\-182.2461\\29\\52.45815\\-183.8749\\29\\54.41127\\-184.1595\\29\\56.3644\\-185.1598\\29\\61.1302\\-189.8959\\29\\61.80783\\-191.849\\29\\61.81738\\-193.8021\\29\\62.99829\\-195.7553\\29\\63.38744\\-197.7084\\29\\64.1769\\-198.5883\\29\\68.08315\\-200.9576\\29\\68.69141\\-201.6146\\29\\68.08315\\-202.3538\\29\\65.77386\\-203.5678\\29\\64.1769\\-204.2639\\29\\62.22377\\-206.2518\\29\\61.3325\\-207.474\\29\\60.44629\\-209.4271\\29\\58.31752\\-211.5611\\29\\54.41127\\-213.8791\\29\\52.45815\\-214.6132\\29\\50.50502\\-214.3202\\29\\48.5519\\-213.2386\\29\\46.59877\\-213.0404\\29\\42.69252\\-212.1303\\29\\40.89613\\-211.3803\\29\\38.3362\\-209.4271\\29\\36.83315\\-208.5497\\29\\34.88002\\-207.9587\\29\\34.35236\\-207.474\\29\\32.9269\\-206.5676\\29\\30.97377\\-206.1203\\29\\30.35736\\-205.5209\\29\\29.02065\\-204.6191\\29\\27.06752\\-204.6097\\29\\25.1144\\-204.7079\\29\\24.27508\\-205.5209\\29\\23.32995\\-207.474\\29\\22.21889\\-209.4271\\29\\21.20815\\-210.793\\29\\15.34877\\-216.6865\\29\\13.39565\\-218.6068\\29\\11.44252\\-219.7998\\29\\7.536274\\-219.8489\\29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "154"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "445"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "89.56753\\-212.1009\\29\\88.98701\\-211.3803\\29\\88.78332\\-209.4271\\29\\88.73399\\-207.474\\29\\88.69149\\-199.6615\\29\\87.6144\\-197.6298\\29\\86.80704\\-195.7553\\29\\86.77525\\-193.8021\\29\\86.2079\\-191.849\\29\\84.90384\\-189.8959\\29\\84.79904\\-187.9428\\29\\83.99026\\-185.9896\\29\\82.81335\\-184.0365\\29\\82.43365\\-182.0834\\29\\80.89941\\-180.1303\\29\\80.79202\\-178.1771\\29\\79.97738\\-176.224\\29\\78.8299\\-174.2709\\29\\77.84878\\-172.1734\\29\\75.89565\\-168.4384\\29\\71.9894\\-164.4942\\29\\71.10391\\-162.5521\\29\\69.55477\\-160.599\\29\\68.08315\\-158.5843\\29\\66.13003\\-158.8075\\29\\63.96235\\-156.6928\\29\\62.22377\\-155.5337\\29\\60.35203\\-154.7396\\29\\58.31752\\-153.403\\29\\56.3644\\-152.3012\\29\\54.41127\\-151.6751\\29\\52.45815\\-151.4281\\29\\50.50502\\-150.3263\\29\\49.1295\\-148.8803\\29\\48.5519\\-148.1163\\29\\46.59877\\-147.8021\\29\\44.64565\\-149.8187\\29\\42.69252\\-149.9564\\29\\40.7394\\-148.1018\\29\\38.23018\\-146.9271\\29\\36.83315\\-146.3652\\29\\32.9269\\-145.1978\\29\\30.97377\\-144.521\\29\\27.06752\\-143.9601\\29\\25.1144\\-142.6539\\29\\23.16127\\-142.081\\29\\20.09842\\-139.1146\\29\\19.41897\\-137.1615\\29\\20.07665\\-135.2084\\29\\20.40814\\-133.2553\\29\\21.94677\\-129.349\\29\\23.16127\\-127.4195\\29\\25.1144\\-126.5174\\29\\27.06752\\-127.0015\\29\\29.02065\\-126.8099\\29\\30.97377\\-125.2265\\29\\32.9269\\-124.2891\\29\\33.87507\\-123.4896\\29\\35.47274\\-121.5365\\29\\36.83315\\-120.5599\\29\\38.78627\\-120.8475\\29\\40.7394\\-122.7513\\29\\42.69252\\-124.0279\\29\\44.08372\\-125.4428\\29\\44.29913\\-129.349\\29\\44.03136\\-131.3021\\29\\43.03304\\-135.2084\\29\\43.85077\\-137.1615\\29\\44.34169\\-139.1146\\29\\45.27044\\-141.0678\\29\\45.87486\\-143.0209\\29\\46.59877\\-144.2136\\29\\48.28556\\-144.974\\29\\48.66816\\-144.974\\29\\49.11399\\-143.0209\\29\\48.21361\\-141.0678\\29\\47.46101\\-139.1146\\29\\47.39071\\-137.1615\\29\\47.97905\\-135.2084\\29\\48.27007\\-133.2553\\29\\48.29281\\-127.3959\\29\\48.17487\\-125.4428\\29\\47.34556\\-123.4896\\29\\46.59877\\-122.7623\\29\\44.64565\\-122.057\\29\\44.06622\\-121.5365\\29\\42.54391\\-119.5834\\29\\42.38856\\-117.6303\\29\\40.70184\\-113.724\\29\\40.73177\\-111.7709\\29\\42.69252\\-110.4241\\29\\44.64565\\-108.8203\\29\\46.59877\\-107.3913\\29\\48.5519\\-106.2735\\29\\48.90399\\-105.9115\\29\\49.64814\\-103.9584\\29\\51.12592\\-102.0053\\29\\52.45815\\-100.8063\\29\\54.41127\\-100.416\\29\\56.40196\\-102.0053\\29\\57.27121\\-103.9584\\29\\58.47911\\-105.9115\\29\\59.24526\\-107.8646\\29\\60.89162\\-109.8178\\29\\61.70408\\-111.7709\\29\\61.74131\\-113.724\\29\\63.00407\\-115.6771\\29\\63.69728\\-117.6303\\29\\64.25767\\-119.5834\\29\\65.21014\\-121.5365\\29\\65.59989\\-123.4896\\29\\66.85982\\-125.4428\\29\\67.54493\\-127.3959\\29\\68.75489\\-129.349\\29\\70.03628\\-132.0457\\29\\71.9894\\-132.3982\\29\\73.46768\\-133.2553\\29\\72.98076\\-135.2084\\29\\72.64224\\-137.1615\\29\\74.29935\\-139.1146\\29\\75.19232\\-141.0678\\29\\76.38393\\-143.0209\\29\\77.02715\\-144.974\\29\\78.30176\\-146.9271\\29\\79.00636\\-148.8803\\29\\80.37156\\-150.8334\\29\\80.34012\\-152.7865\\29\\78.69684\\-154.7396\\29\\79.8019\\-156.3929\\29\\81.75503\\-157.4601\\29\\83.70815\\-158.047\\29\\85.66128\\-159.7492\\29\\90.3435\\-164.5053\\29\\91.96901\\-166.4584\\29\\92.83525\\-168.4115\\29\\94.28482\\-170.3646\\29\\95.90923\\-172.3178\\29\\96.66123\\-174.2709\\29\\97.16832\\-176.224\\29\\98.00439\\-178.1771\\29\\98.49036\\-180.1303\\29\\98.8363\\-182.0834\\29\\98.90778\\-184.0365\\29\\98.8998\\-187.9428\\29\\99.9402\\-189.8959\\29\\100.2721\\-191.849\\29\\100.2545\\-199.6615\\29\\99.80966\\-201.6146\\29\\98.54147\\-203.5678\\29\\97.9372\\-205.5209\\29\\96.17458\\-207.474\\29\\94.17053\\-209.4271\\29\\92.4761\\-211.3803\\29\\91.52065\\-212.3515\\29"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "182"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "446"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-99.939\\-209.4271\\31\\-100.9209\\-207.474\\31\\-101.031\\-205.5209\\31\\-101.3168\\-203.5678\\31\\-102.4631\\-201.6146\\31\\-102.8894\\-199.6615\\31\\-102.8974\\-195.7553\\31\\-102.9706\\-193.8021\\31\\-103.1425\\-191.849\\31\\-103.1425\\-189.8959\\31\\-102.8974\\-184.0365\\31\\-102.8934\\-182.0834\\31\\-102.5055\\-180.1303\\31\\-101.0257\\-178.1771\\31\\-100.5349\\-176.224\\31\\-99.05963\\-174.2709\\31\\-98.54954\\-172.3178\\31\\-96.79925\\-170.3646\\31\\-95.26492\\-168.4115\\31\\-94.18781\\-166.4584\\31\\-90.96201\\-162.5521\\31\\-89.86089\\-160.599\\31\\-88.9798\\-158.6459\\31\\-87.57451\\-156.6928\\31\\-86.67789\\-154.7396\\31\\-85.50843\\-152.7865\\31\\-84.82445\\-150.8334\\31\\-83.75529\\-148.8803\\31\\-83.14101\\-146.9271\\31\\-81.93045\\-144.974\\31\\-81.72261\\-143.0209\\31\\-81.24808\\-141.0678\\31\\-80.06138\\-139.1146\\31\\-79.45917\\-137.1615\\31\\-79.00828\\-135.2084\\31\\-77.57668\\-133.2553\\31\\-77.00222\\-131.3021\\31\\-75.68746\\-129.349\\31\\-74.29554\\-125.4428\\31\\-73.24798\\-123.4896\\31\\-72.43334\\-121.5365\\31\\-72.38026\\-119.5834\\31\\-71.2346\\-117.6303\\31\\-70.40173\\-115.6771\\31\\-70.40173\\-113.724\\31\\-69.23433\\-111.7709\\31\\-68.6356\\-110.4813\\31\\-66.28574\\-105.9115\\31\\-66.16052\\-103.9584\\31\\-65.31298\\-102.0053\\31\\-62.77623\\-99.80465\\31\\-60.8231\\-99.16049\\31\\-59.63232\\-100.0521\\31\\-58.09483\\-102.0053\\31\\-56.91685\\-103.0524\\31\\-54.96373\\-102.6813\\31\\-53.0106\\-101.3217\\31\\-52.20321\\-102.0053\\31\\-51.91545\\-103.9584\\31\\-51.05748\\-105.4789\\31\\-49.10435\\-105.6185\\31\\-47.9461\\-103.9584\\31\\-47.15123\\-103.2748\\31\\-46.424\\-103.9584\\31\\-45.7574\\-105.9115\\31\\-45.1981\\-106.9723\\31\\-44.508\\-107.8646\\31\\-45.1981\\-108.2628\\31\\-47.15123\\-110.3578\\31\\-48.33175\\-111.7709\\31\\-51.05748\\-114.4731\\31\\-52.13318\\-115.6771\\31\\-53.47257\\-117.6303\\31\\-54.03345\\-119.5834\\31\\-55.61306\\-121.5365\\31\\-56.18196\\-123.4896\\31\\-56.89414\\-125.4428\\31\\-56.98344\\-127.3959\\31\\-56.75526\\-129.349\\31\\-56.32219\\-131.3021\\31\\-54.96373\\-133.3186\\31\\-53.0106\\-134.5743\\31\\-52.50488\\-135.2084\\31\\-53.25687\\-137.1615\\31\\-55.24585\\-139.1146\\31\\-55.80614\\-141.0678\\31\\-56.56081\\-143.0209\\31\\-54.96373\\-144.2377\\31\\-53.0106\\-141.9746\\31\\-51.05748\\-142.2129\\31\\-49.11626\\-141.0678\\31\\-48.90491\\-137.1615\\31\\-48.96891\\-135.2084\\31\\-49.89291\\-133.2553\\31\\-50.64854\\-131.3021\\31\\-50.93541\\-129.349\\31\\-49.88668\\-127.3959\\31\\-48.96891\\-125.4428\\31\\-48.4551\\-123.4896\\31\\-46.90174\\-121.5365\\31\\-45.1981\\-120.5433\\31\\-44.08684\\-119.5834\\31\\-43.63192\\-117.6303\\31\\-43.24498\\-117.1341\\31\\-41.29185\\-116.2842\\31\\-39.33873\\-116.5615\\31\\-38.14766\\-115.6771\\31\\-37.3856\\-114.2123\\31\\-36.99323\\-113.724\\31\\-35.43248\\-112.8412\\31\\-34.50758\\-113.724\\31\\-32.77905\\-115.6771\\31\\-31.52623\\-116.5547\\31\\-29.5731\\-116.7404\\31\\-28.52678\\-117.6303\\31\\-27.39698\\-119.5834\\31\\-28.5902\\-121.5365\\31\\-28.74331\\-123.4896\\31\\-28.76365\\-125.4428\\31\\-28.60562\\-127.3959\\31\\-28.27627\\-129.349\\31\\-27.61998\\-130.9986\\31\\-26.38556\\-133.2553\\31\\-26.40602\\-135.2084\\31\\-27.61998\\-137.119\\31\\-29.5731\\-137.7663\\31\\-31.52623\\-138.1381\\31\\-32.6352\\-139.1146\\31\\-34.13222\\-141.0678\\31\\-33.47935\\-143.0621\\31\\-35.43248\\-144.2152\\31\\-37.3856\\-144.5486\\31\\-39.33873\\-145.0825\\31\\-41.29185\\-145.1857\\31\\-43.24498\\-145.6666\\31\\-45.1981\\-146.2673\\31\\-46.74329\\-146.9271\\31\\-49.10435\\-148.0665\\31\\-51.05748\\-149.9281\\31\\-52.86796\\-150.8334\\31\\-53.20295\\-150.8334\\31\\-54.96373\\-150.1375\\31\\-56.78947\\-148.8803\\31\\-56.50822\\-146.9271\\31\\-55.74334\\-144.974\\31\\-56.91685\\-143.4049\\31\\-57.65966\\-144.974\\31\\-57.397\\-146.9271\\31\\-58.86998\\-148.4001\\31\\-59.54782\\-148.8803\\31\\-62.77623\\-150.3852\\31\\-64.72935\\-152.2416\\31\\-66.68247\\-154.5395\\31\\-70.76534\\-158.6459\\31\\-72.54185\\-159.584\\31\\-73.55115\\-160.599\\31\\-74.71296\\-162.5521\\31\\-76.4481\\-163.6026\\31\\-77.31335\\-164.5053\\31\\-78.56661\\-166.4584\\31\\-80.28403\\-170.3646\\31\\-81.37269\\-172.3178\\31\\-81.59328\\-174.2709\\31\\-82.92838\\-176.224\\31\\-83.44337\\-178.1771\\31\\-83.61127\\-180.1303\\31\\-84.90184\\-182.0834\\31\\-85.61813\\-184.0365\\31\\-86.81422\\-185.9896\\31\\-87.36294\\-187.9428\\31\\-87.38452\\-189.8959\\31\\-88.4389\\-191.849\\31\\-89.26875\\-193.8021\\31\\-89.33121\\-197.7084\\31\\-89.89618\\-201.6146\\31\\-89.57066\\-203.5678\\31\\-89.64913\\-205.5209\\31\\-90.11997\\-206.0664\\31\\-92.0731\\-207.793\\31\\-94.02622\\-209.9918\\31\\-95.97935\\-210.8183\\31\\-97.93247\\-210.6491\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "447"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-51.05748\\-95.15248\\31\\-52.19348\\-94.19276\\31\\-51.05748\\-92.18219\\31\\-49.10435\\-91.85308\\31\\-48.91307\\-92.23963\\31\\-47.15123\\-93.26298\\31\\-45.1981\\-94.2411\\31\\-49.10435\\-96.06137\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "448"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-106.4028\\31\\-42.39048\\-105.9115\\31\\-42.46476\\-102.0053\\31\\-42.43983\\-100.0521\\31\\-41.80928\\-98.09901\\31\\-41.29185\\-97.63367\\31\\-39.33873\\-97.17535\\31\\-37.3856\\-97.73202\\31\\-36.95881\\-98.09901\\31\\-36.25017\\-100.0521\\31\\-37.3856\\-102.0876\\31\\-38.21152\\-103.9584\\31\\-39.33873\\-104.9486\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "449"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-19.80748\\-123.9812\\31\\-20.26812\\-123.4896\\31\\-19.80748\\-122.9665\\31\\-18.03584\\-121.5365\\31\\-18.54401\\-119.5834\\31\\-20.9363\\-117.6303\\31\\-20.81845\\-115.6771\\31\\-19.80748\\-114.6617\\31\\-17.85435\\-114.5554\\31\\-15.90123\\-114.5718\\31\\-13.9481\\-113.0318\\31\\-11.99498\\-111.0812\\31\\-10.4691\\-111.7709\\31\\-10.47921\\-113.724\\31\\-10.81365\\-115.6771\\31\\-11.34936\\-117.6303\\31\\-11.99498\\-118.2831\\31\\-13.9481\\-119.0183\\31\\-17.68056\\-121.5365\\31\\-17.64913\\-123.4896\\31\\-17.85435\\-124.0045\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "450"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-10.04185\\-159.0163\\31\\-10.46147\\-158.6459\\31\\-11.25394\\-156.6928\\31\\-11.99498\\-155.5779\\31\\-13.9481\\-153.9393\\31\\-15.90123\\-153.7277\\31\\-16.68365\\-152.7865\\31\\-15.90123\\-152.0357\\31\\-13.9481\\-151.9054\\31\\-10.04185\\-151.1482\\31\\-8.088726\\-151.0572\\31\\-6.135601\\-149.2611\\31\\-5.876513\\-148.8803\\31\\-5.048862\\-146.9271\\31\\-4.182476\\-145.1854\\31\\-4.182476\\-144.7749\\31\\-5.046897\\-143.0209\\31\\-5.565939\\-141.0678\\31\\-5.781145\\-139.1146\\31\\-6.486653\\-137.1615\\31\\-7.760537\\-135.2084\\31\\-9.517401\\-133.2553\\31\\-10.13659\\-131.3021\\31\\-8.87474\\-129.349\\31\\-8.088726\\-128.6166\\31\\-6.135601\\-128.7671\\31\\-4.182476\\-128.345\\31\\-2.229351\\-127.3133\\31\\-0.276226\\-126.8128\\31\\1.676899\\-127.9062\\31\\2.795063\\-129.349\\31\\6.083196\\-133.2553\\31\\6.818501\\-135.2084\\31\\6.921985\\-137.1615\\31\\6.449677\\-139.1146\\31\\5.583149\\-140.8893\\31\\5.583149\\-141.2428\\31\\6.666348\\-143.0209\\31\\7.536274\\-143.7777\\31\\9.489399\\-144.8376\\31\\11.73026\\-146.9271\\31\\12.18062\\-148.8803\\31\\11.44252\\-149.3504\\31\\8.416386\\-150.8334\\31\\7.536274\\-151.3818\\31\\5.948298\\-152.7865\\31\\4.74527\\-154.7396\\31\\4.606586\\-156.6928\\31\\3.630024\\-158.6924\\31\\1.676899\\-159.4934\\31\\-2.229351\\-159.5485\\31\\-4.182476\\-159.7421\\31\\-6.135601\\-159.6964\\31\\-8.088726\\-159.4553\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "141"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "451"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.276226\\-217.4987\\31\\-2.229351\\-216.107\\31\\-4.182476\\-214.2235\\31\\-6.135601\\-212.9174\\31\\-10.04185\\-213.0294\\31\\-11.99498\\-212.7312\\31\\-13.9481\\-212.0037\\31\\-15.90123\\-210.7997\\31\\-17.85435\\-210.584\\31\\-19.80748\\-210.4867\\31\\-21.7606\\-210.0188\\31\\-23.71373\\-208.7445\\31\\-25.66685\\-208.5304\\31\\-27.61998\\-208.5077\\31\\-29.5731\\-208.0329\\31\\-31.52623\\-206.7814\\31\\-33.47935\\-206.6391\\31\\-39.33873\\-206.5334\\31\\-41.29185\\-206.1877\\31\\-43.24498\\-204.7752\\31\\-45.1981\\-204.5854\\31\\-47.15123\\-203.8102\\31\\-49.10435\\-202.6308\\31\\-51.05748\\-202.2568\\31\\-53.0106\\-200.9508\\31\\-54.30717\\-199.6615\\31\\-55.7333\\-195.7553\\31\\-56.91685\\-194.0801\\31\\-58.86998\\-194.9754\\31\\-60.05176\\-193.8021\\31\\-59.75159\\-191.849\\31\\-58.63262\\-189.8959\\31\\-57.89341\\-187.9428\\31\\-56.91685\\-186.5951\\31\\-54.43475\\-184.0365\\31\\-53.55992\\-182.0834\\31\\-51.94744\\-180.1303\\31\\-50.82012\\-178.1771\\31\\-49.85342\\-176.224\\31\\-49.10435\\-175.453\\31\\-47.15123\\-174.6092\\31\\-45.1981\\-173.4256\\31\\-43.24498\\-171.9879\\31\\-41.29185\\-170.9517\\31\\-39.33873\\-169.6918\\31\\-37.3856\\-169.5508\\31\\-35.43248\\-169.6383\\31\\-31.52623\\-171.5914\\31\\-27.61998\\-173.3371\\31\\-23.71373\\-173.3964\\31\\-21.7606\\-172.713\\31\\-19.80748\\-171.6921\\31\\-15.90123\\-171.7038\\31\\-13.9481\\-172.8828\\31\\-11.99498\\-174.6282\\31\\-10.58282\\-176.224\\31\\-9.350833\\-178.1771\\31\\-8.088726\\-179.6553\\31\\-6.135601\\-180.9297\\31\\-4.182476\\-181.4845\\31\\-2.564589\\-182.0834\\31\\-0.276226\\-183.0764\\31\\1.676899\\-184.132\\31\\3.630024\\-185.0703\\31\\5.583149\\-186.9851\\31\\7.536274\\-187.8073\\31\\9.489399\\-188.9753\\31\\11.44252\\-189.7605\\31\\13.39565\\-190.9028\\31\\15.34877\\-192.5242\\31\\17.3019\\-193.1383\\31\\19.25502\\-194.2227\\31\\21.20815\\-196.2359\\31\\22.18471\\-197.7084\\31\\23.16127\\-198.6651\\31\\27.06752\\-199.4745\\31\\29.02065\\-199.0337\\31\\30.97377\\-197.9474\\31\\31.22326\\-197.7084\\31\\32.46273\\-195.7553\\31\\32.88934\\-193.8021\\31\\33.51858\\-191.849\\31\\34.3343\\-189.8959\\31\\35.58338\\-187.9428\\31\\37.38654\\-185.9896\\31\\40.7394\\-183.3702\\31\\42.69252\\-182.9379\\31\\44.64565\\-182.3803\\31\\46.59877\\-182.9797\\31\\48.5519\\-183.127\\31\\50.50502\\-183.4368\\31\\52.20274\\-184.0365\\31\\54.41127\\-184.9495\\31\\56.3644\\-185.3754\\31\\58.31752\\-187.0934\\31\\61.1302\\-189.8959\\31\\61.80783\\-191.849\\31\\61.94195\\-193.8021\\31\\63.17334\\-195.7553\\31\\63.7705\\-197.7084\\31\\64.1769\\-198.1628\\31\\66.13003\\-199.5385\\31\\68.08315\\-200.2758\\31\\69.42922\\-201.6146\\31\\68.08315\\-203.2422\\31\\66.13003\\-203.5012\\31\\64.1769\\-204.6756\\31\\63.421\\-205.5209\\31\\62.94248\\-207.474\\31\\61.38222\\-209.4271\\31\\60.35203\\-211.3803\\31\\56.3644\\-213.7891\\31\\54.41127\\-214.6164\\31\\52.45815\\-214.94\\31\\50.50502\\-214.7028\\31\\48.5519\\-213.9898\\31\\46.59877\\-212.9367\\31\\44.64565\\-212.4409\\31\\42.69252\\-211.1933\\31\\40.7394\\-210.4785\\31\\37.60565\\-207.474\\31\\35.85659\\-205.5209\\31\\34.88002\\-203.4963\\31\\32.9269\\-202.6693\\31\\30.97377\\-202.8037\\31\\29.02065\\-203.7294\\31\\27.06752\\-203.817\\31\\25.1144\\-203.7548\\31\\23.16127\\-204.2056\\31\\22.09302\\-205.5209\\31\\21.20815\\-206.7944\\31\\20.56337\\-207.474\\31\\20.05271\\-209.4271\\31\\19.25502\\-210.6572\\31\\18.61928\\-211.3803\\31\\12.78442\\-217.2396\\31\\11.44252\\-218.2759\\31\\9.489399\\-218.9702\\31\\7.536274\\-218.9575\\31\\3.630024\\-218.8086\\31\\1.676899\\-218.291\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "11"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "452"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "5.583149\\-118.5064\\31\\4.788743\\-117.6303\\31\\4.485206\\-115.6771\\31\\5.583149\\-114.6805\\31\\7.536274\\-114.6805\\31\\9.489399\\-115.6533\\31\\11.44252\\-116.8203\\31\\12.20327\\-117.6303\\31\\11.44252\\-118.4216\\31\\9.489399\\-119.1025\\31\\7.536274\\-119.1367\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "453"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "42.69252\\-149.4576\\31\\40.7394\\-148.0412\\31\\36.83315\\-146.1334\\31\\34.88002\\-145.3707\\31\\29.02065\\-145.0825\\31\\27.06752\\-144.5676\\31\\25.1144\\-144.2526\\31\\23.16127\\-143.7818\\31\\21.20815\\-142.33\\31\\19.25502\\-141.6602\\31\\18.66258\\-141.0678\\31\\17.77556\\-139.1146\\31\\18.03689\\-135.2084\\31\\18.22933\\-131.3021\\31\\19.36434\\-129.349\\31\\20.23159\\-127.3959\\31\\21.20815\\-126.5029\\31\\25.1144\\-125.8867\\31\\27.06752\\-126.1336\\31\\29.02065\\-125.1172\\31\\30.97377\\-124.2358\\31\\32.9269\\-122.8845\\31\\34.88002\\-120.9495\\31\\36.83315\\-120.6826\\31\\38.78627\\-121.6173\\31\\42.02781\\-123.4896\\31\\42.69252\\-123.9605\\31\\44.15737\\-125.4428\\31\\44.32013\\-127.3959\\31\\45.22245\\-129.349\\31\\45.44958\\-131.3021\\31\\43.72359\\-133.2553\\31\\43.5425\\-135.2084\\31\\45.71244\\-137.1615\\31\\45.49262\\-139.1146\\31\\45.50918\\-141.0678\\31\\47.09301\\-143.0209\\31\\48.10911\\-144.974\\31\\47.8599\\-146.9271\\31\\44.64565\\-149.3885\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "121"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "454"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "91.52065\\-209.0057\\31\\90.71227\\-207.474\\31\\90.69516\\-205.5209\\31\\90.1547\\-203.5678\\31\\90.05581\\-201.6146\\31\\90.10654\\-199.6615\\31\\88.97285\\-197.7084\\31\\88.75549\\-195.7553\\31\\88.6943\\-193.8021\\31\\87.82418\\-191.849\\31\\86.81999\\-189.8959\\31\\86.73447\\-187.9428\\31\\85.92948\\-185.9896\\31\\84.80615\\-184.0365\\31\\83.97311\\-182.0834\\31\\82.83855\\-180.1303\\31\\82.76414\\-178.1771\\31\\81.92018\\-176.224\\31\\80.80677\\-174.2709\\31\\78.84904\\-170.3646\\31\\77.93904\\-168.4115\\31\\75.89565\\-166.2691\\31\\73.94253\\-162.7825\\31\\71.96597\\-160.599\\31\\70.50476\\-158.6459\\31\\69.22352\\-156.6928\\31\\68.08315\\-155.6884\\31\\66.13003\\-155.6071\\31\\64.1769\\-154.8481\\31\\62.22377\\-153.6391\\31\\60.27065\\-152.8096\\31\\58.31752\\-151.6975\\31\\56.3644\\-151.3809\\31\\54.41127\\-150.3793\\31\\52.45815\\-149.7489\\31\\50.71217\\-148.8803\\31\\49.34955\\-146.9271\\31\\49.29449\\-144.974\\31\\49.81781\\-143.0209\\31\\49.1206\\-141.0678\\31\\47.91\\-139.1146\\31\\47.7235\\-137.1615\\31\\48.5519\\-136.2651\\31\\49.28941\\-135.2084\\31\\49.68959\\-133.2553\\31\\49.66866\\-127.3959\\31\\49.03408\\-125.4428\\31\\47.35773\\-123.4896\\31\\46.59877\\-122.7623\\31\\44.64565\\-122.0248\\31\\44.06402\\-121.5365\\31\\42.44504\\-119.5834\\31\\42.49308\\-117.6303\\31\\41.86379\\-115.6771\\31\\41.76148\\-113.724\\31\\41.83085\\-111.7709\\31\\42.69252\\-110.8139\\31\\44.64565\\-109.0115\\31\\46.08844\\-107.8646\\31\\48.5519\\-105.6391\\31\\49.87313\\-103.9584\\31\\52.45815\\-101.2888\\31\\54.41127\\-101.2354\\31\\55.22417\\-102.0053\\31\\56.53878\\-103.9584\\31\\57.31238\\-105.9115\\31\\58.99084\\-107.8646\\31\\60.45765\\-109.8178\\31\\61.0762\\-111.7709\\31\\61.19153\\-113.724\\31\\62.87305\\-115.6771\\31\\63.62278\\-117.6303\\31\\63.75153\\-119.5834\\31\\65.03313\\-121.5365\\31\\65.58381\\-123.4896\\31\\66.85982\\-125.4428\\31\\67.54493\\-127.3959\\31\\68.75489\\-129.349\\31\\70.03628\\-131.8494\\31\\71.9894\\-132.3097\\31\\73.57092\\-133.2553\\31\\72.99541\\-135.2084\\31\\72.76955\\-137.1615\\31\\74.68003\\-139.1146\\31\\75.89565\\-141.4238\\31\\77.55581\\-144.974\\31\\78.61156\\-146.9271\\31\\80.18884\\-148.8803\\31\\80.61793\\-150.8334\\31\\79.8019\\-151.9717\\31\\78.98183\\-152.7865\\31\\77.64053\\-154.7396\\31\\79.0794\\-156.6928\\31\\79.8019\\-157.2774\\31\\81.75503\\-157.2998\\31\\83.70815\\-157.8814\\31\\86.4715\\-160.599\\31\\87.6144\\-161.5576\\31\\89.44338\\-162.5521\\31\\91.54336\\-164.5053\\31\\94.02386\\-168.4115\\31\\95.66042\\-170.3646\\31\\96.69281\\-172.3178\\31\\97.94212\\-174.2709\\31\\98.37426\\-176.224\\31\\98.63633\\-178.1771\\31\\99.07406\\-180.1303\\31\\99.15876\\-182.0834\\31\\99.08566\\-184.0365\\31\\98.285\\-185.9896\\31\\98.2417\\-187.9428\\31\\99.99599\\-189.8959\\31\\100.5129\\-191.849\\31\\100.7726\\-195.7553\\31\\100.8243\\-199.6615\\31\\100.5041\\-201.6146\\31\\100.3097\\-203.5678\\31\\99.38656\\-205.5209\\31\\97.38003\\-206.6376\\31\\95.4269\\-208.2168\\31\\93.47378\\-209.275\\31"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "121"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "455"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-99.8856\\-210.8042\\33\\-101.0872\\-209.4271\\33\\-102.3793\\-207.474\\33\\-102.8693\\-205.5209\\33\\-102.9706\\-201.6146\\33\\-103.2299\\-199.6615\\33\\-103.4453\\-191.849\\33\\-103.4558\\-189.8959\\33\\-104.4071\\-187.9428\\33\\-104.3767\\-185.9896\\33\\-103.321\\-184.0365\\33\\-103.321\\-182.0834\\33\\-103.0654\\-180.1303\\33\\-102.4916\\-178.1771\\33\\-101.0528\\-176.224\\33\\-100.5313\\-174.2709\\33\\-99.09959\\-172.3178\\33\\-98.11948\\-170.3646\\33\\-96.58833\\-168.4115\\33\\-94.86701\\-166.4584\\33\\-93.38418\\-164.5053\\33\\-92.32078\\-162.5521\\33\\-90.74905\\-160.599\\33\\-89.49519\\-158.6459\\33\\-88.4658\\-156.6928\\33\\-86.95289\\-154.7396\\33\\-85.62997\\-152.7865\\33\\-85.43531\\-150.8334\\33\\-84.76935\\-148.8803\\33\\-83.4747\\-146.9271\\33\\-82.96385\\-144.974\\33\\-81.93045\\-143.0209\\33\\-81.02065\\-139.1146\\33\\-79.84067\\-137.1615\\33\\-79.16237\\-135.2084\\33\\-78.01429\\-133.2553\\33\\-77.1478\\-131.3021\\33\\-75.17806\\-127.3959\\33\\-74.49497\\-125.7881\\33\\-73.24798\\-123.4896\\33\\-72.43334\\-121.5365\\33\\-72.38026\\-119.5834\\33\\-71.2346\\-117.6303\\33\\-70.40173\\-115.6771\\33\\-70.26758\\-113.724\\33\\-69.16882\\-111.7709\\33\\-68.29951\\-109.8178\\33\\-66.28574\\-105.9115\\33\\-66.2571\\-103.9584\\33\\-65.92065\\-102.0053\\33\\-62.77623\\-99.31037\\33\\-60.8231\\-97.88731\\33\\-58.86998\\-96.70277\\33\\-58.13755\\-96.14588\\33\\-56.91685\\-95.50779\\33\\-54.96373\\-94.8697\\33\\-54.52891\\-94.19276\\33\\-51.65278\\-92.23963\\33\\-51.05748\\-91.63184\\33\\-49.10435\\-90.96746\\33\\-47.15123\\-91.3523\\33\\-45.1981\\-92.04717\\33\\-43.24498\\-93.20078\\33\\-42.28824\\-94.19276\\33\\-41.15542\\-96.14588\\33\\-39.33873\\-97.26893\\33\\-38.45224\\-98.09901\\33\\-36.84622\\-100.0521\\33\\-38.18845\\-103.9584\\33\\-41.29185\\-107.1605\\33\\-44.42476\\-109.8178\\33\\-47.15123\\-112.5329\\33\\-49.10435\\-114.0321\\33\\-51.05748\\-115.0242\\33\\-51.69579\\-115.6771\\33\\-53.14604\\-117.6303\\33\\-53.87373\\-119.5834\\33\\-55.71226\\-121.5365\\33\\-56.91685\\-123.8778\\33\\-57.57314\\-125.4428\\33\\-57.76382\\-127.3959\\33\\-57.05229\\-129.349\\33\\-56.34534\\-133.2553\\33\\-55.84806\\-135.2084\\33\\-56.07088\\-137.1615\\33\\-56.74247\\-139.1146\\33\\-57.57669\\-141.0678\\33\\-58.52345\\-144.974\\33\\-59.68378\\-146.9271\\33\\-60.8231\\-147.7634\\33\\-62.77623\\-148.7408\\33\\-64.72935\\-150.5335\\33\\-66.68247\\-152.6434\\33\\-68.6356\\-154.5965\\33\\-70.85934\\-156.6928\\33\\-72.54185\\-157.4773\\33\\-74.49497\\-158.5064\\33\\-76.5407\\-160.599\\33\\-78.40122\\-163.5857\\33\\-80.56872\\-166.4584\\33\\-82.30747\\-170.1651\\33\\-83.39085\\-172.3178\\33\\-83.50668\\-174.2709\\33\\-84.2606\\-175.9827\\33\\-85.36665\\-178.1771\\33\\-85.48661\\-180.1303\\33\\-86.55177\\-182.0834\\33\\-87.43163\\-184.0365\\33\\-88.53853\\-185.9896\\33\\-89.33524\\-187.9428\\33\\-89.36043\\-189.8959\\33\\-89.63765\\-191.849\\33\\-90.68567\\-193.8021\\33\\-91.18009\\-195.7553\\33\\-91.18484\\-197.7084\\33\\-91.33659\\-201.6146\\33\\-91.33513\\-205.5209\\33\\-92.952\\-207.474\\33\\-94.68243\\-209.4271\\33\\-95.97935\\-210.6466\\33\\-97.93247\\-211.0654\\33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "456"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-53.0106\\-149.6708\\33\\-54.50474\\-148.8803\\33\\-54.96373\\-148.1631\\33\\-55.43457\\-146.9271\\33\\-54.8078\\-144.974\\33\\-51.42147\\-143.0209\\33\\-51.05748\\-142.5326\\33\\-50.37109\\-141.0678\\33\\-49.71542\\-139.1146\\33\\-49.15904\\-137.1615\\33\\-49.92753\\-135.2084\\33\\-50.57212\\-133.2553\\33\\-51.08036\\-131.3021\\33\\-51.19804\\-129.349\\33\\-49.52972\\-125.4428\\33\\-48.77883\\-123.4896\\33\\-46.91522\\-121.5365\\33\\-45.1981\\-120.6166\\33\\-44.04087\\-119.5834\\33\\-42.31067\\-117.6303\\33\\-41.29185\\-116.6884\\33\\-39.33873\\-116.5629\\33\\-37.3856\\-116.1204\\33\\-35.43248\\-115.3425\\33\\-33.47935\\-116.5102\\33\\-31.52623\\-117.2359\\33\\-30.90478\\-117.6303\\33\\-29.62193\\-119.5834\\33\\-30.75311\\-121.5365\\33\\-30.3344\\-123.4896\\33\\-29.3324\\-125.4428\\33\\-28.57422\\-127.3959\\33\\-25.46557\\-131.3021\\33\\-24.50026\\-133.2553\\33\\-24.84634\\-135.2084\\33\\-26.47006\\-137.1615\\33\\-27.61998\\-138.1381\\33\\-29.5731\\-138.5973\\33\\-30.37048\\-139.1146\\33\\-31.52623\\-140.2197\\33\\-32.11574\\-141.0678\\33\\-31.125\\-143.0209\\33\\-31.52623\\-144.2532\\33\\-32.28306\\-144.974\\33\\-33.47935\\-145.293\\33\\-35.43248\\-145.0262\\33\\-37.3856\\-144.9359\\33\\-41.29185\\-145.0262\\33\\-43.24498\\-145.1226\\33\\-45.1981\\-145.6513\\33\\-47.15123\\-146.2888\\33\\-49.10435\\-147.5285\\33\\-51.4542\\-148.8803\\33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "21"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "457"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-17.85435\\-125.6545\\33\\-19.80748\\-124.4554\\33\\-20.6815\\-123.4896\\33\\-20.03932\\-121.5365\\33\\-19.11491\\-119.5834\\33\\-20.51361\\-117.6303\\33\\-20.0893\\-115.6771\\33\\-19.80748\\-115.3814\\33\\-17.85435\\-114.5672\\33\\-15.90123\\-114.5117\\33\\-13.9481\\-112.9645\\33\\-11.99498\\-111.0271\\33\\-9.946788\\-111.7709\\33\\-9.959849\\-113.724\\33\\-10.24129\\-115.6771\\33\\-10.8003\\-117.6303\\33\\-11.99498\\-118.9093\\33\\-13.9481\\-120.6355\\33\\-15.94561\\-121.5365\\33\\-16.85226\\-123.4896\\33\\-17.01342\\-125.4428\\33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "60"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "458"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.088726\\-160.9267\\33\\-10.04185\\-160.1875\\33\\-11.99498\\-159.7657\\33\\-13.9481\\-158.9991\\33\\-16.3379\\-156.6928\\33\\-17.85435\\-155.4656\\33\\-19.80748\\-153.2029\\33\\-21.7606\\-151.1422\\33\\-22.23603\\-150.8334\\33\\-21.7606\\-150.4957\\33\\-17.85435\\-151.3311\\33\\-15.90123\\-151.0328\\33\\-13.9481\\-151.1373\\33\\-11.99498\\-151.0691\\33\\-10.04185\\-150.1684\\33\\-8.088726\\-149.6168\\33\\-6.135601\\-148.0719\\33\\-5.191057\\-146.9271\\33\\-4.337838\\-144.974\\33\\-5.293897\\-143.0209\\33\\-5.190372\\-141.0678\\33\\-4.182476\\-139.629\\33\\-3.656048\\-139.1146\\33\\-3.282644\\-137.1615\\33\\-4.239253\\-135.2084\\33\\-6.135601\\-134.1425\\33\\-8.088726\\-133.8456\\33\\-8.880334\\-133.2553\\33\\-9.758922\\-131.3021\\33\\-8.088726\\-129.9685\\33\\-4.182476\\-130.8753\\33\\-2.229351\\-130.7429\\33\\-0.276226\\-129.8246\\33\\1.676899\\-129.2405\\33\\3.630024\\-130.5118\\33\\4.436973\\-131.3021\\33\\5.744739\\-133.2553\\33\\6.665659\\-135.2084\\33\\7.221461\\-137.1615\\33\\6.706425\\-139.1146\\33\\6.295641\\-141.0678\\33\\7.536274\\-142.5415\\33\\9.489399\\-144.2185\\33\\11.44252\\-145.6938\\33\\13.39565\\-145.9553\\33\\15.47747\\-146.9271\\33\\15.86315\\-148.8803\\33\\15.34877\\-149.415\\33\\12.44381\\-150.8334\\33\\11.44252\\-151.4514\\33\\9.860131\\-152.7865\\33\\7.914582\\-154.7396\\33\\6.844542\\-156.6928\\33\\6.152811\\-158.6459\\33\\4.771381\\-160.599\\33\\3.630024\\-161.6079\\33\\1.676899\\-161.7569\\33\\-0.276226\\-161.7569\\33\\-2.229351\\-161.4559\\33\\-6.135601\\-161.4559\\33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "144"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "459"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "1.676899\\-217.4987\\33\\-0.276226\\-216.3721\\33\\-2.229351\\-215.4229\\33\\-4.182476\\-214.1472\\33\\-6.135601\\-213.0743\\33\\-8.088726\\-213.975\\33\\-10.04185\\-214.4459\\33\\-11.99498\\-213.9366\\33\\-13.9481\\-212.7651\\33\\-15.90123\\-212.4857\\33\\-17.85435\\-211.9719\\33\\-19.80748\\-211.0547\\33\\-21.7606\\-210.7732\\33\\-23.71373\\-210.0985\\33\\-25.66685\\-209.0703\\33\\-27.61998\\-209.0501\\33\\-29.5731\\-208.7511\\33\\-31.52623\\-208.5606\\33\\-33.47935\\-208.5083\\33\\-35.43248\\-208.097\\33\\-37.3856\\-207.097\\33\\-39.33873\\-207.097\\33\\-41.29185\\-206.7537\\33\\-43.24498\\-206.5722\\33\\-45.1981\\-206.1701\\33\\-47.15123\\-204.7812\\33\\-49.10435\\-204.2241\\33\\-51.05748\\-202.929\\33\\-53.0106\\-202.6423\\33\\-54.30294\\-201.6146\\33\\-55.64784\\-199.6615\\33\\-56.08604\\-197.7084\\33\\-56.91685\\-196.2563\\33\\-58.86998\\-197.041\\33\\-60.15567\\-195.7553\\33\\-59.89627\\-193.8021\\33\\-59.25937\\-191.849\\33\\-56.91685\\-188.5768\\33\\-56.36872\\-187.9428\\33\\-55.48568\\-185.9896\\33\\-53.93316\\-184.0365\\33\\-53.10534\\-182.0834\\33\\-51.94308\\-180.1303\\33\\-49.10435\\-176.838\\33\\-47.15123\\-175.0754\\33\\-45.1981\\-173.974\\33\\-43.24498\\-173.1425\\33\\-41.29185\\-172.0924\\33\\-39.33873\\-171.7294\\33\\-35.43248\\-171.7294\\33\\-33.47935\\-172.7996\\33\\-31.52623\\-173.6061\\33\\-29.5731\\-173.9948\\33\\-27.61998\\-175.0344\\33\\-25.66685\\-176.4309\\33\\-23.71373\\-177.178\\33\\-21.7606\\-176.5996\\33\\-19.80748\\-175.4115\\33\\-15.90123\\-175.4115\\33\\-13.9481\\-176.5671\\33\\-11.99498\\-178.4969\\33\\-10.63784\\-180.1303\\33\\-10.04185\\-180.64\\33\\-8.088726\\-181.2312\\33\\-6.135601\\-181.492\\33\\-4.182476\\-182.2461\\33\\-2.229351\\-182.4368\\33\\-0.276226\\-183.1107\\33\\1.676899\\-184.9011\\33\\3.630024\\-185.476\\33\\7.536274\\-188.692\\33\\9.489399\\-189.4429\\33\\11.44252\\-190.6674\\33\\13.39565\\-191.4922\\33\\17.3019\\-195.0861\\33\\18.51986\\-195.7553\\33\\19.25502\\-196.3555\\33\\20.02707\\-197.7084\\33\\21.20815\\-198.9975\\33\\23.16127\\-199.4745\\33\\27.06752\\-199.9395\\33\\29.02065\\-199.8282\\33\\30.97377\\-198.6356\\33\\32.9269\\-197.1607\\33\\34.08895\\-195.7553\\33\\34.18644\\-193.8021\\33\\34.44667\\-191.849\\33\\35.56251\\-189.8959\\33\\36.83315\\-188.287\\33\\39.17016\\-185.9896\\33\\42.69252\\-183.4262\\33\\44.64565\\-183.1689\\33\\46.59877\\-183.3702\\33\\50.50502\\-184.0594\\33\\52.45815\\-184.9532\\33\\54.41127\\-185.3335\\33\\56.3644\\-185.9521\\33\\58.31752\\-187.1236\\33\\61.1302\\-189.8959\\33\\61.80783\\-191.849\\33\\62.98061\\-193.8021\\33\\63.50082\\-195.7553\\33\\65.00533\\-197.7084\\33\\66.13003\\-198.7905\\33\\68.08315\\-199.6386\\33\\70.03628\\-200.9162\\33\\70.71745\\-201.6146\\33\\70.78553\\-203.5678\\33\\70.03628\\-204.079\\33\\68.08315\\-203.3561\\33\\66.13003\\-204.4137\\33\\65.23177\\-205.5209\\33\\64.34706\\-207.474\\33\\62.93349\\-209.4271\\33\\60.27065\\-212.1991\\33\\58.31752\\-212.8804\\33\\56.3644\\-214.0929\\33\\54.41127\\-214.9297\\33\\50.50502\\-214.961\\33\\48.5519\\-214.3048\\33\\46.59877\\-213.0977\\33\\44.64565\\-212.7197\\33\\42.69252\\-212.08\\33\\40.7394\\-210.4348\\33\\37.76471\\-207.474\\33\\36.62145\\-205.5209\\33\\36.20189\\-203.5678\\33\\34.88002\\-202.2459\\33\\32.9269\\-201.9076\\33\\30.97377\\-202.6159\\33\\29.02065\\-204.3186\\33\\27.06752\\-204.6543\\33\\25.1144\\-204.4203\\33\\23.16127\\-203.6625\\33\\21.20815\\-204.1674\\33\\20.01513\\-205.5209\\33\\18.59306\\-207.474\\33\\17.99717\\-209.4271\\33\\16.63051\\-211.3803\\33\\12.74227\\-215.2865\\33\\11.44252\\-216.5411\\33\\9.489399\\-217.7616\\33\\7.536274\\-217.8467\\33\\3.630024\\-217.8394\\33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "460"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "5.583149\\-120.3678\\33\\4.834616\\-119.5834\\33\\3.976546\\-117.6303\\33\\3.630024\\-115.668\\33\\5.583149\\-114.4913\\33\\7.536274\\-114.5154\\33\\9.489399\\-114.6775\\33\\11.39853\\-115.6771\\33\\13.00871\\-117.6303\\33\\11.44252\\-119.6065\\33\\9.489399\\-120.6095\\33\\7.536274\\-121.0228\\33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "461"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "40.7394\\-147.5218\\33\\38.78627\\-146.3032\\33\\36.83315\\-145.6838\\33\\34.88002\\-145.278\\33\\30.97377\\-145.267\\33\\29.02065\\-145.3758\\33\\25.1144\\-145.295\\33\\23.16127\\-145.705\\33\\21.20815\\-145.5086\\33\\19.25502\\-143.6739\\33\\16.64494\\-141.0678\\33\\16.00507\\-139.1146\\33\\15.96467\\-137.1615\\33\\16.01284\\-133.2553\\33\\16.09873\\-131.3021\\33\\17.3019\\-129.1511\\33\\18.01554\\-127.3959\\33\\19.18801\\-125.4428\\33\\21.20815\\-124.4413\\33\\23.16127\\-124.8837\\33\\25.1144\\-124.4662\\33\\26.15774\\-123.4896\\33\\27.06752\\-122.8779\\33\\29.02065\\-122.6374\\33\\30.97377\\-122.5692\\33\\32.9269\\-121.3737\\33\\34.88002\\-120.7257\\33\\40.7394\\-122.7942\\33\\42.69252\\-124.0928\\33\\44.05046\\-125.4428\\33\\45.15993\\-127.3959\\33\\45.82979\\-129.349\\33\\45.66939\\-131.3021\\33\\43.9828\\-133.2553\\33\\44.64565\\-134.7428\\33\\46.08509\\-137.1615\\33\\45.70034\\-139.1146\\33\\45.55439\\-141.0678\\33\\47.42936\\-143.0209\\33\\48.10801\\-144.974\\33\\47.32477\\-146.9271\\33\\46.59877\\-147.5368\\33\\44.64565\\-148.185\\33\\42.69252\\-148.371\\33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "124"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "462"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "93.47378\\-207.068\\33\\92.6638\\-205.5209\\33\\91.90968\\-203.5678\\33\\91.74827\\-199.6615\\33\\90.77847\\-197.7084\\33\\90.73121\\-195.7553\\33\\90.11892\\-193.8021\\33\\89.01189\\-191.849\\33\\88.77833\\-189.8959\\33\\88.24075\\-187.9428\\33\\87.02303\\-185.9896\\33\\86.80791\\-184.0365\\33\\85.94579\\-182.0834\\33\\84.84574\\-180.1303\\33\\84.33681\\-178.1771\\33\\82.98677\\-176.224\\33\\82.83073\\-174.2709\\33\\80.83676\\-170.3646\\33\\79.95525\\-168.4115\\33\\78.7979\\-166.4584\\33\\77.84878\\-164.5165\\33\\75.89565\\-162.3666\\33\\71.9894\\-158.5023\\33\\70.61201\\-156.6928\\33\\68.08315\\-154.3267\\33\\66.13003\\-153.6321\\33\\64.1769\\-153.3469\\33\\62.22377\\-152.295\\33\\60.27065\\-151.4068\\33\\58.31752\\-150.3225\\33\\56.3644\\-149.6783\\33\\54.41127\\-149.3976\\33\\52.45815\\-148.3768\\33\\50.97153\\-146.9271\\33\\50.50502\\-145.7827\\33\\49.69631\\-144.974\\33\\50.09639\\-143.0209\\33\\49.84199\\-141.0678\\33\\48.5519\\-138.1241\\33\\47.70961\\-137.1615\\33\\48.5519\\-136.6802\\33\\49.59258\\-135.2084\\33\\50.1083\\-133.2553\\33\\50.09863\\-127.3959\\33\\49.80673\\-125.4428\\33\\48.5519\\-124.252\\33\\45.26539\\-121.5365\\33\\43.42763\\-119.5834\\33\\43.59573\\-117.6303\\33\\43.23312\\-115.6771\\33\\42.25784\\-113.724\\33\\42.25784\\-111.7709\\33\\43.84755\\-109.8178\\33\\46.59877\\-107.0315\\33\\50.50502\\-103.3129\\33\\52.45815\\-102.2215\\33\\54.41127\\-102.9194\\33\\57.01718\\-105.9115\\33\\58.92385\\-107.8646\\33\\59.98882\\-109.8178\\33\\60.10789\\-111.7709\\33\\60.36539\\-113.724\\33\\61.26724\\-115.6771\\33\\63.22906\\-117.6303\\33\\63.68005\\-119.5834\\33\\64.97066\\-121.5365\\33\\65.5759\\-123.4896\\33\\66.85982\\-125.4428\\33\\67.54493\\-127.3959\\33\\68.77488\\-129.349\\33\\70.03628\\-130.8005\\33\\71.9894\\-132.0374\\33\\73.1474\\-133.2553\\33\\72.76969\\-135.2084\\33\\73.86115\\-137.1615\\33\\75.19883\\-139.1146\\33\\76.40096\\-141.0678\\33\\77.14178\\-143.0209\\33\\78.1953\\-144.974\\33\\78.82008\\-146.9271\\33\\79.7571\\-148.8803\\33\\79.24687\\-150.8334\\33\\77.30282\\-152.7865\\33\\76.41232\\-154.7396\\33\\76.93081\\-156.6928\\33\\77.84878\\-157.7602\\33\\79.8019\\-159.5268\\33\\80.62527\\-158.6459\\33\\81.75503\\-157.7013\\33\\83.70815\\-158.7754\\33\\84.72935\\-160.599\\33\\83.70815\\-162.6917\\33\\83.44729\\-164.5053\\33\\83.70815\\-164.7793\\33\\85.66128\\-164.6244\\33\\87.6144\\-162.8072\\33\\89.5754\\-162.5521\\33\\91.52065\\-163.7766\\33\\92.31818\\-164.5053\\33\\94.02547\\-166.4584\\33\\95.59578\\-168.4115\\33\\96.72356\\-170.3646\\33\\97.96145\\-172.3178\\33\\98.6356\\-174.2709\\33\\99.89199\\-176.224\\33\\100.2843\\-178.1771\\33\\100.2929\\-182.0834\\33\\100.03\\-184.0365\\33\\99.33315\\-184.7757\\33\\97.27486\\-185.9896\\33\\97.43515\\-187.9428\\33\\98.08286\\-189.8959\\33\\96.33044\\-191.849\\33\\97.38003\\-192.7927\\33\\99.33315\\-193.0011\\33\\99.97004\\-193.8021\\33\\101.8112\\-195.7553\\33\\102.2387\\-197.7084\\33\\102.2375\\-201.6146\\33\\101.8307\\-203.5678\\33\\100.5439\\-205.5209\\33\\99.33315\\-206.7255\\33\\97.38003\\-206.9439\\33\\95.44724\\-207.474\\33"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "126"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "463"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-99.8856\\-212.4602\\35\\-101.8387\\-211.3717\\35\\-102.8603\\-209.4271\\35\\-102.9863\\-207.474\\35\\-103.2456\\-205.5209\\35\\-103.2536\\-203.5678\\35\\-103.1114\\-201.6146\\35\\-104.3006\\-199.6615\\35\\-104.8734\\-197.7084\\35\\-104.8905\\-189.8959\\35\\-105.0066\\-187.9428\\35\\-105.0007\\-185.9896\\35\\-104.8865\\-184.0365\\35\\-104.8825\\-182.0834\\35\\-104.441\\-180.1303\\35\\-103.1704\\-178.1771\\35\\-102.543\\-176.224\\35\\-101.0872\\-174.2709\\35\\-100.5276\\-172.3178\\35\\-98.8046\\-170.3646\\35\\-97.21804\\-168.4115\\35\\-96.30487\\-166.4584\\35\\-94.02622\\-163.5779\\35\\-92.12569\\-160.599\\35\\-90.11997\\-159.1921\\35\\-89.52319\\-158.6459\\35\\-88.0029\\-156.6928\\35\\-86.80685\\-154.7396\\35\\-85.19493\\-152.7865\\35\\-85.35802\\-150.8334\\35\\-85.08215\\-148.8803\\35\\-83.80762\\-146.9271\\35\\-83.46917\\-144.974\\35\\-82.92117\\-143.0209\\35\\-81.73782\\-141.0678\\35\\-81.22581\\-139.1146\\35\\-79.94795\\-137.1615\\35\\-79.19109\\-135.2084\\35\\-78.1194\\-133.2553\\35\\-76.4481\\-129.7111\\35\\-75.20842\\-127.3959\\35\\-74.49497\\-125.7759\\35\\-73.24798\\-123.4896\\35\\-72.43334\\-121.5365\\35\\-72.38026\\-119.5834\\35\\-71.2346\\-117.6303\\35\\-69.63733\\-113.724\\35\\-68.65831\\-111.7709\\35\\-68.29951\\-109.8178\\35\\-66.28574\\-105.9115\\35\\-66.28574\\-103.9584\\35\\-66.16879\\-102.0053\\35\\-65.09129\\-100.0521\\35\\-64.72935\\-99.68243\\35\\-62.59403\\-98.09901\\35\\-60.8231\\-97.13435\\35\\-59.52276\\-96.14588\\35\\-58.86998\\-95.49657\\35\\-56.91685\\-94.993\\35\\-54.96373\\-93.54353\\35\\-53.0106\\-93.05045\\35\\-51.05748\\-91.66899\\35\\-49.10435\\-91.00684\\35\\-45.1981\\-91.14387\\35\\-43.62109\\-92.23963\\35\\-43.24498\\-92.64594\\35\\-42.32361\\-94.19276\\35\\-40.48257\\-96.14588\\35\\-38.88574\\-98.09901\\35\\-38.47017\\-100.0521\\35\\-38.46027\\-102.0053\\35\\-38.55466\\-103.9584\\35\\-40.07115\\-105.9115\\35\\-41.29185\\-107.2261\\35\\-47.90376\\-113.724\\35\\-49.10435\\-114.7006\\35\\-51.05748\\-116.1025\\35\\-53.0106\\-117.1035\\35\\-53.51591\\-117.6303\\35\\-55.01591\\-119.5834\\35\\-56.23273\\-121.5365\\35\\-57.61521\\-123.4896\\35\\-58.17243\\-125.4428\\35\\-58.20343\\-127.3959\\35\\-57.79062\\-129.349\\35\\-57.13309\\-131.3021\\35\\-56.98344\\-133.2553\\35\\-56.63503\\-135.2084\\35\\-56.85027\\-137.1615\\35\\-57.64676\\-139.1146\\35\\-58.16299\\-141.0678\\35\\-58.80339\\-143.0209\\35\\-58.98333\\-144.974\\35\\-60.8231\\-146.2228\\35\\-62.77623\\-146.7833\\35\\-64.72935\\-148.6716\\35\\-68.6356\\-152.5465\\35\\-72.54185\\-154.7649\\35\\-74.49497\\-156.4937\\35\\-76.4481\\-158.3234\\35\\-78.40122\\-160.3006\\35\\-80.5116\\-162.5521\\35\\-81.39562\\-164.5053\\35\\-82.55767\\-166.4584\\35\\-83.48478\\-168.4115\\35\\-83.6833\\-170.3646\\35\\-84.82915\\-172.3178\\35\\-85.4612\\-174.2709\\35\\-85.70004\\-176.224\\35\\-86.80098\\-178.1771\\35\\-87.43443\\-180.1303\\35\\-88.53494\\-182.0834\\35\\-89.38604\\-184.0365\\35\\-90.50387\\-185.9896\\35\\-91.25164\\-187.9428\\35\\-91.35812\\-191.849\\35\\-91.62099\\-193.8021\\35\\-91.99233\\-195.7553\\35\\-92.00652\\-197.7084\\35\\-92.67088\\-199.6615\\35\\-93.19476\\-201.6146\\35\\-93.28799\\-205.5209\\35\\-93.6545\\-207.474\\35\\-94.96928\\-209.4271\\35\\-96.55918\\-211.3803\\35\\-97.93247\\-212.4574\\35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "464"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-16.06156\\-125.4428\\35\\-16.57899\\-123.4896\\35\\-17.63136\\-121.5365\\35\\-18.9524\\-119.5834\\35\\-19.55933\\-117.6303\\35\\-17.85435\\-115.4227\\35\\-15.90123\\-114.7987\\35\\-14.57286\\-113.724\\35\\-12.68019\\-111.7709\\35\\-11.99498\\-110.683\\35\\-11.17983\\-109.8178\\35\\-10.04185\\-108.9518\\35\\-8.298872\\-109.8178\\35\\-7.571723\\-111.7709\\35\\-8.088726\\-112.3013\\35\\-9.037227\\-113.724\\35\\-9.904408\\-115.6771\\35\\-10.39867\\-117.6303\\35\\-11.21479\\-119.5834\\35\\-13.23312\\-121.5365\\35\\-13.9481\\-122.4534\\35\\-15.11829\\-123.4896\\35\\-15.79988\\-125.4428\\35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "141"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "465"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.276226\\-215.4362\\35\\-2.229351\\-214.4122\\35\\-4.182476\\-213.509\\35\\-6.135601\\-213.9227\\35\\-8.088726\\-214.6443\\35\\-10.04185\\-214.9095\\35\\-11.99498\\-214.6515\\35\\-13.9481\\-213.8955\\35\\-15.90123\\-212.8714\\35\\-19.80748\\-212.5097\\35\\-21.7606\\-211.9504\\35\\-23.71373\\-210.7042\\35\\-25.66685\\-210.5626\\35\\-27.61998\\-210.5412\\35\\-29.5731\\-210.0491\\35\\-31.52623\\-208.9742\\35\\-35.43248\\-208.6829\\35\\-39.33873\\-208.5869\\35\\-41.29185\\-208.1799\\35\\-43.24498\\-207.0486\\35\\-45.1981\\-206.6955\\35\\-47.15123\\-206.2297\\35\\-49.10435\\-204.8184\\35\\-51.05748\\-204.5787\\35\\-53.0106\\-204.1009\\35\\-55.57801\\-201.6146\\35\\-56.19069\\-199.6615\\35\\-56.91685\\-198.6428\\35\\-58.86998\\-198.5814\\35\\-60.22038\\-197.7084\\35\\-59.93975\\-195.7553\\35\\-59.2494\\-193.8021\\35\\-55.8561\\-189.8959\\35\\-55.47741\\-187.9428\\35\\-54.82628\\-185.9896\\35\\-53.0106\\-182.3204\\35\\-51.80178\\-180.1303\\35\\-47.15123\\-175.4394\\35\\-45.1981\\-174.647\\35\\-43.24498\\-174.0335\\35\\-41.29185\\-173.6686\\35\\-35.43248\\-173.7137\\35\\-33.47935\\-174.0562\\35\\-31.52623\\-175.0789\\35\\-29.5731\\-175.6528\\35\\-27.61998\\-176.8014\\35\\-25.66685\\-178.6556\\35\\-23.71373\\-179.4399\\35\\-21.7606\\-179.4732\\35\\-19.80748\\-179.2718\\35\\-17.85435\\-180.3847\\35\\-15.90123\\-180.8483\\35\\-10.04185\\-181.5278\\35\\-8.088726\\-182.1648\\35\\-6.135601\\-182.3614\\35\\-4.182476\\-182.9816\\35\\-0.276226\\-183.5808\\35\\0.1908256\\-184.0365\\35\\1.676899\\-185.0768\\35\\3.630024\\-186.752\\35\\5.583149\\-187.4632\\35\\8.580186\\-189.8959\\35\\9.489399\\-190.6998\\35\\11.44252\\-191.5235\\35\\13.39565\\-193.0055\\35\\13.94943\\-193.8021\\35\\14.907\\-195.7553\\35\\17.3019\\-197.9144\\35\\19.25502\\-199.027\\35\\21.20815\\-199.77\\35\\23.16127\\-199.9671\\35\\25.1144\\-200.6158\\35\\27.06752\\-201.7901\\35\\29.02065\\-201.6721\\35\\31.2971\\-199.6615\\35\\33.6487\\-197.7084\\35\\35.52545\\-195.7553\\35\\35.98328\\-193.8021\\35\\36.0116\\-191.849\\35\\36.3244\\-189.8959\\35\\37.83625\\-187.9428\\35\\38.78627\\-187.0417\\35\\40.7394\\-185.4123\\35\\42.69252\\-184.8617\\35\\44.64565\\-184.0601\\35\\48.5519\\-184.2807\\35\\50.50502\\-184.9575\\35\\54.41127\\-185.7421\\35\\56.3644\\-186.7913\\35\\58.31752\\-187.3072\\35\\60.27065\\-189.0363\\35\\61.1302\\-189.8959\\35\\61.99998\\-191.849\\35\\63.24991\\-193.8021\\35\\64.96164\\-195.7553\\35\\66.55727\\-197.7084\\35\\68.08315\\-198.8771\\35\\70.03628\\-200.1997\\35\\71.9894\\-201.3509\\35\\72.24749\\-201.6146\\35\\72.9227\\-203.5678\\35\\71.9894\\-204.3125\\35\\70.03628\\-204.0731\\35\\68.08315\\-203.545\\35\\66.13003\\-205.096\\35\\65.7732\\-205.5209\\35\\65.45394\\-207.474\\35\\64.37665\\-209.4271\\35\\62.22377\\-211.6079\\35\\60.27065\\-212.7698\\35\\58.31752\\-213.198\\35\\56.3644\\-214.2066\\35\\54.41127\\-214.9825\\35\\50.50502\\-215.0047\\35\\48.5519\\-214.715\\35\\46.59877\\-214.0041\\35\\44.64565\\-212.908\\35\\42.69252\\-212.3387\\35\\40.7394\\-210.4764\\35\\37.76939\\-207.474\\35\\36.82552\\-205.5209\\35\\36.72464\\-203.5678\\35\\34.88002\\-201.6954\\35\\32.9269\\-202.3638\\35\\30.97377\\-203.9151\\35\\29.02065\\-204.6736\\35\\27.06752\\-206.0179\\35\\25.1144\\-205.8871\\35\\23.16127\\-204.4467\\35\\21.20815\\-203.6898\\35\\19.25502\\-204.1479\\35\\17.95837\\-205.5209\\35\\17.3019\\-206.5951\\35\\16.58041\\-207.474\\35\\15.96406\\-209.4271\\35\\14.64925\\-211.3803\\35\\10.74195\\-215.2865\\35\\9.489399\\-216.3154\\35\\7.536274\\-216.9026\\35\\3.630024\\-216.9026\\35\\1.676899\\-216.3486\\35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "151"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "466"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "1.676899\\-162.5897\\35\\-0.276226\\-162.3905\\35\\-2.229351\\-161.8619\\35\\-6.135601\\-161.9418\\35\\-10.04185\\-160.903\\35\\-11.99498\\-160.786\\35\\-13.9481\\-160.2071\\35\\-15.90123\\-159.2635\\35\\-17.85435\\-157.9254\\35\\-18.96506\\-156.6928\\35\\-20.472\\-154.7396\\35\\-22.4095\\-152.7865\\35\\-24.66122\\-150.8334\\35\\-27.61998\\-147.6057\\35\\-29.5731\\-146.3699\\35\\-31.52623\\-146.2007\\35\\-33.47935\\-145.7739\\35\\-35.43248\\-144.3247\\35\\-37.3856\\-143.9658\\35\\-43.24498\\-143.9658\\35\\-45.1981\\-144.3506\\35\\-47.15123\\-145.5427\\35\\-49.10435\\-146.258\\35\\-51.05748\\-147.4452\\35\\-53.0106\\-148.248\\35\\-54.85038\\-146.9271\\35\\-54.86607\\-144.974\\35\\-52.01866\\-143.0209\\35\\-51.17192\\-141.0678\\35\\-50.61358\\-139.1146\\35\\-50.42762\\-137.1615\\35\\-51.21284\\-133.2553\\35\\-51.88623\\-131.3021\\35\\-52.09352\\-129.349\\35\\-51.05748\\-128.0654\\35\\-50.3284\\-127.3959\\35\\-48.95872\\-125.4428\\35\\-48.53215\\-123.4896\\35\\-46.26694\\-121.5365\\35\\-45.1981\\-120.8221\\35\\-43.24498\\-118.8993\\35\\-41.29185\\-117.9493\\35\\-39.33873\\-117.1969\\35\\-35.43248\\-117.296\\35\\-33.47935\\-118.7076\\35\\-32.72352\\-119.5834\\35\\-32.26904\\-121.5365\\35\\-29.5731\\-124.6654\\35\\-26.37505\\-127.3959\\35\\-25.38263\\-129.349\\35\\-24.1959\\-131.3021\\35\\-23.42007\\-133.2553\\35\\-23.85117\\-135.2084\\35\\-24.77628\\-137.1615\\35\\-26.82767\\-139.1146\\35\\-27.61998\\-139.9658\\35\\-29.00206\\-141.0678\\35\\-28.71946\\-143.0209\\35\\-25.66685\\-145.4801\\35\\-23.71373\\-146.5003\\35\\-21.7606\\-148.2313\\35\\-19.80748\\-149.38\\35\\-17.85435\\-149.6112\\35\\-15.90123\\-149.5983\\35\\-13.9481\\-150.0993\\35\\-11.99498\\-150.0638\\35\\-10.04185\\-148.547\\35\\-8.088726\\-147.6743\\35\\-6.796815\\-146.9271\\35\\-6.135601\\-146.1337\\35\\-5.605467\\-144.974\\35\\-5.826835\\-143.0209\\35\\-4.182476\\-141.85\\35\\-2.229351\\-141.3933\\35\\-1.921308\\-141.0678\\35\\-1.125197\\-139.1146\\35\\-1.095841\\-135.2084\\35\\-1.215228\\-133.2553\\35\\-0.5638437\\-131.3021\\35\\-0.276226\\-130.9956\\35\\1.676899\\-129.9763\\35\\3.630024\\-130.6981\\35\\4.252001\\-131.3021\\35\\5.221694\\-133.2553\\35\\6.479583\\-135.2084\\35\\7.536274\\-137.0816\\35\\7.536274\\-137.4646\\35\\6.831269\\-141.0678\\35\\7.536274\\-142.2885\\35\\8.224113\\-143.0209\\35\\9.489399\\-143.9081\\35\\11.44252\\-145.0406\\35\\13.39565\\-145.1484\\35\\15.34877\\-145.9445\\35\\17.3019\\-147.5569\\35\\18.94179\\-146.9271\\35\\19.25502\\-146.3547\\35\\19.52556\\-144.974\\35\\17.3019\\-142.8988\\35\\15.61931\\-141.0678\\35\\12.34933\\-137.1615\\35\\13.45078\\-135.2084\\35\\14.73993\\-131.3021\\35\\15.87073\\-129.349\\35\\16.20606\\-125.4428\\35\\17.3019\\-124.5045\\35\\19.25502\\-123.3233\\35\\21.20815\\-122.5933\\35\\23.16127\\-122.6766\\35\\27.06752\\-122.2191\\35\\30.97377\\-122.206\\35\\32.9269\\-120.87\\35\\34.88002\\-120.8872\\35\\36.83315\\-122.1312\\35\\38.78627\\-122.312\\35\\40.65726\\-123.4896\\35\\42.69252\\-124.9631\\35\\44.64565\\-126.6649\\35\\45.34856\\-127.3959\\35\\46.06055\\-129.349\\35\\45.74853\\-131.3021\\35\\44.38656\\-133.2553\\35\\45.4052\\-135.2084\\35\\46.16409\\-137.1615\\35\\45.75094\\-139.1146\\35\\45.77328\\-141.0678\\35\\47.94632\\-143.0209\\35\\48.20538\\-144.974\\35\\46.59877\\-147.0626\\35\\44.64565\\-147.5335\\35\\42.69252\\-147.587\\35\\40.7394\\-146.3865\\35\\36.83315\\-145.2097\\35\\34.88002\\-144.9967\\35\\30.97377\\-145.267\\35\\29.02065\\-145.8605\\35\\27.06752\\-146.3057\\35\\25.1144\\-146.4135\\35\\23.16127\\-146.7785\\35\\21.20815\\-147.6817\\35\\19.51484\\-148.8803\\35\\17.3019\\-151.1037\\35\\15.34877\\-152.2423\\35\\13.39565\\-153.1527\\35\\11.44252\\-154.9995\\35\\9.823486\\-156.6928\\35\\8.745027\\-158.6459\\35\\7.893553\\-160.599\\35\\7.536274\\-160.9245\\35\\5.583149\\-162.0064\\35\\3.630024\\-162.5897\\35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "467"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "7.536274\\-122.465\\35\\5.583149\\-120.6591\\35\\4.592896\\-119.5834\\35\\3.622395\\-117.6303\\35\\3.2308\\-115.6771\\35\\3.630024\\-114.2345\\35\\7.536274\\-114.7577\\35\\9.489399\\-115.3782\\35\\11.44252\\-116.2776\\35\\13.057\\-117.6303\\35\\12.37818\\-119.5834\\35\\9.489399\\-122.2797\\35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "66"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "468"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "71.9894\\-155.5356\\35\\68.08315\\-153.3092\\35\\66.13003\\-152.3175\\35\\64.1769\\-151.6379\\35\\62.42873\\-150.8334\\35\\60.27065\\-149.6392\\35\\58.56826\\-148.8803\\35\\56.3644\\-147.7331\\35\\54.41127\\-147.6867\\35\\52.45815\\-147.4476\\35\\51.77913\\-146.9271\\35\\50.50502\\-145.4171\\35\\49.5848\\-144.974\\35\\49.7837\\-143.0209\\35\\50.13568\\-141.0678\\35\\49.29897\\-139.1146\\35\\48.5519\\-137.7312\\35\\47.64714\\-137.1615\\35\\48.5519\\-136.7221\\35\\49.63309\\-135.2084\\35\\50.20106\\-133.2553\\35\\50.20106\\-131.3021\\35\\50.36959\\-129.349\\35\\50.30558\\-127.3959\\35\\50.1083\\-125.4428\\35\\49.05946\\-123.4896\\35\\48.5519\\-123.0134\\35\\46.59877\\-121.6342\\35\\44.63802\\-119.5834\\35\\44.03136\\-117.6303\\35\\43.85619\\-115.6771\\35\\43.24008\\-113.724\\35\\42.367\\-111.7709\\35\\42.69252\\-111.425\\35\\44.64565\\-108.6762\\35\\45.30563\\-107.8646\\35\\46.59877\\-105.8301\\35\\48.5519\\-104.7539\\35\\50.50502\\-104.0531\\35\\52.45815\\-103.0711\\35\\54.41127\\-103.5195\\35\\58.91641\\-107.8646\\35\\59.92413\\-109.8178\\35\\58.98731\\-113.724\\35\\60.09653\\-115.6771\\35\\62.22377\\-116.8057\\35\\63.04832\\-117.6303\\35\\63.67159\\-119.5834\\35\\64.97066\\-121.5365\\35\\65.5759\\-123.4896\\35\\66.85982\\-125.4428\\35\\67.54493\\-127.3959\\35\\68.90154\\-129.349\\35\\71.37978\\-131.3021\\35\\72.34622\\-133.2553\\35\\72.68158\\-135.2084\\35\\74.56992\\-137.1615\\35\\75.89565\\-139.38\\35\\76.66815\\-141.0678\\35\\77.38403\\-143.0209\\35\\76.62257\\-146.9271\\35\\77.2179\\-148.8803\\35\\77.07389\\-150.8334\\35\\75.89565\\-151.6363\\35\\74.6124\\-152.7865\\35\\73.69839\\-154.7396\\35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "469"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "91.52065\\-193.2114\\35\\90.84364\\-191.849\\35\\90.7975\\-189.8959\\35\\90.58906\\-187.9428\\35\\87.6144\\-181.6506\\35\\84.92509\\-176.224\\35\\84.77486\\-174.2709\\35\\83.83887\\-172.3178\\35\\82.80201\\-170.3646\\35\\81.9239\\-168.4115\\35\\80.91002\\-166.4584\\35\\80.08796\\-164.5053\\35\\78.94665\\-162.5521\\35\\79.8019\\-161.6522\\35\\81.75503\\-161.8279\\35\\82.26329\\-162.5521\\35\\82.65198\\-164.5053\\35\\83.70815\\-165.507\\35\\85.66128\\-165.8159\\35\\87.6144\\-163.9444\\35\\89.56753\\-163.6143\\35\\91.52065\\-163.5874\\35\\93.47378\\-164.2985\\35\\95.58226\\-166.4584\\35\\96.69163\\-168.4115\\35\\98.02905\\-170.3646\\35\\98.74044\\-172.3178\\35\\99.96055\\-174.2709\\35\\100.5354\\-176.224\\35\\100.9092\\-178.1771\\35\\100.9092\\-182.0834\\35\\100.5439\\-184.0365\\35\\99.33315\\-185.2597\\35\\97.38003\\-185.7779\\35\\95.4269\\-187.0185\\35\\94.49152\\-187.9428\\35\\93.90005\\-189.8959\\35\\93.9211\\-191.849\\35\\93.47378\\-193.2357\\35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "470"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "99.33315\\-208.2202\\35\\97.38003\\-206.9798\\35\\95.4269\\-206.3255\\35\\94.66085\\-205.5209\\35\\94.54931\\-203.5678\\35\\93.99693\\-201.6146\\35\\92.97672\\-199.6615\\35\\92.73984\\-197.7084\\35\\93.47378\\-195.468\\35\\95.4269\\-194.999\\35\\99.33315\\-195.1062\\35\\101.2863\\-196.6301\\35\\102.0665\\-197.7084\\35\\102.3276\\-199.6615\\35\\102.3742\\-201.6146\\35\\102.2223\\-205.5209\\35\\101.2863\\-207.56\\35"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "115"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "471"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-101.8387\\-212.5492\\37\\-102.8813\\-211.3803\\37\\-103.0462\\-209.4271\\37\\-103.0986\\-207.474\\37\\-103.9139\\-205.5209\\37\\-104.005\\-203.5678\\37\\-102.5001\\-201.6146\\37\\-103.8001\\-199.6615\\37\\-104.9026\\-197.7084\\37\\-105.4302\\-191.849\\37\\-105.4975\\-185.9896\\37\\-105.441\\-182.0834\\37\\-104.9423\\-178.1771\\37\\-103.9546\\-176.224\\37\\-101.1051\\-172.3178\\37\\-100.2156\\-170.3646\\37\\-97.93247\\-167.56\\37\\-97.20776\\-166.4584\\37\\-96.21288\\-164.5053\\37\\-94.64996\\-162.5521\\37\\-92.0731\\-159.831\\37\\-90.11997\\-159.1427\\37\\-88.16685\\-157.6806\\37\\-86.21372\\-155.6071\\37\\-85.26846\\-154.7396\\37\\-83.5024\\-152.7865\\37\\-84.6557\\-150.8334\\37\\-85.18607\\-148.8803\\37\\-84.4753\\-146.9271\\37\\-83.66171\\-144.974\\37\\-83.20998\\-143.0209\\37\\-81.97139\\-141.0678\\37\\-81.25348\\-139.1146\\37\\-79.95762\\-137.1615\\37\\-79.19109\\-135.2084\\37\\-78.1194\\-133.2553\\37\\-76.4481\\-129.4064\\37\\-75.20842\\-127.3959\\37\\-74.49497\\-125.7759\\37\\-73.24798\\-123.4896\\37\\-72.41978\\-121.5365\\37\\-72.17803\\-119.5834\\37\\-71.16157\\-117.6303\\37\\-70.40173\\-115.6771\\37\\-68.21885\\-111.7709\\37\\-68.08182\\-109.8178\\37\\-66.29554\\-105.9115\\37\\-66.53387\\-103.9584\\37\\-66.3895\\-102.0053\\37\\-65.94879\\-100.0521\\37\\-64.35825\\-98.09901\\37\\-62.77623\\-97.13826\\37\\-60.8231\\-97.07842\\37\\-58.86998\\-95.40858\\37\\-56.91685\\-94.04307\\37\\-54.96373\\-93.12862\\37\\-53.0106\\-92.94138\\37\\-51.05748\\-91.54287\\37\\-49.10435\\-91.00684\\37\\-45.1981\\-91.07436\\37\\-43.3568\\-92.23963\\37\\-42.41513\\-94.19276\\37\\-40.50967\\-96.14588\\37\\-39.54102\\-98.09901\\37\\-38.9922\\-100.0521\\37\\-39.02391\\-103.9584\\37\\-40.09556\\-105.9115\\37\\-41.29185\\-107.3025\\37\\-43.24498\\-109.3054\\37\\-45.1981\\-111.1293\\37\\-47.82333\\-113.724\\37\\-49.10435\\-114.8408\\37\\-51.05748\\-116.3057\\37\\-53.0106\\-116.9224\\37\\-55.65336\\-119.5834\\37\\-57.48698\\-121.5365\\37\\-58.86998\\-123.6064\\37\\-59.69814\\-125.4428\\37\\-58.40241\\-129.349\\37\\-58.00449\\-131.3021\\37\\-57.75587\\-133.2553\\37\\-56.91685\\-135.0976\\37\\-58.14641\\-139.1146\\37\\-59.37305\\-141.0678\\37\\-60.14262\\-143.0209\\37\\-60.8231\\-144.3965\\37\\-61.54892\\-144.974\\37\\-62.77623\\-145.5244\\37\\-64.72935\\-146.6727\\37\\-68.6356\\-150.4707\\37\\-69.16457\\-150.8334\\37\\-72.54185\\-152.4736\\37\\-74.49497\\-153.5869\\37\\-76.4481\\-154.8617\\37\\-78.40122\\-156.7863\\37\\-80.35435\\-160.1561\\37\\-82.50111\\-162.5521\\37\\-84.54783\\-166.4584\\37\\-85.48277\\-168.4115\\37\\-85.56085\\-170.3646\\37\\-87.44825\\-174.2709\\37\\-87.53738\\-176.224\\37\\-91.35779\\-184.0365\\37\\-91.71165\\-185.9896\\37\\-92.793\\-187.9428\\37\\-93.29534\\-189.8959\\37\\-93.38517\\-197.7084\\37\\-93.62447\\-199.6615\\37\\-94.72108\\-201.6146\\37\\-95.25442\\-203.5678\\37\\-95.28016\\-207.474\\37\\-95.6283\\-209.4271\\37\\-96.81016\\-211.3803\\37\\-97.93247\\-212.4915\\37\\-99.8856\\-212.8625\\37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "472"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-15.90123\\-124.4128\\37\\-16.75449\\-123.4896\\37\\-17.46741\\-121.5365\\37\\-18.37102\\-119.5834\\37\\-17.49184\\-117.6303\\37\\-15.90123\\-116.4507\\37\\-13.12664\\-113.724\\37\\-12.372\\-111.7709\\37\\-11.97227\\-109.8178\\37\\-10.2416\\-107.8646\\37\\-7.903179\\-105.9115\\37\\-6.135601\\-104.2749\\37\\-4.182476\\-104.6441\\37\\-2.915023\\-105.9115\\37\\-2.229351\\-106.8067\\37\\-0.276226\\-108.7598\\37\\0.4854928\\-109.8178\\37\\1.676899\\-110.3693\\37\\2.628894\\-111.7709\\37\\4.336596\\-113.724\\37\\5.583149\\-114.8335\\37\\7.021835\\-115.6771\\37\\7.536274\\-116.1136\\37\\9.489399\\-116.8865\\37\\10.67393\\-117.6303\\37\\11.57796\\-119.5834\\37\\10.87567\\-121.5365\\37\\9.634433\\-123.4896\\37\\9.299159\\-123.4896\\37\\7.536274\\-122.7519\\37\\6.41811\\-121.5365\\37\\4.797249\\-119.5834\\37\\3.983385\\-117.6303\\37\\2.532024\\-115.6771\\37\\0.7249041\\-113.724\\37\\-0.276226\\-112.0659\\37\\-2.229351\\-110.1057\\37\\-4.182476\\-110.1229\\37\\-5.196599\\-111.7709\\37\\-6.135601\\-112.5687\\37\\-8.088726\\-114.4564\\37\\-9.159955\\-115.6771\\37\\-10.13659\\-117.6303\\37\\-10.85801\\-119.5834\\37\\-12.73115\\-121.5365\\37\\-13.9481\\-123.0105\\37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "206"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "473"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-10.04185\\-160.5326\\37\\-11.99498\\-160.5333\\37\\-13.9481\\-160.4134\\37\\-15.90123\\-159.5292\\37\\-17.85435\\-158.9277\\37\\-19.80748\\-157.5743\\37\\-20.63532\\-156.6928\\37\\-21.34466\\-154.7396\\37\\-21.7606\\-154.2684\\37\\-23.82509\\-152.7865\\37\\-25.66685\\-150.4617\\37\\-27.61998\\-148.7317\\37\\-29.5731\\-147.7242\\37\\-31.52623\\-146.2137\\37\\-33.47935\\-145.5654\\37\\-35.43248\\-144.1201\\37\\-37.3856\\-143.3777\\37\\-39.33873\\-143.3777\\37\\-41.29185\\-143.5262\\37\\-43.24498\\-143.5262\\37\\-45.1981\\-143.7934\\37\\-47.15123\\-143.8468\\37\\-49.10435\\-144.7077\\37\\-51.05748\\-145.7995\\37\\-53.0106\\-146.5764\\37\\-54.89109\\-144.974\\37\\-53.78741\\-143.0209\\37\\-52.45701\\-141.0678\\37\\-52.25105\\-137.1615\\37\\-52.21548\\-135.2084\\37\\-52.33496\\-133.2553\\37\\-52.74974\\-131.3021\\37\\-52.1363\\-129.349\\37\\-51.05748\\-128.3136\\37\\-49.28449\\-127.3959\\37\\-47.15123\\-125.8851\\37\\-46.27398\\-125.4428\\37\\-45.27948\\-123.4896\\37\\-45.07603\\-121.5365\\37\\-42.98275\\-119.5834\\37\\-41.29185\\-118.7379\\37\\-39.33873\\-118.4247\\37\\-37.3856\\-118.7839\\37\\-35.43248\\-119.2665\\37\\-33.47935\\-120.6355\\37\\-31.52623\\-122.3321\\37\\-29.5731\\-123.1918\\37\\-27.61998\\-124.2949\\37\\-25.66685\\-124.3848\\37\\-23.71373\\-125.065\\37\\-23.17987\\-125.4428\\37\\-23.43052\\-127.3959\\37\\-23.99178\\-129.349\\37\\-22.96943\\-131.3021\\37\\-22.42819\\-133.2553\\37\\-22.32976\\-135.2084\\37\\-22.43042\\-137.1615\\37\\-23.71373\\-138.5813\\37\\-24.42312\\-139.1146\\37\\-25.66685\\-140.3241\\37\\-26.22202\\-141.0678\\37\\-25.72682\\-143.0209\\37\\-23.71373\\-144.5609\\37\\-21.7606\\-146.4304\\37\\-19.80748\\-147.6046\\37\\-13.9481\\-147.7231\\37\\-11.99498\\-147.6612\\37\\-10.68084\\-146.9271\\37\\-8.299575\\-144.974\\37\\-8.7902\\-141.0678\\37\\-8.088726\\-139.5114\\37\\-6.135601\\-140.5879\\37\\-5.600369\\-141.0678\\37\\-4.182476\\-141.887\\37\\-2.229351\\-141.8309\\37\\-1.509514\\-141.0678\\37\\-0.6630462\\-139.1146\\37\\-0.1677191\\-137.1615\\37\\0.7167954\\-135.2084\\37\\1.064478\\-133.2553\\37\\1.676899\\-132.1603\\37\\3.630024\\-132.3622\\37\\5.583149\\-134.426\\37\\7.536274\\-135.9813\\37\\9.489399\\-136.4172\\37\\11.44252\\-135.1375\\37\\12.86569\\-133.2553\\37\\13.94977\\-131.3021\\37\\14.64317\\-129.349\\37\\14.44775\\-127.3959\\37\\14.07173\\-125.4428\\37\\15.20186\\-123.4896\\37\\17.3019\\-122.5403\\37\\21.20815\\-122.2126\\37\\23.16127\\-122.2126\\37\\27.06752\\-122.1062\\37\\29.02065\\-122.1062\\37\\30.97377\\-122.2066\\37\\32.9269\\-121.7676\\37\\34.88002\\-121.8453\\37\\36.83315\\-122.6316\\37\\38.17222\\-123.4896\\37\\38.78627\\-124.041\\37\\40.7394\\-125.2311\\37\\42.69252\\-125.8856\\37\\44.64565\\-126.8032\\37\\45.25965\\-127.3959\\37\\46.25225\\-129.349\\37\\46.25225\\-131.3021\\37\\45.60063\\-133.2553\\37\\45.53836\\-135.2084\\37\\46.16409\\-137.1615\\37\\45.93592\\-139.1146\\37\\47.16748\\-141.0678\\37\\48.5519\\-142.5668\\37\\50.16389\\-141.0678\\37\\48.5519\\-137.4005\\37\\48.08396\\-137.1615\\37\\48.5519\\-136.9804\\37\\49.69038\\-135.2084\\37\\50.19698\\-133.2553\\37\\50.23681\\-131.3021\\37\\51.24419\\-129.349\\37\\51.127\\-127.3959\\37\\49.9214\\-123.4896\\37\\47.69392\\-121.5365\\37\\46.59877\\-120.4491\\37\\45.94946\\-119.5834\\37\\45.25316\\-117.6303\\37\\44.27866\\-115.6771\\37\\43.4287\\-113.724\\37\\42.70028\\-111.7709\\37\\43.86928\\-109.8178\\37\\45.58966\\-107.8646\\37\\46.35129\\-105.9115\\37\\46.59877\\-105.6588\\37\\48.5519\\-104.6552\\37\\50.50502\\-104.4721\\37\\52.45815\\-104.025\\37\\54.41127\\-104.8115\\37\\56.33623\\-105.9115\\37\\58.31752\\-107.3202\\37\\58.85882\\-107.8646\\37\\59.6626\\-109.8178\\37\\58.95358\\-111.7709\\37\\57.68974\\-113.724\\37\\58.31752\\-114.2733\\37\\60.27065\\-115.2877\\37\\62.22377\\-116.937\\37\\62.91341\\-117.6303\\37\\63.55211\\-119.5834\\37\\64.95912\\-121.5365\\37\\65.5759\\-123.4896\\37\\66.85982\\-125.4428\\37\\67.54493\\-127.3959\\37\\68.81403\\-129.349\\37\\71.0504\\-131.3021\\37\\72.15888\\-133.2553\\37\\72.78889\\-135.2084\\37\\74.63708\\-137.1615\\37\\76.27267\\-139.1146\\37\\76.92937\\-141.0678\\37\\76.85646\\-143.0209\\37\\75.89565\\-144.4281\\37\\75.36636\\-144.974\\37\\74.4581\\-146.9271\\37\\74.46111\\-148.8803\\37\\73.45821\\-150.8334\\37\\71.9894\\-152.6046\\37\\70.03628\\-152.5895\\37\\68.08315\\-151.5387\\37\\66.13003\\-151.2864\\37\\64.1769\\-150.2687\\37\\62.22377\\-148.7649\\37\\58.51284\\-146.9271\\37\\56.3644\\-145.7493\\37\\52.45815\\-145.6963\\37\\50.50502\\-145.1135\\37\\48.5519\\-145.0988\\37\\46.59877\\-146.151\\37\\44.64565\\-146.8729\\37\\42.69252\\-146.2865\\37\\40.7394\\-145.5745\\37\\38.78627\\-145.0262\\37\\36.83315\\-144.3003\\37\\34.88002\\-143.9507\\37\\32.9269\\-144.2287\\37\\31.08792\\-144.974\\37\\27.06752\\-146.9653\\37\\25.1144\\-147.8591\\37\\23.16127\\-148.5032\\37\\21.20815\\-149.8483\\37\\19.25502\\-152.2793\\37\\17.3019\\-153.5819\\37\\15.34877\\-155.0938\\37\\13.39565\\-156.1829\\37\\11.44252\\-157.5172\\37\\10.66895\\-158.6459\\37\\9.626842\\-160.599\\37\\7.536274\\-161.8122\\37\\5.583149\\-162.2418\\37\\1.676899\\-162.2842\\37\\-0.276226\\-161.5396\\37\\-2.229351\\-161.2691\\37\\-4.182476\\-161.6757\\37\\-6.135601\\-161.6747\\37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "146"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "474"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "3.630024\\-215.6832\\37\\1.676899\\-215.23\\37\\-0.276226\\-214.3318\\37\\-2.229351\\-213.309\\37\\-4.182476\\-212.9027\\37\\-6.135601\\-214.0658\\37\\-8.088726\\-214.8372\\37\\-10.04185\\-214.9935\\37\\-11.99498\\-214.828\\37\\-13.9481\\-214.0777\\37\\-15.90123\\-212.9367\\37\\-19.80748\\-212.8804\\37\\-21.7606\\-212.252\\37\\-23.71373\\-210.892\\37\\-27.61998\\-210.842\\37\\-29.5731\\-210.6723\\37\\-31.52623\\-210.0277\\37\\-33.47935\\-208.9652\\37\\-37.3856\\-208.8423\\37\\-39.33873\\-208.8423\\37\\-41.29185\\-208.6888\\37\\-43.24498\\-208.1716\\37\\-45.1981\\-206.9687\\37\\-47.15123\\-206.7067\\37\\-49.10435\\-206.1594\\37\\-51.05748\\-204.9908\\37\\-53.0106\\-204.3831\\37\\-55.71384\\-201.6146\\37\\-56.4835\\-199.6615\\37\\-56.91685\\-199.1322\\37\\-58.86998\\-199.1044\\37\\-60.39944\\-197.7084\\37\\-59.83285\\-195.7553\\37\\-58.86998\\-194.704\\37\\-55.55843\\-191.849\\37\\-55.13811\\-189.8959\\37\\-55.03031\\-187.9428\\37\\-54.10149\\-185.9896\\37\\-53.29243\\-184.0365\\37\\-52.10488\\-182.0834\\37\\-51.05748\\-180.804\\37\\-49.10435\\-178.7954\\37\\-47.15123\\-176.9445\\37\\-45.1981\\-175.702\\37\\-43.24498\\-175.2834\\37\\-41.29185\\-175.1977\\37\\-39.33873\\-175.6613\\37\\-33.47935\\-175.7044\\37\\-31.52623\\-176.7585\\37\\-29.5731\\-177.54\\37\\-27.61998\\-178.701\\37\\-25.66685\\-179.7135\\37\\-23.71373\\-180.9247\\37\\-21.7606\\-181.3944\\37\\-19.80748\\-181.4882\\37\\-17.85435\\-182.5529\\37\\-15.90123\\-183.2188\\37\\-13.9481\\-183.232\\37\\-11.99498\\-182.9055\\37\\-10.04185\\-182.4222\\37\\-8.088726\\-182.9995\\37\\-4.182476\\-183.554\\37\\-2.229351\\-184.8613\\37\\-0.276226\\-185.3136\\37\\1.676899\\-185.5929\\37\\4.644389\\-187.9428\\37\\6.820574\\-189.8959\\37\\9.489399\\-192.3907\\37\\11.24342\\-193.8021\\37\\12.8497\\-195.7553\\37\\14.13366\\-197.7084\\37\\15.34877\\-198.7095\\37\\17.3019\\-199.0518\\37\\18.99961\\-199.6615\\37\\21.20815\\-200.5754\\37\\25.1144\\-202.8908\\37\\27.06752\\-203.2708\\37\\29.02065\\-203.1609\\37\\30.67278\\-201.6146\\37\\31.99971\\-199.6615\\37\\32.9269\\-198.7343\\37\\34.88002\\-197.2863\\37\\36.23605\\-195.7553\\37\\36.82552\\-193.8021\\37\\36.97371\\-191.849\\37\\37.6661\\-189.8959\\37\\39.37498\\-187.9428\\37\\40.7394\\-186.8559\\37\\42.69252\\-185.4434\\37\\44.64565\\-185.2056\\37\\48.5519\\-185.1297\\37\\50.50502\\-185.2449\\37\\54.41127\\-185.6431\\37\\56.3644\\-186.4837\\37\\58.31752\\-187.1105\\37\\60.27065\\-188.8797\\37\\63.10428\\-191.849\\37\\64.1769\\-193.336\\37\\66.5649\\-195.7553\\37\\67.65778\\-197.7084\\37\\68.08315\\-198.2072\\37\\70.14263\\-199.6615\\37\\71.9894\\-200.6381\\37\\73.00311\\-201.6146\\37\\73.7888\\-203.5678\\37\\71.9894\\-204.4716\\37\\70.03628\\-203.7434\\37\\68.08315\\-204.5881\\37\\67.34453\\-205.5209\\37\\66.77161\\-207.474\\37\\65.49448\\-209.4271\\37\\64.33712\\-211.3803\\37\\62.22377\\-212.8033\\37\\60.27065\\-213.9357\\37\\58.31752\\-214.4459\\37\\54.41127\\-214.9935\\37\\50.50502\\-215.0047\\37\\48.5519\\-214.961\\37\\46.59877\\-214.2557\\37\\44.64565\\-212.9367\\37\\42.69252\\-212.3748\\37\\41.5067\\-211.3803\\37\\39.44912\\-209.4271\\37\\37.76088\\-207.474\\37\\36.82552\\-205.5209\\37\\36.82552\\-203.5678\\37\\34.90642\\-201.6146\\37\\32.9269\\-202.5189\\37\\31.94355\\-203.5678\\37\\30.97377\\-204.3612\\37\\29.02065\\-204.1901\\37\\27.06752\\-204.9854\\37\\26.83695\\-205.5209\\37\\25.1144\\-206.1877\\37\\23.62014\\-205.5209\\37\\23.16127\\-205.1362\\37\\21.20815\\-204.2407\\37\\19.25502\\-203.7164\\37\\17.3019\\-203.967\\37\\15.34877\\-205.0471\\37\\14.88866\\-205.5209\\37\\14.04437\\-207.474\\37\\13.9224\\-209.4271\\37\\12.55085\\-211.3803\\37\\9.489399\\-214.4176\\37\\7.536274\\-215.6635\\37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "475"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "91.52065\\-186.6905\\37\\90.3086\\-184.0365\\37\\89.16113\\-182.0834\\37\\88.8232\\-180.1303\\37\\87.6144\\-177.8777\\37\\86.88911\\-176.224\\37\\86.21443\\-174.2709\\37\\85.10403\\-172.3178\\37\\84.3086\\-170.3646\\37\\83.10926\\-168.4115\\37\\83.26536\\-166.4584\\37\\83.70815\\-166.0072\\37\\85.66128\\-165.9875\\37\\87.6144\\-167.0735\\37\\89.56753\\-165.49\\37\\90.39384\\-164.5053\\37\\91.52065\\-163.6832\\37\\93.47378\\-163.4403\\37\\95.4269\\-164.3795\\37\\97.38003\\-167.5006\\37\\99.55252\\-170.3646\\37\\100.4243\\-172.3178\\37\\100.7161\\-174.2709\\37\\101.9391\\-176.224\\37\\102.2878\\-178.1771\\37\\102.2878\\-182.0834\\37\\101.9564\\-184.0365\\37\\101.2863\\-184.7442\\37\\99.33315\\-185.6535\\37\\97.38003\\-185.8026\\37\\93.47378\\-187.7855\\37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "476"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "99.33315\\-208.446\\37\\98.29829\\-207.474\\37\\96.68248\\-205.5209\\37\\96.69707\\-203.5678\\37\\95.96213\\-201.6146\\37\\95.4269\\-200.8521\\37\\94.84747\\-199.6615\\37\\95.57207\\-197.7084\\37\\97.38003\\-196.7318\\37\\99.33315\\-197.2544\\37\\99.68286\\-197.7084\\37\\99.95629\\-199.6615\\37\\101.2863\\-202.3614\\37\\101.6757\\-203.5678\\37\\102.1098\\-205.5209\\37\\102.4043\\-207.474\\37\\101.2863\\-208.7959\\37"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "130"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "477"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-101.8387\\-212.0023\\39\\-102.373\\-211.3803\\39\\-102.6809\\-209.4271\\39\\-102.6516\\-207.474\\39\\-101.8387\\-206.0882\\39\\-101.1033\\-205.5209\\39\\-100.2775\\-201.6146\\39\\-98.65237\\-199.6615\\39\\-98.78968\\-197.7084\\39\\-99.8856\\-197.0637\\39\\-101.8387\\-197.3134\\39\\-103.7918\\-197.2888\\39\\-105.745\\-194.3969\\39\\-106.2363\\-193.8021\\39\\-106.8483\\-191.849\\39\\-107.0668\\-187.9428\\39\\-107.0742\\-184.0365\\39\\-106.8316\\-180.1303\\39\\-106.3538\\-178.1771\\39\\-105.2741\\-176.224\\39\\-104.0192\\-174.2709\\39\\-102.5129\\-172.3178\\39\\-101.8387\\-171.3033\\39\\-100.1379\\-168.4115\\39\\-97.93247\\-165.5756\\39\\-97.22083\\-164.5053\\39\\-95.97935\\-162.2999\\39\\-94.02622\\-161.0484\\39\\-92.0731\\-159.6891\\39\\-90.11997\\-159.1512\\39\\-88.16685\\-157.9562\\39\\-84.2606\\-155.8272\\39\\-83.14777\\-154.7396\\39\\-82.06065\\-152.7865\\39\\-82.37668\\-150.8334\\39\\-82.3334\\-148.8803\\39\\-82.59944\\-146.9271\\39\\-83.46973\\-144.974\\39\\-83.484\\-143.0209\\39\\-82.90215\\-141.0678\\39\\-81.30949\\-139.1146\\39\\-80.17996\\-137.1615\\39\\-78.40122\\-133.625\\39\\-78.14214\\-133.2553\\39\\-77.65647\\-131.3021\\39\\-77.27909\\-129.349\\39\\-75.32622\\-127.3959\\39\\-73.24798\\-123.4896\\39\\-72.36746\\-121.5365\\39\\-70.73734\\-117.6303\\39\\-70.2044\\-115.6771\\39\\-69.12691\\-113.724\\39\\-67.60387\\-111.7709\\39\\-67.12131\\-109.8178\\39\\-66.50809\\-107.8646\\39\\-66.34639\\-105.9115\\39\\-67.35615\\-103.9584\\39\\-66.9643\\-102.0053\\39\\-66.16879\\-100.0521\\39\\-65.10878\\-98.09901\\39\\-64.72935\\-97.72198\\39\\-62.77623\\-97.12642\\39\\-60.8231\\-97.04828\\39\\-59.67943\\-96.14588\\39\\-56.91685\\-93.59055\\39\\-54.96373\\-93.05045\\39\\-53.16008\\-92.23963\\39\\-51.05748\\-91.06678\\39\\-49.10435\\-90.89356\\39\\-47.15123\\-91.00684\\39\\-45.1981\\-91.30081\\39\\-44.24078\\-92.23963\\39\\-42.51995\\-94.19276\\39\\-41.09241\\-96.14588\\39\\-40.3322\\-98.09901\\39\\-39.30117\\-100.0521\\39\\-39.16434\\-102.0053\\39\\-39.17714\\-103.9584\\39\\-40.09556\\-105.9115\\39\\-41.29185\\-107.6579\\39\\-43.24498\\-109.9532\\39\\-45.1981\\-111.1217\\39\\-47.15123\\-112.9269\\39\\-49.10435\\-114.4443\\39\\-51.05748\\-115.3649\\39\\-53.0106\\-116.8076\\39\\-54.96373\\-118.6777\\39\\-58.12717\\-121.5365\\39\\-59.68614\\-123.4896\\39\\-60.06567\\-125.4428\\39\\-59.96639\\-127.3959\\39\\-59.7262\\-129.349\\39\\-58.50299\\-131.3021\\39\\-57.90258\\-133.2553\\39\\-56.80151\\-135.2084\\39\\-57.81203\\-137.1615\\39\\-59.37975\\-139.1146\\39\\-59.13737\\-141.0678\\39\\-60.8231\\-141.8015\\39\\-62.64753\\-143.0209\\39\\-64.72935\\-144.7299\\39\\-66.68247\\-146.5935\\39\\-68.6356\\-147.7184\\39\\-70.58872\\-148.9965\\39\\-74.49497\\-150.2853\\39\\-76.78733\\-152.7865\\39\\-80.87006\\-156.6928\\39\\-82.30747\\-158.6564\\39\\-83.52818\\-160.599\\39\\-84.2606\\-162.17\\39\\-85.55311\\-164.5053\\39\\-87.46931\\-168.4115\\39\\-87.52561\\-170.3646\\39\\-89.43324\\-174.2709\\39\\-89.99128\\-176.224\\39\\-91.15513\\-178.1771\\39\\-91.40755\\-180.1303\\39\\-92.0731\\-181.602\\39\\-93.32688\\-184.0365\\39\\-93.37315\\-185.9896\\39\\-94.54858\\-187.9428\\39\\-95.28892\\-189.8959\\39\\-95.34746\\-195.7553\\39\\-95.97115\\-197.7084\\39\\-95.72987\\-199.6615\\39\\-97.15891\\-203.5678\\39\\-97.17591\\-209.4271\\39\\-97.43839\\-211.3803\\39\\-97.93247\\-211.9488\\39\\-99.8856\\-212.6519\\39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "478"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-15.90123\\-124.7675\\39\\-17.03069\\-123.4896\\39\\-17.3407\\-121.5365\\39\\-16.14871\\-117.6303\\39\\-15.90123\\-117.3722\\39\\-13.49675\\-115.6771\\39\\-12.10348\\-113.724\\39\\-11.72098\\-111.7709\\39\\-11.64669\\-109.8178\\39\\-10.58372\\-107.8646\\39\\-8.741628\\-105.9115\\39\\-6.135601\\-101.9824\\39\\-4.182476\\-102.2246\\39\\-2.229351\\-103.555\\39\\-2.085516\\-103.9584\\39\\-0.276226\\-106.091\\39\\0.883442\\-107.8646\\39\\2.364693\\-109.8178\\39\\3.214081\\-111.7709\\39\\3.855385\\-113.724\\39\\4.798697\\-115.6771\\39\\5.583149\\-116.5316\\39\\7.083721\\-117.6303\\39\\9.489399\\-120.2383\\39\\10.19228\\-121.5365\\39\\10.89139\\-123.4896\\39\\9.489399\\-124.3691\\39\\7.536274\\-122.8218\\39\\6.548677\\-121.5365\\39\\5.583149\\-120.5975\\39\\2.897602\\-117.6303\\39\\-0.276226\\-114.5103\\39\\-2.229351\\-113.2878\\39\\-4.182476\\-113.2519\\39\\-6.135601\\-114.0751\\39\\-8.088726\\-115.0168\\39\\-8.756605\\-115.6771\\39\\-10.13659\\-117.6303\\39\\-10.83172\\-119.5834\\39\\-12.42967\\-121.5365\\39\\-13.20327\\-123.4896\\39\\-13.9481\\-124.2387\\39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "85"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "479"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-13.9481\\-213.4419\\39\\-15.90123\\-212.9367\\39\\-19.80748\\-212.927\\39\\-21.7606\\-212.2813\\39\\-23.71373\\-210.9364\\39\\-29.5731\\-210.6686\\39\\-31.52623\\-210.1487\\39\\-33.47935\\-208.9652\\39\\-39.33873\\-208.9563\\39\\-41.29185\\-208.897\\39\\-43.24498\\-208.368\\39\\-45.1981\\-207.0486\\39\\-47.15123\\-206.9687\\39\\-49.10435\\-206.3884\\39\\-51.05748\\-205.1339\\39\\-53.0106\\-204.4015\\39\\-53.83657\\-203.5678\\39\\-55.39841\\-201.6146\\39\\-55.92579\\-199.6615\\39\\-56.91685\\-198.6023\\39\\-58.97612\\-199.6615\\39\\-60.22068\\-197.7084\\39\\-59.72686\\-195.7553\\39\\-58.86998\\-194.8679\\39\\-57.1203\\-193.8021\\39\\-55.03031\\-191.849\\39\\-54.92617\\-187.9428\\39\\-53.90959\\-185.9896\\39\\-52.18694\\-184.0365\\39\\-51.2932\\-182.0834\\39\\-49.82712\\-180.1303\\39\\-49.10435\\-179.3865\\39\\-47.15123\\-178.081\\39\\-45.1981\\-177.5638\\39\\-43.24498\\-177.397\\39\\-35.43248\\-177.4406\\39\\-33.47935\\-177.5557\\39\\-31.52623\\-178.0002\\39\\-29.5731\\-179.0193\\39\\-27.61998\\-179.7434\\39\\-25.66685\\-180.9779\\39\\-23.71373\\-181.6069\\39\\-21.7606\\-182.9937\\39\\-19.80748\\-183.4991\\39\\-17.85435\\-183.4872\\39\\-15.90123\\-183.789\\39\\-13.9481\\-183.7774\\39\\-11.99498\\-183.4189\\39\\-10.04185\\-183.4049\\39\\-8.088726\\-183.7416\\39\\-6.135601\\-184.2463\\39\\-4.182476\\-184.9398\\39\\-2.229351\\-185.5277\\39\\-0.276226\\-186.8095\\39\\1.676899\\-187.3072\\39\\2.721396\\-187.9428\\39\\4.949112\\-189.8959\\39\\8.850878\\-193.8021\\39\\10.7101\\-195.7553\\39\\11.99967\\-197.7084\\39\\13.39565\\-199.0124\\39\\15.34877\\-199.4999\\39\\17.3019\\-199.8456\\39\\19.25502\\-200.6975\\39\\20.50036\\-201.6146\\39\\20.62831\\-203.5678\\39\\19.25502\\-203.8627\\39\\17.3019\\-202.6623\\39\\15.34877\\-202.5208\\39\\13.1721\\-203.5678\\39\\12.00979\\-205.5209\\39\\11.91203\\-207.474\\39\\11.44252\\-208.8057\\39\\11.01528\\-209.4271\\39\\9.168161\\-211.3803\\39\\7.536274\\-212.9114\\39\\6.838729\\-213.3334\\39\\5.583149\\-213.7408\\39\\1.676899\\-213.7572\\39\\-0.276226\\-212.6305\\39\\-2.229351\\-212.0405\\39\\-4.182476\\-212.4831\\39\\-8.088726\\-214.3522\\39\\-10.04185\\-214.7208\\39\\-11.99498\\-214.3204\\39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "196"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "480"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-6.135601\\-160.6077\\39\\-7.170757\\-158.6459\\39\\-8.088726\\-157.9994\\39\\-10.04185\\-157.7323\\39\\-11.99498\\-157.8538\\39\\-14.04261\\-158.6459\\39\\-15.90123\\-159.0129\\39\\-17.70176\\-158.6459\\39\\-19.80748\\-158.0462\\39\\-21.7606\\-155.7449\\39\\-23.71373\\-154.1208\\39\\-25.02511\\-152.7865\\39\\-26.47449\\-150.8334\\39\\-27.61998\\-149.7062\\39\\-29.5731\\-147.9753\\39\\-31.52623\\-146.0821\\39\\-35.43248\\-144.0258\\39\\-37.3856\\-142.3413\\39\\-39.33873\\-142.3212\\39\\-41.29185\\-142.9389\\39\\-45.1981\\-143.0584\\39\\-47.15123\\-142.3362\\39\\-49.10435\\-142.9538\\39\\-51.05748\\-144.3551\\39\\-53.0106\\-145.5165\\39\\-54.96373\\-144.8565\\39\\-56.06507\\-143.0209\\39\\-56.87035\\-141.0678\\39\\-54.96373\\-139.4445\\39\\-53.66803\\-137.1615\\39\\-53.24756\\-135.2084\\39\\-53.84229\\-133.2553\\39\\-54.12294\\-131.3021\\39\\-53.29272\\-129.349\\39\\-53.0106\\-129.069\\39\\-51.05748\\-127.9896\\39\\-49.10435\\-127.3881\\39\\-45.1981\\-126.6697\\39\\-43.24498\\-126.7916\\39\\-41.79652\\-125.4428\\39\\-42.69742\\-123.4896\\39\\-44.12568\\-121.5365\\39\\-43.24498\\-120.6221\\39\\-41.29185\\-120.0347\\39\\-39.33873\\-119.3225\\39\\-37.3856\\-120.4758\\39\\-35.43248\\-121.0146\\39\\-33.47935\\-121.266\\39\\-31.52623\\-121.807\\39\\-27.61998\\-122.4144\\39\\-25.66685\\-122.5505\\39\\-23.71373\\-123.0367\\39\\-21.7606\\-124.3982\\39\\-20.67272\\-125.4428\\39\\-21.04674\\-127.3959\\39\\-22.35578\\-129.349\\39\\-22.22192\\-131.3021\\39\\-20.92275\\-133.2553\\39\\-20.35267\\-135.2084\\39\\-20.57097\\-137.1615\\39\\-24.06048\\-141.0678\\39\\-23.71373\\-141.9706\\39\\-22.9512\\-143.0209\\39\\-21.7606\\-143.6507\\39\\-19.80748\\-145.0931\\39\\-17.85435\\-145.5559\\39\\-13.9481\\-145.5369\\39\\-12.10595\\-144.974\\39\\-11.50669\\-143.0209\\39\\-11.5001\\-139.1146\\39\\-11.10997\\-137.1615\\39\\-10.04185\\-136.5042\\39\\-8.088726\\-137.0443\\39\\-6.135601\\-137.9699\\39\\-4.182476\\-139.2347\\39\\-2.229351\\-139.7717\\39\\-0.276226\\-137.9362\\39\\0.3519412\\-137.1615\\39\\1.676899\\-135.8577\\39\\3.630024\\-134.6357\\39\\5.583149\\-135.37\\39\\7.536274\\-135.891\\39\\9.489399\\-135.7625\\39\\11.44252\\-134.2203\\39\\12.3907\\-133.2553\\39\\13.39565\\-131.2064\\39\\13.93387\\-129.349\\39\\13.79238\\-127.3959\\39\\12.56494\\-125.4428\\39\\13.8229\\-123.4896\\39\\15.34877\\-122.4863\\39\\17.3019\\-122.2191\\39\\21.20815\\-122.1062\\39\\29.02065\\-122.1062\\39\\32.9269\\-122.9843\\39\\34.88002\\-123.0014\\39\\36.83315\\-123.3542\\39\\38.78627\\-124.6875\\39\\40.7394\\-125.8297\\39\\42.69252\\-126.424\\39\\44.5471\\-127.3959\\39\\46.59877\\-128.8998\\39\\47.03072\\-129.349\\39\\47.69271\\-131.3021\\39\\47.05406\\-133.2553\\39\\45.89702\\-135.2084\\39\\46.1734\\-137.1615\\39\\46.32824\\-139.1146\\39\\47.52319\\-141.0678\\39\\48.5519\\-142.4712\\39\\50.33269\\-141.0678\\39\\49.46044\\-139.1146\\39\\49.40899\\-137.1615\\39\\49.98307\\-135.2084\\39\\50.27028\\-131.3021\\39\\51.53812\\-129.349\\39\\51.82998\\-127.3959\\39\\51.62757\\-125.4428\\39\\51.10645\\-123.4896\\39\\49.87276\\-121.5365\\39\\47.28934\\-119.5834\\39\\45.97733\\-117.6303\\39\\45.17676\\-115.6771\\39\\43.55789\\-113.724\\39\\43.68278\\-111.7709\\39\\44.05331\\-109.8178\\39\\46.59877\\-106.65\\39\\48.5519\\-104.7918\\39\\50.50502\\-104.2175\\39\\52.45815\\-104.025\\39\\54.41127\\-104.5173\\39\\56.3644\\-105.5144\\39\\58.34024\\-107.8646\\39\\58.27469\\-109.8178\\39\\57.09408\\-111.7709\\39\\57.42031\\-113.724\\39\\58.31752\\-114.4454\\39\\60.27065\\-115.1659\\39\\60.78493\\-115.6771\\39\\62.31852\\-117.6303\\39\\63.19616\\-119.5834\\39\\64.91687\\-121.5365\\39\\65.5759\\-123.4896\\39\\66.85982\\-125.4428\\39\\67.54493\\-127.3959\\39\\68.7588\\-129.349\\39\\70.86864\\-131.3021\\39\\73.39243\\-133.2553\\39\\73.30005\\-135.2084\\39\\74.52847\\-137.1615\\39\\75.55972\\-139.1146\\39\\76.15474\\-141.0678\\39\\75.28612\\-143.0209\\39\\73.57464\\-144.974\\39\\72.68467\\-146.9271\\39\\72.54185\\-148.8803\\39\\71.9894\\-149.9545\\39\\70.03628\\-150.5724\\39\\68.08315\\-149.5968\\39\\66.13003\\-149.5293\\39\\64.57044\\-148.8803\\39\\60.27065\\-146.3625\\39\\58.31752\\-144.8901\\39\\56.3644\\-143.8872\\39\\54.41127\\-143.7252\\39\\50.50502\\-143.6322\\39\\48.5519\\-144.4521\\39\\48.0113\\-144.974\\39\\46.59877\\-145.4505\\39\\44.64565\\-145.7585\\39\\42.69252\\-144.7932\\39\\40.7394\\-143.9493\\39\\38.78627\\-143.927\\39\\36.83315\\-143.7407\\39\\34.88002\\-143.1825\\39\\32.9269\\-143.6068\\39\\30.97377\\-144.1897\\39\\29.70178\\-144.974\\39\\27.06752\\-146.859\\39\\25.58966\\-148.8803\\39\\23.16127\\-151.0075\\39\\21.20815\\-153.3598\\39\\19.44065\\-154.7396\\39\\18.33535\\-156.6928\\39\\17.35824\\-158.6459\\39\\15.34877\\-158.3802\\39\\13.39565\\-157.8362\\39\\11.44252\\-158.2672\\39\\8.534781\\-160.599\\39\\7.536274\\-161.1248\\39\\5.75893\\-160.599\\39\\3.630024\\-159.7159\\39\\1.676899\\-159.5633\\39\\-0.1765768\\-158.6459\\39\\-2.229351\\-157.0183\\39\\-4.182476\\-160.6075\\39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "481"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-214.2952\\39\\44.64565\\-212.9367\\39\\42.69252\\-212.3704\\39\\40.7394\\-210.5688\\39\\37.856\\-207.474\\39\\37.09224\\-205.5209\\39\\36.84078\\-203.5678\\39\\34.88002\\-201.8504\\39\\34.33749\\-201.6146\\39\\33.35609\\-199.6615\\39\\35.60496\\-197.7084\\39\\37.0876\\-195.7553\\39\\37.63944\\-193.8021\\39\\37.95843\\-191.849\\39\\39.11403\\-189.8959\\39\\41.08053\\-187.9428\\39\\42.69252\\-186.7296\\39\\44.64565\\-185.6431\\39\\46.59877\\-185.4514\\39\\48.5519\\-185.0311\\39\\50.50502\\-184.8303\\39\\52.45815\\-184.8439\\39\\54.41127\\-185.1074\\39\\56.3644\\-185.6003\\39\\58.31752\\-186.4297\\39\\60.27065\\-187.4768\\39\\62.75184\\-189.8959\\39\\64.1769\\-191.4474\\39\\66.52549\\-193.8021\\39\\68.38879\\-195.7553\\39\\69.21416\\-197.7084\\39\\70.03628\\-198.7218\\39\\71.9894\\-200.1584\\39\\73.94253\\-201.2823\\39\\74.26804\\-201.6146\\39\\74.93612\\-203.5678\\39\\73.94253\\-204.3855\\39\\71.9894\\-204.0844\\39\\70.03628\\-204.3501\\39\\68.71644\\-205.5209\\39\\67.65778\\-207.474\\39\\66.85496\\-209.4271\\39\\65.64175\\-211.3803\\39\\64.1769\\-212.7872\\39\\62.22377\\-214.009\\39\\60.27065\\-214.6583\\39\\58.31752\\-214.8996\\39\\54.41127\\-214.9935\\39\\48.5519\\-214.9935\\39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "482"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "95.4269\\-186.0844\\39\\93.47378\\-185.8164\\39\\92.67988\\-184.0365\\39\\91.48309\\-182.0834\\39\\90.71068\\-180.1303\\39\\89.56753\\-177.8755\\39\\88.88274\\-176.224\\39\\87.6144\\-173.9171\\39\\86.9874\\-172.3178\\39\\86.04532\\-170.3646\\39\\85.66128\\-169.7853\\39\\85.18166\\-168.4115\\39\\85.66128\\-167.7246\\39\\87.6144\\-168.0222\\39\\89.56753\\-168.0886\\39\\90.85509\\-166.4584\\39\\92.07975\\-164.5053\\39\\93.47378\\-163.6057\\39\\95.4269\\-163.4845\\39\\96.80242\\-164.5053\\39\\98.08863\\-166.4584\\39\\99.5235\\-168.4115\\39\\101.9133\\-172.3178\\39\\102.4208\\-174.2709\\39\\102.9033\\-178.1771\\39\\102.8929\\-182.0834\\39\\102.5206\\-184.0365\\39\\101.2863\\-185.2771\\39\\99.33315\\-185.7779\\39\\97.38003\\-185.7902\\39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "483"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "101.2863\\-210.1016\\39\\100.564\\-209.4271\\39\\99.01414\\-207.474\\39\\99.27666\\-205.5209\\39\\101.2863\\-206.1831\\39\\103.1524\\-207.474\\39\\103.2788\\-209.4271\\39"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "484"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-103.7918\\-196.152\\41\\-105.745\\-194.5909\\41\\-106.5796\\-193.8021\\41\\-107.6034\\-191.849\\41\\-108.2901\\-189.8959\\41\\-108.7401\\-187.9428\\41\\-108.754\\-184.0365\\41\\-108.3589\\-182.0834\\41\\-107.6605\\-180.1303\\41\\-107.3516\\-178.1771\\41\\-106.9363\\-176.224\\41\\-105.9131\\-174.2709\\41\\-103.7918\\-171.9957\\41\\-103.0403\\-170.3646\\41\\-102.0128\\-168.4115\\41\\-99.8856\\-166.1876\\41\\-97.93247\\-163.6044\\41\\-97.21804\\-162.5521\\41\\-95.97935\\-160.4552\\41\\-94.02622\\-159.5682\\41\\-90.11997\\-159.4085\\41\\-86.21372\\-158.8794\\41\\-85.74288\\-160.599\\41\\-86.21372\\-161.8958\\41\\-86.64426\\-162.5521\\41\\-89.32198\\-168.4115\\41\\-89.49474\\-170.3646\\41\\-90.47443\\-172.3178\\41\\-91.27511\\-174.2709\\41\\-91.72658\\-176.224\\41\\-92.74407\\-178.1771\\41\\-93.36893\\-180.1303\\41\\-94.02622\\-181.5745\\41\\-95.30953\\-184.0365\\41\\-95.34273\\-185.9896\\41\\-96.47733\\-187.9428\\41\\-97.1748\\-189.8959\\41\\-97.2916\\-191.849\\41\\-97.29986\\-193.8021\\41\\-97.93247\\-195.4511\\41\\-98.59515\\-195.7553\\41\\-99.8856\\-196.0027\\41\\-101.8387\\-196.2172\\41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "485"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-15.90123\\-123.9225\\41\\-16.18305\\-123.4896\\41\\-16.11293\\-121.5365\\41\\-14.84476\\-119.5834\\41\\-14.24107\\-117.6303\\41\\-13.9481\\-117.3164\\41\\-11.99498\\-116.2693\\41\\-11.40904\\-115.6771\\41\\-10.64818\\-113.724\\41\\-10.50382\\-111.7709\\41\\-10.49483\\-109.8178\\41\\-10.38236\\-107.8646\\41\\-9.133277\\-105.9115\\41\\-8.051166\\-103.9584\\41\\-7.276693\\-102.0053\\41\\-6.135601\\-101.0884\\41\\-4.182476\\-101.2425\\41\\-2.229351\\-101.1906\\41\\-1.098225\\-102.0053\\41\\-0.9950157\\-103.9584\\41\\0.3730842\\-105.9115\\41\\1.027646\\-107.8646\\41\\2.015706\\-109.8178\\41\\2.749638\\-111.7709\\41\\2.816222\\-113.724\\41\\3.950992\\-115.6771\\41\\4.443826\\-117.6303\\41\\5.583149\\-118.6705\\41\\5.983075\\-119.5834\\41\\5.583149\\-119.922\\41\\3.394302\\-117.6303\\41\\1.119846\\-115.6771\\41\\-0.276226\\-114.7376\\41\\-2.229351\\-114.5507\\41\\-4.182476\\-114.5451\\41\\-6.135601\\-114.7997\\41\\-8.088726\\-116.0027\\41\\-10.04185\\-116.891\\41\\-10.78809\\-117.6303\\41\\-11.32884\\-119.5834\\41\\-12.86395\\-121.5365\\41\\-13.41363\\-123.4896\\41\\-13.9481\\-124.0428\\41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "76"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "486"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-13.9481\\-212.9766\\41\\-15.90123\\-212.927\\41\\-19.80748\\-212.6989\\41\\-21.7606\\-212.1421\\41\\-23.71373\\-210.8198\\41\\-27.61998\\-210.1012\\41\\-29.5731\\-210.0728\\41\\-31.59598\\-209.4271\\41\\-33.47935\\-208.9563\\41\\-37.3856\\-208.9475\\41\\-41.29185\\-208.7535\\41\\-43.24498\\-208.2837\\41\\-45.1981\\-207.0486\\41\\-47.15123\\-207.0393\\41\\-49.10435\\-206.4065\\41\\-51.05748\\-204.9684\\41\\-53.0106\\-204.1808\\41\\-53.61693\\-203.5678\\41\\-54.52163\\-201.6146\\41\\-55.0451\\-199.6615\\41\\-56.91685\\-198.3332\\41\\-58.86998\\-199.3494\\41\\-59.70338\\-197.7084\\41\\-59.32571\\-195.7553\\41\\-58.86998\\-195.2472\\41\\-56.91685\\-193.7646\\41\\-54.96373\\-192.4317\\41\\-54.51055\\-191.849\\41\\-54.86827\\-187.9428\\41\\-53.68877\\-185.9896\\41\\-51.73843\\-184.0365\\41\\-49.10435\\-181.0065\\41\\-47.15123\\-179.5078\\41\\-43.24498\\-178.6378\\41\\-35.43248\\-178.6378\\41\\-29.5731\\-179.9533\\41\\-27.61998\\-181.1124\\41\\-25.66685\\-181.7753\\41\\-23.71373\\-183.06\\41\\-21.7606\\-184.5441\\41\\-19.80748\\-185.2167\\41\\-15.90123\\-184.481\\41\\-11.99498\\-184.3886\\41\\-10.04185\\-184.9184\\41\\-8.088726\\-185.228\\41\\-6.135601\\-185.4048\\41\\-4.182476\\-185.7421\\41\\-2.229351\\-186.9775\\41\\-0.276226\\-187.6953\\41\\1.676899\\-188.84\\41\\2.956788\\-189.8959\\41\\4.895116\\-191.849\\41\\6.71527\\-193.8021\\41\\7.536274\\-194.8809\\41\\9.425152\\-197.7084\\41\\11.44252\\-199.0575\\41\\13.39565\\-199.6239\\41\\15.34877\\-200.0624\\41\\17.3019\\-201.2533\\41\\17.3019\\-201.8621\\41\\15.34877\\-202.341\\41\\13.39565\\-202.3543\\41\\11.44252\\-202.5963\\41\\10.06087\\-203.5678\\41\\9.489399\\-205.1107\\41\\8.22078\\-207.474\\41\\7.255142\\-209.4271\\41\\5.583149\\-210.9388\\41\\4.938618\\-211.3803\\41\\3.630024\\-211.8079\\41\\1.676899\\-211.8343\\41\\-0.276226\\-211.2101\\41\\-2.229351\\-210.9037\\41\\-4.182476\\-212.1668\\41\\-8.088726\\-213.5078\\41\\-10.04185\\-213.8953\\41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "202"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "487"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "15.34877\\-158.9277\\41\\13.39565\\-157.5703\\41\\11.44252\\-157.1636\\41\\9.489399\\-157.2747\\41\\7.536274\\-156.9831\\41\\6.385325\\-156.6928\\41\\3.630024\\-155.0808\\41\\1.676899\\-154.7158\\41\\-0.276226\\-153.1557\\41\\-2.229351\\-152.1622\\41\\-4.182476\\-151.2687\\41\\-6.135601\\-151.4895\\41\\-8.066015\\-152.7865\\41\\-10.04185\\-152.9772\\41\\-11.99498\\-153.3753\\41\\-13.5412\\-154.7396\\41\\-17.88225\\-156.6928\\41\\-19.80748\\-157.1087\\41\\-21.7606\\-155.4575\\41\\-23.71373\\-154.5283\\41\\-25.66685\\-152.2736\\41\\-26.71499\\-150.8334\\41\\-29.5731\\-147.7831\\41\\-31.52623\\-145.8327\\41\\-33.47935\\-144.2287\\41\\-35.43248\\-143.6112\\41\\-37.3856\\-142.1005\\41\\-39.33873\\-141.9234\\41\\-41.29185\\-141.9855\\41\\-43.24498\\-141.8681\\41\\-47.15123\\-141.8405\\41\\-49.10435\\-142.1845\\41\\-51.05748\\-143.6068\\41\\-53.0106\\-144.2272\\41\\-54.96373\\-144.2351\\41\\-56.68923\\-143.0209\\41\\-58.57701\\-141.0678\\41\\-57.49926\\-139.1146\\41\\-57.97742\\-137.1615\\41\\-58.86998\\-136.6615\\41\\-59.64575\\-137.1615\\41\\-60.3475\\-139.1146\\41\\-60.8231\\-139.8257\\41\\-61.9861\\-141.0678\\41\\-64.72935\\-142.7337\\41\\-66.68247\\-144.6108\\41\\-67.2532\\-144.974\\41\\-70.58872\\-146.5713\\41\\-72.54185\\-147.6095\\41\\-74.49497\\-148.1671\\41\\-76.4481\\-149.9866\\41\\-78.40122\\-151.4581\\41\\-80.33215\\-150.8334\\41\\-80.28986\\-148.8803\\41\\-79.39215\\-146.9271\\41\\-79.55151\\-144.974\\41\\-80.35435\\-144.1826\\41\\-82.30747\\-144.4269\\41\\-83.5556\\-143.0209\\41\\-83.23904\\-141.0678\\41\\-81.65134\\-139.1146\\41\\-81.00014\\-137.1615\\41\\-79.27692\\-135.2084\\41\\-78.39359\\-133.2553\\41\\-78.0547\\-131.3021\\41\\-78.95197\\-129.349\\41\\-78.40122\\-128.3519\\41\\-76.4481\\-127.2319\\41\\-74.49497\\-125.7574\\41\\-72.54185\\-122.1717\\41\\-72.12774\\-121.5365\\41\\-71.22062\\-119.5834\\41\\-69.65223\\-115.6771\\41\\-68.6356\\-114.0654\\41\\-66.47269\\-111.7709\\41\\-65.57139\\-109.8178\\41\\-66.31549\\-105.9115\\41\\-66.94157\\-103.9584\\41\\-66.60171\\-102.0053\\41\\-66.07767\\-100.0521\\41\\-64.12067\\-98.09901\\41\\-62.77623\\-97.23048\\41\\-60.8231\\-96.896\\41\\-57.5661\\-94.19276\\41\\-56.91685\\-93.54705\\41\\-54.96373\\-93.03987\\41\\-53.68335\\-92.23963\\41\\-51.05748\\-90.32407\\41\\-49.10435\\-89.88671\\41\\-47.15123\\-90.94621\\41\\-45.1981\\-91.78265\\41\\-43.08339\\-94.19276\\41\\-42.27725\\-96.14588\\41\\-40.52088\\-98.09901\\41\\-39.74047\\-100.0521\\41\\-39.43347\\-102.0053\\41\\-39.56409\\-103.9584\\41\\-40.11324\\-105.9115\\41\\-41.29185\\-107.3884\\41\\-43.24498\\-109.5514\\41\\-47.15123\\-112.4535\\41\\-49.10435\\-113.5315\\41\\-53.0106\\-116.5522\\41\\-54.96373\\-117.4109\\41\\-56.91685\\-119.0078\\41\\-59.39495\\-121.5365\\41\\-59.99955\\-123.4896\\41\\-60.39773\\-125.4428\\41\\-60.33482\\-127.3959\\41\\-59.94646\\-129.349\\41\\-59.08317\\-131.3021\\41\\-56.91685\\-134.539\\41\\-55.89206\\-135.2084\\41\\-54.96373\\-136.4616\\41\\-54.47225\\-135.2084\\41\\-54.84075\\-133.2553\\41\\-54.98643\\-131.3021\\41\\-54.2893\\-129.349\\41\\-53.0106\\-128.0265\\41\\-51.05748\\-126.817\\41\\-49.10435\\-126.3995\\41\\-45.1981\\-126.1304\\41\\-43.24498\\-125.5823\\41\\-42.25058\\-123.4896\\41\\-41.29185\\-121.899\\41\\-39.33873\\-121.0228\\41\\-37.3856\\-121.5592\\41\\-35.43248\\-121.7722\\41\\-33.47935\\-120.9302\\41\\-31.52623\\-120.5816\\41\\-29.5731\\-120.586\\41\\-27.61998\\-120.9551\\41\\-25.66685\\-122.1681\\41\\-23.71373\\-122.8403\\41\\-21.7606\\-124.1562\\41\\-20.30453\\-125.4428\\41\\-20.36789\\-127.3959\\41\\-20.83775\\-129.349\\41\\-20.9468\\-131.3021\\41\\-19.66797\\-133.2553\\41\\-18.51739\\-135.2084\\41\\-18.33375\\-137.1615\\41\\-18.47969\\-139.1146\\41\\-18.26345\\-141.0678\\41\\-17.85435\\-141.3534\\41\\-15.90123\\-141.407\\41\\-15.58528\\-141.0678\\41\\-15.08551\\-139.1146\\41\\-13.9481\\-137.6929\\41\\-13.67643\\-137.1615\\41\\-11.99498\\-136.0653\\41\\-10.04185\\-135.9164\\41\\-6.135601\\-136.0958\\41\\-4.182476\\-136.2806\\41\\-2.229351\\-136.6044\\41\\-0.276226\\-136.1623\\41\\3.630024\\-135.7857\\41\\7.536274\\-135.8645\\41\\9.489399\\-134.9575\\41\\11.44252\\-133.1602\\41\\12.6423\\-131.3021\\41\\13.34347\\-129.349\\41\\13.69258\\-127.3959\\41\\13.32804\\-125.4428\\41\\14.62398\\-123.4896\\41\\15.34877\\-122.9341\\41\\17.3019\\-122.3557\\41\\21.20815\\-122.1062\\41\\29.02065\\-122.1062\\41\\30.97377\\-122.7623\\41\\32.9269\\-123.8667\\41\\36.83315\\-123.9605\\41\\38.78627\\-124.725\\41\\40.7394\\-125.8774\\41\\42.69252\\-126.6647\\41\\44.64565\\-127.7527\\41\\46.59877\\-128.685\\41\\47.26665\\-129.349\\41\\48.02994\\-131.3021\\41\\47.63543\\-133.2553\\41\\46.12793\\-135.2084\\41\\46.39933\\-137.1615\\41\\47.3312\\-139.1146\\41\\47.8219\\-141.0678\\41\\47.64636\\-143.0209\\41\\46.59877\\-144.0437\\41\\44.64565\\-144.3658\\41\\40.7394\\-143.1017\\41\\38.78627\\-143.0875\\41\\36.83315\\-142.4229\\41\\34.88002\\-141.9993\\41\\32.9269\\-142.267\\41\\30.97377\\-143.5748\\41\\29.02065\\-144.3003\\41\\28.32078\\-144.974\\41\\26.79699\\-146.9271\\41\\26.10546\\-148.8803\\41\\24.24038\\-150.8334\\41\\21.0442\\-154.7396\\41\\20.34291\\-158.6459\\41\\19.25502\\-159.8321\\41\\17.3019\\-159.6431\\41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "488"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-214.2952\\41\\44.64565\\-212.9367\\41\\42.69252\\-212.3614\\41\\39.79034\\-209.4271\\41\\38.51204\\-207.474\\41\\37.74236\\-205.5209\\41\\37.22753\\-203.5678\\41\\36.83315\\-202.9762\\41\\34.88002\\-202.4524\\41\\33.66491\\-201.6146\\41\\33.89344\\-199.6615\\41\\34.88002\\-198.6216\\41\\36.83315\\-197.1459\\41\\37.93178\\-195.7553\\41\\38.14048\\-193.8021\\41\\38.78627\\-191.8955\\41\\39.73936\\-189.8959\\41\\42.69252\\-186.9705\\41\\44.64565\\-185.8152\\41\\46.59877\\-185.129\\41\\48.5519\\-184.589\\41\\50.50502\\-184.1981\\41\\52.45815\\-184.1851\\41\\54.41127\\-184.6279\\41\\58.31752\\-185.1293\\41\\60.27065\\-186.4203\\41\\62.22377\\-187.5895\\41\\62.62869\\-187.9428\\41\\68.08315\\-193.3744\\41\\68.46372\\-193.8021\\41\\69.53943\\-195.7553\\41\\70.07565\\-197.7084\\41\\72.16468\\-199.6615\\41\\73.94253\\-200.7228\\41\\74.86742\\-201.6146\\41\\75.82928\\-203.5678\\41\\73.94253\\-204.4592\\41\\71.9894\\-203.8222\\41\\70.03628\\-205.1665\\41\\69.74331\\-205.5209\\41\\69.27498\\-207.474\\41\\68.08315\\-209.608\\41\\67.3276\\-211.3803\\41\\66.13003\\-212.7266\\41\\64.1769\\-214.0095\\41\\62.22377\\-214.6942\\41\\60.27065\\-214.9504\\41\\58.31752\\-215.0047\\41\\48.5519\\-214.9935\\41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "489"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "66.13003\\-147.5927\\41\\64.54681\\-146.9271\\41\\62.22377\\-145.6477\\41\\60.6584\\-144.974\\41\\57.28056\\-143.0209\\41\\56.3644\\-142.4324\\41\\54.41127\\-141.7246\\41\\52.45815\\-141.7014\\41\\51.54052\\-141.0678\\41\\49.99747\\-139.1146\\41\\49.96373\\-137.1615\\41\\50.45308\\-133.2553\\41\\50.82156\\-131.3021\\41\\51.68437\\-129.349\\41\\52.21066\\-127.3959\\41\\52.15419\\-125.4428\\41\\51.81244\\-123.4896\\41\\50.91396\\-121.5365\\41\\48.5519\\-119.2536\\41\\46.59877\\-117.1791\\41\\45.36922\\-115.6771\\41\\43.90137\\-113.724\\41\\43.8919\\-111.7709\\41\\44.10743\\-109.8178\\41\\45.16609\\-107.8646\\41\\46.39648\\-105.9115\\41\\48.5519\\-103.8345\\41\\50.50502\\-103.0345\\41\\52.45815\\-102.4127\\41\\54.41127\\-102.4825\\41\\56.97808\\-105.9115\\41\\57.59661\\-107.8646\\41\\56.9417\\-109.8178\\41\\56.94815\\-111.7709\\41\\57.96543\\-113.724\\41\\60.27065\\-115.8387\\41\\62.22377\\-118.0532\\41\\63.09523\\-119.5834\\41\\64.89782\\-121.5365\\41\\65.5918\\-123.4896\\41\\66.86636\\-125.4428\\41\\67.54493\\-127.3959\\41\\68.76225\\-129.349\\41\\70.73031\\-131.3021\\41\\72.96028\\-133.2553\\41\\73.33659\\-135.2084\\41\\73.59179\\-137.1615\\41\\73.64391\\-139.1146\\41\\73.57011\\-141.0678\\41\\73.88508\\-143.0209\\41\\72.88416\\-144.974\\41\\71.9894\\-146.5276\\41\\70.03628\\-148.5547\\41\\68.08315\\-147.6265\\41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "28"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "490"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "95.4269\\-184.7606\\41\\94.74016\\-184.0365\\41\\93.79929\\-182.0834\\41\\92.37144\\-180.1303\\41\\91.26156\\-178.1771\\41\\90.91822\\-176.224\\41\\89.56753\\-173.7673\\41\\89.01199\\-172.3178\\41\\89.46431\\-170.3646\\41\\91.52065\\-168.7194\\41\\91.78768\\-168.4115\\41\\92.70487\\-166.4584\\41\\93.92633\\-164.5053\\41\\95.4269\\-163.6136\\41\\97.38003\\-163.5382\\41\\98.62683\\-164.5053\\41\\99.55851\\-166.4584\\41\\101.3839\\-168.4115\\41\\102.4208\\-170.3646\\41\\102.7629\\-172.3178\\41\\103.9361\\-174.2709\\41\\104.6002\\-176.224\\41\\104.6152\\-182.0834\\41\\104.0379\\-184.0365\\41\\103.2394\\-184.7823\\41\\101.2863\\-185.6748\\41\\99.33315\\-185.8026\\41\\97.38003\\-185.5729\\41"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "491"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-105.745\\-194.4879\\43\\-107.6981\\-193.2232\\43\\-108.7962\\-191.849\\43\\-109.0088\\-189.8959\\43\\-109.4155\\-187.9428\\43\\-109.7042\\-185.9896\\43\\-109.7474\\-184.0365\\43\\-109.1019\\-180.1303\\43\\-109.0176\\-178.1771\\43\\-108.3513\\-176.224\\43\\-107.3833\\-174.2709\\43\\-106.0396\\-172.3178\\43\\-104.4407\\-170.3646\\43\\-103.3759\\-168.4115\\43\\-102.1309\\-166.4584\\43\\-99.8856\\-164.2321\\43\\-97.21531\\-160.599\\43\\-95.97935\\-159.4581\\43\\-94.02622\\-159.5899\\43\\-90.09472\\-160.599\\43\\-89.49017\\-162.5521\\43\\-89.53288\\-164.5053\\43\\-89.89618\\-166.4584\\43\\-90.87879\\-168.4115\\43\\-91.42809\\-170.3646\\43\\-91.80257\\-172.3178\\43\\-92.80552\\-174.2709\\43\\-93.39327\\-176.224\\43\\-94.43784\\-178.1771\\43\\-95.97935\\-181.5273\\43\\-97.29986\\-184.0365\\43\\-97.32363\\-185.9896\\43\\-97.68328\\-187.9428\\43\\-99.02762\\-189.8959\\43\\-99.29609\\-191.849\\43\\-99.32498\\-193.8021\\43\\-99.8856\\-194.5229\\43\\-101.8387\\-195.2634\\43\\-103.7918\\-195.306\\43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "80"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "492"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-19.80748\\-211.8939\\43\\-23.71373\\-210.2666\\43\\-25.66685\\-209.262\\43\\-27.61998\\-208.7417\\43\\-31.52623\\-208.7813\\43\\-37.3856\\-208.7405\\43\\-39.33873\\-208.4171\\43\\-41.29185\\-208.2002\\43\\-43.24498\\-207.6734\\43\\-45.1981\\-207.0393\\43\\-47.15123\\-206.8935\\43\\-49.10435\\-206.1161\\43\\-51.05748\\-204.3672\\43\\-52.08218\\-203.5678\\43\\-53.29243\\-201.6146\\43\\-53.51591\\-199.6615\\43\\-54.96373\\-198.2052\\43\\-56.91685\\-198.5667\\43\\-58.86998\\-197.861\\43\\-58.97848\\-197.7084\\43\\-58.46823\\-195.7553\\43\\-56.91685\\-194.0531\\43\\-54.96373\\-193.3862\\43\\-53.53256\\-191.849\\43\\-53.69356\\-189.8959\\43\\-54.08385\\-187.9428\\43\\-53.0106\\-187.0083\\43\\-51.05748\\-185.1115\\43\\-50.16908\\-184.0365\\43\\-48.22615\\-182.0834\\43\\-47.15123\\-181.2045\\43\\-45.1981\\-180.1074\\43\\-43.24498\\-179.6035\\43\\-35.43248\\-179.6035\\43\\-33.47935\\-180.0489\\43\\-31.52623\\-181.152\\43\\-29.5731\\-181.5621\\43\\-27.61998\\-182.6718\\43\\-25.66685\\-183.4087\\43\\-24.56822\\-184.0365\\43\\-23.71373\\-184.7097\\43\\-21.7606\\-185.6967\\43\\-19.80748\\-186.2266\\43\\-17.85435\\-185.51\\43\\-15.90123\\-185.2395\\43\\-13.9481\\-185.2337\\43\\-11.99498\\-185.42\\43\\-8.088726\\-186.2283\\43\\-6.135601\\-186.8537\\43\\-4.182476\\-187.3731\\43\\-2.229351\\-188.5364\\43\\-0.276226\\-189.3186\\43\\0.7382613\\-189.8959\\43\\1.676899\\-190.6228\\43\\2.893958\\-191.849\\43\\5.583149\\-195.8204\\43\\6.241761\\-197.7084\\43\\7.536274\\-198.6907\\43\\9.489399\\-199.1202\\43\\11.44252\\-199.9213\\43\\13.39565\\-200.2444\\43\\15.29627\\-201.6146\\43\\13.39565\\-202.4727\\43\\11.44252\\-202.4935\\43\\9.489399\\-202.2742\\43\\7.536274\\-202.7598\\43\\6.401883\\-203.5678\\43\\6.081674\\-205.5209\\43\\5.583149\\-206.9467\\43\\5.157872\\-207.474\\43\\3.010283\\-209.4271\\43\\1.676899\\-209.8716\\43\\-0.276226\\-209.9154\\43\\-2.229351\\-210.3174\\43\\-4.182476\\-211.2033\\43\\-6.135601\\-212.3464\\43\\-8.088726\\-212.6992\\43\\-10.04185\\-212.7452\\43\\-15.90123\\-212.6695\\43\\-17.85435\\-212.3517\\43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "493"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-8.088726\\-115.9009\\43\\-8.442864\\-115.6771\\43\\-8.885774\\-113.724\\43\\-8.612305\\-111.7709\\43\\-8.658387\\-109.8178\\43\\-10.60451\\-107.8646\\43\\-10.92204\\-105.9115\\43\\-10.04185\\-105.1382\\43\\-8.134359\\-103.9584\\43\\-6.771652\\-102.0053\\43\\-6.135601\\-101.4399\\43\\-4.182476\\-101.0201\\43\\-2.229351\\-101.0929\\43\\-0.9128458\\-102.0053\\43\\-0.8029779\\-103.9584\\43\\0.471678\\-107.8646\\43\\0.1650356\\-113.724\\43\\-0.276226\\-114.1406\\43\\-2.229351\\-114.946\\43\\-4.182476\\-115.2063\\43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "194"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "494"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "19.25502\\-159.0523\\43\\18.16453\\-158.6459\\43\\17.3019\\-158.0147\\43\\15.34877\\-156.8684\\43\\13.39565\\-154.7821\\43\\11.44252\\-153.7988\\43\\9.489399\\-153.3184\\43\\8.543839\\-152.7865\\43\\7.536274\\-151.7947\\43\\5.306456\\-150.8334\\43\\3.630024\\-149.6067\\43\\1.098933\\-148.8803\\43\\-0.276226\\-147.9936\\43\\-2.229351\\-147.4407\\43\\-6.135601\\-147.3408\\43\\-8.088726\\-147.4451\\43\\-10.04185\\-147.9037\\43\\-11.3386\\-148.8803\\43\\-11.99498\\-149.1955\\43\\-13.9481\\-150.9651\\43\\-15.90123\\-151.7323\\43\\-17.32851\\-152.7865\\43\\-19.80748\\-153.6308\\43\\-21.7606\\-153.3606\\43\\-23.71373\\-153.2025\\43\\-25.66685\\-151.5565\\43\\-27.89235\\-148.8803\\43\\-29.00289\\-146.9271\\43\\-31.52623\\-144.3546\\43\\-33.47935\\-143.4758\\43\\-35.43248\\-142.3102\\43\\-37.3856\\-141.7478\\43\\-39.33873\\-141.0754\\43\\-41.29185\\-141.0905\\43\\-43.24498\\-140.124\\43\\-45.1981\\-140.2877\\43\\-47.15123\\-141.0905\\43\\-51.05748\\-142.2859\\43\\-53.0106\\-143.4052\\43\\-54.96373\\-143.473\\43\\-56.91685\\-142.2771\\43\\-58.03359\\-141.0678\\43\\-58.0953\\-139.1146\\43\\-58.32066\\-137.1615\\43\\-58.86998\\-136.5457\\43\\-60.8231\\-136.3767\\43\\-61.59843\\-137.1615\\43\\-62.55243\\-139.1146\\43\\-64.72935\\-140.8045\\43\\-66.68247\\-142.6577\\43\\-67.2607\\-143.0209\\43\\-70.58872\\-144.5883\\43\\-71.17717\\-144.974\\43\\-74.49497\\-146.5547\\43\\-76.4481\\-148.3145\\43\\-78.40122\\-147.9037\\43\\-78.61293\\-146.9271\\43\\-79.30737\\-144.974\\43\\-80.35435\\-143.8686\\43\\-82.30747\\-143.5551\\43\\-82.91701\\-143.0209\\43\\-83.42673\\-141.0678\\43\\-82.96777\\-139.1146\\43\\-79.67747\\-135.2084\\43\\-79.02602\\-133.2553\\43\\-78.1655\\-131.3021\\43\\-79.36459\\-129.349\\43\\-79.03571\\-127.3959\\43\\-78.40122\\-126.7888\\43\\-76.4481\\-126.676\\43\\-74.49497\\-125.4195\\43\\-73.22186\\-123.4896\\43\\-71.72642\\-121.5365\\43\\-70.92481\\-119.5834\\43\\-70.40173\\-117.6303\\43\\-69.30265\\-115.6771\\43\\-66.16879\\-111.7709\\43\\-65.45092\\-109.8178\\43\\-65.92403\\-107.8646\\43\\-66.28574\\-105.9115\\43\\-66.17421\\-103.9584\\43\\-66.17716\\-102.0053\\43\\-65.65111\\-100.0521\\43\\-62.77623\\-97.57404\\43\\-60.8231\\-96.50734\\43\\-60.45928\\-96.14588\\43\\-57.59208\\-94.19276\\43\\-56.91685\\-93.54705\\43\\-54.96373\\-93.03987\\43\\-53.0106\\-91.66756\\43\\-51.05748\\-89.79212\\43\\-49.10435\\-89.16714\\43\\-47.39712\\-90.28651\\43\\-46.05853\\-92.23963\\43\\-44.25538\\-94.19276\\43\\-43.24498\\-95.58121\\43\\-41.23967\\-98.09901\\43\\-40.35285\\-100.0521\\43\\-40.04125\\-102.0053\\43\\-40.26556\\-103.9584\\43\\-40.24619\\-105.9115\\43\\-41.29185\\-107.1855\\43\\-43.24498\\-109.2181\\43\\-45.1981\\-110.5679\\43\\-47.15123\\-111.6167\\43\\-49.10435\\-112.9269\\43\\-51.05748\\-114.7668\\43\\-53.0106\\-116.0542\\43\\-54.96373\\-116.425\\43\\-56.80753\\-117.6303\\43\\-58.06003\\-119.5834\\43\\-59.67232\\-121.5365\\43\\-60.50829\\-123.4896\\43\\-61.06724\\-125.4428\\43\\-60.9051\\-127.3959\\43\\-60.16354\\-129.349\\43\\-59.80547\\-131.3021\\43\\-58.86998\\-132.5773\\43\\-56.91685\\-132.9532\\43\\-55.70261\\-131.3021\\43\\-55.00129\\-129.349\\43\\-53.0106\\-127.1368\\43\\-51.05748\\-126.331\\43\\-49.10435\\-125.9481\\43\\-47.15123\\-125.0484\\43\\-45.1981\\-124.4759\\43\\-43.24498\\-124.3167\\43\\-41.29185\\-122.7036\\43\\-39.33873\\-122.0161\\43\\-37.3856\\-122.0585\\43\\-35.43248\\-121.0745\\43\\-33.47935\\-120.5177\\43\\-31.52623\\-120.345\\43\\-29.5731\\-120.3393\\43\\-27.61998\\-120.4579\\43\\-25.88783\\-121.5365\\43\\-23.71373\\-123.6281\\43\\-21.7606\\-124.6626\\43\\-20.96261\\-125.4428\\43\\-19.99717\\-127.3959\\43\\-20.0432\\-129.349\\43\\-20.45335\\-131.3021\\43\\-17.85435\\-134.7543\\43\\-15.90123\\-136.1669\\43\\-13.9481\\-136.0536\\43\\-10.04185\\-136.0001\\43\\-2.229351\\-136.0421\\43\\1.676899\\-135.9577\\43\\3.630024\\-136.0001\\43\\7.536274\\-135.9323\\43\\9.489399\\-135.4675\\43\\9.777928\\-135.2084\\43\\11.14956\\-133.2553\\43\\11.94784\\-131.3021\\43\\12.98346\\-129.349\\43\\14.30322\\-127.3959\\43\\15.32534\\-125.4428\\43\\17.39531\\-123.4896\\43\\19.25502\\-122.5598\\43\\21.20815\\-122.1062\\43\\27.06752\\-122.1062\\43\\29.02065\\-122.2435\\43\\30.97377\\-122.8993\\43\\32.9269\\-123.9692\\43\\34.88002\\-123.9779\\43\\36.83315\\-124.1389\\43\\38.78627\\-124.8324\\43\\40.7394\\-125.8867\\43\\42.69252\\-126.6898\\43\\44.64565\\-127.8023\\43\\46.59877\\-128.6704\\43\\47.2891\\-129.349\\43\\48.09892\\-131.3021\\43\\47.75336\\-133.2553\\43\\46.78514\\-135.2084\\43\\47.88905\\-139.1146\\43\\47.73647\\-141.0678\\43\\46.59877\\-142.4552\\43\\44.64565\\-143.5296\\43\\42.69252\\-142.3822\\43\\40.7394\\-141.8622\\43\\38.78627\\-141.6701\\43\\36.83315\\-141.6185\\43\\34.88002\\-141.2032\\43\\32.9269\\-141.6581\\43\\30.97377\\-142.2426\\43\\29.02065\\-143.9375\\43\\28.17592\\-144.974\\43\\26.90358\\-146.9271\\43\\26.1409\\-148.8803\\43\\24.52206\\-150.8334\\43\\24.05646\\-154.7396\\43\\23.64956\\-156.6928\\43\\23.16127\\-157.181\\43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "495"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-215.5135\\43\\50.50502\\-215.0047\\43\\48.5519\\-214.9935\\43\\46.59877\\-214.2901\\43\\44.64565\\-212.8251\\43\\42.69252\\-212.1018\\43\\41.96692\\-211.3803\\43\\40.43341\\-209.4271\\43\\39.71168\\-207.474\\43\\38.56248\\-205.5209\\43\\37.94441\\-203.5678\\43\\37.43587\\-201.6146\\43\\36.83315\\-201.1232\\43\\36.27813\\-201.6146\\43\\34.4615\\-203.5678\\43\\32.9269\\-204.5443\\43\\32.00459\\-203.5678\\43\\33.72326\\-201.6146\\43\\34.3773\\-199.6615\\43\\34.88002\\-199.0368\\43\\36.83315\\-197.6276\\43\\38.53879\\-195.7553\\43\\38.92171\\-193.8021\\43\\39.6033\\-191.849\\43\\40.03327\\-189.8959\\43\\41.70704\\-187.9428\\43\\42.69252\\-186.9878\\43\\44.64565\\-185.8152\\43\\46.59877\\-185.0396\\43\\48.5519\\-184.0741\\43\\50.50502\\-183.9699\\43\\52.45815\\-183.6571\\43\\54.41127\\-183.7528\\43\\58.31752\\-184.6961\\43\\60.27065\\-185.1048\\43\\62.22377\\-186.4633\\43\\64.1769\\-187.7021\\43\\68.30907\\-191.849\\43\\70.74702\\-195.7553\\43\\71.19564\\-197.7084\\43\\72.83647\\-199.6615\\43\\73.94253\\-200.6675\\43\\75.27924\\-201.6146\\43\\76.82227\\-203.5678\\43\\75.89565\\-204.3594\\43\\73.94253\\-204.2539\\43\\71.9894\\-204.6426\\43\\71.25441\\-205.5209\\43\\70.70129\\-207.474\\43\\68.72341\\-211.3803\\43\\66.87964\\-213.3334\\43\\66.13003\\-213.9746\\43\\64.1769\\-214.7016\\43\\62.22377\\-215.178\\43\\60.27065\\-215.5135\\43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "496"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "66.13003\\-145.6189\\43\\64.5525\\-144.974\\43\\60.44298\\-143.0209\\43\\58.31752\\-141.8883\\43\\56.52899\\-141.0678\\43\\54.41127\\-139.6833\\43\\52.45815\\-139.6751\\43\\51.58105\\-139.1146\\43\\50.77876\\-137.1615\\43\\50.79663\\-135.2084\\43\\51.3351\\-133.2553\\43\\52.03278\\-129.349\\43\\52.27115\\-127.3959\\43\\52.25871\\-125.4428\\43\\51.9408\\-123.4896\\43\\51.04129\\-121.5365\\43\\49.24214\\-119.5834\\43\\45.38562\\-115.6771\\43\\44.1488\\-113.724\\43\\43.67801\\-111.7709\\43\\43.88451\\-109.8178\\43\\44.40993\\-107.8646\\43\\45.87786\\-105.9115\\43\\48.5519\\-103.2505\\43\\50.50502\\-102.4761\\43\\52.45815\\-100.8989\\43\\54.41127\\-100.8561\\43\\55.60885\\-102.0053\\43\\57.15471\\-105.9115\\43\\57.498\\-107.8646\\43\\56.82291\\-109.8178\\43\\57.25367\\-111.7709\\43\\60.66503\\-115.6771\\43\\62.22377\\-117.8372\\43\\63.14366\\-119.5834\\43\\64.91827\\-121.5365\\43\\66.13003\\-123.5007\\43\\67.00642\\-125.4428\\43\\67.72633\\-127.3959\\43\\68.99652\\-129.349\\43\\70.87568\\-131.3021\\43\\72.04158\\-133.2553\\43\\72.53561\\-135.2084\\43\\72.58174\\-137.1615\\43\\72.28237\\-139.1146\\43\\72.1764\\-141.0678\\43\\72.5667\\-143.0209\\43\\71.9894\\-145.1525\\43\\70.03628\\-146.5578\\43\\68.08315\\-145.6438\\43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "26"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "497"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "97.38003\\-184.7331\\43\\96.71868\\-184.0365\\43\\95.4269\\-181.6607\\43\\94.72458\\-180.1303\\43\\94.38332\\-178.1771\\43\\93.17884\\-176.224\\43\\92.71176\\-174.2709\\43\\91.39858\\-172.3178\\43\\91.97321\\-170.3646\\43\\92.85948\\-168.4115\\43\\95.34613\\-164.5053\\43\\97.38003\\-163.111\\43\\99.33315\\-163.1719\\43\\100.4515\\-164.5053\\43\\101.5116\\-166.4584\\43\\103.8579\\-170.3646\\43\\104.6788\\-172.3178\\43\\105.25\\-174.2709\\43\\106.3926\\-176.224\\43\\106.6155\\-178.1771\\43\\106.6125\\-182.0834\\43\\105.6127\\-184.0365\\43\\105.1925\\-184.5058\\43\\103.2394\\-185.4677\\43\\101.2863\\-185.8026\\43\\99.33315\\-185.559\\43"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "498"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-107.6981\\-193.6405\\45\\-109.2259\\-191.849\\45\\-109.4395\\-189.8959\\45\\-110.4094\\-187.9428\\45\\-110.9665\\-185.9896\\45\\-111.0106\\-184.0365\\45\\-110.9665\\-180.1303\\45\\-110.7768\\-178.1771\\45\\-107.9631\\-172.3178\\45\\-105.745\\-169.9131\\45\\-104.0229\\-166.4584\\45\\-99.8856\\-162.2889\\45\\-98.686\\-160.599\\45\\-97.93247\\-159.8215\\45\\-95.97935\\-158.8816\\45\\-94.02622\\-159.9799\\45\\-93.48493\\-160.599\\45\\-92.18545\\-162.5521\\45\\-91.47792\\-164.5053\\45\\-91.4838\\-166.4584\\45\\-92.63226\\-168.4115\\45\\-93.36121\\-170.3646\\45\\-93.40793\\-172.3178\\45\\-94.5423\\-174.2709\\45\\-95.32631\\-176.224\\45\\-96.41067\\-178.1771\\45\\-97.93247\\-181.5052\\45\\-99.27966\\-184.0365\\45\\-99.28329\\-185.9896\\45\\-99.53455\\-187.9428\\45\\-101.243\\-189.8959\\45\\-101.3129\\-191.849\\45\\-101.8387\\-193.3812\\45\\-102.5363\\-193.8021\\45\\-103.7918\\-194.0951\\45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "72"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "499"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-15.90123\\-211.7371\\45\\-17.85435\\-211.0866\\45\\-19.80748\\-210.2498\\45\\-21.7606\\-209.9212\\45\\-23.71373\\-208.4107\\45\\-25.66685\\-208.0061\\45\\-27.31254\\-207.474\\45\\-27.61998\\-207.2062\\45\\-29.5731\\-207.4137\\45\\-31.52623\\-208.0051\\45\\-33.47935\\-208.0134\\45\\-37.3856\\-208.2076\\45\\-41.29185\\-207.1485\\45\\-43.24498\\-206.9199\\45\\-45.1981\\-206.8247\\45\\-47.15123\\-206.3143\\45\\-48.10772\\-205.5209\\45\\-50.11579\\-203.5678\\45\\-51.54576\\-201.6146\\45\\-52.08683\\-199.6615\\45\\-53.0106\\-198.6443\\45\\-54.96373\\-198.1109\\45\\-56.91685\\-199.3631\\45\\-58.16658\\-197.7084\\45\\-57.86994\\-195.7553\\45\\-56.91685\\-194.66\\45\\-53.0106\\-192.8196\\45\\-52.14077\\-191.849\\45\\-51.66306\\-189.8959\\45\\-51.05748\\-188.1475\\45\\-50.01292\\-185.9896\\45\\-49.10435\\-184.9418\\45\\-47.15123\\-183.0195\\45\\-45.1981\\-181.5262\\45\\-33.47935\\-181.5262\\45\\-31.52623\\-182.8972\\45\\-29.5731\\-183.5192\\45\\-27.61998\\-183.7641\\45\\-25.66685\\-185.2712\\45\\-23.71373\\-186.6534\\45\\-21.7606\\-187.5268\\45\\-19.80748\\-187.3654\\45\\-15.90123\\-186.2756\\45\\-13.9481\\-186.2534\\45\\-11.99498\\-186.8806\\45\\-10.04185\\-187.3654\\45\\-6.135601\\-187.8207\\45\\-4.182476\\-188.9436\\45\\-2.229351\\-189.7738\\45\\-0.276226\\-191.0724\\45\\0.6721664\\-191.849\\45\\1.676899\\-192.9153\\45\\2.200478\\-193.8021\\45\\2.241\\-195.7553\\45\\3.669086\\-197.7084\\45\\5.583149\\-199.1158\\45\\9.489399\\-199.9518\\45\\11.44252\\-200.6623\\45\\13.00702\\-201.6146\\45\\11.44252\\-202.6576\\45\\9.489399\\-202.6633\\45\\7.536274\\-201.9816\\45\\5.583149\\-202.04\\45\\3.630024\\-202.745\\45\\2.517828\\-203.5678\\45\\2.193171\\-205.5209\\45\\-0.276226\\-207.773\\45\\-2.229351\\-208.6875\\45\\-4.182476\\-210.145\\45\\-7.093383\\-211.3803\\45\\-8.088726\\-211.7164\\45\\-10.04185\\-211.777\\45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "500"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-4.182476\\-116.1025\\45\\-5.049175\\-115.6771\\45\\-6.135601\\-114.8494\\45\\-6.810824\\-113.724\\45\\-6.791893\\-109.8178\\45\\-8.088726\\-107.8725\\45\\-10.04185\\-108.1004\\45\\-10.38365\\-107.8646\\45\\-11.4759\\-105.9115\\45\\-10.04185\\-104.8911\\45\\-8.088726\\-105.1368\\45\\-6.82617\\-103.9584\\45\\-4.95974\\-102.0053\\45\\-4.182476\\-101.3775\\45\\-2.229351\\-101.5706\\45\\-1.794662\\-102.0053\\45\\-1.444714\\-105.9115\\45\\-0.5883233\\-107.8646\\45\\-1.179212\\-109.8178\\45\\-1.629614\\-111.7709\\45\\-1.65969\\-113.724\\45\\-2.229351\\-114.6235\\45\\-3.467673\\-115.6771\\45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "204"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "501"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "21.20815\\-156.9285\\45\\19.07551\\-154.7396\\45\\18.4107\\-152.7865\\45\\17.3019\\-151.6891\\45\\16.0049\\-150.8334\\45\\15.34877\\-150.2159\\45\\13.39565\\-149.807\\45\\11.44252\\-149.5044\\45\\10.62066\\-148.8803\\45\\9.489399\\-147.749\\45\\8.286387\\-146.9271\\45\\7.536274\\-146.2277\\45\\5.583149\\-145.5889\\45\\4.344226\\-144.974\\45\\3.630024\\-144.3\\45\\1.676899\\-143.8003\\45\\-2.229351\\-143.5372\\45\\-3.676756\\-143.0209\\45\\-4.182476\\-142.5152\\45\\-6.135601\\-142.3358\\45\\-6.985572\\-143.0209\\45\\-8.088726\\-143.4261\\45\\-11.99498\\-143.7013\\45\\-13.9481\\-145.1392\\45\\-15.90123\\-146.0132\\45\\-16.81519\\-146.9271\\45\\-19.80748\\-149.0157\\45\\-21.7606\\-149.5897\\45\\-23.71373\\-149.6912\\45\\-25.66685\\-149.4817\\45\\-26.41743\\-148.8803\\45\\-28.92963\\-144.974\\45\\-30.9579\\-143.0209\\45\\-31.52623\\-142.5764\\45\\-33.47935\\-141.825\\45\\-35.43248\\-141.5648\\45\\-37.3856\\-140.223\\45\\-39.33873\\-139.5667\\45\\-41.29185\\-138.4059\\45\\-43.24498\\-137.9418\\45\\-47.15123\\-139.6718\\45\\-49.10435\\-139.9965\\45\\-51.05748\\-141.4721\\45\\-53.0106\\-141.6781\\45\\-54.96373\\-141.6781\\45\\-56.91685\\-141.5291\\45\\-57.38978\\-141.0678\\45\\-58.18987\\-139.1146\\45\\-58.40523\\-137.1615\\45\\-58.86998\\-136.3579\\45\\-60.8231\\-134.8791\\45\\-61.07596\\-135.2084\\45\\-64.99965\\-139.1146\\45\\-67.09955\\-141.0678\\45\\-68.6356\\-141.848\\45\\-70.58872\\-142.7021\\45\\-72.54185\\-143.8096\\45\\-74.49497\\-144.6208\\45\\-75.0741\\-144.974\\45\\-76.4481\\-146.144\\45\\-78.40122\\-144.9226\\45\\-79.71039\\-143.0209\\45\\-80.35435\\-142.3906\\45\\-82.30747\\-141.6781\\45\\-82.96478\\-141.0678\\45\\-83.43052\\-139.1146\\45\\-82.30747\\-137.1692\\45\\-80.93367\\-135.2084\\45\\-79.14829\\-133.2553\\45\\-78.1655\\-131.3021\\45\\-79.3591\\-129.349\\45\\-78.62853\\-127.3959\\45\\-78.40122\\-127.2076\\45\\-76.4481\\-127.0682\\45\\-73.23506\\-123.4896\\45\\-71.94047\\-121.5365\\45\\-71.11068\\-119.5834\\45\\-70.40173\\-117.6303\\45\\-69.26653\\-115.6771\\45\\-67.33904\\-113.724\\45\\-66.27608\\-111.7709\\45\\-66.00639\\-109.8178\\45\\-66.23859\\-105.9115\\45\\-65.75264\\-103.9584\\45\\-65.77203\\-102.0053\\45\\-65.2294\\-100.0521\\45\\-64.72935\\-99.55508\\45\\-62.77623\\-98.5429\\45\\-60.8231\\-97.17764\\45\\-58.86998\\-95.21644\\45\\-57.31399\\-94.19276\\45\\-56.91685\\-93.80843\\45\\-54.96373\\-93.09525\\45\\-53.67736\\-92.23963\\45\\-51.05748\\-89.77094\\45\\-49.10435\\-89.01598\\45\\-47.15123\\-90.06866\\45\\-46.95179\\-90.28651\\45\\-46.45971\\-92.23963\\45\\-45.07603\\-94.19276\\45\\-44.13579\\-96.14588\\45\\-42.34317\\-98.09901\\45\\-40.74253\\-100.0521\\45\\-40.36744\\-102.0053\\45\\-40.93503\\-103.9584\\45\\-40.93503\\-105.9115\\45\\-42.21386\\-107.8646\\45\\-43.24498\\-108.9315\\45\\-45.1981\\-110.2974\\45\\-47.15123\\-111.1605\\45\\-47.89968\\-111.7709\\45\\-51.05748\\-113.8325\\45\\-54.96373\\-115.3581\\45\\-56.91685\\-116.8557\\45\\-57.6764\\-117.6303\\45\\-58.51316\\-119.5834\\45\\-59.6921\\-121.5365\\45\\-61.35936\\-123.4896\\45\\-61.94991\\-125.4428\\45\\-61.72136\\-127.3959\\45\\-60.46628\\-129.349\\45\\-59.92792\\-133.2553\\45\\-58.86998\\-134.4258\\45\\-56.91685\\-132.2201\\45\\-56.2034\\-131.3021\\45\\-55.37523\\-129.349\\45\\-54.96373\\-128.9323\\45\\-52.65938\\-127.3959\\45\\-51.05748\\-126.4873\\45\\-49.10435\\-125.6666\\45\\-47.15123\\-124.6281\\45\\-45.1981\\-124.0438\\45\\-43.24498\\-123.9949\\45\\-41.29185\\-122.7247\\45\\-39.33873\\-122.1062\\45\\-37.3856\\-122.1062\\45\\-35.43248\\-120.9516\\45\\-33.47935\\-120.4665\\45\\-29.5731\\-120.266\\45\\-27.61998\\-120.2976\\45\\-25.66685\\-121.2305\\45\\-25.36289\\-121.5365\\45\\-24.57761\\-123.4896\\45\\-21.7606\\-126.0399\\45\\-20.01571\\-127.3959\\45\\-18.88915\\-129.349\\45\\-20.07985\\-131.3021\\45\\-19.71202\\-133.2553\\45\\-18.29298\\-135.2084\\45\\-17.85435\\-135.5445\\45\\-15.90123\\-136.0501\\45\\-11.99498\\-136.502\\45\\-8.088726\\-136.7085\\45\\-2.229351\\-136.7058\\45\\1.676899\\-136.5668\\45\\3.630024\\-136.6968\\45\\5.583149\\-136.6335\\45\\7.536274\\-136.1171\\45\\9.489399\\-135.8369\\45\\10.43471\\-135.2084\\45\\11.52329\\-133.2553\\45\\11.55103\\-131.3021\\45\\15.34877\\-126.8614\\45\\16.43666\\-125.4428\\45\\19.25502\\-122.6506\\45\\21.20815\\-122.1062\\45\\27.06752\\-122.1062\\45\\29.02065\\-122.5087\\45\\30.97377\\-123.1857\\45\\32.9269\\-123.9692\\45\\34.88002\\-123.9865\\45\\36.83315\\-124.3893\\45\\38.78627\\-124.9808\\45\\40.7394\\-125.7246\\45\\42.69252\\-126.8166\\45\\44.64565\\-128.0951\\45\\46.59877\\-128.8546\\45\\47.11578\\-129.349\\45\\48.28136\\-131.3021\\45\\48.49972\\-133.2553\\45\\48.16496\\-135.2084\\45\\48.00258\\-139.1146\\45\\47.0111\\-141.0678\\45\\46.59877\\-141.4269\\45\\44.64565\\-141.6745\\45\\42.69252\\-141.6266\\45\\40.7394\\-140.3492\\45\\38.78627\\-139.6833\\45\\34.88002\\-140.0315\\45\\32.9269\\-140.358\\45\\30.97377\\-141.8556\\45\\29.02065\\-142.5677\\45\\28.5873\\-143.0209\\45\\28.61241\\-144.974\\45\\29.81039\\-146.9271\\45\\29.02065\\-148.493\\45\\27.06752\\-147.6544\\45\\26.09096\\-148.8803\\45\\25.1144\\-149.8248\\45\\24.72746\\-150.8334\\45\\24.4935\\-152.7865\\45\\24.04409\\-154.7396\\45\\23.99256\\-156.6928\\45\\23.16127\\-157.427\\45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "502"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-215.9207\\45\\50.50502\\-215.0047\\45\\48.5519\\-214.8372\\45\\46.59877\\-214.1221\\45\\43.3231\\-211.3803\\45\\41.68402\\-209.4271\\45\\40.46703\\-207.474\\45\\39.0681\\-203.5678\\45\\38.78627\\-201.5375\\45\\36.83315\\-201.0018\\45\\36.21601\\-201.6146\\45\\35.55959\\-203.5678\\45\\34.88002\\-204.258\\45\\32.9269\\-203.8568\\45\\32.67941\\-203.5678\\45\\33.91328\\-201.6146\\45\\34.88002\\-199.8657\\45\\36.83315\\-198.0005\\45\\38.98571\\-195.7553\\45\\39.61297\\-193.8021\\45\\40.01437\\-191.849\\45\\40.7394\\-190.0319\\45\\41.91025\\-187.9428\\45\\42.69252\\-187.1804\\45\\48.5519\\-183.9843\\45\\50.50502\\-183.6571\\45\\52.45815\\-183.101\\45\\54.41127\\-183.1062\\45\\56.3644\\-183.56\\45\\58.31752\\-183.7217\\45\\60.27065\\-184.6893\\45\\62.22377\\-185.1974\\45\\64.1769\\-186.8732\\45\\68.08315\\-190.7646\\45\\69.07529\\-191.849\\45\\70.60012\\-193.8021\\45\\71.41974\\-195.7553\\45\\71.90863\\-197.7084\\45\\73.03907\\-199.6615\\45\\73.94253\\-200.5797\\45\\75.79136\\-201.6146\\45\\77.7138\\-203.5678\\45\\75.89565\\-204.5486\\45\\73.94253\\-204.4386\\45\\72.70015\\-205.5209\\45\\71.82781\\-207.474\\45\\71.23319\\-209.4271\\45\\70.03628\\-211.2649\\45\\68.08315\\-213.6367\\45\\66.13003\\-214.6722\\45\\64.1769\\-215.1918\\45\\62.22377\\-216.0287\\45\\60.27065\\-216.3782\\45\\54.41127\\-216.3782\\45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "503"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "64.1769\\-143.5634\\45\\62.22377\\-142.3225\\45\\60.27065\\-141.6537\\45\\59.28469\\-141.0678\\45\\56.3644\\-139.03\\45\\54.41127\\-137.9231\\45\\52.45815\\-137.3732\\45\\52.24645\\-137.1615\\45\\51.73831\\-135.2084\\45\\52.19906\\-131.3021\\45\\52.27115\\-127.3959\\45\\52.22243\\-125.4428\\45\\51.49609\\-123.4896\\45\\50.50502\\-121.546\\45\\49.26167\\-119.5834\\45\\45.38562\\-115.6771\\45\\44.22028\\-113.724\\45\\43.46481\\-111.7709\\45\\43.69739\\-109.8178\\45\\44.19267\\-107.8646\\45\\45.83041\\-105.9115\\45\\47.64286\\-103.9584\\45\\49.8559\\-102.0053\\45\\51.43245\\-100.0521\\45\\52.45815\\-99.13592\\45\\54.41127\\-99.95739\\45\\56.0475\\-102.0053\\45\\56.82637\\-103.9584\\45\\57.35518\\-105.9115\\45\\57.59136\\-107.8646\\45\\57.45612\\-109.8178\\45\\58.23676\\-111.7709\\45\\59.45841\\-113.724\\45\\60.99567\\-115.6771\\45\\62.78886\\-117.6303\\45\\63.48785\\-119.5834\\45\\65.13301\\-121.5365\\45\\67.3111\\-123.4896\\45\\67.3814\\-125.4428\\45\\68.08315\\-126.7986\\45\\69.92776\\-129.349\\45\\71.45118\\-131.3021\\45\\72.01211\\-133.2553\\45\\71.7656\\-135.2084\\45\\71.73031\\-141.0678\\45\\71.59226\\-143.0209\\45\\70.03628\\-144.6645\\45\\68.08315\\-143.8329\\45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "29"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "504"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "103.2394\\-186.801\\45\\101.2863\\-185.6641\\45\\99.33315\\-184.7233\\45\\98.68011\\-184.0365\\45\\97.38003\\-181.6087\\45\\96.73096\\-180.1303\\45\\96.69461\\-178.1771\\45\\95.81587\\-176.224\\45\\94.78951\\-174.2709\\45\\94.66057\\-172.3178\\45\\93.94154\\-170.3646\\45\\93.73463\\-168.4115\\45\\94.4656\\-166.4584\\45\\96.58867\\-162.5521\\45\\97.38003\\-161.6638\\45\\99.33315\\-161.1647\\45\\100.6795\\-162.5521\\45\\101.2863\\-163.5195\\45\\103.2394\\-166.2719\\45\\104.6872\\-168.4115\\45\\105.3773\\-170.3646\\45\\106.6488\\-172.3178\\45\\106.7991\\-174.2709\\45\\107.783\\-176.224\\45\\108.3724\\-178.1771\\45\\108.5686\\-180.1303\\45\\108.1032\\-184.0365\\45\\106.852\\-185.9896\\45\\105.1925\\-187.1037\\45"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "33"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "505"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-107.6981\\-193.4594\\47\\-109.2771\\-191.849\\47\\-110.3932\\-189.8959\\47\\-111.8693\\-187.9428\\47\\-112.7316\\-185.9896\\47\\-112.9007\\-184.0365\\47\\-112.8809\\-180.1303\\47\\-112.2886\\-178.1771\\47\\-109.402\\-172.3178\\47\\-108.1002\\-170.3646\\47\\-106.6366\\-168.4115\\47\\-104.1508\\-164.5053\\47\\-97.93247\\-158.3658\\47\\-95.97935\\-157.8775\\47\\-95.13842\\-158.6459\\47\\-94.00352\\-160.599\\47\\-93.88979\\-162.5521\\47\\-93.42306\\-164.5053\\47\\-93.40008\\-166.4584\\47\\-94.53714\\-168.4115\\47\\-95.18623\\-170.3646\\47\\-95.32639\\-172.3178\\47\\-96.53851\\-174.2709\\47\\-97.30341\\-176.224\\47\\-97.93247\\-177.4594\\47\\-98.60181\\-178.1771\\47\\-99.2599\\-180.1303\\47\\-101.2749\\-184.0365\\47\\-101.2865\\-185.9896\\47\\-101.8387\\-187.3539\\47\\-103.2745\\-189.8959\\47\\-103.7384\\-191.849\\47\\-105.745\\-193.123\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "62"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "506"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-76.4481\\-143.8496\\47\\-78.40122\\-142.6997\\47\\-80.35435\\-140.7509\\47\\-82.30747\\-140.0478\\47\\-83.33669\\-139.1146\\47\\-83.18783\\-137.1615\\47\\-81.35689\\-135.2084\\47\\-79.37778\\-133.2553\\47\\-78.46781\\-131.3021\\47\\-79.30908\\-129.349\\47\\-78.40122\\-128.103\\47\\-76.4481\\-127.3283\\47\\-75.15118\\-125.4428\\47\\-73.39697\\-123.4896\\47\\-72.54185\\-121.5926\\47\\-71.25157\\-119.5834\\47\\-70.58872\\-117.964\\47\\-69.26653\\-115.6771\\47\\-67.30135\\-113.724\\47\\-66.28574\\-111.7709\\47\\-66.2571\\-107.8646\\47\\-66.04043\\-105.9115\\47\\-65.32206\\-103.9584\\47\\-64.99021\\-102.0053\\47\\-64.55496\\-100.0521\\47\\-62.77623\\-98.87749\\47\\-60.8231\\-97.33577\\47\\-58.86998\\-95.40253\\47\\-56.91685\\-94.81421\\47\\-53.59175\\-92.23963\\47\\-51.05748\\-90.05299\\47\\-49.10435\\-89.25027\\47\\-47.43896\\-90.28651\\47\\-46.71654\\-92.23963\\47\\-46.20884\\-94.19276\\47\\-43.24498\\-98.18665\\47\\-42.29395\\-100.0521\\47\\-41.53416\\-102.0053\\47\\-42.42813\\-103.9584\\47\\-42.55833\\-105.9115\\47\\-43.42324\\-107.8646\\47\\-45.44624\\-109.8178\\47\\-49.10435\\-112.2846\\47\\-51.05748\\-112.9269\\47\\-53.0106\\-114.3164\\47\\-54.96373\\-114.9396\\47\\-57.70455\\-117.6303\\47\\-58.59944\\-119.5834\\47\\-59.69734\\-121.5365\\47\\-61.44702\\-123.4896\\47\\-62.08011\\-125.4428\\47\\-61.88967\\-127.3959\\47\\-60.53013\\-129.349\\47\\-60.43616\\-131.3021\\47\\-61.40904\\-133.2553\\47\\-62.77623\\-135.1693\\47\\-65.05196\\-137.1615\\47\\-67.05083\\-139.1146\\47\\-68.6356\\-140.2509\\47\\-70.58872\\-141.5255\\47\\-72.54185\\-142.1964\\47\\-74.49497\\-143.395\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "60"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "507"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-25.66685\\-145.6612\\47\\-26.66442\\-144.974\\47\\-29.5731\\-142.1391\\47\\-31.52623\\-141.5199\\47\\-33.47935\\-140.3341\\47\\-35.43248\\-139.856\\47\\-37.3856\\-138.687\\47\\-39.33873\\-137.9929\\47\\-41.29185\\-137.6411\\47\\-43.24498\\-136.5313\\47\\-45.1981\\-136.9453\\47\\-47.15123\\-137.6873\\47\\-49.10435\\-137.7813\\47\\-51.05748\\-139.4833\\47\\-53.0106\\-139.7098\\47\\-54.96373\\-139.7017\\47\\-56.91685\\-139.1685\\47\\-57.85025\\-137.1615\\47\\-58.34553\\-135.2084\\47\\-56.91685\\-132.4669\\47\\-56.20071\\-131.3021\\47\\-54.4022\\-129.349\\47\\-53.0106\\-128.4512\\47\\-51.05748\\-126.6999\\47\\-49.10435\\-125.1498\\47\\-47.15123\\-124.3034\\47\\-45.1981\\-123.6766\\47\\-43.24498\\-123.9516\\47\\-41.29185\\-122.7247\\47\\-39.33873\\-122.1062\\47\\-37.3856\\-122.1062\\47\\-35.43248\\-121.9726\\47\\-33.47935\\-121.266\\47\\-29.5731\\-120.3599\\47\\-27.61998\\-120.266\\47\\-25.66685\\-120.8768\\47\\-25.0141\\-121.5365\\47\\-24.15652\\-123.4896\\47\\-22.59674\\-125.4428\\47\\-21.7606\\-126.1161\\47\\-19.80748\\-126.8154\\47\\-19.21038\\-127.3959\\47\\-18.71789\\-129.349\\47\\-20.5833\\-131.3021\\47\\-21.27232\\-133.2553\\47\\-20.57225\\-135.2084\\47\\-19.80748\\-135.9216\\47\\-17.85435\\-136.5551\\47\\-15.90123\\-136.8024\\47\\-14.92466\\-137.1615\\47\\-13.9481\\-137.8752\\47\\-11.99498\\-138.3641\\47\\-10.04185\\-139.0508\\47\\-10.04185\\-139.1711\\47\\-11.99498\\-140.1585\\47\\-12.90419\\-141.0678\\47\\-13.9481\\-141.6354\\47\\-17.85435\\-141.6941\\47\\-21.7606\\-145.4753\\47\\-23.71373\\-145.7345\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "73"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "508"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-17.85435\\-209.8483\\47\\-19.80748\\-208.3471\\47\\-21.7606\\-208.028\\47\\-23.71373\\-206.3036\\47\\-25.2791\\-205.5209\\47\\-25.66685\\-205.1273\\47\\-27.61998\\-204.0977\\47\\-29.5731\\-204.635\\47\\-31.52623\\-206.083\\47\\-33.47935\\-206.1557\\47\\-37.3856\\-206.8891\\47\\-41.29185\\-206.8213\\47\\-45.1981\\-206.1414\\47\\-46.02387\\-205.5209\\47\\-48.10716\\-203.5678\\47\\-49.80493\\-201.6146\\47\\-50.89785\\-199.6615\\47\\-53.0106\\-198.2965\\47\\-54.96373\\-198.9807\\47\\-55.6643\\-199.6615\\47\\-56.94449\\-201.6146\\47\\-57.78545\\-199.6615\\47\\-57.11629\\-195.7553\\47\\-54.96373\\-194.0666\\47\\-53.0106\\-193.4029\\47\\-51.05748\\-191.9711\\47\\-49.89523\\-189.8959\\47\\-49.41447\\-187.9428\\47\\-47.98944\\-185.9896\\47\\-45.96725\\-184.0365\\47\\-45.1981\\-183.5161\\47\\-33.47935\\-183.5075\\47\\-31.52623\\-184.8562\\47\\-29.5731\\-185.5102\\47\\-27.73353\\-185.9896\\47\\-25.66685\\-187.4757\\47\\-24.79249\\-187.9428\\47\\-23.71373\\-188.8705\\47\\-21.7606\\-189.4721\\47\\-19.80748\\-188.8771\\47\\-17.85435\\-187.719\\47\\-15.90123\\-187.5509\\47\\-13.9481\\-187.5509\\47\\-11.99498\\-187.8762\\47\\-10.04185\\-189.1245\\47\\-8.088726\\-189.4721\\47\\-6.135601\\-189.5321\\47\\-5.456771\\-189.8959\\47\\-4.182476\\-190.8817\\47\\-2.473492\\-191.849\\47\\-2.229351\\-192.1106\\47\\-1.566927\\-193.8021\\47\\-0.1243163\\-195.7553\\47\\0.7170299\\-197.7084\\47\\1.676899\\-198.4059\\47\\3.630024\\-199.1761\\47\\7.536274\\-200.1392\\47\\9.489399\\-200.8574\\47\\10.43933\\-201.6146\\47\\9.489399\\-203.1074\\47\\7.536274\\-202.3037\\47\\5.583149\\-202.0306\\47\\3.630024\\-201.9917\\47\\1.676899\\-202.175\\47\\-0.276226\\-202.5912\\47\\-1.496929\\-203.5678\\47\\-1.790516\\-205.5209\\47\\-2.229351\\-206.3366\\47\\-3.257858\\-207.474\\47\\-6.135601\\-209.0681\\47\\-6.556533\\-209.4271\\47\\-8.088726\\-209.9468\\47\\-15.90123\\-209.9468\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "65"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "509"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "23.16127\\-152.901\\47\\20.96401\\-150.8334\\47\\19.05063\\-148.8803\\47\\18.21407\\-146.9271\\47\\17.3019\\-146.0048\\47\\15.34877\\-145.4073\\47\\13.39565\\-145.6051\\47\\11.44252\\-145.1953\\47\\9.489399\\-143.4354\\47\\7.536274\\-141.8474\\47\\5.583149\\-141.4921\\47\\5.17024\\-141.0678\\47\\5.078031\\-139.1146\\47\\7.536274\\-136.797\\47\\9.489399\\-136.3545\\47\\11.44252\\-135.6573\\47\\11.96275\\-135.2084\\47\\12.22988\\-133.2553\\47\\11.67825\\-131.3021\\47\\12.83855\\-129.349\\47\\15.34877\\-126.7548\\47\\16.47439\\-125.4428\\47\\19.25502\\-122.6758\\47\\21.20815\\-122.2751\\47\\23.16127\\-122.3167\\47\\27.06752\\-122.1062\\47\\29.02065\\-122.3807\\47\\30.97377\\-122.8156\\47\\32.9269\\-123.7254\\47\\38.78627\\-124.4569\\47\\40.7394\\-125.0558\\47\\42.69252\\-127.4543\\47\\44.64565\\-129.11\\47\\46.59877\\-129.7508\\47\\48.5519\\-130.6532\\47\\49.1728\\-131.3021\\47\\49.66733\\-133.2553\\47\\49.50647\\-135.2084\\47\\48.96784\\-137.1615\\47\\47.3033\\-139.1146\\47\\46.59877\\-139.6948\\47\\42.69252\\-139.6819\\47\\41.23519\\-139.1146\\47\\40.7394\\-138.6791\\47\\38.78627\\-137.8648\\47\\36.83315\\-138.3654\\47\\34.88002\\-139.289\\47\\32.9269\\-139.9603\\47\\31.43636\\-141.0678\\47\\30.97377\\-141.7749\\47\\29.02065\\-142.5728\\47\\28.74665\\-143.0209\\47\\29.02065\\-143.3073\\47\\30.97377\\-143.8179\\47\\31.8826\\-144.974\\47\\31.82555\\-146.9271\\47\\30.77292\\-148.8803\\47\\29.02065\\-150.608\\47\\26.429\\-148.8803\\47\\25.89806\\-146.9271\\47\\25.1144\\-146.1133\\47\\24.42444\\-146.9271\\47\\24.19062\\-148.8803\\47\\24.10265\\-150.8334\\47\\23.30924\\-152.7865\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "510"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-216.2108\\47\\50.50502\\-215.0047\\47\\48.5519\\-214.4702\\47\\46.59877\\-213.2095\\47\\44.64565\\-212.1013\\47\\43.93287\\-211.3803\\47\\42.3334\\-209.4271\\47\\41.62048\\-207.474\\47\\40.16655\\-205.5209\\47\\39.59429\\-201.6146\\47\\38.78627\\-200.7634\\47\\36.83315\\-201.7928\\47\\34.88002\\-204.0038\\47\\34.26643\\-203.5678\\47\\34.40636\\-201.6146\\47\\35.65787\\-199.6615\\47\\39.5113\\-195.7553\\47\\40.0397\\-193.8021\\47\\40.46886\\-191.849\\47\\41.5119\\-189.8959\\47\\42.69252\\-188.394\\47\\44.64565\\-186.7758\\47\\46.59877\\-185.0266\\47\\48.5519\\-183.9843\\47\\50.50502\\-183.1549\\47\\52.45815\\-182.6937\\47\\54.41127\\-182.6937\\47\\58.31752\\-183.168\\47\\60.27065\\-184.0741\\47\\62.22377\\-184.6754\\47\\64.1769\\-185.6078\\47\\68.42428\\-189.8959\\47\\69.62734\\-191.849\\47\\71.05507\\-193.8021\\47\\72.76297\\-197.7084\\47\\73.46886\\-199.6615\\47\\73.94253\\-200.2347\\47\\75.90582\\-201.6146\\47\\77.84878\\-202.7451\\47\\78.57467\\-203.5678\\47\\77.84878\\-204.3219\\47\\75.89565\\-204.461\\47\\73.94253\\-204.8491\\47\\73.40123\\-205.5209\\47\\73.08862\\-207.474\\47\\72.60586\\-209.4271\\47\\70.9954\\-211.3803\\47\\69.51961\\-213.3334\\47\\68.08315\\-214.6689\\47\\66.13003\\-215.1644\\47\\64.1769\\-216.0303\\47\\62.22377\\-216.6903\\47\\60.27065\\-216.9467\\47\\54.41127\\-216.9578\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "511"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "70.03628\\-143.473\\47\\68.08315\\-142.2359\\47\\66.13003\\-141.7169\\47\\64.1769\\-141.7014\\47\\62.61153\\-141.0678\\47\\58.62204\\-139.1146\\47\\55.16314\\-137.1615\\47\\54.41127\\-136.5632\\47\\53.12011\\-135.2084\\47\\52.40729\\-133.2553\\47\\52.24551\\-131.3021\\47\\52.27115\\-127.3959\\47\\52.21066\\-125.4428\\47\\51.42149\\-123.4896\\47\\50.50502\\-121.7202\\47\\49.26167\\-119.5834\\47\\47.33366\\-117.6303\\47\\45.52406\\-115.6771\\47\\43.41724\\-111.7709\\47\\42.95518\\-109.8178\\47\\43.70257\\-107.8646\\47\\45.556\\-105.9115\\47\\46.89243\\-103.9584\\47\\49.26977\\-102.0053\\47\\49.97402\\-100.0521\\47\\50.50502\\-99.13857\\47\\52.45815\\-98.405\\47\\54.41127\\-99.36954\\47\\55.14236\\-100.0521\\47\\56.1406\\-102.0053\\47\\56.60012\\-103.9584\\47\\57.27555\\-107.8646\\47\\58.02456\\-109.8178\\47\\59.93456\\-113.724\\47\\61.01999\\-115.6771\\47\\62.99649\\-117.6303\\47\\64.3886\\-119.5834\\47\\65.405\\-121.5365\\47\\67.13726\\-123.4896\\47\\67.55302\\-125.4428\\47\\68.79072\\-127.3959\\47\\70.90366\\-129.349\\47\\72.56421\\-131.3021\\47\\72.79778\\-133.2553\\47\\72.01211\\-135.2084\\47\\71.69643\\-137.1615\\47\\71.69643\\-139.1146\\47\\71.55471\\-141.0678\\47\\70.62694\\-143.0209\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "512"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "103.2394\\-186.8877\\47\\102.2004\\-185.9896\\47\\100.6372\\-184.0365\\47\\98.68015\\-180.1303\\47\\98.65614\\-178.1771\\47\\97.84389\\-176.224\\47\\96.7155\\-174.2709\\47\\96.5698\\-172.3178\\47\\95.89539\\-170.3646\\47\\94.84547\\-168.4115\\47\\95.29047\\-166.4584\\47\\95.79388\\-162.5521\\47\\96.83815\\-160.599\\47\\97.38003\\-160.0571\\47\\99.33315\\-159.2952\\47\\101.2863\\-160.4272\\47\\102.6407\\-162.5521\\47\\103.2394\\-164.0099\\47\\105.1925\\-166.1021\\47\\106.6369\\-168.4115\\47\\107.1457\\-169.9287\\47\\108.5698\\-172.3178\\47\\108.6164\\-174.2709\\47\\108.8379\\-176.224\\47\\109.7439\\-178.1771\\47\\110.1784\\-180.1303\\47\\109.7518\\-182.0834\\47\\109.0322\\-184.0365\\47\\108.8264\\-185.9896\\47\\107.1457\\-187.5836\\47\\105.1925\\-187.4808\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "513"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "105.1925\\-215.8586\\47\\104.6238\\-215.2865\\47\\103.8021\\-213.3334\\47\\105.1925\\-212.1985\\47\\107.1457\\-213.0497\\47\\107.4638\\-213.3334\\47\\108.4325\\-215.2865\\47\\107.1457\\-216.7147\\47"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "514"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-107.6981\\-192.7657\\49\\-109.6512\\-191.517\\49\\-111.7427\\-189.8959\\49\\-113.3151\\-187.9428\\49\\-114.2883\\-185.9896\\49\\-114.8534\\-184.0365\\49\\-114.8699\\-180.1303\\49\\-114.0833\\-178.1771\\49\\-113.5575\\-177.4836\\49\\-112.1609\\-174.2709\\49\\-111.6043\\-173.4984\\49\\-110.235\\-170.3646\\49\\-109.6512\\-169.6187\\49\\-109.0304\\-168.4115\\49\\-107.5059\\-166.4584\\49\\-106.1647\\-164.5053\\49\\-99.8856\\-158.2404\\49\\-97.93247\\-157.204\\49\\-95.97935\\-157.7282\\49\\-95.07976\\-158.6459\\49\\-94.74091\\-160.599\\49\\-95.0753\\-162.5521\\49\\-95.35411\\-166.4584\\49\\-95.80115\\-168.4115\\49\\-97.03729\\-170.3646\\49\\-97.34274\\-172.3178\\49\\-97.93247\\-173.3738\\49\\-98.7197\\-174.2709\\49\\-99.70734\\-176.224\\49\\-101.2202\\-178.1771\\49\\-101.2921\\-180.1303\\49\\-102.3393\\-182.0834\\49\\-103.2723\\-184.0365\\49\\-103.2941\\-185.9896\\49\\-105.0553\\-189.8959\\49\\-105.4688\\-191.849\\49\\-105.745\\-192.1855\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "515"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-78.40122\\-142.1184\\49\\-80.35435\\-140.2002\\49\\-82.30747\\-139.7907\\49\\-83.06953\\-139.1146\\49\\-83.51861\\-137.1615\\49\\-82.40513\\-135.2084\\49\\-80.35435\\-133.1459\\49\\-79.01884\\-131.3021\\49\\-79.27824\\-129.349\\49\\-78.88211\\-127.3959\\49\\-78.40122\\-126.9941\\49\\-76.4481\\-126.8121\\49\\-75.18461\\-125.4428\\49\\-73.87556\\-123.4896\\49\\-73.0387\\-121.5365\\49\\-71.2617\\-119.5834\\49\\-70.58872\\-117.9598\\49\\-69.26653\\-115.6771\\49\\-67.51719\\-113.724\\49\\-66.45868\\-111.7709\\49\\-66.06252\\-107.8646\\49\\-65.53515\\-105.9115\\49\\-64.63461\\-103.9584\\49\\-64.0873\\-100.0521\\49\\-59.31657\\-96.14588\\49\\-58.86998\\-95.69655\\49\\-56.91685\\-95.10168\\49\\-55.67448\\-94.19276\\49\\-53.0106\\-91.67579\\49\\-51.05748\\-90.84844\\49\\-49.10435\\-90.53241\\49\\-47.32011\\-92.23963\\49\\-46.06306\\-96.14588\\49\\-44.70061\\-98.09901\\49\\-43.94741\\-100.0521\\49\\-42.55888\\-102.0053\\49\\-42.97444\\-103.9584\\49\\-43.85459\\-105.9115\\49\\-44.62002\\-107.8646\\49\\-46.28237\\-109.8178\\49\\-47.15123\\-110.4635\\49\\-49.4586\\-111.7709\\49\\-53.0106\\-113.4139\\49\\-54.96373\\-114.9295\\49\\-57.59642\\-117.6303\\49\\-58.2952\\-119.5834\\49\\-59.56609\\-121.5365\\49\\-60.45928\\-123.4896\\49\\-61.67207\\-125.4428\\49\\-61.75249\\-127.3959\\49\\-60.53013\\-129.349\\49\\-60.78554\\-131.3021\\49\\-61.85934\\-133.2553\\49\\-62.77623\\-134.1983\\49\\-64.72935\\-135.7954\\49\\-66.68247\\-137.0631\\49\\-68.6356\\-138.7416\\49\\-70.58872\\-139.8842\\49\\-72.54185\\-140.7916\\49\\-74.49497\\-141.8921\\49\\-76.4481\\-142.3896\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "516"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-33.47935\\-139.5426\\49\\-35.43248\\-138.2376\\49\\-37.3856\\-137.5869\\49\\-39.33873\\-137.3485\\49\\-41.29185\\-136.4411\\49\\-43.24498\\-135.7889\\49\\-45.1981\\-135.5722\\49\\-47.15123\\-135.722\\49\\-49.10435\\-135.7405\\49\\-51.63068\\-137.1615\\49\\-53.0106\\-137.5933\\49\\-54.96373\\-137.5933\\49\\-55.82152\\-137.1615\\49\\-56.91685\\-135.895\\49\\-57.21785\\-135.2084\\49\\-55.58171\\-133.2553\\49\\-54.17079\\-131.3021\\49\\-53.0106\\-129.5161\\49\\-51.05748\\-127.2672\\49\\-47.15123\\-124.2394\\49\\-45.1981\\-123.0457\\49\\-43.24498\\-123.9516\\49\\-41.29185\\-122.6816\\49\\-39.33873\\-121.862\\49\\-37.3856\\-122.2563\\49\\-35.43248\\-122.8481\\49\\-33.47935\\-123.2472\\49\\-31.52623\\-122.7229\\49\\-30.62337\\-121.5365\\49\\-29.5731\\-120.7015\\49\\-27.61998\\-119.9993\\49\\-25.66685\\-120.6642\\49\\-24.90942\\-121.5365\\49\\-21.99189\\-125.4428\\49\\-19.80748\\-126.6269\\49\\-18.94704\\-127.3959\\49\\-18.56223\\-129.349\\49\\-19.80748\\-130.5027\\49\\-21.7606\\-131.9874\\49\\-23.71373\\-132.4356\\49\\-25.62616\\-133.2553\\49\\-26.60585\\-135.2084\\49\\-26.03794\\-137.1615\\49\\-27.61998\\-138.2451\\49\\-28.6118\\-139.1146\\49\\-29.5731\\-139.5573\\49\\-31.52623\\-139.6736\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "73"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "517"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-17.85435\\-207.8735\\49\\-19.80748\\-206.1795\\49\\-21.07555\\-205.5209\\49\\-23.71373\\-202.9727\\49\\-24.61908\\-201.6146\\49\\-25.66685\\-200.891\\49\\-27.61998\\-201.5501\\49\\-29.5731\\-202.4986\\49\\-30.81334\\-203.5678\\49\\-31.52623\\-204.0218\\49\\-33.47935\\-204.3502\\49\\-35.43248\\-205.3678\\49\\-37.3856\\-206.0179\\49\\-41.29185\\-206.0092\\49\\-42.73926\\-205.5209\\49\\-45.1981\\-204.1915\\49\\-45.9654\\-203.5678\\49\\-47.54883\\-201.6146\\49\\-48.61103\\-199.6615\\49\\-49.10435\\-199.266\\49\\-51.05748\\-198.3201\\49\\-53.0106\\-198.7026\\49\\-54.96373\\-200.5094\\49\\-56.92615\\-201.6146\\49\\-57.61212\\-199.6615\\49\\-56.43499\\-197.7084\\49\\-55.74857\\-195.7553\\49\\-54.96373\\-194.9136\\49\\-53.0106\\-194.2235\\49\\-51.05748\\-194.3934\\49\\-49.89862\\-193.8021\\49\\-47.70438\\-189.8959\\49\\-47.15123\\-188.7495\\49\\-45.1981\\-186.4779\\49\\-44.52791\\-185.9896\\49\\-43.24498\\-185.562\\49\\-33.47935\\-185.5521\\49\\-31.52623\\-186.8469\\49\\-29.5731\\-187.5508\\49\\-28.87892\\-187.9428\\49\\-27.61998\\-188.9672\\49\\-26.06708\\-189.8959\\49\\-24.64322\\-191.849\\49\\-23.71373\\-192.7257\\49\\-21.7606\\-191.8407\\49\\-19.80748\\-190.8156\\49\\-17.85435\\-189.5959\\49\\-13.9481\\-189.5704\\49\\-12.67314\\-189.8959\\49\\-10.04185\\-191.385\\49\\-8.088726\\-191.5096\\49\\-6.949403\\-191.849\\49\\-6.135601\\-192.3517\\49\\-4.618173\\-193.8021\\49\\-4.182476\\-194.3801\\49\\-3.704584\\-195.7553\\49\\-2.075633\\-197.7084\\49\\-0.276226\\-198.7646\\49\\1.676899\\-199.2404\\49\\3.630024\\-200.0097\\49\\5.583149\\-200.3442\\49\\7.447495\\-201.6146\\49\\5.583149\\-202.3623\\49\\3.630024\\-202.5238\\49\\1.676899\\-201.9507\\49\\-0.276226\\-201.6522\\49\\-4.182476\\-202.5257\\49\\-5.643147\\-203.5678\\49\\-7.312952\\-205.5209\\49\\-8.088726\\-206.8179\\49\\-8.777122\\-207.474\\49\\-10.04185\\-207.9502\\49\\-15.90123\\-207.9502\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "58"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "518"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "29.02065\\-151.0925\\49\\27.06752\\-149.6321\\49\\26.50701\\-148.8803\\49\\25.81283\\-146.9271\\49\\25.1144\\-145.5303\\49\\23.16127\\-144.795\\49\\21.20815\\-145.5115\\49\\20.72997\\-144.974\\49\\20.54343\\-143.0209\\49\\19.25502\\-141.7325\\49\\17.3019\\-141.5285\\49\\15.34877\\-141.8236\\49\\13.39565\\-141.5998\\49\\12.72479\\-141.0678\\49\\10.79391\\-139.1146\\49\\11.89557\\-137.1615\\49\\13.39565\\-136.0675\\49\\15.23852\\-135.2084\\49\\14.0159\\-133.2553\\49\\13.39565\\-132.9153\\49\\11.87276\\-131.3021\\49\\12.3599\\-129.349\\49\\16.24631\\-125.4428\\49\\19.25502\\-122.8438\\49\\23.16127\\-122.907\\49\\25.1144\\-122.2585\\49\\27.06752\\-122.1062\\49\\29.02065\\-122.1289\\49\\30.97377\\-122.4777\\49\\32.9269\\-123.1431\\49\\34.88002\\-123.9692\\49\\36.83315\\-124.0033\\49\\38.78627\\-124.1872\\49\\40.7394\\-125.0962\\49\\41.09045\\-125.4428\\49\\42.02181\\-127.3959\\49\\43.44625\\-129.349\\49\\44.64565\\-130.2426\\49\\48.5519\\-130.3089\\49\\49.5395\\-131.3021\\49\\49.34536\\-133.2553\\49\\48.5519\\-135.6605\\49\\47.48539\\-137.1615\\49\\46.59877\\-137.6137\\49\\44.64565\\-137.4538\\49\\42.69252\\-136.0774\\49\\40.7394\\-135.8187\\49\\38.78627\\-136.3126\\49\\36.83315\\-137.5285\\49\\34.88002\\-137.8435\\49\\32.9269\\-138.5803\\49\\32.38228\\-139.1146\\49\\31.43105\\-141.0678\\49\\32.34472\\-143.0209\\49\\32.7399\\-144.974\\49\\32.52768\\-146.9271\\49\\31.76458\\-148.8803\\49\\30.97377\\-149.7675\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "519"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-216.0486\\49\\50.50502\\-214.8252\\49\\48.5519\\-214.1224\\49\\46.59877\\-212.5212\\49\\44.64565\\-210.7497\\49\\41.76899\\-207.474\\49\\41.03633\\-205.5209\\49\\40.77696\\-203.5678\\49\\40.06931\\-201.6146\\49\\38.78627\\-200.5473\\49\\36.83315\\-202.3244\\49\\35.26843\\-201.6146\\49\\35.8815\\-199.6615\\49\\36.83315\\-198.6423\\49\\39.72965\\-195.7553\\49\\40.46886\\-193.8021\\49\\40.5277\\-191.849\\49\\41.68372\\-189.8959\\49\\46.59877\\-185.0312\\49\\48.5519\\-183.9699\\49\\50.50502\\-183.1204\\49\\52.45815\\-182.5019\\49\\54.41127\\-182.2704\\49\\56.3644\\-182.3652\\49\\60.27065\\-183.9843\\49\\62.22377\\-184.0441\\49\\64.1769\\-185.0872\\49\\66.13003\\-187.0563\\49\\67.12793\\-187.9428\\49\\69.08541\\-189.8959\\49\\70.6245\\-191.849\\49\\71.62558\\-193.8021\\49\\72.75146\\-195.7553\\49\\73.37891\\-197.7084\\49\\73.71873\\-199.6615\\49\\75.89565\\-201.607\\49\\77.84878\\-202.1121\\49\\79.05422\\-203.5678\\49\\77.84878\\-204.5784\\49\\75.89565\\-204.2341\\49\\73.96542\\-205.5209\\49\\73.35217\\-209.4271\\49\\72.02847\\-211.3803\\49\\70.03628\\-213.7981\\49\\68.08315\\-214.9717\\49\\64.1769\\-216.7003\\49\\62.22377\\-216.9805\\49\\56.3644\\-217.0158\\49\\54.41127\\-216.8379\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "520"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "70.03628\\-141.6766\\49\\68.08315\\-140.7073\\49\\66.13003\\-139.8948\\49\\64.1769\\-139.7151\\49\\62.22377\\-139.6343\\49\\60.27065\\-138.3806\\49\\58.31752\\-137.6228\\49\\56.3644\\-136.4859\\49\\54.41127\\-134.9059\\49\\53.20008\\-133.2553\\49\\52.46578\\-131.3021\\49\\51.9911\\-129.349\\49\\51.88334\\-127.3959\\49\\51.87467\\-125.4428\\49\\51.58384\\-123.4896\\49\\50.79799\\-121.5365\\49\\49.26167\\-119.5834\\49\\47.33366\\-117.6303\\49\\45.89625\\-115.6771\\49\\45.12798\\-113.724\\49\\43.20492\\-111.7709\\49\\41.46468\\-109.8178\\49\\42.12882\\-107.8646\\49\\44.00773\\-105.9115\\49\\45.55392\\-103.9584\\49\\47.64268\\-102.0053\\49\\48.91384\\-100.0521\\49\\50.50502\\-98.80192\\49\\52.45815\\-98.65313\\49\\54.41127\\-99.22073\\49\\55.37761\\-100.0521\\49\\55.90664\\-102.0053\\49\\56.25589\\-103.9584\\49\\56.34169\\-105.9115\\49\\56.95144\\-107.8646\\49\\57.80261\\-109.8178\\49\\58.98432\\-111.7709\\49\\61.01999\\-115.6771\\49\\63.00219\\-117.6303\\49\\64.35129\\-119.5834\\49\\65.24184\\-121.5365\\49\\66.8753\\-123.4896\\49\\67.73663\\-125.4428\\49\\68.08315\\-125.9355\\49\\69.55704\\-127.3959\\49\\71.9894\\-129.3881\\49\\73.31861\\-131.3021\\49\\73.304\\-133.2553\\49\\71.70757\\-137.1615\\49\\71.5428\\-139.1146\\49\\70.75101\\-141.0678\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "7"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "521"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "105.1925\\-216.2336\\49\\104.295\\-215.2865\\49\\104.3399\\-213.3334\\49\\105.1925\\-212.7158\\49\\107.1457\\-213.7725\\49\\108.225\\-215.2865\\49\\107.1457\\-216.6964\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "31"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "522"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "107.1457\\-188.964\\49\\106.0493\\-187.9428\\49\\103.6543\\-185.9896\\49\\101.7176\\-182.0834\\49\\100.6615\\-180.1303\\49\\100.5017\\-178.1771\\49\\99.75632\\-176.224\\49\\98.68417\\-174.2709\\49\\98.22166\\-172.3178\\49\\97.09241\\-170.3646\\49\\96.61505\\-168.4115\\49\\96.46631\\-166.4584\\49\\96.19187\\-164.5053\\49\\95.76741\\-162.5521\\49\\96.65315\\-160.599\\49\\99.33315\\-157.9074\\49\\101.2863\\-158.1698\\49\\103.2394\\-160.1416\\49\\104.8143\\-162.5521\\49\\106.5421\\-164.5053\\49\\107.1457\\-165.8424\\49\\107.628\\-166.4584\\49\\108.6041\\-168.4115\\49\\109.0988\\-169.686\\49\\109.5698\\-170.3646\\49\\110.5198\\-172.3178\\49\\110.57\\-176.224\\49\\111.1062\\-180.1303\\49\\110.5829\\-184.0365\\49\\110.403\\-187.9428\\49\\109.0988\\-189.6666\\49"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "523"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.6043\\-190.8619\\51\\-113.5575\\-189.3638\\51\\-114.7913\\-187.9428\\51\\-115.5106\\-186.3195\\51\\-116.6836\\-184.0365\\51\\-116.8613\\-182.0834\\51\\-116.8701\\-180.1303\\51\\-116.7429\\-178.1771\\51\\-115.5106\\-176.1155\\51\\-114.8302\\-174.2709\\51\\-113.5575\\-172.1783\\51\\-112.8577\\-170.3646\\51\\-111.6043\\-168.4234\\51\\-110.1771\\-166.4584\\51\\-108.2433\\-164.5053\\51\\-100.3447\\-156.6928\\51\\-99.8856\\-156.3064\\51\\-97.93247\\-155.9773\\51\\-97.14082\\-156.6928\\51\\-95.44308\\-158.6459\\51\\-95.32306\\-160.599\\51\\-95.91277\\-162.5521\\51\\-96.88402\\-164.5053\\51\\-97.32611\\-166.4584\\51\\-97.93247\\-168.1764\\51\\-99.2468\\-170.3646\\51\\-99.8856\\-172.2527\\51\\-102.4766\\-176.224\\51\\-103.2838\\-178.1771\\51\\-103.3102\\-180.1303\\51\\-104.3714\\-182.0834\\51\\-105.2533\\-184.0365\\51\\-105.277\\-185.9896\\51\\-105.4688\\-187.9428\\51\\-106.4367\\-189.8959\\51\\-107.6981\\-191.3778\\51\\-109.6512\\-191.5785\\51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "65"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "524"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-78.40122\\-141.9629\\51\\-80.35435\\-140.3427\\51\\-82.30747\\-139.4402\\51\\-82.66579\\-139.1146\\51\\-83.64299\\-137.1615\\51\\-83.20103\\-135.2084\\51\\-82.30747\\-134.2044\\51\\-79.39937\\-131.3021\\51\\-78.98609\\-129.349\\51\\-78.83146\\-127.3959\\51\\-78.40122\\-126.999\\51\\-76.4481\\-126.6309\\51\\-75.36248\\-125.4428\\51\\-74.49497\\-123.5007\\51\\-73.18433\\-121.5365\\51\\-71.2683\\-119.5834\\51\\-70.58872\\-117.9558\\51\\-69.26653\\-115.6771\\51\\-68.01565\\-113.724\\51\\-67.04868\\-111.7709\\51\\-66.23859\\-109.8178\\51\\-65.64047\\-107.8646\\51\\-64.64858\\-105.9115\\51\\-64.31341\\-103.9584\\51\\-64.24974\\-102.0053\\51\\-63.68409\\-100.0521\\51\\-62.77623\\-99.20791\\51\\-60.8231\\-97.62534\\51\\-58.86998\\-96.82636\\51\\-58.10393\\-96.14588\\51\\-55.59822\\-94.19276\\51\\-54.96373\\-93.56536\\51\\-53.0106\\-92.00779\\51\\-51.05748\\-91.24196\\51\\-49.10435\\-91.6915\\51\\-48.50179\\-92.23963\\51\\-47.41214\\-94.19276\\51\\-46.96423\\-96.14588\\51\\-46.1092\\-98.09901\\51\\-44.70693\\-100.0521\\51\\-43.5982\\-102.0053\\51\\-43.93198\\-103.9584\\51\\-44.50056\\-105.9115\\51\\-45.59503\\-107.8646\\51\\-47.36908\\-109.8178\\51\\-49.96792\\-111.7709\\51\\-51.05748\\-112.447\\51\\-53.0106\\-113.1369\\51\\-55.45796\\-115.6771\\51\\-57.16434\\-117.6303\\51\\-57.83623\\-119.5834\\51\\-58.99205\\-121.5365\\51\\-59.81575\\-123.4896\\51\\-60.81547\\-125.4428\\51\\-61.18456\\-127.3959\\51\\-60.50829\\-129.349\\51\\-61.4505\\-131.3021\\51\\-62.77623\\-133.0864\\51\\-65.23798\\-135.2084\\51\\-66.68247\\-136.2697\\51\\-68.6356\\-137.5483\\51\\-70.58872\\-138.3443\\51\\-72.54185\\-139.6119\\51\\-74.49497\\-140.3684\\51\\-76.4481\\-141.5348\\51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "525"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-203.9258\\51\\-42.17236\\-203.5678\\51\\-43.24498\\-202.7888\\51\\-45.1981\\-200.9876\\51\\-46.17466\\-199.6615\\51\\-47.15123\\-198.9375\\51\\-49.10435\\-198.4316\\51\\-51.05748\\-198.7086\\51\\-53.0106\\-200.2186\\51\\-54.96373\\-200.6512\\51\\-56.07246\\-199.6615\\51\\-55.27762\\-197.7084\\51\\-53.64584\\-195.7553\\51\\-53.0106\\-195.3132\\51\\-49.10435\\-195.309\\51\\-47.15123\\-194.7241\\51\\-45.91911\\-193.8021\\51\\-45.66774\\-191.849\\51\\-45.1981\\-190.6185\\51\\-43.24498\\-188.4981\\51\\-42.33142\\-187.9428\\51\\-41.29185\\-187.6968\\51\\-33.47935\\-187.6968\\51\\-31.52623\\-189.3121\\51\\-29.18056\\-191.849\\51\\-28.65079\\-193.8021\\51\\-27.61998\\-194.7997\\51\\-25.66685\\-195.1943\\51\\-23.71373\\-195.3577\\51\\-21.7606\\-195.1838\\51\\-19.44657\\-193.8021\\51\\-17.85435\\-193.154\\51\\-13.9481\\-193.1367\\51\\-11.99498\\-193.352\\51\\-10.43775\\-193.8021\\51\\-8.088726\\-195.3544\\51\\-7.674748\\-195.7553\\51\\-4.182476\\-197.9924\\51\\-2.229351\\-199.1703\\51\\-1.00125\\-199.6615\\51\\-2.229351\\-201.4236\\51\\-4.182476\\-201.5906\\51\\-6.135601\\-201.1004\\51\\-8.088726\\-201.4134\\51\\-10.04185\\-202.2101\\51\\-11.99498\\-202.4267\\51\\-13.9481\\-202.4913\\51\\-17.85435\\-202.492\\51\\-19.80748\\-202.2874\\51\\-21.7606\\-201.002\\51\\-25.66685\\-200.4509\\51\\-29.5731\\-200.8257\\51\\-33.47935\\-202.5631\\51\\-35.43248\\-203.9235\\51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "526"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-33.47935\\-137.6432\\51\\-35.43248\\-136.6445\\51\\-37.3856\\-135.9191\\51\\-41.29185\\-135.5467\\51\\-43.24498\\-134.5288\\51\\-45.1981\\-133.9877\\51\\-47.15123\\-133.7674\\51\\-51.05748\\-133.5482\\51\\-51.38971\\-133.2553\\51\\-51.77228\\-131.3021\\51\\-51.05748\\-130.2673\\51\\-50.19095\\-129.349\\51\\-49.32408\\-127.3959\\51\\-47.15123\\-125.0415\\51\\-45.1981\\-123.9182\\51\\-43.24498\\-124.2522\\51\\-41.71978\\-123.4896\\51\\-39.33873\\-122.135\\51\\-37.3856\\-123.0014\\51\\-35.43248\\-124.629\\51\\-33.04158\\-125.4428\\51\\-31.52623\\-126.1403\\51\\-30.54966\\-125.4428\\51\\-29.28237\\-121.5365\\51\\-27.98379\\-119.5834\\51\\-27.61998\\-119.2219\\51\\-25.66685\\-119.5947\\51\\-24.87542\\-121.5365\\51\\-21.7606\\-124.9603\\51\\-19.80748\\-126.7711\\51\\-18.94665\\-127.3959\\51\\-17.93762\\-129.349\\51\\-19.80748\\-130.6671\\51\\-21.7606\\-131.799\\51\\-23.71373\\-131.8241\\51\\-25.66685\\-131.584\\51\\-29.5731\\-129.6777\\51\\-30.89299\\-131.3021\\51\\-31.12047\\-133.2553\\51\\-31.00964\\-135.2084\\51\\-31.47928\\-137.1615\\51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "527"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "29.02065\\-151.3128\\51\\27.06752\\-150.0977\\51\\26.15898\\-148.8803\\51\\25.19578\\-146.9271\\51\\24.76563\\-144.974\\51\\24.6083\\-143.0209\\51\\25.1144\\-141.243\\51\\27.06752\\-141.3085\\51\\27.43904\\-141.0678\\51\\27.84377\\-139.1146\\51\\27.06752\\-138.5609\\51\\25.1144\\-138.2409\\51\\23.16127\\-138.2507\\51\\21.20815\\-137.3344\\51\\20.0338\\-135.2084\\51\\18.01322\\-133.2553\\51\\17.3019\\-132.7628\\51\\15.34877\\-132.1775\\51\\13.39565\\-131.996\\51\\11.44252\\-131.4891\\51\\11.1707\\-131.3021\\51\\11.25842\\-129.349\\51\\15.34877\\-125.2489\\51\\17.3019\\-124.0517\\51\\19.25502\\-123.2902\\51\\21.20815\\-123.9188\\51\\22.1572\\-123.4896\\51\\24.51625\\-121.5365\\51\\25.1144\\-121.1275\\51\\27.06752\\-122.1062\\51\\29.02065\\-122.1062\\51\\30.97377\\-122.5886\\51\\32.9269\\-123.5844\\51\\34.88002\\-124.1353\\51\\36.83315\\-124.2763\\51\\38.78627\\-124.6388\\51\\40.7394\\-126.4073\\51\\41.52541\\-127.3959\\51\\42.69252\\-129.1423\\51\\44.64565\\-130.8588\\51\\46.59877\\-131.0432\\51\\47.35832\\-131.3021\\51\\46.59877\\-133.2664\\51\\44.64565\\-133.8656\\51\\42.69252\\-133.7873\\51\\40.7394\\-133.9745\\51\\38.78627\\-134.6906\\51\\36.83315\\-135.8809\\51\\34.88002\\-136.4091\\51\\32.9269\\-137.7377\\51\\31.69534\\-139.1146\\51\\32.40057\\-141.0678\\51\\32.80483\\-143.0209\\51\\32.83216\\-146.9271\\51\\31.99167\\-148.8803\\51\\30.97377\\-149.9202\\51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "528"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-214.465\\51\\46.59877\\-212.3618\\51\\43.75744\\-209.4271\\51\\42.45517\\-207.474\\51\\41.83982\\-205.5209\\51\\41.56874\\-203.5678\\51\\40.7394\\-201.4465\\51\\38.78627\\-200.6139\\51\\36.83315\\-202.5436\\51\\35.71297\\-201.6146\\51\\36.34487\\-199.6615\\51\\36.83315\\-199.0566\\51\\38.78627\\-197.2628\\51\\40.11161\\-195.7553\\51\\40.90099\\-191.849\\51\\41.7715\\-189.8959\\51\\44.64565\\-186.9844\\51\\46.59877\\-185.12\\51\\50.50502\\-183.4714\\51\\52.45815\\-183.0011\\51\\54.41127\\-182.6358\\51\\56.3644\\-182.6627\\51\\58.31752\\-183.2001\\51\\60.27065\\-183.9843\\51\\62.22377\\-184.4383\\51\\64.1769\\-185.1797\\51\\66.13003\\-187.0366\\51\\68.08315\\-188.309\\51\\69.43069\\-189.8959\\51\\70.91884\\-191.849\\51\\72.59257\\-193.8021\\51\\73.39999\\-195.7553\\51\\74.08099\\-199.6615\\51\\75.89565\\-201.2613\\51\\77.84878\\-201.9851\\51\\79.23125\\-203.5678\\51\\77.84878\\-204.5923\\51\\75.89565\\-204.4629\\51\\74.61101\\-205.5209\\51\\73.74309\\-207.474\\51\\73.7068\\-209.4271\\51\\72.71908\\-211.3803\\51\\70.03628\\-214.0714\\51\\64.1769\\-216.9921\\51\\58.31752\\-217.0158\\51\\56.3644\\-216.8307\\51\\54.41127\\-216.2962\\51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "529"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "68.08315\\-139.5453\\51\\66.13003\\-138.4365\\51\\64.1769\\-137.9217\\51\\62.22377\\-137.6948\\51\\58.31752\\-135.9548\\51\\56.3644\\-134.8829\\51\\54.41127\\-133.2162\\51\\52.45815\\-130.741\\51\\51.48159\\-129.349\\51\\51.03603\\-127.3959\\51\\50.98397\\-123.4896\\51\\50.22889\\-121.5365\\51\\49.10753\\-119.5834\\51\\47.33366\\-117.6303\\51\\45.97733\\-115.6771\\51\\44.91576\\-113.724\\51\\44.64565\\-113.4558\\51\\42.69252\\-112.2417\\51\\40.7394\\-110.651\\51\\39.90158\\-109.8178\\51\\40.20229\\-107.8646\\51\\40.7394\\-107.0291\\51\\41.74526\\-105.9115\\51\\43.28883\\-103.9584\\51\\44.64565\\-102.6252\\51\\45.42905\\-102.0053\\51\\46.87672\\-100.0521\\51\\48.5519\\-98.86858\\51\\52.45815\\-98.90456\\51\\54.41127\\-99.61478\\51\\54.86535\\-100.0521\\51\\55.36781\\-102.0053\\51\\56.1527\\-103.9584\\51\\56.25589\\-105.9115\\51\\56.5882\\-107.8646\\51\\57.27684\\-109.8178\\51\\58.97033\\-111.7709\\51\\60.27065\\-114.1326\\51\\61.01999\\-115.6771\\51\\63.00219\\-117.6303\\51\\64.67963\\-119.5834\\51\\65.52035\\-121.5365\\51\\67.01192\\-123.4896\\51\\68.08315\\-125.0222\\51\\71.37652\\-127.3959\\51\\72.81148\\-129.349\\51\\73.68343\\-131.3021\\51\\73.16855\\-133.2553\\51\\72.21476\\-135.2084\\51\\71.71703\\-137.1615\\51\\70.95345\\-139.1146\\51\\70.03628\\-139.873\\51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "530"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "109.0988\\-192.4585\\51\\106.9339\\-189.8959\\51\\106.1691\\-187.9428\\51\\104.7836\\-185.9896\\51\\104.6652\\-184.0365\\51\\103.7195\\-182.0834\\51\\102.6676\\-180.1303\\51\\102.3076\\-178.1771\\51\\100.9987\\-176.224\\51\\100.6799\\-174.2709\\51\\99.96597\\-172.3178\\51\\98.73565\\-170.3646\\51\\98.42317\\-168.4115\\51\\97.68967\\-166.4584\\51\\97.21365\\-164.5053\\51\\96.85709\\-162.5521\\51\\98.09389\\-160.599\\51\\98.70157\\-158.6459\\51\\99.33315\\-157.2287\\51\\99.72552\\-156.6928\\51\\99.33315\\-154.7091\\51\\101.2863\\-155.028\\51\\103.2394\\-156.9784\\51\\104.5887\\-158.6459\\51\\105.1925\\-159.7923\\51\\105.818\\-160.599\\51\\107.7248\\-162.5521\\51\\108.9725\\-164.5053\\51\\110.4503\\-166.4584\\51\\111.043\\-168.4115\\51\\112.336\\-170.3646\\51\\112.49\\-172.3178\\51\\112.4802\\-174.2709\\51\\112.8643\\-176.224\\51\\113.005\\-178.2687\\51\\112.5765\\-180.1303\\51\\113.1729\\-182.0834\\51\\113.1445\\-184.0365\\51\\112.5516\\-185.9896\\51\\112.49\\-189.8959\\51\\112.2687\\-191.849\\51\\111.0519\\-193.1161\\51"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "531"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-190.4886\\53\\-114.473\\-189.8959\\53\\-115.5106\\-188.9433\\53\\-116.1599\\-187.9428\\53\\-116.3347\\-185.9896\\53\\-118.0667\\-184.0365\\53\\-118.6573\\-182.0834\\53\\-118.8597\\-180.1303\\53\\-118.6801\\-178.1771\\53\\-118.3375\\-176.224\\53\\-117.5838\\-174.2709\\53\\-115.6501\\-170.3646\\53\\-114.3213\\-168.4115\\53\\-111.6043\\-165.6594\\53\\-108.4182\\-162.5521\\53\\-107.6981\\-161.9725\\53\\-102.384\\-156.6928\\53\\-101.8387\\-156.0182\\53\\-99.8856\\-155.1676\\53\\-97.93247\\-155.7601\\53\\-97.01814\\-156.6928\\53\\-96.35349\\-158.6459\\53\\-96.33041\\-160.599\\53\\-96.80014\\-162.5521\\53\\-98.44296\\-164.5053\\53\\-99.33043\\-166.4584\\53\\-103.1951\\-172.3178\\53\\-103.3417\\-174.2709\\53\\-104.4826\\-176.224\\53\\-105.2709\\-178.1771\\53\\-105.3102\\-180.1303\\53\\-106.3671\\-182.0834\\53\\-107.2314\\-184.0365\\53\\-107.2568\\-187.9428\\53\\-107.5056\\-189.8959\\53\\-107.6981\\-190.1334\\53\\-109.6512\\-191.4333\\53\\-111.6043\\-191.2631\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "532"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-80.35435\\-140.182\\53\\-81.60841\\-139.1146\\53\\-83.44996\\-137.1615\\53\\-83.54903\\-135.2084\\53\\-82.44911\\-133.2553\\53\\-80.35435\\-131.1394\\53\\-78.40122\\-128.5807\\53\\-76.4481\\-126.3066\\53\\-75.81718\\-125.4428\\53\\-75.00029\\-123.4896\\53\\-73.1946\\-121.5365\\53\\-71.2683\\-119.5834\\53\\-70.58872\\-117.9558\\53\\-68.08338\\-113.724\\53\\-67.1172\\-111.7709\\53\\-66.02963\\-109.8178\\53\\-64.30398\\-105.9115\\53\\-63.98759\\-102.0053\\53\\-63.54027\\-100.0521\\53\\-62.77623\\-99.31483\\53\\-60.8231\\-98.60432\\53\\-58.86998\\-97.22952\\53\\-57.63462\\-96.14588\\53\\-54.96373\\-93.56536\\53\\-53.0106\\-92.84669\\53\\-51.05748\\-92.50256\\53\\-49.10435\\-93.87015\\53\\-48.81984\\-94.19276\\53\\-48.25149\\-96.14588\\53\\-46.18935\\-100.0521\\53\\-44.75898\\-102.0053\\53\\-44.5559\\-103.9584\\53\\-45.0111\\-105.9115\\53\\-46.05597\\-107.8646\\53\\-47.76523\\-109.8178\\53\\-49.10435\\-111.141\\53\\-51.05748\\-112.4404\\53\\-53.0106\\-113.3188\\53\\-54.82765\\-115.6771\\53\\-56.91685\\-117.7258\\53\\-58.56601\\-121.5365\\53\\-59.54645\\-123.4896\\53\\-60.0933\\-125.4428\\53\\-60.27378\\-127.3959\\53\\-60.80039\\-129.349\\53\\-61.88794\\-131.3021\\53\\-64.72935\\-134.1519\\53\\-66.68247\\-135.5164\\53\\-68.6356\\-135.9769\\53\\-70.94489\\-137.1615\\53\\-76.4481\\-139.9015\\53\\-78.40122\\-140.7422\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "20"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "533"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-35.43248\\-135.2892\\53\\-37.3856\\-134.2001\\53\\-39.33873\\-133.7614\\53\\-41.29185\\-133.7435\\53\\-43.24498\\-133.459\\53\\-46.83927\\-131.3021\\53\\-47.15123\\-130.7798\\53\\-47.57847\\-129.349\\53\\-47.39723\\-127.3959\\53\\-45.1981\\-125.2897\\53\\-43.24498\\-125.0286\\53\\-39.33873\\-124.8731\\53\\-37.3856\\-125.3629\\53\\-35.43248\\-126.5717\\53\\-34.27037\\-127.3959\\53\\-33.16123\\-129.349\\53\\-33.12489\\-131.3021\\53\\-33.18638\\-133.2553\\53\\-33.47935\\-134.4094\\53\\-34.8671\\-135.2084\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "534"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-33.47935\\-201.6668\\53\\-35.43248\\-201.0522\\53\\-37.3856\\-200.8557\\53\\-41.29185\\-200.8431\\53\\-43.24498\\-200.663\\53\\-45.1981\\-199.6225\\53\\-47.15123\\-199.0582\\53\\-49.10435\\-199.3289\\53\\-51.05748\\-199.9206\\53\\-53.0106\\-200.3055\\53\\-53.956\\-199.6615\\53\\-53.2336\\-197.7084\\53\\-53.0106\\-197.4307\\53\\-51.05748\\-196.0933\\53\\-49.10435\\-195.7325\\53\\-47.15123\\-195.7177\\53\\-45.1981\\-195.3219\\53\\-43.24498\\-194.7787\\53\\-41.29185\\-194.5088\\53\\-39.33873\\-194.0887\\53\\-37.3856\\-194.0326\\53\\-35.43248\\-194.2066\\53\\-31.52623\\-195.1073\\53\\-29.5731\\-196.3493\\53\\-27.61998\\-197.3633\\53\\-25.66685\\-197.4131\\53\\-23.71373\\-197.3513\\53\\-21.7606\\-197.1623\\53\\-17.85435\\-196.6349\\53\\-11.99498\\-196.6349\\53\\-10.04185\\-197.0275\\53\\-8.088726\\-197.7632\\53\\-6.135601\\-198.2031\\53\\-4.182476\\-198.8769\\53\\-2.981218\\-199.6615\\53\\-4.182476\\-200.9794\\53\\-6.135601\\-201.047\\53\\-8.088726\\-200.5554\\53\\-10.04185\\-200.529\\53\\-13.9481\\-200.8506\\53\\-15.90123\\-200.888\\53\\-17.85435\\-201.4627\\53\\-21.7606\\-201.9948\\53\\-23.71373\\-202.6822\\53\\-25.66685\\-202.8279\\53\\-27.61998\\-202.7968\\53\\-29.5731\\-201.9993\\53\\-31.52623\\-201.6676\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "23"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "535"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-21.7606\\-131.5379\\53\\-23.71373\\-131.2313\\53\\-25.66685\\-130.4872\\53\\-27.04218\\-129.349\\53\\-27.34624\\-127.3959\\53\\-28.21202\\-123.4896\\53\\-28.18243\\-121.5365\\53\\-27.61998\\-120.0554\\53\\-27.20954\\-119.5834\\53\\-26.19796\\-117.6303\\53\\-25.66685\\-117.0864\\53\\-23.7218\\-115.6771\\53\\-21.7606\\-116.0745\\53\\-20.70646\\-117.6303\\53\\-21.7606\\-119.289\\53\\-23.71373\\-119.2904\\53\\-24.28444\\-119.5834\\53\\-24.93685\\-121.5365\\53\\-23.24006\\-123.4896\\53\\-21.7606\\-125.4049\\53\\-19.83387\\-127.3959\\53\\-17.70356\\-129.349\\53\\-19.80748\\-131.3969\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "536"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "27.06752\\-151.0933\\53\\25.80406\\-148.8803\\53\\25.22454\\-146.9271\\53\\25.45377\\-144.974\\53\\26.2099\\-143.0209\\53\\28.36358\\-141.0678\\53\\29.02065\\-140.054\\53\\30.97377\\-139.5754\\53\\32.47671\\-141.0678\\53\\32.83216\\-143.0209\\53\\32.84613\\-144.974\\53\\32.62294\\-146.9271\\53\\31.84243\\-148.8803\\53\\29.97998\\-150.8334\\53\\29.02065\\-151.6872\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "537"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "27.06752\\-137.4433\\53\\26.56762\\-137.1615\\53\\24.58261\\-135.2084\\53\\24.10028\\-133.2553\\53\\22.53872\\-131.3021\\53\\21.20815\\-130.004\\53\\17.3019\\-130.8104\\53\\15.34877\\-131.5496\\53\\13.39565\\-131.8074\\53\\11.44252\\-131.799\\53\\10.13543\\-131.3021\\53\\10.52303\\-129.349\\53\\12.77532\\-127.3959\\53\\15.34877\\-124.7821\\53\\17.3019\\-122.9669\\53\\19.25502\\-122.7731\\53\\21.20815\\-123.1454\\53\\22.81702\\-121.5365\\53\\23.16127\\-120.8115\\53\\25.1144\\-120.9408\\53\\25.64628\\-121.5365\\53\\27.06752\\-122.4674\\53\\29.02065\\-122.3832\\53\\30.97377\\-123.1446\\53\\32.9269\\-124.2828\\53\\36.83315\\-125.0484\\53\\38.78627\\-125.7816\\53\\40.7394\\-127.1827\\53\\42.37863\\-129.349\\53\\43.27236\\-131.3021\\53\\42.69252\\-131.7336\\53\\40.7394\\-132.3983\\53\\38.78627\\-133.7082\\53\\36.83315\\-134.4439\\53\\34.88002\\-135.7137\\53\\32.9269\\-136.3792\\53\\31.45188\\-137.1615\\53\\30.97377\\-137.9668\\53\\29.02065\\-137.9938\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "538"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-215.5392\\53\\52.45815\\-215.016\\53\\50.50502\\-214.2944\\53\\48.5519\\-212.8191\\53\\46.59877\\-211.9967\\53\\44.37328\\-209.4271\\53\\43.55283\\-207.474\\53\\42.2958\\-205.5209\\53\\42.00643\\-203.5678\\53\\41.52927\\-201.6146\\53\\40.7394\\-200.771\\53\\38.78627\\-200.9968\\53\\36.83315\\-202.6358\\53\\35.92599\\-201.6146\\53\\36.83315\\-199.9599\\53\\38.78627\\-198.0258\\53\\40.48031\\-195.7553\\53\\40.5277\\-193.8021\\53\\41.48178\\-191.849\\53\\42.04665\\-189.8959\\53\\43.68726\\-187.9428\\53\\44.64565\\-186.9844\\53\\46.59877\\-185.4434\\53\\48.5519\\-184.9422\\53\\50.50502\\-184.2874\\53\\52.45815\\-183.5198\\53\\54.41127\\-183.2857\\53\\56.3644\\-183.2955\\53\\58.31752\\-183.5282\\53\\60.27065\\-184.3663\\53\\62.22377\\-185.0702\\53\\64.1769\\-185.923\\53\\66.13003\\-187.1487\\53\\68.08315\\-188.1729\\53\\70.03628\\-190.612\\53\\70.92928\\-191.849\\53\\72.87094\\-193.8021\\53\\73.71873\\-195.7553\\53\\73.74309\\-197.7084\\53\\74.65324\\-199.6615\\53\\77.84878\\-202.546\\53\\78.784\\-203.5678\\53\\77.84878\\-204.513\\53\\75.89565\\-204.8681\\53\\75.06328\\-205.5209\\53\\73.74309\\-207.474\\53\\73.73082\\-209.4271\\53\\72.74352\\-211.3803\\53\\70.03628\\-214.0782\\53\\67.49992\\-215.2865\\53\\64.1769\\-216.7847\\53\\62.22377\\-217.0158\\53\\58.31752\\-217.0158\\53\\56.3644\\-216.443\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "539"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "66.13003\\-137.5285\\53\\64.1769\\-136.4898\\53\\62.22377\\-135.9482\\53\\60.27065\\-135.5489\\53\\58.31752\\-134.5831\\53\\56.3644\\-133.8174\\53\\54.41127\\-132.3727\\53\\51.05862\\-129.349\\53\\49.88412\\-127.3959\\53\\49.85199\\-123.4896\\53\\49.42422\\-121.5365\\53\\48.5519\\-119.688\\53\\47.33978\\-117.6303\\53\\44.64565\\-114.5544\\53\\43.81531\\-113.724\\53\\41.54138\\-111.7709\\53\\39.51244\\-109.8178\\53\\38.82412\\-107.8646\\53\\37.73531\\-103.9584\\53\\38.78627\\-103.0612\\53\\39.71401\\-102.0053\\53\\40.1707\\-100.0521\\53\\40.7394\\-99.29682\\53\\42.01707\\-98.09901\\53\\44.64565\\-96.15926\\53\\46.59877\\-96.91932\\53\\48.5519\\-97.81528\\53\\50.50502\\-98.90456\\53\\52.45815\\-98.92021\\53\\54.22427\\-100.0521\\53\\54.96852\\-102.0053\\53\\55.84634\\-103.9584\\53\\56.22896\\-105.9115\\53\\56.49984\\-107.8646\\53\\57.21825\\-109.8178\\53\\58.97033\\-111.7709\\53\\60.27065\\-113.7343\\53\\61.14539\\-115.6771\\53\\64.90932\\-119.5834\\53\\66.52441\\-121.5365\\53\\67.35699\\-123.4896\\53\\68.08315\\-124.5308\\53\\69.29906\\-125.4428\\53\\71.9894\\-127.0198\\53\\72.35561\\-127.3959\\53\\73.33852\\-129.349\\53\\73.71873\\-131.3021\\53\\73.03754\\-133.2553\\53\\71.71886\\-135.2084\\53\\71.51729\\-137.1615\\53\\70.03628\\-138.4109\\53\\68.08315\\-137.9053\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "540"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "105.1925\\-214.2475\\53\\104.5782\\-213.3334\\53\\105.1925\\-211.9228\\53\\105.6151\\-211.3803\\53\\107.1457\\-210.2184\\53\\108.5669\\-211.3803\\53\\109.76\\-213.3334\\53\\109.0988\\-214.0387\\53\\107.1457\\-215.2633\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "541"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "111.0519\\-195.082\\53\\109.0988\\-193.3779\\53\\108.1471\\-191.849\\53\\107.1229\\-189.8959\\53\\106.8487\\-187.9428\\53\\106.4447\\-184.0365\\53\\105.6509\\-182.0834\\53\\104.7009\\-180.1303\\53\\104.3313\\-178.1771\\53\\103.3585\\-176.224\\53\\101.9503\\-172.3178\\53\\100.7482\\-170.3646\\53\\100.6066\\-168.4115\\53\\99.33315\\-166.1016\\53\\98.78343\\-164.5053\\53\\98.59518\\-162.5521\\53\\98.71609\\-160.599\\53\\98.94621\\-158.6459\\53\\98.74384\\-156.6928\\53\\98.00348\\-154.7396\\53\\99.33315\\-153.2212\\53\\101.2863\\-153.1883\\53\\103.2394\\-154.2033\\53\\103.9355\\-154.7396\\53\\105.8825\\-156.6928\\53\\107.1457\\-158.6577\\53\\108.9767\\-160.599\\53\\110.9951\\-162.5521\\53\\112.9052\\-164.5053\\53\\114.1076\\-166.4584\\53\\114.8838\\-168.4115\\53\\115.989\\-170.3646\\53\\114.9582\\-172.9107\\53\\114.651\\-174.2709\\53\\114.9582\\-175.0643\\53\\115.7003\\-176.224\\53\\116.2914\\-178.1771\\53\\116.1159\\-180.1303\\53\\116.299\\-182.0834\\53\\116.2884\\-184.0365\\53\\116.0842\\-185.9896\\53\\115.9964\\-187.9428\\53\\114.9688\\-189.8959\\53\\114.4806\\-191.849\\53\\114.2594\\-193.8021\\53\\113.005\\-195.113\\53"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "542"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-190.5635\\55\\-114.6317\\-189.8959\\55\\-115.5106\\-189.0902\\55\\-116.2167\\-187.9428\\55\\-116.3497\\-185.9896\\55\\-118.3215\\-184.0365\\55\\-119.7737\\-182.0834\\55\\-120.0416\\-180.1303\\55\\-119.4168\\-178.7131\\55\\-118.9902\\-178.1771\\55\\-118.4082\\-176.224\\55\\-118.3131\\-174.2709\\55\\-118.0993\\-172.3178\\55\\-117.0345\\-170.3646\\55\\-116.428\\-168.4115\\55\\-115.5106\\-166.6914\\55\\-113.5575\\-164.4031\\55\\-111.6043\\-162.4095\\55\\-107.6981\\-159.8352\\55\\-105.745\\-158.0406\\55\\-104.3972\\-156.6928\\55\\-103.193\\-154.7396\\55\\-101.8387\\-153.3322\\55\\-99.8856\\-153.7695\\55\\-98.9523\\-154.7396\\55\\-97.35641\\-156.6928\\55\\-97.29106\\-158.6459\\55\\-97.54883\\-160.599\\55\\-97.93247\\-161.5756\\55\\-98.52271\\-162.5521\\55\\-100.2415\\-164.5053\\55\\-102.4575\\-168.4115\\55\\-104.3293\\-170.3646\\55\\-105.2937\\-172.3178\\55\\-105.3529\\-174.2709\\55\\-106.4545\\-176.224\\55\\-107.2583\\-178.1771\\55\\-107.309\\-180.1303\\55\\-108.3675\\-182.0834\\55\\-109.2197\\-184.0365\\55\\-109.2349\\-187.9428\\55\\-109.339\\-189.8959\\55\\-109.6512\\-190.2657\\55\\-111.6043\\-191.1041\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "543"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-80.35435\\-139.9061\\55\\-83.34705\\-137.1615\\55\\-83.74692\\-135.2084\\55\\-83.21464\\-133.2553\\55\\-82.30747\\-132.2341\\55\\-77.46307\\-127.3959\\55\\-76.4481\\-125.4533\\55\\-75.15454\\-123.4896\\55\\-73.20815\\-121.5365\\55\\-71.47791\\-119.5834\\55\\-70.58872\\-117.6636\\55\\-69.26653\\-115.6771\\55\\-67.60625\\-113.724\\55\\-66.52089\\-111.7709\\55\\-65.628\\-109.8178\\55\\-64.56776\\-107.8646\\55\\-63.58387\\-103.9584\\55\\-63.29829\\-102.0053\\55\\-63.54206\\-100.0521\\55\\-62.77623\\-99.31725\\55\\-60.8231\\-98.90456\\55\\-58.86998\\-97.34889\\55\\-56.91685\\-95.45267\\55\\-54.96373\\-93.91471\\55\\-53.0106\\-93.231\\55\\-51.05748\\-93.91694\\55\\-50.77296\\-94.19276\\55\\-49.9264\\-96.14588\\55\\-48.69506\\-98.09901\\55\\-47.96398\\-100.0521\\55\\-46.36602\\-102.0053\\55\\-45.37762\\-103.9584\\55\\-45.67432\\-105.9115\\55\\-46.64463\\-107.8646\\55\\-48.05762\\-109.8178\\55\\-49.10435\\-110.8645\\55\\-51.05748\\-112.2592\\55\\-53.0106\\-113.1754\\55\\-55.34278\\-115.6771\\55\\-56.91685\\-117.747\\55\\-58.55516\\-121.5365\\55\\-59.03274\\-123.4896\\55\\-59.8558\\-127.3959\\55\\-60.8231\\-128.7042\\55\\-62.77623\\-131.0939\\55\\-64.72935\\-132.7635\\55\\-66.68247\\-134.006\\55\\-68.6356\\-134.6212\\55\\-70.58872\\-135.8354\\55\\-72.54185\\-136.572\\55\\-74.49497\\-137.8108\\55\\-76.4481\\-138.4765\\55\\-78.40122\\-139.7283\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "15"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "544"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-41.29185\\-131.7867\\55\\-43.24498\\-130.9932\\55\\-45.1981\\-129.8181\\55\\-45.63711\\-129.349\\55\\-45.62629\\-127.3959\\55\\-45.1981\\-126.9805\\55\\-43.24498\\-126.1073\\55\\-41.29185\\-125.8681\\55\\-39.33873\\-126.3762\\55\\-37.3856\\-127.1845\\55\\-35.43248\\-128.8065\\55\\-35.05155\\-129.349\\55\\-35.43248\\-131.3459\\55\\-37.3856\\-132.3209\\55\\-39.33873\\-131.9978\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "545"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-29.5731\\-204.019\\55\\-31.52623\\-202.7565\\55\\-33.47935\\-202.5971\\55\\-37.3856\\-201.3059\\55\\-43.24498\\-201.2939\\55\\-45.1981\\-201.0812\\55\\-47.15123\\-200.4695\\55\\-49.10435\\-200.251\\55\\-50.42873\\-199.6615\\55\\-50.93961\\-197.7084\\55\\-49.10435\\-196.7136\\55\\-45.1981\\-196.3285\\55\\-43.24498\\-196.2243\\55\\-37.3856\\-196.2243\\55\\-35.43248\\-196.3326\\55\\-31.52623\\-197.5346\\55\\-31.15336\\-197.7084\\55\\-29.5731\\-199.0664\\55\\-29.04413\\-199.6615\\55\\-27.61998\\-200.7186\\55\\-25.66685\\-200.9932\\55\\-23.71373\\-200.5275\\55\\-22.69376\\-199.6615\\55\\-21.7606\\-199.2691\\55\\-19.80748\\-199.023\\55\\-11.99498\\-199.3622\\55\\-11.06724\\-199.6615\\55\\-13.9481\\-200.0672\\55\\-15.90123\\-200.1273\\55\\-17.85435\\-200.934\\55\\-18.68624\\-201.6146\\55\\-21.7606\\-202.18\\55\\-23.71373\\-203.6491\\55\\-25.66685\\-204.4185\\55\\-27.61998\\-204.6762\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "546"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-23.71373\\-130.2042\\55\\-25.19772\\-129.349\\55\\-25.66685\\-128.6844\\55\\-26.25776\\-127.3959\\55\\-27.20457\\-123.4896\\55\\-27.05936\\-121.5365\\55\\-25.66685\\-120.6519\\55\\-25.21387\\-121.5365\\55\\-24.43299\\-123.4896\\55\\-22.75291\\-125.4428\\55\\-21.7606\\-126.7611\\55\\-18.77488\\-129.349\\55\\-19.80748\\-130.7334\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "14"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "547"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "27.06752\\-151.4911\\55\\26.50543\\-150.8334\\55\\25.78228\\-148.8803\\55\\26.0376\\-146.9271\\55\\26.59904\\-144.974\\55\\27.06752\\-144.2364\\55\\29.02065\\-142.199\\55\\30.97377\\-141.2518\\55\\31.99103\\-143.0209\\55\\32.2235\\-144.974\\55\\32.02846\\-146.9271\\55\\31.1005\\-148.8803\\55\\29.81009\\-150.8334\\55\\29.02065\\-151.6089\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "548"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "29.02065\\-135.6301\\55\\27.83631\\-135.2084\\55\\27.06752\\-134.2047\\55\\26.79409\\-133.2553\\55\\25.97906\\-131.3021\\55\\24.96596\\-129.349\\55\\26.24468\\-127.3959\\55\\26.35873\\-125.4428\\55\\25.1144\\-123.8355\\55\\23.16127\\-124.6127\\55\\21.20815\\-124.7134\\55\\20.63768\\-125.4428\\55\\19.73094\\-127.3959\\55\\19.25502\\-128.0921\\55\\17.92422\\-129.349\\55\\17.3019\\-129.7559\\55\\13.39565\\-131.7904\\55\\11.44252\\-131.8074\\55\\10.46596\\-131.3021\\55\\10.76644\\-129.349\\55\\11.44252\\-128.7631\\55\\13.39565\\-127.7011\\55\\15.54265\\-125.4428\\55\\16.88153\\-123.4896\\55\\17.3019\\-123.0801\\55\\19.25502\\-122.1416\\55\\21.20815\\-122.8408\\55\\23.16127\\-122.8417\\55\\25.50048\\-123.4896\\55\\27.06752\\-124.6718\\55\\28.71101\\-123.4896\\55\\29.02065\\-123.3949\\55\\30.97377\\-124.176\\55\\34.88002\\-125.931\\55\\36.83315\\-126.2383\\55\\38.78627\\-126.7222\\55\\39.62443\\-127.3959\\55\\40.86789\\-129.349\\55\\40.01098\\-131.3021\\55\\38.78627\\-132.3255\\55\\36.83315\\-133.6806\\55\\34.88002\\-134.4327\\55\\32.9269\\-135.4441\\55\\30.97377\\-135.6608\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "549"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-216.0773\\55\\54.41127\\-215.0274\\55\\52.45815\\-214.8437\\55\\50.50502\\-214.0772\\55\\48.5519\\-212.5\\55\\46.59877\\-210.735\\55\\43.69069\\-207.474\\55\\42.32553\\-205.5209\\55\\42.3155\\-203.5678\\55\\41.72021\\-201.6146\\55\\40.7394\\-200.603\\55\\36.83315\\-202.245\\55\\36.40249\\-201.6146\\55\\37.64114\\-199.6615\\55\\39.48753\\-197.7084\\55\\40.50368\\-195.7553\\55\\40.9264\\-193.8021\\55\\41.75299\\-191.849\\55\\42.346\\-189.8959\\55\\43.75654\\-187.9428\\55\\44.64565\\-187.0836\\55\\47.02405\\-185.9896\\55\\48.5519\\-185.4514\\55\\50.50502\\-184.9571\\55\\52.45815\\-184.597\\55\\58.31752\\-184.6086\\55\\60.27065\\-185.1044\\55\\64.1769\\-187.1846\\55\\68.08315\\-188.9301\\55\\70.03628\\-190.8837\\55\\72.69096\\-193.8021\\55\\73.48476\\-195.7553\\55\\73.75552\\-197.7084\\55\\74.70563\\-199.6615\\55\\76.72197\\-201.6146\\55\\78.1306\\-203.5678\\55\\77.84878\\-203.8788\\55\\75.36668\\-205.5209\\55\\73.74309\\-207.474\\55\\73.44526\\-209.4271\\55\\72.2915\\-211.3803\\55\\70.03628\\-213.6256\\55\\68.08315\\-214.7629\\55\\66.13003\\-215.3094\\55\\64.1769\\-216.1901\\55\\62.22377\\-216.7783\\55\\60.27065\\-217.0039\\55\\58.31752\\-216.8116\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "550"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "70.03628\\-137.4433\\55\\68.08315\\-136.4672\\55\\64.1769\\-135.5123\\55\\62.22377\\-134.5288\\55\\58.31752\\-133.5333\\55\\56.3644\\-132.6062\\55\\54.41127\\-131.8407\\55\\52.45815\\-130.4264\\55\\50.50502\\-129.1957\\55\\49.20875\\-127.3959\\55\\49.01724\\-125.4428\\55\\48.99399\\-123.4896\\55\\47.9638\\-119.5834\\55\\47.17484\\-117.6303\\55\\45.39569\\-115.6771\\55\\39.46987\\-109.8178\\55\\37.96675\\-107.8646\\55\\37.03483\\-103.9584\\55\\39.66615\\-102.0053\\55\\40.7394\\-99.55751\\55\\42.85529\\-98.09901\\55\\44.64565\\-95.96093\\55\\46.59877\\-96.35818\\55\\49.03204\\-98.09901\\55\\50.50502\\-98.90983\\55\\52.45815\\-98.92021\\55\\54.18748\\-100.0521\\55\\54.58566\\-102.0053\\55\\55.3313\\-103.9584\\55\\56.3644\\-106.3915\\55\\56.87566\\-107.8646\\55\\57.68303\\-109.8178\\55\\58.98432\\-111.7709\\55\\60.79034\\-113.724\\55\\61.65692\\-115.6771\\55\\63.15106\\-117.6303\\55\\64.1769\\-118.8073\\55\\66.99527\\-121.5365\\55\\67.77918\\-123.4896\\55\\68.08315\\-123.9107\\55\\70.28288\\-125.4428\\55\\71.9894\\-126.4729\\55\\72.91237\\-127.3959\\55\\74.23824\\-129.349\\55\\74.0646\\-131.3021\\55\\73.03278\\-133.2553\\55\\71.51647\\-135.2084\\55\\70.41458\\-137.1615\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "551"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "105.1925\\-213.6025\\55\\104.9568\\-213.3334\\55\\105.7279\\-211.3803\\55\\106.6074\\-209.4271\\55\\107.1457\\-208.8276\\55\\109.0988\\-208.3343\\55\\110.5183\\-209.4271\\55\\111.4901\\-211.3803\\55\\112.0987\\-213.3334\\55\\111.0519\\-214.4357\\55\\109.0988\\-214.9825\\55\\107.1457\\-214.828\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "552"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "111.0519\\-196.0783\\55\\110.7623\\-195.7553\\55\\108.8936\\-191.849\\55\\108.6623\\-189.8959\\55\\108.6327\\-185.9896\\55\\107.9873\\-184.0365\\55\\106.8866\\-182.0834\\55\\106.6865\\-180.1303\\55\\106.0714\\-178.1771\\55\\104.9334\\-176.224\\55\\104.7112\\-174.2709\\55\\103.9503\\-172.3178\\55\\102.7892\\-170.3646\\55\\102.7199\\-168.4115\\55\\101.8105\\-166.4584\\55\\100.7705\\-164.5053\\55\\100.1013\\-162.5521\\55\\99.25238\\-160.599\\55\\98.97633\\-158.6459\\55\\98.32275\\-156.6928\\55\\97.78642\\-154.7396\\55\\99.33315\\-153.2918\\55\\101.2863\\-151.9826\\55\\103.2394\\-152.0591\\55\\105.1925\\-153.3116\\55\\107.1937\\-154.7396\\55\\113.005\\-160.4007\\55\\114.9582\\-161.4085\\55\\115.9928\\-162.5521\\55\\116.2958\\-164.5053\\55\\116.9113\\-165.9701\\55\\118.2341\\-168.4115\\55\\118.449\\-170.3646\\55\\118.8644\\-172.1041\\55\\120.0108\\-174.2709\\55\\120.0018\\-178.1771\\55\\119.4157\\-180.1303\\55\\119.0349\\-182.0834\\55\\118.9865\\-184.0365\\55\\118.4186\\-185.9896\\55\\118.3412\\-187.9428\\55\\117.379\\-189.8959\\55\\117.1274\\-191.849\\55\\117.0198\\-193.8021\\55\\115.9857\\-195.7553\\55\\114.9582\\-196.7388\\55\\113.005\\-197.0159\\55"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "553"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-115.5106\\-188.5081\\57\\-115.9636\\-187.9428\\57\\-116.5651\\-185.9896\\57\\-118.3226\\-184.0365\\57\\-118.7989\\-182.0834\\57\\-118.0063\\-180.1303\\57\\-117.4637\\-179.6124\\57\\-114.8234\\-178.1771\\57\\-113.6915\\-176.224\\57\\-114.8392\\-174.2709\\57\\-115.5106\\-174.1399\\57\\-117.4637\\-172.9258\\57\\-117.6875\\-172.3178\\57\\-117.2593\\-170.3646\\57\\-116.1529\\-166.4584\\57\\-114.8982\\-164.5053\\57\\-113.8936\\-162.5521\\57\\-111.6043\\-159.9762\\57\\-109.6512\\-158.4366\\57\\-107.022\\-156.6928\\57\\-105.745\\-155.3958\\57\\-104.4125\\-152.7865\\57\\-103.7918\\-152.171\\57\\-101.8387\\-150.7169\\57\\-99.8856\\-151.4719\\57\\-98.20301\\-154.7396\\57\\-97.97004\\-156.6928\\57\\-98.77534\\-158.6459\\57\\-100.0611\\-160.599\\57\\-100.9613\\-162.5521\\57\\-103.4512\\-166.4584\\57\\-104.5087\\-168.4115\\57\\-106.2167\\-170.3646\\57\\-107.2906\\-172.3178\\57\\-107.4133\\-174.2709\\57\\-108.6428\\-176.224\\57\\-109.6034\\-178.1771\\57\\-109.6417\\-180.1303\\57\\-110.6386\\-182.0834\\57\\-111.2059\\-184.0365\\57\\-111.0049\\-185.9896\\57\\-111.0239\\-187.9428\\57\\-111.6043\\-189.2198\\57\\-113.5575\\-189.7215\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "554"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-80.35435\\-139.4186\\57\\-82.30747\\-138.1466\\57\\-83.34705\\-137.1615\\57\\-83.75529\\-135.2084\\57\\-83.56164\\-133.2553\\57\\-82.47636\\-131.3021\\57\\-78.40122\\-127.1964\\57\\-76.4481\\-124.9178\\57\\-73.43661\\-121.5365\\57\\-72.12424\\-119.5834\\57\\-71.03262\\-117.6303\\57\\-67.54758\\-113.724\\57\\-65.36326\\-109.8178\\57\\-64.06951\\-107.8646\\57\\-63.54353\\-105.9115\\57\\-62.69546\\-103.9584\\57\\-62.3795\\-102.0053\\57\\-62.48051\\-100.0521\\57\\-59.40808\\-98.09901\\57\\-56.91685\\-96.022\\57\\-54.96373\\-94.98411\\57\\-53.0106\\-94.59828\\57\\-51.463\\-96.14588\\57\\-49.4695\\-100.0521\\57\\-48.18835\\-102.0053\\57\\-46.40561\\-103.9584\\57\\-46.1443\\-105.9115\\57\\-47.15123\\-107.3838\\57\\-49.00197\\-109.8178\\57\\-51.36177\\-111.7709\\57\\-53.0106\\-113.028\\57\\-55.69615\\-115.6771\\57\\-57.09124\\-117.6303\\57\\-58.57701\\-121.5365\\57\\-58.65827\\-125.4428\\57\\-59.72578\\-127.3959\\57\\-61.83315\\-129.349\\57\\-62.77623\\-130.4002\\57\\-64.72935\\-132.3503\\57\\-66.68247\\-133.8494\\57\\-68.6356\\-134.4395\\57\\-70.58872\\-135.6902\\57\\-74.49497\\-136.5317\\57\\-76.4481\\-137.7746\\57\\-78.40122\\-138.4194\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "555"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-37.3856\\-131.3248\\57\\-39.33873\\-130.3488\\57\\-41.29185\\-129.881\\57\\-42.24237\\-129.349\\57\\-43.24498\\-127.8451\\57\\-43.24498\\-127.2055\\57\\-41.29185\\-126.3651\\57\\-39.33873\\-126.9625\\57\\-36.67352\\-129.349\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "19"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "556"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-29.5731\\-204.0744\\57\\-30.52669\\-203.5678\\57\\-31.52623\\-202.4644\\57\\-33.47935\\-202.7599\\57\\-37.3856\\-202.314\\57\\-43.24498\\-202.3007\\57\\-45.1981\\-202.2593\\57\\-46.20456\\-201.6146\\57\\-46.62177\\-199.6615\\57\\-45.1981\\-198.1845\\57\\-44.31238\\-197.7084\\57\\-43.24498\\-197.3553\\57\\-37.3856\\-197.3553\\57\\-35.43248\\-198.185\\57\\-33.47935\\-199.9122\\57\\-31.52623\\-200.8357\\57\\-29.5731\\-201.4465\\57\\-26.13131\\-203.5678\\57\\-27.61998\\-204.6022\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "557"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "11.44252\\-131.3397\\57\\12.1908\\-129.349\\57\\13.39565\\-128.7047\\57\\15.34877\\-126.9433\\57\\17.3019\\-124.66\\57\\19.25502\\-122.7814\\57\\20.12206\\-123.4896\\57\\19.25502\\-124.7782\\57\\18.617\\-125.4428\\57\\18.13994\\-127.3959\\57\\17.3019\\-128.3806\\57\\15.34877\\-130.0535\\57\\13.39565\\-131.3098\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "558"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "27.06752\\-149.785\\57\\26.64613\\-148.8803\\57\\26.94545\\-146.9271\\57\\29.02065\\-144.6688\\57\\29.71819\\-144.974\\57\\30.79987\\-146.9271\\57\\29.87691\\-148.8803\\57\\29.02065\\-150.1111\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "17"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "559"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "30.97377\\-133.8261\\57\\29.17256\\-133.2553\\57\\28.48097\\-131.3021\\57\\28.28303\\-129.349\\57\\28.67812\\-125.4428\\57\\29.02065\\-125.0814\\57\\30.97377\\-124.689\\57\\31.99473\\-125.4428\\57\\32.9269\\-126.4681\\57\\34.88002\\-127.2672\\57\\36.83315\\-127.3433\\57\\38.78627\\-128.943\\57\\39.03376\\-129.349\\57\\37.97247\\-131.3021\\57\\36.83315\\-132.2469\\57\\34.88002\\-133.5592\\57\\32.9269\\-133.8163\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "560"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-215.5027\\57\\52.45815\\-214.4763\\57\\50.4562\\-213.3334\\57\\48.5519\\-212.3467\\57\\43.69069\\-207.474\\57\\42.3357\\-205.5209\\57\\42.3357\\-203.5678\\57\\41.7287\\-201.6146\\57\\40.7394\\-200.5943\\57\\38.78627\\-201.4362\\57\\37.24005\\-201.6146\\57\\36.9971\\-203.5678\\57\\36.65201\\-203.5678\\57\\36.79559\\-201.6146\\57\\37.79396\\-199.6615\\57\\39.61868\\-197.7084\\57\\41.47309\\-193.8021\\57\\42.06436\\-191.849\\57\\42.78798\\-189.8959\\57\\44.64565\\-187.6722\\57\\48.5519\\-185.8026\\57\\52.45815\\-185.1558\\57\\54.41127\\-185.0469\\57\\58.31752\\-185.3266\\57\\60.27065\\-186.5573\\57\\62.22377\\-187.4768\\57\\64.1769\\-188.8362\\57\\66.13003\\-189.6711\\57\\68.08315\\-190.269\\57\\70.29919\\-191.849\\57\\71.9894\\-194.48\\57\\72.7169\\-195.7553\\57\\73.96577\\-199.6615\\57\\76.35094\\-201.6146\\57\\77.60129\\-203.5678\\57\\75.89565\\-205.1145\\57\\73.94253\\-206.6359\\57\\73.30128\\-207.474\\57\\72.61146\\-209.4271\\57\\71.9894\\-210.1423\\57\\68.82684\\-213.3334\\57\\68.08315\\-213.9911\\57\\66.13003\\-214.7923\\57\\64.44138\\-215.2865\\57\\62.22377\\-216.1798\\57\\60.27065\\-216.556\\57\\58.31752\\-216.2631\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "561"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "68.08315\\-135.4789\\57\\66.13003\\-134.5018\\57\\62.22377\\-133.5027\\57\\60.27065\\-132.5711\\57\\56.3644\\-131.5463\\57\\54.41127\\-130.6412\\57\\52.45815\\-130.0234\\57\\50.50502\\-128.9241\\57\\49.03408\\-127.3959\\57\\47.97258\\-125.4428\\57\\48.13596\\-121.5365\\57\\47.59927\\-119.5834\\57\\46.59877\\-117.7109\\57\\45.38562\\-115.6771\\57\\39.4896\\-109.8178\\57\\38.2627\\-107.8646\\57\\38.40263\\-105.9115\\57\\38.78627\\-105.1655\\57\\39.6823\\-103.9584\\57\\40.7394\\-103.1932\\57\\41.90129\\-102.0053\\57\\42.69252\\-100.9213\\57\\43.5794\\-100.0521\\57\\44.64565\\-99.31628\\57\\46.59877\\-98.26917\\57\\48.5519\\-98.72641\\57\\50.50502\\-98.98483\\57\\52.45815\\-99.02254\\57\\53.88921\\-100.0521\\57\\54.26266\\-102.0053\\57\\54.95257\\-103.9584\\57\\55.83226\\-105.9115\\57\\57.0066\\-107.8646\\57\\58.34024\\-109.8178\\57\\59.17631\\-111.7709\\57\\62.76315\\-115.6771\\57\\63.63069\\-117.6303\\57\\65.38686\\-119.5834\\57\\67.53093\\-121.5365\\57\\68.08315\\-122.4201\\57\\69.03488\\-123.4896\\57\\70.03628\\-124.2236\\57\\71.9894\\-125.4195\\57\\73.98128\\-127.3959\\57\\75.22981\\-129.349\\57\\74.94495\\-131.3021\\57\\73.3299\\-133.2553\\57\\71.9894\\-134.5958\\57\\70.03628\\-135.9393\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "562"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "107.1457\\-214.1324\\57\\106.2667\\-213.3334\\57\\106.3846\\-211.3803\\57\\106.9713\\-209.4271\\57\\109.0988\\-207.5978\\57\\111.0519\\-208.5436\\57\\112.4792\\-209.4271\\57\\113.005\\-210.4953\\57\\113.2492\\-211.3803\\57\\112.6754\\-213.3334\\57\\111.0519\\-214.4531\\57\\109.0988\\-214.4628\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "563"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "113.005\\-197.7898\\57\\111.2648\\-195.7553\\57\\110.8855\\-193.8021\\57\\110.3773\\-189.8959\\57\\110.203\\-187.9428\\57\\110.182\\-185.9896\\57\\109.6272\\-184.0365\\57\\108.7097\\-182.0834\\57\\108.6673\\-180.1303\\57\\107.8044\\-178.1771\\57\\106.7804\\-176.224\\57\\106.7092\\-174.2709\\57\\105.9117\\-172.3178\\57\\104.8381\\-170.3646\\57\\104.7545\\-168.4115\\57\\103.2394\\-165.9939\\57\\101.5462\\-162.5521\\57\\100.1316\\-160.599\\57\\99.69697\\-158.6459\\57\\98.38313\\-156.6928\\57\\98.22852\\-154.7396\\57\\100.1426\\-152.7865\\57\\101.2863\\-151.0477\\57\\103.2394\\-149.8434\\57\\105.1793\\-150.8334\\57\\107.1457\\-152.3463\\57\\109.0988\\-153.2748\\57\\111.1237\\-154.7396\\57\\113.0559\\-156.6928\\57\\114.9582\\-158.5009\\57\\117.3593\\-160.599\\57\\118.4512\\-162.5521\\57\\118.5086\\-164.5053\\57\\119.5811\\-166.4584\\57\\121.0069\\-168.4115\\57\\122.8594\\-172.3178\\57\\123.0053\\-174.2709\\57\\122.5015\\-176.224\\57\\122.4994\\-178.1771\\57\\122.8573\\-180.1303\\57\\122.7788\\-182.0834\\57\\122.2081\\-184.0365\\57\\120.8175\\-186.6976\\57\\120.4373\\-187.9428\\57\\118.8644\\-190.8267\\57\\118.445\\-191.849\\57\\118.2116\\-193.8021\\57\\117.7492\\-195.7553\\57\\116.9113\\-196.651\\57\\114.9582\\-198.1654\\57"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "13"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "564"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-115.5106\\-188.0628\\59\\-116.8093\\-185.9896\\59\\-117.4637\\-185.1758\\59\\-117.9774\\-184.0365\\59\\-117.4637\\-182.991\\59\\-116.2583\\-182.0834\\59\\-115.5106\\-181.7095\\59\\-114.2514\\-182.0834\\59\\-113.5575\\-182.6693\\59\\-113.0878\\-184.0365\\59\\-112.6028\\-185.9896\\59\\-112.6312\\-187.9428\\59\\-113.5575\\-188.7715\\59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "25"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "565"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.7427\\-172.3178\\59\\-115.4032\\-170.3646\\59\\-115.6592\\-168.4115\\59\\-115.3069\\-166.4584\\59\\-114.1964\\-162.5521\\59\\-111.772\\-158.6459\\59\\-107.9104\\-154.7396\\59\\-106.3934\\-152.7865\\59\\-103.7918\\-150.205\\59\\-101.8387\\-148.9039\\59\\-99.8856\\-148.2484\\59\\-99.29351\\-148.8803\\59\\-98.84556\\-150.8334\\59\\-98.2143\\-152.7865\\59\\-98.02721\\-154.7396\\59\\-98.7999\\-156.6928\\59\\-101.8476\\-160.599\\59\\-102.9691\\-162.5521\\59\\-103.7918\\-163.8111\\59\\-106.001\\-166.4584\\59\\-107.6981\\-169.2029\\59\\-108.2372\\-170.3646\\59\\-109.4961\\-172.3178\\59\\-109.6512\\-172.9107\\59\\-111.6043\\-173.6583\\59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "566"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-82.30747\\-138.0869\\59\\-83.31659\\-137.1615\\59\\-84.20842\\-135.2084\\59\\-84.0368\\-133.2553\\59\\-83.04121\\-131.3021\\59\\-80.35435\\-128.3569\\59\\-75.47153\\-123.4896\\59\\-74.06451\\-121.5365\\59\\-73.00381\\-119.5834\\59\\-69.51916\\-115.6771\\59\\-68.15342\\-113.724\\59\\-67.02361\\-111.7709\\59\\-64.72935\\-109.0951\\59\\-63.85044\\-107.8646\\59\\-63.01195\\-105.9115\\59\\-62.36983\\-103.9584\\59\\-62.27938\\-102.0053\\59\\-61.48739\\-100.0521\\59\\-60.8231\\-99.43452\\59\\-58.86998\\-98.76606\\59\\-56.91685\\-97.32903\\59\\-54.96373\\-96.42985\\59\\-53.0106\\-96.9811\\59\\-52.39045\\-98.09901\\59\\-51.74002\\-100.0521\\59\\-51.05748\\-100.6625\\59\\-50.01532\\-102.0053\\59\\-48.07536\\-103.9584\\59\\-46.94894\\-105.9115\\59\\-47.82645\\-107.8646\\59\\-49.7305\\-109.8178\\59\\-54.96373\\-114.9295\\59\\-57.53114\\-117.6303\\59\\-58.19268\\-119.5834\\59\\-58.65827\\-121.5365\\59\\-58.69559\\-123.4896\\59\\-59.05698\\-125.4428\\59\\-60.26022\\-127.3959\\59\\-60.8231\\-127.8962\\59\\-62.84711\\-129.349\\59\\-62.95933\\-131.3021\\59\\-62.66486\\-133.2553\\59\\-64.72935\\-133.9227\\59\\-67.17075\\-135.2084\\59\\-68.6356\\-135.8706\\59\\-70.58872\\-136.5042\\59\\-74.49497\\-136.0629\\59\\-76.4481\\-136.4898\\59\\-78.40122\\-137.733\\59\\-80.35435\\-138.3783\\59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "567"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "58.31752\\-215.4493\\59\\56.3644\\-214.9825\\59\\54.41127\\-214.8189\\59\\52.45815\\-214.096\\59\\50.50502\\-212.8054\\59\\48.5519\\-212.1182\\59\\46.59877\\-210.4085\\59\\43.69069\\-207.474\\59\\42.3357\\-205.5209\\59\\42.3357\\-203.5678\\59\\41.61116\\-201.6146\\59\\40.7394\\-200.7513\\59\\39.17176\\-201.6146\\59\\38.78627\\-201.969\\59\\37.80488\\-203.5678\\59\\36.83315\\-204.5206\\59\\35.74265\\-203.5678\\59\\36.83315\\-201.5434\\59\\37.74559\\-199.6615\\59\\39.61868\\-197.7084\\59\\40.50368\\-195.7553\\59\\41.63691\\-193.8021\\59\\42.346\\-191.849\\59\\43.45207\\-189.8959\\59\\45.4502\\-187.9428\\59\\46.59877\\-186.9662\\59\\48.5519\\-185.8152\\59\\50.50502\\-185.8026\\59\\52.45815\\-185.1382\\59\\54.41127\\-184.7287\\59\\56.3644\\-185.2207\\59\\58.31752\\-185.8676\\59\\60.27065\\-187.0801\\59\\64.1769\\-190.444\\59\\67.30521\\-191.849\\59\\68.08315\\-192.3425\\59\\70.03628\\-194.2677\\59\\72.29816\\-197.7084\\59\\72.97164\\-199.6615\\59\\73.94253\\-200.6324\\59\\75.89565\\-201.9965\\59\\77.36342\\-203.5678\\59\\75.89565\\-205.6023\\59\\73.94253\\-205.8051\\59\\71.99789\\-207.474\\59\\70.77996\\-209.4271\\59\\68.8995\\-211.3803\\59\\66.13003\\-213.9958\\59\\64.1769\\-214.6074\\59\\62.22377\\-215.0718\\59\\60.27065\\-215.7367\\59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "568"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "66.13003\\-133.467\\59\\64.1769\\-132.5329\\59\\60.27065\\-131.5044\\59\\58.31752\\-130.5988\\59\\54.41127\\-129.8493\\59\\52.88194\\-129.349\\59\\50.50502\\-128.3725\\59\\49.53407\\-127.3959\\59\\47.87188\\-125.4428\\59\\47.90942\\-123.4896\\59\\48.11721\\-121.5365\\59\\47.36923\\-119.5834\\59\\46.1734\\-117.6303\\59\\45.38562\\-115.6771\\59\\41.45285\\-111.7709\\59\\39.68587\\-109.8178\\59\\39.3745\\-107.8646\\59\\40.0391\\-105.9115\\59\\40.7394\\-105.0863\\59\\45.78243\\-100.0521\\59\\46.59877\\-99.45161\\59\\50.50502\\-99.30975\\59\\52.45815\\-99.6133\\59\\52.97175\\-100.0521\\59\\54.7578\\-103.9584\\59\\55.52236\\-105.9115\\59\\56.99943\\-107.8646\\59\\58.79999\\-109.8178\\59\\59.61066\\-111.7709\\59\\61.02788\\-113.724\\59\\63.14532\\-115.6771\\59\\64.1769\\-117.0504\\59\\66.13003\\-119.1433\\59\\70.03628\\-123.0563\\59\\72.9369\\-125.4428\\59\\74.89597\\-127.3959\\59\\76.60951\\-129.349\\59\\76.44379\\-131.3021\\59\\73.94253\\-133.9996\\59\\71.9894\\-134.942\\59\\70.03628\\-134.5754\\59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "57"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "569"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "114.9582\\-198.5635\\59\\113.2231\\-197.7084\\59\\112.2065\\-195.7553\\59\\112.1738\\-191.849\\59\\111.7973\\-189.8959\\59\\111.2761\\-187.9428\\59\\111.2221\\-185.9896\\59\\110.643\\-184.0365\\59\\110.2204\\-182.0834\\59\\110.1995\\-180.1303\\59\\109.6712\\-178.1771\\59\\108.7157\\-176.224\\59\\108.3914\\-174.2709\\59\\107.7212\\-172.3178\\59\\106.8481\\-170.3646\\59\\106.7689\\-168.4115\\59\\105.5425\\-166.4584\\59\\104.0621\\-164.5053\\59\\103.0718\\-162.5521\\59\\101.635\\-160.599\\59\\101.0615\\-158.6459\\59\\99.7663\\-156.6928\\59\\99.44497\\-154.7396\\59\\100.3423\\-152.7865\\59\\100.8424\\-150.8334\\59\\101.2863\\-150.2281\\59\\103.2394\\-148.5173\\59\\105.1925\\-149.038\\59\\107.1457\\-150.4002\\59\\109.0988\\-151.1643\\59\\111.0519\\-152.3877\\59\\113.005\\-153.2965\\59\\114.481\\-154.7396\\59\\114.9582\\-155.5031\\59\\116.1698\\-156.6928\\59\\116.9113\\-157.1426\\59\\118.8644\\-158.8438\\59\\120.2762\\-160.599\\59\\120.5463\\-162.5521\\59\\120.591\\-164.5053\\59\\121.3614\\-166.4584\\59\\123.0233\\-168.4115\\59\\123.8009\\-170.3646\\59\\124.7238\\-175.0196\\59\\125.0712\\-176.224\\59\\125.0493\\-178.1771\\59\\124.7763\\-180.1303\\59\\124.7553\\-182.0834\\59\\124.5499\\-185.9896\\59\\123.2158\\-187.9428\\59\\122.7707\\-188.2339\\59\\120.8175\\-190.4322\\59\\119.7304\\-191.849\\59\\119.2282\\-193.8021\\59\\119.3035\\-195.7553\\59\\118.8644\\-196.444\\59\\117.098\\-197.7084\\59"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "30"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "570"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-113.5575\\-169.5667\\61\\-114.1807\\-168.4115\\61\\-114.4153\\-166.4584\\61\\-114.0014\\-164.5053\\61\\-113.6929\\-162.5521\\61\\-112.9422\\-160.599\\61\\-111.6043\\-158.9096\\61\\-111.2501\\-158.6459\\61\\-109.4649\\-156.6928\\61\\-108.7501\\-154.7396\\61\\-107.6981\\-152.9691\\61\\-106.26\\-150.8334\\61\\-103.7918\\-148.355\\61\\-101.8387\\-147.1837\\61\\-99.8856\\-146.2306\\61\\-97.93247\\-146.0455\\61\\-97.50646\\-146.9271\\61\\-97.68156\\-148.8803\\61\\-98.20301\\-150.8334\\61\\-98.08109\\-152.7865\\61\\-98.82388\\-154.7396\\61\\-99.8856\\-156.189\\61\\-102.3309\\-158.6459\\61\\-103.7918\\-160.2911\\61\\-104.3259\\-160.599\\61\\-105.745\\-162.0879\\61\\-107.6981\\-165.1854\\61\\-108.2639\\-166.4584\\61\\-109.6512\\-168.8607\\61\\-111.5311\\-170.3646\\61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "571"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-82.30747\\-137.9058\\61\\-83.35047\\-137.1615\\61\\-84.2606\\-136.2871\\61\\-85.67119\\-135.2084\\61\\-85.11585\\-133.2553\\61\\-83.35229\\-131.3021\\61\\-81.84897\\-129.349\\61\\-80.46617\\-127.3959\\61\\-76.4481\\-123.3676\\61\\-73.39755\\-119.5834\\61\\-71.57054\\-117.6303\\61\\-70.12517\\-115.6771\\61\\-69.02495\\-113.724\\61\\-66.68247\\-111.1386\\61\\-65.60365\\-109.8178\\61\\-64.16064\\-107.8646\\61\\-62.33233\\-103.9584\\61\\-62.01391\\-102.0053\\61\\-60.8231\\-100.7299\\61\\-58.86998\\-99.24132\\61\\-54.96373\\-97.25881\\61\\-53.77568\\-98.09901\\61\\-53.53557\\-100.0521\\61\\-51.64204\\-102.0053\\61\\-49.28654\\-103.9584\\61\\-48.18953\\-105.9115\\61\\-48.09219\\-107.8646\\61\\-49.73826\\-109.8178\\61\\-57.71002\\-117.6303\\61\\-58.96472\\-119.5834\\61\\-59.44149\\-121.5365\\61\\-59.45258\\-123.4896\\61\\-59.64269\\-125.4428\\61\\-60.6053\\-127.3959\\61\\-62.48483\\-129.349\\61\\-61.60308\\-131.3021\\61\\-62.64773\\-133.2553\\61\\-66.68247\\-134.6328\\61\\-68.6356\\-135.9103\\61\\-70.58872\\-136.4859\\61\\-72.54185\\-136.8295\\61\\-76.4481\\-135.5449\\61\\-78.40122\\-136.3909\\61\\-80.35435\\-137.6835\\61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "572"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-212.5179\\61\\48.5519\\-211.3726\\61\\46.59877\\-210.4085\\61\\43.69069\\-207.474\\61\\42.3357\\-205.5209\\61\\42.3357\\-203.5678\\61\\41.19163\\-201.6146\\61\\40.7394\\-201.1961\\61\\38.78627\\-202.8874\\61\\36.83315\\-205.1005\\61\\34.88002\\-205.6029\\61\\34.77573\\-205.5209\\61\\35.20325\\-203.5678\\61\\36.83315\\-201.9263\\61\\37.26398\\-201.6146\\61\\37.83802\\-199.6615\\61\\39.62399\\-197.7084\\61\\40.50368\\-195.7553\\61\\41.63691\\-193.8021\\61\\42.3357\\-191.849\\61\\43.66439\\-189.8959\\61\\46.59877\\-186.9709\\61\\48.5519\\-185.8152\\61\\50.50502\\-185.7902\\61\\52.45815\\-185.1074\\61\\54.41127\\-184.7348\\61\\56.3644\\-185.1835\\61\\58.31752\\-185.8676\\61\\60.27065\\-187.085\\61\\64.1769\\-190.9659\\61\\65.27554\\-191.849\\61\\67.47593\\-193.8021\\61\\69.24829\\-195.7553\\61\\70.80082\\-197.7084\\61\\71.63245\\-199.6615\\61\\71.9894\\-200.069\\61\\73.94253\\-201.1882\\61\\75.89565\\-202.5746\\61\\76.83546\\-203.5678\\61\\76.55699\\-205.5209\\61\\75.89565\\-206.1146\\61\\73.94253\\-205.7462\\61\\71.9894\\-205.7669\\61\\70.03628\\-207.4428\\61\\68.82153\\-209.4271\\61\\66.13003\\-212.1661\\61\\64.1769\\-213.5512\\61\\62.22377\\-214.1983\\61\\60.27065\\-214.5606\\61\\56.3644\\-214.5777\\61\\54.41127\\-214.2772\\61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "573"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "69.67996\\-133.2553\\61\\68.08315\\-132.5561\\61\\64.1769\\-131.4242\\61\\62.22377\\-130.554\\61\\58.31752\\-129.5285\\61\\54.41127\\-128.6424\\61\\52.45815\\-128.0626\\61\\50.50502\\-126.9843\\61\\49.01284\\-125.4428\\61\\48.25893\\-123.4896\\61\\48.13596\\-121.5365\\61\\47.36923\\-119.5834\\61\\46.1734\\-117.6303\\61\\45.38562\\-115.6771\\61\\41.47802\\-111.7709\\61\\40.18544\\-109.8178\\61\\40.51178\\-107.8646\\61\\41.84772\\-105.9115\\61\\46.59877\\-101.145\\61\\48.5519\\-100.6336\\61\\50.50502\\-100.409\\61\\52.45815\\-101.0347\\61\\53.33276\\-102.0053\\61\\54.72609\\-103.9584\\61\\55.521\\-105.9115\\61\\56.99219\\-107.8646\\61\\58.9491\\-109.8178\\61\\60.29336\\-111.7709\\61\\61.48358\\-113.724\\61\\63.67159\\-115.6771\\61\\65.18204\\-117.6303\\61\\70.03628\\-122.5239\\61\\71.83839\\-123.4896\\61\\73.94253\\-124.9585\\61\\76.38796\\-127.3959\\61\\77.87403\\-129.349\\61\\77.23916\\-131.3021\\61\\75.89565\\-133.2963\\61\\73.94253\\-134.5377\\61\\71.9894\\-134.4384\\61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "574"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "114.9582\\-198.0675\\61\\114.4521\\-197.7084\\61\\113.3216\\-195.7553\\61\\112.883\\-193.8021\\61\\112.9074\\-189.8959\\61\\112.3743\\-185.9896\\61\\111.3435\\-182.0834\\61\\111.3082\\-180.1303\\61\\110.9853\\-178.1771\\61\\109.8442\\-174.2709\\61\\109.0761\\-172.3178\\61\\108.4047\\-168.4115\\61\\107.3022\\-166.4584\\61\\105.6228\\-164.5053\\61\\105.0018\\-162.5521\\61\\103.6037\\-160.599\\61\\103.1514\\-158.6459\\61\\101.7364\\-156.6928\\61\\100.7274\\-154.7396\\61\\100.6405\\-152.7865\\61\\100.8333\\-150.8334\\61\\101.4678\\-148.8803\\61\\103.2394\\-147.1394\\61\\105.1925\\-147.2144\\61\\107.1457\\-148.454\\61\\109.0988\\-149.1675\\61\\111.0519\\-150.3967\\61\\113.005\\-151.0921\\61\\114.9582\\-152.2664\\61\\116.7026\\-154.7396\\61\\118.8644\\-157.1878\\61\\120.8268\\-158.6459\\61\\122.7096\\-160.599\\61\\122.7137\\-164.5053\\61\\122.8088\\-166.4584\\61\\124.9275\\-170.3646\\61\\125.493\\-172.3178\\61\\125.7796\\-174.2709\\61\\126.9529\\-176.224\\61\\127.7191\\-178.1771\\61\\127.8705\\-180.1303\\61\\127.8852\\-182.0834\\61\\128.63\\-183.5482\\61\\129.0762\\-185.9896\\61\\128.63\\-187.166\\61\\127.9325\\-187.9428\\61\\126.9821\\-189.8959\\61\\126.6769\\-190.2038\\61\\124.6102\\-189.8959\\61\\122.7707\\-190.4609\\61\\120.8175\\-192.2567\\61\\119.9885\\-193.8021\\61\\119.8828\\-195.7553\\61\\118.8644\\-197.006\\61\\116.9113\\-197.5983\\61"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "9"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "575"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-111.6043\\-168.1959\\63\\-113.16\\-166.4584\\63\\-112.8271\\-164.5053\\63\\-112.8069\\-162.5521\\63\\-111.6043\\-160.4818\\63\\-109.6512\\-160.1921\\63\\-108.6747\\-160.599\\63\\-108.3084\\-162.5521\\63\\-109.6512\\-165.595\\63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "75"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "576"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-105.745\\-158.4628\\63\\-107.3915\\-156.6928\\63\\-107.8949\\-154.7396\\63\\-107.0042\\-150.8334\\63\\-106.192\\-148.8803\\63\\-103.7918\\-146.4839\\63\\-101.8387\\-145.166\\63\\-99.8856\\-144.3881\\63\\-98.0834\\-143.0209\\63\\-95.97935\\-141.0445\\63\\-94.02622\\-140.5857\\63\\-92.0731\\-138.981\\63\\-88.41099\\-135.2084\\63\\-86.21372\\-133.1399\\63\\-84.2606\\-131.1801\\63\\-83.07928\\-129.349\\63\\-81.3736\\-127.3959\\63\\-78.40122\\-124.654\\63\\-75.50254\\-121.5365\\63\\-74.00977\\-119.5834\\63\\-72.67828\\-117.6303\\63\\-71.04365\\-115.6771\\63\\-69.26582\\-113.724\\63\\-67.31233\\-111.7709\\63\\-65.99836\\-109.8178\\63\\-65.0571\\-107.8646\\63\\-63.48211\\-105.9115\\63\\-62.29661\\-103.9584\\63\\-61.66226\\-102.0053\\63\\-60.8231\\-101.2176\\63\\-58.86998\\-99.68514\\63\\-56.91685\\-98.64154\\63\\-54.96373\\-97.86329\\63\\-54.70081\\-98.09901\\63\\-53.83128\\-100.0521\\63\\-52.39351\\-102.0053\\63\\-50.22296\\-103.9584\\63\\-49.50128\\-105.9115\\63\\-48.92744\\-107.8646\\63\\-49.77958\\-109.8178\\63\\-51.7029\\-111.7709\\63\\-55.71532\\-115.6771\\63\\-57.85272\\-117.6303\\63\\-59.6208\\-119.5834\\63\\-60.08692\\-121.5365\\63\\-60.02025\\-123.4896\\63\\-59.73656\\-125.4428\\63\\-59.97461\\-127.3959\\63\\-61.44081\\-129.349\\63\\-62.02985\\-131.3021\\63\\-62.77623\\-131.9763\\63\\-64.72935\\-132.4932\\63\\-66.68247\\-133.7606\\63\\-68.6356\\-134.4646\\63\\-70.58872\\-135.764\\63\\-72.54185\\-136.4498\\63\\-74.49497\\-136.741\\63\\-75.60588\\-135.2084\\63\\-76.4481\\-134.3289\\63\\-78.40122\\-134.8192\\63\\-80.35435\\-136.3615\\63\\-82.30747\\-137.409\\63\\-84.2606\\-137.3359\\63\\-86.21372\\-137.3956\\63\\-88.16685\\-139.168\\63\\-90.11997\\-139.9716\\63\\-93.18638\\-143.0209\\63\\-94.02622\\-143.4724\\63\\-95.97935\\-145.3858\\63\\-96.6422\\-146.9271\\63\\-97.0855\\-148.8803\\63\\-99.16798\\-152.7865\\63\\-99.8856\\-153.888\\63\\-101.8387\\-155.7923\\63\\-103.7918\\-157.5191\\63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "577"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-213.4281\\63\\50.50502\\-212.5071\\63\\48.5519\\-211.2718\\63\\46.59877\\-210.4085\\63\\43.69069\\-207.474\\63\\42.3357\\-205.5209\\63\\42.3357\\-203.5678\\63\\40.79733\\-201.6146\\63\\40.67429\\-201.6146\\63\\38.6605\\-203.5678\\63\\37.46844\\-205.5209\\63\\36.83315\\-206.1701\\63\\34.88002\\-206.5412\\63\\33.57233\\-205.5209\\63\\34.59734\\-203.5678\\63\\36.83315\\-202.2277\\63\\37.53158\\-201.6146\\63\\38.02944\\-199.6615\\63\\39.62925\\-197.7084\\63\\40.50368\\-195.7553\\63\\41.63691\\-193.8021\\63\\42.3357\\-191.849\\63\\43.66439\\-189.8959\\63\\46.59877\\-186.9851\\63\\48.5519\\-185.841\\63\\50.50502\\-185.8026\\63\\52.45815\\-185.4843\\63\\54.41127\\-185.3611\\63\\56.3644\\-185.4843\\63\\58.31752\\-185.9089\\63\\60.27065\\-187.0938\\63\\67.05598\\-193.8021\\63\\68.08315\\-195.7083\\63\\70.33286\\-199.6615\\63\\71.9894\\-201.1725\\63\\73.94253\\-202.1061\\63\\75.39468\\-203.5678\\63\\74.84728\\-205.5209\\63\\73.94253\\-205.9103\\63\\71.9894\\-205.2169\\63\\70.03628\\-205.7116\\63\\68.08315\\-207.3245\\63\\66.495\\-209.4271\\63\\64.88036\\-211.3803\\63\\64.1769\\-211.9607\\63\\62.22377\\-212.8451\\63\\60.27065\\-213.5686\\63\\58.31752\\-213.7904\\63\\56.3644\\-213.7904\\63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "578"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "73.94253\\-133.9639\\63\\71.9894\\-132.8632\\63\\70.03628\\-132.0603\\63\\68.08315\\-131.4242\\63\\66.13003\\-130.4782\\63\\64.1769\\-129.7349\\63\\62.22377\\-129.3717\\63\\60.27065\\-128.5733\\63\\58.31752\\-128.0581\\63\\54.41127\\-127.4656\\63\\52.45815\\-126.558\\63\\50.50502\\-124.9902\\63\\49.3796\\-123.4896\\63\\47.39071\\-119.5834\\63\\46.19238\\-117.6303\\63\\45.38562\\-115.6771\\63\\42.69252\\-112.9273\\63\\41.66576\\-111.7709\\63\\41.38868\\-109.8178\\63\\42.06026\\-107.8646\\63\\42.69252\\-107.0627\\63\\46.59877\\-103.1527\\63\\48.5519\\-101.8055\\63\\50.50502\\-101.087\\63\\52.45815\\-101.6461\\63\\54.6931\\-103.9584\\63\\55.48501\\-105.9115\\63\\56.98487\\-107.8646\\63\\58.94188\\-109.8178\\63\\62.22377\\-113.3223\\63\\64.73916\\-115.6771\\63\\66.13003\\-117.249\\63\\70.03628\\-121.0711\\63\\73.94253\\-123.3935\\63\\77.84878\\-127.2584\\63\\79.91204\\-129.349\\63\\79.38874\\-131.3021\\63\\77.84878\\-132.3941\\63\\77.12567\\-133.2553\\63\\75.89565\\-134.0691\\63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "62"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "579"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "114.9582\\-195.872\\63\\113.8991\\-193.8021\\63\\113.7558\\-191.849\\63\\114.171\\-189.8959\\63\\114.164\\-187.9428\\63\\113.8335\\-185.9896\\63\\113.0726\\-184.0365\\63\\112.4231\\-180.1303\\63\\112.2156\\-178.1771\\63\\111.8848\\-176.224\\63\\111.1339\\-174.2709\\63\\110.3739\\-170.3646\\63\\109.818\\-168.4115\\63\\108.2551\\-166.4584\\63\\107.2964\\-164.5053\\63\\106.9803\\-162.5521\\63\\105.624\\-160.599\\63\\105.1689\\-158.6459\\63\\103.7277\\-156.6928\\63\\102.1624\\-154.7396\\63\\101.7599\\-152.7865\\63\\101.2341\\-150.8334\\63\\100.8516\\-148.8803\\63\\101.3634\\-146.9271\\63\\100.9608\\-144.974\\63\\101.2863\\-143.7607\\63\\103.2394\\-144.7853\\63\\105.1925\\-145.1676\\63\\107.1457\\-146.4839\\63\\109.0988\\-147.1525\\63\\111.0519\\-148.3958\\63\\113.005\\-149.0872\\63\\114.9582\\-149.2635\\63\\116.4893\\-150.8334\\63\\116.8713\\-152.7865\\63\\117.9087\\-154.7396\\63\\118.8644\\-155.8098\\63\\120.8175\\-157.2834\\63\\123.4347\\-158.6459\\63\\124.7238\\-159.9524\\63\\125.1435\\-160.599\\63\\124.9867\\-162.5521\\63\\124.201\\-164.5053\\63\\123.9286\\-166.4584\\63\\124.7238\\-167.9628\\63\\126.4385\\-170.3646\\63\\126.7862\\-172.3178\\63\\126.9718\\-174.2709\\63\\127.7788\\-176.224\\63\\129.4036\\-178.1771\\63\\129.6958\\-180.1303\\63\\129.7053\\-182.0834\\63\\129.8941\\-184.0365\\63\\129.9236\\-185.9896\\63\\129.1987\\-187.9428\\63\\127.9061\\-189.8959\\63\\126.6769\\-191.2031\\63\\124.7238\\-191.3278\\63\\122.7707\\-192.1153\\63\\120.8714\\-193.8021\\63\\118.8644\\-195.9871\\63\\116.9113\\-196.545\\63"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "71"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "580"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-105.745\\-154.6176\\65\\-106.7688\\-152.7865\\65\\-106.9422\\-150.8334\\65\\-106.914\\-148.8803\\65\\-105.8147\\-146.9271\\65\\-103.7918\\-144.8622\\65\\-101.8387\\-143.5942\\65\\-99.8856\\-142.5844\\65\\-97.93247\\-140.7039\\65\\-95.97935\\-139.7006\\65\\-94.02622\\-138.2869\\65\\-92.66909\\-137.1615\\65\\-90.11997\\-134.6069\\65\\-88.16685\\-133.2476\\65\\-86.21372\\-132.1466\\65\\-85.37422\\-131.3021\\65\\-83.80487\\-129.349\\65\\-82.47636\\-127.3959\\65\\-79.88065\\-125.4428\\65\\-78.06242\\-123.4896\\65\\-75.21043\\-119.5834\\65\\-73.50376\\-117.6303\\65\\-67.67513\\-111.7709\\65\\-66.43499\\-109.8178\\65\\-65.32808\\-107.8646\\65\\-63.69056\\-105.9115\\65\\-62.77623\\-104.3308\\65\\-61.18118\\-102.0053\\65\\-60.8231\\-101.6587\\65\\-58.86998\\-100.8345\\65\\-56.91685\\-100.1553\\65\\-54.96373\\-100.2677\\65\\-53.79014\\-102.0053\\65\\-53.0106\\-102.5471\\65\\-51.57305\\-103.9584\\65\\-50.38139\\-107.8646\\65\\-50.06597\\-109.8178\\65\\-51.71413\\-111.7709\\65\\-53.71648\\-113.724\\65\\-55.82243\\-115.6771\\65\\-56.91685\\-116.5388\\65\\-58.86998\\-117.5769\\65\\-60.0944\\-119.5834\\65\\-60.83073\\-121.5365\\65\\-60.78495\\-123.4896\\65\\-59.35244\\-125.4428\\65\\-59.67282\\-127.3959\\65\\-60.8231\\-128.7553\\65\\-62.77623\\-130.7872\\65\\-64.72935\\-131.9307\\65\\-66.68247\\-132.8478\\65\\-68.6356\\-133.9578\\65\\-70.58872\\-134.4774\\65\\-72.54185\\-135.2008\\65\\-74.49497\\-136.2887\\65\\-76.4481\\-134.5899\\65\\-78.40122\\-134.0505\\65\\-80.35435\\-134.7939\\65\\-82.30747\\-136.3253\\65\\-84.2606\\-137.409\\65\\-86.21372\\-138.1381\\65\\-88.16685\\-139.6\\65\\-90.11997\\-140.8515\\65\\-92.30166\\-143.0209\\65\\-94.02622\\-144.3947\\65\\-96.57402\\-146.9271\\65\\-97.64086\\-148.8803\\65\\-99.22699\\-150.8334\\65\\-99.8856\\-151.5186\\65\\-101.6134\\-152.7865\\65\\-103.7918\\-154.5063\\65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "581"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-212.0713\\65\\46.59877\\-210.4085\\65\\43.69069\\-207.474\\65\\42.3357\\-205.5209\\65\\42.3357\\-203.5678\\65\\40.79733\\-201.6146\\65\\40.67429\\-201.6146\\65\\38.6605\\-203.5678\\65\\37.6721\\-205.5209\\65\\36.83315\\-206.3956\\65\\34.88002\\-206.6246\\65\\33.68754\\-205.5209\\65\\34.88002\\-203.8614\\65\\37.26133\\-201.6146\\65\\37.85279\\-199.6615\\65\\39.62399\\-197.7084\\65\\40.50368\\-195.7553\\65\\41.63691\\-193.8021\\65\\42.3357\\-191.849\\65\\43.66439\\-189.8959\\65\\46.59877\\-187.093\\65\\48.5519\\-186.3279\\65\\50.50502\\-185.841\\65\\56.3644\\-185.8152\\65\\58.31752\\-186.3815\\65\\60.27065\\-187.1496\\65\\63.13189\\-189.8959\\65\\67.05598\\-193.8021\\65\\68.1213\\-197.7084\\65\\69.02174\\-199.6615\\65\\70.03628\\-200.6649\\65\\71.9894\\-202.0585\\65\\73.94253\\-203.3193\\65\\73.94253\\-204.0646\\65\\72.60369\\-205.5209\\65\\71.9894\\-205.78\\65\\70.03628\\-205.2061\\65\\68.08315\\-205.3077\\65\\66.13003\\-207.217\\65\\64.1769\\-209.5698\\65\\62.53269\\-211.3803\\65\\60.27065\\-212.4293\\65\\58.31752\\-212.9174\\65\\52.45815\\-212.9367\\65\\50.50502\\-212.7872\\65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "582"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "75.89565\\-133.7521\\65\\73.94253\\-132.5635\\65\\71.9894\\-131.8375\\65\\70.03628\\-130.657\\65\\68.08315\\-130.0643\\65\\66.13003\\-128.8946\\65\\64.1769\\-128.1438\\65\\60.27065\\-127.4188\\65\\58.31752\\-126.6113\\65\\56.3644\\-126.0691\\65\\54.41127\\-125.7389\\65\\52.45815\\-124.8925\\65\\50.50502\\-123.0895\\65\\48.5519\\-120.9092\\65\\47.58477\\-119.5834\\65\\46.59877\\-117.7109\\65\\45.41793\\-115.6771\\65\\43.65527\\-113.724\\65\\42.33107\\-111.7709\\65\\42.53948\\-109.8178\\65\\43.88784\\-107.8646\\65\\46.59877\\-105.1442\\65\\50.50502\\-102.6649\\65\\52.45815\\-102.6024\\65\\54.41127\\-103.6975\\65\\54.67036\\-103.9584\\65\\55.48405\\-105.9115\\65\\57.01011\\-107.8646\\65\\58.95972\\-109.8178\\65\\61.0113\\-111.7709\\65\\62.22377\\-112.7841\\65\\64.1769\\-114.691\\65\\66.13003\\-116.2986\\65\\68.08315\\-117.6068\\65\\71.9894\\-120.7257\\65\\73.94253\\-122.5237\\65\\77.84878\\-126.3866\\65\\81.15725\\-129.349\\65\\81.75503\\-130.8434\\65\\82.22077\\-131.3021\\65\\82.34862\\-133.2553\\65\\81.75503\\-133.6434\\65\\79.6734\\-133.2553\\65\\77.84878\\-133.6806\\65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "59"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "583"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "116.9113\\-194.2482\\65\\116.3554\\-193.8021\\65\\115.1841\\-191.849\\65\\115.3645\\-189.8959\\65\\115.3645\\-187.9428\\65\\114.708\\-184.0365\\65\\114.6757\\-182.0834\\65\\113.4304\\-178.1771\\65\\113.1271\\-176.224\\65\\112.3352\\-172.3178\\65\\111.8184\\-170.3646\\65\\111.0746\\-168.4115\\65\\109.7037\\-166.4584\\65\\108.926\\-164.5053\\65\\108.4655\\-162.5521\\65\\107.6023\\-160.599\\65\\107.1457\\-159.8342\\65\\105.6605\\-156.6928\\65\\103.7769\\-154.7396\\65\\102.7094\\-152.7865\\65\\102.0706\\-150.8334\\65\\101.2863\\-148.8137\\65\\100.798\\-146.9271\\65\\100.0774\\-144.974\\65\\99.54241\\-143.0209\\65\\101.2863\\-141.1102\\65\\103.2394\\-142.6732\\65\\105.1925\\-143.5853\\65\\107.1457\\-144.6195\\65\\109.0988\\-145.134\\65\\111.0519\\-146.117\\65\\113.005\\-146.9887\\65\\116.9113\\-147.2856\\65\\118.1226\\-148.8803\\65\\118.0843\\-150.8334\\65\\118.3073\\-152.7865\\65\\119.3298\\-154.7396\\65\\120.8175\\-155.8598\\65\\122.7707\\-157.1181\\65\\124.7238\\-157.8426\\65\\125.5727\\-158.6459\\65\\126.9917\\-160.599\\65\\126.8123\\-162.5521\\65\\125.9716\\-164.5053\\65\\125.4381\\-166.4584\\65\\127.1074\\-168.4115\\65\\127.9494\\-170.3646\\65\\127.7625\\-172.3178\\65\\127.7625\\-174.2709\\65\\128.3825\\-176.224\\65\\129.6413\\-178.1771\\65\\129.761\\-180.1303\\65\\129.7494\\-184.0365\\65\\129.1559\\-185.9896\\65\\128.63\\-186.816\\65\\127.1409\\-189.8959\\65\\126.6769\\-190.3953\\65\\124.6511\\-191.849\\65\\120.8175\\-194.2286\\65"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "66"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "584"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-105.745\\-151.2519\\67\\-106.6428\\-148.8803\\67\\-106.2212\\-146.9271\\67\\-104.7447\\-144.974\\67\\-103.7918\\-143.9463\\67\\-101.8387\\-142.1671\\67\\-97.93247\\-139.1068\\67\\-95.97935\\-138.2699\\67\\-94.57886\\-137.1615\\67\\-92.0731\\-134.6381\\67\\-90.11997\\-132.8018\\67\\-88.16685\\-131.9716\\67\\-86.21372\\-130.5845\\67\\-83.3773\\-127.3959\\67\\-81.26292\\-125.4428\\67\\-78.40122\\-122.566\\67\\-77.4922\\-121.5365\\67\\-74.59043\\-117.6303\\67\\-70.58872\\-113.6843\\67\\-68.58219\\-111.7709\\67\\-65.386\\-107.8646\\67\\-64.72935\\-106.965\\67\\-62.7841\\-103.9584\\67\\-60.8231\\-102.7073\\67\\-58.86998\\-102.348\\67\\-56.91685\\-102.2943\\67\\-54.96373\\-102.8393\\67\\-53.26017\\-103.9584\\67\\-52.70728\\-105.9115\\67\\-52.04046\\-107.8646\\67\\-51.05748\\-109.7802\\67\\-51.8056\\-111.7709\\67\\-53.0106\\-112.8116\\67\\-54.96373\\-114.6601\\67\\-56.91685\\-116.2073\\67\\-58.86998\\-116.8203\\67\\-59.67232\\-117.6303\\67\\-60.38841\\-119.5834\\67\\-61.50722\\-121.5365\\67\\-62.77623\\-123.4349\\67\\-62.77623\\-123.6605\\67\\-60.8231\\-124.7845\\67\\-60.0225\\-125.4428\\67\\-59.98378\\-127.3959\\67\\-62.77623\\-130.2525\\67\\-64.72935\\-131.4507\\67\\-66.68247\\-132.5256\\67\\-68.6356\\-133.7935\\67\\-70.58872\\-133.657\\67\\-72.54185\\-133.9241\\67\\-74.49497\\-134.7404\\67\\-76.4481\\-135.2006\\67\\-78.40122\\-134.3248\\67\\-80.35435\\-134.0356\\67\\-82.30747\\-134.7476\\67\\-84.2606\\-136.3005\\67\\-86.21372\\-137.5989\\67\\-88.16685\\-138.5378\\67\\-88.7757\\-139.1146\\67\\-91.1926\\-141.0678\\67\\-97.06752\\-146.9271\\67\\-97.93247\\-147.8615\\67\\-99.18277\\-148.8803\\67\\-100.8684\\-150.8334\\67\\-101.8387\\-151.6697\\67\\-103.7918\\-152.4929\\67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "585"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-212.3467\\67\\43.69069\\-207.474\\67\\42.3357\\-205.5209\\67\\42.3357\\-203.5678\\67\\40.79733\\-201.6146\\67\\40.67429\\-201.6146\\67\\38.59381\\-203.5678\\67\\37.66188\\-205.5209\\67\\36.83315\\-206.3812\\67\\34.88002\\-206.7894\\67\\33.78938\\-205.5209\\67\\35.60873\\-203.5678\\67\\36.83315\\-201.5231\\67\\37.67612\\-199.6615\\67\\39.61868\\-197.7084\\67\\40.5524\\-195.7553\\67\\41.64687\\-193.8021\\67\\42.3357\\-191.849\\67\\43.67378\\-189.8959\\67\\44.64565\\-188.9287\\67\\46.59877\\-187.4545\\67\\50.50502\\-186.3173\\67\\52.45815\\-185.8026\\67\\56.3644\\-185.841\\67\\58.31752\\-186.8752\\67\\60.27065\\-187.4208\\67\\62.22377\\-189.0148\\67\\67.05598\\-193.8021\\67\\67.60354\\-195.7553\\67\\67.6123\\-197.7084\\67\\68.1216\\-199.6615\\67\\70.56822\\-201.6146\\67\\71.9894\\-202.6251\\67\\72.89543\\-203.5678\\67\\72.78532\\-205.5209\\67\\71.9894\\-206.2381\\67\\70.03628\\-205.8485\\67\\68.08315\\-204.6452\\67\\66.13003\\-205.5125\\67\\65.07094\\-207.474\\67\\62.22377\\-210.6942\\67\\60.27065\\-212.3995\\67\\58.31752\\-212.927\\67\\50.50502\\-212.9367\\67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "41"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "586"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "77.84878\\-132.9847\\67\\75.89565\\-132.4384\\67\\73.86964\\-131.3021\\67\\70.03628\\-129.8524\\67\\68.08315\\-128.5466\\67\\65.91772\\-127.3959\\67\\64.1769\\-126.7211\\67\\62.22377\\-126.2642\\67\\60.27065\\-126.0432\\67\\58.31752\\-125.4815\\67\\56.3644\\-124.5455\\67\\52.45815\\-122.9112\\67\\50.50502\\-121.4962\\67\\48.5519\\-119.2913\\67\\47.44772\\-117.6303\\67\\45.6817\\-115.6771\\67\\44.1231\\-111.7709\\67\\44.47186\\-109.8178\\67\\45.88047\\-107.8646\\67\\47.81746\\-105.9115\\67\\48.5519\\-105.3455\\67\\50.50502\\-104.4284\\67\\52.45815\\-103.2802\\67\\53.70377\\-103.9584\\67\\54.41127\\-104.5362\\67\\55.33328\\-105.9115\\67\\60.27065\\-110.8146\\67\\64.12431\\-113.724\\67\\66.50562\\-115.6771\\67\\69.31638\\-117.6303\\67\\70.03628\\-118.2542\\67\\71.9894\\-119.5308\\67\\74.09338\\-121.5365\\67\\76.42092\\-123.4896\\67\\80.39399\\-127.3959\\67\\81.75503\\-128.4762\\67\\83.70815\\-130.3753\\67\\84.81889\\-131.3021\\67\\84.605\\-133.2553\\67\\83.70815\\-133.9528\\67\\81.75503\\-134.4304\\67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "59"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "587"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "120.8175\\-192.0474\\67\\119.7596\\-191.849\\67\\118.8644\\-191.3119\\67\\117.1985\\-189.8959\\67\\116.968\\-187.9428\\67\\116.8486\\-185.9896\\67\\116.9381\\-182.0834\\67\\114.7279\\-178.1771\\67\\114.3304\\-176.224\\67\\114.1804\\-174.2709\\67\\113.7829\\-172.3178\\67\\112.3859\\-168.4115\\67\\111.5611\\-166.4584\\67\\110.4485\\-164.5053\\67\\109.2615\\-160.599\\67\\106.7245\\-156.6928\\67\\105.7209\\-154.7396\\67\\104.1575\\-152.7865\\67\\102.8425\\-150.8334\\67\\101.2863\\-146.9633\\67\\100.089\\-144.974\\67\\99.04018\\-143.0209\\67\\99.661\\-141.0678\\67\\99.27932\\-139.1146\\67\\101.2863\\-138.9708\\67\\103.2394\\-140.6639\\67\\107.1457\\-142.9679\\67\\111.0519\\-143.2704\\67\\113.005\\-144.808\\67\\114.9582\\-145.1628\\67\\116.9113\\-145.2081\\67\\118.8644\\-145.6334\\67\\120.8175\\-146.7548\\67\\120.9285\\-146.9271\\67\\119.9234\\-148.8803\\67\\119.3174\\-150.8334\\67\\119.7811\\-152.7865\\67\\120.8175\\-154.1713\\67\\122.7707\\-155.4841\\67\\124.7238\\-156.4668\\67\\126.7456\\-158.6459\\67\\127.7427\\-160.599\\67\\127.7553\\-162.5521\\67\\127.5873\\-164.5053\\67\\127.718\\-166.4584\\67\\128.63\\-167.5619\\67\\129.1418\\-168.4115\\67\\128.7797\\-170.3646\\67\\127.9672\\-172.3178\\67\\127.9672\\-174.2709\\67\\128.1081\\-176.224\\67\\128.3808\\-178.1771\\67\\128.4403\\-182.0834\\67\\128.3548\\-184.0365\\67\\126.9573\\-185.9896\\67\\126.6769\\-187.1225\\67\\126.2667\\-187.9428\\67\\124.7973\\-189.8959\\67\\122.7707\\-191.9051\\67"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "63"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "588"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-103.7918\\-150.8094\\69\\-105.415\\-148.8803\\69\\-105.3985\\-146.9271\\69\\-105.0101\\-144.974\\69\\-104.2965\\-143.0209\\69\\-103.7918\\-142.4512\\69\\-99.8856\\-138.608\\69\\-97.93247\\-137.2354\\69\\-95.97935\\-136.5332\\69\\-92.68539\\-133.2553\\69\\-92.0731\\-132.7232\\69\\-90.11997\\-131.7657\\69\\-88.16685\\-130.4532\\69\\-84.2606\\-127.1607\\69\\-80.35435\\-123.1685\\69\\-78.8895\\-121.5365\\69\\-77.28595\\-119.5834\\69\\-74.49497\\-116.6283\\69\\-71.56528\\-113.724\\69\\-69.28867\\-111.7709\\69\\-66.68247\\-109.1441\\69\\-65.65111\\-107.8646\\69\\-64.44753\\-105.9115\\69\\-62.77623\\-104.3453\\69\\-60.8231\\-103.4241\\69\\-58.86998\\-103.1039\\69\\-56.91685\\-103.6902\\69\\-56.42223\\-103.9584\\69\\-54.96373\\-105.4169\\69\\-53.63588\\-107.8646\\69\\-52.44152\\-109.8178\\69\\-52.35732\\-111.7709\\69\\-53.0106\\-112.3314\\69\\-54.96373\\-113.5834\\69\\-56.91685\\-115.3875\\69\\-59.09534\\-117.6303\\69\\-60.30341\\-119.5834\\69\\-62.77623\\-122.0763\\69\\-64.72935\\-123.0977\\69\\-65.94507\\-123.4896\\69\\-64.58984\\-125.4428\\69\\-62.77623\\-126.1481\\69\\-61.47204\\-127.3959\\69\\-63.07733\\-129.349\\69\\-65.98246\\-131.3021\\69\\-66.68247\\-131.8753\\69\\-68.6356\\-132.8114\\69\\-70.58872\\-132.4126\\69\\-72.54185\\-132.5384\\69\\-74.49497\\-133.7702\\69\\-76.4481\\-134.4543\\69\\-78.40122\\-134.9115\\69\\-80.35435\\-134.0636\\69\\-82.30747\\-133.7102\\69\\-84.2606\\-134.6836\\69\\-86.21372\\-136.2743\\69\\-88.16685\\-138.0266\\69\\-90.11997\\-138.9751\\69\\-92.0731\\-140.3745\\69\\-97.93247\\-146.1834\\69\\-99.8856\\-147.4889\\69\\-101.241\\-148.8803\\69\\-101.8387\\-149.6865\\69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "589"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-212.3316\\69\\44.64565\\-208.4686\\69\\43.69069\\-207.474\\69\\42.3357\\-205.5209\\69\\42.28613\\-203.5678\\69\\40.7394\\-201.6373\\69\\38.78627\\-202.9778\\69\\38.27753\\-203.5678\\69\\37.47207\\-205.5209\\69\\36.83315\\-206.1882\\69\\34.88002\\-206.9419\\69\\33.6935\\-205.5209\\69\\35.7007\\-203.5678\\69\\37.67888\\-199.6615\\69\\39.63324\\-197.7084\\69\\41.07769\\-195.7553\\69\\42.3357\\-191.849\\69\\43.76017\\-189.8959\\69\\44.64565\\-189.0622\\69\\47.14131\\-187.9428\\69\\50.50502\\-186.7657\\69\\52.45815\\-185.8026\\69\\56.3644\\-185.841\\69\\58.31752\\-186.9008\\69\\60.27065\\-187.3965\\69\\62.22377\\-188.7997\\69\\64.1769\\-190.6146\\69\\67.07135\\-193.8021\\69\\67.60354\\-195.7553\\69\\67.63926\\-199.6615\\69\\69.52707\\-201.6146\\69\\71.8024\\-203.5678\\69\\72.27136\\-205.5209\\69\\71.9894\\-205.8131\\69\\70.03628\\-206.3669\\69\\68.08315\\-204.6302\\69\\66.13003\\-205.4488\\69\\65.07588\\-207.474\\69\\63.50082\\-209.4271\\69\\62.54031\\-211.3803\\69\\62.22377\\-211.6925\\69\\60.27065\\-212.7278\\69\\58.31752\\-212.9367\\69\\50.50502\\-212.9174\\69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "590"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "81.75503\\-133.7347\\69\\79.8019\\-132.5271\\69\\77.84878\\-131.9388\\69\\75.89565\\-130.8139\\69\\73.94253\\-130.0106\\69\\71.9894\\-129.3725\\69\\70.03628\\-128.5001\\69\\68.08315\\-126.9699\\69\\66.13003\\-126.2547\\69\\64.1769\\-125.9577\\69\\62.22377\\-125.1279\\69\\58.31752\\-124.0661\\69\\56.3644\\-122.9726\\69\\54.41127\\-122.137\\69\\52.45815\\-121.0706\\69\\50.50502\\-119.6439\\69\\48.73141\\-117.6303\\69\\47.12193\\-115.6771\\69\\46.68541\\-113.724\\69\\46.59877\\-111.6081\\69\\46.68755\\-109.8178\\69\\47.94898\\-107.8646\\69\\48.5519\\-107.251\\69\\50.50502\\-105.803\\69\\52.45815\\-105.0298\\69\\54.41127\\-105.783\\69\\56.3644\\-106.6716\\69\\58.31752\\-107.8417\\69\\60.29635\\-109.8178\\69\\62.22377\\-111.0806\\69\\66.13003\\-114.9617\\69\\68.08315\\-116.5199\\69\\70.03628\\-117.2038\\69\\73.94253\\-120.6838\\69\\75.89565\\-122.112\\69\\77.84878\\-123.3676\\69\\79.8019\\-125.3073\\69\\82.40863\\-127.3959\\69\\83.70815\\-128.6654\\69\\85.66128\\-129.7375\\69\\87.41438\\-131.3021\\69\\85.97594\\-133.2553\\69\\85.66128\\-133.4547\\69\\83.70815\\-133.9313\\69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "54"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "591"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "120.8175\\-186.9662\\69\\119.8681\\-185.9896\\69\\119.9223\\-184.0365\\69\\120.6083\\-182.0834\\69\\118.9218\\-180.1303\\69\\116.9113\\-178.0883\\69\\115.7249\\-174.2709\\69\\114.9702\\-170.3646\\69\\114.3988\\-168.4115\\69\\113.2397\\-166.4584\\69\\111.2998\\-162.5521\\69\\110.9288\\-160.599\\69\\109.7421\\-158.6459\\69\\108.394\\-156.6928\\69\\107.3516\\-154.7396\\69\\105.8563\\-152.7865\\69\\104.192\\-150.8334\\69\\102.8813\\-148.8803\\69\\102.1018\\-146.9271\\69\\100.4224\\-144.974\\69\\99.53259\\-143.0209\\69\\99.00763\\-141.0678\\69\\98.06524\\-139.1146\\69\\97.38003\\-137.3921\\69\\97.38003\\-136.8541\\69\\99.33315\\-136.619\\69\\100.2156\\-137.1615\\69\\103.2394\\-138.6813\\69\\105.1925\\-139.1941\\69\\107.1457\\-140.7851\\69\\111.0519\\-141.6118\\69\\114.9582\\-143.4954\\69\\118.8644\\-144.2248\\69\\120.8175\\-145.5346\\69\\121.7775\\-146.9271\\69\\121.4299\\-148.8803\\69\\120.8175\\-150.9729\\69\\122.5265\\-152.7865\\69\\124.7238\\-154.8578\\69\\126.6769\\-158.1042\\69\\127.113\\-158.6459\\69\\127.7418\\-160.599\\69\\127.7584\\-164.5053\\69\\127.9212\\-166.4584\\69\\128.2731\\-168.4115\\69\\127.9845\\-170.3646\\69\\127.6046\\-174.2709\\69\\126.6769\\-177.1701\\69\\125.9445\\-178.1771\\69\\125.6732\\-180.1303\\69\\125.6732\\-182.0834\\69\\125.1958\\-184.0365\\69\\124.7238\\-184.8457\\69\\122.7707\\-186.8306\\69"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002266"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "74"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "592"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-103.7918\\-148.7394\\71\\-104.8106\\-146.9271\\71\\-105.0432\\-144.974\\71\\-105.0151\\-143.0209\\71\\-104.3526\\-141.0678\\71\\-103.7918\\-140.4333\\71\\-100.4905\\-137.1615\\71\\-99.8856\\-136.6317\\71\\-97.93247\\-135.8156\\71\\-95.97935\\-134.5204\\71\\-94.02622\\-132.6017\\71\\-92.0731\\-131.2491\\71\\-90.11997\\-130.4113\\71\\-88.16685\\-128.7805\\71\\-86.21372\\-127.8235\\71\\-84.2606\\-126.3809\\71\\-81.40102\\-123.4896\\71\\-79.88142\\-121.5365\\71\\-78.67176\\-119.5834\\71\\-74.49497\\-115.4689\\71\\-72.54185\\-113.6248\\71\\-70.58872\\-112.3833\\71\\-68.6356\\-110.7717\\71\\-67.6871\\-109.8178\\71\\-66.19419\\-107.8646\\71\\-65.07906\\-105.9115\\71\\-64.72935\\-105.5594\\71\\-62.77623\\-104.7745\\71\\-60.8231\\-104.7595\\71\\-58.86998\\-103.5237\\71\\-56.91685\\-103.6841\\71\\-56.64261\\-103.9584\\71\\-56.55664\\-105.9115\\71\\-56.04016\\-107.8646\\71\\-54.96373\\-109.0198\\71\\-54.4045\\-109.8178\\71\\-53.76606\\-111.7709\\71\\-54.96373\\-112.8911\\71\\-57.39647\\-115.6771\\71\\-58.11153\\-117.6303\\71\\-58.86998\\-118.4336\\71\\-60.8231\\-120.1422\\71\\-62.77623\\-120.9495\\71\\-64.72935\\-122.2881\\71\\-66.68247\\-122.4228\\71\\-68.6356\\-123.0107\\71\\-70.58872\\-124.5711\\71\\-71.46632\\-125.4428\\71\\-70.58872\\-127.3813\\71\\-68.6356\\-126.6314\\71\\-66.68247\\-126.1478\\71\\-64.72935\\-125.8681\\71\\-62.77623\\-127.0443\\71\\-62.47728\\-127.3959\\71\\-64.24847\\-129.349\\71\\-64.72935\\-129.7585\\71\\-66.68247\\-130.2685\\71\\-68.6356\\-130.9159\\71\\-70.58872\\-131.6787\\71\\-72.54185\\-131.9762\\71\\-74.49497\\-132.746\\71\\-76.4481\\-133.9877\\71\\-78.40122\\-134.6113\\71\\-80.56187\\-133.2553\\71\\-82.30747\\-132.414\\71\\-84.2606\\-133.6941\\71\\-86.21372\\-134.6328\\71\\-88.16685\\-136.4692\\71\\-90.11997\\-137.6913\\71\\-92.0731\\-138.5405\\71\\-92.79073\\-139.1146\\71\\-98.6854\\-144.974\\71\\-99.8856\\-145.9386\\71\\-101.8387\\-147.8593\\71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002266"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "593"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-212.1059\\71\\46.59877\\-210.4085\\71\\43.69069\\-207.474\\71\\42.27658\\-205.5209\\71\\41.98723\\-203.5678\\71\\40.7394\\-202.1229\\71\\38.78627\\-202.5815\\71\\37.82858\\-203.5678\\71\\36.58547\\-205.5209\\71\\34.88002\\-206.7661\\71\\33.06963\\-205.5209\\71\\34.88002\\-204.3015\\71\\35.67554\\-203.5678\\71\\36.11158\\-201.6146\\71\\37.70308\\-199.6615\\71\\38.78627\\-198.733\\71\\41.50004\\-195.7553\\71\\42.08285\\-193.8021\\71\\42.3357\\-191.849\\71\\44.09048\\-189.8959\\71\\44.64565\\-189.4134\\71\\46.59877\\-188.7167\\71\\48.5519\\-187.6837\\71\\50.50502\\-186.9125\\71\\52.45815\\-185.8026\\71\\56.3644\\-185.8152\\71\\58.31752\\-186.3217\\71\\62.22377\\-187.7433\\71\\64.72887\\-189.8959\\71\\65.91532\\-191.849\\71\\67.20473\\-193.8021\\71\\67.60354\\-195.7553\\71\\67.63017\\-199.6615\\71\\69.13205\\-201.6146\\71\\71.1208\\-203.5678\\71\\71.65136\\-205.5209\\71\\70.03628\\-206.5066\\71\\68.08315\\-204.9448\\71\\66.13003\\-206.252\\71\\65.08501\\-207.474\\71\\63.69728\\-209.4271\\71\\63.06151\\-211.3803\\71\\62.22377\\-212.2019\\71\\60.27065\\-212.927\\71\\52.45815\\-212.9367\\71\\50.50502\\-212.7872\\71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002266"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "99"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "594"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "118.8644\\-174.3116\\71\\118.7912\\-168.4115\\71\\117.0403\\-166.4584\\71\\114.9582\\-164.6489\\71\\113.5369\\-162.5521\\71\\112.91\\-160.599\\71\\111.7899\\-158.6459\\71\\111.0519\\-156.8555\\71\\109.5961\\-154.7396\\71\\107.8648\\-152.7865\\71\\105.9173\\-150.8334\\71\\104.4872\\-148.8803\\71\\103.3936\\-146.9271\\71\\101.9858\\-144.974\\71\\100.282\\-143.0209\\71\\99.29559\\-141.0678\\71\\96.91096\\-139.1146\\71\\95.4269\\-137.7684\\71\\93.90974\\-137.1615\\71\\93.47378\\-136.5802\\71\\91.52065\\-134.835\\71\\89.56753\\-133.2934\\71\\85.66128\\-133.8326\\71\\83.70815\\-133.5143\\71\\81.75503\\-132.4864\\71\\79.8019\\-131.7369\\71\\77.84878\\-130.4516\\71\\75.82277\\-129.349\\71\\73.94253\\-128.6208\\71\\71.9894\\-128.0095\\71\\70.03628\\-126.9172\\71\\68.08315\\-126.1066\\71\\66.13003\\-125.5782\\71\\64.1769\\-124.7724\\71\\60.32809\\-123.4896\\71\\56.3644\\-121.9019\\71\\54.41127\\-120.7882\\71\\52.45815\\-120.0209\\71\\50.50502\\-118.5245\\71\\49.62558\\-117.6303\\71\\48.80697\\-115.6771\\71\\48.67167\\-113.724\\71\\48.64696\\-111.7709\\71\\48.78978\\-109.8178\\71\\50.50502\\-108.3945\\71\\52.45815\\-108.1302\\71\\54.41127\\-107.2572\\71\\56.3644\\-106.7092\\71\\58.31752\\-107.2995\\71\\60.27065\\-109.1581\\71\\62.22377\\-110.5413\\71\\63.70693\\-111.7709\\71\\65.20021\\-113.724\\71\\66.13003\\-114.6538\\71\\68.08315\\-116.1118\\71\\70.03628\\-116.7292\\71\\71.9894\\-118.6372\\71\\73.94253\\-120.1874\\71\\75.89565\\-121.1018\\71\\77.84878\\-122.6243\\71\\79.8019\\-124.4226\\71\\81.75503\\-125.7364\\71\\85.66128\\-127.9667\\71\\87.6144\\-128.8277\\71\\88.21712\\-129.349\\71\\89.56753\\-130.9204\\71\\90.67258\\-131.3021\\71\\91.52065\\-132.0346\\71\\93.47378\\-132.9942\\71\\94.52847\\-133.2553\\71\\95.4269\\-133.6712\\71\\97.38003\\-134.0266\\71\\99.33315\\-134.7201\\71\\101.2863\\-136.2915\\71\\103.3391\\-137.1615\\71\\105.1925\\-137.74\\71\\107.1457\\-138.6043\\71\\109.0988\\-139.6514\\71\\111.0519\\-140.2997\\71\\113.005\\-141.4331\\71\\114.9582\\-142.2345\\71\\118.8644\\-143.9742\\71\\119.9467\\-144.974\\71\\121.438\\-146.9271\\71\\121.7983\\-148.8803\\71\\122.6612\\-150.8334\\71\\124.7238\\-154.2706\\71\\125.1106\\-154.7396\\71\\125.7543\\-156.6928\\71\\126.2876\\-160.599\\71\\126.309\\-164.5053\\71\\126.2293\\-166.4584\\71\\125.8631\\-168.4115\\71\\125.7178\\-170.3646\\71\\125.7178\\-172.3178\\71\\125.1563\\-174.2709\\71\\124.7238\\-174.8315\\71\\122.7707\\-176.1264\\71\\120.8175\\-176.1903\\71"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002265"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "70"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "595"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-103.7918\\-145.9787\\73\\-104.4449\\-144.974\\73\\-105.0432\\-143.0209\\73\\-105.0681\\-141.0678\\73\\-104.5355\\-139.1146\\73\\-103.7918\\-138.1668\\73\\-102.7963\\-137.1615\\73\\-99.8856\\-135.167\\73\\-97.93247\\-134.0804\\73\\-95.97935\\-132.5172\\73\\-94.02622\\-130.6141\\73\\-91.70489\\-129.349\\73\\-90.11997\\-128.6221\\73\\-88.16685\\-127.2866\\73\\-86.21372\\-126.5188\\73\\-84.94346\\-125.4428\\73\\-82.30747\\-122.8545\\73\\-81.23659\\-121.5365\\73\\-79.38722\\-119.5834\\73\\-76.4481\\-116.614\\73\\-74.49497\\-114.7761\\73\\-70.97262\\-111.7709\\73\\-68.6356\\-109.6328\\73\\-67.02596\\-107.8646\\73\\-64.72935\\-105.6953\\73\\-62.77623\\-105.4839\\73\\-60.8231\\-106.4725\\73\\-58.86998\\-105.6452\\73\\-57.16099\\-103.9584\\73\\-56.91685\\-104.1579\\73\\-58.65181\\-105.9115\\73\\-58.30845\\-107.8646\\73\\-56.5944\\-109.8178\\73\\-55.69019\\-111.7709\\73\\-56.35184\\-113.724\\73\\-57.86629\\-115.6771\\73\\-59.12443\\-117.6303\\73\\-61.1987\\-119.5834\\73\\-64.72935\\-121.6851\\73\\-66.68247\\-122.0747\\73\\-68.6356\\-122.2904\\73\\-70.58872\\-122.9359\\73\\-71.30385\\-123.4896\\73\\-73.13935\\-125.4428\\73\\-72.54185\\-126.7042\\73\\-70.58872\\-126.6408\\73\\-68.6356\\-126.2985\\73\\-64.72935\\-125.9793\\73\\-63.46144\\-127.3959\\73\\-64.72935\\-128.8038\\73\\-66.68247\\-129.726\\73\\-68.6356\\-129.9372\\73\\-70.58872\\-130.5288\\73\\-74.49497\\-132.4628\\73\\-76.4481\\-133.8401\\73\\-78.40122\\-134.372\\73\\-79.57007\\-133.2553\\73\\-78.40122\\-131.3754\\73\\-78.40122\\-131.1024\\73\\-80.35435\\-130.304\\73\\-82.30747\\-131.0105\\73\\-84.2606\\-132.4706\\73\\-86.21372\\-133.6674\\73\\-88.16685\\-134.5933\\73\\-90.11997\\-136.2347\\73\\-92.0731\\-137.5809\\73\\-94.02622\\-138.5043\\73\\-94.74329\\-139.1146\\73\\-99.8856\\-144.1855\\73\\-101.8387\\-146.0698\\73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002265"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "596"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-212.4763\\73\\48.5519\\-211.2718\\73\\46.59877\\-210.4085\\73\\43.69069\\-207.474\\73\\42.06063\\-205.5209\\73\\41.60586\\-203.5678\\73\\40.7394\\-202.6325\\73\\38.78627\\-202.4974\\73\\34.88002\\-206.478\\73\\33.00904\\-207.474\\73\\32.79373\\-207.474\\73\\32.37532\\-205.5209\\73\\34.88002\\-203.9042\\73\\35.23124\\-203.5678\\73\\35.35562\\-201.6146\\73\\36.83315\\-200.0123\\73\\38.78627\\-199.262\\73\\40.7394\\-197.0551\\73\\41.61001\\-195.7553\\73\\42.32553\\-193.8021\\73\\42.39956\\-191.849\\73\\44.64565\\-189.6964\\73\\46.59877\\-188.8855\\73\\48.5519\\-187.6953\\73\\50.50502\\-186.9171\\73\\52.45815\\-185.8026\\73\\58.31752\\-185.8152\\73\\60.27065\\-186.3108\\73\\62.22377\\-187.1388\\73\\65.09123\\-189.8959\\73\\66.8338\\-191.849\\73\\67.44443\\-193.8021\\73\\67.60354\\-195.7553\\73\\67.63017\\-199.6615\\73\\69.04549\\-201.6146\\73\\70.96611\\-203.5678\\73\\71.65136\\-205.5209\\73\\70.03628\\-206.5113\\73\\68.08315\\-205.1641\\73\\66.13003\\-206.4381\\73\\65.10846\\-207.474\\73\\63.76096\\-209.4271\\73\\63.07109\\-211.3803\\73\\62.22377\\-212.2113\\73\\60.27065\\-212.927\\73\\52.45815\\-212.9367\\73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002265"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "82"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "597"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "120.8175\\-165.5984\\73\\118.8644\\-164.0893\\73\\116.9113\\-163.4792\\73\\116.1152\\-162.5521\\73\\114.9582\\-160.4994\\73\\113.0138\\-156.6928\\73\\111.8256\\-154.7396\\73\\107.9284\\-150.8334\\73\\106.4972\\-148.8803\\73\\105.2933\\-146.9271\\73\\103.6389\\-144.974\\73\\101.2863\\-142.6242\\73\\99.33315\\-140.4396\\73\\97.38003\\-139.7289\\73\\95.4269\\-138.3246\\73\\93.47378\\-137.7312\\73\\91.52065\\-136.3467\\73\\89.56753\\-134.3089\\73\\87.6144\\-133.7854\\73\\85.66128\\-133.5027\\73\\81.75503\\-131.2646\\73\\79.8019\\-130.416\\73\\77.84878\\-128.7883\\73\\75.89565\\-128.1665\\73\\73.94253\\-127.772\\73\\71.9894\\-126.6921\\73\\68.08315\\-125.5375\\73\\66.13003\\-124.7223\\73\\64.1769\\-124.1352\\73\\62.22377\\-122.9123\\73\\58.31752\\-121.8438\\73\\56.3644\\-120.6021\\73\\54.42276\\-119.5834\\73\\52.45815\\-118.3845\\73\\51.52104\\-117.6303\\73\\50.65874\\-115.6771\\73\\51.62921\\-113.724\\73\\51.48159\\-111.7709\\73\\53.73265\\-109.8178\\73\\54.41127\\-109.4328\\73\\56.3644\\-107.5114\\73\\58.31752\\-107.6652\\73\\58.53207\\-107.8646\\73\\61.6153\\-109.8178\\73\\62.22377\\-110.2886\\73\\64.1769\\-111.364\\73\\66.72416\\-113.724\\73\\68.08315\\-114.8877\\73\\70.03628\\-116.2145\\73\\71.9894\\-117.4378\\73\\74.42123\\-119.5834\\73\\77.84878\\-122.0489\\73\\79.8019\\-122.9669\\73\\81.75503\\-124.5565\\73\\83.70815\\-125.7862\\73\\85.66128\\-126.6246\\73\\87.6144\\-127.8033\\73\\89.56753\\-128.7805\\73\\91.52065\\-129.9295\\73\\93.47378\\-130.7281\\73\\95.4269\\-131.8986\\73\\97.38003\\-132.52\\73\\99.33315\\-133.7188\\73\\101.2863\\-134.6126\\73\\103.2394\\-135.7673\\73\\105.1925\\-136.3855\\73\\107.1457\\-137.6003\\73\\109.0988\\-138.3241\\73\\111.0519\\-139.5938\\73\\113.005\\-140.3071\\73\\114.9582\\-141.6064\\73\\116.9113\\-142.5679\\73\\119.4166\\-144.974\\73\\120.1574\\-146.9271\\73\\121.3796\\-148.8803\\73\\122.7707\\-150.8933\\73\\123.7561\\-152.7865\\73\\124.2418\\-156.6928\\73\\124.158\\-158.6459\\73\\123.8098\\-160.599\\73\\123.8098\\-164.5053\\73\\122.7707\\-165.9527\\73"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002264"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "67"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "598"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-103.7918\\-143.8212\\75\\-104.4489\\-143.0209\\75\\-105.3386\\-141.0678\\75\\-106.5418\\-139.1146\\75\\-105.9015\\-137.1615\\75\\-103.7918\\-135.8778\\75\\-101.8387\\-134.4488\\75\\-99.8856\\-132.7536\\75\\-97.93247\\-132.0173\\75\\-95.97935\\-130.5223\\75\\-94.02622\\-128.7466\\75\\-92.0731\\-127.919\\75\\-90.11997\\-126.6598\\75\\-88.16685\\-125.5055\\75\\-86.21372\\-124.7319\\75\\-84.97148\\-123.4896\\75\\-82.30747\\-121.1832\\75\\-80.73868\\-119.5834\\75\\-76.4481\\-115.3606\\75\\-74.49497\\-114.5081\\75\\-72.54185\\-112.9392\\75\\-70.58872\\-110.7775\\75\\-68.6356\\-108.948\\75\\-66.68247\\-107.6484\\75\\-64.72935\\-106.7789\\75\\-62.77623\\-107.1601\\75\\-60.8231\\-108.2204\\75\\-59.22572\\-109.8178\\75\\-59.13446\\-113.724\\75\\-59.6237\\-115.6771\\75\\-63.23775\\-119.5834\\75\\-64.72935\\-120.7296\\75\\-66.68247\\-121.645\\75\\-68.6356\\-122.0666\\75\\-70.58872\\-122.2803\\75\\-72.54185\\-122.9291\\75\\-73.1452\\-123.4896\\75\\-74.34534\\-125.4428\\75\\-72.54185\\-126.8064\\75\\-70.58872\\-126.0993\\75\\-68.6356\\-126.6182\\75\\-66.68247\\-127.2609\\75\\-64.72935\\-126.9037\\75\\-64.30505\\-127.3959\\75\\-64.72935\\-127.8655\\75\\-66.68247\\-127.7912\\75\\-68.6356\\-128.7361\\75\\-69.68319\\-129.349\\75\\-72.54185\\-130.5108\\75\\-74.49497\\-132.1539\\75\\-76.4481\\-133.5592\\75\\-78.40122\\-134.1967\\75\\-79.21167\\-133.2553\\75\\-77.21936\\-131.3021\\75\\-75.61552\\-129.349\\75\\-76.4481\\-128.063\\75\\-78.40122\\-128.5264\\75\\-82.30747\\-130.3353\\75\\-84.2606\\-131.6409\\75\\-86.21372\\-132.4396\\75\\-88.16685\\-133.6472\\75\\-90.11997\\-134.5553\\75\\-92.0731\\-136.1911\\75\\-94.02622\\-137.561\\75\\-95.97935\\-138.6634\\75\\-98.74043\\-141.0678\\75\\-101.8387\\-144.0776\\75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002264"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "599"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-212.3465\\75\\48.5519\\-210.9094\\75\\46.59877\\-210.4085\\75\\44.64565\\-208.4686\\75\\41.78479\\-205.5209\\75\\40.7394\\-203.8259\\75\\38.78627\\-202.6308\\75\\35.66604\\-205.5209\\75\\32.9269\\-208.1598\\75\\30.97377\\-208.0866\\75\\30.39015\\-207.474\\75\\30.97377\\-205.8571\\75\\31.57694\\-205.5209\\75\\32.9269\\-205.2169\\75\\34.84246\\-203.5678\\75\\34.87239\\-201.6146\\75\\36.83315\\-199.6842\\75\\38.78627\\-199.6239\\75\\40.7394\\-197.3743\\75\\41.61414\\-195.7553\\75\\42.3357\\-193.8021\\75\\42.95339\\-191.849\\75\\44.92581\\-189.8959\\75\\48.24041\\-187.9428\\75\\48.5519\\-187.6953\\75\\50.50502\\-186.9171\\75\\52.45815\\-185.8026\\75\\58.31752\\-185.8026\\75\\60.27065\\-185.9521\\75\\62.22377\\-187.0818\\75\\65.09123\\-189.8959\\75\\66.81581\\-191.849\\75\\67.44067\\-193.8021\\75\\67.60354\\-195.7553\\75\\67.63017\\-199.6615\\75\\69.04549\\-201.6146\\75\\70.96611\\-203.5678\\75\\71.65136\\-205.5209\\75\\70.03628\\-206.5113\\75\\68.08315\\-205.1641\\75\\66.13003\\-206.4878\\75\\65.23228\\-207.474\\75\\64.21475\\-209.4271\\75\\63.07109\\-211.3803\\75\\62.22377\\-212.2113\\75\\60.27065\\-212.927\\75\\52.45815\\-212.9367\\75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002264"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "69"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "600"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "116.9113\\-157.5391\\75\\114.9582\\-155.6552\\75\\114.1706\\-154.7396\\75\\113.005\\-153.8861\\75\\109.0988\\-150.0208\\75\\106.3158\\-146.9271\\75\\100.42\\-141.0678\\75\\99.33315\\-140.1405\\75\\97.38003\\-139.2094\\75\\93.47378\\-136.8338\\75\\91.52065\\-136.051\\75\\89.56753\\-134.1364\\75\\87.6144\\-132.9522\\75\\85.66128\\-132.3929\\75\\83.70815\\-130.6449\\75\\81.75503\\-130.0695\\75\\77.84878\\-128.0153\\75\\75.89565\\-127.4481\\75\\73.94253\\-126.6136\\75\\70.03628\\-125.4949\\75\\64.1769\\-123.1027\\75\\62.22377\\-122.5676\\75\\60.29612\\-121.5365\\75\\58.31752\\-120.3773\\75\\55.03035\\-117.6303\\75\\53.40419\\-115.6771\\75\\54.13363\\-113.724\\75\\55.86943\\-111.7709\\75\\56.95516\\-109.8178\\75\\58.31752\\-108.988\\75\\60.27065\\-109.2126\\75\\62.22377\\-110.4667\\75\\64.42927\\-111.7709\\75\\66.13003\\-112.5315\\75\\68.08315\\-113.6537\\75\\70.03628\\-114.942\\75\\71.9894\\-116.6537\\75\\73.94253\\-118.6269\\75\\75.89565\\-120.011\\75\\77.84878\\-120.9903\\75\\79.8019\\-122.2803\\75\\81.75503\\-123.1535\\75\\83.70815\\-124.6544\\75\\85.66128\\-125.362\\75\\87.6144\\-126.5339\\75\\89.56753\\-127.2729\\75\\91.52065\\-128.472\\75\\93.47378\\-129.3109\\75\\95.4269\\-130.4361\\75\\97.38003\\-131.727\\75\\99.33315\\-132.4577\\75\\101.2863\\-133.7583\\75\\103.2394\\-134.3912\\75\\105.1925\\-135.6996\\75\\107.1457\\-136.3486\\75\\109.0988\\-137.6557\\75\\111.0519\\-138.6085\\75\\111.5909\\-139.1146\\75\\113.005\\-140.0615\\75\\114.7322\\-141.0678\\75\\116.9113\\-143.0488\\75\\118.0598\\-144.974\\75\\119.1243\\-146.9271\\75\\119.9677\\-148.8803\\75\\120.957\\-150.8334\\75\\121.8035\\-152.7865\\75\\121.8429\\-156.6928\\75\\120.8175\\-157.9432\\75\\118.8644\\-158.031\\75"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "601"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-103.7918\\-142.1921\\77\\-105.745\\-140.6492\\77\\-106.9991\\-139.1146\\77\\-106.7359\\-137.1615\\77\\-105.745\\-136.0629\\77\\-103.7918\\-134.3751\\77\\-101.8387\\-132.8633\\77\\-99.8856\\-131.9035\\77\\-97.93247\\-130.6731\\77\\-95.97935\\-128.7208\\77\\-94.02622\\-127.7282\\77\\-92.0731\\-126.4856\\77\\-90.11997\\-124.8404\\77\\-88.16685\\-123.9917\\77\\-86.21372\\-122.7655\\77\\-84.2606\\-121.3495\\77\\-82.30747\\-120.5109\\77\\-76.4481\\-114.6705\\77\\-74.62067\\-113.724\\77\\-72.54185\\-111.4908\\77\\-70.58872\\-109.6901\\77\\-68.6356\\-108.6084\\77\\-66.68247\\-108.4885\\77\\-64.72935\\-108.5622\\77\\-62.77623\\-108.9076\\77\\-61.67053\\-109.8178\\77\\-61.53257\\-111.7709\\77\\-61.53868\\-113.724\\77\\-61.85479\\-115.6771\\77\\-63.20646\\-117.6303\\77\\-64.72935\\-119.3586\\77\\-66.68247\\-120.5831\\77\\-68.6356\\-121.6312\\77\\-72.54185\\-122.4735\\77\\-73.89266\\-123.4896\\77\\-75.47153\\-125.4428\\77\\-76.4481\\-126.4424\\77\\-78.40122\\-127.6759\\77\\-80.35435\\-128.4965\\77\\-82.30747\\-129.6406\\77\\-84.2606\\-130.449\\77\\-86.21372\\-131.6299\\77\\-88.16685\\-132.4221\\77\\-90.11997\\-133.6264\\77\\-92.0731\\-134.5108\\77\\-94.02622\\-136.1788\\77\\-95.97935\\-137.9586\\77\\-97.93247\\-139.4042\\77\\-99.8856\\-140.3937\\77\\-101.8387\\-142.1592\\77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "12"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "602"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-78.40122\\-134.0403\\77\\-79.04702\\-133.2553\\77\\-75.13329\\-129.349\\77\\-73.56577\\-127.3959\\77\\-72.54185\\-126.5636\\77\\-70.58872\\-126.0648\\77\\-69.23917\\-127.3959\\77\\-70.58872\\-128.5064\\77\\-72.54185\\-129.6878\\77\\-74.49497\\-130.7424\\77\\-76.4481\\-132.3782\\77\\-77.30925\\-133.2553\\77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "603"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-212.3261\\77\\48.5519\\-210.8834\\77\\46.59877\\-210.3845\\77\\41.69962\\-205.5209\\77\\40.7394\\-204.473\\77\\38.78627\\-203.1184\\77\\35.26937\\-205.5209\\77\\32.9269\\-207.633\\77\\30.97377\\-207.7582\\77\\30.70744\\-207.474\\77\\30.97377\\-206.9729\\77\\32.9269\\-207.1078\\77\\34.0962\\-205.5209\\77\\34.85732\\-203.5678\\77\\34.87239\\-201.6146\\77\\36.83315\\-199.6842\\77\\38.78627\\-199.6239\\77\\40.7394\\-197.3743\\77\\41.61414\\-195.7553\\77\\42.3357\\-193.8021\\77\\43.50124\\-191.849\\77\\44.64565\\-190.6926\\77\\46.59877\\-188.8902\\77\\48.5519\\-187.6953\\77\\50.50502\\-186.942\\77\\52.45815\\-185.8811\\77\\56.3644\\-185.8026\\77\\58.31752\\-185.9089\\77\\62.22377\\-187.1926\\77\\65.09123\\-189.8959\\77\\65.91832\\-191.849\\77\\67.1315\\-193.8021\\77\\67.53693\\-195.7553\\77\\67.57784\\-199.6615\\77\\69.04066\\-201.6146\\77\\70.96611\\-203.5678\\77\\71.65136\\-205.5209\\77\\70.03628\\-206.5113\\77\\68.08315\\-205.1641\\77\\66.13003\\-206.7477\\77\\65.50858\\-207.474\\77\\64.8857\\-209.4271\\77\\62.22377\\-212.2113\\77\\60.27065\\-212.927\\77\\52.45815\\-212.9174\\77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "604"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "113.005\\-151.4307\\77\\109.0988\\-147.7883\\77\\106.2476\\-144.974\\77\\105.1925\\-144.1591\\77\\101.2863\\-140.2594\\77\\99.33315\\-138.9094\\77\\97.38003\\-138.0734\\77\\95.4269\\-136.4845\\77\\93.47378\\-135.6967\\77\\91.52065\\-134.3864\\77\\89.56753\\-132.5692\\77\\87.6144\\-132.014\\77\\85.66128\\-131.0064\\77\\83.70815\\-129.6855\\77\\79.8019\\-128.3676\\77\\77.78696\\-127.3959\\77\\73.94253\\-125.7615\\77\\71.9894\\-125.0364\\77\\70.03628\\-124.65\\77\\68.08315\\-123.8308\\77\\66.13003\\-122.7434\\77\\62.22377\\-121.3352\\77\\60.64107\\-119.5834\\77\\60.27065\\-118.9203\\77\\58.31752\\-117.2782\\77\\56.91247\\-115.6771\\77\\58.35766\\-113.724\\77\\60.27065\\-112.4545\\77\\64.1769\\-112.4168\\77\\66.13003\\-112.4599\\77\\68.08315\\-113.1821\\77\\70.03628\\-114.5471\\77\\71.9894\\-115.5636\\77\\74.2477\\-117.6303\\77\\75.89565\\-118.841\\77\\77.84878\\-120.55\\77\\83.38538\\-123.4896\\77\\83.70815\\-123.7598\\77\\85.66128\\-124.2235\\77\\87.6144\\-124.8771\\77\\89.56753\\-125.9413\\77\\91.52065\\-126.8075\\77\\95.4269\\-129.1172\\77\\97.38003\\-130.5134\\77\\99.33315\\-131.7117\\77\\101.2863\\-132.6932\\77\\103.2394\\-133.9384\\77\\105.1925\\-134.7141\\77\\107.1457\\-135.9811\\77\\109.0988\\-136.7696\\77\\113.8776\\-141.0678\\77\\115.5413\\-143.0209\\77\\116.9113\\-146.8028\\77\\117.8878\\-148.8803\\77\\116.9113\\-150.315\\77\\114.9582\\-151.3217\\77"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002262"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "605"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-103.7918\\-141.2574\\79\\-105.745\\-140.2314\\79\\-106.8192\\-139.1146\\79\\-107.4819\\-137.1615\\79\\-106.5275\\-135.2084\\79\\-105.745\\-134.4818\\79\\-103.7918\\-133.6215\\79\\-101.8387\\-132.1686\\79\\-100.3149\\-131.3021\\79\\-97.93247\\-129.4921\\79\\-95.97935\\-127.7054\\79\\-94.02622\\-126.5596\\79\\-92.0731\\-125.0765\\79\\-90.11997\\-124.1567\\79\\-88.16685\\-122.9638\\79\\-84.2606\\-119.448\\79\\-82.30747\\-118.9341\\79\\-80.7711\\-117.6303\\79\\-76.4481\\-113.5445\\79\\-74.49497\\-111.763\\79\\-72.54185\\-110.6211\\79\\-68.6356\\-108.8365\\79\\-66.68247\\-109.4204\\79\\-66.09454\\-109.8178\\79\\-65.08878\\-111.7709\\79\\-65.0863\\-115.6771\\79\\-65.54648\\-117.6303\\79\\-67.52219\\-119.5834\\79\\-68.6356\\-120.5823\\79\\-70.58872\\-121.6031\\79\\-72.54185\\-122.4817\\79\\-74.49497\\-123.482\\79\\-76.93995\\-125.4428\\79\\-78.40122\\-126.5076\\79\\-80.35435\\-127.6383\\79\\-82.30747\\-128.4758\\79\\-84.2606\\-129.6172\\79\\-86.21372\\-130.4129\\79\\-88.16685\\-131.5821\\79\\-90.11997\\-132.4049\\79\\-92.0731\\-133.6026\\79\\-94.02622\\-134.4848\\79\\-94.87212\\-135.2084\\79\\-96.86775\\-137.1615\\79\\-97.93247\\-138.0581\\79\\-99.8856\\-139.3553\\79\\-101.8387\\-140.3561\\79"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002262"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "606"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-212.0871\\79\\48.5519\\-210.7484\\79\\46.59877\\-210.1787\\79\\44.64565\\-208.4686\\79\\40.7394\\-204.5402\\79\\38.96039\\-203.5678\\79\\38.58021\\-203.5678\\79\\36.83315\\-204.4333\\79\\34.88999\\-203.5678\\79\\34.93221\\-201.6146\\79\\36.83315\\-199.7563\\79\\38.78627\\-199.6239\\79\\40.7394\\-197.4884\\79\\41.63839\\-195.7553\\79\\42.3357\\-193.8021\\79\\43.63098\\-191.849\\79\\46.59877\\-188.9193\\79\\48.5519\\-187.7684\\79\\52.45815\\-186.4203\\79\\54.41127\\-185.9973\\79\\56.3644\\-186.0123\\79\\62.22377\\-187.6067\\79\\64.1769\\-189.0449\\79\\65.06161\\-189.8959\\79\\65.5759\\-191.849\\79\\66.80819\\-193.8021\\79\\67.27015\\-195.7553\\79\\67.32201\\-199.6615\\79\\68.98421\\-201.6146\\79\\70.96611\\-203.5678\\79\\71.65136\\-205.5209\\79\\70.03628\\-206.5113\\79\\68.08315\\-205.1641\\79\\66.13003\\-206.8935\\79\\65.64175\\-207.474\\79\\65.02838\\-209.4271\\79\\62.22377\\-212.2113\\79\\60.27065\\-212.927\\79\\54.41127\\-212.9174\\79\\52.45815\\-212.7304\\79"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002262"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "607"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "111.0519\\-145.3466\\79\\107.1457\\-142.4334\\79\\105.1925\\-142.0925\\79\\102.1594\\-139.1146\\79\\101.2863\\-138.3204\\79\\99.33315\\-136.9939\\79\\97.38003\\-136.2254\\79\\95.4269\\-135.0131\\79\\93.47378\\-134.1696\\79\\91.52065\\-132.5167\\79\\89.56753\\-131.5958\\79\\85.66128\\-130.1637\\79\\83.70815\\-128.4675\\79\\81.75503\\-127.785\\79\\77.84878\\-126.5296\\79\\75.89565\\-125.7129\\79\\73.94253\\-124.5975\\79\\70.03628\\-123.7854\\79\\68.08315\\-122.6637\\79\\66.13003\\-122.1639\\79\\64.1769\\-120.7806\\79\\62.90795\\-119.5834\\79\\62.73252\\-117.6303\\79\\62.86425\\-115.6771\\79\\63.74897\\-113.724\\79\\64.1769\\-113.444\\79\\66.13003\\-112.7724\\79\\70.03628\\-114.5825\\79\\71.9894\\-115.5532\\79\\73.94253\\-116.7347\\79\\75.89565\\-118.2759\\79\\77.84878\\-119.2885\\79\\79.8019\\-120.7864\\79\\81.75503\\-121.9877\\79\\83.70815\\-122.7132\\79\\85.66128\\-123.6382\\79\\87.6144\\-124.1842\\79\\89.56753\\-124.9575\\79\\91.52065\\-126.0698\\79\\93.47378\\-126.9381\\79\\95.4269\\-128.7408\\79\\97.38003\\-130.0194\\79\\99.33315\\-130.5658\\79\\101.2863\\-132.2507\\79\\103.2394\\-133.6712\\79\\105.1925\\-134.5884\\79\\105.9484\\-135.2084\\79\\108.8168\\-137.1615\\79\\112.3075\\-141.0678\\79\\113.7095\\-143.0209\\79\\113.7845\\-144.974\\79\\113.005\\-145.8683\\79"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002261"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "608"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-105.745\\-139.7152\\81\\-108.4472\\-137.1615\\81\\-108.0392\\-135.2084\\81\\-107.6981\\-134.8601\\81\\-105.745\\-133.7008\\81\\-102.3055\\-131.3021\\81\\-101.8387\\-130.8952\\81\\-99.8856\\-129.7696\\81\\-97.93247\\-128.3511\\81\\-95.97935\\-126.479\\81\\-94.02622\\-125.219\\81\\-90.11997\\-123.9779\\81\\-88.16685\\-122.8333\\81\\-86.92442\\-121.5365\\81\\-85.53764\\-119.5834\\81\\-84.2606\\-118.5357\\81\\-82.30747\\-118.4641\\81\\-80.35435\\-116.8462\\81\\-78.64193\\-115.6771\\81\\-76.4481\\-113.8479\\81\\-74.30623\\-111.7709\\81\\-72.54185\\-110.7898\\81\\-68.6356\\-110.612\\81\\-67.29961\\-111.7709\\81\\-67.10735\\-113.724\\81\\-67.10735\\-115.6771\\81\\-67.54118\\-117.6303\\81\\-69.11729\\-119.5834\\81\\-70.58872\\-120.6777\\81\\-72.54185\\-121.7684\\81\\-74.49497\\-122.6244\\81\\-76.4481\\-124.3078\\81\\-78.40122\\-125.1194\\81\\-82.30747\\-127.5754\\81\\-84.2606\\-128.4142\\81\\-86.21372\\-129.0808\\81\\-88.16685\\-130.2396\\81\\-90.11997\\-131.5463\\81\\-92.0731\\-132.3542\\81\\-94.02622\\-133.5583\\81\\-95.97935\\-134.4374\\81\\-96.87013\\-135.2084\\81\\-98.83344\\-137.1615\\81\\-99.8856\\-138.0576\\81\\-101.8387\\-139.4003\\81\\-103.7918\\-140.171\\81"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002261"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "609"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-212.2256\\81\\50.50502\\-211.1808\\81\\48.5519\\-210.4784\\81\\46.59877\\-209.2401\\81\\44.64565\\-208.4597\\81\\40.7394\\-204.4183\\81\\39.01444\\-203.5678\\81\\38.56433\\-203.5678\\81\\36.83315\\-204.4333\\81\\34.88002\\-203.6262\\81\\35.29597\\-201.6146\\81\\36.83315\\-200.1668\\81\\38.78627\\-199.6239\\81\\40.7394\\-198.1251\\81\\41.14579\\-197.7084\\81\\42.4107\\-193.8021\\81\\43.66909\\-191.849\\81\\44.64565\\-190.8677\\81\\46.59877\\-189.1175\\81\\48.5519\\-188.3121\\81\\52.45815\\-187.0609\\81\\54.41127\\-186.8156\\81\\56.3644\\-186.8299\\81\\58.31752\\-187.105\\81\\60.27065\\-187.6722\\81\\62.22377\\-188.4455\\81\\64.1769\\-189.5878\\81\\64.49127\\-189.8959\\81\\65.36679\\-191.849\\81\\65.81521\\-193.8021\\81\\66.09246\\-195.7553\\81\\66.10732\\-197.7084\\81\\66.74038\\-199.6615\\81\\68.82858\\-201.6146\\81\\70.03628\\-202.6151\\81\\70.96611\\-203.5678\\81\\71.65136\\-205.5209\\81\\70.03628\\-206.5113\\81\\68.08315\\-205.1641\\81\\66.13003\\-206.8935\\81\\65.64175\\-207.474\\81\\65.02838\\-209.4271\\81\\62.22377\\-212.2113\\81\\60.27065\\-212.927\\81\\56.3644\\-212.9367\\81\\54.41127\\-212.7715\\81"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002261"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "610"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "99.33315\\-134.3471\\81\\97.38003\\-133.1978\\81\\93.47378\\-132.0269\\81\\91.52065\\-130.9427\\81\\89.56753\\-130.0586\\81\\85.66128\\-128.1902\\81\\83.70815\\-127.0229\\81\\81.75503\\-126.2105\\81\\79.8019\\-125.1668\\81\\77.84878\\-124.9511\\81\\75.89565\\-124.267\\81\\73.94253\\-122.9648\\81\\71.9894\\-122.7345\\81\\70.03628\\-121.9027\\81\\68.08315\\-120.8322\\81\\66.13003\\-120.3195\\81\\65.30118\\-119.5834\\81\\65.16934\\-117.6303\\81\\66.13003\\-116.6203\\81\\68.08315\\-115.4572\\81\\70.03628\\-116.3343\\81\\71.9894\\-116.5948\\81\\73.94253\\-116.7285\\81\\75.89565\\-118.088\\81\\77.84878\\-119.2686\\81\\79.8019\\-120.6167\\81\\81.75503\\-121.3879\\81\\83.70815\\-122.3321\\81\\85.75681\\-123.4896\\81\\87.6144\\-124.3113\\81\\89.56753\\-124.9034\\81\\91.52065\\-125.9647\\81\\93.47378\\-126.8816\\81\\95.4269\\-129.0963\\81\\97.38003\\-130.4541\\81\\99.33315\\-130.8021\\81\\101.8722\\-133.2553\\81\\101.2863\\-134.2914\\81"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002260"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "611"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-105.745\\-138.1594\\83\\-107.5896\\-137.1615\\83\\-108.4571\\-135.2084\\83\\-107.6981\\-134.3841\\83\\-105.745\\-132.8478\\83\\-103.7918\\-131.7579\\83\\-100.4632\\-129.349\\83\\-97.93247\\-127.0704\\83\\-95.69452\\-125.4428\\83\\-94.02622\\-124.5286\\83\\-92.0731\\-124.2031\\83\\-90.11997\\-124.0669\\83\\-88.16685\\-122.9136\\83\\-86.85606\\-121.5365\\83\\-85.62138\\-119.5834\\83\\-84.2606\\-118.4864\\83\\-82.30747\\-118.4864\\83\\-80.35435\\-117.4419\\83\\-78.40122\\-116.5457\\83\\-76.4481\\-116.3053\\83\\-75.44628\\-115.6771\\83\\-74.49497\\-114.7872\\83\\-72.54185\\-114.2353\\83\\-70.40092\\-115.6771\\83\\-70.78119\\-117.6303\\83\\-72.84989\\-119.5834\\83\\-74.49497\\-120.8942\\83\\-75.61757\\-121.5365\\83\\-76.4481\\-122.2474\\83\\-78.40122\\-123.0781\\83\\-80.35435\\-124.4779\\83\\-82.30747\\-126.1491\\83\\-84.2606\\-126.9652\\83\\-86.21372\\-127.135\\83\\-88.16685\\-128.339\\83\\-90.11997\\-130.1557\\83\\-92.0731\\-130.9639\\83\\-94.02622\\-132.1067\\83\\-95.97935\\-132.8463\\83\\-97.93247\\-134.2256\\83\\-100.8807\\-137.1615\\83\\-101.8387\\-138.0119\\83\\-103.7918\\-138.3922\\83"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002260"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "612"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-210.9273\\83\\48.5519\\-210.4037\\83\\46.59877\\-208.9135\\83\\44.64565\\-208.3404\\83\\43.84496\\-207.474\\83\\42.91632\\-205.5209\\83\\40.7394\\-203.7042\\83\\38.78627\\-203.3561\\83\\36.83315\\-204.4333\\83\\34.88002\\-204.0261\\83\\34.46408\\-203.5678\\83\\35.5879\\-201.6146\\83\\36.83315\\-200.4886\\83\\38.78627\\-199.7836\\83\\40.7394\\-198.527\\83\\41.55004\\-197.7084\\83\\42.22778\\-195.7553\\83\\43.96153\\-191.849\\83\\44.64565\\-191.1649\\83\\46.8479\\-189.8959\\83\\48.5519\\-189.0306\\83\\50.50502\\-188.7413\\83\\54.41127\\-187.5609\\83\\56.3644\\-187.5836\\83\\58.31752\\-188.3198\\83\\60.27065\\-188.7558\\83\\62.22377\\-189.3513\\83\\64.68073\\-191.849\\83\\65.41582\\-193.8021\\83\\65.63318\\-195.7553\\83\\65.65918\\-197.7084\\83\\66.9896\\-199.6615\\83\\70.96611\\-203.5678\\83\\71.65136\\-205.5209\\83\\70.03628\\-206.5113\\83\\68.08315\\-205.1641\\83\\66.13003\\-206.8935\\83\\65.64175\\-207.474\\83\\65.02838\\-209.4271\\83\\62.22377\\-212.2457\\83\\60.27065\\-212.927\\83\\56.3644\\-212.9367\\83\\54.41127\\-212.6254\\83"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002259"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "32"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "613"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-107.6981\\-135.8573\\85\\-108.2729\\-135.2084\\85\\-107.6981\\-134.5552\\85\\-105.745\\-133.3907\\85\\-103.4385\\-131.3021\\85\\-100.3173\\-129.349\\85\\-97.93247\\-127.1602\\85\\-95.97935\\-126.2972\\85\\-94.02622\\-125.2646\\85\\-92.0731\\-124.475\\85\\-90.11997\\-124.4662\\85\\-88.16685\\-123.6972\\85\\-86.10522\\-121.5365\\85\\-85.3921\\-119.5834\\85\\-84.2606\\-118.6109\\85\\-82.30747\\-118.6109\\85\\-80.35435\\-118.9473\\85\\-79.49114\\-119.5834\\85\\-79.18124\\-121.5365\\85\\-80.35435\\-122.6402\\85\\-82.30747\\-123.3152\\85\\-84.2606\\-124.7017\\85\\-86.21372\\-125.2474\\85\\-88.16685\\-126.4402\\85\\-90.11997\\-128.4123\\85\\-92.0731\\-129.2968\\85\\-94.02622\\-130.3451\\85\\-95.97935\\-131.2355\\85\\-97.93247\\-131.2945\\85\\-99.8856\\-132.5468\\85\\-103.7918\\-136.3986\\85\\-105.745\\-136.7746\\85"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002259"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "45"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "614"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-212.2513\\85\\50.50502\\-211.0032\\85\\48.5519\\-210.4235\\85\\46.59877\\-208.771\\85\\44.64565\\-207.2848\\85\\43.61606\\-205.5209\\85\\42.69252\\-204.5974\\85\\40.7394\\-203.3808\\85\\38.78627\\-203.4593\\85\\36.83315\\-204.4723\\85\\34.88002\\-204.31\\85\\34.21053\\-203.5678\\85\\35.66702\\-201.6146\\85\\36.83315\\-200.7011\\85\\38.78627\\-200.3757\\85\\40.7394\\-199.0049\\85\\41.76392\\-197.7084\\85\\43.10847\\-195.7553\\85\\43.72024\\-193.8021\\85\\44.64565\\-192.5722\\85\\46.59877\\-190.9681\\85\\48.5519\\-190.0313\\85\\50.50502\\-189.3731\\85\\52.45815\\-189.0175\\85\\54.41127\\-188.7856\\85\\56.3644\\-188.8023\\85\\60.27065\\-189.4018\\85\\62.22377\\-190.7823\\85\\64.1769\\-192.7107\\85\\65.1774\\-193.8021\\85\\65.63318\\-195.7553\\85\\65.65918\\-197.7084\\85\\67.10659\\-199.6615\\85\\71.00823\\-203.5678\\85\\71.65136\\-205.5209\\85\\70.03628\\-206.5352\\85\\68.08315\\-205.1641\\85\\66.13003\\-206.8935\\85\\65.64175\\-207.474\\85\\65.03913\\-209.4271\\85\\62.22377\\-212.4658\\85\\60.27065\\-212.9664\\85\\58.31752\\-213.0404\\85\\56.3644\\-212.9973\\85\\54.41127\\-212.8451\\85"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002258"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "615"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-213.6589\\87\\52.45815\\-212.606\\87\\50.50502\\-211.7672\\87\\48.5519\\-210.6993\\87\\46.59877\\-209.1016\\87\\44.64565\\-206.7765\\87\\43.70262\\-205.5209\\87\\42.69252\\-204.5361\\87\\40.7394\\-203.6763\\87\\36.83315\\-204.8092\\87\\34.88002\\-203.836\\87\\34.70564\\-203.5678\\87\\36.83315\\-201.3538\\87\\38.78627\\-201.0966\\87\\40.7394\\-200.547\\87\\41.6069\\-199.6615\\87\\42.22778\\-197.7084\\87\\43.54941\\-195.7553\\87\\44.09153\\-193.8021\\87\\44.64565\\-193.1075\\87\\46.59877\\-191.4696\\87\\48.5519\\-190.6867\\87\\50.50502\\-189.6368\\87\\54.41127\\-189.264\\87\\56.3644\\-189.3308\\87\\60.27065\\-189.6602\\87\\62.22377\\-190.9657\\87\\65.10995\\-193.8021\\87\\65.63318\\-195.7553\\87\\65.74309\\-197.7084\\87\\67.15726\\-199.6615\\87\\68.08315\\-200.6332\\87\\71.2072\\-203.5678\\87\\71.65136\\-205.5209\\87\\70.03628\\-206.756\\87\\68.08315\\-205.1641\\87\\66.13003\\-206.8935\\87\\65.64175\\-207.474\\87\\65.11277\\-209.4271\\87\\64.1769\\-210.7484\\87\\62.22377\\-212.8538\\87\\60.27065\\-213.5328\\87\\58.31752\\-213.9962\\87"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002257"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "616"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-214.013\\89\\50.50502\\-212.9189\\89\\48.5519\\-212.1711\\89\\46.59877\\-210.8212\\89\\45.55322\\-209.4271\\89\\44.39816\\-207.474\\89\\43.55057\\-205.5209\\89\\42.69252\\-204.7026\\89\\40.7394\\-204.4167\\89\\38.78627\\-204.5746\\89\\36.83315\\-206.1628\\89\\35.32976\\-205.5209\\89\\35.35369\\-203.5678\\89\\36.83315\\-202.2027\\89\\38.78627\\-201.4926\\89\\40.7394\\-201.2429\\89\\42.11646\\-199.6615\\89\\43.1179\\-197.7084\\89\\43.75267\\-195.7553\\89\\44.22028\\-193.8021\\89\\44.64565\\-193.2605\\89\\46.59877\\-191.5342\\89\\48.5519\\-190.7497\\89\\50.50502\\-189.5494\\89\\52.45815\\-189.2198\\89\\54.41127\\-189.0903\\89\\56.3644\\-189.3035\\89\\58.31752\\-189.6368\\89\\60.27065\\-189.8011\\89\\62.22377\\-191.0062\\89\\65.10487\\-193.8021\\89\\65.63318\\-195.7553\\89\\67.31416\\-199.6615\\89\\68.08315\\-200.5219\\89\\70.03628\\-201.8504\\89\\71.56403\\-203.5678\\89\\71.74327\\-205.5209\\89\\72.69408\\-207.474\\89\\71.9894\\-208.3474\\89\\70.03628\\-207.4993\\89\\68.49245\\-205.5209\\89\\68.08315\\-205.1641\\89\\66.13003\\-206.8935\\89\\65.64175\\-207.474\\89\\65.26732\\-209.4271\\89\\64.47382\\-211.3803\\89\\62.22377\\-213.6039\\89\\60.27065\\-214.3768\\89\\58.31752\\-214.8136\\89\\54.41127\\-214.1407\\89"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002256"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "617"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-215.3673\\91\\50.50502\\-214.6918\\91\\48.5519\\-214.2123\\91\\46.59877\\-212.7113\\91\\45.53683\\-211.3803\\91\\44.42185\\-209.4271\\91\\43.85975\\-207.474\\91\\42.69252\\-206.0062\\91\\40.7394\\-204.8444\\91\\38.78627\\-204.9716\\91\\36.83315\\-206.4057\\91\\35.00328\\-205.5209\\91\\35.69382\\-203.5678\\91\\36.83315\\-202.4338\\91\\38.78627\\-201.5339\\91\\40.7394\\-201.3328\\91\\42.17057\\-199.6615\\91\\43.31731\\-197.7084\\91\\43.78473\\-195.7553\\91\\44.14034\\-193.8021\\91\\45.86635\\-191.849\\91\\46.59877\\-191.2567\\91\\48.5519\\-190.5233\\91\\50.50502\\-189.2466\\91\\54.41127\\-188.277\\91\\56.3644\\-189.0869\\91\\58.31752\\-189.6602\\91\\62.22377\\-191.16\\91\\65.10487\\-193.8021\\91\\65.64175\\-195.7553\\91\\66.98203\\-197.7084\\91\\67.53693\\-199.6615\\91\\68.08315\\-200.2934\\91\\70.09786\\-201.6146\\91\\71.69643\\-203.5678\\91\\72.36642\\-205.5209\\91\\73.15639\\-207.474\\91\\71.9894\\-208.6469\\91\\70.42297\\-207.474\\91\\68.08315\\-205.1641\\91\\66.13003\\-206.8935\\91\\65.64175\\-207.474\\91\\65.5015\\-209.4271\\91\\65.01326\\-211.3803\\91\\62.22377\\-214.6144\\91\\60.27065\\-215.9008\\91\\58.31752\\-216.0726\\91\\54.41127\\-215.8626\\91"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002255"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "618"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-217.414\\93\\52.45815\\-216.4077\\93\\50.50502\\-215.7395\\93\\46.59877\\-214.1157\\93\\45.82499\\-213.3334\\93\\44.49704\\-211.3803\\93\\43.90727\\-209.4271\\93\\43.62156\\-207.474\\93\\42.69252\\-206.5109\\93\\40.7394\\-205.1539\\93\\38.78627\\-205.1539\\93\\36.83315\\-206.3771\\93\\35.56087\\-205.5209\\93\\35.96662\\-203.5678\\93\\36.83315\\-202.5963\\93\\38.78627\\-201.5061\\93\\40.7394\\-200.8024\\93\\41.83297\\-199.6615\\93\\42.57045\\-197.7084\\93\\43.47666\\-195.7553\\93\\43.88975\\-193.8021\\93\\45.60663\\-191.849\\93\\46.59877\\-190.921\\93\\48.5519\\-189.8583\\93\\50.50502\\-188.9538\\93\\52.45815\\-187.9505\\93\\54.41127\\-187.92\\93\\56.3644\\-189.0595\\93\\58.31752\\-189.6842\\93\\60.27065\\-190.8632\\93\\62.22377\\-191.4922\\93\\64.1769\\-192.9054\\93\\65.10487\\-193.8021\\93\\65.64175\\-195.7553\\93\\67.06772\\-197.7084\\93\\67.62119\\-199.6615\\93\\68.08315\\-200.201\\93\\70.11546\\-201.6146\\93\\71.9894\\-203.942\\93\\72.80556\\-205.5209\\93\\73.53389\\-207.474\\93\\71.9894\\-208.521\\93\\70.03628\\-206.5921\\93\\68.08315\\-205.2852\\93\\65.87093\\-207.474\\93\\65.71408\\-209.4271\\93\\65.27332\\-211.3803\\93\\64.35381\\-213.3334\\93\\62.94581\\-215.2865\\93\\62.22377\\-216.0202\\93\\60.27065\\-217.1704\\93\\58.31752\\-217.8016\\93\\56.3644\\-217.8093\\93"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002254"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "51"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "619"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-217.646\\95\\50.50502\\-216.4411\\95\\48.5519\\-215.7212\\95\\46.59877\\-214.5225\\95\\45.39724\\-213.3334\\95\\44.23925\\-211.3803\\95\\43.56881\\-207.474\\95\\42.69252\\-206.5258\\95\\40.7394\\-204.9512\\95\\38.78627\\-205.05\\95\\36.83315\\-205.842\\95\\36.48387\\-205.5209\\95\\36.56078\\-203.5678\\95\\38.78627\\-201.3441\\95\\40.7394\\-200.5211\\95\\41.611\\-199.6615\\95\\42.20424\\-197.7084\\95\\42.58402\\-195.7553\\95\\43.68743\\-193.8021\\95\\46.59877\\-190.813\\95\\48.5519\\-189.6602\\95\\50.50502\\-188.8485\\95\\52.45815\\-187.719\\95\\54.41127\\-188.5531\\95\\56.3644\\-189.1781\\95\\58.31752\\-189.6842\\95\\60.27065\\-190.9044\\95\\62.22377\\-191.556\\95\\64.1769\\-192.9054\\95\\65.10487\\-193.8021\\95\\65.753\\-195.7553\\95\\67.13462\\-197.7084\\95\\67.63017\\-199.6615\\95\\68.08315\\-200.1911\\95\\70.11546\\-201.6146\\95\\71.9894\\-203.9042\\95\\72.89687\\-205.5209\\95\\73.66005\\-207.474\\95\\71.9894\\-208.4601\\95\\70.03628\\-206.5207\\95\\68.08315\\-206.0747\\95\\67.04\\-207.474\\95\\66.4788\\-209.4271\\95\\65.5015\\-211.3803\\95\\65.00056\\-213.3334\\95\\63.3252\\-215.2865\\95\\62.22377\\-216.7663\\95\\60.27065\\-218.1887\\95\\58.31752\\-218.6638\\95\\56.3644\\-218.6638\\95\\54.41127\\-218.3071\\95"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002253"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "52"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "620"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-217.6266\\97\\48.5519\\-216.1359\\97\\47.19285\\-215.2865\\97\\44.57906\\-213.3334\\97\\44.22971\\-211.3803\\97\\44.13197\\-209.4271\\97\\43.79665\\-207.474\\97\\42.89627\\-205.5209\\97\\42.69252\\-205.3186\\97\\40.7394\\-204.5403\\97\\38.78627\\-204.6171\\97\\37.15867\\-203.5678\\97\\37.87724\\-201.6146\\97\\38.78627\\-200.7969\\97\\40.7394\\-199.5789\\97\\41.82982\\-197.7084\\97\\42.3357\\-195.7553\\97\\43.60746\\-193.8021\\97\\46.59877\\-190.803\\97\\48.5519\\-189.6484\\97\\50.50502\\-188.843\\97\\52.45815\\-187.707\\97\\54.41127\\-188.6125\\97\\56.3644\\-189.1635\\97\\58.31752\\-189.5919\\97\\60.27065\\-190.5891\\97\\62.22377\\-191.2276\\97\\64.1769\\-192.849\\97\\65.18834\\-193.8021\\97\\66.71706\\-195.7553\\97\\67.32939\\-197.7084\\97\\67.71616\\-199.6615\\97\\68.08315\\-200.0731\\97\\70.24143\\-201.6146\\97\\71.9894\\-203.7729\\97\\72.9614\\-205.5209\\97\\73.67171\\-207.474\\97\\71.9894\\-208.4554\\97\\70.03628\\-206.516\\97\\68.08315\\-206.6835\\97\\67.45836\\-207.474\\97\\66.97606\\-209.4271\\97\\65.70465\\-211.3803\\97\\65.29616\\-213.3334\\97\\64.47382\\-215.2865\\97\\62.92503\\-217.2396\\97\\62.22377\\-217.9157\\97\\60.27065\\-218.7838\\97\\58.31752\\-218.969\\97\\56.3644\\-218.969\\97\\54.41127\\-218.844\\97\\52.45815\\-218.3454\\97"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002252"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "621"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-218.089\\99\\48.5519\\-216.2222\\99\\46.59877\\-214.5592\\99\\45.33344\\-213.3334\\99\\44.22971\\-211.3803\\99\\44.14034\\-207.474\\99\\43.78503\\-205.5209\\99\\42.69252\\-204.3651\\99\\40.7394\\-203.5012\\99\\38.78627\\-202.7359\\99\\38.02944\\-201.6146\\99\\39.70121\\-199.6615\\99\\41.611\\-197.7084\\99\\42.32553\\-195.7553\\99\\43.63622\\-193.8021\\99\\46.59877\\-190.8578\\99\\48.5519\\-189.7215\\99\\50.50502\\-188.843\\99\\52.45815\\-187.6953\\99\\54.41127\\-187.8762\\99\\56.3644\\-188.7211\\99\\60.27065\\-189.7605\\99\\63.46841\\-191.849\\99\\66.13003\\-193.9123\\99\\67.31992\\-195.7553\\99\\67.65778\\-197.7084\\99\\68.67686\\-199.6615\\99\\70.81422\\-201.6146\\99\\72.51953\\-203.5678\\99\\73.24\\-205.5209\\99\\73.68155\\-207.474\\99\\71.9894\\-208.4457\\99\\70.03628\\-206.4928\\99\\68.08315\\-206.8736\\99\\67.60354\\-207.474\\99\\67.30097\\-209.4271\\99\\66.56738\\-211.3803\\99\\65.53029\\-213.3334\\99\\64.93645\\-215.2865\\99\\62.22377\\-218.0049\\99\\60.27065\\-218.957\\99\\54.41127\\-218.9811\\99\\52.45815\\-218.8779\\99"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002251"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "622"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-218.1645\\101\\45.60785\\-213.3334\\101\\44.22971\\-211.3803\\101\\44.22971\\-207.474\\101\\44.1748\\-205.5209\\101\\43.79665\\-203.5678\\101\\42.69252\\-202.4735\\101\\40.7394\\-202.4793\\101\\39.59818\\-201.6146\\101\\39.49428\\-199.6615\\101\\40.42503\\-197.7084\\101\\42.69252\\-195.4962\\101\\43.87835\\-193.8021\\101\\44.64565\\-192.8969\\101\\46.59877\\-191.2276\\101\\48.5519\\-190.4872\\101\\50.50502\\-188.874\\101\\52.45815\\-187.7311\\101\\54.41127\\-187.6953\\101\\56.3644\\-187.848\\101\\58.31752\\-188.6861\\101\\60.27065\\-189.1941\\101\\62.22377\\-190.5102\\101\\64.1769\\-191.2101\\101\\67.02867\\-193.8021\\101\\68.61633\\-195.7553\\101\\69.10834\\-197.7084\\101\\69.3185\\-199.6615\\101\\70.96425\\-201.6146\\101\\72.84786\\-203.5678\\101\\73.6607\\-205.5209\\101\\73.56878\\-207.474\\101\\71.9894\\-208.2355\\101\\70.03628\\-206.2899\\101\\68.08315\\-206.8837\\101\\67.6123\\-207.474\\101\\67.52122\\-209.4271\\101\\66.9123\\-211.3803\\101\\65.63318\\-213.3334\\101\\64.96745\\-215.2865\\101\\62.22377\\-218.0049\\101\\60.27065\\-218.957\\101\\52.45815\\-218.9811\\101"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002250"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "623"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-218.1591\\103\\45.65674\\-213.3334\\103\\44.24892\\-211.3803\\103\\44.22971\\-205.5209\\103\\44.18368\\-203.5678\\103\\43.80669\\-201.6146\\103\\42.69252\\-200.5005\\103\\40.7394\\-200.7848\\103\\38.88469\\-199.6615\\103\\39.70676\\-197.7084\\103\\40.7394\\-196.6758\\103\\42.69252\\-194.9843\\103\\44.64565\\-193.4873\\103\\46.59877\\-192.3801\\103\\47.19628\\-191.849\\103\\50.50502\\-189.2603\\103\\52.45815\\-188.5851\\103\\54.41127\\-187.6953\\103\\56.3644\\-187.6837\\103\\58.31752\\-187.7812\\103\\60.27065\\-188.6324\\103\\62.22377\\-189.2063\\103\\66.13003\\-191.767\\103\\68.13573\\-193.8021\\103\\69.33453\\-195.7553\\103\\69.57431\\-197.7084\\103\\69.65925\\-199.6615\\103\\70.98843\\-201.6146\\103\\72.91042\\-203.5678\\103\\73.7149\\-205.5209\\103\\73.22173\\-207.474\\103\\71.9894\\-207.8752\\103\\70.30196\\-205.5209\\103\\70.03628\\-205.2734\\103\\68.08315\\-206.8837\\103\\67.6123\\-207.474\\103\\67.60354\\-209.4271\\103\\66.94725\\-211.3803\\103\\65.62471\\-213.3334\\103\\64.96127\\-215.2865\\103\\62.22377\\-217.9992\\103\\60.27065\\-218.9453\\103\\58.31752\\-218.9811\\103\\52.45815\\-218.969\\103"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002249"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "624"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-217.5965\\105\\48.5519\\-216.19\\105\\47.65326\\-215.2865\\105\\45.98449\\-213.3334\\105\\45.39418\\-211.3803\\105\\44.28883\\-209.4271\\105\\44.28883\\-203.5678\\105\\44.23925\\-201.6146\\105\\43.82612\\-199.6615\\105\\42.69252\\-198.5222\\105\\41.63937\\-197.7084\\105\\41.37129\\-195.7553\\105\\42.69252\\-194.2207\\105\\44.64565\\-193.6124\\105\\46.59877\\-193.1459\\105\\48.5519\\-191.96\\105\\50.50502\\-189.579\\105\\52.45815\\-188.3492\\105\\54.41127\\-187.6279\\105\\56.3644\\-187.1476\\105\\58.31752\\-186.9783\\105\\60.27065\\-186.9949\\105\\62.22377\\-187.7658\\105\\64.1769\\-188.8767\\105\\66.13003\\-189.8267\\105\\68.13614\\-191.849\\105\\69.32651\\-193.8021\\105\\69.62988\\-195.7553\\105\\70.59989\\-197.7084\\105\\71.08829\\-199.6615\\105\\71.9894\\-201.4159\\105\\73.314\\-203.5678\\105\\73.70034\\-205.5209\\105\\72.99166\\-207.474\\105\\71.9894\\-207.7836\\105\\70.43964\\-205.5209\\105\\70.03628\\-205.1641\\105\\68.08315\\-206.8837\\105\\67.6123\\-207.474\\105\\67.60354\\-209.4271\\105\\66.94725\\-211.3803\\105\\65.27608\\-213.3334\\105\\64.46063\\-215.2865\\105\\62.22377\\-217.5544\\105\\60.27065\\-218.3046\\105\\58.31752\\-218.957\\105\\54.41127\\-218.9453\\105\\52.45815\\-218.3987\\105"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002248"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "625"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-217.6743\\107\\50.50502\\-216.4807\\107\\48.5519\\-214.8474\\107\\47.29865\\-213.3334\\107\\45.90334\\-211.3803\\107\\45.72923\\-209.4271\\107\\45.72923\\-201.6146\\107\\45.69557\\-199.6615\\107\\44.64565\\-197.5903\\107\\42.69252\\-196.9181\\107\\40.76444\\-195.7553\\107\\41.44713\\-193.8021\\107\\42.69252\\-192.623\\107\\44.64565\\-192.6192\\107\\46.59877\\-193.0671\\107\\48.5519\\-192.6116\\107\\49.32316\\-191.849\\107\\50.18387\\-189.8959\\107\\51.52327\\-187.9428\\107\\52.45815\\-187.18\\107\\56.3644\\-186.529\\107\\58.31752\\-185.9669\\107\\60.27065\\-185.9669\\107\\62.22377\\-186.6459\\107\\64.1769\\-186.9399\\107\\66.13003\\-187.7764\\107\\68.23619\\-189.8959\\107\\69.33212\\-191.849\\107\\69.64934\\-193.8021\\107\\70.62898\\-195.7553\\107\\71.31252\\-197.7084\\107\\71.62241\\-199.6615\\107\\72.8451\\-201.6146\\107\\73.67199\\-203.5678\\107\\73.70034\\-205.5209\\107\\71.9894\\-206.7643\\107\\70.03628\\-205.2279\\107\\68.08315\\-206.9447\\107\\67.65778\\-207.474\\107\\67.57784\\-209.4271\\107\\66.88659\\-211.3803\\107\\64.1769\\-214.1886\\107\\62.22377\\-216.3311\\107\\60.27065\\-217.9942\\107\\58.31752\\-218.8585\\107\\56.3644\\-218.8918\\107\\54.41127\\-218.379\\107"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002247"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "626"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-217.5652\\109\\52.45815\\-216.4486\\109\\50.50502\\-215.5456\\109\\48.5519\\-213.9682\\109\\48.03523\\-213.3334\\109\\47.32696\\-211.3803\\109\\46.15488\\-209.4271\\109\\46.06864\\-207.474\\109\\46.06055\\-199.6615\\109\\45.85678\\-197.7084\\109\\44.64565\\-195.5999\\109\\42.69252\\-195.1856\\109\\40.79936\\-193.8021\\109\\41.45866\\-191.849\\109\\42.69252\\-190.6782\\109\\44.64565\\-191.1808\\109\\46.59877\\-192.265\\109\\47.36449\\-191.849\\109\\48.5519\\-190.916\\109\\49.20109\\-189.8959\\109\\49.88992\\-187.9428\\109\\50.50502\\-187.3196\\109\\52.45815\\-186.4417\\109\\54.41127\\-185.1732\\109\\56.3644\\-184.919\\109\\62.22377\\-184.919\\109\\64.1769\\-185.2828\\109\\66.13003\\-186.5833\\109\\68.08315\\-187.7368\\109\\69.3424\\-189.8959\\109\\69.66929\\-191.849\\109\\70.65157\\-193.8021\\109\\71.32261\\-195.7553\\109\\71.65331\\-197.7084\\109\\71.73031\\-199.6615\\109\\72.89927\\-201.6146\\109\\73.73082\\-203.5678\\109\\73.69025\\-205.5209\\109\\71.9894\\-206.5165\\109\\70.03628\\-206.0957\\109\\68.57439\\-207.474\\109\\67.23376\\-209.4271\\109\\66.13003\\-210.7099\\109\\62.22377\\-214.6553\\109\\60.27065\\-216.5198\\109\\58.31752\\-217.7937\\109\\56.3644\\-217.832\\109"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002246"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "627"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-215.8667\\111\\52.45815\\-214.791\\111\\50.74916\\-213.3334\\111\\48.5519\\-210.9471\\111\\47.41623\\-209.4271\\111\\46.30581\\-207.474\\111\\46.1734\\-205.5209\\111\\46.1734\\-201.6146\\111\\45.99319\\-197.7084\\111\\45.4863\\-195.7553\\111\\44.64565\\-194.7845\\111\\42.69252\\-193.1958\\111\\40.91619\\-191.849\\111\\41.36763\\-189.8959\\111\\42.69252\\-188.6935\\111\\44.64565\\-189.491\\111\\46.59877\\-189.3398\\111\\47.27385\\-187.9428\\111\\48.5519\\-185.6589\\111\\49.74935\\-184.0365\\111\\50.50502\\-183.4748\\111\\54.41127\\-182.8848\\111\\56.3644\\-182.8483\\111\\62.22377\\-182.8862\\111\\64.1769\\-183.7564\\111\\64.54188\\-184.0365\\111\\68.08315\\-185.7787\\111\\69.34603\\-187.9428\\111\\69.68975\\-189.8959\\111\\70.67048\\-191.849\\111\\71.32617\\-193.8021\\111\\71.65331\\-195.7553\\111\\71.84079\\-199.6615\\111\\72.95634\\-201.6146\\111\\73.72629\\-203.5678\\111\\73.51614\\-205.5209\\111\\71.9894\\-206.1942\\111\\70.03628\\-205.6526\\111\\68.87722\\-207.474\\111\\67.0244\\-209.4271\\111\\64.1769\\-212.2702\\111\\62.22377\\-214.1504\\111\\60.27065\\-215.3387\\111\\58.31752\\-215.8725\\111"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002245"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "48"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "628"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-213.9825\\113\\52.45815\\-212.8317\\113\\50.50502\\-211.0124\\113\\48.5519\\-209.0323\\113\\47.38932\\-207.474\\113\\46.35129\\-205.5209\\113\\46.08509\\-201.6146\\113\\45.0474\\-195.7553\\113\\43.09776\\-191.849\\113\\42.69252\\-191.4597\\113\\40.7394\\-190.5951\\113\\39.95164\\-189.8959\\113\\40.51404\\-187.9428\\113\\40.7394\\-187.694\\113\\42.69252\\-186.6657\\113\\44.64565\\-185.9588\\113\\46.58839\\-184.0365\\113\\47.77298\\-180.1303\\113\\48.5519\\-176.5495\\113\\48.87742\\-176.224\\113\\50.50502\\-175.8541\\113\\56.3644\\-175.8752\\113\\58.07338\\-178.1771\\113\\58.31752\\-178.2768\\113\\60.39105\\-180.1303\\113\\62.22377\\-180.8164\\113\\64.1769\\-181.7493\\113\\64.60483\\-182.0834\\113\\66.13003\\-182.7831\\113\\68.08315\\-183.9341\\113\\69.35626\\-185.9896\\113\\69.72146\\-187.9428\\113\\70.70034\\-189.8959\\113\\71.32617\\-191.849\\113\\71.64288\\-193.8021\\113\\71.71886\\-197.7084\\113\\73.37286\\-201.6146\\113\\73.71953\\-203.5678\\113\\73.72201\\-205.5209\\113\\71.9894\\-205.9217\\113\\70.03628\\-205.1035\\113\\69.70019\\-205.5209\\113\\68.92368\\-207.474\\113\\66.13003\\-210.2705\\113\\64.1769\\-212.1279\\113\\62.20827\\-213.3334\\113\\60.27065\\-213.9968\\113\\58.31752\\-214.0521\\113"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002244"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "56"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "629"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-211.6679\\115\\50.50502\\-210.2983\\115\\49.65795\\-209.4271\\115\\48.03822\\-207.474\\115\\47.32494\\-205.5209\\115\\46.09346\\-203.5678\\115\\45.71749\\-201.6146\\115\\44.44621\\-197.7084\\115\\44.21096\\-195.7553\\115\\43.74314\\-193.8021\\115\\43.10403\\-191.849\\115\\42.69252\\-191.3256\\115\\40.7394\\-188.323\\115\\38.78627\\-188.7283\\115\\38.39775\\-187.9428\\115\\38.86405\\-185.9896\\115\\40.7394\\-184.6975\\115\\42.69252\\-184.1771\\115\\44.75833\\-182.0834\\115\\45.20456\\-180.1303\\115\\45.27344\\-176.224\\115\\45.66333\\-174.2709\\115\\46.59877\\-172.7387\\115\\48.5519\\-170.5274\\115\\50.50502\\-170.4534\\115\\54.41127\\-170.4623\\115\\56.3644\\-170.9245\\115\\57.77645\\-172.3178\\115\\58.31752\\-172.6659\\115\\59.90865\\-174.2709\\115\\60.9669\\-176.224\\115\\62.22377\\-178.1848\\115\\64.1769\\-178.9726\\115\\66.13003\\-180.3046\\115\\69.0216\\-184.0365\\115\\69.74331\\-185.9896\\115\\70.71876\\-187.9428\\115\\71.33662\\-189.8959\\115\\71.64288\\-191.849\\115\\71.71886\\-197.7084\\115\\72.85578\\-199.6615\\115\\73.6607\\-201.6146\\115\\73.93365\\-203.5678\\115\\74.68025\\-205.5209\\115\\73.94253\\-206.391\\115\\71.9894\\-205.8642\\115\\70.03628\\-204.9014\\115\\69.548\\-205.5209\\115\\68.81814\\-207.474\\115\\66.13003\\-210.1763\\115\\64.13126\\-211.3803\\115\\62.22377\\-212.4111\\115\\60.27065\\-212.9539\\115\\58.31752\\-213.0743\\115\\56.3644\\-212.9743\\115\\54.41127\\-212.5213\\115"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002243"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "62"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "630"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-211.6312\\117\\52.45815\\-210.5455\\117\\50.50502\\-208.9328\\117\\48.5519\\-206.7748\\117\\47.59301\\-205.5209\\117\\45.84288\\-203.5678\\117\\45.25123\\-201.6146\\117\\44.34169\\-199.6615\\117\\44.11552\\-197.7084\\117\\43.73388\\-195.7553\\117\\43.22879\\-193.8021\\117\\42.274\\-191.849\\117\\42.01565\\-189.8959\\117\\41.40594\\-187.9428\\117\\40.7394\\-187.2866\\117\\38.98972\\-187.9428\\117\\37.69968\\-189.8959\\117\\36.83315\\-190.3231\\117\\36.42571\\-189.8959\\117\\36.19626\\-187.9428\\117\\37.53249\\-185.9896\\117\\37.53249\\-184.0365\\117\\38.78627\\-182.7908\\117\\40.7394\\-182.2731\\117\\42.88359\\-180.1303\\117\\43.27962\\-178.1771\\117\\43.32119\\-172.3178\\117\\44.64565\\-170.3451\\117\\45.38934\\-168.4115\\117\\46.59877\\-167.2964\\117\\48.5519\\-167.1627\\117\\52.45815\\-167.1702\\117\\54.41127\\-167.2649\\117\\56.3644\\-167.4742\\117\\57.72345\\-168.4115\\117\\60.27065\\-170.883\\117\\61.43642\\-172.3178\\117\\62.22377\\-173.8541\\117\\64.00251\\-176.224\\117\\66.13003\\-178.2579\\117\\67.50584\\-180.1303\\117\\68.75489\\-182.0834\\117\\69.51961\\-184.0365\\117\\70.72986\\-185.9896\\117\\71.34706\\-187.9428\\117\\71.64288\\-189.8959\\117\\71.69643\\-191.849\\117\\71.73031\\-197.7084\\117\\72.90119\\-199.6615\\117\\73.94253\\-201.9402\\117\\74.59184\\-203.5678\\117\\75.17208\\-205.5209\\117\\73.94253\\-206.7316\\117\\71.87865\\-205.5209\\117\\70.03628\\-204.5335\\117\\69.1893\\-205.5209\\117\\68.08315\\-207.3881\\117\\66.08967\\-209.4271\\117\\62.22377\\-211.5673\\117\\60.27065\\-212.3817\\117\\58.31752\\-212.7251\\117\\56.3644\\-212.4525\\117"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002242"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "59"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "631"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-211.5546\\119\\54.41127\\-210.5174\\119\\52.45815\\-209.6645\\119\\50.50502\\-208.3898\\119\\48.5519\\-206.5021\\119\\45.93592\\-203.5678\\119\\45.46977\\-201.6146\\119\\44.25871\\-199.6615\\119\\43.799\\-197.7084\\119\\43.22055\\-195.7553\\119\\42.274\\-193.8021\\119\\41.75703\\-191.849\\119\\41.51408\\-189.8959\\119\\40.97512\\-187.9428\\119\\38.78627\\-185.7156\\119\\36.83315\\-185.356\\119\\35.88342\\-184.0365\\119\\36.3756\\-182.0834\\119\\36.83315\\-181.6383\\119\\38.78627\\-180.7998\\119\\39.97786\\-180.1303\\119\\40.7394\\-179.2079\\119\\41.27878\\-178.1771\\119\\41.29503\\-172.3178\\119\\41.4354\\-170.3646\\119\\42.83099\\-168.4115\\119\\43.99704\\-166.4584\\119\\44.64565\\-165.8098\\119\\46.59877\\-165.2118\\119\\52.45815\\-165.2233\\119\\54.41127\\-165.6271\\119\\58.31752\\-167.0365\\119\\60.27065\\-168.31\\119\\62.22377\\-170.3723\\119\\63.42678\\-172.3178\\119\\64.1769\\-174.0241\\119\\65.55272\\-176.224\\119\\68.08315\\-179.473\\119\\68.66909\\-180.1303\\119\\69.38694\\-182.0834\\119\\70.62331\\-184.0365\\119\\71.36123\\-185.9896\\119\\71.64288\\-187.9428\\119\\71.69643\\-189.8959\\119\\71.69643\\-193.8021\\119\\71.89466\\-195.7553\\119\\72.19315\\-197.7084\\119\\73.07387\\-199.6615\\119\\74.18154\\-201.6146\\119\\74.88622\\-203.5678\\119\\74.65784\\-205.5209\\119\\73.94253\\-206.1414\\119\\71.9894\\-204.5764\\119\\70.03628\\-204.3145\\119\\67.21873\\-207.474\\119\\66.13003\\-208.5575\\119\\64.1769\\-210.2094\\119\\60.62423\\-211.3803\\119\\58.31752\\-212.0563\\119"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002241"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "632"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-209.6155\\121\\52.45815\\-208.5507\\121\\50.50502\\-207.6857\\121\\48.5519\\-206.2927\\121\\47.80809\\-205.5209\\121\\46.38707\\-203.5678\\121\\45.69422\\-201.6146\\121\\44.56488\\-199.6615\\121\\43.70978\\-197.7084\\121\\42.44504\\-195.7553\\121\\41.85997\\-193.8021\\121\\41.4694\\-191.849\\121\\40.46703\\-189.8959\\121\\39.27456\\-185.9896\\121\\38.78627\\-185.2615\\121\\37.5051\\-184.0365\\121\\36.83315\\-183.567\\121\\35.11874\\-182.0834\\121\\36.83315\\-180.5089\\121\\38.78627\\-178.8793\\121\\39.28312\\-178.1771\\121\\39.54217\\-174.2709\\121\\39.5479\\-172.3178\\121\\39.8055\\-170.3646\\121\\41.04539\\-168.4115\\121\\42.05147\\-166.4584\\121\\42.69252\\-165.7427\\121\\44.64565\\-163.8993\\121\\46.59877\\-163.4794\\121\\52.45815\\-163.4837\\121\\54.41127\\-164.1133\\121\\56.3644\\-165.2917\\121\\58.31752\\-165.69\\121\\59.51885\\-166.4584\\121\\62.22377\\-168.4342\\121\\64.1769\\-171.4135\\121\\64.85506\\-172.3178\\121\\65.51573\\-174.2709\\121\\66.85279\\-176.224\\121\\67.4203\\-178.1771\\121\\68.95491\\-180.1303\\121\\69.6109\\-182.0834\\121\\70.89658\\-184.0365\\121\\71.65331\\-185.9896\\121\\71.69643\\-191.849\\121\\71.90863\\-193.8021\\121\\72.75234\\-195.7553\\121\\73.28606\\-197.7084\\121\\74.33178\\-199.6615\\121\\74.98818\\-201.6146\\121\\75.02121\\-203.5678\\121\\73.94253\\-204.4599\\121\\72.66315\\-203.5678\\121\\71.9894\\-202.9287\\121\\70.03628\\-203.4111\\121\\68.80407\\-205.5209\\121\\66.13003\\-208.2482\\121\\62.22377\\-210.4037\\121\\60.27065\\-210.7603\\121\\58.31752\\-210.8182\\121\\56.3644\\-210.4902\\121"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002240"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "65"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "633"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-209.5365\\123\\54.41127\\-208.5407\\123\\52.45815\\-207.6994\\123\\50.50502\\-206.4865\\123\\49.26149\\-205.5209\\123\\47.51062\\-203.5678\\123\\46.12793\\-201.6146\\123\\45.49636\\-199.6615\\123\\43.91191\\-197.7084\\123\\42.68489\\-195.7553\\123\\41.97475\\-193.8021\\123\\41.5532\\-191.849\\123\\39.86466\\-189.8959\\123\\38.77864\\-185.9896\\123\\38.38453\\-184.0365\\123\\36.83315\\-182.8109\\123\\34.88002\\-183.189\\123\\33.58014\\-182.0834\\123\\34.25682\\-180.1303\\123\\34.88002\\-179.292\\123\\36.83315\\-178.0564\\123\\37.78687\\-176.224\\123\\38.45165\\-174.2709\\123\\38.58398\\-172.3178\\123\\39.30823\\-170.3646\\123\\39.85453\\-168.4115\\123\\41.22187\\-166.4584\\123\\42.24973\\-164.5053\\123\\42.69252\\-164.0706\\123\\44.64565\\-163.2083\\123\\46.59877\\-162.9681\\123\\52.45815\\-162.9681\\123\\54.41127\\-163.287\\123\\56.3644\\-163.713\\123\\58.31752\\-165.0721\\123\\60.27065\\-165.6761\\123\\63.22659\\-168.4115\\123\\64.79939\\-170.3646\\123\\65.37048\\-172.3178\\123\\66.73402\\-174.2709\\123\\67.39059\\-176.224\\123\\67.5863\\-178.1771\\123\\68.97912\\-180.1303\\123\\69.63955\\-182.0834\\123\\70.79638\\-184.0365\\123\\71.54006\\-185.9896\\123\\71.90863\\-187.9428\\123\\72.1676\\-189.8959\\123\\72.18186\\-191.849\\123\\72.77436\\-193.8021\\123\\74.31488\\-195.7553\\123\\74.96537\\-197.7084\\123\\75.25346\\-199.6615\\123\\75.2668\\-201.6146\\123\\73.94253\\-202.78\\123\\72.59787\\-201.6146\\123\\71.9894\\-200.8955\\123\\70.03628\\-201.5083\\123\\69.06983\\-203.5678\\123\\68.08315\\-205.2989\\123\\66.01247\\-207.474\\123\\64.1769\\-208.4506\\123\\62.05222\\-209.4271\\123\\60.27065\\-210.1067\\123\\58.31752\\-210.1261\\123"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002239"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "72"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "634"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-206.5714\\125\\51.08061\\-205.5209\\125\\49.15432\\-203.5678\\125\\47.51313\\-201.6146\\125\\46.13681\\-199.6615\\125\\45.26598\\-197.7084\\125\\43.69781\\-195.7553\\125\\42.59778\\-193.8021\\125\\41.6426\\-191.849\\125\\39.70351\\-189.8959\\125\\38.76357\\-187.9428\\125\\38.42715\\-185.9896\\125\\37.85878\\-184.0365\\125\\36.83315\\-182.2921\\125\\34.88002\\-182.2864\\125\\33.8583\\-184.0365\\125\\32.9269\\-185.402\\125\\30.97377\\-185.5733\\125\\29.89048\\-184.0365\\125\\30.97377\\-182.8565\\125\\31.98848\\-182.0834\\125\\33.06796\\-180.1303\\125\\33.55513\\-178.1771\\125\\34.88002\\-176.7904\\125\\35.74697\\-176.224\\125\\36.83315\\-175.1804\\125\\37.3821\\-174.2709\\125\\37.82954\\-172.3178\\125\\38.51014\\-170.3646\\125\\39.75367\\-168.4115\\125\\40.65863\\-166.4584\\125\\41.76759\\-164.5053\\125\\42.69252\\-163.608\\125\\44.64565\\-162.8987\\125\\46.59877\\-162.4292\\125\\48.5519\\-162.3268\\125\\50.50502\\-162.5146\\125\\52.45815\\-162.8227\\125\\54.41127\\-162.8987\\125\\56.3644\\-163.2683\\125\\58.31752\\-163.7849\\125\\60.27065\\-165.2086\\125\\62.22377\\-166.1654\\125\\64.41931\\-168.4115\\125\\65.35731\\-170.3646\\125\\65.7835\\-172.3178\\125\\67.08142\\-174.2709\\125\\67.5612\\-176.224\\125\\67.62119\\-178.1771\\125\\68.97912\\-180.1303\\125\\69.63955\\-182.0834\\125\\70.13101\\-184.0365\\125\\71.2362\\-185.9896\\125\\72.70218\\-187.9428\\125\\73.1853\\-189.8959\\125\\73.35191\\-191.849\\125\\74.37579\\-193.8021\\125\\75.28259\\-195.7553\\125\\75.57753\\-197.7084\\125\\75.1795\\-199.6615\\125\\73.94253\\-200.8641\\125\\73.1457\\-199.6615\\125\\71.9894\\-198.3152\\125\\70.03628\\-199.515\\125\\69.03374\\-201.6146\\125\\67.93346\\-203.5678\\125\\66.95329\\-205.5209\\125\\66.13003\\-206.3254\\125\\62.22377\\-208.2654\\125\\60.27065\\-208.8196\\125\\58.31752\\-208.831\\125\\56.3644\\-208.3888\\125"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002238"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "69"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "635"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "58.31752\\-207.8685\\127\\56.3644\\-206.5053\\127\\52.45815\\-205.491\\127\\50.36959\\-203.5678\\127\\49.275\\-201.6146\\127\\47.53753\\-199.6615\\127\\46.31695\\-197.7084\\127\\45.3951\\-195.7553\\127\\44.64565\\-195.0058\\127\\43.71027\\-193.8021\\127\\41.9167\\-191.849\\127\\39.78827\\-189.8959\\127\\38.6642\\-187.9428\\127\\37.48928\\-184.0365\\127\\36.83315\\-182.1278\\127\\35.79086\\-180.1303\\127\\34.88002\\-179.396\\127\\34.10989\\-180.1303\\127\\33.24534\\-182.0834\\127\\32.13842\\-184.0365\\127\\30.97377\\-184.935\\127\\29.16657\\-184.0365\\127\\30.01979\\-182.0834\\127\\30.97377\\-180.7081\\127\\31.6041\\-180.1303\\127\\32.05078\\-178.1771\\127\\33.22679\\-176.224\\127\\35.81618\\-174.2709\\127\\37.30399\\-172.3178\\127\\37.93301\\-170.3646\\127\\39.74902\\-168.4115\\127\\40.91378\\-166.4584\\127\\41.94633\\-164.5053\\127\\42.69252\\-163.7777\\127\\44.64565\\-163.0258\\127\\46.59877\\-161.7383\\127\\48.5519\\-161.5114\\127\\50.50502\\-161.7639\\127\\52.45815\\-162.5\\127\\54.41127\\-162.8227\\127\\56.3644\\-162.9292\\127\\58.31752\\-163.6803\\127\\60.27065\\-164.741\\127\\62.22377\\-165.6423\\127\\65.00475\\-168.4115\\127\\65.5759\\-170.3646\\127\\66.68045\\-172.3178\\127\\67.40984\\-174.2709\\127\\67.60354\\-176.224\\127\\67.62119\\-178.1771\\127\\68.97912\\-180.1303\\127\\69.87469\\-182.0834\\127\\70.33755\\-184.0365\\127\\71.9894\\-186.0729\\127\\73.35992\\-187.9428\\127\\74.14196\\-189.8959\\127\\74.51597\\-191.849\\127\\74.86108\\-195.7553\\127\\74.19508\\-197.7084\\127\\73.81943\\-197.7084\\127\\71.9894\\-195.764\\127\\70.03628\\-197.0031\\127\\68.87997\\-199.6615\\127\\67.7148\\-201.6146\\127\\66.82488\\-203.5678\\127\\66.13003\\-204.359\\127\\64.1769\\-205.9971\\127\\62.22377\\-206.3089\\127\\60.27065\\-207.8369\\127"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002237"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "65"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "636"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "54.41127\\-203.9845\\129\\53.28318\\-203.5678\\129\\52.45815\\-202.9912\\129\\51.38025\\-201.6146\\129\\49.46397\\-199.6615\\129\\48.1426\\-197.7084\\129\\47.48111\\-195.7553\\129\\45.56942\\-193.8021\\129\\44.64565\\-193.1093\\129\\42.69252\\-191.3317\\129\\40.61312\\-189.8959\\129\\38.98571\\-187.9428\\129\\38.23064\\-185.9896\\129\\37.5927\\-184.0365\\129\\36.82552\\-182.0834\\129\\36.76656\\-180.1303\\129\\35.86616\\-178.1771\\129\\34.88002\\-177.524\\129\\34.18633\\-178.1771\\129\\33.04897\\-180.1303\\129\\31.74546\\-182.0834\\129\\30.97377\\-183.0514\\129\\30.05418\\-182.0834\\129\\30.26789\\-180.1303\\129\\30.97377\\-178.3009\\129\\32.16615\\-176.224\\129\\32.9269\\-175.3945\\129\\34.88002\\-174.5831\\129\\36.87071\\-172.3178\\129\\37.7999\\-170.3646\\129\\39.75819\\-168.4115\\129\\41.52742\\-166.4584\\129\\43.19317\\-164.5053\\129\\44.64565\\-163.4227\\129\\46.59877\\-161.7144\\129\\48.5519\\-161.2449\\129\\50.50502\\-161.3564\\129\\52.45815\\-161.7559\\129\\54.41127\\-162.4714\\129\\56.3644\\-162.8777\\129\\58.31752\\-163.6714\\129\\62.22377\\-165.627\\129\\65.02587\\-168.4115\\129\\65.62471\\-170.3646\\129\\66.83776\\-172.3178\\129\\67.46218\\-174.2709\\129\\67.60354\\-176.224\\129\\67.89615\\-178.1771\\129\\69.35509\\-180.1303\\129\\70.03628\\-181.2121\\129\\71.9894\\-183.1052\\129\\72.71828\\-184.0365\\129\\73.07937\\-185.9896\\129\\72.99166\\-187.9428\\129\\71.9894\\-189.8471\\129\\70.03628\\-191.6342\\129\\68.57546\\-193.8021\\129\\68.35688\\-195.7553\\129\\68.26001\\-197.7084\\129\\66.13003\\-200.859\\129\\64.1769\\-202.7615\\129\\63.18639\\-203.5678\\129\\62.22377\\-204.056\\129\\60.27065\\-204.2467\\129\\58.31752\\-204.2587\\129"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002236"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "61"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "637"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-201.9023\\131\\55.36459\\-201.6146\\131\\54.41127\\-200.9243\\131\\52.45815\\-199.3047\\131\\51.05124\\-197.7084\\131\\50.50502\\-196.8821\\131\\50.07419\\-195.7553\\131\\48.59768\\-193.8021\\131\\46.59877\\-192.2663\\131\\44.64565\\-191.685\\131\\42.69252\\-190.7992\\131\\40.7394\\-189.1562\\131\\39.52595\\-187.9428\\131\\38.61189\\-185.9896\\131\\37.83748\\-184.0365\\131\\37.29671\\-182.0834\\131\\36.78097\\-178.1771\\131\\34.88002\\-176.7859\\131\\33.0354\\-178.1771\\131\\30.97377\\-180.5392\\131\\30.59993\\-180.1303\\131\\30.2061\\-178.1771\\131\\32.9269\\-175.3152\\131\\34.88002\\-174.119\\131\\36.83315\\-171.9384\\131\\37.79008\\-170.3646\\131\\39.76284\\-168.4115\\131\\44.64565\\-163.7791\\131\\46.59877\\-162.4024\\131\\48.5519\\-161.5756\\131\\50.50502\\-161.2238\\131\\52.45815\\-161.4468\\131\\54.41127\\-161.964\\131\\56.3644\\-162.8777\\131\\58.31752\\-163.6714\\131\\62.22377\\-165.627\\131\\65.02587\\-168.4115\\131\\66.19816\\-172.3178\\131\\67.20473\\-174.2709\\131\\67.89615\\-176.224\\131\\69.37593\\-178.1771\\131\\70.03628\\-178.8313\\131\\71.77925\\-180.1303\\131\\72.79903\\-182.0834\\131\\72.57534\\-184.0365\\131\\71.9894\\-185.0962\\131\\70.2021\\-182.0834\\131\\69.89895\\-182.0834\\131\\68.91209\\-184.0365\\131\\68.9127\\-185.9896\\131\\68.4232\\-187.9428\\131\\66.5257\\-191.849\\131\\66.29409\\-193.8021\\131\\66.265\\-195.7553\\131\\66.13003\\-196.3701\\131\\65.4609\\-197.7084\\131\\64.1769\\-199.0418\\131\\63.35058\\-199.6615\\131\\60.27065\\-200.9444\\131\\59.37119\\-201.6146\\131\\58.31752\\-201.8908\\131"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002235"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "55"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "638"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "56.3644\\-196.4419\\133\\54.41127\\-195.5705\\133\\52.68944\\-193.8021\\133\\50.65151\\-191.849\\133\\48.5519\\-190.7073\\133\\44.64565\\-190.3184\\133\\42.69252\\-189.7475\\133\\40.7394\\-188.7143\\133\\39.96786\\-187.9428\\133\\39.04536\\-185.9896\\133\\38.28355\\-184.0365\\133\\38.03632\\-182.0834\\133\\37.62171\\-180.1303\\133\\37.08234\\-178.1771\\133\\36.83315\\-177.8881\\133\\34.88002\\-176.5388\\133\\32.9269\\-177.1323\\133\\30.97377\\-178.8\\133\\30.45337\\-178.1771\\133\\32.11003\\-176.224\\133\\34.03005\\-174.2709\\133\\36.13807\\-172.3178\\133\\37.89441\\-170.3646\\133\\40.7394\\-167.4795\\133\\42.69252\\-166.0145\\133\\44.64565\\-164.9712\\133\\46.59877\\-163.5038\\133\\48.5519\\-162.4292\\133\\50.50502\\-161.5852\\133\\52.45815\\-161.6467\\133\\56.3644\\-162.8669\\133\\58.31752\\-163.6714\\133\\62.22377\\-165.627\\133\\63.0903\\-166.4584\\133\\64.84795\\-168.4115\\133\\65.50566\\-170.3646\\133\\65.65041\\-172.3178\\133\\67.07884\\-174.2709\\133\\68.08315\\-175.3756\\133\\70.03628\\-176.8601\\133\\71.9894\\-178.8963\\133\\72.79742\\-180.1303\\133\\71.9894\\-181.7381\\133\\70.03628\\-180.8826\\133\\68.08315\\-180.6848\\133\\66.55501\\-182.0834\\133\\66.30972\\-184.0365\\133\\66.26611\\-185.9896\\133\\66.13003\\-186.464\\133\\64.44157\\-189.8959\\133\\64.1769\\-190.622\\133\\63.32241\\-191.849\\133\\62.22377\\-193.7716\\133\\60.27065\\-195.7756\\133\\58.31752\\-196.4614\\133"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002234"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "49"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "639"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-189.8238\\135\\48.5519\\-189.317\\135\\46.59877\\-189.3088\\135\\44.64565\\-188.9407\\135\\42.69252\\-188.3206\\135\\40.7394\\-187.1004\\135\\39.84671\\-185.9896\\135\\39.0681\\-184.0365\\135\\38.19257\\-180.1303\\135\\37.63829\\-178.1771\\135\\36.83315\\-177.2919\\135\\34.88002\\-176.528\\135\\32.9269\\-176.9784\\135\\32.12958\\-176.224\\135\\33.86748\\-174.2709\\135\\34.88002\\-173.2741\\135\\36.83315\\-171.9387\\135\\38.78627\\-169.7906\\135\\39.76284\\-168.4115\\135\\40.7394\\-167.4838\\135\\44.64565\\-165.5353\\135\\46.59877\\-164.0989\\135\\48.5519\\-163.5237\\135\\50.50502\\-162.8091\\135\\52.45815\\-162.8683\\135\\54.41127\\-163.2411\\135\\56.3644\\-163.2726\\135\\58.31752\\-163.7457\\135\\60.27065\\-164.948\\135\\62.22377\\-165.9447\\135\\62.75591\\-166.4584\\135\\63.86885\\-168.4115\\135\\65.10124\\-170.3646\\135\\65.50185\\-172.3178\\135\\66.13003\\-173.1304\\135\\68.08315\\-174.7928\\135\\70.03628\\-175.6217\\135\\70.6729\\-176.224\\135\\72.8146\\-180.1303\\135\\71.9894\\-181.5408\\135\\70.03628\\-180.668\\135\\68.08315\\-179.1102\\135\\66.13003\\-179.704\\135\\65.75443\\-180.1303\\135\\63.66692\\-185.9896\\135\\60.27065\\-189.5621\\135\\58.31752\\-190.8562\\135\\56.3644\\-190.9034\\135\\54.41127\\-190.6992\\135"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002233"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "47"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "640"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.1396\\137\\44.64565\\-187.6828\\137\\42.69252\\-186.8719\\137\\41.54235\\-185.9896\\137\\40.7394\\-185.1926\\137\\39.81995\\-184.0365\\137\\38.99798\\-182.0834\\137\\38.71969\\-180.1303\\137\\38.20485\\-178.1771\\137\\36.83315\\-176.8211\\137\\34.88002\\-176.517\\137\\32.9269\\-176.5937\\137\\32.54633\\-176.224\\137\\33.87246\\-174.2709\\137\\34.88002\\-173.2791\\137\\36.83315\\-172.3985\\137\\38.78627\\-170.284\\137\\39.76284\\-168.4115\\137\\40.7394\\-167.4838\\137\\42.69252\\-166.1119\\137\\46.59877\\-164.6273\\137\\48.5519\\-164.0989\\137\\50.50502\\-163.9279\\137\\52.45815\\-163.9356\\137\\58.31752\\-164.8118\\137\\60.27065\\-165.6638\\137\\62.22377\\-167.4494\\137\\62.98779\\-168.4115\\137\\63.98721\\-170.3646\\137\\65.09692\\-172.3178\\137\\66.13003\\-173.4931\\137\\68.08315\\-174.7294\\137\\70.03628\\-175.7198\\137\\70.53724\\-176.224\\137\\71.52523\\-178.1771\\137\\72.67036\\-180.1303\\137\\71.9894\\-181.429\\137\\70.03628\\-181.1515\\137\\68.08315\\-179.1811\\137\\66.13003\\-178.7428\\137\\64.39308\\-180.1303\\137\\63.79279\\-182.0834\\137\\62.91016\\-184.0365\\137\\62.22377\\-184.9677\\137\\60.27065\\-186.9128\\137\\58.31752\\-188.1095\\137\\56.3644\\-188.1413\\137"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002232"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "641"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "44.64565\\-186.4317\\139\\42.69252\\-185.417\\139\\40.7394\\-183.5299\\139\\39.57048\\-182.0834\\139\\39.05681\\-180.1303\\139\\38.71969\\-178.1771\\139\\36.83315\\-176.528\\139\\34.88002\\-176.5058\\139\\34.31256\\-176.224\\139\\33.87246\\-174.2709\\139\\34.88002\\-173.2791\\139\\36.83315\\-172.3985\\139\\38.78627\\-170.284\\139\\39.75819\\-168.4115\\139\\41.70021\\-166.4584\\139\\42.69252\\-165.333\\139\\44.64565\\-164.3425\\139\\46.59877\\-163.9886\\139\\50.50502\\-163.9886\\139\\52.45815\\-164.2462\\139\\54.41127\\-165.2894\\139\\58.31752\\-166.1654\\139\\60.27065\\-167.4042\\139\\62.22377\\-169.3568\\139\\62.96481\\-170.3646\\139\\64.1769\\-172.5619\\139\\66.42199\\-174.2709\\139\\68.08315\\-175.1372\\139\\69.36257\\-176.224\\139\\70.974\\-178.1771\\139\\71.83749\\-180.1303\\139\\70.03628\\-181.6693\\139\\68.08315\\-180.3347\\139\\66.13003\\-178.7153\\139\\64.1769\\-179.031\\139\\63.11111\\-180.1303\\139\\62.71206\\-182.0834\\139\\61.38417\\-184.0365\\139\\60.27065\\-185.15\\139\\58.31752\\-186.284\\139\\56.3644\\-186.6153\\139\\46.59877\\-186.6073\\139"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002231"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "642"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "42.69252\\-184.5969\\141\\40.08662\\-182.0834\\141\\39.52116\\-180.1303\\141\\38.71969\\-178.1771\\141\\36.83315\\-176.528\\141\\34.88002\\-176.5058\\141\\34.49121\\-176.224\\141\\33.86748\\-174.2709\\141\\34.88002\\-173.2741\\141\\36.83315\\-172.3843\\141\\38.67777\\-170.3646\\141\\40.58971\\-166.4584\\141\\41.93989\\-164.5053\\141\\42.69252\\-163.7847\\141\\44.64565\\-162.9601\\141\\46.59877\\-162.7136\\141\\48.5519\\-162.7136\\141\\50.50502\\-163.0499\\141\\52.45815\\-163.6675\\141\\56.3644\\-165.7396\\141\\60.03712\\-168.4115\\141\\62.22377\\-170.9811\\141\\63.24219\\-172.3178\\141\\64.1769\\-173.3509\\141\\66.13003\\-174.7328\\141\\68.08315\\-175.5382\\141\\68.80121\\-176.224\\141\\70.07413\\-178.1771\\141\\70.95248\\-180.1303\\141\\70.03628\\-181.4562\\141\\68.08315\\-181.0509\\141\\66.13003\\-179.0541\\141\\64.1769\\-178.6854\\141\\62.31923\\-180.1303\\141\\61.49377\\-182.0834\\141\\60.27065\\-183.8737\\141\\58.31752\\-185.0899\\141\\56.3644\\-185.7779\\141\\54.41127\\-185.841\\141\\48.5519\\-185.828\\141\\46.59877\\-185.5457\\141\\44.64565\\-185.1626\\141"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002230"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "643"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-186.3691\\143\\46.59877\\-185.3577\\143\\44.64565\\-184.931\\143\\42.69252\\-184.0741\\143\\40.49191\\-182.0834\\143\\39.69213\\-180.1303\\143\\38.78627\\-178.2593\\143\\36.83315\\-176.528\\143\\34.88002\\-176.528\\143\\34.45504\\-176.224\\143\\33.86748\\-174.2709\\143\\34.88002\\-173.2741\\143\\36.83315\\-172.0039\\143\\38.1081\\-170.3646\\143\\38.76357\\-168.4115\\143\\40.63008\\-164.5053\\143\\42.85215\\-162.5521\\143\\44.64565\\-161.6378\\143\\46.59877\\-161.3931\\143\\48.5519\\-161.3872\\143\\50.50502\\-161.7213\\143\\52.45815\\-162.8302\\143\\54.41127\\-163.6477\\143\\56.3644\\-165.3537\\143\\58.13763\\-166.4584\\143\\60.27065\\-168.05\\143\\60.6321\\-168.4115\\143\\61.55723\\-170.3646\\143\\63.11113\\-172.3178\\143\\64.1769\\-173.4098\\143\\66.13003\\-175.1305\\143\\68.08315\\-176.3916\\143\\69.31644\\-178.1771\\143\\69.80518\\-180.1303\\143\\68.08315\\-181.2307\\143\\66.13003\\-179.363\\143\\64.1769\\-178.5132\\143\\62.22377\\-179.6247\\143\\61.78909\\-180.1303\\143\\61.22652\\-182.0834\\143\\60.27065\\-183.1135\\143\\58.31752\\-184.9638\\143\\56.3644\\-185.8026\\143\\54.41127\\-186.3362\\143\\52.45815\\-186.5789\\143\\50.50502\\-186.5824\\143"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002229"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "644"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-186.3106\\145\\44.64565\\-185.284\\145\\42.69252\\-184.5277\\145\\40.14051\\-182.0834\\145\\39.56079\\-180.1303\\145\\38.71969\\-178.1771\\145\\36.83315\\-176.528\\145\\34.88002\\-176.6949\\145\\34.15432\\-176.224\\145\\33.86748\\-174.2709\\145\\35.9606\\-172.3178\\145\\37.42137\\-170.3646\\145\\37.94288\\-168.4115\\145\\39.15562\\-166.4584\\145\\39.86466\\-164.5053\\145\\42.69252\\-161.7406\\145\\44.64565\\-161.2413\\145\\46.59877\\-161.0244\\145\\48.5519\\-161.0244\\145\\50.50502\\-161.2826\\145\\52.45815\\-161.7061\\145\\53.99778\\-162.5521\\145\\56.3644\\-164.1461\\145\\58.31752\\-165.592\\145\\60.27065\\-167.3023\\145\\61.21121\\-168.4115\\145\\62.31923\\-170.3646\\145\\63.22315\\-172.3178\\145\\66.13003\\-175.3676\\145\\67.0953\\-176.224\\145\\68.48839\\-178.1771\\145\\68.97242\\-180.1303\\145\\68.08315\\-181.1314\\145\\66.13003\\-180.4464\\145\\64.1769\\-178.7468\\145\\62.22377\\-179.6247\\145\\61.78909\\-180.1303\\145\\61.1641\\-182.0834\\145\\58.31752\\-184.9591\\145\\56.3644\\-186.1512\\145\\54.41127\\-186.9257\\145\\52.45815\\-187.2544\\145\\50.50502\\-187.2754\\145\\48.5519\\-186.9969\\145"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002228"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "645"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-187.9953\\147\\44.64565\\-186.688\\147\\42.69252\\-184.9543\\147\\39.79391\\-182.0834\\147\\39.11394\\-180.1303\\147\\38.70551\\-178.1771\\147\\36.83315\\-176.528\\147\\34.88002\\-177.0165\\147\\33.36635\\-176.224\\147\\33.86748\\-174.2709\\147\\35.82098\\-172.3178\\147\\36.85586\\-170.3646\\147\\38.74871\\-166.4584\\147\\39.74516\\-164.5053\\147\\42.69252\\-161.5961\\147\\44.64565\\-161.0244\\147\\50.50502\\-161.0054\\147\\52.45815\\-161.4393\\147\\54.41127\\-161.9949\\147\\56.3644\\-163.6938\\147\\58.31752\\-165.0542\\147\\60.27065\\-166.0592\\147\\60.66987\\-166.4584\\147\\61.5433\\-168.4115\\147\\62.93821\\-170.3646\\147\\63.50359\\-172.3178\\147\\64.88953\\-174.2709\\147\\66.57627\\-176.224\\147\\67.44786\\-178.1771\\147\\67.96667\\-180.1303\\147\\66.13003\\-181.1784\\147\\64.1769\\-179.1908\\147\\62.22377\\-179.6247\\147\\61.78909\\-180.1303\\147\\61.1641\\-182.0834\\147\\58.31752\\-184.9681\\147\\56.3644\\-186.6926\\147\\54.41127\\-187.4117\\147\\52.45815\\-187.719\\147\\50.50502\\-188.1681\\147"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002227"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "646"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.2284\\149\\44.64565\\-187.1605\\149\\42.69252\\-185.3473\\149\\39.69002\\-182.0834\\149\\38.73409\\-180.1303\\149\\38.69153\\-178.1771\\149\\36.83315\\-176.4945\\149\\34.88002\\-177.2596\\149\\32.9269\\-176.3397\\149\\32.9269\\-176.1325\\149\\33.86748\\-174.2709\\149\\35.82098\\-172.3178\\149\\36.84078\\-170.3646\\149\\39.632\\-164.5053\\149\\42.69252\\-161.6001\\149\\44.64565\\-161.061\\149\\46.59877\\-161.0054\\149\\50.50502\\-161.052\\149\\52.45815\\-161.5849\\149\\54.41127\\-162.4035\\149\\56.3644\\-163.6831\\149\\60.27065\\-165.6453\\149\\61.08369\\-166.4584\\149\\61.77988\\-168.4115\\149\\63.09235\\-170.3646\\149\\63.68862\\-172.3178\\149\\64.12472\\-174.2709\\149\\65.39055\\-176.224\\149\\67.01259\\-178.1771\\149\\67.42345\\-180.1303\\149\\66.13003\\-181.7514\\149\\64.1769\\-180.1218\\149\\62.22377\\-179.6247\\149\\61.78909\\-180.1303\\149\\61.16859\\-182.0834\\149\\60.27065\\-183.1022\\149\\58.31752\\-185.0929\\149\\56.3644\\-186.8988\\149\\54.41127\\-187.707\\149\\52.45815\\-188.2054\\149\\50.50502\\-188.856\\149\\48.5519\\-188.9351\\149"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002226"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "46"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "647"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.8056\\151\\44.64565\\-187.4843\\151\\42.69252\\-186.6943\\151\\41.99966\\-185.9896\\151\\40.9511\\-184.0365\\151\\39.68608\\-182.0834\\151\\38.73409\\-180.1303\\151\\38.69153\\-178.1771\\151\\36.83315\\-176.0612\\151\\34.88002\\-177.7081\\151\\32.84552\\-178.1771\\151\\32.88934\\-176.224\\151\\33.88301\\-174.2709\\151\\35.82098\\-172.3178\\151\\36.89973\\-170.3646\\151\\38.78627\\-166.3211\\151\\39.42131\\-164.5053\\151\\42.69252\\-161.7514\\151\\44.64565\\-161.3043\\151\\46.59877\\-161.0959\\151\\48.5519\\-161.0959\\151\\50.50502\\-161.298\\151\\52.45815\\-161.8172\\151\\54.41127\\-162.8669\\151\\56.3644\\-163.6831\\151\\60.27065\\-165.6453\\151\\61.08369\\-166.4584\\151\\61.77988\\-168.4115\\151\\63.09235\\-170.3646\\151\\63.68862\\-172.3178\\151\\63.69728\\-174.2709\\151\\65.08166\\-176.224\\151\\66.05679\\-178.1771\\151\\67.16763\\-180.1303\\151\\66.18947\\-182.0834\\151\\64.1769\\-180.5694\\151\\62.22377\\-179.635\\151\\61.7984\\-180.1303\\151\\61.26863\\-182.0834\\151\\60.27065\\-183.861\\151\\57.7625\\-185.9896\\151\\56.3644\\-186.9285\\151\\54.41127\\-188.0375\\151\\52.45815\\-188.8622\\151\\50.50502\\-189.3958\\151\\48.5519\\-189.4465\\151"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002225"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "53"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "648"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.9873\\153\\44.64565\\-187.6837\\153\\42.69252\\-187.0443\\153\\41.66076\\-185.9896\\153\\40.50368\\-184.0365\\153\\39.6997\\-182.0834\\153\\38.7939\\-180.1303\\153\\38.70551\\-178.1771\\153\\38.1438\\-176.224\\153\\36.83315\\-175.4207\\153\\35.97445\\-176.224\\153\\34.90274\\-178.1771\\153\\32.9269\\-179.8733\\153\\32.07883\\-178.1771\\153\\32.9269\\-176.6278\\153\\33.27977\\-176.224\\153\\34.02617\\-174.2709\\153\\35.83592\\-172.3178\\153\\37.28613\\-170.3646\\153\\37.8903\\-168.4115\\153\\39.77387\\-164.5053\\153\\40.7394\\-163.6465\\153\\42.69252\\-162.934\\153\\44.64565\\-161.6453\\153\\46.59877\\-161.4518\\153\\48.5519\\-161.4518\\153\\50.50502\\-161.6879\\153\\52.45815\\-162.4024\\153\\54.41127\\-162.9292\\153\\56.3644\\-163.7013\\153\\58.31752\\-164.7643\\153\\60.27065\\-165.6652\\153\\61.06382\\-166.4584\\153\\61.72692\\-168.4115\\153\\63.09235\\-170.3646\\153\\63.68862\\-172.3178\\153\\63.69728\\-174.2709\\153\\65.08166\\-176.224\\153\\65.61702\\-178.1771\\153\\67.0467\\-180.1303\\153\\66.13003\\-181.6485\\153\\64.1769\\-180.1219\\153\\62.22377\\-179.721\\153\\61.86695\\-180.1303\\153\\61.59941\\-182.0834\\153\\61.04533\\-184.0365\\153\\60.27065\\-184.8462\\153\\58.31752\\-186.1905\\153\\56.3644\\-187.0805\\153\\54.41127\\-188.4515\\153\\52.45815\\-189.1991\\153\\50.50502\\-189.6368\\153\\48.5519\\-189.6368\\153"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002224"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "50"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "649"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.9674\\155\\44.64565\\-187.6279\\155\\42.69252\\-187.0229\\155\\41.68185\\-185.9896\\155\\40.59079\\-184.0365\\155\\39.80663\\-182.0834\\155\\39.1633\\-180.1303\\155\\38.70551\\-178.1771\\155\\38.54984\\-176.224\\155\\36.83315\\-175.3472\\155\\35.90123\\-176.224\\155\\35.26696\\-178.1771\\155\\32.9269\\-180.342\\155\\32.65169\\-180.1303\\155\\31.93554\\-178.1771\\155\\33.8099\\-176.224\\155\\34.59042\\-174.2709\\155\\36.00683\\-172.3178\\155\\37.78988\\-170.3646\\155\\38.43057\\-168.4115\\155\\39.30902\\-166.4584\\155\\40.7394\\-164.8373\\155\\42.69252\\-163.6661\\155\\44.64565\\-162.934\\155\\46.59877\\-162.3499\\155\\48.5519\\-162.3374\\155\\50.50502\\-162.6043\\155\\54.41127\\-163.2894\\155\\56.3644\\-163.7849\\155\\58.31752\\-165.0923\\155\\60.27065\\-166.0054\\155\\60.72363\\-166.4584\\155\\61.47812\\-168.4115\\155\\63.0695\\-170.3646\\155\\63.64677\\-172.3178\\155\\63.69728\\-174.2709\\155\\65.08166\\-176.224\\155\\65.63579\\-178.1771\\155\\66.98998\\-180.1303\\155\\66.13003\\-181.118\\155\\64.1769\\-179.5366\\155\\62.56933\\-180.1303\\155\\62.22377\\-180.6185\\155\\61.18903\\-184.0365\\155\\60.27065\\-184.9915\\155\\58.31752\\-186.7678\\155\\54.41127\\-188.0389\\155\\52.45815\\-188.9704\\155\\50.50502\\-189.5811\\155\\48.5519\\-189.5919\\155"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002223"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "650"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.7819\\157\\44.64565\\-187.4126\\157\\42.69252\\-186.7559\\157\\41.93791\\-185.9896\\157\\40.26288\\-182.0834\\157\\39.61332\\-180.1303\\157\\38.78627\\-178.1587\\157\\36.83315\\-176.4682\\157\\35.65822\\-178.1771\\157\\34.88002\\-178.9719\\157\\32.9269\\-180.342\\157\\32.65169\\-180.1303\\157\\32.02505\\-178.1771\\157\\34.05252\\-176.224\\157\\34.88002\\-174.8448\\157\\36.97266\\-172.3178\\157\\38.40195\\-170.3646\\157\\39.98687\\-166.4584\\157\\40.7394\\-165.7315\\157\\42.69252\\-164.8947\\157\\44.64565\\-163.6221\\157\\46.59877\\-163.4363\\157\\52.45815\\-163.4403\\157\\54.41127\\-163.6826\\157\\56.3644\\-164.3437\\157\\58.31752\\-165.5295\\157\\60.27065\\-167.3427\\157\\62.92424\\-170.3646\\157\\63.43852\\-172.3178\\157\\63.69728\\-174.2709\\157\\65.08166\\-176.224\\157\\65.69267\\-178.1771\\157\\66.98328\\-180.1303\\157\\66.13003\\-181.0011\\157\\64.1769\\-180.0073\\157\\62.22377\\-181.5219\\157\\61.80783\\-182.0834\\157\\61.18903\\-184.0365\\157\\58.31752\\-186.9195\\157\\56.3644\\-187.6498\\157\\54.41127\\-187.6953\\157\\52.45815\\-188.6593\\157\\50.50502\\-189.3003\\157\\48.5519\\-189.3154\\157"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002222"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "651"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.0529\\159\\44.64565\\-187.1091\\159\\42.69252\\-185.3403\\159\\41.58095\\-184.0365\\159\\40.53996\\-182.0834\\159\\39.8247\\-180.1303\\159\\39.21165\\-178.1771\\159\\38.78627\\-177.6558\\159\\36.83315\\-177.0871\\159\\34.88002\\-178.9657\\159\\32.9269\\-180.342\\159\\32.65169\\-180.1303\\159\\32.78871\\-178.1771\\159\\34.5699\\-176.224\\159\\35.71483\\-174.2709\\159\\37.68164\\-172.3178\\159\\38.80898\\-170.3646\\159\\39.69999\\-168.4115\\159\\40.7394\\-167.2642\\159\\42.69252\\-165.5719\\159\\44.64565\\-164.789\\159\\46.59877\\-164.1692\\159\\50.50502\\-164.0433\\159\\52.45815\\-164.1085\\159\\54.41127\\-164.3183\\159\\56.3644\\-164.6923\\159\\58.31752\\-165.6577\\159\\61.07677\\-168.4115\\159\\63.17709\\-172.3178\\159\\63.69728\\-174.2709\\159\\65.08166\\-176.224\\159\\66.16759\\-178.1771\\159\\67.14043\\-180.1303\\159\\66.13003\\-181.093\\159\\64.1769\\-180.3777\\159\\62.22377\\-181.6187\\159\\61.80783\\-182.0834\\159\\61.18903\\-184.0365\\159\\58.31752\\-186.9195\\159\\56.3644\\-187.6498\\159\\54.41127\\-187.6953\\159\\52.45815\\-187.9958\\159\\50.50502\\-188.7671\\159\\48.5519\\-188.8438\\159"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002221"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "652"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-188.0667\\161\\46.59877\\-187.6837\\161\\44.64565\\-187.0304\\161\\41.67872\\-184.0365\\161\\40.53996\\-182.0834\\161\\40.20314\\-180.1303\\161\\39.58572\\-178.1771\\161\\38.78627\\-177.3233\\161\\36.83315\\-177.1494\\161\\34.88002\\-178.9271\\161\\32.9269\\-180.342\\161\\32.65169\\-180.1303\\161\\33.37178\\-178.1771\\161\\34.92789\\-176.224\\161\\35.85659\\-174.2709\\161\\37.77519\\-172.3178\\161\\39.28312\\-170.3646\\161\\40.14669\\-168.4115\\161\\40.7394\\-167.8354\\161\\44.64565\\-165.4404\\161\\46.98571\\-164.5053\\161\\48.5519\\-164.017\\161\\50.50502\\-163.8035\\161\\52.45815\\-164.1183\\161\\54.41127\\-164.6273\\161\\56.3644\\-164.6923\\161\\58.31752\\-165.6577\\161\\61.07677\\-168.4115\\161\\61.7984\\-170.3646\\161\\63.09655\\-172.3178\\161\\63.69728\\-174.2709\\161\\65.08611\\-176.224\\161\\66.87432\\-178.1771\\161\\67.41467\\-180.1303\\161\\66.13003\\-181.1203\\161\\64.1769\\-180.3777\\161\\62.22377\\-181.6187\\161\\61.80783\\-182.0834\\161\\61.20208\\-184.0365\\161\\58.31752\\-186.9432\\161\\56.3644\\-187.6498\\161\\52.45815\\-187.862\\161\\50.50502\\-188.0925\\161"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002220"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "43"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "653"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-188.3957\\163\\48.5519\\-187.707\\163\\46.59877\\-187.6837\\163\\44.64565\\-187.0304\\163\\41.67872\\-184.0365\\163\\40.53996\\-182.0834\\163\\39.98197\\-180.1303\\163\\39.53562\\-178.1771\\163\\38.78627\\-177.3633\\163\\36.83315\\-177.1494\\163\\34.88002\\-178.9271\\163\\32.9269\\-180.342\\163\\32.65169\\-180.1303\\163\\33.37178\\-178.1771\\163\\34.88002\\-176.8844\\163\\35.39362\\-176.224\\163\\36.0736\\-174.2709\\163\\39.64198\\-170.3646\\163\\41.33076\\-168.4115\\163\\44.64565\\-165.5443\\163\\46.84004\\-164.5053\\163\\48.5519\\-163.7849\\163\\50.50502\\-163.6029\\163\\52.45815\\-163.8767\\163\\54.41127\\-164.6273\\163\\56.3644\\-164.6923\\163\\58.31752\\-165.6577\\163\\61.07677\\-168.4115\\163\\61.7984\\-170.3646\\163\\63.09655\\-172.3178\\163\\63.69728\\-174.2709\\163\\65.08611\\-176.224\\163\\67.01913\\-178.1771\\163\\67.53146\\-180.1303\\163\\66.13003\\-181.1203\\163\\64.1769\\-180.4558\\163\\62.22377\\-181.7225\\163\\61.89825\\-182.0834\\163\\61.2851\\-184.0365\\163\\60.27065\\-185.2818\\163\\58.31752\\-187.1117\\163\\54.41127\\-188.2357\\163\\52.45815\\-188.7231\\163"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002219"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "44"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "654"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-188.8941\\165\\48.5519\\-187.8073\\165\\46.59877\\-187.6837\\165\\44.64565\\-187.0304\\165\\41.67872\\-184.0365\\165\\40.53996\\-182.0834\\165\\39.03376\\-178.1771\\165\\38.78627\\-177.8949\\165\\36.83315\\-177.0337\\165\\34.88002\\-178.8787\\165\\32.9269\\-180.342\\165\\32.65169\\-180.1303\\165\\33.4093\\-178.1771\\165\\34.88002\\-177.3467\\165\\35.86828\\-176.224\\165\\37.13711\\-174.2709\\165\\37.92709\\-172.3178\\165\\41.45097\\-168.4115\\165\\42.69252\\-167.1573\\165\\44.64565\\-165.5443\\165\\46.59877\\-164.6539\\165\\48.5519\\-164.2695\\165\\50.50502\\-164.0989\\165\\52.45815\\-164.3183\\165\\54.41127\\-164.6407\\165\\56.3644\\-164.7982\\165\\58.31752\\-165.6818\\165\\61.07677\\-168.4115\\165\\61.88768\\-170.3646\\165\\63.13058\\-172.3178\\165\\63.69728\\-174.2709\\165\\65.08611\\-176.224\\165\\67.01913\\-178.1771\\165\\67.53146\\-180.1303\\165\\66.13003\\-181.1483\\165\\64.1769\\-180.7588\\165\\62.6008\\-182.0834\\165\\61.64326\\-184.0365\\165\\60.91993\\-185.9896\\165\\60.27065\\-186.657\\165\\58.31752\\-187.478\\165\\56.3644\\-187.7812\\165\\54.41127\\-188.76\\165\\52.45815\\-189.2979\\165"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002218"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "34"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "655"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-188.479\\167\\46.59877\\-187.6837\\167\\44.64565\\-187.0487\\167\\41.6661\\-184.0365\\167\\40.53996\\-182.0834\\167\\39.70565\\-180.1303\\167\\38.78627\\-178.2228\\167\\36.47121\\-176.224\\167\\37.64858\\-174.2709\\167\\38.41693\\-172.3178\\167\\39.74862\\-170.3646\\167\\42.69252\\-167.3939\\167\\44.64565\\-165.583\\167\\46.59877\\-164.8823\\167\\50.50502\\-164.5718\\167\\54.41127\\-164.6539\\167\\58.31752\\-165.8441\\167\\61.07677\\-168.4115\\167\\62.63271\\-170.3646\\167\\63.27104\\-172.3178\\167\\63.69728\\-174.2709\\167\\65.08611\\-176.224\\167\\67.01913\\-178.1771\\167\\67.54762\\-180.1303\\167\\66.13003\\-181.3717\\167\\64.1769\\-180.9938\\167\\63.10223\\-182.0834\\167\\61.81738\\-184.0365\\167\\61.17777\\-185.9896\\167\\60.27065\\-186.9259\\167\\56.3644\\-188.3198\\167\\54.41127\\-189.0805\\167\\52.45815\\-189.6029\\167\\50.50502\\-189.166\\167"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002217"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "656"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-188.8896\\169\\46.59877\\-187.6837\\169\\44.64565\\-187.1897\\169\\42.69252\\-185.5616\\169\\41.5271\\-184.0365\\169\\40.5277\\-182.0834\\169\\39.70097\\-180.1303\\169\\38.78627\\-178.2585\\169\\37.57112\\-176.224\\169\\37.75653\\-174.2709\\169\\39.77679\\-170.3646\\169\\42.69252\\-167.4791\\169\\44.64565\\-165.7046\\169\\48.5519\\-165.2303\\169\\50.50502\\-164.741\\169\\52.45815\\-164.6407\\169\\54.41127\\-164.7982\\169\\58.31752\\-166.3363\\169\\60.27065\\-167.6054\\169\\63.01571\\-170.3646\\169\\63.54501\\-172.3178\\169\\63.69728\\-174.2709\\169\\65.08611\\-176.224\\169\\67.01913\\-178.1771\\169\\67.56357\\-180.1303\\169\\66.62582\\-182.0834\\169\\66.13003\\-182.3221\\169\\64.1769\\-181.0496\\169\\63.20448\\-182.0834\\169\\61.95324\\-184.0365\\169\\61.19153\\-185.9896\\169\\60.27065\\-186.944\\169\\58.31752\\-187.6498\\169\\56.3644\\-188.7574\\169\\54.41127\\-189.4402\\169\\52.45815\\-189.6368\\169\\50.50502\\-189.4895\\169"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002216"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "657"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-188.9788\\171\\46.59877\\-187.6953\\171\\44.64565\\-187.5364\\171\\42.69252\\-186.8429\\171\\41.85616\\-185.9896\\171\\40.83414\\-184.0365\\171\\40.5277\\-182.0834\\171\\38.86704\\-178.1771\\171\\37.71694\\-176.224\\171\\37.7662\\-174.2709\\171\\39.36358\\-172.3178\\171\\39.86779\\-170.3646\\171\\42.69252\\-167.5145\\171\\44.64565\\-166.3363\\171\\46.59877\\-166.0424\\171\\50.50502\\-165.158\\171\\52.45815\\-164.6407\\171\\54.41127\\-165.2583\\171\\56.3644\\-165.7594\\171\\58.17618\\-166.4584\\171\\60.27065\\-167.6054\\171\\63.08182\\-170.3646\\171\\63.68005\\-172.3178\\171\\63.78996\\-174.2709\\171\\65.1442\\-176.224\\171\\67.01913\\-178.1771\\171\\67.57281\\-180.1303\\171\\68.30695\\-182.0834\\171\\68.08315\\-182.3392\\171\\66.13003\\-182.5048\\171\\65.67429\\-182.0834\\171\\64.1769\\-181.1208\\171\\63.29416\\-182.0834\\171\\62.75391\\-184.0365\\171\\61.19559\\-185.9896\\171\\60.27065\\-186.944\\171\\58.31752\\-187.7433\\171\\56.3644\\-188.8905\\171\\54.41127\\-189.5919\\171\\50.50502\\-189.6368\\171"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002215"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "658"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-188.9841\\173\\46.59877\\-187.6953\\173\\44.64565\\-187.6722\\173\\42.69252\\-187.0275\\173\\41.68624\\-185.9896\\173\\40.65863\\-184.0365\\173\\40.5277\\-182.0834\\173\\39.8236\\-180.1303\\173\\39.40056\\-178.1771\\173\\37.7267\\-176.224\\173\\37.78027\\-174.2709\\173\\39.62925\\-172.3178\\173\\40.4225\\-170.3646\\173\\41.96815\\-168.4115\\173\\42.69252\\-167.7319\\173\\46.58276\\-166.4584\\173\\48.5519\\-165.7504\\173\\50.50502\\-165.2583\\173\\52.45815\\-164.6539\\173\\54.41127\\-165.5138\\173\\56.3644\\-166.2109\\173\\58.31752\\-166.5531\\173\\60.27065\\-167.5764\\173\\63.11198\\-170.3646\\173\\63.7705\\-172.3178\\173\\64.67099\\-174.2709\\173\\65.3223\\-176.224\\173\\67.07855\\-178.1771\\173\\67.57891\\-180.1303\\173\\68.86916\\-182.0834\\173\\68.08315\\-182.9989\\173\\66.13003\\-181.6697\\173\\64.1769\\-181.4184\\173\\63.58456\\-182.0834\\173\\63.14916\\-184.0365\\173\\60.27065\\-186.944\\173\\58.31752\\-188.4136\\173\\56.3644\\-189.1021\\173\\54.41127\\-189.6254\\173\\50.50502\\-189.6484\\173"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002214"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "39"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "659"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-189.0085\\175\\46.59877\\-187.7812\\175\\44.64565\\-187.6837\\175\\42.69252\\-186.9754\\175\\41.78814\\-185.9896\\175\\41.43483\\-184.0365\\175\\40.5277\\-182.0834\\175\\40.34018\\-180.1303\\175\\39.64363\\-178.1771\\175\\37.73119\\-176.224\\175\\37.79477\\-174.2709\\175\\39.73959\\-172.3178\\175\\40.7394\\-171.0971\\175\\42.69252\\-168.9447\\175\\44.64565\\-167.4166\\175\\48.5519\\-165.5981\\175\\50.50502\\-164.7982\\175\\52.45815\\-164.6539\\175\\54.41127\\-165.4008\\175\\56.3644\\-165.8735\\175\\58.29977\\-166.4584\\175\\60.27065\\-167.3449\\175\\62.22377\\-168.8449\\175\\64.61426\\-172.3178\\175\\65.25068\\-174.2709\\175\\66.39088\\-176.224\\175\\67.27543\\-178.1771\\175\\67.57224\\-180.1303\\175\\68.90835\\-182.0834\\175\\68.08315\\-182.9755\\175\\66.13003\\-181.1823\\175\\64.1769\\-181.5207\\175\\63.68005\\-182.0834\\175\\63.20858\\-184.0365\\175\\60.27065\\-186.944\\175\\58.31752\\-188.7973\\175\\56.3644\\-189.4799\\175\\54.41127\\-189.6368\\175\\50.50502\\-189.6484\\175"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002213"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "660"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.6605\\177\\45.05518\\-187.9428\\177\\42.69252\\-186.5505\\177\\42.20424\\-185.9896\\177\\41.65728\\-184.0365\\177\\40.53996\\-182.0834\\177\\40.5156\\-180.1303\\177\\39.70833\\-178.1771\\177\\37.73573\\-176.224\\177\\38.02807\\-174.2709\\177\\38.78627\\-173.6075\\177\\41.69271\\-170.3646\\177\\44.64565\\-167.4954\\177\\48.5519\\-165.5295\\177\\50.50502\\-164.6407\\177\\52.45815\\-164.6407\\177\\54.41127\\-164.8329\\177\\56.3644\\-165.4645\\177\\58.31752\\-165.8586\\177\\59.82919\\-166.4584\\177\\62.22377\\-167.6556\\177\\63.01386\\-168.4115\\177\\63.62278\\-170.3646\\177\\65.01605\\-172.3178\\177\\65.55272\\-174.2709\\177\\66.94047\\-176.224\\177\\67.50584\\-178.1771\\177\\67.5499\\-180.1303\\177\\68.77602\\-182.0834\\177\\68.08315\\-182.8172\\177\\67.36208\\-182.0834\\177\\66.13003\\-181.1157\\177\\64.1769\\-181.53\\177\\63.68862\\-182.0834\\177\\63.21265\\-184.0365\\177\\58.31752\\-188.8622\\177\\56.3644\\-189.5919\\177\\54.41127\\-189.6484\\177\\50.50502\\-189.6484\\177\\48.5519\\-189.2229\\177"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002212"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "661"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.9624\\179\\42.69252\\-186.4387\\179\\42.30558\\-185.9896\\179\\41.67872\\-184.0365\\179\\40.53996\\-182.0834\\179\\40.5277\\-180.1303\\179\\39.82202\\-178.1771\\179\\38.78627\\-176.9868\\179\\37.88966\\-176.224\\179\\38.78627\\-174.4202\\179\\40.7394\\-171.9647\\179\\41.73465\\-170.3646\\179\\44.64565\\-167.4954\\179\\48.5519\\-165.5249\\179\\50.50502\\-164.6273\\179\\54.41127\\-164.6407\\179\\56.3644\\-164.7871\\179\\58.31752\\-165.4433\\179\\60.27065\\-165.8586\\179\\63.07357\\-168.4115\\179\\64.74974\\-170.3646\\179\\65.31025\\-172.3178\\179\\65.63318\\-174.2709\\179\\66.62119\\-176.224\\179\\67.29369\\-178.1771\\179\\67.16239\\-180.1303\\179\\66.13003\\-180.9552\\179\\64.1769\\-181.53\\179\\63.68862\\-182.0834\\179\\63.21265\\-184.0365\\179\\58.31752\\-188.8622\\179\\56.3644\\-189.5919\\179\\54.41127\\-189.6484\\179\\50.50502\\-189.6484\\179\\48.5519\\-189.5811\\179"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002211"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "33"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "662"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.9873\\181\\44.64565\\-187.1994\\181\\42.69252\\-185.2388\\181\\41.67872\\-184.0365\\181\\40.53996\\-182.0834\\181\\40.5277\\-180.1303\\181\\40.40331\\-178.1771\\181\\37.69566\\-176.224\\181\\38.99721\\-174.2709\\181\\40.7394\\-172.0696\\181\\41.73465\\-170.3646\\181\\44.64565\\-167.4954\\181\\46.59877\\-165.7566\\181\\48.5519\\-165.2664\\181\\50.50502\\-164.6273\\181\\56.3644\\-164.6407\\181\\58.31752\\-164.8201\\181\\60.27065\\-165.6528\\181\\62.22377\\-167.2661\\181\\65.02029\\-170.3646\\181\\65.5759\\-172.3178\\181\\65.72363\\-176.224\\181\\67.06921\\-178.1771\\181\\67.23077\\-180.1303\\181\\68.13698\\-182.0834\\181\\66.13003\\-180.9766\\181\\64.1769\\-181.53\\181\\63.68862\\-182.0834\\181\\63.21265\\-184.0365\\181\\58.31752\\-188.8622\\181\\56.3644\\-189.5919\\181\\54.41127\\-189.6484\\181\\48.5519\\-189.6368\\181"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002210"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "40"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "663"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.6025\\183\\44.64565\\-187.0445\\183\\41.67872\\-184.0365\\183\\40.53996\\-182.0834\\183\\40.5277\\-180.1303\\183\\39.54173\\-178.1771\\183\\36.95704\\-176.224\\183\\38.99721\\-174.2709\\183\\40.7394\\-172.0676\\183\\41.73005\\-170.3646\\183\\46.59877\\-165.5795\\183\\48.5519\\-164.741\\183\\50.50502\\-164.6273\\183\\52.45815\\-163.7728\\183\\54.41127\\-163.5816\\183\\56.3644\\-163.8559\\183\\58.31752\\-164.6539\\183\\60.27065\\-165.3365\\183\\62.22377\\-165.8887\\183\\62.81649\\-166.4584\\183\\63.61497\\-168.4115\\183\\65.0455\\-170.3646\\183\\65.62471\\-172.3178\\183\\65.64175\\-176.224\\183\\67.02962\\-178.1771\\183\\67.51877\\-180.1303\\183\\68.88767\\-182.0834\\183\\69.2713\\-184.0365\\183\\68.08315\\-185.1059\\183\\67.12839\\-184.0365\\183\\67.27444\\-182.0834\\183\\66.13003\\-181.0936\\183\\64.1769\\-181.53\\183\\63.68862\\-182.0834\\183\\63.21265\\-184.0365\\183\\58.31752\\-188.8622\\183\\56.3644\\-189.5919\\183\\54.41127\\-189.6484\\183\\50.50502\\-189.6484\\183\\48.5519\\-189.2264\\183"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002209"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "42"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "664"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-189.014\\185\\46.59877\\-187.8343\\185\\44.64565\\-187.0304\\185\\41.67872\\-184.0365\\185\\40.53996\\-182.0834\\185\\40.5277\\-180.1303\\185\\38.51837\\-178.1771\\185\\36.84078\\-176.224\\185\\38.99721\\-174.2709\\185\\40.5277\\-172.3178\\185\\42.3208\\-168.4115\\185\\42.69252\\-168.0445\\185\\44.64565\\-167.0754\\185\\46.59877\\-165.5192\\185\\48.5519\\-164.6407\\185\\50.50502\\-164.5574\\185\\52.45815\\-163.5745\\185\\54.41127\\-163.0741\\185\\58.31752\\-163.8491\\185\\60.27065\\-164.8201\\185\\62.22377\\-165.6423\\185\\63.07478\\-166.4584\\185\\64.74518\\-168.4115\\185\\65.34056\\-170.3646\\185\\65.63318\\-172.3178\\185\\65.64175\\-176.224\\185\\67.02962\\-178.1771\\185\\67.57891\\-180.1303\\185\\68.88353\\-182.0834\\185\\69.51334\\-184.0365\\185\\68.08315\\-185.6429\\185\\67.02248\\-184.0365\\185\\67.1804\\-182.0834\\185\\66.13003\\-181.2064\\185\\64.1769\\-181.6858\\185\\63.82008\\-182.0834\\185\\63.24261\\-184.0365\\185\\61.20381\\-185.9896\\185\\58.31752\\-188.8622\\185\\56.3644\\-189.5919\\185\\54.41127\\-189.6484\\185\\50.50502\\-189.6484\\185"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002208"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "35"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "665"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-188.9841\\187\\46.59877\\-187.6837\\187\\44.64565\\-187.0304\\187\\41.67872\\-184.0365\\187\\40.53996\\-182.0834\\187\\40.5277\\-180.1303\\187\\38.29012\\-178.1771\\187\\36.92789\\-176.224\\187\\39.07701\\-174.2709\\187\\40.5277\\-172.3178\\187\\40.73177\\-170.3646\\187\\41.80348\\-168.4115\\187\\44.64565\\-165.8091\\187\\48.53754\\-164.5053\\187\\50.50502\\-163.7249\\187\\54.41127\\-162.8227\\187\\56.3644\\-162.996\\187\\58.31752\\-163.6855\\187\\62.22377\\-165.627\\187\\64.99483\\-168.4115\\187\\65.54516\\-170.3646\\187\\65.63318\\-172.3178\\187\\65.64175\\-176.224\\187\\67.02962\\-178.1771\\187\\67.6123\\-180.1303\\187\\67.87144\\-182.0834\\187\\69.21365\\-184.0365\\187\\68.08315\\-185.6757\\187\\66.13003\\-185.2906\\187\\64.1769\\-184.6748\\187\\62.22377\\-185.0801\\187\\58.31752\\-188.8622\\187\\56.3644\\-189.5919\\187\\54.41127\\-189.6484\\187\\50.50502\\-189.6484\\187"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002207"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "666"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-189.0295\\189\\46.59877\\-187.8343\\189\\44.64565\\-187.0304\\189\\41.67872\\-184.0365\\189\\40.53996\\-182.0834\\189\\40.40288\\-180.1303\\189\\37.54788\\-178.1771\\189\\37.53844\\-176.224\\189\\39.51595\\-174.2709\\189\\40.5277\\-172.3178\\189\\40.53996\\-170.3646\\189\\41.74321\\-168.4115\\189\\44.64565\\-165.5888\\189\\46.59877\\-164.7758\\189\\48.5519\\-163.7494\\189\\52.45815\\-162.9489\\189\\54.41127\\-162.8227\\189\\56.3644\\-162.9987\\189\\58.31752\\-163.6907\\189\\62.22377\\-165.627\\189\\65.02587\\-168.4115\\189\\65.61634\\-170.3646\\189\\65.64175\\-176.224\\189\\66.96918\\-178.1771\\189\\67.53693\\-180.1303\\189\\67.60949\\-182.0834\\189\\68.40867\\-184.0365\\189\\68.08315\\-184.4516\\189\\66.13003\\-185.5978\\189\\64.1769\\-185.1851\\189\\62.4352\\-185.9896\\189\\60.27065\\-187.2188\\189\\58.31752\\-188.8721\\189\\56.3644\\-189.5919\\189\\54.41127\\-189.6484\\189\\50.50502\\-189.6484\\189"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002206"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "667"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.6803\\191\\44.64565\\-187.0304\\191\\41.67872\\-184.0365\\191\\40.53996\\-182.0834\\191\\39.50197\\-180.1303\\191\\37.12808\\-178.1771\\191\\37.76254\\-176.224\\191\\39.67188\\-174.2709\\191\\40.5156\\-172.3178\\191\\40.53996\\-170.3646\\191\\41.74321\\-168.4115\\191\\44.64565\\-165.549\\191\\48.5519\\-163.6892\\191\\50.50502\\-163.0688\\191\\52.45815\\-162.8227\\191\\54.41127\\-162.8561\\191\\56.3644\\-163.4799\\191\\58.31752\\-163.9356\\191\\62.22377\\-165.6689\\191\\64.94894\\-168.4115\\191\\65.54193\\-170.3646\\191\\65.63318\\-172.3178\\191\\65.63318\\-176.224\\191\\67.26247\\-180.1303\\191\\67.56757\\-182.0834\\191\\67.59119\\-184.0365\\191\\66.13003\\-185.1283\\191\\64.1769\\-184.8189\\191\\63.19555\\-185.9896\\191\\62.22377\\-186.8949\\191\\60.27065\\-187.546\\191\\58.31752\\-188.8771\\191\\56.3644\\-189.5919\\191\\54.41127\\-189.6484\\191\\50.50502\\-189.6484\\191\\48.5519\\-189.311\\191"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002205"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "38"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "668"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "46.59877\\-188.9528\\193\\42.69252\\-185.2227\\193\\41.61658\\-184.0365\\193\\40.37076\\-182.0834\\193\\37.59769\\-180.1303\\193\\37.61729\\-178.1771\\193\\38.13699\\-176.224\\193\\39.64135\\-174.2709\\193\\40.35997\\-172.3178\\193\\40.53996\\-170.3646\\193\\41.74321\\-168.4115\\193\\44.64565\\-165.549\\193\\46.90486\\-164.5053\\193\\48.5519\\-163.9055\\193\\52.45815\\-162.9707\\193\\54.41127\\-163.0079\\193\\56.3644\\-163.6831\\193\\60.27065\\-165.3951\\193\\62.22377\\-166.1654\\193\\64.21446\\-168.4115\\193\\65.2738\\-170.3646\\193\\65.63318\\-172.3178\\193\\65.63318\\-176.224\\193\\65.74309\\-178.1771\\193\\67.01652\\-180.1303\\193\\67.2901\\-182.0834\\193\\66.47246\\-184.0365\\193\\66.13003\\-184.2544\\193\\64.1769\\-183.6473\\193\\63.83038\\-184.0365\\193\\63.20894\\-185.9896\\193\\62.22377\\-186.9662\\193\\60.27065\\-187.8343\\193\\58.31752\\-188.9428\\193\\56.3644\\-189.6029\\193\\54.41127\\-189.6602\\193\\50.50502\\-189.6484\\193\\48.5519\\-189.5391\\193"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002204"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "669"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "52.45815\\-190.0501\\195\\48.5519\\-189.6368\\195\\46.59877\\-189.0482\\195\\44.64565\\-187.4898\\195\\42.69252\\-186.5756\\195\\42.10992\\-185.9896\\195\\41.19238\\-184.0365\\195\\39.74195\\-182.0834\\195\\37.66954\\-180.1303\\195\\38.04292\\-178.1771\\195\\38.56248\\-176.224\\195\\39.36358\\-174.2709\\195\\39.85867\\-172.3178\\195\\40.53996\\-170.3646\\195\\41.74321\\-168.4115\\195\\44.64565\\-165.549\\195\\46.59877\\-164.6539\\195\\48.5519\\-164.4677\\195\\50.50502\\-163.8982\\195\\52.45815\\-163.4297\\195\\54.41127\\-163.4841\\195\\56.3644\\-163.967\\195\\57.89225\\-164.5053\\195\\60.27065\\-165.6105\\195\\62.22377\\-167.2618\\195\\65.08095\\-170.3646\\195\\65.62471\\-172.3178\\195\\65.63318\\-178.1771\\195\\66.32946\\-180.1303\\195\\65.51115\\-182.0834\\195\\63.89507\\-184.0365\\195\\63.19609\\-185.9896\\195\\62.22377\\-186.9662\\195\\60.27065\\-188.5815\\195\\56.3644\\-189.8011\\195\\54.41127\\-190.0489\\195"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002203"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "670"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-190.6548\\197\\48.5519\\-189.8583\\197\\46.59877\\-189.334\\197\\44.64565\\-188.6403\\197\\42.69252\\-187.0058\\197\\41.69875\\-185.9896\\197\\39.57973\\-182.0834\\197\\38.09084\\-180.1303\\197\\38.56248\\-178.1771\\197\\38.83846\\-174.2709\\197\\39.68302\\-172.3178\\197\\40.35754\\-170.3646\\197\\41.74321\\-168.4115\\197\\44.64565\\-165.549\\197\\46.59877\\-164.6539\\197\\48.5519\\-164.6273\\197\\50.50502\\-164.4677\\197\\52.45815\\-163.5333\\197\\54.41127\\-163.5923\\197\\56.3644\\-164.2815\\197\\58.31752\\-164.6923\\197\\60.27065\\-165.6401\\197\\63.10777\\-168.4115\\197\\64.95087\\-170.3646\\197\\65.54516\\-172.3178\\197\\65.63318\\-174.2709\\197\\65.63318\\-178.1771\\197\\65.69534\\-180.1303\\197\\65.3684\\-182.0834\\197\\64.84344\\-184.0365\\197\\63.23032\\-185.9896\\197\\62.22377\\-187.0877\\197\\60.27065\\-188.91\\197\\58.31752\\-189.5089\\197\\56.3644\\-190.5089\\197\\54.41127\\-191.0488\\197\\52.45815\\-191.065\\197"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002202"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "36"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "671"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "48.5519\\-190.4981\\199\\46.59877\\-189.4705\\199\\44.64565\\-188.861\\199\\41.66076\\-185.9896\\199\\40.50368\\-184.0365\\199\\39.68146\\-182.0834\\199\\38.62468\\-180.1303\\199\\38.69153\\-178.1771\\199\\38.69153\\-174.2709\\199\\39.33249\\-172.3178\\199\\39.85957\\-170.3646\\199\\41.74321\\-168.4115\\199\\44.64565\\-165.597\\199\\46.59877\\-164.8329\\199\\48.5519\\-164.6273\\199\\50.50502\\-164.6273\\199\\52.45815\\-163.6144\\199\\54.41127\\-163.4428\\199\\56.3644\\-163.8292\\199\\57.992\\-164.5053\\199\\60.27065\\-165.6453\\199\\63.00404\\-168.4115\\199\\64.21446\\-170.3646\\199\\65.20064\\-172.3178\\199\\65.48783\\-174.2709\\199\\65.63318\\-178.1771\\199\\65.48069\\-182.0834\\199\\65.15782\\-184.0365\\199\\63.39841\\-185.9896\\199\\62.22377\\-187.7558\\199\\60.27065\\-189.172\\199\\58.31752\\-189.6254\\199\\56.3644\\-190.6761\\199\\54.41127\\-191.2485\\199\\52.45815\\-191.3033\\199\\50.50502\\-191.1115\\199"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002201"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "37"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "672"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "50.50502\\-190.3872\\201\\48.70726\\-189.8959\\201\\46.59877\\-188.8312\\201\\44.64565\\-187.9505\\201\\42.69252\\-186.6921\\201\\42.00614\\-185.9896\\201\\41.1463\\-184.0365\\201\\40.7394\\-183.6093\\201\\40.03379\\-182.0834\\201\\39.332\\-180.1303\\201\\39.23771\\-176.224\\201\\39.13399\\-174.2709\\201\\39.1633\\-172.3178\\201\\39.9486\\-170.3646\\201\\42.69252\\-167.777\\201\\44.64565\\-166.2227\\201\\48.5519\\-165.1889\\201\\50.50502\\-165.1898\\201\\52.45815\\-164.3058\\201\\54.41127\\-163.9916\\201\\56.3644\\-164.4245\\201\\60.27065\\-166.009\\201\\60.71999\\-166.4584\\201\\62.22377\\-168.4833\\201\\63.01346\\-170.3646\\201\\64.1769\\-172.3358\\201\\64.77061\\-174.2709\\201\\65.24287\\-178.1771\\201\\65.01001\\-180.1303\\201\\65.3684\\-184.0365\\201\\64.1769\\-185.6328\\201\\62.22377\\-187.0156\\201\\60.27065\\-188.7301\\201\\58.31752\\-189.1453\\201\\56.3644\\-189.7105\\201\\54.41127\\-190.3962\\201\\52.45815\\-190.4597\\201"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002200"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "10"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "673"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "40.7394\\-174.3062\\203\\40.02677\\-172.3178\\203\\40.7394\\-171.1511\\203\\42.69252\\-169.7956\\203\\44.64565\\-169.9335\\203\\45.13897\\-170.3646\\203\\46.46356\\-172.3178\\203\\46.32986\\-174.2709\\203\\44.64565\\-175.534\\203\\42.69252\\-175.4795\\203"
+                     }
+                  },
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002200"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "CLOSED_PLANAR"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "8"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "674"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "62.22377\\-185.221\\203\\61.20846\\-184.0365\\203\\61.70231\\-182.0834\\203\\62.22377\\-181.5906\\203\\64.1769\\-181.8031\\203\\64.4192\\-182.0834\\203\\65.25975\\-184.0365\\203\\64.1769\\-185.397\\203"
+                     }
+                  }
+               ]
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "7"
+            }
+         },
+         {
+            "3006,002a" : {
+               "Name" : "ROIDisplayColor",
+               "Type" : "String",
+               "Value" : "255\\255\\0"
+            },
+            "3006,0040" : {
+               "Name" : "ContourSequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "POINT"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "1"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "0"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "-0.4882813\\-206.6055\\1"
+                     }
+                  }
+               ]
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "8"
+            }
+         },
+         {
+            "3006,002a" : {
+               "Name" : "ROIDisplayColor",
+               "Type" : "String",
+               "Value" : "255\\0\\0"
+            },
+            "3006,0040" : {
+               "Name" : "ContourSequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "3006,0016" : {
+                        "Name" : "ContourImageSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "0008,1150" : {
+                                 "Name" : "ReferencedSOPClassUID",
+                                 "Type" : "String",
+                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
+                              },
+                              "0008,1155" : {
+                                 "Name" : "ReferencedSOPInstanceUID",
+                                 "Type" : "String",
+                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
+                              }
+                           }
+                        ]
+                     },
+                     "3006,0042" : {
+                        "Name" : "ContourGeometricType",
+                        "Type" : "String",
+                        "Value" : "POINT"
+                     },
+                     "3006,0046" : {
+                        "Name" : "NumberOfContourPoints",
+                        "Type" : "String",
+                        "Value" : "1"
+                     },
+                     "3006,0048" : {
+                        "Name" : "ContourNumber",
+                        "Type" : "String",
+                        "Value" : "0"
+                     },
+                     "3006,0050" : {
+                        "Name" : "ContourData",
+                        "Type" : "String",
+                        "Value" : "0.6\\-180.9\\-33"
+                     }
+                  }
+               ]
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "9"
+            }
+         }
+      ]
+   },
+   "3006,0080" : {
+      "Name" : "RTROIObservationsSequence",
+      "Type" : "Sequence",
+      "Value" : [
+         {
+            "3006,0082" : {
+               "Name" : "ObservationNumber",
+               "Type" : "String",
+               "Value" : "1"
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "1"
+            },
+            "3006,0085" : {
+               "Name" : "ROIObservationLabel",
+               "Type" : "String",
+               "Value" : "External"
+            },
+            "3006,00a4" : {
+               "Name" : "RTROIInterpretedType",
+               "Type" : "String",
+               "Value" : "EXTERNAL"
+            }
+         },
+         {
+            "3006,0082" : {
+               "Name" : "ObservationNumber",
+               "Type" : "String",
+               "Value" : "2"
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "2"
+            },
+            "3006,0085" : {
+               "Name" : "ROIObservationLabel",
+               "Type" : "String",
+               "Value" : "CTV"
+            },
+            "3006,00a4" : {
+               "Name" : "RTROIInterpretedType",
+               "Type" : "String",
+               "Value" : "CTV"
+            }
+         },
+         {
+            "3006,0082" : {
+               "Name" : "ObservationNumber",
+               "Type" : "String",
+               "Value" : "3"
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "3"
+            },
+            "3006,0085" : {
+               "Name" : "ROIObservationLabel",
+               "Type" : "String",
+               "Value" : "PTV"
+            },
+            "3006,00a4" : {
+               "Name" : "RTROIInterpretedType",
+               "Type" : "String",
+               "Value" : "PTV"
+            }
+         },
+         {
+            "3006,0082" : {
+               "Name" : "ObservationNumber",
+               "Type" : "String",
+               "Value" : "4"
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "4"
+            },
+            "3006,0085" : {
+               "Name" : "ROIObservationLabel",
+               "Type" : "String",
+               "Value" : "PTV Eval"
+            },
+            "3006,00a4" : {
+               "Name" : "RTROIInterpretedType",
+               "Type" : "String",
+               "Value" : "PTV"
+            }
+         },
+         {
+            "3006,0082" : {
+               "Name" : "ObservationNumber",
+               "Type" : "String",
+               "Value" : "5"
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "5"
+            },
+            "3006,0085" : {
+               "Name" : "ROIObservationLabel",
+               "Type" : "String",
+               "Value" : "Bladder"
+            },
+            "3006,00a4" : {
+               "Name" : "RTROIInterpretedType",
+               "Type" : "String",
+               "Value" : "ORGAN"
+            }
+         },
+         {
+            "3006,0082" : {
+               "Name" : "ObservationNumber",
+               "Type" : "String",
+               "Value" : "6"
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "6"
+            },
+            "3006,0085" : {
+               "Name" : "ROIObservationLabel",
+               "Type" : "String",
+               "Value" : "Rectum"
+            },
+            "3006,00a4" : {
+               "Name" : "RTROIInterpretedType",
+               "Type" : "String",
+               "Value" : "ORGAN"
+            }
+         },
+         {
+            "3006,0082" : {
+               "Name" : "ObservationNumber",
+               "Type" : "String",
+               "Value" : "7"
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "7"
+            },
+            "3006,0085" : {
+               "Name" : "ROIObservationLabel",
+               "Type" : "String",
+               "Value" : "Air Override"
+            },
+            "3006,00a4" : {
+               "Name" : "RTROIInterpretedType",
+               "Type" : "String",
+               "Value" : "NONE"
+            },
+            "3006,00b0" : {
+               "Name" : "ROIPhysicalPropertiesSequence",
+               "Type" : "Sequence",
+               "Value" : [
+                  {
+                     "3006,00b2" : {
+                        "Name" : "ROIPhysicalProperty",
+                        "Type" : "String",
+                        "Value" : "REL_MASS_DENSITY"
+                     },
+                     "3006,00b4" : {
+                        "Name" : "ROIPhysicalPropertyValue",
+                        "Type" : "String",
+                        "Value" : "1"
+                     }
+                  },
+                  {
+                     "3006,00b2" : {
+                        "Name" : "ROIPhysicalProperty",
+                        "Type" : "String",
+                        "Value" : "REL_ELEC_DENSITY"
+                     },
+                     "3006,00b4" : {
+                        "Name" : "ROIPhysicalPropertyValue",
+                        "Type" : "String",
+                        "Value" : "1.000148"
+                     }
+                  },
+                  {
+                     "3006,00b2" : {
+                        "Name" : "ROIPhysicalProperty",
+                        "Type" : "String",
+                        "Value" : "EFFECTIVE_Z"
+                     },
+                     "3006,00b4" : {
+                        "Name" : "ROIPhysicalPropertyValue",
+                        "Type" : "String",
+                        "Value" : "6.600049"
+                     }
+                  },
+                  {
+                     "3006,00b2" : {
+                        "Name" : "ROIPhysicalProperty",
+                        "Type" : "String",
+                        "Value" : "EFF_Z_PER_A"
+                     },
+                     "3006,00b4" : {
+                        "Name" : "ROIPhysicalPropertyValue",
+                        "Type" : "String",
+                        "Value" : "0.5550822"
+                     }
+                  },
+                  {
+                     "3006,00b2" : {
+                        "Name" : "ROIPhysicalProperty",
+                        "Type" : "String",
+                        "Value" : "MEAN_EXCI_ENERGY"
+                     },
+                     "3006,00b4" : {
+                        "Name" : "ROIPhysicalPropertyValue",
+                        "Type" : "String",
+                        "Value" : "75"
+                     }
+                  },
+                  {
+                     "3006,00b2" : {
+                        "Name" : "ROIPhysicalProperty",
+                        "Type" : "String",
+                        "Value" : "ELEM_FRACTION"
+                     },
+                     "3006,00b4" : {
+                        "Name" : "ROIPhysicalPropertyValue",
+                        "Type" : "String",
+                        "Value" : "0"
+                     },
+                     "3006,00b6" : {
+                        "Name" : "ROIElementalCompositionSequence",
+                        "Type" : "Sequence",
+                        "Value" : [
+                           {
+                              "3006,00b7" : {
+                                 "Name" : "ROIElementalCompositionAtomicNumber",
+                                 "Type" : "String",
+                                 "Value" : "1"
+                              },
+                              "3006,00b8" : {
+                                 "Name" : "ROIElementalCompositionAtomicMassFraction",
+                                 "Type" : "String",
+                                 "Value" : "0.111893997"
+                              }
+                           },
+                           {
+                              "3006,00b7" : {
+                                 "Name" : "ROIElementalCompositionAtomicNumber",
+                                 "Type" : "String",
+                                 "Value" : "8"
+                              },
+                              "3006,00b8" : {
+                                 "Name" : "ROIElementalCompositionAtomicMassFraction",
+                                 "Type" : "String",
+                                 "Value" : "0.888105989"
+                              }
+                           }
+                        ]
+                     }
+                  }
+               ]
+            },
+            "300a,00e1" : {
+               "Name" : "MaterialID",
+               "Type" : "String",
+               "Value" : "Water"
+            }
+         },
+         {
+            "3006,0082" : {
+               "Name" : "ObservationNumber",
+               "Type" : "String",
+               "Value" : "8"
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "8"
+            },
+            "3006,0085" : {
+               "Name" : "ROIObservationLabel",
+               "Type" : "String",
+               "Value" : "Localization Poi"
+            },
+            "3006,00a4" : {
+               "Name" : "RTROIInterpretedType",
+               "Type" : "String",
+               "Value" : "MARKER"
+            }
+         },
+         {
+            "3006,0082" : {
+               "Name" : "ObservationNumber",
+               "Type" : "String",
+               "Value" : "9"
+            },
+            "3006,0084" : {
+               "Name" : "ReferencedROINumber",
+               "Type" : "String",
+               "Value" : "9"
+            },
+            "3006,0085" : {
+               "Name" : "ROIObservationLabel",
+               "Type" : "String",
+               "Value" : "Isocenter"
+            },
+            "3006,00a4" : {
+               "Name" : "RTROIInterpretedType",
+               "Type" : "String",
+               "Value" : "ISOCENTER"
+            }
+         }
+      ]
+   },
+   "300e,0002" : {
+      "Name" : "ApprovalStatus",
+      "Type" : "String",
+      "Value" : "APPROVED"
+   },
+   "300e,0004" : {
+      "Name" : "ReviewDate",
+      "Type" : "String",
+      "Value" : "20181204"
+   },
+   "300e,0005" : {
+      "Name" : "ReviewTime",
+      "Type" : "String",
+      "Value" : "115323"
+   },
+   "300e,0008" : {
+      "Name" : "ReviewerName",
+      "Type" : "String",
+      "Value" : "DSNET_marc.blakey"
+   }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/GenericToolboxTests.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,4251 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "../Sources/Toolbox/GenericToolbox.h"
+
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+#include <gtest/gtest.h>
+#include <stdint.h>
+#include <cmath>
+
+TEST(GenericToolbox, TestLegitDoubleString)
+{
+  using OrthancStone::GenericToolbox::LegitDoubleString;
+
+  EXPECT_TRUE(LegitDoubleString("12.34"));
+  EXPECT_TRUE(LegitDoubleString("1234"));
+  EXPECT_TRUE(LegitDoubleString(".1234"));
+  EXPECT_TRUE(LegitDoubleString("1234."));
+  EXPECT_TRUE(LegitDoubleString("0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011234"));
+  EXPECT_TRUE(LegitDoubleString("000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000011234"));
+  EXPECT_TRUE(LegitDoubleString("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112.34"));
+  EXPECT_TRUE(LegitDoubleString("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011234."));
+  EXPECT_TRUE(LegitDoubleString("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001123456"));
+  EXPECT_TRUE(LegitDoubleString("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001123456000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011234565664565623456"));
+  EXPECT_TRUE(LegitDoubleString("1234."));
+  EXPECT_TRUE(LegitDoubleString(".0123"));
+  EXPECT_TRUE(LegitDoubleString(".123"));
+  EXPECT_TRUE(LegitDoubleString(".5"));
+  EXPECT_TRUE(LegitDoubleString("."));
+  EXPECT_TRUE(LegitDoubleString(""));
+  EXPECT_TRUE(LegitDoubleString("0."));
+  EXPECT_TRUE(LegitDoubleString(".0"));
+
+  EXPECT_TRUE(LegitDoubleString("1e-15"));
+  EXPECT_TRUE(LegitDoubleString("1E-15"));
+  EXPECT_TRUE(LegitDoubleString("0.31E-15"));
+  EXPECT_TRUE(LegitDoubleString(".0031E-15"));
+  EXPECT_TRUE(LegitDoubleString("1e-15"));
+  EXPECT_TRUE(LegitDoubleString("1E015"));
+  EXPECT_TRUE(LegitDoubleString("0.31E015"));
+
+
+  EXPECT_FALSE(LegitDoubleString(".5f"));
+  EXPECT_FALSE(LegitDoubleString("\n.0031E015"));
+  EXPECT_FALSE(LegitDoubleString(".05f"));
+  EXPECT_FALSE(LegitDoubleString(" 1 2 "));
+  EXPECT_FALSE(LegitDoubleString(" 0.12\t"));
+  EXPECT_FALSE(LegitDoubleString(" 0.12"));
+  EXPECT_FALSE(LegitDoubleString("0.12\t"));
+  EXPECT_FALSE(LegitDoubleString("12\t"));
+  EXPECT_FALSE(LegitDoubleString(".01 23"));
+  EXPECT_FALSE(LegitDoubleString(". 123"));
+  EXPECT_FALSE(LegitDoubleString(".5 "));
+  EXPECT_FALSE(LegitDoubleString(" ."));
+  EXPECT_FALSE(LegitDoubleString("\n0."));
+}
+
+TEST(GenericToolbox, TestLegitIntegerString)
+{
+  using OrthancStone::GenericToolbox::LegitIntegerString;
+
+  EXPECT_TRUE(LegitIntegerString("1234"));
+  EXPECT_TRUE(LegitIntegerString("234"));
+  EXPECT_TRUE(LegitIntegerString("01234"));
+  EXPECT_TRUE(LegitIntegerString("12340"));
+  EXPECT_TRUE(LegitIntegerString("0000000000000011234"));
+  EXPECT_TRUE(LegitIntegerString("00000000000000011234"));
+  EXPECT_TRUE(LegitIntegerString("00000000000011234"));
+  EXPECT_TRUE(LegitIntegerString("112340000000000010"));
+  EXPECT_TRUE(LegitIntegerString("0000000000001123456"));
+  EXPECT_TRUE(LegitIntegerString("000000000000112345604565665623456"));
+  EXPECT_TRUE(LegitIntegerString(""));
+  EXPECT_TRUE(LegitIntegerString("0"));
+  EXPECT_TRUE(LegitIntegerString("00000"));
+
+  EXPECT_FALSE(LegitIntegerString(".5f"));
+  EXPECT_FALSE(LegitIntegerString("1e-15"));
+  EXPECT_FALSE(LegitIntegerString("1E-15"));
+  EXPECT_FALSE(LegitIntegerString("0.31E-15"));
+  EXPECT_FALSE(LegitIntegerString(".0031E-15"));
+  EXPECT_FALSE(LegitIntegerString("1e-15"));
+  EXPECT_FALSE(LegitIntegerString("1E015"));
+  EXPECT_FALSE(LegitIntegerString("0.31E015"));
+  EXPECT_FALSE(LegitIntegerString("\n.0031E015"));
+  EXPECT_FALSE(LegitIntegerString(".05f"));
+  EXPECT_FALSE(LegitIntegerString(" 1 2 "));
+  EXPECT_FALSE(LegitIntegerString(" 0.12\t"));
+  EXPECT_FALSE(LegitIntegerString(" 0.12"));
+  EXPECT_FALSE(LegitIntegerString("0.12\t"));
+  EXPECT_FALSE(LegitIntegerString("12\t"));
+  EXPECT_FALSE(LegitIntegerString(".01 23"));
+  EXPECT_FALSE(LegitIntegerString(". 123"));
+  EXPECT_FALSE(LegitIntegerString(".5 "));
+  EXPECT_FALSE(LegitIntegerString(" ."));
+  EXPECT_FALSE(LegitIntegerString("\n0."));
+}
+
+TEST(GenericToolbox, TestStringToDouble)
+{
+  using OrthancStone::GenericToolbox::StringToDouble;
+
+  const double TOLERANCE = 0.00000000000001;
+  double r = 0.0;
+  bool ok = StringToDouble(r, "0.0001");
+  EXPECT_TRUE(ok);
+  EXPECT_NEAR(0.0001, r, TOLERANCE);
+
+  {
+    bool ok = StringToDouble(r, "0.0001");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.0001, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.50217817069333900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.50217817069333900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.96770274105399000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.96770274105399000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.49521088758962000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.49521088758962000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.06201839227379000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.06201839227379000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.33360671999703000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.33360671999703000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.07639304839166000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.07639304839166000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.19287806240687400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.19287806240687400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.44207082838626000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.44207082838626000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.84619708036551800000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.84619708036551800000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.58091726580509000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.58091726580509000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.18073661859763000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.18073661859763000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.33045549786387000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.33045549786387000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.00272400249168000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.00272400249168000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.95337715877137000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.95337715877137000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "8.95930523708542000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(8.95930523708542000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.78847681371515000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.78847681371515000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.23601540702684000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.23601540702684000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.40676557671367000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.40676557671367000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.36110595246212700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.36110595246212700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.10430292945232000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.10430292945232000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.34892053003478100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.34892053003478100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.86871791690589000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.86871791690589000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.23477571361979100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.23477571361979100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.17723077954105000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.17723077954105000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.55533339430731000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.55533339430731000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.39193581722996000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.39193581722996000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.98290538242799000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.98290538242799000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.39701448187652000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.39701448187652000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.97546141973594000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.97546141973594000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.33870401451186000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.33870401451186000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.15061799435527000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.15061799435527000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.78705704115137000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.78705704115137000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.56210637202493000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.56210637202493000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-8.86139731673717000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-8.86139731673717000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.63169336137189000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.63169336137189000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.93978481744645000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.93978481744645000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.49952444717512000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.49952444717512000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.32659301981935000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.32659301981935000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.59514994228045000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.59514994228045000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.66422938111626000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.66422938111626000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.70431239624531000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.70431239624531000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.22698147029468000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.22698147029468000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.90761005965631200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.90761005965631200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.43368952065867000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.43368952065867000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.79510450171595000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.79510450171595000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.94081596072268000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.94081596072268000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.42019476309409300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.42019476309409300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.70663631642677000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.70663631642677000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.06601188243267550000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.06601188243267550000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.79928310771909400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.79928310771909400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.65577800860582000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.65577800860582000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.62187216187698000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.62187216187698000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.95596656702613300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.95596656702613300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.14349841191783000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.14349841191783000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.23732575725115000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.23732575725115000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.02522229405373000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.02522229405373000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.43364697172459700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.43364697172459700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.39612114240613000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.39612114240613000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.87981321512563200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.87981321512563200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.47459557296809400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.47459557296809400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.10534326849558000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.10534326849558000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.48420825457170000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.48420825457170000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.98994851457562000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.98994851457562000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.18550683277018200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.18550683277018200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.79951199056989300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.79951199056989300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.92573951347502000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.92573951347502000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.46138476058529000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.46138476058529000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.34518431607109000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.34518431607109000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.33372656820168000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.33372656820168000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.16931283159188600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.16931283159188600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.97223922802124000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.97223922802124000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.48394627491386000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.48394627491386000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.88861737945960600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.88861737945960600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.85676190081840000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.85676190081840000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.54459170417494000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.54459170417494000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.16447870264995300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.16447870264995300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.35795535411029000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.35795535411029000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.29431172135530300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.29431172135530300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.96558311276619000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.96558311276619000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.81681460880669000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.81681460880669000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.20509941503951000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.20509941503951000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.72765905661257000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.72765905661257000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.48788237089759900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.48788237089759900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.24947907141902000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.24947907141902000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.59005387432649000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.59005387432649000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.30370570926522000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.30370570926522000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.73638792046556000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.73638792046556000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.87789934199453800000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.87789934199453800000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.51989255137937000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.51989255137937000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.76305470679095000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.76305470679095000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.86920962997342000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.86920962997342000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.91313411328065000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.91313411328065000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.73463683758381000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.73463683758381000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.84273889473222500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.84273889473222500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.87403925546477700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.87403925546477700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.36964126011414000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.36964126011414000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.02726746648694000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.02726746648694000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.50557053097483000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.50557053097483000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.56453106035648000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.56453106035648000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.61890516636808000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.61890516636808000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.37767835277405000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.37767835277405000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.90511255527429100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.90511255527429100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.05929345122920000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.05929345122920000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.21311454144036000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.21311454144036000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-7.79062987304713000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-7.79062987304713000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.21365525338096000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.21365525338096000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.28348152906416000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.28348152906416000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.06610409505261000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.06610409505261000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.35302095923550200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.35302095923550200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.90818370281786000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.90818370281786000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.32125632829404000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.32125632829404000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.19461589112926800000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.19461589112926800000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.13206147532649300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.13206147532649300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.90445975568758000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.90445975568758000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.09055301456874000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.09055301456874000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.94747584830211900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.94747584830211900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.87479371073786000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.87479371073786000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.77693922561847000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.77693922561847000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.43857452366099000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.43857452366099000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.32571155407419000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.32571155407419000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.02598140411007480000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.02598140411007480000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.63213858956142000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.63213858956142000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.87199046737281000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.87199046737281000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.51485641768478000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.51485641768478000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.64286402800302700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.64286402800302700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.47677130142230000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.47677130142230000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.39498987162520000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.39498987162520000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.97846593865349600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.97846593865349600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.38696988049949000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.38696988049949000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.99716557343840900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.99716557343840900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.26983285318203300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.26983285318203300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.02818282704670500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.02818282704670500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.33995460770471000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.33995460770471000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.90961343273142000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.90961343273142000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.70545858631691000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.70545858631691000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.99837322296447000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.99837322296447000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.52931499785106000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.52931499785106000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.50600351005455000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.50600351005455000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.83191012798055900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.83191012798055900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.58090819604341000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.58090819604341000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.95182376827953000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.95182376827953000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.04199841193785000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.04199841193785000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.17938850513021000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.17938850513021000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.66797071567664000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.66797071567664000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.37221015583147000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.37221015583147000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.75673862000485000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.75673862000485000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.79003986824116500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.79003986824116500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.86020949016507000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.86020949016507000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.14082258481500000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.14082258481500000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.71685664840859000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.71685664840859000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.93998389083824300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.93998389083824300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.77244357996158000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.77244357996158000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.10595524850565900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.10595524850565900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.69799635213612000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.69799635213612000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.57971250175452400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.57971250175452400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.92766866933807100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.92766866933807100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.46991620588858000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.46991620588858000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.94569644123488000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.94569644123488000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.18859094010287000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.18859094010287000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.03213167005865000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.03213167005865000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "8.81754146434609000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(8.81754146434609000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.75897430327076600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.75897430327076600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.80047028975912000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.80047028975912000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.00529573224131364000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.00529573224131364000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.71024073322357000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.71024073322357000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.60642130185119000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.60642130185119000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.09793780927960000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.09793780927960000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.18560965637846000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.18560965637846000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.13078526893487000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.13078526893487000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.19951899215254000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.19951899215254000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.81885534502479000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.81885534502479000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.00480638980341000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.00480638980341000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.35315675289406200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.35315675289406200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.29812812014442000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.29812812014442000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.98878626408816000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.98878626408816000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.34644737073484000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.34644737073484000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.37478492823657000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.37478492823657000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.97205178784195000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.97205178784195000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.65165003646427000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.65165003646427000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.89236175545723000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.89236175545723000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.80366872242454000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.80366872242454000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "7.65465855719486000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(7.65465855719486000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.51455943741659600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.51455943741659600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.14337541345649000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.14337541345649000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.06909574569091000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.06909574569091000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.07698497525470000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.07698497525470000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.04223854975535000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.04223854975535000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.46422724459484000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.46422724459484000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.65888981424971000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.65888981424971000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-7.10193673069906000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-7.10193673069906000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.77638222509466500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.77638222509466500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.15543610545042000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.15543610545042000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.51787760900314000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.51787760900314000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.09022915694655000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.09022915694655000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.41861013154040000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.41861013154040000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.40227565288403000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.40227565288403000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.44321592617247400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.44321592617247400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.34090258417639000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.34090258417639000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.54291265629528700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.54291265629528700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.70700051509186000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.70700051509186000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-6.55072864947955000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-6.55072864947955000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.96741942560520000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.96741942560520000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.55202552301084000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.55202552301084000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.36133250863907300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.36133250863907300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.46513564511238000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.46513564511238000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.97424909475891000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.97424909475891000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.87005014400085000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.87005014400085000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.25552308785543000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.25552308785543000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.43365620710902500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.43365620710902500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.17392137573999000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.17392137573999000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.56870774575795000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.56870774575795000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.07449225479459900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.07449225479459900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.25905472211571000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.25905472211571000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.13708454690765000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.13708454690765000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.08223808231444500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.08223808231444500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.69624060459529000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.69624060459529000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.87232652840742000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.87232652840742000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.20739068103174300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.20739068103174300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.45449313279700600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.45449313279700600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.06604828436047000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.06604828436047000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.16603807756896700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.16603807756896700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "6.56288534361719000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(6.56288534361719000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.28481655900710000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.28481655900710000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.79412040010646300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.79412040010646300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.90088144503330000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.90088144503330000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.65278657648370200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.65278657648370200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.40305895338068000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.40305895338068000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.07193308249503000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.07193308249503000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.83752112822253600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.83752112822253600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.63174453257058400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.63174453257058400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.80163760021425000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.80163760021425000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.57922670044433000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.57922670044433000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "6.80309348037215000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(6.80309348037215000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.03658264005365000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.03658264005365000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "8.57714214650747000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(8.57714214650747000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.25657256359494300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.25657256359494300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.07218601388076000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.07218601388076000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.70300607815345600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.70300607815345600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.06822028770915030000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.06822028770915030000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.52253514473857300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.52253514473857300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.89211508282910000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.89211508282910000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.47331243043688000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.47331243043688000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.77190031720697000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.77190031720697000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.80704979593058400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.80704979593058400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.58398766715845000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.58398766715845000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.59532008540482000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.59532008540482000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.92824570343456000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.92824570343456000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.15232705272560400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.15232705272560400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.13670276871382500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.13670276871382500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.20063314286385000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.20063314286385000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.20390958339690000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.20390958339690000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.01999231401200000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.01999231401200000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.33696129476675000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.33696129476675000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.97472839619216000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.97472839619216000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.25935508044004000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.25935508044004000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.98737992668548000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.98737992668548000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.12647380973595000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.12647380973595000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.04573005673487000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.04573005673487000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.40131707240240000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.40131707240240000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.65350895248975000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.65350895248975000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.94344081509933000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.94344081509933000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.72697189247371000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.72697189247371000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-6.67990308483490000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-6.67990308483490000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.32343310660542000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.32343310660542000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.78517123090950000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.78517123090950000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.25849816293583000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.25849816293583000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.75396267700095000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.75396267700095000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.07647901824168000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.07647901824168000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.38047538070258000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.38047538070258000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.20758597742145100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.20758597742145100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.85537090667122100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.85537090667122100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.76805423797310000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.76805423797310000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.40449492713592000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.40449492713592000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.62167096457336000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.62167096457336000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.74002997550002000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.74002997550002000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.42443064164790400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.42443064164790400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.27951604455776900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.27951604455776900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.51579267322296100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.51579267322296100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.36457251883339000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.36457251883339000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.24583724281163800000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.24583724281163800000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.89377268220461400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.89377268220461400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.45674815825147000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.45674815825147000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.85885778179785000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.85885778179785000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.46665640857091000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.46665640857091000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.20955012166670000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.20955012166670000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.56901773371710000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.56901773371710000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.28236715260714000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.28236715260714000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.68701183150938000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.68701183150938000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.52491544332882000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.52491544332882000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.35369978756681100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.35369978756681100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.37511760913818000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.37511760913818000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.97143364160106000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.97143364160106000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.24559477959438200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.24559477959438200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.75423032204965000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.75423032204965000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.32370293533555300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.32370293533555300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.91057697616735300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.91057697616735300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.47061739750017000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.47061739750017000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.00584944044255000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.00584944044255000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.50109276836214000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.50109276836214000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.55007311077336000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.55007311077336000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "6.72362848947278000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(6.72362848947278000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.01151577930873910000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.01151577930873910000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.42911860719965600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.42911860719965600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.66111289816664900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.66111289816664900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.86619326895662000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.86619326895662000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.55732089555551800000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.55732089555551800000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.30341160871063000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.30341160871063000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.56416171751671000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.56416171751671000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.18594183907073900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.18594183907073900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.76842629255481000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.76842629255481000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.51401910241563500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.51401910241563500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.22475819701855600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.22475819701855600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.52647532265208000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.52647532265208000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.36302691626541400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.36302691626541400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.97344494357431000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.97344494357431000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.55983273528683000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.55983273528683000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.11831213859734000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.11831213859734000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.65912510665320000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.65912510665320000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.49382686162217300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.49382686162217300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.82681319206813000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.82681319206813000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.63990018376158400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.63990018376158400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.46190583889476000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.46190583889476000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.33778970852365000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.33778970852365000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.67479071577411000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.67479071577411000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.92524843393689500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.92524843393689500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.25880026429762000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.25880026429762000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.74489327613996700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.74489327613996700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.81221138965657700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.81221138965657700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.63922583575742000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.63922583575742000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.46277795175279000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.46277795175279000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.92701639727950000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.92701639727950000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.00608886511047000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.00608886511047000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.59692755566202000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.59692755566202000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.43660191582482000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.43660191582482000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.81340386111566000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.81340386111566000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.41381029424169000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.41381029424169000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.19067619994638000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.19067619994638000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.41344288416300500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.41344288416300500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.19449050806631000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.19449050806631000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.94346623486537000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.94346623486537000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.15222182306952000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.15222182306952000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.16597270635016000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.16597270635016000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.70800933434033500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.70800933434033500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.01520859362049000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.01520859362049000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.99808924291921000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.99808924291921000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.46413571523617000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.46413571523617000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.23372155013436100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.23372155013436100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.22220872747082200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.22220872747082200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.45231083327185000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.45231083327185000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.18629931302726700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.18629931302726700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.25902351261081000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.25902351261081000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.74979626491734000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.74979626491734000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.96938763187002300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.96938763187002300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.01957662295404000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.01957662295404000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.29052978268713000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.29052978268713000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.72223107008226000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.72223107008226000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.02075269473024000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.02075269473024000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.41254866425811000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.41254866425811000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.79485280000328000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.79485280000328000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.71346724218879000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.71346724218879000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.02769972220451300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.02769972220451300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.30840233811538300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.30840233811538300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.46998368658050000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.46998368658050000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.39027116095637000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.39027116095637000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.76287623175477000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.76287623175477000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.32254147772188000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.32254147772188000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.43476530791568300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.43476530791568300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.15293149279800000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.15293149279800000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.52187680632247000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.52187680632247000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.81464816227136000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.81464816227136000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.45410471462063000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.45410471462063000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.05770661428355000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.05770661428355000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.13365631051443000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.13365631051443000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.78752268413674000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.78752268413674000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.07653691039301000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.07653691039301000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.69590678743817200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.69590678743817200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.16750017237716000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.16750017237716000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.80454059859949500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.80454059859949500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.01080121519000000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.01080121519000000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-6.26823154211325000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-6.26823154211325000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.27168923945051000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.27168923945051000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.95882006177823000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.95882006177823000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.29782169884960000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.29782169884960000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.18868107998160000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.18868107998160000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.42221680213317000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.42221680213317000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.97658929351465000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.97658929351465000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.76786358453912000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.76786358453912000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.63996015852897000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.63996015852897000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.53048948235281000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.53048948235281000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.72713707173900000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.72713707173900000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.67678586641071000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.67678586641071000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.27938145860632000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.27938145860632000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.67198854485259000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.67198854485259000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.08448300379640000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.08448300379640000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.89200760812645600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.89200760812645600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.84610740591283000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.84610740591283000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.33520422865196000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.33520422865196000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.26977509689943300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.26977509689943300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.06556998317024000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.06556998317024000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.10187258099846900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.10187258099846900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.17925123727943000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.17925123727943000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.53744857107300000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.53744857107300000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.79170718052687000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.79170718052687000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.70094405912437000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.70094405912437000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.36090079790873000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.36090079790873000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.24214402582849600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.24214402582849600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.61857148054390100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.61857148054390100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.49681404951875000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.49681404951875000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.62901170744691000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.62901170744691000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.31812686057237000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.31812686057237000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.29232513324991000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.29232513324991000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.30415968616239000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.30415968616239000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.23085063327904200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.23085063327904200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.55328286749515200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.55328286749515200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.85987085857330000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.85987085857330000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.91580898949892000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.91580898949892000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.83451772893723400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.83451772893723400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "8.47663066417390000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(8.47663066417390000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.07750241770625000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.07750241770625000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.79888627452876900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.79888627452876900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.62390154942094000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.62390154942094000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.15344123017231000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.15344123017231000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.29946850732165400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.29946850732165400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.43195118421230900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.43195118421230900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.96541584823575200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.96541584823575200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.31046639376194000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.31046639376194000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.80868720295308000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.80868720295308000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.91875650345864000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.91875650345864000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.16383120358956700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.16383120358956700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.70602187714556100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.70602187714556100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.59908461641224000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.59908461641224000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.75777826959967000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.75777826959967000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "7.51297060665513000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(7.51297060665513000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.26428182282563100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.26428182282563100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.39790664337099000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.39790664337099000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.52727246472497000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.52727246472497000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.15622706860781000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.15622706860781000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.33838258813926000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.33838258813926000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.68209356689853000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.68209356689853000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.12950059731897000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.12950059731897000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.24366467557925000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.24366467557925000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.49620375847259000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.49620375847259000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.04336416841016000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.04336416841016000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.67258592218424000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.67258592218424000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.50983053528049600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.50983053528049600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.91671084717300400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.91671084717300400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-8.44023177630015000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-8.44023177630015000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.74048232685721000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.74048232685721000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.26893036021697000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.26893036021697000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.81851986861265000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.81851986861265000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.15033199581975000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.15033199581975000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.78498201393837000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.78498201393837000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.05287486584367510000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.05287486584367510000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.61135813076181000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.61135813076181000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.28026567889772000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.28026567889772000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.42191037602383000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.42191037602383000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.91926628714024000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.91926628714024000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.13695172353534000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.13695172353534000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.19234124167404000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.19234124167404000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.54749310279860000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.54749310279860000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.79683457995789900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.79683457995789900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.35976469553121900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.35976469553121900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.77036485893720200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.77036485893720200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.05245602278075000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.05245602278075000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.82693752156961000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.82693752156961000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.59176692084240000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.59176692084240000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.59390017044970000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.59390017044970000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.33597209441560000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.33597209441560000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.73223852215944000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.73223852215944000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.36562951036666300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.36562951036666300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.16083819415565000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.16083819415565000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.19457461912900000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.19457461912900000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.48993781857833000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.48993781857833000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.91089514047878000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.91089514047878000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.67713158365996000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.67713158365996000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.14929866451844800000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.14929866451844800000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.76110653286820000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.76110653286820000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.05937778946509720000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.05937778946509720000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.67737188304973000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.67737188304973000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.58425440578219000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.58425440578219000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.30491550374261000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.30491550374261000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.48379945880357000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.48379945880357000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.62987027701035800000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.62987027701035800000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.97181285150671000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.97181285150671000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.24881707556359700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.24881707556359700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.83925282156180000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.83925282156180000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.07567311295324000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.07567311295324000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.78919598870022000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.78919598870022000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.51240908161798000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.51240908161798000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.51275535534832000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.51275535534832000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.58920518726789000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.58920518726789000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.81944139206950000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.81944139206950000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.20584689863215000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.20584689863215000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.52387820278697400000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.52387820278697400000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.41030960929320000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.41030960929320000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.92103214885374000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.92103214885374000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.24231540245246000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.24231540245246000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.16908726665941100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.16908726665941100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.44589887686242000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.44589887686242000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.49069006371512000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.49069006371512000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.80650544937931100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.80650544937931100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.97976397104165000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.97976397104165000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.98766812819005000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.98766812819005000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.72989593663204100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.72989593663204100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.61947487048298000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.61947487048298000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.14305085135282200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.14305085135282200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.19625994631193500000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.19625994631193500000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.37918205114016000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.37918205114016000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "6.59599108171267000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(6.59599108171267000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.96455017519345000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.96455017519345000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.54659210340770000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.54659210340770000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.34333955584988000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.34333955584988000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.97945807230247000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.97945807230247000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.16309656911088000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.16309656911088000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.25046325751587000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.25046325751587000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.95513333613538000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.95513333613538000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.44180657712571200000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.44180657712571200000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.62068238736436000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.62068238736436000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.06550714914445000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.06550714914445000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.50821128944561000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.50821128944561000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.15508838007900000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.15508838007900000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.95233817795899000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.95233817795899000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.51496658163574000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.51496658163574000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.78333801715048000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.78333801715048000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.21314186040171000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.21314186040171000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.66527690284710800000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.66527690284710800000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.15441313415350000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.15441313415350000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.23491685110319000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.23491685110319000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.72724695951577000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.72724695951577000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.24050455306641300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.24050455306641300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.21656863480457000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.21656863480457000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.26488830552906000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.26488830552906000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "3.75588617365038000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(3.75588617365038000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.03323480544193850000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.03323480544193850000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.09120742547457650000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.09120742547457650000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-7.88263056036503000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-7.88263056036503000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.43816026309627000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.43816026309627000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-7.03193105607121000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-7.03193105607121000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.60611554369909000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.60611554369909000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-5.51585989717609000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-5.51585989717609000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.07820571638609000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.07820571638609000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.06101375865811000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.06101375865811000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.20736962161768000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.20736962161768000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.90243061828996000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.90243061828996000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.85299495975262000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.85299495975262000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.12934888152265000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.12934888152265000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.67072919212958000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.67072919212958000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.83114509924264900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.83114509924264900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.30250616100438000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.30250616100438000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.12093048302870000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.12093048302870000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.05552960660102000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.05552960660102000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.49292325032676000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.49292325032676000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.17400757029104000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.17400757029104000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.14267109660887000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.14267109660887000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.10546669054034000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.10546669054034000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.21371952871041700000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.21371952871041700000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "4.78156583044177000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(4.78156583044177000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.50472792044367000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.50472792044367000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.12605755507866600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.12605755507866600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.70371185139311000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.70371185139311000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.10053982101354000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.10053982101354000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.83624586947925000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.83624586947925000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.05046060224221000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.05046060224221000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.28157147555257100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.28157147555257100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.59637285322805000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.59637285322805000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.75470175557419100000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.75470175557419100000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.70838399472621000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.70838399472621000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.45654131621183000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.45654131621183000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.28443945581399000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.28443945581399000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.68823597183684000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.68823597183684000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.29650435341174000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.29650435341174000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.90134290476188000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.90134290476188000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.18487205108194000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.18487205108194000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.14778330708372000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.14778330708372000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.98574838531856000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.98574838531856000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.38116626593387000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.38116626593387000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.18109367323846900000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.18109367323846900000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.54919024558896000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.54919024558896000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-3.01819062231017000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-3.01819062231017000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.86141885135950000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.86141885135950000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.31984756442573800000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.31984756442573800000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.35256585949514000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.35256585949514000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-6.04254591090669000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-6.04254591090669000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.31151799331342300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.31151799331342300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.77556498660193000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.77556498660193000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "5.90371566906766000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(5.90371566906766000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.29825016398122000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.29825016398122000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.01456323654512000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.01456323654512000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-6.19305288625244000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-6.19305288625244000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.99509367627092600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.99509367627092600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.08519786419394440000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.08519786419394440000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.88317752752055000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.88317752752055000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "1.69592260047492000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(1.69592260047492000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.66260089028084000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.66260089028084000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.12882625389413000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.12882625389413000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.79536921500302000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.79536921500302000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-4.51399167357593000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-4.51399167357593000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-0.75817764527332300000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-0.75817764527332300000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-2.12821371262498000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-2.12821371262498000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "-1.08153732327358000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(-1.08153732327358000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "0.71608571781169600000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(0.71608571781169600000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.42004689052701000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.42004689052701000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.84542164846610000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.84542164846610000000, r, TOLERANCE);
+  }
+
+  {
+    bool ok = StringToDouble(r, "2.97822513569917000000");
+    EXPECT_TRUE(ok);
+    EXPECT_NEAR(2.97822513569917000000, r, TOLERANCE);
+  }
+}
+
+TEST(GenericToolbox, TestStringToDoubleHard)
+{
+  using OrthancStone::GenericToolbox::StringToDouble;
+  const double TOLERANCE = 0.00000000000001;
+
+  size_t i = 0;
+  const size_t COUNT = 125;
+  //const double FACTOR = 1.000000000171271211;
+  const double FACTOR = 1.71271211;
+  for (double b = DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
+  {
+    char txt[1024];
+#if defined(_MSC_VER)
+    sprintf_s(txt, "%.17f", b);
+#else
+    snprintf(txt, sizeof(txt) - 1, "%.17f", b);
+#endif
+    double r = 0.0;
+    bool ok = StringToDouble(r, txt);
+    
+#if 0
+    if (ok)
+    {
+      printf("OK for txt = \"%s\" and r = %.17f\n", txt, r);
+    }
+    else
+    {
+      printf("Not ok for txt = \"%s\" and r = %.17f\n", txt, r);
+      ok = StringToDouble(r, txt);
+    }
+#endif
+
+    EXPECT_TRUE(ok);
+
+#if 0
+    if (fabs(b - r) > TOLERANCE)
+    {
+      printf("fabs(b (%.17f) - r (%.17f)) ((%.17f))  > TOLERANCE (%.17f)\n", b, r, fabs(b-r), TOLERANCE);
+    }
+#endif
+    EXPECT_NEAR(b, r, TOLERANCE);
+  }
+}
+
+TEST(GenericToolbox, TestStringToDoubleHardNeg)
+{
+  using OrthancStone::GenericToolbox::StringToDouble;
+  const double TOLERANCE = 0.00000000000001;
+
+  size_t i = 0;
+  const size_t COUNT = 125;
+  //const double FACTOR = 1.000000000171271211;
+  const double FACTOR = 1.71271211;
+  for (double b = -1.0*DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
+  {
+    char txt[1024];
+#if defined(_MSC_VER)
+    sprintf_s(txt, "%.17f", b);
+#else
+    snprintf(txt, sizeof(txt) - 1, "%.17f", b);
+#endif
+    double r = 0.0;
+    bool ok = StringToDouble(r, txt);
+
+#if 0
+    if (ok)
+    {
+      printf("OK for txt = \"%s\" and r = %.17f\n", txt, r);
+    }
+    else
+    {
+      printf("Not ok for txt = \"%s\" and r = %.17f\n", txt, r);
+      ok = StringToDouble(r, txt);
+    }
+#endif
+
+    EXPECT_TRUE(ok);
+
+#if 0
+    if (fabs(b - r) > TOLERANCE)
+    {
+      printf("fabs(b (%.17f) - r (%.17f)) ((%.17f))  > TOLERANCE (%.17f)\n", b, r, fabs(b - r), TOLERANCE);
+    }
+#endif
+    EXPECT_NEAR(b, r, TOLERANCE);
+  }
+}
+
+static const size_t NUM_TIMINGS_CONVS = 1; // set to 2000 if you want to measure perfs;
+
+
+//4444444444444444$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
+
+TEST(GenericToolbox, TestStringToDoubleHardNeg_lexical_cast_vs_StringToDouble)
+{
+  using OrthancStone::GenericToolbox::StringToDouble;
+  const double TOLERANCE = 0.00000000000001;
+
+  double total_us_StringToDouble = 0.0;
+  double total_us_lexical_cast = 0.0;
+  int64_t numConversions = 0;
+
+  size_t i = 0;
+  const size_t COUNT = 125;
+  //const double FACTOR = 1.000000000171271211;
+  const double FACTOR = 1.71271211;
+  for (double b = -1.0 * DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
+  {
+    char txt[1024];
+#if defined(_MSC_VER)
+    sprintf_s(txt, "%.17f", b);
+#else
+    snprintf(txt, sizeof(txt) - 1, "%.17f", b);
+#endif
+    
+    
+    double r = 0.0;
+
+    bool ok = true;
+
+    {
+      boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();
+      for (size_t i = 0; i < NUM_TIMINGS_CONVS; ++i)
+      {
+        ok = StringToDouble(r, txt);
+      }
+      boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();
+      total_us_StringToDouble += (end - start).total_microseconds();
+    }
+
+    {
+      boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();
+      for (size_t i = 0; i < NUM_TIMINGS_CONVS; ++i)
+      {
+        try
+        {
+          r = boost::lexical_cast<double>(txt);
+          ok = true;
+        }
+        catch (boost::bad_lexical_cast& )
+        {
+          ok = false;
+        }
+      }
+      boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();
+      total_us_lexical_cast += (end - start).total_microseconds();
+    }
+    numConversions += NUM_TIMINGS_CONVS;
+
+#if 0
+    if (ok)
+    {
+      printf("OK for txt = \"%s\" and r = %.17f\n", txt, r);
+    }
+    else
+    {
+      printf("Not ok for txt = \"%s\" and r = %.17f\n", txt, r);
+      ok = StringToDouble(r, txt);
+    }
+#endif
+
+    EXPECT_TRUE(ok);
+
+#if 0
+    if (fabs(b - r) > TOLERANCE)
+    {
+      printf("fabs(b (%.17f) - r (%.17f)) ((%.17f))  > TOLERANCE (%.17f)\n", b, r, fabs(b - r), TOLERANCE);
+    }
+#endif
+    EXPECT_NEAR(b, r, TOLERANCE);
+  }
+  std::cout << "Total time (us) for " << numConversions 
+    << " conversions using StringToDouble (with NO scientific notation)      = " 
+    << static_cast<int64_t>(total_us_StringToDouble) << std::endl;
+  
+  std::cout << "Time per conversion using StringToDouble (ns) = " 
+    << (int64_t)( (total_us_StringToDouble * 1000) /((double)numConversions)) << std::endl;
+
+  std::cout << "Total time (us) for " << numConversions 
+    << " conversions using boost::lexical_cast (with NO scientific notation) = " 
+    << static_cast<int64_t>(total_us_lexical_cast) << std::endl;
+
+  std::cout << "Time per conversion using boost::lexical_cast (ns) = "
+    << (int64_t)( (total_us_lexical_cast * 1000) / ((double)numConversions)) << std::endl;
+
+  std::cout << "StringToDouble is " << (int)((total_us_lexical_cast / total_us_StringToDouble) + 0.5) << " times faster than boost::lexical_cast" << std::endl;
+
+}
+//4444444444444444$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
+
+
+TEST(GenericToolbox, TestStringToDoubleHardScientific)
+{
+  using OrthancStone::GenericToolbox::StringToDouble;
+  const double TOLERANCE = 0.00000000000001;
+
+  size_t i = 0;
+  const size_t COUNT = 125;
+  //const double FACTOR = 1.000000000171271211;
+  const double FACTOR = 1.71271211;
+  for (double b = DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
+  {
+
+    // the tolerance must be adapted depending on the exponent
+    double exponent = (b == 0) ? 0 : 1.0 + std::floor(std::log10(std::fabs(b)));
+    double actualTolerance = TOLERANCE * pow(10.0, exponent);
+
+    char txt[1024];
+#if defined(_MSC_VER)
+    sprintf_s(txt, "%.17e", b);
+#else
+    snprintf(txt, sizeof(txt) - 1, "%.17e", b);
+#endif
+    double r = 0.0;
+    bool ok = StringToDouble(r, txt);
+
+#if 0
+    if (ok)
+    {
+      printf("OK for txt = \"%s\" and r = %.17e\n", txt, r);
+    }
+    else
+    {
+      printf("Not ok for txt = \"%s\" and r = %.17e\n", txt, r);
+      ok = StringToDouble(r, txt);
+    }
+#endif
+
+    EXPECT_TRUE(ok);
+
+#if 0
+    if (fabs(b - r) > actualTolerance)
+    {
+      printf("NOK fabs(b (%.17f) - r (%.17f)) ((%.17f))  > actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
+      printf("NOK fabs(b (%.17e) - r (%.17e)) ((%.17e))  > actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
+      ok = StringToDouble(r, txt);
+    }
+    else
+    {
+      printf("OK  fabs(b (%.17f) - r (%.17f)) ((%.17f)) <= actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
+      printf("OK  fabs(b (%.17e) - r (%.17e)) ((%.17e)) <= actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
+    }
+#endif
+    EXPECT_NEAR(b, r, actualTolerance);
+  }
+}
+
+TEST(GenericToolbox, TestStringToDoubleHardNegScientific)
+{
+  using OrthancStone::GenericToolbox::StringToDouble;
+  const double TOLERANCE = 0.00000000000001;
+
+  size_t i = 0;
+  const size_t COUNT = 125;
+  //const double FACTOR = 1.000000000171271211;
+  const double FACTOR = 1.71271211;
+  for (double b = -1.0 * DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
+  {
+    // the tolerance must be adapted depending on the exponent
+    double exponent = (b == 0) ? 0 : 1.0 + std::floor(std::log10(std::fabs(b)));
+    double actualTolerance = TOLERANCE * pow(10.0, exponent);
+
+    char txt[1024];
+#if defined(_MSC_VER)
+    sprintf_s(txt, "%.17e", b);
+#else
+    snprintf(txt, sizeof(txt) - 1, "%.17e", b);
+#endif
+    double r = 0.0;
+    bool ok = StringToDouble(r, txt);
+
+#if 0
+    if (ok)
+    {
+      printf("OK for txt = \"%s\" and r = %.17e\n", txt, r);
+    }
+    else
+    {
+      printf("Not ok for txt = \"%s\" and r = %.17e\n", txt, r);
+      ok = StringToDouble(r, txt);
+    }
+#endif
+
+    EXPECT_TRUE(ok);
+
+#if 0
+    if (fabs(b - r) > actualTolerance)
+    {
+      printf("NOK fabs(b (%.17f) - r (%.17f)) ((%.17f))  > actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
+      printf("NOK fabs(b (%.17e) - r (%.17e)) ((%.17e))  > actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
+      ok = StringToDouble(r, txt);
+    }
+    else
+    {
+      printf("OK  fabs(b (%.17f) - r (%.17f)) ((%.17f)) <= actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
+      printf("OK  fabs(b (%.17e) - r (%.17e)) ((%.17e)) <= actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
+    }
+#endif
+    EXPECT_NEAR(b, r, actualTolerance);
+  }
+}
+
+
+TEST(GenericToolbox, TestStringToDoubleHardNegScientific_lexical_cast_vs_StringToDouble)
+{
+  using OrthancStone::GenericToolbox::StringToDouble;
+  const double TOLERANCE = 0.00000000000001;
+
+  size_t i = 0;
+  const size_t COUNT = 125;
+  //const double FACTOR = 1.000000000171271211;
+  const double FACTOR = 1.71271211;
+
+  double total_us_StringToDouble = 0.0;
+  double total_us_lexical_cast = 0.0;
+  int64_t numConversions = 0;
+
+  for (double b = -1.0 * DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
+  {
+    // the tolerance must be adapted depending on the exponent
+    double exponent = (b == 0) ? 0 : 1.0 + std::floor(std::log10(std::fabs(b)));
+    double actualTolerance = TOLERANCE * pow(10.0, exponent);
+
+    char txt[1024];
+#if defined(_MSC_VER)
+    sprintf_s(txt, "%.17e", b);
+#else
+    snprintf(txt, sizeof(txt) - 1, "%.17e", b);
+#endif
+    double r = 0.0;
+
+    bool ok = true;
+
+    {
+      boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();
+      for (size_t i = 0; i < NUM_TIMINGS_CONVS; ++i)
+      {
+        ok = StringToDouble(r, txt);
+      }
+      boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();
+      total_us_StringToDouble += (end - start).total_microseconds();
+    }
+
+    {
+      boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();
+      for (size_t i = 0; i < NUM_TIMINGS_CONVS; ++i)
+      {
+        try
+        {
+          r = boost::lexical_cast<double>(txt);
+          ok = true;
+        }
+        catch (boost::bad_lexical_cast& )
+        {
+          ok = false;
+        }
+      }
+      boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();
+      total_us_lexical_cast += (end - start).total_microseconds();
+    }
+    numConversions += NUM_TIMINGS_CONVS;
+
+#if 0
+    if (ok)
+    {
+      printf("OK for txt = \"%s\" and r = %.17e\n", txt, r);
+    }
+    else
+    {
+      printf("Not ok for txt = \"%s\" and r = %.17e\n", txt, r);
+      ok = StringToDouble(r, txt);
+    }
+#endif
+
+    EXPECT_TRUE(ok);
+
+#if 0
+    if (fabs(b - r) > actualTolerance)
+    {
+      printf("NOK fabs(b (%.17f) - r (%.17f)) ((%.17f))  > actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
+      printf("NOK fabs(b (%.17e) - r (%.17e)) ((%.17e))  > actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
+      ok = StringToDouble(r, txt);
+    }
+    else
+    {
+      printf("OK  fabs(b (%.17f) - r (%.17f)) ((%.17f)) <= actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
+      printf("OK  fabs(b (%.17e) - r (%.17e)) ((%.17e)) <= actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
+    }
+#endif
+    EXPECT_NEAR(b, r, actualTolerance);
+  }
+
+  std::cout << "Total time (us) for " << numConversions
+    << " conversions using StringToDouble (WITH scientific notation)      = "
+    << static_cast<int64_t>(total_us_StringToDouble) << std::endl;
+
+  std::cout << "Time per conversion using StringToDouble (ns) = "
+    << (int64_t)( (total_us_StringToDouble*1000) / ((double)numConversions)) << std::endl;
+
+  std::cout << "Total time (us) for " << numConversions
+    << " conversions using boost::lexical_cast (WITH  scientific notation) = "
+    << static_cast<int64_t>(total_us_lexical_cast) << std::endl;
+
+  std::cout << "Time per conversion using boost::lexical_cast (ns) = "
+    << (int64_t)( (total_us_lexical_cast * 1000) / ((double)numConversions)) << std::endl;
+
+  std::cout << "StringToDouble is " << (int)((total_us_lexical_cast / total_us_StringToDouble)+ 0.5) << " times faster than boost::lexical_cast" << std::endl;
+}
+
+
+TEST(GenericToolbox, TestStringToIntegerHard)
+{
+  using OrthancStone::GenericToolbox::StringToInteger;
+
+  size_t i = 0;
+  const size_t COUNT = 125;
+  //const double FACTOR = 1.000000000171271211;
+  const double FACTOR = 1.71271211;
+  for (double b = DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
+  {
+    int64_t bi = static_cast<int64_t>(b);
+    char txt[1024];
+#if defined(_MSC_VER)
+#  if (_MSC_VER > 1800)
+    sprintf_s(txt, "%lld", bi);
+#  else
+    sprintf_s(txt, "%I64d", bi);
+#  endif
+#else
+    snprintf(txt, sizeof(txt) - 1, "%ld", bi);
+#endif
+    int64_t r = 0;
+    bool ok = StringToInteger<int64_t>(r, txt);
+    EXPECT_TRUE(ok);
+    EXPECT_EQ(bi, r);
+#if 0
+    if (ok)
+    {
+      printf("OK for b = %.17f bi = %lld txt = \"%s\" and r = %lld\n", b, bi, txt, r);
+    }
+    else
+    {
+      printf("NOK for b = %.17f bi = %lld txt = \"%s\" and r = %lld\n", b, bi, txt,r);
+      ok = StringToInteger<int64_t>(r, txt);
+    }
+#endif
+  }
+}
+
+
+TEST(GenericToolbox, TestGetRgbValuesFromString)
+{
+  using OrthancStone::GenericToolbox::GetRgbValuesFromString;
+
+  uint8_t red = 0;
+  uint8_t green = 0;
+  uint8_t blue = 0;
+
+  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, ""));
+  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, " "));
+  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, "rgb() "));
+  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, "rgb(12,30 2563) "));
+  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, "rgb(12,30 2563,45) "));
+  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, "rgb(12,303.23,45)"));
+  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, "rgb(12,303,45 "));
+
+  ASSERT_TRUE(GetRgbValuesFromString(red, green, blue, "rgb(12,255,45)"));
+  EXPECT_EQ(12, red);
+  EXPECT_EQ(255, green);
+  EXPECT_EQ(45, blue);
+
+  ASSERT_TRUE(GetRgbValuesFromString(red, green, blue, " rgb ( 72 , 257 , 47 ) "));
+  EXPECT_EQ(72, red);
+  EXPECT_EQ(1, green); //rollover 255 --> 255, 256 --> 0, 257 --> 1,...
+  EXPECT_EQ(47, blue);
+
+  ASSERT_TRUE(GetRgbValuesFromString(red, green, blue, " rgb ( 72 , 247 , 47 ) "));
+  EXPECT_EQ(72, red);
+  EXPECT_EQ(247, green);
+  EXPECT_EQ(47, blue);
+
+  ASSERT_TRUE(GetRgbValuesFromString(red, green, blue, " rgb ( 000, 0, 000) "));
+  EXPECT_EQ(0, red);
+  EXPECT_EQ(0, green);
+  EXPECT_EQ(0, blue);
+}
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/ImageToolboxTests.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,260 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "../Sources/Toolbox/ImageToolbox.h"
+
+// #include <boost/chrono.hpp>
+// #include <boost/lexical_cast.hpp>
+
+#include <Compatibility.h>
+#include <Images/Image.h>
+#include <Images/PixelTraits.h>
+
+#include "stdint.h"
+
+#include <gtest/gtest.h>
+
+#include <cmath>
+
+
+TEST(ImageToolbox, SimpleHisto_Grayscale8_BinSize1)
+{
+  using OrthancStone::HistogramData;
+  using OrthancStone::DumpHistogramResult;
+  using OrthancStone::ComputeHistogram;
+
+  const unsigned int W = 16;
+  const unsigned int H = 16;
+
+  // 256/17 = 15,...
+  // 256 % 17 = 1
+  // 0 will be 16 times
+  // 1 will be 15 times
+  // 2 will be 15 times
+  // ...
+  // 16 will be 15 times
+
+  size_t pixCounter = 0;
+
+  std::unique_ptr<Orthanc::Image> image(new Orthanc::Image(
+    Orthanc::PixelFormat_Grayscale8, W, H, false));
+
+  for (unsigned int y = 0; y < H; ++y)
+  {
+    uint8_t* buffer = reinterpret_cast<uint8_t*>(image->GetRow(y));
+    for (unsigned int x = 0; x < W; ++x, ++buffer, ++pixCounter)
+    {
+      *buffer = static_cast<uint8_t>(pixCounter % 17);
+    }
+  }
+
+  HistogramData hd;
+  ComputeHistogram(*image, hd, 1);
+  ASSERT_EQ(-0.5, hd.minValue);
+  ASSERT_EQ(17u, hd.bins.size());
+  ASSERT_EQ(16u, hd.bins[0]);
+  for (size_t i = 1; i < hd.bins.size(); ++i)
+    ASSERT_EQ(15u, hd.bins[i]);
+}
+
+TEST(ImageToolbox, SimpleHisto_Grayscale8_BinSize1_FormatString)
+{
+  using OrthancStone::HistogramData;
+  using OrthancStone::DumpHistogramResult;
+  using OrthancStone::ComputeHistogram;
+
+  const unsigned int W = 16;
+  const unsigned int H = 16;
+
+  // 256/17 = 15,...
+  // 256 % 17 = 1
+  // 0 will be 16 times
+  // 1 will be 15 times
+  // 2 will be 15 times
+  // ...
+  // 16 will be 15 times
+
+  size_t pixCounter = 0;
+
+  std::unique_ptr<Orthanc::Image> image(new Orthanc::Image(
+    Orthanc::PixelFormat_Grayscale8, W, H, false));
+
+  for (unsigned int y = 0; y < H; ++y)
+  {
+    uint8_t* buffer = reinterpret_cast<uint8_t*>(image->GetRow(y));
+    for (unsigned int x = 0; x < W; ++x, ++buffer, ++pixCounter)
+    {
+      *buffer = static_cast<uint8_t>(pixCounter % 17);
+    }
+  }
+
+  HistogramData hd;
+  ComputeHistogram(*image, hd, 1);
+
+  // void DumpHistogramResult(std::string& s, const HistogramData& hd)
+  std::string s;
+  DumpHistogramResult(s, hd);
+  std::cout << s;
+}
+
+template<Orthanc::PixelFormat Format>
+void SimpleHisto_T_BinSize1_2()
+{
+  using OrthancStone::HistogramData;
+  using OrthancStone::DumpHistogramResult;
+  using OrthancStone::ComputeHistogram;
+
+  const unsigned int W = 16;
+  const unsigned int H = 16;
+
+  // 256/17 = 15,...
+  // 256 % 17 = 1
+  // 0 will be 16 times
+  // 1 will be 15 times
+  // 2 will be 15 times
+  // ...
+  // 16 will be 15 times
+
+  size_t pixCounter = 0;
+
+  std::unique_ptr<Orthanc::Image> image(new Orthanc::Image(
+    Format, W, H, false));
+
+  typedef typename Orthanc::PixelTraits<Format>::PixelType PixelType;
+
+  PixelType pixValue = 0;
+
+  for (unsigned int y = 0; y < H; ++y)
+  {
+    PixelType* buffer = reinterpret_cast<PixelType*>(image->GetRow(y));
+    for (unsigned int x = 0; x < W; ++x, ++buffer, ++pixCounter)
+    {
+      // 0..99 0..99 0..55
+      *buffer = pixValue;
+      pixValue++;
+      if (pixValue >= 100)
+        pixValue = 0;
+    }
+  }
+
+  HistogramData hd;
+  ComputeHistogram(*image, hd, 1);
+  ASSERT_EQ(-0.5, hd.minValue);
+  ASSERT_EQ(100u, hd.bins.size());
+  for (size_t i = 0; i <= 55; ++i)
+    ASSERT_EQ(3u, hd.bins[i]);
+  for (size_t i = 56; i <= 99; ++i)
+    ASSERT_EQ(2u, hd.bins[i]);
+}
+
+TEST(ImageToolbox, SimpleHisto_Grayscale8_BinSize1_2)
+{               
+  SimpleHisto_T_BinSize1_2<Orthanc::PixelFormat_Grayscale8>();
+}
+
+TEST(ImageToolbox, SimpleHisto_Grayscale16_BinSize1_2)
+{
+  SimpleHisto_T_BinSize1_2<Orthanc::PixelFormat_Grayscale16>();
+}
+
+TEST(ImageToolbox, SimpleHisto_SignedGrayscale16_BinSize1_2)
+{
+  SimpleHisto_T_BinSize1_2<Orthanc::PixelFormat_SignedGrayscale16>();
+}
+
+TEST(ImageToolbox, SimpleHisto_Grayscale32_BinSize1_2)
+{
+  SimpleHisto_T_BinSize1_2<Orthanc::PixelFormat_Grayscale32>();
+}
+
+template<Orthanc::PixelFormat Format>
+void SimpleHisto_T_BinSize10_2()
+{
+  using OrthancStone::HistogramData;
+  using OrthancStone::DumpHistogramResult;
+  using OrthancStone::ComputeHistogram;
+
+  const unsigned int W = 16;
+  const unsigned int H = 16;
+
+  // 256/17 = 15,...
+  // 256 % 17 = 1
+  // 0 will be 16 times
+  // 1 will be 15 times
+  // 2 will be 15 times
+  // ...
+  // 16 will be 15 times
+
+  size_t pixCounter = 0;
+
+  std::unique_ptr<Orthanc::Image> image(new Orthanc::Image(
+    Format, W, H, false));
+
+  typedef typename Orthanc::PixelTraits<Format>::PixelType PixelType;
+
+  PixelType pixValue = 0;
+
+  for (unsigned int y = 0; y < H; ++y)
+  {
+    PixelType* buffer = reinterpret_cast<PixelType*>(image->GetRow(y));
+    for (unsigned int x = 0; x < W; ++x, ++buffer, ++pixCounter)
+    {
+      // 0..99 0..99 0..55
+      *buffer = pixValue;
+      pixValue++;
+      if (pixValue >= 100)
+        pixValue = 0;
+    }
+  }
+
+  HistogramData hd;
+  ComputeHistogram(*image, hd, 10);
+  ASSERT_EQ(-0.5, hd.minValue);
+  ASSERT_EQ(10u, hd.bins.size());
+
+  for (size_t i = 0; i <= 4; ++i)
+    ASSERT_EQ(30u, hd.bins[i]);
+
+  ASSERT_EQ(26u, hd.bins[5]);
+
+  for (size_t i = 6; i <= 9; ++i)
+    ASSERT_EQ(20u, hd.bins[i]);
+}
+
+TEST(ImageToolbox, SimpleHisto_Grayscale8_BinSize10_2)
+{
+  SimpleHisto_T_BinSize10_2<Orthanc::PixelFormat_Grayscale8>();
+}
+
+TEST(ImageToolbox, SimpleHisto_Grayscale16_BinSize10_2)
+{
+  SimpleHisto_T_BinSize10_2<Orthanc::PixelFormat_Grayscale16>();
+}
+
+TEST(ImageToolbox, SimpleHisto_SignedGrayscale16_BinSize10_2)
+{
+  SimpleHisto_T_BinSize10_2<Orthanc::PixelFormat_SignedGrayscale16>();
+}
+
+TEST(ImageToolbox, SimpleHisto_Grayscale32_BinSize10_2)
+{
+  SimpleHisto_T_BinSize10_2<Orthanc::PixelFormat_Grayscale32>();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/PixelTestPatternsTests.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,168 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "../Sources/Toolbox/PixelTestPatterns.h"
+
+#include <Images/Image.h>
+#include <Images/PngWriter.h>
+
+#include <boost/chrono.hpp>
+#include <boost/lexical_cast.hpp>
+
+#include <gtest/gtest.h>
+#include <stdint.h>
+#include <cmath>
+
+ /* Autogenerated from prout.png */
+static const unsigned char bin2c_SimpleRedBlueHGradient_png[391] = "\211PNG\15\12\32\12\0\0\0\15IHDR\0\0\0\200\0\0\0\200\10\6\0\0\0\303>a\313\0\0\1MIDATx\234\355\322\1\15\3000\0\303\260~\3741o\7\342X\12\203|o{wgev\26Z\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p?\314\262\201\3760\355r\262\0\0\0\0IEND\256B`\202";
+
+TEST(PixelTestPatterns, SimpleRedHGradient)
+{
+  std::unique_ptr<Orthanc::Image> texture;
+
+  texture.reset(new Orthanc::Image(
+    Orthanc::PixelFormat_RGBA32,
+    128,
+    128,
+    /*forceMinimalPitch*/false));
+
+  Orthanc::ImageAccessor target;
+  texture->GetWriteableAccessor(target);
+
+  OrthancStone::PixelTestPatterns::fillWithHGradient(target,255,0,0,0,0,255);
+
+  Orthanc::PngWriter writer;
+#if 0
+  writer.WriteToFile("SimpleRedBlueHGradient.png", *texture);
+#else
+  std::string contents;
+  writer.WriteToMemory(contents, *texture);
+
+  ASSERT_EQ(1u, sizeof(unsigned char));
+  ASSERT_EQ(391u, sizeof(bin2c_SimpleRedBlueHGradient_png));
+  ASSERT_EQ(390u, contents.size());
+
+  char* resultPngBytes = &(contents[0]);
+
+  int result = memcmp(resultPngBytes, bin2c_SimpleRedBlueHGradient_png, 390);
+  ASSERT_EQ(0, result);
+#endif
+}
+
+static const unsigned char bin2c_SimpleRedBlueVGradient_png[400] = "\211PNG\15\12\32\12\0\0\0\15IHDR\0\0\0\200\0\0\0\200\10\6\0\0\0\303>a\313\0\0\1VIDATx\234\355\322A\21\3000\14\300\260t7\376\220\327\301\310\303\22\2?|\356\314\35\262\336o\236\355\6\26\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\316\231\357nG\260\347\7\221\255\203\367~A)\36\0\0\0\0IEND\256B`\202";
+
+
+TEST(PixelTestPatterns, SimpleRedBlueVGradient)
+{
+  std::unique_ptr<Orthanc::Image> texture;
+
+  texture.reset(new Orthanc::Image(
+    Orthanc::PixelFormat_RGBA32,
+    128,
+    128,
+    /*forceMinimalPitch*/false));
+
+  Orthanc::ImageAccessor target;
+  texture->GetWriteableAccessor(target);
+
+  OrthancStone::PixelTestPatterns::fillWithVGradient(target, 255, 0, 0, 0, 0, 255);
+
+  Orthanc::PngWriter writer;
+#if 0
+  writer.WriteToFile("SimpleRedBlueVGradient.png", *texture);
+#else
+  std::string contents;
+  writer.WriteToMemory(contents, *texture);
+
+  ASSERT_EQ(1u, sizeof(unsigned char));
+  ASSERT_EQ(400u, sizeof(bin2c_SimpleRedBlueVGradient_png));
+  ASSERT_EQ(399u, contents.size());
+
+  char* resultPngBytes = &(contents[0]);
+
+  int result = memcmp(resultPngBytes, bin2c_SimpleRedBlueVGradient_png, 399);
+  ASSERT_EQ(0, result);
+#endif
+}
+
+
+/* Autogenerated from MultiGradient.png */
+static const unsigned char bin2c_MultiGradient_png[774] = "\211PNG\15\12\32\12\0\0\0\15IHDR\0\0\1\0\0\0\0\200\10\6\0\0\0\344\265\267\12\0\0\2\314IDATx\234\355\325\301\11\3030\24\5\301/\242\376+6(E$ \314\354\30\337\215\364X\2573s\6\266\316\314\226\237\365\271}\5\227\255\331{\273\357s\373\374sY\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\2559\347\354\231Q\337\317\372\303)\276\331Ys\377\26\256.\340\3673|\261}\373\3n{\360?\240>\200\347\351\376i\5\300V\0pz\0t\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0lz\0\276!\352\302\35+U\244b\0\0\0\0IEND\256B`\202";
+
+TEST(PixelTestPatterns, MultiGradient)
+{
+  std::unique_ptr<Orthanc::Image> texture;
+
+  const int CELLW = 64;
+  const int CELLH = 64;
+  const int NHCELLS = 4;
+  const int NVCELLS = 2;
+  const int NCELLS = NHCELLS * NVCELLS;
+
+  texture.reset(new Orthanc::Image(
+    Orthanc::PixelFormat_RGBA32,
+    NHCELLS * CELLW,
+    NVCELLS * CELLH,
+    /*forceMinimalPitch*/false));
+
+  // H:R->K, V:G->W, H:B->K
+
+  //                    R   G   B   K   C   M   Y   W
+  uint8_t startR[NCELLS] = {255,000,000,000,000,255,255,255};
+  uint8_t startG[NCELLS] = {000,255,000,000,255,000,255,255};
+  uint8_t startB[NCELLS] = {000,000,255,000,255,255,000,255};
+  
+  //                  K   W   K   W   W   K   W   K
+  uint8_t eeendR[NCELLS] = {000,255,000,255,255,000,255,000};
+  uint8_t eeendG[NCELLS] = {000,255,000,255,255,000,255,000 };
+  uint8_t eeendB[NCELLS] = {000,255,000,255,255,000,255,000 };
+
+  for(size_t slot = 0; slot < NCELLS; ++slot)
+  {
+    int x0 = (slot % 4) * CELLW;
+    bool vertical = (((slot / NHCELLS) % 2) == 0) ? (slot % 2 == 0) : (slot % 2 == 1);
+    int y0 = static_cast<int>(slot / NHCELLS) * CELLH;
+    Orthanc::ImageAccessor target;
+    texture->GetRegion(target, x0, y0, CELLW, CELLH);
+    if (vertical)
+      OrthancStone::PixelTestPatterns::fillWithVGradient(target, startR[slot], startG[slot], startB[slot], eeendR[slot], eeendG[slot], eeendB[slot]);
+    else 
+      OrthancStone::PixelTestPatterns::fillWithHGradient(target, startR[slot], startG[slot], startB[slot], eeendR[slot], eeendG[slot], eeendB[slot]);
+  }
+ 
+  Orthanc::PngWriter writer;
+#if 0
+  writer.WriteToFile("MultiGradient.png", *texture);
+#else
+  std::string contents;
+  writer.WriteToMemory(contents, *texture);
+
+  ASSERT_EQ(1u, sizeof(unsigned char));
+  ASSERT_EQ(774u, sizeof(bin2c_MultiGradient_png));
+  ASSERT_EQ(773u, contents.size());
+
+  char* resultPngBytes = &(contents[0]);
+
+  int result = memcmp(resultPngBytes, bin2c_MultiGradient_png, 773);
+  ASSERT_EQ(0, result);
+#endif
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/SortedFramesCreateTest.py	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+
+import pprint
+import requests
+import sys
+
+if len(sys.argv) != 2:
+    print('Usage: %s [Orthanc series ID]' % sys.argv[0])
+    print('Example: %s 4d04593b-953ced51-87e93f11-ae4cf03c-25defdcd | xclip -selection c -t text/plain' % sys.argv[0])
+    exit(-1)
+
+SERIES = sys.argv[1]
+
+r = requests.get('http://localhost:8042/series/%s/study' % SERIES)
+r.raise_for_status()
+print('  // From patient %s' % r.json() ['PatientMainDicomTags']['PatientName'])
+
+r = requests.get('http://localhost:8042/series/%s' % SERIES)
+r.raise_for_status()
+
+first = True
+
+for instance in r.json() ['Instances']:
+    tags = requests.get('http://localhost:8042/instances/%s/tags?short' % instance)
+    tags.raise_for_status()
+
+    if first:
+        print('''
+  Orthanc::DicomMap tags;
+  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "%s", false);
+  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "%s", false);    
+  OrthancStone::SortedFrames f;
+''' % (tags.json() ['0020,000d'], tags.json() ['0020,000e']))
+        first = False
+   
+    print('  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "%s", false);' % instance)
+    
+    if '0020,0032' in tags.json():
+        print('  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "%s", false);' %
+              tags.json() ['0020,0032'].replace('\\', '\\\\'))
+    
+    if '0020,0037' in tags.json():
+        print('  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "%s", false);' %
+              tags.json() ['0020,0037'].replace('\\', '\\\\'))
+
+    if '0020,0013' in tags.json():
+        print('  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "%s", false);' %
+              tags.json() ['0020,0013'].replace('\\', '\\\\'))
+
+    if '0054,1330' in tags.json():
+        print('  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_INDEX, "%s", false);' %
+              tags.json() ['0054,1330'].replace('\\', '\\\\'))
+
+    print('  f.AddInstance(tags);')
+    
+print('  f.Sort();')
+
+r = requests.get('http://localhost:8042/series/%s/ordered-slices' % SERIES)
+r.raise_for_status()
+slices = r.json() ['SlicesShort']
+
+print('  ASSERT_EQ(%du, f.GetFramesCount());' % len(slices))
+
+for i in range(len(slices)):
+    print('  ASSERT_EQ(f.GetFrameSopInstanceUid(%d), "%s");' % (i, slices[i][0]))
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/SortedFramesTests.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,483 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include <gtest/gtest.h>
+
+#include "../Sources/Toolbox/SortedFrames.h"
+
+#include <OrthancException.h>
+
+
+TEST(SortedFrames, Basic)
+{
+  OrthancStone::SortedFrames f;
+  ASSERT_TRUE(f.GetStudyInstanceUid().empty());
+  ASSERT_TRUE(f.GetSeriesInstanceUid().empty());
+  ASSERT_EQ(0u, f.GetInstancesCount());
+  ASSERT_THROW(f.GetInstanceTags(0), Orthanc::OrthancException);
+  ASSERT_THROW(f.GetSopInstanceUid(0), Orthanc::OrthancException);
+  ASSERT_TRUE(f.IsSorted());
+  ASSERT_EQ(0u, f.GetFramesCount());
+  ASSERT_THROW(f.GetFrameTags(0), Orthanc::OrthancException);
+  ASSERT_THROW(f.GetFrameSopInstanceUid(0), Orthanc::OrthancException);
+  ASSERT_THROW(f.GetFrameSiblingsCount(0), Orthanc::OrthancException);
+  ASSERT_THROW(f.GetFrameIndex(0), Orthanc::OrthancException);
+
+  Orthanc::DicomMap tags;
+  ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException);
+  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false);
+  ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException);
+  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false);
+  ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop", false);
+  f.AddInstance(tags);
+
+  ASSERT_EQ("study", f.GetStudyInstanceUid());
+  ASSERT_EQ("series", f.GetSeriesInstanceUid());
+  ASSERT_EQ(1u, f.GetInstancesCount());
+  std::string s;
+  ASSERT_TRUE(f.GetInstanceTags(0).LookupStringValue(s, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false));
+  ASSERT_EQ("sop", s);
+  ASSERT_EQ("sop", f.GetSopInstanceUid(0));
+  ASSERT_FALSE(f.IsSorted());
+  ASSERT_THROW(f.GetFramesCount(), Orthanc::OrthancException);
+  ASSERT_THROW(f.GetFrameTags(0), Orthanc::OrthancException);
+  ASSERT_THROW(f.GetFrameSopInstanceUid(0), Orthanc::OrthancException);
+  ASSERT_THROW(f.GetFrameSiblingsCount(0), Orthanc::OrthancException);
+  ASSERT_THROW(f.GetFrameIndex(0), Orthanc::OrthancException);
+
+  f.Sort();
+  ASSERT_TRUE(f.IsSorted());
+  ASSERT_EQ(1u, f.GetFramesCount());
+  ASSERT_TRUE(f.GetFrameTags(0).LookupStringValue(s, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false));
+  ASSERT_EQ("sop", s);
+  ASSERT_EQ("sop", f.GetFrameSopInstanceUid(0));
+  ASSERT_EQ(1u, f.GetFrameSiblingsCount(0));
+  ASSERT_EQ(0u, f.GetFrameIndex(0));
+  ASSERT_THROW(f.GetFrameTags(1), Orthanc::OrthancException);
+}
+
+
+TEST(SortedFrames, SortSopInstanceUid)
+{
+  Orthanc::DicomMap tags;
+  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false);
+  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false);
+    
+  OrthancStone::SortedFrames f;
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false);
+  tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "1", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "3", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false);
+  tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "2", false);
+  f.AddInstance(tags);
+    
+  f.Sort();
+  ASSERT_EQ(3u, f.GetInstancesCount());
+  ASSERT_EQ("sop3", f.GetSopInstanceUid(0));
+  ASSERT_EQ("sop1", f.GetSopInstanceUid(1));
+  ASSERT_EQ("sop2", f.GetSopInstanceUid(2));
+  ASSERT_EQ(6u, f.GetFramesCount());
+  ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(0));  ASSERT_EQ(0u, f.GetFrameIndex(0));
+  ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(1));  ASSERT_EQ(1u, f.GetFrameIndex(1));
+  ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(2));  ASSERT_EQ(2u, f.GetFrameIndex(2));
+  ASSERT_EQ("sop2", f.GetFrameSopInstanceUid(3));  ASSERT_EQ(0u, f.GetFrameIndex(3));
+  ASSERT_EQ("sop2", f.GetFrameSopInstanceUid(4));  ASSERT_EQ(1u, f.GetFrameIndex(4));
+  ASSERT_EQ("sop3", f.GetFrameSopInstanceUid(5));  ASSERT_EQ(0u, f.GetFrameIndex(5));
+}
+
+
+TEST(SortedFrames, SortInstanceNumber)
+{
+  Orthanc::DicomMap tags;
+  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false);
+  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false);
+    
+  OrthancStone::SortedFrames f;
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "-20", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2a", false);
+  tags.Remove(Orthanc::DICOM_TAG_INSTANCE_NUMBER);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop4", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop5", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
+  f.AddInstance(tags);
+    
+  f.Sort();
+  ASSERT_EQ(6u, f.GetInstancesCount());
+  ASSERT_EQ("sop1", f.GetSopInstanceUid(0));
+  ASSERT_EQ("sop2", f.GetSopInstanceUid(1));
+  ASSERT_EQ("sop2a", f.GetSopInstanceUid(2));
+  ASSERT_EQ("sop4", f.GetSopInstanceUid(3));
+  ASSERT_EQ("sop3", f.GetSopInstanceUid(4));
+  ASSERT_EQ("sop5", f.GetSopInstanceUid(5));
+  ASSERT_EQ(6u, f.GetFramesCount());
+  ASSERT_EQ("sop2", f.GetFrameSopInstanceUid(0));  ASSERT_EQ(0u, f.GetFrameIndex(0));
+  ASSERT_EQ("sop3", f.GetFrameSopInstanceUid(1));  ASSERT_EQ(0u, f.GetFrameIndex(1));
+  ASSERT_EQ("sop4", f.GetFrameSopInstanceUid(2));  ASSERT_EQ(0u, f.GetFrameIndex(2));
+  ASSERT_EQ("sop5", f.GetFrameSopInstanceUid(3));  ASSERT_EQ(0u, f.GetFrameIndex(3));
+  ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(4));  ASSERT_EQ(0u, f.GetFrameIndex(4));
+  ASSERT_EQ("sop2a", f.GetFrameSopInstanceUid(5));  ASSERT_EQ(0u, f.GetFrameIndex(5));
+}
+
+
+TEST(SortedFrames, SortInstanceNumberAndImageIndex)
+{
+  Orthanc::DicomMap tags;
+  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false);
+  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false);
+    
+  OrthancStone::SortedFrames f;
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false);
+  tags.Remove(Orthanc::DICOM_TAG_INSTANCE_NUMBER);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_INDEX, "20", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_INDEX, "30", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop4", false);
+  tags.Remove(Orthanc::DICOM_TAG_IMAGE_INDEX);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "30", false);
+  f.AddInstance(tags);
+    
+  f.Sort();
+  ASSERT_EQ(4u, f.GetInstancesCount());
+  ASSERT_EQ("sop1", f.GetSopInstanceUid(0));
+  ASSERT_EQ("sop2", f.GetSopInstanceUid(1));
+  ASSERT_EQ("sop3", f.GetSopInstanceUid(2));
+  ASSERT_EQ("sop4", f.GetSopInstanceUid(3));
+  ASSERT_EQ(4u, f.GetFramesCount());
+  // First instance number, then image index
+  ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(0));  ASSERT_EQ(0u, f.GetFrameIndex(0));
+  ASSERT_EQ("sop4", f.GetFrameSopInstanceUid(1));  ASSERT_EQ(0u, f.GetFrameIndex(1));
+  ASSERT_EQ("sop2", f.GetFrameSopInstanceUid(2));  ASSERT_EQ(0u, f.GetFrameIndex(2));
+  ASSERT_EQ("sop3", f.GetFrameSopInstanceUid(3));  ASSERT_EQ(0u, f.GetFrameIndex(3));
+}
+
+
+TEST(SortedFrames, Knix)  // Created using "SortedFramesCreateTest.py"
+{
+  Orthanc::DicomMap tags;
+  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "1.2.840.113619.2.176.2025.1499492.7391.1171285944.390", false);
+  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "1.2.840.113619.2.176.2025.1499492.7391.1171285944.392", false);    
+  OrthancStone::SortedFrames f;
+
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "67b44a5e-8997f88d-6e527bd6-df342483-dab1674c", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-60.7285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "a8ee83f9-1cc26ad9-ebba3043-8afc47c2-bd784610", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-42.7285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "6", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "5a2acb03-063f5063-cac452d1-a55992f9-769900fb", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-114.729\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "22", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "23d12f39-e9a4fc21-8da338c4-97feff30-48e95534", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-83.2285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "15", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "16606f69-83b48518-ab34304a-c8871b7f-a9298d74", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-78.7285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "14", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "63d595f3-327a306d-1709bb8b-2a72e11c-4f7221fe", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-96.7285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "18", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "8bdecadd-e3477e28-bbbf0297-22b0b680-37b13a7c", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-65.2285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "11", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "b590cc95-55789755-ebd10b76-911e855e-f24e4fe7", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-74.2285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "13", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "eaa49a94-b9042041-7f45150b-e414f800-d7232874", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-38.2285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "5", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "6824db93-ed4e2740-07be953f-6d0a8fb3-af0a3a0b", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-105.729\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "e0d82343-9cef01e9-e21df50a-11886a94-1d0216ea", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-51.7285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "8", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "dc1576ee-25b0b1ef-e038df76-d296fcad-a1456169", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-110.229\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "21", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "b9cf5158-06f8e713-7d5111aa-411fd75b-7be2c51e", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-20.2285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "1", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "5faf886f-bd5517cf-1a6ba06e-ac0e6ddb-47bdd8b2", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-101.229\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "19", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "3e8f8ec1-b603f874-825552f1-6fcac7fa-72ca1aa5", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-24.7285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "2", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "7a7c0120-37f6dd58-c46312e6-2559975d-5af4616f", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-87.7285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "16", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "a0ca6802-56c697c3-0205bab8-42217cfc-84ff0de6", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-33.7285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "4", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "efce9ff4-3fe07d83-745846f8-fefe5d64-bfea65e6", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-56.2285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "9", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "fa56f961-d1ae8f6a-989c04f4-7a588e9e-b41b1a13", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-92.2285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "17", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "f5e889ac-c5afdc37-c5b62074-a8bdeef3-c58d9889", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-69.7285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "12", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "c19fb4b6-ad1224f2-2c3a2b28-0ea233be-38eea0de", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-47.2285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "7", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "348efc0a-71ee4758-56bd51fa-9703cbff-9b51d4c9", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-29.2285\\-105.586\\73.7768", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "3", false);
+  f.AddInstance(tags);
+  f.Sort();
+  ASSERT_EQ(22u, f.GetFramesCount());
+  ASSERT_EQ(f.GetFrameSopInstanceUid(0), "b9cf5158-06f8e713-7d5111aa-411fd75b-7be2c51e");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(1), "3e8f8ec1-b603f874-825552f1-6fcac7fa-72ca1aa5");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(2), "348efc0a-71ee4758-56bd51fa-9703cbff-9b51d4c9");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(3), "a0ca6802-56c697c3-0205bab8-42217cfc-84ff0de6");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(4), "eaa49a94-b9042041-7f45150b-e414f800-d7232874");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(5), "a8ee83f9-1cc26ad9-ebba3043-8afc47c2-bd784610");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(6), "c19fb4b6-ad1224f2-2c3a2b28-0ea233be-38eea0de");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(7), "e0d82343-9cef01e9-e21df50a-11886a94-1d0216ea");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(8), "efce9ff4-3fe07d83-745846f8-fefe5d64-bfea65e6");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(9), "67b44a5e-8997f88d-6e527bd6-df342483-dab1674c");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(10), "8bdecadd-e3477e28-bbbf0297-22b0b680-37b13a7c");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(11), "f5e889ac-c5afdc37-c5b62074-a8bdeef3-c58d9889");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(12), "b590cc95-55789755-ebd10b76-911e855e-f24e4fe7");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(13), "16606f69-83b48518-ab34304a-c8871b7f-a9298d74");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(14), "23d12f39-e9a4fc21-8da338c4-97feff30-48e95534");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(15), "7a7c0120-37f6dd58-c46312e6-2559975d-5af4616f");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(16), "fa56f961-d1ae8f6a-989c04f4-7a588e9e-b41b1a13");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(17), "63d595f3-327a306d-1709bb8b-2a72e11c-4f7221fe");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(18), "5faf886f-bd5517cf-1a6ba06e-ac0e6ddb-47bdd8b2");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(19), "6824db93-ed4e2740-07be953f-6d0a8fb3-af0a3a0b");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(20), "dc1576ee-25b0b1ef-e038df76-d296fcad-a1456169");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(21), "5a2acb03-063f5063-cac452d1-a55992f9-769900fb");
+}
+
+
+TEST(SortedFrames, Cardiac)  // Created using "SortedFramesCreateTest.py"
+{
+  Orthanc::DicomMap tags;
+  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "1.3.51.0.1.1.192.168.29.133.1681753.1681732", false);
+  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "1.3.12.2.1107.5.2.33.37097.2012041612474981424569674.0.0.0", false);    
+  OrthancStone::SortedFrames f;
+
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "a468da62-a8a6e0b9-f66b86b0-b15fa30b-93077161", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "14", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "1cf40ac9-e823e677-cbd5db4b-9e48b451-cccbf950", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "21", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "d52d5f21-54f1ad99-4015a995-108f7210-ee157944", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "15", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "b348f629-11d59f98-fb22710b-4964b90a-f44436ff", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "12", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "aac4f2ba-e863f124-6af96709-053258a7-3d39db26", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "13", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "8fefe14c-c4c34152-2c3d3514-04e75747-eb7f01f0", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "20b42f52-6d5f784b-cdbc0fbe-4bfc6b0c-5a199c75", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "17", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "931d0c36-8fbb4101-70e6d756-edb15431-aaa9a31b", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "19", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "9e3b97ec-25b86a67-2cbb8f77-94e73268-4509d383", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "caa62568-fdf894fe-08f830a2-5a468967-681d954b", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "18", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "e734c170-96b0a397-95e3b43e-d7a5ed74-025843c8", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "22", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "efc9f411-9f4294e0-66d292a1-b8b6b421-897f1d80", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "11", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "8346a1db-0b08a22b-9045aaad-57098aac-5b2e9159", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "16", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "8c7d1e4d-7936f799-c4b8b56b-32d0d9a6-2b492e98", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "3", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "faec09f9-ca7fe0f0-2b25c370-bb1bfaef-8ccfa560", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "4", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "99c20bcc-115ae447-84d616f2-cb6c5576-9f67aa7a", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "23", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "7906b806-47190031-72c5043c-d42704c1-688a3b23", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "9", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "c9dfc022-7b377063-08bdc5e8-fedcc463-8de22ee6", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "6", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "6570b6c0-7d2f324d-db7cad50-843f62df-d0446352", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "5", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "0be36fe7-6c7a762b-281cf109-fff9d8ea-42e16b7a", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "7", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "ec282396-a8209d00-1c5091f3-f632bf3d-a1bcebba", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "8", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "fda415d4-f1429b07-5d1cd9f0-675059ff-c0ce9e67", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "1", false);
+  f.AddInstance(tags);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "f555ef96-6b01a90c-bdc2585a-dd17bb3a-75e89920", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
+  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "2", false);
+  f.AddInstance(tags);
+  f.Sort();
+  ASSERT_EQ(23u, f.GetFramesCount());
+  ASSERT_EQ(f.GetFrameSopInstanceUid(0), "fda415d4-f1429b07-5d1cd9f0-675059ff-c0ce9e67");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(1), "f555ef96-6b01a90c-bdc2585a-dd17bb3a-75e89920");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(2), "8c7d1e4d-7936f799-c4b8b56b-32d0d9a6-2b492e98");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(3), "faec09f9-ca7fe0f0-2b25c370-bb1bfaef-8ccfa560");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(4), "6570b6c0-7d2f324d-db7cad50-843f62df-d0446352");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(5), "c9dfc022-7b377063-08bdc5e8-fedcc463-8de22ee6");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(6), "0be36fe7-6c7a762b-281cf109-fff9d8ea-42e16b7a");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(7), "ec282396-a8209d00-1c5091f3-f632bf3d-a1bcebba");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(8), "7906b806-47190031-72c5043c-d42704c1-688a3b23");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(9), "9e3b97ec-25b86a67-2cbb8f77-94e73268-4509d383");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(10), "efc9f411-9f4294e0-66d292a1-b8b6b421-897f1d80");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(11), "b348f629-11d59f98-fb22710b-4964b90a-f44436ff");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(12), "aac4f2ba-e863f124-6af96709-053258a7-3d39db26");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(13), "a468da62-a8a6e0b9-f66b86b0-b15fa30b-93077161");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(14), "d52d5f21-54f1ad99-4015a995-108f7210-ee157944");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(15), "8346a1db-0b08a22b-9045aaad-57098aac-5b2e9159");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(16), "20b42f52-6d5f784b-cdbc0fbe-4bfc6b0c-5a199c75");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(17), "caa62568-fdf894fe-08f830a2-5a468967-681d954b");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(18), "931d0c36-8fbb4101-70e6d756-edb15431-aaa9a31b");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(19), "8fefe14c-c4c34152-2c3d3514-04e75747-eb7f01f0");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(20), "1cf40ac9-e823e677-cbd5db4b-9e48b451-cccbf950");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(21), "e734c170-96b0a397-95e3b43e-d7a5ed74-025843c8");
+  ASSERT_EQ(f.GetFrameSopInstanceUid(22), "99c20bcc-115ae447-84d616f2-cb6c5576-9f67aa7a");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/TestCommands.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,108 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include <gtest/gtest.h>
+
+//#include "../Applications/Commands/BaseCommandFactory.h"
+//#include "OrthancException.h"
+
+//class CommandIncrement: public OrthancStone::BaseCommand<CommandIncrement>
+//{
+//public:
+//  static int counter;
+//  int increment_;
+//public:
+//  CommandIncrement()
+//    : OrthancStone::BaseCommand<CommandIncrement>("increment"),
+//      increment_(0)
+//  {}
+
+//  virtual void Execute()
+//  {
+//    counter += increment_;
+//  }
+//  virtual void Configure(const Json::Value& arguments)
+//  {
+//    increment_ = arguments["increment"].asInt();
+//  }
+//};
+
+//// COMMAND("name", "arg1", "int", "arg2", "string")
+//// COMMAND(name, arg1, arg2)
+
+
+//int CommandIncrement::counter = 0;
+
+//TEST(Commands, CreateNoop)
+//{
+//  OrthancStone::BaseCommandFactory factory;
+
+//  factory.RegisterCommandClass<OrthancStone::NoopCommand>();
+
+//  Json::Value cmdJson;
+//  cmdJson["command"] = "noop";
+
+//  std::unique_ptr<OrthancStone::ICommand> command(factory.CreateFromJson(cmdJson));
+
+//  ASSERT_TRUE(command.get() != NULL);
+//  ASSERT_EQ("noop", command->GetName());
+//}
+
+//TEST(Commands, Execute)
+//{
+//  OrthancStone::BaseCommandFactory factory;
+
+//  factory.RegisterCommandClass<OrthancStone::NoopCommand>();
+//  factory.RegisterCommandClass<CommandIncrement>();
+
+//  Json::Value cmdJson;
+//  cmdJson["command"] = "increment";
+//  cmdJson["args"]["increment"] = 2;
+
+//  std::unique_ptr<OrthancStone::ICommand> command(factory.CreateFromJson(cmdJson));
+
+//  ASSERT_TRUE(command.get() != NULL);
+//  CommandIncrement::counter = 0;
+//  command->Execute();
+//  ASSERT_EQ(2, CommandIncrement::counter);
+//}
+
+//TEST(Commands, TryCreateUnknowCommand)
+//{
+//  OrthancStone::BaseCommandFactory factory;
+//  factory.RegisterCommandClass<OrthancStone::NoopCommand>();
+
+//  Json::Value cmdJson;
+//  cmdJson["command"] = "unknown";
+
+//  ASSERT_THROW(std::unique_ptr<OrthancStone::ICommand> command(factory.CreateFromJson(cmdJson)), Orthanc::OrthancException);
+//}
+
+//TEST(Commands, TryCreateCommandFromInvalidJson)
+//{
+//  OrthancStone::BaseCommandFactory factory;
+//  factory.RegisterCommandClass<OrthancStone::NoopCommand>();
+
+//  Json::Value cmdJson;
+//  cmdJson["command-name"] = "noop";
+
+//  ASSERT_THROW(std::unique_ptr<OrthancStone::ICommand> command(factory.CreateFromJson(cmdJson)), Orthanc::OrthancException);
+//}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/TestMessageBroker.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,104 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include <gtest/gtest.h>
+
+#include "../Sources/Messages/IObservable.h"
+#include "../Sources/Messages/ObserverBase.h"
+
+
+int testCounter = 0;
+namespace {
+
+  using namespace OrthancStone;
+
+
+  class MyObservable : public IObservable
+  {
+  public:
+    struct MyCustomMessage : public IMessage
+    {
+      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
+
+      int payload_;
+
+      MyCustomMessage(int payload) :
+        payload_(payload)
+      {
+      }
+    };
+  };
+
+  class MyObserver : public ObserverBase<MyObserver>
+  {
+  public:
+    void HandleCompletedMessage(const MyObservable::MyCustomMessage& message)
+    {
+      testCounter += message.payload_;
+    }
+  };
+}
+
+
+TEST(MessageBroker, TestPermanentConnectionSimpleUseCase)
+{
+  MyObservable  observable;
+  boost::shared_ptr<MyObserver>  observer(new MyObserver);
+
+  // create a permanent connection between an observable and an observer
+  observer->Register<MyObservable::MyCustomMessage>(observable, &MyObserver::HandleCompletedMessage);
+
+  testCounter = 0;
+  observable.BroadcastMessage(MyObservable::MyCustomMessage(12));
+  ASSERT_EQ(12, testCounter);
+
+  // the connection is permanent; if we emit the same message again, the observer will be notified again
+  testCounter = 0;
+  observable.BroadcastMessage(MyObservable::MyCustomMessage(20));
+  ASSERT_EQ(20, testCounter);
+
+  // Unregister the observer; make sure it's not called anymore
+  observer.reset();
+  testCounter = 0;
+  observable.BroadcastMessage(MyObservable::MyCustomMessage(20));
+  ASSERT_EQ(0, testCounter);
+}
+
+TEST(MessageBroker, TestPermanentConnectionDeleteObserver)
+{
+  MyObservable  observable;
+  boost::shared_ptr<MyObserver>  observer(new MyObserver);
+
+  // create a permanent connection between an observable and an observer
+  observer->Register<MyObservable::MyCustomMessage>(observable, &MyObserver::HandleCompletedMessage);
+
+  testCounter = 0;
+  observable.BroadcastMessage(MyObservable::MyCustomMessage(12));
+  ASSERT_EQ(12, testCounter);
+
+  // delete the observer and check that the callback is not called anymore
+  observer.reset();
+
+  // the connection is permanent; if we emit the same message again, the observer will be notified again
+  testCounter = 0;
+  observable.BroadcastMessage(MyObservable::MyCustomMessage(20));
+  ASSERT_EQ(0, testCounter);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/TestStrategy.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,391 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include <gtest/gtest.h>
+
+#include "../Sources/Loaders/BasicFetchingStrategy.h"
+#include "../Sources/Loaders/BasicFetchingItemsSorter.h"
+
+#include <OrthancException.h>
+
+
+namespace
+{
+  class StrategyTester : public boost::noncopyable
+  {
+  private:
+    std::map<unsigned int, unsigned int>  qualities_;
+
+  public:
+    bool IsValidCommand(unsigned int item,
+                        unsigned int quality)
+    {
+      if (qualities_.find(item) != qualities_.end() &&
+          qualities_[item] >= quality)
+      {
+        return false;
+      }
+      else
+      {
+        qualities_[item] = quality;
+        return true;
+      }
+    }
+
+    bool HasFinished(OrthancStone::BasicFetchingStrategy& strategy)
+    {
+      for (unsigned int i = 0; i < strategy.GetItemsCount(); i++)
+      {
+        if (qualities_.find(i) == qualities_.end() ||
+            qualities_[i] != strategy.GetMaxQuality())
+        {
+          return false;
+        }
+      }
+
+      return true;
+    }
+  };
+}
+
+
+TEST(BasicFetchingStrategy, Test1)
+{
+  ASSERT_THROW(OrthancStone::BasicFetchingStrategy(NULL, 0), Orthanc::OrthancException);
+  ASSERT_THROW(OrthancStone::BasicFetchingStrategy(new OrthancStone::BasicFetchingItemsSorter(0), 0), Orthanc::OrthancException);
+
+  {
+    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(1), 0);
+    unsigned int i, q;
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(0u, q);
+    ASSERT_FALSE(s.GetNext(i, q));
+  }
+
+  {
+    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(1), 5);
+    unsigned int i, q;
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(5u, q);
+    ASSERT_FALSE(s.GetNext(i, q));
+  }
+
+  {
+    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(2), 2);
+    unsigned int i, q;
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(2u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(1u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(2u, q);
+    ASSERT_FALSE(s.GetNext(i, q));
+  }
+
+  {
+    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(3), 2);
+    unsigned int i, q;
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(2u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(1u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(1u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(2u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(2u, q);
+    ASSERT_FALSE(s.GetNext(i, q));
+  }
+
+  {
+    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(3), 2);
+    s.SetBlockSize(1);
+    s.SetCurrent(0);
+    unsigned int i, q;
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(2u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(1u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(2u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(0u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(1u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(2u, q);
+    ASSERT_FALSE(s.GetNext(i, q));
+  }
+
+  {
+    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(5), 0);
+    ASSERT_THROW(s.SetCurrent(5), Orthanc::OrthancException);
+    s.SetCurrent(2);
+
+    unsigned int i, q;
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(0u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(3u, i);  ASSERT_EQ(0u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(0u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(4u, i);  ASSERT_EQ(0u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(0u, q);
+    ASSERT_FALSE(s.GetNext(i, q));
+  }
+
+  {
+    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(5), 0);
+    s.SetCurrent(4);
+
+    unsigned int i, q;
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(4u, i);  ASSERT_EQ(0u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(3u, i);  ASSERT_EQ(0u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(0u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(0u, q);
+    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(0u, q);
+    ASSERT_FALSE(s.GetNext(i, q));
+  }
+}
+
+
+TEST(BasicFetchingStrategy, Test2)
+{
+  OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(20), 2);
+  ASSERT_EQ(20u, s.GetItemsCount());
+  ASSERT_EQ(2u, s.GetMaxQuality());
+
+  StrategyTester t;
+
+  s.SetCurrent(10);
+
+  unsigned int i, q;
+  while (s.GetNext(i, q))
+  {
+    ASSERT_TRUE(t.IsValidCommand(i, q));
+  }
+
+  ASSERT_TRUE(t.HasFinished(s));
+}
+
+
+
+
+TEST(BasicFetchingItemsSorter, Small)
+{
+  ASSERT_THROW(OrthancStone::BasicFetchingItemsSorter(0), Orthanc::OrthancException);
+  std::vector<unsigned int> v;
+
+  {
+    OrthancStone::BasicFetchingItemsSorter s(1);
+    s.Sort(v, 0);
+    ASSERT_EQ(1u, v.size());
+    ASSERT_EQ(0u, v[0]);
+
+    ASSERT_THROW(s.Sort(v, 1), Orthanc::OrthancException);
+  }
+
+  {
+    OrthancStone::BasicFetchingItemsSorter s(2);
+    s.Sort(v, 0);
+    ASSERT_EQ(2u, v.size());
+    ASSERT_EQ(0u, v[0]);
+    ASSERT_EQ(1u, v[1]);
+
+    s.Sort(v, 1);
+    ASSERT_EQ(2u, v.size());
+    ASSERT_EQ(1u, v[0]);
+    ASSERT_EQ(0u, v[1]);
+
+    ASSERT_THROW(s.Sort(v, 2), Orthanc::OrthancException);
+  }
+
+  {
+    OrthancStone::BasicFetchingItemsSorter s(3);
+    s.Sort(v, 0);
+    ASSERT_EQ(3u, v.size());
+    ASSERT_EQ(0u, v[0]);
+    ASSERT_EQ(1u, v[1]);
+    ASSERT_EQ(2u, v[2]);
+    
+    s.Sort(v, 1);
+    ASSERT_EQ(3u, v.size());
+    ASSERT_EQ(1u, v[0]);
+    ASSERT_EQ(2u, v[1]);
+    ASSERT_EQ(0u, v[2]);
+    
+    s.Sort(v, 2);
+    ASSERT_EQ(3u, v.size());
+    ASSERT_EQ(2u, v[0]);
+    ASSERT_EQ(1u, v[1]);
+    ASSERT_EQ(0u, v[2]);
+    
+    ASSERT_THROW(s.Sort(v, 3), Orthanc::OrthancException);
+  }
+}
+
+
+TEST(BasicFetchingItemsSorter, Odd)
+{
+  OrthancStone::BasicFetchingItemsSorter s(7);
+  std::vector<unsigned int> v;
+
+  ASSERT_THROW(s.Sort(v, 7), Orthanc::OrthancException);
+
+  {
+    s.Sort(v, 0);
+    ASSERT_EQ(7u, v.size());
+    ASSERT_EQ(0u, v[0]);
+    ASSERT_EQ(1u, v[1]);
+    ASSERT_EQ(2u, v[2]);
+    ASSERT_EQ(3u, v[3]);
+    ASSERT_EQ(4u, v[4]);
+    ASSERT_EQ(5u, v[5]);
+    ASSERT_EQ(6u, v[6]);
+  }
+
+  {
+    s.Sort(v, 1);
+    ASSERT_EQ(7u, v.size());
+    ASSERT_EQ(1u, v[0]);
+    ASSERT_EQ(2u, v[1]);
+    ASSERT_EQ(0u, v[2]);
+    ASSERT_EQ(3u, v[3]);
+    ASSERT_EQ(4u, v[4]);
+    ASSERT_EQ(5u, v[5]);
+    ASSERT_EQ(6u, v[6]);
+  }
+
+  {
+    s.Sort(v, 2);
+    ASSERT_EQ(7u, v.size());
+    ASSERT_EQ(2u, v[0]);
+    ASSERT_EQ(3u, v[1]);
+    ASSERT_EQ(1u, v[2]);
+    ASSERT_EQ(4u, v[3]);
+    ASSERT_EQ(0u, v[4]);
+    ASSERT_EQ(5u, v[5]);
+    ASSERT_EQ(6u, v[6]);
+  }
+
+  {
+    s.Sort(v, 3);
+    ASSERT_EQ(7u, v.size());
+    ASSERT_EQ(3u, v[0]);
+    ASSERT_EQ(4u, v[1]);
+    ASSERT_EQ(2u, v[2]);
+    ASSERT_EQ(5u, v[3]);
+    ASSERT_EQ(1u, v[4]);
+    ASSERT_EQ(6u, v[5]);
+    ASSERT_EQ(0u, v[6]);
+  }
+
+  {
+    s.Sort(v, 4);
+    ASSERT_EQ(7u, v.size());
+    ASSERT_EQ(4u, v[0]);
+    ASSERT_EQ(5u, v[1]);
+    ASSERT_EQ(3u, v[2]);
+    ASSERT_EQ(6u, v[3]);
+    ASSERT_EQ(2u, v[4]);
+    ASSERT_EQ(1u, v[5]);
+    ASSERT_EQ(0u, v[6]);
+  }
+
+  {
+    s.Sort(v, 5);
+    ASSERT_EQ(7u, v.size());
+    ASSERT_EQ(5u, v[0]);
+    ASSERT_EQ(6u, v[1]);
+    ASSERT_EQ(4u, v[2]);
+    ASSERT_EQ(3u, v[3]);
+    ASSERT_EQ(2u, v[4]);
+    ASSERT_EQ(1u, v[5]);
+    ASSERT_EQ(0u, v[6]);
+  }
+
+  {
+    s.Sort(v, 6);
+    ASSERT_EQ(7u, v.size());
+    ASSERT_EQ(6u, v[0]);
+    ASSERT_EQ(5u, v[1]);
+    ASSERT_EQ(4u, v[2]);
+    ASSERT_EQ(3u, v[3]);
+    ASSERT_EQ(2u, v[4]);
+    ASSERT_EQ(1u, v[5]);
+    ASSERT_EQ(0u, v[6]);
+  }
+}
+
+
+TEST(BasicFetchingItemsSorter, Even)
+{
+  OrthancStone::BasicFetchingItemsSorter s(6);
+  std::vector<unsigned int> v;
+
+  {
+    s.Sort(v, 0);
+    ASSERT_EQ(6u, v.size());
+    ASSERT_EQ(0u, v[0]);
+    ASSERT_EQ(1u, v[1]);
+    ASSERT_EQ(2u, v[2]);
+    ASSERT_EQ(3u, v[3]);
+    ASSERT_EQ(4u, v[4]);
+    ASSERT_EQ(5u, v[5]);
+  }
+
+  {
+    s.Sort(v, 1);
+    ASSERT_EQ(6u, v.size());
+    ASSERT_EQ(1u, v[0]);
+    ASSERT_EQ(2u, v[1]);
+    ASSERT_EQ(0u, v[2]);
+    ASSERT_EQ(3u, v[3]);
+    ASSERT_EQ(4u, v[4]);
+    ASSERT_EQ(5u, v[5]);
+  }
+
+  {
+    s.Sort(v, 2);
+    ASSERT_EQ(6u, v.size());
+    ASSERT_EQ(2u, v[0]);
+    ASSERT_EQ(3u, v[1]);
+    ASSERT_EQ(1u, v[2]);
+    ASSERT_EQ(4u, v[3]);
+    ASSERT_EQ(0u, v[4]);
+    ASSERT_EQ(5u, v[5]);
+  }
+
+  {
+    s.Sort(v, 3);
+    ASSERT_EQ(6u, v.size());
+    ASSERT_EQ(3u, v[0]);
+    ASSERT_EQ(4u, v[1]);
+    ASSERT_EQ(2u, v[2]);
+    ASSERT_EQ(5u, v[3]);
+    ASSERT_EQ(1u, v[4]);
+    ASSERT_EQ(0u, v[5]);
+  }
+
+  {
+    s.Sort(v, 4);
+    ASSERT_EQ(6u, v.size());
+    ASSERT_EQ(4u, v[0]);
+    ASSERT_EQ(5u, v[1]);
+    ASSERT_EQ(3u, v[2]);
+    ASSERT_EQ(2u, v[3]);
+    ASSERT_EQ(1u, v[4]);
+    ASSERT_EQ(0u, v[5]);
+  }
+
+  {
+    s.Sort(v, 5);
+    ASSERT_EQ(6u, v.size());
+    ASSERT_EQ(5u, v[0]);
+    ASSERT_EQ(4u, v[1]);
+    ASSERT_EQ(3u, v[2]);
+    ASSERT_EQ(2u, v[3]);
+    ASSERT_EQ(1u, v[4]);
+    ASSERT_EQ(0u, v[5]);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/TestStructureSet.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,5770 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+// working around a bug where the Visual C++ compiler would get 
+// stuck trying to compile this cpp file in release mode
+// (versions: https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B)
+#ifdef _MSC_VER
+#  pragma optimize("", off)
+// warning C4748: /GS can not protect parameters and local variables from
+// local buffer overrun because optimizations are disabled in function
+#  pragma warning(disable: 4748)
+#endif
+
+#include "../Sources/Loaders/DicomStructureSetLoader.h"
+#include "../Sources/Loaders/GenericLoadersContext.h"
+#include "../Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
+#include "../Sources/Toolbox/DicomStructureSet2.h"
+#include "../Sources/Toolbox/DicomStructureSetUtils.h"
+#include "../Sources/Toolbox/DisjointDataSet.h"
+
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/make_shared.hpp>
+
+#include <SystemToolbox.h>
+
+#include <gtest/gtest.h>
+#include <string>
+
+using namespace Orthanc;
+using namespace OrthancStone;
+
+/*
+The following string is the reply to the following Orthanc request:
+
+http://localhost:8042/instances/1aa5f84b-c32a03b4-3c1857da-da2e69f3-3ef6e2b3/tags?ignore-length=3006-0050
+
+The tag hierarchy can be found here: https://dicom.innolitics.com/ciods/rt-dose
+*/
+
+const double DELTA_MAX = 10.0 * std::numeric_limits<float>::epsilon();
+
+#ifdef _MSC_VER
+#pragma region BigJsonString
+#endif
+// _MSC_VER
+const char* k_rtStruct_json00 =
+"{\n"
+"   \"0008,0005\" : {\n"
+"      \"Name\" : \"SpecificCharacterSet\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"ISO_IR 100\"\n"
+"   },\n"
+"   \"0008,0012\" : {\n"
+"      \"Name\" : \"InstanceCreationDate\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"20190318\"\n"
+"   },\n"
+"   \"0008,0013\" : {\n"
+"      \"Name\" : \"InstanceCreationTime\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"182529\"\n"
+"   },\n"
+"   \"0008,0016\" : {\n"
+"      \"Name\" : \"SOPClassUID\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"1.2.840.10008.5.1.4.1.1.481.3\"\n"
+"   },\n"
+"   \"0008,0018\" : {\n"
+"      \"Name\" : \"SOPInstanceUID\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"1.2.752.243.1.1.20190318182529549.3500.4285482120751\"\n"
+"   },\n"
+"   \"0008,0020\" : {\n"
+"      \"Name\" : \"StudyDate\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"20190225\"\n"
+"   },\n"
+"   \"0008,0030\" : {\n"
+"      \"Name\" : \"StudyTime\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"135152\"\n"
+"   },\n"
+"   \"0008,0050\" : {\n"
+"      \"Name\" : \"AccessionNumber\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"897154\"\n"
+"   },\n"
+"   \"0008,0060\" : {\n"
+"      \"Name\" : \"Modality\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"RTSTRUCT\"\n"
+"   },\n"
+"   \"0008,0070\" : {\n"
+"      \"Name\" : \"Manufacturer\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"RaySearch Laboratories\"\n"
+"   },\n"
+"   \"0008,0090\" : {\n"
+"      \"Name\" : \"ReferringPhysicianName\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"\"\n"
+"   },\n"
+"   \"0008,1030\" : {\n"
+"      \"Name\" : \"StudyDescription\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"CT ohne KM\"\n"
+"   },\n"
+"   \"0008,103e\" : {\n"
+"      \"Name\" : \"SeriesDescription\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"RS: Approved Structure Set\"\n"
+"   },\n"
+"   \"0008,1070\" : {\n"
+"      \"Name\" : \"OperatorsName\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"\"\n"
+"   },\n"
+"   \"0008,1090\" : {\n"
+"      \"Name\" : \"ManufacturerModelName\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"RayStation\"\n"
+"   },\n"
+"   \"0010,0010\" : {\n"
+"      \"Name\" : \"PatientName\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"Karamazov^Serge\"\n"
+"   },\n"
+"   \"0010,0020\" : {\n"
+"      \"Name\" : \"PatientID\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"66498\"\n"
+"   },\n"
+"   \"0010,0030\" : {\n"
+"      \"Name\" : \"PatientBirthDate\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"19630511\"\n"
+"   },\n"
+"   \"0010,0040\" : {\n"
+"      \"Name\" : \"PatientSex\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"F\"\n"
+"   },\n"
+"   \"0018,1020\" : {\n"
+"      \"Name\" : \"SoftwareVersions\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"7.0.0.19 (Dicom Export)\"\n"
+"   },\n"
+"   \"0020,000d\" : {\n"
+"      \"Name\" : \"StudyInstanceUID\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"1.2.840.113854.1977802846882851650617130240362685394\"\n"
+"   },\n"
+"   \"0020,000e\" : {\n"
+"      \"Name\" : \"SeriesInstanceUID\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"1.2.752.243.1.1.20190318182529549.3582165\"\n"
+"   },\n"
+"   \"0020,0010\" : {\n"
+"      \"Name\" : \"StudyID\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"467\"\n"
+"   },\n"
+"   \"0020,0011\" : {\n"
+"      \"Name\" : \"SeriesNumber\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"1\"\n"
+"   },\n"
+"   \"0020,0052\" : {\n"
+"      \"Name\" : \"FrameOfReferenceUID\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965689415626\"\n"
+"   },\n"
+"   \"0020,1040\" : {\n"
+"      \"Name\" : \"PositionReferenceIndicator\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"\"\n"
+"   },\n"
+"   \"3006,0002\" : {\n"
+"      \"Name\" : \"StructureSetLabel\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"RS: Approved\"\n"
+"   },\n"
+"   \"3006,0008\" : {\n"
+"      \"Name\" : \"StructureSetDate\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"20190318\"\n"
+"   },\n"
+"   \"3006,0009\" : {\n"
+"      \"Name\" : \"StructureSetTime\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"182529\"\n"
+"   },\n"
+"   \"3006,0010\" : {\n"
+"      \"Name\" : \"ReferencedFrameOfReferenceSequence\",\n"
+"      \"Type\" : \"Sequence\",\n"
+"      \"Value\" : [\n"
+"         {\n"
+"            \"0020,0052\" : {\n"
+"               \"Name\" : \"FrameOfReferenceUID\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.47019656894156\"\n"
+"            },\n"
+"            \"3006,0012\" : {\n"
+"               \"Name\" : \"RTReferencedStudySequence\",\n"
+"               \"Type\" : \"Sequence\",\n"
+"               \"Value\" : [\n"
+"                  {\n"
+"                     \"0008,1150\" : {\n"
+"                        \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"1.2.840.10008.3.1.2.3.1\"\n"
+"                     },\n"
+"                     \"0008,1155\" : {\n"
+"                        \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"1.2.840.113854.1977802846882851650617130240362685\"\n"
+"                     },\n"
+"                     \"3006,0014\" : {\n"
+"                        \"Name\" : \"RTReferencedSeriesSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0020,000e\" : {\n"
+"                                 \"Name\" : \"SeriesInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.752.243.1.1.20190318182529549.3582165\"\n"
+"                              },\n"
+"                              \"3006,0016\" : {\n"
+"                                 \"Name\" : \"ContourImageSequence\",\n"
+"                                 \"Type\" : \"Sequence\",\n"
+"                                 \"Value\" : [\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699846442461900001.533642576430\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699846477463900001.467218939844\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699846504465400001.571321740640\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699846528466800001.465226999207\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848817597700001.509440095881\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848849599600001.538291679804\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848866600500001.541849142008\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848890601900001.533619501923\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848911603100001.549938975401\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848933604400001.474954755728\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848957605700001.539833993627\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848978606900001.507522632828\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851016723500001.512636853846\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851035724600001.533642609670\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851068726500001.546012551665\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851092727900001.507332422180\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851113729100001.470312254320\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851133730200001.543478973601\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851156731500001.532752123275\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851179732800001.515857303411\"\n"
+"                                       }\n"
+"                                    },\n"
+"                                    {\n"
+"                                       \"0008,1150\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                                       },\n"
+"                                       \"0008,1155\" : {\n"
+"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                          \"Type\" : \"String\",\n"
+"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851194733700001.468081152243\"\n"
+"                                       }\n"
+"                                    }\n"
+"                                 ]\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     }\n"
+"                  }\n"
+"               ]\n"
+"            }\n"
+"         }\n"
+"      ]\n"
+"   },\n"
+"   \"3006,0020\" : {\n"
+"      \"Name\" : \"StructureSetROISequence\",\n"
+"      \"Type\" : \"Sequence\",\n"
+"      \"Value\" : [\n"
+"         {\n"
+"            \"3006,0022\" : {\n"
+"               \"Name\" : \"ROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1\"\n"
+"            },\n"
+"            \"3006,0024\" : {\n"
+"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
+"            },\n"
+"            \"3006,0026\" : {\n"
+"               \"Name\" : \"ROIName\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"LN300\"\n"
+"            },\n"
+"            \"3006,0036\" : {\n"
+"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"SEMIAUTOMATIC\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0022\" : {\n"
+"               \"Name\" : \"ROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"2\"\n"
+"            },\n"
+"            \"3006,0024\" : {\n"
+"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
+"            },\n"
+"            \"3006,0026\" : {\n"
+"               \"Name\" : \"ROIName\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"Cortical Bone\"\n"
+"            },\n"
+"            \"3006,0036\" : {\n"
+"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"SEMIAUTOMATIC\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0022\" : {\n"
+"               \"Name\" : \"ROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"3\"\n"
+"            },\n"
+"            \"3006,0024\" : {\n"
+"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
+"            },\n"
+"            \"3006,0026\" : {\n"
+"               \"Name\" : \"ROIName\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"Adipose\"\n"
+"            },\n"
+"            \"3006,0036\" : {\n"
+"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"SEMIAUTOMATIC\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0022\" : {\n"
+"               \"Name\" : \"ROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"4\"\n"
+"            },\n"
+"            \"3006,0024\" : {\n"
+"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
+"            },\n"
+"            \"3006,0026\" : {\n"
+"               \"Name\" : \"ROIName\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"CB2-50%\"\n"
+"            },\n"
+"            \"3006,0036\" : {\n"
+"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"SEMIAUTOMATIC\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0022\" : {\n"
+"               \"Name\" : \"ROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"5\"\n"
+"            },\n"
+"            \"3006,0024\" : {\n"
+"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
+"            },\n"
+"            \"3006,0026\" : {\n"
+"               \"Name\" : \"ROIName\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"Water\"\n"
+"            },\n"
+"            \"3006,0036\" : {\n"
+"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"SEMIAUTOMATIC\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0022\" : {\n"
+"               \"Name\" : \"ROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"10\"\n"
+"            },\n"
+"            \"3006,0024\" : {\n"
+"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
+"            },\n"
+"            \"3006,0026\" : {\n"
+"               \"Name\" : \"ROIName\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"External\"\n"
+"            },\n"
+"            \"3006,0036\" : {\n"
+"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"SEMIAUTOMATIC\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0022\" : {\n"
+"               \"Name\" : \"ROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"11\"\n"
+"            },\n"
+"            \"3006,0024\" : {\n"
+"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
+"            },\n"
+"            \"3006,0026\" : {\n"
+"               \"Name\" : \"ROIName\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"PTV\"\n"
+"            },\n"
+"            \"3006,0036\" : {\n"
+"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"SEMIAUTOMATIC\"\n"
+"            }\n"
+"         }\n"
+"      ]\n"
+"   },\n"
+"   \"3006,0039\" : {\n"
+"      \"Name\" : \"ROIContourSequence\",\n"
+"      \"Type\" : \"Sequence\",\n"
+"      \"Value\" : [\n"
+"         {\n"
+"            \"3006,002a\" : {\n"
+"               \"Name\" : \"ROIDisplayColor\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"255\\\\0\\\\0\"\n"
+"            },\n"
+"            \"3006,0040\" : {\n"
+"               \"Name\" : \"ContourSequence\",\n"
+"               \"Type\" : \"Sequence\",\n"
+"               \"Value\" : [\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"0\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"7.657838\\\\108.2725\\\\304.01\\\\6.826687\\\\107.4413\\\\304.01\\\\6.152492\\\\106.4785\\\\304.01\\\\5.655735\\\\105.4132\\\\304.01\\\\5.351513\\\\104.2778\\\\304.01\\\\5.249068\\\\103.1069\\\\304.01\\\\5.351513\\\\101.9359\\\\304.01\\\\5.655735\\\\100.8005\\\\304.01\\\\6.152492\\\\99.73524\\\\304.01\\\\6.826687\\\\98.77239\\\\304.01\\\\7.657838\\\\97.94124\\\\304.01\\\\8.620689\\\\97.26704\\\\304.01\\\\9.685987\\\\96.77029\\\\304.01\\\\10.82136\\\\96.46606\\\\304.01\\\\11.99231\\\\96.36362\\\\304.01\\\\13.16326\\\\96.46606\\\\304.01\\\\14.29864\\\\96.77029\\\\304.01\\\\15.36393\\\\97.26704\\\\304.01\\\\16.32678\\\\97.94124\\\\304.01\\\\17.15794\\\\98.77239\\\\304.01\\\\17.83213\\\\99.73524\\\\304.01\\\\18.32889\\\\100.8005\\\\304.01\\\\18.63311\\\\101.9359\\\\304.01\\\\18.73555\\\\103.1069\\\\304.01\\\\18.63311\\\\104.2778\\\\304.01\\\\18.32889\\\\105.4132\\\\304.01\\\\17.83213\\\\106.4785\\\\304.01\\\\17.15794\\\\107.4413\\\\304.01\\\\16.32678\\\\108.2725\\\\304.01\\\\15.36393\\\\108.9467\\\\304.01\\\\14.29864\\\\109.4434\\\\304.01\\\\13.16326\\\\109.7477\\\\304.01\\\\11.99231\\\\109.8501\\\\304.01\\\\10.82136\\\\109.7477\\\\304.01\\\\9.685987\\\\109.4434\\\\304.01\\\\8.620689\\\\108.9467\\\\304.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"1\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"7.657838\\\\108.2725\\\\307.01\\\\6.826687\\\\107.4413\\\\307.01\\\\6.152492\\\\106.4785\\\\307.01\\\\5.655735\\\\105.4132\\\\307.01\\\\5.351513\\\\104.2778\\\\307.01\\\\5.249068\\\\103.1069\\\\307.01\\\\5.351513\\\\101.9359\\\\307.01\\\\5.655735\\\\100.8005\\\\307.01\\\\6.152492\\\\99.73524\\\\307.01\\\\6.826687\\\\98.77239\\\\307.01\\\\7.657838\\\\97.94124\\\\307.01\\\\8.620689\\\\97.26704\\\\307.01\\\\9.685987\\\\96.77029\\\\307.01\\\\10.82136\\\\96.46606\\\\307.01\\\\11.99231\\\\96.36362\\\\307.01\\\\13.16326\\\\96.46606\\\\307.01\\\\14.29864\\\\96.77029\\\\307.01\\\\15.36393\\\\97.26704\\\\307.01\\\\16.32678\\\\97.94124\\\\307.01\\\\17.15794\\\\98.77239\\\\307.01\\\\17.83213\\\\99.73524\\\\307.01\\\\18.32889\\\\100.8005\\\\307.01\\\\18.63311\\\\101.9359\\\\307.01\\\\18.73555\\\\103.1069\\\\307.01\\\\18.63311\\\\104.2778\\\\307.01\\\\18.32889\\\\105.4132\\\\307.01\\\\17.83213\\\\106.4785\\\\307.01\\\\17.15794\\\\107.4413\\\\307.01\\\\16.32678\\\\108.2725\\\\307.01\\\\15.36393\\\\108.9467\\\\307.01\\\\14.29864\\\\109.4434\\\\307.01\\\\13.16326\\\\109.7477\\\\307.01\\\\11.99231\\\\109.8501\\\\307.01\\\\10.82136\\\\109.7477\\\\307.01\\\\9.685987\\\\109.4434\\\\307.01\\\\8.620689\\\\108.9467\\\\307.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"2\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"7.657838\\\\108.2725\\\\310.01\\\\6.826687\\\\107.4413\\\\310.01\\\\6.152492\\\\106.4785\\\\310.01\\\\5.655735\\\\105.4132\\\\310.01\\\\5.351513\\\\104.2778\\\\310.01\\\\5.249068\\\\103.1069\\\\310.01\\\\5.351513\\\\101.9359\\\\310.01\\\\5.655735\\\\100.8005\\\\310.01\\\\6.152492\\\\99.73524\\\\310.01\\\\6.826687\\\\98.77239\\\\310.01\\\\7.657838\\\\97.94124\\\\310.01\\\\8.620689\\\\97.26704\\\\310.01\\\\9.685987\\\\96.77029\\\\310.01\\\\10.82136\\\\96.46606\\\\310.01\\\\11.99231\\\\96.36362\\\\310.01\\\\13.16326\\\\96.46606\\\\310.01\\\\14.29864\\\\96.77029\\\\310.01\\\\15.36393\\\\97.26704\\\\310.01\\\\16.32678\\\\97.94124\\\\310.01\\\\17.15794\\\\98.77239\\\\310.01\\\\17.83213\\\\99.73524\\\\310.01\\\\18.32889\\\\100.8005\\\\310.01\\\\18.63311\\\\101.9359\\\\310.01\\\\18.73555\\\\103.1069\\\\310.01\\\\18.63311\\\\104.2778\\\\310.01\\\\18.32889\\\\105.4132\\\\310.01\\\\17.83213\\\\106.4785\\\\310.01\\\\17.15794\\\\107.4413\\\\310.01\\\\16.32678\\\\108.2725\\\\310.01\\\\15.36393\\\\108.9467\\\\310.01\\\\14.29864\\\\109.4434\\\\310.01\\\\13.16326\\\\109.7477\\\\310.01\\\\11.99231\\\\109.8501\\\\310.01\\\\10.82136\\\\109.7477\\\\310.01\\\\9.685987\\\\109.4434\\\\310.01\\\\8.620689\\\\108.9467\\\\310.01\"\n"
+"                     }\n"
+"                  }\n"
+"               ]\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,002a\" : {\n"
+"               \"Name\" : \"ROIDisplayColor\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"0\\\\255\\\\255\"\n"
+"            },\n"
+"            \"3006,0040\" : {\n"
+"               \"Name\" : \"ContourSequence\",\n"
+"               \"Type\" : \"Sequence\",\n"
+"               \"Value\" : [\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"0\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-37.967\\\\161.9664\\\\304.01\\\\-39.10237\\\\161.6622\\\\304.01\\\\-40.16767\\\\161.1655\\\\304.01\\\\-41.13052\\\\160.4913\\\\304.01\\\\-41.96167\\\\159.6601\\\\304.01\\\\-42.63587\\\\158.6973\\\\304.01\\\\-43.13263\\\\157.632\\\\304.01\\\\-43.43685\\\\156.4966\\\\304.01\\\\-43.53929\\\\155.3257\\\\304.01\\\\-43.43685\\\\154.1547\\\\304.01\\\\-43.13263\\\\153.0193\\\\304.01\\\\-42.63587\\\\151.954\\\\304.01\\\\-41.96167\\\\150.9912\\\\304.01\\\\-41.13052\\\\150.16\\\\304.01\\\\-40.16767\\\\149.4858\\\\304.01\\\\-39.10237\\\\148.9891\\\\304.01\\\\-37.967\\\\148.6849\\\\304.01\\\\-36.79605\\\\148.5824\\\\304.01\\\\-35.6251\\\\148.6849\\\\304.01\\\\-34.48972\\\\148.9891\\\\304.01\\\\-33.42443\\\\149.4858\\\\304.01\\\\-32.46157\\\\150.16\\\\304.01\\\\-31.63042\\\\150.9912\\\\304.01\\\\-30.95623\\\\151.954\\\\304.01\\\\-30.45947\\\\153.0193\\\\304.01\\\\-30.15525\\\\154.1547\\\\304.01\\\\-30.0528\\\\155.3257\\\\304.01\\\\-30.15525\\\\156.4966\\\\304.01\\\\-30.45947\\\\157.632\\\\304.01\\\\-30.95623\\\\158.6973\\\\304.01\\\\-31.63042\\\\159.6601\\\\304.01\\\\-32.46157\\\\160.4913\\\\304.01\\\\-33.42443\\\\161.1655\\\\304.01\\\\-34.48972\\\\161.6622\\\\304.01\\\\-35.6251\\\\161.9664\\\\304.01\\\\-36.79605\\\\162.0689\\\\304.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"1\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-37.967\\\\161.9664\\\\307.01\\\\-39.10237\\\\161.6622\\\\307.01\\\\-40.16767\\\\161.1655\\\\307.01\\\\-41.13052\\\\160.4913\\\\307.01\\\\-41.96167\\\\159.6601\\\\307.01\\\\-42.63587\\\\158.6973\\\\307.01\\\\-43.13263\\\\157.632\\\\307.01\\\\-43.43685\\\\156.4966\\\\307.01\\\\-43.53929\\\\155.3257\\\\307.01\\\\-43.43685\\\\154.1547\\\\307.01\\\\-43.13263\\\\153.0193\\\\307.01\\\\-42.63587\\\\151.954\\\\307.01\\\\-41.96167\\\\150.9912\\\\307.01\\\\-41.13052\\\\150.16\\\\307.01\\\\-40.16767\\\\149.4858\\\\307.01\\\\-39.10237\\\\148.9891\\\\307.01\\\\-37.967\\\\148.6849\\\\307.01\\\\-36.79605\\\\148.5824\\\\307.01\\\\-35.6251\\\\148.6849\\\\307.01\\\\-34.48972\\\\148.9891\\\\307.01\\\\-33.42443\\\\149.4858\\\\307.01\\\\-32.46157\\\\150.16\\\\307.01\\\\-31.63042\\\\150.9912\\\\307.01\\\\-30.95623\\\\151.954\\\\307.01\\\\-30.45947\\\\153.0193\\\\307.01\\\\-30.15525\\\\154.1547\\\\307.01\\\\-30.0528\\\\155.3257\\\\307.01\\\\-30.15525\\\\156.4966\\\\307.01\\\\-30.45947\\\\157.632\\\\307.01\\\\-30.95623\\\\158.6973\\\\307.01\\\\-31.63042\\\\159.6601\\\\307.01\\\\-32.46157\\\\160.4913\\\\307.01\\\\-33.42443\\\\161.1655\\\\307.01\\\\-34.48972\\\\161.6622\\\\307.01\\\\-35.6251\\\\161.9664\\\\307.01\\\\-36.79605\\\\162.0689\\\\307.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"2\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-37.967\\\\161.9664\\\\310.01\\\\-39.10237\\\\161.6622\\\\310.01\\\\-40.16767\\\\161.1655\\\\310.01\\\\-41.13052\\\\160.4913\\\\310.01\\\\-41.96167\\\\159.6601\\\\310.01\\\\-42.63587\\\\158.6973\\\\310.01\\\\-43.13263\\\\157.632\\\\310.01\\\\-43.43685\\\\156.4966\\\\310.01\\\\-43.53929\\\\155.3257\\\\310.01\\\\-43.43685\\\\154.1547\\\\310.01\\\\-43.13263\\\\153.0193\\\\310.01\\\\-42.63587\\\\151.954\\\\310.01\\\\-41.96167\\\\150.9912\\\\310.01\\\\-41.13052\\\\150.16\\\\310.01\\\\-40.16767\\\\149.4858\\\\310.01\\\\-39.10237\\\\148.9891\\\\310.01\\\\-37.967\\\\148.6849\\\\310.01\\\\-36.79605\\\\148.5824\\\\310.01\\\\-35.6251\\\\148.6849\\\\310.01\\\\-34.48972\\\\148.9891\\\\310.01\\\\-33.42443\\\\149.4858\\\\310.01\\\\-32.46157\\\\150.16\\\\310.01\\\\-31.63042\\\\150.9912\\\\310.01\\\\-30.95623\\\\151.954\\\\310.01\\\\-30.45947\\\\153.0193\\\\310.01\\\\-30.15525\\\\154.1547\\\\310.01\\\\-30.0528\\\\155.3257\\\\310.01\\\\-30.15525\\\\156.4966\\\\310.01\\\\-30.45947\\\\157.632\\\\310.01\\\\-30.95623\\\\158.6973\\\\310.01\\\\-31.63042\\\\159.6601\\\\310.01\\\\-32.46157\\\\160.4913\\\\310.01\\\\-33.42443\\\\161.1655\\\\310.01\\\\-34.48972\\\\161.6622\\\\310.01\\\\-35.6251\\\\161.9664\\\\310.01\\\\-36.79605\\\\162.0689\\\\310.01\"\n"
+"                     }\n"
+"                  }\n"
+"               ]\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"2\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,002a\" : {\n"
+"               \"Name\" : \"ROIDisplayColor\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"255\\\\0\\\\255\"\n"
+"            },\n"
+"            \"3006,0040\" : {\n"
+"               \"Name\" : \"ContourSequence\",\n"
+"               \"Type\" : \"Sequence\",\n"
+"               \"Value\" : [\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"0\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"69.4042\\\\150.7324\\\\304.01\\\\69.70842\\\\151.8678\\\\304.01\\\\69.81087\\\\153.0387\\\\304.01\\\\69.70842\\\\154.2097\\\\304.01\\\\69.4042\\\\155.345\\\\304.01\\\\68.90745\\\\156.4103\\\\304.01\\\\68.23325\\\\157.3732\\\\304.01\\\\67.4021\\\\158.2043\\\\304.01\\\\66.43925\\\\158.8785\\\\304.01\\\\65.37395\\\\159.3753\\\\304.01\\\\64.23858\\\\159.6795\\\\304.01\\\\63.06762\\\\159.7819\\\\304.01\\\\61.89667\\\\159.6795\\\\304.01\\\\60.7613\\\\159.3753\\\\304.01\\\\59.696\\\\158.8785\\\\304.01\\\\58.73315\\\\158.2043\\\\304.01\\\\57.902\\\\157.3732\\\\304.01\\\\57.22781\\\\156.4103\\\\304.01\\\\56.73105\\\\155.345\\\\304.01\\\\56.42683\\\\154.2097\\\\304.01\\\\56.32438\\\\153.0387\\\\304.01\\\\56.42683\\\\151.8678\\\\304.01\\\\56.73105\\\\150.7324\\\\304.01\\\\57.22781\\\\149.6671\\\\304.01\\\\57.902\\\\148.7042\\\\304.01\\\\58.73315\\\\147.8731\\\\304.01\\\\59.696\\\\147.1989\\\\304.01\\\\60.7613\\\\146.7021\\\\304.01\\\\61.89667\\\\146.3979\\\\304.01\\\\63.06762\\\\146.2955\\\\304.01\\\\64.23858\\\\146.3979\\\\304.01\\\\65.37395\\\\146.7021\\\\304.01\\\\66.43925\\\\147.1989\\\\304.01\\\\67.4021\\\\147.8731\\\\304.01\\\\68.23325\\\\148.7042\\\\304.01\\\\68.90745\\\\149.6671\\\\304.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"1\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"69.4042\\\\150.7324\\\\307.01\\\\69.70842\\\\151.8678\\\\307.01\\\\69.81087\\\\153.0387\\\\307.01\\\\69.70842\\\\154.2097\\\\307.01\\\\69.4042\\\\155.345\\\\307.01\\\\68.90745\\\\156.4103\\\\307.01\\\\68.23325\\\\157.3732\\\\307.01\\\\67.4021\\\\158.2043\\\\307.01\\\\66.43925\\\\158.8785\\\\307.01\\\\65.37395\\\\159.3753\\\\307.01\\\\64.23858\\\\159.6795\\\\307.01\\\\63.06762\\\\159.7819\\\\307.01\\\\61.89667\\\\159.6795\\\\307.01\\\\60.7613\\\\159.3753\\\\307.01\\\\59.696\\\\158.8785\\\\307.01\\\\58.73315\\\\158.2043\\\\307.01\\\\57.902\\\\157.3732\\\\307.01\\\\57.22781\\\\156.4103\\\\307.01\\\\56.73105\\\\155.345\\\\307.01\\\\56.42683\\\\154.2097\\\\307.01\\\\56.32438\\\\153.0387\\\\307.01\\\\56.42683\\\\151.8678\\\\307.01\\\\56.73105\\\\150.7324\\\\307.01\\\\57.22781\\\\149.6671\\\\307.01\\\\57.902\\\\148.7042\\\\307.01\\\\58.73315\\\\147.8731\\\\307.01\\\\59.696\\\\147.1989\\\\307.01\\\\60.7613\\\\146.7021\\\\307.01\\\\61.89667\\\\146.3979\\\\307.01\\\\63.06762\\\\146.2955\\\\307.01\\\\64.23858\\\\146.3979\\\\307.01\\\\65.37395\\\\146.7021\\\\307.01\\\\66.43925\\\\147.1989\\\\307.01\\\\67.4021\\\\147.8731\\\\307.01\\\\68.23325\\\\148.7042\\\\307.01\\\\68.90745\\\\149.6671\\\\307.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"2\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"69.4042\\\\150.7324\\\\310.01\\\\69.70842\\\\151.8678\\\\310.01\\\\69.81087\\\\153.0387\\\\310.01\\\\69.70842\\\\154.2097\\\\310.01\\\\69.4042\\\\155.345\\\\310.01\\\\68.90745\\\\156.4103\\\\310.01\\\\68.23325\\\\157.3732\\\\310.01\\\\67.4021\\\\158.2043\\\\310.01\\\\66.43925\\\\158.8785\\\\310.01\\\\65.37395\\\\159.3753\\\\310.01\\\\64.23858\\\\159.6795\\\\310.01\\\\63.06762\\\\159.7819\\\\310.01\\\\61.89667\\\\159.6795\\\\310.01\\\\60.7613\\\\159.3753\\\\310.01\\\\59.696\\\\158.8785\\\\310.01\\\\58.73315\\\\158.2043\\\\310.01\\\\57.902\\\\157.3732\\\\310.01\\\\57.22781\\\\156.4103\\\\310.01\\\\56.73105\\\\155.345\\\\310.01\\\\56.42683\\\\154.2097\\\\310.01\\\\56.32438\\\\153.0387\\\\310.01\\\\56.42683\\\\151.8678\\\\310.01\\\\56.73105\\\\150.7324\\\\310.01\\\\57.22781\\\\149.6671\\\\310.01\\\\57.902\\\\148.7042\\\\310.01\\\\58.73315\\\\147.8731\\\\310.01\\\\59.696\\\\147.1989\\\\310.01\\\\60.7613\\\\146.7021\\\\310.01\\\\61.89667\\\\146.3979\\\\310.01\\\\63.06762\\\\146.2955\\\\310.01\\\\64.23858\\\\146.3979\\\\310.01\\\\65.37395\\\\146.7021\\\\310.01\\\\66.43925\\\\147.1989\\\\310.01\\\\67.4021\\\\147.8731\\\\310.01\\\\68.23325\\\\148.7042\\\\310.01\\\\68.90745\\\\149.6671\\\\310.01\"\n"
+"                     }\n"
+"                  }\n"
+"               ]\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"3\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,002a\" : {\n"
+"               \"Name\" : \"ROIDisplayColor\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"0\\\\0\\\\255\"\n"
+"            },\n"
+"            \"3006,0040\" : {\n"
+"               \"Name\" : \"ContourSequence\",\n"
+"               \"Type\" : \"Sequence\",\n"
+"               \"Value\" : [\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"0\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"15.45022\\\\210.3737\\\\304.01\\\\14.27927\\\\210.4761\\\\304.01\\\\13.10831\\\\210.3737\\\\304.01\\\\11.97294\\\\210.0694\\\\304.01\\\\10.90764\\\\209.5727\\\\304.01\\\\9.944793\\\\208.8985\\\\304.01\\\\9.113642\\\\208.0673\\\\304.01\\\\8.439445\\\\207.1045\\\\304.01\\\\7.94269\\\\206.0392\\\\304.01\\\\7.638467\\\\204.9038\\\\304.01\\\\7.536023\\\\203.7328\\\\304.01\\\\7.638467\\\\202.5619\\\\304.01\\\\7.94269\\\\201.4265\\\\304.01\\\\8.439445\\\\200.3612\\\\304.01\\\\9.113642\\\\199.3984\\\\304.01\\\\9.944793\\\\198.5672\\\\304.01\\\\10.90764\\\\197.893\\\\304.01\\\\11.97294\\\\197.3963\\\\304.01\\\\13.10831\\\\197.0921\\\\304.01\\\\14.27927\\\\196.9896\\\\304.01\\\\15.45022\\\\197.0921\\\\304.01\\\\16.58559\\\\197.3963\\\\304.01\\\\17.65089\\\\197.893\\\\304.01\\\\18.61374\\\\198.5672\\\\304.01\\\\19.44489\\\\199.3984\\\\304.01\\\\20.11909\\\\200.3612\\\\304.01\\\\20.61584\\\\201.4265\\\\304.01\\\\20.92006\\\\202.5619\\\\304.01\\\\21.02251\\\\203.7328\\\\304.01\\\\20.92006\\\\204.9038\\\\304.01\\\\20.61584\\\\206.0392\\\\304.01\\\\20.11909\\\\207.1045\\\\304.01\\\\19.44489\\\\208.0673\\\\304.01\\\\18.61374\\\\208.8985\\\\304.01\\\\17.65089\\\\209.5727\\\\304.01\\\\16.58559\\\\210.0694\\\\304.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"1\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"15.45022\\\\210.3737\\\\307.01\\\\14.27927\\\\210.4761\\\\307.01\\\\13.10831\\\\210.3737\\\\307.01\\\\11.97294\\\\210.0694\\\\307.01\\\\10.90764\\\\209.5727\\\\307.01\\\\9.944793\\\\208.8985\\\\307.01\\\\9.113642\\\\208.0673\\\\307.01\\\\8.439445\\\\207.1045\\\\307.01\\\\7.94269\\\\206.0392\\\\307.01\\\\7.638467\\\\204.9038\\\\307.01\\\\7.536023\\\\203.7328\\\\307.01\\\\7.638467\\\\202.5619\\\\307.01\\\\7.94269\\\\201.4265\\\\307.01\\\\8.439445\\\\200.3612\\\\307.01\\\\9.113642\\\\199.3984\\\\307.01\\\\9.944793\\\\198.5672\\\\307.01\\\\10.90764\\\\197.893\\\\307.01\\\\11.97294\\\\197.3963\\\\307.01\\\\13.10831\\\\197.0921\\\\307.01\\\\14.27927\\\\196.9896\\\\307.01\\\\15.45022\\\\197.0921\\\\307.01\\\\16.58559\\\\197.3963\\\\307.01\\\\17.65089\\\\197.893\\\\307.01\\\\18.61374\\\\198.5672\\\\307.01\\\\19.44489\\\\199.3984\\\\307.01\\\\20.11909\\\\200.3612\\\\307.01\\\\20.61584\\\\201.4265\\\\307.01\\\\20.92006\\\\202.5619\\\\307.01\\\\21.02251\\\\203.7328\\\\307.01\\\\20.92006\\\\204.9038\\\\307.01\\\\20.61584\\\\206.0392\\\\307.01\\\\20.11909\\\\207.1045\\\\307.01\\\\19.44489\\\\208.0673\\\\307.01\\\\18.61374\\\\208.8985\\\\307.01\\\\17.65089\\\\209.5727\\\\307.01\\\\16.58559\\\\210.0694\\\\307.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"2\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"15.45022\\\\210.3737\\\\310.01\\\\14.27927\\\\210.4761\\\\310.01\\\\13.10831\\\\210.3737\\\\310.01\\\\11.97294\\\\210.0694\\\\310.01\\\\10.90764\\\\209.5727\\\\310.01\\\\9.944793\\\\208.8985\\\\310.01\\\\9.113642\\\\208.0673\\\\310.01\\\\8.439445\\\\207.1045\\\\310.01\\\\7.94269\\\\206.0392\\\\310.01\\\\7.638467\\\\204.9038\\\\310.01\\\\7.536023\\\\203.7328\\\\310.01\\\\7.638467\\\\202.5619\\\\310.01\\\\7.94269\\\\201.4265\\\\310.01\\\\8.439445\\\\200.3612\\\\310.01\\\\9.113642\\\\199.3984\\\\310.01\\\\9.944793\\\\198.5672\\\\310.01\\\\10.90764\\\\197.893\\\\310.01\\\\11.97294\\\\197.3963\\\\310.01\\\\13.10831\\\\197.0921\\\\310.01\\\\14.27927\\\\196.9896\\\\310.01\\\\15.45022\\\\197.0921\\\\310.01\\\\16.58559\\\\197.3963\\\\310.01\\\\17.65089\\\\197.893\\\\310.01\\\\18.61374\\\\198.5672\\\\310.01\\\\19.44489\\\\199.3984\\\\310.01\\\\20.11909\\\\200.3612\\\\310.01\\\\20.61584\\\\201.4265\\\\310.01\\\\20.92006\\\\202.5619\\\\310.01\\\\21.02251\\\\203.7328\\\\310.01\\\\20.92006\\\\204.9038\\\\310.01\\\\20.61584\\\\206.0392\\\\310.01\\\\20.11909\\\\207.1045\\\\310.01\\\\19.44489\\\\208.0673\\\\310.01\\\\18.61374\\\\208.8985\\\\310.01\\\\17.65089\\\\209.5727\\\\310.01\\\\16.58559\\\\210.0694\\\\310.01\"\n"
+"                     }\n"
+"                  }\n"
+"               ]\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"4\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,002a\" : {\n"
+"               \"Name\" : \"ROIDisplayColor\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"0\\\\128\\\\255\"\n"
+"            },\n"
+"            \"3006,0040\" : {\n"
+"               \"Name\" : \"ContourSequence\",\n"
+"               \"Type\" : \"Sequence\",\n"
+"               \"Value\" : [\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"0\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"14.97014\\\\164.0225\\\\295.01\\\\13.79919\\\\164.1249\\\\295.01\\\\12.62824\\\\164.0225\\\\295.01\\\\11.49286\\\\163.7183\\\\295.01\\\\10.42757\\\\163.2215\\\\295.01\\\\9.464716\\\\162.5473\\\\295.01\\\\8.633565\\\\161.7162\\\\295.01\\\\7.95937\\\\160.7533\\\\295.01\\\\7.462614\\\\159.688\\\\295.01\\\\7.158391\\\\158.5526\\\\295.01\\\\7.055946\\\\157.3817\\\\295.01\\\\7.158391\\\\156.2107\\\\295.01\\\\7.462614\\\\155.0753\\\\295.01\\\\7.95937\\\\154.0101\\\\295.01\\\\8.633565\\\\153.0472\\\\295.01\\\\9.464716\\\\152.216\\\\295.01\\\\10.42757\\\\151.5419\\\\295.01\\\\11.49286\\\\151.0451\\\\295.01\\\\12.62824\\\\150.7409\\\\295.01\\\\13.79919\\\\150.6384\\\\295.01\\\\14.97014\\\\150.7409\\\\295.01\\\\16.10551\\\\151.0451\\\\295.01\\\\17.17081\\\\151.5419\\\\295.01\\\\18.13366\\\\152.216\\\\295.01\\\\18.96481\\\\153.0472\\\\295.01\\\\19.63901\\\\154.0101\\\\295.01\\\\20.13577\\\\155.0753\\\\295.01\\\\20.43999\\\\156.2107\\\\295.01\\\\20.54243\\\\157.3817\\\\295.01\\\\20.43999\\\\158.5526\\\\295.01\\\\20.13577\\\\159.688\\\\295.01\\\\19.63901\\\\160.7533\\\\295.01\\\\18.96481\\\\161.7162\\\\295.01\\\\18.13366\\\\162.5473\\\\295.01\\\\17.17081\\\\163.2215\\\\295.01\\\\16.10551\\\\163.7183\\\\295.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n";
+const char* k_rtStruct_json01 =
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"1\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"14.97014\\\\164.0225\\\\298.01\\\\13.79919\\\\164.1249\\\\298.01\\\\12.62824\\\\164.0225\\\\298.01\\\\11.49286\\\\163.7183\\\\298.01\\\\10.42757\\\\163.2215\\\\298.01\\\\9.464716\\\\162.5473\\\\298.01\\\\8.633565\\\\161.7162\\\\298.01\\\\7.95937\\\\160.7533\\\\298.01\\\\7.462614\\\\159.688\\\\298.01\\\\7.158391\\\\158.5526\\\\298.01\\\\7.055946\\\\157.3817\\\\298.01\\\\7.158391\\\\156.2107\\\\298.01\\\\7.462614\\\\155.0753\\\\298.01\\\\7.95937\\\\154.0101\\\\298.01\\\\8.633565\\\\153.0472\\\\298.01\\\\9.464716\\\\152.216\\\\298.01\\\\10.42757\\\\151.5419\\\\298.01\\\\11.49286\\\\151.0451\\\\298.01\\\\12.62824\\\\150.7409\\\\298.01\\\\13.79919\\\\150.6384\\\\298.01\\\\14.97014\\\\150.7409\\\\298.01\\\\16.10551\\\\151.0451\\\\298.01\\\\17.17081\\\\151.5419\\\\298.01\\\\18.13366\\\\152.216\\\\298.01\\\\18.96481\\\\153.0472\\\\298.01\\\\19.63901\\\\154.0101\\\\298.01\\\\20.13577\\\\155.0753\\\\298.01\\\\20.43999\\\\156.2107\\\\298.01\\\\20.54243\\\\157.3817\\\\298.01\\\\20.43999\\\\158.5526\\\\298.01\\\\20.13577\\\\159.688\\\\298.01\\\\19.63901\\\\160.7533\\\\298.01\\\\18.96481\\\\161.7162\\\\298.01\\\\18.13366\\\\162.5473\\\\298.01\\\\17.17081\\\\163.2215\\\\298.01\\\\16.10551\\\\163.7183\\\\298.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"2\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"14.97014\\\\164.0225\\\\301.01\\\\13.79919\\\\164.1249\\\\301.01\\\\12.62824\\\\164.0225\\\\301.01\\\\11.49286\\\\163.7183\\\\301.01\\\\10.42757\\\\163.2215\\\\301.01\\\\9.464716\\\\162.5473\\\\301.01\\\\8.633565\\\\161.7162\\\\301.01\\\\7.95937\\\\160.7533\\\\301.01\\\\7.462614\\\\159.688\\\\301.01\\\\7.158391\\\\158.5526\\\\301.01\\\\7.055946\\\\157.3817\\\\301.01\\\\7.158391\\\\156.2107\\\\301.01\\\\7.462614\\\\155.0753\\\\301.01\\\\7.95937\\\\154.0101\\\\301.01\\\\8.633565\\\\153.0472\\\\301.01\\\\9.464716\\\\152.216\\\\301.01\\\\10.42757\\\\151.5419\\\\301.01\\\\11.49286\\\\151.0451\\\\301.01\\\\12.62824\\\\150.7409\\\\301.01\\\\13.79919\\\\150.6384\\\\301.01\\\\14.97014\\\\150.7409\\\\301.01\\\\16.10551\\\\151.0451\\\\301.01\\\\17.17081\\\\151.5419\\\\301.01\\\\18.13366\\\\152.216\\\\301.01\\\\18.96481\\\\153.0472\\\\301.01\\\\19.63901\\\\154.0101\\\\301.01\\\\20.13577\\\\155.0753\\\\301.01\\\\20.43999\\\\156.2107\\\\301.01\\\\20.54243\\\\157.3817\\\\301.01\\\\20.43999\\\\158.5526\\\\301.01\\\\20.13577\\\\159.688\\\\301.01\\\\19.63901\\\\160.7533\\\\301.01\\\\18.96481\\\\161.7162\\\\301.01\\\\18.13366\\\\162.5473\\\\301.01\\\\17.17081\\\\163.2215\\\\301.01\\\\16.10551\\\\163.7183\\\\301.01\"\n"
+"                     }\n"
+"                  }\n"
+"               ]\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"5\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,002a\" : {\n"
+"               \"Name\" : \"ROIDisplayColor\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"0\\\\128\\\\0\"\n"
+"            },\n"
+"            \"3006,0040\" : {\n"
+"               \"Name\" : \"ContourSequence\",\n"
+"               \"Type\" : \"Sequence\",\n"
+"               \"Value\" : [\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"340\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"0\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"108.3984\\\\232.7406\\\\274.01\\\\106.0547\\\\231.7948\\\\274.01\\\\103.7109\\\\232.8407\\\\274.01\\\\96.67969\\\\232.8757\\\\274.01\\\\77.92969\\\\232.887\\\\274.01\\\\47.46094\\\\232.8902\\\\274.01\\\\38.08594\\\\232.7537\\\\274.01\\\\37.6668\\\\232.3734\\\\274.01\\\\38.08594\\\\231.9774\\\\274.01\\\\40.42969\\\\231.8475\\\\274.01\\\\41.76413\\\\230.0297\\\\274.01\\\\42.77344\\\\229.1388\\\\274.01\\\\45.11719\\\\228.5069\\\\274.01\\\\47.46094\\\\227.1533\\\\274.01\\\\49.80469\\\\226.3505\\\\274.01\\\\52.14844\\\\224.6564\\\\274.01\\\\54.49219\\\\223.923\\\\274.01\\\\56.83594\\\\222.0692\\\\274.01\\\\59.17969\\\\220.3438\\\\274.01\\\\61.52344\\\\219.3888\\\\274.01\\\\63.86719\\\\217.1287\\\\274.01\\\\65.83488\\\\215.9672\\\\274.01\\\\68.55469\\\\213.2383\\\\274.01\\\\70.89844\\\\211.2328\\\\274.01\\\\72.8125\\\\208.9359\\\\274.01\\\\75.58594\\\\206.3615\\\\274.01\\\\76.91445\\\\204.2484\\\\274.01\\\\78.89509\\\\201.9047\\\\274.01\\\\80.51276\\\\199.5609\\\\274.01\\\\81.51955\\\\197.2172\\\\274.01\\\\83.67448\\\\194.8734\\\\274.01\\\\84.60938\\\\192.5297\\\\274.01\\\\85.86986\\\\190.1859\\\\274.01\\\\86.57623\\\\187.8422\\\\274.01\\\\88.30051\\\\185.4984\\\\274.01\\\\88.94002\\\\183.1547\\\\274.01\\\\89.23261\\\\180.8109\\\\274.01\\\\89.64844\\\\180.3263\\\\274.01\\\\90.71885\\\\178.4672\\\\274.01\\\\90.97656\\\\176.1234\\\\274.01\\\\91.99219\\\\174.4794\\\\274.01\\\\92.56773\\\\173.7797\\\\274.01\\\\92.80016\\\\171.4359\\\\274.01\\\\93.23473\\\\169.0922\\\\274.01\\\\93.37606\\\\166.7484\\\\274.01\\\\93.60748\\\\157.3734\\\\274.01\\\\93.6341\\\\152.6859\\\\274.01\\\\93.35742\\\\140.9672\\\\274.01\\\\92.89317\\\\138.6234\\\\274.01\\\\92.7069\\\\136.2797\\\\274.01\\\\92.03726\\\\133.9359\\\\274.01\\\\90.84009\\\\131.5922\\\\274.01\\\\90.3769\\\\129.2484\\\\274.01\\\\89.09074\\\\126.9047\\\\274.01\\\\88.13225\\\\122.2172\\\\274.01\\\\86.17828\\\\119.8734\\\\274.01\\\\84.96094\\\\117.4163\\\\274.01\\\\83.99619\\\\115.1859\\\\274.01\\\\83.13079\\\\112.8422\\\\274.01\\\\82.61719\\\\112.2984\\\\274.01\\\\80.27344\\\\108.8454\\\\274.01\\\\79.64514\\\\108.1547\\\\274.01\\\\77.21497\\\\105.8109\\\\274.01\\\\76.47787\\\\103.4672\\\\274.01\\\\75.58594\\\\102.6177\\\\274.01\\\\73.24219\\\\100.0077\\\\274.01\\\\69.54492\\\\96.43594\\\\274.01\\\\67.34096\\\\94.09219\\\\274.01\\\\64.66306\\\\91.74844\\\\274.01\\\\63.86719\\\\90.92619\\\\274.01\\\\61.52344\\\\90.20454\\\\274.01\\\\59.17969\\\\87.78574\\\\274.01\\\\56.83594\\\\86.48566\\\\274.01\\\\54.49219\\\\84.31388\\\\274.01\\\\52.14844\\\\83.44438\\\\274.01\\\\49.80469\\\\82.75121\\\\274.01\\\\49.37617\\\\82.37344\\\\274.01\\\\47.46094\\\\81.26244\\\\274.01\\\\45.71391\\\\80.02969\\\\274.01\\\\45.11719\\\\79.45415\\\\274.01\\\\42.77344\\\\79.08185\\\\274.01\\\\40.42969\\\\78.51941\\\\274.01\\\\38.08594\\\\78.27534\\\\274.01\\\\37.36932\\\\77.68594\\\\274.01\\\\35.74219\\\\76.67624\\\\274.01\\\\33.39844\\\\76.49941\\\\274.01\\\\31.05469\\\\76.03495\\\\274.01\\\\28.71094\\\\74.83174\\\\274.01\\\\26.36719\\\\74.62859\\\\274.01\\\\24.02344\\\\74.55463\\\\274.01\\\\21.67969\\\\74.22861\\\\274.01\\\\19.33594\\\\74.05312\\\\274.01\\\\12.30469\\\\73.99397\\\\274.01\\\\5.273438\\\\74.0736\\\\274.01\\\\2.929688\\\\74.55463\\\\274.01\\\\0.5859375\\\\74.68513\\\\274.01\\\\-1.757813\\\\74.914\\\\274.01\\\\-2.319131\\\\75.34219\\\\274.01\\\\-4.101563\\\\76.31516\\\\274.01\\\\-8.789063\\\\76.74514\\\\274.01\\\\-11.13281\\\\78.39038\\\\274.01\\\\-13.47656\\\\78.6124\\\\274.01\\\\-15.82031\\\\79.19784\\\\274.01\\\\-18.16406\\\\81.11024\\\\274.01\\\\-20.50781\\\\82.03296\\\\274.01\\\\-22.85156\\\\83.13991\\\\274.01\\\\-25.19531\\\\83.70732\\\\274.01\\\\-27.53906\\\\85.85863\\\\274.01\\\\-29.88281\\\\87.03368\\\\274.01\\\\-32.22656\\\\88.3274\\\\274.01\\\\-34.57031\\\\90.53674\\\\274.01\\\\-36.91406\\\\92.5602\\\\274.01\\\\-39.25781\\\\93.55952\\\\274.01\\\\-41.60156\\\\95.74537\\\\274.01\\\\-43.94531\\\\98.26609\\\\274.01\\\\-46.28906\\\\100.3701\\\\274.01\\\\-47.02621\\\\101.1234\\\\274.01\\\\-47.86611\\\\103.4672\\\\274.01\\\\-49.83594\\\\105.8109\\\\274.01\\\\-51.98182\\\\108.1547\\\\274.01\\\\-53.06448\\\\110.4984\\\\274.01\\\\-53.32031\\\\110.7675\\\\274.01\\\\-54.53804\\\\112.8422\\\\274.01\\\\-55.66406\\\\114.273\\\\274.01\\\\-56.55722\\\\115.1859\\\\274.01\\\\-57.13953\\\\117.5297\\\\274.01\\\\-58.29264\\\\119.8734\\\\274.01\\\\-59.26869\\\\122.2172\\\\274.01\\\\-60.35156\\\\124.0119\\\\274.01\\\\-60.84229\\\\124.5609\\\\274.01\\\\-61.54484\\\\126.9047\\\\274.01\\\\-61.71691\\\\129.2484\\\\274.01\\\\-63.62281\\\\131.5922\\\\274.01\\\\-63.81256\\\\133.9359\\\\274.01\\\\-64.12511\\\\136.2797\\\\274.01\\\\-64.84515\\\\138.6234\\\\274.01\\\\-65.13599\\\\140.9672\\\\274.01\\\\-65.33604\\\\143.3109\\\\274.01\\\\-65.87358\\\\145.6547\\\\274.01\\\\-66.10577\\\\147.9984\\\\274.01\\\\-66.17618\\\\155.0297\\\\274.01\\\\-66.09933\\\\162.0609\\\\274.01\\\\-65.40382\\\\164.4047\\\\274.01\\\\-65.24833\\\\166.7484\\\\274.01\\\\-64.71442\\\\171.4359\\\\274.01\\\\-63.88171\\\\173.7797\\\\274.01\\\\-63.69299\\\\176.1234\\\\274.01\\\\-61.79081\\\\178.4672\\\\274.01\\\\-61.59269\\\\180.8109\\\\274.01\\\\-61.19405\\\\183.1547\\\\274.01\\\\-60.35156\\\\185.2055\\\\274.01\\\\-59.08288\\\\187.8422\\\\274.01\\\\-58.00781\\\\189.3499\\\\274.01\\\\-57.25858\\\\190.1859\\\\274.01\\\\-56.64558\\\\192.5297\\\\274.01\\\\-55.29191\\\\194.8734\\\\274.01\\\\-54.28698\\\\197.2172\\\\274.01\\\\-52.28595\\\\199.5609\\\\274.01\\\\-51.47569\\\\201.9047\\\\274.01\\\\-48.63281\\\\204.6417\\\\274.01\\\\-47.10181\\\\206.5922\\\\274.01\\\\-44.64154\\\\208.9359\\\\274.01\\\\-42.38504\\\\211.2797\\\\274.01\\\\-39.25781\\\\214.4025\\\\274.01\\\\-37.42723\\\\215.9672\\\\274.01\\\\-34.57031\\\\218.9107\\\\274.01\\\\-32.22656\\\\219.7277\\\\274.01\\\\-29.88281\\\\221.6934\\\\274.01\\\\-27.53906\\\\222.852\\\\274.01\\\\-25.19531\\\\224.5168\\\\274.01\\\\-22.85156\\\\225.9419\\\\274.01\\\\-20.50781\\\\226.7359\\\\274.01\\\\-18.16406\\\\228.3332\\\\274.01\\\\-15.82031\\\\229.065\\\\274.01\\\\-13.47656\\\\229.267\\\\274.01\\\\-12.63854\\\\230.0297\\\\274.01\\\\-11.13281\\\\231.9201\\\\274.01\\\\-10.65505\\\\232.3734\\\\274.01\\\\-11.13281\\\\232.7794\\\\274.01\\\\-15.82031\\\\232.792\\\\274.01\\\\-18.16406\\\\232.8902\\\\274.01\\\\-36.91406\\\\232.9015\\\\274.01\\\\-39.25781\\\\232.8902\\\\274.01\\\\-50.97656\\\\232.9236\\\\274.01\\\\-60.35156\\\\232.9126\\\\274.01\\\\-67.38281\\\\232.8407\\\\274.01\\\\-72.07031\\\\232.8642\\\\274.01\\\\-79.10156\\\\232.8555\\\\274.01\\\\-83.78906\\\\232.8788\\\\274.01\\\\-95.50781\\\\232.8902\\\\274.01\\\\-97.85156\\\\233.4886\\\\274.01\\\\-100.1953\\\\233.647\\\\274.01\\\\-102.5391\\\\232.9858\\\\274.01\\\\-104.8828\\\\233.6969\\\\274.01\\\\-109.5703\\\\233.722\\\\274.01\\\\-125.9766\\\\233.7086\\\\274.01\\\\-128.3203\\\\233.2849\\\\274.01\\\\-130.6641\\\\233.702\\\\274.01\\\\-135.3516\\\\233.727\\\\274.01\\\\-149.4141\\\\233.7135\\\\274.01\\\\-156.4453\\\\233.727\\\\274.01\\\\-163.4766\\\\233.7119\\\\274.01\\\\-168.1641\\\\233.7643\\\\274.01\\\\-191.6016\\\\233.7809\\\\274.01\\\\-210.3516\\\\233.7716\\\\274.01\\\\-224.4141\\\\233.7998\\\\274.01\\\\-233.7891\\\\233.7647\\\\274.01\\\\-243.1641\\\\233.7785\\\\274.01\\\\-247.8516\\\\233.7378\\\\274.01\\\\-254.8828\\\\233.8578\\\\274.01\\\\-257.2266\\\\235.2519\\\\274.01\\\\-259.5703\\\\236.0817\\\\274.01\\\\-260.7617\\\\237.0609\\\\274.01\\\\-261.9141\\\\238.2262\\\\274.01\\\\-262.8989\\\\239.4047\\\\274.01\\\\-262.9743\\\\241.7484\\\\274.01\\\\-262.5977\\\\244.0922\\\\274.01\\\\-260.6675\\\\246.4359\\\\274.01\\\\-259.6161\\\\248.7797\\\\274.01\\\\-257.2266\\\\251.0035\\\\274.01\\\\-255.0361\\\\253.4672\\\\274.01\\\\-252.5391\\\\256.0995\\\\274.01\\\\-251.2277\\\\258.1547\\\\274.01\\\\-246.7444\\\\262.8422\\\\274.01\\\\-243.1641\\\\266.3515\\\\274.01\\\\-239.7411\\\\269.8734\\\\274.01\\\\-238.4766\\\\270.9495\\\\274.01\\\\-237.2269\\\\272.2172\\\\274.01\\\\-236.1328\\\\273.5215\\\\274.01\\\\-235.0934\\\\274.5609\\\\274.01\\\\-233.7891\\\\275.6655\\\\274.01\\\\-232.5319\\\\276.9047\\\\274.01\\\\-231.4453\\\\278.1693\\\\274.01\\\\-227.917\\\\281.5922\\\\274.01\\\\-224.4141\\\\285.1802\\\\274.01\\\\-222.0703\\\\287.4025\\\\274.01\\\\-218.6841\\\\290.9672\\\\274.01\\\\-217.3828\\\\291.9709\\\\274.01\\\\-215.0391\\\\293.1788\\\\274.01\\\\-212.6953\\\\294.5138\\\\274.01\\\\-210.3516\\\\295.2614\\\\274.01\\\\-209.8994\\\\295.6547\\\\274.01\\\\-208.0078\\\\296.7083\\\\274.01\\\\-203.3203\\\\296.9372\\\\274.01\\\\-196.2891\\\\296.9317\\\\274.01\\\\-193.9453\\\\296.8988\\\\274.01\\\\-172.8516\\\\296.8482\\\\274.01\\\\-161.1328\\\\296.843\\\\274.01\\\\-137.6953\\\\296.8542\\\\274.01\\\\-130.6641\\\\296.8378\\\\274.01\\\\-107.2266\\\\296.8379\\\\274.01\\\\-93.16406\\\\296.8208\\\\274.01\\\\-74.41406\\\\296.838\\\\274.01\\\\-65.03906\\\\296.8609\\\\274.01\\\\-50.97656\\\\296.8556\\\\274.01\\\\-46.28906\\\\296.9051\\\\274.01\\\\-41.60156\\\\298.5331\\\\274.01\\\\-39.25781\\\\298.5624\\\\274.01\\\\-36.91406\\\\297.1455\\\\274.01\\\\-34.57031\\\\297.0498\\\\274.01\\\\-32.22656\\\\298.5589\\\\274.01\\\\-25.19531\\\\298.5624\\\\274.01\\\\-22.85156\\\\297.2842\\\\274.01\\\\-20.50781\\\\298.5624\\\\274.01\\\\-1.757813\\\\298.5624\\\\274.01\\\\0.5859375\\\\297.2104\\\\274.01\\\\2.929688\\\\298.5624\\\\274.01\\\\5.273438\\\\297.6946\\\\274.01\\\\7.617188\\\\298.5168\\\\274.01\\\\9.960938\\\\298.5512\\\\274.01\\\\12.30469\\\\296.937\\\\274.01\\\\14.64844\\\\298.5478\\\\274.01\\\\16.99219\\\\298.5478\\\\274.01\\\\19.33594\\\\297.0782\\\\274.01\\\\21.67969\\\\296.844\\\\274.01\\\\23.54531\\\\297.9984\\\\274.01\\\\24.02344\\\\298.4023\\\\274.01\\\\24.50156\\\\297.9984\\\\274.01\\\\26.36719\\\\296.844\\\\274.01\\\\38.08594\\\\296.8381\\\\274.01\\\\52.14844\\\\296.8033\\\\274.01\\\\59.17969\\\\296.8033\\\\274.01\\\\73.24219\\\\296.7682\\\\274.01\\\\99.02344\\\\296.7566\\\\274.01\\\\117.7734\\\\296.7216\\\\274.01\\\\129.4922\\\\296.7152\\\\274.01\\\\131.8359\\\\295.9083\\\\274.01\\\\134.1797\\\\295.5245\\\\274.01\\\\138.8672\\\\295.4763\\\\274.01\\\\155.2734\\\\295.4763\\\\274.01\\\\176.3672\\\\295.3861\\\\274.01\\\\190.4297\\\\295.3718\\\\274.01\\\\197.4609\\\\295.4763\\\\274.01\\\\202.1484\\\\295.4454\\\\274.01\\\\204.4922\\\\295.3438\\\\274.01\\\\206.8359\\\\295.0757\\\\274.01\\\\209.1797\\\\294.4124\\\\274.01\\\\211.5234\\\\292.3133\\\\274.01\\\\213.8672\\\\291.0809\\\\274.01\\\\216.2109\\\\289.6743\\\\274.01\\\\217.3081\\\\288.6234\\\\274.01\\\\219.3558\\\\286.2797\\\\274.01\\\\221.8608\\\\283.9359\\\\274.01\\\\225.5859\\\\280.045\\\\274.01\\\\227.9297\\\\277.8885\\\\274.01\\\\230.2734\\\\275.2857\\\\274.01\\\\232.6172\\\\273.2225\\\\274.01\\\\233.6225\\\\272.2172\\\\274.01\\\\234.9609\\\\270.5822\\\\274.01\\\\238.2254\\\\267.5297\\\\274.01\\\\240.3691\\\\265.1859\\\\274.01\\\\244.3359\\\\261.3326\\\\274.01\\\\246.6797\\\\258.8034\\\\274.01\\\\249.0234\\\\256.7196\\\\274.01\\\\251.3672\\\\254.0746\\\\274.01\\\\254.5313\\\\251.1234\\\\274.01\\\\255.333\\\\248.7797\\\\274.01\\\\257.3723\\\\246.4359\\\\274.01\\\\259.7201\\\\244.0922\\\\274.01\\\\260.106\\\\241.7484\\\\274.01\\\\261.6423\\\\239.4047\\\\274.01\\\\261.0804\\\\237.0609\\\\274.01\\\\259.3552\\\\234.7172\\\\274.01\\\\258.3984\\\\233.7696\\\\274.01\\\\256.0547\\\\232.8757\\\\274.01\\\\253.7109\\\\232.792\\\\274.01\\\\251.3672\\\\232.8161\\\\274.01\\\\246.6797\\\\232.6981\\\\274.01\\\\244.3359\\\\232.725\\\\274.01\\\\239.6484\\\\232.9137\\\\274.01\\\\234.9609\\\\232.8525\\\\274.01\\\\225.5859\\\\232.8757\\\\274.01\\\\209.1797\\\\232.8757\\\\274.01\\\\204.4922\\\\232.7537\\\\274.01\\\\195.1172\\\\232.7794\\\\274.01\\\\171.6797\\\\232.792\\\\274.01\\\\164.6484\\\\232.7666\\\\274.01\\\\152.9297\\\\232.7666\\\\274.01\\\\148.2422\\\\232.792\\\\274.01\\\\138.8672\\\\232.7406\\\\274.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"380\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"1\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-18.16406\\\\233.0671\\\\277.01\\\\-32.22656\\\\233.1221\\\\277.01\\\\-41.60156\\\\233.1397\\\\277.01\\\\-43.94531\\\\233.1221\\\\277.01\\\\-50.97656\\\\233.1818\\\\277.01\\\\-60.35156\\\\233.1568\\\\277.01\\\\-67.38281\\\\232.9942\\\\277.01\\\\-74.41406\\\\233.0537\\\\277.01\\\\-79.10156\\\\233.0283\\\\277.01\\\\-88.47656\\\\233.0859\\\\277.01\\\\-95.50781\\\\233.1042\\\\277.01\\\\-97.85156\\\\234.0105\\\\277.01\\\\-100.1953\\\\234.062\\\\277.01\\\\-102.5391\\\\233.987\\\\277.01\\\\-104.8828\\\\234.0941\\\\277.01\\\\-109.5703\\\\234.1996\\\\277.01\\\\-114.2578\\\\234.1551\\\\277.01\\\\-123.6328\\\\234.1127\\\\277.01\\\\-125.9766\\\\234.1266\\\\277.01\\\\-128.3203\\\\234.0177\\\\277.01\\\\-135.3516\\\\234.1741\\\\277.01\\\\-140.0391\\\\234.1551\\\\277.01\\\\-142.3828\\\\234.1996\\\\277.01\\\\-147.0703\\\\234.1174\\\\277.01\\\\-156.4453\\\\234.1828\\\\277.01\\\\-163.4766\\\\234.1357\\\\277.01\\\\-165.8203\\\\234.1871\\\\277.01\\\\-168.1641\\\\234.3922\\\\277.01\\\\-177.5391\\\\234.4145\\\\277.01\\\\-179.8828\\\\234.3618\\\\277.01\\\\-184.5703\\\\234.3864\\\\277.01\\\\-186.9141\\\\234.4535\\\\277.01\\\\-189.2578\\\\234.4194\\\\277.01\\\\-191.6016\\\\234.471\\\\277.01\\\\-198.6328\\\\234.3891\\\\277.01\\\\-200.9766\\\\234.4386\\\\277.01\\\\-205.6641\\\\234.3731\\\\277.01\\\\-210.3516\\\\234.3731\\\\277.01\\\\-217.3828\\\\234.4242\\\\277.01\\\\-219.7266\\\\234.5104\\\\277.01\\\\-224.4141\\\\234.4944\\\\277.01\\\\-229.1016\\\\234.4218\\\\277.01\\\\-233.7891\\\\234.2678\\\\277.01\\\\-240.8203\\\\234.3296\\\\277.01\\\\-243.1641\\\\234.3917\\\\277.01\\\\-247.8516\\\\234.2029\\\\277.01\\\\-250.1953\\\\234.3235\\\\277.01\\\\-251.4551\\\\234.7172\\\\277.01\\\\-252.5391\\\\236.6024\\\\277.01\\\\-254.8828\\\\235.4008\\\\277.01\\\\-257.2266\\\\235.5063\\\\277.01\\\\-259.5703\\\\236.2655\\\\277.01\\\\-260.5737\\\\237.0609\\\\277.01\\\\-262.332\\\\239.4047\\\\277.01\\\\-262.689\\\\241.7484\\\\277.01\\\\-261.9141\\\\243.7504\\\\277.01\\\\-260.6889\\\\246.4359\\\\277.01\\\\-259.5703\\\\248.4867\\\\277.01\\\\-255.2138\\\\253.4672\\\\277.01\\\\-253.2667\\\\255.8109\\\\277.01\\\\-250.1953\\\\258.8662\\\\277.01\\\\-247.8516\\\\261.4125\\\\277.01\\\\-246.2862\\\\262.8422\\\\277.01\\\\-244.1278\\\\265.1859\\\\277.01\\\\-240.8203\\\\268.3467\\\\277.01\\\\-239.375\\\\269.8734\\\\277.01\\\\-236.9429\\\\272.2172\\\\277.01\\\\-233.7891\\\\275.382\\\\277.01\\\\-231.4453\\\\277.8091\\\\277.01\\\\-229.8568\\\\279.2484\\\\277.01\\\\-227.6842\\\\281.5922\\\\277.01\\\\-225.1387\\\\283.9359\\\\277.01\\\\-222.0703\\\\287.1957\\\\277.01\\\\-220.5108\\\\288.6234\\\\277.01\\\\-218.2596\\\\290.9672\\\\277.01\\\\-217.3828\\\\291.6321\\\\277.01\\\\-215.0391\\\\292.8542\\\\277.01\\\\-214.579\\\\293.3109\\\\277.01\\\\-212.6953\\\\294.5394\\\\277.01\\\\-210.3516\\\\295.0909\\\\277.01\\\\-209.68\\\\295.6547\\\\277.01\\\\-208.0078\\\\296.4548\\\\277.01\\\\-205.6641\\\\296.8658\\\\277.01\\\\-203.3203\\\\297.1639\\\\277.01\\\\-196.2891\\\\297.1488\\\\277.01\\\\-193.9453\\\\297.0495\\\\277.01\\\\-179.8828\\\\296.9703\\\\277.01\\\\-172.8516\\\\296.9012\\\\277.01\\\\-168.1641\\\\296.9407\\\\277.01\\\\-161.1328\\\\296.9063\\\\277.01\\\\-156.4453\\\\296.9453\\\\277.01\\\\-151.7578\\\\296.9222\\\\277.01\\\\-147.0703\\\\296.9559\\\\277.01\\\\-144.7266\\\\296.9085\\\\277.01\\\\-135.3516\\\\296.92\\\\277.01\\\\-121.2891\\\\296.8532\\\\277.01\\\\-107.2266\\\\296.8819\\\\277.01\\\\-93.16406\\\\296.7973\\\\277.01\\\\-90.82031\\\\296.8363\\\\277.01\\\\-83.78906\\\\296.8459\\\\277.01\\\\-81.44531\\\\296.8837\\\\277.01\\\\-74.41406\\\\296.9028\\\\277.01\\\\-65.03906\\\\296.96\\\\277.01\\\\-60.35156\\\\296.9494\\\\277.01\\\\-58.00781\\\\296.9872\\\\277.01\\\\-53.32031\\\\296.9377\\\\277.01\\\\-50.97656\\\\296.9579\\\\277.01\\\\-48.63281\\\\297.1438\\\\277.01\\\\-43.94531\\\\297.2253\\\\277.01\\\\-41.60156\\\\297.048\\\\277.01\\\\-39.25781\\\\297.3759\\\\277.01\\\\-36.91406\\\\296.9644\\\\277.01\\\\-34.57031\\\\297.3341\\\\277.01\\\\-32.22656\\\\297.1747\\\\277.01\\\\-29.88281\\\\297.4229\\\\277.01\\\\-27.53906\\\\297.3652\\\\277.01\\\\-25.19531\\\\297.4334\\\\277.01\\\\-22.85156\\\\297.3652\\\\277.01\\\\-18.16406\\\\297.4229\\\\277.01\\\\-11.13281\\\\297.4334\\\\277.01\\\\-4.101563\\\\297.3235\\\\277.01\\\\-1.757813\\\\297.4229\\\\277.01\\\\2.929688\\\\297.3531\\\\277.01\\\\5.273438\\\\297.2199\\\\277.01\\\\7.617188\\\\297.4055\\\\277.01\\\\9.960938\\\\297.3842\\\\277.01\\\\12.30469\\\\296.9557\\\\277.01\\\\14.64844\\\\297.2621\\\\277.01\\\\16.99219\\\\297.2089\\\\277.01\\\\21.67969\\\\296.916\\\\277.01\\\\24.02344\\\\297.3701\\\\277.01\\\\26.36719\\\\296.9067\\\\277.01\\\\28.71094\\\\296.9467\\\\277.01\\\\33.39844\\\\296.8867\\\\277.01\\\\40.42969\\\\296.8564\\\\277.01\\\\45.11719\\\\296.7865\\\\277.01\\\\56.83594\\\\296.6788\\\\277.01\\\\61.52344\\\\296.6724\\\\277.01\\\\73.24219\\\\296.5521\\\\277.01\\\\87.30469\\\\296.5362\\\\277.01\\\\91.99219\\\\296.4801\\\\277.01\\\\96.67969\\\\296.4873\\\\277.01\\\\101.3672\\\\296.4462\\\\277.01\\\\115.4297\\\\296.3703\\\\277.01\\\\117.7734\\\\296.3846\\\\277.01\\\\134.1797\\\\296.2709\\\\277.01\\\\136.5234\\\\296.2305\\\\277.01\\\\138.8672\\\\295.864\\\\277.01\\\\141.2109\\\\295.9064\\\\277.01\\\\145.8984\\\\295.8486\\\\277.01\\\\148.2422\\\\295.9027\\\\277.01\\\\150.5859\\\\295.833\\\\277.01\\\\155.2734\\\\295.864\\\\277.01\\\\157.6172\\\\295.8012\\\\277.01\\\\164.6484\\\\295.7516\\\\277.01\\\\169.3359\\\\295.6819\\\\277.01\\\\174.0234\\\\295.6819\\\\277.01\\\\176.3672\\\\295.5916\\\\277.01\\\\181.0547\\\\295.557\\\\277.01\\\\185.7422\\\\295.5742\\\\277.01\\\\192.7734\\\\295.5401\\\\277.01\\\\197.4609\\\\295.833\\\\277.01\\\\202.1484\\\\295.7684\\\\277.01\\\\204.4922\\\\295.4594\\\\277.01\\\\206.8359\\\\294.8185\\\\277.01\\\\209.1797\\\\294.347\\\\277.01\\\\211.5234\\\\292.4135\\\\277.01\\\\213.8672\\\\291.0298\\\\277.01\\\\216.2109\\\\289.437\\\\277.01\\\\217.074\\\\288.6234\\\\277.01\\\\218.5547\\\\286.9247\\\\277.01\\\\221.5416\\\\283.9359\\\\277.01\\\\225.5859\\\\279.7662\\\\277.01\\\\227.9297\\\\277.4546\\\\277.01\\\\230.2734\\\\274.9609\\\\277.01\\\\233.0324\\\\272.2172\\\\277.01\\\\234.9609\\\\270.159\\\\277.01\\\\241.9922\\\\262.9747\\\\277.01\\\\244.3264\\\\260.4984\\\\277.01\\\\246.6903\\\\258.1547\\\\277.01\\\\249.0234\\\\255.711\\\\277.01\\\\251.3672\\\\253.4211\\\\277.01\\\\255.433\\\\248.7797\\\\277.01\\\\257.1424\\\\246.4359\\\\277.01\\\\259.4697\\\\244.0922\\\\277.01\\\\261.12\\\\239.4047\\\\277.01\\\\260.5029\\\\237.0609\\\\277.01\\\\259.4318\\\\234.7172\\\\277.01\\\\258.3984\\\\233.723\\\\277.01\\\\256.0547\\\\233.0686\\\\277.01\\\\253.7109\\\\232.8224\\\\277.01\\\\251.3672\\\\233.3211\\\\277.01\\\\249.0234\\\\232.7988\\\\277.01\\\\246.6797\\\\232.5842\\\\277.01\\\\244.3359\\\\232.6886\\\\277.01\\\\239.6484\\\\233.2349\\\\277.01\\\\237.3047\\\\233.3486\\\\277.01\\\\234.9609\\\\233.0207\\\\277.01\\\\227.9297\\\\233.0108\\\\277.01\\\\225.5859\\\\233.0402\\\\277.01\\\\209.1797\\\\233.0726\\\\277.01\\\\206.8359\\\\232.9699\\\\277.01\\\\204.4922\\\\232.7719\\\\277.01\\\\199.8047\\\\232.7719\\\\277.01\\\\195.1172\\\\232.8224\\\\277.01\\\\183.3984\\\\232.8852\\\\277.01\\\\176.3672\\\\232.8253\\\\277.01\\\\171.6797\\\\232.8497\\\\277.01\\\\166.9922\\\\232.81\\\\277.01\\\\157.6172\\\\232.8253\\\\277.01\\\\152.9297\\\\232.8003\\\\277.01\\\\145.8984\\\\232.8497\\\\277.01\\\\138.8672\\\\232.7614\\\\277.01\\\\136.5234\\\\232.7746\\\\277.01\\\\129.4922\\\\232.7186\\\\277.01\\\\127.1484\\\\232.7614\\\\277.01\\\\120.1172\\\\232.7346\\\\277.01\\\\108.3984\\\\232.7481\\\\277.01\\\\106.0547\\\\232.7048\\\\277.01\\\\103.7109\\\\232.9735\\\\277.01\\\\101.3672\\\\232.9629\\\\277.01\\\\96.67969\\\\233.0726\\\\277.01\\\\87.30469\\\\233.091\\\\277.01\\\\75.58594\\\\233.0819\\\\277.01\\\\54.49219\\\\233.1221\\\\277.01\\\\47.46094\\\\233.1132\\\\277.01\\\\45.11719\\\\233.0766\\\\277.01\\\\43.65234\\\\232.3734\\\\277.01\\\\42.77344\\\\231.5049\\\\277.01\\\\42.03585\\\\230.0297\\\\277.01\\\\42.77344\\\\229.2833\\\\277.01\\\\45.11719\\\\228.6392\\\\277.01\\\\47.46094\\\\227.2099\\\\277.01\\\\49.80469\\\\226.1658\\\\277.01\\\\52.14844\\\\224.6817\\\\277.01\\\\54.49219\\\\223.8452\\\\277.01\\\\56.83594\\\\222.0004\\\\277.01\\\\59.17969\\\\220.4439\\\\277.01\\\\61.52344\\\\219.1271\\\\277.01\\\\63.86719\\\\217.0811\\\\277.01\\\\66.21094\\\\215.1756\\\\277.01\\\\67.88793\\\\213.6234\\\\277.01\\\\68.55469\\\\212.8797\\\\277.01\\\\70.89844\\\\210.7867\\\\277.01\\\\72.54482\\\\208.9359\\\\277.01\\\\75.58594\\\\205.6807\\\\277.01\\\\78.63421\\\\201.9047\\\\277.01\\\\80.27344\\\\199.5051\\\\277.01\\\\81.52466\\\\197.2172\\\\277.01\\\\83.37788\\\\194.8734\\\\277.01\\\\84.31507\\\\192.5297\\\\277.01\\\\85.73579\\\\190.1859\\\\277.01\\\\86.63975\\\\187.8422\\\\277.01\\\\88.17874\\\\185.4984\\\\277.01\\\\88.71944\\\\183.1547\\\\277.01\\\\89.50195\\\\180.8109\\\\277.01\\\\90.46938\\\\178.4672\\\\277.01\\\\91.07824\\\\176.1234\\\\277.01\\\\91.79828\\\\173.7797\\\\277.01\\\\92.70757\\\\171.4359\\\\277.01\\\\93.03977\\\\169.0922\\\\277.01\\\\93.52213\\\\162.0609\\\\277.01\\\\93.79673\\\\157.3734\\\\277.01\\\\93.88062\\\\152.6859\\\\277.01\\\\93.4634\\\\145.6547\\\\277.01\\\\92.9856\\\\138.6234\\\\277.01\\\\92.41903\\\\136.2797\\\\277.01\\\\91.40625\\\\133.9359\\\\277.01\\\\90.85396\\\\131.5922\\\\277.01\\\\90.15889\\\\129.2484\\\\277.01\\\\89.05895\\\\126.9047\\\\277.01\\\\88.55738\\\\124.5609\\\\277.01\\\\87.68194\\\\122.2172\\\\277.01\\\\86.25967\\\\119.8734\\\\277.01\\\\85.33871\\\\117.5297\\\\277.01\\\\84.04059\\\\115.1859\\\\277.01\\\\82.57069\\\\112.8422\\\\277.01\\\\81.18974\\\\110.4984\\\\277.01\\\\80.27344\\\\109.1834\\\\277.01\\\\77.70041\\\\105.8109\\\\277.01\\\\76.15247\\\\103.4672\\\\277.01\\\\71.9184\\\\98.77969\\\\277.01\\\\68.55469\\\\95.4427\\\\277.01\\\\63.86719\\\\91.32878\\\\277.01\\\\61.52344\\\\89.91453\\\\277.01\\\\59.17969\\\\88.0407\\\\277.01\\\\56.83594\\\\86.33517\\\\277.01\\\\54.49219\\\\85.22703\\\\277.01\\\\53.90625\\\\84.71719\\\\277.01\\\\52.14844\\\\83.53945\\\\277.01\\\\49.80469\\\\82.68647\\\\277.01\\\\47.46094\\\\81.38185\\\\277.01\\\\45.11719\\\\80.48212\\\\277.01\\\\42.77344\\\\79.08845\\\\277.01\\\\40.42969\\\\78.67566\\\\277.01\\\\38.08594\\\\78.01502\\\\277.01\\\\35.74219\\\\77.02299\\\\277.01\\\\33.39844\\\\76.44418\\\\277.01\\\\31.05469\\\\75.99764\\\\277.01\\\\26.36719\\\\74.59824\\\\277.01\\\\24.02344\\\\74.41319\\\\277.01\\\\16.99219\\\\74.11594\\\\277.01\\\\12.30469\\\\74.05871\\\\277.01\\\\7.617188\\\\74.18881\\\\277.01\\\\2.929688\\\\74.428\\\\277.01\\\\0.5859375\\\\74.75625\\\\277.01\\\\-1.757813\\\\75.58151\\\\277.01\\\\-4.101563\\\\76.20659\\\\277.01\\\\-6.445313\\\\76.63125\\\\277.01\\\\-8.789063\\\\77.37503\\\\277.01\\\\-11.13281\\\\78.3486\\\\277.01\\\\-13.47656\\\\78.8168\\\\277.01\\\\-15.82031\\\\79.47342\\\\277.01\\\\-18.16406\\\\80.87569\\\\277.01\\\\-20.50781\\\\81.76657\\\\277.01\\\\-22.85156\\\\83.13133\\\\277.01\\\\-25.19531\\\\83.96092\\\\277.01\\\\-27.53906\\\\85.77746\\\\277.01\\\\-29.88281\\\\87.03368\\\\277.01\\\\-32.22656\\\\88.52746\\\\277.01\\\\-34.57031\\\\90.49887\\\\277.01\\\\-36.2212\\\\91.74844\\\\277.01\\\\-39.02853\\\\94.09219\\\\277.01\\\\-41.60156\\\\96.38751\\\\277.01\\\\-43.955\\\\98.77969\\\\277.01\\\\-46.28906\\\\101.3187\\\\277.01\\\\-48.63281\\\\104.1332\\\\277.01\\\\-49.87989\\\\105.8109\\\\277.01\\\\-51.93118\\\\108.1547\\\\277.01\\\\-53.12213\\\\110.4984\\\\277.01\\\\-55.66406\\\\114.2724\\\\277.01\\\\-56.35877\\\\115.1859\\\\277.01\\\\-57.13709\\\\117.5297\\\\277.01\\\\-58.55372\\\\119.8734\\\\277.01\\\\-59.49023\\\\122.2172\\\\277.01\\\\-60.81275\\\\124.5609\\\\277.01\\\\-61.92934\\\\129.2484\\\\277.01\\\\-63.00622\\\\131.5922\\\\277.01\\\\-63.77141\\\\133.9359\\\\277.01\\\\-64.50639\\\\138.6234\\\\277.01\\\\-65.16927\\\\140.9672\\\\277.01\\\\-65.6146\\\\143.3109\\\\277.01\\\\-65.7933\\\\145.6547\\\\277.01\\\\-66.06516\\\\150.3422\\\\277.01\\\\-66.13699\\\\155.0297\\\\277.01\\\\-66.09879\\\\157.3734\\\\277.01\\\\-65.89844\\\\162.0609\\\\277.01\\\\-65.71338\\\\164.4047\\\\277.01\\\\-65.41684\\\\166.7484\\\\277.01\\\\-64.78502\\\\169.0922\\\\277.01\\\\-64.27641\\\\171.4359\\\\277.01\\\\-63.9314\\\\173.7797\\\\277.01\\\\-63.32528\\\\176.1234\\\\277.01\\\\-62.18676\\\\178.4672\\\\277.01\\\\-61.52936\\\\180.8109\\\\277.01\\\\-61.08647\\\\183.1547\\\\277.01\\\\-59.75184\\\\185.4984\\\\277.01\\\\-58.89447\\\\187.8422\\\\277.01\\\\-57.47786\\\\190.1859\\\\277.01\\\\-56.72234\\\\192.5297\\\\277.01\\\\-55.0424\\\\194.8734\\\\277.01\\\\-53.77855\\\\197.2172\\\\277.01\\\\-52.24194\\\\199.5609\\\\277.01\\\\-50.4126\\\\201.9047\\\\277.01\\\\-48.63281\\\\204.3003\\\\277.01\\\\-47.03415\\\\206.5922\\\\277.01\\\\-42.56292\\\\211.2797\\\\277.01\\\\-39.25781\\\\214.4452\\\\277.01\\\\-36.91406\\\\216.3386\\\\277.01\\\\-34.26873\\\\218.3109\\\\277.01\\\\-29.88281\\\\221.4518\\\\277.01\\\\-27.53906\\\\223.027\\\\277.01\\\\-25.19531\\\\224.3439\\\\277.01\\\\-23.14453\\\\225.3422\\\\277.01\\\\-20.50781\\\\226.7399\\\\277.01\\\\-18.16406\\\\228.2227\\\\277.01\\\\-15.82031\\\\229.069\\\\277.01\\\\-14.3044\\\\230.0297\\\\277.01\\\\-15.82031\\\\231.8656\\\\277.01\\\\-16.46402\\\\232.3734\\\\277.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"374\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"2\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-95.50781\\\\233.1042\\\\280.01\\\\-97.85156\\\\234.0105\\\\280.01\\\\-100.1953\\\\233.4044\\\\280.01\\\\-102.5391\\\\234.062\\\\280.01\\\\-104.8828\\\\233.3561\\\\280.01\\\\-109.5703\\\\234.1651\\\\280.01\\\\-111.9141\\\\234.0722\\\\280.01\\\\-116.6016\\\\234.0411\\\\280.01\\\\-121.2891\\\\234.0855\\\\280.01\\\\-128.3203\\\\234.0672\\\\280.01\\\\-135.3516\\\\234.1266\\\\280.01\\\\-140.0391\\\\234.1078\\\\280.01\\\\-142.3828\\\\234.1741\\\\280.01\\\\-149.4141\\\\234.0642\\\\280.01\\\\-156.4453\\\\234.1132\\\\280.01\\\\-163.4766\\\\234.0613\\\\280.01\\\\-165.8203\\\\234.1313\\\\280.01\\\\-168.1641\\\\234.3108\\\\280.01\\\\-177.5391\\\\234.3173\\\\280.01\\\\-182.2266\\\\234.2721\\\\280.01\\\\-186.9141\\\\234.3703\\\\280.01\\\\-191.6016\\\\234.3837\\\\280.01\\\\-198.6328\\\\234.3084\\\\280.01\\\\-200.9766\\\\234.3389\\\\280.01\\\\-208.0078\\\\234.2822\\\\280.01\\\\-217.3828\\\\234.3296\\\\280.01\\\\-219.7266\\\\234.3758\\\\280.01\\\\-229.1016\\\\234.3389\\\\280.01\\\\-233.7891\\\\234.2125\\\\280.01\\\\-240.8203\\\\234.2537\\\\280.01\\\\-243.1641\\\\234.2967\\\\280.01\\\\-247.8516\\\\234.0375\\\\280.01\\\\-250.1953\\\\234.1916\\\\280.01\\\\-252.181\\\\234.7172\\\\280.01\\\\-252.5391\\\\235.6379\\\\280.01\\\\-254.1504\\\\234.7172\\\\280.01\\\\-254.8828\\\\234.668\\\\280.01\\\\-259.5703\\\\236.2655\\\\280.01\\\\-260.5737\\\\237.0609\\\\280.01\\\\-262.3019\\\\239.4047\\\\280.01\\\\-262.5477\\\\241.7484\\\\280.01\\\\-261.5577\\\\244.0922\\\\280.01\\\\-260.8438\\\\246.4359\\\\280.01\\\\-259.5991\\\\248.7797\\\\280.01\\\\-254.8828\\\\253.9193\\\\280.01\\\\-253.2919\\\\255.8109\\\\280.01\\\\-250.1953\\\\258.8925\\\\280.01\\\\-247.8516\\\\261.4312\\\\280.01\\\\-246.2802\\\\262.8422\\\\280.01\\\\-244.138\\\\265.1859\\\\280.01\\\\-240.8203\\\\268.3534\\\\280.01\\\\-239.3737\\\\269.8734\\\\280.01\\\\-236.938\\\\272.2172\\\\280.01\\\\-233.7891\\\\275.3765\\\\280.01\\\\-231.4453\\\\277.7994\\\\280.01\\\\-229.1016\\\\279.9918\\\\280.01\\\\-226.7578\\\\282.4992\\\\280.01\\\\-225.119\\\\283.9359\\\\280.01\\\\-222.0703\\\\287.169\\\\280.01\\\\-220.4806\\\\288.6234\\\\280.01\\\\-218.2311\\\\290.9672\\\\280.01\\\\-217.3828\\\\291.613\\\\280.01\\\\-215.0391\\\\292.8596\\\\280.01\\\\-214.5047\\\\293.3109\\\\280.01\\\\-212.6953\\\\294.459\\\\280.01\\\\-210.3516\\\\295.1842\\\\280.01\\\\-208.0078\\\\296.4338\\\\280.01\\\\-205.6641\\\\296.8595\\\\280.01\\\\-203.3203\\\\297.1639\\\\280.01\\\\-196.2891\\\\297.1563\\\\280.01\\\\-193.9453\\\\297.0622\\\\280.01\\\\-184.5703\\\\296.9731\\\\280.01\\\\-172.8516\\\\296.8959\\\\280.01\\\\-165.8203\\\\296.9125\\\\280.01\\\\-161.1328\\\\296.8904\\\\280.01\\\\-156.4453\\\\296.9295\\\\280.01\\\\-144.7266\\\\296.9097\\\\280.01\\\\-137.6953\\\\296.9173\\\\280.01\\\\-125.9766\\\\296.8528\\\\280.01\\\\-118.9453\\\\296.8629\\\\280.01\\\\-116.6016\\\\296.8357\\\\280.01\\\\-109.5703\\\\296.8723\\\\280.01\\\\-102.5391\\\\296.8266\\\\280.01\\\\-93.16406\\\\296.7973\\\\280.01\\\\-76.75781\\\\296.8647\\\\280.01\\\\-72.07031\\\\296.9145\\\\280.01\\\\-67.38281\\\\296.9028\\\\280.01\\\\-65.03906\\\\296.9514\\\\280.01\\\\-60.35156\\\\296.9322\\\\280.01\\\\-55.66406\\\\296.9622\\\\280.01\\\\-53.32031\\\\296.925\\\\280.01\\\\-48.63281\\\\296.9622\\\\280.01\\\\-46.28906\\\\296.8973\\\\280.01\\\\-41.60156\\\\296.9067\\\\280.01\\\\-39.25781\\\\297.0439\\\\280.01\\\\-36.91406\\\\296.9267\\\\280.01\\\\-34.57031\\\\297.1128\\\\280.01\\\\-32.22656\\\\296.9926\\\\280.01\\\\-29.88281\\\\297.3952\\\\280.01\\\\-27.53906\\\\297.0591\\\\280.01\\\\-25.19531\\\\297.3984\\\\280.01\\\\-22.85156\\\\297.0809\\\\280.01\\\\-20.50781\\\\297.0809\\\\280.01\\\\-18.16406\\\\297.3798\\\\280.01\\\\-13.47656\\\\297.4022\\\\280.01\\\\-11.13281\\\\297.2922\\\\280.01\\\\-8.789063\\\\297.4125\\\\280.01\\\\-4.101563\\\\297.3691\\\\280.01\\\\-1.757813\\\\297.4334\\\\280.01\\\\0.5859375\\\\297.3911\\\\280.01\\\\2.929688\\\\297.106\\\\280.01\\\\5.273438\\\\297.1626\\\\280.01\\\\7.617188\\\\297.409\\\\280.01\\\\9.960938\\\\297.3879\\\\280.01\\\\12.30469\\\\296.9377\\\\280.01\\\\14.64844\\\\297.0091\\\\280.01\\\\16.99219\\\\296.9358\\\\280.01\\\\19.33594\\\\297.0362\\\\280.01\\\\21.67969\\\\296.8867\\\\280.01\\\\24.02344\\\\297.1195\\\\280.01\\\\26.36719\\\\296.8762\\\\280.01\\\\33.39844\\\\296.8961\\\\280.01\\\\42.77344\\\\296.8163\\\\280.01\\\\56.83594\\\\296.6724\\\\280.01\\\\63.86719\\\\296.6577\\\\280.01\\\\68.55469\\\\296.5859\\\\280.01\\\\70.89844\\\\296.6028\\\\280.01\\\\77.92969\\\\296.5441\\\\280.01\\\\84.96094\\\\296.549\\\\280.01\\\\96.67969\\\\296.5208\\\\280.01\\\\101.3672\\\\296.4462\\\\280.01\\\\103.7109\\\\296.4668\\\\280.01\\\\113.0859\\\\296.4189\\\\280.01\\\\122.4609\\\\296.3348\\\\280.01\\\\136.5234\\\\296.2873\\\\280.01\\\\138.8672\\\\295.8791\\\\280.01\\\\141.2109\\\\296.1963\\\\280.01\\\\145.8984\\\\295.8486\\\\280.01\\\\148.2422\\\\295.9009\\\\280.01\\\\150.5859\\\\295.8172\\\\280.01\\\\155.2734\\\\295.8791\\\\280.01\\\\162.3047\\\\295.7684\\\\280.01\\\\164.6484\\\\295.7684\\\\280.01\\\\183.3984\\\\295.557\\\\280.01\\\\192.7734\\\\295.557\\\\280.01\\\\197.4609\\\\295.8172\\\\280.01\\\\202.1484\\\\295.7516\\\\280.01\\\\204.4922\\\\295.4439\\\\280.01\\\\206.8359\\\\294.8185\\\\280.01\\\\209.1797\\\\294.3583\\\\280.01\\\\211.5234\\\\292.4108\\\\280.01\\\\213.8672\\\\291.0471\\\\280.01\\\\216.2109\\\\289.452\\\\280.01\\\\217.0839\\\\288.6234\\\\280.01\\\\218.5547\\\\286.9506\\\\280.01\\\\221.5668\\\\283.9359\\\\280.01\\\\225.5859\\\\279.7481\\\\280.01\\\\227.9297\\\\277.4546\\\\280.01\\\\230.2734\\\\274.9423\\\\280.01\\\\233.0475\\\\272.2172\\\\280.01\\\\234.9609\\\\270.1762\\\\280.01\\\\237.5903\\\\267.5297\\\\280.01\\\\242.1654\\\\262.8422\\\\280.01\\\\244.3673\\\\260.4984\\\\280.01\\\\246.773\\\\258.1547\\\\280.01\\\\249.0142\\\\255.8109\\\\280.01\\\\251.3672\\\\253.4397\\\\280.01\\\\253.7109\\\\250.8472\\\\280.01\\\\255.4546\\\\248.7797\\\\280.01\\\\257.1065\\\\246.4359\\\\280.01\\\\259.3784\\\\244.0922\\\\280.01\\\\260.9815\\\\239.4047\\\\280.01\\\\260.4452\\\\237.0609\\\\280.01\\\\259.4202\\\\234.7172\\\\280.01\\\\258.3984\\\\233.7341\\\\280.01\\\\256.0547\\\\233.1091\\\\280.01\\\\253.7109\\\\232.7821\\\\280.01\\\\251.3672\\\\232.8781\\\\280.01\\\\249.0234\\\\232.6162\\\\280.01\\\\244.3359\\\\232.7025\\\\280.01\\\\241.9922\\\\232.9379\\\\280.01\\\\237.3047\\\\233.0766\\\\280.01\\\\234.9609\\\\233.0108\\\\280.01\\\\232.6172\\\\233.0402\\\\280.01\\\\227.9297\\\\233.0108\\\\280.01\\\\225.5859\\\\233.0498\\\\280.01\\\\211.5234\\\\233.0819\\\\280.01\\\\206.8359\\\\232.9594\\\\280.01\\\\204.4922\\\\232.7588\\\\280.01\\\\202.1484\\\\232.7848\\\\280.01\\\\183.3984\\\\232.8852\\\\280.01\\\\178.7109\\\\232.8467\\\\280.01\\\\162.3047\\\\232.8003\\\\280.01\\\\159.9609\\\\232.8253\\\\280.01\\\\143.5547\\\\232.8376\\\\280.01\\\\141.2109\\\\232.7746\\\\280.01\\\\136.5234\\\\232.7975\\\\280.01\\\\131.8359\\\\232.7322\\\\280.01\\\\127.1484\\\\232.7614\\\\280.01\\\\124.8047\\\\232.721\\\\280.01\\\\120.1172\\\\232.7481\\\\280.01\\\\113.0859\\\\232.7071\\\\280.01\\\\106.0547\\\\232.721\\\\280.01\\\\103.7109\\\\232.9629\\\\280.01\\\\101.3672\\\\232.9735\\\\280.01\\\\96.67969\\\\233.0819\\\\280.01\\\\82.61719\\\\233.1001\\\\280.01\\\\77.92969\\\\233.0726\\\\280.01\\\\73.24219\\\\233.1132\\\\280.01\\\\63.86719\\\\233.1221\\\\280.01\\\\56.83594\\\\233.0951\\\\280.01\\\\47.46094\\\\233.1221\\\\280.01\\\\45.11719\\\\233.0726\\\\280.01\\\\44.1779\\\\232.3734\\\\280.01\\\\42.77344\\\\230.9901\\\\280.01\\\\42.0716\\\\230.0297\\\\280.01\\\\42.77344\\\\229.2739\\\\280.01\\\\45.11719\\\\228.632\\\\280.01\\\\47.46094\\\\227.1643\\\\280.01\\\\49.80469\\\\226.1565\\\\280.01\\\\52.14844\\\\224.6574\\\\280.01\\\\54.49219\\\\223.8228\\\\280.01\\\\56.83594\\\\221.9803\\\\280.01\\\\59.17969\\\\220.4287\\\\280.01\\\\61.52344\\\\219.0851\\\\280.01\\\\62.3638\\\\218.3109\\\\280.01\\\\66.21094\\\\215.1389\\\\280.01\\\\67.85556\\\\213.6234\\\\280.01\\\\68.55469\\\\212.8447\\\\280.01\\\\70.89844\\\\210.758\\\\280.01\\\\72.51065\\\\208.9359\\\\280.01\\\\75.58594\\\\205.632\\\\280.01\\\\78.58622\\\\201.9047\\\\280.01\\\\80.27344\\\\199.4393\\\\280.01\\\\81.50667\\\\197.2172\\\\280.01\\\\83.34528\\\\194.8734\\\\280.01\\\\84.28662\\\\192.5297\\\\280.01\\\\85.68763\\\\190.1859\\\\280.01\\\\86.60807\\\\187.8422\\\\280.01\\\\88.12763\\\\185.4984\\\\280.01\\\\88.70493\\\\183.1547\\\\280.01\\\\89.40742\\\\180.8109\\\\280.01\\\\90.42329\\\\178.4672\\\\280.01\\\\91.73814\\\\173.7797\\\\280.01\\\\92.66084\\\\171.4359\\\\280.01\\\\93.0161\\\\169.0922\\\\280.01\\\\93.30299\\\\164.4047\\\\280.01\\\\93.50073\\\\162.0609\\\\280.01\\\\93.76065\\\\157.3734\\\\280.01\\\\93.84212\\\\155.0297\\\\280.01\\\\93.83057\\\\152.6859\\\\280.01\\\\93.44278\\\\145.6547\\\\280.01\\\\92.97371\\\\138.6234\\\\280.01\\\\92.3933\\\\136.2797\\\\280.01\\\\91.39597\\\\133.9359\\\\280.01\\\\90.83705\\\\131.5922\\\\280.01\\\\90.15889\\\\129.2484\\\\280.01\\\\89.05895\\\\126.9047\\\\280.01\\\\88.55198\\\\124.5609\\\\280.01\\\\87.66837\\\\122.2172\\\\280.01\\\\86.27174\\\\119.8734\\\\280.01\\\\85.36424\\\\117.5297\\\\280.01\\\\84.03852\\\\115.1859\\\\280.01\\\\81.2221\\\\110.4984\\\\280.01\\\\80.27344\\\\109.1401\\\\280.01\\\\77.76597\\\\105.8109\\\\280.01\\\\76.17959\\\\103.4672\\\\280.01\\\\74.11412\\\\101.1234\\\\280.01\\\\71.95528\\\\98.77969\\\\280.01\\\\68.55469\\\\95.41232\\\\280.01\\\\66.21094\\\\93.31791\\\\280.01\\\\63.86719\\\\91.31586\\\\280.01\\\\61.52344\\\\89.8781\\\\280.01\\\\61.00544\\\\89.40469\\\\280.01\\\\56.83594\\\\86.32603\\\\280.01\\\\54.49219\\\\85.22374\\\\280.01\\\\53.91059\\\\84.71719\\\\280.01\\\\52.14844\\\\83.52773\\\\280.01\\\\49.80469\\\\82.67247\\\\280.01\\\\47.46094\\\\81.38185\\\\280.01\\\\45.11719\\\\80.45787\\\\280.01\\\\42.77344\\\\79.08102\\\\280.01\\\\40.42969\\\\78.68263\\\\280.01\\\\38.08594\\\\78.00113\\\\280.01\\\\35.74219\\\\76.98543\\\\280.01\\\\33.39844\\\\76.44418\\\\280.01\\\\31.05469\\\\75.99764\\\\280.01\\\\28.71094\\\\75.21002\\\\280.01\\\\26.36719\\\\74.59824\\\\280.01\\\\24.02344\\\\74.40105\\\\280.01\\\\14.64844\\\\74.0463\\\\280.01\\\\9.960938\\\\74.09591\\\\280.01\\\\5.273438\\\\74.27516\\\\280.01\\\\2.929688\\\\74.42056\\\\280.01\\\\0.5859375\\\\74.75625\\\\280.01\\\\-1.757813\\\\75.52052\\\\280.01\\\\-4.101563\\\\76.1918\\\\280.01\\\\-6.445313\\\\76.61909\\\\280.01\\\\-8.789063\\\\77.32118\\\\280.01\\\\-11.13281\\\\78.33466\\\\280.01\\\\-13.47656\\\\78.80508\\\\280.01\\\\-15.82031\\\\79.44011\\\\280.01\\\\-18.16406\\\\80.84683\\\\280.01\\\\-20.50781\\\\81.74243\\\\280.01\\\\-22.85156\\\\83.11391\\\\280.01\\\\-25.19531\\\\83.92464\\\\280.01\\\\-27.53906\\\\85.7457\\\\280.01\\\\-29.88281\\\\86.96401\\\\280.01\\\\-32.22656\\\\88.49249\\\\280.01\\\\-34.57031\\\\90.47998\\\\280.01\\\\-36.28038\\\\91.74844\\\\280.01\\\\-39.07948\\\\94.09219\\\\280.01\\\\-41.60156\\\\96.27657\\\\280.01\\\\-44.03106\\\\98.77969\\\\280.01\\\\-46.28906\\\\101.2371\\\\280.01\\\\-48.63281\\\\104.0658\\\\280.01\\\\-49.94405\\\\105.8109\\\\280.01\\\\-51.96513\\\\108.1547\\\\280.01\\\\-53.18715\\\\110.4984\\\\280.01\\\\-54.74057\\\\112.8422\\\\280.01\\\\-56.42476\\\\115.1859\\\\280.01\\\\-57.19754\\\\117.5297\\\\280.01\\\\-58.65653\\\\119.8734\\\\280.01\\\\-59.544\\\\122.2172\\\\280.01\\\\-60.8896\\\\124.5609\\\\280.01\\\\-62.0208\\\\129.2484\\\\280.01\\\\-63.12626\\\\131.5922\\\\280.01\\\\-63.84518\\\\133.9359\\\\280.01\\\\-64.19696\\\\136.2797\\\\280.01\\\\-64.66129\\\\138.6234\\\\280.01\\\\-65.33604\\\\140.9672\\\\280.01\\\\-65.68493\\\\143.3109\\\\280.01\\\\-66.13839\\\\150.3422\\\\280.01\\\\-66.21657\\\\155.0297\\\\280.01\\\\-66.17729\\\\157.3734\\\\280.01\\\\-65.96361\\\\162.0609\\\\280.01\\\\-65.54951\\\\166.7484\\\\280.01\\\\-64.3463\\\\171.4359\\\\280.01\\\\-63.998\\\\173.7797\\\\280.01\\\\-63.46595\\\\176.1234\\\\280.01\\\\-62.32813\\\\178.4672\\\\280.01\\\\-61.61405\\\\180.8109\\\\280.01\\\\-61.15642\\\\183.1547\\\\280.01\\\\-59.86389\\\\185.4984\\\\280.01\\\\-58.95148\\\\187.8422\\\\280.01\\\\-57.52841\\\\190.1859\\\\280.01\\\\-56.74625\\\\192.5297\\\\280.01\\\\-55.1036\\\\194.8734\\\\280.01\\\\-53.84033\\\\197.2172\\\\280.01\\\\-52.26687\\\\199.5609\\\\280.01\\\\-48.63281\\\\204.3615\\\\280.01\\\\-47.1009\\\\206.5922\\\\280.01\\\\-42.59905\\\\211.2797\\\\280.01\\\\-39.25781\\\\214.5093\\\\280.01\\\\-36.91406\\\\216.3794\\\\280.01\\\\-34.31858\\\\218.3109\\\\280.01\\\\-29.88281\\\\221.4737\\\\280.01\\\\-27.53906\\\\223.0821\\\\280.01\\\\-25.19531\\\\224.3511\\\\280.01\\\\-20.50781\\\\226.7643\\\\280.01\\\\-18.16406\\\\228.2682\\\\280.01\\\\-15.82031\\\\229.0908\\\\280.01\\\\-14.92839\\\\230.0297\\\\280.01\\\\-15.82031\\\\231.4137\\\\280.01\\\\-16.95631\\\\232.3734\\\\280.01\\\\-18.16406\\\\233.0537\\\\280.01\\\\-20.50781\\\\233.0951\\\\280.01\\\\-39.25781\\\\233.1397\\\\280.01\\\\-43.94531\\\\233.1221\\\\280.01\\\\-53.32031\\\\233.1736\\\\280.01\\\\-60.35156\\\\233.1736\\\\280.01\\\\-65.03906\\\\232.9735\\\\280.01\\\\-74.41406\\\\233.0441\\\\280.01\\\\-79.10156\\\\233.0145\\\\280.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846442461900001.533642576430\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"354\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"3\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-18.16406\\\\233.0766\\\\283.01\\\\-27.53906\\\\233.1221\\\\283.01\\\\-32.22656\\\\233.1042\\\\283.01\\\\-39.25781\\\\233.1397\\\\283.01\\\\-48.63281\\\\233.131\\\\283.01\\\\-53.32031\\\\233.1652\\\\283.01\\\\-60.35156\\\\233.1652\\\\283.01\\\\-62.69531\\\\233.0576\\\\283.01\\\\-65.03906\\\\232.8497\\\\283.01\\\\-67.38281\\\\232.9304\\\\283.01\\\\-74.41406\\\\233.0245\\\\283.01\\\\-86.13281\\\\232.9942\\\\283.01\\\\-88.47656\\\\233.0479\\\\283.01\\\\-97.85156\\\\233.0992\\\\283.01\\\\-107.2266\\\\233.1132\\\\283.01\\\\-109.5703\\\\233.2337\\\\283.01\\\\-111.9141\\\\233.9859\\\\283.01\\\\-116.6016\\\\233.9503\\\\283.01\\\\-121.2891\\\\234.0035\\\\283.01\\\\-130.6641\\\\234.0088\\\\283.01\\\\-135.3516\\\\234.0855\\\\283.01\\\\-140.0391\\\\234.0722\\\\283.01\\\\-142.3828\\\\234.1266\\\\283.01\\\\-149.4141\\\\234.0211\\\\283.01\\\\-151.7578\\\\234.0591\\\\283.01\\\\-161.1328\\\\234.0243\\\\283.01\\\\-165.8203\\\\234.0691\\\\283.01\\\\-168.1641\\\\234.2175\\\\283.01\\\\-172.8516\\\\234.2252\\\\283.01\\\\-175.1953\\\\234.1797\\\\283.01\\\\-179.8828\\\\234.2112\\\\283.01\\\\-184.5703\\\\234.2869\\\\283.01\\\\-191.6016\\\\234.2721\\\\283.01\\\\-198.6328\\\\234.2187\\\\283.01\\\\-200.9766\\\\234.2902\\\\283.01\\\\-205.6641\\\\234.205\\\\283.01\\\\-210.3516\\\\234.1861\\\\283.01\\\\-212.6953\\\\234.2398\\\\283.01\\\\-219.7266\\\\234.3115\\\\283.01\\\\-229.1016\\\\234.3235\\\\283.01\\\\-233.7891\\\\234.2362\\\\283.01\\\\-236.1328\\\\234.2789\\\\283.01\\\\-243.1641\\\\234.2502\\\\283.01\\\\-247.8516\\\\233.9138\\\\283.01\\\\-250.1953\\\\234.1229\\\\283.01\\\\-254.8828\\\\234.6658\\\\283.01\\\\-257.2266\\\\235.4369\\\\283.01\\\\-259.5703\\\\236.3773\\\\283.01\\\\-260.3961\\\\237.0609\\\\283.01\\\\-262.014\\\\239.4047\\\\283.01\\\\-262.2271\\\\241.7484\\\\283.01\\\\-261.3423\\\\244.0922\\\\283.01\\\\-260.8191\\\\246.4359\\\\283.01\\\\-259.7416\\\\248.7797\\\\283.01\\\\-257.5902\\\\251.1234\\\\283.01\\\\-255.5257\\\\253.4672\\\\283.01\\\\-252.5391\\\\256.6338\\\\283.01\\\\-250.1953\\\\258.856\\\\283.01\\\\-247.8516\\\\261.3733\\\\283.01\\\\-246.2019\\\\262.8422\\\\283.01\\\\-243.1641\\\\266.1315\\\\283.01\\\\-241.6046\\\\267.5297\\\\283.01\\\\-239.419\\\\269.8734\\\\283.01\\\\-236.9491\\\\272.2172\\\\283.01\\\\-233.7891\\\\275.3661\\\\283.01\\\\-231.4453\\\\277.8091\\\\283.01\\\\-229.1016\\\\280.0036\\\\283.01\\\\-226.7578\\\\282.509\\\\283.01\\\\-225.1317\\\\283.9359\\\\283.01\\\\-222.0703\\\\287.1792\\\\283.01\\\\-220.4806\\\\288.6234\\\\283.01\\\\-218.2311\\\\290.9672\\\\283.01\\\\-217.3828\\\\291.613\\\\283.01\\\\-215.0391\\\\292.905\\\\283.01\\\\-212.6953\\\\294.4828\\\\283.01\\\\-210.3516\\\\295.2615\\\\283.01\\\\-208.0078\\\\296.4508\\\\283.01\\\\-205.6641\\\\296.8789\\\\283.01\\\\-203.3203\\\\297.1639\\\\283.01\\\\-196.2891\\\\297.1563\\\\283.01\\\\-191.6016\\\\297.023\\\\283.01\\\\-189.2578\\\\297.0306\\\\283.01\\\\-182.2266\\\\296.948\\\\283.01\\\\-172.8516\\\\296.9022\\\\283.01\\\\-158.7891\\\\296.8988\\\\283.01\\\\-147.0703\\\\296.9323\\\\283.01\\\\-142.3828\\\\296.9074\\\\283.01\\\\-133.0078\\\\296.92\\\\283.01\\\\-123.6328\\\\296.8528\\\\283.01\\\\-116.6016\\\\296.8356\\\\283.01\\\\-111.9141\\\\296.8723\\\\283.01\\\\-100.1953\\\\296.8075\\\\283.01\\\\-74.41406\\\\296.8938\\\\283.01\\\\-67.38281\\\\296.9028\\\\283.01\\\\-62.69531\\\\296.96\\\\283.01\\\\-58.00781\\\\296.9234\\\\283.01\\\\-41.60156\\\\296.9081\\\\283.01\\\\-36.91406\\\\297.0328\\\\283.01\\\\-34.57031\\\\297.3842\\\\283.01\\\\-32.22656\\\\297.1128\\\\283.01\\\\-27.53906\\\\297.3192\\\\283.01\\\\-25.19531\\\\296.9926\\\\283.01\\\\-20.50781\\\\297.1747\\\\283.01\\\\-18.16406\\\\297.3531\\\\283.01\\\\-15.82031\\\\297.4125\\\\283.01\\\\-6.445313\\\\297.4125\\\\283.01\\\\-4.101563\\\\297.257\\\\283.01\\\\-1.757813\\\\297.4229\\\\283.01\\\\9.960938\\\\297.4125\\\\283.01\\\\12.30469\\\\296.9377\\\\283.01\\\\16.99219\\\\296.9467\\\\283.01\\\\21.67969\\\\296.8877\\\\283.01\\\\33.39844\\\\296.8771\\\\283.01\\\\40.42969\\\\296.8369\\\\283.01\\\\45.11719\\\\296.7643\\\\283.01\\\\52.14844\\\\296.7021\\\\283.01\\\\56.83594\\\\296.6906\\\\283.01\\\\68.55469\\\\296.5732\\\\283.01\\\\75.58594\\\\296.5859\\\\283.01\\\\77.92969\\\\296.5441\\\\283.01\\\\84.96094\\\\296.5441\\\\283.01\\\\87.30469\\\\296.4813\\\\283.01\\\\91.99219\\\\296.5154\\\\283.01\\\\110.7422\\\\296.4051\\\\283.01\\\\117.7734\\\\296.3495\\\\283.01\\\\129.4922\\\\296.2929\\\\283.01\\\\131.8359\\\\296.3023\\\\283.01\\\\136.5234\\\\295.8486\\\\283.01\\\\143.5547\\\\295.864\\\\283.01\\\\152.9297\\\\295.8012\\\\283.01\\\\155.2734\\\\295.8486\\\\283.01\\\\164.6484\\\\295.6998\\\\283.01\\\\169.3359\\\\295.7173\\\\283.01\\\\176.3672\\\\295.5916\\\\283.01\\\\188.0859\\\\295.5235\\\\283.01\\\\192.7734\\\\295.5401\\\\283.01\\\\197.4609\\\\295.833\\\\283.01\\\\202.1484\\\\295.7516\\\\283.01\\\\204.4922\\\\295.4439\\\\283.01\\\\206.8359\\\\294.8185\\\\283.01\\\\209.1797\\\\294.3532\\\\283.01\\\\211.5234\\\\292.4178\\\\283.01\\\\213.8672\\\\291.0471\\\\283.01\\\\216.2109\\\\289.437\\\\283.01\\\\217.074\\\\288.6234\\\\283.01\\\\218.5547\\\\286.9377\\\\283.01\\\\221.5668\\\\283.9359\\\\283.01\\\\225.5859\\\\279.7481\\\\283.01\\\\227.9297\\\\277.4225\\\\283.01\\\\230.2734\\\\274.9423\\\\283.01\\\\233.014\\\\272.2172\\\\283.01\\\\234.9609\\\\270.1737\\\\283.01\\\\237.6074\\\\267.5297\\\\283.01\\\\244.4276\\\\260.4984\\\\283.01\\\\246.7938\\\\258.1547\\\\283.01\\\\251.3978\\\\253.4672\\\\283.01\\\\253.7109\\\\250.8942\\\\283.01\\\\255.4174\\\\248.7797\\\\283.01\\\\257.0561\\\\246.4359\\\\283.01\\\\259.226\\\\244.0922\\\\283.01\\\\260.0378\\\\241.7484\\\\283.01\\\\260.5957\\\\239.4047\\\\283.01\\\\260.2749\\\\237.0609\\\\283.01\\\\259.2681\\\\234.7172\\\\283.01\\\\258.3984\\\\233.8742\\\\283.01\\\\256.0547\\\\233.2096\\\\283.01\\\\253.7109\\\\232.7947\\\\283.01\\\\251.3672\\\\232.6745\\\\283.01\\\\246.6797\\\\232.7162\\\\283.01\\\\244.3359\\\\232.6725\\\\283.01\\\\241.9922\\\\232.927\\\\283.01\\\\239.6484\\\\233.0007\\\\283.01\\\\230.2734\\\\233.0007\\\\283.01\\\\216.2109\\\\233.0819\\\\283.01\\\\209.1797\\\\233.0726\\\\283.01\\\\206.8359\\\\232.9839\\\\283.01\\\\204.4922\\\\232.7588\\\\283.01\\\\199.8047\\\\232.7719\\\\283.01\\\\195.1172\\\\232.8346\\\\283.01\\\\185.7422\\\\232.8346\\\\283.01\\\\183.3984\\\\232.8617\\\\283.01\\\\176.3672\\\\232.8224\\\\283.01\\\\174.0234\\\\232.8497\\\\283.01\\\\162.3047\\\\232.8003\\\\283.01\\\\159.9609\\\\232.8376\\\\283.01\\\\155.2734\\\\232.8253\\\\283.01\\\\145.8984\\\\232.8497\\\\283.01\\\\138.8672\\\\232.7588\\\\283.01\\\\136.5234\\\\232.7975\\\\283.01\\\\131.8359\\\\232.7456\\\\283.01\\\\122.4609\\\\232.7746\\\\283.01\\\\117.7734\\\\232.7186\\\\283.01\\\\106.0547\\\\232.721\\\\283.01\\\\103.7109\\\\232.9735\\\\283.01\\\\101.3672\\\\232.9735\\\\283.01\\\\99.02344\\\\233.0766\\\\283.01\\\\89.64844\\\\233.0726\\\\283.01\\\\82.61719\\\\233.1091\\\\283.01\\\\77.92969\\\\233.0766\\\\283.01\\\\75.58594\\\\233.1042\\\\283.01\\\\63.86719\\\\233.131\\\\283.01\\\\56.83594\\\\233.1042\\\\283.01\\\\54.49219\\\\233.131\\\\283.01\\\\45.11719\\\\233.0726\\\\283.01\\\\44.18501\\\\232.3734\\\\283.01\\\\42.77344\\\\230.9932\\\\283.01\\\\42.06263\\\\230.0297\\\\283.01\\\\42.77344\\\\229.2645\\\\283.01\\\\45.11719\\\\228.6247\\\\283.01\\\\47.46094\\\\227.1533\\\\283.01\\\\49.80469\\\\226.1347\\\\283.01\\\\52.14844\\\\224.6675\\\\283.01\\\\54.49219\\\\223.8092\\\\283.01\\\\56.83594\\\\221.9546\\\\283.01\\\\59.17969\\\\220.3699\\\\283.01\\\\61.52344\\\\219.056\\\\283.01\\\\62.3228\\\\218.3109\\\\283.01\\\\66.21094\\\\215.1232\\\\283.01\\\\67.84627\\\\213.6234\\\\283.01\\\\68.55469\\\\212.8298\\\\283.01\\\\70.89844\\\\210.6976\\\\283.01\\\\74.68501\\\\206.5922\\\\283.01\\\\76.71939\\\\204.2484\\\\283.01\\\\78.54079\\\\201.9047\\\\283.01\\\\80.27344\\\\199.3159\\\\283.01\\\\81.47583\\\\197.2172\\\\283.01\\\\83.28172\\\\194.8734\\\\283.01\\\\84.25013\\\\192.5297\\\\283.01\\\\85.65463\\\\190.1859\\\\283.01\\\\86.55134\\\\187.8422\\\\283.01\\\\88.09267\\\\185.4984\\\\283.01\\\\89.37801\\\\180.8109\\\\283.01\\\\90.42329\\\\178.4672\\\\283.01\\\\91.70932\\\\173.7797\\\\283.01\\\\92.6346\\\\171.4359\\\\283.01\\\\93.02129\\\\169.0922\\\\283.01\\\\93.30979\\\\164.4047\\\\283.01\\\\93.6478\\\\159.7172\\\\283.01\\\\93.86867\\\\155.0297\\\\283.01\\\\93.75715\\\\150.3422\\\\283.01\\\\93.46669\\\\145.6547\\\\283.01\\\\93.27223\\\\143.3109\\\\283.01\\\\92.9856\\\\138.6234\\\\283.01\\\\92.43455\\\\136.2797\\\\283.01\\\\91.41665\\\\133.9359\\\\283.01\\\\90.85938\\\\131.5922\\\\283.01\\\\90.19202\\\\129.2484\\\\283.01\\\\89.08047\\\\126.9047\\\\283.01\\\\88.56892\\\\124.5609\\\\283.01\\\\87.69531\\\\122.2172\\\\283.01\\\\86.27174\\\\119.8734\\\\283.01\\\\85.33871\\\\117.5297\\\\283.01\\\\84.03852\\\\115.1859\\\\283.01\\\\81.2221\\\\110.4984\\\\283.01\\\\80.27344\\\\109.1604\\\\283.01\\\\77.73295\\\\105.8109\\\\283.01\\\\76.16416\\\\103.4672\\\\283.01\\\\74.09638\\\\101.1234\\\\283.01\\\\71.9184\\\\98.77969\\\\283.01\\\\68.55469\\\\95.4427\\\\283.01\\\\66.21094\\\\93.35094\\\\283.01\\\\63.86719\\\\91.35781\\\\283.01\\\\61.52344\\\\89.90582\\\\283.01\\\\59.17969\\\\88.0407\\\\283.01\\\\56.83594\\\\86.3728\\\\283.01\\\\54.49219\\\\85.23886\\\\283.01\\\\52.14844\\\\83.56911\\\\283.01\\\\49.80469\\\\82.70029\\\\283.01\\\\47.46094\\\\81.4009\\\\283.01\\\\45.11719\\\\80.45787\\\\283.01\\\\42.77344\\\\79.09343\\\\283.01\\\\40.42969\\\\78.69472\\\\283.01\\\\38.08594\\\\78.00113\\\\283.01\\\\35.74219\\\\77.01344\\\\283.01\\\\33.39844\\\\76.44418\\\\283.01\\\\31.05469\\\\76.01651\\\\283.01\\\\28.71094\\\\75.22678\\\\283.01\\\\26.36719\\\\74.61642\\\\283.01\\\\24.02344\\\\74.40105\\\\283.01\\\\14.64844\\\\74.05312\\\\283.01\\\\9.960938\\\\74.09591\\\\283.01\\\\2.929688\\\\74.41573\\\\283.01\\\\0.5859375\\\\74.74547\\\\283.01\\\\-4.101563\\\\76.1767\\\\283.01\\\\-6.445313\\\\76.62514\\\\283.01\\\\-8.789063\\\\77.27011\\\\283.01\\\\-11.13281\\\\78.3245\\\\283.01\\\\-13.47656\\\\78.80508\\\\283.01\\\\-15.82031\\\\79.42928\\\\283.01\\\\-18.16406\\\\80.84683\\\\283.01\\\\-20.50781\\\\81.73235\\\\283.01\\\\-22.85156\\\\83.10505\\\\283.01\\\\-25.19531\\\\83.8896\\\\283.01\\\\-27.53906\\\\85.73323\\\\283.01\\\\-29.88281\\\\86.93073\\\\283.01\\\\-32.22656\\\\88.45541\\\\283.01\\\\-34.57031\\\\90.46002\\\\283.01\\\\-36.32372\\\\91.74844\\\\283.01\\\\-41.60156\\\\96.22536\\\\283.01\\\\-44.08482\\\\98.77969\\\\283.01\\\\-46.28906\\\\101.1685\\\\283.01\\\\-48.63281\\\\104.0022\\\\283.01\\\\-49.98205\\\\105.8109\\\\283.01\\\\-51.99305\\\\108.1547\\\\283.01\\\\-53.27454\\\\110.4984\\\\283.01\\\\-54.77706\\\\112.8422\\\\283.01\\\\-56.46552\\\\115.1859\\\\283.01\\\\-57.23792\\\\117.5297\\\\283.01\\\\-58.69997\\\\119.8734\\\\283.01\\\\-59.59329\\\\122.2172\\\\283.01\\\\-60.93391\\\\124.5609\\\\283.01\\\\-61.45277\\\\126.9047\\\\283.01\\\\-62.0745\\\\129.2484\\\\283.01\\\\-63.20891\\\\131.5922\\\\283.01\\\\-63.89457\\\\133.9359\\\\283.01\\\\-64.2122\\\\136.2797\\\\283.01\\\\-64.74208\\\\138.6234\\\\283.01\\\\-65.41684\\\\140.9672\\\\283.01\\\\-65.71338\\\\143.3109\\\\283.01\\\\-66.04911\\\\147.9984\\\\283.01\\\\-66.25537\\\\152.6859\\\\283.01\\\\-66.28944\\\\155.0297\\\\283.01\\\\-66.13839\\\\159.7172\\\\283.01\\\\-65.84704\\\\164.4047\\\\283.01\\\\-65.6146\\\\166.7484\\\\283.01\\\\-65.16927\\\\169.0922\\\\283.01\\\\-64.43269\\\\171.4359\\\\283.01\\\\-64.04324\\\\173.7797\\\\283.01\\\\-63.56812\\\\176.1234\\\\283.01\\\\-62.48605\\\\178.4672\\\\283.01\\\\-61.66916\\\\180.8109\\\\283.01\\\\-61.23355\\\\183.1547\\\\283.01\\\\-60\\\\185.4984\\\\283.01\\\\-59.02929\\\\187.8422\\\\283.01\\\\-57.57813\\\\190.1859\\\\283.01\\\\-56.76455\\\\192.5297\\\\283.01\\\\-55.16396\\\\194.8734\\\\283.01\\\\-53.87801\\\\197.2172\\\\283.01\\\\-52.31674\\\\199.5609\\\\283.01\\\\-48.63281\\\\204.4387\\\\283.01\\\\-47.14196\\\\206.5922\\\\283.01\\\\-42.63475\\\\211.2797\\\\283.01\\\\-39.25781\\\\214.554\\\\283.01\\\\-36.91406\\\\216.4344\\\\283.01\\\\-32.22656\\\\219.8671\\\\283.01\\\\-27.53906\\\\223.0999\\\\283.01\\\\-23.31792\\\\225.3422\\\\283.01\\\\-22.85156\\\\225.6686\\\\283.01\\\\-20.50781\\\\226.7934\\\\283.01\\\\-18.16406\\\\228.3114\\\\283.01\\\\-15.82031\\\\229.1045\\\\283.01\\\\-14.9365\\\\230.0297\\\\283.01\\\\-15.82031\\\\231.4054\\\\283.01\\\\-16.93359\\\\232.3734\\\\283.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846477463900001.467218939844\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"351\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"4\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-18.16406\\\\233.0766\\\\286.01\\\\-60.35156\\\\233.1818\\\\286.01\\\\-62.69531\\\\233.0766\\\\286.01\\\\-65.03906\\\\232.8253\\\\286.01\\\\-69.72656\\\\232.9942\\\\286.01\\\\-83.78906\\\\233.0441\\\\286.01\\\\-95.50781\\\\233.0671\\\\286.01\\\\-97.85156\\\\233.3067\\\\286.01\\\\-100.1953\\\\233.6324\\\\286.01\\\\-102.5391\\\\233.4044\\\\286.01\\\\-107.2266\\\\233.1842\\\\286.01\\\\-109.5703\\\\233.2251\\\\286.01\\\\-111.9141\\\\233.9738\\\\286.01\\\\-114.2578\\\\233.8765\\\\286.01\\\\-116.6016\\\\233.6229\\\\286.01\\\\-118.9453\\\\233.9675\\\\286.01\\\\-130.6641\\\\233.9967\\\\286.01\\\\-133.0078\\\\234.0855\\\\286.01\\\\-137.6953\\\\234.0855\\\\286.01\\\\-142.3828\\\\234.1551\\\\286.01\\\\-144.7266\\\\234.0941\\\\286.01\\\\-154.1016\\\\234.0642\\\\286.01\\\\-158.7891\\\\234.0999\\\\286.01\\\\-165.8203\\\\234.0642\\\\286.01\\\\-168.1641\\\\234.2429\\\\286.01\\\\-175.1953\\\\234.2112\\\\286.01\\\\-182.2266\\\\234.2686\\\\286.01\\\\-184.5703\\\\234.3486\\\\286.01\\\\-196.2891\\\\234.2902\\\\286.01\\\\-198.6328\\\\234.2467\\\\286.01\\\\-203.3203\\\\234.2935\\\\286.01\\\\-210.3516\\\\234.2224\\\\286.01\\\\-217.3828\\\\234.3115\\\\286.01\\\\-226.7578\\\\234.3891\\\\286.01\\\\-233.7891\\\\234.2362\\\\286.01\\\\-236.1328\\\\234.3235\\\\286.01\\\\-238.4766\\\\234.2502\\\\286.01\\\\-243.1641\\\\234.2088\\\\286.01\\\\-247.8516\\\\233.9638\\\\286.01\\\\-252.5391\\\\234.2967\\\\286.01\\\\-254.8828\\\\234.7444\\\\286.01\\\\-257.2266\\\\235.601\\\\286.01\\\\-259.5802\\\\237.0609\\\\286.01\\\\-261.0486\\\\239.4047\\\\286.01\\\\-261.1572\\\\241.7484\\\\286.01\\\\-260.2748\\\\246.4359\\\\286.01\\\\-257.2359\\\\251.1234\\\\286.01\\\\-255.457\\\\253.4672\\\\286.01\\\\-250.6794\\\\258.1547\\\\286.01\\\\-248.6664\\\\260.4984\\\\286.01\\\\-245.5078\\\\263.4952\\\\286.01\\\\-244.041\\\\265.1859\\\\286.01\\\\-241.534\\\\267.5297\\\\286.01\\\\-239.4093\\\\269.8734\\\\286.01\\\\-236.9663\\\\272.2172\\\\286.01\\\\-233.7891\\\\275.371\\\\286.01\\\\-231.4453\\\\277.8091\\\\286.01\\\\-229.8568\\\\279.2484\\\\286.01\\\\-226.7578\\\\282.5186\\\\286.01\\\\-225.1317\\\\283.9359\\\\286.01\\\\-222.0703\\\\287.1792\\\\286.01\\\\-220.4928\\\\288.6234\\\\286.01\\\\-218.2422\\\\290.9672\\\\286.01\\\\-217.3828\\\\291.6227\\\\286.01\\\\-215.0391\\\\292.9462\\\\286.01\\\\-212.6953\\\\294.5394\\\\286.01\\\\-210.3516\\\\295.2875\\\\286.01\\\\-208.0078\\\\296.4592\\\\286.01\\\\-205.6641\\\\296.8852\\\\286.01\\\\-203.3203\\\\297.1639\\\\286.01\\\\-196.2891\\\\297.1563\\\\286.01\\\\-193.9453\\\\297.0926\\\\286.01\\\\-179.8828\\\\296.943\\\\286.01\\\\-165.8203\\\\296.8959\\\\286.01\\\\-156.4453\\\\296.9137\\\\286.01\\\\-151.7578\\\\296.9559\\\\286.01\\\\-149.4141\\\\296.9249\\\\286.01\\\\-137.6953\\\\296.9338\\\\286.01\\\\-125.9766\\\\296.9228\\\\286.01\\\\-114.2578\\\\296.8545\\\\286.01\\\\-111.9141\\\\296.8917\\\\286.01\\\\-100.1953\\\\296.8456\\\\286.01\\\\-93.16406\\\\296.8549\\\\286.01\\\\-83.78906\\\\296.9041\\\\286.01\\\\-81.44531\\\\296.8837\\\\286.01\\\\-74.41406\\\\296.9322\\\\286.01\\\\-67.38281\\\\296.9234\\\\286.01\\\\-65.03906\\\\296.9706\\\\286.01\\\\-50.97656\\\\296.9358\\\\286.01\\\\-48.63281\\\\297.048\\\\286.01\\\\-46.28906\\\\296.9267\\\\286.01\\\\-43.94531\\\\297.0552\\\\286.01\\\\-41.60156\\\\296.9396\\\\286.01\\\\-39.25781\\\\296.9191\\\\286.01\\\\-36.91406\\\\297.4229\\\\286.01\\\\-34.57031\\\\297.3212\\\\286.01\\\\-29.88281\\\\297.409\\\\286.01\\\\-25.19531\\\\297.1687\\\\286.01\\\\-22.85156\\\\297.4125\\\\286.01\\\\-11.13281\\\\297.4441\\\\286.01\\\\-6.445313\\\\297.4125\\\\286.01\\\\0.5859375\\\\297.4229\\\\286.01\\\\2.929688\\\\297.3586\\\\286.01\\\\5.273438\\\\297.4334\\\\286.01\\\\9.960938\\\\297.3911\\\\286.01\\\\12.30469\\\\296.9467\\\\286.01\\\\14.64844\\\\296.9899\\\\286.01\\\\19.33594\\\\296.8973\\\\286.01\\\\33.39844\\\\296.8867\\\\286.01\\\\38.08594\\\\296.8666\\\\286.01\\\\49.80469\\\\296.7436\\\\286.01\\\\52.14844\\\\296.6929\\\\286.01\\\\59.17969\\\\296.6906\\\\286.01\\\\61.52344\\\\296.6365\\\\286.01\\\\66.21094\\\\296.6454\\\\286.01\\\\80.27344\\\\296.5362\\\\286.01\\\\82.61719\\\\296.5521\\\\286.01\\\\87.30469\\\\296.4947\\\\286.01\\\\89.64844\\\\296.5284\\\\286.01\\\\99.02344\\\\296.506\\\\286.01\\\\108.3984\\\\296.3986\\\\286.01\\\\115.4297\\\\296.4117\\\\286.01\\\\117.7734\\\\296.3557\\\\286.01\\\\129.4922\\\\296.3023\\\\286.01\\\\131.8359\\\\296.3139\\\\286.01\\\\136.5234\\\\295.833\\\\286.01\\\\141.2109\\\\295.8172\\\\286.01\\\\143.5547\\\\295.9179\\\\286.01\\\\145.8984\\\\295.864\\\\286.01\\\\152.9297\\\\295.8012\\\\286.01\\\\155.2734\\\\295.8486\\\\286.01\\\\157.6172\\\\295.7516\\\\286.01\\\\162.3047\\\\295.7346\\\\286.01\\\\164.6484\\\\295.6819\\\\286.01\\\\169.3359\\\\295.6998\\\\286.01\\\\181.0547\\\\295.5401\\\\286.01\\\\185.7422\\\\295.5071\\\\286.01\\\\192.7734\\\\295.5401\\\\286.01\\\\197.4609\\\\295.8012\\\\286.01\\\\202.1484\\\\295.7516\\\\286.01\\\\204.4922\\\\295.4287\\\\286.01\\\\206.8359\\\\294.8107\\\\286.01\\\\209.1797\\\\294.347\\\\286.01\\\\211.5234\\\\292.432\\\\286.01\\\\213.8672\\\\291.0641\\\\286.01\\\\216.2109\\\\289.4511\\\\286.01\\\\217.0997\\\\288.6234\\\\286.01\\\\219.2182\\\\286.2797\\\\286.01\\\\221.6202\\\\283.9359\\\\286.01\\\\225.5859\\\\279.7662\\\\286.01\\\\227.9297\\\\277.4504\\\\286.01\\\\230.2734\\\\274.9912\\\\286.01\\\\233.0769\\\\272.2172\\\\286.01\\\\234.9609\\\\270.226\\\\286.01\\\\237.6601\\\\267.5297\\\\286.01\\\\241.9922\\\\263.0508\\\\286.01\\\\246.6797\\\\258.3049\\\\286.01\\\\249.209\\\\255.8109\\\\286.01\\\\251.3672\\\\253.4207\\\\286.01\\\\253.1321\\\\251.1234\\\\286.01\\\\255.0749\\\\248.7797\\\\286.01\\\\256.5535\\\\246.4359\\\\286.01\\\\257.7698\\\\244.0922\\\\286.01\\\\259.3152\\\\241.7484\\\\286.01\\\\259.6588\\\\239.4047\\\\286.01\\\\259.5052\\\\237.0609\\\\286.01\\\\257.4836\\\\234.7172\\\\286.01\\\\256.0547\\\\233.5391\\\\286.01\\\\253.7109\\\\232.9048\\\\286.01\\\\251.3672\\\\232.5688\\\\286.01\\\\249.0234\\\\232.7431\\\\286.01\\\\246.6797\\\\232.7947\\\\286.01\\\\244.3359\\\\232.7162\\\\286.01\\\\239.6484\\\\233.0007\\\\286.01\\\\232.6172\\\\233.0108\\\\286.01\\\\230.2734\\\\232.9699\\\\286.01\\\\220.8984\\\\233.0726\\\\286.01\\\\211.5234\\\\233.091\\\\286.01\\\\206.8359\\\\233.0044\\\\286.01\\\\204.4922\\\\232.7719\\\\286.01\\\\199.8047\\\\232.7456\\\\286.01\\\\195.1172\\\\232.8346\\\\286.01\\\\190.4297\\\\232.8586\\\\286.01\\\\181.0547\\\\232.8224\\\\286.01\\\\171.6797\\\\232.8346\\\\286.01\\\\166.9922\\\\232.81\\\\286.01\\\\159.9609\\\\232.8376\\\\286.01\\\\155.2734\\\\232.8129\\\\286.01\\\\150.5859\\\\232.8376\\\\286.01\\\\143.5547\\\\232.8253\\\\286.01\\\\138.8672\\\\232.7456\\\\286.01\\\\131.8359\\\\232.7048\\\\286.01\\\\127.1484\\\\232.7614\\\\286.01\\\\117.7734\\\\232.7048\\\\286.01\\\\113.0859\\\\232.721\\\\286.01\\\\108.3984\\\\232.6767\\\\286.01\\\\106.0547\\\\232.5873\\\\286.01\\\\103.7109\\\\232.8967\\\\286.01\\\\101.3672\\\\232.9081\\\\286.01\\\\99.02344\\\\233.0951\\\\286.01\\\\89.64844\\\\233.0819\\\\286.01\\\\80.27344\\\\233.1132\\\\286.01\\\\77.92969\\\\233.0819\\\\286.01\\\\73.24219\\\\233.1221\\\\286.01\\\\63.86719\\\\233.1397\\\\286.01\\\\47.46094\\\\233.1042\\\\286.01\\\\45.11719\\\\233.0859\\\\286.01\\\\44.1744\\\\232.3734\\\\286.01\\\\42.77344\\\\230.9829\\\\286.01\\\\42.0716\\\\230.0297\\\\286.01\\\\42.77344\\\\229.2739\\\\286.01\\\\45.11719\\\\228.6098\\\\286.01\\\\47.46094\\\\227.1533\\\\286.01\\\\49.80469\\\\226.1119\\\\286.01\\\\52.14844\\\\224.628\\\\286.01\\\\54.49219\\\\223.8002\\\\286.01\\\\56.83594\\\\221.9418\\\\286.01\\\\59.17969\\\\220.3256\\\\286.01\\\\61.52344\\\\219.017\\\\286.01\\\\62.28633\\\\218.3109\\\\286.01\\\\66.21094\\\\215.1155\\\\286.01\\\\67.83708\\\\213.6234\\\\286.01\\\\68.55469\\\\212.8201\\\\286.01\\\\70.89844\\\\210.637\\\\286.01\\\\73.24219\\\\208.133\\\\286.01\\\\76.6862\\\\204.2484\\\\286.01\\\\78.48246\\\\201.9047\\\\286.01\\\\80.27344\\\\199.2337\\\\286.01\\\\81.43317\\\\197.2172\\\\286.01\\\\83.23588\\\\194.8734\\\\286.01\\\\84.22379\\\\192.5297\\\\286.01\\\\85.618\\\\190.1859\\\\286.01\\\\86.50858\\\\187.8422\\\\286.01\\\\88.05106\\\\185.4984\\\\286.01\\\\89.46748\\\\180.8109\\\\286.01\\\\90.44455\\\\178.4672\\\\286.01\\\\91.72363\\\\173.7797\\\\286.01\\\\92.65485\\\\171.4359\\\\286.01\\\\93.02794\\\\169.0922\\\\286.01\\\\93.30979\\\\164.4047\\\\286.01\\\\93.66728\\\\159.7172\\\\286.01\\\\93.85384\\\\155.0297\\\\286.01\\\\93.76065\\\\150.3422\\\\286.01\\\\93.25375\\\\143.3109\\\\286.01\\\\92.96676\\\\138.6234\\\\286.01\\\\92.39601\\\\136.2797\\\\286.01\\\\91.37577\\\\133.9359\\\\286.01\\\\90.82589\\\\131.5922\\\\286.01\\\\90.13611\\\\129.2484\\\\286.01\\\\89.05535\\\\126.9047\\\\286.01\\\\88.54037\\\\124.5609\\\\286.01\\\\87.64068\\\\122.2172\\\\286.01\\\\86.2421\\\\119.8734\\\\286.01\\\\85.29913\\\\117.5297\\\\286.01\\\\84.01531\\\\115.1859\\\\286.01\\\\81.1849\\\\110.4984\\\\286.01\\\\77.92969\\\\106.097\\\\286.01\\\\76.125\\\\103.4672\\\\286.01\\\\71.88107\\\\98.77969\\\\286.01\\\\68.55469\\\\95.47974\\\\286.01\\\\63.86719\\\\91.39851\\\\286.01\\\\61.52344\\\\89.95306\\\\286.01\\\\59.17969\\\\88.07359\\\\286.01\\\\56.83594\\\\86.40219\\\\286.01\\\\54.49219\\\\85.2847\\\\286.01\\\\52.14844\\\\83.56911\\\\286.01\\\\49.80469\\\\82.75372\\\\286.01\\\\47.46094\\\\81.42015\\\\286.01\\\\45.11719\\\\80.50576\\\\286.01\\\\42.77344\\\\79.10091\\\\286.01\\\\40.42969\\\\78.70156\\\\286.01\\\\38.08594\\\\78.04225\\\\286.01\\\\35.74219\\\\77.04612\\\\286.01\\\\33.39844\\\\76.45493\\\\286.01\\\\31.05469\\\\76.03495\\\\286.01\\\\28.71094\\\\75.26105\\\\286.01\\\\26.36719\\\\74.62567\\\\286.01\\\\24.02344\\\\74.40835\\\\286.01\\\\16.99219\\\\74.11594\\\\286.01\\\\14.64844\\\\74.06655\\\\286.01\\\\9.960938\\\\74.10896\\\\286.01\\\\2.929688\\\\74.40835\\\\286.01\\\\0.5859375\\\\74.73109\\\\286.01\\\\-4.101563\\\\76.15349\\\\286.01\\\\-6.445313\\\\76.61499\\\\286.01\\\\-8.789063\\\\77.28263\\\\286.01\\\\-11.13281\\\\78.30383\\\\286.01\\\\-13.47656\\\\78.80508\\\\286.01\\\\-15.82031\\\\79.40802\\\\286.01\\\\-18.16406\\\\80.83015\\\\286.01\\\\-20.50781\\\\81.71255\\\\286.01\\\\-22.85156\\\\83.07788\\\\286.01\\\\-25.19531\\\\83.8896\\\\286.01\\\\-27.53906\\\\85.7117\\\\286.01\\\\-29.88281\\\\86.86703\\\\286.01\\\\-32.22656\\\\88.43999\\\\286.01\\\\-34.57031\\\\90.43253\\\\286.01\\\\-36.39626\\\\91.74844\\\\286.01\\\\-41.60156\\\\96.15862\\\\286.01\\\\-44.13608\\\\98.77969\\\\286.01\\\\-46.29859\\\\101.1234\\\\286.01\\\\-48.63281\\\\103.9307\\\\286.01\\\\-50.00961\\\\105.8109\\\\286.01\\\\-52.01322\\\\108.1547\\\\286.01\\\\-53.32031\\\\110.4421\\\\286.01\\\\-54.80162\\\\112.8422\\\\286.01\\\\-56.5049\\\\115.1859\\\\286.01\\\\-57.25154\\\\117.5297\\\\286.01\\\\-58.74689\\\\119.8734\\\\286.01\\\\-59.61914\\\\122.2172\\\\286.01\\\\-60.97609\\\\124.5609\\\\286.01\\\\-61.4707\\\\126.9047\\\\286.01\\\\-62.12735\\\\129.2484\\\\286.01\\\\-63.28823\\\\131.5922\\\\286.01\\\\-63.93199\\\\133.9359\\\\286.01\\\\-64.24364\\\\136.2797\\\\286.01\\\\-65.46725\\\\140.9672\\\\286.01\\\\-65.92946\\\\145.6547\\\\286.01\\\\-66.21094\\\\150.3422\\\\286.01\\\\-66.32308\\\\155.0297\\\\286.01\\\\-66.18277\\\\159.7172\\\\286.01\\\\-65.88306\\\\164.4047\\\\286.01\\\\-65.65548\\\\166.7484\\\\286.01\\\\-65.26347\\\\169.0922\\\\286.01\\\\-64.4847\\\\171.4359\\\\286.01\\\\-63.62205\\\\176.1234\\\\286.01\\\\-62.61541\\\\178.4672\\\\286.01\\\\-61.71265\\\\180.8109\\\\286.01\\\\-61.26099\\\\183.1547\\\\286.01\\\\-60.12716\\\\185.4984\\\\286.01\\\\-59.11038\\\\187.8422\\\\286.01\\\\-57.65788\\\\190.1859\\\\286.01\\\\-56.79988\\\\192.5297\\\\286.01\\\\-55.26563\\\\194.8734\\\\286.01\\\\-53.9098\\\\197.2172\\\\286.01\\\\-52.35414\\\\199.5609\\\\286.01\\\\-50.58594\\\\201.9047\\\\286.01\\\\-47.18681\\\\206.5922\\\\286.01\\\\-42.69849\\\\211.2797\\\\286.01\\\\-39.25781\\\\214.6135\\\\286.01\\\\-34.48792\\\\218.3109\\\\286.01\\\\-29.88281\\\\221.5676\\\\286.01\\\\-27.53906\\\\223.1529\\\\286.01\\\\-23.37105\\\\225.3422\\\\286.01\\\\-22.85156\\\\225.6946\\\\286.01\\\\-20.50781\\\\226.8241\\\\286.01\\\\-18.16406\\\\228.3425\\\\286.01\\\\-15.82031\\\\229.1045\\\\286.01\\\\-14.9365\\\\230.0297\\\\286.01\\\\-15.82031\\\\231.4054\\\\286.01\\\\-16.93359\\\\232.3734\\\\286.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n";
+const char* k_rtStruct_json02 =
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846504465400001.571321740640\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"364\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"5\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"45.11719\\\\233.0859\\\\289.01\\\\44.16001\\\\232.3734\\\\289.01\\\\42.77344\\\\231.028\\\\289.01\\\\42.04498\\\\230.0297\\\\289.01\\\\42.77344\\\\229.2462\\\\289.01\\\\45.11719\\\\228.6173\\\\289.01\\\\47.46094\\\\227.1104\\\\289.01\\\\49.80469\\\\226.098\\\\289.01\\\\52.14844\\\\224.6141\\\\289.01\\\\54.49219\\\\223.7681\\\\289.01\\\\56.83594\\\\221.9221\\\\289.01\\\\59.17969\\\\220.2719\\\\289.01\\\\61.52344\\\\218.9816\\\\289.01\\\\62.24398\\\\218.3109\\\\289.01\\\\66.21094\\\\215.1002\\\\289.01\\\\67.80134\\\\213.6234\\\\289.01\\\\68.55469\\\\212.7718\\\\289.01\\\\70.89844\\\\210.6111\\\\289.01\\\\74.61816\\\\206.5922\\\\289.01\\\\76.64589\\\\204.2484\\\\289.01\\\\78.44145\\\\201.9047\\\\289.01\\\\80.27344\\\\199.1565\\\\289.01\\\\81.39723\\\\197.2172\\\\289.01\\\\83.19193\\\\194.8734\\\\289.01\\\\84.19829\\\\192.5297\\\\289.01\\\\85.55715\\\\190.1859\\\\289.01\\\\86.47488\\\\187.8422\\\\289.01\\\\87.98352\\\\185.4984\\\\289.01\\\\89.43614\\\\180.8109\\\\289.01\\\\90.43185\\\\178.4672\\\\289.01\\\\91.66755\\\\173.7797\\\\289.01\\\\92.6346\\\\171.4359\\\\289.01\\\\93.0094\\\\169.0922\\\\289.01\\\\93.45066\\\\162.0609\\\\289.01\\\\93.64378\\\\159.7172\\\\289.01\\\\93.74645\\\\157.3734\\\\289.01\\\\93.7934\\\\152.6859\\\\289.01\\\\93.7114\\\\150.3422\\\\289.01\\\\92.93333\\\\138.6234\\\\289.01\\\\92.32584\\\\136.2797\\\\289.01\\\\91.33673\\\\133.9359\\\\289.01\\\\90.79788\\\\131.5922\\\\289.01\\\\90.07662\\\\129.2484\\\\289.01\\\\89.01367\\\\126.9047\\\\289.01\\\\88.51154\\\\124.5609\\\\289.01\\\\87.5829\\\\122.2172\\\\289.01\\\\86.21134\\\\119.8734\\\\289.01\\\\85.2438\\\\117.5297\\\\289.01\\\\83.98051\\\\115.1859\\\\289.01\\\\82.44851\\\\112.8422\\\\289.01\\\\81.15704\\\\110.4984\\\\289.01\\\\77.92969\\\\106.1652\\\\289.01\\\\77.60783\\\\105.8109\\\\289.01\\\\76.08817\\\\103.4672\\\\289.01\\\\71.85195\\\\98.77969\\\\289.01\\\\68.55469\\\\95.5261\\\\289.01\\\\63.86719\\\\91.42658\\\\289.01\\\\61.52344\\\\90.00546\\\\289.01\\\\59.17969\\\\88.09907\\\\289.01\\\\56.83594\\\\86.42617\\\\289.01\\\\54.49219\\\\85.32829\\\\289.01\\\\52.14844\\\\83.5929\\\\289.01\\\\49.80469\\\\82.79196\\\\289.01\\\\47.46094\\\\81.4396\\\\289.01\\\\45.11719\\\\80.55132\\\\289.01\\\\42.77344\\\\79.11613\\\\289.01\\\\40.42969\\\\78.70156\\\\289.01\\\\38.08594\\\\78.06875\\\\289.01\\\\35.74219\\\\77.06593\\\\289.01\\\\33.39844\\\\76.46006\\\\289.01\\\\31.05469\\\\76.05299\\\\289.01\\\\28.71094\\\\75.29677\\\\289.01\\\\26.36719\\\\74.63503\\\\289.01\\\\24.02344\\\\74.42056\\\\289.01\\\\16.99219\\\\74.12224\\\\289.01\\\\12.30469\\\\74.05988\\\\289.01\\\\7.617188\\\\74.17641\\\\289.01\\\\2.929688\\\\74.40835\\\\289.01\\\\0.5859375\\\\74.69978\\\\289.01\\\\-4.101563\\\\76.1376\\\\289.01\\\\-6.445313\\\\76.582\\\\289.01\\\\-8.789063\\\\77.28263\\\\289.01\\\\-11.13281\\\\78.30383\\\\289.01\\\\-13.47656\\\\78.79336\\\\289.01\\\\-15.82031\\\\79.36918\\\\289.01\\\\-18.16406\\\\80.80879\\\\289.01\\\\-20.50781\\\\81.69893\\\\289.01\\\\-22.85156\\\\83.05925\\\\289.01\\\\-25.19531\\\\83.88489\\\\289.01\\\\-27.53906\\\\85.67889\\\\289.01\\\\-29.88281\\\\86.82161\\\\289.01\\\\-32.22656\\\\88.42921\\\\289.01\\\\-34.57031\\\\90.3988\\\\289.01\\\\-36.43259\\\\91.74844\\\\289.01\\\\-41.60156\\\\96.09487\\\\289.01\\\\-46.40716\\\\101.1234\\\\289.01\\\\-48.63281\\\\103.8925\\\\289.01\\\\-50.05581\\\\105.8109\\\\289.01\\\\-52.03897\\\\108.1547\\\\289.01\\\\-54.84508\\\\112.8422\\\\289.01\\\\-56.54788\\\\115.1859\\\\289.01\\\\-57.31724\\\\117.5297\\\\289.01\\\\-58.77809\\\\119.8734\\\\289.01\\\\-59.66415\\\\122.2172\\\\289.01\\\\-61.01031\\\\124.5609\\\\289.01\\\\-61.49414\\\\126.9047\\\\289.01\\\\-62.17529\\\\129.2484\\\\289.01\\\\-63.36781\\\\131.5922\\\\289.01\\\\-63.95774\\\\133.9359\\\\289.01\\\\-64.28482\\\\136.2797\\\\289.01\\\\-65.52673\\\\140.9672\\\\289.01\\\\-65.77621\\\\143.3109\\\\289.01\\\\-66.25\\\\150.3422\\\\289.01\\\\-66.3455\\\\155.0297\\\\289.01\\\\-66.22784\\\\159.7172\\\\289.01\\\\-65.91351\\\\164.4047\\\\289.01\\\\-65.68493\\\\166.7484\\\\289.01\\\\-65.33604\\\\169.0922\\\\289.01\\\\-64.55139\\\\171.4359\\\\289.01\\\\-63.66697\\\\176.1234\\\\289.01\\\\-61.73706\\\\180.8109\\\\289.01\\\\-61.2854\\\\183.1547\\\\289.01\\\\-60.35156\\\\185.3682\\\\289.01\\\\-59.14885\\\\187.8422\\\\289.01\\\\-57.77686\\\\190.1859\\\\289.01\\\\-56.84834\\\\192.5297\\\\289.01\\\\-55.35103\\\\194.8734\\\\289.01\\\\-53.94861\\\\197.2172\\\\289.01\\\\-50.97656\\\\201.5585\\\\289.01\\\\-48.63281\\\\204.6038\\\\289.01\\\\-47.23869\\\\206.5922\\\\289.01\\\\-42.7328\\\\211.2797\\\\289.01\\\\-39.25781\\\\214.6555\\\\289.01\\\\-34.54219\\\\218.3109\\\\289.01\\\\-32.22656\\\\219.8927\\\\289.01\\\\-27.53906\\\\223.2363\\\\289.01\\\\-23.37646\\\\225.3422\\\\289.01\\\\-22.85156\\\\225.6921\\\\289.01\\\\-20.50781\\\\226.8489\\\\289.01\\\\-18.16406\\\\228.3625\\\\289.01\\\\-15.82031\\\\229.1235\\\\289.01\\\\-14.9447\\\\230.0297\\\\289.01\\\\-15.82031\\\\231.385\\\\289.01\\\\-16.95703\\\\232.3734\\\\289.01\\\\-18.16406\\\\233.0632\\\\289.01\\\\-20.50781\\\\233.1042\\\\289.01\\\\-27.53906\\\\233.0951\\\\289.01\\\\-36.91406\\\\233.1132\\\\289.01\\\\-50.97656\\\\233.1652\\\\289.01\\\\-60.35156\\\\233.1652\\\\289.01\\\\-62.69531\\\\233.0671\\\\289.01\\\\-65.03906\\\\232.8376\\\\289.01\\\\-69.72656\\\\232.9839\\\\289.01\\\\-76.75781\\\\233.0245\\\\289.01\\\\-90.82031\\\\233.0382\\\\289.01\\\\-97.85156\\\\233.1345\\\\289.01\\\\-100.1953\\\\233.0992\\\\289.01\\\\-102.5391\\\\233.1524\\\\289.01\\\\-104.8828\\\\233.3934\\\\289.01\\\\-107.2266\\\\233.2115\\\\289.01\\\\-109.5703\\\\233.2027\\\\289.01\\\\-111.9141\\\\233.9046\\\\289.01\\\\-114.2578\\\\233.3123\\\\289.01\\\\-116.6016\\\\233.131\\\\289.01\\\\-118.9453\\\\233.9503\\\\289.01\\\\-123.6328\\\\234.0035\\\\289.01\\\\-130.6641\\\\234.0035\\\\289.01\\\\-135.3516\\\\234.1218\\\\289.01\\\\-137.6953\\\\234.054\\\\289.01\\\\-142.3828\\\\234.1551\\\\289.01\\\\-147.0703\\\\234.0336\\\\289.01\\\\-158.7891\\\\234.0691\\\\289.01\\\\-165.8203\\\\234.0314\\\\289.01\\\\-168.1641\\\\234.2175\\\\289.01\\\\-172.8516\\\\234.2539\\\\289.01\\\\-175.1953\\\\234.1973\\\\289.01\\\\-179.8828\\\\234.2721\\\\289.01\\\\-182.2266\\\\234.2574\\\\289.01\\\\-186.9141\\\\234.3359\\\\289.01\\\\-189.2578\\\\234.2721\\\\289.01\\\\-196.2891\\\\234.2502\\\\289.01\\\\-198.6328\\\\234.205\\\\289.01\\\\-200.9766\\\\234.2644\\\\289.01\\\\-205.6641\\\\234.2088\\\\289.01\\\\-215.0391\\\\234.2398\\\\289.01\\\\-217.3828\\\\234.2822\\\\289.01\\\\-229.1016\\\\234.2967\\\\289.01\\\\-233.7891\\\\234.1692\\\\289.01\\\\-238.4766\\\\234.2088\\\\289.01\\\\-243.1641\\\\234.1652\\\\289.01\\\\-245.5078\\\\234.0396\\\\289.01\\\\-247.8516\\\\234.0172\\\\289.01\\\\-250.1953\\\\234.1313\\\\289.01\\\\-252.5391\\\\234.3629\\\\289.01\\\\-254.8828\\\\235.229\\\\289.01\\\\-257.4503\\\\237.0609\\\\289.01\\\\-258.6989\\\\239.4047\\\\289.01\\\\-258.6135\\\\241.7484\\\\289.01\\\\-258.1335\\\\244.0922\\\\289.01\\\\-257.8311\\\\246.4359\\\\289.01\\\\-256.3118\\\\251.1234\\\\289.01\\\\-254.9679\\\\253.4672\\\\289.01\\\\-252.5391\\\\256.3686\\\\289.01\\\\-250.728\\\\258.1547\\\\289.01\\\\-248.6658\\\\260.4984\\\\289.01\\\\-245.5078\\\\263.5156\\\\289.01\\\\-243.1641\\\\266.0784\\\\289.01\\\\-241.5408\\\\267.5297\\\\289.01\\\\-239.3968\\\\269.8734\\\\289.01\\\\-233.7891\\\\275.3661\\\\289.01\\\\-231.4453\\\\277.8055\\\\289.01\\\\-229.1016\\\\280.0036\\\\289.01\\\\-226.7578\\\\282.5186\\\\289.01\\\\-224.4141\\\\284.6728\\\\289.01\\\\-222.0703\\\\287.1957\\\\289.01\\\\-220.4987\\\\288.6234\\\\289.01\\\\-218.2467\\\\290.9672\\\\289.01\\\\-217.3828\\\\291.6321\\\\289.01\\\\-215.0391\\\\292.9727\\\\289.01\\\\-212.6953\\\\294.534\\\\289.01\\\\-210.3516\\\\295.2615\\\\289.01\\\\-208.0078\\\\296.4424\\\\289.01\\\\-205.6641\\\\296.8658\\\\289.01\\\\-203.3203\\\\297.1563\\\\289.01\\\\-198.6328\\\\297.1793\\\\289.01\\\\-193.9453\\\\297.0673\\\\289.01\\\\-184.5703\\\\296.9514\\\\289.01\\\\-175.1953\\\\296.923\\\\289.01\\\\-165.8203\\\\296.8651\\\\289.01\\\\-154.1016\\\\296.9236\\\\289.01\\\\-149.4141\\\\296.8921\\\\289.01\\\\-144.7266\\\\296.9173\\\\289.01\\\\-137.6953\\\\296.9008\\\\289.01\\\\-135.3516\\\\296.9292\\\\289.01\\\\-128.3203\\\\296.9121\\\\289.01\\\\-116.6016\\\\296.8357\\\\289.01\\\\-111.9141\\\\296.8635\\\\289.01\\\\-102.5391\\\\296.8731\\\\289.01\\\\-88.47656\\\\296.8549\\\\289.01\\\\-81.44531\\\\296.8647\\\\289.01\\\\-79.10156\\\\296.913\\\\289.01\\\\-65.03906\\\\296.9409\\\\289.01\\\\-62.69531\\\\296.9706\\\\289.01\\\\-50.97656\\\\296.9668\\\\289.01\\\\-48.63281\\\\297.2359\\\\289.01\\\\-46.28906\\\\296.9447\\\\289.01\\\\-43.94531\\\\297.1975\\\\289.01\\\\-41.60156\\\\296.9191\\\\289.01\\\\-39.25781\\\\296.9095\\\\289.01\\\\-36.91406\\\\297.267\\\\289.01\\\\-34.57031\\\\297.0362\\\\289.01\\\\-32.22656\\\\297.4055\\\\289.01\\\\-27.53906\\\\297.3806\\\\289.01\\\\-25.19531\\\\297.4229\\\\289.01\\\\-13.47656\\\\297.4441\\\\289.01\\\\-4.101563\\\\297.4229\\\\289.01\\\\-1.757813\\\\297.2719\\\\289.01\\\\0.5859375\\\\297.4334\\\\289.01\\\\2.929688\\\\297.1626\\\\289.01\\\\5.273438\\\\297.4266\\\\289.01\\\\7.617188\\\\297.3879\\\\289.01\\\\9.960938\\\\297.2416\\\\289.01\\\\12.30469\\\\296.9841\\\\289.01\\\\14.64844\\\\297.1018\\\\289.01\\\\16.99219\\\\296.9081\\\\289.01\\\\21.67969\\\\296.9095\\\\289.01\\\\26.36719\\\\296.8673\\\\289.01\\\\28.71094\\\\296.9175\\\\289.01\\\\31.05469\\\\296.8771\\\\289.01\\\\47.46094\\\\296.7858\\\\289.01\\\\49.80469\\\\296.7229\\\\289.01\\\\59.17969\\\\296.6999\\\\289.01\\\\61.52344\\\\296.6331\\\\289.01\\\\68.55469\\\\296.6365\\\\289.01\\\\73.24219\\\\296.5732\\\\289.01\\\\84.96094\\\\296.5362\\\\289.01\\\\91.99219\\\\296.5569\\\\289.01\\\\103.7109\\\\296.4873\\\\289.01\\\\108.3984\\\\296.3976\\\\289.01\\\\113.0859\\\\296.4325\\\\289.01\\\\120.1172\\\\296.3495\\\\289.01\\\\122.4609\\\\296.364\\\\289.01\\\\127.1484\\\\296.3023\\\\289.01\\\\131.8359\\\\296.3259\\\\289.01\\\\134.1797\\\\296.1569\\\\289.01\\\\136.5234\\\\295.8717\\\\289.01\\\\138.8672\\\\295.9832\\\\289.01\\\\141.2109\\\\295.8685\\\\289.01\\\\143.5547\\\\296.085\\\\289.01\\\\145.8984\\\\295.8791\\\\289.01\\\\152.9297\\\\295.833\\\\289.01\\\\155.2734\\\\295.864\\\\289.01\\\\157.6172\\\\295.7849\\\\289.01\\\\164.6484\\\\295.6998\\\\289.01\\\\169.3359\\\\295.7346\\\\289.01\\\\174.0234\\\\295.6454\\\\289.01\\\\178.7109\\\\295.6272\\\\289.01\\\\188.0859\\\\295.5071\\\\289.01\\\\192.7734\\\\295.557\\\\289.01\\\\197.4609\\\\295.7849\\\\289.01\\\\202.1484\\\\295.7173\\\\289.01\\\\204.4922\\\\295.4439\\\\289.01\\\\206.8359\\\\294.8185\\\\289.01\\\\209.1797\\\\294.3595\\\\289.01\\\\211.5234\\\\292.4465\\\\289.01\\\\213.8672\\\\291.0974\\\\289.01\\\\216.2109\\\\289.4896\\\\289.01\\\\217.1345\\\\288.6234\\\\289.01\\\\218.5547\\\\287.023\\\\289.01\\\\221.6488\\\\283.9359\\\\289.01\\\\225.5859\\\\279.7803\\\\289.01\\\\227.9297\\\\277.5081\\\\289.01\\\\230.2734\\\\275.0207\\\\289.01\\\\232.6172\\\\272.7547\\\\289.01\\\\234.9609\\\\270.2734\\\\289.01\\\\237.7078\\\\267.5297\\\\289.01\\\\239.9578\\\\265.1859\\\\289.01\\\\244.3359\\\\260.784\\\\289.01\\\\246.6797\\\\258.2849\\\\289.01\\\\249.093\\\\255.8109\\\\289.01\\\\251.3672\\\\252.927\\\\289.01\\\\253.7109\\\\249.593\\\\289.01\\\\254.3837\\\\248.7797\\\\289.01\\\\255.2195\\\\246.4359\\\\289.01\\\\255.899\\\\244.0922\\\\289.01\\\\256.6528\\\\239.4047\\\\289.01\\\\256.6685\\\\237.0609\\\\289.01\\\\256.0547\\\\236.1658\\\\289.01\\\\255.3861\\\\234.7172\\\\289.01\\\\253.7109\\\\233.2892\\\\289.01\\\\251.3672\\\\232.6603\\\\289.01\\\\246.6797\\\\232.927\\\\289.01\\\\244.3359\\\\232.8224\\\\289.01\\\\239.6484\\\\233.0007\\\\289.01\\\\237.3047\\\\233.0305\\\\289.01\\\\230.2734\\\\232.9699\\\\289.01\\\\220.8984\\\\233.091\\\\289.01\\\\209.1797\\\\233.0819\\\\289.01\\\\206.8359\\\\233.0245\\\\289.01\\\\204.4922\\\\232.7848\\\\289.01\\\\199.8047\\\\232.7588\\\\289.01\\\\197.4609\\\\232.81\\\\289.01\\\\190.4297\\\\232.8467\\\\289.01\\\\183.3984\\\\232.8224\\\\289.01\\\\164.6484\\\\232.81\\\\289.01\\\\155.2734\\\\232.7875\\\\289.01\\\\148.2422\\\\232.8253\\\\289.01\\\\143.5547\\\\232.8003\\\\289.01\\\\138.8672\\\\232.7186\\\\289.01\\\\129.4922\\\\232.6623\\\\289.01\\\\122.4609\\\\232.7048\\\\289.01\\\\117.7734\\\\232.6477\\\\289.01\\\\115.4297\\\\232.6908\\\\289.01\\\\110.7422\\\\232.6477\\\\289.01\\\\108.3984\\\\232.5557\\\\289.01\\\\106.0547\\\\231.9897\\\\289.01\\\\103.7109\\\\232.81\\\\289.01\\\\101.3672\\\\232.8735\\\\289.01\\\\99.02344\\\\233.0819\\\\289.01\\\\82.61719\\\\233.1091\\\\289.01\\\\75.58594\\\\233.1042\\\\289.01\\\\63.86719\\\\233.1397\\\\289.01\\\\61.52344\\\\233.1132\\\\289.01\\\\54.49219\\\\233.131\\\\289.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846528466800001.465226999207\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"352\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"6\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-18.16406\\\\233.0632\\\\292.01\\\\-34.57031\\\\233.1221\\\\292.01\\\\-46.28906\\\\233.1221\\\\292.01\\\\-53.32031\\\\233.1652\\\\292.01\\\\-60.35156\\\\233.1736\\\\292.01\\\\-62.69531\\\\233.0951\\\\292.01\\\\-65.03906\\\\232.8376\\\\292.01\\\\-69.72656\\\\232.9735\\\\292.01\\\\-83.78906\\\\233.0245\\\\292.01\\\\-86.13281\\\\233.0082\\\\292.01\\\\-95.50781\\\\233.0766\\\\292.01\\\\-109.5703\\\\233.1083\\\\292.01\\\\-111.9141\\\\233.1524\\\\292.01\\\\-114.2578\\\\233.4062\\\\292.01\\\\-116.6016\\\\233.1221\\\\292.01\\\\-118.9453\\\\233.9388\\\\292.01\\\\-123.6328\\\\233.9793\\\\292.01\\\\-130.6641\\\\233.9793\\\\292.01\\\\-135.3516\\\\234.0805\\\\292.01\\\\-137.6953\\\\234.0105\\\\292.01\\\\-142.3828\\\\234.0855\\\\292.01\\\\-149.4141\\\\233.9967\\\\292.01\\\\-154.1016\\\\234.0263\\\\292.01\\\\-161.1328\\\\233.9784\\\\292.01\\\\-165.8203\\\\233.9954\\\\292.01\\\\-168.1641\\\\234.1756\\\\292.01\\\\-172.8516\\\\234.2357\\\\292.01\\\\-175.1953\\\\234.1837\\\\292.01\\\\-179.8828\\\\234.2394\\\\292.01\\\\-186.9141\\\\234.2574\\\\292.01\\\\-189.2578\\\\234.2012\\\\292.01\\\\-193.9453\\\\234.205\\\\292.01\\\\-198.6328\\\\234.1437\\\\292.01\\\\-200.9766\\\\234.2224\\\\292.01\\\\-205.6641\\\\234.1523\\\\292.01\\\\-212.6953\\\\234.2224\\\\292.01\\\\-215.0391\\\\234.2088\\\\292.01\\\\-222.0703\\\\234.2644\\\\292.01\\\\-229.1016\\\\234.2224\\\\292.01\\\\-233.7891\\\\234.0787\\\\292.01\\\\-238.4766\\\\234.1437\\\\292.01\\\\-243.1641\\\\234.1482\\\\292.01\\\\-245.5078\\\\234.0015\\\\292.01\\\\-247.8516\\\\233.9742\\\\292.01\\\\-250.1953\\\\234.1478\\\\292.01\\\\-252.5391\\\\234.7444\\\\292.01\\\\-254.8828\\\\236.1971\\\\292.01\\\\-255.7199\\\\237.0609\\\\292.01\\\\-256.4182\\\\239.4047\\\\292.01\\\\-255.9699\\\\244.0922\\\\292.01\\\\-255.9741\\\\246.4359\\\\292.01\\\\-255.8244\\\\248.7797\\\\292.01\\\\-255.2465\\\\251.1234\\\\292.01\\\\-254.8828\\\\251.716\\\\292.01\\\\-252.9549\\\\255.8109\\\\292.01\\\\-250.1953\\\\258.7278\\\\292.01\\\\-247.8516\\\\261.3344\\\\292.01\\\\-245.5078\\\\263.528\\\\292.01\\\\-243.1641\\\\266.0844\\\\292.01\\\\-241.5582\\\\267.5297\\\\292.01\\\\-239.4252\\\\269.8734\\\\292.01\\\\-233.7891\\\\275.382\\\\292.01\\\\-231.4453\\\\277.8153\\\\292.01\\\\-229.1016\\\\280.0153\\\\292.01\\\\-226.7578\\\\282.5249\\\\292.01\\\\-224.4141\\\\284.6784\\\\292.01\\\\-222.0703\\\\287.1957\\\\292.01\\\\-220.5108\\\\288.6234\\\\292.01\\\\-218.2575\\\\290.9672\\\\292.01\\\\-217.3828\\\\291.6415\\\\292.01\\\\-215.0391\\\\293\\\\292.01\\\\-212.6953\\\\294.5345\\\\292.01\\\\-210.3516\\\\295.3008\\\\292.01\\\\-208.0078\\\\296.4338\\\\292.01\\\\-205.6641\\\\296.8658\\\\292.01\\\\-203.3203\\\\297.1488\\\\292.01\\\\-196.2891\\\\297.1563\\\\292.01\\\\-193.9453\\\\297.0522\\\\292.01\\\\-184.5703\\\\296.9452\\\\292.01\\\\-177.5391\\\\296.9218\\\\292.01\\\\-172.8516\\\\296.8713\\\\292.01\\\\-161.1328\\\\296.8585\\\\292.01\\\\-158.7891\\\\296.882\\\\292.01\\\\-149.4141\\\\296.8672\\\\292.01\\\\-147.0703\\\\296.8921\\\\292.01\\\\-137.6953\\\\296.8852\\\\292.01\\\\-128.3203\\\\296.9041\\\\292.01\\\\-116.6016\\\\296.8174\\\\292.01\\\\-102.5391\\\\296.8641\\\\292.01\\\\-95.50781\\\\296.8456\\\\292.01\\\\-90.82031\\\\296.8738\\\\292.01\\\\-74.41406\\\\296.8938\\\\292.01\\\\-67.38281\\\\296.9218\\\\292.01\\\\-62.69531\\\\296.9731\\\\292.01\\\\-50.97656\\\\296.9447\\\\292.01\\\\-48.63281\\\\297.0809\\\\292.01\\\\-46.28906\\\\296.9447\\\\292.01\\\\-43.94531\\\\297.1128\\\\292.01\\\\-41.60156\\\\296.9191\\\\292.01\\\\-36.91406\\\\297.3879\\\\292.01\\\\-34.57031\\\\297.0362\\\\292.01\\\\-29.88281\\\\297.4229\\\\292.01\\\\-18.16406\\\\297.3836\\\\292.01\\\\-13.47656\\\\297.4229\\\\292.01\\\\-11.13281\\\\297.3192\\\\292.01\\\\-8.789063\\\\297.4125\\\\292.01\\\\-4.101563\\\\297.3947\\\\292.01\\\\-1.757813\\\\297.1564\\\\292.01\\\\0.5859375\\\\297.4125\\\\292.01\\\\5.273438\\\\297.2937\\\\292.01\\\\7.617188\\\\296.9841\\\\292.01\\\\9.960938\\\\297.1865\\\\292.01\\\\12.30469\\\\296.9081\\\\292.01\\\\14.64844\\\\296.9396\\\\292.01\\\\19.33594\\\\296.8985\\\\292.01\\\\28.71094\\\\296.8973\\\\292.01\\\\35.74219\\\\296.8466\\\\292.01\\\\40.42969\\\\296.8673\\\\292.01\\\\61.52344\\\\296.6577\\\\292.01\\\\68.55469\\\\296.6487\\\\292.01\\\\75.58594\\\\296.5943\\\\292.01\\\\87.30469\\\\296.549\\\\292.01\\\\91.99219\\\\296.5862\\\\292.01\\\\106.0547\\\\296.4597\\\\292.01\\\\113.0859\\\\296.4597\\\\292.01\\\\115.4297\\\\296.4117\\\\292.01\\\\127.1484\\\\296.3229\\\\292.01\\\\134.1797\\\\296.3288\\\\292.01\\\\136.5234\\\\296.2406\\\\292.01\\\\143.5547\\\\296.2559\\\\292.01\\\\145.8984\\\\295.894\\\\292.01\\\\148.2422\\\\295.9087\\\\292.01\\\\155.2734\\\\295.864\\\\292.01\\\\162.3047\\\\295.7516\\\\292.01\\\\166.9922\\\\295.7849\\\\292.01\\\\171.6797\\\\295.6998\\\\292.01\\\\183.3984\\\\295.557\\\\292.01\\\\188.0859\\\\295.5916\\\\292.01\\\\192.7734\\\\295.5742\\\\292.01\\\\197.4609\\\\295.8012\\\\292.01\\\\202.1484\\\\295.7173\\\\292.01\\\\204.4922\\\\295.4287\\\\292.01\\\\206.8359\\\\294.8185\\\\292.01\\\\209.1797\\\\294.3768\\\\292.01\\\\211.5234\\\\292.4613\\\\292.01\\\\213.8672\\\\291.1455\\\\292.01\\\\216.2109\\\\289.5482\\\\292.01\\\\217.195\\\\288.6234\\\\292.01\\\\218.5547\\\\287.0752\\\\292.01\\\\221.6824\\\\283.9359\\\\292.01\\\\225.5859\\\\279.8388\\\\292.01\\\\227.9297\\\\277.5633\\\\292.01\\\\230.2734\\\\275.0632\\\\292.01\\\\233.2115\\\\272.2172\\\\292.01\\\\234.9609\\\\270.3186\\\\292.01\\\\237.735\\\\267.5297\\\\292.01\\\\239.9391\\\\265.1859\\\\292.01\\\\244.3359\\\\260.7643\\\\292.01\\\\246.751\\\\258.1547\\\\292.01\\\\249.0234\\\\255.6098\\\\292.01\\\\250.567\\\\253.4672\\\\292.01\\\\252.0319\\\\251.1234\\\\292.01\\\\252.7511\\\\248.7797\\\\292.01\\\\253.3727\\\\246.4359\\\\292.01\\\\253.5807\\\\244.0922\\\\292.01\\\\253.6483\\\\241.7484\\\\292.01\\\\254.3572\\\\239.4047\\\\292.01\\\\254.5918\\\\237.0609\\\\292.01\\\\253.1041\\\\234.7172\\\\292.01\\\\251.3672\\\\232.9906\\\\292.01\\\\249.0234\\\\232.8704\\\\292.01\\\\246.6797\\\\232.9906\\\\292.01\\\\244.3359\\\\232.9594\\\\292.01\\\\239.6484\\\\233.0108\\\\292.01\\\\230.2734\\\\232.9906\\\\292.01\\\\220.8984\\\\233.0819\\\\292.01\\\\211.5234\\\\233.091\\\\292.01\\\\206.8359\\\\233.0245\\\\292.01\\\\204.4922\\\\232.7848\\\\292.01\\\\199.8047\\\\232.7719\\\\292.01\\\\190.4297\\\\232.8346\\\\292.01\\\\181.0547\\\\232.7719\\\\292.01\\\\178.7109\\\\232.7975\\\\292.01\\\\174.0234\\\\232.7588\\\\292.01\\\\166.9922\\\\232.7456\\\\292.01\\\\152.9297\\\\232.8003\\\\292.01\\\\145.8984\\\\232.7875\\\\292.01\\\\141.2109\\\\232.6908\\\\292.01\\\\136.5234\\\\232.6908\\\\292.01\\\\134.1797\\\\232.6477\\\\292.01\\\\127.1484\\\\232.6767\\\\292.01\\\\124.8047\\\\232.6329\\\\292.01\\\\122.4609\\\\232.6767\\\\292.01\\\\117.7734\\\\232.6329\\\\292.01\\\\115.4297\\\\232.6767\\\\292.01\\\\110.7422\\\\232.6329\\\\292.01\\\\108.3984\\\\232.4011\\\\292.01\\\\106.0547\\\\231.7168\\\\292.01\\\\103.7109\\\\232.7346\\\\292.01\\\\99.02344\\\\233.0819\\\\292.01\\\\96.67969\\\\233.1001\\\\292.01\\\\80.27344\\\\233.0859\\\\292.01\\\\77.92969\\\\233.131\\\\292.01\\\\68.55469\\\\233.1042\\\\292.01\\\\63.86719\\\\233.1483\\\\292.01\\\\54.49219\\\\233.1132\\\\292.01\\\\45.11719\\\\233.1042\\\\292.01\\\\44.13916\\\\232.3734\\\\292.01\\\\42.77344\\\\231.028\\\\292.01\\\\42.04498\\\\230.0297\\\\292.01\\\\42.77344\\\\229.2462\\\\292.01\\\\45.11719\\\\228.6098\\\\292.01\\\\47.46094\\\\227.1\\\\292.01\\\\49.80469\\\\226.0746\\\\292.01\\\\52.14844\\\\224.5908\\\\292.01\\\\54.49219\\\\223.7256\\\\292.01\\\\56.83594\\\\221.9043\\\\292.01\\\\59.17969\\\\220.2334\\\\292.01\\\\61.52344\\\\218.9233\\\\292.01\\\\62.17359\\\\218.3109\\\\292.01\\\\65.03114\\\\215.9672\\\\292.01\\\\66.21094\\\\215.0853\\\\292.01\\\\67.77555\\\\213.6234\\\\292.01\\\\68.55469\\\\212.7391\\\\292.01\\\\70.89844\\\\210.5899\\\\292.01\\\\74.60287\\\\206.5922\\\\292.01\\\\76.61049\\\\204.2484\\\\292.01\\\\78.37865\\\\201.9047\\\\292.01\\\\80.27344\\\\199.0659\\\\292.01\\\\81.3732\\\\197.2172\\\\292.01\\\\83.11832\\\\194.8734\\\\292.01\\\\84.16552\\\\192.5297\\\\292.01\\\\85.52934\\\\190.1859\\\\292.01\\\\86.43362\\\\187.8422\\\\292.01\\\\87.9126\\\\185.4984\\\\292.01\\\\89.3596\\\\180.8109\\\\292.01\\\\90.38334\\\\178.4672\\\\292.01\\\\91.58888\\\\173.7797\\\\292.01\\\\92.57813\\\\171.4359\\\\292.01\\\\92.99067\\\\169.0922\\\\292.01\\\\93.58354\\\\159.7172\\\\292.01\\\\93.69106\\\\157.3734\\\\292.01\\\\93.75715\\\\152.6859\\\\292.01\\\\93.66728\\\\150.3422\\\\292.01\\\\93.08162\\\\140.9672\\\\292.01\\\\92.89124\\\\138.6234\\\\292.01\\\\92.23668\\\\136.2797\\\\292.01\\\\91.29035\\\\133.9359\\\\292.01\\\\90.7637\\\\131.5922\\\\292.01\\\\90.01319\\\\129.2484\\\\292.01\\\\88.96999\\\\126.9047\\\\292.01\\\\88.48242\\\\124.5609\\\\292.01\\\\87.50434\\\\122.2172\\\\292.01\\\\86.16302\\\\119.8734\\\\292.01\\\\85.18534\\\\117.5297\\\\292.01\\\\83.93555\\\\115.1859\\\\292.01\\\\82.35394\\\\112.8422\\\\292.01\\\\81.1205\\\\110.4984\\\\292.01\\\\77.92969\\\\106.2493\\\\292.01\\\\77.53906\\\\105.8109\\\\292.01\\\\76.03666\\\\103.4672\\\\292.01\\\\71.81973\\\\98.77969\\\\292.01\\\\68.55469\\\\95.57756\\\\292.01\\\\63.86719\\\\91.47022\\\\292.01\\\\61.52344\\\\90.03793\\\\292.01\\\\59.17969\\\\88.1257\\\\292.01\\\\56.83594\\\\86.46088\\\\292.01\\\\54.49219\\\\85.37372\\\\292.01\\\\52.14844\\\\83.62384\\\\292.01\\\\49.80469\\\\82.8195\\\\292.01\\\\47.46094\\\\81.45925\\\\292.01\\\\45.11719\\\\80.5947\\\\292.01\\\\42.77344\\\\79.13168\\\\292.01\\\\40.42969\\\\78.71358\\\\292.01\\\\38.08594\\\\78.09455\\\\292.01\\\\35.74219\\\\77.09653\\\\292.01\\\\33.39844\\\\76.47086\\\\292.01\\\\31.05469\\\\76.06187\\\\292.01\\\\28.71094\\\\75.29641\\\\292.01\\\\26.36719\\\\74.65405\\\\292.01\\\\24.02344\\\\74.42056\\\\292.01\\\\14.64844\\\\74.05988\\\\292.01\\\\12.30469\\\\74.06546\\\\292.01\\\\7.617188\\\\74.16415\\\\292.01\\\\2.929688\\\\74.40835\\\\292.01\\\\0.5859375\\\\74.66957\\\\292.01\\\\-4.101563\\\\76.10484\\\\292.01\\\\-6.445313\\\\76.55428\\\\292.01\\\\-8.789063\\\\77.2619\\\\292.01\\\\-11.13281\\\\78.29331\\\\292.01\\\\-15.82031\\\\79.33912\\\\292.01\\\\-18.16406\\\\80.80879\\\\292.01\\\\-20.50781\\\\81.67974\\\\292.01\\\\-22.85156\\\\83.04977\\\\292.01\\\\-25.19531\\\\83.8679\\\\292.01\\\\-27.53906\\\\85.67369\\\\292.01\\\\-29.88281\\\\86.77807\\\\292.01\\\\-32.22656\\\\88.40859\\\\292.01\\\\-34.57031\\\\90.3647\\\\292.01\\\\-36.45433\\\\91.74844\\\\292.01\\\\-39.25781\\\\94.04677\\\\292.01\\\\-41.60156\\\\96.05102\\\\292.01\\\\-46.47692\\\\101.1234\\\\292.01\\\\-48.63281\\\\103.8257\\\\292.01\\\\-50.09444\\\\105.8109\\\\292.01\\\\-52.05878\\\\108.1547\\\\292.01\\\\-53.53416\\\\110.4984\\\\292.01\\\\-54.89417\\\\112.8422\\\\292.01\\\\-56.60029\\\\115.1859\\\\292.01\\\\-57.3473\\\\117.5297\\\\292.01\\\\-58.83843\\\\119.8734\\\\292.01\\\\-59.71175\\\\122.2172\\\\292.01\\\\-61.0397\\\\124.5609\\\\292.01\\\\-61.54119\\\\126.9047\\\\292.01\\\\-62.23412\\\\129.2484\\\\292.01\\\\-63.41292\\\\131.5922\\\\292.01\\\\-63.98491\\\\133.9359\\\\292.01\\\\-64.32825\\\\136.2797\\\\292.01\\\\-65.57173\\\\140.9672\\\\292.01\\\\-65.81827\\\\143.3109\\\\292.01\\\\-66.16071\\\\147.9984\\\\292.01\\\\-66.35813\\\\152.6859\\\\292.01\\\\-66.35179\\\\157.3734\\\\292.01\\\\-66.26755\\\\159.7172\\\\292.01\\\\-65.93555\\\\164.4047\\\\292.01\\\\-65.72266\\\\166.7484\\\\292.01\\\\-65.40382\\\\169.0922\\\\292.01\\\\-64.58663\\\\171.4359\\\\292.01\\\\-63.71209\\\\176.1234\\\\292.01\\\\-61.78386\\\\180.8109\\\\292.01\\\\-61.30256\\\\183.1547\\\\292.01\\\\-60.36086\\\\185.4984\\\\292.01\\\\-59.18586\\\\187.8422\\\\292.01\\\\-57.87363\\\\190.1859\\\\292.01\\\\-56.84834\\\\192.5297\\\\292.01\\\\-55.66406\\\\194.5832\\\\292.01\\\\-54.00845\\\\197.2172\\\\292.01\\\\-50.97656\\\\201.6594\\\\292.01\\\\-47.27555\\\\206.5922\\\\292.01\\\\-42.76654\\\\211.2797\\\\292.01\\\\-39.25781\\\\214.6977\\\\292.01\\\\-34.57031\\\\218.3578\\\\292.01\\\\-32.22656\\\\219.9231\\\\292.01\\\\-27.53906\\\\223.3272\\\\292.01\\\\-25.19531\\\\224.3983\\\\292.01\\\\-22.85156\\\\225.7515\\\\292.01\\\\-20.50781\\\\226.8662\\\\292.01\\\\-18.16406\\\\228.3724\\\\292.01\\\\-15.82031\\\\229.1319\\\\292.01\\\\-14.95299\\\\230.0297\\\\292.01\\\\-15.82031\\\\231.3763\\\\292.01\\\\-16.95703\\\\232.3734\\\\292.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848817597700001.509440095881\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"352\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"7\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-18.16406\\\\233.0632\\\\295.01\\\\-39.25781\\\\233.1397\\\\295.01\\\\-41.60156\\\\233.1221\\\\295.01\\\\-53.32031\\\\233.1818\\\\295.01\\\\-60.35156\\\\233.1818\\\\295.01\\\\-62.69531\\\\233.1221\\\\295.01\\\\-65.03906\\\\232.8497\\\\295.01\\\\-69.72656\\\\232.9735\\\\295.01\\\\-74.41406\\\\233.0145\\\\295.01\\\\-83.78906\\\\233.0145\\\\295.01\\\\-93.16406\\\\233.0859\\\\295.01\\\\-109.5703\\\\233.1132\\\\295.01\\\\-111.9141\\\\233.5764\\\\295.01\\\\-114.2578\\\\233.9331\\\\295.01\\\\-125.9766\\\\234.0105\\\\295.01\\\\-130.6641\\\\233.9793\\\\295.01\\\\-135.3516\\\\234.0672\\\\295.01\\\\-137.6953\\\\234.0035\\\\295.01\\\\-142.3828\\\\234.0672\\\\295.01\\\\-151.7578\\\\233.9848\\\\295.01\\\\-154.1016\\\\234.0192\\\\295.01\\\\-163.4766\\\\233.9784\\\\295.01\\\\-165.8203\\\\234.0072\\\\295.01\\\\-168.1641\\\\234.1894\\\\295.01\\\\-172.8516\\\\234.2539\\\\295.01\\\\-175.1953\\\\234.2012\\\\295.01\\\\-186.9141\\\\234.2721\\\\295.01\\\\-189.2578\\\\234.2326\\\\295.01\\\\-193.9453\\\\234.261\\\\295.01\\\\-198.6328\\\\234.1692\\\\295.01\\\\-200.9766\\\\234.2362\\\\295.01\\\\-205.6641\\\\234.1564\\\\295.01\\\\-208.0078\\\\234.1992\\\\295.01\\\\-215.0391\\\\234.2125\\\\295.01\\\\-222.0703\\\\234.2967\\\\295.01\\\\-224.4141\\\\234.226\\\\295.01\\\\-229.1016\\\\234.2224\\\\295.01\\\\-233.7891\\\\234.067\\\\295.01\\\\-240.8203\\\\234.1692\\\\295.01\\\\-243.1641\\\\234.1482\\\\295.01\\\\-247.8516\\\\233.8526\\\\295.01\\\\-250.1953\\\\233.9885\\\\295.01\\\\-252.5391\\\\234.8955\\\\295.01\\\\-254.3724\\\\237.0609\\\\295.01\\\\-255.6279\\\\239.4047\\\\295.01\\\\-254.6435\\\\241.7484\\\\295.01\\\\-254.2969\\\\244.0922\\\\295.01\\\\-254.2467\\\\248.7797\\\\295.01\\\\-253.6501\\\\253.4672\\\\295.01\\\\-252.733\\\\255.8109\\\\295.01\\\\-250.7417\\\\258.1547\\\\295.01\\\\-247.8516\\\\261.34\\\\295.01\\\\-246.2058\\\\262.8422\\\\295.01\\\\-244.0969\\\\265.1859\\\\295.01\\\\-241.6217\\\\267.5297\\\\295.01\\\\-239.489\\\\269.8734\\\\295.01\\\\-233.7891\\\\275.382\\\\295.01\\\\-231.4453\\\\277.8344\\\\295.01\\\\-229.1016\\\\280.0153\\\\295.01\\\\-226.7578\\\\282.5409\\\\295.01\\\\-224.4141\\\\284.6849\\\\295.01\\\\-222.0703\\\\287.2122\\\\295.01\\\\-220.5406\\\\288.6234\\\\295.01\\\\-218.2745\\\\290.9672\\\\295.01\\\\-217.3828\\\\291.6508\\\\295.01\\\\-215.0391\\\\293.0865\\\\295.01\\\\-212.6953\\\\294.6149\\\\295.01\\\\-210.3516\\\\295.3416\\\\295.01\\\\-208.0078\\\\296.4592\\\\295.01\\\\-205.6641\\\\296.8974\\\\295.01\\\\-203.3203\\\\297.1488\\\\295.01\\\\-196.2891\\\\297.1563\\\\295.01\\\\-193.9453\\\\297.0647\\\\295.01\\\\-182.2266\\\\296.9607\\\\295.01\\\\-175.1953\\\\296.9311\\\\295.01\\\\-170.5078\\\\296.8813\\\\295.01\\\\-158.7891\\\\296.8978\\\\295.01\\\\-154.1016\\\\296.9236\\\\295.01\\\\-149.4141\\\\296.8921\\\\295.01\\\\-142.3828\\\\296.9338\\\\295.01\\\\-128.3203\\\\296.942\\\\295.01\\\\-116.6016\\\\296.854\\\\295.01\\\\-111.9141\\\\296.8927\\\\295.01\\\\-109.5703\\\\296.8635\\\\295.01\\\\-102.5391\\\\296.8927\\\\295.01\\\\-97.85156\\\\296.8641\\\\295.01\\\\-88.47656\\\\296.9234\\\\295.01\\\\-81.44531\\\\296.9428\\\\295.01\\\\-74.41406\\\\296.9322\\\\295.01\\\\-67.38281\\\\296.9622\\\\295.01\\\\-65.03906\\\\297.1085\\\\295.01\\\\-62.69531\\\\297.0091\\\\295.01\\\\-60.35156\\\\297.0949\\\\295.01\\\\-58.00781\\\\297.0091\\\\295.01\\\\-53.32031\\\\297.0091\\\\295.01\\\\-50.97656\\\\296.9644\\\\295.01\\\\-46.28906\\\\297.3691\\\\295.01\\\\-43.94531\\\\297.4229\\\\295.01\\\\-39.25781\\\\297.2468\\\\295.01\\\\-36.91406\\\\297.1104\\\\295.01\\\\-34.57031\\\\297.373\\\\295.01\\\\-32.22656\\\\297.22\\\\295.01\\\\-29.88281\\\\297.4441\\\\295.01\\\\-27.53906\\\\297.3984\\\\295.01\\\\-22.85156\\\\297.4334\\\\295.01\\\\-13.47656\\\\297.4125\\\\295.01\\\\-11.13281\\\\297.252\\\\295.01\\\\-8.789063\\\\297.4022\\\\295.01\\\\-6.445313\\\\297.231\\\\295.01\\\\-4.101563\\\\297.3798\\\\295.01\\\\-1.757813\\\\296.9644\\\\295.01\\\\0.5859375\\\\297.252\\\\295.01\\\\2.929688\\\\297.4229\\\\295.01\\\\5.273438\\\\297.1516\\\\295.01\\\\9.960938\\\\296.8998\\\\295.01\\\\12.30469\\\\296.8888\\\\295.01\\\\14.64844\\\\296.9755\\\\295.01\\\\16.99219\\\\296.8888\\\\295.01\\\\28.71094\\\\296.878\\\\295.01\\\\40.42969\\\\296.847\\\\295.01\\\\59.17969\\\\296.7115\\\\295.01\\\\61.52344\\\\296.6365\\\\295.01\\\\66.21094\\\\296.6365\\\\295.01\\\\77.92969\\\\296.5696\\\\295.01\\\\89.64844\\\\296.5616\\\\295.01\\\\101.3672\\\\296.506\\\\295.01\\\\106.0547\\\\296.4528\\\\295.01\\\\115.4297\\\\296.4117\\\\295.01\\\\124.8047\\\\296.308\\\\295.01\\\\129.4922\\\\296.3348\\\\295.01\\\\131.8359\\\\296.1569\\\\295.01\\\\134.1797\\\\296.1766\\\\295.01\\\\136.5234\\\\295.9102\\\\295.01\\\\141.2109\\\\295.8807\\\\295.01\\\\143.5547\\\\295.9983\\\\295.01\\\\145.8984\\\\295.8791\\\\295.01\\\\148.2422\\\\295.8791\\\\295.01\\\\157.6172\\\\295.7684\\\\295.01\\\\166.9922\\\\295.7173\\\\295.01\\\\169.3359\\\\295.6638\\\\295.01\\\\174.0234\\\\295.6638\\\\295.01\\\\176.3672\\\\295.5916\\\\295.01\\\\183.3984\\\\295.5235\\\\295.01\\\\188.0859\\\\295.5742\\\\295.01\\\\192.7734\\\\295.557\\\\295.01\\\\197.4609\\\\295.8012\\\\295.01\\\\202.1484\\\\295.7173\\\\295.01\\\\204.4922\\\\295.4137\\\\295.01\\\\206.8359\\\\294.8107\\\\295.01\\\\209.1797\\\\294.3656\\\\295.01\\\\211.5234\\\\292.4688\\\\295.01\\\\213.8672\\\\291.1611\\\\295.01\\\\216.2109\\\\289.5734\\\\295.01\\\\217.2207\\\\288.6234\\\\295.01\\\\218.5547\\\\287.0638\\\\295.01\\\\221.6933\\\\283.9359\\\\295.01\\\\225.5859\\\\279.8647\\\\295.01\\\\227.9297\\\\277.5633\\\\295.01\\\\230.2734\\\\275.067\\\\295.01\\\\233.2115\\\\272.2172\\\\295.01\\\\234.9609\\\\270.3037\\\\295.01\\\\237.7232\\\\267.5297\\\\295.01\\\\239.9391\\\\265.1859\\\\295.01\\\\244.3359\\\\260.7816\\\\295.01\\\\246.788\\\\258.1547\\\\295.01\\\\249.0234\\\\255.4653\\\\295.01\\\\250.3651\\\\253.4672\\\\295.01\\\\251.5764\\\\251.1234\\\\295.01\\\\252.2446\\\\248.7797\\\\295.01\\\\252.5619\\\\246.4359\\\\295.01\\\\252.6451\\\\241.7484\\\\295.01\\\\252.8992\\\\239.4047\\\\295.01\\\\253.0001\\\\237.0609\\\\295.01\\\\252.33\\\\234.7172\\\\295.01\\\\251.3672\\\\233.4192\\\\295.01\\\\249.0234\\\\232.9487\\\\295.01\\\\241.9922\\\\233.0537\\\\295.01\\\\237.3047\\\\232.9699\\\\295.01\\\\232.6172\\\\232.9487\\\\295.01\\\\227.9297\\\\233.0207\\\\295.01\\\\216.2109\\\\233.0819\\\\295.01\\\\211.5234\\\\233.0632\\\\295.01\\\\206.8359\\\\232.9699\\\\295.01\\\\204.4922\\\\232.7588\\\\295.01\\\\199.8047\\\\232.7322\\\\295.01\\\\190.4297\\\\232.7975\\\\295.01\\\\176.3672\\\\232.7186\\\\295.01\\\\162.3047\\\\232.7322\\\\295.01\\\\152.9297\\\\232.7848\\\\295.01\\\\143.5547\\\\232.7456\\\\295.01\\\\138.8672\\\\232.6623\\\\295.01\\\\136.5234\\\\232.6908\\\\295.01\\\\131.8359\\\\232.6329\\\\295.01\\\\127.1484\\\\232.6623\\\\295.01\\\\124.8047\\\\232.6329\\\\295.01\\\\110.7422\\\\232.6477\\\\295.01\\\\108.3984\\\\232.6179\\\\295.01\\\\106.0547\\\\231.7168\\\\295.01\\\\103.7109\\\\232.6027\\\\295.01\\\\101.3672\\\\232.9735\\\\295.01\\\\99.02344\\\\233.091\\\\295.01\\\\89.64844\\\\233.1091\\\\295.01\\\\80.27344\\\\233.0819\\\\295.01\\\\73.24219\\\\233.131\\\\295.01\\\\66.21094\\\\233.1132\\\\295.01\\\\56.83594\\\\233.1397\\\\295.01\\\\54.49219\\\\233.1042\\\\295.01\\\\45.11719\\\\233.0951\\\\295.01\\\\44.15678\\\\232.3734\\\\295.01\\\\42.77344\\\\231.0106\\\\295.01\\\\42.05375\\\\230.0297\\\\295.01\\\\42.77344\\\\229.2553\\\\295.01\\\\45.11719\\\\228.5743\\\\295.01\\\\47.46094\\\\227.0897\\\\295.01\\\\49.80469\\\\226.0467\\\\295.01\\\\52.14844\\\\224.5908\\\\295.01\\\\54.49219\\\\223.7059\\\\295.01\\\\56.83594\\\\221.8778\\\\295.01\\\\59.17969\\\\220.2334\\\\295.01\\\\61.52344\\\\218.9233\\\\295.01\\\\64.98363\\\\215.9672\\\\295.01\\\\66.21094\\\\215.0635\\\\295.01\\\\67.76714\\\\213.6234\\\\295.01\\\\68.55469\\\\212.7302\\\\295.01\\\\70.89844\\\\210.5392\\\\295.01\\\\74.57118\\\\206.5922\\\\295.01\\\\76.57597\\\\204.2484\\\\295.01\\\\78.3308\\\\201.9047\\\\295.01\\\\80.27344\\\\198.9949\\\\295.01\\\\81.35471\\\\197.2172\\\\295.01\\\\83.0397\\\\194.8734\\\\295.01\\\\84.14964\\\\192.5297\\\\295.01\\\\85.47139\\\\190.1859\\\\295.01\\\\86.37085\\\\187.8422\\\\295.01\\\\87.84957\\\\185.4984\\\\295.01\\\\88.62815\\\\183.1547\\\\295.01\\\\89.2244\\\\180.8109\\\\295.01\\\\90.29716\\\\178.4672\\\\295.01\\\\91.52786\\\\173.7797\\\\295.01\\\\92.50722\\\\171.4359\\\\295.01\\\\92.97176\\\\169.0922\\\\295.01\\\\93.68722\\\\157.3734\\\\295.01\\\\93.72856\\\\152.6859\\\\295.01\\\\93.52158\\\\147.9984\\\\295.01\\\\93.06984\\\\140.9672\\\\295.01\\\\92.83925\\\\138.6234\\\\295.01\\\\92.12536\\\\136.2797\\\\295.01\\\\91.24645\\\\133.9359\\\\295.01\\\\90.72266\\\\131.5922\\\\295.01\\\\89.95934\\\\129.2484\\\\295.01\\\\88.9045\\\\126.9047\\\\295.01\\\\88.46478\\\\124.5609\\\\295.01\\\\87.35082\\\\122.2172\\\\295.01\\\\86.12689\\\\119.8734\\\\295.01\\\\85.13927\\\\117.5297\\\\295.01\\\\83.90684\\\\115.1859\\\\295.01\\\\82.26481\\\\112.8422\\\\295.01\\\\81.10777\\\\110.4984\\\\295.01\\\\77.92969\\\\106.3366\\\\295.01\\\\77.45313\\\\105.8109\\\\295.01\\\\75.98749\\\\103.4672\\\\295.01\\\\71.75832\\\\98.77969\\\\295.01\\\\68.55469\\\\95.61713\\\\295.01\\\\63.86719\\\\91.51749\\\\295.01\\\\61.52344\\\\90.08352\\\\295.01\\\\59.17969\\\\88.14508\\\\295.01\\\\56.83594\\\\86.47145\\\\295.01\\\\54.49219\\\\85.40367\\\\295.01\\\\52.14844\\\\83.63686\\\\295.01\\\\49.80469\\\\82.85554\\\\295.01\\\\47.46094\\\\81.48983\\\\295.01\\\\45.11719\\\\80.5947\\\\295.01\\\\42.77344\\\\79.16859\\\\295.01\\\\40.42969\\\\78.71358\\\\295.01\\\\38.08594\\\\78.12252\\\\295.01\\\\35.74219\\\\77.10697\\\\295.01\\\\33.39844\\\\76.50327\\\\295.01\\\\31.05469\\\\76.07934\\\\295.01\\\\28.71094\\\\75.31472\\\\295.01\\\\26.36719\\\\74.67744\\\\295.01\\\\24.02344\\\\74.42056\\\\295.01\\\\16.99219\\\\74.12224\\\\295.01\\\\12.30469\\\\74.07317\\\\295.01\\\\7.617188\\\\74.17641\\\\295.01\\\\2.929688\\\\74.40835\\\\295.01\\\\0.5859375\\\\74.66957\\\\295.01\\\\-4.101563\\\\76.07934\\\\295.01\\\\-6.445313\\\\76.52584\\\\295.01\\\\-8.789063\\\\77.22805\\\\295.01\\\\-11.13281\\\\78.25741\\\\295.01\\\\-15.82031\\\\79.32516\\\\295.01\\\\-18.16406\\\\80.7914\\\\295.01\\\\-20.50781\\\\81.66099\\\\295.01\\\\-22.85156\\\\83.04977\\\\295.01\\\\-25.19531\\\\83.83018\\\\295.01\\\\-27.53906\\\\85.65853\\\\295.01\\\\-29.88281\\\\86.7363\\\\295.01\\\\-32.22656\\\\88.3882\\\\295.01\\\\-34.57031\\\\90.3647\\\\295.01\\\\-36.52969\\\\91.74844\\\\295.01\\\\-41.60156\\\\95.97882\\\\295.01\\\\-46.52696\\\\101.1234\\\\295.01\\\\-48.63281\\\\103.7908\\\\295.01\\\\-50.13672\\\\105.8109\\\\295.01\\\\-52.07761\\\\108.1547\\\\295.01\\\\-53.5798\\\\110.4984\\\\295.01\\\\-54.92211\\\\112.8422\\\\295.01\\\\-56.62057\\\\115.1859\\\\295.01\\\\-57.39671\\\\117.5297\\\\295.01\\\\-58.88357\\\\119.8734\\\\295.01\\\\-59.73514\\\\122.2172\\\\295.01\\\\-61.08647\\\\124.5609\\\\295.01\\\\-61.55913\\\\126.9047\\\\295.01\\\\-62.3125\\\\129.2484\\\\295.01\\\\-63.44866\\\\131.5922\\\\295.01\\\\-64.00282\\\\133.9359\\\\295.01\\\\-64.36475\\\\136.2797\\\\295.01\\\\-65.6146\\\\140.9672\\\\295.01\\\\-65.84246\\\\143.3109\\\\295.01\\\\-66.18851\\\\147.9984\\\\295.01\\\\-66.41199\\\\152.6859\\\\295.01\\\\-66.39387\\\\157.3734\\\\295.01\\\\-66.14896\\\\162.0609\\\\295.01\\\\-65.75378\\\\166.7484\\\\295.01\\\\-65.45489\\\\169.0922\\\\295.01\\\\-64.61088\\\\171.4359\\\\295.01\\\\-63.74142\\\\176.1234\\\\295.01\\\\-62.87364\\\\178.4672\\\\295.01\\\\-61.83551\\\\180.8109\\\\295.01\\\\-61.31699\\\\183.1547\\\\295.01\\\\-60.39734\\\\185.4984\\\\295.01\\\\-59.19819\\\\187.8422\\\\295.01\\\\-57.87465\\\\190.1859\\\\295.01\\\\-56.84821\\\\192.5297\\\\295.01\\\\-55.66406\\\\194.6634\\\\295.01\\\\-54.06846\\\\197.2172\\\\295.01\\\\-50.97656\\\\201.7629\\\\295.01\\\\-47.3112\\\\206.5922\\\\295.01\\\\-42.79436\\\\211.2797\\\\295.01\\\\-39.25781\\\\214.7107\\\\295.01\\\\-34.57031\\\\218.463\\\\295.01\\\\-32.22656\\\\219.9411\\\\295.01\\\\-27.96936\\\\222.9984\\\\295.01\\\\-27.53906\\\\223.3836\\\\295.01\\\\-25.19531\\\\224.406\\\\295.01\\\\-22.85156\\\\225.8094\\\\295.01\\\\-20.50781\\\\226.8905\\\\295.01\\\\-18.16406\\\\228.4055\\\\295.01\\\\-15.82031\\\\229.1319\\\\295.01\\\\-14.95299\\\\230.0297\\\\295.01\\\\-15.82031\\\\231.3646\\\\295.01\\\\-16.96898\\\\232.3734\\\\295.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848849599600001.538291679804\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"358\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"8\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-18.16406\\\\233.0632\\\\298.01\\\\-27.53906\\\\233.1042\\\\298.01\\\\-29.88281\\\\233.0819\\\\298.01\\\\-34.57031\\\\233.131\\\\298.01\\\\-43.94531\\\\233.1221\\\\298.01\\\\-50.97656\\\\233.1736\\\\298.01\\\\-62.69531\\\\233.1397\\\\298.01\\\\-65.03906\\\\232.8376\\\\298.01\\\\-69.72656\\\\232.9839\\\\298.01\\\\-79.10156\\\\233.0245\\\\298.01\\\\-90.82031\\\\233.0382\\\\298.01\\\\-93.16406\\\\233.0859\\\\298.01\\\\-109.5703\\\\233.1132\\\\298.01\\\\-111.9141\\\\233.1791\\\\298.01\\\\-114.2578\\\\233.7139\\\\298.01\\\\-118.9453\\\\233.9793\\\\298.01\\\\-128.3203\\\\234.0284\\\\298.01\\\\-130.6641\\\\233.9793\\\\298.01\\\\-135.3516\\\\234.0591\\\\298.01\\\\-137.6953\\\\234.0284\\\\298.01\\\\-142.3828\\\\234.0855\\\\298.01\\\\-144.7266\\\\234.0284\\\\298.01\\\\-151.7578\\\\234.002\\\\298.01\\\\-158.7891\\\\234.0263\\\\298.01\\\\-163.4766\\\\233.9784\\\\298.01\\\\-165.8203\\\\234.0072\\\\298.01\\\\-168.1641\\\\234.1756\\\\298.01\\\\-170.5078\\\\234.2214\\\\298.01\\\\-179.8828\\\\234.1934\\\\298.01\\\\-186.9141\\\\234.2721\\\\298.01\\\\-189.2578\\\\234.2289\\\\298.01\\\\-193.9453\\\\234.2431\\\\298.01\\\\-198.6328\\\\234.1692\\\\298.01\\\\-200.9766\\\\234.2326\\\\298.01\\\\-205.6641\\\\234.1271\\\\298.01\\\\-212.6953\\\\234.2224\\\\298.01\\\\-215.0391\\\\234.1992\\\\298.01\\\\-222.0703\\\\234.3115\\\\298.01\\\\-224.4141\\\\234.2224\\\\298.01\\\\-226.7578\\\\234.2502\\\\298.01\\\\-233.7891\\\\234.0906\\\\298.01\\\\-238.4766\\\\234.0329\\\\298.01\\\\-243.1641\\\\234.0283\\\\298.01\\\\-247.8516\\\\233.7949\\\\298.01\\\\-250.1953\\\\233.8681\\\\298.01\\\\-252.5391\\\\234.7626\\\\298.01\\\\-254.3469\\\\237.0609\\\\298.01\\\\-255.6034\\\\239.4047\\\\298.01\\\\-254.5181\\\\241.7484\\\\298.01\\\\-254.2274\\\\244.0922\\\\298.01\\\\-254.181\\\\248.7797\\\\298.01\\\\-253.9355\\\\251.1234\\\\298.01\\\\-253.5926\\\\253.4672\\\\298.01\\\\-252.7483\\\\255.8109\\\\298.01\\\\-250.8092\\\\258.1547\\\\298.01\\\\-248.713\\\\260.4984\\\\298.01\\\\-246.263\\\\262.8422\\\\298.01\\\\-244.1406\\\\265.1859\\\\298.01\\\\-241.6671\\\\267.5297\\\\298.01\\\\-239.4754\\\\269.8734\\\\298.01\\\\-237.0156\\\\272.2172\\\\298.01\\\\-233.7891\\\\275.382\\\\298.01\\\\-231.4453\\\\277.8249\\\\298.01\\\\-229.1016\\\\279.9981\\\\298.01\\\\-226.7578\\\\282.5281\\\\298.01\\\\-224.4141\\\\284.6784\\\\298.01\\\\-222.0703\\\\287.2355\\\\298.01\\\\-220.5414\\\\288.6234\\\\298.01\\\\-218.2745\\\\290.9672\\\\298.01\\\\-217.3828\\\\291.6508\\\\298.01\\\\-212.6953\\\\294.5949\\\\298.01\\\\-210.3516\\\\295.3142\\\\298.01\\\\-208.0078\\\\296.4674\\\\298.01\\\\-205.6641\\\\296.8852\\\\298.01\\\\-203.3203\\\\297.1563\\\\298.01\\\\-196.2891\\\\297.1488\\\\298.01\\\\-193.9453\\\\297.0597\\\\298.01\\\\-182.2266\\\\296.9529\\\\298.01\\\\-168.1641\\\\296.8576\\\\298.01\\\\-154.1016\\\\296.9249\\\\298.01\\\\-149.4141\\\\296.8921\\\\298.01\\\\-128.3203\\\\296.9228\\\\298.01\\\\-121.2891\\\\296.8623\\\\298.01\\\\-111.9141\\\\296.8549\\\\298.01\\\\-107.2266\\\\296.8266\\\\298.01\\\\-102.5391\\\\296.8731\\\\298.01\\\\-95.50781\\\\296.8453\\\\298.01\\\\-88.47656\\\\296.9218\\\\298.01\\\\-83.78906\\\\296.9016\\\\298.01\\\\-69.72656\\\\296.979\\\\298.01\\\\-67.38281\\\\296.9514\\\\298.01\\\\-65.03906\\\\297.2199\\\\298.01\\\\-62.69531\\\\296.9622\\\\298.01\\\\-55.66406\\\\296.9926\\\\298.01\\\\-50.97656\\\\296.9467\\\\298.01\\\\-48.63281\\\\297.3652\\\\298.01\\\\-46.28906\\\\297.0439\\\\298.01\\\\-43.94531\\\\297.2875\\\\298.01\\\\-39.25781\\\\297.0121\\\\298.01\\\\-34.57031\\\\297.1564\\\\298.01\\\\-32.22656\\\\297.3612\\\\298.01\\\\-29.88281\\\\297.4229\\\\298.01\\\\-27.53906\\\\297.1687\\\\298.01\\\\-25.19531\\\\297.4334\\\\298.01\\\\-18.16406\\\\297.3612\\\\298.01\\\\-15.82031\\\\297.4441\\\\298.01\\\\-13.47656\\\\297.4125\\\\298.01\\\\-11.13281\\\\297.2468\\\\298.01\\\\-8.789063\\\\297.4125\\\\298.01\\\\-6.445313\\\\297.373\\\\298.01\\\\-4.101563\\\\297.4195\\\\298.01\\\\-1.757813\\\\297.077\\\\298.01\\\\0.5859375\\\\297.4229\\\\298.01\\\\2.929688\\\\297.4125\\\\298.01\\\\5.273438\\\\296.9489\\\\298.01\\\\7.617188\\\\297.3168\\\\298.01\\\\9.960938\\\\296.9377\\\\298.01\\\\12.30469\\\\296.8998\\\\298.01\\\\14.64844\\\\297.1975\\\\298.01\\\\16.99219\\\\296.8579\\\\298.01\\\\28.71094\\\\296.878\\\\298.01\\\\40.42969\\\\296.8163\\\\298.01\\\\42.77344\\\\296.8369\\\\298.01\\\\49.80469\\\\296.734\\\\298.01\\\\59.17969\\\\296.6906\\\\298.01\\\\61.52344\\\\296.6365\\\\298.01\\\\68.55469\\\\296.6278\\\\298.01\\\\73.24219\\\\296.5777\\\\298.01\\\\75.58594\\\\296.6191\\\\298.01\\\\84.96094\\\\296.5284\\\\298.01\\\\96.67969\\\\296.5538\\\\298.01\\\\103.7109\\\\296.479\\\\298.01\\\\115.4297\\\\296.4259\\\\298.01\\\\122.4609\\\\296.3434\\\\298.01\\\\129.4922\\\\296.3495\\\\298.01\\\\131.8359\\\\295.9141\\\\298.01\\\\136.5234\\\\296.2256\\\\298.01\\\\138.8672\\\\295.833\\\\298.01\\\\143.5547\\\\295.9857\\\\298.01\\\\145.8984\\\\295.8791\\\\298.01\\\\152.9297\\\\295.833\\\\298.01\\\\164.6484\\\\295.6819\\\\298.01\\\\171.6797\\\\295.6819\\\\298.01\\\\181.0547\\\\295.5401\\\\298.01\\\\185.7422\\\\295.5742\\\\298.01\\\\192.7734\\\\295.557\\\\298.01\\\\197.4609\\\\295.8012\\\\298.01\\\\202.1484\\\\295.6819\\\\298.01\\\\204.4922\\\\295.3698\\\\298.01\\\\206.8359\\\\294.803\\\\298.01\\\\209.1797\\\\294.3656\\\\298.01\\\\211.5234\\\\292.4764\\\\298.01\\\\213.8672\\\\291.1765\\\\298.01\\\\216.2109\\\\289.5873\\\\298.01\\\\217.229\\\\288.6234\\\\298.01\\\\218.5547\\\\287.0752\\\\298.01\\\\221.7097\\\\283.9359\\\\298.01\\\\225.5859\\\\279.8775\\\\298.01\\\\227.9297\\\\277.5633\\\\298.01\\\\230.2734\\\\275.0808\\\\298.01\\\\233.1989\\\\272.2172\\\\298.01\\\\234.9609\\\\270.2887\\\\298.01\\\\237.7384\\\\267.5297\\\\298.01\\\\241.9922\\\\263.0843\\\\298.01\\\\244.3359\\\\260.7643\\\\298.01\\\\246.788\\\\258.1547\\\\298.01\\\\249.0234\\\\255.451\\\\298.01\\\\250.3651\\\\253.4672\\\\298.01\\\\251.5297\\\\251.1234\\\\298.01\\\\252.1947\\\\248.7797\\\\298.01\\\\252.4915\\\\246.4359\\\\298.01\\\\252.5755\\\\241.7484\\\\298.01\\\\252.8592\\\\239.4047\\\\298.01\\\\252.9236\\\\237.0609\\\\298.01\\\\252.2924\\\\234.7172\\\\298.01\\\\251.3672\\\\233.4697\\\\298.01\\\\249.0234\\\\232.882\\\\298.01\\\\244.3359\\\\232.9048\\\\298.01\\\\241.9922\\\\233.0145\\\\298.01\\\\232.6172\\\\232.9048\\\\298.01\\\\227.9297\\\\233.0007\\\\298.01\\\\216.2109\\\\233.0632\\\\298.01\\\\211.5234\\\\233.0537\\\\298.01\\\\206.8359\\\\232.9699\\\\298.01\\\\204.4922\\\\232.7322\\\\298.01\\\\199.8047\\\\232.7186\\\\298.01\\\\190.4297\\\\232.7719\\\\298.01\\\\183.3984\\\\232.7719\\\\298.01\\\\181.0547\\\\232.7322\\\\298.01\\\\174.0234\\\\232.7048\\\\298.01\\\\171.6797\\\\232.7322\\\\298.01\\\\166.9922\\\\232.6908\\\\298.01\\\\157.6172\\\\232.7975\\\\298.01\\\\155.2734\\\\232.7588\\\\298.01\\\\148.2422\\\\232.7875\\\\298.01\\\\143.5547\\\\232.7614\\\\298.01\\\\138.8672\\\\232.6477\\\\298.01\\\\124.8047\\\\232.6179\\\\298.01\\\\122.4609\\\\232.6477\\\\298.01\\\\113.0859\\\\232.6027\\\\298.01\\\\110.7422\\\\232.4552\\\\298.01\\\\108.3984\\\\232.2192\\\\298.01\\\\106.0547\\\\231.6764\\\\298.01\\\\103.7109\\\\231.8559\\\\298.01\\\\102.8237\\\\232.3734\\\\298.01\\\\101.3672\\\\232.9839\\\\298.01\\\\99.02344\\\\233.0951\\\\298.01\\\\87.30469\\\\233.0819\\\\298.01\\\\84.96094\\\\233.1091\\\\298.01\\\\80.27344\\\\233.0726\\\\298.01\\\\77.92969\\\\233.1132\\\\298.01\\\\70.89844\\\\233.1397\\\\298.01\\\\68.55469\\\\233.1132\\\\298.01\\\\52.14844\\\\233.131\\\\298.01\\\\45.11719\\\\233.0859\\\\298.01\\\\44.16726\\\\232.3734\\\\298.01\\\\42.77344\\\\231.0206\\\\298.01\\\\42.04498\\\\230.0297\\\\298.01\\\\42.77344\\\\229.2462\\\\298.01\\\\45.11719\\\\228.5664\\\\298.01\\\\47.46094\\\\227.0695\\\\298.01\\\\49.80469\\\\226.0552\\\\298.01\\\\52.14844\\\\224.5723\\\\298.01\\\\54.49219\\\\223.6857\\\\298.01\\\\56.83594\\\\221.8519\\\\298.01\\\\59.17969\\\\220.2086\\\\298.01\\\\61.52344\\\\218.8854\\\\298.01\\\\64.94469\\\\215.9672\\\\298.01\\\\66.21094\\\\215.0191\\\\298.01\\\\67.72036\\\\213.6234\\\\298.01\\\\68.55469\\\\212.6986\\\\298.01\\\\70.89844\\\\210.5055\\\\298.01\\\\74.53191\\\\206.5922\\\\298.01\\\\76.54903\\\\204.2484\\\\298.01\\\\78.26105\\\\201.9047\\\\298.01\\\\80.27344\\\\198.9262\\\\298.01\\\\82.61719\\\\195.2822\\\\298.01\\\\82.98087\\\\194.8734\\\\298.01\\\\84.96094\\\\190.9255\\\\298.01\\\\85.43701\\\\190.1859\\\\298.01\\\\86.33423\\\\187.8422\\\\298.01\\\\87.78722\\\\185.4984\\\\298.01\\\\88.60233\\\\183.1547\\\\298.01\\\\89.10253\\\\180.8109\\\\298.01\\\\90.17504\\\\178.4672\\\\298.01\\\\90.88959\\\\176.1234\\\\298.01\\\\91.43783\\\\173.7797\\\\298.01\\\\92.39601\\\\171.4359\\\\298.01\\\\92.95762\\\\169.0922\\\\298.01\\\\93.55695\\\\159.7172\\\\298.01\\\\93.65527\\\\157.3734\\\\298.01\\\\93.67542\\\\152.6859\\\\298.01\\\\93.61213\\\\150.3422\\\\298.01\\\\93.22542\\\\143.3109\\\\298.01\\\\93.06345\\\\140.9672\\\\298.01\\\\92.77563\\\\138.6234\\\\298.01\\\\91.21714\\\\133.9359\\\\298.01\\\\90.67235\\\\131.5922\\\\298.01\\\\89.88776\\\\129.2484\\\\298.01\\\\88.8737\\\\126.9047\\\\298.01\\\\88.44087\\\\124.5609\\\\298.01\\\\86.09712\\\\119.8734\\\\298.01\\\\85.05786\\\\117.5297\\\\298.01\\\\83.87151\\\\115.1859\\\\298.01\\\\82.22388\\\\112.8422\\\\298.01\\\\81.09117\\\\110.4984\\\\298.01\\\\77.92969\\\\106.4052\\\\298.01\\\\77.3894\\\\105.8109\\\\298.01\\\\75.94332\\\\103.4672\\\\298.01\\\\71.71799\\\\98.77969\\\\298.01\\\\68.55469\\\\95.65721\\\\298.01\\\\63.86719\\\\91.54878\\\\298.01\\\\61.52344\\\\90.1121\\\\298.01\\\\59.17969\\\\88.15762\\\\298.01\\\\56.83594\\\\86.51503\\\\298.01\\\\54.49219\\\\85.42721\\\\298.01\\\\52.14844\\\\83.64907\\\\298.01\\\\49.80469\\\\82.89023\\\\298.01\\\\47.46094\\\\81.50237\\\\298.01\\\\45.11719\\\\80.62591\\\\298.01\\\\42.77344\\\\79.18153\\\\298.01\\\\40.42969\\\\78.7203\\\\298.01\\\\38.08594\\\\78.1349\\\\298.01\\\\35.74219\\\\77.11755\\\\298.01\\\\33.39844\\\\76.51949\\\\298.01\\\\31.05469\\\\76.07934\\\\298.01\\\\26.36719\\\\74.67744\\\\298.01\\\\24.02344\\\\74.42056\\\\298.01\\\\14.64844\\\\74.07317\\\\298.01\\\\9.960938\\\\74.11538\\\\298.01\\\\2.929688\\\\74.40105\\\\298.01\\\\0.5859375\\\\74.67952\\\\298.01\\\\-1.757813\\\\75.31406\\\\298.01\\\\-4.101563\\\\76.07065\\\\298.01\\\\-6.445313\\\\76.49051\\\\298.01\\\\-8.789063\\\\77.17276\\\\298.01\\\\-11.13281\\\\78.20097\\\\298.01\\\\-15.82031\\\\79.31967\\\\298.01\\\\-18.16406\\\\80.76948\\\\298.01\\\\-20.50781\\\\81.64266\\\\298.01\\\\-22.85156\\\\83.0305\\\\298.01\\\\-25.19531\\\\83.7937\\\\298.01\\\\-27.53906\\\\85.63515\\\\298.01\\\\-29.88281\\\\86.7363\\\\298.01\\\\-32.22656\\\\88.36089\\\\298.01\\\\-34.57031\\\\90.3302\\\\298.01\\\\-36.56719\\\\91.74844\\\\298.01\\\\-41.60156\\\\95.93605\\\\298.01\\\\-46.58845\\\\101.1234\\\\298.01\\\\-50.17995\\\\105.8109\\\\298.01\\\\-52.10386\\\\108.1547\\\\298.01\\\\-53.63992\\\\110.4984\\\\298.01\\\\-54.95532\\\\112.8422\\\\298.01\\\\-56.64794\\\\115.1859\\\\298.01\\\\-57.4403\\\\117.5297\\\\298.01\\\\-58.91927\\\\119.8734\\\\298.01\\\\-59.78655\\\\122.2172\\\\298.01\\\\-61.11754\\\\124.5609\\\\298.01\\\\-61.58921\\\\126.9047\\\\298.01\\\\-62.38012\\\\129.2484\\\\298.01\\\\-63.49118\\\\131.5922\\\\298.01\\\\-64.02599\\\\133.9359\\\\298.01\\\\-64.3932\\\\136.2797\\\\298.01\\\\-65.11897\\\\138.6234\\\\298.01\\\\-65.64544\\\\140.9672\\\\298.01\\\\-66.23938\\\\147.9984\\\\298.01\\\\-66.46289\\\\152.6859\\\\298.01\\\\-66.48911\\\\155.0297\\\\298.01\\\\-66.34437\\\\159.7172\\\\298.01\\\\-65.99894\\\\164.4047\\\\298.01\\\\-65.49149\\\\169.0922\\\\298.01\\\\-64.6875\\\\171.4359\\\\298.01\\\\-63.7739\\\\176.1234\\\\298.01\\\\-62.9398\\\\178.4672\\\\298.01\\\\-61.86011\\\\180.8109\\\\298.01\\\\-61.33423\\\\183.1547\\\\298.01\\\\-60.43332\\\\185.4984\\\\298.01\\\\-58.00781\\\\190.0632\\\\298.01\\\\-56.85406\\\\192.5297\\\\298.01\\\\-55.66406\\\\194.7283\\\\298.01\\\\-54.11692\\\\197.2172\\\\298.01\\\\-50.97656\\\\201.8369\\\\298.01\\\\-47.36435\\\\206.5922\\\\298.01\\\\-45.04395\\\\208.9359\\\\298.01\\\\-42.83026\\\\211.2797\\\\298.01\\\\-39.25781\\\\214.7435\\\\298.01\\\\-34.57031\\\\218.4974\\\\298.01\\\\-32.22656\\\\219.9595\\\\298.01\\\\-28.02053\\\\222.9984\\\\298.01\\\\-27.53906\\\\223.4238\\\\298.01\\\\-25.19531\\\\224.4187\\\\298.01\\\\-22.85156\\\\225.8252\\\\298.01\\\\-20.50781\\\\226.9067\\\\298.01\\\\-18.16406\\\\228.4286\\\\298.01\\\\-15.82031\\\\229.1235\\\\298.01\\\\-14.9447\\\\230.0297\\\\298.01\\\\-15.82031\\\\231.3969\\\\298.01\\\\-16.94484\\\\232.3734\\\\298.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848866600500001.541849142008\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"358\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"9\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-252.9673\\\\255.8109\\\\301.01\\\\-248.7477\\\\260.4984\\\\301.01\\\\-245.5078\\\\263.6263\\\\301.01\\\\-244.1215\\\\265.1859\\\\301.01\\\\-241.6381\\\\267.5297\\\\301.01\\\\-239.4403\\\\269.8734\\\\301.01\\\\-233.7891\\\\275.3765\\\\301.01\\\\-231.4453\\\\277.8215\\\\301.01\\\\-229.1016\\\\280.0093\\\\301.01\\\\-226.7578\\\\282.5186\\\\301.01\\\\-224.4141\\\\284.6481\\\\301.01\\\\-222.0703\\\\287.2057\\\\301.01\\\\-220.5227\\\\288.6234\\\\301.01\\\\-218.2914\\\\290.9672\\\\301.01\\\\-217.3828\\\\291.6599\\\\301.01\\\\-212.6953\\\\294.5939\\\\301.01\\\\-210.3516\\\\295.3008\\\\301.01\\\\-208.0078\\\\296.4424\\\\301.01\\\\-205.6641\\\\296.8595\\\\301.01\\\\-203.3203\\\\297.1563\\\\301.01\\\\-196.2891\\\\297.1563\\\\301.01\\\\-193.9453\\\\297.0746\\\\301.01\\\\-186.9141\\\\297.033\\\\301.01\\\\-177.5391\\\\296.8785\\\\301.01\\\\-165.8203\\\\296.8345\\\\301.01\\\\-151.7578\\\\296.8757\\\\301.01\\\\-149.4141\\\\296.8513\\\\301.01\\\\-140.0391\\\\296.8521\\\\301.01\\\\-137.6953\\\\296.886\\\\301.01\\\\-118.9453\\\\296.8623\\\\301.01\\\\-111.9141\\\\296.8078\\\\301.01\\\\-104.8828\\\\296.8456\\\\301.01\\\\-97.85156\\\\296.836\\\\301.01\\\\-93.16406\\\\296.8927\\\\301.01\\\\-86.13281\\\\296.9203\\\\301.01\\\\-81.44531\\\\296.8927\\\\301.01\\\\-74.41406\\\\296.9514\\\\301.01\\\\-58.00781\\\\296.9428\\\\301.01\\\\-53.32031\\\\296.9579\\\\301.01\\\\-50.97656\\\\296.9175\\\\301.01\\\\-48.63281\\\\297.0362\\\\301.01\\\\-46.28906\\\\296.9267\\\\301.01\\\\-43.94531\\\\297.2032\\\\301.01\\\\-41.60156\\\\297.3168\\\\301.01\\\\-39.25781\\\\296.8998\\\\301.01\\\\-34.57031\\\\297.3691\\\\301.01\\\\-32.22656\\\\297.2089\\\\301.01\\\\-29.88281\\\\297.4229\\\\301.01\\\\-27.53906\\\\297.3299\\\\301.01\\\\-25.19531\\\\297.4125\\\\301.01\\\\-13.47656\\\\297.4125\\\\301.01\\\\-11.13281\\\\297.252\\\\301.01\\\\-8.789063\\\\297.4055\\\\301.01\\\\-6.445313\\\\297.3015\\\\301.01\\\\-4.101563\\\\297.4125\\\\301.01\\\\-1.757813\\\\297.1261\\\\301.01\\\\0.5859375\\\\297.4229\\\\301.01\\\\2.929688\\\\297.4125\\\\301.01\\\\5.273438\\\\297.1687\\\\301.01\\\\7.617188\\\\297.0362\\\\301.01\\\\9.960938\\\\297.1516\\\\301.01\\\\12.30469\\\\296.8579\\\\301.01\\\\14.64844\\\\296.9396\\\\301.01\\\\19.33594\\\\296.8369\\\\301.01\\\\28.71094\\\\296.868\\\\301.01\\\\38.08594\\\\296.7858\\\\301.01\\\\45.11719\\\\296.7858\\\\301.01\\\\49.80469\\\\296.7115\\\\301.01\\\\54.49219\\\\296.7115\\\\301.01\\\\63.86719\\\\296.6154\\\\301.01\\\\66.21094\\\\296.6278\\\\301.01\\\\77.92969\\\\296.5901\\\\301.01\\\\80.27344\\\\296.5362\\\\301.01\\\\91.99219\\\\296.5284\\\\301.01\\\\94.33594\\\\296.5461\\\\301.01\\\\103.7109\\\\296.4917\\\\301.01\\\\106.0547\\\\296.5208\\\\301.01\\\\108.3984\\\\296.4462\\\\301.01\\\\120.1172\\\\296.3831\\\\301.01\\\\129.4922\\\\296.3139\\\\301.01\\\\134.1797\\\\295.9385\\\\301.01\\\\136.5234\\\\296.3023\\\\301.01\\\\138.8672\\\\295.833\\\\301.01\\\\141.2109\\\\295.939\\\\301.01\\\\155.2734\\\\295.7849\\\\301.01\\\\159.9609\\\\295.7849\\\\301.01\\\\169.3359\\\\295.6638\\\\301.01\\\\176.3672\\\\295.6638\\\\301.01\\\\181.0547\\\\295.5742\\\\301.01\\\\185.7422\\\\295.6093\\\\301.01\\\\192.7734\\\\295.5742\\\\301.01\\\\197.4609\\\\295.8172\\\\301.01\\\\202.1484\\\\295.6638\\\\301.01\\\\204.4922\\\\295.3698\\\\301.01\\\\206.8359\\\\294.8185\\\\301.01\\\\209.1797\\\\294.3828\\\\301.01\\\\211.5234\\\\292.4841\\\\301.01\\\\213.8672\\\\291.1916\\\\301.01\\\\216.2109\\\\289.6171\\\\301.01\\\\217.2534\\\\288.6234\\\\301.01\\\\218.5547\\\\287.0864\\\\301.01\\\\221.7097\\\\283.9359\\\\301.01\\\\225.5859\\\\279.9023\\\\301.01\\\\227.9297\\\\277.5431\\\\301.01\\\\230.2734\\\\275.0279\\\\301.01\\\\233.1732\\\\272.2172\\\\301.01\\\\234.9609\\\\270.242\\\\301.01\\\\237.6891\\\\267.5297\\\\301.01\\\\241.9922\\\\263.0863\\\\301.01\\\\244.3359\\\\260.7816\\\\301.01\\\\246.7498\\\\258.1547\\\\301.01\\\\249.0234\\\\255.4868\\\\301.01\\\\250.5381\\\\253.4672\\\\301.01\\\\251.9462\\\\251.1234\\\\301.01\\\\252.6083\\\\248.7797\\\\301.01\\\\253.1286\\\\246.4359\\\\301.01\\\\253.2715\\\\244.0922\\\\301.01\\\\253.323\\\\241.7484\\\\301.01\\\\254.0203\\\\239.4047\\\\301.01\\\\254.2562\\\\237.0609\\\\301.01\\\\253.7109\\\\236.3782\\\\301.01\\\\252.7413\\\\234.7172\\\\301.01\\\\251.3672\\\\233.1433\\\\301.01\\\\249.0234\\\\232.7162\\\\301.01\\\\246.6797\\\\232.5994\\\\301.01\\\\244.3359\\\\232.6145\\\\301.01\\\\241.9922\\\\232.8788\\\\301.01\\\\239.6484\\\\232.9594\\\\301.01\\\\232.6172\\\\232.9487\\\\301.01\\\\223.2422\\\\233.0498\\\\301.01\\\\211.5234\\\\233.0726\\\\301.01\\\\206.8359\\\\233.0007\\\\301.01\\\\204.4922\\\\232.7186\\\\301.01\\\\202.1484\\\\232.7048\\\\301.01\\\\195.1172\\\\232.7719\\\\301.01\\\\192.7734\\\\232.7456\\\\301.01\\\\183.3984\\\\232.7588\\\\301.01\\\\174.0234\\\\232.7322\\\\301.01\\\\164.6484\\\\232.7322\\\\301.01\\\\152.9297\\\\232.8003\\\\301.01\\\\145.8984\\\\232.7875\\\\301.01\\\\141.2109\\\\232.6908\\\\301.01\\\\134.1797\\\\232.6329\\\\301.01\\\\127.1484\\\\232.6329\\\\301.01\\\\124.8047\\\\232.5873\\\\301.01\\\\122.4609\\\\232.0753\\\\301.01\\\\120.1172\\\\232.6027\\\\301.01\\\\113.0859\\\\232.5873\\\\301.01\\\\110.7422\\\\231.8582\\\\301.01\\\\106.0547\\\\231.5762\\\\301.01\\\\103.7109\\\\231.6158\\\\301.01\\\\102.652\\\\232.3734\\\\301.01\\\\101.3672\\\\233.0044\\\\301.01\\\\99.02344\\\\233.091\\\\301.01\\\\89.64844\\\\233.0819\\\\301.01\\\\84.96094\\\\233.1132\\\\301.01\\\\66.21094\\\\233.1132\\\\301.01\\\\61.52344\\\\233.131\\\\301.01\\\\47.46094\\\\233.1132\\\\301.01\\\\45.11719\\\\233.0671\\\\301.01\\\\44.1887\\\\232.3734\\\\301.01\\\\42.77344\\\\231.0305\\\\301.01\\\\42.03629\\\\230.0297\\\\301.01\\\\42.77344\\\\229.2325\\\\301.01\\\\45.11719\\\\228.5376\\\\301.01\\\\47.46094\\\\227.0364\\\\301.01\\\\49.80469\\\\226.0128\\\\301.01\\\\52.14844\\\\224.5587\\\\301.01\\\\54.49219\\\\223.6608\\\\301.01\\\\56.83594\\\\221.833\\\\301.01\\\\59.17969\\\\220.1609\\\\301.01\\\\61.52344\\\\218.8188\\\\301.01\\\\64.90625\\\\215.9672\\\\301.01\\\\66.21094\\\\214.9687\\\\301.01\\\\67.67578\\\\213.6234\\\\301.01\\\\68.55469\\\\212.6704\\\\301.01\\\\70.89844\\\\210.4727\\\\301.01\\\\74.47953\\\\206.5922\\\\301.01\\\\76.50275\\\\204.2484\\\\301.01\\\\78.21651\\\\201.9047\\\\301.01\\\\80.27344\\\\198.8597\\\\301.01\\\\82.61719\\\\195.1853\\\\301.01\\\\82.89342\\\\194.8734\\\\301.01\\\\84.96094\\\\190.8408\\\\301.01\\\\85.38912\\\\190.1859\\\\301.01\\\\86.29591\\\\187.8422\\\\301.01\\\\87.73726\\\\185.4984\\\\301.01\\\\88.56714\\\\183.1547\\\\301.01\\\\89.0239\\\\180.8109\\\\301.01\\\\90.08218\\\\178.4672\\\\301.01\\\\90.826\\\\176.1234\\\\301.01\\\\91.33673\\\\173.7797\\\\301.01\\\\92.27242\\\\171.4359\\\\301.01\\\\92.92352\\\\169.0922\\\\301.01\\\\93.52101\\\\159.7172\\\\301.01\\\\93.68569\\\\155.0297\\\\301.01\\\\93.66122\\\\150.3422\\\\301.01\\\\93.03977\\\\140.9672\\\\301.01\\\\92.73054\\\\138.6234\\\\301.01\\\\91.17617\\\\133.9359\\\\301.01\\\\90.61806\\\\131.5922\\\\301.01\\\\89.82677\\\\129.2484\\\\301.01\\\\88.83517\\\\126.9047\\\\301.01\\\\88.39883\\\\124.5609\\\\301.01\\\\87.14217\\\\122.2172\\\\301.01\\\\83.83617\\\\115.1859\\\\301.01\\\\82.61719\\\\113.3482\\\\301.01\\\\82.16586\\\\112.8422\\\\301.01\\\\81.0612\\\\110.4984\\\\301.01\\\\77.92969\\\\106.4629\\\\301.01\\\\77.33624\\\\105.8109\\\\301.01\\\\75.88316\\\\103.4672\\\\301.01\\\\71.66676\\\\98.77969\\\\301.01\\\\68.55469\\\\95.70351\\\\301.01\\\\63.86719\\\\91.59751\\\\301.01\\\\61.52344\\\\90.16005\\\\301.01\\\\59.17969\\\\88.18321\\\\301.01\\\\56.83594\\\\86.57265\\\\301.01\\\\54.49219\\\\85.45554\\\\301.01\\\\52.14844\\\\83.67484\\\\301.01\\\\49.80469\\\\82.92365\\\\301.01\\\\47.46094\\\\81.52637\\\\301.01\\\\45.11719\\\\80.65604\\\\301.01\\\\42.77344\\\\79.19824\\\\301.01\\\\40.42969\\\\78.73884\\\\301.01\\\\38.08594\\\\78.15919\\\\301.01\\\\35.74219\\\\77.15002\\\\301.01\\\\33.39844\\\\76.53034\\\\301.01\\\\31.05469\\\\76.09643\\\\301.01\\\\26.36719\\\\74.69731\\\\301.01\\\\24.02344\\\\74.428\\\\301.01\\\\16.99219\\\\74.14042\\\\301.01\\\\12.30469\\\\74.06655\\\\301.01\\\\7.617188\\\\74.18246\\\\301.01\\\\2.929688\\\\74.39614\\\\301.01\\\\0.5859375\\\\74.67952\\\\301.01\\\\-4.101563\\\\76.04402\\\\301.01\\\\-6.445313\\\\76.46788\\\\301.01\\\\-8.789063\\\\77.11446\\\\301.01\\\\-11.13281\\\\78.1283\\\\301.01\\\\-15.82031\\\\79.30067\\\\301.01\\\\-18.16406\\\\80.75135\\\\301.01\\\\-20.50781\\\\81.63853\\\\301.01\\\\-22.85156\\\\82.99707\\\\301.01\\\\-25.19531\\\\83.76582\\\\301.01\\\\-27.53906\\\\85.60597\\\\301.01\\\\-29.88281\\\\86.70937\\\\301.01\\\\-32.22656\\\\88.32835\\\\301.01\\\\-34.57031\\\\90.28696\\\\301.01\\\\-36.60469\\\\91.74844\\\\301.01\\\\-41.60156\\\\95.87829\\\\301.01\\\\-46.64644\\\\101.1234\\\\301.01\\\\-50.23326\\\\105.8109\\\\301.01\\\\-52.14844\\\\108.1547\\\\301.01\\\\-53.7083\\\\110.4984\\\\301.01\\\\-54.99341\\\\112.8422\\\\301.01\\\\-56.69257\\\\115.1859\\\\301.01\\\\-57.50126\\\\117.5297\\\\301.01\\\\-58.9611\\\\119.8734\\\\301.01\\\\-59.86389\\\\122.2172\\\\301.01\\\\-61.15642\\\\124.5609\\\\301.01\\\\-61.63161\\\\126.9047\\\\301.01\\\\-62.48454\\\\129.2484\\\\301.01\\\\-63.52435\\\\131.5922\\\\301.01\\\\-64.05602\\\\133.9359\\\\301.01\\\\-64.42265\\\\136.2797\\\\301.01\\\\-65.18555\\\\138.6234\\\\301.01\\\\-65.68493\\\\140.9672\\\\301.01\\\\-66.26755\\\\147.9984\\\\301.01\\\\-66.50095\\\\152.6859\\\\301.01\\\\-66.53545\\\\155.0297\\\\301.01\\\\-66.39441\\\\159.7172\\\\301.01\\\\-66.05307\\\\164.4047\\\\301.01\\\\-65.51514\\\\169.0922\\\\301.01\\\\-64.74208\\\\171.4359\\\\301.01\\\\-64.20454\\\\173.7797\\\\301.01\\\\-63.7793\\\\176.1234\\\\301.01\\\\-62.91559\\\\178.4672\\\\301.01\\\\-61.86849\\\\180.8109\\\\301.01\\\\-61.33743\\\\183.1547\\\\301.01\\\\-60.35156\\\\185.6212\\\\301.01\\\\-57.99851\\\\190.1859\\\\301.01\\\\-56.86614\\\\192.5297\\\\301.01\\\\-55.66406\\\\194.816\\\\301.01\\\\-54.17318\\\\197.2172\\\\301.01\\\\-52.51101\\\\199.5609\\\\301.01\\\\-50.98609\\\\201.9047\\\\301.01\\\\-47.40362\\\\206.5922\\\\301.01\\\\-45.07058\\\\208.9359\\\\301.01\\\\-42.88062\\\\211.2797\\\\301.01\\\\-39.25781\\\\214.7825\\\\301.01\\\\-34.57031\\\\218.5488\\\\301.01\\\\-32.22656\\\\219.9976\\\\301.01\\\\-28.02734\\\\222.9984\\\\301.01\\\\-27.53906\\\\223.4429\\\\301.01\\\\-25.19531\\\\224.4472\\\\301.01\\\\-22.85156\\\\225.8554\\\\301.01\\\\-20.50781\\\\226.9317\\\\301.01\\\\-18.16406\\\\228.4426\\\\301.01\\\\-15.82031\\\\229.1456\\\\301.01\\\\-14.96138\\\\230.0297\\\\301.01\\\\-15.82031\\\\231.3675\\\\301.01\\\\-16.95703\\\\232.3734\\\\301.01\\\\-18.16406\\\\233.0671\\\\301.01\\\\-20.50781\\\\233.0537\\\\301.01\\\\-27.53906\\\\233.1221\\\\301.01\\\\-29.88281\\\\233.1042\\\\301.01\\\\-39.25781\\\\233.1397\\\\301.01\\\\-46.28906\\\\233.1221\\\\301.01\\\\-48.63281\\\\233.1652\\\\301.01\\\\-60.35156\\\\233.1818\\\\301.01\\\\-62.69531\\\\233.1483\\\\301.01\\\\-65.03906\\\\232.8735\\\\301.01\\\\-67.38281\\\\232.8735\\\\301.01\\\\-69.72656\\\\232.9839\\\\301.01\\\\-79.10156\\\\232.9942\\\\301.01\\\\-83.78906\\\\233.0537\\\\301.01\\\\-86.13281\\\\233.0283\\\\301.01\\\\-107.2266\\\\233.1132\\\\301.01\\\\-109.5703\\\\233.6324\\\\301.01\\\\-111.9141\\\\233.2523\\\\301.01\\\\-114.2578\\\\233.855\\\\301.01\\\\-118.9453\\\\233.9675\\\\301.01\\\\-123.6328\\\\234.0359\\\\301.01\\\\-128.3203\\\\234.054\\\\301.01\\\\-130.6641\\\\233.9859\\\\301.01\\\\-133.0078\\\\234.0284\\\\301.01\\\\-137.6953\\\\234.0158\\\\301.01\\\\-142.3828\\\\234.0805\\\\301.01\\\\-149.4141\\\\234.0088\\\\301.01\\\\-154.1016\\\\234.054\\\\301.01\\\\-165.8203\\\\233.9784\\\\301.01\\\\-168.1641\\\\234.1138\\\\301.01\\\\-172.8516\\\\234.1797\\\\301.01\\\\-179.8828\\\\234.1797\\\\301.01\\\\-184.5703\\\\234.2539\\\\301.01\\\\-198.6328\\\\234.1652\\\\301.01\\\\-200.9766\\\\234.2187\\\\301.01\\\\-205.6641\\\\234.1147\\\\301.01\\\\-208.0078\\\\234.1692\\\\301.01\\\\-217.3828\\\\234.2088\\\\301.01\\\\-222.0703\\\\234.2967\\\\301.01\\\\-224.4141\\\\234.2088\\\\301.01\\\\-229.1016\\\\234.2088\\\\301.01\\\\-238.4766\\\\234.0063\\\\301.01\\\\-243.1641\\\\233.9589\\\\301.01\\\\-245.5078\\\\233.8656\\\\301.01\\\\-247.8516\\\\233.8749\\\\301.01\\\\-250.1953\\\\233.9791\\\\301.01\\\\-252.5391\\\\234.4847\\\\301.01\\\\-254.8828\\\\236.4281\\\\301.01\\\\-255.4874\\\\237.0609\\\\301.01\\\\-256.2803\\\\239.4047\\\\301.01\\\\-255.8475\\\\241.7484\\\\301.01\\\\-255.5735\\\\244.0922\\\\301.01\\\\-255.6104\\\\246.4359\\\\301.01\\\\-255.4959\\\\248.7797\\\\301.01\\\\-254.8828\\\\250.669\\\\301.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848890601900001.533619501923\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"361\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"10\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n";
+const char* k_rtStruct_json03 =
+"                        \"Value\" : \"-258.4268\\\\239.4047\\\\304.01\\\\-257.2636\\\\244.0922\\\\304.01\\\\-257.1989\\\\246.4359\\\\304.01\\\\-256.6301\\\\248.7797\\\\304.01\\\\-256.215\\\\251.1234\\\\304.01\\\\-254.8828\\\\253.3128\\\\304.01\\\\-253.1956\\\\255.8109\\\\304.01\\\\-252.5391\\\\256.5626\\\\304.01\\\\-250.1953\\\\258.8727\\\\304.01\\\\-247.8516\\\\261.3969\\\\304.01\\\\-245.5078\\\\263.5693\\\\304.01\\\\-244.0789\\\\265.1859\\\\304.01\\\\-241.5988\\\\267.5297\\\\304.01\\\\-239.4249\\\\269.8734\\\\304.01\\\\-233.7891\\\\275.3867\\\\304.01\\\\-231.4453\\\\277.8311\\\\304.01\\\\-229.1016\\\\280.0036\\\\304.01\\\\-226.7578\\\\282.5281\\\\304.01\\\\-224.4141\\\\284.6849\\\\304.01\\\\-222.0703\\\\287.2221\\\\304.01\\\\-220.5406\\\\288.6234\\\\304.01\\\\-218.2914\\\\290.9672\\\\304.01\\\\-217.3828\\\\291.6599\\\\304.01\\\\-214.8704\\\\293.3109\\\\304.01\\\\-212.6953\\\\294.634\\\\304.01\\\\-210.3516\\\\295.3279\\\\304.01\\\\-208.0078\\\\296.4424\\\\304.01\\\\-205.6641\\\\296.8732\\\\304.01\\\\-203.3203\\\\297.1639\\\\304.01\\\\-196.2891\\\\297.1639\\\\304.01\\\\-189.2578\\\\297.0197\\\\304.01\\\\-184.5703\\\\297.0141\\\\304.01\\\\-177.5391\\\\296.8785\\\\304.01\\\\-161.1328\\\\296.851\\\\304.01\\\\-149.4141\\\\296.8598\\\\304.01\\\\-128.3203\\\\296.895\\\\304.01\\\\-118.9453\\\\296.8887\\\\304.01\\\\-114.2578\\\\296.8266\\\\304.01\\\\-107.2266\\\\296.817\\\\304.01\\\\-104.8828\\\\296.8459\\\\304.01\\\\-97.85156\\\\296.8456\\\\304.01\\\\-93.16406\\\\296.9116\\\\304.01\\\\-90.82031\\\\296.8828\\\\304.01\\\\-81.44531\\\\296.9305\\\\304.01\\\\-79.10156\\\\296.9116\\\\304.01\\\\-72.07031\\\\296.979\\\\304.01\\\\-69.72656\\\\296.96\\\\304.01\\\\-58.00781\\\\296.9557\\\\304.01\\\\-53.32031\\\\297.4055\\\\304.01\\\\-50.97656\\\\297.1979\\\\304.01\\\\-48.63281\\\\297.1858\\\\304.01\\\\-46.28906\\\\297.4229\\\\304.01\\\\-41.60156\\\\297.3806\\\\304.01\\\\-39.25781\\\\297.0362\\\\304.01\\\\-36.91406\\\\297.4125\\\\304.01\\\\-34.57031\\\\297.4229\\\\304.01\\\\-32.22656\\\\297.1747\\\\304.01\\\\-29.88281\\\\297.4334\\\\304.01\\\\-25.19531\\\\297.4125\\\\304.01\\\\-18.16406\\\\297.4334\\\\304.01\\\\-8.789063\\\\297.4195\\\\304.01\\\\-6.445313\\\\297.3383\\\\304.01\\\\-4.101563\\\\297.4125\\\\304.01\\\\0.5859375\\\\297.4195\\\\304.01\\\\2.929688\\\\297.0439\\\\304.01\\\\5.273438\\\\297.273\\\\304.01\\\\7.617188\\\\296.9841\\\\304.01\\\\12.30469\\\\296.8673\\\\304.01\\\\26.36719\\\\296.8574\\\\304.01\\\\35.74219\\\\296.8163\\\\304.01\\\\38.08594\\\\296.7654\\\\304.01\\\\45.11719\\\\296.7761\\\\304.01\\\\52.14844\\\\296.6929\\\\304.01\\\\54.49219\\\\296.7115\\\\304.01\\\\61.52344\\\\296.6724\\\\304.01\\\\63.86719\\\\296.6241\\\\304.01\\\\91.99219\\\\296.4947\\\\304.01\\\\94.33594\\\\296.5412\\\\304.01\\\\103.7109\\\\296.466\\\\304.01\\\\106.0547\\\\296.4801\\\\304.01\\\\115.4297\\\\296.391\\\\304.01\\\\117.7734\\\\296.4051\\\\304.01\\\\124.8047\\\\296.3288\\\\304.01\\\\131.8359\\\\296.2987\\\\304.01\\\\134.1797\\\\295.9161\\\\304.01\\\\136.5234\\\\295.8172\\\\304.01\\\\143.5547\\\\295.8791\\\\304.01\\\\148.2422\\\\295.8791\\\\304.01\\\\155.2734\\\\295.7849\\\\304.01\\\\159.9609\\\\295.7684\\\\304.01\\\\169.3359\\\\295.6454\\\\304.01\\\\171.6797\\\\295.6819\\\\304.01\\\\178.7109\\\\295.6454\\\\304.01\\\\181.0547\\\\295.5742\\\\304.01\\\\185.7422\\\\295.5916\\\\304.01\\\\192.7734\\\\295.557\\\\304.01\\\\197.4609\\\\295.8172\\\\304.01\\\\202.1484\\\\295.6819\\\\304.01\\\\204.4922\\\\295.3842\\\\304.01\\\\206.8359\\\\294.8185\\\\304.01\\\\209.1797\\\\294.3828\\\\304.01\\\\211.5234\\\\292.4841\\\\304.01\\\\213.8672\\\\291.1765\\\\304.01\\\\216.2109\\\\289.5873\\\\304.01\\\\217.229\\\\288.6234\\\\304.01\\\\218.5547\\\\287.0752\\\\304.01\\\\221.7204\\\\283.9359\\\\304.01\\\\225.5859\\\\279.9071\\\\304.01\\\\227.9297\\\\277.5303\\\\304.01\\\\230.2734\\\\275.0172\\\\304.01\\\\233.1467\\\\272.2172\\\\304.01\\\\234.9609\\\\270.242\\\\304.01\\\\237.7046\\\\267.5297\\\\304.01\\\\239.6484\\\\265.4887\\\\304.01\\\\244.3359\\\\260.7987\\\\304.01\\\\249.0234\\\\255.6807\\\\304.01\\\\251.3672\\\\252.8391\\\\304.01\\\\252.5586\\\\251.1234\\\\304.01\\\\254.0274\\\\248.7797\\\\304.01\\\\254.9669\\\\246.4359\\\\304.01\\\\255.696\\\\241.7484\\\\304.01\\\\255.9729\\\\239.4047\\\\304.01\\\\255.8408\\\\237.0609\\\\304.01\\\\254.6498\\\\234.7172\\\\304.01\\\\253.7109\\\\233.7838\\\\304.01\\\\251.3672\\\\232.8072\\\\304.01\\\\249.0234\\\\232.5688\\\\304.01\\\\246.6797\\\\232.4189\\\\304.01\\\\244.3359\\\\232.4365\\\\304.01\\\\241.9922\\\\232.8195\\\\304.01\\\\239.6484\\\\232.9699\\\\304.01\\\\234.9609\\\\232.9906\\\\304.01\\\\230.2734\\\\232.9594\\\\304.01\\\\225.5859\\\\233.0305\\\\304.01\\\\211.5234\\\\233.0632\\\\304.01\\\\206.8359\\\\232.9906\\\\304.01\\\\204.4922\\\\232.7048\\\\304.01\\\\199.8047\\\\232.6908\\\\304.01\\\\195.1172\\\\232.7456\\\\304.01\\\\190.4297\\\\232.7186\\\\304.01\\\\183.3984\\\\232.7588\\\\304.01\\\\174.0234\\\\232.7322\\\\304.01\\\\164.6484\\\\232.7322\\\\304.01\\\\157.6172\\\\232.7848\\\\304.01\\\\143.5547\\\\232.7746\\\\304.01\\\\138.8672\\\\232.6477\\\\304.01\\\\131.8359\\\\232.6623\\\\304.01\\\\127.1484\\\\232.6179\\\\304.01\\\\124.8047\\\\232.2817\\\\304.01\\\\122.4609\\\\231.7518\\\\304.01\\\\120.1172\\\\232.5557\\\\304.01\\\\113.0859\\\\232.5396\\\\304.01\\\\110.7422\\\\232.0028\\\\304.01\\\\108.3984\\\\231.6882\\\\304.01\\\\106.0547\\\\231.5762\\\\304.01\\\\103.7109\\\\231.6396\\\\304.01\\\\102.8085\\\\232.3734\\\\304.01\\\\101.3672\\\\233.0819\\\\304.01\\\\99.02344\\\\233.1221\\\\304.01\\\\91.99219\\\\233.091\\\\304.01\\\\84.96094\\\\233.131\\\\304.01\\\\80.27344\\\\233.1132\\\\304.01\\\\70.89844\\\\233.1483\\\\304.01\\\\59.17969\\\\233.1221\\\\304.01\\\\54.49219\\\\233.1483\\\\304.01\\\\47.46094\\\\233.1397\\\\304.01\\\\45.11719\\\\233.0951\\\\304.01\\\\44.15678\\\\232.3734\\\\304.01\\\\42.77344\\\\231.0402\\\\304.01\\\\42.0277\\\\230.0297\\\\304.01\\\\42.77344\\\\229.2236\\\\304.01\\\\45.11719\\\\228.5376\\\\304.01\\\\47.46094\\\\227.0172\\\\304.01\\\\49.80469\\\\226.0045\\\\304.01\\\\52.14844\\\\224.5497\\\\304.01\\\\54.49219\\\\223.6396\\\\304.01\\\\56.83594\\\\221.8073\\\\304.01\\\\59.17969\\\\220.1493\\\\304.01\\\\61.52344\\\\218.7845\\\\304.01\\\\64.88177\\\\215.9672\\\\304.01\\\\66.21094\\\\214.941\\\\304.01\\\\68.55469\\\\212.6457\\\\304.01\\\\70.89844\\\\210.4545\\\\304.01\\\\74.44025\\\\206.5922\\\\304.01\\\\76.45425\\\\204.2484\\\\304.01\\\\78.18552\\\\201.9047\\\\304.01\\\\80.27344\\\\198.8021\\\\304.01\\\\82.61719\\\\195.0944\\\\304.01\\\\82.81684\\\\194.8734\\\\304.01\\\\85.33871\\\\190.1859\\\\304.01\\\\86.25837\\\\187.8422\\\\304.01\\\\87.69531\\\\185.4984\\\\304.01\\\\88.53373\\\\183.1547\\\\304.01\\\\88.98369\\\\180.8109\\\\304.01\\\\90.01319\\\\178.4672\\\\304.01\\\\90.75238\\\\176.1234\\\\304.01\\\\91.26373\\\\173.7797\\\\304.01\\\\92.16087\\\\171.4359\\\\304.01\\\\92.84856\\\\169.0922\\\\304.01\\\\93.08162\\\\166.7484\\\\304.01\\\\93.46188\\\\159.7172\\\\304.01\\\\93.63705\\\\157.3734\\\\304.01\\\\93.71725\\\\155.0297\\\\304.01\\\\94.1173\\\\152.6859\\\\304.01\\\\95.2567\\\\150.3422\\\\304.01\\\\94.33594\\\\149.3719\\\\304.01\\\\93.55707\\\\147.9984\\\\304.01\\\\93.31775\\\\145.6547\\\\304.01\\\\93.0161\\\\140.9672\\\\304.01\\\\92.68435\\\\138.6234\\\\304.01\\\\91.79828\\\\136.2797\\\\304.01\\\\91.12964\\\\133.9359\\\\304.01\\\\90.57047\\\\131.5922\\\\304.01\\\\89.74536\\\\129.2484\\\\304.01\\\\88.82685\\\\126.9047\\\\304.01\\\\88.37492\\\\124.5609\\\\304.01\\\\87.09542\\\\122.2172\\\\304.01\\\\83.81286\\\\115.1859\\\\304.01\\\\82.08039\\\\112.8422\\\\304.01\\\\81.03055\\\\110.4984\\\\304.01\\\\77.92969\\\\106.5352\\\\304.01\\\\77.27783\\\\105.8109\\\\304.01\\\\75.79013\\\\103.4672\\\\304.01\\\\71.63571\\\\98.77969\\\\304.01\\\\68.55469\\\\95.73435\\\\304.01\\\\63.86719\\\\91.66604\\\\304.01\\\\61.52344\\\\90.20212\\\\304.01\\\\59.17969\\\\88.20197\\\\304.01\\\\56.83594\\\\86.62436\\\\304.01\\\\54.49219\\\\85.48727\\\\304.01\\\\52.14844\\\\83.70115\\\\304.01\\\\49.80469\\\\82.94526\\\\304.01\\\\47.46094\\\\81.53912\\\\304.01\\\\45.11719\\\\80.67555\\\\304.01\\\\42.77344\\\\79.20674\\\\304.01\\\\38.08594\\\\78.20923\\\\304.01\\\\35.74219\\\\77.17549\\\\304.01\\\\33.39844\\\\76.53049\\\\304.01\\\\31.05469\\\\76.11316\\\\304.01\\\\26.36719\\\\74.72801\\\\304.01\\\\24.02344\\\\74.428\\\\304.01\\\\16.99219\\\\74.14042\\\\304.01\\\\12.30469\\\\74.08618\\\\304.01\\\\7.617188\\\\74.18843\\\\304.01\\\\2.929688\\\\74.3889\\\\304.01\\\\0.5859375\\\\74.66957\\\\304.01\\\\-4.101563\\\\76.00713\\\\304.01\\\\-6.445313\\\\76.45148\\\\304.01\\\\-8.789063\\\\77.1\\\\304.01\\\\-11.13281\\\\78.06062\\\\304.01\\\\-15.82031\\\\79.2827\\\\304.01\\\\-18.16406\\\\80.74213\\\\304.01\\\\-20.50781\\\\81.62949\\\\304.01\\\\-22.85156\\\\82.96635\\\\304.01\\\\-25.19531\\\\83.75838\\\\304.01\\\\-27.53906\\\\85.57612\\\\304.01\\\\-29.88281\\\\86.67031\\\\304.01\\\\-32.22656\\\\88.3215\\\\304.01\\\\-34.57031\\\\90.27851\\\\304.01\\\\-36.65471\\\\91.74844\\\\304.01\\\\-39.25781\\\\93.84944\\\\304.01\\\\-41.60156\\\\95.82625\\\\304.01\\\\-46.73052\\\\101.1234\\\\304.01\\\\-50.25593\\\\105.8109\\\\304.01\\\\-52.17377\\\\108.1547\\\\304.01\\\\-53.74715\\\\110.4984\\\\304.01\\\\-55.05993\\\\112.8422\\\\304.01\\\\-56.70641\\\\115.1859\\\\304.01\\\\-57.55294\\\\117.5297\\\\304.01\\\\-59.00451\\\\119.8734\\\\304.01\\\\-59.93574\\\\122.2172\\\\304.01\\\\-61.16483\\\\124.5609\\\\304.01\\\\-61.67763\\\\126.9047\\\\304.01\\\\-62.54883\\\\129.2484\\\\304.01\\\\-63.58032\\\\131.5922\\\\304.01\\\\-64.08025\\\\133.9359\\\\304.01\\\\-64.47405\\\\136.2797\\\\304.01\\\\-65.29311\\\\138.6234\\\\304.01\\\\-65.704\\\\140.9672\\\\304.01\\\\-66.11191\\\\145.6547\\\\304.01\\\\-66.44185\\\\150.3422\\\\304.01\\\\-66.55173\\\\155.0297\\\\304.01\\\\-66.54406\\\\157.3734\\\\304.01\\\\-66.41875\\\\159.7172\\\\304.01\\\\-66.08267\\\\164.4047\\\\304.01\\\\-65.54951\\\\169.0922\\\\304.01\\\\-64.81466\\\\171.4359\\\\304.01\\\\-64.22777\\\\173.7797\\\\304.01\\\\-63.82658\\\\176.1234\\\\304.01\\\\-63.00951\\\\178.4672\\\\304.01\\\\-61.88151\\\\180.8109\\\\304.01\\\\-61.35514\\\\183.1547\\\\304.01\\\\-60.35156\\\\185.6658\\\\304.01\\\\-58.00781\\\\190.247\\\\304.01\\\\-55.71056\\\\194.8734\\\\304.01\\\\-54.20731\\\\197.2172\\\\304.01\\\\-52.52815\\\\199.5609\\\\304.01\\\\-51.09558\\\\201.9047\\\\304.01\\\\-48.63281\\\\204.9516\\\\304.01\\\\-47.4356\\\\206.5922\\\\304.01\\\\-45.0904\\\\208.9359\\\\304.01\\\\-42.90285\\\\211.2797\\\\304.01\\\\-39.25781\\\\214.8017\\\\304.01\\\\-34.92887\\\\218.3109\\\\304.01\\\\-34.57031\\\\218.6566\\\\304.01\\\\-32.22656\\\\220.0173\\\\304.01\\\\-31.40713\\\\220.6547\\\\304.01\\\\-28.07253\\\\222.9984\\\\304.01\\\\-27.53906\\\\223.4814\\\\304.01\\\\-25.19531\\\\224.4633\\\\304.01\\\\-22.85156\\\\225.8906\\\\304.01\\\\-20.50781\\\\226.9488\\\\304.01\\\\-18.16406\\\\228.4606\\\\304.01\\\\-15.82031\\\\229.1542\\\\304.01\\\\-14.96987\\\\230.0297\\\\304.01\\\\-15.82031\\\\231.3705\\\\304.01\\\\-16.94484\\\\232.3734\\\\304.01\\\\-18.16406\\\\233.0671\\\\304.01\\\\-25.19531\\\\233.091\\\\304.01\\\\-27.53906\\\\233.131\\\\304.01\\\\-43.94531\\\\233.1397\\\\304.01\\\\-46.28906\\\\233.1221\\\\304.01\\\\-55.66406\\\\233.19\\\\304.01\\\\-62.69531\\\\233.1652\\\\304.01\\\\-65.03906\\\\232.8767\\\\304.01\\\\-67.38281\\\\232.8735\\\\304.01\\\\-72.07031\\\\233.0044\\\\304.01\\\\-79.10156\\\\232.9735\\\\304.01\\\\-83.78906\\\\233.0441\\\\304.01\\\\-102.5391\\\\233.0951\\\\304.01\\\\-104.8828\\\\233.1525\\\\304.01\\\\-107.2266\\\\233.3238\\\\304.01\\\\-109.5703\\\\234.0489\\\\304.01\\\\-116.6016\\\\233.9967\\\\304.01\\\\-123.6328\\\\234.0805\\\\304.01\\\\-128.3203\\\\234.0855\\\\304.01\\\\-130.6641\\\\234.0088\\\\304.01\\\\-135.3516\\\\234.0722\\\\304.01\\\\-137.6953\\\\234.0591\\\\304.01\\\\-142.3828\\\\234.1266\\\\304.01\\\\-149.4141\\\\234.0722\\\\304.01\\\\-158.7891\\\\234.0772\\\\304.01\\\\-165.8203\\\\233.9901\\\\304.01\\\\-168.1641\\\\234.1182\\\\304.01\\\\-172.8516\\\\234.1837\\\\304.01\\\\-177.5391\\\\234.1837\\\\304.01\\\\-184.5703\\\\234.2574\\\\304.01\\\\-193.9453\\\\234.1916\\\\304.01\\\\-200.9766\\\\234.2224\\\\304.01\\\\-205.6641\\\\234.1652\\\\304.01\\\\-212.6953\\\\234.2362\\\\304.01\\\\-217.3828\\\\234.2502\\\\304.01\\\\-222.0703\\\\234.3418\\\\304.01\\\\-233.7891\\\\234.1026\\\\304.01\\\\-238.4766\\\\234.0555\\\\304.01\\\\-243.1641\\\\234.0626\\\\304.01\\\\-245.5078\\\\233.9906\\\\304.01\\\\-247.8516\\\\234.0236\\\\304.01\\\\-252.5391\\\\234.2887\\\\304.01\\\\-254.8828\\\\235.3755\\\\304.01\\\\-256.6911\\\\237.0609\\\\304.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848911603100001.549938975401\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"361\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"11\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-18.16406\\\\233.0859\\\\307.01\\\\-27.53906\\\\233.1221\\\\307.01\\\\-46.28906\\\\233.131\\\\307.01\\\\-58.00781\\\\233.19\\\\307.01\\\\-62.69531\\\\233.1736\\\\307.01\\\\-65.03906\\\\232.5396\\\\307.01\\\\-67.38281\\\\232.8735\\\\307.01\\\\-72.07031\\\\233.0145\\\\307.01\\\\-79.10156\\\\232.9839\\\\307.01\\\\-83.78906\\\\233.0441\\\\307.01\\\\-95.50781\\\\233.0859\\\\307.01\\\\-97.85156\\\\233.1345\\\\307.01\\\\-100.1953\\\\233.09\\\\307.01\\\\-102.5391\\\\233.2952\\\\307.01\\\\-104.8828\\\\234.0051\\\\307.01\\\\-107.2266\\\\233.8864\\\\307.01\\\\-109.5703\\\\234.0891\\\\307.01\\\\-116.6016\\\\233.9967\\\\307.01\\\\-123.6328\\\\234.0941\\\\307.01\\\\-128.3203\\\\234.1127\\\\307.01\\\\-130.6641\\\\234.0463\\\\307.01\\\\-133.0078\\\\234.099\\\\307.01\\\\-140.0391\\\\234.099\\\\307.01\\\\-142.3828\\\\234.1453\\\\307.01\\\\-149.4141\\\\234.099\\\\307.01\\\\-151.7578\\\\234.1313\\\\307.01\\\\-165.8203\\\\233.9901\\\\307.01\\\\-168.1641\\\\234.1182\\\\307.01\\\\-172.8516\\\\234.1973\\\\307.01\\\\-175.1953\\\\234.1934\\\\307.01\\\\-186.9141\\\\234.302\\\\307.01\\\\-189.2578\\\\234.2431\\\\307.01\\\\-191.6016\\\\234.2721\\\\307.01\\\\-198.6328\\\\234.2187\\\\307.01\\\\-200.9766\\\\234.2326\\\\307.01\\\\-205.6641\\\\234.1523\\\\307.01\\\\-208.0078\\\\234.2088\\\\307.01\\\\-217.3828\\\\234.2644\\\\307.01\\\\-222.0703\\\\234.3731\\\\307.01\\\\-226.7578\\\\234.3084\\\\307.01\\\\-233.7891\\\\234.1271\\\\307.01\\\\-243.1641\\\\234.1783\\\\307.01\\\\-247.8516\\\\233.9385\\\\307.01\\\\-252.5391\\\\234.1396\\\\307.01\\\\-254.8828\\\\234.6465\\\\307.01\\\\-257.2266\\\\235.5375\\\\307.01\\\\-259.5389\\\\237.0609\\\\307.01\\\\-261.1549\\\\239.4047\\\\307.01\\\\-261.1453\\\\241.7484\\\\307.01\\\\-260.4097\\\\244.0922\\\\307.01\\\\-258.4325\\\\248.7797\\\\307.01\\\\-257.2266\\\\250.7551\\\\307.01\\\\-255.4608\\\\253.4672\\\\307.01\\\\-252.5391\\\\256.6329\\\\307.01\\\\-250.1953\\\\258.8892\\\\307.01\\\\-247.8516\\\\261.4029\\\\307.01\\\\-245.5078\\\\263.58\\\\307.01\\\\-244.0815\\\\265.1859\\\\307.01\\\\-241.6044\\\\267.5297\\\\307.01\\\\-239.4249\\\\269.8734\\\\307.01\\\\-236.9699\\\\272.2172\\\\307.01\\\\-233.7891\\\\275.3877\\\\307.01\\\\-231.4453\\\\277.8249\\\\307.01\\\\-229.1016\\\\280.0036\\\\307.01\\\\-226.7578\\\\282.5186\\\\307.01\\\\-225.1687\\\\283.9359\\\\307.01\\\\-222.0703\\\\287.2188\\\\307.01\\\\-220.5469\\\\288.6234\\\\307.01\\\\-218.3018\\\\290.9672\\\\307.01\\\\-217.3828\\\\291.669\\\\307.01\\\\-212.6953\\\\294.6293\\\\307.01\\\\-210.3516\\\\295.3142\\\\307.01\\\\-208.0078\\\\296.4338\\\\307.01\\\\-205.6641\\\\296.8865\\\\307.01\\\\-203.3203\\\\297.1639\\\\307.01\\\\-196.2891\\\\297.1639\\\\307.01\\\\-191.6016\\\\297.0361\\\\307.01\\\\-186.9141\\\\297.0219\\\\307.01\\\\-179.8828\\\\296.9526\\\\307.01\\\\-175.1953\\\\296.8713\\\\307.01\\\\-161.1328\\\\296.8585\\\\307.01\\\\-158.7891\\\\296.8764\\\\307.01\\\\-149.4141\\\\296.8598\\\\307.01\\\\-147.0703\\\\296.8931\\\\307.01\\\\-140.0391\\\\296.8779\\\\307.01\\\\-128.3203\\\\296.9292\\\\307.01\\\\-118.9453\\\\296.9053\\\\307.01\\\\-114.2578\\\\296.845\\\\307.01\\\\-97.85156\\\\296.8459\\\\307.01\\\\-90.82031\\\\296.9116\\\\307.01\\\\-79.10156\\\\296.9116\\\\307.01\\\\-72.07031\\\\296.979\\\\307.01\\\\-69.72656\\\\296.9409\\\\307.01\\\\-65.03906\\\\296.9644\\\\307.01\\\\-58.00781\\\\296.9377\\\\307.01\\\\-55.66406\\\\297.3491\\\\307.01\\\\-53.32031\\\\297.1261\\\\307.01\\\\-50.97656\\\\297.3612\\\\307.01\\\\-48.63281\\\\296.9285\\\\307.01\\\\-46.28906\\\\297.4229\\\\307.01\\\\-41.60156\\\\297.416\\\\307.01\\\\-39.25781\\\\297.3425\\\\307.01\\\\-34.57031\\\\297.4229\\\\307.01\\\\-29.88281\\\\297.2875\\\\307.01\\\\-27.53906\\\\297.3947\\\\307.01\\\\-22.85156\\\\297.3077\\\\307.01\\\\-20.50781\\\\297.4125\\\\307.01\\\\-15.82031\\\\297.3768\\\\307.01\\\\-13.47656\\\\297.4125\\\\307.01\\\\-11.13281\\\\297.2579\\\\307.01\\\\-8.789063\\\\297.4229\\\\307.01\\\\-4.101563\\\\297.4055\\\\307.01\\\\0.5859375\\\\297.3148\\\\307.01\\\\2.929688\\\\296.9267\\\\307.01\\\\5.273438\\\\297.2621\\\\307.01\\\\7.617188\\\\297.257\\\\307.01\\\\9.960938\\\\296.9447\\\\307.01\\\\12.30469\\\\296.868\\\\307.01\\\\24.02344\\\\296.8266\\\\307.01\\\\26.36719\\\\296.878\\\\307.01\\\\33.39844\\\\296.7761\\\\307.01\\\\47.46094\\\\296.7546\\\\307.01\\\\52.14844\\\\296.6839\\\\307.01\\\\61.52344\\\\296.6635\\\\307.01\\\\68.55469\\\\296.6028\\\\307.01\\\\77.92969\\\\296.5859\\\\307.01\\\\80.27344\\\\296.5309\\\\307.01\\\\84.96094\\\\296.5362\\\\307.01\\\\91.99219\\\\296.4947\\\\307.01\\\\96.67969\\\\296.5208\\\\307.01\\\\108.3984\\\\296.4194\\\\307.01\\\\117.7734\\\\296.3986\\\\307.01\\\\120.1172\\\\296.3578\\\\307.01\\\\131.8359\\\\296.2929\\\\307.01\\\\134.1797\\\\295.8184\\\\307.01\\\\138.8672\\\\295.9218\\\\307.01\\\\141.2109\\\\296.2507\\\\307.01\\\\143.5547\\\\295.8486\\\\307.01\\\\150.5859\\\\295.8791\\\\307.01\\\\155.2734\\\\295.8012\\\\307.01\\\\159.9609\\\\295.7684\\\\307.01\\\\169.3359\\\\295.6454\\\\307.01\\\\171.6797\\\\295.7173\\\\307.01\\\\181.0547\\\\295.5742\\\\307.01\\\\183.3984\\\\295.6272\\\\307.01\\\\190.4297\\\\295.557\\\\307.01\\\\192.7734\\\\295.5742\\\\307.01\\\\197.4609\\\\295.8172\\\\307.01\\\\199.8047\\\\295.8012\\\\307.01\\\\202.1484\\\\295.6998\\\\307.01\\\\204.4922\\\\295.3989\\\\307.01\\\\206.8359\\\\294.8185\\\\307.01\\\\209.1797\\\\294.3828\\\\307.01\\\\211.5234\\\\292.4841\\\\307.01\\\\213.8672\\\\291.1765\\\\307.01\\\\216.2109\\\\289.6034\\\\307.01\\\\217.2454\\\\288.6234\\\\307.01\\\\218.5547\\\\287.0864\\\\307.01\\\\221.7204\\\\283.9359\\\\307.01\\\\225.5859\\\\279.8821\\\\307.01\\\\228.5326\\\\276.9047\\\\307.01\\\\230.2734\\\\275.0424\\\\307.01\\\\233.137\\\\272.2172\\\\307.01\\\\234.9609\\\\270.245\\\\307.01\\\\237.6922\\\\267.5297\\\\307.01\\\\246.856\\\\258.1547\\\\307.01\\\\251.3768\\\\253.4672\\\\307.01\\\\253.166\\\\251.1234\\\\307.01\\\\255.1239\\\\248.7797\\\\307.01\\\\256.5218\\\\246.4359\\\\307.01\\\\257.6041\\\\244.0922\\\\307.01\\\\258.817\\\\241.7484\\\\307.01\\\\259.2578\\\\239.4047\\\\307.01\\\\258.9535\\\\237.0609\\\\307.01\\\\256.0547\\\\234.1196\\\\307.01\\\\253.7109\\\\233.131\\\\307.01\\\\251.3672\\\\232.5372\\\\307.01\\\\244.3359\\\\232.7139\\\\307.01\\\\241.9922\\\\232.9015\\\\307.01\\\\239.6484\\\\232.9906\\\\307.01\\\\234.9609\\\\232.9803\\\\307.01\\\\225.5859\\\\233.0305\\\\307.01\\\\211.5234\\\\233.0632\\\\307.01\\\\206.8359\\\\233.0007\\\\307.01\\\\204.4922\\\\232.7186\\\\307.01\\\\199.8047\\\\232.6767\\\\307.01\\\\195.1172\\\\232.7588\\\\307.01\\\\190.4297\\\\232.7186\\\\307.01\\\\183.3984\\\\232.7588\\\\307.01\\\\169.3359\\\\232.7456\\\\307.01\\\\166.9922\\\\232.7186\\\\307.01\\\\157.6172\\\\232.7848\\\\307.01\\\\152.9297\\\\232.7588\\\\307.01\\\\143.5547\\\\232.7875\\\\307.01\\\\138.8672\\\\232.6477\\\\307.01\\\\131.8359\\\\232.6179\\\\307.01\\\\127.1484\\\\232.4192\\\\307.01\\\\124.8047\\\\231.7722\\\\307.01\\\\122.4609\\\\231.7224\\\\307.01\\\\120.1172\\\\231.7625\\\\307.01\\\\117.7734\\\\232.2817\\\\307.01\\\\115.4297\\\\232.5232\\\\307.01\\\\113.0859\\\\232.4546\\\\307.01\\\\110.7422\\\\232.4888\\\\307.01\\\\108.3984\\\\231.7722\\\\307.01\\\\106.0547\\\\231.6215\\\\307.01\\\\103.7109\\\\231.648\\\\307.01\\\\102.8453\\\\232.3734\\\\307.01\\\\101.3672\\\\233.1042\\\\307.01\\\\94.33594\\\\233.0951\\\\307.01\\\\89.64844\\\\233.1221\\\\307.01\\\\77.92969\\\\233.1221\\\\307.01\\\\59.17969\\\\233.1483\\\\307.01\\\\47.46094\\\\233.131\\\\307.01\\\\45.11719\\\\233.0951\\\\307.01\\\\44.1495\\\\232.3734\\\\307.01\\\\42.77344\\\\231.0667\\\\307.01\\\\42.01079\\\\230.0297\\\\307.01\\\\42.77344\\\\229.206\\\\307.01\\\\45.11719\\\\228.5128\\\\307.01\\\\47.46094\\\\226.9947\\\\307.01\\\\49.80469\\\\225.986\\\\307.01\\\\52.14844\\\\224.5319\\\\307.01\\\\54.49219\\\\223.5919\\\\307.01\\\\55.18826\\\\222.9984\\\\307.01\\\\59.17969\\\\220.1266\\\\307.01\\\\61.52344\\\\218.7716\\\\307.01\\\\64.83179\\\\215.9672\\\\307.01\\\\66.21094\\\\214.9167\\\\307.01\\\\70.89844\\\\210.4059\\\\307.01\\\\74.42065\\\\206.5922\\\\307.01\\\\76.41272\\\\204.2484\\\\307.01\\\\78.09221\\\\201.9047\\\\307.01\\\\80.27344\\\\198.7387\\\\307.01\\\\82.73348\\\\194.8734\\\\307.01\\\\84.0608\\\\192.5297\\\\307.01\\\\85.28558\\\\190.1859\\\\307.01\\\\86.21609\\\\187.8422\\\\307.01\\\\87.62429\\\\185.4984\\\\307.01\\\\88.50529\\\\183.1547\\\\307.01\\\\88.94127\\\\180.8109\\\\307.01\\\\89.95934\\\\178.4672\\\\307.01\\\\90.70085\\\\176.1234\\\\307.01\\\\91.22121\\\\173.7797\\\\307.01\\\\92.07523\\\\171.4359\\\\307.01\\\\92.80196\\\\169.0922\\\\307.01\\\\93.06984\\\\166.7484\\\\307.01\\\\93.43011\\\\159.7172\\\\307.01\\\\93.78402\\\\155.0297\\\\307.01\\\\95.35853\\\\152.6859\\\\307.01\\\\97.21561\\\\150.3422\\\\307.01\\\\96.67969\\\\149.7189\\\\307.01\\\\94.33594\\\\148.4892\\\\307.01\\\\93.77909\\\\147.9984\\\\307.01\\\\93.3065\\\\145.6547\\\\307.01\\\\92.98377\\\\140.9672\\\\307.01\\\\92.62429\\\\138.6234\\\\307.01\\\\91.70932\\\\136.2797\\\\307.01\\\\90.52432\\\\131.5922\\\\307.01\\\\88.79446\\\\126.9047\\\\307.01\\\\88.35513\\\\124.5609\\\\307.01\\\\86.99378\\\\122.2172\\\\307.01\\\\85.96972\\\\119.8734\\\\307.01\\\\84.78261\\\\117.5297\\\\307.01\\\\83.77131\\\\115.1859\\\\307.01\\\\82.02393\\\\112.8422\\\\307.01\\\\80.98469\\\\110.4984\\\\307.01\\\\77.92969\\\\106.5841\\\\307.01\\\\77.24248\\\\105.8109\\\\307.01\\\\75.73918\\\\103.4672\\\\307.01\\\\71.58269\\\\98.77969\\\\307.01\\\\68.55469\\\\95.79888\\\\307.01\\\\63.86719\\\\91.72031\\\\307.01\\\\61.52344\\\\90.225\\\\307.01\\\\59.17969\\\\88.22054\\\\307.01\\\\56.83594\\\\86.64962\\\\307.01\\\\54.49219\\\\85.5138\\\\307.01\\\\52.14844\\\\83.72078\\\\307.01\\\\49.80469\\\\82.97671\\\\307.01\\\\47.46094\\\\81.57265\\\\307.01\\\\45.11719\\\\80.68514\\\\307.01\\\\42.77344\\\\79.22858\\\\307.01\\\\38.08594\\\\78.2206\\\\307.01\\\\35.74219\\\\77.19827\\\\307.01\\\\33.39844\\\\76.55239\\\\307.01\\\\31.05469\\\\76.12139\\\\307.01\\\\26.36719\\\\74.72801\\\\307.01\\\\24.02344\\\\74.43276\\\\307.01\\\\16.99219\\\\74.13425\\\\307.01\\\\14.64844\\\\74.0982\\\\307.01\\\\7.617188\\\\74.18246\\\\307.01\\\\2.929688\\\\74.39614\\\\307.01\\\\0.5859375\\\\74.65002\\\\307.01\\\\-4.101563\\\\75.99764\\\\307.01\\\\-6.445313\\\\76.44152\\\\307.01\\\\-8.789063\\\\77.05959\\\\307.01\\\\-11.13281\\\\78.04713\\\\307.01\\\\-15.82031\\\\79.25529\\\\307.01\\\\-18.16406\\\\80.70029\\\\307.01\\\\-20.50781\\\\81.59003\\\\307.01\\\\-22.85156\\\\82.96635\\\\307.01\\\\-25.19531\\\\83.75323\\\\307.01\\\\-27.53906\\\\85.54559\\\\307.01\\\\-29.88281\\\\86.62055\\\\307.01\\\\-32.22656\\\\88.30287\\\\307.01\\\\-34.57031\\\\90.24761\\\\307.01\\\\-36.72696\\\\91.74844\\\\307.01\\\\-39.25781\\\\93.79108\\\\307.01\\\\-41.60156\\\\95.80312\\\\307.01\\\\-46.76263\\\\101.1234\\\\307.01\\\\-50.32931\\\\105.8109\\\\307.01\\\\-52.19967\\\\108.1547\\\\307.01\\\\-53.78753\\\\110.4984\\\\307.01\\\\-55.12727\\\\112.8422\\\\307.01\\\\-56.73218\\\\115.1859\\\\307.01\\\\-57.60399\\\\117.5297\\\\307.01\\\\-59.0554\\\\119.8734\\\\307.01\\\\-59.9868\\\\122.2172\\\\307.01\\\\-61.19757\\\\124.5609\\\\307.01\\\\-61.69523\\\\126.9047\\\\307.01\\\\-63.64114\\\\131.5922\\\\307.01\\\\-64.53993\\\\136.2797\\\\307.01\\\\-65.34997\\\\138.6234\\\\307.01\\\\-65.7409\\\\140.9672\\\\307.01\\\\-66.1507\\\\145.6547\\\\307.01\\\\-66.472\\\\150.3422\\\\307.01\\\\-66.58739\\\\155.0297\\\\307.01\\\\-66.57152\\\\157.3734\\\\307.01\\\\-66.46494\\\\159.7172\\\\307.01\\\\-66.11516\\\\164.4047\\\\307.01\\\\-65.59342\\\\169.0922\\\\307.01\\\\-64.28482\\\\173.7797\\\\307.01\\\\-63.89509\\\\176.1234\\\\307.01\\\\-63.1595\\\\178.4672\\\\307.01\\\\-61.99355\\\\180.8109\\\\307.01\\\\-61.42098\\\\183.1547\\\\307.01\\\\-60.5483\\\\185.4984\\\\307.01\\\\-60.35156\\\\185.7601\\\\307.01\\\\-56.91528\\\\192.5297\\\\307.01\\\\-55.83274\\\\194.8734\\\\307.01\\\\-54.25148\\\\197.2172\\\\307.01\\\\-52.56362\\\\199.5609\\\\307.01\\\\-51.16442\\\\201.9047\\\\307.01\\\\-48.63281\\\\205.0156\\\\307.01\\\\-47.47334\\\\206.5922\\\\307.01\\\\-45.13073\\\\208.9359\\\\307.01\\\\-42.93779\\\\211.2797\\\\307.01\\\\-39.25781\\\\214.8144\\\\307.01\\\\-34.97234\\\\218.3109\\\\307.01\\\\-34.57031\\\\218.6988\\\\307.01\\\\-32.22656\\\\220.0478\\\\307.01\\\\-28.16808\\\\222.9984\\\\307.01\\\\-27.53906\\\\223.5539\\\\307.01\\\\-25.19531\\\\224.4929\\\\307.01\\\\-22.85156\\\\225.9097\\\\307.01\\\\-20.50781\\\\226.9751\\\\307.01\\\\-18.16406\\\\228.4825\\\\307.01\\\\-15.82031\\\\229.1508\\\\307.01\\\\-14.96138\\\\230.0297\\\\307.01\\\\-15.82031\\\\231.3794\\\\307.01\\\\-16.92257\\\\232.3734\\\\307.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848933604400001.474954755728\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"376\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"12\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-18.16406\\\\233.0951\\\\310.01\\\\-29.88281\\\\233.1132\\\\310.01\\\\-32.22656\\\\233.1483\\\\310.01\\\\-36.91406\\\\233.1221\\\\310.01\\\\-46.28906\\\\233.1397\\\\310.01\\\\-50.97656\\\\233.1736\\\\310.01\\\\-60.35156\\\\233.19\\\\310.01\\\\-62.69531\\\\233.1652\\\\310.01\\\\-65.03906\\\\232.5396\\\\310.01\\\\-67.38281\\\\232.8852\\\\310.01\\\\-72.07031\\\\232.9942\\\\310.01\\\\-86.13281\\\\233.0183\\\\310.01\\\\-88.47656\\\\233.0671\\\\310.01\\\\-95.50781\\\\233.0859\\\\310.01\\\\-97.85156\\\\233.3123\\\\310.01\\\\-102.5391\\\\233.9389\\\\310.01\\\\-104.8828\\\\234.062\\\\310.01\\\\-107.2266\\\\233.5222\\\\310.01\\\\-109.5703\\\\234.0754\\\\310.01\\\\-116.6016\\\\234.0158\\\\310.01\\\\-133.0078\\\\234.1313\\\\310.01\\\\-137.6953\\\\234.1127\\\\310.01\\\\-142.3828\\\\234.1741\\\\310.01\\\\-147.0703\\\\234.0855\\\\310.01\\\\-151.7578\\\\234.1127\\\\310.01\\\\-165.8203\\\\234.0141\\\\310.01\\\\-168.1641\\\\234.1313\\\\310.01\\\\-182.2266\\\\234.2252\\\\310.01\\\\-186.9141\\\\234.2721\\\\310.01\\\\-189.2578\\\\234.2252\\\\310.01\\\\-198.6328\\\\234.2187\\\\310.01\\\\-200.9766\\\\234.261\\\\310.01\\\\-205.6641\\\\234.1564\\\\310.01\\\\-208.0078\\\\234.2088\\\\310.01\\\\-215.0391\\\\234.2678\\\\310.01\\\\-222.0703\\\\234.3601\\\\310.01\\\\-226.7578\\\\234.3296\\\\310.01\\\\-233.7891\\\\234.1478\\\\310.01\\\\-238.4766\\\\234.1954\\\\310.01\\\\-243.1641\\\\234.1652\\\\310.01\\\\-245.5078\\\\233.9895\\\\310.01\\\\-247.8516\\\\233.9042\\\\310.01\\\\-252.5391\\\\234.0772\\\\310.01\\\\-254.8828\\\\234.2605\\\\310.01\\\\-257.2266\\\\234.9111\\\\310.01\\\\-259.5703\\\\236.1157\\\\310.01\\\\-260.7422\\\\237.0609\\\\310.01\\\\-262.3813\\\\239.4047\\\\310.01\\\\-262.5138\\\\241.7484\\\\310.01\\\\-261.5641\\\\244.0922\\\\310.01\\\\-260.7806\\\\246.4359\\\\310.01\\\\-259.5703\\\\248.5863\\\\310.01\\\\-257.6038\\\\251.1234\\\\310.01\\\\-255.672\\\\253.4672\\\\310.01\\\\-252.5391\\\\256.6564\\\\310.01\\\\-250.1953\\\\258.9219\\\\310.01\\\\-247.8516\\\\261.4344\\\\310.01\\\\-245.5078\\\\263.6147\\\\310.01\\\\-244.1124\\\\265.1859\\\\310.01\\\\-241.6101\\\\267.5297\\\\310.01\\\\-239.4375\\\\269.8734\\\\310.01\\\\-236.9858\\\\272.2172\\\\310.01\\\\-233.7891\\\\275.3877\\\\310.01\\\\-231.4453\\\\277.8215\\\\310.01\\\\-229.1016\\\\280.0036\\\\310.01\\\\-226.7578\\\\282.5409\\\\310.01\\\\-225.1803\\\\283.9359\\\\310.01\\\\-222.0703\\\\287.2221\\\\310.01\\\\-220.5288\\\\288.6234\\\\310.01\\\\-218.3186\\\\290.9672\\\\310.01\\\\-217.3828\\\\291.678\\\\310.01\\\\-212.6953\\\\294.6293\\\\310.01\\\\-210.3516\\\\295.3008\\\\310.01\\\\-208.0078\\\\296.4508\\\\310.01\\\\-205.6641\\\\296.8858\\\\310.01\\\\-203.3203\\\\297.1639\\\\310.01\\\\-196.2891\\\\297.1446\\\\310.01\\\\-191.6016\\\\297.0175\\\\310.01\\\\-179.8828\\\\296.9378\\\\310.01\\\\-177.5391\\\\296.8855\\\\310.01\\\\-165.8203\\\\296.8345\\\\310.01\\\\-158.7891\\\\296.8672\\\\310.01\\\\-154.1016\\\\296.851\\\\310.01\\\\-135.3516\\\\296.8786\\\\310.01\\\\-128.3203\\\\296.9134\\\\310.01\\\\-121.2891\\\\296.8971\\\\310.01\\\\-111.9141\\\\296.8359\\\\310.01\\\\-97.85156\\\\296.8453\\\\310.01\\\\-88.47656\\\\296.9028\\\\310.01\\\\-86.13281\\\\296.8927\\\\310.01\\\\-69.72656\\\\296.9622\\\\310.01\\\\-65.03906\\\\296.934\\\\310.01\\\\-58.00781\\\\296.9358\\\\310.01\\\\-55.66406\\\\297.3383\\\\310.01\\\\-53.32031\\\\296.9926\\\\310.01\\\\-50.97656\\\\297.0405\\\\310.01\\\\-48.63281\\\\296.9267\\\\310.01\\\\-46.28906\\\\297.409\\\\310.01\\\\-43.94531\\\\297.3148\\\\310.01\\\\-41.60156\\\\297.373\\\\310.01\\\\-39.25781\\\\297.0516\\\\310.01\\\\-36.91406\\\\297.1798\\\\310.01\\\\-34.57031\\\\297.1975\\\\310.01\\\\-32.22656\\\\297.3947\\\\310.01\\\\-29.88281\\\\297.2767\\\\310.01\\\\-27.53906\\\\297.2779\\\\310.01\\\\-25.19531\\\\297.3806\\\\310.01\\\\-22.85156\\\\297.106\\\\310.01\\\\-20.50781\\\\297.4055\\\\310.01\\\\-18.16406\\\\297.1577\\\\310.01\\\\-15.82031\\\\297.2089\\\\310.01\\\\-13.47656\\\\297.4229\\\\310.01\\\\-11.13281\\\\297.2307\\\\310.01\\\\-8.789063\\\\297.1626\\\\310.01\\\\-6.445313\\\\297.4229\\\\310.01\\\\-4.101563\\\\297.3546\\\\310.01\\\\-1.757813\\\\297.0439\\\\310.01\\\\0.5859375\\\\297.0849\\\\310.01\\\\2.929688\\\\296.8985\\\\310.01\\\\5.273438\\\\297.2462\\\\310.01\\\\7.617188\\\\296.8985\\\\310.01\\\\9.960938\\\\297.1152\\\\310.01\\\\12.30469\\\\296.8477\\\\310.01\\\\19.33594\\\\296.8579\\\\310.01\\\\24.02344\\\\296.8161\\\\310.01\\\\26.36719\\\\296.8473\\\\310.01\\\\33.39844\\\\296.7643\\\\310.01\\\\42.77344\\\\296.7533\\\\310.01\\\\45.11719\\\\296.7115\\\\310.01\\\\59.17969\\\\296.6814\\\\310.01\\\\68.55469\\\\296.5984\\\\310.01\\\\75.58594\\\\296.6107\\\\310.01\\\\80.27344\\\\296.5362\\\\310.01\\\\84.96094\\\\296.5616\\\\310.01\\\\87.30469\\\\296.5098\\\\310.01\\\\99.02344\\\\296.5005\\\\310.01\\\\101.3672\\\\296.466\\\\310.01\\\\110.7422\\\\296.4189\\\\310.01\\\\113.0859\\\\296.3782\\\\310.01\\\\117.7734\\\\296.3976\\\\310.01\\\\120.1172\\\\296.3578\\\\310.01\\\\127.1484\\\\296.3288\\\\310.01\\\\129.4922\\\\296.2873\\\\310.01\\\\131.8359\\\\296.3348\\\\310.01\\\\134.1797\\\\295.9141\\\\310.01\\\\136.5234\\\\296.1612\\\\310.01\\\\138.8672\\\\296.033\\\\310.01\\\\141.2109\\\\296.2967\\\\310.01\\\\143.5547\\\\295.9477\\\\310.01\\\\145.8984\\\\295.864\\\\310.01\\\\150.5859\\\\295.894\\\\310.01\\\\152.9297\\\\295.833\\\\310.01\\\\162.3047\\\\295.7516\\\\310.01\\\\166.9922\\\\295.6638\\\\310.01\\\\171.6797\\\\295.7173\\\\310.01\\\\181.0547\\\\295.6093\\\\310.01\\\\185.7422\\\\295.6272\\\\310.01\\\\188.0859\\\\295.557\\\\310.01\\\\192.7734\\\\295.5742\\\\310.01\\\\197.4609\\\\295.8012\\\\310.01\\\\199.8047\\\\295.8012\\\\310.01\\\\202.1484\\\\295.6819\\\\310.01\\\\204.4922\\\\295.4287\\\\310.01\\\\206.8359\\\\294.8307\\\\310.01\\\\209.1797\\\\294.3828\\\\310.01\\\\211.5234\\\\292.4764\\\\310.01\\\\213.8672\\\\291.1765\\\\310.01\\\\216.2109\\\\289.625\\\\310.01\\\\217.2743\\\\288.6234\\\\310.01\\\\218.5547\\\\287.0983\\\\310.01\\\\221.7204\\\\283.9359\\\\310.01\\\\225.5859\\\\279.8821\\\\310.01\\\\227.9297\\\\277.5431\\\\310.01\\\\230.2734\\\\275.0606\\\\310.01\\\\233.113\\\\272.2172\\\\310.01\\\\235.3208\\\\269.8734\\\\310.01\\\\237.7111\\\\267.5297\\\\310.01\\\\239.9438\\\\265.1859\\\\310.01\\\\246.8767\\\\258.1547\\\\310.01\\\\249.1396\\\\255.8109\\\\310.01\\\\251.4974\\\\253.4672\\\\310.01\\\\255.4942\\\\248.7797\\\\310.01\\\\257.2692\\\\246.4359\\\\310.01\\\\259.2847\\\\244.0922\\\\310.01\\\\260.0775\\\\241.7484\\\\310.01\\\\260.576\\\\239.4047\\\\310.01\\\\260.1205\\\\237.0609\\\\310.01\\\\258.8931\\\\234.7172\\\\310.01\\\\258.3984\\\\234.2411\\\\310.01\\\\256.0547\\\\233.35\\\\310.01\\\\253.7109\\\\232.9379\\\\310.01\\\\251.3672\\\\232.7162\\\\310.01\\\\249.0234\\\\232.8224\\\\310.01\\\\244.3359\\\\232.8437\\\\310.01\\\\239.6484\\\\233.0108\\\\310.01\\\\237.3047\\\\233.0007\\\\310.01\\\\232.6172\\\\233.0726\\\\310.01\\\\227.9297\\\\233.0305\\\\310.01\\\\211.5234\\\\233.0726\\\\310.01\\\\206.8359\\\\233.0245\\\\310.01\\\\204.4922\\\\232.7456\\\\310.01\\\\202.1484\\\\232.6886\\\\310.01\\\\195.1172\\\\232.7848\\\\310.01\\\\190.4297\\\\232.7186\\\\310.01\\\\176.3672\\\\232.7719\\\\310.01\\\\166.9922\\\\232.7456\\\\310.01\\\\159.9609\\\\232.7975\\\\310.01\\\\150.5859\\\\232.7746\\\\310.01\\\\145.8984\\\\232.8003\\\\310.01\\\\138.8672\\\\232.6623\\\\310.01\\\\134.1797\\\\232.6623\\\\310.01\\\\131.8359\\\\232.4897\\\\310.01\\\\129.4922\\\\231.8945\\\\310.01\\\\124.8047\\\\231.6823\\\\310.01\\\\120.1172\\\\231.737\\\\310.01\\\\117.7734\\\\232.3211\\\\310.01\\\\115.4297\\\\232.6329\\\\310.01\\\\110.7422\\\\232.6623\\\\310.01\\\\108.3984\\\\231.9109\\\\310.01\\\\106.0547\\\\231.602\\\\310.01\\\\103.7109\\\\231.6193\\\\310.01\\\\102.8551\\\\232.3734\\\\310.01\\\\101.3672\\\\233.1132\\\\310.01\\\\94.33594\\\\233.0951\\\\310.01\\\\87.30469\\\\233.1397\\\\310.01\\\\82.61719\\\\233.1132\\\\310.01\\\\75.58594\\\\233.1483\\\\310.01\\\\70.89844\\\\233.1221\\\\310.01\\\\59.17969\\\\233.1568\\\\310.01\\\\52.14844\\\\233.1221\\\\310.01\\\\47.46094\\\\233.131\\\\310.01\\\\45.11719\\\\233.0859\\\\310.01\\\\44.16726\\\\232.3734\\\\310.01\\\\42.77344\\\\231.0498\\\\310.01\\\\42.0192\\\\230.0297\\\\310.01\\\\42.77344\\\\229.2101\\\\310.01\\\\45.11719\\\\228.4825\\\\310.01\\\\47.46094\\\\226.9683\\\\310.01\\\\49.80469\\\\225.9571\\\\310.01\\\\52.14844\\\\224.5099\\\\310.01\\\\54.49219\\\\223.5692\\\\310.01\\\\55.14323\\\\222.9984\\\\310.01\\\\59.17969\\\\220.1045\\\\310.01\\\\61.52344\\\\218.7182\\\\310.01\\\\64.78396\\\\215.9672\\\\310.01\\\\66.21094\\\\214.8859\\\\310.01\\\\70.89844\\\\210.3839\\\\310.01\\\\74.36692\\\\206.5922\\\\310.01\\\\76.38396\\\\204.2484\\\\310.01\\\\81.22672\\\\197.2172\\\\310.01\\\\84.03577\\\\192.5297\\\\310.01\\\\85.25792\\\\190.1859\\\\310.01\\\\86.1923\\\\187.8422\\\\310.01\\\\87.47085\\\\185.4984\\\\310.01\\\\88.48811\\\\183.1547\\\\310.01\\\\88.90029\\\\180.8109\\\\310.01\\\\89.90248\\\\178.4672\\\\310.01\\\\90.64713\\\\176.1234\\\\310.01\\\\91.18042\\\\173.7797\\\\310.01\\\\92.74409\\\\169.0922\\\\310.01\\\\93.04629\\\\166.7484\\\\310.01\\\\93.38223\\\\159.7172\\\\310.01\\\\93.66732\\\\155.0297\\\\310.01\\\\94.19643\\\\152.6859\\\\310.01\\\\95.64145\\\\150.3422\\\\310.01\\\\94.33594\\\\149.1322\\\\310.01\\\\93.50089\\\\147.9984\\\\310.01\\\\93.25756\\\\145.6547\\\\310.01\\\\92.96472\\\\140.9672\\\\310.01\\\\92.55265\\\\138.6234\\\\310.01\\\\91.62743\\\\136.2797\\\\310.01\\\\90.46875\\\\131.5922\\\\310.01\\\\88.75411\\\\126.9047\\\\310.01\\\\88.33083\\\\124.5609\\\\310.01\\\\86.91406\\\\122.2172\\\\310.01\\\\85.93851\\\\119.8734\\\\310.01\\\\84.69238\\\\117.5297\\\\310.01\\\\83.74721\\\\115.1859\\\\310.01\\\\81.96295\\\\112.8422\\\\310.01\\\\80.91831\\\\110.4984\\\\310.01\\\\79.14664\\\\108.1547\\\\310.01\\\\77.20256\\\\105.8109\\\\310.01\\\\75.65157\\\\103.4672\\\\310.01\\\\71.53253\\\\98.77969\\\\310.01\\\\68.55469\\\\95.82625\\\\310.01\\\\66.21094\\\\93.7748\\\\310.01\\\\63.79395\\\\91.74844\\\\310.01\\\\61.52344\\\\90.26997\\\\310.01\\\\59.17969\\\\88.23898\\\\310.01\\\\56.83594\\\\86.67812\\\\310.01\\\\54.49219\\\\85.52697\\\\310.01\\\\52.14844\\\\83.74062\\\\310.01\\\\49.80469\\\\82.99707\\\\310.01\\\\47.46094\\\\81.59437\\\\310.01\\\\45.11719\\\\80.70401\\\\310.01\\\\42.77344\\\\79.24621\\\\310.01\\\\38.08594\\\\78.23525\\\\310.01\\\\35.74219\\\\77.20986\\\\310.01\\\\33.39844\\\\76.56908\\\\310.01\\\\31.05469\\\\76.1376\\\\310.01\\\\28.71094\\\\75.50471\\\\310.01\\\\26.36719\\\\74.72801\\\\310.01\\\\24.02344\\\\74.43276\\\\310.01\\\\16.99219\\\\74.15237\\\\310.01\\\\12.30469\\\\74.10455\\\\310.01\\\\7.617188\\\\74.19435\\\\310.01\\\\2.929688\\\\74.40105\\\\310.01\\\\0.5859375\\\\74.6557\\\\310.01\\\\-4.101563\\\\75.97835\\\\310.01\\\\-6.445313\\\\76.43703\\\\310.01\\\\-8.789063\\\\77.04008\\\\310.01\\\\-11.13281\\\\78.03346\\\\310.01\\\\-15.82031\\\\79.22787\\\\310.01\\\\-18.16406\\\\80.65422\\\\310.01\\\\-20.50781\\\\81.57233\\\\310.01\\\\-22.85156\\\\82.94526\\\\310.01\\\\-25.19531\\\\83.73331\\\\310.01\\\\-27.53906\\\\85.52371\\\\310.01\\\\-29.88281\\\\86.58486\\\\310.01\\\\-32.22656\\\\88.25871\\\\310.01\\\\-34.57031\\\\90.22985\\\\310.01\\\\-36.76382\\\\91.74844\\\\310.01\\\\-39.25781\\\\93.74467\\\\310.01\\\\-41.60156\\\\95.77628\\\\310.01\\\\-46.83174\\\\101.1234\\\\310.01\\\\-50.36664\\\\105.8109\\\\310.01\\\\-52.22528\\\\108.1547\\\\310.01\\\\-53.85835\\\\110.4984\\\\310.01\\\\-55.16944\\\\112.8422\\\\310.01\\\\-56.75659\\\\115.1859\\\\310.01\\\\-57.66267\\\\117.5297\\\\310.01\\\\-59.07907\\\\119.8734\\\\310.01\\\\-60.05458\\\\122.2172\\\\310.01\\\\-61.23355\\\\124.5609\\\\310.01\\\\-61.71977\\\\126.9047\\\\310.01\\\\-63.70555\\\\131.5922\\\\310.01\\\\-64.61088\\\\136.2797\\\\310.01\\\\-65.42969\\\\138.6234\\\\310.01\\\\-65.75874\\\\140.9672\\\\310.01\\\\-66.18872\\\\145.6547\\\\310.01\\\\-66.50977\\\\150.3422\\\\310.01\\\\-66.63708\\\\155.0297\\\\310.01\\\\-66.4952\\\\159.7172\\\\310.01\\\\-66.1377\\\\164.4047\\\\310.01\\\\-65.63528\\\\169.0922\\\\310.01\\\\-65.06631\\\\171.4359\\\\310.01\\\\-64.31938\\\\173.7797\\\\310.01\\\\-63.93199\\\\176.1234\\\\310.01\\\\-63.24552\\\\178.4672\\\\310.01\\\\-62.07078\\\\180.8109\\\\310.01\\\\-61.44824\\\\183.1547\\\\310.01\\\\-60.69909\\\\185.4984\\\\310.01\\\\-59.32978\\\\187.8422\\\\310.01\\\\-58.20172\\\\190.1859\\\\310.01\\\\-56.94638\\\\192.5297\\\\310.01\\\\-55.91395\\\\194.8734\\\\310.01\\\\-52.60492\\\\199.5609\\\\310.01\\\\-51.24368\\\\201.9047\\\\310.01\\\\-48.63281\\\\205.082\\\\310.01\\\\-47.51002\\\\206.5922\\\\310.01\\\\-45.16488\\\\208.9359\\\\310.01\\\\-42.98322\\\\211.2797\\\\310.01\\\\-39.25781\\\\214.8471\\\\310.01\\\\-34.57031\\\\218.7393\\\\310.01\\\\-32.22656\\\\220.0723\\\\310.01\\\\-31.49524\\\\220.6547\\\\310.01\\\\-28.1901\\\\222.9984\\\\310.01\\\\-27.53906\\\\223.5692\\\\310.01\\\\-25.19531\\\\224.5146\\\\310.01\\\\-22.85156\\\\225.9463\\\\310.01\\\\-20.50781\\\\226.9932\\\\310.01\\\\-18.16406\\\\228.5043\\\\310.01\\\\-15.82031\\\\229.1644\\\\310.01\\\\-14.9747\\\\230.0297\\\\310.01\\\\-15.82031\\\\231.3705\\\\310.01\\\\-16.91176\\\\232.3734\\\\310.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848957605700001.539833993627\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"369\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"13\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"45.11719\\\\233.1042\\\\313.01\\\\44.14645\\\\232.3734\\\\313.01\\\\42.77344\\\\231.0593\\\\313.01\\\\42.01079\\\\230.0297\\\\313.01\\\\42.77344\\\\229.2013\\\\313.01\\\\45.11719\\\\228.4738\\\\313.01\\\\47.46094\\\\226.9815\\\\313.01\\\\49.80469\\\\225.902\\\\313.01\\\\52.14844\\\\224.4881\\\\313.01\\\\54.49219\\\\223.5423\\\\313.01\\\\55.12733\\\\222.9984\\\\313.01\\\\59.17969\\\\220.0829\\\\313.01\\\\61.52344\\\\218.6617\\\\313.01\\\\64.74609\\\\215.9672\\\\313.01\\\\66.21094\\\\214.8439\\\\313.01\\\\70.89844\\\\210.3514\\\\313.01\\\\72.25302\\\\208.9359\\\\313.01\\\\76.36958\\\\204.2484\\\\313.01\\\\77.92969\\\\201.9154\\\\313.01\\\\80.27344\\\\198.618\\\\313.01\\\\81.20244\\\\197.2172\\\\313.01\\\\82.5531\\\\194.8734\\\\313.01\\\\84.01786\\\\192.5297\\\\313.01\\\\85.20026\\\\190.1859\\\\313.01\\\\86.15661\\\\187.8422\\\\313.01\\\\87.38582\\\\185.4984\\\\313.01\\\\88.4649\\\\183.1547\\\\313.01\\\\88.8737\\\\180.8109\\\\313.01\\\\89.82677\\\\178.4672\\\\313.01\\\\90.60566\\\\176.1234\\\\313.01\\\\91.14483\\\\173.7797\\\\313.01\\\\91.8785\\\\171.4359\\\\313.01\\\\92.70221\\\\169.0922\\\\313.01\\\\93.03451\\\\166.7484\\\\313.01\\\\93.47005\\\\157.3734\\\\313.01\\\\93.61861\\\\152.6859\\\\313.01\\\\93.64014\\\\150.3422\\\\313.01\\\\93.34677\\\\147.9984\\\\313.01\\\\92.94547\\\\140.9672\\\\313.01\\\\92.48362\\\\138.6234\\\\313.01\\\\91.57636\\\\136.2797\\\\313.01\\\\90.42757\\\\131.5922\\\\313.01\\\\89.48472\\\\129.2484\\\\313.01\\\\88.73901\\\\126.9047\\\\313.01\\\\88.29956\\\\124.5609\\\\313.01\\\\86.86148\\\\122.2172\\\\313.01\\\\85.9046\\\\119.8734\\\\313.01\\\\84.65003\\\\117.5297\\\\313.01\\\\83.69191\\\\115.1859\\\\313.01\\\\81.91267\\\\112.8422\\\\313.01\\\\80.87713\\\\110.4984\\\\313.01\\\\79.10793\\\\108.1547\\\\313.01\\\\77.14613\\\\105.8109\\\\313.01\\\\75.58594\\\\103.498\\\\313.01\\\\73.56179\\\\101.1234\\\\313.01\\\\71.46389\\\\98.77969\\\\313.01\\\\68.55469\\\\95.89069\\\\313.01\\\\66.21094\\\\93.83636\\\\313.01\\\\63.71433\\\\91.74844\\\\313.01\\\\61.52344\\\\90.29206\\\\313.01\\\\59.17969\\\\88.26962\\\\313.01\\\\56.83594\\\\86.74574\\\\313.01\\\\54.49219\\\\85.57699\\\\313.01\\\\52.14844\\\\83.78355\\\\313.01\\\\49.80469\\\\83.01695\\\\313.01\\\\47.46094\\\\81.62056\\\\313.01\\\\45.11719\\\\80.73152\\\\313.01\\\\42.77344\\\\79.27779\\\\313.01\\\\38.08594\\\\78.27902\\\\313.01\\\\35.74219\\\\77.23351\\\\313.01\\\\33.39844\\\\76.57487\\\\313.01\\\\31.05469\\\\76.15349\\\\313.01\\\\28.71094\\\\75.56659\\\\313.01\\\\26.36719\\\\74.72801\\\\313.01\\\\24.02344\\\\74.44027\\\\313.01\\\\14.64844\\\\74.0982\\\\313.01\\\\7.617188\\\\74.19435\\\\313.01\\\\2.929688\\\\74.39614\\\\313.01\\\\0.5859375\\\\74.6557\\\\313.01\\\\-1.757813\\\\75.2781\\\\313.01\\\\-4.101563\\\\75.98805\\\\313.01\\\\-6.445313\\\\76.43114\\\\313.01\\\\-8.789063\\\\77.04008\\\\313.01\\\\-11.13281\\\\78.03108\\\\313.01\\\\-13.47656\\\\78.68081\\\\313.01\\\\-15.82031\\\\79.16585\\\\313.01\\\\-18.16406\\\\80.60848\\\\313.01\\\\-20.50781\\\\81.54504\\\\313.01\\\\-22.85156\\\\82.93452\\\\313.01\\\\-25.19531\\\\83.69951\\\\313.01\\\\-27.53906\\\\85.48667\\\\313.01\\\\-29.88281\\\\86.58486\\\\313.01\\\\-32.22656\\\\88.2459\\\\313.01\\\\-34.57031\\\\90.18356\\\\313.01\\\\-36.84147\\\\91.74844\\\\313.01\\\\-39.25781\\\\93.7097\\\\313.01\\\\-41.60156\\\\95.73894\\\\313.01\\\\-46.90146\\\\101.1234\\\\313.01\\\\-48.62366\\\\103.4672\\\\313.01\\\\-52.24294\\\\108.1547\\\\313.01\\\\-53.89533\\\\110.4984\\\\313.01\\\\-55.24722\\\\112.8422\\\\313.01\\\\-56.79365\\\\115.1859\\\\313.01\\\\-57.7046\\\\117.5297\\\\313.01\\\\-59.10275\\\\119.8734\\\\313.01\\\\-60.1423\\\\122.2172\\\\313.01\\\\-61.27319\\\\124.5609\\\\313.01\\\\-61.73931\\\\126.9047\\\\313.01\\\\-62.82649\\\\129.2484\\\\313.01\\\\-63.74772\\\\131.5922\\\\313.01\\\\-64.64844\\\\136.2797\\\\313.01\\\\-65.49149\\\\138.6234\\\\313.01\\\\-66.03151\\\\143.3109\\\\313.01\\\\-66.55173\\\\150.3422\\\\313.01\\\\-66.7085\\\\155.0297\\\\313.01\\\\-66.5332\\\\159.7172\\\\313.01\\\\-66.37591\\\\162.0609\\\\313.01\\\\-65.93555\\\\166.7484\\\\313.01\\\\-65.66541\\\\169.0922\\\\313.01\\\\-65.13599\\\\171.4359\\\\313.01\\\\-64.35547\\\\173.7797\\\\313.01\\\\-63.97324\\\\176.1234\\\\313.01\\\\-63.31245\\\\178.4672\\\\313.01\\\\-62.13423\\\\180.8109\\\\313.01\\\\-60.7784\\\\185.4984\\\\313.01\\\\-59.36625\\\\187.8422\\\\313.01\\\\-58.29068\\\\190.1859\\\\313.01\\\\-56.97235\\\\192.5297\\\\313.01\\\\-55.9882\\\\194.8734\\\\313.01\\\\-55.66406\\\\195.2305\\\\313.01\\\\-53.32031\\\\198.6979\\\\313.01\\\\-52.65765\\\\199.5609\\\\313.01\\\\-51.33394\\\\201.9047\\\\313.01\\\\-48.63281\\\\205.1581\\\\313.01\\\\-47.54197\\\\206.5922\\\\313.01\\\\-45.18493\\\\208.9359\\\\313.01\\\\-43.00636\\\\211.2797\\\\313.01\\\\-39.25781\\\\214.8799\\\\313.01\\\\-34.57031\\\\218.8154\\\\313.01\\\\-32.22656\\\\220.1045\\\\313.01\\\\-31.54811\\\\220.6547\\\\313.01\\\\-28.24903\\\\222.9984\\\\313.01\\\\-27.53906\\\\223.618\\\\313.01\\\\-25.19531\\\\224.5319\\\\313.01\\\\-22.85156\\\\226.0067\\\\313.01\\\\-20.50781\\\\227.0116\\\\313.01\\\\-18.16406\\\\228.5043\\\\313.01\\\\-15.82031\\\\229.173\\\\313.01\\\\-14.98326\\\\230.0297\\\\313.01\\\\-15.82031\\\\231.3494\\\\313.01\\\\-16.91331\\\\232.3734\\\\313.01\\\\-18.16406\\\\233.1042\\\\313.01\\\\-22.85156\\\\233.131\\\\313.01\\\\-29.88281\\\\233.1132\\\\313.01\\\\-36.91406\\\\233.1483\\\\313.01\\\\-46.28906\\\\233.1397\\\\313.01\\\\-50.97656\\\\233.1818\\\\313.01\\\\-62.69531\\\\233.1652\\\\313.01\\\\-65.03906\\\\232.5396\\\\313.01\\\\-67.38281\\\\232.8735\\\\313.01\\\\-72.07031\\\\232.9942\\\\313.01\\\\-81.44531\\\\233.0343\\\\313.01\\\\-86.13281\\\\233.0283\\\\313.01\\\\-95.50781\\\\233.0951\\\\313.01\\\\-97.85156\\\\233.3584\\\\313.01\\\\-100.1953\\\\233.9981\\\\313.01\\\\-102.5391\\\\234.0754\\\\313.01\\\\-107.2266\\\\233.9926\\\\313.01\\\\-109.5703\\\\234.0754\\\\313.01\\\\-114.2578\\\\234.0284\\\\313.01\\\\-123.6328\\\\234.0805\\\\313.01\\\\-130.6641\\\\234.0855\\\\313.01\\\\-135.3516\\\\234.1407\\\\313.01\\\\-137.6953\\\\234.1127\\\\313.01\\\\-142.3828\\\\234.1889\\\\313.01\\\\-147.0703\\\\234.1038\\\\313.01\\\\-154.1016\\\\234.0513\\\\313.01\\\\-158.7891\\\\234.0691\\\\313.01\\\\-165.8203\\\\234.0211\\\\313.01\\\\-168.1641\\\\234.1579\\\\313.01\\\\-172.8516\\\\234.2175\\\\313.01\\\\-175.1953\\\\234.1894\\\\313.01\\\\-184.5703\\\\234.2686\\\\313.01\\\\-189.2578\\\\234.2252\\\\313.01\\\\-193.9453\\\\234.2289\\\\313.01\\\\-200.9766\\\\234.2902\\\\313.01\\\\-205.6641\\\\234.1783\\\\313.01\\\\-210.3516\\\\234.2822\\\\313.01\\\\-215.0391\\\\234.3418\\\\313.01\\\\-222.0703\\\\234.3731\\\\313.01\\\\-226.7578\\\\234.3601\\\\313.01\\\\-233.7891\\\\234.1731\\\\313.01\\\\-238.4766\\\\234.2088\\\\313.01\\\\-243.1641\\\\234.1523\\\\313.01\\\\-247.8516\\\\233.8669\\\\313.01\\\\-250.1953\\\\233.9436\\\\313.01\\\\-254.8828\\\\234.2296\\\\313.01\\\\-257.2266\\\\234.63\\\\313.01\\\\-259.5703\\\\235.982\\\\313.01\\\\-260.9235\\\\237.0609\\\\313.01\\\\-262.7961\\\\239.4047\\\\313.01\\\\-262.9268\\\\241.7484\\\\313.01\\\\-262.2656\\\\244.0922\\\\313.01\\\\-261.032\\\\246.4359\\\\313.01\\\\-259.6734\\\\248.7797\\\\313.01\\\\-257.5789\\\\251.1234\\\\313.01\\\\-255.7048\\\\253.4672\\\\313.01\\\\-252.5391\\\\256.6491\\\\313.01\\\\-250.1953\\\\258.9388\\\\313.01\\\\-247.8516\\\\261.453\\\\313.01\\\\-245.5078\\\\263.6436\\\\313.01\\\\-244.1278\\\\265.1859\\\\313.01\\\\-241.655\\\\267.5297\\\\313.01\\\\-239.4557\\\\269.8734\\\\313.01\\\\-233.7891\\\\275.4082\\\\313.01\\\\-231.4453\\\\277.8406\\\\313.01\\\\-229.1016\\\\280.0036\\\\313.01\\\\-226.7578\\\\282.5503\\\\313.01\\\\-225.1923\\\\283.9359\\\\313.01\\\\-222.0703\\\\287.2287\\\\313.01\\\\-220.5585\\\\288.6234\\\\313.01\\\\-218.3552\\\\290.9672\\\\313.01\\\\-217.3828\\\\291.7043\\\\313.01\\\\-214.921\\\\293.3109\\\\313.01\\\\-212.6953\\\\294.6401\\\\313.01\\\\-210.3516\\\\295.3416\\\\313.01\\\\-208.0078\\\\296.4592\\\\313.01\\\\-205.6641\\\\296.8858\\\\313.01\\\\-203.3203\\\\297.1639\\\\313.01\\\\-196.2891\\\\297.1254\\\\313.01\\\\-193.9453\\\\297.0099\\\\313.01\\\\-177.5391\\\\296.8925\\\\313.01\\\\-165.8203\\\\296.8423\\\\313.01\\\\-154.1016\\\\296.851\\\\313.01\\\\-147.0703\\\\296.8843\\\\313.01\\\\-144.7266\\\\296.8517\\\\313.01\\\\-137.6953\\\\296.894\\\\313.01\\\\-125.9766\\\\296.9214\\\\313.01\\\\-116.6016\\\\296.8896\\\\313.01\\\\-111.9141\\\\296.8447\\\\313.01\\\\-95.50781\\\\296.8738\\\\313.01\\\\-93.16406\\\\296.9016\\\\313.01\\\\-83.78906\\\\296.9028\\\\313.01\\\\-74.41406\\\\296.9514\\\\313.01\\\\-65.03906\\\\296.9644\\\\313.01\\\\-60.35156\\\\296.916\\\\313.01\\\\-58.00781\\\\296.9377\\\\313.01\\\\-55.66406\\\\297.3491\\\\313.01\\\\-53.32031\\\\296.9377\\\\313.01\\\\-50.97656\\\\296.9285\\\\313.01\\\\-48.63281\\\\297.1917\\\\313.01\\\\-46.28906\\\\297.1807\\\\313.01\\\\-43.94531\\\\297.2621\\\\313.01\\\\-41.60156\\\\297.2199\\\\313.01\\\\-39.25781\\\\297.3984\\\\313.01\\\\-36.91406\\\\297.402\\\\313.01\\\\-34.57031\\\\297.0362\\\\313.01\\\\-32.22656\\\\297.4125\\\\313.01\\\\-29.88281\\\\297.4125\\\\313.01\\\\-27.53906\\\\297.2416\\\\313.01\\\\-25.19531\\\\297.4125\\\\313.01\\\\-22.85156\\\\297.3879\\\\313.01\\\\-20.50781\\\\297.0121\\\\313.01\\\\-18.16406\\\\297.3299\\\\313.01\\\\-15.82031\\\\297.1454\\\\313.01\\\\-11.13281\\\\297.2468\\\\313.01\\\\-8.789063\\\\296.9557\\\\313.01\\\\-6.445313\\\\297.4125\\\\313.01\\\\-4.101563\\\\296.9731\\\\313.01\\\\2.929688\\\\296.9191\\\\313.01\\\\5.273438\\\\297.0809\\\\313.01\\\\7.617188\\\\296.8877\\\\313.01\\\\12.30469\\\\296.8055\\\\313.01\\\\16.99219\\\\296.837\\\\313.01\\\\21.67969\\\\296.8058\\\\313.01\\\\31.05469\\\\296.8159\\\\313.01\\\\35.74219\\\\296.7436\\\\313.01\\\\40.42969\\\\296.7743\\\\313.01\\\\47.46094\\\\296.734\\\\313.01\\\\52.14844\\\\296.6724\\\\313.01\\\\61.52344\\\\296.6635\\\\313.01\\\\66.21094\\\\296.5942\\\\313.01\\\\73.24219\\\\296.5901\\\\313.01\\\\80.27344\\\\296.5284\\\\313.01\\\\82.61719\\\\296.5569\\\\313.01\\\\87.30469\\\\296.4947\\\\313.01\\\\91.99219\\\\296.5134\\\\313.01\\\\96.67969\\\\296.473\\\\313.01\\\\115.4297\\\\296.3986\\\\313.01\\\\134.1797\\\\296.2873\\\\313.01\\\\136.5234\\\\295.9046\\\\313.01\\\\138.8672\\\\295.9102\\\\313.01\\\\141.2109\\\\296.0271\\\\313.01\\\\143.5547\\\\295.8654\\\\313.01\\\\148.2422\\\\295.864\\\\313.01\\\\159.9609\\\\295.7849\\\\313.01\\\\164.6484\\\\295.6819\\\\313.01\\\\169.3359\\\\295.6998\\\\313.01\\\\178.7109\\\\295.6638\\\\313.01\\\\188.0859\\\\295.5742\\\\313.01\\\\192.7734\\\\295.5916\\\\313.01\\\\197.4609\\\\295.8172\\\\313.01\\\\199.8047\\\\295.8012\\\\313.01\\\\202.1484\\\\295.6998\\\\313.01\\\\204.4922\\\\295.4287\\\\313.01\\\\206.8359\\\\294.8307\\\\313.01\\\\209.1797\\\\294.3768\\\\313.01\\\\211.5234\\\\292.4688\\\\313.01\\\\213.8672\\\\291.1765\\\\313.01\\\\216.2109\\\\289.627\\\\313.01\\\\217.2822\\\\288.6234\\\\313.01\\\\219.371\\\\286.2797\\\\313.01\\\\221.7773\\\\283.9359\\\\313.01\\\\225.5859\\\\279.9482\\\\313.01\\\\228.6426\\\\276.9047\\\\313.01\\\\230.2734\\\\275.138\\\\313.01\\\\233.135\\\\272.2172\\\\313.01\\\\235.3423\\\\269.8734\\\\313.01\\\\237.73\\\\267.5297\\\\313.01\\\\239.6484\\\\265.4964\\\\313.01\\\\246.9323\\\\258.1547\\\\313.01\\\\251.4581\\\\253.4672\\\\313.01\\\\256.0547\\\\248.1981\\\\313.01\\\\257.454\\\\246.4359\\\\313.01\\\\259.6265\\\\244.0922\\\\313.01\\\\261.2413\\\\239.4047\\\\313.01\\\\260.4736\\\\237.0609\\\\313.01\\\\259.4369\\\\234.7172\\\\313.01\\\\258.3984\\\\233.723\\\\313.01\\\\256.0547\\\\233.1051\\\\313.01\\\\253.7109\\\\232.7947\\\\313.01\\\\249.0234\\\\232.8704\\\\313.01\\\\244.3359\\\\232.8072\\\\313.01\\\\239.6484\\\\233.0207\\\\313.01\\\\237.3047\\\\233.0007\\\\313.01\\\\232.6172\\\\233.0726\\\\313.01\\\\227.9297\\\\233.0305\\\\313.01\\\\216.2109\\\\233.0632\\\\313.01\\\\206.8359\\\\233.0207\\\\313.01\\\\204.4922\\\\232.7456\\\\313.01\\\\202.1484\\\\232.6745\\\\313.01\\\\197.4609\\\\232.7322\\\\313.01\\\\192.7734\\\\232.7456\\\\313.01\\\\188.0859\\\\232.7048\\\\313.01\\\\178.7109\\\\232.7588\\\\313.01\\\\174.0234\\\\232.7322\\\\313.01\\\\166.9922\\\\232.7456\\\\313.01\\\\162.3047\\\\232.7848\\\\313.01\\\\157.6172\\\\232.7746\\\\313.01\\\\148.2422\\\\232.8003\\\\313.01\\\\143.5547\\\\232.7746\\\\313.01\\\\141.2109\\\\232.6908\\\\313.01\\\\134.1797\\\\232.6329\\\\313.01\\\\131.8359\\\\232.0401\\\\313.01\\\\129.4922\\\\231.6858\\\\313.01\\\\127.1484\\\\231.6664\\\\313.01\\\\120.1172\\\\231.7875\\\\313.01\\\\117.7734\\\\232.6329\\\\313.01\\\\110.7422\\\\232.6623\\\\313.01\\\\108.3984\\\\231.8903\\\\313.01\\\\106.0547\\\\231.6022\\\\313.01\\\\103.7109\\\\231.5567\\\\313.01\\\\102.832\\\\232.3734\\\\313.01\\\\101.3672\\\\233.1221\\\\313.01\\\\94.33594\\\\233.1042\\\\313.01\\\\87.30469\\\\233.1397\\\\313.01\\\\82.61719\\\\233.1132\\\\313.01\\\\77.92969\\\\233.1397\\\\313.01\\\\59.17969\\\\233.1568\\\\313.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848978606900001.507522632828\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"374\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"14\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-18.16406\\\\233.1132\\\\316.01\\\\-34.57031\\\\233.1132\\\\316.01\\\\-39.25781\\\\233.1568\\\\316.01\\\\-41.60156\\\\233.131\\\\316.01\\\\-50.97656\\\\233.1818\\\\316.01\\\\-55.66406\\\\233.1652\\\\316.01\\\\-60.35156\\\\233.2393\\\\316.01\\\\-62.69531\\\\233.1818\\\\316.01\\\\-65.03906\\\\232.7048\\\\316.01\\\\-67.38281\\\\232.8967\\\\316.01\\\\-72.07031\\\\233.0145\\\\316.01\\\\-81.44531\\\\233.0479\\\\316.01\\\\-86.13281\\\\233.0382\\\\316.01\\\\-95.50781\\\\233.0951\\\\316.01\\\\-97.85156\\\\233.3265\\\\316.01\\\\-100.1953\\\\233.9981\\\\316.01\\\\-102.5391\\\\234.0805\\\\316.01\\\\-107.2266\\\\234.0231\\\\316.01\\\\-111.9141\\\\234.0891\\\\316.01\\\\-114.2578\\\\234.0411\\\\316.01\\\\-121.2891\\\\234.054\\\\316.01\\\\-123.6328\\\\234.1127\\\\316.01\\\\-130.6641\\\\234.0672\\\\316.01\\\\-133.0078\\\\234.1127\\\\316.01\\\\-142.3828\\\\234.1741\\\\316.01\\\\-147.0703\\\\234.1174\\\\316.01\\\\-151.7578\\\\234.1127\\\\316.01\\\\-161.1328\\\\234.0263\\\\316.01\\\\-165.8203\\\\234.0387\\\\316.01\\\\-168.1641\\\\234.1894\\\\316.01\\\\-170.5078\\\\234.2503\\\\316.01\\\\-175.1953\\\\234.2073\\\\316.01\\\\-186.9141\\\\234.2539\\\\316.01\\\\-189.2578\\\\234.2112\\\\316.01\\\\-193.9453\\\\234.2289\\\\316.01\\\\-200.9766\\\\234.3204\\\\316.01\\\\-205.6641\\\\234.1916\\\\316.01\\\\-212.6953\\\\234.3573\\\\316.01\\\\-222.0703\\\\234.4053\\\\316.01\\\\-226.7578\\\\234.3731\\\\316.01\\\\-233.7891\\\\234.2125\\\\316.01\\\\-238.4766\\\\234.226\\\\316.01\\\\-243.1641\\\\234.1068\\\\316.01\\\\-247.8516\\\\233.8141\\\\316.01\\\\-250.1953\\\\233.8749\\\\316.01\\\\-254.8828\\\\234.2268\\\\316.01\\\\-257.2266\\\\234.5565\\\\316.01\\\\-259.5703\\\\235.9516\\\\316.01\\\\-260.9418\\\\237.0609\\\\316.01\\\\-262.8647\\\\239.4047\\\\316.01\\\\-263.0318\\\\241.7484\\\\316.01\\\\-262.4791\\\\244.0922\\\\316.01\\\\-261.0516\\\\246.4359\\\\316.01\\\\-259.5703\\\\248.5972\\\\316.01\\\\-257.2266\\\\251.3685\\\\316.01\\\\-255.6122\\\\253.4672\\\\316.01\\\\-252.5391\\\\256.6377\\\\316.01\\\\-250.1953\\\\258.9164\\\\316.01\\\\-247.8516\\\\261.4313\\\\316.01\\\\-245.5078\\\\263.6035\\\\316.01\\\\-244.1\\\\265.1859\\\\316.01\\\\-241.649\\\\267.5297\\\\316.01\\\\-239.4557\\\\269.8734\\\\316.01\\\\-233.7891\\\\275.4139\\\\316.01\\\\-231.4453\\\\277.8628\\\\316.01\\\\-229.1016\\\\280.0036\\\\316.01\\\\-226.7578\\\\282.5439\\\\316.01\\\\-225.1864\\\\283.9359\\\\316.01\\\\-222.0703\\\\287.2355\\\\316.01\\\\-220.5764\\\\288.6234\\\\316.01\\\\-218.3692\\\\290.9672\\\\316.01\\\\-214.9922\\\\293.3109\\\\316.01\\\\-212.6953\\\\294.6526\\\\316.01\\\\-210.3516\\\\295.3416\\\\316.01\\\\-208.0078\\\\296.4756\\\\316.01\\\\-205.6641\\\\296.892\\\\316.01\\\\-203.3203\\\\297.1563\\\\316.01\\\\-196.2891\\\\297.1297\\\\316.01\\\\-193.9453\\\\297.0023\\\\316.01\\\\-184.5703\\\\296.9636\\\\316.01\\\\-177.5391\\\\296.8925\\\\316.01\\\\-172.8516\\\\296.9032\\\\316.01\\\\-168.1641\\\\296.8568\\\\316.01\\\\-163.4766\\\\296.8895\\\\316.01\\\\-156.4453\\\\296.8506\\\\316.01\\\\-147.0703\\\\296.8921\\\\316.01\\\\-144.7266\\\\296.8517\\\\316.01\\\\-125.9766\\\\296.9402\\\\316.01\\\\-121.2891\\\\296.8887\\\\316.01\\\\-118.9453\\\\296.9077\\\\316.01\\\\-111.9141\\\\296.8723\\\\316.01\\\\-102.5391\\\\296.9016\\\\316.01\\\\-95.50781\\\\296.8837\\\\316.01\\\\-88.47656\\\\296.9322\\\\316.01\\\\-83.78906\\\\296.9234\\\\316.01\\\\-67.38281\\\\296.9841\\\\316.01\\\\-65.03906\\\\297.1698\\\\316.01\\\\-62.69531\\\\296.9377\\\\316.01\\\\-58.00781\\\\296.9377\\\\316.01\\\\-55.66406\\\\297.2922\\\\316.01\\\\-53.32031\\\\297.2468\\\\316.01\\\\-50.97656\\\\296.9396\\\\316.01\\\\-48.63281\\\\297.1798\\\\316.01\\\\-46.28906\\\\296.9579\\\\316.01\\\\-43.94531\\\\297.1687\\\\316.01\\\\-41.60156\\\\296.9285\\\\316.01\\\\-39.25781\\\\297.2089\\\\316.01\\\\-36.91406\\\\296.9303\\\\316.01\\\\-34.57031\\\\296.9396\\\\316.01\\\\-32.22656\\\\297.1373\\\\316.01\\\\-29.88281\\\\297.4229\\\\316.01\\\\-27.53906\\\\296.9396\\\\316.01\\\\-25.19531\\\\296.9954\\\\316.01\\\\-22.85156\\\\297.3383\\\\316.01\\\\-20.50781\\\\296.9358\\\\316.01\\\\-18.16406\\\\296.9467\\\\316.01\\\\-15.82031\\\\297.1454\\\\316.01\\\\-13.47656\\\\297.0061\\\\316.01\\\\-11.13281\\\\297.2089\\\\316.01\\\\-8.789063\\\\296.9067\\\\316.01\\\\-6.445313\\\\297.1687\\\\316.01\\\\-4.101563\\\\296.9358\\\\316.01\\\\-1.757813\\\\297.2875\\\\316.01\\\\0.5859375\\\\296.9081\\\\316.01\\\\7.617188\\\\296.8985\\\\316.01\\\\12.30469\\\\296.8161\\\\316.01\\\\14.64844\\\\296.8372\\\\316.01\\\\19.33594\\\\296.7743\\\\316.01\\\\21.67969\\\\296.8055\\\\316.01\\\\31.05469\\\\296.7843\\\\316.01\\\\35.74219\\\\296.7247\\\\316.01\\\\40.42969\\\\296.7743\\\\316.01\\\\42.77344\\\\296.7154\\\\316.01\\\\45.11719\\\\296.7546\\\\316.01\\\\49.80469\\\\296.6839\\\\316.01\\\\63.86719\\\\296.6346\\\\316.01\\\\66.21094\\\\296.5862\\\\316.01\\\\75.58594\\\\296.5696\\\\316.01\\\\77.92969\\\\296.5208\\\\316.01\\\\82.61719\\\\296.549\\\\316.01\\\\89.64844\\\\296.4947\\\\316.01\\\\94.33594\\\\296.5005\\\\316.01\\\\96.67969\\\\296.4597\\\\316.01\\\\108.3984\\\\296.4393\\\\316.01\\\\113.0859\\\\296.3846\\\\316.01\\\\120.1172\\\\296.3782\\\\316.01\\\\127.1484\\\\296.308\\\\316.01\\\\134.1797\\\\296.2929\\\\316.01\\\\136.5234\\\\295.9009\\\\316.01\\\\138.8672\\\\295.9433\\\\316.01\\\\148.2422\\\\295.833\\\\316.01\\\\150.5859\\\\295.864\\\\316.01\\\\152.9297\\\\295.8012\\\\316.01\\\\157.6172\\\\295.8012\\\\316.01\\\\166.9922\\\\295.6638\\\\316.01\\\\174.0234\\\\295.6998\\\\316.01\\\\183.3984\\\\295.6093\\\\316.01\\\\192.7734\\\\295.6093\\\\316.01\\\\197.4609\\\\295.8012\\\\316.01\\\\202.1484\\\\295.6998\\\\316.01\\\\204.4922\\\\295.4137\\\\316.01\\\\206.8359\\\\294.8185\\\\316.01\\\\209.1797\\\\294.3768\\\\316.01\\\\211.5234\\\\292.4764\\\\316.01\\\\213.8672\\\\291.1916\\\\316.01\\\\216.2109\\\\289.6328\\\\316.01\\\\217.2822\\\\288.6234\\\\316.01\\\\219.3814\\\\286.2797\\\\316.01\\\\221.8029\\\\283.9359\\\\316.01\\\\225.5859\\\\279.9599\\\\316.01\\\\227.9297\\\\277.6382\\\\316.01\\\\230.2734\\\\275.1772\\\\316.01\\\\233.2298\\\\272.2172\\\\316.01\\\\234.9609\\\\270.3593\\\\316.01\\\\239.6484\\\\265.57\\\\316.01\\\\246.9653\\\\258.1547\\\\316.01\\\\251.4385\\\\253.4672\\\\316.01\\\\256.0547\\\\248.2196\\\\316.01\\\\257.4986\\\\246.4359\\\\316.01\\\\259.7266\\\\244.0922\\\\316.01\\\\260.7422\\\\241.4555\\\\316.01\\\\261.4258\\\\239.4047\\\\316.01\\\\260.7422\\\\237.3192\\\\316.01\\\\259.477\\\\234.7172\\\\316.01\\\\258.3984\\\\233.6994\\\\316.01\\\\256.0547\\\\233.0592\\\\316.01\\\\253.7109\\\\232.7025\\\\316.01\\\\251.3672\\\\232.81\\\\316.01\\\\246.6797\\\\232.7563\\\\316.01\\\\241.9922\\\\232.9906\\\\316.01\\\\237.3047\\\\233.0007\\\\316.01\\\\232.6172\\\\233.0632\\\\316.01\\\\227.9297\\\\233.0305\\\\316.01\\\\211.5234\\\\233.0537\\\\316.01\\\\206.8359\\\\233.0245\\\\316.01\\\\204.4922\\\\232.7588\\\\316.01\\\\202.1484\\\\232.6623\\\\316.01\\\\195.1172\\\\232.7186\\\\316.01\\\\188.0859\\\\232.7186\\\\316.01\\\\183.3984\\\\232.7719\\\\316.01\\\\181.0547\\\\232.7322\\\\316.01\\\\169.3359\\\\232.7588\\\\316.01\\\\166.9922\\\\232.7322\\\\316.01\\\\157.6172\\\\232.7875\\\\316.01\\\\152.9297\\\\232.7456\\\\316.01\\\\145.8984\\\\232.7875\\\\316.01\\\\141.2109\\\\232.6623\\\\316.01\\\\136.5234\\\\232.6329\\\\316.01\\\\134.1797\\\\232.0805\\\\316.01\\\\131.8359\\\\231.7245\\\\316.01\\\\127.1484\\\\231.6801\\\\316.01\\\\122.4609\\\\231.7572\\\\316.01\\\\120.1172\\\\232.5873\\\\316.01\\\\115.4297\\\\232.6908\\\\316.01\\\\110.7422\\\\232.6623\\\\316.01\\\\108.3984\\\\231.8903\\\\316.01\\\\106.0547\\\\231.6087\\\\316.01\\\\103.7109\\\\231.5483\\\\316.01\\\\102.8224\\\\232.3734\\\\316.01\\\\101.3672\\\\233.1132\\\\316.01\\\\99.02344\\\\233.1397\\\\316.01\\\\80.27344\\\\233.1132\\\\316.01\\\\68.55469\\\\233.1568\\\\316.01\\\\52.14844\\\\233.1483\\\\316.01\\\\45.11719\\\\233.1132\\\\316.01\\\\44.13628\\\\232.3734\\\\316.01\\\\42.77344\\\\231.0686\\\\316.01\\\\42.00247\\\\230.0297\\\\316.01\\\\42.77344\\\\229.1926\\\\316.01\\\\45.11719\\\\228.465\\\\316.01\\\\47.46094\\\\226.9633\\\\316.01\\\\49.80469\\\\225.8906\\\\316.01\\\\52.14844\\\\224.4715\\\\316.01\\\\54.49219\\\\223.5304\\\\316.01\\\\55.10944\\\\222.9984\\\\316.01\\\\59.17969\\\\220.0478\\\\316.01\\\\61.52344\\\\218.6274\\\\316.01\\\\64.72018\\\\215.9672\\\\316.01\\\\66.21094\\\\214.8258\\\\316.01\\\\70.89844\\\\210.3064\\\\316.01\\\\72.20967\\\\208.9359\\\\316.01\\\\76.32568\\\\204.2484\\\\316.01\\\\77.88355\\\\201.9047\\\\316.01\\\\81.18286\\\\197.2172\\\\316.01\\\\82.483\\\\194.8734\\\\316.01\\\\83.97971\\\\192.5297\\\\316.01\\\\85.15485\\\\190.1859\\\\316.01\\\\86.11506\\\\187.8422\\\\316.01\\\\88.44123\\\\183.1547\\\\316.01\\\\88.85645\\\\180.8109\\\\316.01\\\\90.57047\\\\176.1234\\\\316.01\\\\91.12964\\\\173.7797\\\\316.01\\\\91.82967\\\\171.4359\\\\316.01\\\\92.67867\\\\169.0922\\\\316.01\\\\93.02273\\\\166.7484\\\\316.01\\\\93.23618\\\\162.0609\\\\316.01\\\\93.4022\\\\157.3734\\\\316.01\\\\93.45381\\\\152.6859\\\\316.01\\\\93.30592\\\\147.9984\\\\316.01\\\\93.08162\\\\143.3109\\\\316.01\\\\92.91119\\\\140.9672\\\\316.01\\\\92.40625\\\\138.6234\\\\316.01\\\\91.51611\\\\136.2797\\\\316.01\\\\90.39767\\\\131.5922\\\\316.01\\\\89.42243\\\\129.2484\\\\316.01\\\\88.71695\\\\126.9047\\\\316.01\\\\88.25335\\\\124.5609\\\\316.01\\\\86.80245\\\\122.2172\\\\316.01\\\\85.8848\\\\119.8734\\\\316.01\\\\84.58316\\\\117.5297\\\\316.01\\\\83.66635\\\\115.1859\\\\316.01\\\\81.8702\\\\112.8422\\\\316.01\\\\80.80811\\\\110.4984\\\\316.01\\\\79.08266\\\\108.1547\\\\316.01\\\\77.10529\\\\105.8109\\\\316.01\\\\75.58594\\\\103.5963\\\\316.01\\\\73.49802\\\\101.1234\\\\316.01\\\\71.40904\\\\98.77969\\\\316.01\\\\68.55469\\\\95.92896\\\\316.01\\\\63.67357\\\\91.74844\\\\316.01\\\\61.52344\\\\90.32737\\\\316.01\\\\59.17969\\\\88.27599\\\\316.01\\\\56.83594\\\\86.7886\\\\316.01\\\\54.49219\\\\85.58972\\\\316.01\\\\52.14844\\\\83.79642\\\\316.01\\\\49.80469\\\\83.02673\\\\316.01\\\\47.46094\\\\81.63853\\\\316.01\\\\45.11719\\\\80.76684\\\\316.01\\\\42.77344\\\\79.30589\\\\316.01\\\\38.08594\\\\78.27902\\\\316.01\\\\35.74219\\\\77.25775\\\\316.01\\\\33.39844\\\\76.59698\\\\316.01\\\\31.05469\\\\76.1613\\\\316.01\\\\28.71094\\\\75.56659\\\\316.01\\\\26.36719\\\\74.74911\\\\316.01\\\\24.02344\\\\74.44027\\\\316.01\\\\14.64844\\\\74.10455\\\\316.01\\\\9.960938\\\\74.14651\\\\316.01\\\\5.273438\\\\74.273\\\\316.01\\\\2.929688\\\\74.39614\\\\316.01\\\\0.5859375\\\\74.68565\\\\316.01\\\\-1.757813\\\\75.2776\\\\316.01\\\\-4.101563\\\\75.97835\\\\316.01\\\\-6.445313\\\\76.42603\\\\316.01\\\\-8.789063\\\\77.04977\\\\316.01\\\\-11.13281\\\\78.0173\\\\316.01\\\\-13.47656\\\\78.67566\\\\316.01\\\\-15.82031\\\\79.13776\\\\316.01\\\\-18.16406\\\\80.56435\\\\316.01\\\\-20.50781\\\\81.50463\\\\316.01\\\\-22.85156\\\\82.9015\\\\316.01\\\\-25.19531\\\\83.68569\\\\316.01\\\\-27.53906\\\\85.50075\\\\316.01\\\\-29.88281\\\\86.57327\\\\316.01\\\\-32.22656\\\\88.24621\\\\316.01\\\\-34.57031\\\\90.17396\\\\316.01\\\\-36.86175\\\\91.74844\\\\316.01\\\\-39.25781\\\\93.66087\\\\316.01\\\\-41.60156\\\\95.69225\\\\316.01\\\\-46.92759\\\\101.1234\\\\316.01\\\\-50.43298\\\\105.8109\\\\316.01\\\\-52.27513\\\\108.1547\\\\316.01\\\\-53.92769\\\\110.4984\\\\316.01\\\\-55.28938\\\\112.8422\\\\316.01\\\\-56.8119\\\\115.1859\\\\316.01\\\\-57.76507\\\\117.5297\\\\316.01\\\\-59.14436\\\\119.8734\\\\316.01\\\\-61.2854\\\\124.5609\\\\316.01\\\\-61.77901\\\\126.9047\\\\316.01\\\\-62.87364\\\\129.2484\\\\316.01\\\\-63.78268\\\\131.5922\\\\316.01\\\\-64.18945\\\\133.9359\\\\316.01\\\\-64.71442\\\\136.2797\\\\316.01\\\\-65.51514\\\\138.6234\\\\316.01\\\\-65.81827\\\\140.9672\\\\316.01\\\\-66.45339\\\\147.9984\\\\316.01\\\\-66.7085\\\\152.6859\\\\316.01\\\\-66.75646\\\\155.0297\\\\316.01\\\\-66.5637\\\\159.7172\\\\316.01\\\\-66.21094\\\\164.4047\\\\316.01\\\\-65.704\\\\169.0922\\\\316.01\\\\-65.23297\\\\171.4359\\\\316.01\\\\-64.38361\\\\173.7797\\\\316.01\\\\-64.01566\\\\176.1234\\\\316.01\\\\-63.38504\\\\178.4672\\\\316.01\\\\-62.17049\\\\180.8109\\\\316.01\\\\-60.82787\\\\185.4984\\\\316.01\\\\-59.41992\\\\187.8422\\\\316.01\\\\-58.36174\\\\190.1859\\\\316.01\\\\-56.99887\\\\192.5297\\\\316.01\\\\-56.07342\\\\194.8734\\\\316.01\\\\-55.66406\\\\195.3297\\\\316.01\\\\-53.32031\\\\198.7587\\\\316.01\\\\-52.68821\\\\199.5609\\\\316.01\\\\-51.4049\\\\201.9047\\\\316.01\\\\-50.97656\\\\202.358\\\\316.01\\\\-47.5612\\\\206.5922\\\\316.01\\\\-45.21313\\\\208.9359\\\\316.01\\\\-43.05138\\\\211.2797\\\\316.01\\\\-39.25781\\\\214.893\\\\316.01\\\\-35.15625\\\\218.3109\\\\316.01\\\\-34.57031\\\\218.8701\\\\316.01\\\\-32.22656\\\\220.1266\\\\316.01\\\\-31.58335\\\\220.6547\\\\316.01\\\\-28.28872\\\\222.9984\\\\316.01\\\\-27.53906\\\\223.6396\\\\316.01\\\\-25.19531\\\\224.5407\\\\316.01\\\\-22.85156\\\\226.027\\\\316.01\\\\-20.50781\\\\227.0401\\\\316.01\\\\-18.16406\\\\228.5211\\\\316.01\\\\-15.82031\\\\229.1818\\\\316.01\\\\-14.99192\\\\230.0297\\\\316.01\\\\-15.82031\\\\231.3521\\\\316.01\\\\-16.89078\\\\232.3734\\\\316.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851016723500001.512636853846\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"371\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"15\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n";
+const char* k_rtStruct_json04 =
+"                        \"Value\" : \"-18.16406\\\\233.1221\\\\319.01\\\\-32.22656\\\\233.131\\\\319.01\\\\-39.25781\\\\233.1568\\\\319.01\\\\-43.94531\\\\233.1397\\\\319.01\\\\-53.32031\\\\233.19\\\\319.01\\\\-58.00781\\\\233.1818\\\\319.01\\\\-60.35156\\\\233.5756\\\\319.01\\\\-62.69531\\\\233.19\\\\319.01\\\\-65.03906\\\\232.9081\\\\319.01\\\\-67.38281\\\\232.8852\\\\319.01\\\\-72.07031\\\\233.0044\\\\319.01\\\\-76.75781\\\\233.0343\\\\319.01\\\\-83.78906\\\\233.0343\\\\319.01\\\\-88.47656\\\\233.0859\\\\319.01\\\\-93.16406\\\\233.0859\\\\319.01\\\\-97.85156\\\\233.1569\\\\319.01\\\\-100.1953\\\\233.8986\\\\319.01\\\\-102.5391\\\\234.0359\\\\319.01\\\\-107.2266\\\\234.0231\\\\319.01\\\\-109.5703\\\\234.0754\\\\319.01\\\\-118.9453\\\\234.0411\\\\319.01\\\\-128.3203\\\\234.1127\\\\319.01\\\\-130.6641\\\\234.054\\\\319.01\\\\-142.3828\\\\234.1407\\\\319.01\\\\-147.0703\\\\234.0855\\\\319.01\\\\-151.7578\\\\234.1127\\\\319.01\\\\-158.7891\\\\234.0387\\\\319.01\\\\-165.8203\\\\234.0513\\\\319.01\\\\-170.5078\\\\234.2214\\\\319.01\\\\-175.1953\\\\234.1797\\\\319.01\\\\-186.9141\\\\234.2012\\\\319.01\\\\-189.2578\\\\234.1743\\\\319.01\\\\-191.6016\\\\234.2431\\\\319.01\\\\-198.6328\\\\234.2326\\\\319.01\\\\-200.9766\\\\234.2902\\\\319.01\\\\-205.6641\\\\234.1916\\\\319.01\\\\-212.6953\\\\234.3084\\\\319.01\\\\-215.0391\\\\234.2967\\\\319.01\\\\-222.0703\\\\234.3891\\\\319.01\\\\-224.4141\\\\234.3115\\\\319.01\\\\-229.1016\\\\234.3573\\\\319.01\\\\-233.7891\\\\234.2125\\\\319.01\\\\-238.4766\\\\234.1954\\\\319.01\\\\-243.1641\\\\234.0555\\\\319.01\\\\-247.8516\\\\233.7286\\\\319.01\\\\-250.1953\\\\233.7565\\\\319.01\\\\-252.5391\\\\233.9759\\\\319.01\\\\-257.2266\\\\234.7266\\\\319.01\\\\-259.5703\\\\235.9456\\\\319.01\\\\-260.9676\\\\237.0609\\\\319.01\\\\-262.9079\\\\239.4047\\\\319.01\\\\-263.0764\\\\241.7484\\\\319.01\\\\-262.579\\\\244.0922\\\\319.01\\\\-261.0551\\\\246.4359\\\\319.01\\\\-259.5703\\\\248.578\\\\319.01\\\\-257.2266\\\\251.3205\\\\319.01\\\\-255.5183\\\\253.4672\\\\319.01\\\\-252.5391\\\\256.6434\\\\319.01\\\\-250.1953\\\\258.9331\\\\319.01\\\\-247.8516\\\\261.4281\\\\319.01\\\\-245.5078\\\\263.6319\\\\319.01\\\\-244.1062\\\\265.1859\\\\319.01\\\\-241.6212\\\\267.5297\\\\319.01\\\\-239.4403\\\\269.8734\\\\319.01\\\\-233.7891\\\\275.424\\\\319.01\\\\-231.4453\\\\277.8534\\\\319.01\\\\-229.1016\\\\280.0498\\\\319.01\\\\-226.7578\\\\282.5503\\\\319.01\\\\-225.1923\\\\283.9359\\\\319.01\\\\-222.0703\\\\287.2521\\\\319.01\\\\-220.5829\\\\288.6234\\\\319.01\\\\-218.3594\\\\290.9672\\\\319.01\\\\-214.9922\\\\293.3109\\\\319.01\\\\-212.6953\\\\294.6526\\\\319.01\\\\-210.3516\\\\295.3282\\\\319.01\\\\-208.0078\\\\296.4917\\\\319.01\\\\-205.6641\\\\296.899\\\\319.01\\\\-203.3203\\\\297.1488\\\\319.01\\\\-196.2891\\\\297.1047\\\\319.01\\\\-193.9453\\\\296.9722\\\\319.01\\\\-184.5703\\\\296.9529\\\\319.01\\\\-177.5391\\\\296.8713\\\\319.01\\\\-163.4766\\\\296.8895\\\\319.01\\\\-144.7266\\\\296.8434\\\\319.01\\\\-135.3516\\\\296.8869\\\\319.01\\\\-133.0078\\\\296.8697\\\\319.01\\\\-116.6016\\\\296.916\\\\319.01\\\\-111.9141\\\\296.8811\\\\319.01\\\\-102.5391\\\\296.8641\\\\319.01\\\\-93.16406\\\\296.8746\\\\319.01\\\\-88.47656\\\\296.913\\\\319.01\\\\-81.44531\\\\296.8949\\\\319.01\\\\-79.10156\\\\296.9358\\\\319.01\\\\-67.38281\\\\296.9535\\\\319.01\\\\-65.03906\\\\296.9872\\\\319.01\\\\-62.69531\\\\296.9267\\\\319.01\\\\-58.00781\\\\296.9175\\\\319.01\\\\-55.66406\\\\297.0091\\\\319.01\\\\-50.97656\\\\296.9267\\\\319.01\\\\-46.28906\\\\296.9447\\\\319.01\\\\-43.94531\\\\297.0627\\\\319.01\\\\-41.60156\\\\296.8867\\\\319.01\\\\-36.91406\\\\296.8877\\\\319.01\\\\-32.22656\\\\296.9557\\\\319.01\\\\-29.88281\\\\297.2089\\\\319.01\\\\-27.53906\\\\296.9067\\\\319.01\\\\-22.85156\\\\296.998\\\\319.01\\\\-20.50781\\\\296.916\\\\319.01\\\\-15.82031\\\\297.0405\\\\319.01\\\\-13.47656\\\\296.9622\\\\319.01\\\\-11.13281\\\\296.9926\\\\319.01\\\\-8.789063\\\\296.9081\\\\319.01\\\\-4.101563\\\\296.9447\\\\319.01\\\\-1.757813\\\\297.0516\\\\319.01\\\\0.5859375\\\\296.8877\\\\319.01\\\\7.617188\\\\296.8888\\\\319.01\\\\16.99219\\\\296.8369\\\\319.01\\\\19.33594\\\\296.7851\\\\319.01\\\\28.71094\\\\296.7743\\\\319.01\\\\35.74219\\\\296.7043\\\\319.01\\\\45.11719\\\\296.7229\\\\319.01\\\\56.83594\\\\296.6313\\\\319.01\\\\63.86719\\\\296.6228\\\\319.01\\\\73.24219\\\\296.5616\\\\319.01\\\\75.58594\\\\296.5859\\\\319.01\\\\77.92969\\\\296.5154\\\\319.01\\\\91.99219\\\\296.5208\\\\319.01\\\\96.67969\\\\296.4597\\\\319.01\\\\101.3672\\\\296.4668\\\\319.01\\\\106.0547\\\\296.4124\\\\319.01\\\\108.3984\\\\296.4393\\\\319.01\\\\117.7734\\\\296.3922\\\\319.01\\\\122.4609\\\\296.391\\\\319.01\\\\127.1484\\\\296.3229\\\\319.01\\\\134.1797\\\\296.2817\\\\319.01\\\\136.5234\\\\295.884\\\\319.01\\\\138.8672\\\\296.2261\\\\319.01\\\\141.2109\\\\296.1486\\\\319.01\\\\145.8984\\\\295.864\\\\319.01\\\\152.9297\\\\295.833\\\\319.01\\\\155.2734\\\\295.7849\\\\319.01\\\\162.3047\\\\295.7849\\\\319.01\\\\164.6484\\\\295.7346\\\\319.01\\\\176.3672\\\\295.6638\\\\319.01\\\\183.3984\\\\295.6454\\\\319.01\\\\188.0859\\\\295.5916\\\\319.01\\\\192.7734\\\\295.6093\\\\319.01\\\\197.4609\\\\295.8172\\\\319.01\\\\202.1484\\\\295.7173\\\\319.01\\\\204.4922\\\\295.3989\\\\319.01\\\\206.8359\\\\294.803\\\\319.01\\\\209.1797\\\\294.3707\\\\319.01\\\\211.5234\\\\292.4764\\\\319.01\\\\213.8672\\\\291.2065\\\\319.01\\\\216.2109\\\\289.6522\\\\319.01\\\\217.2899\\\\288.6234\\\\319.01\\\\218.5547\\\\287.1418\\\\319.01\\\\221.8375\\\\283.9359\\\\319.01\\\\225.5859\\\\279.9363\\\\319.01\\\\227.9297\\\\277.6265\\\\319.01\\\\230.2734\\\\275.1683\\\\319.01\\\\233.3338\\\\272.2172\\\\319.01\\\\234.9609\\\\270.4222\\\\319.01\\\\244.3359\\\\260.8793\\\\319.01\\\\249.0234\\\\255.926\\\\319.01\\\\251.398\\\\253.4672\\\\319.01\\\\256.0547\\\\248.2237\\\\319.01\\\\257.5125\\\\246.4359\\\\319.01\\\\259.786\\\\244.0922\\\\319.01\\\\260.7422\\\\241.626\\\\319.01\\\\261.5214\\\\239.4047\\\\319.01\\\\260.7422\\\\237.1834\\\\319.01\\\\259.4941\\\\234.7172\\\\319.01\\\\258.3984\\\\233.6884\\\\319.01\\\\256.0547\\\\233.0498\\\\319.01\\\\253.7109\\\\232.7848\\\\319.01\\\\251.3672\\\\233.0989\\\\319.01\\\\249.0234\\\\232.8375\\\\319.01\\\\246.6797\\\\232.7692\\\\319.01\\\\241.9922\\\\233.0207\\\\319.01\\\\237.3047\\\\233.0108\\\\319.01\\\\232.6172\\\\233.0819\\\\319.01\\\\227.9297\\\\233.0402\\\\319.01\\\\211.5234\\\\233.0819\\\\319.01\\\\206.8359\\\\233.0245\\\\319.01\\\\204.4922\\\\232.7975\\\\319.01\\\\202.1484\\\\232.6767\\\\319.01\\\\199.8047\\\\232.6623\\\\319.01\\\\190.4297\\\\232.7588\\\\319.01\\\\185.7422\\\\232.7848\\\\319.01\\\\181.0547\\\\232.7588\\\\319.01\\\\169.3359\\\\232.7588\\\\319.01\\\\166.9922\\\\232.7048\\\\319.01\\\\159.9609\\\\232.7719\\\\319.01\\\\152.9297\\\\232.7346\\\\319.01\\\\148.2422\\\\232.7875\\\\319.01\\\\143.5547\\\\232.7481\\\\319.01\\\\138.8672\\\\232.5056\\\\319.01\\\\136.5234\\\\232.5056\\\\319.01\\\\134.1797\\\\232.0429\\\\319.01\\\\131.8359\\\\231.7224\\\\319.01\\\\129.4922\\\\231.6882\\\\319.01\\\\122.4609\\\\231.7224\\\\319.01\\\\120.1172\\\\232.6179\\\\319.01\\\\117.7734\\\\232.6767\\\\319.01\\\\113.0859\\\\232.6767\\\\319.01\\\\110.7422\\\\232.5557\\\\319.01\\\\108.3984\\\\231.8031\\\\319.01\\\\106.0547\\\\231.589\\\\319.01\\\\103.7109\\\\231.5244\\\\319.01\\\\102.7966\\\\232.3734\\\\319.01\\\\101.3672\\\\233.1042\\\\319.01\\\\96.67969\\\\233.131\\\\319.01\\\\89.64844\\\\233.1221\\\\319.01\\\\75.58594\\\\233.1483\\\\319.01\\\\70.89844\\\\233.1042\\\\319.01\\\\66.21094\\\\233.1652\\\\319.01\\\\56.83594\\\\233.131\\\\319.01\\\\52.14844\\\\233.1397\\\\319.01\\\\45.11719\\\\233.1042\\\\319.01\\\\44.14645\\\\232.3734\\\\319.01\\\\42.77344\\\\231.0593\\\\319.01\\\\42.01079\\\\230.0297\\\\319.01\\\\42.77344\\\\229.2013\\\\319.01\\\\45.11719\\\\228.447\\\\319.01\\\\47.46094\\\\226.9284\\\\319.01\\\\49.80469\\\\225.886\\\\319.01\\\\52.14844\\\\224.4503\\\\319.01\\\\54.49219\\\\223.4528\\\\319.01\\\\55.01404\\\\222.9984\\\\319.01\\\\59.17969\\\\220.0237\\\\319.01\\\\61.52344\\\\218.6082\\\\319.01\\\\64.67848\\\\215.9672\\\\319.01\\\\66.21094\\\\214.8015\\\\319.01\\\\70.89844\\\\210.2358\\\\319.01\\\\72.148\\\\208.9359\\\\319.01\\\\76.26517\\\\204.2484\\\\319.01\\\\77.81339\\\\201.9047\\\\319.01\\\\81.15081\\\\197.2172\\\\319.01\\\\82.41605\\\\194.8734\\\\319.01\\\\83.95089\\\\192.5297\\\\319.01\\\\85.09115\\\\190.1859\\\\319.01\\\\86.09138\\\\187.8422\\\\319.01\\\\88.39328\\\\183.1547\\\\319.01\\\\88.81863\\\\180.8109\\\\319.01\\\\90.54276\\\\176.1234\\\\319.01\\\\91.10133\\\\173.7797\\\\319.01\\\\91.76778\\\\171.4359\\\\319.01\\\\92.65485\\\\169.0922\\\\319.01\\\\92.99918\\\\166.7484\\\\319.01\\\\93.21165\\\\162.0609\\\\319.01\\\\93.36247\\\\157.3734\\\\319.01\\\\93.37488\\\\152.6859\\\\319.01\\\\93.27335\\\\147.9984\\\\319.01\\\\93.05807\\\\143.3109\\\\319.01\\\\92.86326\\\\140.9672\\\\319.01\\\\92.33733\\\\138.6234\\\\319.01\\\\91.43783\\\\136.2797\\\\319.01\\\\90.94626\\\\133.9359\\\\319.01\\\\90.36204\\\\131.5922\\\\319.01\\\\89.36162\\\\129.2484\\\\319.01\\\\88.68583\\\\126.9047\\\\319.01\\\\88.21825\\\\124.5609\\\\319.01\\\\86.72572\\\\122.2172\\\\319.01\\\\85.8493\\\\119.8734\\\\319.01\\\\84.53275\\\\117.5297\\\\319.01\\\\83.62613\\\\115.1859\\\\319.01\\\\81.8292\\\\112.8422\\\\319.01\\\\80.77354\\\\110.4984\\\\319.01\\\\79.05143\\\\108.1547\\\\319.01\\\\77.04742\\\\105.8109\\\\319.01\\\\75.58594\\\\103.674\\\\319.01\\\\73.4361\\\\101.1234\\\\319.01\\\\71.3485\\\\98.77969\\\\319.01\\\\68.55469\\\\95.97556\\\\319.01\\\\63.59904\\\\91.74844\\\\319.01\\\\61.52344\\\\90.34084\\\\319.01\\\\59.17969\\\\88.31962\\\\319.01\\\\56.83594\\\\86.83331\\\\319.01\\\\54.49219\\\\85.63074\\\\319.01\\\\52.14844\\\\83.82526\\\\319.01\\\\49.80469\\\\83.06862\\\\319.01\\\\47.46094\\\\81.65692\\\\319.01\\\\45.11719\\\\80.79234\\\\319.01\\\\42.77344\\\\79.31967\\\\319.01\\\\38.08594\\\\78.27902\\\\319.01\\\\35.74219\\\\77.28263\\\\319.01\\\\33.39844\\\\76.61404\\\\319.01\\\\31.05469\\\\76.1767\\\\319.01\\\\28.71094\\\\75.56659\\\\319.01\\\\26.36719\\\\74.77422\\\\319.01\\\\24.02344\\\\74.45255\\\\319.01\\\\14.64844\\\\74.10455\\\\319.01\\\\12.30469\\\\74.10455\\\\319.01\\\\5.273438\\\\74.26746\\\\319.01\\\\2.929688\\\\74.40346\\\\319.01\\\\0.5859375\\\\74.73805\\\\319.01\\\\-4.101563\\\\75.99764\\\\319.01\\\\-6.445313\\\\76.4192\\\\319.01\\\\-8.789063\\\\77.021\\\\319.01\\\\-11.13281\\\\78.0173\\\\319.01\\\\-13.47656\\\\78.67566\\\\319.01\\\\-15.82031\\\\79.11396\\\\319.01\\\\-18.16406\\\\80.51486\\\\319.01\\\\-20.50781\\\\81.46942\\\\319.01\\\\-22.85156\\\\82.85554\\\\319.01\\\\-25.19531\\\\83.66675\\\\319.01\\\\-27.53906\\\\85.46803\\\\319.01\\\\-29.88281\\\\86.52827\\\\319.01\\\\-32.22656\\\\88.23955\\\\319.01\\\\-34.57031\\\\90.13984\\\\319.01\\\\-36.9035\\\\91.74844\\\\319.01\\\\-41.60156\\\\95.65716\\\\319.01\\\\-46.9745\\\\101.1234\\\\319.01\\\\-50.48889\\\\105.8109\\\\319.01\\\\-52.30941\\\\108.1547\\\\319.01\\\\-53.97684\\\\110.4984\\\\319.01\\\\-55.34668\\\\112.8422\\\\319.01\\\\-56.83594\\\\115.1859\\\\319.01\\\\-57.84288\\\\117.5297\\\\319.01\\\\-59.17969\\\\119.8734\\\\319.01\\\\-60.35156\\\\122.2895\\\\319.01\\\\-61.30981\\\\124.5609\\\\319.01\\\\-61.83551\\\\126.9047\\\\319.01\\\\-62.94936\\\\129.2484\\\\319.01\\\\-63.81696\\\\131.5922\\\\319.01\\\\-64.21995\\\\133.9359\\\\319.01\\\\-64.78502\\\\136.2797\\\\319.01\\\\-65.56069\\\\138.6234\\\\319.01\\\\-65.84246\\\\140.9672\\\\319.01\\\\-66.49079\\\\147.9984\\\\319.01\\\\-66.73695\\\\152.6859\\\\319.01\\\\-66.80727\\\\155.0297\\\\319.01\\\\-66.62016\\\\159.7172\\\\319.01\\\\-66.24458\\\\164.4047\\\\319.01\\\\-65.7409\\\\169.0922\\\\319.01\\\\-65.32193\\\\171.4359\\\\319.01\\\\-64.43269\\\\173.7797\\\\319.01\\\\-64.03687\\\\176.1234\\\\319.01\\\\-63.43099\\\\178.4672\\\\319.01\\\\-62.2521\\\\180.8109\\\\319.01\\\\-61.52967\\\\183.1547\\\\319.01\\\\-60.90088\\\\185.4984\\\\319.01\\\\-59.4697\\\\187.8422\\\\319.01\\\\-58.42364\\\\190.1859\\\\319.01\\\\-57.02597\\\\192.5297\\\\319.01\\\\-56.12809\\\\194.8734\\\\319.01\\\\-55.66406\\\\195.3972\\\\319.01\\\\-53.32031\\\\198.8418\\\\319.01\\\\-52.73438\\\\199.5609\\\\319.01\\\\-51.45956\\\\201.9047\\\\319.01\\\\-48.63281\\\\205.2587\\\\319.01\\\\-47.59325\\\\206.5922\\\\319.01\\\\-45.25587\\\\208.9359\\\\319.01\\\\-43.11045\\\\211.2797\\\\319.01\\\\-41.60156\\\\212.6377\\\\319.01\\\\-39.25781\\\\214.941\\\\319.01\\\\-35.2231\\\\218.3109\\\\319.01\\\\-34.57031\\\\218.9344\\\\319.01\\\\-32.22656\\\\220.1609\\\\319.01\\\\-31.63622\\\\220.6547\\\\319.01\\\\-28.34042\\\\222.9984\\\\319.01\\\\-27.53906\\\\223.6754\\\\319.01\\\\-25.19531\\\\224.5542\\\\319.01\\\\-22.85156\\\\226.0607\\\\319.01\\\\-20.50781\\\\227.0596\\\\319.01\\\\-18.16406\\\\228.5294\\\\319.01\\\\-15.82031\\\\229.1996\\\\319.01\\\\-15.00954\\\\230.0297\\\\319.01\\\\-15.82031\\\\231.333\\\\319.01\\\\-16.88058\\\\232.3734\\\\319.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851035724600001.533642609670\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"359\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"16\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"101.3672\\\\233.1221\\\\322.01\\\\80.27344\\\\233.131\\\\322.01\\\\75.58594\\\\233.1568\\\\322.01\\\\70.89844\\\\233.131\\\\322.01\\\\61.52344\\\\233.1652\\\\322.01\\\\45.11719\\\\233.1132\\\\322.01\\\\44.12896\\\\232.3734\\\\322.01\\\\42.77344\\\\231.076\\\\322.01\\\\42.00247\\\\230.0297\\\\322.01\\\\42.77344\\\\229.1926\\\\322.01\\\\45.11719\\\\228.4243\\\\322.01\\\\47.46094\\\\226.9242\\\\322.01\\\\49.80469\\\\225.8587\\\\322.01\\\\52.14844\\\\224.4422\\\\322.01\\\\54.49219\\\\223.4268\\\\322.01\\\\54.97742\\\\222.9984\\\\322.01\\\\59.17969\\\\220.0136\\\\322.01\\\\61.52344\\\\218.5471\\\\322.01\\\\64.65119\\\\215.9672\\\\322.01\\\\66.21094\\\\214.7764\\\\322.01\\\\70.89844\\\\210.1964\\\\322.01\\\\72.1096\\\\208.9359\\\\322.01\\\\76.2437\\\\204.2484\\\\322.01\\\\77.92969\\\\201.7078\\\\322.01\\\\81.11842\\\\197.2172\\\\322.01\\\\82.30748\\\\194.8734\\\\322.01\\\\82.61719\\\\194.5523\\\\322.01\\\\83.92992\\\\192.5297\\\\322.01\\\\85.04084\\\\190.1859\\\\322.01\\\\87.1582\\\\185.4984\\\\322.01\\\\88.36839\\\\183.1547\\\\322.01\\\\88.7899\\\\180.8109\\\\322.01\\\\89.56792\\\\178.4672\\\\322.01\\\\90.50697\\\\176.1234\\\\322.01\\\\91.68128\\\\171.4359\\\\322.01\\\\92.59956\\\\169.0922\\\\322.01\\\\92.97371\\\\166.7484\\\\322.01\\\\93.0934\\\\164.4047\\\\322.01\\\\93.33585\\\\157.3734\\\\322.01\\\\93.34813\\\\152.6859\\\\322.01\\\\93.22983\\\\147.9984\\\\322.01\\\\93.04629\\\\143.3109\\\\322.01\\\\92.83467\\\\140.9672\\\\322.01\\\\92.2954\\\\138.6234\\\\322.01\\\\91.39597\\\\136.2797\\\\322.01\\\\90.90752\\\\133.9359\\\\322.01\\\\90.32093\\\\131.5922\\\\322.01\\\\89.30564\\\\129.2484\\\\322.01\\\\88.67188\\\\126.9047\\\\322.01\\\\88.16579\\\\124.5609\\\\322.01\\\\86.67472\\\\122.2172\\\\322.01\\\\85.81149\\\\119.8734\\\\322.01\\\\84.49661\\\\117.5297\\\\322.01\\\\83.58636\\\\115.1859\\\\322.01\\\\81.76791\\\\112.8422\\\\322.01\\\\80.71002\\\\110.4984\\\\322.01\\\\79.01383\\\\108.1547\\\\322.01\\\\77.02567\\\\105.8109\\\\322.01\\\\75.58594\\\\103.7458\\\\322.01\\\\73.38867\\\\101.1234\\\\322.01\\\\71.30643\\\\98.77969\\\\322.01\\\\68.55469\\\\96.01372\\\\322.01\\\\63.52539\\\\91.74844\\\\322.01\\\\61.52344\\\\90.35172\\\\322.01\\\\59.17969\\\\88.35252\\\\322.01\\\\56.83594\\\\86.87999\\\\322.01\\\\54.49219\\\\85.66346\\\\322.01\\\\52.14844\\\\83.84647\\\\322.01\\\\49.80469\\\\83.09609\\\\322.01\\\\47.46094\\\\81.6853\\\\322.01\\\\45.11719\\\\80.80066\\\\322.01\\\\42.77344\\\\79.34901\\\\322.01\\\\38.08594\\\\78.30383\\\\322.01\\\\35.74219\\\\77.32118\\\\322.01\\\\33.39844\\\\76.64365\\\\322.01\\\\31.05469\\\\76.1918\\\\322.01\\\\28.71094\\\\75.59623\\\\322.01\\\\26.36719\\\\74.80752\\\\322.01\\\\24.02344\\\\74.45255\\\\322.01\\\\14.64844\\\\74.12846\\\\322.01\\\\12.30469\\\\74.11021\\\\322.01\\\\5.273438\\\\74.2905\\\\322.01\\\\2.929688\\\\74.40346\\\\322.01\\\\0.5859375\\\\74.73805\\\\322.01\\\\-4.101563\\\\76.01651\\\\322.01\\\\-6.445313\\\\76.43631\\\\322.01\\\\-8.789063\\\\77.04008\\\\322.01\\\\-11.13281\\\\78.04468\\\\322.01\\\\-13.47656\\\\78.69472\\\\322.01\\\\-15.82031\\\\79.13468\\\\322.01\\\\-18.16406\\\\80.51486\\\\322.01\\\\-20.50781\\\\81.47456\\\\322.01\\\\-22.85156\\\\82.85554\\\\322.01\\\\-25.19531\\\\83.68029\\\\322.01\\\\-27.53906\\\\85.48688\\\\322.01\\\\-29.88281\\\\86.53931\\\\322.01\\\\-32.22656\\\\88.25278\\\\322.01\\\\-34.57031\\\\90.1353\\\\322.01\\\\-36.86266\\\\91.74844\\\\322.01\\\\-39.25781\\\\93.66832\\\\322.01\\\\-41.60156\\\\95.6376\\\\322.01\\\\-47.00521\\\\101.1234\\\\322.01\\\\-50.52413\\\\105.8109\\\\322.01\\\\-50.97656\\\\106.3405\\\\322.01\\\\-54.00098\\\\110.4984\\\\322.01\\\\-56.85406\\\\115.1859\\\\322.01\\\\-57.8924\\\\117.5297\\\\322.01\\\\-59.20324\\\\119.8734\\\\322.01\\\\-60.36086\\\\122.2172\\\\322.01\\\\-61.32914\\\\124.5609\\\\322.01\\\\-61.85643\\\\126.9047\\\\322.01\\\\-63.04688\\\\129.2484\\\\322.01\\\\-63.83418\\\\131.5922\\\\322.01\\\\-64.24364\\\\133.9359\\\\322.01\\\\-65.59342\\\\138.6234\\\\322.01\\\\-65.87014\\\\140.9672\\\\322.01\\\\-66.32201\\\\145.6547\\\\322.01\\\\-66.68098\\\\150.3422\\\\322.01\\\\-66.85014\\\\155.0297\\\\322.01\\\\-66.7664\\\\157.3734\\\\322.01\\\\-66.48803\\\\162.0609\\\\322.01\\\\-65.75874\\\\169.0922\\\\322.01\\\\-65.3637\\\\171.4359\\\\322.01\\\\-64.4847\\\\173.7797\\\\322.01\\\\-64.05982\\\\176.1234\\\\322.01\\\\-63.44819\\\\178.4672\\\\322.01\\\\-62.28937\\\\180.8109\\\\322.01\\\\-61.54255\\\\183.1547\\\\322.01\\\\-60.94105\\\\185.4984\\\\322.01\\\\-59.49768\\\\187.8422\\\\322.01\\\\-58.49549\\\\190.1859\\\\322.01\\\\-57.04611\\\\192.5297\\\\322.01\\\\-56.17723\\\\194.8734\\\\322.01\\\\-55.66406\\\\195.4638\\\\322.01\\\\-53.32031\\\\198.8875\\\\322.01\\\\-52.75635\\\\199.5609\\\\322.01\\\\-51.52395\\\\201.9047\\\\322.01\\\\-50.97656\\\\202.4906\\\\322.01\\\\-47.61296\\\\206.5922\\\\322.01\\\\-45.29157\\\\208.9359\\\\322.01\\\\-43.14595\\\\211.2797\\\\322.01\\\\-41.60156\\\\212.6678\\\\322.01\\\\-39.25781\\\\214.9694\\\\322.01\\\\-35.26563\\\\218.3109\\\\322.01\\\\-34.57031\\\\218.971\\\\322.01\\\\-32.22656\\\\220.1965\\\\322.01\\\\-31.68909\\\\220.6547\\\\322.01\\\\-28.39057\\\\222.9984\\\\322.01\\\\-27.53906\\\\223.7158\\\\322.01\\\\-25.19531\\\\224.5815\\\\322.01\\\\-22.85156\\\\226.0936\\\\322.01\\\\-20.50781\\\\227.1104\\\\322.01\\\\-18.16406\\\\228.5341\\\\322.01\\\\-15.82031\\\\229.2136\\\\322.01\\\\-15.0185\\\\230.0297\\\\322.01\\\\-15.82031\\\\231.3232\\\\322.01\\\\-16.88058\\\\232.3734\\\\322.01\\\\-18.16406\\\\233.1221\\\\322.01\\\\-22.85156\\\\233.1483\\\\322.01\\\\-32.22656\\\\233.131\\\\322.01\\\\-34.57031\\\\233.1652\\\\322.01\\\\-41.60156\\\\233.131\\\\322.01\\\\-58.00781\\\\233.1981\\\\322.01\\\\-60.35156\\\\233.6712\\\\322.01\\\\-65.03906\\\\232.6477\\\\322.01\\\\-67.38281\\\\232.8735\\\\322.01\\\\-69.72656\\\\232.9735\\\\322.01\\\\-74.41406\\\\233.0245\\\\322.01\\\\-86.13281\\\\233.0479\\\\322.01\\\\-88.47656\\\\233.0859\\\\322.01\\\\-95.50781\\\\233.0951\\\\322.01\\\\-97.85156\\\\233.2679\\\\322.01\\\\-100.1953\\\\233.9446\\\\322.01\\\\-102.5391\\\\233.6928\\\\322.01\\\\-104.8828\\\\234.0489\\\\322.01\\\\-107.2266\\\\233.6082\\\\322.01\\\\-109.5703\\\\234.062\\\\322.01\\\\-114.2578\\\\234.0672\\\\322.01\\\\-118.9453\\\\234.0158\\\\322.01\\\\-125.9766\\\\234.1221\\\\322.01\\\\-130.6641\\\\234.0591\\\\322.01\\\\-137.6953\\\\234.1038\\\\322.01\\\\-142.3828\\\\234.1741\\\\322.01\\\\-147.0703\\\\234.1078\\\\322.01\\\\-151.7578\\\\234.1127\\\\322.01\\\\-154.1016\\\\234.0722\\\\322.01\\\\-161.1328\\\\234.0513\\\\322.01\\\\-165.8203\\\\234.0722\\\\322.01\\\\-168.1641\\\\234.1994\\\\322.01\\\\-177.5391\\\\234.2214\\\\322.01\\\\-189.2578\\\\234.1743\\\\322.01\\\\-191.6016\\\\234.2721\\\\322.01\\\\-198.6328\\\\234.2326\\\\322.01\\\\-200.9766\\\\234.2902\\\\322.01\\\\-203.3203\\\\234.205\\\\322.01\\\\-215.0391\\\\234.2967\\\\322.01\\\\-217.3828\\\\234.3573\\\\322.01\\\\-222.0703\\\\234.3917\\\\322.01\\\\-224.4141\\\\234.3447\\\\322.01\\\\-229.1016\\\\234.4078\\\\322.01\\\\-233.7891\\\\234.2125\\\\322.01\\\\-238.4766\\\\234.2088\\\\322.01\\\\-243.1641\\\\234.0441\\\\322.01\\\\-247.8516\\\\233.665\\\\322.01\\\\-250.1953\\\\233.6877\\\\322.01\\\\-252.5391\\\\233.9291\\\\322.01\\\\-257.2266\\\\234.8983\\\\322.01\\\\-259.5703\\\\235.9345\\\\322.01\\\\-260.9983\\\\237.0609\\\\322.01\\\\-262.9464\\\\239.4047\\\\322.01\\\\-263.0954\\\\241.7484\\\\322.01\\\\-262.6598\\\\244.0922\\\\322.01\\\\-261.9141\\\\245.2447\\\\322.01\\\\-259.5703\\\\248.5569\\\\322.01\\\\-257.2266\\\\251.3205\\\\322.01\\\\-255.5536\\\\253.4672\\\\322.01\\\\-252.5391\\\\256.6377\\\\322.01\\\\-250.1953\\\\258.905\\\\322.01\\\\-247.8516\\\\261.4186\\\\322.01\\\\-245.5078\\\\263.615\\\\322.01\\\\-244.0908\\\\265.1859\\\\322.01\\\\-241.6044\\\\267.5297\\\\322.01\\\\-239.4094\\\\269.8734\\\\322.01\\\\-233.7891\\\\275.4182\\\\322.01\\\\-231.4453\\\\277.8469\\\\322.01\\\\-229.1016\\\\280.0557\\\\322.01\\\\-226.7578\\\\282.5473\\\\322.01\\\\-224.4141\\\\284.7202\\\\322.01\\\\-222.0703\\\\287.2521\\\\322.01\\\\-220.5943\\\\288.6234\\\\322.01\\\\-218.3764\\\\290.9672\\\\322.01\\\\-215.0295\\\\293.3109\\\\322.01\\\\-212.6953\\\\294.6526\\\\322.01\\\\-210.3516\\\\295.2914\\\\322.01\\\\-209.9242\\\\295.6547\\\\322.01\\\\-208.0078\\\\296.5075\\\\322.01\\\\-205.6641\\\\296.899\\\\322.01\\\\-203.3203\\\\297.134\\\\322.01\\\\-198.6328\\\\297.1414\\\\322.01\\\\-193.9453\\\\296.9471\\\\322.01\\\\-189.2578\\\\296.9713\\\\322.01\\\\-182.2266\\\\296.9337\\\\322.01\\\\-177.5391\\\\296.8792\\\\322.01\\\\-163.4766\\\\296.8978\\\\322.01\\\\-149.4141\\\\296.8432\\\\322.01\\\\-142.3828\\\\296.886\\\\322.01\\\\-133.0078\\\\296.8703\\\\322.01\\\\-130.6641\\\\296.896\\\\322.01\\\\-121.2891\\\\296.8971\\\\322.01\\\\-114.2578\\\\296.9339\\\\322.01\\\\-111.9141\\\\296.9077\\\\322.01\\\\-95.50781\\\\296.8847\\\\322.01\\\\-90.82031\\\\296.9145\\\\322.01\\\\-81.44531\\\\296.8949\\\\322.01\\\\-74.41406\\\\296.9447\\\\322.01\\\\-65.03906\\\\296.9557\\\\322.01\\\\-60.35156\\\\296.916\\\\322.01\\\\-50.97656\\\\296.9067\\\\322.01\\\\-46.28906\\\\296.9267\\\\322.01\\\\-43.94531\\\\297.0141\\\\322.01\\\\-41.60156\\\\296.8673\\\\322.01\\\\-34.57031\\\\296.9285\\\\322.01\\\\-27.53906\\\\296.9067\\\\322.01\\\\-22.85156\\\\296.9377\\\\322.01\\\\-11.13281\\\\296.9377\\\\322.01\\\\-8.789063\\\\296.9067\\\\322.01\\\\7.617188\\\\296.8877\\\\322.01\\\\14.64844\\\\296.8266\\\\322.01\\\\16.99219\\\\296.847\\\\322.01\\\\24.02344\\\\296.7643\\\\322.01\\\\31.05469\\\\296.7229\\\\322.01\\\\45.11719\\\\296.7229\\\\322.01\\\\49.80469\\\\296.6724\\\\322.01\\\\52.14844\\\\296.6929\\\\322.01\\\\61.52344\\\\296.6191\\\\322.01\\\\73.24219\\\\296.5777\\\\322.01\\\\84.96094\\\\296.5079\\\\322.01\\\\91.99219\\\\296.5208\\\\322.01\\\\96.67969\\\\296.4597\\\\322.01\\\\101.3672\\\\296.4604\\\\322.01\\\\115.4297\\\\296.3846\\\\322.01\\\\122.4609\\\\296.3766\\\\322.01\\\\124.8047\\\\296.3139\\\\322.01\\\\131.8359\\\\296.2987\\\\322.01\\\\134.1797\\\\296.1332\\\\322.01\\\\136.5234\\\\295.85\\\\322.01\\\\138.8672\\\\295.9433\\\\322.01\\\\143.5547\\\\295.8543\\\\322.01\\\\148.2422\\\\295.8486\\\\322.01\\\\157.6172\\\\295.7849\\\\322.01\\\\164.6484\\\\295.6998\\\\322.01\\\\174.0234\\\\295.6454\\\\322.01\\\\183.3984\\\\295.6638\\\\322.01\\\\188.0859\\\\295.5742\\\\322.01\\\\192.7734\\\\295.5916\\\\322.01\\\\197.4609\\\\295.833\\\\322.01\\\\202.1484\\\\295.7346\\\\322.01\\\\204.4922\\\\295.3842\\\\322.01\\\\206.8359\\\\294.8107\\\\322.01\\\\209.1797\\\\294.3828\\\\322.01\\\\211.5234\\\\292.4996\\\\322.01\\\\213.8672\\\\291.1916\\\\322.01\\\\216.2109\\\\289.625\\\\322.01\\\\217.2743\\\\288.6234\\\\322.01\\\\219.3824\\\\286.2797\\\\322.01\\\\221.8496\\\\283.9359\\\\322.01\\\\223.2422\\\\282.3931\\\\322.01\\\\225.5859\\\\279.9482\\\\322.01\\\\227.9297\\\\277.6329\\\\322.01\\\\230.2734\\\\275.1512\\\\322.01\\\\233.3577\\\\272.2172\\\\322.01\\\\234.9609\\\\270.4549\\\\322.01\\\\237.8726\\\\267.5297\\\\322.01\\\\244.3359\\\\260.9081\\\\322.01\\\\246.6797\\\\258.3968\\\\322.01\\\\251.3775\\\\253.4672\\\\322.01\\\\256.0547\\\\248.2237\\\\322.01\\\\257.5039\\\\246.4359\\\\322.01\\\\259.7775\\\\244.0922\\\\322.01\\\\260.7422\\\\241.7324\\\\322.01\\\\261.5918\\\\239.4047\\\\322.01\\\\260.8048\\\\237.0609\\\\322.01\\\\259.4941\\\\234.7172\\\\322.01\\\\258.3984\\\\233.6932\\\\322.01\\\\256.0547\\\\233.0686\\\\322.01\\\\253.7109\\\\232.8224\\\\322.01\\\\251.3672\\\\233.8731\\\\322.01\\\\249.0234\\\\233.2281\\\\322.01\\\\246.6797\\\\232.7947\\\\322.01\\\\241.9922\\\\233.0207\\\\322.01\\\\237.3047\\\\233.0207\\\\322.01\\\\232.6172\\\\233.0726\\\\322.01\\\\227.9297\\\\233.0305\\\\322.01\\\\218.5547\\\\233.0498\\\\322.01\\\\211.5234\\\\233.091\\\\322.01\\\\206.8359\\\\233.0245\\\\322.01\\\\202.1484\\\\232.6623\\\\322.01\\\\190.4297\\\\232.7588\\\\322.01\\\\174.0234\\\\232.7588\\\\322.01\\\\171.6797\\\\232.7719\\\\322.01\\\\164.6484\\\\232.7048\\\\322.01\\\\159.9609\\\\232.7588\\\\322.01\\\\152.9297\\\\232.7481\\\\322.01\\\\148.2422\\\\232.7875\\\\322.01\\\\143.5547\\\\232.7614\\\\322.01\\\\141.2109\\\\232.6329\\\\322.01\\\\138.8672\\\\231.8626\\\\322.01\\\\136.5234\\\\231.9556\\\\322.01\\\\134.1797\\\\232.4196\\\\322.01\\\\131.8359\\\\231.7424\\\\322.01\\\\124.8047\\\\231.7024\\\\322.01\\\\122.4609\\\\232.0168\\\\322.01\\\\120.1172\\\\232.6329\\\\322.01\\\\115.4297\\\\232.7071\\\\322.01\\\\110.7422\\\\232.6027\\\\322.01\\\\108.3984\\\\231.8445\\\\322.01\\\\106.0547\\\\231.5827\\\\322.01\\\\103.7109\\\\231.4945\\\\322.01\\\\102.7858\\\\232.3734\\\\322.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851068726500001.546012551665\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"368\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"17\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-18.16406\\\\233.1132\\\\325.01\\\\-34.57031\\\\233.1568\\\\325.01\\\\-43.94531\\\\233.1397\\\\325.01\\\\-53.32031\\\\233.1652\\\\325.01\\\\-62.69531\\\\233.2507\\\\325.01\\\\-65.03906\\\\232.6027\\\\325.01\\\\-67.38281\\\\232.8617\\\\325.01\\\\-69.72656\\\\232.9735\\\\325.01\\\\-74.41406\\\\233.0343\\\\325.01\\\\-83.78906\\\\233.0245\\\\325.01\\\\-88.47656\\\\233.0951\\\\325.01\\\\-95.50781\\\\233.0859\\\\325.01\\\\-97.85156\\\\233.4143\\\\325.01\\\\-100.1953\\\\234.0359\\\\325.01\\\\-102.5391\\\\234.1029\\\\325.01\\\\-104.8828\\\\233.4395\\\\325.01\\\\-109.5703\\\\234.0489\\\\325.01\\\\-111.9141\\\\234.0805\\\\325.01\\\\-116.6016\\\\234.054\\\\325.01\\\\-128.3203\\\\234.1174\\\\325.01\\\\-130.6641\\\\234.0591\\\\325.01\\\\-137.6953\\\\234.1221\\\\325.01\\\\-142.3828\\\\234.2191\\\\325.01\\\\-147.0703\\\\234.1029\\\\325.01\\\\-151.7578\\\\234.1127\\\\325.01\\\\-156.4453\\\\234.0772\\\\325.01\\\\-158.7891\\\\234.1085\\\\325.01\\\\-163.4766\\\\234.0463\\\\325.01\\\\-165.8203\\\\234.0722\\\\325.01\\\\-168.1641\\\\234.1994\\\\325.01\\\\-177.5391\\\\234.2357\\\\325.01\\\\-179.8828\\\\234.1837\\\\325.01\\\\-184.5703\\\\234.2574\\\\325.01\\\\-189.2578\\\\234.2012\\\\325.01\\\\-191.6016\\\\234.2721\\\\325.01\\\\-196.2891\\\\234.2574\\\\325.01\\\\-200.9766\\\\234.3204\\\\325.01\\\\-205.6641\\\\234.2187\\\\325.01\\\\-215.0391\\\\234.3146\\\\325.01\\\\-217.3828\\\\234.3917\\\\325.01\\\\-222.0703\\\\234.4409\\\\325.01\\\\-224.4141\\\\234.3917\\\\325.01\\\\-229.1016\\\\234.4578\\\\325.01\\\\-233.7891\\\\234.2398\\\\325.01\\\\-238.4766\\\\234.2644\\\\325.01\\\\-243.1641\\\\234.0329\\\\325.01\\\\-247.8516\\\\233.6513\\\\325.01\\\\-250.1953\\\\233.6663\\\\325.01\\\\-252.5391\\\\234.2918\\\\325.01\\\\-254.8828\\\\234.4928\\\\325.01\\\\-257.2266\\\\234.9479\\\\325.01\\\\-259.5703\\\\235.9244\\\\325.01\\\\-261.0111\\\\237.0609\\\\325.01\\\\-262.9464\\\\239.4047\\\\325.01\\\\-263.1001\\\\241.7484\\\\325.01\\\\-262.7014\\\\244.0922\\\\325.01\\\\-261.9141\\\\245.3016\\\\325.01\\\\-259.5703\\\\248.4308\\\\325.01\\\\-259.1987\\\\248.7797\\\\325.01\\\\-257.2266\\\\251.1994\\\\325.01\\\\-255.4771\\\\253.4672\\\\325.01\\\\-252.5391\\\\256.632\\\\325.01\\\\-250.1953\\\\258.8544\\\\325.01\\\\-247.8516\\\\261.3872\\\\325.01\\\\-245.5078\\\\263.5746\\\\325.01\\\\-244.0755\\\\265.1859\\\\325.01\\\\-241.6044\\\\267.5297\\\\325.01\\\\-239.3906\\\\269.8734\\\\325.01\\\\-236.1328\\\\273.1332\\\\325.01\\\\-233.7891\\\\275.4082\\\\325.01\\\\-231.4453\\\\277.8406\\\\325.01\\\\-229.8915\\\\279.2484\\\\325.01\\\\-226.7578\\\\282.5634\\\\325.01\\\\-224.4141\\\\284.7142\\\\325.01\\\\-222.0703\\\\287.2492\\\\325.01\\\\-220.6122\\\\288.6234\\\\325.01\\\\-218.3665\\\\290.9672\\\\325.01\\\\-215.0391\\\\293.3202\\\\325.01\\\\-212.6953\\\\294.6589\\\\325.01\\\\-210.3516\\\\295.3953\\\\325.01\\\\-208.0078\\\\296.5198\\\\325.01\\\\-205.6641\\\\296.899\\\\325.01\\\\-203.3203\\\\297.134\\\\325.01\\\\-198.6328\\\\297.134\\\\325.01\\\\-193.9453\\\\296.9855\\\\325.01\\\\-189.2578\\\\296.9891\\\\325.01\\\\-179.8828\\\\296.8863\\\\325.01\\\\-168.1641\\\\296.9185\\\\325.01\\\\-161.1328\\\\296.8737\\\\325.01\\\\-156.4453\\\\296.8978\\\\325.01\\\\-149.4141\\\\296.8678\\\\325.01\\\\-144.7266\\\\296.9186\\\\325.01\\\\-140.0391\\\\296.886\\\\325.01\\\\-128.3203\\\\296.8794\\\\325.01\\\\-125.9766\\\\296.916\\\\325.01\\\\-116.6016\\\\296.916\\\\325.01\\\\-114.2578\\\\296.9518\\\\325.01\\\\-100.1953\\\\296.9218\\\\325.01\\\\-95.50781\\\\296.8847\\\\325.01\\\\-88.47656\\\\296.934\\\\325.01\\\\-81.44531\\\\296.925\\\\325.01\\\\-76.75781\\\\296.9557\\\\325.01\\\\-72.07031\\\\296.9428\\\\325.01\\\\-69.72656\\\\297.0516\\\\325.01\\\\-67.38281\\\\296.9622\\\\325.01\\\\-53.32031\\\\296.9053\\\\325.01\\\\-41.60156\\\\296.8985\\\\325.01\\\\-22.85156\\\\296.9081\\\\325.01\\\\-20.50781\\\\296.9841\\\\325.01\\\\-18.16406\\\\297.3277\\\\325.01\\\\-15.82031\\\\296.9175\\\\325.01\\\\-13.47656\\\\296.9175\\\\325.01\\\\-11.13281\\\\297.3806\\\\325.01\\\\-8.789063\\\\296.9067\\\\325.01\\\\-6.445313\\\\296.9285\\\\325.01\\\\0.5859375\\\\296.878\\\\325.01\\\\2.929688\\\\296.9095\\\\325.01\\\\9.960938\\\\296.837\\\\325.01\\\\21.67969\\\\296.8055\\\\325.01\\\\33.39844\\\\296.7135\\\\325.01\\\\38.08594\\\\296.7324\\\\325.01\\\\42.77344\\\\296.7021\\\\325.01\\\\52.14844\\\\296.6929\\\\325.01\\\\59.17969\\\\296.6635\\\\325.01\\\\66.21094\\\\296.5984\\\\325.01\\\\77.92969\\\\296.582\\\\325.01\\\\80.27344\\\\296.5336\\\\325.01\\\\91.99219\\\\296.5079\\\\325.01\\\\94.33594\\\\296.473\\\\325.01\\\\101.3672\\\\296.474\\\\325.01\\\\106.0547\\\\296.4051\\\\325.01\\\\115.4297\\\\296.3986\\\\325.01\\\\122.4609\\\\296.3557\\\\325.01\\\\124.8047\\\\296.308\\\\325.01\\\\129.4922\\\\296.3139\\\\325.01\\\\134.1797\\\\296.1332\\\\325.01\\\\136.5234\\\\295.833\\\\325.01\\\\143.5547\\\\295.8172\\\\325.01\\\\148.2422\\\\295.864\\\\325.01\\\\152.9297\\\\295.7516\\\\325.01\\\\157.6172\\\\295.7849\\\\325.01\\\\169.3359\\\\295.6454\\\\325.01\\\\176.3672\\\\295.6093\\\\325.01\\\\183.3984\\\\295.6638\\\\325.01\\\\188.0859\\\\295.5742\\\\325.01\\\\192.7734\\\\295.5742\\\\325.01\\\\197.4609\\\\295.8172\\\\325.01\\\\202.1484\\\\295.7346\\\\325.01\\\\204.4922\\\\295.4287\\\\325.01\\\\206.8359\\\\294.8107\\\\325.01\\\\209.1797\\\\294.3828\\\\325.01\\\\211.5234\\\\292.5155\\\\325.01\\\\213.8672\\\\291.2065\\\\325.01\\\\216.2109\\\\289.625\\\\325.01\\\\217.2743\\\\288.6234\\\\325.01\\\\218.5547\\\\287.1312\\\\325.01\\\\221.8125\\\\283.9359\\\\325.01\\\\225.5859\\\\279.9313\\\\325.01\\\\227.9297\\\\277.6329\\\\325.01\\\\230.2734\\\\275.1294\\\\325.01\\\\233.3415\\\\272.2172\\\\325.01\\\\234.9609\\\\270.437\\\\325.01\\\\237.8862\\\\267.5297\\\\325.01\\\\244.7266\\\\260.4984\\\\325.01\\\\246.6797\\\\258.4162\\\\325.01\\\\251.4181\\\\253.4672\\\\325.01\\\\256.0547\\\\248.2155\\\\325.01\\\\257.5107\\\\246.4359\\\\325.01\\\\259.7775\\\\244.0922\\\\325.01\\\\260.7694\\\\241.7484\\\\325.01\\\\261.6139\\\\239.4047\\\\325.01\\\\260.8724\\\\237.0609\\\\325.01\\\\259.4996\\\\234.7172\\\\325.01\\\\258.3984\\\\233.6932\\\\325.01\\\\256.0547\\\\233.0686\\\\325.01\\\\253.7109\\\\232.8467\\\\325.01\\\\251.3672\\\\233.6969\\\\325.01\\\\249.0234\\\\232.8344\\\\325.01\\\\246.6797\\\\232.8072\\\\325.01\\\\241.9922\\\\233.0305\\\\325.01\\\\237.3047\\\\233.0207\\\\325.01\\\\232.6172\\\\233.0592\\\\325.01\\\\227.9297\\\\233.0305\\\\325.01\\\\220.8984\\\\233.0402\\\\325.01\\\\211.5234\\\\233.0819\\\\325.01\\\\206.8359\\\\233.0207\\\\325.01\\\\202.1484\\\\232.6477\\\\325.01\\\\197.4609\\\\232.7322\\\\325.01\\\\185.7422\\\\232.7322\\\\325.01\\\\171.6797\\\\232.7848\\\\325.01\\\\164.6484\\\\232.7186\\\\325.01\\\\159.9609\\\\232.7588\\\\325.01\\\\152.9297\\\\232.7456\\\\325.01\\\\143.5547\\\\232.7614\\\\325.01\\\\141.2109\\\\232.6477\\\\325.01\\\\138.8672\\\\231.7333\\\\325.01\\\\136.5234\\\\231.9353\\\\325.01\\\\134.1797\\\\232.6179\\\\325.01\\\\131.8359\\\\232.4552\\\\325.01\\\\129.4922\\\\231.9931\\\\325.01\\\\127.1484\\\\231.7424\\\\325.01\\\\124.8047\\\\231.7224\\\\325.01\\\\121.8516\\\\232.3734\\\\325.01\\\\120.1172\\\\232.6767\\\\325.01\\\\115.4297\\\\232.7346\\\\325.01\\\\108.3984\\\\232.6788\\\\325.01\\\\106.0547\\\\231.6083\\\\325.01\\\\103.7109\\\\231.4658\\\\325.01\\\\102.7466\\\\232.3734\\\\325.01\\\\101.3672\\\\233.1132\\\\325.01\\\\99.02344\\\\233.1397\\\\325.01\\\\89.64844\\\\233.1221\\\\325.01\\\\84.96094\\\\233.1483\\\\325.01\\\\77.92969\\\\233.131\\\\325.01\\\\70.89844\\\\233.1483\\\\325.01\\\\68.55469\\\\233.1221\\\\325.01\\\\63.86719\\\\233.1652\\\\325.01\\\\47.46094\\\\233.131\\\\325.01\\\\45.11719\\\\233.1042\\\\325.01\\\\44.13916\\\\232.3734\\\\325.01\\\\42.77344\\\\231.0852\\\\325.01\\\\41.99423\\\\230.0297\\\\325.01\\\\42.77344\\\\229.1792\\\\325.01\\\\45.11719\\\\228.4149\\\\325.01\\\\47.46094\\\\226.9069\\\\325.01\\\\49.80469\\\\225.8247\\\\325.01\\\\52.14844\\\\224.4343\\\\325.01\\\\54.49219\\\\223.4268\\\\325.01\\\\54.98124\\\\222.9984\\\\325.01\\\\59.17969\\\\219.9802\\\\325.01\\\\61.52344\\\\218.4654\\\\325.01\\\\66.21094\\\\214.7512\\\\325.01\\\\67.41649\\\\213.6234\\\\325.01\\\\72.08356\\\\208.9359\\\\325.01\\\\76.20634\\\\204.2484\\\\325.01\\\\77.92969\\\\201.635\\\\325.01\\\\81.10609\\\\197.2172\\\\325.01\\\\82.23734\\\\194.8734\\\\325.01\\\\82.61719\\\\194.4684\\\\325.01\\\\83.89715\\\\192.5297\\\\325.01\\\\87.08028\\\\185.4984\\\\325.01\\\\88.34971\\\\183.1547\\\\325.01\\\\88.75122\\\\180.8109\\\\325.01\\\\89.51726\\\\178.4672\\\\325.01\\\\90.45728\\\\176.1234\\\\325.01\\\\91.58888\\\\171.4359\\\\325.01\\\\92.52214\\\\169.0922\\\\325.01\\\\92.92603\\\\166.7484\\\\325.01\\\\93.08162\\\\164.4047\\\\325.01\\\\93.24734\\\\159.7172\\\\325.01\\\\93.34813\\\\155.0297\\\\325.01\\\\93.33585\\\\152.6859\\\\325.01\\\\93.21733\\\\147.9984\\\\325.01\\\\93.03451\\\\143.3109\\\\325.01\\\\92.80149\\\\140.9672\\\\325.01\\\\92.20603\\\\138.6234\\\\325.01\\\\91.35603\\\\136.2797\\\\325.01\\\\90.86391\\\\133.9359\\\\325.01\\\\90.26195\\\\131.5922\\\\325.01\\\\89.23982\\\\129.2484\\\\325.01\\\\88.11904\\\\124.5609\\\\325.01\\\\86.61727\\\\122.2172\\\\325.01\\\\85.77421\\\\119.8734\\\\325.01\\\\84.43931\\\\117.5297\\\\325.01\\\\83.54303\\\\115.1859\\\\325.01\\\\81.72218\\\\112.8422\\\\325.01\\\\80.63217\\\\110.4984\\\\325.01\\\\78.97623\\\\108.1547\\\\325.01\\\\76.99889\\\\105.8109\\\\325.01\\\\75.58594\\\\103.8485\\\\325.01\\\\71.2717\\\\98.77969\\\\325.01\\\\68.55469\\\\96.10746\\\\325.01\\\\63.40781\\\\91.74844\\\\325.01\\\\61.52344\\\\90.39472\\\\325.01\\\\59.17969\\\\88.40859\\\\325.01\\\\56.83594\\\\86.96328\\\\325.01\\\\54.49219\\\\85.72954\\\\325.01\\\\52.14844\\\\83.90226\\\\325.01\\\\49.80469\\\\83.13991\\\\325.01\\\\47.46094\\\\81.75262\\\\325.01\\\\45.11719\\\\80.8488\\\\325.01\\\\42.77344\\\\79.45107\\\\325.01\\\\40.42969\\\\78.81117\\\\325.01\\\\38.08594\\\\78.3781\\\\325.01\\\\35.74219\\\\77.40307\\\\325.01\\\\33.39844\\\\76.69214\\\\325.01\\\\28.71094\\\\75.71996\\\\325.01\\\\26.36719\\\\74.93087\\\\325.01\\\\24.02344\\\\74.48033\\\\325.01\\\\14.64844\\\\74.16439\\\\325.01\\\\12.30469\\\\74.15256\\\\325.01\\\\5.273438\\\\74.32497\\\\325.01\\\\2.929688\\\\74.428\\\\325.01\\\\0.5859375\\\\74.75261\\\\325.01\\\\-4.101563\\\\76.07065\\\\325.01\\\\-6.445313\\\\76.48616\\\\325.01\\\\-8.789063\\\\77.12093\\\\325.01\\\\-11.13281\\\\78.12252\\\\325.01\\\\-13.47656\\\\78.72694\\\\325.01\\\\-15.82031\\\\79.19357\\\\325.01\\\\-18.16406\\\\80.59765\\\\325.01\\\\-20.50781\\\\81.5181\\\\325.01\\\\-22.85156\\\\82.87881\\\\325.01\\\\-25.19531\\\\83.74062\\\\325.01\\\\-27.53906\\\\85.55424\\\\325.01\\\\-29.88281\\\\86.58486\\\\325.01\\\\-32.22656\\\\88.27789\\\\325.01\\\\-34.57031\\\\90.20212\\\\325.01\\\\-36.80389\\\\91.74844\\\\325.01\\\\-39.25781\\\\93.7097\\\\325.01\\\\-41.60156\\\\95.68683\\\\325.01\\\\-46.93845\\\\101.1234\\\\325.01\\\\-48.63281\\\\103.3971\\\\325.01\\\\-52.29492\\\\108.1547\\\\325.01\\\\-53.96273\\\\110.4984\\\\325.01\\\\-55.34668\\\\112.8422\\\\325.01\\\\-56.84198\\\\115.1859\\\\325.01\\\\-57.82686\\\\117.5297\\\\325.01\\\\-59.19159\\\\119.8734\\\\325.01\\\\-60.36086\\\\122.2172\\\\325.01\\\\-61.3241\\\\124.5609\\\\325.01\\\\-61.87306\\\\126.9047\\\\325.01\\\\-63.0335\\\\129.2484\\\\325.01\\\\-63.83386\\\\131.5922\\\\325.01\\\\-64.24364\\\\133.9359\\\\325.01\\\\-65.60407\\\\138.6234\\\\325.01\\\\-65.90472\\\\140.9672\\\\325.01\\\\-66.56733\\\\147.9984\\\\325.01\\\\-66.85014\\\\152.6859\\\\325.01\\\\-66.89514\\\\155.0297\\\\325.01\\\\-66.80727\\\\157.3734\\\\325.01\\\\-66.51716\\\\162.0609\\\\325.01\\\\-66.30065\\\\164.4047\\\\325.01\\\\-65.77621\\\\169.0922\\\\325.01\\\\-65.44237\\\\171.4359\\\\325.01\\\\-64.52861\\\\173.7797\\\\325.01\\\\-64.08521\\\\176.1234\\\\325.01\\\\-63.46983\\\\178.4672\\\\325.01\\\\-62.2521\\\\180.8109\\\\325.01\\\\-61.54234\\\\183.1547\\\\325.01\\\\-60.97238\\\\185.4984\\\\325.01\\\\-59.53244\\\\187.8422\\\\325.01\\\\-58.54048\\\\190.1859\\\\325.01\\\\-57.08706\\\\192.5297\\\\325.01\\\\-56.2388\\\\194.8734\\\\325.01\\\\-55.66406\\\\195.557\\\\325.01\\\\-53.32031\\\\198.94\\\\325.01\\\\-52.79036\\\\199.5609\\\\325.01\\\\-51.59609\\\\201.9047\\\\325.01\\\\-48.63281\\\\205.3395\\\\325.01\\\\-47.64024\\\\206.5922\\\\325.01\\\\-45.34446\\\\208.9359\\\\325.01\\\\-43.1875\\\\211.2797\\\\325.01\\\\-41.60156\\\\212.7042\\\\325.01\\\\-39.25781\\\\215.0065\\\\325.01\\\\-36.91406\\\\216.9296\\\\325.01\\\\-34.57031\\\\219.0371\\\\325.01\\\\-32.22656\\\\220.2086\\\\325.01\\\\-29.88281\\\\221.9258\\\\325.01\\\\-27.53906\\\\223.7543\\\\325.01\\\\-25.19531\\\\224.6046\\\\325.01\\\\-22.85156\\\\226.1349\\\\325.01\\\\-20.50781\\\\227.1316\\\\325.01\\\\-18.16406\\\\228.5423\\\\325.01\\\\-15.82031\\\\229.2136\\\\325.01\\\\-15.0185\\\\230.0297\\\\325.01\\\\-15.82031\\\\231.2992\\\\325.01\\\\-16.9148\\\\232.3734\\\\325.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851092727900001.507332422180\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"368\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"18\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-95.50781\\\\233.1042\\\\328.01\\\\-97.85156\\\\233.9217\\\\328.01\\\\-100.1953\\\\234.0411\\\\328.01\\\\-104.8828\\\\234.1505\\\\328.01\\\\-107.2266\\\\234.0891\\\\328.01\\\\-114.2578\\\\234.0855\\\\328.01\\\\-123.6328\\\\234.1407\\\\328.01\\\\-125.9766\\\\234.099\\\\328.01\\\\-135.3516\\\\234.0642\\\\328.01\\\\-142.3828\\\\234.1453\\\\328.01\\\\-147.0703\\\\234.0672\\\\328.01\\\\-158.7891\\\\234.0691\\\\328.01\\\\-165.8203\\\\234.0513\\\\328.01\\\\-170.5078\\\\234.2214\\\\328.01\\\\-177.5391\\\\234.2214\\\\328.01\\\\-179.8828\\\\234.1662\\\\328.01\\\\-186.9141\\\\234.2431\\\\328.01\\\\-189.2578\\\\234.1743\\\\328.01\\\\-191.6016\\\\234.2289\\\\328.01\\\\-196.2891\\\\234.2012\\\\328.01\\\\-200.9766\\\\234.3052\\\\328.01\\\\-203.3203\\\\234.2326\\\\328.01\\\\-208.0078\\\\234.2187\\\\328.01\\\\-212.6953\\\\234.3266\\\\328.01\\\\-215.0391\\\\234.3146\\\\328.01\\\\-222.0703\\\\234.4926\\\\328.01\\\\-224.4141\\\\234.4242\\\\328.01\\\\-229.1016\\\\234.4409\\\\328.01\\\\-233.7891\\\\234.2678\\\\328.01\\\\-236.1328\\\\234.2789\\\\328.01\\\\-240.8203\\\\234.1822\\\\328.01\\\\-243.1641\\\\234.0396\\\\328.01\\\\-247.8516\\\\233.6445\\\\328.01\\\\-250.1953\\\\233.6456\\\\328.01\\\\-252.0338\\\\234.7172\\\\328.01\\\\-252.5391\\\\236.7571\\\\328.01\\\\-254.5061\\\\234.7172\\\\328.01\\\\-254.8828\\\\234.6373\\\\328.01\\\\-257.2266\\\\235.072\\\\328.01\\\\-259.5703\\\\235.9195\\\\328.01\\\\-261.0352\\\\237.0609\\\\328.01\\\\-262.9576\\\\239.4047\\\\328.01\\\\-263.0812\\\\241.7484\\\\328.01\\\\-262.6933\\\\244.0922\\\\328.01\\\\-261.0624\\\\246.4359\\\\328.01\\\\-259.5703\\\\248.3512\\\\328.01\\\\-259.053\\\\248.7797\\\\328.01\\\\-255.4084\\\\253.4672\\\\328.01\\\\-252.5391\\\\256.6272\\\\328.01\\\\-250.1953\\\\258.8713\\\\328.01\\\\-247.8516\\\\261.3969\\\\328.01\\\\-245.5078\\\\263.5681\\\\328.01\\\\-244.0815\\\\265.1859\\\\328.01\\\\-241.6044\\\\267.5297\\\\328.01\\\\-239.4063\\\\269.8734\\\\328.01\\\\-233.7891\\\\275.4299\\\\328.01\\\\-231.4453\\\\277.8564\\\\328.01\\\\-229.8974\\\\279.2484\\\\328.01\\\\-226.7578\\\\282.5634\\\\328.01\\\\-224.4141\\\\284.7263\\\\328.01\\\\-222.0703\\\\287.2521\\\\328.01\\\\-220.5943\\\\288.6234\\\\328.01\\\\-218.3665\\\\290.9672\\\\328.01\\\\-215.0107\\\\293.3109\\\\328.01\\\\-212.6953\\\\294.6589\\\\328.01\\\\-210.3516\\\\295.2445\\\\328.01\\\\-209.8801\\\\295.6547\\\\328.01\\\\-208.0078\\\\296.512\\\\328.01\\\\-205.6641\\\\296.8998\\\\328.01\\\\-203.3203\\\\297.1414\\\\328.01\\\\-198.6328\\\\297.1488\\\\328.01\\\\-193.9453\\\\296.9968\\\\328.01\\\\-184.5703\\\\296.9452\\\\328.01\\\\-177.5391\\\\296.8713\\\\328.01\\\\-170.5078\\\\296.8886\\\\328.01\\\\-154.1016\\\\296.8744\\\\328.01\\\\-149.4141\\\\296.8513\\\\328.01\\\\-144.7266\\\\296.9097\\\\328.01\\\\-140.0391\\\\296.8603\\\\328.01\\\\-130.6641\\\\296.8439\\\\328.01\\\\-121.2891\\\\296.9065\\\\328.01\\\\-109.5703\\\\296.9339\\\\328.01\\\\-97.85156\\\\296.8641\\\\328.01\\\\-83.78906\\\\296.9234\\\\328.01\\\\-74.41406\\\\296.9234\\\\328.01\\\\-69.72656\\\\296.9706\\\\328.01\\\\-67.38281\\\\296.9428\\\\328.01\\\\-60.35156\\\\296.9447\\\\328.01\\\\-53.32031\\\\296.9145\\\\328.01\\\\-39.25781\\\\296.9377\\\\328.01\\\\-36.91406\\\\296.8789\\\\328.01\\\\-29.88281\\\\296.9095\\\\328.01\\\\-22.85156\\\\296.8973\\\\328.01\\\\-18.16406\\\\296.9841\\\\328.01\\\\-15.82031\\\\297.088\\\\328.01\\\\-13.47656\\\\296.9175\\\\328.01\\\\-11.13281\\\\296.9731\\\\328.01\\\\-8.789063\\\\296.9175\\\\328.01\\\\-1.757813\\\\296.9191\\\\328.01\\\\19.33594\\\\296.7952\\\\328.01\\\\21.67969\\\\296.8159\\\\328.01\\\\26.36719\\\\296.7533\\\\328.01\\\\31.05469\\\\296.7733\\\\328.01\\\\33.39844\\\\296.7229\\\\328.01\\\\38.08594\\\\296.7421\\\\328.01\\\\47.46094\\\\296.7324\\\\328.01\\\\49.80469\\\\296.6724\\\\328.01\\\\59.17969\\\\296.675\\\\328.01\\\\66.21094\\\\296.6107\\\\328.01\\\\68.55469\\\\296.6228\\\\328.01\\\\75.58594\\\\296.5696\\\\328.01\\\\77.92969\\\\296.5901\\\\328.01\\\\80.27344\\\\296.5208\\\\328.01\\\\82.61719\\\\296.5616\\\\328.01\\\\87.30469\\\\296.5079\\\\328.01\\\\103.7109\\\\296.4597\\\\328.01\\\\113.0859\\\\296.3846\\\\328.01\\\\117.7734\\\\296.3986\\\\328.01\\\\124.8047\\\\296.3288\\\\328.01\\\\129.4922\\\\296.3288\\\\328.01\\\\131.8359\\\\295.9477\\\\328.01\\\\134.1797\\\\296.1527\\\\328.01\\\\138.8672\\\\295.8486\\\\328.01\\\\143.5547\\\\295.9433\\\\328.01\\\\145.8984\\\\295.864\\\\328.01\\\\148.2422\\\\295.8791\\\\328.01\\\\152.9297\\\\295.8012\\\\328.01\\\\159.9609\\\\295.8012\\\\328.01\\\\164.6484\\\\295.7346\\\\328.01\\\\171.6797\\\\295.6998\\\\328.01\\\\176.3672\\\\295.6272\\\\328.01\\\\183.3984\\\\295.7173\\\\328.01\\\\188.0859\\\\295.5742\\\\328.01\\\\192.7734\\\\295.6093\\\\328.01\\\\197.4609\\\\295.8486\\\\328.01\\\\202.1484\\\\295.7516\\\\328.01\\\\204.4922\\\\295.4287\\\\328.01\\\\206.8359\\\\294.803\\\\328.01\\\\209.1797\\\\294.3828\\\\328.01\\\\211.5234\\\\292.5075\\\\328.01\\\\213.8672\\\\291.2212\\\\328.01\\\\216.2109\\\\289.6308\\\\328.01\\\\217.2743\\\\288.6234\\\\328.01\\\\218.5547\\\\287.1312\\\\328.01\\\\221.809\\\\283.9359\\\\328.01\\\\225.5859\\\\279.9599\\\\328.01\\\\227.9297\\\\277.6776\\\\328.01\\\\230.2734\\\\275.1425\\\\328.01\\\\233.3301\\\\272.2172\\\\328.01\\\\234.9609\\\\270.437\\\\328.01\\\\237.8817\\\\267.5297\\\\328.01\\\\246.9583\\\\258.1547\\\\328.01\\\\251.4177\\\\253.4672\\\\328.01\\\\256.0547\\\\248.1981\\\\328.01\\\\257.4792\\\\246.4359\\\\328.01\\\\259.8178\\\\244.0922\\\\328.01\\\\261.6764\\\\239.4047\\\\328.01\\\\260.9047\\\\237.0609\\\\328.01\\\\259.4996\\\\234.7172\\\\328.01\\\\258.3984\\\\233.6884\\\\328.01\\\\256.0547\\\\233.0779\\\\328.01\\\\253.7109\\\\232.916\\\\328.01\\\\251.3672\\\\233.9331\\\\328.01\\\\249.0234\\\\233.1868\\\\328.01\\\\246.6797\\\\232.8317\\\\328.01\\\\241.9922\\\\233.0305\\\\328.01\\\\237.3047\\\\233.0305\\\\328.01\\\\232.6172\\\\233.0819\\\\328.01\\\\227.9297\\\\233.0498\\\\328.01\\\\223.2422\\\\233.091\\\\328.01\\\\220.8984\\\\233.0632\\\\328.01\\\\211.5234\\\\233.0819\\\\328.01\\\\206.8359\\\\233.0537\\\\328.01\\\\202.1484\\\\232.6477\\\\328.01\\\\197.4609\\\\232.7456\\\\328.01\\\\188.0859\\\\232.7322\\\\328.01\\\\178.7109\\\\232.7975\\\\328.01\\\\174.0234\\\\232.7588\\\\328.01\\\\166.9922\\\\232.7588\\\\328.01\\\\162.3047\\\\232.7186\\\\328.01\\\\152.9297\\\\232.7588\\\\328.01\\\\143.5547\\\\232.8253\\\\328.01\\\\141.2109\\\\232.721\\\\328.01\\\\138.8672\\\\232.1391\\\\328.01\\\\136.5234\\\\232.6027\\\\328.01\\\\134.1797\\\\232.6477\\\\328.01\\\\131.8359\\\\232.5716\\\\328.01\\\\129.4922\\\\231.8784\\\\328.01\\\\127.1484\\\\231.7224\\\\328.01\\\\124.8047\\\\231.7315\\\\328.01\\\\122.4609\\\\232.6623\\\\328.01\\\\115.4297\\\\232.7875\\\\328.01\\\\108.3984\\\\232.7071\\\\328.01\\\\106.0547\\\\231.641\\\\328.01\\\\103.7109\\\\231.4558\\\\328.01\\\\102.6978\\\\232.3734\\\\328.01\\\\101.3672\\\\233.0951\\\\328.01\\\\99.02344\\\\233.1483\\\\328.01\\\\94.33594\\\\233.1221\\\\328.01\\\\89.64844\\\\233.1397\\\\328.01\\\\77.92969\\\\233.1221\\\\328.01\\\\70.89844\\\\233.1568\\\\328.01\\\\47.46094\\\\233.1483\\\\328.01\\\\45.11719\\\\233.1221\\\\328.01\\\\44.12626\\\\232.3734\\\\328.01\\\\42.77344\\\\231.0868\\\\328.01\\\\41.98608\\\\230.0297\\\\328.01\\\\42.77344\\\\229.1708\\\\328.01\\\\45.11719\\\\228.3863\\\\328.01\\\\47.46094\\\\226.8852\\\\328.01\\\\49.80469\\\\225.7875\\\\328.01\\\\52.14844\\\\224.4137\\\\328.01\\\\54.49219\\\\223.3972\\\\328.01\\\\54.94433\\\\222.9984\\\\328.01\\\\59.17969\\\\219.9666\\\\328.01\\\\61.52344\\\\218.3946\\\\328.01\\\\63.86719\\\\216.6084\\\\328.01\\\\66.21094\\\\214.7201\\\\328.01\\\\72.05011\\\\208.9359\\\\328.01\\\\76.14435\\\\204.2484\\\\328.01\\\\77.59603\\\\201.9047\\\\328.01\\\\77.92969\\\\201.5351\\\\328.01\\\\81.09001\\\\197.2172\\\\328.01\\\\82.18169\\\\194.8734\\\\328.01\\\\82.61719\\\\194.396\\\\328.01\\\\83.85225\\\\192.5297\\\\328.01\\\\85.99004\\\\187.8422\\\\328.01\\\\87.00566\\\\185.4984\\\\328.01\\\\88.31177\\\\183.1547\\\\328.01\\\\88.73158\\\\180.8109\\\\328.01\\\\89.43767\\\\178.4672\\\\328.01\\\\90.393\\\\176.1234\\\\328.01\\\\91.51611\\\\171.4359\\\\328.01\\\\92.42188\\\\169.0922\\\\328.01\\\\92.89885\\\\166.7484\\\\328.01\\\\93.06984\\\\164.4047\\\\328.01\\\\93.28426\\\\157.3734\\\\328.01\\\\93.30979\\\\152.6859\\\\328.01\\\\93.18761\\\\147.9984\\\\328.01\\\\93.02273\\\\143.3109\\\\328.01\\\\92.74458\\\\140.9672\\\\328.01\\\\92.09059\\\\138.6234\\\\328.01\\\\91.29035\\\\136.2797\\\\328.01\\\\90.7983\\\\133.9359\\\\328.01\\\\90.19531\\\\131.5922\\\\328.01\\\\89.1515\\\\129.2484\\\\328.01\\\\88.04228\\\\124.5609\\\\328.01\\\\86.57227\\\\122.2172\\\\328.01\\\\85.71805\\\\119.8734\\\\328.01\\\\84.35456\\\\117.5297\\\\328.01\\\\83.45424\\\\115.1859\\\\328.01\\\\81.67584\\\\112.8422\\\\328.01\\\\80.51793\\\\110.4984\\\\328.01\\\\78.89664\\\\108.1547\\\\328.01\\\\76.93359\\\\105.8109\\\\328.01\\\\75.58594\\\\104.0007\\\\328.01\\\\71.0907\\\\98.77969\\\\328.01\\\\68.55469\\\\96.27782\\\\328.01\\\\66.21094\\\\94.34207\\\\328.01\\\\63.23686\\\\91.74844\\\\328.01\\\\61.52344\\\\90.49887\\\\328.01\\\\59.17969\\\\88.51089\\\\328.01\\\\54.49219\\\\85.80405\\\\328.01\\\\52.14844\\\\84.03836\\\\328.01\\\\49.80469\\\\83.19375\\\\328.01\\\\47.46094\\\\81.85665\\\\328.01\\\\45.11719\\\\80.92008\\\\328.01\\\\43.41961\\\\80.02969\\\\328.01\\\\42.77344\\\\79.5718\\\\328.01\\\\40.42969\\\\78.83472\\\\328.01\\\\38.08594\\\\78.42924\\\\328.01\\\\35.74219\\\\77.53945\\\\328.01\\\\33.39844\\\\76.75893\\\\328.01\\\\28.71094\\\\75.81826\\\\328.01\\\\26.36719\\\\75.0248\\\\328.01\\\\24.02344\\\\74.52504\\\\328.01\\\\21.67969\\\\74.40105\\\\328.01\\\\14.64844\\\\74.17623\\\\328.01\\\\12.30469\\\\74.17031\\\\328.01\\\\7.617188\\\\74.25909\\\\328.01\\\\2.929688\\\\74.428\\\\328.01\\\\0.5859375\\\\74.71389\\\\328.01\\\\-4.101563\\\\76.07934\\\\328.01\\\\-6.445313\\\\76.51406\\\\328.01\\\\-8.789063\\\\77.13158\\\\328.01\\\\-11.13281\\\\78.13784\\\\328.01\\\\-13.47656\\\\78.72694\\\\328.01\\\\-15.82031\\\\79.21071\\\\328.01\\\\-18.16406\\\\80.62277\\\\328.01\\\\-20.50781\\\\81.54421\\\\328.01\\\\-22.85156\\\\82.91264\\\\328.01\\\\-25.19531\\\\83.73855\\\\328.01\\\\-27.53906\\\\85.55424\\\\328.01\\\\-29.88281\\\\86.58486\\\\328.01\\\\-32.22656\\\\88.27042\\\\328.01\\\\-34.57031\\\\90.21121\\\\328.01\\\\-36.82314\\\\91.74844\\\\328.01\\\\-39.25781\\\\93.68283\\\\328.01\\\\-41.60156\\\\95.69698\\\\328.01\\\\-43.94531\\\\98.10894\\\\328.01\\\\-46.95976\\\\101.1234\\\\328.01\\\\-50.47743\\\\105.8109\\\\328.01\\\\-52.28932\\\\108.1547\\\\328.01\\\\-53.96273\\\\110.4984\\\\328.01\\\\-56.82392\\\\115.1859\\\\328.01\\\\-57.82686\\\\117.5297\\\\328.01\\\\-59.17969\\\\119.8734\\\\328.01\\\\-60.35156\\\\122.2886\\\\328.01\\\\-61.31202\\\\124.5609\\\\328.01\\\\-61.84362\\\\126.9047\\\\328.01\\\\-62.97818\\\\129.2484\\\\328.01\\\\-63.81696\\\\131.5922\\\\328.01\\\\-64.22777\\\\133.9359\\\\328.01\\\\-65.57173\\\\138.6234\\\\328.01\\\\-65.88971\\\\140.9672\\\\328.01\\\\-66.54406\\\\147.9984\\\\328.01\\\\-66.83923\\\\152.6859\\\\328.01\\\\-66.87236\\\\155.0297\\\\328.01\\\\-66.8178\\\\157.3734\\\\328.01\\\\-66.51716\\\\162.0609\\\\328.01\\\\-66.31799\\\\164.4047\\\\328.01\\\\-65.7848\\\\169.0922\\\\328.01\\\\-65.44237\\\\171.4359\\\\328.01\\\\-64.53993\\\\173.7797\\\\328.01\\\\-64.09171\\\\176.1234\\\\328.01\\\\-63.46994\\\\178.4672\\\\328.01\\\\-62.26713\\\\180.8109\\\\328.01\\\\-61.52344\\\\183.1547\\\\328.01\\\\-61.02607\\\\185.4984\\\\328.01\\\\-59.56421\\\\187.8422\\\\328.01\\\\-58.60754\\\\190.1859\\\\328.01\\\\-57.1322\\\\192.5297\\\\328.01\\\\-56.30392\\\\194.8734\\\\328.01\\\\-55.66406\\\\195.646\\\\328.01\\\\-53.32031\\\\199.0141\\\\328.01\\\\-52.84091\\\\199.5609\\\\328.01\\\\-51.67393\\\\201.9047\\\\328.01\\\\-48.63281\\\\205.3802\\\\328.01\\\\-47.66054\\\\206.5922\\\\328.01\\\\-45.38484\\\\208.9359\\\\328.01\\\\-43.23581\\\\211.2797\\\\328.01\\\\-41.60156\\\\212.7535\\\\328.01\\\\-39.25781\\\\215.0201\\\\328.01\\\\-36.91406\\\\216.9578\\\\328.01\\\\-34.57031\\\\219.0567\\\\328.01\\\\-32.22656\\\\220.2589\\\\328.01\\\\-31.7772\\\\220.6547\\\\328.01\\\\-28.47822\\\\222.9984\\\\328.01\\\\-27.53906\\\\223.7774\\\\328.01\\\\-25.19531\\\\224.6141\\\\328.01\\\\-22.85156\\\\226.1618\\\\328.01\\\\-20.50781\\\\227.1643\\\\328.01\\\\-18.16406\\\\228.5648\\\\328.01\\\\-15.82031\\\\229.3696\\\\328.01\\\\-15.16846\\\\230.0297\\\\328.01\\\\-15.82031\\\\231.0044\\\\328.01\\\\-17.12821\\\\232.3734\\\\328.01\\\\-18.16406\\\\233.0441\\\\328.01\\\\-20.50781\\\\233.1397\\\\328.01\\\\-34.57031\\\\233.1568\\\\328.01\\\\-43.94531\\\\233.1397\\\\328.01\\\\-48.63281\\\\233.1736\\\\328.01\\\\-58.00781\\\\233.19\\\\328.01\\\\-60.35156\\\\233.3635\\\\328.01\\\\-62.69531\\\\233.7748\\\\328.01\\\\-65.03906\\\\232.6767\\\\328.01\\\\-69.72656\\\\232.9839\\\\328.01\\\\-81.44531\\\\233.0537\\\\328.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851113729100001.470312254320\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"562\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"19\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-15.82031\\\\230.0018\\\\331.01\\\\-18.16406\\\\232.6603\\\\331.01\\\\-20.50781\\\\233.131\\\\331.01\\\\-29.88281\\\\233.131\\\\331.01\\\\-43.94531\\\\233.1568\\\\331.01\\\\-53.32031\\\\233.1981\\\\331.01\\\\-58.00781\\\\233.19\\\\331.01\\\\-62.69531\\\\233.3017\\\\331.01\\\\-65.03906\\\\232.9665\\\\331.01\\\\-67.38281\\\\232.9081\\\\331.01\\\\-72.07031\\\\233.0441\\\\331.01\\\\-76.75781\\\\233.0382\\\\331.01\\\\-81.44531\\\\233.0859\\\\331.01\\\\-86.13281\\\\233.0671\\\\331.01\\\\-88.47656\\\\233.1042\\\\331.01\\\\-95.50781\\\\233.1132\\\\331.01\\\\-97.85156\\\\234.054\\\\331.01\\\\-104.8828\\\\234.2191\\\\331.01\\\\-107.2266\\\\234.1551\\\\331.01\\\\-111.9141\\\\234.2039\\\\331.01\\\\-114.2578\\\\234.1596\\\\331.01\\\\-123.6328\\\\234.2233\\\\331.01\\\\-125.9766\\\\234.1641\\\\331.01\\\\-135.3516\\\\234.1174\\\\331.01\\\\-142.3828\\\\234.1785\\\\331.01\\\\-147.0703\\\\234.0904\\\\331.01\\\\-158.7891\\\\234.1085\\\\331.01\\\\-165.8203\\\\234.0952\\\\331.01\\\\-168.1641\\\\234.2214\\\\331.01\\\\-177.5391\\\\234.2835\\\\331.01\\\\-182.2266\\\\234.2539\\\\331.01\\\\-186.9141\\\\234.2902\\\\331.01\\\\-189.2578\\\\234.2431\\\\331.01\\\\-191.6016\\\\234.2902\\\\331.01\\\\-198.6328\\\\234.3084\\\\331.01\\\\-200.9766\\\\234.3864\\\\331.01\\\\-203.3203\\\\234.3235\\\\331.01\\\\-208.0078\\\\234.3115\\\\331.01\\\\-212.6953\\\\234.4578\\\\331.01\\\\-215.0391\\\\234.4266\\\\331.01\\\\-219.7266\\\\234.5859\\\\331.01\\\\-222.0703\\\\234.6051\\\\331.01\\\\-224.4141\\\\234.5285\\\\331.01\\\\-229.1016\\\\234.5121\\\\331.01\\\\-233.7891\\\\234.3601\\\\331.01\\\\-238.4766\\\\234.2935\\\\331.01\\\\-243.1641\\\\234.1026\\\\331.01\\\\-245.5078\\\\233.8227\\\\331.01\\\\-247.8516\\\\233.6637\\\\331.01\\\\-250.1953\\\\233.665\\\\331.01\\\\-252.0243\\\\234.7172\\\\331.01\\\\-252.5391\\\\236.7571\\\\331.01\\\\-253.125\\\\237.0609\\\\331.01\\\\-252.5391\\\\237.1236\\\\331.01\\\\-250.1953\\\\237.9965\\\\331.01\\\\-247.8516\\\\238.0423\\\\331.01\\\\-236.1328\\\\238.0359\\\\331.01\\\\-229.1016\\\\238.0082\\\\331.01\\\\-226.7578\\\\238.0391\\\\331.01\\\\-219.7266\\\\238.0207\\\\331.01\\\\-215.0391\\\\238.0838\\\\331.01\\\\-210.3516\\\\238.0525\\\\331.01\\\\-208.0078\\\\238.1037\\\\331.01\\\\-198.6328\\\\238.1236\\\\331.01\\\\-196.2891\\\\238.1015\\\\331.01\\\\-191.6016\\\\238.1621\\\\331.01\\\\-186.9141\\\\238.0992\\\\331.01\\\\-182.2266\\\\238.1527\\\\331.01\\\\-172.8516\\\\238.1823\\\\331.01\\\\-163.4766\\\\238.1513\\\\331.01\\\\-156.4453\\\\238.192\\\\331.01\\\\-154.1016\\\\238.1706\\\\331.01\\\\-144.7266\\\\238.192\\\\331.01\\\\-142.3828\\\\238.2227\\\\331.01\\\\-137.6953\\\\238.1717\\\\331.01\\\\-133.0078\\\\238.2124\\\\331.01\\\\-128.3203\\\\238.1483\\\\331.01\\\\-125.9766\\\\238.2014\\\\331.01\\\\-116.6016\\\\238.1596\\\\331.01\\\\-100.1953\\\\238.1906\\\\331.01\\\\-93.16406\\\\238.1906\\\\331.01\\\\-88.47656\\\\238.1483\\\\331.01\\\\-79.10156\\\\238.2014\\\\331.01\\\\-74.41406\\\\238.1513\\\\331.01\\\\-69.72656\\\\238.1717\\\\331.01\\\\-62.69531\\\\238.1498\\\\331.01\\\\-58.00781\\\\238.1717\\\\331.01\\\\-48.63281\\\\238.1197\\\\331.01\\\\-43.94531\\\\238.1609\\\\331.01\\\\-41.60156\\\\238.1309\\\\331.01\\\\-29.88281\\\\238.1498\\\\331.01\\\\-25.19531\\\\238.1156\\\\331.01\\\\-15.82031\\\\238.1582\\\\331.01\\\\-8.789063\\\\238.1156\\\\331.01\\\\-6.445313\\\\238.1582\\\\331.01\\\\0.5859375\\\\238.1596\\\\331.01\\\\5.273438\\\\238.1272\\\\331.01\\\\12.30469\\\\238.1796\\\\331.01\\\\16.99219\\\\238.1695\\\\331.01\\\\24.02344\\\\238.0968\\\\331.01\\\\26.36719\\\\238.1061\\\\331.01\\\\31.05469\\\\238.0254\\\\331.01\\\\45.11719\\\\238.0254\\\\331.01\\\\49.80469\\\\237.9679\\\\331.01\\\\52.14844\\\\237.9883\\\\331.01\\\\59.17969\\\\237.9553\\\\331.01\\\\63.86719\\\\237.9632\\\\331.01\\\\66.21094\\\\237.9217\\\\331.01\\\\77.92969\\\\237.9347\\\\331.01\\\\80.27344\\\\237.8105\\\\331.01\\\\82.61719\\\\237.9372\\\\331.01\\\\84.96094\\\\237.4751\\\\331.01\\\\87.30469\\\\237.8936\\\\331.01\\\\89.64844\\\\237.9217\\\\331.01\\\\91.99219\\\\237.7291\\\\331.01\\\\94.33594\\\\237.2086\\\\331.01\\\\99.02344\\\\237.2496\\\\331.01\\\\101.3672\\\\236.9089\\\\331.01\\\\106.0547\\\\236.8813\\\\331.01\\\\110.7422\\\\236.9438\\\\331.01\\\\117.7734\\\\236.8147\\\\331.01\\\\124.8047\\\\236.8069\\\\331.01\\\\131.8359\\\\236.8627\\\\331.01\\\\134.1797\\\\236.7867\\\\331.01\\\\141.2109\\\\236.7996\\\\331.01\\\\150.5859\\\\236.7134\\\\331.01\\\\152.9297\\\\236.7413\\\\331.01\\\\157.6172\\\\236.6997\\\\331.01\\\\162.3047\\\\236.7022\\\\331.01\\\\171.6797\\\\236.6496\\\\331.01\\\\181.0547\\\\236.6756\\\\331.01\\\\185.7422\\\\236.5877\\\\331.01\\\\190.4297\\\\236.5877\\\\331.01\\\\195.1172\\\\236.5409\\\\331.01\\\\199.8047\\\\236.5758\\\\331.01\\\\206.8359\\\\236.515\\\\331.01\\\\225.5859\\\\236.4299\\\\331.01\\\\227.9297\\\\236.4541\\\\331.01\\\\239.6484\\\\236.4137\\\\331.01\\\\246.6797\\\\236.4174\\\\331.01\\\\249.0234\\\\236.3047\\\\331.01\\\\251.3672\\\\235.5069\\\\331.01\\\\253.7109\\\\236.5074\\\\331.01\\\\254.3945\\\\237.0609\\\\331.01\\\\255.8271\\\\239.4047\\\\331.01\\\\255.6086\\\\241.7484\\\\331.01\\\\254.6224\\\\244.0922\\\\331.01\\\\253.7109\\\\245.1008\\\\331.01\\\\252.7054\\\\246.4359\\\\331.01\\\\251.3672\\\\248.4433\\\\331.01\\\\248.6766\\\\251.1234\\\\331.01\\\\246.6797\\\\253.313\\\\331.01\\\\244.3359\\\\255.5254\\\\331.01\\\\239.5975\\\\260.4984\\\\331.01\\\\232.5846\\\\267.5297\\\\331.01\\\\230.2734\\\\269.8828\\\\331.01\\\\227.9297\\\\272.1213\\\\331.01\\\\225.5859\\\\274.5504\\\\331.01\\\\218.4426\\\\281.5922\\\\331.01\\\\215.9517\\\\283.9359\\\\331.01\\\\213.5485\\\\286.2797\\\\331.01\\\\211.5234\\\\288.0286\\\\331.01\\\\209.1797\\\\289.5822\\\\331.01\\\\206.8359\\\\290.8047\\\\331.01\\\\199.8047\\\\290.6986\\\\331.01\\\\197.4609\\\\290.7428\\\\331.01\\\\195.1172\\\\290.1895\\\\331.01\\\\190.4297\\\\290.0456\\\\331.01\\\\185.7422\\\\289.9906\\\\331.01\\\\169.3359\\\\290.0001\\\\331.01\\\\166.9922\\\\289.9612\\\\331.01\\\\159.9609\\\\289.9643\\\\331.01\\\\152.9297\\\\289.9091\\\\331.01\\\\134.1797\\\\289.9193\\\\331.01\\\\129.4922\\\\289.8967\\\\331.01\\\\120.1172\\\\289.9292\\\\331.01\\\\113.0859\\\\289.8948\\\\331.01\\\\108.3984\\\\289.9267\\\\331.01\\\\96.67969\\\\289.8987\\\\331.01\\\\94.33594\\\\289.9418\\\\331.01\\\\87.30469\\\\289.9091\\\\331.01\\\\84.96094\\\\289.9418\\\\331.01\\\\77.92969\\\\289.9091\\\\331.01\\\\68.55469\\\\289.9418\\\\331.01\\\\63.86719\\\\289.8967\\\\331.01\\\\56.83594\\\\289.9418\\\\331.01\\\\52.14844\\\\289.9069\\\\331.01\\\\47.46094\\\\289.9418\\\\331.01\\\\42.77344\\\\289.8967\\\\331.01\\\\35.74219\\\\289.9292\\\\331.01\\\\16.99219\\\\289.9319\\\\331.01\\\\5.273438\\\\289.8967\\\\331.01\\\\2.929688\\\\289.9418\\\\331.01\\\\-1.757813\\\\289.9193\\\\331.01\\\\-11.13281\\\\289.9739\\\\331.01\\\\-22.85156\\\\289.9643\\\\331.01\\\\-32.22656\\\\290.0094\\\\331.01\\\\-36.91406\\\\290.0001\\\\331.01\\\\-43.94531\\\\290.0409\\\\331.01\\\\-53.32031\\\\290.0094\\\\331.01\\\\-62.69531\\\\290.0409\\\\331.01\\\\-72.07031\\\\290.032\\\\331.01\\\\-74.41406\\\\290.0545\\\\331.01\\\\-76.75781\\\\290.5839\\\\331.01\\\\-79.10156\\\\290.2641\\\\331.01\\\\-81.44531\\\\290.7153\\\\331.01\\\\-83.78906\\\\290.9129\\\\331.01\\\\-86.13281\\\\290.1897\\\\331.01\\\\-88.47656\\\\290.5401\\\\331.01\\\\-90.82031\\\\291.2065\\\\331.01\\\\-93.16406\\\\291.1611\\\\331.01\\\\-95.50781\\\\291.3054\\\\331.01\\\\-97.85156\\\\291.2781\\\\331.01\\\\-104.8828\\\\291.3188\\\\331.01\\\\-107.2266\\\\291.2918\\\\331.01\\\\-111.9141\\\\291.3319\\\\331.01\\\\-114.2578\\\\291.3054\\\\331.01\\\\-121.2891\\\\291.3578\\\\331.01\\\\-125.9766\\\\291.3319\\\\331.01\\\\-133.0078\\\\291.3954\\\\331.01\\\\-175.1953\\\\291.5322\\\\331.01\\\\-182.2266\\\\291.5427\\\\331.01\\\\-191.6016\\\\291.6034\\\\331.01\\\\-200.9766\\\\291.5935\\\\331.01\\\\-205.6641\\\\292.3098\\\\331.01\\\\-208.0078\\\\292.3435\\\\331.01\\\\-210.3516\\\\292.0615\\\\331.01\\\\-211.9404\\\\290.9672\\\\331.01\\\\-212.6953\\\\290.2194\\\\331.01\\\\-215.0391\\\\288.6748\\\\331.01\\\\-219.7266\\\\284.4174\\\\331.01\\\\-229.1016\\\\275.1351\\\\331.01\\\\-231.4453\\\\272.9203\\\\331.01\\\\-232.0349\\\\272.2172\\\\331.01\\\\-233.7891\\\\270.4738\\\\331.01\\\\-236.1328\\\\268.2849\\\\331.01\\\\-238.4766\\\\265.8145\\\\331.01\\\\-240.8203\\\\263.537\\\\331.01\\\\-243.7982\\\\260.4984\\\\331.01\\\\-247.8516\\\\256.5038\\\\331.01\\\\-250.1953\\\\254.0828\\\\331.01\\\\-252.5391\\\\251.896\\\\331.01\\\\-254.8828\\\\249.3695\\\\331.01\\\\-255.6047\\\\248.7797\\\\331.01\\\\-257.5359\\\\246.4359\\\\331.01\\\\-258.3608\\\\244.0922\\\\331.01\\\\-258.3411\\\\241.7484\\\\331.01\\\\-257.8627\\\\239.4047\\\\331.01\\\\-257.2266\\\\238.6151\\\\331.01\\\\-255.1194\\\\237.0609\\\\331.01\\\\-257.2266\\\\235.0688\\\\331.01\\\\-259.5703\\\\235.9095\\\\331.01\\\\-261.0516\\\\237.0609\\\\331.01\\\\-261.9141\\\\238.0086\\\\331.01\\\\-262.9709\\\\239.4047\\\\331.01\\\\-263.0859\\\\241.7484\\\\331.01\\\\-262.7175\\\\244.0922\\\\331.01\\\\-261.9141\\\\245.282\\\\331.01\\\\-259.5703\\\\248.3058\\\\331.01\\\\-259.0049\\\\248.7797\\\\331.01\\\\-255.4084\\\\253.4672\\\\331.01\\\\-252.5391\\\\256.6166\\\\331.01\\\\-250.1953\\\\258.8892\\\\331.01\\\\-247.8516\\\\261.3909\\\\331.01\\\\-246.2402\\\\262.8422\\\\331.01\\\\-244.0969\\\\265.1859\\\\331.01\\\\-241.6044\\\\267.5297\\\\331.01\\\\-239.4219\\\\269.8734\\\\331.01\\\\-237.0058\\\\272.2172\\\\331.01\\\\-231.4453\\\\277.8564\\\\331.01\\\\-229.8974\\\\279.2484\\\\331.01\\\\-226.7578\\\\282.5503\\\\331.01\\\\-225.2042\\\\283.9359\\\\331.01\\\\-222.0703\\\\287.2617\\\\331.01\\\\-220.5943\\\\288.6234\\\\331.01\\\\-218.3789\\\\290.9672\\\\331.01\\\\-215.0295\\\\293.3109\\\\331.01\\\\-212.6953\\\\294.6589\\\\331.01\\\\-210.3516\\\\295.2362\\\\331.01\\\\-209.869\\\\295.6547\\\\331.01\\\\-208.0078\\\\296.4917\\\\331.01\\\\-205.6641\\\\296.8928\\\\331.01\\\\-203.3203\\\\297.1297\\\\331.01\\\\-196.2891\\\\297.0883\\\\331.01\\\\-193.9453\\\\296.959\\\\331.01\\\\-182.2266\\\\296.9206\\\\331.01\\\\-177.5391\\\\296.8568\\\\331.01\\\\-165.8203\\\\296.85\\\\331.01\\\\-158.7891\\\\296.8757\\\\331.01\\\\-151.7578\\\\296.8266\\\\331.01\\\\-144.7266\\\\296.8852\\\\331.01\\\\-140.0391\\\\296.8437\\\\331.01\\\\-135.3516\\\\296.8618\\\\331.01\\\\-130.6641\\\\296.8089\\\\331.01\\\\-109.5703\\\\296.9242\\\\331.01\\\\-97.85156\\\\296.8545\\\\331.01\\\\-90.82031\\\\296.8927\\\\331.01\\\\-83.78906\\\\296.8837\\\\331.01\\\\-76.75781\\\\296.9409\\\\331.01\\\\-55.66406\\\\296.934\\\\331.01\\\\-50.97656\\\\296.9053\\\\331.01\\\\-43.94531\\\\296.9191\\\\331.01\\\\-39.25781\\\\297.0516\\\\331.01\\\\-36.91406\\\\296.8688\\\\331.01\\\\-32.22656\\\\296.9207\\\\331.01\\\\-27.53906\\\\296.8888\\\\331.01\\\\-25.19531\\\\297.2621\\\\331.01\\\\-22.85156\\\\296.8985\\\\331.01\\\\-18.16406\\\\296.9489\\\\331.01\\\\-15.82031\\\\297.2814\\\\331.01\\\\-13.47656\\\\296.9067\\\\331.01\\\\-8.789063\\\\296.9285\\\\331.01\\\\7.617188\\\\296.8574\\\\331.01\\\\12.30469\\\\296.8579\\\\331.01\\\\21.67969\\\\296.7843\\\\331.01\\\\38.08594\\\\296.734\\\\331.01\\\\54.49219\\\\296.7043\\\\331.01\\\\59.17969\\\\296.6518\\\\331.01\\\\70.89844\\\\296.6068\\\\331.01\\\\80.27344\\\\296.549\\\\331.01\\\\87.30469\\\\296.5412\\\\331.01\\\\94.33594\\\\296.5005\\\\331.01\\\\101.3672\\\\296.4257\\\\331.01\\\\103.7109\\\\296.4801\\\\331.01\\\\115.4297\\\\296.3782\\\\331.01\\\\124.8047\\\\296.3703\\\\331.01\\\\129.4922\\\\296.3288\\\\331.01\\\\131.8359\\\\295.9433\\\\331.01\\\\134.1797\\\\295.9857\\\\331.01\\\\138.8672\\\\295.864\\\\331.01\\\\143.5547\\\\295.939\\\\331.01\\\\145.8984\\\\295.864\\\\331.01\\\\152.9297\\\\295.8172\\\\331.01\\\\159.9609\\\\295.8172\\\\331.01\\\\164.6484\\\\295.7516\\\\331.01\\\\171.6797\\\\295.7173\\\\331.01\\\\176.3672\\\\295.6454\\\\331.01\\\\183.3984\\\\295.6998\\\\331.01\\\\188.0859\\\\295.5742\\\\331.01\\\\192.7734\\\\295.6093\\\\331.01\\\\197.4609\\\\295.8486\\\\331.01\\\\202.1484\\\\295.7849\\\\331.01\\\\204.4922\\\\295.4439\\\\331.01\\\\206.8359\\\\294.8185\\\\331.01\\\\209.1797\\\\294.3828\\\\331.01\\\\211.5234\\\\292.5155\\\\331.01\\\\213.8672\\\\291.2065\\\\331.01\\\\216.2109\\\\289.6192\\\\331.01\\\\217.2678\\\\288.6234\\\\331.01\\\\218.5547\\\\287.1143\\\\331.01\\\\221.8249\\\\283.9359\\\\331.01\\\\225.5859\\\\279.9988\\\\331.01\\\\227.9297\\\\277.6831\\\\331.01\\\\230.2734\\\\275.1513\\\\331.01\\\\233.3252\\\\272.2172\\\\331.01\\\\234.9609\\\\270.4053\\\\331.01\\\\237.8731\\\\267.5297\\\\331.01\\\\240.1012\\\\265.1859\\\\331.01\\\\242.4443\\\\262.8422\\\\331.01\\\\251.4558\\\\253.4672\\\\331.01\\\\253.4477\\\\251.1234\\\\331.01\\\\256.0547\\\\248.2287\\\\331.01\\\\257.4762\\\\246.4359\\\\331.01\\\\259.8178\\\\244.0922\\\\331.01\\\\261.7753\\\\239.4047\\\\331.01\\\\261.0251\\\\237.0609\\\\331.01\\\\259.4941\\\\234.7172\\\\331.01\\\\258.3984\\\\233.6932\\\\331.01\\\\256.0547\\\\233.0961\\\\331.01\\\\253.7109\\\\232.9379\\\\331.01\\\\251.3672\\\\233.7695\\\\331.01\\\\249.0234\\\\232.8723\\\\331.01\\\\246.6797\\\\232.8195\\\\331.01\\\\241.9922\\\\233.0305\\\\331.01\\\\237.3047\\\\233.0305\\\\331.01\\\\232.6172\\\\233.1001\\\\331.01\\\\227.9297\\\\233.0686\\\\331.01\\\\225.5859\\\\233.1001\\\\331.01\\\\220.8984\\\\233.0726\\\\331.01\\\\211.5234\\\\233.0726\\\\331.01\\\\206.8359\\\\233.0441\\\\331.01\\\\202.1484\\\\232.6179\\\\331.01\\\\195.1172\\\\232.7456\\\\331.01\\\\178.7109\\\\232.7719\\\\331.01\\\\174.0234\\\\232.7456\\\\331.01\\\\162.3047\\\\232.7322\\\\331.01\\\\157.6172\\\\232.7875\\\\331.01\\\\150.5859\\\\232.8253\\\\331.01\\\\143.5547\\\\232.8253\\\\331.01\\\\138.8672\\\\232.6643\\\\331.01\\\\131.8359\\\\232.6477\\\\331.01\\\\129.4922\\\\231.969\\\\331.01\\\\127.1484\\\\231.7258\\\\331.01\\\\124.8047\\\\231.7518\\\\331.01\\\\122.4609\\\\232.4013\\\\331.01\\\\120.1172\\\\232.6788\\\\331.01\\\\113.0859\\\\232.7875\\\\331.01\\\\108.3984\\\\232.7481\\\\331.01\\\\103.7109\\\\231.505\\\\331.01\\\\102.6762\\\\232.3734\\\\331.01\\\\101.3672\\\\233.0766\\\\331.01\\\\99.02344\\\\233.1483\\\\331.01\\\\96.67969\\\\233.1221\\\\331.01\\\\89.64844\\\\233.1483\\\\331.01\\\\84.96094\\\\233.1221\\\\331.01\\\\80.27344\\\\233.1483\\\\331.01\\\\75.58594\\\\233.131\\\\331.01\\\\61.52344\\\\233.1397\\\\331.01\\\\59.17969\\\\233.1736\\\\331.01\\\\54.49219\\\\233.131\\\\331.01\\\\47.46094\\\\233.1397\\\\331.01\\\\45.11719\\\\233.1132\\\\331.01\\\\44.1435\\\\232.3734\\\\331.01\\\\42.77344\\\\231.0613\\\\331.01\\\\42.00247\\\\230.0297\\\\331.01\\\\42.77344\\\\229.1878\\\\331.01\\\\45.11719\\\\228.3765\\\\331.01\\\\47.46094\\\\226.8637\\\\331.01\\\\49.80469\\\\225.7647\\\\331.01\\\\52.14844\\\\224.4265\\\\331.01\\\\54.49219\\\\223.3249\\\\331.01\\\\59.17969\\\\219.9393\\\\331.01\\\\61.52344\\\\218.3393\\\\331.01\\\\63.86719\\\\216.5828\\\\331.01\\\\66.21094\\\\214.673\\\\331.01\\\\67.32799\\\\213.6234\\\\331.01\\\\72.01612\\\\208.9359\\\\331.01\\\\74.09509\\\\206.5922\\\\331.01\\\\76.07555\\\\204.2484\\\\331.01\\\\77.53638\\\\201.9047\\\\331.01\\\\77.92969\\\\201.4729\\\\331.01\\\\81.07359\\\\197.2172\\\\331.01\\\\82.12826\\\\194.8734\\\\331.01\\\\82.61719\\\\194.3306\\\\331.01\\\\83.8237\\\\192.5297\\\\331.01\\\\84.79842\\\\190.1859\\\\331.01\\\\85.95763\\\\187.8422\\\\331.01\\\\86.92441\\\\185.4984\\\\331.01\\\\88.28735\\\\183.1547\\\\331.01\\\\88.71695\\\\180.8109\\\\331.01\\\\89.3761\\\\178.4672\\\\331.01\\\\90.33585\\\\176.1234\\\\331.01\\\\90.93139\\\\173.7797\\\\331.01\\\\91.42718\\\\171.4359\\\\331.01\\\\92.2997\\\\169.0922\\\\331.01\\\\92.84734\\\\166.7484\\\\331.01\\\\93.04629\\\\164.4047\\\\331.01\\\\93.26022\\\\157.3734\\\\331.01\\\\93.2657\\\\152.6859\\\\331.01\\\\93.16406\\\\147.9984\\\\331.01\\\\92.9856\\\\143.3109\\\\331.01\\\\92.63075\\\\140.9672\\\\331.01\\\\91.86198\\\\138.6234\\\\331.01\\\\91.20483\\\\136.2797\\\\331.01\\\\90.71938\\\\133.9359\\\\331.01\\\\90.07662\\\\131.5922\\\\331.01\\\\89.03426\\\\129.2484\\\\331.01\\\\88.59089\\\\126.9047\\\\331.01\\\\87.9126\\\\124.5609\\\\331.01\\\\86.48499\\\\122.2172\\\\331.01\\\\85.62569\\\\119.8734\\\\331.01\\\\84.24227\\\\117.5297\\\\331.01\\\\83.30611\\\\115.1859\\\\331.01\\\\81.58318\\\\112.8422\\\\331.01\\\\80.28274\\\\110.4984\\\\331.01\\\\78.78014\\\\108.1547\\\\331.01\\\\76.8465\\\\105.8109\\\\331.01\\\\75.58594\\\\104.1452\\\\331.01\\\\70.89844\\\\98.8085\\\\331.01\\\\68.55469\\\\96.42617\\\\331.01\\\\66.21094\\\\94.49095\\\\331.01\\\\63.14011\\\\91.74844\\\\331.01\\\\61.52344\\\\90.55122\\\\331.01\\\\59.17969\\\\88.55907\\\\331.01\\\\56.83594\\\\87.2702\\\\331.01\\\\54.49219\\\\85.83469\\\\331.01\\\\52.14844\\\\84.10928\\\\331.01\\\\49.80469\\\\83.22182\\\\331.01\\\\47.46094\\\\81.90617\\\\331.01\\\\45.11719\\\\80.96379\\\\331.01\\\\43.32682\\\\80.02969\\\\331.01\\\\42.77344\\\\79.62586\\\\331.01\\\\40.42969\\\\78.84627\\\\331.01\\\\38.08594\\\\78.46938\\\\331.01\\\\33.39844\\\\76.78945\\\\331.01\\\\28.71094\\\\75.85264\\\\331.01\\\\26.36719\\\\75.06985\\\\331.01\\\\24.02344\\\\74.54173\\\\331.01\\\\21.67969\\\\74.41319\\\\331.01\\\\14.64844\\\\74.19387\\\\331.01\\\\12.30469\\\\74.18209\\\\331.01\\\\7.617188\\\\74.26453\\\\331.01\\\\2.929688\\\\74.44027\\\\331.01\\\\0.5859375\\\\74.71766\\\\331.01\\\\-4.101563\\\\76.07934\\\\331.01\\\\-6.445313\\\\76.52496\\\\331.01\\\\-8.789063\\\\77.12093\\\\331.01\\\\-11.13281\\\\78.13784\\\\331.01\\\\-15.82031\\\\79.21476\\\\331.01\\\\-18.16406\\\\80.64018\\\\331.01\\\\-20.50781\\\\81.58089\\\\331.01\\\\-22.85156\\\\82.93452\\\\331.01\\\\-25.19531\\\\83.7171\\\\331.01\\\\-27.53906\\\\85.53682\\\\331.01\\\\-29.88281\\\\86.56181\\\\331.01\\\\-32.22656\\\\88.24535\\\\331.01\\\\-34.57031\\\\90.17438\\\\331.01\\\\-36.86355\\\\91.74844\\\\331.01\\\\-39.25781\\\\93.65373\\\\331.01\\\\-41.60156\\\\95.64732\\\\331.01\\\\-43.94531\\\\98.08269\\\\331.01\\\\-46.99951\\\\101.1234\\\\331.01\\\\-50.52413\\\\105.8109\\\\331.01\\\\-50.97656\\\\106.3405\\\\331.01\\\\-53.99293\\\\110.4984\\\\331.01\\\\-56.84198\\\\115.1859\\\\331.01\\\\-57.84288\\\\117.5297\\\\331.01\\\\-59.19744\\\\119.8734\\\\331.01\\\\-60.39734\\\\122.2172\\\\331.01\\\\-61.32914\\\\124.5609\\\\331.01\\\\-61.87757\\\\126.9047\\\\331.01\\\\-63.0335\\\\129.2484\\\\331.01\\\\-63.83955\\\\131.5922\\\\331.01\\\\-64.25171\\\\133.9359\\\\331.01\\\\-65.59342\\\\138.6234\\\\331.01\\\\-66.13319\\\\143.3109\\\\331.01\\\\-66.54406\\\\147.9984\\\\331.01\\\\-66.85014\\\\152.6859\\\\331.01\\\\-66.87236\\\\155.0297\\\\331.01\\\\-66.69005\\\\159.7172\\\\331.01\\\\-66.30065\\\\164.4047\\\\331.01\\\\-65.77621\\\\169.0922\\\\331.01\\\\-65.40382\\\\171.4359\\\\331.01\\\\-64.53993\\\\173.7797\\\\331.01\\\\-64.07877\\\\176.1234\\\\331.01\\\\-63.49142\\\\178.4672\\\\331.01\\\\-62.30469\\\\180.8109\\\\331.01\\\\-61.53546\\\\183.1547\\\\331.01\\\\-61.04526\\\\185.4984\\\\331.01\\\\-59.60582\\\\187.8422\\\\331.01\\\\-58.66488\\\\190.1859\\\\331.01\\\\-57.16698\\\\192.5297\\\\331.01\\\\-56.36295\\\\194.8734\\\\331.01\\\\-55.66406\\\\195.7081\\\\331.01\\\\-53.32031\\\\199.0835\\\\331.01\\\\-52.89063\\\\199.5609\\\\331.01\\\\-51.73193\\\\201.9047\\\\331.01\\\\-49.63058\\\\204.2484\\\\331.01\\\\-47.6863\\\\206.5922\\\\331.01\\\\-45.43213\\\\208.9359\\\\331.01\\\\-43.27911\\\\211.2797\\\\331.01\\\\-41.60156\\\\212.8009\\\\331.01\\\\-39.25781\\\\215.0557\\\\331.01\\\\-36.91406\\\\216.9837\\\\331.01\\\\-34.57031\\\\219.0804\\\\331.01\\\\-32.22656\\\\220.3119\\\\331.01\\\\-29.88281\\\\221.9844\\\\331.01\\\\-27.53906\\\\223.8002\\\\331.01\\\\-25.19531\\\\224.6377\\\\331.01\\\\-22.85156\\\\226.1792\\\\331.01\\\\-20.50781\\\\227.1868\\\\331.01\\\\-18.16406\\\\228.6441\\\\331.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851133730200001.543478973601\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n";
+const char* k_rtStruct_json05 =
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"567\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"20\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-15.98772\\\\230.0297\\\\334.01\\\\-18.16406\\\\232.5688\\\\334.01\\\\-20.50781\\\\233.1397\\\\334.01\\\\-34.57031\\\\233.1397\\\\334.01\\\\-41.60156\\\\233.1981\\\\334.01\\\\-46.28906\\\\233.1652\\\\334.01\\\\-50.97656\\\\233.2061\\\\334.01\\\\-62.69531\\\\233.1981\\\\334.01\\\\-67.38281\\\\232.9839\\\\334.01\\\\-72.07031\\\\233.0766\\\\334.01\\\\-81.44531\\\\233.1042\\\\334.01\\\\-86.13281\\\\233.0766\\\\334.01\\\\-90.82031\\\\233.131\\\\334.01\\\\-93.16406\\\\233.4871\\\\334.01\\\\-95.50781\\\\233.1884\\\\334.01\\\\-97.85156\\\\234.1127\\\\334.01\\\\-104.8828\\\\234.2828\\\\334.01\\\\-107.2266\\\\234.215\\\\334.01\\\\-109.5703\\\\234.2828\\\\334.01\\\\-116.6016\\\\234.2703\\\\334.01\\\\-121.2891\\\\234.303\\\\334.01\\\\-130.6641\\\\234.2081\\\\334.01\\\\-133.0078\\\\234.2426\\\\334.01\\\\-137.6953\\\\234.2081\\\\334.01\\\\-142.3828\\\\234.3198\\\\334.01\\\\-147.0703\\\\234.2191\\\\334.01\\\\-156.4453\\\\234.1685\\\\334.01\\\\-158.7891\\\\234.2273\\\\334.01\\\\-161.1328\\\\234.1641\\\\334.01\\\\-165.8203\\\\234.1641\\\\334.01\\\\-168.1641\\\\234.3426\\\\334.01\\\\-175.1953\\\\234.3328\\\\334.01\\\\-177.5391\\\\234.381\\\\334.01\\\\-179.8828\\\\234.3426\\\\334.01\\\\-186.9141\\\\234.3837\\\\334.01\\\\-189.2578\\\\234.3359\\\\334.01\\\\-193.9453\\\\234.4194\\\\334.01\\\\-198.6328\\\\234.4053\\\\334.01\\\\-200.9766\\\\234.4535\\\\334.01\\\\-203.3203\\\\234.4053\\\\334.01\\\\-208.0078\\\\234.4078\\\\334.01\\\\-212.6953\\\\234.5484\\\\334.01\\\\-215.0391\\\\234.5301\\\\334.01\\\\-219.7266\\\\234.6855\\\\334.01\\\\-224.4141\\\\234.6051\\\\334.01\\\\-231.4453\\\\234.5285\\\\334.01\\\\-243.1641\\\\234.1437\\\\334.01\\\\-247.8516\\\\233.6847\\\\334.01\\\\-250.1953\\\\233.672\\\\334.01\\\\-252.0368\\\\234.7172\\\\334.01\\\\-252.5391\\\\236.6006\\\\334.01\\\\-253.2552\\\\237.0609\\\\334.01\\\\-252.5391\\\\237.1579\\\\334.01\\\\-250.1953\\\\238.0169\\\\334.01\\\\-247.8516\\\\238.0779\\\\334.01\\\\-243.1641\\\\238.0359\\\\334.01\\\\-222.0703\\\\238.0611\\\\334.01\\\\-215.0391\\\\238.1343\\\\334.01\\\\-210.3516\\\\238.1037\\\\334.01\\\\-203.3203\\\\238.1419\\\\334.01\\\\-193.9453\\\\238.1633\\\\334.01\\\\-186.9141\\\\238.0901\\\\334.01\\\\-175.1953\\\\238.2427\\\\334.01\\\\-163.4766\\\\238.1727\\\\334.01\\\\-156.4453\\\\238.2124\\\\334.01\\\\-144.7266\\\\238.192\\\\334.01\\\\-142.3828\\\\238.2328\\\\334.01\\\\-137.6953\\\\238.1927\\\\334.01\\\\-114.2578\\\\238.2009\\\\334.01\\\\-109.5703\\\\238.1609\\\\334.01\\\\-102.5391\\\\238.202\\\\334.01\\\\-97.85156\\\\238.1609\\\\334.01\\\\-93.16406\\\\238.1906\\\\334.01\\\\-88.47656\\\\238.1369\\\\334.01\\\\-86.13281\\\\238.1695\\\\334.01\\\\-81.44531\\\\238.1483\\\\334.01\\\\-76.75781\\\\238.1913\\\\334.01\\\\-67.38281\\\\238.1386\\\\334.01\\\\-65.03906\\\\238.1596\\\\334.01\\\\-53.32031\\\\238.1197\\\\334.01\\\\-43.94531\\\\238.1498\\\\334.01\\\\-32.22656\\\\238.1197\\\\334.01\\\\-25.19531\\\\238.1483\\\\334.01\\\\-22.85156\\\\238.1084\\\\334.01\\\\-18.16406\\\\238.1483\\\\334.01\\\\-8.789063\\\\238.1156\\\\334.01\\\\-1.757813\\\\238.1483\\\\334.01\\\\2.929688\\\\238.1177\\\\334.01\\\\14.64844\\\\238.1369\\\\334.01\\\\28.71094\\\\238.073\\\\334.01\\\\42.77344\\\\237.9922\\\\334.01\\\\47.46094\\\\238.0047\\\\334.01\\\\54.49219\\\\237.9503\\\\334.01\\\\61.52344\\\\237.9583\\\\334.01\\\\66.21094\\\\237.9084\\\\334.01\\\\70.89844\\\\237.9294\\\\334.01\\\\77.92969\\\\237.9084\\\\334.01\\\\82.61719\\\\237.9318\\\\334.01\\\\84.96094\\\\237.4483\\\\334.01\\\\87.30469\\\\237.4347\\\\334.01\\\\89.64844\\\\237.735\\\\334.01\\\\91.99219\\\\236.9602\\\\334.01\\\\96.67969\\\\236.8598\\\\334.01\\\\99.02344\\\\236.9089\\\\334.01\\\\103.7109\\\\236.9145\\\\334.01\\\\108.3984\\\\236.8773\\\\334.01\\\\113.0859\\\\236.9438\\\\334.01\\\\117.7734\\\\236.8147\\\\334.01\\\\127.1484\\\\236.8051\\\\334.01\\\\131.8359\\\\236.88\\\\334.01\\\\136.5234\\\\236.7721\\\\334.01\\\\141.2109\\\\236.7996\\\\334.01\\\\143.5547\\\\236.7556\\\\334.01\\\\152.9297\\\\236.7134\\\\334.01\\\\155.2734\\\\236.673\\\\334.01\\\\159.9609\\\\236.7413\\\\334.01\\\\174.0234\\\\236.612\\\\334.01\\\\176.3672\\\\236.6756\\\\334.01\\\\181.0547\\\\236.6625\\\\334.01\\\\185.7422\\\\236.564\\\\334.01\\\\190.4297\\\\236.5997\\\\334.01\\\\197.4609\\\\236.5524\\\\334.01\\\\199.8047\\\\236.5758\\\\334.01\\\\206.8359\\\\236.493\\\\334.01\\\\225.5859\\\\236.4299\\\\334.01\\\\244.3359\\\\236.4273\\\\334.01\\\\249.0234\\\\236.379\\\\334.01\\\\251.3672\\\\235.5749\\\\334.01\\\\253.7109\\\\236.4964\\\\334.01\\\\254.4123\\\\237.0609\\\\334.01\\\\255.858\\\\239.4047\\\\334.01\\\\255.6086\\\\241.7484\\\\334.01\\\\254.6009\\\\244.0922\\\\334.01\\\\253.7109\\\\245.0623\\\\334.01\\\\252.6891\\\\246.4359\\\\334.01\\\\251.3672\\\\248.4433\\\\334.01\\\\248.6766\\\\251.1234\\\\334.01\\\\246.6797\\\\253.2569\\\\334.01\\\\244.3359\\\\255.5082\\\\334.01\\\\241.9922\\\\258.0435\\\\334.01\\\\239.6484\\\\260.3833\\\\334.01\\\\237.3047\\\\262.8111\\\\334.01\\\\234.9609\\\\265.1107\\\\334.01\\\\232.6172\\\\267.5191\\\\334.01\\\\225.5957\\\\274.5609\\\\334.01\\\\220.7587\\\\279.2484\\\\334.01\\\\218.4622\\\\281.5922\\\\334.01\\\\215.9334\\\\283.9359\\\\334.01\\\\213.5136\\\\286.2797\\\\334.01\\\\211.5234\\\\288.0286\\\\334.01\\\\209.1797\\\\289.5707\\\\334.01\\\\206.8359\\\\290.8047\\\\334.01\\\\204.4922\\\\290.8047\\\\334.01\\\\199.8047\\\\290.7131\\\\334.01\\\\197.4609\\\\290.7579\\\\334.01\\\\195.1172\\\\290.4285\\\\334.01\\\\192.7734\\\\290.6412\\\\334.01\\\\190.4297\\\\290.0366\\\\334.01\\\\183.3984\\\\289.9869\\\\334.01\\\\176.3672\\\\290.0042\\\\334.01\\\\169.3359\\\\289.9643\\\\334.01\\\\159.9609\\\\289.9643\\\\334.01\\\\155.2734\\\\289.9193\\\\334.01\\\\150.5859\\\\289.9418\\\\334.01\\\\145.8984\\\\289.8967\\\\334.01\\\\136.5234\\\\289.9516\\\\334.01\\\\131.8359\\\\289.9091\\\\334.01\\\\124.8047\\\\289.939\\\\334.01\\\\110.7422\\\\289.9091\\\\334.01\\\\96.67969\\\\289.9193\\\\334.01\\\\91.99219\\\\289.9418\\\\334.01\\\\77.92969\\\\289.9217\\\\334.01\\\\63.86719\\\\289.9193\\\\334.01\\\\54.49219\\\\289.9418\\\\334.01\\\\52.14844\\\\289.9169\\\\334.01\\\\45.11719\\\\289.9292\\\\334.01\\\\33.39844\\\\289.8967\\\\334.01\\\\28.71094\\\\289.939\\\\334.01\\\\19.33594\\\\289.9319\\\\334.01\\\\16.99219\\\\289.9546\\\\334.01\\\\7.617188\\\\289.9193\\\\334.01\\\\2.929688\\\\289.9447\\\\334.01\\\\-1.757813\\\\289.9193\\\\334.01\\\\-11.13281\\\\289.9643\\\\334.01\\\\-15.82031\\\\289.9418\\\\334.01\\\\-20.50781\\\\289.9832\\\\334.01\\\\-32.22656\\\\289.9925\\\\334.01\\\\-34.57031\\\\289.9739\\\\334.01\\\\-41.60156\\\\290.0363\\\\334.01\\\\-46.28906\\\\290.0001\\\\334.01\\\\-55.66406\\\\290.0275\\\\334.01\\\\-60.35156\\\\290.0094\\\\334.01\\\\-67.38281\\\\290.0366\\\\334.01\\\\-69.72656\\\\290.8044\\\\334.01\\\\-72.07031\\\\290.032\\\\334.01\\\\-74.41406\\\\290.0632\\\\334.01\\\\-76.75781\\\\291.0641\\\\334.01\\\\-79.10156\\\\290.6554\\\\334.01\\\\-81.44531\\\\291.2212\\\\334.01\\\\-86.13281\\\\291.2357\\\\334.01\\\\-88.47656\\\\290.1748\\\\334.01\\\\-90.82031\\\\291.2501\\\\334.01\\\\-102.5391\\\\291.2918\\\\334.01\\\\-104.8828\\\\291.2642\\\\334.01\\\\-107.4707\\\\290.9672\\\\334.01\\\\-109.5703\\\\291.3054\\\\334.01\\\\-114.2578\\\\291.3054\\\\334.01\\\\-118.9453\\\\291.3578\\\\334.01\\\\-125.9766\\\\291.345\\\\334.01\\\\-130.6641\\\\291.3954\\\\334.01\\\\-140.0391\\\\291.3954\\\\334.01\\\\-151.7578\\\\291.4549\\\\334.01\\\\-163.4766\\\\291.4776\\\\334.01\\\\-168.1641\\\\291.5108\\\\334.01\\\\-184.5703\\\\291.5531\\\\334.01\\\\-189.2578\\\\291.5836\\\\334.01\\\\-196.2891\\\\291.5836\\\\334.01\\\\-198.6328\\\\291.8617\\\\334.01\\\\-200.9766\\\\291.6205\\\\334.01\\\\-203.3203\\\\292.0964\\\\334.01\\\\-205.6641\\\\292.3344\\\\334.01\\\\-208.0078\\\\292.3654\\\\334.01\\\\-210.3516\\\\292.0912\\\\334.01\\\\-212.1875\\\\290.9672\\\\334.01\\\\-215.0391\\\\288.6954\\\\334.01\\\\-217.3828\\\\286.5314\\\\334.01\\\\-219.7266\\\\284.4869\\\\334.01\\\\-222.0703\\\\282.1065\\\\334.01\\\\-225.0175\\\\279.2484\\\\334.01\\\\-227.3079\\\\276.9047\\\\334.01\\\\-229.8221\\\\274.5609\\\\334.01\\\\-231.4453\\\\272.9496\\\\334.01\\\\-232.0564\\\\272.2172\\\\334.01\\\\-233.7891\\\\270.4845\\\\334.01\\\\-236.1328\\\\268.3081\\\\334.01\\\\-238.4766\\\\265.837\\\\334.01\\\\-240.8203\\\\263.5652\\\\334.01\\\\-243.8257\\\\260.4984\\\\334.01\\\\-246.2413\\\\258.1547\\\\334.01\\\\-248.4672\\\\255.8109\\\\334.01\\\\-250.9794\\\\253.4672\\\\334.01\\\\-252.5391\\\\251.9189\\\\334.01\\\\-254.8828\\\\249.4032\\\\334.01\\\\-255.6368\\\\248.7797\\\\334.01\\\\-257.6019\\\\246.4359\\\\334.01\\\\-258.3731\\\\244.0922\\\\334.01\\\\-258.3472\\\\241.7484\\\\334.01\\\\-257.8529\\\\239.4047\\\\334.01\\\\-257.2266\\\\238.6262\\\\334.01\\\\-255.1592\\\\237.0609\\\\334.01\\\\-257.2266\\\\235.0319\\\\334.01\\\\-259.5703\\\\235.8942\\\\334.01\\\\-261.0516\\\\237.0609\\\\334.01\\\\-261.9141\\\\237.997\\\\334.01\\\\-262.9828\\\\239.4047\\\\334.01\\\\-263.0954\\\\241.7484\\\\334.01\\\\-262.7562\\\\244.0922\\\\334.01\\\\-261.9141\\\\245.3244\\\\334.01\\\\-259.5703\\\\248.3447\\\\334.01\\\\-259.0576\\\\248.7797\\\\334.01\\\\-255.4217\\\\253.4672\\\\334.01\\\\-252.5391\\\\256.6166\\\\334.01\\\\-250.1953\\\\258.8944\\\\334.01\\\\-247.8516\\\\261.3969\\\\334.01\\\\-245.5078\\\\263.5919\\\\334.01\\\\-244.0908\\\\265.1859\\\\334.01\\\\-241.5988\\\\267.5297\\\\334.01\\\\-239.4375\\\\269.8734\\\\334.01\\\\-237\\\\272.2172\\\\334.01\\\\-231.4453\\\\277.8564\\\\334.01\\\\-229.8857\\\\279.2484\\\\334.01\\\\-227.7252\\\\281.5922\\\\334.01\\\\-225.2042\\\\283.9359\\\\334.01\\\\-222.0703\\\\287.2521\\\\334.01\\\\-220.5943\\\\288.6234\\\\334.01\\\\-218.3814\\\\290.9672\\\\334.01\\\\-215.0391\\\\293.3202\\\\334.01\\\\-212.6953\\\\294.6652\\\\334.01\\\\-210.3516\\\\295.2812\\\\334.01\\\\-209.947\\\\295.6547\\\\334.01\\\\-208.0078\\\\296.5075\\\\334.01\\\\-205.6641\\\\296.8852\\\\334.01\\\\-203.3203\\\\297.1267\\\\334.01\\\\-196.2891\\\\297.0739\\\\334.01\\\\-193.9453\\\\296.9265\\\\334.01\\\\-182.2266\\\\296.9128\\\\334.01\\\\-179.8828\\\\296.8785\\\\334.01\\\\-170.5078\\\\296.8576\\\\334.01\\\\-156.4453\\\\296.8931\\\\334.01\\\\-151.7578\\\\296.8432\\\\334.01\\\\-147.0703\\\\296.894\\\\334.01\\\\-140.0391\\\\296.8608\\\\334.01\\\\-135.3516\\\\296.8709\\\\334.01\\\\-130.6641\\\\296.8266\\\\334.01\\\\-118.9453\\\\296.8981\\\\334.01\\\\-114.2578\\\\296.8981\\\\334.01\\\\-109.5703\\\\296.942\\\\334.01\\\\-97.85156\\\\296.8828\\\\334.01\\\\-86.13281\\\\296.9218\\\\334.01\\\\-79.10156\\\\296.913\\\\334.01\\\\-76.75781\\\\296.9514\\\\334.01\\\\-67.38281\\\\296.9953\\\\334.01\\\\-58.00781\\\\296.934\\\\334.01\\\\-55.66406\\\\297.1698\\\\334.01\\\\-53.32031\\\\297.1516\\\\334.01\\\\-50.97656\\\\296.9358\\\\334.01\\\\-43.94531\\\\296.9285\\\\334.01\\\\-39.25781\\\\296.9899\\\\334.01\\\\-36.91406\\\\296.8888\\\\334.01\\\\-34.57031\\\\296.8998\\\\334.01\\\\-32.22656\\\\297.252\\\\334.01\\\\-29.88281\\\\296.9011\\\\334.01\\\\-27.53906\\\\296.8789\\\\334.01\\\\-25.19531\\\\297.3806\\\\334.01\\\\-22.85156\\\\297.2719\\\\334.01\\\\-20.50781\\\\297.0591\\\\334.01\\\\-18.16406\\\\297.0665\\\\334.01\\\\-15.82031\\\\296.9285\\\\334.01\\\\-13.47656\\\\296.9377\\\\334.01\\\\-11.13281\\\\297.0627\\\\334.01\\\\-8.789063\\\\296.9095\\\\334.01\\\\-1.757813\\\\296.9095\\\\334.01\\\\7.617188\\\\296.8473\\\\334.01\\\\24.02344\\\\296.8058\\\\334.01\\\\28.71094\\\\296.7421\\\\334.01\\\\31.05469\\\\296.7743\\\\334.01\\\\40.42969\\\\296.7229\\\\334.01\\\\47.46094\\\\296.7229\\\\334.01\\\\61.52344\\\\296.6346\\\\334.01\\\\63.86719\\\\296.6518\\\\334.01\\\\68.55469\\\\296.5942\\\\334.01\\\\75.58594\\\\296.582\\\\334.01\\\\80.27344\\\\296.5412\\\\334.01\\\\87.30469\\\\296.5412\\\\334.01\\\\94.33594\\\\296.4668\\\\334.01\\\\101.3672\\\\296.4257\\\\334.01\\\\103.7109\\\\296.4597\\\\334.01\\\\108.3984\\\\296.4051\\\\334.01\\\\113.0859\\\\296.4393\\\\334.01\\\\122.4609\\\\296.3578\\\\334.01\\\\129.4922\\\\296.3288\\\\334.01\\\\131.8359\\\\295.9278\\\\334.01\\\\134.1797\\\\296.1292\\\\334.01\\\\136.5234\\\\296.0546\\\\334.01\\\\138.8672\\\\295.8486\\\\334.01\\\\143.5547\\\\295.8172\\\\334.01\\\\155.2734\\\\295.833\\\\334.01\\\\166.9922\\\\295.7684\\\\334.01\\\\174.0234\\\\295.6454\\\\334.01\\\\178.7109\\\\295.6819\\\\334.01\\\\183.3984\\\\295.6638\\\\334.01\\\\188.0859\\\\295.5916\\\\334.01\\\\192.7734\\\\295.6093\\\\334.01\\\\197.4609\\\\295.833\\\\334.01\\\\202.1484\\\\295.8172\\\\334.01\\\\204.4922\\\\295.4439\\\\334.01\\\\206.8359\\\\294.803\\\\334.01\\\\209.1797\\\\294.3717\\\\334.01\\\\211.5234\\\\292.5155\\\\334.01\\\\213.8672\\\\291.1916\\\\334.01\\\\216.2109\\\\289.5954\\\\334.01\\\\217.2437\\\\288.6234\\\\334.01\\\\218.5547\\\\287.1034\\\\334.01\\\\221.7932\\\\283.9359\\\\334.01\\\\225.5859\\\\279.9242\\\\334.01\\\\227.9297\\\\277.6213\\\\334.01\\\\230.2734\\\\275.1202\\\\334.01\\\\233.3138\\\\272.2172\\\\334.01\\\\234.9609\\\\270.3912\\\\334.01\\\\237.8462\\\\267.5297\\\\334.01\\\\240.0901\\\\265.1859\\\\334.01\\\\242.4443\\\\262.8422\\\\334.01\\\\246.6797\\\\258.431\\\\334.01\\\\249.248\\\\255.8109\\\\334.01\\\\251.4581\\\\253.4672\\\\334.01\\\\253.4629\\\\251.1234\\\\334.01\\\\256.0547\\\\248.2519\\\\334.01\\\\257.4878\\\\246.4359\\\\334.01\\\\259.8235\\\\244.0922\\\\334.01\\\\260.8724\\\\241.7484\\\\334.01\\\\261.781\\\\239.4047\\\\334.01\\\\261.0668\\\\237.0609\\\\334.01\\\\259.4941\\\\234.7172\\\\334.01\\\\258.3984\\\\233.6932\\\\334.01\\\\256.0547\\\\233.1227\\\\334.01\\\\253.7109\\\\232.9594\\\\334.01\\\\251.3672\\\\233.6412\\\\334.01\\\\249.0234\\\\232.7692\\\\334.01\\\\246.6797\\\\232.7821\\\\334.01\\\\241.9922\\\\233.0207\\\\334.01\\\\237.3047\\\\233.0207\\\\334.01\\\\232.6172\\\\233.091\\\\334.01\\\\230.2734\\\\233.0592\\\\334.01\\\\225.5859\\\\233.0819\\\\334.01\\\\216.2109\\\\233.0726\\\\334.01\\\\206.8359\\\\233.0245\\\\334.01\\\\204.4922\\\\232.8704\\\\334.01\\\\202.1484\\\\232.6027\\\\334.01\\\\199.8047\\\\232.6623\\\\334.01\\\\192.7734\\\\232.7456\\\\334.01\\\\183.3984\\\\232.7719\\\\334.01\\\\181.0547\\\\232.7456\\\\334.01\\\\169.3359\\\\232.7186\\\\334.01\\\\164.6484\\\\232.7588\\\\334.01\\\\150.5859\\\\232.8129\\\\334.01\\\\141.2109\\\\232.7746\\\\334.01\\\\138.8672\\\\232.6788\\\\334.01\\\\134.1797\\\\232.6477\\\\334.01\\\\129.4922\\\\231.8537\\\\334.01\\\\127.1484\\\\231.9275\\\\334.01\\\\124.8047\\\\231.7976\\\\334.01\\\\120.1172\\\\232.7071\\\\334.01\\\\113.0859\\\\232.8253\\\\334.01\\\\108.3984\\\\232.8003\\\\334.01\\\\106.0547\\\\232.6477\\\\334.01\\\\103.7109\\\\231.6597\\\\334.01\\\\102.765\\\\232.3734\\\\334.01\\\\101.3672\\\\233.0479\\\\334.01\\\\99.02344\\\\233.1568\\\\334.01\\\\91.99219\\\\233.131\\\\334.01\\\\82.61719\\\\233.1483\\\\334.01\\\\66.21094\\\\233.131\\\\334.01\\\\61.52344\\\\233.1568\\\\334.01\\\\45.11719\\\\233.1132\\\\334.01\\\\44.13628\\\\232.3734\\\\334.01\\\\42.77344\\\\231.0868\\\\334.01\\\\41.98608\\\\230.0297\\\\334.01\\\\42.77344\\\\229.1708\\\\334.01\\\\45.11719\\\\228.3666\\\\334.01\\\\47.46094\\\\226.8342\\\\334.01\\\\49.80469\\\\225.7806\\\\334.01\\\\52.14844\\\\224.4214\\\\334.01\\\\54.49219\\\\223.3104\\\\334.01\\\\59.17969\\\\219.9071\\\\334.01\\\\61.51359\\\\218.3109\\\\334.01\\\\63.86719\\\\216.5456\\\\334.01\\\\66.21094\\\\214.6382\\\\334.01\\\\67.29213\\\\213.6234\\\\334.01\\\\71.99537\\\\208.9359\\\\334.01\\\\76.04661\\\\204.2484\\\\334.01\\\\77.48438\\\\201.9047\\\\334.01\\\\77.92969\\\\201.4099\\\\334.01\\\\81.04408\\\\197.2172\\\\334.01\\\\82.10064\\\\194.8734\\\\334.01\\\\82.61719\\\\194.2786\\\\334.01\\\\83.77148\\\\192.5297\\\\334.01\\\\84.75167\\\\190.1859\\\\334.01\\\\85.91919\\\\187.8422\\\\334.01\\\\86.84645\\\\185.4984\\\\334.01\\\\88.24593\\\\183.1547\\\\334.01\\\\88.69778\\\\180.8109\\\\334.01\\\\89.31935\\\\178.4672\\\\334.01\\\\90.28825\\\\176.1234\\\\334.01\\\\90.88572\\\\173.7797\\\\334.01\\\\91.32725\\\\171.4359\\\\334.01\\\\92.09135\\\\169.0922\\\\334.01\\\\92.73549\\\\166.7484\\\\334.01\\\\93.00426\\\\164.4047\\\\334.01\\\\93.15228\\\\159.7172\\\\334.01\\\\93.21165\\\\155.0297\\\\334.01\\\\93.16998\\\\150.3422\\\\334.01\\\\93.04629\\\\145.6547\\\\334.01\\\\92.89885\\\\143.3109\\\\334.01\\\\92.4685\\\\140.9672\\\\334.01\\\\91.65399\\\\138.6234\\\\334.01\\\\90.63558\\\\133.9359\\\\334.01\\\\89.94542\\\\131.5922\\\\334.01\\\\88.9603\\\\129.2484\\\\334.01\\\\88.56628\\\\126.9047\\\\334.01\\\\87.77809\\\\124.5609\\\\334.01\\\\86.38477\\\\122.2172\\\\334.01\\\\85.54688\\\\119.8734\\\\334.01\\\\84.18599\\\\117.5297\\\\334.01\\\\83.21418\\\\115.1859\\\\334.01\\\\81.51971\\\\112.8422\\\\334.01\\\\80.27344\\\\110.6408\\\\334.01\\\\78.70409\\\\108.1547\\\\334.01\\\\77.92969\\\\107.2539\\\\334.01\\\\75.58594\\\\104.2182\\\\334.01\\\\70.89844\\\\98.90157\\\\334.01\\\\68.45073\\\\96.43594\\\\334.01\\\\66.21094\\\\94.55936\\\\334.01\\\\63.09443\\\\91.74844\\\\334.01\\\\61.52344\\\\90.59526\\\\334.01\\\\59.17969\\\\88.5986\\\\334.01\\\\56.83594\\\\87.31498\\\\334.01\\\\54.49219\\\\85.86478\\\\334.01\\\\52.14844\\\\84.14245\\\\334.01\\\\49.80469\\\\83.22958\\\\334.01\\\\47.46094\\\\81.94525\\\\334.01\\\\45.11719\\\\80.9931\\\\334.01\\\\43.27874\\\\80.02969\\\\334.01\\\\42.77344\\\\79.65244\\\\334.01\\\\40.42969\\\\78.85207\\\\334.01\\\\38.08594\\\\78.4912\\\\334.01\\\\35.74219\\\\77.58901\\\\334.01\\\\33.39844\\\\76.8085\\\\334.01\\\\28.71094\\\\75.86382\\\\334.01\\\\26.36719\\\\75.08454\\\\334.01\\\\24.02344\\\\74.55878\\\\334.01\\\\21.67969\\\\74.41319\\\\334.01\\\\14.64844\\\\74.18806\\\\334.01\\\\7.617188\\\\74.26453\\\\334.01\\\\2.929688\\\\74.44027\\\\334.01\\\\0.5859375\\\\74.70742\\\\334.01\\\\-4.101563\\\\76.08793\\\\334.01\\\\-6.445313\\\\76.51406\\\\334.01\\\\-8.789063\\\\77.1104\\\\334.01\\\\-11.13281\\\\78.11278\\\\334.01\\\\-15.82031\\\\79.19739\\\\334.01\\\\-18.16406\\\\80.65051\\\\334.01\\\\-20.50781\\\\81.58109\\\\334.01\\\\-22.85156\\\\82.92365\\\\334.01\\\\-25.19531\\\\83.7171\\\\334.01\\\\-27.53906\\\\85.51434\\\\334.01\\\\-29.88281\\\\86.55049\\\\334.01\\\\-32.22656\\\\88.22651\\\\334.01\\\\-34.57031\\\\90.14594\\\\334.01\\\\-36.91406\\\\91.72009\\\\334.01\\\\-41.60156\\\\95.61852\\\\334.01\\\\-47.01968\\\\101.1234\\\\334.01\\\\-50.97656\\\\106.2919\\\\334.01\\\\-54.02066\\\\110.4984\\\\334.01\\\\-55.66406\\\\113.0483\\\\334.01\\\\-56.86023\\\\115.1859\\\\334.01\\\\-57.96204\\\\117.5297\\\\334.01\\\\-60.48373\\\\122.2172\\\\334.01\\\\-61.34826\\\\124.5609\\\\334.01\\\\-61.9119\\\\126.9047\\\\334.01\\\\-63.09862\\\\129.2484\\\\334.01\\\\-63.86719\\\\131.5922\\\\334.01\\\\-64.28482\\\\133.9359\\\\334.01\\\\-65.63528\\\\138.6234\\\\334.01\\\\-66.16119\\\\143.3109\\\\334.01\\\\-66.7664\\\\150.3422\\\\334.01\\\\-66.95463\\\\155.0297\\\\334.01\\\\-66.72736\\\\159.7172\\\\334.01\\\\-66.31696\\\\164.4047\\\\334.01\\\\-65.80171\\\\169.0922\\\\334.01\\\\-65.46725\\\\171.4359\\\\334.01\\\\-64.59868\\\\173.7797\\\\334.01\\\\-63.56812\\\\178.4672\\\\334.01\\\\-62.35712\\\\180.8109\\\\334.01\\\\-61.55333\\\\183.1547\\\\334.01\\\\-61.07733\\\\185.4984\\\\334.01\\\\-59.6588\\\\187.8422\\\\334.01\\\\-58.72026\\\\190.1859\\\\334.01\\\\-57.18415\\\\192.5297\\\\334.01\\\\-56.40602\\\\194.8734\\\\334.01\\\\-55.66406\\\\195.7821\\\\334.01\\\\-53.32031\\\\199.1387\\\\334.01\\\\-52.92969\\\\199.5609\\\\334.01\\\\-51.7693\\\\201.9047\\\\334.01\\\\-49.67076\\\\204.2484\\\\334.01\\\\-47.72281\\\\206.5922\\\\334.01\\\\-45.48062\\\\208.9359\\\\334.01\\\\-43.33069\\\\211.2797\\\\334.01\\\\-41.60156\\\\212.8348\\\\334.01\\\\-39.25781\\\\215.1041\\\\334.01\\\\-36.91406\\\\217.014\\\\334.01\\\\-34.57031\\\\219.1361\\\\334.01\\\\-32.22656\\\\220.3536\\\\334.01\\\\-29.88281\\\\222.028\\\\334.01\\\\-27.53906\\\\223.8316\\\\334.01\\\\-25.19531\\\\224.6377\\\\334.01\\\\-22.85156\\\\226.2194\\\\334.01\\\\-20.50781\\\\227.2216\\\\334.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851156731500001.532752123275\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"543\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"21\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-16.05469\\\\230.0297\\\\337.01\\\\-18.16406\\\\232.5531\\\\337.01\\\\-20.50781\\\\233.1221\\\\337.01\\\\-36.91406\\\\233.1483\\\\337.01\\\\-41.60156\\\\233.19\\\\337.01\\\\-43.94531\\\\233.1652\\\\337.01\\\\-58.00781\\\\233.2061\\\\337.01\\\\-62.69531\\\\233.1981\\\\337.01\\\\-65.03906\\\\233.0382\\\\337.01\\\\-67.38281\\\\232.9942\\\\337.01\\\\-69.72656\\\\233.0671\\\\337.01\\\\-74.41406\\\\233.0859\\\\337.01\\\\-86.13281\\\\233.0859\\\\337.01\\\\-90.82031\\\\233.131\\\\337.01\\\\-93.16406\\\\233.6525\\\\337.01\\\\-95.50781\\\\233.9503\\\\337.01\\\\-97.85156\\\\234.099\\\\337.01\\\\-102.5391\\\\234.2346\\\\337.01\\\\-107.2266\\\\234.2191\\\\337.01\\\\-111.9141\\\\234.2994\\\\337.01\\\\-114.2578\\\\234.2346\\\\337.01\\\\-123.6328\\\\234.2703\\\\337.01\\\\-125.9766\\\\234.2122\\\\337.01\\\\-130.6641\\\\234.1932\\\\337.01\\\\-133.0078\\\\234.2387\\\\337.01\\\\-137.6953\\\\234.1641\\\\337.01\\\\-142.3828\\\\234.2994\\\\337.01\\\\-147.0703\\\\234.1641\\\\337.01\\\\-149.4141\\\\234.2081\\\\337.01\\\\-156.4453\\\\234.1404\\\\337.01\\\\-158.7891\\\\234.1785\\\\337.01\\\\-163.4766\\\\234.1453\\\\337.01\\\\-165.8203\\\\234.1785\\\\337.01\\\\-168.1641\\\\234.3108\\\\337.01\\\\-184.5703\\\\234.3328\\\\337.01\\\\-189.2578\\\\234.3204\\\\337.01\\\\-193.9453\\\\234.4002\\\\337.01\\\\-200.9766\\\\234.471\\\\337.01\\\\-208.0078\\\\234.4053\\\\337.01\\\\-212.6953\\\\234.5285\\\\337.01\\\\-215.0391\\\\234.5285\\\\337.01\\\\-217.3828\\\\234.6247\\\\337.01\\\\-222.0703\\\\234.6649\\\\337.01\\\\-224.4141\\\\234.5484\\\\337.01\\\\-229.1016\\\\234.5121\\\\337.01\\\\-236.1328\\\\234.3573\\\\337.01\\\\-238.4766\\\\234.2224\\\\337.01\\\\-243.1641\\\\234.119\\\\337.01\\\\-247.8516\\\\233.6502\\\\337.01\\\\-250.1953\\\\233.6581\\\\337.01\\\\-252.28\\\\234.7172\\\\337.01\\\\-252.5391\\\\235.7872\\\\337.01\\\\-253.8707\\\\237.0609\\\\337.01\\\\-252.5391\\\\237.3071\\\\337.01\\\\-250.1953\\\\238.1959\\\\337.01\\\\-243.1641\\\\238.1697\\\\337.01\\\\-226.7578\\\\238.1965\\\\337.01\\\\-215.0391\\\\238.2418\\\\337.01\\\\-210.3516\\\\238.2328\\\\337.01\\\\-200.9766\\\\238.2793\\\\337.01\\\\-186.9141\\\\238.2513\\\\337.01\\\\-182.2266\\\\238.3066\\\\337.01\\\\-172.8516\\\\238.3418\\\\337.01\\\\-158.7891\\\\238.3078\\\\337.01\\\\-151.7578\\\\238.3537\\\\337.01\\\\-147.0703\\\\238.3165\\\\337.01\\\\-142.3828\\\\238.3368\\\\337.01\\\\-128.3203\\\\238.3351\\\\337.01\\\\-123.6328\\\\238.3078\\\\337.01\\\\-111.9141\\\\238.3297\\\\337.01\\\\-107.2266\\\\238.2891\\\\337.01\\\\-102.5391\\\\238.3193\\\\337.01\\\\-97.85156\\\\238.2891\\\\337.01\\\\-93.16406\\\\238.3297\\\\337.01\\\\-88.47656\\\\238.2715\\\\337.01\\\\-81.44531\\\\238.2709\\\\337.01\\\\-76.75781\\\\238.3193\\\\337.01\\\\-67.38281\\\\238.2801\\\\337.01\\\\-65.03906\\\\238.309\\\\337.01\\\\-53.32031\\\\238.2607\\\\337.01\\\\-39.25781\\\\238.2801\\\\337.01\\\\-34.57031\\\\238.309\\\\337.01\\\\-32.22656\\\\238.2793\\\\337.01\\\\-11.13281\\\\238.2516\\\\337.01\\\\-1.757813\\\\238.3179\\\\337.01\\\\2.929688\\\\238.2612\\\\337.01\\\\7.617188\\\\238.2801\\\\337.01\\\\9.960938\\\\238.2423\\\\337.01\\\\16.99219\\\\238.2423\\\\337.01\\\\31.05469\\\\238.1953\\\\337.01\\\\33.39844\\\\238.2234\\\\337.01\\\\42.77344\\\\238.1566\\\\337.01\\\\45.11719\\\\238.1953\\\\337.01\\\\54.49219\\\\238.1478\\\\337.01\\\\66.21094\\\\238.1119\\\\337.01\\\\75.58594\\\\238.1016\\\\337.01\\\\82.61719\\\\238.1289\\\\337.01\\\\84.96094\\\\237.6617\\\\337.01\\\\87.30469\\\\238.1036\\\\337.01\\\\89.64844\\\\238.0933\\\\337.01\\\\91.99219\\\\237.956\\\\337.01\\\\94.33594\\\\237.1551\\\\337.01\\\\96.67969\\\\237.0326\\\\337.01\\\\101.3672\\\\236.9958\\\\337.01\\\\103.7109\\\\237.0335\\\\337.01\\\\106.0547\\\\237.7065\\\\337.01\\\\108.3984\\\\237.0328\\\\337.01\\\\113.0859\\\\237.0932\\\\337.01\\\\117.7734\\\\236.961\\\\337.01\\\\120.1172\\\\237.0144\\\\337.01\\\\124.8047\\\\236.9785\\\\337.01\\\\127.1484\\\\236.9111\\\\337.01\\\\129.4922\\\\237.0144\\\\337.01\\\\134.1797\\\\236.9964\\\\337.01\\\\138.8672\\\\236.8935\\\\337.01\\\\150.5859\\\\236.8935\\\\337.01\\\\152.9297\\\\236.8455\\\\337.01\\\\164.6484\\\\236.8786\\\\337.01\\\\171.6797\\\\236.7721\\\\337.01\\\\181.0547\\\\236.8165\\\\337.01\\\\183.3984\\\\236.7296\\\\337.01\\\\190.4297\\\\236.7577\\\\337.01\\\\199.8047\\\\236.7158\\\\337.01\\\\202.1484\\\\236.6625\\\\337.01\\\\211.5234\\\\236.6215\\\\337.01\\\\216.2109\\\\236.6341\\\\337.01\\\\223.2422\\\\236.5608\\\\337.01\\\\230.2734\\\\236.612\\\\337.01\\\\237.3047\\\\236.564\\\\337.01\\\\246.6797\\\\236.5556\\\\337.01\\\\249.0234\\\\236.5217\\\\337.01\\\\251.3672\\\\235.8337\\\\337.01\\\\253.7109\\\\236.673\\\\337.01\\\\254.1778\\\\237.0609\\\\337.01\\\\255.7377\\\\239.4047\\\\337.01\\\\255.5197\\\\241.7484\\\\337.01\\\\254.5064\\\\244.0922\\\\337.01\\\\252.6128\\\\246.4359\\\\337.01\\\\251.3672\\\\248.2697\\\\337.01\\\\248.4421\\\\251.1234\\\\337.01\\\\246.6797\\\\253.0868\\\\337.01\\\\244.3359\\\\255.2826\\\\337.01\\\\241.9922\\\\257.8041\\\\337.01\\\\239.3325\\\\260.4984\\\\337.01\\\\236.9309\\\\262.8422\\\\337.01\\\\234.6654\\\\265.1859\\\\337.01\\\\232.2605\\\\267.5297\\\\337.01\\\\230.2734\\\\269.6653\\\\337.01\\\\227.9297\\\\271.8957\\\\337.01\\\\225.5859\\\\274.3181\\\\337.01\\\\223.2422\\\\276.5594\\\\337.01\\\\218.2125\\\\281.5922\\\\337.01\\\\215.6647\\\\283.9359\\\\337.01\\\\213.3404\\\\286.2797\\\\337.01\\\\211.5234\\\\287.78\\\\337.01\\\\209.1797\\\\289.4079\\\\337.01\\\\206.8359\\\\290.6449\\\\337.01\\\\202.1484\\\\290.6449\\\\337.01\\\\199.8047\\\\290.5828\\\\337.01\\\\197.4609\\\\290.6118\\\\337.01\\\\195.1172\\\\290.5487\\\\337.01\\\\192.7734\\\\290.6282\\\\337.01\\\\190.4297\\\\289.8361\\\\337.01\\\\183.3984\\\\289.8157\\\\337.01\\\\176.3672\\\\289.8256\\\\337.01\\\\169.3359\\\\289.7852\\\\337.01\\\\159.9609\\\\289.7852\\\\337.01\\\\155.2734\\\\289.7545\\\\337.01\\\\150.5859\\\\289.785\\\\337.01\\\\145.8984\\\\289.7439\\\\337.01\\\\129.4922\\\\289.765\\\\337.01\\\\122.4609\\\\289.7234\\\\337.01\\\\113.0859\\\\289.7246\\\\337.01\\\\108.3984\\\\289.7552\\\\337.01\\\\106.0547\\\\289.7246\\\\337.01\\\\91.99219\\\\289.7448\\\\337.01\\\\80.27344\\\\289.7234\\\\337.01\\\\73.24219\\\\289.7545\\\\337.01\\\\66.21094\\\\289.7545\\\\337.01\\\\56.83594\\\\289.7234\\\\337.01\\\\42.77344\\\\289.7246\\\\337.01\\\\40.42969\\\\289.765\\\\337.01\\\\31.05469\\\\289.7352\\\\337.01\\\\12.30469\\\\289.7852\\\\337.01\\\\2.929688\\\\289.765\\\\337.01\\\\-8.789063\\\\289.7854\\\\337.01\\\\-25.19531\\\\289.7753\\\\337.01\\\\-29.88281\\\\289.8052\\\\337.01\\\\-34.57031\\\\289.7854\\\\337.01\\\\-53.32031\\\\289.8354\\\\337.01\\\\-67.38281\\\\289.8354\\\\337.01\\\\-74.41406\\\\289.8648\\\\337.01\\\\-76.75781\\\\290.7283\\\\337.01\\\\-79.10156\\\\289.8554\\\\337.01\\\\-81.44531\\\\290.3386\\\\337.01\\\\-83.78906\\\\291.0974\\\\337.01\\\\-86.13281\\\\291.0974\\\\337.01\\\\-88.47656\\\\289.9266\\\\337.01\\\\-90.82031\\\\290.9763\\\\337.01\\\\-93.16406\\\\291.1297\\\\337.01\\\\-97.85156\\\\291.1137\\\\337.01\\\\-104.8828\\\\291.1611\\\\337.01\\\\-128.3203\\\\291.2212\\\\337.01\\\\-135.3516\\\\291.2642\\\\337.01\\\\-140.0391\\\\291.2501\\\\337.01\\\\-149.4141\\\\291.3054\\\\337.01\\\\-154.1016\\\\291.3054\\\\337.01\\\\-168.1641\\\\291.3705\\\\337.01\\\\-172.8516\\\\291.3705\\\\337.01\\\\-189.2578\\\\291.4549\\\\337.01\\\\-196.2891\\\\291.4549\\\\337.01\\\\-198.6328\\\\292.0931\\\\337.01\\\\-200.9766\\\\291.6703\\\\337.01\\\\-203.3203\\\\292.0439\\\\337.01\\\\-208.0078\\\\292.155\\\\337.01\\\\-210.3516\\\\291.8999\\\\337.01\\\\-211.6451\\\\290.9672\\\\337.01\\\\-212.6953\\\\290.0075\\\\337.01\\\\-215.0391\\\\288.4995\\\\337.01\\\\-219.7266\\\\284.2614\\\\337.01\\\\-226.7578\\\\277.3752\\\\337.01\\\\-229.1016\\\\275.0117\\\\337.01\\\\-231.4453\\\\272.749\\\\337.01\\\\-231.9032\\\\272.2172\\\\337.01\\\\-234.3526\\\\269.8734\\\\337.01\\\\-236.6545\\\\267.5297\\\\337.01\\\\-239.0497\\\\265.1859\\\\337.01\\\\-247.8516\\\\256.3387\\\\337.01\\\\-248.3156\\\\255.8109\\\\337.01\\\\-250.7947\\\\253.4672\\\\337.01\\\\-254.8828\\\\249.2404\\\\337.01\\\\-255.4349\\\\248.7797\\\\337.01\\\\-257.3968\\\\246.4359\\\\337.01\\\\-258.2731\\\\244.0922\\\\337.01\\\\-258.2375\\\\241.7484\\\\337.01\\\\-257.667\\\\239.4047\\\\337.01\\\\-257.2266\\\\238.8687\\\\337.01\\\\-255.0871\\\\237.0609\\\\337.01\\\\-257.2266\\\\235.0331\\\\337.01\\\\-259.5703\\\\235.8786\\\\337.01\\\\-261.0648\\\\237.0609\\\\337.01\\\\-261.9141\\\\237.9827\\\\337.01\\\\-262.9937\\\\239.4047\\\\337.01\\\\-263.0859\\\\241.7484\\\\337.01\\\\-262.7562\\\\244.0922\\\\337.01\\\\-261.9141\\\\245.3154\\\\337.01\\\\-259.5703\\\\248.3479\\\\337.01\\\\-259.0795\\\\248.7797\\\\337.01\\\\-255.473\\\\253.4672\\\\337.01\\\\-252.5391\\\\256.6491\\\\337.01\\\\-250.1953\\\\258.8997\\\\337.01\\\\-247.8516\\\\261.422\\\\337.01\\\\-245.5078\\\\263.5974\\\\337.01\\\\-244.0876\\\\265.1859\\\\337.01\\\\-241.5988\\\\267.5297\\\\337.01\\\\-239.4282\\\\269.8734\\\\337.01\\\\-236.9844\\\\272.2172\\\\337.01\\\\-233.7891\\\\275.424\\\\337.01\\\\-231.4453\\\\277.8406\\\\337.01\\\\-229.8799\\\\279.2484\\\\337.01\\\\-226.7578\\\\282.5503\\\\337.01\\\\-225.2042\\\\283.9359\\\\337.01\\\\-222.0703\\\\287.2521\\\\337.01\\\\-220.5943\\\\288.6234\\\\337.01\\\\-218.3718\\\\290.9672\\\\337.01\\\\-217.3828\\\\291.7129\\\\337.01\\\\-214.9922\\\\293.3109\\\\337.01\\\\-212.6953\\\\294.6589\\\\337.01\\\\-210.3516\\\\295.2864\\\\337.01\\\\-209.9019\\\\295.6547\\\\337.01\\\\-208.0078\\\\296.512\\\\337.01\\\\-205.6641\\\\296.899\\\\337.01\\\\-203.3203\\\\297.1108\\\\337.01\\\\-198.6328\\\\297.0992\\\\337.01\\\\-193.9453\\\\296.9203\\\\337.01\\\\-191.6016\\\\296.8886\\\\337.01\\\\-182.2266\\\\296.9061\\\\337.01\\\\-175.1953\\\\296.8497\\\\337.01\\\\-163.4766\\\\296.882\\\\337.01\\\\-154.1016\\\\296.8757\\\\337.01\\\\-151.7578\\\\296.8513\\\\337.01\\\\-142.3828\\\\296.8771\\\\337.01\\\\-140.0391\\\\296.8521\\\\337.01\\\\-128.3203\\\\296.8175\\\\337.01\\\\-109.5703\\\\296.916\\\\337.01\\\\-90.82031\\\\296.8938\\\\337.01\\\\-86.13281\\\\296.9322\\\\337.01\\\\-81.44531\\\\296.9041\\\\337.01\\\\-74.41406\\\\296.9622\\\\337.01\\\\-67.38281\\\\296.979\\\\337.01\\\\-58.00781\\\\296.9535\\\\337.01\\\\-55.66406\\\\297.2359\\\\337.01\\\\-53.32031\\\\297.1979\\\\337.01\\\\-50.97656\\\\296.9267\\\\337.01\\\\-43.94531\\\\296.9377\\\\337.01\\\\-39.25781\\\\296.878\\\\337.01\\\\-34.57031\\\\296.8985\\\\337.01\\\\-32.22656\\\\297.1454\\\\337.01\\\\-29.88281\\\\296.9011\\\\337.01\\\\-27.53906\\\\296.8899\\\\337.01\\\\-25.19531\\\\297.257\\\\337.01\\\\-22.85156\\\\297.2363\\\\337.01\\\\-20.50781\\\\296.8985\\\\337.01\\\\-8.789063\\\\296.9396\\\\337.01\\\\-6.445313\\\\297.0519\\\\337.01\\\\-4.101563\\\\296.8888\\\\337.01\\\\12.30469\\\\296.8163\\\\337.01\\\\16.99219\\\\296.8369\\\\337.01\\\\24.02344\\\\296.8163\\\\337.01\\\\28.71094\\\\296.7643\\\\337.01\\\\35.74219\\\\296.7743\\\\337.01\\\\45.11719\\\\296.7021\\\\337.01\\\\56.83594\\\\296.6839\\\\337.01\\\\61.52344\\\\296.6346\\\\337.01\\\\63.86719\\\\296.6548\\\\337.01\\\\70.89844\\\\296.582\\\\337.01\\\\87.30469\\\\296.5412\\\\337.01\\\\94.33594\\\\296.4801\\\\337.01\\\\103.7109\\\\296.4597\\\\337.01\\\\110.7422\\\\296.4059\\\\337.01\\\\113.0859\\\\296.4326\\\\337.01\\\\127.1484\\\\296.3578\\\\337.01\\\\134.1797\\\\296.2355\\\\337.01\\\\136.5234\\\\295.8685\\\\337.01\\\\138.8672\\\\296.0063\\\\337.01\\\\141.2109\\\\295.8486\\\\337.01\\\\143.5547\\\\295.8172\\\\337.01\\\\150.5859\\\\295.833\\\\337.01\\\\159.9609\\\\295.7849\\\\337.01\\\\164.6484\\\\295.8012\\\\337.01\\\\176.3672\\\\295.6638\\\\337.01\\\\178.7109\\\\295.6998\\\\337.01\\\\192.7734\\\\295.6093\\\\337.01\\\\195.1172\\\\295.7849\\\\337.01\\\\197.4609\\\\295.8486\\\\337.01\\\\202.1484\\\\295.7849\\\\337.01\\\\204.4922\\\\295.3989\\\\337.01\\\\206.8359\\\\294.7878\\\\337.01\\\\209.1797\\\\294.3606\\\\337.01\\\\211.5234\\\\292.5075\\\\337.01\\\\213.8672\\\\291.1916\\\\337.01\\\\216.2109\\\\289.5791\\\\337.01\\\\217.2271\\\\288.6234\\\\337.01\\\\218.5547\\\\287.1251\\\\337.01\\\\221.7773\\\\283.9359\\\\337.01\\\\225.5859\\\\279.9242\\\\337.01\\\\228.6029\\\\276.9047\\\\337.01\\\\230.8462\\\\274.5609\\\\337.01\\\\233.2856\\\\272.2172\\\\337.01\\\\234.9609\\\\270.3731\\\\337.01\\\\237.8504\\\\267.5297\\\\337.01\\\\240.0754\\\\265.1859\\\\337.01\\\\242.4628\\\\262.8422\\\\337.01\\\\246.6797\\\\258.4333\\\\337.01\\\\249.248\\\\255.8109\\\\337.01\\\\251.4573\\\\253.4672\\\\337.01\\\\256.0547\\\\248.2478\\\\337.01\\\\257.4822\\\\246.4359\\\\337.01\\\\259.856\\\\244.0922\\\\337.01\\\\260.9205\\\\241.7484\\\\337.01\\\\261.7867\\\\239.4047\\\\337.01\\\\261.0251\\\\237.0609\\\\337.01\\\\259.4996\\\\234.7172\\\\337.01\\\\258.3984\\\\233.6932\\\\337.01\\\\256.0547\\\\233.1313\\\\337.01\\\\253.7109\\\\233.0145\\\\337.01\\\\251.3672\\\\233.5155\\\\337.01\\\\249.0234\\\\232.7431\\\\337.01\\\\244.3359\\\\232.8555\\\\337.01\\\\241.9922\\\\233.0207\\\\337.01\\\\234.9609\\\\233.0537\\\\337.01\\\\227.9297\\\\233.0305\\\\337.01\\\\223.2422\\\\233.0632\\\\337.01\\\\206.8359\\\\233.0145\\\\337.01\\\\204.4922\\\\232.882\\\\337.01\\\\202.1484\\\\232.6027\\\\337.01\\\\195.1172\\\\232.7456\\\\337.01\\\\192.7734\\\\232.7186\\\\337.01\\\\183.3984\\\\232.7588\\\\337.01\\\\174.0234\\\\232.7186\\\\337.01\\\\157.6172\\\\232.7614\\\\337.01\\\\143.5547\\\\232.8253\\\\337.01\\\\136.5234\\\\232.6767\\\\337.01\\\\129.4922\\\\232.693\\\\337.01\\\\127.0996\\\\232.3734\\\\337.01\\\\124.8047\\\\232.7481\\\\337.01\\\\120.1172\\\\232.7614\\\\337.01\\\\113.0859\\\\232.8617\\\\337.01\\\\110.7422\\\\232.8253\\\\337.01\\\\106.0547\\\\232.8617\\\\337.01\\\\103.7109\\\\232.1634\\\\337.01\\\\101.3672\\\\232.998\\\\337.01\\\\99.02344\\\\233.1221\\\\337.01\\\\89.64844\\\\233.1483\\\\337.01\\\\84.96094\\\\233.1221\\\\337.01\\\\70.89844\\\\233.1568\\\\337.01\\\\68.55469\\\\233.131\\\\337.01\\\\54.49219\\\\233.1397\\\\337.01\\\\45.11719\\\\233.0951\\\\337.01\\\\44.15678\\\\232.3734\\\\337.01\\\\42.77344\\\\231.0868\\\\337.01\\\\41.98608\\\\230.0297\\\\337.01\\\\42.77344\\\\229.1708\\\\337.01\\\\45.11719\\\\228.3666\\\\337.01\\\\47.46094\\\\226.8342\\\\337.01\\\\49.80469\\\\225.7676\\\\337.01\\\\52.14844\\\\224.4137\\\\337.01\\\\54.49219\\\\223.2807\\\\337.01\\\\59.17969\\\\219.898\\\\337.01\\\\61.47501\\\\218.3109\\\\337.01\\\\63.86719\\\\216.4922\\\\337.01\\\\66.21094\\\\214.6099\\\\337.01\\\\70.89844\\\\210.0019\\\\337.01\\\\71.93934\\\\208.9359\\\\337.01\\\\76.00388\\\\204.2484\\\\337.01\\\\77.40801\\\\201.9047\\\\337.01\\\\77.92969\\\\201.3145\\\\337.01\\\\81.018\\\\197.2172\\\\337.01\\\\82.01642\\\\194.8734\\\\337.01\\\\83.7233\\\\192.5297\\\\337.01\\\\84.67807\\\\190.1859\\\\337.01\\\\85.88257\\\\187.8422\\\\337.01\\\\86.77662\\\\185.4984\\\\337.01\\\\88.21052\\\\183.1547\\\\337.01\\\\88.67678\\\\180.8109\\\\337.01\\\\89.25264\\\\178.4672\\\\337.01\\\\90.24816\\\\176.1234\\\\337.01\\\\90.83131\\\\173.7797\\\\337.01\\\\91.26373\\\\171.4359\\\\337.01\\\\92.6648\\\\166.7484\\\\337.01\\\\92.97371\\\\164.4047\\\\337.01\\\\93.12873\\\\159.7172\\\\337.01\\\\93.17584\\\\152.6859\\\\337.01\\\\93.0293\\\\145.6547\\\\337.01\\\\92.85534\\\\143.3109\\\\337.01\\\\92.3933\\\\140.9672\\\\337.01\\\\91.5518\\\\138.6234\\\\337.01\\\\90.58476\\\\133.9359\\\\337.01\\\\89.87284\\\\131.5922\\\\337.01\\\\88.92268\\\\129.2484\\\\337.01\\\\88.54911\\\\126.9047\\\\337.01\\\\87.68194\\\\124.5609\\\\337.01\\\\86.33789\\\\122.2172\\\\337.01\\\\85.47454\\\\119.8734\\\\337.01\\\\84.15683\\\\117.5297\\\\337.01\\\\83.14225\\\\115.1859\\\\337.01\\\\81.47615\\\\112.8422\\\\337.01\\\\80.27344\\\\110.7263\\\\337.01\\\\78.65778\\\\108.1547\\\\337.01\\\\77.92969\\\\107.3061\\\\337.01\\\\75.58594\\\\104.2673\\\\337.01\\\\70.89844\\\\98.97046\\\\337.01\\\\68.38074\\\\96.43594\\\\337.01\\\\66.21094\\\\94.59663\\\\337.01\\\\63.03367\\\\91.74844\\\\337.01\\\\61.52344\\\\90.60773\\\\337.01\\\\59.17969\\\\88.63029\\\\337.01\\\\56.83594\\\\87.3438\\\\337.01\\\\54.49219\\\\85.87691\\\\337.01\\\\52.14844\\\\84.18039\\\\337.01\\\\49.80469\\\\83.24171\\\\337.01\\\\47.46094\\\\81.97013\\\\337.01\\\\45.11719\\\\81.00246\\\\337.01\\\\42.77344\\\\79.69603\\\\337.01\\\\40.42969\\\\78.85781\\\\337.01\\\\38.08594\\\\78.49974\\\\337.01\\\\35.74219\\\\77.60603\\\\337.01\\\\33.39844\\\\76.81591\\\\337.01\\\\28.71094\\\\75.88577\\\\337.01\\\\26.36719\\\\75.09944\\\\337.01\\\\24.02344\\\\74.58508\\\\337.01\\\\21.67969\\\\74.41319\\\\337.01\\\\14.64844\\\\74.19961\\\\337.01\\\\7.617188\\\\74.26453\\\\337.01\\\\2.929688\\\\74.44027\\\\337.01\\\\0.5859375\\\\74.69731\\\\337.01\\\\-4.101563\\\\76.08793\\\\337.01\\\\-6.445313\\\\76.49226\\\\337.01\\\\-8.789063\\\\77.12093\\\\337.01\\\\-11.13281\\\\78.06062\\\\337.01\\\\-13.47656\\\\78.67705\\\\337.01\\\\-15.82031\\\\79.20602\\\\337.01\\\\-18.16406\\\\80.67077\\\\337.01\\\\-20.50781\\\\81.56818\\\\337.01\\\\-22.85156\\\\82.93452\\\\337.01\\\\-25.19531\\\\83.69257\\\\337.01\\\\-27.53906\\\\85.49158\\\\337.01\\\\-29.88281\\\\86.50658\\\\337.01\\\\-32.22656\\\\88.21391\\\\337.01\\\\-34.57031\\\\90.13181\\\\337.01\\\\-36.91406\\\\91.68333\\\\337.01\\\\-39.25781\\\\93.56712\\\\337.01\\\\-41.60156\\\\95.59077\\\\337.01\\\\-47.06793\\\\101.1234\\\\337.01\\\\-50.97656\\\\106.257\\\\337.01\\\\-54.06295\\\\110.4984\\\\337.01\\\\-55.66406\\\\112.9218\\\\337.01\\\\-56.87866\\\\115.1859\\\\337.01\\\\-58.00781\\\\117.468\\\\337.01\\\\-60.35156\\\\121.8745\\\\337.01\\\\-60.61105\\\\122.2172\\\\337.01\\\\-61.37396\\\\124.5609\\\\337.01\\\\-61.96955\\\\126.9047\\\\337.01\\\\-63.18912\\\\129.2484\\\\337.01\\\\-63.92686\\\\131.5922\\\\337.01\\\\-64.32825\\\\133.9359\\\\337.01\\\\-65.08414\\\\136.2797\\\\337.01\\\\-65.66541\\\\138.6234\\\\337.01\\\\-65.95693\\\\140.9672\\\\337.01\\\\-66.45103\\\\145.6547\\\\337.01\\\\-66.83923\\\\150.3422\\\\337.01\\\\-67.00504\\\\155.0297\\\\337.01\\\\-66.91849\\\\157.3734\\\\337.01\\\\-66.59546\\\\162.0609\\\\337.01\\\\-65.85083\\\\169.0922\\\\337.01\\\\-65.52673\\\\171.4359\\\\337.01\\\\-64.66129\\\\173.7797\\\\337.01\\\\-63.60744\\\\178.4672\\\\337.01\\\\-62.44127\\\\180.8109\\\\337.01\\\\-61.60844\\\\183.1547\\\\337.01\\\\-61.10444\\\\185.4984\\\\337.01\\\\-59.69611\\\\187.8422\\\\337.01\\\\-58.78688\\\\190.1859\\\\337.01\\\\-57.22429\\\\192.5297\\\\337.01\\\\-56.42923\\\\194.8734\\\\337.01\\\\-55.66406\\\\195.816\\\\337.01\\\\-53.32031\\\\199.2024\\\\337.01\\\\-52.98665\\\\199.5609\\\\337.01\\\\-51.81459\\\\201.9047\\\\337.01\\\\-49.69277\\\\204.2484\\\\337.01\\\\-47.77253\\\\206.5922\\\\337.01\\\\-45.4857\\\\208.9359\\\\337.01\\\\-43.94531\\\\210.7107\\\\337.01\\\\-39.25781\\\\215.1271\\\\337.01\\\\-36.91406\\\\217.0729\\\\337.01\\\\-34.57031\\\\219.1932\\\\337.01\\\\-32.22656\\\\220.397\\\\337.01\\\\-31.95135\\\\220.6547\\\\337.01\\\\-28.60054\\\\222.9984\\\\337.01\\\\-27.53906\\\\223.8551\\\\337.01\\\\-25.19531\\\\224.6817\\\\337.01\\\\-22.85156\\\\226.2544\\\\337.01\\\\-20.50781\\\\227.2455\\\\337.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851179732800001.515857303411\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"344\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"22\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"45.11719\\\\233.0951\\\\340.01\\\\43.64898\\\\232.3734\\\\340.01\\\\42.77344\\\\231.5882\\\\340.01\\\\41.51367\\\\230.0297\\\\340.01\\\\42.77344\\\\229.1609\\\\340.01\\\\45.11719\\\\228.3465\\\\340.01\\\\47.46094\\\\226.8296\\\\340.01\\\\49.80469\\\\225.7274\\\\340.01\\\\50.36671\\\\225.3422\\\\340.01\\\\54.49219\\\\223.2026\\\\340.01\\\\56.83594\\\\221.5721\\\\340.01\\\\61.40058\\\\218.3109\\\\340.01\\\\63.86719\\\\216.4497\\\\340.01\\\\66.21094\\\\214.5379\\\\340.01\\\\67.18151\\\\213.6234\\\\340.01\\\\71.87971\\\\208.9359\\\\340.01\\\\75.93159\\\\204.2484\\\\340.01\\\\77.34375\\\\201.9047\\\\340.01\\\\77.92969\\\\201.2338\\\\340.01\\\\81.00505\\\\197.2172\\\\340.01\\\\81.93835\\\\194.8734\\\\340.01\\\\83.70493\\\\192.5297\\\\340.01\\\\84.59618\\\\190.1859\\\\340.01\\\\85.85058\\\\187.8422\\\\340.01\\\\86.71875\\\\185.4984\\\\340.01\\\\88.16106\\\\183.1547\\\\340.01\\\\89.19947\\\\178.4672\\\\340.01\\\\90.19531\\\\176.1234\\\\340.01\\\\90.79267\\\\173.7797\\\\340.01\\\\91.21298\\\\171.4359\\\\340.01\\\\91.82967\\\\169.0922\\\\340.01\\\\92.58527\\\\166.7484\\\\340.01\\\\92.92848\\\\164.4047\\\\340.01\\\\93.04102\\\\162.0609\\\\340.01\\\\93.14051\\\\157.3734\\\\340.01\\\\93.15228\\\\152.6859\\\\340.01\\\\93.01096\\\\145.6547\\\\340.01\\\\92.82652\\\\143.3109\\\\340.01\\\\92.30957\\\\140.9672\\\\340.01\\\\91.49306\\\\138.6234\\\\340.01\\\\90.54668\\\\133.9359\\\\340.01\\\\89.79492\\\\131.5922\\\\340.01\\\\88.89133\\\\129.2484\\\\340.01\\\\88.5321\\\\126.9047\\\\340.01\\\\87.59558\\\\124.5609\\\\340.01\\\\86.30105\\\\122.2172\\\\340.01\\\\85.44\\\\119.8734\\\\340.01\\\\84.1048\\\\117.5297\\\\340.01\\\\83.04976\\\\115.1859\\\\340.01\\\\81.44531\\\\112.8422\\\\340.01\\\\78.61036\\\\108.1547\\\\340.01\\\\77.92969\\\\107.3653\\\\340.01\\\\75.58594\\\\104.3202\\\\340.01\\\\70.89844\\\\99.03911\\\\340.01\\\\68.31129\\\\96.43594\\\\340.01\\\\66.21094\\\\94.65131\\\\340.01\\\\63.00066\\\\91.74844\\\\340.01\\\\59.99457\\\\89.40469\\\\340.01\\\\59.17969\\\\88.66788\\\\340.01\\\\56.83594\\\\87.38558\\\\340.01\\\\52.7524\\\\84.71719\\\\340.01\\\\52.14844\\\\84.20734\\\\340.01\\\\49.80469\\\\83.25685\\\\340.01\\\\47.46094\\\\81.99566\\\\340.01\\\\45.11719\\\\81.03172\\\\340.01\\\\42.77344\\\\79.72434\\\\340.01\\\\40.42969\\\\78.86356\\\\340.01\\\\38.08594\\\\78.50819\\\\340.01\\\\33.39844\\\\76.83095\\\\340.01\\\\28.71094\\\\75.9072\\\\340.01\\\\26.36719\\\\75.12989\\\\340.01\\\\24.02344\\\\74.57621\\\\340.01\\\\21.67969\\\\74.42056\\\\340.01\\\\14.64844\\\\74.21133\\\\340.01\\\\9.960938\\\\74.21133\\\\340.01\\\\5.273438\\\\74.33174\\\\340.01\\\\2.929688\\\\74.44027\\\\340.01\\\\0.5859375\\\\74.68344\\\\340.01\\\\-4.101563\\\\76.06187\\\\340.01\\\\-6.445313\\\\76.48074\\\\340.01\\\\-8.789063\\\\77.09653\\\\340.01\\\\-11.13281\\\\78.03346\\\\340.01\\\\-13.47656\\\\78.66458\\\\340.01\\\\-15.82031\\\\79.18885\\\\340.01\\\\-18.16406\\\\80.65698\\\\340.01\\\\-20.50781\\\\81.53359\\\\340.01\\\\-22.85156\\\\82.9015\\\\340.01\\\\-25.19531\\\\83.66675\\\\340.01\\\\-27.53906\\\\85.45914\\\\340.01\\\\-29.88281\\\\86.475\\\\340.01\\\\-32.22656\\\\88.17611\\\\340.01\\\\-34.57031\\\\90.08352\\\\340.01\\\\-36.91406\\\\91.61217\\\\340.01\\\\-39.25781\\\\93.50252\\\\340.01\\\\-41.60156\\\\95.54475\\\\340.01\\\\-47.14196\\\\101.1234\\\\340.01\\\\-50.67958\\\\105.8109\\\\340.01\\\\-50.97656\\\\106.1445\\\\340.01\\\\-54.1083\\\\110.4984\\\\340.01\\\\-55.67351\\\\112.8422\\\\340.01\\\\-59.33949\\\\119.8734\\\\340.01\\\\-60.7103\\\\122.2172\\\\340.01\\\\-61.41526\\\\124.5609\\\\340.01\\\\-62.03443\\\\126.9047\\\\340.01\\\\-63.2848\\\\129.2484\\\\340.01\\\\-63.97519\\\\131.5922\\\\340.01\\\\-64.37412\\\\133.9359\\\\340.01\\\\-65.20158\\\\136.2797\\\\340.01\\\\-65.72266\\\\138.6234\\\\340.01\\\\-66.51716\\\\145.6547\\\\340.01\\\\-66.90674\\\\150.3422\\\\340.01\\\\-67.05817\\\\152.6859\\\\340.01\\\\-67.07191\\\\155.0297\\\\340.01\\\\-66.80727\\\\159.7172\\\\340.01\\\\-66.38559\\\\164.4047\\\\340.01\\\\-65.8744\\\\169.0922\\\\340.01\\\\-65.56069\\\\171.4359\\\\340.01\\\\-64.72816\\\\173.7797\\\\340.01\\\\-64.14594\\\\176.1234\\\\340.01\\\\-63.66697\\\\178.4672\\\\340.01\\\\-62.54883\\\\180.8109\\\\340.01\\\\-61.63273\\\\183.1547\\\\340.01\\\\-61.1263\\\\185.4984\\\\340.01\\\\-59.74519\\\\187.8422\\\\340.01\\\\-58.81712\\\\190.1859\\\\340.01\\\\-57.25644\\\\192.5297\\\\340.01\\\\-56.44758\\\\194.8734\\\\340.01\\\\-55.66406\\\\195.85\\\\340.01\\\\-53.32031\\\\199.2374\\\\340.01\\\\-53.01497\\\\199.5609\\\\340.01\\\\-51.82329\\\\201.9047\\\\340.01\\\\-49.72613\\\\204.2484\\\\340.01\\\\-47.79478\\\\206.5922\\\\340.01\\\\-45.51518\\\\208.9359\\\\340.01\\\\-43.94531\\\\210.7713\\\\340.01\\\\-41.60156\\\\212.8845\\\\340.01\\\\-39.25781\\\\215.1362\\\\340.01\\\\-36.91406\\\\217.0861\\\\340.01\\\\-34.57031\\\\219.2098\\\\340.01\\\\-32.22656\\\\220.4119\\\\340.01\\\\-29.88281\\\\222.0768\\\\340.01\\\\-27.53906\\\\223.8773\\\\340.01\\\\-25.19531\\\\224.7128\\\\340.01\\\\-22.85156\\\\226.2625\\\\340.01\\\\-20.50781\\\\227.2578\\\\340.01\\\\-18.16406\\\\228.6914\\\\340.01\\\\-15.82031\\\\229.7006\\\\340.01\\\\-15.45354\\\\230.0297\\\\340.01\\\\-15.82031\\\\230.6879\\\\340.01\\\\-17.62983\\\\232.3734\\\\340.01\\\\-18.16406\\\\232.6311\\\\340.01\\\\-20.50781\\\\233.1132\\\\340.01\\\\-34.57031\\\\233.131\\\\340.01\\\\-41.60156\\\\233.1818\\\\340.01\\\\-46.28906\\\\233.1652\\\\340.01\\\\-55.66406\\\\233.1981\\\\340.01\\\\-60.35156\\\\233.19\\\\340.01\\\\-62.69531\\\\233.246\\\\340.01\\\\-65.03906\\\\233.0382\\\\340.01\\\\-69.72656\\\\233.0671\\\\340.01\\\\-83.78906\\\\233.0766\\\\340.01\\\\-90.82031\\\\233.1132\\\\340.01\\\\-93.16406\\\\233.1964\\\\340.01\\\\-95.50781\\\\233.8279\\\\340.01\\\\-97.85156\\\\234.0941\\\\340.01\\\\-102.5391\\\\234.2306\\\\340.01\\\\-109.5703\\\\234.279\\\\340.01\\\\-116.6016\\\\234.2191\\\\340.01\\\\-121.2891\\\\234.2543\\\\340.01\\\\-130.6641\\\\234.1741\\\\340.01\\\\-133.0078\\\\234.2081\\\\340.01\\\\-137.6953\\\\234.1499\\\\340.01\\\\-142.3828\\\\234.2703\\\\340.01\\\\-147.0703\\\\234.1641\\\\340.01\\\\-151.7578\\\\234.1932\\\\340.01\\\\-156.4453\\\\234.1267\\\\340.01\\\\-158.7891\\\\234.1543\\\\340.01\\\\-163.4766\\\\234.1221\\\\340.01\\\\-168.1641\\\\234.2766\\\\340.01\\\\-175.1953\\\\234.2686\\\\340.01\\\\-177.5391\\\\234.2987\\\\340.01\\\\-184.5703\\\\234.2835\\\\340.01\\\\-186.9141\\\\234.3328\\\\340.01\\\\-189.2578\\\\234.2902\\\\340.01\\\\-193.9453\\\\234.4002\\\\340.01\\\\-196.2891\\\\234.3837\\\\340.01\\\\-200.9766\\\\234.4888\\\\340.01\\\\-203.3203\\\\234.3837\\\\340.01\\\\-208.0078\\\\234.3864\\\\340.01\\\\-212.6953\\\\234.5069\\\\340.01\\\\-215.0391\\\\234.4907\\\\340.01\\\\-222.0703\\\\234.6239\\\\340.01\\\\-224.4141\\\\234.4731\\\\340.01\\\\-231.4453\\\\234.4218\\\\340.01\\\\-233.7891\\\\234.3266\\\\340.01\\\\-243.1641\\\\234.0949\\\\340.01\\\\-247.8516\\\\233.6378\\\\340.01\\\\-250.1953\\\\233.6378\\\\340.01\\\\-252.5391\\\\234.0867\\\\340.01\\\\-254.6143\\\\234.7172\\\\340.01\\\\-254.8828\\\\234.9516\\\\340.01\\\\-257.2266\\\\234.9974\\\\340.01\\\\-259.5703\\\\235.8786\\\\340.01\\\\-261.108\\\\237.0609\\\\340.01\\\\-261.9141\\\\237.891\\\\340.01\\\\-263.0544\\\\239.4047\\\\340.01\\\\-263.1094\\\\241.7484\\\\340.01\\\\-262.7858\\\\244.0922\\\\340.01\\\\-261.9141\\\\245.3383\\\\340.01\\\\-259.5703\\\\248.3687\\\\340.01\\\\-259.1593\\\\248.7797\\\\340.01\\\\-255.7086\\\\253.4672\\\\340.01\\\\-252.5391\\\\256.7179\\\\340.01\\\\-250.1953\\\\258.9929\\\\340.01\\\\-247.8516\\\\261.4776\\\\340.01\\\\-245.5078\\\\263.6263\\\\340.01\\\\-244.1031\\\\265.1859\\\\340.01\\\\-241.5987\\\\267.5297\\\\340.01\\\\-239.4125\\\\269.8734\\\\340.01\\\\-236.9858\\\\272.2172\\\\340.01\\\\-233.7891\\\\275.424\\\\340.01\\\\-231.4453\\\\277.8469\\\\340.01\\\\-229.1016\\\\280.0326\\\\340.01\\\\-226.7578\\\\282.5503\\\\340.01\\\\-225.1803\\\\283.9359\\\\340.01\\\\-222.0703\\\\287.259\\\\340.01\\\\-220.6122\\\\288.6234\\\\340.01\\\\-218.3861\\\\290.9672\\\\340.01\\\\-214.9922\\\\293.3109\\\\340.01\\\\-212.6953\\\\294.6589\\\\340.01\\\\-210.3516\\\\295.3856\\\\340.01\\\\-208.0078\\\\296.5275\\\\340.01\\\\-205.6641\\\\296.892\\\\340.01\\\\-203.3203\\\\297.0948\\\\340.01\\\\-198.6328\\\\297.0876\\\\340.01\\\\-193.9453\\\\296.9006\\\\340.01\\\\-170.5078\\\\296.8421\\\\340.01\\\\-168.1641\\\\296.8731\\\\340.01\\\\-158.7891\\\\296.8427\\\\340.01\\\\-156.4453\\\\296.8667\\\\340.01\\\\-144.7266\\\\296.8678\\\\340.01\\\\-130.6641\\\\296.8089\\\\340.01\\\\-121.2891\\\\296.7995\\\\340.01\\\\-114.2578\\\\296.8629\\\\340.01\\\\-102.5391\\\\296.9188\\\\340.01\\\\-100.1953\\\\296.9004\\\\340.01\\\\-79.10156\\\\296.9041\\\\340.01\\\\-76.75781\\\\296.9428\\\\340.01\\\\-69.72656\\\\296.9622\\\\340.01\\\\-53.32031\\\\296.9428\\\\340.01\\\\-50.97656\\\\297.0061\\\\340.01\\\\-41.60156\\\\296.9731\\\\340.01\\\\-39.25781\\\\296.8877\\\\340.01\\\\-36.91406\\\\296.9467\\\\340.01\\\\-32.22656\\\\296.9731\\\\340.01\\\\-29.88281\\\\296.8888\\\\340.01\\\\-25.19531\\\\296.8798\\\\340.01\\\\-22.85156\\\\297.0362\\\\340.01\\\\-20.50781\\\\296.8789\\\\340.01\\\\-15.82031\\\\296.9535\\\\340.01\\\\-4.101563\\\\296.8673\\\\340.01\\\\-1.757813\\\\296.9081\\\\340.01\\\\19.33594\\\\296.7952\\\\340.01\\\\21.67969\\\\296.8163\\\\340.01\\\\33.39844\\\\296.734\\\\340.01\\\\42.77344\\\\296.7324\\\\340.01\\\\49.80469\\\\296.6724\\\\340.01\\\\66.21094\\\\296.6346\\\\340.01\\\\87.30469\\\\296.5154\\\\340.01\\\\96.67969\\\\296.5208\\\\340.01\\\\99.02344\\\\296.473\\\\340.01\\\\108.3984\\\\296.466\\\\340.01\\\\110.7422\\\\296.4326\\\\340.01\\\\117.7734\\\\296.446\\\\340.01\\\\131.8359\\\\296.308\\\\340.01\\\\134.1797\\\\296.1372\\\\340.01\\\\136.5234\\\\295.8701\\\\340.01\\\\152.9297\\\\295.8012\\\\340.01\\\\157.6172\\\\295.833\\\\340.01\\\\159.9609\\\\295.7849\\\\340.01\\\\164.6484\\\\295.8172\\\\340.01\\\\171.6797\\\\295.7684\\\\340.01\\\\176.3672\\\\295.6638\\\\340.01\\\\183.3984\\\\295.6819\\\\340.01\\\\190.4297\\\\295.6093\\\\340.01\\\\192.7734\\\\295.6272\\\\340.01\\\\197.4609\\\\295.833\\\\340.01\\\\202.1484\\\\295.7173\\\\340.01\\\\204.4922\\\\295.3679\\\\340.01\\\\206.8359\\\\294.7878\\\\340.01\\\\209.1797\\\\294.3717\\\\340.01\\\\211.5234\\\\292.5075\\\\340.01\\\\213.8672\\\\291.2065\\\\340.01\\\\216.2109\\\\289.6012\\\\340.01\\\\217.2437\\\\288.6234\\\\340.01\\\\218.5547\\\\287.1462\\\\340.01\\\\221.7714\\\\283.9359\\\\340.01\\\\225.5859\\\\279.9119\\\\340.01\\\\227.9297\\\\277.6044\\\\340.01\\\\230.2734\\\\275.1119\\\\340.01\\\\233.2526\\\\272.2172\\\\340.01\\\\234.9609\\\\270.3654\\\\340.01\\\\237.8731\\\\267.5297\\\\340.01\\\\240.1082\\\\265.1859\\\\340.01\\\\242.4774\\\\262.8422\\\\340.01\\\\246.6797\\\\258.4333\\\\340.01\\\\249.248\\\\255.8109\\\\340.01\\\\251.4573\\\\253.4672\\\\340.01\\\\256.0547\\\\248.2246\\\\340.01\\\\257.4792\\\\246.4359\\\\340.01\\\\259.8469\\\\244.0922\\\\340.01\\\\260.9666\\\\241.7484\\\\340.01\\\\261.8304\\\\239.4047\\\\340.01\\\\261.0668\\\\237.0609\\\\340.01\\\\259.4996\\\\234.7172\\\\340.01\\\\258.3984\\\\233.6932\\\\340.01\\\\256.0547\\\\233.1526\\\\340.01\\\\253.7109\\\\233.0245\\\\340.01\\\\251.3672\\\\233.382\\\\340.01\\\\249.0234\\\\232.6886\\\\340.01\\\\244.3359\\\\232.8195\\\\340.01\\\\241.9922\\\\233.0007\\\\340.01\\\\232.6172\\\\233.0305\\\\340.01\\\\227.9297\\\\233.0007\\\\340.01\\\\223.2422\\\\233.0441\\\\340.01\\\\209.1797\\\\233.0108\\\\340.01\\\\206.8359\\\\233.0343\\\\340.01\\\\204.4922\\\\232.916\\\\340.01\\\\202.1484\\\\232.6179\\\\340.01\\\\195.1172\\\\232.7322\\\\340.01\\\\181.0547\\\\232.7719\\\\340.01\\\\174.0234\\\\232.7456\\\\340.01\\\\166.9922\\\\232.7614\\\\340.01\\\\148.2422\\\\232.8497\\\\340.01\\\\141.2109\\\\232.8253\\\\340.01\\\\136.5234\\\\232.721\\\\340.01\\\\134.1797\\\\232.7614\\\\340.01\\\\129.4922\\\\232.7481\\\\340.01\\\\113.0859\\\\232.8617\\\\340.01\\\\106.0547\\\\232.8735\\\\340.01\\\\103.7109\\\\232.8253\\\\340.01\\\\101.3672\\\\232.9942\\\\340.01\\\\96.67969\\\\233.1397\\\\340.01\\\\68.55469\\\\233.1483\\\\340.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851194733700001.468081152243\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"342\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"23\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-13.47656\\\\296.8499\\\\343.01\\\\14.64844\\\\296.8324\\\\343.01\\\\33.39844\\\\296.8033\\\\343.01\\\\63.86719\\\\296.7919\\\\343.01\\\\87.30469\\\\296.7566\\\\343.01\\\\117.7734\\\\296.7458\\\\343.01\\\\131.8359\\\\296.7216\\\\343.01\\\\136.5234\\\\296.6649\\\\343.01\\\\138.8672\\\\295.4763\\\\343.01\\\\157.6172\\\\295.4763\\\\343.01\\\\159.9609\\\\295.4454\\\\343.01\\\\164.6484\\\\295.4763\\\\343.01\\\\166.9922\\\\295.4454\\\\343.01\\\\176.3672\\\\295.4154\\\\343.01\\\\192.7734\\\\295.4006\\\\343.01\\\\197.4609\\\\295.4763\\\\343.01\\\\202.1484\\\\295.4303\\\\343.01\\\\204.4922\\\\295.3165\\\\343.01\\\\206.8359\\\\295.0653\\\\343.01\\\\209.1797\\\\294.4177\\\\343.01\\\\211.5234\\\\292.3443\\\\343.01\\\\213.8672\\\\291.6227\\\\343.01\\\\214.5661\\\\290.9672\\\\343.01\\\\216.2109\\\\289.7204\\\\343.01\\\\217.3604\\\\288.6234\\\\343.01\\\\219.4239\\\\286.2797\\\\343.01\\\\221.9183\\\\283.9359\\\\343.01\\\\225.5859\\\\280.0836\\\\343.01\\\\227.9297\\\\277.9224\\\\343.01\\\\230.2734\\\\275.331\\\\343.01\\\\231.0524\\\\274.5609\\\\343.01\\\\232.6172\\\\273.2719\\\\343.01\\\\233.6719\\\\272.2172\\\\343.01\\\\235.7042\\\\269.8734\\\\343.01\\\\238.2833\\\\267.5297\\\\343.01\\\\240.4319\\\\265.1859\\\\343.01\\\\244.3359\\\\261.4106\\\\343.01\\\\246.6797\\\\258.8701\\\\343.01\\\\249.0234\\\\256.7692\\\\343.01\\\\249.948\\\\255.8109\\\\343.01\\\\251.3672\\\\254.1198\\\\343.01\\\\254.5945\\\\251.1234\\\\343.01\\\\255.6744\\\\248.7797\\\\343.01\\\\257.489\\\\246.4359\\\\343.01\\\\259.8584\\\\244.0922\\\\343.01\\\\260.9205\\\\241.7484\\\\343.01\\\\261.8858\\\\239.4047\\\\343.01\\\\261.2413\\\\237.0609\\\\343.01\\\\259.3759\\\\234.7172\\\\343.01\\\\258.3984\\\\233.7629\\\\343.01\\\\256.0547\\\\232.9203\\\\343.01\\\\251.3672\\\\232.8406\\\\343.01\\\\249.0234\\\\232.6981\\\\343.01\\\\241.9922\\\\232.8407\\\\343.01\\\\234.9609\\\\232.8642\\\\343.01\\\\227.9297\\\\232.8407\\\\343.01\\\\218.5547\\\\232.8757\\\\343.01\\\\213.8672\\\\232.8525\\\\343.01\\\\206.8359\\\\232.8642\\\\343.01\\\\202.1484\\\\232.7003\\\\343.01\\\\197.4609\\\\232.7406\\\\343.01\\\\190.4297\\\\232.7537\\\\343.01\\\\174.0234\\\\232.7537\\\\343.01\\\\157.6172\\\\232.7666\\\\343.01\\\\155.2734\\\\232.792\\\\343.01\\\\141.2109\\\\232.7794\\\\343.01\\\\136.5234\\\\232.7406\\\\343.01\\\\124.8047\\\\232.7537\\\\343.01\\\\122.4609\\\\232.7794\\\\343.01\\\\103.7109\\\\232.7794\\\\343.01\\\\96.67969\\\\232.9126\\\\343.01\\\\54.49219\\\\232.9126\\\\343.01\\\\45.11719\\\\232.8902\\\\343.01\\\\42.77344\\\\232.8044\\\\343.01\\\\38.08594\\\\232.7794\\\\343.01\\\\36.64153\\\\232.3734\\\\343.01\\\\38.08594\\\\231.9234\\\\343.01\\\\40.42969\\\\229.497\\\\343.01\\\\42.77344\\\\229.0768\\\\343.01\\\\45.11719\\\\228.3851\\\\343.01\\\\47.46094\\\\226.9828\\\\343.01\\\\49.80469\\\\226.2342\\\\343.01\\\\52.14844\\\\224.5333\\\\343.01\\\\54.49219\\\\223.435\\\\343.01\\\\54.94049\\\\222.9984\\\\343.01\\\\56.83594\\\\221.7432\\\\343.01\\\\58.32031\\\\220.6547\\\\343.01\\\\59.17969\\\\219.8756\\\\343.01\\\\61.52344\\\\219.154\\\\343.01\\\\64.5971\\\\215.9672\\\\343.01\\\\66.21094\\\\214.6717\\\\343.01\\\\67.30957\\\\213.6234\\\\343.01\\\\69.44305\\\\211.2797\\\\343.01\\\\71.93533\\\\208.9359\\\\343.01\\\\75.58594\\\\204.9751\\\\343.01\\\\76.34663\\\\204.2484\\\\343.01\\\\77.07796\\\\201.9047\\\\343.01\\\\79.4009\\\\199.5609\\\\343.01\\\\80.80936\\\\197.2172\\\\343.01\\\\82.61719\\\\194.8027\\\\343.01\\\\83.81027\\\\192.5297\\\\343.01\\\\84.70689\\\\190.1859\\\\343.01\\\\86.036\\\\187.8422\\\\343.01\\\\87.30469\\\\185.8838\\\\343.01\\\\87.68246\\\\185.4984\\\\343.01\\\\88.88221\\\\180.8109\\\\343.01\\\\89.11252\\\\178.4672\\\\343.01\\\\89.64844\\\\177.7911\\\\343.01\\\\90.63388\\\\176.1234\\\\343.01\\\\90.79569\\\\173.7797\\\\343.01\\\\91.10613\\\\171.4359\\\\343.01\\\\92.53577\\\\169.0922\\\\343.01\\\\92.74599\\\\166.7484\\\\343.01\\\\92.91211\\\\162.0609\\\\343.01\\\\93.33398\\\\159.7172\\\\343.01\\\\93.3525\\\\150.3422\\\\343.01\\\\92.9874\\\\147.9984\\\\343.01\\\\92.81616\\\\143.3109\\\\343.01\\\\92.65137\\\\140.9672\\\\343.01\\\\92.28917\\\\138.6234\\\\343.01\\\\91.99219\\\\138.295\\\\343.01\\\\90.88379\\\\136.2797\\\\343.01\\\\90.72434\\\\133.9359\\\\343.01\\\\89.63928\\\\131.5922\\\\343.01\\\\89.00118\\\\129.2484\\\\343.01\\\\88.44993\\\\126.9047\\\\343.01\\\\88.13577\\\\124.5609\\\\343.01\\\\87.30469\\\\123.6708\\\\343.01\\\\86.17751\\\\122.2172\\\\343.01\\\\85.52595\\\\119.8734\\\\343.01\\\\84.34743\\\\117.5297\\\\343.01\\\\83.591\\\\115.1859\\\\343.01\\\\81.36161\\\\112.8422\\\\343.01\\\\80.40365\\\\110.4984\\\\343.01\\\\77.92969\\\\107.4057\\\\343.01\\\\76.88994\\\\105.8109\\\\343.01\\\\75.58594\\\\104.1483\\\\343.01\\\\72.53094\\\\101.1234\\\\343.01\\\\70.89844\\\\99.3583\\\\343.01\\\\68.03966\\\\96.43594\\\\343.01\\\\66.21094\\\\94.85841\\\\343.01\\\\63.2178\\\\91.74844\\\\343.01\\\\59.9375\\\\89.40469\\\\343.01\\\\56.83594\\\\86.85168\\\\343.01\\\\54.49219\\\\85.89411\\\\343.01\\\\52.14844\\\\83.75636\\\\343.01\\\\49.80469\\\\83.0305\\\\343.01\\\\47.46094\\\\81.82986\\\\343.01\\\\45.11719\\\\81.13115\\\\343.01\\\\43.61636\\\\80.02969\\\\343.01\\\\42.77344\\\\79.26299\\\\343.01\\\\40.42969\\\\78.94232\\\\343.01\\\\38.08594\\\\78.44798\\\\343.01\\\\35.74219\\\\77.71319\\\\343.01\\\\33.39844\\\\76.62014\\\\343.01\\\\31.05469\\\\76.45058\\\\343.01\\\\28.99255\\\\75.34219\\\\343.01\\\\28.71094\\\\75.08814\\\\343.01\\\\26.36719\\\\74.78448\\\\343.01\\\\24.02344\\\\74.61057\\\\343.01\\\\21.67969\\\\74.54632\\\\343.01\\\\19.33594\\\\74.09106\\\\343.01\\\\9.960938\\\\74.04196\\\\343.01\\\\5.273438\\\\74.09106\\\\343.01\\\\2.929688\\\\74.55463\\\\343.01\\\\0.5859375\\\\74.63775\\\\343.01\\\\-4.101563\\\\75.10286\\\\343.01\\\\-6.445313\\\\76.49429\\\\343.01\\\\-8.789063\\\\76.67171\\\\343.01\\\\-10.42799\\\\77.68594\\\\343.01\\\\-11.13281\\\\78.2649\\\\343.01\\\\-13.47656\\\\78.54448\\\\343.01\\\\-15.82031\\\\79.10727\\\\343.01\\\\-18.16406\\\\79.86597\\\\343.01\\\\-18.33274\\\\80.02969\\\\343.01\\\\-22.37745\\\\82.37344\\\\343.01\\\\-22.85156\\\\82.77675\\\\343.01\\\\-25.19531\\\\83.57171\\\\343.01\\\\-27.22969\\\\84.71719\\\\343.01\\\\-27.53906\\\\84.99342\\\\343.01\\\\-29.88281\\\\86.06935\\\\343.01\\\\-32.22656\\\\87.99243\\\\343.01\\\\-34.57031\\\\90.32504\\\\343.01\\\\-36.91406\\\\91.11633\\\\343.01\\\\-37.53859\\\\91.74844\\\\343.01\\\\-41.60156\\\\95.4947\\\\343.01\\\\-44.75509\\\\98.77969\\\\343.01\\\\-46.28906\\\\100.0988\\\\343.01\\\\-47.29911\\\\101.1234\\\\343.01\\\\-48.63281\\\\102.8523\\\\343.01\\\\-51.72631\\\\105.8109\\\\343.01\\\\-52.41647\\\\108.1547\\\\343.01\\\\-53.32031\\\\109.1202\\\\343.01\\\\-54.39367\\\\110.4984\\\\343.01\\\\-55.85938\\\\112.8422\\\\343.01\\\\-57.07632\\\\115.1859\\\\343.01\\\\-58.80323\\\\117.5297\\\\343.01\\\\-59.511\\\\119.8734\\\\343.01\\\\-60.86516\\\\122.2172\\\\343.01\\\\-61.57744\\\\124.5609\\\\343.01\\\\-61.88775\\\\126.9047\\\\343.01\\\\-63.71547\\\\129.2484\\\\343.01\\\\-64.02027\\\\131.5922\\\\343.01\\\\-64.8298\\\\133.9359\\\\343.01\\\\-65.21739\\\\136.2797\\\\343.01\\\\-66.03065\\\\138.6234\\\\343.01\\\\-66.32159\\\\145.6547\\\\343.01\\\\-66.52577\\\\147.9984\\\\343.01\\\\-68.15379\\\\150.3422\\\\343.01\\\\-68.19411\\\\152.6859\\\\343.01\\\\-68.12855\\\\159.7172\\\\343.01\\\\-67.38281\\\\160.578\\\\343.01\\\\-66.33832\\\\162.0609\\\\343.01\\\\-66.11034\\\\169.0922\\\\343.01\\\\-65.01181\\\\173.7797\\\\343.01\\\\-64.67431\\\\176.1234\\\\343.01\\\\-63.80735\\\\178.4672\\\\343.01\\\\-63.54492\\\\180.8109\\\\343.01\\\\-61.65305\\\\183.1547\\\\343.01\\\\-61.42054\\\\185.4984\\\\343.01\\\\-60.49805\\\\187.8422\\\\343.01\\\\-58.00781\\\\191.825\\\\343.01\\\\-57.387\\\\192.5297\\\\343.01\\\\-56.74913\\\\194.8734\\\\343.01\\\\-55.66406\\\\195.936\\\\343.01\\\\-54.58899\\\\197.2172\\\\343.01\\\\-53.60318\\\\199.5609\\\\343.01\\\\-50.97656\\\\203.258\\\\343.01\\\\-48.00071\\\\206.5922\\\\343.01\\\\-45.5013\\\\208.9359\\\\343.01\\\\-43.50982\\\\211.2797\\\\343.01\\\\-41.60156\\\\212.84\\\\343.01\\\\-39.25781\\\\215.3739\\\\343.01\\\\-35.93977\\\\218.3109\\\\343.01\\\\-34.57031\\\\219.3768\\\\343.01\\\\-32.52378\\\\220.6547\\\\343.01\\\\-32.22656\\\\220.9395\\\\343.01\\\\-29.88281\\\\221.9077\\\\343.01\\\\-28.61672\\\\222.9984\\\\343.01\\\\-27.53906\\\\224.1391\\\\343.01\\\\-25.19531\\\\224.7669\\\\343.01\\\\-24.54516\\\\225.3422\\\\343.01\\\\-20.89297\\\\227.6859\\\\343.01\\\\-20.50781\\\\228.0531\\\\343.01\\\\-18.16406\\\\228.8638\\\\343.01\\\\-15.82031\\\\229.1627\\\\343.01\\\\-14.73801\\\\230.0297\\\\343.01\\\\-13.47656\\\\231.7823\\\\343.01\\\\-11.13281\\\\231.9774\\\\343.01\\\\-10.70429\\\\232.3734\\\\343.01\\\\-11.13281\\\\232.7537\\\\343.01\\\\-15.82031\\\\232.8044\\\\343.01\\\\-20.50781\\\\232.9015\\\\343.01\\\\-34.57031\\\\232.9126\\\\343.01\\\\-41.60156\\\\232.9345\\\\343.01\\\\-58.00781\\\\232.9453\\\\343.01\\\\-60.35156\\\\232.9345\\\\343.01\\\\-62.69531\\\\233.5567\\\\343.01\\\\-65.03906\\\\232.8672\\\\343.01\\\\-83.78906\\\\232.8788\\\\343.01\\\\-93.16406\\\\232.9126\\\\343.01\\\\-95.50781\\\\233.5393\\\\343.01\\\\-97.85156\\\\233.7035\\\\343.01\\\\-102.5391\\\\233.7288\\\\343.01\\\\-121.2891\\\\233.7406\\\\343.01\\\\-137.6953\\\\233.7202\\\\343.01\\\\-142.3828\\\\233.7337\\\\343.01\\\\-163.4766\\\\233.7135\\\\343.01\\\\-168.1641\\\\233.7435\\\\343.01\\\\-189.2578\\\\233.76\\\\343.01\\\\-200.9766\\\\233.788\\\\343.01\\\\-208.0078\\\\233.7738\\\\343.01\\\\-222.0703\\\\233.8144\\\\343.01\\\\-243.1641\\\\233.72\\\\343.01\\\\-247.8516\\\\233.5974\\\\343.01\\\\-250.1953\\\\233.592\\\\343.01\\\\-252.5391\\\\233.6761\\\\343.01\\\\-254.8828\\\\233.8458\\\\343.01\\\\-257.2266\\\\233.8853\\\\343.01\\\\-258.0715\\\\234.7172\\\\343.01\\\\-260.9406\\\\237.0609\\\\343.01\\\\-261.9141\\\\237.9809\\\\343.01\\\\-263.0811\\\\239.4047\\\\343.01\\\\-263.0952\\\\241.7484\\\\343.01\\\\-262.8482\\\\244.0922\\\\343.01\\\\-261.1393\\\\246.4359\\\\343.01\\\\-259.5703\\\\248.77\\\\343.01\\\\-257.2359\\\\251.1234\\\\343.01\\\\-256.1725\\\\253.4672\\\\343.01\\\\-254.8828\\\\254.541\\\\343.01\\\\-253.6187\\\\255.8109\\\\343.01\\\\-252.5391\\\\257.1211\\\\343.01\\\\-248.9935\\\\260.4984\\\\343.01\\\\-246.7643\\\\262.8422\\\\343.01\\\\-243.1641\\\\266.3453\\\\343.01\\\\-239.7483\\\\269.8734\\\\343.01\\\\-238.4766\\\\270.9653\\\\343.01\\\\-237.2486\\\\272.2172\\\\343.01\\\\-236.1328\\\\273.5273\\\\343.01\\\\-235.0992\\\\274.5609\\\\343.01\\\\-233.7891\\\\275.6767\\\\343.01\\\\-232.5432\\\\276.9047\\\\343.01\\\\-231.4453\\\\278.1825\\\\343.01\\\\-227.9297\\\\281.5922\\\\343.01\\\\-224.4141\\\\285.1934\\\\343.01\\\\-222.0703\\\\287.4207\\\\343.01\\\\-218.7154\\\\290.9672\\\\343.01\\\\-217.3828\\\\291.9945\\\\343.01\\\\-215.0391\\\\293.3382\\\\343.01\\\\-212.6953\\\\294.5551\\\\343.01\\\\-210.3516\\\\295.3438\\\\343.01\\\\-209.9888\\\\295.6547\\\\343.01\\\\-208.0078\\\\296.7353\\\\343.01\\\\-203.3203\\\\296.9163\\\\343.01\\\\-198.6328\\\\296.9163\\\\343.01\\\\-193.9453\\\\296.8423\\\\343.01\\\\-179.8828\\\\296.8319\\\\343.01\\\\-168.1641\\\\296.8428\\\\343.01\\\\-161.1328\\\\296.8266\\\\343.01\\\\-147.0703\\\\296.8376\\\\343.01\\\\-121.2891\\\\296.8209\\\\343.01\\\\-111.9141\\\\296.8435\\\\343.01\\\\-97.85156\\\\296.855\\\\343.01\\\\-90.82031\\\\296.838\\\\343.01\\\\-65.03906\\\\296.8668\\\\343.01\\\\-53.32031\\\\296.8553\\\\343.01\\\\-51.43964\\\\297.9984\\\\343.01\\\\-50.97656\\\\298.3864\\\\343.01\\\\-48.63281\\\\297.5516\\\\343.01\\\\-46.28906\\\\298.5331\\\\343.01\\\\-43.94531\\\\298.5331\\\\343.01\\\\-41.60156\\\\298.2598\\\\343.01\\\\-39.25781\\\\296.8499\\\\343.01\\\\-36.91406\\\\297.9681\\\\343.01\\\\-32.22656\\\\298.5331\\\\343.01\\\\-29.88281\\\\296.8741\\\\343.01\\\\-27.53906\\\\296.8383\\\\343.01\\\\-25.19531\\\\296.9201\\\\343.01\\\\-22.85156\\\\298.5331\\\\343.01\\\\-20.50781\\\\296.8441\\\\343.01\\\\-18.16406\\\\298.1147\\\\343.01\\\\-15.82031\\\\297.8174\\\\343.01\"\n"
+"                     }\n"
+"                  }\n"
+"               ]\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"10\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,002a\" : {\n"
+"               \"Name\" : \"ROIDisplayColor\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"255\\\\0\\\\255\"\n"
+"            },\n"
+"            \"3006,0040\" : {\n"
+"               \"Name\" : \"ContourSequence\",\n"
+"               \"Type\" : \"Sequence\",\n"
+"               \"Value\" : [\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"0\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"13.63579\\\\147.5839\\\\274.01\\\\11.63579\\\\147.882\\\\274.01\\\\10.13579\\\\148.3365\\\\274.01\\\\9.135789\\\\148.7989\\\\274.01\\\\7.635788\\\\149.7859\\\\274.01\\\\6.037574\\\\151.4199\\\\274.01\\\\5.095466\\\\152.9199\\\\274.01\\\\4.507\\\\154.4199\\\\274.01\\\\4.299851\\\\155.4199\\\\274.01\\\\4.099024\\\\157.4199\\\\274.01\\\\4.240627\\\\158.9199\\\\274.01\\\\4.522152\\\\160.4199\\\\274.01\\\\5.437513\\\\162.4199\\\\274.01\\\\6.109003\\\\163.4199\\\\274.01\\\\7.635788\\\\164.9824\\\\274.01\\\\9.135789\\\\165.9763\\\\274.01\\\\10.63579\\\\166.5941\\\\274.01\\\\12.13579\\\\166.9426\\\\274.01\\\\13.63579\\\\167.0941\\\\274.01\\\\15.13579\\\\166.988\\\\274.01\\\\17.13579\\\\166.537\\\\274.01\\\\19.13579\\\\165.5782\\\\274.01\\\\20.63579\\\\164.3655\\\\274.01\\\\22.19224\\\\162.4199\\\\274.01\\\\22.7061\\\\161.4199\\\\274.01\\\\23.21912\\\\159.9199\\\\274.01\\\\23.42485\\\\158.9199\\\\274.01\\\\23.5186\\\\156.9199\\\\274.01\\\\23.23427\\\\154.9199\\\\274.01\\\\22.72173\\\\153.4199\\\\274.01\\\\22.22746\\\\152.4199\\\\274.01\\\\21.13579\\\\150.9318\\\\274.01\\\\20.09829\\\\149.9199\\\\274.01\\\\18.63579\\\\148.8949\\\\274.01\\\\17.13579\\\\148.2402\\\\274.01\\\\15.63579\\\\147.8214\\\\274.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"47\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"1\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-2.854718\\\\157.4199\\\\277.01\\\\-2.472545\\\\160.9199\\\\277.01\\\\-1.487775\\\\163.9199\\\\277.01\\\\-0.4315192\\\\165.9199\\\\277.01\\\\0.9787372\\\\167.9199\\\\277.01\\\\2.406915\\\\169.4199\\\\277.01\\\\3.635788\\\\170.4986\\\\277.01\\\\5.135788\\\\171.5571\\\\277.01\\\\6.135788\\\\172.111\\\\277.01\\\\8.135789\\\\173.0158\\\\277.01\\\\10.13579\\\\173.6004\\\\277.01\\\\12.63579\\\\174.0313\\\\277.01\\\\15.13579\\\\174.0013\\\\277.01\\\\17.63579\\\\173.571\\\\277.01\\\\19.13579\\\\173.1137\\\\277.01\\\\21.63579\\\\172.0419\\\\277.01\\\\23.13579\\\\171.1081\\\\277.01\\\\24.63579\\\\169.9456\\\\277.01\\\\26.19738\\\\168.4199\\\\277.01\\\\27.74516\\\\166.4199\\\\277.01\\\\28.32924\\\\165.4199\\\\277.01\\\\29.29383\\\\163.4199\\\\277.01\\\\29.81079\\\\161.9199\\\\277.01\\\\30.28139\\\\159.9199\\\\277.01\\\\30.45172\\\\157.4199\\\\277.01\\\\30.29068\\\\154.9199\\\\277.01\\\\29.82399\\\\152.9199\\\\277.01\\\\28.86814\\\\150.4199\\\\277.01\\\\27.79128\\\\148.4199\\\\277.01\\\\26.27724\\\\146.4199\\\\277.01\\\\24.63579\\\\144.8084\\\\277.01\\\\22.63579\\\\143.3281\\\\277.01\\\\21.63579\\\\142.7463\\\\277.01\\\\19.63579\\\\141.8135\\\\277.01\\\\18.13579\\\\141.3103\\\\277.01\\\\15.63579\\\\140.7907\\\\277.01\\\\13.63579\\\\140.6754\\\\277.01\\\\12.13579\\\\140.7704\\\\277.01\\\\9.635789\\\\141.2671\\\\277.01\\\\8.135789\\\\141.7522\\\\277.01\\\\5.135788\\\\143.2278\\\\277.01\\\\3.635788\\\\144.2585\\\\277.01\\\\2.350577\\\\145.4199\\\\277.01\\\\0.5107885\\\\147.4199\\\\277.01\\\\-0.5040925\\\\148.9199\\\\277.01\\\\-1.520461\\\\150.9199\\\\277.01\\\\-2.489212\\\\153.9199\\\\277.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"52\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"2\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n";
+const char* k_rtStruct_json06 =
+"                        \"Value\" : \"-5.041041\\\\149.9199\\\\280.01\\\\-6.018211\\\\152.9199\\\\280.01\\\\-6.511849\\\\155.9199\\\\280.01\\\\-6.502212\\\\158.9199\\\\280.01\\\\-5.99526\\\\161.9199\\\\280.01\\\\-5.006773\\\\164.9199\\\\280.01\\\\-4.038581\\\\166.9199\\\\280.01\\\\-3.442042\\\\167.9199\\\\280.01\\\\-2.039212\\\\169.9199\\\\280.01\\\\-1.135438\\\\170.9199\\\\280.01\\\\1.135789\\\\173.1176\\\\280.01\\\\3.135788\\\\174.5681\\\\280.01\\\\6.135788\\\\176.1244\\\\280.01\\\\8.635789\\\\177.0288\\\\280.01\\\\11.13579\\\\177.5844\\\\280.01\\\\13.63579\\\\177.7594\\\\280.01\\\\16.63579\\\\177.5678\\\\280.01\\\\18.63579\\\\177.1104\\\\280.01\\\\21.63579\\\\176.0678\\\\280.01\\\\23.63579\\\\175.0686\\\\280.01\\\\25.13579\\\\174.1177\\\\280.01\\\\27.63579\\\\172.1109\\\\280.01\\\\29.24222\\\\170.4199\\\\280.01\\\\30.74459\\\\168.4199\\\\280.01\\\\31.88371\\\\166.4199\\\\280.01\\\\32.81119\\\\164.4199\\\\280.01\\\\33.32179\\\\162.9199\\\\280.01\\\\33.82031\\\\160.9199\\\\280.01\\\\34.18623\\\\157.4199\\\\280.01\\\\34.07163\\\\155.9199\\\\280.01\\\\33.74713\\\\153.4199\\\\280.01\\\\32.83294\\\\150.4199\\\\280.01\\\\32.18903\\\\148.9199\\\\280.01\\\\30.80605\\\\146.4199\\\\280.01\\\\29.31239\\\\144.4199\\\\280.01\\\\28.13579\\\\143.1796\\\\280.01\\\\26.63579\\\\141.776\\\\280.01\\\\24.63579\\\\140.3194\\\\280.01\\\\23.63579\\\\139.7211\\\\280.01\\\\21.63579\\\\138.7252\\\\280.01\\\\19.13579\\\\137.8053\\\\280.01\\\\16.63579\\\\137.2421\\\\280.01\\\\13.63579\\\\137.0479\\\\280.01\\\\10.63579\\\\137.2928\\\\280.01\\\\8.635789\\\\137.7512\\\\280.01\\\\7.135788\\\\138.2404\\\\280.01\\\\4.635788\\\\139.3442\\\\280.01\\\\3.135788\\\\140.2151\\\\280.01\\\\1.635789\\\\141.2464\\\\280.01\\\\-0.8642115\\\\143.5646\\\\280.01\\\\-2.084666\\\\144.9199\\\\280.01\\\\-3.518559\\\\146.9199\\\\280.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846442461900001.533642576430\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"35\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"3\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-36.86421\\\\165.9127\\\\283.01\\\\-33.86421\\\\165.5801\\\\283.01\\\\-32.36421\\\\165.0618\\\\283.01\\\\-31.36421\\\\164.5518\\\\283.01\\\\-29.86421\\\\163.5032\\\\283.01\\\\-28.76573\\\\162.4199\\\\283.01\\\\-27.6906\\\\160.9199\\\\283.01\\\\-26.75524\\\\158.9199\\\\283.01\\\\-26.24242\\\\156.9199\\\\283.01\\\\-26.08132\\\\155.4199\\\\283.01\\\\-26.27046\\\\153.4199\\\\283.01\\\\-26.69974\\\\151.9199\\\\283.01\\\\-27.3034\\\\150.4199\\\\283.01\\\\-28.22451\\\\148.9199\\\\283.01\\\\-29.07254\\\\147.9199\\\\283.01\\\\-30.86421\\\\146.4123\\\\283.01\\\\-32.86421\\\\145.387\\\\283.01\\\\-34.86421\\\\144.8136\\\\283.01\\\\-36.36421\\\\144.637\\\\283.01\\\\-38.86421\\\\144.8261\\\\283.01\\\\-40.36421\\\\145.2685\\\\283.01\\\\-41.86421\\\\145.9129\\\\283.01\\\\-43.36421\\\\146.839\\\\283.01\\\\-45.00815\\\\148.4199\\\\283.01\\\\-46.03782\\\\149.9199\\\\283.01\\\\-46.92191\\\\151.9199\\\\283.01\\\\-47.13395\\\\152.9199\\\\283.01\\\\-47.39546\\\\155.4199\\\\283.01\\\\-47.01165\\\\158.4199\\\\283.01\\\\-46.47908\\\\159.9199\\\\283.01\\\\-45.95449\\\\160.9199\\\\283.01\\\\-44.36421\\\\162.8921\\\\283.01\\\\-42.36421\\\\164.4824\\\\283.01\\\\-41.36421\\\\165.0054\\\\283.01\\\\-39.86421\\\\165.5288\\\\283.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846477463900001.467218939844\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"4\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"6.135788\\\\112.0556\\\\283.01\\\\8.135789\\\\113.058\\\\283.01\\\\9.635789\\\\113.5261\\\\283.01\\\\11.13579\\\\113.7211\\\\283.01\\\\13.13579\\\\113.7083\\\\283.01\\\\14.63579\\\\113.4775\\\\283.01\\\\17.13579\\\\112.4942\\\\283.01\\\\18.63579\\\\111.5302\\\\283.01\\\\20.27973\\\\109.9199\\\\283.01\\\\21.29551\\\\108.4199\\\\283.01\\\\22.15553\\\\106.4199\\\\283.01\\\\22.49763\\\\104.4199\\\\283.01\\\\22.56146\\\\102.9199\\\\283.01\\\\22.45816\\\\101.4199\\\\283.01\\\\22.20454\\\\99.91986\\\\283.01\\\\21.35107\\\\97.91986\\\\283.01\\\\20.75722\\\\96.91986\\\\283.01\\\\19.13579\\\\95.12147\\\\283.01\\\\18.13579\\\\94.30956\\\\283.01\\\\17.13579\\\\93.71847\\\\283.01\\\\15.13579\\\\92.88696\\\\283.01\\\\13.63579\\\\92.61065\\\\283.01\\\\11.63579\\\\92.5317\\\\283.01\\\\9.135789\\\\92.82371\\\\283.01\\\\7.635788\\\\93.33433\\\\283.01\\\\6.635788\\\\93.82958\\\\283.01\\\\5.135788\\\\94.8808\\\\283.01\\\\4.049851\\\\95.91986\\\\283.01\\\\2.948288\\\\97.41986\\\\283.01\\\\1.984473\\\\99.41986\\\\283.01\\\\1.529539\\\\100.9199\\\\283.01\\\\1.326578\\\\103.4199\\\\283.01\\\\1.542039\\\\105.4199\\\\283.01\\\\2.010788\\\\106.9199\\\\283.01\\\\3.000074\\\\108.9199\\\\283.01\\\\4.135788\\\\110.3525\\\\283.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846504465400001.571321740640\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"60\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"5\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"9.635789\\\\134.821\\\\283.01\\\\6.635788\\\\135.7311\\\\283.01\\\\5.135788\\\\136.3564\\\\283.01\\\\3.135788\\\\137.3443\\\\283.01\\\\1.635789\\\\138.235\\\\283.01\\\\0.1357885\\\\139.3028\\\\283.01\\\\-1.698245\\\\140.9199\\\\283.01\\\\-4.057226\\\\143.4199\\\\283.01\\\\-5.492074\\\\145.4199\\\\283.01\\\\-6.94348\\\\147.9199\\\\283.01\\\\-8.519453\\\\151.4199\\\\283.01\\\\-9.020194\\\\152.9199\\\\283.01\\\\-9.438021\\\\154.9199\\\\283.01\\\\-9.607633\\\\157.4199\\\\283.01\\\\-9.515528\\\\158.9199\\\\283.01\\\\-8.990245\\\\161.4199\\\\283.01\\\\-7.952794\\\\164.4199\\\\283.01\\\\-7.072832\\\\166.4199\\\\283.01\\\\-6.031465\\\\168.4199\\\\283.01\\\\-5.07724\\\\169.9199\\\\283.01\\\\-3.571932\\\\171.9199\\\\283.01\\\\-2.141343\\\\173.4199\\\\283.01\\\\-0.3642115\\\\175.0795\\\\283.01\\\\1.635789\\\\176.5706\\\\283.01\\\\3.135788\\\\177.5459\\\\283.01\\\\5.635788\\\\178.9883\\\\283.01\\\\7.635788\\\\180.0143\\\\283.01\\\\9.135789\\\\180.633\\\\283.01\\\\12.13579\\\\181.4936\\\\283.01\\\\13.63579\\\\181.6266\\\\283.01\\\\15.13579\\\\181.5587\\\\283.01\\\\17.63579\\\\181.0121\\\\283.01\\\\20.13579\\\\179.997\\\\283.01\\\\23.63579\\\\178.0965\\\\283.01\\\\26.63579\\\\176.1115\\\\283.01\\\\28.63579\\\\174.5219\\\\283.01\\\\30.30579\\\\172.9199\\\\283.01\\\\32.35387\\\\170.4199\\\\283.01\\\\33.34441\\\\168.9199\\\\283.01\\\\34.6741\\\\166.4199\\\\283.01\\\\35.77129\\\\163.9199\\\\283.01\\\\36.76814\\\\160.9199\\\\283.01\\\\37.28946\\\\158.4199\\\\283.01\\\\37.36674\\\\156.4199\\\\283.01\\\\37.27414\\\\154.9199\\\\283.01\\\\36.83626\\\\152.9199\\\\283.01\\\\36.33173\\\\151.4199\\\\283.01\\\\35.21079\\\\148.9199\\\\283.01\\\\33.79925\\\\146.4199\\\\283.01\\\\32.80308\\\\144.9199\\\\283.01\\\\30.83086\\\\142.4199\\\\283.01\\\\29.13579\\\\140.7037\\\\283.01\\\\26.63579\\\\138.7033\\\\283.01\\\\25.13579\\\\137.7264\\\\283.01\\\\23.13579\\\\136.6915\\\\283.01\\\\21.13579\\\\135.8365\\\\283.01\\\\19.63579\\\\135.3254\\\\283.01\\\\17.63579\\\\134.7876\\\\283.01\\\\14.63579\\\\134.3352\\\\283.01\\\\12.63579\\\\134.3453\\\\283.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846528466800001.465226999207\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"35\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"6\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"11.63579\\\\193.3493\\\\283.01\\\\9.135789\\\\194.3455\\\\283.01\\\\7.635788\\\\195.3096\\\\283.01\\\\5.991849\\\\196.9199\\\\283.01\\\\4.976066\\\\198.4199\\\\283.01\\\\4.116052\\\\200.4199\\\\283.01\\\\3.773946\\\\202.4199\\\\283.01\\\\3.710113\\\\203.9199\\\\283.01\\\\3.81342\\\\205.4199\\\\283.01\\\\4.067039\\\\206.9199\\\\283.01\\\\4.920511\\\\208.9199\\\\283.01\\\\5.51436\\\\209.9199\\\\283.01\\\\7.135788\\\\211.7182\\\\283.01\\\\8.135789\\\\212.5302\\\\283.01\\\\9.135789\\\\213.1212\\\\283.01\\\\11.13579\\\\213.9528\\\\283.01\\\\12.63579\\\\214.2291\\\\283.01\\\\14.63579\\\\214.308\\\\283.01\\\\17.13579\\\\214.016\\\\283.01\\\\18.63579\\\\213.5054\\\\283.01\\\\19.63579\\\\213.0101\\\\283.01\\\\21.13579\\\\211.9589\\\\283.01\\\\22.22173\\\\210.9199\\\\283.01\\\\23.32329\\\\209.4199\\\\283.01\\\\24.2871\\\\207.4199\\\\283.01\\\\24.74204\\\\205.9199\\\\283.01\\\\24.945\\\\203.4199\\\\283.01\\\\24.72954\\\\201.4199\\\\283.01\\\\24.26079\\\\199.9199\\\\283.01\\\\23.2715\\\\197.9199\\\\283.01\\\\22.13579\\\\196.4872\\\\283.01\\\\20.13579\\\\194.774\\\\283.01\\\\18.13579\\\\193.7817\\\\283.01\\\\16.63579\\\\193.3109\\\\283.01\\\\14.13579\\\\193.0843\\\\283.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848817597700001.509440095881\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"39\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"7\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"73.62865\\\\152.4199\\\\283.01\\\\73.25758\\\\149.9199\\\\283.01\\\\72.72131\\\\148.4199\\\\283.01\\\\72.19829\\\\147.4199\\\\283.01\\\\70.63579\\\\145.5002\\\\283.01\\\\69.13579\\\\144.2413\\\\283.01\\\\67.63579\\\\143.3861\\\\283.01\\\\66.13579\\\\142.8237\\\\283.01\\\\64.63579\\\\142.5712\\\\283.01\\\\63.13579\\\\142.4671\\\\283.01\\\\60.13579\\\\142.7724\\\\283.01\\\\58.63579\\\\143.2817\\\\283.01\\\\57.63579\\\\143.7984\\\\283.01\\\\56.13579\\\\144.8652\\\\283.01\\\\55.05246\\\\145.9199\\\\283.01\\\\53.9715\\\\147.4199\\\\283.01\\\\53.02681\\\\149.4199\\\\283.01\\\\52.51399\\\\151.4199\\\\283.01\\\\52.35289\\\\152.9199\\\\283.01\\\\52.53963\\\\154.9199\\\\283.01\\\\52.945\\\\156.4199\\\\283.01\\\\53.53444\\\\157.9199\\\\283.01\\\\54.11373\\\\158.9199\\\\283.01\\\\55.13579\\\\160.2145\\\\283.01\\\\56.13579\\\\161.186\\\\283.01\\\\57.13579\\\\161.9566\\\\283.01\\\\59.13579\\\\163.0032\\\\283.01\\\\60.63579\\\\163.4761\\\\283.01\\\\62.13579\\\\163.6955\\\\283.01\\\\64.13579\\\\163.6699\\\\283.01\\\\65.13579\\\\163.5261\\\\283.01\\\\66.63579\\\\163.0843\\\\283.01\\\\68.13579\\\\162.4546\\\\283.01\\\\69.63579\\\\161.5154\\\\283.01\\\\70.63579\\\\160.6282\\\\283.01\\\\71.68726\\\\159.4199\\\\283.01\\\\72.3094\\\\158.4199\\\\283.01\\\\73.20454\\\\156.4199\\\\283.01\\\\73.48447\\\\154.9199\\\\283.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848849599600001.538291679804\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"46\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"8\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-17.14754\\\\156.4199\\\\286.01\\\\-17.54129\\\\154.9199\\\\286.01\\\\-18.18997\\\\153.4199\\\\286.01\\\\-19.27567\\\\151.4199\\\\286.01\\\\-22.23767\\\\146.4199\\\\286.01\\\\-23.71109\\\\144.4199\\\\286.01\\\\-25.86421\\\\142.2542\\\\286.01\\\\-27.86421\\\\140.7934\\\\286.01\\\\-29.86421\\\\139.7504\\\\286.01\\\\-32.36421\\\\138.8496\\\\286.01\\\\-34.86421\\\\138.3014\\\\286.01\\\\-37.86421\\\\138.2204\\\\286.01\\\\-38.86421\\\\138.315\\\\286.01\\\\-40.86421\\\\138.7523\\\\286.01\\\\-42.36421\\\\139.2324\\\\286.01\\\\-44.86421\\\\140.3181\\\\286.01\\\\-46.36421\\\\141.2324\\\\286.01\\\\-48.36421\\\\142.7916\\\\286.01\\\\-49.47421\\\\143.9199\\\\286.01\\\\-51.016\\\\145.9199\\\\286.01\\\\-51.87383\\\\147.4199\\\\286.01\\\\-52.97685\\\\149.9199\\\\286.01\\\\-53.49453\\\\151.9199\\\\286.01\\\\-53.73249\\\\155.4199\\\\286.01\\\\-53.47443\\\\158.9199\\\\286.01\\\\-52.93605\\\\160.9199\\\\286.01\\\\-52.55032\\\\161.9199\\\\286.01\\\\-51.54154\\\\163.9199\\\\286.01\\\\-50.53799\\\\165.4199\\\\286.01\\\\-49.36421\\\\166.7567\\\\286.01\\\\-46.86421\\\\169.0795\\\\286.01\\\\-45.36421\\\\170.0664\\\\286.01\\\\-43.36421\\\\171.06\\\\286.01\\\\-41.86421\\\\171.5856\\\\286.01\\\\-39.86421\\\\172.0751\\\\286.01\\\\-36.86421\\\\172.2774\\\\286.01\\\\-33.36421\\\\172.0395\\\\286.01\\\\-31.36421\\\\171.5115\\\\286.01\\\\-30.36421\\\\171.1171\\\\286.01\\\\-28.36421\\\\170.1204\\\\286.01\\\\-26.86421\\\\169.1277\\\\286.01\\\\-25.43843\\\\167.9199\\\\286.01\\\\-24.36421\\\\166.8613\\\\286.01\\\\-22.68564\\\\164.9199\\\\286.01\\\\-20.18366\\\\161.4199\\\\286.01\\\\-18.24384\\\\158.4199\\\\286.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848866600500001.541849142008\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"143\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"9\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-14.57135\\\\153.4199\\\\286.01\\\\-15.49516\\\\155.4199\\\\286.01\\\\-15.75707\\\\156.4199\\\\286.01\\\\-15.78467\\\\157.4199\\\\286.01\\\\-15.0439\\\\158.9199\\\\286.01\\\\-14.02238\\\\160.4199\\\\286.01\\\\-11.75342\\\\163.4199\\\\286.01\\\\-10.05119\\\\165.9199\\\\286.01\\\\-9.266294\\\\166.9199\\\\286.01\\\\-6.534666\\\\170.9199\\\\286.01\\\\-4.989212\\\\172.9199\\\\286.01\\\\-2.364212\\\\175.6552\\\\286.01\\\\0.6357885\\\\178.3645\\\\286.01\\\\3.162897\\\\180.9199\\\\286.01\\\\4.831301\\\\182.9199\\\\286.01\\\\5.793481\\\\184.4199\\\\286.01\\\\6.209064\\\\185.4199\\\\286.01\\\\6.251529\\\\186.4199\\\\286.01\\\\5.84561\\\\187.4199\\\\286.01\\\\5.229538\\\\188.4199\\\\286.01\\\\3.904728\\\\189.9199\\\\286.01\\\\1.509165\\\\192.4199\\\\286.01\\\\-0.01421149\\\\194.4199\\\\286.01\\\\-1.566989\\\\197.4199\\\\286.01\\\\-1.955878\\\\198.4199\\\\286.01\\\\-2.473254\\\\200.4199\\\\286.01\\\\-2.691339\\\\203.4199\\\\286.01\\\\-2.664743\\\\204.9199\\\\286.01\\\\-2.487896\\\\206.9199\\\\286.01\\\\-1.985179\\\\208.9199\\\\286.01\\\\-0.9445686\\\\211.4199\\\\286.01\\\\-0.07303502\\\\212.9199\\\\286.01\\\\0.9783811\\\\214.4199\\\\286.01\\\\1.885789\\\\215.4199\\\\286.01\\\\3.635788\\\\217.0773\\\\286.01\\\\5.135788\\\\218.1228\\\\286.01\\\\6.635788\\\\218.9891\\\\286.01\\\\9.135789\\\\220.027\\\\286.01\\\\11.13579\\\\220.5289\\\\286.01\\\\14.13579\\\\220.731\\\\286.01\\\\17.13579\\\\220.5555\\\\286.01\\\\19.13579\\\\220.0785\\\\286.01\\\\20.63579\\\\219.56\\\\286.01\\\\22.63579\\\\218.5779\\\\286.01\\\\24.13579\\\\217.5997\\\\286.01\\\\26.63579\\\\215.3391\\\\286.01\\\\28.25469\\\\213.4199\\\\286.01\\\\29.69829\\\\210.9199\\\\286.01\\\\30.32329\\\\209.4199\\\\286.01\\\\30.81052\\\\207.9199\\\\286.01\\\\31.25947\\\\205.9199\\\\286.01\\\\31.36474\\\\202.9199\\\\286.01\\\\31.25015\\\\201.4199\\\\286.01\\\\30.79802\\\\199.4199\\\\286.01\\\\30.30698\\\\197.9199\\\\286.01\\\\29.65141\\\\196.4199\\\\286.01\\\\28.84218\\\\194.9199\\\\286.01\\\\27.82176\\\\193.4199\\\\286.01\\\\26.13579\\\\191.552\\\\286.01\\\\23.59412\\\\188.9199\\\\286.01\\\\22.45183\\\\187.4199\\\\286.01\\\\21.87136\\\\185.9199\\\\286.01\\\\22.07775\\\\184.9199\\\\286.01\\\\22.51447\\\\183.9199\\\\286.01\\\\23.47013\\\\182.4199\\\\286.01\\\\25.57\\\\179.9199\\\\286.01\\\\27.5517\\\\177.9199\\\\286.01\\\\30.13579\\\\175.5383\\\\286.01\\\\32.1768\\\\173.4199\\\\286.01\\\\33.78976\\\\171.4199\\\\286.01\\\\35.44261\\\\168.9199\\\\286.01\\\\37.52156\\\\165.9199\\\\286.01\\\\40.48853\\\\161.9199\\\\286.01\\\\42.13579\\\\160.0113\\\\286.01\\\\43.13579\\\\159.0058\\\\286.01\\\\44.13579\\\\158.355\\\\286.01\\\\45.63579\\\\159.3214\\\\286.01\\\\47.13579\\\\160.8254\\\\286.01\\\\48.51277\\\\162.4199\\\\286.01\\\\50.37894\\\\164.4199\\\\286.01\\\\52.63579\\\\166.5075\\\\286.01\\\\54.13579\\\\167.5623\\\\286.01\\\\57.13579\\\\169.0584\\\\286.01\\\\58.63579\\\\169.5623\\\\286.01\\\\60.63579\\\\170.0095\\\\286.01\\\\62.13579\\\\170.1383\\\\286.01\\\\65.13579\\\\170.0383\\\\286.01\\\\67.13579\\\\169.5946\\\\286.01\\\\68.63579\\\\169.1182\\\\286.01\\\\71.13579\\\\168.0377\\\\286.01\\\\72.63579\\\\167.1193\\\\286.01\\\\74.63579\\\\165.5595\\\\286.01\\\\75.7575\\\\164.4199\\\\286.01\\\\77.29167\\\\162.4199\\\\286.01\\\\78.15794\\\\160.9199\\\\286.01\\\\79.25264\\\\158.4199\\\\286.01\\\\79.77\\\\156.4199\\\\286.01\\\\80.00407\\\\152.9199\\\\286.01\\\\79.79632\\\\149.9199\\\\286.01\\\\79.30515\\\\147.9199\\\\286.01\\\\78.7759\\\\146.4199\\\\286.01\\\\77.78234\\\\144.4199\\\\286.01\\\\76.78518\\\\142.9199\\\\286.01\\\\75.44829\\\\141.4199\\\\286.01\\\\73.63579\\\\139.7192\\\\286.01\\\\71.63579\\\\138.3489\\\\286.01\\\\69.63579\\\\137.3365\\\\286.01\\\\68.13579\\\\136.7758\\\\286.01\\\\66.13579\\\\136.2751\\\\286.01\\\\62.63579\\\\136.0838\\\\286.01\\\\59.63579\\\\136.315\\\\286.01\\\\57.63579\\\\136.8432\\\\286.01\\\\56.63579\\\\137.2282\\\\286.01\\\\54.63579\\\\138.2251\\\\286.01\\\\53.13579\\\\139.2217\\\\286.01\\\\51.73048\\\\140.4199\\\\286.01\\\\50.63579\\\\141.5006\\\\286.01\\\\49.01391\\\\143.4199\\\\286.01\\\\45.63579\\\\148.6563\\\\286.01\\\\44.13579\\\\150.5612\\\\286.01\\\\43.13579\\\\151.2219\\\\286.01\\\\42.63579\\\\151.0217\\\\286.01\\\\40.13579\\\\149.1523\\\\286.01\\\\35.63579\\\\144.8964\\\\286.01\\\\31.34298\\\\140.4199\\\\286.01\\\\29.63579\\\\138.8365\\\\286.01\\\\27.63579\\\\137.2758\\\\286.01\\\\26.13579\\\\136.2875\\\\286.01\\\\21.63579\\\\133.7337\\\\286.01\\\\18.63579\\\\132.2451\\\\286.01\\\\16.13579\\\\131.3449\\\\286.01\\\\14.13579\\\\130.8667\\\\286.01\\\\12.63579\\\\130.8597\\\\286.01\\\\10.63579\\\\131.2148\\\\286.01\\\\9.135789\\\\131.787\\\\286.01\\\\7.135788\\\\132.7495\\\\286.01\\\\3.635788\\\\134.8391\\\\286.01\\\\0.6357885\\\\136.7923\\\\286.01\\\\-1.364211\\\\138.2802\\\\286.01\\\\-3.166659\\\\139.9199\\\\286.01\\\\-5.078728\\\\141.9199\\\\286.01\\\\-8.743597\\\\146.4199\\\\286.01\\\\-10.50432\\\\148.4199\\\\286.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848890601900001.533619501923\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"50\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"10\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"26.28579\\\\112.4199\\\\286.01\\\\27.83857\\\\109.4199\\\\286.01\\\\28.22746\\\\108.4199\\\\286.01\\\\28.74483\\\\106.4199\\\\286.01\\\\28.96292\\\\103.4199\\\\286.01\\\\28.93632\\\\101.9199\\\\286.01\\\\28.75947\\\\99.91986\\\\286.01\\\\28.25676\\\\97.91986\\\\286.01\\\\27.21615\\\\95.41986\\\\286.01\\\\26.34461\\\\93.91986\\\\286.01\\\\25.2932\\\\92.41986\\\\286.01\\\\24.38579\\\\91.41986\\\\286.01\\\\22.63579\\\\89.76245\\\\286.01\\\\21.13579\\\\88.71692\\\\286.01\\\\19.63579\\\\87.85058\\\\286.01\\\\17.13579\\\\86.81271\\\\286.01\\\\15.13579\\\\86.31081\\\\286.01\\\\12.13579\\\\86.10869\\\\286.01\\\\9.135789\\\\86.28422\\\\286.01\\\\7.135788\\\\86.76125\\\\286.01\\\\5.635788\\\\87.27975\\\\286.01\\\\3.635788\\\\88.26181\\\\286.01\\\\2.135788\\\\89.23998\\\\286.01\\\\-0.3642115\\\\91.50063\\\\286.01\\\\-1.983114\\\\93.41986\\\\286.01\\\\-3.426712\\\\95.91986\\\\286.01\\\\-4.051712\\\\97.41986\\\\286.01\\\\-4.538943\\\\98.91986\\\\286.01\\\\-4.987895\\\\100.9199\\\\286.01\\\\-5.093159\\\\103.9199\\\\286.01\\\\-4.978573\\\\105.4199\\\\286.01\\\\-4.526445\\\\107.4199\\\\286.01\\\\-4.035407\\\\108.9199\\\\286.01\\\\-3.379837\\\\110.4199\\\\286.01\\\\-2.570607\\\\111.9199\\\\286.01\\\\-1.120541\\\\113.9199\\\\286.01\\\\-0.1875448\\\\114.9199\\\\286.01\\\\1.635789\\\\116.6058\\\\286.01\\\\3.135788\\\\117.6287\\\\286.01\\\\4.635788\\\\118.4723\\\\286.01\\\\7.135788\\\\119.5478\\\\286.01\\\\8.635789\\\\120.032\\\\286.01\\\\11.13579\\\\120.4815\\\\286.01\\\\13.63579\\\\120.4539\\\\286.01\\\\15.63579\\\\120.0365\\\\286.01\\\\17.13579\\\\119.5128\\\\286.01\\\\20.13579\\\\118.0816\\\\286.01\\\\21.63579\\\\117.1312\\\\286.01\\\\23.63579\\\\115.5595\\\\286.01\\\\24.74579\\\\114.4199\\\\286.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848911603100001.549938975401\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"245\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"11\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-24.36421\\\\171.6106\\\\289.01\\\\-19.86421\\\\167.7245\\\\289.01\\\\-18.36421\\\\166.7742\\\\289.01\\\\-16.86421\\\\166.2171\\\\289.01\\\\-15.86421\\\\166.136\\\\289.01\\\\-14.86421\\\\166.3039\\\\289.01\\\\-12.86421\\\\167.2141\\\\289.01\\\\-11.36421\\\\168.2115\\\\289.01\\\\-8.864211\\\\170.4133\\\\289.01\\\\-7.364212\\\\172.015\\\\289.01\\\\-3.364212\\\\176.4838\\\\289.01\\\\-1.698104\\\\178.4199\\\\289.01\\\\-0.6444128\\\\179.9199\\\\289.01\\\\0.2081026\\\\181.4199\\\\289.01\\\\0.8369604\\\\182.9199\\\\289.01\\\\1.181462\\\\184.4199\\\\289.01\\\\1.159226\\\\185.4199\\\\289.01\\\\0.7715028\\\\186.9199\\\\289.01\\\\0.3016764\\\\187.9199\\\\289.01\\\\-0.6509087\\\\189.4199\\\\289.01\\\\-2.53016\\\\191.9199\\\\289.01\\\\-3.495677\\\\193.4199\\\\289.01\\\\-4.539615\\\\195.4199\\\\289.01\\\\-5.487195\\\\197.9199\\\\289.01\\\\-6.045509\\\\200.4199\\\\289.01\\\\-6.221633\\\\203.9199\\\\289.01\\\\-5.981275\\\\207.4199\\\\289.01\\\\-5.507912\\\\209.4199\\\\289.01\\\\-4.566212\\\\211.9199\\\\289.01\\\\-3.55636\\\\213.9199\\\\289.01\\\\-2.941314\\\\214.9199\\\\289.01\\\\-1.4598\\\\216.9199\\\\289.01\\\\0.1357885\\\\218.6212\\\\289.01\\\\1.135789\\\\219.5154\\\\289.01\\\\3.135788\\\\220.9883\\\\289.01\\\\4.135788\\\\221.6079\\\\289.01\\\\6.135788\\\\222.6179\\\\289.01\\\\8.635789\\\\223.5528\\\\289.01\\\\11.13579\\\\224.0987\\\\289.01\\\\14.13579\\\\224.2564\\\\289.01\\\\17.63579\\\\224.0546\\\\289.01\\\\19.63579\\\\223.5962\\\\289.01\\\\21.13579\\\\223.1108\\\\289.01\\\\23.63579\\\\222.0024\\\\289.01\\\\25.13579\\\\221.1236\\\\289.01\\\\26.63579\\\\220.0783\\\\289.01\\\\29.13579\\\\217.7342\\\\289.01\\\\30.33269\\\\216.4199\\\\289.01\\\\31.75305\\\\214.4199\\\\289.01\\\\33.30979\\\\211.4199\\\\289.01\\\\34.3199\\\\208.4199\\\\289.01\\\\34.75285\\\\206.4199\\\\289.01\\\\34.88579\\\\204.9199\\\\289.01\\\\34.88197\\\\202.4199\\\\289.01\\\\34.74179\\\\200.9199\\\\289.01\\\\34.31215\\\\198.9199\\\\289.01\\\\33.2965\\\\195.9199\\\\289.01\\\\32.31141\\\\193.9199\\\\289.01\\\\30.31499\\\\190.9199\\\\289.01\\\\29.46377\\\\189.9199\\\\289.01\\\\28.09009\\\\187.9199\\\\289.01\\\\27.5465\\\\186.9199\\\\289.01\\\\27.02657\\\\185.4199\\\\289.01\\\\26.95302\\\\183.9199\\\\289.01\\\\27.49712\\\\181.9199\\\\289.01\\\\28.4963\\\\179.9199\\\\289.01\\\\29.48924\\\\178.4199\\\\289.01\\\\31.52524\\\\175.9199\\\\289.01\\\\33.74527\\\\173.4199\\\\289.01\\\\35.40354\\\\171.4199\\\\289.01\\\\37.13579\\\\169.6051\\\\289.01\\\\39.13579\\\\167.7864\\\\289.01\\\\40.63579\\\\166.7655\\\\289.01\\\\41.63579\\\\166.2524\\\\289.01\\\\43.13579\\\\165.754\\\\289.01\\\\44.63579\\\\165.7558\\\\289.01\\\\46.13579\\\\166.2658\\\\289.01\\\\47.13579\\\\166.7949\\\\289.01\\\\48.63579\\\\167.8024\\\\289.01\\\\51.63579\\\\170.0929\\\\289.01\\\\53.13579\\\\171.0158\\\\289.01\\\\55.13579\\\\172.0168\\\\289.01\\\\58.13579\\\\173.0807\\\\289.01\\\\60.13579\\\\173.508\\\\289.01\\\\63.13579\\\\173.6928\\\\289.01\\\\65.63579\\\\173.5299\\\\289.01\\\\67.63579\\\\173.1064\\\\289.01\\\\69.63579\\\\172.491\\\\289.01\\\\71.63579\\\\171.6557\\\\289.01\\\\73.63579\\\\170.6136\\\\289.01\\\\75.13579\\\\169.622\\\\289.01\\\\77.13579\\\\167.9501\\\\289.01\\\\78.14953\\\\166.9199\\\\289.01\\\\79.80318\\\\164.9199\\\\289.01\\\\80.78197\\\\163.4199\\\\289.01\\\\81.81926\\\\161.4199\\\\289.01\\\\82.77949\\\\158.9199\\\\289.01\\\\83.26665\\\\156.9199\\\\289.01\\\\83.42233\\\\155.4199\\\\289.01\\\\83.54694\\\\152.9199\\\\289.01\\\\83.298\\\\149.4199\\\\289.01\\\\82.82378\\\\147.4199\\\\289.01\\\\82.33067\\\\145.9199\\\\289.01\\\\81.20625\\\\143.4199\\\\289.01\\\\80.32435\\\\141.9199\\\\289.01\\\\78.83173\\\\139.9199\\\\289.01\\\\77.63579\\\\138.6628\\\\289.01\\\\76.13579\\\\137.254\\\\289.01\\\\74.13579\\\\135.7893\\\\289.01\\\\73.13579\\\\135.2029\\\\289.01\\\\70.13579\\\\133.7565\\\\289.01\\\\68.63579\\\\133.2538\\\\289.01\\\\66.63579\\\\132.7745\\\\289.01\\\\63.13579\\\\132.5449\\\\289.01\\\\59.63579\\\\132.7386\\\\289.01\\\\57.13579\\\\133.3031\\\\289.01\\\\55.63579\\\\133.8401\\\\289.01\\\\53.63579\\\\134.7649\\\\289.01\\\\50.63579\\\\136.7378\\\\289.01\\\\48.79829\\\\138.4199\\\\289.01\\\\45.63579\\\\141.6464\\\\289.01\\\\44.63579\\\\142.51\\\\289.01\\\\42.63579\\\\143.6619\\\\289.01\\\\41.13579\\\\144.0638\\\\289.01\\\\40.13579\\\\143.9958\\\\289.01\\\\38.63579\\\\143.6008\\\\289.01\\\\35.63579\\\\142.1031\\\\289.01\\\\34.13579\\\\141.0644\\\\289.01\\\\29.63579\\\\137.31\\\\289.01\\\\26.63579\\\\135.0555\\\\289.01\\\\23.55246\\\\132.4199\\\\289.01\\\\22.0726\\\\130.9199\\\\289.01\\\\20.46226\\\\128.9199\\\\289.01\\\\19.39348\\\\126.9199\\\\289.01\\\\19.14968\\\\125.9199\\\\289.01\\\\19.44511\\\\124.9199\\\\289.01\\\\19.99907\\\\123.9199\\\\289.01\\\\20.82414\\\\122.9199\\\\289.01\\\\22.27133\\\\121.4199\\\\289.01\\\\26.13579\\\\117.9661\\\\289.01\\\\27.14412\\\\116.9199\\\\289.01\\\\28.79449\\\\114.9199\\\\289.01\\\\29.76725\\\\113.4199\\\\289.01\\\\30.81119\\\\111.4199\\\\289.01\\\\31.75877\\\\108.9199\\\\289.01\\\\32.31709\\\\106.4199\\\\289.01\\\\32.49321\\\\102.9199\\\\289.01\\\\32.25285\\\\99.41986\\\\289.01\\\\31.77949\\\\97.41986\\\\289.01\\\\30.83779\\\\94.91986\\\\289.01\\\\29.82794\\\\92.91986\\\\289.01\\\\29.21289\\\\91.91986\\\\289.01\\\\27.73138\\\\89.91986\\\\289.01\\\\26.13579\\\\88.21847\\\\289.01\\\\25.13579\\\\87.32427\\\\289.01\\\\23.13579\\\\85.85146\\\\289.01\\\\22.13579\\\\85.23184\\\\289.01\\\\20.13579\\\\84.22186\\\\289.01\\\\17.63579\\\\83.28586\\\\289.01\\\\15.63579\\\\82.81703\\\\289.01\\\\14.13579\\\\82.65841\\\\289.01\\\\12.13579\\\\82.58332\\\\289.01\\\\8.635789\\\\82.78226\\\\289.01\\\\6.635788\\\\83.2435\\\\289.01\\\\5.135788\\\\83.72891\\\\289.01\\\\2.635788\\\\84.83727\\\\289.01\\\\1.135789\\\\85.71608\\\\289.01\\\\-0.3642115\\\\86.76138\\\\289.01\\\\-2.864212\\\\89.1055\\\\289.01\\\\-4.061114\\\\90.41986\\\\289.01\\\\-5.481468\\\\92.41986\\\\289.01\\\\-7.038211\\\\95.41986\\\\289.01\\\\-8.04832\\\\98.41986\\\\289.01\\\\-8.481275\\\\100.4199\\\\289.01\\\\-8.614211\\\\101.9199\\\\289.01\\\\-8.610394\\\\104.4199\\\\289.01\\\\-8.470211\\\\105.9199\\\\289.01\\\\-8.040568\\\\107.9199\\\\289.01\\\\-7.024926\\\\110.9199\\\\289.01\\\\-6.039831\\\\112.9199\\\\289.01\\\\-5.436641\\\\113.9199\\\\289.01\\\\-4.016484\\\\115.9199\\\\289.01\\\\-2.364212\\\\117.6864\\\\289.01\\\\-0.8642115\\\\119.0858\\\\289.01\\\\2.635788\\\\121.7363\\\\289.01\\\\4.936513\\\\123.9199\\\\289.01\\\\5.739955\\\\124.9199\\\\289.01\\\\6.243547\\\\125.9199\\\\289.01\\\\6.389576\\\\126.9199\\\\289.01\\\\5.898776\\\\128.4199\\\\289.01\\\\5.36544\\\\129.4199\\\\289.01\\\\4.344122\\\\130.9199\\\\289.01\\\\2.635788\\\\132.901\\\\289.01\\\\0.6357885\\\\134.9343\\\\289.01\\\\-3.291989\\\\138.4199\\\\289.01\\\\-6.454596\\\\141.4199\\\\289.01\\\\-8.364211\\\\143.1276\\\\289.01\\\\-10.36421\\\\144.5659\\\\289.01\\\\-12.36421\\\\145.6168\\\\289.01\\\\-13.86421\\\\146.1154\\\\289.01\\\\-14.86421\\\\146.2075\\\\289.01\\\\-15.86421\\\\146.0664\\\\289.01\\\\-17.86421\\\\145.0818\\\\289.01\\\\-19.36421\\\\143.7907\\\\289.01\\\\-22.36421\\\\140.7383\\\\289.01\\\\-23.36421\\\\139.8224\\\\289.01\\\\-25.36421\\\\138.2655\\\\289.01\\\\-27.86421\\\\136.8177\\\\289.01\\\\-30.36421\\\\135.775\\\\289.01\\\\-31.86421\\\\135.3379\\\\289.01\\\\-34.36421\\\\134.8099\\\\289.01\\\\-36.36421\\\\134.6622\\\\289.01\\\\-39.36421\\\\134.8203\\\\289.01\\\\-41.36421\\\\135.2396\\\\289.01\\\\-44.36421\\\\136.2353\\\\289.01\\\\-47.36421\\\\137.7303\\\\289.01\\\\-48.86421\\\\138.7237\\\\289.01\\\\-50.31903\\\\139.9199\\\\289.01\\\\-51.86699\\\\141.4199\\\\289.01\\\\-53.52726\\\\143.4199\\\\289.01\\\\-54.5031\\\\144.9199\\\\289.01\\\\-55.54621\\\\146.9199\\\\289.01\\\\-56.50508\\\\149.4199\\\\289.01\\\\-56.99216\\\\151.4199\\\\289.01\\\\-57.2638\\\\154.9199\\\\289.01\\\\-57.13921\\\\157.9199\\\\289.01\\\\-56.96703\\\\159.4199\\\\289.01\\\\-56.47692\\\\161.4199\\\\289.01\\\\-55.93595\\\\162.9199\\\\289.01\\\\-55.00497\\\\164.9199\\\\289.01\\\\-54.08002\\\\166.4199\\\\289.01\\\\-53.01329\\\\167.9199\\\\289.01\\\\-51.64692\\\\169.4199\\\\289.01\\\\-49.36421\\\\171.5437\\\\289.01\\\\-47.86421\\\\172.6127\\\\289.01\\\\-46.36421\\\\173.4903\\\\289.01\\\\-43.86421\\\\174.6123\\\\289.01\\\\-42.36421\\\\175.104\\\\289.01\\\\-40.36421\\\\175.5783\\\\289.01\\\\-36.86421\\\\175.813\\\\289.01\\\\-34.36421\\\\175.6949\\\\289.01\\\\-32.86421\\\\175.5299\\\\289.01\\\\-30.86421\\\\175.0428\\\\289.01\\\\-29.36421\\\\174.5075\\\\289.01\\\\-27.36421\\\\173.5845\\\\289.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848933604400001.474954755728\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"237\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"12\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-50.86421\\\\137.2415\\\\292.01\\\\-53.36421\\\\139.566\\\\292.01\\\\-54.99971\\\\141.4199\\\\292.01\\\\-56.06249\\\\142.9199\\\\292.01\\\\-57.48386\\\\145.4199\\\\292.01\\\\-58.5421\\\\147.9199\\\\292.01\\\\-59.00731\\\\149.4199\\\\292.01\\\\-59.52402\\\\151.9199\\\\292.01\\\\-59.68875\\\\155.4199\\\\292.01\\\\-59.50454\\\\158.9199\\\\292.01\\\\-58.98414\\\\161.4199\\\\292.01\\\\-58.51487\\\\162.9199\\\\292.01\\\\-57.42337\\\\165.4199\\\\292.01\\\\-55.9553\\\\167.9199\\\\292.01\\\\-54.43354\\\\169.9199\\\\292.01\\\\-53.06614\\\\171.4199\\\\292.01\\\\-51.36421\\\\172.969\\\\292.01\\\\-49.86421\\\\174.1299\\\\292.01\\\\-48.36421\\\\175.1141\\\\292.01\\\\-45.36421\\\\176.6118\\\\292.01\\\\-42.36421\\\\177.607\\\\292.01\\\\-39.86421\\\\178.0984\\\\292.01\\\\-36.86421\\\\178.2351\\\\292.01\\\\-33.36421\\\\178.0634\\\\292.01\\\\-30.86421\\\\177.5482\\\\292.01\\\\-29.36421\\\\177.0816\\\\292.01\\\\-26.86421\\\\176.0001\\\\292.01\\\\-24.36421\\\\174.5449\\\\292.01\\\\-22.36421\\\\173.0784\\\\292.01\\\\-21.36421\\\\172.2305\\\\292.01\\\\-19.36421\\\\170.8463\\\\292.01\\\\-18.36421\\\\170.289\\\\292.01\\\\-16.86421\\\\169.7166\\\\292.01\\\\-15.36421\\\\169.4899\\\\292.01\\\\-13.36421\\\\169.7316\\\\292.01\\\\-10.86421\\\\170.7901\\\\292.01\\\\-9.364211\\\\171.7313\\\\292.01\\\\-7.874132\\\\172.9199\\\\292.01\\\\-5.819569\\\\174.9199\\\\292.01\\\\-4.197077\\\\176.9199\\\\292.01\\\\-3.215368\\\\178.4199\\\\292.01\\\\-2.222842\\\\180.4199\\\\292.01\\\\-1.726866\\\\181.9199\\\\292.01\\\\-1.545029\\\\183.9199\\\\292.01\\\\-1.7261\\\\185.4199\\\\292.01\\\\-2.267621\\\\186.9199\\\\292.01\\\\-3.670156\\\\189.4199\\\\292.01\\\\-5.063191\\\\191.4199\\\\292.01\\\\-6.47314\\\\193.9199\\\\292.01\\\\-7.528172\\\\196.4199\\\\292.01\\\\-7.99005\\\\197.9199\\\\292.01\\\\-8.496565\\\\200.4199\\\\292.01\\\\-8.660795\\\\203.9199\\\\292.01\\\\-8.561417\\\\206.4199\\\\292.01\\\\-8.006369\\\\209.4199\\\\292.01\\\\-6.968822\\\\212.4199\\\\292.01\\\\-6.01766\\\\214.4199\\\\292.01\\\\-4.087803\\\\217.4199\\\\292.01\\\\-1.925022\\\\219.9199\\\\292.01\\\\0.6357885\\\\222.1419\\\\292.01\\\\3.635788\\\\224.0674\\\\292.01\\\\5.635788\\\\225.0181\\\\292.01\\\\8.635789\\\\226.0507\\\\292.01\\\\11.63579\\\\226.6077\\\\292.01\\\\14.13579\\\\226.7023\\\\292.01\\\\17.13579\\\\226.5765\\\\292.01\\\\19.63579\\\\226.0975\\\\292.01\\\\21.63579\\\\225.4732\\\\292.01\\\\23.63579\\\\224.6535\\\\292.01\\\\25.63579\\\\223.6229\\\\292.01\\\\26.63579\\\\222.9888\\\\292.01\\\\28.63579\\\\221.508\\\\292.01\\\\30.13579\\\\220.1511\\\\292.01\\\\31.76374\\\\218.4199\\\\292.01\\\\33.28978\\\\216.4199\\\\292.01\\\\34.22413\\\\214.9199\\\\292.01\\\\35.26341\\\\212.9199\\\\292.01\\\\36.23893\\\\210.4199\\\\292.01\\\\36.81548\\\\208.4199\\\\292.01\\\\37.31635\\\\205.4199\\\\292.01\\\\37.31125\\\\201.9199\\\\292.01\\\\36.80509\\\\198.9199\\\\292.01\\\\36.21972\\\\196.9199\\\\292.01\\\\35.23758\\\\194.4199\\\\292.01\\\\34.185\\\\192.4199\\\\292.01\\\\33.25797\\\\190.9199\\\\292.01\\\\31.47586\\\\188.4199\\\\292.01\\\\30.39613\\\\186.4199\\\\292.01\\\\29.98475\\\\185.4199\\\\292.01\\\\29.70282\\\\183.9199\\\\292.01\\\\29.65647\\\\182.9199\\\\292.01\\\\30.01312\\\\180.9199\\\\292.01\\\\30.59115\\\\179.4199\\\\292.01\\\\31.96314\\\\176.9199\\\\292.01\\\\33.04444\\\\175.4199\\\\292.01\\\\34.63579\\\\173.6154\\\\292.01\\\\36.13579\\\\172.1795\\\\292.01\\\\37.13579\\\\171.3688\\\\292.01\\\\39.63579\\\\169.8149\\\\292.01\\\\41.13579\\\\169.2102\\\\292.01\\\\42.63579\\\\168.8687\\\\292.01\\\\43.63579\\\\168.8372\\\\292.01\\\\45.63579\\\\169.3281\\\\292.01\\\\47.63579\\\\170.2854\\\\292.01\\\\51.13579\\\\172.6065\\\\292.01\\\\53.63579\\\\173.9453\\\\292.01\\\\55.13579\\\\174.6138\\\\292.01\\\\58.13579\\\\175.5708\\\\292.01\\\\61.13579\\\\176.0839\\\\292.01\\\\64.63579\\\\176.0973\\\\292.01\\\\67.63579\\\\175.5995\\\\292.01\\\\69.63579\\\\175.0346\\\\292.01\\\\72.13579\\\\174.0871\\\\292.01\\\\74.13579\\\\173.0916\\\\292.01\\\\77.13579\\\\171.1028\\\\292.01\\\\79.63579\\\\168.7767\\\\292.01\\\\81.27783\\\\166.9199\\\\292.01\\\\82.33613\\\\165.4199\\\\292.01\\\\83.23394\\\\163.9199\\\\292.01\\\\84.21426\\\\161.9199\\\\292.01\\\\84.81573\\\\160.4199\\\\292.01\\\\85.28121\\\\158.9199\\\\292.01\\\\85.79774\\\\156.4199\\\\292.01\\\\85.96235\\\\152.9199\\\\292.01\\\\85.82057\\\\149.9199\\\\292.01\\\\85.32604\\\\147.4199\\\\292.01\\\\84.3297\\\\144.4199\\\\292.01\\\\82.82874\\\\141.4199\\\\292.01\\\\81.84238\\\\139.9199\\\\292.01\\\\79.77893\\\\137.4199\\\\292.01\\\\78.13579\\\\135.8536\\\\292.01\\\\76.13579\\\\134.271\\\\292.01\\\\73.63579\\\\132.7315\\\\292.01\\\\71.63579\\\\131.7812\\\\292.01\\\\68.63579\\\\130.7527\\\\292.01\\\\66.13579\\\\130.2516\\\\292.01\\\\63.13579\\\\130.112\\\\292.01\\\\59.63579\\\\130.2875\\\\292.01\\\\57.13579\\\\130.7999\\\\292.01\\\\55.63579\\\\131.2636\\\\292.01\\\\53.13579\\\\132.3465\\\\292.01\\\\50.63579\\\\133.8043\\\\292.01\\\\48.63579\\\\135.3059\\\\292.01\\\\45.13579\\\\138.5364\\\\292.01\\\\43.63579\\\\139.6493\\\\292.01\\\\42.13579\\\\140.4601\\\\292.01\\\\40.13579\\\\141.0791\\\\292.01\\\\38.63579\\\\141.1097\\\\292.01\\\\36.63579\\\\140.6416\\\\292.01\\\\35.13579\\\\140.0553\\\\292.01\\\\32.63579\\\\138.6373\\\\292.01\\\\31.13579\\\\137.5738\\\\292.01\\\\29.72654\\\\136.4199\\\\292.01\\\\28.07417\\\\134.9199\\\\292.01\\\\25.91139\\\\132.4199\\\\292.01\\\\24.93418\\\\130.9199\\\\292.01\\\\24.00985\\\\128.9199\\\\292.01\\\\23.59784\\\\126.9199\\\\292.01\\\\24.00117\\\\124.9199\\\\292.01\\\\24.45341\\\\123.9199\\\\292.01\\\\25.412\\\\122.4199\\\\292.01\\\\27.1188\\\\120.4199\\\\292.01\\\\30.26747\\\\116.9199\\\\292.01\\\\31.33271\\\\115.4199\\\\292.01\\\\32.74472\\\\112.9199\\\\292.01\\\\33.80082\\\\110.4199\\\\292.01\\\\34.26079\\\\108.9199\\\\292.01\\\\34.76814\\\\106.4199\\\\292.01\\\\34.93237\\\\102.9199\\\\292.01\\\\34.83299\\\\100.4199\\\\292.01\\\\34.27795\\\\97.41986\\\\292.01\\\\33.2404\\\\94.41986\\\\292.01\\\\32.28924\\\\92.41986\\\\292.01\\\\30.35938\\\\89.41986\\\\292.01\\\\28.13579\\\\86.85905\\\\292.01\\\\25.63579\\\\84.69783\\\\292.01\\\\22.63579\\\\82.77126\\\\292.01\\\\20.63579\\\\81.82164\\\\292.01\\\\17.63579\\\\80.78906\\\\292.01\\\\14.63579\\\\80.23197\\\\292.01\\\\12.13579\\\\80.13745\\\\292.01\\\\9.135789\\\\80.26321\\\\292.01\\\\6.635788\\\\80.74219\\\\292.01\\\\4.635788\\\\81.36616\\\\292.01\\\\2.635788\\\\82.1862\\\\292.01\\\\0.6357885\\\\83.21684\\\\292.01\\\\-0.3642115\\\\83.85096\\\\292.01\\\\-2.364212\\\\85.33102\\\\292.01\\\\-3.864212\\\\86.68865\\\\292.01\\\\-5.492164\\\\88.41986\\\\292.01\\\\-7.018197\\\\90.41986\\\\292.01\\\\-7.953227\\\\91.91986\\\\292.01\\\\-8.991834\\\\93.91986\\\\292.01\\\\-9.966642\\\\96.41986\\\\292.01\\\\-10.5439\\\\98.41986\\\\292.01\\\\-11.04477\\\\101.4199\\\\292.01\\\\-11.03968\\\\104.9199\\\\292.01\\\\-10.53351\\\\107.9199\\\\292.01\\\\-9.947545\\\\109.9199\\\\292.01\\\\-8.965997\\\\112.4199\\\\292.01\\\\-7.913424\\\\114.4199\\\\292.01\\\\-6.97299\\\\115.9199\\\\292.01\\\\-5.421904\\\\117.9199\\\\292.01\\\\-3.864212\\\\119.5885\\\\292.01\\\\-1.366711\\\\121.9199\\\\292.01\\\\-0.3642115\\\\123.0152\\\\292.01\\\\0.7380612\\\\124.4199\\\\292.01\\\\1.307276\\\\125.4199\\\\292.01\\\\1.837008\\\\126.9199\\\\292.01\\\\1.945404\\\\127.9199\\\\292.01\\\\1.824169\\\\129.4199\\\\292.01\\\\1.341957\\\\130.9199\\\\292.01\\\\0.3438723\\\\132.9199\\\\292.01\\\\-0.6656821\\\\134.4199\\\\292.01\\\\-2.354596\\\\136.4199\\\\292.01\\\\-3.364212\\\\137.4545\\\\292.01\\\\-6.364212\\\\140.0493\\\\292.01\\\\-7.864212\\\\141.0763\\\\292.01\\\\-9.864211\\\\142.1287\\\\292.01\\\\-11.36421\\\\142.6533\\\\292.01\\\\-12.86421\\\\142.9596\\\\292.01\\\\-13.86421\\\\142.9695\\\\292.01\\\\-15.36421\\\\142.6443\\\\292.01\\\\-16.86421\\\\142.0094\\\\292.01\\\\-18.36421\\\\141.0572\\\\292.01\\\\-20.86421\\\\138.869\\\\292.01\\\\-23.36421\\\\136.7725\\\\292.01\\\\-25.86421\\\\135.1882\\\\292.01\\\\-28.86421\\\\133.7659\\\\292.01\\\\-30.36421\\\\133.2484\\\\292.01\\\\-32.36421\\\\132.7296\\\\292.01\\\\-35.36421\\\\132.2475\\\\292.01\\\\-38.36421\\\\132.2506\\\\292.01\\\\-41.36421\\\\132.7474\\\\292.01\\\\-43.36421\\\\133.3174\\\\292.01\\\\-45.86421\\\\134.2638\\\\292.01\\\\-47.86421\\\\135.2561\\\\292.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848957605700001.539833993627\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"247\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"13\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"14.13579\\\\228.4295\\\\295.01\\\\18.13579\\\\228.1286\\\\295.01\\\\20.63579\\\\227.5699\\\\295.01\\\\23.63579\\\\226.5032\\\\295.01\\\\25.63579\\\\225.5385\\\\295.01\\\\27.13579\\\\224.6467\\\\295.01\\\\28.63579\\\\223.6208\\\\295.01\\\\30.63579\\\\221.9606\\\\295.01\\\\32.63579\\\\219.9176\\\\295.01\\\\34.26079\\\\217.9199\\\\295.01\\\\35.85596\\\\215.4199\\\\295.01\\\\36.86065\\\\213.4199\\\\295.01\\\\37.84481\\\\210.9199\\\\295.01\\\\38.30011\\\\209.4199\\\\295.01\\\\38.83393\\\\206.9199\\\\295.01\\\\39.02689\\\\203.9199\\\\295.01\\\\38.82799\\\\200.4199\\\\295.01\\\\38.28665\\\\197.9199\\\\295.01\\\\37.83388\\\\196.4199\\\\295.01\\\\36.84829\\\\193.9199\\\\295.01\\\\35.83665\\\\191.9199\\\\295.01\\\\34.2616\\\\189.4199\\\\295.01\\\\32.91469\\\\187.4199\\\\295.01\\\\31.91341\\\\185.4199\\\\295.01\\\\31.41753\\\\183.9199\\\\295.01\\\\31.21638\\\\182.4199\\\\295.01\\\\31.22183\\\\181.4199\\\\295.01\\\\31.4365\\\\179.9199\\\\295.01\\\\31.9365\\\\178.4199\\\\295.01\\\\32.96956\\\\176.4199\\\\295.01\\\\33.63579\\\\175.5072\\\\295.01\\\\35.13579\\\\173.8535\\\\295.01\\\\37.13579\\\\172.3393\\\\295.01\\\\39.13579\\\\171.3338\\\\295.01\\\\41.13579\\\\170.7382\\\\295.01\\\\42.13579\\\\170.6482\\\\295.01\\\\43.63579\\\\170.7407\\\\295.01\\\\45.63579\\\\171.3626\\\\295.01\\\\47.63579\\\\172.3561\\\\295.01\\\\51.13579\\\\174.5457\\\\295.01\\\\53.13579\\\\175.5831\\\\295.01\\\\55.63579\\\\176.5908\\\\295.01\\\\57.13579\\\\177.05\\\\295.01\\\\60.13579\\\\177.6526\\\\295.01\\\\63.13579\\\\177.7993\\\\295.01\\\\66.13579\\\\177.6153\\\\295.01\\\\68.63579\\\\177.0842\\\\295.01\\\\71.63579\\\\176.1077\\\\295.01\\\\73.13579\\\\175.4511\\\\295.01\\\\75.63579\\\\174.1397\\\\295.01\\\\76.63579\\\\173.5072\\\\295.01\\\\78.63579\\\\172.0237\\\\295.01\\\\79.63579\\\\171.1478\\\\295.01\\\\81.34893\\\\169.4199\\\\295.01\\\\83.33125\\\\166.9199\\\\295.01\\\\84.85596\\\\164.4199\\\\295.01\\\\85.83382\\\\162.4199\\\\295.01\\\\86.74227\\\\159.9199\\\\295.01\\\\87.34301\\\\157.4199\\\\295.01\\\\87.67046\\\\154.4199\\\\295.01\\\\87.69308\\\\151.9199\\\\295.01\\\\87.28692\\\\148.4199\\\\295.01\\\\86.80479\\\\146.4199\\\\295.01\\\\85.72182\\\\143.4199\\\\295.01\\\\84.74316\\\\141.4199\\\\295.01\\\\83.8507\\\\139.9199\\\\295.01\\\\82.79869\\\\138.4199\\\\295.01\\\\81.13579\\\\136.4793\\\\295.01\\\\80.09653\\\\135.4199\\\\295.01\\\\78.13579\\\\133.6971\\\\295.01\\\\76.13579\\\\132.2705\\\\295.01\\\\73.63579\\\\130.872\\\\295.01\\\\71.13579\\\\129.7844\\\\295.01\\\\69.63579\\\\129.2868\\\\295.01\\\\67.13579\\\\128.7073\\\\295.01\\\\64.13579\\\\128.4028\\\\295.01\\\\62.13579\\\\128.3921\\\\295.01\\\\58.63579\\\\128.7287\\\\295.01\\\\56.13579\\\\129.3365\\\\295.01\\\\53.63579\\\\130.2527\\\\295.01\\\\50.63579\\\\131.8282\\\\295.01\\\\48.63579\\\\133.1938\\\\295.01\\\\46.13579\\\\135.2852\\\\295.01\\\\44.13579\\\\137.0396\\\\295.01\\\\42.63579\\\\138.0648\\\\295.01\\\\40.63579\\\\138.9977\\\\295.01\\\\38.63579\\\\139.4802\\\\295.01\\\\37.13579\\\\139.5112\\\\295.01\\\\35.13579\\\\139.0861\\\\295.01\\\\32.63579\\\\138.0112\\\\295.01\\\\31.13579\\\\137.0381\\\\295.01\\\\29.3328\\\\135.4199\\\\295.01\\\\28.06653\\\\133.9199\\\\295.01\\\\27.42027\\\\132.9199\\\\295.01\\\\26.43855\\\\130.9199\\\\295.01\\\\25.97402\\\\129.4199\\\\295.01\\\\25.83393\\\\127.9199\\\\295.01\\\\25.95701\\\\126.4199\\\\295.01\\\\26.43787\\\\124.9199\\\\295.01\\\\27.49988\\\\122.9199\\\\295.01\\\\28.62579\\\\121.4199\\\\295.01\\\\31.1932\\\\118.4199\\\\295.01\\\\32.32444\\\\116.9199\\\\295.01\\\\33.85028\\\\114.4199\\\\295.01\\\\34.81903\\\\112.4199\\\\295.01\\\\35.7245\\\\109.9199\\\\295.01\\\\36.32799\\\\107.4199\\\\295.01\\\\36.61153\\\\104.4199\\\\295.01\\\\36.68043\\\\102.9199\\\\295.01\\\\36.33499\\\\98.91986\\\\295.01\\\\35.74227\\\\96.41986\\\\295.01\\\\34.84829\\\\93.91986\\\\295.01\\\\33.88437\\\\91.91986\\\\295.01\\\\32.7434\\\\89.91986\\\\295.01\\\\31.31367\\\\87.91986\\\\295.01\\\\29.63579\\\\86.04859\\\\295.01\\\\27.13579\\\\83.74197\\\\295.01\\\\25.13579\\\\82.31819\\\\295.01\\\\23.13579\\\\81.17551\\\\295.01\\\\21.13579\\\\80.21014\\\\295.01\\\\18.63579\\\\79.3208\\\\295.01\\\\16.13579\\\\78.72765\\\\295.01\\\\12.13579\\\\78.41024\\\\295.01\\\\8.135789\\\\78.70996\\\\295.01\\\\5.635788\\\\79.269\\\\295.01\\\\2.635788\\\\80.33652\\\\295.01\\\\0.6357885\\\\81.29802\\\\295.01\\\\-2.364212\\\\83.21894\\\\295.01\\\\-4.364212\\\\84.87916\\\\295.01\\\\-6.364212\\\\86.92207\\\\295.01\\\\-7.991695\\\\88.91986\\\\295.01\\\\-9.58564\\\\91.41986\\\\295.01\\\\-10.58907\\\\93.41986\\\\295.01\\\\-11.57323\\\\95.91986\\\\295.01\\\\-12.02854\\\\97.41986\\\\295.01\\\\-12.56235\\\\99.91986\\\\295.01\\\\-12.75532\\\\102.9199\\\\295.01\\\\-12.55642\\\\106.4199\\\\295.01\\\\-12.01507\\\\108.9199\\\\295.01\\\\-11.5623\\\\110.4199\\\\295.01\\\\-10.57671\\\\112.9199\\\\295.01\\\\-8.962544\\\\115.9199\\\\295.01\\\\-7.569458\\\\117.9199\\\\295.01\\\\-5.366278\\\\120.4199\\\\295.01\\\\-3.364212\\\\122.4839\\\\295.01\\\\-2.140774\\\\123.9199\\\\295.01\\\\-1.179429\\\\125.4199\\\\295.01\\\\-0.712649\\\\126.4199\\\\295.01\\\\-0.2422979\\\\127.9199\\\\295.01\\\\-0.09468023\\\\129.4199\\\\295.01\\\\-0.234851\\\\130.9199\\\\295.01\\\\-0.6829615\\\\132.4199\\\\295.01\\\\-1.630643\\\\134.4199\\\\295.01\\\\-2.241431\\\\135.4199\\\\295.01\\\\-3.364212\\\\136.8065\\\\295.01\\\\-4.479952\\\\137.9199\\\\295.01\\\\-5.864212\\\\139.0335\\\\295.01\\\\-6.864212\\\\139.6417\\\\295.01\\\\-8.864211\\\\140.5979\\\\295.01\\\\-10.36421\\\\141.0637\\\\295.01\\\\-11.86421\\\\141.2292\\\\295.01\\\\-13.86421\\\\141.0486\\\\295.01\\\\-15.36421\\\\140.5495\\\\295.01\\\\-16.36421\\\\140.0745\\\\295.01\\\\-17.86421\\\\139.1365\\\\295.01\\\\-21.36421\\\\136.2233\\\\295.01\\\\-23.36421\\\\134.7404\\\\295.01\\\\-24.86421\\\\133.8202\\\\295.01\\\\-26.86421\\\\132.7895\\\\295.01\\\\-29.36421\\\\131.8086\\\\295.01\\\\-31.36421\\\\131.2283\\\\295.01\\\\-33.86421\\\\130.726\\\\295.01\\\\-35.86421\\\\130.5824\\\\295.01\\\\-37.86421\\\\130.5851\\\\295.01\\\\-39.86421\\\\130.732\\\\295.01\\\\-42.36421\\\\131.2641\\\\295.01\\\\-45.36421\\\\132.2405\\\\295.01\\\\-46.86421\\\\132.9028\\\\295.01\\\\-49.36421\\\\134.2029\\\\295.01\\\\-50.36421\\\\134.8394\\\\295.01\\\\-52.36421\\\\136.3216\\\\295.01\\\\-53.36421\\\\137.1936\\\\295.01\\\\-55.51793\\\\139.4199\\\\295.01\\\\-57.05593\\\\141.4199\\\\295.01\\\\-58.58438\\\\143.9199\\\\295.01\\\\-59.55771\\\\145.9199\\\\295.01\\\\-60.46825\\\\148.4199\\\\295.01\\\\-61.06986\\\\150.9199\\\\295.01\\\\-61.39546\\\\153.9199\\\\295.01\\\\-61.46327\\\\155.4199\\\\295.01\\\\-61.38126\\\\156.9199\\\\295.01\\\\-61.0591\\\\159.9199\\\\295.01\\\\-60.44754\\\\162.4199\\\\295.01\\\\-59.52451\\\\164.9199\\\\295.01\\\\-58.53138\\\\166.9199\\\\295.01\\\\-56.56637\\\\169.9199\\\\295.01\\\\-54.86625\\\\171.9199\\\\295.01\\\\-53.86421\\\\172.9499\\\\295.01\\\\-51.36421\\\\175.0986\\\\295.01\\\\-49.86421\\\\176.1393\\\\295.01\\\\-48.36421\\\\177.0304\\\\295.01\\\\-46.36421\\\\178.0032\\\\295.01\\\\-43.36421\\\\179.0823\\\\295.01\\\\-40.86421\\\\179.6404\\\\295.01\\\\-37.86421\\\\179.9579\\\\295.01\\\\-35.86421\\\\179.9677\\\\295.01\\\\-32.36421\\\\179.618\\\\295.01\\\\-29.86421\\\\179.0112\\\\295.01\\\\-27.36421\\\\178.0918\\\\295.01\\\\-25.36421\\\\177.1055\\\\295.01\\\\-22.86421\\\\175.5296\\\\295.01\\\\-19.86421\\\\173.325\\\\295.01\\\\-18.86421\\\\172.7049\\\\295.01\\\\-16.86421\\\\171.7768\\\\295.01\\\\-14.86421\\\\171.2971\\\\295.01\\\\-13.36421\\\\171.3134\\\\295.01\\\\-11.36421\\\\171.8039\\\\295.01\\\\-9.364211\\\\172.7201\\\\295.01\\\\-8.364211\\\\173.3311\\\\295.01\\\\-7.018403\\\\174.4199\\\\295.01\\\\-5.208806\\\\176.4199\\\\295.01\\\\-4.272865\\\\177.9199\\\\295.01\\\\-3.310016\\\\180.4199\\\\295.01\\\\-3.060024\\\\182.4199\\\\295.01\\\\-3.162389\\\\183.9199\\\\295.01\\\\-3.778172\\\\185.9199\\\\295.01\\\\-4.226866\\\\186.9199\\\\295.01\\\\-5.705407\\\\189.4199\\\\295.01\\\\-7.020076\\\\191.4199\\\\295.01\\\\-8.54745\\\\194.4199\\\\295.01\\\\-9.452921\\\\196.9199\\\\295.01\\\\-10.05642\\\\199.4199\\\\295.01\\\\-10.37757\\\\202.9199\\\\295.01\\\\-10.35085\\\\204.9199\\\\295.01\\\\-10.06341\\\\207.9199\\\\295.01\\\\-9.470693\\\\210.4199\\\\295.01\\\\-8.575538\\\\212.9199\\\\295.01\\\\-7.082783\\\\215.9199\\\\295.01\\\\-6.471828\\\\216.9199\\\\295.01\\\\-5.042096\\\\218.9199\\\\295.01\\\\-3.364212\\\\220.7911\\\\295.01\\\\-0.8642115\\\\223.0957\\\\295.01\\\\1.135789\\\\224.5215\\\\295.01\\\\3.135788\\\\225.6642\\\\295.01\\\\5.135788\\\\226.6284\\\\295.01\\\\7.635788\\\\227.5189\\\\295.01\\\\10.13579\\\\228.111\\\\295.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848978606900001.507522632828\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"254\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"14\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-17.36421\\\\138.0734\\\\298.01\\\\-21.36421\\\\134.8208\\\\298.01\\\\-22.86421\\\\133.7527\\\\298.01\\\\-25.36421\\\\132.2841\\\\298.01\\\\-27.36421\\\\131.3688\\\\298.01\\\\-30.36421\\\\130.3311\\\\298.01\\\\-32.86421\\\\129.7536\\\\298.01\\\\-35.86421\\\\129.4102\\\\298.01\\\\-37.86421\\\\129.4179\\\\298.01\\\\-40.86421\\\\129.7645\\\\298.01\\\\-42.86421\\\\130.2402\\\\298.01\\\\-45.86421\\\\131.2459\\\\298.01\\\\-48.36421\\\\132.3956\\\\298.01\\\\-50.86421\\\\133.8477\\\\298.01\\\\-52.86421\\\\135.3082\\\\298.01\\\\-55.36421\\\\137.6335\\\\298.01\\\\-56.93636\\\\139.4199\\\\298.01\\\\-58.04616\\\\140.9199\\\\298.01\\\\-59.57426\\\\143.4199\\\\298.01\\\\-60.54849\\\\145.4199\\\\298.01\\\\-61.49141\\\\147.9199\\\\298.01\\\\-62.02512\\\\149.9199\\\\298.01\\\\-62.42456\\\\152.4199\\\\298.01\\\\-62.59074\\\\155.4199\\\\298.01\\\\-62.47311\\\\157.9199\\\\298.01\\\\-62.01004\\\\160.9199\\\\298.01\\\\-61.47311\\\\162.9199\\\\298.01\\\\-60.51775\\\\165.4199\\\\298.01\\\\-58.92757\\\\168.4199\\\\298.01\\\\-57.56282\\\\170.4199\\\\298.01\\\\-55.90886\\\\172.4199\\\\298.01\\\\-53.86421\\\\174.4545\\\\298.01\\\\-51.86421\\\\176.0956\\\\298.01\\\\-50.36421\\\\177.126\\\\298.01\\\\-48.86421\\\\178.0214\\\\298.01\\\\-46.86421\\\\179.0059\\\\298.01\\\\-43.86421\\\\180.1004\\\\298.01\\\\-41.86421\\\\180.6074\\\\298.01\\\\-39.36421\\\\181.0032\\\\298.01\\\\-36.86421\\\\181.1393\\\\298.01\\\\-34.86421\\\\181.0696\\\\298.01\\\\-31.36421\\\\180.5696\\\\298.01\\\\-29.36421\\\\180.0358\\\\298.01\\\\-26.86421\\\\179.0826\\\\298.01\\\\-24.86421\\\\178.0915\\\\298.01\\\\-22.36421\\\\176.5441\\\\298.01\\\\-19.86421\\\\174.7606\\\\298.01\\\\-17.36421\\\\173.3134\\\\298.01\\\\-15.86421\\\\172.7165\\\\298.01\\\\-14.36421\\\\172.3535\\\\298.01\\\\-12.86421\\\\172.2821\\\\298.01\\\\-10.86421\\\\172.8134\\\\298.01\\\\-9.864211\\\\173.2612\\\\298.01\\\\-8.364211\\\\174.2009\\\\298.01\\\\-6.864212\\\\175.5768\\\\298.01\\\\-5.747024\\\\176.9199\\\\298.01\\\\-4.668733\\\\178.9199\\\\298.01\\\\-4.188285\\\\180.4199\\\\298.01\\\\-4.035754\\\\181.9199\\\\298.01\\\\-4.183949\\\\183.4199\\\\298.01\\\\-4.643007\\\\184.9199\\\\298.01\\\\-5.294955\\\\186.4199\\\\298.01\\\\-6.132928\\\\187.9199\\\\298.01\\\\-8.012517\\\\190.9199\\\\298.01\\\\-9.077596\\\\192.9199\\\\298.01\\\\-9.952921\\\\194.9199\\\\298.01\\\\-10.47785\\\\196.4199\\\\298.01\\\\-11.01005\\\\198.4199\\\\298.01\\\\-11.45025\\\\201.4199\\\\298.01\\\\-11.55772\\\\203.9199\\\\298.01\\\\-11.46073\\\\205.9199\\\\298.01\\\\-11.01962\\\\208.9199\\\\298.01\\\\-10.49571\\\\210.9199\\\\298.01\\\\-9.571923\\\\213.4199\\\\298.01\\\\-8.606749\\\\215.4199\\\\298.01\\\\-7.463268\\\\217.4199\\\\298.01\\\\-6.421503\\\\218.9199\\\\298.01\\\\-5.364212\\\\220.2352\\\\298.01\\\\-3.29047\\\\222.4199\\\\298.01\\\\-0.8642115\\\\224.4741\\\\298.01\\\\1.635789\\\\226.1212\\\\298.01\\\\4.635788\\\\227.6221\\\\298.01\\\\7.135788\\\\228.5449\\\\298.01\\\\9.135789\\\\229.0657\\\\298.01\\\\12.13579\\\\229.4949\\\\298.01\\\\14.13579\\\\229.5963\\\\298.01\\\\16.13579\\\\229.5164\\\\298.01\\\\19.13579\\\\229.0929\\\\298.01\\\\21.13579\\\\228.5912\\\\298.01\\\\24.13579\\\\227.5032\\\\298.01\\\\26.13579\\\\226.5287\\\\298.01\\\\29.13579\\\\224.6157\\\\298.01\\\\31.13579\\\\222.9954\\\\298.01\\\\32.76643\\\\221.4199\\\\298.01\\\\33.67046\\\\220.4199\\\\298.01\\\\35.25476\\\\218.4199\\\\298.01\\\\36.84434\\\\215.9199\\\\298.01\\\\37.8587\\\\213.9199\\\\298.01\\\\38.85302\\\\211.4199\\\\298.01\\\\39.31954\\\\209.9199\\\\298.01\\\\39.80026\\\\207.9199\\\\298.01\\\\40.16704\\\\204.9199\\\\298.01\\\\40.16004\\\\202.4199\\\\298.01\\\\39.79305\\\\199.4199\\\\298.01\\\\39.31053\\\\197.4199\\\\298.01\\\\38.84\\\\195.9199\\\\298.01\\\\37.8401\\\\193.4199\\\\298.01\\\\36.82063\\\\191.4199\\\\298.01\\\\35.26744\\\\188.9199\\\\298.01\\\\33.94211\\\\186.9199\\\\298.01\\\\32.91801\\\\184.9199\\\\298.01\\\\32.53175\\\\183.9199\\\\298.01\\\\32.02689\\\\181.4199\\\\298.01\\\\32.4123\\\\179.4199\\\\298.01\\\\32.97419\\\\177.9199\\\\298.01\\\\33.5138\\\\176.9199\\\\298.01\\\\34.61511\\\\175.4199\\\\298.01\\\\35.63579\\\\174.3649\\\\298.01\\\\37.13579\\\\173.2065\\\\298.01\\\\39.13579\\\\172.2018\\\\298.01\\\\40.63579\\\\171.7608\\\\298.01\\\\42.63579\\\\171.7324\\\\298.01\\\\44.63579\\\\172.2536\\\\298.01\\\\47.63579\\\\173.7016\\\\298.01\\\\50.63579\\\\175.5381\\\\298.01\\\\52.63579\\\\176.5734\\\\298.01\\\\55.13579\\\\177.5946\\\\298.01\\\\56.63579\\\\178.0771\\\\298.01\\\\58.63579\\\\178.5676\\\\298.01\\\\61.63579\\\\178.9218\\\\298.01\\\\64.13579\\\\178.9405\\\\298.01\\\\67.13579\\\\178.5826\\\\298.01\\\\69.13579\\\\178.1077\\\\298.01\\\\72.13579\\\\177.1048\\\\298.01\\\\73.63579\\\\176.4441\\\\298.01\\\\76.13579\\\\175.128\\\\298.01\\\\77.13579\\\\174.5032\\\\298.01\\\\79.13579\\\\173.037\\\\298.01\\\\80.41171\\\\171.9199\\\\298.01\\\\82.80591\\\\169.4199\\\\298.01\\\\84.32225\\\\167.4199\\\\298.01\\\\85.84733\\\\164.9199\\\\298.01\\\\86.82425\\\\162.9199\\\\298.01\\\\87.76729\\\\160.4199\\\\298.01\\\\88.29848\\\\158.4199\\\\298.01\\\\88.69914\\\\155.9199\\\\298.01\\\\88.86338\\\\152.9199\\\\298.01\\\\88.73231\\\\150.4199\\\\298.01\\\\88.32969\\\\147.9199\\\\298.01\\\\87.82111\\\\145.9199\\\\298.01\\\\86.72449\\\\142.9199\\\\298.01\\\\85.73485\\\\140.9199\\\\298.01\\\\84.83606\\\\139.4199\\\\298.01\\\\83.80003\\\\137.9199\\\\298.01\\\\81.67046\\\\135.4199\\\\298.01\\\\80.63579\\\\134.4028\\\\298.01\\\\78.13579\\\\132.3134\\\\298.01\\\\76.63579\\\\131.2847\\\\298.01\\\\74.18953\\\\129.9199\\\\298.01\\\\71.63579\\\\128.778\\\\298.01\\\\70.13579\\\\128.2663\\\\298.01\\\\68.13579\\\\127.7468\\\\298.01\\\\65.63579\\\\127.3565\\\\298.01\\\\64.13579\\\\127.2386\\\\298.01\\\\60.63579\\\\127.3285\\\\298.01\\\\57.63579\\\\127.776\\\\298.01\\\\55.63579\\\\128.311\\\\298.01\\\\53.13579\\\\129.2608\\\\298.01\\\\51.13579\\\\130.2564\\\\298.01\\\\48.63579\\\\131.8259\\\\298.01\\\\46.63579\\\\133.3886\\\\298.01\\\\43.63579\\\\135.9802\\\\298.01\\\\42.13579\\\\137.0449\\\\298.01\\\\40.13579\\\\138.0715\\\\298.01\\\\38.63579\\\\138.5637\\\\298.01\\\\36.63579\\\\138.7519\\\\298.01\\\\35.13579\\\\138.5808\\\\298.01\\\\33.63579\\\\138.0696\\\\298.01\\\\31.63579\\\\136.9511\\\\298.01\\\\29.8448\\\\135.4199\\\\298.01\\\\28.96778\\\\134.4199\\\\298.01\\\\27.9767\\\\132.9199\\\\298.01\\\\27.488\\\\131.9199\\\\298.01\\\\26.98038\\\\130.4199\\\\298.01\\\\26.80886\\\\128.9199\\\\298.01\\\\26.93039\\\\127.4199\\\\298.01\\\\27.55797\\\\125.4199\\\\298.01\\\\28.02931\\\\124.4199\\\\298.01\\\\28.95004\\\\122.9199\\\\298.01\\\\30.51157\\\\120.9199\\\\298.01\\\\31.80976\\\\119.4199\\\\298.01\\\\33.31496\\\\117.4199\\\\298.01\\\\34.83657\\\\114.9199\\\\298.01\\\\35.81157\\\\112.9199\\\\298.01\\\\36.74942\\\\110.4199\\\\298.01\\\\37.28162\\\\108.4199\\\\298.01\\\\37.72183\\\\105.4199\\\\298.01\\\\37.8293\\\\102.9199\\\\298.01\\\\37.73231\\\\100.9199\\\\298.01\\\\37.29119\\\\97.91986\\\\298.01\\\\36.76729\\\\95.91986\\\\298.01\\\\35.8435\\\\93.41986\\\\298.01\\\\34.34129\\\\90.41986\\\\298.01\\\\32.69308\\\\87.91986\\\\298.01\\\\31.63579\\\\86.6045\\\\298.01\\\\30.08003\\\\84.91986\\\\298.01\\\\27.63579\\\\82.74211\\\\298.01\\\\25.63579\\\\81.32591\\\\298.01\\\\23.63579\\\\80.17981\\\\298.01\\\\21.63579\\\\79.2176\\\\298.01\\\\19.13579\\\\78.29486\\\\298.01\\\\17.13579\\\\77.77402\\\\298.01\\\\14.13579\\\\77.34486\\\\298.01\\\\12.13579\\\\77.24346\\\\298.01\\\\10.13579\\\\77.32334\\\\298.01\\\\7.135788\\\\77.74678\\\\298.01\\\\5.135788\\\\78.24847\\\\298.01\\\\2.135788\\\\79.33382\\\\298.01\\\\0.1357885\\\\80.31096\\\\298.01\\\\-2.864212\\\\82.22402\\\\298.01\\\\-4.864212\\\\83.84435\\\\298.01\\\\-6.494857\\\\85.41986\\\\298.01\\\\-7.398883\\\\86.41986\\\\298.01\\\\-8.986199\\\\88.41986\\\\298.01\\\\-10.57276\\\\90.91986\\\\298.01\\\\-11.58712\\\\92.91986\\\\298.01\\\\-12.58144\\\\95.41986\\\\298.01\\\\-13.04796\\\\96.91986\\\\298.01\\\\-13.52869\\\\98.91986\\\\298.01\\\\-13.89546\\\\101.9199\\\\298.01\\\\-13.88846\\\\104.4199\\\\298.01\\\\-13.52147\\\\107.4199\\\\298.01\\\\-13.03896\\\\109.4199\\\\298.01\\\\-12.56842\\\\110.9199\\\\298.01\\\\-11.56853\\\\113.4199\\\\298.01\\\\-10.54737\\\\115.4199\\\\298.01\\\\-8.942026\\\\117.9199\\\\298.01\\\\-6.441266\\\\120.9199\\\\298.01\\\\-4.864212\\\\122.5615\\\\298.01\\\\-3.257069\\\\124.4199\\\\298.01\\\\-2.292064\\\\125.9199\\\\298.01\\\\-1.797885\\\\126.9199\\\\298.01\\\\-1.141081\\\\128.9199\\\\298.01\\\\-0.9914045\\\\130.4199\\\\298.01\\\\-1.169235\\\\131.9199\\\\298.01\\\\-1.678251\\\\133.4199\\\\298.01\\\\-2.778172\\\\135.4199\\\\298.01\\\\-3.864212\\\\136.7395\\\\298.01\\\\-5.864212\\\\138.492\\\\298.01\\\\-7.864212\\\\139.5963\\\\298.01\\\\-9.364211\\\\140.1104\\\\298.01\\\\-11.36421\\\\140.3688\\\\298.01\\\\-13.36421\\\\140.0734\\\\298.01\\\\-14.86421\\\\139.5239\\\\298.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851016723500001.512636853846\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"246\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"15\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n";
+const char* k_rtStruct_json07 =
+"                        \"Value\" : \"41.63579\\\\136.0798\\\\301.01\\\\39.63579\\\\137.1339\\\\301.01\\\\38.13579\\\\137.6336\\\\301.01\\\\36.63579\\\\137.8285\\\\301.01\\\\35.13579\\\\137.6244\\\\301.01\\\\33.63579\\\\137.0851\\\\301.01\\\\32.63579\\\\136.5518\\\\301.01\\\\31.13579\\\\135.4333\\\\301.01\\\\30.12233\\\\134.4199\\\\301.01\\\\29.0038\\\\132.9199\\\\301.01\\\\28.47056\\\\131.9199\\\\301.01\\\\27.93124\\\\130.4199\\\\301.01\\\\27.72713\\\\128.9199\\\\301.01\\\\27.9259\\\\127.4199\\\\301.01\\\\28.43386\\\\125.9199\\\\301.01\\\\29.51482\\\\123.9199\\\\301.01\\\\31.77887\\\\120.9199\\\\301.01\\\\33.79488\\\\117.9199\\\\301.01\\\\35.27357\\\\115.4199\\\\301.01\\\\36.26941\\\\113.4199\\\\301.01\\\\37.23983\\\\110.9199\\\\301.01\\\\37.80718\\\\108.9199\\\\301.01\\\\38.26298\\\\106.4199\\\\301.01\\\\38.42556\\\\102.9199\\\\301.01\\\\38.32632\\\\100.4199\\\\301.01\\\\37.81704\\\\97.41986\\\\301.01\\\\37.26298\\\\95.41986\\\\301.01\\\\36.30376\\\\92.91986\\\\301.01\\\\35.31862\\\\90.91986\\\\301.01\\\\33.79669\\\\88.41986\\\\301.01\\\\32.69613\\\\86.91986\\\\301.01\\\\31.40617\\\\85.41986\\\\301.01\\\\30.13579\\\\84.11847\\\\301.01\\\\28.13579\\\\82.36256\\\\301.01\\\\26.63579\\\\81.26077\\\\301.01\\\\24.13579\\\\79.73861\\\\301.01\\\\22.13579\\\\78.75716\\\\301.01\\\\19.63579\\\\77.80389\\\\301.01\\\\17.63579\\\\77.24678\\\\301.01\\\\15.13579\\\\76.79932\\\\301.01\\\\12.13579\\\\76.64858\\\\301.01\\\\9.635789\\\\76.72783\\\\301.01\\\\6.635788\\\\77.21915\\\\301.01\\\\4.635788\\\\77.74511\\\\301.01\\\\3.135788\\\\78.25896\\\\301.01\\\\0.5678061\\\\79.41986\\\\301.01\\\\-1.864211\\\\80.78835\\\\301.01\\\\-3.364212\\\\81.83115\\\\301.01\\\\-4.710485\\\\82.91986\\\\301.01\\\\-6.864212\\\\84.94054\\\\301.01\\\\-9.004042\\\\87.41986\\\\301.01\\\\-11.00404\\\\90.41986\\\\301.01\\\\-12.04224\\\\92.41986\\\\301.01\\\\-13.0635\\\\94.91986\\\\301.01\\\\-13.55475\\\\96.41986\\\\301.01\\\\-14.05919\\\\98.41986\\\\301.01\\\\-14.46577\\\\100.9199\\\\301.01\\\\-14.56064\\\\103.9199\\\\301.01\\\\-14.45556\\\\105.4199\\\\301.01\\\\-14.05171\\\\107.9199\\\\301.01\\\\-13.54386\\\\109.9199\\\\301.01\\\\-12.47311\\\\112.9199\\\\301.01\\\\-11.52147\\\\114.9199\\\\301.01\\\\-10.0356\\\\117.4199\\\\301.01\\\\-7.977848\\\\120.4199\\\\301.01\\\\-6.493406\\\\122.4199\\\\301.01\\\\-4.729596\\\\124.4199\\\\301.01\\\\-3.644515\\\\125.9199\\\\301.01\\\\-2.642783\\\\127.9199\\\\301.01\\\\-2.184044\\\\129.4199\\\\301.01\\\\-2.190483\\\\131.4199\\\\301.01\\\\-2.659926\\\\132.9199\\\\301.01\\\\-3.746865\\\\134.9199\\\\301.01\\\\-4.864212\\\\136.2112\\\\301.01\\\\-5.864212\\\\137.1478\\\\301.01\\\\-7.364212\\\\138.139\\\\301.01\\\\-8.364211\\\\138.6184\\\\301.01\\\\-9.864211\\\\139.0841\\\\301.01\\\\-10.86421\\\\139.1837\\\\301.01\\\\-12.36421\\\\139.0851\\\\301.01\\\\-13.86421\\\\138.6368\\\\301.01\\\\-15.36421\\\\137.9369\\\\301.01\\\\-16.86421\\\\137.0216\\\\301.01\\\\-19.36421\\\\135.1894\\\\301.01\\\\-22.36421\\\\133.2626\\\\301.01\\\\-25.86421\\\\131.3565\\\\301.01\\\\-28.36421\\\\130.3086\\\\301.01\\\\-29.86421\\\\129.8259\\\\301.01\\\\-32.36421\\\\129.2191\\\\301.01\\\\-34.86421\\\\128.8338\\\\301.01\\\\-37.86421\\\\128.7519\\\\301.01\\\\-41.36421\\\\129.2324\\\\301.01\\\\-43.36421\\\\129.7339\\\\301.01\\\\-46.36421\\\\130.7721\\\\301.01\\\\-49.36421\\\\132.2284\\\\301.01\\\\-51.86421\\\\133.7884\\\\301.01\\\\-53.86421\\\\135.3506\\\\301.01\\\\-56.47069\\\\137.9199\\\\301.01\\\\-58.44481\\\\140.4199\\\\301.01\\\\-60.00607\\\\142.9199\\\\301.01\\\\-61.00807\\\\144.9199\\\\301.01\\\\-61.98475\\\\147.4199\\\\301.01\\\\-62.55171\\\\149.4199\\\\301.01\\\\-62.94481\\\\151.4199\\\\301.01\\\\-63.10673\\\\152.9199\\\\301.01\\\\-63.19798\\\\155.4199\\\\301.01\\\\-63.00807\\\\158.9199\\\\301.01\\\\-62.53729\\\\161.4199\\\\301.01\\\\-61.96073\\\\163.4199\\\\301.01\\\\-60.97069\\\\165.9199\\\\301.01\\\\-60.48248\\\\166.9199\\\\301.01\\\\-59.01394\\\\169.4199\\\\301.01\\\\-57.95292\\\\170.9199\\\\301.01\\\\-56.86421\\\\172.2435\\\\301.01\\\\-55.29496\\\\173.9199\\\\301.01\\\\-53.67131\\\\175.4199\\\\301.01\\\\-52.36421\\\\176.4802\\\\301.01\\\\-49.86421\\\\178.1377\\\\301.01\\\\-47.36421\\\\179.4369\\\\301.01\\\\-45.86421\\\\180.0861\\\\301.01\\\\-42.86421\\\\181.0311\\\\301.01\\\\-40.36421\\\\181.5311\\\\301.01\\\\-36.86421\\\\181.7386\\\\301.01\\\\-33.36421\\\\181.5637\\\\301.01\\\\-30.86421\\\\181.0963\\\\301.01\\\\-28.86421\\\\180.5239\\\\301.01\\\\-26.36421\\\\179.5404\\\\301.01\\\\-24.36421\\\\178.5404\\\\301.01\\\\-20.36421\\\\176.3956\\\\301.01\\\\-17.86421\\\\175.2373\\\\301.01\\\\-14.86421\\\\174.2269\\\\301.01\\\\-13.36421\\\\174.0709\\\\301.01\\\\-11.86421\\\\174.2958\\\\301.01\\\\-9.864211\\\\175.2389\\\\301.01\\\\-8.441711\\\\176.4199\\\\301.01\\\\-7.16156\\\\177.9199\\\\301.01\\\\-6.177148\\\\179.9199\\\\301.01\\\\-5.842727\\\\181.4199\\\\301.01\\\\-5.813838\\\\182.4199\\\\301.01\\\\-6.169591\\\\184.4199\\\\301.01\\\\-7.196132\\\\187.4199\\\\301.01\\\\-8.770263\\\\190.9199\\\\301.01\\\\-10.00404\\\\193.4199\\\\301.01\\\\-10.97069\\\\195.9199\\\\301.01\\\\-11.5356\\\\197.9199\\\\301.01\\\\-12.04705\\\\200.9199\\\\301.01\\\\-12.15398\\\\203.9199\\\\301.01\\\\-12.05475\\\\206.4199\\\\301.01\\\\-11.54546\\\\209.4199\\\\301.01\\\\-10.9914\\\\211.4199\\\\301.01\\\\-10.03218\\\\213.9199\\\\301.01\\\\-9.047048\\\\215.9199\\\\301.01\\\\-7.525116\\\\218.4199\\\\301.01\\\\-6.424556\\\\219.9199\\\\301.01\\\\-5.133131\\\\221.4199\\\\301.01\\\\-3.864212\\\\222.7213\\\\301.01\\\\-1.864211\\\\224.4771\\\\301.01\\\\-0.3642115\\\\225.5771\\\\301.01\\\\2.135788\\\\227.0995\\\\301.01\\\\4.135788\\\\228.0826\\\\301.01\\\\6.635788\\\\229.0358\\\\301.01\\\\8.635789\\\\229.5929\\\\301.01\\\\11.13579\\\\230.0381\\\\301.01\\\\14.13579\\\\230.1911\\\\301.01\\\\16.63579\\\\230.1119\\\\301.01\\\\19.63579\\\\229.6206\\\\301.01\\\\21.63579\\\\229.0929\\\\301.01\\\\23.13579\\\\228.5808\\\\301.01\\\\25.70377\\\\227.4199\\\\301.01\\\\28.13579\\\\226.0514\\\\301.01\\\\29.63579\\\\225.0086\\\\301.01\\\\30.98206\\\\223.9199\\\\301.01\\\\33.13579\\\\221.8956\\\\301.01\\\\35.27562\\\\219.4199\\\\301.01\\\\37.27562\\\\216.4199\\\\301.01\\\\38.31382\\\\214.4199\\\\301.01\\\\39.33508\\\\211.9199\\\\301.01\\\\39.82632\\\\210.4199\\\\301.01\\\\40.33076\\\\208.4199\\\\301.01\\\\40.73735\\\\205.9199\\\\301.01\\\\40.83222\\\\202.9199\\\\301.01\\\\40.72713\\\\201.4199\\\\301.01\\\\40.32329\\\\198.9199\\\\301.01\\\\39.81544\\\\196.9199\\\\301.01\\\\39.32329\\\\195.4199\\\\301.01\\\\38.29488\\\\192.9199\\\\301.01\\\\35.95219\\\\188.4199\\\\301.01\\\\34.43608\\\\184.9199\\\\301.01\\\\33.9686\\\\183.4199\\\\301.01\\\\33.73262\\\\181.4199\\\\301.01\\\\33.94788\\\\179.9199\\\\301.01\\\\34.52448\\\\178.4199\\\\301.01\\\\35.44645\\\\176.9199\\\\301.01\\\\36.36579\\\\175.9199\\\\301.01\\\\37.63579\\\\174.8116\\\\301.01\\\\39.63579\\\\173.747\\\\301.01\\\\41.13579\\\\173.3669\\\\301.01\\\\42.13579\\\\173.3279\\\\301.01\\\\44.13579\\\\173.7036\\\\301.01\\\\46.13579\\\\174.3009\\\\301.01\\\\48.63579\\\\175.2884\\\\301.01\\\\51.13579\\\\176.5471\\\\301.01\\\\54.63579\\\\178.0789\\\\301.01\\\\56.13579\\\\178.5789\\\\301.01\\\\58.13579\\\\179.0963\\\\301.01\\\\60.63579\\\\179.4977\\\\301.01\\\\62.13579\\\\179.6058\\\\301.01\\\\65.13579\\\\179.5138\\\\301.01\\\\67.63579\\\\179.1134\\\\301.01\\\\69.63579\\\\178.6148\\\\301.01\\\\72.63579\\\\177.5771\\\\301.01\\\\75.63579\\\\176.1191\\\\301.01\\\\78.13579\\\\174.5576\\\\301.01\\\\80.13579\\\\172.992\\\\301.01\\\\81.80482\\\\171.4199\\\\301.01\\\\83.17384\\\\169.9199\\\\301.01\\\\84.72182\\\\167.9199\\\\301.01\\\\86.27964\\\\165.4199\\\\301.01\\\\87.28358\\\\163.4199\\\\301.01\\\\88.26079\\\\160.9199\\\\301.01\\\\88.82632\\\\158.9199\\\\301.01\\\\89.22182\\\\156.9199\\\\301.01\\\\89.3794\\\\155.4199\\\\301.01\\\\89.46956\\\\152.9199\\\\301.01\\\\89.26079\\\\149.4199\\\\301.01\\\\88.75857\\\\146.9199\\\\301.01\\\\87.80548\\\\143.9199\\\\301.01\\\\87.16004\\\\142.4199\\\\301.01\\\\85.85093\\\\139.9199\\\\301.01\\\\84.18044\\\\137.4199\\\\301.01\\\\82.63579\\\\135.578\\\\301.01\\\\80.45245\\\\133.4199\\\\301.01\\\\79.13579\\\\132.3039\\\\301.01\\\\76.13579\\\\130.259\\\\301.01\\\\73.13579\\\\128.7278\\\\301.01\\\\70.63579\\\\127.7663\\\\301.01\\\\68.63579\\\\127.2192\\\\301.01\\\\66.63579\\\\126.8285\\\\301.01\\\\63.13579\\\\126.6148\\\\301.01\\\\59.63579\\\\126.7884\\\\301.01\\\\57.13579\\\\127.2502\\\\301.01\\\\55.13579\\\\127.8208\\\\301.01\\\\52.63579\\\\128.8062\\\\301.01\\\\51.63579\\\\129.2905\\\\301.01\\\\49.13579\\\\130.7368\\\\301.01\\\\46.13579\\\\132.7185\\\\301.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851035724600001.533642609670\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"234\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"16\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-7.002701\\\\124.9199\\\\304.01\\\\-5.332349\\\\127.4199\\\\304.01\\\\-4.657244\\\\128.9199\\\\304.01\\\\-4.339658\\\\130.4199\\\\304.01\\\\-4.672063\\\\131.9199\\\\304.01\\\\-5.731034\\\\133.9199\\\\304.01\\\\-7.364212\\\\135.553\\\\304.01\\\\-9.364211\\\\136.612\\\\304.01\\\\-10.86421\\\\136.9399\\\\304.01\\\\-12.86421\\\\136.6037\\\\304.01\\\\-14.36421\\\\135.9559\\\\304.01\\\\-16.36421\\\\134.8809\\\\304.01\\\\-19.36421\\\\134.0734\\\\304.01\\\\-20.86421\\\\133.5753\\\\304.01\\\\-23.36421\\\\132.4405\\\\304.01\\\\-26.86421\\\\130.722\\\\304.01\\\\-29.36421\\\\129.7841\\\\304.01\\\\-31.36421\\\\129.2435\\\\304.01\\\\-33.86421\\\\128.7862\\\\304.01\\\\-36.86421\\\\128.6288\\\\304.01\\\\-39.86421\\\\128.8016\\\\304.01\\\\-42.36421\\\\129.274\\\\304.01\\\\-44.36421\\\\129.8477\\\\304.01\\\\-46.86421\\\\130.78\\\\304.01\\\\-48.86421\\\\131.7485\\\\304.01\\\\-51.36421\\\\133.2519\\\\304.01\\\\-52.86421\\\\134.3259\\\\304.01\\\\-54.71862\\\\135.9199\\\\304.01\\\\-56.66553\\\\137.9199\\\\304.01\\\\-57.90558\\\\139.4199\\\\304.01\\\\-58.98475\\\\140.9199\\\\304.01\\\\-59.89888\\\\142.4199\\\\304.01\\\\-60.96327\\\\144.4199\\\\304.01\\\\-62.00404\\\\146.9199\\\\304.01\\\\-62.49141\\\\148.4199\\\\304.01\\\\-62.99141\\\\150.4199\\\\304.01\\\\-63.42456\\\\153.4199\\\\304.01\\\\-63.54705\\\\155.4199\\\\304.01\\\\-63.39888\\\\157.4199\\\\304.01\\\\-63.05474\\\\159.9199\\\\304.01\\\\-62.44481\\\\162.4199\\\\304.01\\\\-61.95556\\\\163.9199\\\\304.01\\\\-60.87383\\\\166.4199\\\\304.01\\\\-59.51394\\\\168.9199\\\\304.01\\\\-58.50607\\\\170.4199\\\\304.01\\\\-56.92757\\\\172.4199\\\\304.01\\\\-55.52116\\\\173.9199\\\\304.01\\\\-53.86421\\\\175.4709\\\\304.01\\\\-51.86421\\\\177.0449\\\\304.01\\\\-49.36421\\\\178.6177\\\\304.01\\\\-46.36421\\\\180.0843\\\\304.01\\\\-43.36421\\\\181.1058\\\\304.01\\\\-41.36421\\\\181.5843\\\\304.01\\\\-38.36421\\\\181.9891\\\\304.01\\\\-35.86421\\\\182.0426\\\\304.01\\\\-32.36421\\\\181.6119\\\\304.01\\\\-29.86421\\\\181.0164\\\\304.01\\\\-28.36421\\\\180.5311\\\\304.01\\\\-25.86421\\\\179.4802\\\\304.01\\\\-23.36421\\\\178.2136\\\\304.01\\\\-21.36421\\\\177.3016\\\\304.01\\\\-19.86421\\\\176.7993\\\\304.01\\\\-17.36421\\\\176.4579\\\\304.01\\\\-15.36421\\\\176.7158\\\\304.01\\\\-13.36421\\\\177.2203\\\\304.01\\\\-11.36421\\\\178.2083\\\\304.01\\\\-9.70184\\\\179.9199\\\\304.01\\\\-8.743179\\\\181.9199\\\\304.01\\\\-8.174695\\\\183.9199\\\\304.01\\\\-7.905579\\\\185.9199\\\\304.01\\\\-8.208806\\\\188.4199\\\\304.01\\\\-9.245948\\\\191.4199\\\\304.01\\\\-9.968248\\\\192.9199\\\\304.01\\\\-10.97069\\\\195.4199\\\\304.01\\\\-11.4448\\\\196.9199\\\\304.01\\\\-12.03729\\\\199.4199\\\\304.01\\\\-12.38126\\\\202.4199\\\\304.01\\\\-12.46825\\\\203.9199\\\\304.01\\\\-12.05171\\\\207.9199\\\\304.01\\\\-11.47785\\\\210.4199\\\\304.01\\\\-10.41841\\\\213.4199\\\\304.01\\\\-9.501996\\\\215.4199\\\\304.01\\\\-8.038957\\\\217.9199\\\\304.01\\\\-6.995714\\\\219.4199\\\\304.01\\\\-5.364212\\\\221.372\\\\304.01\\\\-4.364212\\\\222.4369\\\\304.01\\\\-2.749882\\\\223.9199\\\\304.01\\\\-1.364211\\\\225.0471\\\\304.01\\\\0.1357885\\\\226.0878\\\\304.01\\\\2.635788\\\\227.5471\\\\304.01\\\\3.635788\\\\228.0311\\\\304.01\\\\6.135788\\\\229.0404\\\\304.01\\\\7.635788\\\\229.5059\\\\304.01\\\\10.13579\\\\230.0826\\\\304.01\\\\13.63579\\\\230.4369\\\\304.01\\\\15.13579\\\\230.4102\\\\304.01\\\\18.13579\\\\230.1177\\\\304.01\\\\20.63579\\\\229.5789\\\\304.01\\\\23.63579\\\\228.5771\\\\304.01\\\\25.63579\\\\227.6478\\\\304.01\\\\27.63579\\\\226.5696\\\\304.01\\\\29.13579\\\\225.5808\\\\304.01\\\\30.63579\\\\224.4476\\\\304.01\\\\32.13579\\\\223.1389\\\\304.01\\\\34.72183\\\\220.4199\\\\304.01\\\\36.23735\\\\218.4199\\\\304.01\\\\37.77357\\\\215.9199\\\\304.01\\\\38.76079\\\\213.9199\\\\304.01\\\\39.71638\\\\211.4199\\\\304.01\\\\40.29669\\\\209.4199\\\\304.01\\\\40.83928\\\\206.4199\\\\304.01\\\\40.95776\\\\203.9199\\\\304.01\\\\40.76941\\\\200.4199\\\\304.01\\\\40.27357\\\\197.9199\\\\304.01\\\\39.32481\\\\194.9199\\\\304.01\\\\38.71079\\\\193.4199\\\\304.01\\\\37.00217\\\\189.9199\\\\304.01\\\\35.97488\\\\186.9199\\\\304.01\\\\35.81218\\\\184.9199\\\\304.01\\\\36.02215\\\\182.9199\\\\304.01\\\\36.53948\\\\180.9199\\\\304.01\\\\36.95037\\\\179.9199\\\\304.01\\\\37.94024\\\\178.4199\\\\304.01\\\\39.13579\\\\177.2874\\\\304.01\\\\40.13579\\\\176.6719\\\\304.01\\\\42.13579\\\\175.8343\\\\304.01\\\\44.13579\\\\175.2645\\\\304.01\\\\45.63579\\\\175.1192\\\\304.01\\\\47.13579\\\\175.259\\\\304.01\\\\49.13579\\\\175.872\\\\304.01\\\\54.13579\\\\178.0657\\\\304.01\\\\57.13579\\\\179.0164\\\\304.01\\\\59.63579\\\\179.5214\\\\304.01\\\\63.13579\\\\179.7263\\\\304.01\\\\66.13579\\\\179.5597\\\\304.01\\\\68.63579\\\\179.0826\\\\304.01\\\\70.63579\\\\178.5164\\\\304.01\\\\73.13579\\\\177.5753\\\\304.01\\\\75.13579\\\\176.6043\\\\304.01\\\\77.63579\\\\175.0995\\\\304.01\\\\79.13579\\\\174.0263\\\\304.01\\\\81.00275\\\\172.4199\\\\304.01\\\\82.94763\\\\170.4199\\\\304.01\\\\84.19308\\\\168.9199\\\\304.01\\\\85.26515\\\\167.4199\\\\304.01\\\\86.74468\\\\164.9199\\\\304.01\\\\87.67715\\\\162.9199\\\\304.01\\\\88.76941\\\\159.9199\\\\304.01\\\\89.26729\\\\157.9199\\\\304.01\\\\89.69914\\\\154.9199\\\\304.01\\\\89.77764\\\\151.9199\\\\304.01\\\\89.31544\\\\148.4199\\\\304.01\\\\88.83076\\\\146.4199\\\\304.01\\\\88.18044\\\\144.4199\\\\304.01\\\\87.34991\\\\142.4199\\\\304.01\\\\86.33366\\\\140.4199\\\\304.01\\\\84.75405\\\\137.9199\\\\304.01\\\\83.16004\\\\135.9199\\\\304.01\\\\80.63579\\\\133.3449\\\\304.01\\\\78.13579\\\\131.3449\\\\304.01\\\\75.63579\\\\129.7572\\\\304.01\\\\73.63579\\\\128.7402\\\\304.01\\\\71.13579\\\\127.7324\\\\304.01\\\\69.63579\\\\127.2572\\\\304.01\\\\67.63579\\\\126.778\\\\304.01\\\\64.13579\\\\126.3338\\\\304.01\\\\61.63579\\\\126.3752\\\\304.01\\\\58.63579\\\\126.7435\\\\304.01\\\\56.13579\\\\127.3449\\\\304.01\\\\53.63579\\\\128.2206\\\\304.01\\\\51.13579\\\\129.3886\\\\304.01\\\\48.13579\\\\131.1148\\\\304.01\\\\45.13579\\\\132.5771\\\\304.01\\\\42.63579\\\\133.274\\\\304.01\\\\41.63579\\\\133.6847\\\\304.01\\\\40.13579\\\\134.6251\\\\304.01\\\\38.13579\\\\135.5657\\\\304.01\\\\36.63579\\\\135.7968\\\\304.01\\\\35.13579\\\\135.5526\\\\304.01\\\\33.13579\\\\134.5317\\\\304.01\\\\32.13579\\\\133.6744\\\\304.01\\\\31.02395\\\\132.4199\\\\304.01\\\\30.0031\\\\130.4199\\\\304.01\\\\29.75883\\\\128.9199\\\\304.01\\\\29.99374\\\\127.4199\\\\304.01\\\\30.93457\\\\125.4199\\\\304.01\\\\31.87468\\\\123.9199\\\\304.01\\\\32.28358\\\\122.9199\\\\304.01\\\\32.97309\\\\120.4199\\\\304.01\\\\34.10454\\\\117.9199\\\\304.01\\\\36.20794\\\\113.9199\\\\304.01\\\\37.24227\\\\111.4199\\\\304.01\\\\37.71638\\\\109.9199\\\\304.01\\\\38.30886\\\\107.4199\\\\304.01\\\\38.70211\\\\103.9199\\\\304.01\\\\38.67046\\\\101.9199\\\\304.01\\\\38.32329\\\\98.91986\\\\304.01\\\\37.74942\\\\96.41986\\\\304.01\\\\36.68998\\\\93.41986\\\\304.01\\\\35.77357\\\\91.41986\\\\304.01\\\\34.31053\\\\88.91986\\\\304.01\\\\33.26729\\\\87.41986\\\\304.01\\\\32.13579\\\\86.02943\\\\304.01\\\\30.13383\\\\83.91986\\\\304.01\\\\27.63579\\\\81.79266\\\\304.01\\\\26.13579\\\\80.75189\\\\304.01\\\\23.63579\\\\79.29266\\\\304.01\\\\20.13579\\\\77.79707\\\\304.01\\\\18.63579\\\\77.33382\\\\304.01\\\\16.13579\\\\76.75716\\\\304.01\\\\12.63579\\\\76.39918\\\\304.01\\\\11.13579\\\\76.42567\\\\304.01\\\\8.135789\\\\76.72199\\\\304.01\\\\5.635788\\\\77.25896\\\\304.01\\\\2.635788\\\\78.2626\\\\304.01\\\\0.6357885\\\\79.19189\\\\304.01\\\\-1.364211\\\\80.27013\\\\304.01\\\\-2.864212\\\\81.25896\\\\304.01\\\\-4.364212\\\\82.39208\\\\304.01\\\\-6.864212\\\\84.67407\\\\304.01\\\\-8.452921\\\\86.41986\\\\304.01\\\\-9.968248\\\\88.41986\\\\304.01\\\\-11.50404\\\\90.91986\\\\304.01\\\\-12.48921\\\\92.91986\\\\304.01\\\\-13.4448\\\\95.41986\\\\304.01\\\\-14.02512\\\\97.41986\\\\304.01\\\\-14.56907\\\\100.4199\\\\304.01\\\\-14.68618\\\\102.9199\\\\304.01\\\\-14.49783\\\\106.4199\\\\304.01\\\\-14.002\\\\108.9199\\\\304.01\\\\-13.05324\\\\111.9199\\\\304.01\\\\-11.97069\\\\114.4199\\\\304.01\\\\-8.813155\\\\119.9199\\\\304.01\\\\-7.750575\\\\122.4199\\\\304.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851068726500001.546012551665\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"248\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"17\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"14.13579\\\\230.4862\\\\307.01\\\\18.13579\\\\230.1234\\\\307.01\\\\20.63579\\\\229.5843\\\\307.01\\\\23.63579\\\\228.5826\\\\307.01\\\\25.63579\\\\227.6544\\\\307.01\\\\27.63579\\\\226.5734\\\\307.01\\\\29.13579\\\\225.5843\\\\307.01\\\\30.63579\\\\224.4545\\\\307.01\\\\32.13579\\\\223.1497\\\\307.01\\\\34.73231\\\\220.4199\\\\307.01\\\\36.24707\\\\218.4199\\\\307.01\\\\37.78162\\\\215.9199\\\\307.01\\\\38.76729\\\\213.9199\\\\307.01\\\\39.7245\\\\211.4199\\\\307.01\\\\40.30202\\\\209.4199\\\\307.01\\\\40.84336\\\\206.4199\\\\307.01\\\\40.96271\\\\203.9199\\\\307.01\\\\40.77357\\\\200.4199\\\\307.01\\\\40.27764\\\\197.9199\\\\307.01\\\\39.3293\\\\194.9199\\\\307.01\\\\38.71912\\\\193.4199\\\\307.01\\\\37.00643\\\\189.9199\\\\307.01\\\\36.42688\\\\188.4199\\\\307.01\\\\35.98225\\\\186.9199\\\\307.01\\\\35.84065\\\\184.9199\\\\307.01\\\\36.01079\\\\183.4199\\\\307.01\\\\36.51752\\\\181.9199\\\\307.01\\\\37.00217\\\\180.9199\\\\307.01\\\\37.99393\\\\179.4199\\\\307.01\\\\39.13579\\\\178.1658\\\\307.01\\\\40.13579\\\\177.278\\\\307.01\\\\41.63579\\\\176.2862\\\\307.01\\\\42.63579\\\\175.8016\\\\307.01\\\\44.13579\\\\175.2949\\\\307.01\\\\45.63579\\\\175.1247\\\\307.01\\\\47.13579\\\\175.2645\\\\307.01\\\\48.63579\\\\175.7045\\\\307.01\\\\54.13579\\\\178.0715\\\\307.01\\\\57.13579\\\\179.0214\\\\307.01\\\\59.63579\\\\179.5239\\\\307.01\\\\63.13579\\\\179.7308\\\\307.01\\\\65.63579\\\\179.6192\\\\307.01\\\\68.63579\\\\179.0896\\\\307.01\\\\70.63579\\\\178.5263\\\\307.01\\\\72.13579\\\\177.9862\\\\307.01\\\\74.13579\\\\177.1148\\\\307.01\\\\76.13579\\\\176.0637\\\\307.01\\\\79.13579\\\\174.0311\\\\307.01\\\\81.0086\\\\172.4199\\\\307.01\\\\82.9529\\\\170.4199\\\\307.01\\\\84.19914\\\\168.9199\\\\307.01\\\\85.26941\\\\167.4199\\\\307.01\\\\86.75175\\\\164.9199\\\\307.01\\\\87.68684\\\\162.9199\\\\307.01\\\\88.77357\\\\159.9199\\\\307.01\\\\89.27562\\\\157.9199\\\\307.01\\\\89.71638\\\\154.9199\\\\307.01\\\\89.82782\\\\152.9199\\\\307.01\\\\89.68684\\\\150.9199\\\\307.01\\\\89.32175\\\\148.4199\\\\307.01\\\\88.83649\\\\146.4199\\\\307.01\\\\88.18999\\\\144.4199\\\\307.01\\\\87.35246\\\\142.4199\\\\307.01\\\\86.33649\\\\140.4199\\\\307.01\\\\84.75857\\\\137.9199\\\\307.01\\\\83.16704\\\\135.9199\\\\307.01\\\\80.63579\\\\133.3393\\\\307.01\\\\79.13579\\\\132.1011\\\\307.01\\\\76.63579\\\\130.3393\\\\307.01\\\\73.63579\\\\128.7339\\\\307.01\\\\71.13579\\\\127.7278\\\\307.01\\\\69.63579\\\\127.2502\\\\307.01\\\\67.63579\\\\126.7701\\\\307.01\\\\64.63579\\\\126.372\\\\307.01\\\\63.13579\\\\126.2701\\\\307.01\\\\61.63579\\\\126.3565\\\\307.01\\\\58.63579\\\\126.7386\\\\307.01\\\\56.13579\\\\127.3393\\\\307.01\\\\54.63579\\\\127.8233\\\\307.01\\\\52.13579\\\\128.8818\\\\307.01\\\\46.13579\\\\132.1365\\\\307.01\\\\45.13579\\\\132.5696\\\\307.01\\\\43.13579\\\\133.1104\\\\307.01\\\\41.13579\\\\133.1027\\\\307.01\\\\39.13579\\\\132.5188\\\\307.01\\\\38.63579\\\\132.4971\\\\307.01\\\\37.13579\\\\134.4706\\\\307.01\\\\35.63579\\\\135.5464\\\\307.01\\\\34.13579\\\\136.0158\\\\307.01\\\\32.63579\\\\135.5587\\\\307.01\\\\31.13579\\\\134.5006\\\\307.01\\\\30.00924\\\\132.9199\\\\307.01\\\\29.57402\\\\131.4199\\\\307.01\\\\30.02434\\\\129.9199\\\\307.01\\\\31.13579\\\\128.4078\\\\307.01\\\\33.07329\\\\126.9199\\\\307.01\\\\33.03827\\\\126.4199\\\\307.01\\\\32.45295\\\\124.4199\\\\307.01\\\\32.44526\\\\122.4199\\\\307.01\\\\32.98225\\\\120.4199\\\\307.01\\\\34.13579\\\\117.8923\\\\307.01\\\\36.2136\\\\113.9199\\\\307.01\\\\37.24707\\\\111.4199\\\\307.01\\\\37.72183\\\\109.9199\\\\307.01\\\\38.31382\\\\107.4199\\\\307.01\\\\38.67046\\\\104.4199\\\\307.01\\\\38.75405\\\\102.9199\\\\307.01\\\\38.3293\\\\98.91986\\\\307.01\\\\37.75405\\\\96.41986\\\\307.01\\\\36.69613\\\\93.41986\\\\307.01\\\\35.77964\\\\91.41986\\\\307.01\\\\34.31382\\\\88.91986\\\\307.01\\\\33.2715\\\\87.41986\\\\307.01\\\\32.13579\\\\86.02634\\\\307.01\\\\30.13579\\\\83.91791\\\\307.01\\\\27.63579\\\\81.7905\\\\307.01\\\\26.13579\\\\80.74847\\\\307.01\\\\23.63579\\\\79.28835\\\\307.01\\\\20.13579\\\\77.79486\\\\307.01\\\\18.63579\\\\77.32851\\\\307.01\\\\16.13579\\\\76.75017\\\\307.01\\\\12.13579\\\\76.35353\\\\307.01\\\\8.135789\\\\76.71637\\\\307.01\\\\5.635788\\\\77.25362\\\\307.01\\\\2.635788\\\\78.25716\\\\307.01\\\\0.6357885\\\\79.18528\\\\307.01\\\\-1.364211\\\\80.26633\\\\307.01\\\\-2.864212\\\\81.25539\\\\307.01\\\\-4.364212\\\\82.38519\\\\307.01\\\\-5.864212\\\\83.69002\\\\307.01\\\\-8.460731\\\\86.41986\\\\307.01\\\\-9.975492\\\\88.41986\\\\307.01\\\\-11.51005\\\\90.91986\\\\307.01\\\\-12.49571\\\\92.91986\\\\307.01\\\\-13.45292\\\\95.41986\\\\307.01\\\\-14.03044\\\\97.41986\\\\307.01\\\\-14.57178\\\\100.4199\\\\307.01\\\\-14.69113\\\\102.9199\\\\307.01\\\\-14.502\\\\106.4199\\\\307.01\\\\-14.00607\\\\108.9199\\\\307.01\\\\-13.05772\\\\111.9199\\\\307.01\\\\-11.97785\\\\114.4199\\\\307.01\\\\-8.843534\\\\119.9199\\\\307.01\\\\-8.178251\\\\121.4199\\\\307.01\\\\-7.722358\\\\122.9199\\\\307.01\\\\-7.57178\\\\124.4199\\\\307.01\\\\-7.64881\\\\125.4199\\\\307.01\\\\-7.944804\\\\126.4199\\\\307.01\\\\-7.864212\\\\127.2299\\\\307.01\\\\-5.864212\\\\128.2935\\\\307.01\\\\-4.207962\\\\129.9199\\\\307.01\\\\-3.203497\\\\131.9199\\\\307.01\\\\-3.045334\\\\132.9199\\\\307.01\\\\-3.208599\\\\133.9199\\\\307.01\\\\-4.270838\\\\135.9199\\\\307.01\\\\-5.364212\\\\137.0193\\\\307.01\\\\-7.364212\\\\138.0806\\\\307.01\\\\-8.364211\\\\138.2472\\\\307.01\\\\-9.364211\\\\138.0891\\\\307.01\\\\-11.36421\\\\137.0818\\\\307.01\\\\-12.99477\\\\135.4199\\\\307.01\\\\-13.86421\\\\133.7608\\\\307.01\\\\-14.36421\\\\133.5952\\\\307.01\\\\-15.86421\\\\134.0404\\\\307.01\\\\-17.36421\\\\134.2123\\\\307.01\\\\-18.86421\\\\134.0696\\\\307.01\\\\-21.86421\\\\133.1043\\\\307.01\\\\-26.86421\\\\130.7191\\\\307.01\\\\-29.36421\\\\129.78\\\\307.01\\\\-31.36421\\\\129.2402\\\\307.01\\\\-34.36421\\\\128.7263\\\\307.01\\\\-36.86421\\\\128.6261\\\\307.01\\\\-39.86421\\\\128.7971\\\\307.01\\\\-42.36421\\\\129.2701\\\\307.01\\\\-44.36421\\\\129.8393\\\\307.01\\\\-46.86421\\\\130.776\\\\307.01\\\\-48.86421\\\\131.7451\\\\307.01\\\\-51.36421\\\\133.2485\\\\307.01\\\\-52.86421\\\\134.3233\\\\307.01\\\\-54.72322\\\\135.9199\\\\307.01\\\\-56.66919\\\\137.9199\\\\307.01\\\\-57.91208\\\\139.4199\\\\307.01\\\\-58.98921\\\\140.9199\\\\307.01\\\\-59.90558\\\\142.4199\\\\307.01\\\\-60.96825\\\\144.4199\\\\307.01\\\\-62.00807\\\\146.9199\\\\307.01\\\\-62.49783\\\\148.4199\\\\307.01\\\\-62.99993\\\\150.4199\\\\307.01\\\\-63.44202\\\\153.4199\\\\307.01\\\\-63.55772\\\\155.4199\\\\307.01\\\\-63.41841\\\\157.4199\\\\307.01\\\\-63.06064\\\\159.9199\\\\307.01\\\\-62.45292\\\\162.4199\\\\307.01\\\\-61.96073\\\\163.9199\\\\307.01\\\\-60.87757\\\\166.4199\\\\307.01\\\\-59.51585\\\\168.9199\\\\307.01\\\\-58.50807\\\\170.4199\\\\307.01\\\\-56.93054\\\\172.4199\\\\307.01\\\\-55.36421\\\\174.0796\\\\307.01\\\\-53.86421\\\\175.4771\\\\307.01\\\\-51.86421\\\\177.0492\\\\307.01\\\\-49.36421\\\\178.6206\\\\307.01\\\\-47.36421\\\\179.634\\\\307.01\\\\-45.36421\\\\180.4612\\\\307.01\\\\-43.36421\\\\181.1119\\\\307.01\\\\-41.36421\\\\181.5929\\\\307.01\\\\-38.36421\\\\182.0059\\\\307.01\\\\-35.86421\\\\182.0576\\\\307.01\\\\-32.36421\\\\181.6177\\\\307.01\\\\-29.86421\\\\181.0239\\\\307.01\\\\-28.36421\\\\180.5358\\\\307.01\\\\-25.86421\\\\179.4891\\\\307.01\\\\-23.36421\\\\178.2178\\\\307.01\\\\-21.36421\\\\177.3183\\\\307.01\\\\-19.36421\\\\176.722\\\\307.01\\\\-17.86421\\\\176.5826\\\\307.01\\\\-16.36421\\\\176.7435\\\\307.01\\\\-14.86421\\\\177.2485\\\\307.01\\\\-12.86421\\\\178.3477\\\\307.01\\\\-11.86421\\\\179.138\\\\307.01\\\\-10.58232\\\\180.4199\\\\307.01\\\\-9.792064\\\\181.4199\\\\307.01\\\\-8.69282\\\\183.4199\\\\307.01\\\\-8.187816\\\\184.9199\\\\307.01\\\\-8.02691\\\\186.4199\\\\307.01\\\\-8.145048\\\\187.9199\\\\307.01\\\\-8.676711\\\\189.9199\\\\307.01\\\\-9.252931\\\\191.4199\\\\307.01\\\\-9.970693\\\\192.9199\\\\307.01\\\\-10.97549\\\\195.4199\\\\307.01\\\\-11.45025\\\\196.9199\\\\307.01\\\\-12.04224\\\\199.4199\\\\307.01\\\\-12.39888\\\\202.4199\\\\307.01\\\\-12.48248\\\\203.9199\\\\307.01\\\\-12.05772\\\\207.9199\\\\307.01\\\\-11.48475\\\\210.4199\\\\307.01\\\\-10.42456\\\\213.4199\\\\307.01\\\\-9.508066\\\\215.4199\\\\307.01\\\\-8.042242\\\\217.9199\\\\307.01\\\\-6.999926\\\\219.4199\\\\307.01\\\\-4.870026\\\\221.9199\\\\307.01\\\\-2.752931\\\\223.9199\\\\307.01\\\\-1.364211\\\\225.0492\\\\307.01\\\\0.1357885\\\\226.0912\\\\307.01\\\\2.635788\\\\227.5514\\\\307.01\\\\6.135788\\\\229.0449\\\\307.01\\\\7.635788\\\\229.5112\\\\307.01\\\\10.13579\\\\230.0896\\\\307.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851092727900001.507332422180\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"270\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"18\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"14.13579\\\\230.4862\\\\310.01\\\\18.13579\\\\230.1234\\\\310.01\\\\20.63579\\\\229.5843\\\\310.01\\\\23.63579\\\\228.5826\\\\310.01\\\\25.63579\\\\227.6544\\\\310.01\\\\27.63579\\\\226.5734\\\\310.01\\\\29.13579\\\\225.5843\\\\310.01\\\\30.63579\\\\224.4545\\\\310.01\\\\32.13579\\\\223.1497\\\\310.01\\\\34.73231\\\\220.4199\\\\310.01\\\\36.24707\\\\218.4199\\\\310.01\\\\37.78162\\\\215.9199\\\\310.01\\\\38.76729\\\\213.9199\\\\310.01\\\\39.7245\\\\211.4199\\\\310.01\\\\40.30202\\\\209.4199\\\\310.01\\\\40.84336\\\\206.4199\\\\310.01\\\\40.96271\\\\203.9199\\\\310.01\\\\40.77357\\\\200.4199\\\\310.01\\\\40.27764\\\\197.9199\\\\310.01\\\\39.3293\\\\194.9199\\\\310.01\\\\38.71912\\\\193.4199\\\\310.01\\\\37.00643\\\\189.9199\\\\310.01\\\\36.42688\\\\188.4199\\\\310.01\\\\35.98225\\\\186.9199\\\\310.01\\\\35.83789\\\\184.9199\\\\310.01\\\\35.988\\\\183.4199\\\\310.01\\\\36.26941\\\\182.4199\\\\310.01\\\\36.26491\\\\181.4199\\\\310.01\\\\34.99829\\\\179.9199\\\\310.01\\\\34.38188\\\\178.9199\\\\310.01\\\\33.88579\\\\177.4199\\\\310.01\\\\34.07719\\\\176.4199\\\\310.01\\\\34.63116\\\\175.4199\\\\310.01\\\\35.63579\\\\174.4152\\\\310.01\\\\36.63579\\\\173.8545\\\\310.01\\\\37.63579\\\\173.6662\\\\310.01\\\\39.13579\\\\174.166\\\\310.01\\\\40.13579\\\\174.7764\\\\310.01\\\\41.13579\\\\175.6614\\\\310.01\\\\42.13579\\\\175.9128\\\\310.01\\\\44.13579\\\\175.2927\\\\310.01\\\\45.63579\\\\175.1247\\\\310.01\\\\47.13579\\\\175.2645\\\\310.01\\\\48.63579\\\\175.7045\\\\310.01\\\\54.13579\\\\178.0715\\\\310.01\\\\57.13579\\\\179.0214\\\\310.01\\\\59.63579\\\\179.5239\\\\310.01\\\\63.13579\\\\179.7308\\\\310.01\\\\65.63579\\\\179.6192\\\\310.01\\\\68.63579\\\\179.0896\\\\310.01\\\\70.63579\\\\178.5263\\\\310.01\\\\72.13579\\\\177.9862\\\\310.01\\\\74.13579\\\\177.1148\\\\310.01\\\\76.13579\\\\176.0637\\\\310.01\\\\79.13579\\\\174.0311\\\\310.01\\\\81.0086\\\\172.4199\\\\310.01\\\\82.9529\\\\170.4199\\\\310.01\\\\84.19914\\\\168.9199\\\\310.01\\\\85.26941\\\\167.4199\\\\310.01\\\\86.75175\\\\164.9199\\\\310.01\\\\87.68684\\\\162.9199\\\\310.01\\\\88.77357\\\\159.9199\\\\310.01\\\\89.27562\\\\157.9199\\\\310.01\\\\89.71638\\\\154.9199\\\\310.01\\\\89.82782\\\\152.9199\\\\310.01\\\\89.68684\\\\150.9199\\\\310.01\\\\89.32175\\\\148.4199\\\\310.01\\\\88.83649\\\\146.4199\\\\310.01\\\\88.18999\\\\144.4199\\\\310.01\\\\87.35246\\\\142.4199\\\\310.01\\\\86.33649\\\\140.4199\\\\310.01\\\\84.75857\\\\137.9199\\\\310.01\\\\83.16704\\\\135.9199\\\\310.01\\\\80.63579\\\\133.3393\\\\310.01\\\\79.13579\\\\132.1011\\\\310.01\\\\76.63579\\\\130.3393\\\\310.01\\\\73.63579\\\\128.7339\\\\310.01\\\\71.13579\\\\127.7278\\\\310.01\\\\69.63579\\\\127.2502\\\\310.01\\\\67.63579\\\\126.7701\\\\310.01\\\\64.63579\\\\126.372\\\\310.01\\\\63.13579\\\\126.2701\\\\310.01\\\\61.63579\\\\126.3565\\\\310.01\\\\58.63579\\\\126.7386\\\\310.01\\\\56.13579\\\\127.3393\\\\310.01\\\\54.63579\\\\127.8233\\\\310.01\\\\52.13579\\\\128.8818\\\\310.01\\\\46.13579\\\\132.1365\\\\310.01\\\\45.13579\\\\132.5696\\\\310.01\\\\42.13579\\\\133.3956\\\\310.01\\\\41.55696\\\\133.9199\\\\310.01\\\\40.21622\\\\135.9199\\\\310.01\\\\38.63579\\\\137.4791\\\\310.01\\\\37.13579\\\\138.4632\\\\310.01\\\\35.63579\\\\139.1069\\\\310.01\\\\34.13579\\\\139.3742\\\\310.01\\\\32.13579\\\\139.0896\\\\310.01\\\\30.13579\\\\138.1211\\\\310.01\\\\28.68742\\\\136.9199\\\\310.01\\\\27.43292\\\\135.4199\\\\310.01\\\\26.47601\\\\133.4199\\\\310.01\\\\26.25527\\\\131.4199\\\\310.01\\\\26.50186\\\\129.9199\\\\310.01\\\\27.44195\\\\127.9199\\\\310.01\\\\28.58762\\\\126.4199\\\\310.01\\\\29.65523\\\\125.4199\\\\310.01\\\\31.63579\\\\124.0459\\\\310.01\\\\32.17715\\\\123.4199\\\\310.01\\\\32.98225\\\\120.4199\\\\310.01\\\\34.13579\\\\117.8923\\\\310.01\\\\36.2136\\\\113.9199\\\\310.01\\\\37.24707\\\\111.4199\\\\310.01\\\\37.72183\\\\109.9199\\\\310.01\\\\38.31382\\\\107.4199\\\\310.01\\\\38.67046\\\\104.4199\\\\310.01\\\\38.75405\\\\102.9199\\\\310.01\\\\38.3293\\\\98.91986\\\\310.01\\\\37.75405\\\\96.41986\\\\310.01\\\\36.69613\\\\93.41986\\\\310.01\\\\35.77964\\\\91.41986\\\\310.01\\\\34.31382\\\\88.91986\\\\310.01\\\\33.2715\\\\87.41986\\\\310.01\\\\32.13579\\\\86.02634\\\\310.01\\\\30.13579\\\\83.91791\\\\310.01\\\\27.63579\\\\81.7905\\\\310.01\\\\26.13579\\\\80.74847\\\\310.01\\\\23.63579\\\\79.28835\\\\310.01\\\\20.13579\\\\77.79486\\\\310.01\\\\18.63579\\\\77.32851\\\\310.01\\\\16.13579\\\\76.75017\\\\310.01\\\\12.13579\\\\76.35353\\\\310.01\\\\8.135789\\\\76.71637\\\\310.01\\\\5.635788\\\\77.25362\\\\310.01\\\\2.635788\\\\78.25716\\\\310.01\\\\0.6357885\\\\79.18528\\\\310.01\\\\-1.364211\\\\80.26633\\\\310.01\\\\-2.864212\\\\81.25539\\\\310.01\\\\-4.364212\\\\82.38519\\\\310.01\\\\-5.864212\\\\83.69002\\\\310.01\\\\-8.460731\\\\86.41986\\\\310.01\\\\-9.975492\\\\88.41986\\\\310.01\\\\-11.51005\\\\90.91986\\\\310.01\\\\-12.49571\\\\92.91986\\\\310.01\\\\-13.45292\\\\95.41986\\\\310.01\\\\-14.03044\\\\97.41986\\\\310.01\\\\-14.57178\\\\100.4199\\\\310.01\\\\-14.69113\\\\102.9199\\\\310.01\\\\-14.502\\\\106.4199\\\\310.01\\\\-14.00607\\\\108.9199\\\\310.01\\\\-13.05772\\\\111.9199\\\\310.01\\\\-11.97785\\\\114.4199\\\\310.01\\\\-8.843534\\\\119.9199\\\\310.01\\\\-8.175187\\\\121.4199\\\\310.01\\\\-7.470693\\\\123.9199\\\\310.01\\\\-6.864212\\\\124.6244\\\\310.01\\\\-5.364212\\\\125.3065\\\\310.01\\\\-3.864212\\\\126.3094\\\\310.01\\\\-2.211956\\\\127.9199\\\\310.01\\\\-1.176711\\\\129.4199\\\\310.01\\\\-0.6816457\\\\130.4199\\\\310.01\\\\-0.188405\\\\131.9199\\\\310.01\\\\-0.08336733\\\\132.9199\\\\310.01\\\\-0.247305\\\\134.4199\\\\310.01\\\\-0.8017115\\\\135.9199\\\\310.01\\\\-1.679097\\\\137.4199\\\\310.01\\\\-2.581154\\\\138.4199\\\\310.01\\\\-3.864212\\\\139.5973\\\\310.01\\\\-5.364212\\\\140.4625\\\\310.01\\\\-6.864212\\\\141.0252\\\\310.01\\\\-8.364211\\\\141.2053\\\\310.01\\\\-9.364211\\\\141.101\\\\310.01\\\\-10.86421\\\\140.6143\\\\310.01\\\\-11.86421\\\\140.1195\\\\310.01\\\\-13.36421\\\\139.0945\\\\310.01\\\\-15.00626\\\\137.4199\\\\310.01\\\\-16.86421\\\\134.6526\\\\310.01\\\\-17.36421\\\\134.3886\\\\310.01\\\\-18.86421\\\\134.0912\\\\310.01\\\\-21.86421\\\\133.1043\\\\310.01\\\\-26.86421\\\\130.7191\\\\310.01\\\\-29.36421\\\\129.78\\\\310.01\\\\-31.36421\\\\129.2402\\\\310.01\\\\-34.36421\\\\128.7263\\\\310.01\\\\-36.86421\\\\128.6261\\\\310.01\\\\-39.86421\\\\128.7971\\\\310.01\\\\-42.36421\\\\129.2701\\\\310.01\\\\-44.36421\\\\129.8393\\\\310.01\\\\-46.86421\\\\130.776\\\\310.01\\\\-48.86421\\\\131.7451\\\\310.01\\\\-51.36421\\\\133.2485\\\\310.01\\\\-52.86421\\\\134.3233\\\\310.01\\\\-54.72322\\\\135.9199\\\\310.01\\\\-56.66919\\\\137.9199\\\\310.01\\\\-57.91208\\\\139.4199\\\\310.01\\\\-58.98921\\\\140.9199\\\\310.01\\\\-59.90558\\\\142.4199\\\\310.01\\\\-60.96825\\\\144.4199\\\\310.01\\\\-62.00807\\\\146.9199\\\\310.01\\\\-62.49783\\\\148.4199\\\\310.01\\\\-62.99993\\\\150.4199\\\\310.01\\\\-63.44202\\\\153.4199\\\\310.01\\\\-63.55772\\\\155.4199\\\\310.01\\\\-63.41841\\\\157.4199\\\\310.01\\\\-63.06064\\\\159.9199\\\\310.01\\\\-62.45292\\\\162.4199\\\\310.01\\\\-61.96073\\\\163.9199\\\\310.01\\\\-60.87757\\\\166.4199\\\\310.01\\\\-59.51585\\\\168.9199\\\\310.01\\\\-58.50807\\\\170.4199\\\\310.01\\\\-56.93054\\\\172.4199\\\\310.01\\\\-55.36421\\\\174.0796\\\\310.01\\\\-53.86421\\\\175.4771\\\\310.01\\\\-51.86421\\\\177.0492\\\\310.01\\\\-49.36421\\\\178.6206\\\\310.01\\\\-47.36421\\\\179.634\\\\310.01\\\\-45.36421\\\\180.4612\\\\310.01\\\\-43.36421\\\\181.1119\\\\310.01\\\\-41.36421\\\\181.5929\\\\310.01\\\\-38.36421\\\\182.0059\\\\310.01\\\\-35.86421\\\\182.0576\\\\310.01\\\\-32.36421\\\\181.6177\\\\310.01\\\\-29.86421\\\\181.0239\\\\310.01\\\\-28.36421\\\\180.5358\\\\310.01\\\\-25.86421\\\\179.4891\\\\310.01\\\\-23.36421\\\\178.2178\\\\310.01\\\\-21.36421\\\\177.3183\\\\310.01\\\\-19.36421\\\\176.722\\\\310.01\\\\-17.86421\\\\176.5789\\\\310.01\\\\-15.86421\\\\176.8016\\\\310.01\\\\-14.86421\\\\177.0947\\\\310.01\\\\-13.86421\\\\177.1754\\\\310.01\\\\-13.38972\\\\176.9199\\\\310.01\\\\-12.40512\\\\175.4199\\\\310.01\\\\-10.86421\\\\174.216\\\\310.01\\\\-9.864211\\\\173.802\\\\310.01\\\\-8.864211\\\\173.8091\\\\310.01\\\\-7.864212\\\\174.2572\\\\310.01\\\\-6.864212\\\\175.0914\\\\310.01\\\\-6.193576\\\\175.9199\\\\310.01\\\\-5.746355\\\\176.9199\\\\310.01\\\\-5.739212\\\\177.9199\\\\310.01\\\\-6.144981\\\\178.9199\\\\310.01\\\\-7.364212\\\\180.5032\\\\310.01\\\\-8.680878\\\\181.4199\\\\310.01\\\\-8.937325\\\\181.9199\\\\310.01\\\\-8.250575\\\\184.4199\\\\310.01\\\\-8.025116\\\\186.4199\\\\310.01\\\\-8.145048\\\\187.9199\\\\310.01\\\\-8.676711\\\\189.9199\\\\310.01\\\\-9.252931\\\\191.4199\\\\310.01\\\\-9.970693\\\\192.9199\\\\310.01\\\\-10.97549\\\\195.4199\\\\310.01\\\\-11.45025\\\\196.9199\\\\310.01\\\\-12.04224\\\\199.4199\\\\310.01\\\\-12.39888\\\\202.4199\\\\310.01\\\\-12.48248\\\\203.9199\\\\310.01\\\\-12.05772\\\\207.9199\\\\310.01\\\\-11.48475\\\\210.4199\\\\310.01\\\\-10.42456\\\\213.4199\\\\310.01\\\\-9.508066\\\\215.4199\\\\310.01\\\\-8.042242\\\\217.9199\\\\310.01\\\\-6.999926\\\\219.4199\\\\310.01\\\\-4.870026\\\\221.9199\\\\310.01\\\\-2.752931\\\\223.9199\\\\310.01\\\\-1.364211\\\\225.0492\\\\310.01\\\\0.1357885\\\\226.0912\\\\310.01\\\\2.635788\\\\227.5514\\\\310.01\\\\6.135788\\\\229.0449\\\\310.01\\\\7.635788\\\\229.5112\\\\310.01\\\\10.13579\\\\230.0896\\\\310.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851113729100001.470312254320\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"272\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"19\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"45.13579\\\\174.0365\\\\313.01\\\\49.63579\\\\175.8393\\\\313.01\\\\53.13579\\\\177.5358\\\\313.01\\\\56.13579\\\\178.6134\\\\313.01\\\\57.63579\\\\179.0189\\\\313.01\\\\60.63579\\\\179.5311\\\\313.01\\\\62.13579\\\\179.634\\\\313.01\\\\64.13579\\\\179.6288\\\\313.01\\\\65.63579\\\\179.4949\\\\313.01\\\\68.13579\\\\179.0826\\\\313.01\\\\70.13579\\\\178.5597\\\\313.01\\\\71.63579\\\\178.0576\\\\313.01\\\\74.13579\\\\176.992\\\\313.01\\\\76.63579\\\\175.6117\\\\313.01\\\\77.63579\\\\174.9709\\\\313.01\\\\79.63579\\\\173.4802\\\\313.01\\\\81.13579\\\\172.141\\\\313.01\\\\83.24468\\\\169.9199\\\\313.01\\\\84.78358\\\\167.9199\\\\313.01\\\\86.33118\\\\165.4199\\\\313.01\\\\87.33508\\\\163.4199\\\\313.01\\\\88.32481\\\\160.9199\\\\313.01\\\\88.79119\\\\159.4199\\\\313.01\\\\89.33366\\\\156.9199\\\\313.01\\\\89.63774\\\\153.9199\\\\313.01\\\\89.66704\\\\152.4199\\\\313.01\\\\89.30026\\\\148.9199\\\\313.01\\\\88.71638\\\\146.4199\\\\313.01\\\\88.25405\\\\144.9199\\\\313.01\\\\87.24943\\\\142.4199\\\\313.01\\\\86.76299\\\\141.4199\\\\313.01\\\\85.29488\\\\138.9199\\\\313.01\\\\84.24227\\\\137.4199\\\\313.01\\\\83.13579\\\\136.0748\\\\313.01\\\\81.58791\\\\134.4199\\\\313.01\\\\79.95832\\\\132.9199\\\\313.01\\\\78.63579\\\\131.8477\\\\313.01\\\\77.13579\\\\130.7949\\\\313.01\\\\75.63579\\\\129.9028\\\\313.01\\\\73.63579\\\\128.8657\\\\313.01\\\\71.13579\\\\127.8535\\\\313.01\\\\69.13579\\\\127.2418\\\\313.01\\\\66.63579\\\\126.722\\\\313.01\\\\63.63579\\\\126.4741\\\\313.01\\\\62.63579\\\\126.4677\\\\313.01\\\\59.13579\\\\126.7663\\\\313.01\\\\56.63579\\\\127.3183\\\\313.01\\\\55.13579\\\\127.7721\\\\313.01\\\\52.63579\\\\128.7645\\\\313.01\\\\50.63579\\\\129.776\\\\313.01\\\\48.13579\\\\131.2884\\\\313.01\\\\45.13579\\\\133.2862\\\\313.01\\\\43.81487\\\\134.4199\\\\313.01\\\\42.44948\\\\135.9199\\\\313.01\\\\40.76783\\\\137.9199\\\\313.01\\\\39.63579\\\\138.9596\\\\313.01\\\\38.13579\\\\140.0828\\\\313.01\\\\36.13579\\\\141.1221\\\\313.01\\\\34.63579\\\\141.6103\\\\313.01\\\\33.13579\\\\141.7315\\\\313.01\\\\32.13579\\\\141.6267\\\\313.01\\\\30.63579\\\\141.1365\\\\313.01\\\\28.63579\\\\140.0659\\\\313.01\\\\27.2121\\\\138.9199\\\\313.01\\\\26.13579\\\\137.8833\\\\313.01\\\\24.93796\\\\136.4199\\\\313.01\\\\23.94562\\\\134.4199\\\\313.01\\\\23.68623\\\\132.9199\\\\313.01\\\\23.94523\\\\130.9199\\\\313.01\\\\24.50558\\\\129.4199\\\\313.01\\\\25.96752\\\\126.9199\\\\313.01\\\\27.13579\\\\125.5354\\\\313.01\\\\28.23917\\\\124.4199\\\\313.01\\\\30.50511\\\\122.4199\\\\313.01\\\\32.27399\\\\120.4199\\\\313.01\\\\33.26515\\\\118.9199\\\\313.01\\\\34.76941\\\\116.4199\\\\313.01\\\\35.8293\\\\114.4199\\\\313.01\\\\36.74227\\\\112.4199\\\\313.01\\\\37.74227\\\\109.4199\\\\313.01\\\\38.34469\\\\106.4199\\\\313.01\\\\38.54975\\\\103.4199\\\\313.01\\\\38.35495\\\\99.91986\\\\313.01\\\\37.76941\\\\96.91986\\\\313.01\\\\36.78162\\\\93.91986\\\\313.01\\\\35.36021\\\\90.91986\\\\313.01\\\\33.83302\\\\88.41986\\\\313.01\\\\32.73983\\\\86.91986\\\\313.01\\\\31.13579\\\\85.08799\\\\313.01\\\\29.96766\\\\83.91986\\\\313.01\\\\28.13579\\\\82.3208\\\\313.01\\\\25.13579\\\\80.25896\\\\313.01\\\\22.13579\\\\78.72199\\\\313.01\\\\19.63579\\\\77.75362\\\\313.01\\\\18.13579\\\\77.31338\\\\313.01\\\\15.63579\\\\76.78624\\\\313.01\\\\12.13579\\\\76.54264\\\\313.01\\\\9.135789\\\\76.69946\\\\313.01\\\\6.135788\\\\77.24847\\\\313.01\\\\4.135788\\\\77.83652\\\\313.01\\\\1.635789\\\\78.81096\\\\313.01\\\\0.6357885\\\\79.28624\\\\313.01\\\\-1.864211\\\\80.72861\\\\313.01\\\\-3.364212\\\\81.75896\\\\313.01\\\\-5.864212\\\\83.83652\\\\313.01\\\\-7.433468\\\\85.41986\\\\313.01\\\\-9.477848\\\\87.91986\\\\313.01\\\\-11.07731\\\\90.41986\\\\313.01\\\\-12.56631\\\\93.41986\\\\313.01\\\\-13.49357\\\\95.91986\\\\313.01\\\\-14.02512\\\\97.91986\\\\313.01\\\\-14.45556\\\\100.4199\\\\313.01\\\\-14.60266\\\\102.4199\\\\313.01\\\\-14.50807\\\\105.4199\\\\313.01\\\\-14.00404\\\\108.4199\\\\313.01\\\\-13.45556\\\\110.4199\\\\313.01\\\\-12.93347\\\\111.9199\\\\313.01\\\\-12.06961\\\\113.9199\\\\313.01\\\\-11.03044\\\\115.9199\\\\313.01\\\\-9.447545\\\\118.4199\\\\313.01\\\\-7.028274\\\\121.9199\\\\313.01\\\\-5.864212\\\\123.1258\\\\313.01\\\\-3.364212\\\\124.8657\\\\313.01\\\\-1.605229\\\\126.4199\\\\313.01\\\\-0.2548365\\\\127.9199\\\\313.01\\\\0.7884731\\\\129.4199\\\\313.01\\\\1.803042\\\\131.4199\\\\313.01\\\\2.263741\\\\132.9199\\\\313.01\\\\2.37004\\\\133.9199\\\\313.01\\\\2.269263\\\\134.9199\\\\313.01\\\\1.749628\\\\136.4199\\\\313.01\\\\0.8712052\\\\137.9199\\\\313.01\\\\-0.3263327\\\\139.4199\\\\313.01\\\\-1.364211\\\\140.4421\\\\313.01\\\\-2.864212\\\\141.6427\\\\313.01\\\\-4.364212\\\\142.5469\\\\313.01\\\\-5.864212\\\\143.1195\\\\313.01\\\\-7.364212\\\\143.3308\\\\313.01\\\\-9.364211\\\\143.0816\\\\313.01\\\\-11.86421\\\\142.0038\\\\313.01\\\\-13.86421\\\\140.6465\\\\313.01\\\\-15.36421\\\\139.234\\\\313.01\\\\-16.5498\\\\137.9199\\\\313.01\\\\-17.74925\\\\136.4199\\\\313.01\\\\-18.36421\\\\135.8188\\\\313.01\\\\-19.86421\\\\134.709\\\\313.01\\\\-23.86421\\\\132.3233\\\\313.01\\\\-26.86421\\\\130.8365\\\\313.01\\\\-29.86421\\\\129.7536\\\\313.01\\\\-31.86421\\\\129.2502\\\\313.01\\\\-34.36421\\\\128.8535\\\\313.01\\\\-36.86421\\\\128.6958\\\\313.01\\\\-38.86421\\\\128.7993\\\\313.01\\\\-41.86421\\\\129.278\\\\313.01\\\\-43.86421\\\\129.8016\\\\313.01\\\\-45.36421\\\\130.3039\\\\313.01\\\\-47.86421\\\\131.3785\\\\313.01\\\\-50.36421\\\\132.7435\\\\313.01\\\\-51.86421\\\\133.7382\\\\313.01\\\\-53.36421\\\\134.8785\\\\313.01\\\\-55.58069\\\\136.9199\\\\313.01\\\\-56.96327\\\\138.4199\\\\313.01\\\\-58.502\\\\140.4199\\\\313.01\\\\-60.05171\\\\142.9199\\\\313.01\\\\-61.05772\\\\144.9199\\\\313.01\\\\-62.04862\\\\147.4199\\\\313.01\\\\-62.51394\\\\148.9199\\\\313.01\\\\-63.05919\\\\151.4199\\\\313.01\\\\-63.42757\\\\155.4199\\\\313.01\\\\-63.03729\\\\159.4199\\\\313.01\\\\-62.47549\\\\161.9199\\\\313.01\\\\-61.44202\\\\164.9199\\\\313.01\\\\-60.51775\\\\166.9199\\\\313.01\\\\-59.04568\\\\169.4199\\\\313.01\\\\-57.99572\\\\170.9199\\\\313.01\\\\-56.36421\\\\172.8595\\\\313.01\\\\-55.36421\\\\173.9179\\\\313.01\\\\-53.73056\\\\175.4199\\\\313.01\\\\-52.36421\\\\176.5381\\\\313.01\\\\-50.86421\\\\177.5843\\\\313.01\\\\-48.36421\\\\179.0449\\\\313.01\\\\-47.36421\\\\179.5287\\\\313.01\\\\-44.86421\\\\180.5263\\\\313.01\\\\-42.86421\\\\181.1177\\\\313.01\\\\-40.86421\\\\181.5676\\\\313.01\\\\-37.36421\\\\181.9065\\\\313.01\\\\-36.36421\\\\181.914\\\\313.01\\\\-33.36421\\\\181.6486\\\\313.01\\\\-30.36421\\\\181.0404\\\\313.01\\\\-28.86421\\\\180.5826\\\\313.01\\\\-26.36421\\\\179.5878\\\\313.01\\\\-24.36421\\\\178.5929\\\\313.01\\\\-20.86421\\\\176.7294\\\\313.01\\\\-18.36421\\\\175.6257\\\\313.01\\\\-17.36421\\\\175.0934\\\\313.01\\\\-16.58718\\\\174.4199\\\\313.01\\\\-13.86421\\\\171.7129\\\\313.01\\\\-12.36421\\\\170.7226\\\\313.01\\\\-11.36421\\\\170.2449\\\\313.01\\\\-9.864211\\\\169.8028\\\\313.01\\\\-8.364211\\\\169.7928\\\\313.01\\\\-6.864212\\\\170.2438\\\\313.01\\\\-5.864212\\\\170.7449\\\\313.01\\\\-4.364212\\\\171.9052\\\\313.01\\\\-2.711557\\\\173.9199\\\\313.01\\\\-2.21085\\\\174.9199\\\\313.01\\\\-1.762128\\\\176.4199\\\\313.01\\\\-1.727673\\\\177.9199\\\\313.01\\\\-2.167647\\\\179.4199\\\\313.01\\\\-3.207707\\\\181.4199\\\\313.01\\\\-5.876966\\\\184.4199\\\\313.01\\\\-6.53835\\\\185.4199\\\\313.01\\\\-7.7156\\\\188.4199\\\\313.01\\\\-10.04546\\\\193.4199\\\\313.01\\\\-11.02147\\\\195.9199\\\\313.01\\\\-11.47069\\\\197.4199\\\\313.01\\\\-12.012\\\\199.9199\\\\313.01\\\\-12.28921\\\\203.9199\\\\313.01\\\\-12.08461\\\\206.9199\\\\313.01\\\\-11.49571\\\\209.9199\\\\313.01\\\\-10.51005\\\\212.9199\\\\313.01\\\\-9.600636\\\\214.9199\\\\313.01\\\\-8.53218\\\\216.9199\\\\313.01\\\\-6.468249\\\\219.9199\\\\313.01\\\\-4.864212\\\\221.7517\\\\313.01\\\\-3.695094\\\\222.9199\\\\313.01\\\\-1.864211\\\\224.5189\\\\313.01\\\\1.135789\\\\226.5789\\\\313.01\\\\4.135788\\\\228.1177\\\\313.01\\\\6.635788\\\\229.0843\\\\313.01\\\\8.135789\\\\229.5239\\\\313.01\\\\10.63579\\\\230.0514\\\\313.01\\\\14.13579\\\\230.2971\\\\313.01\\\\17.13579\\\\230.1403\\\\313.01\\\\20.13579\\\\229.5878\\\\313.01\\\\22.13579\\\\229.0004\\\\313.01\\\\24.63579\\\\228.0287\\\\313.01\\\\25.63579\\\\227.5514\\\\313.01\\\\28.13579\\\\226.1111\\\\313.01\\\\29.63579\\\\225.0808\\\\313.01\\\\32.13579\\\\223.0032\\\\313.01\\\\33.70211\\\\221.4199\\\\313.01\\\\35.74942\\\\218.9199\\\\313.01\\\\37.34888\\\\216.4199\\\\313.01\\\\38.83649\\\\213.4199\\\\313.01\\\\39.76298\\\\210.9199\\\\313.01\\\\40.29488\\\\208.9199\\\\313.01\\\\40.7245\\\\206.4199\\\\313.01\\\\40.87313\\\\204.4199\\\\313.01\\\\40.84863\\\\202.4199\\\\313.01\\\\40.70794\\\\200.9199\\\\313.01\\\\40.27562\\\\198.4199\\\\313.01\\\\39.72713\\\\196.4199\\\\313.01\\\\39.20504\\\\194.9199\\\\313.01\\\\38.34256\\\\192.9199\\\\313.01\\\\36.03673\\\\188.4199\\\\313.01\\\\35.18366\\\\186.4199\\\\313.01\\\\34.37849\\\\184.9199\\\\313.01\\\\31.46317\\\\181.4199\\\\313.01\\\\30.60703\\\\179.9199\\\\313.01\\\\29.99819\\\\178.4199\\\\313.01\\\\29.80047\\\\176.9199\\\\313.01\\\\29.96704\\\\175.4199\\\\313.01\\\\30.57026\\\\173.9199\\\\313.01\\\\31.56785\\\\172.4199\\\\313.01\\\\32.63579\\\\171.3258\\\\313.01\\\\34.13579\\\\170.2914\\\\313.01\\\\35.63579\\\\169.7194\\\\313.01\\\\36.63579\\\\169.5831\\\\313.01\\\\38.63579\\\\169.7668\\\\313.01\\\\40.13579\\\\170.3782\\\\313.01\\\\41.63579\\\\171.2379\\\\313.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851133730200001.543478973601\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"277\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"20\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"25.13579\\\\125.7391\\\\316.01\\\\29.49653\\\\121.9199\\\\316.01\\\\31.13579\\\\120.2483\\\\316.01\\\\32.28399\\\\118.9199\\\\316.01\\\\33.71638\\\\116.9199\\\\316.01\\\\35.1454\\\\114.4199\\\\316.01\\\\36.28551\\\\111.9199\\\\316.01\\\\37.23983\\\\108.9199\\\\316.01\\\\37.85425\\\\105.4199\\\\316.01\\\\37.94677\\\\102.9199\\\\316.01\\\\37.75405\\\\99.91986\\\\316.01\\\\37.26729\\\\97.41986\\\\316.01\\\\36.3198\\\\94.41986\\\\316.01\\\\35.22183\\\\91.91986\\\\316.01\\\\33.79257\\\\89.41986\\\\316.01\\\\32.75317\\\\87.91986\\\\316.01\\\\31.13579\\\\85.97396\\\\316.01\\\\30.13579\\\\84.91024\\\\316.01\\\\28.50211\\\\83.41986\\\\316.01\\\\27.13579\\\\82.31029\\\\316.01\\\\25.63579\\\\81.27071\\\\316.01\\\\23.13579\\\\79.8506\\\\316.01\\\\20.63579\\\\78.75362\\\\316.01\\\\17.63579\\\\77.8183\\\\316.01\\\\15.13579\\\\77.34204\\\\316.01\\\\12.13579\\\\77.14066\\\\316.01\\\\9.135789\\\\77.29932\\\\316.01\\\\6.635788\\\\77.75716\\\\316.01\\\\4.635788\\\\78.30858\\\\316.01\\\\2.135788\\\\79.25539\\\\316.01\\\\0.1357885\\\\80.2317\\\\316.01\\\\-2.364212\\\\81.76813\\\\316.01\\\\-4.364212\\\\83.29879\\\\316.01\\\\-6.115665\\\\84.91986\\\\316.01\\\\-7.947545\\\\86.91986\\\\316.01\\\\-9.447545\\\\88.91986\\\\316.01\\\\-10.96327\\\\91.41986\\\\316.01\\\\-11.91527\\\\93.41986\\\\316.01\\\\-13.00807\\\\96.41986\\\\316.01\\\\-13.50807\\\\98.41986\\\\316.01\\\\-13.93921\\\\101.4199\\\\316.01\\\\-14.03218\\\\102.9199\\\\316.01\\\\-13.97549\\\\104.4199\\\\316.01\\\\-13.48699\\\\107.9199\\\\316.01\\\\-12.97549\\\\109.9199\\\\316.01\\\\-12.48018\\\\111.4199\\\\316.01\\\\-11.40558\\\\113.9199\\\\316.01\\\\-10.02949\\\\116.4199\\\\316.01\\\\-9.019734\\\\117.9199\\\\316.01\\\\-7.430538\\\\119.9199\\\\316.01\\\\-5.864212\\\\121.586\\\\316.01\\\\-4.864212\\\\122.5021\\\\316.01\\\\-2.864212\\\\124.1116\\\\316.01\\\\-1.364211\\\\125.2054\\\\316.01\\\\1.135789\\\\127.2049\\\\316.01\\\\2.936209\\\\128.9199\\\\316.01\\\\4.82263\\\\130.9199\\\\316.01\\\\6.264465\\\\132.9199\\\\316.01\\\\6.784093\\\\133.9199\\\\316.01\\\\7.031243\\\\134.9199\\\\316.01\\\\6.765253\\\\135.9199\\\\316.01\\\\5.798487\\\\137.4199\\\\316.01\\\\4.889261\\\\138.4199\\\\316.01\\\\2.635788\\\\140.5555\\\\316.01\\\\1.135789\\\\141.7674\\\\316.01\\\\-1.364211\\\\144.0751\\\\316.01\\\\-3.364212\\\\145.6282\\\\316.01\\\\-5.364212\\\\146.6321\\\\316.01\\\\-6.364212\\\\146.802\\\\316.01\\\\-7.864212\\\\146.5771\\\\316.01\\\\-9.864211\\\\145.615\\\\316.01\\\\-11.36421\\\\144.6044\\\\316.01\\\\-13.36421\\\\142.8379\\\\316.01\\\\-15.36421\\\\140.7688\\\\316.01\\\\-17.86421\\\\137.9523\\\\316.01\\\\-18.86421\\\\136.9179\\\\316.01\\\\-21.36421\\\\134.7479\\\\316.01\\\\-24.36421\\\\132.7573\\\\316.01\\\\-26.36421\\\\131.7247\\\\316.01\\\\-28.86421\\\\130.7191\\\\316.01\\\\-30.36421\\\\130.2485\\\\316.01\\\\-32.36421\\\\129.7721\\\\316.01\\\\-35.86421\\\\129.3365\\\\316.01\\\\-37.86421\\\\129.3449\\\\316.01\\\\-41.36421\\\\129.7971\\\\316.01\\\\-43.36421\\\\130.2884\\\\316.01\\\\-46.36421\\\\131.3565\\\\316.01\\\\-48.36421\\\\132.2884\\\\316.01\\\\-50.86421\\\\133.767\\\\316.01\\\\-52.86421\\\\135.2392\\\\316.01\\\\-54.72205\\\\136.9199\\\\316.01\\\\-57.00942\\\\139.4199\\\\316.01\\\\-58.45816\\\\141.4199\\\\316.01\\\\-59.07794\\\\142.4199\\\\316.01\\\\-60.38489\\\\144.9199\\\\316.01\\\\-61.03985\\\\146.4199\\\\316.01\\\\-62.01394\\\\149.4199\\\\316.01\\\\-62.58369\\\\152.4199\\\\316.01\\\\-62.75058\\\\155.4199\\\\316.01\\\\-62.49993\\\\158.9199\\\\316.01\\\\-61.97785\\\\161.4199\\\\316.01\\\\-61.53218\\\\162.9199\\\\316.01\\\\-60.56345\\\\165.4199\\\\316.01\\\\-59.56343\\\\167.4199\\\\316.01\\\\-57.98846\\\\169.9199\\\\316.01\\\\-56.41841\\\\171.9199\\\\316.01\\\\-54.86421\\\\173.5871\\\\316.01\\\\-53.36421\\\\174.9645\\\\316.01\\\\-51.36421\\\\176.5263\\\\316.01\\\\-48.86421\\\\178.0915\\\\316.01\\\\-46.86421\\\\179.087\\\\316.01\\\\-44.36421\\\\180.0535\\\\316.01\\\\-42.36421\\\\180.6162\\\\316.01\\\\-39.36421\\\\181.1487\\\\316.01\\\\-36.86421\\\\181.28\\\\316.01\\\\-33.36421\\\\181.0535\\\\316.01\\\\-30.86421\\\\180.5426\\\\316.01\\\\-29.36421\\\\180.1004\\\\316.01\\\\-26.86421\\\\179.1441\\\\316.01\\\\-24.86421\\\\178.1536\\\\316.01\\\\-22.36421\\\\176.6336\\\\316.01\\\\-20.86421\\\\175.584\\\\316.01\\\\-18.86421\\\\173.9379\\\\316.01\\\\-15.36421\\\\170.4052\\\\316.01\\\\-13.36421\\\\168.7274\\\\316.01\\\\-11.86421\\\\167.7328\\\\316.01\\\\-9.864211\\\\166.7353\\\\316.01\\\\-8.364211\\\\166.2789\\\\316.01\\\\-7.364212\\\\166.2522\\\\316.01\\\\-5.864212\\\\166.7301\\\\316.01\\\\-4.864212\\\\167.2843\\\\316.01\\\\-3.864212\\\\168.1102\\\\316.01\\\\-2.364212\\\\169.5607\\\\316.01\\\\-0.7082709\\\\171.4199\\\\316.01\\\\0.3049062\\\\172.9199\\\\316.01\\\\0.8081186\\\\173.9199\\\\316.01\\\\1.284373\\\\175.4199\\\\316.01\\\\1.291771\\\\176.9199\\\\316.01\\\\0.8586567\\\\178.4199\\\\316.01\\\\0.1957059\\\\179.9199\\\\316.01\\\\-0.6775677\\\\181.4199\\\\316.01\\\\-2.661191\\\\183.9199\\\\316.01\\\\-5.007315\\\\186.4199\\\\316.01\\\\-6.500715\\\\188.4199\\\\316.01\\\\-8.073847\\\\190.9199\\\\316.01\\\\-8.87757\\\\192.4199\\\\316.01\\\\-10.01585\\\\194.9199\\\\316.01\\\\-10.96825\\\\197.9199\\\\316.01\\\\-11.58267\\\\201.4199\\\\316.01\\\\-11.67519\\\\203.9199\\\\316.01\\\\-11.48248\\\\206.9199\\\\316.01\\\\-10.99571\\\\209.4199\\\\316.01\\\\-10.04661\\\\212.4199\\\\316.01\\\\-8.950251\\\\214.9199\\\\316.01\\\\-7.520991\\\\217.4199\\\\316.01\\\\-6.481589\\\\218.9199\\\\316.01\\\\-4.364212\\\\221.414\\\\316.01\\\\-3.354596\\\\222.4199\\\\316.01\\\\-0.8642115\\\\224.5294\\\\316.01\\\\0.6357885\\\\225.569\\\\316.01\\\\3.135788\\\\226.9891\\\\316.01\\\\5.635788\\\\228.0878\\\\316.01\\\\8.635789\\\\229.0214\\\\316.01\\\\11.13579\\\\229.4977\\\\316.01\\\\14.13579\\\\229.6991\\\\316.01\\\\17.13579\\\\229.5404\\\\316.01\\\\19.63579\\\\229.0808\\\\316.01\\\\21.63579\\\\228.5287\\\\316.01\\\\24.13579\\\\227.5826\\\\316.01\\\\26.13579\\\\226.6064\\\\316.01\\\\28.63579\\\\225.0716\\\\316.01\\\\30.63579\\\\223.5409\\\\316.01\\\\32.38724\\\\221.9199\\\\316.01\\\\34.21912\\\\219.9199\\\\316.01\\\\35.71912\\\\217.9199\\\\316.01\\\\37.23231\\\\215.4199\\\\316.01\\\\37.74227\\\\214.4199\\\\316.01\\\\38.78743\\\\211.9199\\\\316.01\\\\39.27964\\\\210.4199\\\\316.01\\\\39.77964\\\\208.4199\\\\316.01\\\\40.21079\\\\205.4199\\\\316.01\\\\40.30376\\\\203.9199\\\\316.01\\\\40.24707\\\\202.4199\\\\316.01\\\\39.75857\\\\198.9199\\\\316.01\\\\39.24707\\\\196.9199\\\\316.01\\\\38.75175\\\\195.4199\\\\316.01\\\\37.67715\\\\192.9199\\\\316.01\\\\36.30844\\\\190.4199\\\\316.01\\\\35.32992\\\\188.9199\\\\316.01\\\\33.83548\\\\186.9199\\\\316.01\\\\30.59809\\\\183.4199\\\\316.01\\\\28.97444\\\\181.4199\\\\316.01\\\\27.49209\\\\178.9199\\\\316.01\\\\26.92882\\\\177.4199\\\\316.01\\\\26.67292\\\\175.9199\\\\316.01\\\\27.0272\\\\173.9199\\\\316.01\\\\27.47647\\\\172.9199\\\\316.01\\\\28.42746\\\\171.4199\\\\316.01\\\\30.0573\\\\169.4199\\\\316.01\\\\31.13579\\\\168.3365\\\\316.01\\\\32.63579\\\\167.1923\\\\316.01\\\\34.63579\\\\166.3017\\\\316.01\\\\36.13579\\\\166.2524\\\\316.01\\\\38.13579\\\\166.8033\\\\316.01\\\\40.13579\\\\167.7816\\\\316.01\\\\41.63579\\\\168.748\\\\316.01\\\\43.63579\\\\170.3422\\\\316.01\\\\46.63579\\\\172.9895\\\\316.01\\\\48.13579\\\\174.0761\\\\316.01\\\\50.63579\\\\175.6084\\\\316.01\\\\52.63579\\\\176.6375\\\\316.01\\\\55.13579\\\\177.647\\\\316.01\\\\56.63579\\\\178.1235\\\\316.01\\\\58.63579\\\\178.6027\\\\316.01\\\\61.13579\\\\178.9332\\\\316.01\\\\63.13579\\\\179.0715\\\\316.01\\\\64.63579\\\\178.9771\\\\316.01\\\\67.63579\\\\178.5617\\\\316.01\\\\69.63579\\\\178.0715\\\\316.01\\\\72.63579\\\\177.0086\\\\316.01\\\\74.63579\\\\176.0676\\\\316.01\\\\77.13579\\\\174.5898\\\\316.01\\\\78.63579\\\\173.5138\\\\316.01\\\\81.01079\\\\171.4199\\\\316.01\\\\82.63579\\\\169.6953\\\\316.01\\\\83.67384\\\\168.4199\\\\316.01\\\\85.35615\\\\165.9199\\\\316.01\\\\86.67046\\\\163.4199\\\\316.01\\\\87.31818\\\\161.9199\\\\316.01\\\\88.28932\\\\158.9199\\\\316.01\\\\88.85658\\\\155.9199\\\\316.01\\\\89.01982\\\\152.9199\\\\316.01\\\\88.76299\\\\149.4199\\\\316.01\\\\88.34512\\\\147.4199\\\\316.01\\\\87.78162\\\\145.4199\\\\316.01\\\\87.23485\\\\143.9199\\\\316.01\\\\85.80917\\\\140.9199\\\\316.01\\\\84.23231\\\\138.4199\\\\316.01\\\\82.65283\\\\136.4199\\\\316.01\\\\81.26814\\\\134.9199\\\\316.01\\\\79.62587\\\\133.4199\\\\316.01\\\\78.13579\\\\132.2224\\\\316.01\\\\75.13579\\\\130.2905\\\\316.01\\\\73.13579\\\\129.2905\\\\316.01\\\\70.63579\\\\128.3183\\\\316.01\\\\68.63579\\\\127.7468\\\\316.01\\\\65.63579\\\\127.2051\\\\316.01\\\\63.13579\\\\127.0843\\\\316.01\\\\59.63579\\\\127.3134\\\\316.01\\\\57.13579\\\\127.8183\\\\316.01\\\\55.63579\\\\128.2519\\\\316.01\\\\53.13579\\\\129.2097\\\\316.01\\\\51.13579\\\\130.2003\\\\316.01\\\\48.63579\\\\131.7489\\\\316.01\\\\47.13579\\\\132.8785\\\\316.01\\\\45.13579\\\\134.6568\\\\316.01\\\\43.91469\\\\135.9199\\\\316.01\\\\42.24456\\\\137.9199\\\\316.01\\\\40.13579\\\\140.2911\\\\316.01\\\\39.13579\\\\141.291\\\\316.01\\\\37.13579\\\\143.0427\\\\316.01\\\\35.63579\\\\144.0175\\\\316.01\\\\34.63579\\\\144.5213\\\\316.01\\\\33.13579\\\\144.9878\\\\316.01\\\\32.13579\\\\145.0095\\\\316.01\\\\30.63579\\\\144.5631\\\\316.01\\\\29.63579\\\\144.0704\\\\316.01\\\\28.13579\\\\143.0939\\\\316.01\\\\25.13579\\\\140.7603\\\\316.01\\\\24.13579\\\\140.097\\\\316.01\\\\22.13579\\\\138.5449\\\\316.01\\\\20.45722\\\\136.9199\\\\316.01\\\\19.40894\\\\135.4199\\\\316.01\\\\19.02304\\\\134.4199\\\\316.01\\\\19.41152\\\\132.9199\\\\316.01\\\\20.52696\\\\130.9199\\\\316.01\\\\22.4984\\\\128.4199\\\\316.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851156731500001.532752123275\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"62\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"21\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-12.89888\\\\102.9199\\\\319.01\\\\-12.55271\\\\106.9199\\\\319.01\\\\-11.97069\\\\109.4199\\\\319.01\\\\-11.4907\\\\110.9199\\\\319.01\\\\-10.43921\\\\113.4199\\\\319.01\\\\-9.063915\\\\115.9199\\\\319.01\\\\-8.047024\\\\117.4199\\\\319.01\\\\-6.419136\\\\119.4199\\\\319.01\\\\-4.864212\\\\121.0275\\\\319.01\\\\-2.364212\\\\123.1128\\\\319.01\\\\-0.8642115\\\\124.1393\\\\319.01\\\\1.635789\\\\125.6274\\\\319.01\\\\6.135788\\\\128.0177\\\\319.01\\\\8.635789\\\\129.0637\\\\319.01\\\\10.63579\\\\129.5962\\\\319.01\\\\12.63579\\\\129.8757\\\\319.01\\\\14.63579\\\\129.5984\\\\319.01\\\\16.13579\\\\129.1345\\\\319.01\\\\18.63579\\\\127.9669\\\\319.01\\\\21.13579\\\\126.5592\\\\319.01\\\\25.13579\\\\123.9956\\\\319.01\\\\27.13579\\\\122.544\\\\319.01\\\\28.96026\\\\120.9199\\\\319.01\\\\30.87045\\\\118.9199\\\\319.01\\\\32.74672\\\\116.4199\\\\319.01\\\\34.18366\\\\113.9199\\\\319.01\\\\35.30482\\\\111.4199\\\\319.01\\\\35.81496\\\\109.9199\\\\319.01\\\\36.33659\\\\107.9199\\\\319.01\\\\36.74227\\\\105.4199\\\\319.01\\\\36.87132\\\\102.9199\\\\319.01\\\\36.75857\\\\100.9199\\\\319.01\\\\36.24469\\\\97.91986\\\\319.01\\\\35.34095\\\\94.91986\\\\319.01\\\\34.72183\\\\93.41986\\\\319.01\\\\33.72296\\\\91.41986\\\\319.01\\\\32.8289\\\\89.91986\\\\319.01\\\\31.77888\\\\88.41986\\\\319.01\\\\30.13579\\\\86.49043\\\\319.01\\\\29.10066\\\\85.41986\\\\319.01\\\\26.63579\\\\83.28575\\\\319.01\\\\25.13579\\\\82.23956\\\\319.01\\\\22.63579\\\\80.81954\\\\319.01\\\\20.13579\\\\79.73236\\\\319.01\\\\18.63579\\\\79.23167\\\\319.01\\\\16.63579\\\\78.72334\\\\319.01\\\\14.13579\\\\78.33926\\\\319.01\\\\12.13579\\\\78.20802\\\\319.01\\\\10.13579\\\\78.30858\\\\319.01\\\\7.135788\\\\78.77843\\\\319.01\\\\5.135788\\\\79.30858\\\\319.01\\\\2.635788\\\\80.22572\\\\319.01\\\\0.6357885\\\\81.20093\\\\319.01\\\\-1.864211\\\\82.73734\\\\319.01\\\\-3.864212\\\\84.28801\\\\319.01\\\\-5.595103\\\\85.91986\\\\319.01\\\\-6.961729\\\\87.41986\\\\319.01\\\\-8.481761\\\\89.41986\\\\319.01\\\\-9.996199\\\\91.91986\\\\319.01\\\\-10.94203\\\\93.91986\\\\319.01\\\\-12.00149\\\\96.91986\\\\319.01\\\\-12.56767\\\\99.41986\\\\319.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851179732800001.515857303411\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"61\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"22\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-7.780878\\\\157.9199\\\\319.01\\\\-7.557069\\\\155.9199\\\\319.01\\\\-7.641239\\\\155.4199\\\\319.01\\\\-8.680249\\\\152.9199\\\\319.01\\\\-10.14019\\\\150.4199\\\\319.01\\\\-11.96758\\\\147.9199\\\\319.01\\\\-14.06594\\\\144.9199\\\\319.01\\\\-15.72495\\\\142.4199\\\\319.01\\\\-17.18427\\\\140.4199\\\\319.01\\\\-19.36421\\\\137.9739\\\\319.01\\\\-21.86421\\\\135.7308\\\\319.01\\\\-24.86421\\\\133.7219\\\\319.01\\\\-26.86421\\\\132.7002\\\\319.01\\\\-29.36421\\\\131.7077\\\\319.01\\\\-30.86421\\\\131.2518\\\\319.01\\\\-33.36421\\\\130.7201\\\\319.01\\\\-36.86421\\\\130.4545\\\\319.01\\\\-40.36421\\\\130.7374\\\\319.01\\\\-42.86421\\\\131.2971\\\\319.01\\\\-44.36421\\\\131.7584\\\\319.01\\\\-46.86421\\\\132.7666\\\\319.01\\\\-48.86421\\\\133.8061\\\\319.01\\\\-50.36421\\\\134.7354\\\\319.01\\\\-52.36421\\\\136.2252\\\\319.01\\\\-54.36421\\\\138.0987\\\\319.01\\\\-55.60049\\\\139.4199\\\\319.01\\\\-57.48921\\\\141.9199\\\\319.01\\\\-58.94202\\\\144.4199\\\\319.01\\\\-60.06339\\\\146.9199\\\\319.01\\\\-60.99572\\\\149.9199\\\\319.01\\\\-61.47311\\\\152.4199\\\\319.01\\\\-61.65237\\\\155.4199\\\\319.01\\\\-61.57079\\\\157.4199\\\\319.01\\\\-61.0741\\\\160.4199\\\\319.01\\\\-60.5406\\\\162.4199\\\\319.01\\\\-59.58504\\\\164.9199\\\\319.01\\\\-58.59007\\\\166.9199\\\\319.01\\\\-57.01646\\\\169.4199\\\\319.01\\\\-55.41872\\\\171.4199\\\\319.01\\\\-53.86421\\\\173.0574\\\\319.01\\\\-52.86421\\\\173.9672\\\\319.01\\\\-50.86421\\\\175.5555\\\\319.01\\\\-48.36421\\\\177.127\\\\319.01\\\\-46.36421\\\\178.1151\\\\319.01\\\\-43.86421\\\\179.0579\\\\319.01\\\\-41.86421\\\\179.606\\\\319.01\\\\-38.86421\\\\180.1074\\\\319.01\\\\-36.86421\\\\180.191\\\\319.01\\\\-34.86421\\\\180.1185\\\\319.01\\\\-31.36421\\\\179.5214\\\\319.01\\\\-28.36421\\\\178.5899\\\\319.01\\\\-25.86421\\\\177.4476\\\\319.01\\\\-24.36421\\\\176.6231\\\\319.01\\\\-22.86421\\\\175.6373\\\\319.01\\\\-21.36421\\\\174.4941\\\\319.01\\\\-19.86421\\\\173.1573\\\\319.01\\\\-17.74542\\\\170.9199\\\\319.01\\\\-15.68287\\\\168.4199\\\\319.01\\\\-14.53537\\\\166.9199\\\\319.01\\\\-11.19653\\\\162.9199\\\\319.01\\\\-9.668378\\\\160.9199\\\\319.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851194733700001.468081152243\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"156\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"23\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"33.13579\\\\158.2413\\\\319.01\\\\35.63579\\\\160.3188\\\\319.01\\\\37.63579\\\\162.1973\\\\319.01\\\\41.63579\\\\166.1942\\\\319.01\\\\45.15037\\\\169.9199\\\\319.01\\\\46.17537\\\\170.9199\\\\319.01\\\\48.13579\\\\172.6269\\\\319.01\\\\50.13579\\\\174.0326\\\\319.01\\\\53.13579\\\\175.6531\\\\319.01\\\\55.13579\\\\176.4862\\\\319.01\\\\57.13579\\\\177.1228\\\\319.01\\\\59.13579\\\\177.5749\\\\319.01\\\\63.13579\\\\177.9218\\\\319.01\\\\66.63579\\\\177.6196\\\\319.01\\\\69.13579\\\\177.067\\\\319.01\\\\72.13579\\\\176.0294\\\\319.01\\\\74.13579\\\\175.1044\\\\319.01\\\\76.63579\\\\173.6219\\\\319.01\\\\78.13579\\\\172.5346\\\\319.01\\\\79.96026\\\\170.9199\\\\319.01\\\\82.30837\\\\168.4199\\\\319.01\\\\83.772\\\\166.4199\\\\319.01\\\\84.67715\\\\164.9199\\\\319.01\\\\85.70212\\\\162.9199\\\\319.01\\\\86.34207\\\\161.4199\\\\319.01\\\\87.27515\\\\158.4199\\\\319.01\\\\87.74707\\\\155.9199\\\\319.01\\\\87.92132\\\\152.9199\\\\319.01\\\\87.83974\\\\150.9199\\\\319.01\\\\87.33659\\\\147.9199\\\\319.01\\\\86.78665\\\\145.9199\\\\319.01\\\\85.83718\\\\143.4199\\\\319.01\\\\84.84293\\\\141.4199\\\\319.01\\\\83.26244\\\\138.9199\\\\319.01\\\\81.65337\\\\136.9199\\\\319.01\\\\80.13579\\\\135.3188\\\\319.01\\\\77.63579\\\\133.1981\\\\319.01\\\\74.63579\\\\131.2557\\\\319.01\\\\72.63579\\\\130.2625\\\\319.01\\\\70.13579\\\\129.3158\\\\319.01\\\\68.13579\\\\128.7592\\\\319.01\\\\65.63579\\\\128.3183\\\\319.01\\\\63.13579\\\\128.1659\\\\319.01\\\\60.63579\\\\128.3016\\\\319.01\\\\58.13579\\\\128.7191\\\\319.01\\\\56.13579\\\\129.2453\\\\319.01\\\\53.63579\\\\130.192\\\\319.01\\\\50.63579\\\\131.7338\\\\319.01\\\\49.13579\\\\132.7196\\\\319.01\\\\47.13579\\\\134.2836\\\\319.01\\\\45.41303\\\\135.9199\\\\319.01\\\\44.05789\\\\137.4199\\\\319.01\\\\42.53205\\\\139.4199\\\\319.01\\\\40.22859\\\\142.9199\\\\319.01\\\\37.76569\\\\146.4199\\\\319.01\\\\34.63579\\\\150.5317\\\\319.01\\\\33.63579\\\\151.6949\\\\319.01\\\\32.63579\\\\152.5969\\\\319.01\\\\32.13579\\\\152.8053\\\\319.01\\\\31.63579\\\\152.5761\\\\319.01\\\\30.63579\\\\151.7115\\\\319.01\\\\29.63579\\\\150.6442\\\\319.01\\\\27.79562\\\\148.4199\\\\319.01\\\\25.45295\\\\145.9199\\\\319.01\\\\24.13579\\\\144.7099\\\\319.01\\\\22.13579\\\\143.3042\\\\319.01\\\\20.13579\\\\142.2827\\\\319.01\\\\17.13579\\\\141.2436\\\\319.01\\\\14.13579\\\\140.6942\\\\319.01\\\\12.13579\\\\140.8091\\\\319.01\\\\10.13579\\\\141.2746\\\\319.01\\\\8.635789\\\\141.7564\\\\319.01\\\\6.635788\\\\142.6667\\\\319.01\\\\4.635788\\\\143.8113\\\\319.01\\\\2.690873\\\\145.4199\\\\319.01\\\\1.635789\\\\146.4907\\\\319.01\\\\0.0003718426\\\\148.4199\\\\319.01\\\\-1.019515\\\\149.9199\\\\319.01\\\\-2.529212\\\\152.4199\\\\319.01\\\\-3.476054\\\\154.4199\\\\319.01\\\\-4.022545\\\\155.9199\\\\319.01\\\\-3.918899\\\\158.4199\\\\319.01\\\\-3.595462\\\\159.4199\\\\319.01\\\\-1.940824\\\\162.9199\\\\319.01\\\\-0.5122378\\\\165.4199\\\\319.01\\\\0.4943411\\\\166.9199\\\\319.01\\\\2.635788\\\\169.3352\\\\319.01\\\\5.151413\\\\171.9199\\\\319.01\\\\6.24749\\\\173.4199\\\\319.01\\\\6.578497\\\\174.4199\\\\319.01\\\\6.298288\\\\175.9199\\\\319.01\\\\5.779171\\\\176.9199\\\\319.01\\\\4.722327\\\\178.4199\\\\319.01\\\\3.883184\\\\179.4199\\\\319.01\\\\1.506402\\\\181.9199\\\\319.01\\\\-2.864212\\\\186.0801\\\\319.01\\\\-5.025976\\\\188.4199\\\\319.01\\\\-6.477698\\\\190.4199\\\\319.01\\\\-7.915268\\\\192.9199\\\\319.01\\\\-9.033246\\\\195.4199\\\\319.01\\\\-9.545151\\\\196.9199\\\\319.01\\\\-10.06501\\\\198.9199\\\\319.01\\\\-10.47069\\\\201.4199\\\\319.01\\\\-10.59974\\\\203.9199\\\\319.01\\\\-10.48699\\\\205.9199\\\\319.01\\\\-9.975492\\\\208.9199\\\\319.01\\\\-9.069374\\\\211.9199\\\\319.01\\\\-8.450251\\\\213.4199\\\\319.01\\\\-7.448093\\\\215.4199\\\\319.01\\\\-6.554331\\\\216.9199\\\\319.01\\\\-5.50494\\\\218.4199\\\\319.01\\\\-3.364212\\\\220.8809\\\\319.01\\\\-2.289615\\\\221.9199\\\\319.01\\\\-0.3642115\\\\223.5549\\\\319.01\\\\1.135789\\\\224.6032\\\\319.01\\\\2.635788\\\\225.492\\\\319.01\\\\4.635788\\\\226.4862\\\\319.01\\\\7.635788\\\\227.608\\\\319.01\\\\9.635789\\\\228.1153\\\\319.01\\\\12.13579\\\\228.5004\\\\319.01\\\\14.13579\\\\228.6302\\\\319.01\\\\16.13579\\\\228.5311\\\\319.01\\\\19.13579\\\\228.0613\\\\319.01\\\\21.13579\\\\227.5287\\\\319.01\\\\23.63579\\\\226.6123\\\\319.01\\\\25.63579\\\\225.6388\\\\319.01\\\\28.13579\\\\224.1024\\\\319.01\\\\30.13579\\\\222.5501\\\\319.01\\\\31.86496\\\\220.9199\\\\319.01\\\\33.23043\\\\219.4199\\\\319.01\\\\34.75003\\\\217.4199\\\\319.01\\\\36.26778\\\\214.9199\\\\319.01\\\\37.2136\\\\212.9199\\\\319.01\\\\38.27096\\\\209.9199\\\\319.01\\\\38.83924\\\\207.4199\\\\319.01\\\\39.17046\\\\203.9199\\\\319.01\\\\38.82429\\\\199.9199\\\\319.01\\\\38.24227\\\\197.4199\\\\319.01\\\\37.76228\\\\195.9199\\\\319.01\\\\36.7136\\\\193.4199\\\\319.01\\\\35.33726\\\\190.9199\\\\319.01\\\\34.32057\\\\189.4199\\\\319.01\\\\32.69406\\\\187.4199\\\\319.01\\\\30.13579\\\\184.8861\\\\319.01\\\\28.13579\\\\183.1373\\\\319.01\\\\26.33371\\\\181.4199\\\\319.01\\\\23.47009\\\\178.4199\\\\319.01\\\\22.04972\\\\176.4199\\\\319.01\\\\21.53857\\\\175.4199\\\\319.01\\\\21.30416\\\\174.4199\\\\319.01\\\\21.59775\\\\173.4199\\\\319.01\\\\22.58987\\\\171.9199\\\\319.01\\\\26.76079\\\\167.4199\\\\319.01\\\\28.76607\\\\164.4199\\\\319.01\\\\30.52865\\\\161.4199\\\\319.01\\\\32.13579\\\\159.0449\\\\319.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n";
+const char* k_rtStruct_json08 =
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"61\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"24\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-22.86421\\\\173.6167\\\\322.01\\\\-20.36421\\\\171.3328\\\\322.01\\\\-18.64568\\\\169.4199\\\\322.01\\\\-17.21133\\\\167.4199\\\\322.01\\\\-15.76229\\\\164.9199\\\\322.01\\\\-14.17866\\\\161.4199\\\\322.01\\\\-13.68593\\\\159.9199\\\\322.01\\\\-13.19968\\\\157.9199\\\\322.01\\\\-13.03158\\\\155.4199\\\\322.01\\\\-13.19686\\\\153.4199\\\\322.01\\\\-13.74929\\\\150.9199\\\\322.01\\\\-14.23635\\\\149.4199\\\\322.01\\\\-15.71317\\\\145.9199\\\\322.01\\\\-16.80026\\\\143.9199\\\\322.01\\\\-17.74579\\\\142.4199\\\\322.01\\\\-19.29129\\\\140.4199\\\\322.01\\\\-20.86421\\\\138.7435\\\\322.01\\\\-21.86421\\\\137.8386\\\\322.01\\\\-23.86421\\\\136.282\\\\322.01\\\\-26.36421\\\\134.764\\\\322.01\\\\-28.36421\\\\133.8425\\\\322.01\\\\-29.86421\\\\133.2735\\\\322.01\\\\-31.86421\\\\132.7164\\\\322.01\\\\-34.36421\\\\132.2486\\\\322.01\\\\-36.86421\\\\132.13\\\\322.01\\\\-39.36421\\\\132.2642\\\\322.01\\\\-41.86421\\\\132.7382\\\\322.01\\\\-43.86421\\\\133.3401\\\\322.01\\\\-46.36421\\\\134.3583\\\\322.01\\\\-48.86421\\\\135.7135\\\\322.01\\\\-50.36421\\\\136.728\\\\322.01\\\\-52.36421\\\\138.4039\\\\322.01\\\\-53.86421\\\\139.9274\\\\322.01\\\\-55.50681\\\\141.9199\\\\322.01\\\\-56.51492\\\\143.4199\\\\322.01\\\\-58.07415\\\\146.4199\\\\322.01\\\\-59.00964\\\\148.9199\\\\322.01\\\\-59.5293\\\\150.9199\\\\322.01\\\\-59.89546\\\\153.4199\\\\322.01\\\\-60.03242\\\\154.9199\\\\322.01\\\\-59.93835\\\\156.9199\\\\322.01\\\\-59.49086\\\\159.9199\\\\322.01\\\\-58.95904\\\\161.9199\\\\322.01\\\\-58.02025\\\\164.4199\\\\322.01\\\\-57.0033\\\\166.4199\\\\322.01\\\\-56.06999\\\\167.9199\\\\322.01\\\\-54.56957\\\\169.9199\\\\322.01\\\\-52.65075\\\\171.9199\\\\322.01\\\\-51.36421\\\\173.1195\\\\322.01\\\\-49.36421\\\\174.6134\\\\322.01\\\\-47.86421\\\\175.5312\\\\322.01\\\\-45.86421\\\\176.5396\\\\322.01\\\\-42.86421\\\\177.6258\\\\322.01\\\\-40.86421\\\\178.1171\\\\322.01\\\\-38.36421\\\\178.4579\\\\322.01\\\\-36.86421\\\\178.5724\\\\322.01\\\\-35.36421\\\\178.4741\\\\322.01\\\\-32.36421\\\\178.0522\\\\322.01\\\\-30.36421\\\\177.5304\\\\322.01\\\\-27.86421\\\\176.6086\\\\322.01\\\\-25.86421\\\\175.6103\\\\322.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"57\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"25\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"12.13579\\\\79.89561\\\\322.01\\\\8.135789\\\\80.26321\\\\322.01\\\\6.135788\\\\80.73197\\\\322.01\\\\3.135788\\\\81.80273\\\\322.01\\\\1.135789\\\\82.78688\\\\322.01\\\\-0.3642115\\\\83.70047\\\\322.01\\\\-1.864211\\\\84.7538\\\\322.01\\\\-4.364212\\\\87.02203\\\\322.01\\\\-6.084282\\\\88.91986\\\\322.01\\\\-7.526799\\\\90.91986\\\\322.01\\\\-8.904288\\\\93.41986\\\\322.01\\\\-9.95048\\\\95.91986\\\\322.01\\\\-10.55831\\\\97.91986\\\\322.01\\\\-11.04673\\\\100.4199\\\\322.01\\\\-11.16636\\\\102.4199\\\\322.01\\\\-11.03347\\\\105.9199\\\\322.01\\\\-10.53559\\\\108.4199\\\\322.01\\\\-9.545301\\\\111.4199\\\\322.01\\\\-8.064543\\\\114.4199\\\\322.01\\\\-5.994056\\\\117.4199\\\\322.01\\\\-4.364212\\\\119.1962\\\\322.01\\\\-2.364212\\\\121.063\\\\322.01\\\\-0.3642115\\\\122.5134\\\\322.01\\\\1.635789\\\\123.6633\\\\322.01\\\\3.635788\\\\124.6195\\\\322.01\\\\6.135788\\\\125.5152\\\\322.01\\\\8.135789\\\\126.0422\\\\322.01\\\\11.13579\\\\126.4622\\\\322.01\\\\13.13579\\\\126.4859\\\\322.01\\\\16.13579\\\\126.0393\\\\322.01\\\\19.13579\\\\125.1215\\\\322.01\\\\20.63579\\\\124.5159\\\\322.01\\\\22.63579\\\\123.5519\\\\322.01\\\\25.63579\\\\121.6349\\\\322.01\\\\28.13579\\\\119.4801\\\\322.01\\\\29.13579\\\\118.4173\\\\322.01\\\\30.76925\\\\116.4199\\\\322.01\\\\32.34138\\\\113.9199\\\\322.01\\\\33.32649\\\\111.9199\\\\322.01\\\\34.23682\\\\109.4199\\\\322.01\\\\34.83486\\\\106.9199\\\\322.01\\\\35.12617\\\\104.4199\\\\322.01\\\\35.21572\\\\102.9199\\\\322.01\\\\34.76814\\\\98.91986\\\\322.01\\\\34.2723\\\\96.91986\\\\322.01\\\\33.77169\\\\95.41986\\\\322.01\\\\32.64571\\\\92.91986\\\\322.01\\\\31.84079\\\\91.41986\\\\322.01\\\\30.85131\\\\89.91986\\\\322.01\\\\28.81709\\\\87.41986\\\\322.01\\\\27.13579\\\\85.78797\\\\322.01\\\\25.13579\\\\84.21124\\\\322.01\\\\23.63579\\\\83.22486\\\\322.01\\\\21.63579\\\\82.17953\\\\322.01\\\\19.63579\\\\81.30779\\\\322.01\\\\18.13579\\\\80.81271\\\\322.01\\\\15.63579\\\\80.22696\\\\322.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"30\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"26\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"14.13579\\\\148.5344\\\\322.01\\\\11.63579\\\\148.8526\\\\322.01\\\\10.13579\\\\149.3299\\\\322.01\\\\9.135789\\\\149.8438\\\\322.01\\\\7.635788\\\\151.0171\\\\322.01\\\\6.442606\\\\152.4199\\\\322.01\\\\5.485788\\\\154.4199\\\\322.01\\\\5.087712\\\\156.4199\\\\322.01\\\\5.087712\\\\158.4199\\\\322.01\\\\5.505788\\\\160.4199\\\\322.01\\\\6.510788\\\\162.4199\\\\322.01\\\\7.333157\\\\163.4199\\\\322.01\\\\8.635789\\\\164.5903\\\\322.01\\\\10.63579\\\\165.6099\\\\322.01\\\\12.13579\\\\165.9872\\\\322.01\\\\13.63579\\\\166.1299\\\\322.01\\\\15.63579\\\\165.9679\\\\322.01\\\\17.13579\\\\165.5553\\\\322.01\\\\19.13579\\\\164.4994\\\\322.01\\\\20.74293\\\\162.9199\\\\322.01\\\\21.68787\\\\161.4199\\\\322.01\\\\22.26579\\\\159.9199\\\\322.01\\\\22.5597\\\\158.4199\\\\322.01\\\\22.58144\\\\156.9199\\\\322.01\\\\22.26579\\\\154.9199\\\\322.01\\\\21.72579\\\\153.4199\\\\322.01\\\\20.79055\\\\151.9199\\\\322.01\\\\19.13579\\\\150.2949\\\\322.01\\\\17.13579\\\\149.2219\\\\322.01\\\\16.13579\\\\148.9099\\\\322.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"58\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"27\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"14.13579\\\\226.9441\\\\322.01\\\\18.13579\\\\226.5733\\\\322.01\\\\20.13579\\\\226.1058\\\\322.01\\\\23.13579\\\\225.037\\\\322.01\\\\25.13579\\\\224.0554\\\\322.01\\\\26.63579\\\\223.1393\\\\322.01\\\\28.13579\\\\222.0859\\\\322.01\\\\30.02057\\\\220.4199\\\\322.01\\\\32.35234\\\\217.9199\\\\322.01\\\\33.796\\\\215.9199\\\\322.01\\\\35.17205\\\\213.4199\\\\322.01\\\\36.22206\\\\210.9199\\\\322.01\\\\36.82989\\\\208.9199\\\\322.01\\\\37.3183\\\\206.4199\\\\322.01\\\\37.43793\\\\204.4199\\\\322.01\\\\37.30504\\\\200.9199\\\\322.01\\\\36.80717\\\\198.4199\\\\322.01\\\\35.81688\\\\195.4199\\\\322.01\\\\34.33746\\\\192.4199\\\\322.01\\\\33.71524\\\\191.4199\\\\322.01\\\\32.26848\\\\189.4199\\\\322.01\\\\30.63579\\\\187.6435\\\\322.01\\\\28.63579\\\\185.7795\\\\322.01\\\\26.63579\\\\184.2958\\\\322.01\\\\25.13579\\\\183.3219\\\\322.01\\\\21.63579\\\\181.3373\\\\322.01\\\\19.13579\\\\180.2194\\\\322.01\\\\17.63579\\\\179.7097\\\\322.01\\\\16.13579\\\\179.3674\\\\322.01\\\\14.13579\\\\179.1844\\\\322.01\\\\12.63579\\\\179.2658\\\\322.01\\\\10.63579\\\\179.7215\\\\322.01\\\\9.135789\\\\180.2507\\\\322.01\\\\6.135788\\\\181.6909\\\\322.01\\\\2.635788\\\\183.7795\\\\322.01\\\\0.6357885\\\\185.1998\\\\322.01\\\\-1.864211\\\\187.3557\\\\322.01\\\\-2.866484\\\\188.4199\\\\322.01\\\\-4.500405\\\\190.4199\\\\322.01\\\\-6.073093\\\\192.9199\\\\322.01\\\\-7.054916\\\\194.9199\\\\322.01\\\\-7.965239\\\\197.4199\\\\322.01\\\\-8.563286\\\\199.9199\\\\322.01\\\\-8.854596\\\\202.4199\\\\322.01\\\\-8.944143\\\\203.9199\\\\322.01\\\\-8.496565\\\\207.9199\\\\322.01\\\\-8.000725\\\\209.9199\\\\322.01\\\\-7.083763\\\\212.4199\\\\322.01\\\\-5.565878\\\\215.4199\\\\322.01\\\\-4.578253\\\\216.9199\\\\322.01\\\\-2.545509\\\\219.4199\\\\322.01\\\\-0.8642115\\\\221.0499\\\\322.01\\\\1.135789\\\\222.6285\\\\322.01\\\\2.635788\\\\223.6162\\\\322.01\\\\4.635788\\\\224.66\\\\322.01\\\\6.635788\\\\225.5312\\\\322.01\\\\8.135789\\\\226.0243\\\\322.01\\\\10.63579\\\\226.6116\\\\322.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"59\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"28\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"49.13579\\\\134.7441\\\\322.01\\\\46.63579\\\\137.0307\\\\322.01\\\\44.92775\\\\138.9199\\\\322.01\\\\43.50623\\\\140.9199\\\\322.01\\\\42.38579\\\\142.9199\\\\322.01\\\\40.97799\\\\145.9199\\\\322.01\\\\39.93071\\\\148.9199\\\\322.01\\\\39.43028\\\\150.9199\\\\322.01\\\\39.09673\\\\153.4199\\\\322.01\\\\39.41588\\\\156.4199\\\\322.01\\\\39.95945\\\\158.4199\\\\322.01\\\\40.52195\\\\159.9199\\\\322.01\\\\41.48458\\\\161.9199\\\\322.01\\\\42.9492\\\\164.4199\\\\322.01\\\\43.96608\\\\165.9199\\\\322.01\\\\45.53619\\\\167.9199\\\\322.01\\\\46.44071\\\\168.9199\\\\322.01\\\\48.13579\\\\170.5235\\\\322.01\\\\50.13579\\\\172.0799\\\\322.01\\\\51.63579\\\\173.0376\\\\322.01\\\\53.63579\\\\174.1012\\\\322.01\\\\56.13579\\\\175.1018\\\\322.01\\\\57.63579\\\\175.5449\\\\322.01\\\\60.13579\\\\176.0546\\\\322.01\\\\63.13579\\\\176.222\\\\322.01\\\\65.63579\\\\176.0973\\\\322.01\\\\68.13579\\\\175.614\\\\322.01\\\\70.13579\\\\175.0277\\\\322.01\\\\72.63579\\\\174.0123\\\\322.01\\\\75.13579\\\\172.6378\\\\322.01\\\\76.63579\\\\171.6285\\\\322.01\\\\78.63579\\\\169.9578\\\\322.01\\\\80.14716\\\\168.4199\\\\322.01\\\\81.7909\\\\166.4199\\\\322.01\\\\82.79488\\\\164.9199\\\\322.01\\\\84.34893\\\\161.9199\\\\322.01\\\\85.28902\\\\159.4199\\\\322.01\\\\85.8061\\\\157.4199\\\\322.01\\\\86.23142\\\\154.4199\\\\322.01\\\\86.31414\\\\152.9199\\\\322.01\\\\86.13579\\\\150.9318\\\\322.01\\\\85.74485\\\\148.4199\\\\322.01\\\\85.19829\\\\146.4199\\\\322.01\\\\84.26165\\\\143.9199\\\\322.01\\\\83.2471\\\\141.9199\\\\322.01\\\\82.32372\\\\140.4199\\\\322.01\\\\80.81777\\\\138.4199\\\\322.01\\\\78.13579\\\\135.695\\\\322.01\\\\75.63579\\\\133.7706\\\\322.01\\\\74.13579\\\\132.8641\\\\322.01\\\\72.13579\\\\131.8482\\\\322.01\\\\69.13579\\\\130.7308\\\\322.01\\\\67.13579\\\\130.2393\\\\322.01\\\\63.13579\\\\129.7981\\\\322.01\\\\61.63579\\\\129.9028\\\\322.01\\\\58.63579\\\\130.3108\\\\322.01\\\\56.63579\\\\130.8307\\\\322.01\\\\54.13579\\\\131.7483\\\\322.01\\\\52.13579\\\\132.7481\\\\322.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"55\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"29\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-36.86421\\\\134.5039\\\\325.01\\\\-40.36421\\\\134.8251\\\\325.01\\\\-42.36421\\\\135.3162\\\\325.01\\\\-44.86421\\\\136.2328\\\\325.01\\\\-46.86421\\\\137.2308\\\\325.01\\\\-47.86421\\\\137.8358\\\\325.01\\\\-49.86421\\\\139.2767\\\\325.01\\\\-50.86421\\\\140.1812\\\\325.01\\\\-52.55669\\\\141.9199\\\\325.01\\\\-54.06213\\\\143.9199\\\\325.01\\\\-54.98921\\\\145.4199\\\\325.01\\\\-55.96295\\\\147.4199\\\\325.01\\\\-56.98823\\\\150.4199\\\\325.01\\\\-57.53526\\\\153.4199\\\\325.01\\\\-57.62727\\\\155.4199\\\\325.01\\\\-57.52279\\\\157.4199\\\\325.01\\\\-57.06078\\\\159.9199\\\\325.01\\\\-56.49021\\\\161.9199\\\\325.01\\\\-55.41194\\\\164.4199\\\\325.01\\\\-54.57702\\\\165.9199\\\\325.01\\\\-53.57396\\\\167.4199\\\\325.01\\\\-51.89916\\\\169.4199\\\\325.01\\\\-50.86421\\\\170.4544\\\\325.01\\\\-48.86421\\\\172.1211\\\\325.01\\\\-47.36421\\\\173.1227\\\\325.01\\\\-45.86421\\\\173.9317\\\\325.01\\\\-43.36421\\\\175.006\\\\325.01\\\\-41.36421\\\\175.596\\\\325.01\\\\-38.86421\\\\176.0515\\\\325.01\\\\-36.86421\\\\176.1623\\\\325.01\\\\-34.86421\\\\176.0684\\\\325.01\\\\-32.36421\\\\175.6225\\\\325.01\\\\-30.36421\\\\175.073\\\\325.01\\\\-27.86421\\\\174.0279\\\\325.01\\\\-25.36421\\\\172.5758\\\\325.01\\\\-23.36421\\\\171.0328\\\\325.01\\\\-21.68302\\\\169.4199\\\\325.01\\\\-19.67303\\\\166.9199\\\\325.01\\\\-18.72346\\\\165.4199\\\\325.01\\\\-17.71021\\\\163.4199\\\\325.01\\\\-16.66229\\\\160.4199\\\\325.01\\\\-16.19818\\\\158.4199\\\\325.01\\\\-15.96381\\\\155.4199\\\\325.01\\\\-16.25821\\\\151.9199\\\\325.01\\\\-16.73232\\\\149.9199\\\\325.01\\\\-17.64964\\\\147.4199\\\\325.01\\\\-19.19963\\\\144.4199\\\\325.01\\\\-20.24376\\\\142.9199\\\\325.01\\\\-21.86421\\\\141.089\\\\325.01\\\\-24.36421\\\\138.787\\\\325.01\\\\-25.86421\\\\137.7401\\\\325.01\\\\-27.36421\\\\136.9034\\\\325.01\\\\-29.86421\\\\135.7551\\\\325.01\\\\-31.36421\\\\135.2615\\\\325.01\\\\-33.36421\\\\134.7939\\\\325.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"55\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"30\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"10.13579\\\\183.3021\\\\325.01\\\\7.135788\\\\184.2407\\\\325.01\\\\5.135788\\\\185.1719\\\\325.01\\\\3.135788\\\\186.2872\\\\325.01\\\\1.135789\\\\187.7495\\\\325.01\\\\-1.559387\\\\190.4199\\\\325.01\\\\-3.057961\\\\192.4199\\\\325.01\\\\-4.487128\\\\194.9199\\\\325.01\\\\-5.510696\\\\197.4199\\\\325.01\\\\-6.051712\\\\199.4199\\\\325.01\\\\-6.519062\\\\202.4199\\\\325.01\\\\-6.565339\\\\203.9199\\\\325.01\\\\-6.408329\\\\205.9199\\\\325.01\\\\-5.967034\\\\208.4199\\\\325.01\\\\-4.985113\\\\211.4199\\\\325.01\\\\-4.035583\\\\213.4199\\\\325.01\\\\-3.447545\\\\214.4199\\\\325.01\\\\-2.060332\\\\216.4199\\\\325.01\\\\-0.8642115\\\\217.754\\\\325.01\\\\1.635789\\\\220.1117\\\\325.01\\\\3.635788\\\\221.491\\\\325.01\\\\4.635788\\\\222.0804\\\\325.01\\\\6.635788\\\\223.0186\\\\325.01\\\\8.135789\\\\223.5795\\\\325.01\\\\10.13579\\\\224.1074\\\\325.01\\\\12.63579\\\\224.4875\\\\325.01\\\\14.13579\\\\224.5909\\\\325.01\\\\16.13579\\\\224.4519\\\\325.01\\\\18.63579\\\\224.0641\\\\325.01\\\\20.63579\\\\223.4818\\\\325.01\\\\23.13579\\\\222.4497\\\\325.01\\\\25.63579\\\\221.0292\\\\325.01\\\\27.63579\\\\219.5015\\\\325.01\\\\29.76198\\\\217.4199\\\\325.01\\\\31.33117\\\\215.4199\\\\325.01\\\\32.29767\\\\213.9199\\\\325.01\\\\33.31492\\\\211.9199\\\\325.01\\\\34.25379\\\\209.4199\\\\325.01\\\\34.83692\\\\206.9199\\\\325.01\\\\35.10346\\\\203.9199\\\\325.01\\\\34.88203\\\\200.9199\\\\325.01\\\\34.73055\\\\199.9199\\\\325.01\\\\34.20932\\\\197.9199\\\\325.01\\\\33.27197\\\\195.4199\\\\325.01\\\\32.22284\\\\193.4199\\\\325.01\\\\31.25856\\\\191.9199\\\\325.01\\\\29.63579\\\\189.9463\\\\325.01\\\\28.11496\\\\188.4199\\\\325.01\\\\26.13579\\\\186.7882\\\\325.01\\\\23.63579\\\\185.2499\\\\325.01\\\\21.63579\\\\184.3438\\\\325.01\\\\20.13579\\\\183.7888\\\\325.01\\\\18.13579\\\\183.2512\\\\325.01\\\\15.13579\\\\182.8438\\\\325.01\\\\13.13579\\\\182.8685\\\\325.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"54\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"31\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"12.13579\\\\123.9516\\\\325.01\\\\15.63579\\\\123.596\\\\325.01\\\\17.63579\\\\123.0987\\\\325.01\\\\19.13579\\\\122.5923\\\\325.01\\\\21.13579\\\\121.6678\\\\325.01\\\\23.13579\\\\120.5568\\\\325.01\\\\25.13579\\\\119.0902\\\\325.01\\\\26.89038\\\\117.4199\\\\325.01\\\\28.2372\\\\115.9199\\\\325.01\\\\29.32537\\\\114.4199\\\\325.01\\\\30.75554\\\\111.9199\\\\325.01\\\\31.77949\\\\109.4199\\\\325.01\\\\32.32329\\\\107.4199\\\\325.01\\\\32.79064\\\\104.4199\\\\325.01\\\\32.83692\\\\102.9199\\\\325.01\\\\32.6799\\\\100.9199\\\\325.01\\\\32.23861\\\\98.41986\\\\325.01\\\\31.25669\\\\95.41986\\\\325.01\\\\30.30979\\\\93.41986\\\\325.01\\\\29.72363\\\\92.41986\\\\325.01\\\\28.33361\\\\90.41986\\\\325.01\\\\25.96829\\\\87.91986\\\\325.01\\\\24.63579\\\\86.72805\\\\325.01\\\\21.63579\\\\84.76335\\\\325.01\\\\19.63579\\\\83.82532\\\\325.01\\\\18.13579\\\\83.26024\\\\325.01\\\\16.13579\\\\82.73236\\\\325.01\\\\13.63579\\\\82.35223\\\\325.01\\\\11.13579\\\\82.27512\\\\325.01\\\\7.635788\\\\82.77291\\\\325.01\\\\5.635788\\\\83.35789\\\\325.01\\\\3.135788\\\\84.39439\\\\325.01\\\\0.6357885\\\\85.814\\\\325.01\\\\-1.364211\\\\87.34236\\\\325.01\\\\-3.033193\\\\88.91986\\\\325.01\\\\-5.063791\\\\91.41986\\\\325.01\\\\-6.030195\\\\92.91986\\\\325.01\\\\-7.047282\\\\94.91986\\\\325.01\\\\-7.982212\\\\97.41986\\\\325.01\\\\-8.565339\\\\99.91986\\\\325.01\\\\-8.831883\\\\102.9199\\\\325.01\\\\-8.610452\\\\105.9199\\\\325.01\\\\-8.458969\\\\106.9199\\\\325.01\\\\-7.937741\\\\108.9199\\\\325.01\\\\-6.997408\\\\111.4199\\\\325.01\\\\-5.947545\\\\113.4199\\\\325.01\\\\-4.983581\\\\114.9199\\\\325.01\\\\-3.364212\\\\116.8934\\\\325.01\\\\-1.843378\\\\118.4199\\\\325.01\\\\0.1357885\\\\120.0548\\\\325.01\\\\1.635789\\\\121.0273\\\\325.01\\\\3.635788\\\\122.0806\\\\325.01\\\\6.135788\\\\123.0276\\\\325.01\\\\8.135789\\\\123.5526\\\\325.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"54\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"32\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"63.13579\\\\173.8627\\\\325.01\\\\66.63579\\\\173.5429\\\\325.01\\\\68.63579\\\\173.0517\\\\325.01\\\\71.13579\\\\172.1226\\\\325.01\\\\74.13579\\\\170.5327\\\\325.01\\\\76.13579\\\\169.0828\\\\325.01\\\\77.39513\\\\167.9199\\\\325.01\\\\79.25494\\\\165.9199\\\\325.01\\\\80.34204\\\\164.4199\\\\325.01\\\\81.26814\\\\162.9199\\\\325.01\\\\82.24203\\\\160.9199\\\\325.01\\\\83.26665\\\\157.9199\\\\325.01\\\\83.75102\\\\155.4199\\\\325.01\\\\83.89706\\\\152.9199\\\\325.01\\\\83.7918\\\\150.9199\\\\325.01\\\\83.32329\\\\148.4199\\\\325.01\\\\82.73289\\\\146.4199\\\\325.01\\\\81.65215\\\\143.9199\\\\325.01\\\\80.83456\\\\142.4199\\\\325.01\\\\79.83023\\\\140.9199\\\\325.01\\\\78.13579\\\\138.9287\\\\325.01\\\\77.1152\\\\137.9199\\\\325.01\\\\75.13579\\\\136.2468\\\\325.01\\\\73.63579\\\\135.2457\\\\325.01\\\\70.63579\\\\133.7382\\\\325.01\\\\67.63579\\\\132.7589\\\\325.01\\\\64.63579\\\\132.2613\\\\325.01\\\\63.13579\\\\132.1962\\\\325.01\\\\61.13579\\\\132.3016\\\\325.01\\\\58.63579\\\\132.7324\\\\325.01\\\\56.63579\\\\133.2899\\\\325.01\\\\54.13579\\\\134.3387\\\\325.01\\\\51.63579\\\\135.7905\\\\325.01\\\\49.63579\\\\137.3374\\\\325.01\\\\47.52657\\\\139.4199\\\\325.01\\\\45.95454\\\\141.4199\\\\325.01\\\\45.00655\\\\142.9199\\\\325.01\\\\43.99264\\\\144.9199\\\\325.01\\\\42.93922\\\\147.9199\\\\325.01\\\\42.47358\\\\149.9199\\\\325.01\\\\42.22876\\\\152.9199\\\\325.01\\\\42.5039\\\\156.4199\\\\325.01\\\\42.97881\\\\158.4199\\\\325.01\\\\43.47368\\\\159.9199\\\\325.01\\\\44.61928\\\\162.4199\\\\325.01\\\\45.45341\\\\163.9199\\\\325.01\\\\46.4907\\\\165.4199\\\\325.01\\\\48.77973\\\\167.9199\\\\325.01\\\\50.63579\\\\169.5769\\\\325.01\\\\52.13579\\\\170.6161\\\\325.01\\\\53.63579\\\\171.4762\\\\325.01\\\\56.13579\\\\172.604\\\\325.01\\\\57.63579\\\\173.1012\\\\325.01\\\\59.63579\\\\173.5834\\\\325.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"44\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"33\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-36.86421\\\\137.8837\\\\328.01\\\\-40.36421\\\\138.2949\\\\328.01\\\\-43.36421\\\\139.2683\\\\328.01\\\\-45.36421\\\\140.256\\\\328.01\\\\-46.86421\\\\141.2251\\\\328.01\\\\-49.36421\\\\143.4318\\\\328.01\\\\-51.02226\\\\145.4199\\\\328.01\\\\-52.4865\\\\147.9199\\\\328.01\\\\-53.44845\\\\150.4199\\\\328.01\\\\-54.01472\\\\152.9199\\\\328.01\\\\-54.17799\\\\155.4199\\\\328.01\\\\-53.99431\\\\157.9199\\\\328.01\\\\-53.53869\\\\159.9199\\\\328.01\\\\-53.04579\\\\161.4199\\\\328.01\\\\-51.54679\\\\164.4199\\\\328.01\\\\-50.51004\\\\165.9199\\\\328.01\\\\-48.86421\\\\167.6923\\\\328.01\\\\-47.36421\\\\169.0581\\\\328.01\\\\-45.86421\\\\170.0912\\\\328.01\\\\-42.86421\\\\171.5804\\\\328.01\\\\-41.36421\\\\172.0771\\\\328.01\\\\-39.36421\\\\172.5214\\\\328.01\\\\-36.86421\\\\172.7081\\\\328.01\\\\-34.36421\\\\172.5449\\\\328.01\\\\-32.36421\\\\172.1048\\\\328.01\\\\-30.86421\\\\171.6225\\\\328.01\\\\-29.36421\\\\170.9925\\\\328.01\\\\-26.86421\\\\169.5144\\\\328.01\\\\-24.36421\\\\167.2983\\\\328.01\\\\-22.72177\\\\165.4199\\\\328.01\\\\-21.74773\\\\163.9199\\\\328.01\\\\-20.7528\\\\161.9199\\\\328.01\\\\-20.20369\\\\160.4199\\\\328.01\\\\-19.68638\\\\158.4199\\\\328.01\\\\-19.35579\\\\155.4199\\\\328.01\\\\-19.73277\\\\151.9199\\\\328.01\\\\-20.68263\\\\148.9199\\\\328.01\\\\-22.23921\\\\145.9199\\\\328.01\\\\-23.76356\\\\143.9199\\\\328.01\\\\-25.36421\\\\142.3077\\\\328.01\\\\-27.36421\\\\140.775\\\\328.01\\\\-29.36421\\\\139.6808\\\\328.01\\\\-31.36421\\\\138.8302\\\\328.01\\\\-33.36421\\\\138.2729\\\\328.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"48\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"34\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"19.13579\\\\87.28422\\\\328.01\\\\16.13579\\\\86.24017\\\\328.01\\\\13.63579\\\\85.78097\\\\328.01\\\\12.13579\\\\85.70812\\\\328.01\\\\10.13579\\\\85.80904\\\\328.01\\\\7.635788\\\\86.28326\\\\328.01\\\\6.135788\\\\86.7646\\\\328.01\\\\3.135788\\\\88.22263\\\\328.01\\\\1.635789\\\\89.22868\\\\328.01\\\\0.2878155\\\\90.41986\\\\328.01\\\\-2.01651\\\\92.91986\\\\328.01\\\\-3.005878\\\\94.41986\\\\328.01\\\\-4.015807\\\\96.41986\\\\328.01\\\\-5.004518\\\\99.41986\\\\328.01\\\\-5.367085\\\\101.9199\\\\328.01\\\\-5.40542\\\\103.9199\\\\328.01\\\\-4.976191\\\\106.9199\\\\328.01\\\\-4.533483\\\\108.4199\\\\328.01\\\\-3.493332\\\\110.9199\\\\328.01\\\\-2.909943\\\\111.9199\\\\328.01\\\\-1.527902\\\\113.9199\\\\328.01\\\\-0.3642115\\\\115.1828\\\\328.01\\\\1.135789\\\\116.5895\\\\328.01\\\\3.135788\\\\117.9891\\\\328.01\\\\5.135788\\\\119.0462\\\\328.01\\\\8.135789\\\\120.0565\\\\328.01\\\\10.63579\\\\120.4504\\\\328.01\\\\13.13579\\\\120.4817\\\\328.01\\\\15.63579\\\\120.0977\\\\328.01\\\\17.63579\\\\119.5301\\\\328.01\\\\20.63579\\\\118.1171\\\\328.01\\\\22.13579\\\\117.1346\\\\328.01\\\\23.61563\\\\115.9199\\\\328.01\\\\24.63579\\\\114.9158\\\\328.01\\\\26.28404\\\\112.9199\\\\328.01\\\\27.71817\\\\110.4199\\\\328.01\\\\28.33316\\\\108.9199\\\\328.01\\\\28.81362\\\\107.4199\\\\328.01\\\\29.22263\\\\105.4199\\\\328.01\\\\29.37814\\\\102.9199\\\\328.01\\\\29.24661\\\\100.9199\\\\328.01\\\\28.70996\\\\98.41986\\\\328.01\\\\28.19545\\\\96.91986\\\\328.01\\\\27.28689\\\\94.91986\\\\328.01\\\\26.34556\\\\93.41986\\\\328.01\\\\25.22345\\\\91.91986\\\\328.01\\\\23.63579\\\\90.26862\\\\328.01\\\\21.63579\\\\88.71584\\\\328.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"47\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"35\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"31.24777\\\\199.9199\\\\328.01\\\\30.23194\\\\196.9199\\\\328.01\\\\29.18762\\\\194.9199\\\\328.01\\\\27.80543\\\\192.9199\\\\328.01\\\\25.8825\\\\190.9199\\\\328.01\\\\25.13579\\\\190.2482\\\\328.01\\\\23.13579\\\\188.8506\\\\328.01\\\\21.13579\\\\187.7935\\\\328.01\\\\18.13579\\\\186.7796\\\\328.01\\\\15.63579\\\\186.3893\\\\328.01\\\\13.13579\\\\186.358\\\\328.01\\\\10.63579\\\\186.7369\\\\328.01\\\\8.635789\\\\187.3055\\\\328.01\\\\5.635788\\\\188.7204\\\\328.01\\\\4.135788\\\\189.7018\\\\328.01\\\\2.65595\\\\190.9199\\\\328.01\\\\1.632165\\\\191.9199\\\\328.01\\\\-0.01651034\\\\193.9199\\\\328.01\\\\-1.45228\\\\196.4199\\\\328.01\\\\-2.066843\\\\197.9199\\\\328.01\\\\-2.542047\\\\199.4199\\\\328.01\\\\-2.951977\\\\201.4199\\\\328.01\\\\-3.091252\\\\204.4199\\\\328.01\\\\-2.975036\\\\205.9199\\\\328.01\\\\-2.438387\\\\208.4199\\\\328.01\\\\-1.923871\\\\209.9199\\\\328.01\\\\-1.013668\\\\211.9199\\\\328.01\\\\-0.07398161\\\\213.4199\\\\328.01\\\\1.482664\\\\215.4199\\\\328.01\\\\2.635788\\\\216.573\\\\328.01\\\\4.635788\\\\218.1181\\\\328.01\\\\7.135788\\\\219.5555\\\\328.01\\\\10.13579\\\\220.5977\\\\328.01\\\\12.63579\\\\221.0551\\\\328.01\\\\14.13579\\\\221.1316\\\\328.01\\\\16.13579\\\\221.0307\\\\328.01\\\\18.63579\\\\220.5513\\\\328.01\\\\20.13579\\\\220.0735\\\\328.01\\\\23.13579\\\\218.6193\\\\328.01\\\\24.63579\\\\217.6051\\\\328.01\\\\26.63579\\\\215.7863\\\\328.01\\\\28.28404\\\\213.9199\\\\328.01\\\\29.27745\\\\212.4199\\\\328.01\\\\30.28206\\\\210.4199\\\\328.01\\\\31.27239\\\\207.4199\\\\328.01\\\\31.63863\\\\204.9199\\\\328.01\\\\31.677\\\\202.9199\\\\328.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"47\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"36\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"45.63295\\\\152.9199\\\\328.01\\\\45.99919\\\\156.4199\\\\328.01\\\\46.56079\\\\158.4199\\\\328.01\\\\46.94164\\\\159.4199\\\\328.01\\\\48.4909\\\\162.4199\\\\328.01\\\\50.01237\\\\164.4199\\\\328.01\\\\51.63579\\\\166.0496\\\\328.01\\\\53.63579\\\\167.5761\\\\328.01\\\\55.13579\\\\168.4353\\\\328.01\\\\57.63579\\\\169.5475\\\\328.01\\\\59.63579\\\\170.0908\\\\328.01\\\\62.13579\\\\170.4227\\\\328.01\\\\64.13579\\\\170.4052\\\\328.01\\\\66.63579\\\\170.0602\\\\328.01\\\\69.63579\\\\169.0909\\\\328.01\\\\71.63579\\\\168.1004\\\\328.01\\\\73.13579\\\\167.1263\\\\328.01\\\\75.13579\\\\165.4452\\\\328.01\\\\77.29958\\\\162.9199\\\\328.01\\\\78.76894\\\\160.4199\\\\328.01\\\\79.72987\\\\157.9199\\\\328.01\\\\80.2863\\\\155.4199\\\\328.01\\\\80.43733\\\\153.4199\\\\328.01\\\\80.26079\\\\150.4199\\\\328.01\\\\79.80331\\\\148.4199\\\\328.01\\\\79.30334\\\\146.9199\\\\328.01\\\\77.80714\\\\143.9199\\\\328.01\\\\76.75469\\\\142.4199\\\\328.01\\\\75.63579\\\\141.1699\\\\328.01\\\\73.63579\\\\139.3292\\\\328.01\\\\72.13579\\\\138.2726\\\\328.01\\\\69.13579\\\\136.7804\\\\328.01\\\\67.63579\\\\136.2818\\\\328.01\\\\65.13579\\\\135.7744\\\\328.01\\\\63.13579\\\\135.652\\\\328.01\\\\60.63579\\\\135.8225\\\\328.01\\\\58.63579\\\\136.2454\\\\328.01\\\\57.13579\\\\136.731\\\\328.01\\\\55.63579\\\\137.3752\\\\328.01\\\\54.13579\\\\138.2036\\\\328.01\\\\52.63579\\\\139.2228\\\\328.01\\\\51.28782\\\\140.4199\\\\328.01\\\\49.00781\\\\142.9199\\\\328.01\\\\48.03405\\\\144.4199\\\\328.01\\\\47.02981\\\\146.4199\\\\328.01\\\\46.48053\\\\147.9199\\\\328.01\\\\45.95977\\\\149.9199\\\\328.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"39\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"37\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"-35.86421\\\\143.7896\\\\331.01\\\\-38.36421\\\\143.8818\\\\331.01\\\\-40.36421\\\\144.3699\\\\331.01\\\\-42.36421\\\\145.2396\\\\331.01\\\\-43.36421\\\\145.8187\\\\331.01\\\\-44.67136\\\\146.9199\\\\331.01\\\\-46.04104\\\\148.4199\\\\331.01\\\\-46.98353\\\\149.9199\\\\331.01\\\\-47.44573\\\\150.9199\\\\331.01\\\\-47.93336\\\\152.4199\\\\331.01\\\\-48.16312\\\\153.9199\\\\331.01\\\\-48.25866\\\\155.4199\\\\331.01\\\\-48.0823\\\\157.4199\\\\331.01\\\\-47.55443\\\\159.4199\\\\331.01\\\\-46.57254\\\\161.4199\\\\331.01\\\\-45.48601\\\\162.9199\\\\331.01\\\\-44.36421\\\\164.0417\\\\331.01\\\\-42.86421\\\\165.1163\\\\331.01\\\\-40.86421\\\\166.0921\\\\331.01\\\\-39.36421\\\\166.5422\\\\331.01\\\\-36.86421\\\\166.784\\\\331.01\\\\-35.36421\\\\166.6911\\\\331.01\\\\-33.86421\\\\166.4476\\\\331.01\\\\-31.36421\\\\165.5051\\\\331.01\\\\-29.86421\\\\164.5511\\\\331.01\\\\-28.86421\\\\163.6834\\\\331.01\\\\-27.69546\\\\162.4199\\\\331.01\\\\-26.71886\\\\160.9199\\\\331.01\\\\-25.70996\\\\158.4199\\\\331.01\\\\-25.27567\\\\156.4199\\\\331.01\\\\-25.21317\\\\155.4199\\\\331.01\\\\-25.32698\\\\153.9199\\\\331.01\\\\-25.78442\\\\151.9199\\\\331.01\\\\-26.63747\\\\149.9199\\\\331.01\\\\-27.21177\\\\148.9199\\\\331.01\\\\-28.36421\\\\147.5032\\\\331.01\\\\-30.36421\\\\145.7552\\\\331.01\\\\-31.36421\\\\145.1815\\\\331.01\\\\-33.36421\\\\144.3188\\\\331.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"38\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"38\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"4.534598\\\\209.9199\\\\331.01\\\\6.188819\\\\211.9199\\\\331.01\\\\8.135789\\\\213.5071\\\\331.01\\\\10.13579\\\\214.5014\\\\331.01\\\\12.13579\\\\215.0422\\\\331.01\\\\14.13579\\\\215.197\\\\331.01\\\\16.63579\\\\215.0084\\\\331.01\\\\18.13579\\\\214.5883\\\\331.01\\\\19.63579\\\\213.9377\\\\331.01\\\\21.13579\\\\213.0235\\\\331.01\\\\22.13579\\\\212.1699\\\\331.01\\\\23.30454\\\\210.9199\\\\331.01\\\\24.30439\\\\209.4199\\\\331.01\\\\25.19557\\\\207.4199\\\\331.01\\\\25.71232\\\\205.4199\\\\331.01\\\\25.81808\\\\203.9199\\\\331.01\\\\25.67383\\\\201.9199\\\\331.01\\\\25.30427\\\\200.4199\\\\331.01\\\\24.75245\\\\198.9199\\\\331.01\\\\24.23462\\\\197.9199\\\\331.01\\\\23.19348\\\\196.4199\\\\331.01\\\\21.63579\\\\194.8493\\\\331.01\\\\20.13579\\\\193.8005\\\\331.01\\\\18.13579\\\\192.881\\\\331.01\\\\16.13579\\\\192.3417\\\\331.01\\\\14.63579\\\\192.2231\\\\331.01\\\\12.63579\\\\192.3105\\\\331.01\\\\10.63579\\\\192.7975\\\\331.01\\\\8.635789\\\\193.6931\\\\331.01\\\\7.635788\\\\194.2918\\\\331.01\\\\5.818221\\\\195.9199\\\\331.01\\\\4.971154\\\\196.9199\\\\331.01\\\\4.039197\\\\198.4199\\\\331.01\\\\3.596016\\\\199.4199\\\\331.01\\\\3.00558\\\\201.4199\\\\331.01\\\\2.826006\\\\203.9199\\\\331.01\\\\3.086875\\\\206.4199\\\\331.01\\\\3.532528\\\\207.9199\\\\331.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"39\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"39\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"21.73698\\\\96.91986\\\\331.01\\\\20.08276\\\\94.91986\\\\331.01\\\\18.13579\\\\93.33265\\\\331.01\\\\16.13579\\\\92.33833\\\\331.01\\\\14.13579\\\\91.79752\\\\331.01\\\\12.13579\\\\91.64268\\\\331.01\\\\9.635789\\\\91.83131\\\\331.01\\\\8.135789\\\\92.25138\\\\331.01\\\\6.635788\\\\92.902\\\\331.01\\\\5.135788\\\\93.8162\\\\331.01\\\\4.135788\\\\94.66986\\\\331.01\\\\2.967038\\\\95.91986\\\\331.01\\\\1.967184\\\\97.41986\\\\331.01\\\\1.076006\\\\99.41986\\\\331.01\\\\0.5592579\\\\101.4199\\\\331.01\\\\0.4534968\\\\102.9199\\\\331.01\\\\0.597745\\\\104.9199\\\\331.01\\\\0.9673102\\\\106.4199\\\\331.01\\\\1.519122\\\\107.9199\\\\331.01\\\\2.036951\\\\108.9199\\\\331.01\\\\3.078096\\\\110.4199\\\\331.01\\\\4.635788\\\\111.9904\\\\331.01\\\\6.135788\\\\113.0392\\\\331.01\\\\8.135789\\\\113.9587\\\\331.01\\\\10.13579\\\\114.498\\\\331.01\\\\11.63579\\\\114.6167\\\\331.01\\\\13.63579\\\\114.5292\\\\331.01\\\\15.63579\\\\114.0422\\\\331.01\\\\17.63579\\\\113.1466\\\\331.01\\\\18.63579\\\\112.5479\\\\331.01\\\\20.45336\\\\110.9199\\\\331.01\\\\21.30042\\\\109.9199\\\\331.01\\\\22.23238\\\\108.4199\\\\331.01\\\\22.67556\\\\107.4199\\\\331.01\\\\23.266\\\\105.4199\\\\331.01\\\\23.41296\\\\103.9199\\\\331.01\\\\23.39122\\\\101.9199\\\\331.01\\\\23.1847\\\\100.4199\\\\331.01\\\\22.73905\\\\98.91986\\\\331.01\"\n"
+"                     }\n"
+"                  },\n"
+"                  {\n"
+"                     \"3006,0016\" : {\n"
+"                        \"Name\" : \"ContourImageSequence\",\n"
+"                        \"Type\" : \"Sequence\",\n"
+"                        \"Value\" : [\n"
+"                           {\n"
+"                              \"0008,1150\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
+"                              },\n"
+"                              \"0008,1155\" : {\n"
+"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
+"                                 \"Type\" : \"String\",\n"
+"                                 \"Value\" : \"\"\n"
+"                              }\n"
+"                           }\n"
+"                        ]\n"
+"                     },\n"
+"                     \"3006,0042\" : {\n"
+"                        \"Name\" : \"ContourGeometricType\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"CLOSED_PLANAR\"\n"
+"                     },\n"
+"                     \"3006,0046\" : {\n"
+"                        \"Name\" : \"NumberOfContourPoints\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"37\"\n"
+"                     },\n"
+"                     \"3006,0048\" : {\n"
+"                        \"Name\" : \"ContourNumber\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"40\"\n"
+"                     },\n"
+"                     \"3006,0050\" : {\n"
+"                        \"Name\" : \"ContourData\",\n"
+"                        \"Type\" : \"String\",\n"
+"                        \"Value\" : \"74.53024\\\\152.9199\\\\331.01\\\\74.26877\\\\150.4199\\\\331.01\\\\73.81514\\\\148.9199\\\\331.01\\\\72.83221\\\\146.9199\\\\331.01\\\\71.73194\\\\145.4199\\\\331.01\\\\70.63579\\\\144.3343\\\\331.01\\\\69.13579\\\\143.2472\\\\331.01\\\\67.13579\\\\142.2623\\\\331.01\\\\65.63579\\\\141.8188\\\\331.01\\\\63.13579\\\\141.581\\\\331.01\\\\60.63579\\\\141.7975\\\\331.01\\\\59.13579\\\\142.2188\\\\331.01\\\\57.63579\\\\142.8559\\\\331.01\\\\56.13579\\\\143.804\\\\331.01\\\\55.40785\\\\144.4199\\\\331.01\\\\53.99204\\\\145.9199\\\\331.01\\\\53.00511\\\\147.4199\\\\331.01\\\\51.98905\\\\149.9199\\\\331.01\\\\51.54905\\\\151.9199\\\\331.01\\\\51.52641\\\\153.9199\\\\331.01\\\\52.04536\\\\156.4199\\\\331.01\\\\52.89742\\\\158.4199\\\\331.01\\\\53.47115\\\\159.4199\\\\331.01\\\\54.63579\\\\160.8652\\\\331.01\\\\56.63579\\\\162.6044\\\\331.01\\\\58.13579\\\\163.4489\\\\331.01\\\\59.63579\\\\164.0449\\\\331.01\\\\61.63579\\\\164.5168\\\\331.01\\\\63.13579\\\\164.5917\\\\331.01\\\\64.63579\\\\164.4964\\\\331.01\\\\66.63579\\\\164.0014\\\\331.01\\\\68.63579\\\\163.1234\\\\331.01\\\\70.40923\\\\161.9199\\\\331.01\\\\71.63579\\\\160.736\\\\331.01\\\\72.67847\\\\159.4199\\\\331.01\\\\73.72818\\\\157.4199\\\\331.01\\\\74.21391\\\\155.9199\\\\331.01\"\n"
+"                     }\n"
+"                  }\n"
+"               ]\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"11\"\n"
+"            }\n"
+"         }\n"
+"      ]\n"
+"   },\n"
+"   \"3006,0080\" : {\n"
+"      \"Name\" : \"RTROIObservationsSequence\",\n"
+"      \"Type\" : \"Sequence\",\n"
+"      \"Value\" : [\n"
+"         {\n"
+"            \"3006,0082\" : {\n"
+"               \"Name\" : \"ObservationNumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1\"\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"1\"\n"
+"            },\n"
+"            \"3006,0085\" : {\n"
+"               \"Name\" : \"ROIObservationLabel\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"LN300\"\n"
+"            },\n"
+"            \"3006,00a4\" : {\n"
+"               \"Name\" : \"RTROIInterpretedType\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"ORGAN\"\n"
+"            },\n"
+"            \"3006,00a6\" : {\n"
+"               \"Name\" : \"ROIInterpreter\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0082\" : {\n"
+"               \"Name\" : \"ObservationNumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"2\"\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"2\"\n"
+"            },\n"
+"            \"3006,0085\" : {\n"
+"               \"Name\" : \"ROIObservationLabel\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"Cortical Bone\"\n"
+"            },\n"
+"            \"3006,00a4\" : {\n"
+"               \"Name\" : \"RTROIInterpretedType\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"ORGAN\"\n"
+"            },\n"
+"            \"3006,00a6\" : {\n"
+"               \"Name\" : \"ROIInterpreter\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0082\" : {\n"
+"               \"Name\" : \"ObservationNumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"3\"\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"3\"\n"
+"            },\n"
+"            \"3006,0085\" : {\n"
+"               \"Name\" : \"ROIObservationLabel\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"Adipose\"\n"
+"            },\n"
+"            \"3006,00a4\" : {\n"
+"               \"Name\" : \"RTROIInterpretedType\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"ORGAN\"\n"
+"            },\n"
+"            \"3006,00a6\" : {\n"
+"               \"Name\" : \"ROIInterpreter\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0082\" : {\n"
+"               \"Name\" : \"ObservationNumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"4\"\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"4\"\n"
+"            },\n"
+"            \"3006,0085\" : {\n"
+"               \"Name\" : \"ROIObservationLabel\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"CB2-50%\"\n"
+"            },\n"
+"            \"3006,00a4\" : {\n"
+"               \"Name\" : \"RTROIInterpretedType\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"ORGAN\"\n"
+"            },\n"
+"            \"3006,00a6\" : {\n"
+"               \"Name\" : \"ROIInterpreter\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0082\" : {\n"
+"               \"Name\" : \"ObservationNumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"5\"\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"5\"\n"
+"            },\n"
+"            \"3006,0085\" : {\n"
+"               \"Name\" : \"ROIObservationLabel\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"Water\"\n"
+"            },\n"
+"            \"3006,00a4\" : {\n"
+"               \"Name\" : \"RTROIInterpretedType\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"ORGAN\"\n"
+"            },\n"
+"            \"3006,00a6\" : {\n"
+"               \"Name\" : \"ROIInterpreter\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0082\" : {\n"
+"               \"Name\" : \"ObservationNumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"6\"\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"10\"\n"
+"            },\n"
+"            \"3006,0085\" : {\n"
+"               \"Name\" : \"ROIObservationLabel\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"External\"\n"
+"            },\n"
+"            \"3006,00a4\" : {\n"
+"               \"Name\" : \"RTROIInterpretedType\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"EXTERNAL\"\n"
+"            },\n"
+"            \"3006,00a6\" : {\n"
+"               \"Name\" : \"ROIInterpreter\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"\"\n"
+"            }\n"
+"         },\n"
+"         {\n"
+"            \"3006,0082\" : {\n"
+"               \"Name\" : \"ObservationNumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"7\"\n"
+"            },\n"
+"            \"3006,0084\" : {\n"
+"               \"Name\" : \"ReferencedROINumber\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"11\"\n"
+"            },\n"
+"            \"3006,0085\" : {\n"
+"               \"Name\" : \"ROIObservationLabel\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"PTV\"\n"
+"            },\n"
+"            \"3006,00a4\" : {\n"
+"               \"Name\" : \"RTROIInterpretedType\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"PTV\"\n"
+"            },\n"
+"            \"3006,00a6\" : {\n"
+"               \"Name\" : \"ROIInterpreter\",\n"
+"               \"Type\" : \"String\",\n"
+"               \"Value\" : \"\"\n"
+"            }\n"
+"         }\n"
+"      ]\n"
+"   },\n"
+"   \"300e,0002\" : {\n"
+"      \"Name\" : \"ApprovalStatus\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"APPROVED\"\n"
+"   },\n"
+"   \"300e,0004\" : {\n"
+"      \"Name\" : \"ReviewDate\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"20190318\"\n"
+"   },\n"
+"   \"300e,0005\" : {\n"
+"      \"Name\" : \"ReviewTime\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"182558\"\n"
+"   },\n"
+"   \"300e,0008\" : {\n"
+"      \"Name\" : \"ReviewerName\",\n"
+"      \"Type\" : \"String\",\n"
+"      \"Value\" : \"ONC_jwulff2\"\n"
+"   }\n"
+"}\n"
+"";
+
+#ifdef _MSC_VER
+#pragma endregion
+#endif
+// _MSC_VER
+
+/*
+these tests are single-threaded... no worries for old buggy compilers
+(I'm talking to YOU, cl.exe v100! And to your ancestors!)
+*/
+static std::string& GetTestJson()
+{
+  static const char* resultRaw = NULL;
+  static std::string result;
+  if (resultRaw == NULL)
+  {
+    std::stringstream sst;
+
+    sst << k_rtStruct_json00
+      << k_rtStruct_json01
+      << k_rtStruct_json02
+      << k_rtStruct_json03
+      << k_rtStruct_json04
+      << k_rtStruct_json05
+      << k_rtStruct_json06
+      << k_rtStruct_json07
+      << k_rtStruct_json08;
+
+    std::string wholeBody = sst.str();
+    result.swap(wholeBody);
+    resultRaw = result.c_str();
+  }
+  return result;
+}
+
+#define STONE_ARRAY_SIZE(arr)     (sizeof(arr) / sizeof((arr)[0]))
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+static void CheckGroundTruth(
+  const std::vector<OrthancStone::DicomStructure2>& structures,
+  const size_t structureIndex,
+  const size_t sliceIndex,
+  std::vector<double> groundTruth)
+{
+  const std::vector<DicomStructurePolygon2>& polygonsForThisStruct = structures.at(structureIndex).GetPolygons();
+  const DicomStructurePolygon2& polygon = polygonsForThisStruct.at(sliceIndex);
+
+  //double groundTruth[] = { 7.657838, 108.2725, 304.01, 6.826687, 107.4413, 304.01, 6.152492, 106.4785, 304.01, 5.655735, 105.4132, 304.01, 5.351513, 104.2778, 304.01, 5.249068, 103.1069, 304.01, 5.351513, 101.9359, 304.01, 5.655735, 100.8005, 304.01, 6.152492, 99.73524, 304.01, 6.826687, 98.77239, 304.01, 7.657838, 97.94124, 304.01, 8.620689, 97.26704, 304.01, 9.685987, 96.77029, 304.01, 10.82136, 96.46606, 304.01, 11.99231, 96.36362, 304.01, 13.16326, 96.46606, 304.01, 14.29864, 96.77029, 304.01, 15.36393, 97.26704, 304.01, 16.32678, 97.94124, 304.01, 17.15794, 98.77239, 304.01, 17.83213, 99.73524, 304.01, 18.32889, 100.8005, 304.01, 18.63311, 101.9359, 304.01, 18.73555, 103.1069, 304.01, 18.63311, 104.2778, 304.01, 18.32889, 105.4132, 304.01, 17.83213, 106.4785, 304.01, 17.15794, 107.4413, 304.01, 16.32678, 108.2725, 304.01, 15.36393, 108.9467, 304.01, 14.29864, 109.4434, 304.01, 13.16326, 109.7477, 304.01, 11.99231, 109.8501, 304.01, 10.82136, 109.7477, 304.01, 9.685987, 109.4434, 304.01, 8.620689, 108.9467, 304.01 };
+  size_t groundTruthItems = groundTruth.size();
+
+  size_t pointCount = 3 * polygon.GetPointCount();
+
+  EXPECT_EQ(groundTruthItems, pointCount);
+
+  for (size_t i = 0; i < polygon.GetPointCount(); ++i)
+  {
+    const Point3D& point = polygon.GetPoint(i);
+
+    // loop over X, Y then Z.
+    for (size_t j = 0; j < 3; ++j)
+    {
+      size_t index = 3 * i + j;
+      ASSERT_LT(index, groundTruthItems);
+      bool isNear = LinearAlgebra::IsNear(groundTruth[index], point[j]);
+      EXPECT_TRUE(isNear);
+    }
+  }
+}
+
+
+TEST(StructureSet, ReadFromJsonThatsAll)
+{
+  DicomStructureSet2 structureSet;
+
+  OrthancPlugins::FullOrthancDataset dicom(GetTestJson());
+  //loader.content_.reset(new DicomStructureSet(dicom));
+  structureSet.Clear();
+
+  structureSet.FillStructuresFromDataset(dicom);
+  structureSet.ComputeDependentProperties();
+
+  const std::vector<DicomStructure2>& structures = structureSet.structures_;
+
+  /*
+
+  ██████╗  █████╗ ███████╗██╗ ██████╗     ██████╗██╗  ██╗███████╗ ██████╗██╗  ██╗███████╗
+  ██╔══██╗██╔══██╗██╔════╝██║██╔════╝    ██╔════╝██║  ██║██╔════╝██╔════╝██║ ██╔╝██╔════╝
+  ██████╔╝███████║███████╗██║██║         ██║     ███████║█████╗  ██║     █████╔╝ ███████╗
+  ██╔══██╗██╔══██║╚════██║██║██║         ██║     ██╔══██║██╔══╝  ██║     ██╔═██╗ ╚════██║
+  ██████╔╝██║  ██║███████║██║╚██████╗    ╚██████╗██║  ██║███████╗╚██████╗██║  ██╗███████║
+  ╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝ ╚═════╝     ╚═════╝╚═╝  ╚═╝╚══════╝ ╚═════╝╚═╝  ╚═╝╚══════╝
+  http://patorjk.com/software/taag/#p=display&f=ANSI%20Shadow&t=BASIC%20CHECKS
+  */
+
+  // (0x3006, 0x0080) seq. size
+  EXPECT_EQ(7, structures.size());
+
+  // (0x3006, 0x0080)[i]/(0x3006, 0x00a4)
+  for (size_t i = 0; i < 5; ++i)
+  {
+    EXPECT_EQ(std::string("ORGAN"), structures[i].interpretation_);
+  }
+  EXPECT_EQ(std::string("EXTERNAL"), structures[5].interpretation_);
+  EXPECT_EQ(std::string("PTV"), structures[6].interpretation_);
+
+  // (0x3006, 0x0020)[i]/(0x3006, 0x0026)
+  EXPECT_EQ(std::string("LN300"), structures[0].name_);
+  EXPECT_EQ(std::string("Cortical Bone"), structures[1].name_);
+  EXPECT_EQ(std::string("Adipose"), structures[2].name_);
+  EXPECT_EQ(std::string("CB2-50%"), structures[3].name_);
+  EXPECT_EQ(std::string("Water"), structures[4].name_);
+  EXPECT_EQ(std::string("External"), structures[5].name_);
+  EXPECT_EQ(std::string("PTV"), structures[6].name_);
+
+  // (0x3006, 0x0039)[i]/(0x3006, 0x002a)
+  EXPECT_EQ(0xff, structures[0].red_);
+  EXPECT_EQ(0x00, structures[0].green_);
+  EXPECT_EQ(0x00, structures[0].blue_);
+
+  EXPECT_EQ(0x00, structures[1].red_);
+  EXPECT_EQ(0xff, structures[1].green_);
+  EXPECT_EQ(0xff, structures[1].blue_);
+
+  // ...
+
+  EXPECT_EQ(0x00, structures[5].red_);
+  EXPECT_EQ(0x80, structures[5].green_);
+  EXPECT_EQ(0x00, structures[5].blue_);
+
+  EXPECT_EQ(0xff, structures[6].red_);
+  EXPECT_EQ(0x00, structures[6].green_);
+  EXPECT_EQ(0xff, structures[6].blue_);
+
+  /*
+
+   ██████╗ ███████╗ ██████╗ ███╗   ███╗███████╗████████╗██████╗ ██╗   ██╗
+  ██╔════╝ ██╔════╝██╔═══██╗████╗ ████║██╔════╝╚══██╔══╝██╔══██╗╚██╗ ██╔╝
+  ██║  ███╗█████╗  ██║   ██║██╔████╔██║█████╗     ██║   ██████╔╝ ╚████╔╝
+  ██║   ██║██╔══╝  ██║   ██║██║╚██╔╝██║██╔══╝     ██║   ██╔══██╗  ╚██╔╝
+  ╚██████╔╝███████╗╚██████╔╝██║ ╚═╝ ██║███████╗   ██║   ██║  ██║   ██║
+   ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝     ╚═╝╚══════╝   ╚═╝   ╚═╝  ╚═╝   ╚═╝
+  http://patorjk.com/software/taag/#p=display&f=ANSI%20Shadow&t=BASIC%20CHECKS
+  */
+
+
+  {
+    double groundTruthRaw[] = { 7.657838, 108.2725, 304.01, 6.826687, 107.4413, 304.01, 6.152492, 106.4785, 304.01, 5.655735, 105.4132, 304.01, 5.351513, 104.2778, 304.01, 5.249068, 103.1069, 304.01, 5.351513, 101.9359, 304.01, 5.655735, 100.8005, 304.01, 6.152492, 99.73524, 304.01, 6.826687, 98.77239, 304.01, 7.657838, 97.94124, 304.01, 8.620689, 97.26704, 304.01, 9.685987, 96.77029, 304.01, 10.82136, 96.46606, 304.01, 11.99231, 96.36362, 304.01, 13.16326, 96.46606, 304.01, 14.29864, 96.77029, 304.01, 15.36393, 97.26704, 304.01, 16.32678, 97.94124, 304.01, 17.15794, 98.77239, 304.01, 17.83213, 99.73524, 304.01, 18.32889, 100.8005, 304.01, 18.63311, 101.9359, 304.01, 18.73555, 103.1069, 304.01, 18.63311, 104.2778, 304.01, 18.32889, 105.4132, 304.01, 17.83213, 106.4785, 304.01, 17.15794, 107.4413, 304.01, 16.32678, 108.2725, 304.01, 15.36393, 108.9467, 304.01, 14.29864, 109.4434, 304.01, 13.16326, 109.7477, 304.01, 11.99231, 109.8501, 304.01, 10.82136, 109.7477, 304.01, 9.685987, 109.4434, 304.01, 8.620689, 108.9467, 304.01 };
+    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
+    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
+    CheckGroundTruth(structures, 0, 0, groundTruth);
+  }
+  {
+    double groundTruthRaw[] = { 7.657838, 108.2725, 310.01, 6.826687, 107.4413, 310.01, 6.152492, 106.4785, 310.01, 5.655735, 105.4132, 310.01, 5.351513, 104.2778, 310.01, 5.249068, 103.1069, 310.01, 5.351513, 101.9359, 310.01, 5.655735, 100.8005, 310.01, 6.152492, 99.73524, 310.01, 6.826687, 98.77239, 310.01, 7.657838, 97.94124, 310.01, 8.620689, 97.26704, 310.01, 9.685987, 96.77029, 310.01, 10.82136, 96.46606, 310.01, 11.99231, 96.36362, 310.01, 13.16326, 96.46606, 310.01, 14.29864, 96.77029, 310.01, 15.36393, 97.26704, 310.01, 16.32678, 97.94124, 310.01, 17.15794, 98.77239, 310.01, 17.83213, 99.73524, 310.01, 18.32889, 100.8005, 310.01, 18.63311, 101.9359, 310.01, 18.73555, 103.1069, 310.01, 18.63311, 104.2778, 310.01, 18.32889, 105.4132, 310.01, 17.83213, 106.4785, 310.01, 17.15794, 107.4413, 310.01, 16.32678, 108.2725, 310.01, 15.36393, 108.9467, 310.01, 14.29864, 109.4434, 310.01, 13.16326, 109.7477, 310.01, 11.99231, 109.8501, 310.01, 10.82136, 109.7477, 310.01, 9.685987, 109.4434, 310.01, 8.620689, 108.9467, 310.01 };
+    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
+    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
+    CheckGroundTruth(structures, 0, 2, groundTruth);
+  }
+  {
+    double groundTruthRaw[] = { -37.967, 161.9664, 304.01, -39.10237, 161.6622, 304.01, -40.16767, 161.1655, 304.01, -41.13052, 160.4913, 304.01, -41.96167, 159.6601, 304.01, -42.63587, 158.6973, 304.01, -43.13263, 157.632, 304.01, -43.43685, 156.4966, 304.01, -43.53929, 155.3257, 304.01, -43.43685, 154.1547, 304.01, -43.13263, 153.0193, 304.01, -42.63587, 151.954, 304.01, -41.96167, 150.9912, 304.01, -41.13052, 150.16, 304.01, -40.16767, 149.4858, 304.01, -39.10237, 148.9891, 304.01, -37.967, 148.6849, 304.01, -36.79605, 148.5824, 304.01, -35.6251, 148.6849, 304.01, -34.48972, 148.9891, 304.01, -33.42443, 149.4858, 304.01, -32.46157, 150.16, 304.01, -31.63042, 150.9912, 304.01, -30.95623, 151.954, 304.01, -30.45947, 153.0193, 304.01, -30.15525, 154.1547, 304.01, -30.0528, 155.3257, 304.01, -30.15525, 156.4966, 304.01, -30.45947, 157.632, 304.01, -30.95623, 158.6973, 304.01, -31.63042, 159.6601, 304.01, -32.46157, 160.4913, 304.01, -33.42443, 161.1655, 304.01, -34.48972, 161.6622, 304.01, -35.6251, 161.9664, 304.01, -36.79605, 162.0689, 304.01 };
+    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
+    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
+    CheckGroundTruth(structures, 1, 0, groundTruth);
+  }
+  {
+    double groundTruthRaw[] = { 69.4042, 150.7324, 307.01, 69.70842, 151.8678, 307.01, 69.81087, 153.0387, 307.01, 69.70842, 154.2097, 307.01, 69.4042, 155.345, 307.01, 68.90745, 156.4103, 307.01, 68.23325, 157.3732, 307.01, 67.4021, 158.2043, 307.01, 66.43925, 158.8785, 307.01, 65.37395, 159.3753, 307.01, 64.23858, 159.6795, 307.01, 63.06762, 159.7819, 307.01, 61.89667, 159.6795, 307.01, 60.7613, 159.3753, 307.01, 59.696, 158.8785, 307.01, 58.73315, 158.2043, 307.01, 57.902, 157.3732, 307.01, 57.22781, 156.4103, 307.01, 56.73105, 155.345, 307.01, 56.42683, 154.2097, 307.01, 56.32438, 153.0387, 307.01, 56.42683, 151.8678, 307.01, 56.73105, 150.7324, 307.01, 57.22781, 149.6671, 307.01, 57.902, 148.7042, 307.01, 58.73315, 147.8731, 307.01, 59.696, 147.1989, 307.01, 60.7613, 146.7021, 307.01, 61.89667, 146.3979, 307.01, 63.06762, 146.2955, 307.01, 64.23858, 146.3979, 307.01, 65.37395, 146.7021, 307.01, 66.43925, 147.1989, 307.01, 67.4021, 147.8731, 307.01, 68.23325, 148.7042, 307.01, 68.90745, 149.6671, 307.01 };
+    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
+    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
+    CheckGroundTruth(structures, 2, 1, groundTruth);
+  }
+
+  {
+    double groundTruthRaw[] = { 108.3984, 232.7406, 274.01, 106.0547, 231.7948, 274.01, 103.7109, 232.8407, 274.01, 96.67969, 232.8757, 274.01, 77.92969, 232.887, 274.01, 47.46094, 232.8902, 274.01, 38.08594, 232.7537, 274.01, 37.6668, 232.3734, 274.01, 38.08594, 231.9774, 274.01, 40.42969, 231.8475, 274.01, 41.76413, 230.0297, 274.01, 42.77344, 229.1388, 274.01, 45.11719, 228.5069, 274.01, 47.46094, 227.1533, 274.01, 49.80469, 226.3505, 274.01, 52.14844, 224.6564, 274.01, 54.49219, 223.923, 274.01, 56.83594, 222.0692, 274.01, 59.17969, 220.3438, 274.01, 61.52344, 219.3888, 274.01, 63.86719, 217.1287, 274.01, 65.83488, 215.9672, 274.01, 68.55469, 213.2383, 274.01, 70.89844, 211.2328, 274.01, 72.8125, 208.9359, 274.01, 75.58594, 206.3615, 274.01, 76.91445, 204.2484, 274.01, 78.89509, 201.9047, 274.01, 80.51276, 199.5609, 274.01, 81.51955, 197.2172, 274.01, 83.67448, 194.8734, 274.01, 84.60938, 192.5297, 274.01, 85.86986, 190.1859, 274.01, 86.57623, 187.8422, 274.01, 88.30051, 185.4984, 274.01, 88.94002, 183.1547, 274.01, 89.23261, 180.8109, 274.01, 89.64844, 180.3263, 274.01, 90.71885, 178.4672, 274.01, 90.97656, 176.1234, 274.01, 91.99219, 174.4794, 274.01, 92.56773, 173.7797, 274.01, 92.80016, 171.4359, 274.01, 93.23473, 169.0922, 274.01, 93.37606, 166.7484, 274.01, 93.60748, 157.3734, 274.01, 93.6341, 152.6859, 274.01, 93.35742, 140.9672, 274.01, 92.89317, 138.6234, 274.01, 92.7069, 136.2797, 274.01, 92.03726, 133.9359, 274.01, 90.84009, 131.5922, 274.01, 90.3769, 129.2484, 274.01, 89.09074, 126.9047, 274.01, 88.13225, 122.2172, 274.01, 86.17828, 119.8734, 274.01, 84.96094, 117.4163, 274.01, 83.99619, 115.1859, 274.01, 83.13079, 112.8422, 274.01, 82.61719, 112.2984, 274.01, 80.27344, 108.8454, 274.01, 79.64514, 108.1547, 274.01, 77.21497, 105.8109, 274.01, 76.47787, 103.4672, 274.01, 75.58594, 102.6177, 274.01, 73.24219, 100.0077, 274.01, 69.54492, 96.43594, 274.01, 67.34096, 94.09219, 274.01, 64.66306, 91.74844, 274.01, 63.86719, 90.92619, 274.01, 61.52344, 90.20454, 274.01, 59.17969, 87.78574, 274.01, 56.83594, 86.48566, 274.01, 54.49219, 84.31388, 274.01, 52.14844, 83.44438, 274.01, 49.80469, 82.75121, 274.01, 49.37617, 82.37344, 274.01, 47.46094, 81.26244, 274.01, 45.71391, 80.02969, 274.01, 45.11719, 79.45415, 274.01, 42.77344, 79.08185, 274.01, 40.42969, 78.51941, 274.01, 38.08594, 78.27534, 274.01, 37.36932, 77.68594, 274.01, 35.74219, 76.67624, 274.01, 33.39844, 76.49941, 274.01, 31.05469, 76.03495, 274.01, 28.71094, 74.83174, 274.01, 26.36719, 74.62859, 274.01, 24.02344, 74.55463, 274.01, 21.67969, 74.22861, 274.01, 19.33594, 74.05312, 274.01, 12.30469, 73.99397, 274.01, 5.273438, 74.0736, 274.01, 2.929688, 74.55463, 274.01, 0.5859375, 74.68513, 274.01, -1.757813, 74.914, 274.01, -2.319131, 75.34219, 274.01, -4.101563, 76.31516, 274.01, -8.789063, 76.74514, 274.01, -11.13281, 78.39038, 274.01, -13.47656, 78.6124, 274.01, -15.82031, 79.19784, 274.01, -18.16406, 81.11024, 274.01, -20.50781, 82.03296, 274.01, -22.85156, 83.13991, 274.01, -25.19531, 83.70732, 274.01, -27.53906, 85.85863, 274.01, -29.88281, 87.03368, 274.01, -32.22656, 88.3274, 274.01, -34.57031, 90.53674, 274.01, -36.91406, 92.5602, 274.01, -39.25781, 93.55952, 274.01, -41.60156, 95.74537, 274.01, -43.94531, 98.26609, 274.01, -46.28906, 100.3701, 274.01, -47.02621, 101.1234, 274.01, -47.86611, 103.4672, 274.01, -49.83594, 105.8109, 274.01, -51.98182, 108.1547, 274.01, -53.06448, 110.4984, 274.01, -53.32031, 110.7675, 274.01, -54.53804, 112.8422, 274.01, -55.66406, 114.273, 274.01, -56.55722, 115.1859, 274.01, -57.13953, 117.5297, 274.01, -58.29264, 119.8734, 274.01, -59.26869, 122.2172, 274.01, -60.35156, 124.0119, 274.01, -60.84229, 124.5609, 274.01, -61.54484, 126.9047, 274.01, -61.71691, 129.2484, 274.01, -63.62281, 131.5922, 274.01, -63.81256, 133.9359, 274.01, -64.12511, 136.2797, 274.01, -64.84515, 138.6234, 274.01, -65.13599, 140.9672, 274.01, -65.33604, 143.3109, 274.01, -65.87358, 145.6547, 274.01, -66.10577, 147.9984, 274.01, -66.17618, 155.0297, 274.01, -66.09933, 162.0609, 274.01, -65.40382, 164.4047, 274.01, -65.24833, 166.7484, 274.01, -64.71442, 171.4359, 274.01, -63.88171, 173.7797, 274.01, -63.69299, 176.1234, 274.01, -61.79081, 178.4672, 274.01, -61.59269, 180.8109, 274.01, -61.19405, 183.1547, 274.01, -60.35156, 185.2055, 274.01, -59.08288, 187.8422, 274.01, -58.00781, 189.3499, 274.01, -57.25858, 190.1859, 274.01, -56.64558, 192.5297, 274.01, -55.29191, 194.8734, 274.01, -54.28698, 197.2172, 274.01, -52.28595, 199.5609, 274.01, -51.47569, 201.9047, 274.01, -48.63281, 204.6417, 274.01, -47.10181, 206.5922, 274.01, -44.64154, 208.9359, 274.01, -42.38504, 211.2797, 274.01, -39.25781, 214.4025, 274.01, -37.42723, 215.9672, 274.01, -34.57031, 218.9107, 274.01, -32.22656, 219.7277, 274.01, -29.88281, 221.6934, 274.01, -27.53906, 222.852, 274.01, -25.19531, 224.5168, 274.01, -22.85156, 225.9419, 274.01, -20.50781, 226.7359, 274.01, -18.16406, 228.3332, 274.01, -15.82031, 229.065, 274.01, -13.47656, 229.267, 274.01, -12.63854, 230.0297, 274.01, -11.13281, 231.9201, 274.01, -10.65505, 232.3734, 274.01, -11.13281, 232.7794, 274.01, -15.82031, 232.792, 274.01, -18.16406, 232.8902, 274.01, -36.91406, 232.9015, 274.01, -39.25781, 232.8902, 274.01, -50.97656, 232.9236, 274.01, -60.35156, 232.9126, 274.01, -67.38281, 232.8407, 274.01, -72.07031, 232.8642, 274.01, -79.10156, 232.8555, 274.01, -83.78906, 232.8788, 274.01, -95.50781, 232.8902, 274.01, -97.85156, 233.4886, 274.01, -100.1953, 233.647, 274.01, -102.5391, 232.9858, 274.01, -104.8828, 233.6969, 274.01, -109.5703, 233.722, 274.01, -125.9766, 233.7086, 274.01, -128.3203, 233.2849, 274.01, -130.6641, 233.702, 274.01, -135.3516, 233.727, 274.01, -149.4141, 233.7135, 274.01, -156.4453, 233.727, 274.01, -163.4766, 233.7119, 274.01, -168.1641, 233.7643, 274.01, -191.6016, 233.7809, 274.01, -210.3516, 233.7716, 274.01, -224.4141, 233.7998, 274.01, -233.7891, 233.7647, 274.01, -243.1641, 233.7785, 274.01, -247.8516, 233.7378, 274.01, -254.8828, 233.8578, 274.01, -257.2266, 235.2519, 274.01, -259.5703, 236.0817, 274.01, -260.7617, 237.0609, 274.01, -261.9141, 238.2262, 274.01, -262.8989, 239.4047, 274.01, -262.9743, 241.7484, 274.01, -262.5977, 244.0922, 274.01, -260.6675, 246.4359, 274.01, -259.6161, 248.7797, 274.01, -257.2266, 251.0035, 274.01, -255.0361, 253.4672, 274.01, -252.5391, 256.0995, 274.01, -251.2277, 258.1547, 274.01, -246.7444, 262.8422, 274.01, -243.1641, 266.3515, 274.01, -239.7411, 269.8734, 274.01, -238.4766, 270.9495, 274.01, -237.2269, 272.2172, 274.01, -236.1328, 273.5215, 274.01, -235.0934, 274.5609, 274.01, -233.7891, 275.6655, 274.01, -232.5319, 276.9047, 274.01, -231.4453, 278.1693, 274.01, -227.917, 281.5922, 274.01, -224.4141, 285.1802, 274.01, -222.0703, 287.4025, 274.01, -218.6841, 290.9672, 274.01, -217.3828, 291.9709, 274.01, -215.0391, 293.1788, 274.01, -212.6953, 294.5138, 274.01, -210.3516, 295.2614, 274.01, -209.8994, 295.6547, 274.01, -208.0078, 296.7083, 274.01, -203.3203, 296.9372, 274.01, -196.2891, 296.9317, 274.01, -193.9453, 296.8988, 274.01, -172.8516, 296.8482, 274.01, -161.1328, 296.843, 274.01, -137.6953, 296.8542, 274.01, -130.6641, 296.8378, 274.01, -107.2266, 296.8379, 274.01, -93.16406, 296.8208, 274.01, -74.41406, 296.838, 274.01, -65.03906, 296.8609, 274.01, -50.97656, 296.8556, 274.01, -46.28906, 296.9051, 274.01, -41.60156, 298.5331, 274.01, -39.25781, 298.5624, 274.01, -36.91406, 297.1455, 274.01, -34.57031, 297.0498, 274.01, -32.22656, 298.5589, 274.01, -25.19531, 298.5624, 274.01, -22.85156, 297.2842, 274.01, -20.50781, 298.5624, 274.01, -1.757813, 298.5624, 274.01, 0.5859375, 297.2104, 274.01, 2.929688, 298.5624, 274.01, 5.273438, 297.6946, 274.01, 7.617188, 298.5168, 274.01, 9.960938, 298.5512, 274.01, 12.30469, 296.937, 274.01, 14.64844, 298.5478, 274.01, 16.99219, 298.5478, 274.01, 19.33594, 297.0782, 274.01, 21.67969, 296.844, 274.01, 23.54531, 297.9984, 274.01, 24.02344, 298.4023, 274.01, 24.50156, 297.9984, 274.01, 26.36719, 296.844, 274.01, 38.08594, 296.8381, 274.01, 52.14844, 296.8033, 274.01, 59.17969, 296.8033, 274.01, 73.24219, 296.7682, 274.01, 99.02344, 296.7566, 274.01, 117.7734, 296.7216, 274.01, 129.4922, 296.7152, 274.01, 131.8359, 295.9083, 274.01, 134.1797, 295.5245, 274.01, 138.8672, 295.4763, 274.01, 155.2734, 295.4763, 274.01, 176.3672, 295.3861, 274.01, 190.4297, 295.3718, 274.01, 197.4609, 295.4763, 274.01, 202.1484, 295.4454, 274.01, 204.4922, 295.3438, 274.01, 206.8359, 295.0757, 274.01, 209.1797, 294.4124, 274.01, 211.5234, 292.3133, 274.01, 213.8672, 291.0809, 274.01, 216.2109, 289.6743, 274.01, 217.3081, 288.6234, 274.01, 219.3558, 286.2797, 274.01, 221.8608, 283.9359, 274.01, 225.5859, 280.045, 274.01, 227.9297, 277.8885, 274.01, 230.2734, 275.2857, 274.01, 232.6172, 273.2225, 274.01, 233.6225, 272.2172, 274.01, 234.9609, 270.5822, 274.01, 238.2254, 267.5297, 274.01, 240.3691, 265.1859, 274.01, 244.3359, 261.3326, 274.01, 246.6797, 258.8034, 274.01, 249.0234, 256.7196, 274.01, 251.3672, 254.0746, 274.01, 254.5313, 251.1234, 274.01, 255.333, 248.7797, 274.01, 257.3723, 246.4359, 274.01, 259.7201, 244.0922, 274.01, 260.106, 241.7484, 274.01, 261.6423, 239.4047, 274.01, 261.0804, 237.0609, 274.01, 259.3552, 234.7172, 274.01, 258.3984, 233.7696, 274.01, 256.0547, 232.8757, 274.01, 253.7109, 232.792, 274.01, 251.3672, 232.8161, 274.01, 246.6797, 232.6981, 274.01, 244.3359, 232.725, 274.01, 239.6484, 232.9137, 274.01, 234.9609, 232.8525, 274.01, 225.5859, 232.8757, 274.01, 209.1797, 232.8757, 274.01, 204.4922, 232.7537, 274.01, 195.1172, 232.7794, 274.01, 171.6797, 232.792, 274.01, 164.6484, 232.7666, 274.01, 152.9297, 232.7666, 274.01, 148.2422, 232.792, 274.01, 138.8672, 232.7406, 274.01 };
+    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
+    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
+    EXPECT_EQ(340u * 3, groundTruth.size());
+    CheckGroundTruth(structures, 5, 0, groundTruth);
+  }
+
+  {
+    double groundTruthRaw[] = { -18.16406, 233.0632, 298.01, -27.53906, 233.1042, 298.01, -29.88281, 233.0819, 298.01, -34.57031, 233.131, 298.01, -43.94531, 233.1221, 298.01, -50.97656, 233.1736, 298.01, -62.69531, 233.1397, 298.01, -65.03906, 232.8376, 298.01, -69.72656, 232.9839, 298.01, -79.10156, 233.0245, 298.01, -90.82031, 233.0382, 298.01, -93.16406, 233.0859, 298.01, -109.5703, 233.1132, 298.01, -111.9141, 233.1791, 298.01, -114.2578, 233.7139, 298.01, -118.9453, 233.9793, 298.01, -128.3203, 234.0284, 298.01, -130.6641, 233.9793, 298.01, -135.3516, 234.0591, 298.01, -137.6953, 234.0284, 298.01, -142.3828, 234.0855, 298.01, -144.7266, 234.0284, 298.01, -151.7578, 234.002, 298.01, -158.7891, 234.0263, 298.01, -163.4766, 233.9784, 298.01, -165.8203, 234.0072, 298.01, -168.1641, 234.1756, 298.01, -170.5078, 234.2214, 298.01, -179.8828, 234.1934, 298.01, -186.9141, 234.2721, 298.01, -189.2578, 234.2289, 298.01, -193.9453, 234.2431, 298.01, -198.6328, 234.1692, 298.01, -200.9766, 234.2326, 298.01, -205.6641, 234.1271, 298.01, -212.6953, 234.2224, 298.01, -215.0391, 234.1992, 298.01, -222.0703, 234.3115, 298.01, -224.4141, 234.2224, 298.01, -226.7578, 234.2502, 298.01, -233.7891, 234.0906, 298.01, -238.4766, 234.0329, 298.01, -243.1641, 234.0283, 298.01, -247.8516, 233.7949, 298.01, -250.1953, 233.8681, 298.01, -252.5391, 234.7626, 298.01, -254.3469, 237.0609, 298.01, -255.6034, 239.4047, 298.01, -254.5181, 241.7484, 298.01, -254.2274, 244.0922, 298.01, -254.181, 248.7797, 298.01, -253.9355, 251.1234, 298.01, -253.5926, 253.4672, 298.01, -252.7483, 255.8109, 298.01, -250.8092, 258.1547, 298.01, -248.713, 260.4984, 298.01, -246.263, 262.8422, 298.01, -244.1406, 265.1859, 298.01, -241.6671, 267.5297, 298.01, -239.4754, 269.8734, 298.01, -237.0156, 272.2172, 298.01, -233.7891, 275.382, 298.01, -231.4453, 277.8249, 298.01, -229.1016, 279.9981, 298.01, -226.7578, 282.5281, 298.01, -224.4141, 284.6784, 298.01, -222.0703, 287.2355, 298.01, -220.5414, 288.6234, 298.01, -218.2745, 290.9672, 298.01, -217.3828, 291.6508, 298.01, -212.6953, 294.5949, 298.01, -210.3516, 295.3142, 298.01, -208.0078, 296.4674, 298.01, -205.6641, 296.8852, 298.01, -203.3203, 297.1563, 298.01, -196.2891, 297.1488, 298.01, -193.9453, 297.0597, 298.01, -182.2266, 296.9529, 298.01, -168.1641, 296.8576, 298.01, -154.1016, 296.9249, 298.01, -149.4141, 296.8921, 298.01, -128.3203, 296.9228, 298.01, -121.2891, 296.8623, 298.01, -111.9141, 296.8549, 298.01, -107.2266, 296.8266, 298.01, -102.5391, 296.8731, 298.01, -95.50781, 296.8453, 298.01, -88.47656, 296.9218, 298.01, -83.78906, 296.9016, 298.01, -69.72656, 296.979, 298.01, -67.38281, 296.9514, 298.01, -65.03906, 297.2199, 298.01, -62.69531, 296.9622, 298.01, -55.66406, 296.9926, 298.01, -50.97656, 296.9467, 298.01, -48.63281, 297.3652, 298.01, -46.28906, 297.0439, 298.01, -43.94531, 297.2875, 298.01, -39.25781, 297.0121, 298.01, -34.57031, 297.1564, 298.01, -32.22656, 297.3612, 298.01, -29.88281, 297.4229, 298.01, -27.53906, 297.1687, 298.01, -25.19531, 297.4334, 298.01, -18.16406, 297.3612, 298.01, -15.82031, 297.4441, 298.01, -13.47656, 297.4125, 298.01, -11.13281, 297.2468, 298.01, -8.789063, 297.4125, 298.01, -6.445313, 297.373, 298.01, -4.101563, 297.4195, 298.01, -1.757813, 297.077, 298.01, 0.5859375, 297.4229, 298.01, 2.929688, 297.4125, 298.01, 5.273438, 296.9489, 298.01, 7.617188, 297.3168, 298.01, 9.960938, 296.9377, 298.01, 12.30469, 296.8998, 298.01, 14.64844, 297.1975, 298.01, 16.99219, 296.8579, 298.01, 28.71094, 296.878, 298.01, 40.42969, 296.8163, 298.01, 42.77344, 296.8369, 298.01, 49.80469, 296.734, 298.01, 59.17969, 296.6906, 298.01, 61.52344, 296.6365, 298.01, 68.55469, 296.6278, 298.01, 73.24219, 296.5777, 298.01, 75.58594, 296.6191, 298.01, 84.96094, 296.5284, 298.01, 96.67969, 296.5538, 298.01, 103.7109, 296.479, 298.01, 115.4297, 296.4259, 298.01, 122.4609, 296.3434, 298.01, 129.4922, 296.3495, 298.01, 131.8359, 295.9141, 298.01, 136.5234, 296.2256, 298.01, 138.8672, 295.833, 298.01, 143.5547, 295.9857, 298.01, 145.8984, 295.8791, 298.01, 152.9297, 295.833, 298.01, 164.6484, 295.6819, 298.01, 171.6797, 295.6819, 298.01, 181.0547, 295.5401, 298.01, 185.7422, 295.5742, 298.01, 192.7734, 295.557, 298.01, 197.4609, 295.8012, 298.01, 202.1484, 295.6819, 298.01, 204.4922, 295.3698, 298.01, 206.8359, 294.803, 298.01, 209.1797, 294.3656, 298.01, 211.5234, 292.4764, 298.01, 213.8672, 291.1765, 298.01, 216.2109, 289.5873, 298.01, 217.229, 288.6234, 298.01, 218.5547, 287.0752, 298.01, 221.7097, 283.9359, 298.01, 225.5859, 279.8775, 298.01, 227.9297, 277.5633, 298.01, 230.2734, 275.0808, 298.01, 233.1989, 272.2172, 298.01, 234.9609, 270.2887, 298.01, 237.7384, 267.5297, 298.01, 241.9922, 263.0843, 298.01, 244.3359, 260.7643, 298.01, 246.788, 258.1547, 298.01, 249.0234, 255.451, 298.01, 250.3651, 253.4672, 298.01, 251.5297, 251.1234, 298.01, 252.1947, 248.7797, 298.01, 252.4915, 246.4359, 298.01, 252.5755, 241.7484, 298.01, 252.8592, 239.4047, 298.01, 252.9236, 237.0609, 298.01, 252.2924, 234.7172, 298.01, 251.3672, 233.4697, 298.01, 249.0234, 232.882, 298.01, 244.3359, 232.9048, 298.01, 241.9922, 233.0145, 298.01, 232.6172, 232.9048, 298.01, 227.9297, 233.0007, 298.01, 216.2109, 233.0632, 298.01, 211.5234, 233.0537, 298.01, 206.8359, 232.9699, 298.01, 204.4922, 232.7322, 298.01, 199.8047, 232.7186, 298.01, 190.4297, 232.7719, 298.01, 183.3984, 232.7719, 298.01, 181.0547, 232.7322, 298.01, 174.0234, 232.7048, 298.01, 171.6797, 232.7322, 298.01, 166.9922, 232.6908, 298.01, 157.6172, 232.7975, 298.01, 155.2734, 232.7588, 298.01, 148.2422, 232.7875, 298.01, 143.5547, 232.7614, 298.01, 138.8672, 232.6477, 298.01, 124.8047, 232.6179, 298.01, 122.4609, 232.6477, 298.01, 113.0859, 232.6027, 298.01, 110.7422, 232.4552, 298.01, 108.3984, 232.2192, 298.01, 106.0547, 231.6764, 298.01, 103.7109, 231.8559, 298.01, 102.8237, 232.3734, 298.01, 101.3672, 232.9839, 298.01, 99.02344, 233.0951, 298.01, 87.30469, 233.0819, 298.01, 84.96094, 233.1091, 298.01, 80.27344, 233.0726, 298.01, 77.92969, 233.1132, 298.01, 70.89844, 233.1397, 298.01, 68.55469, 233.1132, 298.01, 52.14844, 233.131, 298.01, 45.11719, 233.0859, 298.01, 44.16726, 232.3734, 298.01, 42.77344, 231.0206, 298.01, 42.04498, 230.0297, 298.01, 42.77344, 229.2462, 298.01, 45.11719, 228.5664, 298.01, 47.46094, 227.0695, 298.01, 49.80469, 226.0552, 298.01, 52.14844, 224.5723, 298.01, 54.49219, 223.6857, 298.01, 56.83594, 221.8519, 298.01, 59.17969, 220.2086, 298.01, 61.52344, 218.8854, 298.01, 64.94469, 215.9672, 298.01, 66.21094, 215.0191, 298.01, 67.72036, 213.6234, 298.01, 68.55469, 212.6986, 298.01, 70.89844, 210.5055, 298.01, 74.53191, 206.5922, 298.01, 76.54903, 204.2484, 298.01, 78.26105, 201.9047, 298.01, 80.27344, 198.9262, 298.01, 82.61719, 195.2822, 298.01, 82.98087, 194.8734, 298.01, 84.96094, 190.9255, 298.01, 85.43701, 190.1859, 298.01, 86.33423, 187.8422, 298.01, 87.78722, 185.4984, 298.01, 88.60233, 183.1547, 298.01, 89.10253, 180.8109, 298.01, 90.17504, 178.4672, 298.01, 90.88959, 176.1234, 298.01, 91.43783, 173.7797, 298.01, 92.39601, 171.4359, 298.01, 92.95762, 169.0922, 298.01, 93.55695, 159.7172, 298.01, 93.65527, 157.3734, 298.01, 93.67542, 152.6859, 298.01, 93.61213, 150.3422, 298.01, 93.22542, 143.3109, 298.01, 93.06345, 140.9672, 298.01, 92.77563, 138.6234, 298.01, 91.21714, 133.9359, 298.01, 90.67235, 131.5922, 298.01, 89.88776, 129.2484, 298.01, 88.8737, 126.9047, 298.01, 88.44087, 124.5609, 298.01, 86.09712, 119.8734, 298.01, 85.05786, 117.5297, 298.01, 83.87151, 115.1859, 298.01, 82.22388, 112.8422, 298.01, 81.09117, 110.4984, 298.01, 77.92969, 106.4052, 298.01, 77.3894, 105.8109, 298.01, 75.94332, 103.4672, 298.01, 71.71799, 98.77969, 298.01, 68.55469, 95.65721, 298.01, 63.86719, 91.54878, 298.01, 61.52344, 90.1121, 298.01, 59.17969, 88.15762, 298.01, 56.83594, 86.51503, 298.01, 54.49219, 85.42721, 298.01, 52.14844, 83.64907, 298.01, 49.80469, 82.89023, 298.01, 47.46094, 81.50237, 298.01, 45.11719, 80.62591, 298.01, 42.77344, 79.18153, 298.01, 40.42969, 78.7203, 298.01, 38.08594, 78.1349, 298.01, 35.74219, 77.11755, 298.01, 33.39844, 76.51949, 298.01, 31.05469, 76.07934, 298.01, 26.36719, 74.67744, 298.01, 24.02344, 74.42056, 298.01, 14.64844, 74.07317, 298.01, 9.960938, 74.11538, 298.01, 2.929688, 74.40105, 298.01, 0.5859375, 74.67952, 298.01, -1.757813, 75.31406, 298.01, -4.101563, 76.07065, 298.01, -6.445313, 76.49051, 298.01, -8.789063, 77.17276, 298.01, -11.13281, 78.20097, 298.01, -15.82031, 79.31967, 298.01, -18.16406, 80.76948, 298.01, -20.50781, 81.64266, 298.01, -22.85156, 83.0305, 298.01, -25.19531, 83.7937, 298.01, -27.53906, 85.63515, 298.01, -29.88281, 86.7363, 298.01, -32.22656, 88.36089, 298.01, -34.57031, 90.3302, 298.01, -36.56719, 91.74844, 298.01, -41.60156, 95.93605, 298.01, -46.58845, 101.1234, 298.01, -50.17995, 105.8109, 298.01, -52.10386, 108.1547, 298.01, -53.63992, 110.4984, 298.01, -54.95532, 112.8422, 298.01, -56.64794, 115.1859, 298.01, -57.4403, 117.5297, 298.01, -58.91927, 119.8734, 298.01, -59.78655, 122.2172, 298.01, -61.11754, 124.5609, 298.01, -61.58921, 126.9047, 298.01, -62.38012, 129.2484, 298.01, -63.49118, 131.5922, 298.01, -64.02599, 133.9359, 298.01, -64.3932, 136.2797, 298.01, -65.11897, 138.6234, 298.01, -65.64544, 140.9672, 298.01, -66.23938, 147.9984, 298.01, -66.46289, 152.6859, 298.01, -66.48911, 155.0297, 298.01, -66.34437, 159.7172, 298.01, -65.99894, 164.4047, 298.01, -65.49149, 169.0922, 298.01, -64.6875, 171.4359, 298.01, -63.7739, 176.1234, 298.01, -62.9398, 178.4672, 298.01, -61.86011, 180.8109, 298.01, -61.33423, 183.1547, 298.01, -60.43332, 185.4984, 298.01, -58.00781, 190.0632, 298.01, -56.85406, 192.5297, 298.01, -55.66406, 194.7283, 298.01, -54.11692, 197.2172, 298.01, -50.97656, 201.8369, 298.01, -47.36435, 206.5922, 298.01, -45.04395, 208.9359, 298.01, -42.83026, 211.2797, 298.01, -39.25781, 214.7435, 298.01, -34.57031, 218.4974, 298.01, -32.22656, 219.9595, 298.01, -28.02053, 222.9984, 298.01, -27.53906, 223.4238, 298.01, -25.19531, 224.4187, 298.01, -22.85156, 225.8252, 298.01, -20.50781, 226.9067, 298.01, -18.16406, 228.4286, 298.01, -15.82031, 229.1235, 298.01, -14.9447, 230.0297, 298.01, -15.82031, 231.3969, 298.01, -16.94484, 232.3734, 298.01 };
+    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
+    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
+    EXPECT_EQ(358u * 3, groundTruth.size());
+    CheckGroundTruth(structures, 5, 8, groundTruth);
+  }
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+#if 0
+
+TEST(StructureSet, ReadFromJsonAndCompute1)
+{
+  DicomStructureSet2 structureSet;
+
+  OrthancPlugins::FullOrthancDataset dicom(GetTestJson());
+  //loader.content_.reset(new DicomStructureSet(dicom));
+  structureSet.Clear();
+
+  structureSet.FillStructuresFromDataset(dicom);
+
+  structureSet.ComputeDependentProperties();
+}
+
+TEST(StructureSet, ReadFromJsonAndCompute2)
+{
+  DicomStructureSet2 structureSet;
+
+  OrthancPlugins::FullOrthancDataset dicom(GetTestJson());
+  //loader.content_.reset(new DicomStructureSet(dicom));
+  structureSet.Clear();
+
+  structureSet.SetContents(dicom);
+}
+#endif
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+static bool CutStructureWithPlane(
+  std::vector< std::pair<Point2D, Point2D> >& segments,
+  const DicomStructure2& structure,
+  const double originX, const double originY, const double originZ,
+  const double axisX_X, const double axisX_Y, const double axisX_Z,
+  const double axisY_X, const double axisY_Y, const double axisY_Z
+)
+{
+  // create an AXIAL cutting plane, too far away from the volume 
+  // (> sliceThickness/2)
+  Point3D origin, axisX, axisY;
+  LinearAlgebra::AssignVector(origin, originX, originY, originZ);
+  LinearAlgebra::AssignVector(axisX, axisX_X, axisX_Y, axisX_Z);
+  LinearAlgebra::AssignVector(axisY, axisY_X, axisY_Y, axisY_Z);
+  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
+
+  // compute intersection
+  bool ok = structure.Project(segments, cuttingPlane);
+  return ok;
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+static double pointsCoord1[] = { 2, 2, 3,  3,  6,  8, 8, 7, 8, 8, 6 };
+static double pointsCoord2[] = { 2, 6, 8, 10, 12, 10, 8, 6, 4, 2, 4 };
+static const size_t pointsCoord1Count = STONE_ARRAY_SIZE(pointsCoord1);
+static const size_t pointsCoord2Count = STONE_ARRAY_SIZE(pointsCoord2);
+const size_t POLYGON_POINT_COUNT = pointsCoord1Count;
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+static void CreateBasicStructure(DicomStructure2& structure)
+{
+  // see https://www.dropbox.com/s/1o1vg53hsbvx4cc/test-rtstruct-polygons.jpg?dl=0
+  EXPECT_EQ(pointsCoord1Count, pointsCoord2Count);
+  EXPECT_EQ(11, pointsCoord2Count);
+
+  for (size_t slice = 0; slice < 3; ++slice)
+  {
+    DicomStructurePolygon2 polygon("Oblomptu", "CLOSED_PLANAR");
+    for (size_t ip = 0; ip < pointsCoord1Count; ++ip)
+    {
+      Point3D pt;
+      double pt0 = pointsCoord1[ip];
+      double pt1 = pointsCoord2[ip];
+      double pt2 = 4 * (static_cast<double>(slice) - 1); // -4, 0, 4 
+      LinearAlgebra::AssignVector(pt, pt0, pt1, pt2);
+      polygon.AddPoint(pt);
+    }
+    structure.AddPolygon(polygon);
+  }
+  structure.ComputeDependentProperties();
+}
+
+
+TEST(StructureSet, CutAxialOutsideTop)
+{
+  DicomStructure2 structure;
+  CreateBasicStructure(structure);
+  std::vector< std::pair<Point2D, Point2D> > segments;
+
+  // create an AXIAL cutting plane, too far away from the volume 
+  // (> sliceThickness/2)
+  bool ok = CutStructureWithPlane(segments, structure,
+    0, 0, 7,
+    1, 0, 0,
+    0, 1, 0);
+  EXPECT_FALSE(ok);
+}
+
+
+TEST(StructureSet, CutAxialOutsideBottom)
+{
+  DicomStructure2 structure;
+  CreateBasicStructure(structure);
+  std::vector< std::pair<Point2D, Point2D> > segments;
+
+  // create an AXIAL cutting plane, too far away from the volume 
+  // (> sliceThickness/2)
+  bool ok = CutStructureWithPlane(segments, structure,
+    0, 0, -6.66,
+    1, 0, 0,
+    0, 1, 0);
+  EXPECT_FALSE(ok);
+}
+
+TEST(StructureSet, CutAxialInsideClose)
+{
+  DicomStructure2 structure;
+  CreateBasicStructure(structure);
+  std::vector< std::pair<Point2D, Point2D> > segments;
+
+  // create an AXIAL cutting plane in the volume
+  bool ok = CutStructureWithPlane(segments, structure,
+    0, 0, 1.1,
+    1, 0, 0,
+    0, 1, 0);
+  EXPECT_TRUE(ok);
+  EXPECT_EQ(POLYGON_POINT_COUNT, segments.size());
+
+  for (size_t i = 0; i < segments.size(); ++i)
+  {
+    EXPECT_LT(i, POLYGON_POINT_COUNT);
+    EXPECT_LT(i, POLYGON_POINT_COUNT);
+
+    const Point2D& pt = segments[i].first;
+
+    // ...should be at the same location as the 3D coords since the plane 
+    // is rooted at 0,0,0 with normal 0,0,1
+    EXPECT_NEAR(pt.x, pointsCoord1[i], DELTA_MAX);
+    EXPECT_NEAR(pt.y, pointsCoord2[i], DELTA_MAX);
+  }
+}
+
+
+TEST(StructureSet, CutAxialInsideFar)
+{
+  DicomStructure2 structure;
+  CreateBasicStructure(structure);
+  std::vector< std::pair<Point2D, Point2D> > segments;
+
+  // create an AXIAL cutting plane
+  Point3D origin, axisX, axisY;
+  LinearAlgebra::AssignVector(origin, 0, 0, 0);
+  LinearAlgebra::AssignVector(axisX, 1, 0, 0);
+  LinearAlgebra::AssignVector(axisY, 0, 1, 0);
+  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
+
+  // compute intersection
+  bool ok = structure.Project(segments, cuttingPlane);
+  EXPECT_TRUE(ok);
+
+  EXPECT_EQ(11, segments.size());
+  for (size_t i = 0; i < segments.size(); ++i)
+  {
+    EXPECT_LT(i, pointsCoord1Count);
+    EXPECT_LT(i, pointsCoord2Count);
+
+    // the 2D points of the projected polygon
+    const Point2D& pt = segments[i].first;
+
+    // ...should be at the same location as the 3D coords since the plane 
+    // is rooted at 0,0,0 with normal 0,0,1
+    EXPECT_NEAR(pt.x, pointsCoord1[i], DELTA_MAX);
+    EXPECT_NEAR(pt.y, pointsCoord2[i], DELTA_MAX);
+  }
+}
+
+TEST(StructureSet, CutCoronalOutsideClose)
+{
+  DicomStructure2 structure;
+  CreateBasicStructure(structure);
+  std::vector< std::pair<Point2D, Point2D> > segments;
+
+  // create an X,Z cutting plane, outside of the volume
+  Point3D origin, axisX, axisY;
+  LinearAlgebra::AssignVector(origin, 0, 0, 0);
+  LinearAlgebra::AssignVector(axisX, 1, 0, 0);
+  LinearAlgebra::AssignVector(axisY, 0, 0, 1);
+  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
+
+  // compute intersection
+  bool ok = structure.Project(segments, cuttingPlane);
+  EXPECT_FALSE(ok);
+}
+
+TEST(StructureSet, CutCoronalInsideClose1DTest)
+{
+  DicomStructure2 structure;
+  CreateBasicStructure(structure);
+
+  // create an X,Z cutting plane, outside of the volume
+  Point3D origin, axisX, axisY;
+  LinearAlgebra::AssignVector(origin, 0, 3, 0);
+  LinearAlgebra::AssignVector(axisX, 1, 0, 0);
+  LinearAlgebra::AssignVector(axisY, 0, 0, 1);
+  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
+
+  ASSERT_EQ(3u, structure.GetPolygons().size());
+
+  for (int i = 0; i < 3; ++i)
+  {
+    double polygonZ = static_cast<double>(i - 1) * 4.0;
+
+    const DicomStructurePolygon2& topSlab = structure.GetPolygons()[i];
+
+    // let's compute the intersection between the polygon and the plane
+    // intersections are in plane coords
+    std::vector<Point2D> intersects;
+    topSlab.ProjectOnConstantPlane(intersects, cuttingPlane);
+
+    ASSERT_EQ(4u, intersects.size());
+
+    EXPECT_NEAR(2, intersects[0].x, DELTA_MAX);
+    EXPECT_NEAR(4, intersects[1].x, DELTA_MAX);
+    EXPECT_NEAR(7, intersects[2].x, DELTA_MAX);
+    EXPECT_NEAR(8, intersects[3].x, DELTA_MAX);
+
+    for (size_t i = 0; i < 4u; ++i)
+    {
+      EXPECT_NEAR(polygonZ, intersects[i].y, DELTA_MAX);
+    }
+  }
+}
+
+TEST(StructureSet, CutCoronalInsideClose)
+{
+  DicomStructure2 structure;
+  CreateBasicStructure(structure);
+  std::vector< std::pair<Point2D, Point2D> > segments;
+
+  // create an X,Z cutting plane, outside of the volume
+  Point3D origin, axisX, axisY;
+  LinearAlgebra::AssignVector(origin, 0, 3, 0);
+  LinearAlgebra::AssignVector(axisX, 1, 0, 0);
+  LinearAlgebra::AssignVector(axisY, 0, 0, 1);
+  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
+
+  // compute intersection
+  ASSERT_TRUE(structure.Project(segments, cuttingPlane));
+  EXPECT_EQ(24, segments.size());
+
+  size_t numberOfVeryShortSegments = 0;
+  for (size_t iSegment = 0; iSegment < segments.size(); ++iSegment)
+  {
+    // count the NON vertical very short segments 
+    if (LinearAlgebra::IsNear(segments[iSegment].first.x, segments[iSegment].second.x))
+    {
+      if (LinearAlgebra::IsNear(segments[iSegment].first.y, segments[iSegment].second.y))
+      {
+        numberOfVeryShortSegments++;
+      }
+    }
+  }
+  EXPECT_EQ(8, numberOfVeryShortSegments);
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+
+TEST(DisjointDataSet, BasicTest)
+{
+  const size_t ITEM_COUNT = 10;
+  DisjointDataSet ds(ITEM_COUNT);
+
+  for (size_t i = 0; i < ITEM_COUNT; ++i)
+  {
+    EXPECT_EQ(i, ds.Find(i));
+  }
+
+  ds.Union(0, 4);
+  EXPECT_EQ(0u, ds.Find(0));
+  EXPECT_EQ(0u, ds.Find(4));
+
+  ds.Union(4, 6);
+  ds.Union(8, 9);
+  ds.Union(0, 8);
+
+  for (size_t i = 0; i < ITEM_COUNT; ++i)
+  {
+    size_t parent = ds.Find(i);
+    EXPECT_TRUE(0 == parent || 1 == parent || 2 == parent || 3 == parent || 5 == parent || 7 == parent);
+  }
+
+  ds.Union(1, 2);
+  ds.Union(1, 7);
+  for (size_t i = 0; i < ITEM_COUNT; ++i)
+  {
+    size_t parent = ds.Find(i);
+    EXPECT_TRUE(0 == parent || 1 == parent || 3 == parent || 5 == parent);
+  }
+
+  ds.Union(3, 5);
+  for (size_t i = 0; i < ITEM_COUNT; ++i)
+  {
+    size_t parent = ds.Find(i);
+    EXPECT_TRUE(0 == parent || 1 == parent || 3 == parent);
+  }
+
+  EXPECT_EQ(ds.Find(0), ds.Find(0));
+  EXPECT_EQ(ds.Find(0), ds.Find(4));
+  EXPECT_EQ(ds.Find(0), ds.Find(6));
+  EXPECT_EQ(ds.Find(0), ds.Find(8));
+  EXPECT_EQ(ds.Find(0), ds.Find(8));
+
+  EXPECT_EQ(ds.Find(1), ds.Find(7));
+  EXPECT_EQ(ds.Find(2), ds.Find(1));
+  EXPECT_EQ(ds.Find(7), ds.Find(2));
+
+  EXPECT_EQ(ds.Find(3), ds.Find(5));
+  EXPECT_EQ(ds.Find(5), ds.Find(3));
+
+  ds.Union(0, 1);
+  ds.Union(3, 1);
+  for (size_t i = 0; i < ITEM_COUNT; ++i)
+  {
+    EXPECT_EQ(ds.Find(0), ds.Find(i));
+  }
+}
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+TEST(StructureSet, CutSagittalInsideClose)
+{
+  DicomStructure2 structure;
+  CreateBasicStructure(structure);
+  std::vector< std::pair<Point2D, Point2D> > segments;
+
+  // create an X,Z cutting plane, inside of the volume
+  Point3D origin, axisX, axisY;
+  LinearAlgebra::AssignVector(origin, 0, 3, 0);
+  LinearAlgebra::AssignVector(axisX, 1, 0, 0);
+  LinearAlgebra::AssignVector(axisY, 0, 0, 1);
+  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
+
+  // compute intersection
+  bool ok = structure.Project(segments, cuttingPlane);
+  EXPECT_TRUE(ok);
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+
+static size_t ConvertListOfSlabsToSegments_Add(RtStructRectanglesInSlab& rectangles, int row, double xmin, double xmax)
+{
+  double ymin = static_cast<double>(row) * 5.0;
+  double ymax = static_cast<double>(row + 1) * 5.0;
+
+  RtStructRectangleInSlab rectangle;
+  rectangle.xmin = xmin;
+  rectangle.xmax = xmax;
+  rectangle.ymin = ymin;
+  rectangle.ymax = ymax;
+
+  rectangles.push_back(rectangle);
+  
+  return 1u;
+}
+
+static size_t FillTestRectangleList(std::vector< RtStructRectanglesInSlab >& rectanglesForEachSlab)
+{
+  // ConvertListOfSlabsToSegments
+  size_t rectCount = 0;
+
+  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 0, 5, 31);
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 0, 36, 50);
+
+  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 1, 20, 45);
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 1, 52, 70);
+
+  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 2, 0, 32);
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 2, 35, 44);
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 2, 60, 75);
+
+  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 3, 10, 41);
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 3, 46, 80);
+
+  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 4, 34, 42);
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 4, 90, 96);
+
+  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 5, 1, 33);
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 5, 40, 43);
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 5, 51, 61);
+  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 5, 76, 95);
+
+  return rectCount;
+}
+
+/*
+void AddSlabBoundaries(
+  std::vector<std::pair<double, RectangleBoundaryKind> >& boundaries,
+  const std::vector<RtStructRectanglesInSlab>& slabCuts, size_t iSlab)
+*/
+
+
+/*
+void ProcessBoundaryList(
+  std::vector< std::pair<Point2D, Point2D> >& segments,
+  const std::vector<std::pair<double, RectangleBoundaryKind> >& boundaries,
+  double y)
+*/
+
+
+TEST(StructureSet, ProcessBoundaryList_Empty)
+{
+  std::vector< RtStructRectanglesInSlab > slabCuts;
+  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+
+  boundaries.clear();
+  EXPECT_NO_THROW(AddSlabBoundaries(boundaries, slabCuts, 0));
+  ASSERT_EQ(0u, boundaries.size());
+}
+
+TEST(StructureSet, ProcessBoundaryListTopRow)
+{
+  std::vector< RtStructRectanglesInSlab > slabCuts;
+  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+  FillTestRectangleList(slabCuts);
+
+  boundaries.clear();
+  AddSlabBoundaries(boundaries, slabCuts, 0);
+
+  {
+    size_t i = 0;
+    ASSERT_EQ(4u, boundaries.size());
+
+    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
+    ASSERT_NEAR(5, boundaries[i].first, DELTA_MAX);
+    i++;
+
+    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
+    ASSERT_NEAR(31, boundaries[i].first, DELTA_MAX);
+    i++;
+
+    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
+    ASSERT_NEAR(36, boundaries[i].first, DELTA_MAX);
+    i++;
+
+    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
+    ASSERT_NEAR(50, boundaries[i].first, DELTA_MAX);
+    i++;
+  }
+}
+
+TEST(StructureSet, ProcessBoundaryListRows_0_and_1)
+{
+  std::vector< RtStructRectanglesInSlab > slabCuts;
+  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+  FillTestRectangleList(slabCuts);
+
+  boundaries.clear();
+  AddSlabBoundaries(boundaries, slabCuts, 0);
+  AddSlabBoundaries(boundaries, slabCuts, 1);
+
+  ASSERT_EQ(8u, boundaries.size());
+
+  {
+    size_t i = 0;
+
+    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
+    ASSERT_NEAR(5, boundaries[i].first, DELTA_MAX);
+    i++;
+
+    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
+    ASSERT_NEAR(20, boundaries[i].first, DELTA_MAX);
+    i++;
+
+    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
+    ASSERT_NEAR(31, boundaries[i].first, DELTA_MAX);
+    i++;
+
+    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
+    ASSERT_NEAR(36, boundaries[i].first, DELTA_MAX);
+    i++;
+
+    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
+    ASSERT_NEAR(45, boundaries[i].first, DELTA_MAX);
+    i++;
+
+    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
+    ASSERT_NEAR(50, boundaries[i].first, DELTA_MAX);
+    i++;
+
+    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
+    ASSERT_NEAR(52, boundaries[i].first, DELTA_MAX);
+    i++;
+
+    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
+    ASSERT_NEAR(70, boundaries[i].first, DELTA_MAX);
+    i++;
+  }
+}
+
+TEST(StructureSet, ConvertListOfSlabsToSegments_EmptyBoundaries)
+{
+  std::vector< RtStructRectanglesInSlab > slabCuts;
+  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+  FillTestRectangleList(slabCuts);
+  boundaries.clear();
+  std::vector< std::pair<Point2D, Point2D> > segments;
+  ASSERT_NO_THROW(ProcessBoundaryList(segments, boundaries, 42.0));
+  ASSERT_EQ(0u, segments.size());
+}
+
+TEST(StructureSet, ConvertListOfSlabsToSegments_TopRow_Horizontal)
+{
+  std::vector< RtStructRectanglesInSlab > slabCuts;
+  FillTestRectangleList(slabCuts);
+
+  // top row
+  {
+    std::vector< std::pair<Point2D, Point2D> > segments;
+    std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+    AddSlabBoundaries(boundaries, slabCuts, 0);
+    ProcessBoundaryList(segments, boundaries, slabCuts[0][0].ymin);
+
+    ASSERT_EQ(2u, segments.size());
+
+    ASSERT_NEAR( 5.0, segments[0].first.x, DELTA_MAX);
+    ASSERT_NEAR(31.0, segments[0].second.x, DELTA_MAX);
+    ASSERT_NEAR( 0.0, segments[0].first.y, DELTA_MAX);
+    ASSERT_NEAR( 0.0, segments[0].second.y, DELTA_MAX);
+
+    ASSERT_NEAR(36.0, segments[1].first.x, DELTA_MAX);
+    ASSERT_NEAR(50.0, segments[1].second.x, DELTA_MAX);
+    ASSERT_NEAR( 0.0, segments[1].first.y, DELTA_MAX);
+    ASSERT_NEAR( 0.0, segments[1].second.y, DELTA_MAX);
+  }
+}
+
+TEST(StructureSet, ConvertListOfSlabsToSegments_All_Horizontal)
+{
+  std::vector< RtStructRectanglesInSlab > slabCuts;
+  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+  FillTestRectangleList(slabCuts);
+
+  // top row
+  {
+    std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+    AddSlabBoundaries(boundaries, slabCuts, 0);
+    std::vector< std::pair<Point2D, Point2D> > segments;
+    ProcessBoundaryList(segments, boundaries, slabCuts[0][0].ymin);
+  }
+
+  // mids
+  {
+    std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+    AddSlabBoundaries(boundaries, slabCuts, 0);
+    AddSlabBoundaries(boundaries, slabCuts, 1);
+    std::vector< std::pair<Point2D, Point2D> > segments;
+    ProcessBoundaryList(segments, boundaries, slabCuts[0][0].ymax);
+
+    ASSERT_EQ(4u, segments.size());
+
+    ASSERT_NEAR(05.0, segments[0].first.x, DELTA_MAX);
+    ASSERT_NEAR(20.0, segments[0].second.x, DELTA_MAX);
+    ASSERT_NEAR(05.0, segments[0].first.y, DELTA_MAX);
+    ASSERT_NEAR(05.0, segments[0].second.y, DELTA_MAX);
+
+    ASSERT_NEAR(31.0, segments[1].first.x, DELTA_MAX);
+    ASSERT_NEAR(36.0, segments[1].second.x, DELTA_MAX);
+    ASSERT_NEAR(05.0, segments[1].first.y, DELTA_MAX);
+    ASSERT_NEAR(05.0, segments[1].second.y, DELTA_MAX);
+
+    ASSERT_NEAR(45.0, segments[2].first.x, DELTA_MAX);
+    ASSERT_NEAR(50.0, segments[2].second.x, DELTA_MAX);
+    ASSERT_NEAR(05.0, segments[2].first.y, DELTA_MAX);
+    ASSERT_NEAR(05.0, segments[2].second.y, DELTA_MAX);
+
+    ASSERT_NEAR(52.0, segments[3].first.x, DELTA_MAX);
+    ASSERT_NEAR(70.0, segments[3].second.x, DELTA_MAX);
+    ASSERT_NEAR(05.0, segments[3].first.y, DELTA_MAX);
+    ASSERT_NEAR(05.0, segments[3].second.y, DELTA_MAX);
+  }
+
+  // bottom row
+  {
+    std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+    AddSlabBoundaries(boundaries, slabCuts, 1);
+    std::vector< std::pair<Point2D, Point2D> > segments;
+    ProcessBoundaryList(segments, boundaries, slabCuts[1][0].ymax);
+
+    ASSERT_EQ(2u, segments.size());
+
+    ASSERT_NEAR(20.0, segments[0].first.x, DELTA_MAX);
+    ASSERT_NEAR(45.0, segments[0].second.x, DELTA_MAX);
+    ASSERT_NEAR(10.0, segments[0].first.y, DELTA_MAX);
+    ASSERT_NEAR(10.0, segments[0].second.y, DELTA_MAX);
+
+    ASSERT_NEAR(52.0, segments[1].first.x, DELTA_MAX);
+    ASSERT_NEAR(70.0, segments[1].second.x, DELTA_MAX);
+    ASSERT_NEAR(10.0, segments[1].first.y, DELTA_MAX);
+    ASSERT_NEAR(10.0, segments[1].second.y, DELTA_MAX);
+  }
+
+}
+
+TEST(StructureSet, ConvertListOfSlabsToSegments_Complete_Empty)
+{
+  std::vector< RtStructRectanglesInSlab > slabCuts;
+  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+
+  std::vector< std::pair<Point2D, Point2D> > segments;
+
+  ASSERT_NO_THROW(ConvertListOfSlabsToSegments(segments, slabCuts, 0));
+  ASSERT_EQ(0u, segments.size());
+}
+
+TEST(StructureSet, ConvertListOfSlabsToSegments_Complete_Regular)
+{
+  std::vector< RtStructRectanglesInSlab > slabCuts;
+  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
+  size_t totalRectCount = FillTestRectangleList(slabCuts);
+
+  std::vector< std::pair<Point2D, Point2D> > segments;
+
+  ASSERT_NO_THROW(ConvertListOfSlabsToSegments(segments, slabCuts, totalRectCount));
+  ASSERT_EQ(60u, segments.size());
+
+  size_t i = 0;
+
+  ASSERT_NEAR(segments[i].first.x, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 31.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 31.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 36.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 36.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 50.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 50.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 45.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 45.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 52.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 52.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 70.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 70.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 0.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 0.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 32.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 32.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 35.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 35.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 44.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 44.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 60.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 60.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 75.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 75.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 41.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 41.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 46.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 46.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 80.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 80.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 34.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 34.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 42.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 42.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 90.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 90.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 96.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 96.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 1.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 1.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 33.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 33.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 40.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 40.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 43.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 43.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 51.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 51.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 61.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 61.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 76.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 76.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 95.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 95.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 31.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 0.0000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 36.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 50.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 0.0000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 31.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 36.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 45.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 50.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 52.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 70.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 0.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 32.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 35.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 44.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 45.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 52.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 60.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 70.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 75.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 0.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 32.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 35.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 41.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 44.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 46.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 60.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 75.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 80.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 10.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 34.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 41.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 42.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 46.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 80.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 90.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 96.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 1.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 33.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 34.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 40.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 42.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 43.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 51.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 61.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 76.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 90.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 95.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 96.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 1.0000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 30.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 33.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 40.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 30.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 43.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 51.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 30.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 61.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+  i++;
+  ASSERT_NEAR(segments[i].first.x, 76.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].first.y, 30.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.x, 95.000000000000000, DELTA_MAX);
+  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
+}
+
+#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+TEST(StructureSet, ReadFromJsonPart2)
+{
+  DicomStructureSet2 structureSet;
+  std::string jsonText;
+
+  SystemToolbox::ReadFile(jsonText, "72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json");
+
+  OrthancPlugins::FullOrthancDataset dicom(jsonText);
+  //loader.content_.reset(new DicomStructureSet(dicom));
+  structureSet.Clear();
+
+  structureSet.FillStructuresFromDataset(dicom);
+  structureSet.ComputeDependentProperties();
+
+  const std::vector<DicomStructure2>& structures = structureSet.structures_;
+}
+
+#endif 
+// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
+
+namespace
+{
+  void Initialize(const char* orthancApiUrl, OrthancStone::ILoadersContext& loadersContext)
+  {
+    Orthanc::WebServiceParameters p;
+
+    OrthancStone::GenericLoadersContext& typedLoadersContext =
+      dynamic_cast<OrthancStone::GenericLoadersContext&>(loadersContext);
+    // Default is http://localhost:8042
+    // Here's how you may change it
+    p.SetUrl(orthancApiUrl);
+    p.SetCredentials("orthanc", "orthanc");
+    typedLoadersContext.SetOrthancParameters(p);
+
+    typedLoadersContext.StartOracle();
+  }
+
+  void Exitialize(OrthancStone::ILoadersContext& loadersContext)
+  {
+    OrthancStone::GenericLoadersContext& typedLoadersContext =
+      dynamic_cast<OrthancStone::GenericLoadersContext&>(loadersContext);
+
+    typedLoadersContext.StopOracle();
+  }
+
+
+#if 0
+  class TestObserver : public ObserverBase<TestObserver>
+  {
+  public:
+    TestObserver() {};
+
+    virtual void Handle
+
+  };
+#endif
+
+}
+
+TEST(StructureSet, DISABLED_StructureSetLoader_injection_feature_2020_05_10)
+{
+  namespace pt = boost::posix_time;
+
+  std::unique_ptr<OrthancStone::ILoadersContext> loadersContext(new OrthancStone::GenericLoadersContext(1,4,1));
+  Initialize("http://localhost:8042/", *loadersContext);
+
+  boost::shared_ptr<DicomStructureSetLoader> loader = DicomStructureSetLoader::Create(*loadersContext);
+
+  // replace with Orthanc ID of an uploaded RTSTRUCT instance!
+  loader->LoadInstanceFullVisibility("72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661");
+
+  bool bContinue(true);
+
+  pt::ptime initialTime = pt::second_clock::local_time();
+
+  while (bContinue)
+  {
+    bContinue = !loader->AreStructuresReady();
+    boost::this_thread::sleep_for(boost::chrono::milliseconds(1000));
+
+    {
+      pt::ptime nowTime = pt::second_clock::local_time();
+      pt::time_duration diff = nowTime - initialTime;
+      double seconds = static_cast<double>(diff.total_milliseconds()) * 0.001;
+      std::cout << seconds << " seconds elapsed...\n";
+      if (seconds > 30)
+      {
+        std::cout << "More than 30 seconds elapsed... Aborting test :(\n";
+        //GTEST_FATAL_FAILURE_("More than 30 seconds elapsed... Aborting test :(");
+        //bContinue = false;
+      }
+    }
+  }
+}
+
+class SliceProcessor :
+  public OrthancStone::OrthancSeriesVolumeProgressiveLoader::ISlicePostProcessor,
+  public OrthancStone::DicomStructureSetLoader::IInstanceLookupHandler
+{
+public:
+  SliceProcessor(OrthancStone::DicomStructureSetLoader& structLoader) : structLoader_(structLoader)
+  {
+  }
+
+  virtual void ProcessCTDicomSlice(const Orthanc::DicomMap& instance) ORTHANC_OVERRIDE
+  {
+    std::string sopInstanceUid;
+    if (!instance.LookupStringValue(sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat, "Missing SOPInstanceUID in a DICOM instance");
+    }
+    slicesDicom_[sopInstanceUid] = boost::shared_ptr<DicomMap>(instance.Clone());
+  }
+
+  virtual void RetrieveReferencedSlices(const std::set<std::string>& nonEmptyInstances) ORTHANC_OVERRIDE
+  {
+    for (std::set<std::string>::const_iterator it = nonEmptyInstances.begin(); 
+         it != nonEmptyInstances.end(); 
+         ++it)
+    {
+      const std::string nonEmptyInstance = *it;
+      if (slicesDicom_.find(nonEmptyInstance) == slicesDicom_.end())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat, "Referenced SOPInstanceUID not found in CT");
+      }
+      boost::shared_ptr<Orthanc::DicomMap> instance = slicesDicom_[nonEmptyInstance];
+      structLoader_.AddReferencedSlice(*instance);
+    }
+  }
+
+  OrthancStone::DicomStructureSetLoader& structLoader_;
+  std::map<std::string, boost::shared_ptr<Orthanc::DicomMap> > slicesDicom_;
+};
+
+void LoadCtSeriesBlocking(boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader, std::string seriesId)
+{
+  namespace pt = boost::posix_time;
+  
+  // Load the CT 
+  ctLoader->LoadSeries(seriesId);
+
+  // Wait for CT to be loaded
+  pt::ptime initialTime = pt::second_clock::local_time();
+  {
+    bool bContinue(true);
+    while (bContinue)
+    {
+      bContinue = !ctLoader->IsVolumeImageReadyInHighQuality();
+      boost::this_thread::sleep_for(boost::chrono::milliseconds(1000));
+
+      {
+        pt::ptime nowTime = pt::second_clock::local_time();
+        pt::time_duration diff = nowTime - initialTime;
+        double seconds = static_cast<double>(diff.total_milliseconds()) * 0.001;
+        std::cout << seconds << " seconds elapsed...\n";
+        if (seconds > 30)
+        {
+          const char* msg = "More than 30 seconds elapsed when waiting for CT... Aborting test :(\n";
+          GTEST_FATAL_FAILURE_(msg);
+          bContinue = false;
+        }
+      }
+    }
+  }
+}
+
+
+/**
+Will fill planes
+*/
+void GetCTPlanes(std::vector<OrthancStone::CoordinateSystem3D>& planes, 
+                 OrthancStone::VolumeProjection projection,
+                 boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader)
+{
+    planes.clear(); // inefficient : we don't care
+
+    const VolumeImageGeometry& geometry = ctLoader->GetImageGeometry();
+    const unsigned int depth = geometry.GetProjectionDepth(projection);
+
+    planes.resize(depth);
+
+    for (unsigned int z = 0; z < depth; z++)
+    {
+      planes[z] = geometry.GetProjectionSlice(projection, z);
+    }
+}
+
+void LoadRtStructBlocking(boost::shared_ptr<OrthancStone::DicomStructureSetLoader> structLoader, std::string instanceId)
+{
+  namespace pt = boost::posix_time;
+
+  // Load RTSTRUCT
+  structLoader->LoadInstanceFullVisibility(instanceId);
+
+  pt::ptime initialTime = pt::second_clock::local_time();
+
+  // Wait for the loading process to complete
+  {
+    bool bContinue(true);
+    while (bContinue)
+    {
+      bContinue = !structLoader->AreStructuresReady();
+      boost::this_thread::sleep_for(boost::chrono::milliseconds(1000));
+
+      {
+        pt::ptime nowTime = pt::second_clock::local_time();
+        pt::time_duration diff = nowTime - initialTime;
+        double seconds = static_cast<double>(diff.total_milliseconds()) * 0.001;
+        std::cout << seconds << " seconds elapsed...\n";
+        if (seconds > 30)
+        {
+          const char* msg = "More than 30 seconds elapsed when waiting for RTSTRUCT... Aborting test :(\n";
+          GTEST_FATAL_FAILURE_(msg);
+          bContinue = false;
+        }
+      }
+    }
+  }
+}
+
+TEST(StructureSet, DISABLED_Integration_Compound_CT_Struct_Loading)
+{
+  const double TOLERANCE = 0.0000001;
+
+  // create loaders context
+  std::unique_ptr<OrthancStone::ILoadersContext> loadersContext(new OrthancStone::GenericLoadersContext(1,4,1));
+  Initialize("http://localhost:8042/", *loadersContext);
+
+  const char* ctSeriesId = "a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa";
+  const char* rtStructInstanceId = "54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9";
+
+  // we'll compare normal loading and optimized loading with SliceProcessor to store the dicom
+
+  boost::shared_ptr<OrthancStone::DicomStructureSetLoader> normalStructLoader;
+  boost::shared_ptr<OrthancStone::DicomStructureSetLoader> optimizedStructLoader;
+  
+  {
+    // Create the CT volume
+    boost::shared_ptr<OrthancStone::DicomVolumeImage> volume = boost::make_shared<OrthancStone::DicomVolumeImage>();
+
+    // Create CT loader
+    boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader =
+      OrthancStone::OrthancSeriesVolumeProgressiveLoader::Create(*loadersContext, volume);
+
+    // Create struct loader
+    normalStructLoader = OrthancStone::DicomStructureSetLoader::Create(*loadersContext);
+
+    // Load the CT
+    LoadCtSeriesBlocking(ctLoader, ctSeriesId);
+    
+    const OrthancStone::VolumeImageGeometry& imageGeometry = ctLoader->GetImageGeometry();
+    unsigned int width = imageGeometry.GetWidth();
+    EXPECT_EQ(512u, width);
+    unsigned int height = imageGeometry.GetHeight();
+    EXPECT_EQ(512u, height);
+    unsigned int depth = imageGeometry.GetDepth();
+    EXPECT_EQ(109u, depth);
+
+    // Load the RTStruct
+    LoadRtStructBlocking(normalStructLoader, rtStructInstanceId);
+  }
+
+  std::vector<OrthancStone::CoordinateSystem3D> axialPlanes;
+  std::vector<OrthancStone::CoordinateSystem3D> coronalPlanes;
+  std::vector<OrthancStone::CoordinateSystem3D> sagittalPlanes;
+
+  {
+    // Create the CT volume
+    boost::shared_ptr<OrthancStone::DicomVolumeImage> volume = boost::make_shared<OrthancStone::DicomVolumeImage>();
+
+    // Create CT loader
+    boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader =
+      OrthancStone::OrthancSeriesVolumeProgressiveLoader::Create(*loadersContext, volume);
+
+    // Create struct loader
+    optimizedStructLoader = OrthancStone::DicomStructureSetLoader::Create(*loadersContext);
+
+    // create the slice processor / instance lookup
+    boost::shared_ptr<SliceProcessor> sliceProcessor(new SliceProcessor(*optimizedStructLoader));
+
+    // Inject it into CT loader
+    ctLoader->SetDicomSlicePostProcessor(sliceProcessor);
+
+    // Inject it into RTSTRUCT loader
+    optimizedStructLoader->SetInstanceLookupHandler(sliceProcessor);
+
+    // Load the CT
+    LoadCtSeriesBlocking(ctLoader, ctSeriesId);
+  
+    // now, the slices are collected. let's do some checks
+    EXPECT_EQ(109u, sliceProcessor->slicesDicom_.size());
+
+    // Load the RTStruct
+    LoadRtStructBlocking(optimizedStructLoader, rtStructInstanceId);
+
+    GetCTPlanes(axialPlanes, VolumeProjection_Axial, ctLoader);
+    GetCTPlanes(coronalPlanes, VolumeProjection_Coronal, ctLoader);
+    GetCTPlanes(sagittalPlanes, VolumeProjection_Sagittal, ctLoader);
+  }
+
+  // DO NOT DELETE THOSE!
+  OrthancStone::DicomStructureSet* normalContent = normalStructLoader->GetContent();
+  OrthancStone::DicomStructureSet* optimizedContent = optimizedStructLoader->GetContent();
+
+  EXPECT_EQ(normalContent->GetStructuresCount(), optimizedContent->GetStructuresCount());
+
+  /*void GetCTPlanes(std::vector<OrthancStone::CoordinateSystem3D>& planes, 
+                 OrthancStone::VolumeProjection projection,
+                 boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader)*/
+
+
+  std::vector<OrthancStone::CoordinateSystem3D> allPlanes;
+
+  // let's gather all the possible cutting planes in a single struct
+  for (size_t i = 0; i < axialPlanes.size(); ++i)
+    allPlanes.push_back(axialPlanes[i]);
+
+  for (size_t i = 0; i < coronalPlanes.size(); ++i)
+    allPlanes.push_back(coronalPlanes[i]);
+
+  for (size_t i = 0; i < sagittalPlanes.size(); ++i)
+    allPlanes.push_back(sagittalPlanes[i]);
+
+  for (size_t i = 0; i < normalContent->GetStructuresCount(); ++i)
+  {
+    std::cout << "Testing structure (" << i << "/" << normalContent->GetStructuresCount() << ")\n";
+    Vector structureCenter1                     = normalContent->GetStructureCenter(i);
+    const std::string& structureName1           = normalContent->GetStructureName(i);
+    const std::string& structureInterpretation1 = normalContent->GetStructureInterpretation(i);
+    Color structureColor1                       = normalContent->GetStructureColor(i);
+
+    Vector structureCenter2                     = optimizedContent->GetStructureCenter(i);
+    const std::string& structureName2           = optimizedContent->GetStructureName(i);
+    const std::string& structureInterpretation2 = optimizedContent->GetStructureInterpretation(i);
+    Color structureColor2                       = optimizedContent->GetStructureColor(i);
+
+    EXPECT_NEAR(structureCenter1[0], structureCenter2[0], TOLERANCE);
+    EXPECT_NEAR(structureCenter1[1], structureCenter2[1], TOLERANCE);
+    EXPECT_NEAR(structureCenter1[2], structureCenter2[2], TOLERANCE);
+    
+    EXPECT_EQ(structureName1, structureName2);
+    EXPECT_EQ(structureInterpretation1, structureInterpretation2);
+    EXPECT_EQ(structureColor1.GetRed(), structureColor2.GetRed());
+    EXPECT_EQ(structureColor1.GetGreen(), structureColor2.GetGreen());
+    EXPECT_EQ(structureColor1.GetBlue(), structureColor2.GetBlue());
+
+    // "random" walk through the planes. Processing them all takes too long (~ 1 min)
+    for (size_t j = 0; j < allPlanes.size(); j += 37)
+    {
+      const OrthancStone::CoordinateSystem3D& plane = allPlanes[j];
+
+      std::vector< std::pair<Point2D, Point2D> > segments1;
+      std::vector< std::pair<Point2D, Point2D> > segments2;
+      
+      bool ok1 = normalContent->ProjectStructure(segments1, i, plane);
+      bool ok2 = optimizedContent->ProjectStructure(segments2, i, plane);
+
+      // checks here
+      EXPECT_EQ(ok1, ok2);
+      EXPECT_EQ(segments1.size(), segments2.size());
+
+      for (size_t k = 0; k < segments1.size(); ++k)
+      {
+        EXPECT_NEAR(segments1[k].first.x, segments2[k].first.x, TOLERANCE);
+        EXPECT_NEAR(segments1[k].first.y, segments2[k].first.y, TOLERANCE);
+        EXPECT_NEAR(segments1[k].second.x, segments2[k].second.x, TOLERANCE);
+        EXPECT_NEAR(segments1[k].second.y, segments2[k].second.y, TOLERANCE);
+      }
+    }
+  }
+
+  Exitialize(*loadersContext);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancStone/UnitTestsSources/UnitTestsMain.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -0,0 +1,894 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include <gtest/gtest.h>
+
+#include "../Sources/StoneInitialization.h"
+#include "../Sources/Toolbox/FiniteProjectiveCamera.h"
+#include "../Sources/Toolbox/GeometryToolbox.h"
+#include "../Sources/Volumes/ImageBuffer3D.h"
+#include "../Sources/Loaders/LoaderCache.h"
+
+#include <HttpClient.h>
+#include <Images/ImageProcessing.h>
+#include <Logging.h>
+#include <MultiThreading/SharedMessageQueue.h>
+#include <OrthancException.h>
+
+#include <boost/lexical_cast.hpp>
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/thread/thread.hpp> 
+#include <boost/math/special_functions/round.hpp>
+
+
+TEST(GeometryToolbox, Interpolation)
+{
+  using namespace OrthancStone::GeometryToolbox;
+  
+  // https://en.wikipedia.org/wiki/Bilinear_interpolation#Application_in_image_processing
+  ASSERT_FLOAT_EQ(146.1f, ComputeBilinearInterpolationUnitSquare(0.5f, 0.2f, 91, 210, 162, 95));
+
+  ASSERT_FLOAT_EQ(91,  ComputeBilinearInterpolationUnitSquare(0, 0, 91, 210, 162, 95));
+  ASSERT_FLOAT_EQ(210, ComputeBilinearInterpolationUnitSquare(1, 0, 91, 210, 162, 95));
+  ASSERT_FLOAT_EQ(162, ComputeBilinearInterpolationUnitSquare(0, 1, 91, 210, 162, 95));
+  ASSERT_FLOAT_EQ(95,  ComputeBilinearInterpolationUnitSquare(1, 1, 91, 210, 162, 95));
+
+  ASSERT_FLOAT_EQ(123.35f, ComputeTrilinearInterpolationUnitSquare
+                  (0.5f, 0.2f, 0.7f,
+                   91, 210, 162, 95,
+                   51, 190, 80, 92));
+
+  ASSERT_FLOAT_EQ(ComputeBilinearInterpolationUnitSquare(0.5f, 0.2f, 91, 210, 162, 95),
+                  ComputeTrilinearInterpolationUnitSquare(0.5f, 0.2f, 0,
+                                                          91, 210, 162, 95,
+                                                          51, 190, 80, 92));
+
+  ASSERT_FLOAT_EQ(ComputeBilinearInterpolationUnitSquare(0.5f, 0.2f, 51, 190, 80, 92),
+                  ComputeTrilinearInterpolationUnitSquare(0.5f, 0.2f, 1,
+                                                          91, 210, 162, 95,
+                                                          51, 190, 80, 92));
+}
+
+
+static bool CompareMatrix(const OrthancStone::Matrix& a,
+                          const OrthancStone::Matrix& b,
+                          double threshold = 0.00000001)
+{
+  if (a.size1() != b.size1() ||
+      a.size2() != b.size2())
+  {
+    return false;
+  }
+
+  for (size_t i = 0; i < a.size1(); i++)
+  {
+    for (size_t j = 0; j < a.size2(); j++)
+    {
+      if (fabs(a(i, j) - b(i, j)) > threshold)
+      {
+        LOG(ERROR) << "Too large difference in component ("
+                   << i << "," << j << "): " << a(i,j) << " != " << b(i,j);
+        return false;
+      }
+    }
+  }
+
+  return true;
+}
+
+
+static bool CompareVector(const OrthancStone::Vector& a,
+                          const OrthancStone::Vector& b,
+                          double threshold = 0.00000001)
+{
+  if (a.size() != b.size())
+  {
+    return false;
+  }
+
+  for (size_t i = 0; i < a.size(); i++)
+  {
+    if (fabs(a(i) - b(i)) > threshold)
+    {
+      LOG(ERROR) << "Too large difference in component "
+                 << i << ": " << a(i) << " != " << b(i);
+      return false;
+    }
+  }
+
+  return true;
+}
+
+
+
+TEST(FiniteProjectiveCamera, Decomposition1)
+{
+  // Example 6.2 of "Multiple View Geometry in Computer Vision - 2nd
+  // edition" (page 163)
+  const double p[12] = {
+    3.53553e+2,  3.39645e+2,  2.77744e+2, -1.44946e+6,
+    -1.03528e+2, 2.33212e+1,  4.59607e+2, -6.32525e+5,
+    7.07107e-1,  -3.53553e-1, 6.12372e-1, -9.18559e+2
+  };
+
+  OrthancStone::FiniteProjectiveCamera camera(p);
+  ASSERT_EQ(3u, camera.GetMatrix().size1());
+  ASSERT_EQ(4u, camera.GetMatrix().size2());
+  ASSERT_EQ(3u, camera.GetIntrinsicParameters().size1());
+  ASSERT_EQ(3u, camera.GetIntrinsicParameters().size2());
+  ASSERT_EQ(3u, camera.GetRotation().size1());
+  ASSERT_EQ(3u, camera.GetRotation().size2());
+  ASSERT_EQ(3u, camera.GetCenter().size());
+
+  ASSERT_NEAR(1000.0, camera.GetCenter()[0], 0.01);
+  ASSERT_NEAR(2000.0, camera.GetCenter()[1], 0.01);
+  ASSERT_NEAR(1500.0, camera.GetCenter()[2], 0.01);
+
+  ASSERT_NEAR(468.2, camera.GetIntrinsicParameters() (0, 0), 0.1);
+  ASSERT_NEAR(91.2,  camera.GetIntrinsicParameters() (0, 1), 0.1);
+  ASSERT_NEAR(300.0, camera.GetIntrinsicParameters() (0, 2), 0.1);
+  ASSERT_NEAR(427.2, camera.GetIntrinsicParameters() (1, 1), 0.1);
+  ASSERT_NEAR(200.0, camera.GetIntrinsicParameters() (1, 2), 0.1);
+  ASSERT_NEAR(1.0,   camera.GetIntrinsicParameters() (2, 2), 0.1);
+
+  ASSERT_NEAR(0, camera.GetIntrinsicParameters() (1, 0), 0.0000001);
+  ASSERT_NEAR(0, camera.GetIntrinsicParameters() (2, 0), 0.0000001);
+  ASSERT_NEAR(0, camera.GetIntrinsicParameters() (2, 1), 0.0000001);
+
+  ASSERT_NEAR(0.41380,  camera.GetRotation() (0, 0), 0.00001);
+  ASSERT_NEAR(0.90915,  camera.GetRotation() (0, 1), 0.00001);
+  ASSERT_NEAR(0.04708,  camera.GetRotation() (0, 2), 0.00001);
+  ASSERT_NEAR(-0.57338, camera.GetRotation() (1, 0), 0.00001);
+  ASSERT_NEAR(0.22011,  camera.GetRotation() (1, 1), 0.00001);
+  ASSERT_NEAR(0.78917,  camera.GetRotation() (1, 2), 0.00001);
+  ASSERT_NEAR(0.70711,  camera.GetRotation() (2, 0), 0.00001);
+  ASSERT_NEAR(-0.35355, camera.GetRotation() (2, 1), 0.00001);
+  ASSERT_NEAR(0.61237,  camera.GetRotation() (2, 2), 0.00001);
+
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(camera.GetRotation()));
+
+  OrthancStone::FiniteProjectiveCamera camera2(camera.GetIntrinsicParameters(),
+                                               camera.GetRotation(),
+                                               camera.GetCenter());
+
+  ASSERT_TRUE(CompareMatrix(camera.GetMatrix(), camera2.GetMatrix()));
+  ASSERT_TRUE(CompareMatrix(camera.GetIntrinsicParameters(), camera2.GetIntrinsicParameters()));
+  ASSERT_TRUE(CompareMatrix(camera.GetRotation(), camera2.GetRotation()));
+  ASSERT_TRUE(CompareVector(camera.GetCenter(), camera2.GetCenter()));
+}
+
+
+TEST(FiniteProjectiveCamera, Decomposition2)
+{
+  const double p[] = { 1188.111986, 580.205341, -808.445330, 128000.000000, -366.466264, 1446.510501, 418.499736, 128000.000000, -0.487118, 0.291726, -0.823172, 500.000000 };
+  const double k[] = { -1528.494743, 0.000000, 256.000000, 0.000000, 1528.494743, 256.000000, 0.000000, 0.000000, 1.000000 };
+  const double r[] = { -0.858893, -0.330733, 0.391047, -0.158171, 0.897503, 0.411668, -0.487118, 0.291726, -0.823172 };
+  const double c[] = { 243.558936, -145.863085, 411.585964 };
+
+  OrthancStone::FiniteProjectiveCamera camera(p);
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(camera.GetRotation()));
+
+  OrthancStone::FiniteProjectiveCamera camera2(k, r, c);
+  ASSERT_TRUE(CompareMatrix(camera.GetMatrix(), camera2.GetMatrix(), 1));
+  ASSERT_TRUE(CompareMatrix(camera.GetIntrinsicParameters(), camera2.GetIntrinsicParameters(), 0.001));
+  ASSERT_TRUE(CompareMatrix(camera.GetRotation(), camera2.GetRotation(), 0.000001));
+  ASSERT_TRUE(CompareVector(camera.GetCenter(), camera2.GetCenter(), 0.0001));
+}
+
+
+TEST(FiniteProjectiveCamera, Decomposition3)
+{
+  const double p[] = { 10, 0, 0, 0,
+                       0, 20, 0, 0,
+                       0, 0, 30, 0 };
+
+  OrthancStone::FiniteProjectiveCamera camera(p);
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(camera.GetRotation()));
+  ASSERT_DOUBLE_EQ(10, camera.GetIntrinsicParameters() (0, 0));
+  ASSERT_DOUBLE_EQ(20, camera.GetIntrinsicParameters() (1, 1));
+  ASSERT_DOUBLE_EQ(30, camera.GetIntrinsicParameters() (2, 2));
+  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (0, 0));
+  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (1, 1));
+  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (2, 2));
+  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (0));
+  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (1));
+  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (2));
+}
+
+
+TEST(FiniteProjectiveCamera, Decomposition4)
+{
+  const double p[] = { 1, 0, 0, 10,
+                       0, 1, 0, 20,
+                       0, 0, 1, 30 };
+
+  OrthancStone::FiniteProjectiveCamera camera(p);
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(camera.GetRotation()));
+  ASSERT_DOUBLE_EQ(1, camera.GetIntrinsicParameters() (0, 0));
+  ASSERT_DOUBLE_EQ(1, camera.GetIntrinsicParameters() (1, 1));
+  ASSERT_DOUBLE_EQ(1, camera.GetIntrinsicParameters() (2, 2));
+  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (0, 0));
+  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (1, 1));
+  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (2, 2));
+  ASSERT_DOUBLE_EQ(-10, camera.GetCenter() (0));
+  ASSERT_DOUBLE_EQ(-20, camera.GetCenter() (1));
+  ASSERT_DOUBLE_EQ(-30, camera.GetCenter() (2));
+}
+
+
+TEST(FiniteProjectiveCamera, Decomposition5)
+{
+  const double p[] = { 0, 0, 10, 0,
+                       0, 20, 0, 0,
+                       30, 0, 0, 0 };
+
+  OrthancStone::FiniteProjectiveCamera camera(p);
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(camera.GetRotation()));
+  ASSERT_DOUBLE_EQ(-10, camera.GetIntrinsicParameters() (0, 0));
+  ASSERT_DOUBLE_EQ(20, camera.GetIntrinsicParameters() (1, 1));
+  ASSERT_DOUBLE_EQ(30, camera.GetIntrinsicParameters() (2, 2));
+  ASSERT_DOUBLE_EQ(-1, camera.GetRotation() (0, 2));
+  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (1, 1));
+  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (2, 0));
+  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (0));
+  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (1));
+  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (2));
+
+  OrthancStone::FiniteProjectiveCamera camera2(camera.GetIntrinsicParameters(),
+                                               camera.GetRotation(),
+                                               camera.GetCenter());
+  ASSERT_TRUE(CompareMatrix(camera.GetMatrix(), camera2.GetMatrix()));
+  ASSERT_TRUE(CompareMatrix(camera.GetIntrinsicParameters(), camera2.GetIntrinsicParameters()));
+  ASSERT_TRUE(CompareMatrix(camera.GetRotation(), camera2.GetRotation()));
+  ASSERT_TRUE(CompareVector(camera.GetCenter(), camera2.GetCenter()));
+}
+
+
+static double GetCosAngle(const OrthancStone::Vector& a,
+                          const OrthancStone::Vector& b)
+{
+  // Returns the cosine of the angle between two vectors
+  // https://en.wikipedia.org/wiki/Dot_product#Geometric_definition
+  return boost::numeric::ublas::inner_prod(a, b) / 
+    (boost::numeric::ublas::norm_2(a) * boost::numeric::ublas::norm_2(b));
+}
+
+
+TEST(FiniteProjectiveCamera, Ray)
+{
+  const double pp[] = { -1499.650894, 2954.618773, -259.737419, 637891.819097,
+                        -2951.517707, -1501.019129, -285.785281, 637891.819097,
+                        0.008528, 0.003067, -0.999959, 2491.764918 };
+
+  const OrthancStone::FiniteProjectiveCamera camera(pp);
+
+  ASSERT_NEAR(-21.2492, camera.GetCenter() (0), 0.0001);
+  ASSERT_NEAR(-7.64234, camera.GetCenter() (1), 0.00001);
+  ASSERT_NEAR(2491.66, camera.GetCenter() (2), 0.01);
+
+  // Image plane that led to these parameters, with principal point at
+  // (256,256). The image has dimensions 512x512.
+  OrthancStone::Vector o =
+    OrthancStone::LinearAlgebra::CreateVector(7.009620, 2.521030, -821.942000);
+  OrthancStone::Vector ax =
+    OrthancStone::LinearAlgebra::CreateVector(-0.453219, 0.891399, -0.001131);
+  OrthancStone::Vector ay =
+    OrthancStone::LinearAlgebra::CreateVector(-0.891359, -0.453210, -0.008992);
+
+  OrthancStone::CoordinateSystem3D imagePlane(o, ax, ay);
+
+  // Back-projection of the principal point
+  {
+    OrthancStone::Vector ray = camera.GetRayDirection(256, 256);
+
+    // The principal axis vector is orthogonal to the image plane
+    // (i.e. parallel to the plane normal), in the opposite direction
+    // ("-1" corresponds to "cos(pi)").
+    ASSERT_NEAR(-1, GetCosAngle(ray, imagePlane.GetNormal()), 0.0000001);
+
+    // Forward projection of principal axis, resulting in the principal point
+    double x, y;
+    camera.ApplyFinite(x, y, camera.GetCenter() - ray);
+
+    ASSERT_NEAR(256, x, 0.00001);
+    ASSERT_NEAR(256, y, 0.00001);
+  }
+
+  // Back-projection of the 4 corners of the image
+  std::vector<double> cx, cy;
+  cx.push_back(0);
+  cy.push_back(0);
+  cx.push_back(512);
+  cy.push_back(0);
+  cx.push_back(512);
+  cy.push_back(512);
+  cx.push_back(0);
+  cy.push_back(512);
+
+  bool first = true;
+  double angle;
+
+  for (size_t i = 0; i < cx.size(); i++)
+  {
+    OrthancStone::Vector ray = camera.GetRayDirection(cx[i], cy[i]);
+
+    // Check that the angle wrt. principal axis is the same for all
+    // the 4 corners
+    double a = GetCosAngle(ray, imagePlane.GetNormal());
+    if (first)
+    {
+      first = false;
+      angle = a;
+    }
+    else
+    {
+      ASSERT_NEAR(angle, a, 0.000001);
+    }
+
+    // Forward projection of the ray, going back to the original point
+    double x, y;
+    camera.ApplyFinite(x, y, camera.GetCenter() - ray);
+    
+    ASSERT_NEAR(cx[i], x, 0.00001);
+    ASSERT_NEAR(cy[i], y, 0.00001);
+
+    // Alternative construction, by computing the intersection of the
+    // ray with the image plane
+    OrthancStone::Vector p;
+    ASSERT_TRUE(imagePlane.IntersectLine(p, camera.GetCenter(), -ray));
+    imagePlane.ProjectPoint(x, y, p);
+    ASSERT_NEAR(cx[i], x + 256, 0.01);
+    ASSERT_NEAR(cy[i], y + 256, 0.01);
+  }
+}
+
+
+TEST(Matrix, Inverse1)
+{
+  OrthancStone::Matrix a, b;
+
+  a.resize(0, 0);
+  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
+  ASSERT_EQ(0u, b.size1());
+  ASSERT_EQ(0u, b.size2());
+
+  a.resize(2, 3);
+  ASSERT_THROW(OrthancStone::LinearAlgebra::InvertMatrix(b, a), Orthanc::OrthancException);
+
+  a.resize(1, 1);
+  a(0, 0) = 45.0;
+
+  ASSERT_DOUBLE_EQ(45, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
+  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
+  ASSERT_EQ(1u, b.size1());
+  ASSERT_EQ(1u, b.size2());
+  ASSERT_DOUBLE_EQ(1.0 / 45.0, b(0, 0));
+
+  a(0, 0) = 0;
+  ASSERT_DOUBLE_EQ(0, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
+  ASSERT_THROW(OrthancStone::LinearAlgebra::InvertMatrix(b, a), Orthanc::OrthancException);
+}
+
+
+TEST(Matrix, Inverse2)
+{
+  OrthancStone::Matrix a, b;
+  a.resize(2, 2);
+  a(0, 0) = 4;
+  a(0, 1) = 3;
+  a(1, 0) = 3;
+  a(1, 1) = 2;
+
+  ASSERT_DOUBLE_EQ(-1, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
+  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
+  ASSERT_EQ(2u, b.size1());
+  ASSERT_EQ(2u, b.size2());
+
+  ASSERT_DOUBLE_EQ(-2, b(0, 0));
+  ASSERT_DOUBLE_EQ(3, b(0, 1));
+  ASSERT_DOUBLE_EQ(3, b(1, 0));
+  ASSERT_DOUBLE_EQ(-4, b(1, 1));
+
+  a(0, 0) = 1;
+  a(0, 1) = 2;
+  a(1, 0) = 3;
+  a(1, 1) = 4;
+
+  ASSERT_DOUBLE_EQ(-2, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
+  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
+
+  ASSERT_DOUBLE_EQ(-2, b(0, 0));
+  ASSERT_DOUBLE_EQ(1, b(0, 1));
+  ASSERT_DOUBLE_EQ(1.5, b(1, 0));
+  ASSERT_DOUBLE_EQ(-0.5, b(1, 1));
+}
+
+
+TEST(Matrix, Inverse3)
+{
+  OrthancStone::Matrix a, b;
+  a.resize(3, 3);
+  a(0, 0) = 7;
+  a(0, 1) = 2;
+  a(0, 2) = 1;
+  a(1, 0) = 0;
+  a(1, 1) = 3;
+  a(1, 2) = -1;
+  a(2, 0) = -3;
+  a(2, 1) = 4;
+  a(2, 2) = -2;
+
+  ASSERT_DOUBLE_EQ(1, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
+  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
+  ASSERT_EQ(3u, b.size1());
+  ASSERT_EQ(3u, b.size2());
+
+  ASSERT_DOUBLE_EQ(-2, b(0, 0));
+  ASSERT_DOUBLE_EQ(8, b(0, 1));
+  ASSERT_DOUBLE_EQ(-5, b(0, 2));
+  ASSERT_DOUBLE_EQ(3, b(1, 0));
+  ASSERT_DOUBLE_EQ(-11, b(1, 1));
+  ASSERT_DOUBLE_EQ(7, b(1, 2));
+  ASSERT_DOUBLE_EQ(9, b(2, 0));
+  ASSERT_DOUBLE_EQ(-34, b(2, 1));
+  ASSERT_DOUBLE_EQ(21, b(2, 2));
+
+
+  a(0, 0) = 1;
+  a(0, 1) = 2;
+  a(0, 2) = 2;
+  a(1, 0) = 1;
+  a(1, 1) = 0;
+  a(1, 2) = 1;
+  a(2, 0) = 1;
+  a(2, 1) = 2;
+  a(2, 2) = 1;
+
+  ASSERT_DOUBLE_EQ(2, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
+  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
+  ASSERT_EQ(3u, b.size1());
+  ASSERT_EQ(3u, b.size2());
+
+  ASSERT_DOUBLE_EQ(-1, b(0, 0));
+  ASSERT_DOUBLE_EQ(1, b(0, 1));
+  ASSERT_DOUBLE_EQ(1, b(0, 2));
+  ASSERT_DOUBLE_EQ(0, b(1, 0));
+  ASSERT_DOUBLE_EQ(-0.5, b(1, 1));
+  ASSERT_DOUBLE_EQ(0.5, b(1, 2));
+  ASSERT_DOUBLE_EQ(1, b(2, 0));
+  ASSERT_DOUBLE_EQ(0, b(2, 1));
+  ASSERT_DOUBLE_EQ(-1, b(2, 2));
+}
+
+
+TEST(Matrix, Inverse4)
+{
+  OrthancStone::Matrix a, b;
+  a.resize(4, 4);
+  a(0, 0) = 2;
+  a(0, 1) = 1;
+  a(0, 2) = 2;
+  a(0, 3) = -3;
+  a(1, 0) = -2;
+  a(1, 1) = 2;
+  a(1, 2) = -1;
+  a(1, 3) = -1;
+  a(2, 0) = 2;
+  a(2, 1) = 2;
+  a(2, 2) = -3;
+  a(2, 3) = -1;
+  a(3, 0) = 3;
+  a(3, 1) = -2;
+  a(3, 2) = -3;
+  a(3, 3) = -1;
+
+  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
+  ASSERT_EQ(4u, b.size1());
+  ASSERT_EQ(4u, b.size2());
+
+  b *= 134.0;  // This is the determinant
+
+  ASSERT_DOUBLE_EQ(8, b(0, 0));
+  ASSERT_DOUBLE_EQ(-44, b(0, 1));
+  ASSERT_DOUBLE_EQ(30, b(0, 2));
+  ASSERT_DOUBLE_EQ(-10, b(0, 3));
+  ASSERT_DOUBLE_EQ(2, b(1, 0));
+  ASSERT_DOUBLE_EQ(-11, b(1, 1));
+  ASSERT_DOUBLE_EQ(41, b(1, 2));
+  ASSERT_DOUBLE_EQ(-36, b(1, 3));
+  ASSERT_DOUBLE_EQ(16, b(2, 0));
+  ASSERT_DOUBLE_EQ(-21, b(2, 1));
+  ASSERT_DOUBLE_EQ(-7, b(2, 2));
+  ASSERT_DOUBLE_EQ(-20, b(2, 3));
+  ASSERT_DOUBLE_EQ(-28, b(3, 0));
+  ASSERT_DOUBLE_EQ(-47, b(3, 1));
+  ASSERT_DOUBLE_EQ(29, b(3, 2));
+  ASSERT_DOUBLE_EQ(-32, b(3, 3));
+}
+
+
+TEST(FiniteProjectiveCamera, Calibration)
+{
+  unsigned int volumeWidth = 512;
+  unsigned int volumeHeight = 512;
+  unsigned int volumeDepth = 110;
+
+  OrthancStone::Vector camera = OrthancStone::LinearAlgebra::CreateVector
+    (-1000, -5000, -static_cast<double>(volumeDepth) * 32);
+
+  OrthancStone::Vector principalPoint = OrthancStone::LinearAlgebra::CreateVector
+    (volumeWidth/2, volumeHeight/2, volumeDepth * 2);
+
+  OrthancStone::FiniteProjectiveCamera c(camera, principalPoint, 0, 512, 512, 1, 1);
+
+  double swapv[9] = { 1, 0, 0,
+                      0, -1, 512,
+                      0, 0, 1 };
+  OrthancStone::Matrix swap;
+  OrthancStone::LinearAlgebra::FillMatrix(swap, 3, 3, swapv);
+
+  OrthancStone::Matrix p = OrthancStone::LinearAlgebra::Product(swap, c.GetMatrix());
+  p /= p(2,3);
+
+  ASSERT_NEAR( 1.04437,     p(0,0), 0.00001);
+  ASSERT_NEAR(-0.0703111,   p(0,1), 0.00000001);
+  ASSERT_NEAR(-0.179283,    p(0,2), 0.000001);
+  ASSERT_NEAR( 61.7431,     p(0,3), 0.0001);
+  ASSERT_NEAR( 0.11127,     p(1,0), 0.000001);
+  ASSERT_NEAR(-0.595541,    p(1,1), 0.000001);
+  ASSERT_NEAR( 0.872211,    p(1,2), 0.000001);
+  ASSERT_NEAR( 203.748,     p(1,3), 0.001);
+  ASSERT_NEAR( 3.08593e-05, p(2,0), 0.0000000001);
+  ASSERT_NEAR( 0.000129138, p(2,1), 0.000000001);
+  ASSERT_NEAR( 9.18901e-05, p(2,2), 0.0000000001);
+  ASSERT_NEAR( 1,           p(2,3), 0.0000001);
+}
+
+
+static bool IsEqualRotationVector(OrthancStone::Vector a,
+                                  OrthancStone::Vector b)
+{
+  if (a.size() != b.size() ||
+      a.size() != 3)
+  {
+    return false;
+  }
+  else
+  {
+    OrthancStone::LinearAlgebra::NormalizeVector(a);
+    OrthancStone::LinearAlgebra::NormalizeVector(b);
+    return OrthancStone::LinearAlgebra::IsCloseToZero(boost::numeric::ublas::norm_2(a - b));
+  }
+}
+
+
+TEST(GeometryToolbox, AlignVectorsWithRotation)
+{
+  OrthancStone::Vector a, b;
+  OrthancStone::Matrix r;
+
+  OrthancStone::LinearAlgebra::AssignVector(a, -200, 200, -846.63);
+  OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
+
+  OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b);
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(r));
+  ASSERT_TRUE(IsEqualRotationVector(OrthancStone::LinearAlgebra::Product(r, a), b));
+
+  OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, b, a);
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(r));
+  ASSERT_TRUE(IsEqualRotationVector(OrthancStone::LinearAlgebra::Product(r, b), a));
+
+  OrthancStone::LinearAlgebra::AssignVector(a, 1, 0, 0);
+  OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
+  OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b);
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(r));
+  ASSERT_TRUE(IsEqualRotationVector(OrthancStone::LinearAlgebra::Product(r, a), b));
+
+  OrthancStone::LinearAlgebra::AssignVector(a, 0, 1, 0);
+  OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
+  OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b);
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(r));
+  ASSERT_TRUE(IsEqualRotationVector(OrthancStone::LinearAlgebra::Product(r, a), b));
+
+  OrthancStone::LinearAlgebra::AssignVector(a, 0, 0, 1);
+  OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
+  OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b);
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(r));
+  ASSERT_TRUE(IsEqualRotationVector(OrthancStone::LinearAlgebra::Product(r, a), b));
+
+  OrthancStone::LinearAlgebra::AssignVector(a, 0, 0, 0);
+  OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
+  ASSERT_THROW(OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b), Orthanc::OrthancException);
+
+  // TODO: Deal with opposite vectors
+
+  /*
+    OrthancStone::LinearAlgebra::AssignVector(a, 0, 0, -1);
+    OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
+    OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b);
+    OrthancStone::LinearAlgebra::Print(r);
+    OrthancStone::LinearAlgebra::Print(boost::numeric::ublas::prod(r, a));
+  */
+}
+
+
+static bool IsEqualVectorL1(OrthancStone::Vector a,
+                            OrthancStone::Vector b)
+{
+  if (a.size() != b.size())
+  {
+    return false;
+  }
+  else
+  {
+    for (size_t i = 0; i < a.size(); i++)
+    {
+      if (!OrthancStone::LinearAlgebra::IsNear(a[i], b[i], 0.0001))
+      {
+        return false;
+      }
+    }
+
+    return true;
+  }
+}
+
+
+TEST(VolumeImageGeometry, Basic)
+{
+  using namespace OrthancStone;
+  
+  VolumeImageGeometry g;
+  g.SetSizeInVoxels(10, 20, 30);
+  g.SetVoxelDimensions(1, 2, 3);
+
+  Vector p = g.GetCoordinates(0, 0, 0);
+  ASSERT_EQ(3u, p.size());
+  ASSERT_DOUBLE_EQ(-1.0 / 2.0, p[0]);
+  ASSERT_DOUBLE_EQ(-2.0 / 2.0, p[1]);
+  ASSERT_DOUBLE_EQ(-3.0 / 2.0, p[2]);
+  
+  p = g.GetCoordinates(1, 1, 1);
+  ASSERT_DOUBLE_EQ(-1.0 / 2.0 + 10.0 * 1.0, p[0]);
+  ASSERT_DOUBLE_EQ(-2.0 / 2.0 + 20.0 * 2.0, p[1]);
+  ASSERT_DOUBLE_EQ(-3.0 / 2.0 + 30.0 * 3.0, p[2]);
+
+  VolumeProjection proj;
+  ASSERT_TRUE(g.DetectProjection(proj, g.GetAxialGeometry().GetNormal()));
+  ASSERT_EQ(VolumeProjection_Axial, proj);
+  ASSERT_TRUE(g.DetectProjection(proj, g.GetCoronalGeometry().GetNormal()));
+  ASSERT_EQ(VolumeProjection_Coronal, proj);
+  ASSERT_TRUE(g.DetectProjection(proj, g.GetSagittalGeometry().GetNormal()));
+  ASSERT_EQ(VolumeProjection_Sagittal, proj);
+
+  ASSERT_EQ(10u, g.GetProjectionWidth(VolumeProjection_Axial));
+  ASSERT_EQ(20u, g.GetProjectionHeight(VolumeProjection_Axial));
+  ASSERT_EQ(30u, g.GetProjectionDepth(VolumeProjection_Axial));
+  ASSERT_EQ(10u, g.GetProjectionWidth(VolumeProjection_Coronal));
+  ASSERT_EQ(30u, g.GetProjectionHeight(VolumeProjection_Coronal));
+  ASSERT_EQ(20u, g.GetProjectionDepth(VolumeProjection_Coronal));
+  ASSERT_EQ(20u, g.GetProjectionWidth(VolumeProjection_Sagittal));
+  ASSERT_EQ(30u, g.GetProjectionHeight(VolumeProjection_Sagittal));
+  ASSERT_EQ(10u, g.GetProjectionDepth(VolumeProjection_Sagittal));
+
+  p = g.GetVoxelDimensions(VolumeProjection_Axial);
+  ASSERT_EQ(3u, p.size());
+  ASSERT_DOUBLE_EQ(1, p[0]);
+  ASSERT_DOUBLE_EQ(2, p[1]);
+  ASSERT_DOUBLE_EQ(3, p[2]);
+  p = g.GetVoxelDimensions(VolumeProjection_Coronal);
+  ASSERT_EQ(3u, p.size());
+  ASSERT_DOUBLE_EQ(1, p[0]);
+  ASSERT_DOUBLE_EQ(3, p[1]);
+  ASSERT_DOUBLE_EQ(2, p[2]);
+  p = g.GetVoxelDimensions(VolumeProjection_Sagittal);
+  ASSERT_EQ(3u, p.size());
+  ASSERT_DOUBLE_EQ(2, p[0]);
+  ASSERT_DOUBLE_EQ(3, p[1]);
+  ASSERT_DOUBLE_EQ(1, p[2]);
+
+  // Loop over all the voxels of the volume
+  for (unsigned int z = 0; z < g.GetDepth(); z++)
+  {
+    const float zz = (0.5f + static_cast<float>(z)) / static_cast<float>(g.GetDepth());  // Z-center of the voxel
+    
+    for (unsigned int y = 0; y < g.GetHeight(); y++)
+    {
+      const float yy = (0.5f + static_cast<float>(y)) / static_cast<float>(g.GetHeight());  // Y-center of the voxel
+
+      for (unsigned int x = 0; x < g.GetWidth(); x++)
+      {
+        const float xx = (0.5f + static_cast<float>(x)) / static_cast<float>(g.GetWidth());  // X-center of the voxel
+
+        const float sx = 1.0f;
+        const float sy = 2.0f;
+        const float sz = 3.0f;
+        
+        Vector p = g.GetCoordinates(xx, yy, zz);
+
+        Vector q = (g.GetAxialGeometry().MapSliceToWorldCoordinates(
+                      static_cast<double>(x) * sx,
+                      static_cast<double>(y) * sy) +
+                    z * sz * g.GetAxialGeometry().GetNormal());
+        ASSERT_TRUE(IsEqualVectorL1(p, q));
+        
+        q = (g.GetCoronalGeometry().MapSliceToWorldCoordinates(
+               static_cast<double>(x) * sx,
+               static_cast<double>(g.GetDepth() - 1 - z) * sz) +
+             y * sy * g.GetCoronalGeometry().GetNormal());
+        ASSERT_TRUE(IsEqualVectorL1(p, q));
+
+        /**
+         * WARNING: In sagittal geometry, the normal points to
+         * REDUCING X-axis in the 3D world. This is necessary to keep
+         * the right-hand coordinate system. Hence the "-".
+         **/
+        q = (g.GetSagittalGeometry().MapSliceToWorldCoordinates(
+               static_cast<double>(y) * sy,
+               static_cast<double>(g.GetDepth() - 1 - z) * sz) +
+             x * sx * (-g.GetSagittalGeometry().GetNormal()));
+        ASSERT_TRUE(IsEqualVectorL1(p, q));
+      }
+    }
+  }
+
+  ASSERT_EQ(0, (int) VolumeProjection_Axial);
+  ASSERT_EQ(1, (int) VolumeProjection_Coronal);
+  ASSERT_EQ(2, (int) VolumeProjection_Sagittal);
+  
+  for (int p = 0; p < 3; p++)
+  {
+    VolumeProjection projection = (VolumeProjection) p;
+    const CoordinateSystem3D& s = g.GetProjectionGeometry(projection);
+    
+    ASSERT_THROW(g.GetProjectionSlice(projection, g.GetProjectionDepth(projection)), Orthanc::OrthancException);
+
+    for (unsigned int i = 0; i < g.GetProjectionDepth(projection); i++)
+    {
+      CoordinateSystem3D plane = g.GetProjectionSlice(projection, i);
+
+      if (projection == VolumeProjection_Sagittal)
+      {
+        ASSERT_TRUE(IsEqualVectorL1(plane.GetOrigin(), s.GetOrigin() + static_cast<double>(i) * 
+                                    (-s.GetNormal()) * g.GetVoxelDimensions(projection)[2]));
+      }
+      else
+      {
+        ASSERT_TRUE(IsEqualVectorL1(plane.GetOrigin(), s.GetOrigin() + static_cast<double>(i) * 
+                                    s.GetNormal() * g.GetVoxelDimensions(projection)[2]));
+      }
+      
+      ASSERT_TRUE(IsEqualVectorL1(plane.GetAxisX(), s.GetAxisX()));
+      ASSERT_TRUE(IsEqualVectorL1(plane.GetAxisY(), s.GetAxisY()));
+
+      unsigned int slice;
+      VolumeProjection q;
+      ASSERT_TRUE(g.DetectSlice(q, slice, plane));
+      ASSERT_EQ(projection, q);
+      ASSERT_EQ(i, slice);
+    }
+  }
+}
+
+
+TEST(LinearAlgebra, ParseVectorLocale)
+{
+  OrthancStone::Vector v;
+
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::ParseVector(v, "1.2"));
+  ASSERT_EQ(1u, v.size());
+  ASSERT_DOUBLE_EQ(1.2, v[0]);
+
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::ParseVector(v, "-1.2e+2"));
+  ASSERT_EQ(1u, v.size());
+  ASSERT_DOUBLE_EQ(-120.0, v[0]);
+
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::ParseVector(v, "-1e-2\\2"));
+  ASSERT_EQ(2u, v.size());
+  ASSERT_DOUBLE_EQ(-0.01, v[0]);
+  ASSERT_DOUBLE_EQ(2.0, v[1]);
+
+  ASSERT_TRUE(OrthancStone::LinearAlgebra::ParseVector(v, "1.3671875\\1.3671875"));
+  ASSERT_EQ(2u, v.size());
+  ASSERT_DOUBLE_EQ(1.3671875, v[0]);
+  ASSERT_DOUBLE_EQ(1.3671875, v[1]); 
+}
+
+TEST(LoaderCache, NormalizeUuid)
+{
+  std::string ref("44ca5051-14ef-4d2f-8bd7-db20bfb61fbb");
+
+  {
+    std::string u("44ca5051-14ef-4d2f-8bd7-db20bfb61fbb");
+    OrthancStone::LoaderCache::NormalizeUuid(u);
+    ASSERT_EQ(ref, u);
+  }
+
+  // space left
+  {
+    std::string u("  44ca5051-14ef-4d2f-8bd7-db20bfb61fbb");
+    OrthancStone::LoaderCache::NormalizeUuid(u);
+    ASSERT_EQ(ref, u);
+  }
+
+  // space right
+  {
+    std::string u("44ca5051-14ef-4d2f-8bd7-db20bfb61fbb  ");
+    OrthancStone::LoaderCache::NormalizeUuid(u);
+    ASSERT_EQ(ref, u);
+  }
+
+  // space l & r 
+  {
+    std::string u("  44ca5051-14ef-4d2f-8bd7-db20bfb61fbb  ");
+    OrthancStone::LoaderCache::NormalizeUuid(u);
+    ASSERT_EQ(ref, u);
+  }
+
+  // space left + case 
+  {
+    std::string u("  44CA5051-14ef-4d2f-8bd7-dB20bfb61fbb");
+    OrthancStone::LoaderCache::NormalizeUuid(u);
+    ASSERT_EQ(ref, u);
+  }
+
+  // space right + case 
+  {
+    std::string u("44ca5051-14EF-4D2f-8bd7-db20bfb61fbB  ");
+    OrthancStone::LoaderCache::NormalizeUuid(u);
+    ASSERT_EQ(ref, u);
+  }
+
+  // space l & r + case
+  {
+    std::string u("  44cA5051-14Ef-4d2f-8bD7-db20bfb61fbb  ");
+    OrthancStone::LoaderCache::NormalizeUuid(u);
+    ASSERT_EQ(ref, u);
+  }
+
+  // no
+  {
+    std::string u("  44ca5051-14ef-4d2f-8bd7-  db20bfb61fbb");
+    OrthancStone::LoaderCache::NormalizeUuid(u);
+    ASSERT_NE(ref, u);
+  }
+
+  // no
+  {
+    std::string u("44ca5051-14ef-4d2f-8bd7-db20bfb61fb");
+    OrthancStone::LoaderCache::NormalizeUuid(u);
+    ASSERT_NE(ref, u);
+  }
+}
+
+
+int main(int argc, char **argv)
+{
+  Orthanc::Logging::Initialize();
+  Orthanc::Logging::EnableInfoLevel(true);
+
+  ::testing::InitGoogleTest(&argc, argv);
+  int result = RUN_ALL_TESTS();
+
+  Orthanc::Logging::Finalize();
+
+  return result;
+}
--- a/Resources/CMake/CairoConfiguration.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,257 +0,0 @@
-# Stone of Orthanc
-# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
-# Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
-#
-# This program is free software: you can redistribute it and/or
-# modify it under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Affero General Public License for more details.
-# 
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# ./configure --disable-pdf --disable-svg --disable-xlib --disable-xcb --disable-script --disable-ps --disable-ft --disable-fc --disable-png --disable-trace --disable-interpreter
-
-
-if (STATIC_BUILD OR NOT USE_SYSTEM_CAIRO)
-  SET(CAIRO_SOURCES_DIR ${CMAKE_BINARY_DIR}/cairo-1.14.12)
-  SET(CAIRO_URL "http://orthanc.osimis.io/ThirdPartyDownloads/cairo-1.14.12.tar.xz")
-  SET(CAIRO_MD5 "9f0db9dbfca0966be8acd682e636d165")
-
-  DownloadPackage(${CAIRO_MD5} ${CAIRO_URL} "${CAIRO_SOURCES_DIR}")
-
-  file(COPY 
-    ${CMAKE_CURRENT_LIST_DIR}/cairo-features.h
-    DESTINATION ${CAIRO_SOURCES_DIR}/src
-    )
-
-  set(CAIRO_SOURCES
-    ${CAIRO_SOURCES_DIR}/src/cairo-analysis-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-arc.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-array.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-atomic.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-base64-stream.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-base85-stream.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-bentley-ottmann.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-bentley-ottmann-rectangular.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-bentley-ottmann-rectilinear.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-botor-scan-converter.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-boxes.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-boxes-intersect.c
-    ${CAIRO_SOURCES_DIR}/src/cairo.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-cache.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-cff-subset.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-clip-boxes.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-clip.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-clip-polygon.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-clip-region.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-clip-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-clip-tor-scan-converter.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-cogl-context.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-cogl-gradient.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-cogl-surface.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-cogl-utils.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-color.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-composite-rectangles.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-compositor.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-contour.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-damage.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-debug.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-default-context.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-deflate-stream.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-device.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-directfb-surface.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-egl-context.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-error.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-fallback-compositor.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-fixed.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-font-face.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-font-face-twin.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-font-face-twin-data.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-font-options.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-freed-pool.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-freelist.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-ft-font.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-composite.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-device.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-dispatch.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-glyphs.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-gradient.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-info.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-msaa-compositor.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-operand.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-shaders.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-source.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-spans-compositor.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-surface.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-gl-traps-compositor.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-glx-context.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-gstate.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-hash.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-hull.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-image-compositor.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-image-info.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-image-source.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-image-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-line.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-lzw.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-mask-compositor.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-matrix.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-mempool.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-mesh-pattern-rasterizer.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-misc.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-mono-scan-converter.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-mutex.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-no-compositor.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-observer.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-os2-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-output-stream.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-paginated-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-path-bounds.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-path.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-path-fill.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-path-fixed.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-path-in-fill.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-path-stroke-boxes.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-path-stroke.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-path-stroke-polygon.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-path-stroke-traps.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-path-stroke-tristrip.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-pattern.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-pdf-operators.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-pdf-shading.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-pdf-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-pen.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-png.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-polygon.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-polygon-intersect.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-polygon-reduce.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-ps-surface.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-quartz-font.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-quartz-image-surface.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-quartz-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-raster-source-pattern.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-recording-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-rectangle.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-rectangular-scan-converter.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-region.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-rtree.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-scaled-font.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-scaled-font-subsets.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-script-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-shape-mask-compositor.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-slope.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-spans.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-spans-compositor.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-spline.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-stroke-dash.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-stroke-style.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-surface-clipper.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-surface-fallback.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-surface-observer.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-surface-offset.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-surface-snapshot.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-surface-subsurface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-surface-wrapper.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-svg-surface.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-tee-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-time.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-tor22-scan-converter.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-tor-scan-converter.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-toy-font-face.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-traps.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-traps-compositor.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-tristrip.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-truetype-subset.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-type1-fallback.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-type1-glyph-names.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-type1-subset.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-type3-glyph-surface.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-unicode.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-user-font.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-version.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-vg-surface.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-wgl-context.c
-    ${CAIRO_SOURCES_DIR}/src/cairo-wideint.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-connection.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-connection-core.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-connection-render.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-connection-shm.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-resources.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-screen.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-shm.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-surface.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-surface-core.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xcb-surface-render.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-core-compositor.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-display.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-fallback-compositor.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-render-compositor.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-screen.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-source.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-surface.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-surface-shm.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-visual.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xlib-xcb-surface.c
-    # ${CAIRO_SOURCES_DIR}/src/cairo-xml-surface.c
-    )
-
-  include_directories(${CAIRO_SOURCES_DIR}/src)
-
-  set(CAIRO_DEFINITIONS "HAS_PIXMAN_GLYPHS=1")
-
-  if (${CMAKE_SYSTEM_NAME} STREQUAL "PNaCl")
-    # Disable vectorized instructions when targeting archicture-independent PNaCl
-    set(CAIRO_DEFINITIONS "${CAIRO_DEFINITIONS};HAVE_STDINT_H=1;CAIRO_HAS_PTHREAD=1;HAVE_UINT64_T=1")
-
-  elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten" OR
-          ${CMAKE_SYSTEM_NAME} STREQUAL "Android")
-    # Disable vectorized instructions and threading if targeting asm.js
-    set(CAIRO_DEFINITIONS "${CAIRO_DEFINITIONS};HAVE_STDINT_H=1;CAIRO_HAS_PTHREAD=0;CAIRO_NO_MUTEX=1;HAVE_UINT64_T=1")
-
-  elseif (CMAKE_COMPILER_IS_GNUCXX OR
-      CMAKE_SYSTEM_NAME STREQUAL "Darwin")
-
-    set(CAIRO_DEFINITIONS "${CAIRO_DEFINITIONS};HAVE_STDINT_H=1;CAIRO_HAS_PTHREAD=1;HAVE_UINT64_T=1;CAIRO_HAS_REAL_PTHREAD=1;HAVE_GCC_VECTOR_EXTENSIONS;HAVE_FLOAT128")
-
-    if (CMAKE_COMPILER_IS_GNUCXX)
-      set_property(
-        SOURCE ${CAIRO_SOURCES}
-        PROPERTY COMPILE_FLAGS "-Wno-attributes"
-        )
-    endif()
-
-  elseif (MSVC)
-    # The cairo source code comes with built-in support for Visual Studio
-
-  else()
-    message(FATAL_ERROR "Support your platform here")
-
-  endif()
-
-
-  if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
-    # Explicitly request static building on Windows
-    add_definitions(-DCAIRO_WIN32_STATIC_BUILD=1)
-  endif()
-
-
-  set_property(
-    SOURCE ${CAIRO_SOURCES}
-    PROPERTY COMPILE_DEFINITIONS "${CAIRO_DEFINITIONS}"
-    )
-
-else()
-
-  pkg_search_module(CAIRO REQUIRED cairo)
-  include_directories(${CAIRO_INCLUDE_DIRS})
-  link_libraries(${CAIRO_LIBRARIES})
-endif()
--- a/Resources/CMake/FreetypeConfiguration.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-if (STATIC_BUILD OR NOT USE_SYSTEM_FREETYPE)
-  set(FREETYPE_SOURCES_DIR ${CMAKE_BINARY_DIR}/freetype-2.9.1)
-  set(FREETYPE_URL "http://orthanc.osimis.io/ThirdPartyDownloads/freetype-2.9.1.tar.gz")
-  set(FREETYPE_MD5 "3adb0e35d3c100c456357345ccfa8056")
-
-  DownloadPackage(${FREETYPE_MD5} ${FREETYPE_URL} "${FREETYPE_SOURCES_DIR}")
-
-  include_directories(BEFORE
-    ${FREETYPE_SOURCES_DIR}/include/
-    )
-
-  add_definitions(
-    -DFT2_BUILD_LIBRARY
-    -DFT_CONFIG_OPTION_NO_ASSEMBLER
-    )
-    
-  set(FREETYPE_SOURCES
-    ${FREETYPE_SOURCES_DIR}/src/autofit/autofit.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftbase.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftbbox.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftbdf.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftbitmap.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftcid.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftfstype.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftgasp.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftglyph.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftgxval.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftinit.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftmm.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftotval.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftpatent.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftpfr.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftstroke.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftsynth.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftsystem.c
-    ${FREETYPE_SOURCES_DIR}/src/base/fttype1.c
-    ${FREETYPE_SOURCES_DIR}/src/base/ftwinfnt.c
-    ${FREETYPE_SOURCES_DIR}/src/bdf/bdf.c
-    ${FREETYPE_SOURCES_DIR}/src/bzip2/ftbzip2.c
-    ${FREETYPE_SOURCES_DIR}/src/cache/ftcache.c
-    ${FREETYPE_SOURCES_DIR}/src/cff/cff.c
-    ${FREETYPE_SOURCES_DIR}/src/cid/type1cid.c
-    ${FREETYPE_SOURCES_DIR}/src/gzip/ftgzip.c
-    ${FREETYPE_SOURCES_DIR}/src/lzw/ftlzw.c
-    ${FREETYPE_SOURCES_DIR}/src/pcf/pcf.c
-    ${FREETYPE_SOURCES_DIR}/src/pfr/pfr.c
-    ${FREETYPE_SOURCES_DIR}/src/psaux/psaux.c
-    ${FREETYPE_SOURCES_DIR}/src/pshinter/pshinter.c
-    ${FREETYPE_SOURCES_DIR}/src/psnames/psnames.c
-    ${FREETYPE_SOURCES_DIR}/src/raster/raster.c
-    ${FREETYPE_SOURCES_DIR}/src/sfnt/sfnt.c
-    ${FREETYPE_SOURCES_DIR}/src/smooth/smooth.c
-    ${FREETYPE_SOURCES_DIR}/src/truetype/truetype.c
-    ${FREETYPE_SOURCES_DIR}/src/type1/type1.c
-    ${FREETYPE_SOURCES_DIR}/src/type42/type42.c
-    ${FREETYPE_SOURCES_DIR}/src/winfonts/winfnt.c
-    )
-
-  if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
-    list(APPEND FREETYPE_SOURCES
-      ${FREETYPE_SOURCES_DIR}/builds/windows/ftdebug.c
-      )
-  endif()
-
-  foreach(header
-      ${FREETYPE_SOURCES_DIR}/include/freetype/config/ftconfig.h
-      ${FREETYPE_SOURCES_DIR}/include/freetype/config/ftoption.h
-      )
-
-    set_source_files_properties(
-      ${FREETYPE_SOURCES}
-      PROPERTIES OBJECT_DEPENDS ${header}
-      )
-  endforeach()
-
-  source_group(ThirdParty\\Freetype REGULAR_EXPRESSION ${FREETYPE_SOURCES_DIR}/.*)
-
-else()
-  include(FindFreetype)
-
-  if (NOT FREETYPE_FOUND)
-    message(FATAL_ERROR "Please install the libfreetype6-dev package")
-  endif()
-
-  include_directories(${FREETYPE_INCLUDE_DIRS})
-  link_libraries(${FREETYPE_LIBRARIES})
-endif()
--- a/Resources/CMake/GlewConfiguration.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-# Stone of Orthanc
-# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
-# Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
-#
-# This program is free software: you can redistribute it and/or
-# modify it under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Affero General Public License for more details.
-# 
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-if (STATIC_BUILD OR NOT USE_SYSTEM_GLEW)
-  SET(GLEW_SOURCES_DIR ${CMAKE_BINARY_DIR}/glew-2.1.0)
-  SET(GLEW_URL "http://orthanc.osimis.io/ThirdPartyDownloads/glew-2.1.0.tgz")
-  SET(GLEW_MD5 "b2ab12331033ddfaa50dc39345343980")
-  DownloadPackage(${GLEW_MD5} ${GLEW_URL} "${GLEW_SOURCES_DIR}")
-
-  set(GLEW_SOURCES
-    ${GLEW_SOURCES_DIR}/src/glew.c
-    )
-
-  include_directories(${GLEW_SOURCES_DIR}/include)
-
-  add_definitions(
-    -DGLEW_STATIC=1
-    )
-
-else()
-  include(FindGLEW)
-  if (NOT GLEW_FOUND)
-    message(FATAL_ERROR "Please install the libglew-dev package")
-  endif()
-  
-  include_directories(${GLEW_INCLUDE_DIRS})
-  link_libraries(${GLEW_LIBRARIES})
-endif()
--- a/Resources/CMake/LinuxStandardBaseUic.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#!/usr/bin/env python
-
-import subprocess
-import sys
-
-if len(sys.argv) <= 1:
-    sys.stderr.write('Please provide arguments for uic\n')
-    sys.exit(-1)
-
-path = ''
-pos = 1
-while pos < len(sys.argv):
-    if sys.argv[pos].startswith('-'):
-        pos += 2
-    else:
-        path = sys.argv[pos]
-        break
-
-if len(path) == 0:
-    sys.stderr.write('Unable to find the input file in the arguments to uic\n')
-    sys.exit(-1)
-
-with open(path, 'r') as f:
-    lines = f.read().split('\n')
-    if (len(lines) > 1 and
-        lines[0].startswith('<?')):
-        content = '\n'.join(lines[1:])
-    else:
-        content = '\n'.join(lines)
-        
-# Remove the source file from the arguments
-args = sys.argv[1:pos] + sys.argv[pos+1:]
-
-p = subprocess.Popen([ '/opt/lsb/bin/uic' ] + args,
-                     stdin = subprocess.PIPE)
-p.communicate(input = content)
--- a/Resources/CMake/OrthancStoneConfiguration.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,615 +0,0 @@
-# Stone of Orthanc
-# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
-# Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
-#
-# This program is free software: you can redistribute it and/or
-# modify it under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Affero General Public License for more details.
-# 
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-
-#####################################################################
-## Configure the Orthanc Framework
-#####################################################################
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
-  include(${CMAKE_CURRENT_LIST_DIR}/../Orthanc/CMake/DownloadOrthancFramework.cmake)
-  link_libraries(${ORTHANC_FRAMEWORK_LIBRARIES})
-  
-else()
-  if (ENABLE_DCMTK)
-    set(ENABLE_LOCALE ON)
-  else()
-    if (NOT DEFINED ENABLE_LOCALE)
-      set(ENABLE_LOCALE OFF)  # Disable support for locales (notably in Boost)
-    endif()
-  endif()
-  
-  include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkConfiguration.cmake)
-  include_directories(
-    ${ORTHANC_FRAMEWORK_ROOT}/Sources/
-    )
-endif()
-
-
-#####################################################################
-## Sanity check of the configuration
-#####################################################################
-
-if (ORTHANC_SANDBOXED)
-  if (ENABLE_CURL)
-    message(FATAL_ERROR "Cannot enable curl in sandboxed environments")
-  endif()
-
-  if (ENABLE_SDL)
-    message(FATAL_ERROR "Cannot enable SDL in sandboxed environments")
-  endif()
-
-  if (ENABLE_SSL)
-    message(FATAL_ERROR "Cannot enable SSL in sandboxed environments")
-  endif()
-endif()
-
-if (ENABLE_OPENGL)
-  if (NOT ENABLE_SDL AND NOT ENABLE_WASM)
-    message(FATAL_ERROR "Cannot enable OpenGL if WebAssembly and SDL are both disabled")
-  endif()
-endif()
-
-if (ENABLE_WASM)
-  if (NOT ORTHANC_SANDBOXED)
-    message(FATAL_ERROR "WebAssembly target must me configured as sandboxed")
-  endif()
-
-  if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
-    message(FATAL_ERROR "WebAssembly target requires the emscripten compiler")    
-  endif()
-
-  set(ENABLE_THREADS OFF)
-  add_definitions(-DORTHANC_ENABLE_WASM=1)
-else()
-  if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten" OR
-      CMAKE_SYSTEM_NAME STREQUAL "PNaCl" OR
-      CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR
-      CMAKE_SYSTEM_NAME STREQUAL "NaCl64")
-    message(FATAL_ERROR "Trying to use a Web compiler for a native build")
-  endif()
-
-  set(ENABLE_THREADS ON)
-  add_definitions(-DORTHANC_ENABLE_WASM=0)
-endif()
-  
-
-#####################################################################
-## Configure mandatory third-party components
-#####################################################################
-
-SET(ORTHANC_STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..)
-
-include(FindPkgConfig)
-include(${CMAKE_CURRENT_LIST_DIR}/CairoConfiguration.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/FreetypeConfiguration.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/PixmanConfiguration.cmake)
-
-
-
-#####################################################################
-## Configure optional third-party components
-#####################################################################
-
-if (NOT ORTHANC_SANDBOXED)
-  list(APPEND ORTHANC_STONE_SOURCES
-    ${ORTHANC_STONE_ROOT}/Framework/Toolbox/OrthancDatasets/OrthancHttpConnection.cpp
-    )
-endif()
-
-
-if(ENABLE_SDL)
-  message("SDL is enabled")
-  include(${CMAKE_CURRENT_LIST_DIR}/SdlConfiguration.cmake)
-  add_definitions(
-    -DORTHANC_ENABLE_SDL=1
-    )
-else()
-  message("SDL is disabled")
-  unset(USE_SYSTEM_SDL CACHE)
-  add_definitions(
-    -DORTHANC_ENABLE_SDL=0
-    )
-endif()
-
-
-if (ENABLE_THREADS)
-  add_definitions(-DORTHANC_ENABLE_THREADS=1)
-else()
-  add_definitions(-DORTHANC_ENABLE_THREADS=0)
-endif()
-
-
-if (ENABLE_OPENGL AND CMAKE_SYSTEM_NAME STREQUAL "Windows")
-  include(${CMAKE_CURRENT_LIST_DIR}/GlewConfiguration.cmake)
-  add_definitions(
-    -DORTHANC_ENABLE_GLEW=1
-    )
-else()
-  add_definitions(
-    -DORTHANC_ENABLE_GLEW=0
-    )
-endif()
-
-
-if (ENABLE_OPENGL)
-  if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
-    # If including "FindOpenGL.cmake" using Emscripten (targeting
-    # WebAssembly), the "OPENGL_LIBRARIES" value incorrectly includes
-    # the "nul" library, which leads to warning message in Emscripten:
-    # 'shared:WARNING: emcc: cannot find library "nul"'.
-    include(FindOpenGL)
-    if (NOT OPENGL_FOUND)
-      message(FATAL_ERROR "Cannot find OpenGL on your system")
-    endif()
-
-    link_libraries(${OPENGL_LIBRARIES})
-  endif()
-
-  add_definitions(
-    -DORTHANC_ENABLE_OPENGL=1
-    )
-else()
-  add_definitions(-DORTHANC_ENABLE_OPENGL=0)  
-endif()
-
-
-
-#####################################################################
-## Configuration of the C/C++ macros
-#####################################################################
-
-if (MSVC)
-  # Remove some warnings on Visual Studio 2015
-  add_definitions(-D_SCL_SECURE_NO_WARNINGS=1) 
-endif()
-
-add_definitions(
-  -DHAS_ORTHANC_EXCEPTION=1
-  )
-
-if (CMAKE_BUILD_TYPE STREQUAL "Debug")
-  add_definitions(-DCHECK_OBSERVERS_MESSAGES)
-endif()
-
-
-
-#####################################################################
-## System-specific patches
-#####################################################################
-
-if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND
-    NOT MSVC AND
-    ENABLE_SDL)
-  # This is necessary when compiling EXE for Windows using MinGW
-  link_libraries(mingw32)
-endif()
-
-if (ORTHANC_SANDBOXED)
-  # Remove functions not suitable for a sandboxed environment
-  list(REMOVE_ITEM ORTHANC_CORE_SOURCES
-    ${ZLIB_SOURCES_DIR}/gzlib.c
-    ${ZLIB_SOURCES_DIR}/gzwrite.c
-    ${ZLIB_SOURCES_DIR}/gzread.c
-    )
-endif()
-
-
-
-#####################################################################
-## All the source files required to build Stone of Orthanc
-#####################################################################
-
-if (NOT ORTHANC_SANDBOXED)
-  set(PLATFORM_SOURCES
-    ${ORTHANC_STONE_ROOT}/Framework/Loaders/GenericLoadersContext.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Loaders/GenericLoadersContext.h
-    )
-
-  if (ENABLE_SDL)
-    list(APPEND ORTHANC_STONE_SOURCES
-      ${ORTHANC_STONE_ROOT}/Framework/Viewport/SdlWindow.cpp
-      ${ORTHANC_STONE_ROOT}/Framework/Viewport/SdlWindow.h
-      )
-  endif()
-
-  if (ENABLE_SDL)
-    if (ENABLE_OPENGL)
-      list(APPEND ORTHANC_STONE_SOURCES
-        ${ORTHANC_STONE_ROOT}/Framework/OpenGL/SdlOpenGLContext.cpp
-        ${ORTHANC_STONE_ROOT}/Framework/OpenGL/SdlOpenGLContext.h
-        ${ORTHANC_STONE_ROOT}/Framework/Viewport/SdlViewport.cpp
-        ${ORTHANC_STONE_ROOT}/Framework/Viewport/SdlViewport.h
-        )
-    endif()
-  endif()
-endif()
-
-
-if (ENABLE_DCMTK)
-  list(APPEND ORTHANC_STONE_SOURCES
-    ${ORTHANC_STONE_ROOT}/Framework/Oracle/ParseDicomSuccessMessage.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Toolbox/ParsedDicomCache.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Toolbox/ParsedDicomDataset.cpp
-    )
-endif()
-
-if (ENABLE_THREADS)
-  list(APPEND ORTHANC_STONE_SOURCES
-    ${ORTHANC_STONE_ROOT}/Framework/Oracle/ThreadedOracle.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Oracle/GenericOracleRunner.cpp
-    )
-endif()
-
-
-if (ENABLE_WASM)
-  list(APPEND ORTHANC_STONE_SOURCES
-    ${ORTHANC_STONE_ROOT}/Framework/Loaders/WebAssemblyLoadersContext.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Oracle/WebAssemblyOracle.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Viewport/WebAssemblyCairoViewport.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Viewport/WebAssemblyViewport.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Viewport/WebAssemblyViewport.h
-    )
-endif()
-
-if ((ENABLE_SDL OR ENABLE_WASM) AND ENABLE_GUIADAPTER)
-  list(APPEND APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Framework/Deprecated/GuiAdapter.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Deprecated/GuiAdapter.h
-    )
-endif()
-
-
-list(APPEND ORTHANC_STONE_SOURCES
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/OrthancDatasets/DicomDatasetReader.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/OrthancDatasets/DicomPath.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/OrthancDatasets/FullOrthancDataset.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/OrthancDatasets/IOrthancConnection.cpp
-
-  ${ORTHANC_STONE_ROOT}/Framework/Fonts/FontRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Fonts/Glyph.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Fonts/GlyphAlphabet.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Fonts/GlyphBitmapAlphabet.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Fonts/GlyphTextureAlphabet.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Fonts/TextBoundingBox.cpp
-
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/BasicFetchingItemsSorter.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/BasicFetchingItemsSorter.h
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/BasicFetchingStrategy.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/BasicFetchingStrategy.h
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/DicomResourcesLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/DicomSource.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/DicomStructureSetLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/DicomStructureSetLoader.h
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/DicomVolumeLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/IFetchingItemsSorter.h
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/IFetchingStrategy.h
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/LoadedDicomResources.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/LoaderCache.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/LoaderCache.h
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/LoaderStateMachine.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/LoaderStateMachine.h
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/OrthancMultiframeVolumeLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/OrthancMultiframeVolumeLoader.h
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/OracleScheduler.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/SeriesFramesLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/SeriesMetadataLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/SeriesOrderedFrames.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Loaders/SeriesThumbnailsLoader.cpp
-
-  ${ORTHANC_STONE_ROOT}/Framework/Messages/ICallable.h
-  ${ORTHANC_STONE_ROOT}/Framework/Messages/IMessage.h
-  ${ORTHANC_STONE_ROOT}/Framework/Messages/IMessageEmitter.h
-  ${ORTHANC_STONE_ROOT}/Framework/Messages/IObservable.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Messages/IObservable.h
-  ${ORTHANC_STONE_ROOT}/Framework/Messages/IObserver.h
-  ${ORTHANC_STONE_ROOT}/Framework/Messages/ObserverBase.h
-
-  ${ORTHANC_STONE_ROOT}/Framework/Oracle/GetOrthancImageCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Oracle/GetOrthancWebViewerJpegCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Oracle/HttpCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Oracle/OracleCommandBase.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Oracle/OrthancRestApiCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Oracle/ParseDicomFromFileCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Oracle/ParseDicomFromWadoCommand.cpp
-
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/CairoCompositor.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/CairoCompositor.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Color.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/ColorSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/ColorTextureSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/ColorTextureSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/FloatTextureSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/FloatTextureSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/GrayscaleStyleConfigurator.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/GrayscaleStyleConfigurator.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/ICompositor.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/ILayerStyleConfigurator.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/InfoPanelSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/InfoPanelSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/IPointerTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/ISceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/LookupTableStyleConfigurator.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/LookupTableStyleConfigurator.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/LookupTableTextureSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/LookupTableTextureSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/NullLayer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/PanSceneTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/PanSceneTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/PointerEvent.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/PointerEvent.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/PolylineSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/PolylineSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/RotateSceneTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/RotateSceneTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Scene2D.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Scene2D.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/ScenePoint2D.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/TextSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/TextSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/TextureBaseSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/TextureBaseSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/ZoomSceneTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/ZoomSceneTracker.h
-
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoBaseRenderer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoColorTextureRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoColorTextureRenderer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoFloatTextureRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoFloatTextureRenderer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoInfoPanelRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoInfoPanelRenderer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoLookupTableTextureRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoLookupTableTextureRenderer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoPolylineRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoPolylineRenderer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoTextRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CairoTextRenderer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CompositorHelper.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/CompositorHelper.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/FixedPointAligner.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/FixedPointAligner.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/ICairoContextProvider.h
-  
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/AngleMeasureTool.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/AngleMeasureTool.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateAngleMeasureCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateAngleMeasureCommand.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateAngleMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateAngleMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateCircleMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateCircleMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateLineMeasureCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateLineMeasureCommand.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateLineMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateLineMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/CreateSimpleTrackerAdapter.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/EditAngleMeasureCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/EditAngleMeasureCommand.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/EditAngleMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/EditAngleMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/EditLineMeasureCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/EditLineMeasureCommand.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/EditLineMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/EditLineMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/IFlexiblePointerTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/LayerHolder.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/LayerHolder.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/LineMeasureTool.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/LineMeasureTool.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/MeasureCommands.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/MeasureCommands.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/MeasureTool.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/MeasureTool.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/MeasureToolsToolbox.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/MeasureToolsToolbox.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/MeasureTrackers.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/MeasureTrackers.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/OneGesturePointerTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/OneGesturePointerTracker.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/PredeclaredTypes.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/UndoStack.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/UndoStack.h
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/ViewportController.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Scene2DViewport/ViewportController.h
-  ${ORTHANC_STONE_ROOT}/Framework/StoneEnumerations.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/StoneException.h
-  ${ORTHANC_STONE_ROOT}/Framework/StoneInitialization.cpp
-
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/AffineTransform2D.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/AffineTransform2D.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/CoordinateSystem3D.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/CoordinateSystem3D.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomInstanceParameters.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomInstanceParameters.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomStructure2.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomStructure2.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomStructurePolygon2.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomStructurePolygon2.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomStructureSet.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomStructureSet.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomStructureSet2.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomStructureSet2.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomStructureSetUtils.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DicomStructureSetUtils.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DisjointDataSet.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DynamicBitmap.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/DynamicBitmap.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/Extent2D.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/Extent2D.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/FiniteProjectiveCamera.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/FiniteProjectiveCamera.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/GenericToolbox.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/GenericToolbox.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/GeometryToolbox.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/GeometryToolbox.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/ImageGeometry.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/ImageGeometry.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/ImageToolbox.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/ImageToolbox.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/LinearAlgebra.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/LinearAlgebra.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/PixelTestPatterns.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/ShearWarpProjectiveTransform.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/ShearWarpProjectiveTransform.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/SlicesSorter.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/SlicesSorter.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/SortedFrames.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/SortedFrames.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/SubpixelReader.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/SubvoxelReader.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/TextRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/TextRenderer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/UndoRedoStack.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Toolbox/UndoRedoStack.h
-  
-  ${ORTHANC_STONE_ROOT}/Framework/Viewport/IViewport.h
-  
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/IGeometryProvider.h
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/IVolumeSlicer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/IVolumeSlicer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/OrientedVolumeBoundingBox.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/OrientedVolumeBoundingBox.h
-
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/VolumeImageGeometry.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/VolumeImageGeometry.h
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/VolumeReslicer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/VolumeReslicer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/VolumeSceneLayerSource.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/VolumeSceneLayerSource.h
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/DicomStructureSetSlicer2.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/DicomStructureSetSlicer2.h
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/DicomVolumeImage.h
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/DicomVolumeImage.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/DicomVolumeImage.h
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/DicomVolumeImageMPRSlicer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/DicomVolumeImageMPRSlicer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/DicomVolumeImageReslicer.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/DicomVolumeImageReslicer.h
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/ImageBuffer3D.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Volumes/ImageBuffer3D.h
-
-  ${ORTHANC_STONE_ROOT}/Framework/Wrappers/CairoContext.cpp
-  ${ORTHANC_STONE_ROOT}/Framework/Wrappers/CairoSurface.cpp
-
-  ${PLATFORM_SOURCES}
-  ${APPLICATIONS_SOURCES}
-  ${ORTHANC_CORE_SOURCES}
-  ${ORTHANC_DICOM_SOURCES}
-
-  # Mandatory components
-  ${CAIRO_SOURCES}
-  ${FREETYPE_SOURCES}
-  ${PIXMAN_SOURCES}
-
-  # Optional components
-  ${SDL_SOURCES}
-  ${QT_SOURCES}
-  ${GLEW_SOURCES}
-  )
-
-
-if (ENABLE_OPENGL)
-  list(APPEND ORTHANC_STONE_SOURCES
-    ${ORTHANC_STONE_ROOT}/Framework/Fonts/OpenGLTextCoordinates.h
-    ${ORTHANC_STONE_ROOT}/Framework/Fonts/OpenGLTextCoordinates.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/OpenGL/OpenGLProgram.h
-    ${ORTHANC_STONE_ROOT}/Framework/OpenGL/OpenGLProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/OpenGL/OpenGLShader.h
-    ${ORTHANC_STONE_ROOT}/Framework/OpenGL/OpenGLShader.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/OpenGL/OpenGLTexture.h
-    ${ORTHANC_STONE_ROOT}/Framework/OpenGL/OpenGLTexture.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/OpenGLCompositor.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/OpenGLCompositor.cpp
-
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLBasicPolylineRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLBasicPolylineRenderer.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLColorTextureProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLColorTextureProgram.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLColorTextureRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLColorTextureRenderer.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLFloatTextureProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLFloatTextureProgram.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLFloatTextureRenderer.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLInfoPanelRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLInfoPanelRenderer.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLLinesProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLLinesProgram.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLLookupTableTextureRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLLookupTableTextureRenderer.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLShaderVersionDirective.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLTextProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLTextProgram.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLTextRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLTextRenderer.h
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLTextureProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Framework/Scene2D/Internals/OpenGLTextureProgram.h
-    )
-
-  if (ENABLE_WASM)
-    list(APPEND ORTHANC_STONE_SOURCES
-      ${ORTHANC_STONE_ROOT}/Framework/OpenGL/WebAssemblyOpenGLContext.cpp
-      ${ORTHANC_STONE_ROOT}/Framework/OpenGL/WebAssemblyOpenGLContext.h
-      ${ORTHANC_STONE_ROOT}/Framework/Viewport/WebGLViewport.cpp
-      ${ORTHANC_STONE_ROOT}/Framework/Viewport/WebGLViewportsRegistry.cpp
-      )
-  endif()
-endif()
-
-##
-## TEST - Automatically add all ".h" headers to the list of sources
-##
-
-macro(AutodetectHeaderFiles SOURCES_VAR)
-  set(TMP)
-  
-  foreach(f IN LISTS ${SOURCES_VAR})
-    get_filename_component(_base ${f} NAME_WE)
-    get_filename_component(_dir ${f} DIRECTORY)
-    get_filename_component(_extension ${f} EXT)
-    set(_header ${_dir}/${_base}.h)
-    
-    if ((_extension STREQUAL ".cpp" OR
-          _extension STREQUAL ".cc" OR
-          _extension STREQUAL ".h") AND
-        EXISTS ${_header} AND
-        NOT IS_DIRECTORY ${_header} AND
-        NOT IS_SYMLINK ${_header})
-
-      # Prevent adding the header twice if it is already manually
-      # specified in the sources
-      list (FIND SOURCES_VAR ${_header} _index)
-      if (${_index} EQUAL -1)
-        list(APPEND TMP ${_header})
-      endif()
-    endif()
-  endforeach()
-
-  list(APPEND ${SOURCES_VAR} ${TMP})
-endmacro()
-
-
-AutodetectHeaderFiles(ORTHANC_STONE_SOURCES)
--- a/Resources/CMake/OrthancStoneParameters.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-# Stone of Orthanc
-# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
-# Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
-#
-# This program is free software: you can redistribute it and/or
-# modify it under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Affero General Public License for more details.
-# 
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-
-#####################################################################
-## Select the location of the Orthanc framework
-#####################################################################
-
-include(${CMAKE_CURRENT_LIST_DIR}/Version.cmake)
-
-if (ORTHANC_STONE_VERSION STREQUAL "mainline")
-  set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "mainline")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
-else()
-  set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "1.7.2")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
-endif()
-
-# Parameters of the build
-set(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)")
-set(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages")
-set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc framework (can be \"system\", \"hg\", \"archive\", \"web\" or \"path\")")
-set(ORTHANC_FRAMEWORK_VERSION "${ORTHANC_FRAMEWORK_DEFAULT_VERSION}" CACHE STRING "Version of the Orthanc framework")
-set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
-set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
-
-# Advanced parameters to fine-tune linking against system libraries
-set(ORTHANC_FRAMEWORK_STATIC OFF CACHE BOOL "If linking against the Orthanc framework system library, indicates whether this library was statically linked")
-mark_as_advanced(ORTHANC_FRAMEWORK_STATIC)
-
-
-
-#####################################################################
-## Import the parameters of the Orthanc Framework
-#####################################################################
-
-if (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
-  include(${CMAKE_CURRENT_LIST_DIR}/../Orthanc/CMake/DownloadOrthancFramework.cmake)
-  include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
-  
-  unset(STANDALONE_BUILD CACHE)
-  set(STANDALONE_BUILD ON)       # Embed DCMTK's dictionaries in static builds
-
-  set(ENABLE_DCMTK OFF)
-  set(ENABLE_GOOGLE_TEST ON)
-  set(ENABLE_JPEG ON)
-  set(ENABLE_OPENSSL_ENGINES ON)
-  set(ENABLE_PNG ON)
-  set(ENABLE_SQLITE OFF)
-  set(ENABLE_ZLIB ON)
-endif()
-  
-
-
-#####################################################################
-## CMake parameters tunable by the user
-#####################################################################
-
-# Advanced parameters to fine-tune linking against system libraries
-set(USE_SYSTEM_CAIRO ON CACHE BOOL "Use the system version of Cairo")
-set(USE_SYSTEM_FREETYPE ON CACHE BOOL "Use the system version of Freetype")
-set(USE_SYSTEM_GLEW ON CACHE BOOL "Use the system version of glew (for Windows only)")
-set(USE_SYSTEM_PIXMAN ON CACHE BOOL "Use the system version of Pixman")
-set(USE_SYSTEM_SDL ON CACHE BOOL "Use the system version of SDL2")
-
-
-
-#####################################################################
-## Internal CMake parameters to enable the optional subcomponents of
-## the Stone of Orthanc
-#####################################################################
-
-set(ENABLE_OPENGL ON CACHE BOOL "Enable support of OpenGL")
-set(ENABLE_WASM OFF CACHE INTERNAL "Enable support of WebAssembly")
-set(ENABLE_GUIADAPTER OFF CACHE INTERNAL "Enable backward compatibility with the Stone GuiAdapter class")
--- a/Resources/CMake/PixmanConfiguration.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-# Stone of Orthanc
-# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
-# Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
-#
-# This program is free software: you can redistribute it and/or
-# modify it under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Affero General Public License for more details.
-# 
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-if (STATIC_BUILD OR NOT USE_SYSTEM_PIXMAN)
-  SET(PIXMAN_SOURCES_DIR ${CMAKE_BINARY_DIR}/pixman-0.34.0)
-  SET(PIXMAN_URL "http://orthanc.osimis.io/ThirdPartyDownloads/pixman-0.34.0.tar.gz")
-  SET(PIXMAN_MD5 "e80ebae4da01e77f68744319f01d52a3")
-
-  if (IS_DIRECTORY "${PIXMAN_SOURCES_DIR}")
-    set(FirstRun OFF)
-  else()
-    set(FirstRun ON)
-  endif()
-
-  DownloadPackage(${PIXMAN_MD5} ${PIXMAN_URL} "${PIXMAN_SOURCES_DIR}")
-
-  # Apply a patch for NaCl32: This bypasses the custom implementation of
-  # "cpuid" that makes use of assembly code leading to "unrecognized
-  # instruction" when validating ".nexe" files using "ncval"
-  execute_process(
-    COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${CMAKE_CURRENT_LIST_DIR}/PixmanConfiguration.patch
-    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-    RESULT_VARIABLE Failure
-    )
-
-  if (Failure AND FirstRun)
-    message(FATAL_ERROR "Error while patching a file")
-  endif()
-
-  set(PIXMAN_VERSION_MAJOR 0)
-  set(PIXMAN_VERSION_MINOR 34)
-  set(PIXMAN_VERSION_MICRO 0)
-  configure_file(
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-version.h.in
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-version.h)
-
-  list(APPEND PIXMAN_SOURCES 
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-access-accessors.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-access.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm.c
-    #${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon.c
-    #${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-bits-image.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-combine32.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-combine-float.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-conical-gradient.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-edge-accessors.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-edge.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-fast-path.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-filter.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-general.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-glyph.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-gradient-walker.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-image.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-implementation.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-linear-gradient.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-matrix.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-mips.c
-    #${PIXMAN_SOURCES_DIR}/pixman/pixman-mips-dspr2.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-mmx.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-noop.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-ppc.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-radial-gradient.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-region16.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-region32.c
-    #${PIXMAN_SOURCES_DIR}/pixman/pixman-region.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-solid-fill.c
-    #${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c
-    #${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-timer.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-trap.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-utils.c
-    #${PIXMAN_SOURCES_DIR}/pixman/pixman-vmx.c
-    ${PIXMAN_SOURCES_DIR}/pixman/pixman-x86.c
-    )
-  
-  set(PIXMAN_DEFINITIONS "PACKAGE=\"pixman\"")
-
-  if (CMAKE_SYSTEM_PROCESSOR)
-    message("Processor: ${CMAKE_SYSTEM_PROCESSOR}")
-  else()
-    message("Processor: Not applicable")
-  endif()
-
-
-  ##########################
-  ## Portable Google NaCl
-  ##########################
-
-  if (CMAKE_SYSTEM_NAME STREQUAL "PNaCl")
-    # No hardware acceleration
-    set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread")
-
-  elseif (CMAKE_SYSTEM_NAME STREQUAL "Emscripten" OR
-          CMAKE_SYSTEM_NAME STREQUAL "Android")
-    ##########################
-    ## Emscripten (asm.js)
-    ##########################
-
-    # No threading support
-    set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};PIXMAN_NO_TLS=1;HAVE_GCC_VECTOR_EXTENSIONS")
-
-  elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
-
-    ##########################
-    ## Windows 32 or 64
-    ##########################
-
-    if (CMAKE_COMPILER_IS_GNUCXX)
-      set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread;HAVE_GCC_VECTOR_EXTENSIONS;HAVE_BUILTIN_CLZ;HAVE_FEDIVBYZERO=1;HAVE_FENV_H=1;HAVE_MPROTECT=1;HAVE_FLOAT128;HAVE_POSIX_MEMALIGN;USE_GCC_INLINE_ASM=1;HAVE_GETPAGESIZE=1")
-
-      # The option "-mstackrealign" is necessary to avoid a crash on
-      # Windows if enabling SSE2. As an alternative, it is possible to
-      # fully disable hardware acceleration.
-      # https://bugs.freedesktop.org/show_bug.cgi?id=68300#c4
-      SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mssse3 -mstackrealign")
-      SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mssse3 -mstackrealign")
-    endif()
-
-    list(APPEND PIXMAN_SOURCES 
-      ${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c
-      ${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c
-      )
-
-    if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
-      # Only enable MMX on Windows 32
-      add_definitions(
-        -DUSE_X86_MMX=1
-        )
-    endif()
-
-    add_definitions(
-      -DUSE_SSE2=1
-      -DUSE_SSSE3=1
-      )
-
-
-    ##########################
-    ## Generic x86 processor
-    ##########################
-
-  elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" OR
-      CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR
-      CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR
-      CMAKE_SYSTEM_NAME STREQUAL "NaCl64" OR
-      CMAKE_SYSTEM_NAME STREQUAL "Darwin")
-
-    set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread;HAVE_GCC_VECTOR_EXTENSIONS;HAVE_BUILTIN_CLZ;HAVE_MPROTECT=1;HAVE_FLOAT128;HAVE_POSIX_MEMALIGN;USE_GCC_INLINE_ASM;HAVE_GETPAGESIZE=1")
-
-    if (${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR
-        ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64")
-      # The MMX instructions lead to "unrecognized instruction" when
-      # validating ".nexe" files using "ncval", disable them
-    else()
-      #add_definitions(-DUSE_X86_MMX=1)
-    endif()
-
-    list(APPEND PIXMAN_SOURCES 
-      ${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c
-      ${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c
-      )
-    add_definitions(
-      -DUSE_SSE2=1
-      -DUSE_SSSE3=1
-      )
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mssse3")
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mssse3")
-
-
-    ##########################
-    ## ARM processor
-    ##########################
-
-  elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv5te" OR
-      CMAKE_SYSTEM_PROCESSOR STREQUAL "armv6" OR
-      CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l" OR
-      CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a" OR
-      CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
-
-    set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread")
-
-    if (NEON)
-      message("Processor with NEON instructions")
-      list(APPEND PIXMAN_SOURCES 
-        ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon.c
-        ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon-asm.S
-        ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon-asm-bilinear.S
-        )
-      add_definitions(
-        -DUSE_ARM_NEON=1
-        )
-    elseif()
-      message("Processor without NEON instructions")
-    endif()
-
-    add_definitions(
-      -DUSE_ARM_SIMD=1
-      )
-    list(APPEND PIXMAN_SOURCES 
-      ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm.c
-      ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd-asm.S
-      ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd-asm-scaled.S
-      ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd.c
-      )
-
-  else()
-    message(FATAL_ERROR "Support your platform here")
-  endif()
-
-
-  include_directories(
-    ${PIXMAN_SOURCES_DIR}/pixman
-    )
-
-  set_property(
-    SOURCE ${PIXMAN_SOURCES}
-    PROPERTY COMPILE_DEFINITIONS ${PIXMAN_DEFINITIONS}
-    )
-
-else()
-
-  pkg_search_module(PIXMAN REQUIRED pixman-1)
-  include_directories(${PIXMAN_INCLUDE_DIRS})
-  link_libraries(${PIXMAN_LIBRARIES})
-
-endif()
--- a/Resources/CMake/PixmanConfiguration.patch	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-diff -urEb pixman-0.34.0.orig/pixman/pixman-x86.c pixman-0.34.0/pixman/pixman-x86.c
---- pixman-0.34.0.orig/pixman/pixman-x86.c	2016-07-05 12:46:52.889101224 +0200
-+++ pixman-0.34.0/pixman/pixman-x86.c	2016-07-05 12:47:07.253101808 +0200
-@@ -80,7 +80,7 @@
- static pixman_bool_t
- have_cpuid (void)
- {
--#if _PIXMAN_X86_64 || defined (_MSC_VER)
-+#if _PIXMAN_X86_64 || defined (_MSC_VER) || defined(__native_client__)
- 
-     return TRUE;
- 
-Only in pixman-0.34.0/pixman: pixman-x86.c~
--- a/Resources/CMake/SdlConfiguration.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-# Stone of Orthanc
-# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
-# Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
-#
-# This program is free software: you can redistribute it and/or
-# modify it under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Affero General Public License for more details.
-# 
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-if (STATIC_BUILD OR NOT USE_SYSTEM_SDL)
-  SET(SDL_SOURCES_DIR ${CMAKE_BINARY_DIR}/SDL2-2.0.4)
-  SET(SDL_URL "http://orthanc.osimis.io/ThirdPartyDownloads/SDL2-2.0.4.tar.gz")
-  SET(SDL_MD5 "44fc4a023349933e7f5d7a582f7b886e")
-  DownloadPackage(${SDL_MD5} ${SDL_URL} "${SDL_SOURCES_DIR}")
-
-  include_directories(${SDL_SOURCES_DIR}/include)
-
-  set(TMP "${SDL_SOURCES_DIR}/include/SDL_config_premake.h")
-  if (NOT EXISTS "${TMP}")
-    file(WRITE "${TMP}" "
-#include \"SDL_platform.h\"
-#define HAVE_STDARG_H 1
-#define HAVE_STDDEF_H 1
-#define HAVE_STDINT_H 1
-")
-  endif()
-
-  # General source files
-  file(GLOB SDL_SOURCES
-    ${SDL_SOURCES_DIR}/src/*.c
-    ${SDL_SOURCES_DIR}/src/atomic/*.c
-    ${SDL_SOURCES_DIR}/src/audio/*.c
-    ${SDL_SOURCES_DIR}/src/cpuinfo/*.c
-    ${SDL_SOURCES_DIR}/src/dynapi/*.c
-    ${SDL_SOURCES_DIR}/src/events/*.c
-    ${SDL_SOURCES_DIR}/src/file/*.c
-    ${SDL_SOURCES_DIR}/src/haptic/*.c
-    ${SDL_SOURCES_DIR}/src/joystick/*.c
-    ${SDL_SOURCES_DIR}/src/libm/*.c
-    ${SDL_SOURCES_DIR}/src/power/*.c
-    ${SDL_SOURCES_DIR}/src/render/*.c
-    ${SDL_SOURCES_DIR}/src/stdlib/*.c
-    ${SDL_SOURCES_DIR}/src/thread/*.c
-    ${SDL_SOURCES_DIR}/src/timer/*.c
-    ${SDL_SOURCES_DIR}/src/video/*.c
-
-    ${SDL_SOURCES_DIR}/src/loadso/dummy/*.c
-    #${SDL_SOURCES_DIR}/src/timer/dummy/*.c
-    ${SDL_SOURCES_DIR}/src/audio/dummy/*.c
-    ${SDL_SOURCES_DIR}/src/filesystem/dummy/*.c
-    ${SDL_SOURCES_DIR}/src/haptic/dummy/*.c
-    ${SDL_SOURCES_DIR}/src/joystick/dummy/*.c
-    #${SDL_SOURCES_DIR}/src/main/dummy/*.c
-    ${SDL_SOURCES_DIR}/src/video/dummy/*.c
-    )
-
-  add_definitions(
-    -DUSING_PREMAKE_CONFIG_H=1
-
-    -DSDL_AUDIO_DISABLED=1
-    -DSDL_AUDIO_DRIVER_DUMMY=1
-    -DSDL_FILESYSTEM_DISABLED=1
-    -DSDL_FILESYSTEM_DUMMY=1
-    -DSDL_FILE_DISABLED=1
-    -DSDL_HAPTIC_DISABLED=1
-    -DSDL_JOYSTICK_DISABLED=1
-
-    #-DSDL_THREADS_DISABLED=1
-    )
-
-  if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
-    file(GLOB TMP
-      ${SDL_SOURCES_DIR}/src/core/linux/*.c
-      ${SDL_SOURCES_DIR}/src/loadso/dlopen/*.c
-      ${SDL_SOURCES_DIR}/src/render/software/*.c
-      ${SDL_SOURCES_DIR}/src/thread/pthread/*.c
-      ${SDL_SOURCES_DIR}/src/timer/unix/*.c
-      ${SDL_SOURCES_DIR}/src/video/x11/*.c
-      )
-
-    list(APPEND SDL_SOURCES ${TMP})
-
-    add_definitions(
-      -DSDL_LOADSO_DLOPEN=1
-      -DSDL_THREAD_PTHREAD=1
-      -DSDL_TIMER_UNIX=1
-      -DSDL_POWER_DISABLED=1
-
-      -DSDL_VIDEO_DRIVER_X11=1
-
-      -DSDL_ASSEMBLY_ROUTINES=1
-      -DSDL_THREAD_PTHREAD_RECURSIVE_MUTEX=1
-      -DSDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS=1
-      -DHAVE_GCC_SYNC_LOCK_TEST_AND_SET=1
-      )
-
-    link_libraries(X11 Xext)
-
-    if (NOT CMAKE_SYSTEM_VERSION STREQUAL "Raspberry")
-      # Raspberry Pi has no support for OpenGL
-      file(GLOB TMP
-        ${SDL_SOURCES_DIR}/src/render/opengl/*.c
-        ${SDL_SOURCES_DIR}/src/render/opengles2/*.c
-        )
-
-      list(APPEND SDL_SOURCES ${TMP})
-
-      add_definitions(
-        -DSDL_VIDEO_OPENGL=1
-        -DSDL_VIDEO_OPENGL_ES2=1
-        -DSDL_VIDEO_RENDER_OGL=1
-        -DSDL_VIDEO_RENDER_OGL_ES2=1
-        -DSDL_VIDEO_OPENGL_GLX=1
-        -DSDL_VIDEO_OPENGL_EGL=1
-        )
-    endif()
-
-  elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
-    file(GLOB TMP
-      ${SDL_SOURCES_DIR}/src/audio/directsound/*.c
-      ${SDL_SOURCES_DIR}/src/audio/disk/*.c
-      ${SDL_SOURCES_DIR}/src/audio/winmm/*.c
-      ${SDL_SOURCES_DIR}/src/joystick/windows/*.c
-      ${SDL_SOURCES_DIR}/src/haptic/windows/*.c
-      ${SDL_SOURCES_DIR}/src/power/windows/*.c
-
-      ${SDL_SOURCES_DIR}/src/main/windows/*.c
-      ${SDL_SOURCES_DIR}/src/core/windows/*.c
-      ${SDL_SOURCES_DIR}/src/loadso/windows/*.c
-      ${SDL_SOURCES_DIR}/src/render/direct3d/*.c
-      ${SDL_SOURCES_DIR}/src/render/direct3d11/*.c
-      ${SDL_SOURCES_DIR}/src/render/opengl/*.c
-      ${SDL_SOURCES_DIR}/src/render/psp/*.c
-      ${SDL_SOURCES_DIR}/src/render/opengles/*.c
-      ${SDL_SOURCES_DIR}/src/render/opengles2/*.c
-      ${SDL_SOURCES_DIR}/src/render/software/*.c
-      ${SDL_SOURCES_DIR}/src/thread/generic/SDL_syscond.c   # Don't include more files from "thread/generic/*.c"!
-      ${SDL_SOURCES_DIR}/src/thread/windows/*.c
-      ${SDL_SOURCES_DIR}/src/timer/windows/*.c
-      ${SDL_SOURCES_DIR}/src/video/windows/*.c
-      ${SDL_SOURCES_DIR}/src/windows/dlopen/*.c
-      )
-
-    list(APPEND SDL_SOURCES ${TMP})
-
-    # NB: OpenGL ES headers are not available in MinGW-W64
-    add_definitions(
-      -DSDL_LOADSO_WINDOWS=1
-      -DSDL_THREAD_WINDOWS=1
-      -DSDL_TIMER_WINDOWS=1
-      -DSDL_POWER_WINDOWS=1
-
-      -DSDL_VIDEO_OPENGL=1
-      -DSDL_VIDEO_OPENGL_WGL=1
-      -DSDL_VIDEO_RENDER_D3D=1
-      -DSDL_VIDEO_RENDER_OGL=1
-      -DSDL_VIDEO_DRIVER_WINDOWS=1
-      )
-
-    if (MSVC)
-      add_definitions(
-        -D__FLTUSED__
-        -DHAVE_LIBC=1
-      )
-    else()
-      add_definitions(
-        -DHAVE_GCC_ATOMICS=1
-        -DSDL_ASSEMBLY_ROUTINES=1
-        )
-    endif()
-    
-    link_libraries(imm32 winmm version)
-
-  elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
-    file(GLOB TMP
-      ${SDL_SOURCES_DIR}/src/loadso/dlopen/*.c
-      ${SDL_SOURCES_DIR}/src/render/opengl/*.c
-      ${SDL_SOURCES_DIR}/src/render/opengles2/*.c
-      ${SDL_SOURCES_DIR}/src/render/software/*.c
-      ${SDL_SOURCES_DIR}/src/thread/pthread/*.c
-      ${SDL_SOURCES_DIR}/src/timer/unix/*.c
-      ${SDL_SOURCES_DIR}/src/video/cocoa/*.m
-      )
-
-    list(APPEND SDL_SOURCES ${TMP})
-
-    add_definitions(
-      -DSDL_LOADSO_DLOPEN=1
-      -DSDL_THREAD_PTHREAD=1
-      -DSDL_TIMER_UNIX=1
-      -DSDL_POWER_DISABLED=1
-
-      -DSDL_VIDEO_DRIVER_COCOA=1
-      -DSDL_VIDEO_OPENGL=1
-      -DSDL_VIDEO_OPENGL_CGL=1
-      -DSDL_VIDEO_RENDER_OGL=1
-      
-      -DSDL_ASSEMBLY_ROUTINES=1
-      -DSDL_THREAD_PTHREAD_RECURSIVE_MUTEX=1
-      )
-
-    find_library(CARBON_LIBRARY Carbon)
-    find_library(COCOA_LIBRARY Cocoa)
-    find_library(IOKIT_LIBRARY IOKit)
-    find_library(QUARTZ_LIBRARY QuartzCore)
-    link_libraries(${CARBON_LIBRARY} ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${QUARTZ_LIBRARY})
-
-  endif()
-
-else()
-  pkg_search_module(SDL2 REQUIRED sdl2)
-  include_directories(${SDL2_INCLUDE_DIRS})
-  link_libraries(${SDL2_LIBRARIES})
-endif()
--- a/Resources/CMake/Version.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-set(ORTHANC_STONE_VERSION "mainline")
-
-add_definitions(
-  -DORTHANC_STONE_VERSION="${ORTHANC_STONE_VERSION}"
-  )
--- a/Resources/CMake/cairo-features.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-#ifndef CAIRO_FEATURES_H
-#define CAIRO_FEATURES_H
-
-#define CAIRO_HAS_GOBJECT_FUNCTIONS 1
-#define CAIRO_HAS_IMAGE_SURFACE 1
-#define CAIRO_HAS_MIME_SURFACE 1
-#define CAIRO_HAS_OBSERVER_SURFACE 1
-#define CAIRO_HAS_RECORDING_SURFACE 1
-#define CAIRO_HAS_USER_FONT 1
-
-/*#undef CAIRO_HAS_BEOS_SURFACE */
-/*#undef CAIRO_HAS_COGL_SURFACE */
-/*#undef CAIRO_HAS_DIRECTFB_SURFACE */
-/*#undef CAIRO_HAS_DRM_SURFACE */
-/*#undef CAIRO_HAS_EGL_FUNCTIONS */
-/*#undef CAIRO_HAS_FC_FONT */
-/*#undef CAIRO_HAS_FT_FONT */
-/*#undef CAIRO_HAS_GALLIUM_SURFACE */
-/*#undef CAIRO_HAS_GLESV2_SURFACE */
-/*#undef CAIRO_HAS_GLX_FUNCTIONS */
-/*#undef CAIRO_HAS_GL_SURFACE */
-/*#undef CAIRO_HAS_OS2_SURFACE */
-/*#undef CAIRO_HAS_PDF_SURFACE */
-/*#undef CAIRO_HAS_PNG_FUNCTIONS */
-/*#undef CAIRO_HAS_PS_SURFACE */
-/*#undef CAIRO_HAS_QT_SURFACE */
-/*#undef CAIRO_HAS_QUARTZ_FONT */
-/*#undef CAIRO_HAS_QUARTZ_IMAGE_SURFACE */
-/*#undef CAIRO_HAS_QUARTZ_SURFACE */
-/*#undef CAIRO_HAS_SCRIPT_SURFACE */
-/*#undef CAIRO_HAS_SKIA_SURFACE */
-/*#undef CAIRO_HAS_SVG_SURFACE */
-/*#undef CAIRO_HAS_TEE_SURFACE */
-/*#undef CAIRO_HAS_VG_SURFACE */
-/*#undef CAIRO_HAS_WGL_FUNCTIONS */
-/*#undef CAIRO_HAS_WIN32_FONT */
-/*#undef CAIRO_HAS_WIN32_SURFACE */
-/*#undef CAIRO_HAS_XCB_SHM_FUNCTIONS */
-/*#undef CAIRO_HAS_XCB_SURFACE */
-/*#undef CAIRO_HAS_XLIB_SURFACE */
-/*#undef CAIRO_HAS_XLIB_XCB_FUNCTIONS */
-/*#undef CAIRO_HAS_XLIB_XRENDER_SURFACE */
-/*#undef CAIRO_HAS_XML_SURFACE */
-
-#endif
--- a/Resources/Colormaps/GenerateColormaps.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#!/usr/bin/python
-
-import array
-import matplotlib.pyplot as plt
-
-def GenerateColormap(name):
-    colormap = []
-
-    for gray in range(256):
-        if name == 'red':
-            color = (gray / 255.0, 0, 0)
-        elif name == 'green':
-            color = (0, gray / 255.0, 0)
-        elif name == 'blue':
-            color = (0, 0, gray / 255.0)
-        else:
-            color = plt.get_cmap(name) (gray)
-
-        colormap += map(lambda k: int(round(color[k] * 255)), range(3))
-
-    colormap[0] = 0
-    colormap[1] = 0
-    colormap[2] = 0
-
-    return array.array('B', colormap).tostring()
-
-
-for name in [ 
-        'hot', 
-        'jet', 
-        'blue',
-        'green',
-        'red',
-]:
-    with open('%s.lut' % name, 'w') as f:
-        f.write(GenerateColormap(name))
Binary file Resources/Colormaps/blue.lut has changed
Binary file Resources/Colormaps/green.lut has changed
Binary file Resources/Colormaps/hot.lut has changed
Binary file Resources/Colormaps/jet.lut has changed
Binary file Resources/Colormaps/red.lut has changed
--- a/Resources/Computations/ComputeShearOnSlice.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-#!/usr/bin/python
-
-from sympy import *
-import pprint
-
-init_printing(use_unicode=True)
-
-
-# Setup "T * S * M_shear" (Equation A.16)
-
-ex, ey, ew = symbols('ex ey ew')
-sx, sy = symbols('sx, sy')
-ti, tj = symbols('ti tj')
-
-T = Matrix([[ 1, 0, 0, ti ],
-            [ 0, 1, 0, tj ],
-            [ 0, 0, 1, 0  ],
-            [ 0, 0, 0, 1  ]])
-
-# Equation (A.15), if "sx == sy == f"
-S = Matrix([[ sx, 0,  0, 0 ],
-            [ 0,  sy, 0, 0 ],
-            [ 0,  0,  1, 0 ],
-            [ 0,  0,  0, 1 ]])
-
-# MM_shear, in Equation (A.14)
-M = Matrix([[ 1, 0, ex, 0 ],
-            [ 0, 1, ey, 0 ],
-            [ 0, 0, 1,  0 ],
-            [ 0, 0, ew,  1 ]])
-
-
-x, y, z, w = symbols('x y z w')
-p = Matrix([ x, y, z, w ])
-
-print("\nT =" % T)
-pprint.pprint(T);
-
-print("\nS =" % T)
-pprint.pprint(S);
-
-print("\nM'_shear =" % T)
-pprint.pprint(M);
-
-print("\nGeneral form of a Lacroute's shear matrix (Equation A.16): T * S * M'_shear =")
-pprint.pprint(T * S * M);
-
-print("\nHence, alternative parametrization:")
-a11, a13, a14, a22, a23, a24, a43 = symbols('a11 a13 a14 a22 a23 a24 a43')
-
-A = Matrix([[ a11, 0,   a13, a14 ],
-            [ 0,   a22, a23, a24 ],
-            [ 0,   0,   1,   0   ],
-            [ 0,   0,   a43, 1   ]])
-pprint.pprint(A);
-
-v = A * p
-v = v.subs(w, 1)
-
-print("\nAction of Lacroute's shear matrix A on plane z (taking w=1):\n%s\n" % v)
-
-print('Output x\' = %s\n' % (v[0]/v[3]))
-print('Output y\' = %s\n' % (v[1]/v[3]))
-print('Output z\' = %s\n' % (v[2]/v[3]))
--- a/Resources/Computations/ComputeShearParameters.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-#!/usr/bin/python
-
-from sympy import *
-import pprint
-
-init_printing(use_unicode=True)
-
-s13, s23, s43 = symbols('s13 s23 s43')
-x, y, z, w = symbols('x y z w')
-
-A = Matrix([[ 1, 0, s13, 0 ],
-            [ 0, 1, s23, 0 ],
-            [ 0, 0, 1,   0 ],
-            [ 0, 0, s43, 1 ]])
-
-print('\nLacroute\'s shear matrix (A.14) is:')
-pprint.pprint(A)
-
-# At this point, we can write "print(A*p)". However, we don't care
-# about the output "z" axis, as it is fixed. So we delete the 3rd row
-# of A.
-
-A.row_del(2)
-
-p = Matrix([ x, y, z, 1 ])
-
-v = A*p
-print('\nAction of Lacroute\'s shear matrix on plane z (taking w=1):\n%s\n' % v)
-
-print('Scaling = %s' % (1/v[2]))
-print('Offset X = %s' % (v[0]/v[2]).subs(x, 0))
-print('Offset Y = %s' % (v[1]/v[2]).subs(y, 0))
--- a/Resources/Computations/ComputeWarp.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-#!/usr/bin/python
-
-from sympy import *
-from sympy.solvers import solve
-import pprint
-import sys
-
-init_printing(use_unicode=True)
-
-
-# Create a test 3D vector using homogeneous coordinates
-x, y, z, w = symbols('x y z w')
-p = Matrix([ x, y, z, w ])
-
-
-# Create a shear matrix, and a scale/shift "T * S" transform as in
-# Lacroute's thesis (Equation A.16, page 209)
-ex, ey, ew = symbols('ex ey ew')
-sx, sy, tx, ty = symbols('sx sy tx ty')
-
-TS = Matrix([[ sx, 0,  0, tx ],
-             [ 0,  sy, 0, ty ],
-             [ 0,  0,  1, 0  ],
-             [ 0,  0,  0, 1  ]])
-
-pureShear = Matrix([[ 1, 0, ex, 0 ],
-                    [ 0, 1, ey, 0 ],
-                    [ 0, 0, 1,  0 ],
-                    [ 0, 0, ew, 1 ]])
-
-
-# Create a general warp matrix, that corresponds to "M_warp" in
-# Equation (A.17) of Lacroute's thesis:
-ww11, ww12, ww13, ww14, ww21, ww22, ww23, ww24, ww31, ww32, ww33, ww34, ww41, ww42, ww43, ww44 = symbols('ww11 ww12 ww13 ww14 ww21 ww22 ww23 ww24 ww31 ww32 ww33 ww34 ww41 ww42 ww43 ww44')
-
-WW = Matrix([[ ww11, ww12, ww13, ww14 ],
-             [ ww21, ww22, ww23, ww24 ],
-             [ ww31, ww32, ww33, ww34 ],
-             [ ww41, ww43, ww43, ww44 ]])
-
-
-# Create the matrix of intrinsic parameters of the camera
-k11, k22, k14, k24 = symbols('k11 k22 k14 k24')
-K = Matrix([[ k11, 0,   0, k14 ],
-            [ 0,   k22, 0, k24 ],
-            [ 0,   0,   0, 1   ]])
-
-
-# The full decomposition is:
-M_shear = TS * pureShear
-M_warp = K * WW * TS.inv()
-AA = M_warp * M_shear
-
-# Check that the central component "M_warp == K * WW * TS.inv()" that
-# is the left part of "A" is another general warp matrix (i.e. no
-# exception is thrown about incompatible matrix sizes):
-M_warp * p
-
-if (M_warp.cols != 4 or
-    M_warp.rows != 3):
-    raise Exception('Invalid matrix size')
-
-
-# We've just shown that "M_warp" is a general 3x4 matrix. Let's call
-# it W:
-w11, w12, w13, w14, w21, w22, w23, w24, w41, w42, w43, w44 = symbols('w11 w12 w13 w14 w21 w22 w23 w24 w41 w42 w43 w44')
-
-W = Matrix([[ w11, w12, w13, w14 ],
-            [ w21, w22, w23, w24 ],
-            [ w41, w43, w43, w44 ]])
-
-# This shows that it is sufficient to study a decomposition of the
-# following form:
-A = W * M_shear
-print('\nA = W * M_shear =')
-pprint.pprint(A)
-
-sys.stdout.write('\nW = ')
-pprint.pprint(W)
-
-sys.stdout.write('\nM_shear = ')
-pprint.pprint(M_shear)
-
-
-
-# Let's consider one fixed 2D point (i,j) in the intermediate
-# image. The 3D points (x,y,z,1) that are mapped to (i,j) must satisfy
-# the equation "(i,j) == M_shear * (x,y,z,w)". As "M_shear" is
-# invertible, we solve "(x,y,z,w) == inv(M_shear) * (i,j,k,1)".
-
-i, j, k = symbols('i j k')
-l = M_shear.inv() * Matrix([ i, j, k, 1 ])
-
-print('\nLocus for points imaged to some fixed (i,j,k,l) point in the intermediate image:')
-print('x = %s' % l[0])
-print('y = %s' % l[1])
-print('z = %s' % l[2])
-print('w = %s' % l[3])
-
-
-# By inspecting the 4 equations above, we see that the locus entirely
-# depends upon the "k" value that encodes the Z-axis
-
-print('\nGlobal effect of the shear-warp transform on this locus:')
-q = expand(A * l)
-pprint.pprint(q)
-
-print("\nWe can arbitrarily fix the value of 'k', so let's choose 'k=0':")
-pprint.pprint(q.subs(k, 0))
-
-print("\nThis gives the warp transform.")
-print("QED: line after Equation (A.17) on page 209.\n")
--- a/Resources/Computations/IntersectSegmentAndHorizontalLine.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-#!/usr/bin/env python
-
-from sympy import *
-
-# Intersection between the 2D line segment (prevX,prevY)-(curX,curY) and the
-# horizontal line "y = y0" using homogeneous coordinates
-
-prevX, prevY, curX, curY, y0 = symbols('prevX prevY curX curY y0')
-
-p1 = Matrix([prevX, prevY, 1])
-p2 = Matrix([curX, curY, 1])
-l1 = p1.cross(p2)
-
-h1 = Matrix([0, y0, 1])
-h2 = Matrix([1, y0, 1])
-l2 = h1.cross(h2)
-
-a = l1.cross(l2)
-
-#pprint(cse(a/a[2], symbols = symbols('a b')))
-pprint(a / a[2])
--- a/Resources/Computations/IntersectSegmentAndVerticalLine.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#!/usr/bin/env python
-
-from sympy import *
-
-# Intersection between the 2D line segment (prevX,prevY)-(curX,curY) and the
-# vertical line "x = x0" using homogeneous coordinates
-
-prevX, prevY, curX, curY, x0 = symbols('prevX prevY curX curY x0')
-
-p1 = Matrix([prevX, prevY, 1])
-p2 = Matrix([curX, curY, 1])
-l1 = p1.cross(p2)
-
-h1 = Matrix([x0, 0, 1])
-h2 = Matrix([x0, 1, 1])
-l2 = h1.cross(h2)
-
-a = l1.cross(l2)
-
-pprint(a / a[2])
--- a/Resources/Conventions.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-
-Some notes about the lifetime of objects
-========================================
-
-Stone applications
-------------------
-
-A typical Stone application can be split in 3 parts:
-
-1- The "loaders part" and the associated "IOracle", that communicate
-   through "IMessage" objects. The lifetime of these objects is
-   governed by the "IStoneContext".
-
-2- The "data part" holds the data loaded by the "loaders part". The
-   related objects must not be aware of the oracle, neither of the
-   messages. It is up to the user application to store these objects.
-
-3- The "viewport part" is based upon the "Scene2D" class.
-
-
-Multithreading
---------------
-
-* Stone makes the hypothesis that its objects live in a single thread.
-  All the content of the "Framework" folder (with the exception of
-  the "Oracle" stuff) must not use "boost::thread".
-
-* The "IOracleCommand" classes represent commands that must be
-  executed asynchronously from the Stone thread. Their actual
-  execution is done by the "IOracle".
-
-* In WebAssembly, the "IOracle" corresponds to the "html5.h"
-  facilities (notably for the Fetch API). There is no mutex here, as
-  JavaScript is inherently single-threaded.
-
-* In plain C++ applications, the "IOracle" corresponds to a FIFO queue
-  of commands that are executed by a pool of threads. The Stone
-  context holds a global mutex, that must be properly locked by the
-  user application, and by the "IOracle" when it sends back messages
-  to the Stone loaders (cf. class "IMessageEmitter").
-
-* Multithreading is thus achieved by defining new oracle commands by
-  subclassing "IOracleCommand", then by defining a way to execute them
-  (cf. class "GenericCommandRunner").
-
-
-References between objects
---------------------------
-
-* An object allocated on the heap must never store a reference/pointer
-  to another object.
-
-* A class designed to be allocated only on the stack can store a
-  reference/pointer to another object. Here is the list of
-  such classes:
-
-  - IMessage and its derived classes: All the messages are allocated
-    on the stack.
-
-
-Pointers
---------
-
-* As we are targeting C++03 (for VS2008 and LSB compatibility), use
-  "std::unique_ptr<>" and "boost::shared_ptr<>" (*not*
-  "std::shared_ptr<>"). We provide an implementation of std::unique_ptr for
-  pre-C++11 compilers.
-
-* The fact of transfering the ownership of one object to another must
-  be tagged by naming the method "Acquire...()", and by providing a
-  raw pointer.
-
-* Use "std::unique_ptr<>" if the goal is to internally store a pointer
-  whose lifetime corresponds to the host object.
-
-* The use of "boost::weak_ptr<>" should be restricted to
-  oracle/message handling.
-
-* The use of "boost::shared_ptr<>" should be minimized to avoid
-  clutter. The "loaders" and "data parts" objects must however
-  be created as "boost::shared_ptr<>".
-
-
-Global context
---------------
-
-* As the global Stone context can be created/destroyed by other
-  languages than C++, we don't use a "boost:shared_ptr<>".
--- a/Resources/Graveyard/Deprecated/Applications/Commands/BaseCommands.yml	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-SelectTool:
-  target: Application
-  toolName: string
-  comment: Selects the current application tool
-DownloadDicom:
-  target: SliceViewerWidget
-  comment: Downloads the slice currently displayed in the SliceViewerWidget
-Export:
-  target: IWidget
-  comment: Export the content of the widget
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationContext.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "NativeStoneApplicationContext.h"
-#include "../../Platforms/Generic/OracleWebService.h"
-
-namespace OrthancStone
-{
-  void NativeStoneApplicationContext::GlobalMutexLocker::SetCentralWidget(
-    boost::shared_ptr<Deprecated::IWidget> widget)
-  {
-    that_.centralViewport_.SetCentralWidget(widget);
-  }
-
-
-  void NativeStoneApplicationContext::UpdateThread(NativeStoneApplicationContext* that)
-  {
-    while (!that->stopped_)
-    {
-      {
-        GlobalMutexLocker locker(*that);
-        locker.GetCentralViewport().DoAnimation();
-      }
-      
-      boost::this_thread::sleep(boost::posix_time::milliseconds(that->updateDelayInMs_));
-    }
-  }
-  
-
-  NativeStoneApplicationContext::NativeStoneApplicationContext() :
-    stopped_(true),
-    updateDelayInMs_(100)   // By default, 100ms between each refresh of the content
-  {
-    srand(static_cast<unsigned int>(time(NULL))); 
-  }
-
-
-  void NativeStoneApplicationContext::Start()
-  {
-    boost::recursive_mutex::scoped_lock lock(globalMutex_);
-    
-    if (stopped_ &&
-        centralViewport_.HasAnimation())
-    {
-      stopped_ = false;
-      updateThread_ = boost::thread(UpdateThread, this);
-    }
-  }
-
-
-  void NativeStoneApplicationContext::Stop()
-  {
-    stopped_ = true;
-    
-    if (updateThread_.joinable())
-    {
-      updateThread_.join();
-    }
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationContext.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Deprecated/Viewport/WidgetViewport.h"
-#include "../../Framework/Deprecated/Volumes/ISlicedVolume.h"
-#include "../../Framework/Deprecated/Volumes/IVolumeLoader.h"
-
-#include <list>
-#include <boost/thread.hpp>
-#include "../StoneApplicationContext.h"
-
-namespace OrthancStone
-{
-  class NativeStoneApplicationContext : public StoneApplicationContext
-  {
-  private:
-    static void UpdateThread(NativeStoneApplicationContext* that);
-
-    boost::recursive_mutex    globalMutex_;
-    Deprecated::WidgetViewport  centralViewport_;
-    boost::thread   updateThread_;
-    bool            stopped_;
-    unsigned int    updateDelayInMs_;
-
-  public:
-    class GlobalMutexLocker: public boost::noncopyable
-    {
-    private:
-      NativeStoneApplicationContext&        that_;
-      boost::recursive_mutex::scoped_lock   lock_;
-      
-    public:
-      GlobalMutexLocker(NativeStoneApplicationContext& that) :
-        that_(that),
-        lock_(that.globalMutex_)
-      {
-      }
-
-      void SetCentralWidget(boost::shared_ptr<Deprecated::IWidget> widget);
-
-      Deprecated::IViewport& GetCentralViewport() 
-      {
-        return that_.centralViewport_;
-      }
-
-      void SetUpdateDelay(unsigned int delayInMs)
-      {
-        that_.updateDelayInMs_ = delayInMs;
-      }
-    };
-
-    NativeStoneApplicationContext();
-
-    void Start();
-
-    void Stop();
-  };
-}
--- a/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationRunner.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,265 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#if ORTHANC_ENABLE_THREADS != 1
-#error this file shall be included only with the ORTHANC_ENABLE_THREADS set to 1
-#endif
-
-#include "NativeStoneApplicationRunner.h"
-
-#include "../../Framework/Deprecated/Toolbox/MessagingToolbox.h"
-#include "../../Platforms/Generic/OracleWebService.h"
-#include "../../Platforms/Generic/OracleDelayedCallExecutor.h"
-#include "NativeStoneApplicationContext.h"
-
-#include <Core/Logging.h>
-#include <Core/HttpClient.h>
-#include <Core/Toolbox.h>
-#include <Core/OrthancException.h>
-#include <Plugins/Samples/Common/OrthancHttpConnection.h>
-
-#include <boost/program_options.hpp>
-
-namespace OrthancStone
-{
-  // Anonymous namespace to avoid clashes against other compilation modules
-  namespace
-  {
-    class LogStatusBar : public Deprecated::IStatusBar
-    {
-    public:
-      virtual void ClearMessage()
-      {
-      }
-
-      virtual void SetMessage(const std::string& message)
-      {
-        LOG(WARNING) << message;
-      }
-    };
-  }
-
-  int NativeStoneApplicationRunner::Execute(int argc,
-                                            char* argv[])
-  {
-    /******************************************************************
-     * Initialize all the subcomponents of Orthanc Stone
-     ******************************************************************/
-
-    Orthanc::Logging::Initialize();
-    Orthanc::Toolbox::InitializeOpenSsl();
-    Orthanc::HttpClient::GlobalInitialize();
-
-    Initialize();
-
-    /******************************************************************
-     * Declare and parse the command-line options of the application
-     ******************************************************************/
-
-    boost::program_options::options_description options;
-
-    { // generic options
-      boost::program_options::options_description generic("Generic options");
-      generic.add_options()
-          ("help", "Display this help and exit")
-          ("verbose", "Be verbose in logs")
-          ("orthanc", boost::program_options::value<std::string>()->
-            default_value("http://localhost:8042/"),
-           "URL to the Orthanc server")
-          ("username", "Username for the Orthanc server")
-          ("password", "Password for the Orthanc server")
-          ("https-verify", boost::program_options::value<bool>()->
-            default_value(true), "Check HTTPS certificates")
-          ;
-
-      options.add(generic);
-    }
-
-    // platform specific options
-    DeclareCommandLineOptions(options);
-    
-    // application specific options
-    application_->DeclareStartupOptions(options);
-
-    boost::program_options::variables_map parameters;
-    bool error = false;
-
-    try
-    {
-      boost::program_options::store(
-        boost::program_options::command_line_parser(argc, argv).
-          options(options).allow_unregistered().run(), parameters);
-      boost::program_options::notify(parameters);
-    }
-    catch (boost::program_options::error& e)
-    {
-      LOG(ERROR) << 
-        "Error while parsing the command-line arguments: " << e.what();
-      error = true;
-    }
-
-
-    /******************************************************************
-     * Configure the application with the command-line parameters
-     ******************************************************************/
-
-    if (error || parameters.count("help"))
-    {
-      std::cout << std::endl;
-
-      std::cout << options << "\n";
-      return error ? -1 : 0;
-    }
-
-    if (parameters.count("https-verify") &&
-        !parameters["https-verify"].as<bool>())
-    {
-      LOG(WARNING) << "Turning off verification of HTTPS certificates (unsafe)";
-      Orthanc::HttpClient::ConfigureSsl(false, "");
-    }
-
-    LOG(ERROR) << "???????? if (parameters.count(\"verbose\"))";
-    if (parameters.count("verbose"))
-    {
-      LOG(ERROR) << "parameters.count(\"verbose\") != 0";
-      Orthanc::Logging::EnableInfoLevel(true);
-      LOG(INFO) << "Verbose logs are enabled";
-    }
-
-    LOG(ERROR) << "???????? if (parameters.count(\"trace\"))";
-    if (parameters.count("trace"))
-    {
-      LOG(ERROR) << "parameters.count(\"trace\") != 0";
-      Orthanc::Logging::EnableTraceLevel(true);
-      VLOG(1) << "Trace logs are enabled";
-    }
-
-    ParseCommandLineOptions(parameters);
-
-    bool success = true;
-    try
-    {
-      /****************************************************************
-       * Initialize the connection to the Orthanc server
-       ****************************************************************/
-
-      Orthanc::WebServiceParameters webServiceParameters;
-
-      if (parameters.count("orthanc"))
-      {
-        webServiceParameters.SetUrl(parameters["orthanc"].as<std::string>());
-      }
-
-      if (parameters.count("username") && parameters.count("password"))
-      {
-        webServiceParameters.SetCredentials(parameters["username"].
-          as<std::string>(),
-          parameters["password"].as<std::string>());
-      }
-
-      LOG(WARNING) << "URL to the Orthanc REST API: " << 
-        webServiceParameters.GetUrl();
-
-      {
-        OrthancPlugins::OrthancHttpConnection orthanc(webServiceParameters);
-        if (!Deprecated::MessagingToolbox::CheckOrthancVersion(orthanc))
-        {
-          LOG(ERROR) << "Your version of Orthanc is incompatible with Stone of "
-            << "Orthanc, please upgrade";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-        }
-      }
-
-
-      /****************************************************************
-       * Initialize the application
-       ****************************************************************/
-
-      LOG(WARNING) << "Creating the widgets of the application";
-
-      LogStatusBar statusBar;
-
-      NativeStoneApplicationContext context;
-
-      {
-        // use multiple threads to execute asynchronous tasks like 
-        // download content
-        Deprecated::Oracle oracle(6); 
-        oracle.Start();
-
-        {
-          boost::shared_ptr<Deprecated::OracleWebService> webService
-            (new Deprecated::OracleWebService(oracle, webServiceParameters, context));
-          context.SetWebService(webService);
-          context.SetOrthancBaseUrl(webServiceParameters.GetUrl());
-
-          Deprecated::OracleDelayedCallExecutor delayedExecutor(oracle, context);
-          context.SetDelayedCallExecutor(delayedExecutor);
-
-          application_->Initialize(&context, statusBar, parameters);
-
-          {
-            NativeStoneApplicationContext::GlobalMutexLocker locker(context);
-            locker.SetCentralWidget(application_->GetCentralWidget());
-            locker.GetCentralViewport().SetStatusBar(statusBar);
-          }
-
-          std::string title = application_->GetTitle();
-          if (title.empty())
-          {
-            title = "Stone of Orthanc";
-          }
-
-          /****************************************************************
-           * Run the application
-           ****************************************************************/
-
-          Run(context, title, argc, argv);
-
-          /****************************************************************
-           * Finalize the application
-           ****************************************************************/
-
-          oracle.Stop();
-        }
-      }
-
-      LOG(WARNING) << "The application is stopping";
-      application_->Finalize();
-    }
-    catch (Orthanc::OrthancException& e)
-    {
-      LOG(ERROR) << "EXCEPTION: " << e.What();
-      success = false;
-    }
-
-
-    /******************************************************************
-     * Finalize all the subcomponents of Orthanc Stone
-     ******************************************************************/
-
-    Finalize();
-    Orthanc::HttpClient::GlobalFinalize();
-    Orthanc::Toolbox::FinalizeOpenSsl();
-
-    return (success ? 0 : -1);
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Generic/NativeStoneApplicationRunner.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../IStoneApplication.h"
-
-#if ORTHANC_ENABLE_THREADS != 1
-#error this file shall be included only with the ORTHANC_ENABLE_THREADS set to 1
-#endif
-
-namespace OrthancStone
-{
-  class NativeStoneApplicationContext;
-
-  class NativeStoneApplicationRunner
-  {
-  protected:
-    boost::shared_ptr<IStoneApplication>  application_;
-    
-  public:
-    NativeStoneApplicationRunner(boost::shared_ptr<IStoneApplication> application)
-      : application_(application)
-    {
-    }
-    int Execute(int argc,
-                char* argv[]);
-
-    virtual void Initialize() = 0;
-    virtual void DeclareCommandLineOptions(boost::program_options::options_description& options) = 0;
-    virtual void ParseCommandLineOptions(const boost::program_options::variables_map& parameters) = 0;
-
-    virtual void Run(NativeStoneApplicationContext& context, const std::string& title, int argc, char* argv[]) = 0;
-    virtual void Finalize() = 0;
-  };
-
-}
--- a/Resources/Graveyard/Deprecated/Applications/Generic/Scene2DInteractor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include "../../Framework/Scene2D/PointerEvent.h"
-#include "../../Framework/Scene2DViewport/ViewportController.h"
-//#include "../../Framework/Scene2D/Internals/CompositorHelper.h"
-#include "GuiAdapter.h"
-
-
-namespace OrthancStone
-{
-
-  class Scene2DInteractor
-  {
-  protected:
-    boost::shared_ptr<ViewportController>       viewportController_;
-//    boost::shared_ptr<ICompositor>              compositor_;
-
-  public:
-    Scene2DInteractor(boost::shared_ptr<ViewportController> viewportController) :
-      viewportController_(viewportController)
-    {}
-
-//    void SetCompositor(boost::shared_ptr<ICompositor> compositor)
-//    {
-//      compositor_ = compositor;
-//    }
-
-    virtual bool OnMouseEvent(const GuiAdapterMouseEvent& guiEvent, const PointerEvent& pointerEvent) = 0; // returns true if it has handled the event
-    virtual bool OnKeyboardEvent(const GuiAdapterKeyboardEvent& guiEvent) = 0; // returns true if it has handled the event
-    virtual bool OnWheelEvent(const GuiAdapterWheelEvent& guiEvent) = 0; // returns true if it has handled the event
-
-  };
-}
--- a/Resources/Graveyard/Deprecated/Applications/IStoneApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "StoneApplicationContext.h"
-#include "../Framework/Deprecated/Viewport/WidgetViewport.h"
-
-#include <boost/program_options.hpp>
-#include <json/json.h>
-
-namespace OrthancStone
-{
-#if ORTHANC_ENABLE_QT==1
-  class QStoneMainWindow;
-#endif
-
-  // a StoneApplication is an application that can actually be executed
-  // in multiple environments.  i.e: it can run natively integrated in a QtApplication
-  // or it can be executed as part of a WebPage when compiled into WebAssembly.
-  class IStoneApplication : public boost::noncopyable
-  {
-  protected:
-    StoneApplicationContext* context_;
-
-  public:
-    virtual ~IStoneApplication()
-    {
-    }
-
-    virtual void DeclareStartupOptions(boost::program_options::options_description& options) = 0;
-    virtual void Initialize(StoneApplicationContext* context,
-                            Deprecated::IStatusBar& statusBar,
-                            const boost::program_options::variables_map& parameters) = 0;
-
-    /**
-      This method is meant to process messages received from the outside world (i.e. GUI)
-    */
-    virtual void HandleSerializedMessage(const char* data) = 0;
-
-#if ORTHANC_ENABLE_WASM==1
-    virtual void InitializeWasm() {}  // specific initialization when the app is running in WebAssembly.  This is called after the other Initialize()
-#endif
-#if ORTHANC_ENABLE_QT==1
-      virtual QStoneMainWindow* CreateQtMainWindow() = 0;
-#endif
-
-    virtual std::string GetTitle() const = 0;
-    
-    virtual void SetCentralWidget(boost::shared_ptr<Deprecated::IWidget> widget) = 0;
-    
-    virtual boost::shared_ptr<Deprecated::IWidget> GetCentralWidget() = 0;
-    
-    virtual void Finalize() = 0;
-  };
-}
--- a/Resources/Graveyard/Deprecated/Applications/Qt/QCairoWidget.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,238 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "QCairoWidget.h"
-
-#include <QPainter>
-#include <QPaintEvent>
-
-#include <stdexcept>
-
-
-QCairoWidget::StoneObserver::StoneObserver(QCairoWidget& that,
-                                           Deprecated::IViewport& viewport,
-                                           OrthancStone::MessageBroker& broker) :
-  OrthancStone::IObserver(broker),
-  that_(that)
-{
-  // get notified each time the content of the central viewport changes
-  viewport.RegisterObserverCallback(
-    new OrthancStone::Callable<StoneObserver, Deprecated::IViewport::ViewportChangedMessage>
-    (*this, &StoneObserver::OnViewportChanged));
-}
-
-
-QCairoWidget::QCairoWidget(QWidget *parent) :
-  QWidget(parent),
-  context_(NULL)
-{
-  setFocusPolicy(Qt::StrongFocus); // catch keyPressEvents
-}
-
-
-void QCairoWidget::SetContext(OrthancStone::NativeStoneApplicationContext& context)
-{
-  context_ = &context;
-
-  {
-    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
-    observer_.reset(new StoneObserver(*this,
-                                      locker.GetCentralViewport(),
-                                      locker.GetMessageBroker()));
-  }
-}
-
-
-void QCairoWidget::paintEvent(QPaintEvent* /*event*/)
-{
-  QPainter painter(this);
-
-  if (image_.get() != NULL &&
-      context_ != NULL)
-  {
-    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
-    Deprecated::IViewport& viewport = locker.GetCentralViewport();
-    Orthanc::ImageAccessor a;
-    surface_.GetWriteableAccessor(a);
-    viewport.Render(a);
-    painter.drawImage(0, 0, *image_);
-  }
-  else
-  {
-    painter.fillRect(rect(), Qt::red);
-  }
-}
-
-OrthancStone::KeyboardModifiers GetKeyboardModifiers(QInputEvent* event)
-{
-  Qt::KeyboardModifiers qtModifiers = event->modifiers();
-  int stoneModifiers = static_cast<int>(OrthancStone::KeyboardModifiers_None);
-  if ((qtModifiers & Qt::AltModifier) != 0)
-  {
-    stoneModifiers |= static_cast<int>(OrthancStone::KeyboardModifiers_Alt);
-  }
-  if ((qtModifiers & Qt::ControlModifier) != 0)
-  {
-    stoneModifiers |= static_cast<int>(OrthancStone::KeyboardModifiers_Control);
-  }
-  if ((qtModifiers & Qt::ShiftModifier) != 0)
-  {
-    stoneModifiers |= static_cast<int>(OrthancStone::KeyboardModifiers_Shift);
-  }
-  return static_cast<OrthancStone::KeyboardModifiers>(stoneModifiers);
-}
-
-void QCairoWidget::mousePressEvent(QMouseEvent* event)
-{
-  OrthancStone::KeyboardModifiers stoneModifiers = GetKeyboardModifiers(event);
-
-  OrthancStone::MouseButton button;
-
-  switch (event->button())
-  {
-    case Qt::LeftButton:
-      button = OrthancStone::MouseButton_Left;
-      break;
-
-    case Qt::RightButton:
-      button = OrthancStone::MouseButton_Right;
-      break;
-
-    case Qt::MiddleButton:
-      button = OrthancStone::MouseButton_Middle;
-      break;
-
-    default:
-      return;  // Unsupported button
-  }
-
-  {
-    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
-    locker.GetCentralViewport().MouseDown(button, event->pos().x(), event->pos().y(), stoneModifiers, std::vector<Deprecated::Touch>());
-  }
-}
-
-
-void QCairoWidget::mouseReleaseEvent(QMouseEvent* /*eventNotUsed*/)
-{
-  OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
-  locker.GetCentralViewport().MouseLeave();
-}
-
-
-void QCairoWidget::mouseMoveEvent(QMouseEvent* event)
-{
-  OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
-  locker.GetCentralViewport().MouseMove(event->pos().x(), event->pos().y(), std::vector<Deprecated::Touch>());
-}
-
-
-void QCairoWidget::wheelEvent(QWheelEvent * event)
-{
-  OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
-
-  OrthancStone::KeyboardModifiers stoneModifiers = GetKeyboardModifiers(event);
-
-  if (event->orientation() == Qt::Vertical)
-  {
-    if (event->delta() < 0)  // TODO: compare direction with SDL and make sure we send the same directions
-    {
-       locker.GetCentralViewport().MouseWheel(OrthancStone::MouseWheelDirection_Up, event->pos().x(), event->pos().y(), stoneModifiers);
-    }
-    else
-    {
-      locker.GetCentralViewport().MouseWheel(OrthancStone::MouseWheelDirection_Down, event->pos().x(), event->pos().y(), stoneModifiers);
-    }
-  }
-}
-
-void QCairoWidget::keyPressEvent(QKeyEvent *event)
-{
-  using namespace OrthancStone;
-
-  OrthancStone::KeyboardModifiers stoneModifiers = GetKeyboardModifiers(event);
-
-  OrthancStone::KeyboardKeys keyType = OrthancStone::KeyboardKeys_Generic;
-  char keyChar = event->text()[0].toLatin1();
-
-#define CASE_QT_KEY_TO_ORTHANC(qt, o) case qt: keyType = o; break;
-  if (keyChar == 0)
-  {
-    switch (event->key())
-    {
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Up, KeyboardKeys_Up);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Down, KeyboardKeys_Down);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Left, KeyboardKeys_Left);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Right, KeyboardKeys_Right);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F1, KeyboardKeys_F1);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F2, KeyboardKeys_F2);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F3, KeyboardKeys_F3);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F4, KeyboardKeys_F4);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F5, KeyboardKeys_F5);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F6, KeyboardKeys_F6);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F7, KeyboardKeys_F7);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F8, KeyboardKeys_F8);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F9, KeyboardKeys_F9);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F10, KeyboardKeys_F10);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F11, KeyboardKeys_F11);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_F12, KeyboardKeys_F12);
-    default:
-      break;
-    }
-  }
-  else if (keyChar == 127)
-  {
-    switch (event->key())
-    {
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Delete, KeyboardKeys_Delete);
-      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Backspace, KeyboardKeys_Backspace);
-    default:
-      break;
-    }
-  }
-
-  {
-    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);    
-    locker.GetCentralViewport().KeyPressed(keyType, keyChar, stoneModifiers);
-  }
-}
-
-
-void QCairoWidget::resizeEvent(QResizeEvent* event)
-{
-  grabGesture(Qt::PanGesture);
-  QWidget::resizeEvent(event);
-
-  if (event)
-  {
-    surface_.SetSize(event->size().width(), event->size().height(), true);
-
-    image_.reset(new QImage(reinterpret_cast<uchar*>(surface_.GetBuffer()),
-                            event->size().width(), 
-                            event->size().height(),
-                            surface_.GetPitch(),
-                            QImage::Format_RGB32));
-
-    {
-      OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker locker(*context_);
-      locker.GetCentralViewport().SetSize(event->size().width(), event->size().height());
-    }
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Qt/QCairoWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "../../Applications/Generic/NativeStoneApplicationContext.h"
-#include "../../Framework/Wrappers/CairoSurface.h"
-#include "../../Framework/Deprecated/Widgets/IWidget.h"
-
-#include <QWidget>
-#include <memory>
-#include <cassert>
-
-class QCairoWidget : public QWidget
-{
-  Q_OBJECT
-
-private:
-  class StoneObserver : public OrthancStone::IObserver
-  {
-  private:
-    QCairoWidget& that_;
-    
-  public:
-    StoneObserver(QCairoWidget& that,
-                  Deprecated::IViewport& viewport,
-                  OrthancStone::MessageBroker& broker);
-
-    void OnViewportChanged(const Deprecated::IViewport::ViewportChangedMessage& message)
-    {
-      that_.OnViewportChanged();
-    }
-  };
-  
-  std::unique_ptr<QImage>         image_;
-  OrthancStone::CairoSurface    surface_;
-  OrthancStone::NativeStoneApplicationContext* context_;
-  std::unique_ptr<StoneObserver>  observer_;
-
-protected:
-  virtual void paintEvent(QPaintEvent *event);
-
-  virtual void resizeEvent(QResizeEvent *event);
-
-  virtual void mouseMoveEvent(QMouseEvent *event);
-
-  virtual void mousePressEvent(QMouseEvent *event);
-
-  virtual void mouseReleaseEvent(QMouseEvent *event);
-
-  virtual void wheelEvent(QWheelEvent *event);
-
-  virtual void keyPressEvent(QKeyEvent *event);
-
-public:
-  explicit QCairoWidget(QWidget *parent);
- 
-  void SetContext(OrthancStone::NativeStoneApplicationContext& context);
-
-  void OnViewportChanged()
-  {
-    update();  // schedule a repaint (handled by Qt)
-    emit ContentChanged();
-  }
-
-signals:
-  void ContentChanged();
-                                               
-public slots:
-
-};
--- a/Resources/Graveyard/Deprecated/Applications/Qt/QStoneMainWindow.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "QStoneMainWindow.h"
-
-namespace OrthancStone
-{
-
-  QStoneMainWindow::QStoneMainWindow(NativeStoneApplicationContext& context,
-                                     QWidget *parent) :
-    QMainWindow(parent),
-    context_(context),
-    cairoCentralWidget_(NULL)
-  {
-  }
-
-  void QStoneMainWindow::SetCentralStoneWidget(QCairoWidget& centralWidget)
-  {
-    cairoCentralWidget_ = &centralWidget;
-    cairoCentralWidget_->SetContext(context_);
-  }
-
-  QStoneMainWindow::~QStoneMainWindow()
-  {
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Qt/QStoneMainWindow.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include <QMainWindow>
-
-#include "QCairoWidget.h"
-#include "../Generic/NativeStoneApplicationContext.h"
-
-namespace OrthancStone
-{
-  class QStoneMainWindow : public QMainWindow
-  {
-    Q_OBJECT
-
-  private:
-    OrthancStone::NativeStoneApplicationContext& context_;
-    QCairoWidget          *cairoCentralWidget_;
-
-  protected:  // you must inherit this class
-    QStoneMainWindow(NativeStoneApplicationContext& context, QWidget *parent = 0);
-    void SetCentralStoneWidget(QCairoWidget& centralWidget);
-
-  public:
-    virtual ~QStoneMainWindow();
-  };
-
-}
--- a/Resources/Graveyard/Deprecated/Applications/Qt/QtStoneApplicationRunner.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#if ORTHANC_ENABLE_QT != 1
-#error this file shall be included only with the ORTHANC_ENABLE_QT set to 1
-#endif
-
-#include "QtStoneApplicationRunner.h"
-#include <boost/program_options.hpp>
-#include <QApplication>
-
-#include "../../Framework/Deprecated/Toolbox/MessagingToolbox.h"
-
-#include <Core/Logging.h>
-#include <Core/HttpClient.h>
-#include <Core/Toolbox.h>
-#include <Plugins/Samples/Common/OrthancHttpConnection.h>
-#include "../../Platforms/Generic/OracleWebService.h"
-
-
-namespace OrthancStone
-{
-  void QtStoneApplicationRunner::Initialize()
-  {
-  }
-
-  void QtStoneApplicationRunner::DeclareCommandLineOptions(boost::program_options::options_description& options)
-  {
-  }
-
-  void QtStoneApplicationRunner::Run(NativeStoneApplicationContext& context, const std::string& title, int argc, char* argv[])
-  {
-    context.Start();
-
-    QApplication qtApplication(argc, argv);
-    window_.reset(application_.CreateQtMainWindow());
-
-    window_->show();
-    qtApplication.exec();
-
-    context.Stop();
-  }
-
-  void QtStoneApplicationRunner::Finalize()
-  {
-  }
-
-
-}
--- a/Resources/Graveyard/Deprecated/Applications/Qt/QtStoneApplicationRunner.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Generic/NativeStoneApplicationRunner.h"
-#include "QStoneMainWindow.h"
-
-#if ORTHANC_ENABLE_QT != 1
-#error this file shall be included only with the ORTHANC_ENABLE_QT set to 1
-#endif
-
-namespace OrthancStone
-{
-  class QtStoneApplicationRunner : public NativeStoneApplicationRunner
-  {
-  protected:
-    std::unique_ptr<QStoneMainWindow> window_;
-
-  public:
-    QtStoneApplicationRunner(MessageBroker& broker,
-                             IStoneApplication& application)
-      : NativeStoneApplicationRunner(broker, application)
-    {
-    }
-
-
-    virtual void Initialize();
-
-    virtual void DeclareCommandLineOptions(boost::program_options::options_description& options);
-    virtual void ParseCommandLineOptions(const boost::program_options::variables_map& parameters) {}
-    virtual void Run(NativeStoneApplicationContext& context, const std::string& title, int argc, char* argv[]);
-    virtual void Finalize();
-  };
-
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/BasicPetCtFusionApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "SampleInteractor.h"
-
-#include <Core/Logging.h>
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class BasicPetCtFusionApplication : public SampleApplicationBase
-    {
-    private:
-      class Interactor : public SampleInteractor
-      {
-      public:
-        static void SetStyle(LayeredSceneWidget& widget,
-                             bool ct,
-                             bool pet)
-        {
-          if (ct)
-          {
-            RenderStyle style;
-            style.windowing_ = ImageWindowing_Bone;
-            widget.SetLayerStyle(0, style);
-          }
-          else
-          {
-            RenderStyle style;
-            style.visible_ = false;
-            widget.SetLayerStyle(0, style);
-          }
-
-          if (ct && pet)
-          {
-            RenderStyle style;
-            style.applyLut_ = true;
-            style.alpha_ = 0.5;
-            widget.SetLayerStyle(1, style);
-          }
-          else if (pet)
-          {
-            RenderStyle style;
-            style.applyLut_ = true;
-            widget.SetLayerStyle(1, style);
-          }
-          else
-          {
-            RenderStyle style;
-            style.visible_ = false;
-            widget.SetLayerStyle(1, style);
-          }
-        }
-
-
-        static bool IsVisible(LayeredSceneWidget& widget,
-                              size_t layer)
-        {
-          RenderStyle style = widget.GetLayerStyle(layer);
-          return style.visible_;
-        }
-
-
-        static void ToggleInterpolation(LayeredSceneWidget& widget,
-                                        size_t layer)
-        {
-          RenderStyle style = widget.GetLayerStyle(layer);
-         
-          if (style.interpolation_ == ImageInterpolation_Bilinear)
-          {
-            style.interpolation_ = ImageInterpolation_Nearest;
-          }
-          else
-          {
-            style.interpolation_ = ImageInterpolation_Bilinear;
-          }
-
-          widget.SetLayerStyle(layer, style);
-        }
-
-
-        Interactor(VolumeImage& volume,
-                   VolumeProjection projection, 
-                   bool reverse) :
-          SampleInteractor(volume, projection, reverse)
-        {
-        }
-
-
-        virtual void KeyPressed(WorldSceneWidget& widget,
-                                char key,
-                                KeyboardModifiers modifiers,
-                                IStatusBar* statusBar)
-        {
-          LayeredSceneWidget& layered = dynamic_cast<LayeredSceneWidget&>(widget);
-
-          switch (key)
-          {
-            case 'c':
-              // Toggle the visibility of the CT layer
-              SetStyle(layered, !IsVisible(layered, 0), IsVisible(layered, 1));
-              break;
-
-            case 'p':
-              // Toggle the visibility of the PET layer
-              SetStyle(layered, IsVisible(layered, 0), !IsVisible(layered, 1));
-              break;
-
-            case 'i':
-            {
-              // Toggle on/off the interpolation
-              ToggleInterpolation(layered, 0);
-              ToggleInterpolation(layered, 1);
-              break;
-            }
-
-            default:
-              break;
-          }
-        }
-      };
-
-
-    public:
-      virtual void DeclareCommandLineOptions(boost::program_options::options_description& options)
-      {
-        boost::program_options::options_description generic("Sample options");
-        generic.add_options()
-          ("ct", boost::program_options::value<std::string>(), 
-           "Orthanc ID of the CT series")
-          ("pet", boost::program_options::value<std::string>(), 
-           "Orthanc ID of the PET series")
-          ("threads", boost::program_options::value<unsigned int>()->default_value(3), 
-           "Number of download threads for the CT series")
-          ;
-
-        options.add(generic);    
-      }
-
-      virtual void Initialize(BasicApplicationContext& context,
-                              IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters)
-      {
-        using namespace OrthancStone;
-
-        if (parameters.count("ct") != 1 ||
-            parameters.count("pet") != 1)
-        {
-          LOG(ERROR) << "The series ID is missing";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-
-        std::string ct = parameters["ct"].as<std::string>();
-        std::string pet = parameters["pet"].as<std::string>();
-        unsigned int threads = parameters["threads"].as<unsigned int>();
-
-        VolumeImage& ctVolume = context.AddSeriesVolume(ct, true /* progressive download */, threads);
-        VolumeImage& petVolume = context.AddSeriesVolume(pet, true /* progressive download */, 1);
-
-        // Take the PET volume as the reference for the slices
-        std::unique_ptr<Interactor> interactor(new Interactor(petVolume, VolumeProjection_Axial, false /* don't reverse normal */));
-
-        std::unique_ptr<LayeredSceneWidget> widget(new LayeredSceneWidget);
-        widget->AddLayer(new VolumeImage::LayerFactory(ctVolume));
-        widget->AddLayer(new VolumeImage::LayerFactory(petVolume));
-        widget->SetSlice(interactor->GetCursor().GetCurrentSlice());
-        widget->SetInteractor(*interactor);
-
-        Interactor::SetStyle(*widget, true, true);   // Initially, show both CT and PET layers
-
-        context.AddInteractor(interactor.release());
-        context.SetCentralWidget(widget.release());
-
-        statusBar.SetMessage("Use the key \"t\" to toggle the fullscreen mode");
-        statusBar.SetMessage("Use the key \"c\" to show/hide the CT layer");
-        statusBar.SetMessage("Use the key \"p\" to show/hide the PET layer");
-        statusBar.SetMessage("Use the key \"i\" to toggle the smoothing of the images");
-      }
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,292 +0,0 @@
-# Usage (Linux):
-# to build the WASM samples
-# source ~/Downloads/emsdk/emsdk_env.sh && cmake -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DSTONE_SOURCES_DIR=$currentDir/../../../orthanc-stone -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT=$currentDir/../../../orthanc -DALLOW_DOWNLOADS=ON .. -DENABLE_WASM=ON
-# to build the Qt samples
-
-cmake_minimum_required(VERSION 2.8.3)
-project(OrthancStone)
-
-include(../../../Resources/CMake/OrthancStoneParameters.cmake)
-
-set(ENABLE_STONE_DEPRECATED ON)  # Need deprecated classes for these samples
-set(EMSCRIPTEN_SET_LLVM_WASM_BACKEND ON)
-
-include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
-DownloadPackage(
-  "a24b8136b8f3bb93f166baf97d9328de"
-  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
-  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
-
-set(ORTHANC_STONE_APPLICATION_RESOURCES
-  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
-  )
-
-if (OPENSSL_NO_CAPIENG)
-add_definitions(-DOPENSSL_NO_CAPIENG=1)
-endif()
-
-
-# the following block has been borrowed from orthanc/**/Compiler.cmake
-if (MSVC_MULTIPLE_PROCESSES)
-# "If you omit the processMax argument in the /MP option, the
-# compiler obtains the number of effective processors from the
-# operating system, and then creates one process per effective
-# processor"
-# https://blog.kitware.com/cmake-building-with-all-your-cores/
-# https://docs.microsoft.com/en-us/cpp/build/reference/mp-build-with-multiple-processes
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
-endif()
-
-#set(ENABLE_DCMTK ON)
-
-set(ENABLE_SDL OFF CACHE BOOL "Target SDL Native application")
-set(ENABLE_QT OFF CACHE BOOL "Target Qt Native application")
-set(ENABLE_WASM OFF CACHE BOOL "Target WASM application")
-
-if (ENABLE_WASM)
-  #####################################################################
-  ## Configuration of the Emscripten compiler for WebAssembly target
-  #####################################################################
-
-  set(WASM_FLAGS "-s WASM=1")
-  set(WASM_FLAGS "${WASM_FLAGS} -s STRICT=1") # drops support for all deprecated build options
-  set(WASM_FLAGS "${WASM_FLAGS} -s FILESYSTEM=1") # if we don't include it, gen_uuid.c fails to build because srand, getpid(), ... are not defined
-  set(WASM_FLAGS "${WASM_FLAGS} -s DISABLE_EXCEPTION_CATCHING=0") # actually enable exception catching 
-  set(WASM_FLAGS "${WASM_FLAGS} -s ERROR_ON_MISSING_LIBRARIES=1")
-  
-  if (CMAKE_BUILD_TYPE MATCHES DEBUG)
-    set(WASM_FLAGS "${WASM_FLAGS} -g4") # generate debug information
-    set(WASM_FLAGS "${WASM_FLAGS} -s ASSERTIONS=2") # more runtime checks
-  else()
-    set(WASM_FLAGS "${WASM_FLAGS} -Os") # optimize for web (speed and size)
-  endif()
-
-  set(WASM_MODULE_NAME "StoneFrameworkModule" CACHE STRING "Name of the WebAssembly module")
-
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
-
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${WASM_FLAGS}")  # not always clear which flags are for the compiler and which one are for the linker -> pass them all to the linker too
-  # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Applications/Samples/samples-library.js")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmWebService.js")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmDelayedCallExecutor.js")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/default-library.js")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXPORT_NAME='\"${WASM_MODULE_NAME}\"'")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s TOTAL_MEMORY=536870912")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s TOTAL_STACK=128000000")
-
-  add_definitions(-DORTHANC_ENABLE_WASM=1)
-  set(ORTHANC_SANDBOXED ON)
-
-elseif (ENABLE_QT OR ENABLE_SDL)
-
-  set(ENABLE_NATIVE ON)
-  set(ORTHANC_SANDBOXED OFF)
-  set(ENABLE_CRYPTO_OPTIONS ON)
-  set(ENABLE_GOOGLE_TEST ON)
-  set(ENABLE_WEB_CLIENT ON)
-
-else()
-  set(ENABLE_NATIVE ON)
-  set(ENABLE_OPENGL OFF)
-  
-endif()
-
-
-#####################################################################
-## Configuration for Orthanc
-#####################################################################
-
-# include(../../Resources/CMake/Version.cmake)
-
-if (ORTHANC_STONE_VERSION STREQUAL "mainline")
-  set(ORTHANC_FRAMEWORK_VERSION "mainline")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
-else()
-  set(ORTHANC_FRAMEWORK_VERSION "1.4.1")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
-endif()
-
-set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
-set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
-set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
-
-add_definitions(
-  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
-  )
-
-
-#####################################################################
-## Build a static library containing the Orthanc Stone framework
-#####################################################################
-
-
-LIST(APPEND ORTHANC_BOOST_COMPONENTS program_options)
-
-include(../../../Resources/CMake/OrthancStoneConfiguration.cmake)
-
-add_library(OrthancStone STATIC
-  ${ORTHANC_STONE_SOURCES}
-  )
-
-#####################################################################
-## Build all the sample applications
-#####################################################################
-
-include_directories(${ORTHANC_STONE_ROOT})
-
-# files common to all samples
-list(APPEND SAMPLE_APPLICATIONS_SOURCES
-  ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SampleInteractor.h
-  ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SampleApplicationBase.h
-  )
-
-if (ENABLE_QT)
-  list(APPEND SAMPLE_APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleQtApplicationRunner.h
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindow.cpp
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.cpp
-    )
-
-  ORTHANC_QT_WRAP_UI(SAMPLE_APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindow.ui
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.ui
-    )
-
-  ORTHANC_QT_WRAP_CPP(SAMPLE_APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Applications/Qt/QCairoWidget.h
-    ${ORTHANC_STONE_ROOT}/Applications/Qt/QStoneMainWindow.h
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindow.h
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.h
-    )
-endif()
-
-if (ENABLE_NATIVE)
-  list(APPEND SAMPLE_APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SampleMainNative.cpp
-    )
-
-elseif (ENABLE_WASM)
-
-  list(APPEND SAMPLE_APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SampleMainWasm.cpp
-    ${STONE_WASM_SOURCES}
-    )
-endif()
-
-
-macro(BuildSingleFileSample Target Header Sample)
-  add_executable(${Target}
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/${Header}
-    ${SAMPLE_APPLICATIONS_SOURCES}
-    )
-  set_target_properties(${Target} PROPERTIES COMPILE_DEFINITIONS ORTHANC_STONE_SAMPLE=${Sample})
-  target_link_libraries(${Target} OrthancStone)
-endmacro()
-
-
-if (ENABLE_SDL)
-  #BuildSingleFileSample(OrthancStoneEmpty EmptyApplication.h 1)
-  #BuildSingleFileSample(OrthancStoneTestPattern TestPatternApplication.h 2)
-  BuildSingleFileSample(OrthancStoneSingleFrame SingleFrameApplication.h 3)
-  #BuildSingleFileSample(OrthancStoneSingleVolume SingleVolumeApplication.h 4)
-  #BuildSingleFileSample(OrthancStoneBasicPetCtFusion 5)
-  #BuildSingleFileSample(OrthancStoneSynchronizedSeries 6)
-  #BuildSingleFileSample(OrthancStoneLayoutPetCtFusion 7)
-  BuildSingleFileSample(OrthancStoneSimpleViewerSingleFile SimpleViewerApplicationSingleFile.h 8)  # we keep that one just as a sample before we convert another sample to this pattern
-  BuildSingleFileSample(OrthancStoneSingleFrameEditor SingleFrameEditorApplication.h 9)
-endif()
-  
-##### SimpleViewer sample (Qt and WASM only) #######
-
-if (ENABLE_QT OR ENABLE_WASM)
-
-    if (ENABLE_QT)
-      list(APPEND SIMPLE_VIEWER_APPLICATION_SOURCES
-        ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.cpp
-        ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.ui
-        ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Qt/mainQt.cpp
-        )
-
-      ORTHANC_QT_WRAP_UI(SIMPLE_VIEWER_APPLICATION_SOURCES
-        ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.ui
-        )
-
-      ORTHANC_QT_WRAP_CPP(SIMPLE_VIEWER_APPLICATION_SOURCES
-        ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.h
-        )
-
-elseif (ENABLE_WASM)
-        list(APPEND SIMPLE_VIEWER_APPLICATION_SOURCES
-            ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Wasm/mainWasm.cpp
-            ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.cpp
-            ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.h
-            ${STONE_WASM_SOURCES}
-          )
-    endif()
-
-    add_executable(OrthancStoneSimpleViewer
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/AppStatus.h
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.cpp
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.h
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.cpp
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.h
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.cpp
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.h
-      ${SIMPLE_VIEWER_APPLICATION_SOURCES}
-      )
-    target_link_libraries(OrthancStoneSimpleViewer OrthancStone)
-
-    BuildSingleFileSample(OrthancStoneSingleFrameEditor SingleFrameEditorApplication.h 9)
-endif()
-
-#####################################################################
-## Build the unit tests
-#####################################################################
-
-if (ENABLE_NATIVE)
-  add_executable(UnitTests
-    ${GOOGLE_TEST_SOURCES}
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/GenericToolboxTests.cpp
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/ImageToolboxTests.cpp
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/PixelTestPatternsTests.cpp
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestCommands.cpp
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestMessageBroker.cpp
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestStrategy.cpp
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestStructureSet.cpp
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/UnitTestsMain.cpp
-    )
-
-  target_link_libraries(UnitTests OrthancStone)
-
-  add_custom_command(
-    TARGET UnitTests
-    POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy
-      "${ORTHANC_STONE_ROOT}/UnitTestsSources/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json" 
-      "$<TARGET_FILE_DIR:UnitTests>/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json"
-    )
-
-endif()
-
-#####################################################################
-## Generate the documentation if Doxygen is present
-#####################################################################
-
-find_package(Doxygen)
-if (DOXYGEN_FOUND)
-  configure_file(
-    ${ORTHANC_STONE_ROOT}/Resources/OrthancStone.doxygen
-    ${CMAKE_CURRENT_BINARY_DIR}/OrthancStone.doxygen
-    @ONLY)
-
-  add_custom_target(doc
-    ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/OrthancStone.doxygen
-    COMMENT "Generating documentation with Doxygen" VERBATIM
-    )
-else()
-  message("Doxygen not found. The documentation will not be built.")
-endif()
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/CMakeLists.txt.old	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,248 +0,0 @@
-# Usage: see README file
-
-cmake_minimum_required(VERSION 2.8.3)
-
-# Automatically link Qt executables to qtmain target on Windows
-# ("OLD" == do not link)
-if(POLICY CMP0020)
-  cmake_policy(SET CMP0020 OLD)
-endif()
-
-# Only interpret if() arguments as variables or keywords when unquoted.
-# NEW = do NOT dereference *quoted* variables
-if(POLICY CMP0054)
-  cmake_policy(SET CMP0054 NEW)
-endif()
-
-project(OrthancStone)
-
-include(../../Resources/CMake/OrthancStoneParameters.cmake)
-
-#set(ENABLE_DCMTK ON)
-
-set(ENABLE_SDL OFF CACHE BOOL "Target SDL Native application")
-set(ENABLE_QT OFF CACHE BOOL "Target Qt Native application")
-set(ENABLE_WASM OFF CACHE BOOL "Target WASM application")
-
-# TODO: replace or compute STONE_SOURCES_DIR from CMAKE_CURRENT_LIST_FILE
-
-if (ENABLE_WASM)
-  #####################################################################
-  ## Configuration of the Emscripten compiler for WebAssembly target
-  #####################################################################
-
-  set(WASM_FLAGS "-s WASM=1 -O0 -g0")
-  message("*****************************************************************************")
-  message("WARNING: optimizations are disabled in emcc!!! Enable them for production use")
-  message("*****************************************************************************")
-  set(WASM_MODULE_NAME "StoneFrameworkModule" CACHE STRING "Name of the WebAssembly module")
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmWebService.js --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmDelayedCallExecutor.js --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/default-library.js  -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
-
-  # Handling of memory
-  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1")  # Resize
-  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s TOTAL_MEMORY=536870912")  # 512MB
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXPORT_NAME='\"${WASM_MODULE_NAME}\"' -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=536870912 -s TOTAL_STACK=128000000")  # 512MB + resize
-  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=1073741824")  # 1GB + resize
-
-  # To debug exceptions
-  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DEMANGLE_SUPPORT=1 -s ASSERTIONS=2")
-
-  add_definitions(-DORTHANC_ENABLE_WASM=1)
-  set(ORTHANC_SANDBOXED ON)
-
-elseif (ENABLE_QT OR ENABLE_SDL)
-
-  set(ENABLE_NATIVE ON)
-  set(ORTHANC_SANDBOXED OFF)
-  set(ENABLE_CRYPTO_OPTIONS ON)
-  set(ENABLE_GOOGLE_TEST ON)
-  set(ENABLE_WEB_CLIENT ON)
-
-endif()
-
-#####################################################################
-## Configuration for Orthanc
-#####################################################################
-
-# include(../../Resources/CMake/Version.cmake)
-
-if (ORTHANC_STONE_VERSION STREQUAL "mainline")
-  set(ORTHANC_FRAMEWORK_VERSION "mainline")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
-else()
-  set(ORTHANC_FRAMEWORK_VERSION "1.4.1")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
-endif()
-
-set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
-set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
-set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
-
-#####################################################################
-## Build a static library containing the Orthanc Stone framework
-#####################################################################
-
-LIST(APPEND ORTHANC_BOOST_COMPONENTS program_options)
-
-include(../../Resources/CMake/OrthancStoneConfiguration.cmake)
-
-add_library(OrthancStone STATIC
-  ${ORTHANC_STONE_SOURCES}
-  )
-
-#####################################################################
-## Build all the sample applications
-#####################################################################
-
-include_directories(${ORTHANC_STONE_ROOT})
-
-# files common to all samples
-list(APPEND SAMPLE_APPLICATIONS_SOURCES
-  ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleInteractor.h
-  ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleApplicationBase.h
-  )
-
-if (ENABLE_QT)
-  list(APPEND SAMPLE_APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleQtApplicationRunner.h
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindow.cpp
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindowWithButtons.cpp
-    )
-
-  ORTHANC_QT_WRAP_UI(SAMPLE_APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindow.ui
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindowWithButtons.ui
-    )
-
-  ORTHANC_QT_WRAP_CPP(SAMPLE_APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Applications/Qt/QCairoWidget.h
-    ${ORTHANC_STONE_ROOT}/Applications/Qt/QStoneMainWindow.h
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindow.h
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/Qt/SampleMainWindowWithButtons.h
-    )
-endif()
-
-if (ENABLE_NATIVE)
-  list(APPEND SAMPLE_APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleMainNative.cpp
-    )
-
-elseif (ENABLE_WASM)
-
-  list(APPEND SAMPLE_APPLICATIONS_SOURCES
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleMainWasm.cpp
-    ${STONE_WASM_SOURCES}
-    )
-endif()
-
-
-macro(BuildSingleFileSample Target Header Sample)
-  add_executable(${Target}
-    ${ORTHANC_STONE_ROOT}/Applications/Samples/${Header}
-    ${SAMPLE_APPLICATIONS_SOURCES}
-    )
-  set_target_properties(${Target} PROPERTIES COMPILE_DEFINITIONS ORTHANC_STONE_SAMPLE=${Sample})
-  target_link_libraries(${Target} OrthancStone)
-  
-  if (ENABLE_QT AND (CMAKE_SYSTEM_NAME STREQUAL "Windows"))
-    message("(ENABLE_QT and (CMAKE_SYSTEM_NAME matches \"Windows\")) is true")
-    add_custom_command(
-      TARGET ${Target} POST_BUILD
-      COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Core> $<TARGET_FILE_DIR:${Target}>
-      COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Widgets> $<TARGET_FILE_DIR:${Target}>
-      COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Gui> $<TARGET_FILE_DIR:${Target}>
-    )
-  endif()
-endmacro()
-
-#BuildSingleFileSample(OrthancStoneEmpty EmptyApplication.h 1)
-#BuildSingleFileSample(OrthancStoneTestPattern TestPatternApplication.h 2)
-BuildSingleFileSample(OrthancStoneSingleFrame SingleFrameApplication.h 3)
-#BuildSingleFileSample(OrthancStoneSingleVolume SingleVolumeApplication.h 4)
-#BuildSingleFileSample(OrthancStoneBasicPetCtFusion 5)
-#BuildSingleFileSample(OrthancStoneSynchronizedSeries 6)
-#BuildSingleFileSample(OrthancStoneLayoutPetCtFusion 7)
-BuildSingleFileSample(OrthancStoneSimpleViewerSingleFile SimpleViewerApplicationSingleFile.h 8)  # we keep that one just as a sample before we convert another sample to this pattern
-BuildSingleFileSample(OrthancStoneSingleFrameEditor SingleFrameEditorApplication.h 9)
-
-##### SimpleViewer sample (Qt and WASM only) #######
-
-if (ENABLE_QT OR ENABLE_WASM)
-
-      # GenerateCodeFromFlatBufferSchema("${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/ApplicationCommands.fbs")
-
-      list(APPEND SIMPLE_VIEWER_APPLICATION_SOURCES ${FLATC_AUTOGENERATED_SOURCES})
-      message(STATUS "SIMPLE_VIEWER_APPLICATION_SOURCES = ${SIMPLE_VIEWER_APPLICATION_SOURCES}")
-      message(STATUS "FLATC_AUTOGENERATED_SOURCES = ${FLATC_AUTOGENERATED_SOURCES}")
-
-    if (ENABLE_QT)
-      list(APPEND SIMPLE_VIEWER_APPLICATION_SOURCES
-        ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Qt/SimpleViewerMainWindow.cpp
-        ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Qt/SimpleViewerMainWindow.ui
-        ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Qt/mainQt.cpp
-        )
-
-      ORTHANC_QT_WRAP_UI(SIMPLE_VIEWER_APPLICATION_SOURCES
-        ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Qt/SimpleViewerMainWindow.ui
-        )
-
-      ORTHANC_QT_WRAP_CPP(SIMPLE_VIEWER_APPLICATION_SOURCES
-        ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Qt/SimpleViewerMainWindow.h
-        )
-
-elseif (ENABLE_WASM)
-        list(APPEND SIMPLE_VIEWER_APPLICATION_SOURCES
-            ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Wasm/mainWasm.cpp
-            ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.cpp
-            ${STONE_WASM_SOURCES}
-          )
-    endif()
-
-    add_executable(OrthancStoneSimpleViewer
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/SimpleViewerApplication.cpp
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/ThumbnailInteractor.cpp
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/MainWidgetInteractor.cpp
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/AppStatus.h
-      ${ORTHANC_STONE_ROOT}/Applications/Samples/SimpleViewer/Messages.h
-      ${SIMPLE_VIEWER_APPLICATION_SOURCES}
-      )
-    target_link_libraries(OrthancStoneSimpleViewer OrthancStone)
-
-endif()
-
-#####################################################################
-## Build the unit tests
-#####################################################################
-
-if (ENABLE_NATIVE)
-  add_executable(UnitTests
-    ${GOOGLE_TEST_SOURCES}
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestCommands.cpp
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestExceptions.cpp
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestMessageBroker.cpp
-    ${ORTHANC_STONE_ROOT}/UnitTestsSources/UnitTestsMain.cpp
-    )
-
-  target_link_libraries(UnitTests OrthancStone)
-endif()
-
-#####################################################################
-## Generate the documentation if Doxygen is present
-#####################################################################
-
-find_package(Doxygen)
-if (DOXYGEN_FOUND)
-  configure_file(
-    ${ORTHANC_STONE_ROOT}/Resources/OrthancStone.doxygen
-    ${CMAKE_CURRENT_BINARY_DIR}/OrthancStone.doxygen
-    @ONLY)
-
-  add_custom_target(doc
-    ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/OrthancStone.doxygen
-    COMMENT "Generating documentation with Doxygen" VERBATIM
-    )
-else()
-  message("Doxygen not found. The documentation will not be built.")
-endif()
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/EmptyApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "SampleApplicationBase.h"
-
-#include "../../../Framework/Widgets/EmptyWidget.h"
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class EmptyApplication : public SampleApplicationBase
-    {
-    public:
-      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
-      {
-        boost::program_options::options_description generic("Sample options");
-        generic.add_options()
-          ("red", boost::program_options::value<int>()->default_value(255), "Background color: red channel")
-          ("green", boost::program_options::value<int>()->default_value(0), "Background color: green channel")
-          ("blue", boost::program_options::value<int>()->default_value(0), "Background color: blue channel")
-          ;
-
-        options.add(generic);    
-      }
-
-      virtual void Initialize(IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters)
-      {
-        int red = parameters["red"].as<int>();
-        int green = parameters["green"].as<int>();
-        int blue = parameters["blue"].as<int>();
-
-        context_->SetCentralWidget(new EmptyWidget(red, green, blue));
-      }
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/LayoutPetCtFusionApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,398 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "SampleInteractor.h"
-
-#include "../../../Framework/Layers/ReferenceLineFactory.h"
-#include "../../../Framework/Layers/DicomStructureSetSlicer.h"
-#include "../../../Framework/Widgets/LayoutWidget.h"
-
-#include <Core/Logging.h>
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class LayoutPetCtFusionApplication : 
-      public SampleApplicationBase,
-      public LayeredSceneWidget::ISliceObserver,
-      public WorldSceneWidget::IWorldObserver
-    {
-    private:
-      class Interactor : public SampleInteractor
-      {
-      private:
-        LayoutPetCtFusionApplication& that_;
-
-      public:
-        Interactor(LayoutPetCtFusionApplication& that,
-                   VolumeImage& volume,
-                   VolumeProjection projection, 
-                   bool reverse) :
-          SampleInteractor(volume, projection, reverse),
-          that_(that)
-        {
-        }
-
-        virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
-                                                            const SliceGeometry& slice,
-                                                            const ViewportGeometry& view,
-                                                            MouseButton button,
-                                                            double x,
-                                                            double y,
-                                                            IStatusBar* statusBar)
-        {
-          if (button == MouseButton_Left)
-          {
-            // Center the sibling views over the clicked point
-            Vector p = slice.MapSliceToWorldCoordinates(x, y);
-
-            if (statusBar != NULL)
-            {
-              char buf[64];
-              sprintf(buf, "Click on coordinates (%.02f,%.02f,%.02f) in cm", p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
-              statusBar->SetMessage(buf);
-            }
-
-            that_.interactorAxial_->LookupSliceContainingPoint(*that_.ctAxial_, p);
-            that_.interactorCoronal_->LookupSliceContainingPoint(*that_.ctCoronal_, p);
-            that_.interactorSagittal_->LookupSliceContainingPoint(*that_.ctSagittal_, p);
-          }
-
-          return NULL;
-        }
-
-        virtual void KeyPressed(WorldSceneWidget& widget,
-                                char key,
-                                KeyboardModifiers modifiers,
-                                IStatusBar* statusBar)
-        {
-          if (key == 's')
-          {
-            that_.FitContent();
-          }
-        }
-      };
-
-      bool                 processingEvent_;
-      Interactor*          interactorAxial_;
-      Interactor*          interactorCoronal_;
-      Interactor*          interactorSagittal_;
-      LayeredSceneWidget*  ctAxial_;
-      LayeredSceneWidget*  ctCoronal_;
-      LayeredSceneWidget*  ctSagittal_;
-      LayeredSceneWidget*  petAxial_;
-      LayeredSceneWidget*  petCoronal_;
-      LayeredSceneWidget*  petSagittal_;
-      LayeredSceneWidget*  fusionAxial_;
-      LayeredSceneWidget*  fusionCoronal_;
-      LayeredSceneWidget*  fusionSagittal_;
-
-
-      void FitContent()
-      {
-        petAxial_->FitContent();
-        petCoronal_->FitContent();
-        petSagittal_->FitContent();
-      }
-
-
-      void AddLayer(LayeredSceneWidget& widget,
-                    VolumeImage& volume,
-                    bool isCt)
-      {
-        size_t layer;
-        widget.AddLayer(layer, new VolumeImage::LayerFactory(volume));
-
-        if (isCt)
-        {
-          RenderStyle style; 
-          style.windowing_ = ImageWindowing_Bone;
-          widget.SetLayerStyle(layer, style);
-        }
-        else
-        {
-          RenderStyle style; 
-          style.applyLut_ = true;
-          style.alpha_ = (layer == 0 ? 1.0f : 0.5f);
-          widget.SetLayerStyle(layer, style);
-        }
-      }
-
-
-      void ConnectSiblingLocations(LayeredSceneWidget& axial,
-                                   LayeredSceneWidget& coronal,
-                                   LayeredSceneWidget& sagittal)
-      {
-        ReferenceLineFactory::Configure(axial, coronal);
-        ReferenceLineFactory::Configure(axial, sagittal);
-        ReferenceLineFactory::Configure(coronal, sagittal);
-      }
-
-
-      void SynchronizeView(const WorldSceneWidget& source,
-                           const ViewportGeometry& view,
-                           LayeredSceneWidget& widget1,
-                           LayeredSceneWidget& widget2,
-                           LayeredSceneWidget& widget3)
-      {
-        if (&source == &widget1 ||
-            &source == &widget2 ||
-            &source == &widget3)
-        {
-          if (&source != &widget1)
-          {
-            widget1.SetView(view);
-          }
-
-          if (&source != &widget2)
-          {
-            widget2.SetView(view);
-          }
-
-          if (&source != &widget3)
-          {
-            widget3.SetView(view);
-          }
-        }
-      }
-
-
-      void SynchronizeSlice(const LayeredSceneWidget& source,
-                            const SliceGeometry& slice,
-                            LayeredSceneWidget& widget1,
-                            LayeredSceneWidget& widget2,
-                            LayeredSceneWidget& widget3)
-      {
-        if (&source == &widget1 ||
-            &source == &widget2 ||
-            &source == &widget3)
-        {
-          if (&source != &widget1)
-          {
-            widget1.SetSlice(slice);
-          }
-
-          if (&source != &widget2)
-          {
-            widget2.SetSlice(slice);
-          }
-
-          if (&source != &widget3)
-          {
-            widget3.SetSlice(slice);
-          }
-        }
-      }
-
-
-      LayeredSceneWidget* CreateWidget()
-      {
-        std::unique_ptr<LayeredSceneWidget> widget(new LayeredSceneWidget);
-        widget->Register(dynamic_cast<WorldSceneWidget::IWorldObserver&>(*this));
-        widget->Register(dynamic_cast<LayeredSceneWidget::ISliceObserver&>(*this));
-        return widget.release();
-      }
-
-
-      void CreateLayout(BasicApplicationContext& context)
-      {
-        std::unique_ptr<OrthancStone::LayoutWidget> layout(new OrthancStone::LayoutWidget);
-        layout->SetBackgroundCleared(true);
-        //layout->SetBackgroundColor(255,0,0);
-        layout->SetPadding(5);
-
-        OrthancStone::LayoutWidget& layoutA = dynamic_cast<OrthancStone::LayoutWidget&>
-          (layout->AddWidget(new OrthancStone::LayoutWidget));
-        layoutA.SetPadding(0, 0, 0, 0, 5);
-        layoutA.SetVertical();
-        petAxial_ = &dynamic_cast<LayeredSceneWidget&>(layoutA.AddWidget(CreateWidget()));
-        OrthancStone::LayoutWidget& layoutA2 = dynamic_cast<OrthancStone::LayoutWidget&>
-          (layoutA.AddWidget(new OrthancStone::LayoutWidget));
-        layoutA2.SetPadding(0, 0, 0, 0, 5);
-        petSagittal_ = &dynamic_cast<LayeredSceneWidget&>(layoutA2.AddWidget(CreateWidget()));
-        petCoronal_ = &dynamic_cast<LayeredSceneWidget&>(layoutA2.AddWidget(CreateWidget()));
-
-        OrthancStone::LayoutWidget& layoutB = dynamic_cast<OrthancStone::LayoutWidget&>
-          (layout->AddWidget(new OrthancStone::LayoutWidget));
-        layoutB.SetPadding(0, 0, 0, 0, 5);
-        layoutB.SetVertical();
-        ctAxial_ = &dynamic_cast<LayeredSceneWidget&>(layoutB.AddWidget(CreateWidget()));
-        OrthancStone::LayoutWidget& layoutB2 = dynamic_cast<OrthancStone::LayoutWidget&>
-          (layoutB.AddWidget(new OrthancStone::LayoutWidget));
-        layoutB2.SetPadding(0, 0, 0, 0, 5);
-        ctSagittal_ = &dynamic_cast<LayeredSceneWidget&>(layoutB2.AddWidget(CreateWidget()));
-        ctCoronal_ = &dynamic_cast<LayeredSceneWidget&>(layoutB2.AddWidget(CreateWidget()));
-
-        OrthancStone::LayoutWidget& layoutC = dynamic_cast<OrthancStone::LayoutWidget&>
-          (layout->AddWidget(new OrthancStone::LayoutWidget));
-        layoutC.SetPadding(0, 0, 0, 0, 5);
-        layoutC.SetVertical();
-        fusionAxial_ = &dynamic_cast<LayeredSceneWidget&>(layoutC.AddWidget(CreateWidget()));
-        OrthancStone::LayoutWidget& layoutC2 = dynamic_cast<OrthancStone::LayoutWidget&>
-          (layoutC.AddWidget(new OrthancStone::LayoutWidget));
-        layoutC2.SetPadding(0, 0, 0, 0, 5);
-        fusionSagittal_ = &dynamic_cast<LayeredSceneWidget&>(layoutC2.AddWidget(CreateWidget()));
-        fusionCoronal_ = &dynamic_cast<LayeredSceneWidget&>(layoutC2.AddWidget(CreateWidget()));
-  
-        context.SetCentralWidget(layout.release());
-      }
-
-
-    public:
-      virtual void DeclareCommandLineOptions(boost::program_options::options_description& options)
-      {
-        boost::program_options::options_description generic("Sample options");
-        generic.add_options()
-          ("ct", boost::program_options::value<std::string>(), 
-           "Orthanc ID of the CT series")
-          ("pet", boost::program_options::value<std::string>(), 
-           "Orthanc ID of the PET series")
-          ("rt", boost::program_options::value<std::string>(), 
-           "Orthanc ID of the DICOM RT-STRUCT series (optional)")
-          ("threads", boost::program_options::value<unsigned int>()->default_value(3), 
-           "Number of download threads for the CT series")
-          ;
-
-        options.add(generic);    
-      }
-
-      virtual void Initialize(BasicApplicationContext& context,
-                              IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters)
-      {
-        using namespace OrthancStone;
-
-        processingEvent_ = true;
-
-        if (parameters.count("ct") != 1 ||
-            parameters.count("pet") != 1)
-        {
-          LOG(ERROR) << "The series ID is missing";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-
-        std::string ct = parameters["ct"].as<std::string>();
-        std::string pet = parameters["pet"].as<std::string>();
-        unsigned int threads = parameters["threads"].as<unsigned int>();
-
-        VolumeImage& ctVolume = context.AddSeriesVolume(ct, true /* progressive download */, threads);
-        VolumeImage& petVolume = context.AddSeriesVolume(pet, true /* progressive download */, 1);
-
-        // Take the PET volume as the reference for the slices
-        interactorAxial_ = &dynamic_cast<Interactor&>
-          (context.AddInteractor(new Interactor(*this, petVolume, VolumeProjection_Axial, false)));
-        interactorCoronal_ = &dynamic_cast<Interactor&>
-          (context.AddInteractor(new Interactor(*this, petVolume, VolumeProjection_Coronal, false)));
-        interactorSagittal_ = &dynamic_cast<Interactor&>
-          (context.AddInteractor(new Interactor(*this, petVolume, VolumeProjection_Sagittal, true)));
-
-        CreateLayout(context);
-
-        AddLayer(*ctAxial_, ctVolume, true);
-        AddLayer(*ctCoronal_, ctVolume, true);
-        AddLayer(*ctSagittal_, ctVolume, true);
-
-        AddLayer(*petAxial_, petVolume, false);
-        AddLayer(*petCoronal_, petVolume, false);
-        AddLayer(*petSagittal_, petVolume, false);
-
-        AddLayer(*fusionAxial_, ctVolume, true);
-        AddLayer(*fusionAxial_, petVolume, false);
-        AddLayer(*fusionCoronal_, ctVolume, true);
-        AddLayer(*fusionCoronal_, petVolume, false);
-        AddLayer(*fusionSagittal_, ctVolume, true);
-        AddLayer(*fusionSagittal_, petVolume, false);
-
-        if (parameters.count("rt") == 1)
-        {
-          DicomStructureSet& rtStruct = context.AddStructureSet(parameters["rt"].as<std::string>());
-
-          Vector p = rtStruct.GetStructureCenter(0);
-          interactorAxial_->GetCursor().LookupSliceContainingPoint(p);
-
-          ctAxial_->AddLayer(new DicomStructureSetSlicer(rtStruct));
-          petAxial_->AddLayer(new DicomStructureSetSlicer(rtStruct));
-          fusionAxial_->AddLayer(new DicomStructureSetSlicer(rtStruct));
-        }        
-
-        ConnectSiblingLocations(*ctAxial_, *ctCoronal_, *ctSagittal_); 
-        ConnectSiblingLocations(*petAxial_, *petCoronal_, *petSagittal_); 
-        ConnectSiblingLocations(*fusionAxial_, *fusionCoronal_, *fusionSagittal_); 
-
-        interactorAxial_->AddWidget(*ctAxial_);
-        interactorAxial_->AddWidget(*petAxial_);
-        interactorAxial_->AddWidget(*fusionAxial_);
-        
-        interactorCoronal_->AddWidget(*ctCoronal_);
-        interactorCoronal_->AddWidget(*petCoronal_);
-        interactorCoronal_->AddWidget(*fusionCoronal_);
-        
-        interactorSagittal_->AddWidget(*ctSagittal_);
-        interactorSagittal_->AddWidget(*petSagittal_);
-        interactorSagittal_->AddWidget(*fusionSagittal_);
-
-        processingEvent_ = false;
-
-        statusBar.SetMessage("Use the key \"t\" to toggle the fullscreen mode");
-        statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
-      }
-
-      virtual void NotifySizeChange(const WorldSceneWidget& source,
-                                    ViewportGeometry& view)
-      {
-        view.FitContent();
-      }
-
-      virtual void NotifyViewChange(const WorldSceneWidget& source,
-                                    const ViewportGeometry& view)
-      {
-        if (!processingEvent_)  // Avoid reentrant calls
-        {
-          processingEvent_ = true;
-
-          SynchronizeView(source, view, *ctAxial_, *petAxial_, *fusionAxial_);
-          SynchronizeView(source, view, *ctCoronal_, *petCoronal_, *fusionCoronal_);
-          SynchronizeView(source, view, *ctSagittal_, *petSagittal_, *fusionSagittal_);
-          
-          processingEvent_ = false;
-        }
-      }
-
-      virtual void NotifySliceContentChange(const LayeredSceneWidget& source,
-                                     const SliceGeometry& slice)
-      {
-        if (!processingEvent_)  // Avoid reentrant calls
-        {
-          processingEvent_ = true;
-
-          SynchronizeSlice(source, slice, *ctAxial_, *petAxial_, *fusionAxial_);
-          SynchronizeSlice(source, slice, *ctCoronal_, *petCoronal_, *fusionCoronal_);
-          SynchronizeSlice(source, slice, *ctSagittal_, *petSagittal_, *fusionSagittal_);
-          
-          processingEvent_ = false;
-        }
-      }
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "SampleMainWindow.h"
-
-/**
- * Don't use "ui_MainWindow.h" instead of <ui_MainWindow.h> below, as
- * this makes CMake unable to detect when the UI file changes.
- **/
-#include <ui_SampleMainWindow.h>
-#include "../../../Applications/Samples/SampleApplicationBase.h"
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-
-    SampleMainWindow::SampleMainWindow(
-      OrthancStone::NativeStoneApplicationContext& context,
-      OrthancStone::Samples::SampleSingleCanvasApplicationBase& stoneSampleApplication,
-      QWidget *parent) :
-      QStoneMainWindow(context, parent),
-      ui_(new Ui::SampleMainWindow),
-      stoneSampleApplication_(stoneSampleApplication)
-    {
-      ui_->setupUi(this);
-      SetCentralStoneWidget(*ui_->cairoCentralWidget);
-    }
-
-    SampleMainWindow::~SampleMainWindow()
-    {
-      delete ui_;
-    }
-
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include "../../../Qt/QCairoWidget.h"
-#include "../../../Qt/QStoneMainWindow.h"
-
-namespace Ui 
-{
-  class SampleMainWindow;
-}
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-
-    class SampleSingleCanvasApplicationBase;
-
-    class SampleMainWindow : public QStoneMainWindow
-    {
-      Q_OBJECT
-
-    private:
-      Ui::SampleMainWindow*   ui_;
-      SampleSingleCanvasApplicationBase&  stoneSampleApplication_;
-
-    public:
-      explicit SampleMainWindow(OrthancStone::NativeStoneApplicationContext& context, SampleSingleCanvasApplicationBase& stoneSampleApplication, QWidget *parent = 0);
-      ~SampleMainWindow();
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindow.ui	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>SampleMainWindow</class>
- <widget class="QMainWindow" name="SampleMainWindow">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>903</width>
-    <height>634</height>
-   </rect>
-  </property>
-  <property name="minimumSize">
-   <size>
-    <width>500</width>
-    <height>300</height>
-   </size>
-  </property>
-  <property name="baseSize">
-   <size>
-    <width>500</width>
-    <height>300</height>
-   </size>
-  </property>
-  <property name="windowTitle">
-   <string>Stone of Orthanc</string>
-  </property>
-  <property name="layoutDirection">
-   <enum>Qt::LeftToRight</enum>
-  </property>
-  <widget class="QWidget" name="centralwidget">
-   <property name="sizePolicy">
-    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-     <horstretch>0</horstretch>
-     <verstretch>0</verstretch>
-    </sizepolicy>
-   </property>
-   <property name="layoutDirection">
-    <enum>Qt::LeftToRight</enum>
-   </property>
-   <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0">
-    <property name="sizeConstraint">
-     <enum>QLayout::SetDefaultConstraint</enum>
-    </property>
-    <item>
-     <widget class="QCairoWidget" name="cairoCentralWidget">
-      <property name="minimumSize">
-       <size>
-        <width>0</width>
-        <height>500</height>
-       </size>
-      </property>
-     </widget>
-    </item>
-   </layout>
-  </widget>
-  <widget class="QMenuBar" name="menubar">
-   <property name="geometry">
-    <rect>
-     <x>0</x>
-     <y>0</y>
-     <width>903</width>
-     <height>22</height>
-    </rect>
-   </property>
-   <widget class="QMenu" name="menuTest">
-    <property name="title">
-     <string>Test</string>
-    </property>
-   </widget>
-   <addaction name="menuTest"/>
-  </widget>
-  <widget class="QStatusBar" name="statusbar"/>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>QCairoWidget</class>
-   <extends>QGraphicsView</extends>
-   <header location="global">QCairoWidget.h</header>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "SampleMainWindow.h"
-
-/**
- * Don't use "ui_MainWindow.h" instead of <ui_MainWindow.h> below, as
- * this makes CMake unable to detect when the UI file changes.
- **/
-#include <ui_SampleMainWindowWithButtons.h>
-#include "../../../Applications/Samples/SampleApplicationBase.h"
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-
-    SampleMainWindowWithButtons::SampleMainWindowWithButtons(
-      OrthancStone::NativeStoneApplicationContext& context,
-      OrthancStone::Samples::SampleSingleCanvasWithButtonsApplicationBase& stoneSampleApplication,
-      QWidget *parent) :
-      QStoneMainWindow(context, parent),
-      ui_(new Ui::SampleMainWindowWithButtons),
-      stoneSampleApplication_(stoneSampleApplication)
-    {
-      ui_->setupUi(this);
-      SetCentralStoneWidget(*ui_->cairoCentralWidget);
-
-#if QT_VERSION >= 0x050000
-      connect(ui_->toolButton1, &QToolButton::clicked, this, &SampleMainWindowWithButtons::tool1Clicked);
-      connect(ui_->toolButton2, &QToolButton::clicked, this, &SampleMainWindowWithButtons::tool2Clicked);
-      connect(ui_->pushButton1, &QPushButton::clicked, this, &SampleMainWindowWithButtons::pushButton1Clicked);
-      connect(ui_->pushButton1, &QPushButton::clicked, this, &SampleMainWindowWithButtons::pushButton2Clicked);
-#else
-      connect(ui_->toolButton1, SIGNAL(clicked()), this, SLOT(tool1Clicked()));
-      connect(ui_->toolButton2, SIGNAL(clicked()), this, SLOT(tool2Clicked()));
-      connect(ui_->pushButton1, SIGNAL(clicked()), this, SLOT(pushButton1Clicked()));
-      connect(ui_->pushButton1, SIGNAL(clicked()), this, SLOT(pushButton2Clicked()));
-#endif
-
-      std::string pushButton1Name;
-      std::string pushButton2Name;
-      std::string tool1Name;
-      std::string tool2Name;
-      stoneSampleApplication_.GetButtonNames(pushButton1Name, pushButton2Name, tool1Name, tool2Name);
-
-      ui_->toolButton1->setText(QString::fromStdString(tool1Name));
-      ui_->toolButton2->setText(QString::fromStdString(tool2Name));
-      ui_->pushButton1->setText(QString::fromStdString(pushButton1Name));
-      ui_->pushButton2->setText(QString::fromStdString(pushButton2Name));
-    }
-
-    SampleMainWindowWithButtons::~SampleMainWindowWithButtons()
-    {
-      delete ui_;
-    }
-
-    void SampleMainWindowWithButtons::tool1Clicked()
-    {
-      stoneSampleApplication_.OnTool1Clicked();
-    }
-
-    void SampleMainWindowWithButtons::tool2Clicked()
-    {
-      stoneSampleApplication_.OnTool2Clicked();
-    }
-
-    void SampleMainWindowWithButtons::pushButton1Clicked()
-    {
-      stoneSampleApplication_.OnPushButton1Clicked();
-    }
-
-    void SampleMainWindowWithButtons::pushButton2Clicked()
-    {
-      stoneSampleApplication_.OnPushButton2Clicked();
-    }
-
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include "../../../Qt/QCairoWidget.h"
-#include "../../../Qt/QStoneMainWindow.h"
-
-namespace Ui 
-{
-  class SampleMainWindowWithButtons;
-}
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-
-    class SampleSingleCanvasWithButtonsApplicationBase;
-
-    class SampleMainWindowWithButtons : public QStoneMainWindow
-    {
-      Q_OBJECT
-
-    private:
-      Ui::SampleMainWindowWithButtons*   ui_;
-      SampleSingleCanvasWithButtonsApplicationBase&  stoneSampleApplication_;
-
-    public:
-      explicit SampleMainWindowWithButtons(OrthancStone::NativeStoneApplicationContext& context, SampleSingleCanvasWithButtonsApplicationBase& stoneSampleApplication, QWidget *parent = 0);
-      ~SampleMainWindowWithButtons();
-
-    private slots:
-      void tool1Clicked();
-      void tool2Clicked();
-      void pushButton1Clicked();
-      void pushButton2Clicked();
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleMainWindowWithButtons.ui	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>SampleMainWindowWithButtons</class>
- <widget class="QMainWindow" name="SampleMainWindowWithButtons">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>903</width>
-    <height>634</height>
-   </rect>
-  </property>
-  <property name="minimumSize">
-   <size>
-    <width>500</width>
-    <height>300</height>
-   </size>
-  </property>
-  <property name="baseSize">
-   <size>
-    <width>500</width>
-    <height>300</height>
-   </size>
-  </property>
-  <property name="windowTitle">
-   <string>Stone of Orthanc</string>
-  </property>
-  <property name="layoutDirection">
-   <enum>Qt::LeftToRight</enum>
-  </property>
-  <widget class="QWidget" name="centralwidget">
-   <property name="sizePolicy">
-    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-     <horstretch>0</horstretch>
-     <verstretch>0</verstretch>
-    </sizepolicy>
-   </property>
-   <property name="layoutDirection">
-    <enum>Qt::LeftToRight</enum>
-   </property>
-   <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0">
-    <property name="sizeConstraint">
-     <enum>QLayout::SetDefaultConstraint</enum>
-    </property>
-    <item>
-     <widget class="QCairoWidget" name="cairoCentralWidget">
-      <property name="minimumSize">
-       <size>
-        <width>0</width>
-        <height>500</height>
-       </size>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <widget class="QGroupBox" name="horizontalGroupBox">
-      <property name="minimumSize">
-       <size>
-        <width>0</width>
-        <height>100</height>
-       </size>
-      </property>
-      <property name="maximumSize">
-       <size>
-        <width>16777215</width>
-        <height>100</height>
-       </size>
-      </property>
-      <layout class="QHBoxLayout" name="horizontalLayout">
-       <item>
-        <widget class="QToolButton" name="toolButton1">
-         <property name="text">
-          <string>tool1</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QToolButton" name="toolButton2">
-         <property name="text">
-          <string>tool2</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QPushButton" name="pushButton1">
-         <property name="text">
-          <string>action1</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QPushButton" name="pushButton2">
-         <property name="text">
-          <string>action2</string>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </widget>
-    </item>
-   </layout>
-  </widget>
-  <widget class="QMenuBar" name="menubar">
-   <property name="geometry">
-    <rect>
-     <x>0</x>
-     <y>0</y>
-     <width>903</width>
-     <height>22</height>
-    </rect>
-   </property>
-   <widget class="QMenu" name="menuTest">
-    <property name="title">
-     <string>Test</string>
-    </property>
-   </widget>
-   <addaction name="menuTest"/>
-  </widget>
-  <widget class="QStatusBar" name="statusbar"/>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>QCairoWidget</class>
-   <extends>QGraphicsView</extends>
-   <header location="global">QCairoWidget.h</header>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Qt/SampleQtApplicationRunner.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../../Qt/QtStoneApplicationRunner.h"
-
-#if ORTHANC_ENABLE_QT != 1
-#error this file shall be included only with the ORTHANC_ENABLE_QT set to 1
-#endif
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class SampleQtApplicationRunner : public OrthancStone::QtStoneApplicationRunner
-    {
-    protected:
-      virtual void InitializeMainWindow(OrthancStone::NativeStoneApplicationContext& context)
-      {
-        window_.reset(application_.CreateQtMainWindow());
-      }
-    public:
-      SampleQtApplicationRunner(MessageBroker& broker,
-                                SampleApplicationBase& application)
-        : OrthancStone::QtStoneApplicationRunner(broker, application)
-      {
-      }
-
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleApplicationBase.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../../Applications/IStoneApplication.h"
-#include "../../../Framework/Deprecated/Widgets/WorldSceneWidget.h"
-
-#if ORTHANC_ENABLE_WASM==1
-#include "../../../Platforms/Wasm/WasmPlatformApplicationAdapter.h"
-#include "../../../Platforms/Wasm/Defaults.h"
-#endif
-
-#if ORTHANC_ENABLE_QT==1
-#include "Qt/SampleMainWindow.h"
-#include "Qt/SampleMainWindowWithButtons.h"
-#endif
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class SampleApplicationBase : public IStoneApplication
-    {
-    private:
-      boost::shared_ptr<Deprecated::IWidget>  mainWidget_;
-
-    public:
-      virtual void Initialize(StoneApplicationContext* context,
-                              Deprecated::IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters) ORTHANC_OVERRIDE
-      {
-      }
-
-      virtual std::string GetTitle() const ORTHANC_OVERRIDE
-      {
-        return "Stone of Orthanc - Sample";
-      }
-
-      /**
-       * In the basic samples, the commands are handled by the platform adapter and NOT
-       * by the application handler
-      */
-      virtual void HandleSerializedMessage(const char* data) ORTHANC_OVERRIDE {};
-
-
-      virtual void Finalize() ORTHANC_OVERRIDE {}
-
-      virtual void SetCentralWidget(boost::shared_ptr<Deprecated::IWidget> widget) ORTHANC_OVERRIDE
-      {
-        mainWidget_ = widget;
-      }
-
-      virtual boost::shared_ptr<Deprecated::IWidget> GetCentralWidget() ORTHANC_OVERRIDE
-      {
-        return mainWidget_;
-      }
-
-#if ORTHANC_ENABLE_WASM==1
-      // default implementations for a single canvas named "canvas" in the HTML and an emtpy WasmApplicationAdapter
-
-      virtual void InitializeWasm() ORTHANC_OVERRIDE
-      {
-        AttachWidgetToWasmViewport("canvas", mainWidget_);
-      }
-
-      virtual WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(MessageBroker& broker)
-      {
-        return new WasmPlatformApplicationAdapter(broker, *this);
-      }
-#endif
-
-    };
-
-    // this application actually works in Qt and WASM
-    class SampleSingleCanvasWithButtonsApplicationBase : public SampleApplicationBase
-    {
-public:
-      virtual void OnPushButton1Clicked() {}
-      virtual void OnPushButton2Clicked() {}
-      virtual void OnTool1Clicked() {}
-      virtual void OnTool2Clicked() {}
-
-      virtual void GetButtonNames(std::string& pushButton1,
-                                  std::string& pushButton2,
-                                  std::string& tool1,
-                                  std::string& tool2
-                                  ) {
-        pushButton1 = "action1";
-        pushButton2 = "action2";
-        tool1 = "tool1";
-        tool2 = "tool2";
-      }
-
-#if ORTHANC_ENABLE_QT==1
-      virtual QStoneMainWindow* CreateQtMainWindow() {
-        return new SampleMainWindowWithButtons(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
-      }
-#endif
-
-    };
-
-    // this application actually works in SDL and WASM
-    class SampleSingleCanvasApplicationBase : public SampleApplicationBase
-    {
-public:
-
-#if ORTHANC_ENABLE_QT==1
-      virtual QStoneMainWindow* CreateQtMainWindow() {
-        return new SampleMainWindow(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
-      }
-#endif
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleInteractor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "SampleApplicationBase.h"
-
-#include "../../../Framework/Widgets/LayeredSceneWidget.h"
-#include "../../../Framework/Widgets/IWorldSceneInteractor.h"
-#include "../../../Framework/Toolbox/ParallelSlicesCursor.h"
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    /**
-     * This is a basic mouse interactor for sample applications. It
-     * contains a set of parallel slices in the 3D space. The mouse
-     * wheel events make the widget change the slice that is
-     * displayed.
-     **/
-    class SampleInteractor : public IWorldSceneInteractor
-    {
-    private:
-      ParallelSlicesCursor   cursor_;
-
-    public:
-      SampleInteractor(VolumeImage& volume,
-                       VolumeProjection projection, 
-                       bool reverse)
-      {
-        std::unique_ptr<ParallelSlices> slices(volume.GetGeometry(projection, reverse));
-        cursor_.SetGeometry(*slices);
-      }
-
-      SampleInteractor(ISeriesLoader& series, 
-                       bool reverse)
-      {
-        if (reverse)
-        {
-          std::unique_ptr<ParallelSlices> slices(series.GetGeometry().Reverse());
-          cursor_.SetGeometry(*slices);
-        }
-        else
-        {
-          cursor_.SetGeometry(series.GetGeometry());
-        }
-      }
-
-      SampleInteractor(const ParallelSlices& slices)
-      {
-        cursor_.SetGeometry(slices);
-      }
-
-      ParallelSlicesCursor& GetCursor()
-      {
-        return cursor_;
-      }
-
-      void AddWidget(LayeredSceneWidget& widget)
-      {
-        widget.SetInteractor(*this);
-        widget.SetSlice(cursor_.GetCurrentSlice());
-      }
-
-      virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
-                                                          const ViewportGeometry& view,
-                                                          MouseButton button,
-                                                          double x,
-                                                          double y,
-                                                          IStatusBar* statusBar)
-      {
-        return NULL;
-      }
-
-      virtual void MouseOver(CairoContext& context,
-                             WorldSceneWidget& widget,
-                             const ViewportGeometry& view,
-                             double x,
-                             double y,
-                             IStatusBar* statusBar)
-      {
-      }
-
-      virtual void MouseWheel(WorldSceneWidget& widget,
-                              MouseWheelDirection direction,
-                              KeyboardModifiers modifiers,
-                              IStatusBar* statusBar)
-      {
-        if (cursor_.ApplyWheelEvent(direction, modifiers))
-        {
-          dynamic_cast<LayeredSceneWidget&>(widget).SetSlice(cursor_.GetCurrentSlice());
-        }
-      }
-
-      virtual void KeyPressed(WorldSceneWidget& widget,
-                              char key,
-                              KeyboardModifiers modifiers,
-                              IStatusBar* statusBar)
-      {
-      }
-
-      void LookupSliceContainingPoint(LayeredSceneWidget& widget,
-                                      const Vector& p)
-      {
-        if (cursor_.LookupSliceContainingPoint(p))
-        {
-          widget.SetSlice(cursor_.GetCurrentSlice());
-        }
-      }
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleList.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-// The macro "ORTHANC_STONE_SAMPLE" must be set by the CMake script
-
-#if ORTHANC_STONE_SAMPLE == 1
-#include "EmptyApplication.h"
-typedef OrthancStone::Samples::EmptyApplication SampleApplication;
-
-#elif ORTHANC_STONE_SAMPLE == 2
-#include "TestPatternApplication.h"
-typedef OrthancStone::Samples::TestPatternApplication SampleApplication;
-
-#elif ORTHANC_STONE_SAMPLE == 3
-#include "SingleFrameApplication.h"
-typedef OrthancStone::Samples::SingleFrameApplication SampleApplication;
-
-#elif ORTHANC_STONE_SAMPLE == 4
-#include "SingleVolumeApplication.h"
-typedef OrthancStone::Samples::SingleVolumeApplication SampleApplication;
-
-#elif ORTHANC_STONE_SAMPLE == 5
-#include "BasicPetCtFusionApplication.h"
-typedef OrthancStone::Samples::BasicPetCtFusionApplication SampleApplication;
-
-#elif ORTHANC_STONE_SAMPLE == 6
-#include "SynchronizedSeriesApplication.h"
-typedef OrthancStone::Samples::SynchronizedSeriesApplication SampleApplication;
-
-#elif ORTHANC_STONE_SAMPLE == 7
-#include "LayoutPetCtFusionApplication.h"
-typedef OrthancStone::Samples::LayoutPetCtFusionApplication SampleApplication;
-
-#elif ORTHANC_STONE_SAMPLE == 8
-#include "SimpleViewerApplicationSingleFile.h"
-typedef OrthancStone::Samples::SimpleViewerApplication SampleApplication;
-
-#elif ORTHANC_STONE_SAMPLE == 9
-#include "SingleFrameEditorApplication.h"
-typedef OrthancStone::Samples::SingleFrameEditorApplication SampleApplication;
-
-#else
-#error Please set the ORTHANC_STONE_SAMPLE macro
-#endif
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleMainNative.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SampleList.h"
-#if ORTHANC_ENABLE_SDL==1
-#include "../../Sdl/SdlStoneApplicationRunner.h"
-#endif
-#if ORTHANC_ENABLE_QT==1
-#include "Qt/SampleQtApplicationRunner.h"
-#endif
-
-int main(int argc, char* argv[]) 
-{
-  boost::shared_ptr<SampleApplication> sampleStoneApplication(new SampleApplication);
-
-#if ORTHANC_ENABLE_SDL==1
-  OrthancStone::SdlStoneApplicationRunner sdlApplicationRunner(sampleStoneApplication);
-  return sdlApplicationRunner.Execute(argc, argv);
-#endif
-  
-#if ORTHANC_ENABLE_QT==1
-  OrthancStone::Samples::SampleQtApplicationRunner qtAppRunner(sampleStoneApplication);
-  return qtAppRunner.Execute(argc, argv);
-#endif
-}
-
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SampleMainWasm.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "Platforms/Wasm/WasmWebService.h"
-#include "Platforms/Wasm/WasmViewport.h"
-
-#include <emscripten/emscripten.h>
-
-#include "SampleList.h"
-
-
-OrthancStone::IStoneApplication* CreateUserApplication(OrthancStone::MessageBroker& broker) 
-{
-  return new SampleApplication(broker);
-}
-
-OrthancStone::WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(OrthancStone::MessageBroker& broker, OrthancStone::IStoneApplication* application)
-{
-  return dynamic_cast<SampleApplication*>(application)->CreateWasmApplicationAdapter(broker);
-}
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Samples-status.md	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-Executable versions
-================
-Generic options
-----------------------
-```
-("help", "Display this help and exit")
-("verbose", "Be verbose in logs")
-("orthanc", boost::program_options::value<std::string>()
-  ->default_value("http://localhost:8042/"),
-  "URL to the Orthanc server")
-("username", "Username for the Orthanc server")
-("password", "Password for the Orthanc server")
-("https-verify", boost::program_options::value<bool>()
-  ->default_value(true), "Check HTTPS certificates")
-```
-OrthancStoneSimpleViewer
--------------------------------------
-- Options:
-    ```
-    - "studyId", std::string, "Orthanc ID of the study"
-    ```
-- study loading works OK
-- Invert does not work:
-```
-void SimpleViewerApplication::ExecuteAction(SimpleViewerApplication::Actions action)
-  {
-    // TODO
-  }
-```
-
-OrthancStoneSimpleViewerSingleFile
--------------------------------------
-- Options:
-    ```
-    - "studyId", std::string, "Orthanc ID of the study"
-    ```
-
-Study loading works.
-
-The `line` and `circle` buttons work and call this:
-```
-virtual void OnTool1Clicked()
-{
-  currentTool_ = Tools_LineMeasure;
-}
-
-virtual void OnTool2Clicked()
-{
-  currentTool_ = Tools_CircleMeasure;
-}
-```
-The `action1` and `action2` buttons are not connected
-
-The following is displayed in the console at launch time:
-```
-W0313 12:20:12.790449 NativeStoneApplicationRunner.cpp:55] Use the key "s" to reinitialize the layout
-W0313 12:20:12.790449 NativeStoneApplicationRunner.cpp:55] Use the key "n" to go to next image in the main viewport
-```
-However, when looking at `MainWidgetInteractor::KeyPressed` (`SimpleViewerApplicationSingleFile.h:169`), only the following is processed:
-- 's': reset layout
-- 'l': select line tool
-- 'c': select circle tool
-
-OrthancStoneSingleFrame
--------------------------------------
-```
-generic.add_options()
-("instance", boost::program_options::value<std::string>(), 
-"Orthanc ID of the instance")
-("frame", boost::program_options::value<unsigned int>()
-  ->default_value(0),
-"Number of the frame, for multi-frame DICOM instances")
-("smooth", boost::program_options::value<bool>()
-  ->default_value(true), 
-"Enable bilinear interpolation to smooth the image");
-```
-only key handled in `KeyPressed` is `s` to call `widget.FitContent()`
-
-
-OrthancStoneSingleFrameEditor
--------------------------------------
-```
-generic.add_options()
-("instance", boost::program_options::value<std::string>(),
-"Orthanc ID of the instance")
-("frame", boost::program_options::value<unsigned int>()
-  ->default_value(0),
-"Number of the frame, for multi-frame DICOM instances");
-```
-Available commands in `KeyPressed` (`SingleFrameEditorApplication.h:280`): 
-- 'a' widget.FitContent()
-- 'c' Crop tool
-- 'm' Mask tool
-- 'd' dump to json and diplay result (?)
-- 'e' export current view to Dicom with dummy tags (?)
-- 'i' wdiget.SwitchInvert
-- 't' Move tool
-- 'n' switch between nearest and bilinear interpolation
-- 'r' Rotate tool
-- 's' Resize tool
-- 'w' Windowing tool
-- 'ctrl+y' redo
-- 'ctrl+z' undo
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/AppStatus.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <string>
-
-
-namespace SimpleViewer
-{
-  struct AppStatus
-  {
-    std::string patientId;
-    std::string studyDescription;
-    std::string currentInstanceIdInMainViewport;
-    // note: if you add members here, update the serialization code below and deserialization in simple-viewer.ts -> onAppStatusUpdated()
-
-
-    AppStatus()
-    {
-    }
-
-    void ToJson(Json::Value &output) const
-    {
-      output["patientId"] = patientId;
-      output["studyDescription"] = studyDescription;
-      output["currentInstanceIdInMainViewport"] = currentInstanceIdInMainViewport;
-    }
-  };
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "MainWidgetInteractor.h"
-
-#include "SimpleViewerApplication.h"
-
-namespace SimpleViewer {
-
-  Deprecated::IWorldSceneMouseTracker* MainWidgetInteractor::CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
-                                                                    const Deprecated::ViewportGeometry& view,
-                                                                    MouseButton button,
-                                                                    KeyboardModifiers modifiers,
-                                                                    int viewportX,
-                                                                    int viewportY,
-                                                                    double x,
-                                                                    double y,
-                                                                    Deprecated::IStatusBar* statusBar,
-                                                                    const std::vector<Deprecated::Touch>& displayTouches)
-  {
-    if (button == MouseButton_Left)
-    {
-      if (application_.GetCurrentTool() == Tool_LineMeasure)
-      {
-        return new Deprecated::LineMeasureTracker(statusBar, dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice(),
-                                      x, y, 255, 0, 0, application_.GetFont());
-      }
-      else if (application_.GetCurrentTool() == Tool_CircleMeasure)
-      {
-        return new Deprecated::CircleMeasureTracker(statusBar, dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice(),
-                                        x, y, 255, 0, 0, application_.GetFont());
-      }
-      else if (application_.GetCurrentTool() == Tool_Crop)
-      {
-        // TODO
-      }
-      else if (application_.GetCurrentTool() == Tool_Windowing)
-      {
-        // TODO
-      }
-      else if (application_.GetCurrentTool() == Tool_Zoom)
-      {
-        // TODO
-      }
-      else if (application_.GetCurrentTool() == Tool_Pan)
-      {
-        // TODO
-      }
-    }
-    return NULL;
-  }
-
-  void MainWidgetInteractor::MouseOver(CairoContext& context,
-                                       Deprecated::WorldSceneWidget& widget,
-                                       const Deprecated::ViewportGeometry& view,
-                                       double x,
-                                       double y,
-                                       Deprecated::IStatusBar* statusBar)
-  {
-    if (statusBar != NULL)
-    {
-      Vector p = dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice().MapSliceToWorldCoordinates(x, y);
-
-      char buf[64];
-      sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)",
-              p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
-      statusBar->SetMessage(buf);
-    }
-  }
-
-  void MainWidgetInteractor::MouseWheel(Deprecated::WorldSceneWidget& widget,
-                                        MouseWheelDirection direction,
-                                        KeyboardModifiers modifiers,
-                                        Deprecated::IStatusBar* statusBar)
-  {
-  }
-
-  void MainWidgetInteractor::KeyPressed(Deprecated::WorldSceneWidget& widget,
-                                        KeyboardKeys key,
-                                        char keyChar,
-                                        KeyboardModifiers modifiers,
-                                        Deprecated::IStatusBar* statusBar)
-  {
-    switch (keyChar)
-    {
-    case 's':
-      widget.FitContent();
-      break;
-
-    default:
-      break;
-    }
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/MainWidgetInteractor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include "../../../../Framework/Deprecated/Widgets/IWorldSceneInteractor.h"
-
-using namespace OrthancStone;
-
-namespace SimpleViewer {
-
-  class SimpleViewerApplication;
-
-  class MainWidgetInteractor : public Deprecated::IWorldSceneInteractor
-  {
-  private:
-    SimpleViewerApplication&  application_;
-
-  public:
-    MainWidgetInteractor(SimpleViewerApplication&  application) :
-      application_(application)
-    {
-    }
-
-    /**
-        WorldSceneWidget: 
-    */
-    virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
-                                                                    const Deprecated::ViewportGeometry& view,
-                                                                    MouseButton button,
-                                                                    KeyboardModifiers modifiers,
-                                                                    int viewportX,
-                                                                    int viewportY,
-                                                                    double x,
-                                                                    double y,
-                                                                    Deprecated::IStatusBar* statusBar,
-                                                                    const std::vector<Deprecated::Touch>& displayTouches);
-
-    virtual void MouseOver(CairoContext& context,
-                           Deprecated::WorldSceneWidget& widget,
-                           const Deprecated::ViewportGeometry& view,
-                           double x,
-                           double y,
-                           Deprecated::IStatusBar* statusBar);
-
-    virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
-                            MouseWheelDirection direction,
-                            KeyboardModifiers modifiers,
-                            Deprecated::IStatusBar* statusBar);
-
-    virtual void KeyPressed(Deprecated::WorldSceneWidget& widget,
-                            KeyboardKeys key,
-                            char keyChar,
-                            KeyboardModifiers modifiers,
-                            Deprecated::IStatusBar* statusBar);
-  };
-
-
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "SimpleViewerMainWindow.h"
-
-/**
- * Don't use "ui_MainWindow.h" instead of <ui_MainWindow.h> below, as
- * this makes CMake unable to detect when the UI file changes.
- **/
-#include <ui_SimpleViewerMainWindow.h>
-#include "../../SimpleViewerApplication.h"
-
-
-namespace SimpleViewer
-{
-  template<typename T, typename U>
-  bool ExecuteCommand(U* handler, const T& command)
-  {
-    std::string serializedCommand = StoneSerialize(command);
-    StoneDispatchToHandler(serializedCommand, handler);
-  }
-
-  SimpleViewerMainWindow::SimpleViewerMainWindow(
-    OrthancStone::NativeStoneApplicationContext& context,
-    SimpleViewerApplication& stoneApplication,
-    QWidget *parent) :
-    QStoneMainWindow(context, parent),
-    ui_(new Ui::SimpleViewerMainWindow),
-    stoneApplication_(stoneApplication)
-  {
-    ui_->setupUi(this);
-    SetCentralStoneWidget(*ui_->cairoCentralWidget);
-
-#if QT_VERSION >= 0x050000
-    connect(ui_->toolButtonCrop, &QToolButton::clicked, this, &SimpleViewerMainWindow::cropClicked);
-    connect(ui_->pushButtonUndoCrop, &QToolButton::clicked, this, &SimpleViewerMainWindow::undoCropClicked);
-    connect(ui_->toolButtonLine, &QToolButton::clicked, this, &SimpleViewerMainWindow::lineClicked);
-    connect(ui_->toolButtonCircle, &QToolButton::clicked, this, &SimpleViewerMainWindow::circleClicked);
-    connect(ui_->toolButtonWindowing, &QToolButton::clicked, this, &SimpleViewerMainWindow::windowingClicked);
-    connect(ui_->pushButtonRotate, &QPushButton::clicked, this, &SimpleViewerMainWindow::rotateClicked);
-    connect(ui_->pushButtonInvert, &QPushButton::clicked, this, &SimpleViewerMainWindow::invertClicked);
-#else
-    connect(ui_->toolButtonCrop, SIGNAL(clicked()), this, SLOT(cropClicked()));
-    connect(ui_->toolButtonLine, SIGNAL(clicked()), this, SLOT(lineClicked()));
-    connect(ui_->toolButtonCircle, SIGNAL(clicked()), this, SLOT(circleClicked()));
-    connect(ui_->toolButtonWindowing, SIGNAL(clicked()), this, SLOT(windowingClicked()));
-    connect(ui_->pushButtonUndoCrop, SIGNAL(clicked()), this, SLOT(undoCropClicked()));
-    connect(ui_->pushButtonRotate, SIGNAL(clicked()), this, SLOT(rotateClicked()));
-    connect(ui_->pushButtonInvert, SIGNAL(clicked()), this, SLOT(invertClicked()));
-#endif
-  }
-
-  SimpleViewerMainWindow::~SimpleViewerMainWindow()
-  {
-    delete ui_;
-  }
-
-  void SimpleViewerMainWindow::cropClicked()
-  {
-    stoneApplication_.ExecuteCommand(SelectTool(Tool_Crop));
-  }
-
-  void SimpleViewerMainWindow::undoCropClicked()
-  {
-    stoneApplication_.ExecuteCommand(Action(ActionType_UndoCrop));
-  }
-
-  void SimpleViewerMainWindow::lineClicked()
-  {
-    stoneApplication_.ExecuteCommand(SelectTool(Tool_LineMeasure));
-  }
-
-  void SimpleViewerMainWindow::circleClicked()
-  {
-    stoneApplication_.ExecuteCommand(SelectTool(Tool_CircleMeasure));
-  }
-
-  void SimpleViewerMainWindow::windowingClicked()
-  {
-    stoneApplication_.ExecuteCommand(SelectTool(Tool_Windowing));
-  }
-
-  void SimpleViewerMainWindow::rotateClicked()
-  {
-    stoneApplication_.ExecuteCommand(Action(ActionType_Rotate));
-  }
-
-  void SimpleViewerMainWindow::invertClicked()
-  {
-    stoneApplication_.ExecuteCommand(Action(ActionType_Invert));
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-#pragma once
-
-#include <Applications/Qt/QCairoWidget.h>
-#include <Applications/Qt/QStoneMainWindow.h>
-
-namespace Ui 
-{
-  class SimpleViewerMainWindow;
-}
-
-using namespace OrthancStone;
-
-namespace SimpleViewer
-{
-  class SimpleViewerApplication;
-
-  class SimpleViewerMainWindow : public QStoneMainWindow
-  {
-    Q_OBJECT
-
-  private:
-    Ui::SimpleViewerMainWindow*   ui_;
-    SimpleViewerApplication&      stoneApplication_;
-
-  public:
-    explicit SimpleViewerMainWindow(OrthancStone::NativeStoneApplicationContext& context, SimpleViewerApplication& stoneApplication, QWidget *parent = 0);
-    ~SimpleViewerMainWindow();
-
-  private slots:
-    void cropClicked();
-    void undoCropClicked();
-    void rotateClicked();
-    void windowingClicked();
-    void lineClicked();
-    void circleClicked();
-    void invertClicked();
-  };
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/SimpleViewerMainWindow.ui	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>SimpleViewerMainWindow</class>
- <widget class="QMainWindow" name="SimpleViewerMainWindow">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>903</width>
-    <height>634</height>
-   </rect>
-  </property>
-  <property name="minimumSize">
-   <size>
-    <width>500</width>
-    <height>300</height>
-   </size>
-  </property>
-  <property name="baseSize">
-   <size>
-    <width>500</width>
-    <height>300</height>
-   </size>
-  </property>
-  <property name="windowTitle">
-   <string>Stone of Orthanc</string>
-  </property>
-  <property name="layoutDirection">
-   <enum>Qt::LeftToRight</enum>
-  </property>
-  <widget class="QWidget" name="centralwidget">
-   <property name="sizePolicy">
-    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-     <horstretch>0</horstretch>
-     <verstretch>0</verstretch>
-    </sizepolicy>
-   </property>
-   <property name="layoutDirection">
-    <enum>Qt::LeftToRight</enum>
-   </property>
-   <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0">
-    <property name="sizeConstraint">
-     <enum>QLayout::SetDefaultConstraint</enum>
-    </property>
-    <item>
-     <widget class="QCairoWidget" name="cairoCentralWidget">
-      <property name="minimumSize">
-       <size>
-        <width>0</width>
-        <height>500</height>
-       </size>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <widget class="QGroupBox" name="horizontalGroupBox">
-      <property name="minimumSize">
-       <size>
-        <width>0</width>
-        <height>100</height>
-       </size>
-      </property>
-      <property name="maximumSize">
-       <size>
-        <width>16777215</width>
-        <height>100</height>
-       </size>
-      </property>
-      <layout class="QHBoxLayout" name="horizontalLayout">
-       <item>
-        <widget class="QToolButton" name="toolButtonWindowing">
-         <property name="text">
-          <string>windowing</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QToolButton" name="toolButtonCrop">
-         <property name="text">
-          <string>crop</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QPushButton" name="pushButtonUndoCrop">
-         <property name="text">
-          <string>undo crop</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QToolButton" name="toolButtonLine">
-         <property name="text">
-          <string>line</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QToolButton" name="toolButtonCircle">
-         <property name="text">
-          <string>circle</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QPushButton" name="pushButtonRotate">
-         <property name="text">
-          <string>rotate</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QPushButton" name="pushButtonInvert">
-         <property name="text">
-          <string>invert</string>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </widget>
-    </item>
-   </layout>
-  </widget>
-  <widget class="QMenuBar" name="menubar">
-   <property name="geometry">
-    <rect>
-     <x>0</x>
-     <y>0</y>
-     <width>903</width>
-     <height>22</height>
-    </rect>
-   </property>
-   <widget class="QMenu" name="menuTest">
-    <property name="title">
-     <string>Test</string>
-    </property>
-   </widget>
-   <addaction name="menuTest"/>
-  </widget>
-  <widget class="QStatusBar" name="statusbar"/>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>QCairoWidget</class>
-   <extends>QGraphicsView</extends>
-   <header location="global">QCairoWidget.h</header>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Qt/mainQt.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "Applications/Qt/QtStoneApplicationRunner.h"
-
-#include "../../SimpleViewerApplication.h"
-#include "Framework/Messages/MessageBroker.h"
-
-
-int main(int argc, char* argv[]) 
-{
-  OrthancStone::MessageBroker broker;
-  SimpleViewer::SimpleViewerApplication stoneApplication(broker);
-
-  OrthancStone::QtStoneApplicationRunner qtAppRunner(broker, stoneApplication);
-  return qtAppRunner.Execute(argc, argv);
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,225 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SimpleViewerApplication.h"
-
-#if ORTHANC_ENABLE_QT == 1
-#  include "Qt/SimpleViewerMainWindow.h"
-#endif
-
-#if ORTHANC_ENABLE_WASM == 1
-#  include <Platforms/Wasm/WasmViewport.h>
-#endif
-
-namespace SimpleViewer
-{
-
-  void SimpleViewerApplication::Initialize(StoneApplicationContext* context,
-                                           Deprecated::IStatusBar& statusBar,
-                                           const boost::program_options::variables_map& parameters)
-  {
-    context_ = context;
-    statusBar_ = &statusBar;
-
-    {// initialize viewports and layout
-      mainLayout_ = new Deprecated::LayoutWidget("main-layout");
-      mainLayout_->SetPadding(10);
-      mainLayout_->SetBackgroundCleared(true);
-      mainLayout_->SetBackgroundColor(0, 0, 0);
-      mainLayout_->SetHorizontal();
-
-      thumbnailsLayout_ = new Deprecated::LayoutWidget("thumbnail-layout");
-      thumbnailsLayout_->SetPadding(10);
-      thumbnailsLayout_->SetBackgroundCleared(true);
-      thumbnailsLayout_->SetBackgroundColor(50, 50, 50);
-      thumbnailsLayout_->SetVertical();
-
-      mainWidget_ = new Deprecated::SliceViewerWidget(IObserver::GetBroker(), "main-viewport");
-      //mainWidget_->RegisterObserver(*this);
-
-      // hierarchy
-      mainLayout_->AddWidget(thumbnailsLayout_);
-      mainLayout_->AddWidget(mainWidget_);
-
-      // sources
-      smartLoader_.reset(new Deprecated::SmartLoader(IObserver::GetBroker(), context->GetOrthancApiClient()));
-      smartLoader_->SetImageQuality(Deprecated::SliceImageQuality_FullPam);
-
-      mainLayout_->SetTransmitMouseOver(true);
-      mainWidgetInteractor_.reset(new MainWidgetInteractor(*this));
-      mainWidget_->SetInteractor(*mainWidgetInteractor_);
-      thumbnailInteractor_.reset(new ThumbnailInteractor(*this));
-    }
-
-    statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
-    statusBar.SetMessage("Use the key \"n\" to go to next image in the main viewport");
-
-
-    if (parameters.count("studyId") < 1)
-    {
-      LOG(WARNING) << "The study ID is missing, will take the first studyId found in Orthanc";
-      context->GetOrthancApiClient().GetJsonAsync("/studies", new Callable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnStudyListReceived));
-    }
-    else
-    {
-      SelectStudy(parameters["studyId"].as<std::string>());
-    }
-  }
-
-
-  void SimpleViewerApplication::DeclareStartupOptions(boost::program_options::options_description& options)
-  {
-    boost::program_options::options_description generic("Sample options");
-    generic.add_options()
-        ("studyId", boost::program_options::value<std::string>(),
-         "Orthanc ID of the study")
-        ;
-
-    options.add(generic);
-  }
-
-  void SimpleViewerApplication::OnStudyListReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    const Json::Value& response = message.GetJson();
-
-    if (response.isArray() &&
-        response.size() >= 1)
-    {
-      SelectStudy(response[0].asString());
-    }
-  }
-  void SimpleViewerApplication::OnStudyReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    const Json::Value& response = message.GetJson();
-
-    if (response.isObject() && response["Series"].isArray())
-    {
-      for (size_t i=0; i < response["Series"].size(); i++)
-      {
-        context_->GetOrthancApiClient().GetJsonAsync("/series/" + response["Series"][(int)i].asString(), new Callable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnSeriesReceived));
-      }
-    }
-  }
-
-  void SimpleViewerApplication::OnSeriesReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
-  {
-    const Json::Value& response = message.GetJson();
-
-    if (response.isObject() &&
-        response["Instances"].isArray() &&
-        response["Instances"].size() > 0)
-    {
-      // keep track of all instances IDs
-      const std::string& seriesId = response["ID"].asString();
-      seriesTags_[seriesId] = response;
-      instancesIdsPerSeriesId_[seriesId] = std::vector<std::string>();
-      for (size_t i = 0; i < response["Instances"].size(); i++)
-      {
-        const std::string& instanceId = response["Instances"][static_cast<int>(i)].asString();
-        instancesIdsPerSeriesId_[seriesId].push_back(instanceId);
-      }
-
-      // load the first instance in the thumbnail
-      LoadThumbnailForSeries(seriesId, instancesIdsPerSeriesId_[seriesId][0]);
-
-      // if this is the first thumbnail loaded, load the first instance in the mainWidget
-      if (mainWidget_->GetLayerCount() == 0)
-      {
-        smartLoader_->SetFrameInWidget(*mainWidget_, 0, instancesIdsPerSeriesId_[seriesId][0], 0);
-      }
-    }
-  }
-
-  void SimpleViewerApplication::LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId)
-  {
-    LOG(INFO) << "Loading thumbnail for series " << seriesId;
-    
-    Deprecated::SliceViewerWidget* thumbnailWidget = 
-      new Deprecated::SliceViewerWidget(IObserver::GetBroker(), "thumbnail-series-" + seriesId);
-    thumbnails_.push_back(thumbnailWidget);
-    thumbnailsLayout_->AddWidget(thumbnailWidget);
-    
-    thumbnailWidget->RegisterObserverCallback(
-      new Callable<SimpleViewerApplication, Deprecated::SliceViewerWidget::GeometryChangedMessage>
-      (*this, &SimpleViewerApplication::OnWidgetGeometryChanged));
-    
-    smartLoader_->SetFrameInWidget(*thumbnailWidget, 0, instanceId, 0);
-    thumbnailWidget->SetInteractor(*thumbnailInteractor_);
-  }
-
-  void SimpleViewerApplication::SelectStudy(const std::string& studyId)
-  {
-    context_->GetOrthancApiClient().GetJsonAsync("/studies/" + studyId, new Callable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnStudyReceived));
-  }
-
-  void SimpleViewerApplication::OnWidgetGeometryChanged(const Deprecated::SliceViewerWidget::GeometryChangedMessage& message)
-  {
-    // TODO: The "const_cast" could probably be replaced by "mainWidget_"
-    const_cast<Deprecated::SliceViewerWidget&>(message.GetOrigin()).FitContent();
-  }
-
-  void SimpleViewerApplication::SelectSeriesInMainViewport(const std::string& seriesId)
-  {
-    smartLoader_->SetFrameInWidget(*mainWidget_, 0, instancesIdsPerSeriesId_[seriesId][0], 0);
-  }
-
-  bool SimpleViewerApplication::Handle(const StoneSampleCommands::SelectTool& value)
-  {
-    currentTool_ = value.tool;
-    return true;
-  }
-
-  bool SimpleViewerApplication::Handle(const StoneSampleCommands::Action& value)
-  {
-    switch (value.type)
-    {
-    case ActionType_Invert:
-      // TODO
-      break;
-    case ActionType_UndoCrop:
-      // TODO
-      break;
-    case ActionType_Rotate:
-      // TODO
-      break;
-    default:
-      throw std::runtime_error("Action type not supported");
-    }
-    return true;
-  }
-
-#if ORTHANC_ENABLE_QT==1
-  QStoneMainWindow* SimpleViewerApplication::CreateQtMainWindow()
-  {
-    return new SimpleViewerMainWindow(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
-  }
-#endif
-
-#if ORTHANC_ENABLE_WASM==1
-  void SimpleViewerApplication::InitializeWasm() {
-
-    AttachWidgetToWasmViewport("canvasThumbnails", thumbnailsLayout_);
-    AttachWidgetToWasmViewport("canvasMain", mainWidget_);
-  }
-#endif
-
-
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/SimpleViewerApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,175 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
- /*
- This header contains the command definitions for the sample applications
- */
-#include "Applications/Samples/StoneSampleCommands_generated.hpp"
-using namespace StoneSampleCommands;
-
-#include "Applications/IStoneApplication.h"
-
-#include "../../../../Framework/Deprecated/Layers/CircleMeasureTracker.h"
-#include "../../../../Framework/Deprecated/Layers/LineMeasureTracker.h"
-#include "../../../../Framework/Deprecated/SmartLoader.h"
-#include "../../../../Framework/Deprecated/Widgets/LayoutWidget.h"
-#include "../../../../Framework/Deprecated/Widgets/SliceViewerWidget.h"
-#include "../../../../Framework/Messages/IObserver.h"
-
-#if ORTHANC_ENABLE_WASM==1
-#include "Platforms/Wasm/WasmPlatformApplicationAdapter.h"
-#include "Platforms/Wasm/Defaults.h"
-#endif
-
-#if ORTHANC_ENABLE_QT==1
-#include "Qt/SimpleViewerMainWindow.h"
-#endif
-
-#include <Core/Images/Font.h>
-#include <Core/Logging.h>
-
-#include "ThumbnailInteractor.h"
-#include "MainWidgetInteractor.h"
-#include "AppStatus.h"
-
-using namespace OrthancStone;
-
-
-namespace SimpleViewer
-{
-
-  class SimpleViewerApplication
-    : public IStoneApplication
-    , public IObserver
-    , public IObservable
-    , public StoneSampleCommands::IHandler
-  {
-  public:
-
-    struct StatusUpdatedMessage : public IMessage
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-      const AppStatus& status_;
-
-      StatusUpdatedMessage(const AppStatus& status)
-        : status_(status)
-      {
-      }
-    };
-
-  private:
-    Tool                                currentTool_;
-
-    std::unique_ptr<MainWidgetInteractor> mainWidgetInteractor_;
-    std::unique_ptr<ThumbnailInteractor>  thumbnailInteractor_;
-    Deprecated::LayoutWidget*                       mainLayout_;
-    Deprecated::LayoutWidget*                       thumbnailsLayout_;
-    Deprecated::SliceViewerWidget*                  mainWidget_;
-    std::vector<Deprecated::SliceViewerWidget*>     thumbnails_;
-    std::map<std::string, std::vector<std::string> > instancesIdsPerSeriesId_;
-    std::map<std::string, Json::Value>  seriesTags_;
-    unsigned int                        currentInstanceIndex_;
-    Deprecated::WidgetViewport*       wasmViewport1_;
-    Deprecated::WidgetViewport*       wasmViewport2_;
-
-    Deprecated::IStatusBar*                         statusBar_;
-    std::unique_ptr<Deprecated::SmartLoader>          smartLoader_;
-
-    Orthanc::Font                       font_;
-
-  public:
-    SimpleViewerApplication(MessageBroker& broker) :
-      IObserver(broker),
-      IObservable(broker),
-      currentTool_(StoneSampleCommands::Tool_LineMeasure),
-      mainLayout_(NULL),
-      currentInstanceIndex_(0),
-      wasmViewport1_(NULL),
-      wasmViewport2_(NULL)
-    {
-      font_.LoadFromResource(Orthanc::EmbeddedResources::FONT_UBUNTU_MONO_BOLD_16);
-    }
-
-    virtual void Finalize() ORTHANC_OVERRIDE {}
-    virtual Deprecated::IWidget* GetCentralWidget() ORTHANC_OVERRIDE {return mainLayout_;}
-
-    virtual void DeclareStartupOptions(boost::program_options::options_description& options) ORTHANC_OVERRIDE;
-    virtual void Initialize(StoneApplicationContext* context,
-                            Deprecated::IStatusBar& statusBar,
-                            const boost::program_options::variables_map& parameters) ORTHANC_OVERRIDE;
-
-    void OnStudyListReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message);
-
-    void OnStudyReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message);
-
-    void OnSeriesReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message);
-
-    void LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId);
-
-    void SelectStudy(const std::string& studyId);
-
-    void OnWidgetGeometryChanged(const Deprecated::SliceViewerWidget::GeometryChangedMessage& message);
-
-    void SelectSeriesInMainViewport(const std::string& seriesId);
-
-
-    Tool GetCurrentTool() const
-    {
-      return currentTool_;
-    }
-
-    const Orthanc::Font& GetFont() const
-    {
-      return font_;
-    }
-
-    // ExecuteAction method was empty (its body was a single "TODO" comment)
-    virtual bool Handle(const SelectTool& value) ORTHANC_OVERRIDE;
-    virtual bool Handle(const Action& value) ORTHANC_OVERRIDE;
-
-    template<typename T>
-    bool ExecuteCommand(const T& cmd)
-    {
-      std::string cmdStr = StoneSampleCommands::StoneSerialize(cmd);
-      return StoneSampleCommands::StoneDispatchToHandler(cmdStr, this);
-    }
-
-    virtual void HandleSerializedMessage(const char* data) ORTHANC_OVERRIDE
-    {
-      StoneSampleCommands::StoneDispatchToHandler(data, this);
-    }
-
-    virtual std::string GetTitle() const ORTHANC_OVERRIDE {return "SimpleViewer";}
-
-#if ORTHANC_ENABLE_WASM==1
-    virtual void InitializeWasm() ORTHANC_OVERRIDE;
-#endif
-
-#if ORTHANC_ENABLE_QT==1
-    virtual QStoneMainWindow* CreateQtMainWindow();
-#endif
-  };
-
-
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "ThumbnailInteractor.h"
-
-#include "SimpleViewerApplication.h"
-
-namespace SimpleViewer {
-
-  Deprecated::IWorldSceneMouseTracker* ThumbnailInteractor::CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
-                                                                   const Deprecated::ViewportGeometry& view,
-                                                                   MouseButton button,
-                                                                   KeyboardModifiers modifiers,
-                                                                   int viewportX,
-                                                                   int viewportY,
-                                                                   double x,
-                                                                   double y,
-                                                                   Deprecated::IStatusBar* statusBar,
-                                                                   const std::vector<Deprecated::Touch>& displayTouches)
-  {
-    if (button == MouseButton_Left)
-    {
-      statusBar->SetMessage("selected thumbnail " + widget.GetName());
-      std::string seriesId = widget.GetName().substr(strlen("thumbnail-series-"));
-      application_.SelectSeriesInMainViewport(seriesId);
-    }
-    return NULL;
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/ThumbnailInteractor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../../../Framework/Deprecated/Widgets/IWorldSceneInteractor.h"
-
-using namespace OrthancStone;
-
-namespace SimpleViewer {
-
-  class SimpleViewerApplication;
-
-  class ThumbnailInteractor : public Deprecated::IWorldSceneInteractor
-  {
-  private:
-    SimpleViewerApplication&  application_;
-  public:
-    ThumbnailInteractor(SimpleViewerApplication&  application) :
-      application_(application)
-    {
-    }
-
-    virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
-                                                                    const Deprecated::ViewportGeometry& view,
-                                                                    MouseButton button,
-                                                                    KeyboardModifiers modifiers,
-                                                                    int viewportX,
-                                                                    int viewportY,
-                                                                    double x,
-                                                                    double y,
-                                                                    Deprecated::IStatusBar* statusBar,
-                                                                    const std::vector<Deprecated::Touch>& displayTouches);
-
-    virtual void MouseOver(CairoContext& context,
-                           Deprecated::WorldSceneWidget& widget,
-                           const Deprecated::ViewportGeometry& view,
-                           double x,
-                           double y,
-                           Deprecated::IStatusBar* statusBar)
-    {}
-
-    virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
-                            MouseWheelDirection direction,
-                            KeyboardModifiers modifiers,
-                            Deprecated::IStatusBar* statusBar)
-    {}
-
-    virtual void KeyPressed(Deprecated::WorldSceneWidget& widget,
-                            KeyboardKeys key,
-                            char keyChar,
-                            KeyboardModifiers modifiers,
-                            Deprecated::IStatusBar* statusBar)
-    {}
-
-  };
-
-
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "SimpleViewerWasmApplicationAdapter.h"
-
-namespace SimpleViewer
-{
-
-  SimpleViewerWasmApplicationAdapter::SimpleViewerWasmApplicationAdapter(MessageBroker &broker, SimpleViewerApplication &application)
-      : WasmPlatformApplicationAdapter(broker, application),
-        viewerApplication_(application)
-  {
-    application.RegisterObserverCallback(new Callable<SimpleViewerWasmApplicationAdapter, SimpleViewerApplication::StatusUpdatedMessage>(*this, &SimpleViewerWasmApplicationAdapter::OnStatusUpdated));
-  }
-
-  void SimpleViewerWasmApplicationAdapter::OnStatusUpdated(const SimpleViewerApplication::StatusUpdatedMessage &message)
-  {
-    Json::Value statusJson;
-    message.status_.ToJson(statusJson);
-
-    Json::Value event;
-    event["event"] = "appStatusUpdated";
-    event["data"] = statusJson;
-
-    Json::StreamWriterBuilder builder;
-    std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
-    std::ostringstream outputStr;
-
-    writer->write(event, &outputStr);
-
-    NotifyStatusUpdateFromCppToWebWithString(outputStr.str());
-  }
-
-} // namespace SimpleViewer
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/SimpleViewerWasmApplicationAdapter.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include <string>
-#include "../../../../../../Framework/Messages/IObserver.h"
-#include <Platforms/Wasm/WasmPlatformApplicationAdapter.h>
-
-#include "../../SimpleViewerApplication.h"
-
-namespace SimpleViewer {
-
-  class SimpleViewerWasmApplicationAdapter : public WasmPlatformApplicationAdapter
-    {
-      SimpleViewerApplication&  viewerApplication_;
-
-    public:
-      SimpleViewerWasmApplicationAdapter(MessageBroker& broker, SimpleViewerApplication& application);
-
-    private:
-      void OnStatusUpdated(const SimpleViewerApplication::StatusUpdatedMessage& message);
-
-    };
-
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/mainWasm.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "Platforms/Wasm/WasmWebService.h"
-#include "Platforms/Wasm/WasmViewport.h"
-
-#include <emscripten/emscripten.h>
-
-#include "../../SimpleViewerApplication.h"
-#include "SimpleViewerWasmApplicationAdapter.h"
-
-
-OrthancStone::IStoneApplication* CreateUserApplication(OrthancStone::MessageBroker& broker) {
-  
-  return new SimpleViewer::SimpleViewerApplication(broker);
-}
-
-OrthancStone::WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(OrthancStone::MessageBroker& broker, IStoneApplication* application)
-{
-  return new SimpleViewer::SimpleViewerWasmApplicationAdapter(broker, *(dynamic_cast<SimpleViewer::SimpleViewerApplication*>(application)));
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/simple-viewer.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<!doctype html>
-
-<html lang="us">
-  <head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-    <!-- Disable pinch zoom on mobile devices -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <meta name="HandheldFriendly" content="true" />
-
-    <title>Simple Viewer</title>
-    <link href="styles.css" rel="stylesheet" />
-
-<body>
-  <div id="breadcrumb">
-    <span id="label-patient-id"></span>
-    <span id="label-study-description"></span>
-    <span id="label-series-description"></span>
-  </div>
-  <div style="height: calc(100% - 50px)">
-    <div style="width: 20%; height: 100%; display: inline-block">
-      <canvas id="canvasThumbnails"></canvas>
-    </div>
-    <div style="width: 70%; height: 100%; display: inline-block">
-      <canvas id="canvasMain"></canvas>
-    </div>
-  </div>
-  <div id="toolbox" style="height: 50px">
-    <button tool-selector="line-measure" class="tool-selector">line</button>
-    <button tool-selector="circle-measure" class="tool-selector">circle</button>
-    <button tool-selector="crop" class="tool-selector">crop</button>
-    <button tool-selector="windowing" class="tool-selector">windowing</button>
-    <button tool-selector="zoom" class="tool-selector">zoom</button>
-    <button tool-selector="pan" class="tool-selector">pan</button>
-    <button action-trigger="rotate-left" class="action-trigger">rotate left</button>
-    <button action-trigger="rotate-right" class="action-trigger">rotate right</button>
-    <button action-trigger="invert" class="action-trigger">invert</button>
-  </div>
-  <script type="text/javascript" src="app-simple-viewer.js"></script>
-</body>
-
-</html>
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/simple-viewer.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-import wasmApplicationRunner = require('../../../../Platforms/Wasm/wasm-application-runner');
-
-wasmApplicationRunner.InitializeWasmApplication("OrthancStoneSimpleViewer", "/orthanc");
-
-function SelectTool(toolName: string) {
-  var command = {
-    command: "selectTool:" + toolName,
-    commandType: "generic-no-arg-command",
-    args: {
-    }                                                                                                                       
-  };
-  wasmApplicationRunner.SendSerializedMessageToStoneApplication(JSON.stringify(command));
-}
-
-function PerformAction(actionName: string) {
-  var command = {
-    command: "action:" + actionName,
-    commandType: "generic-no-arg-command",
-    args: {
-    }
-  };
-  wasmApplicationRunner.SendSerializedMessageToStoneApplication(JSON.stringify(command));
-}
-
-class SimpleViewerUI {
-
-  private _labelPatientId: HTMLSpanElement;
-  private _labelStudyDescription: HTMLSpanElement;
-
-  public constructor() {
-    // install "SelectTool" handlers
-    document.querySelectorAll("[tool-selector]").forEach((e) => {
-      (e as HTMLButtonElement).addEventListener("click", () => {
-        SelectTool(e.attributes["tool-selector"].value);
-      });
-    });
-
-    // install "PerformAction" handlers
-    document.querySelectorAll("[action-trigger]").forEach((e) => {
-      (e as HTMLButtonElement).addEventListener("click", () => {
-        PerformAction(e.attributes["action-trigger"].value);
-      });
-    });
-
-    // connect all ui elements to members
-    this._labelPatientId = document.getElementById("label-patient-id") as HTMLSpanElement;
-    this._labelStudyDescription = document.getElementById("label-study-description") as HTMLSpanElement;
-  }
-
-  public onAppStatusUpdated(status: any) {
-    this._labelPatientId.innerText = status["patientId"];
-    this._labelStudyDescription.innerText = status["studyDescription"];
-    // this.highlighThumbnail(status["currentInstanceIdInMainViewport"]);
-  }
-
-}
-
-var ui = new SimpleViewerUI();
-
-// this method is called "from the C++ code" when the StoneApplication is updated.
-// it can be used to update the UI of the application
-function UpdateWebApplicationWithString(statusUpdateMessageString: string) {
-  console.log("updating web application with string: ", statusUpdateMessageString);
-  let statusUpdateMessage = JSON.parse(statusUpdateMessageString);
-
-  if ("event" in statusUpdateMessage) {
-    let eventName = statusUpdateMessage["event"];
-    if (eventName == "appStatusUpdated") {
-      ui.onAppStatusUpdated(statusUpdateMessage["data"]);
-    }
-  }
-}
-
-function UpdateWebApplicationWithSerializedMessage(statusUpdateMessageString: string) {
-  console.log("updating web application with serialized message: ", statusUpdateMessageString);
-  console.log("<not supported in the simple viewer!>");
-}
-
-// make it available to other js scripts in the application
-(<any> window).UpdateWebApplicationWithString = UpdateWebApplicationWithString;
-(<any> window).UpdateWebApplicationWithSerializedMessage = UpdateWebApplicationWithSerializedMessage;
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/styles.css	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-html, body {
-    width: 100%;
-    height: 100%;
-    margin: 0px;
-    border: 0;
-    overflow: hidden; /*  Disable scrollbars */
-    display: block;  /* No floating content on sides */
-    background-color: black;
-    color: white;
-    font-family: Arial, Helvetica, sans-serif;
-}
-
-canvas {
-    left:0px;
-    top:0px;
-}
-
-#canvas-group {
-    padding:5px;
-    background-color: grey;
-}
-
-#status-group {
-    padding:5px;
-}
-
-#worklist-group {
-    padding:5px;
-}
-
-.vsol-button {
-    height: 40px;
-}
-
-#thumbnails-group ul li {
-    display: inline;
-    list-style: none;
-}
-
-.thumbnail {
-    width: 100px;
-    height: 100px;
-    padding: 3px;
-}
-
-.thumbnail-selected {
-    border-width: 1px;
-    border-color: red;
-    border-style: solid;
-}
-
-#template-thumbnail-li {
-    display: none !important;
-}
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewer/Wasm/tsconfig-simple-viewer.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-{
-    "extends" : "../../Web/tsconfig-samples",
-    "compilerOptions": {
-    },
-    "include" : [
-        "simple-viewer.ts",
-        "../../build-wasm/ApplicationCommands_generated.ts"
-    ]
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SimpleViewerApplicationSingleFile.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,461 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "SampleApplicationBase.h"
-
-#include "../../../Framework/Deprecated/Layers/CircleMeasureTracker.h"
-#include "../../../Framework/Deprecated/Layers/LineMeasureTracker.h"
-#include "../../../Framework/Deprecated/SmartLoader.h"
-#include "../../../Framework/Deprecated/Widgets/LayoutWidget.h"
-#include "../../../Framework/Deprecated/Widgets/SliceViewerWidget.h"
-#include "../../../Framework/Messages/IObserver.h"
-
-#if ORTHANC_ENABLE_WASM==1
-#include "../../../Platforms/Wasm/WasmPlatformApplicationAdapter.h"
-#include "../../../Platforms/Wasm/Defaults.h"
-#endif
-
-#include <Core/Images/Font.h>
-#include <Core/Logging.h>
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class SimpleViewerApplication :
-      public SampleSingleCanvasWithButtonsApplicationBase,
-      public ObserverBase<SimpleViewerApplication>
-    {
-    private:
-      class ThumbnailInteractor : public Deprecated::IWorldSceneInteractor
-      {
-      private:
-        SimpleViewerApplication&  application_;
-
-      public:
-        ThumbnailInteractor(SimpleViewerApplication&  application) :
-          application_(application)
-        {
-        }
-
-        virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
-                                                            const Deprecated::ViewportGeometry& view,
-                                                            MouseButton button,
-                                                            KeyboardModifiers modifiers,
-                                                            int viewportX,
-                                                            int viewportY,
-                                                            double x,
-                                                            double y,
-                                                            Deprecated::IStatusBar* statusBar,
-                                                            const std::vector<Deprecated::Touch>& displayTouches)
-        {
-          if (button == MouseButton_Left)
-          {
-            statusBar->SetMessage("selected thumbnail " + widget.GetName());
-            std::string seriesId = widget.GetName().substr(strlen("thumbnail-series-"));
-            application_.SelectSeriesInMainViewport(seriesId);
-          }
-          return NULL;
-        }
-
-        virtual void MouseOver(CairoContext& context,
-                               Deprecated::WorldSceneWidget& widget,
-                               const Deprecated::ViewportGeometry& view,
-                               double x,
-                               double y,
-                               Deprecated::IStatusBar* statusBar)
-        {
-        }
-
-        virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
-                                MouseWheelDirection direction,
-                                KeyboardModifiers modifiers,
-                                Deprecated::IStatusBar* statusBar)
-        {
-        }
-
-        virtual void KeyPressed(Deprecated::WorldSceneWidget& widget,
-                                KeyboardKeys key,
-                                char keyChar,
-                                KeyboardModifiers modifiers,
-                                Deprecated::IStatusBar* statusBar)
-        {
-        }
-      };
-
-      class MainWidgetInteractor : public Deprecated::IWorldSceneInteractor
-      {
-      private:
-        SimpleViewerApplication&  application_;
-        
-      public:
-        MainWidgetInteractor(SimpleViewerApplication&  application) :
-          application_(application)
-        {
-        }
-        
-        virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
-                                                            const Deprecated::ViewportGeometry& view,
-                                                            MouseButton button,
-                                                            KeyboardModifiers modifiers,
-                                                            int viewportX,
-                                                            int viewportY,
-                                                            double x,
-                                                            double y,
-                                                            Deprecated::IStatusBar* statusBar,
-                                                            const std::vector<Deprecated::Touch>& displayTouches)
-        {
-          if (button == MouseButton_Left)
-          {
-            if (application_.currentTool_ == Tool_LineMeasure)
-            {
-              return new Deprecated::LineMeasureTracker(statusBar, dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice(),
-                                            x, y, 255, 0, 0, application_.GetFont());
-            }
-            else if (application_.currentTool_ == Tool_CircleMeasure)
-            {
-              return new Deprecated::CircleMeasureTracker(statusBar, dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice(),
-                                              x, y, 255, 0, 0, application_.GetFont());
-            }
-          }
-          return NULL;
-        }
-
-        virtual void MouseOver(CairoContext& context,
-                               Deprecated::WorldSceneWidget& widget,
-                               const Deprecated::ViewportGeometry& view,
-                               double x,
-                               double y,
-                               Deprecated::IStatusBar* statusBar)
-        {
-          if (statusBar != NULL)
-          {
-            Vector p = dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice().MapSliceToWorldCoordinates(x, y);
-            
-            char buf[64];
-            sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)",
-                    p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
-            statusBar->SetMessage(buf);
-          }
-        }
-
-        virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
-                                MouseWheelDirection direction,
-                                KeyboardModifiers modifiers,
-                                Deprecated::IStatusBar* statusBar)
-        {
-        }
-
-        virtual void KeyPressed(Deprecated::WorldSceneWidget& widget,
-                                KeyboardKeys key,
-                                char keyChar,
-                                KeyboardModifiers modifiers,
-                                Deprecated::IStatusBar* statusBar)
-        {
-          switch (keyChar)
-          {
-            case 's':
-              widget.FitContent();
-              break;
-
-            case 'l':
-              application_.currentTool_ = Tool_LineMeasure;
-              break;
-
-            case 'c':
-              application_.currentTool_ = Tool_CircleMeasure;
-              break;
-
-            default:
-              break;
-          }
-        }
-      };
-
-
-#if ORTHANC_ENABLE_WASM==1
-      class SimpleViewerApplicationAdapter : public WasmPlatformApplicationAdapter
-      {
-        SimpleViewerApplication&  viewerApplication_;
-
-      public:
-        SimpleViewerApplicationAdapter(SimpleViewerApplication& application)
-          : WasmPlatformApplicationAdapter(application),
-            viewerApplication_(application)
-        {
-        }
-
-        virtual void HandleSerializedMessageFromWeb(std::string& output, const std::string& input) 
-        {
-          if (input == "select-tool:line-measure")
-          {
-            viewerApplication_.currentTool_ = Tool_LineMeasure;
-            NotifyStatusUpdateFromCppToWebWithString("currentTool=line-measure");
-          }
-          else if (input == "select-tool:circle-measure")
-          {
-            viewerApplication_.currentTool_ = Tool_CircleMeasure;
-            NotifyStatusUpdateFromCppToWebWithString("currentTool=circle-measure");
-          }
-
-          output = "ok";
-        }
-
-        virtual void NotifySerializedMessageFromCppToWeb(const std::string& statusUpdateMessage) 
-        {
-          UpdateStoneApplicationStatusFromCppWithSerializedMessage(statusUpdateMessage.c_str());
-        }
-
-        virtual void NotifyStatusUpdateFromCppToWebWithString(const std::string& statusUpdateMessage) 
-        {
-          UpdateStoneApplicationStatusFromCppWithString(statusUpdateMessage.c_str());
-        }
-
-      };
-#endif
-      enum Tool {
-        Tool_LineMeasure,
-        Tool_CircleMeasure
-      };
-
-      Tool                                 currentTool_;
-      std::unique_ptr<MainWidgetInteractor>  mainWidgetInteractor_;
-      std::unique_ptr<ThumbnailInteractor>   thumbnailInteractor_;
-      Deprecated::LayoutWidget*                        mainLayout_;
-      Deprecated::LayoutWidget*                        thumbnailsLayout_;
-      std::vector<boost::shared_ptr<Deprecated::SliceViewerWidget> >      thumbnails_;
-
-      std::map<std::string, std::vector<std::string> > instancesIdsPerSeriesId_;
-      std::map<std::string, Json::Value> seriesTags_;
-
-      unsigned int                         currentInstanceIndex_;
-      Deprecated::WidgetViewport*        wasmViewport1_;
-      Deprecated::WidgetViewport*        wasmViewport2_;
-
-      Deprecated::IStatusBar*                          statusBar_;
-      std::unique_ptr<Deprecated::SmartLoader>           smartLoader_;
-
-      Orthanc::Font                        font_;
-
-    public:
-      SimpleViewerApplication() :
-        currentTool_(Tool_LineMeasure),
-        mainLayout_(NULL),
-        currentInstanceIndex_(0),
-        wasmViewport1_(NULL),
-        wasmViewport2_(NULL)
-      {
-        font_.LoadFromResource(Orthanc::EmbeddedResources::FONT_UBUNTU_MONO_BOLD_16);
-//        DeclareIgnoredMessage(MessageType_Widget_ContentChanged);
-      }
-
-      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
-      {
-        boost::program_options::options_description generic("Sample options");
-        generic.add_options()
-          ("studyId", boost::program_options::value<std::string>(),
-           "Orthanc ID of the study")
-          ;
-
-        options.add(generic);
-      }
-
-      virtual void Initialize(StoneApplicationContext* context,
-                              Deprecated::IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters)
-      {
-        using namespace OrthancStone;
-
-        context_ = context;
-        statusBar_ = &statusBar;
-
-        {// initialize viewports and layout
-          mainLayout_ = new Deprecated::LayoutWidget("main-layout");
-          mainLayout_->SetPadding(10);
-          mainLayout_->SetBackgroundCleared(true);
-          mainLayout_->SetBackgroundColor(0, 0, 0);
-          mainLayout_->SetHorizontal();
-
-          boost::shared_ptr<Deprecated::LayoutWidget> thumbnailsLayout_(new Deprecated::LayoutWidget("thumbnail-layout"));
-          thumbnailsLayout_->SetPadding(10);
-          thumbnailsLayout_->SetBackgroundCleared(true);
-          thumbnailsLayout_->SetBackgroundColor(50, 50, 50);
-          thumbnailsLayout_->SetVertical();
-
-          boost::shared_ptr<Deprecated::SliceViewerWidget> widget
-            (new Deprecated::SliceViewerWidget("main-viewport"));
-          SetCentralWidget(widget);
-          //mainWidget_->RegisterObserver(*this);
-
-          // hierarchy
-          mainLayout_->AddWidget(thumbnailsLayout_);
-          mainLayout_->AddWidget(widget);
-
-          // sources
-          smartLoader_.reset(new Deprecated::SmartLoader(context->GetOrthancApiClient()));
-          smartLoader_->SetImageQuality(Deprecated::SliceImageQuality_FullPam);
-
-          mainLayout_->SetTransmitMouseOver(true);
-          mainWidgetInteractor_.reset(new MainWidgetInteractor(*this));
-          widget->SetInteractor(*mainWidgetInteractor_);
-          thumbnailInteractor_.reset(new ThumbnailInteractor(*this));
-        }
-
-        statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
-        statusBar.SetMessage("Use the key \"n\" to go to next image in the main viewport");
-
-
-        if (parameters.count("studyId") < 1)
-        {
-          LOG(WARNING) << "The study ID is missing, will take the first studyId found in Orthanc";
-          context->GetOrthancApiClient()->GetJsonAsync(
-            "/studies",
-            new Deprecated::DeprecatedCallable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>
-            (GetSharedObserver(), &SimpleViewerApplication::OnStudyListReceived));
-        }
-        else
-        {
-          SelectStudy(parameters["studyId"].as<std::string>());
-        }
-      }
-
-      void OnStudyListReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
-      {
-        const Json::Value& response = message.GetJson();
-
-        if (response.isArray() &&
-            response.size() >= 1)
-        {
-          SelectStudy(response[0].asString());
-        }
-      }
-      
-      void OnStudyReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
-      {
-        const Json::Value& response = message.GetJson();
-
-        if (response.isObject() && response["Series"].isArray())
-        {
-          for (size_t i=0; i < response["Series"].size(); i++)
-          {
-            context_->GetOrthancApiClient()->GetJsonAsync(
-              "/series/" + response["Series"][(int)i].asString(),
-              new Deprecated::DeprecatedCallable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>
-              (GetSharedObserver(), &SimpleViewerApplication::OnSeriesReceived));
-          }
-        }
-      }
-
-      void OnSeriesReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
-      {
-        const Json::Value& response = message.GetJson();
-
-        if (response.isObject() &&
-            response["Instances"].isArray() &&
-            response["Instances"].size() > 0)
-        {
-          // keep track of all instances IDs
-          const std::string& seriesId = response["ID"].asString();
-          seriesTags_[seriesId] = response;
-          instancesIdsPerSeriesId_[seriesId] = std::vector<std::string>();
-          for (size_t i = 0; i < response["Instances"].size(); i++)
-          {
-            const std::string& instanceId = response["Instances"][static_cast<int>(i)].asString();
-            instancesIdsPerSeriesId_[seriesId].push_back(instanceId);
-          }
-
-          // load the first instance in the thumbnail
-          LoadThumbnailForSeries(seriesId, instancesIdsPerSeriesId_[seriesId][0]);
-
-          // if this is the first thumbnail loaded, load the first instance in the mainWidget
-          Deprecated::SliceViewerWidget& widget = dynamic_cast<Deprecated::SliceViewerWidget&>(*GetCentralWidget());
-          if (widget.GetLayerCount() == 0)
-          {
-            smartLoader_->SetFrameInWidget(widget, 0, instancesIdsPerSeriesId_[seriesId][0], 0);
-          }
-        }
-      }
-
-      void LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId)
-      {
-        LOG(INFO) << "Loading thumbnail for series " << seriesId;
-        boost::shared_ptr<Deprecated::SliceViewerWidget> thumbnailWidget(new Deprecated::SliceViewerWidget("thumbnail-series-" + seriesId));
-        thumbnails_.push_back(thumbnailWidget);
-        thumbnailsLayout_->AddWidget(thumbnailWidget);
-        Register<Deprecated::SliceViewerWidget::GeometryChangedMessage>(*thumbnailWidget, &SimpleViewerApplication::OnWidgetGeometryChanged);
-        smartLoader_->SetFrameInWidget(*thumbnailWidget, 0, instanceId, 0);
-        thumbnailWidget->SetInteractor(*thumbnailInteractor_);
-      }
-
-      void SelectStudy(const std::string& studyId)
-      {
-        LOG(INFO) << "Selecting study: " << studyId;
-        context_->GetOrthancApiClient()->GetJsonAsync(
-          "/studies/" + studyId, new Deprecated::DeprecatedCallable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>
-          (GetSharedObserver(), &SimpleViewerApplication::OnStudyReceived));
-      }
-
-      void OnWidgetGeometryChanged(const Deprecated::SliceViewerWidget::GeometryChangedMessage& message)
-      {
-        // TODO: The "const_cast" could probably be replaced by "mainWidget"
-        const_cast<Deprecated::SliceViewerWidget&>(message.GetOrigin()).FitContent();
-      }
-
-      void SelectSeriesInMainViewport(const std::string& seriesId)
-      {
-        Deprecated::SliceViewerWidget& widget = dynamic_cast<Deprecated::SliceViewerWidget&>(*GetCentralWidget());
-        smartLoader_->SetFrameInWidget(widget, 0, instancesIdsPerSeriesId_[seriesId][0], 0);
-      }
-
-      const Orthanc::Font& GetFont() const
-      {
-        return font_;
-      }
-      
-      virtual void OnPushButton1Clicked() {}
-      virtual void OnPushButton2Clicked() {}
-      virtual void OnTool1Clicked() { currentTool_ = Tool_LineMeasure;}
-      virtual void OnTool2Clicked() { currentTool_ = Tool_CircleMeasure;}
-
-      virtual void GetButtonNames(std::string& pushButton1,
-                                  std::string& pushButton2,
-                                  std::string& tool1,
-                                  std::string& tool2)
-      {
-        tool1 = "line";
-        tool2 = "circle";
-        pushButton1 = "action1";
-        pushButton2 = "action2";
-      }
-
-#if ORTHANC_ENABLE_WASM==1
-      virtual void InitializeWasm()
-      {
-        AttachWidgetToWasmViewport("canvas", thumbnailsLayout_);
-        AttachWidgetToWasmViewport("canvas2", widget);
-      }
-#endif
-
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleFrameApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "SampleApplicationBase.h"
-
-#include "../../../Framework/Deprecated/Layers/DicomSeriesVolumeSlicer.h"
-#include "../../../Framework/Deprecated/Widgets/SliceViewerWidget.h"
-
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-
-#include <boost/math/constants/constants.hpp>
-
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class SingleFrameApplication :
-      public SampleSingleCanvasApplicationBase,
-      public ObserverBase<SingleFrameApplication>
-    {
-    private:
-      class Interactor : public Deprecated::IWorldSceneInteractor
-      {
-      private:
-        SingleFrameApplication&  application_;
-        
-      public:
-        Interactor(SingleFrameApplication&  application) :
-          application_(application)
-        {
-        }
-        
-        virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& widget,
-                                                                        const Deprecated::ViewportGeometry& view,
-                                                                        MouseButton button,
-                                                                        KeyboardModifiers modifiers,
-                                                                        int viewportX,
-                                                                        int viewportY,
-                                                                        double x,
-                                                                        double y,
-                                                                        Deprecated::IStatusBar* statusBar,
-                                                                        const std::vector<Deprecated::Touch>& displayTouches)
-        {
-          return NULL;
-        }
-
-        virtual void MouseOver(CairoContext& context,
-                               Deprecated::WorldSceneWidget& widget,
-                               const Deprecated::ViewportGeometry& view,
-                               double x,
-                               double y,
-                               Deprecated::IStatusBar* statusBar)
-        {
-          if (statusBar != NULL)
-          {
-            Vector p = dynamic_cast<Deprecated::SliceViewerWidget&>(widget).GetSlice().MapSliceToWorldCoordinates(x, y);
-            
-            char buf[64];
-            sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)", 
-                    p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
-            statusBar->SetMessage(buf);
-          }
-        }
-
-        virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
-                                MouseWheelDirection direction,
-                                KeyboardModifiers modifiers,
-                                Deprecated::IStatusBar* statusBar)
-        {
-          int scale = (modifiers & KeyboardModifiers_Control ? 10 : 1);
-          
-          switch (direction)
-          {
-            case MouseWheelDirection_Up:
-              application_.OffsetSlice(-scale);
-              break;
-
-            case MouseWheelDirection_Down:
-              application_.OffsetSlice(scale);
-              break;
-
-            default:
-              break;
-          }
-        }
-
-        virtual void KeyPressed(Deprecated::WorldSceneWidget& widget,
-                                KeyboardKeys key,
-                                char keyChar,
-                                KeyboardModifiers modifiers,
-                                Deprecated::IStatusBar* statusBar)
-        {
-          switch (keyChar)
-          {
-            case 's':
-              widget.FitContent();
-              break;
-
-            default:
-              break;
-          }
-        }
-      };
-
-
-      void OffsetSlice(int offset)
-      {
-        if (source_)
-        {
-          int slice = static_cast<int>(slice_) + offset;
-
-          if (slice < 0)
-          {
-            slice = 0;
-          }
-
-          if (slice >= static_cast<int>(source_->GetSlicesCount()))
-          {
-            slice = static_cast<int>(source_->GetSlicesCount()) - 1;
-          }
-
-          if (slice != static_cast<int>(slice_)) 
-          {
-            SetSlice(slice);
-          }   
-        }
-      }
-
-
-      void SetSlice(size_t index)
-      {
-        if (source_ &&
-            index < source_->GetSlicesCount())
-        {
-          slice_ = static_cast<unsigned int>(index);
-          
-#if 1
-          widget_->SetSlice(source_->GetSlice(slice_).GetGeometry());
-#else
-          // TEST for scene extents - Rotate the axes
-          double a = 15.0 / 180.0 * boost::math::constants::pi<double>();
-
-#if 1
-          Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
-          Vector y; GeometryToolbox::AssignVector(y, -sin(a), cos(a), 0);
-#else
-          // Flip the normal
-          Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
-          Vector y; GeometryToolbox::AssignVector(y, sin(a), -cos(a), 0);
-#endif
-          
-          SliceGeometry s(source_->GetSlice(slice_).GetGeometry().GetOrigin(), x, y);
-          widget_->SetSlice(s);
-#endif
-        }
-      }
-        
-      
-      void OnMainWidgetGeometryReady(const Deprecated::IVolumeSlicer::GeometryReadyMessage& message)
-      {
-        // Once the geometry of the series is downloaded from Orthanc,
-        // display its middle slice, and adapt the viewport to fit this
-        // slice
-        if (source_ &&
-            source_.get() == &message.GetOrigin())
-        {
-          SetSlice(source_->GetSlicesCount() / 2);
-        }
-
-        widget_->FitContent();
-      }
-
-      boost::shared_ptr<Deprecated::SliceViewerWidget>  widget_;
-      std::unique_ptr<Interactor>         mainWidgetInteractor_;
-      boost::shared_ptr<Deprecated::DicomSeriesVolumeSlicer> source_;
-      unsigned int                      slice_;
-
-    public:
-      SingleFrameApplication() :
-        slice_(0)
-      {
-      }
-      
-      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
-      {
-        boost::program_options::options_description generic("Sample options");
-        generic.add_options()
-          ("instance", boost::program_options::value<std::string>(), 
-           "Orthanc ID of the instance")
-          ("frame", boost::program_options::value<unsigned int>()->default_value(0),
-           "Number of the frame, for multi-frame DICOM instances")
-          ("smooth", boost::program_options::value<bool>()->default_value(true), 
-           "Enable bilinear interpolation to smooth the image")
-          ;
-
-        options.add(generic);    
-      }
-
-      virtual void Initialize(StoneApplicationContext* context,
-                              Deprecated::IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters)
-      {
-        using namespace OrthancStone;
-
-        context_ = context;
-
-        statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
-
-        if (parameters.count("instance") != 1)
-        {
-          LOG(ERROR) << "The instance ID is missing";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-
-        std::string instance = parameters["instance"].as<std::string>();
-        int frame = parameters["frame"].as<unsigned int>();
-
-        widget_.reset(new Deprecated::SliceViewerWidget("main-widget"));
-        SetCentralWidget(widget_);
-
-        boost::shared_ptr<Deprecated::DicomSeriesVolumeSlicer> layer(new Deprecated::DicomSeriesVolumeSlicer);
-        layer->Connect(context->GetOrthancApiClient());
-        source_ = layer;
-
-        layer->LoadFrame(instance, frame);
-        Register<Deprecated::IVolumeSlicer::GeometryReadyMessage>(*layer, &SingleFrameApplication::OnMainWidgetGeometryReady);
-        widget_->AddLayer(layer);
-
-        Deprecated::RenderStyle s;
-
-        if (parameters["smooth"].as<bool>())
-        {
-          s.interpolation_ = ImageInterpolation_Bilinear;
-        }
-
-        widget_->SetLayerStyle(0, s);
-        widget_->SetTransmitMouseOver(true);
-
-        mainWidgetInteractor_.reset(new Interactor(*this));
-        widget_->SetInteractor(*mainWidgetInteractor_);
-      }
-    };
-
-
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleFrameEditorApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,531 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "SampleApplicationBase.h"
-
-#include "../../../Framework/Radiography/RadiographyLayerCropTracker.h"
-#include "../../../Framework/Radiography/RadiographyLayerMaskTracker.h"
-#include "../../../Framework/Radiography/RadiographyLayerMoveTracker.h"
-#include "../../../Framework/Radiography/RadiographyLayerResizeTracker.h"
-#include "../../../Framework/Radiography/RadiographyLayerRotateTracker.h"
-#include "../../../Framework/Radiography/RadiographyMaskLayer.h"
-#include "../../../Framework/Radiography/RadiographyScene.h"
-#include "../../../Framework/Radiography/RadiographySceneCommand.h"
-#include "../../../Framework/Radiography/RadiographySceneReader.h"
-#include "../../../Framework/Radiography/RadiographySceneWriter.h"
-#include "../../../Framework/Radiography/RadiographyWidget.h"
-#include "../../../Framework/Radiography/RadiographyWindowingTracker.h"
-#include "../../../Framework/Toolbox/TextRenderer.h"
-
-#include <Core/HttpClient.h>
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-#include <Core/Images/PngWriter.h>
-#include <Core/Images/PngReader.h>
-
-
-// Export using PAM is faster than using PNG, but requires Orthanc
-// core >= 1.4.3
-#define EXPORT_USING_PAM  1
-
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class RadiographyEditorInteractor :
-        public Deprecated::IWorldSceneInteractor,
-        public ObserverBase<RadiographyEditorInteractor>
-    {
-    private:
-      enum Tool
-      {
-        Tool_Move,
-        Tool_Rotate,
-        Tool_Crop,
-        Tool_Resize,
-        Tool_Mask,
-        Tool_Windowing
-      };
-
-
-      StoneApplicationContext*  context_;
-      UndoRedoStack             undoRedoStack_;
-      Tool                      tool_;
-      RadiographyMaskLayer*     maskLayer_;
-
-
-      static double GetHandleSize()
-      {
-        return 10.0;
-      }
-
-
-    public:
-      RadiographyEditorInteractor() :
-        context_(NULL),
-        tool_(Tool_Move),
-        maskLayer_(NULL)
-      {
-      }
-
-      void SetContext(StoneApplicationContext& context)
-      {
-        context_ = &context;
-      }
-
-      void SetMaskLayer(RadiographyMaskLayer* maskLayer)
-      {
-        maskLayer_ = maskLayer;
-      }
-      virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& worldWidget,
-                                                                      const Deprecated::ViewportGeometry& view,
-                                                                      MouseButton button,
-                                                                      KeyboardModifiers modifiers,
-                                                                      int viewportX,
-                                                                      int viewportY,
-                                                                      double x,
-                                                                      double y,
-                                                                      Deprecated::IStatusBar* statusBar,
-                                                                      const std::vector<Deprecated::Touch>& displayTouches)
-      {
-        RadiographyWidget& widget = dynamic_cast<RadiographyWidget&>(worldWidget);
-
-        if (button == MouseButton_Left)
-        {
-          size_t selected;
-
-          if (tool_ == Tool_Windowing)
-          {
-            return new RadiographyWindowingTracker(
-                  undoRedoStack_,
-                  widget.GetScene(),
-                  widget,
-                  OrthancStone::ImageInterpolation_Nearest,
-                  viewportX, viewportY,
-                  RadiographyWindowingTracker::Action_DecreaseWidth,
-                  RadiographyWindowingTracker::Action_IncreaseWidth,
-                  RadiographyWindowingTracker::Action_DecreaseCenter,
-                  RadiographyWindowingTracker::Action_IncreaseCenter);
-          }
-          else if (!widget.LookupSelectedLayer(selected))
-          {
-            // No layer is currently selected
-            size_t layer;
-            if (widget.GetScene().LookupLayer(layer, x, y))
-            {
-              widget.Select(layer);
-            }
-
-            return NULL;
-          }
-          else if (tool_ == Tool_Crop ||
-                   tool_ == Tool_Resize ||
-                   tool_ == Tool_Mask)
-          {
-            RadiographyScene::LayerAccessor accessor(widget.GetScene(), selected);
-            
-            ControlPoint controlPoint;
-            if (accessor.GetLayer().LookupControlPoint(controlPoint, x, y, view.GetZoom(), GetHandleSize()))
-            {
-              switch (tool_)
-              {
-              case Tool_Crop:
-                return new RadiographyLayerCropTracker
-                    (undoRedoStack_, widget.GetScene(), view, selected, controlPoint);
-
-              case Tool_Mask:
-                return new RadiographyLayerMaskTracker
-                    (undoRedoStack_, widget.GetScene(), view, selected, controlPoint);
-
-              case Tool_Resize:
-                return new RadiographyLayerResizeTracker
-                    (undoRedoStack_, widget.GetScene(), selected, controlPoint,
-                     (modifiers & KeyboardModifiers_Shift));
-
-              default:
-                throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-              }
-            }
-            else
-            {
-              size_t layer;
-
-              if (widget.GetScene().LookupLayer(layer, x, y))
-              {
-                widget.Select(layer);
-              }
-              else
-              {
-                widget.Unselect();
-              }
-
-              return NULL;
-            }
-          }
-          else
-          {
-            size_t layer;
-
-            if (widget.GetScene().LookupLayer(layer, x, y))
-            {
-              if (layer == selected)
-              {
-                switch (tool_)
-                {
-                case Tool_Move:
-                  return new RadiographyLayerMoveTracker
-                      (undoRedoStack_, widget.GetScene(), layer, x, y,
-                       (modifiers & KeyboardModifiers_Shift));
-
-                case Tool_Rotate:
-                  return new RadiographyLayerRotateTracker
-                      (undoRedoStack_, widget.GetScene(), view, layer, x, y,
-                       (modifiers & KeyboardModifiers_Shift));
-
-                default:
-                  break;
-                }
-
-                return NULL;
-              }
-              else
-              {
-                widget.Select(layer);
-                return NULL;
-              }
-            }
-            else
-            {
-              widget.Unselect();
-              return NULL;
-            }
-          }
-        }
-        else
-        {
-          return NULL;
-        }
-        return NULL;
-      }
-
-      virtual void MouseOver(CairoContext& context,
-                             Deprecated::WorldSceneWidget& worldWidget,
-                             const Deprecated::ViewportGeometry& view,
-                             double x,
-                             double y,
-                             Deprecated::IStatusBar* statusBar)
-      {
-        RadiographyWidget& widget = dynamic_cast<RadiographyWidget&>(worldWidget);
-
-#if 0
-        if (statusBar != NULL)
-        {
-          char buf[64];
-          sprintf(buf, "X = %.02f Y = %.02f (in cm)", x / 10.0, y / 10.0);
-          statusBar->SetMessage(buf);
-        }
-#endif
-
-        size_t selected;
-
-        if (widget.LookupSelectedLayer(selected) &&
-            (tool_ == Tool_Crop ||
-             tool_ == Tool_Resize ||
-             tool_ == Tool_Mask))
-        {
-          RadiographyScene::LayerAccessor accessor(widget.GetScene(), selected);
-
-          ControlPoint controlPoint;
-          if (accessor.GetLayer().LookupControlPoint(controlPoint, x, y, view.GetZoom(), GetHandleSize()))
-          {
-            double z = 1.0 / view.GetZoom();
-
-            context.SetSourceColor(255, 0, 0);
-            cairo_t* cr = context.GetObject();
-            cairo_set_line_width(cr, 2.0 * z);
-            cairo_move_to(cr, controlPoint.x - GetHandleSize() * z, controlPoint.y - GetHandleSize() * z);
-            cairo_line_to(cr, controlPoint.x + GetHandleSize() * z, controlPoint.y - GetHandleSize() * z);
-            cairo_line_to(cr, controlPoint.x + GetHandleSize() * z, controlPoint.y + GetHandleSize() * z);
-            cairo_line_to(cr, controlPoint.x - GetHandleSize() * z, controlPoint.y + GetHandleSize() * z);
-            cairo_line_to(cr, controlPoint.x - GetHandleSize() * z, controlPoint.y - GetHandleSize() * z);
-            cairo_stroke(cr);
-          }
-        }
-      }
-
-      virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
-                              MouseWheelDirection direction,
-                              KeyboardModifiers modifiers,
-                              Deprecated::IStatusBar* statusBar)
-      {
-      }
-
-      virtual void KeyPressed(Deprecated::WorldSceneWidget& worldWidget,
-                              KeyboardKeys key,
-                              char keyChar,
-                              KeyboardModifiers modifiers,
-                              Deprecated::IStatusBar* statusBar)
-      {
-        RadiographyWidget& widget = dynamic_cast<RadiographyWidget&>(worldWidget);
-
-        switch (keyChar)
-        {
-        case 'a':
-          widget.FitContent();
-          break;
-
-        case 'c':
-          tool_ = Tool_Crop;
-          break;
-
-        case 'm':
-          tool_ = Tool_Mask;
-          widget.Select(1);
-          break;
-
-        case 'd':
-        {
-          // dump to json and reload
-          Json::Value snapshot;
-          RadiographySceneWriter writer;
-          writer.Write(snapshot, widget.GetScene());
-
-          LOG(INFO) << "JSON export was successful: "
-                    << snapshot.toStyledString();
-
-          boost::shared_ptr<RadiographyScene> scene(new RadiographyScene);
-          RadiographySceneReader reader(*scene, *context_->GetOrthancApiClient());
-          reader.Read(snapshot);
-
-          widget.SetScene(scene);
-        };break;
-
-        case 'e':
-        {
-          Orthanc::DicomMap tags;
-
-          // Minimal set of tags to generate a valid CR image
-          tags.SetValue(Orthanc::DICOM_TAG_ACCESSION_NUMBER, "NOPE", false);
-          tags.SetValue(Orthanc::DICOM_TAG_BODY_PART_EXAMINED, "PELVIS", false);
-          tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "1", false);
-          //tags.SetValue(Orthanc::DICOM_TAG_LATERALITY, "", false);
-          tags.SetValue(Orthanc::DICOM_TAG_MANUFACTURER, "OSIMIS", false);
-          tags.SetValue(Orthanc::DICOM_TAG_MODALITY, "CR", false);
-          tags.SetValue(Orthanc::DICOM_TAG_PATIENT_BIRTH_DATE, "20000101", false);
-          tags.SetValue(Orthanc::DICOM_TAG_PATIENT_ID, "hello", false);
-          tags.SetValue(Orthanc::DICOM_TAG_PATIENT_NAME, "HELLO^WORLD", false);
-          tags.SetValue(Orthanc::DICOM_TAG_PATIENT_ORIENTATION, "", false);
-          tags.SetValue(Orthanc::DICOM_TAG_PATIENT_SEX, "M", false);
-          tags.SetValue(Orthanc::DICOM_TAG_REFERRING_PHYSICIAN_NAME, "HOUSE^MD", false);
-          tags.SetValue(Orthanc::DICOM_TAG_SERIES_NUMBER, "1", false);
-          tags.SetValue(Orthanc::DICOM_TAG_SOP_CLASS_UID, "1.2.840.10008.5.1.4.1.1.1", false);
-          tags.SetValue(Orthanc::DICOM_TAG_STUDY_ID, "STUDY", false);
-          tags.SetValue(Orthanc::DICOM_TAG_VIEW_POSITION, "", false);
-
-          if (context_ != NULL)
-          {
-            widget.GetScene().ExportDicom(*context_->GetOrthancApiClient(),
-                                          tags, std::string(), 0.1, 0.1, widget.IsInverted(),
-                                          false /* autoCrop */, widget.GetInterpolation(), EXPORT_USING_PAM);
-          }
-
-          break;
-        }
-
-        case 'i':
-          widget.SwitchInvert();
-          break;
-
-        case 't':
-          tool_ = Tool_Move;
-          break;
-
-        case 'n':
-        {
-          switch (widget.GetInterpolation())
-          {
-          case ImageInterpolation_Nearest:
-            LOG(INFO) << "Switching to bilinear interpolation";
-            widget.SetInterpolation(ImageInterpolation_Bilinear);
-            break;
-
-          case ImageInterpolation_Bilinear:
-            LOG(INFO) << "Switching to nearest neighbor interpolation";
-            widget.SetInterpolation(ImageInterpolation_Nearest);
-            break;
-
-          default:
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-          }
-          
-          break;
-        }
-
-        case 'r':
-          tool_ = Tool_Rotate;
-          break;
-
-        case 's':
-          tool_ = Tool_Resize;
-          break;
-
-        case 'w':
-          tool_ = Tool_Windowing;
-          break;
-
-        case 'y':
-          if (modifiers & KeyboardModifiers_Control)
-          {
-            undoRedoStack_.Redo();
-            widget.NotifyContentChanged();
-          }
-          break;
-
-        case 'z':
-          if (modifiers & KeyboardModifiers_Control)
-          {
-            undoRedoStack_.Undo();
-            widget.NotifyContentChanged();
-          }
-          break;
-
-        default:
-          break;
-        }
-      }
-    };
-
-
-
-    class SingleFrameEditorApplication :
-        public SampleSingleCanvasApplicationBase,
-        public IObserver
-    {
-    private:
-      boost::shared_ptr<RadiographyScene>   scene_;
-      RadiographyEditorInteractor           interactor_;
-      RadiographyMaskLayer*                 maskLayer_;
-
-    public:
-      virtual ~SingleFrameEditorApplication()
-      {
-        LOG(WARNING) << "Destroying the application";
-      }
-      
-      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
-      {
-        boost::program_options::options_description generic("Sample options");
-        generic.add_options()
-            ("instance", boost::program_options::value<std::string>(),
-             "Orthanc ID of the instance")
-            ("frame", boost::program_options::value<unsigned int>()->default_value(0),
-             "Number of the frame, for multi-frame DICOM instances")
-            ;
-
-        options.add(generic);
-      }
-
-      virtual void Initialize(StoneApplicationContext* context,
-                              Deprecated::IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters)
-      {
-        using namespace OrthancStone;
-
-        context_ = context;
-        interactor_.SetContext(*context);
-
-        statusBar.SetMessage("Use the key \"a\" to reinitialize the layout");
-        statusBar.SetMessage("Use the key \"c\" to crop");
-        statusBar.SetMessage("Use the key \"e\" to export DICOM to the Orthanc server");
-        statusBar.SetMessage("Use the key \"f\" to switch full screen");
-        statusBar.SetMessage("Use the key \"i\" to invert contrast");
-        statusBar.SetMessage("Use the key \"m\" to modify the mask");
-        statusBar.SetMessage("Use the key \"n\" to switch between nearest neighbor and bilinear interpolation");
-        statusBar.SetMessage("Use the key \"r\" to rotate objects");
-        statusBar.SetMessage("Use the key \"s\" to resize objects (not applicable to DICOM layers)");
-        statusBar.SetMessage("Use the key \"t\" to move (translate) objects");
-        statusBar.SetMessage("Use the key \"w\" to change windowing");
-        
-        statusBar.SetMessage("Use the key \"ctrl-z\" to undo action");
-        statusBar.SetMessage("Use the key \"ctrl-y\" to redo action");
-
-        if (parameters.count("instance") != 1)
-        {
-          LOG(ERROR) << "The instance ID is missing";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-
-        std::string instance = parameters["instance"].as<std::string>();
-        //int frame = parameters["frame"].as<unsigned int>();
-
-        scene_.reset(new RadiographyScene);
-        
-        RadiographyLayer& dicomLayer = scene_->LoadDicomFrame(*context->GetOrthancApiClient(), instance, 0, false, NULL);
-        //scene_->LoadDicomFrame(instance, frame, false); //.SetPan(200, 0);
-        // = scene_->LoadDicomFrame(context->GetOrthancApiClient(), "61f3143e-96f34791-ad6bbb8d-62559e75-45943e1b", 0, false, NULL);
-
-#if !defined(ORTHANC_ENABLE_WASM) || ORTHANC_ENABLE_WASM != 1
-        Orthanc::HttpClient::ConfigureSsl(true, "/etc/ssl/certs/ca-certificates.crt");
-#endif
-        
-        //scene_->LoadDicomWebFrame(context->GetWebService());
-        
-        std::vector<Orthanc::ImageProcessing::ImagePoint> mask;
-        mask.push_back(Orthanc::ImageProcessing::ImagePoint(1100, 100));
-        mask.push_back(Orthanc::ImageProcessing::ImagePoint(1100, 1000));
-        mask.push_back(Orthanc::ImageProcessing::ImagePoint(2000, 1000));
-        mask.push_back(Orthanc::ImageProcessing::ImagePoint(2200, 150));
-        mask.push_back(Orthanc::ImageProcessing::ImagePoint(1500, 550));
-        maskLayer_ = dynamic_cast<RadiographyMaskLayer*>(&(scene_->LoadMask(mask, dynamic_cast<RadiographyDicomLayer&>(dicomLayer), 128.0f, NULL)));
-        interactor_.SetMaskLayer(maskLayer_);
-
-        {
-          std::unique_ptr<Orthanc::ImageAccessor> renderedTextAlpha(TextRenderer::Render(Orthanc::EmbeddedResources::UBUNTU_FONT, 100,
-                                                                                    "%öÇaA&#"));
-          RadiographyLayer& layer = scene_->LoadAlphaBitmap(renderedTextAlpha.release(), NULL);
-          dynamic_cast<RadiographyAlphaLayer&>(layer).SetForegroundValue(200.0f * 256.0f);
-        }
-
-        {
-          RadiographyTextLayer::RegisterFont("ubuntu", Orthanc::EmbeddedResources::UBUNTU_FONT);
-          RadiographyLayer& layer = scene_->LoadText("Hello\nworld", "ubuntu", 20, 128, NULL, false);
-          layer.SetResizeable(true);
-        }
-        
-        {
-          RadiographyLayer& layer = scene_->LoadTestBlock(100, 50, NULL);
-          layer.SetResizeable(true);
-          layer.SetPan(0, 200);
-        }
-        
-        boost::shared_ptr<RadiographyWidget> widget(new RadiographyWidget(scene_, "main-widget"));
-        widget->SetTransmitMouseOver(true);
-        widget->SetInteractor(interactor_);
-        SetCentralWidget(widget);
-
-        //scene_->SetWindowing(128, 256);
-      }
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SingleVolumeApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,277 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "SampleApplicationBase.h"
-#include "../../../Framework/dev.h"
-#include "../../../Framework/Layers/LineMeasureTracker.h"
-#include "../../../Framework/Layers/CircleMeasureTracker.h"
-
-#include <Core/Toolbox.h>
-#include <Core/Logging.h>
-
-#include <Plugins/Samples/Common/OrthancHttpConnection.h>   // TODO REMOVE
-#include "../../../Framework/Layers/DicomStructureSetSlicer.h"   // TODO REMOVE
-#include "../../../Framework/Toolbox/MessagingToolbox.h"   // TODO REMOVE
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class SingleVolumeApplication : public SampleApplicationBase
-    {
-    private:
-      class Interactor : public VolumeImageInteractor
-      {
-      private:
-        SliceViewerWidget&  widget_;
-        size_t        layer_;
-        
-      protected:
-        virtual void NotifySliceContentChange(const ISlicedVolume& volume,
-                                       const size_t& sliceIndex,
-                                       const Slice& slice)
-        {
-          const OrthancVolumeImage& image = dynamic_cast<const OrthancVolumeImage&>(volume);
-
-          RenderStyle s = widget_.GetLayerStyle(layer_);
-
-          if (image.FitWindowingToRange(s, slice.GetConverter()))
-          {
-            //printf("Windowing: %f => %f\n", s.customWindowCenter_, s.customWindowWidth_);
-            widget_.SetLayerStyle(layer_, s);
-          }
-        }
-
-        virtual void MouseOver(CairoContext& context,
-                               WorldSceneWidget& widget,
-                               const ViewportGeometry& view,
-                               double x,
-                               double y,
-                               IStatusBar* statusBar)
-        {
-          const SliceViewerWidget& w = dynamic_cast<const SliceViewerWidget&>(widget);
-          Vector p = w.GetSlice().MapSliceToWorldCoordinates(x, y);
-          printf("%f %f %f\n", p[0], p[1], p[2]);
-        }
-      
-      public:
-        Interactor(OrthancVolumeImage& volume,
-                   SliceViewerWidget& widget,
-                   VolumeProjection projection,
-                   size_t layer) :
-          VolumeImageInteractor(volume, widget, projection),
-          widget_(widget),
-          layer_(layer)
-        {
-        }
-      };
-
-
-    public:
-      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
-      {
-        boost::program_options::options_description generic("Sample options");
-        generic.add_options()
-          ("series", boost::program_options::value<std::string>(), 
-           "Orthanc ID of the series")
-          ("instance", boost::program_options::value<std::string>(), 
-           "Orthanc ID of a multi-frame instance that describes a 3D volume")
-          ("threads", boost::program_options::value<unsigned int>()->default_value(3), 
-           "Number of download threads")
-          ("projection", boost::program_options::value<std::string>()->default_value("axial"), 
-           "Projection of interest (can be axial, sagittal or coronal)")
-          ("reverse", boost::program_options::value<bool>()->default_value(false), 
-           "Reverse the normal direction of the volume")
-          ;
-
-        options.add(generic);    
-      }
-
-      virtual void Initialize(IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters)
-      {
-        using namespace OrthancStone;
-
-        if (parameters.count("series") > 1 ||
-            parameters.count("instance") > 1)
-        {
-          LOG(ERROR) << "Only one series or instance is allowed";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-
-        if (parameters.count("series") == 1 &&
-            parameters.count("instance") == 1)
-        {
-          LOG(ERROR) << "Cannot specify both a series and an instance";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-
-        std::string series;
-        if (parameters.count("series") == 1)
-        {
-          series = parameters["series"].as<std::string>();
-        }
-        
-        std::string instance;
-        if (parameters.count("instance") == 1)
-        {
-          instance = parameters["instance"].as<std::string>();
-        }
-        
-        if (series.empty() &&
-            instance.empty())
-        {
-          LOG(ERROR) << "The series ID or instance ID is missing";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-
-        //unsigned int threads = parameters["threads"].as<unsigned int>();
-        //bool reverse = parameters["reverse"].as<bool>();
-
-        std::string tmp = parameters["projection"].as<std::string>();
-        Orthanc::Toolbox::ToLowerCase(tmp);
-
-        VolumeProjection projection;
-        if (tmp == "axial")
-        {
-          projection = VolumeProjection_Axial;
-        }
-        else if (tmp == "sagittal")
-        {
-          projection = VolumeProjection_Sagittal;
-        }
-        else if (tmp == "coronal")
-        {
-          projection = VolumeProjection_Coronal;
-        }
-        else
-        {
-          LOG(ERROR) << "Unknown projection: " << tmp;
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-
-        std::unique_ptr<SliceViewerWidget> widget(new SliceViewerWidget);
-
-#if 1
-        std::unique_ptr<OrthancVolumeImage> volume(new OrthancVolumeImage(context.GetWebService(), true));
-        if (series.empty())
-        {
-          volume->ScheduleLoadInstance(instance);
-        }
-        else
-        {
-          volume->ScheduleLoadSeries(series);
-        }
-
-        widget->AddLayer(new VolumeImageMPRSlicer(*volume));
-
-        context_->AddInteractor(new Interactor(*volume, *widget, projection, 0));
-        context_->AddSlicedVolume(volume.release());
-
-        if (1)
-        {
-          RenderStyle s;
-          //s.drawGrid_ = true;
-          s.alpha_ = 1;
-          s.windowing_ = ImageWindowing_Bone;
-          widget->SetLayerStyle(0, s);
-        }
-        else
-        {
-          RenderStyle s;
-          s.alpha_ = 1;
-          s.applyLut_ = true;
-          s.lut_ = Orthanc::EmbeddedResources::COLORMAP_JET;
-          s.interpolation_ = ImageInterpolation_Bilinear;
-          widget->SetLayerStyle(0, s);
-        }
-#else
-        std::unique_ptr<OrthancVolumeImage> ct(new OrthancVolumeImage(context_->GetWebService(), false));
-        //ct->ScheduleLoadSeries("15a6f44a-ac7b88fe-19c462d9-dddd918e-b01550d8");  // 0178023P
-        //ct->ScheduleLoadSeries("dd069910-4f090474-7d2bba07-e5c10783-f9e4fb1d");
-        //ct->ScheduleLoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");  // IBA
-        //ct->ScheduleLoadSeries("03677739-1d8bca40-db1daf59-d74ff548-7f6fc9c0");  // 0522c0001 TCIA
-        ct->ScheduleLoadSeries("295e8a13-dfed1320-ba6aebb2-9a13e20f-1b3eb953");  // Captain
-        
-        std::unique_ptr<OrthancVolumeImage> pet(new OrthancVolumeImage(context_->GetWebService(), true));
-        //pet->ScheduleLoadSeries("48d2997f-8e25cd81-dd715b64-bd79cdcc-e8fcee53");  // 0178023P
-        //pet->ScheduleLoadSeries("aabad2e7-80702b5d-e599d26c-4f13398e-38d58a9e");
-        //pet->ScheduleLoadInstance("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb"); // IBA 1
-        //pet->ScheduleLoadInstance("337876a1-a68a9718-f15abccd-38faafa1-b99b496a"); // IBA 2
-        //pet->ScheduleLoadInstance("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb");  // IBA 3
-        //pet->ScheduleLoadInstance("269f26f4-0c83eeeb-2e67abbd-5467a40f-f1bec90c");  // 0522c0001 TCIA
-        pet->ScheduleLoadInstance("f080888c-0ab7528a-f7d9c28c-84980eb1-ff3b0ae6");  // Captain 1
-        //pet->ScheduleLoadInstance("4f78055b-6499a2c5-1e089290-394acc05-3ec781c1");  // Captain 2
-
-        std::unique_ptr<StructureSetLoader> rtStruct(new StructureSetLoader(context_->GetWebService()));
-        //rtStruct->ScheduleLoadInstance("c2ebc17b-6b3548db-5e5da170-b8ecab71-ea03add3");  // 0178023P
-        //rtStruct->ScheduleLoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");  // IBA
-        //rtStruct->ScheduleLoadInstance("17cd032b-ad92a438-ca05f06a-f9e96668-7e3e9e20");  // 0522c0001 TCIA
-        rtStruct->ScheduleLoadInstance("96c889ab-29fe5c54-dda6e66c-3949e4da-58f90d75");  // Captain
-        
-        widget->AddLayer(new VolumeImageMPRSlicer(*ct));
-        widget->AddLayer(new VolumeImageMPRSlicer(*pet));
-        widget->AddLayer(new DicomStructureSetSlicer(*rtStruct));
-        
-        context_->AddInteractor(new Interactor(*pet, *widget, projection, 1));
-        //context_->AddInteractor(new VolumeImageInteractor(*ct, *widget, projection));
-
-        context_->AddSlicedVolume(ct.release());
-        context_->AddSlicedVolume(pet.release());
-        context_->AddVolumeLoader(rtStruct.release());
-
-        {
-          RenderStyle s;
-          //s.drawGrid_ = true;
-          s.alpha_ = 1;
-          s.windowing_ = ImageWindowing_Bone;
-          widget->SetLayerStyle(0, s);
-        }
-
-        {
-          RenderStyle s;
-          //s.drawGrid_ = true;
-          s.SetColor(255, 0, 0);  // Draw missing PET layer in red
-          s.alpha_ = 0.5;
-          s.applyLut_ = true;
-          s.lut_ = Orthanc::EmbeddedResources::COLORMAP_JET;
-          s.interpolation_ = ImageInterpolation_Bilinear;
-          s.windowing_ = ImageWindowing_Custom;
-          s.customWindowCenter_ = 0;
-          s.customWindowWidth_ = 128;
-          widget->SetLayerStyle(1, s);
-        }
-#endif
-
-
-        statusBar.SetMessage("Use the keys \"b\", \"l\" and \"d\" to change Hounsfield windowing");
-        statusBar.SetMessage("Use the keys \"t\" to track the (X,Y,Z) mouse coordinates");
-        statusBar.SetMessage("Use the keys \"m\" to measure distances");
-        statusBar.SetMessage("Use the keys \"c\" to draw circles");
-
-        widget->SetTransmitMouseOver(true);
-        context_->SetCentralWidget(widget.release());
-      }
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands.yml	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#
-#        1         2         3         4         5         6         7         8
-# 345678901234567890123456789012345678901234567890123456789012345678901234567890
-#
-rootName: StoneSampleCommands
-
-# +---------------------------------+
-# | Messages from TypeScript to C++ |
-# +---------------------------------+
-
-enum Tool:
-  - LineMeasure
-  - CircleMeasure
-  - Crop
-  - Windowing
-  - Zoom
-  - Pan
-  - Move
-  - Rotate
-  - Resize
-  - Mask
-
-struct SelectTool:
-  __handler: cpp
-  tool: Tool
-
-enum ActionType:
-  - UndoCrop
-  - Rotate
-  - Invert
-
-struct Action:
-  __handler: cpp
-  type: ActionType
-
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generate.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-import sys
-import os
-
-# add the generation script location to the search paths
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'Resources', 'CodeGeneration'))
-
-# import the code generation tooling script
-import stonegentool
-
-schemaFile = os.path.join(os.path.dirname(__file__), 'StoneSampleCommands.yml')
-outDir = os.path.dirname(__file__)
-
-# ignition!
-stonegentool.Process(schemaFile, outDir)
-
-
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generated.hpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,703 +0,0 @@
-/*
-         1         2         3         4         5         6         7
-12345678901234567890123456789012345678901234567890123456789012345678901234567890
-
-Generated on 2019-03-18 12:07:42.696093 by stonegentool
-
-*/
-#pragma once
-
-#include <exception>
-#include <iostream>
-#include <string>
-#include <sstream>
-#include <assert.h>
-#include <memory>
-#include <json/json.h>
-
-//#define STONEGEN_NO_CPP11 1
-
-#ifdef STONEGEN_NO_CPP11
-#define StoneSmartPtr std::unique_ptr
-#else 
-#define StoneSmartPtr std::unique_ptr
-#endif 
-
-namespace StoneSampleCommands
-{
-  /** Throws in case of problem */
-  inline void _StoneDeserializeValue(int32_t& destValue, const Json::Value& jsonValue)
-  {
-    destValue = jsonValue.asInt();
-  }
-
-  inline Json::Value _StoneSerializeValue(int32_t value)
-  {
-    Json::Value result(value);
-    return result;
-  }
-
-  inline void _StoneDeserializeValue(Json::Value& destValue, const Json::Value& jsonValue)
-  {
-    destValue = jsonValue;
-  }
-
-  inline Json::Value _StoneSerializeValue(Json::Value value)
-  {
-    return value;
-  }
-
-  /** Throws in case of problem */
-  inline void _StoneDeserializeValue(double& destValue, const Json::Value& jsonValue)
-  {
-    destValue = jsonValue.asDouble();
-  }
-
-  inline Json::Value _StoneSerializeValue(double value)
-  {
-    Json::Value result(value);
-    return result;
-  }
-
-  /** Throws in case of problem */
-  inline void _StoneDeserializeValue(bool& destValue, const Json::Value& jsonValue)
-  {
-    destValue = jsonValue.asBool();
-  }
-
-  inline Json::Value _StoneSerializeValue(bool value)
-  {
-    Json::Value result(value);
-    return result;
-  }
-
-  /** Throws in case of problem */
-  inline void _StoneDeserializeValue(
-       std::string& destValue
-     , const Json::Value& jsonValue)
-  {
-    destValue = jsonValue.asString();
-  }
-
-  inline Json::Value _StoneSerializeValue(const std::string& value)
-  {
-    // the following is better than 
-    Json::Value result(value.data(),value.data()+value.size());
-    return result;
-  }
-
-  inline std::string MakeIndent(size_t indent)
-  {
-    char* txt = reinterpret_cast<char*>(malloc(indent+1)); // NO EXCEPTION BELOW!!!!!!!!!!!!
-    for(size_t i = 0; i < indent; ++i)
-      txt[i] = ' ';
-    txt[indent] = 0;
-    std::string retVal(txt);
-    free(txt); // NO EXCEPTION ABOVE !!!!!!!!!!
-    return retVal;
-  }
-
-  // generic dumper
-  template<typename T>
-  std::ostream& StoneDumpValue(std::ostream& out, const T& value, size_t indent)
-  {
-    out << MakeIndent(indent) << value;
-    return out;
-  }
-
-  // string dumper
-  inline std::ostream& StoneDumpValue(std::ostream& out, const std::string& value, size_t indent)
-  {
-    out << MakeIndent(indent) << "\"" << value  << "\"";
-    return out;
-  }
-
-  /** Throws in case of problem */
-  template<typename T>
-  void _StoneDeserializeValue(
-    std::map<std::string, T>& destValue, const Json::Value& jsonValue)
-  {
-    destValue.clear();
-    for (
-      Json::Value::const_iterator itr = jsonValue.begin();
-      itr != jsonValue.end();
-      itr++)
-    {
-      std::string key;
-      _StoneDeserializeValue(key, itr.key());
-
-      T innerDestValue;
-      _StoneDeserializeValue(innerDestValue, *itr);
-
-      destValue[key] = innerDestValue;
-    }
-  }
-
-  template<typename T>
-  Json::Value _StoneSerializeValue(const std::map<std::string,T>& value)
-  {
-    Json::Value result(Json::objectValue);
-
-    for (typename std::map<std::string, T>::const_iterator it = value.cbegin();
-      it != value.cend(); ++it)
-    {
-      // it->first it->second
-      result[it->first] = _StoneSerializeValue(it->second);
-    }
-    return result;
-  }
-
-  template<typename T>
-  std::ostream& StoneDumpValue(std::ostream& out, const std::map<std::string,T>& value, size_t indent)
-  {
-    out << MakeIndent(indent) << "{\n";
-    for (typename std::map<std::string, T>::const_iterator it = value.cbegin();
-      it != value.cend(); ++it)
-    {
-      out << MakeIndent(indent+2) << "\"" << it->first << "\" : ";
-      StoneDumpValue(out, it->second, indent+2);
-    }
-    out << MakeIndent(indent) << "}\n";
-    return out;
-  }
-
-  /** Throws in case of problem */
-  template<typename T>
-  void _StoneDeserializeValue(
-    std::vector<T>& destValue, const Json::Value& jsonValue)
-  {
-    destValue.clear();
-    destValue.reserve(jsonValue.size());
-    for (Json::Value::ArrayIndex i = 0; i != jsonValue.size(); i++)
-    {
-      T innerDestValue;
-      _StoneDeserializeValue(innerDestValue, jsonValue[i]);
-      destValue.push_back(innerDestValue);
-    }
-  }
-
-  template<typename T>
-  Json::Value _StoneSerializeValue(const std::vector<T>& value)
-  {
-    Json::Value result(Json::arrayValue);
-    for (size_t i = 0; i < value.size(); ++i)
-    {
-      result.append(_StoneSerializeValue(value[i]));
-    }
-    return result;
-  }
-
-  template<typename T>
-  std::ostream& StoneDumpValue(std::ostream& out, const std::vector<T>& value, size_t indent)
-  {
-    out << MakeIndent(indent) << "[\n";
-    for (size_t i = 0; i < value.size(); ++i)
-    {
-      StoneDumpValue(out, value[i], indent+2);
-    }
-    out << MakeIndent(indent) << "]\n";
-    return out;
-  }
-
-  inline void StoneCheckSerializedValueTypeGeneric(const Json::Value& value)
-  {
-    if ((!value.isMember("type")) || (!value["type"].isString()))
-    {
-      std::stringstream ss;
-      ss << "Cannot deserialize value ('type' key invalid)";
-      throw std::runtime_error(ss.str());
-    }
-  }
-
-  inline void StoneCheckSerializedValueType(
-    const Json::Value& value, std::string typeStr)
-  {
-    StoneCheckSerializedValueTypeGeneric(value);
-
-    std::string actTypeStr = value["type"].asString();
-    if (actTypeStr != typeStr)
-    {
-      std::stringstream ss;
-      ss << "Cannot deserialize type" << actTypeStr
-        << "into " << typeStr;
-      throw std::runtime_error(ss.str());
-    }
-  }
-
-  // end of generic methods
-
-// end of generic methods
-
-  enum Tool {
-    Tool_LineMeasure,
-    Tool_CircleMeasure,
-    Tool_Crop,
-    Tool_Windowing,
-    Tool_Zoom,
-    Tool_Pan,
-    Tool_Move,
-    Tool_Rotate,
-    Tool_Resize,
-    Tool_Mask,
-  };
-
-  inline std::string ToString(const Tool& value)
-  {
-    if( value == Tool_LineMeasure)
-    {
-      return std::string("LineMeasure");
-    }
-    if( value == Tool_CircleMeasure)
-    {
-      return std::string("CircleMeasure");
-    }
-    if( value == Tool_Crop)
-    {
-      return std::string("Crop");
-    }
-    if( value == Tool_Windowing)
-    {
-      return std::string("Windowing");
-    }
-    if( value == Tool_Zoom)
-    {
-      return std::string("Zoom");
-    }
-    if( value == Tool_Pan)
-    {
-      return std::string("Pan");
-    }
-    if( value == Tool_Move)
-    {
-      return std::string("Move");
-    }
-    if( value == Tool_Rotate)
-    {
-      return std::string("Rotate");
-    }
-    if( value == Tool_Resize)
-    {
-      return std::string("Resize");
-    }
-    if( value == Tool_Mask)
-    {
-      return std::string("Mask");
-    }
-    std::stringstream ss;
-    ss << "Value \"" << value << "\" cannot be converted to Tool. Possible values are: "
-        << " LineMeasure = " << static_cast<int64_t>(Tool_LineMeasure)  << ", " 
-        << " CircleMeasure = " << static_cast<int64_t>(Tool_CircleMeasure)  << ", " 
-        << " Crop = " << static_cast<int64_t>(Tool_Crop)  << ", " 
-        << " Windowing = " << static_cast<int64_t>(Tool_Windowing)  << ", " 
-        << " Zoom = " << static_cast<int64_t>(Tool_Zoom)  << ", " 
-        << " Pan = " << static_cast<int64_t>(Tool_Pan)  << ", " 
-        << " Move = " << static_cast<int64_t>(Tool_Move)  << ", " 
-        << " Rotate = " << static_cast<int64_t>(Tool_Rotate)  << ", " 
-        << " Resize = " << static_cast<int64_t>(Tool_Resize)  << ", " 
-        << " Mask = " << static_cast<int64_t>(Tool_Mask)  << ", " 
-        << std::endl;
-    std::string msg = ss.str();
-    throw std::runtime_error(msg);
-  }
-
-  inline void FromString(Tool& value, std::string strValue)
-  {
-    if( strValue == std::string("LineMeasure") )
-    {
-      value = Tool_LineMeasure;
-      return;
-    }
-    if( strValue == std::string("CircleMeasure") )
-    {
-      value = Tool_CircleMeasure;
-      return;
-    }
-    if( strValue == std::string("Crop") )
-    {
-      value = Tool_Crop;
-      return;
-    }
-    if( strValue == std::string("Windowing") )
-    {
-      value = Tool_Windowing;
-      return;
-    }
-    if( strValue == std::string("Zoom") )
-    {
-      value = Tool_Zoom;
-      return;
-    }
-    if( strValue == std::string("Pan") )
-    {
-      value = Tool_Pan;
-      return;
-    }
-    if( strValue == std::string("Move") )
-    {
-      value = Tool_Move;
-      return;
-    }
-    if( strValue == std::string("Rotate") )
-    {
-      value = Tool_Rotate;
-      return;
-    }
-    if( strValue == std::string("Resize") )
-    {
-      value = Tool_Resize;
-      return;
-    }
-    if( strValue == std::string("Mask") )
-    {
-      value = Tool_Mask;
-      return;
-    }
-
-    std::stringstream ss;
-    ss << "String \"" << strValue << "\" cannot be converted to Tool. Possible values are: LineMeasure CircleMeasure Crop Windowing Zoom Pan Move Rotate Resize Mask ";
-    std::string msg = ss.str();
-    throw std::runtime_error(msg);
-  }
-
-
-  inline void _StoneDeserializeValue(
-    Tool& destValue, const Json::Value& jsonValue)
-  {
-    FromString(destValue, jsonValue.asString());
-  }
-
-  inline Json::Value _StoneSerializeValue(const Tool& value)
-  {
-    std::string strValue = ToString(value);
-    return Json::Value(strValue);
-  }
-
-  inline std::ostream& StoneDumpValue(std::ostream& out, const Tool& value, size_t indent = 0)
-  {
-    if( value == Tool_LineMeasure)
-    {
-      out << MakeIndent(indent) << "LineMeasure" << std::endl;
-    }
-    if( value == Tool_CircleMeasure)
-    {
-      out << MakeIndent(indent) << "CircleMeasure" << std::endl;
-    }
-    if( value == Tool_Crop)
-    {
-      out << MakeIndent(indent) << "Crop" << std::endl;
-    }
-    if( value == Tool_Windowing)
-    {
-      out << MakeIndent(indent) << "Windowing" << std::endl;
-    }
-    if( value == Tool_Zoom)
-    {
-      out << MakeIndent(indent) << "Zoom" << std::endl;
-    }
-    if( value == Tool_Pan)
-    {
-      out << MakeIndent(indent) << "Pan" << std::endl;
-    }
-    if( value == Tool_Move)
-    {
-      out << MakeIndent(indent) << "Move" << std::endl;
-    }
-    if( value == Tool_Rotate)
-    {
-      out << MakeIndent(indent) << "Rotate" << std::endl;
-    }
-    if( value == Tool_Resize)
-    {
-      out << MakeIndent(indent) << "Resize" << std::endl;
-    }
-    if( value == Tool_Mask)
-    {
-      out << MakeIndent(indent) << "Mask" << std::endl;
-    }
-    return out;
-  }
-
-
-  enum ActionType {
-    ActionType_UndoCrop,
-    ActionType_Rotate,
-    ActionType_Invert,
-  };
-
-  inline std::string ToString(const ActionType& value)
-  {
-    if( value == ActionType_UndoCrop)
-    {
-      return std::string("UndoCrop");
-    }
-    if( value == ActionType_Rotate)
-    {
-      return std::string("Rotate");
-    }
-    if( value == ActionType_Invert)
-    {
-      return std::string("Invert");
-    }
-    std::stringstream ss;
-    ss << "Value \"" << value << "\" cannot be converted to ActionType. Possible values are: "
-        << " UndoCrop = " << static_cast<int64_t>(ActionType_UndoCrop)  << ", " 
-        << " Rotate = " << static_cast<int64_t>(ActionType_Rotate)  << ", " 
-        << " Invert = " << static_cast<int64_t>(ActionType_Invert)  << ", " 
-        << std::endl;
-    std::string msg = ss.str();
-    throw std::runtime_error(msg);
-  }
-
-  inline void FromString(ActionType& value, std::string strValue)
-  {
-    if( strValue == std::string("UndoCrop") )
-    {
-      value = ActionType_UndoCrop;
-      return;
-    }
-    if( strValue == std::string("Rotate") )
-    {
-      value = ActionType_Rotate;
-      return;
-    }
-    if( strValue == std::string("Invert") )
-    {
-      value = ActionType_Invert;
-      return;
-    }
-
-    std::stringstream ss;
-    ss << "String \"" << strValue << "\" cannot be converted to ActionType. Possible values are: UndoCrop Rotate Invert ";
-    std::string msg = ss.str();
-    throw std::runtime_error(msg);
-  }
-
-
-  inline void _StoneDeserializeValue(
-    ActionType& destValue, const Json::Value& jsonValue)
-  {
-    FromString(destValue, jsonValue.asString());
-  }
-
-  inline Json::Value _StoneSerializeValue(const ActionType& value)
-  {
-    std::string strValue = ToString(value);
-    return Json::Value(strValue);
-  }
-
-  inline std::ostream& StoneDumpValue(std::ostream& out, const ActionType& value, size_t indent = 0)
-  {
-    if( value == ActionType_UndoCrop)
-    {
-      out << MakeIndent(indent) << "UndoCrop" << std::endl;
-    }
-    if( value == ActionType_Rotate)
-    {
-      out << MakeIndent(indent) << "Rotate" << std::endl;
-    }
-    if( value == ActionType_Invert)
-    {
-      out << MakeIndent(indent) << "Invert" << std::endl;
-    }
-    return out;
-  }
-
-
-
-#ifdef _MSC_VER
-#pragma region SelectTool
-#endif //_MSC_VER
-
-  struct SelectTool
-  {
-    Tool tool;
-
-    SelectTool(Tool tool = Tool())
-    {
-      this->tool = tool;
-    }
-  };
-
-  inline void _StoneDeserializeValue(SelectTool& destValue, const Json::Value& value)
-  {
-    _StoneDeserializeValue(destValue.tool, value["tool"]);
-    }
-
-  inline Json::Value _StoneSerializeValue(const SelectTool& value)
-  {
-    Json::Value result(Json::objectValue);
-    result["tool"] = _StoneSerializeValue(value.tool);
-
-    return result;
-  }
-
-  inline std::ostream& StoneDumpValue(std::ostream& out, const SelectTool& value, size_t indent = 0)
-  {
-    out << MakeIndent(indent) << "{\n";
-    out << MakeIndent(indent) << "tool:\n";
-    StoneDumpValue(out, value.tool,indent+2);
-    out << "\n";
-
-    out << MakeIndent(indent) << "}\n";
-    return out;
-  }
-
-  inline void StoneDeserialize(SelectTool& destValue, const Json::Value& value)
-  {
-    StoneCheckSerializedValueType(value, "StoneSampleCommands.SelectTool");
-    _StoneDeserializeValue(destValue, value["value"]);
-  }
-
-  inline Json::Value StoneSerializeToJson(const SelectTool& value)
-  {
-    Json::Value result(Json::objectValue);
-    result["type"] = "StoneSampleCommands.SelectTool";
-    result["value"] = _StoneSerializeValue(value);
-    return result;
-  }
-
-  inline std::string StoneSerialize(const SelectTool& value)
-  {
-    Json::Value resultJson = StoneSerializeToJson(value);
-    std::string resultStr = resultJson.toStyledString();
-    return resultStr;
-  }
-
-#ifdef _MSC_VER
-#pragma endregion SelectTool
-#endif //_MSC_VER
-
-#ifdef _MSC_VER
-#pragma region Action
-#endif //_MSC_VER
-
-  struct Action
-  {
-    ActionType type;
-
-    Action(ActionType type = ActionType())
-    {
-      this->type = type;
-    }
-  };
-
-  inline void _StoneDeserializeValue(Action& destValue, const Json::Value& value)
-  {
-    _StoneDeserializeValue(destValue.type, value["type"]);
-    }
-
-  inline Json::Value _StoneSerializeValue(const Action& value)
-  {
-    Json::Value result(Json::objectValue);
-    result["type"] = _StoneSerializeValue(value.type);
-
-    return result;
-  }
-
-  inline std::ostream& StoneDumpValue(std::ostream& out, const Action& value, size_t indent = 0)
-  {
-    out << MakeIndent(indent) << "{\n";
-    out << MakeIndent(indent) << "type:\n";
-    StoneDumpValue(out, value.type,indent+2);
-    out << "\n";
-
-    out << MakeIndent(indent) << "}\n";
-    return out;
-  }
-
-  inline void StoneDeserialize(Action& destValue, const Json::Value& value)
-  {
-    StoneCheckSerializedValueType(value, "StoneSampleCommands.Action");
-    _StoneDeserializeValue(destValue, value["value"]);
-  }
-
-  inline Json::Value StoneSerializeToJson(const Action& value)
-  {
-    Json::Value result(Json::objectValue);
-    result["type"] = "StoneSampleCommands.Action";
-    result["value"] = _StoneSerializeValue(value);
-    return result;
-  }
-
-  inline std::string StoneSerialize(const Action& value)
-  {
-    Json::Value resultJson = StoneSerializeToJson(value);
-    std::string resultStr = resultJson.toStyledString();
-    return resultStr;
-  }
-
-#ifdef _MSC_VER
-#pragma endregion Action
-#endif //_MSC_VER
-
-#ifdef _MSC_VER
-#pragma region Dispatching code
-#endif //_MSC_VER
-
-  class IHandler
-  {
-  public:
-    virtual bool Handle(const SelectTool& value) = 0;
-    virtual bool Handle(const Action& value) = 0;
-  };
-
-  /** Service function for StoneDispatchToHandler */
-  inline bool StoneDispatchJsonToHandler(
-    const Json::Value& jsonValue, IHandler* handler)
-  {
-    StoneCheckSerializedValueTypeGeneric(jsonValue);
-    std::string type = jsonValue["type"].asString();
-    if (type == "")
-    {
-      // this should never ever happen
-      throw std::runtime_error("Caught empty type while dispatching");
-    }
-    else if (type == "StoneSampleCommands.SelectTool")
-    {
-      SelectTool value;
-      _StoneDeserializeValue(value, jsonValue["value"]);
-      return handler->Handle(value);
-    }
-    else if (type == "StoneSampleCommands.Action")
-    {
-      Action value;
-      _StoneDeserializeValue(value, jsonValue["value"]);
-      return handler->Handle(value);
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-  /** Takes a serialized type and passes this to the handler */
-  inline bool StoneDispatchToHandler(std::string strValue, IHandler* handler)
-  {
-    Json::Value readValue;
-
-    Json::CharReaderBuilder builder;
-    Json::CharReader* reader = builder.newCharReader();
-
-    StoneSmartPtr<Json::CharReader> ptr(reader);
-
-    std::string errors;
-
-    bool ok = reader->parse(
-      strValue.c_str(),
-      strValue.c_str() + strValue.size(),
-      &readValue,
-      &errors
-    );
-    if (!ok)
-    {
-      std::stringstream ss;
-      ss << "Jsoncpp parsing error: " << errors;
-      throw std::runtime_error(ss.str());
-    }
-    return StoneDispatchJsonToHandler(readValue, handler);
-  }
-
-#ifdef _MSC_VER
-#pragma endregion Dispatching code
-#endif //_MSC_VER
-}
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/StoneSampleCommands_generated.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,333 +0,0 @@
-/*
-         1         2         3         4         5         6         7
-12345678901234567890123456789012345678901234567890123456789012345678901234567890
-
-Generated on 2019-03-18 12:07:42.696093 by stonegentool
-
-*/
-
-function StoneCheckSerializedValueType(value: any, typeStr: string)
-{
-  StoneCheckSerializedValueTypeGeneric(value);
-
-  if (value['type'] != typeStr)
-  {
-    throw new Error(
-      `Cannot deserialize type ${value['type']} into ${typeStr}`);
-  }
-}
-
-function isString(val: any) :boolean
-{
-  return ((typeof val === 'string') || (val instanceof String));
-}
-
-function StoneCheckSerializedValueTypeGeneric(value: any)
-{
-  // console.//log("+-------------------------------------------------+");
-  // console.//log("|            StoneCheckSerializedValueTypeGeneric |");
-  // console.//log("+-------------------------------------------------+");
-  // console.//log("value = ");
-  // console.//log(value);
-  if ( (!('type' in value)) || (!isString(value.type)) )
-  {
-    throw new Error(
-      "Cannot deserialize value ('type' key invalid)");
-  }
-}
-
-// end of generic methods
-
-export enum Tool {
-  LineMeasure = "LineMeasure",
-  CircleMeasure = "CircleMeasure",
-  Crop = "Crop",
-  Windowing = "Windowing",
-  Zoom = "Zoom",
-  Pan = "Pan",
-  Move = "Move",
-  Rotate = "Rotate",
-  Resize = "Resize",
-  Mask = "Mask"
-};
-
-export function Tool_FromString(strValue:string) : Tool
-{
-  if( strValue == "LineMeasure" )
-  {
-    return Tool.LineMeasure;
-  }
-  if( strValue == "CircleMeasure" )
-  {
-    return Tool.CircleMeasure;
-  }
-  if( strValue == "Crop" )
-  {
-    return Tool.Crop;
-  }
-  if( strValue == "Windowing" )
-  {
-    return Tool.Windowing;
-  }
-  if( strValue == "Zoom" )
-  {
-    return Tool.Zoom;
-  }
-  if( strValue == "Pan" )
-  {
-    return Tool.Pan;
-  }
-  if( strValue == "Move" )
-  {
-    return Tool.Move;
-  }
-  if( strValue == "Rotate" )
-  {
-    return Tool.Rotate;
-  }
-  if( strValue == "Resize" )
-  {
-    return Tool.Resize;
-  }
-  if( strValue == "Mask" )
-  {
-    return Tool.Mask;
-  }
-
-  let msg : string =  `String ${strValue} cannot be converted to Tool. Possible values are: LineMeasure, CircleMeasure, Crop, Windowing, Zoom, Pan, Move, Rotate, Resize, Mask`;
-  throw new Error(msg);
-}
-
-export function Tool_ToString(value:Tool) : string
-{
-  if( value == Tool.LineMeasure )
-  {
-    return "LineMeasure";
-  }
-  if( value == Tool.CircleMeasure )
-  {
-    return "CircleMeasure";
-  }
-  if( value == Tool.Crop )
-  {
-    return "Crop";
-  }
-  if( value == Tool.Windowing )
-  {
-    return "Windowing";
-  }
-  if( value == Tool.Zoom )
-  {
-    return "Zoom";
-  }
-  if( value == Tool.Pan )
-  {
-    return "Pan";
-  }
-  if( value == Tool.Move )
-  {
-    return "Move";
-  }
-  if( value == Tool.Rotate )
-  {
-    return "Rotate";
-  }
-  if( value == Tool.Resize )
-  {
-    return "Resize";
-  }
-  if( value == Tool.Mask )
-  {
-    return "Mask";
-  }
-
-  let msg : string = `Value ${value} cannot be converted to Tool. Possible values are: `;
-  {
-    let _LineMeasure_enumValue : string = Tool.LineMeasure; // enums are strings in stonecodegen, so this will work.
-    let msg_LineMeasure : string = `LineMeasure (${_LineMeasure_enumValue}), `;
-    msg = msg + msg_LineMeasure;
-  }
-  {
-    let _CircleMeasure_enumValue : string = Tool.CircleMeasure; // enums are strings in stonecodegen, so this will work.
-    let msg_CircleMeasure : string = `CircleMeasure (${_CircleMeasure_enumValue}), `;
-    msg = msg + msg_CircleMeasure;
-  }
-  {
-    let _Crop_enumValue : string = Tool.Crop; // enums are strings in stonecodegen, so this will work.
-    let msg_Crop : string = `Crop (${_Crop_enumValue}), `;
-    msg = msg + msg_Crop;
-  }
-  {
-    let _Windowing_enumValue : string = Tool.Windowing; // enums are strings in stonecodegen, so this will work.
-    let msg_Windowing : string = `Windowing (${_Windowing_enumValue}), `;
-    msg = msg + msg_Windowing;
-  }
-  {
-    let _Zoom_enumValue : string = Tool.Zoom; // enums are strings in stonecodegen, so this will work.
-    let msg_Zoom : string = `Zoom (${_Zoom_enumValue}), `;
-    msg = msg + msg_Zoom;
-  }
-  {
-    let _Pan_enumValue : string = Tool.Pan; // enums are strings in stonecodegen, so this will work.
-    let msg_Pan : string = `Pan (${_Pan_enumValue}), `;
-    msg = msg + msg_Pan;
-  }
-  {
-    let _Move_enumValue : string = Tool.Move; // enums are strings in stonecodegen, so this will work.
-    let msg_Move : string = `Move (${_Move_enumValue}), `;
-    msg = msg + msg_Move;
-  }
-  {
-    let _Rotate_enumValue : string = Tool.Rotate; // enums are strings in stonecodegen, so this will work.
-    let msg_Rotate : string = `Rotate (${_Rotate_enumValue}), `;
-    msg = msg + msg_Rotate;
-  }
-  {
-    let _Resize_enumValue : string = Tool.Resize; // enums are strings in stonecodegen, so this will work.
-    let msg_Resize : string = `Resize (${_Resize_enumValue}), `;
-    msg = msg + msg_Resize;
-  }
-  {
-    let _Mask_enumValue : string = Tool.Mask; // enums are strings in stonecodegen, so this will work.
-    let msg_Mask : string = `Mask (${_Mask_enumValue})`;
-    msg = msg + msg_Mask;
-  }
-  throw new Error(msg);
-}
-
-export enum ActionType {
-  UndoCrop = "UndoCrop",
-  Rotate = "Rotate",
-  Invert = "Invert"
-};
-
-export function ActionType_FromString(strValue:string) : ActionType
-{
-  if( strValue == "UndoCrop" )
-  {
-    return ActionType.UndoCrop;
-  }
-  if( strValue == "Rotate" )
-  {
-    return ActionType.Rotate;
-  }
-  if( strValue == "Invert" )
-  {
-    return ActionType.Invert;
-  }
-
-  let msg : string =  `String ${strValue} cannot be converted to ActionType. Possible values are: UndoCrop, Rotate, Invert`;
-  throw new Error(msg);
-}
-
-export function ActionType_ToString(value:ActionType) : string
-{
-  if( value == ActionType.UndoCrop )
-  {
-    return "UndoCrop";
-  }
-  if( value == ActionType.Rotate )
-  {
-    return "Rotate";
-  }
-  if( value == ActionType.Invert )
-  {
-    return "Invert";
-  }
-
-  let msg : string = `Value ${value} cannot be converted to ActionType. Possible values are: `;
-  {
-    let _UndoCrop_enumValue : string = ActionType.UndoCrop; // enums are strings in stonecodegen, so this will work.
-    let msg_UndoCrop : string = `UndoCrop (${_UndoCrop_enumValue}), `;
-    msg = msg + msg_UndoCrop;
-  }
-  {
-    let _Rotate_enumValue : string = ActionType.Rotate; // enums are strings in stonecodegen, so this will work.
-    let msg_Rotate : string = `Rotate (${_Rotate_enumValue}), `;
-    msg = msg + msg_Rotate;
-  }
-  {
-    let _Invert_enumValue : string = ActionType.Invert; // enums are strings in stonecodegen, so this will work.
-    let msg_Invert : string = `Invert (${_Invert_enumValue})`;
-    msg = msg + msg_Invert;
-  }
-  throw new Error(msg);
-}
-
-
-
-export class SelectTool {
-  tool:Tool;
-
-  constructor() {
-  }
-
-  public StoneSerialize(): string {
-    let container: object = {};
-    container['type'] = 'StoneSampleCommands.SelectTool';
-    container['value'] = this;
-    return JSON.stringify(container);
-  }
-
-  public static StoneDeserialize(valueStr: string) : SelectTool
-  {
-    let value: any = JSON.parse(valueStr);
-    StoneCheckSerializedValueType(value, 'StoneSampleCommands.SelectTool');
-    let result: SelectTool = value['value'] as SelectTool;
-    return result;
-  }
-}
-export class Action {
-  type:ActionType;
-
-  constructor() {
-  }
-
-  public StoneSerialize(): string {
-    let container: object = {};
-    container['type'] = 'StoneSampleCommands.Action';
-    container['value'] = this;
-    return JSON.stringify(container);
-  }
-
-  public static StoneDeserialize(valueStr: string) : Action
-  {
-    let value: any = JSON.parse(valueStr);
-    StoneCheckSerializedValueType(value, 'StoneSampleCommands.Action');
-    let result: Action = value['value'] as Action;
-    return result;
-  }
-}
-
-export interface IHandler {
-};
-
-/** Service function for StoneDispatchToHandler */
-export function StoneDispatchJsonToHandler(
-  jsonValue: any, handler: IHandler): boolean
-{
-  StoneCheckSerializedValueTypeGeneric(jsonValue);
-  let type: string = jsonValue["type"];
-  if (type == "")
-  {
-    // this should never ever happen
-    throw new Error("Caught empty type while dispatching");
-  }
-  else
-  {
-    return false;
-  }
-}
-
-/** Takes a serialized type and passes this to the handler */
-export function StoneDispatchToHandler(
-  strValue: string, handler: IHandler): boolean
-{
-  // console.//log("+------------------------------------------------+");
-  // console.//log("|            StoneDispatchToHandler              |");
-  // console.//log("+------------------------------------------------+");
-  // console.//log("strValue = ");
-  // console.//log(strValue);
-  let jsonValue: any = JSON.parse(strValue)
-  return StoneDispatchJsonToHandler(jsonValue, handler);
-}
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/SynchronizedSeriesApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "SampleInteractor.h"
-
-#include "../../../Framework/Toolbox/OrthancSeriesLoader.h"
-#include "../../../Framework/Layers/SeriesFrameRendererFactory.h"
-#include "../../../Framework/Layers/ReferenceLineFactory.h"
-#include "../../../Framework/Widgets/LayoutWidget.h"
-
-#include <Core/Logging.h>
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class SynchronizedSeriesApplication : public SampleApplicationBase
-    {
-    private:   
-      LayeredSceneWidget* CreateSeriesWidget(BasicApplicationContext& context,
-                                             const std::string& series)
-      {
-        std::unique_ptr<ISeriesLoader> loader
-          (new OrthancSeriesLoader(context.GetWebService().GetConnection(), series));
-
-        std::unique_ptr<SampleInteractor> interactor(new SampleInteractor(*loader, false));
-
-        std::unique_ptr<LayeredSceneWidget> widget(new LayeredSceneWidget);
-        widget->AddLayer(new SeriesFrameRendererFactory(loader.release(), false));
-        widget->SetSlice(interactor->GetCursor().GetCurrentSlice());
-        widget->SetInteractor(*interactor);
-
-        context.AddInteractor(interactor.release());
-
-        return widget.release();
-      }
-
-    public:
-      virtual void DeclareCommandLineOptions(boost::program_options::options_description& options)
-      {
-        boost::program_options::options_description generic("Sample options");
-        generic.add_options()
-          ("a", boost::program_options::value<std::string>(), 
-           "Orthanc ID of the 1st series")
-          ("b", boost::program_options::value<std::string>(), 
-           "Orthanc ID of the 2nd series")
-          ("c", boost::program_options::value<std::string>(), 
-           "Orthanc ID of the 3rd series")
-          ;
-
-        options.add(generic);    
-      }
-
-      virtual void Initialize(BasicApplicationContext& context,
-                              IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters)
-      {
-        if (parameters.count("a") != 1 ||
-            parameters.count("b") != 1 ||
-            parameters.count("c") != 1)
-        {
-          LOG(ERROR) << "At least one of the three series IDs is missing";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-        }
-
-        std::unique_ptr<LayeredSceneWidget> a(CreateSeriesWidget(context, parameters["a"].as<std::string>()));
-        std::unique_ptr<LayeredSceneWidget> b(CreateSeriesWidget(context, parameters["b"].as<std::string>()));
-        std::unique_ptr<LayeredSceneWidget> c(CreateSeriesWidget(context, parameters["c"].as<std::string>()));
-
-        ReferenceLineFactory::Configure(*a, *b);
-        ReferenceLineFactory::Configure(*a, *c);
-        ReferenceLineFactory::Configure(*b, *c);
-
-        std::unique_ptr<LayoutWidget> layout(new LayoutWidget);
-        layout->SetPadding(5);
-        layout->AddWidget(a.release());
-
-        std::unique_ptr<LayoutWidget> layoutB(new LayoutWidget);
-        layoutB->SetVertical();
-        layoutB->SetPadding(5);
-        layoutB->AddWidget(b.release());
-        layoutB->AddWidget(c.release());
-        layout->AddWidget(layoutB.release());
-
-        context.SetCentralWidget(layout.release());        
-      }
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/TestPatternApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "SampleApplicationBase.h"
-
-#include "../../../Framework/Widgets/TestCairoWidget.h"
-#include "../../../Framework/Widgets/TestWorldSceneWidget.h"
-#include "../../../Framework/Widgets/LayoutWidget.h"
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class TestPatternApplication : public SampleApplicationBase
-    {
-    public:
-      virtual void DeclareStartupOptions(boost::program_options::options_description& options)
-      {
-        boost::program_options::options_description generic("Sample options");
-        generic.add_options()
-          ("animate", boost::program_options::value<bool>()->default_value(true), "Animate the test pattern")
-          ;
-
-        options.add(generic);    
-      }
-
-      virtual void Initialize(IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters)
-      {
-        using namespace OrthancStone;
-
-        std::unique_ptr<LayoutWidget> layout(new LayoutWidget);
-        layout->SetPadding(10);
-        layout->SetBackgroundCleared(true);
-        layout->AddWidget(new TestCairoWidget(parameters["animate"].as<bool>()));
-        layout->AddWidget(new TestWorldSceneWidget(parameters["animate"].as<bool>()));
-
-        context_->SetCentralWidget(layout.release());
-        context_->SetUpdateDelay(25);  // If animation, update the content each 25ms
-      }
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/index.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<!doctype html>
-
-<html lang="us">
-  <head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-    <!-- Disable pinch zoom on mobile devices -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <meta name="HandheldFriendly" content="true" />
-
-    <title>Wasm Samples</title>
-
-<body>
-    <ul>
-      <li><a href="simple-viewer/simple-viewer.html">Simple Viewer Project (you may add ?studyId=XXX in the url)</a></li>
-      <li><a href="single-frame.html?instance=XXX">Single frame application (you must replace XXX by a valid instance id in the url)</a></li>
-      <li><a href="single-frame-editor.html?instance=XXX">Single frame editor application (you must replace XXX by a valid instance id in the url)</a></li>
-      <li><a href="simple-viewer-single-file.html">Simple Viewer Single file (to be replaced by other samples)</a></li>
-    </ul>
-</body>
-
-</html>
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/samples-styles.css	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-html, body {
-  width: 100%;
-  height: 100%;
-  margin: 0px;
-  border: 0;
-  overflow: hidden; /*  Disable scrollbars */
-  display: block;  /* No floating content on sides */
-  background-color: black;
-  color: white;
-  font-family: Arial, Helvetica, sans-serif;
-}
-
-canvas {
-  left:0px;
-  top:0px;
-}
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<!doctype html>
-
-<html lang="us">
-
-<head>
-  <meta charset="utf-8" />
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-  <!-- Disable pinch zoom on mobile devices -->
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-  <meta name="HandheldFriendly" content="true" />
-
-  <title>Simple Viewer</title>
-  <link href="samples-styles.css" rel="stylesheet" />
-
-<body>
-  <div id="breadcrumb">
-    <span id="patient-id"></span>
-    <span id="study-description"></span>
-    <span id="series-description"></span>
-  </div>
-  <div style="height: calc(100% - 50px)">
-    <div style="width: 20%; height: 100%; display: inline-block">
-      <canvas id="canvas"></canvas>
-    </div>
-    <div style="width: 70%; height: 100%; display: inline-block">
-      <canvas id="canvas2"></canvas>
-    </div>
-  </div>
-  <div id="toolbox" style="height: 50px">
-    <input tool-selector="line-measure" type="radio" name="radio-tool-selector" class="tool-selector">line
-    <input tool-selector="circle-measure" type="radio" name="radio-tool-selector" class="tool-selector">circle
-    <button action-trigger="action1" class="action-trigger">action1</button>
-    <button action-trigger="action2" class="action-trigger">action2</button>
-  </div>
-  <script type="text/javascript" src="app-simple-viewer-single-file.js"></script>
-</body>
-
-</html>
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-import wasmApplicationRunner = require('../../../Platforms/Wasm/wasm-application-runner');
-
-wasmApplicationRunner.InitializeWasmApplication("OrthancStoneSimpleViewerSingleFile", "/orthanc");
-
-function SelectTool(toolName: string) {
-    var command = {
-        command: "selectTool",
-        args: {
-            toolName: toolName
-        }
-    };
-    wasmApplicationRunner.SendSerializedMessageToStoneApplication(JSON.stringify(command));
-
-}
-
-function PerformAction(commandName: string) {
-    var command = {
-        command: commandName,
-        commandType: "simple",
-        args: {}
-    };
-    wasmApplicationRunner.SendSerializedMessageToStoneApplication(JSON.stringify(command));
-}
-
-//initializes the buttons
-//-----------------------
-// install "SelectTool" handlers
-document.querySelectorAll("[tool-selector]").forEach((e) => {
-    console.log(e);
-    (e as HTMLInputElement).addEventListener("click", () => {
-        console.log(e);
-        SelectTool(e.attributes["tool-selector"].value);
-    });
-});
-
-// install "PerformAction" handlers
-document.querySelectorAll("[action-trigger]").forEach((e) => {
-    (e as HTMLInputElement).addEventListener("click", () => {
-        PerformAction(e.attributes["action-trigger"].value);
-    });
-});
-
-// this method is called "from the C++ code" when the StoneApplication is updated.
-// it can be used to update the UI of the application
-function UpdateWebApplicationWithString(statusUpdateMessage: string) {
-  console.log(statusUpdateMessage);
-  
-  if (statusUpdateMessage.startsWith("series-description=")) {
-      document.getElementById("series-description").innerText = statusUpdateMessage.split("=")[1];
-  }
-}
-
-function UpdateWebApplicationWithSerializedMessage(statusUpdateMessageString: string) {
-  console.log("updating web application with serialized message: ", statusUpdateMessageString);
-  console.log("<not supported in the simple viewer (single file)!>");
-}
-
-// make it available to other js scripts in the application
-(<any> window).UpdateWebApplicationWithString = UpdateWebApplicationWithString;
-
-(<any> window).UpdateWebApplicationWithSerializedMessage = UpdateWebApplicationWithSerializedMessage;
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/simple-viewer-single-file.tsconfig.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-{
-    "extends" : "./tsconfig-samples",
-    "compilerOptions": {
-        // "outFile": "../build-web/app-simple-viewer-single-file.js"
-    },
-    "include" : [
-        "simple-viewer-single-file.ts"
-    ]
-}
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<!doctype html>
-
-<html lang="us">
-  <head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-    <!-- Disable pinch zoom on mobile devices -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <meta name="HandheldFriendly" content="true" />
-
-    <title>Simple Viewer</title>
-    <link href="samples-styles.css" rel="stylesheet" />
-
-<body>
-  <div style="width: 100%; height: 100%">
-    <canvas id="canvas"></canvas>
-  </div>
-  <script type="text/javascript" src="app-single-frame-editor.js"></script>
-</body>
-
-</html>
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-import wasmApplicationRunner = require('../../../Platforms/Wasm/wasm-application-runner');
-
-wasmApplicationRunner.InitializeWasmApplication("OrthancStoneSingleFrameEditor", "/orthanc");
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame-editor.tsconfig.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-{
-    "extends" : "./tsconfig-samples",
-    "compilerOptions": {
-    },
-    "include" : [
-        "single-frame-editor.ts"
-    ]
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<!doctype html>
-
-<html lang="us">
-  <head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-    <!-- Disable pinch zoom on mobile devices -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <meta name="HandheldFriendly" content="true" />
-
-    <title>Simple Viewer</title>
-    <link href="samples-styles.css" rel="stylesheet" />
-
-<body>
-  <div style="width: 100%; height: 100%">
-    <canvas id="canvas"></canvas>
-  </div>
-  <script type="text/javascript" src="app-single-frame.js"></script>
-</body>
-
-</html>
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-import wasmApplicationRunner = require('../../../Platforms/Wasm/wasm-application-runner');
-
-wasmApplicationRunner.InitializeWasmApplication("OrthancStoneSingleFrame", "/orthanc");
-
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/single-frame.tsconfig.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-{
-    "extends" : "./tsconfig-samples",
-    "compilerOptions": {
-    },
-    "include" : [
-        "single-frame.ts"
-    ]
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/Web/tsconfig-samples.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-{
-    "extends" : "../../../Platforms/Wasm/tsconfig-stone",
-    "compilerOptions": {
-        "sourceMap": false,
-        "lib" : [
-            "es2017",
-            "dom",
-            "dom.iterable"
-        ]
-    }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-wasm.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#!/bin/bash
-#
-# usage:
-# to build all targets in Debug:
-# ./build-wasm.sh
-#
-# to build a single target in release:
-# ./build-wasm.sh OrthancStoneSingleFrameEditor Release
-
-set -e
-
-target=${1:-all}
-buildType=${2:-Debug}
-
-currentDir=$(pwd)
-samplesRootDir=$(pwd)
-
-mkdir -p $samplesRootDir/build-wasm
-cd $samplesRootDir/build-wasm
-
-source ~/apps/emsdk/emsdk_env.sh
-cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=~/apps/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=$buildType -DSTONE_SOURCES_DIR=$currentDir/../../../orthanc-stone -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT=$currentDir/../../../orthanc -DALLOW_DOWNLOADS=ON .. -DENABLE_WASM=ON
-ninja $target
-
-echo "-- building the web application -- "
-cd $currentDir
-./build-web.sh
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-wasm.sh.old	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#!/bin/bash
-#
-# usage:
-# to build all targets:
-# ./build-wasm.sh
-#
-# to build a single target:
-# ./build-wasm.sh OrthancStoneSingleFrameEditor
-
-set -e
-
-target=${1:-all}
-
-currentDir=$(pwd)
-samplesRootDir=$(pwd)
-
-mkdir -p $samplesRootDir/build-wasm
-cd $samplesRootDir/build-wasm
-
-source ~/apps/emsdk/emsdk_env.sh
-cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake \
-  -DCMAKE_BUILD_TYPE=Release \
-  -DSTONE_SOURCES_DIR=$currentDir/../../../orthanc-stone \
-  -DORTHANC_FRAMEWORK_SOURCE=path \
-  -DORTHANC_FRAMEWORK_ROOT=$currentDir/../../../orthanc \
-  -DALLOW_DOWNLOADS=ON .. \
-  -DENABLE_WASM=ON
-
-ninja $target
-
-echo "-- building the web application -- "
-cd $currentDir
-./build-web.sh
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-web-ext.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#!/bin/bash
-
-set -e
-
-target=${1:-all}
-# this script currently assumes that the wasm code has been built on its side and is availabie in build-wasm/
-
-currentDir=$(pwd)
-
-scriptDirRel=$(dirname $0)
-#echo $scriptDirRel
-scriptDirAbs=$(realpath $scriptDirRel)
-echo $scriptDirAbs
-
-samplesRootDir=scriptDirAbs
-
-outputDir=$samplesRootDir/build-web/
-mkdir -p $outputDir
-
-# files used by all single files samples
-cp $samplesRootDir/Web/index.html $outputDir
-cp $samplesRootDir/Web/samples-styles.css $outputDir
-
-# build simple-viewer-single-file (obsolete project)
-if [[ $target == "all" || $target == "OrthancStoneSimpleViewerSingleFile" ]]; then
-  cp $samplesRootDir/Web/simple-viewer-single-file.html $outputDir
-  tsc --allowJs --project $samplesRootDir/Web/simple-viewer-single-file.tsconfig.json
-  cp $currentDir/build-wasm/OrthancStoneSimpleViewerSingleFile.js  $outputDir
-  cp $currentDir/build-wasm/OrthancStoneSimpleViewerSingleFile.wasm  $outputDir
-fi
-
-# build single-frame
-if [[ $target == "all" || $target == "OrthancStoneSingleFrame" ]]; then
-  cp $samplesRootDir/Web/single-frame.html $outputDir
-  tsc --allowJs --project $samplesRootDir/Web/single-frame.tsconfig.json
-  cp $currentDir/build-wasm/OrthancStoneSingleFrame.js  $outputDir
-  cp $currentDir/build-wasm/OrthancStoneSingleFrame.wasm  $outputDir
-fi
-
-# build single-frame-editor
-if [[ $target == "all" || $target == "OrthancStoneSingleFrameEditor" ]]; then
-  cp $samplesRootDir/Web/single-frame-editor.html $outputDir
-  tsc --allowJs --project $samplesRootDir/Web/single-frame-editor.tsconfig.json
-  cp $currentDir/build-wasm/OrthancStoneSingleFrameEditor.js  $outputDir
-  cp $currentDir/build-wasm/OrthancStoneSingleFrameEditor.wasm  $outputDir
-fi
-
-# build simple-viewer project
-if [[ $target == "all" || $target == "OrthancStoneSimpleViewer" ]]; then
-  mkdir -p $outputDir/simple-viewer/
-  cp $samplesRootDir/SimpleViewer/Wasm/simple-viewer.html $outputDir/simple-viewer/
-  cp $samplesRootDir/SimpleViewer/Wasm/styles.css $outputDir/simple-viewer/
-  tsc --allowJs --project $samplesRootDir/SimpleViewer/Wasm/tsconfig-simple-viewer.json
-  cp $currentDir/build-wasm/OrthancStoneSimpleViewer.js  $outputDir/simple-viewer/
-  cp $currentDir/build-wasm/OrthancStoneSimpleViewer.wasm  $outputDir/simple-viewer/
-fi
-
-cd $currentDir
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/build-web.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-#!/bin/bash
-
-set -e
-
-target=${1:-all}
-# this script currently assumes that the wasm code has been built on its side and is availabie in build-wasm/
-
-currentDir=$(pwd)
-samplesRootDir=$(pwd)
-
-echo "*************************************************************************"
-echo "samplesRootDir = $samplesRootDir"
-echo "*************************************************************************"
-
-outputDir=$samplesRootDir/build-web/
-mkdir -p "$outputDir"
-
-# files used by all single files samples
-cp "$samplesRootDir/Web/index.html" "$outputDir"
-cp "$samplesRootDir/Web/samples-styles.css" "$outputDir"
-
-# # build simple-viewer-single-file (obsolete project)
-# if [[ $target == "all" || $target == "OrthancStoneSimpleViewerSingleFile" ]]; then
-#   cp $samplesRootDir/Web/simple-viewer-single-file.html $outputDir
-#   tsc --project $samplesRootDir/Web/simple-viewer-single-file.tsconfig.json --outDir "$outputDir"
-#   browserify \
-#       "$outputDir/Platforms/Wasm/wasm-application-runner.js" \
-#       "$outputDir/Applications/Samples/Web/simple-viewer-single-file.js" \
-#       -o "$outputDir/app-simple-viewer-single-file.js"
-#   cp "$currentDir/build-wasm/OrthancStoneSimpleViewerSingleFile.js"  $outputDir
-#   cp "$currentDir/build-wasm/OrthancStoneSimpleViewerSingleFile.wasm"  $outputDir
-# fi
-
-# # build single-frame
-# if [[ $target == "all" || $target == "OrthancStoneSingleFrame" ]]; then
-#   cp $samplesRootDir/Web/single-frame.html $outputDir
-#   tsc --project $samplesRootDir/Web/single-frame.tsconfig.json --outDir "$outputDir"
-#   browserify \
-#       "$outputDir/Platforms/Wasm/wasm-application-runner.js" \
-#       "$outputDir/Applications/Samples/Web/single-frame.js" \
-#       -o "$outputDir/app-single-frame.js"
-#   cp "$currentDir/build-wasm/OrthancStoneSingleFrame.js"  $outputDir
-#   cp "$currentDir/build-wasm/OrthancStoneSingleFrame.wasm"  $outputDir
-# fi
-
-# build single-frame-editor
-if [[ $target == "all" || $target == "OrthancStoneSingleFrameEditor" ]]; then
-  cp $samplesRootDir/Web/single-frame-editor.html $outputDir
-  tsc --project $samplesRootDir/Web/single-frame-editor.tsconfig.json --outDir "$outputDir"
-  browserify \
-      "$outputDir/Platforms/Wasm/wasm-application-runner.js" \
-      "$outputDir/Applications/Samples/Web/single-frame-editor.js" \
-      -o "$outputDir/app-single-frame-editor.js"
-  cp "$currentDir/build-wasm/OrthancStoneSingleFrameEditor.js"  $outputDir
-  cp "$currentDir/build-wasm/OrthancStoneSingleFrameEditor.wasm"  $outputDir
-fi
-
-# build simple-viewer project
-if [[ $target == "all" || $target == "OrthancStoneSimpleViewer" ]]; then
-  mkdir -p $outputDir/simple-viewer/
-  cp $samplesRootDir/SimpleViewer/Wasm/simple-viewer.html $outputDir/simple-viewer/
-  cp $samplesRootDir/SimpleViewer/Wasm/styles.css $outputDir/simple-viewer/
-  
-  # the root dir must contain all the source files for the whole project
-  tsc --module commonjs --allowJs --project "$samplesRootDir/SimpleViewer/Wasm/tsconfig-simple-viewer.json" --rootDir "$samplesRootDir/../.." --outDir "$outputDir/simple-viewer/"
-  browserify \
-    "$outputDir/simple-viewer/Platforms/Wasm/wasm-application-runner.js" \
-    "$outputDir/simple-viewer/Applications/Samples/SimpleViewer/Wasm/simple-viewer.js" \
-    -o "$outputDir/simple-viewer/app-simple-viewer.js"
-  cp "$currentDir/build-wasm/OrthancStoneSimpleViewer.js"  "$outputDir/simple-viewer/"
-  cp "$currentDir/build-wasm/OrthancStoneSimpleViewer.wasm"  "$outputDir/simple-viewer/"
-fi
-
-cd $currentDir
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/get-requirements-windows.ps1	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-
-if ($true) {
-
-    Write-Error "This script is obsolete. Please work under WSL and run build-wasm.sh"
-
-} else {
-
-    param(
-        [IO.DirectoryInfo] $EmsdkRootDir = "C:\Emscripten",
-        [bool] $Overwrite = $false
-      )
-    
-    if (Test-Path -Path $EmsdkRootDir) {
-        if( $Override) {
-            Remove-Item -Path $EmsdkRootDir -Force -Recurse
-        } else {
-            throw "The `"$EmsdkRootDir`" folder may not exist! Use the Overwrite flag to bypass this check."
-        }
-    }
-    
-    # TODO: detect whether git is installed
-    # choco install -y git
-    
-    Write-Host "Will retrieve the Emscripten SDK to the `"$EmsdkRootDir`" folder"
-    
-    $EmsdkParentDir = split-path -Parent $EmsdkRootDir
-    $EmsdkRootName = split-path -Leaf $EmsdkRootDir
-    
-    Push-Location $EmsdkParentDir
-    
-    git clone https://github.com/juj/emsdk.git $EmsdkRootName
-    cd $EmsdkRootName
-    
-    git pull
-    
-    ./emsdk install latest
-    
-    ./emsdk activate latest
-    
-    echo "INFO: the ~/.emscripten file has been configured for this installation of Emscripten."
-    
-    Write-Host "emsdk is now installed in $EmsdkRootDir"
-    
-    Pop-Location
-
-}
-
-
-
-
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/nginx.local.conf	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-# Local config to serve the WASM samples static files and reverse proxy Orthanc.
-# Uses port 9977 instead of 80.
-
-# `events` section is mandatory
-events {
-  worker_connections 1024; # Default: 1024
-}
-
-http {
-
-  # prevent nginx sync issues on OSX
-  proxy_buffering off;
-
-  server {
-    listen 9977 default_server;
-    client_max_body_size 4G;
-
-    # location may have to be adjusted depending on your OS and nginx install
-    include /etc/nginx/mime.types;
-    # if not in your system mime.types, add this line to support WASM:
-    # types {
-    #    application/wasm                      wasm; 
-    # }
-
-    # serve WASM static files
-    root build-web/;
-    location / {
-	}
-
-    # reverse proxy orthanc
-	location /orthanc/ {
-		rewrite /orthanc(.*) $1 break;
-		proxy_pass http://127.0.0.1:8042;
-		proxy_set_header Host $http_host;
-		proxy_set_header my-auth-header good-token;
-		proxy_request_buffering off;
-		proxy_max_temp_file_size 0;
-		client_max_body_size 0;
-	}
-
-
-  }
-  
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/package-lock.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-{
-  "requires": true,
-  "lockfileVersion": 1,
-  "dependencies": {
-    "typescript": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz",
-      "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg=="
-    }
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-project(RtViewerDemo)
-
-if(MSVC)
-  add_definitions(/MP)
-  if (CMAKE_BUILD_TYPE MATCHES DEBUG)
-    add_definitions(/JMC)
-  endif()
-endif()
-
-message("-------------------------------------------------------------------------------------------------------------------")
-message("ORTHANC_FRAMEWORK_ROOT is set to ${ORTHANC_FRAMEWORK_ROOT}")
-message("-------------------------------------------------------------------------------------------------------------------")
-
-if(NOT DEFINED ORTHANC_FRAMEWORK_ROOT)
-  message(FATAL_ERROR "The location of the Orthanc source repository must be set in the ORTHANC_FRAMEWORK_ROOT CMake variable")
-endif()
-
-message("-------------------------------------------------------------------------------------------------------------------")
-message("STONE_SOURCES_DIR is set to ${STONE_SOURCES_DIR}")
-message("-------------------------------------------------------------------------------------------------------------------")
-
-if(NOT DEFINED STONE_SOURCES_DIR)
-  message(FATAL_ERROR "The location of the Stone of Orthanc source repository must be set in the STONE_SOURCES_DIR CMake variable")
-endif()
-
-include(${STONE_SOURCES_DIR}/Resources/CMake/OrthancStoneParameters.cmake)
-
-if (OPENSSL_NO_CAPIENG)
-add_definitions(-DOPENSSL_NO_CAPIENG=1)
-endif()
-
-set(ENABLE_SDL OFF CACHE BOOL "Target SDL Native application")
-set(ENABLE_QT OFF CACHE BOOL "Target Qt Native application")
-set(ENABLE_WASM OFF CACHE BOOL "Target WASM application")
-
-if (ENABLE_WASM)
-  #####################################################################
-  ## Configuration of the Emscripten compiler for WebAssembly target
-  #####################################################################
-
-  set(WASM_FLAGS "-s WASM=1")
-  set(WASM_FLAGS "${WASM_FLAGS} -s STRICT=1") # drops support for all deprecated build options
-  set(WASM_FLAGS "${WASM_FLAGS} -s FILESYSTEM=1") # if we don't include it, gen_uuid.c fails to build because srand, getpid(), ... are not defined
-  set(WASM_FLAGS "${WASM_FLAGS} -s DISABLE_EXCEPTION_CATCHING=0") # actually enable exception catching 
-  set(WASM_FLAGS "${WASM_FLAGS} -s ERROR_ON_MISSING_LIBRARIES=1")
-
-  if (CMAKE_BUILD_TYPE MATCHES DEBUG)
-    set(WASM_FLAGS "${WASM_FLAGS} -g4") # generate debug information
-    set(WASM_FLAGS "${WASM_FLAGS} -s ASSERTIONS=2") # more runtime checks
-  else()
-    set(WASM_FLAGS "${WASM_FLAGS} -Os") # optimize for web (speed and size)
-  endif()
-
-  set(WASM_MODULE_NAME "StoneFrameworkModule" CACHE STRING "Name of the WebAssembly module")
-
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
-
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${WASM_FLAGS}")  # not always clear which flags are for the compiler and which one are for the linker -> pass them all to the linker too
-  # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Applications/Samples/samples-library.js")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmWebService.js")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmDelayedCallExecutor.js")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/default-library.js")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXPORT_NAME='\"${WASM_MODULE_NAME}\"'")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s TOTAL_MEMORY=536870912")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s TOTAL_STACK=128000000")
-
-  add_definitions(-DORTHANC_ENABLE_WASM=1)
-  set(ORTHANC_SANDBOXED ON)
-
-elseif (ENABLE_QT OR ENABLE_SDL)
-
-  set(ENABLE_NATIVE ON)
-  set(ORTHANC_SANDBOXED OFF)
-  set(ENABLE_CRYPTO_OPTIONS ON)
-  set(ENABLE_GOOGLE_TEST ON)
-  set(ENABLE_WEB_CLIENT ON)
-
-endif()
-
-
-#####################################################################
-## Configuration for Orthanc
-#####################################################################
-
-if (ORTHANC_STONE_VERSION STREQUAL "mainline")
-  set(ORTHANC_FRAMEWORK_VERSION "mainline")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
-else()
-  set(ORTHANC_FRAMEWORK_VERSION "1.4.1")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
-endif()
-
-set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
-set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
-set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
-
-add_definitions(
-  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
-  )
-
-
-#####################################################################
-## Build a static library containing the Orthanc Stone framework
-#####################################################################
-
-LIST(APPEND ORTHANC_BOOST_COMPONENTS program_options)
-
-include(${STONE_SOURCES_DIR}/Resources/CMake/OrthancStoneConfiguration.cmake)
-
-add_library(OrthancStone STATIC
-  ${ORTHANC_STONE_SOURCES}
-  )
-
-#####################################################################
-## Build all the sample applications
-#####################################################################
-
-include_directories(${ORTHANC_STONE_ROOT})
-
-list(APPEND RTVIEWERDEMO_APPLICATION_SOURCES
-  ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleInteractor.h
-  ${ORTHANC_STONE_ROOT}/Applications/Samples/SampleApplicationBase.h
-  )
-
-if (ENABLE_WASM)
-  list(APPEND RTVIEWERDEMO_APPLICATION_SOURCES
-    ${STONE_WASM_SOURCES}
-    )
-endif()
-
-add_executable(RtViewerDemo
-  main.cpp
-  ${RTVIEWERDEMO_APPLICATION_SOURCES}
-)
-set_target_properties(RtViewerDemo PROPERTIES COMPILE_DEFINITIONS ORTHANC_STONE_SAMPLE=3)
-target_include_directories(RtViewerDemo PRIVATE ${ORTHANC_STONE_ROOT})
-target_link_libraries(RtViewerDemo OrthancStone)
-
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-sdl-msvc15.ps1	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-if (-not (Test-Path "build-sdl-msvc15")) {
-  mkdir -p "build-sdl-msvc15"
-}
-
-cd build-sdl-msvc15
-
-cmake -G "Visual Studio 15 2017 Win64" -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DSTONE_SOURCES_DIR="$($pwd)\..\..\..\.." -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\..\..\..\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON .. 
-
-if (!$?) {
-	Write-Error 'cmake configuration failed' -ErrorAction Stop
-}
-
-cmake --build . --target RtViewerDemo --config Debug
-
-if (!$?) {
-	Write-Error 'cmake build failed' -ErrorAction Stop
-}
-
-cd Debug
-
-.\RtViewerDemo.exe --ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa --dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb --struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
-
-
-
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-wasm.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#!/bin/bash
-#
-# usage:
-# build-wasm BUILD_TYPE
-# where BUILD_TYPE is Debug, RelWithDebInfo or Release
-
-set -e
-
-buildType=${1:-Debug}
-
-currentDir=$(pwd)
-currentDirAbs=$(realpath $currentDir)
-
-mkdir -p build-wasm
-cd build-wasm
-
-source ~/apps/emsdk/emsdk_env.sh
-cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake \
--DCMAKE_BUILD_TYPE=$buildType -DSTONE_SOURCES_DIR=$currentDirAbs/../../../../orthanc-stone \
--DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT=$currentDirAbs/../../../../orthanc \
--DALLOW_DOWNLOADS=ON .. -DENABLE_WASM=ON
-
-ninja $target
-
-echo "-- building the web application -- "
-cd $currentDir
-./build-web.sh
-
-echo "Launch start-serving-files.sh to access the web sample application locally"
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/build-web.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-#!/bin/bash
-
-set -e
-
-target=${1:-all}
-# this script currently assumes that the wasm code has been built on its side and is availabie in build-wasm/
-
-currentDir=$(pwd)
-samplesRootDir=$(pwd)
-
-tscOutput=$samplesRootDir/build-tsc-output/
-outputDir=$samplesRootDir/build-web/
-mkdir -p "$outputDir"
-
-# files used by all single files samples
-cp "$samplesRootDir/index.html" "$outputDir"
-cp "$samplesRootDir/samples-styles.css" "$outputDir"
-
-# build rt-viewer-demo
-cp $samplesRootDir/rt-viewer-demo.html $outputDir
-tsc --project $samplesRootDir/rt-viewer-demo.tsconfig.json --outDir "$tscOutput"
-browserify \
-    "$tscOutput/orthanc-stone/Platforms/Wasm/logger.js" \
-    "$tscOutput/orthanc-stone/Platforms/Wasm/stone-framework-loader.js" \
-    "$tscOutput/orthanc-stone/Platforms/Wasm/wasm-application-runner.js" \
-    "$tscOutput/orthanc-stone/Platforms/Wasm/wasm-viewport.js" \
-    "$tscOutput/rt-viewer-sample/rt-viewer-demo.js" \
-    -o "$outputDir/app-rt-viewer-demo.js"
-cp "$currentDir/build-wasm/RtViewerDemo.js"  $outputDir
-cp "$currentDir/build-wasm/RtViewerDemo.wasm"  $outputDir
-
-cd $currentDir
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/index.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<!doctype html>
-
-<html lang="us">
-  <head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-    <!-- Disable pinch zoom on mobile devices -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <meta name="HandheldFriendly" content="true" />
-
-    <title>Wasm Samples</title>
-
-<body>
-    <ul>
-      <li><a href="rt-viewer-demo.html?ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb&struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9">RTSTRUCT + CT + RTDOSE viewer demo. Pplease replace the url arguments with suitable IDs (you can find those in the Orthanc Explorer, for instance)</a></li>
-    </ul>
-</body>
-
-</html>
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/main.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,893 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "Applications/IStoneApplication.h"
-#include "Framework/Widgets/WorldSceneWidget.h"
-#include "Framework/Widgets/LayoutWidget.h"
-
-#if ORTHANC_ENABLE_WASM==1
-  #include "Platforms/Wasm/WasmPlatformApplicationAdapter.h"
-  #include "Platforms/Wasm/Defaults.h"
-  #include "Platforms/Wasm/WasmViewport.h"
-#endif
-
-#if ORTHANC_ENABLE_QT==1
-  #include "Qt/SampleMainWindow.h"
-  #include "Qt/SampleMainWindowWithButtons.h"
-#endif
-
-#include "Framework/Layers/DicomSeriesVolumeSlicer.h"
-#include "Framework/Widgets/SliceViewerWidget.h"
-#include "Framework/Volumes/StructureSetLoader.h"
-
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-#include <Core/Images/ImageTraits.h>
-
-#include <boost/math/constants/constants.hpp>
-#include "Framework/dev.h"
-#include "Framework/Widgets/LayoutWidget.h"
-#include "Framework/Layers/DicomStructureSetSlicer.h"
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    class RtViewerDemoBaseApplication : public IStoneApplication
-    {
-    protected:
-      // ownership is transferred to the application context
-#ifndef RESTORE_NON_RTVIEWERDEMO_BEHAVIOR
-      LayoutWidget*          mainWidget_;
-#else
-      WorldSceneWidget*  mainWidget_;
-#endif
-
-    public:
-      virtual void Initialize(StoneApplicationContext* context,
-                              IStatusBar& statusBar,
-                              const boost::program_options::variables_map& parameters) ORTHANC_OVERRIDE
-      {
-      }
-
-      virtual std::string GetTitle() const ORTHANC_OVERRIDE
-      {
-        return "Stone of Orthanc - Sample";
-      }
-
-      /**
-       * In the basic samples, the commands are handled by the platform adapter and NOT
-       * by the application handler
-      */
-      virtual void HandleSerializedMessage(const char* data) ORTHANC_OVERRIDE {};
-
-
-      virtual void Finalize() ORTHANC_OVERRIDE {}
-      virtual IWidget* GetCentralWidget() ORTHANC_OVERRIDE {return mainWidget_;}
-
-#if ORTHANC_ENABLE_WASM==1
-      // default implementations for a single canvas named "canvas" in the HTML and an empty WasmApplicationAdapter
-
-      virtual void InitializeWasm() ORTHANC_OVERRIDE
-      {
-        AttachWidgetToWasmViewport("canvas", mainWidget_);
-      }
-
-      virtual WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(MessageBroker& broker)
-      {
-        return new WasmPlatformApplicationAdapter(broker, *this);
-      }
-#endif
-
-    };
-
-    // this application actually works in Qt and WASM
-    class RtViewerDemoBaseSingleCanvasWithButtonsApplication : public RtViewerDemoBaseApplication
-    {
-public:
-      virtual void OnPushButton1Clicked() {}
-      virtual void OnPushButton2Clicked() {}
-      virtual void OnTool1Clicked() {}
-      virtual void OnTool2Clicked() {}
-
-      virtual void GetButtonNames(std::string& pushButton1,
-                                  std::string& pushButton2,
-                                  std::string& tool1,
-                                  std::string& tool2
-                                  ) {
-        pushButton1 = "action1";
-        pushButton2 = "action2";
-        tool1 = "tool1";
-        tool2 = "tool2";
-      }
-
-#if ORTHANC_ENABLE_QT==1
-      virtual QStoneMainWindow* CreateQtMainWindow() {
-        return new SampleMainWindowWithButtons(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
-      }
-#endif
-
-    };
-
-    // this application actually works in SDL and WASM
-    class RtViewerDemoBaseApplicationSingleCanvas : public RtViewerDemoBaseApplication
-    {
-public:
-
-#if ORTHANC_ENABLE_QT==1
-      virtual QStoneMainWindow* CreateQtMainWindow() {
-        return new SampleMainWindow(dynamic_cast<OrthancStone::NativeStoneApplicationContext&>(*context_), *this);
-      }
-#endif
-    };
-  }
-}
-
-
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-    template <Orthanc::PixelFormat T>
-    void ReadDistributionInternal(std::vector<float>& distribution,
-                                  const Orthanc::ImageAccessor& image)
-    {
-      const unsigned int width = image.GetWidth();
-      const unsigned int height = image.GetHeight();
-      
-      distribution.resize(width * height);
-      size_t pos = 0;
-
-      for (unsigned int y = 0; y < height; y++)
-      {
-        for (unsigned int x = 0; x < width; x++, pos++)
-        {
-          distribution[pos] = Orthanc::ImageTraits<T>::GetFloatPixel(image, x, y);
-        }
-      }
-    }
-
-    void ReadDistribution(std::vector<float>& distribution,
-                          const Orthanc::ImageAccessor& image)
-    {
-      switch (image.GetFormat())
-      {
-        case Orthanc::PixelFormat_Grayscale8:
-          ReadDistributionInternal<Orthanc::PixelFormat_Grayscale8>(distribution, image);
-          break;
-
-        case Orthanc::PixelFormat_Grayscale16:
-          ReadDistributionInternal<Orthanc::PixelFormat_Grayscale16>(distribution, image);
-          break;
-
-        case Orthanc::PixelFormat_SignedGrayscale16:
-          ReadDistributionInternal<Orthanc::PixelFormat_SignedGrayscale16>(distribution, image);
-          break;
-
-        case Orthanc::PixelFormat_Grayscale32:
-          ReadDistributionInternal<Orthanc::PixelFormat_Grayscale32>(distribution, image);
-          break;
-
-        case Orthanc::PixelFormat_Grayscale64:
-          ReadDistributionInternal<Orthanc::PixelFormat_Grayscale64>(distribution, image);
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-    }
-
-
-    class DoseInteractor : public VolumeImageInteractor
-    {
-    private:
-      SliceViewerWidget&         widget_;
-      size_t               layer_;
-      DicomFrameConverter  converter_;
-
-
-      
-    protected:
-      virtual void NotifySliceChange(const ISlicedVolume& slicedVolume,
-                                    const size_t& sliceIndex,
-                                    const Slice& slice)
-      {
-        converter_ = slice.GetConverter();
-        
-  #if 0
-        const OrthancVolumeImage& volume = dynamic_cast<const OrthancVolumeImage&>(slicedVolume);
-
-        RenderStyle s = widget_.GetLayerStyle(layer_);
-
-        if (volume.FitWindowingToRange(s, slice.GetConverter()))
-        {
-          printf("Windowing: %f => %f\n", s.customWindowCenter_, s.customWindowWidth_);
-          widget_.SetLayerStyle(layer_, s);
-        }
-  #endif
-      }
-
-      virtual void NotifyVolumeReady(const ISlicedVolume& slicedVolume)
-      {
-        const float percentile = 0.01f;
-        const OrthancVolumeImage& volume = dynamic_cast<const OrthancVolumeImage&>(slicedVolume);
-
-        std::vector<float> distribution;
-        ReadDistribution(distribution, volume.GetImage().GetInternalImage());
-        std::sort(distribution.begin(), distribution.end());
-
-        int start = static_cast<int>(std::ceil(distribution.size() * percentile));
-        int end = static_cast<int>(std::floor(distribution.size() * (1.0f - percentile)));
-
-        float a = 0;
-        float b = 0;
-        
-        if (start < end &&
-            start >= 0 &&
-            end < static_cast<int>(distribution.size()))
-        {
-          a = distribution[start];
-          b = distribution[end];
-        }
-        else if (!distribution.empty())
-        {
-          // Too small distribution: Use full range
-          a = distribution.front();
-          b = distribution.back();
-        }
-
-        //printf("%f %f\n", a, b);
-
-        RenderStyle s = widget_.GetLayerStyle(layer_);
-        s.windowing_ = ImageWindowing_Custom;
-        s.customWindowCenter_ = static_cast<float>(converter_.Apply((a + b) / 2.0f));
-        s.customWindowWidth_ = static_cast<float>(converter_.Apply(b - a));
-        
-        // 96.210556 => 192.421112
-        widget_.SetLayerStyle(layer_, s);
-        printf("Windowing: %f => %f\n", s.customWindowCenter_, s.customWindowWidth_);      
-      }
-
-    public:
-      DoseInteractor(MessageBroker& broker, OrthancVolumeImage& volume,
-                    SliceViewerWidget& widget,
-                    VolumeProjection projection,
-                    size_t layer) :
-        VolumeImageInteractor(broker, volume, widget, projection),
-        widget_(widget),
-        layer_(layer)
-      {
-      }
-    };
-
-    class RtViewerDemoApplication :
-      public RtViewerDemoBaseApplicationSingleCanvas,
-      public IObserver
-    {
-    public:
-      std::vector<std::pair<SliceViewerWidget*, size_t> > doseCtWidgetLayerPairs_;
-      std::list<OrthancStone::IWorldSceneInteractor*>    interactors_;
-
-      class Interactor : public IWorldSceneInteractor
-      {
-      private:
-        RtViewerDemoApplication&  application_;
-
-      public:
-        Interactor(RtViewerDemoApplication&  application) :
-          application_(application)
-        {
-        }
-
-        virtual IWorldSceneMouseTracker* CreateMouseTracker(WorldSceneWidget& widget,
-          const ViewportGeometry& view,
-          MouseButton button,
-          KeyboardModifiers modifiers,
-          int viewportX,
-          int viewportY,
-          double x,
-          double y,
-          IStatusBar* statusBar,
-          const std::vector<Touch>& displayTouches)
-        {
-          return NULL;
-        }
-
-        virtual void MouseOver(CairoContext& context,
-          WorldSceneWidget& widget,
-          const ViewportGeometry& view,
-          double x,
-          double y,
-          IStatusBar* statusBar)
-        {
-          if (statusBar != NULL)
-          {
-            Vector p = dynamic_cast<SliceViewerWidget&>(widget).GetSlice().MapSliceToWorldCoordinates(x, y);
-
-            char buf[64];
-            sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)",
-              p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
-            statusBar->SetMessage(buf);
-          }
-        }
-
-        virtual void MouseWheel(WorldSceneWidget& widget,
-          MouseWheelDirection direction,
-          KeyboardModifiers modifiers,
-          IStatusBar* statusBar)
-        {
-          int scale = (modifiers & KeyboardModifiers_Control ? 10 : 1);
-
-          switch (direction)
-          {
-          case MouseWheelDirection_Up:
-            application_.OffsetSlice(-scale);
-            break;
-
-          case MouseWheelDirection_Down:
-            application_.OffsetSlice(scale);
-            break;
-
-          default:
-            break;
-          }
-        }
-
-        virtual void KeyPressed(WorldSceneWidget& widget,
-          KeyboardKeys key,
-          char keyChar,
-          KeyboardModifiers modifiers,
-          IStatusBar* statusBar)
-        {
-          switch (keyChar)
-          {
-          case 's':
-            // TODO: recursively traverse children
-            widget.FitContent();
-            break;
-
-          default:
-            break;
-          }
-        }
-      };
-
-      void OffsetSlice(int offset)
-      {
-        if (source_ != NULL)
-        {
-          int slice = static_cast<int>(slice_) + offset;
-
-          if (slice < 0)
-          {
-            slice = 0;
-          }
-
-          if (slice >= static_cast<int>(source_->GetSliceCount()))
-          {
-            slice = static_cast<int>(source_->GetSliceCount()) - 1;
-          }
-
-          if (slice != static_cast<int>(slice_))
-          {
-            SetSlice(slice);
-          }
-        }
-      }
-
-
-      SliceViewerWidget& GetMainWidget()
-      {
-        return *dynamic_cast<SliceViewerWidget*>(mainWidget_);
-      }
-
-
-      void SetSlice(size_t index)
-      {
-        if (source_ != NULL &&
-          index < source_->GetSliceCount())
-        {
-          slice_ = static_cast<unsigned int>(index);
-
-#if 1
-          GetMainWidget().SetSlice(source_->GetSlice(slice_).GetGeometry());
-#else
-          // TEST for scene extents - Rotate the axes
-          double a = 15.0 / 180.0 * boost::math::constants::pi<double>();
-
-#if 1
-          Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
-          Vector y; GeometryToolbox::AssignVector(y, -sin(a), cos(a), 0);
-#else
-          // Flip the normal
-          Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
-          Vector y; GeometryToolbox::AssignVector(y, sin(a), -cos(a), 0);
-#endif
-
-          SliceGeometry s(source_->GetSlice(slice_).GetGeometry().GetOrigin(), x, y);
-          widget_->SetSlice(s);
-#endif
-        }
-      }
-
-
-      void OnMainWidgetGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message)
-      {
-        // Once the geometry of the series is downloaded from Orthanc,
-        // display its middle slice, and adapt the viewport to fit this
-        // slice
-        if (source_ == &message.GetOrigin())
-        {
-          SetSlice(source_->GetSliceCount() / 2);
-        }
-
-        GetMainWidget().FitContent();
-      }
-
-    DicomFrameConverter                                converter_;
-
-    void OnSliceContentChangedMessage(const ISlicedVolume::SliceContentChangedMessage&   message)
-    {
-      converter_ = message.GetSlice().GetConverter();
-    }
-
-    void OnVolumeReadyMessage(const ISlicedVolume::VolumeReadyMessage& message)
-    {
-      const float percentile = 0.01f;
-
-      auto& slicedVolume = message.GetOrigin();
-      const OrthancVolumeImage& volume = dynamic_cast<const OrthancVolumeImage&>(slicedVolume);
-
-      std::vector<float> distribution;
-      ReadDistribution(distribution, volume.GetImage().GetInternalImage());
-      std::sort(distribution.begin(), distribution.end());
-
-      int start = static_cast<int>(std::ceil(distribution.size() * percentile));
-      int end = static_cast<int>(std::floor(distribution.size() * (1.0f - percentile)));
-
-      float a = 0;
-      float b = 0;
-
-      if (start < end &&
-        start >= 0 &&
-        end < static_cast<int>(distribution.size()))
-      {
-        a = distribution[start];
-        b = distribution[end];
-      }
-      else if (!distribution.empty())
-      {
-        // Too small distribution: Use full range
-        a = distribution.front();
-        b = distribution.back();
-      }
-
-      //printf("WINDOWING %f %f\n", a, b);
-
-      for (const auto& pair : doseCtWidgetLayerPairs_)
-      {
-        auto widget = pair.first;
-        auto layer = pair.second;
-        RenderStyle s = widget->GetLayerStyle(layer);
-        s.windowing_ = ImageWindowing_Custom;
-        s.customWindowCenter_ = static_cast<float>(converter_.Apply((a + b) / 2.0f));
-        s.customWindowWidth_ = static_cast<float>(converter_.Apply(b - a));
-
-        // 96.210556 => 192.421112
-        widget->SetLayerStyle(layer, s);
-        printf("Windowing: %f => %f\n", s.customWindowCenter_, s.customWindowWidth_);
-      }
-    }
-      
-
-
-      size_t AddDoseLayer(SliceViewerWidget& widget,
-        OrthancVolumeImage& volume, VolumeProjection projection);
-
-      void AddStructLayer(
-        SliceViewerWidget& widget, StructureSetLoader& loader);
-
-      SliceViewerWidget* CreateDoseCtWidget(
-        std::unique_ptr<OrthancVolumeImage>& ct,
-        std::unique_ptr<OrthancVolumeImage>& dose,
-        std::unique_ptr<StructureSetLoader>& structLoader,
-        VolumeProjection projection);
-
-      void AddCtLayer(SliceViewerWidget& widget, OrthancVolumeImage& volume);
-
-      std::unique_ptr<Interactor>         mainWidgetInteractor_;
-      const DicomSeriesVolumeSlicer*    source_;
-      unsigned int                      slice_;
-
-      std::string                                        ctSeries_;
-      std::string                                        doseInstance_;
-      std::string                                        doseSeries_;
-      std::string                                        structInstance_;
-      std::unique_ptr<OrthancStone::OrthancVolumeImage>    dose_;
-      std::unique_ptr<OrthancStone::OrthancVolumeImage>    ct_;
-      std::unique_ptr<OrthancStone::StructureSetLoader>    struct_;
-
-    public:
-      RtViewerDemoApplication(MessageBroker& broker) :
-        IObserver(broker),
-        source_(NULL),
-        slice_(0)
-      {
-      }
-
-      /*
-      dev options on bgo xps15
-
-      COMMAND LINE
-      --ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa --dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb --struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
-
-      URL PARAMETERS
-      ?ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb&struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
-
-      */
-
-      void ParseParameters(const boost::program_options::variables_map&  parameters)
-      {
-        // Generic
-        {
-          if (parameters.count("verbose"))
-          {
-            Orthanc::Logging::EnableInfoLevel(true);
-            LOG(INFO) << "Verbose logs (info) are enabled";
-          }
-        }
-
-        {
-          if (parameters.count("trace"))
-          {
-            LOG(INFO) << "parameters.count(\"trace\") != 0";
-            Orthanc::Logging::EnableTraceLevel(true);
-            VLOG(1) << "Trace logs (debug) are enabled";
-          }
-        }
-
-        // CT series
-        {
-
-          if (parameters.count("ct-series") != 1)
-          {
-            LOG(ERROR) << "There must be exactly one CT series specified";
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-          }
-          ctSeries_ = parameters["ct-series"].as<std::string>();
-        }
-
-        // RTDOSE 
-        {
-          if (parameters.count("dose-instance") == 1)
-          {
-            doseInstance_ = parameters["dose-instance"].as<std::string>();
-          }
-          else
-          {
-#ifdef BGO_NOT_IMPLEMENTED_YET
-            // Dose series
-            if (parameters.count("dose-series") != 1)
-            {
-              LOG(ERROR) << "the RTDOSE series is missing";
-              throw Orthanc::OrthancException(
-                Orthanc::ErrorCode_ParameterOutOfRange);
-            }
-            doseSeries_ = parameters["ct"].as<std::string>();
-#endif
-            LOG(ERROR) << "the RTSTRUCT instance is missing";
-            throw Orthanc::OrthancException(
-              Orthanc::ErrorCode_ParameterOutOfRange);
-          }
-        }
-        
-        // RTSTRUCT 
-        {
-          if (parameters.count("struct-instance") == 1)
-          {
-            structInstance_ = parameters["struct-instance"].as<std::string>();
-          }
-          else
-          {
-#ifdef BGO_NOT_IMPLEMENTED_YET
-            // Struct series
-            if (parameters.count("struct-series") != 1)
-            {
-              LOG(ERROR) << "the RTSTRUCT series is missing";
-              throw Orthanc::OrthancException(
-                Orthanc::ErrorCode_ParameterOutOfRange);
-            }
-            structSeries_ = parameters["struct-series"].as<std::string>();
-#endif
-            LOG(ERROR) << "the RTSTRUCT instance is missing";
-            throw Orthanc::OrthancException(
-              Orthanc::ErrorCode_ParameterOutOfRange);
-          }
-        }
-      }
-
-      virtual void DeclareStartupOptions(
-        boost::program_options::options_description& options)
-      {
-        boost::program_options::options_description generic(
-          "RtViewerDemo options. Please note that some of these options "
-          "are mutually exclusive");
-        generic.add_options()
-          ("ct-series", boost::program_options::value<std::string>(),
-            "Orthanc ID of the CT series")
-          ("dose-instance", boost::program_options::value<std::string>(), 
-            "Orthanc ID of the RTDOSE instance (incompatible with dose-series)")
-          ("dose-series", boost::program_options::value<std::string>(), 
-            "NOT IMPLEMENTED YET. Orthanc ID of the RTDOSE series (incompatible"
-            " with dose-instance)")
-          ("struct-instance", boost::program_options::value<std::string>(), 
-            "Orthanc ID of the RTSTRUCT instance (incompatible with struct-"
-            "series)")
-          ("struct-series", boost::program_options::value<std::string>(), 
-            "NOT IMPLEMENTED YET. Orthanc ID of the RTSTRUCT (incompatible with"
-            " struct-instance)")
-          ("smooth", boost::program_options::value<bool>()->default_value(true),
-            "Enable bilinear image smoothing")
-          ;
-
-        options.add(generic);
-      }
-
-      virtual void Initialize(
-        StoneApplicationContext*                      context,
-        IStatusBar&                                   statusBar,
-        const boost::program_options::variables_map&  parameters)
-      {
-        using namespace OrthancStone;
-
-        ParseParameters(parameters);
-
-        context_ = context;
-
-        statusBar.SetMessage("Use the key \"s\" to reinitialize the layout");
-
-        if (!ctSeries_.empty())
-        {
-          printf("CT = [%s]\n", ctSeries_.c_str());
-
-          ct_.reset(new OrthancStone::OrthancVolumeImage(
-            IObserver::GetBroker(), context->GetOrthancApiClient(), false));
-          ct_->ScheduleLoadSeries(ctSeries_);
-          //ct_->ScheduleLoadSeries(
-          //  "a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");
-          //ct_->ScheduleLoadSeries(
-          //  "03677739-1d8bca40-db1daf59-d74ff548-7f6fc9c0");
-        }
-
-        if (!doseSeries_.empty() ||
-          !doseInstance_.empty())
-        {
-          dose_.reset(new OrthancStone::OrthancVolumeImage(
-            IObserver::GetBroker(), context->GetOrthancApiClient(), true));
-
-
-          dose_->RegisterObserverCallback(
-            new Callable<RtViewerDemoApplication, ISlicedVolume::VolumeReadyMessage>
-            (*this, &RtViewerDemoApplication::OnVolumeReadyMessage));
-
-          dose_->RegisterObserverCallback(
-            new Callable<RtViewerDemoApplication, ISlicedVolume::SliceContentChangedMessage>
-            (*this, &RtViewerDemoApplication::OnSliceContentChangedMessage));
-
-          if (doseInstance_.empty())
-          {
-            dose_->ScheduleLoadSeries(doseSeries_);
-          }
-          else
-          {
-            dose_->ScheduleLoadInstance(doseInstance_);
-          }
-
-          //dose_->ScheduleLoadInstance(
-            //"830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb");  // 1
-          //dose_->ScheduleLoadInstance(
-            //"269f26f4-0c83eeeb-2e67abbd-5467a40f-f1bec90c"); //0522c0001 TCIA
-        }
-
-        if (!structInstance_.empty())
-        {
-          struct_.reset(new OrthancStone::StructureSetLoader(
-            IObserver::GetBroker(), context->GetOrthancApiClient()));
-
-          struct_->ScheduleLoadInstance(structInstance_);
-
-          //struct_->ScheduleLoadInstance(
-            //"54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");
-          //struct_->ScheduleLoadInstance(
-            //"17cd032b-ad92a438-ca05f06a-f9e96668-7e3e9e20"); // 0522c0001 TCIA
-        }
-
-        mainWidget_ = new LayoutWidget("main-layout");
-        mainWidget_->SetBackgroundColor(0, 0, 0);
-        mainWidget_->SetBackgroundCleared(true);
-        mainWidget_->SetPadding(0);
-
-        auto axialWidget = CreateDoseCtWidget
-        (ct_, dose_, struct_, OrthancStone::VolumeProjection_Axial);
-        mainWidget_->AddWidget(axialWidget);
-               
-        std::unique_ptr<OrthancStone::LayoutWidget> subLayout(
-          new OrthancStone::LayoutWidget("main-layout"));
-        subLayout->SetVertical();
-        subLayout->SetPadding(5);
-
-        auto coronalWidget = CreateDoseCtWidget
-        (ct_, dose_, struct_, OrthancStone::VolumeProjection_Coronal);
-        subLayout->AddWidget(coronalWidget);
-
-        auto sagittalWidget = CreateDoseCtWidget
-        (ct_, dose_, struct_, OrthancStone::VolumeProjection_Sagittal);
-        subLayout->AddWidget(sagittalWidget);
-        
-        mainWidget_->AddWidget(subLayout.release());
-      }
-    };
-
-
-    size_t RtViewerDemoApplication::AddDoseLayer(
-      SliceViewerWidget& widget,
-      OrthancVolumeImage& volume, VolumeProjection projection)
-    {
-      size_t layer = widget.AddLayer(
-        new VolumeImageMPRSlicer(IObserver::GetBroker(), volume));
-
-      RenderStyle s;
-      //s.drawGrid_ = true;
-      s.SetColor(255, 0, 0);  // Draw missing PET layer in red
-      s.alpha_ = 0.3f;
-      s.applyLut_ = true;
-      s.lut_ = Orthanc::EmbeddedResources::COLORMAP_JET;
-      s.interpolation_ = ImageInterpolation_Bilinear;
-      widget.SetLayerStyle(layer, s);
-
-      return layer;
-    }
-
-    void RtViewerDemoApplication::AddStructLayer(
-      SliceViewerWidget& widget, StructureSetLoader& loader)
-    {
-      widget.AddLayer(new DicomStructureSetSlicer(
-        IObserver::GetBroker(), loader));
-    }
-
-    SliceViewerWidget* RtViewerDemoApplication::CreateDoseCtWidget(
-      std::unique_ptr<OrthancVolumeImage>& ct,
-      std::unique_ptr<OrthancVolumeImage>& dose,
-      std::unique_ptr<StructureSetLoader>& structLoader,
-      VolumeProjection projection)
-    {
-      std::unique_ptr<OrthancStone::SliceViewerWidget> widget(
-        new OrthancStone::SliceViewerWidget(IObserver::GetBroker(),
-          "ct-dose-widget"));
-
-      if (ct.get() != NULL)
-      {
-        AddCtLayer(*widget, *ct);
-      }
-
-      if (dose.get() != NULL)
-      {
-        size_t layer = AddDoseLayer(*widget, *dose, projection);
-
-        // we need to store the dose rendering widget because we'll update them
-        // according to various asynchronous events
-        doseCtWidgetLayerPairs_.push_back(std::make_pair(widget.get(), layer));
-#if 0
-        interactors_.push_back(new VolumeImageInteractor(
-          IObserver::GetBroker(), *dose, *widget, projection));
-#else
-        interactors_.push_back(new DoseInteractor(
-          IObserver::GetBroker(), *dose, *widget, projection, layer));
-#endif
-      }
-      else if (ct.get() != NULL)
-      {
-        interactors_.push_back(
-          new VolumeImageInteractor(
-            IObserver::GetBroker(), *ct, *widget, projection));
-      }
-
-      if (structLoader.get() != NULL)
-      {
-        AddStructLayer(*widget, *structLoader);
-      }
-
-      return widget.release();
-    }
-
-    void RtViewerDemoApplication::AddCtLayer(
-      SliceViewerWidget& widget,
-      OrthancVolumeImage& volume)
-    {
-      size_t layer = widget.AddLayer(
-        new VolumeImageMPRSlicer(IObserver::GetBroker(), volume));
-
-      RenderStyle s;
-      //s.drawGrid_ = true;
-      s.alpha_ = 1;
-      s.windowing_ = ImageWindowing_Bone;
-      widget.SetLayerStyle(layer, s);
-    }
-  }
-}
-
-
-
-#if ORTHANC_ENABLE_WASM==1
-
-#include "Platforms/Wasm/WasmWebService.h"
-#include "Platforms/Wasm/WasmViewport.h"
-
-#include <emscripten/emscripten.h>
-
-//#include "SampleList.h"
-
-
-OrthancStone::IStoneApplication* CreateUserApplication(OrthancStone::MessageBroker& broker)
-{
-  return new OrthancStone::Samples::RtViewerDemoApplication(broker);
-}
-
-OrthancStone::WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(OrthancStone::MessageBroker& broker, OrthancStone::IStoneApplication* application)
-{
-  return dynamic_cast<OrthancStone::Samples::RtViewerDemoApplication*>(application)->CreateWasmApplicationAdapter(broker);
-}
-
-#else
-
-//#include "SampleList.h"
-#if ORTHANC_ENABLE_SDL==1
-#include "Applications/Sdl/SdlStoneApplicationRunner.h"
-#endif
-#if ORTHANC_ENABLE_QT==1
-#include "Applications/Qt/SampleQtApplicationRunner.h"
-#endif
-#include "Framework/Messages/MessageBroker.h"
-
-int main(int argc, char* argv[])
-{
-  OrthancStone::MessageBroker broker;
-  OrthancStone::Samples::RtViewerDemoApplication sampleStoneApplication(broker);
-
-#if ORTHANC_ENABLE_SDL==1
-  OrthancStone::SdlStoneApplicationRunner sdlApplicationRunner(broker, sampleStoneApplication);
-  return sdlApplicationRunner.Execute(argc, argv);
-#endif
-#if ORTHANC_ENABLE_QT==1
-  OrthancStone::Samples::SampleQtApplicationRunner qtAppRunner(broker, sampleStoneApplication);
-  return qtAppRunner.Execute(argc, argv);
-#endif
-}
-
-
-#endif
-
-
-
-
-
-
-
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/nginx.local.conf	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-# Local config to serve the WASM samples static files and reverse proxy Orthanc.
-# Uses port 9977 instead of 80.
-
-# `events` section is mandatory
-events {
-  worker_connections 1024; # Default: 1024
-}
-
-http {
-
-  # prevent nginx sync issues on OSX
-  proxy_buffering off;
-
-  server {
-    listen 9977 default_server;
-    client_max_body_size 4G;
-
-    # location may have to be adjusted depending on your OS and nginx install
-    include /etc/nginx/mime.types;
-    # if not in your system mime.types, add this line to support WASM:
-    # types {
-    #    application/wasm                      wasm; 
-    # }
-
-    # serve WASM static files
-    root build-web/;
-    location / {
-	}
-
-    # reverse proxy orthanc
-	location /orthanc/ {
-		rewrite /orthanc(.*) $1 break;
-		proxy_pass http://127.0.0.1:8042;
-		proxy_set_header Host $http_host;
-		proxy_set_header my-auth-header good-token;
-		proxy_request_buffering off;
-		proxy_max_temp_file_size 0;
-		client_max_body_size 0;
-	}
-
-
-  }
-  
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<!doctype html>
-
-<html lang="us">
-  <head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-    <!-- Disable pinch zoom on mobile devices -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <meta name="HandheldFriendly" content="true" />
-
-    <title>Simple Viewer</title>
-    <link href="samples-styles.css" rel="stylesheet" />
-
-<body>
-  <div style="width: 100%; height: 5%">
-    <p>RTSTRUCT viewer demonstration</p>
-  </div>
-  <div style="width: 100%; height: 95%">
-    <canvas id="canvas"></canvas>
-  </div>
-  <script type="text/javascript" src="app-rt-viewer-demo.js"></script>
-</body>
-
-</html>
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-import { InitializeWasmApplication } from '../../../Platforms/Wasm/wasm-application-runner';
-
-
-InitializeWasmApplication("RtViewerDemo", "/orthanc");
-
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/rt-viewer-demo.tsconfig.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-{
-    "extends" : "./tsconfig-samples",
-    "compilerOptions": {
-    },
-    "include" : [
-        "rt-viewer-demo.ts"
-    ]
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/samples-styles.css	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-html, body {
-  width: 100%;
-  height: 100%;
-  margin: 0px;
-  border: 0;
-  overflow: hidden; /*  Disable scrollbars */
-  display: block;  /* No floating content on sides */
-  background-color: black;
-  color: white;
-  font-family: Arial, Helvetica, sans-serif;
-}
-
-canvas {
-  left:0px;
-  top:0px;
-}
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/start-serving-files.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-sudo nginx -p $(pwd) -c nginx.local.conf
-
-echo "Please browse to :"
-
-echo "http://localhost:9977/rt-viewer-demo.html?ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb&struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9"
-
-echo "(This requires you have uploaded the correct files to your local Orthanc instance)"
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/stop-serving-files.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-sudo nginx -s stop
-
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/rt-viewer-demo/tsconfig-samples.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-{
-    "extends" : "../../../Platforms/Wasm/tsconfig-stone.json",
-    "compilerOptions": {
-        "sourceMap": false,
-        "lib" : [
-            "es2017",
-            "dom",
-            "dom.iterable"
-        ]
-    }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Samples/Deprecated/tsconfig-stone.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-{
-    "include" : [
-        "../../Platforms/Wasm/stone-framework-loader.ts",
-        "../../Platforms/Wasm/wasm-application-runner.ts",
-        "../../Platforms/Wasm/wasm-viewport.ts"
-    ]
-}
--- a/Resources/Graveyard/Deprecated/Applications/Sdl/SdlCairoSurface.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SdlCairoSurface.h"
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-
-namespace OrthancStone
-{
-  SdlCairoSurface::SdlCairoSurface(SdlWindow& window) :
-    window_(window),
-    sdlSurface_(NULL)
-  {
-  }
-
-
-  SdlCairoSurface::~SdlCairoSurface()
-  {
-    if (sdlSurface_)
-    {
-      SDL_FreeSurface(sdlSurface_);
-    }
-  }
-
-
-  void SdlCairoSurface::SetSize(unsigned int width,
-                                unsigned int height)
-  {
-    if (cairoSurface_.get() == NULL ||
-        cairoSurface_->GetWidth() != width ||
-        cairoSurface_->GetHeight() != height)
-    {
-      cairoSurface_.reset(new CairoSurface(width, height, false /* no alpha */));
-
-      // TODO Big endian?
-      static const uint32_t rmask = 0x00ff0000;
-      static const uint32_t gmask = 0x0000ff00;
-      static const uint32_t bmask = 0x000000ff;
-
-      if (sdlSurface_)
-      {
-        SDL_FreeSurface(sdlSurface_);
-      }
-
-      sdlSurface_ = SDL_CreateRGBSurfaceFrom(cairoSurface_->GetBuffer(), width, height, 32,
-                                             cairoSurface_->GetPitch(), rmask, gmask, bmask, 0);
-      if (!sdlSurface_)
-      {
-        LOG(ERROR) << "Cannot create a SDL surface from a Cairo surface";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-  }
-
-
-  void SdlCairoSurface::Render(Deprecated::IViewport& viewport)
-  {
-    if (cairoSurface_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    Orthanc::ImageAccessor target;
-    cairoSurface_->GetWriteableAccessor(target);
-
-    if (viewport.Render(target))
-    {
-      window_.Render(sdlSurface_);
-    }
-  }
-}
-
-#endif
--- a/Resources/Graveyard/Deprecated/Applications/Sdl/SdlCairoSurface.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include "../../Framework/Viewport/SdlWindow.h"
-#include "../../Framework/Wrappers/CairoSurface.h"
-#include "../../Framework/Deprecated/Viewport/IViewport.h"
-
-#include <Core/Compatibility.h>
-
-#include <SDL_render.h>
-#include <boost/thread/mutex.hpp>
-
-namespace OrthancStone
-{
-  class SdlCairoSurface : public boost::noncopyable
-  {
-  private:
-    std::unique_ptr<CairoSurface>  cairoSurface_;
-    SdlWindow&                   window_;
-    SDL_Surface*                 sdlSurface_;
-
-  public:
-    SdlCairoSurface(SdlWindow& window);
-
-    ~SdlCairoSurface();
-
-    void SetSize(unsigned int width,
-                 unsigned int height);
-
-    void Render(Deprecated::IViewport& viewport);
-  };
-}
-
-#endif
--- a/Resources/Graveyard/Deprecated/Applications/Sdl/SdlEngine.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,282 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SdlEngine.h"
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include <Core/Logging.h>
-
-#include <SDL.h>
-
-namespace OrthancStone
-{
-  void SdlEngine::SetSize(unsigned int width,
-                          unsigned int height)
-  {
-    NativeStoneApplicationContext::GlobalMutexLocker locker(context_);
-    locker.GetCentralViewport().SetSize(width, height);
-    surface_.SetSize(width, height);
-  }
-
-
-  void SdlEngine::RenderFrame()
-  {
-    if (viewportChanged_)
-    {
-      NativeStoneApplicationContext::GlobalMutexLocker locker(context_);
-      surface_.Render(locker.GetCentralViewport());
-
-      viewportChanged_ = false;
-    }
-  }
-
-
-  KeyboardModifiers SdlEngine::GetKeyboardModifiers(const uint8_t* keyboardState,
-                                                    const int scancodeCount)
-  {
-    int result = KeyboardModifiers_None;
-
-    if (keyboardState != NULL)
-    {
-      if (SDL_SCANCODE_LSHIFT < scancodeCount &&
-          keyboardState[SDL_SCANCODE_LSHIFT])
-      {
-        result |= KeyboardModifiers_Shift;
-      }
-
-      if (SDL_SCANCODE_RSHIFT < scancodeCount &&
-          keyboardState[SDL_SCANCODE_RSHIFT])
-      {
-        result |= KeyboardModifiers_Shift;
-      }
-
-      if (SDL_SCANCODE_LCTRL < scancodeCount &&
-          keyboardState[SDL_SCANCODE_LCTRL])
-      {
-        result |= KeyboardModifiers_Control;
-      }
-
-      if (SDL_SCANCODE_RCTRL < scancodeCount &&
-          keyboardState[SDL_SCANCODE_RCTRL])
-      {
-        result |= KeyboardModifiers_Control;
-      }
-
-      if (SDL_SCANCODE_LALT < scancodeCount &&
-          keyboardState[SDL_SCANCODE_LALT])
-      {
-        result |= KeyboardModifiers_Alt;
-      }
-
-      if (SDL_SCANCODE_RALT < scancodeCount &&
-          keyboardState[SDL_SCANCODE_RALT])
-      {
-        result |= KeyboardModifiers_Alt;
-      }
-    }
-
-    return static_cast<KeyboardModifiers>(result);
-  }
-
-
-  SdlEngine::SdlEngine(SdlWindow& window,
-                       NativeStoneApplicationContext& context) :
-    window_(window),
-    context_(context),
-    surface_(window),
-    viewportChanged_(true)
-  {
-  }
-  
-
-  void SdlEngine::Run()
-  {
-    int scancodeCount = 0;
-    const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
-
-    SetSize(window_.GetWidth(), window_.GetHeight());
-    
-    {
-      NativeStoneApplicationContext::GlobalMutexLocker locker(context_);
-      locker.GetCentralViewport().FitContent();
-    }
-    
-    bool stop = false;
-    while (!stop)
-    {
-      RenderFrame();
-
-      SDL_Event event;
-
-      while (!stop &&
-             SDL_PollEvent(&event))
-      {
-        NativeStoneApplicationContext::GlobalMutexLocker locker(context_);
-
-        if (event.type == SDL_QUIT)
-        {
-          stop = true;
-          break;
-        }
-        else if (event.type == SDL_MOUSEBUTTONDOWN)
-        {
-          KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
-
-          switch (event.button.button)
-          {
-          case SDL_BUTTON_LEFT:
-            locker.GetCentralViewport().MouseDown(MouseButton_Left, event.button.x, event.button.y, modifiers, std::vector<Deprecated::Touch>());
-            break;
-            
-          case SDL_BUTTON_RIGHT:
-            locker.GetCentralViewport().MouseDown(MouseButton_Right, event.button.x, event.button.y, modifiers, std::vector<Deprecated::Touch>());
-            break;
-            
-          case SDL_BUTTON_MIDDLE:
-            locker.GetCentralViewport().MouseDown(MouseButton_Middle, event.button.x, event.button.y, modifiers, std::vector<Deprecated::Touch>());
-            break;
-
-          default:
-            break;
-          }
-        }
-        else if (event.type == SDL_MOUSEMOTION)
-        {
-          locker.GetCentralViewport().MouseMove(event.button.x, event.button.y, std::vector<Deprecated::Touch>());
-        }
-        else if (event.type == SDL_MOUSEBUTTONUP)
-        {
-          locker.GetCentralViewport().MouseUp();
-        }
-        else if (event.type == SDL_WINDOWEVENT)
-        {
-          switch (event.window.event)
-          {
-          case SDL_WINDOWEVENT_LEAVE:
-            locker.GetCentralViewport().MouseLeave();
-            break;
-
-          case SDL_WINDOWEVENT_ENTER:
-            locker.GetCentralViewport().MouseEnter();
-            break;
-
-          case SDL_WINDOWEVENT_SIZE_CHANGED:
-            SetSize(event.window.data1, event.window.data2);
-            break;
-
-          default:
-            break;
-          }
-        }
-        else if (event.type == SDL_MOUSEWHEEL)
-        {
-          KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
-
-          int x, y;
-          SDL_GetMouseState(&x, &y);
-
-          if (event.wheel.y > 0)
-          {
-            locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Up, x, y, modifiers);
-          }
-          else if (event.wheel.y < 0)
-          {
-            locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Down, x, y, modifiers);
-          }
-        }
-        else if (event.type == SDL_KEYDOWN &&
-                 event.key.repeat == 0 /* Ignore key bounce */)
-        {
-          KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
-
-          switch (event.key.keysym.sym)
-          {
-          case SDLK_a:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'a', modifiers);  break;
-          case SDLK_b:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'b', modifiers);  break;
-          case SDLK_c:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'c', modifiers);  break;
-          case SDLK_d:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'd', modifiers);  break;
-          case SDLK_e:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'e', modifiers);  break;
-          case SDLK_f:    window_.ToggleMaximize();                         break;
-          case SDLK_g:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'g', modifiers);  break;
-          case SDLK_h:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'h', modifiers);  break;
-          case SDLK_i:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'i', modifiers);  break;
-          case SDLK_j:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'j', modifiers);  break;
-          case SDLK_k:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'k', modifiers);  break;
-          case SDLK_l:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'l', modifiers);  break;
-          case SDLK_m:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'm', modifiers);  break;
-          case SDLK_n:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'n', modifiers);  break;
-          case SDLK_o:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'o', modifiers);  break;
-          case SDLK_p:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'p', modifiers);  break;
-          case SDLK_q:    stop = true;                                      break;
-          case SDLK_r:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'r', modifiers);  break;
-          case SDLK_s:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 's', modifiers);  break;
-          case SDLK_t:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 't', modifiers);  break;
-          case SDLK_u:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'u', modifiers);  break;
-          case SDLK_v:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'v', modifiers);  break;
-          case SDLK_w:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'w', modifiers);  break;
-          case SDLK_x:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'x', modifiers);  break;
-          case SDLK_y:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'y', modifiers);  break;
-          case SDLK_z:    locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'z', modifiers);  break;
-          case SDLK_KP_0: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '0', modifiers);  break;
-          case SDLK_KP_1: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '1', modifiers);  break;
-          case SDLK_KP_2: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '2', modifiers);  break;
-          case SDLK_KP_3: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '3', modifiers);  break;
-          case SDLK_KP_4: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '4', modifiers);  break;
-          case SDLK_KP_5: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '5', modifiers);  break;
-          case SDLK_KP_6: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '6', modifiers);  break;
-          case SDLK_KP_7: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '7', modifiers);  break;
-          case SDLK_KP_8: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '8', modifiers);  break;
-          case SDLK_KP_9: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '9', modifiers);  break;
-
-          case SDLK_PLUS:
-          case SDLK_KP_PLUS:
-            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '+', modifiers);  break;
-
-          case SDLK_MINUS:
-          case SDLK_KP_MINUS:
-            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '-', modifiers);  break;
-
-          case SDLK_DELETE:
-            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Delete, 0, modifiers);  break;
-          case SDLK_BACKSPACE:
-            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Backspace, 0, modifiers);  break;
-          case SDLK_RIGHT:
-            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Right, 0, modifiers);  break;
-          case SDLK_LEFT:
-            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Left, 0, modifiers);  break;
-          case SDLK_UP:
-            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Up, 0, modifiers);  break;
-          case SDLK_DOWN:
-            locker.GetCentralViewport().KeyPressed(KeyboardKeys_Down, 0, modifiers);  break;
-          default:
-            break;
-          }
-        }
-      }
-
-      // Small delay to avoid using 100% of CPU
-      SDL_Delay(1);
-    }
-  }
-}
-
-#endif
--- a/Resources/Graveyard/Deprecated/Applications/Sdl/SdlEngine.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include "../../Framework/Messages/ObserverBase.h"
-#include "../Generic/NativeStoneApplicationContext.h"
-#include "SdlCairoSurface.h"
-
-namespace OrthancStone
-{
-  class SdlEngine : public ObserverBase<SdlEngine>
-  {
-  private:
-    SdlWindow&                window_;
-    NativeStoneApplicationContext&  context_;
-    SdlCairoSurface           surface_;
-    bool                      viewportChanged_;
-
-    void SetSize(unsigned int width,
-                 unsigned int height);
-    
-    void RenderFrame();
-
-    static KeyboardModifiers GetKeyboardModifiers(const uint8_t* keyboardState,
-                                                  const int scancodeCount);
-
-  public:
-    SdlEngine(SdlWindow& window,
-              NativeStoneApplicationContext& context);
-  
-    void OnViewportChanged(const Deprecated::IViewport::ViewportChangedMessage& message)
-    {
-      viewportChanged_ = true;
-    }
-
-    void Run();
-  };
-}
-
-#endif
--- a/Resources/Graveyard/Deprecated/Applications/Sdl/SdlOrthancSurface.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SdlOrthancSurface.h"
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-#include <Core/Images/Image.h>
-
-#include <SDL_render.h>
-
-namespace OrthancStone
-{
-  SdlOrthancSurface::SdlOrthancSurface(SdlWindow& window) :
-    window_(window),
-    sdlSurface_(NULL)
-  {
-  }
-
-
-  SdlOrthancSurface::~SdlOrthancSurface()
-  {
-    if (sdlSurface_)
-    {
-      SDL_FreeSurface(sdlSurface_);
-    }
-  }
-
-
-  void SdlOrthancSurface::SetSize(unsigned int width,
-                                  unsigned int height)
-  {
-    if (image_.get() == NULL ||
-        image_->GetWidth() != width ||
-        image_->GetHeight() != height)
-    {
-      image_.reset(new Orthanc::Image(Orthanc::PixelFormat_BGRA32, width, height, true));  // (*)
-
-      if (image_->GetPitch() != image_->GetWidth() * 4)
-      {
-        // This should have been ensured by setting "forceMinimalPitch" to "true" (*)
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      // TODO Big endian?
-      static const uint32_t rmask = 0x00ff0000;
-      static const uint32_t gmask = 0x0000ff00;
-      static const uint32_t bmask = 0x000000ff;
-
-      if (sdlSurface_)
-      {
-        SDL_FreeSurface(sdlSurface_);
-      }
-
-      sdlSurface_ = SDL_CreateRGBSurfaceFrom(image_->GetBuffer(), width, height, 32,
-                                             image_->GetPitch(), rmask, gmask, bmask, 0);
-      if (!sdlSurface_)
-      {
-        LOG(ERROR) << "Cannot create a SDL surface from a Orthanc surface";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-    }
-  }
-
-
-  Orthanc::ImageAccessor& SdlOrthancSurface::GetImage()
-  {
-    if (image_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    return *image_;
-  }
-
-
-  void SdlOrthancSurface::Render()
-  {
-    if (image_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    window_.Render(sdlSurface_);
-  }
-}
-
-#endif
--- a/Resources/Graveyard/Deprecated/Applications/Sdl/SdlOrthancSurface.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include "../../Framework/Viewport/SdlWindow.h"
-
-#include <Core/Compatibility.h>
-#include <Core/Images/ImageAccessor.h>
-
-#include <boost/thread/mutex.hpp>
-
-namespace OrthancStone
-{
-  class SdlOrthancSurface : public boost::noncopyable
-  {
-  private:
-    std::unique_ptr<Orthanc::ImageAccessor>  image_;
-    SdlWindow&                             window_;
-    SDL_Surface*                           sdlSurface_;
-
-  public:
-    SdlOrthancSurface(SdlWindow& window);
-
-    ~SdlOrthancSurface();
-
-    void SetSize(unsigned int width,
-                 unsigned int height);
-
-    Orthanc::ImageAccessor& GetImage();
-
-    void Render();
-  };
-}
-
-#endif
--- a/Resources/Graveyard/Deprecated/Applications/Sdl/SdlStoneApplicationRunner.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#if ORTHANC_ENABLE_SDL != 1
-#error this file shall be included only with the ORTHANC_ENABLE_SDL set to 1
-#endif
-
-#include "SdlStoneApplicationRunner.h"
-
-#include "../../Platforms/Generic/OracleWebService.h"
-#include "SdlEngine.h"
-
-#include <Core/Logging.h>
-#include <Core/HttpClient.h>
-#include <Core/Toolbox.h>
-#include <Core/OrthancException.h>
-#include <Plugins/Samples/Common/OrthancHttpConnection.h>
-
-#include <boost/program_options.hpp>
-
-namespace OrthancStone
-{
-  void SdlStoneApplicationRunner::Initialize()
-  {
-    SdlWindow::GlobalInitialize();
-  }
-
-  
-  void SdlStoneApplicationRunner::DeclareCommandLineOptions(boost::program_options::options_description& options)
-  {
-    boost::program_options::options_description sdl("SDL options");
-    sdl.add_options()
-        ("width", boost::program_options::value<int>()->default_value(1024), "Initial width of the SDL window")
-        ("height", boost::program_options::value<int>()->default_value(768), "Initial height of the SDL window")
-        ("opengl", boost::program_options::value<bool>()->default_value(true), "Enable OpenGL in SDL")
-        ;
-
-    options.add(sdl);
-  }
-
-  
-  void SdlStoneApplicationRunner::ParseCommandLineOptions(const boost::program_options::variables_map& parameters)
-  {
-    if (!parameters.count("width") ||
-        !parameters.count("height") ||
-        !parameters.count("opengl"))
-    {
-      LOG(ERROR) << "Parameter \"width\", \"height\" or \"opengl\" is missing";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    int w = parameters["width"].as<int>();
-    int h = parameters["height"].as<int>();
-    if (w <= 0 || h <= 0)
-    {
-      LOG(ERROR) << "Parameters \"width\" and \"height\" must be positive";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
-    }
-
-    width_ = static_cast<unsigned int>(w);
-    height_ = static_cast<unsigned int>(h);
-    LOG(WARNING) << "Initial display size: " << width_ << "x" << height_;
-
-    enableOpenGl_ = parameters["opengl"].as<bool>();
-    if (enableOpenGl_)
-    {
-      LOG(WARNING) << "OpenGL is enabled, disable it with option \"--opengl=off\" if the application crashes";
-    }
-    else
-    {
-      LOG(WARNING) << "OpenGL is disabled, enable it with option \"--opengl=on\" for best performance";
-    }
-  }
-
-  
-  void SdlStoneApplicationRunner::Run(NativeStoneApplicationContext& context,
-                                      const std::string& title,
-                                      int argc,
-                                      char* argv[])
-  {
-    /**************************************************************
-     * Run the application inside a SDL window
-     **************************************************************/
-
-    LOG(WARNING) << "Starting the application";
-
-    SdlWindow window(title.c_str(), width_, height_, enableOpenGl_);
-    boost::shared_ptr<SdlEngine> sdl(new SdlEngine(window, context));
-
-    {
-      NativeStoneApplicationContext::GlobalMutexLocker locker(context);
-
-      sdl->Register<Deprecated::IViewport::ViewportChangedMessage>
-        (locker.GetCentralViewport(), &SdlEngine::OnViewportChanged);
-
-      //context.GetCentralViewport().Register(sdl);  // (*)
-    }
-
-    context.Start();
-    sdl->Run();
-
-    LOG(WARNING) << "Stopping the application";
-
-    // Don't move the "Stop()" command below out of the block,
-    // otherwise the application might crash, because the
-    // "SdlEngine" is an observer of the viewport (*) and the
-    // update thread started by "context.Start()" would call a
-    // destructed object (the "SdlEngine" is deleted with the
-    // lexical scope).
-
-    // TODO Is this still true with message broker?
-    context.Stop();
-  }
-
-  
-  void SdlStoneApplicationRunner::Finalize()
-  {
-    SdlWindow::GlobalFinalize();
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Sdl/SdlStoneApplicationRunner.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Generic/NativeStoneApplicationRunner.h"
-
-#if ORTHANC_ENABLE_SDL != 1
-#error this file shall be included only with the ORTHANC_ENABLE_SDL set to 1
-#endif
-
-#include <SDL.h>   // Necessary to avoid undefined reference to `SDL_main'
-
-namespace OrthancStone
-{
-  class SdlStoneApplicationRunner : public NativeStoneApplicationRunner
-  {
-  private:
-    unsigned int  width_;
-    unsigned int  height_;
-    bool          enableOpenGl_;
-    
-  public:
-    SdlStoneApplicationRunner(boost::shared_ptr<IStoneApplication> application) :
-      NativeStoneApplicationRunner(application)
-    {
-    }
-
-    virtual void Initialize();
-    
-    virtual void DeclareCommandLineOptions(boost::program_options::options_description& options);
-    
-    virtual void Run(NativeStoneApplicationContext& context,
-                     const std::string& title,
-                     int argc,
-                     char* argv[]);
-    
-    virtual void ParseCommandLineOptions(const boost::program_options::variables_map& parameters);
-    
-    virtual void Finalize();
-  };
-}
--- a/Resources/Graveyard/Deprecated/Applications/StoneApplicationContext.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "StoneApplicationContext.h"
-
-#include <Core/OrthancException.h>
-
-namespace OrthancStone
-{
-  void StoneApplicationContext::InitializeOrthanc()
-  {
-    if (webService_ == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-
-    orthanc_.reset(new Deprecated::OrthancApiClient(*webService_, orthancBaseUrl_));
-  }
-
-
-  boost::shared_ptr<Deprecated::IWebService> StoneApplicationContext::GetWebService()
-  {
-    if (webService_ == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    
-    return webService_;
-  }
-
-  
-  boost::shared_ptr<Deprecated::OrthancApiClient> StoneApplicationContext::GetOrthancApiClient()
-  {
-    if (orthanc_.get() == NULL)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    
-    return orthanc_;
-  }
-
-  
-  void StoneApplicationContext::SetWebService(boost::shared_ptr<Deprecated::IWebService> webService)
-  {
-    webService_ = webService;
-    InitializeOrthanc();
-  }
-
-
-  void StoneApplicationContext::SetOrthancBaseUrl(const std::string& baseUrl)
-  {
-    // Make sure the base url ends with "/"
-    if (baseUrl.empty() ||
-        baseUrl[baseUrl.size() - 1] != '/')
-    {
-      orthancBaseUrl_ = baseUrl + "/";
-    }
-    else
-    {
-      orthancBaseUrl_ = baseUrl;
-    }
-
-    if (webService_ != NULL)
-    {
-      InitializeOrthanc();
-    }
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/StoneApplicationContext.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Framework/Deprecated/Toolbox/IWebService.h"
-#include "../Framework/Deprecated/Toolbox/IDelayedCallExecutor.h"
-#include "../Framework/Deprecated/Toolbox/OrthancApiClient.h"
-#include "../Framework/Deprecated/Viewport/WidgetViewport.h"
-
-
-#ifdef _MSC_VER
-  #if _MSC_VER > 1910
-    #define orthanc_override override
-  #else
-    #define orthanc_override
-  #endif
-#elif defined __GNUC__
-  #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
-/* Test for GCC > 3.2.0 */
-  #if GCC_VERSION > 40900
-    #define orthanc_override override
-  #else
-    #define orthanc_override
-  #endif
-#else
-    #define orthanc_override
-#endif
-
-#include <list>
-
-namespace OrthancStone
-{
-  // a StoneApplicationContext contains the services that a StoneApplication
-  // uses and that depends on the environment in which the Application executes.
-  // I.e, the StoneApplicationContext provides a WebService interface such that
-  // the StoneApplication can perform HTTP requests.  In a WASM environment,
-  // the WebService is provided by the browser while, in a native environment,
-  // the WebService is provided by the OracleWebService (a C++ Http client)
-
-  class StoneApplicationContext : public boost::noncopyable
-  {
-  private:
-    boost::shared_ptr<Deprecated::IWebService>     webService_;
-    Deprecated::IDelayedCallExecutor*  delayedCallExecutor_;   // TODO => shared_ptr ??
-    boost::shared_ptr<Deprecated::OrthancApiClient>  orthanc_;
-    std::string                      orthancBaseUrl_;
-
-    void InitializeOrthanc();
-
-  public:
-    StoneApplicationContext() :
-      delayedCallExecutor_(NULL)
-    {
-    }
-
-    virtual ~StoneApplicationContext()
-    {
-    }
-
-    boost::shared_ptr<Deprecated::IWebService> GetWebService();
-
-    boost::shared_ptr<Deprecated::OrthancApiClient> GetOrthancApiClient();
-
-    void SetWebService(boost::shared_ptr<Deprecated::IWebService> webService);
-
-    void SetOrthancBaseUrl(const std::string& baseUrl);
-
-    void SetDelayedCallExecutor(Deprecated::IDelayedCallExecutor& delayedCallExecutor)
-    {
-      delayedCallExecutor_ = &delayedCallExecutor;
-    }
-
-    Deprecated::IDelayedCallExecutor& GetDelayedCallExecutor()
-    {
-      return *delayedCallExecutor_;
-    }
-  };
-}
--- a/Resources/Graveyard/Deprecated/Applications/Wasm/StartupParametersBuilder.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "StartupParametersBuilder.h"
-#include <iostream>
-#include <cstdio>
-#include "emscripten/html5.h"
-
-namespace OrthancStone
-{
-  void StartupParametersBuilder::Clear()
-  {
-    startupParameters_.clear();
-  }
-
-  void StartupParametersBuilder::SetStartupParameter(
-    const char* name,
-    const char* value)
-  {
-    startupParameters_.push_back(std::make_tuple(name, value));
-  }
-
-  void StartupParametersBuilder::GetStartupParameters(
-    boost::program_options::variables_map& parameters,
-    const boost::program_options::options_description& options) 
-  {
-    std::vector<std::string> argvStrings(startupParameters_.size() + 1);
-    // argv mirrors pointers to the internal argvStrings buffers.
-    // ******************************************************
-    // THIS IS HIGHLY DANGEROUS SO BEWARE!!!!!!!!!!!!!!
-    // ******************************************************
-    std::vector<const char*> argv(startupParameters_.size() + 1);
-    
-    int argCounter = 0;
-    argvStrings[argCounter] = "dummy.exe";
-    argv[argCounter] = argvStrings[argCounter].c_str();
-    
-    argCounter++;
-    
-    std::string cmdLine = "";
-    for ( StartupParameters::const_iterator it = startupParameters_.begin(); 
-          it != startupParameters_.end(); 
-          it++)
-    {
-      std::stringstream argSs;
-
-      argSs << "--" << std::get<0>(*it);
-      if(std::get<1>(*it).length() > 0)
-        argSs << "=" << std::get<1>(*it);
-      
-      argvStrings[argCounter] = argSs.str();
-      cmdLine = cmdLine + " " + argvStrings[argCounter];
-      std::cout << cmdLine << std::endl;
-      argv[argCounter] = argvStrings[argCounter].c_str();
-      argCounter++;
-    }
-
-
-    std::cout << "simulated cmdLine = \"" << cmdLine.c_str() << "\"\n";
-
-    try
-    {
-      boost::program_options::store(
-        boost::program_options::command_line_parser(argCounter, argv.data()).
-          options(options).allow_unregistered().run(), parameters);
-      boost::program_options::notify(parameters);
-    }
-    catch (boost::program_options::error& e)
-    {
-      std::cerr << "Error while parsing the command-line arguments: " <<
-        e.what() << std::endl;    
-    }
-  }
-}
--- a/Resources/Graveyard/Deprecated/Applications/Wasm/StartupParametersBuilder.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/program_options.hpp>
-#include <tuple>
-
-#if ORTHANC_ENABLE_SDL == 1
-#error this file shall be included only with the ORTHANC_ENABLE_SDL set to 0
-#endif
-
-namespace OrthancStone
-{
-  // This class is used to generate boost program options from a dico.
-  // In a Wasm context, startup options are passed as URI arguments that
-  // are then passed to this class as a dico.
-  // This class regenerates a fake command-line and parses it to produce
-  // the same output as if the app was started at command-line.
-  class StartupParametersBuilder
-  {
-    typedef std::list<std::tuple<std::string, std::string>> StartupParameters;
-    StartupParameters startupParameters_;
-
-  public:
-
-    void Clear();
-    // Please note that if a parameter is a flag-style one, the value that 
-    // is passed should be an empty string
-    void SetStartupParameter(const char* name, const char* value);
-    void GetStartupParameters(
-      boost::program_options::variables_map& parameters_, 
-      const boost::program_options::options_description& options);
-  };
-
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/DelayedCallCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DelayedCallCommand.h"
-#include "boost/thread/thread.hpp"
-
-#include <iostream>
-
-namespace Deprecated
-{
-  DelayedCallCommand::DelayedCallCommand(MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,  // takes ownership
-                                         unsigned int timeoutInMs,
-                                         Orthanc::IDynamicObject* payload /* takes ownership */,
-                                         OrthancStone::NativeStoneApplicationContext& context
-                                         ) :
-    callback_(callback),
-    payload_(payload),
-    context_(context),
-    expirationTimePoint_(boost::posix_time::microsec_clock::local_time() + boost::posix_time::milliseconds(timeoutInMs)),
-    timeoutInMs_(timeoutInMs)
-  {
-  }
-
-
-  void DelayedCallCommand::Execute()
-  {
-    while (boost::posix_time::microsec_clock::local_time() < expirationTimePoint_)
-    {
-      boost::this_thread::sleep(boost::posix_time::milliseconds(1));
-    }
-  }
-
-  void DelayedCallCommand::Commit()
-  {
-    // We want to make sure that, i.e, the UpdateThread is not
-    // triggered while we are updating the "model" with the result of
-    // an OracleCommand
-    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker lock(context_);
-
-    if (callback_.get() != NULL)
-    {
-      IDelayedCallExecutor::TimeoutMessage message; // TODO: add payload
-      callback_->Apply(message);
-    }
-  }
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/DelayedCallCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IOracleCommand.h"
-
-#include "../../Framework/Deprecated/Toolbox/IDelayedCallExecutor.h"
-#include "../../Framework/Messages/IObservable.h"
-#include "../../Framework/Messages/ICallable.h"
-#include "../../Applications/Generic/NativeStoneApplicationContext.h"
-
-#include <boost/date_time/posix_time/posix_time.hpp>
-
-namespace Deprecated
-{
-  class DelayedCallCommand : public IOracleCommand, OrthancStone::IObservable
-  {
-  protected:
-    std::unique_ptr<MessageHandler<IDelayedCallExecutor::TimeoutMessage> >  callback_;
-    std::unique_ptr<Orthanc::IDynamicObject>  payload_;
-    OrthancStone::NativeStoneApplicationContext&          context_;
-    boost::posix_time::ptime                expirationTimePoint_;
-    unsigned int                            timeoutInMs_;
-
-  public:
-    DelayedCallCommand(MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,  // takes ownership
-                       unsigned int timeoutInMs,
-                       Orthanc::IDynamicObject* payload /* takes ownership */,
-                       OrthancStone::NativeStoneApplicationContext& context
-                       );
-
-    virtual void Execute();
-
-    virtual void Commit();
-  };
-
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/IOracleCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <Core/IDynamicObject.h>
-
-namespace Deprecated
-{
-  class IOracleCommand : public Orthanc::IDynamicObject
-  {
-  public:
-    virtual ~IOracleCommand()
-    {
-    }
-
-    // This part of the command can be invoked simultaneously, and
-    // must not modify the Stone context
-    virtual void Execute() = 0;
-
-    // This part of the command must be invoked in mutual exclusion
-    virtual void Commit() = 0;
-  };
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/Oracle.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "Oracle.h"
-
-#include <Core/Logging.h>
-#include <Core/MultiThreading/SharedMessageQueue.h>
-#include <Core/OrthancException.h>
-
-#include <vector>
-#include <stdio.h>
-#include <boost/thread/mutex.hpp>
-
-namespace Deprecated
-{
-  class Oracle::PImpl
-  {
-  private:
-    enum State
-    {
-      State_Init,
-      State_Started,
-      State_Stopped
-    };
-
-    boost::mutex                   oracleMutex_;
-    State                          state_;
-    std::vector<boost::thread*>    threads_;
-    Orthanc::SharedMessageQueue    queue_;
-
-    static void Worker(PImpl* that)
-    {
-      for (;;)
-      {
-        State state;
-        
-        {
-          boost::mutex::scoped_lock lock(that->oracleMutex_);
-          state = that->state_;
-        }
-
-        if (state == State_Stopped)
-        {
-          break;
-        }
-
-        std::unique_ptr<Orthanc::IDynamicObject> item(that->queue_.Dequeue(100));
-        if (item.get() != NULL)
-        {
-          IOracleCommand& command = dynamic_cast<IOracleCommand&>(*item);
-          try
-          {
-            command.Execute();
-          }
-          catch (Orthanc::OrthancException& /*ex*/)
-          {
-            // this is probably a curl error that has been triggered.  We may just ignore it.
-            // The command.success_ will stay at false and this will be handled in the command.Commit
-          }
-
-          // Random sleeping to test
-          //boost::this_thread::sleep(boost::posix_time::milliseconds(50 * (1 + rand() % 10)));
-
-          command.Commit();
-        }
-      }
-    }
-    
-  public:
-    PImpl(unsigned int threadCount) :
-      state_(State_Init),
-      threads_(threadCount)
-    {
-    }
-
-    ~PImpl()
-    {
-      if (state_ == State_Started)
-      {
-        LOG(ERROR) << "You should have manually called Oracle::Stop()";
-        Stop();
-      }
-    }
-
-    Orthanc::SharedMessageQueue& GetQueue()
-    {
-      return queue_;
-    }
-
-    void Submit(IOracleCommand* command)
-    {
-      std::unique_ptr<IOracleCommand> protection(command);
-
-      if (command == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-      
-      boost::mutex::scoped_lock lock(oracleMutex_);
-
-      switch (state_)
-      {
-        case State_Init:
-        case State_Started:
-          queue_.Enqueue(protection.release());
-          break;
-
-        case State_Stopped:
-          LOG(ERROR) << "Cannot schedule a request to the Oracle after having "
-                     << "called Oracle::Stop()";
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-      
-    }
-
-    void Start()
-    {
-      boost::mutex::scoped_lock lock(oracleMutex_);
-
-      if (state_ != State_Init)
-      {
-        LOG(ERROR) << "Oracle::PImpl::Start: (state_ != State_Init)";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      
-      for (size_t i = 0; i < threads_.size(); i++)
-      {
-        threads_[i] = new boost::thread(Worker, this);
-      }
-
-      state_ = State_Started;
-    }
-
-    void Stop()
-    {
-      {
-        boost::mutex::scoped_lock lock(oracleMutex_);
-
-        if (state_ != State_Started)
-        {
-          LOG(ERROR) << "Oracle::PImpl::Stop(): (state_ != State_Started)";
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-        }
-
-        state_ = State_Stopped;
-      }
-      
-      for (size_t i = 0; i < threads_.size(); i++)
-      {
-        if (threads_[i] != NULL)
-        {
-          if (threads_[i]->joinable())
-          {
-            threads_[i]->join();
-          }
-
-          delete threads_[i];
-        }
-      }
-    }
-  };
-  
-
-  Oracle::Oracle(unsigned int threadCount) :
-    pimpl_(new PImpl(threadCount))
-  {
-  }
-
-  void Oracle::Start()
-  {
-    pimpl_->Start();
-  }
-
-
-  void Oracle::Submit(IOracleCommand* command)
-  {
-    pimpl_->Submit(command);
-  }
-     
-   
-  void Oracle::Stop()
-  {
-    pimpl_->Stop();
-  }
-
-
-  void Oracle::WaitEmpty()
-  {
-    pimpl_->GetQueue().WaitEmpty(50);
-  }
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/Oracle.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IOracleCommand.h"
-
-#include <boost/shared_ptr.hpp>
-
-namespace Deprecated
-{
-  class Oracle : public boost::noncopyable
-  {
-  private:
-    class PImpl;
-  
-    boost::shared_ptr<PImpl>  pimpl_;
-
-  public:
-    Oracle(unsigned int threadCount);
-
-    void Start();
-
-    void Submit(IOracleCommand* command);
-        
-    void WaitEmpty();  // For unit tests
-
-    void Stop();
-  };
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/OracleDelayedCallExecutor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Deprecated/Toolbox/IDelayedCallExecutor.h"
-#include "Oracle.h"
-#include "../../Applications/Generic/NativeStoneApplicationContext.h"
-#include "DelayedCallCommand.h"
-
-namespace Deprecated
-{
-  // The OracleTimeout executes callbacks after a delay.
-  class OracleDelayedCallExecutor : public IDelayedCallExecutor
-  {
-  private:
-    Oracle&                        oracle_;
-    OrthancStone::NativeStoneApplicationContext& context_;
-
-  public:
-    OracleDelayedCallExecutor(Oracle& oracle,
-                              OrthancStone::NativeStoneApplicationContext& context) :
-      oracle_(oracle),
-      context_(context)
-    {
-    }
-
-    virtual void Schedule(MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,
-                          unsigned int timeoutInMs = 1000)
-    {
-      oracle_.Submit(new DelayedCallCommand(callback, timeoutInMs, NULL, context_));
-    }
-  };
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/OracleWebService.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "OracleWebService.h"
-#include "../../Framework/Deprecated/Toolbox/IWebService.h"
-
-namespace Deprecated
-{
-
-
-  class OracleWebService::WebServiceCachedGetCommand : public IOracleCommand, OrthancStone::IObservable
-  {
-  protected:
-    std::unique_ptr<MessageHandler<IWebService::HttpRequestSuccessMessage> >  successCallback_;
-    std::unique_ptr<Orthanc::IDynamicObject>                                  payload_;
-    boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage>      cachedMessage_;
-    OrthancStone::NativeStoneApplicationContext&                                          context_;
-
-  public:
-    WebServiceCachedGetCommand(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
-                               boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedMessage,
-                               Orthanc::IDynamicObject* payload /* takes ownership */,
-                               OrthancStone::NativeStoneApplicationContext& context
-                               ) :
-      successCallback_(successCallback),
-      payload_(payload),
-      cachedMessage_(cachedMessage),
-      context_(context)
-    {
-    }
-
-    virtual void Execute()
-    {
-      // nothing to do, everything is in the commit
-    }
-
-    virtual void Commit()
-    {
-      // We want to make sure that, i.e, the UpdateThread is not
-      // triggered while we are updating the "model" with the result of
-      // a WebServiceCommand
-      OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker lock(context_);
-
-      IWebService::HttpRequestSuccessMessage successMessage(cachedMessage_->GetUri(),
-                                                            cachedMessage_->GetAnswer(),
-                                                            cachedMessage_->GetAnswerSize(),
-                                                            cachedMessage_->GetAnswerHttpHeaders(),
-                                                            payload_.get());
-
-      successCallback_->Apply(successMessage);
-    }
-  };
-
-  void OracleWebService::NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedMessage,
-                                                Orthanc::IDynamicObject* payload, // takes ownership
-                                                MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback)
-  {
-    oracle_.Submit(new WebServiceCachedGetCommand(successCallback, cachedMessage, payload, context_));
-  }
-
-
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/OracleWebService.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Deprecated/Toolbox/BaseWebService.h"
-#include "Oracle.h"
-#include "WebServiceGetCommand.h"
-#include "WebServicePostCommand.h"
-#include "WebServiceDeleteCommand.h"
-#include "../../Applications/Generic/NativeStoneApplicationContext.h"
-
-namespace Deprecated
-{
-  // The OracleWebService performs HTTP requests in a native environment.
-  // It uses a thread pool to handle multiple HTTP requests in a same time.
-  // It works asynchronously to mimick the behaviour of the WebService running in a WASM environment.
-  class OracleWebService : public BaseWebService
-  {
-  private:
-    Oracle&                        oracle_;
-    OrthancStone::NativeStoneApplicationContext& context_;
-    Orthanc::WebServiceParameters  parameters_;
-
-    class WebServiceCachedGetCommand;
-
-  public:
-    OracleWebService(Oracle& oracle,
-                     const Orthanc::WebServiceParameters& parameters,
-                     OrthancStone::NativeStoneApplicationContext& context) :
-      oracle_(oracle),
-      context_(context),
-      parameters_(parameters)
-    {
-    }
-
-    virtual void PostAsync(const std::string& uri,
-                           const HttpHeaders& headers,
-                           const std::string& body,
-                           Orthanc::IDynamicObject* payload, // takes ownership
-                           MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, // takes ownership
-                           MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, // takes ownership
-                           unsigned int timeoutInSeconds = 60)
-    {
-      oracle_.Submit(new WebServicePostCommand(successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, body, payload, context_));
-    }
-
-    virtual void DeleteAsync(const std::string& uri,
-                             const HttpHeaders& headers,
-                             Orthanc::IDynamicObject* payload,
-                             MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
-                             MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
-                             unsigned int timeoutInSeconds = 60)
-    {
-      oracle_.Submit(new WebServiceDeleteCommand(successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_));
-    }
-
-  protected:
-    virtual void GetAsyncInternal(const std::string& uri,
-                                  const HttpHeaders& headers,
-                                  Orthanc::IDynamicObject* payload, // takes ownership
-                                  MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,   // takes ownership
-                                  MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,// takes ownership
-                                  unsigned int timeoutInSeconds = 60)
-    {
-      oracle_.Submit(new WebServiceGetCommand(successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_));
-    }
-
-    virtual void NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedHttpMessage,
-                                        Orthanc::IDynamicObject* payload, // takes ownership
-                                        MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback);
-
-  };
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceCommandBase.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebServiceCommandBase.h"
-
-#include <Core/HttpClient.h>
-
-namespace Deprecated
-{
-  WebServiceCommandBase::WebServiceCommandBase(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
-                                               MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
-                                               const Orthanc::WebServiceParameters& parameters,
-                                               const std::string& url,
-                                               const IWebService::HttpHeaders& headers,
-                                               unsigned int timeoutInSeconds,
-                                               Orthanc::IDynamicObject* payload /* takes ownership */,
-                                               OrthancStone::NativeStoneApplicationContext& context) :
-    successCallback_(successCallback),
-    failureCallback_(failureCallback),
-    parameters_(parameters),
-    url_(url),
-    headers_(headers),
-    payload_(payload),
-    success_(false),
-    httpStatus_(Orthanc::HttpStatus_None),
-    context_(context),
-    timeoutInSeconds_(timeoutInSeconds)
-  {
-  }
-
-
-  void WebServiceCommandBase::Commit()
-  {
-    // We want to make sure that, i.e, the UpdateThread is not
-    // triggered while we are updating the "model" with the result of
-    // a WebServiceCommand
-    OrthancStone::NativeStoneApplicationContext::GlobalMutexLocker lock(context_); 
-
-    if (success_ && successCallback_.get() != NULL)
-    {
-      IWebService::HttpRequestSuccessMessage message
-        (url_, answer_.c_str(), answer_.size(), answerHeaders_, payload_.get());
-      successCallback_->Apply(message);
-    }
-    else if (!success_ && failureCallback_.get() != NULL)
-    {
-      IWebService::HttpRequestErrorMessage message(url_, httpStatus_, payload_.get());
-      failureCallback_->Apply(message);
-    }
-  }
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceCommandBase.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IOracleCommand.h"
-
-#include "../../Framework/Deprecated/Toolbox/IWebService.h"
-#include "../../Framework/Messages/IObservable.h"
-#include "../../Framework/Messages/ICallable.h"
-#include "../../Applications/Generic/NativeStoneApplicationContext.h"
-
-#include <Core/WebServiceParameters.h>
-
-#include <memory>
-
-namespace Deprecated
-{
-  class WebServiceCommandBase : public IOracleCommand, OrthancStone::IObservable
-  {
-  protected:
-    std::unique_ptr<MessageHandler<IWebService::HttpRequestSuccessMessage> >  successCallback_;
-    std::unique_ptr<MessageHandler<IWebService::HttpRequestErrorMessage> >    failureCallback_;
-    Orthanc::WebServiceParameters           parameters_;
-    std::string                             url_;
-    IWebService::HttpHeaders                headers_;
-    std::unique_ptr<Orthanc::IDynamicObject>  payload_;
-    bool                                    success_;
-    Orthanc::HttpStatus                     httpStatus_;
-    std::string                             answer_;
-    IWebService::HttpHeaders                answerHeaders_;
-    OrthancStone::NativeStoneApplicationContext&          context_;
-    unsigned int                            timeoutInSeconds_;
-
-  public:
-    WebServiceCommandBase(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
-                          MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
-                          const Orthanc::WebServiceParameters& parameters,
-                          const std::string& url,
-                          const IWebService::HttpHeaders& headers,
-                          unsigned int timeoutInSeconds,
-                          Orthanc::IDynamicObject* payload /* takes ownership */,
-                          OrthancStone::NativeStoneApplicationContext& context
-                          );
-
-    virtual void Execute() = 0;
-
-    virtual void Commit();
-  };
-
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceDeleteCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebServiceDeleteCommand.h"
-
-#include <Core/HttpClient.h>
-
-namespace Deprecated
-{
-  WebServiceDeleteCommand::WebServiceDeleteCommand(MessageHandler<Deprecated::IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
-                                                   MessageHandler<Deprecated::IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
-                                                   const Orthanc::WebServiceParameters& parameters,
-                                                   const std::string& url,
-                                                   const Deprecated::IWebService::HttpHeaders& headers,
-                                                   unsigned int timeoutInSeconds,
-                                                   Orthanc::IDynamicObject* payload /* takes ownership */,
-                                                   OrthancStone::NativeStoneApplicationContext& context) :
-    WebServiceCommandBase(successCallback, failureCallback, parameters, url, headers, timeoutInSeconds, payload, context)
-  {
-  }
-
-  void WebServiceDeleteCommand::Execute()
-  {
-    Orthanc::HttpClient client(parameters_, "/");
-    client.SetUrl(url_);
-    client.SetTimeout(timeoutInSeconds_);
-    client.SetMethod(Orthanc::HttpMethod_Delete);
-
-    for (Deprecated::IWebService::HttpHeaders::const_iterator it = headers_.begin(); it != headers_.end(); it++ )
-    {
-      client.AddHeader(it->first, it->second);
-    }
-
-    success_ = client.Apply(answer_, answerHeaders_);
-    httpStatus_ = client.GetLastStatus();
-  }
-
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceDeleteCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WebServiceCommandBase.h"
-
-namespace Deprecated
-{
-  class WebServiceDeleteCommand : public WebServiceCommandBase
-  {
-  public:
-    WebServiceDeleteCommand(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
-                            MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
-                            const Orthanc::WebServiceParameters& parameters,
-                            const std::string& url,
-                            const IWebService::HttpHeaders& headers,
-                            unsigned int timeoutInSeconds,
-                            Orthanc::IDynamicObject* payload /* takes ownership */,
-                            OrthancStone::NativeStoneApplicationContext& context);
-
-    virtual void Execute();
-  };
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceGetCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebServiceGetCommand.h"
-
-#include <Core/HttpClient.h>
-
-namespace Deprecated
-{
-  WebServiceGetCommand::WebServiceGetCommand(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
-                                             MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
-                                             const Orthanc::WebServiceParameters& parameters,
-                                             const std::string& url,
-                                             const IWebService::HttpHeaders& headers,
-                                             unsigned int timeoutInSeconds,
-                                             Orthanc::IDynamicObject* payload /* takes ownership */,
-                                             OrthancStone::NativeStoneApplicationContext& context) :
-    WebServiceCommandBase(successCallback, failureCallback, parameters, url, headers, timeoutInSeconds, payload, context)
-  {
-  }
-
-
-  void WebServiceGetCommand::Execute()
-  {
-    Orthanc::HttpClient client(parameters_, "/");
-    client.SetUrl(url_);
-    client.SetTimeout(timeoutInSeconds_);
-    client.SetMethod(Orthanc::HttpMethod_Get);
-
-    for (IWebService::HttpHeaders::const_iterator it = headers_.begin(); it != headers_.end(); it++ )
-    {
-      client.AddHeader(it->first, it->second);
-    }
-
-    success_ = client.Apply(answer_, answerHeaders_);
-    httpStatus_ = client.GetLastStatus();
-  }
-
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/WebServiceGetCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WebServiceCommandBase.h"
-
-namespace Deprecated
-{
-  class WebServiceGetCommand : public WebServiceCommandBase
-  {
-  public:
-    WebServiceGetCommand(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
-                         MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
-                         const Orthanc::WebServiceParameters& parameters,
-                         const std::string& url,
-                         const IWebService::HttpHeaders& headers,
-                         unsigned int timeoutInSeconds,
-                         Orthanc::IDynamicObject* payload /* takes ownership */,
-                         OrthancStone::NativeStoneApplicationContext& context);
-
-    virtual void Execute();
-  };
-
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/WebServicePostCommand.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WebServicePostCommand.h"
-
-#include <Core/HttpClient.h>
-
-namespace Deprecated
-{
-  WebServicePostCommand::WebServicePostCommand(MessageHandler<Deprecated::IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
-                                               MessageHandler<Deprecated::IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
-                                               const Orthanc::WebServiceParameters& parameters,
-                                               const std::string& url,
-                                               const Deprecated::IWebService::HttpHeaders& headers,
-                                               unsigned int timeoutInSeconds,
-                                               const std::string& body,
-                                               Orthanc::IDynamicObject* payload /* takes ownership */,
-                                               OrthancStone::NativeStoneApplicationContext& context) :
-    WebServiceCommandBase(successCallback, failureCallback, parameters, url, headers, timeoutInSeconds, payload, context),
-    body_(body)
-  {
-  }
-
-  void WebServicePostCommand::Execute()
-  {
-    Orthanc::HttpClient client(parameters_, "/");
-    client.SetUrl(url_);
-    client.SetTimeout(timeoutInSeconds_);
-    client.SetMethod(Orthanc::HttpMethod_Post);
-    client.GetBody().swap(body_);
-
-    for (Deprecated::IWebService::HttpHeaders::const_iterator it = headers_.begin(); it != headers_.end(); it++ )
-    {
-      client.AddHeader(it->first, it->second);
-    }
-
-    success_ = client.Apply(answer_, answerHeaders_);
-    httpStatus_ = client.GetLastStatus();
-  }
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Generic/WebServicePostCommand.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "WebServiceCommandBase.h"
-
-namespace Deprecated
-{
-  class WebServicePostCommand : public WebServiceCommandBase
-  {
-  protected:
-    std::string  body_;
-
-  public:
-    WebServicePostCommand(MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,  // takes ownership
-                          MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,  // takes ownership
-                          const Orthanc::WebServiceParameters& parameters,
-                          const std::string& url,
-                          const IWebService::HttpHeaders& headers,
-                          unsigned int timeoutInSeconds,
-                          const std::string& body,
-                          Orthanc::IDynamicObject* payload /* takes ownership */,
-                          OrthancStone::NativeStoneApplicationContext& context);
-
-    virtual void Execute();
-  };
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/Defaults.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,437 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "Defaults.h"
-
-#include "WasmWebService.h"
-#include "WasmDelayedCallExecutor.h"
-#include "../../../Framework/Deprecated/Widgets/TestCairoWidget.h"
-#include "../../../Framework/Deprecated/Viewport/WidgetViewport.h"
-#include <Applications/Wasm/StartupParametersBuilder.h>
-#include <Platforms/Wasm/WasmPlatformApplicationAdapter.h>
-#include <Framework/StoneInitialization.h>
-#include <Core/Logging.h>
-#include <sstream>
-
-#include <algorithm>
-
-
-static unsigned int width_ = 0;
-static unsigned int height_ = 0;
-
-/**********************************/
-
-static std::unique_ptr<OrthancStone::IStoneApplication> application;
-static std::unique_ptr<OrthancStone::WasmPlatformApplicationAdapter> applicationWasmAdapter = NULL;
-static std::unique_ptr<OrthancStone::StoneApplicationContext> context;
-static OrthancStone::StartupParametersBuilder startupParametersBuilder;
-static OrthancStone::MessageBroker broker;
-
-static OrthancStone::ViewportContentChangedObserver viewportContentChangedObserver_(broker);
-static OrthancStone::StatusBar statusBar_;
-
-static std::list<std::shared_ptr<Deprecated::WidgetViewport>> viewports_;
-
-std::shared_ptr<Deprecated::WidgetViewport> FindViewportSharedPtr(ViewportHandle viewport) {
-  for (const auto& v : viewports_) {
-    if (v.get() == viewport) {
-      return v;
-    }
-  }
-  assert(false);
-  return std::shared_ptr<Deprecated::WidgetViewport>();
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if 0
-  // rewrite malloc/free in order to monitor allocations.  We actually only monitor large allocations (like images ...)
-
-  size_t bigChunksTotalSize = 0;
-  std::map<void*, size_t> allocatedBigChunks;
-
-  extern void* emscripten_builtin_malloc(size_t bytes);
-  extern void emscripten_builtin_free(void* mem);
-
-  void * __attribute__((noinline)) malloc(size_t size)
-  {
-    void *ptr = emscripten_builtin_malloc(size);
-    if (size > 100000)
-    {
-      bigChunksTotalSize += size;
-      printf("++ Allocated %zu bytes, got %p. (%zu MB consumed by big chunks)\n", size, ptr, bigChunksTotalSize/(1024*1024));
-      allocatedBigChunks[ptr] = size;
-    }
-    return ptr;
-  }
-
-  void __attribute__((noinline)) free(void *ptr)
-  {
-    emscripten_builtin_free(ptr);
-
-    std::map<void*, size_t>::iterator it = allocatedBigChunks.find(ptr);
-    if (it != allocatedBigChunks.end())
-    {
-      bigChunksTotalSize -= it->second;
-      printf("--     Freed %zu bytes at %p.   (%zu MB consumed by big chunks)\n", it->second, ptr, bigChunksTotalSize/(1024*1024));
-      allocatedBigChunks.erase(it);
-    }
-  }
-#endif // 0
-
-  using namespace OrthancStone;
-
-  // when WASM needs a C++ viewport
-  ViewportHandle EMSCRIPTEN_KEEPALIVE CreateCppViewport() {
-    
-    std::shared_ptr<Deprecated::WidgetViewport> viewport(new Deprecated::WidgetViewport(broker));
-    printf("viewport %x\n", (int)viewport.get());
-
-    viewports_.push_back(viewport);
-
-    printf("There are now %lu viewports in C++\n", viewports_.size());
-
-    viewport->SetStatusBar(statusBar_);
-
-    viewport->RegisterObserverCallback(
-      new Callable<ViewportContentChangedObserver, Deprecated::IViewport::ViewportChangedMessage>
-      (viewportContentChangedObserver_, &ViewportContentChangedObserver::OnViewportChanged));
-
-    return viewport.get();
-  }
-
-  // when WASM does not need a viewport anymore, it should release it 
-  void EMSCRIPTEN_KEEPALIVE ReleaseCppViewport(ViewportHandle viewport) {
-    viewports_.remove_if([viewport](const std::shared_ptr<Deprecated::WidgetViewport>& v) { return v.get() == viewport;});
-
-    printf("There are now %lu viewports in C++\n", viewports_.size());
-  }
-
-  void EMSCRIPTEN_KEEPALIVE CreateWasmApplication(ViewportHandle viewport) {
-    printf("Initializing Stone\n");
-    OrthancStone::StoneInitialize();
-    printf("CreateWasmApplication\n");
-
-    application.reset(CreateUserApplication(broker));
-    applicationWasmAdapter.reset(CreateWasmApplicationAdapter(broker, application.get())); 
-    Deprecated::WasmWebService::SetBroker(broker);
-    Deprecated::WasmDelayedCallExecutor::SetBroker(broker);
-
-    startupParametersBuilder.Clear();
-  }
-
-  void EMSCRIPTEN_KEEPALIVE SetStartupParameter(const char* keyc,
-                                                  const char* value) {
-    startupParametersBuilder.SetStartupParameter(keyc, value);
-  }
-
-  void EMSCRIPTEN_KEEPALIVE StartWasmApplication(const char* baseUri) {
-
-    printf("StartWasmApplication\n");
-
-    Orthanc::Logging::SetErrorWarnInfoTraceLoggingFunctions(
-      stone_console_error, stone_console_warning,
-      stone_console_info, stone_console_trace);
-
-    // recreate a command line from uri arguments and parse it
-    boost::program_options::variables_map parameters;
-    boost::program_options::options_description options;
-    application->DeclareStartupOptions(options);
-    startupParametersBuilder.GetStartupParameters(parameters, options);
-
-    context.reset(new OrthancStone::StoneApplicationContext(broker));
-    context->SetOrthancBaseUrl(baseUri);
-    printf("Base URL to Orthanc API: [%s]\n", baseUri);
-    context->SetWebService(Deprecated::WasmWebService::GetInstance());
-    context->SetDelayedCallExecutor(Deprecated::WasmDelayedCallExecutor::GetInstance());
-    application->Initialize(context.get(), statusBar_, parameters);
-    application->InitializeWasm();
-
-//    viewport->SetSize(width_, height_);
-    printf("StartWasmApplication - completed\n");
-  }
-  
-  bool EMSCRIPTEN_KEEPALIVE WasmIsTraceLevelEnabled()
-  {
-    return Orthanc::Logging::IsTraceLevelEnabled();
-  }
-
-  bool EMSCRIPTEN_KEEPALIVE WasmIsInfoLevelEnabled()
-  {
-    return Orthanc::Logging::IsInfoLevelEnabled();
-  }
-  
-  void EMSCRIPTEN_KEEPALIVE WasmDoAnimation()
-  {
-    for (auto viewport : viewports_) {
-      // TODO Only launch the JavaScript timer if "HasAnimation()"
-      if (viewport->HasAnimation())
-      {
-        viewport->DoAnimation();
-      }
-
-    }
-
-  }
-  
-
-  void EMSCRIPTEN_KEEPALIVE ViewportSetSize(ViewportHandle viewport, unsigned int width, unsigned int height)
-  {
-    width_ = width;
-    height_ = height;
-    
-    viewport->SetSize(width, height);
-  }
-
-  int EMSCRIPTEN_KEEPALIVE ViewportRender(ViewportHandle viewport,
-                                          unsigned int width,
-                                          unsigned int height,
-                                          uint8_t* data)
-  {
-    viewportContentChangedObserver_.Reset();
-
-    //printf("ViewportRender called %dx%d\n", width, height);
-    if (width == 0 ||
-        height == 0)
-    {
-      return 1;
-    }
-
-    Orthanc::ImageAccessor surface;
-    surface.AssignWritable(Orthanc::PixelFormat_BGRA32, width, height, 4 * width, data);
-
-    viewport->Render(surface);
-
-    // Convert from BGRA32 memory layout (only color mode supported by
-    // Cairo, which corresponds to CAIRO_FORMAT_ARGB32) to RGBA32 (as
-    // expected by HTML5 canvas). This simply amounts to swapping the
-    // B and R channels.
-    uint8_t* p = data;
-    for (unsigned int y = 0; y < height; y++) {
-      for (unsigned int x = 0; x < width; x++) {
-        uint8_t tmp = p[0];
-        p[0] = p[2];
-        p[2] = tmp;
-        
-        p += 4;
-      }
-    }
-
-    return 1;
-  }
-
-
-  void EMSCRIPTEN_KEEPALIVE ViewportMouseDown(ViewportHandle viewport,
-                                              unsigned int rawButton,
-                                              int x,
-                                              int y,
-                                              unsigned int rawModifiers)
-  {
-    OrthancStone::MouseButton button;
-    switch (rawButton)
-    {
-      case 0:
-        button = OrthancStone::MouseButton_Left;
-        break;
-
-      case 1:
-        button = OrthancStone::MouseButton_Middle;
-        break;
-
-      case 2:
-        button = OrthancStone::MouseButton_Right;
-        break;
-
-      default:
-        return;  // Unknown button
-    }
-
-    viewport->MouseDown(button, x, y, OrthancStone::KeyboardModifiers_None, std::vector<Deprecated::Touch>());
-  }
-  
-
-  void EMSCRIPTEN_KEEPALIVE ViewportMouseWheel(ViewportHandle viewport,
-                                               int deltaY,
-                                               int x,
-                                               int y,
-                                               int isControl)
-  {
-    if (deltaY != 0)
-    {
-      OrthancStone::MouseWheelDirection direction = (deltaY < 0 ?
-                                                     OrthancStone::MouseWheelDirection_Up :
-                                                     OrthancStone::MouseWheelDirection_Down);
-      OrthancStone::KeyboardModifiers modifiers = OrthancStone::KeyboardModifiers_None;
-
-      if (isControl != 0)
-      {
-        modifiers = OrthancStone::KeyboardModifiers_Control;
-      }
-
-      viewport->MouseWheel(direction, x, y, modifiers);
-    }
-  }
-  
-
-  void EMSCRIPTEN_KEEPALIVE ViewportMouseMove(ViewportHandle viewport,
-                                              int x,
-                                              int y)
-  {
-    viewport->MouseMove(x, y, std::vector<Deprecated::Touch>());
-  }
-
-  void GetTouchVector(std::vector<Deprecated::Touch>& output,
-                      int touchCount,
-                      float x0,
-                      float y0,
-                      float x1,
-                      float y1,
-                      float x2,
-                      float y2)
-  {
-    // TODO: it might be nice to try to pass all the x0,y0 coordinates as arrays but that's not so easy to pass array between JS and C++
-    if (touchCount > 0)
-    {
-      output.push_back(Deprecated::Touch(x0, y0));
-    }
-    if (touchCount > 1)
-    {
-      output.push_back(Deprecated::Touch(x1, y1));
-    }
-    if (touchCount > 2)
-    {
-      output.push_back(Deprecated::Touch(x2, y2));
-    }
-
-  }
-
-  void EMSCRIPTEN_KEEPALIVE ViewportTouchStart(ViewportHandle viewport,
-                                              int touchCount,
-                                              float x0,
-                                              float y0,
-                                              float x1,
-                                              float y1,
-                                              float x2,
-                                              float y2)
-  {
-    // printf("touch start with %d touches\n", touchCount);
-
-    std::vector<Deprecated::Touch> touches;
-    GetTouchVector(touches, touchCount, x0, y0, x1, y1, x2, y2);
-    viewport->TouchStart(touches);
-  }
-
-  void EMSCRIPTEN_KEEPALIVE ViewportTouchMove(ViewportHandle viewport,
-                                              int touchCount,
-                                              float x0,
-                                              float y0,
-                                              float x1,
-                                              float y1,
-                                              float x2,
-                                              float y2)
-  {
-    // printf("touch move with %d touches\n", touchCount);
-
-    std::vector<Deprecated::Touch> touches;
-    GetTouchVector(touches, touchCount, x0, y0, x1, y1, x2, y2);
-    viewport->TouchMove(touches);
-  }
-
-  void EMSCRIPTEN_KEEPALIVE ViewportTouchEnd(ViewportHandle viewport,
-                                              int touchCount,
-                                              float x0,
-                                              float y0,
-                                              float x1,
-                                              float y1,
-                                              float x2,
-                                              float y2)
-  {
-    // printf("touch end with %d touches remaining\n", touchCount);
-
-    std::vector<Deprecated::Touch> touches;
-    GetTouchVector(touches, touchCount, x0, y0, x1, y1, x2, y2);
-    viewport->TouchEnd(touches);
-  }
-
-  void EMSCRIPTEN_KEEPALIVE ViewportKeyPressed(ViewportHandle viewport,
-                                               int key,
-                                               const char* keyChar, 
-                                               bool isShiftPressed, 
-                                               bool isControlPressed,
-                                               bool isAltPressed)
-                                               
-  {
-    OrthancStone::KeyboardModifiers modifiers = OrthancStone::KeyboardModifiers_None;
-    if (isShiftPressed) {
-      modifiers = static_cast<OrthancStone::KeyboardModifiers>(modifiers + OrthancStone::KeyboardModifiers_Shift);
-    }
-    if (isControlPressed) {
-      modifiers = static_cast<OrthancStone::KeyboardModifiers>(modifiers + OrthancStone::KeyboardModifiers_Control);
-    }
-    if (isAltPressed) {
-      modifiers = static_cast<OrthancStone::KeyboardModifiers>(modifiers + OrthancStone::KeyboardModifiers_Alt);
-    }
-
-    char c = 0;
-    if (keyChar != NULL && key == OrthancStone::KeyboardKeys_Generic) {
-      c = keyChar[0];
-    }
-    viewport->KeyPressed(static_cast<OrthancStone::KeyboardKeys>(key), c, modifiers);
-  }
-  
-
-  void EMSCRIPTEN_KEEPALIVE ViewportMouseUp(ViewportHandle viewport)
-  {
-    viewport->MouseUp();
-  }
-  
-
-  void EMSCRIPTEN_KEEPALIVE ViewportMouseEnter(ViewportHandle viewport)
-  {
-    viewport->MouseEnter();
-  }
-  
-
-  void EMSCRIPTEN_KEEPALIVE ViewportMouseLeave(ViewportHandle viewport)
-  {
-    viewport->MouseLeave();
-  }
-
-  const char* EMSCRIPTEN_KEEPALIVE SendSerializedMessageToStoneApplication(const char* message) 
-  {
-    static std::string output; // we don't want the string to be deallocated when we return to JS code so we always use the same string (this is fine since JS is single-thread)
-
-    //printf("SendSerializedMessageToStoneApplication\n");
-    //printf("%s", message);
-
-    if (applicationWasmAdapter.get() != NULL) {
-      applicationWasmAdapter->HandleSerializedMessageFromWeb(output, std::string(message));
-      return output.c_str();
-    }
-    printf("This Stone application does not have a Web Adapter, unable to send messages");
-    return NULL;
-  }
-
-#ifdef __cplusplus
-}
-#endif
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/Defaults.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <emscripten/emscripten.h>
-
-#include "../../Framework/Deprecated/Viewport/WidgetViewport.h"
-#include "../../Framework/Deprecated/Widgets/LayoutWidget.h"
-#include <Applications/IStoneApplication.h>
-#include <Platforms/Wasm/WasmPlatformApplicationAdapter.h>
-
-typedef Deprecated::WidgetViewport* ViewportHandle; // the objects exchanged between JS and C++
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-  
-  // JS methods accessible from C++
-  extern void ScheduleWebViewportRedrawFromCpp(ViewportHandle cppViewportHandle);
-  extern void UpdateStoneApplicationStatusFromCppWithString(const char* statusUpdateMessage);
-  extern void UpdateStoneApplicationStatusFromCppWithSerializedMessage(const char* statusUpdateMessage);
-  extern void stone_console_error(const char*);
-  extern void stone_console_warning(const char*);
-  extern void stone_console_info(const char*);
-  extern void stone_console_trace(const char*);
-
-  // C++ methods accessible from JS
-  extern void EMSCRIPTEN_KEEPALIVE CreateWasmApplication(ViewportHandle cppViewportHandle);
-  extern void EMSCRIPTEN_KEEPALIVE SetStartupParameter(const char* keyc, const char* value);
-  
-
-#ifdef __cplusplus
-}
-#endif
-
-// these methods must be implemented in the custom app "mainWasm.cpp"
-extern OrthancStone::IStoneApplication* CreateUserApplication(OrthancStone::MessageBroker& broker);
-extern OrthancStone::WasmPlatformApplicationAdapter* CreateWasmApplicationAdapter(OrthancStone::MessageBroker& broker, OrthancStone::IStoneApplication* application);
-
-namespace OrthancStone {
-
-  // default Observer to trigger Viewport redraw when something changes in the Viewport
-  class ViewportContentChangedObserver : public IObserver
-  {
-  private:
-    // Flag to avoid flooding JavaScript with redundant Redraw requests
-    bool isScheduled_; 
-
-  public:
-    ViewportContentChangedObserver(MessageBroker& broker) :
-      IObserver(broker),
-      isScheduled_(false)
-    {
-    }
-
-    void Reset()
-    {
-      isScheduled_ = false;
-    }
-
-    void OnViewportChanged(const Deprecated::IViewport::ViewportChangedMessage& message)
-    {
-      if (!isScheduled_)
-      {
-        ScheduleWebViewportRedrawFromCpp((ViewportHandle)&message.GetOrigin());  // loosing constness when transmitted to Web
-        isScheduled_ = true;
-      }
-    }
-  };
-
-  // default status bar to log messages on the console/stdout
-  class StatusBar : public Deprecated::IStatusBar
-  {
-  public:
-    virtual void ClearMessage()
-    {
-    }
-
-    virtual void SetMessage(const std::string& message)
-    {
-      printf("%s\n", message.c_str());
-    }
-  };
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WasmDelayedCallExecutor.h"
-#include "json/value.h"
-#include "json/writer.h"
-#include <emscripten/emscripten.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-  extern void WasmDelayedCallExecutor_Schedule(void* callable,
-                                      unsigned int timeoutInMs
-                                      /*void* payload*/);
-
-  void EMSCRIPTEN_KEEPALIVE WasmDelayedCallExecutor_ExecuteCallback(void* callable
-                                                       //void* payload
-                                                       )
-  {
-    if (callable == NULL)
-    {
-      throw;
-    }
-    else
-    {
-      reinterpret_cast<OrthancStone::MessageHandler<Deprecated::IDelayedCallExecutor::TimeoutMessage>*>(callable)->
-        Apply(Deprecated::IDelayedCallExecutor::TimeoutMessage()); // uri, reinterpret_cast<Orthanc::IDynamicObject*>(payload)));
-    }
-  }
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
-namespace Deprecated
-{
-  OrthancStone::MessageBroker* WasmDelayedCallExecutor::broker_ = NULL;
-
-
-  void WasmDelayedCallExecutor::Schedule(OrthancStone::MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,
-                         unsigned int timeoutInMs)
-  {
-    WasmDelayedCallExecutor_Schedule(callback, timeoutInMs);
-  }
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Deprecated/Toolbox/IDelayedCallExecutor.h"
-#include <Core/OrthancException.h>
-
-namespace Deprecated
-{
-  class WasmDelayedCallExecutor : public IDelayedCallExecutor
-  {
-  private:
-    static OrthancStone::MessageBroker* broker_;
-
-    // Private constructor => Singleton design pattern
-    WasmDelayedCallExecutor(OrthancStone::MessageBroker& broker) :
-      IDelayedCallExecutor(broker)
-    {
-    }
-
-  public:
-    static WasmDelayedCallExecutor& GetInstance()
-    {
-      if (broker_ == NULL)
-      {
-        printf("WasmDelayedCallExecutor::GetInstance(): broker not initialized\n");
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-      }
-      static WasmDelayedCallExecutor instance(*broker_);
-      return instance;
-    }
-
-    static void SetBroker(OrthancStone::MessageBroker& broker)
-    {
-      broker_ = &broker;
-    }
-
-    virtual void Schedule(OrthancStone::MessageHandler<IDelayedCallExecutor::TimeoutMessage>* callback,
-                         unsigned int timeoutInMs = 1000);
-
-  };
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmDelayedCallExecutor.js	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-mergeInto(LibraryManager.library, {
-  WasmDelayedCallExecutor_Schedule: function(callable, timeoutInMs/*, payload*/) {
-    setTimeout(function() {
-      window.WasmDelayedCallExecutor_ExecuteCallback(callable/*, payload*/);
-    }, timeoutInMs);
-  }
-});
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmPlatformApplicationAdapter.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WasmPlatformApplicationAdapter.h"
-
-#include "Framework/StoneException.h"
-#include <stdio.h>
-#include "Platforms/Wasm/Defaults.h"
-
-namespace OrthancStone
-{
-  WasmPlatformApplicationAdapter::WasmPlatformApplicationAdapter(MessageBroker& broker, IStoneApplication& application)
-  : IObserver(broker),
-    application_(application)
-  {
-  }
-
-  void WasmPlatformApplicationAdapter::HandleSerializedMessageFromWeb(std::string& output, const std::string& input)
-  {
-    try
-    {
-      application_.HandleSerializedMessage(input.c_str());
-    }
-    catch (StoneException& exc)
-    {
-      printf("Error while handling message from web (error code = %d):\n", exc.GetErrorCode());
-      printf("While interpreting input: '%s'\n", input.c_str());
-      output = std::string("ERROR : ");
-    }
-    catch (std::exception& exc)
-    {
-      printf("Error while handling message from web (error text = %s):\n", exc.what());
-      printf("While interpreting input: '%s'\n", input.c_str());
-      output = std::string("ERROR : ");
-    }
-  }
-
-  void WasmPlatformApplicationAdapter::NotifyStatusUpdateFromCppToWebWithString(const std::string& statusUpdateMessage)
-  {
-    try
-    {
-      UpdateStoneApplicationStatusFromCppWithString(statusUpdateMessage.c_str());
-    }
-    catch (...)
-    {
-      printf("Error while handling string message to web\n");
-    }
-  }
-
-  void WasmPlatformApplicationAdapter::NotifyStatusUpdateFromCppToWebWithSerializedMessage(const std::string& statusUpdateMessage)
-  {
-    try
-    {
-      UpdateStoneApplicationStatusFromCppWithSerializedMessage(statusUpdateMessage.c_str());
-    }
-    catch (...)
-    {
-      printf("Error while handling serialized message to web\n");
-    }
-  }
-
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmPlatformApplicationAdapter.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <string>
-#include "../../../Framework/Messages/IObserver.h"
-#include <Applications/IStoneApplication.h>
-
-namespace OrthancStone
-{
-  class WasmPlatformApplicationAdapter : public IObserver
-  {
-      IStoneApplication&  application_;
-    public:
-      WasmPlatformApplicationAdapter(MessageBroker& broker, IStoneApplication& application);
-
-      virtual void HandleSerializedMessageFromWeb(std::string& output, const std::string& input);
-      virtual void NotifyStatusUpdateFromCppToWebWithString(const std::string& statusUpdateMessage);
-      virtual void NotifyStatusUpdateFromCppToWebWithSerializedMessage(const std::string& statusUpdateMessage);
-  };
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmViewport.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WasmViewport.h"
-
-#include <vector>
-#include <memory>
-
-std::vector<std::shared_ptr<Deprecated::WidgetViewport>> wasmViewports;
-
-void AttachWidgetToWasmViewport(const char* htmlCanvasId, Deprecated::IWidget* centralWidget) {
-    std::shared_ptr<Deprecated::WidgetViewport> viewport(CreateWasmViewportFromCpp(htmlCanvasId));
-    viewport->SetCentralWidget(centralWidget);
-
-    wasmViewports.push_back(viewport);
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmViewport.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Deprecated/Viewport/WidgetViewport.h"
-
-#include <emscripten/emscripten.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-  // JS methods accessible from C++
-  extern Deprecated::WidgetViewport* CreateWasmViewportFromCpp(const char* htmlCanvasId);
-
-#ifdef __cplusplus
-}
-#endif
-
-extern void AttachWidgetToWasmViewport(const char* htmlCanvasId, Deprecated::IWidget* centralWidget);
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "WasmWebService.h"
-#include "json/value.h"
-#include "json/writer.h"
-#include <emscripten/emscripten.h>
-#include <boost/shared_ptr.hpp>
-
-struct CachedSuccessNotification
-{
-  boost::shared_ptr<Deprecated::BaseWebService::CachedHttpRequestSuccessMessage>    cachedMessage;
-  std::unique_ptr<Orthanc::IDynamicObject>                                              payload;
-  OrthancStone::MessageHandler<Deprecated::IWebService::HttpRequestSuccessMessage>* successCallback;
-};
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-  extern void WasmWebService_GetAsync(void* callableSuccess,
-                                      void* callableFailure,
-                                      const char* uri,
-                                      const char* headersInJsonString,
-                                      void* payload,
-                                      unsigned int timeoutInSeconds);
-
-  extern void WasmWebService_ScheduleLaterCachedSuccessNotification(void* brol);
-
-  extern void WasmWebService_PostAsync(void* callableSuccess,
-                                       void* callableFailure,
-                                       const char* uri,
-                                       const char* headersInJsonString,
-                                       const void* body,
-                                       size_t bodySize,
-                                       void* payload,
-                                       unsigned int timeoutInSeconds);
-
-  extern void WasmWebService_DeleteAsync(void* callableSuccess,
-                                         void* callableFailure,
-                                         const char* uri,
-                                         const char* headersInJsonString,
-                                         void* payload,
-                                         unsigned int timeoutInSeconds);
-
-  void EMSCRIPTEN_KEEPALIVE WasmWebService_NotifyError(void* failureCallable,
-                                                       const char* uri,
-                                                       unsigned int httpStatus,
-                                                       void* payload)
-  {
-    if (failureCallable != NULL)
-    {
-      reinterpret_cast<OrthancStone::MessageHandler<Deprecated::IWebService::HttpRequestErrorMessage>*>(failureCallable)->
-        Apply(Deprecated::IWebService::HttpRequestErrorMessage(uri, static_cast<Orthanc::HttpStatus>(httpStatus), reinterpret_cast<Orthanc::IDynamicObject*>(payload)));
-    }
-  }
-
-  void EMSCRIPTEN_KEEPALIVE WasmWebService_NotifyCachedSuccess(void* notification_)
-  {
-    // notification has been allocated in C++ and passed to JS.  It must be deleted by this method
-    std::unique_ptr<CachedSuccessNotification> notification(reinterpret_cast<CachedSuccessNotification*>(notification_));
-
-    notification->successCallback->Apply(Deprecated::IWebService::HttpRequestSuccessMessage(
-      notification->cachedMessage->GetUri(), 
-      notification->cachedMessage->GetAnswer(),
-      notification->cachedMessage->GetAnswerSize(),
-      notification->cachedMessage->GetAnswerHttpHeaders(),
-      notification->payload.get()
-      ));
-  }
-
-  void EMSCRIPTEN_KEEPALIVE WasmWebService_NotifySuccess(void* successCallable,
-                                                         const char* uri,
-                                                         const void* body,
-                                                         size_t bodySize,
-                                                         const char* answerHeaders,
-                                                         void* payload)
-  {
-    if (successCallable != NULL)
-    {
-      Deprecated::IWebService::HttpHeaders headers;
-
-      // TODO - Parse "answerHeaders"
-      //printf("TODO: parse headers [%s]\n", answerHeaders);
-      
-      reinterpret_cast<OrthancStone::MessageHandler<Deprecated::IWebService::HttpRequestSuccessMessage>*>(successCallable)->
-        Apply(Deprecated::IWebService::HttpRequestSuccessMessage(uri, body, bodySize, headers,
-                                                                   reinterpret_cast<Orthanc::IDynamicObject*>(payload)));
-    }
-  }
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
-namespace Deprecated
-{
-  OrthancStone::MessageBroker* WasmWebService::broker_ = NULL;
-
-  void ToJsonString(std::string& output, const IWebService::HttpHeaders& headers)
-  {
-    Json::Value jsonHeaders;
-    for (IWebService::HttpHeaders::const_iterator it = headers.begin(); it != headers.end(); it++ )
-    {
-      jsonHeaders[it->first] = it->second;
-    }
-
-    Json::StreamWriterBuilder builder;
-    std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
-    std::ostringstream outputStr;
-
-    writer->write(jsonHeaders, &outputStr);
-    output = outputStr.str();
-  }
-
-  void WasmWebService::PostAsync(const std::string& relativeUri,
-                                 const HttpHeaders& headers,
-                                 const std::string& body,
-                                 Orthanc::IDynamicObject* payload,
-                                 OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallable,
-                                 OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallable,
-                                 unsigned int timeoutInSeconds)
-  {
-    std::string headersInJsonString;
-    ToJsonString(headersInJsonString, headers);
-    WasmWebService_PostAsync(successCallable, failureCallable, relativeUri.c_str(), headersInJsonString.c_str(),
-                             body.c_str(), body.size(), payload, timeoutInSeconds);
-  }
-
-  void WasmWebService::DeleteAsync(const std::string& relativeUri,
-                                   const HttpHeaders& headers,
-                                   Orthanc::IDynamicObject* payload,
-                                   OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallable,
-                                   OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallable,
-                                   unsigned int timeoutInSeconds)
-  {
-    std::string headersInJsonString;
-    ToJsonString(headersInJsonString, headers);
-    WasmWebService_DeleteAsync(successCallable, failureCallable, relativeUri.c_str(), headersInJsonString.c_str(),
-                               payload, timeoutInSeconds);
-  }
-
-  void WasmWebService::GetAsyncInternal(const std::string &relativeUri,
-                                        const HttpHeaders &headers,
-                                        Orthanc::IDynamicObject *payload,
-                                        OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage> *successCallable,
-                                        OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage> *failureCallable,
-                                        unsigned int timeoutInSeconds)
-  {
-    std::string headersInJsonString;
-    ToJsonString(headersInJsonString, headers);
-    WasmWebService_GetAsync(successCallable, failureCallable, relativeUri.c_str(),
-                            headersInJsonString.c_str(), payload, timeoutInSeconds);
-  }
-
-  void WasmWebService::NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedMessage,
-                                              Orthanc::IDynamicObject* payload, // takes ownership
-                                              OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback)
-  {
-    CachedSuccessNotification* notification = new CachedSuccessNotification();  // allocated on the heap, it will be passed to JS and deleted when coming back to C++
-    notification->cachedMessage = cachedMessage;
-    notification->payload.reset(payload);
-    notification->successCallback = successCallback;
-
-    WasmWebService_ScheduleLaterCachedSuccessNotification(notification);
-  }
-
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Deprecated/Toolbox/BaseWebService.h"
-#include <Core/OrthancException.h>
-
-namespace Deprecated
-{
-class WasmWebService : public BaseWebService
-{
-private:
-  static OrthancStone::MessageBroker *broker_;
-
-  // Private constructor => Singleton design pattern
-  WasmWebService(OrthancStone::MessageBroker &broker) : BaseWebService(broker)
-  {
-  }
-
-public:
-  static WasmWebService &GetInstance()
-  {
-    if (broker_ == NULL)
-    {
-      printf("WasmWebService::GetInstance(): broker not initialized\n");
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    static WasmWebService instance(*broker_);
-    return instance;
-  }
-
-  static void SetBroker(OrthancStone::MessageBroker &broker)
-  {
-    broker_ = &broker;
-  }
-
-  virtual void PostAsync(const std::string &uri,
-                         const HttpHeaders &headers,
-                         const std::string &body,
-                         Orthanc::IDynamicObject *payload,
-                         OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage> *successCallable,
-                         OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage> *failureCallable = NULL,
-                         unsigned int timeoutInSeconds = 60);
-
-  virtual void DeleteAsync(const std::string &uri,
-                           const HttpHeaders &headers,
-                           Orthanc::IDynamicObject *payload,
-                           OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage> *successCallable,
-                           OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage> *failureCallable = NULL,
-                           unsigned int timeoutInSeconds = 60);
-
-protected:
-  virtual void GetAsyncInternal(const std::string &uri,
-                                const HttpHeaders &headers,
-                                Orthanc::IDynamicObject *payload,
-                                OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage> *successCallable,
-                                OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage> *failureCallable = NULL,
-                                unsigned int timeoutInSeconds = 60);
-
-  virtual void NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedHttpMessage,
-                                      Orthanc::IDynamicObject *payload, // takes ownership
-                                      OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage> *successCallback);
-};
-} // namespace Deprecated
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/WasmWebService.js	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-mergeInto(LibraryManager.library, {
-  WasmWebService_GetAsync: function(callableSuccess, callableFailure, url, headersInJsonString, payload, timeoutInSeconds) {
-    // Directly use XMLHttpRequest (no jQuery) to retrieve the raw binary data
-    // http://www.henryalgus.com/reading-binary-files-using-jquery-ajax/
-    var xhr = new XMLHttpRequest();
-    var url_ = UTF8ToString(url);
-    var headersInJsonString_ = UTF8ToString(headersInJsonString);
-
-    xhr.open('GET', url_, true);
-    xhr.responseType = 'arraybuffer';
-    xhr.timeout = timeoutInSeconds * 1000;
-    var headers = JSON.parse(headersInJsonString_);
-    for (var key in headers) {
-      xhr.setRequestHeader(key, headers[key]);
-    }
-    //console.log(xhr); 
-    xhr.onreadystatechange = function() {
-      if (this.readyState == XMLHttpRequest.DONE) {
-        if (xhr.status === 200) {
-          var s = xhr.getAllResponseHeaders();
-          var headers = _malloc(s.length + 1);
-          stringToUTF8(s, headers, s.length + 1);
-          
-          // TODO - Is "new Uint8Array()" necessary? This copies the
-          // answer to the WebAssembly stack, hence necessitating
-          // increasing the TOTAL_STACK parameter of Emscripten
-          window.WasmWebService_NotifySuccess(callableSuccess, url_, new Uint8Array(this.response),
-                                       this.response.byteLength, headers, payload);
-        } else {
-          window.WasmWebService_NotifyError(callableFailure, url_, xhr.status, payload);
-        }
-      }
-    }
-    
-    xhr.send();
-  },
-
-  WasmWebService_ScheduleLaterCachedSuccessNotification: function (brol) {
-    setTimeout(function() {
-      window.WasmWebService_NotifyCachedSuccess(brol);
-    }, 0);
-  },
-
-  WasmWebService_PostAsync: function(callableSuccess, callableFailure, url, headersInJsonString, body, bodySize, payload, timeoutInSeconds) {
-    var xhr = new XMLHttpRequest();
-    var url_ = UTF8ToString(url);
-    var headersInJsonString_ = UTF8ToString(headersInJsonString);
-    xhr.open('POST', url_, true);
-    xhr.timeout = timeoutInSeconds * 1000;
-    xhr.responseType = 'arraybuffer';
-    xhr.setRequestHeader('Content-type', 'application/octet-stream');
-
-    var headers = JSON.parse(headersInJsonString_);
-    for (var key in headers) {
-      xhr.setRequestHeader(key, headers[key]);
-    }
-    
-    xhr.onreadystatechange = function() {
-      if (this.readyState == XMLHttpRequest.DONE) {
-        if (xhr.status === 200) {
-          var s = xhr.getAllResponseHeaders();
-          var headers = _malloc(s.length + 1);
-          stringToUTF8(s, headers, s.length + 1);
-
-          window.WasmWebService_NotifySuccess(callableSuccess, url_, new Uint8Array(this.response),
-                                       this.response.byteLength, headers, payload);
-        } else {
-          window.WasmWebService_NotifyError(callableFailure, url_, xhr.status, payload);
-        }
-      }
-    }
-
-    xhr.send(new Uint8ClampedArray(HEAPU8.buffer, body, bodySize));
-  },
-
-  WasmWebService_DeleteAsync: function(callableSuccess, callableFailure, url, headersInJsonString, payload, timeoutInSeconds) {
-    var xhr = new XMLHttpRequest();
-    var url_ = UTF8ToString(url);
-    var headersInJsonString_ = UTF8ToString(headersInJsonString);
-    xhr.open('DELETE', url_, true);
-    xhr.timeout = timeoutInSeconds * 1000;
-    xhr.responseType = 'arraybuffer';
-    xhr.setRequestHeader('Content-type', 'application/octet-stream');
-  
-    var headers = JSON.parse(headersInJsonString_);
-    for (var key in headers) {
-      xhr.setRequestHeader(key, headers[key]);
-    }
-    
-    xhr.onreadystatechange = function() {
-      if (this.readyState == XMLHttpRequest.DONE) {
-        if (xhr.status === 200) {
-          var s = xhr.getAllResponseHeaders();
-          var headers = _malloc(s.length + 1);
-          stringToUTF8(s, headers, s.length + 1);
-
-          window.WasmWebService_NotifySuccess(callableSuccess, url_, new Uint8Array(this.response),
-                                       this.response.byteLength, headers, payload);
-        } else {
-          window.WasmWebService_NotifyError(callableFailure, url_, xhr.status, payload);
-        }
-      }
-    }
-  
-    xhr.send();
-  }
-  
-});
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/default-library.js	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-// this file contains the JS method you want to expose to C++ code
-
-mergeInto(LibraryManager.library, {
-
-  ScheduleWebViewportRedrawFromCpp: function(cppViewportHandle) {
-    window.ScheduleWebViewportRedraw(cppViewportHandle);
-  },
-
-  CreateWasmViewportFromCpp: function(htmlCanvasId) {
-    return window.CreateWasmViewport(htmlCanvasId);
-  },
-
-  // each time the StoneApplication updates its status, it may signal it 
-  // through this method. i.e, to change the status of a button in the web interface
-  UpdateStoneApplicationStatusFromCppWithString: function(statusUpdateMessage) {
-    var statusUpdateMessage_ = UTF8ToString(statusUpdateMessage);
-    window.UpdateWebApplicationWithString(statusUpdateMessage_);
-  },
-
-  // same, but with a serialized message
-  UpdateStoneApplicationStatusFromCppWithSerializedMessage: function(statusUpdateMessage) {
-    var statusUpdateMessage_ = UTF8ToString(statusUpdateMessage);
-    window.UpdateWebApplicationWithSerializedMessage(statusUpdateMessage_);
-  },
-
-  // These functions are called from C++ (through an extern declaration) 
-  // and call the standard logger that, here, routes to the console.
-
-  stone_console_error : function(message) {
-    var text = UTF8ToString(message);
-    window.errorFromCpp(text);
-  },
-
-  stone_console_warning : function(message) {
-    var text = UTF8ToString(message);
-    window.warningFromCpp(text);
-  },
-
-  stone_console_info: function(message) {
-    var text = UTF8ToString(message);
-    window.infoFromCpp(text);
-  },
-  
-  stone_console_trace : function(message) {
-    var text = UTF8ToString(message);
-    window.debugFromCpp(text);
-  }
-
-});
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/logger.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-export enum LogSource {
-  Cpp,
-  Typescript
-}
-
-export class StandardConsoleLogger {
-  public showSource: boolean = true;
-
-  public debug(...args: any[]): void {
-    this._debug(LogSource.Typescript, ...args);
-  }
-
-  public debugFromCpp(...args: any[]): void {
-    this._debug(LogSource.Cpp, ...args);
-  }
-
-  public info(...args: any[]): void {
-    this._info(LogSource.Typescript, ...args);
-  }
-
-  public infoFromCpp(message: string): void {
-    this._info(LogSource.Cpp, message);
-  }
-
-  public warning(...args: any[]): void {
-    this._warning(LogSource.Typescript, ...args);
-  }
-
-  public warningFromCpp(message: string): void {
-    this._warning(LogSource.Cpp, message);
-  }
-
-  public error(...args: any[]): void {
-    this._error(LogSource.Typescript, ...args);
-  }
-
-  public errorFromCpp(message: string): void {
-    this._error(LogSource.Cpp, message);
-  }
-
-  public _debug(source: LogSource, ...args: any[]): void {
-    if ((<any> window).IsTraceLevelEnabled)
-    {
-      if ((<any> window).IsTraceLevelEnabled())
-      {
-        var output = this.getOutput(source, args);
-        console.debug(...output);
-      }
-    }
-  }
-
-  private _info(source: LogSource, ...args: any[]): void {
-    if ((<any> window).IsInfoLevelEnabled)
-    {
-      if ((<any> window).IsInfoLevelEnabled())
-      {
-        var output = this.getOutput(source, args);
-        console.info(...output);
-      }
-    }
-  }
-
-  public _warning(source: LogSource, ...args: any[]): void {
-    var output = this.getOutput(source, args);
-    console.warn(...output);
-  }
-
-  public _error(source: LogSource, ...args: any[]): void {
-    var output = this.getOutput(source, args);
-    console.error(...output);
-  }
-
-
-  private getOutput(source: LogSource, args: any[]): any[] {
-    var prefix = this.getPrefix();
-    var prefixAndSource = Array<string>();
-
-    if (prefix != null) {
-      prefixAndSource = [prefix];
-    } 
-
-    if (this.showSource) {
-      if (source == LogSource.Typescript) {
-        prefixAndSource = [...prefixAndSource, "TS "];
-      } else if (source == LogSource.Cpp) {
-        prefixAndSource = [...prefixAndSource, "C++"];
-      }
-    }
-
-    if (prefixAndSource.length > 0) {
-      prefixAndSource = [...prefixAndSource, "|"];
-    }
-
-    return [...prefixAndSource, ...args];
-  }
-
-  protected getPrefix(): string | null {
-    return null;
-  }
-}
-
-export class TimeConsoleLogger extends StandardConsoleLogger {
-  protected getPrefix(): string {
-    let now = new Date();
-    let timeString = now.getHours().toString().padStart(2, "0") + ":" + now.getMinutes().toString().padStart(2, "0") + ":" + now.getSeconds().toString().padStart(2, "0") + "." + now.getMilliseconds().toString().padStart(3, "0");
-    return timeString;
-  }
-}
-
-export var defaultLogger: StandardConsoleLogger = new TimeConsoleLogger();
-
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/stone-framework-loader.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/**
- * This file contains primitives to interface with WebAssembly and
- * with the Stone framework.
- **/
-import * as Logger from './logger'
-
-export declare type InitializationCallback = () => void;
-
-//export declare var StoneFrameworkModule : any;
-export var StoneFrameworkModule : any;
-
-//const ASSETS_FOLDER : string = "assets/lib";
-//const WASM_FILENAME : string = "orthanc-framework";
-
-export class Framework
-{
-  private static singleton_ : Framework = null;
-  private static wasmModuleName_ : string = null;
-
-  public static Configure(wasmModuleName: string) {
-    this.wasmModuleName_ = wasmModuleName;
-  }
-
-  private constructor(verbose : boolean) 
-  {
-    //this.ccall('Initialize', null, [ 'number' ], [ verbose ]);
-  }
-
-  
-  public ccall( name: string,
-                returnType: string,
-                argTypes: Array<string>,
-                argValues: Array<any>) : any
-  {
-    return (<any> window).StoneFrameworkModule.ccall(name, returnType, argTypes, argValues);
-  }
-
-  
-  public cwrap( name: string,
-                returnType: string,
-                argTypes: Array<string>) : any
-  {
-    return (<any> window).StoneFrameworkModule.cwrap(name, returnType, argTypes);
-  }
-
-  
-  public static GetInstance() : Framework
-  {
-    if (Framework.singleton_ == null) {
-      throw new Error('The WebAssembly module is not loaded yet');
-    } else {
-      return Framework.singleton_;
-    }
-  }
-
-
-  public static Initialize( verbose: boolean,
-                            callback: InitializationCallback)
-  {
-    Logger.defaultLogger.debug('Initializing WebAssembly Module');
-
-    (<any> window).errorFromCpp = function(text:any) { Logger.defaultLogger.errorFromCpp(text); };
-    (<any> window).warningFromCpp = function(text:any) { Logger.defaultLogger.warningFromCpp(text); };
-    (<any> window).infoFromCpp = function(text:any) { Logger.defaultLogger.infoFromCpp(text); };
-    (<any> window).debugFromCpp = function(text:any) { Logger.defaultLogger.debugFromCpp(text); };
-
-    // (<any> window).
-    (<any> window).StoneFrameworkModule = {
-      preRun: [ 
-        function() {
-          Logger.defaultLogger.debug('Loading the Stone Framework using WebAssembly');
-        }
-      ],
-      postRun: [ 
-        function()  {
-          // This function is called by ".js" wrapper once the ".wasm"
-          // WebAssembly module has been loaded and compiled by the
-          // browser
-          Logger.defaultLogger.debug('WebAssembly is ready');
-          Framework.singleton_ = new Framework(verbose);
-          callback();
-        }
-      ],
-      totalDependencies: 0
-    };
-
-    // Dynamic loading of the JavaScript wrapper around WebAssembly
-    var script = document.createElement('script');
-    script.type = 'application/javascript';
-    //script.src = "orthanc-stone.js"; // ASSETS_FOLDER + '/' + WASM_FILENAME + '.js';
-    script.src = this.wasmModuleName_ + ".js";//  "OrthancStoneSimpleViewer.js"; // ASSETS_FOLDER + '/' + WASM_FILENAME + '.js';
-    script.async = true;
-    document.head.appendChild(script);
-  }
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/tsconfig-stone.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-{
-    "include" : [
-        "stone-framework-loader.ts",
-        "logger.ts",
-        "wasm-application-runner.ts",
-        "wasm-viewport.ts"
-    ]
-}
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/wasm-application-runner.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-import * as Stone from './stone-framework-loader'
-import * as StoneViewport from './wasm-viewport'
-import * as Logger from './logger'
-
-if (!('WebAssembly' in window)) {
-  alert('Sorry, your browser does not support WebAssembly :(');
-}
-
-//var StoneFrameworkModule : Stone.Framework = (<any>window).StoneFrameworkModule;
-//export declare var StoneFrameworkModule : Stone.Framework;
-
-// global functions
-var WasmWebService_NotifyError: Function = null;
-var WasmWebService_NotifySuccess: Function = null;
-var WasmWebService_NotifyCachedSuccess: Function = null;
-var WasmDelayedCallExecutor_ExecuteCallback: Function = null;
-var WasmDoAnimation: Function = null;
-var SetStartupParameter: Function = null;
-var CreateWasmApplication: Function = null;
-export var CreateCppViewport: Function = null;
-var ReleaseCppViewport: Function = null;
-var StartWasmApplication: Function = null;
-export var SendSerializedMessageToStoneApplication: Function = null;
-
-var auxiliaryParameters : Map<string,string>  = null;
-
-export function SetApplicationParameters(params : Map<string,string>) {
-  if (auxiliaryParameters != null) {
-    console.warn("wasm-application-runner.SetApplicationParameters: about to overwrite the existing application parameters!")
-  }
-  auxiliaryParameters = params;
-}
-
-function DoAnimationThread() {
-  if (WasmDoAnimation != null) {
-    WasmDoAnimation();
-  }
-
-  // Update the viewport content every 100ms if need be
-  setTimeout(DoAnimationThread, 100);  
-}
-
-
-function GetUriParameters(): Map<string, string> {
-  var parameters = window.location.search.substr(1);
-
-  if (parameters != null &&
-    parameters != '') {
-    var result = new Map<string, string>();
-    var tokens = parameters.split('&');
-
-    for (var i = 0; i < tokens.length; i++) {
-      var tmp = tokens[i].split('=');
-      if (tmp.length == 2) {
-        result[tmp[0]] = decodeURIComponent(tmp[1]);
-      } else if(tmp.length == 1) {
-        // if there is no '=', we treat ot afterwards as a flag-style param
-        result[tmp[0]] = "";
-      }
-    }
-  return result;
-  }
-  else {
-    return new Map<string, string>();
-  }
-}
-
-// function UpdateWebApplication(statusUpdateMessage: string) {
-//   console.log(statusUpdateMessage);
-// }
-
-function _InitializeWasmApplication(orthancBaseUrl: string): void {
-
-  CreateWasmApplication();
-
-  // transmit the API-specified parameters to the app before initializing it
-  for (let key in auxiliaryParameters) {
-    if (auxiliaryParameters.hasOwnProperty(key)) {
-      Logger.defaultLogger.debug(
-        `About to call SetStartupParameter("${key}","${auxiliaryParameters[key]}")`);
-      SetStartupParameter(key, auxiliaryParameters[key]);
-    }
-  }
-
-  // parse uri and transmit the URI parameters to the app before initializing it
-  let parameters = GetUriParameters();
-
-  for (let key in parameters) {
-    if (parameters.hasOwnProperty(key)) {
-      Logger.defaultLogger.debug(
-        `About to call SetStartupParameter("${key}","${parameters[key]}")`);
-      SetStartupParameter(key, parameters[key]);
-    }
-  }
-
-  StartWasmApplication(orthancBaseUrl);
-
-  // trigger a first resize of the canvas that has just been initialized
-  StoneViewport.WasmViewport.ResizeAll();
-
-  DoAnimationThread();
-}
-
-export function InitializeWasmApplication(wasmModuleName: string, orthancBaseUrl: string) {
-  
-  Stone.Framework.Configure(wasmModuleName);
-
-  // Wait for the Orthanc Framework to be initialized (this initializes
-  // the WebAssembly environment) and then, create and initialize the Wasm application
-  Stone.Framework.Initialize(true, function () {
-
-    Logger.defaultLogger.debug("Connecting C++ methods to JS methods");
-    
-    SetStartupParameter = (<any> window).StoneFrameworkModule.cwrap('SetStartupParameter', null, ['string', 'string']);
-    CreateWasmApplication = (<any> window).StoneFrameworkModule.cwrap('CreateWasmApplication', null, ['number']);
-    CreateCppViewport = (<any> window).StoneFrameworkModule.cwrap('CreateCppViewport', 'number', []);
-    ReleaseCppViewport = (<any> window).StoneFrameworkModule.cwrap('ReleaseCppViewport', null, ['number']);
-    StartWasmApplication = (<any> window).StoneFrameworkModule.cwrap('StartWasmApplication', null, ['string']);
-    (<any> window).IsTraceLevelEnabled = (<any> window).StoneFrameworkModule.cwrap('WasmIsTraceLevelEnabled', 'boolean', null);
-    (<any> window).IsInfoLevelEnabled = (<any> window).StoneFrameworkModule.cwrap('WasmIsInfoLevelEnabled', 'boolean', null);
-
-    (<any> window).WasmWebService_NotifyCachedSuccess = (<any> window).StoneFrameworkModule.cwrap('WasmWebService_NotifyCachedSuccess', null, ['number']);
-    (<any> window).WasmWebService_NotifySuccess = (<any> window).StoneFrameworkModule.cwrap('WasmWebService_NotifySuccess', null, ['number', 'string', 'array', 'number', 'number']);
-    (<any> window).WasmWebService_NotifyError = (<any> window).StoneFrameworkModule.cwrap('WasmWebService_NotifyError', null, ['number', 'string', 'number', 'number']);
-    (<any> window).WasmDelayedCallExecutor_ExecuteCallback = (<any> window).StoneFrameworkModule.cwrap('WasmDelayedCallExecutor_ExecuteCallback', null, ['number']);
-    // no need to put this into the globals for it's only used in this very module
-    WasmDoAnimation = (<any> window).StoneFrameworkModule.cwrap('WasmDoAnimation', null, []);
-
-    SendSerializedMessageToStoneApplication = (<any> window).StoneFrameworkModule.cwrap('SendSerializedMessageToStoneApplication', 'string', ['string']);
-
-    Logger.defaultLogger.debug("Connecting C++ methods to JS methods - done");
-
-    _InitializeWasmApplication(orthancBaseUrl);
-  });
-}
-
-
-// exports.InitializeWasmApplication = InitializeWasmApplication;
-
-
-
--- a/Resources/Graveyard/Deprecated/Platforms/Wasm/wasm-viewport.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,359 +0,0 @@
-import * as wasmApplicationRunner from './wasm-application-runner'
-import * as Logger from './logger'
-
-var isPendingRedraw = false;
-
-function ScheduleWebViewportRedraw(cppViewportHandle: any) : void
-{
-  if (!isPendingRedraw) {
-    isPendingRedraw = true;
-    Logger.defaultLogger.debug('Scheduling a refresh of the viewport, as its content changed');
-    window.requestAnimationFrame(function() {
-      isPendingRedraw = false;
-      let viewport = WasmViewport.GetFromCppViewport(cppViewportHandle);
-      if (viewport) {
-        viewport.Redraw();
-      }
-    });
-  }
-}
-
-(<any>window).ScheduleWebViewportRedraw = ScheduleWebViewportRedraw;
-
-declare function UTF8ToString(v: any): string;
-
-function CreateWasmViewport(htmlCanvasId: string) : any {
-  var cppViewportHandle = wasmApplicationRunner.CreateCppViewport();
-  var canvasId = UTF8ToString(htmlCanvasId);
-  var webViewport = new WasmViewport((<any> window).StoneFrameworkModule, canvasId, cppViewportHandle);  // viewports are stored in a static map in WasmViewport -> won't be deleted
-  webViewport.Initialize();
-
-  return cppViewportHandle;
-}
- 
-(<any>window).CreateWasmViewport = CreateWasmViewport;
-
-export class WasmViewport {
-
-    private static viewportsMapByCppHandle_ : Map<number, WasmViewport> = new Map<number, WasmViewport>(); // key = the C++ handle
-    private static viewportsMapByCanvasId_ : Map<string, WasmViewport> = new Map<string, WasmViewport>(); // key = the canvasId
-
-    private module_ : any;
-    private canvasId_ : string;
-    private htmlCanvas_ : HTMLCanvasElement;
-    private context_ : CanvasRenderingContext2D | null;
-    private imageData_ : any = null;
-    private renderingBuffer_ : any = null;
-    
-    private touchGestureInProgress_: boolean = false;
-    private touchCount_: number = 0;
-    private touchGestureLastCoordinates_: [number, number][] = []; // last x,y coordinates of each touch
-    
-    private touchZoom_ : any = false;
-    private touchTranslation_ : any = false;
-
-    private ViewportSetSize : Function;
-    private ViewportRender : Function;
-    private ViewportMouseDown : Function;
-    private ViewportMouseMove : Function;
-    private ViewportMouseUp : Function;
-    private ViewportMouseEnter : Function;
-    private ViewportMouseLeave : Function;
-    private ViewportMouseWheel : Function;
-    private ViewportKeyPressed : Function;
-    private ViewportTouchStart : Function;
-    private ViewportTouchMove : Function;
-    private ViewportTouchEnd : Function;
-
-    private pimpl_ : any; // Private pointer to the underlying WebAssembly C++ object
-
-    public constructor(module: any, canvasId: string, cppViewport: any) {
-      
-      this.pimpl_ = cppViewport;
-      WasmViewport.viewportsMapByCppHandle_[this.pimpl_] = this;
-      WasmViewport.viewportsMapByCanvasId_[canvasId] = this;
-
-      this.module_ = module;
-      this.canvasId_ = canvasId;
-      this.htmlCanvas_ = document.getElementById(this.canvasId_) as HTMLCanvasElement;
-      if (this.htmlCanvas_ == null) {
-        Logger.defaultLogger.error("Can not create WasmViewport, did not find the canvas whose id is '", this.canvasId_, "'");
-      }
-      this.context_ = this.htmlCanvas_.getContext('2d');
-
-      this.ViewportSetSize = this.module_.cwrap('ViewportSetSize', null, [ 'number', 'number', 'number' ]);
-      this.ViewportRender = this.module_.cwrap('ViewportRender', null, [ 'number', 'number', 'number', 'number' ]);
-      this.ViewportMouseDown = this.module_.cwrap('ViewportMouseDown', null, [ 'number', 'number', 'number', 'number', 'number' ]);
-      this.ViewportMouseMove = this.module_.cwrap('ViewportMouseMove', null, [ 'number', 'number', 'number' ]);
-      this.ViewportMouseUp = this.module_.cwrap('ViewportMouseUp', null, [ 'number' ]);
-      this.ViewportMouseEnter = this.module_.cwrap('ViewportMouseEnter', null, [ 'number' ]);
-      this.ViewportMouseLeave = this.module_.cwrap('ViewportMouseLeave', null, [ 'number' ]);
-      this.ViewportMouseWheel = this.module_.cwrap('ViewportMouseWheel', null, [ 'number', 'number', 'number', 'number', 'number' ]);
-      this.ViewportKeyPressed = this.module_.cwrap('ViewportKeyPressed', null, [ 'number', 'number', 'string', 'number', 'number' ]);
-      this.ViewportTouchStart = this.module_.cwrap('ViewportTouchStart', null, [ 'number', 'number', 'number', 'number', 'number', 'number', 'number' ]);
-      this.ViewportTouchMove = this.module_.cwrap('ViewportTouchMove', null, [ 'number', 'number', 'number', 'number', 'number', 'number', 'number' ]);
-      this.ViewportTouchEnd = this.module_.cwrap('ViewportTouchEnd', null, [ 'number', 'number', 'number', 'number', 'number', 'number', 'number' ]);
-    }
-
-    public GetCppViewport() : number {
-      return this.pimpl_;
-    }
-
-    public static GetFromCppViewport(cppViewportHandle: number) : WasmViewport | null {
-      if (WasmViewport.viewportsMapByCppHandle_[cppViewportHandle] !== undefined) {
-        return WasmViewport.viewportsMapByCppHandle_[cppViewportHandle];
-      }
-      Logger.defaultLogger.error("WasmViewport not found !");
-      return null;
-    }
-
-    public static GetFromCanvasId(canvasId: string) : WasmViewport | null {
-      if (WasmViewport.viewportsMapByCanvasId_[canvasId] !== undefined) {
-        return WasmViewport.viewportsMapByCanvasId_[canvasId];
-      }
-      Logger.defaultLogger.error("WasmViewport not found !");
-      return null;
-    }
-
-    public static ResizeAll() {
-      for (let canvasId in WasmViewport.viewportsMapByCanvasId_) {
-        WasmViewport.viewportsMapByCanvasId_[canvasId].Resize();
-      }
-    }
-
-    public Redraw() {
-      if (this.imageData_ === null ||
-          this.renderingBuffer_ === null ||
-          this.ViewportRender(this.pimpl_,
-                         this.imageData_.width,
-                         this.imageData_.height,
-                         this.renderingBuffer_) == 0) {
-        Logger.defaultLogger.error('The rendering has failed');
-      } else {
-        // Create an accessor to the rendering buffer (i.e. create a
-        // "window" above the heap of the WASM module), then copy it to
-        // the ImageData object
-        this.imageData_.data.set(new Uint8ClampedArray(
-          this.module_.HEAPU8.buffer,
-          this.renderingBuffer_,
-          this.imageData_.width * this.imageData_.height * 4));
-        
-        if (this.context_) {
-          this.context_.putImageData(this.imageData_, 0, 0);
-        }
-      }
-    }
-  
-    public Resize() {
-      if (this.imageData_ != null &&
-          (this.imageData_.width != window.innerWidth ||
-           this.imageData_.height != window.innerHeight)) {
-        this.imageData_ = null;
-      }
-      
-      // width/height is defined by the parent width/height
-      if (this.htmlCanvas_.parentElement) {
-        this.htmlCanvas_.width = this.htmlCanvas_.parentElement.offsetWidth;  
-        this.htmlCanvas_.height = this.htmlCanvas_.parentElement.offsetHeight;  
-
-        Logger.defaultLogger.debug("resizing WasmViewport: ", this.htmlCanvas_.width, "x", this.htmlCanvas_.height);
-
-        if (this.imageData_ === null && this.context_) {
-          this.imageData_ = this.context_.getImageData(0, 0, this.htmlCanvas_.width, this.htmlCanvas_.height);
-          this.ViewportSetSize(this.pimpl_, this.htmlCanvas_.width, this.htmlCanvas_.height);
-    
-          if (this.renderingBuffer_ != null) {
-            this.module_._free(this.renderingBuffer_);
-          }
-          
-          this.renderingBuffer_ = this.module_._malloc(this.imageData_.width * this.imageData_.height * 4);
-        } else {
-          this.ViewportSetSize(this.pimpl_, this.htmlCanvas_.width, this.htmlCanvas_.height);
-        }
-        
-        this.Redraw();
-      }
-    }
-
-    public Initialize() {
-      
-      // Force the rendering of the viewport for the first time
-      this.Resize();
-    
-      var that : WasmViewport = this;
-      // Register an event listener to call the Resize() function 
-      // each time the window is resized.
-      window.addEventListener('resize', function(event) {
-        that.Resize();
-      }, false);
-  
-      this.htmlCanvas_.addEventListener('contextmenu', function(event) {
-        // Prevent right click on the canvas
-        event.preventDefault();
-      }, false);
-      
-      this.htmlCanvas_.addEventListener('mouseleave', function(event) {
-        that.ViewportMouseLeave(that.pimpl_);
-      });
-      
-      this.htmlCanvas_.addEventListener('mouseenter', function(event) {
-        that.ViewportMouseEnter(that.pimpl_);
-      });
-    
-      this.htmlCanvas_.addEventListener('mousedown', function(event) {
-        var x = event.pageX - this.offsetLeft;
-        var y = event.pageY - this.offsetTop;
-
-       that.ViewportMouseDown(that.pimpl_, event.button, x, y, 0 /* TODO detect modifier keys*/);    
-      });
-    
-      this.htmlCanvas_.addEventListener('mousemove', function(event) {
-        var x = event.pageX - this.offsetLeft;
-        var y = event.pageY - this.offsetTop;
-        that.ViewportMouseMove(that.pimpl_, x, y);
-      });
-    
-      this.htmlCanvas_.addEventListener('mouseup', function(event) {
-        that.ViewportMouseUp(that.pimpl_);
-      });
-    
-      window.addEventListener('keydown', function(event) {
-        var keyChar: string | null = event.key;
-        var keyCode = event.keyCode
-        if (keyChar.length == 1) {
-          keyCode = 0; // maps to OrthancStone::KeyboardKeys_Generic
-        } else {
-          keyChar = null;
-        }
-//        console.log("key: ", keyCode, keyChar);
-        that.ViewportKeyPressed(that.pimpl_, keyCode, keyChar, event.shiftKey, event.ctrlKey, event.altKey);
-      });
-    
-      this.htmlCanvas_.addEventListener('wheel', function(event) {
-        var x = event.pageX - this.offsetLeft;
-        var y = event.pageY - this.offsetTop;
-        that.ViewportMouseWheel(that.pimpl_, event.deltaY, x, y, event.ctrlKey);
-        event.preventDefault();
-      }, {passive: false}); // must not be passive if calling event.preventDefault, ie to cancel scroll or zoom of the whole interface
-
-      this.htmlCanvas_.addEventListener('touchstart', function(event: TouchEvent) {
-        // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport)
-        event.preventDefault();
-        event.stopPropagation();
-
-        // TODO: find a way to pass the coordinates as an array between JS and C++
-        var x0 = 0;
-        var y0 = 0;
-        var x1 = 0;
-        var y1 = 0;
-        var x2 = 0;
-        var y2 = 0;
-        if (event.targetTouches.length > 0) {
-          x0 = event.targetTouches[0].pageX;
-          y0 = event.targetTouches[0].pageY;
-        }
-        if (event.targetTouches.length > 1) {
-          x1 = event.targetTouches[1].pageX;
-          y1 = event.targetTouches[1].pageY;
-        }
-        if (event.targetTouches.length > 2) {
-          x2 = event.targetTouches[2].pageX;
-          y2 = event.targetTouches[2].pageY;
-        }
-
-        that.ViewportTouchStart(that.pimpl_, event.targetTouches.length, x0, y0, x1, y1, x2, y2);
-      }, {passive: false}); // must not be passive if calling event.preventDefault, ie to cancel scroll or zoom of the whole interface
-    
-      this.htmlCanvas_.addEventListener('touchend', function(event) {
-        // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport)
-        event.preventDefault();
-        event.stopPropagation();
-
-        // TODO: find a way to pass the coordinates as an array between JS and C++
-        var x0 = 0;
-        var y0 = 0;
-        var x1 = 0;
-        var y1 = 0;
-        var x2 = 0;
-        var y2 = 0;
-        if (event.targetTouches.length > 0) {
-          x0 = event.targetTouches[0].pageX;
-          y0 = event.targetTouches[0].pageY;
-        }
-        if (event.targetTouches.length > 1) {
-          x1 = event.targetTouches[1].pageX;
-          y1 = event.targetTouches[1].pageY;
-        }
-        if (event.targetTouches.length > 2) {
-          x2 = event.targetTouches[2].pageX;
-          y2 = event.targetTouches[2].pageY;
-        }
-
-        that.ViewportTouchEnd(that.pimpl_, event.targetTouches.length, x0, y0, x1, y1, x2, y2);
-      });
-    
-      this.htmlCanvas_.addEventListener('touchmove', function(event: TouchEvent) {
-
-        // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport)
-        event.preventDefault();
-        event.stopPropagation();
-
-
-        // TODO: find a way to pass the coordinates as an array between JS and C++
-        var x0 = 0;
-        var y0 = 0;
-        var x1 = 0;
-        var y1 = 0;
-        var x2 = 0;
-        var y2 = 0;
-        if (event.targetTouches.length > 0) {
-          x0 = event.targetTouches[0].pageX;
-          y0 = event.targetTouches[0].pageY;
-        }
-        if (event.targetTouches.length > 1) {
-          x1 = event.targetTouches[1].pageX;
-          y1 = event.targetTouches[1].pageY;
-        }
-        if (event.targetTouches.length > 2) {
-          x2 = event.targetTouches[2].pageX;
-          y2 = event.targetTouches[2].pageY;
-        }
-
-        that.ViewportTouchMove(that.pimpl_, event.targetTouches.length, x0, y0, x1, y1, x2, y2);
-        return;
-
-      }, {passive: false}); // must not be passive if calling event.preventDefault, ie to cancel scroll or zoom of the whole interface
-    }  
-
-  public ResetTouch() {
-    if (this.touchTranslation_ ||
-        this.touchZoom_) {
-      this.ViewportMouseUp(this.pimpl_);
-    }
-
-    this.touchTranslation_ = false;
-    this.touchZoom_ = false;
-  }
-  
-  public GetTouchTranslation(event: any) {
-    var touch = event.targetTouches[0];
-    return [
-      touch.pageX,
-      touch.pageY
-    ];
-  }
-    
-  public GetTouchZoom(event: any) {
-    var touch1 = event.targetTouches[0];
-    var touch2 = event.targetTouches[1];
-    var dx = (touch1.pageX - touch2.pageX);
-    var dy = (touch1.pageY - touch2.pageY);
-    var d = Math.sqrt(dx * dx + dy * dy);
-    return [
-      (touch1.pageX + touch2.pageX) / 2.0,
-      (touch1.pageY + touch2.pageY) / 2.0,
-      d
-    ];
-  }
-   
-}
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,259 +0,0 @@
-/*
-         1         2         3         4         5         6         7
-12345678901234567890123456789012345678901234567890123456789012345678901234567890
-*/
-
-namespace VsolStuff
-{
-  enum EnumMonth0
-  {
-    January,
-    February,
-    March
-  };
-
-  // interface Serializer
-  // {
-  //   Serialize(value: number): string;
-  //   Serialize(value: string): string;
-  //   Serialize(value: EnumMonth0): string;
-  // };
-  function printf(value: any):void
-  {
-    console.log(value)
-  }
-
-  // function StoneSerialize(value: string) : string;
-  // function StoneSerialize(value: number) : string;
-  // function StoneSerialize(value: EnumMonth0) : string;
-  function StoneSerialize<T>(value: T[]) : string;
-
-  function StoneSerialize<T>(value: T[] | EnumMonth0) : string
-  {
-    let valueType = typeof value;
-    printf(`About to serialize value. Type is ${valueType}`)
-    printf(`About to serialize value. Type is ${typeof value}`)
-    return "Choucroute";
-  }
-
-  function main():number
-  {
-    enum Color {Red = 1, Green = 2, Blue = 4}
-    let color: Color = Color.Green;
-    printf("---------------------------");
-    printf(`typeof color: ${typeof color}`);
-    printf("---------------------------");
-    let colors: Color[] = []
-    colors.push(Color.Green);
-    colors.push(Color.Red);
-    printf(`typeof colors: ${typeof colors}`);
-    printf(`Array.isArray(colors): ${Array.isArray(colors)}`);
-    printf("---------------------------");
-    
-
-    let toto:EnumMonth0[] = [];
-
-    toto.push(EnumMonth0.February);
-    toto.push(EnumMonth0.March);
-
-    printf(JSON.stringify(toto));
-
-    return 0;
-
-  }
-
-  main()
-
-//   string StoneSerialize_number(int32_t value)
-//   {
-
-//     Json::Value result(value);
-//     return result;
-//   }
-
-//   Json::Value StoneSerialize(double value)
-//   {
-//     Json::Value result(value);
-//     return result;
-//   }
-
-//   Json::Value StoneSerialize(bool value)
-//   {
-//     Json::Value result(value);
-//     return result;
-//   }
-
-//   Json::Value StoneSerialize(const std::string& value)
-//   {
-//     // the following is better than 
-//     Json::Value result(value.data(),value.data()+value.size());
-//     return result;
-//   }
-
-//   template<typename T>
-//   Json::Value StoneSerialize(const std::map<std::string,T>& value)
-//   {
-//     Json::Value result(Json::objectValue);
-
-//     for (std::map<std::string, T>::const_iterator it = value.cbegin();
-//       it != value.cend(); ++it)
-//     {
-//       // it->first it->second
-//       result[it->first] = StoneSerialize(it->second);
-//     }
-//     return result;
-//   }
-
-//   template<typename T>
-//   Json::Value StoneSerialize(const std::vector<T>& value)
-//   {
-//     Json::Value result(Json::arrayValue);
-//     for (size_t i = 0; i < value.size(); ++i)
-//     {
-//       result.append(StoneSerialize(value[i]));
-//     }
-//     return result;
-//   }
-
-//   enum EnumMonth0
-//   {
-//     January,
-//     February,
-//     March
-//   };
-
-//   std::string ToString(EnumMonth0 value)
-//   {
-//     switch(value)
-//     {
-//       case January: 
-//         return "January";
-//       case February:
-//         return "February";
-//       case March:
-//         return "March";
-//       default:
-//         {
-//           std::stringstream ss;
-//           ss << "Unrecognized EnumMonth0 value (" << static_cast<int64_t>(value) << ")";
-//           throw std::runtime_error(ss.str());
-//         }
-//     }
-//   }
-
-//   void FromString(EnumMonth0& value, std::string strValue)
-//   {
-//     if (strValue == "January" || strValue == "EnumMonth0_January")
-//     {
-//       return January;
-//     }
-//     else if (strValue == "February" || strValue == "EnumMonth0_February")
-//     {
-//       return February;
-//     }
-// #error Not implemented yet
-//   }
-
-//   Json::Value StoneSerialize(const EnumMonth0& value)
-//   {
-//     return StoneSerialize(ToString(value));
-//   }
-//   struct Message1
-//   {
-//     int32_t a;
-//     std::string b;
-//     EnumMonth0 c;
-//     bool d;
-//   };
-
-//   struct Message2
-//   {
-//     std::string toto;
-//     std::vector<Message1> tata;
-//     std::vector<std::string> tutu;
-//     std::map<std::string, std::string> titi;
-//     std::map<std::string, Message1> lulu;
-//   };
-
-//   Json::Value StoneSerialize(const Message1& value)
-//   {
-//     Json::Value result(Json::objectValue);
-//     result["a"] = StoneSerialize(value.a);
-//     result["b"] = StoneSerialize(value.b);
-//     result["c"] = StoneSerialize(value.c);
-//     result["d"] = StoneSerialize(value.d);
-//     return result;
-//   }
-    
-//   Json::Value StoneSerialize(const Message2& value)
-//   {
-//     Json::Value result(Json::objectValue);
-//     result["toto"] = StoneSerialize(value.toto);
-//     result["tata"] = StoneSerialize(value.tata);
-//     result["tutu"] = StoneSerialize(value.tutu);
-//     result["titi"] = StoneSerialize(value.titi);
-//     result["lulu"] = StoneSerialize(value.lulu);
-//     return result;
-//   }
-// }
-
-// int main()
-// {
-//   VsolStuff::Message1 msg1_0;
-//   msg1_0.a = 42;
-//   msg1_0.b = "Benjamin";
-//   msg1_0.c = VsolStuff::January;
-//   msg1_0.d = true;
-
-//   VsolStuff::Message1 msg1_1;
-//   msg1_1.a = 43;
-//   msg1_1.b = "Sandrine";
-//   msg1_1.c = VsolStuff::March;
-//   msg1_0.d = false;
-
-//   // std::string toto;
-//   // std::vector<Message1> tata;
-//   // std::vector<std::string> tutu;
-//   // std::map<int32_t, std::string> titi;
-//   // std::map<int32_t, Message1> lulu;
-
-//   VsolStuff::Message2 msg2_0;
-//   msg2_0.toto = "Prout zizi";
-//   msg2_0.tata.push_back(msg1_0);
-//   msg2_0.tata.push_back(msg1_1);
-//   msg2_0.tutu.push_back("Mercadet");
-//   msg2_0.tutu.push_back("Poisson");
-//   msg2_0.titi["44"] = "key 44";
-//   msg2_0.titi["45"] = "key 45";
-//   msg2_0.lulu["54"] = msg1_1;
-//   msg2_0.lulu["55"] = msg1_0;
-//   auto result = VsolStuff::StoneSerialize(msg2_0);
-//   auto resultStr = result.toStyledString();
-
-//   Json::Value readValue;
-
-//   Json::CharReaderBuilder builder;
-//   Json::CharReader* reader = builder.newCharReader();
-//   std::string errors;
-
-//   bool ok = reader->parse(
-//     resultStr.c_str(),
-//     resultStr.c_str() + resultStr.size(),
-//     &readValue,
-//     &errors
-//   );
-//   delete reader;
-
-//   if (!ok)
-//   {
-//     std::stringstream ss;
-//     ss << "Json parsing error: " << errors;
-//     throw std::runtime_error(ss.str());
-//   }
-//   std::cout << readValue.get("toto", "Default Value").asString() << std::endl;
-//   return 0;
-// }
-
-
-}
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground2.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-class Greeter {
-    greeting: string;
-    constructor(message: string) {
-        this.greeting = message;
-    }
-    greet() {
-        return "Hello, " + this.greeting;
-    }
-}
-enum Color {
-    Red,
-    Green,
-    Blue,
-};
-
-function ColorToString(value: Color)
-{
-    switch (value)
-    {
-        case Color.Red:
-            return "Red";
-        case Color.Green:
-            return "Green";
-        case Color.Blue:
-            return "Blue";
-        default:
-            throw new Error(`Unrecognized Color value(${value})`);
-    }
-}
-
-let color: Color = Color.Red;
-
-document.body.textContent = "<p>---------------------</p>"
-document.body.textContent += "<p>********************************</p>"
-
-class TestMessage {
-    s1: string;
-    s2: Array<string>;
-    s3: Array<Array<string>>;
-    s4: Map<string, number>;
-    s5: Map<number, Array<string>>;
-    s6: Color;
-    s7: boolean;
-}
-
-let tm = new TestMessage();
-tm.s2 = new Array<string>()
-tm.s2.push("toto");
-tm.s2.push("toto2");
-tm.s2.push("toto3");
-tm.s4 = new Map<string, number>();
-tm.s4["toto"] = 42;
-tm.s4["toto"] = 1999;
-tm.s4["tatata"] = 1999;
-tm.s6 = Color.Red;
-tm.s7 = true
-
-let txt = JSON.stringify(tm)
-let txtElem = document.createElement('textarea');
-txtElem.value = txt;
-
-document.body.appendChild(txtElem);
-
-let greeter = new Greeter("world");
-
-let button = document.createElement('button');
-button.textContent = "Say Hello";
-button.onclick = function() {
-    alert(greeter.greet());
-}
-
-document.body.appendChild(button);
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground3.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,275 +0,0 @@
-/*
-         1         2         3         4         5         6         7
-12345678901234567890123456789012345678901234567890123456789012345678901234567890
-*/
-
-namespace VsolStuff222 {
-  export enum EnumMonth0 {
-    January,
-    February,
-    March
-  };
-
-  export class Message1 {
-    a: number;
-    b: string;
-    c: EnumMonth0;
-    d: boolean;
-    public StoneSerialize(): string {
-      let container: object = {};
-      container['type'] = 'VsolStuff.Message1';
-      container['value'] = this;
-      return JSON.stringify(container);
-    }
-  };
-
-  export class Message2 {
-    toto: string;
-    tata: Message1[];
-    tutu: string[];
-    titi: Map<string, string>;
-    lulu: Map<string, Message1>;
-
-    public StoneSerialize(): string {
-      let container: object = {};
-      container['type'] = 'VsolStuff.Message2';
-      container['value'] = this;
-      return JSON.stringify(container);
-    }
-  };
-}
-
-function printf(value: any): void {
-  console.log(value)
-}
-
-function main(): number {
-
-  let msg1_0 = new VsolStuff.Message1();
-  msg1_0.a = 42;
-  msg1_0.b = "Benjamin";
-  msg1_0.c = VsolStuff.EnumMonth0.January;
-  msg1_0.d = true;
-
-  let msg1_1 = new VsolStuff.Message1();
-  msg1_1.a = 43;
-  msg1_1.b = "Sandrine";
-  msg1_1.c = VsolStuff.EnumMonth0.March;
-  msg1_0.d = false;
-
-  // std::string toto;
-  // std::vector<Message1> tata;
-  // std::vector<std::string> tutu;
-  // std::map<int32_t, std::string> titi;
-  // std::map<int32_t, Message1> lulu;
-
-  let msg2_0 = new VsolStuff.Message2();
-  msg2_0.toto = "Prout zizi";
-  msg2_0.tata = new Array<VsolStuff.Message1>();
-  msg2_0.tata.push(msg1_0);
-  msg2_0.tata.push(msg1_1);
-  msg2_0.tutu.push("Mercadet");
-  msg2_0.tutu.push("Poisson");ing
-  msg2_0.titi["44"] = "key 44";
-  msg2_0.titi["45"] = "key 45";
-  msg2_0.lulu["54"] = msg1_1;
-  msg2_0.lulu["55"] = msg1_0;
-  let result:string = VsolStuff.StoneSerialize(msg2_0);
-  return 0;
-}
-
-main()
-
-//   string StoneSerialize_number(int32_t value)
-//   {
-
-//     Json::Value result(value);
-//     return result;
-//   }
-
-//   Json::Value StoneSerialize(double value)
-//   {
-//     Json::Value result(value);
-//     return result;
-//   }
-
-//   Json::Value StoneSerialize(bool value)
-//   {
-//     Json::Value result(value);
-//     return result;
-//   }
-
-//   Json::Value StoneSerialize(const std::string& value)
-//   {
-//     // the following is better than 
-//     Json::Value result(value.data(),value.data()+value.size());
-//     return result;
-//   }
-
-//   template<typename T>
-//   Json::Value StoneSerialize(const std::map<std::string,T>& value)
-//   {
-//     Json::Value result(Json::objectValue);
-
-//     for (std::map<std::string, T>::const_iterator it = value.cbegin();
-//       it != value.cend(); ++it)
-//     {
-//       // it->first it->second
-//       result[it->first] = StoneSerialize(it->second);
-//     }
-//     return result;
-//   }
-
-//   template<typename T>
-//   Json::Value StoneSerialize(const std::vector<T>& value)
-//   {
-//     Json::Value result(Json::arrayValue);
-//     for (size_t i = 0; i < value.size(); ++i)
-//     {
-//       result.append(StoneSerialize(value[i]));
-//     }
-//     return result;
-//   }
-
-//   enum EnumMonth0
-//   {
-//     January,
-//     February,
-//     March
-//   };
-
-//   std::string ToString(EnumMonth0 value)
-//   {
-//     switch(value)
-//     {
-//       case January: 
-//         return "January";
-//       case February:
-//         return "February";
-//       case March:
-//         return "March";
-//       default:
-//         {
-//           std::stringstream ss;
-//           ss << "Unrecognized EnumMonth0 value (" << static_cast<int64_t>(value) << ")";
-//           throw std::runtime_error(ss.str());
-//         }
-//     }
-//   }
-
-//   void FromString(EnumMonth0& value, std::string strValue)
-//   {
-//     if (strValue == "January" || strValue == "EnumMonth0_January")
-//     {
-//       return January;
-//     }
-//     else if (strValue == "February" || strValue == "EnumMonth0_February")
-//     {
-//       return February;
-//     }
-// #error Not implemented yet
-//   }
-
-//   Json::Value StoneSerialize(const EnumMonth0& value)
-//   {
-//     return StoneSerialize(ToString(value));
-//   }
-//   struct Message1
-//   {
-//     int32_t a;
-//     std::string b;
-//     EnumMonth0 c;
-//     bool d;
-//   };
-
-//   struct Message2
-//   {
-//     std::string toto;
-//     std::vector<Message1> tata;
-//     std::vector<std::string> tutu;
-//     std::map<std::string, std::string> titi;
-//     std::map<std::string, Message1> lulu;
-//   };
-
-//   Json::Value StoneSerialize(const Message1& value)
-//   {
-//     Json::Value result(Json::objectValue);
-//     result["a"] = StoneSerialize(value.a);
-//     result["b"] = StoneSerialize(value.b);
-//     result["c"] = StoneSerialize(value.c);
-//     result["d"] = StoneSerialize(value.d);
-//     return result;
-//   }
-
-//   Json::Value StoneSerialize(const Message2& value)
-//   {
-//     Json::Value result(Json::objectValue);
-//     result["toto"] = StoneSerialize(value.toto);
-//     result["tata"] = StoneSerialize(value.tata);
-//     result["tutu"] = StoneSerialize(value.tutu);
-//     result["titi"] = StoneSerialize(value.titi);
-//     result["lulu"] = StoneSerialize(value.lulu);
-//     return result;
-//   }
-// }
-
-// int main()
-// {
-//   VsolStuff::Message1 msg1_0;
-//   msg1_0.a = 42;
-//   msg1_0.b = "Benjamin";
-//   msg1_0.c = VsolStuff::January;
-//   msg1_0.d = true;
-
-//   VsolStuff::Message1 msg1_1;
-//   msg1_1.a = 43;
-//   msg1_1.b = "Sandrine";
-//   msg1_1.c = VsolStuff::March;
-//   msg1_0.d = false;
-
-//   // std::string toto;
-//   // std::vector<Message1> tata;
-//   // std::vector<std::string> tutu;
-//   // std::map<int32_t, std::string> titi;
-//   // std::map<int32_t, Message1> lulu;
-
-//   VsolStuff::Message2 msg2_0;
-//   msg2_0.toto = "Prout zizi";
-//   msg2_0.tata.push_back(msg1_0);
-//   msg2_0.tata.push_back(msg1_1);
-//   msg2_0.tutu.push_back("Mercadet");
-//   msg2_0.tutu.push_back("Poisson");
-//   msg2_0.titi["44"] = "key 44";
-//   msg2_0.titi["45"] = "key 45";
-//   msg2_0.lulu["54"] = msg1_1;
-//   msg2_0.lulu["55"] = msg1_0;
-//   auto result = VsolStuff::StoneSerialize(msg2_0);
-//   auto resultStr = result.toStyledString();
-
-//   Json::Value readValue;
-
-//   Json::CharReaderBuilder builder;
-//   Json::CharReader* reader = builder.newCharReader();
-//   std::string errors;
-
-//   bool ok = reader->parse(
-//     resultStr.c_str(),
-//     resultStr.c_str() + resultStr.size(),
-//     &readValue,
-//     &errors
-//   );
-//   delete reader;
-
-//   if (!ok)
-//   {
-//     std::stringstream ss;
-//     ss << "Json parsing error: " << errors;
-//     throw std::runtime_error(ss.str());
-//   }
-//   std::cout << readValue.get("toto", "Default Value").asString() << std::endl;
-//   return 0;
-// }
-
-
-}
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/playground4.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-testYaml = """
-enum SomeEnum:
- - january
- - feb
-
-struct Message0:
- a: string
-
-struct Message1:
- a: string
- b: int32
- c: vector<Message0>
- d: SomeEnum = january
- e: SomeEnum= january
- f: SomeEnum=january
- g: SomeEnum =january
-  
-
-# github.com/AlDanial/cloc
-header2 : 
-  cloc_version       : 1.67
-  elapsed_seconds    : int32_t
-
-header : 
-  cloc_version       : 1.67
-  elapsed_seconds    : int32_t
-  cloc_url           : vector<map<string,int32>>
-  n_files            : 1
-  n_lines            : 3
-  files_per_second   : 221.393718659277
-  lines_per_second   : 664.181155977831
-  report_file        : IDL.idl.yaml
-IDL :
-  nFiles: 1
-  blank: 0
-  comment: 2
-  code: 1
-EnumSUM: 
-  - aaa
-  - bbb
-
-SUM: 
-  blank: 0
-  comment: 2
-  code: 1
-  nFiles: 1
-"""
-
-import yaml
-
-b = yaml.load(testYaml)
-print(b)
-
-c = {
-  'enum SomeEnum': ['january', 'feb'], 
-  'struct Message0': {'a': 'string'}, 
-  'struct Message1': {
-    'a': 'string', 
-    'b': 'int32', 
-    'c': 'vector<Message0>', 
-    'd': 'vector<map<string,int32>>', 
-    'e': 'SomeEnum= january', 
-    'f': 'SomeEnum=january', 
-    'g': 'SomeEnum =january'
-  }, 
-}
-
-print(c)
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/runts.ps1	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-# echo "+----------------------+"
-# echo "|    playground.ts     |"
-# echo "+----------------------+"
-
-# tsc -t ES2015 .\playground.ts; node .\playground.js
-
-# echo "+----------------------+"
-# echo "|    playground3.ts     |"
-# echo "+----------------------+"
-
-# tsc -t ES2015 .\playground3.ts; node .\playground3.js
-
-echo "+----------------------+"
-echo "|      stonegen        |"
-echo "+----------------------+"
-
-if(-not (test-Path "build")) {
-  mkdir "build"
-}
-
-echo "Generate the TS and CPP wrapper... (to build/)"
-python stonegentool.py -o "." test_data/test1.yaml
-if($LASTEXITCODE -ne 0) {
-  Write-Error ("Code generation failed!")
-  exit $LASTEXITCODE
-}
-
-echo "Compile the TS wrapper to JS... (in build/)"
-tsc --module commonjs --sourceMap -t ES2015 --outDir "build/" VsolMessages_generated.ts
-if($LASTEXITCODE -ne 0) {
-  Write-Error ("Code compilation failed!")
-  exit $LASTEXITCODE
-}
-
-echo "Compile the test app..."
-tsc --module commonjs --sourceMap -t ES2015 --outDir "build/" test_stonegen.ts
-if($LASTEXITCODE -ne 0) {
-  Write-Error ("Code compilation failed!")
-  exit $LASTEXITCODE
-}
-
-browserify "build/test_stonegen.js" "build/VsolMessages_generated.js" -o "build_browser/test_stonegen_fused.js"
-
-cp .\test_stonegen.html .\build_browser\
-
-echo "Run the test app..."
-Push-Location
-cd build_browser
-node .\test_stonegen_fused.js
-Pop-Location
-if($LASTEXITCODE -ne 0) {
-  Write-Error ("Code execution failed!")
-  exit $LASTEXITCODE
-}
-
-
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/test_stonegen.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-<script type="text/javascript" src="test_stonegen_fused.js"></script>
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/test_stonegen.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,206 +0,0 @@
-import * as VsolMessages from "./VsolMessages_generated";
-
-function TEST_StoneGen_SerializeComplex() {
-  let msg1_0 = new VsolMessages.Message1();
-  msg1_0.a = 42;
-  msg1_0.b = "Benjamin";
-  msg1_0.c = VsolMessages.EnumMonth0.January;
-  msg1_0.d = true;
-  let msg1_1 = new VsolMessages.Message1();
-  msg1_1.a = 43;
-  msg1_1.b = "Sandrine";
-  msg1_1.c = VsolMessages.EnumMonth0.March;
-  msg1_0.d = false;
-  let result1_0 = msg1_0.StoneSerialize();
-  let resultStr1_0 = JSON.stringify(result1_0);
-  let result1_1 = msg1_1.StoneSerialize();
-  let resultStr1_1 = JSON.stringify(result1_1);
-  // std::string toto;
-  // std::vector<Message1> tata;
-  // std::vector<std::string> tutu;
-  // std::map<int32_t, std::string> titi;
-  // std::map<int32_t, Message1> lulu;
-  let msg2_0 = new VsolMessages.Message2();
-  msg2_0.toto = "Prout zizi";
-  msg2_0.tata.push(msg1_0);
-  msg2_0.tata.push(msg1_1);
-  msg2_0.tutu.push("Mercadet");
-  msg2_0.tutu.push("Poisson");
-  msg2_0.titi["44"] = "key 44";
-  msg2_0.titi["45"] = "key 45";
-  msg2_0.lulu["54"] = msg1_1;
-  msg2_0.lulu["55"] = msg1_0;
-  let result2 = msg2_0.StoneSerialize();
-  let resultStr2 = JSON.stringify(result2);
-  let refResult2 = `{
-"type" : "VsolMessages.Message2",
-"value" : 
-{
-  "lulu" : 
-  {
-    "54" : 
-    {
-      "a" : 43,
-      "b" : "Sandrine",
-      "c" : 2,
-      "d" : true
-    },
-    "55" : 
-    {
-      "a" : 42,
-      "b" : "Benjamin",
-      "c" : 0,
-      "d" : false
-    }
-  },
-  "tata" : 
-  [
-    {
-      "a" : 42,
-      "b" : "Benjamin",
-      "c" : 0,
-      "d" : false
-    },
-    {
-      "a" : 43,
-      "b" : "Sandrine",
-      "c" : 2,
-      "d" : true
-    }
-  ],
-  "titi" : 
-  {
-    "44" : "key 44",
-    "45" : "key 45"
-  },
-  "toto" : "Prout zizi",
-  "tutu" : 
-  [
-    "Mercadet",
-    "Poisson"
-  ]
-}
-}
-`;
-  let refResult2Obj = JSON.parse(refResult2);
-  let resultStr2Obj = JSON.parse(resultStr2);
-  if (false) {
-    if (refResult2Obj !== resultStr2Obj) {
-      console.log("Results are different!");
-      console.log(`refResult2Obj['value']['lulu']['54'] = ${refResult2Obj['value']['lulu']['54']}`);
-      console.log(`refResult2Obj['value']['lulu']['54']['a'] = ${refResult2Obj['value']['lulu']['54']['a']}`);
-      console.log("************************************************************");
-      console.log("**                  REFERENCE OBJ                         **");
-      console.log("************************************************************");
-      console.log(refResult2Obj);
-      console.log("************************************************************");
-      console.log("**                  ACTUAL OBJ                            **");
-      console.log("************************************************************");
-      console.log(resultStr2Obj);
-      console.log("************************************************************");
-      console.log("**                  REFERENCE                             **");
-      console.log("************************************************************");
-      console.log(refResult2);
-      console.log("************************************************************");
-      console.log("**                  ACTUAL                                **");
-      console.log("************************************************************");
-      console.log(resultStr2);
-      throw new Error("Wrong serialization");
-    }
-  }
-  let refResultValue = JSON.parse(resultStr2);
-  console.log(refResultValue);
-}
-class MyDispatcher {
-  message1: VsolMessages.Message1;
-  message2: VsolMessages.Message2;
-
-  HandleMessage1(value: VsolMessages.Message1) {
-    this.message1 = value;
-    return true;
-  }
-  HandleMessage2(value: VsolMessages.Message2) {
-    this.message2 = value;
-    return true;
-  }
-  HandleA(value) {
-    return true;
-  }
-  HandleB(value) {
-    return true;
-  }
-  HandleC(value) {
-    return true;
-  }
-}
-;
-function TEST_StoneGen_DeserializeOkAndNok() {
-  let serializedMessage = `{
-"type" : "VsolMessages.Message2",
-"value" : 
-{
-  "lulu" : 
-  {
-    "54" : 
-    {
-      "a" : 43,
-      "b" : "Sandrine",
-      "c" : 2,
-      "d" : true
-    },
-    "55" : 
-    {
-      "a" : 42,
-      "b" : "Benjamin",
-      "c" : 0,
-      "d" : false
-    }
-  },
-  "tata" : 
-  [
-    {
-      "a" : 42,
-      "b" : "Benjamin",
-      "c" : 0,
-      "d" : false
-    },
-    {
-      "a" : 43,
-      "b" : "Sandrine",
-      "c" : 2,
-      "d" : true
-    }
-  ],
-  "titi" : 
-  {
-    "44" : "key 44",
-    "45" : "key 45"
-  },
-  "toto" : "Prout zizi",
-  "tutu" : 
-  [
-    "Mercadet",
-    "Poisson"
-  ]
-}
-}`;
-  let myDispatcher = new MyDispatcher();
-  let ok = VsolMessages.StoneDispatchToHandler(serializedMessage, myDispatcher);
-  if (!ok) {
-    throw Error("Error when dispatching message!");
-  }
-  if (myDispatcher.message1 != undefined) {
-    throw Error("(myDispatcher.Message1 != undefined)");
-  }
-  if (myDispatcher.message2 == undefined) {
-    throw Error("(myDispatcher.Message2 == undefined)");
-  }
-  console.log("TEST_StoneGen_DeserializeOkAndNok: OK!");
-}
-function main() {
-  console.log("Entering main()");
-  TEST_StoneGen_SerializeComplex();
-  TEST_StoneGen_DeserializeOkAndNok();
-  return 0;
-}
-console.log(`Exit code is: ${main()}`);
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/Graveyard/tsconfig.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-{
-  // "extends": "../../../../../orthanc-stone/Platforms/Wasm/tsconfig-stone",
-  "compilerOptions": {
-    // "outFile": "../../../WebApplication-build/to-embed/app.js",
-    // "module": "system",
-    // "sourceMap": false,
-    "lib": [
-      "es2017",
-      "es2017",
-      "dom",
-      "dom.iterable"
-    ]
-  },
-  "include": [
-    // "commands/*.ts",
-    // "logger.ts",
-    // "app.ts",
-    // "main.ts",
-    // "ui.ts",
-    // "popup.ts"
-  ]
-}
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/README.md	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-Requirements
-----------------
-
-Install Node and npm.
-
-Then:
-- `npm install browserify`
-- `npm install typescript`
-- `npm install tsify`
-
-`testCppHandler` contains a C++ project that produces an executable 
-slurping a set of text files representing messages defined against 
-the `test_data/testTestStoneCodeGen.yaml' schema and dumping them to `cout`.
-
-'testWasmIntegrated` contains a small Web app demonstrating the 
-interaction between TypeScript and C++ in WASM.
-source ~/apps/emsdk/emsdk_env.sh
-
-
-Install Python and the following packages `pip install pyyaml yamlloader jinja2`
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/stonegentool.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,605 +0,0 @@
-import json
-import yaml
-import re
-import os
-import sys
-from jinja2 import Template
-from io import StringIO
-import time
-import datetime
-import yamlloader
-
-"""
-         1         2         3         4         5         6         7
-12345678901234567890123456789012345678901234567890123456789012345678901234567890
-"""
-
-# see https://stackoverflow.com/a/2504457/2927708
-def trim(docstring):
-    if not docstring:
-        return ''
-    # Convert tabs to spaces (following the normal Python rules)
-    # and split into a list of lines:
-    lines = docstring.expandtabs().splitlines()
-    # Determine minimum indentation (first line doesn't count):
-    indent = sys.maxsize
-    for line in lines[1:]:
-        stripped = line.lstrip()
-        if stripped:
-            indent = min(indent, len(line) - len(stripped))
-    # Remove indentation (first line is special):
-    trimmed = [lines[0].strip()]
-    if indent < sys.maxsize:
-        for line in lines[1:]:
-            trimmed.append(line[indent:].rstrip())
-    # Strip off trailing and leading blank lines:
-    while trimmed and not trimmed[-1]:
-        trimmed.pop()
-    while trimmed and not trimmed[0]:
-        trimmed.pop(0)
-    # Return a single string:
-    return '\n'.join(trimmed)
-
-class JsonHelpers:
-    """A set of utilities to perform JSON operations"""
-
-    @staticmethod
-    def removeCommentsFromJsonContent(string):
-        """
-      Remove comments from a JSON file
-
-      Comments are not allowed in JSON but, i.e., Orthanc configuration files
-      contains C++ like comments that we need to remove before python can
-      parse the file
-      """
-        # remove all occurrence streamed comments (/*COMMENT */) from string
-        string = re.sub(re.compile("/\*.*?\*/", re.DOTALL), "", string)
-
-        # remove all occurrence singleline comments (//COMMENT\n ) from string
-        string = re.sub(re.compile("//.*?\n"), "", string)
-
-        return string
-
-    @staticmethod
-    def loadJsonWithComments(path):
-        """
-      Reads a JSON file that may contain C++ like comments
-      """
-        with open(path, "r") as fp:
-            fileContent = fp.read()
-        fileContent = JsonHelpers.removeCommentsFromJsonContent(fileContent)
-        return json.loads(fileContent)
-
-class FieldDefinition:
-
-    def __init__(self, name: str, type: str, defaultValue: str):
-        self.name = name
-        self.type = type
-        self.defaultValue = defaultValue
-
-    @staticmethod
-    def fromKeyValue(key: str, value: str):
-
-        if "=" in value:
-            splitValue = value.split(sep="=")
-            type = splitValue[0].strip(" ")
-            defaultValue = splitValue[1].strip(" ")
-        else:
-            type = value
-            defaultValue = None
-
-        return FieldDefinition(name = key, type = type, defaultValue = defaultValue)
-
-
-def LoadSchemaFromJson(filePath):
-    return JsonHelpers.loadJsonWithComments(filePath)
-
-def CanonToCpp(canonicalTypename):
-  # C++: prefix map vector and string with std::map, std::vector and
-  # std::string
-  # replace int32... by int32_t...
-  # replace float32 by float
-  # replace float64 by double
-  retVal = canonicalTypename
-  retVal = retVal.replace("map", "std::map")
-  retVal = retVal.replace("vector", "std::vector")
-  retVal = retVal.replace("set", "std::set")
-  retVal = retVal.replace("string", "std::string")
-  #uint32 and uint64 are handled by int32 and uint32 (because search and replace are done as partial words)
-  retVal = retVal.replace("int32", "int32_t")
-  retVal = retVal.replace("int64", "int64_t")
-  retVal = retVal.replace("float32", "float")
-  retVal = retVal.replace("float64", "double")
-  retVal = retVal.replace("json", "Json::Value")
-  return retVal
-
-def CanonToTs(canonicalTypename):
-  # TS: replace vector with Array and map with Map
-  # string remains string
-  # replace int32... by number
-  # replace float32... by number
-  retVal = canonicalTypename
-  retVal = retVal.replace("map", "Map")
-  retVal = retVal.replace("vector", "Array")
-  retVal = retVal.replace("set", "Set")
-  retVal = retVal.replace("uint32", "number")
-  retVal = retVal.replace("uint64", "number")
-  retVal = retVal.replace("int32", "number")
-  retVal = retVal.replace("int64", "number")
-  retVal = retVal.replace("float32", "number")
-  retVal = retVal.replace("float64", "number")
-  retVal = retVal.replace("bool", "boolean")
-  retVal = retVal.replace("json", "Object")
-  return retVal
-
-def NeedsTsConstruction(enums, tsType):
-  if tsType == 'boolean':
-    return False
-  elif tsType == 'number':
-    return False
-  elif tsType == 'string':
-    return False
-  else:
-    enumNames = []
-    for enum in enums:
-      enumNames.append(enum['name'])
-    if tsType in enumNames:
-      return False
-  return True
-
-def NeedsCppConstruction(canonTypename):
-  return False
-
-def DefaultValueToTs(enums, field:FieldDefinition):
-    tsType = CanonToTs(field.type)
-
-    enumNames = []
-    for enum in enums:
-        enumNames.append(enum['name'])
-
-    if tsType in enumNames:
-        return tsType + "." + field.defaultValue
-    else:
-        return field.defaultValue
-
-def DefaultValueToCpp(root, enums, field:FieldDefinition):
-    cppType = CanonToCpp(field.type)
-
-    enumNames = []
-    for enum in enums:
-        enumNames.append(enum['name'])
-
-    if cppType in enumNames:
-        return root + "::" + cppType + "_" + field.defaultValue
-    else:
-        return field.defaultValue
-
-def RegisterTemplateFunction(template,func):
-  """Makes a function callable by a jinja2 template"""
-  template.globals[func.__name__] = func
-  return func
-
-def MakeTemplate(templateStr):
-  template = Template(templateStr)
-  RegisterTemplateFunction(template,CanonToCpp)
-  RegisterTemplateFunction(template,CanonToTs)
-  RegisterTemplateFunction(template,NeedsTsConstruction)
-  RegisterTemplateFunction(template,NeedsCppConstruction)
-  RegisterTemplateFunction(template, DefaultValueToTs)
-  RegisterTemplateFunction(template, DefaultValueToCpp)
-  return template
-
-def MakeTemplateFromFile(templateFileName):
-
-  with open(templateFileName, "r") as templateFile:
-    templateFileContents = templateFile.read()
-    return MakeTemplate(templateFileContents)
-
-
-def EatToken(sentence):
-    """splits "A,B,C" into "A" and "B,C" where A, B and C are type names
-  (including templates) like "int32", "TotoTutu", or 
-  "map<map<int32,vector<string>>,map<string,int32>>" """
-
-    if sentence.count("<") != sentence.count(">"):
-        raise Exception(
-            "Error in the partial template type list " + str(sentence) + "."
-            + " The number of < and > do not match!"
-        )
-
-    # the template level we're currently in
-    templateLevel = 0
-    for i in range(len(sentence)):
-        if (sentence[i] == ",") and (templateLevel == 0):
-            return (sentence[0:i], sentence[i + 1 :])
-        elif sentence[i] == "<":
-            templateLevel += 1
-        elif sentence[i] == ">":
-            templateLevel -= 1
-    return (sentence, "")
-
-
-def SplitListOfTypes(typename):
-    """Splits something like
-  vector<string>,int32,map<string,map<string,int32>> 
-  in:
-  - vector<string>
-  - int32
-    map<string,map<string,int32>>
-  
-  This is not possible with a regex so 
-  """
-    stillStuffToEat = True
-    tokenList = []
-    restOfString = typename
-    while stillStuffToEat:
-        firstToken, restOfString = EatToken(restOfString)
-        tokenList.append(firstToken)
-        if restOfString == "":
-            stillStuffToEat = False
-    return tokenList
-
-
-templateRegex = \
-  re.compile(r"([a-zA-Z0-9_]*[a-zA-Z0-9_]*)<([a-zA-Z0-9_,:<>]+)>")
-
-
-def ParseTemplateType(typename):
-    """ If the type is a template like "SOMETHING<SOME<THING,EL<SE>>>", 
-    then it returns (true,"SOMETHING","SOME<THING,EL<SE>>")
-  otherwise it returns (false,"","")"""
-
-    # let's remove all whitespace from the type
-    # split without argument uses any whitespace string as separator
-    # (space, tab, newline, return or formfeed)
-    typename = "".join(typename.split())
-    matches = templateRegex.match(typename)
-    if matches == None:
-        return (False, "", [])
-    else:
-        m = matches
-        assert len(m.groups()) == 2
-        # we need to split with the commas that are outside of the
-        # defined types. Simply splitting at commas won't work
-        listOfDependentTypes = SplitListOfTypes(m.group(2))
-        return (True, m.group(1), listOfDependentTypes)
-
-def GetStructFields(struct):
-  """This filters out the special metadata key from the struct fields"""
-  return [k for k in struct.keys() if k != '__handler']
-
-def ComputeOrderFromTypeTree(
-  ancestors, 
-  genOrder, 
-  shortTypename, schema):
-
-  if shortTypename in ancestors:
-    raise Exception(
-      "Cyclic dependency chain found: the last of " + str(ancestors) +
-      + " depends on " + str(shortTypename) + " that is already in the list."
-    )
-
-  if not (shortTypename in genOrder):
-    (isTemplate, _, dependentTypenames) = ParseTemplateType(shortTypename)
-    if isTemplate:
-      # if it is a template, it HAS dependent types... They can be 
-      # anything (primitive, collection, enum, structs..). 
-      # Let's process them!
-      for dependentTypename in dependentTypenames:
-        # childAncestors = ancestors.copy()  NO TEMPLATE ANCESTOR!!!
-        # childAncestors.append(typename)
-        ComputeOrderFromTypeTree(
-            ancestors, genOrder, dependentTypename, schema
-        )
-    else:
-      # If it is not template, we are only interested if it is a 
-      # dependency that we must take into account in the dep graph,
-      # i.e., a struct.
-      if IsShortStructType(shortTypename, schema):
-        struct = schema[GetLongTypename(shortTypename, schema)]
-        # The keys in the struct dict are the member names
-        # The values in the struct dict are the member types
-        if struct:
-          # we reach this if struct is not None AND not empty
-          for field in GetStructFields(struct):
-            # we fill the chain of dependent types (starting here)
-            ancestors.append(shortTypename)
-            ComputeOrderFromTypeTree(
-              ancestors, genOrder, struct[field], schema)
-            # don't forget to restore it!
-            ancestors.pop()
-        
-        # now we're pretty sure our dependencies have been processed,
-        # we can start marking our code for generation (it might 
-        # already have been done if someone referenced us earlier)
-        if not shortTypename in genOrder:
-          genOrder.append(shortTypename)
-
-# +-----------------------+
-# |   Utility functions   |
-# +-----------------------+
-
-def IsShortStructType(typename, schema):
-  fullStructName = "struct " + typename
-  return (fullStructName in schema)
-
-def GetLongTypename(shortTypename, schema):
-  if shortTypename.startswith("enum "):
-    raise RuntimeError('shortTypename.startswith("enum "):')
-  enumName = "enum " + shortTypename
-  isEnum = enumName in schema
-
-  if shortTypename.startswith("struct "):
-    raise RuntimeError('shortTypename.startswith("struct "):')
-  structName = "struct " + shortTypename
-  isStruct = ("struct " + shortTypename) in schema
-
-  if isEnum and isStruct:
-    raise RuntimeError('Enums and structs cannot have the same name')
-
-  if isEnum:
-    return enumName
-  if isStruct:
-    return structName
-
-def IsTypename(fullName):
-  return (fullName.startswith("enum ") or fullName.startswith("struct "))
-
-def IsEnumType(fullName):
-  return fullName.startswith("enum ")
-
-def IsStructType(fullName):
-  return fullName.startswith("struct ")
-
-def GetShortTypename(fullTypename):
-  if fullTypename.startswith("struct "):
-    return fullTypename[7:] 
-  elif fullTypename.startswith("enum"):
-    return fullTypename[5:] 
-  else:
-    raise RuntimeError \
-      ('fullTypename should start with either "struct " or "enum "')
-
-def CheckSchemaSchema(schema):
-  if not "rootName" in schema:
-      raise Exception("schema lacks the 'rootName' key")
-  for name in schema.keys():
-    if (not IsEnumType(name)) and (not IsStructType(name)) and \
-      (name != 'rootName'):
-      raise RuntimeError \
-        ('Type "' + str(name) + '" should start with "enum " or "struct "')
-
-  # TODO: check enum fields are unique (in whole namespace)
-  # TODO: check struct fields are unique (in each struct)
-  # TODO: check that in the source schema, there are spaces after each colon
-
-nonTypeKeys = ['rootName']
-def GetTypesInSchema(schema):
-  """Returns the top schema keys that are actual type names"""
-  typeList = [k for k in schema if k not in nonTypeKeys]
-  return typeList
-
-# +-----------------------+
-# | Main processing logic |
-# +-----------------------+
-
-def ComputeRequiredDeclarationOrder(schema):
-  # sanity check
-  CheckSchemaSchema(schema)
-
-  # we traverse the type dependency graph and we fill a queue with
-  # the required struct types, in a bottom-up fashion, to compute
-  # the declaration order
-  # The genOrder list contains the struct full names in the order
-  # where they must be defined.
-  # We do not care about the enums here... They do not depend upon
-  # anything and we'll handle them, in their original declaration 
-  # order, at the start
-  genOrder = []
-  for fullName in GetTypesInSchema(schema):
-    if IsStructType(fullName):
-      realName = GetShortTypename(fullName)
-      ancestors = []
-      ComputeOrderFromTypeTree(ancestors, genOrder, realName, schema)
-  return genOrder
-
-def GetStructFields(fieldDict):
-  """Returns the regular (non __handler) struct fields"""
-  # the following happens for empty structs
-  if fieldDict == None:
-    return fieldDict
-  ret = {}
-  for k,v in fieldDict.items():
-    if k != "__handler":
-      ret[k] = FieldDefinition.fromKeyValue(k, v)
-    if k.startswith("__") and k != "__handler":
-      raise RuntimeError("Fields starting with __ (double underscore) are reserved names!")
-  return ret
-
-def GetStructMetadata(fieldDict):
-  """Returns the __handler struct fields (there are default values that
-     can be overridden by entries in the schema
-     Not tested because it's a fail-safe: if something is broken in this, 
-     dependent projects will not build."""
-  metadataDict = {}
-  metadataDict['handleInCpp'] = False
-  metadataDict['handleInTypescript'] = False
-  
-  if fieldDict != None:
-    for k,v in fieldDict.items():
-      if k.startswith("__") and k != "__handler":
-        raise RuntimeError("Fields starting with __ (double underscore) are reserved names")
-      if k == "__handler":
-        if type(v) == list:
-          for i in v:
-            if i == "cpp":
-              metadataDict['handleInCpp'] = True
-            elif i == "ts":
-              metadataDict['handleInTypescript'] = True
-            else:
-              raise RuntimeError("Error in schema. Allowed values for __handler are \"cpp\" or \"ts\"")
-        elif type(v) == str:
-          if v == "cpp":
-            metadataDict['handleInCpp'] = True
-          elif v == "ts":
-            metadataDict['handleInTypescript'] = True
-          else:
-            raise RuntimeError("Error in schema. Allowed values for __handler are \"cpp\" or \"ts\" (or a list of both)")
-        else:
-            raise RuntimeError("Error in schema. Allowed values for __handler are \"cpp\" or \"ts\" (or a list of both)")
-  return metadataDict
-
-def ProcessSchema(schema, genOrder):
-  # sanity check
-  CheckSchemaSchema(schema)
-
-  # let's doctor the schema to clean it up a bit
-  # order DOES NOT matter for enums, even though it's a list
-  enums = []
-  for fullName in schema.keys():
-    if IsEnumType(fullName):
-      # convert "enum Toto" to "Toto"
-      typename = GetShortTypename(fullName)
-      enum = {}
-      enum['name'] = typename
-      assert(type(schema[fullName]) == list)
-      enum['fields'] = schema[fullName] # must be a list
-      enums.append(enum)
-
-  # now that the order has been established, we actually store\
-  # the structs in the correct order
-  # the structs are like:
-  # example = [
-  #   {
-  #     "name": "Message1",
-  #     "fields": {
-  #       "someMember":"int32",
-  #       "someOtherMember":"vector<string>"
-  #     }
-  #   },
-  #   { 
-  #     "name": "Message2",
-  #     "fields": {
-  #       "someMember":"int32",
-  #       "someOtherMember22":"vector<Message1>"
-  #     }
-  #   }
-  # ]
-
-  structs = []
-  for i in range(len(genOrder)):
-    # this is already the short name
-    typename = genOrder[i]
-    fieldDict = schema["struct " + typename]
-    struct = {}
-    struct['name'] = typename
-    struct['fields'] = GetStructFields(fieldDict)
-    struct['__meta__'] = GetStructMetadata(fieldDict)
-    structs.append(struct)
-  
-  templatingDict = {}
-  templatingDict['enums'] = enums
-  templatingDict['structs'] = structs
-  templatingDict['rootName'] = schema['rootName']
-
-  return templatingDict
-
-# +-----------------------+
-# |    Write to files     |
-# +-----------------------+
-
-# def WriteStreamsToFiles(rootName: str, genc: Dict[str, StringIO]) \
-#   -> None:
-#   pass
-
-def LoadSchema(fn):
-  # latin-1 is a trick, when we do NOT care about NON-ascii chars but
-  # we wish to avoid using a decoding error handler
-  # (see http://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html#files-in-an-ascii-compatible-encoding-best-effort-is-acceptable)
-  # TL;DR: all 256 values are mapped to characters in latin-1 so the file 
-  # contents never cause an error.
-  with open(fn, 'r', encoding='latin-1') as f:
-    schemaText = f.read()
-    assert(type(schemaText) == str)
-  return LoadSchemaFromString(schemaText = schemaText)
-
-def LoadSchemaFromString(schemaText:str):
-    # ensure there is a space after each colon. Otherwise, dicts could be
-    # erroneously recognized as an array of strings containing ':'
-    for i in range(len(schemaText)-1):
-      ch = schemaText[i]
-      nextCh = schemaText[i+1]
-      if ch == ':':
-        if not (nextCh == ' ' or nextCh == '\n'):
-          lineNumber = schemaText.count("\n",0,i) + 1
-          raise RuntimeError("Error at line " + str(lineNumber) + " in the schema: colons must be followed by a space or a newline!")
-    schema = yaml.load(schemaText, Loader = yamlloader.ordereddict.SafeLoader)
-    return schema
-
-def GetTemplatingDictFromSchemaFilename(fn):
-  return GetTemplatingDictFromSchema(LoadSchema(fn))
-
-def GetTemplatingDictFromSchema(schema):
-  genOrder = ComputeRequiredDeclarationOrder(schema)
-  templatingDict = ProcessSchema(schema, genOrder)
-  currentDT = datetime.datetime.now()
-  templatingDict['currentDatetime'] = str(currentDT)
-  return templatingDict
-
-# +-----------------------+
-# |      ENTRY POINT      |
-# +-----------------------+
-def Process(schemaFile, outDir):
-  tdico = GetTemplatingDictFromSchemaFilename(schemaFile)
-
-  tsTemplateFile = \
-    os.path.join(os.path.dirname(__file__), 'template.in.ts.j2')
-  template = MakeTemplateFromFile(tsTemplateFile)
-  renderedTsCode = template.render(**tdico)
-  outputTsFile = os.path.join( \
-    outDir,str(tdico['rootName']) + "_generated.ts")
-  with open(outputTsFile,"wt",encoding='utf8') as outFile:
-    outFile.write(renderedTsCode)
-
-  cppTemplateFile = \
-    os.path.join(os.path.dirname(__file__), 'template.in.h.j2')
-  template = MakeTemplateFromFile(cppTemplateFile)
-  renderedCppCode = template.render(**tdico)
-  outputCppFile = os.path.join( \
-    outDir, str(tdico['rootName']) + "_generated.hpp")
-  with open(outputCppFile,"wt",encoding='utf8') as outFile:
-    outFile.write(renderedCppCode)
-
-if __name__ == "__main__":
-  import argparse
-
-  parser = argparse.ArgumentParser(
-    usage="""stonegentool.py [-h] [-o OUT_DIR] [-v] input_schema
-    EXAMPLE: python stonegentool.py -o "generated_files/" """
-      + """ "mainSchema.yaml,App Specific Commands.json" """
-  )
-  parser.add_argument("input_schema", type=str, \
-    help="path to the schema file")
-  parser.add_argument(
-    "-o",
-    "--out_dir",
-    type=str,
-    default=".",
-    help="""path of the directory where the files 
-                          will be generated. Default is current
-                          working folder""",
-  )
-  parser.add_argument(
-    "-v",
-    "--verbosity",
-    action="count",
-    default=0,
-    help="""increase output verbosity (0 == errors 
-                          only, 1 == some verbosity, 2 == nerd
-                          mode""",
-  )
-
-  args = parser.parse_args()
-  schemaFile = args.input_schema
-  outDir = args.out_dir
-  Process(schemaFile, outDir)
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/stonegentool_test.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,438 +0,0 @@
-#
-#        1         2         3         4         5         6         7         8
-# 345678901234567890123456789012345678901234567890123456789012345678901234567890
-#
-
-from stonegentool import \
-EatToken,SplitListOfTypes,ParseTemplateType,ProcessSchema, \
-CheckSchemaSchema,LoadSchema,trim,ComputeRequiredDeclarationOrder, \
-GetTemplatingDictFromSchemaFilename,MakeTemplate,MakeTemplateFromFile,LoadSchemaFromString,GetTemplatingDictFromSchema
-import unittest
-import os
-import re
-import pprint
-from jinja2 import Template
-
-def RemoveDateTimeLine(s : str):
-  # regex are non-multiline by default, and $ does NOT match the end of the line
-  s2 = re.sub(r"^// autogenerated by stonegentool on .*\n","",s)
-  return s2
-
-class TestStonegentool(unittest.TestCase):
-  def test_EatToken_empty(self):
-    c = r""
-    a,b = EatToken(c)
-    self.assertEqual(a,r"")
-    self.assertEqual(b,r"")
-
-  def test_EatToken_simpleNonTemplate(self):
-    c = r"int32"
-    a,b = EatToken(c)
-    self.assertEqual(a,r"int32")
-    self.assertEqual(b,r"")
-
-  def test_EatToken_simpleTemplate(self):
-    c = r"vector<string>"
-    a,b = EatToken(c)
-    self.assertEqual(a,r"vector<string>")
-    self.assertEqual(b,r"")
-
-  def test_EatToken_complexTemplate(self):
-    c = r"vector<map<int64,string>>,vector<map<int32,string>>"
-    a,b = EatToken(c)
-    self.assertEqual(a,r"vector<map<int64,string>>")
-    self.assertEqual(b,r"vector<map<int32,string>>")
-
-  def test_EatToken_complexTemplates(self):
-    c = r"vector<map<vector<string>,map<int32,string>>>,map<int32,string>,map<map<int32,string>,string>"
-    a,b = EatToken(c)
-    self.assertEqual(a,r"vector<map<vector<string>,map<int32,string>>>")
-    self.assertEqual(b,r"map<int32,string>,map<map<int32,string>,string>")
-    a,b = EatToken(b)
-    self.assertEqual(a,r"map<int32,string>")
-    self.assertEqual(b,r"map<map<int32,string>,string>")
-
-  def test_SplitListOfTypes(self):
-    c = r"vector<map<vector<string>,map<int32,string>>>,map<int32,string>,map<map<int32,string>,string>"
-    lot = SplitListOfTypes(c)
-    self.assertEqual(3,len(lot))
-    self.assertEqual("vector<map<vector<string>,map<int32,string>>>",lot[0])
-    self.assertEqual("map<int32,string>",lot[1])
-    self.assertEqual("map<map<int32,string>,string>",lot[2])
-
-  def test_SplitListOfTypes_bogus(self):
-    c = r"vector<map<vector<string>,map<int32,string>>,map<int32,string>,map<map<int32,string>,string"
-    self.assertRaises(Exception,SplitListOfTypes,c) # the argument c must be passed to assertRaises, not as a normal call of SplitListOfTypes
-    
-  def test_ParseTemplateType_true(self):
-    c = "map<vector<map<int,vector<string>>>,map<vector<int>,vector<string>>>"
-    (ok,a,b) = ParseTemplateType(c)
-    self.assertEqual(ok,True)
-    self.assertEqual(a,"map")
-    self.assertEqual(b,["vector<map<int,vector<string>>>","map<vector<int>,vector<string>>"])
-
-    (ok2,a2,b2) = ParseTemplateType(b[0])
-    self.assertEqual(ok2,True)
-    self.assertEqual(a2,"vector")
-    self.assertEqual(b2,["map<int,vector<string>>"])
-
-    (ok3,a3,b3) = ParseTemplateType(b[1])
-    self.assertEqual(ok3,True)
-    self.assertEqual(a3,"map")
-    self.assertEqual(b3,["vector<int>","vector<string>"])
-
-    (ok4,a4,b4) = ParseTemplateType(b2[0])
-    self.assertEqual(ok4,True)
-    self.assertEqual(a4,"map")
-    self.assertEqual(b4,["int","vector<string>"])
-    
-  def test_ParseSchema(self):
-    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
-    obj = LoadSchema(fn)
-    # we're happy if it does not crash :)
-    CheckSchemaSchema(obj)
-
-  def test_ComputeRequiredDeclarationOrder(self):
-    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
-    obj = LoadSchema(fn)
-    genOrder: str = ComputeRequiredDeclarationOrder(obj)
-    self.assertEqual(5,len(genOrder))
-    self.assertEqual("A",genOrder[0])
-    self.assertEqual("B",genOrder[1])
-    self.assertEqual("C",genOrder[2])
-    self.assertEqual("Message1",genOrder[3])
-    self.assertEqual("Message2",genOrder[4])
-
-  # def test_GeneratePreambleEnumerationAndStructs(self):
-  #   fn = os.path.join(os.path.dirname(__file__), 'test', 'test1.jsonc')
-  #   obj = LoadSchema(fn)
-  #   (_,genc,_) = ProcessSchema(obj)
-
-  def test_genEnums(self):
-    self.maxDiff = None
-    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
-    obj = LoadSchema(fn)
-    genOrder: str = ComputeRequiredDeclarationOrder(obj)
-    processedSchema = ProcessSchema(obj, genOrder)
-    self.assertTrue('rootName' in processedSchema)
-
-    structs = {}
-    for v in processedSchema['structs']:
-      structs[v['name']] = v
-    enums = {}
-    for v in processedSchema['enums']:
-      enums[v['name']] = v
-
-    self.assertTrue('C' in structs)
-    self.assertTrue('someBs' in structs['C']['fields'])
-    self.assertTrue('CrispType' in enums)
-    self.assertTrue('Message1' in structs)
-    self.assertEqual('int32', structs['Message1']['fields']['memberInt32'].type)
-    self.assertEqual('string', structs['Message1']['fields']['memberString'].type)
-    self.assertEqual('EnumMonth0', structs['Message1']['fields']['memberEnumMonth'].type)
-    self.assertEqual('bool', structs['Message1']['fields']['memberBool'].type)
-    self.assertEqual('float32', structs['Message1']['fields']['memberFloat32'].type)
-    self.assertEqual('float64', structs['Message1']['fields']['memberFloat64'].type)
-
-  def test_GenerateTypeScriptEnums(self):
-    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
-    tdico = GetTemplatingDictFromSchemaFilename(fn)
-    template = Template("""  // end of generic methods
-{% for enum in enums%}  export enum {{enum['name']}} {
-{% for key in enum['fields']%}    {{key}},
-{%endfor%}  };
-
-{%endfor%}""")
-    renderedCode = template.render(**tdico)
-    renderedCodeRef = """  // end of generic methods
-  export enum MovieType {
-    RomCom,
-    Horror,
-    ScienceFiction,
-    Vegetables,
-  };
-
-  export enum CrispType {
-    SaltAndPepper,
-    CreamAndChives,
-    Paprika,
-    Barbecue,
-  };
-
-  export enum EnumMonth0 {
-    January,
-    February,
-    March,
-  };
-
-"""
-    self.assertEqual(renderedCodeRef,renderedCode)
-
-  def test_GenerateCplusplusEnums(self):
-    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
-    tdico = GetTemplatingDictFromSchemaFilename(fn)
-    template = Template("""  // end of generic methods
-{% for enum in enums%}  enum {{enum['name']}} {
-{% for key in enum['fields']%}    {{key}},
-{%endfor%}  };
-
-{%endfor%}""")
-    renderedCode = template.render(**tdico)
-    renderedCodeRef = """  // end of generic methods
-  enum MovieType {
-    RomCom,
-    Horror,
-    ScienceFiction,
-    Vegetables,
-  };
-
-  enum CrispType {
-    SaltAndPepper,
-    CreamAndChives,
-    Paprika,
-    Barbecue,
-  };
-
-  enum EnumMonth0 {
-    January,
-    February,
-    March,
-  };
-
-"""
-    self.assertEqual(renderedCodeRef,renderedCode)
-
-  def test_generateTsStructType(self):
-    fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
-    tdico = GetTemplatingDictFromSchemaFilename(fn)
-
-#     template = MakeTemplate("""  // end of generic methods
-# {% for struct in struct%}  export class {{struct['name']}} {
-#   {% for key in struct['fields']%}    {{key}}:{{struct['fields'][key]}},
-#   {% endfor %}  
-#     constructor() {
-#   {% for key in struct['fields']%}
-#     {% if NeedsConstruction(struct['fields']['key'])}
-#       {{key}} = new {{CanonToTs(struct['fields']['key'])}};
-#     {% end if %}
-#   {% endfor %}
-#     }
-# {% endfor %}
-#     public StoneSerialize(): string {
-#       let container: object = {};
-#       container['type'] = '{{rootName}}.{{struct['name']}}';
-#       container['value'] = this;
-#       return JSON.stringify(container);
-#     }  };""")
-    template = MakeTemplate("""  // end of generic methods
-{% for struct in structs%}  export class {{struct['name']}} {
-{% for key in struct['fields']%}    {{key}}:{{CanonToTs(struct['fields'][key]['type'])}};
-{% endfor %}
-    constructor() {
-{% for key in struct['fields']%}      this.{{key}} = new {{CanonToTs(struct['fields'][key]['type'])}}();
-{% endfor %}    }
-
-    public StoneSerialize(): string {
-      let container: object = {};
-      container['type'] = '{{rootName}}.{{struct['name']}}';
-      container['value'] = this;
-      return JSON.stringify(container);
-    }
-  };
-
-{% endfor %}""")
-    renderedCode = template.render(**tdico)
-    renderedCodeRef = """  // end of generic methods
-  export class A {
-    someStrings:Array<string>;
-    someInts2:Array<number>;
-    movies:Array<MovieType>;
-
-    constructor() {
-      this.someStrings = new Array<string>();
-      this.someInts2 = new Array<number>();
-      this.movies = new Array<MovieType>();
-    }
-
-    public StoneSerialize(): string {
-      let container: object = {};
-      container['type'] = 'TestStoneCodeGen.A';
-      container['value'] = this;
-      return JSON.stringify(container);
-    }
-  };
-
-  export class B {
-    someAs:Array<A>;
-    someInts:Array<number>;
-
-    constructor() {
-      this.someAs = new Array<A>();
-      this.someInts = new Array<number>();
-    }
-
-    public StoneSerialize(): string {
-      let container: object = {};
-      container['type'] = 'TestStoneCodeGen.B';
-      container['value'] = this;
-      return JSON.stringify(container);
-    }
-  };
-
-  export class C {
-    someBs:Array<B>;
-    ddd:Array<string>;
-
-    constructor() {
-      this.someBs = new Array<B>();
-      this.ddd = new Array<string>();
-    }
-
-    public StoneSerialize(): string {
-      let container: object = {};
-      container['type'] = 'TestStoneCodeGen.C';
-      container['value'] = this;
-      return JSON.stringify(container);
-    }
-  };
-
-  export class Message1 {
-    memberInt32:number;
-    memberString:string;
-    memberEnumMonth:EnumMonth0;
-    memberBool:boolean;
-    memberFloat32:number;
-    memberFloat64:number;
-
-    constructor() {
-      this.memberInt32 = new number();
-      this.memberString = new string();
-      this.memberEnumMonth = new EnumMonth0();
-      this.memberBool = new boolean();
-      this.memberFloat32 = new number();
-      this.memberFloat64 = new number();
-    }
-
-    public StoneSerialize(): string {
-      let container: object = {};
-      container['type'] = 'TestStoneCodeGen.Message1';
-      container['value'] = this;
-      return JSON.stringify(container);
-    }
-  };
-
-  export class Message2 {
-    memberString:string;
-    memberStringWithDefault:string;
-    memberVectorOfMessage1:Array<Message1>;
-    memberVectorOfString:Array<string>;
-    memberMapStringString:Map<string, string>;
-    memberMapStringStruct:Map<string, Message1>;
-    memberMapEnumFloat:Map<CrispType, number>;
-    memberEnumMovieType:MovieType;
-    memberJson:Object;
-
-    constructor() {
-      this.memberString = new string();
-      this.memberStringWithDefault = new string();
-      this.memberVectorOfMessage1 = new Array<Message1>();
-      this.memberVectorOfString = new Array<string>();
-      this.memberMapStringString = new Map<string, string>();
-      this.memberMapStringStruct = new Map<string, Message1>();
-      this.memberMapEnumFloat = new Map<CrispType, number>();
-      this.memberEnumMovieType = new MovieType();
-      this.memberJson = new Object();
-    }
-
-    public StoneSerialize(): string {
-      let container: object = {};
-      container['type'] = 'TestStoneCodeGen.Message2';
-      container['value'] = this;
-      return JSON.stringify(container);
-    }
-  };
-
-"""
-    # print(renderedCode)
-    self.maxDiff = None
-    self.assertEqual(renderedCodeRef, renderedCode)
-
-  def test_generateWholeTsFile(self):
-    schemaFile = \
-      os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml')
-    tdico = GetTemplatingDictFromSchemaFilename(schemaFile)
-    tsTemplateFile = \
-      os.path.join(os.path.dirname(__file__), 'template.in.ts.j2')
-    template = MakeTemplateFromFile(tsTemplateFile)
-    renderedCode = template.render(**tdico)
-    print(renderedCode)
-
-  def test_GenerateTypeScriptHandlerInterface(self):
-    pass
-
-  def test_GenerateCppHandlerInterface(self):
-    pass
-
-  def test_GenerateTypeScriptDispatcher(self):
-    pass
-
-  def test_GenerateCppDispatcher(self):
-    pass
-
-  def test_StringDefaultValueInTs(self):
-    schema = LoadSchemaFromString("""
-                                  rootName: MyTest
-                                  struct Toto:
-                                    withoutDefault: string
-                                    withDefault: string = \"tutu\"
-                                  """)
-    tdico = GetTemplatingDictFromSchema(schema)
-
-    tsTemplateFile = os.path.join(os.path.dirname(__file__), 'template.in.ts.j2')
-    template = MakeTemplateFromFile(tsTemplateFile)
-    renderedCode = template.render(**tdico)
-    self.assertIn("withDefault = \"tutu\"", renderedCode)
-    # print(renderedCode)
-
-    cppTemplateFile = os.path.join(os.path.dirname(__file__), 'template.in.h.j2')
-    template = MakeTemplateFromFile(cppTemplateFile)
-    renderedCode = template.render(**tdico)
-    print(renderedCode)
-    self.assertIn("withDefault = \"tutu\"", renderedCode)
-
-
-  def test_EnumDefaultValue(self):
-    schema = LoadSchemaFromString("""
-                                  rootName: MyTest
-                                  enum MyEnum:
-                                    - Toto
-                                    - Tutu
-                                  struct Toto:
-                                    withoutDefault: MyEnum
-                                    withDefault: MyEnum = Toto
-                                  """)
-    tdico = GetTemplatingDictFromSchema(schema)
-
-    tsTemplateFile = os.path.join(os.path.dirname(__file__), 'template.in.ts.j2')
-    template = MakeTemplateFromFile(tsTemplateFile)
-    renderedCode = template.render(**tdico)
-    # print(renderedCode)
-    self.assertIn("withDefault = MyEnum.Toto", renderedCode)
-
-    tsTemplateFile = os.path.join(os.path.dirname(__file__), 'template.in.h.j2')
-    template = MakeTemplateFromFile(tsTemplateFile)
-    renderedCode = template.render(**tdico)
-    self.assertIn("withDefault = MyTest::MyEnum_Toto", renderedCode)
-    # print(renderedCode)
-
-
-# def test(self):
-#   s = 'hello world'
-#   self.assertEqual(s.split(), ['hello', 'world'])
-#   # check that s.split fails when the separator is not a string
-#   with self.assertRaises(TypeError):
-#   s.split(2)
-
-if __name__ == '__main__':
-  unittest.main()
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/template.in.h.j2	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,551 +0,0 @@
-/*
-         1         2         3         4         5         6         7
-12345678901234567890123456789012345678901234567890123456789012345678901234567890
-
-Generated on {{currentDatetime}} by stonegentool
-
-*/
-#pragma once
-
-#include <exception>
-#include <iostream>
-#include <string>
-#include <sstream>
-#include <assert.h>
-#include <memory>
-#include <set>
-#include <json/json.h>
-
-//#define STONEGEN_NO_CPP11 1
-
-#ifdef STONEGEN_NO_CPP11
-#define StoneSmartPtr std::unique_ptr
-#else 
-#define StoneSmartPtr std::unique_ptr
-#endif 
-
-namespace {{rootName}}
-{
-  /** Throws in case of problem */
-  inline void _StoneDeserializeValue(int32_t& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull())
-    {
-      destValue = jsonValue.asInt();
-    }
-  }
-
-  inline Json::Value _StoneSerializeValue(int32_t value)
-  {
-    Json::Value result(value);
-    return result;
-  }
-
-  inline void _StoneDeserializeValue(int64_t& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull())
-    {
-      destValue = jsonValue.asInt64();
-    }
-  }
-
-  inline Json::Value _StoneSerializeValue(int64_t value)
-  {
-    Json::Value result(static_cast<Json::Value::Int64>(value));
-    return result;
-  }
-
-  inline void _StoneDeserializeValue(uint32_t& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull())
-    {
-      destValue = jsonValue.asUInt();
-    }
-  }
-
-  inline Json::Value _StoneSerializeValue(uint32_t value)
-  {
-    Json::Value result(value);
-    return result;
-  }
-
-  inline void _StoneDeserializeValue(uint64_t& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull())
-    {
-      destValue = jsonValue.asUInt64();
-    }
-  }
-
-  inline Json::Value _StoneSerializeValue(uint64_t value)
-  {
-    Json::Value result(static_cast<Json::Value::UInt64>(value));
-    return result;
-  }
-
-  inline void _StoneDeserializeValue(Json::Value& destValue, const Json::Value& jsonValue)
-  {
-    destValue = jsonValue;
-  }
-
-  inline Json::Value _StoneSerializeValue(Json::Value value)
-  {
-    return value;
-  }
-
-  /** Throws in case of problem */
-  inline void _StoneDeserializeValue(double& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull())
-    {
-      destValue = jsonValue.asDouble();
-    }
-  }
-
-  inline Json::Value _StoneSerializeValue(double value)
-  {
-    Json::Value result(value);
-    return result;
-  }
-
-  /** Throws in case of problem */
-  inline void _StoneDeserializeValue(float& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull())
-    {
-      destValue = jsonValue.asFloat();
-    }
-  }
-
-  inline Json::Value _StoneSerializeValue(float value)
-  {
-    Json::Value result(value);
-    return result;
-  }
-
-  /** Throws in case of problem */
-  inline void _StoneDeserializeValue(bool& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull())
-    {
-      destValue = jsonValue.asBool();
-    }
-  }
-
-  inline Json::Value _StoneSerializeValue(bool value)
-  {
-    Json::Value result(value);
-    return result;
-  }
-
-  /** Throws in case of problem */
-  inline void _StoneDeserializeValue(
-       std::string& destValue
-     , const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull())
-    {
-      destValue = jsonValue.asString();
-    }
-  }
-
-  inline Json::Value _StoneSerializeValue(const std::string& value)
-  {
-    // the following is better than 
-    Json::Value result(value.data(),value.data()+value.size());
-    return result;
-  }
-
-  inline std::string MakeIndent(size_t indent)
-  {
-    char* txt = reinterpret_cast<char*>(malloc(indent+1)); // NO EXCEPTION BELOW!!!!!!!!!!!!
-    for(size_t i = 0; i < indent; ++i)
-      txt[i] = ' ';
-    txt[indent] = 0;
-    std::string retVal(txt);
-    free(txt); // NO EXCEPTION ABOVE !!!!!!!!!!
-    return retVal;
-  }
-
-  // generic dumper
-  template<typename T>
-  std::ostream& StoneDumpValue(std::ostream& out, const T& value, size_t indent)
-  {
-    out << MakeIndent(indent) << value;
-    return out;
-  }
-
-  // string dumper
-  inline std::ostream& StoneDumpValue(std::ostream& out, const std::string& value, size_t indent)
-  {
-    out << MakeIndent(indent) << "\"" << value  << "\"";
-    return out;
-  }
-
-  inline std::string ToString(const std::string& str)
-  {
-    return str;
-  }
-
-  inline void FromString(std::string& value, std::string strValue)
-  {
-    value = strValue;
-  }
-
-
-  /** Throws in case of problem */
-  template<typename TK, typename TV>
-  void _StoneDeserializeValue(
-    std::map<TK, TV>& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull())
-    {
-      destValue.clear();
-      for (
-        Json::Value::const_iterator itr = jsonValue.begin();
-        itr != jsonValue.end();
-        itr++)
-      {
-        std::string strKey;
-        _StoneDeserializeValue(strKey, itr.key());
-        TK key;
-        FromString(key, strKey);  // if you have a compile error here, it means that your type is not suitable to be the key of a map (or you should overwrite the FromString/ToString in template.in.h.j2)
-
-        TV innerDestValue;
-        _StoneDeserializeValue(innerDestValue, *itr);
-
-        destValue[key] = innerDestValue;
-      }
-    }
-  }
-
-  template<typename TK, typename TV>
-  Json::Value _StoneSerializeValue(const std::map<TK, TV>& value)
-  {
-    Json::Value result(Json::objectValue);
-
-    for (typename std::map<TK, TV>::const_iterator it = value.cbegin();
-      it != value.cend(); ++it)
-    {
-      // it->first it->second
-      result[ToString(it->first)] = _StoneSerializeValue(it->second);
-    }
-    return result;
-  }
-
-  template<typename TK, typename TV>
-  std::ostream& StoneDumpValue(std::ostream& out, const std::map<TK, TV>& value, size_t indent)
-  {
-    out << MakeIndent(indent) << "{\n";
-    for (typename std::map<TK, TV>::const_iterator it = value.cbegin();
-      it != value.cend(); ++it)
-    {
-      out << MakeIndent(indent+2) << "\"" << it->first << "\" : ";
-      StoneDumpValue(out, it->second, indent+2);
-      out << ", \n";
-    }
-    out << MakeIndent(indent) << "}\n";
-    return out;
-  }
-
-  /** Throws in case of problem */
-  template<typename T>
-  void _StoneDeserializeValue(
-    std::vector<T>& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull() && jsonValue.isArray())
-    {
-      destValue.clear();
-      destValue.reserve(jsonValue.size());
-      for (Json::Value::ArrayIndex i = 0; i != jsonValue.size(); i++)
-      {
-        T innerDestValue;
-        _StoneDeserializeValue(innerDestValue, jsonValue[i]);
-        destValue.push_back(innerDestValue);
-      }
-    }
-  }
-
-  template<typename T>
-  Json::Value _StoneSerializeValue(const std::vector<T>& value)
-  {
-    Json::Value result(Json::arrayValue);
-    for (size_t i = 0; i < value.size(); ++i)
-    {
-      result.append(_StoneSerializeValue(value[i]));
-    }
-    return result;
-  }
-
-  template<typename T>
-  std::ostream& StoneDumpValue(std::ostream& out, const std::vector<T>& value, size_t indent)
-  {
-    out << MakeIndent(indent) << "[\n";
-    for (size_t i = 0; i < value.size(); ++i)
-    {
-      StoneDumpValue(out, value[i], indent+2);
-      out << ", \n";
-    }
-    out << MakeIndent(indent) << "]\n";
-    return out;
-  }
-
-  /** Throws in case of problem */
-  template<typename T>
-  void _StoneDeserializeValue(
-    std::set<T>& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull() && jsonValue.isArray())
-    {
-      destValue.clear();
-      for (Json::Value::ArrayIndex i = 0; i != jsonValue.size(); i++)
-      {
-        T innerDestValue;
-        _StoneDeserializeValue(innerDestValue, jsonValue[i]);
-        destValue.insert(innerDestValue);
-      }
-    }
-  }
-
-  template<typename T>
-  Json::Value _StoneSerializeValue(const std::set<T>& value)
-  {
-    Json::Value result(Json::arrayValue);
-    for (typename std::set<T>::const_iterator it = value.begin(); it != value.end(); ++it)
-    {
-      result.append(_StoneSerializeValue(*it));
-    }
-    return result;
-  }
-
-  template<typename T>
-  std::ostream& StoneDumpValue(std::ostream& out, const std::set<T>& value, size_t indent)
-  {
-    out << MakeIndent(indent) << "[\n";
-    for (typename std::set<T>::const_iterator it = value.begin(); it != value.end(); ++it)
-    {
-      StoneDumpValue(out, *it, indent+2);
-      out << ", \n";
-    }
-    out << MakeIndent(indent) << "]\n";
-    return out;
-  }
-
-  inline void StoneCheckSerializedValueTypeGeneric(const Json::Value& value)
-  {
-    if ((!value.isMember("type")) || (!value["type"].isString()))
-    {
-      std::stringstream ss;
-      ss << "Cannot deserialize value ('type' key invalid)";
-      throw std::runtime_error(ss.str());
-    }
-  }
-
-  inline void StoneCheckSerializedValueType(
-    const Json::Value& value, std::string typeStr)
-  {
-    StoneCheckSerializedValueTypeGeneric(value);
-
-    std::string actTypeStr = value["type"].asString();
-    if (actTypeStr != typeStr)
-    {
-      std::stringstream ss;
-      ss << "Cannot deserialize type" << actTypeStr
-        << "into " << typeStr;
-      throw std::runtime_error(ss.str());
-    }
-  }
-
-  // end of generic methods
-
-// end of generic methods
-{% for enum in enums%}
-  enum {{enum['name']}} {
-{% for key in enum['fields']%}    {{enum['name']}}_{{key}},
-{%endfor%}  };
-
-  inline std::string ToString(const {{enum['name']}}& value)
-  {
-{% for key in enum['fields']%}    if( value == {{enum['name']}}_{{key}})
-    {
-      return std::string("{{key}}");
-    }
-{%endfor%}    std::stringstream ss;
-    ss << "Value \"" << value << "\" cannot be converted to {{enum['name']}}. Possible values are: "
-{% for key in enum['fields']%}        << " {{key}} = " << static_cast<int64_t>({{enum['name']}}_{{key}})  << ", " 
-{% endfor %}        << std::endl;
-    std::string msg = ss.str();
-    throw std::runtime_error(msg);
-  }
-
-  inline void FromString({{enum['name']}}& value, std::string strValue)
-  {
-{% for key in enum['fields']%}    if( strValue == std::string("{{key}}") )
-    {
-      value = {{enum['name']}}_{{key}};
-      return;
-    }
-{%endfor%}
-    std::stringstream ss;
-    ss << "String \"" << strValue << "\" cannot be converted to {{enum['name']}}. Possible values are: {% for key in enum['fields']%}{{key}} {% endfor %}";
-    std::string msg = ss.str();
-    throw std::runtime_error(msg);
-  }
-
-
-  inline void _StoneDeserializeValue(
-    {{enum['name']}}& destValue, const Json::Value& jsonValue)
-  {
-    if (!jsonValue.isNull())
-    {
-      FromString(destValue, jsonValue.asString());
-    }
-  }
-
-  inline Json::Value _StoneSerializeValue(const {{enum['name']}}& value)
-  {
-    std::string strValue = ToString(value);
-    return Json::Value(strValue);
-  }
-
-  inline std::ostream& StoneDumpValue(std::ostream& out, const {{enum['name']}}& value, size_t indent = 0)
-  {
-{% for key in enum['fields']%}    if( value == {{enum['name']}}_{{key}})
-    {
-      out << MakeIndent(indent) << "{{key}}";
-    }
-{%endfor%}    return out;
-  }
-
-{%endfor%}
-{% for struct in structs%}
-#ifdef _MSC_VER
-#pragma region {{struct['name']}}
-#endif //_MSC_VER
-
-  struct {{struct['name']}}
-  {
-{% if struct %}{% if struct['fields'] %}{% for key in struct['fields'] %}    {{CanonToCpp(struct['fields'][key]['type'])}} {{key}};
-{% endfor %}{% endif %}{% endif %}
-    {{struct['name']}}({% if struct %}{% if struct['fields'] %}{% for key in struct['fields'] %}{{CanonToCpp(struct['fields'][key]['type'])}} {{key}} = {% if struct['fields'][key]['defaultValue'] %}{{DefaultValueToCpp(rootName,enums,struct['fields'][key])}} {%else%} {{CanonToCpp(struct['fields'][key]['type'])}}() {%endif%} {{ ", " if not loop.last }}{% endfor %}{% endif %}{% endif %})
-    {
-{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}      this->{{key}} = {{key}};
-{% endfor %}{% endif %}{% endif %}    }
-  };
-
-  inline void _StoneDeserializeValue({{struct['name']}}& destValue, const Json::Value& value)
-  {
-    if (!value.isNull())
-    {
-{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}      _StoneDeserializeValue(destValue.{{key}}, value["{{key}}"]);
-{% endfor %}{% endif %}{% endif %}    }
-  }
-
-  inline Json::Value _StoneSerializeValue(const {{struct['name']}}& value)
-  {
-    Json::Value result(Json::objectValue);
-{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}    result["{{key}}"] = _StoneSerializeValue(value.{{key}});
-{% endfor %}{% endif %}{% endif %}
-    return result;
-  }
-
-  inline std::ostream& StoneDumpValue(std::ostream& out, const {{struct['name']}}& value, size_t indent = 0)
-  {
-    out << MakeIndent(indent) << "{\n";
-{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}    out << MakeIndent(indent+2) << "{{key}}: ";
-    StoneDumpValue(out, value.{{key}},indent+2);
-    out << ", \n";
-{% endfor %}{% endif %}{% endif %}
-    out << MakeIndent(indent) << "}";
-    return out;
-  }
-
-  inline void StoneDeserialize({{struct['name']}}& destValue, const Json::Value& value)
-  {
-    StoneCheckSerializedValueType(value, "{{rootName}}.{{struct['name']}}");
-    _StoneDeserializeValue(destValue, value["value"]);
-  }
-
-  inline Json::Value StoneSerializeToJson(const {{struct['name']}}& value)
-  {
-    Json::Value result(Json::objectValue);
-    result["type"] = "{{rootName}}.{{struct['name']}}";
-    result["value"] = _StoneSerializeValue(value);
-    return result;
-  }
-
-  inline std::string StoneSerialize(const {{struct['name']}}& value)
-  {
-    Json::Value resultJson = StoneSerializeToJson(value);
-    std::string resultStr = resultJson.toStyledString();
-    return resultStr;
-  }
-
-#ifdef _MSC_VER
-#pragma endregion {{struct['name']}}
-#endif //_MSC_VER
-{% endfor %}
-#ifdef _MSC_VER
-#pragma region Dispatching code
-#endif //_MSC_VER
-
-  class IHandler
-  {
-  public:
-{% for struct in structs%}{% if struct['__meta__'].handleInCpp %}    virtual bool Handle(const {{struct['name']}}& value) = 0;
-{% endif %}{% endfor %}  };
-
-  /** Service function for StoneDispatchToHandler */
-  inline bool StoneDispatchJsonToHandler(
-    const Json::Value& jsonValue, IHandler* handler)
-  {
-    StoneCheckSerializedValueTypeGeneric(jsonValue);
-    std::string type = jsonValue["type"].asString();
-    if (type == "")
-    {
-      // this should never ever happen
-      throw std::runtime_error("Caught empty type while dispatching");
-    }
-{% for struct in structs%}{% if struct['__meta__'].handleInCpp %}    else if (type == "{{rootName}}.{{struct['name']}}")
-    {
-      {{struct['name']}} value;
-      _StoneDeserializeValue(value, jsonValue["value"]);
-      return handler->Handle(value);
-    }
-{% endif %}{% endfor %}    else
-    {
-      return false;
-    }
-  }
-
-  /** Takes a serialized type and passes this to the handler */
-  inline bool StoneDispatchToHandler(std::string strValue, IHandler* handler)
-  {
-    Json::Value readValue;
-
-    Json::CharReaderBuilder builder;
-    Json::CharReader* reader = builder.newCharReader();
-
-    StoneSmartPtr<Json::CharReader> ptr(reader);
-
-    std::string errors;
-
-    bool ok = reader->parse(
-      strValue.c_str(),
-      strValue.c_str() + strValue.size(),
-      &readValue,
-      &errors
-    );
-    if (!ok)
-    {
-      std::stringstream ss;
-      ss << "Jsoncpp parsing error: " << errors;
-      throw std::runtime_error(ss.str());
-    }
-    return StoneDispatchJsonToHandler(readValue, handler);
-  }
-
-#ifdef _MSC_VER
-#pragma endregion Dispatching code
-#endif //_MSC_VER
-}
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/template.in.ts.j2	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/*
-         1         2         3         4         5         6         7
-12345678901234567890123456789012345678901234567890123456789012345678901234567890
-
-Generated on {{currentDatetime}} by stonegentool
-
-*/
-
-function StoneCheckSerializedValueType(value: any, typeStr: string)
-{
-  StoneCheckSerializedValueTypeGeneric(value);
-
-  if (value['type'] != typeStr)
-  {
-    throw new Error(
-      `Cannot deserialize type ${value['type']} into ${typeStr}`);
-  }
-}
-
-function isString(val: any) :boolean
-{
-  return ((typeof val === 'string') || (val instanceof String));
-}
-
-function StoneCheckSerializedValueTypeGeneric(value: any)
-{
-  // console.//log("+-------------------------------------------------+");
-  // console.//log("|            StoneCheckSerializedValueTypeGeneric |");
-  // console.//log("+-------------------------------------------------+");
-  // console.//log("value = ");
-  // console.//log(value);
-  if ( (!('type' in value)) || (!isString(value.type)) )
-  {
-    throw new Error(
-      "Cannot deserialize value ('type' key invalid)");
-  }
-}
-
-// end of generic methods
-{% for enum in enums%}
-export enum {{enum['name']}} {
-{% for key in enum['fields']%}  {{key}} = "{{key}}"{% if not loop.last %},{%endif%}
-{%endfor%}};
-
-export function {{enum['name']}}_FromString(strValue:string) : {{enum['name']}}
-{
-{% for key in enum['fields'] %}  if( strValue == "{{key}}" )
-  {
-    return {{enum['name']}}.{{key}};
-  }
-{%endfor%}
-  let msg : string =  `String ${strValue} cannot be converted to {{enum['name']}}. Possible values are: {% for key in enum['fields']%}{{key}}{% if not loop.last %}, {%endif%}{% endfor %}`;
-  throw new Error(msg);
-}
-
-export function {{enum['name']}}_ToString(value:{{enum['name']}}) : string
-{
-{% for key in enum['fields'] %}  if( value == {{enum['name']}}.{{key}} )
-  {
-    return "{{key}}";
-  }
-{%endfor%}
-  let msg : string = `Value ${value} cannot be converted to {{enum['name']}}. Possible values are: `;
-{% for key in enum['fields']%}  {
-    let _{{key}}_enumValue : string = {{enum['name']}}.{{key}}; // enums are strings in stonecodegen, so this will work.
-    let msg_{{key}} : string = `{{key}} (${_{{key}}_enumValue}){% if not loop.last %}, {%endif%}`;
-    msg = msg + msg_{{key}};
-  }
-{%endfor%}  throw new Error(msg);
-}
-{%endfor%}
-
-
-{% for struct in structs%}export class {{struct['name']}} {
-{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}  {{key}}:{{CanonToTs(struct['fields'][key]['type'])}};
-{% endfor %}{% endif %}{% endif %}
-  constructor() {
-{% if struct %}{% if struct['fields'] %}{% for key in struct['fields']%}{% if NeedsTsConstruction(enums,CanonToTs(struct['fields'][key]['type'])) %}    this.{{key}} = new {{CanonToTs(struct['fields'][key]['type'])}}();
-{% endif %}
-{% if struct['fields'][key]['defaultValue'] %}    this.{{key}} = {{DefaultValueToTs(enums,struct['fields'][key])}};
-{% endif %}{% endfor %}{% endif %}{% endif %}  }
-
-  public StoneSerialize(): string {
-    let container: object = {};
-    container['type'] = '{{rootName}}.{{struct['name']}}';
-    container['value'] = this;
-    return JSON.stringify(container);
-  }
-
-  public static StoneDeserialize(valueStr: string) : {{struct['name']}}
-  {
-    let value: any = JSON.parse(valueStr);
-    StoneCheckSerializedValueType(value, '{{rootName}}.{{struct['name']}}');
-    let result: {{struct['name']}} = value['value'] as {{struct['name']}};
-    return result;
-  }
-}
-{% endfor %}
-export interface IHandler {
-{% for struct in structs%}{% if struct['__meta__'].handleInTypescript %}  Handle{{struct['name']}}(value:  {{struct['name']}}): boolean;
-{% endif %}{% endfor %}};
-
-/** Service function for StoneDispatchToHandler */
-export function StoneDispatchJsonToHandler(
-  jsonValue: any, handler: IHandler): boolean
-{
-  StoneCheckSerializedValueTypeGeneric(jsonValue);
-  let type: string = jsonValue["type"];
-  if (type == "")
-  {
-    // this should never ever happen
-    throw new Error("Caught empty type while dispatching");
-  }
-{% for struct in structs%}{% if struct['__meta__'].handleInTypescript %}  else if (type == "{{rootName}}.{{struct['name']}}")
-  {
-    let value = jsonValue["value"] as {{struct['name']}};
-    return handler.Handle{{struct['name']}}(value);
-  }
-{% endif %}{% endfor %}  else
-  {
-    return false;
-  }
-}
-
-/** Takes a serialized type and passes this to the handler */
-export function StoneDispatchToHandler(
-  strValue: string, handler: IHandler): boolean
-{
-  // console.//log("+------------------------------------------------+");
-  // console.//log("|            StoneDispatchToHandler              |");
-  // console.//log("+------------------------------------------------+");
-  // console.//log("strValue = ");
-  // console.//log(strValue);
-  let jsonValue: any = JSON.parse(strValue)
-  return StoneDispatchJsonToHandler(jsonValue, handler);
-}
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-project(testCppHandler)
-
-set(testCppHandler_Codegen_Deps
-  ${CMAKE_CURRENT_LIST_DIR}/../test_data/testTestStoneCodeGen.yaml 
-  ${CMAKE_CURRENT_LIST_DIR}/../template.in.h.j2
-) 
-
-add_custom_command(
-    OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/VsolMessages_generated.hpp
-    COMMAND python ${CMAKE_CURRENT_LIST_DIR}/../stonegentool.py -o ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_LIST_DIR}/../test_data/testTestStoneCodeGen.yaml
-    DEPENDS ${testCppHandler_Codegen_Deps}
-)
-
-include(${CMAKE_BINARY_DIR}/conanbuildinfo_multi.cmake)
-conan_basic_setup()
-
-add_executable(testCppHandler main.cpp ${CMAKE_CURRENT_BINARY_DIR}/VsolMessages_generated.hpp ${testCppHandler_Codegen_Deps})
-
-target_include_directories(testCppHandler PUBLIC ${CMAKE_BINARY_DIR})
-
-conan_target_link_libraries(testCppHandler)
-
-set_property(TARGET testCppHandler PROPERTY CXX_STANDARD 17)
-
-install(TARGETS testCppHandler DESTINATION bin)
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/README.md	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-Requirements
-==============
-- Install Python 3.x (tested with 3.7)
-- Install conan with `pip install conan` (tested with 1.12.2)
-- Install CMake (tested with 3.12)
-- Under Windows: Visual Studio 2017
-- Under *nix*: Ninja
-
-How to build under *nix*
-===============================
-- Navigate to `testCppHandler` folder
-- `conan install . -g cmake`
-- `mkdir build`
-- `cd build`
-- `cmake -G "Ninja" ..`
-- `cmake --build . --config Debug` or - `cmake --build . --config Release`
-
-How to build under Windows with Visual Studio
-==============================================
-- Navigate to repo root
-- `mkdir build`
-- `cd build`
-- `conan install .. -g cmake_multi -s build_type=Release`
-- `conan install .. -g cmake_multi -s build_type=Debug`
-- `cmake -G "Visual Studio 15 2017 Win64" ..`  (modify for your current Visual Studio version)
-- `cmake --build . --config Debug` or - `cmake --build . --config Release`
-
-How to execute the test
-=======================
-- `cd test_data && testCppHandler --pattern=*.json`
-
-
-
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/conanfile.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-[requires]
-jsoncpp/1.8.4@theirix/stable
-gtest/1.8.1@bincrafters/stable
-boost/1.69.0@conan/stable
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/main.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include <string>
-#include <fstream>
-#include <filesystem>
-#include <regex>
-using namespace std;
-namespace fs = std::filesystem;
-
-#include <boost/program_options.hpp>
-using namespace boost::program_options;
-
-#include "TestStoneCodeGen_generated.hpp"
-
-/**
-Transforms `str` by replacing occurrences of `oldStr` with `newStr`, using 
-plain text (*not* regular expressions.)
-*/
-static inline void ReplaceInString(
-  string& str,
-  const std::string& oldStr,
-  const std::string& newStr)
-{
-  std::string::size_type pos = 0u;
-  while ((pos = str.find(oldStr, pos)) != std::string::npos) {
-    str.replace(pos, oldStr.length(), newStr);
-    pos += newStr.length();
-  }
-}
-
-string SlurpFile(const string& fileName)
-{
-  ifstream ifs(fileName.c_str(), ios::in | ios::binary | ios::ate);
-
-  ifstream::pos_type fileSize = ifs.tellg();
-  ifs.seekg(0, ios::beg);
-
-  vector<char> bytes(fileSize);
-  ifs.read(bytes.data(), fileSize);
-
-  return string(bytes.data(), fileSize);
-}
-
-class MyHandler : public TestStoneCodeGen::IHandler
-{
-public:
-  virtual bool Handle(const TestStoneCodeGen::A& value) override
-  {
-    TestStoneCodeGen::StoneDumpValue(cout, value);
-    return true;
-  }
-  virtual bool Handle(const TestStoneCodeGen::B& value) override
-  {
-    TestStoneCodeGen::StoneDumpValue(cout, value);
-    return true;
-  }
-  virtual bool Handle(const TestStoneCodeGen::C& value) override
-  {
-    TestStoneCodeGen::StoneDumpValue(cout, value);
-    return true;
-  }
-  virtual bool Handle(const TestStoneCodeGen::Message1& value) override
-  {
-    TestStoneCodeGen::StoneDumpValue(cout, value);
-    return true;
-  }
-  virtual bool Handle(const TestStoneCodeGen::Message2& value) override
-  {
-    TestStoneCodeGen::StoneDumpValue(cout, value);
-    return true;
-  }
-};
-
-template<typename T>
-void ProcessPath(T filePath)
-{
-  cout << "+--------------------------------------------+\n";
-  cout << "| Processing: " << filePath.path().string() << "\n";
-  cout << "+--------------------------------------------+\n";
-  MyHandler handler;
-  auto contents = SlurpFile(filePath.path().string());
-  TestStoneCodeGen::StoneDispatchToHandler(contents, &handler);
-}
-
-int main(int argc, char** argv)
-{
-  try
-  {
-
-    options_description desc("Allowed options");
-    desc.add_options()
-      // First parameter describes option name/short name
-      // The second is parameter to option
-      // The third is description
-      ("help,h", "print usage message")
-      ("pattern,p", value<string>(), "pattern for input")
-      ;
-
-    variables_map vm;
-    store(parse_command_line(argc, argv, desc), vm);
-
-    if (vm.count("help"))
-    {
-      cout << desc << "\n";
-      return 0;
-    }
-
-    notify(vm);
-
-    string pattern = vm["pattern"].as<string>();
-
-    // tranform globbing pattern into regex
-    // we should deal with -, ., *...
-    string regexPatternStr = pattern;
-    cout << "Pattern is: " << regexPatternStr << endl;
-    ReplaceInString(regexPatternStr, "\\", "\\\\");
-    ReplaceInString(regexPatternStr, "-", "\\-");
-    ReplaceInString(regexPatternStr, ".", "\\.");
-    ReplaceInString(regexPatternStr, "*", ".*");
-    ReplaceInString(regexPatternStr, "?", ".");
-    cout << "Corresponding regex is: " << regexPatternStr << endl;
-
-    regex regexPattern(regexPatternStr);
-
-    for (auto& p : fs::directory_iterator("."))
-    {
-      auto fileName = p.path().filename().string();
-      if (regex_match(fileName, regexPattern))
-      {
-        ProcessPath(p);
-      }
-    }
-    return 0;
-
-
-  }
-  catch (exception& e)
-  {
-    cerr << e.what() << "\n";
-  }
-}
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testCppHandler/test_data/test_Message2.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-{
-  "type": "TestStoneCodeGen.Message2",
-  "value": {
-    "memberVectorOfMessage1": [
-      {
-        "memberInt32": 42,
-        "memberString": "Benjamin",
-        "memberEnumMonth": "January",
-        "memberBool": false,
-        "memberFloat32": 0.1,
-        "memberFloat64": -0.2
-      },
-      {
-        "memberInt32": 43,
-        "memberString": "Sandrine",
-        "memberEnumMonth": "March"
-      }
-    ],
-    "memberVectorOfString": [
-      "Mercadet",
-      "Poisson"
-    ],
-    "memberMapStringString": {
-      "44": "key 44",
-      "45": "key 45"
-    },
-    "memberMapStringStruct": {
-      "54": {
-        "memberInt32": 43,
-        "memberString": "Sandrine",
-        "memberEnumMonth": "March"
-      },
-      "55": {
-        "memberInt32": 42,
-        "memberString": "Benjamin",
-        "memberEnumMonth": "January",
-        "memberBool": false
-      }
-    },
-    "memberString": "Prout zizi",
-    "memberMapEnumFloat" : {
-      "SaltAndPepper" : 0.1,
-      "CreamAndChives" : -0.2
-    },
-    "memberJson" : {"custom-key": "custom-value"}
-  }
-}
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-project(testWasmIntegratedCpp)
-
-set(WASM_FLAGS "-s WASM=1 -O0 -g0")
-set(WASM_MODULE_NAME "TestWasmIntegratedModule" CACHE STRING "Name of the WebAssembly module")
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
-#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmWebService.js --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/WasmDelayedCallExecutor.js --js-library ${STONE_SOURCES_DIR}/Platforms/Wasm/default-library.js  -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --js-library ${CMAKE_CURRENT_LIST_DIR}/DefaultLibrary.js -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DISABLE_EXCEPTION_CATCHING=0 -s EXPORT_NAME='\"${WASM_MODULE_NAME}\"' -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=536870912 -s TOTAL_STACK=128000000")  # 512MB + resize
-
-add_definitions(-DORTHANC_ENABLE_WASM=1)
-
-set(testWasmIntegratedCpp_Codegen_Deps
-  ${CMAKE_CURRENT_LIST_DIR}/testWasmIntegratedCpp_api.yaml 
-  ${CMAKE_CURRENT_LIST_DIR}/../template.in.h.j2
-  ${CMAKE_CURRENT_LIST_DIR}/../template.in.ts.j2
-) 
-
-set(jsoncppRootDir ${CMAKE_CURRENT_LIST_DIR}/jsoncpp-1.8.4)
-
-add_custom_command(
-    OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/TestStoneCodeGen_generated.hpp ${CMAKE_CURRENT_BINARY_DIR}/TestStoneCodeGen_generated.ts
-    COMMAND python3 ${CMAKE_CURRENT_LIST_DIR}/../stonegentool.py -o ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_LIST_DIR}/../test_data/testTestStoneCodeGen.yaml
-    DEPENDS ${testCppHandler_Codegen_Deps} ${CMAKE_CURRENT_LIST_DIR}/../test_data/testTestStoneCodeGen.yaml 
-)
-
-add_executable(testWasmIntegratedCpp
-  main.cpp
-  ${CMAKE_CURRENT_BINARY_DIR}/TestStoneCodeGen_generated.hpp
-  ${jsoncppRootDir}/jsoncpp.cpp
-  ${testCppHandler_Codegen_Deps})
-
-target_include_directories(testWasmIntegratedCpp  PUBLIC ${CMAKE_BINARY_DIR})
-target_include_directories(testWasmIntegratedCpp  PUBLIC ${jsoncppRootDir})
-
-set_property(TARGET testWasmIntegratedCpp PROPERTY CXX_STANDARD 11)
-
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/DefaultLibrary.js	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-// this file contains the JS method you want to expose to C++ code
-
-mergeInto(LibraryManager.library, {
-  // each time the Application updates its status, it may signal it through this method. i.e, to change the status of a button in the web interface
-  // It needs to be put in this file so that the emscripten SDK linker knows where to find it.
-  SendFreeTextFromCppJS: function(statusUpdateMessage) {
-    var statusUpdateMessage_ = UTF8ToString(statusUpdateMessage);
-    window.SendFreeTextFromCpp(statusUpdateMessage_);
-  },
-  SendMessageFromCppJS: function(statusUpdateMessage) {
-    var statusUpdateMessage_ = UTF8ToString(statusUpdateMessage);
-    window.SendMessageFromCpp(statusUpdateMessage_);
-  }
-});
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/build-web.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-#!/bin/bash
-set -e
-
-mkdir -p build-final
-
-# compile TS to JS
-tsc --module commonjs --sourceMap -t ES2015 --outDir "build-tsc/" build-wasm/TestStoneCodeGen_generated.ts testWasmIntegrated.ts 
-
-# bundle JS files to final build dir 
-browserify "build-tsc/build-wasm/testWasmIntegratedCpp_generated.js" "build-tsc/testWasmIntegrated.js" -o "build-final/testWasmIntegratedApp.js"
-
-# copy WASM loader JS file to final build dir 
-cp build-wasm/testWasmIntegratedCpp.js build-final/
-
-# copy HTML start page to output dir
-cp testWasmIntegrated.html build-final/
-
-
-# copy styles to output dir
-cp styles.css build-final/
-
-# copy WASM binary to output dir
-cp build-wasm/testWasmIntegratedCpp.wasm  build-final/
-
-cp ../test_data/testTestStoneCodeGen.yaml build-final/
-cp ../testCppHandler/test_data/test_Message2.json build-final/cppHandler_test_Message2.json
-
-echo "...Serving files at http://127.0.0.1:8080/build-final/testWasmIntegrated.html"
-
-sudo python3 serve.py
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/build.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-set -e
-
-mkdir -p build-wasm
-cd build-wasm
-
-# shellcheck source="$HOME/apps/emsdk/emsdk_env.sh"
-source "$HOME/apps/emsdk/emsdk_env.sh"
-cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_WASM=ON ..
-
-ninja
-
-cd ..
-
-./build-web.sh
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/json/json-forwards.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,344 +0,0 @@
-/// Json-cpp amalgamated forward header (http://jsoncpp.sourceforge.net/).
-/// It is intended to be used with #include "json/json-forwards.h"
-/// This header provides forward declaration for all JsonCpp types.
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: LICENSE
-// //////////////////////////////////////////////////////////////////////
-
-/*
-The JsonCpp library's source code, including accompanying documentation, 
-tests and demonstration applications, are licensed under the following
-conditions...
-
-Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all 
-jurisdictions which recognize such a disclaimer. In such jurisdictions, 
-this software is released into the Public Domain.
-
-In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
-2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
-The JsonCpp Authors, and is released under the terms of the MIT License (see below).
-
-In jurisdictions which recognize Public Domain property, the user of this 
-software may choose to accept it either as 1) Public Domain, 2) under the 
-conditions of the MIT License (see below), or 3) under the terms of dual 
-Public Domain/MIT License conditions described here, as they choose.
-
-The MIT License is about as close to Public Domain as a license can get, and is
-described in clear, concise terms at:
-
-   http://en.wikipedia.org/wiki/MIT_License
-   
-The full text of the MIT License follows:
-
-========================================================================
-Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use, copy,
-modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-========================================================================
-(END LICENSE TEXT)
-
-The MIT license is compatible with both the GPL and commercial
-software, affording one all of the rights of Public Domain with the
-minor nuisance of being required to keep the above copyright notice
-and license text in the source code. Note also that by accepting the
-Public Domain "license" you can re-license your copy using whatever
-license you like.
-
-*/
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: LICENSE
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-#ifndef JSON_FORWARD_AMALGAMATED_H_INCLUDED
-# define JSON_FORWARD_AMALGAMATED_H_INCLUDED
-/// If defined, indicates that the source file is amalgamated
-/// to prevent private header inclusion.
-#define JSON_IS_AMALGAMATION
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/config.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef JSON_CONFIG_H_INCLUDED
-#define JSON_CONFIG_H_INCLUDED
-#include <cstddef>
-#include <cstdint>
-#include <istream>
-#include <memory>
-#include <ostream>
-#include <sstream>
-#include <string>
-#include <type_traits>
-
-/// If defined, indicates that json library is embedded in CppTL library.
-//# define JSON_IN_CPPTL 1
-
-/// If defined, indicates that json may leverage CppTL library
-//#  define JSON_USE_CPPTL 1
-/// If defined, indicates that cpptl vector based map should be used instead of
-/// std::map
-/// as Value container.
-//#  define JSON_USE_CPPTL_SMALLMAP 1
-
-// If non-zero, the library uses exceptions to report bad input instead of C
-// assertion macros. The default is to use exceptions.
-#ifndef JSON_USE_EXCEPTION
-#define JSON_USE_EXCEPTION 1
-#endif
-
-/// If defined, indicates that the source file is amalgamated
-/// to prevent private header inclusion.
-/// Remarks: it is automatically defined in the generated amalgamated header.
-// #define JSON_IS_AMALGAMATION
-
-#ifdef JSON_IN_CPPTL
-#include <cpptl/config.h>
-#ifndef JSON_USE_CPPTL
-#define JSON_USE_CPPTL 1
-#endif
-#endif
-
-#ifdef JSON_IN_CPPTL
-#define JSON_API CPPTL_API
-#elif defined(JSON_DLL_BUILD)
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#define JSON_API __declspec(dllexport)
-#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
-#endif // if defined(_MSC_VER)
-#elif defined(JSON_DLL)
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#define JSON_API __declspec(dllimport)
-#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
-#endif // if defined(_MSC_VER)
-#endif // ifdef JSON_IN_CPPTL
-#if !defined(JSON_API)
-#define JSON_API
-#endif
-
-#if defined(_MSC_VER) && _MSC_VER < 1800
-#error                                                                         \
-    "ERROR:  Visual Studio 12 (2013) with _MSC_VER=1800 is the oldest supported compiler with sufficient C++11 capabilities"
-#endif
-
-#if defined(_MSC_VER) && _MSC_VER < 1900
-// As recommended at
-// https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010
-extern JSON_API int
-msvc_pre1900_c99_snprintf(char* outBuf, size_t size, const char* format, ...);
-#define jsoncpp_snprintf msvc_pre1900_c99_snprintf
-#else
-#define jsoncpp_snprintf std::snprintf
-#endif
-
-// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
-// integer
-// Storages, and 64 bits integer support is disabled.
-// #define JSON_NO_INT64 1
-
-#if defined(_MSC_VER) // MSVC
-#define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
-#endif // defined(_MSC_VER)
-
-// JSONCPP_OVERRIDE is maintained for backwards compatibility of external tools.
-// C++11 should be used directly in JSONCPP.
-#define JSONCPP_OVERRIDE override
-
-#if __cplusplus >= 201103L
-#define JSONCPP_NOEXCEPT noexcept
-#define JSONCPP_OP_EXPLICIT explicit
-#elif defined(_MSC_VER) && _MSC_VER < 1900
-#define JSONCPP_NOEXCEPT throw()
-#define JSONCPP_OP_EXPLICIT explicit
-#elif defined(_MSC_VER) && _MSC_VER >= 1900
-#define JSONCPP_NOEXCEPT noexcept
-#define JSONCPP_OP_EXPLICIT explicit
-#else
-#define JSONCPP_NOEXCEPT throw()
-#define JSONCPP_OP_EXPLICIT
-#endif
-
-#ifndef JSON_HAS_RVALUE_REFERENCES
-
-#if defined(_MSC_VER)
-#define JSON_HAS_RVALUE_REFERENCES 1
-#endif // MSVC >= 2013
-
-#ifdef __clang__
-#if __has_feature(cxx_rvalue_references)
-#define JSON_HAS_RVALUE_REFERENCES 1
-#endif // has_feature
-
-#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
-#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
-#define JSON_HAS_RVALUE_REFERENCES 1
-#endif // GXX_EXPERIMENTAL
-
-#endif // __clang__ || __GNUC__
-
-#endif // not defined JSON_HAS_RVALUE_REFERENCES
-
-#ifndef JSON_HAS_RVALUE_REFERENCES
-#define JSON_HAS_RVALUE_REFERENCES 0
-#endif
-
-#ifdef __clang__
-#if __has_extension(attribute_deprecated_with_message)
-#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
-#endif
-#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
-#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
-#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
-#elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
-#define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
-#endif // GNUC version
-#endif // __clang__ || __GNUC__
-
-#if !defined(JSONCPP_DEPRECATED)
-#define JSONCPP_DEPRECATED(message)
-#endif // if !defined(JSONCPP_DEPRECATED)
-
-#if __GNUC__ >= 6
-#define JSON_USE_INT64_DOUBLE_CONVERSION 1
-#endif
-
-#if !defined(JSON_IS_AMALGAMATION)
-
-#include "allocator.h"
-#include "version.h"
-
-#endif // if !defined(JSON_IS_AMALGAMATION)
-
-namespace Json {
-typedef int Int;
-typedef unsigned int UInt;
-#if defined(JSON_NO_INT64)
-typedef int LargestInt;
-typedef unsigned int LargestUInt;
-#undef JSON_HAS_INT64
-#else                 // if defined(JSON_NO_INT64)
-// For Microsoft Visual use specific types as long long is not supported
-#if defined(_MSC_VER) // Microsoft Visual Studio
-typedef __int64 Int64;
-typedef unsigned __int64 UInt64;
-#else                 // if defined(_MSC_VER) // Other platforms, use long long
-typedef int64_t Int64;
-typedef uint64_t UInt64;
-#endif                // if defined(_MSC_VER)
-typedef Int64 LargestInt;
-typedef UInt64 LargestUInt;
-#define JSON_HAS_INT64
-#endif // if defined(JSON_NO_INT64)
-
-template <typename T>
-using Allocator = typename std::conditional<JSONCPP_USING_SECURE_MEMORY,
-                                            SecureAllocator<T>,
-                                            std::allocator<T>>::type;
-using String = std::basic_string<char, std::char_traits<char>, Allocator<char>>;
-using IStringStream = std::basic_istringstream<String::value_type,
-                                               String::traits_type,
-                                               String::allocator_type>;
-using OStringStream = std::basic_ostringstream<String::value_type,
-                                               String::traits_type,
-                                               String::allocator_type>;
-using IStream = std::istream;
-using OStream = std::ostream;
-} // namespace Json
-
-// Legacy names (formerly macros).
-using JSONCPP_STRING = Json::String;
-using JSONCPP_ISTRINGSTREAM = Json::IStringStream;
-using JSONCPP_OSTRINGSTREAM = Json::OStringStream;
-using JSONCPP_ISTREAM = Json::IStream;
-using JSONCPP_OSTREAM = Json::OStream;
-
-#endif // JSON_CONFIG_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/config.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/forwards.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef JSON_FORWARDS_H_INCLUDED
-#define JSON_FORWARDS_H_INCLUDED
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include "config.h"
-#endif // if !defined(JSON_IS_AMALGAMATION)
-
-namespace Json {
-
-// writer.h
-class FastWriter;
-class StyledWriter;
-
-// reader.h
-class Reader;
-
-// features.h
-class Features;
-
-// value.h
-typedef unsigned int ArrayIndex;
-class StaticString;
-class Path;
-class PathArgument;
-class Value;
-class ValueIteratorBase;
-class ValueIterator;
-class ValueConstIterator;
-
-} // namespace Json
-
-#endif // JSON_FORWARDS_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/forwards.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-#endif //ifndef JSON_FORWARD_AMALGAMATED_H_INCLUDED
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/json/json.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2366 +0,0 @@
-/// Json-cpp amalgamated header (http://jsoncpp.sourceforge.net/).
-/// It is intended to be used with #include "json/json.h"
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: LICENSE
-// //////////////////////////////////////////////////////////////////////
-
-/*
-The JsonCpp library's source code, including accompanying documentation, 
-tests and demonstration applications, are licensed under the following
-conditions...
-
-Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all 
-jurisdictions which recognize such a disclaimer. In such jurisdictions, 
-this software is released into the Public Domain.
-
-In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
-2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
-The JsonCpp Authors, and is released under the terms of the MIT License (see below).
-
-In jurisdictions which recognize Public Domain property, the user of this 
-software may choose to accept it either as 1) Public Domain, 2) under the 
-conditions of the MIT License (see below), or 3) under the terms of dual 
-Public Domain/MIT License conditions described here, as they choose.
-
-The MIT License is about as close to Public Domain as a license can get, and is
-described in clear, concise terms at:
-
-   http://en.wikipedia.org/wiki/MIT_License
-   
-The full text of the MIT License follows:
-
-========================================================================
-Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use, copy,
-modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-========================================================================
-(END LICENSE TEXT)
-
-The MIT license is compatible with both the GPL and commercial
-software, affording one all of the rights of Public Domain with the
-minor nuisance of being required to keep the above copyright notice
-and license text in the source code. Note also that by accepting the
-Public Domain "license" you can re-license your copy using whatever
-license you like.
-
-*/
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: LICENSE
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-#ifndef JSON_AMALGAMATED_H_INCLUDED
-# define JSON_AMALGAMATED_H_INCLUDED
-/// If defined, indicates that the source file is amalgamated
-/// to prevent private header inclusion.
-#define JSON_IS_AMALGAMATION
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/version.h
-// //////////////////////////////////////////////////////////////////////
-
-// DO NOT EDIT. This file (and "version") is generated by CMake.
-// Run CMake configure step to update it.
-#ifndef JSON_VERSION_H_INCLUDED
-#define JSON_VERSION_H_INCLUDED
-
-#define JSONCPP_VERSION_STRING "1.8.4"
-#define JSONCPP_VERSION_MAJOR 1
-#define JSONCPP_VERSION_MINOR 8
-#define JSONCPP_VERSION_PATCH 4
-#define JSONCPP_VERSION_QUALIFIER
-#define JSONCPP_VERSION_HEXA                                                   \
-  ((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) |             \
-   (JSONCPP_VERSION_PATCH << 8))
-
-#ifdef JSONCPP_USING_SECURE_MEMORY
-#undef JSONCPP_USING_SECURE_MEMORY
-#endif
-#define JSONCPP_USING_SECURE_MEMORY 0
-// If non-zero, the library zeroes any memory that it has allocated before
-// it frees its memory.
-
-#endif // JSON_VERSION_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/version.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/allocator.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef CPPTL_JSON_ALLOCATOR_H_INCLUDED
-#define CPPTL_JSON_ALLOCATOR_H_INCLUDED
-
-#include <cstring>
-#include <memory>
-
-#pragma pack(push, 8)
-
-namespace Json {
-template <typename T> class SecureAllocator {
-public:
-  // Type definitions
-  using value_type = T;
-  using pointer = T*;
-  using const_pointer = const T*;
-  using reference = T&;
-  using const_reference = const T&;
-  using size_type = std::size_t;
-  using difference_type = std::ptrdiff_t;
-
-  /**
-   * Allocate memory for N items using the standard allocator.
-   */
-  pointer allocate(size_type n) {
-    // allocate using "global operator new"
-    return static_cast<pointer>(::operator new(n * sizeof(T)));
-  }
-
-  /**
-   * Release memory which was allocated for N items at pointer P.
-   *
-   * The memory block is filled with zeroes before being released.
-   * The pointer argument is tagged as "volatile" to prevent the
-   * compiler optimizing out this critical step.
-   */
-  void deallocate(volatile pointer p, size_type n) {
-    std::memset(p, 0, n * sizeof(T));
-    // free using "global operator delete"
-    ::operator delete(p);
-  }
-
-  /**
-   * Construct an item in-place at pointer P.
-   */
-  template <typename... Args> void construct(pointer p, Args&&... args) {
-    // construct using "placement new" and "perfect forwarding"
-    ::new (static_cast<void*>(p)) T(std::forward<Args>(args)...);
-  }
-
-  size_type max_size() const { return size_t(-1) / sizeof(T); }
-
-  pointer address(reference x) const { return std::addressof(x); }
-
-  const_pointer address(const_reference x) const { return std::addressof(x); }
-
-  /**
-   * Destroy an item in-place at pointer P.
-   */
-  void destroy(pointer p) {
-    // destroy using "explicit destructor"
-    p->~T();
-  }
-
-  // Boilerplate
-  SecureAllocator() {}
-  template <typename U> SecureAllocator(const SecureAllocator<U>&) {}
-  template <typename U> struct rebind { using other = SecureAllocator<U>; };
-};
-
-template <typename T, typename U>
-bool operator==(const SecureAllocator<T>&, const SecureAllocator<U>&) {
-  return true;
-}
-
-template <typename T, typename U>
-bool operator!=(const SecureAllocator<T>&, const SecureAllocator<U>&) {
-  return false;
-}
-
-} // namespace Json
-
-#pragma pack(pop)
-
-#endif // CPPTL_JSON_ALLOCATOR_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/allocator.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/config.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef JSON_CONFIG_H_INCLUDED
-#define JSON_CONFIG_H_INCLUDED
-#include <cstddef>
-#include <cstdint>
-#include <istream>
-#include <memory>
-#include <ostream>
-#include <sstream>
-#include <string>
-#include <type_traits>
-
-/// If defined, indicates that json library is embedded in CppTL library.
-//# define JSON_IN_CPPTL 1
-
-/// If defined, indicates that json may leverage CppTL library
-//#  define JSON_USE_CPPTL 1
-/// If defined, indicates that cpptl vector based map should be used instead of
-/// std::map
-/// as Value container.
-//#  define JSON_USE_CPPTL_SMALLMAP 1
-
-// If non-zero, the library uses exceptions to report bad input instead of C
-// assertion macros. The default is to use exceptions.
-#ifndef JSON_USE_EXCEPTION
-#define JSON_USE_EXCEPTION 1
-#endif
-
-/// If defined, indicates that the source file is amalgamated
-/// to prevent private header inclusion.
-/// Remarks: it is automatically defined in the generated amalgamated header.
-// #define JSON_IS_AMALGAMATION
-
-#ifdef JSON_IN_CPPTL
-#include <cpptl/config.h>
-#ifndef JSON_USE_CPPTL
-#define JSON_USE_CPPTL 1
-#endif
-#endif
-
-#ifdef JSON_IN_CPPTL
-#define JSON_API CPPTL_API
-#elif defined(JSON_DLL_BUILD)
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#define JSON_API __declspec(dllexport)
-#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
-#endif // if defined(_MSC_VER)
-#elif defined(JSON_DLL)
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#define JSON_API __declspec(dllimport)
-#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
-#endif // if defined(_MSC_VER)
-#endif // ifdef JSON_IN_CPPTL
-#if !defined(JSON_API)
-#define JSON_API
-#endif
-
-#if defined(_MSC_VER) && _MSC_VER < 1800
-#error                                                                         \
-    "ERROR:  Visual Studio 12 (2013) with _MSC_VER=1800 is the oldest supported compiler with sufficient C++11 capabilities"
-#endif
-
-#if defined(_MSC_VER) && _MSC_VER < 1900
-// As recommended at
-// https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010
-extern JSON_API int
-msvc_pre1900_c99_snprintf(char* outBuf, size_t size, const char* format, ...);
-#define jsoncpp_snprintf msvc_pre1900_c99_snprintf
-#else
-#define jsoncpp_snprintf std::snprintf
-#endif
-
-// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
-// integer
-// Storages, and 64 bits integer support is disabled.
-// #define JSON_NO_INT64 1
-
-#if defined(_MSC_VER) // MSVC
-#define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
-#endif // defined(_MSC_VER)
-
-// JSONCPP_OVERRIDE is maintained for backwards compatibility of external tools.
-// C++11 should be used directly in JSONCPP.
-#define JSONCPP_OVERRIDE override
-
-#if __cplusplus >= 201103L
-#define JSONCPP_NOEXCEPT noexcept
-#define JSONCPP_OP_EXPLICIT explicit
-#elif defined(_MSC_VER) && _MSC_VER < 1900
-#define JSONCPP_NOEXCEPT throw()
-#define JSONCPP_OP_EXPLICIT explicit
-#elif defined(_MSC_VER) && _MSC_VER >= 1900
-#define JSONCPP_NOEXCEPT noexcept
-#define JSONCPP_OP_EXPLICIT explicit
-#else
-#define JSONCPP_NOEXCEPT throw()
-#define JSONCPP_OP_EXPLICIT
-#endif
-
-#ifndef JSON_HAS_RVALUE_REFERENCES
-
-#if defined(_MSC_VER)
-#define JSON_HAS_RVALUE_REFERENCES 1
-#endif // MSVC >= 2013
-
-#ifdef __clang__
-#if __has_feature(cxx_rvalue_references)
-#define JSON_HAS_RVALUE_REFERENCES 1
-#endif // has_feature
-
-#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
-#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
-#define JSON_HAS_RVALUE_REFERENCES 1
-#endif // GXX_EXPERIMENTAL
-
-#endif // __clang__ || __GNUC__
-
-#endif // not defined JSON_HAS_RVALUE_REFERENCES
-
-#ifndef JSON_HAS_RVALUE_REFERENCES
-#define JSON_HAS_RVALUE_REFERENCES 0
-#endif
-
-#ifdef __clang__
-#if __has_extension(attribute_deprecated_with_message)
-#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
-#endif
-#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
-#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
-#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
-#elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
-#define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
-#endif // GNUC version
-#endif // __clang__ || __GNUC__
-
-#if !defined(JSONCPP_DEPRECATED)
-#define JSONCPP_DEPRECATED(message)
-#endif // if !defined(JSONCPP_DEPRECATED)
-
-#if __GNUC__ >= 6
-#define JSON_USE_INT64_DOUBLE_CONVERSION 1
-#endif
-
-#if !defined(JSON_IS_AMALGAMATION)
-
-#include "allocator.h"
-#include "version.h"
-
-#endif // if !defined(JSON_IS_AMALGAMATION)
-
-namespace Json {
-typedef int Int;
-typedef unsigned int UInt;
-#if defined(JSON_NO_INT64)
-typedef int LargestInt;
-typedef unsigned int LargestUInt;
-#undef JSON_HAS_INT64
-#else                 // if defined(JSON_NO_INT64)
-// For Microsoft Visual use specific types as long long is not supported
-#if defined(_MSC_VER) // Microsoft Visual Studio
-typedef __int64 Int64;
-typedef unsigned __int64 UInt64;
-#else                 // if defined(_MSC_VER) // Other platforms, use long long
-typedef int64_t Int64;
-typedef uint64_t UInt64;
-#endif                // if defined(_MSC_VER)
-typedef Int64 LargestInt;
-typedef UInt64 LargestUInt;
-#define JSON_HAS_INT64
-#endif // if defined(JSON_NO_INT64)
-
-template <typename T>
-using Allocator = typename std::conditional<JSONCPP_USING_SECURE_MEMORY,
-                                            SecureAllocator<T>,
-                                            std::allocator<T>>::type;
-using String = std::basic_string<char, std::char_traits<char>, Allocator<char>>;
-using IStringStream = std::basic_istringstream<String::value_type,
-                                               String::traits_type,
-                                               String::allocator_type>;
-using OStringStream = std::basic_ostringstream<String::value_type,
-                                               String::traits_type,
-                                               String::allocator_type>;
-using IStream = std::istream;
-using OStream = std::ostream;
-} // namespace Json
-
-// Legacy names (formerly macros).
-using JSONCPP_STRING = Json::String;
-using JSONCPP_ISTRINGSTREAM = Json::IStringStream;
-using JSONCPP_OSTRINGSTREAM = Json::OStringStream;
-using JSONCPP_ISTREAM = Json::IStream;
-using JSONCPP_OSTREAM = Json::OStream;
-
-#endif // JSON_CONFIG_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/config.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/forwards.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef JSON_FORWARDS_H_INCLUDED
-#define JSON_FORWARDS_H_INCLUDED
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include "config.h"
-#endif // if !defined(JSON_IS_AMALGAMATION)
-
-namespace Json {
-
-// writer.h
-class FastWriter;
-class StyledWriter;
-
-// reader.h
-class Reader;
-
-// features.h
-class Features;
-
-// value.h
-typedef unsigned int ArrayIndex;
-class StaticString;
-class Path;
-class PathArgument;
-class Value;
-class ValueIteratorBase;
-class ValueIterator;
-class ValueConstIterator;
-
-} // namespace Json
-
-#endif // JSON_FORWARDS_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/forwards.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/features.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef CPPTL_JSON_FEATURES_H_INCLUDED
-#define CPPTL_JSON_FEATURES_H_INCLUDED
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include "forwards.h"
-#endif // if !defined(JSON_IS_AMALGAMATION)
-
-#pragma pack(push, 8)
-
-namespace Json {
-
-/** \brief Configuration passed to reader and writer.
- * This configuration object can be used to force the Reader or Writer
- * to behave in a standard conforming way.
- */
-class JSON_API Features {
-public:
-  /** \brief A configuration that allows all features and assumes all strings
-   * are UTF-8.
-   * - C & C++ comments are allowed
-   * - Root object can be any JSON value
-   * - Assumes Value strings are encoded in UTF-8
-   */
-  static Features all();
-
-  /** \brief A configuration that is strictly compatible with the JSON
-   * specification.
-   * - Comments are forbidden.
-   * - Root object must be either an array or an object value.
-   * - Assumes Value strings are encoded in UTF-8
-   */
-  static Features strictMode();
-
-  /** \brief Initialize the configuration like JsonConfig::allFeatures;
-   */
-  Features();
-
-  /// \c true if comments are allowed. Default: \c true.
-  bool allowComments_{true};
-
-  /// \c true if root must be either an array or an object value. Default: \c
-  /// false.
-  bool strictRoot_{false};
-
-  /// \c true if dropped null placeholders are allowed. Default: \c false.
-  bool allowDroppedNullPlaceholders_{false};
-
-  /// \c true if numeric object key are allowed. Default: \c false.
-  bool allowNumericKeys_{false};
-};
-
-} // namespace Json
-
-#pragma pack(pop)
-
-#endif // CPPTL_JSON_FEATURES_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/features.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/value.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef CPPTL_JSON_H_INCLUDED
-#define CPPTL_JSON_H_INCLUDED
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include "forwards.h"
-#endif // if !defined(JSON_IS_AMALGAMATION)
-#include <exception>
-#include <string>
-#include <vector>
-
-#ifndef JSON_USE_CPPTL_SMALLMAP
-#include <map>
-#else
-#include <cpptl/smallmap.h>
-#endif
-#ifdef JSON_USE_CPPTL
-#include <cpptl/forwards.h>
-#endif
-
-// Conditional NORETURN attribute on the throw functions would:
-// a) suppress false positives from static code analysis
-// b) possibly improve optimization opportunities.
-#if !defined(JSONCPP_NORETURN)
-#if defined(_MSC_VER)
-#define JSONCPP_NORETURN __declspec(noreturn)
-#elif defined(__GNUC__)
-#define JSONCPP_NORETURN __attribute__((__noreturn__))
-#else
-#define JSONCPP_NORETURN
-#endif
-#endif
-
-// Disable warning C4251: <data member>: <type> needs to have dll-interface to
-// be used by...
-#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-#pragma warning(push)
-#pragma warning(disable : 4251)
-#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-
-#pragma pack(push, 8)
-
-/** \brief JSON (JavaScript Object Notation).
- */
-namespace Json {
-
-/** Base class for all exceptions we throw.
- *
- * We use nothing but these internally. Of course, STL can throw others.
- */
-class JSON_API Exception : public std::exception {
-public:
-  Exception(String msg);
-  ~Exception() JSONCPP_NOEXCEPT override;
-  char const* what() const JSONCPP_NOEXCEPT override;
-
-protected:
-  String msg_;
-};
-
-/** Exceptions which the user cannot easily avoid.
- *
- * E.g. out-of-memory (when we use malloc), stack-overflow, malicious input
- *
- * \remark derived from Json::Exception
- */
-class JSON_API RuntimeError : public Exception {
-public:
-  RuntimeError(String const& msg);
-};
-
-/** Exceptions thrown by JSON_ASSERT/JSON_FAIL macros.
- *
- * These are precondition-violations (user bugs) and internal errors (our bugs).
- *
- * \remark derived from Json::Exception
- */
-class JSON_API LogicError : public Exception {
-public:
-  LogicError(String const& msg);
-};
-
-/// used internally
-JSONCPP_NORETURN void throwRuntimeError(String const& msg);
-/// used internally
-JSONCPP_NORETURN void throwLogicError(String const& msg);
-
-/** \brief Type of the value held by a Value object.
- */
-enum ValueType {
-  nullValue = 0, ///< 'null' value
-  intValue,      ///< signed integer value
-  uintValue,     ///< unsigned integer value
-  realValue,     ///< double value
-  stringValue,   ///< UTF-8 string value
-  booleanValue,  ///< bool value
-  arrayValue,    ///< array value (ordered list)
-  objectValue    ///< object value (collection of name/value pairs).
-};
-
-enum CommentPlacement {
-  commentBefore = 0,      ///< a comment placed on the line before a value
-  commentAfterOnSameLine, ///< a comment just after a value on the same line
-  commentAfter, ///< a comment on the line after a value (only make sense for
-  /// root value)
-  numberOfCommentPlacement
-};
-
-/** \brief Type of precision for formatting of real values.
- */
-enum PrecisionType {
-  significantDigits = 0, ///< we set max number of significant digits in string
-  decimalPlaces          ///< we set max number of digits after "." in string
-};
-
-//# ifdef JSON_USE_CPPTL
-//   typedef CppTL::AnyEnumerator<const char *> EnumMemberNames;
-//   typedef CppTL::AnyEnumerator<const Value &> EnumValues;
-//# endif
-
-/** \brief Lightweight wrapper to tag static string.
- *
- * Value constructor and objectValue member assignment takes advantage of the
- * StaticString and avoid the cost of string duplication when storing the
- * string or the member name.
- *
- * Example of usage:
- * \code
- * Json::Value aValue( StaticString("some text") );
- * Json::Value object;
- * static const StaticString code("code");
- * object[code] = 1234;
- * \endcode
- */
-class JSON_API StaticString {
-public:
-  explicit StaticString(const char* czstring) : c_str_(czstring) {}
-
-  operator const char*() const { return c_str_; }
-
-  const char* c_str() const { return c_str_; }
-
-private:
-  const char* c_str_;
-};
-
-/** \brief Represents a <a HREF="http://www.json.org">JSON</a> value.
- *
- * This class is a discriminated union wrapper that can represents a:
- * - signed integer [range: Value::minInt - Value::maxInt]
- * - unsigned integer (range: 0 - Value::maxUInt)
- * - double
- * - UTF-8 string
- * - boolean
- * - 'null'
- * - an ordered list of Value
- * - collection of name/value pairs (javascript object)
- *
- * The type of the held value is represented by a #ValueType and
- * can be obtained using type().
- *
- * Values of an #objectValue or #arrayValue can be accessed using operator[]()
- * methods.
- * Non-const methods will automatically create the a #nullValue element
- * if it does not exist.
- * The sequence of an #arrayValue will be automatically resized and initialized
- * with #nullValue. resize() can be used to enlarge or truncate an #arrayValue.
- *
- * The get() methods can be used to obtain default value in the case the
- * required element does not exist.
- *
- * It is possible to iterate over the list of member keys of an object using
- * the getMemberNames() method.
- *
- * \note #Value string-length fit in size_t, but keys must be < 2^30.
- * (The reason is an implementation detail.) A #CharReader will raise an
- * exception if a bound is exceeded to avoid security holes in your app,
- * but the Value API does *not* check bounds. That is the responsibility
- * of the caller.
- */
-class JSON_API Value {
-  friend class ValueIteratorBase;
-
-public:
-  typedef std::vector<String> Members;
-  typedef ValueIterator iterator;
-  typedef ValueConstIterator const_iterator;
-  typedef Json::UInt UInt;
-  typedef Json::Int Int;
-#if defined(JSON_HAS_INT64)
-  typedef Json::UInt64 UInt64;
-  typedef Json::Int64 Int64;
-#endif // defined(JSON_HAS_INT64)
-  typedef Json::LargestInt LargestInt;
-  typedef Json::LargestUInt LargestUInt;
-  typedef Json::ArrayIndex ArrayIndex;
-
-  // Required for boost integration, e. g. BOOST_TEST
-  typedef std::string value_type;
-
-  static const Value& null; ///< We regret this reference to a global instance;
-                            ///< prefer the simpler Value().
-  static const Value& nullRef; ///< just a kludge for binary-compatibility; same
-                               ///< as null
-  static Value const& nullSingleton(); ///< Prefer this to null or nullRef.
-
-  /// Minimum signed integer value that can be stored in a Json::Value.
-  static const LargestInt minLargestInt;
-  /// Maximum signed integer value that can be stored in a Json::Value.
-  static const LargestInt maxLargestInt;
-  /// Maximum unsigned integer value that can be stored in a Json::Value.
-  static const LargestUInt maxLargestUInt;
-
-  /// Minimum signed int value that can be stored in a Json::Value.
-  static const Int minInt;
-  /// Maximum signed int value that can be stored in a Json::Value.
-  static const Int maxInt;
-  /// Maximum unsigned int value that can be stored in a Json::Value.
-  static const UInt maxUInt;
-
-#if defined(JSON_HAS_INT64)
-  /// Minimum signed 64 bits int value that can be stored in a Json::Value.
-  static const Int64 minInt64;
-  /// Maximum signed 64 bits int value that can be stored in a Json::Value.
-  static const Int64 maxInt64;
-  /// Maximum unsigned 64 bits int value that can be stored in a Json::Value.
-  static const UInt64 maxUInt64;
-#endif // defined(JSON_HAS_INT64)
-
-  /// Default precision for real value for string representation.
-  static const UInt defaultRealPrecision;
-
-// Workaround for bug in the NVIDIAs CUDA 9.1 nvcc compiler
-// when using gcc and clang backend compilers.  CZString
-// cannot be defined as private.  See issue #486
-#ifdef __NVCC__
-public:
-#else
-private:
-#endif
-#ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
-  class CZString {
-  public:
-    enum DuplicationPolicy { noDuplication = 0, duplicate, duplicateOnCopy };
-    CZString(ArrayIndex index);
-    CZString(char const* str, unsigned length, DuplicationPolicy allocate);
-    CZString(CZString const& other);
-#if JSON_HAS_RVALUE_REFERENCES
-    CZString(CZString&& other);
-#endif
-    ~CZString();
-    CZString& operator=(const CZString& other);
-
-#if JSON_HAS_RVALUE_REFERENCES
-    CZString& operator=(CZString&& other);
-#endif
-
-    bool operator<(CZString const& other) const;
-    bool operator==(CZString const& other) const;
-    ArrayIndex index() const;
-    // const char* c_str() const; ///< \deprecated
-    char const* data() const;
-    unsigned length() const;
-    bool isStaticString() const;
-
-  private:
-    void swap(CZString& other);
-
-    struct StringStorage {
-      unsigned policy_ : 2;
-      unsigned length_ : 30; // 1GB max
-    };
-
-    char const* cstr_; // actually, a prefixed string, unless policy is noDup
-    union {
-      ArrayIndex index_;
-      StringStorage storage_;
-    };
-  };
-
-public:
-#ifndef JSON_USE_CPPTL_SMALLMAP
-  typedef std::map<CZString, Value> ObjectValues;
-#else
-  typedef CppTL::SmallMap<CZString, Value> ObjectValues;
-#endif // ifndef JSON_USE_CPPTL_SMALLMAP
-#endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
-
-public:
-  /** \brief Create a default Value of the given type.
-
-    This is a very useful constructor.
-    To create an empty array, pass arrayValue.
-    To create an empty object, pass objectValue.
-    Another Value can then be set to this one by assignment.
-This is useful since clear() and resize() will not alter types.
-
-    Examples:
-\code
-Json::Value null_value; // null
-Json::Value arr_value(Json::arrayValue); // []
-Json::Value obj_value(Json::objectValue); // {}
-\endcode
-  */
-  Value(ValueType type = nullValue);
-  Value(Int value);
-  Value(UInt value);
-#if defined(JSON_HAS_INT64)
-  Value(Int64 value);
-  Value(UInt64 value);
-#endif // if defined(JSON_HAS_INT64)
-  Value(double value);
-  Value(const char* value); ///< Copy til first 0. (NULL causes to seg-fault.)
-  Value(const char* begin, const char* end); ///< Copy all, incl zeroes.
-  /** \brief Constructs a value from a static string.
-
-   * Like other value string constructor but do not duplicate the string for
-   * internal storage. The given string must remain alive after the call to this
-   * constructor.
-   * \note This works only for null-terminated strings. (We cannot change the
-   *   size of this class, so we have nowhere to store the length,
-   *   which might be computed later for various operations.)
-   *
-   * Example of usage:
-   * \code
-   * static StaticString foo("some text");
-   * Json::Value aValue(foo);
-   * \endcode
-   */
-  Value(const StaticString& value);
-  Value(const String& value); ///< Copy data() til size(). Embedded
-                              ///< zeroes too.
-#ifdef JSON_USE_CPPTL
-  Value(const CppTL::ConstString& value);
-#endif
-  Value(bool value);
-  Value(const Value& other);
-  Value(Value&& other);
-  ~Value();
-
-  /// \note Overwrite existing comments. To preserve comments, use
-  /// #swapPayload().
-  Value& operator=(const Value& other);
-  Value& operator=(Value&& other);
-
-  /// Swap everything.
-  void swap(Value& other);
-  /// Swap values but leave comments and source offsets in place.
-  void swapPayload(Value& other);
-
-  /// copy everything.
-  void copy(const Value& other);
-  /// copy values but leave comments and source offsets in place.
-  void copyPayload(const Value& other);
-
-  ValueType type() const;
-
-  /// Compare payload only, not comments etc.
-  bool operator<(const Value& other) const;
-  bool operator<=(const Value& other) const;
-  bool operator>=(const Value& other) const;
-  bool operator>(const Value& other) const;
-  bool operator==(const Value& other) const;
-  bool operator!=(const Value& other) const;
-  int compare(const Value& other) const;
-
-  const char* asCString() const; ///< Embedded zeroes could cause you trouble!
-#if JSONCPP_USING_SECURE_MEMORY
-  unsigned getCStringLength() const; // Allows you to understand the length of
-                                     // the CString
-#endif
-  String asString() const; ///< Embedded zeroes are possible.
-  /** Get raw char* of string-value.
-   *  \return false if !string. (Seg-fault if str or end are NULL.)
-   */
-  bool getString(char const** begin, char const** end) const;
-#ifdef JSON_USE_CPPTL
-  CppTL::ConstString asConstString() const;
-#endif
-  Int asInt() const;
-  UInt asUInt() const;
-#if defined(JSON_HAS_INT64)
-  Int64 asInt64() const;
-  UInt64 asUInt64() const;
-#endif // if defined(JSON_HAS_INT64)
-  LargestInt asLargestInt() const;
-  LargestUInt asLargestUInt() const;
-  float asFloat() const;
-  double asDouble() const;
-  bool asBool() const;
-
-  bool isNull() const;
-  bool isBool() const;
-  bool isInt() const;
-  bool isInt64() const;
-  bool isUInt() const;
-  bool isUInt64() const;
-  bool isIntegral() const;
-  bool isDouble() const;
-  bool isNumeric() const;
-  bool isString() const;
-  bool isArray() const;
-  bool isObject() const;
-
-  bool isConvertibleTo(ValueType other) const;
-
-  /// Number of values in array or object
-  ArrayIndex size() const;
-
-  /// \brief Return true if empty array, empty object, or null;
-  /// otherwise, false.
-  bool empty() const;
-
-  /// Return !isNull()
-  JSONCPP_OP_EXPLICIT operator bool() const;
-
-  /// Remove all object members and array elements.
-  /// \pre type() is arrayValue, objectValue, or nullValue
-  /// \post type() is unchanged
-  void clear();
-
-  /// Resize the array to newSize elements.
-  /// New elements are initialized to null.
-  /// May only be called on nullValue or arrayValue.
-  /// \pre type() is arrayValue or nullValue
-  /// \post type() is arrayValue
-  void resize(ArrayIndex newSize);
-
-  /// Access an array element (zero based index ).
-  /// If the array contains less than index element, then null value are
-  /// inserted
-  /// in the array so that its size is index+1.
-  /// (You may need to say 'value[0u]' to get your compiler to distinguish
-  ///  this from the operator[] which takes a string.)
-  Value& operator[](ArrayIndex index);
-
-  /// Access an array element (zero based index ).
-  /// If the array contains less than index element, then null value are
-  /// inserted
-  /// in the array so that its size is index+1.
-  /// (You may need to say 'value[0u]' to get your compiler to distinguish
-  ///  this from the operator[] which takes a string.)
-  Value& operator[](int index);
-
-  /// Access an array element (zero based index )
-  /// (You may need to say 'value[0u]' to get your compiler to distinguish
-  ///  this from the operator[] which takes a string.)
-  const Value& operator[](ArrayIndex index) const;
-
-  /// Access an array element (zero based index )
-  /// (You may need to say 'value[0u]' to get your compiler to distinguish
-  ///  this from the operator[] which takes a string.)
-  const Value& operator[](int index) const;
-
-  /// If the array contains at least index+1 elements, returns the element
-  /// value,
-  /// otherwise returns defaultValue.
-  Value get(ArrayIndex index, const Value& defaultValue) const;
-  /// Return true if index < size().
-  bool isValidIndex(ArrayIndex index) const;
-  /// \brief Append value to array at the end.
-  ///
-  /// Equivalent to jsonvalue[jsonvalue.size()] = value;
-  Value& append(const Value& value);
-
-#if JSON_HAS_RVALUE_REFERENCES
-  Value& append(Value&& value);
-#endif
-
-  /// Access an object value by name, create a null member if it does not exist.
-  /// \note Because of our implementation, keys are limited to 2^30 -1 chars.
-  ///  Exceeding that will cause an exception.
-  Value& operator[](const char* key);
-  /// Access an object value by name, returns null if there is no member with
-  /// that name.
-  const Value& operator[](const char* key) const;
-  /// Access an object value by name, create a null member if it does not exist.
-  /// \param key may contain embedded nulls.
-  Value& operator[](const String& key);
-  /// Access an object value by name, returns null if there is no member with
-  /// that name.
-  /// \param key may contain embedded nulls.
-  const Value& operator[](const String& key) const;
-  /** \brief Access an object value by name, create a null member if it does not
-   exist.
-
-   * If the object has no entry for that name, then the member name used to
-   store
-   * the new entry is not duplicated.
-   * Example of use:
-   * \code
-   * Json::Value object;
-   * static const StaticString code("code");
-   * object[code] = 1234;
-   * \endcode
-   */
-  Value& operator[](const StaticString& key);
-#ifdef JSON_USE_CPPTL
-  /// Access an object value by name, create a null member if it does not exist.
-  Value& operator[](const CppTL::ConstString& key);
-  /// Access an object value by name, returns null if there is no member with
-  /// that name.
-  const Value& operator[](const CppTL::ConstString& key) const;
-#endif
-  /// Return the member named key if it exist, defaultValue otherwise.
-  /// \note deep copy
-  Value get(const char* key, const Value& defaultValue) const;
-  /// Return the member named key if it exist, defaultValue otherwise.
-  /// \note deep copy
-  /// \note key may contain embedded nulls.
-  Value
-  get(const char* begin, const char* end, const Value& defaultValue) const;
-  /// Return the member named key if it exist, defaultValue otherwise.
-  /// \note deep copy
-  /// \param key may contain embedded nulls.
-  Value get(const String& key, const Value& defaultValue) const;
-#ifdef JSON_USE_CPPTL
-  /// Return the member named key if it exist, defaultValue otherwise.
-  /// \note deep copy
-  Value get(const CppTL::ConstString& key, const Value& defaultValue) const;
-#endif
-  /// Most general and efficient version of isMember()const, get()const,
-  /// and operator[]const
-  /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30
-  Value const* find(char const* begin, char const* end) const;
-  /// Most general and efficient version of object-mutators.
-  /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30
-  /// \return non-zero, but JSON_ASSERT if this is neither object nor nullValue.
-  Value const* demand(char const* begin, char const* end);
-  /// \brief Remove and return the named member.
-  ///
-  /// Do nothing if it did not exist.
-  /// \pre type() is objectValue or nullValue
-  /// \post type() is unchanged
-  void removeMember(const char* key);
-  /// Same as removeMember(const char*)
-  /// \param key may contain embedded nulls.
-  void removeMember(const String& key);
-  /// Same as removeMember(const char* begin, const char* end, Value* removed),
-  /// but 'key' is null-terminated.
-  bool removeMember(const char* key, Value* removed);
-  /** \brief Remove the named map member.
-
-      Update 'removed' iff removed.
-      \param key may contain embedded nulls.
-      \return true iff removed (no exceptions)
-  */
-  bool removeMember(String const& key, Value* removed);
-  /// Same as removeMember(String const& key, Value* removed)
-  bool removeMember(const char* begin, const char* end, Value* removed);
-  /** \brief Remove the indexed array element.
-
-      O(n) expensive operations.
-      Update 'removed' iff removed.
-      \return true if removed (no exceptions)
-  */
-  bool removeIndex(ArrayIndex index, Value* removed);
-
-  /// Return true if the object has a member named key.
-  /// \note 'key' must be null-terminated.
-  bool isMember(const char* key) const;
-  /// Return true if the object has a member named key.
-  /// \param key may contain embedded nulls.
-  bool isMember(const String& key) const;
-  /// Same as isMember(String const& key)const
-  bool isMember(const char* begin, const char* end) const;
-#ifdef JSON_USE_CPPTL
-  /// Return true if the object has a member named key.
-  bool isMember(const CppTL::ConstString& key) const;
-#endif
-
-  /// \brief Return a list of the member names.
-  ///
-  /// If null, return an empty list.
-  /// \pre type() is objectValue or nullValue
-  /// \post if type() was nullValue, it remains nullValue
-  Members getMemberNames() const;
-
-  //# ifdef JSON_USE_CPPTL
-  //      EnumMemberNames enumMemberNames() const;
-  //      EnumValues enumValues() const;
-  //# endif
-
-  /// \deprecated Always pass len.
-  JSONCPP_DEPRECATED("Use setComment(String const&) instead.")
-  void setComment(const char* comment, CommentPlacement placement);
-  /// Comments must be //... or /* ... */
-  void setComment(const char* comment, size_t len, CommentPlacement placement);
-  /// Comments must be //... or /* ... */
-  void setComment(const String& comment, CommentPlacement placement);
-  bool hasComment(CommentPlacement placement) const;
-  /// Include delimiters and embedded newlines.
-  String getComment(CommentPlacement placement) const;
-
-  String toStyledString() const;
-
-  const_iterator begin() const;
-  const_iterator end() const;
-
-  iterator begin();
-  iterator end();
-
-  // Accessors for the [start, limit) range of bytes within the JSON text from
-  // which this value was parsed, if any.
-  void setOffsetStart(ptrdiff_t start);
-  void setOffsetLimit(ptrdiff_t limit);
-  ptrdiff_t getOffsetStart() const;
-  ptrdiff_t getOffsetLimit() const;
-
-private:
-  void setType(ValueType v) { bits_.value_type_ = v; }
-  bool isAllocated() const { return bits_.allocated_; }
-  void setIsAllocated(bool v) { bits_.allocated_ = v; }
-
-  void initBasic(ValueType type, bool allocated = false);
-  void dupPayload(const Value& other);
-  void releasePayload();
-  void dupMeta(const Value& other);
-
-  Value& resolveReference(const char* key);
-  Value& resolveReference(const char* key, const char* end);
-
-  struct CommentInfo {
-    CommentInfo();
-    ~CommentInfo();
-
-    void setComment(const char* text, size_t len);
-
-    char* comment_{nullptr};
-  };
-
-  // struct MemberNamesTransform
-  //{
-  //   typedef const char *result_type;
-  //   const char *operator()( const CZString &name ) const
-  //   {
-  //      return name.c_str();
-  //   }
-  //};
-
-  union ValueHolder {
-    LargestInt int_;
-    LargestUInt uint_;
-    double real_;
-    bool bool_;
-    char* string_; // if allocated_, ptr to { unsigned, char[] }.
-    ObjectValues* map_;
-  } value_;
-
-  struct {
-    // Really a ValueType, but types should agree for bitfield packing.
-    unsigned int value_type_ : 8;
-    // Unless allocated_, string_ must be null-terminated.
-    unsigned int allocated_ : 1;
-  } bits_;
-
-  CommentInfo* comments_;
-
-  // [start, limit) byte offsets in the source JSON text from which this Value
-  // was extracted.
-  ptrdiff_t start_;
-  ptrdiff_t limit_;
-};
-
-/** \brief Experimental and untested: represents an element of the "path" to
- * access a node.
- */
-class JSON_API PathArgument {
-public:
-  friend class Path;
-
-  PathArgument();
-  PathArgument(ArrayIndex index);
-  PathArgument(const char* key);
-  PathArgument(const String& key);
-
-private:
-  enum Kind { kindNone = 0, kindIndex, kindKey };
-  String key_;
-  ArrayIndex index_{};
-  Kind kind_{kindNone};
-};
-
-/** \brief Experimental and untested: represents a "path" to access a node.
- *
- * Syntax:
- * - "." => root node
- * - ".[n]" => elements at index 'n' of root node (an array value)
- * - ".name" => member named 'name' of root node (an object value)
- * - ".name1.name2.name3"
- * - ".[0][1][2].name1[3]"
- * - ".%" => member name is provided as parameter
- * - ".[%]" => index is provied as parameter
- */
-class JSON_API Path {
-public:
-  Path(const String& path,
-       const PathArgument& a1 = PathArgument(),
-       const PathArgument& a2 = PathArgument(),
-       const PathArgument& a3 = PathArgument(),
-       const PathArgument& a4 = PathArgument(),
-       const PathArgument& a5 = PathArgument());
-
-  const Value& resolve(const Value& root) const;
-  Value resolve(const Value& root, const Value& defaultValue) const;
-  /// Creates the "path" to access the specified node and returns a reference on
-  /// the node.
-  Value& make(Value& root) const;
-
-private:
-  typedef std::vector<const PathArgument*> InArgs;
-  typedef std::vector<PathArgument> Args;
-
-  void makePath(const String& path, const InArgs& in);
-  void addPathInArg(const String& path,
-                    const InArgs& in,
-                    InArgs::const_iterator& itInArg,
-                    PathArgument::Kind kind);
-  static void invalidPath(const String& path, int location);
-
-  Args args_;
-};
-
-/** \brief base class for Value iterators.
- *
- */
-class JSON_API ValueIteratorBase {
-public:
-  typedef std::bidirectional_iterator_tag iterator_category;
-  typedef unsigned int size_t;
-  typedef int difference_type;
-  typedef ValueIteratorBase SelfType;
-
-  bool operator==(const SelfType& other) const { return isEqual(other); }
-
-  bool operator!=(const SelfType& other) const { return !isEqual(other); }
-
-  difference_type operator-(const SelfType& other) const {
-    return other.computeDistance(*this);
-  }
-
-  /// Return either the index or the member name of the referenced value as a
-  /// Value.
-  Value key() const;
-
-  /// Return the index of the referenced Value, or -1 if it is not an
-  /// arrayValue.
-  UInt index() const;
-
-  /// Return the member name of the referenced Value, or "" if it is not an
-  /// objectValue.
-  /// \note Avoid `c_str()` on result, as embedded zeroes are possible.
-  String name() const;
-
-  /// Return the member name of the referenced Value. "" if it is not an
-  /// objectValue.
-  /// \deprecated This cannot be used for UTF-8 strings, since there can be
-  /// embedded nulls.
-  JSONCPP_DEPRECATED("Use `key = name();` instead.")
-  char const* memberName() const;
-  /// Return the member name of the referenced Value, or NULL if it is not an
-  /// objectValue.
-  /// \note Better version than memberName(). Allows embedded nulls.
-  char const* memberName(char const** end) const;
-
-protected:
-  Value& deref() const;
-
-  void increment();
-
-  void decrement();
-
-  difference_type computeDistance(const SelfType& other) const;
-
-  bool isEqual(const SelfType& other) const;
-
-  void copy(const SelfType& other);
-
-private:
-  Value::ObjectValues::iterator current_;
-  // Indicates that iterator is for a null value.
-  bool isNull_{true};
-
-public:
-  // For some reason, BORLAND needs these at the end, rather
-  // than earlier. No idea why.
-  ValueIteratorBase();
-  explicit ValueIteratorBase(const Value::ObjectValues::iterator& current);
-};
-
-/** \brief const iterator for object and array value.
- *
- */
-class JSON_API ValueConstIterator : public ValueIteratorBase {
-  friend class Value;
-
-public:
-  typedef const Value value_type;
-  // typedef unsigned int size_t;
-  // typedef int difference_type;
-  typedef const Value& reference;
-  typedef const Value* pointer;
-  typedef ValueConstIterator SelfType;
-
-  ValueConstIterator();
-  ValueConstIterator(ValueIterator const& other);
-
-private:
-  /*! \internal Use by Value to create an iterator.
-   */
-  explicit ValueConstIterator(const Value::ObjectValues::iterator& current);
-
-public:
-  SelfType& operator=(const ValueIteratorBase& other);
-
-  SelfType operator++(int) {
-    SelfType temp(*this);
-    ++*this;
-    return temp;
-  }
-
-  SelfType operator--(int) {
-    SelfType temp(*this);
-    --*this;
-    return temp;
-  }
-
-  SelfType& operator--() {
-    decrement();
-    return *this;
-  }
-
-  SelfType& operator++() {
-    increment();
-    return *this;
-  }
-
-  reference operator*() const { return deref(); }
-
-  pointer operator->() const { return &deref(); }
-};
-
-/** \brief Iterator for object and array value.
- */
-class JSON_API ValueIterator : public ValueIteratorBase {
-  friend class Value;
-
-public:
-  typedef Value value_type;
-  typedef unsigned int size_t;
-  typedef int difference_type;
-  typedef Value& reference;
-  typedef Value* pointer;
-  typedef ValueIterator SelfType;
-
-  ValueIterator();
-  explicit ValueIterator(const ValueConstIterator& other);
-  ValueIterator(const ValueIterator& other);
-
-private:
-  /*! \internal Use by Value to create an iterator.
-   */
-  explicit ValueIterator(const Value::ObjectValues::iterator& current);
-
-public:
-  SelfType& operator=(const SelfType& other);
-
-  SelfType operator++(int) {
-    SelfType temp(*this);
-    ++*this;
-    return temp;
-  }
-
-  SelfType operator--(int) {
-    SelfType temp(*this);
-    --*this;
-    return temp;
-  }
-
-  SelfType& operator--() {
-    decrement();
-    return *this;
-  }
-
-  SelfType& operator++() {
-    increment();
-    return *this;
-  }
-
-  reference operator*() const { return deref(); }
-
-  pointer operator->() const { return &deref(); }
-};
-
-inline void swap(Value& a, Value& b) { a.swap(b); }
-
-} // namespace Json
-
-#pragma pack(pop)
-
-#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-#pragma warning(pop)
-#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-
-#endif // CPPTL_JSON_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/value.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/reader.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef CPPTL_JSON_READER_H_INCLUDED
-#define CPPTL_JSON_READER_H_INCLUDED
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include "features.h"
-#include "value.h"
-#endif // if !defined(JSON_IS_AMALGAMATION)
-#include <deque>
-#include <iosfwd>
-#include <istream>
-#include <stack>
-#include <string>
-
-// Disable warning C4251: <data member>: <type> needs to have dll-interface to
-// be used by...
-#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-#pragma warning(push)
-#pragma warning(disable : 4251)
-#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-
-#pragma pack(push, 8)
-
-namespace Json {
-
-/** \brief Unserialize a <a HREF="http://www.json.org">JSON</a> document into a
- *Value.
- *
- * \deprecated Use CharReader and CharReaderBuilder.
- */
-class JSON_API Reader {
-public:
-  typedef char Char;
-  typedef const Char* Location;
-
-  /** \brief An error tagged with where in the JSON text it was encountered.
-   *
-   * The offsets give the [start, limit) range of bytes within the text. Note
-   * that this is bytes, not codepoints.
-   *
-   */
-  struct StructuredError {
-    ptrdiff_t offset_start;
-    ptrdiff_t offset_limit;
-    String message;
-  };
-
-  /** \brief Constructs a Reader allowing all features
-   * for parsing.
-   */
-  JSONCPP_DEPRECATED("Use CharReader and CharReaderBuilder instead")
-  Reader();
-
-  /** \brief Constructs a Reader allowing the specified feature set
-   * for parsing.
-   */
-  JSONCPP_DEPRECATED("Use CharReader and CharReaderBuilder instead")
-  Reader(const Features& features);
-
-  /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
-   * document.
-   * \param document UTF-8 encoded string containing the document to read.
-   * \param root [out] Contains the root value of the document if it was
-   *             successfully parsed.
-   * \param collectComments \c true to collect comment and allow writing them
-   * back during
-   *                        serialization, \c false to discard comments.
-   *                        This parameter is ignored if
-   * Features::allowComments_
-   *                        is \c false.
-   * \return \c true if the document was successfully parsed, \c false if an
-   * error occurred.
-   */
-  bool
-  parse(const std::string& document, Value& root, bool collectComments = true);
-
-  /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
-   document.
-   * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the
-   document to read.
-   * \param endDoc Pointer on the end of the UTF-8 encoded string of the
-   document to read.
-   *               Must be >= beginDoc.
-   * \param root [out] Contains the root value of the document if it was
-   *             successfully parsed.
-   * \param collectComments \c true to collect comment and allow writing them
-   back during
-   *                        serialization, \c false to discard comments.
-   *                        This parameter is ignored if
-   Features::allowComments_
-   *                        is \c false.
-   * \return \c true if the document was successfully parsed, \c false if an
-   error occurred.
-   */
-  bool parse(const char* beginDoc,
-             const char* endDoc,
-             Value& root,
-             bool collectComments = true);
-
-  /// \brief Parse from input stream.
-  /// \see Json::operator>>(std::istream&, Json::Value&).
-  bool parse(IStream& is, Value& root, bool collectComments = true);
-
-  /** \brief Returns a user friendly string that list errors in the parsed
-   * document.
-   * \return Formatted error message with the list of errors with their location
-   * in
-   *         the parsed document. An empty string is returned if no error
-   * occurred
-   *         during parsing.
-   * \deprecated Use getFormattedErrorMessages() instead (typo fix).
-   */
-  JSONCPP_DEPRECATED("Use getFormattedErrorMessages() instead.")
-  String getFormatedErrorMessages() const;
-
-  /** \brief Returns a user friendly string that list errors in the parsed
-   * document.
-   * \return Formatted error message with the list of errors with their location
-   * in
-   *         the parsed document. An empty string is returned if no error
-   * occurred
-   *         during parsing.
-   */
-  String getFormattedErrorMessages() const;
-
-  /** \brief Returns a vector of structured erros encounted while parsing.
-   * \return A (possibly empty) vector of StructuredError objects. Currently
-   *         only one error can be returned, but the caller should tolerate
-   * multiple
-   *         errors.  This can occur if the parser recovers from a non-fatal
-   *         parse error and then encounters additional errors.
-   */
-  std::vector<StructuredError> getStructuredErrors() const;
-
-  /** \brief Add a semantic error message.
-   * \param value JSON Value location associated with the error
-   * \param message The error message.
-   * \return \c true if the error was successfully added, \c false if the
-   * Value offset exceeds the document size.
-   */
-  bool pushError(const Value& value, const String& message);
-
-  /** \brief Add a semantic error message with extra context.
-   * \param value JSON Value location associated with the error
-   * \param message The error message.
-   * \param extra Additional JSON Value location to contextualize the error
-   * \return \c true if the error was successfully added, \c false if either
-   * Value offset exceeds the document size.
-   */
-  bool pushError(const Value& value, const String& message, const Value& extra);
-
-  /** \brief Return whether there are any errors.
-   * \return \c true if there are no errors to report \c false if
-   * errors have occurred.
-   */
-  bool good() const;
-
-private:
-  enum TokenType {
-    tokenEndOfStream = 0,
-    tokenObjectBegin,
-    tokenObjectEnd,
-    tokenArrayBegin,
-    tokenArrayEnd,
-    tokenString,
-    tokenNumber,
-    tokenTrue,
-    tokenFalse,
-    tokenNull,
-    tokenArraySeparator,
-    tokenMemberSeparator,
-    tokenComment,
-    tokenError
-  };
-
-  class Token {
-  public:
-    TokenType type_;
-    Location start_;
-    Location end_;
-  };
-
-  class ErrorInfo {
-  public:
-    Token token_;
-    String message_;
-    Location extra_;
-  };
-
-  typedef std::deque<ErrorInfo> Errors;
-
-  bool readToken(Token& token);
-  void skipSpaces();
-  bool match(Location pattern, int patternLength);
-  bool readComment();
-  bool readCStyleComment();
-  bool readCppStyleComment();
-  bool readString();
-  void readNumber();
-  bool readValue();
-  bool readObject(Token& token);
-  bool readArray(Token& token);
-  bool decodeNumber(Token& token);
-  bool decodeNumber(Token& token, Value& decoded);
-  bool decodeString(Token& token);
-  bool decodeString(Token& token, String& decoded);
-  bool decodeDouble(Token& token);
-  bool decodeDouble(Token& token, Value& decoded);
-  bool decodeUnicodeCodePoint(Token& token,
-                              Location& current,
-                              Location end,
-                              unsigned int& unicode);
-  bool decodeUnicodeEscapeSequence(Token& token,
-                                   Location& current,
-                                   Location end,
-                                   unsigned int& unicode);
-  bool addError(const String& message, Token& token, Location extra = nullptr);
-  bool recoverFromError(TokenType skipUntilToken);
-  bool addErrorAndRecover(const String& message,
-                          Token& token,
-                          TokenType skipUntilToken);
-  void skipUntilSpace();
-  Value& currentValue();
-  Char getNextChar();
-  void
-  getLocationLineAndColumn(Location location, int& line, int& column) const;
-  String getLocationLineAndColumn(Location location) const;
-  void addComment(Location begin, Location end, CommentPlacement placement);
-  void skipCommentTokens(Token& token);
-
-  static bool containsNewLine(Location begin, Location end);
-  static String normalizeEOL(Location begin, Location end);
-
-  typedef std::stack<Value*> Nodes;
-  Nodes nodes_;
-  Errors errors_;
-  String document_;
-  Location begin_{};
-  Location end_{};
-  Location current_{};
-  Location lastValueEnd_{};
-  Value* lastValue_{};
-  String commentsBefore_;
-  Features features_;
-  bool collectComments_{};
-}; // Reader
-
-/** Interface for reading JSON from a char array.
- */
-class JSON_API CharReader {
-public:
-  virtual ~CharReader() = default;
-  /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
-   document.
-   * The document must be a UTF-8 encoded string containing the document to
-   read.
-   *
-   * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the
-   document to read.
-   * \param endDoc Pointer on the end of the UTF-8 encoded string of the
-   document to read.
-   *        Must be >= beginDoc.
-   * \param root [out] Contains the root value of the document if it was
-   *             successfully parsed.
-   * \param errs [out] Formatted error messages (if not NULL)
-   *        a user friendly string that lists errors in the parsed
-   * document.
-   * \return \c true if the document was successfully parsed, \c false if an
-   error occurred.
-   */
-  virtual bool parse(char const* beginDoc,
-                     char const* endDoc,
-                     Value* root,
-                     String* errs) = 0;
-
-  class JSON_API Factory {
-  public:
-    virtual ~Factory() = default;
-    /** \brief Allocate a CharReader via operator new().
-     * \throw std::exception if something goes wrong (e.g. invalid settings)
-     */
-    virtual CharReader* newCharReader() const = 0;
-  }; // Factory
-};   // CharReader
-
-/** \brief Build a CharReader implementation.
-
-Usage:
-\code
-  using namespace Json;
-  CharReaderBuilder builder;
-  builder["collectComments"] = false;
-  Value value;
-  String errs;
-  bool ok = parseFromStream(builder, std::cin, &value, &errs);
-\endcode
-*/
-class JSON_API CharReaderBuilder : public CharReader::Factory {
-public:
-  // Note: We use a Json::Value so that we can add data-members to this class
-  // without a major version bump.
-  /** Configuration of this builder.
-    These are case-sensitive.
-    Available settings (case-sensitive):
-    - `"collectComments": false or true`
-      - true to collect comment and allow writing them
-        back during serialization, false to discard comments.
-        This parameter is ignored if allowComments is false.
-    - `"allowComments": false or true`
-      - true if comments are allowed.
-    - `"strictRoot": false or true`
-      - true if root must be either an array or an object value
-    - `"allowDroppedNullPlaceholders": false or true`
-      - true if dropped null placeholders are allowed. (See
-    StreamWriterBuilder.)
-    - `"allowNumericKeys": false or true`
-      - true if numeric object keys are allowed.
-    - `"allowSingleQuotes": false or true`
-      - true if '' are allowed for strings (both keys and values)
-    - `"stackLimit": integer`
-      - Exceeding stackLimit (recursive depth of `readValue()`) will
-        cause an exception.
-      - This is a security issue (seg-faults caused by deeply nested JSON),
-        so the default is low.
-    - `"failIfExtra": false or true`
-      - If true, `parse()` returns false when extra non-whitespace trails
-        the JSON value in the input string.
-    - `"rejectDupKeys": false or true`
-      - If true, `parse()` returns false when a key is duplicated within an
-    object.
-    - `"allowSpecialFloats": false or true`
-      - If true, special float values (NaNs and infinities) are allowed
-        and their values are lossfree restorable.
-
-    You can examine 'settings_` yourself
-    to see the defaults. You can also write and read them just like any
-    JSON Value.
-    \sa setDefaults()
-    */
-  Json::Value settings_;
-
-  CharReaderBuilder();
-  ~CharReaderBuilder() override;
-
-  CharReader* newCharReader() const override;
-
-  /** \return true if 'settings' are legal and consistent;
-   *   otherwise, indicate bad settings via 'invalid'.
-   */
-  bool validate(Json::Value* invalid) const;
-
-  /** A simple way to update a specific setting.
-   */
-  Value& operator[](const String& key);
-
-  /** Called by ctor, but you can use this to reset settings_.
-   * \pre 'settings' != NULL (but Json::null is fine)
-   * \remark Defaults:
-   * \snippet src/lib_json/json_reader.cpp CharReaderBuilderDefaults
-   */
-  static void setDefaults(Json::Value* settings);
-  /** Same as old Features::strictMode().
-   * \pre 'settings' != NULL (but Json::null is fine)
-   * \remark Defaults:
-   * \snippet src/lib_json/json_reader.cpp CharReaderBuilderStrictMode
-   */
-  static void strictMode(Json::Value* settings);
-};
-
-/** Consume entire stream and use its begin/end.
- * Someday we might have a real StreamReader, but for now this
- * is convenient.
- */
-bool JSON_API parseFromStream(CharReader::Factory const&,
-                              IStream&,
-                              Value* root,
-                              std::string* errs);
-
-/** \brief Read from 'sin' into 'root'.
-
- Always keep comments from the input JSON.
-
- This can be used to read a file into a particular sub-object.
- For example:
- \code
- Json::Value root;
- cin >> root["dir"]["file"];
- cout << root;
- \endcode
- Result:
- \verbatim
- {
- "dir": {
-     "file": {
-     // The input stream JSON would be nested here.
-     }
- }
- }
- \endverbatim
- \throw std::exception on parse error.
- \see Json::operator<<()
-*/
-JSON_API IStream& operator>>(IStream&, Value&);
-
-} // namespace Json
-
-#pragma pack(pop)
-
-#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-#pragma warning(pop)
-#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-
-#endif // CPPTL_JSON_READER_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/reader.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/writer.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef JSON_WRITER_H_INCLUDED
-#define JSON_WRITER_H_INCLUDED
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include "value.h"
-#endif // if !defined(JSON_IS_AMALGAMATION)
-#include <ostream>
-#include <string>
-#include <vector>
-
-// Disable warning C4251: <data member>: <type> needs to have dll-interface to
-// be used by...
-#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) && defined(_MSC_VER)
-#pragma warning(push)
-#pragma warning(disable : 4251)
-#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-
-#pragma pack(push, 8)
-
-namespace Json {
-
-class Value;
-
-/**
-
-Usage:
-\code
-  using namespace Json;
-  void writeToStdout(StreamWriter::Factory const& factory, Value const& value) {
-    std::unique_ptr<StreamWriter> const writer(
-      factory.newStreamWriter());
-    writer->write(value, &std::cout);
-    std::cout << std::endl;  // add lf and flush
-  }
-\endcode
-*/
-class JSON_API StreamWriter {
-protected:
-  OStream* sout_; // not owned; will not delete
-public:
-  StreamWriter();
-  virtual ~StreamWriter();
-  /** Write Value into document as configured in sub-class.
-      Do not take ownership of sout, but maintain a reference during function.
-      \pre sout != NULL
-      \return zero on success (For now, we always return zero, so check the
-     stream instead.) \throw std::exception possibly, depending on configuration
-   */
-  virtual int write(Value const& root, OStream* sout) = 0;
-
-  /** \brief A simple abstract factory.
-   */
-  class JSON_API Factory {
-  public:
-    virtual ~Factory();
-    /** \brief Allocate a CharReader via operator new().
-     * \throw std::exception if something goes wrong (e.g. invalid settings)
-     */
-    virtual StreamWriter* newStreamWriter() const = 0;
-  }; // Factory
-};   // StreamWriter
-
-/** \brief Write into stringstream, then return string, for convenience.
- * A StreamWriter will be created from the factory, used, and then deleted.
- */
-String JSON_API writeString(StreamWriter::Factory const& factory,
-                            Value const& root);
-
-/** \brief Build a StreamWriter implementation.
-
-Usage:
-\code
-  using namespace Json;
-  Value value = ...;
-  StreamWriterBuilder builder;
-  builder["commentStyle"] = "None";
-  builder["indentation"] = "   ";  // or whatever you like
-  std::unique_ptr<Json::StreamWriter> writer(
-      builder.newStreamWriter());
-  writer->write(value, &std::cout);
-  std::cout << std::endl;  // add lf and flush
-\endcode
-*/
-class JSON_API StreamWriterBuilder : public StreamWriter::Factory {
-public:
-  // Note: We use a Json::Value so that we can add data-members to this class
-  // without a major version bump.
-  /** Configuration of this builder.
-    Available settings (case-sensitive):
-    - "commentStyle": "None" or "All"
-    - "indentation":  "<anything>".
-      - Setting this to an empty string also omits newline characters.
-    - "enableYAMLCompatibility": false or true
-      - slightly change the whitespace around colons
-    - "dropNullPlaceholders": false or true
-      - Drop the "null" string from the writer's output for nullValues.
-        Strictly speaking, this is not valid JSON. But when the output is being
-        fed to a browser's JavaScript, it makes for smaller output and the
-        browser can handle the output just fine.
-    - "useSpecialFloats": false or true
-      - If true, outputs non-finite floating point values in the following way:
-        NaN values as "NaN", positive infinity as "Infinity", and negative
-    infinity as "-Infinity".
-    - "precision": int
-      - Number of precision digits for formatting of real values.
-    - "precisionType": "significant"(default) or "decimal"
-      - Type of precision for formatting of real values.
-
-    You can examine 'settings_` yourself
-    to see the defaults. You can also write and read them just like any
-    JSON Value.
-    \sa setDefaults()
-    */
-  Json::Value settings_;
-
-  StreamWriterBuilder();
-  ~StreamWriterBuilder() override;
-
-  /**
-   * \throw std::exception if something goes wrong (e.g. invalid settings)
-   */
-  StreamWriter* newStreamWriter() const override;
-
-  /** \return true if 'settings' are legal and consistent;
-   *   otherwise, indicate bad settings via 'invalid'.
-   */
-  bool validate(Json::Value* invalid) const;
-  /** A simple way to update a specific setting.
-   */
-  Value& operator[](const String& key);
-
-  /** Called by ctor, but you can use this to reset settings_.
-   * \pre 'settings' != NULL (but Json::null is fine)
-   * \remark Defaults:
-   * \snippet src/lib_json/json_writer.cpp StreamWriterBuilderDefaults
-   */
-  static void setDefaults(Json::Value* settings);
-};
-
-/** \brief Abstract class for writers.
- * \deprecated Use StreamWriter. (And really, this is an implementation detail.)
- */
-class JSONCPP_DEPRECATED("Use StreamWriter instead") JSON_API Writer {
-public:
-  virtual ~Writer();
-
-  virtual String write(const Value& root) = 0;
-};
-
-/** \brief Outputs a Value in <a HREF="http://www.json.org">JSON</a> format
- *without formatting (not human friendly).
- *
- * The JSON document is written in a single line. It is not intended for 'human'
- *consumption,
- * but may be useful to support feature such as RPC where bandwidth is limited.
- * \sa Reader, Value
- * \deprecated Use StreamWriterBuilder.
- */
-#if defined(_MSC_VER)
-#pragma warning(push)
-#pragma warning(disable : 4996) // Deriving from deprecated class
-#endif
-class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API FastWriter
-    : public Writer {
-public:
-  FastWriter();
-  ~FastWriter() override = default;
-
-  void enableYAMLCompatibility();
-
-  /** \brief Drop the "null" string from the writer's output for nullValues.
-   * Strictly speaking, this is not valid JSON. But when the output is being
-   * fed to a browser's JavaScript, it makes for smaller output and the
-   * browser can handle the output just fine.
-   */
-  void dropNullPlaceholders();
-
-  void omitEndingLineFeed();
-
-public: // overridden from Writer
-  String write(const Value& root) override;
-
-private:
-  void writeValue(const Value& value);
-
-  String document_;
-  bool yamlCompatibilityEnabled_{false};
-  bool dropNullPlaceholders_{false};
-  bool omitEndingLineFeed_{false};
-};
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
-/** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a
- *human friendly way.
- *
- * The rules for line break and indent are as follow:
- * - Object value:
- *     - if empty then print {} without indent and line break
- *     - if not empty the print '{', line break & indent, print one value per
- *line
- *       and then unindent and line break and print '}'.
- * - Array value:
- *     - if empty then print [] without indent and line break
- *     - if the array contains no object value, empty array or some other value
- *types,
- *       and all the values fit on one lines, then print the array on a single
- *line.
- *     - otherwise, it the values do not fit on one line, or the array contains
- *       object or non empty array, then print one value per line.
- *
- * If the Value have comments then they are outputed according to their
- *#CommentPlacement.
- *
- * \sa Reader, Value, Value::setComment()
- * \deprecated Use StreamWriterBuilder.
- */
-#if defined(_MSC_VER)
-#pragma warning(push)
-#pragma warning(disable : 4996) // Deriving from deprecated class
-#endif
-class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API
-    StyledWriter : public Writer {
-public:
-  StyledWriter();
-  ~StyledWriter() override = default;
-
-public: // overridden from Writer
-  /** \brief Serialize a Value in <a HREF="http://www.json.org">JSON</a> format.
-   * \param root Value to serialize.
-   * \return String containing the JSON document that represents the root value.
-   */
-  String write(const Value& root) override;
-
-private:
-  void writeValue(const Value& value);
-  void writeArrayValue(const Value& value);
-  bool isMultilineArray(const Value& value);
-  void pushValue(const String& value);
-  void writeIndent();
-  void writeWithIndent(const String& value);
-  void indent();
-  void unindent();
-  void writeCommentBeforeValue(const Value& root);
-  void writeCommentAfterValueOnSameLine(const Value& root);
-  static bool hasCommentForValue(const Value& value);
-  static String normalizeEOL(const String& text);
-
-  typedef std::vector<String> ChildValues;
-
-  ChildValues childValues_;
-  String document_;
-  String indentString_;
-  unsigned int rightMargin_{74};
-  unsigned int indentSize_{3};
-  bool addChildValues_{false};
-};
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
-/** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a
- human friendly way,
-     to a stream rather than to a string.
- *
- * The rules for line break and indent are as follow:
- * - Object value:
- *     - if empty then print {} without indent and line break
- *     - if not empty the print '{', line break & indent, print one value per
- line
- *       and then unindent and line break and print '}'.
- * - Array value:
- *     - if empty then print [] without indent and line break
- *     - if the array contains no object value, empty array or some other value
- types,
- *       and all the values fit on one lines, then print the array on a single
- line.
- *     - otherwise, it the values do not fit on one line, or the array contains
- *       object or non empty array, then print one value per line.
- *
- * If the Value have comments then they are outputed according to their
- #CommentPlacement.
- *
- * \sa Reader, Value, Value::setComment()
- * \deprecated Use StreamWriterBuilder.
- */
-#if defined(_MSC_VER)
-#pragma warning(push)
-#pragma warning(disable : 4996) // Deriving from deprecated class
-#endif
-class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API
-    StyledStreamWriter {
-public:
-  /**
-   * \param indentation Each level will be indented by this amount extra.
-   */
-  StyledStreamWriter(String indentation = "\t");
-  ~StyledStreamWriter() = default;
-
-public:
-  /** \brief Serialize a Value in <a HREF="http://www.json.org">JSON</a> format.
-   * \param out Stream to write to. (Can be ostringstream, e.g.)
-   * \param root Value to serialize.
-   * \note There is no point in deriving from Writer, since write() should not
-   * return a value.
-   */
-  void write(OStream& out, const Value& root);
-
-private:
-  void writeValue(const Value& value);
-  void writeArrayValue(const Value& value);
-  bool isMultilineArray(const Value& value);
-  void pushValue(const String& value);
-  void writeIndent();
-  void writeWithIndent(const String& value);
-  void indent();
-  void unindent();
-  void writeCommentBeforeValue(const Value& root);
-  void writeCommentAfterValueOnSameLine(const Value& root);
-  static bool hasCommentForValue(const Value& value);
-  static String normalizeEOL(const String& text);
-
-  typedef std::vector<String> ChildValues;
-
-  ChildValues childValues_;
-  OStream* document_;
-  String indentString_;
-  unsigned int rightMargin_{74};
-  String indentation_;
-  bool addChildValues_ : 1;
-  bool indented_ : 1;
-};
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
-#if defined(JSON_HAS_INT64)
-String JSON_API valueToString(Int value);
-String JSON_API valueToString(UInt value);
-#endif // if defined(JSON_HAS_INT64)
-String JSON_API valueToString(LargestInt value);
-String JSON_API valueToString(LargestUInt value);
-String JSON_API
-valueToString(double value,
-              unsigned int precision = Value::defaultRealPrecision,
-              PrecisionType precisionType = PrecisionType::significantDigits);
-String JSON_API valueToString(bool value);
-String JSON_API valueToQuotedString(const char* value);
-
-/// \brief Output using the StyledStreamWriter.
-/// \see Json::operator>>()
-JSON_API OStream& operator<<(OStream&, const Value& root);
-
-} // namespace Json
-
-#pragma pack(pop)
-
-#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-#pragma warning(pop)
-#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
-
-#endif // JSON_WRITER_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/writer.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: include/json/assertions.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef CPPTL_JSON_ASSERTIONS_H_INCLUDED
-#define CPPTL_JSON_ASSERTIONS_H_INCLUDED
-
-#include <cstdlib>
-#include <sstream>
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include "config.h"
-#endif // if !defined(JSON_IS_AMALGAMATION)
-
-/** It should not be possible for a maliciously designed file to
- *  cause an abort() or seg-fault, so these macros are used only
- *  for pre-condition violations and internal logic errors.
- */
-#if JSON_USE_EXCEPTION
-
-// @todo <= add detail about condition in exception
-#define JSON_ASSERT(condition)                                                 \
-  {                                                                            \
-    if (!(condition)) {                                                        \
-      Json::throwLogicError("assert json failed");                             \
-    }                                                                          \
-  }
-
-#define JSON_FAIL_MESSAGE(message)                                             \
-  {                                                                            \
-    OStringStream oss;                                                         \
-    oss << message;                                                            \
-    Json::throwLogicError(oss.str());                                          \
-    abort();                                                                   \
-  }
-
-#else // JSON_USE_EXCEPTION
-
-#define JSON_ASSERT(condition) assert(condition)
-
-// The call to assert() will show the failure message in debug builds. In
-// release builds we abort, for a core-dump or debugger.
-#define JSON_FAIL_MESSAGE(message)                                             \
-  {                                                                            \
-    OStringStream oss;                                                         \
-    oss << message;                                                            \
-    assert(false && oss.str().c_str());                                        \
-    abort();                                                                   \
-  }
-
-#endif
-
-#define JSON_ASSERT_MESSAGE(condition, message)                                \
-  if (!(condition)) {                                                          \
-    JSON_FAIL_MESSAGE(message);                                                \
-  }
-
-#endif // CPPTL_JSON_ASSERTIONS_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: include/json/assertions.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-#endif //ifndef JSON_AMALGAMATED_H_INCLUDED
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/jsoncpp-1.8.4/jsoncpp.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5418 +0,0 @@
-/// Json-cpp amalgamated source (http://jsoncpp.sourceforge.net/).
-/// It is intended to be used with #include "json/json.h"
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: LICENSE
-// //////////////////////////////////////////////////////////////////////
-
-/*
-The JsonCpp library's source code, including accompanying documentation, 
-tests and demonstration applications, are licensed under the following
-conditions...
-
-Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all 
-jurisdictions which recognize such a disclaimer. In such jurisdictions, 
-this software is released into the Public Domain.
-
-In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
-2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
-The JsonCpp Authors, and is released under the terms of the MIT License (see below).
-
-In jurisdictions which recognize Public Domain property, the user of this 
-software may choose to accept it either as 1) Public Domain, 2) under the 
-conditions of the MIT License (see below), or 3) under the terms of dual 
-Public Domain/MIT License conditions described here, as they choose.
-
-The MIT License is about as close to Public Domain as a license can get, and is
-described in clear, concise terms at:
-
-   http://en.wikipedia.org/wiki/MIT_License
-   
-The full text of the MIT License follows:
-
-========================================================================
-Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use, copy,
-modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-========================================================================
-(END LICENSE TEXT)
-
-The MIT license is compatible with both the GPL and commercial
-software, affording one all of the rights of Public Domain with the
-minor nuisance of being required to keep the above copyright notice
-and license text in the source code. Note also that by accepting the
-Public Domain "license" you can re-license your copy using whatever
-license you like.
-
-*/
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: LICENSE
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-#include "json/json.h"
-
-#ifndef JSON_IS_AMALGAMATION
-#error "Compile with -I PATH_TO_JSON_DIRECTORY"
-#endif
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: src/lib_json/json_tool.h
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#ifndef LIB_JSONCPP_JSON_TOOL_H_INCLUDED
-#define LIB_JSONCPP_JSON_TOOL_H_INCLUDED
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include <json/config.h>
-#endif
-
-// Also support old flag NO_LOCALE_SUPPORT
-#ifdef NO_LOCALE_SUPPORT
-#define JSONCPP_NO_LOCALE_SUPPORT
-#endif
-
-#ifndef JSONCPP_NO_LOCALE_SUPPORT
-#include <clocale>
-#endif
-
-/* This header provides common string manipulation support, such as UTF-8,
- * portable conversion from/to string...
- *
- * It is an internal header that must not be exposed.
- */
-
-namespace Json {
-static inline char getDecimalPoint() {
-#ifdef JSONCPP_NO_LOCALE_SUPPORT
-  return '\0';
-#else
-  struct lconv* lc = localeconv();
-  return lc ? *(lc->decimal_point) : '\0';
-#endif
-}
-
-/// Converts a unicode code-point to UTF-8.
-static inline String codePointToUTF8(unsigned int cp) {
-  String result;
-
-  // based on description from http://en.wikipedia.org/wiki/UTF-8
-
-  if (cp <= 0x7f) {
-    result.resize(1);
-    result[0] = static_cast<char>(cp);
-  } else if (cp <= 0x7FF) {
-    result.resize(2);
-    result[1] = static_cast<char>(0x80 | (0x3f & cp));
-    result[0] = static_cast<char>(0xC0 | (0x1f & (cp >> 6)));
-  } else if (cp <= 0xFFFF) {
-    result.resize(3);
-    result[2] = static_cast<char>(0x80 | (0x3f & cp));
-    result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
-    result[0] = static_cast<char>(0xE0 | (0xf & (cp >> 12)));
-  } else if (cp <= 0x10FFFF) {
-    result.resize(4);
-    result[3] = static_cast<char>(0x80 | (0x3f & cp));
-    result[2] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
-    result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 12)));
-    result[0] = static_cast<char>(0xF0 | (0x7 & (cp >> 18)));
-  }
-
-  return result;
-}
-
-enum {
-  /// Constant that specify the size of the buffer that must be passed to
-  /// uintToString.
-  uintToStringBufferSize = 3 * sizeof(LargestUInt) + 1
-};
-
-// Defines a char buffer for use with uintToString().
-typedef char UIntToStringBuffer[uintToStringBufferSize];
-
-/** Converts an unsigned integer to string.
- * @param value Unsigned integer to convert to string
- * @param current Input/Output string buffer.
- *        Must have at least uintToStringBufferSize chars free.
- */
-static inline void uintToString(LargestUInt value, char*& current) {
-  *--current = 0;
-  do {
-    *--current = static_cast<char>(value % 10U + static_cast<unsigned>('0'));
-    value /= 10;
-  } while (value != 0);
-}
-
-/** Change ',' to '.' everywhere in buffer.
- *
- * We had a sophisticated way, but it did not work in WinCE.
- * @see https://github.com/open-source-parsers/jsoncpp/pull/9
- */
-template <typename Iter> Iter fixNumericLocale(Iter begin, Iter end) {
-  for (; begin != end; ++begin) {
-    if (*begin == ',') {
-      *begin = '.';
-    }
-  }
-  return begin;
-}
-
-template <typename Iter> void fixNumericLocaleInput(Iter begin, Iter end) {
-  char decimalPoint = getDecimalPoint();
-  if (decimalPoint == '\0' || decimalPoint == '.') {
-    return;
-  }
-  for (; begin != end; ++begin) {
-    if (*begin == '.') {
-      *begin = decimalPoint;
-    }
-  }
-}
-
-/**
- * Return iterator that would be the new end of the range [begin,end), if we
- * were to delete zeros in the end of string, but not the last zero before '.'.
- */
-template <typename Iter> Iter fixZerosInTheEnd(Iter begin, Iter end) {
-  for (; begin != end; --end) {
-    if (*(end - 1) != '0') {
-      return end;
-    }
-    // Don't delete the last zero before the decimal point.
-    if (begin != (end - 1) && *(end - 2) == '.') {
-      return end;
-    }
-  }
-  return end;
-}
-
-} // namespace Json
-
-#endif // LIB_JSONCPP_JSON_TOOL_H_INCLUDED
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: src/lib_json/json_tool.h
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: src/lib_json/json_reader.cpp
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2011 Baptiste Lepilleur and The JsonCpp Authors
-// Copyright (C) 2016 InfoTeCS JSC. All rights reserved.
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include "json_tool.h"
-#include <json/assertions.h>
-#include <json/reader.h>
-#include <json/value.h>
-#endif // if !defined(JSON_IS_AMALGAMATION)
-#include <cassert>
-#include <cstring>
-#include <istream>
-#include <limits>
-#include <memory>
-#include <set>
-#include <sstream>
-#include <utility>
-
-#include <cstdio>
-#if __cplusplus >= 201103L
-
-#if !defined(sscanf)
-#define sscanf std::sscanf
-#endif
-
-#endif //__cplusplus
-
-#if defined(_MSC_VER)
-#if !defined(_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES)
-#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
-#endif //_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
-#endif //_MSC_VER
-
-#if defined(_MSC_VER)
-// Disable warning about strdup being deprecated.
-#pragma warning(disable : 4996)
-#endif
-
-// Define JSONCPP_DEPRECATED_STACK_LIMIT as an appropriate integer at compile
-// time to change the stack limit
-#if !defined(JSONCPP_DEPRECATED_STACK_LIMIT)
-#define JSONCPP_DEPRECATED_STACK_LIMIT 1000
-#endif
-
-static size_t const stackLimit_g =
-    JSONCPP_DEPRECATED_STACK_LIMIT; // see readValue()
-
-namespace Json {
-
-#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520)
-typedef std::unique_ptr<CharReader> CharReaderPtr;
-#else
-typedef std::unique_ptr<CharReader> CharReaderPtr;
-#endif
-
-// Implementation of class Features
-// ////////////////////////////////
-
-Features::Features() = default;
-
-Features Features::all() { return {}; }
-
-Features Features::strictMode() {
-  Features features;
-  features.allowComments_ = false;
-  features.strictRoot_ = true;
-  features.allowDroppedNullPlaceholders_ = false;
-  features.allowNumericKeys_ = false;
-  return features;
-}
-
-// Implementation of class Reader
-// ////////////////////////////////
-
-bool Reader::containsNewLine(Reader::Location begin, Reader::Location end) {
-  for (; begin < end; ++begin)
-    if (*begin == '\n' || *begin == '\r')
-      return true;
-  return false;
-}
-
-// Class Reader
-// //////////////////////////////////////////////////////////////////
-
-Reader::Reader()
-    : errors_(), document_(), commentsBefore_(), features_(Features::all()) {}
-
-Reader::Reader(const Features& features)
-    : errors_(), document_(), begin_(), end_(), current_(), lastValueEnd_(),
-      lastValue_(), commentsBefore_(), features_(features), collectComments_() {
-}
-
-bool Reader::parse(const std::string& document,
-                   Value& root,
-                   bool collectComments) {
-  document_.assign(document.begin(), document.end());
-  const char* begin = document_.c_str();
-  const char* end = begin + document_.length();
-  return parse(begin, end, root, collectComments);
-}
-
-bool Reader::parse(std::istream& is, Value& root, bool collectComments) {
-  // std::istream_iterator<char> begin(is);
-  // std::istream_iterator<char> end;
-  // Those would allow streamed input from a file, if parse() were a
-  // template function.
-
-  // Since String is reference-counted, this at least does not
-  // create an extra copy.
-  String doc;
-  std::getline(is, doc, (char)EOF);
-  return parse(doc.data(), doc.data() + doc.size(), root, collectComments);
-}
-
-bool Reader::parse(const char* beginDoc,
-                   const char* endDoc,
-                   Value& root,
-                   bool collectComments) {
-  if (!features_.allowComments_) {
-    collectComments = false;
-  }
-
-  begin_ = beginDoc;
-  end_ = endDoc;
-  collectComments_ = collectComments;
-  current_ = begin_;
-  lastValueEnd_ = nullptr;
-  lastValue_ = nullptr;
-  commentsBefore_.clear();
-  errors_.clear();
-  while (!nodes_.empty())
-    nodes_.pop();
-  nodes_.push(&root);
-
-  bool successful = readValue();
-  Token token;
-  skipCommentTokens(token);
-  if (collectComments_ && !commentsBefore_.empty())
-    root.setComment(commentsBefore_, commentAfter);
-  if (features_.strictRoot_) {
-    if (!root.isArray() && !root.isObject()) {
-      // Set error location to start of doc, ideally should be first token found
-      // in doc
-      token.type_ = tokenError;
-      token.start_ = beginDoc;
-      token.end_ = endDoc;
-      addError(
-          "A valid JSON document must be either an array or an object value.",
-          token);
-      return false;
-    }
-  }
-  return successful;
-}
-
-bool Reader::readValue() {
-  // readValue() may call itself only if it calls readObject() or ReadArray().
-  // These methods execute nodes_.push() just before and nodes_.pop)() just
-  // after calling readValue(). parse() executes one nodes_.push(), so > instead
-  // of >=.
-  if (nodes_.size() > stackLimit_g)
-    throwRuntimeError("Exceeded stackLimit in readValue().");
-
-  Token token;
-  skipCommentTokens(token);
-  bool successful = true;
-
-  if (collectComments_ && !commentsBefore_.empty()) {
-    currentValue().setComment(commentsBefore_, commentBefore);
-    commentsBefore_.clear();
-  }
-
-  switch (token.type_) {
-  case tokenObjectBegin:
-    successful = readObject(token);
-    currentValue().setOffsetLimit(current_ - begin_);
-    break;
-  case tokenArrayBegin:
-    successful = readArray(token);
-    currentValue().setOffsetLimit(current_ - begin_);
-    break;
-  case tokenNumber:
-    successful = decodeNumber(token);
-    break;
-  case tokenString:
-    successful = decodeString(token);
-    break;
-  case tokenTrue: {
-    Value v(true);
-    currentValue().swapPayload(v);
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-  } break;
-  case tokenFalse: {
-    Value v(false);
-    currentValue().swapPayload(v);
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-  } break;
-  case tokenNull: {
-    Value v;
-    currentValue().swapPayload(v);
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-  } break;
-  case tokenArraySeparator:
-  case tokenObjectEnd:
-  case tokenArrayEnd:
-    if (features_.allowDroppedNullPlaceholders_) {
-      // "Un-read" the current token and mark the current value as a null
-      // token.
-      current_--;
-      Value v;
-      currentValue().swapPayload(v);
-      currentValue().setOffsetStart(current_ - begin_ - 1);
-      currentValue().setOffsetLimit(current_ - begin_);
-      break;
-    } // Else, fall through...
-  default:
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-    return addError("Syntax error: value, object or array expected.", token);
-  }
-
-  if (collectComments_) {
-    lastValueEnd_ = current_;
-    lastValue_ = &currentValue();
-  }
-
-  return successful;
-}
-
-void Reader::skipCommentTokens(Token& token) {
-  if (features_.allowComments_) {
-    do {
-      readToken(token);
-    } while (token.type_ == tokenComment);
-  } else {
-    readToken(token);
-  }
-}
-
-bool Reader::readToken(Token& token) {
-  skipSpaces();
-  token.start_ = current_;
-  Char c = getNextChar();
-  bool ok = true;
-  switch (c) {
-  case '{':
-    token.type_ = tokenObjectBegin;
-    break;
-  case '}':
-    token.type_ = tokenObjectEnd;
-    break;
-  case '[':
-    token.type_ = tokenArrayBegin;
-    break;
-  case ']':
-    token.type_ = tokenArrayEnd;
-    break;
-  case '"':
-    token.type_ = tokenString;
-    ok = readString();
-    break;
-  case '/':
-    token.type_ = tokenComment;
-    ok = readComment();
-    break;
-  case '0':
-  case '1':
-  case '2':
-  case '3':
-  case '4':
-  case '5':
-  case '6':
-  case '7':
-  case '8':
-  case '9':
-  case '-':
-    token.type_ = tokenNumber;
-    readNumber();
-    break;
-  case 't':
-    token.type_ = tokenTrue;
-    ok = match("rue", 3);
-    break;
-  case 'f':
-    token.type_ = tokenFalse;
-    ok = match("alse", 4);
-    break;
-  case 'n':
-    token.type_ = tokenNull;
-    ok = match("ull", 3);
-    break;
-  case ',':
-    token.type_ = tokenArraySeparator;
-    break;
-  case ':':
-    token.type_ = tokenMemberSeparator;
-    break;
-  case 0:
-    token.type_ = tokenEndOfStream;
-    break;
-  default:
-    ok = false;
-    break;
-  }
-  if (!ok)
-    token.type_ = tokenError;
-  token.end_ = current_;
-  return true;
-}
-
-void Reader::skipSpaces() {
-  while (current_ != end_) {
-    Char c = *current_;
-    if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
-      ++current_;
-    else
-      break;
-  }
-}
-
-bool Reader::match(Location pattern, int patternLength) {
-  if (end_ - current_ < patternLength)
-    return false;
-  int index = patternLength;
-  while (index--)
-    if (current_[index] != pattern[index])
-      return false;
-  current_ += patternLength;
-  return true;
-}
-
-bool Reader::readComment() {
-  Location commentBegin = current_ - 1;
-  Char c = getNextChar();
-  bool successful = false;
-  if (c == '*')
-    successful = readCStyleComment();
-  else if (c == '/')
-    successful = readCppStyleComment();
-  if (!successful)
-    return false;
-
-  if (collectComments_) {
-    CommentPlacement placement = commentBefore;
-    if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) {
-      if (c != '*' || !containsNewLine(commentBegin, current_))
-        placement = commentAfterOnSameLine;
-    }
-
-    addComment(commentBegin, current_, placement);
-  }
-  return true;
-}
-
-String Reader::normalizeEOL(Reader::Location begin, Reader::Location end) {
-  String normalized;
-  normalized.reserve(static_cast<size_t>(end - begin));
-  Reader::Location current = begin;
-  while (current != end) {
-    char c = *current++;
-    if (c == '\r') {
-      if (current != end && *current == '\n')
-        // convert dos EOL
-        ++current;
-      // convert Mac EOL
-      normalized += '\n';
-    } else {
-      normalized += c;
-    }
-  }
-  return normalized;
-}
-
-void Reader::addComment(Location begin,
-                        Location end,
-                        CommentPlacement placement) {
-  assert(collectComments_);
-  const String& normalized = normalizeEOL(begin, end);
-  if (placement == commentAfterOnSameLine) {
-    assert(lastValue_ != nullptr);
-    lastValue_->setComment(normalized, placement);
-  } else {
-    commentsBefore_ += normalized;
-  }
-}
-
-bool Reader::readCStyleComment() {
-  while ((current_ + 1) < end_) {
-    Char c = getNextChar();
-    if (c == '*' && *current_ == '/')
-      break;
-  }
-  return getNextChar() == '/';
-}
-
-bool Reader::readCppStyleComment() {
-  while (current_ != end_) {
-    Char c = getNextChar();
-    if (c == '\n')
-      break;
-    if (c == '\r') {
-      // Consume DOS EOL. It will be normalized in addComment.
-      if (current_ != end_ && *current_ == '\n')
-        getNextChar();
-      // Break on Moc OS 9 EOL.
-      break;
-    }
-  }
-  return true;
-}
-
-void Reader::readNumber() {
-  const char* p = current_;
-  char c = '0'; // stopgap for already consumed character
-  // integral part
-  while (c >= '0' && c <= '9')
-    c = (current_ = p) < end_ ? *p++ : '\0';
-  // fractional part
-  if (c == '.') {
-    c = (current_ = p) < end_ ? *p++ : '\0';
-    while (c >= '0' && c <= '9')
-      c = (current_ = p) < end_ ? *p++ : '\0';
-  }
-  // exponential part
-  if (c == 'e' || c == 'E') {
-    c = (current_ = p) < end_ ? *p++ : '\0';
-    if (c == '+' || c == '-')
-      c = (current_ = p) < end_ ? *p++ : '\0';
-    while (c >= '0' && c <= '9')
-      c = (current_ = p) < end_ ? *p++ : '\0';
-  }
-}
-
-bool Reader::readString() {
-  Char c = '\0';
-  while (current_ != end_) {
-    c = getNextChar();
-    if (c == '\\')
-      getNextChar();
-    else if (c == '"')
-      break;
-  }
-  return c == '"';
-}
-
-bool Reader::readObject(Token& token) {
-  Token tokenName;
-  String name;
-  Value init(objectValue);
-  currentValue().swapPayload(init);
-  currentValue().setOffsetStart(token.start_ - begin_);
-  while (readToken(tokenName)) {
-    bool initialTokenOk = true;
-    while (tokenName.type_ == tokenComment && initialTokenOk)
-      initialTokenOk = readToken(tokenName);
-    if (!initialTokenOk)
-      break;
-    if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object
-      return true;
-    name.clear();
-    if (tokenName.type_ == tokenString) {
-      if (!decodeString(tokenName, name))
-        return recoverFromError(tokenObjectEnd);
-    } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
-      Value numberName;
-      if (!decodeNumber(tokenName, numberName))
-        return recoverFromError(tokenObjectEnd);
-      name = String(numberName.asCString());
-    } else {
-      break;
-    }
-
-    Token colon;
-    if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
-      return addErrorAndRecover("Missing ':' after object member name", colon,
-                                tokenObjectEnd);
-    }
-    Value& value = currentValue()[name];
-    nodes_.push(&value);
-    bool ok = readValue();
-    nodes_.pop();
-    if (!ok) // error already set
-      return recoverFromError(tokenObjectEnd);
-
-    Token comma;
-    if (!readToken(comma) ||
-        (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator &&
-         comma.type_ != tokenComment)) {
-      return addErrorAndRecover("Missing ',' or '}' in object declaration",
-                                comma, tokenObjectEnd);
-    }
-    bool finalizeTokenOk = true;
-    while (comma.type_ == tokenComment && finalizeTokenOk)
-      finalizeTokenOk = readToken(comma);
-    if (comma.type_ == tokenObjectEnd)
-      return true;
-  }
-  return addErrorAndRecover("Missing '}' or object member name", tokenName,
-                            tokenObjectEnd);
-}
-
-bool Reader::readArray(Token& token) {
-  Value init(arrayValue);
-  currentValue().swapPayload(init);
-  currentValue().setOffsetStart(token.start_ - begin_);
-  skipSpaces();
-  if (current_ != end_ && *current_ == ']') // empty array
-  {
-    Token endArray;
-    readToken(endArray);
-    return true;
-  }
-  int index = 0;
-  for (;;) {
-    Value& value = currentValue()[index++];
-    nodes_.push(&value);
-    bool ok = readValue();
-    nodes_.pop();
-    if (!ok) // error already set
-      return recoverFromError(tokenArrayEnd);
-
-    Token currentToken;
-    // Accept Comment after last item in the array.
-    ok = readToken(currentToken);
-    while (currentToken.type_ == tokenComment && ok) {
-      ok = readToken(currentToken);
-    }
-    bool badTokenType = (currentToken.type_ != tokenArraySeparator &&
-                         currentToken.type_ != tokenArrayEnd);
-    if (!ok || badTokenType) {
-      return addErrorAndRecover("Missing ',' or ']' in array declaration",
-                                currentToken, tokenArrayEnd);
-    }
-    if (currentToken.type_ == tokenArrayEnd)
-      break;
-  }
-  return true;
-}
-
-bool Reader::decodeNumber(Token& token) {
-  Value decoded;
-  if (!decodeNumber(token, decoded))
-    return false;
-  currentValue().swapPayload(decoded);
-  currentValue().setOffsetStart(token.start_ - begin_);
-  currentValue().setOffsetLimit(token.end_ - begin_);
-  return true;
-}
-
-bool Reader::decodeNumber(Token& token, Value& decoded) {
-  // Attempts to parse the number as an integer. If the number is
-  // larger than the maximum supported value of an integer then
-  // we decode the number as a double.
-  Location current = token.start_;
-  bool isNegative = *current == '-';
-  if (isNegative)
-    ++current;
-  // TODO: Help the compiler do the div and mod at compile time or get rid of
-  // them.
-  Value::LargestUInt maxIntegerValue =
-      isNegative ? Value::LargestUInt(Value::maxLargestInt) + 1
-                 : Value::maxLargestUInt;
-  Value::LargestUInt threshold = maxIntegerValue / 10;
-  Value::LargestUInt value = 0;
-  while (current < token.end_) {
-    Char c = *current++;
-    if (c < '0' || c > '9')
-      return decodeDouble(token, decoded);
-    auto digit(static_cast<Value::UInt>(c - '0'));
-    if (value >= threshold) {
-      // We've hit or exceeded the max value divided by 10 (rounded down). If
-      // a) we've only just touched the limit, b) this is the last digit, and
-      // c) it's small enough to fit in that rounding delta, we're okay.
-      // Otherwise treat this number as a double to avoid overflow.
-      if (value > threshold || current != token.end_ ||
-          digit > maxIntegerValue % 10) {
-        return decodeDouble(token, decoded);
-      }
-    }
-    value = value * 10 + digit;
-  }
-  if (isNegative && value == maxIntegerValue)
-    decoded = Value::minLargestInt;
-  else if (isNegative)
-    decoded = -Value::LargestInt(value);
-  else if (value <= Value::LargestUInt(Value::maxInt))
-    decoded = Value::LargestInt(value);
-  else
-    decoded = value;
-  return true;
-}
-
-bool Reader::decodeDouble(Token& token) {
-  Value decoded;
-  if (!decodeDouble(token, decoded))
-    return false;
-  currentValue().swapPayload(decoded);
-  currentValue().setOffsetStart(token.start_ - begin_);
-  currentValue().setOffsetLimit(token.end_ - begin_);
-  return true;
-}
-
-bool Reader::decodeDouble(Token& token, Value& decoded) {
-  double value = 0;
-  String buffer(token.start_, token.end_);
-  IStringStream is(buffer);
-  if (!(is >> value))
-    return addError(
-        "'" + String(token.start_, token.end_) + "' is not a number.", token);
-  decoded = value;
-  return true;
-}
-
-bool Reader::decodeString(Token& token) {
-  String decoded_string;
-  if (!decodeString(token, decoded_string))
-    return false;
-  Value decoded(decoded_string);
-  currentValue().swapPayload(decoded);
-  currentValue().setOffsetStart(token.start_ - begin_);
-  currentValue().setOffsetLimit(token.end_ - begin_);
-  return true;
-}
-
-bool Reader::decodeString(Token& token, String& decoded) {
-  decoded.reserve(static_cast<size_t>(token.end_ - token.start_ - 2));
-  Location current = token.start_ + 1; // skip '"'
-  Location end = token.end_ - 1;       // do not include '"'
-  while (current != end) {
-    Char c = *current++;
-    if (c == '"')
-      break;
-    else if (c == '\\') {
-      if (current == end)
-        return addError("Empty escape sequence in string", token, current);
-      Char escape = *current++;
-      switch (escape) {
-      case '"':
-        decoded += '"';
-        break;
-      case '/':
-        decoded += '/';
-        break;
-      case '\\':
-        decoded += '\\';
-        break;
-      case 'b':
-        decoded += '\b';
-        break;
-      case 'f':
-        decoded += '\f';
-        break;
-      case 'n':
-        decoded += '\n';
-        break;
-      case 'r':
-        decoded += '\r';
-        break;
-      case 't':
-        decoded += '\t';
-        break;
-      case 'u': {
-        unsigned int unicode;
-        if (!decodeUnicodeCodePoint(token, current, end, unicode))
-          return false;
-        decoded += codePointToUTF8(unicode);
-      } break;
-      default:
-        return addError("Bad escape sequence in string", token, current);
-      }
-    } else {
-      decoded += c;
-    }
-  }
-  return true;
-}
-
-bool Reader::decodeUnicodeCodePoint(Token& token,
-                                    Location& current,
-                                    Location end,
-                                    unsigned int& unicode) {
-
-  if (!decodeUnicodeEscapeSequence(token, current, end, unicode))
-    return false;
-  if (unicode >= 0xD800 && unicode <= 0xDBFF) {
-    // surrogate pairs
-    if (end - current < 6)
-      return addError(
-          "additional six characters expected to parse unicode surrogate pair.",
-          token, current);
-    if (*(current++) == '\\' && *(current++) == 'u') {
-      unsigned int surrogatePair;
-      if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) {
-        unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF);
-      } else
-        return false;
-    } else
-      return addError("expecting another \\u token to begin the second half of "
-                      "a unicode surrogate pair",
-                      token, current);
-  }
-  return true;
-}
-
-bool Reader::decodeUnicodeEscapeSequence(Token& token,
-                                         Location& current,
-                                         Location end,
-                                         unsigned int& ret_unicode) {
-  if (end - current < 4)
-    return addError(
-        "Bad unicode escape sequence in string: four digits expected.", token,
-        current);
-  int unicode = 0;
-  for (int index = 0; index < 4; ++index) {
-    Char c = *current++;
-    unicode *= 16;
-    if (c >= '0' && c <= '9')
-      unicode += c - '0';
-    else if (c >= 'a' && c <= 'f')
-      unicode += c - 'a' + 10;
-    else if (c >= 'A' && c <= 'F')
-      unicode += c - 'A' + 10;
-    else
-      return addError(
-          "Bad unicode escape sequence in string: hexadecimal digit expected.",
-          token, current);
-  }
-  ret_unicode = static_cast<unsigned int>(unicode);
-  return true;
-}
-
-bool Reader::addError(const String& message, Token& token, Location extra) {
-  ErrorInfo info;
-  info.token_ = token;
-  info.message_ = message;
-  info.extra_ = extra;
-  errors_.push_back(info);
-  return false;
-}
-
-bool Reader::recoverFromError(TokenType skipUntilToken) {
-  size_t const errorCount = errors_.size();
-  Token skip;
-  for (;;) {
-    if (!readToken(skip))
-      errors_.resize(errorCount); // discard errors caused by recovery
-    if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream)
-      break;
-  }
-  errors_.resize(errorCount);
-  return false;
-}
-
-bool Reader::addErrorAndRecover(const String& message,
-                                Token& token,
-                                TokenType skipUntilToken) {
-  addError(message, token);
-  return recoverFromError(skipUntilToken);
-}
-
-Value& Reader::currentValue() { return *(nodes_.top()); }
-
-Reader::Char Reader::getNextChar() {
-  if (current_ == end_)
-    return 0;
-  return *current_++;
-}
-
-void Reader::getLocationLineAndColumn(Location location,
-                                      int& line,
-                                      int& column) const {
-  Location current = begin_;
-  Location lastLineStart = current;
-  line = 0;
-  while (current < location && current != end_) {
-    Char c = *current++;
-    if (c == '\r') {
-      if (*current == '\n')
-        ++current;
-      lastLineStart = current;
-      ++line;
-    } else if (c == '\n') {
-      lastLineStart = current;
-      ++line;
-    }
-  }
-  // column & line start at 1
-  column = int(location - lastLineStart) + 1;
-  ++line;
-}
-
-String Reader::getLocationLineAndColumn(Location location) const {
-  int line, column;
-  getLocationLineAndColumn(location, line, column);
-  char buffer[18 + 16 + 16 + 1];
-  jsoncpp_snprintf(buffer, sizeof(buffer), "Line %d, Column %d", line, column);
-  return buffer;
-}
-
-// Deprecated. Preserved for backward compatibility
-String Reader::getFormatedErrorMessages() const {
-  return getFormattedErrorMessages();
-}
-
-String Reader::getFormattedErrorMessages() const {
-  String formattedMessage;
-  for (const auto& error : errors_) {
-    formattedMessage +=
-        "* " + getLocationLineAndColumn(error.token_.start_) + "\n";
-    formattedMessage += "  " + error.message_ + "\n";
-    if (error.extra_)
-      formattedMessage +=
-          "See " + getLocationLineAndColumn(error.extra_) + " for detail.\n";
-  }
-  return formattedMessage;
-}
-
-std::vector<Reader::StructuredError> Reader::getStructuredErrors() const {
-  std::vector<Reader::StructuredError> allErrors;
-  for (const auto& error : errors_) {
-    Reader::StructuredError structured;
-    structured.offset_start = error.token_.start_ - begin_;
-    structured.offset_limit = error.token_.end_ - begin_;
-    structured.message = error.message_;
-    allErrors.push_back(structured);
-  }
-  return allErrors;
-}
-
-bool Reader::pushError(const Value& value, const String& message) {
-  ptrdiff_t const length = end_ - begin_;
-  if (value.getOffsetStart() > length || value.getOffsetLimit() > length)
-    return false;
-  Token token;
-  token.type_ = tokenError;
-  token.start_ = begin_ + value.getOffsetStart();
-  token.end_ = end_ + value.getOffsetLimit();
-  ErrorInfo info;
-  info.token_ = token;
-  info.message_ = message;
-  info.extra_ = nullptr;
-  errors_.push_back(info);
-  return true;
-}
-
-bool Reader::pushError(const Value& value,
-                       const String& message,
-                       const Value& extra) {
-  ptrdiff_t const length = end_ - begin_;
-  if (value.getOffsetStart() > length || value.getOffsetLimit() > length ||
-      extra.getOffsetLimit() > length)
-    return false;
-  Token token;
-  token.type_ = tokenError;
-  token.start_ = begin_ + value.getOffsetStart();
-  token.end_ = begin_ + value.getOffsetLimit();
-  ErrorInfo info;
-  info.token_ = token;
-  info.message_ = message;
-  info.extra_ = begin_ + extra.getOffsetStart();
-  errors_.push_back(info);
-  return true;
-}
-
-bool Reader::good() const { return errors_.empty(); }
-
-// exact copy of Features
-class OurFeatures {
-public:
-  static OurFeatures all();
-  bool allowComments_;
-  bool strictRoot_;
-  bool allowDroppedNullPlaceholders_;
-  bool allowNumericKeys_;
-  bool allowSingleQuotes_;
-  bool failIfExtra_;
-  bool rejectDupKeys_;
-  bool allowSpecialFloats_;
-  size_t stackLimit_;
-}; // OurFeatures
-
-// exact copy of Implementation of class Features
-// ////////////////////////////////
-
-OurFeatures OurFeatures::all() { return {}; }
-
-// Implementation of class Reader
-// ////////////////////////////////
-
-// exact copy of Reader, renamed to OurReader
-class OurReader {
-public:
-  typedef char Char;
-  typedef const Char* Location;
-  struct StructuredError {
-    ptrdiff_t offset_start;
-    ptrdiff_t offset_limit;
-    String message;
-  };
-
-  OurReader(OurFeatures const& features);
-  bool parse(const char* beginDoc,
-             const char* endDoc,
-             Value& root,
-             bool collectComments = true);
-  String getFormattedErrorMessages() const;
-  std::vector<StructuredError> getStructuredErrors() const;
-  bool pushError(const Value& value, const String& message);
-  bool pushError(const Value& value, const String& message, const Value& extra);
-  bool good() const;
-
-private:
-  OurReader(OurReader const&);      // no impl
-  void operator=(OurReader const&); // no impl
-
-  enum TokenType {
-    tokenEndOfStream = 0,
-    tokenObjectBegin,
-    tokenObjectEnd,
-    tokenArrayBegin,
-    tokenArrayEnd,
-    tokenString,
-    tokenNumber,
-    tokenTrue,
-    tokenFalse,
-    tokenNull,
-    tokenNaN,
-    tokenPosInf,
-    tokenNegInf,
-    tokenArraySeparator,
-    tokenMemberSeparator,
-    tokenComment,
-    tokenError
-  };
-
-  class Token {
-  public:
-    TokenType type_;
-    Location start_;
-    Location end_;
-  };
-
-  class ErrorInfo {
-  public:
-    Token token_;
-    String message_;
-    Location extra_;
-  };
-
-  typedef std::deque<ErrorInfo> Errors;
-
-  bool readToken(Token& token);
-  void skipSpaces();
-  bool match(Location pattern, int patternLength);
-  bool readComment();
-  bool readCStyleComment();
-  bool readCppStyleComment();
-  bool readString();
-  bool readStringSingleQuote();
-  bool readNumber(bool checkInf);
-  bool readValue();
-  bool readObject(Token& token);
-  bool readArray(Token& token);
-  bool decodeNumber(Token& token);
-  bool decodeNumber(Token& token, Value& decoded);
-  bool decodeString(Token& token);
-  bool decodeString(Token& token, String& decoded);
-  bool decodeDouble(Token& token);
-  bool decodeDouble(Token& token, Value& decoded);
-  bool decodeUnicodeCodePoint(Token& token,
-                              Location& current,
-                              Location end,
-                              unsigned int& unicode);
-  bool decodeUnicodeEscapeSequence(Token& token,
-                                   Location& current,
-                                   Location end,
-                                   unsigned int& unicode);
-  bool addError(const String& message, Token& token, Location extra = nullptr);
-  bool recoverFromError(TokenType skipUntilToken);
-  bool addErrorAndRecover(const String& message,
-                          Token& token,
-                          TokenType skipUntilToken);
-  void skipUntilSpace();
-  Value& currentValue();
-  Char getNextChar();
-  void
-  getLocationLineAndColumn(Location location, int& line, int& column) const;
-  String getLocationLineAndColumn(Location location) const;
-  void addComment(Location begin, Location end, CommentPlacement placement);
-  void skipCommentTokens(Token& token);
-
-  static String normalizeEOL(Location begin, Location end);
-  static bool containsNewLine(Location begin, Location end);
-
-  typedef std::stack<Value*> Nodes;
-  Nodes nodes_;
-  Errors errors_;
-  String document_;
-  Location begin_;
-  Location end_;
-  Location current_;
-  Location lastValueEnd_;
-  Value* lastValue_;
-  String commentsBefore_;
-
-  OurFeatures const features_;
-  bool collectComments_;
-}; // OurReader
-
-// complete copy of Read impl, for OurReader
-
-bool OurReader::containsNewLine(OurReader::Location begin,
-                                OurReader::Location end) {
-  for (; begin < end; ++begin)
-    if (*begin == '\n' || *begin == '\r')
-      return true;
-  return false;
-}
-
-OurReader::OurReader(OurFeatures const& features)
-    : errors_(), document_(), begin_(), end_(), current_(), lastValueEnd_(),
-      lastValue_(), commentsBefore_(), features_(features), collectComments_() {
-}
-
-bool OurReader::parse(const char* beginDoc,
-                      const char* endDoc,
-                      Value& root,
-                      bool collectComments) {
-  if (!features_.allowComments_) {
-    collectComments = false;
-  }
-
-  begin_ = beginDoc;
-  end_ = endDoc;
-  collectComments_ = collectComments;
-  current_ = begin_;
-  lastValueEnd_ = nullptr;
-  lastValue_ = nullptr;
-  commentsBefore_.clear();
-  errors_.clear();
-  while (!nodes_.empty())
-    nodes_.pop();
-  nodes_.push(&root);
-
-  bool successful = readValue();
-  Token token;
-  skipCommentTokens(token);
-  if (features_.failIfExtra_) {
-    if ((features_.strictRoot_ || token.type_ != tokenError) &&
-        token.type_ != tokenEndOfStream) {
-      addError("Extra non-whitespace after JSON value.", token);
-      return false;
-    }
-  }
-  if (collectComments_ && !commentsBefore_.empty())
-    root.setComment(commentsBefore_, commentAfter);
-  if (features_.strictRoot_) {
-    if (!root.isArray() && !root.isObject()) {
-      // Set error location to start of doc, ideally should be first token found
-      // in doc
-      token.type_ = tokenError;
-      token.start_ = beginDoc;
-      token.end_ = endDoc;
-      addError(
-          "A valid JSON document must be either an array or an object value.",
-          token);
-      return false;
-    }
-  }
-  return successful;
-}
-
-bool OurReader::readValue() {
-  //  To preserve the old behaviour we cast size_t to int.
-  if (nodes_.size() > features_.stackLimit_)
-    throwRuntimeError("Exceeded stackLimit in readValue().");
-  Token token;
-  skipCommentTokens(token);
-  bool successful = true;
-
-  if (collectComments_ && !commentsBefore_.empty()) {
-    currentValue().setComment(commentsBefore_, commentBefore);
-    commentsBefore_.clear();
-  }
-
-  switch (token.type_) {
-  case tokenObjectBegin:
-    successful = readObject(token);
-    currentValue().setOffsetLimit(current_ - begin_);
-    break;
-  case tokenArrayBegin:
-    successful = readArray(token);
-    currentValue().setOffsetLimit(current_ - begin_);
-    break;
-  case tokenNumber:
-    successful = decodeNumber(token);
-    break;
-  case tokenString:
-    successful = decodeString(token);
-    break;
-  case tokenTrue: {
-    Value v(true);
-    currentValue().swapPayload(v);
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-  } break;
-  case tokenFalse: {
-    Value v(false);
-    currentValue().swapPayload(v);
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-  } break;
-  case tokenNull: {
-    Value v;
-    currentValue().swapPayload(v);
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-  } break;
-  case tokenNaN: {
-    Value v(std::numeric_limits<double>::quiet_NaN());
-    currentValue().swapPayload(v);
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-  } break;
-  case tokenPosInf: {
-    Value v(std::numeric_limits<double>::infinity());
-    currentValue().swapPayload(v);
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-  } break;
-  case tokenNegInf: {
-    Value v(-std::numeric_limits<double>::infinity());
-    currentValue().swapPayload(v);
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-  } break;
-  case tokenArraySeparator:
-  case tokenObjectEnd:
-  case tokenArrayEnd:
-    if (features_.allowDroppedNullPlaceholders_) {
-      // "Un-read" the current token and mark the current value as a null
-      // token.
-      current_--;
-      Value v;
-      currentValue().swapPayload(v);
-      currentValue().setOffsetStart(current_ - begin_ - 1);
-      currentValue().setOffsetLimit(current_ - begin_);
-      break;
-    } // else, fall through ...
-  default:
-    currentValue().setOffsetStart(token.start_ - begin_);
-    currentValue().setOffsetLimit(token.end_ - begin_);
-    return addError("Syntax error: value, object or array expected.", token);
-  }
-
-  if (collectComments_) {
-    lastValueEnd_ = current_;
-    lastValue_ = &currentValue();
-  }
-
-  return successful;
-}
-
-void OurReader::skipCommentTokens(Token& token) {
-  if (features_.allowComments_) {
-    do {
-      readToken(token);
-    } while (token.type_ == tokenComment);
-  } else {
-    readToken(token);
-  }
-}
-
-bool OurReader::readToken(Token& token) {
-  skipSpaces();
-  token.start_ = current_;
-  Char c = getNextChar();
-  bool ok = true;
-  switch (c) {
-  case '{':
-    token.type_ = tokenObjectBegin;
-    break;
-  case '}':
-    token.type_ = tokenObjectEnd;
-    break;
-  case '[':
-    token.type_ = tokenArrayBegin;
-    break;
-  case ']':
-    token.type_ = tokenArrayEnd;
-    break;
-  case '"':
-    token.type_ = tokenString;
-    ok = readString();
-    break;
-  case '\'':
-    if (features_.allowSingleQuotes_) {
-      token.type_ = tokenString;
-      ok = readStringSingleQuote();
-      break;
-    } // else fall through
-  case '/':
-    token.type_ = tokenComment;
-    ok = readComment();
-    break;
-  case '0':
-  case '1':
-  case '2':
-  case '3':
-  case '4':
-  case '5':
-  case '6':
-  case '7':
-  case '8':
-  case '9':
-    token.type_ = tokenNumber;
-    readNumber(false);
-    break;
-  case '-':
-    if (readNumber(true)) {
-      token.type_ = tokenNumber;
-    } else {
-      token.type_ = tokenNegInf;
-      ok = features_.allowSpecialFloats_ && match("nfinity", 7);
-    }
-    break;
-  case 't':
-    token.type_ = tokenTrue;
-    ok = match("rue", 3);
-    break;
-  case 'f':
-    token.type_ = tokenFalse;
-    ok = match("alse", 4);
-    break;
-  case 'n':
-    token.type_ = tokenNull;
-    ok = match("ull", 3);
-    break;
-  case 'N':
-    if (features_.allowSpecialFloats_) {
-      token.type_ = tokenNaN;
-      ok = match("aN", 2);
-    } else {
-      ok = false;
-    }
-    break;
-  case 'I':
-    if (features_.allowSpecialFloats_) {
-      token.type_ = tokenPosInf;
-      ok = match("nfinity", 7);
-    } else {
-      ok = false;
-    }
-    break;
-  case ',':
-    token.type_ = tokenArraySeparator;
-    break;
-  case ':':
-    token.type_ = tokenMemberSeparator;
-    break;
-  case 0:
-    token.type_ = tokenEndOfStream;
-    break;
-  default:
-    ok = false;
-    break;
-  }
-  if (!ok)
-    token.type_ = tokenError;
-  token.end_ = current_;
-  return true;
-}
-
-void OurReader::skipSpaces() {
-  while (current_ != end_) {
-    Char c = *current_;
-    if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
-      ++current_;
-    else
-      break;
-  }
-}
-
-bool OurReader::match(Location pattern, int patternLength) {
-  if (end_ - current_ < patternLength)
-    return false;
-  int index = patternLength;
-  while (index--)
-    if (current_[index] != pattern[index])
-      return false;
-  current_ += patternLength;
-  return true;
-}
-
-bool OurReader::readComment() {
-  Location commentBegin = current_ - 1;
-  Char c = getNextChar();
-  bool successful = false;
-  if (c == '*')
-    successful = readCStyleComment();
-  else if (c == '/')
-    successful = readCppStyleComment();
-  if (!successful)
-    return false;
-
-  if (collectComments_) {
-    CommentPlacement placement = commentBefore;
-    if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) {
-      if (c != '*' || !containsNewLine(commentBegin, current_))
-        placement = commentAfterOnSameLine;
-    }
-
-    addComment(commentBegin, current_, placement);
-  }
-  return true;
-}
-
-String OurReader::normalizeEOL(OurReader::Location begin,
-                               OurReader::Location end) {
-  String normalized;
-  normalized.reserve(static_cast<size_t>(end - begin));
-  OurReader::Location current = begin;
-  while (current != end) {
-    char c = *current++;
-    if (c == '\r') {
-      if (current != end && *current == '\n')
-        // convert dos EOL
-        ++current;
-      // convert Mac EOL
-      normalized += '\n';
-    } else {
-      normalized += c;
-    }
-  }
-  return normalized;
-}
-
-void OurReader::addComment(Location begin,
-                           Location end,
-                           CommentPlacement placement) {
-  assert(collectComments_);
-  const String& normalized = normalizeEOL(begin, end);
-  if (placement == commentAfterOnSameLine) {
-    assert(lastValue_ != nullptr);
-    lastValue_->setComment(normalized, placement);
-  } else {
-    commentsBefore_ += normalized;
-  }
-}
-
-bool OurReader::readCStyleComment() {
-  while ((current_ + 1) < end_) {
-    Char c = getNextChar();
-    if (c == '*' && *current_ == '/')
-      break;
-  }
-  return getNextChar() == '/';
-}
-
-bool OurReader::readCppStyleComment() {
-  while (current_ != end_) {
-    Char c = getNextChar();
-    if (c == '\n')
-      break;
-    if (c == '\r') {
-      // Consume DOS EOL. It will be normalized in addComment.
-      if (current_ != end_ && *current_ == '\n')
-        getNextChar();
-      // Break on Moc OS 9 EOL.
-      break;
-    }
-  }
-  return true;
-}
-
-bool OurReader::readNumber(bool checkInf) {
-  const char* p = current_;
-  if (checkInf && p != end_ && *p == 'I') {
-    current_ = ++p;
-    return false;
-  }
-  char c = '0'; // stopgap for already consumed character
-  // integral part
-  while (c >= '0' && c <= '9')
-    c = (current_ = p) < end_ ? *p++ : '\0';
-  // fractional part
-  if (c == '.') {
-    c = (current_ = p) < end_ ? *p++ : '\0';
-    while (c >= '0' && c <= '9')
-      c = (current_ = p) < end_ ? *p++ : '\0';
-  }
-  // exponential part
-  if (c == 'e' || c == 'E') {
-    c = (current_ = p) < end_ ? *p++ : '\0';
-    if (c == '+' || c == '-')
-      c = (current_ = p) < end_ ? *p++ : '\0';
-    while (c >= '0' && c <= '9')
-      c = (current_ = p) < end_ ? *p++ : '\0';
-  }
-  return true;
-}
-bool OurReader::readString() {
-  Char c = 0;
-  while (current_ != end_) {
-    c = getNextChar();
-    if (c == '\\')
-      getNextChar();
-    else if (c == '"')
-      break;
-  }
-  return c == '"';
-}
-
-bool OurReader::readStringSingleQuote() {
-  Char c = 0;
-  while (current_ != end_) {
-    c = getNextChar();
-    if (c == '\\')
-      getNextChar();
-    else if (c == '\'')
-      break;
-  }
-  return c == '\'';
-}
-
-bool OurReader::readObject(Token& token) {
-  Token tokenName;
-  String name;
-  Value init(objectValue);
-  currentValue().swapPayload(init);
-  currentValue().setOffsetStart(token.start_ - begin_);
-  while (readToken(tokenName)) {
-    bool initialTokenOk = true;
-    while (tokenName.type_ == tokenComment && initialTokenOk)
-      initialTokenOk = readToken(tokenName);
-    if (!initialTokenOk)
-      break;
-    if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object
-      return true;
-    name.clear();
-    if (tokenName.type_ == tokenString) {
-      if (!decodeString(tokenName, name))
-        return recoverFromError(tokenObjectEnd);
-    } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
-      Value numberName;
-      if (!decodeNumber(tokenName, numberName))
-        return recoverFromError(tokenObjectEnd);
-      name = numberName.asString();
-    } else {
-      break;
-    }
-
-    Token colon;
-    if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
-      return addErrorAndRecover("Missing ':' after object member name", colon,
-                                tokenObjectEnd);
-    }
-    if (name.length() >= (1U << 30))
-      throwRuntimeError("keylength >= 2^30");
-    if (features_.rejectDupKeys_ && currentValue().isMember(name)) {
-      String msg = "Duplicate key: '" + name + "'";
-      return addErrorAndRecover(msg, tokenName, tokenObjectEnd);
-    }
-    Value& value = currentValue()[name];
-    nodes_.push(&value);
-    bool ok = readValue();
-    nodes_.pop();
-    if (!ok) // error already set
-      return recoverFromError(tokenObjectEnd);
-
-    Token comma;
-    if (!readToken(comma) ||
-        (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator &&
-         comma.type_ != tokenComment)) {
-      return addErrorAndRecover("Missing ',' or '}' in object declaration",
-                                comma, tokenObjectEnd);
-    }
-    bool finalizeTokenOk = true;
-    while (comma.type_ == tokenComment && finalizeTokenOk)
-      finalizeTokenOk = readToken(comma);
-    if (comma.type_ == tokenObjectEnd)
-      return true;
-  }
-  return addErrorAndRecover("Missing '}' or object member name", tokenName,
-                            tokenObjectEnd);
-}
-
-bool OurReader::readArray(Token& token) {
-  Value init(arrayValue);
-  currentValue().swapPayload(init);
-  currentValue().setOffsetStart(token.start_ - begin_);
-  skipSpaces();
-  if (current_ != end_ && *current_ == ']') // empty array
-  {
-    Token endArray;
-    readToken(endArray);
-    return true;
-  }
-  int index = 0;
-  for (;;) {
-    Value& value = currentValue()[index++];
-    nodes_.push(&value);
-    bool ok = readValue();
-    nodes_.pop();
-    if (!ok) // error already set
-      return recoverFromError(tokenArrayEnd);
-
-    Token currentToken;
-    // Accept Comment after last item in the array.
-    ok = readToken(currentToken);
-    while (currentToken.type_ == tokenComment && ok) {
-      ok = readToken(currentToken);
-    }
-    bool badTokenType = (currentToken.type_ != tokenArraySeparator &&
-                         currentToken.type_ != tokenArrayEnd);
-    if (!ok || badTokenType) {
-      return addErrorAndRecover("Missing ',' or ']' in array declaration",
-                                currentToken, tokenArrayEnd);
-    }
-    if (currentToken.type_ == tokenArrayEnd)
-      break;
-  }
-  return true;
-}
-
-bool OurReader::decodeNumber(Token& token) {
-  Value decoded;
-  if (!decodeNumber(token, decoded))
-    return false;
-  currentValue().swapPayload(decoded);
-  currentValue().setOffsetStart(token.start_ - begin_);
-  currentValue().setOffsetLimit(token.end_ - begin_);
-  return true;
-}
-
-bool OurReader::decodeNumber(Token& token, Value& decoded) {
-  // Attempts to parse the number as an integer. If the number is
-  // larger than the maximum supported value of an integer then
-  // we decode the number as a double.
-  Location current = token.start_;
-  bool isNegative = *current == '-';
-  if (isNegative)
-    ++current;
-  // TODO: Help the compiler do the div and mod at compile time or get rid of
-  // them.
-  Value::LargestUInt maxIntegerValue =
-      isNegative ? Value::LargestUInt(Value::minLargestInt)
-                 : Value::maxLargestUInt;
-  Value::LargestUInt threshold = maxIntegerValue / 10;
-  Value::LargestUInt value = 0;
-  while (current < token.end_) {
-    Char c = *current++;
-    if (c < '0' || c > '9')
-      return decodeDouble(token, decoded);
-    auto digit(static_cast<Value::UInt>(c - '0'));
-    if (value >= threshold) {
-      // We've hit or exceeded the max value divided by 10 (rounded down). If
-      // a) we've only just touched the limit, b) this is the last digit, and
-      // c) it's small enough to fit in that rounding delta, we're okay.
-      // Otherwise treat this number as a double to avoid overflow.
-      if (value > threshold || current != token.end_ ||
-          digit > maxIntegerValue % 10) {
-        return decodeDouble(token, decoded);
-      }
-    }
-    value = value * 10 + digit;
-  }
-  if (isNegative)
-    decoded = -Value::LargestInt(value);
-  else if (value <= Value::LargestUInt(Value::maxInt))
-    decoded = Value::LargestInt(value);
-  else
-    decoded = value;
-  return true;
-}
-
-bool OurReader::decodeDouble(Token& token) {
-  Value decoded;
-  if (!decodeDouble(token, decoded))
-    return false;
-  currentValue().swapPayload(decoded);
-  currentValue().setOffsetStart(token.start_ - begin_);
-  currentValue().setOffsetLimit(token.end_ - begin_);
-  return true;
-}
-
-bool OurReader::decodeDouble(Token& token, Value& decoded) {
-  double value = 0;
-  const int bufferSize = 32;
-  int count;
-  ptrdiff_t const length = token.end_ - token.start_;
-
-  // Sanity check to avoid buffer overflow exploits.
-  if (length < 0) {
-    return addError("Unable to parse token length", token);
-  }
-  auto const ulength = static_cast<size_t>(length);
-
-  // Avoid using a string constant for the format control string given to
-  // sscanf, as this can cause hard to debug crashes on OS X. See here for more
-  // info:
-  //
-  //     http://developer.apple.com/library/mac/#DOCUMENTATION/DeveloperTools/gcc-4.0.1/gcc/Incompatibilities.html
-  char format[] = "%lf";
-
-  if (length <= bufferSize) {
-    Char buffer[bufferSize + 1];
-    memcpy(buffer, token.start_, ulength);
-    buffer[length] = 0;
-    fixNumericLocaleInput(buffer, buffer + length);
-    count = sscanf(buffer, format, &value);
-  } else {
-    String buffer(token.start_, token.end_);
-    count = sscanf(buffer.c_str(), format, &value);
-  }
-
-  if (count != 1)
-    return addError(
-        "'" + String(token.start_, token.end_) + "' is not a number.", token);
-  decoded = value;
-  return true;
-}
-
-bool OurReader::decodeString(Token& token) {
-  String decoded_string;
-  if (!decodeString(token, decoded_string))
-    return false;
-  Value decoded(decoded_string);
-  currentValue().swapPayload(decoded);
-  currentValue().setOffsetStart(token.start_ - begin_);
-  currentValue().setOffsetLimit(token.end_ - begin_);
-  return true;
-}
-
-bool OurReader::decodeString(Token& token, String& decoded) {
-  decoded.reserve(static_cast<size_t>(token.end_ - token.start_ - 2));
-  Location current = token.start_ + 1; // skip '"'
-  Location end = token.end_ - 1;       // do not include '"'
-  while (current != end) {
-    Char c = *current++;
-    if (c == '"')
-      break;
-    else if (c == '\\') {
-      if (current == end)
-        return addError("Empty escape sequence in string", token, current);
-      Char escape = *current++;
-      switch (escape) {
-      case '"':
-        decoded += '"';
-        break;
-      case '/':
-        decoded += '/';
-        break;
-      case '\\':
-        decoded += '\\';
-        break;
-      case 'b':
-        decoded += '\b';
-        break;
-      case 'f':
-        decoded += '\f';
-        break;
-      case 'n':
-        decoded += '\n';
-        break;
-      case 'r':
-        decoded += '\r';
-        break;
-      case 't':
-        decoded += '\t';
-        break;
-      case 'u': {
-        unsigned int unicode;
-        if (!decodeUnicodeCodePoint(token, current, end, unicode))
-          return false;
-        decoded += codePointToUTF8(unicode);
-      } break;
-      default:
-        return addError("Bad escape sequence in string", token, current);
-      }
-    } else {
-      decoded += c;
-    }
-  }
-  return true;
-}
-
-bool OurReader::decodeUnicodeCodePoint(Token& token,
-                                       Location& current,
-                                       Location end,
-                                       unsigned int& unicode) {
-
-  if (!decodeUnicodeEscapeSequence(token, current, end, unicode))
-    return false;
-  if (unicode >= 0xD800 && unicode <= 0xDBFF) {
-    // surrogate pairs
-    if (end - current < 6)
-      return addError(
-          "additional six characters expected to parse unicode surrogate pair.",
-          token, current);
-    if (*(current++) == '\\' && *(current++) == 'u') {
-      unsigned int surrogatePair;
-      if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) {
-        unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF);
-      } else
-        return false;
-    } else
-      return addError("expecting another \\u token to begin the second half of "
-                      "a unicode surrogate pair",
-                      token, current);
-  }
-  return true;
-}
-
-bool OurReader::decodeUnicodeEscapeSequence(Token& token,
-                                            Location& current,
-                                            Location end,
-                                            unsigned int& ret_unicode) {
-  if (end - current < 4)
-    return addError(
-        "Bad unicode escape sequence in string: four digits expected.", token,
-        current);
-  int unicode = 0;
-  for (int index = 0; index < 4; ++index) {
-    Char c = *current++;
-    unicode *= 16;
-    if (c >= '0' && c <= '9')
-      unicode += c - '0';
-    else if (c >= 'a' && c <= 'f')
-      unicode += c - 'a' + 10;
-    else if (c >= 'A' && c <= 'F')
-      unicode += c - 'A' + 10;
-    else
-      return addError(
-          "Bad unicode escape sequence in string: hexadecimal digit expected.",
-          token, current);
-  }
-  ret_unicode = static_cast<unsigned int>(unicode);
-  return true;
-}
-
-bool OurReader::addError(const String& message, Token& token, Location extra) {
-  ErrorInfo info;
-  info.token_ = token;
-  info.message_ = message;
-  info.extra_ = extra;
-  errors_.push_back(info);
-  return false;
-}
-
-bool OurReader::recoverFromError(TokenType skipUntilToken) {
-  size_t errorCount = errors_.size();
-  Token skip;
-  for (;;) {
-    if (!readToken(skip))
-      errors_.resize(errorCount); // discard errors caused by recovery
-    if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream)
-      break;
-  }
-  errors_.resize(errorCount);
-  return false;
-}
-
-bool OurReader::addErrorAndRecover(const String& message,
-                                   Token& token,
-                                   TokenType skipUntilToken) {
-  addError(message, token);
-  return recoverFromError(skipUntilToken);
-}
-
-Value& OurReader::currentValue() { return *(nodes_.top()); }
-
-OurReader::Char OurReader::getNextChar() {
-  if (current_ == end_)
-    return 0;
-  return *current_++;
-}
-
-void OurReader::getLocationLineAndColumn(Location location,
-                                         int& line,
-                                         int& column) const {
-  Location current = begin_;
-  Location lastLineStart = current;
-  line = 0;
-  while (current < location && current != end_) {
-    Char c = *current++;
-    if (c == '\r') {
-      if (*current == '\n')
-        ++current;
-      lastLineStart = current;
-      ++line;
-    } else if (c == '\n') {
-      lastLineStart = current;
-      ++line;
-    }
-  }
-  // column & line start at 1
-  column = int(location - lastLineStart) + 1;
-  ++line;
-}
-
-String OurReader::getLocationLineAndColumn(Location location) const {
-  int line, column;
-  getLocationLineAndColumn(location, line, column);
-  char buffer[18 + 16 + 16 + 1];
-  jsoncpp_snprintf(buffer, sizeof(buffer), "Line %d, Column %d", line, column);
-  return buffer;
-}
-
-String OurReader::getFormattedErrorMessages() const {
-  String formattedMessage;
-  for (const auto& error : errors_) {
-    formattedMessage +=
-        "* " + getLocationLineAndColumn(error.token_.start_) + "\n";
-    formattedMessage += "  " + error.message_ + "\n";
-    if (error.extra_)
-      formattedMessage +=
-          "See " + getLocationLineAndColumn(error.extra_) + " for detail.\n";
-  }
-  return formattedMessage;
-}
-
-std::vector<OurReader::StructuredError> OurReader::getStructuredErrors() const {
-  std::vector<OurReader::StructuredError> allErrors;
-  for (const auto& error : errors_) {
-    OurReader::StructuredError structured;
-    structured.offset_start = error.token_.start_ - begin_;
-    structured.offset_limit = error.token_.end_ - begin_;
-    structured.message = error.message_;
-    allErrors.push_back(structured);
-  }
-  return allErrors;
-}
-
-bool OurReader::pushError(const Value& value, const String& message) {
-  ptrdiff_t length = end_ - begin_;
-  if (value.getOffsetStart() > length || value.getOffsetLimit() > length)
-    return false;
-  Token token;
-  token.type_ = tokenError;
-  token.start_ = begin_ + value.getOffsetStart();
-  token.end_ = end_ + value.getOffsetLimit();
-  ErrorInfo info;
-  info.token_ = token;
-  info.message_ = message;
-  info.extra_ = nullptr;
-  errors_.push_back(info);
-  return true;
-}
-
-bool OurReader::pushError(const Value& value,
-                          const String& message,
-                          const Value& extra) {
-  ptrdiff_t length = end_ - begin_;
-  if (value.getOffsetStart() > length || value.getOffsetLimit() > length ||
-      extra.getOffsetLimit() > length)
-    return false;
-  Token token;
-  token.type_ = tokenError;
-  token.start_ = begin_ + value.getOffsetStart();
-  token.end_ = begin_ + value.getOffsetLimit();
-  ErrorInfo info;
-  info.token_ = token;
-  info.message_ = message;
-  info.extra_ = begin_ + extra.getOffsetStart();
-  errors_.push_back(info);
-  return true;
-}
-
-bool OurReader::good() const { return errors_.empty(); }
-
-class OurCharReader : public CharReader {
-  bool const collectComments_;
-  OurReader reader_;
-
-public:
-  OurCharReader(bool collectComments, OurFeatures const& features)
-      : collectComments_(collectComments), reader_(features) {}
-  bool parse(char const* beginDoc,
-             char const* endDoc,
-             Value* root,
-             String* errs) override {
-    bool ok = reader_.parse(beginDoc, endDoc, *root, collectComments_);
-    if (errs) {
-      *errs = reader_.getFormattedErrorMessages();
-    }
-    return ok;
-  }
-};
-
-CharReaderBuilder::CharReaderBuilder() { setDefaults(&settings_); }
-CharReaderBuilder::~CharReaderBuilder() = default;
-CharReader* CharReaderBuilder::newCharReader() const {
-  bool collectComments = settings_["collectComments"].asBool();
-  OurFeatures features = OurFeatures::all();
-  features.allowComments_ = settings_["allowComments"].asBool();
-  features.strictRoot_ = settings_["strictRoot"].asBool();
-  features.allowDroppedNullPlaceholders_ =
-      settings_["allowDroppedNullPlaceholders"].asBool();
-  features.allowNumericKeys_ = settings_["allowNumericKeys"].asBool();
-  features.allowSingleQuotes_ = settings_["allowSingleQuotes"].asBool();
-#if defined(JSON_HAS_INT64)
-  features.stackLimit_ = settings_["stackLimit"].asUInt64();
-#else
-  features.stackLimit_ = settings_["stackLimit"].asUInt();
-#endif
-  features.failIfExtra_ = settings_["failIfExtra"].asBool();
-  features.rejectDupKeys_ = settings_["rejectDupKeys"].asBool();
-  features.allowSpecialFloats_ = settings_["allowSpecialFloats"].asBool();
-  return new OurCharReader(collectComments, features);
-}
-static void getValidReaderKeys(std::set<String>* valid_keys) {
-  valid_keys->clear();
-  valid_keys->insert("collectComments");
-  valid_keys->insert("allowComments");
-  valid_keys->insert("strictRoot");
-  valid_keys->insert("allowDroppedNullPlaceholders");
-  valid_keys->insert("allowNumericKeys");
-  valid_keys->insert("allowSingleQuotes");
-  valid_keys->insert("stackLimit");
-  valid_keys->insert("failIfExtra");
-  valid_keys->insert("rejectDupKeys");
-  valid_keys->insert("allowSpecialFloats");
-}
-bool CharReaderBuilder::validate(Json::Value* invalid) const {
-  Json::Value my_invalid;
-  if (!invalid)
-    invalid = &my_invalid; // so we do not need to test for NULL
-  Json::Value& inv = *invalid;
-  std::set<String> valid_keys;
-  getValidReaderKeys(&valid_keys);
-  Value::Members keys = settings_.getMemberNames();
-  size_t n = keys.size();
-  for (size_t i = 0; i < n; ++i) {
-    String const& key = keys[i];
-    if (valid_keys.find(key) == valid_keys.end()) {
-      inv[key] = settings_[key];
-    }
-  }
-  return inv.empty();
-}
-Value& CharReaderBuilder::operator[](const String& key) {
-  return settings_[key];
-}
-// static
-void CharReaderBuilder::strictMode(Json::Value* settings) {
-  //! [CharReaderBuilderStrictMode]
-  (*settings)["allowComments"] = false;
-  (*settings)["strictRoot"] = true;
-  (*settings)["allowDroppedNullPlaceholders"] = false;
-  (*settings)["allowNumericKeys"] = false;
-  (*settings)["allowSingleQuotes"] = false;
-  (*settings)["stackLimit"] = 1000;
-  (*settings)["failIfExtra"] = true;
-  (*settings)["rejectDupKeys"] = true;
-  (*settings)["allowSpecialFloats"] = false;
-  //! [CharReaderBuilderStrictMode]
-}
-// static
-void CharReaderBuilder::setDefaults(Json::Value* settings) {
-  //! [CharReaderBuilderDefaults]
-  (*settings)["collectComments"] = true;
-  (*settings)["allowComments"] = true;
-  (*settings)["strictRoot"] = false;
-  (*settings)["allowDroppedNullPlaceholders"] = false;
-  (*settings)["allowNumericKeys"] = false;
-  (*settings)["allowSingleQuotes"] = false;
-  (*settings)["stackLimit"] = 1000;
-  (*settings)["failIfExtra"] = false;
-  (*settings)["rejectDupKeys"] = false;
-  (*settings)["allowSpecialFloats"] = false;
-  //! [CharReaderBuilderDefaults]
-}
-
-//////////////////////////////////
-// global functions
-
-bool parseFromStream(CharReader::Factory const& fact,
-                     IStream& sin,
-                     Value* root,
-                     String* errs) {
-  OStringStream ssin;
-  ssin << sin.rdbuf();
-  String doc = ssin.str();
-  char const* begin = doc.data();
-  char const* end = begin + doc.size();
-  // Note that we do not actually need a null-terminator.
-  CharReaderPtr const reader(fact.newCharReader());
-  return reader->parse(begin, end, root, errs);
-}
-
-IStream& operator>>(IStream& sin, Value& root) {
-  CharReaderBuilder b;
-  String errs;
-  bool ok = parseFromStream(b, sin, &root, &errs);
-  if (!ok) {
-    throwRuntimeError(errs);
-  }
-  return sin;
-}
-
-} // namespace Json
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: src/lib_json/json_reader.cpp
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: src/lib_json/json_valueiterator.inl
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-// included by json_value.cpp
-
-namespace Json {
-
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// class ValueIteratorBase
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-
-ValueIteratorBase::ValueIteratorBase() : current_() {}
-
-ValueIteratorBase::ValueIteratorBase(
-    const Value::ObjectValues::iterator& current)
-    : current_(current), isNull_(false) {}
-
-Value& ValueIteratorBase::deref() const { return current_->second; }
-
-void ValueIteratorBase::increment() { ++current_; }
-
-void ValueIteratorBase::decrement() { --current_; }
-
-ValueIteratorBase::difference_type
-ValueIteratorBase::computeDistance(const SelfType& other) const {
-#ifdef JSON_USE_CPPTL_SMALLMAP
-  return other.current_ - current_;
-#else
-  // Iterator for null value are initialized using the default
-  // constructor, which initialize current_ to the default
-  // std::map::iterator. As begin() and end() are two instance
-  // of the default std::map::iterator, they can not be compared.
-  // To allow this, we handle this comparison specifically.
-  if (isNull_ && other.isNull_) {
-    return 0;
-  }
-
-  // Usage of std::distance is not portable (does not compile with Sun Studio 12
-  // RogueWave STL,
-  // which is the one used by default).
-  // Using a portable hand-made version for non random iterator instead:
-  //   return difference_type( std::distance( current_, other.current_ ) );
-  difference_type myDistance = 0;
-  for (Value::ObjectValues::iterator it = current_; it != other.current_;
-       ++it) {
-    ++myDistance;
-  }
-  return myDistance;
-#endif
-}
-
-bool ValueIteratorBase::isEqual(const SelfType& other) const {
-  if (isNull_) {
-    return other.isNull_;
-  }
-  return current_ == other.current_;
-}
-
-void ValueIteratorBase::copy(const SelfType& other) {
-  current_ = other.current_;
-  isNull_ = other.isNull_;
-}
-
-Value ValueIteratorBase::key() const {
-  const Value::CZString czstring = (*current_).first;
-  if (czstring.data()) {
-    if (czstring.isStaticString())
-      return Value(StaticString(czstring.data()));
-    return Value(czstring.data(), czstring.data() + czstring.length());
-  }
-  return Value(czstring.index());
-}
-
-UInt ValueIteratorBase::index() const {
-  const Value::CZString czstring = (*current_).first;
-  if (!czstring.data())
-    return czstring.index();
-  return Value::UInt(-1);
-}
-
-String ValueIteratorBase::name() const {
-  char const* keey;
-  char const* end;
-  keey = memberName(&end);
-  if (!keey)
-    return String();
-  return String(keey, end);
-}
-
-char const* ValueIteratorBase::memberName() const {
-  const char* cname = (*current_).first.data();
-  return cname ? cname : "";
-}
-
-char const* ValueIteratorBase::memberName(char const** end) const {
-  const char* cname = (*current_).first.data();
-  if (!cname) {
-    *end = nullptr;
-    return nullptr;
-  }
-  *end = cname + (*current_).first.length();
-  return cname;
-}
-
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// class ValueConstIterator
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-
-ValueConstIterator::ValueConstIterator() = default;
-
-ValueConstIterator::ValueConstIterator(
-    const Value::ObjectValues::iterator& current)
-    : ValueIteratorBase(current) {}
-
-ValueConstIterator::ValueConstIterator(ValueIterator const& other)
-    : ValueIteratorBase(other) {}
-
-ValueConstIterator& ValueConstIterator::
-operator=(const ValueIteratorBase& other) {
-  copy(other);
-  return *this;
-}
-
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// class ValueIterator
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-
-ValueIterator::ValueIterator() = default;
-
-ValueIterator::ValueIterator(const Value::ObjectValues::iterator& current)
-    : ValueIteratorBase(current) {}
-
-ValueIterator::ValueIterator(const ValueConstIterator& other)
-    : ValueIteratorBase(other) {
-  throwRuntimeError("ConstIterator to Iterator should never be allowed.");
-}
-
-ValueIterator::ValueIterator(const ValueIterator& other) = default;
-
-ValueIterator& ValueIterator::operator=(const SelfType& other) {
-  copy(other);
-  return *this;
-}
-
-} // namespace Json
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: src/lib_json/json_valueiterator.inl
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: src/lib_json/json_value.cpp
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2011 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include <json/assertions.h>
-#include <json/value.h>
-#include <json/writer.h>
-#endif // if !defined(JSON_IS_AMALGAMATION)
-#include <cassert>
-#include <cmath>
-#include <cstring>
-#include <sstream>
-#include <utility>
-#ifdef JSON_USE_CPPTL
-#include <cpptl/conststring.h>
-#endif
-#include <algorithm> // min()
-#include <cstddef>   // size_t
-
-// Provide implementation equivalent of std::snprintf for older _MSC compilers
-#if defined(_MSC_VER) && _MSC_VER < 1900
-#include <stdarg.h>
-static int msvc_pre1900_c99_vsnprintf(char* outBuf,
-                                      size_t size,
-                                      const char* format,
-                                      va_list ap) {
-  int count = -1;
-  if (size != 0)
-    count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
-  if (count == -1)
-    count = _vscprintf(format, ap);
-  return count;
-}
-
-int JSON_API msvc_pre1900_c99_snprintf(char* outBuf,
-                                       size_t size,
-                                       const char* format,
-                                       ...) {
-  va_list ap;
-  va_start(ap, format);
-  const int count = msvc_pre1900_c99_vsnprintf(outBuf, size, format, ap);
-  va_end(ap);
-  return count;
-}
-#endif
-
-// Disable warning C4702 : unreachable code
-#if defined(_MSC_VER)
-#pragma warning(disable : 4702)
-#endif
-
-#define JSON_ASSERT_UNREACHABLE assert(false)
-
-namespace Json {
-
-// This is a walkaround to avoid the static initialization of Value::null.
-// kNull must be word-aligned to avoid crashing on ARM.  We use an alignment of
-// 8 (instead of 4) as a bit of future-proofing.
-#if defined(__ARMEL__)
-#define ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment)))
-#else
-#define ALIGNAS(byte_alignment)
-#endif
-// static const unsigned char ALIGNAS(8) kNull[sizeof(Value)] = { 0 };
-// const unsigned char& kNullRef = kNull[0];
-// const Value& Value::null = reinterpret_cast<const Value&>(kNullRef);
-// const Value& Value::nullRef = null;
-
-// static
-Value const& Value::nullSingleton() {
-  static Value const nullStatic;
-  return nullStatic;
-}
-
-// for backwards compatibility, we'll leave these global references around, but
-// DO NOT use them in JSONCPP library code any more!
-Value const& Value::null = Value::nullSingleton();
-Value const& Value::nullRef = Value::nullSingleton();
-
-const Int Value::minInt = Int(~(UInt(-1) / 2));
-const Int Value::maxInt = Int(UInt(-1) / 2);
-const UInt Value::maxUInt = UInt(-1);
-#if defined(JSON_HAS_INT64)
-const Int64 Value::minInt64 = Int64(~(UInt64(-1) / 2));
-const Int64 Value::maxInt64 = Int64(UInt64(-1) / 2);
-const UInt64 Value::maxUInt64 = UInt64(-1);
-// The constant is hard-coded because some compiler have trouble
-// converting Value::maxUInt64 to a double correctly (AIX/xlC).
-// Assumes that UInt64 is a 64 bits integer.
-static const double maxUInt64AsDouble = 18446744073709551615.0;
-#endif // defined(JSON_HAS_INT64)
-const LargestInt Value::minLargestInt = LargestInt(~(LargestUInt(-1) / 2));
-const LargestInt Value::maxLargestInt = LargestInt(LargestUInt(-1) / 2);
-const LargestUInt Value::maxLargestUInt = LargestUInt(-1);
-
-const UInt Value::defaultRealPrecision = 17;
-
-#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
-template <typename T, typename U>
-static inline bool InRange(double d, T min, U max) {
-  // The casts can lose precision, but we are looking only for
-  // an approximate range. Might fail on edge cases though. ~cdunn
-  // return d >= static_cast<double>(min) && d <= static_cast<double>(max);
-  return d >= min && d <= max;
-}
-#else  // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
-static inline double integerToDouble(Json::UInt64 value) {
-  return static_cast<double>(Int64(value / 2)) * 2.0 +
-         static_cast<double>(Int64(value & 1));
-}
-
-template <typename T> static inline double integerToDouble(T value) {
-  return static_cast<double>(value);
-}
-
-template <typename T, typename U>
-static inline bool InRange(double d, T min, U max) {
-  return d >= integerToDouble(min) && d <= integerToDouble(max);
-}
-#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
-
-/** Duplicates the specified string value.
- * @param value Pointer to the string to duplicate. Must be zero-terminated if
- *              length is "unknown".
- * @param length Length of the value. if equals to unknown, then it will be
- *               computed using strlen(value).
- * @return Pointer on the duplicate instance of string.
- */
-static inline char* duplicateStringValue(const char* value, size_t length) {
-  // Avoid an integer overflow in the call to malloc below by limiting length
-  // to a sane value.
-  if (length >= static_cast<size_t>(Value::maxInt))
-    length = Value::maxInt - 1;
-
-  char* newString = static_cast<char*>(malloc(length + 1));
-  if (newString == nullptr) {
-    throwRuntimeError("in Json::Value::duplicateStringValue(): "
-                      "Failed to allocate string value buffer");
-  }
-  memcpy(newString, value, length);
-  newString[length] = 0;
-  return newString;
-}
-
-/* Record the length as a prefix.
- */
-static inline char* duplicateAndPrefixStringValue(const char* value,
-                                                  unsigned int length) {
-  // Avoid an integer overflow in the call to malloc below by limiting length
-  // to a sane value.
-  JSON_ASSERT_MESSAGE(length <= static_cast<unsigned>(Value::maxInt) -
-                                    sizeof(unsigned) - 1U,
-                      "in Json::Value::duplicateAndPrefixStringValue(): "
-                      "length too big for prefixing");
-  unsigned actualLength = length + static_cast<unsigned>(sizeof(unsigned)) + 1U;
-  char* newString = static_cast<char*>(malloc(actualLength));
-  if (newString == nullptr) {
-    throwRuntimeError("in Json::Value::duplicateAndPrefixStringValue(): "
-                      "Failed to allocate string value buffer");
-  }
-  *reinterpret_cast<unsigned*>(newString) = length;
-  memcpy(newString + sizeof(unsigned), value, length);
-  newString[actualLength - 1U] =
-      0; // to avoid buffer over-run accidents by users later
-  return newString;
-}
-inline static void decodePrefixedString(bool isPrefixed,
-                                        char const* prefixed,
-                                        unsigned* length,
-                                        char const** value) {
-  if (!isPrefixed) {
-    *length = static_cast<unsigned>(strlen(prefixed));
-    *value = prefixed;
-  } else {
-    *length = *reinterpret_cast<unsigned const*>(prefixed);
-    *value = prefixed + sizeof(unsigned);
-  }
-}
-/** Free the string duplicated by
- * duplicateStringValue()/duplicateAndPrefixStringValue().
- */
-#if JSONCPP_USING_SECURE_MEMORY
-static inline void releasePrefixedStringValue(char* value) {
-  unsigned length = 0;
-  char const* valueDecoded;
-  decodePrefixedString(true, value, &length, &valueDecoded);
-  size_t const size = sizeof(unsigned) + length + 1U;
-  memset(value, 0, size);
-  free(value);
-}
-static inline void releaseStringValue(char* value, unsigned length) {
-  // length==0 => we allocated the strings memory
-  size_t size = (length == 0) ? strlen(value) : length;
-  memset(value, 0, size);
-  free(value);
-}
-#else  // !JSONCPP_USING_SECURE_MEMORY
-static inline void releasePrefixedStringValue(char* value) { free(value); }
-static inline void releaseStringValue(char* value, unsigned) { free(value); }
-#endif // JSONCPP_USING_SECURE_MEMORY
-
-} // namespace Json
-
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// ValueInternals...
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-#if !defined(JSON_IS_AMALGAMATION)
-
-#include "json_valueiterator.inl"
-#endif // if !defined(JSON_IS_AMALGAMATION)
-
-namespace Json {
-
-Exception::Exception(String msg) : msg_(std::move(msg)) {}
-Exception::~Exception() JSONCPP_NOEXCEPT {}
-char const* Exception::what() const JSONCPP_NOEXCEPT { return msg_.c_str(); }
-RuntimeError::RuntimeError(String const& msg) : Exception(msg) {}
-LogicError::LogicError(String const& msg) : Exception(msg) {}
-JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
-  throw RuntimeError(msg);
-}
-JSONCPP_NORETURN void throwLogicError(String const& msg) {
-  throw LogicError(msg);
-}
-
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// class Value::CommentInfo
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-
-Value::CommentInfo::CommentInfo() = default;
-
-Value::CommentInfo::~CommentInfo() {
-  if (comment_)
-    releaseStringValue(comment_, 0u);
-}
-
-void Value::CommentInfo::setComment(const char* text, size_t len) {
-  if (comment_) {
-    releaseStringValue(comment_, 0u);
-    comment_ = nullptr;
-  }
-  JSON_ASSERT(text != nullptr);
-  JSON_ASSERT_MESSAGE(
-      text[0] == '\0' || text[0] == '/',
-      "in Json::Value::setComment(): Comments must start with /");
-  // It seems that /**/ style comments are acceptable as well.
-  comment_ = duplicateStringValue(text, len);
-}
-
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// class Value::CZString
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-
-// Notes: policy_ indicates if the string was allocated when
-// a string is stored.
-
-Value::CZString::CZString(ArrayIndex index) : cstr_(nullptr), index_(index) {}
-
-Value::CZString::CZString(char const* str,
-                          unsigned length,
-                          DuplicationPolicy allocate)
-    : cstr_(str) {
-  // allocate != duplicate
-  storage_.policy_ = allocate & 0x3;
-  storage_.length_ = length & 0x3FFFFFFF;
-}
-
-Value::CZString::CZString(const CZString& other) {
-  cstr_ = (other.storage_.policy_ != noDuplication && other.cstr_ != nullptr
-               ? duplicateStringValue(other.cstr_, other.storage_.length_)
-               : other.cstr_);
-  storage_.policy_ =
-      static_cast<unsigned>(
-          other.cstr_
-              ? (static_cast<DuplicationPolicy>(other.storage_.policy_) ==
-                         noDuplication
-                     ? noDuplication
-                     : duplicate)
-              : static_cast<DuplicationPolicy>(other.storage_.policy_)) &
-      3U;
-  storage_.length_ = other.storage_.length_;
-}
-
-#if JSON_HAS_RVALUE_REFERENCES
-Value::CZString::CZString(CZString&& other)
-    : cstr_(other.cstr_), index_(other.index_) {
-  other.cstr_ = nullptr;
-}
-#endif
-
-Value::CZString::~CZString() {
-  if (cstr_ && storage_.policy_ == duplicate) {
-    releaseStringValue(const_cast<char*>(cstr_),
-                       storage_.length_ + 1u); // +1 for null terminating
-                                               // character for sake of
-                                               // completeness but not actually
-                                               // necessary
-  }
-}
-
-void Value::CZString::swap(CZString& other) {
-  std::swap(cstr_, other.cstr_);
-  std::swap(index_, other.index_);
-}
-
-Value::CZString& Value::CZString::operator=(const CZString& other) {
-  cstr_ = other.cstr_;
-  index_ = other.index_;
-  return *this;
-}
-
-#if JSON_HAS_RVALUE_REFERENCES
-Value::CZString& Value::CZString::operator=(CZString&& other) {
-  cstr_ = other.cstr_;
-  index_ = other.index_;
-  other.cstr_ = nullptr;
-  return *this;
-}
-#endif
-
-bool Value::CZString::operator<(const CZString& other) const {
-  if (!cstr_)
-    return index_ < other.index_;
-  // return strcmp(cstr_, other.cstr_) < 0;
-  // Assume both are strings.
-  unsigned this_len = this->storage_.length_;
-  unsigned other_len = other.storage_.length_;
-  unsigned min_len = std::min<unsigned>(this_len, other_len);
-  JSON_ASSERT(this->cstr_ && other.cstr_);
-  int comp = memcmp(this->cstr_, other.cstr_, min_len);
-  if (comp < 0)
-    return true;
-  if (comp > 0)
-    return false;
-  return (this_len < other_len);
-}
-
-bool Value::CZString::operator==(const CZString& other) const {
-  if (!cstr_)
-    return index_ == other.index_;
-  // return strcmp(cstr_, other.cstr_) == 0;
-  // Assume both are strings.
-  unsigned this_len = this->storage_.length_;
-  unsigned other_len = other.storage_.length_;
-  if (this_len != other_len)
-    return false;
-  JSON_ASSERT(this->cstr_ && other.cstr_);
-  int comp = memcmp(this->cstr_, other.cstr_, this_len);
-  return comp == 0;
-}
-
-ArrayIndex Value::CZString::index() const { return index_; }
-
-// const char* Value::CZString::c_str() const { return cstr_; }
-const char* Value::CZString::data() const { return cstr_; }
-unsigned Value::CZString::length() const { return storage_.length_; }
-bool Value::CZString::isStaticString() const {
-  return storage_.policy_ == noDuplication;
-}
-
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// class Value::Value
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-// //////////////////////////////////////////////////////////////////
-
-/*! \internal Default constructor initialization must be equivalent to:
- * memset( this, 0, sizeof(Value) )
- * This optimization is used in ValueInternalMap fast allocator.
- */
-Value::Value(ValueType type) {
-  static char const emptyString[] = "";
-  initBasic(type);
-  switch (type) {
-  case nullValue:
-    break;
-  case intValue:
-  case uintValue:
-    value_.int_ = 0;
-    break;
-  case realValue:
-    value_.real_ = 0.0;
-    break;
-  case stringValue:
-    // allocated_ == false, so this is safe.
-    value_.string_ = const_cast<char*>(static_cast<char const*>(emptyString));
-    break;
-  case arrayValue:
-  case objectValue:
-    value_.map_ = new ObjectValues();
-    break;
-  case booleanValue:
-    value_.bool_ = false;
-    break;
-  default:
-    JSON_ASSERT_UNREACHABLE;
-  }
-}
-
-Value::Value(Int value) {
-  initBasic(intValue);
-  value_.int_ = value;
-}
-
-Value::Value(UInt value) {
-  initBasic(uintValue);
-  value_.uint_ = value;
-}
-#if defined(JSON_HAS_INT64)
-Value::Value(Int64 value) {
-  initBasic(intValue);
-  value_.int_ = value;
-}
-Value::Value(UInt64 value) {
-  initBasic(uintValue);
-  value_.uint_ = value;
-}
-#endif // defined(JSON_HAS_INT64)
-
-Value::Value(double value) {
-  initBasic(realValue);
-  value_.real_ = value;
-}
-
-Value::Value(const char* value) {
-  initBasic(stringValue, true);
-  JSON_ASSERT_MESSAGE(value != nullptr,
-                      "Null Value Passed to Value Constructor");
-  value_.string_ = duplicateAndPrefixStringValue(
-      value, static_cast<unsigned>(strlen(value)));
-}
-
-Value::Value(const char* begin, const char* end) {
-  initBasic(stringValue, true);
-  value_.string_ =
-      duplicateAndPrefixStringValue(begin, static_cast<unsigned>(end - begin));
-}
-
-Value::Value(const String& value) {
-  initBasic(stringValue, true);
-  value_.string_ = duplicateAndPrefixStringValue(
-      value.data(), static_cast<unsigned>(value.length()));
-}
-
-Value::Value(const StaticString& value) {
-  initBasic(stringValue);
-  value_.string_ = const_cast<char*>(value.c_str());
-}
-
-#ifdef JSON_USE_CPPTL
-Value::Value(const CppTL::ConstString& value) {
-  initBasic(stringValue, true);
-  value_.string_ = duplicateAndPrefixStringValue(
-      value, static_cast<unsigned>(value.length()));
-}
-#endif
-
-Value::Value(bool value) {
-  initBasic(booleanValue);
-  value_.bool_ = value;
-}
-
-Value::Value(const Value& other) {
-  dupPayload(other);
-  dupMeta(other);
-}
-
-Value::Value(Value&& other) {
-  initBasic(nullValue);
-  swap(other);
-}
-
-Value::~Value() {
-  releasePayload();
-  delete[] comments_;
-  value_.uint_ = 0;
-}
-
-Value& Value::operator=(const Value& other) {
-  Value(other).swap(*this);
-  return *this;
-}
-
-Value& Value::operator=(Value&& other) {
-  other.swap(*this);
-  return *this;
-}
-
-void Value::swapPayload(Value& other) {
-  std::swap(bits_, other.bits_);
-  std::swap(value_, other.value_);
-}
-
-void Value::copyPayload(const Value& other) {
-  releasePayload();
-  dupPayload(other);
-}
-
-void Value::swap(Value& other) {
-  swapPayload(other);
-  std::swap(comments_, other.comments_);
-  std::swap(start_, other.start_);
-  std::swap(limit_, other.limit_);
-}
-
-void Value::copy(const Value& other) {
-  copyPayload(other);
-  delete[] comments_;
-  dupMeta(other);
-}
-
-ValueType Value::type() const {
-  return static_cast<ValueType>(bits_.value_type_);
-}
-
-int Value::compare(const Value& other) const {
-  if (*this < other)
-    return -1;
-  if (*this > other)
-    return 1;
-  return 0;
-}
-
-bool Value::operator<(const Value& other) const {
-  int typeDelta = type() - other.type();
-  if (typeDelta)
-    return typeDelta < 0 ? true : false;
-  switch (type()) {
-  case nullValue:
-    return false;
-  case intValue:
-    return value_.int_ < other.value_.int_;
-  case uintValue:
-    return value_.uint_ < other.value_.uint_;
-  case realValue:
-    return value_.real_ < other.value_.real_;
-  case booleanValue:
-    return value_.bool_ < other.value_.bool_;
-  case stringValue: {
-    if ((value_.string_ == nullptr) || (other.value_.string_ == nullptr)) {
-      if (other.value_.string_)
-        return true;
-      else
-        return false;
-    }
-    unsigned this_len;
-    unsigned other_len;
-    char const* this_str;
-    char const* other_str;
-    decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
-                         &this_str);
-    decodePrefixedString(other.isAllocated(), other.value_.string_, &other_len,
-                         &other_str);
-    unsigned min_len = std::min<unsigned>(this_len, other_len);
-    JSON_ASSERT(this_str && other_str);
-    int comp = memcmp(this_str, other_str, min_len);
-    if (comp < 0)
-      return true;
-    if (comp > 0)
-      return false;
-    return (this_len < other_len);
-  }
-  case arrayValue:
-  case objectValue: {
-    int delta = int(value_.map_->size() - other.value_.map_->size());
-    if (delta)
-      return delta < 0;
-    return (*value_.map_) < (*other.value_.map_);
-  }
-  default:
-    JSON_ASSERT_UNREACHABLE;
-  }
-  return false; // unreachable
-}
-
-bool Value::operator<=(const Value& other) const { return !(other < *this); }
-
-bool Value::operator>=(const Value& other) const { return !(*this < other); }
-
-bool Value::operator>(const Value& other) const { return other < *this; }
-
-bool Value::operator==(const Value& other) const {
-  if (type() != other.type())
-    return false;
-  switch (type()) {
-  case nullValue:
-    return true;
-  case intValue:
-    return value_.int_ == other.value_.int_;
-  case uintValue:
-    return value_.uint_ == other.value_.uint_;
-  case realValue:
-    return value_.real_ == other.value_.real_;
-  case booleanValue:
-    return value_.bool_ == other.value_.bool_;
-  case stringValue: {
-    if ((value_.string_ == nullptr) || (other.value_.string_ == nullptr)) {
-      return (value_.string_ == other.value_.string_);
-    }
-    unsigned this_len;
-    unsigned other_len;
-    char const* this_str;
-    char const* other_str;
-    decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
-                         &this_str);
-    decodePrefixedString(other.isAllocated(), other.value_.string_, &other_len,
-                         &other_str);
-    if (this_len != other_len)
-      return false;
-    JSON_ASSERT(this_str && other_str);
-    int comp = memcmp(this_str, other_str, this_len);
-    return comp == 0;
-  }
-  case arrayValue:
-  case objectValue:
-    return value_.map_->size() == other.value_.map_->size() &&
-           (*value_.map_) == (*other.value_.map_);
-  default:
-    JSON_ASSERT_UNREACHABLE;
-  }
-  return false; // unreachable
-}
-
-bool Value::operator!=(const Value& other) const { return !(*this == other); }
-
-const char* Value::asCString() const {
-  JSON_ASSERT_MESSAGE(type() == stringValue,
-                      "in Json::Value::asCString(): requires stringValue");
-  if (value_.string_ == nullptr)
-    return nullptr;
-  unsigned this_len;
-  char const* this_str;
-  decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
-                       &this_str);
-  return this_str;
-}
-
-#if JSONCPP_USING_SECURE_MEMORY
-unsigned Value::getCStringLength() const {
-  JSON_ASSERT_MESSAGE(type() == stringValue,
-                      "in Json::Value::asCString(): requires stringValue");
-  if (value_.string_ == 0)
-    return 0;
-  unsigned this_len;
-  char const* this_str;
-  decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
-                       &this_str);
-  return this_len;
-}
-#endif
-
-bool Value::getString(char const** begin, char const** end) const {
-  if (type() != stringValue)
-    return false;
-  if (value_.string_ == nullptr)
-    return false;
-  unsigned length;
-  decodePrefixedString(this->isAllocated(), this->value_.string_, &length,
-                       begin);
-  *end = *begin + length;
-  return true;
-}
-
-String Value::asString() const {
-  switch (type()) {
-  case nullValue:
-    return "";
-  case stringValue: {
-    if (value_.string_ == nullptr)
-      return "";
-    unsigned this_len;
-    char const* this_str;
-    decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
-                         &this_str);
-    return String(this_str, this_len);
-  }
-  case booleanValue:
-    return value_.bool_ ? "true" : "false";
-  case intValue:
-    return valueToString(value_.int_);
-  case uintValue:
-    return valueToString(value_.uint_);
-  case realValue:
-    return valueToString(value_.real_);
-  default:
-    JSON_FAIL_MESSAGE("Type is not convertible to string");
-  }
-}
-
-#ifdef JSON_USE_CPPTL
-CppTL::ConstString Value::asConstString() const {
-  unsigned len;
-  char const* str;
-  decodePrefixedString(isAllocated(), value_.string_, &len, &str);
-  return CppTL::ConstString(str, len);
-}
-#endif
-
-Value::Int Value::asInt() const {
-  switch (type()) {
-  case intValue:
-    JSON_ASSERT_MESSAGE(isInt(), "LargestInt out of Int range");
-    return Int(value_.int_);
-  case uintValue:
-    JSON_ASSERT_MESSAGE(isInt(), "LargestUInt out of Int range");
-    return Int(value_.uint_);
-  case realValue:
-    JSON_ASSERT_MESSAGE(InRange(value_.real_, minInt, maxInt),
-                        "double out of Int range");
-    return Int(value_.real_);
-  case nullValue:
-    return 0;
-  case booleanValue:
-    return value_.bool_ ? 1 : 0;
-  default:
-    break;
-  }
-  JSON_FAIL_MESSAGE("Value is not convertible to Int.");
-}
-
-Value::UInt Value::asUInt() const {
-  switch (type()) {
-  case intValue:
-    JSON_ASSERT_MESSAGE(isUInt(), "LargestInt out of UInt range");
-    return UInt(value_.int_);
-  case uintValue:
-    JSON_ASSERT_MESSAGE(isUInt(), "LargestUInt out of UInt range");
-    return UInt(value_.uint_);
-  case realValue:
-    JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt),
-                        "double out of UInt range");
-    return UInt(value_.real_);
-  case nullValue:
-    return 0;
-  case booleanValue:
-    return value_.bool_ ? 1 : 0;
-  default:
-    break;
-  }
-  JSON_FAIL_MESSAGE("Value is not convertible to UInt.");
-}
-
-#if defined(JSON_HAS_INT64)
-
-Value::Int64 Value::asInt64() const {
-  switch (type()) {
-  case intValue:
-    return Int64(value_.int_);
-  case uintValue:
-    JSON_ASSERT_MESSAGE(isInt64(), "LargestUInt out of Int64 range");
-    return Int64(value_.uint_);
-  case realValue:
-    JSON_ASSERT_MESSAGE(InRange(value_.real_, minInt64, maxInt64),
-                        "double out of Int64 range");
-    return Int64(value_.real_);
-  case nullValue:
-    return 0;
-  case booleanValue:
-    return value_.bool_ ? 1 : 0;
-  default:
-    break;
-  }
-  JSON_FAIL_MESSAGE("Value is not convertible to Int64.");
-}
-
-Value::UInt64 Value::asUInt64() const {
-  switch (type()) {
-  case intValue:
-    JSON_ASSERT_MESSAGE(isUInt64(), "LargestInt out of UInt64 range");
-    return UInt64(value_.int_);
-  case uintValue:
-    return UInt64(value_.uint_);
-  case realValue:
-    JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt64),
-                        "double out of UInt64 range");
-    return UInt64(value_.real_);
-  case nullValue:
-    return 0;
-  case booleanValue:
-    return value_.bool_ ? 1 : 0;
-  default:
-    break;
-  }
-  JSON_FAIL_MESSAGE("Value is not convertible to UInt64.");
-}
-#endif // if defined(JSON_HAS_INT64)
-
-LargestInt Value::asLargestInt() const {
-#if defined(JSON_NO_INT64)
-  return asInt();
-#else
-  return asInt64();
-#endif
-}
-
-LargestUInt Value::asLargestUInt() const {
-#if defined(JSON_NO_INT64)
-  return asUInt();
-#else
-  return asUInt64();
-#endif
-}
-
-double Value::asDouble() const {
-  switch (type()) {
-  case intValue:
-    return static_cast<double>(value_.int_);
-  case uintValue:
-#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
-    return static_cast<double>(value_.uint_);
-#else  // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
-    return integerToDouble(value_.uint_);
-#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
-  case realValue:
-    return value_.real_;
-  case nullValue:
-    return 0.0;
-  case booleanValue:
-    return value_.bool_ ? 1.0 : 0.0;
-  default:
-    break;
-  }
-  JSON_FAIL_MESSAGE("Value is not convertible to double.");
-}
-
-float Value::asFloat() const {
-  switch (type()) {
-  case intValue:
-    return static_cast<float>(value_.int_);
-  case uintValue:
-#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
-    return static_cast<float>(value_.uint_);
-#else  // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
-    // This can fail (silently?) if the value is bigger than MAX_FLOAT.
-    return static_cast<float>(integerToDouble(value_.uint_));
-#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
-  case realValue:
-    return static_cast<float>(value_.real_);
-  case nullValue:
-    return 0.0;
-  case booleanValue:
-    return value_.bool_ ? 1.0f : 0.0f;
-  default:
-    break;
-  }
-  JSON_FAIL_MESSAGE("Value is not convertible to float.");
-}
-
-bool Value::asBool() const {
-  switch (type()) {
-  case booleanValue:
-    return value_.bool_;
-  case nullValue:
-    return false;
-  case intValue:
-    return value_.int_ ? true : false;
-  case uintValue:
-    return value_.uint_ ? true : false;
-  case realValue:
-    // This is kind of strange. Not recommended.
-    return (value_.real_ != 0.0) ? true : false;
-  default:
-    break;
-  }
-  JSON_FAIL_MESSAGE("Value is not convertible to bool.");
-}
-
-bool Value::isConvertibleTo(ValueType other) const {
-  switch (other) {
-  case nullValue:
-    return (isNumeric() && asDouble() == 0.0) ||
-           (type() == booleanValue && value_.bool_ == false) ||
-           (type() == stringValue && asString().empty()) ||
-           (type() == arrayValue && value_.map_->empty()) ||
-           (type() == objectValue && value_.map_->empty()) ||
-           type() == nullValue;
-  case intValue:
-    return isInt() ||
-           (type() == realValue && InRange(value_.real_, minInt, maxInt)) ||
-           type() == booleanValue || type() == nullValue;
-  case uintValue:
-    return isUInt() ||
-           (type() == realValue && InRange(value_.real_, 0, maxUInt)) ||
-           type() == booleanValue || type() == nullValue;
-  case realValue:
-    return isNumeric() || type() == booleanValue || type() == nullValue;
-  case booleanValue:
-    return isNumeric() || type() == booleanValue || type() == nullValue;
-  case stringValue:
-    return isNumeric() || type() == booleanValue || type() == stringValue ||
-           type() == nullValue;
-  case arrayValue:
-    return type() == arrayValue || type() == nullValue;
-  case objectValue:
-    return type() == objectValue || type() == nullValue;
-  }
-  JSON_ASSERT_UNREACHABLE;
-  return false;
-}
-
-/// Number of values in array or object
-ArrayIndex Value::size() const {
-  switch (type()) {
-  case nullValue:
-  case intValue:
-  case uintValue:
-  case realValue:
-  case booleanValue:
-  case stringValue:
-    return 0;
-  case arrayValue: // size of the array is highest index + 1
-    if (!value_.map_->empty()) {
-      ObjectValues::const_iterator itLast = value_.map_->end();
-      --itLast;
-      return (*itLast).first.index() + 1;
-    }
-    return 0;
-  case objectValue:
-    return ArrayIndex(value_.map_->size());
-  }
-  JSON_ASSERT_UNREACHABLE;
-  return 0; // unreachable;
-}
-
-bool Value::empty() const {
-  if (isNull() || isArray() || isObject())
-    return size() == 0u;
-  else
-    return false;
-}
-
-Value::operator bool() const { return !isNull(); }
-
-void Value::clear() {
-  JSON_ASSERT_MESSAGE(type() == nullValue || type() == arrayValue ||
-                          type() == objectValue,
-                      "in Json::Value::clear(): requires complex value");
-  start_ = 0;
-  limit_ = 0;
-  switch (type()) {
-  case arrayValue:
-  case objectValue:
-    value_.map_->clear();
-    break;
-  default:
-    break;
-  }
-}
-
-void Value::resize(ArrayIndex newSize) {
-  JSON_ASSERT_MESSAGE(type() == nullValue || type() == arrayValue,
-                      "in Json::Value::resize(): requires arrayValue");
-  if (type() == nullValue)
-    *this = Value(arrayValue);
-  ArrayIndex oldSize = size();
-  if (newSize == 0)
-    clear();
-  else if (newSize > oldSize)
-    this->operator[](newSize - 1);
-  else {
-    for (ArrayIndex index = newSize; index < oldSize; ++index) {
-      value_.map_->erase(index);
-    }
-    JSON_ASSERT(size() == newSize);
-  }
-}
-
-Value& Value::operator[](ArrayIndex index) {
-  JSON_ASSERT_MESSAGE(
-      type() == nullValue || type() == arrayValue,
-      "in Json::Value::operator[](ArrayIndex): requires arrayValue");
-  if (type() == nullValue)
-    *this = Value(arrayValue);
-  CZString key(index);
-  auto it = value_.map_->lower_bound(key);
-  if (it != value_.map_->end() && (*it).first == key)
-    return (*it).second;
-
-  ObjectValues::value_type defaultValue(key, nullSingleton());
-  it = value_.map_->insert(it, defaultValue);
-  return (*it).second;
-}
-
-Value& Value::operator[](int index) {
-  JSON_ASSERT_MESSAGE(
-      index >= 0,
-      "in Json::Value::operator[](int index): index cannot be negative");
-  return (*this)[ArrayIndex(index)];
-}
-
-const Value& Value::operator[](ArrayIndex index) const {
-  JSON_ASSERT_MESSAGE(
-      type() == nullValue || type() == arrayValue,
-      "in Json::Value::operator[](ArrayIndex)const: requires arrayValue");
-  if (type() == nullValue)
-    return nullSingleton();
-  CZString key(index);
-  ObjectValues::const_iterator it = value_.map_->find(key);
-  if (it == value_.map_->end())
-    return nullSingleton();
-  return (*it).second;
-}
-
-const Value& Value::operator[](int index) const {
-  JSON_ASSERT_MESSAGE(
-      index >= 0,
-      "in Json::Value::operator[](int index) const: index cannot be negative");
-  return (*this)[ArrayIndex(index)];
-}
-
-void Value::initBasic(ValueType type, bool allocated) {
-  setType(type);
-  setIsAllocated(allocated);
-  comments_ = nullptr;
-  start_ = 0;
-  limit_ = 0;
-}
-
-void Value::dupPayload(const Value& other) {
-  setType(other.type());
-  setIsAllocated(false);
-  switch (type()) {
-  case nullValue:
-  case intValue:
-  case uintValue:
-  case realValue:
-  case booleanValue:
-    value_ = other.value_;
-    break;
-  case stringValue:
-    if (other.value_.string_ && other.isAllocated()) {
-      unsigned len;
-      char const* str;
-      decodePrefixedString(other.isAllocated(), other.value_.string_, &len,
-                           &str);
-      value_.string_ = duplicateAndPrefixStringValue(str, len);
-      setIsAllocated(true);
-    } else {
-      value_.string_ = other.value_.string_;
-    }
-    break;
-  case arrayValue:
-  case objectValue:
-    value_.map_ = new ObjectValues(*other.value_.map_);
-    break;
-  default:
-    JSON_ASSERT_UNREACHABLE;
-  }
-}
-
-void Value::releasePayload() {
-  switch (type()) {
-  case nullValue:
-  case intValue:
-  case uintValue:
-  case realValue:
-  case booleanValue:
-    break;
-  case stringValue:
-    if (isAllocated())
-      releasePrefixedStringValue(value_.string_);
-    break;
-  case arrayValue:
-  case objectValue:
-    delete value_.map_;
-    break;
-  default:
-    JSON_ASSERT_UNREACHABLE;
-  }
-}
-
-void Value::dupMeta(const Value& other) {
-  if (other.comments_) {
-    comments_ = new CommentInfo[numberOfCommentPlacement];
-    for (int comment = 0; comment < numberOfCommentPlacement; ++comment) {
-      const CommentInfo& otherComment = other.comments_[comment];
-      if (otherComment.comment_)
-        comments_[comment].setComment(otherComment.comment_,
-                                      strlen(otherComment.comment_));
-    }
-  } else {
-    comments_ = nullptr;
-  }
-  start_ = other.start_;
-  limit_ = other.limit_;
-}
-
-// Access an object value by name, create a null member if it does not exist.
-// @pre Type of '*this' is object or null.
-// @param key is null-terminated.
-Value& Value::resolveReference(const char* key) {
-  JSON_ASSERT_MESSAGE(
-      type() == nullValue || type() == objectValue,
-      "in Json::Value::resolveReference(): requires objectValue");
-  if (type() == nullValue)
-    *this = Value(objectValue);
-  CZString actualKey(key, static_cast<unsigned>(strlen(key)),
-                     CZString::noDuplication); // NOTE!
-  auto it = value_.map_->lower_bound(actualKey);
-  if (it != value_.map_->end() && (*it).first == actualKey)
-    return (*it).second;
-
-  ObjectValues::value_type defaultValue(actualKey, nullSingleton());
-  it = value_.map_->insert(it, defaultValue);
-  Value& value = (*it).second;
-  return value;
-}
-
-// @param key is not null-terminated.
-Value& Value::resolveReference(char const* key, char const* end) {
-  JSON_ASSERT_MESSAGE(
-      type() == nullValue || type() == objectValue,
-      "in Json::Value::resolveReference(key, end): requires objectValue");
-  if (type() == nullValue)
-    *this = Value(objectValue);
-  CZString actualKey(key, static_cast<unsigned>(end - key),
-                     CZString::duplicateOnCopy);
-  auto it = value_.map_->lower_bound(actualKey);
-  if (it != value_.map_->end() && (*it).first == actualKey)
-    return (*it).second;
-
-  ObjectValues::value_type defaultValue(actualKey, nullSingleton());
-  it = value_.map_->insert(it, defaultValue);
-  Value& value = (*it).second;
-  return value;
-}
-
-Value Value::get(ArrayIndex index, const Value& defaultValue) const {
-  const Value* value = &((*this)[index]);
-  return value == &nullSingleton() ? defaultValue : *value;
-}
-
-bool Value::isValidIndex(ArrayIndex index) const { return index < size(); }
-
-Value const* Value::find(char const* begin, char const* end) const {
-  JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
-                      "in Json::Value::find(key, end, found): requires "
-                      "objectValue or nullValue");
-  if (type() == nullValue)
-    return nullptr;
-  CZString actualKey(begin, static_cast<unsigned>(end - begin),
-                     CZString::noDuplication);
-  ObjectValues::const_iterator it = value_.map_->find(actualKey);
-  if (it == value_.map_->end())
-    return nullptr;
-  return &(*it).second;
-}
-const Value& Value::operator[](const char* key) const {
-  Value const* found = find(key, key + strlen(key));
-  if (!found)
-    return nullSingleton();
-  return *found;
-}
-Value const& Value::operator[](const String& key) const {
-  Value const* found = find(key.data(), key.data() + key.length());
-  if (!found)
-    return nullSingleton();
-  return *found;
-}
-
-Value& Value::operator[](const char* key) {
-  return resolveReference(key, key + strlen(key));
-}
-
-Value& Value::operator[](const String& key) {
-  return resolveReference(key.data(), key.data() + key.length());
-}
-
-Value& Value::operator[](const StaticString& key) {
-  return resolveReference(key.c_str());
-}
-
-#ifdef JSON_USE_CPPTL
-Value& Value::operator[](const CppTL::ConstString& key) {
-  return resolveReference(key.c_str(), key.end_c_str());
-}
-Value const& Value::operator[](CppTL::ConstString const& key) const {
-  Value const* found = find(key.c_str(), key.end_c_str());
-  if (!found)
-    return nullSingleton();
-  return *found;
-}
-#endif
-
-Value& Value::append(const Value& value) { return (*this)[size()] = value; }
-
-#if JSON_HAS_RVALUE_REFERENCES
-Value& Value::append(Value&& value) {
-  return (*this)[size()] = std::move(value);
-}
-#endif
-
-Value Value::get(char const* begin,
-                 char const* end,
-                 Value const& defaultValue) const {
-  Value const* found = find(begin, end);
-  return !found ? defaultValue : *found;
-}
-Value Value::get(char const* key, Value const& defaultValue) const {
-  return get(key, key + strlen(key), defaultValue);
-}
-Value Value::get(String const& key, Value const& defaultValue) const {
-  return get(key.data(), key.data() + key.length(), defaultValue);
-}
-
-bool Value::removeMember(const char* begin, const char* end, Value* removed) {
-  if (type() != objectValue) {
-    return false;
-  }
-  CZString actualKey(begin, static_cast<unsigned>(end - begin),
-                     CZString::noDuplication);
-  auto it = value_.map_->find(actualKey);
-  if (it == value_.map_->end())
-    return false;
-  if (removed)
-#if JSON_HAS_RVALUE_REFERENCES
-    *removed = std::move(it->second);
-#else
-    *removed = it->second;
-#endif
-  value_.map_->erase(it);
-  return true;
-}
-bool Value::removeMember(const char* key, Value* removed) {
-  return removeMember(key, key + strlen(key), removed);
-}
-bool Value::removeMember(String const& key, Value* removed) {
-  return removeMember(key.data(), key.data() + key.length(), removed);
-}
-void Value::removeMember(const char* key) {
-  JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
-                      "in Json::Value::removeMember(): requires objectValue");
-  if (type() == nullValue)
-    return;
-
-  CZString actualKey(key, unsigned(strlen(key)), CZString::noDuplication);
-  value_.map_->erase(actualKey);
-}
-void Value::removeMember(const String& key) { removeMember(key.c_str()); }
-
-bool Value::removeIndex(ArrayIndex index, Value* removed) {
-  if (type() != arrayValue) {
-    return false;
-  }
-  CZString key(index);
-  auto it = value_.map_->find(key);
-  if (it == value_.map_->end()) {
-    return false;
-  }
-  if (removed)
-    *removed = it->second;
-  ArrayIndex oldSize = size();
-  // shift left all items left, into the place of the "removed"
-  for (ArrayIndex i = index; i < (oldSize - 1); ++i) {
-    CZString keey(i);
-    (*value_.map_)[keey] = (*this)[i + 1];
-  }
-  // erase the last one ("leftover")
-  CZString keyLast(oldSize - 1);
-  auto itLast = value_.map_->find(keyLast);
-  value_.map_->erase(itLast);
-  return true;
-}
-
-#ifdef JSON_USE_CPPTL
-Value Value::get(const CppTL::ConstString& key,
-                 const Value& defaultValue) const {
-  return get(key.c_str(), key.end_c_str(), defaultValue);
-}
-#endif
-
-bool Value::isMember(char const* begin, char const* end) const {
-  Value const* value = find(begin, end);
-  return nullptr != value;
-}
-bool Value::isMember(char const* key) const {
-  return isMember(key, key + strlen(key));
-}
-bool Value::isMember(String const& key) const {
-  return isMember(key.data(), key.data() + key.length());
-}
-
-#ifdef JSON_USE_CPPTL
-bool Value::isMember(const CppTL::ConstString& key) const {
-  return isMember(key.c_str(), key.end_c_str());
-}
-#endif
-
-Value::Members Value::getMemberNames() const {
-  JSON_ASSERT_MESSAGE(
-      type() == nullValue || type() == objectValue,
-      "in Json::Value::getMemberNames(), value must be objectValue");
-  if (type() == nullValue)
-    return Value::Members();
-  Members members;
-  members.reserve(value_.map_->size());
-  ObjectValues::const_iterator it = value_.map_->begin();
-  ObjectValues::const_iterator itEnd = value_.map_->end();
-  for (; it != itEnd; ++it) {
-    members.push_back(String((*it).first.data(), (*it).first.length()));
-  }
-  return members;
-}
-//
-//# ifdef JSON_USE_CPPTL
-// EnumMemberNames
-// Value::enumMemberNames() const
-//{
-//   if ( type() == objectValue )
-//   {
-//      return CppTL::Enum::any(  CppTL::Enum::transform(
-//         CppTL::Enum::keys( *(value_.map_), CppTL::Type<const CZString &>() ),
-//         MemberNamesTransform() ) );
-//   }
-//   return EnumMemberNames();
-//}
-//
-//
-// EnumValues
-// Value::enumValues() const
-//{
-//   if ( type() == objectValue  ||  type() == arrayValue )
-//      return CppTL::Enum::anyValues( *(value_.map_),
-//                                     CppTL::Type<const Value &>() );
-//   return EnumValues();
-//}
-//
-//# endif
-
-static bool IsIntegral(double d) {
-  double integral_part;
-  return modf(d, &integral_part) == 0.0;
-}
-
-bool Value::isNull() const { return type() == nullValue; }
-
-bool Value::isBool() const { return type() == booleanValue; }
-
-bool Value::isInt() const {
-  switch (type()) {
-  case intValue:
-#if defined(JSON_HAS_INT64)
-    return value_.int_ >= minInt && value_.int_ <= maxInt;
-#else
-    return true;
-#endif
-  case uintValue:
-    return value_.uint_ <= UInt(maxInt);
-  case realValue:
-    return value_.real_ >= minInt && value_.real_ <= maxInt &&
-           IsIntegral(value_.real_);
-  default:
-    break;
-  }
-  return false;
-}
-
-bool Value::isUInt() const {
-  switch (type()) {
-  case intValue:
-#if defined(JSON_HAS_INT64)
-    return value_.int_ >= 0 && LargestUInt(value_.int_) <= LargestUInt(maxUInt);
-#else
-    return value_.int_ >= 0;
-#endif
-  case uintValue:
-#if defined(JSON_HAS_INT64)
-    return value_.uint_ <= maxUInt;
-#else
-    return true;
-#endif
-  case realValue:
-    return value_.real_ >= 0 && value_.real_ <= maxUInt &&
-           IsIntegral(value_.real_);
-  default:
-    break;
-  }
-  return false;
-}
-
-bool Value::isInt64() const {
-#if defined(JSON_HAS_INT64)
-  switch (type()) {
-  case intValue:
-    return true;
-  case uintValue:
-    return value_.uint_ <= UInt64(maxInt64);
-  case realValue:
-    // Note that maxInt64 (= 2^63 - 1) is not exactly representable as a
-    // double, so double(maxInt64) will be rounded up to 2^63. Therefore we
-    // require the value to be strictly less than the limit.
-    return value_.real_ >= double(minInt64) &&
-           value_.real_ < double(maxInt64) && IsIntegral(value_.real_);
-  default:
-    break;
-  }
-#endif // JSON_HAS_INT64
-  return false;
-}
-
-bool Value::isUInt64() const {
-#if defined(JSON_HAS_INT64)
-  switch (type()) {
-  case intValue:
-    return value_.int_ >= 0;
-  case uintValue:
-    return true;
-  case realValue:
-    // Note that maxUInt64 (= 2^64 - 1) is not exactly representable as a
-    // double, so double(maxUInt64) will be rounded up to 2^64. Therefore we
-    // require the value to be strictly less than the limit.
-    return value_.real_ >= 0 && value_.real_ < maxUInt64AsDouble &&
-           IsIntegral(value_.real_);
-  default:
-    break;
-  }
-#endif // JSON_HAS_INT64
-  return false;
-}
-
-bool Value::isIntegral() const {
-  switch (type()) {
-  case intValue:
-  case uintValue:
-    return true;
-  case realValue:
-#if defined(JSON_HAS_INT64)
-    // Note that maxUInt64 (= 2^64 - 1) is not exactly representable as a
-    // double, so double(maxUInt64) will be rounded up to 2^64. Therefore we
-    // require the value to be strictly less than the limit.
-    return value_.real_ >= double(minInt64) &&
-           value_.real_ < maxUInt64AsDouble && IsIntegral(value_.real_);
-#else
-    return value_.real_ >= minInt && value_.real_ <= maxUInt &&
-           IsIntegral(value_.real_);
-#endif // JSON_HAS_INT64
-  default:
-    break;
-  }
-  return false;
-}
-
-bool Value::isDouble() const {
-  return type() == intValue || type() == uintValue || type() == realValue;
-}
-
-bool Value::isNumeric() const { return isDouble(); }
-
-bool Value::isString() const { return type() == stringValue; }
-
-bool Value::isArray() const { return type() == arrayValue; }
-
-bool Value::isObject() const { return type() == objectValue; }
-
-void Value::setComment(const char* comment,
-                       size_t len,
-                       CommentPlacement placement) {
-  if (!comments_)
-    comments_ = new CommentInfo[numberOfCommentPlacement];
-  if ((len > 0) && (comment[len - 1] == '\n')) {
-    // Always discard trailing newline, to aid indentation.
-    len -= 1;
-  }
-  comments_[placement].setComment(comment, len);
-}
-
-void Value::setComment(const char* comment, CommentPlacement placement) {
-  setComment(comment, strlen(comment), placement);
-}
-
-void Value::setComment(const String& comment, CommentPlacement placement) {
-  setComment(comment.c_str(), comment.length(), placement);
-}
-
-bool Value::hasComment(CommentPlacement placement) const {
-  return comments_ != nullptr && comments_[placement].comment_ != nullptr;
-}
-
-String Value::getComment(CommentPlacement placement) const {
-  if (hasComment(placement))
-    return comments_[placement].comment_;
-  return "";
-}
-
-void Value::setOffsetStart(ptrdiff_t start) { start_ = start; }
-
-void Value::setOffsetLimit(ptrdiff_t limit) { limit_ = limit; }
-
-ptrdiff_t Value::getOffsetStart() const { return start_; }
-
-ptrdiff_t Value::getOffsetLimit() const { return limit_; }
-
-String Value::toStyledString() const {
-  StreamWriterBuilder builder;
-
-  String out = this->hasComment(commentBefore) ? "\n" : "";
-  out += Json::writeString(builder, *this);
-  out += '\n';
-
-  return out;
-}
-
-Value::const_iterator Value::begin() const {
-  switch (type()) {
-  case arrayValue:
-  case objectValue:
-    if (value_.map_)
-      return const_iterator(value_.map_->begin());
-    break;
-  default:
-    break;
-  }
-  return {};
-}
-
-Value::const_iterator Value::end() const {
-  switch (type()) {
-  case arrayValue:
-  case objectValue:
-    if (value_.map_)
-      return const_iterator(value_.map_->end());
-    break;
-  default:
-    break;
-  }
-  return {};
-}
-
-Value::iterator Value::begin() {
-  switch (type()) {
-  case arrayValue:
-  case objectValue:
-    if (value_.map_)
-      return iterator(value_.map_->begin());
-    break;
-  default:
-    break;
-  }
-  return iterator();
-}
-
-Value::iterator Value::end() {
-  switch (type()) {
-  case arrayValue:
-  case objectValue:
-    if (value_.map_)
-      return iterator(value_.map_->end());
-    break;
-  default:
-    break;
-  }
-  return iterator();
-}
-
-// class PathArgument
-// //////////////////////////////////////////////////////////////////
-
-PathArgument::PathArgument() : key_() {}
-
-PathArgument::PathArgument(ArrayIndex index)
-    : key_(), index_(index), kind_(kindIndex) {}
-
-PathArgument::PathArgument(const char* key)
-    : key_(key), index_(), kind_(kindKey) {}
-
-PathArgument::PathArgument(const String& key)
-    : key_(key.c_str()), index_(), kind_(kindKey) {}
-
-// class Path
-// //////////////////////////////////////////////////////////////////
-
-Path::Path(const String& path,
-           const PathArgument& a1,
-           const PathArgument& a2,
-           const PathArgument& a3,
-           const PathArgument& a4,
-           const PathArgument& a5) {
-  InArgs in;
-  in.reserve(5);
-  in.push_back(&a1);
-  in.push_back(&a2);
-  in.push_back(&a3);
-  in.push_back(&a4);
-  in.push_back(&a5);
-  makePath(path, in);
-}
-
-void Path::makePath(const String& path, const InArgs& in) {
-  const char* current = path.c_str();
-  const char* end = current + path.length();
-  auto itInArg = in.begin();
-  while (current != end) {
-    if (*current == '[') {
-      ++current;
-      if (*current == '%')
-        addPathInArg(path, in, itInArg, PathArgument::kindIndex);
-      else {
-        ArrayIndex index = 0;
-        for (; current != end && *current >= '0' && *current <= '9'; ++current)
-          index = index * 10 + ArrayIndex(*current - '0');
-        args_.push_back(index);
-      }
-      if (current == end || *++current != ']')
-        invalidPath(path, int(current - path.c_str()));
-    } else if (*current == '%') {
-      addPathInArg(path, in, itInArg, PathArgument::kindKey);
-      ++current;
-    } else if (*current == '.' || *current == ']') {
-      ++current;
-    } else {
-      const char* beginName = current;
-      while (current != end && !strchr("[.", *current))
-        ++current;
-      args_.push_back(String(beginName, current));
-    }
-  }
-}
-
-void Path::addPathInArg(const String& /*path*/,
-                        const InArgs& in,
-                        InArgs::const_iterator& itInArg,
-                        PathArgument::Kind kind) {
-  if (itInArg == in.end()) {
-    // Error: missing argument %d
-  } else if ((*itInArg)->kind_ != kind) {
-    // Error: bad argument type
-  } else {
-    args_.push_back(**itInArg++);
-  }
-}
-
-void Path::invalidPath(const String& /*path*/, int /*location*/) {
-  // Error: invalid path.
-}
-
-const Value& Path::resolve(const Value& root) const {
-  const Value* node = &root;
-  for (const auto& arg : args_) {
-    if (arg.kind_ == PathArgument::kindIndex) {
-      if (!node->isArray() || !node->isValidIndex(arg.index_)) {
-        // Error: unable to resolve path (array value expected at position...
-        return Value::null;
-      }
-      node = &((*node)[arg.index_]);
-    } else if (arg.kind_ == PathArgument::kindKey) {
-      if (!node->isObject()) {
-        // Error: unable to resolve path (object value expected at position...)
-        return Value::null;
-      }
-      node = &((*node)[arg.key_]);
-      if (node == &Value::nullSingleton()) {
-        // Error: unable to resolve path (object has no member named '' at
-        // position...)
-        return Value::null;
-      }
-    }
-  }
-  return *node;
-}
-
-Value Path::resolve(const Value& root, const Value& defaultValue) const {
-  const Value* node = &root;
-  for (const auto& arg : args_) {
-    if (arg.kind_ == PathArgument::kindIndex) {
-      if (!node->isArray() || !node->isValidIndex(arg.index_))
-        return defaultValue;
-      node = &((*node)[arg.index_]);
-    } else if (arg.kind_ == PathArgument::kindKey) {
-      if (!node->isObject())
-        return defaultValue;
-      node = &((*node)[arg.key_]);
-      if (node == &Value::nullSingleton())
-        return defaultValue;
-    }
-  }
-  return *node;
-}
-
-Value& Path::make(Value& root) const {
-  Value* node = &root;
-  for (const auto& arg : args_) {
-    if (arg.kind_ == PathArgument::kindIndex) {
-      if (!node->isArray()) {
-        // Error: node is not an array at position ...
-      }
-      node = &((*node)[arg.index_]);
-    } else if (arg.kind_ == PathArgument::kindKey) {
-      if (!node->isObject()) {
-        // Error: node is not an object at position...
-      }
-      node = &((*node)[arg.key_]);
-    }
-  }
-  return *node;
-}
-
-} // namespace Json
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: src/lib_json/json_value.cpp
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// //////////////////////////////////////////////////////////////////////
-// Beginning of content of file: src/lib_json/json_writer.cpp
-// //////////////////////////////////////////////////////////////////////
-
-// Copyright 2011 Baptiste Lepilleur and The JsonCpp Authors
-// Distributed under MIT license, or public domain if desired and
-// recognized in your jurisdiction.
-// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
-
-#if !defined(JSON_IS_AMALGAMATION)
-#include "json_tool.h"
-#include <json/writer.h>
-#endif // if !defined(JSON_IS_AMALGAMATION)
-#include <cassert>
-#include <cstring>
-#include <iomanip>
-#include <memory>
-#include <set>
-#include <sstream>
-#include <utility>
-
-#if __cplusplus >= 201103L
-#include <cmath>
-#include <cstdio>
-
-#if !defined(isnan)
-#define isnan std::isnan
-#endif
-
-#if !defined(isfinite)
-#define isfinite std::isfinite
-#endif
-
-#else
-#include <cmath>
-#include <cstdio>
-
-#if defined(_MSC_VER)
-#if !defined(isnan)
-#include <float.h>
-#define isnan _isnan
-#endif
-
-#if !defined(isfinite)
-#include <float.h>
-#define isfinite _finite
-#endif
-
-#if !defined(_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES)
-#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
-#endif //_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
-
-#endif //_MSC_VER
-
-#if defined(__sun) && defined(__SVR4) // Solaris
-#if !defined(isfinite)
-#include <ieeefp.h>
-#define isfinite finite
-#endif
-#endif
-
-#if defined(__hpux)
-#if !defined(isfinite)
-#if defined(__ia64) && !defined(finite)
-#define isfinite(x)                                                            \
-  ((sizeof(x) == sizeof(float) ? _Isfinitef(x) : _IsFinite(x)))
-#endif
-#endif
-#endif
-
-#if !defined(isnan)
-// IEEE standard states that NaN values will not compare to themselves
-#define isnan(x) (x != x)
-#endif
-
-#if !defined(__APPLE__)
-#if !defined(isfinite)
-#define isfinite finite
-#endif
-#endif
-#endif
-
-#if defined(_MSC_VER)
-// Disable warning about strdup being deprecated.
-#pragma warning(disable : 4996)
-#endif
-
-namespace Json {
-
-#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520)
-typedef std::unique_ptr<StreamWriter> StreamWriterPtr;
-#else
-typedef std::unique_ptr<StreamWriter> StreamWriterPtr;
-#endif
-
-String valueToString(LargestInt value) {
-  UIntToStringBuffer buffer;
-  char* current = buffer + sizeof(buffer);
-  if (value == Value::minLargestInt) {
-    uintToString(LargestUInt(Value::maxLargestInt) + 1, current);
-    *--current = '-';
-  } else if (value < 0) {
-    uintToString(LargestUInt(-value), current);
-    *--current = '-';
-  } else {
-    uintToString(LargestUInt(value), current);
-  }
-  assert(current >= buffer);
-  return current;
-}
-
-String valueToString(LargestUInt value) {
-  UIntToStringBuffer buffer;
-  char* current = buffer + sizeof(buffer);
-  uintToString(value, current);
-  assert(current >= buffer);
-  return current;
-}
-
-#if defined(JSON_HAS_INT64)
-
-String valueToString(Int value) { return valueToString(LargestInt(value)); }
-
-String valueToString(UInt value) { return valueToString(LargestUInt(value)); }
-
-#endif // # if defined(JSON_HAS_INT64)
-
-namespace {
-String valueToString(double value,
-                     bool useSpecialFloats,
-                     unsigned int precision,
-                     PrecisionType precisionType) {
-  // Print into the buffer. We need not request the alternative representation
-  // that always has a decimal point because JSON doesn't distinguish the
-  // concepts of reals and integers.
-  if (!isfinite(value)) {
-    static const char* const reps[2][3] = {{"NaN", "-Infinity", "Infinity"},
-                                           {"null", "-1e+9999", "1e+9999"}};
-    return reps[useSpecialFloats ? 0 : 1]
-               [isnan(value) ? 0 : (value < 0) ? 1 : 2];
-  }
-
-  String buffer(size_t(36), '\0');
-  while (true) {
-    int len = jsoncpp_snprintf(
-        &*buffer.begin(), buffer.size(),
-        (precisionType == PrecisionType::significantDigits) ? "%.*g" : "%.*f",
-        precision, value);
-    assert(len >= 0);
-    auto wouldPrint = static_cast<size_t>(len);
-    if (wouldPrint >= buffer.size()) {
-      buffer.resize(wouldPrint + 1);
-      continue;
-    }
-    buffer.resize(wouldPrint);
-    break;
-  }
-
-  buffer.erase(fixNumericLocale(buffer.begin(), buffer.end()), buffer.end());
-
-  // strip the zero padding from the right
-  if (precisionType == PrecisionType::decimalPlaces) {
-    buffer.erase(fixZerosInTheEnd(buffer.begin(), buffer.end()), buffer.end());
-  }
-
-  // try to ensure we preserve the fact that this was given to us as a double on
-  // input
-  if (buffer.find('.') == buffer.npos && buffer.find('e') == buffer.npos) {
-    buffer += ".0";
-  }
-  return buffer;
-}
-} // namespace
-
-String valueToString(double value,
-                     unsigned int precision,
-                     PrecisionType precisionType) {
-  return valueToString(value, false, precision, precisionType);
-}
-
-String valueToString(bool value) { return value ? "true" : "false"; }
-
-static bool isAnyCharRequiredQuoting(char const* s, size_t n) {
-  assert(s || !n);
-
-  char const* const end = s + n;
-  for (char const* cur = s; cur < end; ++cur) {
-    if (*cur == '\\' || *cur == '\"' || *cur < ' ' ||
-        static_cast<unsigned char>(*cur) < 0x80)
-      return true;
-  }
-  return false;
-}
-
-static unsigned int utf8ToCodepoint(const char*& s, const char* e) {
-  const unsigned int REPLACEMENT_CHARACTER = 0xFFFD;
-
-  unsigned int firstByte = static_cast<unsigned char>(*s);
-
-  if (firstByte < 0x80)
-    return firstByte;
-
-  if (firstByte < 0xE0) {
-    if (e - s < 2)
-      return REPLACEMENT_CHARACTER;
-
-    unsigned int calculated =
-        ((firstByte & 0x1F) << 6) | (static_cast<unsigned int>(s[1]) & 0x3F);
-    s += 1;
-    // oversized encoded characters are invalid
-    return calculated < 0x80 ? REPLACEMENT_CHARACTER : calculated;
-  }
-
-  if (firstByte < 0xF0) {
-    if (e - s < 3)
-      return REPLACEMENT_CHARACTER;
-
-    unsigned int calculated = ((firstByte & 0x0F) << 12) |
-                              ((static_cast<unsigned int>(s[1]) & 0x3F) << 6) |
-                              (static_cast<unsigned int>(s[2]) & 0x3F);
-    s += 2;
-    // surrogates aren't valid codepoints itself
-    // shouldn't be UTF-8 encoded
-    if (calculated >= 0xD800 && calculated <= 0xDFFF)
-      return REPLACEMENT_CHARACTER;
-    // oversized encoded characters are invalid
-    return calculated < 0x800 ? REPLACEMENT_CHARACTER : calculated;
-  }
-
-  if (firstByte < 0xF8) {
-    if (e - s < 4)
-      return REPLACEMENT_CHARACTER;
-
-    unsigned int calculated = ((firstByte & 0x07) << 18) |
-                              ((static_cast<unsigned int>(s[1]) & 0x3F) << 12) |
-                              ((static_cast<unsigned int>(s[2]) & 0x3F) << 6) |
-                              (static_cast<unsigned int>(s[3]) & 0x3F);
-    s += 3;
-    // oversized encoded characters are invalid
-    return calculated < 0x10000 ? REPLACEMENT_CHARACTER : calculated;
-  }
-
-  return REPLACEMENT_CHARACTER;
-}
-
-static const char hex2[] = "000102030405060708090a0b0c0d0e0f"
-                           "101112131415161718191a1b1c1d1e1f"
-                           "202122232425262728292a2b2c2d2e2f"
-                           "303132333435363738393a3b3c3d3e3f"
-                           "404142434445464748494a4b4c4d4e4f"
-                           "505152535455565758595a5b5c5d5e5f"
-                           "606162636465666768696a6b6c6d6e6f"
-                           "707172737475767778797a7b7c7d7e7f"
-                           "808182838485868788898a8b8c8d8e8f"
-                           "909192939495969798999a9b9c9d9e9f"
-                           "a0a1a2a3a4a5a6a7a8a9aaabacadaeaf"
-                           "b0b1b2b3b4b5b6b7b8b9babbbcbdbebf"
-                           "c0c1c2c3c4c5c6c7c8c9cacbcccdcecf"
-                           "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf"
-                           "e0e1e2e3e4e5e6e7e8e9eaebecedeeef"
-                           "f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff";
-
-static String toHex16Bit(unsigned int x) {
-  const unsigned int hi = (x >> 8) & 0xff;
-  const unsigned int lo = x & 0xff;
-  String result(4, ' ');
-  result[0] = hex2[2 * hi];
-  result[1] = hex2[2 * hi + 1];
-  result[2] = hex2[2 * lo];
-  result[3] = hex2[2 * lo + 1];
-  return result;
-}
-
-static String valueToQuotedStringN(const char* value, unsigned length) {
-  if (value == nullptr)
-    return "";
-
-  if (!isAnyCharRequiredQuoting(value, length))
-    return String("\"") + value + "\"";
-  // We have to walk value and escape any special characters.
-  // Appending to String is not efficient, but this should be rare.
-  // (Note: forward slashes are *not* rare, but I am not escaping them.)
-  String::size_type maxsize = length * 2 + 3; // allescaped+quotes+NULL
-  String result;
-  result.reserve(maxsize); // to avoid lots of mallocs
-  result += "\"";
-  char const* end = value + length;
-  for (const char* c = value; c != end; ++c) {
-    switch (*c) {
-    case '\"':
-      result += "\\\"";
-      break;
-    case '\\':
-      result += "\\\\";
-      break;
-    case '\b':
-      result += "\\b";
-      break;
-    case '\f':
-      result += "\\f";
-      break;
-    case '\n':
-      result += "\\n";
-      break;
-    case '\r':
-      result += "\\r";
-      break;
-    case '\t':
-      result += "\\t";
-      break;
-    // case '/':
-    // Even though \/ is considered a legal escape in JSON, a bare
-    // slash is also legal, so I see no reason to escape it.
-    // (I hope I am not misunderstanding something.)
-    // blep notes: actually escaping \/ may be useful in javascript to avoid </
-    // sequence.
-    // Should add a flag to allow this compatibility mode and prevent this
-    // sequence from occurring.
-    default: {
-      unsigned int cp = utf8ToCodepoint(c, end);
-      // don't escape non-control characters
-      // (short escape sequence are applied above)
-      if (cp < 0x80 && cp >= 0x20)
-        result += static_cast<char>(cp);
-      else if (cp < 0x10000) { // codepoint is in Basic Multilingual Plane
-        result += "\\u";
-        result += toHex16Bit(cp);
-      } else { // codepoint is not in Basic Multilingual Plane
-               // convert to surrogate pair first
-        cp -= 0x10000;
-        result += "\\u";
-        result += toHex16Bit((cp >> 10) + 0xD800);
-        result += "\\u";
-        result += toHex16Bit((cp & 0x3FF) + 0xDC00);
-      }
-    } break;
-    }
-  }
-  result += "\"";
-  return result;
-}
-
-String valueToQuotedString(const char* value) {
-  return valueToQuotedStringN(value, static_cast<unsigned int>(strlen(value)));
-}
-
-// Class Writer
-// //////////////////////////////////////////////////////////////////
-Writer::~Writer() = default;
-
-// Class FastWriter
-// //////////////////////////////////////////////////////////////////
-
-FastWriter::FastWriter()
-
-    = default;
-
-void FastWriter::enableYAMLCompatibility() { yamlCompatibilityEnabled_ = true; }
-
-void FastWriter::dropNullPlaceholders() { dropNullPlaceholders_ = true; }
-
-void FastWriter::omitEndingLineFeed() { omitEndingLineFeed_ = true; }
-
-String FastWriter::write(const Value& root) {
-  document_.clear();
-  writeValue(root);
-  if (!omitEndingLineFeed_)
-    document_ += '\n';
-  return document_;
-}
-
-void FastWriter::writeValue(const Value& value) {
-  switch (value.type()) {
-  case nullValue:
-    if (!dropNullPlaceholders_)
-      document_ += "null";
-    break;
-  case intValue:
-    document_ += valueToString(value.asLargestInt());
-    break;
-  case uintValue:
-    document_ += valueToString(value.asLargestUInt());
-    break;
-  case realValue:
-    document_ += valueToString(value.asDouble());
-    break;
-  case stringValue: {
-    // Is NULL possible for value.string_? No.
-    char const* str;
-    char const* end;
-    bool ok = value.getString(&str, &end);
-    if (ok)
-      document_ += valueToQuotedStringN(str, static_cast<unsigned>(end - str));
-    break;
-  }
-  case booleanValue:
-    document_ += valueToString(value.asBool());
-    break;
-  case arrayValue: {
-    document_ += '[';
-    ArrayIndex size = value.size();
-    for (ArrayIndex index = 0; index < size; ++index) {
-      if (index > 0)
-        document_ += ',';
-      writeValue(value[index]);
-    }
-    document_ += ']';
-  } break;
-  case objectValue: {
-    Value::Members members(value.getMemberNames());
-    document_ += '{';
-    for (auto it = members.begin(); it != members.end(); ++it) {
-      const String& name = *it;
-      if (it != members.begin())
-        document_ += ',';
-      document_ += valueToQuotedStringN(name.data(),
-                                        static_cast<unsigned>(name.length()));
-      document_ += yamlCompatibilityEnabled_ ? ": " : ":";
-      writeValue(value[name]);
-    }
-    document_ += '}';
-  } break;
-  }
-}
-
-// Class StyledWriter
-// //////////////////////////////////////////////////////////////////
-
-StyledWriter::StyledWriter() = default;
-
-String StyledWriter::write(const Value& root) {
-  document_.clear();
-  addChildValues_ = false;
-  indentString_.clear();
-  writeCommentBeforeValue(root);
-  writeValue(root);
-  writeCommentAfterValueOnSameLine(root);
-  document_ += '\n';
-  return document_;
-}
-
-void StyledWriter::writeValue(const Value& value) {
-  switch (value.type()) {
-  case nullValue:
-    pushValue("null");
-    break;
-  case intValue:
-    pushValue(valueToString(value.asLargestInt()));
-    break;
-  case uintValue:
-    pushValue(valueToString(value.asLargestUInt()));
-    break;
-  case realValue:
-    pushValue(valueToString(value.asDouble()));
-    break;
-  case stringValue: {
-    // Is NULL possible for value.string_? No.
-    char const* str;
-    char const* end;
-    bool ok = value.getString(&str, &end);
-    if (ok)
-      pushValue(valueToQuotedStringN(str, static_cast<unsigned>(end - str)));
-    else
-      pushValue("");
-    break;
-  }
-  case booleanValue:
-    pushValue(valueToString(value.asBool()));
-    break;
-  case arrayValue:
-    writeArrayValue(value);
-    break;
-  case objectValue: {
-    Value::Members members(value.getMemberNames());
-    if (members.empty())
-      pushValue("{}");
-    else {
-      writeWithIndent("{");
-      indent();
-      auto it = members.begin();
-      for (;;) {
-        const String& name = *it;
-        const Value& childValue = value[name];
-        writeCommentBeforeValue(childValue);
-        writeWithIndent(valueToQuotedString(name.c_str()));
-        document_ += " : ";
-        writeValue(childValue);
-        if (++it == members.end()) {
-          writeCommentAfterValueOnSameLine(childValue);
-          break;
-        }
-        document_ += ',';
-        writeCommentAfterValueOnSameLine(childValue);
-      }
-      unindent();
-      writeWithIndent("}");
-    }
-  } break;
-  }
-}
-
-void StyledWriter::writeArrayValue(const Value& value) {
-  unsigned size = value.size();
-  if (size == 0)
-    pushValue("[]");
-  else {
-    bool isArrayMultiLine = isMultilineArray(value);
-    if (isArrayMultiLine) {
-      writeWithIndent("[");
-      indent();
-      bool hasChildValue = !childValues_.empty();
-      unsigned index = 0;
-      for (;;) {
-        const Value& childValue = value[index];
-        writeCommentBeforeValue(childValue);
-        if (hasChildValue)
-          writeWithIndent(childValues_[index]);
-        else {
-          writeIndent();
-          writeValue(childValue);
-        }
-        if (++index == size) {
-          writeCommentAfterValueOnSameLine(childValue);
-          break;
-        }
-        document_ += ',';
-        writeCommentAfterValueOnSameLine(childValue);
-      }
-      unindent();
-      writeWithIndent("]");
-    } else // output on a single line
-    {
-      assert(childValues_.size() == size);
-      document_ += "[ ";
-      for (unsigned index = 0; index < size; ++index) {
-        if (index > 0)
-          document_ += ", ";
-        document_ += childValues_[index];
-      }
-      document_ += " ]";
-    }
-  }
-}
-
-bool StyledWriter::isMultilineArray(const Value& value) {
-  ArrayIndex const size = value.size();
-  bool isMultiLine = size * 3 >= rightMargin_;
-  childValues_.clear();
-  for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
-    const Value& childValue = value[index];
-    isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
-                   !childValue.empty());
-  }
-  if (!isMultiLine) // check if line length > max line length
-  {
-    childValues_.reserve(size);
-    addChildValues_ = true;
-    ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]'
-    for (ArrayIndex index = 0; index < size; ++index) {
-      if (hasCommentForValue(value[index])) {
-        isMultiLine = true;
-      }
-      writeValue(value[index]);
-      lineLength += static_cast<ArrayIndex>(childValues_[index].length());
-    }
-    addChildValues_ = false;
-    isMultiLine = isMultiLine || lineLength >= rightMargin_;
-  }
-  return isMultiLine;
-}
-
-void StyledWriter::pushValue(const String& value) {
-  if (addChildValues_)
-    childValues_.push_back(value);
-  else
-    document_ += value;
-}
-
-void StyledWriter::writeIndent() {
-  if (!document_.empty()) {
-    char last = document_[document_.length() - 1];
-    if (last == ' ') // already indented
-      return;
-    if (last != '\n') // Comments may add new-line
-      document_ += '\n';
-  }
-  document_ += indentString_;
-}
-
-void StyledWriter::writeWithIndent(const String& value) {
-  writeIndent();
-  document_ += value;
-}
-
-void StyledWriter::indent() { indentString_ += String(indentSize_, ' '); }
-
-void StyledWriter::unindent() {
-  assert(indentString_.size() >= indentSize_);
-  indentString_.resize(indentString_.size() - indentSize_);
-}
-
-void StyledWriter::writeCommentBeforeValue(const Value& root) {
-  if (!root.hasComment(commentBefore))
-    return;
-
-  document_ += '\n';
-  writeIndent();
-  const String& comment = root.getComment(commentBefore);
-  String::const_iterator iter = comment.begin();
-  while (iter != comment.end()) {
-    document_ += *iter;
-    if (*iter == '\n' && ((iter + 1) != comment.end() && *(iter + 1) == '/'))
-      writeIndent();
-    ++iter;
-  }
-
-  // Comments are stripped of trailing newlines, so add one here
-  document_ += '\n';
-}
-
-void StyledWriter::writeCommentAfterValueOnSameLine(const Value& root) {
-  if (root.hasComment(commentAfterOnSameLine))
-    document_ += " " + root.getComment(commentAfterOnSameLine);
-
-  if (root.hasComment(commentAfter)) {
-    document_ += '\n';
-    document_ += root.getComment(commentAfter);
-    document_ += '\n';
-  }
-}
-
-bool StyledWriter::hasCommentForValue(const Value& value) {
-  return value.hasComment(commentBefore) ||
-         value.hasComment(commentAfterOnSameLine) ||
-         value.hasComment(commentAfter);
-}
-
-// Class StyledStreamWriter
-// //////////////////////////////////////////////////////////////////
-
-StyledStreamWriter::StyledStreamWriter(String indentation)
-    : document_(nullptr), indentation_(std::move(indentation)),
-      addChildValues_(), indented_(false) {}
-
-void StyledStreamWriter::write(OStream& out, const Value& root) {
-  document_ = &out;
-  addChildValues_ = false;
-  indentString_.clear();
-  indented_ = true;
-  writeCommentBeforeValue(root);
-  if (!indented_)
-    writeIndent();
-  indented_ = true;
-  writeValue(root);
-  writeCommentAfterValueOnSameLine(root);
-  *document_ << "\n";
-  document_ = nullptr; // Forget the stream, for safety.
-}
-
-void StyledStreamWriter::writeValue(const Value& value) {
-  switch (value.type()) {
-  case nullValue:
-    pushValue("null");
-    break;
-  case intValue:
-    pushValue(valueToString(value.asLargestInt()));
-    break;
-  case uintValue:
-    pushValue(valueToString(value.asLargestUInt()));
-    break;
-  case realValue:
-    pushValue(valueToString(value.asDouble()));
-    break;
-  case stringValue: {
-    // Is NULL possible for value.string_? No.
-    char const* str;
-    char const* end;
-    bool ok = value.getString(&str, &end);
-    if (ok)
-      pushValue(valueToQuotedStringN(str, static_cast<unsigned>(end - str)));
-    else
-      pushValue("");
-    break;
-  }
-  case booleanValue:
-    pushValue(valueToString(value.asBool()));
-    break;
-  case arrayValue:
-    writeArrayValue(value);
-    break;
-  case objectValue: {
-    Value::Members members(value.getMemberNames());
-    if (members.empty())
-      pushValue("{}");
-    else {
-      writeWithIndent("{");
-      indent();
-      auto it = members.begin();
-      for (;;) {
-        const String& name = *it;
-        const Value& childValue = value[name];
-        writeCommentBeforeValue(childValue);
-        writeWithIndent(valueToQuotedString(name.c_str()));
-        *document_ << " : ";
-        writeValue(childValue);
-        if (++it == members.end()) {
-          writeCommentAfterValueOnSameLine(childValue);
-          break;
-        }
-        *document_ << ",";
-        writeCommentAfterValueOnSameLine(childValue);
-      }
-      unindent();
-      writeWithIndent("}");
-    }
-  } break;
-  }
-}
-
-void StyledStreamWriter::writeArrayValue(const Value& value) {
-  unsigned size = value.size();
-  if (size == 0)
-    pushValue("[]");
-  else {
-    bool isArrayMultiLine = isMultilineArray(value);
-    if (isArrayMultiLine) {
-      writeWithIndent("[");
-      indent();
-      bool hasChildValue = !childValues_.empty();
-      unsigned index = 0;
-      for (;;) {
-        const Value& childValue = value[index];
-        writeCommentBeforeValue(childValue);
-        if (hasChildValue)
-          writeWithIndent(childValues_[index]);
-        else {
-          if (!indented_)
-            writeIndent();
-          indented_ = true;
-          writeValue(childValue);
-          indented_ = false;
-        }
-        if (++index == size) {
-          writeCommentAfterValueOnSameLine(childValue);
-          break;
-        }
-        *document_ << ",";
-        writeCommentAfterValueOnSameLine(childValue);
-      }
-      unindent();
-      writeWithIndent("]");
-    } else // output on a single line
-    {
-      assert(childValues_.size() == size);
-      *document_ << "[ ";
-      for (unsigned index = 0; index < size; ++index) {
-        if (index > 0)
-          *document_ << ", ";
-        *document_ << childValues_[index];
-      }
-      *document_ << " ]";
-    }
-  }
-}
-
-bool StyledStreamWriter::isMultilineArray(const Value& value) {
-  ArrayIndex const size = value.size();
-  bool isMultiLine = size * 3 >= rightMargin_;
-  childValues_.clear();
-  for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
-    const Value& childValue = value[index];
-    isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
-                   !childValue.empty());
-  }
-  if (!isMultiLine) // check if line length > max line length
-  {
-    childValues_.reserve(size);
-    addChildValues_ = true;
-    ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]'
-    for (ArrayIndex index = 0; index < size; ++index) {
-      if (hasCommentForValue(value[index])) {
-        isMultiLine = true;
-      }
-      writeValue(value[index]);
-      lineLength += static_cast<ArrayIndex>(childValues_[index].length());
-    }
-    addChildValues_ = false;
-    isMultiLine = isMultiLine || lineLength >= rightMargin_;
-  }
-  return isMultiLine;
-}
-
-void StyledStreamWriter::pushValue(const String& value) {
-  if (addChildValues_)
-    childValues_.push_back(value);
-  else
-    *document_ << value;
-}
-
-void StyledStreamWriter::writeIndent() {
-  // blep intended this to look at the so-far-written string
-  // to determine whether we are already indented, but
-  // with a stream we cannot do that. So we rely on some saved state.
-  // The caller checks indented_.
-  *document_ << '\n' << indentString_;
-}
-
-void StyledStreamWriter::writeWithIndent(const String& value) {
-  if (!indented_)
-    writeIndent();
-  *document_ << value;
-  indented_ = false;
-}
-
-void StyledStreamWriter::indent() { indentString_ += indentation_; }
-
-void StyledStreamWriter::unindent() {
-  assert(indentString_.size() >= indentation_.size());
-  indentString_.resize(indentString_.size() - indentation_.size());
-}
-
-void StyledStreamWriter::writeCommentBeforeValue(const Value& root) {
-  if (!root.hasComment(commentBefore))
-    return;
-
-  if (!indented_)
-    writeIndent();
-  const String& comment = root.getComment(commentBefore);
-  String::const_iterator iter = comment.begin();
-  while (iter != comment.end()) {
-    *document_ << *iter;
-    if (*iter == '\n' && ((iter + 1) != comment.end() && *(iter + 1) == '/'))
-      // writeIndent();  // would include newline
-      *document_ << indentString_;
-    ++iter;
-  }
-  indented_ = false;
-}
-
-void StyledStreamWriter::writeCommentAfterValueOnSameLine(const Value& root) {
-  if (root.hasComment(commentAfterOnSameLine))
-    *document_ << ' ' << root.getComment(commentAfterOnSameLine);
-
-  if (root.hasComment(commentAfter)) {
-    writeIndent();
-    *document_ << root.getComment(commentAfter);
-  }
-  indented_ = false;
-}
-
-bool StyledStreamWriter::hasCommentForValue(const Value& value) {
-  return value.hasComment(commentBefore) ||
-         value.hasComment(commentAfterOnSameLine) ||
-         value.hasComment(commentAfter);
-}
-
-//////////////////////////
-// BuiltStyledStreamWriter
-
-/// Scoped enums are not available until C++11.
-struct CommentStyle {
-  /// Decide whether to write comments.
-  enum Enum {
-    None, ///< Drop all comments.
-    Most, ///< Recover odd behavior of previous versions (not implemented yet).
-    All   ///< Keep all comments.
-  };
-};
-
-struct BuiltStyledStreamWriter : public StreamWriter {
-  BuiltStyledStreamWriter(String indentation,
-                          CommentStyle::Enum cs,
-                          String colonSymbol,
-                          String nullSymbol,
-                          String endingLineFeedSymbol,
-                          bool useSpecialFloats,
-                          unsigned int precision,
-                          PrecisionType precisionType);
-  int write(Value const& root, OStream* sout) override;
-
-private:
-  void writeValue(Value const& value);
-  void writeArrayValue(Value const& value);
-  bool isMultilineArray(Value const& value);
-  void pushValue(String const& value);
-  void writeIndent();
-  void writeWithIndent(String const& value);
-  void indent();
-  void unindent();
-  void writeCommentBeforeValue(Value const& root);
-  void writeCommentAfterValueOnSameLine(Value const& root);
-  static bool hasCommentForValue(const Value& value);
-
-  typedef std::vector<String> ChildValues;
-
-  ChildValues childValues_;
-  String indentString_;
-  unsigned int rightMargin_;
-  String indentation_;
-  CommentStyle::Enum cs_;
-  String colonSymbol_;
-  String nullSymbol_;
-  String endingLineFeedSymbol_;
-  bool addChildValues_ : 1;
-  bool indented_ : 1;
-  bool useSpecialFloats_ : 1;
-  unsigned int precision_;
-  PrecisionType precisionType_;
-};
-BuiltStyledStreamWriter::BuiltStyledStreamWriter(String indentation,
-                                                 CommentStyle::Enum cs,
-                                                 String colonSymbol,
-                                                 String nullSymbol,
-                                                 String endingLineFeedSymbol,
-                                                 bool useSpecialFloats,
-                                                 unsigned int precision,
-                                                 PrecisionType precisionType)
-    : rightMargin_(74), indentation_(std::move(indentation)), cs_(cs),
-      colonSymbol_(std::move(colonSymbol)), nullSymbol_(std::move(nullSymbol)),
-      endingLineFeedSymbol_(std::move(endingLineFeedSymbol)),
-      addChildValues_(false), indented_(false),
-      useSpecialFloats_(useSpecialFloats), precision_(precision),
-      precisionType_(precisionType) {}
-int BuiltStyledStreamWriter::write(Value const& root, OStream* sout) {
-  sout_ = sout;
-  addChildValues_ = false;
-  indented_ = true;
-  indentString_.clear();
-  writeCommentBeforeValue(root);
-  if (!indented_)
-    writeIndent();
-  indented_ = true;
-  writeValue(root);
-  writeCommentAfterValueOnSameLine(root);
-  *sout_ << endingLineFeedSymbol_;
-  sout_ = nullptr;
-  return 0;
-}
-void BuiltStyledStreamWriter::writeValue(Value const& value) {
-  switch (value.type()) {
-  case nullValue:
-    pushValue(nullSymbol_);
-    break;
-  case intValue:
-    pushValue(valueToString(value.asLargestInt()));
-    break;
-  case uintValue:
-    pushValue(valueToString(value.asLargestUInt()));
-    break;
-  case realValue:
-    pushValue(valueToString(value.asDouble(), useSpecialFloats_, precision_,
-                            precisionType_));
-    break;
-  case stringValue: {
-    // Is NULL is possible for value.string_? No.
-    char const* str;
-    char const* end;
-    bool ok = value.getString(&str, &end);
-    if (ok)
-      pushValue(valueToQuotedStringN(str, static_cast<unsigned>(end - str)));
-    else
-      pushValue("");
-    break;
-  }
-  case booleanValue:
-    pushValue(valueToString(value.asBool()));
-    break;
-  case arrayValue:
-    writeArrayValue(value);
-    break;
-  case objectValue: {
-    Value::Members members(value.getMemberNames());
-    if (members.empty())
-      pushValue("{}");
-    else {
-      writeWithIndent("{");
-      indent();
-      auto it = members.begin();
-      for (;;) {
-        String const& name = *it;
-        Value const& childValue = value[name];
-        writeCommentBeforeValue(childValue);
-        writeWithIndent(valueToQuotedStringN(
-            name.data(), static_cast<unsigned>(name.length())));
-        *sout_ << colonSymbol_;
-        writeValue(childValue);
-        if (++it == members.end()) {
-          writeCommentAfterValueOnSameLine(childValue);
-          break;
-        }
-        *sout_ << ",";
-        writeCommentAfterValueOnSameLine(childValue);
-      }
-      unindent();
-      writeWithIndent("}");
-    }
-  } break;
-  }
-}
-
-void BuiltStyledStreamWriter::writeArrayValue(Value const& value) {
-  unsigned size = value.size();
-  if (size == 0)
-    pushValue("[]");
-  else {
-    bool isMultiLine = (cs_ == CommentStyle::All) || isMultilineArray(value);
-    if (isMultiLine) {
-      writeWithIndent("[");
-      indent();
-      bool hasChildValue = !childValues_.empty();
-      unsigned index = 0;
-      for (;;) {
-        Value const& childValue = value[index];
-        writeCommentBeforeValue(childValue);
-        if (hasChildValue)
-          writeWithIndent(childValues_[index]);
-        else {
-          if (!indented_)
-            writeIndent();
-          indented_ = true;
-          writeValue(childValue);
-          indented_ = false;
-        }
-        if (++index == size) {
-          writeCommentAfterValueOnSameLine(childValue);
-          break;
-        }
-        *sout_ << ",";
-        writeCommentAfterValueOnSameLine(childValue);
-      }
-      unindent();
-      writeWithIndent("]");
-    } else // output on a single line
-    {
-      assert(childValues_.size() == size);
-      *sout_ << "[";
-      if (!indentation_.empty())
-        *sout_ << " ";
-      for (unsigned index = 0; index < size; ++index) {
-        if (index > 0)
-          *sout_ << ((!indentation_.empty()) ? ", " : ",");
-        *sout_ << childValues_[index];
-      }
-      if (!indentation_.empty())
-        *sout_ << " ";
-      *sout_ << "]";
-    }
-  }
-}
-
-bool BuiltStyledStreamWriter::isMultilineArray(Value const& value) {
-  ArrayIndex const size = value.size();
-  bool isMultiLine = size * 3 >= rightMargin_;
-  childValues_.clear();
-  for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
-    Value const& childValue = value[index];
-    isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
-                   !childValue.empty());
-  }
-  if (!isMultiLine) // check if line length > max line length
-  {
-    childValues_.reserve(size);
-    addChildValues_ = true;
-    ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]'
-    for (ArrayIndex index = 0; index < size; ++index) {
-      if (hasCommentForValue(value[index])) {
-        isMultiLine = true;
-      }
-      writeValue(value[index]);
-      lineLength += static_cast<ArrayIndex>(childValues_[index].length());
-    }
-    addChildValues_ = false;
-    isMultiLine = isMultiLine || lineLength >= rightMargin_;
-  }
-  return isMultiLine;
-}
-
-void BuiltStyledStreamWriter::pushValue(String const& value) {
-  if (addChildValues_)
-    childValues_.push_back(value);
-  else
-    *sout_ << value;
-}
-
-void BuiltStyledStreamWriter::writeIndent() {
-  // blep intended this to look at the so-far-written string
-  // to determine whether we are already indented, but
-  // with a stream we cannot do that. So we rely on some saved state.
-  // The caller checks indented_.
-
-  if (!indentation_.empty()) {
-    // In this case, drop newlines too.
-    *sout_ << '\n' << indentString_;
-  }
-}
-
-void BuiltStyledStreamWriter::writeWithIndent(String const& value) {
-  if (!indented_)
-    writeIndent();
-  *sout_ << value;
-  indented_ = false;
-}
-
-void BuiltStyledStreamWriter::indent() { indentString_ += indentation_; }
-
-void BuiltStyledStreamWriter::unindent() {
-  assert(indentString_.size() >= indentation_.size());
-  indentString_.resize(indentString_.size() - indentation_.size());
-}
-
-void BuiltStyledStreamWriter::writeCommentBeforeValue(Value const& root) {
-  if (cs_ == CommentStyle::None)
-    return;
-  if (!root.hasComment(commentBefore))
-    return;
-
-  if (!indented_)
-    writeIndent();
-  const String& comment = root.getComment(commentBefore);
-  String::const_iterator iter = comment.begin();
-  while (iter != comment.end()) {
-    *sout_ << *iter;
-    if (*iter == '\n' && ((iter + 1) != comment.end() && *(iter + 1) == '/'))
-      // writeIndent();  // would write extra newline
-      *sout_ << indentString_;
-    ++iter;
-  }
-  indented_ = false;
-}
-
-void BuiltStyledStreamWriter::writeCommentAfterValueOnSameLine(
-    Value const& root) {
-  if (cs_ == CommentStyle::None)
-    return;
-  if (root.hasComment(commentAfterOnSameLine))
-    *sout_ << " " + root.getComment(commentAfterOnSameLine);
-
-  if (root.hasComment(commentAfter)) {
-    writeIndent();
-    *sout_ << root.getComment(commentAfter);
-  }
-}
-
-// static
-bool BuiltStyledStreamWriter::hasCommentForValue(const Value& value) {
-  return value.hasComment(commentBefore) ||
-         value.hasComment(commentAfterOnSameLine) ||
-         value.hasComment(commentAfter);
-}
-
-///////////////
-// StreamWriter
-
-StreamWriter::StreamWriter() : sout_(nullptr) {}
-StreamWriter::~StreamWriter() = default;
-StreamWriter::Factory::~Factory() = default;
-StreamWriterBuilder::StreamWriterBuilder() { setDefaults(&settings_); }
-StreamWriterBuilder::~StreamWriterBuilder() = default;
-StreamWriter* StreamWriterBuilder::newStreamWriter() const {
-  String indentation = settings_["indentation"].asString();
-  String cs_str = settings_["commentStyle"].asString();
-  String pt_str = settings_["precisionType"].asString();
-  bool eyc = settings_["enableYAMLCompatibility"].asBool();
-  bool dnp = settings_["dropNullPlaceholders"].asBool();
-  bool usf = settings_["useSpecialFloats"].asBool();
-  unsigned int pre = settings_["precision"].asUInt();
-  CommentStyle::Enum cs = CommentStyle::All;
-  if (cs_str == "All") {
-    cs = CommentStyle::All;
-  } else if (cs_str == "None") {
-    cs = CommentStyle::None;
-  } else {
-    throwRuntimeError("commentStyle must be 'All' or 'None'");
-  }
-  PrecisionType precisionType(significantDigits);
-  if (pt_str == "significant") {
-    precisionType = PrecisionType::significantDigits;
-  } else if (pt_str == "decimal") {
-    precisionType = PrecisionType::decimalPlaces;
-  } else {
-    throwRuntimeError("precisionType must be 'significant' or 'decimal'");
-  }
-  String colonSymbol = " : ";
-  if (eyc) {
-    colonSymbol = ": ";
-  } else if (indentation.empty()) {
-    colonSymbol = ":";
-  }
-  String nullSymbol = "null";
-  if (dnp) {
-    nullSymbol.clear();
-  }
-  if (pre > 17)
-    pre = 17;
-  String endingLineFeedSymbol;
-  return new BuiltStyledStreamWriter(indentation, cs, colonSymbol, nullSymbol,
-                                     endingLineFeedSymbol, usf, pre,
-                                     precisionType);
-}
-static void getValidWriterKeys(std::set<String>* valid_keys) {
-  valid_keys->clear();
-  valid_keys->insert("indentation");
-  valid_keys->insert("commentStyle");
-  valid_keys->insert("enableYAMLCompatibility");
-  valid_keys->insert("dropNullPlaceholders");
-  valid_keys->insert("useSpecialFloats");
-  valid_keys->insert("precision");
-  valid_keys->insert("precisionType");
-}
-bool StreamWriterBuilder::validate(Json::Value* invalid) const {
-  Json::Value my_invalid;
-  if (!invalid)
-    invalid = &my_invalid; // so we do not need to test for NULL
-  Json::Value& inv = *invalid;
-  std::set<String> valid_keys;
-  getValidWriterKeys(&valid_keys);
-  Value::Members keys = settings_.getMemberNames();
-  size_t n = keys.size();
-  for (size_t i = 0; i < n; ++i) {
-    String const& key = keys[i];
-    if (valid_keys.find(key) == valid_keys.end()) {
-      inv[key] = settings_[key];
-    }
-  }
-  return inv.empty();
-}
-Value& StreamWriterBuilder::operator[](const String& key) {
-  return settings_[key];
-}
-// static
-void StreamWriterBuilder::setDefaults(Json::Value* settings) {
-  //! [StreamWriterBuilderDefaults]
-  (*settings)["commentStyle"] = "All";
-  (*settings)["indentation"] = "\t";
-  (*settings)["enableYAMLCompatibility"] = false;
-  (*settings)["dropNullPlaceholders"] = false;
-  (*settings)["useSpecialFloats"] = false;
-  (*settings)["precision"] = 17;
-  (*settings)["precisionType"] = "significant";
-  //! [StreamWriterBuilderDefaults]
-}
-
-String writeString(StreamWriter::Factory const& factory, Value const& root) {
-  OStringStream sout;
-  StreamWriterPtr const writer(factory.newStreamWriter());
-  writer->write(root, &sout);
-  return sout.str();
-}
-
-OStream& operator<<(OStream& sout, Value const& root) {
-  StreamWriterBuilder builder;
-  StreamWriterPtr const writer(builder.newStreamWriter());
-  writer->write(root, &sout);
-  return sout;
-}
-
-} // namespace Json
-
-// //////////////////////////////////////////////////////////////////////
-// End of content of file: src/lib_json/json_writer.cpp
-// //////////////////////////////////////////////////////////////////////
-
-
-
-
-
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/main.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include <iostream>
-#include <sstream>
-#include <emscripten/emscripten.h>
-#include "TestStoneCodeGen_generated.hpp"
-
-using std::stringstream;
-
-int main()
-{
-    std::cout << "Hello world from testWasmIntegrated! (this is sent from C++)" << std::endl;
-    try
-    {
-    const char* jsonData = R"bgo({"definition":
-    {
-      "val" : [ "berk", 42 ],
-      "zozo" : { "23": "zloutch", "lalala": 42}
-    }
-    })bgo";
-    std::string strValue(jsonData);
-    
-    Json::Value readValue;
-
-    Json::CharReaderBuilder builder;
-    Json::CharReader* reader = builder.newCharReader();
-
-    StoneSmartPtr<Json::CharReader> ptr(reader);
-
-    std::string errors;
-
-    bool ok = reader->parse(
-      strValue.c_str(),
-      strValue.c_str() + strValue.size(),
-      &readValue,
-      &errors
-    );
-    if (!ok)
-    {
-      std::stringstream ss;
-      ss << "Jsoncpp parsing error: " << errors;
-      throw std::runtime_error(ss.str());
-    }
-    std::cout << "Json parsing OK" << std::endl;
-    std::cout << readValue  << std::endl;
-    }
-    catch(std::exception& e)
-    {
-      std::cout << "Json parsing THROW" << std::endl;
-      std::cout << "e.what() = " << e.what() << std::endl;
-    }
-}
-
-extern "C" void SendMessageFromCppJS(const char* message);
-extern "C" void SendFreeTextFromCppJS(const char* message);
-
-#define HANDLE_MESSAGE(Type,value) \
-  stringstream ss; \
-  ss << "Received an instance of:\n" #Type "\n. Here's the dump:\n"; \
-  TestStoneCodeGen::StoneDumpValue(ss, value, 0); \
-  SendFreeTextFromCppJS(ss.str().c_str()); \
-  return true;
-
-#define ECHO_MESSAGE(Type,value) \
-  stringstream ss; \
-  ss << "Received an instance of:\n" #Type "\n. Here's the dump:\n"; \
-  TestStoneCodeGen::StoneDumpValue(ss, value, 0); \
-  SendFreeTextFromCppJS(ss.str().c_str()); \
-  std::string serializedInCpp = StoneSerialize(value); \
-  SendMessageFromCppJS(serializedInCpp.c_str()); \
-  return true;
-
-class MyHandler : public TestStoneCodeGen::IHandler
-{
-  public:
-    virtual bool Handle(const TestStoneCodeGen::A& value) override
-    {
-      HANDLE_MESSAGE(TestStoneCodeGen::A,value)
-    }
-    virtual bool Handle(const TestStoneCodeGen::B& value) override
-    {
-      HANDLE_MESSAGE(TestStoneCodeGen::B,value)
-    }
-
-    virtual bool Handle(const TestStoneCodeGen::Message1& value) override
-    {
-      HANDLE_MESSAGE(TestStoneCodeGen::Message1,value)
-    }
-
-    virtual bool Handle(const TestStoneCodeGen::Message2& value) override
-    {
-      HANDLE_MESSAGE(TestStoneCodeGen::Message2,value)
-    }
-
-    virtual bool Handle(const TestStoneCodeGen::C& value) override
-    {
-      HANDLE_MESSAGE(TestStoneCodeGen::C,value)
-    }
-};
-
-class MyEchoHandler : public TestStoneCodeGen::IHandler
-{
-  public:
-    virtual bool Handle(const TestStoneCodeGen::A& value) override
-    {
-      ECHO_MESSAGE(TestStoneCodeGen::A,value)
-    }
-    virtual bool Handle(const TestStoneCodeGen::B& value) override
-    {
-      ECHO_MESSAGE(TestStoneCodeGen::B,value)
-    }
-
-    virtual bool Handle(const TestStoneCodeGen::Message1& value) override
-    {
-      ECHO_MESSAGE(TestStoneCodeGen::Message1,value)
-    }
-
-    virtual bool Handle(const TestStoneCodeGen::Message2& value) override
-    {
-      ECHO_MESSAGE(TestStoneCodeGen::Message2,value)
-    }
-
-    virtual bool Handle(const TestStoneCodeGen::C& value) override
-    {
-      ECHO_MESSAGE(TestStoneCodeGen::C,value)
-    }
-};
-
-extern "C" void EMSCRIPTEN_KEEPALIVE SendMessageToCpp(const char* message)
-{
-    MyHandler handler;
-    try
-    {
-      bool handled = TestStoneCodeGen::StoneDispatchToHandler(message,&handler);
-      if(!handled)
-      {
-        SendFreeTextFromCppJS("This message is valid JSON, but was not handled!");  
-      }
-    }
-    catch(std::exception& e)
-    {
-      stringstream ss;
-      ss << "Error while parsing message: " << e.what() << "\n";
-      SendFreeTextFromCppJS(ss.str().c_str());  
-    }
-}
-
-extern "C" void EMSCRIPTEN_KEEPALIVE SendMessageToCppForEcho(const char* message)
-{
-    MyEchoHandler echoHandler;
-    try
-    {
-      bool handled = TestStoneCodeGen::StoneDispatchToHandler(message,&echoHandler);
-      if(!handled)
-      {
-        SendFreeTextFromCppJS("This message is valid JSON, but was not handled by the echo handler!");  
-      }
-    }
-    catch(std::exception& e)
-    {
-      stringstream ss;
-      ss << "Error while parsing message: " << e.what() << "\n";
-      SendFreeTextFromCppJS(ss.str().c_str());  
-    }
-}
-
-void EMSCRIPTEN_KEEPALIVE StartWasmApplication(const char* baseUri)
-{
-    printf("Hello! (this is sent from C++)\n");
-
-//     // recreate a command line from uri arguments and parse it
-//     boost::program_options::variables_map parameters;
-//     boost::program_options::options_description options;
-//     application->DeclareStartupOptions(options);
-//     startupParametersBuilder.GetStartupParameters(parameters, options);
-
-//     context.reset(new OrthancStone::StoneApplicationContext(broker));
-//     context->SetOrthancBaseUrl(baseUri);
-//     printf("Base URL to Orthanc API: [%s]\n", baseUri);
-//     context->SetWebService(OrthancStone::WasmWebService::GetInstance());
-//     context->SetDelayedCallExecutor(OrthancStone::WasmDelayedCallExecutor::GetInstance());
-//     application->Initialize(context.get(), statusBar_, parameters);
-//     application->InitializeWasm();
-
-// //    viewport->SetSize(width_, height_);
-//     printf("StartWasmApplication - completed\n");
-    SendFreeTextFromCppJS("Hello world from C++!");
-}
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/serve.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-# -*- coding: utf-8 -*-
-# tested on python 3.4 ,python of lower version  has different module organization.
-# from https://gist.github.com/HaiyangXu/ec88cbdce3cdbac7b8d5
-import http.server
-from http.server import HTTPServer, BaseHTTPRequestHandler
-import socketserver
-
-PORT = 8080
-
-Handler = http.server.SimpleHTTPRequestHandler
-
-Handler.extensions_map = {
-  '.manifest': 'text/cache-manifest',
-  '.html': 'text/html',
-  '.png': 'image/png',
-  '.jpg': 'image/jpg',
-  '.svg': 'image/svg+xml',
-  '.wasm': 'application/wasm',
-  '.css': 'text/css',
-  '.js': 'application/x-javascript',
-  '': 'application/octet-stream',  # Default
-}
-
-httpd = socketserver.TCPServer(("", PORT), Handler)
-
-print("serving at port", PORT)
-httpd.serve_forever()
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/styles.css	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-.TestWasm-grid-container {
-    display: grid;
-    grid-template-columns: 0.55fr 0.55fr 0.55fr 0.55fr 0.6fr 1.1fr 1.1fr;
-    grid-template-rows: 1.1fr 0.9fr 0.2fr 0.3fr 0.1fr 0.3fr 0.1fr;
-    grid-template-areas: 
-        "SerializedInput SerializedInput SerializedInput SerializedInput ButtonContainer CppOutput CppOutput" 
-        "SerializedInput SerializedInput SerializedInput SerializedInput ButtonContainer CppOutput CppOutput" 
-        ". . . . . . ." 
-        "Test1 Test2 Test3 Test4 . . ." 
-        ". . . . . . ." 
-        "Test5 Test6 Test7 Test8 . . ."
-        "TestTsCppTs . . . . . ." 
-        ". . . . . . ." 
-        ;
-    height: 480px;
-  }
-
-  .TestWasm-ButtonContainer {
-    display: grid;
-    grid-template-columns: 0.2fr 0.8fr 0.2fr;
-    grid-template-rows: 0.2fr 0.5fr 0.2fr 0.5fr 0.2fr 0.5fr 0.2fr;
-    grid-template-areas: 
-        ". . ."
-        ". TriggerButton ." 
-        ". . ."
-        ". ClearButton ." 
-        ". . ."
-        ". ShowSchemaButton ." 
-        ". . ."
-        ;
-  }
-
-  .TestWasm-TriggerButton { grid-area: TriggerButton; }
-  
-  .TestWasm-ClearButton { grid-area: ClearButton; }
-  
-  .TestWasm-ShowSchemaButton { grid-area: ShowSchemaButton; }
-
-
-.TestWasm-SerializedInput { grid-area: SerializedInput; }
-
-.TestWasm-CppOutput { grid-area: CppOutput; }
-
-.TestWasm-ButtonContainer { grid-area: ButtonContainer; }
-
-.TestWasm-Test1 { grid-area: Test1; }
-
-.TestWasm-Test2 { grid-area: Test2; }
-
-.TestWasm-Test3 { grid-area: Test3; }
-
-.TestWasm-Test4 { grid-area: Test4; }
-
-.TestWasm-Test5 { grid-area: Test5; }
-
-.TestWasm-Test6 { grid-area: Test6; }
-
-.TestWasm-Test7 { grid-area: Test7; }
-
-.TestWasm-Test8 { grid-area: Test8; }
-
-.TestWasm-ts-cpp-ts { grid-area: TestTsCppTs; }
-
-.TestWasm-button {
-    width:80px;
-}
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/testWasmIntegrated.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-<!doctype html>
-
-<html lang="us">
-  <head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-    <title>Javascript to WASM message passing</title>
-    <link href="styles.css" rel="stylesheet" />
-    <!-- <link href="styles2.css" rel="stylesheet" /> -->
-    <!-- 
-    <link href="testwasm_bootstrap.css" rel="stylesheet" /> 
-    -->
-    <body>
-    <div class="TestWasm-grid-container">
-        <textarea id="TestWasm-SerializedInput" class="TestWasm-SerializedInput">Serialized data should be put here.</textarea>
-        <textarea id="TestWasm-CppOutput" class="TestWasm-CppOutput">Free text and messages from C++ will appear here.</textarea>
-        <div class="TestWasm-ButtonContainer">
-          <div class="TestWasm-TriggerButton">
-            <button class="TestWasm-button" tool-selector="Trigger">Send message</button>
-          </div>
-          <div class="TestWasm-ClearButton">
-            <button class="TestWasm-button" tool-selector="Clear">Clear</button>
-          </div>
-          <div class="TestWasm-ShowSchemaButton">
-            <button class="TestWasm-button" tool-selector="ShowSchema">Show schema</button>
-          </div>
-           <!-- <button class="TestWasm-button TestWasm-hvcenter" tool-selector="Trigger">Send message</button>
-            <button class="TestWasm-button TestWasm-hvcenter" tool-selector="Clear">Clear</button>
-            <button class="TestWasm-button TestWasm-hvcenter" tool-selector="Show schema">Show schema</button> -->
-        </div>
-        
-        <div class="TestWasm-Test1">
-          <button class="TestWasm-button" tool-selector="Test CppHandler message2">Test CppHandler message2</button>
-        </div>
-        <div class="TestWasm-Test2">
-          <button class="TestWasm-button" tool-selector="Test 2">Test 2</button>
-        </div>
-        <div class="TestWasm-Test3">
-          <button class="TestWasm-button" tool-selector="Test 3">Test 3</button>
-        </div>
-        <div class="TestWasm-Test4">
-          <button class="TestWasm-button" tool-selector="Test 4">Test 4</button>
-        </div>
-        <div class="TestWasm-Test5">
-          <button class="TestWasm-button" tool-selector="Test 5">Test 5</button>
-        </div>
-        <div class="TestWasm-Test6">
-          <button class="TestWasm-button" tool-selector="Test 6">Test 6</button>
-        </div>
-        <div class="TestWasm-Test7">
-          <button class="TestWasm-button" tool-selector="Test 7">Test 7</button>
-        </div>
-        <div class="TestWasm-Test8">
-          <button class="TestWasm-button" tool-selector="Test 8">Test 8</button>
-        </div>
-        <div class="TestWasm-ts-cpp-ts">
-          <button class="TestWasm-button" tool-selector="Test-ts-cpp-ts">Test ts-cpp-ts</button>
-        </div>
-  
-        <!-- <button class="TestWasm-button" class="TestWasm-Test1" tool-selector="Test 1">Test 1</button>
-        <button class="TestWasm-button" class="TestWasm-Test2" tool-selector="Test 2">Test 2</button>
-        <button class="TestWasm-button" class="TestWasm-Test3" tool-selector="Test 3">Test 3</button>
-        <button class="TestWasm-button" class="TestWasm-Test4" tool-selector="Test 4">Test 4</button> -->
-
-
-
-        <!-- <div class="Trigger"></div>
-        <div class="Test1"></div>
-        <div class="Test2"></div>
-        <div class="Test3"></div>
-        <div class="Test4"></div> -->
-      </div>
-
-  <!-- <div id="toolbox" style="height: 50px">
-    <button tool-selector="line-measure" class="tool-selector">line</button>
-  </div> -->
-  <script type="text/javascript" src="testWasmIntegratedCpp.js"></script>
-  <script type="text/javascript" src="testWasmIntegratedApp.js"></script>
-</body>
-
-</html>
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/testWasmIntegrated/testWasmIntegrated.ts	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-var SendMessageToCpp: Function = null;
-export var TestWasmIntegratedModule : any;
-
-import * as TestStoneCodeGen from './build-wasm/TestStoneCodeGen_generated'
-
-/*
-+--------------------------------------------------+
-|  install emscripten handlers                     |
-+--------------------------------------------------+
-*/
-
-// (<any> window).Module = {
-//   preRun: [ 
-//     function() {
-//     console.log('Loading the Stone Framework using WebAssembly');
-//     }
-//   ],
-//   postRun: [ 
-//     function()  {
-//     // This function is called by ".js" wrapper once the ".wasm"
-//     // WebAssembly module has been loaded and compiled by the
-//     // browser
-//     console.log('WebAssembly is ready');
-//     // window.SendMessageToCpp = (<any> window).Module.cwrap('SendMessageToCpp', 'string', ['string']);
-//     // window.SendFreeTextToCpp = (<any> window).Module.cwrap('SendFreeTextToCpp', 'string', ['string']);
-//     }
-//   ],
-//   print: function(text : string) {
-//     console.log(text);
-//   },
-//   printErr: function(text : string) {
-//     console.error(text);
-//   },
-//   totalDependencies: 0
-// };
-
-/*
-+--------------------------------------------------+
-|  install handlers                                |
-+--------------------------------------------------+
-*/
-document.querySelectorAll(".TestWasm-button").forEach((e) => {
-  (e as HTMLButtonElement).addEventListener("click", () => {
-    ButtonClick(e.attributes["tool-selector"].value);
-  });
-});
-
-/*
-+--------------------------------------------------+
-|  define stock messages                           |
-+--------------------------------------------------+
-*/
-let schemaText: string = null;
-fetch("testTestStoneCodeGen.yaml").then(function(res) {return res.text();}).then(function(text) {schemaText = text;});
-
-let stockSerializedMessages = new Map<string,string>();
-stockSerializedMessages["Test CppHandler message2"] = null;
-fetch("cppHandler_test_Message2.json").then(function(res) {return res.text();}).then(function(text) {stockSerializedMessages["Test CppHandler message2"] = text;});
-
-stockSerializedMessages["Test 2"] = ` {
-  "type" : "TestStoneCodeGen.Message1",
-  "value" : {
-    "memberInt32" : -987,
-    "memberString" : "Salomé",
-    "memberEnumMonth" : "March",
-    "memberBool" : true,
-    "memberFloat32" : 0.1,
-    "memberFloat64" : -0.2,
-    "extraMember" : "don't care"
-  }
-}`;
-stockSerializedMessages["Test 3"] = "Test 3 stock message sdfsfsdfsdf";
-stockSerializedMessages["Test 4"] = "Test 4 stock message 355345345";
-stockSerializedMessages["Test 5"] = "Test 5 stock message 34535";
-stockSerializedMessages["Test 6"] = "Test 6 stock message xcvcxvx";
-stockSerializedMessages["Test 7"] = "Test 7 stock message fgwqewqdgg";
-stockSerializedMessages["Test 8"] = "Test 8 stock message fgfsdfsdgg";
-
-/*
-+--------------------------------------------------+
-|  define handler                                  |
-+--------------------------------------------------+
-*/
-
-function setSerializedInputValue(text: string) {
-  let e : HTMLTextAreaElement = document.getElementById('TestWasm-SerializedInput') as HTMLTextAreaElement;
-  e.value = text;
-}
-
-function getSerializedInputValue(): string {
-  let e : HTMLTextAreaElement = document.getElementById('TestWasm-SerializedInput') as HTMLTextAreaElement;
-  return e.value;
-}
-
-function setCppOutputValue(text: string) {
-  let e : HTMLTextAreaElement = document.getElementById('TestWasm-CppOutput') as HTMLTextAreaElement;
-  e.value = text;
-}
-
-function getCppOutputValue(): string {
-  let e : HTMLTextAreaElement = document.getElementById('TestWasm-CppOutput') as HTMLTextAreaElement;
-  return e.value;
-}
-
-function SendFreeTextFromCpp(txt: string):string
-{
-  setCppOutputValue(getCppOutputValue() + "\n" + txt);
-  return "";
-}
-(<any> window).SendFreeTextFromCpp = SendFreeTextFromCpp;
-
-var referenceMessages = Array<any>();
-
-function testTsCppTs() {
-  var r = new TestStoneCodeGen.Message2();
-  r.memberEnumMovieType = TestStoneCodeGen.MovieType.RomCom;
-  r.memberStringWithDefault = "overriden";
-  r.memberMapEnumFloat[TestStoneCodeGen.CrispType.CreamAndChives] = 0.5;
-  r.memberString = "reference-messsage2-test1";
-
-  referenceMessages[r.memberString] = r;
-  var strMsg2 = r.StoneSerialize();
-  let SendMessageToCppForEchoLocal = (<any> window).Module.cwrap('SendMessageToCppForEcho', 'string', ['string']);
-  SendMessageToCppForEchoLocal(strMsg2);
-}
-
-class MyEchoHandler implements TestStoneCodeGen.IHandler
-{
-  public HandleMessage2(value:  TestStoneCodeGen.Message2): boolean
-  {
-    if (value.memberString in referenceMessages) {
-      let r = referenceMessages[value.memberString];
-      let equals = (value.memberStringWithDefault == r.memberStringWithDefault);
-      if (TestStoneCodeGen.CrispType.CreamAndChives in r.memberMapEnumFloat) {
-        equals == equals && r.memberMapEnumFloat[TestStoneCodeGen.CrispType.CreamAndChives] == value.memberMapEnumFloat[TestStoneCodeGen.CrispType.CreamAndChives];
-      }
-      // TODO continue comparison
-
-      if (equals) {
-        console.log("objects are equals after round trip");
-        return true;
-      }
-    }
-    console.log("problem after round trip");
-    return true;
-  }
-}
-
-function SendMessageFromCpp(txt: string):string
-{
-  setCppOutputValue(getCppOutputValue() + "\n" + txt);
-  TestStoneCodeGen.StoneDispatchToHandler(txt, new MyEchoHandler());
-  return "";
-}
-(<any> window).SendMessageFromCpp = SendMessageFromCpp;
-
-
-
-function ButtonClick(buttonName: string) {
-  if (buttonName.startsWith('Test ')) {
-    setSerializedInputValue(stockSerializedMessages[buttonName]);
-  }
-  else if (buttonName == "Test-ts-cpp-ts") {
-    testTsCppTs();
-  }
-  else if(buttonName == 'Trigger')
-  {
-    let serializedInputValue:string = getSerializedInputValue();
-
-    let SendMessageToCppLocal = (<any> window).Module.cwrap('SendMessageToCpp', 'string', ['string']);
-    SendMessageToCppLocal(serializedInputValue);
-  }
-  else if(buttonName == 'Clear')
-  {
-    setCppOutputValue("");
-  }
-  else if(buttonName == 'ShowSchema')
-  {
-    setCppOutputValue(schemaText);
-  }
-  else
-  {
-    throw new Error("Internal error!");
-  }
-}
-
-
-
-// this method is called "from the C++ code" when the StoneApplication is updated.
-// it can be used to update the UI of the application
-function UpdateWebApplicationWithString(statusUpdateMessageString: string) {
-  console.log("updating web application (string): ", statusUpdateMessageString);
-  let statusUpdateMessage = JSON.parse(statusUpdateMessageString);
-
-  if ("event" in statusUpdateMessage)
-  {
-    let eventName = statusUpdateMessage["event"];
-    if (eventName == "appStatusUpdated")
-    {
-      //ui.onAppStatusUpdated(statusUpdateMessage["data"]);
-    }
-  }
-}
-
-
-function UpdateWebApplicationWithSerializedMessage(statusUpdateMessageString: string) {
-  console.log("updating web application (serialized message): ", statusUpdateMessageString);
-  console.log("<not supported!>");
-}
- 
\ No newline at end of file
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/test_data/test2.yaml	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-enum EnumMonth0:
-  - January
-  - February
-  - Month
-
-struct Message1:
-  a: int32
-  b: string
-  c: EnumMonth0
-  d: bool
-
-struct Message2:
-  toto: string
-  tata: vector<Message1>
-  tutu: vector<string>
-  titi: map<string, string>
-  lulu: map<string, Message1>
--- a/Resources/Graveyard/Deprecated/Resources/CodeGeneration/test_data/testTestStoneCodeGen.yaml	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-#
-#        1         2         3         4         5         6         7         8
-# 345678901234567890123456789012345678901234567890123456789012345678901234567890
-#
-rootName: TestStoneCodeGen
-
-struct B:
-  __handler: cpp
-
-  someAs: vector<A>
-  someInts: vector<int32>
-
-struct C:
-  __handler: cpp
-
-  someBs: vector<B>
-  ddd:    vector<string>
-
-struct A:
-  __handler: cpp
-
-  someStrings: vector<string>
-  someInts2: vector<int32>
-  movies: vector<MovieType>
-
-struct Message1:
-  __handler: cpp
-
-  memberInt32: int32
-  memberString: string
-  memberEnumMonth: EnumMonth0
-  memberBool: bool
-  memberFloat32: float32
-  memberFloat64: float64
-
-struct Message2:
-  __handler: [cpp, ts]
-
-  memberString: string
-  memberStringWithDefault: string = "my-default-value"
-  memberVectorOfMessage1: vector<Message1>
-  memberVectorOfString: vector<string>
-  memberMapStringString: map<string, string>
-  memberMapStringStruct: map<string, Message1>
-  memberMapEnumFloat: map<CrispType, float32>
-  memberEnumMovieType: MovieType
-  memberJson: json
-
-enum MovieType:
-  - RomCom
-  - Horror
-  - ScienceFiction
-  - Vegetables
-
-enum CrispType:
-  - SaltAndPepper
-  - CreamAndChives
-  - Paprika
-  - Barbecue
-
-enum EnumMonth0:
-  - January
-  - February
-  - March
--- a/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/BasicScene.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,275 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "BasicScene.h"
-
-// From Stone
-#include "Framework/Scene2D/Scene2D.h"
-#include "Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "Framework/Scene2D/PolylineSceneLayer.h"
-#include "Framework/Scene2D/TextSceneLayer.h"
-
-#include "Framework/Scene2D/PanSceneTracker.h"
-#include "Framework/Scene2D/ZoomSceneTracker.h"
-#include "Framework/Scene2D/RotateSceneTracker.h"
-
-#include "Framework/Scene2D/CairoCompositor.h"
-
-// From Orthanc framework
-#include <Core/Images/Image.h>
-#include <Core/Images/ImageProcessing.h>
-#include <Core/Images/PngWriter.h>
-
-using namespace OrthancStone;
-
-const unsigned int BASIC_SCENE_FONT_SIZE = 32;
-const int BASIC_SCENE_LAYER_POSITION = 150;
-
-void PrepareScene(Scene2D& scene)
-{
-  //Scene2D& scene(*controller->GetScene());
-  // Texture of 2x2 size
-  {
-    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false);
-
-    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
-    p[0] = 255;
-    p[1] = 0;
-    p[2] = 0;
-
-    p[3] = 0;
-    p[4] = 255;
-    p[5] = 0;
-
-    p = reinterpret_cast<uint8_t*>(i.GetRow(1));
-    p[0] = 0;
-    p[1] = 0;
-    p[2] = 255;
-
-    p[3] = 255;
-    p[4] = 0;
-    p[5] = 0;
-
-    scene.SetLayer(12, new ColorTextureSceneLayer(i));
-
-    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
-    l->SetOrigin(-3, 2);
-    l->SetPixelSpacing(1.5, 1);
-    l->SetAngle(20.0 / 180.0 * 3.14);
-    scene.SetLayer(14, l.release());
-  }
-
-  // Texture of 1x1 size
-  {
-    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 1, 1, false);
-
-    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
-    p[0] = 255;
-    p[1] = 0;
-    p[2] = 0;
-
-    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
-    l->SetOrigin(-2, 1);
-    l->SetAngle(20.0 / 180.0 * 3.14);
-    scene.SetLayer(13, l.release());
-  }
-
-  // Some lines
-  {
-    std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer);
-
-    layer->SetThickness(1);
-
-    PolylineSceneLayer::Chain chain;
-    chain.push_back(ScenePoint2D(0 - 0.5, 0 - 0.5));
-    chain.push_back(ScenePoint2D(0 - 0.5, 2 - 0.5));
-    chain.push_back(ScenePoint2D(2 - 0.5, 2 - 0.5));
-    chain.push_back(ScenePoint2D(2 - 0.5, 0 - 0.5));
-    layer->AddChain(chain, true, 255, 0, 0);
-
-    chain.clear();
-    chain.push_back(ScenePoint2D(-5, -5));
-    chain.push_back(ScenePoint2D(5, -5));
-    chain.push_back(ScenePoint2D(5, 5));
-    chain.push_back(ScenePoint2D(-5, 5));
-    layer->AddChain(chain, true, 0, 255, 0);
-
-    double dy = 1.01;
-    chain.clear();
-    chain.push_back(ScenePoint2D(-4, -4));
-    chain.push_back(ScenePoint2D(4, -4 + dy));
-    chain.push_back(ScenePoint2D(-4, -4 + 2.0 * dy));
-    chain.push_back(ScenePoint2D(4, 2));
-    layer->AddChain(chain, false, 0, 0, 255);
-
-    //    layer->SetColor(0,255, 255);
-    scene.SetLayer(50, layer.release());
-  }
-
-  // Some text
-  {
-    std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
-    layer->SetText("Hello");
-    scene.SetLayer(100, layer.release());
-  }
-}
-
-#if ORTHANC_SANDBOXED == 0
-void TakeScreenshot(const std::string& target,
-                    const OrthancStone::Scene2D& scene,
-                    unsigned int canvasWidth,
-                    unsigned int canvasHeight)
-{
-  using namespace OrthancStone;
-  // Take a screenshot, then save it as PNG file
-  CairoCompositor compositor(scene, canvasWidth, canvasHeight);
-  compositor.SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, BASIC_SCENE_FONT_SIZE, Orthanc::Encoding_Latin1);
-  compositor.Refresh();
-
-  Orthanc::ImageAccessor canvas;
-  compositor.GetCanvas().GetReadOnlyAccessor(canvas);
-
-  Orthanc::Image png(Orthanc::PixelFormat_RGB24, canvas.GetWidth(), canvas.GetHeight(), false);
-  Orthanc::ImageProcessing::Convert(png, canvas);
-
-  Orthanc::PngWriter writer;
-  writer.WriteToFile(target, png);
-}
-#endif
-
-void ShowCursorInfo(Scene2D& scene, const PointerEvent& pointerEvent)
-{
-  ScenePoint2D p = pointerEvent.GetMainPosition().Apply(scene.GetCanvasToSceneTransform());
-
-  char buf[64];
-  sprintf(buf, "(%0.02f,%0.02f)", p.GetX(), p.GetY());
-
-  if (scene.HasLayer(BASIC_SCENE_LAYER_POSITION))
-  {
-    TextSceneLayer& layer =
-        dynamic_cast<TextSceneLayer&>(scene.GetLayer(BASIC_SCENE_LAYER_POSITION));
-    layer.SetText(buf);
-    layer.SetPosition(p.GetX(), p.GetY());
-  }
-  else
-  {
-    std::unique_ptr<TextSceneLayer>
-        layer(new TextSceneLayer);
-    layer->SetColor(0, 255, 0);
-    layer->SetText(buf);
-    layer->SetBorder(20);
-    layer->SetAnchor(BitmapAnchor_BottomCenter);
-    layer->SetPosition(p.GetX(), p.GetY());
-    scene.SetLayer(BASIC_SCENE_LAYER_POSITION, layer.release());
-  }
-}
-
-
-
-bool BasicScene2DInteractor::OnMouseEvent(const GuiAdapterMouseEvent& event, const PointerEvent& pointerEvent)
-{
-  if (currentTracker_.get() != NULL)
-  {
-    switch (event.type)
-    {
-    case GUIADAPTER_EVENT_MOUSEUP:
-    {
-      currentTracker_->PointerUp(pointerEvent);
-      if (!currentTracker_->IsAlive())
-      {
-        currentTracker_.reset();
-      }
-    };break;
-    case GUIADAPTER_EVENT_MOUSEMOVE:
-    {
-      currentTracker_->PointerMove(pointerEvent);
-    };break;
-    default:
-      return false;
-    }
-    return true;
-  }
-  else if (event.type == GUIADAPTER_EVENT_MOUSEDOWN)
-  {
-    if (event.button == GUIADAPTER_MOUSEBUTTON_LEFT)
-    {
-      currentTracker_.reset(new RotateSceneTracker(viewportController_, pointerEvent));
-    }
-    else if (event.button == GUIADAPTER_MOUSEBUTTON_MIDDLE)
-    {
-      currentTracker_.reset(new PanSceneTracker(viewportController_, pointerEvent));
-    }
-    else if (event.button == GUIADAPTER_MOUSEBUTTON_RIGHT)
-    {
-      currentTracker_.reset(new ZoomSceneTracker(viewportController_, pointerEvent, viewportController_->GetViewport().GetCanvasHeight()));
-    }
-  }
-  else if (event.type == GUIADAPTER_EVENT_MOUSEMOVE)
-  {
-    if (showCursorInfo_)
-    {
-      Scene2D& scene(viewportController_->GetScene());
-      ShowCursorInfo(scene, pointerEvent);
-    }
-    return true;
-  }
-  return false;
-}
-
-bool BasicScene2DInteractor::OnKeyboardEvent(const GuiAdapterKeyboardEvent& guiEvent)
-{
-  if (guiEvent.type == GUIADAPTER_EVENT_KEYDOWN)
-  {
-    switch (guiEvent.sym[0])
-    {
-    case 's':
-    {
-      //viewportController_->FitContent(viewportController_->GetViewport().GetCanvasWidth(), viewportController_->GetViewport().GetCanvasHeight());
-      viewportController_->FitContent();
-      return true;
-    };
-#if ORTHANC_SANDBOXED == 0
-    case 'c':
-    {
-      Scene2D& scene(viewportController_->GetScene());
-      TakeScreenshot("screenshot.png", scene, viewportController_->GetViewport().GetCanvasWidth(), viewportController_->GetViewport().GetCanvasHeight());
-      return true;
-    }
-#endif
-    case 'd':
-    {
-      showCursorInfo_ = !showCursorInfo_;
-      if (!showCursorInfo_)
-      {
-        Scene2D& scene(viewportController_->GetScene());
-        scene.DeleteLayer(BASIC_SCENE_LAYER_POSITION);
-      }
-
-      return true;
-    }
-    }
-  }
-  return false;
-}
-
-bool BasicScene2DInteractor::OnWheelEvent(const GuiAdapterWheelEvent& guiEvent)
-{
-  return false;
-}
--- a/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/BasicScene.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include "Framework/Scene2DViewport/ViewportController.h"
-#include "Framework/Scene2D/Scene2D.h"
-
-extern const unsigned int BASIC_SCENE_FONT_SIZE;
-extern const int BASIC_SCENE_LAYER_POSITION;
-
-extern void PrepareScene(OrthancStone::Scene2D& scene);
-extern void TakeScreenshot(const std::string& target,
-                           const OrthancStone::Scene2D& scene,
-                           unsigned int canvasWidth,
-                           unsigned int canvasHeight);
-
-
-#include "Applications/Generic/Scene2DInteractor.h"
-#include "Framework/Scene2DViewport/IFlexiblePointerTracker.h"
-
-
-class BasicScene2DInteractor : public OrthancStone::Scene2DInteractor
-{
-  boost::shared_ptr<OrthancStone::IFlexiblePointerTracker>  currentTracker_;
-  bool                                                      showCursorInfo_;
-public:
-  BasicScene2DInteractor(boost::shared_ptr<OrthancStone::ViewportController> viewportController) :
-    Scene2DInteractor(viewportController),
-    showCursorInfo_(false)
-  {}
-
-  virtual bool OnMouseEvent(const OrthancStone::GuiAdapterMouseEvent& event, const OrthancStone::PointerEvent& pointerEvent) override;
-  virtual bool OnKeyboardEvent(const OrthancStone::GuiAdapterKeyboardEvent& guiEvent) override;
-  virtual bool OnWheelEvent(const OrthancStone::GuiAdapterWheelEvent& guiEvent) override;
-};
-
--- a/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/mainQt.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#define GLEW_STATIC 1
-// From Stone
-#include "../../Framework/OpenGL/OpenGLIncludes.h"
-#include "../../Applications/Sdl/SdlWindow.h"
-#include "../../Framework/Scene2D/CairoCompositor.h"
-#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/Scene2D/PanSceneTracker.h"
-#include "../../Framework/Scene2D/RotateSceneTracker.h"
-#include "../../Framework/Scene2D/Scene2D.h"
-#include "../../Framework/Scene2D/ZoomSceneTracker.h"
-#include "../../Framework/Scene2DViewport/ViewportController.h"
-#include "../../Framework/Scene2DViewport/UndoStack.h"
-
-#include "../../Framework/StoneInitialization.h"
-#include "../../Framework/Messages/MessageBroker.h"
-
-// From Orthanc framework
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-#include <Core/Images/Image.h>
-#include <Core/Images/ImageProcessing.h>
-#include <Core/Images/PngWriter.h>
-
-#include <boost/make_shared.hpp>
-#include <boost/ref.hpp>
-#include "EmbeddedResources.h"
-
-#include <stdio.h>
-#include <QDebug>
-#include <QWindow>
-
-#include "BasicScene.h"
-
-
-using namespace OrthancStone;
-
-
-
-static void GLAPIENTRY OpenGLMessageCallback(GLenum source,
-                                             GLenum type,
-                                             GLuint id,
-                                             GLenum severity,
-                                             GLsizei length,
-                                             const GLchar* message,
-                                             const void* userParam )
-{
-  if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
-  {
-    fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
-            ( type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : "" ),
-            type, severity, message );
-  }
-}
-
-extern void InitGL();
-
-#include <QApplication>
-#include "BasicSceneWindow.h"
-
-int main(int argc, char* argv[])
-{
-  QApplication a(argc, argv);
-
-  OrthancStone::Samples::BasicSceneWindow window;
-  window.show();
-  window.GetOpenGlWidget().Init();
-
-  MessageBroker broker;
-  boost::shared_ptr<UndoStack> undoStack(new UndoStack);
-  boost::shared_ptr<ViewportController> controller = boost::make_shared<ViewportController>(undoStack, boost::ref(broker), window.GetOpenGlWidget());
-  PrepareScene(controller->GetScene());
-
-  window.GetOpenGlWidget().GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
-                     BASIC_SCENE_FONT_SIZE, Orthanc::Encoding_Latin1);
-
-  boost::shared_ptr<OrthancStone::Scene2DInteractor> interactor(new BasicScene2DInteractor(controller));
-  window.GetOpenGlWidget().SetInteractor(interactor);
-
-  controller->FitContent();
-
-  return a.exec();
-}
--- a/Resources/Graveyard/Deprecated/Samples/MultiPlatform/BasicScene/mainSdl.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-// From Stone
-#include "Framework/Viewport/SdlViewport.h"
-#include "Framework/Scene2D/OpenGLCompositor.h"
-#include "Framework/Scene2DViewport/UndoStack.h"
-#include "Framework/StoneInitialization.h"
-#include "Framework/Messages/MessageBroker.h"
-
-// From Orthanc framework
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-
-#include <boost/make_shared.hpp>
-#include <boost/ref.hpp>
-
-#include <SDL.h>
-#include <stdio.h>
-
-
-#include "BasicScene.h"
-
-using namespace OrthancStone;
-
-boost::shared_ptr<BasicScene2DInteractor> interactor;
-
-void HandleApplicationEvent(boost::shared_ptr<OrthancStone::ViewportController> controller,
-                            const SDL_Event& event)
-{
-  using namespace OrthancStone;
-  Scene2D& scene(controller->GetScene());
-  if (event.type == SDL_MOUSEBUTTONDOWN || event.type == SDL_MOUSEBUTTONUP || event.type == SDL_MOUSEMOTION)
-  {
-    // TODO: this code is copy/pasted from GuiAdapter::Run() -> find the right place
-    int scancodeCount = 0;
-    const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
-    bool ctrlPressed(false);
-    bool shiftPressed(false);
-    bool altPressed(false);
-
-    if (SDL_SCANCODE_LCTRL < scancodeCount && keyboardState[SDL_SCANCODE_LCTRL])
-      ctrlPressed = true;
-    if (SDL_SCANCODE_RCTRL < scancodeCount && keyboardState[SDL_SCANCODE_RCTRL])
-      ctrlPressed = true;
-    if (SDL_SCANCODE_LSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_LSHIFT])
-      shiftPressed = true;
-    if (SDL_SCANCODE_RSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_RSHIFT])
-      shiftPressed = true;
-    if (SDL_SCANCODE_LALT < scancodeCount && keyboardState[SDL_SCANCODE_LALT])
-      altPressed = true;
-
-    GuiAdapterMouseEvent guiEvent;
-    ConvertFromPlatform(guiEvent, ctrlPressed, shiftPressed, altPressed, event);
-    PointerEvent pointerEvent;
-    pointerEvent.AddPosition(controller->GetViewport().GetPixelCenterCoordinates(event.button.x, event.button.y));
-
-    interactor->OnMouseEvent(guiEvent, pointerEvent);
-    return;
-  }
-  else if ((event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) && event.key.repeat == 0  /* Ignore key bounce */)
-  {
-    GuiAdapterKeyboardEvent guiEvent;
-    ConvertFromPlatform(guiEvent, event);
-
-    interactor->OnKeyboardEvent(guiEvent);
-  }
-
-}
-
-
-static void GLAPIENTRY
-OpenGLMessageCallback(GLenum source,
-                      GLenum type,
-                      GLuint id,
-                      GLenum severity,
-                      GLsizei length,
-                      const GLchar* message,
-                      const void* userParam )
-{
-  if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
-  {
-    fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
-            ( type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : "" ),
-            type, severity, message );
-  }
-}
-
-
-void Run(boost::shared_ptr<OrthancStone::ViewportController> controller)
-{
-  SdlViewport& sdlViewport = dynamic_cast<SdlViewport&>(controller->GetViewport());
-
-  glEnable(GL_DEBUG_OUTPUT);
-  glDebugMessageCallback(OpenGLMessageCallback, 0);
-
-  controller->GetViewport().GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
-                     BASIC_SCENE_FONT_SIZE, Orthanc::Encoding_Latin1);
-
-  controller->GetViewport().Refresh();
-  controller->FitContent();
-
-
-  bool stop = false;
-  while (!stop)
-  {
-    controller->GetViewport().Refresh();
-
-    SDL_Event event;
-    while (!stop &&
-           SDL_PollEvent(&event))
-    {
-      if (event.type == SDL_QUIT)
-      {
-        stop = true;
-        break;
-      }
-      else if (event.type == SDL_WINDOWEVENT &&
-               event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
-      {
-        sdlViewport.UpdateSize(event.window.data1, event.window.data2);
-      }
-      else if (event.type == SDL_KEYDOWN &&
-               event.key.repeat == 0 /* Ignore key bounce */)
-      {
-        switch (event.key.keysym.sym)
-        {
-          case SDLK_f:
-            sdlViewport.GetWindow().ToggleMaximize();
-            break;
-              
-          case SDLK_q:
-            stop = true;
-            break;
-
-          default:
-            break;
-        }
-      }
-      
-      HandleApplicationEvent(controller, event);
-    }
-
-    SDL_Delay(1);
-  }
-  interactor.reset();
-}
-
-
-
-
-/**
- * IMPORTANT: The full arguments to "main()" are needed for SDL on
- * Windows. Otherwise, one gets the linking error "undefined reference
- * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
- **/
-int main(int argc, char* argv[])
-{
-  using namespace OrthancStone;
-  StoneInitialize();
-  Orthanc::Logging::EnableInfoLevel(true);
-
-  try
-  {
-    SdlOpenGLViewport viewport("Hello", 1024, 768);
-    MessageBroker broker;
-    boost::shared_ptr<UndoStack> undoStack(new UndoStack);
-    boost::shared_ptr<ViewportController> controller = boost::make_shared<ViewportController>(undoStack, boost::ref(broker), boost::ref(viewport));
-    interactor.reset(new BasicScene2DInteractor(controller));
-    PrepareScene(controller->GetScene());
-    Run(controller);
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "EXCEPTION: " << e.What();
-  }
-
-  StoneFinalize();
-
-  return 0;
-}
--- a/Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "../../Framework/OpenGL/OpenGLIncludes.h"
-#include "BasicSceneWindow.h"
-
-/**
- * Don't use "ui_MainWindow.h" instead of <ui_MainWindow.h> below, as
- * this makes CMake unable to detect when the UI file changes.
- **/
-#include <ui_BasicSceneWindow.h>
-#include "../../Applications/Samples/SampleApplicationBase.h"
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-
-    BasicSceneWindow::BasicSceneWindow(
-      QWidget *parent) :
-      ui_(new Ui::BasicSceneWindow)
-    {
-      ui_->setupUi(this);
-    }
-
-    BasicSceneWindow::~BasicSceneWindow()
-    {
-      delete ui_;
-    }
-
-    QStoneOpenGlWidget& BasicSceneWindow::GetOpenGlWidget()
-    {
-      return *(ui_->centralWidget);
-    }
-
-  }
-}
--- a/Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-#include <QMainWindow>
-#include <QStoneOpenGlWidget.h>
-// #include "../../Qt/QCairoWidget.h"
-// #include "../../Qt/QStoneMainWindow.h"
-
-namespace Ui 
-{
-  class BasicSceneWindow;
-}
-
-namespace OrthancStone
-{
-  namespace Samples
-  {
-
-    //class SampleSingleCanvasApplicationBase;
-
-    class BasicSceneWindow : public QMainWindow
-    {
-      Q_OBJECT
-
-    private:
-      Ui::BasicSceneWindow*   ui_;
-      //SampleSingleCanvasApplicationBase&  stoneSampleApplication_;
-
-    public:
-      explicit BasicSceneWindow(QWidget *parent = 0);
-      ~BasicSceneWindow();
-
-      QStoneOpenGlWidget& GetOpenGlWidget();
-    };
-  }
-}
--- a/Resources/Graveyard/Deprecated/Samples/Qt/BasicSceneWindow.ui	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>BasicSceneWindow</class>
- <widget class="QMainWindow" name="BasicSceneWindow">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>903</width>
-    <height>634</height>
-   </rect>
-  </property>
-  <property name="minimumSize">
-   <size>
-    <width>500</width>
-    <height>300</height>
-   </size>
-  </property>
-  <property name="baseSize">
-   <size>
-    <width>500</width>
-    <height>300</height>
-   </size>
-  </property>
-  <property name="windowTitle">
-   <string>Stone of Orthanc</string>
-  </property>
-  <property name="layoutDirection">
-   <enum>Qt::LeftToRight</enum>
-  </property>
-  <widget class="QWidget" name="mainWidget">
-   <property name="sizePolicy">
-    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-     <horstretch>0</horstretch>
-     <verstretch>0</verstretch>
-    </sizepolicy>
-   </property>
-   <property name="layoutDirection">
-    <enum>Qt::LeftToRight</enum>
-   </property>
-   <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0">
-    <property name="sizeConstraint">
-     <enum>QLayout::SetDefaultConstraint</enum>
-    </property>
-    <item>
-     <widget class="OrthancStone::QStoneOpenGlWidget" name="centralWidget" native="true">
-      <property name="minimumSize">
-       <size>
-        <width>0</width>
-        <height>500</height>
-       </size>
-      </property>
-     </widget>
-    </item>
-   </layout>
-  </widget>
-  <widget class="QMenuBar" name="menubar">
-   <property name="geometry">
-    <rect>
-     <x>0</x>
-     <y>0</y>
-     <width>903</width>
-     <height>21</height>
-    </rect>
-   </property>
-   <widget class="QMenu" name="menuTest">
-    <property name="title">
-     <string>Test</string>
-    </property>
-   </widget>
-   <addaction name="menuTest"/>
-  </widget>
-  <widget class="QStatusBar" name="statusbar"/>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>QStoneOpenGlWidget</class>
-   <extends>QWidget</extends>
-   <header location="global">QStoneOpenGlWidget.h</header>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
--- a/Resources/Graveyard/Deprecated/Samples/Qt/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-
-#####################################################################
-## Configuration of the Orthanc framework
-#####################################################################
-
-# This CMake file defines the "ORTHANC_STONE_VERSION" macro, so it
-# must be the first inclusion
-include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/Version.cmake)
-
-if (ORTHANC_STONE_VERSION STREQUAL "mainline")
-  set(ORTHANC_FRAMEWORK_VERSION "mainline")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
-else()
-  set(ORTHANC_FRAMEWORK_VERSION "1.5.7")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
-endif()
-
-set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
-set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
-set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
-
-
-#####################################################################
-## Configuration of the Stone framework
-#####################################################################
-
-include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneParameters.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
-
-DownloadPackage(
-  "a24b8136b8f3bb93f166baf97d9328de"
-  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
-  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
-
-set(ORTHANC_STONE_APPLICATION_RESOURCES
-  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
-  )
-
-SET(ENABLE_GOOGLE_TEST OFF)
-SET(ENABLE_LOCALE ON)
-SET(ENABLE_QT ON)
-SET(ENABLE_SDL OFF)
-SET(ENABLE_WEB_CLIENT ON)
-SET(ORTHANC_SANDBOXED OFF)
-LIST(APPEND ORTHANC_BOOST_COMPONENTS program_options)
-
-include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneConfiguration.cmake)
-
-add_definitions(
-  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
-  )
-#####################################################################
-## Build the samples
-#####################################################################
-
-add_library(OrthancStone STATIC
-  ${ORTHANC_STONE_SOURCES}
-  )
-
-list(APPEND BASIC_SCENE_APPLICATIONS_SOURCES
-  BasicSceneWindow.cpp
-  )
-
-ORTHANC_QT_WRAP_UI(BASIC_SCENE_APPLICATIONS_SOURCES
-  BasicSceneWindow.ui
-  )
-
-ORTHANC_QT_WRAP_CPP(BASIC_SCENE_APPLICATIONS_SOURCES
-  BasicSceneWindow.h
-  QStoneOpenGlWidget.h
-  )
-
-add_executable(MpBasicScene
-  ${CMAKE_CURRENT_LIST_DIR}/../MultiPlatform/BasicScene/BasicScene.h
-  ${CMAKE_CURRENT_LIST_DIR}/../MultiPlatform/BasicScene/BasicScene.cpp
-  ${CMAKE_CURRENT_LIST_DIR}/../MultiPlatform/BasicScene/mainQt.cpp
-  QStoneOpenGlWidget.cpp
-  ${BASIC_SCENE_APPLICATIONS_SOURCES}
-  )
-
-target_include_directories(MpBasicScene PUBLIC ${CMAKE_SOURCE_DIR} ${ORTHANC_STONE_ROOT})
-target_link_libraries(MpBasicScene OrthancStone)
--- a/Resources/Graveyard/Deprecated/Samples/Qt/QStoneOpenGlWidget.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "../../Framework/OpenGL/OpenGLIncludes.h"
-#include "QStoneOpenGlWidget.h"
-
-#include <QMouseEvent>
-
-using namespace OrthancStone;
-
-void QStoneOpenGlWidget::initializeGL()
-{
-  glewInit();
-}
-
-void QStoneOpenGlWidget::MakeCurrent()
-{
-  this->makeCurrent();
-}
-
-void QStoneOpenGlWidget::resizeGL(int w, int h)
-{
-
-}
-
-void QStoneOpenGlWidget::paintGL()
-{
-  if (compositor_)
-  {
-    compositor_->Refresh();
-  }
-  doneCurrent();
-}
-
-void ConvertFromPlatform(
-    OrthancStone::GuiAdapterMouseEvent& guiEvent,
-    PointerEvent& pointerEvent,
-    const QMouseEvent& qtEvent,
-    const IViewport& viewport)
-{
-  guiEvent.targetX = qtEvent.x();
-  guiEvent.targetY = qtEvent.y();
-  pointerEvent.AddPosition(viewport.GetPixelCenterCoordinates(guiEvent.targetX, guiEvent.targetY));
-
-  switch (qtEvent.button())
-  {
-  case Qt::LeftButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT; break;
-  case Qt::MiddleButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_MIDDLE; break;
-  case Qt::RightButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_RIGHT; break;
-  default:
-    guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT;
-  }
-
-  if (qtEvent.modifiers().testFlag(Qt::ShiftModifier))
-  {
-    guiEvent.shiftKey = true;
-  }
-  if (qtEvent.modifiers().testFlag(Qt::ControlModifier))
-  {
-    guiEvent.ctrlKey = true;
-  }
-  if (qtEvent.modifiers().testFlag(Qt::AltModifier))
-  {
-    guiEvent.altKey = true;
-  }
-}
-
-void QStoneOpenGlWidget::mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType)
-{
-  OrthancStone::GuiAdapterMouseEvent guiEvent;
-  PointerEvent pointerEvent;
-  ConvertFromPlatform(guiEvent, pointerEvent, *qtEvent, *this);
-  guiEvent.type = guiEventType;
-
-  if (sceneInteractor_.get() != NULL && compositor_.get() != NULL)
-  {
-    sceneInteractor_->OnMouseEvent(guiEvent, pointerEvent);
-  }
-
-  // force redraw of the OpenGL widget
-  update();
-}
-
-void QStoneOpenGlWidget::mousePressEvent(QMouseEvent* qtEvent)
-{
-  mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEDOWN);
-}
-
-void QStoneOpenGlWidget::mouseMoveEvent(QMouseEvent* qtEvent)
-{
-  mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEMOVE);
-}
-
-void QStoneOpenGlWidget::mouseReleaseEvent(QMouseEvent* qtEvent)
-{
-  mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEUP);
-}
-
-void ConvertFromPlatform(
-    OrthancStone::GuiAdapterKeyboardEvent& guiEvent,
-    const QKeyEvent& qtEvent)
-{
-  if (qtEvent.text().length() > 0)
-  {
-    guiEvent.sym[0] = qtEvent.text()[0].cell();
-  }
-  else
-  {
-    guiEvent.sym[0] = 0;
-  }
-  guiEvent.sym[1] = 0;
-
-  if (qtEvent.modifiers().testFlag(Qt::ShiftModifier))
-  {
-    guiEvent.shiftKey = true;
-  }
-  if (qtEvent.modifiers().testFlag(Qt::ControlModifier))
-  {
-    guiEvent.ctrlKey = true;
-  }
-  if (qtEvent.modifiers().testFlag(Qt::AltModifier))
-  {
-    guiEvent.altKey = true;
-  }
-
-}
-
-
-bool QStoneOpenGlWidget::keyEvent(QKeyEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType)
-{
-  bool handled = false;
-  OrthancStone::GuiAdapterKeyboardEvent guiEvent;
-  ConvertFromPlatform(guiEvent, *qtEvent);
-  guiEvent.type = guiEventType;
-
-  if (sceneInteractor_.get() != NULL && compositor_.get() != NULL)
-  {
-    handled = sceneInteractor_->OnKeyboardEvent(guiEvent);
-
-    if (handled)
-    {
-      // force redraw of the OpenGL widget
-      update();
-    }
-  }
-  return handled;
-}
-
-void QStoneOpenGlWidget::keyPressEvent(QKeyEvent *qtEvent)
-{
-  bool handled = keyEvent(qtEvent, GUIADAPTER_EVENT_KEYDOWN);
-  if (!handled)
-  {
-    QOpenGLWidget::keyPressEvent(qtEvent);
-  }
-}
-
-void QStoneOpenGlWidget::keyReleaseEvent(QKeyEvent *qtEvent)
-{
-  bool handled = keyEvent(qtEvent, GUIADAPTER_EVENT_KEYUP);
-  if (!handled)
-  {
-    QOpenGLWidget::keyPressEvent(qtEvent);
-  }
-}
-
-void QStoneOpenGlWidget::wheelEvent(QWheelEvent *qtEvent)
-{
-  OrthancStone::GuiAdapterWheelEvent guiEvent;
-  throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-
-  // force redraw of the OpenGL widget
-  update();
-}
--- a/Resources/Graveyard/Deprecated/Samples/Qt/QStoneOpenGlWidget.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-#include "../../Framework/OpenGL/OpenGLIncludes.h"
-#include <QOpenGLWidget>
-#include <QOpenGLFunctions>
-#include <QOpenGLContext>
-
-#include <boost/shared_ptr.hpp>
-#include "../../Framework/OpenGL/IOpenGLContext.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/Viewport/ViewportBase.h"
-#include "../../Applications/Generic/Scene2DInteractor.h"
-
-namespace OrthancStone
-{
-  class QStoneOpenGlWidget :
-      public QOpenGLWidget,
-      public OpenGL::IOpenGLContext,
-      public ViewportBase
-  {
-    std::unique_ptr<OrthancStone::OpenGLCompositor> compositor_;
-    boost::shared_ptr<Scene2DInteractor> sceneInteractor_;
-    QOpenGLContext                        openGlContext_;
-
-  public:
-    QStoneOpenGlWidget(QWidget *parent) :
-      QOpenGLWidget(parent),
-      ViewportBase("QtStoneOpenGlWidget")  // TODO: we shall be able to define a name but construction time is too early !
-    {
-      setFocusPolicy(Qt::StrongFocus);  // to enable keyPressEvent
-      setMouseTracking(true);           // to enable mouseMoveEvent event when no button is pressed
-    }
-
-    void Init()
-    {
-      QSurfaceFormat requestedFormat;
-      requestedFormat.setVersion( 2, 0 );
-      openGlContext_.setFormat( requestedFormat );
-      openGlContext_.create();
-      openGlContext_.makeCurrent(context()->surface());
-
-      compositor_.reset(new OpenGLCompositor(*this, GetScene()));
-    }
-
-  protected:
-
-    //**** QWidget overrides
-    void initializeGL() override;
-    void resizeGL(int w, int h) override;
-    void paintGL() override;
-
-    void mousePressEvent(QMouseEvent* event) override;
-    void mouseMoveEvent(QMouseEvent* event) override;
-    void mouseReleaseEvent(QMouseEvent* event) override;
-    void keyPressEvent(QKeyEvent* event) override;
-    void keyReleaseEvent(QKeyEvent *event) override;
-    void wheelEvent(QWheelEvent* event) override;
-
-    //**** IOpenGLContext overrides
-
-    virtual void MakeCurrent() override;
-    virtual void SwapBuffer() override {}
-
-    virtual unsigned int GetCanvasWidth() const override
-    {
-      return this->width();
-    }
-
-    virtual unsigned int GetCanvasHeight() const override
-    {
-      return this->height();
-    }
-
-  public:
-
-    void SetInteractor(boost::shared_ptr<Scene2DInteractor> sceneInteractor)
-    {
-      sceneInteractor_ = sceneInteractor;
-    }
-
-    virtual ICompositor& GetCompositor()
-    {
-      return *compositor_;
-    }
-
-  protected:
-    void mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType);
-    bool keyEvent(QKeyEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType);
-
-  };
-}
--- a/Resources/Graveyard/Deprecated/Samples/Qt/Scene2DInteractor.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "Scene2DInteractor.h"
-
-#include "../../Framework/Scene2D/PanSceneTracker.h"
-#include "../../Framework/Scene2D/ZoomSceneTracker.h"
-#include "../../Framework/Scene2D/RotateSceneTracker.h"
-
-
-namespace OrthancStone
-{
-
-}
-
-using namespace OrthancStone;
-
-
-bool BasicScene2DInteractor::OnMouseEvent(const GuiAdapterMouseEvent& event, const PointerEvent& pointerEvent)
-{
-  if (currentTracker_.get() != NULL)
-  {
-    switch (event.type)
-    {
-    case GUIADAPTER_EVENT_MOUSEUP:
-    {
-      currentTracker_->PointerUp(pointerEvent);
-      if (!currentTracker_->IsAlive())
-      {
-        currentTracker_.reset();
-      }
-    };break;
-    case GUIADAPTER_EVENT_MOUSEMOVE:
-    {
-      currentTracker_->PointerMove(pointerEvent);
-    };break;
-    }
-    return true;
-  }
-  else
-  {
-    if (event.button == GUIADAPTER_MOUSEBUTTON_LEFT)
-    {
-      currentTracker_.reset(new RotateSceneTracker(viewportController_, pointerEvent));
-    }
-    else if (event.button == GUIADAPTER_MOUSEBUTTON_MIDDLE)
-    {
-      currentTracker_.reset(new PanSceneTracker(viewportController_, pointerEvent));
-    }
-    else if (event.button == GUIADAPTER_MOUSEBUTTON_RIGHT && compositor_.get() != NULL)
-    {
-      currentTracker_.reset(new ZoomSceneTracker(viewportController_, pointerEvent, compositor_->GetHeight()));
-    }
-    return true;
-  }
-  return false;
-}
-
-bool BasicScene2DInteractor::OnKeyboardEvent(const GuiAdapterKeyboardEvent& guiEvent)
-{
-  switch (guiEvent.sym[0])
-  {
-  case 's':
-  {
-    viewportController_->FitContent(compositor_->GetWidth(), compositor_->GetHeight());
-    return true;
-  };
-  }
-  return false;
-}
-
-bool BasicScene2DInteractor::OnWheelEvent(const GuiAdapterWheelEvent& guiEvent)
-{
-  return false;
-}
--- a/Resources/Graveyard/Deprecated/Samples/Qt/Scene2DInteractor.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Applications/Generic/Scene2DInteractor.h"
-#include "../../Framework/Scene2DViewport/IFlexiblePointerTracker.h"
-
-
-class BasicScene2DInteractor : public OrthancStone::Scene2DInteractor
-{
-  boost::shared_ptr<OrthancStone::IFlexiblePointerTracker>  currentTracker_;
-public:
-  BasicScene2DInteractor(boost::shared_ptr<OrthancStone::ViewportController> viewportController) :
-    Scene2DInteractor(viewportController)
-  {}
-
-  virtual bool OnMouseEvent(const OrthancStone::GuiAdapterMouseEvent& event, const OrthancStone::PointerEvent& pointerEvent) override;
-  virtual bool OnKeyboardEvent(const OrthancStone::GuiAdapterKeyboardEvent& guiEvent);
-  virtual bool OnWheelEvent(const OrthancStone::GuiAdapterWheelEvent& guiEvent);
-};
-
--- a/Resources/Graveyard/Deprecated/Samples/README.md	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-
-**These samples are deprecated and not guaranteed to work. A migration to a 
-new version of the Stone API is underway.**
-
-Please read orthanc-stone/Samples/README.md first for general requirements.
-
-
-
-Deprecated -- to be sorted
-===========================
-
-The following assumes that the source code to be downloaded in
-`~/orthanc-stone` and Orthanc source code to be checked out in
-`~/orthanc`. 
-
-Building the WASM samples
--------------------------------------
-
-```
-cd ~/orthanc-stone/Applications/Samples
-./build-wasm.sh
-```
-
-Serving the WASM samples
-------------------------------------
-```
-# launch an Orthanc listening on 8042 port:
-Orthanc
-
-# launch an nginx that will serve the WASM static files and reverse
-# proxy
-sudo nginx -p $(pwd) -c nginx.local.conf
-```
-
-You can now open the samples in http://localhost:9977
-
-Building the SDL native samples (SimpleViewer only)
----------------------------------------------------
-
-The following also assumes that you have checked out the Orthanc
-source code in an `orthanc` folder next to the Stone of Orthanc
-repository, please enter the following:
-
-**Simple make generator with dynamic build**
-
-```
-# Please set $currentDir to the current folder
-mkdir -p ~/builds/orthanc-stone-build
-cd ~/builds/orthanc-stone-build
-cmake -DORTHANC_FRAMEWORK_SOURCE=path \
-    -DORTHANC_FRAMEWORK_ROOT=$currentDir/../../../orthanc \
-    -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON \
-    ~/orthanc-stone/Applications/Samples/
-```
-
-**Ninja generator with static SDL build (pwsh script)**
-
-```
-# Please yourself one level above the orthanc-stone and orthanc folders
-if( -not (test-path stone_build_sdl)) { mkdir stone_build_sdl }
-cd stone_build_sdl
-cmake -G Ninja -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples/
-```
-
-**Ninja generator with static SDL build (bash/zsh script)**
-
-```
-# Please yourself one level above the orthanc-stone and orthanc folders
-if( -not (test-path stone_build_sdl)) { mkdir stone_build_sdl }
-cd stone_build_sdl
-cmake -G Ninja -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="`pwd`/../orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples/
-```
-
-**Visual Studio 2017 generator with static SDL build  (pwsh script)**
-
-```
-# The following will use Visual Studio 2017 to build the SDL samples
-# in debug mode (with multiple compilers in parallel). NOTE: place 
-# yourself one level above the `orthanc-stone` and `orthanc` folders
-
-if( -not (test-path stone_build_sdl)) { mkdir stone_build_sdl }
-cd stone_build_sdl
-cmake -G "Visual Studio 15 2017 Win64" -DMSVC_MULTIPLE_PROCESSES=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples/
-cmake --build . --config Debug
-```
-
-If you are working on Windows, add the correct generator option to
-cmake to, for instance, generate msbuild files for Visual Studio.
-
-Then, under Linux:
-```
-cmake --build . --target OrthancStoneSimpleViewer -- -j 5
-```
-
-Note: replace `$($pwd)` with the current directory when not using Powershell
-
-Building the Qt native samples (SimpleViewer only) under Windows:
-------------------------------------------------------------------
-
-**Visual Studio 2017 generator with static Qt build  (pwsh script)**
-
-For instance, if Qt is installed in `C:\Qt\5.12.0\msvc2017_64`
-
-```
-# The following will use Visual Studio 2017 to build the SDL samples
-# in debug mode (with multiple compilers in parallel). NOTE: place 
-# yourself one level above the `orthanc-stone` and `orthanc` folders
-
-if( -not (test-path stone_build_qt)) { mkdir stone_build_qt }
-cd stone_build_qt
-cmake -G "Visual Studio 15 2017 Win64" -DMSVC_MULTIPLE_PROCESSES=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DCMAKE_PREFIX_PATH=C:\Qt\5.12.0\msvc2017_64 -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_QT=ON  ../orthanc-stone/Applications/Samples/
-cmake --build . --config Debug
-```
-
-Note: replace `$($pwd)` with the current directory when not using Powershell
-
-
-
-
-
-
-Building the SDL native samples (SimpleViewer only) under Windows:
-------------------------------------------------------------------
-`cmake -DSTATIC_BUILD=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON -G "Visual Studio 15 2017 Win64" ../orthanc-stone/Applications/Samples/`
-
-Note: replace `$($pwd)` with the current directory when not using Powershell
-
-Executing the native samples:
---------------------------------
-```
-# launch an Orthanc listening on 8042 port:
-Orthanc
-
-# launch the sample
-./OrthancStoneSimpleViewer --studyId=XX
-``` 
-
-Build the Application Samples
------------------------------
-
-**Visual Studio 2008 (v90) **
-
-```
-cmake -G "Visual Studio 9 2008" -DUSE_LEGACY_JSONCPP=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples
-```
-
-**Visual Studio 2019 (v142) **
-
-```
-cmake -G "Visual Studio 16 2019" -A x64 -DMSVC_MULTIPLE_PROCESSES=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples
-```
-
-**Visual Studio 2017 (v140) **
-
-```
-cmake -G "Visual Studio 15 2017 Win64" -DMSVC_MULTIPLE_PROCESSES=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Applications/Samples
-```
-
-
-Build the core Samples
----------------------------
-How to build the newest (2019-04-29) SDL samples under Windows, *inside* a
-folder that is sibling to the orthanc-stone folder: 
-
-**Visual Studio 2019 (v142) **
-
-```
-cmake -G "Visual Studio 16 2019" -A x64 -DMSVC_MULTIPLE_PROCESSES=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Samples/Sdl
-```
-
-**Visual Studio 2017 (v140) **
-
-```
-cmake -G "Visual Studio 15 2017 Win64" -DMSVC_MULTIPLE_PROCESSES=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Samples/Sdl
-```
-
-**Visual Studio 2008 (v90) **
-
-```
-cmake -G "Visual Studio 9 2008" -DUSE_LEGACY_JSONCPP=ON -DENABLE_OPENGL=ON -DSTATIC_BUILD=ON -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="$($pwd)\..\orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Samples/Sdl
-```
-
-And under Ubuntu (note the /mnt/c/osi/dev/orthanc folder):
-```
-cmake -G "Ninja" -DENABLE_OPENGL=ON -DSTATIC_BUILD=OFF -DOPENSSL_NO_CAPIENG=ON -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT="/mnt/c/osi/dev/orthanc" -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ../orthanc-stone/Samples/Sdl
-```
-
-TODO trackers:
-- CANCELLED (using outlined text now) text overlay 50% --> ColorTextureLayer 50%
-- DONE angle tracker: draw arcs
-- Handles on arc
-- Select measure tool with hit test --> Delete command
-
-
-
--- a/Resources/Graveyard/Deprecated/Samples/Sdl/BasicScene.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,418 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-// From Stone
-#include "../../Framework/Viewport/SdlViewport.h"
-#include "../../Framework/Scene2D/CairoCompositor.h"
-#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/Scene2D/PanSceneTracker.h"
-#include "../../Framework/Scene2D/RotateSceneTracker.h"
-#include "../../Framework/Scene2D/ZoomSceneTracker.h"
-#include "../../Framework/Scene2DViewport/ViewportController.h"
-#include "../../Framework/Scene2DViewport/UndoStack.h"
-
-#include "../../Framework/StoneInitialization.h"
-#include "../../Framework/Messages/MessageBroker.h"
-
-// From Orthanc framework
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-#include <Core/Images/Image.h>
-#include <Core/Images/ImageProcessing.h>
-#include <Core/Images/PngWriter.h>
-
-#include <boost/make_shared.hpp>
-
-#include <SDL.h>
-#include <stdio.h>
-
-static const unsigned int FONT_SIZE = 32;
-static const int LAYER_POSITION = 150;
-
-#define OPENGL_ENABLED 0
-
-void PrepareScene(OrthancStone::Scene2D& scene)
-{
-  using namespace OrthancStone;
-
-  // Texture of 2x2 size
-  {
-    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false);
-    
-    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
-    p[0] = 255;
-    p[1] = 0;
-    p[2] = 0;
-
-    p[3] = 0;
-    p[4] = 255;
-    p[5] = 0;
-
-    p = reinterpret_cast<uint8_t*>(i.GetRow(1));
-    p[0] = 0;
-    p[1] = 0;
-    p[2] = 255;
-
-    p[3] = 255;
-    p[4] = 0;
-    p[5] = 0;
-
-    scene.SetLayer(12, new ColorTextureSceneLayer(i));
-
-    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
-    l->SetOrigin(-3, 2);
-    l->SetPixelSpacing(1.5, 1);
-    l->SetAngle(20.0 / 180.0 * M_PI);
-    scene.SetLayer(14, l.release());
-  }
-
-  // Texture of 1x1 size
-  {
-    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 1, 1, false);
-    
-    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
-    p[0] = 255;
-    p[1] = 0;
-    p[2] = 0;
-
-    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
-    l->SetOrigin(-2, 1);
-    l->SetAngle(20.0 / 180.0 * M_PI);
-    scene.SetLayer(13, l.release());
-  }
-
-  // Some lines
-  {
-    std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer);
-
-    layer->SetThickness(10);
-
-    PolylineSceneLayer::Chain chain;
-    chain.push_back(ScenePoint2D(0 - 0.5, 0 - 0.5));
-    chain.push_back(ScenePoint2D(0 - 0.5, 2 - 0.5));
-    chain.push_back(ScenePoint2D(2 - 0.5, 2 - 0.5));
-    chain.push_back(ScenePoint2D(2 - 0.5, 0 - 0.5));
-    layer->AddChain(chain, true, 255, 0, 0);
-
-    chain.clear();
-    chain.push_back(ScenePoint2D(-5, -5));
-    chain.push_back(ScenePoint2D(5, -5));
-    chain.push_back(ScenePoint2D(5, 5));
-    chain.push_back(ScenePoint2D(-5, 5));
-    layer->AddChain(chain, true, 0, 255, 0);
-
-    double dy = 1.01;
-    chain.clear();
-    chain.push_back(ScenePoint2D(-4, -4));
-    chain.push_back(ScenePoint2D(4, -4 + dy));
-    chain.push_back(ScenePoint2D(-4, -4 + 2.0 * dy));
-    chain.push_back(ScenePoint2D(4, 2));
-    layer->AddChain(chain, false, 0, 0, 255);
-
-    scene.SetLayer(50, layer.release());
-  }
-
-  // Some text
-  {
-    std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
-    layer->SetText("Hello");
-    scene.SetLayer(100, layer.release());
-  }
-}
-
-
-void TakeScreenshot(const std::string& target,
-                    const OrthancStone::Scene2D& scene,
-                    unsigned int canvasWidth,
-                    unsigned int canvasHeight)
-{
-  using namespace OrthancStone;
-  // Take a screenshot, then save it as PNG file
-  CairoCompositor compositor(scene, canvasWidth, canvasHeight);
-  compositor.SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, FONT_SIZE, Orthanc::Encoding_Latin1);
-  compositor.Refresh();
-
-  Orthanc::ImageAccessor canvas;
-  compositor.GetCanvas().GetReadOnlyAccessor(canvas);
-
-  Orthanc::Image png(Orthanc::PixelFormat_RGB24, canvas.GetWidth(), canvas.GetHeight(), false);
-  Orthanc::ImageProcessing::Convert(png, canvas);
-        
-  Orthanc::PngWriter writer;
-  writer.WriteToFile(target, png);
-}
-
-
-void HandleApplicationEvent(const SDL_Event& event,
-                            boost::shared_ptr<OrthancStone::ViewportController>& controller,
-                            boost::shared_ptr<OrthancStone::IFlexiblePointerTracker>& activeTracker)
-{
-  using namespace OrthancStone;
-
-  Scene2D& scene = controller->GetScene();
-  IViewport& viewport = controller->GetViewport();
-
-  if (event.type == SDL_MOUSEMOTION)
-  {
-    int scancodeCount = 0;
-    const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
-
-    if (activeTracker.get() == NULL &&
-        SDL_SCANCODE_LCTRL < scancodeCount &&
-        keyboardState[SDL_SCANCODE_LCTRL])
-    {
-      // The "left-ctrl" key is down, while no tracker is present
-
-      PointerEvent e;
-      e.AddPosition(viewport.GetPixelCenterCoordinates(event.button.x, event.button.y));
-
-      ScenePoint2D p = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform());
-
-      char buf[64];
-      sprintf(buf, "(%0.02f,%0.02f)", p.GetX(), p.GetY());
-
-      if (scene.HasLayer(LAYER_POSITION))
-      {
-        TextSceneLayer& layer =
-          dynamic_cast<TextSceneLayer&>(scene.GetLayer(LAYER_POSITION));
-        layer.SetText(buf);
-        layer.SetPosition(p.GetX(), p.GetY());
-      }
-      else
-      {
-        std::unique_ptr<TextSceneLayer> 
-          layer(new TextSceneLayer);
-        layer->SetColor(0, 255, 0);
-        layer->SetText(buf);
-        layer->SetBorder(20);
-        layer->SetAnchor(BitmapAnchor_BottomCenter);
-        layer->SetPosition(p.GetX(), p.GetY());
-        scene.SetLayer(LAYER_POSITION, layer.release());
-      }
-    }
-    else
-    {
-      scene.DeleteLayer(LAYER_POSITION);
-    }
-  }
-  else if (event.type == SDL_MOUSEBUTTONDOWN)
-  {
-    PointerEvent e;
-    e.AddPosition(viewport.GetPixelCenterCoordinates(event.button.x, event.button.y));
-
-    switch (event.button.button)
-    {
-      case SDL_BUTTON_MIDDLE:
-        activeTracker = boost::make_shared<PanSceneTracker>(controller, e);
-        break;
-
-      case SDL_BUTTON_RIGHT:
-        activeTracker = boost::make_shared<ZoomSceneTracker>
-          (controller, e, viewport.GetCanvasHeight());
-        break;
-
-      case SDL_BUTTON_LEFT:
-        activeTracker = boost::make_shared<RotateSceneTracker>(controller, e);
-        break;
-
-      default:
-        break;
-    }
-  }
-  else if (event.type == SDL_KEYDOWN &&
-           event.key.repeat == 0 /* Ignore key bounce */)
-  {
-    switch (event.key.keysym.sym)
-    {
-      case SDLK_s:
-        controller->FitContent(viewport.GetCanvasWidth(), 
-                               viewport.GetCanvasHeight());
-        break;
-              
-      case SDLK_c:
-        TakeScreenshot("screenshot.png", scene, 
-                       viewport.GetCanvasWidth(), 
-                       viewport.GetCanvasHeight());
-        break;
-              
-      default:
-        break;
-    }
-  }
-}
-
-#if OPENGL_ENABLED==1
-static void GLAPIENTRY
-OpenGLMessageCallback(GLenum source,
-                      GLenum type,
-                      GLuint id,
-                      GLenum severity,
-                      GLsizei length,
-                      const GLchar* message,
-                      const void* userParam )
-{
-  if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
-  {
-    fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
-            ( type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : "" ),
-            type, severity, message );
-  }
-}
-#endif
-
-void Run(OrthancStone::MessageBroker& broker,
-         OrthancStone::SdlViewport& viewport)
-{
-  using namespace OrthancStone;
-  
-  boost::shared_ptr<ViewportController> controller(
-    new ViewportController(boost::make_shared<UndoStack>(), broker, viewport));
-  
-#if OPENGL_ENABLED==1
-  glEnable(GL_DEBUG_OUTPUT);
-  glDebugMessageCallback(OpenGLMessageCallback, 0);
-#endif
-
-  boost::shared_ptr<IFlexiblePointerTracker> tracker;
-
-  bool firstShown = true;
-  bool stop = false;
-  while (!stop)
-  {
-    viewport.Refresh();
-
-    SDL_Event event;
-    while (!stop &&
-           SDL_PollEvent(&event))
-    {
-      if (event.type == SDL_QUIT)
-      {
-        stop = true;
-        break;
-      }
-      else if (event.type == SDL_MOUSEMOTION)
-      {
-        if (tracker)
-        {
-          PointerEvent e;
-          e.AddPosition(viewport.GetPixelCenterCoordinates(
-            event.button.x, event.button.y));
-          tracker->PointerMove(e);
-        }
-      }
-      else if (event.type == SDL_MOUSEBUTTONUP)
-      {
-        if (tracker)
-        {
-          PointerEvent e;
-          e.AddPosition(viewport.GetPixelCenterCoordinates(
-            event.button.x, event.button.y));
-          tracker->PointerUp(e);
-          if(!tracker->IsAlive())
-            tracker.reset();
-        }
-      }
-      else if (event.type == SDL_WINDOWEVENT)
-      {
-        switch (event.window.event)
-        {
-          case SDL_WINDOWEVENT_SIZE_CHANGED:
-            tracker.reset();
-            viewport.UpdateSize(event.window.data1, event.window.data2);
-            break;
-
-          case SDL_WINDOWEVENT_SHOWN:
-            if (firstShown)
-            {
-              // Once the window is first shown, fit the content to its size
-              controller->FitContent(viewport.GetCanvasWidth(), viewport.GetCanvasHeight());
-              firstShown = false;
-            }
-            
-            break;
-
-          default:
-            break;
-        }
-      }
-      else if (event.type == SDL_KEYDOWN &&
-               event.key.repeat == 0 /* Ignore key bounce */)
-      {
-        switch (event.key.keysym.sym)
-        {
-          case SDLK_f:
-            viewport.GetWindow().ToggleMaximize();
-            break;
-              
-          case SDLK_q:
-            stop = true;
-            break;
-
-          default:
-            break;
-        }
-      }
-      
-      HandleApplicationEvent(event, controller, tracker);
-    }
-
-    SDL_Delay(1);
-  }
-}
-
-
-
-
-/**
- * IMPORTANT: The full arguments to "main()" are needed for SDL on
- * Windows. Otherwise, one gets the linking error "undefined reference
- * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
- **/
-int main(int argc, char* argv[])
-{
-  OrthancStone::StoneInitialize();
-  Orthanc::Logging::EnableInfoLevel(true);
-
-  try
-  {
-#if OPENGL_ENABLED==1
-    OrthancStone::SdlOpenGLViewport viewport("Hello", 1024, 768);
-#else
-    OrthancStone::SdlCairoViewport viewport("Hello", 1024, 768);
-#endif
-    PrepareScene(viewport.GetScene());
-
-    viewport.GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, 
-                                     FONT_SIZE, Orthanc::Encoding_Latin1);
-    
-    OrthancStone::MessageBroker broker;
-    Run(broker, viewport);
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "EXCEPTION: " << e.What();
-  }
-
-  OrthancStone::StoneFinalize();
-
-  return 0;
-}
--- a/Resources/Graveyard/Deprecated/Samples/Sdl/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-
-#####################################################################
-## Configuration of the Orthanc framework
-#####################################################################
-
-# This CMake file defines the "ORTHANC_STONE_VERSION" macro, so it
-# must be the first inclusion
-include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/Version.cmake)
-
-if (ORTHANC_STONE_VERSION STREQUAL "mainline")
-  set(ORTHANC_FRAMEWORK_VERSION "mainline")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
-else()
-  set(ORTHANC_FRAMEWORK_VERSION "1.5.7")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
-endif()
-
-set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
-set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
-set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
-
-
-#####################################################################
-## Configuration of the Stone framework
-#####################################################################
-
-include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneParameters.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
-
-DownloadPackage(
-  "a24b8136b8f3bb93f166baf97d9328de"
-  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
-  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
-
-set(ORTHANC_STONE_APPLICATION_RESOURCES
-  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
-  )
-
-SET(ENABLE_SDL_CONSOLE OFF CACHE BOOL "Enable the use of the MIT-licensed SDL_Console")
-SET(ENABLE_GOOGLE_TEST OFF)
-SET(ENABLE_LOCALE ON)
-SET(ENABLE_SDL ON)
-SET(ENABLE_WEB_CLIENT ON)
-SET(ORTHANC_SANDBOXED OFF)
-LIST(APPEND ORTHANC_BOOST_COMPONENTS program_options)
-
-include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneConfiguration.cmake)
-
-add_definitions(
-  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
-  )
-
-
-#####################################################################
-## Build the samples
-#####################################################################
-
-add_library(OrthancStone STATIC
-  ${ORTHANC_STONE_SOURCES}
-  )
-
-#
-# BasicScene
-# 
-
-add_executable(BasicScene
-  BasicScene.cpp
-  )
-
-target_link_libraries(BasicScene OrthancStone)
-
-#
-# TrackerSample
-# 
-
-LIST(APPEND TRACKERSAMPLE_SOURCE "TrackerSample.cpp")
-LIST(APPEND TRACKERSAMPLE_SOURCE "TrackerSampleApp.cpp")
-LIST(APPEND TRACKERSAMPLE_SOURCE "TrackerSampleApp.h")
-
-if (MSVC AND MSVC_VERSION GREATER 1700)
-  LIST(APPEND TRACKERSAMPLE_SOURCE "cpp.hint")
-endif()
-
-add_executable(TrackerSample
-  ${TRACKERSAMPLE_SOURCE}
-  )
-
-target_link_libraries(TrackerSample OrthancStone)
-
-#
-# Loader
-# 
-
-add_executable(Loader
-  Loader.cpp
-  )
-
-target_link_libraries(Loader OrthancStone)
-
-#
-# FusionMprSdl
-# 
-
-add_executable(FusionMprSdl
-  FusionMprSdl.cpp
-  FusionMprSdl.h
-)
-
-target_link_libraries(FusionMprSdl OrthancStone)
-
-#
-# Multiplatform Basic Scene
-#
-
-LIST(APPEND MP_BASIC_SCENE_SOURCE "../MultiPlatform/BasicScene/BasicScene.cpp")
-LIST(APPEND MP_BASIC_SCENE_SOURCE "../MultiPlatform/BasicScene/BasicScene.h")
-LIST(APPEND MP_BASIC_SCENE_SOURCE "../MultiPlatform/BasicScene/mainSdl.cpp")
-
-if (MSVC AND MSVC_VERSION GREATER 1700)
-  LIST(APPEND MP_BASIC_SCENE_SOURCE "cpp.hint")
-endif()
-
-add_executable(MpBasicScene
-  ${MP_BASIC_SCENE_SOURCE}
-  )
-
-target_include_directories(MpBasicScene PUBLIC ${ORTHANC_STONE_ROOT})
-target_link_libraries(MpBasicScene OrthancStone)
--- a/Resources/Graveyard/Deprecated/Samples/Sdl/FusionMprSdl.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,805 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "FusionMprSdl.h"
-
-#include "../../Framework/OpenGL/SdlOpenGLContext.h"
-
-#include "../../Framework/StoneInitialization.h"
-
-#include "../../Framework/Scene2D/CairoCompositor.h"
-#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/Scene2D/PanSceneTracker.h"
-#include "../../Framework/Scene2D/ZoomSceneTracker.h"
-#include "../../Framework/Scene2D/RotateSceneTracker.h"
-
-#include "../../Framework/Scene2DViewport/UndoStack.h"
-#include "../../Framework/Scene2DViewport/CreateLineMeasureTracker.h"
-#include "../../Framework/Scene2DViewport/CreateAngleMeasureTracker.h"
-#include "../../Framework/Scene2DViewport/IFlexiblePointerTracker.h"
-#include "../../Framework/Scene2DViewport/MeasureTool.h"
-#include "../../Framework/Scene2DViewport/PredeclaredTypes.h"
-
-#include "../../Framework/Volumes/VolumeSceneLayerSource.h"
-
-#include <Core/Images/Image.h>
-#include <Core/Images/ImageProcessing.h>
-#include <Core/Images/PngWriter.h>
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-#include <boost/make_shared.hpp>
-
-#include <stdio.h>
-#include "../../Framework/Oracle/GetOrthancWebViewerJpegCommand.h"
-#include "../../Framework/Oracle/ThreadedOracle.h"
-#include "../../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
-#include "../../Framework/Loaders/OrthancMultiframeVolumeLoader.h"
-#include "../../Framework/Loaders/DicomStructureSetLoader.h"
-#include "../../Framework/Scene2D/GrayscaleStyleConfigurator.h"
-#include "../../Framework/Scene2D/LookupTableStyleConfigurator.h"
-#include "../../Framework/Volumes/DicomVolumeImageMPRSlicer.h"
-#include "Core/SystemToolbox.h"
-
-namespace OrthancStone
-{
-  const char* FusionMprMeasureToolToString(size_t i)
-  {
-    static const char* descs[] = {
-      "FusionMprGuiTool_Rotate",
-      "FusionMprGuiTool_Pan",
-      "FusionMprGuiTool_Zoom",
-      "FusionMprGuiTool_LineMeasure",
-      "FusionMprGuiTool_CircleMeasure",
-      "FusionMprGuiTool_AngleMeasure",
-      "FusionMprGuiTool_EllipseMeasure",
-      "FusionMprGuiTool_LAST"
-    };
-    if (i >= FusionMprGuiTool_LAST)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, "Wrong tool index");
-    }
-    return descs[i];
-  }
-
-  Scene2D& FusionMprSdlApp::GetScene()
-  {
-    return controller_->GetScene();
-  }
-
-  const Scene2D& FusionMprSdlApp::GetScene() const
-  {
-    return controller_->GetScene();
-  }
-
-  void FusionMprSdlApp::SelectNextTool()
-  {
-    currentTool_ = static_cast<FusionMprGuiTool>(currentTool_ + 1);
-    if (currentTool_ == FusionMprGuiTool_LAST)
-      currentTool_ = static_cast<FusionMprGuiTool>(0);;
-    printf("Current tool is now: %s\n", FusionMprMeasureToolToString(currentTool_));
-  }
-
-  void FusionMprSdlApp::DisplayInfoText()
-  {
-    // do not try to use stuff too early!
-    ICompositor* pCompositor = &(viewport_.GetCompositor());
-    if (pCompositor == NULL)
-      return;
-
-    std::stringstream msg;
-	
-	for (std::map<std::string, std::string>::const_iterator kv = infoTextMap_.begin();
-		kv != infoTextMap_.end(); ++kv)
-    {
-      msg << kv->first << " : " << kv->second << std::endl;
-    }
-	std::string msgS = msg.str();
-
-    TextSceneLayer* layerP = NULL;
-    if (GetScene().HasLayer(FIXED_INFOTEXT_LAYER_ZINDEX))
-    {
-      TextSceneLayer& layer = dynamic_cast<TextSceneLayer&>(
-        GetScene().GetLayer(FIXED_INFOTEXT_LAYER_ZINDEX));
-      layerP = &layer;
-    }
-    else
-    {
-      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
-      layerP = layer.get();
-      layer->SetColor(0, 255, 0);
-      layer->SetFontIndex(1);
-      layer->SetBorder(20);
-      layer->SetAnchor(BitmapAnchor_TopLeft);
-      //layer->SetPosition(0,0);
-      GetScene().SetLayer(FIXED_INFOTEXT_LAYER_ZINDEX, layer.release());
-    }
-    // position the fixed info text in the upper right corner
-    layerP->SetText(msgS.c_str());
-    double cX = viewport_.GetCompositor().GetCanvasWidth() * (-0.5);
-    double cY = viewport_.GetCompositor().GetCanvasHeight() * (-0.5);
-    GetScene().GetCanvasToSceneTransform().Apply(cX,cY);
-    layerP->SetPosition(cX, cY);
-  }
-
-  void FusionMprSdlApp::DisplayFloatingCtrlInfoText(const PointerEvent& e)
-  {
-    ScenePoint2D p = e.GetMainPosition().Apply(GetScene().GetCanvasToSceneTransform());
-
-    char buf[128];
-    sprintf(buf, "S:(%0.02f,%0.02f) C:(%0.02f,%0.02f)", 
-      p.GetX(), p.GetY(), 
-      e.GetMainPosition().GetX(), e.GetMainPosition().GetY());
-
-    if (GetScene().HasLayer(FLOATING_INFOTEXT_LAYER_ZINDEX))
-    {
-      TextSceneLayer& layer =
-        dynamic_cast<TextSceneLayer&>(GetScene().GetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX));
-      layer.SetText(buf);
-      layer.SetPosition(p.GetX(), p.GetY());
-    }
-    else
-    {
-      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
-      layer->SetColor(0, 255, 0);
-      layer->SetText(buf);
-      layer->SetBorder(20);
-      layer->SetAnchor(BitmapAnchor_BottomCenter);
-      layer->SetPosition(p.GetX(), p.GetY());
-      GetScene().SetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX, layer.release());
-    }
-  }
-
-  void FusionMprSdlApp::HideInfoText()
-  {
-    GetScene().DeleteLayer(FLOATING_INFOTEXT_LAYER_ZINDEX);
-  }
-
-  void FusionMprSdlApp::HandleApplicationEvent(
-    const SDL_Event & event)
-  {
-    DisplayInfoText();
-
-    if (event.type == SDL_MOUSEMOTION)
-    {
-      int scancodeCount = 0;
-      const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
-
-      if (activeTracker_.get() == NULL &&
-        SDL_SCANCODE_LALT < scancodeCount &&
-        keyboardState[SDL_SCANCODE_LALT])
-      {
-        // The "left-ctrl" key is down, while no tracker is present
-        // Let's display the info text
-        PointerEvent e;
-        e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
-          event.button.x, event.button.y));
-
-        DisplayFloatingCtrlInfoText(e);
-      }
-      else
-      {
-        HideInfoText();
-        //LOG(TRACE) << "(event.type == SDL_MOUSEMOTION)";
-        if (activeTracker_.get() != NULL)
-        {
-          //LOG(TRACE) << "(activeTracker_.get() != NULL)";
-          PointerEvent e;
-          e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
-            event.button.x, event.button.y));
-          
-          //LOG(TRACE) << "event.button.x = " << event.button.x << "     " <<
-          //  "event.button.y = " << event.button.y;
-          LOG(TRACE) << "activeTracker_->PointerMove(e); " <<
-            e.GetMainPosition().GetX() << " " << e.GetMainPosition().GetY();
-          
-          activeTracker_->PointerMove(e);
-          if (!activeTracker_->IsAlive())
-            activeTracker_.reset();
-        }
-      }
-    }
-    else if (event.type == SDL_MOUSEBUTTONUP)
-    {
-      if (activeTracker_)
-      {
-        PointerEvent e;
-        e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(event.button.x, event.button.y));
-        activeTracker_->PointerUp(e);
-        if (!activeTracker_->IsAlive())
-          activeTracker_.reset();
-      }
-    }
-    else if (event.type == SDL_MOUSEBUTTONDOWN)
-    {
-      PointerEvent e;
-      e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
-        event.button.x, event.button.y));
-      if (activeTracker_)
-      {
-        activeTracker_->PointerDown(e);
-        if (!activeTracker_->IsAlive())
-          activeTracker_.reset();
-      }
-      else
-      {
-        // we ATTEMPT to create a tracker if need be
-        activeTracker_ = CreateSuitableTracker(event, e);
-      }
-    }
-    else if (event.type == SDL_KEYDOWN &&
-      event.key.repeat == 0 /* Ignore key bounce */)
-    {
-      switch (event.key.keysym.sym)
-      {
-      case SDLK_ESCAPE:
-        if (activeTracker_)
-        {
-          activeTracker_->Cancel();
-          if (!activeTracker_->IsAlive())
-            activeTracker_.reset();
-        }
-        break;
-
-      case SDLK_t:
-        if (!activeTracker_)
-          SelectNextTool();
-        else
-        {
-          LOG(WARNING) << "You cannot change the active tool when an interaction"
-            " is taking place";
-        }
-        break;
-      case SDLK_s:
-        controller_->FitContent(viewport_.GetCompositor().GetCanvasWidth(),
-          viewport_.GetCompositor().GetCanvasHeight());
-        break;
-
-      case SDLK_z:
-        LOG(TRACE) << "SDLK_z has been pressed. event.key.keysym.mod == " << event.key.keysym.mod;
-        if (event.key.keysym.mod & KMOD_CTRL)
-        {
-          if (controller_->CanUndo())
-          {
-            LOG(TRACE) << "Undoing...";
-            controller_->Undo();
-          }
-          else
-          {
-            LOG(WARNING) << "Nothing to undo!!!";
-          }
-        }
-        break;
-
-      case SDLK_y:
-        LOG(TRACE) << "SDLK_y has been pressed. event.key.keysym.mod == " << event.key.keysym.mod;
-        if (event.key.keysym.mod & KMOD_CTRL)
-        {
-          if (controller_->CanRedo())
-          {
-            LOG(TRACE) << "Redoing...";
-            controller_->Redo();
-          }
-          else
-          {
-            LOG(WARNING) << "Nothing to redo!!!";
-          }
-        }
-        break;
-
-      case SDLK_c:
-        TakeScreenshot(
-          "screenshot.png",
-          viewport_.GetCompositor().GetCanvasWidth(),
-          viewport_.GetCompositor().GetCanvasHeight());
-        break;
-
-      default:
-        break;
-      }
-    }
-  }
-
-
-  void FusionMprSdlApp::OnSceneTransformChanged(
-    const ViewportController::SceneTransformChanged& message)
-  {
-    DisplayInfoText();
-  }
-
-  boost::shared_ptr<IFlexiblePointerTracker> FusionMprSdlApp::CreateSuitableTracker(
-    const SDL_Event & event,
-    const PointerEvent & e)
-  {
-    using namespace Orthanc;
-
-    switch (event.button.button)
-    {
-    case SDL_BUTTON_MIDDLE:
-      return boost::shared_ptr<IFlexiblePointerTracker>(new PanSceneTracker
-        (controller_, e));
-
-    case SDL_BUTTON_RIGHT:
-      return boost::shared_ptr<IFlexiblePointerTracker>(new ZoomSceneTracker
-        (controller_, e, viewport_.GetCompositor().GetCanvasHeight()));
-
-    case SDL_BUTTON_LEFT:
-    {
-      //LOG(TRACE) << "CreateSuitableTracker: case SDL_BUTTON_LEFT:";
-      // TODO: we need to iterate on the set of measuring tool and perform
-      // a hit test to check if a tracker needs to be created for edition.
-      // Otherwise, depending upon the active tool, we might want to create
-      // a "measuring tool creation" tracker
-
-      // TODO: if there are conflicts, we should prefer a tracker that 
-      // pertains to the type of measuring tool currently selected (TBD?)
-      boost::shared_ptr<IFlexiblePointerTracker> hitTestTracker = TrackerHitTest(e);
-
-      if (hitTestTracker != NULL)
-      {
-        //LOG(TRACE) << "hitTestTracker != NULL";
-        return hitTestTracker;
-      }
-      else
-      {
-        switch (currentTool_)
-        {
-        case FusionMprGuiTool_Rotate:
-          //LOG(TRACE) << "Creating RotateSceneTracker";
-          return boost::shared_ptr<IFlexiblePointerTracker>(new RotateSceneTracker(
-            controller_, e));
-        case FusionMprGuiTool_Pan:
-          return boost::shared_ptr<IFlexiblePointerTracker>(new PanSceneTracker(
-            controller_, e));
-        case FusionMprGuiTool_Zoom:
-          return boost::shared_ptr<IFlexiblePointerTracker>(new ZoomSceneTracker(
-            controller_, e, viewport_.GetCompositor().GetCanvasHeight()));
-        //case GuiTool_AngleMeasure:
-        //  return new AngleMeasureTracker(GetScene(), e);
-        //case GuiTool_CircleMeasure:
-        //  return new CircleMeasureTracker(GetScene(), e);
-        //case GuiTool_EllipseMeasure:
-        //  return new EllipseMeasureTracker(GetScene(), e);
-        case FusionMprGuiTool_LineMeasure:
-          return boost::shared_ptr<IFlexiblePointerTracker>(new CreateLineMeasureTracker(
-            IObserver::GetBroker(), controller_, e));
-        case FusionMprGuiTool_AngleMeasure:
-          return boost::shared_ptr<IFlexiblePointerTracker>(new CreateAngleMeasureTracker(
-            IObserver::GetBroker(), controller_, e));
-        case FusionMprGuiTool_CircleMeasure:
-          LOG(ERROR) << "Not implemented yet!";
-          return boost::shared_ptr<IFlexiblePointerTracker>();
-        case FusionMprGuiTool_EllipseMeasure:
-          LOG(ERROR) << "Not implemented yet!";
-          return boost::shared_ptr<IFlexiblePointerTracker>();
-        default:
-          throw OrthancException(ErrorCode_InternalError, "Wrong tool!");
-        }
-      }
-    }
-    default:
-      return boost::shared_ptr<IFlexiblePointerTracker>();
-    }
-  }
-
-
-  FusionMprSdlApp::FusionMprSdlApp(MessageBroker& broker)
-    : IObserver(broker)
-    , broker_(broker)
-    , oracleObservable_(broker)
-    , oracle_(*this)
-    , currentTool_(FusionMprGuiTool_Rotate)
-    , undoStack_(new UndoStack)
-    , viewport_("Hello", 1024, 1024, false) // False means we do NOT let Windows treat this as a legacy application that needs to be scaled
-  {
-    //oracleObservable.RegisterObserverCallback
-    //(new Callable
-    //  <FusionMprSdlApp, SleepOracleCommand::TimeoutMessage>(*this, &FusionMprSdlApp::Handle));
-
-    //oracleObservable.RegisterObserverCallback
-    //(new Callable
-    //  <Toto, GetOrthancImageCommand::SuccessMessage>(*this, &FusionMprSdlApp::Handle));
-
-    //oracleObservable.RegisterObserverCallback
-    //(new Callable
-    //  <FusionMprSdlApp, GetOrthancWebViewerJpegCommand::SuccessMessage>(*this, &ToFusionMprSdlAppto::Handle));
-
-    oracleObservable_.RegisterObserverCallback
-    (new Callable
-      <FusionMprSdlApp, OracleCommandExceptionMessage>(*this, &FusionMprSdlApp::Handle));
-    
-    controller_ = boost::shared_ptr<ViewportController>(
-      new ViewportController(undoStack_, broker_, viewport_));
-
-    controller_->RegisterObserverCallback(
-      new Callable<FusionMprSdlApp, ViewportController::SceneTransformChanged>
-      (*this, &FusionMprSdlApp::OnSceneTransformChanged));
-
-    TEXTURE_2x2_1_ZINDEX = 1;
-    TEXTURE_1x1_ZINDEX = 2;
-    TEXTURE_2x2_2_ZINDEX = 3;
-    LINESET_1_ZINDEX = 4;
-    LINESET_2_ZINDEX = 5;
-    FLOATING_INFOTEXT_LAYER_ZINDEX = 6;
-    FIXED_INFOTEXT_LAYER_ZINDEX = 7;
-  }
-
-  void FusionMprSdlApp::PrepareScene()
-  {
-    // Texture of 2x2 size
-    {
-      Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false);
-
-      uint8_t* p = reinterpret_cast<uint8_t*>(i.GetRow(0));
-      p[0] = 255;
-      p[1] = 0;
-      p[2] = 0;
-
-      p[3] = 0;
-      p[4] = 255;
-      p[5] = 0;
-
-      p = reinterpret_cast<uint8_t*>(i.GetRow(1));
-      p[0] = 0;
-      p[1] = 0;
-      p[2] = 255;
-
-      p[3] = 255;
-      p[4] = 0;
-      p[5] = 0;
-
-      GetScene().SetLayer(TEXTURE_2x2_1_ZINDEX, new ColorTextureSceneLayer(i));
-    }
-  }
-
-  void FusionMprSdlApp::DisableTracker()
-  {
-    if (activeTracker_)
-    {
-      activeTracker_->Cancel();
-      activeTracker_.reset();
-    }
-  }
-
-  void FusionMprSdlApp::TakeScreenshot(const std::string& target,
-    unsigned int canvasWidth,
-    unsigned int canvasHeight)
-  {
-    CairoCompositor compositor(GetScene(), canvasWidth, canvasHeight);
-    compositor.SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, FONT_SIZE_0, Orthanc::Encoding_Latin1);
-    compositor.Refresh();
-
-    Orthanc::ImageAccessor canvas;
-    compositor.GetCanvas().GetReadOnlyAccessor(canvas);
-
-    Orthanc::Image png(Orthanc::PixelFormat_RGB24, canvas.GetWidth(), canvas.GetHeight(), false);
-    Orthanc::ImageProcessing::Convert(png, canvas);
-
-    Orthanc::PngWriter writer;
-    writer.WriteToFile(target, png);
-  }
-
-
-  boost::shared_ptr<IFlexiblePointerTracker> FusionMprSdlApp::TrackerHitTest(const PointerEvent & e)
-  {
-    // std::vector<boost::shared_ptr<MeasureTool>> measureTools_;
-    return boost::shared_ptr<IFlexiblePointerTracker>();
-  }
-
-  static void GLAPIENTRY
-    OpenGLMessageCallback(GLenum source,
-      GLenum type,
-      GLuint id,
-      GLenum severity,
-      GLsizei length,
-      const GLchar* message,
-      const void* userParam)
-  {
-    if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
-    {
-      fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
-        (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
-        type, severity, message);
-    }
-  }
-
-  static bool g_stopApplication = false;
-  
-
-  void FusionMprSdlApp::Handle(const DicomVolumeImage::GeometryReadyMessage& message)
-  {
-    printf("Geometry ready\n");
-
-    //plane_ = message.GetOrigin().GetGeometry().GetSagittalGeometry();
-    //plane_ = message.GetOrigin().GetGeometry().GetAxialGeometry();
-    plane_ = message.GetOrigin().GetGeometry().GetCoronalGeometry();
-    plane_.SetOrigin(message.GetOrigin().GetGeometry().GetCoordinates(0.5f, 0.5f, 0.5f));
-
-    //Refresh();
-  }
-
-
-  void FusionMprSdlApp::Handle(const OracleCommandExceptionMessage& message)
-  {
-    printf("EXCEPTION: [%s] on command type %d\n", message.GetException().What(), message.GetCommand().GetType());
-
-    switch (message.GetCommand().GetType())
-    {
-    case IOracleCommand::Type_GetOrthancWebViewerJpeg:
-      printf("URI: [%s]\n", dynamic_cast<const GetOrthancWebViewerJpegCommand&>
-        (message.GetCommand()).GetUri().c_str());
-      break;
-
-    default:
-      break;
-    }
-  }
-
-  void FusionMprSdlApp::SetVolume1(int depth,
-    const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
-    OrthancStone::ILayerStyleConfigurator* style)
-  {
-    source1_.reset(new OrthancStone::VolumeSceneLayerSource(controller_->GetScene(), depth, volume));
-
-    if (style != NULL)
-    {
-      source1_->SetConfigurator(style);
-    }
-  }
-
-  void FusionMprSdlApp::SetVolume2(int depth,
-    const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
-    OrthancStone::ILayerStyleConfigurator* style)
-  {
-    source2_.reset(new OrthancStone::VolumeSceneLayerSource(controller_->GetScene(), depth, volume));
-
-    if (style != NULL)
-    {
-      source2_->SetConfigurator(style);
-    }
-  }
-
-  void FusionMprSdlApp::SetStructureSet(int depth,
-    const boost::shared_ptr<OrthancStone::DicomStructureSetLoader>& volume)
-  {
-    source3_.reset(new OrthancStone::VolumeSceneLayerSource(controller_->GetScene(), depth, volume));
-  }
-  
-  void FusionMprSdlApp::Run()
-  {
-    // False means we do NOT let Windows treat this as a legacy application
-    // that needs to be scaled
-    controller_->FitContent(viewport_.GetCanvasWidth(), viewport_.GetCanvasHeight());
-
-    glEnable(GL_DEBUG_OUTPUT);
-    glDebugMessageCallback(OpenGLMessageCallback, 0);
-
-    viewport_.GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
-      FONT_SIZE_0, Orthanc::Encoding_Latin1);
-    viewport_.GetCompositor().SetFont(1, Orthanc::EmbeddedResources::UBUNTU_FONT,
-      FONT_SIZE_1, Orthanc::Encoding_Latin1);
-
-
-    //////// from loader
-    {
-      Orthanc::WebServiceParameters p;
-      //p.SetUrl("http://localhost:8043/");
-      p.SetCredentials("orthanc", "orthanc");
-      oracle_.SetOrthancParameters(p);
-    }
-
-    //////// from Run
-
-    boost::shared_ptr<DicomVolumeImage>  ct(new DicomVolumeImage);
-    boost::shared_ptr<DicomVolumeImage>  dose(new DicomVolumeImage);
-
-
-    boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> ctLoader;
-    boost::shared_ptr<OrthancMultiframeVolumeLoader> doseLoader;
-    boost::shared_ptr<DicomStructureSetLoader>  rtstructLoader;
-
-    {
-      ctLoader.reset(new OrthancSeriesVolumeProgressiveLoader(ct, oracle_, oracleObservable_));
-      doseLoader.reset(new OrthancMultiframeVolumeLoader(dose, oracle_, oracleObservable_));
-      rtstructLoader.reset(new DicomStructureSetLoader(oracle_, oracleObservable_));
-    }
-
-    //toto->SetReferenceLoader(*ctLoader);
-    //doseLoader->RegisterObserverCallback
-    //(new Callable
-    //  <FusionMprSdlApp, DicomVolumeImage::GeometryReadyMessage>(*this, &FusionMprSdlApp::Handle));
-    ctLoader->RegisterObserverCallback
-    (new Callable
-      <FusionMprSdlApp, DicomVolumeImage::GeometryReadyMessage>(*this, &FusionMprSdlApp::Handle));
-
-    this->SetVolume1(0, ctLoader, new GrayscaleStyleConfigurator);
-
-    {
-      std::unique_ptr<LookupTableStyleConfigurator> config(new LookupTableStyleConfigurator);
-      config->SetLookupTable(Orthanc::EmbeddedResources::COLORMAP_HOT);
-
-      boost::shared_ptr<DicomVolumeImageMPRSlicer> tmp(new DicomVolumeImageMPRSlicer(dose));
-      this->SetVolume2(1, tmp, config.release());
-    }
-
-    this->SetStructureSet(2, rtstructLoader);
-
-#if 1
-    /*
-    BGO data
-    http://localhost:8042/twiga-orthanc-viewer-demo/twiga-orthanc-viewer-demo.html?ct-series=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa
-    &
-    dose-instance=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb
-    &
-    struct-instance=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
-    */
-    ctLoader->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");  // CT
-    doseLoader->LoadInstance("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb");  // RT-DOSE
-    rtstructLoader->LoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");  // RT-STRUCT
-#else
-    //ctLoader->LoadSeries("cb3ea4d1-d08f3856-ad7b6314-74d88d77-60b05618");  // CT
-    //doseLoader->LoadInstance("41029085-71718346-811efac4-420e2c15-d39f99b6");  // RT-DOSE
-    //rtstructLoader->LoadInstance("83d9c0c3-913a7fee-610097d7-cbf0522d-fd75bee6");  // RT-STRUCT
-
-    // 2017-05-16
-    ctLoader->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");  // CT
-    doseLoader->LoadInstance("eac822ef-a395f94e-e8121fe0-8411fef8-1f7bffad");  // RT-DOSE
-    rtstructLoader->LoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");  // RT-STRUCT
-#endif
-
-    oracle_.Start();
-
-//// END from loader
-
-    while (!g_stopApplication)
-    {
-      viewport_.GetCompositor().Refresh();
-
-//////// from loader
-      if (source1_.get() != NULL)
-      {
-        source1_->Update(plane_);
-      }
-
-      if (source2_.get() != NULL)
-      {
-        source2_->Update(plane_);
-      }
-
-      if (source3_.get() != NULL)
-      {
-        source3_->Update(plane_);
-      }
-//// END from loader
-
-      SDL_Event event;
-      while (!g_stopApplication && SDL_PollEvent(&event))
-      {
-        if (event.type == SDL_QUIT)
-        {
-          g_stopApplication = true;
-          break;
-        }
-        else if (event.type == SDL_WINDOWEVENT &&
-          event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
-        {
-          DisableTracker(); // was: tracker.reset(NULL);
-        }
-        else if (event.type == SDL_KEYDOWN &&
-          event.key.repeat == 0 /* Ignore key bounce */)
-        {
-          switch (event.key.keysym.sym)
-          {
-          case SDLK_f:
-            viewport_.GetWindow().ToggleMaximize();
-            break;
-
-          case SDLK_s:
-            controller_->FitContent(viewport_.GetCanvasWidth(), viewport_.GetCanvasHeight());
-            break;
-
-          case SDLK_q:
-            g_stopApplication = true;
-            break;
-          default:
-            break;
-          }
-        }
-        HandleApplicationEvent(event);
-      }
-      SDL_Delay(1);
-    }
-
-    //// from loader
-
-    //Orthanc::SystemToolbox::ServerBarrier();
-
-    /**
-     * WARNING => The oracle must be stopped BEFORE the objects using
-     * it are destroyed!!! This forces to wait for the completion of
-     * the running callback methods. Otherwise, the callbacks methods
-     * might still be running while their parent object is destroyed,
-     * resulting in crashes. This is very visible if adding a sleep(),
-     * as in (*).
-     **/
-
-    oracle_.Stop();
-    //// END from loader
-  }
-
-  void FusionMprSdlApp::SetInfoDisplayMessage(
-    std::string key, std::string value)
-  {
-    if (value == "")
-      infoTextMap_.erase(key);
-    else
-      infoTextMap_[key] = value;
-    DisplayInfoText();
-  }
-
-}
-
-
-boost::weak_ptr<OrthancStone::FusionMprSdlApp> g_app;
-
-void FusionMprSdl_SetInfoDisplayMessage(std::string key, std::string value)
-{
-  boost::shared_ptr<OrthancStone::FusionMprSdlApp> app = g_app.lock();
-  if (app)
-  {
-    app->SetInfoDisplayMessage(key, value);
-  }
-}
-
-/**
- * IMPORTANT: The full arguments to "main()" are needed for SDL on
- * Windows. Otherwise, one gets the linking error "undefined reference
- * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
- **/
-int main(int argc, char* argv[])
-{
-  using namespace OrthancStone;
-
-  StoneInitialize();
-  Orthanc::Logging::EnableInfoLevel(true);
-//  Orthanc::Logging::EnableTraceLevel(true);
-
-  try
-  {
-    OrthancStone::MessageBroker broker;
-    boost::shared_ptr<FusionMprSdlApp> app(new FusionMprSdlApp(broker));
-    g_app = app;
-    app->PrepareScene();
-    app->Run();
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "EXCEPTION: " << e.What();
-  }
-
-  StoneFinalize();
-
-  return 0;
-}
-
-
--- a/Resources/Graveyard/Deprecated/Samples/Sdl/FusionMprSdl.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Viewport/SdlViewport.h"
-
-#include "../../Framework/Messages/IObserver.h"
-#include "../../Framework/Messages/IMessageEmitter.h"
-#include "../../Framework/Oracle/OracleCommandExceptionMessage.h"
-#include "../../Framework/Scene2DViewport/ViewportController.h"
-#include "../../Framework/Volumes/DicomVolumeImage.h"
-#include "../../Framework/Oracle/ThreadedOracle.h"
-
-#include <boost/enable_shared_from_this.hpp>
-#include <boost/thread.hpp>
-#include <boost/noncopyable.hpp>
-
-#include <SDL.h>
-
-namespace OrthancStone
-{
-  class OpenGLCompositor;
-  class IVolumeSlicer;
-  class ILayerStyleConfigurator;
-  class DicomStructureSetLoader;
-  class IOracle;
-  class ThreadedOracle;
-  class VolumeSceneLayerSource;
-  class NativeFusionMprApplicationContext;
-  class SdlOpenGLViewport;
-   
-  enum FusionMprGuiTool
-  {
-    FusionMprGuiTool_Rotate = 0,
-    FusionMprGuiTool_Pan,
-    FusionMprGuiTool_Zoom,
-    FusionMprGuiTool_LineMeasure,
-    FusionMprGuiTool_CircleMeasure,
-    FusionMprGuiTool_AngleMeasure,
-    FusionMprGuiTool_EllipseMeasure,
-    FusionMprGuiTool_LAST
-  };
-
-  const char* MeasureToolToString(size_t i);
-
-  static const unsigned int FONT_SIZE_0 = 32;
-  static const unsigned int FONT_SIZE_1 = 24;
-
-  class Scene2D;
-  class UndoStack;
-
-  /**
-  This application subclasses IMessageEmitter to use a mutex before forwarding Oracle messages (that
-  can be sent from multiple threads)
-  */
-  class FusionMprSdlApp : public IObserver
-    , public boost::enable_shared_from_this<FusionMprSdlApp>
-    , public IMessageEmitter
-  {
-  public:
-    // 12 because.
-    FusionMprSdlApp(MessageBroker& broker);
-
-    void PrepareScene();
-    void Run();
-    void SetInfoDisplayMessage(std::string key, std::string value);
-    void DisableTracker();
-
-    Scene2D&       GetScene();
-    const Scene2D& GetScene() const;
-
-    void HandleApplicationEvent(const SDL_Event& event);
-
-    /**
-    This method is called when the scene transform changes. It allows to
-    recompute the visual elements whose content depend upon the scene transform
-    */
-    void OnSceneTransformChanged(
-      const ViewportController::SceneTransformChanged& message);
-
-
-    virtual void EmitMessage(const IObserver& observer,
-      const IMessage& message) ORTHANC_OVERRIDE
-    {
-      try
-      {
-        boost::unique_lock<boost::shared_mutex>  lock(mutex_);
-        oracleObservable_.EmitMessage(observer, message);
-      }
-      catch (Orthanc::OrthancException& e)
-      {
-        LOG(ERROR) << "Exception while emitting a message: " << e.What();
-        throw;
-      }
-    }
-    
-  private:
-#if 1
-    // if threaded (not wasm)
-    MessageBroker& broker_;
-    IObservable oracleObservable_;
-    ThreadedOracle oracle_;
-    boost::shared_mutex mutex_; // to serialize messages from the ThreadedOracle
-#endif
-
-    void SelectNextTool();
-
-    /**
-    This returns a random point in the canvas part of the scene, but in
-    scene coordinates
-    */
-    ScenePoint2D GetRandomPointInScene() const;
-
-    boost::shared_ptr<IFlexiblePointerTracker> TrackerHitTest(const PointerEvent& e);
-
-    boost::shared_ptr<IFlexiblePointerTracker> CreateSuitableTracker(
-      const SDL_Event& event,
-      const PointerEvent& e);
-
-    void TakeScreenshot(
-      const std::string& target,
-      unsigned int canvasWidth,
-      unsigned int canvasHeight);
-
-    /**
-      This adds the command at the top of the undo stack
-    */
-    void Commit(boost::shared_ptr<TrackerCommand> cmd);
-    void Undo();
-    void Redo();
-
-
-    // TODO private
-    void Handle(const DicomVolumeImage::GeometryReadyMessage& message);
-    void Handle(const OracleCommandExceptionMessage& message);
-
-    void SetVolume1(
-      int depth,
-      const boost::shared_ptr<IVolumeSlicer>& volume,
-      ILayerStyleConfigurator* style);
-    
-    void SetVolume2(
-      int depth,
-      const boost::shared_ptr<IVolumeSlicer>& volume,
-      ILayerStyleConfigurator* style);
-
-    void SetStructureSet(
-      int depth, 
-      const boost::shared_ptr<DicomStructureSetLoader>& volume);
-
-
-
-  private:
-    void DisplayFloatingCtrlInfoText(const PointerEvent& e);
-    void DisplayInfoText();
-    void HideInfoText();
-
-  private:
-    CoordinateSystem3D  plane_;
-
-    boost::shared_ptr<VolumeSceneLayerSource>  source1_, source2_, source3_;
-
-    /**
-    WARNING: the measuring tools do store a reference to the scene, and it
-    paramount that the scene gets destroyed AFTER the measurement tools.
-    */
-    boost::shared_ptr<ViewportController> controller_;
-
-    std::map<std::string, std::string> infoTextMap_;
-    boost::shared_ptr<IFlexiblePointerTracker> activeTracker_;
-
-    //static const int LAYER_POSITION = 150;
-
-    int TEXTURE_2x2_1_ZINDEX;
-    int TEXTURE_1x1_ZINDEX;
-    int TEXTURE_2x2_2_ZINDEX;
-    int LINESET_1_ZINDEX;
-    int LINESET_2_ZINDEX;
-    int FLOATING_INFOTEXT_LAYER_ZINDEX;
-    int FIXED_INFOTEXT_LAYER_ZINDEX;
-
-    FusionMprGuiTool currentTool_;
-    boost::shared_ptr<UndoStack> undoStack_;
-    SdlOpenGLViewport viewport_;
-  };
-
-}
-
-
- 
--- a/Resources/Graveyard/Deprecated/Samples/Sdl/Loader.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,518 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "../../Framework/Loaders/DicomStructureSetLoader.h"
-#include "../../Framework/Loaders/OrthancMultiframeVolumeLoader.h"
-#include "../../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
-#include "../../Framework/Oracle/SleepOracleCommand.h"
-#include "../../Framework/Oracle/ThreadedOracle.h"
-#include "../../Framework/Scene2D/CairoCompositor.h"
-#include "../../Framework/Scene2D/GrayscaleStyleConfigurator.h"
-#include "../../Framework/Scene2D/LookupTableStyleConfigurator.h"
-#include "../../Framework/StoneInitialization.h"
-#include "../../Framework/Volumes/VolumeSceneLayerSource.h"
-#include "../../Framework/Volumes/DicomVolumeImageMPRSlicer.h"
-#include "../../Framework/Volumes/DicomVolumeImageReslicer.h"
-
-// From Orthanc framework
-#include <Core/Images/ImageProcessing.h>
-#include <Core/Images/PngWriter.h>
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-#include <Core/SystemToolbox.h>
-
-
-namespace OrthancStone
-{
-  class NativeApplicationContext : public IMessageEmitter
-  {
-  private:
-    boost::shared_mutex  mutex_;
-    MessageBroker        broker_;
-    IObservable          oracleObservable_;
-
-  public:
-    NativeApplicationContext() :
-      oracleObservable_(broker_)
-    {
-    }
-
-
-    virtual void EmitMessage(const IObserver& observer,
-                             const IMessage& message) ORTHANC_OVERRIDE
-    {
-      try
-      {
-        boost::unique_lock<boost::shared_mutex>  lock(mutex_);
-        oracleObservable_.EmitMessage(observer, message);
-      }
-      catch (Orthanc::OrthancException& e)
-      {
-        LOG(ERROR) << "Exception while emitting a message: " << e.What();
-      }
-    }
-
-
-    class ReaderLock : public boost::noncopyable
-    {
-    private:
-      NativeApplicationContext&                that_;
-      boost::shared_lock<boost::shared_mutex>  lock_;
-
-    public:
-      ReaderLock(NativeApplicationContext& that) : 
-        that_(that),
-        lock_(that.mutex_)
-      {
-      }
-    };
-
-
-    class WriterLock : public boost::noncopyable
-    {
-    private:
-      NativeApplicationContext&                that_;
-      boost::unique_lock<boost::shared_mutex>  lock_;
-
-    public:
-      WriterLock(NativeApplicationContext& that) : 
-        that_(that),
-        lock_(that.mutex_)
-      {
-      }
-
-      MessageBroker& GetBroker() 
-      {
-        return that_.broker_;
-      }
-
-      IObservable& GetOracleObservable()
-      {
-        return that_.oracleObservable_;
-      }
-    };
-  };
-}
-
-
-
-class Toto : public OrthancStone::IObserver
-{
-private:
-  OrthancStone::CoordinateSystem3D  plane_;
-  OrthancStone::IOracle&            oracle_;
-  OrthancStone::Scene2D             scene_;
-  std::unique_ptr<OrthancStone::VolumeSceneLayerSource>  source1_, source2_, source3_;
-
-
-  void Refresh()
-  {
-    if (source1_.get() != NULL)
-    {
-      source1_->Update(plane_);
-    }
-      
-    if (source2_.get() != NULL)
-    {
-      source2_->Update(plane_);
-    }
-
-    if (source3_.get() != NULL)
-    {
-      source3_->Update(plane_);
-    }
-
-    scene_.FitContent(1024, 768);
-      
-    {
-      OrthancStone::CairoCompositor compositor(scene_, 1024, 768);
-      compositor.Refresh();
-        
-      Orthanc::ImageAccessor accessor;
-      compositor.GetCanvas().GetReadOnlyAccessor(accessor);
-
-      Orthanc::Image tmp(Orthanc::PixelFormat_RGB24, accessor.GetWidth(), accessor.GetHeight(), false);
-      Orthanc::ImageProcessing::Convert(tmp, accessor);
-        
-      static unsigned int count = 0;
-      char buf[64];
-      sprintf(buf, "scene-%06d.png", count++);
-        
-      Orthanc::PngWriter writer;
-      writer.WriteToFile(buf, tmp);
-    }
-  }
-
-  
-  void Handle(const OrthancStone::DicomVolumeImage::GeometryReadyMessage& message)
-  {
-    printf("Geometry ready\n");
-    
-    plane_ = message.GetOrigin().GetGeometry().GetSagittalGeometry();
-    //plane_ = message.GetOrigin().GetGeometry().GetAxialGeometry();
-    //plane_ = message.GetOrigin().GetGeometry().GetCoronalGeometry();
-    plane_.SetOrigin(message.GetOrigin().GetGeometry().GetCoordinates(0.5f, 0.5f, 0.5f));
-
-    Refresh();
-  }
-  
-  
-  void Handle(const OrthancStone::SleepOracleCommand::TimeoutMessage& message)
-  {
-    if (message.GetOrigin().HasPayload())
-    {
-      printf("TIMEOUT! %d\n", dynamic_cast<const Orthanc::SingleValueObject<unsigned int>& >(message.GetOrigin().GetPayload()).GetValue());
-    }
-    else
-    {
-      printf("TIMEOUT\n");
-
-      Refresh();
-
-      /**
-       * The sleep() leads to a crash if the oracle is still running,
-       * while this object is destroyed. Always stop the oracle before
-       * destroying active objects.  (*)
-       **/
-      // boost::this_thread::sleep(boost::posix_time::seconds(2));
-
-      oracle_.Schedule(*this, new OrthancStone::SleepOracleCommand(message.GetOrigin().GetDelay()));
-    }
-  }
-
-  void Handle(const OrthancStone::OrthancRestApiCommand::SuccessMessage& message)
-  {
-    Json::Value v;
-    message.ParseJsonBody(v);
-
-    printf("ICI [%s]\n", v.toStyledString().c_str());
-  }
-
-  void Handle(const OrthancStone::GetOrthancImageCommand::SuccessMessage& message)
-  {
-    printf("IMAGE %dx%d\n", message.GetImage().GetWidth(), message.GetImage().GetHeight());
-  }
-
-  void Handle(const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message)
-  {
-    printf("WebViewer %dx%d\n", message.GetImage().GetWidth(), message.GetImage().GetHeight());
-  }
-
-  void Handle(const OrthancStone::OracleCommandExceptionMessage& message)
-  {
-    printf("EXCEPTION: [%s] on command type %d\n", message.GetException().What(), message.GetCommand().GetType());
-
-    switch (message.GetCommand().GetType())
-    {
-      case OrthancStone::IOracleCommand::Type_GetOrthancWebViewerJpeg:
-        printf("URI: [%s]\n", dynamic_cast<const OrthancStone::GetOrthancWebViewerJpegCommand&>
-               (message.GetCommand()).GetUri().c_str());
-        break;
-      
-      default:
-        break;
-    }
-  }
-
-public:
-  Toto(OrthancStone::IOracle& oracle,
-       OrthancStone::IObservable& oracleObservable) :
-    IObserver(oracleObservable.GetBroker()),
-    oracle_(oracle)
-  {
-    oracleObservable.RegisterObserverCallback
-      (new OrthancStone::Callable
-       <Toto, OrthancStone::SleepOracleCommand::TimeoutMessage>(*this, &Toto::Handle));
-
-    oracleObservable.RegisterObserverCallback
-      (new OrthancStone::Callable
-       <Toto, OrthancStone::OrthancRestApiCommand::SuccessMessage>(*this, &Toto::Handle));
-
-    oracleObservable.RegisterObserverCallback
-      (new OrthancStone::Callable
-       <Toto, OrthancStone::GetOrthancImageCommand::SuccessMessage>(*this, &Toto::Handle));
-
-    oracleObservable.RegisterObserverCallback
-      (new OrthancStone::Callable
-       <Toto, OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage>(*this, &Toto::Handle));
-
-    oracleObservable.RegisterObserverCallback
-      (new OrthancStone::Callable
-       <Toto, OrthancStone::OracleCommandExceptionMessage>(*this, &Toto::Handle));
-  }
-
-  void SetReferenceLoader(OrthancStone::IObservable& loader)
-  {
-    loader.RegisterObserverCallback
-      (new OrthancStone::Callable
-       <Toto, OrthancStone::DicomVolumeImage::GeometryReadyMessage>(*this, &Toto::Handle));
-  }
-
-  void SetVolume1(int depth,
-                  const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
-                  OrthancStone::ILayerStyleConfigurator* style)
-  {
-    source1_.reset(new OrthancStone::VolumeSceneLayerSource(scene_, depth, volume));
-
-    if (style != NULL)
-    {
-      source1_->SetConfigurator(style);
-    }
-  }
-
-  void SetVolume2(int depth,
-                  const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
-                  OrthancStone::ILayerStyleConfigurator* style)
-  {
-    source2_.reset(new OrthancStone::VolumeSceneLayerSource(scene_, depth, volume));
-
-    if (style != NULL)
-    {
-      source2_->SetConfigurator(style);
-    }
-  }
-
-  void SetStructureSet(int depth,
-                       const boost::shared_ptr<OrthancStone::DicomStructureSetLoader>& volume)
-  {
-    source3_.reset(new OrthancStone::VolumeSceneLayerSource(scene_, depth, volume));
-  }
-                       
-};
-
-
-void Run(OrthancStone::NativeApplicationContext& context,
-         OrthancStone::ThreadedOracle& oracle)
-{
-  // the oracle has been supplied with the context (as an IEmitter) upon
-  // creation
-  boost::shared_ptr<OrthancStone::DicomVolumeImage>  ct(new OrthancStone::DicomVolumeImage);
-  boost::shared_ptr<OrthancStone::DicomVolumeImage>  dose(new OrthancStone::DicomVolumeImage);
-
-  
-  boost::shared_ptr<Toto> toto;
-  boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader;
-  boost::shared_ptr<OrthancStone::OrthancMultiframeVolumeLoader> doseLoader;
-  boost::shared_ptr<OrthancStone::DicomStructureSetLoader>  rtstructLoader;
-
-  {
-    OrthancStone::NativeApplicationContext::WriterLock lock(context);
-    toto.reset(new Toto(oracle, lock.GetOracleObservable()));
-
-    // the oracle is used to schedule commands
-    // the oracleObservable is used by the loaders to:
-    // - request the broker (lifetime mgmt)
-    // - register the loader callbacks (called indirectly by the oracle)
-    ctLoader.reset(new OrthancStone::OrthancSeriesVolumeProgressiveLoader(ct, oracle, lock.GetOracleObservable()));
-    doseLoader.reset(new OrthancStone::OrthancMultiframeVolumeLoader(dose, oracle, lock.GetOracleObservable()));
-    rtstructLoader.reset(new OrthancStone::DicomStructureSetLoader(oracle, lock.GetOracleObservable()));
-  }
-
-
-  //toto->SetReferenceLoader(*ctLoader);
-  toto->SetReferenceLoader(*doseLoader);
-
-
-#if 1
-  toto->SetVolume1(0, ctLoader, new OrthancStone::GrayscaleStyleConfigurator);
-#else
-  {
-    boost::shared_ptr<OrthancStone::IVolumeSlicer> reslicer(new OrthancStone::DicomVolumeImageReslicer(ct));
-    toto->SetVolume1(0, reslicer, new OrthancStone::GrayscaleStyleConfigurator);
-  }
-#endif  
-  
-
-  {
-    std::unique_ptr<OrthancStone::LookupTableStyleConfigurator> config(new OrthancStone::LookupTableStyleConfigurator);
-    config->SetLookupTable(Orthanc::EmbeddedResources::COLORMAP_HOT);
-
-    boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer> tmp(new OrthancStone::DicomVolumeImageMPRSlicer(dose));
-    toto->SetVolume2(1, tmp, config.release());
-  }
-
-  toto->SetStructureSet(2, rtstructLoader);
-  
-  oracle.Schedule(*toto, new OrthancStone::SleepOracleCommand(100));
-
-  if (0)
-  {
-    Json::Value v = Json::objectValue;
-    v["Level"] = "Series";
-    v["Query"] = Json::objectValue;
-
-    std::unique_ptr<OrthancStone::OrthancRestApiCommand>  command(new OrthancStone::OrthancRestApiCommand);
-    command->SetMethod(Orthanc::HttpMethod_Post);
-    command->SetUri("/tools/find");
-    command->SetBody(v);
-
-    oracle.Schedule(*toto, command.release());
-  }
-  
-  if(0)
-  {
-    if (0)
-    {
-      std::unique_ptr<OrthancStone::GetOrthancImageCommand>  command(new OrthancStone::GetOrthancImageCommand);
-      command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Jpeg)));
-      command->SetUri("/instances/6687cc73-07cae193-52ff29c8-f646cb16-0753ed92/preview");
-      oracle.Schedule(*toto, command.release());
-    }
-    
-    if (0)
-    {
-      std::unique_ptr<OrthancStone::GetOrthancImageCommand>  command(new OrthancStone::GetOrthancImageCommand);
-      command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Png)));
-      command->SetUri("/instances/6687cc73-07cae193-52ff29c8-f646cb16-0753ed92/preview");
-      oracle.Schedule(*toto, command.release());
-    }
-    
-    if (0)
-    {
-      std::unique_ptr<OrthancStone::GetOrthancImageCommand>  command(new OrthancStone::GetOrthancImageCommand);
-      command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Png)));
-      command->SetUri("/instances/6687cc73-07cae193-52ff29c8-f646cb16-0753ed92/image-uint16");
-      oracle.Schedule(*toto, command.release());
-    }
-    
-    if (0)
-    {
-      std::unique_ptr<OrthancStone::GetOrthancImageCommand>  command(new OrthancStone::GetOrthancImageCommand);
-      command->SetHttpHeader("Accept-Encoding", "gzip");
-      command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Pam)));
-      command->SetUri("/instances/6687cc73-07cae193-52ff29c8-f646cb16-0753ed92/image-uint16");
-      oracle.Schedule(*toto, command.release());
-    }
-    
-    if (0)
-    {
-      std::unique_ptr<OrthancStone::GetOrthancImageCommand>  command(new OrthancStone::GetOrthancImageCommand);
-      command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Pam)));
-      command->SetUri("/instances/6687cc73-07cae193-52ff29c8-f646cb16-0753ed92/image-uint16");
-      oracle.Schedule(*toto, command.release());
-    }
-
-    if (0)
-    {
-      std::unique_ptr<OrthancStone::GetOrthancWebViewerJpegCommand>  command(new OrthancStone::GetOrthancWebViewerJpegCommand);
-      command->SetHttpHeader("Accept-Encoding", "gzip");
-      command->SetInstance("e6c7c20b-c9f65d7e-0d76f2e2-830186f2-3e3c600e");
-      command->SetQuality(90);
-      oracle.Schedule(*toto, command.release());
-    }
-
-
-    if (0)
-    {
-      for (unsigned int i = 0; i < 10; i++)
-      {
-        std::unique_ptr<OrthancStone::SleepOracleCommand> command(new OrthancStone::SleepOracleCommand(i * 1000));
-        command->SetPayload(new Orthanc::SingleValueObject<unsigned int>(42 * i));
-        oracle.Schedule(*toto, command.release());
-      }
-    }
-  }
-  
-  // 2017-11-17-Anonymized
-#if 0
-  // BGO data
-  ctLoader->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");  // CT
-  doseLoader->LoadInstance("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb");  // RT-DOSE
-  //rtstructLoader->LoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");  // RT-STRUCT
-#else
-  //ctLoader->LoadSeries("cb3ea4d1-d08f3856-ad7b6314-74d88d77-60b05618");  // CT
-  //doseLoader->LoadInstance("41029085-71718346-811efac4-420e2c15-d39f99b6");  // RT-DOSE
-  //rtstructLoader->LoadInstance("83d9c0c3-913a7fee-610097d7-cbf0522d-fd75bee6");  // RT-STRUCT
-
-  // 2017-05-16
-  ctLoader->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");  // CT
-  doseLoader->LoadInstance("eac822ef-a395f94e-e8121fe0-8411fef8-1f7bffad");  // RT-DOSE
-  rtstructLoader->LoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9");  // RT-STRUCT
-#endif
-  // 2015-01-28-Multiframe
-  //doseLoader->LoadInstance("88f71e2a-5fad1c61-96ed14d6-5b3d3cf7-a5825279");  // Multiframe CT
-  
-  // Delphine
-  //ctLoader->LoadSeries("5990e39c-51e5f201-fe87a54c-31a55943-e59ef80e");  // CT
-  //ctLoader->LoadSeries("67f1b334-02c16752-45026e40-a5b60b6b-030ecab5");  // Lung 1/10mm
-
-
-  {
-    LOG(WARNING) << "...Waiting for Ctrl-C...";
-
-    oracle.Start();
-
-    Orthanc::SystemToolbox::ServerBarrier();
-
-    /**
-     * WARNING => The oracle must be stopped BEFORE the objects using
-     * it are destroyed!!! This forces to wait for the completion of
-     * the running callback methods. Otherwise, the callbacks methods
-     * might still be running while their parent object is destroyed,
-     * resulting in crashes. This is very visible if adding a sleep(),
-     * as in (*).
-     **/
-
-    oracle.Stop();
-  }
-}
-
-
-
-/**
- * IMPORTANT: The full arguments to "main()" are needed for SDL on
- * Windows. Otherwise, one gets the linking error "undefined reference
- * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
- **/
-int main(int argc, char* argv[])
-{
-  OrthancStone::StoneInitialize();
-  //Orthanc::Logging::EnableInfoLevel(true);
-
-  try
-  {
-    OrthancStone::NativeApplicationContext context;
-
-    OrthancStone::ThreadedOracle oracle(context);
-    //oracle.SetThreadsCount(1);
-
-    {
-      Orthanc::WebServiceParameters p;
-      //p.SetUrl("http://localhost:8043/");
-      p.SetCredentials("orthanc", "orthanc");
-      oracle.SetOrthancParameters(p);
-    }
-
-    //oracle.Start();
-
-    Run(context, oracle);
-    
-    //oracle.Stop();
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "EXCEPTION: " << e.What();
-  }
-
-  OrthancStone::StoneFinalize();
-
-  return 0;
-}
--- a/Resources/Graveyard/Deprecated/Samples/Sdl/RadiographyEditor.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,267 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "../Shared/RadiographyEditorApp.h"
-
-// From Stone
-#include "../../Framework/Oracle/SleepOracleCommand.h"
-#include "../../Framework/Oracle/ThreadedOracle.h"
-#include "../../Applications/Sdl/SdlOpenGLWindow.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/Scene2D/CairoCompositor.h"
-#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/StoneInitialization.h"
-
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-
-
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-
-#include <SDL.h>
-#include <stdio.h>
-
-using namespace OrthancStone;
-
-namespace OrthancStone
-{
-  class NativeApplicationContext : public IMessageEmitter
-  {
-  private:
-    boost::shared_mutex  mutex_;
-    MessageBroker        broker_;
-    IObservable          oracleObservable_;
-
-  public:
-    NativeApplicationContext() :
-      oracleObservable_(broker_)
-    {
-    }
-
-
-    virtual void EmitMessage(const IObserver& observer,
-                             const IMessage& message) ORTHANC_OVERRIDE
-    {
-      try
-      {
-        boost::unique_lock<boost::shared_mutex>  lock(mutex_);
-        oracleObservable_.EmitMessage(observer, message);
-      }
-      catch (Orthanc::OrthancException& e)
-      {
-        LOG(ERROR) << "Exception while emitting a message: " << e.What();
-      }
-    }
-
-
-    class ReaderLock : public boost::noncopyable
-    {
-    private:
-      NativeApplicationContext&                that_;
-      boost::shared_lock<boost::shared_mutex>  lock_;
-
-    public:
-      ReaderLock(NativeApplicationContext& that) :
-        that_(that),
-        lock_(that.mutex_)
-      {
-      }
-    };
-
-
-    class WriterLock : public boost::noncopyable
-    {
-    private:
-      NativeApplicationContext&                that_;
-      boost::unique_lock<boost::shared_mutex>  lock_;
-
-    public:
-      WriterLock(NativeApplicationContext& that) :
-        that_(that),
-        lock_(that.mutex_)
-      {
-      }
-
-      MessageBroker& GetBroker()
-      {
-        return that_.broker_;
-      }
-
-      IObservable& GetOracleObservable()
-      {
-        return that_.oracleObservable_;
-      }
-    };
-  };
-}
-
-class OpenGlSdlCompositorFactory : public ICompositorFactory
-{
-  OpenGL::IOpenGLContext& openGlContext_;
-
-public:
-  OpenGlSdlCompositorFactory(OpenGL::IOpenGLContext& openGlContext) :
-    openGlContext_(openGlContext)
-  {}
-
-  ICompositor* GetCompositor(const Scene2D& scene)
-  {
-
-    OpenGLCompositor* compositor = new OpenGLCompositor(openGlContext_, scene);
-    compositor->SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
-                         FONT_SIZE_0, Orthanc::Encoding_Latin1);
-    compositor->SetFont(1, Orthanc::EmbeddedResources::UBUNTU_FONT,
-                         FONT_SIZE_1, Orthanc::Encoding_Latin1);
-    return compositor;
-  }
-};
-
-static void GLAPIENTRY
-OpenGLMessageCallback(GLenum source,
-                      GLenum type,
-                      GLuint id,
-                      GLenum severity,
-                      GLsizei length,
-                      const GLchar* message,
-                      const void* userParam)
-{
-  if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
-  {
-    fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
-            (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
-            type, severity, message);
-  }
-}
-
-
-/**
- * IMPORTANT: The full arguments to "main()" are needed for SDL on
- * Windows. Otherwise, one gets the linking error "undefined reference
- * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
- **/
-int main(int argc, char* argv[])
-{
-  using namespace OrthancStone;
-
-  StoneInitialize();
-  Orthanc::Logging::EnableInfoLevel(true);
-  //  Orthanc::Logging::EnableTraceLevel(true);
-
-  try
-  {
-    OrthancStone::NativeApplicationContext context;
-    OrthancStone::NativeApplicationContext::WriterLock lock(context);
-    OrthancStone::ThreadedOracle oracle(context);
-
-    // False means we do NOT let Windows treat this as a legacy application
-    // that needs to be scaled
-    SdlOpenGLWindow window("Hello", 1024, 1024, false);
-
-    glEnable(GL_DEBUG_OUTPUT);
-    glDebugMessageCallback(OpenGLMessageCallback, 0);
-
-    std::unique_ptr<OpenGlSdlCompositorFactory> compositorFactory(new OpenGlSdlCompositorFactory(window));
-    boost::shared_ptr<RadiographyEditorApp> app(new RadiographyEditorApp(oracle, lock.GetOracleObservable(), compositorFactory.release()));
-    app->PrepareScene();
-    app->FitContent(window.GetCanvasWidth(), window.GetCanvasHeight());
-
-    bool stopApplication = false;
-
-    while (!stopApplication)
-    {
-      app->Refresh();
-
-      SDL_Event event;
-      while (!stopApplication && SDL_PollEvent(&event))
-      {
-        OrthancStone::KeyboardModifiers modifiers = OrthancStone::KeyboardModifiers_None;
-        if (event.key.keysym.mod & KMOD_CTRL)
-          modifiers = static_cast<OrthancStone::KeyboardModifiers>(static_cast<int>(modifiers) | static_cast<int>(OrthancStone::KeyboardModifiers_Control));
-        if (event.key.keysym.mod & KMOD_ALT)
-          modifiers = static_cast<OrthancStone::KeyboardModifiers>(static_cast<int>(modifiers) | static_cast<int>(OrthancStone::KeyboardModifiers_Alt));
-        if (event.key.keysym.mod & KMOD_SHIFT)
-          modifiers = static_cast<OrthancStone::KeyboardModifiers>(static_cast<int>(modifiers) | static_cast<int>(OrthancStone::KeyboardModifiers_Shift));
-
-        OrthancStone::MouseButton button;
-        if (event.button.button == SDL_BUTTON_LEFT)
-          button = OrthancStone::MouseButton_Left;
-        else if (event.button.button == SDL_BUTTON_MIDDLE)
-          button = OrthancStone::MouseButton_Middle;
-        else if (event.button.button == SDL_BUTTON_RIGHT)
-          button = OrthancStone::MouseButton_Right;
-
-        if (event.type == SDL_QUIT)
-        {
-          stopApplication = true;
-          break;
-        }
-        else if (event.type == SDL_WINDOWEVENT &&
-                 event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
-        {
-          app->DisableTracker(); // was: tracker.reset(NULL);
-          app->UpdateSize();
-        }
-        else if (event.type == SDL_KEYDOWN &&
-                 event.key.repeat == 0 /* Ignore key bounce */)
-        {
-          switch (event.key.keysym.sym)
-          {
-          case SDLK_f:
-            window.GetWindow().ToggleMaximize();
-            break;
-
-          case SDLK_q:
-            stopApplication = true;
-            break;
-          default:
-          {
-            app->OnKeyPressed(event.key.keysym.sym, modifiers);
-           }
-          }
-        }
-        else if (event.type == SDL_MOUSEBUTTONDOWN)
-        {
-          app->OnMouseDown(event.button.x, event.button.y, modifiers, button);
-        }
-        else if (event.type == SDL_MOUSEMOTION)
-        {
-          app->OnMouseMove(event.button.x, event.button.y, modifiers);
-        }
-        else if (event.type == SDL_MOUSEBUTTONUP)
-        {
-          app->OnMouseUp(event.button.x, event.button.y, modifiers, button);
-        }
-      }
-      SDL_Delay(1);
-    }
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "EXCEPTION: " << e.What();
-  }
-
-  StoneFinalize();
-
-  return 0;
-}
-
-
--- a/Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSample.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "TrackerSampleApp.h"
-
- // From Stone
-#include "../../Framework/OpenGL/SdlOpenGLContext.h"
-#include "../../Framework/Scene2D/CairoCompositor.h"
-#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/StoneInitialization.h"
-
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-
-
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-
-#include <SDL.h>
-#include <stdio.h>
-
-/*
-TODO:
-
-- to decouple the trackers from the sample, we need to supply them with
-  the scene rather than the app
-
-- in order to do that, we need a GetNextFreeZIndex function (or something 
-  along those lines) in the scene object
-
-*/
-
-boost::weak_ptr<OrthancStone::TrackerSampleApp> g_app;
-
-void TrackerSample_SetInfoDisplayMessage(std::string key, std::string value)
-{
-  boost::shared_ptr<OrthancStone::TrackerSampleApp> app = g_app.lock();
-  if (app)
-  {
-    app->SetInfoDisplayMessage(key, value);
-  }
-}
-
-/**
- * IMPORTANT: The full arguments to "main()" are needed for SDL on
- * Windows. Otherwise, one gets the linking error "undefined reference
- * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
- **/
-int main(int argc, char* argv[])
-{
-  using namespace OrthancStone;
-
-  StoneInitialize();
-  Orthanc::Logging::EnableInfoLevel(true);
-//  Orthanc::Logging::EnableTraceLevel(true);
-
-  try
-  {
-    MessageBroker broker;
-    boost::shared_ptr<TrackerSampleApp> app(new TrackerSampleApp(broker));
-    g_app = app;
-    app->PrepareScene();
-    app->Run();
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "EXCEPTION: " << e.What();
-  }
-
-  StoneFinalize();
-
-  return 0;
-}
-
-
--- a/Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSampleApp.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,733 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "TrackerSampleApp.h"
-
-#include "../../Framework/OpenGL/SdlOpenGLContext.h"
-#include "../../Framework/Scene2D/CairoCompositor.h"
-#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/Scene2D/PanSceneTracker.h"
-#include "../../Framework/Scene2D/RotateSceneTracker.h"
-#include "../../Framework/Scene2D/Scene2D.h"
-#include "../../Framework/Scene2D/ZoomSceneTracker.h"
-#include "../../Framework/Scene2DViewport/UndoStack.h"
-#include "../../Framework/Scene2DViewport/CreateAngleMeasureTracker.h"
-#include "../../Framework/Scene2DViewport/CreateLineMeasureTracker.h"
-#include "../../Framework/StoneInitialization.h"
-
-// From Orthanc framework
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-#include <Core/Images/Image.h>
-#include <Core/Images/ImageProcessing.h>
-#include <Core/Images/PngWriter.h>
-
-#include <boost/ref.hpp>
-#include <boost/make_shared.hpp>
-#include <SDL.h>
-
-#include <stdio.h>
-
-namespace OrthancStone
-{
-  const char* MeasureToolToString(size_t i)
-  {
-    static const char* descs[] = {
-      "GuiTool_Rotate",
-      "GuiTool_Pan",
-      "GuiTool_Zoom",
-      "GuiTool_LineMeasure",
-      "GuiTool_CircleMeasure",
-      "GuiTool_AngleMeasure",
-      "GuiTool_EllipseMeasure",
-      "GuiTool_LAST"
-    };
-    if (i >= GuiTool_LAST)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, "Wrong tool index");
-    }
-    return descs[i];
-  }
-
-  void TrackerSampleApp::SelectNextTool()
-  {
-    currentTool_ = static_cast<GuiTool>(currentTool_ + 1);
-    if (currentTool_ == GuiTool_LAST)
-      currentTool_ = static_cast<GuiTool>(0);;
-    printf("Current tool is now: %s\n", MeasureToolToString(currentTool_));
-  }
-
-  void TrackerSampleApp::DisplayInfoText()
-  {
-    // do not try to use stuff too early!
-    std::stringstream msg;
-	
-	for (std::map<std::string, std::string>::const_iterator kv = infoTextMap_.begin();
-		kv != infoTextMap_.end(); ++kv)
-    {
-      msg << kv->first << " : " << kv->second << std::endl;
-    }
-	std::string msgS = msg.str();
-
-    TextSceneLayer* layerP = NULL;
-    if (controller_->GetScene().HasLayer(FIXED_INFOTEXT_LAYER_ZINDEX))
-    {
-      TextSceneLayer& layer = dynamic_cast<TextSceneLayer&>(
-        controller_->GetScene().GetLayer(FIXED_INFOTEXT_LAYER_ZINDEX));
-      layerP = &layer;
-    }
-    else
-    {
-      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
-      layerP = layer.get();
-      layer->SetColor(0, 255, 0);
-      layer->SetFontIndex(1);
-      layer->SetBorder(20);
-      layer->SetAnchor(BitmapAnchor_TopLeft);
-      //layer->SetPosition(0,0);
-      controller_->GetScene().SetLayer(FIXED_INFOTEXT_LAYER_ZINDEX, layer.release());
-    }
-    // position the fixed info text in the upper right corner
-    layerP->SetText(msgS.c_str());
-    double cX = GetCompositor().GetCanvasWidth() * (-0.5);
-    double cY = GetCompositor().GetCanvasHeight() * (-0.5);
-    controller_->GetScene().GetCanvasToSceneTransform().Apply(cX,cY);
-    layerP->SetPosition(cX, cY);
-  }
-
-  void TrackerSampleApp::DisplayFloatingCtrlInfoText(const PointerEvent& e)
-  {
-    ScenePoint2D p = e.GetMainPosition().Apply(controller_->GetScene().GetCanvasToSceneTransform());
-
-    char buf[128];
-    sprintf(buf, "S:(%0.02f,%0.02f) C:(%0.02f,%0.02f)", 
-      p.GetX(), p.GetY(), 
-      e.GetMainPosition().GetX(), e.GetMainPosition().GetY());
-
-    if (controller_->GetScene().HasLayer(FLOATING_INFOTEXT_LAYER_ZINDEX))
-    {
-      TextSceneLayer& layer =
-        dynamic_cast<TextSceneLayer&>(controller_->GetScene().GetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX));
-      layer.SetText(buf);
-      layer.SetPosition(p.GetX(), p.GetY());
-    }
-    else
-    {
-      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
-      layer->SetColor(0, 255, 0);
-      layer->SetText(buf);
-      layer->SetBorder(20);
-      layer->SetAnchor(BitmapAnchor_BottomCenter);
-      layer->SetPosition(p.GetX(), p.GetY());
-      controller_->GetScene().SetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX, layer.release());
-    }
-  }
-
-  void TrackerSampleApp::HideInfoText()
-  {
-    controller_->GetScene().DeleteLayer(FLOATING_INFOTEXT_LAYER_ZINDEX);
-  }
-
-  ScenePoint2D TrackerSampleApp::GetRandomPointInScene() const
-  {
-    unsigned int w = GetCompositor().GetCanvasWidth();
-    LOG(TRACE) << "GetCompositor().GetCanvasWidth() = " << 
-      GetCompositor().GetCanvasWidth();
-    unsigned int h = GetCompositor().GetCanvasHeight();
-    LOG(TRACE) << "GetCompositor().GetCanvasHeight() = " << 
-      GetCompositor().GetCanvasHeight();
-
-    if ((w >= RAND_MAX) || (h >= RAND_MAX))
-      LOG(WARNING) << "Canvas is too big : tools will not be randomly placed";
-
-    int x = rand() % w;
-    int y = rand() % h;
-    LOG(TRACE) << "random x = " << x << "random y = " << y;
-
-    ScenePoint2D p = controller_->GetViewport().GetPixelCenterCoordinates(x, y);
-    LOG(TRACE) << "--> p.GetX() = " << p.GetX() << " p.GetY() = " << p.GetY();
-
-    ScenePoint2D r = p.Apply(controller_->GetScene().GetCanvasToSceneTransform());
-    LOG(TRACE) << "--> r.GetX() = " << r.GetX() << " r.GetY() = " << r.GetY();
-    return r;
-  }
-
-  void TrackerSampleApp::CreateRandomMeasureTool()
-  {
-    static bool srandCalled = false;
-    if (!srandCalled)
-    {
-      srand(42);
-      srandCalled = true;
-    }
-
-    int i = rand() % 2;
-    LOG(TRACE) << "random i = " << i;
-    switch (i)
-    {
-    case 0:
-      // line measure
-      {
-        boost::shared_ptr<CreateLineMeasureCommand> cmd = 
-          boost::make_shared<CreateLineMeasureCommand>(
-		  boost::ref(IObserver::GetBroker()),
-            controller_,
-            GetRandomPointInScene());
-        cmd->SetEnd(GetRandomPointInScene());
-        controller_->PushCommand(cmd);
-      }
-      break;
-    case 1:
-      // angle measure
-      {
-      boost::shared_ptr<CreateAngleMeasureCommand> cmd =
-        boost::make_shared<CreateAngleMeasureCommand>(
-          boost::ref(IObserver::GetBroker()),
-          controller_,
-          GetRandomPointInScene());
-        cmd->SetCenter(GetRandomPointInScene());
-        cmd->SetSide2End(GetRandomPointInScene());
-        controller_->PushCommand(cmd);
-      }
-      break;
-    }
-  }
-
-  void TrackerSampleApp::HandleApplicationEvent(
-    const SDL_Event & event)
-  {
-    DisplayInfoText();
-
-    if (event.type == SDL_MOUSEMOTION)
-    {
-      int scancodeCount = 0;
-      const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
-
-      if (activeTracker_.get() == NULL &&
-        SDL_SCANCODE_LALT < scancodeCount &&
-        keyboardState[SDL_SCANCODE_LALT])
-      {
-        // The "left-ctrl" key is down, while no tracker is present
-        // Let's display the info text
-        PointerEvent e;
-        e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
-          event.button.x, event.button.y));
-
-        DisplayFloatingCtrlInfoText(e);
-      }
-      else if (activeTracker_.get() != NULL)
-      {
-        HideInfoText();
-        //LOG(TRACE) << "(event.type == SDL_MOUSEMOTION)";
-        if (activeTracker_.get() != NULL)
-        {
-          //LOG(TRACE) << "(activeTracker_.get() != NULL)";
-          PointerEvent e;
-          e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
-            event.button.x, event.button.y));
-          
-          //LOG(TRACE) << "event.button.x = " << event.button.x << "     " <<
-          //  "event.button.y = " << event.button.y;
-          LOG(TRACE) << "activeTracker_->PointerMove(e); " <<
-            e.GetMainPosition().GetX() << " " << e.GetMainPosition().GetY();
-          
-          activeTracker_->PointerMove(e);
-          if (!activeTracker_->IsAlive())
-            activeTracker_.reset();
-        }
-      }
-      else
-      {
-        HideInfoText();
-
-        PointerEvent e;
-        e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(event.button.x, event.button.y));
-
-        ScenePoint2D scenePos = e.GetMainPosition().Apply(
-          controller_->GetScene().GetCanvasToSceneTransform());
-        //auto measureTools = GetController()->HitTestMeasureTools(scenePos);
-        //LOG(TRACE) << "# of hit tests: " << measureTools.size();
-        
-        // this returns the collection of measuring tools where hit test is true
-        std::vector<boost::shared_ptr<MeasureTool> > measureTools = controller_->HitTestMeasureTools(scenePos);
-
-        // let's refresh the measuring tools highlighted state
-        // first let's tag them as "unhighlighted"
-        controller_->ResetMeasuringToolsHighlight();
-
-        // then immediately take the first one and ask it to highlight the 
-        // measuring tool UI part that is hot
-        if (measureTools.size() > 0)
-        {
-          measureTools[0]->Highlight(scenePos);
-        }
-      }
-    }
-    else if (event.type == SDL_MOUSEBUTTONUP)
-    {
-      if (activeTracker_)
-      {
-        PointerEvent e;
-        e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(event.button.x, event.button.y));
-        activeTracker_->PointerUp(e);
-        if (!activeTracker_->IsAlive())
-          activeTracker_.reset();
-      }
-    }
-    else if (event.type == SDL_MOUSEBUTTONDOWN)
-    {
-      PointerEvent e;
-      e.AddPosition(controller_->GetViewport().GetPixelCenterCoordinates(
-        event.button.x, event.button.y));
-      if (activeTracker_)
-      {
-        activeTracker_->PointerDown(e);
-        if (!activeTracker_->IsAlive())
-          activeTracker_.reset();
-      }
-      else
-      {
-        // we ATTEMPT to create a tracker if need be
-        activeTracker_ = CreateSuitableTracker(event, e);
-      }
-    }
-    else if (event.type == SDL_KEYDOWN &&
-      event.key.repeat == 0 /* Ignore key bounce */)
-    {
-      switch (event.key.keysym.sym)
-      {
-      case SDLK_ESCAPE:
-        if (activeTracker_)
-        {
-          activeTracker_->Cancel();
-          if (!activeTracker_->IsAlive())
-            activeTracker_.reset();
-        }
-        break;
-
-      case SDLK_t:
-        if (!activeTracker_)
-          SelectNextTool();
-        else
-        {
-          LOG(WARNING) << "You cannot change the active tool when an interaction"
-            " is taking place";
-        }
-        break;
-
-      case SDLK_m:
-        CreateRandomMeasureTool();
-        break;
-      case SDLK_s:
-        controller_->FitContent(GetCompositor().GetCanvasWidth(),
-          GetCompositor().GetCanvasHeight());
-        break;
-
-      case SDLK_z:
-        LOG(TRACE) << "SDLK_z has been pressed. event.key.keysym.mod == " << event.key.keysym.mod;
-        if (event.key.keysym.mod & KMOD_CTRL)
-        {
-          if (controller_->CanUndo())
-          {
-            LOG(TRACE) << "Undoing...";
-            controller_->Undo();
-          }
-          else
-          {
-            LOG(WARNING) << "Nothing to undo!!!";
-          }
-        }
-        break;
-
-      case SDLK_y:
-        LOG(TRACE) << "SDLK_y has been pressed. event.key.keysym.mod == " << event.key.keysym.mod;
-        if (event.key.keysym.mod & KMOD_CTRL)
-        {
-          if (controller_->CanRedo())
-          {
-            LOG(TRACE) << "Redoing...";
-            controller_->Redo();
-          }
-          else
-          {
-            LOG(WARNING) << "Nothing to redo!!!";
-          }
-        }
-        break;
-
-      case SDLK_c:
-        TakeScreenshot(
-          "screenshot.png",
-          GetCompositor().GetCanvasWidth(),
-          GetCompositor().GetCanvasHeight());
-        break;
-
-      default:
-        break;
-      }
-    }
-  }
-
-
-  void TrackerSampleApp::OnSceneTransformChanged(
-    const ViewportController::SceneTransformChanged& message)
-  {
-    DisplayInfoText();
-  }
-
-  boost::shared_ptr<IFlexiblePointerTracker> TrackerSampleApp::CreateSuitableTracker(
-    const SDL_Event & event,
-    const PointerEvent & e)
-  {
-    using namespace Orthanc;
-
-    switch (event.button.button)
-    {
-    case SDL_BUTTON_MIDDLE:
-      return boost::shared_ptr<IFlexiblePointerTracker>(new PanSceneTracker
-        (controller_, e));
-
-    case SDL_BUTTON_RIGHT:
-      return boost::shared_ptr<IFlexiblePointerTracker>(new ZoomSceneTracker
-        (controller_, e, GetCompositor().GetCanvasHeight()));
-
-    case SDL_BUTTON_LEFT:
-    {
-      //LOG(TRACE) << "CreateSuitableTracker: case SDL_BUTTON_LEFT:";
-      // TODO: we need to iterate on the set of measuring tool and perform
-      // a hit test to check if a tracker needs to be created for edition.
-      // Otherwise, depending upon the active tool, we might want to create
-      // a "measuring tool creation" tracker
-
-      // TODO: if there are conflicts, we should prefer a tracker that 
-      // pertains to the type of measuring tool currently selected (TBD?)
-      boost::shared_ptr<IFlexiblePointerTracker> hitTestTracker = TrackerHitTest(e);
-
-      if (hitTestTracker != NULL)
-      {
-        //LOG(TRACE) << "hitTestTracker != NULL";
-        return hitTestTracker;
-      }
-      else
-      {
-        switch (currentTool_)
-        {
-        case GuiTool_Rotate:
-          //LOG(TRACE) << "Creating RotateSceneTracker";
-          return boost::shared_ptr<IFlexiblePointerTracker>(new RotateSceneTracker(
-            controller_, e));
-        case GuiTool_Pan:
-          return boost::shared_ptr<IFlexiblePointerTracker>(new PanSceneTracker(
-            controller_, e));
-        case GuiTool_Zoom:
-          return boost::shared_ptr<IFlexiblePointerTracker>(new ZoomSceneTracker(
-            controller_, e, GetCompositor().GetCanvasHeight()));
-        //case GuiTool_AngleMeasure:
-        //  return new AngleMeasureTracker(GetScene(), e);
-        //case GuiTool_CircleMeasure:
-        //  return new CircleMeasureTracker(GetScene(), e);
-        //case GuiTool_EllipseMeasure:
-        //  return new EllipseMeasureTracker(GetScene(), e);
-        case GuiTool_LineMeasure:
-          return boost::shared_ptr<IFlexiblePointerTracker>(new CreateLineMeasureTracker(
-            IObserver::GetBroker(), controller_, e));
-        case GuiTool_AngleMeasure:
-          return boost::shared_ptr<IFlexiblePointerTracker>(new CreateAngleMeasureTracker(
-            IObserver::GetBroker(), controller_, e));
-        case GuiTool_CircleMeasure:
-          LOG(ERROR) << "Not implemented yet!";
-          return boost::shared_ptr<IFlexiblePointerTracker>();
-        case GuiTool_EllipseMeasure:
-          LOG(ERROR) << "Not implemented yet!";
-          return boost::shared_ptr<IFlexiblePointerTracker>();
-        default:
-          throw OrthancException(ErrorCode_InternalError, "Wrong tool!");
-        }
-      }
-    }
-    default:
-      return boost::shared_ptr<IFlexiblePointerTracker>();
-    }
-  }
-
-
-  TrackerSampleApp::TrackerSampleApp(MessageBroker& broker) : IObserver(broker)
-    , currentTool_(GuiTool_Rotate)
-    , undoStack_(new UndoStack)
-    , viewport_("Hello", 1024, 1024, false) // False means we do NOT let Windows treat this as a legacy application that needs to be scaled
-  {
-    controller_ = boost::shared_ptr<ViewportController>(
-      new ViewportController(undoStack_, broker, viewport_));
-
-    controller_->RegisterObserverCallback(
-      new Callable<TrackerSampleApp, ViewportController::SceneTransformChanged>
-      (*this, &TrackerSampleApp::OnSceneTransformChanged));
-
-    TEXTURE_2x2_1_ZINDEX = 1;
-    TEXTURE_1x1_ZINDEX = 2;
-    TEXTURE_2x2_2_ZINDEX = 3;
-    LINESET_1_ZINDEX = 4;
-    LINESET_2_ZINDEX = 5;
-    FLOATING_INFOTEXT_LAYER_ZINDEX = 6;
-    FIXED_INFOTEXT_LAYER_ZINDEX = 7;
-  }
-
-  void TrackerSampleApp::PrepareScene()
-  {
-    // Texture of 2x2 size
-    {
-      Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false);
-
-      uint8_t* p = reinterpret_cast<uint8_t*>(i.GetRow(0));
-      p[0] = 255;
-      p[1] = 0;
-      p[2] = 0;
-
-      p[3] = 0;
-      p[4] = 255;
-      p[5] = 0;
-
-      p = reinterpret_cast<uint8_t*>(i.GetRow(1));
-      p[0] = 0;
-      p[1] = 0;
-      p[2] = 255;
-
-      p[3] = 255;
-      p[4] = 0;
-      p[5] = 0;
-
-      controller_->GetScene().SetLayer(TEXTURE_2x2_1_ZINDEX, new ColorTextureSceneLayer(i));
-
-      std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
-      l->SetOrigin(-3, 2);
-      l->SetPixelSpacing(1.5, 1);
-      l->SetAngle(20.0 / 180.0 * M_PI);
-      controller_->GetScene().SetLayer(TEXTURE_2x2_2_ZINDEX, l.release());
-    }
-
-    // Texture of 1x1 size
-    {
-      Orthanc::Image i(Orthanc::PixelFormat_RGB24, 1, 1, false);
-
-      uint8_t* p = reinterpret_cast<uint8_t*>(i.GetRow(0));
-      p[0] = 255;
-      p[1] = 0;
-      p[2] = 0;
-
-      std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
-      l->SetOrigin(-2, 1);
-      l->SetAngle(20.0 / 180.0 * M_PI);
-      controller_->GetScene().SetLayer(TEXTURE_1x1_ZINDEX, l.release());
-    }
-
-    // Some lines
-    {
-      std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer);
-
-      layer->SetThickness(1);
-
-      PolylineSceneLayer::Chain chain;
-      chain.push_back(ScenePoint2D(0 - 0.5, 0 - 0.5));
-      chain.push_back(ScenePoint2D(0 - 0.5, 2 - 0.5));
-      chain.push_back(ScenePoint2D(2 - 0.5, 2 - 0.5));
-      chain.push_back(ScenePoint2D(2 - 0.5, 0 - 0.5));
-      layer->AddChain(chain, true, 255, 0, 0);
-
-      chain.clear();
-      chain.push_back(ScenePoint2D(-5, -5));
-      chain.push_back(ScenePoint2D(5, -5));
-      chain.push_back(ScenePoint2D(5, 5));
-      chain.push_back(ScenePoint2D(-5, 5));
-      layer->AddChain(chain, true, 0, 255, 0);
-
-      double dy = 1.01;
-      chain.clear();
-      chain.push_back(ScenePoint2D(-4, -4));
-      chain.push_back(ScenePoint2D(4, -4 + dy));
-      chain.push_back(ScenePoint2D(-4, -4 + 2.0 * dy));
-      chain.push_back(ScenePoint2D(4, 2));
-      layer->AddChain(chain, false, 0, 0, 255);
-
-      controller_->GetScene().SetLayer(LINESET_1_ZINDEX, layer.release());
-    }
-
-    // Some text
-    {
-      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
-      layer->SetText("Hello");
-      controller_->GetScene().SetLayer(LINESET_2_ZINDEX, layer.release());
-    }
-  }
-
-
-  void TrackerSampleApp::DisableTracker()
-  {
-    if (activeTracker_)
-    {
-      activeTracker_->Cancel();
-      activeTracker_.reset();
-    }
-  }
-
-  void TrackerSampleApp::TakeScreenshot(const std::string& target,
-    unsigned int canvasWidth,
-    unsigned int canvasHeight)
-  {
-    CairoCompositor compositor(controller_->GetScene(), canvasWidth, canvasHeight);
-    compositor.SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, FONT_SIZE_0, Orthanc::Encoding_Latin1);
-    compositor.Refresh();
-
-    Orthanc::ImageAccessor canvas;
-    compositor.GetCanvas().GetReadOnlyAccessor(canvas);
-
-    Orthanc::Image png(Orthanc::PixelFormat_RGB24, canvas.GetWidth(), canvas.GetHeight(), false);
-    Orthanc::ImageProcessing::Convert(png, canvas);
-
-    Orthanc::PngWriter writer;
-    writer.WriteToFile(target, png);
-  }
-
-
-  boost::shared_ptr<IFlexiblePointerTracker> TrackerSampleApp::TrackerHitTest(const PointerEvent & e)
-  {
-    // std::vector<boost::shared_ptr<MeasureTool>> measureTools_;
-    ScenePoint2D scenePos = e.GetMainPosition().Apply(
-      controller_->GetScene().GetCanvasToSceneTransform());
-
-    std::vector<boost::shared_ptr<MeasureTool> > measureTools = controller_->HitTestMeasureTools(scenePos);
-
-    if (measureTools.size() > 0)
-    {
-      return measureTools[0]->CreateEditionTracker(e);
-    }
-    return boost::shared_ptr<IFlexiblePointerTracker>();
-  }
-
-  static void GLAPIENTRY
-    OpenGLMessageCallback(GLenum source,
-      GLenum type,
-      GLuint id,
-      GLenum severity,
-      GLsizei length,
-      const GLchar* message,
-      const void* userParam)
-  {
-    if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
-    {
-      fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
-        (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
-        type, severity, message);
-    }
-  }
-
-  static bool g_stopApplication = false;
-  
-  ICompositor& TrackerSampleApp::GetCompositor()
-  {
-    using namespace Orthanc;
-    try
-    {
-      SdlViewport& viewport = dynamic_cast<SdlViewport&>(viewport_);
-      return viewport.GetCompositor();
-    }
-    catch (std::bad_cast e)
-    {
-      throw OrthancException(ErrorCode_InternalError, "Wrong viewport type!");
-     }
-  }
-
-  const ICompositor& TrackerSampleApp::GetCompositor() const
-  {
-    using namespace Orthanc;
-    try
-    {
-      SdlViewport& viewport = const_cast<SdlViewport&>(dynamic_cast<const SdlViewport&>(viewport_));
-      return viewport.GetCompositor();
-    }
-    catch (std::bad_cast e)
-    {
-      throw OrthancException(ErrorCode_InternalError, "Wrong viewport type!");
-    }
-  }
-
-
-  void TrackerSampleApp::Run()
-  {
-    controller_->FitContent(viewport_.GetCanvasWidth(), viewport_.GetCanvasHeight());
-
-    glEnable(GL_DEBUG_OUTPUT);
-    glDebugMessageCallback(OpenGLMessageCallback, 0);
-
-    GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
-      FONT_SIZE_0, Orthanc::Encoding_Latin1);
-    GetCompositor().SetFont(1, Orthanc::EmbeddedResources::UBUNTU_FONT,
-      FONT_SIZE_1, Orthanc::Encoding_Latin1);
-
-    while (!g_stopApplication)
-    {
-      GetCompositor().Refresh();
-
-      SDL_Event event;
-      while (!g_stopApplication && SDL_PollEvent(&event))
-      {
-        if (event.type == SDL_QUIT)
-        {
-          g_stopApplication = true;
-          break;
-        }
-        else if (event.type == SDL_WINDOWEVENT &&
-          event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
-        {
-          DisableTracker(); // was: tracker.reset(NULL);
-        }
-        else if (event.type == SDL_KEYDOWN &&
-          event.key.repeat == 0 /* Ignore key bounce */)
-        {
-          switch (event.key.keysym.sym)
-          {
-          case SDLK_f:
-            viewport_.GetWindow().ToggleMaximize();
-            break;
-
-          case SDLK_q:
-            g_stopApplication = true;
-            break;
-          default:
-            break;
-          }
-        }
-        HandleApplicationEvent(event);
-      }
-      SDL_Delay(1);
-    }
-  }
-
-  void TrackerSampleApp::SetInfoDisplayMessage(
-    std::string key, std::string value)
-  {
-    if (value == "")
-      infoTextMap_.erase(key);
-    else
-      infoTextMap_[key] = value;
-    DisplayInfoText();
-  }
-
-}
--- a/Resources/Graveyard/Deprecated/Samples/Sdl/TrackerSampleApp.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Messages/IObserver.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/Scene2DViewport/IFlexiblePointerTracker.h"
-#include "../../Framework/Scene2DViewport/MeasureTool.h"
-#include "../../Framework/Scene2DViewport/PredeclaredTypes.h"
-#include "../../Framework/Scene2DViewport/ViewportController.h"
-#include "../../Framework/Viewport/SdlViewport.h"
-
-#include <SDL.h>
-
-#include <boost/make_shared.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-namespace OrthancStone
-{
-  enum GuiTool
-  {
-    GuiTool_Rotate = 0,
-    GuiTool_Pan,
-    GuiTool_Zoom,
-    GuiTool_LineMeasure,
-    GuiTool_CircleMeasure,
-    GuiTool_AngleMeasure,
-    GuiTool_EllipseMeasure,
-    GuiTool_LAST
-  };
-
-  const char* MeasureToolToString(size_t i);
-
-  static const unsigned int FONT_SIZE_0 = 32;
-  static const unsigned int FONT_SIZE_1 = 24;
-
-  class Scene2D;
-  class UndoStack;
-
-  class TrackerSampleApp : public IObserver
-    , public boost::enable_shared_from_this<TrackerSampleApp>
-  {
-  public:
-    // 12 because.
-    TrackerSampleApp(MessageBroker& broker);
-    void PrepareScene();
-    void Run();
-    void SetInfoDisplayMessage(std::string key, std::string value);
-    void DisableTracker();
-
-    void HandleApplicationEvent(const SDL_Event& event);
-
-    /**
-    This method is called when the scene transform changes. It allows to
-    recompute the visual elements whose content depend upon the scene transform
-    */
-    void OnSceneTransformChanged(
-      const ViewportController::SceneTransformChanged& message);
-
-  private:
-    void SelectNextTool();
-    void CreateRandomMeasureTool();
-
-
-    /**
-    In the case of this app, the viewport is an SDL viewport and it has 
-    a OpenGLCompositor& GetCompositor() method
-    */
-    ICompositor& GetCompositor();
-
-    /**
-    See the other overload
-    */
-    const ICompositor& GetCompositor() const;
-
-    /**
-    This returns a random point in the canvas part of the scene, but in
-    scene coordinates
-    */
-    ScenePoint2D GetRandomPointInScene() const;
-
-    boost::shared_ptr<IFlexiblePointerTracker> TrackerHitTest(const PointerEvent& e);
-
-    boost::shared_ptr<IFlexiblePointerTracker> CreateSuitableTracker(
-      const SDL_Event& event,
-      const PointerEvent& e);
-
-    void TakeScreenshot(
-      const std::string& target,
-      unsigned int canvasWidth,
-      unsigned int canvasHeight);
-
-    /**
-      This adds the command at the top of the undo stack
-    */
-    void Commit(boost::shared_ptr<TrackerCommand> cmd);
-    void Undo();
-    void Redo();
-
-  private:
-    void DisplayFloatingCtrlInfoText(const PointerEvent& e);
-    void DisplayInfoText();
-    void HideInfoText();
-
-  private:
-    /**
-    WARNING: the measuring tools do store a reference to the scene, and it 
-    paramount that the scene gets destroyed AFTER the measurement tools.
-    */
-    boost::shared_ptr<ViewportController> controller_;
-
-    std::map<std::string, std::string> infoTextMap_;
-    boost::shared_ptr<IFlexiblePointerTracker> activeTracker_;
-
-    //static const int LAYER_POSITION = 150;
-
-    int TEXTURE_2x2_1_ZINDEX;
-    int TEXTURE_1x1_ZINDEX;
-    int TEXTURE_2x2_2_ZINDEX;
-    int LINESET_1_ZINDEX;
-    int LINESET_2_ZINDEX;
-    int FLOATING_INFOTEXT_LAYER_ZINDEX;
-    int FIXED_INFOTEXT_LAYER_ZINDEX;
-
-    GuiTool currentTool_;
-    boost::shared_ptr<UndoStack> undoStack_;
-    SdlOpenGLViewport viewport_;
-  };
-
-}
--- a/Resources/Graveyard/Deprecated/Samples/Sdl/cpp.hint	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-#define ORTHANC_OVERRIDE
-#define ORTHANC_STONE_DEFINE_EMPTY_MESSAGE(FILE, LINE, NAME) class NAME : public ::OrthancStone::IMessage {};
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicMPR.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,427 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-
-#include "dev.h"
-
-#include <emscripten.h>
-
-#include "../../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
-#include "../../Framework/Oracle/SleepOracleCommand.h"
-#include "../../Framework/Oracle/WebAssemblyOracle.h"
-#include "../../Framework/Scene2D/GrayscaleStyleConfigurator.h"
-#include "../../Framework/StoneInitialization.h"
-#include "../../Framework/Volumes/VolumeSceneLayerSource.h"
-
-
-namespace OrthancStone
-{
-  class VolumeSlicerWidget : public IObserver
-  {
-  private:
-    OrthancStone::WebAssemblyViewport      viewport_;
-    std::unique_ptr<VolumeSceneLayerSource>  source_;
-    VolumeProjection                       projection_;
-    std::vector<CoordinateSystem3D>        planes_;
-    size_t                                 currentPlane_;
-
-    void Handle(const DicomVolumeImage::GeometryReadyMessage& message)
-    {
-      LOG(INFO) << "Geometry is available";
-
-      const VolumeImageGeometry& geometry = message.GetOrigin().GetGeometry();
-
-      const unsigned int depth = geometry.GetProjectionDepth(projection_);
-      currentPlane_ = depth / 2;
-      
-      planes_.resize(depth);
-
-      for (unsigned int z = 0; z < depth; z++)
-      {
-        planes_[z] = geometry.GetProjectionSlice(projection_, z);
-      }
-
-      Refresh();
-
-      viewport_.FitContent();
-    }
-    
-  public:
-    VolumeSlicerWidget(MessageBroker& broker,
-                         const std::string& canvas,
-                         VolumeProjection projection) :
-      IObserver(broker),
-      viewport_(broker, canvas),
-      projection_(projection),
-      currentPlane_(0)
-    {
-    }
-
-    void UpdateSize()
-    {
-      viewport_.UpdateSize();
-    }
-
-    void SetSlicer(int layerDepth,
-                   const boost::shared_ptr<IVolumeSlicer>& slicer,
-                   IObservable& loader,
-                   ILayerStyleConfigurator* configurator)
-    {
-      if (source_.get() != NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                        "Only one slicer can be registered");
-      }
-      
-      loader.RegisterObserverCallback(
-        new Callable<VolumeSlicerWidget, DicomVolumeImage::GeometryReadyMessage>
-        (*this, &VolumeSlicerWidget::Handle));
-
-      source_.reset(new VolumeSceneLayerSource(viewport_.GetScene(), layerDepth, slicer));
-
-      if (configurator != NULL)
-      {
-        source_->SetConfigurator(configurator);
-      }
-    }    
-
-    void Refresh()
-    {
-      if (source_.get() != NULL &&
-          currentPlane_ < planes_.size())
-      {
-        source_->Update(planes_[currentPlane_]);
-        viewport_.Refresh();
-      }
-    }
-
-    size_t GetSlicesCount() const
-    {
-      return planes_.size();
-    }
-
-    void Scroll(int delta)
-    {
-      if (!planes_.empty())
-      {
-        int tmp = static_cast<int>(currentPlane_) + delta;
-        unsigned int next;
-
-        if (tmp < 0)
-        {
-          next = 0;
-        }
-        else if (tmp >= static_cast<int>(planes_.size()))
-        {
-          next = planes_.size() - 1;
-        }
-        else
-        {
-          next = static_cast<size_t>(tmp);
-        }
-
-        if (next != currentPlane_)
-        {
-          currentPlane_ = next;
-          Refresh();
-        }
-      }
-    }
-  };
-}
-
-
-
-
-boost::shared_ptr<OrthancStone::DicomVolumeImage>  ct_(new OrthancStone::DicomVolumeImage);
-
-boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader>  loader_;
-
-std::unique_ptr<OrthancStone::VolumeSlicerWidget>  widget1_;
-std::unique_ptr<OrthancStone::VolumeSlicerWidget>  widget2_;
-std::unique_ptr<OrthancStone::VolumeSlicerWidget>  widget3_;
-
-OrthancStone::MessageBroker  broker_;
-OrthancStone::WebAssemblyOracle  oracle_(broker_);
-
-
-EM_BOOL OnWindowResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData)
-{
-  try
-  {
-    if (widget1_.get() != NULL)
-    {
-      widget1_->UpdateSize();
-    }
-  
-    if (widget2_.get() != NULL)
-    {
-      widget2_->UpdateSize();
-    }
-  
-    if (widget3_.get() != NULL)
-    {
-      widget3_->UpdateSize();
-    }
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "Exception while updating canvas size: " << e.What();
-  }
-  
-  return true;
-}
-
-
-
-
-EM_BOOL OnAnimationFrame(double time, void *userData)
-{
-  try
-  {
-    if (widget1_.get() != NULL)
-    {
-      widget1_->Refresh();
-    }
-  
-    if (widget2_.get() != NULL)
-    {
-      widget2_->Refresh();
-    }
-  
-    if (widget3_.get() != NULL)
-    {
-      widget3_->Refresh();
-    }
-
-    return true;
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "Exception in the animation loop, stopping now: " << e.What();
-    return false;
-  }  
-}
-
-
-static bool ctrlDown_ = false;
-
-
-EM_BOOL OnMouseWheel(int eventType,
-                     const EmscriptenWheelEvent *wheelEvent,
-                     void *userData)
-{
-  try
-  {
-    if (userData != NULL)
-    {
-      int delta = 0;
-
-      if (wheelEvent->deltaY < 0)
-      {
-        delta = -1;
-      }
-           
-      if (wheelEvent->deltaY > 0)
-      {
-        delta = 1;
-      }
-
-      OrthancStone::VolumeSlicerWidget& widget =
-        *reinterpret_cast<OrthancStone::VolumeSlicerWidget*>(userData);
-      
-      if (ctrlDown_)
-      {
-        delta *= static_cast<int>(widget.GetSlicesCount() / 10);
-      }
-
-      widget.Scroll(delta);
-    }
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "Exception in the wheel event: " << e.What();
-  }
-  
-  return true;
-}
-
-
-EM_BOOL OnKeyDown(int eventType,
-                  const EmscriptenKeyboardEvent *keyEvent,
-                  void *userData)
-{
-  ctrlDown_ = keyEvent->ctrlKey;
-  return false;
-}
-
-
-EM_BOOL OnKeyUp(int eventType,
-                const EmscriptenKeyboardEvent *keyEvent,
-                void *userData)
-{
-  ctrlDown_ = false;
-  return false;
-}
-
-
-
-
-namespace OrthancStone
-{
-  class TestSleep : public IObserver
-  {
-  private:
-    WebAssemblyOracle&  oracle_;
-
-    void Schedule()
-    {
-      oracle_.Schedule(*this, new OrthancStone::SleepOracleCommand(2000));
-    }
-    
-    void Handle(const SleepOracleCommand::TimeoutMessage& message)
-    {
-      LOG(INFO) << "TIMEOUT";
-      Schedule();
-    }
-    
-  public:
-    TestSleep(MessageBroker& broker,
-              WebAssemblyOracle& oracle) :
-      IObserver(broker),
-      oracle_(oracle)
-    {
-      oracle.RegisterObserverCallback(
-        new Callable<TestSleep, SleepOracleCommand::TimeoutMessage>
-        (*this, &TestSleep::Handle));
-
-      LOG(INFO) << "STARTING";
-      Schedule();
-    }
-  };
-
-  //static TestSleep testSleep(broker_, oracle_);
-}
-
-
-
-static std::map<std::string, std::string> arguments_;
-
-static bool GetArgument(std::string& value,
-                        const std::string& key)
-{
-  std::map<std::string, std::string>::const_iterator found = arguments_.find(key);
-
-  if (found == arguments_.end())
-  {
-    return false;
-  }
-  else
-  {
-    value = found->second;
-    return true;
-  }
-}
-
-
-extern "C"
-{
-  int main(int argc, char const *argv[]) 
-  {
-    OrthancStone::StoneInitialize();
-    Orthanc::Logging::EnableInfoLevel(true);
-    // Orthanc::Logging::EnableTraceLevel(true);
-    EM_ASM(window.dispatchEvent(new CustomEvent("WebAssemblyLoaded")););
-  }
-
-  EMSCRIPTEN_KEEPALIVE
-  void SetArgument(const char* key, const char* value)
-  {
-    // This is called for each GET argument (cf. "app.js")
-    LOG(INFO) << "Received GET argument: [" << key << "] = [" << value << "]";
-    arguments_[key] = value;
-  }
-
-  EMSCRIPTEN_KEEPALIVE
-  void Initialize()
-  {
-    try
-    {
-      oracle_.SetOrthancRoot("..");
-      
-      loader_.reset(new OrthancStone::OrthancSeriesVolumeProgressiveLoader(ct_, oracle_, oracle_));
-    
-      widget1_.reset(new OrthancStone::VolumeSlicerWidget(broker_, "mycanvas1", OrthancStone::VolumeProjection_Axial));
-      {
-        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
-        style->SetLinearInterpolation(true);
-        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
-        widget1_->SetSlicer(0, loader_, *loader_, style.release());
-      }
-      widget1_->UpdateSize();
-
-      widget2_.reset(new OrthancStone::VolumeSlicerWidget(broker_, "mycanvas2", OrthancStone::VolumeProjection_Coronal));
-      {
-        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
-        style->SetLinearInterpolation(true);
-        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
-        widget2_->SetSlicer(0, loader_, *loader_, style.release());
-      }
-      widget2_->UpdateSize();
-
-      widget3_.reset(new OrthancStone::VolumeSlicerWidget(broker_, "mycanvas3", OrthancStone::VolumeProjection_Sagittal));
-      {
-        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
-        style->SetLinearInterpolation(true);
-        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
-        widget3_->SetSlicer(0, loader_, *loader_, style.release());
-      }
-      widget3_->UpdateSize();
-
-      emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnWindowResize); // DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 !!
-
-      emscripten_set_wheel_callback("#mycanvas1", widget1_.get(), false, OnMouseWheel);
-      emscripten_set_wheel_callback("#mycanvas2", widget2_.get(), false, OnMouseWheel);
-      emscripten_set_wheel_callback("#mycanvas3", widget3_.get(), false, OnMouseWheel);
-
-      emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyDown);
-      emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyUp);
-    
-      emscripten_request_animation_frame_loop(OnAnimationFrame, NULL);
-
-
-      std::string ct;
-      if (GetArgument(ct, "ct"))
-      {
-        //loader_->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");
-        loader_->LoadSeries(ct);
-      }
-      else
-      {
-        LOG(ERROR) << "No Orthanc identifier for the CT series was provided";
-      }
-    }
-    catch (Orthanc::OrthancException& e)
-    {
-      LOG(ERROR) << "Exception during Initialize(): " << e.What();
-    }
-  }
-}
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicMPR.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-<!doctype html>
-<html lang="en-us">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-    <!-- Disable pinch zoom on mobile devices -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <meta name="HandheldFriendly" content="true" />
-    
-    
-    <title>Stone of Orthanc</title>
-
-    <style>
-      html, body {
-      width: 100%;
-      height: 100%;
-      margin: 0px;
-      border: 0;
-      overflow: hidden; /*  Disable scrollbars */
-      display: block;  /* No floating content on sides */
-      }
-
-      #mycanvas1 {
-      position:absolute;
-      left:0%;
-      top:0%;
-      background-color: red;
-      width: 50%;
-      height: 100%;
-      }
-
-      #mycanvas2 {
-      position:absolute;
-      left:50%;
-      top:0%;
-      background-color: green;
-      width: 50%;
-      height: 50%;
-      }
-
-      #mycanvas3 {
-      position:absolute;
-      left:50%;
-      top:50%;
-      background-color: blue;
-      width: 50%;
-      height: 50%;
-      }
-    </style>
-  </head>
-  <body>
-    <canvas id="mycanvas1" oncontextmenu="return false;"></canvas>
-    <canvas id="mycanvas2" oncontextmenu="return false;"></canvas>
-    <canvas id="mycanvas3" oncontextmenu="return false;"></canvas>
-
-    <script type="text/javascript" src="app.js"></script>
-    <script type="text/javascript" async src="BasicMPR.js"></script>
-  </body>
-</html>
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicScene.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "dev.h"
-
-#include <emscripten.h>
-#include <emscripten/html5.h>
-
-// From Stone
-#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "../../Framework/StoneInitialization.h"
-
-// From Orthanc framework
-#include <Core/Images/Image.h>
-#include <Core/Logging.h>
-#include <Core/OrthancException.h>
-
-void PrepareScene(OrthancStone::Scene2D& scene)
-{
-  using namespace OrthancStone;
-
-  // Texture of 2x2 size
-  if (1)
-  {
-    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false);
-    
-    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
-    p[0] = 255;
-    p[1] = 0;
-    p[2] = 0;
-
-    p[3] = 0;
-    p[4] = 255;
-    p[5] = 0;
-
-    p = reinterpret_cast<uint8_t*>(i.GetRow(1));
-    p[0] = 0;
-    p[1] = 0;
-    p[2] = 255;
-
-    p[3] = 255;
-    p[4] = 0;
-    p[5] = 0;
-
-    scene.SetLayer(12, new ColorTextureSceneLayer(i));
-
-    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
-    l->SetOrigin(-3, 2);
-    l->SetPixelSpacing(1.5, 1);
-    l->SetAngle(20.0 / 180.0 * M_PI);
-    scene.SetLayer(14, l.release());
-  }
-
-  // Texture of 1x1 size
-  if (1)
-  {
-    Orthanc::Image i(Orthanc::PixelFormat_RGB24, 1, 1, false);
-    
-    uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0));
-    p[0] = 255;
-    p[1] = 0;
-    p[2] = 0;
-
-    std::unique_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i));
-    l->SetOrigin(-2, 1);
-    l->SetAngle(20.0 / 180.0 * M_PI);
-    scene.SetLayer(13, l.release());
-  }
-
-  // Some lines
-  if (1)
-  {
-    std::unique_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer);
-
-    layer->SetThickness(1);
-
-    PolylineSceneLayer::Chain chain;
-    chain.push_back(ScenePoint2D(0 - 0.5, 0 - 0.5));
-    chain.push_back(ScenePoint2D(0 - 0.5, 2 - 0.5));
-    chain.push_back(ScenePoint2D(2 - 0.5, 2 - 0.5));
-    chain.push_back(ScenePoint2D(2 - 0.5, 0 - 0.5));
-    layer->AddChain(chain, true, 255, 0, 0);
-
-    chain.clear();
-    chain.push_back(ScenePoint2D(-5, -5));
-    chain.push_back(ScenePoint2D(5, -5));
-    chain.push_back(ScenePoint2D(5, 5));
-    chain.push_back(ScenePoint2D(-5, 5));
-    layer->AddChain(chain, true, 0, 255, 0);
-
-    double dy = 1.01;
-    chain.clear();
-    chain.push_back(ScenePoint2D(-4, -4));
-    chain.push_back(ScenePoint2D(4, -4 + dy));
-    chain.push_back(ScenePoint2D(-4, -4 + 2.0 * dy));
-    chain.push_back(ScenePoint2D(4, 2));
-    layer->AddChain(chain, false, 0, 0, 255);
-
-    scene.SetLayer(50, layer.release());
-  }
-
-  // Some text
-  if (1)
-  {
-    std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
-    layer->SetText("Hello");
-    scene.SetLayer(100, layer.release());
-  }
-}
-
-
-std::unique_ptr<OrthancStone::WebAssemblyViewport>  viewport1_;
-std::unique_ptr<OrthancStone::WebAssemblyViewport>  viewport2_;
-std::unique_ptr<OrthancStone::WebAssemblyViewport>  viewport3_;
-boost::shared_ptr<OrthancStone::ViewportController>   controller1_;
-boost::shared_ptr<OrthancStone::ViewportController>   controller2_;
-boost::shared_ptr<OrthancStone::ViewportController>   controller3_;
-OrthancStone::MessageBroker broker_;
-
-
-EM_BOOL OnWindowResize(
-  int eventType, const EmscriptenUiEvent *uiEvent, void *userData)
-{
-  if (viewport1_.get() != NULL)
-  {
-    viewport1_->UpdateSize();
-  }
-  
-  if (viewport2_.get() != NULL)
-  {
-    viewport2_->UpdateSize();
-  }
-  
-  if (viewport3_.get() != NULL)
-  {
-    viewport3_->UpdateSize();
-  }
-  
-  return true;
-}
-
-extern "C"
-{
-  int main(int argc, char const *argv[]) 
-  {
-    OrthancStone::StoneInitialize();
-    // Orthanc::Logging::EnableInfoLevel(true);
-    // Orthanc::Logging::EnableTraceLevel(true);
-    EM_ASM(window.dispatchEvent(new CustomEvent("WebAssemblyLoaded")););
-  }
-
-  EMSCRIPTEN_KEEPALIVE
-  void Initialize()
-  {
-    viewport1_.reset(new OrthancStone::WebAssemblyViewport("mycanvas1"));
-    PrepareScene(viewport1_->GetScene());
-    viewport1_->UpdateSize();
-
-    viewport2_.reset(new OrthancStone::WebAssemblyViewport("mycanvas2"));
-    PrepareScene(viewport2_->GetScene());
-    viewport2_->UpdateSize();
-
-    viewport3_.reset(new OrthancStone::WebAssemblyViewport("mycanvas3"));
-    PrepareScene(viewport3_->GetScene());
-    viewport3_->UpdateSize();
-
-    viewport1_->GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, 
-                                        FONT_SIZE, Orthanc::Encoding_Latin1);
-    viewport2_->GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, 
-                                        FONT_SIZE, Orthanc::Encoding_Latin1);
-    viewport3_->GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, 
-                                        FONT_SIZE, Orthanc::Encoding_Latin1);
-
-    controller1_.reset(new OrthancStone::ViewportController(boost::make_shared<OrthancStone::UndoStack>(), broker_, *viewport1_));
-    controller2_.reset(new OrthancStone::ViewportController(boost::make_shared<OrthancStone::UndoStack>(), broker_, *viewport2_));
-    controller3_.reset(new OrthancStone::ViewportController(boost::make_shared<OrthancStone::UndoStack>(), broker_, *viewport3_));
-
-    controller1_->FitContent(viewport1_->GetCanvasWidth(), viewport1_->GetCanvasHeight());
-    controller2_->FitContent(viewport2_->GetCanvasWidth(), viewport2_->GetCanvasHeight());
-    controller3_->FitContent(viewport3_->GetCanvasWidth(), viewport3_->GetCanvasHeight());
-
-    viewport1_->Refresh();
-    viewport2_->Refresh();
-    viewport3_->Refresh();
-
-    SetupEvents("mycanvas1", controller1_);
-    SetupEvents("mycanvas2", controller2_);
-    SetupEvents("mycanvas3", controller3_);
-
-    emscripten_set_resize_callback("#window", NULL, false, OnWindowResize);
-  }
-}
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/BasicScene.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-<!doctype html>
-<html lang="en-us">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-    <!-- Disable pinch zoom on mobile devices -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <meta name="HandheldFriendly" content="true" />
-    
-    
-    <title>Stone of Orthanc</title>
-
-    <style>
-      html, body {
-      width: 100%;
-      height: 100%;
-      margin: 0px;
-      border: 0;
-      overflow: hidden; /*  Disable scrollbars */
-      display: block;  /* No floating content on sides */
-      }
-
-      #mycanvas1 {
-      position:absolute;
-      left:0%;
-      top:0%;
-      background-color: red;
-      width: 50%;
-      height: 100%;
-      }
-
-      #mycanvas2 {
-      position:absolute;
-      left:50%;
-      top:0%;
-      background-color: green;
-      width: 50%;
-      height: 50%;
-      }
-
-      #mycanvas3 {
-      position:absolute;
-      left:50%;
-      top:50%;
-      background-color: blue;
-      width: 50%;
-      height: 50%;
-      }
-    </style>
-  </head>
-  <body>
-    <canvas id="mycanvas1" oncontextmenu="return false;"></canvas>
-    <canvas id="mycanvas2" oncontextmenu="return false;"></canvas>
-    <canvas id="mycanvas3" oncontextmenu="return false;"></canvas>
-
-    <script type="text/javascript">
-      if (!('WebAssembly' in window)) {
-      alert('Sorry, your browser does not support WebAssembly :(');
-      } else {
-      window.addEventListener('WebAssemblyLoaded', function() {
-      Module.ccall('Initialize', null, null, null);
-      });
-      }
-    </script>
-
-    <script type="text/javascript" async src="BasicScene.js"></script>
-  </body>
-</html>
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-
-
-#####################################################################
-## Configuration of the Emscripten compiler for WebAssembly target
-#####################################################################
-
-set(WASM_FLAGS "-s WASM=1 -s FETCH=1")
-
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ERROR_ON_UNDEFINED_SYMBOLS=1")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0")
-#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXIT_RUNTIME=1")
-
-#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1")
-
-
-#####################################################################
-## Configuration of the Orthanc framework
-#####################################################################
-
-# This CMake file defines the "ORTHANC_STONE_VERSION" macro, so it
-# must be the first inclusion
-include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/Version.cmake)
-
-if (ORTHANC_STONE_VERSION STREQUAL "mainline")
-  set(ORTHANC_FRAMEWORK_VERSION "mainline")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
-else()
-  set(ORTHANC_FRAMEWORK_VERSION "1.5.7")
-  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
-endif()
-
-set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")")
-set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"")
-set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"")
-
-
-#####################################################################
-## Configuration of the Stone framework
-#####################################################################
-
-include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneParameters.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
-
-DownloadPackage(
-  "a24b8136b8f3bb93f166baf97d9328de"
-  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
-  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
-
-set(ORTHANC_STONE_APPLICATION_RESOURCES
-  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
-  )
-
-SET(ENABLE_GOOGLE_TEST OFF)
-SET(ENABLE_LOCALE ON)
-SET(ORTHANC_SANDBOXED ON)
-SET(ENABLE_WASM ON)
-
-include(${CMAKE_SOURCE_DIR}/../../Resources/CMake/OrthancStoneConfiguration.cmake)
-
-add_definitions(
-  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
-  )
-
-
-#####################################################################
-## Build the samples
-#####################################################################
-
-add_library(OrthancStone STATIC
-  ${ORTHANC_STONE_SOURCES}
-  )
-
-
-if (ON)
-  add_executable(BasicScene
-    BasicScene.cpp
-    #${CMAKE_CURRENT_LIST_DIR}/../Shared/SharedBasicScene.h
-    ${CMAKE_CURRENT_LIST_DIR}/../Shared/SharedBasicScene.cpp
-    )
-
-  target_link_libraries(BasicScene OrthancStone)
-
-  install(
-    TARGETS BasicScene
-    RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}
-    )
-endif()
-
-
-if (ON)
-  add_executable(BasicMPR
-    BasicMPR.cpp
-    )
-
-  target_link_libraries(BasicMPR OrthancStone)
-
-  install(
-    TARGETS BasicMPR
-    RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}
-    )
-endif()
-  
-
-install(
-  FILES
-  ${CMAKE_CURRENT_BINARY_DIR}/BasicMPR.wasm
-  ${CMAKE_CURRENT_BINARY_DIR}/BasicScene.wasm
-  ${CMAKE_SOURCE_DIR}/BasicMPR.html
-  ${CMAKE_SOURCE_DIR}/BasicScene.html
-  ${CMAKE_SOURCE_DIR}/Configuration.json
-  ${CMAKE_SOURCE_DIR}/app.js
-  ${CMAKE_SOURCE_DIR}/index.html
-  DESTINATION ${CMAKE_INSTALL_PREFIX}
-  )
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/Configuration.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-{
-  "Plugins": [
-    "/usr/local/share/orthanc/plugins/libOrthancWebViewer.so",
-    "/usr/local/share/orthanc/plugins/libServeFolders.so"
-  ],
-  "StorageDirectory" : "/var/lib/orthanc/db",
-  "IndexDirectory" : "/var/lib/orthanc/db",
-  "RemoteAccessAllowed" : true,
-  "AuthenticationEnabled" : false,
-  "ServeFolders" : {
-    "AllowCache" : false,
-    "GenerateETag" : true,
-    "Folders" : {
-      "/stone" : "/root/stone"
-    }
-  }
-}
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/ConfigurationLocalSJO.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-{
-  "Plugins": [
-    "/home/jodogne/Subversion/orthanc-webviewer/r/libOrthancWebViewer.so",
-    "/home/jodogne/Subversion/orthanc/r/libServeFolders.so"
-  ],
-  "StorageDirectory" : "/tmp/orthanc-db",
-  "IndexDirectory" : "/tmp/orthanc-db",
-  "RemoteAccessAllowed" : true,
-  "AuthenticationEnabled" : false,
-  "ServeFolders" : {
-    "AllowCache" : false,
-    "GenerateETag" : true,
-    "Folders" : {
-      "/stone" : "/tmp/stone"
-    }
-  },
-  "WebViewer" : {
-    "CachePath" : "/tmp/orthanc-db/WebViewerCache"
-  }
-}
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/NOTES.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-Docker SJO
-==========
-
-$ source ~/Downloads/emsdk/emsdk_env.sh
-$ cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DALLOW_DOWNLOADS=ON .. -DCMAKE_INSTALL_PREFIX=/tmp/stone
-$ ninja install
-$ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/stone:/root/stone:ro -v /tmp/stone-db/:/var/lib/orthanc/db/ jodogne/orthanc-plugins:latest /root/stone/Configuration.json --verbose
-
-WARNING: This won't work using "orthanc-plugins:1.5.6", as support for
-PAM is mandatatory in "/instances/.../image-uint16".
-
-
-Docker BGO
-==========
-
-On Ubuntu WSL
--------------
-. ~/apps/emsdk/emsdk_env.sh
-cd /mnt/c/osi/dev/
-mkdir -p build_stone_newsamples_wasm_wsl
-mkdir -p build_install_stone_newsamples_wasm_wsl
-cd build_stone_newsamples_wasm_wsl
-cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DALLOW_DOWNLOADS=ON /mnt/c/osi/dev/orthanc-stone/Samples/WebAssembly -DCMAKE_INSTALL_PREFIX=/mnt/c/osi/dev/build_install_stone_newsamples_wasm_wsl
-ninja install
-
-Then, on Windows
------------------
-docker run -p 4242:4242 -p 8042:8042 --rm -v "C:/osi/dev/build_install_stone_newsamples_wasm_wsl:/root/stone:ro" jodogne/orthanc-plugins:1.5.6 /root/stone/Configuration.json --verbose
-
-# WAIT A COUPLE OF SECS
-# if the archive has NOT already been unzipped, unzip it
-# upload dicom files to running orthanc
-
-cd C:\osi\dev\twiga-orthanc-viewer\demo\dicomfiles
-if (-not (test-path RTVIEWER-c8febcc6-eb9e22a4-130f208c-e0a6a4cd-4d432c57)) { unzip RTVIEWER-c8febcc6-eb9e22a4-130f208c-e0a6a4cd-4d432c57.zip}
-ImportDicomFiles.ps1 127.0.0.1 8042 .\RTVIEWER-c8febcc6-eb9e22a4-130f208c-e0a6a4cd-4d432c57\
-
---> localhost:8042 --> Plugins --> serve-folders --> stone --> ...
-
-Local BGO
-==========
-
-. ~/apps/emsdk/emsdk_env.sh
-cd /mnt/c/osi/dev/
-mkdir -p build_stone_newsamples_wasm_wsl
-mkdir -p build_install_stone_newsamples_wasm_wsl
-cd build_stone_newsamples_wasm_wsl
-cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DALLOW_DOWNLOADS=ON /mnt/c/osi/dev/orthanc-stone/Samples/WebAssembly -DCMAKE_INSTALL_PREFIX=/mnt/c/osi/dev/build_install_stone_newsamples_wasm_wsl
-
-
-
-TODO: Orthanc.exe 
-
-
-Local SJO
-==========
-
-$ source ~/Downloads/emsdk/emsdk_env.sh
-$ cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DALLOW_DOWNLOADS=ON .. -DCMAKE_INSTALL_PREFIX=/tmp/stone
-$ ninja install
-
-$ make -C ~/Subversion/orthanc/r -j4
-$ make -C ~/Subversion/orthanc-webviewer/r -j4
-$ ~/Subversion/orthanc/r/Orthanc ../ConfigurationLocalSJO.json
-
-
-Local AM
-========
-
-. ~/apps/emsdk/emsdk_env.sh
-cd /mnt/c/o/
-mkdir -p build_stone_newsamples_wasm_wsl
-mkdir -p build_install_stone_newsamples_wasm_wsl
-cd build_stone_newsamples_wasm_wsl
-cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=${EMSDK}/fastcomp/emscripten/cmake/Modules/Platform/Emscripten.cmake -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT=/mnt/c/o/orthanc/ -DCMAKE_BUILD_TYPE=Release -DALLOW_DOWNLOADS=ON /mnt/c/o/orthanc-stone/Samples/WebAssembly -DCMAKE_INSTALL_PREFIX=/mnt/c/o/build_install_stone_newsamples_wasm_wsl
-ninja
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/app.js	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/**
- * This is a generic bootstrap code that is shared by all the Stone
- * sample applications.
- **/
-
-// Check support for WebAssembly
-if (!('WebAssembly' in window)) {
-  alert('Sorry, your browser does not support WebAssembly :(');
-} else {
-
-  // Wait for the module to be loaded (the event "WebAssemblyLoaded"
-  // must be emitted by the "main" function)
-  window.addEventListener('WebAssemblyLoaded', function() {
-
-    // Loop over the GET arguments
-    var parameters = window.location.search.substr(1);
-    if (parameters != null && parameters != '') {
-      var tokens = parameters.split('&');
-      for (var i = 0; i < tokens.length; i++) {
-        var arg = tokens[i].split('=');
-        if (arg.length == 2) {
-
-          // Send each GET argument to WebAssembly
-          Module.ccall('SetArgument', null, [ 'string', 'string' ],
-                       [ arg[0], decodeURIComponent(arg[1]) ]);
-        }
-      }
-    }
-
-    // Inform the WebAssembly module that it can start
-    Module.ccall('Initialize', null, null, null);
-  });
-}
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/dev.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Viewport/WebAssemblyViewport.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/Scene2D/PanSceneTracker.h"
-#include "../../Framework/Scene2D/RotateSceneTracker.h"
-#include "../../Framework/Scene2D/ZoomSceneTracker.h"
-#include "../../Framework/Scene2DViewport/UndoStack.h"
-#include "../../Framework/Scene2DViewport/ViewportController.h"
-
-#include <Core/OrthancException.h>
-
-#include <emscripten/html5.h>
-#include <boost/make_shared.hpp>
-
-static const unsigned int FONT_SIZE = 32;
-
-namespace OrthancStone
-{
-  class ActiveTracker : public boost::noncopyable
-  {
-  private:
-    boost::shared_ptr<IFlexiblePointerTracker> tracker_;
-    std::string                             canvasIdentifier_;
-    bool                                    insideCanvas_;
-    
-  public:
-    ActiveTracker(const boost::shared_ptr<IFlexiblePointerTracker>& tracker,
-                  const std::string& canvasId) :
-      tracker_(tracker),
-      canvasIdentifier_(canvasId),
-      insideCanvas_(true)
-    {
-      if (tracker_.get() == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
-      }
-    }
-
-    bool IsAlive() const
-    {
-      return tracker_->IsAlive();
-    }
-
-    void PointerMove(const PointerEvent& event)
-    {
-      tracker_->PointerMove(event);
-    }
-
-    void PointerUp(const PointerEvent& event)
-    {
-      tracker_->PointerUp(event);
-    }
-  };
-}
-
-static OrthancStone::PointerEvent* ConvertMouseEvent(
-  const EmscriptenMouseEvent&        source,
-  OrthancStone::IViewport& viewport)
-{
-  std::unique_ptr<OrthancStone::PointerEvent> target(
-    new OrthancStone::PointerEvent);
-
-  target->AddPosition(viewport.GetPixelCenterCoordinates(
-                        source.targetX, source.targetY));
-  target->SetAltModifier(source.altKey);
-  target->SetControlModifier(source.ctrlKey);
-  target->SetShiftModifier(source.shiftKey);
-
-  return target.release();
-}
-
-std::unique_ptr<OrthancStone::ActiveTracker> tracker_;
-
-EM_BOOL OnMouseEvent(int eventType, 
-                     const EmscriptenMouseEvent *mouseEvent, 
-                     void *userData)
-{
-  if (mouseEvent != NULL &&
-      userData != NULL)
-  {
-    boost::shared_ptr<OrthancStone::ViewportController>& controller = 
-      *reinterpret_cast<boost::shared_ptr<OrthancStone::ViewportController>*>(userData);
-
-    switch (eventType)
-    {
-      case EMSCRIPTEN_EVENT_CLICK:
-      {
-        static unsigned int count = 0;
-        char buf[64];
-        sprintf(buf, "click %d", count++);
-
-        std::unique_ptr<OrthancStone::TextSceneLayer> layer(new OrthancStone::TextSceneLayer);
-        layer->SetText(buf);
-        controller->GetViewport().GetScene().SetLayer(100, layer.release());
-        controller->GetViewport().Refresh();
-        break;
-      }
-
-      case EMSCRIPTEN_EVENT_MOUSEDOWN:
-      {
-        boost::shared_ptr<OrthancStone::IFlexiblePointerTracker> t;
-
-        {
-          std::unique_ptr<OrthancStone::PointerEvent> event(
-            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
-
-          switch (mouseEvent->button)
-          {
-            case 0:  // Left button
-              emscripten_console_log("Creating RotateSceneTracker");
-              t.reset(new OrthancStone::RotateSceneTracker(
-                        controller, *event));
-              break;
-
-            case 1:  // Middle button
-              emscripten_console_log("Creating PanSceneTracker");
-              LOG(INFO) << "Creating PanSceneTracker" ;
-              t.reset(new OrthancStone::PanSceneTracker(
-                        controller, *event));
-              break;
-
-            case 2:  // Right button
-              emscripten_console_log("Creating ZoomSceneTracker");
-              t.reset(new OrthancStone::ZoomSceneTracker(
-                        controller, *event, controller->GetViewport().GetCanvasWidth()));
-              break;
-
-            default:
-              break;
-          }
-        }
-
-        if (t.get() != NULL)
-        {
-          tracker_.reset(
-            new OrthancStone::ActiveTracker(t, controller->GetViewport().GetCanvasIdentifier()));
-          controller->GetViewport().Refresh();
-        }
-
-        break;
-      }
-
-      case EMSCRIPTEN_EVENT_MOUSEMOVE:
-        if (tracker_.get() != NULL)
-        {
-          std::unique_ptr<OrthancStone::PointerEvent> event(
-            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
-          tracker_->PointerMove(*event);
-          controller->GetViewport().Refresh();
-        }
-        break;
-
-      case EMSCRIPTEN_EVENT_MOUSEUP:
-        if (tracker_.get() != NULL)
-        {
-          std::unique_ptr<OrthancStone::PointerEvent> event(
-            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
-          tracker_->PointerUp(*event);
-          controller->GetViewport().Refresh();
-          if (!tracker_->IsAlive())
-            tracker_.reset();
-        }
-        break;
-
-      default:
-        break;
-    }
-  }
-
-  return true;
-}
-
-
-void SetupEvents(const std::string& canvas,
-                 boost::shared_ptr<OrthancStone::ViewportController>& controller)
-{
-  emscripten_set_mousedown_callback(canvas.c_str(), &controller, false, OnMouseEvent);
-  emscripten_set_mousemove_callback(canvas.c_str(), &controller, false, OnMouseEvent);
-  emscripten_set_mouseup_callback(canvas.c_str(), &controller, false, OnMouseEvent);
-}
--- a/Resources/Graveyard/Deprecated/Samples/WebAssembly/index.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<!doctype html>
-<html lang="en-us">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-    <title>Stone of Orthanc</title>
-  </head>
-  <body>
-    <h1>Available samples</h1>
-    <ul>
-      <li><a href="BasicScene.html">Basic scene</a></li>
-      <li><a href="BasicMPR.html">Basic MPR display</a></li>
-    </ul>
-  </body>
-</html>
--- a/Resources/Graveyard/Messaging/CurlOrthancConnection.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "CurlOrthancConnection.h"
-
-#if ORTHANC_ENABLE_CURL == 1
-
-#include "../../Resources/Orthanc/Core/HttpClient.h"
-#include "../../Resources/Orthanc/Core/OrthancException.h"
-
-namespace OrthancStone
-{
-  void CurlOrthancConnection::RestApiGet(std::string& result,
-                                         const std::string& uri)
-  {
-    /**
-     * TODO: This function sometimes crashes if compiled with
-     * MinGW-W64 (32 bit) in Release mode, on Windows XP. Introducing
-     * a mutex here fixes the issue. Not sure of what is the
-     * culprit. Maybe a bug in a old version of MinGW?
-     **/
-
-    Orthanc::HttpClient client(parameters_, uri);
-
-    // Don't follow 3xx HTTP (avoid redirections to "unsupported.png" in Orthanc)
-    client.SetRedirectionFollowed(false);  
-   
-    if (!client.Apply(result))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource);
-    }
-  }
-
-
-  void CurlOrthancConnection::RestApiPost(std::string& result,
-                                          const std::string& uri,
-                                          const std::string& body)
-  {
-    Orthanc::HttpClient client(parameters_, uri);
-
-    // Don't follow 3xx HTTP (avoid redirections to "unsupported.png" in Orthanc)
-    client.SetRedirectionFollowed(false);  
-
-    client.SetBody(body);
-    client.SetMethod(Orthanc::HttpMethod_Post);
-   
-    if (!client.Apply(result))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource);
-    }
-  }
-}
-
-#endif
--- a/Resources/Graveyard/Messaging/CurlOrthancConnection.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "IOrthancConnection.h"
-
-#if ORTHANC_ENABLE_CURL == 1
-
-#include "../../Resources/Orthanc/Core/WebServiceParameters.h"
-
-namespace OrthancStone
-{
-  class CurlOrthancConnection : public IOrthancConnection
-  {
-  private:
-    Orthanc::WebServiceParameters  parameters_;
-
-  public:
-    CurlOrthancConnection(const Orthanc::WebServiceParameters& parameters) :
-      parameters_(parameters)
-    {
-    }
-
-    const Orthanc::WebServiceParameters& GetParameters() const
-    {
-      return parameters_;
-    }
-
-    virtual void RestApiGet(std::string& result,
-                            const std::string& uri);
-
-    virtual void RestApiPost(std::string& result,
-                             const std::string& uri,
-                             const std::string& body);
-  };
-}
-
-#endif
--- a/Resources/Graveyard/Messaging/IOrthancConnection.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Toolbox/IThreadSafety.h"
-
-#include <string>
-
-namespace OrthancStone
-{
-  // Derived classes must be thread-safe
-  class IOrthancConnection : public IThreadSafe
-  {
-  public:
-    virtual void RestApiGet(std::string& result,
-                            const std::string& uri) = 0;
-
-    virtual void RestApiPost(std::string& result,
-                             const std::string& uri,
-                             const std::string& body) = 0;
-  };
-}
--- a/Resources/Graveyard/ReferenceLineFactory.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "ReferenceLineFactory.h"
-
-#include "LineLayerRenderer.h"
-
-namespace OrthancStone
-{
-  ReferenceLineFactory::ReferenceLineFactory(SliceViewerWidget& owner,
-                                             SliceViewerWidget& sibling) :
-    owner_(owner),
-    sibling_(sibling),
-    hasLayerIndex_(false)
-  {
-    style_.SetColor(0, 255, 0);
-    slice_ = sibling.GetSlice();
-    sibling_.Register(*this);
-  }
-
-
-  void ReferenceLineFactory::NotifySliceContentChange(const SliceViewerWidget& source,
-                                               const SliceGeometry& slice)
-  {
-    if (&source == &sibling_)
-    {
-      SetSlice(slice);
-    }
-  }
-
-
-  void ReferenceLineFactory::SetLayerIndex(size_t layerIndex)
-  {
-    hasLayerIndex_ = true;
-    layerIndex_ = layerIndex;
-  }
-
-
-  void ReferenceLineFactory::SetStyle(const RenderStyle& style)
-  {
-    style_ = style;
-  }
-
-
-  RenderStyle ReferenceLineFactory::GetRenderStyle()
-  {
-    return style_;
-  }
-
-
-  void ReferenceLineFactory::SetSlice(const SliceGeometry& slice)
-  {
-    slice_ = slice;
-
-    if (hasLayerIndex_)
-    {
-      owner_.InvalidateLayer(layerIndex_);
-    }
-  }
-
-
-  ILayerRenderer* ReferenceLineFactory::CreateLayerRenderer(const SliceGeometry& viewportSlice)
-  {
-    Vector p, d;
-
-    // Compute the line of intersection between the two slices
-    if (!GeometryToolbox::IntersectTwoPlanes(p, d, 
-                                             slice_.GetOrigin(), slice_.GetNormal(),
-                                             viewportSlice.GetOrigin(), viewportSlice.GetNormal()))
-    {
-      // The two slice are parallel, don't try and display the intersection
-      return NULL;
-    }
-
-    double x1, y1, x2, y2;
-    viewportSlice.ProjectPoint(x1, y1, p);
-    viewportSlice.ProjectPoint(x2, y2, p + 1000.0 * d);
-
-    double sx1, sy1, sx2, sy2;
-    owner_.GetView().GetSceneExtent(sx1, sy1, sx2, sy2);
-        
-    if (GeometryToolbox::ClipLineToRectangle(x1, y1, x2, y2, 
-                                             x1, y1, x2, y2,
-                                             sx1, sy1, sx2, sy2))
-    {
-      std::unique_ptr<ILayerRenderer> layer(new LineLayerRenderer(x1, y1, x2, y2));
-      layer->SetLayerStyle(style_);
-      return layer.release();
-    }
-    else
-    {
-      // Parallel slices
-      return NULL;
-    }
-  }
-
-
-  ISliceableVolume& ReferenceLineFactory::GetSourceVolume() const
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-  }
-
-
-  void ReferenceLineFactory::Configure(SliceViewerWidget& a,
-                                       SliceViewerWidget& b)
-  {
-    {
-      size_t layerIndex;
-      ILayerRendererFactory& factory = a.AddLayer(layerIndex, new ReferenceLineFactory(a, b));
-      dynamic_cast<ReferenceLineFactory&>(factory).SetLayerIndex(layerIndex);
-    }
-
-    {
-      size_t layerIndex;
-      ILayerRendererFactory& factory = b.AddLayer(layerIndex, new ReferenceLineFactory(b, a));
-      dynamic_cast<ReferenceLineFactory&>(factory).SetLayerIndex(layerIndex);
-    }
-  }
-}
--- a/Resources/Graveyard/ReferenceLineFactory.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../Widgets/SliceViewerWidget.h"
-
-namespace OrthancStone
-{
-  class ReferenceLineFactory : 
-    public ILayerRendererFactory,
-    public SliceViewerWidget::ISliceObserver
-  {
-  private:
-    SliceViewerWidget&   owner_;
-    SliceViewerWidget&   sibling_;
-    SliceGeometry        slice_;
-    RenderStyle          style_;
-    bool                 hasLayerIndex_;
-    size_t               layerIndex_;
-
-      
-  public:
-    ReferenceLineFactory(SliceViewerWidget& owner,
-                         SliceViewerWidget& sibling);
-
-    virtual void NotifySliceContentChange(const SliceViewerWidget& source,
-                                   const SliceGeometry& slice);
-
-    void SetLayerIndex(size_t layerIndex);
-
-    void SetStyle(const RenderStyle& style);
-
-    RenderStyle GetRenderStyle();
-
-    void SetSlice(const SliceGeometry& slice);
-
-    virtual bool GetExtent(double& x1,
-                           double& y1,
-                           double& x2,
-                           double& y2,
-                           const SliceGeometry& viewportSlice)
-    {
-      return false;
-    }
-
-    virtual ILayerRenderer* CreateLayerRenderer(const SliceGeometry& viewportSlice);
-
-    virtual bool HasSourceVolume() const
-    {
-      return false;
-    }
-
-    virtual ISliceableVolume& GetSourceVolume() const;
-
-    static void Configure(SliceViewerWidget& a,
-                          SliceViewerWidget& b);
-  };
-}
--- a/Resources/Graveyard/Threading/BinarySemaphore.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "BinarySemaphore.h"
-
-namespace OrthancStone
-{
-  BinarySemaphore::BinarySemaphore() : 
-    proceed_(false)
-  {
-  }
-
-  void BinarySemaphore::Signal()
-  {
-    //boost::mutex::scoped_lock lock(mutex_);
-
-    proceed_ = true;
-    condition_.notify_one(); 
-  }
-
-  void BinarySemaphore::Wait()
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-
-    while (!proceed_)
-    {
-      condition_.wait(lock);
-    }
-
-    proceed_ = false;
-  }
-}
--- a/Resources/Graveyard/Threading/BinarySemaphore.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/thread/mutex.hpp>
-#include <boost/thread/condition.hpp>
-
-namespace OrthancStone
-{
-  class BinarySemaphore : public boost::noncopyable
-  {
-  private:
-    bool proceed_;
-    boost::mutex mutex_;
-    boost::condition_variable condition_;
-
-  public:
-    explicit BinarySemaphore();
-
-    void Signal();
-
-    void Wait();
-  };
-}
--- a/Resources/Graveyard/Threading/IThreadSafety.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/noncopyable.hpp>
-
-namespace OrthancStone
-{
-  /**
-   * Dummy interface to explicitely tag the interfaces whose derived
-   * class must be thread-safe. The different methods of such classes
-   * might be simlultaneously invoked by several threads, and should
-   * be properly protected by mutexes.
-   **/
-  class IThreadSafe : public boost::noncopyable
-  {
-  public:
-    virtual ~IThreadSafe()
-    {
-    }
-  };
-
-
-  /**
-   * Dummy interface to explicitely tag the interfaces that are NOT
-   * expected to be thread-safe. The Orthanc Stone framework ensures
-   * that at most one method of such classes will be invoked at a
-   * given time. Such classes are automatically protected by the
-   * Orthanc Stone framework wherever required.
-   **/
-  class IThreadUnsafe : public boost::noncopyable
-  {
-  public:
-    virtual ~IThreadUnsafe()
-    {
-    }
-  };
-}
--- a/Resources/Graveyard/Threading/SdlBuffering.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SdlBuffering.h"
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include "../../Resources/Orthanc/Core/Logging.h"
-#include "../../Resources/Orthanc/Core/OrthancException.h"
-
-namespace OrthancStone
-{
-  SdlBuffering::SdlBuffering() :
-    sdlSurface_(NULL),
-    pendingFrame_(false)
-  {
-  }
-
-
-  SdlBuffering::~SdlBuffering()
-  {
-    if (sdlSurface_)
-    {
-      SDL_FreeSurface(sdlSurface_);
-    }
-  }
-
-
-  void SdlBuffering::SetSize(unsigned int width,
-                             unsigned int height,
-                             IViewport& viewport)
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-
-    viewport.SetSize(width, height);
-
-    if (offscreenSurface_.get() == NULL ||
-        offscreenSurface_->GetWidth() != width ||
-        offscreenSurface_->GetHeight() != height)
-    {
-      offscreenSurface_.reset(new CairoSurface(width, height));
-    }
-
-    if (onscreenSurface_.get() == NULL ||
-        onscreenSurface_->GetWidth() != width ||
-        onscreenSurface_->GetHeight() != height)
-    {
-      onscreenSurface_.reset(new CairoSurface(width, height));
-
-      // TODO Big endian?
-      static const uint32_t rmask = 0x00ff0000;
-      static const uint32_t gmask = 0x0000ff00;
-      static const uint32_t bmask = 0x000000ff;
-
-      if (sdlSurface_)
-      {
-        SDL_FreeSurface(sdlSurface_);
-      }
-
-      sdlSurface_ = SDL_CreateRGBSurfaceFrom(onscreenSurface_->GetBuffer(), width, height, 32,
-                                             onscreenSurface_->GetPitch(), rmask, gmask, bmask, 0);
-      if (!sdlSurface_)
-      {
-        LOG(ERROR) << "Cannot create a SDL surface from a Cairo surface";
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }    
-    }
-
-    pendingFrame_ = false;
-  }
-
-
-  bool SdlBuffering::RenderOffscreen(IViewport& viewport)
-  {
-    boost::mutex::scoped_lock lock(mutex_);
-
-    if (offscreenSurface_.get() == NULL)
-    {
-      return false;
-    }
-
-    Orthanc::ImageAccessor target = offscreenSurface_->GetAccessor();
-
-    if (viewport.Render(target) &&
-        !pendingFrame_)
-    {
-      pendingFrame_ = true;
-      return true;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-
-  void SdlBuffering::SwapToScreen(SdlWindow& window)
-  {
-    if (!pendingFrame_ ||
-        offscreenSurface_.get() == NULL ||
-        onscreenSurface_.get() == NULL)
-    {
-      return;
-    }
-
-    {
-      boost::mutex::scoped_lock lock(mutex_);
-      onscreenSurface_->Copy(*offscreenSurface_);
-    }
-    
-    window.Render(sdlSurface_);
-    pendingFrame_ = false;
-  }
-}
-
-#endif
--- a/Resources/Graveyard/Threading/SdlBuffering.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if ORTHANC_ENABLE_SDL == 1
-
-#include "SdlWindow.h"
-#include "../../Framework/Viewport/CairoSurface.h"
-#include "../../Framework/Viewport/IViewport.h"
-
-#include <boost/thread/mutex.hpp>
-
-namespace OrthancStone
-{
-  class SdlBuffering : public boost::noncopyable
-  {
-  private:
-    boost::mutex                 mutex_;
-    std::unique_ptr<CairoSurface>  offscreenSurface_;
-    std::unique_ptr<CairoSurface>  onscreenSurface_;
-    SDL_Surface*                 sdlSurface_;
-    bool                         pendingFrame_;
-
-  public:
-    SdlBuffering();
-
-    ~SdlBuffering();
-
-    void SetSize(unsigned int width,
-                 unsigned int height,
-                 IViewport& viewport);
-
-    // Returns "true" if a new refresh of the display should be
-    // triggered afterwards
-    bool RenderOffscreen(IViewport& viewport);
-
-    void SwapToScreen(SdlWindow& window);
-  };
-}
-
-#endif
--- a/Resources/Graveyard/Threading/SharedValue.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <boost/noncopyable.hpp>
-#include <boost/thread/mutex.hpp>
-
-namespace OrthancStone
-{
-  // A value that is protected by a mutex, in order to be shared by
-  // multiple threads
-  template <typename T>
-  class SharedValue : public boost::noncopyable
-  {
-  private:
-    boost::mutex   mutex_;
-    T              value_;
-    
-  public:
-    class Locker : public boost::noncopyable
-    {
-    private:
-      boost::mutex::scoped_lock  lock_;
-      T&                         value_;
-
-    public:
-      Locker(SharedValue& shared) :
-        lock_(shared.mutex_),
-        value_(shared.value_)
-      {
-      }
-
-      T& GetValue() const
-      {
-        return value_;
-      }
-    };
-  };
-}
--- a/Resources/Graveyard/Toolbox/DicomDataset.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,304 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "DicomDataset.h"
-
-#include "../../Resources/Orthanc/Core/OrthancException.h"
-#include "../../Resources/Orthanc/Core/Logging.h"
-#include "../../Resources/Orthanc/Core/Toolbox.h"
-
-#include <boost/lexical_cast.hpp>
-#include <json/value.h>
-#include <json/reader.h>
-
-namespace OrthancStone
-{
-  static uint16_t GetCharValue(char c)
-  {
-    if (c >= '0' && c <= '9')
-      return c - '0';
-    else if (c >= 'a' && c <= 'f')
-      return c - 'a' + 10;
-    else if (c >= 'A' && c <= 'F')
-      return c - 'A' + 10;
-    else
-      return 0;
-  }
-
-
-  static uint16_t GetHexadecimalValue(const char* c)
-  {
-    return ((GetCharValue(c[0]) << 12) + 
-            (GetCharValue(c[1]) << 8) + 
-            (GetCharValue(c[2]) << 4) + 
-            GetCharValue(c[3]));
-  }
-
-
-  static DicomDataset::Tag ParseTag(const std::string& tag)
-  {
-    if (tag.size() == 9 &&
-        isxdigit(tag[0]) &&
-        isxdigit(tag[1]) &&
-        isxdigit(tag[2]) &&
-        isxdigit(tag[3]) &&
-        (tag[4] == '-' || tag[4] == ',') &&
-        isxdigit(tag[5]) &&
-        isxdigit(tag[6]) &&
-        isxdigit(tag[7]) &&
-        isxdigit(tag[8]))        
-    {
-      uint16_t group = GetHexadecimalValue(tag.c_str());
-      uint16_t element = GetHexadecimalValue(tag.c_str() + 5);
-      return std::make_pair(group, element);
-    }
-    else if (tag.size() == 8 &&
-             isxdigit(tag[0]) &&
-             isxdigit(tag[1]) &&
-             isxdigit(tag[2]) &&
-             isxdigit(tag[3]) &&
-             isxdigit(tag[4]) &&
-             isxdigit(tag[5]) &&
-             isxdigit(tag[6]) &&
-             isxdigit(tag[7]))        
-    {
-      uint16_t group = GetHexadecimalValue(tag.c_str());
-      uint16_t element = GetHexadecimalValue(tag.c_str() + 4);
-      return std::make_pair(group, element);
-    }
-    else
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
-    }
-  }
-
-  void DicomDataset::Parse(const std::string& content)
-  {
-    Json::Value json;
-    Json::Reader reader;
-    if (!reader.parse(content, json))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
-    }
-
-    Parse(json);
-  }
-
-
-  void DicomDataset::Parse(const Json::Value& content)
-  {
-    if (content.type() != Json::objectValue)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
-    }
-
-    Json::Value::Members members = content.getMemberNames();
-    for (size_t i = 0; i < members.size(); i++)
-    {
-      Tag tag = ParseTag(members[i]);
-
-      const Json::Value& item = content[members[i]];
-
-      if (item.type() != Json::objectValue ||
-          !item.isMember("Type") ||
-          !item.isMember("Value") ||
-          !item.isMember("Name") ||
-          item["Type"].type() != Json::stringValue ||
-          item["Name"].type() != Json::stringValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
-      }
-
-      if (item["Type"].asString() == "String")
-      {
-        if (item["Value"].type() == Json::stringValue)
-        {
-          values_[tag] = item["Value"].asString();
-        }
-        else
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);        
-        }
-      }
-    }
-  }
-
-
-  DicomDataset::DicomDataset(OrthancPlugins::IOrthancConnection& orthanc,
-                             const std::string& instanceId)
-  {
-    std::string content;
-    orthanc.RestApiGet(content, "/instances/" + instanceId + "/tags");
-
-    Parse(content);
-  }
-
-
-  std::string DicomDataset::GetStringValue(const Tag& tag) const
-  {
-    Values::const_iterator it = values_.find(tag);
-
-    if (it == values_.end())
-    {
-      LOG(ERROR) << "Trying to access a DICOM tag that is not set in a DICOM dataset";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem);
-    }
-    else
-    {
-      return it->second;
-    }
-  }
-
-
-  std::string DicomDataset::GetStringValue(const Tag& tag,
-                                           const std::string& defaultValue) const
-  {
-    Values::const_iterator it = values_.find(tag);
-
-    if (it == values_.end())
-    {
-      return defaultValue;
-    }
-    else
-    {
-      return it->second;
-    }
-  }
-
-
-  float DicomDataset::GetFloatValue(const Tag& tag) const
-  {
-    try 
-    {
-      return boost::lexical_cast<float>(Orthanc::Toolbox::StripSpaces(GetStringValue(tag)));
-    }
-    catch (boost::bad_lexical_cast&)
-    {
-      LOG(ERROR) << "Trying to access a DICOM tag that is not a float";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  double DicomDataset::GetDoubleValue(const Tag& tag) const
-  {
-    try 
-    {
-      return boost::lexical_cast<double>(Orthanc::Toolbox::StripSpaces(GetStringValue(tag)));
-    }
-    catch (boost::bad_lexical_cast&)
-    {
-      LOG(ERROR) << "Trying to access a DICOM tag that is not a float";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  int DicomDataset::GetIntegerValue(const Tag& tag) const
-  {
-    try 
-    {
-      return boost::lexical_cast<int>(Orthanc::Toolbox::StripSpaces(GetStringValue(tag)));
-    }
-    catch (boost::bad_lexical_cast&)
-    {
-      LOG(ERROR) << "Trying to access a DICOM tag that is not an integer";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  unsigned int DicomDataset::GetUnsignedIntegerValue(const Tag& tag) const
-  {
-    int v = GetIntegerValue(tag);
-
-    if (v < 0)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-    else
-    {
-      return static_cast<unsigned int>(v);
-    }
-  }
-
-
-  void DicomDataset::GetVectorValue(Vector& vector, 
-                                    const Tag& tag) const
-  {
-    if (!GeometryToolbox::ParseVector(vector, Orthanc::Toolbox::StripSpaces(GetStringValue(tag))))
-    {
-      LOG(ERROR) << "Trying to access a DICOM tag that is not a vector";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  void DicomDataset::GetVectorValue(Vector& vector, 
-                                    const Tag& tag,
-                                    size_t expectedSize) const
-  {
-    GetVectorValue(vector, tag);
-
-    if (vector.size() != expectedSize)
-    {
-      LOG(ERROR) << "A vector in a DICOM tag has a bad size";
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
-    }
-  }
-
-
-  void DicomDataset::Print() const
-  {
-    for (Values::const_iterator it = values_.begin(); it != values_.end(); ++it)
-    {
-      printf("%04x,%04x = [%s]\n", it->first.first, it->first.second, it->second.c_str());
-    }
-    printf("\n");
-  }
-
-
-  bool DicomDataset::IsGrayscale() const
-  {
-    std::string photometric = Orthanc::Toolbox::StripSpaces(GetStringValue(DICOM_TAG_PHOTOMETRIC_INTERPRETATION));
-
-    return (photometric == "MONOCHROME1" ||
-            photometric == "MONOCHROME2");
-  }
-
-
-  void DicomDataset::GetPixelSpacing(double& spacingX,
-                                     double& spacingY) const
-  {
-    if (HasTag(DICOM_TAG_PIXEL_SPACING))
-    {
-      Vector spacing;
-      GetVectorValue(spacing, DICOM_TAG_PIXEL_SPACING, 2);
-      spacingX = spacing[0];
-      spacingY = spacing[1];
-    }
-    else
-    {
-      spacingX = 1.0;
-      spacingY = 1.0;
-    }
-  }
-}
--- a/Resources/Graveyard/Toolbox/DicomDataset.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Resources/Orthanc/Plugins/Samples/Common/IOrthancConnection.h"
-
-#include <map>
-#include <stdint.h>
-#include <json/value.h>
-
-namespace OrthancStone
-{
-  // This class is NOT thread-safe
-  // This is a lightweight alternative to Orthanc::DicomMap
-  class DicomDataset : public boost::noncopyable
-  {
-  public:
-    typedef std::pair<uint16_t, uint16_t>  Tag;
-
-  private:
-    typedef std::map<Tag, std::string>  Values;
-
-    Values  values_;
-
-    void Parse(const std::string& content);
-
-    void Parse(const Json::Value& content);
-
-  public:
-    DicomDataset(const std::string& content)
-    {
-      Parse(content);
-    }
-
-    DicomDataset(const Json::Value& content)
-    {
-      Parse(content);
-    }
-
-    DicomDataset(OrthancPlugins::IOrthancConnection& orthanc,
-                 const std::string& instanceId);
-
-    bool HasTag(const Tag& tag) const
-    {
-      return values_.find(tag) != values_.end();
-    }
-
-    std::string GetStringValue(const Tag& tag) const;
-
-    std::string GetStringValue(const Tag& tag,
-                               const std::string& defaultValue) const;
-
-    float GetFloatValue(const Tag& tag) const;
-
-    double GetDoubleValue(const Tag& tag) const;
-
-    int GetIntegerValue(const Tag& tag) const;
-
-    unsigned int GetUnsignedIntegerValue(const Tag& tag) const;
-
-    void GetVectorValue(Vector& vector, 
-                        const Tag& tag,
-                        size_t expectedSize) const;
-
-    void GetVectorValue(Vector& vector, 
-                        const Tag& tag) const;
-
-    void Print() const;
-
-    bool IsGrayscale() const;
-
-    void GetPixelSpacing(double& spacingX,
-                         double& spacingY) const;
-  };
-
-
-  static const DicomDataset::Tag DICOM_TAG_COLUMNS(0x0028, 0x0011);
-  static const DicomDataset::Tag DICOM_TAG_IMAGE_ORIENTATION_PATIENT(0x0020, 0x0037);
-  static const DicomDataset::Tag DICOM_TAG_IMAGE_POSITION_PATIENT(0x0020, 0x0032);
-  static const DicomDataset::Tag DICOM_TAG_NUMBER_OF_FRAMES(0x0028, 0x0008);
-  static const DicomDataset::Tag DICOM_TAG_PIXEL_REPRESENTATION(0x0028, 0x0103);
-  static const DicomDataset::Tag DICOM_TAG_PIXEL_SPACING(0x0028, 0x0030);
-  static const DicomDataset::Tag DICOM_TAG_RESCALE_INTERCEPT(0x0028, 0x1052);
-  static const DicomDataset::Tag DICOM_TAG_RESCALE_SLOPE(0x0028, 0x1053);
-  static const DicomDataset::Tag DICOM_TAG_ROWS(0x0028, 0x0010);
-  static const DicomDataset::Tag DICOM_TAG_SLICE_THICKNESS(0x0018, 0x0050);
-  static const DicomDataset::Tag DICOM_TAG_WINDOW_CENTER(0x0028, 0x1050);
-  static const DicomDataset::Tag DICOM_TAG_WINDOW_WIDTH(0x0028, 0x1051);
-  static const DicomDataset::Tag DICOM_TAG_PHOTOMETRIC_INTERPRETATION(0x0028, 0x0004);
-}
--- a/Resources/Orthanc/CMake/AutoGeneratedCode.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-set(EMBED_RESOURCES_PYTHON "${CMAKE_CURRENT_LIST_DIR}/../EmbedResources.py"
-  CACHE INTERNAL "Path to the EmbedResources.py script from Orthanc")
-set(AUTOGENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/AUTOGENERATED")
-set(AUTOGENERATED_SOURCES)
-
-file(MAKE_DIRECTORY ${AUTOGENERATED_DIR})
-include_directories(${AUTOGENERATED_DIR})
-
-macro(EmbedResources)
-  # Convert a semicolon separated list to a whitespace separated string
-  set(SCRIPT_OPTIONS)
-  set(SCRIPT_ARGUMENTS)
-  set(DEPENDENCIES)
-  set(IS_PATH_NAME false)
-
-  set(TARGET_BASE "${AUTOGENERATED_DIR}/EmbeddedResources")
-
-  # Loop over the arguments of the function
-  foreach(arg ${ARGN})
-    # Extract the first character of the argument
-    string(SUBSTRING "${arg}" 0 1 FIRST_CHAR)
-    if (${FIRST_CHAR} STREQUAL "-")
-      # If the argument starts with a dash "-", this is an option to
-      # EmbedResources.py
-      if (${arg} MATCHES "--target=.*")
-        # Does the argument starts with "--target="?
-        string(SUBSTRING "${arg}" 9 -1 TARGET)  # 9 is the length of "--target="
-        set(TARGET_BASE "${AUTOGENERATED_DIR}/${TARGET}")
-      else()
-        list(APPEND SCRIPT_OPTIONS ${arg})
-      endif()
-    else()
-      if (${IS_PATH_NAME})
-        list(APPEND SCRIPT_ARGUMENTS "${arg}")
-        list(APPEND DEPENDENCIES "${arg}")
-        set(IS_PATH_NAME false)
-      else()
-        list(APPEND SCRIPT_ARGUMENTS "${arg}")
-        set(IS_PATH_NAME true)
-      endif()
-    endif()
-  endforeach()
-
-  add_custom_command(
-    OUTPUT
-    "${TARGET_BASE}.h"
-    "${TARGET_BASE}.cpp"
-    COMMAND ${PYTHON_EXECUTABLE} ${EMBED_RESOURCES_PYTHON}
-            ${SCRIPT_OPTIONS} "${TARGET_BASE}" ${SCRIPT_ARGUMENTS}
-    DEPENDS
-    ${EMBED_RESOURCES_PYTHON}
-    ${DEPENDENCIES}
-    )
-
-  list(APPEND AUTOGENERATED_SOURCES
-    "${TARGET_BASE}.cpp"
-    ) 
-endmacro()
--- a/Resources/Orthanc/CMake/Compiler.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-# This file sets all the compiler-related flags
-
-
-# Save the current compiler flags to the cache every time cmake configures the project
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "compiler flags" FORCE)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "compiler flags" FORCE)
-
-
-include(CheckLibraryExists)
-
-if ((CMAKE_CROSSCOMPILING AND NOT
-      "${CMAKE_SYSTEM_VERSION}" STREQUAL "CrossToolNg") OR    
-    "${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase")
-  # Cross-compilation necessarily implies standalone and static build
-  SET(STATIC_BUILD ON)
-  SET(STANDALONE_BUILD ON)
-endif()
-
-
-if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase")
-  # Cache the environment variables "LSB_CC" and "LSB_CXX" for further
-  # use by "ExternalProject" in CMake
-  SET(CMAKE_LSB_CC $ENV{LSB_CC} CACHE STRING "")
-  SET(CMAKE_LSB_CXX $ENV{LSB_CXX} CACHE STRING "")
-endif()
-
-
-if (CMAKE_COMPILER_IS_GNUCXX)
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-long-long")
-
-  # --std=c99 makes libcurl not to compile
-  # -pedantic gives a lot of warnings on OpenSSL 
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -Wno-variadic-macros")
-
-  if (CMAKE_CROSSCOMPILING)
-    # http://stackoverflow.com/a/3543845/881731
-    set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff -I<CMAKE_CURRENT_SOURCE_DIR> <SOURCE> <OBJECT>")
-  endif()
-
-elseif (MSVC)
-  # Use static runtime under Visual Studio
-  # http://www.cmake.org/Wiki/CMake_FAQ#Dynamic_Replace
-  # http://stackoverflow.com/a/6510446
-  foreach(flag_var
-    CMAKE_C_FLAGS_DEBUG
-    CMAKE_CXX_FLAGS_DEBUG
-    CMAKE_C_FLAGS_RELEASE 
-    CMAKE_CXX_FLAGS_RELEASE
-    CMAKE_C_FLAGS_MINSIZEREL 
-    CMAKE_CXX_FLAGS_MINSIZEREL 
-    CMAKE_C_FLAGS_RELWITHDEBINFO 
-    CMAKE_CXX_FLAGS_RELWITHDEBINFO) 
-    string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
-    string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}")
-  endforeach(flag_var)
-
-  # Add /Zm256 compiler option to Visual Studio to fix PCH errors
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zm256")
-
-  # New in Orthanc 1.5.5
-  if (MSVC_MULTIPLE_PROCESSES)
-    # "If you omit the processMax argument in the /MP option, the
-    # compiler obtains the number of effective processors from the
-    # operating system, and then creates one process per effective
-    # processor"
-    # https://blog.kitware.com/cmake-building-with-all-your-cores/
-    # https://docs.microsoft.com/en-us/cpp/build/reference/mp-build-with-multiple-processes
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
-  endif()
-    
-  add_definitions(
-    -D_CRT_SECURE_NO_WARNINGS=1
-    -D_CRT_SECURE_NO_DEPRECATE=1
-    )
-
-  if (MSVC_VERSION LESS 1600)
-    # Starting with Visual Studio >= 2010 (i.e. macro _MSC_VER >=
-    # 1600), Microsoft ships a standard-compliant <stdint.h>
-    # header. For earlier versions of Visual Studio, give access to a
-    # compatibility header.
-    # http://stackoverflow.com/a/70630/881731
-    # https://en.wikibooks.org/wiki/C_Programming/C_Reference/stdint.h#External_links
-    include_directories(${CMAKE_CURRENT_LIST_DIR}/../../Resources/ThirdParty/VisualStudio)
-  endif()
-
-  link_libraries(netapi32)
-endif()
-
-
-if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
-    ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
-  # In FreeBSD/OpenBSD, the "/usr/local/" folder contains the ports and need to be imported
-  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/usr/local/include")
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/local/include")
-  SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib")
-  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L/usr/local/lib")
-endif()
-
-
-if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR
-    ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR
-    ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
-    ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
-
-  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" AND
-      NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
-    # The "--no-undefined" linker flag makes the shared libraries
-    # (plugins ModalityWorklists and ServeFolders) fail to compile on
-    # OpenBSD, and make the PostgreSQL plugin complain about missing
-    # "environ" global variable in FreeBSD
-    set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-undefined")
-    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
-  endif()
-
-  # Remove the "-rdynamic" option
-  # http://www.mail-archive.com/cmake@cmake.org/msg08837.html
-  set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
-  link_libraries(pthread)
-
-  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
-    link_libraries(rt)
-  endif()
-
-  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND
-      NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
-    link_libraries(dl)
-  endif()
-
-  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND
-      NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
-    # The "--as-needed" linker flag is not available on FreeBSD and OpenBSD
-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
-    set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed")
-    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed")
-  endif()
-
-  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND
-      NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
-    # FreeBSD/OpenBSD have just one single interface for file
-    # handling, which is 64bit clean, so there is no need to define macro
-    # for LFS (Large File Support).
-    # https://ohse.de/uwe/articles/lfs.html
-    add_definitions(
-      -D_LARGEFILE64_SOURCE=1 
-      -D_FILE_OFFSET_BITS=64
-      )
-  endif()
-
-elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
-  if (MSVC)
-    message("MSVC compiler version = " ${MSVC_VERSION} "\n")
-    # Starting Visual Studio 2013 (version 1800), it is not possible
-    # to target Windows XP anymore
-    if (MSVC_VERSION LESS 1800)
-      add_definitions(
-        -DWINVER=0x0501
-        -D_WIN32_WINNT=0x0501
-        )
-    endif()
-  else()
-    add_definitions(
-      -DWINVER=0x0501
-      -D_WIN32_WINNT=0x0501
-      )
-  endif()
-
-  add_definitions(
-    -D_CRT_SECURE_NO_WARNINGS=1
-    )
-  link_libraries(rpcrt4 ws2_32)
-
-  if (CMAKE_COMPILER_IS_GNUCXX)
-    # Some additional C/C++ compiler flags for MinGW
-    SET(MINGW_NO_WARNINGS "-Wno-unused-function -Wno-unused-variable")
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MINGW_NO_WARNINGS} -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast")
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MINGW_NO_WARNINGS}")
-
-    if (DYNAMIC_MINGW_STDLIB)
-    else()
-      # This is a patch for MinGW64
-      SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++")
-      SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++")
-    endif()
-
-    CHECK_LIBRARY_EXISTS(winpthread pthread_create "" HAVE_WIN_PTHREAD)
-    if (HAVE_WIN_PTHREAD)
-      if (DYNAMIC_MINGW_STDLIB)
-      else()
-        # This line is necessary to compile with recent versions of MinGW,
-        # otherwise "libwinpthread-1.dll" is not statically linked.
-        SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic")
-      endif()
-      add_definitions(-DHAVE_WIN_PTHREAD=1)
-    else()
-      add_definitions(-DHAVE_WIN_PTHREAD=0)
-    endif()
-  endif()
-
-elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-  add_definitions(
-    -D_XOPEN_SOURCE=1
-    )
-  link_libraries(iconv)
-
-elseif (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
-  message("Building using Emscripten (for WebAssembly or asm.js targets)")
-  include(${CMAKE_CURRENT_LIST_DIR}/EmscriptenParameters.cmake)
-  
-elseif (CMAKE_SYSTEM_NAME STREQUAL "Android")
-
-else()
-  message("Unknown target platform: ${CMAKE_SYSTEM_NAME}")
-  message(FATAL_ERROR "Support your platform here")
-endif()
-
-
-if (DEFINED ENABLE_PROFILING AND ENABLE_PROFILING)
-  if (CMAKE_COMPILER_IS_GNUCXX)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg")
-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg")
-    set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -pg")
-    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg")
-  else()
-    message(FATAL_ERROR "Don't know how to enable profiling on your configuration")
-  endif()
-endif()
-
-
-if (CMAKE_COMPILER_IS_GNUCXX)
-  # "When creating a static library using binutils (ar) and there
-  # exist a duplicate object name (e.g. a/Foo.cpp.o, b/Foo.cpp.o), the
-  # resulting static library can end up having only one of the
-  # duplicate objects. [...] This bug only happens if there are many
-  # objects." The trick consists in replacing the "r" argument
-  # ("replace") provided to "ar" (as used in CMake < 3.1) by the "q"
-  # argument ("quick append"). This is because of the fact that CMake
-  # will invoke "ar" several times with several batches of ".o"
-  # objects, and using "r" would overwrite symbols defined in
-  # preceding batches. https://cmake.org/Bug/view.php?id=14874
-  set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> <LINK_FLAGS> q <TARGET> <OBJECTS>")
-endif()
--- a/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,535 +0,0 @@
-# Orthanc - A Lightweight, RESTful DICOM Store
-# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
-# Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
-#
-# This program is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# In addition, as a special exception, the copyright holders of this
-# program give permission to link the code of its release with the
-# OpenSSL project's "OpenSSL" library (or with modified versions of it
-# that use the same license as the "OpenSSL" library), and distribute
-# the linked executables. You must obey the GNU General Public License
-# in all respects for all of the code used other than "OpenSSL". If you
-# modify file(s) with this exception, you may extend this exception to
-# your version of the file(s), but you are not obligated to do so. If
-# you do not wish to do so, delete this exception statement from your
-# version. If you delete this exception statement from all source files
-# in the program, then also delete it here.
-# 
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-
-##
-## Check whether the parent script sets the mandatory variables
-##
-
-if (NOT DEFINED ORTHANC_FRAMEWORK_SOURCE OR
-    (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system" AND
-     NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" AND
-     NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "web" AND
-     NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" AND
-     NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "path"))
-  message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_SOURCE must be set to \"system\", \"hg\", \"web\", \"archive\" or \"path\"")
-endif()
-
-
-##
-## Detection of the requested version
-##
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR
-    ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR
-    ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
-  if (NOT DEFINED ORTHANC_FRAMEWORK_VERSION)
-    message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_VERSION must be set")
-  endif()
-
-  if (DEFINED ORTHANC_FRAMEWORK_MAJOR OR
-      DEFINED ORTHANC_FRAMEWORK_MINOR OR
-      DEFINED ORTHANC_FRAMEWORK_REVISION OR
-      DEFINED ORTHANC_FRAMEWORK_MD5)
-    message(FATAL_ERROR "Some internal variable has been set")
-  endif()
-
-  set(ORTHANC_FRAMEWORK_MD5 "")
-
-  if (NOT DEFINED ORTHANC_FRAMEWORK_BRANCH)
-    if (ORTHANC_FRAMEWORK_VERSION STREQUAL "mainline")
-      set(ORTHANC_FRAMEWORK_BRANCH "default")
-      set(ORTHANC_FRAMEWORK_MAJOR 999)
-      set(ORTHANC_FRAMEWORK_MINOR 999)
-      set(ORTHANC_FRAMEWORK_REVISION 999)
-
-    else()
-      set(ORTHANC_FRAMEWORK_BRANCH "Orthanc-${ORTHANC_FRAMEWORK_VERSION}")
-
-      set(RE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$")
-      string(REGEX REPLACE ${RE} "\\1" ORTHANC_FRAMEWORK_MAJOR ${ORTHANC_FRAMEWORK_VERSION})
-      string(REGEX REPLACE ${RE} "\\2" ORTHANC_FRAMEWORK_MINOR ${ORTHANC_FRAMEWORK_VERSION})
-      string(REGEX REPLACE ${RE} "\\3" ORTHANC_FRAMEWORK_REVISION ${ORTHANC_FRAMEWORK_VERSION})
-
-      if (NOT ORTHANC_FRAMEWORK_MAJOR MATCHES "^[0-9]+$" OR
-          NOT ORTHANC_FRAMEWORK_MINOR MATCHES "^[0-9]+$" OR
-          NOT ORTHANC_FRAMEWORK_REVISION MATCHES "^[0-9]+$")
-        message("Bad version of the Orthanc framework: ${ORTHANC_FRAMEWORK_VERSION}")
-      endif()
-
-      if (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.3.1")
-        set(ORTHANC_FRAMEWORK_MD5 "dac95bd6cf86fb19deaf4e612961f378")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.3.2")
-        set(ORTHANC_FRAMEWORK_MD5 "d0ccdf68e855d8224331f13774992750")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.4.0")
-        set(ORTHANC_FRAMEWORK_MD5 "81e15f34d97ac32bbd7d26e85698835a")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.4.1")
-        set(ORTHANC_FRAMEWORK_MD5 "9b6f6114264b17ed421b574cd6476127")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.4.2")
-        set(ORTHANC_FRAMEWORK_MD5 "d1ee84927dcf668e60eb5868d24b9394")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.0")
-        set(ORTHANC_FRAMEWORK_MD5 "4429d8d9dea4ff6648df80ec3c64d79e")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.1")
-        set(ORTHANC_FRAMEWORK_MD5 "099671538865e5da96208b37494d6718")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.2")
-        set(ORTHANC_FRAMEWORK_MD5 "8867050f3e9a1ce6157c1ea7a9433b1b")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.3")
-        set(ORTHANC_FRAMEWORK_MD5 "bf2f5ed1adb8b0fc5f10d278e68e1dfe")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.4")
-        set(ORTHANC_FRAMEWORK_MD5 "404baef5d4c43e7c5d9410edda8ef5a5")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.5")
-        set(ORTHANC_FRAMEWORK_MD5 "cfc437e0687ae4bd725fd93dc1f08bc4")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.6")
-        set(ORTHANC_FRAMEWORK_MD5 "3c29de1e289b5472342947168f0105c0")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.7")
-        set(ORTHANC_FRAMEWORK_MD5 "e1b76f01116d9b5d4ac8cc39980560e3")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.8")
-        set(ORTHANC_FRAMEWORK_MD5 "82323e8c49a667f658a3639ea4dbc336")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.6.0")
-        set(ORTHANC_FRAMEWORK_MD5 "eab428d6e53f61e847fa360bb17ebe25")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.6.1")
-        set(ORTHANC_FRAMEWORK_MD5 "3971f5de96ba71dc9d3f3690afeaa7c0")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.7.0")
-        set(ORTHANC_FRAMEWORK_MD5 "ce5f689e852b01d3672bd3d2f952a5ef")
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.7.1")
-        set(ORTHANC_FRAMEWORK_MD5 "3c171217f930abe80246997bdbcaf7cc")
-
-      # Below this point are development snapshots that were used to
-      # release some plugin, before an official release of the Orthanc
-      # framework was available. Here is the command to be used to
-      # generate a proper archive:
-      #
-      #   $ hg archive /tmp/Orthanc-`hg id -i | sed 's/\+//'`.tar.gz
-      #
-      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "ae0e3fd609df")
-        # DICOMweb 1.1 (framework pre-1.6.0)
-        set(ORTHANC_FRAMEWORK_MD5 "7e09e9b530a2f527854f0b782d7e0645")
-      endif()
-    endif()
-  endif()
-
-elseif (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
-  message("Using the Orthanc framework from a path of the filesystem. Assuming mainline version.")
-  set(ORTHANC_FRAMEWORK_MAJOR 999)
-  set(ORTHANC_FRAMEWORK_MINOR 999)
-  set(ORTHANC_FRAMEWORK_REVISION 999)
-endif()
-
-
-
-##
-## Detection of the third-party software
-##
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg")
-  find_program(ORTHANC_FRAMEWORK_HG hg)
-  
-  if (${ORTHANC_FRAMEWORK_HG} MATCHES "ORTHANC_FRAMEWORK_HG-NOTFOUND")
-    message(FATAL_ERROR "Please install Mercurial")
-  endif()
-endif()
-
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR
-    ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
-  if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
-    find_program(ORTHANC_FRAMEWORK_7ZIP 7z 
-      PATHS 
-      "$ENV{ProgramFiles}/7-Zip"
-      "$ENV{ProgramW6432}/7-Zip"
-      )
-
-    if (${ORTHANC_FRAMEWORK_7ZIP} MATCHES "ORTHANC_FRAMEWORK_7ZIP-NOTFOUND")
-      message(FATAL_ERROR "Please install the '7-zip' software (http://www.7-zip.org/)")
-    endif()
-
-  else()
-    find_program(ORTHANC_FRAMEWORK_TAR tar)
-    if (${ORTHANC_FRAMEWORK_TAR} MATCHES "ORTHANC_FRAMEWORK_TAR-NOTFOUND")
-      message(FATAL_ERROR "Please install the 'tar' package")
-    endif()
-  endif()
-endif()
-
-
-
-##
-## Case of the Orthanc framework specified as a path on the filesystem
-##
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "path")
-  if (NOT DEFINED ORTHANC_FRAMEWORK_ROOT)
-    message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_ROOT must provide the path to the sources of Orthanc")
-  endif()
-  
-  if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT})
-    message(FATAL_ERROR "Non-existing directory: ${ORTHANC_FRAMEWORK_ROOT}")
-  endif()
-  
-  if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
-    message(FATAL_ERROR "Directory not containing the source code of the Orthanc framework: ${ORTHANC_FRAMEWORK_ROOT}")
-  endif()
-endif()
-
-
-
-##
-## Case of the Orthanc framework cloned using Mercurial
-##
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg")
-  if (NOT STATIC_BUILD AND NOT ALLOW_DOWNLOADS)
-    message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON")
-  endif()
-
-  set(ORTHANC_ROOT ${CMAKE_BINARY_DIR}/orthanc)
-
-  if (EXISTS ${ORTHANC_ROOT})
-    message("Updating the Orthanc source repository using Mercurial")
-    execute_process(
-      COMMAND ${ORTHANC_FRAMEWORK_HG} pull
-      WORKING_DIRECTORY ${ORTHANC_ROOT}
-      RESULT_VARIABLE Failure
-      )    
-  else()
-    message("Forking the Orthanc source repository using Mercurial")
-    execute_process(
-      COMMAND ${ORTHANC_FRAMEWORK_HG} clone "https://hg.orthanc-server.com/orthanc/"
-      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-      RESULT_VARIABLE Failure
-      )    
-  endif()
-
-  if (Failure OR NOT EXISTS ${ORTHANC_ROOT})
-    message(FATAL_ERROR "Cannot fork the Orthanc repository")
-  endif()
-
-  message("Setting branch of the Orthanc repository to: ${ORTHANC_FRAMEWORK_BRANCH}")
-
-  execute_process(
-    COMMAND ${ORTHANC_FRAMEWORK_HG} update -c ${ORTHANC_FRAMEWORK_BRANCH}
-    WORKING_DIRECTORY ${ORTHANC_ROOT}
-    RESULT_VARIABLE Failure
-    )
-
-  if (Failure)
-    message(FATAL_ERROR "Error while running Mercurial")
-  endif()
-
-  unset(ORTHANC_FRAMEWORK_ROOT CACHE)
-  set(ORTHANC_FRAMEWORK_ROOT "${ORTHANC_ROOT}/OrthancFramework" CACHE
-    STRING "Path to the Orthanc framework source directory")
-
-  if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
-    message(FATAL_ERROR "Directory not containing the source code of the Orthanc framework: ${ORTHANC_ROOT}")
-  endif()
-
-  unset(ORTHANC_ROOT)
-endif()
-
-
-
-##
-## Case of the Orthanc framework provided as a source archive on the
-## filesystem
-##
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive")
-  if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE)
-    message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_ARCHIVE must provide the path to the sources of Orthanc")
-  endif()
-endif()
-
-
-
-##
-## Case of the Orthanc framework downloaded from the Web
-##
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
-  if (DEFINED ORTHANC_FRAMEWORK_URL)
-    string(REGEX REPLACE "^.*/" "" ORTHANC_FRAMEMORK_FILENAME "${ORTHANC_FRAMEWORK_URL}")
-  else()
-    # Default case: Download from the official Web site
-    set(ORTHANC_FRAMEMORK_FILENAME Orthanc-${ORTHANC_FRAMEWORK_VERSION}.tar.gz)
-    set(ORTHANC_FRAMEWORK_URL "http://orthanc.osimis.io/ThirdPartyDownloads/orthanc-framework/${ORTHANC_FRAMEMORK_FILENAME}")
-  endif()
-
-  set(ORTHANC_FRAMEWORK_ARCHIVE "${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${ORTHANC_FRAMEMORK_FILENAME}")
-
-  if (NOT EXISTS "${ORTHANC_FRAMEWORK_ARCHIVE}")
-    if (NOT STATIC_BUILD AND NOT ALLOW_DOWNLOADS)
-      message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON")
-    endif()
-
-    message("Downloading: ${ORTHANC_FRAMEWORK_URL}")
-
-    file(DOWNLOAD
-      "${ORTHANC_FRAMEWORK_URL}" "${ORTHANC_FRAMEWORK_ARCHIVE}" 
-      SHOW_PROGRESS EXPECTED_MD5 "${ORTHANC_FRAMEWORK_MD5}"
-      TIMEOUT 60
-      INACTIVITY_TIMEOUT 60
-      )
-  else()
-    message("Using local copy of: ${ORTHANC_FRAMEWORK_URL}")
-  endif()  
-endif()
-
-
-
-
-##
-## Uncompressing the Orthanc framework, if it was retrieved from a
-## source archive on the filesystem, or from the official Web site
-##
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR
-    ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
-
-  if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE OR
-      NOT DEFINED ORTHANC_FRAMEWORK_VERSION OR
-      NOT DEFINED ORTHANC_FRAMEWORK_MD5)
-    message(FATAL_ERROR "Internal error")
-  endif()
-
-  if (ORTHANC_FRAMEWORK_MD5 STREQUAL "")
-    message(FATAL_ERROR "Unknown release of Orthanc: ${ORTHANC_FRAMEWORK_VERSION}")
-  endif()
-
-  file(MD5 ${ORTHANC_FRAMEWORK_ARCHIVE} ActualMD5)
-
-  if (NOT "${ActualMD5}" STREQUAL "${ORTHANC_FRAMEWORK_MD5}")
-    message(FATAL_ERROR "The MD5 hash of the Orthanc archive is invalid: ${ORTHANC_FRAMEWORK_ARCHIVE}")
-  endif()
-
-  set(ORTHANC_ROOT "${CMAKE_BINARY_DIR}/Orthanc-${ORTHANC_FRAMEWORK_VERSION}")
-
-  if (NOT IS_DIRECTORY "${ORTHANC_ROOT}")
-    if (NOT ORTHANC_FRAMEWORK_ARCHIVE MATCHES ".tar.gz$")
-      message(FATAL_ERROR "Archive should have the \".tar.gz\" extension: ${ORTHANC_FRAMEWORK_ARCHIVE}")
-    endif()
-    
-    message("Uncompressing: ${ORTHANC_FRAMEWORK_ARCHIVE}")
-
-    if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
-      # How to silently extract files using 7-zip
-      # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly
-
-      execute_process(
-        COMMAND ${ORTHANC_FRAMEWORK_7ZIP} e -y ${ORTHANC_FRAMEWORK_ARCHIVE}
-        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-        RESULT_VARIABLE Failure
-        OUTPUT_QUIET
-        )
-      
-      if (Failure)
-        message(FATAL_ERROR "Error while running the uncompression tool")
-      endif()
-
-      get_filename_component(TMP_FILENAME "${ORTHANC_FRAMEWORK_ARCHIVE}" NAME)
-      string(REGEX REPLACE ".gz$" "" TMP_FILENAME2 "${TMP_FILENAME}")
-
-      execute_process(
-        COMMAND ${ORTHANC_FRAMEWORK_7ZIP} x -y ${TMP_FILENAME2}
-        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-        RESULT_VARIABLE Failure
-        OUTPUT_QUIET
-        )
-
-    else()
-      execute_process(
-        COMMAND sh -c "${ORTHANC_FRAMEWORK_TAR} xfz ${ORTHANC_FRAMEWORK_ARCHIVE}"
-        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-        RESULT_VARIABLE Failure
-        )
-    endif()
-   
-    if (Failure)
-      message(FATAL_ERROR "Error while running the uncompression tool")
-    endif()
-
-    if (NOT IS_DIRECTORY "${ORTHANC_ROOT}")
-      message(FATAL_ERROR "The Orthanc framework was not uncompressed at the proper location. Check the CMake instructions.")
-    endif()
-  endif()
-
-  unset(ORTHANC_FRAMEWORK_ROOT CACHE)
-  set(ORTHANC_FRAMEWORK_ROOT "${ORTHANC_ROOT}/OrthancFramework" CACHE
-    STRING "Path to the Orthanc framework source directory")
-
-  if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
-    message(FATAL_ERROR "Directory not containing the source code of the Orthanc framework: ${ORTHANC_ROOT}")
-  endif()
-
-  unset(ORTHANC_ROOT)
-endif()
-
-
-
-##
-## Case of the Orthanc framework installed as a shared library in a
-## GNU/Linux distribution (typically Debian). New in Orthanc 1.7.2.
-##
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
-  set(ORTHANC_FRAMEWORK_LIBDIR "" CACHE PATH "")
-
-  if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND
-      CMAKE_COMPILER_IS_GNUCXX) # MinGW
-    set(DYNAMIC_MINGW_STDLIB ON)   # Disable static linking against libc (to throw exceptions)
-    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++")
-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++")
-  endif()
-  
-  include(CheckIncludeFile)
-  include(CheckIncludeFileCXX)
-  include(FindPythonInterp)
-  include(${CMAKE_CURRENT_LIST_DIR}/Compiler.cmake)
-  include(${CMAKE_CURRENT_LIST_DIR}/DownloadPackage.cmake)
-  include(${CMAKE_CURRENT_LIST_DIR}/AutoGeneratedCode.cmake)
-  set(EMBED_RESOURCES_PYTHON ${CMAKE_CURRENT_LIST_DIR}/EmbedResources.py)
-
-  if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" OR
-      ORTHANC_FRAMEWORK_STATIC)
-    include_directories(${ORTHANC_FRAMEWORK_ROOT}/..)
-  else()
-    # Look for mandatory dependency JsonCpp (cf. JsonCppConfiguration.cmake)
-    find_path(JSONCPP_INCLUDE_DIR json/reader.h
-      /usr/include/jsoncpp
-      /usr/local/include/jsoncpp
-      )
-
-    message("JsonCpp include dir: ${JSONCPP_INCLUDE_DIR}")
-    include_directories(${JSONCPP_INCLUDE_DIR})
-    link_libraries(jsoncpp)
-
-    CHECK_INCLUDE_FILE_CXX(${JSONCPP_INCLUDE_DIR}/json/reader.h HAVE_JSONCPP_H)
-    if (NOT HAVE_JSONCPP_H)
-      message(FATAL_ERROR "Please install the libjsoncpp-dev package")
-    endif()
-
-    # Look for mandatory dependency Boost (cf. BoostConfiguration.cmake)
-    include(FindBoost)
-    find_package(Boost COMPONENTS filesystem thread system date_time regex ${ORTHANC_BOOST_COMPONENTS})
-
-    if (NOT Boost_FOUND)
-      message(FATAL_ERROR "Unable to locate Boost on this system")
-    endif()
-    
-    include_directories(${Boost_INCLUDE_DIRS})
-    link_libraries(${Boost_LIBRARIES})
-
-    # Optional component - Lua
-    if (ENABLE_LUA)
-      include(FindLua)
-
-      if (NOT LUA_FOUND)
-        message(FATAL_ERROR "Please install the liblua-dev package")
-      endif()
-
-      include_directories(${LUA_INCLUDE_DIR})
-      link_libraries(${LUA_LIBRARIES})
-    endif()
-
-    # Optional component - SQLite
-    if (ENABLE_SQLITE)    
-      CHECK_INCLUDE_FILE(sqlite3.h HAVE_SQLITE_H)
-      if (NOT HAVE_SQLITE_H)
-        message(FATAL_ERROR "Please install the libsqlite3-dev package")
-      endif()
-      link_libraries(sqlite3)
-    endif()
-
-    # Optional component - Pugixml
-    if (ENABLE_PUGIXML)
-      CHECK_INCLUDE_FILE_CXX(pugixml.hpp HAVE_PUGIXML_H)
-      if (NOT HAVE_PUGIXML_H)
-        message(FATAL_ERROR "Please install the libpugixml-dev package")
-      endif()      
-      link_libraries(pugixml)
-    endif()
-
-    # Optional component - DCMTK
-    if (ENABLE_DCMTK)
-      include(FindDCMTK)
-      include_directories(${DCMTK_INCLUDE_DIRS})
-      link_libraries(${DCMTK_LIBRARIES})
-    endif()
-  endif()
-
-  # Look for Orthanc framework shared library
-  include(CheckCXXSymbolExists)
-
-  if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
-    set(ORTHANC_FRAMEWORK_INCLUDE_DIR ${ORTHANC_FRAMEWORK_ROOT})
-  else()
-    find_path(ORTHANC_FRAMEWORK_INCLUDE_DIR OrthancFramework.h
-      /usr/include/orthanc-framework
-      /usr/local/include/orthanc-framework
-      ${ORTHANC_FRAMEWORK_ROOT}
-      )
-  endif()
-
-  if (${ORTHANC_FRAMEWORK_INCLUDE_DIR} STREQUAL "ORTHANC_FRAMEWORK_INCLUDE_DIR-NOTFOUND")
-    message(FATAL_ERROR "Cannot locate the OrthancFramework.h header")
-  endif()
-  
-  message("Orthanc framework include dir: ${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
-  include_directories(${ORTHANC_FRAMEWORK_INCLUDE_DIR})
-  
-  if ("${ORTHANC_FRAMEWORK_LIBDIR}" STREQUAL "")
-    set(ORTHANC_FRAMEWORK_LIBRARIES OrthancFramework)
-  else()
-    if (MSVC)
-      set(Suffix ".lib")
-      set(Prefix "")
-    else()
-      list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix)
-      list(GET CMAKE_FIND_LIBRARY_SUFFIXES 0 Suffix)
-    endif()
-    set(ORTHANC_FRAMEWORK_LIBRARIES ${ORTHANC_FRAMEWORK_LIBDIR}/${Prefix}OrthancFramework${Suffix})
-  endif()
-
-  set(CMAKE_REQUIRED_INCLUDES "${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
-  set(CMAKE_REQUIRED_LIBRARIES "${ORTHANC_FRAMEWORK_LIBRARIES}")
-  
-  check_cxx_symbol_exists("Orthanc::InitializeFramework" "OrthancFramework.h" HAVE_ORTHANC_FRAMEWORK)
-  if (NOT HAVE_ORTHANC_FRAMEWORK)
-    message(FATAL_ERROR "Cannot find the Orthanc framework")
-  endif()
-
-  unset(CMAKE_REQUIRED_INCLUDES)
-  unset(CMAKE_REQUIRED_LIBRARIES)
-  
-  if (NOT "${ORTHANC_FRAMEWORK_ROOT}" STREQUAL "")
-    include_directories(${ORTHANC_FRAMEWORK_ROOT})
-  endif()
-endif()
--- a/Resources/Orthanc/CMake/DownloadPackage.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-macro(GetUrlFilename TargetVariable Url)
-  string(REGEX REPLACE "^.*/" "" ${TargetVariable} "${Url}")
-endmacro()
-
-
-macro(GetUrlExtension TargetVariable Url)
-  #string(REGEX REPLACE "^.*/[^.]*\\." "" TMP "${Url}")
-  string(REGEX REPLACE "^.*\\." "" TMP "${Url}")
-  string(TOLOWER "${TMP}" "${TargetVariable}")
-endmacro()
-
-
-
-##
-## Setup the patch command-line tool
-##
-
-if (NOT ORTHANC_DISABLE_PATCH)
-  if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
-    set(PATCH_EXECUTABLE ${CMAKE_CURRENT_LIST_DIR}/../ThirdParty/patch/patch.exe)
-    if (NOT EXISTS ${PATCH_EXECUTABLE})
-      message(FATAL_ERROR "Unable to find the patch.exe tool that is shipped with Orthanc")
-    endif()
-
-  else ()
-    find_program(PATCH_EXECUTABLE patch)
-    if (${PATCH_EXECUTABLE} MATCHES "PATCH_EXECUTABLE-NOTFOUND")
-      message(FATAL_ERROR "Please install the 'patch' standard command-line tool")
-    endif()
-  endif()
-endif()
-
-
-
-##
-## Check the existence of the required decompression tools
-##
-
-if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
-  find_program(ZIP_EXECUTABLE 7z 
-    PATHS 
-    "$ENV{ProgramFiles}/7-Zip"
-    "$ENV{ProgramW6432}/7-Zip"
-    )
-
-  if (${ZIP_EXECUTABLE} MATCHES "ZIP_EXECUTABLE-NOTFOUND")
-    message(FATAL_ERROR "Please install the '7-zip' software (http://www.7-zip.org/)")
-  endif()
-
-else()
-  find_program(UNZIP_EXECUTABLE unzip)
-  if (${UNZIP_EXECUTABLE} MATCHES "UNZIP_EXECUTABLE-NOTFOUND")
-    message(FATAL_ERROR "Please install the 'unzip' package")
-  endif()
-
-  find_program(TAR_EXECUTABLE tar)
-  if (${TAR_EXECUTABLE} MATCHES "TAR_EXECUTABLE-NOTFOUND")
-    message(FATAL_ERROR "Please install the 'tar' package")
-  endif()
-
-  find_program(GUNZIP_EXECUTABLE gunzip)
-  if (${GUNZIP_EXECUTABLE} MATCHES "GUNZIP_EXECUTABLE-NOTFOUND")
-    message(FATAL_ERROR "Please install the 'gzip' package")
-  endif()
-endif()
-
-
-macro(DownloadFile MD5 Url)
-  GetUrlFilename(TMP_FILENAME "${Url}")
-
-  set(TMP_PATH "${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${TMP_FILENAME}")
-  if (NOT EXISTS "${TMP_PATH}")
-    message("Downloading ${Url}")
-
-    # This fixes issue 6: "I think cmake shouldn't download the
-    # packages which are not in the system, it should stop and let
-    # user know."
-    # https://code.google.com/p/orthanc/issues/detail?id=6
-    if (NOT STATIC_BUILD AND NOT ALLOW_DOWNLOADS)
-      message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON")
-    endif()
-
-    if ("${MD5}" STREQUAL "no-check")
-      message(WARNING "Not checking the MD5 of: ${Url}")
-      file(DOWNLOAD "${Url}" "${TMP_PATH}"
-        SHOW_PROGRESS TIMEOUT 300 INACTIVITY_TIMEOUT 60
-        STATUS Failure)
-    else()
-      file(DOWNLOAD "${Url}" "${TMP_PATH}"
-        SHOW_PROGRESS TIMEOUT 300 INACTIVITY_TIMEOUT 60
-        EXPECTED_MD5 "${MD5}" STATUS Failure)
-    endif()
-
-    list(GET Failure 0 Status)
-    if (NOT Status EQUAL 0)
-      message(FATAL_ERROR "Cannot download file: ${Url}")
-    endif()
-    
-  else()
-    message("Using local copy of ${Url}")
-
-    if ("${MD5}" STREQUAL "no-check")
-      message(WARNING "Not checking the MD5 of: ${Url}")
-    else()
-      file(MD5 ${TMP_PATH} ActualMD5)
-      if (NOT "${ActualMD5}" STREQUAL "${MD5}")
-        message(FATAL_ERROR "The MD5 hash of a previously download file is invalid: ${TMP_PATH}")
-      endif()
-    endif()
-  endif()
-endmacro()
-
-
-macro(DownloadPackage MD5 Url TargetDirectory)
-  if (NOT IS_DIRECTORY "${TargetDirectory}")
-    DownloadFile("${MD5}" "${Url}")
-    
-    GetUrlExtension(TMP_EXTENSION "${Url}")
-    #message(${TMP_EXTENSION})
-    message("Uncompressing ${TMP_FILENAME}")
-
-    if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
-      # How to silently extract files using 7-zip
-      # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly
-
-      if (("${TMP_EXTENSION}" STREQUAL "gz") OR 
-          ("${TMP_EXTENSION}" STREQUAL "tgz") OR
-          ("${TMP_EXTENSION}" STREQUAL "xz"))
-        execute_process(
-          COMMAND ${ZIP_EXECUTABLE} e -y ${TMP_PATH}
-          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-          RESULT_VARIABLE Failure
-          OUTPUT_QUIET
-          )
-
-        if (Failure)
-          message(FATAL_ERROR "Error while running the uncompression tool")
-        endif()
-
-        if ("${TMP_EXTENSION}" STREQUAL "tgz")
-          string(REGEX REPLACE ".tgz$" ".tar" TMP_FILENAME2 "${TMP_FILENAME}")
-        elseif ("${TMP_EXTENSION}" STREQUAL "gz")
-          string(REGEX REPLACE ".gz$" "" TMP_FILENAME2 "${TMP_FILENAME}")
-        elseif ("${TMP_EXTENSION}" STREQUAL "xz")
-          string(REGEX REPLACE ".xz" "" TMP_FILENAME2 "${TMP_FILENAME}")
-        endif()
-
-        execute_process(
-          COMMAND ${ZIP_EXECUTABLE} x -y ${TMP_FILENAME2}
-          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-          RESULT_VARIABLE Failure
-          OUTPUT_QUIET
-          )
-      elseif ("${TMP_EXTENSION}" STREQUAL "zip")
-        execute_process(
-          COMMAND ${ZIP_EXECUTABLE} x -y ${TMP_PATH}
-          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-          RESULT_VARIABLE Failure
-          OUTPUT_QUIET
-          )
-      else()
-        message(FATAL_ERROR "Unsupported package extension: ${TMP_EXTENSION}")
-      endif()
-
-    else()
-      if ("${TMP_EXTENSION}" STREQUAL "zip")
-        execute_process(
-          COMMAND sh -c "${UNZIP_EXECUTABLE} -q ${TMP_PATH}"
-          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-          RESULT_VARIABLE Failure
-        )
-      elseif (("${TMP_EXTENSION}" STREQUAL "gz") OR ("${TMP_EXTENSION}" STREQUAL "tgz"))
-        #message("tar xvfz ${TMP_PATH}")
-        execute_process(
-          COMMAND sh -c "${TAR_EXECUTABLE} xfz ${TMP_PATH}"
-          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-          RESULT_VARIABLE Failure
-          )
-      elseif ("${TMP_EXTENSION}" STREQUAL "bz2")
-        execute_process(
-          COMMAND sh -c "${TAR_EXECUTABLE} xfj ${TMP_PATH}"
-          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-          RESULT_VARIABLE Failure
-          )
-      elseif ("${TMP_EXTENSION}" STREQUAL "xz")
-        execute_process(
-          COMMAND sh -c "${TAR_EXECUTABLE} xf ${TMP_PATH}"
-          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-          RESULT_VARIABLE Failure
-          )
-      else()
-        message(FATAL_ERROR "Unsupported package extension: ${TMP_EXTENSION}")
-      endif()
-    endif()
-   
-    if (Failure)
-      message(FATAL_ERROR "Error while running the uncompression tool")
-    endif()
-
-    if (NOT IS_DIRECTORY "${TargetDirectory}")
-      message(FATAL_ERROR "The package was not uncompressed at the proper location. Check the CMake instructions.")
-    endif()
-  endif()
-endmacro()
-
-
-
-macro(DownloadCompressedFile MD5 Url TargetFile)
-  if (NOT EXISTS "${TargetFile}")
-    DownloadFile("${MD5}" "${Url}")
-    
-    GetUrlExtension(TMP_EXTENSION "${Url}")
-    #message(${TMP_EXTENSION})
-    message("Uncompressing ${TMP_FILENAME}")
-
-    if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
-      # How to silently extract files using 7-zip
-      # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly
-
-      if ("${TMP_EXTENSION}" STREQUAL "gz")
-        execute_process(
-          # "-so" writes uncompressed file to stdout
-          COMMAND ${ZIP_EXECUTABLE} e -so -y ${TMP_PATH}
-          OUTPUT_FILE "${TargetFile}"
-          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-          RESULT_VARIABLE Failure
-          OUTPUT_QUIET
-          )
-
-        if (Failure)
-          message(FATAL_ERROR "Error while running the uncompression tool")
-        endif()
-
-      else()
-        message(FATAL_ERROR "Unsupported file extension: ${TMP_EXTENSION}")
-      endif()
-
-    else()
-      if ("${TMP_EXTENSION}" STREQUAL "gz")
-        execute_process(
-          COMMAND sh -c "${GUNZIP_EXECUTABLE} -c ${TMP_PATH}"
-          OUTPUT_FILE "${TargetFile}"
-          RESULT_VARIABLE Failure
-          )
-      else()
-        message(FATAL_ERROR "Unsupported file extension: ${TMP_EXTENSION}")
-      endif()
-    endif()
-   
-    if (Failure)
-      message(FATAL_ERROR "Error while running the uncompression tool")
-    endif()
-
-    if (NOT EXISTS "${TargetFile}")
-      message(FATAL_ERROR "The file was not uncompressed at the proper location. Check the CMake instructions.")
-    endif()
-  endif()
-endmacro()
--- a/Resources/Orthanc/CMake/EmbedResources.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,455 +0,0 @@
-#!/usr/bin/python
-
-# Orthanc - A Lightweight, RESTful DICOM Store
-# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
-# Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
-#
-# This program is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# In addition, as a special exception, the copyright holders of this
-# program give permission to link the code of its release with the
-# OpenSSL project's "OpenSSL" library (or with modified versions of it
-# that use the same license as the "OpenSSL" library), and distribute
-# the linked executables. You must obey the GNU General Public License
-# in all respects for all of the code used other than "OpenSSL". If you
-# modify file(s) with this exception, you may extend this exception to
-# your version of the file(s), but you are not obligated to do so. If
-# you do not wish to do so, delete this exception statement from your
-# version. If you delete this exception statement from all source files
-# in the program, then also delete it here.
-# 
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-import sys
-import os
-import os.path
-import pprint
-import re
-
-UPCASE_CHECK = True
-USE_SYSTEM_EXCEPTION = False
-EXCEPTION_CLASS = 'OrthancException'
-OUT_OF_RANGE_EXCEPTION = '::Orthanc::OrthancException(::Orthanc::ErrorCode_ParameterOutOfRange)'
-INEXISTENT_PATH_EXCEPTION = '::Orthanc::OrthancException(::Orthanc::ErrorCode_InexistentItem)'
-NAMESPACE = 'Orthanc.EmbeddedResources'
-FRAMEWORK_PATH = None
-
-ARGS = []
-for i in range(len(sys.argv)):
-    if not sys.argv[i].startswith('--'):
-        ARGS.append(sys.argv[i])
-    elif sys.argv[i].lower() == '--no-upcase-check':
-        UPCASE_CHECK = False
-    elif sys.argv[i].lower() == '--system-exception':
-        USE_SYSTEM_EXCEPTION = True
-        EXCEPTION_CLASS = '::std::runtime_error'
-        OUT_OF_RANGE_EXCEPTION = '%s("Parameter out of range")' % EXCEPTION_CLASS
-        INEXISTENT_PATH_EXCEPTION = '%s("Unknown path in a directory resource")' % EXCEPTION_CLASS
-    elif sys.argv[i].startswith('--namespace='):
-        NAMESPACE = sys.argv[i][sys.argv[i].find('=') + 1 : ]
-    elif sys.argv[i].startswith('--framework-path='):
-        FRAMEWORK_PATH = sys.argv[i][sys.argv[i].find('=') + 1 : ]
-
-if len(ARGS) < 2 or len(ARGS) % 2 != 0:
-    print ('Usage:')
-    print ('python %s [--no-upcase-check] [--system-exception] [--namespace=<Namespace>] <TargetBaseFilename> [ <Name> <Source> ]*' % sys.argv[0])
-    exit(-1)
-
-TARGET_BASE_FILENAME = ARGS[1]
-SOURCES = ARGS[2:]
-
-try:
-    # Make sure the destination directory exists
-    os.makedirs(os.path.normpath(os.path.join(TARGET_BASE_FILENAME, '..')))
-except:
-    pass
-
-
-#####################################################################
-## Read each resource file
-#####################################################################
-
-def CheckNoUpcase(s):
-    global UPCASE_CHECK
-    if (UPCASE_CHECK and
-        re.search('[A-Z]', s) != None):
-        raise Exception("Path in a directory with an upcase letter: %s" % s)
-
-resources = {}
-
-counter = 0
-i = 0
-while i < len(SOURCES):
-    resourceName = SOURCES[i].upper()
-    pathName = SOURCES[i + 1]
-
-    if not os.path.exists(pathName):
-        raise Exception("Non existing path: %s" % pathName)
-
-    if resourceName in resources:
-        raise Exception("Twice the same resource: " + resourceName)
-    
-    if os.path.isdir(pathName):
-        # The resource is a directory: Recursively explore its files
-        content = {}
-        for root, dirs, files in os.walk(pathName):
-            dirs.sort()
-            files.sort()
-            base = os.path.relpath(root, pathName)
-
-            # Fix issue #24 (Build fails on OSX when directory has .DS_Store files):
-            # Ignore folders whose name starts with a dot (".")
-            if base.find('/.') != -1:
-                print('Ignoring folder: %s' % root)
-                continue
-
-            for f in files:
-                if f.find('~') == -1:  # Ignore Emacs backup files
-                    if base == '.':
-                        r = f
-                    else:
-                        r = os.path.join(base, f)
-
-                    CheckNoUpcase(r)
-                    r = '/' + r.replace('\\', '/')
-                    if r in content:
-                        raise Exception("Twice the same filename (check case): " + r)
-
-                    content[r] = {
-                        'Filename' : os.path.join(root, f),
-                        'Index' : counter
-                        }
-                    counter += 1
-
-        resources[resourceName] = {
-            'Type' : 'Directory',
-            'Files' : content
-            }
-
-    elif os.path.isfile(pathName):
-        resources[resourceName] = {
-            'Type' : 'File',
-            'Index' : counter,
-            'Filename' : pathName
-            }
-        counter += 1
-
-    else:
-        raise Exception("Not a regular file, nor a directory: " + pathName)
-
-    i += 2
-
-#pprint.pprint(resources)
-
-
-#####################################################################
-## Write .h header
-#####################################################################
-
-header = open(TARGET_BASE_FILENAME + '.h', 'w')
-
-header.write("""
-#pragma once
-
-#include <string>
-#include <list>
-
-#if defined(_MSC_VER)
-#  pragma warning(disable: 4065)  // "Switch statement contains 'default' but no 'case' labels"
-#endif
-
-""")
-
-
-for ns in NAMESPACE.split('.'):
-    header.write('namespace %s {\n' % ns)
-    
-
-header.write("""
-    enum FileResourceId
-    {
-""")
-
-isFirst = True
-for name in resources:
-    if resources[name]['Type'] == 'File':
-        if isFirst:
-            isFirst = False
-        else:    
-            header.write(',\n')
-        header.write('      %s' % name)
-
-header.write("""
-    };
-
-    enum DirectoryResourceId
-    {
-""")
-
-isFirst = True
-for name in resources:
-    if resources[name]['Type'] == 'Directory':
-        if isFirst:
-            isFirst = False
-        else:    
-            header.write(',\n')
-        header.write('      %s' % name)
-
-header.write("""
-    };
-
-    const void* GetFileResourceBuffer(FileResourceId id);
-    size_t GetFileResourceSize(FileResourceId id);
-    void GetFileResource(std::string& result, FileResourceId id);
-
-    const void* GetDirectoryResourceBuffer(DirectoryResourceId id, const char* path);
-    size_t GetDirectoryResourceSize(DirectoryResourceId id, const char* path);
-    void GetDirectoryResource(std::string& result, DirectoryResourceId id, const char* path);
-
-    void ListResources(std::list<std::string>& result, DirectoryResourceId id);
-
-""")
-
-
-for ns in NAMESPACE.split('.'):
-    header.write('}\n')
-
-header.close()
-
-
-
-#####################################################################
-## Write the resource content in the .cpp source
-#####################################################################
-
-PYTHON_MAJOR_VERSION = sys.version_info[0]
-
-def WriteResource(cpp, item):
-    cpp.write('    static const uint8_t resource%dBuffer[] = {' % item['Index'])
-
-    f = open(item['Filename'], "rb")
-    content = f.read()
-    f.close()
-
-    # http://stackoverflow.com/a/1035360
-    pos = 0
-    buffer = []  # instead of appending a few bytes at a time to the cpp file, 
-                 # we first append each chunk to a list, join it and write it 
-                 # to the file.  We've measured that it was 2-3 times faster in python3.
-                 # Note that speed is important since if generation is too slow,
-                 # cmake might try to compile the EmbeddedResources.cpp file while it is
-                 # still being generated !
-    for b in content:
-        if PYTHON_MAJOR_VERSION == 2:
-            c = ord(b[0])
-        else:
-            c = b
-
-        if pos > 0:
-            buffer.append(",")
-
-        if (pos % 16) == 0:
-            buffer.append("\n")
-
-        if c < 0:
-            raise Exception("Internal error")
-
-        buffer.append("0x%02x" % c)
-        pos += 1
-
-    cpp.write("".join(buffer))
-    # Zero-size array are disallowed, so we put one single void character in it.
-    if pos == 0:
-        cpp.write('  0')
-
-    cpp.write('  };\n')
-    cpp.write('    static const size_t resource%dSize = %d;\n' % (item['Index'], pos))
-
-
-cpp = open(TARGET_BASE_FILENAME + '.cpp', 'w')
-
-cpp.write('#include "%s.h"\n' % os.path.basename(TARGET_BASE_FILENAME))
-
-if USE_SYSTEM_EXCEPTION:
-    cpp.write('#include <stdexcept>')
-elif FRAMEWORK_PATH != None:
-    cpp.write('#include "%s/OrthancException.h"' % FRAMEWORK_PATH)
-else:
-    cpp.write('#include <OrthancException.h>')
-
-cpp.write("""
-#include <stdint.h>
-#include <string.h>
-
-""")
-
-for ns in NAMESPACE.split('.'):
-    cpp.write('namespace %s {\n' % ns)
-
-
-for name in resources:
-    if resources[name]['Type'] == 'File':
-        WriteResource(cpp, resources[name])
-    else:
-        for f in resources[name]['Files']:
-            WriteResource(cpp, resources[name]['Files'][f])
-
-
-
-#####################################################################
-## Write the accessors to the file resources in .cpp
-#####################################################################
-
-cpp.write("""
-    const void* GetFileResourceBuffer(FileResourceId id)
-    {
-      switch (id)
-      {
-""")
-for name in resources:
-    if resources[name]['Type'] == 'File':
-        cpp.write('      case %s:\n' % name)
-        cpp.write('        return resource%dBuffer;\n' % resources[name]['Index'])
-
-cpp.write("""
-      default:
-        throw %s;
-      }
-    }
-
-    size_t GetFileResourceSize(FileResourceId id)
-    {
-      switch (id)
-      {
-""" % OUT_OF_RANGE_EXCEPTION)
-
-for name in resources:
-    if resources[name]['Type'] == 'File':
-        cpp.write('      case %s:\n' % name)
-        cpp.write('        return resource%dSize;\n' % resources[name]['Index'])
-
-cpp.write("""
-      default:
-        throw %s;
-      }
-    }
-""" % OUT_OF_RANGE_EXCEPTION)
-
-
-
-#####################################################################
-## Write the accessors to the directory resources in .cpp
-#####################################################################
-
-cpp.write("""
-    const void* GetDirectoryResourceBuffer(DirectoryResourceId id, const char* path)
-    {
-      switch (id)
-      {
-""")
-
-for name in resources:
-    if resources[name]['Type'] == 'Directory':
-        cpp.write('      case %s:\n' % name)
-        isFirst = True
-        for path in resources[name]['Files']:
-            cpp.write('        if (!strcmp(path, "%s"))\n' % path)
-            cpp.write('          return resource%dBuffer;\n' % resources[name]['Files'][path]['Index'])
-        cpp.write('        throw %s;\n\n' % INEXISTENT_PATH_EXCEPTION)
-
-cpp.write("""      default:
-        throw %s;
-      }
-    }
-
-    size_t GetDirectoryResourceSize(DirectoryResourceId id, const char* path)
-    {
-      switch (id)
-      {
-""" % OUT_OF_RANGE_EXCEPTION)
-
-for name in resources:
-    if resources[name]['Type'] == 'Directory':
-        cpp.write('      case %s:\n' % name)
-        isFirst = True
-        for path in resources[name]['Files']:
-            cpp.write('        if (!strcmp(path, "%s"))\n' % path)
-            cpp.write('          return resource%dSize;\n' % resources[name]['Files'][path]['Index'])
-        cpp.write('        throw %s;\n\n' % INEXISTENT_PATH_EXCEPTION)
-
-cpp.write("""      default:
-        throw %s;
-      }
-    }
-""" % OUT_OF_RANGE_EXCEPTION)
-
-
-
-
-#####################################################################
-## List the resources in a directory
-#####################################################################
-
-cpp.write("""
-    void ListResources(std::list<std::string>& result, DirectoryResourceId id)
-    {
-      result.clear();
-
-      switch (id)
-      {
-""")
-
-for name in resources:
-    if resources[name]['Type'] == 'Directory':
-        cpp.write('      case %s:\n' % name)
-        for path in sorted(resources[name]['Files']):
-            cpp.write('        result.push_back("%s");\n' % path)
-        cpp.write('        break;\n\n')
-
-cpp.write("""      default:
-        throw %s;
-      }
-    }
-""" % OUT_OF_RANGE_EXCEPTION)
-
-
-
-
-#####################################################################
-## Write the convenience wrappers in .cpp
-#####################################################################
-
-cpp.write("""
-    void GetFileResource(std::string& result, FileResourceId id)
-    {
-      size_t size = GetFileResourceSize(id);
-      result.resize(size);
-      if (size > 0)
-        memcpy(&result[0], GetFileResourceBuffer(id), size);
-    }
-
-    void GetDirectoryResource(std::string& result, DirectoryResourceId id, const char* path)
-    {
-      size_t size = GetDirectoryResourceSize(id, path);
-      result.resize(size);
-      if (size > 0)
-        memcpy(&result[0], GetDirectoryResourceBuffer(id, path), size);
-    }
-""")
-
-
-for ns in NAMESPACE.split('.'):
-    cpp.write('}\n')
-
-cpp.close()
--- a/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-if (USE_GOOGLE_TEST_DEBIAN_PACKAGE)
-  find_path(GOOGLE_TEST_DEBIAN_SOURCES_DIR
-    NAMES src/gtest-all.cc
-    PATHS
-    ${CROSSTOOL_NG_IMAGE}/usr/src/gtest
-    ${CROSSTOOL_NG_IMAGE}/usr/src/googletest/googletest
-    PATH_SUFFIXES src
-    )
-
-  find_path(GOOGLE_TEST_DEBIAN_INCLUDE_DIR
-    NAMES gtest.h
-    PATHS
-    ${CROSSTOOL_NG_IMAGE}/usr/include/gtest
-    )
-
-  message("Path to the Debian Google Test sources: ${GOOGLE_TEST_DEBIAN_SOURCES_DIR}")
-  message("Path to the Debian Google Test includes: ${GOOGLE_TEST_DEBIAN_INCLUDE_DIR}")
-
-  set(GOOGLE_TEST_SOURCES
-    ${GOOGLE_TEST_DEBIAN_SOURCES_DIR}/src/gtest-all.cc
-    )
-
-  include_directories(${GOOGLE_TEST_DEBIAN_SOURCES_DIR})
-
-  if (NOT EXISTS ${GOOGLE_TEST_SOURCES} OR
-      NOT EXISTS ${GOOGLE_TEST_DEBIAN_INCLUDE_DIR}/gtest.h)
-    message(FATAL_ERROR "Please install the libgtest-dev package")
-  endif()
-
-elseif (STATIC_BUILD OR NOT USE_SYSTEM_GOOGLE_TEST)
-  set(GOOGLE_TEST_SOURCES_DIR ${CMAKE_BINARY_DIR}/googletest-release-1.8.1)
-  set(GOOGLE_TEST_URL "http://orthanc.osimis.io/ThirdPartyDownloads/gtest-1.8.1.tar.gz")
-  set(GOOGLE_TEST_MD5 "2e6fbeb6a91310a16efe181886c59596")
-
-  DownloadPackage(${GOOGLE_TEST_MD5} ${GOOGLE_TEST_URL} "${GOOGLE_TEST_SOURCES_DIR}")
-
-  include_directories(
-    ${GOOGLE_TEST_SOURCES_DIR}/googletest
-    ${GOOGLE_TEST_SOURCES_DIR}/googletest/include
-    ${GOOGLE_TEST_SOURCES_DIR}
-    )
-
-  set(GOOGLE_TEST_SOURCES
-    ${GOOGLE_TEST_SOURCES_DIR}/googletest/src/gtest-all.cc
-    )
-
-  # https://code.google.com/p/googletest/issues/detail?id=412
-  if (MSVC) # VS2012 does not support tuples correctly yet
-    add_definitions(/D _VARIADIC_MAX=10)
-  endif()
-  
-  if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase")
-    add_definitions(-DGTEST_HAS_CLONE=0)
-  endif()
-  
-  source_group(ThirdParty\\GoogleTest REGULAR_EXPRESSION ${GOOGLE_TEST_SOURCES_DIR}/.*)
-
-else()
-  include(FindGTest)
-  if (NOT GTEST_FOUND)
-    message(FATAL_ERROR "Unable to find GoogleTest")
-  endif()
-
-  include_directories(${GTEST_INCLUDE_DIRS})
-
-  # The variable GTEST_LIBRARIES contains the shared library of
-  # Google Test, create an alias for more uniformity
-  set(GOOGLE_TEST_LIBRARIES ${GTEST_LIBRARIES})
-endif()
--- a/Resources/Orthanc/README.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-This folder contains an excerpt of the source code of Orthanc. It is
-automatically generated using the "../Resources/SyncOrthancFolder.py"
-script.
--- a/Resources/Orthanc/Toolchains/LinuxStandardBaseToolchain.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-#
-# Full build, as used on the BuildBot CIS:
-#
-#   $ LSB_CC=gcc-4.8 LSB_CXX=g++-4.8 cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=../Resources/LinuxStandardBaseToolchain.cmake -DUSE_LEGACY_JSONCPP=ON -DUSE_LEGACY_LIBICU=ON -DBOOST_LOCALE_BACKEND=icu -DENABLE_PKCS11=ON -G Ninja
-#
-# Or, more lightweight version (without libp11 and ICU):
-#
-#   $ LSB_CC=gcc-4.8 LSB_CXX=g++-4.8 cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=../Resources/LinuxStandardBaseToolchain.cmake -DUSE_LEGACY_JSONCPP=ON -G Ninja
-#
-
-INCLUDE(CMakeForceCompiler)
-
-SET(LSB_PATH $ENV{LSB_PATH} CACHE STRING "")
-SET(LSB_CC $ENV{LSB_CC} CACHE STRING "")
-SET(LSB_CXX $ENV{LSB_CXX} CACHE STRING "")
-SET(LSB_TARGET_VERSION "4.0" CACHE STRING "")
-
-IF ("${LSB_PATH}" STREQUAL "")
-  SET(LSB_PATH "/opt/lsb")
-ENDIF()
-
-IF (EXISTS ${LSB_PATH}/lib64)
-  SET(LSB_TARGET_PROCESSOR "x86_64")
-  SET(LSB_LIBPATH ${LSB_PATH}/lib64-${LSB_TARGET_VERSION})
-ELSEIF (EXISTS ${LSB_PATH}/lib)
-  SET(LSB_TARGET_PROCESSOR "x86")
-  SET(LSB_LIBPATH ${LSB_PATH}/lib-${LSB_TARGET_VERSION})
-ELSE()
-  MESSAGE(FATAL_ERROR "Unable to detect the target processor architecture. Check the LSB_PATH environment variable.")
-ENDIF()
-
-SET(LSB_CPPPATH ${LSB_PATH}/include)
-SET(PKG_CONFIG_PATH ${LSB_LIBPATH}/pkgconfig/)
-
-# the name of the target operating system
-SET(CMAKE_SYSTEM_NAME Linux)
-SET(CMAKE_SYSTEM_VERSION LinuxStandardBase)
-SET(CMAKE_SYSTEM_PROCESSOR ${LSB_TARGET_PROCESSOR})
-
-# which compilers to use for C and C++
-SET(CMAKE_C_COMPILER ${LSB_PATH}/bin/lsbcc)
-
-if (${CMAKE_VERSION} VERSION_LESS "3.6.0") 
-  CMAKE_FORCE_CXX_COMPILER(${LSB_PATH}/bin/lsbc++ GNU)
-else()
-  SET(CMAKE_CXX_COMPILER ${LSB_PATH}/bin/lsbc++)
-endif()
-
-# here is the target environment located
-SET(CMAKE_FIND_ROOT_PATH ${LSB_PATH})
-
-# adjust the default behaviour of the FIND_XXX() commands:
-# search headers and libraries in the target environment, search 
-# programs in the host environment
-SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
-SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
-
-SET(CMAKE_CROSSCOMPILING OFF)
-
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --lsb-target-version=${LSB_TARGET_VERSION} -I${LSB_PATH}/include" CACHE INTERNAL "" FORCE)
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --lsb-target-version=${LSB_TARGET_VERSION} -nostdinc++ -I${LSB_PATH}/include -I${LSB_PATH}/include/c++ -I${LSB_PATH}/include/c++/backward" CACHE INTERNAL "" FORCE)
-SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --lsb-target-version=${LSB_TARGET_VERSION} -L${LSB_LIBPATH} --lsb-besteffort" CACHE INTERNAL "" FORCE)
-SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --lsb-target-version=${LSB_TARGET_VERSION} -L${LSB_LIBPATH} --lsb-besteffort" CACHE INTERNAL "" FORCE)
-
-if (NOT "${LSB_CXX}" STREQUAL "")
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --lsb-cxx=${LSB_CXX}")
-  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --lsb-cxx=${LSB_CXX}")
-  SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --lsb-cxx=${LSB_CXX}")
-endif()
-
-if (NOT "${LSB_CC}" STREQUAL "")
-  SET(CMAKE_C_FLAGS "${CMAKE_CC_FLAGS} --lsb-cc=${LSB_CC}")
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --lsb-cc=${LSB_CC}")
-  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --lsb-cc=${LSB_CC}")
-  SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --lsb-cc=${LSB_CC}")
-endif()
-
--- a/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain32.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-# the name of the target operating system
-set(CMAKE_SYSTEM_NAME Windows)
-
-# which compilers to use for C and C++
-set(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
-set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
-set(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
-
-# here is the target environment located
-set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32)
-
-# adjust the default behaviour of the FIND_XXX() commands:
-# search headers and libraries in the target environment, search 
-# programs in the host environment
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
--- a/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-# the name of the target operating system
-set(CMAKE_SYSTEM_NAME Windows)
-
-# which compilers to use for C and C++
-set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
-set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
-set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
-
-# here is the target environment located
-set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32)
-
-# adjust the default behaviour of the FIND_XXX() commands:
-# search headers and libraries in the target environment, search 
-# programs in the host environment
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
--- a/Resources/Orthanc/Toolchains/MinGWToolchain.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-# the name of the target operating system
-set(CMAKE_SYSTEM_NAME Windows)
-
-# which compilers to use for C and C++
-set(CMAKE_C_COMPILER i586-mingw32msvc-gcc)
-set(CMAKE_CXX_COMPILER i586-mingw32msvc-g++)
-set(CMAKE_RC_COMPILER i586-mingw32msvc-windres)
-
-# here is the target environment located
-set(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc)
-
-# adjust the default behaviour of the FIND_XXX() commands:
-# search headers and libraries in the target environment, search 
-# programs in the host environment
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSTACK_SIZE_PARAM_IS_A_RESERVATION=0x10000" CACHE INTERNAL "" FORCE)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSTACK_SIZE_PARAM_IS_A_RESERVATION=0x10000" CACHE INTERNAL "" FORCE)
Binary file Resources/OrthancLogoDocumentation.png has changed
--- a/Resources/OrthancStone.doxygen	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1795 +0,0 @@
-# Doxyfile 1.8.1.2
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a hash (#) is considered a comment and will be ignored.
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or sequence of words) that should
-# identify the project. Note that if you do not use Doxywizard you need
-# to put quotes around the project name if it contains spaces.
-
-PROJECT_NAME           = OrthancStone
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER         = @ORTHANC_STONE_VERSION@
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer
-# a quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          = "Stone of Orthanc API"
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is
-# included in the documentation. The maximum height of the logo should not
-# exceed 55 pixels and the maximum width should not exceed 200 pixels.
-# Doxygen will copy the logo to the output directory.
-
-PROJECT_LOGO           = @ORTHANC_STONE_ROOT@/Resources/OrthancLogoDocumentation.png
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = OrthancStoneDocumentation
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful if your file system
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding
-# "class=itcl::class" will allow you to use the command class in the
-# itcl::class meaning.
-
-TCL_SUBST              =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this
-# tag. The format is ext=language, where ext is a file extension, and language
-# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
-# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
-# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
-
-EXTENSION_MAPPING      =
-
-# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
-# comments according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you
-# can mix doxygen, HTML, and XML commands with Markdown formatting.
-# Disable only in case of backward compatibilities issues.
-
-MARKDOWN_SUPPORT       = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also makes the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = YES
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
-# unions are shown inside the group in which they are included (e.g. using
-# @ingroup) instead of on a separate page (for HTML and Man pages) or
-# section (for LaTeX and RTF).
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
-# unions with only public data fields will be shown inline in the documentation
-# of the scope in which they are defined (i.e. file, namespace, or group
-# documentation), provided this scope is documented. If set to NO (the default),
-# structs, classes, and unions are shown on a separate page (for HTML and Man
-# pages) or section (for LaTeX and RTF).
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penalty.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will roughly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
-SYMBOL_CACHE_SIZE      = 0
-
-# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
-# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
-# their name and scope. Since this can be an expensive process and often the
-# same symbol appear multiple times in the code, doxygen keeps a cache of
-# pre-resolved symbols. If the cache is too small doxygen will become slower.
-# If the cache is too large, memory is wasted. The cache size is given by this
-# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.
-
-EXTRACT_PACKAGE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespaces are hidden.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
-# will list include files with double quotes in the documentation
-# rather than with sharp brackets.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
-# will sort the (brief and detailed) documentation of class members so that
-# constructors and destructors are listed first. If set to NO (the default)
-# the constructors will appear in the respective orders defined by
-# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
-# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
-# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
-# do proper type resolution of all parameters of a function it will reject a
-# match between the prototype and the implementation of a member function even
-# if there is only one candidate or it is obvious which candidate to choose
-# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
-# will still accept a match between prototype and implementation in such cases.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or macro consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and macros in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page.
-# This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option.
-# You can optionally specify a file name after the option, if omitted
-# DoxygenLayout.xml will be used as the name of the layout file.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files
-# containing the references data. This must be a list of .bib files. The
-# .bib extension is automatically appended if omitted. Using this command
-# requires the bibtex tool to be installed. See also
-# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
-# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
-# feature you need bibtex and perl available in the search path.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# The WARN_NO_PARAMDOC option can be enabled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT                  = @ORTHANC_STONE_ROOT@/Applications \
-                         @ORTHANC_STONE_ROOT@/Framework \
-                         @ORTHANC_STONE_ROOT@/Platforms
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
-# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
-# *.f90 *.f *.for *.vhd *.vhdl
-
-FILE_PATTERNS          = *.h
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE                = @ORTHANC_STONE_ROOT@/Framework/Orthanc/Resources/ \
-                         @ORTHANC_STONE_ROOT@/Applications/Samples/build-wasm/
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS        = Orthanc::Internals
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS       =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-# If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis.
-# Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match.
-# The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty or if
-# non of the patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
-# and it is also possible to disable source filtering for a specific pattern
-# using *.ext= (so without naming a filter). This option only has effect when
-# FILTER_SOURCE_FILES is enabled.
-
-FILTER_SOURCE_PATTERNS =
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C, C++ and Fortran comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.
-# Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = doc
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header. Note that when using a custom header you are responsible
-#  for the proper inclusion of any scripts and style sheets that doxygen
-# needs, which is dependent on the configuration options used.
-# It is advised to generate a default header using "doxygen -w html
-# header.html footer.html stylesheet.css YourConfigFile" and then modify
-# that header. Note that the header is subject to change so you typically
-# have to redo this when upgrading to a newer version of doxygen or when
-# changing the value of configuration settings such as GENERATE_TREEVIEW!
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER            =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# style sheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that
-# the files will be copied as-is; there are no commands or markers available.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
-# Doxygen will adjust the colors in the style sheet and background images
-# according to this color. Hue is specified as an angle on a colorwheel,
-# see http://en.wikipedia.org/wiki/Hue for more information.
-# For instance the value 0 represents red, 60 is yellow, 120 is green,
-# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
-# The allowed range is 0 to 359.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
-# the colors in the HTML output. For a value of 0 the output will use
-# grayscales only. A value of 255 will produce the most vivid colors.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
-# the luminance component of the colors in the HTML output. Values below
-# 100 gradually make the output lighter, whereas values above 100 make
-# the output darker. The value divided by 100 is the actual gamma applied,
-# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
-# and 100 does not change the gamma.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting
-# this to NO can help when comparing the output of multiple runs.
-
-HTML_TIMESTAMP         = NO
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
-# entries shown in the various tree structured indices initially; the user
-# can expand and collapse entries dynamically later on. Doxygen will expand
-# the tree to such a level that at most the specified number of entries are
-# visible (unless a fully collapsed tree already exceeds this amount).
-# So setting the number of entries 1 will produce a full collapsed tree by
-# default. 0 is a special value representing an infinite number of entries
-# and will result in a full expanded tree by default.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-
-GENERATE_DOCSET        = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE               =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING     =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
-# that can be used as input for Qt's qhelpgenerator to generate a
-# Qt Compressed Help (.qch) of the generated HTML documentation.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
-# add. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
-# Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
-# Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
-#  will be generated, which together with the HTML files, form an Eclipse help
-# plugin. To install this plugin and make it available under the help contents
-# menu in Eclipse, the contents of the directory containing the HTML and XML
-# files needs to be copied into the plugins directory of eclipse. The name of
-# the directory within the plugins directory should be the same as
-# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
-# the help appears.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have
-# this name.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
-# at top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it. Since the tabs have the same information as the
-# navigation tree you can set this option to NO if you already set
-# GENERATE_TREEVIEW to YES.
-
-DISABLE_INDEX          = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
-# Since the tree basically has the same information as the tab index you
-# could consider to set DISABLE_INDEX to NO when enabling this option.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
-# (range [0,1..20]) that doxygen will group on one line in the generated HTML
-# documentation. Note that a value of 0 will completely suppress the enum
-# values from appearing in the overview section.
-
-ENUM_VALUES_PER_LINE   = 1
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
-# links to external symbols imported via tag files in a separate window.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are
-# not supported properly for IE 6.0, but are supported on all modern browsers.
-# Note that when changing this option you need to delete any form_*.png files
-# in the HTML output before the changes have effect.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
-# (see http://www.mathjax.org) which uses client side Javascript for the
-# rendering instead of using prerendered bitmaps. Use this if you do not
-# have LaTeX installed or if you want to formulas look prettier in the HTML
-# output. When enabled you may also need to install MathJax separately and
-# configure the path to it using the MATHJAX_RELPATH option.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you need to specify the location relative to the
-# HTML output directory using the MATHJAX_RELPATH option. The destination
-# directory should contain the MathJax.js script. For instance, if the mathjax
-# directory is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to
-# the MathJax Content Delivery Network so you can quickly see the result without
-# installing MathJax.
-# However, it is strongly recommended to install a local
-# copy of MathJax from http://www.mathjax.org before deployment.
-
-MATHJAX_RELPATH        = http://www.mathjax.org/mathjax
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
-# names that should be enabled during MathJax rendering.
-
-MATHJAX_EXTENSIONS     =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box
-# for the HTML output. The underlying search engine uses javascript
-# and DHTML and should work on any modern browser. Note that when using
-# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
-# (GENERATE_DOCSET) there is already a search function so this one should
-# typically be disabled. For large projects the javascript based search engine
-# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
-
-SEARCHENGINE           = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a PHP enabled web server instead of at the web client
-# using Javascript. Doxygen will generate the search PHP script and index
-# file to put on the web server. The advantage of the server
-# based approach is that it scales better to large projects and allows
-# full text search. The disadvantages are that it is more difficult to setup
-# and does not have live searching capabilities.
-
-SERVER_BASED_SEARCH    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-# Note that when enabling USE_PDFLATEX this option is only used for
-# generating bitmaps for formulas in the HTML output, but not in the
-# Makefile that is written to the output directory.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
-# the generated latex document. The footer should contain everything after
-# the last chapter. If it is left blank doxygen will generate a
-# standard footer. Notice: only use this tag if you know what you are doing!
-
-LATEX_FOOTER           =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include
-# source code with syntax highlighting in the LaTeX output.
-# Note that which sources are shown also depends on other settings
-# such as SOURCE_BROWSER.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
-# http://en.wikipedia.org/wiki/BibTeX for more info.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load style sheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA             =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD                =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader.
-# This is useful
-# if you want to understand what is going on.
-# On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# pointed to by INCLUDE_PATH will be searched when a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED             =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition that
-# overrules the definition found in the source code.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all references to function-like macros
-# that are alone on a line, have an all uppercase name, and do not end with a
-# semicolon, because these will confuse the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. For each
-# tag file the location of the external documentation should be added. The
-# format of a tag file without this location is as follows:
-#
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-#
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths
-# or URLs. Note that each tag file must have a unique name (where the name does
-# NOT include the path). If a tag file is not located in the directory in which
-# doxygen is run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option also works with HAVE_DOT disabled, but it is recommended to
-# install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = YES
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
-# allowed to run in parallel. When set to 0 (the default) doxygen will
-# base this on the number of processors available in the system. You can set it
-# explicitly to a value larger than 0 to get control over the balance
-# between CPU load and processing speed.
-
-DOT_NUM_THREADS        = 0
-
-# By default doxygen will use the Helvetica font for all dot files that
-# doxygen generates. When you want a differently looking font you can specify
-# the font name using DOT_FONTNAME. You need to make sure dot is able to find
-# the font, which can be done by putting it in a standard location or by setting
-# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
-# directory containing the font.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the Helvetica font.
-# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
-# set the path where dot can find it.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = NO
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK               = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside
-# the class node. If there are many fields or methods and many nodes the
-# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
-# threshold limits the number of items for each type to make the size more
-# managable. Set this to 0 for no limit. Note that the threshold may be
-# exceeded by 50% before the limit is enforced.
-
-UML_LIMIT_NUM_FIELDS   = 10
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will generate a graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are svg, png, jpg, or gif.
-# If left blank png will be used. If you choose svg you need to set
-# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible in IE 9+ (other browsers do not have this requirement).
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-# Note that this requires a modern browser other than Internet Explorer.
-# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
-# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible. Older versions of IE do not have SVG support.
-
-INTERACTIVE_SVG        = NO
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS           =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the
-# \mscfile command).
-
-MSCFILE_DIRS           =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = YES
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP            = YES
--- a/Resources/SyncOrthancFolder.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-#!/usr/bin/python
-
-#
-# This maintenance script updates the content of the "Orthanc" folder
-# to match the latest version of the Orthanc source code.
-#
-
-import multiprocessing
-import os
-import stat
-import urllib2
-
-TARGET = os.path.join(os.path.dirname(__file__), 'Orthanc')
-PLUGIN_SDK_VERSION = '1.0.0'
-REPOSITORY = 'https://hg.orthanc-server.com/orthanc/raw-file'
-
-FILES = [
-    ('OrthancFramework/Resources/CMake/AutoGeneratedCode.cmake', 'CMake'),
-    ('OrthancFramework/Resources/CMake/Compiler.cmake', 'CMake'),
-    ('OrthancFramework/Resources/CMake/DownloadOrthancFramework.cmake', 'CMake'),
-    ('OrthancFramework/Resources/CMake/DownloadPackage.cmake', 'CMake'),
-    ('OrthancFramework/Resources/CMake/GoogleTestConfiguration.cmake', 'CMake'),
-    ('OrthancFramework/Resources/EmbedResources.py', 'CMake'),
-
-    ('OrthancFramework/Resources/Toolchains/LinuxStandardBaseToolchain.cmake', 'Toolchains'),
-    ('OrthancFramework/Resources/Toolchains/MinGW-W64-Toolchain32.cmake', 'Toolchains'),
-    ('OrthancFramework/Resources/Toolchains/MinGW-W64-Toolchain64.cmake', 'Toolchains'),
-    ('OrthancFramework/Resources/Toolchains/MinGWToolchain.cmake', 'Toolchains'),
-
-    ('OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.h',
-     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
-    ('OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp',
-     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
-    ('OrthancServer/Plugins/Samples/Common/OrthancPluginException.h',
-     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
-    ('OrthancServer/Plugins/Samples/Common/ExportedSymbolsPlugins.list',
-     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
-    ('OrthancServer/Plugins/Samples/Common/OrthancPluginsExports.cmake',
-     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
-    ('OrthancServer/Plugins/Samples/Common/VersionScriptPlugins.map',
-     '../../StoneWebViewer/Resources/Orthanc/Plugins'),
-]
-
-SDK = [
-    'orthanc/OrthancCPlugin.h',
-]
-
-
-def Download(x):
-    branch = x[0]
-    source = x[1]
-    target = os.path.join(TARGET, x[2])
-    print target
-
-    try:
-        os.makedirs(os.path.dirname(target))
-    except:
-        pass
-
-    url = '%s/%s/%s' % (REPOSITORY, branch, source)
-
-    with open(target, 'w') as f:
-        f.write(urllib2.urlopen(url).read())
-
-
-commands = []
-
-for f in FILES:
-    commands.append([ 'default',
-                      f[0],
-                      os.path.join(f[1], os.path.basename(f[0])) ])
-
-for f in SDK:
-    commands.append([
-        'Orthanc-%s' % PLUGIN_SDK_VERSION, 
-        'Plugins/Include/%s' % f,
-        '../../StoneWebViewer/Resources/OrthancSdk-%s/%s' % (PLUGIN_SDK_VERSION, f) 
-    ])
-
-pool = multiprocessing.Pool(10)  # simultaneous downloads
-pool.map(Download, commands)
--- a/Samples/Common/RtViewerApp.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-// Sample app
-#include "RtViewerApp.h"
-#include "RtViewerView.h"
-#include "SampleHelpers.h"
-
-// Stone of Orthanc
-#include "../../Framework/StoneInitialization.h"
-#include "../../Framework/Scene2D/CairoCompositor.h"
-#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/Scene2D/PanSceneTracker.h"
-#include "../../Framework/Scene2D/ZoomSceneTracker.h"
-#include "../../Framework/Scene2D/RotateSceneTracker.h"
-#include "../../Framework/Scene2DViewport/UndoStack.h"
-#include "../../Framework/Scene2DViewport/CreateLineMeasureTracker.h"
-#include "../../Framework/Scene2DViewport/CreateAngleMeasureTracker.h"
-#include "../../Framework/Scene2DViewport/IFlexiblePointerTracker.h"
-#include "../../Framework/Scene2DViewport/MeasureTool.h"
-#include "../../Framework/Scene2DViewport/PredeclaredTypes.h"
-#include "../../Framework/Volumes/VolumeSceneLayerSource.h"
-#include "../../Framework/Oracle/GetOrthancWebViewerJpegCommand.h"
-#include "../../Framework/Scene2D/GrayscaleStyleConfigurator.h"
-#include "../../Framework/Scene2D/LookupTableStyleConfigurator.h"
-#include "../../Framework/Volumes/DicomVolumeImageMPRSlicer.h"
-#include "../../Framework/StoneException.h"
-
-// Orthanc
-#include <Logging.h>
-#include <OrthancException.h>
-
-// System 
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-#include <boost/make_shared.hpp>
-
-#include <stdio.h>
-
-
-namespace OrthancStone
-{
-  void RtViewerApp::InvalidateAllViewports()
-  {
-    for (size_t i = 0; i < views_.size(); ++i)
-    {
-      views_[i]->Invalidate();
-    }
-  }
-
-  const VolumeImageGeometry& RtViewerApp::GetMainGeometry()
-  {
-    ORTHANC_ASSERT(geometryProvider_.get() != NULL);
-    ORTHANC_ASSERT(geometryProvider_->HasGeometry());
-    const VolumeImageGeometry& geometry = geometryProvider_->GetImageGeometry();
-    return geometry;
-  }
-
-  RtViewerApp::RtViewerApp()
-    : undoStack_(new UndoStack)
-  {
-    // Create the volumes that will be filled later on
-    ctVolume_ = boost::make_shared<DicomVolumeImage>();
-    doseVolume_ = boost::make_shared<DicomVolumeImage>();
-  }
-
-  boost::shared_ptr<RtViewerApp> RtViewerApp::Create()
-  {
-    boost::shared_ptr<RtViewerApp> thisOne(new RtViewerApp());
-    return thisOne;
-  }
-
-  void RtViewerApp::DisableTracker()
-  {
-    if (activeTracker_)
-    {
-      activeTracker_->Cancel();
-      activeTracker_.reset();
-    }
-  }
-
-  void RtViewerApp::CreateView(const std::string& canvasId, VolumeProjection projection)
-  {
-    boost::shared_ptr<RtViewerView> 
-      view(new RtViewerView(shared_from_this(), canvasId, projection));
-
-    view->RegisterMessages();
-
-    view->CreateLayers(ctLoader_, doseLoader_, doseVolume_, rtstructLoader_);
-
-    views_.push_back(view);
-  }
-
-  void RtViewerApp::CreateLoaders()
-  {
-    // the viewport hosts the scene
-    {
-      // "true" means use progressive quality (jpeg 50 --> jpeg 90 --> 16-bit raw)
-      // "false" means only using hi quality
-      // TODO: add flag for quality
-      ctLoader_ = OrthancSeriesVolumeProgressiveLoader::Create(*loadersContext_, ctVolume_, true);
-      
-      // better priority for CT vs dose and struct
-      ctLoader_->SetSchedulingPriority(-100);
-
-
-      // we need to store the CT loader to ask from geometry details later on when geometry is loaded
-      geometryProvider_ = ctLoader_;
-
-      doseLoader_ = OrthancMultiframeVolumeLoader::Create(*loadersContext_, doseVolume_);
-      rtstructLoader_ = DicomStructureSetLoader::Create(*loadersContext_);
-    }
-
-    /**
-    Register for notifications issued by the loaders
-    */
-
-    Register<DicomVolumeImage::GeometryReadyMessage>
-      (*ctLoader_, &RtViewerApp::HandleGeometryReady);
-
-    Register<OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality>
-      (*ctLoader_, &RtViewerApp::HandleCTLoaded);
-
-    Register<DicomVolumeImage::ContentUpdatedMessage>
-      (*ctLoader_, &RtViewerApp::HandleCTContentUpdated);
-
-    Register<DicomVolumeImage::ContentUpdatedMessage>
-      (*doseLoader_, &RtViewerApp::HandleDoseLoaded);
-
-    Register<DicomStructureSetLoader::StructuresReady>
-      (*rtstructLoader_, &RtViewerApp::HandleStructuresReady);
-
-    Register<DicomStructureSetLoader::StructuresUpdated>
-      (*rtstructLoader_, &RtViewerApp::HandleStructuresUpdated);
-  }
-
-  void RtViewerApp::StartLoaders()
-  {
-    ORTHANC_ASSERT(HasArgument("ctseries") && HasArgument("rtdose") && HasArgument("rtstruct"));
-
-    LOG(INFO) << "About to load:";
-    LOG(INFO) << "  CT       : " << GetArgument("ctseries");
-    LOG(INFO) << "  RTDOSE   : " << GetArgument("rtdose");
-    LOG(INFO) << "  RTSTRUCT : " << GetArgument("rtstruct");
-    ctLoader_->LoadSeries(GetArgument("ctseries"));
-    doseLoader_->LoadInstance(GetArgument("rtdose"));
-    rtstructLoader_->LoadInstanceFullVisibility(GetArgument("rtstruct"));
-  }
-
-  void RtViewerApp::HandleGeometryReady(const DicomVolumeImage::GeometryReadyMessage& message)
-  {
-    for (size_t i = 0; i < views_.size(); ++i)
-    {
-      views_[i]->RetrieveGeometry();
-    }
-    FitContent();
-    UpdateLayersInAllViews();
-  }
-
-  void RtViewerApp::FitContent()
-  {
-    for (size_t i = 0; i < views_.size(); ++i)
-    {
-      views_[i]->FitContent();
-    }
-  }
-
-  void RtViewerApp::UpdateLayersInAllViews()
-  {
-    for (size_t i = 0; i < views_.size(); ++i)
-    {
-      views_[i]->UpdateLayers();
-    }
-  }
-
-  void RtViewerApp::HandleCTLoaded(const OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality& message)
-  {
-    for (size_t i = 0; i < views_.size(); ++i)
-    {
-      views_[i]->RetrieveGeometry();
-    }
-    UpdateLayersInAllViews();
-  }
-
-  void RtViewerApp::HandleCTContentUpdated(const DicomVolumeImage::ContentUpdatedMessage& message)
-  {
-    UpdateLayersInAllViews();
-  }
-
-  void RtViewerApp::HandleDoseLoaded(const DicomVolumeImage::ContentUpdatedMessage& message)
-  {
-    //TODO: compute dose extent, with outlier rejection
-    UpdateLayersInAllViews();
-  }
-
-  void RtViewerApp::HandleStructuresReady(const DicomStructureSetLoader::StructuresReady& message)
-  {
-    UpdateLayersInAllViews();
-  }
-
-  void RtViewerApp::HandleStructuresUpdated(const DicomStructureSetLoader::StructuresUpdated& message)
-  {
-    UpdateLayersInAllViews();
-  }
-
-  void RtViewerApp::SetArgument(const std::string& key, const std::string& value)
-  {
-    if (key == "loglevel")
-      OrthancStoneHelpers::SetLogLevel(value);
-    else
-      arguments_[key] = value;
-  }
-
-  std::string RtViewerApp::GetArgument(const std::string& key) const
-  {
-    std::map<std::string, std::string>::const_iterator found = arguments_.find(key);
-    if (found == arguments_.end())
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
-    }
-    else
-    {
-      return found->second;
-    }
-  }
-
-  bool RtViewerApp::HasArgument(const std::string& key) const
-  {
-    return (arguments_.find(key) != arguments_.end());
-  }
-}
-
--- a/Samples/Common/RtViewerApp.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Loaders/DicomStructureSetLoader.h"
-#include "../../Framework/Loaders/ILoadersContext.h"
-#include "../../Framework/Loaders/OrthancMultiframeVolumeLoader.h"
-#include "../../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
-#include "../../Framework/Messages/IMessageEmitter.h"
-#include "../../Framework/Messages/IObserver.h"
-#include "../../Framework/Messages/ObserverBase.h"
-#include "../../Framework/Oracle/OracleCommandExceptionMessage.h"
-#include "../../Framework/Scene2DViewport/ViewportController.h"
-#include "../../Framework/Viewport/IViewport.h"
-#include "../../Framework/Volumes/DicomVolumeImage.h"
-
-#include <boost/enable_shared_from_this.hpp>
-#include <boost/thread.hpp>
-#include <boost/noncopyable.hpp>
-
-#if ORTHANC_ENABLE_SDL
-#include <SDL.h>
-#endif
-
-namespace OrthancStone
-{
-  class OpenGLCompositor;
-  class IVolumeSlicer;
-  class ILayerStyleConfigurator;
-  class DicomStructureSetLoader;
-  class IOracle;
-  class ThreadedOracle;
-  class VolumeSceneLayerSource;
-  class SdlOpenGLViewport;
-  class RtViewerView;
-   
-  static const unsigned int FONT_SIZE_0 = 32;
-  static const unsigned int FONT_SIZE_1 = 24;
-
-  class Scene2D;
-  class UndoStack;
-
-  /**
-  This application subclasses IMessageEmitter to use a mutex before forwarding Oracle messages (that
-  can be sent from multiple threads)
-  */
-  class RtViewerApp : public ObserverBase<RtViewerApp>
-  {
-  public:
-
-    void PrepareScene();
-
-#if ORTHANC_ENABLE_SDL
-  public:
-    void RunSdl(int argc, char* argv[]);
-    void SdlRunLoop(const std::vector<boost::shared_ptr<OrthancStone::RtViewerView> >& views,
-                    OrthancStone::IViewportInteractor& interactor);
-  private:
-    void ProcessOptions(int argc, char* argv[]);
-    void HandleApplicationEvent(const SDL_Event& event);
-#elif ORTHANC_ENABLE_WASM
-  public:
-    void RunWasm();
-#else
-#  error Either ORTHANC_ENABLE_SDL or ORTHANC_ENABLE_WASM must be enabled
-#endif
-
-  public:
-    void DisableTracker();
-
-    /**
-    Called by command-line option processing or when parsing the URL 
-    parameters.
-    */
-    void SetArgument(const std::string& key, const std::string& value);
-
-    const VolumeImageGeometry& GetMainGeometry();
-
-    static boost::shared_ptr<RtViewerApp> Create();
-
-    void CreateView(const std::string& canvasId, VolumeProjection projection);
-
-  protected:
-    RtViewerApp();
-
-  private:
-    void CreateLoaders();
-    void StartLoaders();
-    void SelectNextTool();
-
-    // argument handling
-    // SetArgument is above (public section)
-    std::map<std::string, std::string> arguments_;
-
-    std::string GetArgument(const std::string& key) const;
-    bool HasArgument(const std::string& key) const;
-
-    /**
-      This adds the command at the top of the undo stack
-    */
-    //void Commit(boost::shared_ptr<TrackerCommand> cmd);
-    void Undo();
-    void Redo();
-
-    void HandleGeometryReady(const DicomVolumeImage::GeometryReadyMessage& message);
-    
-    // TODO: wire this
-    void HandleCTLoaded(const OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality& message);
-    void HandleCTContentUpdated(const OrthancStone::DicomVolumeImage::ContentUpdatedMessage& message);
-    void HandleDoseLoaded(const OrthancStone::DicomVolumeImage::ContentUpdatedMessage& message);
-    void HandleStructuresReady(const OrthancStone::DicomStructureSetLoader::StructuresReady& message);
-    void HandleStructuresUpdated(const OrthancStone::DicomStructureSetLoader::StructuresUpdated& message);
-
-
-  private:
-    void RetrieveGeometry();
-    void FitContent();
-    void InvalidateAllViewports();
-    void UpdateLayersInAllViews();
-
-  private:
-    boost::shared_ptr<DicomVolumeImage>  ctVolume_;
-    boost::shared_ptr<DicomVolumeImage>  doseVolume_;
-
-    std::vector<boost::shared_ptr<RtViewerView> >  views_;
-
-    boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> ctLoader_;
-    boost::shared_ptr<OrthancMultiframeVolumeLoader> doseLoader_;
-    boost::shared_ptr<DicomStructureSetLoader>  rtstructLoader_;
-
-    /** encapsulates resources shared by loaders */
-    boost::shared_ptr<ILoadersContext>                  loadersContext_;
-
-    /**
-    another interface to the ctLoader object (that also implements the IVolumeSlicer interface), that serves as the 
-    reference for the geometry (position and dimensions of the volume + size of each voxel). It could be changed to be 
-    the dose instead, but the CT is chosen because it usually has a better spatial resolution.
-    */
-    boost::shared_ptr<OrthancStone::IGeometryProvider>  geometryProvider_;
-
-
-    boost::shared_ptr<IFlexiblePointerTracker> activeTracker_;
-
-    boost::shared_ptr<UndoStack> undoStack_;
-  };
-
-}
-
-
- 
--- a/Samples/Common/RtViewerView.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,350 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-// Sample app
-#include "RtViewerView.h"
-#include "RtViewerApp.h"
-#include "SampleHelpers.h"
-
-#include <EmbeddedResources.h>
-
-// Stone of Orthanc
-#include "../../Framework/Oracle/GetOrthancWebViewerJpegCommand.h"
-#include "../../Framework/Scene2D/CairoCompositor.h"
-#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "../../Framework/Scene2D/GrayscaleStyleConfigurator.h"
-#include "../../Framework/Scene2D/LookupTableStyleConfigurator.h"
-#include "../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../Framework/Scene2D/PanSceneTracker.h"
-#include "../../Framework/Scene2D/RotateSceneTracker.h"
-#include "../../Framework/Scene2D/ZoomSceneTracker.h"
-#include "../../Framework/Scene2DViewport/CreateAngleMeasureTracker.h"
-#include "../../Framework/Scene2DViewport/CreateLineMeasureTracker.h"
-#include "../../Framework/Scene2DViewport/IFlexiblePointerTracker.h"
-#include "../../Framework/Scene2DViewport/MeasureTool.h"
-#include "../../Framework/Scene2DViewport/PredeclaredTypes.h"
-#include "../../Framework/Scene2DViewport/UndoStack.h"
-#include "../../Framework/StoneException.h"
-#include "../../Framework/StoneInitialization.h"
-#include "../../Framework/Volumes/DicomVolumeImageMPRSlicer.h"
-#include "../../Framework/Volumes/VolumeSceneLayerSource.h"
-
-// Orthanc
-#include <Compatibility.h>  // For std::unique_ptr<>
-#include <Logging.h>
-#include <OrthancException.h>
-
-// System 
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-#include <boost/make_shared.hpp>
-
-#include <stdio.h>
-
-
-namespace OrthancStone
-{
-  boost::shared_ptr<RtViewerApp> RtViewerView::GetApp()
-  {
-    return app_.lock();
-  }
-
-  void RtViewerView::DisplayInfoText()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    // do not try to use stuff too early!
-    OrthancStone::ICompositor& compositor = lock->GetCompositor();
-
-    std::stringstream msg;
-
-    for (std::map<std::string, std::string>::const_iterator kv = infoTextMap_.begin();
-         kv != infoTextMap_.end(); ++kv)
-    {
-      msg << kv->first << " : " << kv->second << std::endl;
-    }
-    std::string msgS = msg.str();
-
-    TextSceneLayer* layerP = NULL;
-    if (scene.HasLayer(FIXED_INFOTEXT_LAYER_ZINDEX))
-    {
-      TextSceneLayer& layer = dynamic_cast<TextSceneLayer&>(
-        scene.GetLayer(FIXED_INFOTEXT_LAYER_ZINDEX));
-      layerP = &layer;
-    }
-    else
-    {
-      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
-      layerP = layer.get();
-      layer->SetColor(0, 255, 0);
-      layer->SetFontIndex(1);
-      layer->SetBorder(20);
-      layer->SetAnchor(BitmapAnchor_TopLeft);
-      //layer->SetPosition(0,0);
-      scene.SetLayer(FIXED_INFOTEXT_LAYER_ZINDEX, layer.release());
-    }
-    // position the fixed info text in the upper right corner
-    layerP->SetText(msgS.c_str());
-    double cX = compositor.GetCanvasWidth() * (-0.5);
-    double cY = compositor.GetCanvasHeight() * (-0.5);
-    scene.GetCanvasToSceneTransform().Apply(cX, cY);
-    layerP->SetPosition(cX, cY);
-    lock->Invalidate();
-  }
-
-  void RtViewerView::DisplayFloatingCtrlInfoText(const PointerEvent& e)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    ScenePoint2D p = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform());
-
-    char buf[128];
-    sprintf(buf, "S:(%0.02f,%0.02f) C:(%0.02f,%0.02f)",
-            p.GetX(), p.GetY(),
-            e.GetMainPosition().GetX(), e.GetMainPosition().GetY());
-
-    if (scene.HasLayer(FLOATING_INFOTEXT_LAYER_ZINDEX))
-    {
-      TextSceneLayer& layer =
-        dynamic_cast<TextSceneLayer&>(scene.GetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX));
-      layer.SetText(buf);
-      layer.SetPosition(p.GetX(), p.GetY());
-    }
-    else
-    {
-      std::unique_ptr<TextSceneLayer> layer(new TextSceneLayer);
-      layer->SetColor(0, 255, 0);
-      layer->SetText(buf);
-      layer->SetBorder(20);
-      layer->SetAnchor(BitmapAnchor_BottomCenter);
-      layer->SetPosition(p.GetX(), p.GetY());
-      scene.SetLayer(FLOATING_INFOTEXT_LAYER_ZINDEX, layer.release());
-    }
-  }
-
-  void RtViewerView::HideInfoText()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    scene.DeleteLayer(FLOATING_INFOTEXT_LAYER_ZINDEX);
-  }
-
-  void RtViewerView::OnSceneTransformChanged(
-    const ViewportController::SceneTransformChanged& message)
-  {
-    DisplayInfoText();
-  }
-
-  void RtViewerView::Invalidate()
-  {
-    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
-    lock->GetCompositor().FitContent(lock->GetController().GetScene());
-    lock->Invalidate();
-  }
-
-  void RtViewerView::FitContent()
-  {
-    std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
-    lock->GetCompositor().FitContent(lock->GetController().GetScene());
-    lock->Invalidate();
-  }
-
-  void RtViewerView::Scroll(int delta)
-  {
-    if (!planes_.empty())
-    {
-      int next = 0;
-      int temp = static_cast<int>(currentPlane_) + delta;
-
-      if (temp < 0)
-      {
-        next = 0;
-      }
-      else if (temp >= static_cast<int>(planes_.size()))
-      {
-        next = static_cast<unsigned int>(planes_.size()) - 1;
-      }
-      else
-      {
-        next = static_cast<size_t>(temp);
-      }
-      LOG(INFO) << "RtViewerView::Scroll(" << delta << ") --> slice is now = " << next;
-
-      if (next != static_cast<int>(currentPlane_))
-      {
-        currentPlane_ = next;
-        UpdateLayers();
-      }
-    }
-  }
-
-  void RtViewerView::RetrieveGeometry()
-  {
-    const VolumeImageGeometry& geometry = GetApp()->GetMainGeometry();
-
-    const unsigned int depth = geometry.GetProjectionDepth(projection_);
-    currentPlane_ = depth / 2;
-
-    planes_.resize(depth);
-
-    for (unsigned int z = 0; z < depth; z++)
-    {
-      planes_[z] = geometry.GetProjectionSlice(projection_, z);
-    }
-
-    UpdateLayers();
-  }
-
-  void RtViewerView::UpdateLayers()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-
-    if (planes_.size() == 0)
-    {
-      RetrieveGeometry();
-    }
-
-    if (currentPlane_ < planes_.size())
-    {
-      if (ctVolumeLayerSource_.get() != NULL)
-      {
-        ctVolumeLayerSource_->Update(planes_[currentPlane_]);
-      }
-      if (doseVolumeLayerSource_.get() != NULL)
-      {
-        doseVolumeLayerSource_->Update(planes_[currentPlane_]);
-      }
-      if (structLayerSource_.get() != NULL)
-      {
-        structLayerSource_->Update(planes_[currentPlane_]);
-      }
-    }
-    lock->Invalidate();
-  }
-
-  void RtViewerView::PrepareViewport()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    ICompositor& compositor = lock->GetCompositor();
-
-    // False means we do NOT let a hi-DPI aware desktop managedr treat this as a legacy application that requires
-    // scaling.
-    controller.FitContent(compositor.GetCanvasWidth(), compositor.GetCanvasHeight());
-
-    std::string ttf;
-    Orthanc::EmbeddedResources::GetFileResource(ttf, Orthanc::EmbeddedResources::UBUNTU_FONT);
-    compositor.SetFont(0, ttf, FONT_SIZE_0, Orthanc::Encoding_Latin1);
-    compositor.SetFont(1, ttf, FONT_SIZE_1, Orthanc::Encoding_Latin1);
-  }
-
-  void RtViewerView::SetInfoDisplayMessage(
-    std::string key, std::string value)
-  {
-    if (value == "")
-      infoTextMap_.erase(key);
-    else
-      infoTextMap_[key] = value;
-    DisplayInfoText();
-  }
-
-  void RtViewerView::RegisterMessages()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Register<ViewportController::SceneTransformChanged>(controller, &RtViewerView::OnSceneTransformChanged);
-  }
-
-  void RtViewerView::CreateLayers(boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> ctLoader,
-                                  boost::shared_ptr<OrthancMultiframeVolumeLoader>        doseLoader,
-                                  boost::shared_ptr<DicomVolumeImage>                     doseVolume,
-                                  boost::shared_ptr<DicomStructureSetLoader>              rtstructLoader)
-  {
-    /**
-    Configure the CT
-    */
-    std::unique_ptr<GrayscaleStyleConfigurator> style(new GrayscaleStyleConfigurator);
-    style->SetLinearInterpolation(true);
-
-    this->SetCtVolumeSlicer(ctLoader, style.release());
-
-    {
-      std::string lut;
-      Orthanc::EmbeddedResources::GetFileResource(lut, Orthanc::EmbeddedResources::COLORMAP_HOT);
-
-      std::unique_ptr<LookupTableStyleConfigurator> config(new LookupTableStyleConfigurator);
-      config->SetLookupTable(lut);
-
-      boost::shared_ptr<DicomVolumeImageMPRSlicer> tmp(new DicomVolumeImageMPRSlicer(doseVolume));
-      this->SetDoseVolumeSlicer(tmp, config.release());
-    }
-
-    this->SetStructureSet(rtstructLoader);
-  }
-
-  void RtViewerView::SetCtVolumeSlicer(const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
-                                       OrthancStone::ILayerStyleConfigurator* style)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-    int depth = scene.GetMaxDepth() + 1;
-
-    ctVolumeLayerSource_.reset(new OrthancStone::VolumeSceneLayerSource(viewport_, depth, volume));
-
-    if (style != NULL)
-    {
-      ctVolumeLayerSource_->SetConfigurator(style);
-    }
-  }
-
-  void RtViewerView::SetDoseVolumeSlicer(const boost::shared_ptr<OrthancStone::IVolumeSlicer>& volume,
-                                         OrthancStone::ILayerStyleConfigurator* style)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-    int depth = scene.GetMaxDepth() + 1;
-
-    doseVolumeLayerSource_.reset(new OrthancStone::VolumeSceneLayerSource(viewport_, depth, volume));
-
-    if (style != NULL)
-    {
-      doseVolumeLayerSource_->SetConfigurator(style);
-    }
-  }
-
-  void RtViewerView::SetStructureSet(const boost::shared_ptr<OrthancStone::DicomStructureSetLoader>& volume)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-    int depth = scene.GetMaxDepth() + 1;
-
-    structLayerSource_.reset(new OrthancStone::VolumeSceneLayerSource(viewport_, depth, volume));
-  }
-}
--- a/Samples/Common/RtViewerView.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../Framework/Loaders/DicomStructureSetLoader.h"
-#include "../../Framework/Loaders/ILoadersContext.h"
-#include "../../Framework/Loaders/OrthancMultiframeVolumeLoader.h"
-#include "../../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
-#include "../../Framework/Messages/IMessageEmitter.h"
-#include "../../Framework/Messages/IObserver.h"
-#include "../../Framework/Messages/ObserverBase.h"
-#include "../../Framework/Oracle/OracleCommandExceptionMessage.h"
-#include "../../Framework/Scene2DViewport/ViewportController.h"
-#include "../../Framework/Viewport/IViewport.h"
-#include "../../Framework/Volumes/DicomVolumeImage.h"
-#include "../../Framework/Volumes/VolumeSceneLayerSource.h"
-
-#include <boost/enable_shared_from_this.hpp>
-#include <boost/thread.hpp>
-#include <boost/noncopyable.hpp>
-
-namespace OrthancStone
-{
-  class RtViewerApp;
-
-  class RtViewerView : public ObserverBase<RtViewerView>
-  {
-  public:
-    RtViewerView(boost::weak_ptr<RtViewerApp> app, 
-                 const std::string& canvasId, 
-                 VolumeProjection projection) 
-      : app_(app)
-      , currentPlane_(0)
-      , projection_(projection)
-    {
-      viewport_ = CreateViewport(canvasId);
-      FLOATING_INFOTEXT_LAYER_ZINDEX = 6;
-      FIXED_INFOTEXT_LAYER_ZINDEX = 7;
-    }
-
-    /**
-    This method is called when the scene transform changes. It allows to
-    recompute the visual elements whose content depend upon the scene transform
-    */
-    void OnSceneTransformChanged(
-      const ViewportController::SceneTransformChanged& message);
-
-    /**
-    This method will ask the VolumeSceneLayerSource, that are responsible to
-    generated 2D content based on a volume and a cutting plane, to regenerate
-    it. This is required if the volume itself changes (during loading) or if
-    the cutting plane is changed
-    */
-    void UpdateLayers();
-
-    void Refresh();
-
-    void TakeScreenshot(
-      const std::string& target,
-      unsigned int canvasWidth,
-      unsigned int canvasHeight);
-
-    void Scroll(int delta);
-
-    void Invalidate();
-    void FitContent();
-    void RetrieveGeometry();
-    void PrepareViewport();
-    void RegisterMessages();
-
-#if ORTHANC_ENABLE_SDL == 1
-    void EnableGLDebugOutput();
-#endif
-
-    void CreateLayers(boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> ctLoader,
-                      boost::shared_ptr<OrthancMultiframeVolumeLoader>        doseLoader,
-                      boost::shared_ptr<DicomVolumeImage>                     doseVolume,
-                      boost::shared_ptr<DicomStructureSetLoader>              rtstructLoader);
-
-    boost::shared_ptr<IViewport> GetViewport()
-    {
-      return viewport_;
-    }
-
-  private:
-    void SetInfoDisplayMessage(std::string key, std::string value);
-    boost::shared_ptr<RtViewerApp> GetApp();
-    boost::shared_ptr<IViewport> CreateViewport(const std::string& canvasId);
-    void DisplayInfoText();
-    void HideInfoText();
-    void DisplayFloatingCtrlInfoText(const PointerEvent& e);
-
-    void SetCtVolumeSlicer(const boost::shared_ptr<IVolumeSlicer>& volume,
-                           ILayerStyleConfigurator* style);
-
-    void SetDoseVolumeSlicer(const boost::shared_ptr<IVolumeSlicer>& volume,
-                             ILayerStyleConfigurator* style);
-
-    void SetStructureSet(const boost::shared_ptr<DicomStructureSetLoader>& volume);
-
-  private:
-    boost::weak_ptr<RtViewerApp> app_;
-    boost::shared_ptr<VolumeSceneLayerSource>  ctVolumeLayerSource_, doseVolumeLayerSource_, structLayerSource_;
-
-  // collection of cutting planes for this particular view
-    std::vector<OrthancStone::CoordinateSystem3D>       planes_;
-    size_t                                              currentPlane_;
-
-    VolumeProjection                                    projection_;
-
-    std::map<std::string, std::string> infoTextMap_;
-
-    int FLOATING_INFOTEXT_LAYER_ZINDEX;
-    int FIXED_INFOTEXT_LAYER_ZINDEX;
-    boost::shared_ptr<IViewport> viewport_;
-  };
-}
--- a/Samples/Common/SampleHelpers.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include <Logging.h>
-
-#include <boost/algorithm/string.hpp>
-
-#include <string>
-#include <iostream>
-
-namespace OrthancStoneHelpers
-{
-  inline void SetLogLevel(std::string logLevel)
-  {
-    boost::to_lower(logLevel);
-    if (logLevel == "warning")
-    {
-      Orthanc::Logging::EnableInfoLevel(false);
-      Orthanc::Logging::EnableTraceLevel(false);
-    }
-    else if (logLevel == "info")
-    {
-      Orthanc::Logging::EnableInfoLevel(true);
-      Orthanc::Logging::EnableTraceLevel(false);
-    }
-    else if (logLevel == "trace")
-    {
-      Orthanc::Logging::EnableInfoLevel(true);
-      Orthanc::Logging::EnableTraceLevel(true);
-    }
-    else
-    {
-      std::cerr << "Unknown log level \"" << logLevel << "\". Will use TRACE as default!";
-      Orthanc::Logging::EnableInfoLevel(true);
-      Orthanc::Logging::EnableTraceLevel(true);
-    }
-  }
-}
--- a/Samples/README.md	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +0,0 @@
-General
-=======
-These samples assume that a recent version of Orthanc is checked out in an
-`orthanc` folder next to the `orthanc-stone` folder. Let's call the top folder
-the `devroot` folder. This name does not matter and is not used anywhere.
-
-Here's the directory layout that we suggest:
-
-```
-devroot/
- |
- +- orthanc/
- |
- +- orthanc-stone/
- |
- ...
-```
-
- Orthanc can be retrieved with:
- ```
- hg clone https://hg.orthanc-server.com/orthanc
- ```
-
-Furthermore, the samples usually assume that an Orthanc is running locally,
-without authentication, on port 8042. The samples can easily be tweaked if 
-your setup is different.
-
-When Dicom resources are to be displayed, their IDs can be supplied in the 
-various ways suitable for the platform (command-line arguments, URL parameters
-or through the GUI)
-
-
-This repo contains two sample projects:
-
-SingleFrameViewer
------------------
-
-This sample application displays a single frame of a Dicom instance that can
-be loaded from Orthanc, either by using the Orthanc REST API or through the 
-Dicomweb server functionality of Orthanc.
-
-RtViewer
---------
-
-This sample application displays set of Radiotherapy data:
-- a CT scan
-- an RT-Dose
-- an RT-Struct
-
-The WebAssembly version displays 3 viewports with MPR data
-while the SDL sample displays a single viewport.
-
- 
-WebAssembly samples
-===================
-
-Building the WebAssembly samples require the Emscripten SDK 
-(https://emscripten.org/). This SDK goes far beyond the simple compilation to
-the wasm (Web Assembly) bytecode and provides a comprehensive library that 
-eases porting native C and C++ programs and libraries. The Emscripten SDK also
-makes it easy to generate the companion Javascript files requires to use a 
-wasm module in a web application.
-
-Although Emscripten runs on all major platforms, Stone of Orthanc is developed
-and tested with the Linux version of Emscripten.
-
-Emscripten runs perfectly fine under the Windows Subsystem for Linux (that is
-the environment used quite often by the Stone of Orthanc team)
-
-**Important note:** The following examples **and the build scripts** will 
-assume that you have installed the Emscripten SDK in `~/apps/emsdk`.
-
-The following packages should get you going (a Debian-like distribution such 
-as Debian or Ubuntu is assumed)
-
-```
-sudo apt-get update 
-sudo apt-get install -y build-essential curl wget git python cmake pkg-config
-sudo apt-get install -y mercurial unzip npm ninja-build p7zip-full gettext-base 
-```
-
-To build the Wasm samples, just launch the `build-wasm-samples.sh` script from
-this folder.  Optionaly, you can pass the build type as an argument.
-We suggest that you do *not* use the `Debug` configuration unless you really 
-need it, for the additional checks that are made will lead to a very long 
-build time and much slower execution (more severe than with a native non-wasm
-target)
-
-In order to run the sample, you may serve it with the ServeFolders plugin.
-You can i.e: add such a section in your orthanc configuration file:
-
-```
-{
-  "Plugins" : ["LibServeFolders.so],
-  "ServeFolders" : {
-    "/single-frame-viewer" : "..../out/install-stone-wasm-samples-RelWithDebInfo/SingleFrameViewer",
-    "/rt-viewer": "..../out/install-stone-wasm-samples-RelWithDebInfo/RtViewer"
-  }
-}
-```
-
-You'll then be able to open the single-frame-viewer demo at `http://localhost:8042/single-frame-viewer/index.html` 
-
-The rt-viewer demo at
-`http://localhost:8044/rt-viewer/index.html?ctseries=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&rtdose=eac822ef-a395f94e-e8121fe0-8411fef8-1f7bffad&rtstruct=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9`.  Note that you must provide 3 ids in the url:
-
-- the CT series Orthanc ID
-- the RT-Dose instance Orthanc ID
-- the RT-Struct instance Orthanc ID
-
-
-RtViewer
------------------
-
-This sample application displays three MPR views of a CT+RTDOSE+RTSTRUCT dataset, loaded from Orthanc. The Orthanc IDs of the dataset must be supplied as URL parameters like:
-
-```
-http://localhost:9979/rtviewer/index.html?loglevel=info&ctseries=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&rtdose=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb&rtstruct=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
-```
-
-(notice the loglevel parameter that can be `warning`, `info` or `trace`, in increasing verbosity order)
-
-This sample uses plain Javascript and requires the 
-Emscripten toolchain and cmake, in addition to a few standard packages.
-
-To build it, just launch the `build-wasm-RtViewer.sh` script from
-this folder.  Optionaly, you can pass the build type as an argument.
-We suggest that you do *not* use the `Debug` configuration unless you really 
-need it, for the additional checks that are made will lead to a very long 
-build time and much slower execution (more severe than with a native non-wasm
-target)
-
-In order to run the sample, you may serve it with the ServeFolders plugin.
-You can i.e: add such a section in your orthanc configuration file:
-
-```
-{
-  "Plugins" : ["LibServeFolders.so],
-  "ServeFolders" : {
-    "/rt-viewer" : "..../out/install-stone-wasm-RtViewer-RelWithDebInfo"
-  }
-}
-```
-
-You'll then be able to open the demo at `http://localhost:8042/rt-viewer/index.html`
-
-
-Native samples
-=================
-
-### Windows build 
-
-Here's how to build the SdlSimpleViewer example using Visual Studio 2019
-(the shell is Powershell, but the legacy shell can also be used with some 
-tweaks). This example is meant to be launched from the folder above 
-orthanc-stone.
-
-```
-  # create the build folder and navigate to it
-  $buildDir = "build-stone-sdlviewer-msvc16-x64"
-
-  if (-not (Test-Path $buildDir)) {
-    mkdir -p $buildDir | Out-Null
-  }
-  
-  cd $buildDir
-  
-  # perform the configuration
-  cmake -G "Visual Studio 16 2019" -A x64 `
-    -DMSVC_MULTIPLE_PROCESSES=ON `
-    -DALLOW_DOWNLOADS=ON `
-    -DSTATIC_BUILD=ON `
-    -DOPENSSL_NO_CAPIENG=ON `
-    ../orthanc-stone/Samples/Sdl
-  
-  $solutionPath = ls -filter *.sln
-  Write-Host "Solution file(s) available at: $solutionPath"
-```
-
-The initial configuration step will be quite lengthy, for CMake needs to 
-setup its internal cache based on your environment and build tools.
-
-Subsequent runs will be several orders of magnitude faster!
-
-One the solution (.sln) file is ready, you can open it using the Visual Studio
-IDE and choose Build --> Build solution.
-
-An alternative is to execute `cmake --build .` in the build folder created by
-the script.
-
-In order to run the sample, make sure you've an Orthanc server running i.e. on 
-port 8042 and launch:
-
-```
-./SdlSimpleViewer --orthanc http://localhost:8042 --instance 7fc84013-abef174e-3354ca83-b9cdb2a4-f1a74368
-
-./RtViewerSdl --orthanc http://localhost:8042 --ctseries a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa --rtdose 830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb --rtstruct 54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
-```
-
-RtViewer
----------------
-
-### Windows build 
-
-Here's how to build the SdlSimpleViewer example using Visual Studio 2019
-(the shell is Powershell, but the legacy shell can also be used with some 
-tweaks). This example is meant to be launched from the folder above 
-orthanc-stone.
-
-```
-  $buildRootDir = "out"
-  $buildDirName = "build-stone-sdl-RtViewer-msvc16-x64"
-  $buildDir = Join-Path -Path $buildRootDir -ChildPath $buildDirName
-
-  if (-not (Test-Path $buildDir)) {
-    mkdir -p $buildDir | Out-Null
-  }
-  
-  cd $buildDir
-  
-  cmake -G "Visual Studio 16 2019" -A x64 `
-    -DMSVC_MULTIPLE_PROCESSES=ON `
-    -DALLOW_DOWNLOADS=ON `
-    -DSTATIC_BUILD=ON `
-    -DOPENSSL_NO_CAPIENG=ON `
-    ../../orthanc-stone/Samples/Sdl/RtViewer
-```
-
-Executing `cmake --build .` in the build folder will launch the Microsoft 
-builder on the solution.
-
-Alternatively, you can open and build the solution using Visual Studio 2019.
-
--- a/Samples/Sdl/BoostExtendedConfiguration.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-# Stone of Orthanc
-# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
-# Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
-#
-# This program is free software: you can redistribute it and/or
-# modify it under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Affero General Public License for more details.
-# 
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-if (STATIC_BUILD OR NOT USE_SYSTEM_BOOST)
-  set(BOOST_EXTENDED_SOURCES
-    ${BOOST_SOURCES_DIR}/libs/program_options/src/cmdline.cpp
-    ${BOOST_SOURCES_DIR}/libs/program_options/src/config_file.cpp
-    ${BOOST_SOURCES_DIR}/libs/program_options/src/convert.cpp
-    ${BOOST_SOURCES_DIR}/libs/program_options/src/options_description.cpp
-    ${BOOST_SOURCES_DIR}/libs/program_options/src/parsers.cpp
-    ${BOOST_SOURCES_DIR}/libs/program_options/src/positional_options.cpp
-    ${BOOST_SOURCES_DIR}/libs/program_options/src/split.cpp
-    ${BOOST_SOURCES_DIR}/libs/program_options/src/utf8_codecvt_facet.cpp
-    ${BOOST_SOURCES_DIR}/libs/program_options/src/value_semantic.cpp
-    ${BOOST_SOURCES_DIR}/libs/program_options/src/variables_map.cpp
-    ${BOOST_SOURCES_DIR}/libs/chrono/src/thread_clock.cpp
-    ${BOOST_SOURCES_DIR}/libs/chrono/src/chrono.cpp
-    ${BOOST_SOURCES_DIR}/libs/chrono/src/process_cpu_clocks.cpp
-    #${BOOST_SOURCES_DIR}/libs/program_options/src/winmain.cpp
-    )
-  add_definitions(-DBOOST_PROGRAM_OPTIONS_NO_LIB)
-else()
-  link_libraries(boost_program_options)
-endif()
--- a/Samples/Sdl/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-cmake_minimum_required(VERSION 2.8.10)
-
-project(OrthancStone)
-
-set(STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../)
-
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneParameters.cmake)
-
-if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
-  set(ORTHANC_BOOST_COMPONENTS program_options)
-
-  set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test")
-  set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)")
-  mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE)
-  include(${STONE_ROOT}/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake)
-  
-else()
-  set(ENABLE_GOOGLE_TEST ON)
-  set(ENABLE_LOCALE ON)  # Necessary for text rendering
-  set(ENABLE_OPENGL ON)  #  <==
-  set(ENABLE_WEB_CLIENT ON)
-endif()
-
-set(ENABLE_DCMTK ON)  # <==
-set(ENABLE_SDL ON)
-
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
-include(${CMAKE_SOURCE_DIR}/Utilities.cmake)
-
-if (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
-  # This include must be after "OrthancStoneConfiguration.cmake" to
-  # have "BOOST_SOURCES_DIR" defined
-  include(${CMAKE_SOURCE_DIR}/BoostExtendedConfiguration.cmake)
-endif()
-
-
-DownloadPackage(
-  "a24b8136b8f3bb93f166baf97d9328de"
-  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
-  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
-
-EmbedResources(
-  COLORMAP_HOT ${ORTHANC_STONE_ROOT}/Resources/Colormaps/hot.lut
-  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
-  )
-
-add_definitions(
-  -DORTHANC_DEFAULT_DICOM_ENCODING=Encoding_Latin1
-  )
-
-SortFilesInSourceGroups()
-
-add_library(OrthancStone STATIC
-  ${ORTHANC_STONE_SOURCES}
-  ${AUTOGENERATED_SOURCES}
-  ${BOOST_EXTENDED_SOURCES}
-  )
-
-message(${AUTOGENERATED_SOURCES})
-
-
-
-#############################
-project(RtViewerSdl)
-
-add_executable(RtViewerSdl
-  RtViewer/RtViewerSdl.cpp
-  SdlHelpers.h
-  ../Common/RtViewerApp.cpp
-  ../Common/RtViewerApp.h
-  ../Common/RtViewerView.cpp
-  ../Common/RtViewerView.h
-  ../Common/SampleHelpers.h
-  )
-
-target_link_libraries(RtViewerSdl OrthancStone ${DCMTK_LIBRARIES})
-
-#############################
-project(SdlSimpleViewer)
-
-add_executable(SdlSimpleViewer
-  SdlHelpers.h
-  ../Common/SampleHelpers.h
-  SingleFrameViewer/SdlSimpleViewerApplication.h
-  SingleFrameViewer/SdlSimpleViewer.cpp
-  )
-
-target_link_libraries(SdlSimpleViewer OrthancStone ${DCMTK_LIBRARIES})
-
-#############################
-project(UnitTests)
-
-add_executable(UnitTests
-  ${GOOGLE_TEST_SOURCES}
-  ${ORTHANC_STONE_ROOT}/UnitTestsSources/GenericToolboxTests.cpp
-  ${ORTHANC_STONE_ROOT}/UnitTestsSources/ImageToolboxTests.cpp
-  ${ORTHANC_STONE_ROOT}/UnitTestsSources/PixelTestPatternsTests.cpp
-  ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestCommands.cpp
-  ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestMessageBroker.cpp
-  ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestStrategy.cpp
-  ${ORTHANC_STONE_ROOT}/UnitTestsSources/TestStructureSet.cpp
-  ${ORTHANC_STONE_ROOT}/UnitTestsSources/SortedFramesTests.cpp
-  ${ORTHANC_STONE_ROOT}/UnitTestsSources/UnitTestsMain.cpp
-  )
-
-target_link_libraries(UnitTests OrthancStone)
-
-add_custom_command(
-  TARGET UnitTests
-  POST_BUILD
-  COMMAND ${CMAKE_COMMAND} -E copy
-    "${ORTHANC_STONE_ROOT}/UnitTestsSources/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json" 
-    "$<TARGET_FILE_DIR:UnitTests>/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json"
-)
-
-target_link_libraries(UnitTests OrthancStone ${DCMTK_LIBRARIES})
--- a/Samples/Sdl/RtViewer/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-cmake_minimum_required(VERSION 2.8.10)
-
-project(RtViewerSdl)
-
-set(ORTHANC_FRAMEWORK_SOURCE "path")
-set(ORTHANC_FRAMEWORK_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../../orthanc)
-set(STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../)
-
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneParameters.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/AutoGeneratedCode.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
-
-SET(ENABLE_GOOGLE_TEST OFF)
-SET(ENABLE_LOCALE ON)  # Necessary for text rendering
-SET(ENABLE_SDL ON)
-SET(ENABLE_DCMTK ON)  # <==
-SET(ENABLE_OPENGL ON)  #  <==
-SET(ENABLE_WEB_CLIENT ON)
-SET(ORTHANC_SANDBOXED OFF)
-
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
-include(${CMAKE_SOURCE_DIR}/../BoostExtendedConfiguration.cmake)
-include(${CMAKE_SOURCE_DIR}/../Utilities.cmake)
-
-DownloadPackage(
-  "a24b8136b8f3bb93f166baf97d9328de"
-  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
-  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
-
-EmbedResources(
-  COLORMAP_HOT ${ORTHANC_STONE_ROOT}/Resources/Colormaps/hot.lut
-  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
-  )
-
-add_definitions(
-  -DORTHANC_ENABLE_LOGGING=1
-  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
-  -DORTHANC_ENABLE_PUGIXML=0
-  -DORTHANC_DEFAULT_DICOM_ENCODING=Encoding_Latin1
-  )
-
-SortFilesInSourceGroups()
-
-add_executable(RtViewerSdl
-  RtViewerSdl.cpp
-  ../SdlHelpers.h
-  ../../Common/RtViewerApp.cpp
-  ../../Common/RtViewerApp.h
-  ../../Common/RtViewerView.cpp
-  ../../Common/RtViewerView.h
-  ../../Common/SampleHelpers.h
-  ${ORTHANC_STONE_SOURCES}
-  ${AUTOGENERATED_SOURCES}
-  ${BOOST_EXTENDED_SOURCES}
-  )
-
-target_link_libraries(RtViewerSdl ${DCMTK_LIBRARIES})
--- a/Samples/Sdl/RtViewer/CMakeSettings.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-{
-  // this file is meant to be used with Visual Studio CMake support
-  // tested with VS 16.5.4+ 
-  "configurations": [
-    {
-      "name": "x64-Debug",
-      "generator": "Ninja",
-      "configurationType": "Debug",
-      "inheritEnvironments": [ "msvc_x64_x64" ],
-      "buildRoot": "${projectDir}/../../../../out/build-stone-sdl-RtViewer-ninja-msvc16-x64-Debug",
-      "installRoot": "${projectDir}/../../../../out/install-stone-sdl-RtViewer-ninja-msvc16-x64-Debug",
-      "cmakeCommandArgs": "",
-      "buildCommandArgs": "-v",
-      "ctestCommandArgs": "",
-      "variables": [
-        {
-          "name": "ALLOW_DOWNLOADS",
-          "value": "True",
-          "type": "BOOL"
-        },
-        {
-          "name": "MSVC_MULTIPLE_PROCESSES",
-          "value": "True",
-          "type": "BOOL"
-        },
-        {
-          "name": "STATIC_BUILD",
-          "value": "True",
-          "type": "BOOL"
-        }
-      ]
-    }
-  ]
-}
\ No newline at end of file
--- a/Samples/Sdl/RtViewer/RtViewerSdl.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,458 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "../../Common/RtViewerApp.h"
-#include "../../Common/RtViewerView.h"
-#include "../SdlHelpers.h"
-
-#include <EmbeddedResources.h>
-
-// Stone of Orthanc includes
-#include "../../../Framework/Loaders/GenericLoadersContext.h"
-#include "../../../Framework/OpenGL/OpenGLIncludes.h"
-#include "../../../Framework/OpenGL/SdlOpenGLContext.h"
-#include "../../../Framework/StoneException.h"
-#include "../../../Framework/StoneInitialization.h"
-
-// Orthanc (a.o. for screenshot capture)
-#include <Compatibility.h>  // For std::unique_ptr<>
-#include <Images/Image.h>
-#include <Images/ImageProcessing.h>
-#include <Images/PngWriter.h>
-
-
-#include <boost/program_options.hpp>
-#include <boost/shared_ptr.hpp>
-
-// #include <boost/pointer_cast.hpp> this include might be necessary in more recent boost versions
-
-#include <SDL.h>
-
-#include <string>
-
-
-#if !defined(__APPLE__)
-/**
- * OpenGL: "OS X does not seem to support debug output functionality
- * (as gathered online)."
- * https://learnopengl.com/In-Practice/Debugging
- **/
-static void GLAPIENTRY
-OpenGLMessageCallback(GLenum source,
-                      GLenum type,
-                      GLuint id,
-                      GLenum severity,
-                      GLsizei length,
-                      const GLchar* message,
-                      const void* userParam)
-{
-  if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
-  {
-    fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
-            (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
-            type, severity, message);
-  }
-}
-#endif
-
-namespace OrthancStone
-{
-  void RtViewerView::EnableGLDebugOutput()
-  {
-#if !defined(__APPLE__)
-    glEnable(GL_DEBUG_OUTPUT);
-    glDebugMessageCallback(OpenGLMessageCallback, 0);
-#endif
-  }
-
-  boost::shared_ptr<IViewport> RtViewerView::CreateViewport(const std::string& canvasId)
-  {
-    // False means we do NOT let Windows treat this as a legacy application that needs to be scaled
-    return SdlOpenGLViewport::Create(canvasId, 1024, 1024, false);
-  }
-
-  void RtViewerApp::ProcessOptions(int argc, char* argv[])
-  {
-    namespace po = boost::program_options;
-    po::options_description desc("Usage:");
-
-    desc.add_options()
-      ("loglevel", po::value<std::string>()->default_value("WARNING"),
-       "You can choose WARNING, INFO or TRACE for the logging level: Errors and warnings will always be displayed. (default: WARNING)")
-
-      ("orthanc", po::value<std::string>()->default_value("http://localhost:8042"),
-       "Base URL of the Orthanc instance")
-
-      ("ctseries", po::value<std::string>()->default_value("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa"),
-       "Orthanc ID of the CT series to load")
-
-      ("rtdose", po::value<std::string>()->default_value("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb"),
-       "Orthanc ID of the RTDOSE instance to load")
-
-      ("rtstruct", po::value<std::string>()->default_value("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9"),
-       "Orthanc ID of the RTSTRUCT instance to load")
-      ;
-
-    po::variables_map vm;
-    try
-    {
-      po::store(po::parse_command_line(argc, argv, desc), vm);
-      po::notify(vm);
-    }
-    catch (std::exception& e)
-    {
-      std::cerr << "Please check your command line options! (\"" << e.what() << "\")" << std::endl;
-    }
-
-    for (po::variables_map::iterator it = vm.begin(); it != vm.end(); ++it)
-    {
-      std::string key = it->first;
-      const po::variable_value& value = it->second;
-      const std::string& strValue = value.as<std::string>();
-      SetArgument(key, strValue);
-    }
-  }
-
-  void RtViewerApp::RunSdl(int argc, char* argv[])
-  {
-    ProcessOptions(argc, argv);
-
-    /**
-    Create the shared loaders context
-    */
-    loadersContext_.reset(new GenericLoadersContext(1, 4, 1));
-
-    // we are in SDL --> downcast to concrete type
-    boost::shared_ptr<GenericLoadersContext> loadersContext = boost::dynamic_pointer_cast<GenericLoadersContext>(loadersContext_);
-
-    /**
-      Url of the Orthanc instance
-      Typically, in a native application (Qt, SDL), it will be an absolute URL like "http://localhost:8042". In 
-      wasm on the browser, it could be an absolute URL, provided you do not have cross-origin problems, or a relative
-      URL. In our wasm samples, it is set to "..", because we set up either a reverse proxy or an Orthanc ServeFolders
-      plugin that serves the main web application from an URL like "http://localhost:8042/rtviewer" (with ".." leading 
-      to the main Orthanc root URL)
-    */
-    std::string orthancUrl = arguments_["orthanc"];
-
-    {
-      Orthanc::WebServiceParameters p;
-      if (HasArgument("orthanc"))
-      {
-        p.SetUrl(orthancUrl);
-      }
-      if (HasArgument("user"))
-      {
-        ORTHANC_ASSERT(HasArgument("password"));
-        p.SetCredentials(GetArgument("user"), GetArgument("password"));
-      } 
-      else
-      {
-        ORTHANC_ASSERT(!HasArgument("password"));
-      }
-      loadersContext->SetOrthancParameters(p);
-    }
-
-    loadersContext->StartOracle();
-
-    CreateLoaders();
-
-    /**
-    Create viewports
-    */
-    CreateView("RtViewer Axial", VolumeProjection_Axial);
-    CreateView("RtViewer Coronal", VolumeProjection_Coronal);
-    CreateView("RtViewer Sagittal", VolumeProjection_Sagittal);
-
-    for (size_t i = 0; i < views_.size(); ++i)
-    {
-      views_[i]->PrepareViewport();
-      views_[i]->EnableGLDebugOutput();
-    }
-
-    DefaultViewportInteractor interactor;
-
-    /**
-    It is very important that the Oracle (responsible for network I/O) be started before creating and firing the 
-    loaders, for any command scheduled by the loader before the oracle is started will be lost.
-    */
-    StartLoaders();
-
-
-    SdlRunLoop(views_, interactor);
-    loadersContext->StopOracle();
-  }
-
-  void RtViewerView::TakeScreenshot(const std::string& target,
-                                   unsigned int canvasWidth,
-                                   unsigned int canvasHeight)
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-
-    std::string ttf;
-    Orthanc::EmbeddedResources::GetFileResource(ttf, Orthanc::EmbeddedResources::UBUNTU_FONT);
-    
-    CairoCompositor compositor(canvasWidth, canvasHeight);
-    compositor.SetFont(0, ttf, FONT_SIZE_0, Orthanc::Encoding_Latin1);
-    compositor.Refresh(scene);
-
-    Orthanc::ImageAccessor canvas;
-    compositor.GetCanvas().GetReadOnlyAccessor(canvas);
-
-    Orthanc::Image png(Orthanc::PixelFormat_RGB24, canvas.GetWidth(), canvas.GetHeight(), false);
-    Orthanc::ImageProcessing::Convert(png, canvas);
-
-    Orthanc::PngWriter writer;
-    writer.WriteToFile(target, png);
-  }
-
-  static boost::shared_ptr<OrthancStone::RtViewerView> GetViewFromWindowId(
-    const std::vector<boost::shared_ptr<OrthancStone::RtViewerView> >& views,
-    Uint32 windowID)
-  {
-    using namespace OrthancStone;
-    for (size_t i = 0; i < views.size(); ++i)
-    {
-      boost::shared_ptr<OrthancStone::RtViewerView> view = views[i];
-      boost::shared_ptr<IViewport> viewport = view->GetViewport();
-      boost::shared_ptr<SdlViewport> sdlViewport = boost::dynamic_pointer_cast<SdlViewport>(viewport);
-      Uint32 curWindowID = sdlViewport->GetSdlWindowId();
-      if (windowID == curWindowID)
-        return view;
-    }
-    return boost::shared_ptr<OrthancStone::RtViewerView>();
-  }
-
-  void RtViewerApp::SdlRunLoop(const std::vector<boost::shared_ptr<OrthancStone::RtViewerView> >& views,
-                               OrthancStone::IViewportInteractor& interactor)
-  {
-    using namespace OrthancStone;
-
-    // const std::vector<boost::shared_ptr<OrthancStone::RtViewerView> >& views
-    std::vector<boost::shared_ptr<OrthancStone::SdlViewport> > viewports;
-    for (size_t i = 0; i < views.size(); ++i)
-    {
-      boost::shared_ptr<RtViewerView> view = views[i];
-      boost::shared_ptr<IViewport> viewport = view->GetViewport();
-      boost::shared_ptr<SdlViewport> sdlViewport =
-        boost::dynamic_pointer_cast<SdlViewport>(viewport);
-      viewports.push_back(sdlViewport);
-    }
-
-    {
-      int scancodeCount = 0;
-      const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
-
-      bool stop = false;
-      while (!stop)
-      {
-        std::vector<SDL_Event> sdlEvents;
-        std::map<Uint32,SDL_Event> userEventsMap;
-        SDL_Event sdlEvent;
-
-        // FIRST: collect all pending events
-        while (SDL_PollEvent(&sdlEvent) != 0)
-        {
-          if ( (sdlEvent.type >= SDL_USEREVENT) && 
-               (sdlEvent.type < SDL_LASTEVENT) )
-          {
-            // we don't want to have multiple refresh events ,
-            // and since every refresh event is a user event with a special type,
-            // we use a map
-            userEventsMap[sdlEvent.type] = sdlEvent;
-          }
-          else
-          {
-            sdlEvents.push_back(sdlEvent);
-          }
-        }
-
-        // SECOND: add all user events to sdlEvents
-        for (std::map<Uint32,SDL_Event>::const_iterator it = userEventsMap.begin(); it != userEventsMap.end(); ++it)
-          sdlEvents.push_back(it->second);
-
-        // now process the events
-        for (std::vector<SDL_Event>::const_iterator it = sdlEvents.begin(); it != sdlEvents.end(); ++it)
-        {
-          const SDL_Event& sdlEvent = *it;
-
-          if (sdlEvent.type == SDL_QUIT)
-          {
-            stop = true;
-            break;
-          }
-          else if (sdlEvent.type == SDL_WINDOWEVENT &&
-                   (sdlEvent.window.event == SDL_WINDOWEVENT_RESIZED ||
-                    sdlEvent.window.event == SDL_WINDOWEVENT_SIZE_CHANGED))
-          {
-            boost::shared_ptr<RtViewerView> view = GetViewFromWindowId(
-              views, sdlEvent.window.windowID);
-
-            boost::shared_ptr<SdlViewport> sdlViewport =
-              boost::dynamic_pointer_cast<SdlViewport>(view->GetViewport());
-
-            sdlViewport->UpdateSize(sdlEvent.window.data1, sdlEvent.window.data2);
-          }
-          else if (sdlEvent.type == SDL_WINDOWEVENT &&
-                   (sdlEvent.window.event == SDL_WINDOWEVENT_SHOWN ||
-                    sdlEvent.window.event == SDL_WINDOWEVENT_EXPOSED))
-          {
-            boost::shared_ptr<RtViewerView> view = GetViewFromWindowId(
-              views, sdlEvent.window.windowID);
-            boost::shared_ptr<SdlViewport> sdlViewport =
-              boost::dynamic_pointer_cast<SdlViewport>(view->GetViewport());
-            sdlViewport->Paint();
-          }
-          else if (sdlEvent.type == SDL_KEYDOWN &&
-                   sdlEvent.key.repeat == 0 /* Ignore key bounce */)
-          {
-            boost::shared_ptr<RtViewerView> view = GetViewFromWindowId(
-              views, sdlEvent.window.windowID);
-
-            switch (sdlEvent.key.keysym.sym)
-            {
-            case SDLK_f:
-            {
-              boost::shared_ptr<SdlViewport> sdlViewport =
-                boost::dynamic_pointer_cast<SdlViewport>(view->GetViewport());
-              sdlViewport->ToggleMaximize();
-            }
-            break;
-
-            case SDLK_s:
-            {
-              std::unique_ptr<OrthancStone::IViewport::ILock> lock(view->GetViewport()->Lock());
-              lock->GetCompositor().FitContent(lock->GetController().GetScene());
-              lock->Invalidate();
-            }
-            break;
-
-            case SDLK_q:
-              stop = true;
-              break;
-
-            default:
-              break;
-            }
-          }
-          else if (sdlEvent.type == SDL_MOUSEBUTTONDOWN ||
-                   sdlEvent.type == SDL_MOUSEMOTION ||
-                   sdlEvent.type == SDL_MOUSEBUTTONUP)
-          {
-            boost::shared_ptr<RtViewerView> view = GetViewFromWindowId(
-              views, sdlEvent.window.windowID);
-
-            std::unique_ptr<OrthancStone::IViewport::ILock> lock(view->GetViewport()->Lock());
-            if (lock->HasCompositor())
-            {
-              OrthancStone::PointerEvent p;
-              OrthancStoneHelpers::GetPointerEvent(p, lock->GetCompositor(),
-                                                   sdlEvent, keyboardState, scancodeCount);
-
-              switch (sdlEvent.type)
-              {
-              case SDL_MOUSEBUTTONDOWN:
-                lock->GetController().HandleMousePress(interactor, p,
-                                                       lock->GetCompositor().GetCanvasWidth(),
-                                                       lock->GetCompositor().GetCanvasHeight());
-                lock->Invalidate();
-                break;
-
-              case SDL_MOUSEMOTION:
-                if (lock->GetController().HandleMouseMove(p))
-                {
-                  lock->Invalidate();
-                }
-                break;
-
-              case SDL_MOUSEBUTTONUP:
-                lock->GetController().HandleMouseRelease(p);
-                lock->Invalidate();
-                break;
-
-              default:
-                throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-              }
-            }
-          }
-          else if (sdlEvent.type == SDL_MOUSEWHEEL)
-          {
-            boost::shared_ptr<RtViewerView> view = GetViewFromWindowId(
-              views, sdlEvent.window.windowID);
-
-            int delta = 0;
-            if (sdlEvent.wheel.y < 0)
-              delta = -1;
-            if (sdlEvent.wheel.y > 0)
-              delta = 1;
-
-            view->Scroll(delta);
-          }
-          else
-          {
-            for (size_t i = 0; i < views.size(); ++i)
-            {
-              boost::shared_ptr<SdlViewport> sdlViewport =
-                boost::dynamic_pointer_cast<SdlViewport>(views[i]->GetViewport());
-              if (sdlViewport->IsRefreshEvent(sdlEvent))
-              {
-                sdlViewport->Paint();
-              }
-            }
-          }
-        }
-        // Small delay to avoid using 100% of CPU
-        SDL_Delay(1);
-      }
-    }
-  }
-}
-
-boost::weak_ptr<OrthancStone::RtViewerApp> g_app;
-
-/**
- * IMPORTANT: The full arguments to "main()" are needed for SDL on
- * Windows. Otherwise, one gets the linking error "undefined reference
- * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
- **/
-int main(int argc, char* argv[])
-{
-  using namespace OrthancStone;
-
-  StoneInitialize();
-
-  try
-  {
-    boost::shared_ptr<RtViewerApp> app = RtViewerApp::Create();
-    g_app = app;
-    app->RunSdl(argc,argv);
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "EXCEPTION: " << e.What();
-  }
-
-  StoneFinalize();
-
-  return 0;
-}
-
--- a/Samples/Sdl/SdlHelpers.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#if ORTHANC_ENABLE_SDL != 1
-# error This file cannot be used if ORTHANC_ENABLE_SDL != 1
-#endif
-
-#include "../../Framework/Viewport/SdlViewport.h"
-
-#include <boost/shared_ptr.hpp>
-
-#include <SDL.h>
-
-#include <map>
-#include <string>
-
-namespace OrthancStoneHelpers
-{
-
-  inline OrthancStone::KeyboardModifiers GetKeyboardModifiers(const uint8_t* keyboardState,
-                                                              const int scancodeCount)
-  {
-    using namespace OrthancStone;
-    int result = KeyboardModifiers_None;
-
-    if (keyboardState != NULL)
-    {
-      if (SDL_SCANCODE_LSHIFT < scancodeCount &&
-          keyboardState[SDL_SCANCODE_LSHIFT])
-      {
-        result |= KeyboardModifiers_Shift;
-      }
-
-      if (SDL_SCANCODE_RSHIFT < scancodeCount &&
-          keyboardState[SDL_SCANCODE_RSHIFT])
-      {
-        result |= KeyboardModifiers_Shift;
-      }
-
-      if (SDL_SCANCODE_LCTRL < scancodeCount &&
-          keyboardState[SDL_SCANCODE_LCTRL])
-      {
-        result |= KeyboardModifiers_Control;
-      }
-
-      if (SDL_SCANCODE_RCTRL < scancodeCount &&
-          keyboardState[SDL_SCANCODE_RCTRL])
-      {
-        result |= KeyboardModifiers_Control;
-      }
-
-      if (SDL_SCANCODE_LALT < scancodeCount &&
-          keyboardState[SDL_SCANCODE_LALT])
-      {
-        result |= KeyboardModifiers_Alt;
-      }
-
-      if (SDL_SCANCODE_RALT < scancodeCount &&
-          keyboardState[SDL_SCANCODE_RALT])
-      {
-        result |= KeyboardModifiers_Alt;
-      }
-    }
-
-    return static_cast<KeyboardModifiers>(result);
-  }
-
-
-  inline void GetPointerEvent(OrthancStone::PointerEvent& p,
-                              const OrthancStone::ICompositor& compositor,
-                              SDL_Event event,
-                              const uint8_t* keyboardState,
-                              const int scancodeCount)
-  {
-    using namespace OrthancStone;
-    KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
-
-    switch (event.button.button)
-    {
-    case SDL_BUTTON_LEFT:
-      p.SetMouseButton(OrthancStone::MouseButton_Left);
-      break;
-
-    case SDL_BUTTON_RIGHT:
-      p.SetMouseButton(OrthancStone::MouseButton_Right);
-      break;
-
-    case SDL_BUTTON_MIDDLE:
-      p.SetMouseButton(OrthancStone::MouseButton_Middle);
-      break;
-
-    default:
-      p.SetMouseButton(OrthancStone::MouseButton_None);
-      break;
-    }
-
-    p.AddPosition(compositor.GetPixelCenterCoordinates(event.button.x, event.button.y));
-    p.SetAltModifier( (modifiers & KeyboardModifiers_Alt) != 0);
-    p.SetControlModifier( (modifiers & KeyboardModifiers_Control) != 0);
-    p.SetShiftModifier( (modifiers & KeyboardModifiers_Shift) != 0);
-  }
-
-  
-  inline boost::shared_ptr<OrthancStone::SdlViewport> GetSdlViewportFromWindowId(
-    const std::vector<boost::shared_ptr<OrthancStone::SdlViewport> >& viewports,
-    Uint32 windowID)
-  {
-    using namespace OrthancStone;
-    for (size_t i = 0; i < viewports.size(); ++i)
-    {
-      boost::shared_ptr<IViewport> viewport = viewports[i];
-      boost::shared_ptr<SdlViewport> sdlViewport = boost::dynamic_pointer_cast<SdlViewport>(viewport);
-      Uint32 curWindowID = sdlViewport->GetSdlWindowId();
-      if (windowID == curWindowID)
-        return sdlViewport;
-    }
-    
-    return boost::shared_ptr<OrthancStone::SdlViewport>();
-  }
-}
-
-
--- a/Samples/Sdl/SingleFrameViewer/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-cmake_minimum_required(VERSION 2.8.10)
-
-project(SdlSimpleViewer)
-
-set(ORTHANC_FRAMEWORK_SOURCE "path")
-set(ORTHANC_FRAMEWORK_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../../orthanc)
-set(STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../)
-
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneParameters.cmake)
-
-SET(ENABLE_GOOGLE_TEST OFF)
-SET(ENABLE_LOCALE ON)  # Necessary for text rendering
-SET(ENABLE_SDL ON)
-SET(ENABLE_DCMTK ON)  # <==
-SET(ENABLE_OPENGL ON)  #  <==
-SET(ENABLE_WEB_CLIENT ON)
-SET(ORTHANC_SANDBOXED OFF)
-
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
-include(${STONE_ROOT}/Resources/CMake/Utilities.cmake)
-
-add_definitions(
-  -DORTHANC_ENABLE_LOGGING=1
-  -DORTHANC_ENABLE_LOGGING_PLUGIN=0
-  -DORTHANC_ENABLE_PUGIXML=0
-  -DORTHANC_DEFAULT_DICOM_ENCODING=Encoding_Latin1
-  )
-
-SortFilesInSourceGroups()
-
-add_executable(SdlSimpleViewer
-  ../SdlHelpers.h
-  ../../Common/SampleHelpers.h
-  SdlSimpleViewerApplication.h
-  SdlSimpleViewer.cpp
-  ${ORTHANC_STONE_SOURCES}
-  )
-
-target_link_libraries(SdlSimpleViewer ${DCMTK_LIBRARIES})
-
--- a/Samples/Sdl/SingleFrameViewer/CMakeSettings.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-{
-  "configurations": [
-    {
-      "name": "x64-Debug",
-      "generator": "Ninja",
-      "configurationType": "Debug",
-      "inheritEnvironments": [ "msvc_x64_x64" ],
-      "buildRoot": "${projectDir}\\out\\build\\${name}",
-      "installRoot": "${projectDir}\\out\\install\\${name}",
-      "cmakeCommandArgs": "",
-      "buildCommandArgs": "-v",
-      "ctestCommandArgs": "",
-      "variables": [
-        {
-          "name": "MSVC_MULTIPLE_PROCESSES",
-          "value": "True",
-          "type": "BOOL"
-        },
-        {
-          "name": "ALLOW_DOWNLOADS",
-          "value": "True",
-          "type": "BOOL"
-        },
-        {
-          "name": "STATIC_BUILD",
-          "value": "True",
-          "type": "BOOL"
-        },
-        {
-          "name": "OPENSSL_NO_CAPIENG",
-          "value": "True",
-          "type": "BOOL"
-        },
-      ]
-    }
-  ]
-}
\ No newline at end of file
--- a/Samples/Sdl/SingleFrameViewer/SdlSimpleViewer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,273 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SdlSimpleViewerApplication.h"
-#include "../SdlHelpers.h"
-#include "../../Common/SampleHelpers.h"
-
-#include "../../../Framework/Loaders/GenericLoadersContext.h"
-#include "../../../Framework/StoneException.h"
-#include "../../../Framework/StoneEnumerations.h"
-#include "../../../Framework/StoneInitialization.h"
-#include "../../../Framework/Viewport/SdlViewport.h"
-
-#include <Compatibility.h>  // For std::unique_ptr<>
-#include <OrthancException.h>
-
-#include <boost/program_options.hpp>
-#include <SDL.h>
-
-#include <string>
-
-
-std::string orthancUrl;
-std::string instanceId;
-int frameIndex = 0;
-
-
-static void ProcessOptions(int argc, char* argv[])
-{
-  namespace po = boost::program_options;
-  po::options_description desc("Usage:");
-
-  desc.add_options()
-    ("loglevel", po::value<std::string>()->default_value("WARNING"),
-     "You can choose WARNING, INFO or TRACE for the logging level: Errors and warnings will always be displayed. (default: WARNING)")
-
-    ("orthanc", po::value<std::string>()->default_value("http://localhost:8042"),
-     "Base URL of the Orthanc instance")
-
-    ("instance", po::value<std::string>()->default_value("285dece8-e1956b38-cdc7d084-6ce3371e-536a9ffc"),
-     "Orthanc ID of the instance to display")
-
-    ("frame_index", po::value<int>()->default_value(0),
-     "The zero-based index of the frame (for multi-frame instances)")
-    ;
-
-  po::variables_map vm;
-  try
-  {
-    po::store(po::parse_command_line(argc, argv, desc), vm);
-    po::notify(vm);
-  }
-  catch (std::exception& e)
-  {
-    std::cerr << "Please check your command line options! (\"" << e.what() << "\")" << std::endl;
-  }
-
-  if (vm.count("loglevel") > 0)
-  {
-    std::string logLevel = vm["loglevel"].as<std::string>();
-    OrthancStoneHelpers::SetLogLevel(logLevel);
-  }
-
-  if (vm.count("orthanc") > 0)
-  {
-    // maybe check URL validity here
-    orthancUrl = vm["orthanc"].as<std::string>();
-  }
-
-  if (vm.count("instance") > 0)
-  {
-    instanceId = vm["instance"].as<std::string>();
-  }
-
-  if (vm.count("frame_index") > 0)
-  {
-    frameIndex = vm["frame_index"].as<int>();
-  }
-
-}
-
-/**
- * IMPORTANT: The full arguments to "main()" are needed for SDL on
- * Windows. Otherwise, one gets the linking error "undefined reference
- * to `SDL_main'". https://wiki.libsdl.org/FAQWindows
- **/
-int main(int argc, char* argv[])
-{
-  try
-  {
-    OrthancStone::StoneInitialize();
-
-    ProcessOptions(argc, argv);
-
-    //Orthanc::Logging::EnableInfoLevel(true);
-    //Orthanc::Logging::EnableTraceLevel(true);
-
-    {
-
-#if 1
-      boost::shared_ptr<OrthancStone::SdlViewport> viewport =
-        OrthancStone::SdlOpenGLViewport::Create("Stone of Orthanc", 800, 600);
-#else
-      boost::shared_ptr<OrthancStone::SdlViewport> viewport =
-        OrthancStone::SdlCairoViewport::Create("Stone of Orthanc", 800, 600);
-#endif
-
-      OrthancStone::GenericLoadersContext context(1, 4, 1);
-
-      Orthanc::WebServiceParameters orthancWebService;
-      orthancWebService.SetUrl(orthancUrl);
-      context.SetOrthancParameters(orthancWebService);
-
-      context.StartOracle();
-
-      {
-
-        boost::shared_ptr<SdlSimpleViewerApplication> application(
-          SdlSimpleViewerApplication::Create(context, viewport));
-
-        OrthancStone::DicomSource source;
-
-        application->LoadOrthancFrame(source, instanceId, frameIndex);
-
-        OrthancStone::DefaultViewportInteractor interactor;
-
-        {
-          int scancodeCount = 0;
-          const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
-
-          bool stop = false;
-          while (!stop)
-          {
-            bool paint = false;
-            SDL_Event event;
-            while (SDL_PollEvent(&event))
-            {
-              if (event.type == SDL_QUIT)
-              {
-                stop = true;
-                break;
-              }
-              else if (viewport->IsRefreshEvent(event))
-              {
-                paint = true;
-              }
-              else if (event.type == SDL_WINDOWEVENT &&
-                       (event.window.event == SDL_WINDOWEVENT_RESIZED ||
-                        event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED))
-              {
-                viewport->UpdateSize(event.window.data1, event.window.data2);
-              }
-              else if (event.type == SDL_WINDOWEVENT &&
-                       (event.window.event == SDL_WINDOWEVENT_SHOWN ||
-                        event.window.event == SDL_WINDOWEVENT_EXPOSED))
-              {
-                paint = true;
-              }
-              else if (event.type == SDL_KEYDOWN &&
-                       event.key.repeat == 0 /* Ignore key bounce */)
-              {
-                switch (event.key.keysym.sym)
-                {
-                case SDLK_f:
-                  viewport->ToggleMaximize();
-                  break;
-
-                case SDLK_s:
-                  application->FitContent();
-                  break;
-
-                case SDLK_q:
-                  stop = true;
-                  break;
-
-                default:
-                  break;
-                }
-              }
-              else if (event.type == SDL_MOUSEBUTTONDOWN ||
-                       event.type == SDL_MOUSEMOTION ||
-                       event.type == SDL_MOUSEBUTTONUP)
-              {
-                std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock());
-                if (lock->HasCompositor())
-                {
-                  OrthancStone::PointerEvent p;
-                  OrthancStoneHelpers::GetPointerEvent(p, lock->GetCompositor(),
-                                                       event, keyboardState, scancodeCount);
-
-                  switch (event.type)
-                  {
-                  case SDL_MOUSEBUTTONDOWN:
-                    lock->GetController().HandleMousePress(interactor, p,
-                                                           lock->GetCompositor().GetCanvasWidth(),
-                                                           lock->GetCompositor().GetCanvasHeight());
-                    lock->Invalidate();
-                    break;
-
-                  case SDL_MOUSEMOTION:
-                    if (lock->GetController().HandleMouseMove(p))
-                    {
-                      lock->Invalidate();
-                    }
-                    break;
-
-                  case SDL_MOUSEBUTTONUP:
-                    lock->GetController().HandleMouseRelease(p);
-                    lock->Invalidate();
-                    break;
-
-                  default:
-                    throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-                  }
-                }
-              }
-            }
-
-            if (paint)
-            {
-              viewport->Paint();
-            }
-
-            // Small delay to avoid using 100% of CPU
-            SDL_Delay(1);
-          }
-        }
-        context.StopOracle();
-      }
-    }
-
-    OrthancStone::StoneFinalize();
-    return 0;
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "OrthancException: " << e.What();
-    return -1;
-  }
-  catch (OrthancStone::StoneException& e)
-  {
-    LOG(ERROR) << "StoneException: " << e.What();
-    return -1;
-  }
-  catch (std::runtime_error& e)
-  {
-    LOG(ERROR) << "Runtime error: " << e.what();
-    return -1;
-  }
-  catch (...)
-  {
-    LOG(ERROR) << "Native exception";
-    return -1;
-  }
-}
--- a/Samples/Sdl/SingleFrameViewer/SdlSimpleViewerApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../../Framework/Viewport/IViewport.h"
-#include "../../../Framework/Loaders/DicomResourcesLoader.h"
-#include "../../../Framework/Loaders/ILoadersContext.h"
-#include "../../../Framework/Loaders/SeriesFramesLoader.h"
-#include "../../../Framework/Loaders/SeriesThumbnailsLoader.h"
-
-#include <Compatibility.h>  // For std::unique_ptr<>
-
-#include <boost/make_shared.hpp>
-
-
-using OrthancStone::ILoadersContext;
-using OrthancStone::ObserverBase;
-using OrthancStone::IViewport;
-using OrthancStone::DicomResourcesLoader;
-using OrthancStone::SeriesFramesLoader;
-using OrthancStone::TextureBaseSceneLayer;
-using OrthancStone::DicomSource;
-using OrthancStone::SeriesThumbnailsLoader;
-using OrthancStone::LoadedDicomResources;
-using OrthancStone::SeriesThumbnailType;
-using OrthancStone::OracleScheduler;
-using OrthancStone::OrthancRestApiCommand;
-using OrthancStone::OracleScheduler;
-using OrthancStone::OracleScheduler;
-using OrthancStone::OracleScheduler;
-
-
-class SdlSimpleViewerApplication : public ObserverBase<SdlSimpleViewerApplication>
-{
-
-public:
-  static boost::shared_ptr<SdlSimpleViewerApplication> Create(ILoadersContext& context, boost::shared_ptr<IViewport> viewport)
-  {
-    boost::shared_ptr<SdlSimpleViewerApplication> application(new SdlSimpleViewerApplication(context, viewport));
-
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context.Lock());
-      application->dicomLoader_ = DicomResourcesLoader::Create(*lock);
-    }
-
-    application->Register<DicomResourcesLoader::SuccessMessage>(*application->dicomLoader_, &SdlSimpleViewerApplication::Handle);
-
-    return application;
-  }
-
-  void LoadOrthancFrame(const DicomSource& source, const std::string& instanceId, unsigned int frame)
-  {
-    std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-
-    dicomLoader_->ScheduleLoadOrthancResource(boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID),
-                                              0, source, Orthanc::ResourceType_Instance, instanceId,
-                                              new Orthanc::SingleValueObject<unsigned int>(frame));
-  }
-
-#if 0
-  void LoadDicomWebFrame(const DicomSource& source,
-                         const std::string& studyInstanceUid,
-                         const std::string& seriesInstanceUid,
-                         const std::string& sopInstanceUid,
-                         unsigned int frame)
-  {
-    std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-
-    // We first must load the "/metadata" to know the number of frames
-    dicomLoader_->ScheduleGetDicomWeb(
-      boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID), 0, source,
-      "/studies/" + studyInstanceUid + "/series/" + seriesInstanceUid + "/instances/" + sopInstanceUid + "/metadata",
-      new Orthanc::SingleValueObject<unsigned int>(frame));
-  }
-#endif 
-
-  void FitContent()
-  {
-    std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-    lock->GetCompositor().FitContent(lock->GetController().GetScene());
-    lock->Invalidate();
-  }
-
-private:
-  ILoadersContext& context_;
-  boost::shared_ptr<IViewport>             viewport_;
-  boost::shared_ptr<DicomResourcesLoader>  dicomLoader_;
-  boost::shared_ptr<SeriesFramesLoader>    framesLoader_;
-
-  SdlSimpleViewerApplication(ILoadersContext& context,
-                             boost::shared_ptr<IViewport> viewport) :
-    context_(context),
-    viewport_(viewport)
-  {
-  }
-
-  void Handle(const SeriesFramesLoader::FrameLoadedMessage& message)
-  {
-    LOG(INFO) << "Frame decoded! "
-      << message.GetImage().GetWidth() << "x" << message.GetImage().GetHeight()
-      << " " << Orthanc::EnumerationToString(message.GetImage().GetFormat());
-
-    std::unique_ptr<TextureBaseSceneLayer> layer(
-      message.GetInstanceParameters().CreateTexture(message.GetImage()));
-    layer->SetLinearInterpolation(true);
-
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      lock->GetController().GetScene().SetLayer(0, layer.release());
-      lock->GetCompositor().FitContent(lock->GetController().GetScene());
-      lock->Invalidate();
-    }
-  }
-
-  void Handle(const DicomResourcesLoader::SuccessMessage& message)
-  {
-    if (message.GetResources()->GetSize() != 1)
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-    }
-
-    //message.GetResources()->GetResource(0).Print(stdout);
-
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-      SeriesFramesLoader::Factory f(*message.GetResources());
-
-      framesLoader_ = boost::dynamic_pointer_cast<SeriesFramesLoader>(
-        f.Create(*lock));
-      
-      Register<SeriesFramesLoader::FrameLoadedMessage>(
-        *framesLoader_, &SdlSimpleViewerApplication::Handle);
-
-      assert(message.HasUserPayload());
-
-      const Orthanc::SingleValueObject<unsigned int>& payload =
-        dynamic_cast<const Orthanc::SingleValueObject<unsigned int>&>(
-          message.GetUserPayload());
-
-      LOG(INFO) << "Loading pixel data of frame: " << payload.GetValue();
-      framesLoader_->ScheduleLoadFrame(
-        0, message.GetDicomSource(), payload.GetValue(),
-        message.GetDicomSource().GetQualityCount() - 1 /* download best quality available */,
-        NULL);
-    }
-  }
-
-};
-
--- a/Samples/Sdl/Utilities.cmake	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-
-
-macro(GetFilenameFromPath TargetVariable Path)
-#message(STATUS "GetFilenameFromPath (1): Path = ${Path} TargetVariable = ${${TargetVariable}}")
-string(REPLACE "\\" "/" PathWithFwdSlashes "${Path}")
-string(REGEX REPLACE "^.*/" "" ${TargetVariable} "${PathWithFwdSlashes}")
-#message(STATUS "GetFilenameFromPath (2): Path = ${Path} Path = ${PathWithFwdSlashes} TargetVariable = ${TargetVariable}")
-endmacro()
-
-macro(GetFilePathWithoutLastExtension TargetVariable FilePath)
-string(REGEX REPLACE "(^.*)\\.([^\\.]+)" "\\1" ${TargetVariable} "${FilePath}")
-#message(STATUS "GetFileNameWithoutLastExtension: FilePath = ${FilePath} TargetVariable = ${${TargetVariable}}")
-endmacro()
-
-macro(Test_GetFilePathWithoutLastExtension)
-set(tmp "/prout/zi/goui.goui.cpp")
-GetFilePathWithoutLastExtension(TargetVariable "${tmp}")
-if(NOT ("${TargetVariable}" STREQUAL "/prout/zi/goui.goui"))
-  message(FATAL_ERROR "Test_GetFilePathWithoutLastExtension failed (1)")
-else()
-  #message(STATUS "Test_GetFilePathWithoutLastExtension: <<OK>>")
-endif()
-endmacro()
-
-Test_GetFilePathWithoutLastExtension()
-
-macro(Test_GetFilenameFromPath)
-set(tmp "/prout/../../dada/zi/goui.goui.cpp")
-GetFilenameFromPath(TargetVariable "${tmp}")
-if(NOT ("${TargetVariable}" STREQUAL "goui.goui.cpp"))
-  message(FATAL_ERROR "Test_GetFilenameFromPath failed")
-else()
-  #message(STATUS "Test_GetFilenameFromPath: <<OK>>")
-endif()
-endmacro()
-
-Test_GetFilenameFromPath()
-
-macro(SortFilesInSourceGroups)
-  if(FALSE)
-    foreach(source IN LISTS ORTHANC_STONE_SOURCES)
-        # if("${source}" MATCHES ".*/pixman.*\\.c")
-        #   message("pixman source: ${source}")
-        # elseif("${source}" MATCHES ".*/pixman.*\\.c")
-        #   message("pixman header: ${source}")
-        # endif()
-        
-        if("${source}" MATCHES ".*\\.\\./.*")
-          message("source raw: ${source}")
-          #file(TO_CMAKE_PATH ${source} sourceCMakePath)
-          get_filename_component(sourceCMakePath ${source} ABSOLUTE)
-          message("source CMake: ${sourceCMakePath}")
-        endif()
-
-        # returns the containing directory with forward slashes
-        # get_filename_component(source_path "${source}" PATH) 
-
-        # converts / to \
-        # string(REPLACE "/" "\\" source_path_msvc "${source_path}")
-        #source_group("Stone ${source_path_msvc}" FILES "${source}")
-    endforeach()
-  endif()
-
-  source_group("Orthanc Framework\\Sources" REGULAR_EXPRESSION ".*/orthanc/(Core|Plugins)/.*cpp")
-  source_group("Orthanc Framework\\Headers" REGULAR_EXPRESSION ".*/orthanc/(Core|Plugins)/.*hpp")
-  source_group("Orthanc Framework\\Headers" REGULAR_EXPRESSION ".*/orthanc/(Core|Plugins)/.*h")
-
-  source_group("Stone Library\\Sources" REGULAR_EXPRESSION ".*/orthanc-stone/.*cpp")
-  source_group("Stone Library\\Headers" REGULAR_EXPRESSION ".*/orthanc-stone/.*hpp")
-  source_group("Stone Library\\Headers" REGULAR_EXPRESSION ".*/orthanc-stone/.*h")
-
-  source_group("Stone Samples\\Source" REGULAR_EXPRESSION ".*orthanc-stone/Samples/.*\\.cpp")
-  source_group("Stone Samples\\Headers" REGULAR_EXPRESSION ".*orthanc-stone/Samples/.*\\.h")
-
-  source_group("ThirdParty\\cairo" REGULAR_EXPRESSION ".*${CMAKE_BINARY_DIR}/cairo[^/]*/.*")
-  source_group("ThirdParty\\pixman" REGULAR_EXPRESSION ".*${CMAKE_BINARY_DIR}/pixman[^/]*/.*")
-  source_group("ThirdParty\\base64" REGULAR_EXPRESSION ".*ThirdParty/base64.*")
-  source_group("ThirdParty\\SDL2" REGULAR_EXPRESSION ".*${CMAKE_BINARY_DIR}/SDL2.*")
-  source_group("ThirdParty\\glew" REGULAR_EXPRESSION ".*${CMAKE_BINARY_DIR}/glew.*")
-  source_group("AUTOGENERATED" REGULAR_EXPRESSION ".*${CMAKE_BINARY_DIR}/AUTOGENERATED/.*")
-  source_group("ThirdParty\\minizip" REGULAR_EXPRESSION ".*ThirdParty/minizip/.*")
-  source_group("ThirdParty\\md5" REGULAR_EXPRESSION ".*ThirdParty/md5/.*")
-endmacro()
-
--- a/Samples/WebAssembly/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-
-project(OrthancStone)
-
-# Configuration of the Emscripten compiler for WebAssembly target
-# ---------------------------------------------------------------
-set(USE_WASM ON CACHE BOOL "")
-set(ORTHANC_FRAMEWORK_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../orthanc/OrthancFramework CACHE STRING "")
-set(STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../)
-
-set(EMSCRIPTEN_SET_LLVM_WASM_BACKEND ON CACHE BOOL "")
-
-set(WASM_FLAGS "-s WASM=1 -s FETCH=1")
-if (CMAKE_BUILD_TYPE STREQUAL "Debug")
-  set(WASM_FLAGS "${WASM_FLAGS} -s SAFE_HEAP=1")
-endif()
-
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
-
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ERROR_ON_UNDEFINED_SYMBOLS=1")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=268435456")  # 256MB + resize
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1")
-add_definitions(
-  -DDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1
-)
-
-# Stone of Orthanc configuration
-# ---------------------------------------------------------------
-set(ALLOW_DOWNLOADS ON)
-set(ORTHANC_FRAMEWORK_SOURCE "path")
-
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneParameters.cmake)
-include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/AutoGeneratedCode.cmake)
-include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/DownloadPackage.cmake)
-
-SET(ENABLE_DCMTK OFF)  # Not necessary
-SET(ENABLE_GOOGLE_TEST OFF)
-SET(ENABLE_LOCALE ON)  # Necessary for text rendering
-SET(ENABLE_WASM ON)
-SET(ORTHANC_SANDBOXED ON)
-
-# this will set up the build system for Stone of Orthanc and will
-# populate the ORTHANC_STONE_SOURCES CMake variable
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
-
-
-# We embed a font to be used for on-screen overlays
-# ---------------------------------------------------------------
-
-DownloadPackage(
-  "a24b8136b8f3bb93f166baf97d9328de"
-  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
-  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
-
-EmbedResources(
-  COLORMAP_HOT ${ORTHANC_STONE_ROOT}/Resources/Colormaps/hot.lut  
-  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
-  )
-
-add_library(OrthancStone STATIC
-  ${ORTHANC_STONE_SOURCES}
-  ${AUTOGENERATED_SOURCES}
-  )
-
-################################################################################
-
-# Define the WASM module
-# ---------------------------------------------------------------
-
-project(RtViewerWasm)
-
-add_executable(RtViewerWasm
-  RtViewer/RtViewerWasm.cpp
-  ../Common/RtViewerApp.cpp
-  ../Common/RtViewerApp.h
-  ../Common/RtViewerView.cpp
-  ../Common/RtViewerView.h
-  )
-
-target_link_libraries(RtViewerWasm OrthancStone)
-
-# Declare installation files for the module
-# ---------------------------------------------------------------
-install(
-  TARGETS RtViewerWasm
-  RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/RtViewer/
-  )
-
-# Declare installation files for the companion files (web scaffolding)
-# please note that ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.js
-# (the generated JS loader for the WASM module) is handled by the `install1`
-# section above: it is considered to be the binary output of 
-# the linker.
-# ---------------------------------------------------------------
-install(
-  FILES
-  ${CMAKE_SOURCE_DIR}/RtViewer/RtViewerWasmApp.js
-  ${CMAKE_SOURCE_DIR}/RtViewer/index.html
-  ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.wasm
-  DESTINATION ${CMAKE_INSTALL_PREFIX}/RtViewer/
-  )
-
-################################################################################
-
-# Define the WASM module
-# ---------------------------------------------------------------
-
-project(SingleFrameViewerWasm)
-
-add_executable(SingleFrameViewerWasm
-  SingleFrameViewer/SingleFrameViewer.cpp
-  )
-
-target_link_libraries(SingleFrameViewerWasm OrthancStone)
-
-# Declare installation files for the module
-# ---------------------------------------------------------------
-install(
-  TARGETS SingleFrameViewerWasm
-  RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/SingleFrameViewer/
-  )
-
-# Declare installation files for the companion files (web scaffolding)
-# please note that ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.js
-# (the generated JS loader for the WASM module) is handled by the `install1`
-# section above: it is considered to be the binary output of 
-# the linker.
-# ---------------------------------------------------------------
-install(
-  FILES
-  ${CMAKE_SOURCE_DIR}/SingleFrameViewer/SingleFrameViewerApp.js
-  ${CMAKE_SOURCE_DIR}/SingleFrameViewer/index.html
-  ${CMAKE_CURRENT_BINARY_DIR}/SingleFrameViewerWasm.wasm
-  DESTINATION ${CMAKE_INSTALL_PREFIX}/SingleFrameViewer/
-  )
--- a/Samples/WebAssembly/NOTES.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-
-Building WebAssembly samples using Docker
-=========================================
-
-The script "./docker-build.sh" can be used to quickly build the
-WebAssembly samples on any GNU/Linux distribution equipped with
-Docker. This avoids newcomers to install Emscripten and learn the
-CMake options. Just type:
-
-$ ./docker-build.sh Release
-
-After successful build, the binaries will be installed in the
-following folder (i.e. in the folder "wasm-binaries" at the root of
-the source distribution):
-
-$ ls -l ../../wasm-binaries
-
-
-NB: The source code of the Docker build environment can be found at
-the following location:
-https://github.com/jodogne/OrthancDocker/tree/master/wasm-builder
-
--- a/Samples/WebAssembly/RtViewer/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-
-project(RtViewerWasm)
-
-# Configuration of the Emscripten compiler for WebAssembly target
-# ---------------------------------------------------------------
-set(USE_WASM ON CACHE BOOL "")
-set(ORTHANC_FRAMEWORK_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../../orthanc CACHE STRING "")
-set(STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../)
-
-set(EMSCRIPTEN_SET_LLVM_WASM_BACKEND ON CACHE BOOL "")
-
-set(WASM_FLAGS "-s WASM=1 -s FETCH=1")
-if (CMAKE_BUILD_TYPE STREQUAL "Debug")
-  set(WASM_FLAGS "${WASM_FLAGS} -s SAFE_HEAP=1")
-endif()
-
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
-
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ERROR_ON_UNDEFINED_SYMBOLS=1")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=268435456")  # 256MB + resize
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1")
-add_definitions(
-  -DDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1
-)
-
-# Stone of Orthanc configuration
-# ---------------------------------------------------------------
-set(ALLOW_DOWNLOADS ON)
-set(ORTHANC_FRAMEWORK_SOURCE "path")
-
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneParameters.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/AutoGeneratedCode.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
-
-SET(ENABLE_DCMTK OFF)  # Not necessary
-SET(ENABLE_GOOGLE_TEST OFF)
-SET(ENABLE_LOCALE ON)  # Necessary for text rendering
-SET(ENABLE_WASM ON)
-SET(ORTHANC_SANDBOXED ON)
-
-# this will set up the build system for Stone of Orthanc and will
-# populate the ORTHANC_STONE_SOURCES CMake variable
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
-
-
-# We embed a font to be used for on-screen overlays
-# ---------------------------------------------------------------
-
-DownloadPackage(
-  "a24b8136b8f3bb93f166baf97d9328de"
-  "http://orthanc.osimis.io/ThirdPartyDownloads/ubuntu-font-family-0.83.zip"
-  "${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83")
-
-EmbedResources(
-  COLORMAP_HOT ${ORTHANC_STONE_ROOT}/Resources/Colormaps/hot.lut  
-  UBUNTU_FONT  ${CMAKE_BINARY_DIR}/ubuntu-font-family-0.83/Ubuntu-R.ttf
-  )
-
-# Define the WASM module
-# ---------------------------------------------------------------
-add_executable(RtViewerWasm
-  RtViewerWasm.cpp
-  ../../Common/RtViewerApp.cpp
-  ../../Common/RtViewerApp.h
-  ../../Common/RtViewerView.cpp
-  ../../Common/RtViewerView.h
-  ${ORTHANC_STONE_SOURCES}
-  ${AUTOGENERATED_SOURCES}
-  )
-
-# Declare installation files for the module
-# ---------------------------------------------------------------
-install(
-  TARGETS RtViewerWasm
-  RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}
-  )
-
-# Declare installation files for the companion files (web scaffolding)
-# please note that ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.js
-# (the generated JS loader for the WASM module) is handled by the `install1`
-# section above: it is considered to be the binary output of 
-# the linker.
-# ---------------------------------------------------------------
-install(
-  FILES
-  ${CMAKE_SOURCE_DIR}/RtViewerWasmApp.js
-  ${CMAKE_SOURCE_DIR}/index.html
-  ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.wasm
-  DESTINATION ${CMAKE_INSTALL_PREFIX}
-  )
--- a/Samples/WebAssembly/RtViewer/OBSOLETE.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,559 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "../../../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
-#include "../../../Framework/Oracle/SleepOracleCommand.h"
-#include "../../../Framework/Oracle/WebAssemblyOracle.h"
-#include "../../../Framework/Scene2D/GrayscaleStyleConfigurator.h"
-#include "../../../Framework/Scene2D/OpenGLCompositor.h"
-#include "../../../Framework/Scene2D/PanSceneTracker.h"
-#include "../../../Framework/Scene2D/RotateSceneTracker.h"
-#include "../../../Framework/Scene2D/ZoomSceneTracker.h"
-#include "../../../Framework/Scene2DViewport/UndoStack.h"
-#include "../../../Framework/Scene2DViewport/ViewportController.h"
-#include "../../../Framework/StoneInitialization.h"
-#include "../../../Framework/Viewport/WebAssemblyViewport.h"
-#include "../../../Framework/Volumes/VolumeSceneLayerSource.h"
-
-#include <OrthancException.h>
-
-#include <emscripten/html5.h>
-#include <emscripten.h>
-
-#include <boost/make_shared.hpp>
-
-
-class ViewportManager;
-
-static const unsigned int FONT_SIZE = 32;
-
-boost::shared_ptr<OrthancStone::DicomVolumeImage>                     ct_(new OrthancStone::DicomVolumeImage);
-boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> loader_;
-std::unique_ptr<ViewportManager>                        widget1_;
-std::unique_ptr<ViewportManager>                        widget2_;
-std::unique_ptr<ViewportManager>                        widget3_;
-//OrthancStone::MessageBroker                                         broker_;
-//OrthancStone::WebAssemblyOracle                                     oracle_(broker_);
-std::unique_ptr<OrthancStone::IFlexiblePointerTracker>                tracker_;
-static std::map<std::string, std::string>                             arguments_;
-static bool                                                           ctrlDown_ = false;
-
-
-#if 0
-
-// use the one from WebAssemblyViewport
-static OrthancStone::PointerEvent* ConvertMouseEvent(
-  const EmscriptenMouseEvent&        source,
-  OrthancStone::IViewport& viewport)
-{
-
-  std::unique_ptr<OrthancStone::PointerEvent> target(
-    new OrthancStone::PointerEvent);
-
-  target->AddPosition(viewport.GetPixelCenterCoordinates(
-                        source.targetX, source.targetY));
-  target->SetAltModifier(source.altKey);
-  target->SetControlModifier(source.ctrlKey);
-  target->SetShiftModifier(source.shiftKey);
-
-  return target.release();
-}
-#endif
-
-
-EM_BOOL OnMouseEvent(int eventType, 
-                     const EmscriptenMouseEvent *mouseEvent, 
-                     void *userData)
-{
-  if (mouseEvent != NULL &&
-      userData != NULL)
-  {
-    boost::shared_ptr<OrthancStone::WebGLViewport>& viewport = 
-      *reinterpret_cast<boost::shared_ptr<OrthancStone::WebGLViewport>*>(userData);
-
-    std::unique_ptr<OrthancStone::IViewport::ILock> lock = (*viewport)->Lock();
-    ViewportController& controller = lock->GetController();
-    Scene2D& scene = controller.GetScene();
-    
-    switch (eventType)
-    {
-      case EMSCRIPTEN_EVENT_CLICK:
-      {
-        static unsigned int count = 0;
-        char buf[64];
-        sprintf(buf, "click %d", count++);
-
-        std::unique_ptr<OrthancStone::TextSceneLayer> layer(new OrthancStone::TextSceneLayer);
-        layer->SetText(buf);
-        scene.SetLayer(100, layer.release());
-        lock->Invalidate();
-        break;
-      }
-
-      case EMSCRIPTEN_EVENT_MOUSEDOWN:
-      {
-        boost::shared_ptr<OrthancStone::IFlexiblePointerTracker> t;
-
-        {
-          std::unique_ptr<OrthancStone::PointerEvent> event(
-            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
-
-          switch (mouseEvent->button)
-          {
-            case 0:  // Left button
-              emscripten_console_log("Creating RotateSceneTracker");
-              t.reset(new OrthancStone::RotateSceneTracker(
-                        viewport, *event));
-              break;
-
-            case 1:  // Middle button
-              emscripten_console_log("Creating PanSceneTracker");
-              LOG(INFO) << "Creating PanSceneTracker" ;
-              t.reset(new OrthancStone::PanSceneTracker(
-                        viewport, *event));
-              break;
-
-            case 2:  // Right button
-              emscripten_console_log("Creating ZoomSceneTracker");
-              t.reset(new OrthancStone::ZoomSceneTracker(
-                        viewport, *event, controller->GetViewport().GetCanvasWidth()));
-              break;
-
-            default:
-              break;
-          }
-        }
-
-        if (t.get() != NULL)
-        {
-          tracker_.reset(
-            new OrthancStone::ActiveTracker(t, controller->GetViewport().GetCanvasIdentifier()));
-          controller->GetViewport().Refresh();
-        }
-
-        break;
-      }
-
-      case EMSCRIPTEN_EVENT_MOUSEMOVE:
-        if (tracker_.get() != NULL)
-        {
-          std::unique_ptr<OrthancStone::PointerEvent> event(
-            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
-          tracker_->PointerMove(*event);
-          controller->GetViewport().Refresh();
-        }
-        break;
-
-      case EMSCRIPTEN_EVENT_MOUSEUP:
-        if (tracker_.get() != NULL)
-        {
-          std::unique_ptr<OrthancStone::PointerEvent> event(
-            ConvertMouseEvent(*mouseEvent, controller->GetViewport()));
-          tracker_->PointerUp(*event);
-          controller->GetViewport().Refresh();
-          if (!tracker_->IsAlive())
-            tracker_.reset();
-        }
-        break;
-
-      default:
-        break;
-    }
-  }
-
-  return true;
-}
-
-
-void SetupEvents(const std::string& canvas,
-                 boost::shared_ptr<OrthancStone::WebGLViewport>& viewport)
-{
-  emscripten_set_mousedown_callback(canvas.c_str(), &viewport, false, OnMouseEvent);
-  emscripten_set_mousemove_callback(canvas.c_str(), &viewport, false, OnMouseEvent);
-  emscripten_set_mouseup_callback(canvas.c_str(), &viewport, false, OnMouseEvent);
-}
-
-  class ViewportManager : public OrthanStone::ObserverBase<ViewportManager>
-  {
-  private:
-    OrthancStone::WebAssemblyViewport         viewport_;
-    std::unique_ptr<VolumeSceneLayerSource>   source_;
-    VolumeProjection                          projection_;
-    std::vector<CoordinateSystem3D>           planes_;
-    size_t                                    currentPlane_;
-
-    void Handle(const DicomVolumeImage::GeometryReadyMessage& message)
-    {
-      LOG(INFO) << "Geometry is available";
-
-      const VolumeImageGeometry& geometry = message.GetOrigin().GetGeometry();
-
-      const unsigned int depth = geometry.GetProjectionDepth(projection_);
-
-      // select an initial cutting plane halfway through the volume
-      currentPlane_ = depth / 2;
-
-      planes_.resize(depth);
-
-      for (unsigned int z = 0; z < depth; z++)
-      {
-        planes_[z] = geometry.GetProjectionSlice(projection_, z);
-      }
-
-      Refresh();
-
-      viewport_.FitContent();
-    }
-    
-  public:
-    ViewportManager(const std::string& canvas,
-                    VolumeProjection projection) :
-      projection_(projection),
-      currentPlane_(0)
-    {
-      viewport_ = OrthancStone::WebGLViewport::Create(canvas);
-    }
-
-    void UpdateSize()
-    {
-      viewport_.UpdateSize();
-    }
-
-    void SetSlicer(int layerDepth,
-                   const boost::shared_ptr<IVolumeSlicer>& slicer,
-                   IObservable& loader,
-                   ILayerStyleConfigurator* configurator)
-    {
-      if (source_.get() != NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                        "Only one slicer can be registered");
-      }
-      
-      loader.RegisterObserverCallback(
-        new Callable<ViewportManager, DicomVolumeImage::GeometryReadyMessage>
-        (*this, &ViewportManager::Handle));
-
-      source_.reset(new VolumeSceneLayerSource(viewport_.GetScene(), layerDepth, slicer));
-
-      if (configurator != NULL)
-      {
-        source_->SetConfigurator(configurator);
-      }
-    }    
-
-    void Refresh()
-    {
-      if (source_.get() != NULL &&
-          currentPlane_ < planes_.size())
-      {
-        source_->Update(planes_[currentPlane_]);
-        viewport_.Refresh();
-      }
-    }
-
-    size_t GetSlicesCount() const
-    {
-      return planes_.size();
-    }
-
-    void Scroll(int delta)
-    {
-      if (!planes_.empty())
-      {
-        int tmp = static_cast<int>(currentPlane_) + delta;
-        unsigned int next;
-
-        if (tmp < 0)
-        {
-          next = 0;
-        }
-        else if (tmp >= static_cast<int>(planes_.size()))
-        {
-          next = planes_.size() - 1;
-        }
-        else
-        {
-          next = static_cast<size_t>(tmp);
-        }
-
-        if (next != currentPlane_)
-        {
-          currentPlane_ = next;
-          Refresh();
-        }
-      }
-    }
-  };
-}
-
-
-EM_BOOL OnWindowResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData)
-{
-  try
-  {
-    if (widget1_.get() != NULL)
-    {
-      widget1_->UpdateSize();
-    }
-  
-    if (widget2_.get() != NULL)
-    {
-      widget2_->UpdateSize();
-    }
-  
-    if (widget3_.get() != NULL)
-    {
-      widget3_->UpdateSize();
-    }
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "Exception while updating canvas size: " << e.What();
-  }
-  
-  return true;
-}
-
-EM_BOOL OnAnimationFrame(double time, void *userData)
-{
-  try
-  {
-    if (widget1_.get() != NULL)
-    {
-      widget1_->Refresh();
-    }
-  
-    if (widget2_.get() != NULL)
-    {
-      widget2_->Refresh();
-    }
-  
-    if (widget3_.get() != NULL)
-    {
-      widget3_->Refresh();
-    }
-
-    return true;
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "Exception in the animation loop, stopping now: " << e.What();
-    return false;
-  }  
-}
-
-EM_BOOL OnMouseWheel(int eventType,
-                     const EmscriptenWheelEvent *wheelEvent,
-                     void *userData)
-{
-  try
-  {
-    if (userData != NULL)
-    {
-      int delta = 0;
-
-      if (wheelEvent->deltaY < 0)
-      {
-        delta = -1;
-      }
-           
-      if (wheelEvent->deltaY > 0)
-      {
-        delta = 1;
-      }
-
-      OrthancStone::ViewportManager& widget =
-        *reinterpret_cast<OrthancStone::ViewportManager*>(userData);
-      
-      if (ctrlDown_)
-      {
-        delta *= static_cast<int>(widget.GetSlicesCount() / 10);
-      }
-
-      widget.Scroll(delta);
-    }
-  }
-  catch (Orthanc::OrthancException& e)
-  {
-    LOG(ERROR) << "Exception in the wheel event: " << e.What();
-  }
-  
-  return true;
-}
-
-
-EM_BOOL OnKeyDown(int eventType,
-                  const EmscriptenKeyboardEvent *keyEvent,
-                  void *userData)
-{
-  ctrlDown_ = keyEvent->ctrlKey;
-  return false;
-}
-
-
-EM_BOOL OnKeyUp(int eventType,
-                const EmscriptenKeyboardEvent *keyEvent,
-                void *userData)
-{
-  ctrlDown_ = false;
-  return false;
-}
-
-
-
-#if 0
-namespace OrthancStone
-{
-  class TestSleep : public IObserver
-  {
-  private:
-    WebAssemblyOracle&  oracle_;
-
-    void Schedule()
-    {
-      oracle_.Schedule(*this, new OrthancStone::SleepOracleCommand(2000));
-    }
-    
-    void Handle(const SleepOracleCommand::TimeoutMessage& message)
-    {
-      LOG(INFO) << "TIMEOUT";
-      Schedule();
-    }
-    
-  public:
-    TestSleep(MessageBroker& broker,
-              WebAssemblyOracle& oracle) :
-      IObserver(broker),
-      oracle_(oracle)
-    {
-      oracle.RegisterObserverCallback(
-        new Callable<TestSleep, SleepOracleCommand::TimeoutMessage>
-        (*this, &TestSleep::Handle));
-
-      LOG(INFO) << "STARTING";
-      Schedule();
-    }
-  };
-
-  //static TestSleep testSleep(broker_, oracle_);
-}
-#endif
-
-static bool GetArgument(std::string& value,
-                        const std::string& key)
-{
-  std::map<std::string, std::string>::const_iterator found = arguments_.find(key);
-
-  if (found == arguments_.end())
-  {
-    return false;
-  }
-  else
-  {
-    value = found->second;
-    return true;
-  }
-}
-
-
-extern "C"
-{
-  int main(int argc, char const *argv[]) 
-  {
-    OrthancStone::StoneInitialize();
-    Orthanc::Logging::EnableInfoLevel(true);
-    // Orthanc::Logging::EnableTraceLevel(true);
-    EM_ASM(window.dispatchEvent(new CustomEvent("WebAssemblyLoaded")););
-  }
-
-  EMSCRIPTEN_KEEPALIVE
-  void SetArgument(const char* key, const char* value)
-  {
-    // This is called for each GET argument (cf. "app.js")
-    LOG(INFO) << "Received GET argument: [" << key << "] = [" << value << "]";
-    arguments_[key] = value;
-  }
-
-  EMSCRIPTEN_KEEPALIVE
-  void Initialize()
-  {
-    try
-    {
-      oracle_.SetOrthancRoot("..");
-      
-      loader_.reset(new OrthancStone::OrthancSeriesVolumeProgressiveLoader(ct_, oracle_, oracle_));
-    
-      widget1_.reset(new OrthancStone::ViewportManager("mycanvas1", OrthancStone::VolumeProjection_Axial));
-      {
-        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
-        style->SetLinearInterpolation(true);
-        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
-        widget1_->SetSlicer(0, loader_, *loader_, style.release());
-      }
-      widget1_->UpdateSize();
-
-      widget2_.reset(new OrthancStone::ViewportManager("mycanvas2", OrthancStone::VolumeProjection_Coronal));
-      {
-        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
-        style->SetLinearInterpolation(true);
-        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
-        widget2_->SetSlicer(0, loader_, *loader_, style.release());
-      }
-      widget2_->UpdateSize();
-
-      widget3_.reset(new OrthancStone::ViewportManager("mycanvas3", OrthancStone::VolumeProjection_Sagittal));
-      {
-        std::unique_ptr<OrthancStone::GrayscaleStyleConfigurator> style(new OrthancStone::GrayscaleStyleConfigurator);
-        style->SetLinearInterpolation(true);
-        style->SetWindowing(OrthancStone::ImageWindowing_Bone);
-        widget3_->SetSlicer(0, loader_, *loader_, style.release());
-      }
-      widget3_->UpdateSize();
-
-      emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnWindowResize); // DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 !!
-
-      emscripten_set_wheel_callback("#mycanvas1", widget1_.get(), false, OnMouseWheel);
-      emscripten_set_wheel_callback("#mycanvas2", widget2_.get(), false, OnMouseWheel);
-      emscripten_set_wheel_callback("#mycanvas3", widget3_.get(), false, OnMouseWheel);
-
-      emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyDown);
-      emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, false, OnKeyUp);
-    
-      //emscripten_request_animation_frame_loop(OnAnimationFrame, NULL);
-
-      std::string ct;
-      if (GetArgument(ct, "ct"))
-      {
-        //loader_->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa");
-        loader_->LoadSeries(ct);
-      }
-      else
-      {
-        LOG(ERROR) << "No Orthanc identifier for the CT series was provided";
-      }
-    }
-    catch (Orthanc::OrthancException& e)
-    {
-      LOG(ERROR) << "Exception during Initialize(): " << e.What();
-    }
-  }
-}
-
--- a/Samples/WebAssembly/RtViewer/RtViewerWasm.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,198 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "../../Common/RtViewerApp.h"
-#include "../../Common/RtViewerView.h"
-#include "../../Common/SampleHelpers.h"
-
-// Stone of Orthanc includes
-#include "../../../Framework/Loaders/WebAssemblyLoadersContext.h"
-#include "../../../Framework/StoneException.h"
-#include "../../../Framework/StoneInitialization.h"
-#include "../../../Framework/Viewport/WebGLViewport.h"
-//#include "../../../Framework/OpenGL/WebAssemblyOpenGLContext.h"
-
-#include <Toolbox.h>
-
-#include <boost/program_options.hpp>
-#include <boost/shared_ptr.hpp>
-// #include <boost/pointer_cast.hpp> this include might be necessary in more recent boost versions
-
-#include <emscripten.h>
-#include <emscripten/html5.h>
-
-
-#define DISPATCH_JAVASCRIPT_EVENT(name)                         \
-  EM_ASM(                                                       \
-    const customEvent = document.createEvent("CustomEvent");    \
-    customEvent.initCustomEvent(name, false, false, undefined); \
-    window.dispatchEvent(customEvent);                          \
-    );
-
-#define EXTERN_CATCH_EXCEPTIONS                         \
-  catch (Orthanc::OrthancException& e)                  \
-  {                                                     \
-    LOG(ERROR) << "OrthancException: " << e.What();     \
-    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
-  }                                                     \
-  catch (OrthancStone::StoneException& e)               \
-  {                                                     \
-    LOG(ERROR) << "StoneException: " << e.What();       \
-    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
-  }                                                     \
-  catch (std::exception& e)                             \
-  {                                                     \
-    LOG(ERROR) << "Runtime error: " << e.what();        \
-    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
-  }                                                     \
-  catch (...)                                           \
-  {                                                     \
-    LOG(ERROR) << "Native exception";                   \
-    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
-  }
-
-namespace OrthancStone
-{
-  //   typedef EM_BOOL (*OnMouseWheelFunc)(int eventType, const EmscriptenWheelEvent* wheelEvent, void* userData);
-
-  EM_BOOL RtViewerView_Scroll(int eventType, 
-                              const EmscriptenWheelEvent* wheelEvent, 
-                              void* userData)
-  {
-    RtViewerView* that = reinterpret_cast<RtViewerView*>(userData);
-
-    int delta = 0;
-    if (wheelEvent->deltaY < 0)
-      delta = -1;
-    if (wheelEvent->deltaY > 0)
-      delta = 1;
-
-    that->Scroll(delta);
-
-    return 1;
-  }
-  
-  boost::shared_ptr<IViewport> RtViewerView::CreateViewport(
-    const std::string& canvasId)
-  {
-    boost::shared_ptr<IViewport> viewport = WebGLViewport::Create(canvasId);
-
-    void* userData = reinterpret_cast<void*>(this);
-
-    // manually add the mouse wheel handler
-
-    std::string selector = "#" + canvasId;
-
-    emscripten_set_wheel_callback_on_thread(
-      selector.c_str(),
-      userData,
-      false,
-      &RtViewerView_Scroll,
-      EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD);
-
-    return viewport;
-  }
-
-  void RtViewerView::TakeScreenshot(const std::string& target,
-                                   unsigned int canvasWidth,
-                                   unsigned int canvasHeight)
-  {
-    throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-  }
-
-
-  void RtViewerApp::RunWasm()
-  {
-    loadersContext_.reset(new OrthancStone::WebAssemblyLoadersContext(1, 4, 1));
-
-    // we are in WASM --> downcast to concrete type
-    boost::shared_ptr<WebAssemblyLoadersContext> loadersContext = 
-      boost::dynamic_pointer_cast<WebAssemblyLoadersContext>(loadersContext_);
-
-    if (HasArgument("orthanc"))
-      loadersContext->SetLocalOrthanc(GetArgument("orthanc"));
-    else 
-      loadersContext->SetLocalOrthanc("..");
-
-    loadersContext->SetDicomCacheSize(128 * 1024 * 1024);  // 128MB
-
-    CreateLoaders();
-    
-    CreateView("RtViewer_Axial", VolumeProjection_Axial);
-    CreateView("RtViewer_Coronal", VolumeProjection_Coronal);
-    CreateView("RtViewer_Sagittal", VolumeProjection_Sagittal);
-
-    for (size_t i = 0; i < views_.size(); ++i)
-    {
-      views_[i]->PrepareViewport();
-    }
-
-    StartLoaders();
-
-    DefaultViewportInteractor interactor;
-  }
-}
-
-extern "C"
-{
-  boost::shared_ptr<OrthancStone::RtViewerApp> g_app;
-
-  int main(int argc, char const *argv[]) 
-  {
-    try
-    {
-      OrthancStone::StoneInitialize();
-      Orthanc::Logging::Initialize();
-      Orthanc::Logging::EnableTraceLevel(true);
-
-      LOG(WARNING) << "Initializing native Stone";
-
-      LOG(WARNING) << "Compiled with Emscripten " << __EMSCRIPTEN_major__
-                   << "." << __EMSCRIPTEN_minor__
-                   << "." << __EMSCRIPTEN_tiny__;
-
-      LOG(INFO) << "Endianness: " << Orthanc::EnumerationToString(Orthanc::Toolbox::DetectEndianness());
-
-      g_app = OrthancStone::RtViewerApp::Create();
-  
-      DISPATCH_JAVASCRIPT_EVENT("WasmModuleInitialized");
-    }
-    EXTERN_CATCH_EXCEPTIONS;
-  }
-
-  EMSCRIPTEN_KEEPALIVE
-  void Initialize(const char* canvasId)
-  {
-    try
-    {
-      g_app->RunWasm();
-    }
-    EXTERN_CATCH_EXCEPTIONS;
-  }
-
-  EMSCRIPTEN_KEEPALIVE
-  void SetArgument(const char* key, const char* value)
-  {
-    // This is called for each GET argument (cf. "app.js")
-    LOG(INFO) << "Received GET argument: [" << key << "] = [" << value << "]";
-    g_app->SetArgument(key, value);
-  }
-
-}
--- a/Samples/WebAssembly/RtViewer/RtViewerWasmApp.js	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-
-// This object wraps the functions exposed by the wasm module
-
-const WasmModuleWrapper = function() {
-  this._InitializeViewport = undefined;
-};
-
-WasmModuleWrapper.prototype.Setup = function(Module) {
-  this._SetArgument = Module.cwrap('SetArgument', null, [ 'string', 'string' ]);
-  this._Initialize = Module.cwrap('Initialize', null, [ 'string' ]);
-};
-
-WasmModuleWrapper.prototype.SetArgument = function(key, value) {
-  this._SetArgument(key, value);
-};
-
-WasmModuleWrapper.prototype.Initialize = function(canvasId) {
-  this._Initialize(canvasId);
-};
-
-var wasmModuleWrapper = new WasmModuleWrapper();
-
-$(document).ready(function() {
-
-  window.addEventListener('WasmModuleInitialized', function() {
-
-    // bind the C++ global functions
-    wasmModuleWrapper.Setup(Module);
-
-    console.warn('Native C++ module initialized');
-
-    // Loop over the GET arguments
-    var parameters = window.location.search.substr(1);
-    if (parameters != null && parameters != '') {
-      var tokens = parameters.split('&');
-      for (var i = 0; i < tokens.length; i++) {
-        var arg = tokens[i].split('=');
-        if (arg.length == 2) {
-          // Send each GET argument to WebAssembly
-          wasmModuleWrapper.SetArgument(arg[0], decodeURIComponent(arg[1]));
-        }
-      }
-    }
-    wasmModuleWrapper.Initialize();
-  });
-
-  window.addEventListener('StoneException', function() {
-    alert('Exception caught in C++ code');
-  });    
-
-  var scriptSource;
-
-  if ('WebAssembly' in window) {
-    console.warn('Loading WebAssembly');
-    scriptSource = 'RtViewerWasm.js';
-  } else {
-    console.error('Your browser does not support WebAssembly!');
-  }
-
-  // Option 1: Loading script using plain HTML
-  
-  /*
-    var script = document.createElement('script');
-    script.src = scriptSource;
-    script.type = 'text/javascript';
-    document.body.appendChild(script);
-  */
-
-  // Option 2: Loading script using AJAX (gives the opportunity to
-  // report explicit errors)
-  
-  axios.get(scriptSource)
-    .then(function (response) {
-      var script = document.createElement('script');
-      script.innerHTML = response.data;
-      script.type = 'text/javascript';
-      document.body.appendChild(script);
-    })
-    .catch(function (error) {
-      alert('Cannot load the WebAssembly framework');
-    });
-});
-
-// http://localhost:9979/rtviewer/index.html?loglevel=trace&ctseries=a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa&rtdose=830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb&rtstruct=54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9
-
--- a/Samples/WebAssembly/RtViewer/RtViewerWasmWrapper.js	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-
-const Stone = function() {
-  this._InitializeViewport = undefined;
-  this._LoadOrthanc = undefined;
-  this._LoadDicomWeb = undefined;
-};
-
-Stone.prototype.Setup = function(Module) {
-  this._InitializeViewport = Module.cwrap('InitializeViewport', null, [ 'string' ]);
-  this._LoadOrthanc = Module.cwrap('LoadOrthanc', null, [ 'string', 'int' ]);
-  this._LoadDicomWeb = Module.cwrap('LoadDicomWeb', null, [ 'string', 'string', 'string', 'string', 'int' ]);
-};
-
-Stone.prototype.InitializeViewport = function(canvasId) {
-  this._InitializeViewport(canvasId);
-};
-
-Stone.prototype.LoadOrthanc = function(instance, frame) {
-  this._LoadOrthanc(instance, frame);
-};
-
-Stone.prototype.LoadDicomWeb = function(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame) {
-  this._LoadDicomWeb(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame);
-};
-
-var stone = new Stone();
-
--- a/Samples/WebAssembly/RtViewer/index.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-<!doctype html>
-<html lang="en-us">
-  <head>
-    <title>Stone of Orthanc Single Frame Viewer </title>
-    <meta charset="utf-8" />
-    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
-    <meta name="apple-mobile-web-app-capable" content="yes" />
-    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
-    <link rel="icon" href="data:;base64,iVBORw0KGgo=">
-
-    <!-- Disable pinch zoom on mobile devices -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <meta name="HandheldFriendly" content="true" />
-    
-    <style>
-      html, body {
-      width: 100%;
-      height: 100%;
-      margin: 0px;
-      border: 0;
-      overflow: hidden; /*  Disable scrollbars */
-      display: block;  /* No floating content on sides */
-      }
-
-      #RtViewer_Axial {
-        position: absolute;
-        left: 0%;
-        top: 0%;
-        background-color: red;
-        width: 50%;
-        height: 100%;
-      }
-
-      #RtViewer_Coronal {
-        position: absolute;
-        left: 50%;
-        top: 0%;
-        background-color: green;
-        width: 50%;
-        height: 50%;
-      }
-
-      #RtViewer_Sagittal {
-        position: absolute;
-        left: 50%;
-        top: 50%;
-        background-color: blue;
-        width: 50%;
-        height: 50%;
-      }
-    </style>
-  </head>
-  <body>
-    <canvas id="RtViewer_Axial" oncontextmenu="return false;"></canvas>
-    <canvas id="RtViewer_Coronal" oncontextmenu="return false;"></canvas>
-    <canvas id="RtViewer_Sagittal" oncontextmenu="return false;"></canvas>
-
-    <script src="https://code.jquery.com/jquery-3.4.1.js"></script>
-    <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.0/axios.js"></script>
-
-    <script src="RtViewerWasmApp.js"></script>
-  </body>
-</html>
--- a/Samples/WebAssembly/SingleFrameViewer/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-
-project(SingleFrameViewer)
-
-# Configuration of the Emscripten compiler for WebAssembly target
-# ---------------------------------------------------------------
-set(USE_WASM ON CACHE BOOL "")
-set(ORTHANC_FRAMEWORK_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../../orthanc CACHE STRING "")
-set(STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../)
-
-set(EMSCRIPTEN_SET_LLVM_WASM_BACKEND ON CACHE BOOL "")
-
-set(WASM_FLAGS "-s WASM=1 -s FETCH=1")
-if (CMAKE_BUILD_TYPE STREQUAL "Debug")
-  set(WASM_FLAGS "${WASM_FLAGS} -s SAFE_HEAP=1")
-endif()
-
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WASM_FLAGS}")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WASM_FLAGS}")
-
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ERROR_ON_UNDEFINED_SYMBOLS=1")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=268435456")  # 256MB + resize
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1")
-add_definitions(
-  -DDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1
-)
-
-# Stone of Orthanc configuration
-# ---------------------------------------------------------------
-set(ALLOW_DOWNLOADS ON)
-set(ORTHANC_FRAMEWORK_SOURCE "path")
-
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneParameters.cmake)
-
-SET(ENABLE_DCMTK ON)
-SET(ENABLE_GOOGLE_TEST OFF)
-SET(ENABLE_LOCALE ON)  # Necessary for text rendering
-SET(ENABLE_WASM ON)
-SET(ORTHANC_SANDBOXED ON)
-
-# this will set up the build system for Stone of Orthanc and will
-# populate the ORTHANC_STONE_SOURCES CMake variable
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
-
-# Define the WASM module
-# ---------------------------------------------------------------
-add_executable(SingleFrameViewerWasm
-  SingleFrameViewer.cpp
-  ${ORTHANC_STONE_SOURCES}
-  )
-
-# Declare installation files for the module
-# ---------------------------------------------------------------
-install(
-  TARGETS SingleFrameViewerWasm
-  RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}
-  )
-
-# Declare installation files for the companion files (web scaffolding)
-# please note that ${CMAKE_CURRENT_BINARY_DIR}/RtViewerWasm.js
-# (the generated JS loader for the WASM module) is handled by the `install1`
-# section above: it is considered to be the binary output of 
-# the linker.
-# ---------------------------------------------------------------
-install(
-  FILES
-  ${CMAKE_SOURCE_DIR}/SingleFrameViewerApp.js
-  ${CMAKE_SOURCE_DIR}/index.html
-  ${CMAKE_CURRENT_BINARY_DIR}/SingleFrameViewerWasm.wasm
-  DESTINATION ${CMAKE_INSTALL_PREFIX}
-  )
--- a/Samples/WebAssembly/SingleFrameViewer/CMakeSettings.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-{
-  "configurations": [
-    {
-      "name": "wasm32-RelWithDebInfo",
-      "generator": "Ninja",
-      "configurationType": "RelWithDebInfo",
-      //"inheritEnvironments": [ "msvc_x64_x64" ],
-      "buildRoot": "${projectDir}\\out\\build\\${name}",
-      "installRoot": "${projectDir}\\out\\install\\${name}",
-      "cmakeCommandArgs": "",
-      "buildCommandArgs": "-v",
-      "ctestCommandArgs": "",
-      "cmakeToolchain": "C:/osi/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake",
-      "intelliSenseMode": "windows-clang-x64",
-      "variables": [
-        {
-          "name": "CMAKE_BUILD_TYPE",
-          "value": "RelWithDebInfo",
-          "type": "STRING"
-        },
-        {
-          "name": "ALLOW_DOWNLOADS",
-          "value": "True",
-          "type": "BOOL"
-        },
-        {
-          "name": "STATIC_BUILD",
-          "value": "True",
-          "type": "BOOL"
-        },
-        {
-          "name": "OPENSSL_NO_CAPIENG",
-          "value": "True",
-          "type": "BOOL"
-        }
-      ]
-    }
-  ]
-}
\ No newline at end of file
--- a/Samples/WebAssembly/SingleFrameViewer/SingleFrameViewer.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "SingleFrameViewerApplication.h"
-
-#include "../../../Framework/Loaders/WebAssemblyLoadersContext.h"
-#include "../../../Framework/StoneException.h"
-#include "../../../Framework/StoneInitialization.h"
-
-#include <Compatibility.h>  // For std::unique_ptr<>
-#include <Toolbox.h>
-
-#include <emscripten.h>
-#include <emscripten/html5.h>
-
-
-#define DISPATCH_JAVASCRIPT_EVENT(name)                         \
-  EM_ASM(                                                       \
-    const customEvent = document.createEvent("CustomEvent");    \
-    customEvent.initCustomEvent(name, false, false, undefined); \
-    window.dispatchEvent(customEvent);                          \
-    );
-
-#define EXTERN_CATCH_EXCEPTIONS                         \
-  catch (Orthanc::OrthancException& e)                  \
-  {                                                     \
-    LOG(ERROR) << "OrthancException: " << e.What();     \
-    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
-  }                                                     \
-  catch (OrthancStone::StoneException& e)               \
-  {                                                     \
-    LOG(ERROR) << "StoneException: " << e.What();       \
-    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
-  }                                                     \
-  catch (std::exception& e)                             \
-  {                                                     \
-    LOG(ERROR) << "Runtime error: " << e.what();        \
-    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
-  }                                                     \
-  catch (...)                                           \
-  {                                                     \
-    LOG(ERROR) << "Native exception";                   \
-    DISPATCH_JAVASCRIPT_EVENT("StoneException");        \
-  }
-
-
-
-namespace OrthancStone
-{
-}
-
-static std::unique_ptr<OrthancStone::WebAssemblyLoadersContext>  context_;
-static boost::shared_ptr<OrthancStone::Application>  application_;
-
-extern "C"
-{
-  int main(int argc, char const *argv[]) 
-  {
-    try
-    {
-      Orthanc::Logging::Initialize();
-      Orthanc::Logging::EnableInfoLevel(true);
-      //Orthanc::Logging::EnableTraceLevel(true);
-      LOG(WARNING) << "Initializing native Stone";
-
-      LOG(WARNING) << "Compiled with Emscripten " << __EMSCRIPTEN_major__
-                   << "." << __EMSCRIPTEN_minor__
-                   << "." << __EMSCRIPTEN_tiny__;
-
-      LOG(INFO) << "Endianness: " << Orthanc::EnumerationToString(Orthanc::Toolbox::DetectEndianness());
-      context_.reset(new OrthancStone::WebAssemblyLoadersContext(1, 4, 1));
-      context_->SetLocalOrthanc("..");
-      context_->SetDicomCacheSize(128 * 1024 * 1024);  // 128MB
-  
-      DISPATCH_JAVASCRIPT_EVENT("WasmModuleInitialized");
-    }
-    EXTERN_CATCH_EXCEPTIONS;
-
-    return 0;
-  }
-  
-  EMSCRIPTEN_KEEPALIVE
-  void InitializeViewport(const char* canvasId)
-  {
-    try
-    {
-      if (context_.get() == NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                        "The loaders context is not available yet");
-      }
-      
-      if (application_.get() != NULL)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
-                                        "Only one single viewport is available for this application");
-      }
-
-      boost::shared_ptr<OrthancStone::WebGLViewport> viewport(OrthancStone::GetWebGLViewportsRegistry().Add(canvasId));
-      application_ = OrthancStone::Application::Create(*context_, viewport);
-
-      {
-        OrthancStone::WebGLViewportsRegistry::Accessor accessor(
-          OrthancStone::GetWebGLViewportsRegistry(), canvasId);
-
-        if (accessor.IsValid())
-        {
-          accessor.GetViewport().Invalidate();
-        }
-      }
-    }
-    EXTERN_CATCH_EXCEPTIONS;
-  }
-
-  
-  EMSCRIPTEN_KEEPALIVE
-  void LoadFromOrthanc(const char* instance,
-                       int frame)
-  {
-    try
-    {
-      if (application_.get() != NULL)
-      {
-        OrthancStone::DicomSource source;
-        application_->LoadOrthancFrame(source, instance, frame);
-      }
-    }
-    EXTERN_CATCH_EXCEPTIONS;
-  }
-
-  
-  EMSCRIPTEN_KEEPALIVE
-  void LoadFromDicomWeb(const char* server,
-                        const char* studyInstanceUid,
-                        const char* seriesInstanceUid,
-                        const char* sopInstanceUid,
-                        int frame)
-  {
-    try
-    {
-      if (application_.get() != NULL)
-      {
-        OrthancStone::DicomSource source;
-        source.SetDicomWebThroughOrthancSource(server);
-        application_->LoadDicomWebFrame(source, studyInstanceUid, seriesInstanceUid,
-                                        sopInstanceUid, frame);
-      }
-    }
-    EXTERN_CATCH_EXCEPTIONS;
-  }
-}
--- a/Samples/WebAssembly/SingleFrameViewer/SingleFrameViewerApp.js	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-
-// This object wraps the functions exposed by the wasm module
-
-const WasmModuleWrapper = function() {
-  this._InitializeViewport = undefined;
-  this._LoadFromOrthanc = undefined;
-};
-
-WasmModuleWrapper.prototype.Setup = function(Module) {
-  this._InitializeViewport = Module.cwrap('InitializeViewport', null, [ 'string' ]);
-  this._LoadFromOrthanc = Module.cwrap('LoadFromOrthanc', null, [ 'string', 'int' ]);
-};
-
-WasmModuleWrapper.prototype.InitializeViewport = function(canvasId) {
-  this._InitializeViewport(canvasId);
-};
-
-WasmModuleWrapper.prototype.LoadFromOrthanc = function(instance, frame) {
-  this._LoadFromOrthanc(instance, frame);
-};
-
-var wasmModuleWrapper = new WasmModuleWrapper();
-
-$(document).ready(function() {
-
-  window.addEventListener('WasmModuleInitialized', function() {
-    wasmModuleWrapper.Setup(Module);
-    console.warn('Native C++ module initialized');
-
-    wasmModuleWrapper.InitializeViewport('viewport');
-  });
-
-  window.addEventListener('StoneException', function() {
-    alert('Exception caught in C++ code');
-  });    
-
-  var scriptSource;
-
-  if ('WebAssembly' in window) {
-    console.warn('Loading WebAssembly');
-    scriptSource = 'SingleFrameViewerWasm.js';
-  } else {
-    console.error('Your browser does not support WebAssembly!');
-  }
-
-  // Option 1: Loading script using plain HTML
-  
-  /*
-    var script = document.createElement('script');
-    script.src = scriptSource;
-    script.type = 'text/javascript';
-    document.body.appendChild(script);
-  */
-
-  // Option 2: Loading script using AJAX (gives the opportunity to
-  // report explicit errors)
-  
-  axios.get(scriptSource)
-    .then(function (response) {
-      var script = document.createElement('script');
-      script.innerHTML = response.data;
-      script.type = 'text/javascript';
-      document.body.appendChild(script);
-    })
-    .catch(function (error) {
-      alert('Cannot load the WebAssembly framework');
-    });
-});
-
-
-$('#orthancLoad').click(function() {
-  wasmModuleWrapper.LoadFromOrthanc($('#orthancInstance').val(),
-                    $('#orthancFrame').val());
-});
--- a/Samples/WebAssembly/SingleFrameViewer/SingleFrameViewerApplication.h	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,502 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#pragma once
-
-#include "../../../Framework/Loaders/DicomResourcesLoader.h"
-#include "../../../Framework/Loaders/ILoadersContext.h"
-#include "../../../Framework/Loaders/SeriesFramesLoader.h"
-#include "../../../Framework/Loaders/SeriesThumbnailsLoader.h"
-#include "../../../Framework/Viewport/IViewport.h"
-
-#include <Compatibility.h>  // For std::unique_ptr<>
-
-#include <boost/make_shared.hpp>
-
-
-namespace OrthancStone
-{
-  class Application : public ObserverBase<Application>
-  {
-  private:
-    ILoadersContext&                         context_;
-    boost::shared_ptr<IViewport>             viewport_;
-    boost::shared_ptr<DicomResourcesLoader>  dicomLoader_;
-    boost::shared_ptr<SeriesFramesLoader>    framesLoader_;
-
-    Application(ILoadersContext& context,
-                boost::shared_ptr<IViewport> viewport) : 
-      context_(context),
-      viewport_(viewport)
-    {
-    }
-
-    void Handle(const SeriesFramesLoader::FrameLoadedMessage& message)
-    {
-      LOG(INFO) << "Frame decoded! "
-                << message.GetImage().GetWidth() << "x" << message.GetImage().GetHeight()
-                << " " << Orthanc::EnumerationToString(message.GetImage().GetFormat());
-
-      std::unique_ptr<TextureBaseSceneLayer> layer(
-        message.GetInstanceParameters().CreateTexture(message.GetImage()));
-      layer->SetLinearInterpolation(true);
-
-      {
-        std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-        lock->GetController().GetScene().SetLayer(0, layer.release());
-        lock->GetCompositor().FitContent(lock->GetController().GetScene());
-        lock->Invalidate();
-      }
-    }
-
-    void Handle(const DicomResourcesLoader::SuccessMessage& message)
-    {
-      if (message.GetResources()->GetSize() != 1)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-   
-      //message.GetResources()->GetResource(0).Print(stdout);
-
-      {
-        std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-        SeriesFramesLoader::Factory f(*message.GetResources());
-
-        framesLoader_ = boost::dynamic_pointer_cast<SeriesFramesLoader>(f.Create(*lock));
-        Register<SeriesFramesLoader::FrameLoadedMessage>(*framesLoader_, &Application::Handle);
-
-        assert(message.HasUserPayload());
-        const Orthanc::SingleValueObject<unsigned int>& payload =
-          dynamic_cast<const Orthanc::SingleValueObject<unsigned int>&>(message.GetUserPayload());
-
-        LOG(INFO) << "Loading pixel data of frame: " << payload.GetValue();
-        framesLoader_->ScheduleLoadFrame(
-          0, message.GetDicomSource(), payload.GetValue(),
-          message.GetDicomSource().GetQualityCount() - 1 /* download best quality available */,
-          NULL);
-      }
-    }
-
-  public:
-    static boost::shared_ptr<Application> Create(ILoadersContext& context,
-                                                 boost::shared_ptr<IViewport> viewport)
-    {
-      boost::shared_ptr<Application> application(new Application(context, viewport));
-
-      {
-        std::unique_ptr<ILoadersContext::ILock> lock(context.Lock());
-        application->dicomLoader_ = DicomResourcesLoader::Create(*lock);
-      }
-
-      application->Register<DicomResourcesLoader::SuccessMessage>(*application->dicomLoader_, &Application::Handle);
-
-      return application;
-    }
-
-    void LoadOrthancFrame(const DicomSource& source,
-                          const std::string& instanceId,
-                          unsigned int frame)
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-
-      dicomLoader_->ScheduleLoadOrthancResource(
-        boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID), 
-        0, source, Orthanc::ResourceType_Instance, instanceId,
-        new Orthanc::SingleValueObject<unsigned int>(frame));
-    }
-
-    void LoadDicomWebFrame(const DicomSource& source,
-                           const std::string& studyInstanceUid,
-                           const std::string& seriesInstanceUid,
-                           const std::string& sopInstanceUid,
-                           unsigned int frame)
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-
-      // We first must load the "/metadata" to know the number of frames
-      dicomLoader_->ScheduleGetDicomWeb(
-        boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID), 0, source,
-        "/studies/" + studyInstanceUid + "/series/" + seriesInstanceUid + "/instances/" + sopInstanceUid + "/metadata",
-        new Orthanc::SingleValueObject<unsigned int>(frame));
-    }
-
-    void FitContent()
-    {
-      std::unique_ptr<IViewport::ILock> lock(viewport_->Lock());
-      lock->GetCompositor().FitContent(lock->GetController().GetScene());
-      lock->Invalidate();
-    }
-  };
-
-
-
-  class IWebViewerLoadersObserver : public boost::noncopyable
-  {
-  public:
-    virtual ~IWebViewerLoadersObserver()
-    {
-    }
-
-    virtual void SignalSeriesUpdated(LoadedDicomResources& series) = 0;
-
-    virtual void SignalThumbnailLoaded(const std::string& studyInstanceUid,
-                                       const std::string& seriesInstanceUid,
-                                       SeriesThumbnailType type) = 0;
-  };
-  
-
-  class WebViewerLoaders : public ObserverBase<WebViewerLoaders>
-  {
-  private:
-    static const int PRIORITY_ADD_RESOURCES = 0;
-    static const int PRIORITY_THUMBNAILS = OracleScheduler::PRIORITY_LOW + 100;
-
-    enum Type
-    {
-      Type_Orthanc = 1,
-      Type_DicomWeb = 2
-    };
-
-    ILoadersContext&                           context_;
-    std::unique_ptr<IWebViewerLoadersObserver>   observer_;
-    bool                                       loadThumbnails_;
-    DicomSource                                source_;
-    std::set<std::string>                      scheduledSeries_;
-    std::set<std::string>                      scheduledThumbnails_;
-    std::set<std::string>                      scheduledStudies_;
-    boost::shared_ptr<LoadedDicomResources>    loadedSeries_;
-    boost::shared_ptr<LoadedDicomResources>    loadedStudies_;
-    boost::shared_ptr<DicomResourcesLoader>    resourcesLoader_;
-    boost::shared_ptr<SeriesThumbnailsLoader>  thumbnailsLoader_;
-
-    WebViewerLoaders(ILoadersContext& context,
-                     IWebViewerLoadersObserver* observer) :
-      context_(context),
-      observer_(observer),
-      loadThumbnails_(false)
-    {
-      loadedSeries_ = boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID);
-      loadedStudies_ = boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID);
-    }
-
-    static Orthanc::IDynamicObject* CreatePayload(Type type)
-    {
-      return new Orthanc::SingleValueObject<Type>(type);
-    }
-    
-    void HandleThumbnail(const SeriesThumbnailsLoader::SuccessMessage& message)
-    {
-      if (observer_.get() != NULL)
-      {
-        observer_->SignalThumbnailLoaded(message.GetStudyInstanceUid(),
-                                         message.GetSeriesInstanceUid(),
-                                         message.GetType());
-      }
-    }
-    
-    void HandleLoadedResources(const DicomResourcesLoader::SuccessMessage& message)
-    {
-      LoadedDicomResources series(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID);
-
-      switch (dynamic_cast<const Orthanc::SingleValueObject<Type>&>(message.GetUserPayload()).GetValue())
-      {
-        case Type_DicomWeb:
-        {          
-          for (size_t i = 0; i < loadedSeries_->GetSize(); i++)
-          {
-            std::string study;
-            if (loadedSeries_->GetResource(i).LookupStringValue(
-                  study, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) &&
-                loadedStudies_->HasResource(study))
-            {
-              Orthanc::DicomMap m;
-              m.Assign(loadedSeries_->GetResource(i));
-              loadedStudies_->MergeResource(m, study);
-              series.AddResource(m);
-            }
-          }
-
-          break;
-        }
-
-        case Type_Orthanc:
-        {          
-          for (size_t i = 0; i < message.GetResources()->GetSize(); i++)
-          {
-            series.AddResource(message.GetResources()->GetResource(i));
-          }
-
-          break;
-        }
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-
-      if (loadThumbnails_ &&
-          (!source_.IsDicomWeb() ||
-           source_.HasDicomWebRendered()))
-      {
-        for (size_t i = 0; i < series.GetSize(); i++)
-        {
-          std::string patientId, studyInstanceUid, seriesInstanceUid;
-          if (series.GetResource(i).LookupStringValue(patientId, Orthanc::DICOM_TAG_PATIENT_ID, false) &&
-              series.GetResource(i).LookupStringValue(studyInstanceUid, Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, false) &&
-              series.GetResource(i).LookupStringValue(seriesInstanceUid, Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, false) &&
-              scheduledThumbnails_.find(seriesInstanceUid) == scheduledThumbnails_.end())
-          {
-            scheduledThumbnails_.insert(seriesInstanceUid);
-            thumbnailsLoader_->ScheduleLoadThumbnail(source_, patientId, studyInstanceUid, seriesInstanceUid);
-          }
-        }
-      }
-
-      if (observer_.get() != NULL &&
-          series.GetSize() > 0)
-      {
-        observer_->SignalSeriesUpdated(series);
-      }
-    }
-
-    void HandleOrthancRestApi(const OrthancRestApiCommand::SuccessMessage& message)
-    {
-      Json::Value body;
-      message.ParseJsonBody(body);
-
-      if (body.type() != Json::arrayValue)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-      }
-      else
-      {
-        for (Json::Value::ArrayIndex i = 0; i < body.size(); i++)
-        {
-          if (body[i].type() == Json::stringValue)
-          {
-            AddOrthancSeries(body[i].asString());
-          }
-          else
-          {
-            throw Orthanc::OrthancException(Orthanc::ErrorCode_NetworkProtocol);
-          }
-        }
-      }
-    }
-
-  public:
-    static boost::shared_ptr<WebViewerLoaders> Create(ILoadersContext& context,
-                                                      const DicomSource& source,
-                                                      bool loadThumbnails,
-                                                      IWebViewerLoadersObserver* observer)
-    {
-      boost::shared_ptr<WebViewerLoaders> application(new WebViewerLoaders(context, observer));
-      application->source_ = source;
-      application->loadThumbnails_ = loadThumbnails;
-
-      {
-        std::unique_ptr<ILoadersContext::ILock> lock(context.Lock());
-
-        application->resourcesLoader_ = DicomResourcesLoader::Create(*lock);
-
-        {
-          SeriesThumbnailsLoader::Factory f;
-          f.SetPriority(PRIORITY_THUMBNAILS);
-          application->thumbnailsLoader_ = boost::dynamic_pointer_cast<SeriesThumbnailsLoader>(f.Create(*lock));
-        }
-
-        application->Register<OrthancRestApiCommand::SuccessMessage>(
-          lock->GetOracleObservable(), &WebViewerLoaders::HandleOrthancRestApi);
-
-        application->Register<DicomResourcesLoader::SuccessMessage>(
-          *application->resourcesLoader_, &WebViewerLoaders::HandleLoadedResources);
-
-        application->Register<SeriesThumbnailsLoader::SuccessMessage>(
-          *application->thumbnailsLoader_, &WebViewerLoaders::HandleThumbnail);
-
-        lock->AddLoader(application);
-      }
-
-      return application;
-    }
-    
-    void AddDicomAllSeries()
-    {
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());
-
-      if (source_.IsDicomWeb())
-      {
-        resourcesLoader_->ScheduleGetDicomWeb(loadedSeries_, PRIORITY_ADD_RESOURCES, source_,
-                                              "/series", CreatePayload(Type_DicomWeb));
-        resourcesLoader_->ScheduleGetDicomWeb(loadedStudies_, PRIORITY_ADD_RESOURCES, source_,
-                                              "/studies", CreatePayload(Type_DicomWeb));
-      }
-      else if (source_.IsOrthanc())
-      {
-        std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
-        command->SetMethod(Orthanc::HttpMethod_Get);
-        command->SetUri("/series");
-        lock->Schedule(GetSharedObserver(), PRIORITY_ADD_RESOURCES, command.release());
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-      }
-    }
-    
-    void AddDicomStudy(const std::string& studyInstanceUid)
-    {
-      // Avoid adding twice the same study
-      if (scheduledStudies_.find(studyInstanceUid) == scheduledStudies_.end())
-      {
-        scheduledStudies_.insert(studyInstanceUid);
-
-        if (source_.IsDicomWeb())
-        {
-          Orthanc::DicomMap filter;
-          filter.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, studyInstanceUid, false);
-          
-          std::set<Orthanc::DicomTag> tags;
-          
-          {
-            std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
-            
-            resourcesLoader_->ScheduleQido(loadedStudies_, PRIORITY_ADD_RESOURCES, source_,
-                                           Orthanc::ResourceType_Study, filter, tags, CreatePayload(Type_DicomWeb));
-            
-            resourcesLoader_->ScheduleQido(loadedSeries_, PRIORITY_ADD_RESOURCES, source_,
-                                           Orthanc::ResourceType_Series, filter, tags, CreatePayload(Type_DicomWeb));
-          }
-        }
-        else if (source_.IsOrthanc())
-        {
-          std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
-          command->SetMethod(Orthanc::HttpMethod_Post);
-          command->SetUri("/tools/find");
-
-          Json::Value body;
-          body["Level"] = "Series";
-          body["Query"] = Json::objectValue;
-          body["Query"]["StudyInstanceUID"] = studyInstanceUid;
-          command->SetBody(body);
-
-          {
-            std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
-            lock->Schedule(GetSharedObserver(), PRIORITY_ADD_RESOURCES, command.release());
-          }
-        }
-        else
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }        
-      }
-    }
-    
-    void AddDicomSeries(const std::string& studyInstanceUid,
-                        const std::string& seriesInstanceUid)
-    {
-      std::set<Orthanc::DicomTag> tags;
-
-      std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
-
-      if (scheduledStudies_.find(studyInstanceUid) == scheduledStudies_.end())
-      {
-        scheduledStudies_.insert(studyInstanceUid);
-          
-        if (source_.IsDicomWeb())
-        {
-          Orthanc::DicomMap filter;
-          filter.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, studyInstanceUid, false);
-          
-          resourcesLoader_->ScheduleQido(loadedStudies_, PRIORITY_ADD_RESOURCES, source_,
-                                         Orthanc::ResourceType_Study, filter, tags, CreatePayload(Type_DicomWeb));
-        }
-      }
-
-      if (scheduledSeries_.find(seriesInstanceUid) == scheduledSeries_.end())
-      {
-        scheduledSeries_.insert(seriesInstanceUid);
-
-        if (source_.IsDicomWeb())
-        {
-          Orthanc::DicomMap filter;
-          filter.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, studyInstanceUid, false);
-          filter.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, seriesInstanceUid, false);
-          
-          resourcesLoader_->ScheduleQido(loadedSeries_, PRIORITY_ADD_RESOURCES, source_,
-                                         Orthanc::ResourceType_Series, filter, tags, CreatePayload(Type_DicomWeb));
-        }
-        else if (source_.IsOrthanc())
-        {
-          std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
-          command->SetMethod(Orthanc::HttpMethod_Post);
-          command->SetUri("/tools/find");
-
-          Json::Value body;
-          body["Level"] = "Series";
-          body["Query"] = Json::objectValue;
-          body["Query"]["StudyInstanceUID"] = studyInstanceUid;
-          body["Query"]["SeriesInstanceUID"] = seriesInstanceUid;
-          command->SetBody(body);
-
-          lock->Schedule(GetSharedObserver(), PRIORITY_ADD_RESOURCES, command.release());
-        }
-        else
-        {
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
-        }
-      }
-    }
-
-    void AddOrthancStudy(const std::string& orthancId)
-    {
-      if (source_.IsOrthanc())
-      {
-        std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
-        resourcesLoader_->ScheduleLoadOrthancResources(
-          loadedSeries_, PRIORITY_ADD_RESOURCES, source_,
-          Orthanc::ResourceType_Study, orthancId, Orthanc::ResourceType_Series,
-          CreatePayload(Type_Orthanc));
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType,
-                                        "Only applicable to Orthanc DICOM sources");
-      }
-    }
-
-    void AddOrthancSeries(const std::string& orthancId)
-    {
-      if (source_.IsOrthanc())
-      {
-        std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock());      
-        resourcesLoader_->ScheduleLoadOrthancResource(
-          loadedSeries_, PRIORITY_ADD_RESOURCES,
-          source_, Orthanc::ResourceType_Series, orthancId,
-          CreatePayload(Type_Orthanc));
-      }
-      else
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType,
-                                        "Only applicable to Orthanc DICOM sources");
-      }
-    }
-  };
-}
--- a/Samples/WebAssembly/SingleFrameViewer/index.html	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<!doctype html>
-<html lang="en">
-  <head>
-    <title>Stone of Orthanc Single Frame Viewer </title>
-    <meta charset="utf-8" />
-    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
-    <meta name="apple-mobile-web-app-capable" content="yes" />
-    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
-    <link rel="icon" href="data:;base64,iVBORw0KGgo=">
-
-    <style>
-      canvas {
-      background-color: green;
-      width : 100%;
-      height : 512px;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Viewport</h1>
-
-    <canvas id="viewport" >
-    </canvas>
-
-    <h1>Load from Orthanc</h1>
-    <p>
-      Orthanc instance: <input type="text" id="orthancInstance" size="80"
-                               value="5eb2dd5f-3fca21a8-fa7565fd-63e112ae-344830a4">
-    </p>
-    <p>
-      Frame number: <input type="text" id="orthancFrame" value="0">
-    </p>
-    <p>
-      <button id="orthancLoad">Load</button>
-    </p>
-
-    <script src="https://code.jquery.com/jquery-3.4.1.js"></script>
-    <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.0/axios.js"></script>
-    
-    <script src="SingleFrameViewerApp.js"></script>
-  </body>
-</html>
--- a/Samples/WebAssembly/docker-build.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#!/bin/bash
-
-set -ex
-
-IMAGE=jodogne/wasm-builder:1.39.17-upstream
-
-if [ "$1" != "Debug" -a "$1" != "Release" ]; then
-    echo "Please provide build type: Debug or Release"
-    exit -1
-fi
-
-if [ -t 1 ]; then
-    # TTY is available => use interactive mode
-    DOCKER_FLAGS='-i'
-fi
-
-ROOT_DIR=`dirname $(readlink -f $0)`/../..
-
-mkdir -p ${ROOT_DIR}/wasm-binaries
-
-docker run -t ${DOCKER_FLAGS} --rm \
-    --user $(id -u):$(id -g) \
-    -v ${ROOT_DIR}:/source:ro \
-    -v ${ROOT_DIR}/wasm-binaries:/target:rw ${IMAGE} \
-    bash /source/Samples/WebAssembly/docker-internal.sh $1
-
-ls -lR ${ROOT_DIR}/wasm-binaries/
--- a/Samples/WebAssembly/docker-internal.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#!/bin/bash
-set -ex
-
-source /opt/emsdk/emsdk_env.sh
-
-# Use a folder that is writeable by non-root users for the Emscripten cache
-export EM_CACHE=/tmp/emscripten-cache
-
-# Get the Orthanc framework
-cd /tmp/
-hg clone https://hg.orthanc-server.com/orthanc/
-
-# Make a copy of the read-only folder containing the source code into
-# a writeable folder, because of "DownloadPackage.cmake" that writes
-# to the "ThirdPartyDownloads" folder next to the "CMakeLists.txt"
-cd /source
-hg clone /source /tmp/source-writeable
-
-mkdir /tmp/build
-cd /tmp/build
-
-cmake /tmp/source-writeable/Samples/WebAssembly \
-      -DCMAKE_BUILD_TYPE=$1 \
-      -DCMAKE_INSTALL_PREFIX=/target \
-      -DCMAKE_TOOLCHAIN_FILE=${EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
-      -DORTHANC_FRAMEWORK_ROOT=/tmp/orthanc/OrthancFramework \
-      -DSTATIC_BUILD=ON \
-      -G Ninja
-
-ninja -j2 install
--- a/Samples/build-wasm-samples.sh	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-#!/bin/bash
-#
-# usage:
-# to build the samples in RelWithDebInfo:
-# ./build-wasm-samples.sh
-#
-# to build the samples in Release:
-# ./build-wasm-samples.sh Release
-
-set -e
-
-if [ ! -d "WebAssembly" ]; then
-  echo "This script must be run from the Samples folder one level below orthanc-stone"
-  exit 1
-fi
-
-
-currentDir=$(pwd)
-samplesRootDir=$(pwd)
-devrootDir=$(pwd)/../../
-
-buildType=${1:-RelWithDebInfo}
-buildFolderName="$devrootDir/out/build-stone-wasm-samples-$buildType"
-installFolderName="$devrootDir/out/install-stone-wasm-samples-$buildType"
-
-mkdir -p $buildFolderName
-# change current folder to the build folder
-pushd $buildFolderName
-
-# configure the environment to use Emscripten
-source ~/apps/emsdk/emsdk_env.sh
-
-emcmake cmake -G "Ninja" \
-  -DCMAKE_BUILD_TYPE=$buildType \
-  -DCMAKE_INSTALL_PREFIX=$installFolderName \
-  -DSTATIC_BUILD=ON -DALLOW_DOWNLOADS=ON \
-  $samplesRootDir/WebAssembly
-
-# perform build + installation
-ninja
-ninja install
-
-# restore the original working folder
-popd
-
-echo "If all went well, the output files can be found in $installFolderName:"
-
-ls $installFolderName
\ No newline at end of file
--- a/StoneWebViewer/Plugin/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ b/StoneWebViewer/Plugin/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -32,7 +32,7 @@
 
 
 # Download and setup the Orthanc framework
-include(${CMAKE_SOURCE_DIR}/../../Resources/Orthanc/CMake/DownloadOrthancFramework.cmake)
+include(${CMAKE_SOURCE_DIR}/../../OrthancStone/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake)
 
 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
   link_libraries(${ORTHANC_FRAMEWORK_LIBRARIES})
--- a/StoneWebViewer/WebAssembly/CMakeLists.txt	Tue Jul 07 10:02:59 2020 +0200
+++ b/StoneWebViewer/WebAssembly/CMakeLists.txt	Tue Jul 07 16:21:02 2020 +0200
@@ -5,8 +5,6 @@
 # Configuration of the Emscripten compiler for WebAssembly target
 # ---------------------------------------------------------------
 set(USE_WASM ON CACHE BOOL "")
-set(ORTHANC_FRAMEWORK_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../orthanc/OrthancFramework CACHE PATH "")
-set(STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../)
 
 set(EMSCRIPTEN_SET_LLVM_WASM_BACKEND ON CACHE BOOL "")
 
@@ -30,11 +28,8 @@
 # Stone of Orthanc configuration
 # ---------------------------------------------------------------
 set(ALLOW_DOWNLOADS ON)
-set(ORTHANC_FRAMEWORK_SOURCE "path")
 
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneParameters.cmake)
-include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/AutoGeneratedCode.cmake)
-include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/DownloadPackage.cmake)
+include(${CMAKE_SOURCE_DIR}/../../OrthancStone/Resources/CMake/OrthancStoneParameters.cmake)
 
 SET(ENABLE_DCMTK ON)
 SET(ENABLE_DCMTK_NETWORKING OFF)
@@ -46,7 +41,7 @@
 
 # this will set up the build system for Stone of Orthanc and will
 # populate the ORTHANC_STONE_SOURCES CMake variable
-include(${STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
+include(${ORTHANC_STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
 
 
 ################################################################################
--- a/StoneWebViewer/WebAssembly/Test.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ b/StoneWebViewer/WebAssembly/Test.cpp	Tue Jul 07 16:21:02 2020 +0200
@@ -61,20 +61,20 @@
 #include <Images/JpegReader.h>
 #include <Logging.h>
 
-#include "../../Framework/Loaders/DicomResourcesLoader.h"
-#include "../../Framework/Loaders/SeriesMetadataLoader.h"
-#include "../../Framework/Loaders/SeriesThumbnailsLoader.h"
-#include "../../Framework/Loaders/WebAssemblyLoadersContext.h"
-#include "../../Framework/Messages/ObserverBase.h"
-#include "../../Framework/Oracle/ParseDicomFromWadoCommand.h"
-#include "../../Framework/Scene2D/ColorTextureSceneLayer.h"
-#include "../../Framework/Scene2D/FloatTextureSceneLayer.h"
-#include "../../Framework/Scene2D/PolylineSceneLayer.h"
-#include "../../Framework/StoneException.h"
-#include "../../Framework/Toolbox/DicomInstanceParameters.h"
-#include "../../Framework/Toolbox/GeometryToolbox.h"
-#include "../../Framework/Toolbox/SortedFrames.h"
-#include "../../Framework/Viewport/WebGLViewport.h"
+#include "../../OrthancStone/Sources/Loaders/DicomResourcesLoader.h"
+#include "../../OrthancStone/Sources/Loaders/SeriesMetadataLoader.h"
+#include "../../OrthancStone/Sources/Loaders/SeriesThumbnailsLoader.h"
+#include "../../OrthancStone/Sources/Loaders/WebAssemblyLoadersContext.h"
+#include "../../OrthancStone/Sources/Messages/ObserverBase.h"
+#include "../../OrthancStone/Sources/Oracle/ParseDicomFromWadoCommand.h"
+#include "../../OrthancStone/Sources/Scene2D/ColorTextureSceneLayer.h"
+#include "../../OrthancStone/Sources/Scene2D/FloatTextureSceneLayer.h"
+#include "../../OrthancStone/Sources/Scene2D/PolylineSceneLayer.h"
+#include "../../OrthancStone/Sources/StoneException.h"
+#include "../../OrthancStone/Sources/Toolbox/DicomInstanceParameters.h"
+#include "../../OrthancStone/Sources/Toolbox/GeometryToolbox.h"
+#include "../../OrthancStone/Sources/Toolbox/SortedFrames.h"
+#include "../../OrthancStone/Sources/Viewport/WebGLViewport.h"
 
 #include <boost/make_shared.hpp>
 #include <stdio.h>
--- a/UnitTestsSources/72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45721 +0,0 @@
-{
-   "0008,0005" : {
-      "Name" : "SpecificCharacterSet",
-      "Type" : "String",
-      "Value" : "ISO_IR 100"
-   },
-   "0008,0012" : {
-      "Name" : "InstanceCreationDate",
-      "Type" : "String",
-      "Value" : "20180624"
-   },
-   "0008,0013" : {
-      "Name" : "InstanceCreationTime",
-      "Type" : "String",
-      "Value" : "134156"
-   },
-   "0008,0016" : {
-      "Name" : "SOPClassUID",
-      "Type" : "String",
-      "Value" : "1.2.840.10008.5.1.4.1.1.481.3"
-   },
-   "0008,0018" : {
-      "Name" : "SOPInstanceUID",
-      "Type" : "String",
-      "Value" : "1.2.752.243.1.1.20180802070448020.2000.14574"
-   },
-   "0008,0020" : {
-      "Name" : "StudyDate",
-      "Type" : "String",
-      "Value" : "20180624"
-   },
-   "0008,0021" : {
-      "Name" : "SeriesDate",
-      "Type" : "String",
-      "Value" : "20180624"
-   },
-   "0008,0030" : {
-      "Name" : "StudyTime",
-      "Type" : "String",
-      "Value" : "120802"
-   },
-   "0008,0031" : {
-      "Name" : "SeriesTime",
-      "Type" : "String",
-      "Value" : "134156"
-   },
-   "0008,0050" : {
-      "Name" : "AccessionNumber",
-      "Type" : "String",
-      "Value" : ""
-   },
-   "0008,0060" : {
-      "Name" : "Modality",
-      "Type" : "String",
-      "Value" : "RTSTRUCT"
-   },
-   "0008,0070" : {
-      "Name" : "Manufacturer",
-      "Type" : "String",
-      "Value" : "RaySearch Laboratories"
-   },
-   "0008,0090" : {
-      "Name" : "ReferringPhysicianName",
-      "Type" : "String",
-      "Value" : ""
-   },
-   "0008,1030" : {
-      "Name" : "StudyDescription",
-      "Type" : "String",
-      "Value" : "RT^PCPT_120_KVP (Adult)"
-   },
-   "0008,103e" : {
-      "Name" : "SeriesDescription",
-      "Type" : "String",
-      "Value" : "RS: Approved Structure Set"
-   },
-   "0008,1070" : {
-      "Name" : "OperatorsName",
-      "Type" : "String",
-      "Value" : ""
-   },
-   "0008,1090" : {
-      "Name" : "ManufacturerModelName",
-      "Type" : "String",
-      "Value" : "RayStation"
-   },
-   "0010,0010" : {
-      "Name" : "PatientName",
-      "Type" : "String",
-      "Value" : "Provision^Phantom^QA"
-   },
-   "0010,0020" : {
-      "Name" : "PatientID",
-      "Type" : "String",
-      "Value" : "04041982"
-   },
-   "0010,0030" : {
-      "Name" : "PatientBirthDate",
-      "Type" : "String",
-      "Value" : "19820404"
-   },
-   "0010,0040" : {
-      "Name" : "PatientSex",
-      "Type" : "String",
-      "Value" : "O"
-   },
-   "0018,1020" : {
-      "Name" : "SoftwareVersions",
-      "Type" : "String",
-      "Value" : "8.0.1.6 (Dicom Export)"
-   },
-   "0020,000d" : {
-      "Name" : "StudyInstanceUID",
-      "Type" : "String",
-      "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412504788800000016"
-   },
-   "0020,000e" : {
-      "Name" : "SeriesInstanceUID",
-      "Type" : "String",
-      "Value" : "1.2.752.243.1.1.20180802070448020.2000.14574.1"
-   },
-   "0020,0010" : {
-      "Name" : "StudyID",
-      "Type" : "String",
-      "Value" : "1"
-   },
-   "0020,0011" : {
-      "Name" : "SeriesNumber",
-      "Type" : "String",
-      "Value" : "1"
-   },
-   "0020,0013" : {
-      "Name" : "InstanceNumber",
-      "Type" : "String",
-      "Value" : "1"
-   },
-   "0020,0052" : {
-      "Name" : "FrameOfReferenceUID",
-      "Type" : "String",
-      "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-   },
-   "0020,1040" : {
-      "Name" : "PositionReferenceIndicator",
-      "Type" : "String",
-      "Value" : ""
-   },
-   "3006,0002" : {
-      "Name" : "StructureSetLabel",
-      "Type" : "String",
-      "Value" : "RS: Approved"
-   },
-   "3006,0008" : {
-      "Name" : "StructureSetDate",
-      "Type" : "String",
-      "Value" : "20180624"
-   },
-   "3006,0009" : {
-      "Name" : "StructureSetTime",
-      "Type" : "String",
-      "Value" : "134156"
-   },
-   "3006,0010" : {
-      "Name" : "ReferencedFrameOfReferenceSequence",
-      "Type" : "Sequence",
-      "Value" : [
-         {
-            "0020,0052" : {
-               "Name" : "FrameOfReferenceUID",
-               "Type" : "String",
-               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-            },
-            "3006,0012" : {
-               "Name" : "RTReferencedStudySequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "0008,1150" : {
-                        "Name" : "ReferencedSOPClassUID",
-                        "Type" : "String",
-                        "Value" : "1.2.840.10008.3.1.2.3.1"
-                     },
-                     "0008,1155" : {
-                        "Name" : "ReferencedSOPInstanceUID",
-                        "Type" : "String",
-                        "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412504788800000016"
-                     },
-                     "3006,0014" : {
-                        "Name" : "RTReferencedSeriesSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0020,000e" : {
-                                 "Name" : "SeriesInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002193"
-                              },
-                              "3006,0016" : {
-                                 "Name" : "ContourImageSequence",
-                                 "Type" : "Sequence",
-                                 "Value" : [
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002194"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002195"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002196"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002197"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002198"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002199"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002200"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002201"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002202"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002203"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002204"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002205"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002206"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002207"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002208"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002209"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002210"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002211"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002212"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002213"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002214"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002215"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002216"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002217"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002218"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002219"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002220"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002221"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002222"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002223"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002224"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002225"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002226"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002227"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002228"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002229"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002230"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002231"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002232"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002233"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002234"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002235"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002236"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002237"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002238"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002239"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002240"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002241"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002242"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002243"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002244"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002245"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002246"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002247"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002248"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002249"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002250"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002251"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002252"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002253"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002254"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002255"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002256"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002257"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002258"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002259"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002260"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002261"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002262"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002264"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002265"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002266"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002346"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002347"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002348"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002349"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002350"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002351"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002352"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002357"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002358"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002359"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002366"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002367"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002368"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002369"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002370"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002371"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002372"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002373"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002374"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002375"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002376"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002377"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002378"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002379"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002380"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002381"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002382"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002383"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002384"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002385"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002387"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002388"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002389"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002390"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002391"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002392"
-                                       }
-                                    },
-                                    {
-                                       "0008,1150" : {
-                                          "Name" : "ReferencedSOPClassUID",
-                                          "Type" : "String",
-                                          "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                                       },
-                                       "0008,1155" : {
-                                          "Name" : "ReferencedSOPInstanceUID",
-                                          "Type" : "String",
-                                          "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002393"
-                                       }
-                                    }
-                                 ]
-                              }
-                           }
-                        ]
-                     }
-                  }
-               ]
-            }
-         }
-      ]
-   },
-   "3006,0020" : {
-      "Name" : "StructureSetROISequence",
-      "Type" : "Sequence",
-      "Value" : [
-         {
-            "3006,0022" : {
-               "Name" : "ROINumber",
-               "Type" : "String",
-               "Value" : "1"
-            },
-            "3006,0024" : {
-               "Name" : "ReferencedFrameOfReferenceUID",
-               "Type" : "String",
-               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-            },
-            "3006,0026" : {
-               "Name" : "ROIName",
-               "Type" : "String",
-               "Value" : "External"
-            },
-            "3006,0036" : {
-               "Name" : "ROIGenerationAlgorithm",
-               "Type" : "String",
-               "Value" : "SEMIAUTOMATIC"
-            }
-         },
-         {
-            "3006,0022" : {
-               "Name" : "ROINumber",
-               "Type" : "String",
-               "Value" : "2"
-            },
-            "3006,0024" : {
-               "Name" : "ReferencedFrameOfReferenceUID",
-               "Type" : "String",
-               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-            },
-            "3006,0026" : {
-               "Name" : "ROIName",
-               "Type" : "String",
-               "Value" : "CTV"
-            },
-            "3006,0036" : {
-               "Name" : "ROIGenerationAlgorithm",
-               "Type" : "String",
-               "Value" : "SEMIAUTOMATIC"
-            }
-         },
-         {
-            "3006,0022" : {
-               "Name" : "ROINumber",
-               "Type" : "String",
-               "Value" : "3"
-            },
-            "3006,0024" : {
-               "Name" : "ReferencedFrameOfReferenceUID",
-               "Type" : "String",
-               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-            },
-            "3006,0026" : {
-               "Name" : "ROIName",
-               "Type" : "String",
-               "Value" : "PTV"
-            },
-            "3006,0036" : {
-               "Name" : "ROIGenerationAlgorithm",
-               "Type" : "String",
-               "Value" : "SEMIAUTOMATIC"
-            }
-         },
-         {
-            "3006,0022" : {
-               "Name" : "ROINumber",
-               "Type" : "String",
-               "Value" : "4"
-            },
-            "3006,0024" : {
-               "Name" : "ReferencedFrameOfReferenceUID",
-               "Type" : "String",
-               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-            },
-            "3006,0026" : {
-               "Name" : "ROIName",
-               "Type" : "String",
-               "Value" : "PTV Eval"
-            },
-            "3006,0036" : {
-               "Name" : "ROIGenerationAlgorithm",
-               "Type" : "String",
-               "Value" : "SEMIAUTOMATIC"
-            }
-         },
-         {
-            "3006,0022" : {
-               "Name" : "ROINumber",
-               "Type" : "String",
-               "Value" : "5"
-            },
-            "3006,0024" : {
-               "Name" : "ReferencedFrameOfReferenceUID",
-               "Type" : "String",
-               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-            },
-            "3006,0026" : {
-               "Name" : "ROIName",
-               "Type" : "String",
-               "Value" : "Bladder"
-            },
-            "3006,0036" : {
-               "Name" : "ROIGenerationAlgorithm",
-               "Type" : "String",
-               "Value" : "SEMIAUTOMATIC"
-            }
-         },
-         {
-            "3006,0022" : {
-               "Name" : "ROINumber",
-               "Type" : "String",
-               "Value" : "6"
-            },
-            "3006,0024" : {
-               "Name" : "ReferencedFrameOfReferenceUID",
-               "Type" : "String",
-               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-            },
-            "3006,0026" : {
-               "Name" : "ROIName",
-               "Type" : "String",
-               "Value" : "Rectum"
-            },
-            "3006,0036" : {
-               "Name" : "ROIGenerationAlgorithm",
-               "Type" : "String",
-               "Value" : "SEMIAUTOMATIC"
-            }
-         },
-         {
-            "3006,0022" : {
-               "Name" : "ROINumber",
-               "Type" : "String",
-               "Value" : "7"
-            },
-            "3006,0024" : {
-               "Name" : "ReferencedFrameOfReferenceUID",
-               "Type" : "String",
-               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-            },
-            "3006,0026" : {
-               "Name" : "ROIName",
-               "Type" : "String",
-               "Value" : "Air Override"
-            },
-            "3006,0036" : {
-               "Name" : "ROIGenerationAlgorithm",
-               "Type" : "String",
-               "Value" : "SEMIAUTOMATIC"
-            }
-         },
-         {
-            "3006,0022" : {
-               "Name" : "ROINumber",
-               "Type" : "String",
-               "Value" : "8"
-            },
-            "3006,0024" : {
-               "Name" : "ReferencedFrameOfReferenceUID",
-               "Type" : "String",
-               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-            },
-            "3006,0026" : {
-               "Name" : "ROIName",
-               "Type" : "String",
-               "Value" : "CT Isocenter"
-            },
-            "3006,0036" : {
-               "Name" : "ROIGenerationAlgorithm",
-               "Type" : "String",
-               "Value" : "SEMIAUTOMATIC"
-            }
-         },
-         {
-            "3006,0022" : {
-               "Name" : "ROINumber",
-               "Type" : "String",
-               "Value" : "9"
-            },
-            "3006,0024" : {
-               "Name" : "ReferencedFrameOfReferenceUID",
-               "Type" : "String",
-               "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412505492400000036"
-            },
-            "3006,0026" : {
-               "Name" : "ROIName",
-               "Type" : "String",
-               "Value" : "Isocenter"
-            },
-            "3006,0036" : {
-               "Name" : "ROIGenerationAlgorithm",
-               "Type" : "String",
-               "Value" : "SEMIAUTOMATIC"
-            }
-         }
-      ]
-   },
-   "3006,0039" : {
-      "Name" : "ROIContourSequence",
-      "Type" : "Sequence",
-      "Value" : [
-         {
-            "3006,002a" : {
-               "Name" : "ROIDisplayColor",
-               "Type" : "String",
-               "Value" : "0\\128\\0"
-            },
-            "3006,0040" : {
-               "Name" : "ContourSequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002389"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "143"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "0"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-131.8359\\-272.7055\\-175\\-133.9264\\-270.5703\\-175\\-135.7422\\-268.5421\\-175\\-136.3525\\-266.6641\\-175\\-137.6953\\-265.4705\\-175\\-138.3168\\-264.7109\\-175\\-139.6484\\-263.4482\\-175\\-140.0744\\-262.7578\\-175\\-141.6016\\-259.7253\\-175\\-141.7969\\-258.8516\\-175\\-142.9287\\-256.8984\\-175\\-143.5547\\-256.1355\\-175\\-144.0694\\-254.9453\\-175\\-145.5078\\-253.7626\\-175\\-146.1325\\-252.9922\\-175\\-146.5718\\-251.0391\\-175\\-147.4609\\-249.871\\-175\\-148.7116\\-247.1328\\-175\\-149.2784\\-245.1797\\-175\\-149.954\\-243.2266\\-175\\-150.7428\\-241.2734\\-175\\-151.3672\\-240.705\\-175\\-152.203\\-239.3203\\-175\\-152.3438\\-237.3672\\-175\\-153.5667\\-235.4141\\-175\\-154.2728\\-231.5078\\-175\\-155.474\\-229.5547\\-175\\-155.6019\\-227.6016\\-175\\-156.6483\\-225.6484\\-175\\-156.9864\\-223.6953\\-175\\-157.1378\\-221.7422\\-175\\-158.2475\\-219.7891\\-175\\-158.3921\\-217.8359\\-175\\-159.6641\\-215.8828\\-175\\-160.0241\\-213.9297\\-175\\-160.1245\\-211.9766\\-175\\-160.1991\\-208.0703\\-175\\-160.4293\\-206.1172\\-175\\-161.4816\\-204.1641\\-175\\-161.4872\\-198.3047\\-175\\-160.4368\\-196.3516\\-175\\-160.2162\\-194.3984\\-175\\-160.1482\\-190.4922\\-175\\-160.0519\\-188.5391\\-175\\-159.6563\\-186.5859\\-175\\-158.4045\\-184.6328\\-175\\-158.1949\\-182.6797\\-175\\-157.0475\\-180.7266\\-175\\-156.6305\\-178.7734\\-175\\-155.7304\\-176.8203\\-175\\-154.1251\\-174.8672\\-175\\-153.5573\\-172.9141\\-175\\-151.3672\\-169.6098\\-175\\-149.4141\\-167.5505\\-175\\-146.9809\\-165.1016\\-175\\-146.1733\\-163.1484\\-175\\-145.5078\\-162.439\\-175\\-143.5547\\-160.7921\\-175\\-141.6016\\-159.9223\\-175\\-138.7921\\-157.2891\\-175\\-137.6953\\-156.5387\\-175\\-135.7422\\-155.4173\\-175\\-133.7891\\-153.8933\\-175\\-132.6069\\-153.3828\\-175\\-131.8359\\-153.2125\\-175\\-129.5856\\-151.4297\\-175\\-127.9297\\-150.8933\\-175\\-125.9766\\-149.1409\\-175\\-124.0234\\-148.9303\\-175\\-122.0703\\-147.9629\\-175\\-121.4844\\-147.5234\\-175\\-120.1172\\-147.1133\\-175\\-118.1641\\-147.0926\\-175\\-116.2109\\-146.791\\-175\\-114.7461\\-145.5703\\-175\\-114.1657\\-145.5703\\-175\\-114.2383\\-149.4766\\-175\\-116.0199\\-151.4297\\-175\\-116.0623\\-155.3359\\-175\\-117.8894\\-157.2891\\-175\\-117.9436\\-161.1953\\-175\\-118.1641\\-161.651\\-175\\-119.4119\\-163.1484\\-175\\-119.3704\\-165.1016\\-175\\-119.5204\\-167.0547\\-175\\-119.5204\\-169.0078\\-175\\-119.6899\\-170.9609\\-175\\-120.1172\\-171.1681\\-175\\-122.0703\\-171.4492\\-175\\-123.4809\\-172.9141\\-175\\-125.2219\\-174.8672\\-175\\-125.2848\\-178.7734\\-175\\-125.8681\\-180.7266\\-175\\-125.9766\\-181.7031\\-175\\-126.9531\\-182.6797\\-175\\-127.9297\\-182.7988\\-175\\-129.4643\\-184.6328\\-175\\-128.479\\-186.5859\\-175\\-127.9297\\-187.3184\\-175\\-125.9766\\-187.7456\\-175\\-125.4688\\-188.5391\\-175\\-126.0851\\-190.4922\\-175\\-126.0986\\-192.4453\\-175\\-126.3428\\-194.3984\\-175\\-127.727\\-196.3516\\-175\\-127.7956\\-202.2109\\-175\\-127.9297\\-202.6131\\-175\\-129.1282\\-204.1641\\-175\\-128.8365\\-206.1172\\-175\\-129.5876\\-208.0703\\-175\\-129.5573\\-211.9766\\-175\\-129.6237\\-213.9297\\-175\\-129.8828\\-214.3999\\-175\\-131.2175\\-215.8828\\-175\\-130.5589\\-217.8359\\-175\\-129.8828\\-218.5684\\-175\\-129.5499\\-219.7891\\-175\\-129.5499\\-221.7422\\-175\\-129.2969\\-223.6953\\-175\\-127.9297\\-225.3229\\-175\\-127.7982\\-225.6484\\-175\\-127.8711\\-227.6016\\-175\\-129.5499\\-229.5547\\-175\\-129.5876\\-235.4141\\-175\\-129.8828\\-236.3209\\-175\\-130.6966\\-237.3672\\-175\\-129.8096\\-239.3203\\-175\\-129.8828\\-241.599\\-175\\-130.7983\\-243.2266\\-175\\-131.1701\\-245.1797\\-175\\-131.4228\\-247.1328\\-175\\-131.1678\\-249.0859\\-175\\-131.2012\\-251.0391\\-175\\-131.8359\\-252.4496\\-175\\-132.2428\\-252.9922\\-175\\-132.512\\-254.9453\\-175\\-132.7428\\-258.8516\\-175\\-132.7428\\-264.7109\\-175\\-132.8125\\-266.6641\\-175\\-133.3365\\-268.6172\\-175\\-132.9102\\-270.5703\\-175\\-131.8359\\-271.5469\\-175\\-131.4523\\-272.5234\\-175"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002388"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "208"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "1"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-302.0705\\-173\\-83.00781\\-300.9754\\-173\\-86.91406\\-300.8166\\-173\\-88.86719\\-300.521\\-173\\-90.82031\\-299.9072\\-173\\-92.77344\\-299.5658\\-173\\-94.72656\\-299.0435\\-173\\-96.67969\\-298.3087\\-173\\-98.37431\\-297.9141\\-173\\-100.5859\\-296.6277\\-173\\-102.5391\\-296.1421\\-173\\-104.4922\\-295.0589\\-173\\-106.4453\\-294.7641\\-173\\-108.3984\\-293.6721\\-173\\-110.3516\\-292.811\\-173\\-112.3047\\-290.9783\\-173\\-114.2578\\-290.5478\\-173\\-116.2109\\-289.0671\\-173\\-118.119\\-288.1484\\-173\\-120.1172\\-286.5138\\-173\\-122.0703\\-285.335\\-173\\-124.0234\\-283.4826\\-173\\-127.9297\\-279.9471\\-173\\-131.1599\\-276.4297\\-173\\-133.7891\\-273.7756\\-173\\-136.4906\\-270.5703\\-173\\-138.0115\\-268.6172\\-173\\-139.1138\\-266.6641\\-173\\-140.7258\\-264.7109\\-173\\-142.0506\\-262.7578\\-173\\-142.9807\\-260.8047\\-173\\-144.1303\\-258.8516\\-173\\-145.1157\\-256.8984\\-173\\-145.5078\\-256.391\\-173\\-147.749\\-252.9922\\-173\\-148.4946\\-251.0391\\-173\\-150.2841\\-247.1328\\-173\\-150.9292\\-245.1797\\-173\\-152.0162\\-243.2266\\-173\\-152.7\\-241.2734\\-173\\-153.8602\\-239.3203\\-173\\-154.3324\\-237.3672\\-173\\-155.7617\\-233.4609\\-173\\-156.1929\\-231.5078\\-173\\-156.7742\\-229.5547\\-173\\-158.1292\\-225.6484\\-173\\-159.0056\\-221.7422\\-173\\-159.938\\-219.7891\\-173\\-160.2966\\-217.8359\\-173\\-161.4349\\-213.9297\\-173\\-161.7352\\-211.9766\\-173\\-162.1708\\-206.1172\\-173\\-162.366\\-204.1641\\-173\\-162.4242\\-202.2109\\-173\\-162.4157\\-198.3047\\-173\\-162.2089\\-196.3516\\-173\\-161.8108\\-190.4922\\-173\\-161.5221\\-188.5391\\-173\\-160.2804\\-184.6328\\-173\\-159.8476\\-182.6797\\-173\\-158.7508\\-180.7266\\-173\\-158.17\\-178.7734\\-173\\-157.2947\\-176.8203\\-173\\-156.1256\\-174.8672\\-173\\-155.2734\\-172.9282\\-173\\-154.1372\\-170.9609\\-173\\-151.3672\\-167.5165\\-173\\-149.198\\-165.1016\\-173\\-147.8591\\-163.1484\\-173\\-145.5078\\-160.7521\\-173\\-143.5547\\-159.118\\-173\\-141.6016\\-157.7076\\-173\\-141.1865\\-157.2891\\-173\\-137.6953\\-154.4925\\-173\\-131.8359\\-150.8857\\-173\\-129.7182\\-149.4766\\-173\\-127.9297\\-148.4627\\-173\\-125.9766\\-147.2246\\-173\\-124.0234\\-146.5265\\-173\\-120.1172\\-144.7879\\-173\\-118.1641\\-144.224\\-173\\-116.2109\\-143.181\\-173\\-114.2578\\-142.5557\\-173\\-110.3516\\-141.6247\\-173\\-108.3984\\-140.7968\\-173\\-106.4453\\-140.3998\\-173\\-104.4922\\-140.1908\\-173\\-102.5391\\-139.2664\\-173\\-98.63281\\-138.5217\\-173\\-96.67969\\-137.4128\\-173\\-92.77344\\-136.9472\\-173\\-90.82031\\-135.9013\\-173\\-88.86719\\-135.5287\\-173\\-86.91406\\-135.4302\\-173\\-84.96094\\-134.9024\\-173\\-83.00781\\-134.6305\\-173\\-81.05469\\-134.5352\\-173\\-77.14844\\-133.1644\\-173\\-73.24219\\-132.9727\\-173\\-69.33594\\-132.9144\\-173\\-63.47656\\-132.9329\\-173\\-59.57031\\-133.0063\\-173\\-53.71094\\-133.2785\\-173\\-51.58944\\-133.8516\\-173\\-49.80469\\-134.5417\\-173\\-47.85156\\-134.7486\\-173\\-44.04634\\-135.8047\\-173\\-41.99219\\-136.651\\-173\\-39.58038\\-137.7578\\-173\\-38.08594\\-138.9907\\-173\\-36.13281\\-139.503\\-173\\-34.17969\\-141.2263\\-173\\-33.33333\\-141.6641\\-173\\-32.22656\\-142.5228\\-173\\-30.27344\\-143.5539\\-173\\-28.28664\\-145.5703\\-173\\-27.00893\\-147.5234\\-173\\-26.36719\\-149.1278\\-173\\-25.39063\\-149.4766\\-173\\-24.41406\\-151.1042\\-173\\-24.2513\\-153.3828\\-173\\-24.41406\\-153.8711\\-173\\-25.39063\\-155.3359\\-173\\-25.8789\\-157.2891\\-173\\-25.8789\\-159.2422\\-173\\-26.85547\\-161.1953\\-173\\-27.34375\\-163.1484\\-173\\-26.85547\\-165.1016\\-173\\-28.32031\\-166.5664\\-173\\-29.29687\\-167.0547\\-173\\-30.27344\\-168.0313\\-173\\-30.76172\\-169.0078\\-173\\-31.25\\-170.9609\\-173\\-32.22656\\-171.4492\\-173\\-33.69141\\-172.9141\\-173\\-34.50521\\-174.8672\\-173\\-35.64453\\-176.8203\\-173\\-35.64453\\-178.7734\\-173\\-35.80729\\-180.7266\\-173\\-36.13281\\-181.2148\\-173\\-37.59766\\-182.6797\\-173\\-37.76041\\-184.6328\\-173\\-38.57422\\-186.5859\\-173\\-38.57422\\-188.5391\\-173\\-40.03906\\-191.4688\\-173\\-41.01563\\-194.3984\\-173\\-41.50391\\-196.3516\\-173\\-42.31771\\-198.3047\\-173\\-42.72461\\-200.2578\\-173\\-42.48047\\-202.2109\\-173\\-43.45703\\-204.1641\\-173\\-43.75\\-206.1172\\-173\\-43.70117\\-208.0703\\-173\\-44.18945\\-210.0234\\-173\\-44.27083\\-213.9297\\-173\\-44.92188\\-215.8828\\-173\\-44.43359\\-217.8359\\-173\\-44.43359\\-219.7891\\-173\\-44.92188\\-221.7422\\-173\\-44.92188\\-223.6953\\-173\\-44.43359\\-225.6484\\-173\\-44.92187\\-227.6016\\-173\\-44.92187\\-229.5547\\-173\\-45.89844\\-230.5313\\-173\\-46.22396\\-231.5078\\-173\\-46.22396\\-233.4609\\-173\\-46.38672\\-235.4141\\-173\\-46.38672\\-237.3672\\-173\\-47.36328\\-241.2734\\-173\\-47.36328\\-243.2266\\-173\\-49.31641\\-245.1797\\-173\\-49.07227\\-247.1328\\-173\\-49.47916\\-249.0859\\-173\\-49.31641\\-251.0391\\-173\\-49.47916\\-252.9922\\-173\\-49.80469\\-253.9688\\-173\\-50.78125\\-254.9453\\-173\\-50.78125\\-256.8984\\-173\\-51.75781\\-257.875\\-173\\-52.08333\\-258.8516\\-173\\-52.24609\\-260.8047\\-173\\-51.26953\\-262.7578\\-173\\-51.43229\\-264.7109\\-173\\-52.24609\\-266.6641\\-173\\-51.43229\\-268.6172\\-173\\-51.26953\\-270.5703\\-173\\-50.29297\\-274.4766\\-173\\-50.29297\\-280.3359\\-173\\-49.80469\\-281.3125\\-173\\-49.56055\\-282.2891\\-173\\-49.80469\\-283.2656\\-173\\-50.29297\\-284.2422\\-173\\-49.31641\\-286.1953\\-173\\-50.29297\\-288.1484\\-173\\-50.29297\\-292.0547\\-173\\-49.31641\\-294.0078\\-173\\-49.47917\\-295.9609\\-173\\-49.80469\\-296.0011\\-173\\-51.75781\\-297.9933\\-173\\-53.71094\\-298.1582\\-173\\-55.05371\\-299.8672\\-173\\-55.66406\\-300.2428\\-173\\-59.57031\\-300.5762\\-173\\-61.52344\\-301.8472\\-173\\-63.47656\\-302.0208\\-173\\-67.38281\\-302.1855\\-173\\-73.24219\\-302.2627\\-173\\-77.14844\\-302.2606\\-173"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002387"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "174"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "2"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-302.0081\\-171\\-88.86719\\-301.4367\\-171\\-92.77344\\-300.6752\\-171\\-94.72656\\-300.1905\\-171\\-96.67969\\-299.3295\\-171\\-98.63281\\-298.7279\\-171\\-102.5391\\-297.0441\\-171\\-104.4922\\-296.4428\\-171\\-106.4453\\-295.4397\\-171\\-108.3984\\-294.8102\\-171\\-112.3047\\-292.7268\\-171\\-114.2578\\-291.4096\\-171\\-116.2109\\-290.3423\\-171\\-118.1641\\-289.0867\\-171\\-120.1172\\-287.6334\\-171\\-122.0703\\-286.3098\\-171\\-124.3734\\-284.2422\\-171\\-127.9297\\-281.1463\\-171\\-129.8828\\-279.1208\\-171\\-134.1316\\-274.4766\\-171\\-135.4813\\-272.5234\\-171\\-140.0099\\-266.6641\\-171\\-141.1802\\-264.7109\\-171\\-142.4703\\-262.7578\\-171\\-144.6404\\-258.8516\\-171\\-145.967\\-256.8984\\-171\\-146.9277\\-254.9453\\-171\\-148.1223\\-252.9922\\-171\\-148.8627\\-251.0391\\-171\\-149.9157\\-249.0859\\-171\\-150.5687\\-247.1328\\-171\\-151.6568\\-245.1797\\-171\\-152.427\\-243.2266\\-171\\-153.4296\\-241.2734\\-171\\-154.184\\-239.3203\\-171\\-154.7985\\-237.3672\\-171\\-155.6626\\-235.4141\\-171\\-156.6319\\-231.5078\\-171\\-157.474\\-229.5547\\-171\\-158.5458\\-225.6484\\-171\\-159.3541\\-223.6953\\-171\\-159.9174\\-221.7422\\-171\\-160.3237\\-219.7891\\-171\\-160.8627\\-217.8359\\-171\\-161.5167\\-215.8828\\-171\\-161.8713\\-213.9297\\-171\\-162.1034\\-211.9766\\-171\\-162.6244\\-206.1172\\-171\\-162.9118\\-202.2109\\-171\\-162.9118\\-198.3047\\-171\\-162.7652\\-196.3516\\-171\\-162.17\\-190.4922\\-171\\-161.9274\\-188.5391\\-171\\-161.5646\\-186.5859\\-171\\-160.8329\\-184.6328\\-171\\-159.6591\\-180.7266\\-171\\-158.6172\\-178.7734\\-171\\-157.8757\\-176.8203\\-171\\-156.6885\\-174.8672\\-171\\-155.8687\\-172.9141\\-171\\-153.3203\\-169.1163\\-171\\-151.3672\\-166.558\\-171\\-148.4169\\-163.1484\\-171\\-146.5129\\-161.1953\\-171\\-142.2288\\-157.2891\\-171\\-139.6484\\-155.2266\\-171\\-135.7422\\-152.569\\-171\\-133.7891\\-151.3195\\-171\\-131.8359\\-150.2282\\-171\\-129.8828\\-148.8443\\-171\\-127.9297\\-147.8585\\-171\\-125.9766\\-146.7584\\-171\\-124.0234\\-146.0825\\-171\\-122.0703\\-145.044\\-171\\-120.1172\\-144.4328\\-171\\-118.1641\\-143.4942\\-171\\-114.2578\\-142.026\\-171\\-112.3047\\-141.1727\\-171\\-108.3984\\-140.1858\\-171\\-106.4453\\-139.4144\\-171\\-104.4922\\-138.919\\-171\\-102.5391\\-138.5402\\-171\\-100.5859\\-137.9576\\-171\\-98.63281\\-137.1797\\-171\\-94.72656\\-136.2451\\-171\\-92.77344\\-135.4857\\-171\\-86.91406\\-134.1339\\-171\\-84.96094\\-133.632\\-171\\-81.05469\\-133.0043\\-171\\-77.14844\\-132.5393\\-171\\-71.28906\\-131.5794\\-171\\-69.33594\\-131.4399\\-171\\-65.42969\\-131.3038\\-171\\-61.52344\\-131.3704\\-171\\-59.57031\\-131.5166\\-171\\-57.61719\\-131.762\\-171\\-53.71094\\-132.4681\\-171\\-49.80469\\-132.9677\\-171\\-47.85156\\-133.3135\\-171\\-43.94531\\-134.7256\\-171\\-41.99219\\-135.2492\\-171\\-38.08594\\-137.0089\\-171\\-34.17969\\-139.2227\\-171\\-28.32031\\-143.4777\\-171\\-24.41406\\-147.0985\\-171\\-22.13762\\-149.4766\\-171\\-21.32469\\-151.4297\\-171\\-19.71436\\-153.3828\\-171\\-19.11169\\-155.3359\\-171\\-18.55469\\-155.9842\\-171\\-17.73649\\-157.2891\\-171\\-17.04821\\-159.2422\\-171\\-15.88611\\-161.1953\\-171\\-15.60925\\-163.1484\\-171\\-14.41825\\-165.1016\\-171\\-14.16949\\-167.0547\\-171\\-13.58247\\-169.0078\\-171\\-13.12663\\-172.9141\\-171\\-12.93721\\-176.8203\\-171\\-12.28376\\-178.7734\\-171\\-11.83297\\-180.7266\\-171\\-11.63358\\-184.6328\\-171\\-11.54175\\-188.5391\\-171\\-10.23392\\-190.4922\\-171\\-10.01862\\-194.3984\\-171\\-9.942289\\-200.2578\\-171\\-9.994507\\-206.1172\\-171\\-9.978141\\-211.9766\\-171\\-10.04093\\-215.8828\\-171\\-10.25102\\-223.6953\\-171\\-10.36516\\-225.6484\\-171\\-11.58531\\-227.6016\\-171\\-11.71875\\-233.4609\\-171\\-11.95098\\-237.3672\\-171\\-12.76507\\-239.3203\\-171\\-13.31329\\-243.2266\\-171\\-13.95723\\-245.1797\\-171\\-14.32729\\-249.0859\\-171\\-15.46224\\-251.0391\\-171\\-15.74468\\-252.9922\\-171\\-16.29144\\-254.9453\\-171\\-17.56779\\-256.8984\\-171\\-17.6883\\-258.8516\\-171\\-18.55469\\-260.2833\\-171\\-19.03161\\-260.8047\\-171\\-19.64052\\-262.7578\\-171\\-20.66443\\-266.6641\\-171\\-21.74549\\-268.6172\\-171\\-23.18869\\-270.5703\\-171\\-23.6969\\-272.5234\\-171\\-25.23942\\-274.4766\\-171\\-25.96933\\-276.4297\\-171\\-27.52183\\-278.3828\\-171\\-28.34932\\-280.3359\\-171\\-32.22656\\-284.4049\\-171\\-33.66341\\-286.1953\\-171\\-34.9985\\-288.1484\\-171\\-37.0666\\-290.1016\\-171\\-39.61955\\-292.0547\\-171\\-41.99219\\-294.3489\\-171\\-43.94531\\-295.4144\\-171\\-45.89844\\-296.5841\\-171\\-47.85156\\-298.2568\\-171\\-49.80469\\-298.9216\\-171\\-51.75781\\-300.2641\\-171\\-53.71094\\-300.8955\\-171\\-57.61719\\-302.3018\\-171\\-61.52344\\-302.8631\\-171\\-67.38281\\-303.4177\\-171\\-69.33594\\-303.5293\\-171\\-71.28906\\-303.5311\\-171\\-75.19531\\-303.3842\\-171\\-83.00781\\-302.638\\-171\\-84.96094\\-302.3959\\-171"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002387"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "176"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "3"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "55.37684\\-297.9141\\-171\\53.71094\\-296.4235\\-171\\51.75781\\-296.1394\\-171\\51.41195\\-295.9609\\-171\\49.80469\\-294.418\\-171\\47.85156\\-294.2967\\-171\\45.89844\\-292.55\\-171\\43.94531\\-292.3643\\-171\\41.58266\\-290.1016\\-171\\40.03906\\-288.3926\\-171\\38.08594\\-286.6785\\-171\\36.13281\\-286.3474\\-171\\35.97819\\-286.1953\\-171\\35.52698\\-284.2422\\-171\\34.17969\\-282.7574\\-171\\32.22656\\-280.9361\\-171\\31.70277\\-280.3359\\-171\\30.27344\\-279.0781\\-171\\29.68618\\-278.3828\\-171\\29.26358\\-276.4297\\-171\\27.32077\\-274.4766\\-171\\26.66364\\-272.5234\\-171\\25.05208\\-270.5703\\-171\\24.41406\\-269.9568\\-171\\22.46094\\-267.4087\\-171\\21.25822\\-264.7109\\-171\\19.81141\\-260.8047\\-171\\19.42568\\-258.8516\\-171\\18.55469\\-256.8197\\-171\\17.85881\\-254.9453\\-171\\17.71851\\-252.9922\\-171\\16.18481\\-251.0391\\-171\\15.88579\\-249.0859\\-171\\14.97774\\-247.1328\\-171\\14.64844\\-246.1214\\-171\\14.03439\\-243.2266\\-171\\13.54774\\-241.2734\\-171\\13.36785\\-239.3203\\-171\\13.18359\\-233.4609\\-171\\12.69531\\-232.9541\\-171\\11.95817\\-231.5078\\-171\\11.86996\\-229.5547\\-171\\11.98572\\-227.6016\\-171\\11.73855\\-223.6953\\-171\\11.73222\\-221.7422\\-171\\10.54275\\-219.7891\\-171\\11.24108\\-217.8359\\-171\\10.74219\\-217.1895\\-171\\10.20281\\-215.8828\\-171\\10.11827\\-213.9297\\-171\\10.03339\\-208.0703\\-171\\10.04012\\-204.1641\\-171\\9.984334\\-196.3516\\-171\\10.07876\\-188.5391\\-171\\10.25391\\-182.6797\\-171\\11.71875\\-180.7266\\-171\\11.9598\\-172.9141\\-171\\13.23379\\-169.0078\\-171\\13.70216\\-167.0547\\-171\\14.64844\\-163.7909\\-171\\14.91672\\-163.1484\\-171\\16.60156\\-160.0878\\-171\\17.23189\\-159.2422\\-171\\18.01568\\-157.2891\\-171\\19.539\\-155.3359\\-171\\20.50781\\-153.5921\\-171\\21.89556\\-151.4297\\-171\\22.46094\\-150.9216\\-171\\24.41406\\-148.6911\\-171\\25.73482\\-147.5234\\-171\\28.32031\\-145.0642\\-171\\30.27344\\-144.5057\\-171\\32.22656\\-142.5121\\-171\\34.17969\\-140.8306\\-171\\36.13281\\-140.0894\\-171\\36.58466\\-139.7109\\-171\\40.03906\\-137.8083\\-171\\41.99219\\-138.7804\\-171\\43.94531\\-136.887\\-171\\45.89844\\-136.667\\-171\\47.85156\\-135.5117\\-171\\49.80469\\-135.3234\\-171\\51.75781\\-135.3634\\-171\\53.71094\\-134.7305\\-171\\55.66406\\-134.292\\-171\\57.61719\\-134.3295\\-171\\61.52344\\-134.5946\\-171\\63.47656\\-134.2955\\-171\\63.96484\\-133.8516\\-171\\65.42969\\-133.3406\\-171\\67.38281\\-133.4035\\-171\\68.24841\\-133.8516\\-171\\69.33594\\-134.9391\\-171\\71.28906\\-135.0885\\-171\\75.19531\\-135.6199\\-171\\77.63672\\-135.8047\\-171\\78.125\\-137.7578\\-171\\79.10156\\-138.7344\\-171\\79.24107\\-139.7109\\-171\\78.85742\\-141.6641\\-171\\76.9043\\-143.6172\\-171\\78.125\\-145.5703\\-171\\78.125\\-147.5234\\-171\\77.3112\\-151.4297\\-171\\78.40401\\-153.3828\\-171\\78.125\\-155.3359\\-171\\77.14844\\-156.4753\\-171\\75.19531\\-156.8008\\-171\\73.24219\\-157.9866\\-171\\71.28906\\-158.5098\\-171\\70.55664\\-159.2422\\-171\\69.0918\\-161.1953\\-171\\68.35938\\-163.1484\\-171\\67.87109\\-165.1016\\-171\\67.05729\\-167.0547\\-171\\68.35938\\-169.0078\\-171\\67.38281\\-169.9844\\-171\\66.79688\\-170.9609\\-171\\65.42969\\-173.8906\\-171\\65.10416\\-174.8672\\-171\\65.75521\\-176.8203\\-171\\65.18555\\-178.7734\\-171\\65.10416\\-180.7266\\-171\\64.45313\\-182.6797\\-171\\65.10416\\-184.6328\\-171\\63.80209\\-188.5391\\-171\\64.45313\\-190.4922\\-171\\64.45313\\-192.4453\\-171\\63.7207\\-194.3984\\-171\\63.7207\\-198.3047\\-171\\63.80209\\-200.2578\\-171\\62.5\\-202.2109\\-171\\62.5\\-206.1172\\-171\\61.19792\\-208.0703\\-171\\60.79102\\-210.0234\\-171\\60.05859\\-211.9766\\-171\\60.05859\\-217.8359\\-171\\59.24479\\-219.7891\\-171\\59.81445\\-221.7422\\-171\\60.05859\\-223.6953\\-171\\59.57031\\-224.6719\\-171\\59.32617\\-225.6484\\-171\\59.73307\\-227.6016\\-171\\59.24479\\-229.5547\\-171\\60.30273\\-231.5078\\-171\\59.81445\\-235.4141\\-171\\59.81445\\-237.3672\\-171\\59.57031\\-238.3438\\-171\\58.59375\\-239.3203\\-171\\58.34961\\-241.2734\\-171\\58.34961\\-245.1797\\-171\\57.37305\\-247.1328\\-171\\57.29167\\-249.0859\\-171\\56.88477\\-251.0391\\-171\\56.15234\\-252.9922\\-171\\56.64063\\-254.9453\\-171\\55.98959\\-256.8984\\-171\\56.64063\\-258.8516\\-171\\55.9082\\-260.8047\\-171\\55.66406\\-261.7813\\-171\\55.17578\\-262.7578\\-171\\55.17578\\-264.7109\\-171\\53.71094\\-267.6406\\-171\\53.4668\\-268.6172\\-171\\54.03646\\-270.5703\\-171\\53.95508\\-274.4766\\-171\\53.4668\\-276.4297\\-171\\52.73438\\-278.3828\\-171\\53.95508\\-280.3359\\-171\\53.38542\\-282.2891\\-171\\53.38542\\-284.2422\\-171\\54.93164\\-286.1953\\-171\\54.03646\\-290.1016\\-171\\54.85026\\-292.0547\\-171\\55.9082\\-295.9609\\-171\\57.29167\\-297.9141\\-171"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "176"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "4"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-73.24219\\-303.8542\\-169\\-75.19531\\-303.675\\-169\\-79.10156\\-303.1839\\-169\\-84.96094\\-302.5885\\-169\\-86.91406\\-302.2715\\-169\\-90.82031\\-301.2267\\-169\\-94.72656\\-300.4363\\-169\\-96.67969\\-299.662\\-169\\-100.5859\\-298.3394\\-169\\-102.5391\\-297.3136\\-169\\-104.4922\\-296.6992\\-169\\-106.4453\\-295.7298\\-169\\-108.3984\\-294.9905\\-169\\-110.3516\\-294.1102\\-169\\-112.3047\\-292.9929\\-169\\-114.2578\\-291.7224\\-169\\-116.2109\\-290.6448\\-169\\-122.0703\\-286.5929\\-169\\-124.6476\\-284.2422\\-169\\-127.9297\\-281.3329\\-169\\-129.8828\\-279.3381\\-169\\-131.8359\\-277.196\\-169\\-134.4105\\-274.4766\\-169\\-135.9787\\-272.5234\\-169\\-137.1861\\-270.5703\\-169\\-140.3014\\-266.6641\\-169\\-142.6606\\-262.7578\\-169\\-143.9251\\-260.8047\\-169\\-144.8669\\-258.8516\\-169\\-146.2197\\-256.8984\\-169\\-147.1953\\-254.9453\\-169\\-148.3177\\-252.9922\\-169\\-149.0861\\-251.0391\\-169\\-150.1282\\-249.0859\\-169\\-150.8028\\-247.1328\\-169\\-151.9624\\-245.1797\\-169\\-152.6912\\-243.2266\\-169\\-153.7619\\-241.2734\\-169\\-154.3957\\-239.3203\\-169\\-155.952\\-235.4141\\-169\\-156.367\\-233.4609\\-169\\-157.0253\\-231.5078\\-169\\-157.8465\\-229.5547\\-169\\-158.3226\\-227.6016\\-169\\-159.7611\\-223.6953\\-169\\-160.7096\\-219.7891\\-169\\-161.3966\\-217.8359\\-169\\-161.8514\\-215.8828\\-169\\-162.5682\\-210.0234\\-169\\-163.1557\\-206.1172\\-169\\-163.3599\\-204.1641\\-169\\-163.4646\\-202.2109\\-169\\-163.4961\\-198.3047\\-169\\-163.3954\\-196.3516\\-169\\-163.1406\\-194.3984\\-169\\-162.4244\\-190.4922\\-169\\-161.876\\-186.5859\\-169\\-161.3841\\-184.6328\\-169\\-160.5882\\-182.6797\\-169\\-160.0018\\-180.7266\\-169\\-159.1797\\-178.7865\\-169\\-157.2266\\-174.9214\\-169\\-156.1366\\-172.9141\\-169\\-153.7016\\-169.0078\\-169\\-151.3672\\-166.101\\-169\\-148.7422\\-163.1484\\-169\\-146.9126\\-161.1953\\-169\\-142.6151\\-157.2891\\-169\\-139.6484\\-154.8016\\-169\\-137.581\\-153.3828\\-169\\-133.7891\\-150.8891\\-169\\-131.8359\\-149.7809\\-169\\-129.8828\\-148.5287\\-169\\-127.9297\\-147.3937\\-169\\-125.9766\\-146.5408\\-169\\-124.0234\\-145.8032\\-169\\-122.0703\\-144.8222\\-169\\-120.1172\\-144.2056\\-169\\-118.1641\\-143.1472\\-169\\-116.2109\\-142.4861\\-169\\-114.2578\\-141.6564\\-169\\-112.3047\\-140.9361\\-169\\-110.3516\\-140.4684\\-169\\-108.3984\\-139.8427\\-169\\-106.4453\\-139.1134\\-169\\-102.5391\\-138.2558\\-169\\-100.5859\\-137.443\\-169\\-96.67969\\-136.4423\\-169\\-94.72656\\-135.6962\\-169\\-92.77344\\-135.1299\\-169\\-88.86719\\-134.2272\\-169\\-86.91406\\-133.6111\\-169\\-84.96094\\-133.2155\\-169\\-83.00781\\-132.9478\\-169\\-79.10156\\-132.5555\\-169\\-77.14844\\-132.2146\\-169\\-75.19531\\-131.7228\\-169\\-73.24219\\-131.4399\\-169\\-71.28906\\-131.2669\\-169\\-67.38281\\-131.1162\\-169\\-63.47656\\-131.0934\\-169\\-59.57031\\-131.2457\\-169\\-57.61719\\-131.4219\\-169\\-55.66406\\-131.7087\\-169\\-53.71094\\-132.1744\\-169\\-51.75781\\-132.5232\\-169\\-47.85156\\-133.0592\\-169\\-45.89844\\-133.5819\\-169\\-43.94531\\-134.3728\\-169\\-40.03906\\-135.59\\-169\\-38.08594\\-136.592\\-169\\-36.13281\\-137.4609\\-169\\-32.66398\\-139.7109\\-169\\-30.27344\\-141.3561\\-169\\-27.46302\\-143.6172\\-169\\-24.41406\\-146.4973\\-169\\-21.72112\\-149.4766\\-169\\-20.23199\\-151.4297\\-169\\-19.22526\\-153.3828\\-169\\-18.0161\\-155.3359\\-169\\-17.22301\\-157.2891\\-169\\-16.09281\\-159.2422\\-169\\-15.40612\\-161.1953\\-169\\-14.48328\\-163.1484\\-169\\-13.89492\\-165.1016\\-169\\-13.14041\\-169.0078\\-169\\-12.60938\\-170.9609\\-169\\-12.1844\\-172.9141\\-169\\-11.9687\\-174.8672\\-169\\-11.66539\\-178.7734\\-169\\-11.45089\\-180.7266\\-169\\-11.06542\\-182.6797\\-169\\-10.5806\\-184.6328\\-169\\-10.27135\\-186.5859\\-169\\-9.760791\\-192.4453\\-169\\-9.571362\\-196.3516\\-169\\-9.478082\\-200.2578\\-169\\-9.508928\\-206.1172\\-169\\-9.460802\\-210.0234\\-169\\-9.532335\\-213.9297\\-169\\-9.690118\\-217.8359\\-169\\-9.950508\\-225.6484\\-169\\-10.25391\\-229.5547\\-169\\-10.59358\\-231.5078\\-169\\-11.07449\\-233.4609\\-169\\-11.41036\\-235.4141\\-169\\-11.83877\\-239.3203\\-169\\-12.13458\\-241.2734\\-169\\-13.2393\\-245.1797\\-169\\-13.94413\\-249.0859\\-169\\-14.41988\\-251.0391\\-169\\-15.17519\\-252.9922\\-169\\-16.33103\\-256.8984\\-169\\-17.28678\\-258.8516\\-169\\-17.85562\\-260.8047\\-169\\-18.95229\\-262.7578\\-169\\-20.22182\\-266.6641\\-169\\-21.30418\\-268.6172\\-169\\-22.17134\\-270.5703\\-169\\-23.39124\\-272.5234\\-169\\-25.53991\\-276.4297\\-169\\-26.85205\\-278.3828\\-169\\-27.89142\\-280.3359\\-169\\-29.49089\\-282.2891\\-169\\-31.23146\\-284.2422\\-169\\-34.48683\\-288.1484\\-169\\-40.03906\\-293.359\\-169\\-41.99219\\-294.9531\\-169\\-43.94531\\-296.2575\\-169\\-45.89844\\-297.3216\\-169\\-47.85156\\-298.6786\\-169\\-51.75781\\-300.6086\\-169\\-53.71094\\-301.1629\\-169\\-57.61719\\-302.5222\\-169\\-67.38281\\-303.7811\\-169\\-69.33594\\-303.9089\\-169"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "257"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "5"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "63.47656\\-301.8099\\-169\\59.57031\\-301.3076\\-169\\57.61719\\-300.7721\\-169\\55.66406\\-300.4261\\-169\\54.13187\\-299.8672\\-169\\51.75781\\-298.7472\\-169\\49.80469\\-297.3715\\-169\\47.85156\\-296.6995\\-169\\45.89844\\-295.1841\\-169\\43.94531\\-294.386\\-169\\41.99219\\-292.9022\\-169\\40.03906\\-290.9544\\-169\\38.08594\\-289.1103\\-169\\36.13281\\-287.766\\-169\\34.47951\\-286.1953\\-169\\33.1563\\-284.2422\\-169\\31.40818\\-282.2891\\-169\\30.27344\\-281.1623\\-169\\27.97445\\-278.3828\\-169\\27.07435\\-276.4297\\-169\\25.61549\\-274.4766\\-169\\24.85988\\-272.5234\\-169\\24.41406\\-272.0064\\-169\\22.06643\\-268.6172\\-169\\21.21519\\-266.6641\\-169\\20.14951\\-264.7109\\-169\\18.96624\\-260.8047\\-169\\18.05124\\-258.8516\\-169\\17.19574\\-254.9453\\-169\\16.28675\\-252.9922\\-169\\15.67667\\-251.0391\\-169\\14.16331\\-247.1328\\-169\\13.34417\\-243.2266\\-169\\12.32824\\-239.3203\\-169\\12.07498\\-237.3672\\-169\\11.79778\\-233.4609\\-169\\10.86957\\-227.6016\\-169\\10.46036\\-225.6484\\-169\\10.28022\\-223.6953\\-169\\10.0234\\-219.7891\\-169\\10.0072\\-217.8359\\-169\\9.745173\\-213.9297\\-169\\9.53284\\-208.0703\\-169\\9.534486\\-202.2109\\-169\\9.480081\\-200.2578\\-169\\9.573514\\-192.4453\\-169\\9.709676\\-188.5391\\-169\\9.996536\\-182.6797\\-169\\10.23687\\-180.7266\\-169\\11.00787\\-176.8203\\-169\\11.85116\\-170.9609\\-169\\12.29239\\-169.0078\\-169\\13.09291\\-167.0547\\-169\\14.24864\\-163.1484\\-169\\15.33518\\-161.1953\\-169\\16.12261\\-159.2422\\-169\\17.39839\\-157.2891\\-169\\19.77873\\-153.3828\\-169\\21.21384\\-151.4297\\-169\\24.41406\\-147.6665\\-169\\26.64493\\-145.5703\\-169\\29.01786\\-143.6172\\-169\\31.62977\\-141.6641\\-169\\32.22656\\-141.1152\\-169\\34.47033\\-139.7109\\-169\\38.08594\\-137.6745\\-169\\40.03906\\-136.7691\\-169\\41.99219\\-136.5511\\-169\\43.94531\\-135.1235\\-169\\45.89844\\-134.7874\\-169\\47.85156\\-134.1081\\-169\\49.80469\\-133.5799\\-169\\51.75781\\-133.4423\\-169\\53.71094\\-132.8549\\-169\\55.66406\\-132.5882\\-169\\59.57031\\-132.2212\\-169\\61.52344\\-132.0883\\-169\\63.47656\\-131.8246\\-169\\65.42969\\-131.2578\\-169\\67.38281\\-131.2706\\-169\\69.33594\\-132.0406\\-169\\71.28906\\-132.1682\\-169\\73.24219\\-132.1355\\-169\\75.19531\\-132.212\\-169\\77.14844\\-132.4348\\-169\\81.05469\\-132.7626\\-169\\83.00781\\-133.0155\\-169\\84.96094\\-133.4167\\-169\\86.91406\\-133.5116\\-169\\88.86719\\-133.7043\\-169\\90.82031\\-134.032\\-169\\92.77344\\-134.7932\\-169\\96.67969\\-135.2239\\-169\\97.91396\\-135.8047\\-169\\100.5859\\-137.9317\\-169\\102.5391\\-138.0284\\-169\\104.4922\\-138.2513\\-169\\106.4453\\-139.2837\\-169\\108.3984\\-139.5005\\-169\\110.3516\\-140.4181\\-169\\112.3047\\-140.9561\\-169\\114.2578\\-141.0734\\-169\\116.0889\\-141.6641\\-169\\118.1641\\-142.6668\\-169\\120.1172\\-142.8375\\-169\\121.3257\\-143.6172\\-169\\122.0703\\-144.3712\\-169\\124.0234\\-144.6581\\-169\\125.9766\\-145.737\\-169\\129.8828\\-147.3755\\-169\\131.8359\\-148.7528\\-169\\133.7891\\-149.385\\-169\\135.7422\\-151.3442\\-169\\139.1907\\-153.3828\\-169\\139.6484\\-153.8711\\-169\\142.1509\\-155.3359\\-169\\145.5078\\-158.6642\\-169\\146.1515\\-159.2422\\-169\\147.9492\\-161.1953\\-169\\151.3672\\-164.6892\\-169\\151.6322\\-165.1016\\-169\\152.2311\\-167.0547\\-169\\153.7737\\-169.0078\\-169\\153.9307\\-170.9609\\-169\\154.034\\-174.8672\\-169\\153.3398\\-178.7734\\-169\\151.6602\\-180.7266\\-169\\151.6242\\-182.6797\\-169\\151.3672\\-183.2656\\-169\\149.4141\\-183.3933\\-169\\147.4609\\-182.7836\\-169\\145.5078\\-181.108\\-169\\143.5547\\-181.0573\\-169\\141.6016\\-181.6308\\-169\\139.6484\\-182.7685\\-169\\137.6953\\-181.1923\\-169\\135.9992\\-182.6797\\-169\\137.2255\\-184.6328\\-169\\138.6127\\-186.5859\\-169\\139.6484\\-187.8839\\-169\\140.4969\\-188.5391\\-169\\140.9053\\-190.4922\\-169\\141.6016\\-192.4918\\-169\\142.7455\\-194.3984\\-169\\142.5985\\-196.3516\\-169\\141.9271\\-198.3047\\-169\\141.6016\\-198.6709\\-169\\140.8288\\-200.2578\\-169\\140.0023\\-202.2109\\-169\\137.6953\\-204.3992\\-169\\135.7422\\-205.5854\\-169\\132.3844\\-208.0703\\-169\\133.7891\\-209.5564\\-169\\135.7422\\-209.1831\\-169\\137.6953\\-207.7167\\-169\\138.0157\\-208.0703\\-169\\138.339\\-210.0234\\-169\\138.3534\\-211.9766\\-169\\136.5039\\-213.9297\\-169\\136.3407\\-215.8828\\-169\\137.6953\\-217.5625\\-169\\138.0371\\-217.8359\\-169\\135.7422\\-219.9518\\-169\\133.7891\\-219.2371\\-169\\133.1209\\-219.7891\\-169\\133.7377\\-221.7422\\-169\\135.5591\\-223.6953\\-169\\135.7422\\-224.2813\\-169\\137.6953\\-223.5732\\-169\\139.6484\\-222.7188\\-169\\140.8854\\-221.7422\\-169\\140.408\\-219.7891\\-169\\143.5547\\-219.4318\\-169\\145.1823\\-219.7891\\-169\\148.0067\\-221.7422\\-169\\147.4609\\-222.5856\\-169\\145.5078\\-222.5309\\-169\\144.3434\\-223.6953\\-169\\143.8965\\-225.6484\\-169\\143.5547\\-226.2027\\-169\\141.6016\\-228.6697\\-169\\139.6484\\-228.9398\\-169\\139.0099\\-229.5547\\-169\\138.2042\\-231.5078\\-169\\138.2243\\-233.4609\\-169\\140.103\\-235.4141\\-169\\139.9148\\-237.3672\\-169\\139.5089\\-237.3672\\-169\\137.6953\\-235.7803\\-169\\135.7422\\-234.8607\\-169\\134.7656\\-235.4141\\-169\\133.7891\\-236.7975\\-169\\133.5261\\-237.3672\\-169\\134.2593\\-239.3203\\-169\\135.7422\\-240.9886\\-169\\136.1694\\-241.2734\\-169\\137.6953\\-243.0173\\-169\\139.6484\\-240.8713\\-169\\141.6016\\-240.7852\\-169\\143.5547\\-239.418\\-169\\145.5078\\-241.0022\\-169\\146.8395\\-241.2734\\-169\\147.4609\\-241.957\\-169\\149.4141\\-242.993\\-169\\149.6528\\-243.2266\\-169\\150.4883\\-245.1797\\-169\\151.3672\\-246.0586\\-169\\153.3203\\-246.6158\\-169\\155.2734\\-247.0491\\-169\\155.2734\\-247.2723\\-169\\153.6175\\-249.0859\\-169\\153.1808\\-252.9922\\-169\\151.5625\\-254.9453\\-169\\151.3672\\-255.3987\\-169\\149.9192\\-256.8984\\-169\\148.2928\\-258.8516\\-169\\147.8299\\-260.8047\\-169\\146.1033\\-262.7578\\-169\\145.841\\-264.7109\\-169\\145.5078\\-265.14\\-169\\141.9744\\-268.6172\\-169\\141.6016\\-269.6965\\-169\\139.9374\\-272.5234\\-169\\137.6953\\-274.6259\\-169\\135.7422\\-275.5833\\-169\\134.8958\\-276.4297\\-169\\133.7891\\-277.173\\-169\\132.6633\\-278.3828\\-169\\129.8828\\-281.0427\\-169\\127.9297\\-282.1638\\-169\\125.9766\\-283.597\\-169\\125.3744\\-284.2422\\-169\\122.0703\\-286.47\\-169\\120.1172\\-288.2671\\-169\\118.1641\\-288.6922\\-169\\116.2109\\-290.5596\\-169\\114.2578\\-291.1924\\-169\\113.3955\\-292.0547\\-169\\112.3047\\-292.8496\\-169\\110.3516\\-293.0136\\-169\\108.3984\\-294.2318\\-169\\106.4453\\-294.6619\\-169\\104.4922\\-295.9449\\-169\\102.5391\\-296.0929\\-169\\100.5859\\-297.2137\\-169\\98.63281\\-297.4314\\-169\\96.67969\\-298.5016\\-169\\94.72656\\-299.0335\\-169\\92.77344\\-299.1011\\-169\\90.82031\\-299.9676\\-169\\88.86719\\-300.647\\-169\\84.96094\\-300.7585\\-169\\82.20564\\-301.8203\\-169\\79.10156\\-302.577\\-169\\75.19531\\-302.6948\\-169\\71.28906\\-302.6257\\-169\\69.33594\\-302.2037\\-169"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "4"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "6"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "143.5547\\-189.3458\\-169\\143.133\\-188.5391\\-169\\143.5547\\-188.2349\\-169\\143.886\\-188.5391\\-169"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "4"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "145.5078\\-194.8053\\-169\\144.6036\\-194.3984\\-169\\145.5078\\-193.1777\\-169\\146.7928\\-194.3984\\-169"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002386"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "149.4141\\-216.2923\\-169\\149.1319\\-215.8828\\-169\\149.2473\\-213.9297\\-169\\147.4609\\-212.0023\\-169\\145.5078\\-214.0812\\-169\\143.5547\\-211.9014\\-169\\141.6016\\-210.566\\-169\\141.0203\\-210.0234\\-169\\141.6016\\-209.642\\-169\\143.5547\\-209.6297\\-169\\145.4139\\-208.0703\\-169\\145.3879\\-206.1172\\-169\\145.1737\\-204.1641\\-169\\145.3738\\-202.2109\\-169\\145.6533\\-202.2109\\-169\\147.4866\\-204.1641\\-169\\147.966\\-206.1172\\-169\\147.966\\-208.0703\\-169\\148.1934\\-210.0234\\-169\\147.4924\\-211.9766\\-169\\149.573\\-213.9297\\-169\\149.7875\\-215.8828\\-169"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002385"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "181"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-75.19531\\-303.8682\\-167\\-79.10156\\-303.2914\\-167\\-83.00781\\-302.8616\\-167\\-84.96094\\-302.7003\\-167\\-86.91406\\-302.4227\\-167\\-88.86719\\-301.9653\\-167\\-90.82031\\-301.3931\\-167\\-94.72656\\-300.5706\\-167\\-96.67969\\-299.9626\\-167\\-98.63281\\-299.1595\\-167\\-100.5859\\-298.5634\\-167\\-102.5391\\-297.5571\\-167\\-104.4922\\-296.8603\\-167\\-106.4453\\-296.0469\\-167\\-108.3984\\-295.1125\\-167\\-110.3516\\-294.3546\\-167\\-110.8253\\-294.0078\\-167\\-114.2288\\-292.0547\\-167\\-116.2109\\-290.8091\\-167\\-118.1641\\-289.3966\\-167\\-120.1172\\-288.2358\\-167\\-122.0703\\-286.7733\\-167\\-124.8006\\-284.2422\\-167\\-127.9297\\-281.4396\\-167\\-129.8828\\-279.4686\\-167\\-130.8533\\-278.3828\\-167\\-134.6139\\-274.4766\\-167\\-136.2235\\-272.5234\\-167\\-137.4283\\-270.5703\\-167\\-138.8977\\-268.6172\\-167\\-140.5108\\-266.6641\\-167\\-141.8457\\-264.7109\\-167\\-142.8571\\-262.7578\\-167\\-144.1561\\-260.8047\\-167\\-145.0998\\-258.8516\\-167\\-146.3941\\-256.8984\\-167\\-147.5296\\-254.9453\\-167\\-150.2918\\-249.0859\\-167\\-151.0728\\-247.1328\\-167\\-152.173\\-245.1797\\-167\\-152.9857\\-243.2266\\-167\\-154.0079\\-241.2734\\-167\\-154.6203\\-239.3203\\-167\\-155.5324\\-237.3672\\-167\\-156.1422\\-235.4141\\-167\\-156.5817\\-233.4609\\-167\\-157.5103\\-231.5078\\-167\\-158.6326\\-227.6016\\-167\\-159.5202\\-225.6484\\-167\\-160.5314\\-221.7422\\-167\\-161.202\\-219.7891\\-167\\-161.7525\\-217.8359\\-167\\-162.0739\\-215.8828\\-167\\-162.5779\\-211.9766\\-167\\-163.3599\\-208.0703\\-167\\-163.5866\\-206.1172\\-167\\-163.8046\\-202.2109\\-167\\-163.8359\\-198.3047\\-167\\-163.6258\\-194.3984\\-167\\-163.3336\\-192.4453\\-167\\-162.7894\\-190.4922\\-167\\-162.3999\\-188.5391\\-167\\-161.7479\\-184.6328\\-167\\-160.3162\\-180.7266\\-167\\-159.668\\-178.7734\\-167\\-158.5306\\-176.8203\\-167\\-157.6425\\-174.8672\\-167\\-156.3832\\-172.9141\\-167\\-154.0558\\-169.0078\\-167\\-152.4658\\-167.0547\\-167\\-147.3178\\-161.1953\\-167\\-142.9162\\-157.2891\\-167\\-139.6484\\-154.486\\-167\\-137.6953\\-153.0377\\-167\\-135.7422\\-151.9426\\-167\\-135.0999\\-151.4297\\-167\\-132.0143\\-149.4766\\-167\\-129.8828\\-148.2941\\-167\\-127.9297\\-147.0962\\-167\\-125.9766\\-146.3872\\-167\\-122.0703\\-144.6651\\-167\\-120.1172\\-143.9607\\-167\\-118.1641\\-142.9347\\-167\\-116.2109\\-142.2692\\-167\\-114.2578\\-141.3631\\-167\\-112.3047\\-140.7577\\-167\\-110.3516\\-140.2586\\-167\\-108.3984\\-139.4931\\-167\\-106.4453\\-138.919\\-167\\-104.4922\\-138.5426\\-167\\-100.5859\\-137.1515\\-167\\-98.63281\\-136.6768\\-167\\-96.67969\\-136.0983\\-167\\-94.72656\\-135.3253\\-167\\-90.82031\\-134.4635\\-167\\-88.86719\\-133.8125\\-167\\-86.91406\\-133.3207\\-167\\-84.96094\\-133.0084\\-167\\-79.10156\\-132.2986\\-167\\-77.14844\\-131.762\\-167\\-75.19531\\-131.3957\\-167\\-71.28906\\-131.099\\-167\\-67.38281\\-130.9686\\-167\\-63.47656\\-130.9637\\-167\\-59.57031\\-131.1143\\-167\\-55.66406\\-131.4584\\-167\\-51.75781\\-132.3674\\-167\\-47.85156\\-132.9223\\-167\\-45.89844\\-133.3207\\-167\\-41.99219\\-134.7265\\-167\\-40.03906\\-135.3318\\-167\\-38.08594\\-136.3564\\-167\\-36.13281\\-137.183\\-167\\-32.22656\\-139.5298\\-167\\-30.27344\\-140.8895\\-167\\-27.11565\\-143.6172\\-167\\-24.41406\\-146.2332\\-167\\-22.46094\\-148.3173\\-167\\-19.96228\\-151.4297\\-167\\-18.98636\\-153.3828\\-167\\-17.77872\\-155.3359\\-167\\-16.9181\\-157.2891\\-167\\-15.84671\\-159.2422\\-167\\-15.18165\\-161.1953\\-167\\-14.20111\\-163.1484\\-167\\-13.70129\\-165.1016\\-167\\-13.31042\\-167.0547\\-167\\-12.24002\\-170.9609\\-167\\-11.93576\\-172.9141\\-167\\-11.4787\\-178.7734\\-167\\-11.2087\\-180.7266\\-167\\-10.6756\\-182.6797\\-167\\-10.31681\\-184.6328\\-167\\-9.994284\\-188.5391\\-167\\-9.61691\\-192.4453\\-167\\-9.397322\\-196.3516\\-167\\-9.27124\\-202.2109\\-167\\-9.211189\\-210.0234\\-167\\-9.268246\\-213.9297\\-167\\-9.38522\\-215.8828\\-167\\-9.595352\\-221.7422\\-167\\-9.728599\\-223.6953\\-167\\-9.867447\\-227.6016\\-167\\-10.27135\\-231.5078\\-167\\-11.2274\\-235.4141\\-167\\-11.99525\\-241.2734\\-167\\-12.40517\\-243.2266\\-167\\-13.09543\\-245.1797\\-167\\-13.86834\\-249.0859\\-167\\-14.34744\\-251.0391\\-167\\-15.10976\\-252.9922\\-167\\-16.20483\\-256.8984\\-167\\-17.1875\\-258.8516\\-167\\-17.78886\\-260.8047\\-167\\-18.86345\\-262.7578\\-167\\-20.14838\\-266.6641\\-167\\-21.24605\\-268.6172\\-167\\-22.08984\\-270.5703\\-167\\-23.34547\\-272.5234\\-167\\-25.4889\\-276.4297\\-167\\-26.77582\\-278.3828\\-167\\-27.83526\\-280.3359\\-167\\-29.45006\\-282.2891\\-167\\-31.18369\\-284.2422\\-167\\-32.22656\\-285.627\\-167\\-34.17969\\-288.0341\\-167\\-40.03906\\-293.6157\\-167\\-40.4971\\-294.0078\\-167\\-43.94531\\-296.476\\-167\\-45.89844\\-297.5741\\-167\\-47.85156\\-298.8579\\-167\\-49.80469\\-299.875\\-167\\-51.75781\\-300.7254\\-167\\-53.71094\\-301.2894\\-167\\-55.66406\\-302.0497\\-167\\-57.61719\\-302.6075\\-167\\-61.52344\\-303.136\\-167\\-65.48394\\-303.7734\\-167\\-67.38281\\-304.0092\\-167\\-69.33594\\-304.099\\-167\\-73.24219\\-304.0209\\-167"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002385"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "174"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-301.8284\\-167\\57.61719\\-301.2669\\-167\\55.66406\\-300.8209\\-167\\53.71094\\-300.2383\\-167\\51.75781\\-299.2064\\-167\\49.80469\\-298.3557\\-167\\47.85156\\-297.0696\\-167\\43.94531\\-294.8546\\-167\\40.23918\\-292.0547\\-167\\38.08594\\-290.0756\\-167\\36.13281\\-288.4352\\-167\\33.88445\\-286.1953\\-167\\30.76528\\-282.2891\\-167\\30.27344\\-281.7747\\-167\\27.59399\\-278.3828\\-167\\26.36719\\-276.3754\\-167\\25.31226\\-274.4766\\-167\\23.96746\\-272.5234\\-167\\22.99528\\-270.5703\\-167\\21.67411\\-268.6172\\-167\\19.81378\\-264.7109\\-167\\19.32026\\-262.7578\\-167\\17.80149\\-258.8516\\-167\\17.44792\\-256.8984\\-167\\16.90051\\-254.9453\\-167\\16.04432\\-252.9922\\-167\\15.48623\\-251.0391\\-167\\14.64075\\-249.0859\\-167\\13.95256\\-247.1328\\-167\\13.13612\\-243.2266\\-167\\12.50895\\-241.2734\\-167\\12.07886\\-239.3203\\-167\\11.85591\\-237.3672\\-167\\11.59068\\-233.4609\\-167\\11.28203\\-231.5078\\-167\\10.47165\\-227.6016\\-167\\10.19597\\-225.6484\\-167\\10.0297\\-221.7422\\-167\\9.87885\\-219.7891\\-167\\9.453588\\-211.9766\\-167\\9.305334\\-208.0703\\-167\\9.353164\\-204.1641\\-167\\9.280454\\-200.2578\\-167\\9.423553\\-192.4453\\-167\\9.784867\\-184.6328\\-167\\10.33579\\-178.7734\\-167\\11.14695\\-174.8672\\-167\\11.76652\\-170.9609\\-167\\12.14718\\-169.0078\\-167\\12.9115\\-167.0547\\-167\\13.55205\\-165.1016\\-167\\14.05165\\-163.1484\\-167\\15.05859\\-161.1953\\-167\\15.87469\\-159.2422\\-167\\17.13929\\-157.2891\\-167\\18.1425\\-155.3359\\-167\\20.50781\\-151.8898\\-167\\22.3508\\-149.4766\\-167\\24.41406\\-147.2082\\-167\\26.36719\\-145.392\\-167\\28.44881\\-143.6172\\-167\\32.22656\\-140.7331\\-167\\34.17969\\-139.4076\\-167\\36.13281\\-138.5307\\-167\\38.08594\\-137.2415\\-167\\40.03906\\-136.425\\-167\\41.99219\\-135.3853\\-167\\45.89844\\-134.1866\\-167\\47.85156\\-133.3633\\-167\\49.80469\\-133.0172\\-167\\51.75781\\-132.7823\\-167\\56.22746\\-131.8984\\-167\\61.52344\\-130.9404\\-167\\67.38281\\-130.7693\\-167\\69.33594\\-130.8745\\-167\\73.24219\\-130.94\\-167\\77.14844\\-131.5474\\-167\\79.10156\\-131.9699\\-167\\81.05469\\-132.2767\\-167\\84.96094\\-132.7364\\-167\\88.86719\\-133.0913\\-167\\90.82031\\-133.3499\\-167\\92.77344\\-133.7663\\-167\\94.72656\\-134.3028\\-167\\98.63281\\-135.0223\\-167\\100.5859\\-136.0382\\-167\\104.4922\\-136.7813\\-167\\108.3984\\-138.2496\\-167\\113.9147\\-139.7109\\-167\\116.2109\\-140.4336\\-167\\120.1172\\-141.3096\\-167\\122.0703\\-142.3694\\-167\\124.0234\\-142.8761\\-167\\125.9766\\-143.9881\\-167\\127.9297\\-144.6889\\-167\\131.8359\\-146.7352\\-167\\133.4588\\-147.5234\\-167\\135.7422\\-148.9017\\-167\\137.6953\\-150.254\\-167\\139.6169\\-151.4297\\-167\\143.5547\\-154.1716\\-167\\147.105\\-157.2891\\-167\\149.4141\\-159.4714\\-167\\151.3672\\-161.4937\\-167\\153.3203\\-163.74\\-167\\154.3464\\-165.1016\\-167\\157.2266\\-169.2767\\-167\\158.045\\-170.9609\\-167\\160.4167\\-174.8672\\-167\\161.1328\\-176.7629\\-167\\162.0096\\-178.7734\\-167\\162.2523\\-180.7266\\-167\\163.5544\\-182.6797\\-167\\163.7434\\-184.6328\\-167\\163.8744\\-188.5391\\-167\\165.136\\-190.4922\\-167\\165.3985\\-194.3984\\-167\\165.4934\\-198.3047\\-167\\165.5239\\-202.2109\\-167\\165.5031\\-206.1172\\-167\\165.42\\-211.9766\\-167\\165.1517\\-217.8359\\-167\\165.0042\\-219.7891\\-167\\163.7494\\-221.7422\\-167\\163.6955\\-227.6016\\-167\\163.6098\\-229.5547\\-167\\162.7407\\-231.5078\\-167\\162.2759\\-233.4609\\-167\\162.0672\\-235.4141\\-167\\160.7866\\-239.3203\\-167\\160.2766\\-241.2734\\-167\\159.3646\\-243.2266\\-167\\158.0889\\-247.1328\\-167\\156.1468\\-251.0391\\-167\\155.4672\\-252.9922\\-167\\153.3203\\-256.5544\\-167\\151.6493\\-258.8516\\-167\\150.4322\\-260.8047\\-167\\149.0217\\-262.7578\\-167\\148.0278\\-264.7109\\-167\\146.4716\\-266.6641\\-167\\144.6487\\-268.6172\\-167\\143.0995\\-270.5703\\-167\\141.676\\-272.5234\\-167\\139.6484\\-274.6607\\-167\\137.6849\\-276.4297\\-167\\135.7422\\-277.8906\\-167\\131.8359\\-281.3664\\-167\\129.8828\\-282.933\\-167\\127.9297\\-284.1278\\-167\\124.0234\\-287.1297\\-167\\122.0703\\-288.433\\-167\\120.1172\\-289.5267\\-167\\116.1606\\-292.0547\\-167\\112.5632\\-294.0078\\-167\\112.3047\\-294.2061\\-167\\108.3984\\-295.5571\\-167\\106.4453\\-296.4652\\-167\\102.5391\\-297.7011\\-167\\100.5859\\-298.7838\\-167\\98.63281\\-299.1886\\-167\\96.67969\\-300.048\\-167\\94.72656\\-300.6429\\-167\\92.77344\\-300.884\\-167\\90.82031\\-301.2726\\-167\\88.86719\\-301.875\\-167\\86.91406\\-302.1985\\-167\\83.00781\\-302.6582\\-167\\81.05469\\-302.8131\\-167\\75.19531\\-303.0565\\-167\\71.28906\\-302.9643\\-167\\67.38281\\-302.7469\\-167\\63.47656\\-302.461\\-167\\61.52344\\-302.2685\\-167"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002384"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "183"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-75.19531\\-303.9729\\-165\\-81.05469\\-303.136\\-165\\-86.91406\\-302.53\\-165\\-88.86719\\-302.1411\\-165\\-90.82031\\-301.5382\\-165\\-94.72656\\-300.6905\\-165\\-96.67969\\-300.1794\\-165\\-98.63281\\-299.3523\\-165\\-100.5859\\-298.7287\\-165\\-104.4922\\-296.9863\\-165\\-106.4453\\-296.2888\\-165\\-108.3984\\-295.2131\\-165\\-110.3516\\-294.5291\\-165\\-112.3047\\-293.3054\\-165\\-114.2578\\-292.2541\\-165\\-117.3944\\-290.1016\\-165\\-118.1641\\-289.4879\\-165\\-120.1172\\-288.3963\\-165\\-122.0703\\-286.8789\\-165\\-125.9766\\-283.2656\\-165\\-127.9297\\-281.5332\\-165\\-129.8828\\-279.5642\\-165\\-130.9257\\-278.3828\\-165\\-134.7461\\-274.4766\\-165\\-136.369\\-272.5234\\-165\\-137.6869\\-270.5703\\-165\\-139.1066\\-268.6172\\-165\\-140.6712\\-266.6641\\-165\\-142.0864\\-264.7109\\-165\\-143.0315\\-262.7578\\-165\\-144.3212\\-260.8047\\-165\\-145.5078\\-258.6696\\-165\\-147.4609\\-255.443\\-165\\-147.8254\\-254.9453\\-165\\-148.6217\\-252.9922\\-165\\-149.6601\\-251.0391\\-165\\-150.4608\\-249.0859\\-165\\-151.4619\\-247.1328\\-165\\-153.3582\\-243.2266\\-165\\-154.2127\\-241.2734\\-165\\-154.8733\\-239.3203\\-165\\-155.8018\\-237.3672\\-165\\-156.2968\\-235.4141\\-165\\-156.9081\\-233.4609\\-165\\-157.8159\\-231.5078\\-165\\-158.3344\\-229.5547\\-165\\-159.8362\\-225.6484\\-165\\-160.3027\\-223.6953\\-165\\-160.8869\\-221.7422\\-165\\-161.5851\\-219.7891\\-165\\-161.9724\\-217.8359\\-165\\-162.5089\\-213.9297\\-165\\-163.4069\\-210.0234\\-165\\-163.6801\\-208.0703\\-165\\-164.0421\\-202.2109\\-165\\-164.0778\\-198.3047\\-165\\-163.8892\\-194.3984\\-165\\-163.7042\\-192.4453\\-165\\-163.3085\\-190.4922\\-165\\-162.7189\\-188.5391\\-165\\-161.9948\\-184.6328\\-165\\-161.5329\\-182.6797\\-165\\-160.6638\\-180.7266\\-165\\-159.9823\\-178.7734\\-165\\-159.1797\\-177.1683\\-165\\-157.2266\\-173.6533\\-165\\-156.6695\\-172.9141\\-165\\-155.694\\-170.9609\\-165\\-154.3333\\-169.0078\\-165\\-152.7495\\-167.0547\\-165\\-147.8195\\-161.1953\\-165\\-145.5078\\-159.1504\\-165\\-143.5547\\-157.5625\\-165\\-140.9875\\-155.3359\\-165\\-137.6953\\-152.7741\\-165\\-135.7422\\-151.6423\\-165\\-133.7891\\-150.3928\\-165\\-131.8359\\-149.0263\\-165\\-129.8828\\-148.0806\\-165\\-127.9297\\-146.9131\\-165\\-125.9766\\-146.2652\\-165\\-124.0234\\-145.2309\\-165\\-122.0703\\-144.5386\\-165\\-118.1641\\-142.7839\\-165\\-116.2109\\-142.0612\\-165\\-114.2578\\-141.1511\\-165\\-110.3516\\-140.0602\\-165\\-108.3984\\-139.2328\\-165\\-104.4922\\-138.345\\-165\\-102.5391\\-137.5221\\-165\\-100.5859\\-136.9357\\-165\\-98.63281\\-136.4501\\-165\\-96.67969\\-135.6826\\-165\\-94.72656\\-135.0979\\-165\\-92.77344\\-134.683\\-165\\-90.82031\\-134.1515\\-165\\-88.86719\\-133.4733\\-165\\-86.91406\\-133.1084\\-165\\-83.00781\\-132.6528\\-165\\-81.05469\\-132.3447\\-165\\-77.14844\\-131.4399\\-165\\-75.19531\\-131.2118\\-165\\-71.28906\\-130.9637\\-165\\-67.38281\\-130.8515\\-165\\-61.52344\\-130.9266\\-165\\-57.61719\\-131.1416\\-165\\-55.66406\\-131.3114\\-165\\-53.71094\\-131.6358\\-165\\-51.75781\\-132.2101\\-165\\-49.80469\\-132.5867\\-165\\-47.85156\\-132.8282\\-165\\-45.89844\\-133.1692\\-165\\-43.94531\\-133.7663\\-165\\-41.99219\\-134.5752\\-165\\-40.03906\\-135.1864\\-165\\-38.08594\\-136.2251\\-165\\-36.13281\\-137.0557\\-165\\-34.17969\\-138.2145\\-165\\-32.22656\\-139.2227\\-165\\-30.27344\\-140.6228\\-165\\-28.32031\\-142.2676\\-165\\-24.41406\\-146.0329\\-165\\-22.46094\\-148.0907\\-165\\-19.77379\\-151.4297\\-165\\-16.59393\\-157.2891\\-165\\-15.67613\\-159.2422\\-165\\-14.97176\\-161.1953\\-165\\-14.05531\\-163.1484\\-165\\-13.1638\\-167.0547\\-165\\-12.50895\\-169.0078\\-165\\-12.05842\\-170.9609\\-165\\-11.8207\\-172.9141\\-165\\-11.32111\\-178.7734\\-165\\-10.95998\\-180.7266\\-165\\-10.46036\\-182.6797\\-165\\-10.18807\\-184.6328\\-165\\-9.936063\\-188.5391\\-165\\-9.401483\\-194.3984\\-165\\-9.188863\\-202.2109\\-165\\-9.191176\\-204.1641\\-165\\-9.078664\\-210.0234\\-165\\-9.138778\\-213.9297\\-165\\-9.363839\\-217.8359\\-165\\-9.490317\\-221.7422\\-165\\-9.671271\\-225.6484\\-165\\-9.944898\\-229.5547\\-165\\-10.18807\\-231.5078\\-165\\-10.5806\\-233.4609\\-165\\-11.1341\\-235.4141\\-165\\-11.46376\\-237.3672\\-165\\-11.96435\\-241.2734\\-165\\-12.33082\\-243.2266\\-165\\-13.03469\\-245.1797\\-165\\-13.83846\\-249.0859\\-165\\-14.31418\\-251.0391\\-165\\-15.09123\\-252.9922\\-165\\-16.18562\\-256.8984\\-165\\-17.18298\\-258.8516\\-165\\-17.77242\\-260.8047\\-165\\-18.82234\\-262.7578\\-165\\-20.15953\\-266.6641\\-165\\-21.26034\\-268.6172\\-165\\-22.13319\\-270.5703\\-165\\-23.38637\\-272.5234\\-165\\-25.54515\\-276.4297\\-165\\-26.81843\\-278.3828\\-165\\-27.88412\\-280.3359\\-165\\-29.47329\\-282.2891\\-165\\-31.17811\\-284.2422\\-165\\-34.17969\\-288.1032\\-165\\-40.03906\\-293.7952\\-165\\-43.94531\\-296.5928\\-165\\-47.85156\\-298.9789\\-165\\-49.80469\\-300.0974\\-165\\-51.75781\\-300.8261\\-165\\-53.71094\\-301.4146\\-165\\-55.66406\\-302.2012\\-165\\-57.61719\\-302.6648\\-165\\-61.52344\\-303.2302\\-165\\-65.42969\\-303.9221\\-165\\-67.38281\\-304.1302\\-165\\-69.33594\\-304.1988\\-165\\-73.24219\\-304.1095\\-165"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002384"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "170"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.0479\\-165\\57.61719\\-301.4037\\-165\\53.71094\\-300.3893\\-165\\51.75781\\-299.3665\\-165\\49.80469\\-298.5216\\-165\\47.85156\\-297.2251\\-165\\45.89844\\-296.2389\\-165\\43.94531\\-294.9906\\-165\\40.03906\\-292.2198\\-165\\36.13281\\-288.6973\\-165\\33.64258\\-286.1953\\-165\\32.02967\\-284.2422\\-165\\27.45028\\-278.3828\\-165\\26.15957\\-276.4297\\-165\\25.14648\\-274.4766\\-165\\23.76478\\-272.5234\\-165\\22.67718\\-270.5703\\-165\\21.48438\\-268.6172\\-165\\20.48438\\-266.6641\\-165\\19.69203\\-264.7109\\-165\\19.18292\\-262.7578\\-165\\18.27469\\-260.8047\\-165\\17.6959\\-258.8516\\-165\\17.32086\\-256.8984\\-165\\15.90545\\-252.9922\\-165\\15.35135\\-251.0391\\-165\\14.44322\\-249.0859\\-165\\13.84995\\-247.1328\\-165\\12.9996\\-243.2266\\-165\\12.35594\\-241.2734\\-165\\11.98033\\-239.3203\\-165\\11.46205\\-233.4609\\-165\\11.09669\\-231.5078\\-165\\10.5806\\-229.5547\\-165\\10.26257\\-227.6016\\-165\\10.05314\\-225.6484\\-165\\9.874659\\-221.7422\\-165\\9.492842\\-215.8828\\-165\\9.203942\\-211.9766\\-165\\9.057273\\-208.0703\\-165\\9.132544\\-202.2109\\-165\\9.103436\\-200.2578\\-165\\9.331597\\-194.3984\\-165\\9.359195\\-192.4453\\-165\\9.746755\\-184.6328\\-165\\10.24534\\-178.7734\\-165\\10.5806\\-176.8203\\-165\\11.07871\\-174.8672\\-165\\12.07886\\-169.0078\\-165\\12.85429\\-167.0547\\-165\\13.49706\\-165.1016\\-165\\13.9719\\-163.1484\\-165\\15.76987\\-159.2422\\-165\\16.97515\\-157.2891\\-165\\17.96646\\-155.3359\\-165\\20.50781\\-151.5016\\-165\\22.07661\\-149.4766\\-165\\24.41406\\-146.8993\\-165\\28.04487\\-143.6172\\-165\\30.56453\\-141.6641\\-165\\34.17969\\-139.1276\\-165\\36.13281\\-138.2756\\-165\\38.08594\\-137.0114\\-165\\40.03906\\-136.1616\\-165\\41.99219\\-135.1444\\-165\\43.94531\\-134.5885\\-165\\45.89844\\-133.7492\\-165\\47.85156\\-133.1191\\-165\\51.75781\\-132.5845\\-165\\55.66406\\-131.6015\\-165\\61.52344\\-130.7611\\-165\\65.42969\\-130.7187\\-165\\67.38281\\-130.6103\\-165\\71.28906\\-130.5854\\-165\\73.24219\\-130.7049\\-165\\75.19531\\-131.1685\\-165\\77.14844\\-131.3622\\-165\\80.92152\\-131.8984\\-165\\84.96094\\-132.6003\\-165\\88.86719\\-132.946\\-165\\92.77344\\-133.4983\\-165\\96.67969\\-134.4924\\-165\\100.5859\\-135.1858\\-165\\104.4922\\-136.4883\\-165\\106.4453\\-136.9644\\-165\\110.3516\\-138.2899\\-165\\114.2578\\-139.3023\\-165\\116.2109\\-140.022\\-165\\118.1641\\-140.5541\\-165\\120.1172\\-140.9716\\-165\\124.0234\\-142.5744\\-165\\125.9766\\-143.2767\\-165\\127.9297\\-144.3557\\-165\\129.8828\\-145.1282\\-165\\131.8359\\-146.3114\\-165\\133.7891\\-147.0918\\-165\\137.5631\\-149.4766\\-165\\140.5415\\-151.4297\\-165\\141.6016\\-152.2792\\-165\\145.5078\\-155.0381\\-165\\148.0469\\-157.2891\\-165\\151.3672\\-160.5221\\-165\\153.6823\\-163.1484\\-165\\155.2734\\-165.3108\\-165\\157.7981\\-169.0078\\-165\\158.9284\\-170.9609\\-165\\160.1799\\-172.9141\\-165\\161.3069\\-174.8672\\-165\\162.0848\\-176.8203\\-165\\162.7341\\-178.7734\\-165\\163.608\\-180.7266\\-165\\164.1315\\-182.6797\\-165\\164.5477\\-184.6328\\-165\\165.1057\\-186.5859\\-165\\165.8754\\-190.4922\\-165\\166.2099\\-194.3984\\-165\\166.4851\\-198.3047\\-165\\166.6302\\-202.2109\\-165\\166.6439\\-206.1172\\-165\\166.4683\\-210.0234\\-165\\166.0989\\-215.8828\\-165\\165.798\\-219.7891\\-165\\164.7699\\-225.6484\\-165\\164.2103\\-229.5547\\-165\\163.4831\\-233.4609\\-165\\162.7276\\-235.4141\\-165\\162.2106\\-237.3672\\-165\\161.8225\\-239.3203\\-165\\160.2153\\-243.2266\\-165\\159.5741\\-245.1797\\-165\\158.4417\\-247.1328\\-165\\157.7002\\-249.0859\\-165\\156.561\\-251.0391\\-165\\155.8878\\-252.9922\\-165\\154.655\\-254.9453\\-165\\153.6761\\-256.8984\\-165\\153.3203\\-257.317\\-165\\151.3672\\-260.184\\-165\\150.855\\-260.8047\\-165\\149.742\\-262.7578\\-165\\148.4058\\-264.7109\\-165\\146.8963\\-266.6641\\-165\\143.5547\\-270.6868\\-165\\142.1144\\-272.5234\\-165\\139.6484\\-275.0791\\-165\\135.7422\\-278.6692\\-165\\133.7796\\-280.3359\\-165\\131.8359\\-281.7558\\-165\\128.6901\\-284.2422\\-165\\125.9766\\-286.2341\\-165\\122.0703\\-288.8873\\-165\\120.1172\\-289.8972\\-165\\116.2109\\-292.444\\-165\\114.2578\\-293.351\\-165\\112.3047\\-294.4863\\-165\\110.3516\\-295.1248\\-165\\106.4453\\-296.8033\\-165\\104.4922\\-297.4102\\-165\\102.5391\\-298.4052\\-165\\98.63281\\-299.6386\\-165\\96.67969\\-300.3949\\-165\\94.72656\\-300.8209\\-165\\90.82031\\-301.5671\\-165\\88.86719\\-302.1246\\-165\\86.91406\\-302.461\\-165\\83.00781\\-302.7694\\-165\\75.19531\\-303.1282\\-165\\71.28906\\-303.071\\-165\\63.47656\\-302.6097\\-165\\61.52344\\-302.4315\\-165"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002383"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "176"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-77.14844\\-303.811\\-163\\-81.05469\\-303.1958\\-163\\-86.91406\\-302.6028\\-163\\-88.86719\\-302.2611\\-163\\-92.77344\\-301.1966\\-163\\-96.67969\\-300.3524\\-163\\-98.63281\\-299.5352\\-163\\-102.5391\\-298.1011\\-163\\-104.4922\\-297.0938\\-163\\-106.4453\\-296.446\\-163\\-108.3984\\-295.329\\-163\\-110.3516\\-294.6439\\-163\\-112.3047\\-293.4267\\-163\\-114.2578\\-292.4012\\-163\\-117.4993\\-290.1016\\-163\\-118.1641\\-289.5598\\-163\\-120.1172\\-288.5174\\-163\\-122.0703\\-286.9676\\-163\\-125.9766\\-283.3192\\-163\\-127.2374\\-282.2891\\-163\\-129.8828\\-279.6872\\-163\\-131.046\\-278.3828\\-163\\-134.8503\\-274.4766\\-163\\-136.489\\-272.5234\\-163\\-137.6953\\-270.8145\\-163\\-139.6484\\-268.2672\\-163\\-142.2373\\-264.7109\\-163\\-143.207\\-262.7578\\-163\\-143.5547\\-262.3122\\-163\\-145.5078\\-259.0841\\-163\\-146.7523\\-256.8984\\-163\\-148.0107\\-254.9453\\-163\\-148.7822\\-252.9922\\-163\\-149.9057\\-251.0391\\-163\\-150.6333\\-249.0859\\-163\\-151.7857\\-247.1328\\-163\\-152.5836\\-245.1797\\-163\\-153.6832\\-243.2266\\-163\\-155.1735\\-239.3203\\-163\\-156.0059\\-237.3672\\-163\\-156.4777\\-235.4141\\-163\\-157.3351\\-233.4609\\-163\\-158.0438\\-231.5078\\-163\\-158.6008\\-229.5547\\-163\\-159.5158\\-227.6016\\-163\\-160.5722\\-223.6953\\-163\\-161.315\\-221.7422\\-163\\-161.8304\\-219.7891\\-163\\-162.4042\\-215.8828\\-163\\-162.8059\\-213.9297\\-163\\-163.3478\\-211.9766\\-163\\-163.6963\\-210.0234\\-163\\-163.8892\\-208.0703\\-163\\-164.1555\\-204.1641\\-163\\-164.3163\\-200.2578\\-163\\-164.2333\\-196.3516\\-163\\-163.9326\\-192.4453\\-163\\-163.6801\\-190.4922\\-163\\-163.1851\\-188.5391\\-163\\-162.5551\\-186.5859\\-163\\-161.8189\\-182.6797\\-163\\-161.1328\\-180.873\\-163\\-159.4597\\-176.8203\\-163\\-159.1797\\-176.4461\\-163\\-155.9663\\-170.9609\\-163\\-153.3203\\-167.3031\\-163\\-149.8241\\-163.1484\\-163\\-147.4609\\-160.585\\-163\\-145.5078\\-158.8353\\-163\\-141.3261\\-155.3359\\-163\\-137.6953\\-152.5873\\-163\\-135.7422\\-151.3477\\-163\\-133.7891\\-150.2247\\-163\\-131.8359\\-148.8389\\-163\\-129.8828\\-147.8804\\-163\\-127.9297\\-146.7632\\-163\\-125.9766\\-146.155\\-163\\-124.0234\\-145.0756\\-163\\-122.0703\\-144.431\\-163\\-120.1172\\-143.4178\\-163\\-116.2109\\-141.8834\\-163\\-114.2578\\-141.0071\\-163\\-112.3047\\-140.4934\\-163\\-110.3516\\-139.857\\-163\\-108.3984\\-139.0831\\-163\\-106.4453\\-138.6786\\-163\\-104.4922\\-138.1417\\-163\\-102.5391\\-137.2753\\-163\\-98.63281\\-136.2042\\-163\\-96.67969\\-135.3932\\-163\\-92.77344\\-134.4806\\-163\\-88.86719\\-133.2798\\-163\\-86.91406\\-132.9643\\-163\\-83.00781\\-132.5232\\-163\\-79.10156\\-131.6475\\-163\\-77.14844\\-131.2814\\-163\\-75.19531\\-131.0973\\-163\\-71.28906\\-130.8608\\-163\\-67.38281\\-130.7679\\-163\\-63.47656\\-130.7926\\-163\\-57.61719\\-131.058\\-163\\-55.66406\\-131.2251\\-163\\-53.71094\\-131.5166\\-163\\-51.75781\\-132.0952\\-163\\-49.80469\\-132.5155\\-163\\-45.89844\\-133.0691\\-163\\-43.94531\\-133.5965\\-163\\-41.99219\\-134.4763\\-163\\-40.03906\\-135.096\\-163\\-38.08594\\-136.1004\\-163\\-36.13281\\-136.9184\\-163\\-34.17969\\-138.0858\\-163\\-32.22656\\-139.0621\\-163\\-30.27344\\-140.4566\\-163\\-28.73283\\-141.6641\\-163\\-26.66708\\-143.6172\\-163\\-22.46094\\-147.9066\\-163\\-19.61946\\-151.4297\\-163\\-18.47141\\-153.3828\\-163\\-17.48101\\-155.3359\\-163\\-16.33708\\-157.2891\\-163\\-13.9719\\-163.1484\\-163\\-13.0598\\-167.0547\\-163\\-12.34209\\-169.0078\\-163\\-11.95427\\-170.9609\\-163\\-11.18665\\-178.7734\\-163\\-10.32624\\-182.6797\\-163\\-10.09971\\-184.6328\\-163\\-9.871572\\-188.5391\\-163\\-9.513775\\-192.4453\\-163\\-9.396575\\-194.3984\\-163\\-9.289109\\-198.3047\\-163\\-9.140115\\-206.1172\\-163\\-9.078664\\-211.9766\\-163\\-9.355918\\-217.8359\\-163\\-9.473179\\-221.7422\\-163\\-9.950508\\-229.5547\\-163\\-10.18025\\-231.5078\\-163\\-10.5806\\-233.4609\\-163\\-11.14695\\-235.4141\\-163\\-11.46376\\-237.3672\\-163\\-11.95427\\-241.2734\\-163\\-12.37916\\-243.2266\\-163\\-13.07091\\-245.1797\\-163\\-13.83846\\-249.0859\\-163\\-14.29036\\-251.0391\\-163\\-15.06958\\-252.9922\\-163\\-16.27604\\-256.8984\\-163\\-17.27598\\-258.8516\\-163\\-17.83539\\-260.8047\\-163\\-18.91043\\-262.7578\\-163\\-20.26013\\-266.6641\\-163\\-22.46094\\-270.7345\\-163\\-24.41406\\-274.1271\\-163\\-24.69829\\-274.4766\\-163\\-25.6633\\-276.4297\\-163\\-26.93899\\-278.3828\\-163\\-28.02459\\-280.3359\\-163\\-29.54889\\-282.2891\\-163\\-31.21405\\-284.2422\\-163\\-34.17969\\-288.0341\\-163\\-38.08594\\-291.9826\\-163\\-40.17857\\-294.0078\\-163\\-41.99219\\-295.2055\\-163\\-43.94531\\-296.6683\\-163\\-45.89844\\-297.9368\\-163\\-49.80469\\-300.2277\\-163\\-53.71094\\-301.5138\\-163\\-55.66406\\-302.3186\\-163\\-57.61719\\-302.7065\\-163\\-59.57031\\-302.98\\-163\\-65.42969\\-304.044\\-163\\-67.38281\\-304.2081\\-163\\-69.33594\\-304.2617\\-163\\-73.24219\\-304.1894\\-163\\-75.19531\\-304.0664\\-163"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002383"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "180"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.1646\\-163\\57.61719\\-301.5138\\-163\\53.71094\\-300.4924\\-163\\51.75781\\-299.5151\\-163\\49.80469\\-298.6384\\-163\\47.85156\\-297.3659\\-163\\45.89844\\-296.403\\-163\\42.28899\\-294.0078\\-163\\40.03906\\-292.4141\\-163\\36.13281\\-288.8605\\-163\\33.47736\\-286.1953\\-163\\31.83741\\-284.2422\\-163\\30.27344\\-282.2455\\-163\\27.34375\\-278.3828\\-163\\26.02466\\-276.4297\\-163\\25.02359\\-274.4766\\-163\\24.41406\\-273.7382\\-163\\22.40753\\-270.5703\\-163\\20.29803\\-266.6641\\-163\\19.61411\\-264.7109\\-163\\19.07854\\-262.7578\\-163\\18.12275\\-260.8047\\-163\\17.17169\\-256.8984\\-163\\16.33103\\-254.9453\\-163\\15.19739\\-251.0391\\-163\\14.28553\\-249.0859\\-163\\13.77589\\-247.1328\\-163\\12.86677\\-243.2266\\-163\\12.24002\\-241.2734\\-163\\11.89732\\-239.3203\\-163\\11.30281\\-233.4609\\-163\\10.36516\\-229.5547\\-163\\9.973204\\-225.6484\\-163\\9.61691\\-219.7891\\-163\\9.160156\\-213.9297\\-163\\8.942106\\-211.9766\\-163\\8.842889\\-210.0234\\-163\\8.766352\\-206.1172\\-163\\8.781433\\-204.1641\\-163\\8.926505\\-200.2578\\-163\\9.306408\\-194.3984\\-163\\9.522749\\-188.5391\\-163\\9.775061\\-184.6328\\-163\\10.2285\\-178.7734\\-163\\10.53049\\-176.8203\\-163\\11.02218\\-174.8672\\-163\\11.39884\\-172.9141\\-163\\12.03435\\-169.0078\\-163\\13.44883\\-165.1016\\-163\\13.92917\\-163.1484\\-163\\15.71038\\-159.2422\\-163\\16.87168\\-157.2891\\-163\\17.88364\\-155.3359\\-163\\19.1945\\-153.3828\\-163\\20.40375\\-151.4297\\-163\\21.92993\\-149.4766\\-163\\24.41406\\-146.7695\\-163\\27.80512\\-143.6172\\-163\\30.27344\\-141.6085\\-163\\34.17969\\-138.9754\\-163\\36.13281\\-138.0544\\-163\\38.08594\\-136.8666\\-163\\40.12451\\-135.8047\\-163\\41.99219\\-134.9837\\-163\\43.94531\\-134.3631\\-163\\45.89844\\-133.4371\\-163\\47.85156\\-132.9775\\-163\\51.75781\\-132.3669\\-163\\53.71094\\-131.7891\\-163\\55.66406\\-131.3509\\-163\\59.57031\\-130.9421\\-163\\63.47656\\-130.6994\\-163\\67.38281\\-130.5829\\-163\\71.28906\\-130.6301\\-163\\73.24219\\-130.7438\\-163\\75.19531\\-131.0421\\-163\\79.10156\\-131.3788\\-163\\81.05469\\-131.6015\\-163\\84.96094\\-132.4755\\-163\\90.82031\\-133.0642\\-163\\92.77344\\-133.3533\\-163\\94.72656\\-133.7663\\-163\\96.67969\\-134.33\\-163\\100.5859\\-135.0439\\-163\\102.5391\\-135.5323\\-163\\104.4922\\-136.3022\\-163\\108.3984\\-137.3463\\-163\\110.3516\\-138.1442\\-163\\112.3047\\-138.7057\\-163\\114.2578\\-139.062\\-163\\118.1641\\-140.3851\\-163\\120.1172\\-140.811\\-163\\122.0703\\-141.4952\\-163\\124.0234\\-142.3979\\-163\\125.9766\\-143.0798\\-163\\127.9297\\-144.1725\\-163\\129.8828\\-144.9012\\-163\\131.8359\\-146.0514\\-163\\133.7891\\-146.8353\\-163\\135.7422\\-148.1039\\-163\\137.6953\\-149.1487\\-163\\139.6484\\-150.622\\-163\\140.8936\\-151.4297\\-163\\141.6016\\-152.0544\\-163\\143.5547\\-153.3743\\-163\\145.5078\\-154.8062\\-163\\148.32\\-157.2891\\-163\\151.3672\\-160.2911\\-163\\153.905\\-163.1484\\-163\\155.4255\\-165.1016\\-163\\156.6476\\-167.0547\\-163\\157.2266\\-167.7595\\-163\\159.1797\\-170.8389\\-163\\161.522\\-174.8672\\-163\\162.2354\\-176.8203\\-163\\163.8224\\-180.7266\\-163\\164.2765\\-182.6797\\-163\\165.4644\\-186.5859\\-163\\166.0004\\-190.4922\\-163\\166.4265\\-194.3984\\-163\\166.923\\-200.2578\\-163\\167.0588\\-204.1641\\-163\\167.0298\\-206.1172\\-163\\166.8181\\-210.0234\\-163\\166.3392\\-215.8828\\-163\\165.7986\\-221.7422\\-163\\165.5587\\-223.6953\\-163\\165.2135\\-225.6484\\-163\\164.7044\\-227.6016\\-163\\163.6311\\-233.4609\\-163\\162.8698\\-235.4141\\-163\\162.2962\\-237.3672\\-163\\161.9177\\-239.3203\\-163\\161.202\\-241.2734\\-163\\160.3328\\-243.2266\\-163\\159.677\\-245.1797\\-163\\158.5305\\-247.1328\\-163\\157.7919\\-249.0859\\-163\\156.6115\\-251.0391\\-163\\155.9476\\-252.9922\\-163\\154.7126\\-254.9453\\-163\\153.7685\\-256.8984\\-163\\153.3203\\-257.4483\\-163\\151.3672\\-260.3417\\-163\\150.978\\-260.8047\\-163\\149.8504\\-262.7578\\-163\\147.4609\\-266.0663\\-163\\145.5078\\-268.4753\\-163\\143.5547\\-270.7864\\-163\\142.1724\\-272.5234\\-163\\139.6484\\-275.1344\\-163\\138.2025\\-276.4297\\-163\\135.7422\\-278.7921\\-163\\133.7891\\-280.51\\-163\\131.8359\\-281.8464\\-163\\128.8354\\-284.2422\\-163\\125.9766\\-286.4272\\-163\\124.0234\\-287.6534\\-163\\122.0703\\-288.981\\-163\\118.1641\\-291.2153\\-163\\116.2109\\-292.5703\\-163\\114.2578\\-293.4524\\-163\\112.3047\\-294.5938\\-163\\110.3516\\-295.2007\\-163\\108.3984\\-296.1459\\-163\\104.4922\\-297.5247\\-163\\102.5391\\-298.5121\\-163\\100.5859\\-299.0721\\-163\\98.54562\\-299.8672\\-163\\96.67969\\-300.4929\\-163\\92.77344\\-301.2433\\-163\\88.86719\\-302.2012\\-163\\86.91406\\-302.53\\-163\\84.96094\\-302.689\\-163\\79.10156\\-303.0133\\-163\\75.19531\\-303.172\\-163\\73.24219\\-303.1958\\-163\\69.33594\\-303.0637\\-163\\63.47656\\-302.7003\\-163\\61.52344\\-302.5222\\-163"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002382"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "178"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-77.14844\\-303.8682\\-161\\-81.05469\\-303.2424\\-161\\-86.91406\\-302.6466\\-161\\-88.86719\\-302.3477\\-161\\-92.77344\\-301.293\\-161\\-96.67969\\-300.465\\-161\\-102.5391\\-298.2606\\-161\\-104.4922\\-297.1845\\-161\\-106.4453\\-296.553\\-161\\-108.3984\\-295.4361\\-161\\-110.3516\\-294.7198\\-161\\-112.3047\\-293.5164\\-161\\-114.2578\\-292.492\\-161\\-117.57\\-290.1016\\-161\\-118.1641\\-289.603\\-161\\-120.1172\\-288.577\\-161\\-122.0703\\-287.0459\\-161\\-125.9766\\-283.3854\\-161\\-127.4063\\-282.2891\\-161\\-129.8828\\-279.8858\\-161\\-131.2188\\-278.3828\\-161\\-133.1357\\-276.4297\\-161\\-134.9438\\-274.4766\\-161\\-136.5819\\-272.5234\\-161\\-139.6484\\-268.538\\-161\\-142.3815\\-264.7109\\-161\\-143.4026\\-262.7578\\-161\\-144.6006\\-260.8047\\-161\\-145.9227\\-258.8516\\-161\\-146.9534\\-256.8984\\-161\\-148.1841\\-254.9453\\-161\\-148.9702\\-252.9922\\-161\\-150.1169\\-251.0391\\-161\\-150.8494\\-249.0859\\-161\\-152.031\\-247.1328\\-161\\-152.8258\\-245.1797\\-161\\-153.9208\\-243.2266\\-161\\-154.5874\\-241.2734\\-161\\-155.5304\\-239.3203\\-161\\-156.1726\\-237.3672\\-161\\-156.6992\\-235.4141\\-161\\-157.6613\\-233.4609\\-161\\-158.2391\\-231.5078\\-161\\-158.9373\\-229.5547\\-161\\-159.7744\\-227.6016\\-161\\-160.8646\\-223.6953\\-161\\-161.5982\\-221.7422\\-161\\-162.0094\\-219.7891\\-161\\-162.6143\\-215.8828\\-161\\-163.1995\\-213.9297\\-161\\-163.6431\\-211.9766\\-161\\-163.883\\-210.0234\\-161\\-164.2314\\-206.1172\\-161\\-164.5146\\-202.2109\\-161\\-164.5917\\-198.3047\\-161\\-164.3204\\-194.3984\\-161\\-163.9147\\-190.4922\\-161\\-163.568\\-188.5391\\-161\\-162.9118\\-186.5859\\-161\\-162.3706\\-184.6328\\-161\\-162.0255\\-182.6797\\-161\\-161.4746\\-180.7266\\-161\\-160.5164\\-178.7734\\-161\\-159.782\\-176.8203\\-161\\-158.5032\\-174.8672\\-161\\-157.4288\\-172.9141\\-161\\-156.1862\\-170.9609\\-161\\-154.7654\\-169.0078\\-161\\-153.4641\\-167.0547\\-161\\-150.0583\\-163.1484\\-161\\-147.4609\\-160.3988\\-161\\-145.5078\\-158.6301\\-161\\-141.6016\\-155.2817\\-161\\-137.6953\\-152.4318\\-161\\-135.7422\\-151.1174\\-161\\-133.7891\\-150.0442\\-161\\-131.8359\\-148.6964\\-161\\-127.9297\\-146.6561\\-161\\-125.9766\\-146.0142\\-161\\-124.0234\\-144.9456\\-161\\-122.0703\\-144.3131\\-161\\-120.1172\\-143.2402\\-161\\-118.1641\\-142.5279\\-161\\-114.2578\\-140.9026\\-161\\-112.3047\\-140.3808\\-161\\-108.3984\\-138.962\\-161\\-106.4453\\-138.5716\\-161\\-104.4922\\-137.9016\\-161\\-102.5391\\-137.098\\-161\\-100.5859\\-136.6141\\-161\\-96.67969\\-135.2007\\-161\\-92.77344\\-134.2805\\-161\\-90.82031\\-133.6002\\-161\\-88.86719\\-133.1408\\-161\\-84.96094\\-132.6762\\-161\\-83.00781\\-132.3705\\-161\\-81.05469\\-131.8459\\-161\\-77.14844\\-131.1823\\-161\\-73.24219\\-130.8752\\-161\\-69.33594\\-130.7158\\-161\\-63.47656\\-130.7314\\-161\\-59.57031\\-130.8845\\-161\\-55.66406\\-131.1514\\-161\\-53.71094\\-131.4043\\-161\\-49.80469\\-132.418\\-161\\-45.89844\\-133.0136\\-161\\-43.94531\\-133.4819\\-161\\-41.99219\\-134.3906\\-161\\-40.03906\\-135.0334\\-161\\-36.13281\\-136.8763\\-161\\-34.17969\\-137.9925\\-161\\-32.22656\\-138.9622\\-161\\-28.49212\\-141.6641\\-161\\-26.44231\\-143.6172\\-161\\-22.46094\\-147.7656\\-161\\-19.55645\\-151.4297\\-161\\-18.31055\\-153.3828\\-161\\-17.37723\\-155.3359\\-161\\-16.20206\\-157.2891\\-161\\-15.44596\\-159.2422\\-161\\-14.58135\\-161.1953\\-161\\-13.94087\\-163.1484\\-161\\-12.98757\\-167.0547\\-161\\-12.25322\\-169.0078\\-161\\-11.89076\\-170.9609\\-161\\-11.31766\\-176.8203\\-161\\-11.04526\\-178.7734\\-161\\-10.20397\\-182.6797\\-161\\-10.00855\\-184.6328\\-161\\-9.784138\\-188.5391\\-161\\-9.496942\\-192.4453\\-161\\-9.384246\\-196.3516\\-161\\-9.349575\\-202.2109\\-161\\-9.185987\\-208.0703\\-161\\-9.188565\\-213.9297\\-161\\-9.38707\\-217.8359\\-161\\-9.52657\\-221.7422\\-161\\-9.862439\\-225.6484\\-161\\-9.863281\\-227.6016\\-161\\-10.2285\\-231.5078\\-161\\-11.2087\\-235.4141\\-161\\-12.00701\\-241.2734\\-161\\-12.52254\\-243.2266\\-161\\-13.1638\\-245.1797\\-161\\-13.88442\\-249.0859\\-161\\-14.32512\\-251.0391\\-161\\-15.11261\\-252.9922\\-161\\-15.72414\\-254.9453\\-161\\-16.46613\\-256.8984\\-161\\-17.38178\\-258.8516\\-161\\-17.95069\\-260.8047\\-161\\-19.02636\\-262.7578\\-161\\-19.62595\\-264.7109\\-161\\-20.43915\\-266.6641\\-161\\-21.46792\\-268.6172\\-161\\-24.41406\\-273.863\\-161\\-24.89224\\-274.4766\\-161\\-25.78922\\-276.4297\\-161\\-27.07351\\-278.3828\\-161\\-28.22414\\-280.3359\\-161\\-29.65431\\-282.2891\\-161\\-32.86683\\-286.1953\\-161\\-34.17969\\-287.9343\\-161\\-36.13281\\-289.8998\\-161\\-38.08594\\-291.9821\\-161\\-40.12277\\-294.0078\\-161\\-41.99219\\-295.2423\\-161\\-43.94531\\-296.7361\\-161\\-45.89844\\-298.0638\\-161\\-49.80469\\-300.3271\\-161\\-53.71094\\-301.6041\\-161\\-55.66406\\-302.37\\-161\\-59.57031\\-303.027\\-161\\-63.47656\\-303.7961\\-161\\-65.42969\\-304.1095\\-161\\-69.33594\\-304.2871\\-161\\-73.24219\\-304.2264\\-161\\-75.19531\\-304.12\\-161"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002382"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "176"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "16"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.2369\\-161\\57.61719\\-301.5927\\-161\\53.71094\\-300.5748\\-161\\49.80469\\-298.7261\\-161\\47.85156\\-297.4852\\-161\\45.89844\\-296.5217\\-161\\43.94531\\-295.1913\\-161\\42.04413\\-294.0078\\-161\\40.03906\\-292.5462\\-161\\35.2382\\-288.1484\\-161\\33.35286\\-286.1953\\-161\\30.16076\\-282.2891\\-161\\28.32031\\-279.8561\\-161\\25.91378\\-276.4297\\-161\\24.91259\\-274.4766\\-161\\24.41406\\-273.897\\-161\\22.22909\\-270.5703\\-161\\21.29245\\-268.6172\\-161\\20.18458\\-266.6641\\-161\\19.01307\\-262.7578\\-161\\18.01934\\-260.8047\\-161\\16.98589\\-256.8984\\-161\\16.11328\\-254.9453\\-161\\15.63965\\-252.9922\\-161\\15.03276\\-251.0391\\-161\\14.15094\\-249.0859\\-161\\13.29385\\-245.1797\\-161\\12.13458\\-241.2734\\-161\\11.84353\\-239.3203\\-161\\11.43895\\-235.4141\\-161\\11.11577\\-233.4609\\-161\\10.59358\\-231.5078\\-161\\10.21205\\-229.5547\\-161\\10.02441\\-227.6016\\-161\\9.494067\\-219.7891\\-161\\9.173388\\-215.8828\\-161\\8.766352\\-211.9766\\-161\\8.640455\\-210.0234\\-161\\8.57736\\-204.1641\\-161\\8.751502\\-200.2578\\-161\\9.25948\\-194.3984\\-161\\9.539103\\-188.5391\\-161\\10.23687\\-178.7734\\-161\\10.51839\\-176.8203\\-161\\11.0338\\-174.8672\\-161\\11.41357\\-172.9141\\-161\\12.03435\\-169.0078\\-161\\13.40942\\-165.1016\\-161\\13.88239\\-163.1484\\-161\\14.64844\\-161.2671\\-161\\15.66256\\-159.2422\\-161\\16.79402\\-157.2891\\-161\\17.79812\\-155.3359\\-161\\19.1215\\-153.3828\\-161\\20.31558\\-151.4297\\-161\\21.80364\\-149.4766\\-161\\24.41406\\-146.6593\\-161\\27.6331\\-143.6172\\-161\\30.27344\\-141.4127\\-161\\34.17969\\-138.8662\\-161\\39.75866\\-135.8047\\-161\\40.03906\\-135.6053\\-161\\43.94531\\-134.1232\\-161\\45.89844\\-133.2591\\-161\\49.80469\\-132.5679\\-161\\51.75781\\-132.1261\\-161\\53.71094\\-131.537\\-161\\55.66406\\-131.1943\\-161\\59.57031\\-130.8532\\-161\\61.52344\\-130.8174\\-161\\65.42969\\-130.5647\\-161\\67.38281\\-130.5571\\-161\\71.28906\\-130.7019\\-161\\79.10156\\-131.2352\\-161\\81.05469\\-131.4399\\-161\\83.00781\\-131.8313\\-161\\84.96094\\-132.3435\\-161\\86.91406\\-132.6146\\-161\\90.82031\\-132.9709\\-161\\92.77344\\-133.2152\\-161\\94.72656\\-133.5593\\-161\\96.67969\\-134.1417\\-161\\98.63281\\-134.5782\\-161\\102.5391\\-135.3134\\-161\\104.4922\\-136.071\\-161\\106.4453\\-136.6578\\-161\\108.3984\\-137.1348\\-161\\110.3516\\-137.9051\\-161\\112.3047\\-138.5678\\-161\\114.2578\\-138.9167\\-161\\116.2109\\-139.4267\\-161\\118.1641\\-140.2026\\-161\\120.1172\\-140.6816\\-161\\122.0703\\-141.2721\\-161\\124.0234\\-142.2195\\-161\\125.9766\\-142.9173\\-161\\127.9297\\-143.945\\-161\\129.8828\\-144.7158\\-161\\131.8359\\-145.7641\\-161\\133.7891\\-146.6618\\-161\\135.7422\\-147.8245\\-161\\137.6953\\-148.877\\-161\\141.6016\\-151.7969\\-161\\143.5547\\-153.0829\\-161\\145.5078\\-154.5736\\-161\\148.5021\\-157.2891\\-161\\151.3672\\-160.1254\\-161\\154.1451\\-163.1484\\-161\\155.6858\\-165.1016\\-161\\156.8585\\-167.0547\\-161\\157.2266\\-167.4897\\-161\\159.1797\\-170.5548\\-161\\159.5123\\-170.9609\\-161\\160.4701\\-172.9141\\-161\\161.656\\-174.8672\\-161\\162.3403\\-176.8203\\-161\\163.2709\\-178.7734\\-161\\163.9192\\-180.7266\\-161\\164.3823\\-182.6797\\-161\\165.0618\\-184.6328\\-161\\165.5963\\-186.5859\\-161\\166.58\\-194.3984\\-161\\166.9843\\-198.3047\\-161\\167.1276\\-200.2578\\-161\\167.2664\\-204.1641\\-161\\167.1805\\-208.0703\\-161\\167.0869\\-210.0234\\-161\\165.7195\\-223.6953\\-161\\165.4061\\-225.6484\\-161\\164.4129\\-229.5547\\-161\\163.6847\\-233.4609\\-161\\162.3352\\-237.3672\\-161\\161.9605\\-239.3203\\-161\\161.2882\\-241.2734\\-161\\160.3933\\-243.2266\\-161\\159.715\\-245.1797\\-161\\158.565\\-247.1328\\-161\\157.8193\\-249.0859\\-161\\156.6202\\-251.0391\\-161\\155.9602\\-252.9922\\-161\\154.7486\\-254.9453\\-161\\153.792\\-256.8984\\-161\\153.3203\\-257.4911\\-161\\151.3672\\-260.4192\\-161\\151.0392\\-260.8047\\-161\\149.8956\\-262.7578\\-161\\147.4609\\-266.0951\\-161\\142.1724\\-272.5234\\-161\\139.6484\\-275.1253\\-161\\138.1797\\-276.4297\\-161\\135.7422\\-278.7951\\-161\\133.7891\\-280.5388\\-161\\131.8359\\-281.8941\\-161\\128.9063\\-284.2422\\-161\\125.9766\\-286.5231\\-161\\122.0703\\-289.0323\\-161\\118.1641\\-291.2612\\-161\\116.2109\\-292.6323\\-161\\114.2578\\-293.5227\\-161\\112.3047\\-294.6526\\-161\\110.3516\\-295.249\\-161\\108.3984\\-296.2369\\-161\\104.4922\\-297.6301\\-161\\102.5391\\-298.5848\\-161\\100.5859\\-299.1485\\-161\\98.63281\\-299.9634\\-161\\96.67969\\-300.5548\\-161\\92.77344\\-301.293\\-161\\88.86719\\-302.2611\\-161\\86.91406\\-302.5646\\-161\\83.00781\\-302.84\\-161\\75.19531\\-303.2128\\-161\\71.28906\\-303.2302\\-161\\69.33594\\-303.144\\-161\\63.47656\\-302.7522\\-161\\61.52344\\-302.5765\\-161"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002381"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "181"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-77.14844\\-303.9221\\-159\\-81.05469\\-303.2914\\-159\\-83.00781\\-303.0565\\-159\\-86.91406\\-302.689\\-159\\-88.86719\\-302.4139\\-159\\-92.77344\\-301.3619\\-159\\-96.67969\\-300.5589\\-159\\-98.63281\\-299.8903\\-159\\-100.5859\\-299.0534\\-159\\-102.5391\\-298.3877\\-159\\-104.4922\\-297.269\\-159\\-106.4453\\-296.6257\\-159\\-108.3984\\-295.5277\\-159\\-110.3516\\-294.7928\\-159\\-112.3047\\-293.5874\\-159\\-114.2578\\-292.5604\\-159\\-118.1641\\-289.6621\\-159\\-120.1172\\-288.6367\\-159\\-122.0703\\-287.0894\\-159\\-125.9766\\-283.5002\\-159\\-127.493\\-282.2891\\-159\\-129.8828\\-279.9815\\-159\\-131.3194\\-278.3828\\-159\\-133.2545\\-276.4297\\-159\\-135.7422\\-273.6875\\-159\\-137.6953\\-271.1719\\-159\\-139.8161\\-268.6172\\-159\\-141.1036\\-266.6641\\-159\\-142.5093\\-264.7109\\-159\\-144.7397\\-260.8047\\-159\\-146.103\\-258.8516\\-159\\-148.3392\\-254.9453\\-159\\-149.2233\\-252.9922\\-159\\-150.2708\\-251.0391\\-159\\-151.1361\\-249.0859\\-159\\-152.237\\-247.1328\\-159\\-154.1051\\-243.2266\\-159\\-154.7985\\-241.2734\\-159\\-155.785\\-239.3203\\-159\\-156.3155\\-237.3672\\-159\\-156.9843\\-235.4141\\-159\\-157.8829\\-233.4609\\-159\\-158.4432\\-231.5078\\-159\\-159.3541\\-229.5547\\-159\\-160.5067\\-225.6484\\-159\\-161.2312\\-223.6953\\-159\\-161.7942\\-221.7422\\-159\\-162.4453\\-217.8359\\-159\\-162.9132\\-215.8828\\-159\\-163.5164\\-213.9297\\-159\\-163.8318\\-211.9766\\-159\\-164.2589\\-208.0703\\-159\\-164.8452\\-202.2109\\-159\\-164.9558\\-198.3047\\-159\\-164.3638\\-192.4453\\-159\\-163.8156\\-188.5391\\-159\\-163.3599\\-186.5859\\-159\\-162.611\\-184.6328\\-159\\-161.7479\\-180.7266\\-159\\-160.0018\\-176.8203\\-159\\-157.7272\\-172.9141\\-159\\-155.0038\\-169.0078\\-159\\-153.7598\\-167.0547\\-159\\-149.4141\\-162.2509\\-159\\-147.4609\\-160.2391\\-159\\-141.6016\\-155.0009\\-159\\-139.6484\\-153.7411\\-159\\-135.7422\\-150.9477\\-159\\-133.7891\\-149.8552\\-159\\-131.8359\\-148.5705\\-159\\-129.8828\\-147.4679\\-159\\-127.9297\\-146.565\\-159\\-125.9766\\-145.8293\\-159\\-124.0234\\-144.8277\\-159\\-122.0703\\-144.1884\\-159\\-120.1172\\-143.1035\\-159\\-118.1641\\-142.402\\-159\\-116.2109\\-141.4603\\-159\\-114.2578\\-140.7915\\-159\\-112.3047\\-140.2477\\-159\\-110.3516\\-139.4267\\-159\\-108.3984\\-138.8681\\-159\\-106.4453\\-138.4537\\-159\\-104.4922\\-137.6357\\-159\\-102.5391\\-136.9653\\-159\\-100.5859\\-136.4576\\-159\\-98.63281\\-135.6177\\-159\\-96.67969\\-135.0655\\-159\\-94.72656\\-134.6181\\-159\\-92.77344\\-134.0629\\-159\\-90.82031\\-133.4034\\-159\\-88.86719\\-133.0378\\-159\\-84.96094\\-132.5985\\-159\\-83.00781\\-132.2378\\-159\\-81.05469\\-131.6837\\-159\\-77.14844\\-131.1201\\-159\\-75.19531\\-130.9451\\-159\\-71.28906\\-130.7137\\-159\\-67.38281\\-130.6289\\-159\\-63.47656\\-130.6853\\-159\\-59.57031\\-130.8266\\-159\\-55.66406\\-131.1012\\-159\\-53.71094\\-131.3114\\-159\\-51.75781\\-131.762\\-159\\-49.80469\\-132.3244\\-159\\-45.89844\\-132.9654\\-159\\-43.94531\\-133.3836\\-159\\-41.99219\\-134.3201\\-159\\-40.03906\\-134.9826\\-159\\-38.19719\\-135.8047\\-159\\-36.13281\\-136.8432\\-159\\-34.17969\\-137.9774\\-159\\-32.22656\\-138.9464\\-159\\-28.38604\\-141.6641\\-159\\-26.25775\\-143.6172\\-159\\-22.46094\\-147.7378\\-159\\-19.55645\\-151.4297\\-159\\-18.27272\\-153.3828\\-159\\-17.35233\\-155.3359\\-159\\-16.14092\\-157.2891\\-159\\-15.41103\\-159.2422\\-159\\-14.55226\\-161.1953\\-159\\-13.92183\\-163.1484\\-159\\-12.96099\\-167.0547\\-159\\-12.22997\\-169.0078\\-159\\-11.87785\\-170.9609\\-159\\-11.25458\\-176.8203\\-159\\-10.46036\\-180.7266\\-159\\-10.12074\\-182.6797\\-159\\-9.943182\\-184.6328\\-159\\-9.703998\\-188.5391\\-159\\-9.520206\\-192.4453\\-159\\-9.463103\\-196.3516\\-159\\-9.512247\\-202.2109\\-159\\-9.309506\\-208.0703\\-159\\-9.358724\\-210.0234\\-159\\-9.265287\\-213.9297\\-159\\-9.479929\\-219.7891\\-159\\-9.90576\\-225.6484\\-159\\-9.928386\\-227.6016\\-159\\-10.36516\\-231.5078\\-159\\-10.88066\\-233.4609\\-159\\-11.29597\\-235.4141\\-159\\-11.80413\\-239.3203\\-159\\-12.10814\\-241.2734\\-159\\-12.75044\\-243.2266\\-159\\-13.28891\\-245.1797\\-159\\-13.96833\\-249.0859\\-159\\-14.44615\\-251.0391\\-159\\-15.26019\\-252.9922\\-159\\-15.84371\\-254.9453\\-159\\-16.72454\\-256.8984\\-159\\-17.49342\\-258.8516\\-159\\-18.11023\\-260.8047\\-159\\-19.16105\\-262.7578\\-159\\-19.72297\\-264.7109\\-159\\-21.58746\\-268.6172\\-159\\-22.78426\\-270.5703\\-159\\-23.74752\\-272.5234\\-159\\-25.03319\\-274.4766\\-159\\-25.90315\\-276.4297\\-159\\-28.32031\\-280.1747\\-159\\-29.77856\\-282.2891\\-159\\-32.96371\\-286.1953\\-159\\-34.17969\\-287.8201\\-159\\-36.13281\\-289.8125\\-159\\-38.08594\\-291.9498\\-159\\-40.10417\\-294.0078\\-159\\-41.99219\\-295.2625\\-159\\-43.94531\\-296.7989\\-159\\-45.89844\\-298.1548\\-159\\-47.85156\\-299.2102\\-159\\-49.80469\\-300.3835\\-159\\-51.75781\\-300.9875\\-159\\-55.66406\\-302.4315\\-159\\-59.57031\\-303.0669\\-159\\-63.47656\\-303.8682\\-159\\-65.42969\\-304.1404\\-159\\-69.33594\\-304.3196\\-159\\-73.24219\\-304.2531\\-159\\-75.19531\\-304.1404\\-159"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002381"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "163"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.3053\\-159\\57.61719\\-301.6754\\-159\\53.71094\\-300.6357\\-159\\49.80469\\-298.7956\\-159\\47.85156\\-297.6002\\-159\\45.89844\\-296.6181\\-159\\43.94531\\-295.2728\\-159\\41.99219\\-294.1528\\-159\\40.03906\\-292.6522\\-159\\35.12186\\-288.1484\\-159\\33.26095\\-286.1953\\-159\\30.03294\\-282.2891\\-159\\28.32031\\-279.9959\\-159\\25.81202\\-276.4297\\-159\\24.79186\\-274.4766\\-159\\24.41406\\-274.0453\\-159\\22.46094\\-270.9819\\-159\\22.12213\\-270.5703\\-159\\21.23442\\-268.6172\\-159\\20.10257\\-266.6641\\-159\\18.94395\\-262.7578\\-159\\17.92769\\-260.8047\\-159\\17.43214\\-258.8516\\-159\\16.75236\\-256.8984\\-159\\15.96264\\-254.9453\\-159\\15.50603\\-252.9922\\-159\\14.86314\\-251.0391\\-159\\14.06371\\-249.0859\\-159\\13.22266\\-245.1797\\-159\\12.57997\\-243.2266\\-159\\12.0503\\-241.2734\\-159\\11.34536\\-235.4141\\-159\\10.9489\\-233.4609\\-159\\10.41667\\-231.5078\\-159\\10.10665\\-229.5547\\-159\\9.253231\\-217.8359\\-159\\8.640455\\-211.9766\\-159\\8.553341\\-210.0234\\-159\\8.4851\\-204.1641\\-159\\8.627473\\-200.2578\\-159\\9.193372\\-194.3984\\-159\\10.24534\\-178.7734\\-159\\10.54275\\-176.8203\\-159\\11.13669\\-174.8672\\-159\\12.07886\\-169.0078\\-159\\13.38935\\-165.1016\\-159\\13.84523\\-163.1484\\-159\\14.62555\\-161.1953\\-159\\15.61433\\-159.2422\\-159\\17.73999\\-155.3359\\-159\\19.06389\\-153.3828\\-159\\20.21708\\-151.4297\\-159\\21.736\\-149.4766\\-159\\24.41406\\-146.5746\\-159\\28.32031\\-142.8973\\-159\\30.27344\\-141.2858\\-159\\32.631\\-139.7109\\-159\\36.13281\\-137.6485\\-159\\38.08594\\-136.6378\\-159\\40.03906\\-135.4559\\-159\\41.99219\\-134.756\\-159\\45.89844\\-133.1487\\-159\\49.80469\\-132.4317\\-159\\51.75781\\-131.8313\\-159\\53.71094\\-131.3509\\-159\\55.66406\\-131.0521\\-159\\59.57031\\-130.7574\\-159\\61.52344\\-130.7318\\-159\\65.42969\\-130.5346\\-159\\67.38281\\-130.5267\\-159\\71.28906\\-130.6945\\-159\\75.19531\\-130.9122\\-159\\79.10156\\-131.185\\-159\\81.05469\\-131.3704\\-159\\83.00781\\-131.6715\\-159\\84.96094\\-132.2005\\-159\\86.91406\\-132.5515\\-159\\92.77344\\-133.113\\-159\\94.72656\\-133.4034\\-159\\98.63281\\-134.435\\-159\\102.5391\\-135.1777\\-159\\106.4453\\-136.4944\\-159\\108.3984\\-136.9413\\-159\\110.3516\\-137.5708\\-159\\112.3047\\-138.4068\\-159\\116.2109\\-139.243\\-159\\118.1641\\-140.0317\\-159\\122.0703\\-141.114\\-159\\124.0234\\-142.0376\\-159\\125.9766\\-142.7733\\-159\\131.8359\\-145.4688\\-159\\133.7891\\-146.5667\\-159\\135.7422\\-147.4988\\-159\\137.6953\\-148.6896\\-159\\139.6484\\-150.1799\\-159\\143.5547\\-152.8521\\-159\\145.5078\\-154.4026\\-159\\148.6656\\-157.2891\\-159\\153.3203\\-161.993\\-159\\155.8676\\-165.1016\\-159\\158.352\\-169.0078\\-159\\159.7106\\-170.9609\\-159\\160.691\\-172.9141\\-159\\161.8178\\-174.8672\\-159\\162.4824\\-176.8203\\-159\\163.4318\\-178.7734\\-159\\164.4766\\-182.6797\\-159\\165.2261\\-184.6328\\-159\\165.6954\\-186.5859\\-159\\166.4622\\-192.4453\\-159\\167.1276\\-198.3047\\-159\\167.3479\\-202.2109\\-159\\167.4017\\-204.1641\\-159\\167.3479\\-208.0703\\-159\\167.1143\\-211.9766\\-159\\166.212\\-219.7891\\-159\\165.793\\-223.6953\\-159\\165.5099\\-225.6484\\-159\\164.4853\\-229.5547\\-159\\163.7351\\-233.4609\\-159\\162.3752\\-237.3672\\-159\\161.9843\\-239.3203\\-159\\161.341\\-241.2734\\-159\\160.4189\\-243.2266\\-159\\159.7319\\-245.1797\\-159\\158.5926\\-247.1328\\-159\\157.8271\\-249.0859\\-159\\156.6202\\-251.0391\\-159\\155.9683\\-252.9922\\-159\\154.7619\\-254.9453\\-159\\153.802\\-256.8984\\-159\\153.3203\\-257.513\\-159\\149.9057\\-262.7578\\-159\\147.4609\\-266.0881\\-159\\145.5078\\-268.493\\-159\\142.1487\\-272.5234\\-159\\139.6484\\-275.098\\-159\\138.149\\-276.4297\\-159\\135.7422\\-278.7573\\-159\\133.7891\\-280.5403\\-159\\131.8359\\-281.9057\\-159\\128.9524\\-284.2422\\-159\\125.9766\\-286.5769\\-159\\120.1172\\-290.2785\\-159\\118.1641\\-291.3082\\-159\\116.2109\\-292.6724\\-159\\114.2578\\-293.5774\\-159\\112.3047\\-294.7018\\-159\\110.3516\\-295.2907\\-159\\108.3984\\-296.3092\\-159\\106.4453\\-296.9637\\-159\\104.4922\\-297.7319\\-159\\102.5391\\-298.6478\\-159\\100.5859\\-299.233\\-159\\98.63281\\-300.0695\\-159\\96.67969\\-300.6039\\-159\\92.77344\\-301.3254\\-159\\88.86719\\-302.325\\-159\\84.96094\\-302.7469\\-159\\75.19531\\-303.2604\\-159\\71.28906\\-303.282\\-159\\67.38281\\-303.0898\\-159\\61.52344\\-302.6214\\-159"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002380"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "174"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-77.14844\\-303.9851\\-157\\-81.05469\\-303.3633\\-157\\-83.00781\\-303.1013\\-157\\-86.91406\\-302.7239\\-157\\-88.86719\\-302.4734\\-157\\-90.82031\\-302.0497\\-157\\-92.77344\\-301.4447\\-157\\-96.67969\\-300.6312\\-157\\-98.63281\\-300.0454\\-157\\-100.5859\\-299.1348\\-157\\-102.5391\\-298.4888\\-157\\-104.4922\\-297.364\\-157\\-106.4453\\-296.6862\\-157\\-108.3984\\-295.6117\\-157\\-110.3516\\-294.8422\\-157\\-112.3047\\-293.6643\\-157\\-114.2578\\-292.6036\\-157\\-118.1641\\-289.6982\\-157\\-120.1172\\-288.6805\\-157\\-122.0703\\-287.1215\\-157\\-124.0234\\-285.2981\\-157\\-125.9766\\-283.5757\\-157\\-127.5635\\-282.2891\\-157\\-129.8828\\-280.0858\\-157\\-131.4321\\-278.3828\\-157\\-133.7891\\-275.9914\\-157\\-135.7422\\-273.8176\\-157\\-137.6953\\-271.3175\\-157\\-140.0104\\-268.6172\\-157\\-143.8802\\-262.7578\\-157\\-144.9181\\-260.8047\\-157\\-146.268\\-258.8516\\-157\\-147.469\\-256.8984\\-157\\-149.4141\\-253.1898\\-157\\-150.42\\-251.0391\\-157\\-151.4757\\-249.0859\\-157\\-152.4143\\-247.1328\\-157\\-153.4867\\-245.1797\\-157\\-155.0722\\-241.2734\\-157\\-155.9683\\-239.3203\\-157\\-156.4636\\-237.3672\\-157\\-157.3486\\-235.4141\\-157\\-158.0773\\-233.4609\\-157\\-158.6794\\-231.5078\\-157\\-159.6472\\-229.5547\\-157\\-160.7487\\-225.6484\\-157\\-161.5058\\-223.6953\\-157\\-161.9605\\-221.7422\\-157\\-162.6275\\-217.8359\\-157\\-163.2561\\-215.8828\\-157\\-163.7275\\-213.9297\\-157\\-164.6979\\-206.1172\\-157\\-165.2508\\-202.2109\\-157\\-165.332\\-198.3047\\-157\\-165.1877\\-196.3516\\-157\\-164.3273\\-190.4922\\-157\\-163.6635\\-186.5859\\-157\\-162.9542\\-184.6328\\-157\\-162.3628\\-182.6797\\-157\\-161.9374\\-180.7266\\-157\\-161.2037\\-178.7734\\-157\\-159.2024\\-174.8672\\-157\\-157.2266\\-171.8604\\-157\\-156.5337\\-170.9609\\-157\\-155.3784\\-169.0078\\-157\\-153.978\\-167.0547\\-157\\-151.3672\\-164.2597\\-157\\-149.4141\\-162.0951\\-157\\-147.4609\\-160.111\\-157\\-141.6016\\-154.8075\\-157\\-137.6953\\-152.2122\\-157\\-135.7422\\-150.8088\\-157\\-129.8828\\-147.3073\\-157\\-125.9766\\-145.6577\\-157\\-124.0234\\-144.7422\\-157\\-122.0703\\-144.0461\\-157\\-120.1172\\-142.9928\\-157\\-118.1641\\-142.2977\\-157\\-116.2109\\-141.312\\-157\\-112.3047\\-140.1457\\-157\\-110.3516\\-139.2885\\-157\\-106.4453\\-138.3326\\-157\\-104.4922\\-137.443\\-157\\-100.5859\\-136.2989\\-157\\-98.63281\\-135.4228\\-157\\-94.72656\\-134.4884\\-157\\-90.82031\\-133.2669\\-157\\-88.86719\\-132.9469\\-157\\-84.96094\\-132.5754\\-157\\-83.00781\\-132.2216\\-157\\-81.05469\\-131.6962\\-157\\-77.14844\\-131.0445\\-157\\-71.28906\\-130.6588\\-157\\-67.38281\\-130.584\\-157\\-63.47656\\-130.6294\\-157\\-59.57031\\-130.7817\\-157\\-55.66406\\-131.0527\\-157\\-53.71094\\-131.2669\\-157\\-51.75781\\-131.6715\\-157\\-49.80469\\-132.2823\\-157\\-45.89844\\-132.9229\\-157\\-43.94531\\-133.3267\\-157\\-41.99219\\-134.2759\\-157\\-40.03906\\-134.9385\\-157\\-38.0983\\-135.8047\\-157\\-32.22656\\-138.9436\\-157\\-28.36772\\-141.6641\\-157\\-26.24199\\-143.6172\\-157\\-22.46094\\-147.7833\\-157\\-19.60011\\-151.4297\\-157\\-18.33371\\-153.3828\\-157\\-17.37046\\-155.3359\\-157\\-16.15037\\-157.2891\\-157\\-15.42201\\-159.2422\\-157\\-14.55226\\-161.1953\\-157\\-13.89858\\-163.1484\\-157\\-12.94849\\-167.0547\\-157\\-12.25021\\-169.0078\\-157\\-11.88427\\-170.9609\\-157\\-11.49053\\-174.8672\\-157\\-11.23657\\-176.8203\\-157\\-10.74219\\-178.9362\\-157\\-10.09285\\-182.6797\\-157\\-9.689405\\-188.5391\\-157\\-9.563229\\-192.4453\\-157\\-9.557088\\-194.3984\\-157\\-9.658737\\-198.3047\\-157\\-9.61691\\-204.1641\\-157\\-9.412518\\-208.0703\\-157\\-9.303977\\-213.9297\\-157\\-9.39464\\-217.8359\\-157\\-9.640548\\-221.7422\\-157\\-9.941949\\-225.6484\\-157\\-10.02185\\-227.6016\\-157\\-10.22023\\-229.5547\\-157\\-10.5678\\-231.5078\\-157\\-11.08724\\-233.4609\\-157\\-11.39884\\-235.4141\\-157\\-11.86688\\-239.3203\\-157\\-12.25021\\-241.2734\\-157\\-12.93581\\-243.2266\\-157\\-13.39374\\-245.1797\\-157\\-14.07434\\-249.0859\\-157\\-14.64844\\-250.9805\\-157\\-15.43899\\-252.9922\\-157\\-15.96998\\-254.9453\\-157\\-16.93359\\-256.8984\\-157\\-18.31055\\-260.8047\\-157\\-19.28101\\-262.7578\\-157\\-19.82606\\-264.7109\\-157\\-20.84894\\-266.6641\\-157\\-21.69834\\-268.6172\\-157\\-22.95532\\-270.5703\\-157\\-23.85365\\-272.5234\\-157\\-25.15259\\-274.4766\\-157\\-26.03924\\-276.4297\\-157\\-29.93406\\-282.2891\\-157\\-33.01411\\-286.1953\\-157\\-34.17969\\-287.7394\\-157\\-36.13281\\-289.7335\\-157\\-40.08556\\-294.0078\\-157\\-41.99219\\-295.2994\\-157\\-43.94531\\-296.831\\-157\\-45.89844\\-298.2037\\-157\\-47.85156\\-299.2501\\-157\\-49.80469\\-300.4138\\-157\\-51.75781\\-301.0306\\-157\\-55.66406\\-302.4693\\-157\\-59.57031\\-303.1049\\-157\\-63.47656\\-303.9221\\-157\\-65.42969\\-304.1702\\-157\\-67.38281\\-304.2954\\-157\\-71.28906\\-304.3354\\-157\\-75.19531\\-304.1702\\-157"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002380"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "180"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.3477\\-157\\55.66406\\-301.1672\\-157\\53.71094\\-300.6819\\-157\\51.7985\\-299.8672\\-157\\49.80469\\-298.8484\\-157\\47.85156\\-297.7158\\-157\\45.89844\\-296.6903\\-157\\43.94531\\-295.3431\\-157\\41.99219\\-294.2501\\-157\\40.03906\\-292.7451\\-157\\35.03158\\-288.1484\\-157\\33.17759\\-286.1953\\-157\\29.91769\\-282.2891\\-157\\28.32031\\-280.1317\\-157\\25.72692\\-276.4297\\-157\\24.41406\\-274.1963\\-157\\22.46094\\-271.0906\\-157\\22.04333\\-270.5703\\-157\\21.16878\\-268.6172\\-157\\20.03255\\-266.6641\\-157\\18.88489\\-262.7578\\-157\\17.87324\\-260.8047\\-157\\17.34044\\-258.8516\\-157\\16.50682\\-256.8984\\-157\\15.85303\\-254.9453\\-157\\15.38732\\-252.9922\\-157\\13.99148\\-249.0859\\-157\\13.14041\\-245.1797\\-157\\12.45482\\-243.2266\\-157\\11.98774\\-241.2734\\-157\\11.54549\\-237.3672\\-157\\11.26664\\-235.4141\\-157\\10.2983\\-231.5078\\-157\\9.86649\\-227.6016\\-157\\9.487357\\-221.7422\\-157\\9.173388\\-217.8359\\-157\\8.666992\\-213.9297\\-157\\8.565267\\-211.9766\\-157\\8.44254\\-206.1172\\-157\\8.463542\\-202.2109\\-157\\8.694322\\-198.3047\\-157\\9.112384\\-194.3984\\-157\\9.372543\\-192.4453\\-157\\9.480575\\-190.4922\\-157\\9.807478\\-186.5859\\-157\\10.08606\\-180.7266\\-157\\10.28022\\-178.7734\\-157\\10.66142\\-176.8203\\-157\\11.25776\\-174.8672\\-157\\11.82666\\-170.9609\\-157\\12.17831\\-169.0078\\-157\\12.85306\\-167.0547\\-157\\13.40942\\-165.1016\\-157\\13.84995\\-163.1484\\-157\\14.62555\\-161.1953\\-157\\15.59333\\-159.2422\\-157\\17.70154\\-155.3359\\-157\\19.01802\\-153.3828\\-157\\20.12156\\-151.4297\\-157\\21.69279\\-149.4766\\-157\\24.41406\\-146.5192\\-157\\27.43936\\-143.6172\\-157\\30.27344\\-141.1554\\-157\\32.51852\\-139.7109\\-157\\36.13281\\-137.5069\\-157\\38.08594\\-136.5667\\-157\\40.03906\\-135.3563\\-157\\41.99219\\-134.65\\-157\\43.94531\\-133.7516\\-157\\45.89844\\-133.0691\\-157\\49.80469\\-132.2877\\-157\\51.75781\\-131.5904\\-157\\53.71094\\-131.1701\\-157\\55.66406\\-130.9117\\-157\\59.57031\\-130.6474\\-157\\67.38281\\-130.4796\\-157\\71.28906\\-130.6331\\-157\\75.19531\\-130.8486\\-157\\81.05469\\-131.3114\\-157\\83.00781\\-131.5904\\-157\\86.91406\\-132.5754\\-157\\88.86719\\-132.8221\\-157\\92.77344\\-133.0691\\-157\\94.72656\\-133.2835\\-157\\96.67969\\-133.7229\\-157\\98.63281\\-134.3138\\-157\\102.5391\\-135.0655\\-157\\104.4922\\-135.5809\\-157\\106.4453\\-136.3433\\-157\\108.3984\\-136.7865\\-157\\110.3516\\-137.3411\\-157\\112.3047\\-138.2299\\-157\\114.2578\\-138.7121\\-157\\116.2109\\-139.0958\\-157\\118.1641\\-139.8272\\-157\\120.1172\\-140.4524\\-157\\122.0703\\-140.9758\\-157\\127.9297\\-143.4178\\-157\\129.8828\\-144.4681\\-157\\131.8359\\-145.2401\\-157\\133.7891\\-146.4451\\-157\\135.7422\\-147.2476\\-157\\137.6953\\-148.517\\-157\\139.6484\\-149.9902\\-157\\141.6016\\-151.2528\\-157\\143.5547\\-152.7157\\-157\\146.7285\\-155.3359\\-157\\148.8193\\-157.2891\\-157\\152.7843\\-161.1953\\-157\\154.478\\-163.1484\\-157\\156.0241\\-165.1016\\-157\\157.362\\-167.0547\\-157\\158.5685\\-169.0078\\-157\\159.9136\\-170.9609\\-157\\161.1328\\-173.0981\\-157\\161.9576\\-174.8672\\-157\\162.6496\\-176.8203\\-157\\163.5898\\-178.7734\\-157\\164.534\\-182.6797\\-157\\165.2865\\-184.6328\\-157\\165.7469\\-186.5859\\-157\\166.5645\\-192.4453\\-157\\167.1691\\-198.3047\\-157\\167.4269\\-202.2109\\-157\\167.4744\\-206.1172\\-157\\167.4434\\-208.0703\\-157\\167.2531\\-211.9766\\-157\\167.0444\\-213.9297\\-157\\166.5286\\-217.8359\\-157\\165.8372\\-223.6953\\-157\\165.5692\\-225.6484\\-157\\165.1198\\-227.6016\\-157\\164.5235\\-229.5547\\-157\\163.7684\\-233.4609\\-157\\162.4036\\-237.3672\\-157\\161.9962\\-239.3203\\-157\\161.3805\\-241.2734\\-157\\160.4304\\-243.2266\\-157\\159.7402\\-245.1797\\-157\\158.6008\\-247.1328\\-157\\157.8306\\-249.0859\\-157\\156.6241\\-251.0391\\-157\\155.952\\-252.9922\\-157\\154.739\\-254.9453\\-157\\153.792\\-256.8984\\-157\\153.3203\\-257.4962\\-157\\151.3672\\-260.4565\\-157\\151.0639\\-260.8047\\-157\\149.9192\\-262.7578\\-157\\148.5072\\-264.7109\\-157\\145.5078\\-268.4613\\-157\\143.5547\\-270.7185\\-157\\142.0898\\-272.5234\\-157\\139.6484\\-275.0474\\-157\\138.0781\\-276.4297\\-157\\136.0808\\-278.3828\\-157\\133.7891\\-280.5087\\-157\\131.8359\\-281.9057\\-157\\128.9749\\-284.2422\\-157\\125.9766\\-286.6102\\-157\\120.1172\\-290.3285\\-157\\118.1641\\-291.3336\\-157\\116.2109\\-292.7076\\-157\\114.2578\\-293.6004\\-157\\112.3047\\-294.7141\\-157\\110.3516\\-295.3249\\-157\\108.3984\\-296.3556\\-157\\106.4453\\-296.9797\\-157\\102.5391\\-298.6817\\-157\\100.5859\\-299.2985\\-157\\98.63281\\-300.1199\\-157\\96.67969\\-300.6337\\-157\\92.77344\\-301.3691\\-157\\88.86719\\-302.3477\\-157\\84.96094\\-302.7638\\-157\\77.14844\\-303.1923\\-157\\73.24219\\-303.343\\-157\\69.33594\\-303.2514\\-157\\63.47656\\-302.8293\\-157\\61.52344\\-302.6533\\-157"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002379"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "179"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-303.4525\\-155\\-84.96094\\-302.9156\\-155\\-88.86719\\-302.5377\\-155\\-90.82031\\-302.1529\\-155\\-92.77344\\-301.5302\\-155\\-96.67969\\-300.7018\\-155\\-98.63281\\-300.1568\\-155\\-100.5859\\-299.2218\\-155\\-102.5391\\-298.5633\\-155\\-104.4922\\-297.4451\\-155\\-106.4453\\-296.7433\\-155\\-108.3984\\-295.7\\-155\\-110.3516\\-294.8806\\-155\\-114.2578\\-292.6464\\-155\\-118.1641\\-289.759\\-155\\-120.1172\\-288.7131\\-155\\-122.0703\\-287.1593\\-155\\-125.9766\\-283.6428\\-155\\-127.6687\\-282.2891\\-155\\-129.8828\\-280.2097\\-155\\-131.5384\\-278.3828\\-155\\-133.5178\\-276.4297\\-155\\-135.7422\\-274.0008\\-155\\-136.7835\\-272.5234\\-155\\-140.1531\\-268.6172\\-155\\-141.6016\\-266.5115\\-155\\-144.056\\-262.7578\\-155\\-145.1407\\-260.8047\\-155\\-145.5078\\-260.3384\\-155\\-147.7306\\-256.8984\\-155\\-148.6316\\-254.9453\\-155\\-149.7977\\-252.9922\\-155\\-150.5564\\-251.0391\\-155\\-151.7515\\-249.0859\\-155\\-152.595\\-247.1328\\-155\\-153.7452\\-245.1797\\-155\\-154.4457\\-243.2266\\-155\\-155.3758\\-241.2734\\-155\\-156.1114\\-239.3203\\-155\\-156.633\\-237.3672\\-155\\-157.633\\-235.4141\\-155\\-158.2591\\-233.4609\\-155\\-158.9886\\-231.5078\\-155\\-159.8578\\-229.5547\\-155\\-160.3636\\-227.6016\\-155\\-161.7188\\-223.6953\\-155\\-162.4005\\-219.7891\\-155\\-162.8698\\-217.8359\\-155\\-163.5264\\-215.8828\\-155\\-163.8787\\-213.9297\\-155\\-164.3824\\-210.0234\\-155\\-165.3539\\-204.1641\\-155\\-165.5187\\-202.2109\\-155\\-165.5692\\-198.3047\\-155\\-165.4738\\-196.3516\\-155\\-164.9857\\-192.4453\\-155\\-164.5631\\-190.4922\\-155\\-163.8683\\-186.5859\\-155\\-163.3459\\-184.6328\\-155\\-162.5682\\-182.6797\\-155\\-162.0911\\-180.7266\\-155\\-161.4911\\-178.7734\\-155\\-160.4062\\-176.8203\\-155\\-159.4966\\-174.8672\\-155\\-157.2266\\-171.5923\\-155\\-156.7108\\-170.9609\\-155\\-155.6568\\-169.0078\\-155\\-154.1471\\-167.0547\\-155\\-150.4957\\-163.1484\\-155\\-149.4141\\-161.9189\\-155\\-146.6957\\-159.2422\\-155\\-145.5078\\-158.2535\\-155\\-141.6016\\-154.6698\\-155\\-139.6484\\-153.2647\\-155\\-137.6953\\-152.131\\-155\\-135.7422\\-150.7031\\-155\\-130.3613\\-147.5234\\-155\\-129.8828\\-147.1792\\-155\\-127.9297\\-146.4309\\-155\\-124.0234\\-144.6667\\-155\\-122.0703\\-143.8912\\-155\\-120.1172\\-142.8874\\-155\\-118.1641\\-142.1829\\-155\\-116.2109\\-141.1915\\-155\\-112.3047\\-140.0294\\-155\\-110.3516\\-139.1765\\-155\\-106.4453\\-138.1867\\-155\\-104.4922\\-137.2813\\-155\\-102.5391\\-136.7761\\-155\\-100.5859\\-136.1148\\-155\\-98.63281\\-135.2673\\-155\\-94.72656\\-134.3591\\-155\\-92.77344\\-133.6418\\-155\\-90.82031\\-133.1736\\-155\\-88.86719\\-132.8929\\-155\\-84.96094\\-132.5188\\-155\\-83.00781\\-132.1764\\-155\\-81.05469\\-131.6475\\-155\\-79.10156\\-131.2562\\-155\\-77.14844\\-130.9823\\-155\\-73.24219\\-130.7098\\-155\\-69.33594\\-130.555\\-155\\-63.47656\\-130.5658\\-155\\-57.61719\\-130.8515\\-155\\-53.71094\\-131.2184\\-155\\-51.75781\\-131.5904\\-155\\-49.80469\\-132.2354\\-155\\-47.85156\\-132.6294\\-155\\-45.89844\\-132.8929\\-155\\-43.94531\\-133.2945\\-155\\-41.99219\\-134.2408\\-155\\-40.03906\\-134.9214\\-155\\-38.08594\\-135.7818\\-155\\-32.22656\\-138.936\\-155\\-28.38542\\-141.6641\\-155\\-26.24199\\-143.6172\\-155\\-22.46094\\-147.7716\\-155\\-19.61263\\-151.4297\\-155\\-18.40049\\-153.3828\\-155\\-17.39708\\-155.3359\\-155\\-16.18214\\-157.2891\\-155\\-15.43298\\-159.2422\\-155\\-14.49764\\-161.1953\\-155\\-13.87533\\-163.1484\\-155\\-12.94849\\-167.0547\\-155\\-12.27392\\-169.0078\\-155\\-11.89732\\-170.9609\\-155\\-11.49462\\-174.8672\\-155\\-11.21511\\-176.8203\\-155\\-10.35525\\-180.7266\\-155\\-10.08606\\-182.6797\\-155\\-9.820642\\-186.5859\\-155\\-9.62822\\-190.4922\\-155\\-9.633789\\-194.3984\\-155\\-9.7891\\-198.3047\\-155\\-9.770412\\-204.1641\\-155\\-9.419988\\-210.0234\\-155\\-9.346277\\-213.9297\\-155\\-9.427584\\-217.8359\\-155\\-9.665096\\-221.7422\\-155\\-10.12074\\-227.6016\\-155\\-10.3752\\-229.5547\\-155\\-11.23946\\-233.4609\\-155\\-11.94018\\-239.3203\\-155\\-12.40306\\-241.2734\\-155\\-13.0598\\-243.2266\\-155\\-13.48016\\-245.1797\\-155\\-14.18488\\-249.0859\\-155\\-15.57593\\-252.9922\\-155\\-16.08788\\-254.9453\\-155\\-17.10771\\-256.8984\\-155\\-17.70833\\-258.8516\\-155\\-19.37737\\-262.7578\\-155\\-19.94344\\-264.7109\\-155\\-21.01164\\-266.6641\\-155\\-21.81551\\-268.6172\\-155\\-23.10627\\-270.5703\\-155\\-23.98606\\-272.5234\\-155\\-25.26558\\-274.4766\\-155\\-26.21755\\-276.4297\\-155\\-27.41392\\-278.3828\\-155\\-30.11924\\-282.2891\\-155\\-31.53456\\-284.2422\\-155\\-34.17969\\-287.64\\-155\\-36.54436\\-290.1016\\-155\\-40.13853\\-294.0078\\-155\\-41.99219\\-295.3163\\-155\\-43.94531\\-296.8492\\-155\\-45.89844\\-298.2396\\-155\\-47.85156\\-299.2704\\-155\\-49.80469\\-300.4261\\-155\\-51.75781\\-301.05\\-155\\-55.66406\\-302.4978\\-155\\-59.57031\\-303.1244\\-155\\-63.47656\\-303.9729\\-155\\-65.42969\\-304.1988\\-155\\-69.33594\\-304.3658\\-155\\-73.24219\\-304.3196\\-155\\-77.14844\\-304.0664\\-155"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002379"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "185"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.37\\-155\\55.66406\\-301.1796\\-155\\53.71094\\-300.7001\\-155\\51.75781\\-299.9206\\-155\\47.9798\\-297.9141\\-155\\45.89844\\-296.7338\\-155\\43.94531\\-295.3885\\-155\\41.99219\\-294.3166\\-155\\40.03906\\-292.8026\\-155\\34.97617\\-288.1484\\-155\\33.12653\\-286.1953\\-155\\29.8055\\-282.2891\\-155\\28.32031\\-280.3264\\-155\\25.68423\\-276.4297\\-155\\24.41406\\-274.2795\\-155\\22.46094\\-271.1595\\-155\\22.00101\\-270.5703\\-155\\21.13689\\-268.6172\\-155\\20.00026\\-266.6641\\-155\\19.46654\\-264.7109\\-155\\18.83473\\-262.7578\\-155\\17.83539\\-260.8047\\-155\\17.28622\\-258.8516\\-155\\16.36584\\-256.8984\\-155\\15.7666\\-254.9453\\-155\\15.26839\\-252.9922\\-155\\14.49653\\-251.0391\\-155\\13.92917\\-249.0859\\-155\\13.07091\\-245.1797\\-155\\12.36747\\-243.2266\\-155\\11.94018\\-241.2734\\-155\\11.48802\\-237.3672\\-155\\11.17974\\-235.4141\\-155\\10.62012\\-233.4609\\-155\\10.21205\\-231.5078\\-155\\9.807083\\-227.6016\\-155\\9.571309\\-223.6953\\-155\\9.118895\\-217.8359\\-155\\8.565267\\-213.9297\\-155\\8.565267\\-211.9766\\-155\\8.432241\\-206.1172\\-155\\8.432241\\-202.2109\\-155\\8.4851\\-200.2578\\-155\\8.640455\\-198.3047\\-155\\9.07668\\-194.3984\\-155\\9.367536\\-192.4453\\-155\\9.86236\\-186.5859\\-155\\10.14985\\-180.7266\\-155\\10.38537\\-178.7734\\-155\\11.35685\\-174.8672\\-155\\11.88427\\-170.9609\\-155\\12.2635\\-169.0078\\-155\\12.94663\\-167.0547\\-155\\13.87293\\-163.1484\\-155\\14.61088\\-161.1953\\-155\\16.56371\\-157.2891\\-155\\18.55469\\-153.91\\-155\\18.9927\\-153.3828\\-155\\20.08725\\-151.4297\\-155\\21.65706\\-149.4766\\-155\\24.41406\\-146.485\\-155\\27.38473\\-143.6172\\-155\\30.27344\\-141.0768\\-155\\32.41984\\-139.7109\\-155\\34.17969\\-138.6808\\-155\\36.13281\\-137.4173\\-155\\38.08594\\-136.5039\\-155\\40.03906\\-135.2747\\-155\\41.99219\\-134.5752\\-155\\43.94531\\-133.6256\\-155\\45.89844\\-133.0206\\-155\\47.85156\\-132.6619\\-155\\49.80469\\-132.1641\\-155\\51.75781\\-131.4399\\-155\\53.71094\\-130.9991\\-155\\59.57031\\-130.5267\\-155\\61.52344\\-130.4218\\-155\\67.38281\\-130.4129\\-155\\73.24219\\-130.6608\\-155\\79.10156\\-131.0846\\-155\\83.00781\\-131.4967\\-155\\84.96094\\-131.9536\\-155\\86.91406\\-132.6881\\-155\\88.86719\\-132.9654\\-155\\90.82031\\-133.0941\\-155\\92.77344\\-133.0715\\-155\\94.72656\\-133.1779\\-155\\96.67969\\-133.6111\\-155\\98.63281\\-134.3028\\-155\\100.5859\\-134.5665\\-155\\102.5391\\-134.9792\\-155\\104.4922\\-135.5323\\-155\\106.4453\\-136.2899\\-155\\108.3984\\-136.6852\\-155\\110.3516\\-137.1956\\-155\\112.3047\\-138.1086\\-155\\116.2109\\-138.9695\\-155\\118.1641\\-139.5947\\-155\\120.1172\\-140.3432\\-155\\122.0703\\-140.8629\\-155\\124.0234\\-141.5808\\-155\\125.9766\\-142.505\\-155\\127.9297\\-143.2402\\-155\\129.8828\\-144.3408\\-155\\131.8359\\-145.069\\-155\\133.7891\\-146.2631\\-155\\135.7422\\-147.0489\\-155\\136.3604\\-147.5234\\-155\\141.6016\\-151.0403\\-155\\143.5547\\-152.5565\\-155\\146.9175\\-155.3359\\-155\\148.9709\\-157.2891\\-155\\153.3203\\-161.5555\\-155\\156.1969\\-165.1016\\-155\\157.6084\\-167.0547\\-155\\158.785\\-169.0078\\-155\\160.0978\\-170.9609\\-155\\161.2956\\-172.9141\\-155\\162.7849\\-176.8203\\-155\\163.7079\\-178.7734\\-155\\164.6352\\-182.6797\\-155\\165.3096\\-184.6328\\-155\\165.7662\\-186.5859\\-155\\166.0944\\-188.5391\\-155\\166.6277\\-192.4453\\-155\\166.7668\\-194.3984\\-155\\167.2818\\-198.3047\\-155\\167.4171\\-200.2578\\-155\\167.546\\-206.1172\\-155\\167.5166\\-208.0703\\-155\\167.335\\-211.9766\\-155\\167.1666\\-213.9297\\-155\\166.6054\\-217.8359\\-155\\165.6042\\-225.6484\\-155\\165.1611\\-227.6016\\-155\\164.5416\\-229.5547\\-155\\163.7756\\-233.4609\\-155\\162.4161\\-237.3672\\-155\\162.0028\\-239.3203\\-155\\161.3946\\-241.2734\\-155\\160.4117\\-243.2266\\-155\\159.7319\\-245.1797\\-155\\158.5845\\-247.1328\\-155\\157.8227\\-249.0859\\-155\\156.6074\\-251.0391\\-155\\155.9309\\-252.9922\\-155\\154.6901\\-254.9453\\-155\\153.7685\\-256.8984\\-155\\153.3203\\-257.4577\\-155\\151.3672\\-260.4192\\-155\\151.0392\\-260.8047\\-155\\149.8853\\-262.7578\\-155\\148.4819\\-264.7109\\-155\\146.9265\\-266.6641\\-155\\143.5547\\-270.5974\\-155\\142.0139\\-272.5234\\-155\\139.6484\\-274.979\\-155\\137.9661\\-276.4297\\-155\\136.0085\\-278.3828\\-155\\133.7891\\-280.4192\\-155\\131.8359\\-281.8828\\-155\\128.9749\\-284.2422\\-155\\125.9766\\-286.6202\\-155\\120.1172\\-290.3406\\-155\\118.1641\\-291.3596\\-155\\116.2109\\-292.7192\\-155\\114.2578\\-293.6107\\-155\\112.3047\\-294.7264\\-155\\110.3516\\-295.3466\\-155\\108.3984\\-296.3662\\-155\\106.4453\\-296.9959\\-155\\102.5391\\-298.7131\\-155\\100.5859\\-299.3351\\-155\\98.63281\\-300.1661\\-155\\96.67969\\-300.661\\-155\\92.77344\\-301.4066\\-155\\90.82031\\-301.95\\-155\\88.86719\\-302.37\\-155\\86.91406\\-302.6283\\-155\\83.00781\\-302.8881\\-155\\77.14844\\-303.2215\\-155\\73.24219\\-303.3558\\-155\\69.33594\\-303.2637\\-155\\63.47656\\-302.84\\-155\\61.52344\\-302.6648\\-155"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002378"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "175"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-303.882\\-153\\-81.05469\\-303.5258\\-153\\-84.96094\\-302.956\\-153\\-88.86719\\-302.591\\-153\\-90.82031\\-302.2369\\-153\\-92.77344\\-301.6339\\-153\\-96.67969\\-300.7472\\-153\\-98.63281\\-300.2253\\-153\\-100.5859\\-299.3033\\-153\\-102.5391\\-298.6208\\-153\\-104.4922\\-297.5221\\-153\\-106.4453\\-296.7738\\-153\\-108.3984\\-295.7687\\-153\\-110.3516\\-294.9107\\-153\\-114.2578\\-292.6849\\-153\\-118.1641\\-289.8108\\-153\\-120.1172\\-288.7357\\-153\\-122.0703\\-287.1845\\-153\\-125.9766\\-283.6989\\-153\\-127.7801\\-282.2891\\-153\\-129.8828\\-280.3272\\-153\\-131.6678\\-278.3828\\-153\\-133.6507\\-276.4297\\-153\\-135.7422\\-274.1568\\-153\\-136.8745\\-272.5234\\-153\\-140.2762\\-268.6172\\-153\\-141.7188\\-266.6641\\-153\\-142.8415\\-264.7109\\-153\\-144.2162\\-262.7578\\-153\\-147.4609\\-257.5223\\-153\\-147.9256\\-256.8984\\-153\\-148.7914\\-254.9453\\-153\\-149.9767\\-252.9922\\-153\\-150.7265\\-251.0391\\-153\\-151.9624\\-249.0859\\-153\\-152.795\\-247.1328\\-153\\-153.9263\\-245.1797\\-153\\-154.6161\\-243.2266\\-153\\-155.6458\\-241.2734\\-153\\-156.8569\\-237.3672\\-153\\-157.8362\\-235.4141\\-153\\-158.4446\\-233.4609\\-153\\-159.3667\\-231.5078\\-153\\-160.5756\\-227.6016\\-153\\-161.368\\-225.6484\\-153\\-161.8863\\-223.6953\\-153\\-162.5527\\-219.7891\\-153\\-163.1851\\-217.8359\\-153\\-163.7121\\-215.8828\\-153\\-164.5755\\-210.0234\\-153\\-165.3539\\-206.1172\\-153\\-165.6953\\-202.2109\\-153\\-165.7323\\-198.3047\\-153\\-165.5444\\-194.3984\\-153\\-165.332\\-192.4453\\-153\\-164.4052\\-188.5391\\-153\\-163.6258\\-184.6328\\-153\\-162.8548\\-182.6797\\-153\\-161.6899\\-178.7734\\-153\\-160.6132\\-176.8203\\-153\\-159.715\\-174.8672\\-153\\-156.9336\\-170.9609\\-153\\-155.8459\\-169.0078\\-153\\-154.2969\\-167.0547\\-153\\-150.705\\-163.1484\\-153\\-149.4141\\-161.6644\\-153\\-146.9219\\-159.2422\\-153\\-145.5078\\-158.1235\\-153\\-141.6016\\-154.561\\-153\\-139.6484\\-153.1219\\-153\\-137.6953\\-152.0697\\-153\\-135.7422\\-150.6359\\-153\\-133.7891\\-149.439\\-153\\-130.4785\\-147.5234\\-153\\-129.8828\\-147.1069\\-153\\-127.9297\\-146.3749\\-153\\-125.9766\\-145.4126\\-153\\-122.0703\\-143.7588\\-153\\-120.1172\\-142.7956\\-153\\-118.1641\\-142.0586\\-153\\-116.2109\\-141.0842\\-153\\-114.2578\\-140.5197\\-153\\-112.3047\\-139.8559\\-153\\-110.3516\\-139.0705\\-153\\-108.3984\\-138.6277\\-153\\-106.4453\\-137.9965\\-153\\-104.4922\\-137.1344\\-153\\-102.5391\\-136.638\\-153\\-98.63281\\-135.1664\\-153\\-94.72656\\-134.2381\\-153\\-92.77344\\-133.5008\\-153\\-90.82031\\-133.113\\-153\\-84.96094\\-132.3899\\-153\\-81.05469\\-131.4399\\-153\\-77.14844\\-130.9357\\-153\\-71.28906\\-130.555\\-153\\-69.33594\\-130.4978\\-153\\-63.47656\\-130.5057\\-153\\-57.61719\\-130.8128\\-153\\-53.71094\\-131.1859\\-153\\-51.75781\\-131.537\\-153\\-49.80469\\-132.2123\\-153\\-47.85156\\-132.6367\\-153\\-45.89844\\-132.8929\\-153\\-43.94531\\-133.2982\\-153\\-41.99219\\-134.2272\\-153\\-40.03906\\-134.9104\\-153\\-38.03759\\-135.8047\\-153\\-32.22656\\-138.9436\\-153\\-28.40245\\-141.6641\\-153\\-26.24199\\-143.6172\\-153\\-22.46094\\-147.7432\\-153\\-19.60589\\-151.4297\\-153\\-18.38707\\-153.3828\\-153\\-17.40106\\-155.3359\\-153\\-16.17237\\-157.2891\\-153\\-15.43511\\-159.2422\\-153\\-14.45737\\-161.1953\\-153\\-13.85679\\-163.1484\\-153\\-12.96099\\-167.0547\\-153\\-12.27392\\-169.0078\\-153\\-11.90848\\-170.9609\\-153\\-11.47729\\-174.8672\\-153\\-11.18382\\-176.8203\\-153\\-10.33579\\-180.7266\\-153\\-10.08606\\-182.6797\\-153\\-9.838982\\-186.5859\\-153\\-9.665096\\-190.4922\\-153\\-9.658737\\-192.4453\\-153\\-9.816778\\-196.3516\\-153\\-9.829812\\-200.2578\\-153\\-9.908537\\-204.1641\\-153\\-9.61691\\-208.0703\\-153\\-9.431112\\-211.9766\\-153\\-9.427374\\-215.8828\\-153\\-9.579145\\-219.7891\\-153\\-10.03689\\-225.6484\\-153\\-10.5678\\-229.5547\\-153\\-11.05656\\-231.5078\\-153\\-11.35748\\-233.4609\\-153\\-11.77154\\-237.3672\\-153\\-12.04227\\-239.3203\\-153\\-12.53756\\-241.2734\\-153\\-13.16699\\-243.2266\\-153\\-13.88889\\-247.1328\\-153\\-14.31418\\-249.0859\\-153\\-15.10976\\-251.0391\\-153\\-16.24474\\-254.9453\\-153\\-17.25443\\-256.8984\\-153\\-17.80389\\-258.8516\\-153\\-18.79519\\-260.8047\\-153\\-20.06572\\-264.7109\\-153\\-21.14922\\-266.6641\\-153\\-21.94913\\-268.6172\\-153\\-23.23676\\-270.5703\\-153\\-24.16487\\-272.5234\\-153\\-25.37893\\-274.4766\\-153\\-27.53789\\-278.3828\\-153\\-30.36296\\-282.2891\\-153\\-31.65409\\-284.2422\\-153\\-34.17969\\-287.5105\\-153\\-40.22382\\-294.0078\\-153\\-41.99219\\-295.2581\\-153\\-43.94531\\-296.8428\\-153\\-45.89844\\-298.2418\\-153\\-47.85156\\-299.274\\-153\\-49.80469\\-300.4261\\-153\\-51.75781\\-301.0621\\-153\\-55.66406\\-302.5179\\-153\\-59.57031\\-303.136\\-153\\-63.47656\\-303.9851\\-153\\-65.42969\\-304.2081\\-153\\-69.33594\\-304.3949\\-153\\-73.24219\\-304.3583\\-153\\-77.14844\\-304.12\\-153"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002378"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "181"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.3607\\-153\\55.66406\\-301.188\\-153\\53.71094\\-300.7116\\-153\\51.75781\\-299.9505\\-153\\47.90139\\-297.9141\\-153\\45.89844\\-296.7599\\-153\\43.94531\\-295.4116\\-153\\41.99219\\-294.3546\\-153\\40.03906\\-292.8149\\-153\\36.13281\\-289.1987\\-153\\34.93143\\-288.1484\\-153\\33.08823\\-286.1953\\-153\\29.73165\\-282.2891\\-153\\28.19454\\-280.3359\\-153\\26.99498\\-278.3828\\-153\\25.63794\\-276.4297\\-153\\23.33416\\-272.5234\\-153\\21.97266\\-270.5703\\-153\\21.14077\\-268.6172\\-153\\20.00026\\-266.6641\\-153\\19.46023\\-264.7109\\-153\\18.79519\\-262.7578\\-153\\17.80547\\-260.8047\\-153\\17.24718\\-258.8516\\-153\\16.28675\\-256.8984\\-153\\15.16272\\-252.9922\\-153\\14.39398\\-251.0391\\-153\\13.8707\\-249.0859\\-153\\12.99741\\-245.1797\\-153\\12.29795\\-243.2266\\-153\\11.8953\\-241.2734\\-153\\11.43895\\-237.3672\\-153\\11.0919\\-235.4141\\-153\\10.50647\\-233.4609\\-153\\10.14245\\-231.5078\\-153\\9.756369\\-227.6016\\-153\\9.520206\\-223.6953\\-153\\9.083998\\-217.8359\\-153\\8.565267\\-213.9297\\-153\\8.602061\\-211.9766\\-153\\8.47425\\-208.0703\\-153\\8.422074\\-204.1641\\-153\\8.47425\\-200.2578\\-153\\8.614676\\-198.3047\\-153\\9.542989\\-190.4922\\-153\\9.922986\\-186.5859\\-153\\10.09285\\-182.6797\\-153\\10.25391\\-180.7266\\-153\\10.54275\\-178.7734\\-153\\11.43185\\-174.8672\\-153\\11.92882\\-170.9609\\-153\\12.33082\\-169.0078\\-153\\13.01147\\-167.0547\\-153\\13.89146\\-163.1484\\-153\\14.64844\\-161.1628\\-153\\16.50611\\-157.2891\\-153\\18.55469\\-153.8581\\-153\\18.95551\\-153.3828\\-153\\20.04046\\-151.4297\\-153\\22.46094\\-148.5201\\-153\\24.41406\\-146.4575\\-153\\27.3234\\-143.6172\\-153\\30.27344\\-141.028\\-153\\32.31908\\-139.7109\\-153\\34.17969\\-138.6265\\-153\\36.13281\\-137.3437\\-153\\38.08594\\-136.4261\\-153\\40.03906\\-135.206\\-153\\41.99219\\-134.5086\\-153\\43.94531\\-133.5354\\-153\\45.89844\\-132.9654\\-153\\47.85156\\-132.6146\\-153\\51.75781\\-131.3445\\-153\\53.71094\\-130.9582\\-153\\57.61719\\-130.5653\\-153\\61.52344\\-130.2622\\-153\\67.38281\\-130.3247\\-153\\73.24219\\-130.6017\\-153\\79.10156\\-131.0049\\-153\\83.00781\\-131.3704\\-153\\84.96094\\-131.7487\\-153\\86.91406\\-132.6635\\-153\\88.86719\\-132.9286\\-153\\90.82031\\-133.0295\\-153\\94.72656\\-133.0812\\-153\\96.67969\\-133.5673\\-153\\98.63281\\-134.3364\\-153\\100.5859\\-134.435\\-153\\102.5391\\-134.8943\\-153\\104.4922\\-135.4814\\-153\\106.4453\\-136.2579\\-153\\108.3984\\-136.6256\\-153\\110.3516\\-137.1321\\-153\\112.3047\\-138.1387\\-153\\116.2109\\-138.8681\\-153\\118.1641\\-139.3642\\-153\\120.1172\\-140.2058\\-153\\124.0234\\-141.3801\\-153\\125.9766\\-142.3665\\-153\\127.9297\\-143.0944\\-153\\129.8828\\-144.213\\-153\\131.8359\\-144.9377\\-153\\133.7891\\-146.0951\\-153\\135.7422\\-146.9098\\-153\\136.599\\-147.5234\\-153\\139.639\\-149.4766\\-153\\142.3712\\-151.4297\\-153\\147.1139\\-155.3359\\-153\\149.4141\\-157.5291\\-153\\153.3203\\-161.3409\\-153\\155.2734\\-163.7462\\-153\\157.2266\\-166.2751\\-153\\159.1797\\-169.2448\\-153\\161.3957\\-172.9141\\-153\\162.9232\\-176.8203\\-153\\163.7915\\-178.7734\\-153\\164.2722\\-180.7266\\-153\\165.3959\\-184.6328\\-153\\166.1161\\-188.5391\\-153\\166.6794\\-192.4453\\-153\\166.7987\\-194.3984\\-153\\167.1573\\-196.3516\\-153\\167.4071\\-198.3047\\-153\\167.511\\-200.2578\\-153\\167.6018\\-206.1172\\-153\\167.5078\\-210.0234\\-153\\167.2279\\-213.9297\\-153\\166.9922\\-215.8286\\-153\\166.3882\\-219.7891\\-153\\165.6304\\-225.6484\\-153\\165.2007\\-227.6016\\-153\\164.5538\\-229.5547\\-153\\163.7827\\-233.4609\\-153\\162.4204\\-237.3672\\-153\\161.9962\\-239.3203\\-153\\161.368\\-241.2734\\-153\\160.3933\\-243.2266\\-153\\159.7064\\-245.1797\\-153\\158.5381\\-247.1328\\-153\\157.7838\\-249.0859\\-153\\156.5734\\-251.0391\\-153\\155.9095\\-252.9922\\-153\\154.668\\-254.9453\\-153\\153.734\\-256.8984\\-153\\153.3203\\-257.4076\\-153\\151.3672\\-260.3417\\-153\\150.9751\\-260.8047\\-153\\149.8286\\-262.7578\\-153\\148.4375\\-264.7109\\-153\\146.8555\\-266.6641\\-153\\145.104\\-268.6172\\-153\\141.9119\\-272.5234\\-153\\139.6484\\-274.8657\\-153\\137.8706\\-276.4297\\-153\\135.9175\\-278.3828\\-153\\133.78\\-280.3359\\-153\\129.8828\\-283.4195\\-153\\128.9444\\-284.2422\\-153\\125.9766\\-286.6102\\-153\\120.1172\\-290.3406\\-153\\118.1641\\-291.3711\\-153\\116.2109\\-292.7268\\-153\\114.2578\\-293.6211\\-153\\112.3047\\-294.7418\\-153\\110.3516\\-295.3555\\-153\\108.3984\\-296.3898\\-153\\106.4453\\-297.0122\\-153\\102.5391\\-298.7444\\-153\\100.5859\\-299.373\\-153\\98.63281\\-300.2014\\-153\\96.67969\\-300.6724\\-153\\92.77344\\-301.4202\\-153\\90.82031\\-301.9931\\-153\\88.86719\\-302.3793\\-153\\86.91406\\-302.6351\\-153\\84.96094\\-302.7804\\-153\\77.14844\\-303.2336\\-153\\75.19531\\-303.3135\\-153\\71.28906\\-303.333\\-153\\67.38281\\-303.1398\\-153\\61.52344\\-302.6712\\-153"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002377"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "186"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-303.9221\\-151\\-81.05469\\-303.5781\\-151\\-84.96094\\-303.0022\\-151\\-88.86719\\-302.6283\\-151\\-90.82031\\-302.302\\-151\\-94.72656\\-301.2006\\-151\\-98.63281\\-300.2693\\-151\\-100.5859\\-299.3611\\-151\\-102.5391\\-298.6532\\-151\\-104.4922\\-297.5908\\-151\\-106.4453\\-296.7972\\-151\\-110.3516\\-294.9294\\-151\\-114.2578\\-292.7151\\-151\\-116.2109\\-291.2234\\-151\\-118.1641\\-289.8517\\-151\\-120.1172\\-288.758\\-151\\-122.0703\\-287.1971\\-151\\-125.9766\\-283.7715\\-151\\-127.8845\\-282.2891\\-151\\-129.8828\\-280.431\\-151\\-131.7775\\-278.3828\\-151\\-133.7636\\-276.4297\\-151\\-135.7422\\-274.2884\\-151\\-136.9996\\-272.5234\\-151\\-138.6317\\-270.5703\\-151\\-140.3809\\-268.6172\\-151\\-141.8732\\-266.6641\\-151\\-142.9321\\-264.7109\\-151\\-144.3298\\-262.7578\\-151\\-145.6299\\-260.8047\\-151\\-146.7566\\-258.8516\\-151\\-148.0753\\-256.8984\\-151\\-148.9607\\-254.9453\\-151\\-150.116\\-252.9922\\-151\\-150.8955\\-251.0391\\-151\\-152.1163\\-249.0859\\-151\\-153.0016\\-247.1328\\-151\\-154.0728\\-245.1797\\-151\\-154.7985\\-243.2266\\-151\\-155.8211\\-241.2734\\-151\\-156.3436\\-239.3203\\-151\\-158.0068\\-235.4141\\-151\\-158.6391\\-233.4609\\-151\\-159.6225\\-231.5078\\-151\\-160.794\\-227.6016\\-151\\-161.5851\\-225.6484\\-151\\-162.0147\\-223.6953\\-151\\-162.3251\\-221.7422\\-151\\-162.7441\\-219.7891\\-151\\-163.4294\\-217.8359\\-151\\-163.8449\\-215.8828\\-151\\-164.4244\\-211.9766\\-151\\-164.8072\\-210.0234\\-151\\-165.2982\\-208.0703\\-151\\-165.561\\-206.1172\\-151\\-165.8331\\-202.2109\\-151\\-165.8825\\-200.2578\\-151\\-165.8273\\-196.3516\\-151\\-165.5444\\-192.4453\\-151\\-165.2007\\-190.4922\\-151\\-164.6242\\-188.5391\\-151\\-163.8128\\-184.6328\\-151\\-163.1705\\-182.6797\\-151\\-162.3628\\-180.7266\\-151\\-161.8448\\-178.7734\\-151\\-159.8925\\-174.8672\\-151\\-158.4503\\-172.9141\\-151\\-155.9947\\-169.0078\\-151\\-154.4411\\-167.0547\\-151\\-152.7613\\-165.1016\\-151\\-150.897\\-163.1484\\-151\\-149.4141\\-161.4374\\-151\\-147.1382\\-159.2422\\-151\\-145.5078\\-157.9335\\-151\\-141.6016\\-154.4908\\-151\\-139.6484\\-153.031\\-151\\-137.6953\\-152.0433\\-151\\-135.7422\\-150.613\\-151\\-133.7891\\-149.3545\\-151\\-130.5762\\-147.5234\\-151\\-129.8828\\-147.0485\\-151\\-127.9297\\-146.338\\-151\\-125.9766\\-145.3171\\-151\\-124.0234\\-144.566\\-151\\-120.1172\\-142.7122\\-151\\-118.1641\\-141.9203\\-151\\-116.2109\\-140.9834\\-151\\-114.2578\\-140.425\\-151\\-110.3516\\-138.9649\\-151\\-108.3984\\-138.5264\\-151\\-104.4922\\-137.0215\\-151\\-102.5391\\-136.4944\\-151\\-100.5859\\-135.6693\\-151\\-98.63281\\-135.0921\\-151\\-94.72656\\-134.1256\\-151\\-92.77344\\-133.4302\\-151\\-90.82031\\-133.0739\\-151\\-86.91406\\-132.625\\-151\\-84.96094\\-132.3009\\-151\\-83.00781\\-131.7345\\-151\\-81.05469\\-131.3038\\-151\\-79.10156\\-131.0823\\-151\\-75.19531\\-130.7567\\-151\\-71.28906\\-130.4978\\-151\\-67.38281\\-130.401\\-151\\-63.47656\\-130.419\\-151\\-59.57031\\-130.6258\\-151\\-55.66406\\-130.9451\\-151\\-53.71094\\-131.1537\\-151\\-51.75781\\-131.5066\\-151\\-49.80469\\-132.1984\\-151\\-47.85156\\-132.6439\\-151\\-45.89844\\-132.9109\\-151\\-43.94531\\-133.3435\\-151\\-41.99219\\-134.2381\\-151\\-40.03906\\-134.9263\\-151\\-38.08594\\-135.797\\-151\\-32.22656\\-138.9642\\-151\\-28.43896\\-141.6641\\-151\\-26.27458\\-143.6172\\-151\\-22.46094\\-147.6958\\-151\\-19.58101\\-151.4297\\-151\\-18.31055\\-153.3828\\-151\\-17.38175\\-155.3359\\-151\\-16.1438\\-157.2891\\-151\\-15.42426\\-159.2422\\-151\\-14.4322\\-161.1953\\-151\\-13.84523\\-163.1484\\-151\\-12.97331\\-167.0547\\-151\\-12.27392\\-169.0078\\-151\\-11.90848\\-170.9609\\-151\\-11.48395\\-174.8672\\-151\\-11.18382\\-176.8203\\-151\\-10.33579\\-180.7266\\-151\\-10.09971\\-182.6797\\-151\\-9.857321\\-186.5859\\-151\\-9.71398\\-190.4922\\-151\\-9.732441\\-192.4453\\-151\\-9.880786\\-196.3516\\-151\\-9.86649\\-200.2578\\-151\\-9.975228\\-204.1641\\-151\\-9.679033\\-208.0703\\-151\\-9.470016\\-213.9297\\-151\\-9.6268\\-219.7891\\-151\\-10.10665\\-225.6484\\-151\\-10.53049\\-227.6016\\-151\\-10.78033\\-229.5547\\-151\\-11.19626\\-231.5078\\-151\\-11.45583\\-233.4609\\-151\\-11.84353\\-237.3672\\-151\\-12.1563\\-239.3203\\-151\\-13.24142\\-243.2266\\-151\\-13.9608\\-247.1328\\-151\\-14.45875\\-249.0859\\-151\\-15.27544\\-251.0391\\-151\\-15.79255\\-252.9922\\-151\\-16.45296\\-254.9453\\-151\\-17.37968\\-256.8984\\-151\\-17.90926\\-258.8516\\-151\\-18.97608\\-260.8047\\-151\\-19.54309\\-262.7578\\-151\\-20.21976\\-264.7109\\-151\\-21.27041\\-266.6641\\-151\\-22.11217\\-268.6172\\-151\\-23.35394\\-270.5703\\-151\\-24.39135\\-272.5234\\-151\\-27.6753\\-278.3828\\-151\\-30.27344\\-281.9362\\-151\\-30.59156\\-282.2891\\-151\\-31.798\\-284.2422\\-151\\-33.23403\\-286.1953\\-151\\-34.84613\\-288.1484\\-151\\-40.30462\\-294.0078\\-151\\-41.99219\\-295.2254\\-151\\-43.94531\\-296.8177\\-151\\-45.89844\\-298.2171\\-151\\-47.85156\\-299.2538\\-151\\-49.80469\\-300.4261\\-151\\-51.75781\\-301.0621\\-151\\-55.66406\\-302.53\\-151\\-59.57031\\-303.1282\\-151\\-63.47656\\-303.9729\\-151\\-65.42969\\-304.2081\\-151\\-69.33594\\-304.402\\-151\\-73.24219\\-304.3732\\-151\\-77.14844\\-304.1604\\-151"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002377"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "179"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.3416\\-151\\55.66406\\-301.1837\\-151\\53.71094\\-300.7051\\-151\\51.75781\\-299.9505\\-151\\47.86163\\-297.9141\\-151\\45.89844\\-296.7718\\-151\\43.94531\\-295.4252\\-151\\41.99219\\-294.3661\\-151\\40.03906\\-292.8273\\-151\\36.13281\\-289.2054\\-151\\34.92273\\-288.1484\\-151\\33.07547\\-286.1953\\-151\\29.68618\\-282.2891\\-151\\28.125\\-280.3359\\-151\\26.95184\\-278.3828\\-151\\25.60484\\-276.4297\\-151\\23.33984\\-272.5234\\-151\\22.00396\\-270.5703\\-151\\21.17283\\-268.6172\\-151\\20.02276\\-266.6641\\-151\\19.46023\\-264.7109\\-151\\18.78231\\-262.7578\\-151\\17.78886\\-260.8047\\-151\\17.21398\\-258.8516\\-151\\16.23457\\-256.8984\\-151\\15.0791\\-252.9922\\-151\\14.30107\\-251.0391\\-151\\13.8172\\-249.0859\\-151\\12.9713\\-245.1797\\-151\\12.2635\\-243.2266\\-151\\11.87151\\-241.2734\\-151\\11.40625\\-237.3672\\-151\\11.02218\\-235.4141\\-151\\10.42737\\-233.4609\\-151\\10.09971\\-231.5078\\-151\\9.728599\\-227.6016\\-151\\9.051724\\-217.8359\\-151\\8.627473\\-213.9297\\-151\\8.614676\\-211.9766\\-151\\8.463542\\-208.0703\\-151\\8.422074\\-202.2109\\-151\\8.44254\\-200.2578\\-151\\8.565267\\-198.3047\\-151\\9.271389\\-192.4453\\-151\\9.553109\\-190.4922\\-151\\9.956287\\-186.5859\\-151\\10.14985\\-182.6797\\-151\\10.32624\\-180.7266\\-151\\10.6756\\-178.7734\\-151\\11.1341\\-176.8203\\-151\\11.48802\\-174.8672\\-151\\11.96145\\-170.9609\\-151\\12.39102\\-169.0078\\-151\\13.04854\\-167.0547\\-151\\13.90301\\-163.1484\\-151\\14.61088\\-161.1953\\-151\\16.47859\\-157.2891\\-151\\18.55469\\-153.7752\\-151\\18.89015\\-153.3828\\-151\\20.00578\\-151.4297\\-151\\22.46094\\-148.4799\\-151\\24.41406\\-146.4222\\-151\\27.26293\\-143.6172\\-151\\30.27344\\-140.9855\\-151\\32.22656\\-139.7026\\-151\\34.17969\\-138.5767\\-151\\36.13281\\-137.2521\\-151\\38.08594\\-136.33\\-151\\40.03906\\-135.1365\\-151\\41.99219\\-134.43\\-151\\43.94531\\-133.4379\\-151\\45.89844\\-132.9109\\-151\\47.85156\\-132.5515\\-151\\51.75781\\-131.2492\\-151\\53.71094\\-130.9465\\-151\\57.61719\\-130.4658\\-151\\61.52344\\-130.0683\\-151\\63.47656\\-130.0124\\-151\\67.38281\\-130.1691\\-151\\71.28906\\-130.401\\-151\\81.05469\\-131.0579\\-151\\84.96094\\-131.5166\\-151\\86.91406\\-132.4135\\-151\\88.86719\\-132.7931\\-151\\90.82031\\-132.9229\\-151\\94.72656\\-132.9948\\-151\\98.63281\\-134.2151\\-151\\100.5859\\-134.2805\\-151\\102.5391\\-134.7552\\-151\\104.4922\\-135.3288\\-151\\106.4453\\-136.0767\\-151\\108.3984\\-136.5103\\-151\\110.3516\\-137.0661\\-151\\112.3047\\-138.1554\\-151\\114.2578\\-138.5285\\-151\\116.2109\\-138.7795\\-151\\118.1641\\-139.1575\\-151\\120.1172\\-140.0032\\-151\\124.0234\\-141.1981\\-151\\125.9766\\-142.1984\\-151\\127.9297\\-142.9569\\-151\\129.8828\\-144.0664\\-151\\131.8359\\-144.8277\\-151\\133.7891\\-145.9595\\-151\\135.7422\\-146.7894\\-151\\137.6953\\-148.0842\\-151\\139.6484\\-149.2408\\-151\\142.5781\\-151.4297\\-151\\147.3832\\-155.3359\\-151\\151.3672\\-159.0991\\-151\\153.4339\\-161.1953\\-151\\157.2266\\-166.103\\-151\\159.2175\\-169.0078\\-151\\161.1328\\-172.4205\\-151\\161.4753\\-172.9141\\-151\\162.2228\\-174.8672\\-151\\163.0939\\-176.8203\\-151\\163.8595\\-178.7734\\-151\\164.3375\\-180.7266\\-151\\165.0391\\-182.7478\\-151\\165.5244\\-184.6328\\-151\\166.7589\\-192.4453\\-151\\167.3087\\-196.3516\\-151\\167.5817\\-200.2578\\-151\\167.649\\-206.1172\\-151\\167.4528\\-211.9766\\-151\\167.073\\-215.8828\\-151\\166.4317\\-219.7891\\-151\\165.6528\\-225.6484\\-151\\165.2261\\-227.6016\\-151\\164.5631\\-229.5547\\-151\\163.7897\\-233.4609\\-151\\162.4079\\-237.3672\\-151\\161.9843\\-239.3203\\-151\\161.3426\\-241.2734\\-151\\160.3751\\-243.2266\\-151\\159.6858\\-245.1797\\-151\\158.5118\\-247.1328\\-151\\157.7439\\-249.0859\\-151\\156.5524\\-251.0391\\-151\\155.8789\\-252.9922\\-151\\154.6502\\-254.9453\\-151\\153.6874\\-256.8984\\-151\\153.3203\\-257.3408\\-151\\151.3672\\-260.2549\\-151\\150.9032\\-260.8047\\-151\\149.7685\\-262.7578\\-151\\148.3931\\-264.7109\\-151\\146.7863\\-266.6641\\-151\\143.3281\\-270.5703\\-151\\141.7827\\-272.5234\\-151\\139.6484\\-274.7589\\-151\\137.7887\\-276.4297\\-151\\135.8193\\-278.3828\\-151\\133.6931\\-280.3359\\-151\\129.8828\\-283.4003\\-151\\128.9216\\-284.2422\\-151\\125.9766\\-286.6001\\-151\\120.1172\\-290.3406\\-151\\118.1641\\-291.3637\\-151\\116.2109\\-292.7232\\-151\\114.2578\\-293.6424\\-151\\112.3047\\-294.7539\\-151\\110.3516\\-295.3776\\-151\\108.3984\\-296.4201\\-151\\106.4453\\-297.0395\\-151\\102.5391\\-298.7666\\-151\\100.5859\\-299.4001\\-151\\98.63281\\-300.2229\\-151\\96.67969\\-300.6838\\-151\\92.77344\\-301.4311\\-151\\90.82031\\-301.9931\\-151\\88.86719\\-302.4012\\-151\\86.91406\\-302.6466\\-151\\81.05469\\-303.0244\\-151\\75.19531\\-303.3135\\-151\\71.28906\\-303.3135\\-151\\67.38281\\-303.1053\\-151\\61.52344\\-302.6648\\-151"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002376"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "183"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "27"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-303.9604\\-149\\-83.00781\\-303.3105\\-149\\-84.96094\\-303.0453\\-149\\-88.86719\\-302.6533\\-149\\-90.82031\\-302.3477\\-149\\-94.72656\\-301.2218\\-149\\-98.63281\\-300.3088\\-149\\-100.5859\\-299.4001\\-149\\-102.5391\\-298.6814\\-149\\-104.4922\\-297.6522\\-149\\-106.4453\\-296.8308\\-149\\-110.3516\\-294.9475\\-149\\-114.2578\\-292.7522\\-149\\-116.2109\\-291.2351\\-149\\-118.1641\\-289.8651\\-149\\-120.1172\\-288.7799\\-149\\-122.0703\\-287.2223\\-149\\-125.9766\\-283.8329\\-149\\-127.9297\\-282.347\\-149\\-129.8828\\-280.5279\\-149\\-131.908\\-278.3828\\-149\\-133.8833\\-276.4297\\-149\\-135.7422\\-274.3936\\-149\\-137.0908\\-272.5234\\-149\\-138.7236\\-270.5703\\-149\\-140.4757\\-268.6172\\-149\\-142.002\\-266.6641\\-149\\-143.0092\\-264.7109\\-149\\-145.8008\\-260.8047\\-149\\-146.8949\\-258.8516\\-149\\-148.1981\\-256.8984\\-149\\-149.1361\\-254.9453\\-149\\-150.222\\-252.9922\\-149\\-151.0706\\-251.0391\\-149\\-152.2455\\-249.0859\\-149\\-154.189\\-245.1797\\-149\\-154.9769\\-243.2266\\-149\\-155.952\\-241.2734\\-149\\-156.4512\\-239.3203\\-149\\-157.4136\\-237.3672\\-149\\-158.8477\\-233.4609\\-149\\-159.7991\\-231.5078\\-149\\-160.3353\\-229.5547\\-149\\-161.7362\\-225.6484\\-149\\-162.4288\\-221.7422\\-149\\-162.9552\\-219.7891\\-149\\-163.6136\\-217.8359\\-149\\-164.2439\\-213.9297\\-149\\-164.6142\\-211.9766\\-149\\-165.5099\\-208.0703\\-149\\-165.7056\\-206.1172\\-149\\-165.9614\\-202.2109\\-149\\-166.0156\\-198.3047\\-149\\-165.976\\-196.3516\\-149\\-165.6988\\-192.4453\\-149\\-165.4358\\-190.4922\\-149\\-164.3455\\-186.5859\\-149\\-163.9464\\-184.6328\\-149\\-163.4294\\-182.6797\\-149\\-162.5325\\-180.7266\\-149\\-161.9672\\-178.7734\\-149\\-160.0349\\-174.8672\\-149\\-158.6488\\-172.9141\\-149\\-157.4779\\-170.9609\\-149\\-155.2734\\-167.874\\-149\\-153.3203\\-165.5293\\-149\\-151.0827\\-163.1484\\-149\\-149.4141\\-161.2563\\-149\\-147.2938\\-159.2422\\-149\\-145.5078\\-157.8461\\-149\\-141.6016\\-154.4533\\-149\\-139.6484\\-152.9823\\-149\\-137.6953\\-152.0209\\-149\\-136.9525\\-151.4297\\-149\\-133.7891\\-149.3022\\-149\\-131.8359\\-148.2342\\-149\\-129.8828\\-146.9986\\-149\\-127.9297\\-146.3135\\-149\\-125.9766\\-145.2309\\-149\\-124.0234\\-144.5268\\-149\\-122.0703\\-143.4818\\-149\\-116.2109\\-140.8934\\-149\\-114.2578\\-140.3387\\-149\\-112.3047\\-139.4816\\-149\\-110.3516\\-138.8747\\-149\\-108.3984\\-138.4188\\-149\\-106.4453\\-137.5584\\-149\\-102.5391\\-136.3802\\-149\\-100.5859\\-135.5341\\-149\\-96.67969\\-134.6041\\-149\\-92.77344\\-133.3963\\-149\\-90.82031\\-133.0498\\-149\\-86.91406\\-132.5943\\-149\\-84.96094\\-132.2217\\-149\\-83.00781\\-131.6358\\-149\\-81.05469\\-131.2387\\-149\\-75.19531\\-130.7015\\-149\\-71.28906\\-130.4365\\-149\\-67.38281\\-130.3021\\-149\\-63.47656\\-130.3322\\-149\\-59.57031\\-130.5509\\-149\\-55.66406\\-130.8738\\-149\\-53.71094\\-131.0981\\-149\\-51.75781\\-131.4678\\-149\\-49.80469\\-132.1744\\-149\\-47.85156\\-132.651\\-149\\-45.89844\\-132.9229\\-149\\-43.94531\\-133.3767\\-149\\-41.99219\\-134.2624\\-149\\-40.03906\\-134.9495\\-149\\-38.17033\\-135.8047\\-149\\-36.13281\\-136.8439\\-149\\-34.17969\\-138.0168\\-149\\-32.22656\\-138.9801\\-149\\-28.45721\\-141.6641\\-149\\-26.32398\\-143.6172\\-149\\-22.46094\\-147.6641\\-149\\-19.54369\\-151.4297\\-149\\-18.24951\\-153.3828\\-149\\-17.34484\\-155.3359\\-149\\-16.11628\\-157.2891\\-149\\-15.40006\\-159.2422\\-149\\-14.40774\\-161.1953\\-149\\-13.83846\\-163.1484\\-149\\-12.98545\\-167.0547\\-149\\-12.29519\\-169.0078\\-149\\-11.91518\\-170.9609\\-149\\-11.51399\\-174.8672\\-149\\-11.21841\\-176.8203\\-149\\-10.39567\\-180.7266\\-149\\-10.1279\\-182.6797\\-149\\-9.990618\\-184.6328\\-149\\-9.826078\\-188.5391\\-149\\-9.79366\\-190.4922\\-149\\-9.946986\\-196.3516\\-149\\-9.928386\\-200.2578\\-149\\-9.973204\\-204.1641\\-149\\-9.727515\\-208.0703\\-149\\-9.557088\\-213.9297\\-149\\-9.6952\\-219.7891\\-149\\-9.811908\\-221.7422\\-149\\-10.17253\\-225.6484\\-149\\-11.24563\\-227.6016\\-149\\-10.94593\\-229.5547\\-149\\-11.30106\\-231.5078\\-149\\-11.92197\\-237.3672\\-149\\-12.2635\\-239.3203\\-149\\-12.86677\\-241.2734\\-149\\-13.31505\\-243.2266\\-149\\-14.03073\\-247.1328\\-149\\-14.64844\\-249.0675\\-149\\-15.39924\\-251.0391\\-149\\-15.8864\\-252.9922\\-149\\-17.49717\\-256.8984\\-149\\-18.0603\\-258.8516\\-149\\-19.11542\\-260.8047\\-149\\-19.63909\\-262.7578\\-149\\-20.4094\\-264.7109\\-149\\-22.46094\\-268.8232\\-149\\-24.41406\\-272.2278\\-149\\-24.65278\\-272.5234\\-149\\-25.56046\\-274.4766\\-149\\-26.7817\\-276.4297\\-149\\-27.80404\\-278.3828\\-149\\-30.27344\\-281.7031\\-149\\-30.78562\\-282.2891\\-149\\-31.96565\\-284.2422\\-149\\-33.32753\\-286.1953\\-149\\-34.95708\\-288.1484\\-149\\-36.79456\\-290.1016\\-149\\-40.03906\\-293.6745\\-149\\-43.94531\\-296.7798\\-149\\-45.89844\\-298.1685\\-149\\-47.85156\\-299.226\\-149\\-49.80469\\-300.4138\\-149\\-51.75781\\-301.0621\\-149\\-55.66406\\-302.5179\\-149\\-59.57031\\-303.1166\\-149\\-63.47656\\-303.9478\\-149\\-65.42969\\-304.2081\\-149\\-69.33594\\-304.409\\-149\\-73.24219\\-304.3877\\-149\\-77.14844\\-304.1988\\-149"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002376"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "179"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.3186\\-149\\55.66406\\-301.159\\-149\\53.71094\\-300.6819\\-149\\51.75781\\-299.9206\\-149\\47.85156\\-297.9217\\-149\\45.89844\\-296.7767\\-149\\43.94531\\-295.4289\\-149\\41.99219\\-294.3802\\-149\\40.03906\\-292.8198\\-149\\36.13281\\-289.211\\-149\\34.92606\\-288.1484\\-149\\33.07547\\-286.1953\\-149\\29.66391\\-282.2891\\-149\\28.08679\\-280.3359\\-149\\26.92057\\-278.3828\\-149\\25.57216\\-276.4297\\-149\\23.34449\\-272.5234\\-149\\22.04606\\-270.5703\\-149\\21.21538\\-268.6172\\-149\\20.05558\\-266.6641\\-149\\18.78231\\-262.7578\\-149\\17.78264\\-260.8047\\-149\\17.19527\\-258.8516\\-149\\16.21462\\-256.8984\\-149\\15.0303\\-252.9922\\-149\\14.24893\\-251.0391\\-149\\12.95906\\-245.1797\\-149\\12.24002\\-243.2266\\-149\\11.8606\\-241.2734\\-149\\11.38762\\-237.3672\\-149\\10.98633\\-235.4141\\-149\\10.39567\\-233.4609\\-149\\10.08606\\-231.5078\\-149\\9.709555\\-227.6016\\-149\\9.028081\\-217.8359\\-149\\8.708294\\-213.9297\\-149\\8.452972\\-208.0703\\-149\\8.402122\\-200.2578\\-149\\8.4851\\-198.3047\\-149\\9.190813\\-192.4453\\-149\\9.788877\\-188.5391\\-149\\9.956287\\-186.5859\\-149\\10.16488\\-182.6797\\-149\\10.36516\\-180.7266\\-149\\11.21511\\-176.8203\\-149\\11.53927\\-174.8672\\-149\\11.98774\\-170.9609\\-149\\12.42963\\-169.0078\\-149\\13.08457\\-167.0547\\-149\\13.89591\\-163.1484\\-149\\14.58185\\-161.1953\\-149\\15.55675\\-159.2422\\-149\\16.41323\\-157.2891\\-149\\19.96228\\-151.4297\\-149\\22.46094\\-148.4538\\-149\\24.41406\\-146.3725\\-149\\27.18991\\-143.6172\\-149\\30.27344\\-140.9395\\-149\\32.22656\\-139.6383\\-149\\34.17969\\-138.5181\\-149\\36.13281\\-137.1675\\-149\\38.08594\\-136.2251\\-149\\40.03906\\-135.0652\\-149\\41.99219\\-134.3463\\-149\\43.94531\\-133.3567\\-149\\47.85156\\-132.4645\\-149\\49.80469\\-131.6962\\-149\\51.75781\\-131.1813\\-149\\59.57031\\-130.1081\\-149\\61.52344\\-129.8645\\-149\\63.47656\\-129.7709\\-149\\67.38281\\-129.9529\\-149\\73.24219\\-130.4307\\-149\\79.10156\\-130.8353\\-149\\83.00781\\-131.1416\\-149\\84.96094\\-131.346\\-149\\86.91406\\-132.1028\\-149\\88.86719\\-132.6399\\-149\\90.82031\\-132.8158\\-149\\92.77344\\-132.8221\\-149\\94.72656\\-132.9342\\-149\\96.67969\\-133.6187\\-149\\98.63281\\-134.0677\\-149\\100.5859\\-134.1771\\-149\\102.5391\\-134.6059\\-149\\106.4453\\-135.8126\\-149\\108.3984\\-136.2867\\-149\\110.3516\\-136.9183\\-149\\112.3047\\-137.9943\\-149\\114.2578\\-138.3729\\-149\\118.1641\\-138.9968\\-149\\122.0703\\-140.4588\\-149\\124.0234\\-141.0272\\-149\\125.9766\\-141.9735\\-149\\127.9297\\-142.798\\-149\\129.8828\\-143.8685\\-149\\131.8359\\-144.7228\\-149\\133.7891\\-145.7916\\-149\\135.7422\\-146.6783\\-149\\139.6484\\-149.0432\\-149\\142.775\\-151.4297\\-149\\143.5547\\-152.1154\\-149\\147.4609\\-155.0827\\-149\\151.3672\\-158.872\\-149\\153.6628\\-161.1953\\-149\\156.5194\\-165.1016\\-149\\157.2266\\-165.9561\\-149\\159.3805\\-169.0078\\-149\\160.4167\\-170.9609\\-149\\161.6313\\-172.9141\\-149\\162.2813\\-174.8672\\-149\\163.2136\\-176.8203\\-149\\163.9238\\-178.7734\\-149\\164.4014\\-180.7266\\-149\\165.1611\\-182.6797\\-149\\165.659\\-184.6328\\-149\\166.5039\\-190.4922\\-149\\166.9922\\-192.8848\\-149\\167.4297\\-196.3516\\-149\\167.5563\\-198.3047\\-149\\167.6723\\-202.2109\\-149\\167.6988\\-206.1172\\-149\\167.5981\\-210.0234\\-149\\167.4956\\-211.9766\\-149\\167.1538\\-215.8828\\-149\\166.4686\\-219.7891\\-149\\165.6672\\-225.6484\\-149\\165.2261\\-227.6016\\-149\\164.5538\\-229.5547\\-149\\163.7827\\-233.4609\\-149\\162.3999\\-237.3672\\-149\\161.9724\\-239.3203\\-149\\161.315\\-241.2734\\-149\\160.3504\\-243.2266\\-149\\159.668\\-245.1797\\-149\\158.4861\\-247.1328\\-149\\157.7119\\-249.0859\\-149\\156.5317\\-251.0391\\-149\\155.8475\\-252.9922\\-149\\154.633\\-254.9453\\-149\\153.6505\\-256.8984\\-149\\153.3203\\-257.2874\\-149\\151.3672\\-260.1781\\-149\\150.845\\-260.8047\\-149\\149.6899\\-262.7578\\-149\\148.3367\\-264.7109\\-149\\146.716\\-266.6641\\-149\\143.2192\\-270.5703\\-149\\141.6016\\-272.5145\\-149\\139.6484\\-274.625\\-149\\137.6953\\-276.3708\\-149\\135.6671\\-278.3828\\-149\\133.5954\\-280.3359\\-149\\129.8828\\-283.3734\\-149\\128.9063\\-284.2422\\-149\\125.9766\\-286.5898\\-149\\120.1172\\-290.3525\\-149\\118.1641\\-291.3563\\-149\\116.2109\\-292.7423\\-149\\114.2578\\-293.6778\\-149\\112.3047\\-294.7734\\-149\\110.3516\\-295.4001\\-149\\108.3984\\-296.4619\\-149\\106.4453\\-297.0731\\-149\\104.4922\\-298.0226\\-149\\102.5391\\-298.7769\\-149\\100.5859\\-299.4066\\-149\\98.63281\\-300.2438\\-149\\96.67969\\-300.6953\\-149\\92.77344\\-301.4447\\-149\\90.82031\\-302.0081\\-149\\88.86719\\-302.4101\\-149\\86.91406\\-302.6533\\-149\\81.05469\\-303.0355\\-149\\77.14844\\-303.2336\\-149\\73.24219\\-303.3135\\-149\\71.28906\\-303.2852\\-149\\67.38281\\-303.0678\\-149\\61.52344\\-302.6466\\-149"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002375"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "174"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "29"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-304.0209\\-147\\-83.00781\\-303.333\\-147\\-86.91406\\-302.8559\\-147\\-88.86719\\-302.6776\\-147\\-90.82031\\-302.3884\\-147\\-94.72656\\-301.2485\\-147\\-98.63281\\-300.3524\\-147\\-100.5859\\-299.4407\\-147\\-102.5391\\-298.7155\\-147\\-104.4922\\-297.7173\\-147\\-106.4453\\-296.8628\\-147\\-110.3516\\-294.9598\\-147\\-114.2578\\-292.7816\\-147\\-116.2109\\-291.2487\\-147\\-118.1641\\-289.8669\\-147\\-120.1172\\-288.8016\\-147\\-122.0703\\-287.2533\\-147\\-125.9766\\-283.8851\\-147\\-127.9297\\-282.4251\\-147\\-129.8828\\-280.6184\\-147\\-132.0114\\-278.3828\\-147\\-133.9778\\-276.4297\\-147\\-135.7677\\-274.4766\\-147\\-137.1695\\-272.5234\\-147\\-138.8139\\-270.5703\\-147\\-140.557\\-268.6172\\-147\\-142.1102\\-266.6641\\-147\\-143.1013\\-264.7109\\-147\\-145.9246\\-260.8047\\-147\\-147.0349\\-258.8516\\-147\\-148.3077\\-256.8984\\-147\\-149.4141\\-254.7977\\-147\\-151.2798\\-251.0391\\-147\\-153.3203\\-247.34\\-147\\-156.0535\\-241.2734\\-147\\-156.5817\\-239.3203\\-147\\-157.6184\\-237.3672\\-147\\-158.2707\\-235.4141\\-147\\-159.9305\\-231.5078\\-147\\-160.4722\\-229.5547\\-147\\-161.3004\\-227.6016\\-147\\-161.8502\\-225.6484\\-147\\-162.5527\\-221.7422\\-147\\-163.1995\\-219.7891\\-147\\-163.7464\\-217.8359\\-147\\-164.36\\-213.9297\\-147\\-165.332\\-210.0234\\-147\\-165.6567\\-208.0703\\-147\\-165.976\\-204.1641\\-147\\-166.1441\\-200.2578\\-147\\-166.1067\\-196.3516\\-147\\-165.8213\\-192.4453\\-147\\-165.5963\\-190.4922\\-147\\-165.1198\\-188.5391\\-147\\-164.4939\\-186.5859\\-147\\-163.6169\\-182.6797\\-147\\-162.6883\\-180.7266\\-147\\-162.0667\\-178.7734\\-147\\-161.2181\\-176.8203\\-147\\-160.1396\\-174.8672\\-147\\-158.8329\\-172.9141\\-147\\-157.6584\\-170.9609\\-147\\-155.2734\\-167.6746\\-147\\-153.3203\\-165.3625\\-147\\-149.4141\\-161.1168\\-147\\-147.3976\\-159.2422\\-147\\-145.5078\\-157.7738\\-147\\-141.6016\\-154.4216\\-147\\-139.6484\\-152.9465\\-147\\-137.6953\\-152.0077\\-147\\-136.9691\\-151.4297\\-147\\-133.7891\\-149.2649\\-147\\-131.8359\\-148.2076\\-147\\-129.8828\\-146.9663\\-147\\-127.9297\\-146.2856\\-147\\-125.9766\\-145.1947\\-147\\-124.0234\\-144.4809\\-147\\-122.0703\\-143.3934\\-147\\-120.1172\\-142.5724\\-147\\-118.1641\\-141.6107\\-147\\-116.2109\\-140.8161\\-147\\-114.2578\\-140.2513\\-147\\-112.3047\\-139.3642\\-147\\-108.3984\\-138.3239\\-147\\-106.4453\\-137.4217\\-147\\-102.5391\\-136.305\\-147\\-100.5859\\-135.4686\\-147\\-96.67969\\-134.5854\\-147\\-92.77344\\-133.3831\\-147\\-90.82031\\-133.0308\\-147\\-86.91406\\-132.5436\\-147\\-84.96094\\-132.1227\\-147\\-83.00781\\-131.537\\-147\\-81.05469\\-131.1796\\-147\\-75.19531\\-130.6429\\-147\\-71.28906\\-130.3517\\-147\\-67.38281\\-130.181\\-147\\-63.47656\\-130.2159\\-147\\-61.52344\\-130.2964\\-147\\-55.66406\\-130.7381\\-147\\-53.71094\\-131.0054\\-147\\-51.75781\\-131.4131\\-147\\-49.80469\\-132.1114\\-147\\-47.85156\\-132.6439\\-147\\-45.89844\\-132.9349\\-147\\-43.94531\\-133.39\\-147\\-41.99219\\-134.2805\\-147\\-40.03906\\-134.9557\\-147\\-36.13281\\-136.8453\\-147\\-34.17969\\-138.0315\\-147\\-32.22656\\-138.9834\\-147\\-28.42262\\-141.6641\\-147\\-26.30722\\-143.6172\\-147\\-22.46094\\-147.6152\\-147\\-19.50637\\-151.4297\\-147\\-18.21588\\-153.3828\\-147\\-17.3133\\-155.3359\\-147\\-16.08975\\-157.2891\\-147\\-15.38224\\-159.2422\\-147\\-14.39576\\-161.1953\\-147\\-13.82698\\-163.1484\\-147\\-13.00921\\-167.0547\\-147\\-12.33082\\-169.0078\\-147\\-11.92882\\-170.9609\\-147\\-11.54307\\-174.8672\\-147\\-10.97238\\-178.7734\\-147\\-10.4947\\-180.7266\\-147\\-10.18807\\-182.6797\\-147\\-9.94873\\-186.5859\\-147\\-9.896457\\-190.4922\\-147\\-10.03689\\-196.3516\\-147\\-9.994284\\-204.1641\\-147\\-9.789328\\-208.0703\\-147\\-9.658737\\-211.9766\\-147\\-9.72296\\-217.8359\\-147\\-9.86236\\-221.7422\\-147\\-10.01827\\-223.6953\\-147\\-10.64745\\-225.6484\\-147\\-11.57003\\-227.6016\\-147\\-11.04318\\-229.5547\\-147\\-11.38006\\-231.5078\\-147\\-12.01468\\-237.3672\\-147\\-12.36747\\-239.3203\\-147\\-12.98545\\-241.2734\\-147\\-14.09466\\-247.1328\\-147\\-15.50356\\-251.0391\\-147\\-15.99855\\-252.9922\\-147\\-16.95726\\-254.9453\\-147\\-18.24951\\-258.8516\\-147\\-19.23587\\-260.8047\\-147\\-19.72535\\-262.7578\\-147\\-21.51035\\-266.6641\\-147\\-23.57328\\-270.5703\\-147\\-24.84588\\-272.5234\\-147\\-25.6633\\-274.4766\\-147\\-26.92805\\-276.4297\\-147\\-27.95493\\-278.3828\\-147\\-30.27344\\-281.497\\-147\\-30.93957\\-282.2891\\-147\\-33.42223\\-286.1953\\-147\\-35.04284\\-288.1484\\-147\\-40.51947\\-294.0078\\-147\\-43.94531\\-296.741\\-147\\-45.89844\\-298.1038\\-147\\-47.85156\\-299.1987\\-147\\-49.80469\\-300.3959\\-147\\-51.75781\\-301.0574\\-147\\-55.66406\\-302.51\\-147\\-59.57031\\-303.1166\\-147\\-63.47656\\-303.935\\-147\\-65.42969\\-304.1988\\-147\\-67.38281\\-304.3431\\-147\\-71.28906\\-304.4296\\-147\\-75.19531\\-304.3354\\-147"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002375"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "178"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.285\\-147\\57.61719\\-301.6489\\-147\\53.71094\\-300.6588\\-147\\51.75781\\-299.875\\-147\\47.86174\\-297.9141\\-147\\45.89844\\-296.7648\\-147\\43.94531\\-295.4058\\-147\\41.99219\\-294.3661\\-147\\40.03906\\-292.8073\\-147\\37.13669\\-290.1016\\-147\\34.94847\\-288.1484\\-147\\33.08823\\-286.1953\\-147\\29.6508\\-282.2891\\-147\\28.07442\\-280.3359\\-147\\26.89807\\-278.3828\\-147\\25.55751\\-276.4297\\-147\\24.5014\\-274.4766\\-147\\22.46094\\-271.0374\\-147\\22.10046\\-270.5703\\-147\\21.24168\\-268.6172\\-147\\20.076\\-266.6641\\-147\\18.78403\\-262.7578\\-147\\17.78264\\-260.8047\\-147\\17.21398\\-258.8516\\-147\\16.20483\\-256.8984\\-147\\15.01778\\-252.9922\\-147\\14.22631\\-251.0391\\-147\\12.9713\\-245.1797\\-147\\12.26054\\-243.2266\\-147\\11.8606\\-241.2734\\-147\\11.38762\\-237.3672\\-147\\10.97238\\-235.4141\\-147\\10.4061\\-233.4609\\-147\\10.08606\\-231.5078\\-147\\9.709555\\-227.6016\\-147\\9.15288\\-219.7891\\-147\\8.518528\\-210.0234\\-147\\8.422074\\-206.1172\\-147\\8.382667\\-200.2578\\-147\\8.44254\\-198.3047\\-147\\9.148186\\-192.4453\\-147\\9.779576\\-188.5391\\-147\\9.946986\\-186.5859\\-147\\10.18025\\-182.6797\\-147\\10.42737\\-180.7266\\-147\\11.28406\\-176.8203\\-147\\11.56649\\-174.8672\\-147\\12.01468\\-170.9609\\-147\\12.48076\\-169.0078\\-147\\13.10614\\-167.0547\\-147\\13.89591\\-163.1484\\-147\\14.56706\\-161.1953\\-147\\15.52998\\-159.2422\\-147\\16.35064\\-157.2891\\-147\\19.92985\\-151.4297\\-147\\22.46094\\-148.4406\\-147\\24.41406\\-146.3306\\-147\\27.13352\\-143.6172\\-147\\30.27344\\-140.8841\\-147\\32.22656\\-139.5327\\-147\\34.17969\\-138.449\\-147\\36.13281\\-137.1156\\-147\\38.08594\\-136.112\\-147\\40.03906\\-134.9955\\-147\\41.99219\\-134.2381\\-147\\43.94531\\-133.2669\\-147\\47.85156\\-132.3507\\-147\\49.80469\\-131.5474\\-147\\51.75781\\-131.1065\\-147\\55.66406\\-130.5766\\-147\\59.57031\\-129.9377\\-147\\61.52344\\-129.7215\\-147\\63.47656\\-129.6198\\-147\\67.38281\\-129.7583\\-147\\69.33594\\-129.8931\\-147\\75.19531\\-130.4733\\-147\\83.00781\\-131.054\\-147\\84.96094\\-131.2387\\-147\\86.91406\\-131.6731\\-147\\88.86719\\-132.3179\\-147\\90.82031\\-132.5889\\-147\\94.72656\\-132.8691\\-147\\96.67969\\-133.4945\\-147\\98.63281\\-133.9076\\-147\\100.5859\\-134.0903\\-147\\102.5391\\-134.4596\\-147\\108.3984\\-135.9589\\-147\\110.3516\\-136.7057\\-147\\112.3047\\-137.5796\\-147\\114.2578\\-137.9485\\-147\\118.1641\\-138.8513\\-147\\120.1172\\-139.4022\\-147\\122.0703\\-140.2773\\-147\\124.0234\\-140.8651\\-147\\125.9341\\-141.6641\\-147\\129.8828\\-143.565\\-147\\131.8359\\-144.5992\\-147\\133.7891\\-145.5303\\-147\\135.7422\\-146.5592\\-147\\139.6484\\-148.8427\\-147\\142.9798\\-151.4297\\-147\\143.5547\\-151.95\\-147\\145.5078\\-153.2779\\-147\\147.4609\\-154.8339\\-147\\151.3672\\-158.6831\\-147\\153.8295\\-161.1953\\-147\\155.3309\\-163.1484\\-147\\156.6145\\-165.1016\\-147\\157.2266\\-165.8199\\-147\\159.4966\\-169.0078\\-147\\160.5202\\-170.9609\\-147\\161.7513\\-172.9141\\-147\\162.3277\\-174.8672\\-147\\163.3085\\-176.8203\\-147\\163.9723\\-178.7734\\-147\\164.4566\\-180.7266\\-147\\165.2508\\-182.6797\\-147\\165.7441\\-184.6328\\-147\\166.6101\\-190.4922\\-147\\167.0588\\-192.4453\\-147\\167.3503\\-194.3984\\-147\\167.5232\\-196.3516\\-147\\167.7289\\-202.2109\\-147\\167.7473\\-206.1172\\-147\\167.6374\\-210.0234\\-147\\167.3891\\-213.9297\\-147\\167.1792\\-215.8828\\-147\\166.4919\\-219.7891\\-147\\165.6672\\-225.6484\\-147\\165.2007\\-227.6016\\-147\\164.5356\\-229.5547\\-147\\163.7612\\-233.4609\\-147\\162.3875\\-237.3672\\-147\\161.9605\\-239.3203\\-147\\161.287\\-241.2734\\-147\\160.3394\\-243.2266\\-147\\159.6375\\-245.1797\\-147\\158.461\\-247.1328\\-147\\157.6796\\-249.0859\\-147\\156.5158\\-251.0391\\-147\\155.8211\\-252.9922\\-147\\154.5993\\-254.9453\\-147\\153.6004\\-256.8984\\-147\\151.3672\\-260.1025\\-147\\150.7892\\-260.8047\\-147\\149.6063\\-262.7578\\-147\\148.2663\\-264.7109\\-147\\146.6585\\-266.6641\\-147\\144.882\\-268.6172\\-147\\141.4577\\-272.5234\\-147\\139.6484\\-274.4524\\-147\\137.6953\\-276.217\\-147\\133.5325\\-280.3359\\-147\\129.8828\\-283.3464\\-147\\128.8837\\-284.2422\\-147\\125.9766\\-286.5689\\-147\\120.1172\\-290.3642\\-147\\118.1641\\-291.3637\\-147\\116.2109\\-292.7498\\-147\\114.2578\\-293.6913\\-147\\112.3047\\-294.7854\\-147\\110.3516\\-295.4325\\-147\\108.3984\\-296.4897\\-147\\106.4453\\-297.1012\\-147\\104.4922\\-298.0627\\-147\\100.5859\\-299.4199\\-147\\98.63281\\-300.2641\\-147\\96.67969\\-300.7067\\-147\\92.77344\\-301.4558\\-147\\90.82031\\-302.0216\\-147\\88.86719\\-302.4227\\-147\\86.91406\\-302.6648\\-147\\81.05469\\-303.0355\\-147\\77.14844\\-303.2249\\-147\\73.24219\\-303.2945\\-147\\71.28906\\-303.2457\\-147\\67.38281\\-303.0453\\-147\\61.52344\\-302.6214\\-147"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002374"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "177"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-304.0553\\-145\\-83.00781\\-303.3633\\-145\\-90.82031\\-302.4189\\-145\\-94.72656\\-301.2835\\-145\\-98.63281\\-300.3828\\-145\\-100.5859\\-299.4703\\-145\\-102.5391\\-298.7489\\-145\\-104.4922\\-297.7863\\-145\\-108.3984\\-295.969\\-145\\-112.1553\\-294.0078\\-145\\-114.2578\\-292.7927\\-145\\-116.2109\\-291.2557\\-145\\-118.1641\\-289.8803\\-145\\-120.1172\\-288.823\\-145\\-123.38\\-286.1953\\-145\\-125.9766\\-283.9241\\-145\\-127.9297\\-282.4844\\-145\\-129.8828\\-280.7002\\-145\\-134.0393\\-276.4297\\-145\\-135.8805\\-274.4766\\-145\\-137.2419\\-272.5234\\-145\\-138.8829\\-270.5703\\-145\\-140.6312\\-268.6172\\-145\\-142.202\\-266.6641\\-145\\-143.2243\\-264.7109\\-145\\-146.0564\\-260.8047\\-145\\-148.4007\\-256.8984\\-145\\-149.4706\\-254.9453\\-145\\-150.374\\-252.9922\\-145\\-151.5046\\-251.0391\\-145\\-152.4665\\-249.0859\\-145\\-153.6501\\-247.1328\\-145\\-154.4124\\-245.1797\\-145\\-155.3601\\-243.2266\\-145\\-156.1422\\-241.2734\\-145\\-156.7253\\-239.3203\\-145\\-157.7755\\-237.3672\\-145\\-158.3739\\-235.4141\\-145\\-159.3667\\-233.4609\\-145\\-160.0438\\-231.5078\\-145\\-160.6198\\-229.5547\\-145\\-161.4898\\-227.6016\\-145\\-161.9486\\-225.6484\\-145\\-162.683\\-221.7422\\-145\\-163.4069\\-219.7891\\-145\\-163.8532\\-217.8359\\-145\\-164.5058\\-213.9297\\-145\\-165.0766\\-211.9766\\-145\\-165.5099\\-210.0234\\-145\\-165.9509\\-206.1172\\-145\\-166.2204\\-202.2109\\-145\\-166.2775\\-200.2578\\-145\\-166.2268\\-196.3516\\-145\\-166.1067\\-194.3984\\-145\\-165.7056\\-190.4922\\-145\\-165.3096\\-188.5391\\-145\\-164.6343\\-186.5859\\-145\\-163.7313\\-182.6797\\-145\\-162.827\\-180.7266\\-145\\-161.3733\\-176.8203\\-145\\-159.1797\\-173.1113\\-145\\-157.7999\\-170.9609\\-145\\-156.2912\\-169.0078\\-145\\-155.2734\\-167.4994\\-145\\-153.3203\\-165.1983\\-145\\-149.4141\\-161.0185\\-145\\-147.4609\\-159.2169\\-145\\-145.5078\\-157.7381\\-145\\-141.6016\\-154.4026\\-145\\-139.6484\\-152.9326\\-145\\-137.6953\\-151.9944\\-145\\-136.9858\\-151.4297\\-145\\-133.7891\\-149.2649\\-145\\-131.8359\\-148.2035\\-145\\-129.8828\\-146.9663\\-145\\-127.9297\\-146.2732\\-145\\-125.9766\\-145.1838\\-145\\-124.0234\\-144.4453\\-145\\-122.0703\\-143.3466\\-145\\-120.1172\\-142.5232\\-145\\-118.1641\\-141.5246\\-145\\-116.2109\\-140.7694\\-145\\-114.2578\\-140.1826\\-145\\-112.3047\\-139.2914\\-145\\-108.3984\\-138.2621\\-145\\-106.4453\\-137.3489\\-145\\-102.5391\\-136.2809\\-145\\-100.5859\\-135.4582\\-145\\-96.67969\\-134.5591\\-145\\-92.77344\\-133.3633\\-145\\-90.82031\\-133.0068\\-145\\-86.91406\\-132.4868\\-145\\-83.00781\\-131.4309\\-145\\-81.05469\\-131.1373\\-145\\-77.14844\\-130.7354\\-145\\-71.28906\\-130.2383\\-145\\-67.38281\\-130.0401\\-145\\-65.42969\\-130.0119\\-145\\-61.52344\\-130.0817\\-145\\-57.61719\\-130.3869\\-145\\-55.66406\\-130.5983\\-145\\-53.71094\\-130.9165\\-145\\-51.75781\\-131.3477\\-145\\-47.85156\\-132.5985\\-145\\-45.89844\\-132.9167\\-145\\-43.94531\\-133.3799\\-145\\-41.99219\\-134.2596\\-145\\-40.03906\\-134.9397\\-145\\-36.13281\\-136.8249\\-145\\-34.17969\\-138.0076\\-145\\-32.22656\\-138.9622\\-145\\-28.34961\\-141.6641\\-145\\-26.20994\\-143.6172\\-145\\-22.45331\\-147.5234\\-145\\-19.46239\\-151.4297\\-145\\-18.15257\\-153.3828\\-145\\-17.28795\\-155.3359\\-145\\-16.06942\\-157.2891\\-145\\-15.37531\\-159.2422\\-145\\-14.41988\\-161.1953\\-145\\-13.83846\\-163.1484\\-145\\-13.0598\\-167.0547\\-145\\-12.39102\\-169.0078\\-145\\-11.96145\\-170.9609\\-145\\-11.72394\\-172.9141\\-145\\-11.36877\\-176.8203\\-145\\-11.10026\\-178.7734\\-145\\-10.2892\\-182.6797\\-145\\-10.02441\\-186.5859\\-145\\-10.00855\\-190.4922\\-145\\-10.18025\\-196.3516\\-145\\-10.07269\\-204.1641\\-145\\-9.732441\\-211.9766\\-145\\-9.79366\\-217.8359\\-145\\-9.932242\\-221.7422\\-145\\-10.06611\\-223.6953\\-145\\-11.2274\\-225.6484\\-145\\-11.58422\\-227.6016\\-145\\-11.09789\\-229.5547\\-145\\-11.42798\\-231.5078\\-145\\-11.81481\\-235.4141\\-145\\-12.07886\\-237.3672\\-145\\-12.46939\\-239.3203\\-145\\-13.07091\\-241.2734\\-145\\-13.77467\\-245.1797\\-145\\-14.18488\\-247.1328\\-145\\-14.99815\\-249.0859\\-145\\-16.1279\\-252.9922\\-145\\-17.12514\\-254.9453\\-145\\-17.68038\\-256.8984\\-145\\-19.31818\\-260.8047\\-145\\-19.80939\\-262.7578\\-145\\-20.78978\\-264.7109\\-145\\-21.61872\\-266.6641\\-145\\-22.75459\\-268.6172\\-145\\-23.68438\\-270.5703\\-145\\-25.00124\\-272.5234\\-145\\-25.77076\\-274.4766\\-145\\-27.06653\\-276.4297\\-145\\-28.13947\\-278.3828\\-145\\-30.27344\\-281.3281\\-145\\-31.05342\\-282.2891\\-145\\-32.375\\-284.2422\\-145\\-33.5095\\-286.1953\\-145\\-35.13137\\-288.1484\\-145\\-40.64289\\-294.0078\\-145\\-43.94531\\-296.6855\\-145\\-45.89844\\-298.0226\\-145\\-49.80469\\-300.3868\\-145\\-51.75781\\-301.0574\\-145\\-55.66406\\-302.51\\-145\\-59.57031\\-303.1013\\-145\\-63.47656\\-303.9221\\-145\\-65.42969\\-304.1988\\-145\\-69.33594\\-304.4159\\-145\\-73.24219\\-304.4159\\-145\\-77.14844\\-304.2531\\-145"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002374"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "176"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "32"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.2369\\-145\\57.61719\\-301.5944\\-145\\53.71094\\-300.6126\\-145\\51.88519\\-299.8672\\-145\\47.96231\\-297.9141\\-145\\45.89844\\-296.7265\\-145\\43.94531\\-295.383\\-145\\41.99219\\-294.3166\\-145\\40.03906\\-292.7746\\-145\\37.17863\\-290.1016\\-145\\34.98186\\-288.1484\\-145\\33.11377\\-286.1953\\-145\\29.65979\\-282.2891\\-145\\28.08508\\-280.3359\\-145\\26.91118\\-278.3828\\-145\\25.58223\\-276.4297\\-145\\24.41406\\-274.3094\\-145\\22.46094\\-270.9729\\-145\\22.14656\\-270.5703\\-145\\21.26479\\-268.6172\\-145\\20.08928\\-266.6641\\-145\\18.79699\\-262.7578\\-145\\17.79914\\-260.8047\\-145\\17.23987\\-258.8516\\-145\\16.22453\\-256.8984\\-145\\15.0303\\-252.9922\\-145\\14.22631\\-251.0391\\-145\\13.799\\-249.0859\\-145\\13.07091\\-245.1797\\-145\\12.33956\\-243.2266\\-145\\11.89076\\-241.2734\\-145\\11.41357\\-237.3672\\-145\\11.04526\\-235.4141\\-145\\10.47165\\-233.4609\\-145\\10.12074\\-231.5078\\-145\\9.742373\\-227.6016\\-145\\9.170923\\-219.7891\\-145\\8.842468\\-213.9297\\-145\\8.541577\\-210.0234\\-145\\8.354373\\-202.2109\\-145\\8.432241\\-198.3047\\-145\\8.640455\\-196.3516\\-145\\8.965976\\-194.3984\\-145\\9.188286\\-192.4453\\-145\\9.788877\\-188.5391\\-145\\10.21205\\-182.6797\\-145\\10.4947\\-180.7266\\-145\\10.97238\\-178.7734\\-145\\11.59928\\-174.8672\\-145\\12.0503\\-170.9609\\-145\\12.53634\\-169.0078\\-145\\13.14041\\-167.0547\\-145\\13.91457\\-163.1484\\-145\\14.59625\\-161.1953\\-145\\15.50887\\-159.2422\\-145\\16.31394\\-157.2891\\-145\\16.60156\\-156.9108\\-145\\18.55469\\-153.587\\-145\\19.90736\\-151.4297\\-145\\22.46094\\-148.401\\-145\\24.41406\\-146.2939\\-145\\27.08424\\-143.6172\\-145\\30.27344\\-140.8207\\-145\\32.22656\\-139.433\\-145\\34.17969\\-138.3763\\-145\\36.13281\\-137.0385\\-145\\40.03906\\-134.9286\\-145\\41.99219\\-134.1153\\-145\\43.94531\\-133.1817\\-145\\47.85156\\-132.2467\\-145\\49.80469\\-131.4219\\-145\\51.75781\\-131.0457\\-145\\55.66406\\-130.4816\\-145\\59.57031\\-129.7583\\-145\\63.47656\\-129.5106\\-145\\67.38281\\-129.5885\\-145\\71.28906\\-129.8645\\-145\\75.19531\\-130.3347\\-145\\81.05469\\-130.8441\\-145\\84.96094\\-131.1438\\-145\\86.91406\\-131.3788\\-145\\88.86719\\-131.762\\-145\\90.82031\\-132.2517\\-145\\94.72656\\-132.7697\\-145\\100.5859\\-133.7818\\-145\\104.4922\\-134.7543\\-145\\108.3984\\-135.569\\-145\\110.3516\\-136.4921\\-145\\112.3047\\-137.1287\\-145\\114.2578\\-137.4217\\-145\\116.2109\\-138.1926\\-145\\120.1172\\-139.1669\\-145\\122.0703\\-140.0484\\-145\\125.9766\\-141.386\\-145\\127.9297\\-142.435\\-145\\129.8828\\-143.2807\\-145\\131.8359\\-144.4404\\-145\\133.7891\\-145.2542\\-145\\135.7422\\-146.4154\\-145\\137.6953\\-147.4063\\-145\\139.6484\\-148.6498\\-145\\143.5547\\-151.7296\\-145\\145.5078\\-152.982\\-145\\147.4609\\-154.6251\\-145\\152.0908\\-159.2422\\-145\\153.9411\\-161.1953\\-145\\155.5118\\-163.1484\\-145\\156.7034\\-165.1016\\-145\\157.2266\\-165.7069\\-145\\159.5912\\-169.0078\\-145\\160.6099\\-170.9609\\-145\\161.8158\\-172.9141\\-145\\162.384\\-174.8672\\-145\\163.3954\\-176.8203\\-145\\164.5203\\-180.7266\\-145\\165.332\\-182.6797\\-145\\165.7969\\-184.6328\\-145\\166.7668\\-190.4922\\-145\\167.1805\\-192.4453\\-145\\167.4269\\-194.3984\\-145\\167.6764\\-198.3047\\-145\\167.7632\\-202.2109\\-145\\167.7746\\-206.1172\\-145\\167.6607\\-210.0234\\-145\\167.4241\\-213.9297\\-145\\167.1916\\-215.8828\\-145\\166.51\\-219.7891\\-145\\165.6634\\-225.6484\\-145\\165.1877\\-227.6016\\-145\\164.5146\\-229.5547\\-145\\163.7538\\-233.4609\\-145\\162.3796\\-237.3672\\-145\\161.9536\\-239.3203\\-145\\161.2734\\-241.2734\\-145\\160.3172\\-243.2266\\-145\\159.6089\\-245.1797\\-145\\158.4323\\-247.1328\\-145\\157.6425\\-249.0859\\-145\\156.4957\\-251.0391\\-145\\155.7785\\-252.9922\\-145\\154.5581\\-254.9453\\-145\\153.5349\\-256.8984\\-145\\151.3672\\-260.0122\\-145\\150.7269\\-260.8047\\-145\\149.5181\\-262.7578\\-145\\148.1998\\-264.7109\\-145\\146.5949\\-266.6641\\-145\\144.8006\\-268.6172\\-145\\141.3739\\-272.5234\\-145\\139.6484\\-274.3305\\-145\\137.6953\\-276.1321\\-145\\133.7891\\-280.0326\\-145\\129.8828\\-283.3195\\-145\\128.8537\\-284.2422\\-145\\125.9766\\-286.5474\\-145\\120.1172\\-290.3642\\-145\\118.1641\\-291.3711\\-145\\116.2109\\-292.7613\\-145\\114.2578\\-293.7047\\-145\\112.3047\\-294.7903\\-145\\110.3516\\-295.4523\\-145\\108.3984\\-296.511\\-145\\106.4453\\-297.1121\\-145\\104.4922\\-298.1011\\-145\\100.5859\\-299.4423\\-145\\98.63281\\-300.2767\\-145\\96.67969\\-300.7132\\-145\\92.77344\\-301.4671\\-145\\90.82031\\-302.0216\\-145\\88.86719\\-302.4101\\-145\\86.91406\\-302.6466\\-145\\81.05469\\-303.0313\\-145\\77.14844\\-303.2128\\-145\\73.24219\\-303.2546\\-145\\67.38281\\-303.0089\\-145\\61.52344\\-302.5838\\-145"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002373"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "191"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "33"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-304.0664\\-143\\-83.00781\\-303.4081\\-143\\-86.91406\\-302.9048\\-143\\-88.86719\\-302.7239\\-143\\-90.82031\\-302.4401\\-143\\-92.77344\\-301.9357\\-143\\-94.72656\\-301.3094\\-143\\-98.63281\\-300.407\\-143\\-100.5859\\-299.5115\\-143\\-102.5391\\-298.7816\\-143\\-108.3984\\-296.0165\\-143\\-112.1798\\-294.0078\\-143\\-114.2578\\-292.8037\\-143\\-116.2109\\-291.2746\\-143\\-118.1641\\-289.9093\\-143\\-120.1172\\-288.823\\-143\\-123.4102\\-286.1953\\-143\\-125.9766\\-283.9772\\-143\\-127.9297\\-282.5428\\-143\\-129.8828\\-280.7556\\-143\\-134.125\\-276.4297\\-143\\-135.9566\\-274.4766\\-143\\-137.3528\\-272.5234\\-143\\-138.9624\\-270.5703\\-143\\-140.6987\\-268.6172\\-143\\-142.2806\\-266.6641\\-143\\-143.3454\\-264.7109\\-143\\-144.6768\\-262.7578\\-143\\-146.1843\\-260.8047\\-143\\-147.4609\\-258.7309\\-143\\-149.6185\\-254.9453\\-143\\-150.4697\\-252.9922\\-143\\-151.6837\\-251.0391\\-143\\-152.5937\\-249.0859\\-143\\-153.8025\\-247.1328\\-143\\-154.5291\\-245.1797\\-143\\-155.5324\\-243.2266\\-143\\-156.8733\\-239.3203\\-143\\-157.8904\\-237.3672\\-143\\-158.4972\\-235.4141\\-143\\-159.5388\\-233.4609\\-143\\-160.7723\\-229.5547\\-143\\-161.6147\\-227.6016\\-143\\-162.0383\\-225.6484\\-143\\-162.352\\-223.6953\\-143\\-162.8454\\-221.7422\\-143\\-163.568\\-219.7891\\-143\\-164.261\\-215.8828\\-143\\-164.668\\-213.9297\\-143\\-165.2982\\-211.9766\\-143\\-165.6528\\-210.0234\\-143\\-165.8911\\-208.0703\\-143\\-166.2332\\-204.1641\\-143\\-166.4367\\-200.2578\\-143\\-166.358\\-196.3516\\-143\\-166.2204\\-194.3984\\-143\\-165.8113\\-190.4922\\-143\\-165.4644\\-188.5391\\-143\\-164.7846\\-186.5859\\-143\\-164.2396\\-184.6328\\-143\\-163.8156\\-182.6797\\-143\\-162.2064\\-178.7734\\-143\\-161.5137\\-176.8203\\-143\\-161.1328\\-176.2778\\-143\\-159.2323\\-172.9141\\-143\\-157.9155\\-170.9609\\-143\\-156.3802\\-169.0078\\-143\\-155.2734\\-167.3169\\-143\\-153.3974\\-165.1016\\-143\\-149.4141\\-160.9268\\-143\\-147.4609\\-159.1201\\-143\\-145.5078\\-157.6869\\-143\\-141.6016\\-154.3907\\-143\\-139.6484\\-152.922\\-143\\-137.6953\\-151.9944\\-143\\-136.9858\\-151.4297\\-143\\-133.7891\\-149.2896\\-143\\-131.8359\\-148.2259\\-143\\-129.8828\\-146.9986\\-143\\-127.9297\\-146.2856\\-143\\-125.9766\\-145.1595\\-143\\-124.0234\\-144.4244\\-143\\-122.0703\\-143.3132\\-143\\-120.1172\\-142.4912\\-143\\-118.1641\\-141.4574\\-143\\-116.2109\\-140.7404\\-143\\-114.2578\\-140.1352\\-143\\-112.3047\\-139.236\\-143\\-108.3984\\-138.2299\\-143\\-106.4453\\-137.3021\\-143\\-102.5391\\-136.2531\\-143\\-100.5859\\-135.4178\\-143\\-96.67969\\-134.5085\\-143\\-92.77344\\-133.3148\\-143\\-90.82031\\-132.9579\\-143\\-86.91406\\-132.4088\\-143\\-84.96094\\-131.8164\\-143\\-83.00781\\-131.3348\\-143\\-81.05469\\-131.0714\\-143\\-75.19531\\-130.4566\\-143\\-69.33594\\-129.9377\\-143\\-65.42969\\-129.7837\\-143\\-61.52344\\-129.7967\\-143\\-59.57031\\-129.9682\\-143\\-53.71094\\-130.8054\\-143\\-51.75781\\-131.238\\-143\\-47.85156\\-132.5353\\-143\\-45.89844\\-132.881\\-143\\-43.94531\\-133.3303\\-143\\-41.99219\\-134.1909\\-143\\-40.03906\\-134.8951\\-143\\-38.08594\\-135.7813\\-143\\-36.13281\\-136.7758\\-143\\-34.17969\\-137.95\\-143\\-32.22656\\-138.9335\\-143\\-30.27344\\-140.3062\\-143\\-28.32031\\-141.5788\\-143\\-26.07579\\-143.6172\\-143\\-22.32247\\-147.5234\\-143\\-19.41076\\-151.4297\\-143\\-18.07251\\-153.3828\\-143\\-17.25447\\-155.3359\\-143\\-16.05261\\-157.2891\\-143\\-15.38495\\-159.2422\\-143\\-14.44615\\-161.1953\\-143\\-13.87293\\-163.1484\\-143\\-13.13008\\-167.0547\\-143\\-12.48238\\-169.0078\\-143\\-12.00701\\-170.9609\\-143\\-11.74472\\-172.9141\\-143\\-11.42082\\-176.8203\\-143\\-11.19626\\-178.7734\\-143\\-10.4061\\-182.6797\\-143\\-10.19597\\-184.6328\\-143\\-10.08606\\-188.5391\\-143\\-10.19597\\-192.4453\\-143\\-10.35525\\-196.3516\\-143\\-10.2983\\-200.2578\\-143\\-10.18025\\-204.1641\\-143\\-10.03062\\-206.1172\\-143\\-10.0297\\-208.0703\\-143\\-9.80788\\-211.9766\\-143\\-9.788877\\-213.9297\\-143\\-9.908424\\-219.7891\\-143\\-10.11366\\-223.6953\\-143\\-10.74219\\-225.5709\\-143\\-11.57715\\-227.6016\\-143\\-11.16161\\-229.5547\\-143\\-11.46656\\-231.5078\\-143\\-11.85438\\-235.4141\\-143\\-12.11684\\-237.3672\\-143\\-12.56662\\-239.3203\\-143\\-13.14041\\-241.2734\\-143\\-13.81382\\-245.1797\\-143\\-14.30107\\-247.1328\\-143\\-15.19165\\-249.0859\\-143\\-16.23457\\-252.9922\\-143\\-17.23214\\-254.9453\\-143\\-17.75568\\-256.8984\\-143\\-18.63994\\-258.8516\\-143\\-19.37737\\-260.8047\\-143\\-19.90539\\-262.7578\\-143\\-20.94822\\-264.7109\\-143\\-21.73504\\-266.6641\\-143\\-22.93044\\-268.6172\\-143\\-23.80732\\-270.5703\\-143\\-25.12267\\-272.5234\\-143\\-25.88232\\-274.4766\\-143\\-27.18406\\-276.4297\\-143\\-28.32031\\-278.3517\\-143\\-29.65943\\-280.3359\\-143\\-31.1561\\-282.2891\\-143\\-32.54229\\-284.2422\\-143\\-33.61328\\-286.1953\\-143\\-35.21845\\-288.1484\\-143\\-38.88768\\-292.0547\\-143\\-40.03906\\-293.3682\\-143\\-41.99219\\-295.0704\\-143\\-43.94531\\-296.6183\\-143\\-45.89844\\-297.9217\\-143\\-49.80469\\-300.3523\\-143\\-51.75781\\-301.0306\\-143\\-55.66406\\-302.4978\\-143\\-59.57031\\-303.0784\\-143\\-61.52344\\-303.4189\\-143\\-63.47656\\-303.8955\\-143\\-65.42969\\-304.1798\\-143\\-67.38281\\-304.3431\\-143\\-71.28906\\-304.4296\\-143\\-73.24219\\-304.4159\\-143\\-77.14844\\-304.2703\\-143"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002373"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "178"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "34"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.1646\\-143\\57.61719\\-301.5138\\-143\\53.71094\\-300.5589\\-143\\49.80469\\-298.8175\\-143\\45.89844\\-296.675\\-143\\43.94531\\-295.3473\\-143\\41.99219\\-294.2372\\-143\\40.03906\\-292.7079\\-143\\37.22796\\-290.1016\\-143\\35.03767\\-288.1484\\-143\\33.15206\\-286.1953\\-143\\29.70489\\-282.2891\\-143\\28.12644\\-280.3359\\-143\\26.93359\\-278.3828\\-143\\25.60695\\-276.4297\\-143\\24.41406\\-274.2586\\-143\\22.46094\\-270.9525\\-143\\22.15787\\-270.5703\\-143\\21.27878\\-268.6172\\-143\\20.11045\\-266.6641\\-143\\18.82234\\-262.7578\\-143\\17.82614\\-260.8047\\-143\\17.25803\\-258.8516\\-143\\16.25504\\-256.8984\\-143\\15.06519\\-252.9922\\-143\\14.25909\\-251.0391\\-143\\13.45351\\-247.1328\\-143\\13.18027\\-245.1797\\-143\\12.45301\\-243.2266\\-143\\11.94018\\-241.2734\\-143\\11.48135\\-237.3672\\-143\\11.16706\\-235.4141\\-143\\10.59358\\-233.4609\\-143\\10.18807\\-231.5078\\-143\\9.784138\\-227.6016\\-143\\9.238401\\-219.7891\\-143\\9.185987\\-217.8359\\-143\\8.965976\\-213.9297\\-143\\8.627473\\-210.0234\\-143\\8.327096\\-202.2109\\-143\\8.44254\\-198.3047\\-143\\8.680555\\-196.3516\\-143\\9.038255\\-194.3984\\-143\\9.606996\\-190.4922\\-143\\9.83042\\-188.5391\\-143\\10.09285\\-184.6328\\-143\\10.28022\\-182.6797\\-143\\10.59358\\-180.7266\\-143\\11.04736\\-178.7734\\-143\\11.37241\\-176.8203\\-143\\12.08726\\-170.9609\\-143\\13.177\\-167.0547\\-143\\13.93769\\-163.1484\\-143\\14.62573\\-161.1953\\-143\\15.51011\\-159.2422\\-143\\16.29352\\-157.2891\\-143\\16.60156\\-156.8756\\-143\\18.55469\\-153.5197\\-143\\19.87206\\-151.4297\\-143\\22.46094\\-148.3273\\-143\\24.41406\\-146.2377\\-143\\27.01595\\-143.6172\\-143\\28.32031\\-142.406\\-143\\30.27344\\-140.7505\\-143\\32.22656\\-139.342\\-143\\34.17969\\-138.3092\\-143\\36.13281\\-136.9545\\-143\\38.16451\\-135.8047\\-143\\40.03906\\-134.8565\\-143\\43.94531\\-133.1084\\-143\\45.89844\\-132.7044\\-143\\47.85156\\-132.1227\\-143\\49.80469\\-131.3158\\-143\\53.71094\\-130.7049\\-143\\55.66406\\-130.342\\-143\\57.61719\\-129.8787\\-143\\59.57031\\-129.5885\\-143\\63.47656\\-129.3912\\-143\\67.38281\\-129.44\\-143\\71.28906\\-129.6523\\-143\\75.19531\\-130.1447\\-143\\79.10156\\-130.5433\\-143\\81.05469\\-130.8024\\-143\\83.00781\\-130.8933\\-143\\86.91406\\-131.2216\\-143\\88.86719\\-131.4773\\-143\\92.77344\\-132.4214\\-143\\98.63281\\-133.1284\\-143\\100.5859\\-133.4733\\-143\\104.4922\\-134.5363\\-143\\108.3984\\-135.3253\\-143\\110.3516\\-136.5194\\-143\\112.3047\\-136.9099\\-143\\114.2578\\-137.1675\\-143\\118.1641\\-138.5542\\-143\\120.1172\\-138.977\\-143\\124.0234\\-140.5227\\-143\\125.9766\\-141.1353\\-143\\127.9297\\-142.1996\\-143\\129.8828\\-143.0374\\-143\\131.8359\\-144.2458\\-143\\133.7891\\-145.0257\\-143\\135.7422\\-146.2368\\-143\\137.6953\\-147.137\\-143\\139.6484\\-148.4383\\-143\\141.6016\\-149.9916\\-143\\145.5078\\-152.7614\\-143\\147.4609\\-154.432\\-143\\152.2481\\-159.2422\\-143\\154.0699\\-161.1953\\-143\\155.6597\\-163.1484\\-143\\156.8287\\-165.1016\\-143\\157.2266\\-165.5529\\-143\\159.6884\\-169.0078\\-143\\160.6937\\-170.9609\\-143\\161.8778\\-172.9141\\-143\\162.4453\\-174.8672\\-143\\163.4857\\-176.8203\\-143\\164.5986\\-180.7266\\-143\\165.4185\\-182.6797\\-143\\165.8537\\-184.6328\\-143\\166.5197\\-188.5391\\-143\\167.2664\\-192.4453\\-143\\167.6334\\-196.3516\\-143\\167.8022\\-202.2109\\-143\\167.7974\\-206.1172\\-143\\167.6018\\-211.9766\\-143\\167.2296\\-215.8828\\-143\\166.5315\\-219.7891\\-143\\165.6561\\-225.6484\\-143\\165.1611\\-227.6016\\-143\\164.4853\\-229.5547\\-143\\163.7351\\-233.4609\\-143\\162.3551\\-237.3672\\-143\\161.9436\\-239.3203\\-143\\161.2455\\-241.2734\\-143\\160.2997\\-243.2266\\-143\\159.5766\\-245.1797\\-143\\158.3974\\-247.1328\\-143\\157.6135\\-249.0859\\-143\\156.4711\\-251.0391\\-143\\155.731\\-252.9922\\-143\\154.518\\-254.9453\\-143\\153.3203\\-257.0323\\-143\\151.3672\\-259.9088\\-143\\150.6587\\-260.8047\\-143\\148.1142\\-264.7109\\-143\\146.5145\\-266.6641\\-143\\144.7119\\-268.6172\\-143\\141.2714\\-272.5234\\-143\\139.6484\\-274.2455\\-143\\137.3125\\-276.4297\\-143\\133.7891\\-279.9815\\-143\\129.8828\\-283.2926\\-143\\128.8236\\-284.2422\\-143\\125.9766\\-286.5118\\-143\\120.1172\\-290.3406\\-143\\118.1641\\-291.3786\\-143\\116.2109\\-292.7697\\-143\\114.2578\\-293.7238\\-143\\112.3047\\-294.8024\\-143\\110.3516\\-295.4659\\-143\\108.3984\\-296.5286\\-143\\106.4453\\-297.1295\\-143\\104.4922\\-298.1258\\-143\\100.5859\\-299.4577\\-143\\98.63281\\-300.2767\\-143\\96.67969\\-300.7181\\-143\\92.77344\\-301.4558\\-143\\90.82031\\-302.0081\\-143\\88.86719\\-302.3884\\-143\\84.96094\\-302.7804\\-143\\81.05469\\-303.0176\\-143\\77.14844\\-303.1839\\-143\\75.19531\\-303.2128\\-143\\71.28906\\-303.1638\\-143\\63.47656\\-302.7239\\-143\\61.52344\\-302.53\\-143"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002372"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "182"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-303.811\\-141\\-83.00781\\-303.4055\\-141\\-84.96094\\-303.1166\\-141\\-88.86719\\-302.7239\\-141\\-90.82031\\-302.4441\\-141\\-92.77344\\-301.9357\\-141\\-94.72656\\-301.2999\\-141\\-98.63281\\-300.4157\\-141\\-100.5859\\-299.5439\\-141\\-102.5391\\-298.8023\\-141\\-108.3984\\-296.0318\\-141\\-112.2037\\-294.0078\\-141\\-114.2578\\-292.7969\\-141\\-116.2109\\-291.2794\\-141\\-118.1641\\-289.9233\\-141\\-120.1172\\-288.8359\\-141\\-123.4207\\-286.1953\\-141\\-125.9766\\-284.0038\\-141\\-127.9297\\-282.5561\\-141\\-129.8828\\-280.7826\\-141\\-132.203\\-278.3828\\-141\\-134.2054\\-276.4297\\-141\\-136.0156\\-274.4766\\-141\\-137.4455\\-272.5234\\-141\\-139.0373\\-270.5703\\-141\\-140.7478\\-268.6172\\-141\\-142.3435\\-266.6641\\-141\\-143.4652\\-264.7109\\-141\\-144.7524\\-262.7578\\-141\\-146.2764\\-260.8047\\-141\\-147.5152\\-258.8516\\-141\\-148.5743\\-256.8984\\-141\\-149.7396\\-254.9453\\-141\\-150.5572\\-252.9922\\-141\\-151.8076\\-251.0391\\-141\\-152.7077\\-249.0859\\-141\\-153.9063\\-247.1328\\-141\\-154.6285\\-245.1797\\-141\\-155.6626\\-243.2266\\-141\\-156.2847\\-241.2734\\-141\\-157.0268\\-239.3203\\-141\\-157.9749\\-237.3672\\-141\\-158.6242\\-235.4141\\-141\\-159.6444\\-233.4609\\-141\\-160.2189\\-231.5078\\-141\\-160.915\\-229.5547\\-141\\-161.7113\\-227.6016\\-141\\-162.4246\\-223.6953\\-141\\-163.6766\\-219.7891\\-141\\-164.3566\\-215.8828\\-141\\-164.8466\\-213.9297\\-141\\-165.455\\-211.9766\\-141\\-165.9958\\-208.0703\\-141\\-166.358\\-204.1641\\-141\\-166.6028\\-200.2578\\-141\\-166.4919\\-196.3516\\-141\\-166.3319\\-194.3984\\-141\\-165.8923\\-190.4922\\-141\\-165.5723\\-188.5391\\-141\\-164.3304\\-184.6328\\-141\\-163.8767\\-182.6797\\-141\\-163.1705\\-180.7266\\-141\\-162.2813\\-178.7734\\-141\\-161.6211\\-176.8203\\-141\\-160.4252\\-174.8672\\-141\\-159.3959\\-172.9141\\-141\\-158.0067\\-170.9609\\-141\\-156.4834\\-169.0078\\-141\\-155.2734\\-167.14\\-141\\-153.5382\\-165.1016\\-141\\-149.4141\\-160.8539\\-141\\-147.4609\\-159.0741\\-141\\-145.5078\\-157.684\\-141\\-141.6016\\-154.4091\\-141\\-139.6484\\-152.9326\\-141\\-137.6953\\-152.0077\\-141\\-136.9629\\-151.4297\\-141\\-133.7891\\-149.328\\-141\\-131.8359\\-148.2672\\-141\\-129.8828\\-147.0453\\-141\\-127.9297\\-146.3182\\-141\\-125.9766\\-145.1838\\-141\\-124.0234\\-144.447\\-141\\-122.0703\\-143.3242\\-141\\-120.1172\\-142.4912\\-141\\-118.1641\\-141.4447\\-141\\-116.2109\\-140.7287\\-141\\-114.2578\\-140.1139\\-141\\-112.3047\\-139.2127\\-141\\-108.3984\\-138.207\\-141\\-106.4453\\-137.2813\\-141\\-102.5391\\-136.2016\\-141\\-100.5859\\-135.3608\\-141\\-96.67969\\-134.4436\\-141\\-94.72656\\-133.7824\\-141\\-92.77344\\-133.2278\\-141\\-88.86719\\-132.6554\\-141\\-86.91406\\-132.3009\\-141\\-84.96094\\-131.6475\\-141\\-83.00781\\-131.2387\\-141\\-75.19531\\-130.3147\\-141\\-69.33594\\-129.7096\\-141\\-65.42969\\-129.5683\\-141\\-61.52344\\-129.5783\\-141\\-59.57031\\-129.7215\\-141\\-53.71094\\-130.7074\\-141\\-51.75781\\-131.1161\\-141\\-49.80469\\-131.6594\\-141\\-47.85156\\-132.4466\\-141\\-43.94531\\-133.2412\\-141\\-41.99219\\-134.0742\\-141\\-38.08594\\-135.6371\\-141\\-34.17969\\-137.8619\\-141\\-32.22656\\-138.9003\\-141\\-30.27344\\-140.2565\\-141\\-28.32031\\-141.4462\\-141\\-25.95082\\-143.6172\\-141\\-22.18889\\-147.5234\\-141\\-20.50781\\-149.8081\\-141\\-18.02472\\-153.3828\\-141\\-17.25076\\-155.3359\\-141\\-16.06096\\-157.2891\\-141\\-15.39586\\-159.2422\\-141\\-14.47152\\-161.1953\\-141\\-13.90301\\-163.1484\\-141\\-13.1638\\-167.0547\\-141\\-12.52254\\-169.0078\\-141\\-12.02652\\-170.9609\\-141\\-11.77097\\-172.9141\\-141\\-11.24878\\-178.7734\\-141\\-10.4947\\-182.6797\\-141\\-10.26257\\-184.6328\\-141\\-10.15732\\-188.5391\\-141\\-10.31681\\-192.4453\\-141\\-10.53049\\-196.3516\\-141\\-10.53049\\-200.2578\\-141\\-10.31681\\-202.2109\\-141\\-10.07934\\-206.1172\\-141\\-9.859076\\-211.9766\\-141\\-9.84468\\-213.9297\\-141\\-9.960011\\-219.7891\\-141\\-10.16488\\-223.6953\\-141\\-10.39567\\-225.6484\\-141\\-11.57992\\-227.6016\\-141\\-11.36161\\-229.5547\\-141\\-11.49053\\-231.5078\\-141\\-11.87785\\-235.4141\\-141\\-12.14718\\-237.3672\\-141\\-13.17376\\-241.2734\\-141\\-13.82993\\-245.1797\\-141\\-14.34949\\-247.1328\\-141\\-15.24621\\-249.0859\\-141\\-15.70719\\-251.0391\\-141\\-16.30859\\-252.9922\\-141\\-17.28678\\-254.9453\\-141\\-17.80225\\-256.8984\\-141\\-18.76762\\-258.8516\\-141\\-19.42472\\-260.8047\\-141\\-19.97456\\-262.7578\\-141\\-21.05638\\-264.7109\\-141\\-21.8259\\-266.6641\\-141\\-23.06325\\-268.6172\\-141\\-23.91968\\-270.5703\\-141\\-25.20571\\-272.5234\\-141\\-25.98939\\-274.4766\\-141\\-29.74986\\-280.3359\\-141\\-32.61861\\-284.2422\\-141\\-33.68144\\-286.1953\\-141\\-35.29309\\-288.1484\\-141\\-38.92906\\-292.0547\\-141\\-40.03906\\-293.3044\\-141\\-41.99219\\-295.0212\\-141\\-43.94531\\-296.5574\\-141\\-49.80469\\-300.2976\\-141\\-55.66406\\-302.4693\\-141\\-59.57031\\-303.0524\\-141\\-61.52344\\-303.3973\\-141\\-63.47656\\-303.8542\\-141\\-65.42969\\-304.1604\\-141\\-69.33594\\-304.3877\\-141\\-73.24219\\-304.409\\-141\\-77.14844\\-304.2617\\-141"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002372"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "179"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-302.088\\-141\\57.61719\\-301.4394\\-141\\53.71094\\-300.5084\\-141\\51.75781\\-299.5852\\-141\\49.80469\\-298.7653\\-141\\47.85156\\-297.6361\\-141\\45.89844\\-296.6304\\-141\\43.94531\\-295.299\\-141\\41.99219\\-294.1528\\-141\\40.03906\\-292.6522\\-141\\38.08594\\-290.8324\\-141\\35.09347\\-288.1484\\-141\\33.19036\\-286.1953\\-141\\29.75125\\-282.2891\\-141\\28.1808\\-280.3359\\-141\\26.95184\\-278.3828\\-141\\25.61455\\-276.4297\\-141\\24.41406\\-274.2411\\-141\\22.46094\\-270.9593\\-141\\22.14656\\-270.5703\\-141\\21.26736\\-268.6172\\-141\\20.12392\\-266.6641\\-141\\18.80976\\-262.7578\\-141\\17.83265\\-260.8047\\-141\\17.28301\\-258.8516\\-141\\16.28675\\-256.8984\\-141\\15.10336\\-252.9922\\-141\\14.28223\\-251.0391\\-141\\13.48016\\-247.1328\\-141\\13.19019\\-245.1797\\-141\\12.53634\\-243.2266\\-141\\12.00701\\-241.2734\\-141\\11.56039\\-237.3672\\-141\\11.28078\\-235.4141\\-141\\10.2892\\-231.5078\\-141\\9.853148\\-227.6016\\-141\\9.355918\\-219.7891\\-141\\9.309506\\-217.8359\\-141\\9.099187\\-213.9297\\-141\\8.8125\\-210.0234\\-141\\8.736879\\-208.0703\\-141\\8.412035\\-204.1641\\-141\\8.34517\\-200.2578\\-141\\8.47425\\-198.3047\\-141\\9.118895\\-194.3984\\-141\\9.88483\\-188.5391\\-141\\10.13513\\-184.6328\\-141\\10.34546\\-182.6797\\-141\\11.11577\\-178.7734\\-141\\11.40625\\-176.8203\\-141\\12.09955\\-170.9609\\-141\\13.20623\\-167.0547\\-141\\13.93769\\-163.1484\\-141\\14.62573\\-161.1953\\-141\\15.51011\\-159.2422\\-141\\16.29352\\-157.2891\\-141\\16.60156\\-156.8718\\-141\\18.55469\\-153.4842\\-141\\19.84168\\-151.4297\\-141\\22.46094\\-148.2793\\-141\\24.41406\\-146.1807\\-141\\26.96132\\-143.6172\\-141\\28.32031\\-142.3387\\-141\\30.27344\\-140.6938\\-141\\32.22656\\-139.2683\\-141\\34.17969\\-138.2186\\-141\\34.74374\\-137.7578\\-141\\38.08594\\-135.7214\\-141\\41.99219\\-133.8436\\-141\\43.94531\\-133.057\\-141\\45.89844\\-132.6501\\-141\\49.80469\\-131.2316\\-141\\53.71094\\-130.6018\\-141\\57.61719\\-129.6635\\-141\\59.57031\\-129.4316\\-141\\61.52344\\-129.3168\\-141\\65.42969\\-129.2723\\-141\\69.33594\\-129.368\\-141\\73.24219\\-129.6092\\-141\\79.10156\\-130.3733\\-141\\81.05469\\-130.6722\\-141\\83.00781\\-130.7788\\-141\\88.86719\\-131.3348\\-141\\90.82031\\-131.7215\\-141\\92.77344\\-132.2579\\-141\\94.72656\\-132.6018\\-141\\98.63281\\-132.9881\\-141\\100.5859\\-133.2835\\-141\\102.5391\\-133.7524\\-141\\104.4922\\-134.3334\\-141\\108.3984\\-135.1371\\-141\\109.7566\\-135.8047\\-141\\110.3516\\-136.2668\\-141\\114.2578\\-136.9971\\-141\\116.2109\\-137.534\\-141\\118.1641\\-138.3573\\-141\\120.1172\\-138.8257\\-141\\122.0703\\-139.4121\\-141\\124.0234\\-140.3124\\-141\\125.9766\\-140.9197\\-141\\129.8828\\-142.8213\\-141\\131.8359\\-143.959\\-141\\133.7891\\-144.8408\\-141\\135.7422\\-146.0083\\-141\\137.6953\\-146.8919\\-141\\141.4248\\-149.4766\\-141\\145.5078\\-152.5767\\-141\\147.4609\\-154.2736\\-141\\149.4141\\-156.1972\\-141\\152.3969\\-159.2422\\-141\\154.2099\\-161.1953\\-141\\155.8206\\-163.1484\\-141\\157.0139\\-165.1016\\-141\\159.7837\\-169.0078\\-141\\160.7734\\-170.9609\\-141\\161.9228\\-172.9141\\-141\\162.5141\\-174.8672\\-141\\163.568\\-176.8203\\-141\\164.687\\-180.7266\\-141\\165.4764\\-182.6797\\-141\\165.9043\\-184.6328\\-141\\166.5847\\-188.5391\\-141\\167.0298\\-190.4922\\-141\\167.335\\-192.4453\\-141\\167.6647\\-196.3516\\-141\\167.8022\\-200.2578\\-141\\167.8317\\-204.1641\\-141\\167.7723\\-208.0703\\-141\\167.6217\\-211.9766\\-141\\167.2549\\-215.8828\\-141\\166.2268\\-221.7422\\-141\\165.6561\\-225.6484\\-141\\165.1338\\-227.6016\\-141\\164.4684\\-229.5547\\-141\\163.7198\\-233.4609\\-141\\162.9697\\-235.4141\\-141\\162.3428\\-237.3672\\-141\\161.9318\\-239.3203\\-141\\161.2015\\-241.2734\\-141\\160.2919\\-243.2266\\-141\\159.5563\\-245.1797\\-141\\158.3846\\-247.1328\\-141\\157.5936\\-249.0859\\-141\\156.4514\\-251.0391\\-141\\155.685\\-252.9922\\-141\\155.2734\\-253.6051\\-141\\153.3754\\-256.8984\\-141\\151.3672\\-259.8201\\-141\\150.5922\\-260.8047\\-141\\148.0429\\-264.7109\\-141\\145.5078\\-267.73\\-141\\141.185\\-272.5234\\-141\\139.6484\\-274.1632\\-141\\137.2845\\-276.4297\\-141\\133.7891\\-279.9439\\-141\\128.8003\\-284.2422\\-141\\125.9766\\-286.5005\\-141\\120.1172\\-290.3406\\-141\\118.1641\\-291.3826\\-141\\116.2109\\-292.777\\-141\\114.2578\\-293.7377\\-141\\112.3047\\-294.8145\\-141\\110.3516\\-295.4794\\-141\\108.3984\\-296.5372\\-141\\106.4453\\-297.1405\\-141\\104.4922\\-298.1378\\-141\\100.5859\\-299.4577\\-141\\98.63281\\-300.2767\\-141\\96.67969\\-300.7132\\-141\\92.77344\\-301.4447\\-141\\90.82031\\-301.9931\\-141\\88.86719\\-302.3793\\-141\\86.91406\\-302.6214\\-141\\81.05469\\-302.9999\\-141\\77.14844\\-303.1557\\-141\\75.19531\\-303.1839\\-141\\71.28906\\-303.1282\\-141\\63.47656\\-302.689\\-141\\61.52344\\-302.4817\\-141"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002371"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "182"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-303.84\\-139\\-83.00781\\-303.3922\\-139\\-84.96094\\-303.0933\\-139\\-88.86719\\-302.7239\\-139\\-90.82031\\-302.4526\\-139\\-92.77344\\-301.951\\-139\\-94.72656\\-301.3094\\-139\\-98.63281\\-300.4278\\-139\\-100.5859\\-299.5682\\-139\\-102.5391\\-298.8071\\-139\\-108.3984\\-296.0469\\-139\\-112.2261\\-294.0078\\-139\\-114.2578\\-292.7899\\-139\\-116.2109\\-291.2794\\-139\\-118.1641\\-289.9093\\-139\\-120.1172\\-288.8441\\-139\\-123.4422\\-286.1953\\-139\\-125.9766\\-283.9924\\-139\\-127.9297\\-282.5692\\-139\\-129.8828\\-280.8092\\-139\\-132.2389\\-278.3828\\-139\\-134.2473\\-276.4297\\-139\\-136.0703\\-274.4766\\-139\\-137.5299\\-272.5234\\-139\\-139.0987\\-270.5703\\-139\\-140.8191\\-268.6172\\-139\\-142.3966\\-266.6641\\-139\\-144.842\\-262.7578\\-139\\-146.3408\\-260.8047\\-139\\-147.6431\\-258.8516\\-139\\-148.6468\\-256.8984\\-139\\-149.858\\-254.9453\\-139\\-150.6392\\-252.9922\\-139\\-151.9104\\-251.0391\\-139\\-152.8256\\-249.0859\\-139\\-153.9848\\-247.1328\\-139\\-154.7181\\-245.1797\\-139\\-155.748\\-243.2266\\-139\\-156.3309\\-241.2734\\-139\\-158.0421\\-237.3672\\-139\\-158.7381\\-235.4141\\-139\\-159.7401\\-233.4609\\-139\\-160.2965\\-231.5078\\-139\\-161.794\\-227.6016\\-139\\-162.4962\\-223.6953\\-139\\-163.1995\\-221.7422\\-139\\-163.7612\\-219.7891\\-139\\-164.465\\-215.8828\\-139\\-165.5723\\-211.9766\\-139\\-166.1123\\-208.0703\\-139\\-166.4919\\-204.1641\\-139\\-166.7636\\-200.2578\\-139\\-166.7498\\-198.3047\\-139\\-166.4418\\-194.3984\\-139\\-165.9708\\-190.4922\\-139\\-165.6638\\-188.5391\\-139\\-165.1611\\-186.5859\\-139\\-164.4287\\-184.6328\\-139\\-163.9488\\-182.6797\\-139\\-163.3102\\-180.7266\\-139\\-162.3488\\-178.7734\\-139\\-161.7213\\-176.8203\\-139\\-160.5286\\-174.8672\\-139\\-159.5294\\-172.9141\\-139\\-157.2266\\-169.7813\\-139\\-156.5863\\-169.0078\\-139\\-155.3319\\-167.0547\\-139\\-153.6536\\-165.1016\\-139\\-149.4141\\-160.8031\\-139\\-147.4609\\-159.0596\\-139\\-145.5078\\-157.6984\\-139\\-141.6016\\-154.4397\\-139\\-139.6484\\-152.9683\\-139\\-137.6953\\-152.0392\\-139\\-135.7422\\-150.6427\\-139\\-133.7891\\-149.41\\-139\\-130.4726\\-147.5234\\-139\\-129.8828\\-147.1039\\-139\\-127.9297\\-146.3503\\-139\\-125.9766\\-145.2425\\-139\\-124.0234\\-144.4809\\-139\\-122.0703\\-143.3581\\-139\\-120.1172\\-142.5019\\-139\\-118.1641\\-141.4574\\-139\\-116.2109\\-140.7169\\-139\\-114.2578\\-140.0892\\-139\\-112.3047\\-139.1897\\-139\\-108.3984\\-138.1603\\-139\\-106.4453\\-137.2466\\-139\\-104.4922\\-136.7301\\-139\\-102.5391\\-136.0923\\-139\\-100.5859\\-135.2797\\-139\\-96.67969\\-134.3463\\-139\\-94.72656\\-133.6402\\-139\\-92.77344\\-133.133\\-139\\-88.86719\\-132.5672\\-139\\-86.91406\\-132.1098\\-139\\-84.96094\\-131.4773\\-139\\-83.00781\\-131.1416\\-139\\-77.14844\\-130.448\\-139\\-73.24219\\-129.8506\\-139\\-71.28906\\-129.6504\\-139\\-67.38281\\-129.3949\\-139\\-65.42969\\-129.3605\\-139\\-61.52344\\-129.4142\\-139\\-59.57031\\-129.5461\\-139\\-57.61719\\-129.8099\\-139\\-55.66406\\-130.2576\\-139\\-51.75781\\-130.9866\\-139\\-49.80469\\-131.4624\\-139\\-47.85156\\-132.2629\\-139\\-43.94531\\-133.116\\-139\\-41.99219\\-133.8436\\-139\\-40.03906\\-134.7126\\-139\\-38.08594\\-135.4526\\-139\\-36.13281\\-136.6285\\-139\\-34.17969\\-137.677\\-139\\-32.22656\\-138.8352\\-139\\-30.27344\\-140.175\\-139\\-28.32031\\-141.329\\-139\\-25.81018\\-143.6172\\-139\\-22.03954\\-147.5234\\-139\\-20.50781\\-149.5829\\-139\\-17.98405\\-153.3828\\-139\\-17.24709\\-155.3359\\-139\\-16.08112\\-157.2891\\-139\\-15.41574\\-159.2422\\-139\\-14.52546\\-161.1953\\-139\\-13.92613\\-163.1484\\-139\\-13.18687\\-167.0547\\-139\\-12.53756\\-169.0078\\-139\\-12.05426\\-170.9609\\-139\\-11.79751\\-172.9141\\-139\\-11.47056\\-176.8203\\-139\\-11.25458\\-178.7734\\-139\\-10.5678\\-182.6797\\-139\\-10.33579\\-184.6328\\-139\\-10.23687\\-188.5391\\-139\\-10.2983\\-190.4922\\-139\\-10.64745\\-194.3984\\-139\\-10.75013\\-196.3516\\-139\\-10.63368\\-200.2578\\-139\\-10.39567\\-202.2109\\-139\\-9.997914\\-208.0703\\-139\\-9.905802\\-211.9766\\-139\\-9.992074\\-219.7891\\-139\\-10.22023\\-223.6953\\-139\\-10.47165\\-225.6484\\-139\\-11.59075\\-227.6016\\-139\\-11.51816\\-231.5078\\-139\\-11.90186\\-235.4141\\-139\\-12.19733\\-237.3672\\-139\\-13.20623\\-241.2734\\-139\\-13.84788\\-245.1797\\-139\\-14.32729\\-247.1328\\-139\\-15.1784\\-249.0859\\-139\\-16.36584\\-252.9922\\-139\\-17.31806\\-254.9453\\-139\\-17.8371\\-256.8984\\-139\\-18.85679\\-258.8516\\-139\\-20.03933\\-262.7578\\-139\\-21.13767\\-264.7109\\-139\\-21.90369\\-266.6641\\-139\\-23.14397\\-268.6172\\-139\\-24.03249\\-270.5703\\-139\\-25.26004\\-272.5234\\-139\\-26.06614\\-274.4766\\-139\\-28.62762\\-278.3828\\-139\\-29.81771\\-280.3359\\-139\\-32.6629\\-284.2422\\-139\\-33.74945\\-286.1953\\-139\\-35.35031\\-288.1484\\-139\\-40.03906\\-293.2498\\-139\\-41.99219\\-294.9782\\-139\\-43.94531\\-296.4795\\-139\\-49.80469\\-300.2301\\-139\\-55.66406\\-302.4485\\-139\\-59.57031\\-303.034\\-139\\-65.42969\\-304.1302\\-139\\-69.33594\\-304.3732\\-139\\-73.24219\\-304.402\\-139\\-77.14844\\-304.2531\\-139"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002371"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "170"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "59.57031\\-301.9931\\-139\\57.61719\\-301.3825\\-139\\53.71094\\-300.4483\\-139\\51.75781\\-299.4911\\-139\\49.80469\\-298.7131\\-139\\47.85156\\-297.5411\\-139\\45.89844\\-296.5728\\-139\\43.94531\\-295.2431\\-139\\41.99219\\-294.0316\\-139\\40.03906\\-292.582\\-139\\35.13532\\-288.1484\\-139\\33.2224\\-286.1953\\-139\\29.78857\\-282.2891\\-139\\28.2234\\-280.3359\\-139\\25.62225\\-276.4297\\-139\\24.41406\\-274.2586\\-139\\22.46094\\-270.9758\\-139\\22.13542\\-270.5703\\-139\\21.25594\\-268.6172\\-139\\20.12392\\-266.6641\\-139\\18.80787\\-262.7578\\-139\\17.82614\\-260.8047\\-139\\17.30745\\-258.8516\\-139\\16.31974\\-256.8984\\-139\\15.13076\\-252.9922\\-139\\14.30339\\-251.0391\\-139\\13.87533\\-249.0859\\-139\\13.19661\\-245.1797\\-139\\12.08726\\-241.2734\\-139\\11.38762\\-235.4141\\-139\\10.97238\\-233.4609\\-139\\10.43822\\-231.5078\\-139\\10.10665\\-229.5547\\-139\\9.937686\\-227.6016\\-139\\9.591239\\-221.7422\\-139\\9.243983\\-213.9297\\-139\\8.872335\\-208.0703\\-139\\8.44254\\-204.1641\\-139\\8.373119\\-200.2578\\-139\\8.507236\\-198.3047\\-139\\9.250383\\-194.3984\\-139\\9.941499\\-188.5391\\-139\\10.18025\\-184.6328\\-139\\10.39567\\-182.6797\\-139\\11.14695\\-178.7734\\-139\\11.41357\\-176.8203\\-139\\12.09106\\-170.9609\\-139\\13.21572\\-167.0547\\-139\\13.93769\\-163.1484\\-139\\14.61088\\-161.1953\\-139\\15.50424\\-159.2422\\-139\\16.29352\\-157.2891\\-139\\16.60156\\-156.868\\-139\\18.55469\\-153.4293\\-139\\19.79933\\-151.4297\\-139\\22.46094\\-148.2268\\-139\\24.41406\\-146.1273\\-139\\26.9043\\-143.6172\\-139\\28.32031\\-142.2777\\-139\\30.27344\\-140.6364\\-139\\32.22656\\-139.1888\\-139\\34.17969\\-138.1123\\-139\\34.59944\\-137.7578\\-139\\38.08594\\-135.5853\\-139\\40.03906\\-134.719\\-139\\41.99219\\-133.7088\\-139\\43.94531\\-133.0136\\-139\\45.89844\\-132.5994\\-139\\49.80469\\-131.1685\\-139\\53.71094\\-130.4764\\-139\\55.66406\\-129.9377\\-139\\57.61719\\-129.5014\\-139\\59.57031\\-129.3098\\-139\\63.47656\\-129.1459\\-139\\69.33594\\-129.2265\\-139\\73.24219\\-129.3991\\-139\\77.14844\\-129.7837\\-139\\81.05469\\-130.4426\\-139\\88.86719\\-131.2082\\-139\\90.82031\\-131.5166\\-139\\94.72656\\-132.4696\\-139\\100.5859\\-133.133\\-139\\102.5391\\-133.5008\\-139\\104.4922\\-134.0903\\-139\\108.3984\\-134.9591\\-139\\110.3516\\-135.5171\\-139\\112.3047\\-136.2283\\-139\\114.2578\\-136.8324\\-139\\116.2109\\-137.2374\\-139\\118.1641\\-138.0621\\-139\\120.1172\\-138.6666\\-139\\122.0703\\-139.1315\\-139\\124.0234\\-140.0602\\-139\\125.9766\\-140.7173\\-139\\127.9297\\-141.5235\\-139\\131.8359\\-143.5491\\-139\\135.5405\\-145.5703\\-139\\137.6953\\-146.6767\\-139\\141.6016\\-149.2307\\-139\\145.5078\\-152.4063\\-139\\147.4609\\-154.1119\\-139\\149.4141\\-156.0257\\-139\\152.5563\\-159.2422\\-139\\154.3362\\-161.1953\\-139\\155.971\\-163.1484\\-139\\158.4667\\-167.0547\\-139\\159.8804\\-169.0078\\-139\\161.9743\\-172.9141\\-139\\162.5877\\-174.8672\\-139\\163.6292\\-176.8203\\-139\\164.1372\\-178.7734\\-139\\164.7949\\-180.7266\\-139\\165.5503\\-182.6797\\-139\\165.9555\\-184.6328\\-139\\166.6534\\-188.5391\\-139\\167.0876\\-190.4922\\-139\\167.379\\-192.4453\\-139\\167.6839\\-196.3516\\-139\\167.8251\\-200.2578\\-139\\167.8545\\-204.1641\\-139\\167.786\\-208.0703\\-139\\167.6296\\-211.9766\\-139\\167.2778\\-215.8828\\-139\\166.2332\\-221.7422\\-139\\165.6454\\-225.6484\\-139\\165.1057\\-227.6016\\-139\\164.4601\\-229.5547\\-139\\163.7121\\-233.4609\\-139\\162.9552\\-235.4141\\-139\\162.3305\\-237.3672\\-139\\161.9248\\-239.3203\\-139\\161.1866\\-241.2734\\-139\\160.281\\-243.2266\\-139\\159.5459\\-245.1797\\-139\\158.3739\\-247.1328\\-139\\157.5731\\-249.0859\\-139\\156.4392\\-251.0391\\-139\\155.6485\\-252.9922\\-139\\153.3203\\-256.8673\\-139\\152.0051\\-258.8516\\-139\\150.5452\\-260.8047\\-139\\147.9731\\-264.7109\\-139\\146.3593\\-266.6641\\-139\\143.5547\\-269.834\\-139\\139.6484\\-274.1076\\-139\\135.7422\\-277.9327\\-139\\133.7891\\-279.9381\\-139\\128.7613\\-284.2422\\-139\\125.9766\\-286.5005\\-139\\120.1172\\-290.3406\\-139\\118.1641\\-291.3751\\-139\\116.2109\\-292.777\\-139\\114.2578\\-293.7516\\-139\\112.3047\\-294.8337\\-139\\110.3516\\-295.493\\-139\\108.3984\\-296.5493\\-139\\106.4453\\-297.1515\\-139\\104.4922\\-298.1378\\-139\\100.5859\\-299.4703\\-139\\98.63281\\-300.2866\\-139\\96.67969\\-300.7196\\-139\\92.77344\\-301.4558\\-139\\90.82031\\-301.9931\\-139\\88.86719\\-302.37\\-139\\86.91406\\-302.6167\\-139\\81.05469\\-302.9889\\-139\\75.19531\\-303.1638\\-139\\71.28906\\-303.1013\\-139\\63.47656\\-302.6648\\-139\\61.52344\\-302.4315\\-139"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002370"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "178"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-303.8542\\-137\\-83.00781\\-303.4276\\-137\\-84.96094\\-303.1244\\-137\\-88.86719\\-302.7351\\-137\\-90.82031\\-302.4526\\-137\\-92.77344\\-301.9653\\-137\\-94.72656\\-301.3223\\-137\\-98.63281\\-300.4278\\-137\\-102.5391\\-298.8071\\-137\\-106.4453\\-296.9375\\-137\\-108.3984\\-296.0617\\-137\\-112.2261\\-294.0078\\-137\\-114.2578\\-292.7942\\-137\\-116.2109\\-291.284\\-137\\-118.1641\\-289.9233\\-137\\-120.1172\\-288.8523\\-137\\-123.4531\\-286.1953\\-137\\-125.9766\\-284.0057\\-137\\-127.9297\\-282.582\\-137\\-129.8828\\-280.8205\\-137\\-136.1224\\-274.4766\\-137\\-137.5895\\-272.5234\\-137\\-139.1635\\-270.5703\\-137\\-140.8803\\-268.6172\\-137\\-142.436\\-266.6641\\-137\\-144.9298\\-262.7578\\-137\\-145.5078\\-262.0614\\-137\\-147.7469\\-258.8516\\-137\\-148.7175\\-256.8984\\-137\\-149.9353\\-254.9453\\-137\\-150.7263\\-252.9922\\-137\\-151.9967\\-251.0391\\-137\\-152.9257\\-249.0859\\-137\\-154.0527\\-247.1328\\-137\\-154.8018\\-245.1797\\-137\\-155.8248\\-243.2266\\-137\\-156.3904\\-241.2734\\-137\\-157.3213\\-239.3203\\-137\\-158.8454\\-235.4141\\-137\\-159.8184\\-233.4609\\-137\\-160.3592\\-231.5078\\-137\\-161.8577\\-227.6016\\-137\\-162.5621\\-223.6953\\-137\\-163.3212\\-221.7422\\-137\\-163.8318\\-219.7891\\-137\\-164.5726\\-215.8828\\-137\\-165.2007\\-213.9297\\-137\\-165.66\\-211.9766\\-137\\-166.2204\\-208.0703\\-137\\-166.6448\\-204.1641\\-137\\-166.9537\\-200.2578\\-137\\-166.776\\-196.3516\\-137\\-166.0457\\-190.4922\\-137\\-165.7424\\-188.5391\\-137\\-165.2865\\-186.5859\\-137\\-164.5114\\-184.6328\\-137\\-163.4206\\-180.7266\\-137\\-162.4242\\-178.7734\\-137\\-161.807\\-176.8203\\-137\\-160.6225\\-174.8672\\-137\\-159.6426\\-172.9141\\-137\\-157.2266\\-169.6615\\-137\\-156.6714\\-169.0078\\-137\\-155.4268\\-167.0547\\-137\\-153.7335\\-165.1016\\-137\\-149.4141\\-160.7789\\-137\\-147.4609\\-159.0755\\-137\\-145.5078\\-157.7239\\-137\\-141.6016\\-154.4699\\-137\\-139.6484\\-153.0428\\-137\\-137.6953\\-152.0872\\-137\\-135.7422\\-150.7031\\-137\\-130.3474\\-147.5234\\-137\\-129.8828\\-147.1767\\-137\\-127.9297\\-146.3821\\-137\\-125.9766\\-145.3046\\-137\\-124.0234\\-144.5208\\-137\\-122.0703\\-143.4055\\-137\\-120.1172\\-142.5232\\-137\\-118.1641\\-141.4702\\-137\\-114.2578\\-140.0552\\-137\\-112.3047\\-139.1575\\-137\\-110.3516\\-138.6658\\-137\\-108.3984\\-138.0695\\-137\\-106.4453\\-137.1863\\-137\\-104.4922\\-136.6862\\-137\\-100.5859\\-135.1882\\-137\\-96.67969\\-134.2023\\-137\\-94.72656\\-133.4733\\-137\\-92.77344\\-133.0498\\-137\\-88.86719\\-132.4305\\-137\\-84.96094\\-131.3191\\-137\\-83.00781\\-131.0299\\-137\\-79.10156\\-130.5875\\-137\\-75.19531\\-129.8931\\-137\\-71.28906\\-129.4241\\-137\\-67.38281\\-129.1764\\-137\\-65.42969\\-129.1608\\-137\\-61.52344\\-129.2524\\-137\\-57.61719\\-129.5965\\-137\\-53.71094\\-130.4609\\-137\\-49.80469\\-131.2675\\-137\\-45.89844\\-132.6037\\-137\\-43.94531\\-132.9895\\-137\\-41.99219\\-133.5715\\-137\\-40.03906\\-134.5413\\-137\\-38.08594\\-135.2615\\-137\\-36.13281\\-136.4808\\-137\\-34.17969\\-137.4498\\-137\\-30.70854\\-139.7109\\-137\\-28.32031\\-141.1826\\-137\\-26.36719\\-142.9138\\-137\\-21.89453\\-147.5234\\-137\\-20.36171\\-149.4766\\-137\\-19.24214\\-151.4297\\-137\\-17.96759\\-153.3828\\-137\\-17.24709\\-155.3359\\-137\\-16.10151\\-157.2891\\-137\\-15.44356\\-159.2422\\-137\\-14.58185\\-161.1953\\-137\\-13.94924\\-163.1484\\-137\\-13.24142\\-167.0547\\-137\\-12.625\\-169.0078\\-137\\-12.10814\\-170.9609\\-137\\-11.83143\\-172.9141\\-137\\-11.49462\\-176.8203\\-137\\-11.2754\\-178.7734\\-137\\-10.66142\\-182.6797\\-137\\-10.41667\\-184.6328\\-137\\-10.31681\\-188.5391\\-137\\-10.55519\\-192.4453\\-137\\-10.86796\\-194.3984\\-137\\-10.96156\\-196.3516\\-137\\-10.69\\-200.2578\\-137\\-10.2892\\-204.1641\\-137\\-10.02798\\-208.0703\\-137\\-9.943182\\-211.9766\\-137\\-10.01578\\-219.7891\\-137\\-10.27135\\-223.6953\\-137\\-10.54275\\-225.6484\\-137\\-11.51021\\-227.6016\\-137\\-11.54119\\-231.5078\\-137\\-11.91518\\-235.4141\\-137\\-12.22997\\-237.3672\\-137\\-13.23785\\-241.2734\\-137\\-13.87747\\-245.1797\\-137\\-14.34039\\-247.1328\\-137\\-15.16025\\-249.0859\\-137\\-16.41456\\-252.9922\\-137\\-17.35476\\-254.9453\\-137\\-17.8689\\-256.8984\\-137\\-18.90542\\-258.8516\\-137\\-20.10769\\-262.7578\\-137\\-21.19814\\-264.7109\\-137\\-21.95562\\-266.6641\\-137\\-23.21\\-268.6172\\-137\\-24.12446\\-270.5703\\-137\\-25.3116\\-272.5234\\-137\\-26.14765\\-274.4766\\-137\\-27.36742\\-276.4297\\-137\\-28.707\\-278.3828\\-137\\-29.8865\\-280.3359\\-137\\-32.69777\\-284.2422\\-137\\-33.82138\\-286.1953\\-137\\-35.39088\\-288.1484\\-137\\-40.03906\\-293.1929\\-137\\-41.99219\\-294.9346\\-137\\-43.94531\\-296.4004\\-137\\-49.80469\\-300.1588\\-137\\-53.71094\\-301.6325\\-137\\-55.66406\\-302.4189\\-137\\-57.61719\\-302.7638\\-137\\-61.52344\\-303.333\\-137\\-65.42969\\-304.099\\-137\\-67.38281\\-304.2703\\-137\\-71.28906\\-304.3949\\-137\\-75.19531\\-304.3507\\-137\\-77.14844\\-304.2443\\-137"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002370"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "172"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "57.61719\\-301.3026\\-137\\53.71094\\-300.377\\-137\\51.75781\\-299.4073\\-137\\49.80469\\-298.6412\\-137\\47.85156\\-297.429\\-137\\45.89844\\-296.4873\\-137\\42.12042\\-294.0078\\-137\\40.03906\\-292.51\\-137\\35.17718\\-288.1484\\-137\\33.25486\\-286.1953\\-137\\29.82325\\-282.2891\\-137\\28.2527\\-280.3359\\-137\\25.64264\\-276.4297\\-137\\24.41406\\-274.2605\\-137\\22.46094\\-271.0179\\-137\\22.10046\\-270.5703\\-137\\21.24452\\-268.6172\\-137\\20.11045\\-266.6641\\-137\\18.80787\\-262.7578\\-137\\17.82614\\-260.8047\\-137\\17.30363\\-258.8516\\-137\\16.35408\\-256.8984\\-137\\15.15719\\-252.9922\\-137\\14.34949\\-251.0391\\-137\\13.90301\\-249.0859\\-137\\13.25061\\-245.1797\\-137\\12.78057\\-243.2266\\-137\\12.18776\\-241.2734\\-137\\11.89076\\-239.3203\\-137\\11.47056\\-235.4141\\-137\\11.15437\\-233.4609\\-137\\10.22023\\-229.5547\\-137\\10.02798\\-227.6016\\-137\\9.598775\\-219.7891\\-137\\9.359195\\-213.9297\\-137\\8.901743\\-208.0703\\-137\\8.47425\\-204.1641\\-137\\8.402122\\-202.2109\\-137\\8.432241\\-200.2578\\-137\\8.589623\\-198.3047\\-137\\9.409015\\-194.3984\\-137\\9.986291\\-188.5391\\-137\\10.22023\\-184.6328\\-137\\10.41667\\-182.6797\\-137\\11.1443\\-178.7734\\-137\\11.41357\\-176.8203\\-137\\12.07886\\-170.9609\\-137\\13.20623\\-167.0547\\-137\\13.92613\\-163.1484\\-137\\14.58185\\-161.1953\\-137\\15.49831\\-159.2422\\-137\\16.28041\\-157.2891\\-137\\17.47019\\-155.3359\\-137\\18.51563\\-153.3828\\-137\\19.7532\\-151.4297\\-137\\22.46094\\-148.1676\\-137\\24.41406\\-146.0623\\-137\\28.32031\\-142.1936\\-137\\30.27344\\-140.5598\\-137\\32.22656\\-139.1014\\-137\\37.6279\\-135.8047\\-137\\38.08594\\-135.4502\\-137\\40.03906\\-134.6458\\-137\\41.99219\\-133.6002\\-137\\43.94531\\-132.9643\\-137\\45.89844\\-132.5311\\-137\\47.85156\\-131.6837\\-137\\49.80469\\-131.1065\\-137\\53.71094\\-130.3347\\-137\\55.66406\\-129.7096\\-137\\57.61719\\-129.3757\\-137\\61.52344\\-129.098\\-137\\63.47656\\-129.031\\-137\\67.38281\\-129.0219\\-137\\73.24219\\-129.2166\\-137\\77.14844\\-129.5014\\-137\\79.10156\\-129.7583\\-137\\83.00781\\-130.451\\-137\\88.86719\\-131.0662\\-137\\90.82031\\-131.3114\\-137\\92.77344\\-131.6837\\-137\\94.72656\\-132.224\\-137\\96.67969\\-132.5635\\-137\\100.5859\\-132.9762\\-137\\102.5391\\-133.2618\\-137\\104.4922\\-133.7229\\-137\\106.4453\\-134.3169\\-137\\110.3516\\-135.1517\\-137\\112.3047\\-135.7092\\-137\\114.2578\\-136.5544\\-137\\116.2109\\-136.9413\\-137\\118.1641\\-137.5822\\-137\\120.1172\\-138.4269\\-137\\122.0703\\-138.9071\\-137\\124.0234\\-139.6389\\-137\\125.9766\\-140.476\\-137\\127.9297\\-141.1402\\-137\\129.8828\\-142.2799\\-137\\131.8359\\-143.1477\\-137\\133.7891\\-144.3853\\-137\\135.7422\\-145.328\\-137\\139.4892\\-147.5234\\-137\\141.6016\\-148.9176\\-137\\145.5078\\-152.2275\\-137\\147.0058\\-153.3828\\-137\\149.4141\\-155.6875\\-137\\152.843\\-159.2422\\-137\\156.1151\\-163.1484\\-137\\157.4475\\-165.1016\\-137\\158.6153\\-167.0547\\-137\\160.0052\\-169.0078\\-137\\161.1328\\-171.0722\\-137\\162.0422\\-172.9141\\-137\\162.6912\\-174.8672\\-137\\163.6956\\-176.8203\\-137\\164.1981\\-178.7734\\-137\\165.6337\\-182.6797\\-137\\166.724\\-188.5391\\-137\\167.1419\\-190.4922\\-137\\167.6099\\-194.3984\\-137\\167.8431\\-200.2578\\-137\\167.8545\\-204.1641\\-137\\167.7974\\-208.0703\\-137\\167.6296\\-211.9766\\-137\\167.2891\\-215.8828\\-137\\166.5728\\-219.7891\\-137\\165.6337\\-225.6484\\-137\\164.4554\\-229.5547\\-137\\163.7042\\-233.4609\\-137\\162.3305\\-237.3672\\-137\\161.9057\\-239.3203\\-137\\161.1716\\-241.2734\\-137\\160.2702\\-243.2266\\-137\\159.5225\\-245.1797\\-137\\158.3632\\-247.1328\\-137\\157.5521\\-249.0859\\-137\\156.4148\\-251.0391\\-137\\155.6343\\-252.9922\\-137\\153.3203\\-256.7662\\-137\\151.9704\\-258.8516\\-137\\150.5066\\-260.8047\\-137\\149.4141\\-262.5185\\-137\\147.8834\\-264.7109\\-137\\146.2927\\-266.6641\\-137\\141.0935\\-272.5234\\-137\\139.6484\\-274.0732\\-137\\135.7422\\-277.9174\\-137\\133.7891\\-279.9091\\-137\\128.7371\\-284.2422\\-137\\125.9766\\-286.489\\-137\\120.1172\\-290.3285\\-137\\118.1641\\-291.3637\\-137\\116.2109\\-292.7813\\-137\\112.3047\\-294.8457\\-137\\110.3516\\-295.5139\\-137\\108.3984\\-296.5577\\-137\\106.4453\\-297.1515\\-137\\104.4922\\-298.1378\\-137\\100.5859\\-299.4703\\-137\\98.63281\\-300.2866\\-137\\96.67969\\-300.7196\\-137\\92.77344\\-301.4447\\-137\\90.82031\\-301.9793\\-137\\88.86719\\-302.3571\\-137\\86.91406\\-302.6097\\-137\\84.96094\\-302.7527\\-137\\79.10156\\-303.0424\\-137\\75.19531\\-303.136\\-137\\71.28906\\-303.0607\\-137\\65.42969\\-302.7638\\-137\\63.47656\\-302.6097\\-137\\61.52344\\-302.3571\\-137"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002369"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "185"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-303.84\\-135\\-84.96094\\-303.1594\\-135\\-88.86719\\-302.7411\\-135\\-90.82031\\-302.461\\-135\\-92.77344\\-301.951\\-135\\-94.72656\\-301.3223\\-135\\-98.63281\\-300.4157\\-135\\-100.5859\\-299.5591\\-135\\-102.5391\\-298.8127\\-135\\-106.4453\\-296.9268\\-135\\-108.3984\\-296.0469\\-135\\-112.2037\\-294.0078\\-135\\-114.2578\\-292.8011\\-135\\-116.2109\\-291.284\\-135\\-118.1641\\-289.9375\\-135\\-120.1172\\-288.8523\\-135\\-123.4422\\-286.1953\\-135\\-125.9766\\-284.0209\\-135\\-127.9297\\-282.582\\-135\\-129.8828\\-280.8316\\-135\\-136.1607\\-274.4766\\-135\\-137.6374\\-272.5234\\-135\\-140.9225\\-268.6172\\-135\\-142.4731\\-266.6641\\-135\\-144.9992\\-262.7578\\-135\\-145.5078\\-262.1575\\-135\\-147.8229\\-258.8516\\-135\\-148.774\\-256.8984\\-135\\-150.0077\\-254.9453\\-135\\-150.7939\\-252.9922\\-135\\-152.0769\\-251.0391\\-135\\-153.0323\\-249.0859\\-135\\-154.1162\\-247.1328\\-135\\-154.8814\\-245.1797\\-135\\-155.9008\\-243.2266\\-135\\-156.4441\\-241.2734\\-135\\-157.4398\\-239.3203\\-135\\-158.9373\\-235.4141\\-135\\-159.8838\\-233.4609\\-135\\-160.4241\\-231.5078\\-135\\-161.2744\\-229.5547\\-135\\-161.901\\-227.6016\\-135\\-162.6275\\-223.6953\\-135\\-163.4294\\-221.7422\\-135\\-163.8911\\-219.7891\\-135\\-164.2226\\-217.8359\\-135\\-164.6893\\-215.8828\\-135\\-165.343\\-213.9297\\-135\\-165.746\\-211.9766\\-135\\-166.5827\\-206.1172\\-135\\-167.0298\\-202.2109\\-135\\-167.1276\\-200.2578\\-135\\-167.0869\\-198.3047\\-135\\-166.9235\\-196.3516\\-135\\-165.8074\\-188.5391\\-135\\-165.3752\\-186.5859\\-135\\-164.5821\\-184.6328\\-135\\-163.5192\\-180.7266\\-135\\-162.4987\\-178.7734\\-135\\-161.873\\-176.8203\\-135\\-160.7068\\-174.8672\\-135\\-159.7174\\-172.9141\\-135\\-156.7179\\-169.0078\\-135\\-155.4719\\-167.0547\\-135\\-153.7751\\-165.1016\\-135\\-149.4141\\-160.7789\\-135\\-147.4609\\-159.1211\\-135\\-145.5078\\-157.7704\\-135\\-141.6016\\-154.5171\\-135\\-139.6484\\-153.1499\\-135\\-137.6953\\-152.1428\\-135\\-135.7422\\-150.7767\\-135\\-130.2237\\-147.5234\\-135\\-129.8828\\-147.2518\\-135\\-127.9297\\-146.4187\\-135\\-125.9766\\-145.3706\\-135\\-124.0234\\-144.5432\\-135\\-122.0703\\-143.4556\\-135\\-120.1172\\-142.5398\\-135\\-118.1641\\-141.4558\\-135\\-114.2578\\-140.0175\\-135\\-112.3047\\-139.1085\\-135\\-110.3516\\-138.6202\\-135\\-108.3984\\-137.9428\\-135\\-106.4453\\-137.1085\\-135\\-104.4922\\-136.6022\\-135\\-102.5391\\-135.7239\\-135\\-100.5859\\-135.0736\\-135\\-98.63281\\-134.6041\\-135\\-94.72656\\-133.3018\\-135\\-90.82031\\-132.6691\\-135\\-88.86719\\-132.2467\\-135\\-86.91406\\-131.5794\\-135\\-84.96094\\-131.1915\\-135\\-79.10156\\-130.451\\-135\\-75.19531\\-129.6748\\-135\\-71.28906\\-129.2171\\-135\\-67.38281\\-129.0124\\-135\\-65.42969\\-128.9906\\-135\\-61.52344\\-129.0767\\-135\\-57.61719\\-129.431\\-135\\-55.66406\\-129.7336\\-135\\-53.71094\\-130.2597\\-135\\-49.80469\\-131.0981\\-135\\-47.85156\\-131.6015\\-135\\-45.89844\\-132.4128\\-135\\-41.99219\\-133.3303\\-135\\-40.03906\\-134.2997\\-135\\-38.08594\\-135.0636\\-135\\-36.13281\\-136.2279\\-135\\-34.17969\\-137.204\\-135\\-32.22656\\-138.5684\\-135\\-28.32031\\-141.0152\\-135\\-26.36719\\-142.7469\\-135\\-24.41406\\-144.7226\\-135\\-21.75705\\-147.5234\\-135\\-20.21123\\-149.4766\\-135\\-19.19922\\-151.4297\\-135\\-17.94362\\-153.3828\\-135\\-17.25812\\-155.3359\\-135\\-16.11032\\-157.2891\\-135\\-15.4772\\-159.2422\\-135\\-14.61088\\-161.1953\\-135\\-13.96484\\-163.1484\\-135\\-13.29385\\-167.0547\\-135\\-12.17831\\-170.9609\\-135\\-11.87785\\-172.9141\\-135\\-11.32111\\-178.7734\\-135\\-10.53049\\-184.6328\\-135\\-10.4061\\-188.5391\\-135\\-10.50647\\-190.4922\\-135\\-10.70463\\-192.4453\\-135\\-11.02218\\-194.3984\\-135\\-11.08099\\-196.3516\\-135\\-10.81085\\-200.2578\\-135\\-10.15732\\-206.1172\\-135\\-10.05959\\-208.0703\\-135\\-9.971217\\-211.9766\\-135\\-10.04676\\-219.7891\\-135\\-10.32624\\-223.6953\\-135\\-10.59358\\-225.6484\\-135\\-11.22437\\-227.6016\\-135\\-11.56012\\-229.5547\\-135\\-11.55341\\-231.5078\\-135\\-11.94018\\-235.4141\\-135\\-12.25322\\-237.3672\\-135\\-12.80975\\-239.3203\\-135\\-13.25969\\-241.2734\\-135\\-13.9074\\-245.1797\\-135\\-14.39925\\-247.1328\\-135\\-15.21382\\-249.0859\\-135\\-15.76803\\-251.0391\\-135\\-16.49306\\-252.9922\\-135\\-17.40011\\-254.9453\\-135\\-17.91295\\-256.8984\\-135\\-18.94124\\-258.8516\\-135\\-20.16844\\-262.7578\\-135\\-21.24161\\-264.7109\\-135\\-21.99897\\-266.6641\\-135\\-23.24548\\-268.6172\\-135\\-24.19936\\-270.5703\\-135\\-25.33418\\-272.5234\\-135\\-26.21993\\-274.4766\\-135\\-27.41477\\-276.4297\\-135\\-28.75077\\-278.3828\\-135\\-29.93735\\-280.3359\\-135\\-32.73519\\-284.2422\\-135\\-33.87318\\-286.1953\\-135\\-35.43709\\-288.1484\\-135\\-40.03906\\-293.1302\\-135\\-41.99219\\-294.878\\-135\\-43.94531\\-296.3271\\-135\\-45.89844\\-297.5025\\-135\\-47.85156\\-298.8906\\-135\\-49.80469\\-300.099\\-135\\-51.75781\\-300.8973\\-135\\-53.71094\\-301.578\\-135\\-55.66406\\-302.3793\\-135\\-57.61719\\-302.7411\\-135\\-61.52344\\-303.2914\\-135\\-65.42969\\-304.0553\\-135\\-67.38281\\-304.2531\\-135\\-71.28906\\-304.3805\\-135\\-75.19531\\-304.3431\\-135\\-79.10156\\-304.0774\\-135"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002369"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "171"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "61.52344\\-302.2715\\-135\\57.61719\\-301.2306\\-135\\55.66406\\-300.8267\\-135\\53.71094\\-300.3116\\-135\\51.75781\\-299.3152\\-135\\49.80469\\-298.5596\\-135\\47.85156\\-297.3269\\-135\\45.89844\\-296.4001\\-135\\42.26714\\-294.0078\\-135\\40.03906\\-292.4467\\-135\\36.13281\\-288.9827\\-135\\33.28776\\-286.1953\\-135\\29.86189\\-282.2891\\-135\\28.29742\\-280.3359\\-135\\25.65524\\-276.4297\\-135\\24.6063\\-274.4766\\-135\\22.46094\\-271.0465\\-135\\22.07937\\-270.5703\\-135\\21.2228\\-268.6172\\-135\\20.08642\\-266.6641\\-135\\18.80976\\-262.7578\\-135\\17.81581\\-260.8047\\-135\\17.29986\\-258.8516\\-135\\16.37777\\-256.8984\\-135\\15.18584\\-252.9922\\-135\\14.39576\\-251.0391\\-135\\13.93769\\-249.0859\\-135\\13.32355\\-245.1797\\-135\\12.90666\\-243.2266\\-135\\12.30876\\-241.2734\\-135\\11.973\\-239.3203\\-135\\11.55164\\-235.4141\\-135\\11.2893\\-233.4609\\-135\\10.89523\\-231.5078\\-135\\10.39567\\-229.5547\\-135\\10.12074\\-227.6016\\-135\\9.684245\\-219.7891\\-135\\9.434679\\-213.9297\\-135\\9.028081\\-210.0234\\-135\\8.496094\\-204.1641\\-135\\8.432241\\-202.2109\\-135\\8.781433\\-198.3047\\-135\\9.480575\\-194.3984\\-135\\9.997914\\-188.5391\\-135\\10.2285\\-184.6328\\-135\\10.4061\\-182.6797\\-135\\11.40625\\-176.8203\\-135\\12.0503\\-170.9609\\-135\\12.55035\\-169.0078\\-135\\13.17376\\-167.0547\\-135\\13.91457\\-163.1484\\-135\\14.55298\\-161.1953\\-135\\15.47558\\-159.2422\\-135\\16.2482\\-157.2891\\-135\\17.45412\\-155.3359\\-135\\18.47076\\-153.3828\\-135\\19.70766\\-151.4297\\-135\\22.46094\\-148.0966\\-135\\24.41406\\-146.0068\\-135\\28.32031\\-142.1131\\-135\\30.27344\\-140.4805\\-135\\32.22656\\-139.006\\-135\\36.13281\\-136.6456\\-135\\38.08594\\-135.3387\\-135\\40.03906\\-134.5535\\-135\\41.99219\\-133.4871\\-135\\43.94531\\-132.9105\\-135\\45.89844\\-132.441\\-135\\47.85156\\-131.5267\\-135\\49.80469\\-131.0267\\-135\\51.75781\\-130.6436\\-135\\55.66406\\-129.5294\\-135\\57.61719\\-129.2723\\-135\\59.57031\\-129.1131\\-135\\63.47656\\-128.9104\\-135\\69.33594\\-128.8902\\-135\\75.19531\\-129.1356\\-135\\77.14844\\-129.2684\\-135\\81.05469\\-129.6978\\-135\\84.96094\\-130.4571\\-135\\90.82031\\-131.1162\\-135\\92.77344\\-131.3842\\-135\\94.72656\\-131.7883\\-135\\96.67969\\-132.3302\\-135\\98.63281\\-132.6383\\-135\\102.5391\\-133.0498\\-135\\104.4922\\-133.39\\-135\\108.3984\\-134.454\\-135\\112.3047\\-135.2891\\-135\\114.2578\\-136.1565\\-135\\118.1641\\-137.1696\\-135\\120.1172\\-138.0255\\-135\\122.0703\\-138.6821\\-135\\124.0234\\-139.2058\\-135\\125.9766\\-140.1473\\-135\\127.9297\\-140.8279\\-135\\131.8359\\-142.8005\\-135\\133.7891\\-144.0367\\-135\\135.7422\\-144.9639\\-135\\137.6953\\-146.2147\\-135\\139.6484\\-147.2147\\-135\\141.6016\\-148.6422\\-135\\145.5078\\-151.963\\-135\\147.4609\\-153.3573\\-135\\149.4141\\-155.1916\\-135\\153.3203\\-159.3251\\-135\\155.2734\\-161.7982\\-135\\157.6717\\-165.1016\\-135\\158.8239\\-167.0547\\-135\\160.1453\\-169.0078\\-135\\161.2778\\-170.9609\\-135\\162.1155\\-172.9141\\-135\\162.8143\\-174.8672\\-135\\163.777\\-176.8203\\-135\\164.2857\\-178.7734\\-135\\165.0618\\-180.7266\\-135\\165.7127\\-182.6797\\-135\\166.4051\\-186.5859\\-135\\167.2054\\-190.4922\\-135\\167.6217\\-194.3984\\-135\\167.8022\\-198.3047\\-135\\167.8596\\-204.1641\\-135\\167.8022\\-208.0703\\-135\\167.5078\\-213.9297\\-135\\166.9922\\-217.7086\\-135\\166.5728\\-219.7891\\-135\\165.6413\\-225.6484\\-135\\164.4601\\-229.5547\\-135\\163.7121\\-233.4609\\-135\\162.9552\\-235.4141\\-135\\162.323\\-237.3672\\-135\\161.9057\\-239.3203\\-135\\161.1563\\-241.2734\\-135\\160.2485\\-243.2266\\-135\\159.4898\\-245.1797\\-135\\158.357\\-247.1328\\-135\\157.5195\\-249.0859\\-135\\156.3974\\-251.0391\\-135\\155.6085\\-252.9922\\-135\\153.3203\\-256.6892\\-135\\151.9176\\-258.8516\\-135\\150.47\\-260.8047\\-135\\149.4141\\-262.4449\\-135\\147.8192\\-264.7109\\-135\\146.2447\\-266.6641\\-135\\141.0707\\-272.5234\\-135\\139.6484\\-274.048\\-135\\133.7891\\-279.8726\\-135\\128.7063\\-284.2422\\-135\\125.9766\\-286.4412\\-135\\120.1172\\-290.3039\\-135\\118.1641\\-291.3481\\-135\\116.2109\\-292.7813\\-135\\112.3047\\-294.8457\\-135\\110.3516\\-295.5139\\-135\\108.3984\\-296.566\\-135\\106.4453\\-297.1405\\-135\\104.4922\\-298.1258\\-135\\100.5859\\-299.4603\\-135\\98.63281\\-300.2767\\-135\\96.67969\\-300.7181\\-135\\92.77344\\-301.4337\\-135\\90.82031\\-301.95\\-135\\88.86719\\-302.3381\\-135\\86.91406\\-302.591\\-135\\83.00781\\-302.84\\-135\\79.10156\\-303.0065\\-135\\75.19531\\-303.1013\\-135\\71.28906\\-303.0133\\-135\\65.42969\\-302.7299\\-135\\63.47656\\-302.5497\\-135"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002368"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "183"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.96094\\-303.1594\\-133\\-88.86719\\-302.7299\\-133\\-90.82031\\-302.4526\\-133\\-92.77344\\-301.951\\-133\\-94.72656\\-301.3094\\-133\\-98.63281\\-300.4037\\-133\\-100.5859\\-299.5352\\-133\\-102.5391\\-298.7966\\-133\\-104.4922\\-297.8156\\-133\\-108.3984\\-296.0161\\-133\\-112.1812\\-294.0078\\-133\\-114.2578\\-292.7899\\-133\\-116.2109\\-291.2769\\-133\\-118.1641\\-289.9519\\-133\\-120.1172\\-288.8523\\-133\\-123.4467\\-286.1953\\-133\\-125.9766\\-284.0469\\-133\\-127.9297\\-282.582\\-133\\-129.8828\\-280.8316\\-133\\-136.1867\\-274.4766\\-133\\-139.2927\\-270.5703\\-133\\-141.6016\\-267.8281\\-133\\-142.511\\-266.6641\\-133\\-145.0576\\-262.7578\\-133\\-145.5078\\-262.2289\\-133\\-147.8852\\-258.8516\\-133\\-148.8281\\-256.8984\\-133\\-150.0588\\-254.9453\\-133\\-150.8659\\-252.9922\\-133\\-152.1341\\-251.0391\\-133\\-154.179\\-247.1328\\-133\\-154.9408\\-245.1797\\-133\\-155.952\\-243.2266\\-133\\-156.4897\\-241.2734\\-133\\-157.5215\\-239.3203\\-133\\-158.2031\\-237.3672\\-133\\-159.9375\\-233.4609\\-133\\-160.503\\-231.5078\\-133\\-161.368\\-229.5547\\-133\\-161.9436\\-227.6016\\-133\\-162.7189\\-223.6953\\-133\\-163.5063\\-221.7422\\-133\\-164.2958\\-217.8359\\-133\\-164.7966\\-215.8828\\-133\\-165.455\\-213.9297\\-133\\-165.8253\\-211.9766\\-133\\-166.7277\\-206.1172\\-133\\-167.1792\\-202.2109\\-133\\-167.2531\\-200.2578\\-133\\-167.0869\\-196.3516\\-133\\-165.8627\\-188.5391\\-133\\-165.4455\\-186.5859\\-133\\-164.655\\-184.6328\\-133\\-163.5989\\-180.7266\\-133\\-162.5674\\-178.7734\\-133\\-161.9251\\-176.8203\\-133\\-160.7869\\-174.8672\\-133\\-159.7923\\-172.9141\\-133\\-156.7417\\-169.0078\\-133\\-155.5\\-167.0547\\-133\\-153.79\\-165.1016\\-133\\-149.4141\\-160.7671\\-133\\-147.4609\\-159.1519\\-133\\-145.5078\\-157.8248\\-133\\-141.6016\\-154.5805\\-133\\-139.6484\\-153.2656\\-133\\-137.6953\\-152.202\\-133\\-135.7422\\-150.8366\\-133\\-133.7891\\-149.7953\\-133\\-133.3756\\-149.4766\\-133\\-129.8828\\-147.3073\\-133\\-127.9297\\-146.4431\\-133\\-125.9766\\-145.4113\\-133\\-124.0234\\-144.5545\\-133\\-122.0703\\-143.4556\\-133\\-120.1172\\-142.5232\\-133\\-118.1641\\-141.4164\\-133\\-114.2578\\-139.9403\\-133\\-112.3047\\-139.0249\\-133\\-110.3516\\-138.5426\\-133\\-108.3984\\-137.7056\\-133\\-106.4453\\-136.9858\\-133\\-104.4922\\-136.4421\\-133\\-102.5391\\-135.4878\\-133\\-98.63281\\-134.4212\\-133\\-96.67969\\-133.6652\\-133\\-94.72656\\-133.1408\\-133\\-90.82031\\-132.5271\\-133\\-86.91406\\-131.3428\\-133\\-81.05469\\-130.5624\\-133\\-79.10156\\-130.2534\\-133\\-77.14844\\-129.7967\\-133\\-75.19531\\-129.4745\\-133\\-71.28906\\-129.0492\\-133\\-69.33594\\-128.9308\\-133\\-65.42969\\-128.8237\\-133\\-61.52344\\-128.8846\\-133\\-57.61719\\-129.251\\-133\\-55.66406\\-129.5173\\-133\\-51.75781\\-130.5289\\-133\\-47.85156\\-131.3348\\-133\\-45.89844\\-132.0997\\-133\\-43.94531\\-132.6953\\-133\\-41.99219\\-133.1238\\-133\\-38.08594\\-134.8568\\-133\\-36.19026\\-135.8047\\-133\\-34.17969\\-136.9732\\-133\\-32.22656\\-138.3665\\-133\\-30.27344\\-139.4879\\-133\\-28.32031\\-140.8427\\-133\\-26.36719\\-142.5812\\-133\\-23.4627\\-145.5703\\-133\\-21.6389\\-147.5234\\-133\\-20.12416\\-149.4766\\-133\\-19.16422\\-151.4297\\-133\\-17.90926\\-153.3828\\-133\\-17.23214\\-155.3359\\-133\\-16.11032\\-157.2891\\-133\\-15.47274\\-159.2422\\-133\\-14.58135\\-161.1953\\-133\\-13.95335\\-163.1484\\-133\\-13.30645\\-167.0547\\-133\\-12.22997\\-170.9609\\-133\\-11.92197\\-172.9141\\-133\\-11.36467\\-178.7734\\-133\\-10.63368\\-184.6328\\-133\\-10.50647\\-186.5859\\-133\\-10.50647\\-188.5391\\-133\\-10.82611\\-192.4453\\-133\\-11.0919\\-194.3984\\-133\\-11.15437\\-196.3516\\-133\\-10.9489\\-200.2578\\-133\\-10.75013\\-202.2109\\-133\\-10.20397\\-206.1172\\-133\\-10.07269\\-208.0703\\-133\\-9.980562\\-211.9766\\-133\\-9.997914\\-215.8828\\-133\\-10.07934\\-219.7891\\-133\\-10.3752\\-223.6953\\-133\\-10.64745\\-225.6484\\-133\\-11.41661\\-229.5547\\-133\\-11.56374\\-231.5078\\-133\\-11.973\\-235.4141\\-133\\-12.28448\\-237.3672\\-133\\-12.88027\\-239.3203\\-133\\-13.29001\\-241.2734\\-133\\-13.94924\\-245.1797\\-133\\-14.46144\\-247.1328\\-133\\-15.26786\\-249.0859\\-133\\-15.80529\\-251.0391\\-133\\-17.43645\\-254.9453\\-133\\-17.95504\\-256.8984\\-133\\-18.98358\\-258.8516\\-133\\-19.5372\\-260.8047\\-133\\-20.21767\\-262.7578\\-133\\-21.28364\\-264.7109\\-133\\-22.04499\\-266.6641\\-133\\-23.28643\\-268.6172\\-133\\-24.26327\\-270.5703\\-133\\-25.35088\\-272.5234\\-133\\-26.27985\\-274.4766\\-133\\-27.44498\\-276.4297\\-133\\-28.80233\\-278.3828\\-133\\-29.99161\\-280.3359\\-133\\-32.77209\\-284.2422\\-133\\-33.92651\\-286.1953\\-133\\-35.5013\\-288.1484\\-133\\-40.03906\\-293.0511\\-133\\-41.99219\\-294.8132\\-133\\-43.94531\\-296.2473\\-133\\-45.89844\\-297.4224\\-133\\-47.85156\\-298.8309\\-133\\-49.80469\\-299.993\\-133\\-51.75781\\-300.8438\\-133\\-53.71094\\-301.4995\\-133\\-55.66406\\-302.3186\\-133\\-57.61719\\-302.7127\\-133\\-61.52344\\-303.2424\\-133\\-65.42969\\-303.9851\\-133\\-67.38281\\-304.2173\\-133\\-71.28906\\-304.3583\\-133\\-75.19531\\-304.3116\\-133\\-79.10156\\-304.0664\\-133"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002368"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "170"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "61.52344\\-302.1874\\-133\\59.57031\\-301.6339\\-133\\55.66406\\-300.7699\\-133\\53.71094\\-300.2253\\-133\\51.75781\\-299.2181\\-133\\49.80469\\-298.4828\\-133\\47.85156\\-297.2293\\-133\\45.89844\\-296.3229\\-133\\43.94531\\-295.0658\\-133\\40.03906\\-292.3734\\-133\\36.13281\\-288.9492\\-133\\33.32682\\-286.1953\\-133\\29.9099\\-282.2891\\-133\\28.32031\\-280.308\\-133\\25.6633\\-276.4297\\-133\\24.41406\\-274.2432\\-133\\22.46094\\-271.0465\\-133\\22.07937\\-270.5703\\-133\\21.21964\\-268.6172\\-133\\20.05558\\-266.6641\\-133\\18.80976\\-262.7578\\-133\\17.80942\\-260.8047\\-133\\17.30363\\-258.8516\\-133\\16.38986\\-256.8984\\-133\\15.74707\\-254.9453\\-133\\15.21053\\-252.9922\\-133\\14.45875\\-251.0391\\-133\\13.96833\\-249.0859\\-133\\13.3728\\-245.1797\\-133\\12.99741\\-243.2266\\-133\\12.42963\\-241.2734\\-133\\12.0503\\-239.3203\\-133\\11.40248\\-233.4609\\-133\\11.08956\\-231.5078\\-133\\10.60675\\-229.5547\\-133\\10.25391\\-227.6016\\-133\\10.07934\\-225.6484\\-133\\9.848933\\-221.7422\\-133\\9.579373\\-215.8828\\-133\\9.294783\\-211.9766\\-133\\8.640455\\-206.1172\\-133\\8.507236\\-204.1641\\-133\\8.47425\\-202.2109\\-133\\8.812689\\-200.2578\\-133\\9.038549\\-198.3047\\-133\\9.165646\\-196.3516\\-133\\9.689405\\-192.4453\\-133\\10.00381\\-188.5391\\-133\\10.38537\\-182.6797\\-133\\10.6756\\-180.7266\\-133\\11.39509\\-176.8203\\-133\\12.01468\\-170.9609\\-133\\12.48238\\-169.0078\\-133\\13.11671\\-167.0547\\-133\\13.87747\\-163.1484\\-133\\14.48449\\-161.1953\\-133\\15.45235\\-159.2422\\-133\\16.21474\\-157.2891\\-133\\17.45279\\-155.3359\\-133\\18.48548\\-153.3828\\-133\\19.66809\\-151.4297\\-133\\22.46094\\-148.0045\\-133\\24.41406\\-145.9505\\-133\\28.32031\\-142.0385\\-133\\30.27344\\-140.4206\\-133\\32.22656\\-138.9335\\-133\\34.17969\\-137.677\\-133\\36.13281\\-136.5648\\-133\\38.08594\\-135.267\\-133\\40.03906\\-134.454\\-133\\41.99219\\-133.39\\-133\\45.89844\\-132.3198\\-133\\47.85156\\-131.3757\\-133\\51.75781\\-130.5074\\-133\\53.71094\\-129.8645\\-133\\55.66406\\-129.3834\\-133\\59.57031\\-129.0072\\-133\\63.47656\\-128.7825\\-133\\69.33594\\-128.6943\\-133\\75.19531\\-128.9393\\-133\\81.05469\\-129.3834\\-133\\83.00781\\-129.6305\\-133\\86.91406\\-130.4454\\-133\\94.72656\\-131.419\\-133\\98.63281\\-132.3867\\-133\\100.5859\\-132.6716\\-133\\104.4922\\-133.116\\-133\\106.4453\\-133.4568\\-133\\110.3516\\-134.5456\\-133\\112.3047\\-134.9523\\-133\\116.2109\\-136.28\\-133\\120.1172\\-137.4217\\-133\\122.0703\\-138.3334\\-133\\124.0234\\-138.8678\\-133\\125.9766\\-139.5928\\-133\\127.9297\\-140.5258\\-133\\129.8828\\-141.2475\\-133\\131.8359\\-142.4101\\-133\\133.7891\\-143.4428\\-133\\137.3355\\-145.5703\\-133\\139.6484\\-146.857\\-133\\141.6016\\-148.3685\\-133\\145.5078\\-151.5843\\-133\\147.4609\\-152.9997\\-133\\149.4141\\-154.84\\-133\\153.6381\\-159.2422\\-133\\155.2734\\-161.3581\\-133\\156.4077\\-163.1484\\-133\\157.8837\\-165.1016\\-133\\159.1797\\-167.1392\\-133\\161.1328\\-170.4824\\-133\\161.4771\\-170.9609\\-133\\162.9836\\-174.8672\\-133\\163.8661\\-176.8203\\-133\\164.3861\\-178.7734\\-133\\165.2135\\-180.7266\\-133\\165.774\\-182.6797\\-133\\166.4709\\-186.5859\\-133\\167.2549\\-190.4922\\-133\\167.4956\\-192.4453\\-133\\167.8136\\-198.3047\\-133\\167.8711\\-202.2109\\-133\\167.8136\\-208.0703\\-133\\167.6374\\-211.9766\\-133\\167.2911\\-215.8828\\-133\\166.9922\\-217.7935\\-133\\166.253\\-221.7422\\-133\\165.6561\\-225.6484\\-133\\165.1338\\-227.6016\\-133\\164.4768\\-229.5547\\-133\\163.7121\\-233.4609\\-133\\162.323\\-237.3672\\-133\\161.9057\\-239.3203\\-133\\161.1328\\-241.2584\\-133\\160.2268\\-243.2266\\-133\\159.4786\\-245.1797\\-133\\158.3344\\-247.1328\\-133\\157.4971\\-249.0859\\-133\\156.3782\\-251.0391\\-133\\155.5451\\-252.9922\\-133\\151.8738\\-258.8516\\-133\\150.4266\\-260.8047\\-133\\147.7817\\-264.7109\\-133\\146.2054\\-266.6641\\-133\\141.0352\\-272.5234\\-133\\139.6484\\-274.0199\\-133\\133.7891\\-279.8371\\-133\\128.666\\-284.2422\\-133\\125.9766\\-286.3629\\-133\\122.0703\\-289.0199\\-133\\120.1172\\-290.2785\\-133\\118.1641\\-291.3366\\-133\\116.2109\\-292.7697\\-133\\112.3047\\-294.8457\\-133\\110.3516\\-295.5139\\-133\\108.3984\\-296.566\\-133\\106.4453\\-297.1295\\-133\\104.4922\\-298.1135\\-133\\100.5859\\-299.4504\\-133\\98.63281\\-300.2667\\-133\\96.67969\\-300.7181\\-133\\92.77344\\-301.4202\\-133\\88.86719\\-302.325\\-133\\86.91406\\-302.572\\-133\\84.96094\\-302.7188\\-133\\79.10156\\-302.9824\\-133\\75.19531\\-303.0565\\-133\\71.28906\\-302.9715\\-133\\65.42969\\-302.689\\-133\\63.47656\\-302.5021\\-133"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002367"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "186"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-304.0325\\-131\\-83.00781\\-303.4081\\-131\\-86.91406\\-302.8929\\-131\\-88.86719\\-302.7127\\-131\\-90.82031\\-302.4227\\-131\\-92.77344\\-301.9211\\-131\\-94.72656\\-301.2964\\-131\\-98.63281\\-300.3916\\-131\\-100.5859\\-299.4906\\-131\\-102.5391\\-298.7639\\-131\\-104.4922\\-297.7587\\-131\\-108.3872\\-295.9609\\-131\\-112.1571\\-294.0078\\-131\\-114.2578\\-292.7787\\-131\\-116.2109\\-291.2653\\-131\\-118.1641\\-289.9362\\-131\\-120.1172\\-288.8441\\-131\\-122.0703\\-287.3177\\-131\\-125.9766\\-284.0329\\-131\\-127.9297\\-282.597\\-131\\-129.8828\\-280.8426\\-131\\-132.2943\\-278.3828\\-131\\-134.3356\\-276.4297\\-131\\-136.1979\\-274.4766\\-131\\-139.3066\\-270.5703\\-131\\-141.6016\\-267.8533\\-131\\-142.529\\-266.6641\\-131\\-145.0823\\-262.7578\\-131\\-145.5078\\-262.2572\\-131\\-147.9091\\-258.8516\\-131\\-148.8647\\-256.8984\\-131\\-150.0796\\-254.9453\\-131\\-150.9221\\-252.9922\\-131\\-152.1692\\-251.0391\\-131\\-154.2066\\-247.1328\\-131\\-155.0038\\-245.1797\\-131\\-155.9933\\-243.2266\\-131\\-156.529\\-241.2734\\-131\\-157.5776\\-239.3203\\-131\\-158.2387\\-237.3672\\-131\\-159.9842\\-233.4609\\-131\\-160.5756\\-231.5078\\-131\\-161.4445\\-229.5547\\-131\\-161.9792\\-227.6016\\-131\\-162.3324\\-225.6484\\-131\\-162.8183\\-223.6953\\-131\\-163.5866\\-221.7422\\-131\\-164.3638\\-217.8359\\-131\\-165.5388\\-213.9297\\-131\\-166.8674\\-206.1172\\-131\\-167.1408\\-204.1641\\-131\\-167.3112\\-202.2109\\-131\\-167.3456\\-198.3047\\-131\\-167.2175\\-196.3516\\-131\\-166.9241\\-194.3984\\-131\\-165.9264\\-188.5391\\-131\\-165.5187\\-186.5859\\-131\\-164.7571\\-184.6328\\-131\\-164.1575\\-182.6797\\-131\\-163.66\\-180.7266\\-131\\-162.6496\\-178.7734\\-131\\-161.969\\-176.8203\\-131\\-159.8609\\-172.9141\\-131\\-156.7625\\-169.0078\\-131\\-155.5426\\-167.0547\\-131\\-153.827\\-165.1016\\-131\\-149.4141\\-160.7588\\-131\\-147.4609\\-159.1683\\-131\\-145.5078\\-157.8615\\-131\\-143.5547\\-156.3008\\-131\\-141.6016\\-154.6286\\-131\\-139.6484\\-153.3425\\-131\\-137.6953\\-152.2199\\-131\\-135.7422\\-150.857\\-131\\-133.7891\\-149.7953\\-131\\-129.8828\\-147.3056\\-131\\-127.9297\\-146.4377\\-131\\-125.9766\\-145.3558\\-131\\-124.0234\\-144.4972\\-131\\-122.0703\\-143.3335\\-131\\-120.1172\\-142.431\\-131\\-118.1641\\-141.2936\\-131\\-116.2109\\-140.573\\-131\\-112.3047\\-138.8815\\-131\\-110.3516\\-138.3564\\-131\\-108.3984\\-137.3659\\-131\\-104.4922\\-136.1417\\-131\\-102.5391\\-135.2475\\-131\\-98.63281\\-134.1212\\-131\\-96.67969\\-133.34\\-131\\-92.77344\\-132.6473\\-131\\-90.82031\\-132.2146\\-131\\-88.86719\\-131.5267\\-131\\-86.91406\\-131.1262\\-131\\-83.00781\\-130.6053\\-131\\-81.05469\\-130.2941\\-131\\-79.10156\\-129.836\\-131\\-77.14844\\-129.484\\-131\\-75.19531\\-129.2385\\-131\\-71.28906\\-128.8596\\-131\\-67.38281\\-128.657\\-131\\-63.47656\\-128.6136\\-131\\-61.52344\\-128.6847\\-131\\-57.61719\\-129.0417\\-131\\-55.66406\\-129.2768\\-131\\-53.71094\\-129.6484\\-131\\-51.75781\\-130.2686\\-131\\-47.85156\\-131.0863\\-131\\-45.89844\\-131.6242\\-131\\-43.94531\\-132.4882\\-131\\-41.99219\\-132.9293\\-131\\-40.03906\\-133.5819\\-131\\-38.08594\\-134.6171\\-131\\-36.13281\\-135.4361\\-131\\-32.5728\\-137.7578\\-131\\-30.27344\\-139.1676\\-131\\-28.32031\\-140.681\\-131\\-26.36719\\-142.4116\\-131\\-23.33108\\-145.5703\\-131\\-21.52123\\-147.5234\\-131\\-20.03291\\-149.4766\\-131\\-19.12875\\-151.4297\\-131\\-17.8722\\-153.3828\\-131\\-17.18176\\-155.3359\\-131\\-16.03947\\-157.2891\\-131\\-15.42222\\-159.2422\\-131\\-14.52455\\-161.1953\\-131\\-13.92613\\-163.1484\\-131\\-13.28506\\-167.0547\\-131\\-12.27101\\-170.9609\\-131\\-11.94719\\-172.9141\\-131\\-11.39884\\-178.7734\\-131\\-10.71948\\-184.6328\\-131\\-10.5678\\-186.5859\\-131\\-10.70463\\-190.4922\\-131\\-11.14695\\-194.3984\\-131\\-11.2335\\-196.3516\\-131\\-11.1263\\-200.2578\\-131\\-10.89523\\-202.2109\\-131\\-10.54275\\-204.1641\\-131\\-10.07269\\-208.0703\\-131\\-9.986291\\-211.9766\\-131\\-10.00977\\-215.8828\\-131\\-10.10665\\-219.7891\\-131\\-10.43822\\-223.6953\\-131\\-10.71948\\-225.6484\\-131\\-11.11328\\-227.6016\\-131\\-12.00701\\-235.4141\\-131\\-12.35352\\-237.3672\\-131\\-12.95906\\-239.3203\\-131\\-13.33599\\-241.2734\\-131\\-13.99158\\-245.1797\\-131\\-14.52637\\-247.1328\\-131\\-15.31948\\-249.0859\\-131\\-15.84371\\-251.0391\\-131\\-17.45669\\-254.9453\\-131\\-17.99417\\-256.8984\\-131\\-19.0268\\-258.8516\\-131\\-19.55492\\-260.8047\\-131\\-20.24407\\-262.7578\\-131\\-21.31172\\-264.7109\\-131\\-22.08391\\-266.6641\\-131\\-23.31543\\-268.6172\\-131\\-25.37359\\-272.5234\\-131\\-26.31069\\-274.4766\\-131\\-27.4688\\-276.4297\\-131\\-28.81485\\-278.3828\\-131\\-30.0029\\-280.3359\\-131\\-32.79511\\-284.2422\\-131\\-33.97993\\-286.1953\\-131\\-35.57195\\-288.1484\\-131\\-40.03906\\-292.9914\\-131\\-41.99219\\-294.7595\\-131\\-43.94531\\-296.1517\\-131\\-45.89844\\-297.3346\\-131\\-47.85156\\-298.7597\\-131\\-49.80469\\-299.875\\-131\\-51.75781\\-300.7964\\-131\\-53.71094\\-301.4174\\-131\\-55.66406\\-302.2505\\-131\\-57.61719\\-302.6826\\-131\\-61.52344\\-303.1757\\-131\\-65.42969\\-303.9221\\-131\\-67.38281\\-304.1798\\-131\\-71.28906\\-304.3275\\-131\\-75.19531\\-304.2787\\-131"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002367"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "173"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "61.52344\\-302.1003\\-131\\59.57031\\-301.5403\\-131\\55.66406\\-300.7196\\-131\\53.71094\\-300.1317\\-131\\51.75781\\-299.132\\-131\\49.80469\\-298.3811\\-131\\47.85156\\-297.1455\\-131\\45.89844\\-296.2266\\-131\\43.94531\\-295.0153\\-131\\40.03906\\-292.2865\\-131\\37.57403\\-290.1016\\-131\\36.13281\\-288.9022\\-131\\33.36042\\-286.1953\\-131\\29.94792\\-282.2891\\-131\\28.32031\\-280.253\\-131\\25.67598\\-276.4297\\-131\\24.41406\\-274.2432\\-131\\22.46094\\-271.0303\\-131\\22.08984\\-270.5703\\-131\\21.21538\\-268.6172\\-131\\20.06869\\-266.6641\\-131\\18.80787\\-262.7578\\-131\\17.8197\\-260.8047\\-131\\17.30745\\-258.8516\\-131\\16.41456\\-256.8984\\-131\\15.75684\\-254.9453\\-131\\15.24554\\-252.9922\\-131\\14.48449\\-251.0391\\-131\\13.99158\\-249.0859\\-131\\13.42163\\-245.1797\\-131\\13.08187\\-243.2266\\-131\\12.55148\\-241.2734\\-131\\12.12565\\-239.3203\\-131\\11.84353\\-237.3672\\-131\\11.49053\\-233.4609\\-131\\11.21511\\-231.5078\\-131\\10.41667\\-227.6016\\-131\\10.17253\\-225.6484\\-131\\10.04044\\-223.6953\\-131\\9.521484\\-213.9297\\-131\\9.370484\\-211.9766\\-131\\8.653626\\-206.1172\\-131\\8.518528\\-204.1641\\-131\\8.496094\\-202.2109\\-131\\8.857727\\-200.2578\\-131\\9.193372\\-196.3516\\-131\\9.859076\\-190.4922\\-131\\10.3752\\-182.6797\\-131\\10.62012\\-180.7266\\-131\\11.36877\\-176.8203\\-131\\11.98033\\-170.9609\\-131\\12.44213\\-169.0078\\-131\\13.07091\\-167.0547\\-131\\13.83653\\-163.1484\\-131\\14.44469\\-161.1953\\-131\\15.42426\\-159.2422\\-131\\16.20464\\-157.2891\\-131\\17.45737\\-155.3359\\-131\\18.48602\\-153.3828\\-131\\19.66105\\-151.4297\\-131\\22.46094\\-147.9273\\-131\\24.41406\\-145.9084\\-131\\28.32031\\-141.9846\\-131\\30.27344\\-140.3685\\-131\\32.22656\\-138.8748\\-131\\34.17969\\-137.5461\\-131\\36.13281\\-136.4768\\-131\\38.08594\\-135.1921\\-131\\40.03906\\-134.3365\\-131\\41.99219\\-133.2889\\-131\\43.94531\\-132.7619\\-131\\45.89844\\-132.1261\\-131\\47.85156\\-131.2421\\-131\\51.75781\\-130.3091\\-131\\53.71094\\-129.5988\\-131\\55.66406\\-129.2392\\-131\\59.57031\\-128.863\\-131\\63.47656\\-128.597\\-131\\69.33594\\-128.4564\\-131\\75.19531\\-128.7299\\-131\\83.00781\\-129.3282\\-131\\84.96094\\-129.5885\\-131\\88.86719\\-130.3841\\-131\\92.77344\\-130.9421\\-131\\96.67969\\-131.4131\\-131\\100.5859\\-132.3435\\-131\\106.4453\\-133.0961\\-131\\108.3984\\-133.4679\\-131\\112.3047\\-134.5885\\-131\\116.2109\\-135.5484\\-131\\118.1641\\-136.3528\\-131\\122.0703\\-137.633\\-131\\124.0234\\-138.4824\\-131\\125.9766\\-139.0836\\-131\\127.9297\\-140.0414\\-131\\129.8828\\-140.8064\\-131\\133.7891\\-142.8848\\-131\\135.7422\\-144.1801\\-131\\137.6953\\-145.2303\\-131\\141.0423\\-147.5234\\-131\\143.5547\\-149.4681\\-131\\147.4609\\-152.6843\\-131\\149.4141\\-154.4877\\-131\\150.1736\\-155.3359\\-131\\153.969\\-159.2422\\-131\\155.558\\-161.1953\\-131\\156.6752\\-163.1484\\-131\\157.2266\\-163.8472\\-131\\159.4442\\-167.0547\\-131\\160.464\\-169.0078\\-131\\161.6478\\-170.9609\\-131\\162.3059\\-172.9141\\-131\\163.2276\\-174.8672\\-131\\163.9569\\-176.8203\\-131\\164.5081\\-178.7734\\-131\\165.3539\\-180.7266\\-131\\165.8335\\-182.6797\\-131\\167.2891\\-190.4922\\-131\\167.5199\\-192.4453\\-131\\167.8251\\-198.3047\\-131\\167.8711\\-202.2109\\-131\\167.8203\\-208.0703\\-131\\167.6374\\-211.9766\\-131\\167.3133\\-215.8828\\-131\\166.9998\\-217.8359\\-131\\166.2666\\-221.7422\\-131\\165.6706\\-225.6484\\-131\\165.1877\\-227.6016\\-131\\164.5146\\-229.5547\\-131\\163.7198\\-233.4609\\-131\\162.9697\\-235.4141\\-131\\162.323\\-237.3672\\-131\\161.8984\\-239.3203\\-131\\161.1328\\-241.2284\\-131\\160.221\\-243.2266\\-131\\159.4673\\-245.1797\\-131\\158.3226\\-247.1328\\-131\\157.474\\-249.0859\\-131\\156.366\\-251.0391\\-131\\155.5045\\-252.9922\\-131\\154.315\\-254.9453\\-131\\151.8242\\-258.8516\\-131\\150.3847\\-260.8047\\-131\\147.7431\\-264.7109\\-131\\146.1568\\-266.6641\\-131\\142.7612\\-270.5703\\-131\\139.6484\\-273.9883\\-131\\133.7891\\-279.8128\\-131\\131.8359\\-281.5251\\-131\\128.625\\-284.2422\\-131\\125.9766\\-286.3221\\-131\\122.0703\\-289.0076\\-131\\120.1172\\-290.2523\\-131\\118.1641\\-291.3336\\-131\\116.2109\\-292.7623\\-131\\112.3047\\-294.8526\\-131\\110.3516\\-295.5246\\-131\\108.3984\\-296.5577\\-131\\106.4453\\-297.1405\\-131\\104.4922\\-298.0884\\-131\\102.5391\\-298.8245\\-131\\100.5859\\-299.4478\\-131\\98.63281\\-300.2767\\-131\\96.67969\\-300.7181\\-131\\92.77344\\-301.4095\\-131\\88.86719\\-302.302\\-131\\86.91406\\-302.5527\\-131\\83.00781\\-302.8023\\-131\\79.10156\\-302.9605\\-131\\75.19531\\-303.0244\\-131\\71.28906\\-302.9372\\-131\\65.42969\\-302.6582\\-131\\63.47656\\-302.461\\-131"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002366"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "186"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-303.9729\\-129\\-83.00781\\-303.366\\-129\\-86.91406\\-302.8716\\-129\\-88.86719\\-302.6826\\-129\\-90.82031\\-302.3884\\-129\\-94.72656\\-301.265\\-129\\-98.63281\\-300.3616\\-129\\-100.5859\\-299.438\\-129\\-102.5391\\-298.7261\\-129\\-104.4922\\-297.6915\\-129\\-106.4453\\-296.8414\\-129\\-110.3516\\-294.9539\\-129\\-114.2578\\-292.7675\\-129\\-116.2109\\-291.2467\\-129\\-118.1641\\-289.9233\\-129\\-120.1172\\-288.8314\\-129\\-122.0703\\-287.3051\\-129\\-125.9766\\-284.0057\\-129\\-127.9297\\-282.597\\-129\\-129.8828\\-280.8426\\-129\\-132.3044\\-278.3828\\-129\\-134.3356\\-276.4297\\-129\\-136.1867\\-274.4766\\-129\\-139.3182\\-270.5703\\-129\\-140.9879\\-268.6172\\-129\\-142.5225\\-266.6641\\-129\\-143.8535\\-264.7109\\-129\\-145.0823\\-262.7578\\-129\\-145.5078\\-262.2614\\-129\\-147.9193\\-258.8516\\-129\\-148.8845\\-256.8984\\-129\\-150.0958\\-254.9453\\-129\\-150.9458\\-252.9922\\-129\\-152.1864\\-251.0391\\-129\\-154.2344\\-247.1328\\-129\\-155.0458\\-245.1797\\-129\\-156.0184\\-243.2266\\-129\\-156.5776\\-241.2734\\-129\\-157.6184\\-239.3203\\-129\\-158.281\\-237.3672\\-129\\-159.2319\\-235.4141\\-129\\-160.0146\\-233.4609\\-129\\-160.6353\\-231.5078\\-129\\-161.5032\\-229.5547\\-129\\-162.0265\\-227.6016\\-129\\-162.3718\\-225.6484\\-129\\-162.9132\\-223.6953\\-129\\-163.66\\-221.7422\\-129\\-164.4403\\-217.8359\\-129\\-165.6196\\-213.9297\\-129\\-166.2735\\-210.0234\\-129\\-167.0149\\-206.1172\\-129\\-167.2759\\-204.1641\\-129\\-167.4241\\-202.2109\\-129\\-167.4557\\-198.3047\\-129\\-167.322\\-196.3516\\-129\\-167.073\\-194.3984\\-129\\-165.6042\\-186.5859\\-129\\-164.2244\\-182.6797\\-129\\-163.7198\\-180.7266\\-129\\-162.7341\\-178.7734\\-129\\-162.031\\-176.8203\\-129\\-161.1328\\-175.0015\\-129\\-159.9212\\-172.9141\\-129\\-156.8316\\-169.0078\\-129\\-155.6115\\-167.0547\\-129\\-153.8834\\-165.1016\\-129\\-149.4141\\-160.7327\\-129\\-147.4609\\-159.1519\\-129\\-145.5078\\-157.8481\\-129\\-143.5547\\-156.2948\\-129\\-141.6016\\-154.6035\\-129\\-139.6484\\-153.2647\\-129\\-137.6953\\-152.1734\\-129\\-135.7422\\-150.7925\\-129\\-133.7891\\-149.6588\\-129\\-129.8828\\-147.1741\\-129\\-127.9297\\-146.3278\\-129\\-125.9766\\-145.146\\-129\\-124.0234\\-144.3191\\-129\\-122.0703\\-143.0652\\-129\\-120.1172\\-142.1803\\-129\\-118.1641\\-141.049\\-129\\-116.2109\\-140.3378\\-129\\-114.2578\\-139.2885\\-129\\-112.3047\\-138.657\\-129\\-110.3516\\-137.8917\\-129\\-108.3984\\-136.9933\\-129\\-106.4453\\-136.3707\\-129\\-104.4922\\-135.493\\-129\\-100.5859\\-134.3028\\-129\\-98.63281\\-133.5116\\-129\\-96.67969\\-133.0224\\-129\\-94.72656\\-132.671\\-129\\-92.77344\\-132.2216\\-129\\-90.82031\\-131.5751\\-129\\-88.86719\\-131.1377\\-129\\-84.96094\\-130.5208\\-129\\-81.05469\\-129.6752\\-129\\-77.14844\\-129.1453\\-129\\-71.28906\\-128.6055\\-129\\-67.38281\\-128.3947\\-129\\-63.47656\\-128.392\\-129\\-59.57031\\-128.6169\\-129\\-55.66406\\-129.0312\\-129\\-53.71094\\-129.3155\\-129\\-51.75781\\-129.7556\\-129\\-49.80469\\-130.4031\\-129\\-45.89844\\-131.2603\\-129\\-43.94531\\-132.1163\\-129\\-40.03906\\-133.242\\-129\\-38.08594\\-134.2711\\-129\\-36.13281\\-135.1046\\-129\\-34.17969\\-136.4244\\-129\\-32.22656\\-137.6024\\-129\\-30.27344\\-138.9183\\-129\\-26.89179\\-141.6641\\-129\\-24.41406\\-144.2197\\-129\\-21.41639\\-147.5234\\-129\\-19.93222\\-149.4766\\-129\\-19.06972\\-151.4297\\-129\\-17.81404\\-153.3828\\-129\\-17.08984\\-155.3359\\-129\\-15.95595\\-157.2891\\-129\\-15.34913\\-159.2422\\-129\\-14.45737\\-161.1953\\-129\\-13.88889\\-163.1484\\-129\\-13.25061\\-167.0547\\-129\\-12.24716\\-170.9609\\-129\\-11.93576\\-172.9141\\-129\\-11.39884\\-178.7734\\-129\\-10.66142\\-184.6328\\-129\\-10.54275\\-186.5859\\-129\\-10.70463\\-190.4922\\-129\\-11.17974\\-194.3984\\-129\\-11.30106\\-196.3516\\-129\\-11.28738\\-200.2578\\-129\\-10.59358\\-204.1641\\-129\\-10.07269\\-208.0703\\-129\\-10.00381\\-210.0234\\-129\\-9.992074\\-213.9297\\-129\\-10.05314\\-217.8359\\-129\\-10.15732\\-219.7891\\-129\\-10.51839\\-223.6953\\-129\\-11.19626\\-227.6016\\-129\\-11.38393\\-229.5547\\-129\\-12.05842\\-235.4141\\-129\\-12.46769\\-237.3672\\-129\\-13.05474\\-239.3203\\-129\\-14.02274\\-245.1797\\-129\\-14.58185\\-247.1328\\-129\\-15.34751\\-249.0859\\-129\\-15.86019\\-251.0391\\-129\\-16.739\\-252.9922\\-129\\-17.46235\\-254.9453\\-129\\-18.01934\\-256.8984\\-129\\-19.06224\\-258.8516\\-129\\-19.57293\\-260.8047\\-129\\-20.2691\\-262.7578\\-129\\-21.33331\\-264.7109\\-129\\-22.10412\\-266.6641\\-129\\-23.33774\\-268.6172\\-129\\-25.3792\\-272.5234\\-129\\-26.32683\\-274.4766\\-129\\-27.46212\\-276.4297\\-129\\-28.81804\\-278.3828\\-129\\-30.0029\\-280.3359\\-129\\-32.82187\\-284.2422\\-129\\-34.03585\\-286.1953\\-129\\-35.64116\\-288.1484\\-129\\-40.03906\\-292.9382\\-129\\-41.99219\\-294.7127\\-129\\-43.94531\\-296.0476\\-129\\-45.89844\\-297.2485\\-129\\-47.85156\\-298.6942\\-129\\-49.96142\\-299.8672\\-129\\-51.75781\\-300.7437\\-129\\-53.71094\\-301.3386\\-129\\-55.66406\\-302.1671\\-129\\-57.61719\\-302.6399\\-129\\-61.52344\\-303.1205\\-129\\-65.42969\\-303.8682\\-129\\-67.38281\\-304.1302\\-129\\-69.33594\\-304.2531\\-129\\-73.24219\\-304.2954\\-129\\-75.19531\\-304.2443\\-129"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002366"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "169"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "61.52344\\-302.0349\\-129\\59.57031\\-301.4646\\-129\\55.66406\\-300.6698\\-129\\53.71094\\-300.0169\\-129\\51.75781\\-299.0543\\-129\\49.80469\\-298.2674\\-129\\47.85156\\-297.0794\\-129\\45.89844\\-296.1337\\-129\\43.94531\\-294.9598\\-129\\40.03906\\-292.1786\\-129\\37.65462\\-290.1016\\-129\\36.13281\\-288.8677\\-129\\33.39448\\-286.1953\\-129\\29.98708\\-282.2891\\-129\\28.32031\\-280.2162\\-129\\25.68867\\-276.4297\\-129\\24.41406\\-274.2281\\-129\\22.46094\\-271.0142\\-129\\22.10046\\-270.5703\\-129\\21.22708\\-268.6172\\-129\\20.07892\\-266.6641\\-129\\18.82037\\-262.7578\\-129\\17.83265\\-260.8047\\-129\\17.32086\\-258.8516\\-129\\16.41456\\-256.8984\\-129\\15.7666\\-254.9453\\-129\\15.27936\\-252.9922\\-129\\14.53912\\-251.0391\\-129\\14.03073\\-249.0859\\-129\\13.49706\\-245.1797\\-129\\13.1537\\-243.2266\\-129\\12.19733\\-239.3203\\-129\\11.90396\\-237.3672\\-129\\11.55772\\-233.4609\\-129\\11.07449\\-229.5547\\-129\\10.62012\\-227.6016\\-129\\10.3075\\-225.6484\\-129\\10.12074\\-223.6953\\-129\\9.880786\\-219.7891\\-129\\9.595352\\-213.9297\\-129\\9.231852\\-210.0234\\-129\\8.694322\\-206.1172\\-129\\8.507236\\-202.2109\\-129\\9.841108\\-190.4922\\-129\\10.02798\\-188.5391\\-129\\10.21205\\-184.6328\\-129\\10.59358\\-180.7266\\-129\\11.34091\\-176.8203\\-129\\11.95427\\-170.9609\\-129\\12.40517\\-169.0078\\-129\\13.04605\\-167.0547\\-129\\13.82036\\-163.1484\\-129\\14.39576\\-161.1953\\-129\\15.39586\\-159.2422\\-129\\16.19204\\-157.2891\\-129\\17.45144\\-155.3359\\-129\\18.48548\\-153.3828\\-129\\19.65565\\-151.4297\\-129\\21.12815\\-149.4766\\-129\\22.46094\\-147.8589\\-129\\28.56237\\-141.6641\\-129\\31.01223\\-139.7109\\-129\\34.17969\\-137.4113\\-129\\36.13281\\-136.3479\\-129\\38.08594\\-135.0824\\-129\\41.99219\\-133.1692\\-129\\43.94531\\-132.664\\-129\\47.85156\\-131.0904\\-129\\49.80469\\-130.6444\\-129\\51.7759\\-129.9453\\-129\\53.71094\\-129.3583\\-129\\55.66406\\-129.0659\\-129\\59.57031\\-128.6188\\-129\\63.47656\\-128.2911\\-129\\67.38281\\-128.1296\\-129\\69.33594\\-128.1023\\-129\\75.19531\\-128.4463\\-129\\84.96094\\-129.1979\\-129\\88.86719\\-129.6733\\-129\\92.77344\\-130.4857\\-129\\98.63281\\-131.1798\\-129\\104.4922\\-132.404\\-129\\106.4453\\-132.6887\\-129\\110.3516\\-133.3633\\-129\\114.2578\\-134.5635\\-129\\116.2109\\-134.9685\\-129\\118.1641\\-135.5226\\-129\\120.1172\\-136.3581\\-129\\122.0703\\-136.944\\-129\\125.9766\\-138.6266\\-129\\127.9297\\-139.2934\\-129\\129.8828\\-140.3416\\-129\\131.8359\\-141.169\\-129\\133.7891\\-142.3714\\-129\\135.7422\\-143.4734\\-129\\139.6484\\-146.1508\\-129\\141.6016\\-147.295\\-129\\143.5547\\-148.8459\\-129\\146.537\\-151.4297\\-129\\149.4141\\-154.021\\-129\\152.5269\\-157.2891\\-129\\154.3172\\-159.2422\\-129\\155.877\\-161.1953\\-129\\158.3452\\-165.1016\\-129\\159.7524\\-167.0547\\-129\\160.7068\\-169.0078\\-129\\161.8367\\-170.9609\\-129\\162.4499\\-172.9141\\-129\\163.4404\\-174.8672\\-129\\164.6524\\-178.7734\\-129\\165.4738\\-180.7266\\-129\\165.911\\-182.6797\\-129\\167.335\\-190.4922\\-129\\167.6798\\-194.3984\\-129\\167.8317\\-198.3047\\-129\\167.8826\\-202.2109\\-129\\167.8203\\-208.0703\\-129\\167.649\\-211.9766\\-129\\167.3242\\-215.8828\\-129\\167.0298\\-217.8359\\-129\\166.2884\\-221.7422\\-129\\165.6883\\-225.6484\\-129\\165.2261\\-227.6016\\-129\\164.5356\\-229.5547\\-129\\163.7275\\-233.4609\\-129\\162.3352\\-237.3672\\-129\\161.8984\\-239.3203\\-129\\161.1328\\-241.2284\\-129\\160.221\\-243.2266\\-129\\159.4424\\-245.1797\\-129\\158.3122\\-247.1328\\-129\\157.4383\\-249.0859\\-129\\156.347\\-251.0391\\-129\\155.4627\\-252.9922\\-129\\154.2729\\-254.9453\\-129\\152.9558\\-256.8984\\-129\\151.7513\\-258.8516\\-129\\150.3433\\-260.8047\\-129\\147.6788\\-264.7109\\-129\\145.5078\\-267.3606\\-129\\142.7263\\-270.5703\\-129\\139.6484\\-273.9408\\-129\\133.7891\\-279.7691\\-129\\131.8359\\-281.4907\\-129\\128.5728\\-284.2422\\-129\\125.9766\\-286.308\\-129\\122.0703\\-289.0006\\-129\\120.1172\\-290.239\\-129\\118.1641\\-291.3223\\-129\\116.2109\\-292.7654\\-129\\112.3047\\-294.8526\\-129\\110.3516\\-295.5246\\-129\\108.3984\\-296.5577\\-129\\106.4453\\-297.1382\\-129\\104.4922\\-298.0757\\-129\\102.5391\\-298.8143\\-129\\100.5859\\-299.4478\\-129\\98.63281\\-300.2767\\-129\\96.67969\\-300.7067\\-129\\92.77344\\-301.4066\\-129\\88.86719\\-302.2818\\-129\\86.91406\\-302.5377\\-129\\83.00781\\-302.7969\\-129\\79.10156\\-302.9434\\-129\\75.19531\\-303.0065\\-129\\73.24219\\-302.9779\\-129\\67.38281\\-302.7527\\-129\\65.42969\\-302.6283\\-129\\63.47656\\-302.4012\\-129"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "178"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-303.8955\\-127\\-83.00781\\-303.3039\\-127\\-88.86719\\-302.6648\\-127\\-90.82031\\-302.3477\\-127\\-94.72656\\-301.2306\\-127\\-98.63281\\-300.3184\\-127\\-100.5859\\-299.388\\-127\\-102.5391\\-298.6878\\-127\\-104.4922\\-297.6381\\-127\\-106.4453\\-296.8201\\-127\\-110.3516\\-294.9359\\-127\\-114.2578\\-292.7522\\-127\\-116.2109\\-291.2419\\-127\\-118.1641\\-289.9093\\-127\\-120.1172\\-288.823\\-127\\-123.4111\\-286.1953\\-127\\-125.9766\\-284.0057\\-127\\-127.9297\\-282.582\\-127\\-129.8828\\-280.8279\\-127\\-136.1979\\-274.4766\\-127\\-139.33\\-270.5703\\-127\\-141.0143\\-268.6172\\-127\\-142.5159\\-266.6641\\-127\\-143.8535\\-264.7109\\-127\\-145.0684\\-262.7578\\-127\\-145.5078\\-262.2494\\-127\\-147.9326\\-258.8516\\-127\\-148.8882\\-256.8984\\-127\\-150.1116\\-254.9453\\-127\\-150.9671\\-252.9922\\-127\\-152.2035\\-251.0391\\-127\\-154.2571\\-247.1328\\-127\\-155.0871\\-245.1797\\-127\\-156.0385\\-243.2266\\-127\\-156.6193\\-241.2734\\-127\\-157.6599\\-239.3203\\-127\\-158.3239\\-237.3672\\-127\\-159.3413\\-235.4141\\-127\\-160.7079\\-231.5078\\-127\\-161.5617\\-229.5547\\-127\\-162.062\\-227.6016\\-127\\-162.4122\\-225.6484\\-127\\-163.0151\\-223.6953\\-127\\-163.7198\\-221.7422\\-127\\-164.5058\\-217.8359\\-127\\-165.2007\\-215.8828\\-127\\-165.6884\\-213.9297\\-127\\-166.3506\\-210.0234\\-127\\-167.1408\\-206.1172\\-127\\-167.379\\-204.1641\\-127\\-167.5166\\-202.2109\\-127\\-167.5494\\-198.3047\\-127\\-167.2296\\-194.3984\\-127\\-166.4215\\-190.4922\\-127\\-165.6954\\-186.5859\\-127\\-164.3053\\-182.6797\\-127\\-163.7827\\-180.7266\\-127\\-162.838\\-178.7734\\-127\\-162.1033\\-176.8203\\-127\\-161.2031\\-174.8672\\-127\\-159.9765\\-172.9141\\-127\\-158.4188\\-170.9609\\-127\\-156.9616\\-169.0078\\-127\\-155.7034\\-167.0547\\-127\\-153.9783\\-165.1016\\-127\\-149.4141\\-160.6673\\-127\\-147.4609\\-159.0469\\-127\\-145.5078\\-157.7349\\-127\\-141.6016\\-154.4768\\-127\\-139.6484\\-153.0403\\-127\\-137.6953\\-152.0433\\-127\\-136.9124\\-151.4297\\-127\\-133.7891\\-149.2771\\-127\\-131.8359\\-148.1725\\-127\\-129.8828\\-146.9148\\-127\\-127.9297\\-146.0303\\-127\\-125.9766\\-144.8617\\-127\\-123.6842\\-143.6172\\-127\\-120.1172\\-141.5774\\-127\\-114.2578\\-138.9071\\-127\\-112.3047\\-138.1784\\-127\\-110.3516\\-137.1882\\-127\\-108.3984\\-136.487\\-127\\-106.4453\\-135.5205\\-127\\-102.5391\\-134.2974\\-127\\-100.5859\\-133.5459\\-127\\-98.63281\\-132.9899\\-127\\-96.67969\\-132.5561\\-127\\-92.77344\\-131.4041\\-127\\-88.86719\\-130.5902\\-127\\-84.96094\\-129.638\\-127\\-81.05469\\-129.0287\\-127\\-73.24219\\-128.3652\\-127\\-69.33594\\-127.868\\-127\\-65.42969\\-127.7984\\-127\\-63.47656\\-127.8561\\-127\\-59.57031\\-128.1624\\-127\\-53.71094\\-128.9517\\-127\\-51.75781\\-129.2652\\-127\\-49.80469\\-129.7321\\-127\\-47.85156\\-130.4023\\-127\\-45.89844\\-130.9003\\-127\\-43.94531\\-131.5143\\-127\\-41.99219\\-132.356\\-127\\-40.03906\\-132.9177\\-127\\-38.08594\\-133.6578\\-127\\-34.31332\\-135.8047\\-127\\-32.22656\\-137.1564\\-127\\-30.27344\\-138.6859\\-127\\-28.7866\\-139.7109\\-127\\-26.36719\\-141.7256\\-127\\-24.7521\\-143.6172\\-127\\-22.46094\\-146.1592\\-127\\-21.32265\\-147.5234\\-127\\-19.84197\\-149.4766\\-127\\-18.99858\\-151.4297\\-127\\-17.73999\\-153.3828\\-127\\-16.95963\\-155.3359\\-127\\-15.88611\\-157.2891\\-127\\-15.26731\\-159.2422\\-127\\-14.38395\\-161.1953\\-127\\-13.86604\\-163.1484\\-127\\-13.22508\\-167.0547\\-127\\-12.18776\\-170.9609\\-127\\-11.90396\\-172.9141\\-127\\-11.36467\\-178.7734\\-127\\-10.55519\\-184.6328\\-127\\-10.47165\\-186.5859\\-127\\-10.66142\\-190.4922\\-127\\-10.9489\\-192.4453\\-127\\-11.31283\\-196.3516\\-127\\-11.38762\\-198.3047\\-127\\-11.33737\\-200.2578\\-127\\-10.53049\\-204.1641\\-127\\-10.07269\\-208.0703\\-127\\-9.9769\\-211.9766\\-127\\-10.06611\\-217.8359\\-127\\-10.18025\\-219.7891\\-127\\-10.46036\\-221.7422\\-127\\-10.5678\\-223.6953\\-127\\-11.28406\\-227.6016\\-127\\-11.43506\\-229.5547\\-127\\-12.10814\\-235.4141\\-127\\-13.10333\\-239.3203\\-127\\-14.03443\\-245.1797\\-127\\-14.62573\\-247.1328\\-127\\-15.36494\\-249.0859\\-127\\-15.87685\\-251.0391\\-127\\-16.76551\\-252.9922\\-127\\-17.47241\\-254.9453\\-127\\-18.03663\\-256.8984\\-127\\-19.08102\\-258.8516\\-127\\-19.59044\\-260.8047\\-127\\-20.28189\\-262.7578\\-127\\-21.34563\\-264.7109\\-127\\-22.11442\\-266.6641\\-127\\-23.35394\\-268.6172\\-127\\-26.34277\\-274.4766\\-127\\-27.45689\\-276.4297\\-127\\-28.81485\\-278.3828\\-127\\-29.99161\\-280.3359\\-127\\-32.84439\\-284.2422\\-127\\-34.10993\\-286.1953\\-127\\-35.69955\\-288.1484\\-127\\-40.03906\\-292.8663\\-127\\-41.99219\\-294.6567\\-127\\-45.89844\\-297.1832\\-127\\-47.85156\\-298.6288\\-127\\-51.75781\\-300.6732\\-127\\-53.71094\\-301.265\\-127\\-55.66406\\-302.0773\\-127\\-57.61719\\-302.5838\\-127\\-61.52344\\-303.0864\\-127\\-65.42969\\-303.7961\\-127\\-67.38281\\-304.0774\\-127\\-71.28906\\-304.2617\\-127\\-73.24219\\-304.2617\\-127\\-77.14844\\-304.0774\\-127"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "169"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "61.52344\\-301.95\\-127\\59.57031\\-301.396\\-127\\55.66406\\-300.5925\\-127\\53.71094\\-299.8899\\-127\\51.75781\\-298.977\\-127\\49.80469\\-298.165\\-127\\47.85156\\-297.0156\\-127\\45.89844\\-296.0318\\-127\\43.94531\\-294.9172\\-127\\40.03906\\-292.0923\\-127\\37.74372\\-290.1016\\-127\\36.13281\\-288.8106\\-127\\33.41571\\-286.1953\\-127\\30.02743\\-282.2891\\-127\\28.32031\\-280.1641\\-127\\25.70544\\-276.4297\\-127\\24.66196\\-274.4766\\-127\\24.41406\\-274.1963\\-127\\22.46094\\-270.9981\\-127\\22.11122\\-270.5703\\-127\\21.23442\\-268.6172\\-127\\20.08928\\-266.6641\\-127\\18.84694\\-262.7578\\-127\\17.84589\\-260.8047\\-127\\17.32746\\-258.8516\\-127\\16.42718\\-256.8984\\-127\\15.78203\\-254.9453\\-127\\15.32616\\-252.9922\\-127\\14.59585\\-251.0391\\-127\\14.08275\\-249.0859\\-127\\13.21916\\-243.2266\\-127\\12.28448\\-239.3203\\-127\\11.96145\\-237.3672\\-127\\11.28882\\-229.5547\\-127\\10.47165\\-225.6484\\-127\\10.07269\\-221.7422\\-127\\9.775061\\-215.8828\\-127\\9.508359\\-211.9766\\-127\\9.309506\\-210.0234\\-127\\8.736879\\-206.1172\\-127\\8.57736\\-204.1641\\-127\\8.553341\\-200.2578\\-127\\8.766352\\-198.3047\\-127\\9.08801\\-196.3516\\-127\\9.822237\\-190.4922\\-127\\10.00977\\-188.5391\\-127\\10.19597\\-184.6328\\-127\\10.53049\\-180.7266\\-127\\11.3246\\-176.8203\\-127\\11.94719\\-170.9609\\-127\\12.36747\\-169.0078\\-127\\13.02316\\-167.0547\\-127\\13.81549\\-163.1484\\-127\\14.37039\\-161.1953\\-127\\15.37812\\-159.2422\\-127\\16.1532\\-157.2891\\-127\\17.44088\\-155.3359\\-127\\18.47076\\-153.3828\\-127\\19.64321\\-151.4297\\-127\\21.06855\\-149.4766\\-127\\22.46094\\-147.7219\\-127\\26.40857\\-143.6172\\-127\\28.40021\\-141.6641\\-127\\30.89334\\-139.7109\\-127\\34.17969\\-137.2936\\-127\\36.13281\\-136.2045\\-127\\38.08594\\-134.9603\\-127\\41.99219\\-133.0327\\-127\\43.94531\\-132.5267\\-127\\45.89844\\-131.5166\\-127\\49.80469\\-130.3448\\-127\\51.75781\\-129.512\\-127\\53.71094\\-129.0972\\-127\\59.57031\\-128.1959\\-127\\63.47656\\-127.7587\\-127\\67.38281\\-127.6328\\-127\\69.33594\\-127.6218\\-127\\73.24219\\-127.739\\-127\\77.14844\\-127.9999\\-127\\81.05469\\-128.4079\\-127\\88.86719\\-128.9238\\-127\\94.72656\\-129.5371\\-127\\100.5859\\-130.651\\-127\\102.5391\\-130.9219\\-127\\106.4453\\-131.7215\\-127\\108.3984\\-132.2656\\-127\\114.2578\\-133.6054\\-127\\116.2109\\-134.2701\\-127\\120.1172\\-135.32\\-127\\122.0703\\-136.214\\-127\\124.0234\\-136.8977\\-127\\129.8828\\-139.5749\\-127\\133.7891\\-141.6071\\-127\\135.7422\\-142.8398\\-127\\137.6953\\-144.2614\\-127\\139.6484\\-145.3962\\-127\\141.6016\\-146.7164\\-127\\143.5547\\-148.2626\\-127\\147.3114\\-151.4297\\-127\\149.4141\\-153.3739\\-127\\153.3203\\-157.497\\-127\\155.2734\\-159.8467\\-127\\157.6001\\-163.1484\\-127\\158.6784\\-165.1016\\-127\\160.0176\\-167.0547\\-127\\162.0123\\-170.9609\\-127\\162.6252\\-172.9141\\-127\\163.6311\\-174.8672\\-127\\164.1692\\-176.8203\\-127\\165.5884\\-180.7266\\-127\\166.317\\-184.6328\\-127\\167.1007\\-188.5391\\-127\\167.379\\-190.4922\\-127\\167.7029\\-194.3984\\-127\\167.8431\\-198.3047\\-127\\167.8941\\-202.2109\\-127\\167.8711\\-206.1172\\-127\\167.649\\-211.9766\\-127\\167.3242\\-215.8828\\-127\\167.0444\\-217.8359\\-127\\166.3174\\-221.7422\\-127\\165.6954\\-225.6484\\-127\\165.2508\\-227.6016\\-127\\164.5447\\-229.5547\\-127\\163.7426\\-233.4609\\-127\\162.3428\\-237.3672\\-127\\161.9104\\-239.3203\\-127\\161.1328\\-241.229\\-127\\160.2153\\-243.2266\\-127\\159.4187\\-245.1797\\-127\\158.2961\\-247.1328\\-127\\157.4136\\-249.0859\\-127\\156.3293\\-251.0391\\-127\\155.4195\\-252.9922\\-127\\154.237\\-254.9453\\-127\\152.8855\\-256.8984\\-127\\151.6859\\-258.8516\\-127\\149.4141\\-262.1575\\-127\\147.5938\\-264.7109\\-127\\145.5078\\-267.2789\\-127\\142.6785\\-270.5703\\-127\\139.6484\\-273.8813\\-127\\133.7891\\-279.7231\\-127\\131.8359\\-281.4567\\-127\\128.546\\-284.2422\\-127\\125.9766\\-286.2792\\-127\\122.0703\\-288.9882\\-127\\120.1172\\-290.2255\\-127\\118.1641\\-291.3294\\-127\\116.2109\\-292.7654\\-127\\112.3047\\-294.8406\\-127\\110.3516\\-295.5139\\-127\\108.3984\\-296.5577\\-127\\106.4453\\-297.1274\\-127\\104.4922\\-298.0627\\-127\\102.5391\\-298.8088\\-127\\100.5859\\-299.4311\\-127\\98.63281\\-300.254\\-127\\96.67969\\-300.7018\\-127\\92.77344\\-301.3931\\-127\\88.86719\\-302.2685\\-127\\86.91406\\-302.5179\\-127\\83.00781\\-302.7859\\-127\\79.10156\\-302.9264\\-127\\75.19531\\-302.9715\\-127\\73.24219\\-302.9417\\-127\\67.38281\\-302.7358\\-127\\65.42969\\-302.5956\\-127\\63.47656\\-302.3477\\-127"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "177"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-303.811\\-125\\-81.05469\\-303.5014\\-125\\-84.96094\\-303.0133\\-125\\-88.86719\\-302.6283\\-125\\-90.82031\\-302.2952\\-125\\-92.77344\\-301.705\\-125\\-96.67969\\-300.7867\\-125\\-98.63281\\-300.2693\\-125\\-100.5859\\-299.3286\\-125\\-102.5391\\-298.6451\\-125\\-104.4922\\-297.5908\\-125\\-106.4453\\-296.808\\-125\\-108.3984\\-295.7982\\-125\\-110.3516\\-294.9237\\-125\\-114.2578\\-292.7299\\-125\\-116.2109\\-291.2351\\-125\\-118.1641\\-289.8803\\-125\\-120.1172\\-288.8102\\-125\\-122.0703\\-287.2727\\-125\\-125.7264\\-284.2422\\-125\\-127.9297\\-282.5692\\-125\\-129.8828\\-280.8168\\-125\\-136.1867\\-274.4766\\-125\\-139.3158\\-270.5703\\-125\\-141.0011\\-268.6172\\-125\\-142.5101\\-266.6641\\-125\\-143.8535\\-264.7109\\-125\\-145.0576\\-262.7578\\-125\\-145.5078\\-262.2332\\-125\\-147.9394\\-258.8516\\-125\\-148.8783\\-256.8984\\-125\\-150.1038\\-254.9453\\-125\\-150.9564\\-252.9922\\-125\\-152.2157\\-251.0391\\-125\\-153.3203\\-249.0515\\-125\\-154.2685\\-247.1328\\-125\\-156.0584\\-243.2266\\-125\\-156.6406\\-241.2734\\-125\\-157.697\\-239.3203\\-125\\-158.3509\\-237.3672\\-125\\-159.3791\\-235.4141\\-125\\-160.7617\\-231.5078\\-125\\-161.6081\\-229.5547\\-125\\-162.0857\\-227.6016\\-125\\-162.4577\\-225.6484\\-125\\-163.7756\\-221.7422\\-125\\-164.5821\\-217.8359\\-125\\-165.3209\\-215.8828\\-125\\-165.7664\\-213.9297\\-125\\-166.4384\\-210.0234\\-125\\-167.2414\\-206.1172\\-125\\-167.4866\\-204.1641\\-125\\-167.6099\\-202.2109\\-125\\-167.6413\\-198.3047\\-125\\-167.379\\-194.3984\\-125\\-165.7883\\-186.5859\\-125\\-165.2261\\-184.6328\\-125\\-164.3899\\-182.6797\\-125\\-163.8704\\-180.7266\\-125\\-162.9979\\-178.7734\\-125\\-161.3751\\-174.8672\\-125\\-160.0669\\-172.9141\\-125\\-158.5515\\-170.9609\\-125\\-155.8344\\-167.0547\\-125\\-154.1029\\-165.1016\\-125\\-149.4141\\-160.5187\\-125\\-147.4609\\-158.8329\\-125\\-145.5078\\-157.4122\\-125\\-142.9932\\-155.3359\\-125\\-139.6484\\-152.7077\\-125\\-137.6953\\-151.5978\\-125\\-135.7422\\-150.2716\\-125\\-133.7891\\-148.7905\\-125\\-128.3137\\-145.5703\\-125\\-125.9766\\-144.3021\\-125\\-124.0234\\-143.0051\\-125\\-122.0703\\-141.9846\\-125\\-120.1172\\-140.7831\\-125\\-118.1641\\-139.9866\\-125\\-116.2109\\-138.9422\\-125\\-114.2578\\-138.1317\\-125\\-112.3047\\-137.1271\\-125\\-110.3516\\-136.3113\\-125\\-108.3984\\-135.3873\\-125\\-104.4922\\-133.9592\\-125\\-102.5391\\-133.1627\\-125\\-100.5859\\-132.7983\\-125\\-96.67969\\-131.4173\\-125\\-94.72656\\-130.8803\\-125\\-92.77344\\-130.4482\\-125\\-88.86719\\-129.2771\\-125\\-86.91406\\-128.9481\\-125\\-81.05469\\-128.081\\-125\\-79.10156\\-127.7312\\-125\\-77.14844\\-127.4837\\-125\\-71.28906\\-127.1297\\-125\\-69.33594\\-127.0584\\-125\\-63.47656\\-127.0859\\-125\\-59.57031\\-127.2722\\-125\\-57.61719\\-127.4373\\-125\\-55.66406\\-127.7167\\-125\\-53.71094\\-128.3056\\-125\\-49.80469\\-129.0516\\-125\\-47.85156\\-129.4991\\-125\\-45.89844\\-130.2755\\-125\\-41.99219\\-131.5198\\-125\\-40.03906\\-132.4804\\-125\\-38.08594\\-133.1029\\-125\\-36.13281\\-134.2465\\-125\\-34.17969\\-135.2174\\-125\\-30.27344\\-138.2024\\-125\\-28.32031\\-139.5141\\-125\\-25.987\\-141.6641\\-125\\-22.46094\\-145.9068\\-125\\-19.75517\\-149.4766\\-125\\-18.90397\\-151.4297\\-125\\-17.68007\\-153.3828\\-125\\-16.80531\\-155.3359\\-125\\-15.82132\\-157.2891\\-125\\-15.18378\\-159.2422\\-125\\-14.31418\\-161.1953\\-125\\-13.8432\\-163.1484\\-125\\-13.18359\\-167.0547\\-125\\-12.16554\\-170.9609\\-125\\-11.87323\\-172.9141\\-125\\-11.31766\\-178.7734\\-125\\-11.0919\\-180.7266\\-125\\-10.46036\\-184.6328\\-125\\-10.39567\\-186.5859\\-125\\-10.59358\\-190.4922\\-125\\-10.88275\\-192.4453\\-125\\-11.2754\\-196.3516\\-125\\-11.36106\\-198.3047\\-125\\-11.24878\\-200.2578\\-125\\-10.70463\\-202.2109\\-125\\-10.21205\\-206.1172\\-125\\-9.988433\\-210.0234\\-125\\-9.9769\\-213.9297\\-125\\-10.14245\\-219.7891\\-125\\-10.5678\\-223.6953\\-125\\-11.31979\\-227.6016\\-125\\-11.8606\\-233.4609\\-125\\-12.12565\\-235.4141\\-125\\-13.11384\\-239.3203\\-125\\-14.02274\\-245.1797\\-125\\-14.61088\\-247.1328\\-125\\-15.36602\\-249.0859\\-125\\-15.87685\\-251.0391\\-125\\-16.77848\\-252.9922\\-125\\-17.48798\\-254.9453\\-125\\-18.03663\\-256.8984\\-125\\-19.09931\\-258.8516\\-125\\-19.59044\\-260.8047\\-125\\-20.2691\\-262.7578\\-125\\-21.3395\\-264.7109\\-125\\-22.13542\\-266.6641\\-125\\-23.35875\\-268.6172\\-125\\-26.3265\\-274.4766\\-125\\-27.45689\\-276.4297\\-125\\-28.80233\\-278.3828\\-125\\-29.98047\\-280.3359\\-125\\-32.85767\\-284.2422\\-125\\-34.15606\\-286.1953\\-125\\-35.74916\\-288.1484\\-125\\-40.03906\\-292.8003\\-125\\-41.99219\\-294.5897\\-125\\-45.89844\\-297.1244\\-125\\-47.85156\\-298.5522\\-125\\-49.80469\\-299.5307\\-125\\-51.75781\\-300.6188\\-125\\-53.71094\\-301.1925\\-125\\-55.66406\\-301.9805\\-125\\-57.61719\\-302.53\\-125\\-61.52344\\-303.0536\\-125\\-67.38281\\-304.0092\\-125\\-71.28906\\-304.2173\\-125\\-75.19531\\-304.1604\\-125"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "170"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "61.52344\\-301.86\\-125\\59.57031\\-301.3288\\-125\\55.66406\\-300.5317\\-125\\53.9363\\-299.8672\\-125\\49.80469\\-298.037\\-125\\43.94531\\-294.8615\\-125\\40.11418\\-292.0547\\-125\\37.82038\\-290.1016\\-125\\36.13281\\-288.7656\\-125\\33.45905\\-286.1953\\-125\\30.05559\\-282.2891\\-125\\28.32031\\-280.1317\\-125\\25.71399\\-276.4297\\-125\\24.6878\\-274.4766\\-125\\24.41406\\-274.1624\\-125\\22.46094\\-270.9658\\-125\\22.13319\\-270.5703\\-125\\21.25324\\-268.6172\\-125\\20.076\\-266.6641\\-125\\18.84909\\-262.7578\\-125\\17.84589\\-260.8047\\-125\\17.3236\\-258.8516\\-125\\16.42718\\-256.8984\\-125\\15.80166\\-254.9453\\-125\\15.34673\\-252.9922\\-125\\14.64844\\-250.9352\\-125\\14.11522\\-249.0859\\-125\\13.27237\\-243.2266\\-125\\12.89208\\-241.2734\\-125\\12.39102\\-239.3203\\-125\\12.03435\\-237.3672\\-125\\11.83745\\-235.4141\\-125\\11.36834\\-229.5547\\-125\\11.1183\\-227.6016\\-125\\10.6756\\-225.6484\\-125\\10.36516\\-223.6953\\-125\\10.17253\\-221.7422\\-125\\9.848933\\-215.8828\\-125\\9.577434\\-211.9766\\-125\\9.359195\\-210.0234\\-125\\8.766352\\-206.1172\\-125\\8.57736\\-204.1641\\-125\\8.507236\\-200.2578\\-125\\8.57736\\-198.3047\\-125\\9.80829\\-190.4922\\-125\\9.961872\\-188.5391\\-125\\10.14245\\-184.6328\\-125\\10.4831\\-180.7266\\-125\\11.31283\\-176.8203\\-125\\11.94018\\-170.9609\\-125\\12.34209\\-169.0078\\-125\\12.99741\\-167.0547\\-125\\13.804\\-163.1484\\-125\\14.35884\\-161.1953\\-125\\15.34999\\-159.2422\\-125\\16.11328\\-157.2891\\-125\\17.4136\\-155.3359\\-125\\18.41412\\-153.3828\\-125\\19.59924\\-151.4297\\-125\\22.46094\\-147.5829\\-125\\26.19485\\-143.6172\\-125\\28.32031\\-141.5202\\-125\\30.27344\\-140.1202\\-125\\34.17969\\-137.1707\\-125\\38.08594\\-134.8047\\-125\\40.03906\\-133.6761\\-125\\41.99219\\-132.8868\\-125\\43.94531\\-132.231\\-125\\45.89844\\-131.2088\\-125\\47.85156\\-130.6096\\-125\\49.80469\\-129.6926\\-125\\51.75781\\-129.1198\\-125\\57.61719\\-127.8786\\-125\\59.57031\\-127.5785\\-125\\63.47656\\-127.2769\\-125\\69.33594\\-127.0991\\-125\\77.14844\\-127.0446\\-125\\86.91406\\-127.2704\\-125\\92.77344\\-127.5845\\-125\\94.72656\\-127.7989\\-125\\96.67969\\-128.2409\\-125\\102.5391\\-129.0583\\-125\\104.4922\\-129.5101\\-125\\106.4453\\-130.1406\\-125\\108.3984\\-130.57\\-125\\110.3516\\-131.1601\\-125\\113.2813\\-131.8984\\-125\\118.1641\\-133.3894\\-125\\120.1172\\-134.2724\\-125\\122.0703\\-134.8968\\-125\\124.0234\\-135.7595\\-125\\127.9297\\-137.684\\-125\\133.7891\\-140.7831\\-125\\135.7422\\-142.0804\\-125\\137.6953\\-143.2765\\-125\\139.6484\\-144.7514\\-125\\140.9538\\-145.5703\\-125\\143.5547\\-147.413\\-125\\145.5078\\-148.9883\\-125\\148.2721\\-151.4297\\-125\\151.3672\\-154.5472\\-125\\153.8675\\-157.2891\\-125\\155.4118\\-159.2422\\-125\\156.6102\\-161.1953\\-125\\157.2266\\-161.9713\\-125\\159.1876\\-165.1016\\-125\\161.463\\-169.0078\\-125\\162.8937\\-172.9141\\-125\\163.7866\\-174.8672\\-125\\164.3192\\-176.8203\\-125\\165.0618\\-178.7734\\-125\\165.6813\\-180.7266\\-125\\167.1538\\-188.5391\\-125\\167.4241\\-190.4922\\-125\\167.7145\\-194.3984\\-125\\167.8545\\-198.3047\\-125\\167.8994\\-202.2109\\-125\\167.8251\\-208.0703\\-125\\167.6607\\-211.9766\\-125\\167.3242\\-215.8828\\-125\\167.0444\\-217.8359\\-125\\166.3356\\-221.7422\\-125\\165.7023\\-225.6484\\-125\\165.2748\\-227.6016\\-125\\164.5538\\-229.5547\\-125\\163.7464\\-233.4609\\-125\\162.3428\\-237.3672\\-125\\161.9057\\-239.3203\\-125\\161.1328\\-241.229\\-125\\160.2102\\-243.2266\\-125\\159.4187\\-245.1797\\-125\\158.2858\\-247.1328\\-125\\157.401\\-249.0859\\-125\\156.3171\\-251.0391\\-125\\155.375\\-252.9922\\-125\\154.2065\\-254.9453\\-125\\152.8288\\-256.8984\\-125\\151.6373\\-258.8516\\-125\\149.4141\\-262.0679\\-125\\147.4855\\-264.7109\\-125\\145.5078\\-267.1854\\-125\\142.6116\\-270.5703\\-125\\139.6484\\-273.8146\\-125\\133.7891\\-279.6604\\-125\\131.8359\\-281.4305\\-125\\128.514\\-284.2422\\-125\\125.9766\\-286.2344\\-125\\122.0703\\-288.9757\\-125\\120.1172\\-290.1978\\-125\\118.1641\\-291.318\\-125\\116.2109\\-292.7581\\-125\\112.3047\\-294.8286\\-125\\110.3516\\-295.4897\\-125\\108.3984\\-296.5457\\-125\\106.4453\\-297.1057\\-125\\104.4922\\-298.0361\\-125\\102.5391\\-298.793\\-125\\100.5859\\-299.4094\\-125\\98.63281\\-300.2334\\-125\\96.67969\\-300.6905\\-125\\92.77344\\-301.3691\\-125\\88.86719\\-302.2369\\-125\\86.91406\\-302.5057\\-125\\83.00781\\-302.7694\\-125\\79.10156\\-302.9036\\-125\\75.19531\\-302.9434\\-125\\73.24219\\-302.9143\\-125\\67.38281\\-302.7127\\-125\\65.42969\\-302.5572\\-125\\63.47656\\-302.292\\-125"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "184"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-77.14844\\-303.9221\\-123\\-81.05469\\-303.3867\\-123\\-88.86719\\-302.5765\\-123\\-90.82031\\-302.2123\\-123\\-92.77344\\-301.6058\\-123\\-96.67969\\-300.7295\\-123\\-98.63281\\-300.1905\\-123\\-100.5859\\-299.2675\\-123\\-102.5391\\-298.5922\\-123\\-104.4922\\-297.5221\\-123\\-106.4453\\-296.7802\\-123\\-108.3984\\-295.7549\\-123\\-110.3516\\-294.8994\\-123\\-114.2578\\-292.7039\\-123\\-116.2109\\-291.2102\\-123\\-118.1641\\-289.8387\\-123\\-120.1172\\-288.7887\\-123\\-122.0703\\-287.2475\\-123\\-125.9766\\-283.9621\\-123\\-127.9297\\-282.5408\\-123\\-129.8828\\-280.802\\-123\\-136.1607\\-274.4766\\-123\\-137.6703\\-272.5234\\-123\\-140.9658\\-268.6172\\-123\\-142.5044\\-266.6641\\-123\\-143.8264\\-264.7109\\-123\\-145.047\\-262.7578\\-123\\-145.5078\\-262.2215\\-123\\-147.9162\\-258.8516\\-123\\-148.8647\\-256.8984\\-123\\-150.0835\\-254.9453\\-123\\-150.9458\\-252.9922\\-123\\-152.2035\\-251.0391\\-123\\-153.3203\\-249.0292\\-123\\-154.2685\\-247.1328\\-123\\-156.0658\\-243.2266\\-123\\-156.6585\\-241.2734\\-123\\-157.7236\\-239.3203\\-123\\-158.3739\\-237.3672\\-123\\-159.4154\\-235.4141\\-123\\-160.7963\\-231.5078\\-123\\-161.6661\\-229.5547\\-123\\-162.4912\\-225.6484\\-123\\-163.2287\\-223.6953\\-123\\-163.8277\\-221.7422\\-123\\-164.2027\\-219.7891\\-123\\-164.6786\\-217.8359\\-123\\-165.3959\\-215.8828\\-123\\-165.8253\\-213.9297\\-123\\-166.5286\\-210.0234\\-123\\-167.3456\\-206.1172\\-123\\-167.5614\\-204.1641\\-123\\-167.7447\\-200.2578\\-123\\-167.6452\\-196.3516\\-123\\-167.4988\\-194.3984\\-123\\-167.2191\\-192.4453\\-123\\-166.7395\\-190.4922\\-123\\-165.8929\\-186.5859\\-123\\-165.4084\\-184.6328\\-123\\-164.5203\\-182.6797\\-123\\-163.978\\-180.7266\\-123\\-163.2146\\-178.7734\\-123\\-162.2886\\-176.8203\\-123\\-161.5553\\-174.8672\\-123\\-160.2273\\-172.9141\\-123\\-158.7796\\-170.9609\\-123\\-157.5346\\-169.0078\\-123\\-156.0172\\-167.0547\\-123\\-154.3588\\-165.1016\\-123\\-151.3672\\-162.067\\-123\\-149.4141\\-160.1828\\-123\\-143.5547\\-155.1057\\-123\\-141.3212\\-153.3828\\-123\\-135.7422\\-149.3848\\-123\\-133.7891\\-148.1953\\-123\\-131.8359\\-146.735\\-123\\-129.8828\\-145.5794\\-123\\-125.9766\\-143.0108\\-123\\-124.0234\\-141.9296\\-123\\-122.0703\\-140.6635\\-123\\-120.1172\\-139.5206\\-123\\-114.2578\\-136.4469\\-123\\-110.3516\\-134.5707\\-123\\-108.3984\\-133.8815\\-123\\-106.4453\\-132.9434\\-123\\-104.4922\\-132.2872\\-123\\-102.5391\\-131.4253\\-123\\-100.5859\\-131.0314\\-123\\-98.63281\\-130.1028\\-123\\-96.67969\\-129.6025\\-123\\-94.72656\\-128.8527\\-123\\-92.77344\\-128.4361\\-123\\-90.82031\\-128.1191\\-123\\-88.86719\\-127.4357\\-123\\-86.91406\\-127.0945\\-123\\-83.00781\\-126.6748\\-123\\-81.05469\\-126.5318\\-123\\-79.10156\\-126.221\\-123\\-77.14844\\-125.7493\\-123\\-73.24219\\-125.5813\\-123\\-69.33594\\-125.4824\\-123\\-63.47656\\-125.5906\\-123\\-61.52344\\-125.7615\\-123\\-59.57031\\-126.1042\\-123\\-55.66406\\-126.5186\\-123\\-53.71094\\-126.8893\\-123\\-51.75781\\-127.3608\\-123\\-49.77899\\-127.9922\\-123\\-45.89844\\-129.1174\\-123\\-43.94531\\-129.8485\\-123\\-40.03906\\-131.4861\\-123\\-38.08594\\-132.5186\\-123\\-36.13281\\-133.3417\\-123\\-32.43371\\-135.8047\\-123\\-30.27344\\-137.3933\\-123\\-28.32031\\-138.9939\\-123\\-26.36719\\-140.854\\-123\\-23.97075\\-143.6172\\-123\\-22.3736\\-145.5703\\-123\\-19.65256\\-149.4766\\-123\\-18.77254\\-151.4297\\-123\\-17.61014\\-153.3828\\-123\\-15.7638\\-157.2891\\-123\\-15.10336\\-159.2422\\-123\\-14.23356\\-161.1953\\-123\\-13.79251\\-163.1484\\-123\\-13.10614\\-167.0547\\-123\\-12.53634\\-169.0078\\-123\\-12.09578\\-170.9609\\-123\\-11.62109\\-174.8672\\-123\\-11.08099\\-180.7266\\-123\\-10.69\\-182.6797\\-123\\-10.41667\\-184.6328\\-123\\-10.32624\\-186.5859\\-123\\-10.4947\\-190.4922\\-123\\-11.00852\\-194.3984\\-123\\-11.20575\\-196.3516\\-123\\-11.26342\\-198.3047\\-123\\-11.03584\\-200.2578\\-123\\-10.51839\\-202.2109\\-123\\-10.13513\\-206.1172\\-123\\-10.03418\\-208.0703\\-123\\-9.932242\\-213.9297\\-123\\-10.05959\\-219.7891\\-123\\-10.22023\\-221.7422\\-123\\-10.51839\\-223.6953\\-123\\-11.33055\\-227.6016\\-123\\-11.84353\\-233.4609\\-123\\-12.08726\\-235.4141\\-123\\-13.06831\\-239.3203\\-123\\-14.00321\\-245.1797\\-123\\-14.52637\\-247.1328\\-123\\-15.33746\\-249.0859\\-123\\-15.85629\\-251.0391\\-123\\-17.46795\\-254.9453\\-123\\-18.0161\\-256.8984\\-123\\-19.09022\\-258.8516\\-123\\-19.56676\\-260.8047\\-123\\-20.24213\\-262.7578\\-123\\-21.32704\\-264.7109\\-123\\-22.10412\\-266.6641\\-123\\-23.3435\\-268.6172\\-123\\-25.36224\\-272.5234\\-123\\-26.29515\\-274.4766\\-123\\-27.44498\\-276.4297\\-123\\-28.78981\\-278.3828\\-123\\-29.98047\\-280.3359\\-123\\-32.86661\\-284.2422\\-123\\-34.17969\\-286.1663\\-123\\-35.78856\\-288.1484\\-123\\-38.08594\\-290.5975\\-123\\-39.36349\\-292.0547\\-123\\-41.99219\\-294.5099\\-123\\-43.94531\\-295.7092\\-123\\-47.85156\\-298.4648\\-123\\-49.80469\\-299.4102\\-123\\-51.75781\\-300.5284\\-123\\-53.71094\\-301.1174\\-123\\-55.66406\\-301.86\\-123\\-57.61719\\-302.4693\\-123\\-63.47656\\-303.2789\\-123\\-67.38281\\-303.9221\\-123\\-69.33594\\-304.0774\\-123\\-73.24219\\-304.1404\\-123"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "169"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "63.47656\\-302.234\\-123\\59.57031\\-301.2742\\-123\\55.66406\\-300.4731\\-123\\51.75781\\-298.8378\\-123\\47.85156\\-296.9048\\-123\\43.94531\\-294.8102\\-123\\40.19368\\-292.0547\\-123\\37.8854\\-290.1016\\-123\\36.13281\\-288.7289\\-123\\33.49474\\-286.1953\\-123\\30.09796\\-282.2891\\-123\\28.32031\\-280.116\\-123\\25.71829\\-276.4297\\-123\\24.70042\\-274.4766\\-123\\24.41406\\-274.1454\\-123\\22.46094\\-270.9365\\-123\\22.15576\\-270.5703\\-123\\21.26034\\-268.6172\\-123\\20.08928\\-266.6641\\-123\\18.82234\\-262.7578\\-123\\17.83265\\-260.8047\\-123\\17.32746\\-258.8516\\-123\\16.43997\\-256.8984\\-123\\15.82129\\-254.9453\\-123\\15.37047\\-252.9922\\-123\\14.15712\\-249.0859\\-123\\13.83653\\-247.1328\\-123\\13.31505\\-243.2266\\-123\\12.99741\\-241.2734\\-123\\12.1205\\-237.3672\\-123\\11.8953\\-235.4141\\-123\\11.43185\\-229.5547\\-123\\11.2274\\-227.6016\\-123\\10.53049\\-223.6953\\-123\\10.28022\\-221.7422\\-123\\9.924492\\-215.8828\\-123\\9.636739\\-211.9766\\-123\\9.409015\\-210.0234\\-123\\8.766352\\-206.1172\\-123\\8.553341\\-204.1641\\-123\\8.463542\\-200.2578\\-123\\8.4851\\-198.3047\\-123\\8.653626\\-196.3516\\-123\\9.449047\\-192.4453\\-123\\9.74169\\-190.4922\\-123\\10.07934\\-184.6328\\-123\\10.44922\\-180.7266\\-123\\11.26342\\-176.8203\\-123\\11.94018\\-170.9609\\-123\\12.31971\\-169.0078\\-123\\12.9996\\-167.0547\\-123\\13.79251\\-163.1484\\-123\\14.32292\\-161.1953\\-123\\15.32018\\-159.2422\\-123\\16.08351\\-157.2891\\-123\\17.3731\\-155.3359\\-123\\18.33531\\-153.3828\\-123\\20.50781\\-150.0589\\-123\\22.37894\\-147.5234\\-123\\26.00861\\-143.6172\\-123\\28.32031\\-141.3241\\-123\\32.22656\\-138.5115\\-123\\33.13961\\-137.7578\\-123\\36.13281\\-135.6937\\-123\\38.08594\\-134.5871\\-123\\40.03906\\-133.3633\\-123\\41.99219\\-132.6662\\-123\\43.94531\\-131.6048\\-123\\45.89844\\-130.8191\\-123\\47.85156\\-129.8461\\-123\\49.80469\\-129.0843\\-123\\51.75781\\-128.5994\\-123\\55.66406\\-127.5039\\-123\\61.52344\\-126.7887\\-123\\65.42969\\-126.4653\\-123\\71.28906\\-125.6813\\-123\\75.19531\\-125.3601\\-123\\79.10156\\-125.2142\\-123\\86.91406\\-125.1611\\-123\\92.77344\\-125.3092\\-123\\96.67969\\-125.5725\\-123\\98.63281\\-125.856\\-123\\100.5859\\-126.538\\-123\\104.4922\\-126.9512\\-123\\106.4453\\-127.414\\-123\\108.3984\\-128.1201\\-123\\110.3516\\-128.6025\\-123\\112.3047\\-129.3134\\-123\\114.2578\\-129.7861\\-123\\116.2109\\-130.6135\\-123\\118.1641\\-131.3246\\-123\\120.1172\\-132.4442\\-123\\122.0703\\-133.0395\\-123\\125.9766\\-135.1563\\-123\\129.8828\\-137.3625\\-123\\135.7422\\-140.8813\\-123\\141.6016\\-145.0397\\-123\\143.5547\\-146.5469\\-123\\147.086\\-149.4766\\-123\\149.1765\\-151.4297\\-123\\151.3672\\-153.668\\-123\\153.3203\\-155.8458\\-123\\155.9818\\-159.2422\\-123\\158.3582\\-163.1484\\-123\\159.7152\\-165.1016\\-123\\160.6315\\-167.0547\\-123\\161.7606\\-169.0078\\-123\\162.3614\\-170.9609\\-123\\163.2561\\-172.9141\\-123\\163.9358\\-174.8672\\-123\\164.4819\\-176.8203\\-123\\165.2748\\-178.7734\\-123\\165.7907\\-180.7266\\-123\\167.2296\\-188.5391\\-123\\167.4587\\-190.4922\\-123\\167.7376\\-194.3984\\-123\\167.8711\\-198.3047\\-123\\167.8994\\-204.1641\\-123\\167.7677\\-210.0234\\-123\\167.5494\\-213.9297\\-123\\167.073\\-217.8359\\-123\\166.6778\\-219.7891\\-123\\165.7263\\-225.6484\\-123\\165.2865\\-227.6016\\-123\\164.5726\\-229.5547\\-123\\163.7538\\-233.4609\\-123\\162.3428\\-237.3672\\-123\\161.8984\\-239.3203\\-123\\161.1328\\-241.2582\\-123\\160.2051\\-243.2266\\-123\\159.4066\\-245.1797\\-123\\158.2755\\-247.1328\\-123\\157.3752\\-249.0859\\-123\\156.2868\\-251.0391\\-123\\155.3449\\-252.9922\\-123\\154.1837\\-254.9453\\-123\\152.7894\\-256.8984\\-123\\151.3672\\-259.1148\\-123\\149.4141\\-262.0032\\-123\\145.8543\\-266.6641\\-123\\142.5307\\-270.5703\\-123\\140.7636\\-272.5234\\-123\\137.6953\\-275.6955\\-123\\133.7891\\-279.5953\\-123\\131.8359\\-281.3971\\-123\\128.466\\-284.2422\\-123\\125.9766\\-286.2032\\-123\\122.0703\\-288.9685\\-123\\118.1641\\-291.2996\\-123\\116.2109\\-292.7389\\-123\\114.2578\\-293.7121\\-123\\112.3047\\-294.8096\\-123\\110.3516\\-295.4659\\-123\\108.3984\\-296.5198\\-123\\106.4453\\-297.084\\-123\\104.4922\\-297.9948\\-123\\102.5391\\-298.7724\\-123\\100.5859\\-299.3789\\-123\\98.63281\\-300.2122\\-123\\96.67969\\-300.661\\-123\\92.77344\\-301.3588\\-123\\88.86719\\-302.2012\\-123\\86.91406\\-302.4775\\-123\\84.96094\\-302.6466\\-123\\81.05469\\-302.8185\\-123\\77.14844\\-302.9156\\-123\\73.24219\\-302.8823\\-123\\67.38281\\-302.684\\-123\\65.42969\\-302.5179\\-123"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "179"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-77.14844\\-303.7961\\-121\\-81.05469\\-303.3039\\-121\\-88.86719\\-302.5179\\-121\\-90.82031\\-302.1147\\-121\\-92.77344\\-301.4901\\-121\\-96.67969\\-300.6657\\-121\\-98.63281\\-300.0957\\-121\\-100.5859\\-299.1961\\-121\\-102.5391\\-298.5265\\-121\\-104.4922\\-297.4579\\-121\\-106.4453\\-296.7499\\-121\\-108.3984\\-295.6872\\-121\\-110.3516\\-294.8806\\-121\\-114.2578\\-292.6736\\-121\\-118.1641\\-289.7982\\-121\\-120.1172\\-288.758\\-121\\-122.0703\\-287.2223\\-121\\-125.9766\\-283.9093\\-121\\-127.9297\\-282.5138\\-121\\-129.8828\\-280.7791\\-121\\-136.1343\\-274.4766\\-121\\-137.6374\\-272.5234\\-121\\-140.944\\-268.6172\\-121\\-142.4854\\-266.6641\\-121\\-145.0229\\-262.7578\\-121\\-145.5078\\-262.1941\\-121\\-147.8957\\-258.8516\\-121\\-148.8551\\-256.8984\\-121\\-150.0672\\-254.9453\\-121\\-150.9221\\-252.9922\\-121\\-152.1801\\-251.0391\\-121\\-153.3203\\-249.0055\\-121\\-154.2512\\-247.1328\\-121\\-155.0993\\-245.1797\\-121\\-156.0584\\-243.2266\\-121\\-156.6495\\-241.2734\\-121\\-157.7323\\-239.3203\\-121\\-158.3802\\-237.3672\\-121\\-159.4388\\-235.4141\\-121\\-160.8184\\-231.5078\\-121\\-161.6972\\-229.5547\\-121\\-162.5216\\-225.6484\\-121\\-163.3212\\-223.6953\\-121\\-163.8682\\-221.7422\\-121\\-164.2589\\-219.7891\\-121\\-164.7727\\-217.8359\\-121\\-165.483\\-215.8828\\-121\\-166.2077\\-211.9766\\-121\\-167.1007\\-208.0703\\-121\\-167.4338\\-206.1172\\-121\\-167.6413\\-204.1641\\-121\\-167.8203\\-200.2578\\-121\\-167.8136\\-198.3047\\-121\\-167.6174\\-194.3984\\-121\\-167.3943\\-192.4453\\-121\\-166.4536\\-188.5391\\-121\\-165.5733\\-184.6328\\-121\\-164.7454\\-182.6797\\-121\\-163.4538\\-178.7734\\-121\\-162.4201\\-176.8203\\-121\\-161.7472\\-174.8672\\-121\\-159.1717\\-170.9609\\-121\\-157.2266\\-168.1651\\-121\\-155.2734\\-165.7098\\-121\\-152.9222\\-163.1484\\-121\\-149.4141\\-159.6146\\-121\\-146.9275\\-157.2891\\-121\\-144.6697\\-155.3359\\-121\\-143.5547\\-154.2297\\-121\\-141.6016\\-152.5535\\-121\\-140.1265\\-151.4297\\-121\\-137.6953\\-149.7544\\-121\\-135.7422\\-148.1718\\-121\\-133.7891\\-146.9422\\-121\\-131.8359\\-145.392\\-121\\-125.9766\\-141.2979\\-121\\-124.0234\\-140.1594\\-121\\-122.0703\\-138.7649\\-121\\-120.1367\\-137.7578\\-121\\-118.1641\\-136.3642\\-121\\-116.2109\\-135.193\\-121\\-114.2578\\-134.1382\\-121\\-109.6021\\-131.8984\\-121\\-108.3984\\-131.2349\\-121\\-106.4453\\-130.4953\\-121\\-104.4922\\-129.4402\\-121\\-102.5391\\-128.8511\\-121\\-100.5859\\-127.9521\\-121\\-98.63281\\-127.4468\\-121\\-94.72656\\-126.3097\\-121\\-92.77344\\-125.937\\-121\\-88.86719\\-124.9448\\-121\\-86.91406\\-124.6651\\-121\\-83.00781\\-124.2603\\-121\\-81.05469\\-123.6431\\-121\\-77.14844\\-123.3372\\-121\\-69.33594\\-123.0864\\-121\\-65.42969\\-123.2314\\-121\\-61.52344\\-123.5172\\-121\\-59.57031\\-124.1627\\-121\\-55.66406\\-124.4657\\-121\\-53.71094\\-124.8184\\-121\\-51.75781\\-125.4242\\-121\\-49.80469\\-126.212\\-121\\-47.85156\\-126.7433\\-121\\-43.94531\\-128.3315\\-121\\-41.99219\\-129.2863\\-121\\-37.1875\\-131.8984\\-121\\-34.17969\\-133.6612\\-121\\-32.22656\\-135.0162\\-121\\-28.9847\\-137.7578\\-121\\-26.91951\\-139.7109\\-121\\-24.41406\\-142.573\\-121\\-21.97944\\-145.5703\\-121\\-20.50781\\-147.7832\\-121\\-19.53125\\-149.4766\\-121\\-16.60156\\-155.1427\\-121\\-15.66984\\-157.2891\\-121\\-14.98047\\-159.2422\\-121\\-14.15094\\-161.1953\\-121\\-12.98545\\-167.0547\\-121\\-12.39102\\-169.0078\\-121\\-11.99944\\-170.9609\\-121\\-11.56811\\-174.8672\\-121\\-11.04526\\-180.7266\\-121\\-10.4061\\-184.6328\\-121\\-10.2892\\-186.5859\\-121\\-10.2983\\-188.5391\\-121\\-10.43822\\-190.4922\\-121\\-10.9489\\-194.3984\\-121\\-11.10026\\-196.3516\\-121\\-11.13669\\-198.3047\\-121\\-10.3752\\-202.2109\\-121\\-10.04963\\-206.1172\\-121\\-9.867447\\-213.9297\\-121\\-9.919085\\-217.8359\\-121\\-10.09971\\-221.7422\\-121\\-10.4061\\-223.6953\\-121\\-11.19536\\-227.6016\\-121\\-12.04227\\-235.4141\\-121\\-12.44213\\-237.3672\\-121\\-12.99526\\-239.3203\\-121\\-13.36513\\-241.2734\\-121\\-13.97996\\-245.1797\\-121\\-14.46144\\-247.1328\\-121\\-15.28653\\-249.0859\\-121\\-15.82132\\-251.0391\\-121\\-17.44792\\-254.9453\\-121\\-17.99916\\-256.8984\\-121\\-19.03654\\-258.8516\\-121\\-19.54309\\-260.8047\\-121\\-20.21767\\-262.7578\\-121\\-21.3143\\-264.7109\\-121\\-22.06421\\-266.6641\\-121\\-23.31674\\-268.6172\\-121\\-24.2513\\-270.5703\\-121\\-25.35088\\-272.5234\\-121\\-26.26397\\-274.4766\\-121\\-27.42661\\-276.4297\\-121\\-28.77055\\-278.3828\\-121\\-29.96947\\-280.3359\\-121\\-32.85767\\-284.2422\\-121\\-34.17969\\-286.1289\\-121\\-35.81437\\-288.1484\\-121\\-38.08594\\-290.5552\\-121\\-39.41761\\-292.0547\\-121\\-41.99219\\-294.4364\\-121\\-43.94531\\-295.6039\\-121\\-44.37641\\-295.9609\\-121\\-47.85156\\-298.3698\\-121\\-49.80469\\-299.3015\\-121\\-51.75781\\-300.442\\-121\\-53.71094\\-301.05\\-121\\-57.61719\\-302.4101\\-121\\-59.57031\\-302.7358\\-121\\-63.47656\\-303.2128\\-121\\-67.38281\\-303.811\\-121\\-69.33594\\-303.9851\\-121\\-73.24219\\-304.0553\\-121"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "178"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "63.47656\\-302.1646\\-121\\61.52344\\-301.6475\\-121\\55.66406\\-300.421\\-121\\51.75781\\-298.7898\\-121\\47.85156\\-296.8611\\-121\\45.89844\\-295.7397\\-121\\43.94531\\-294.7729\\-121\\40.25519\\-292.0547\\-121\\37.95155\\-290.1016\\-121\\36.13281\\-288.7055\\-121\\33.51727\\-286.1953\\-121\\30.11322\\-282.2891\\-121\\28.32031\\-280.0853\\-121\\25.72692\\-276.4297\\-121\\24.70042\\-274.4766\\-121\\24.41406\\-274.1454\\-121\\22.46094\\-270.9335\\-121\\22.15787\\-270.5703\\-121\\21.26034\\-268.6172\\-121\\20.0998\\-266.6641\\-121\\18.80976\\-262.7578\\-121\\17.82614\\-260.8047\\-121\\17.33398\\-258.8516\\-121\\16.45296\\-256.8984\\-121\\15.83708\\-254.9453\\-121\\15.38732\\-252.9922\\-121\\14.19724\\-249.0859\\-121\\13.8638\\-247.1328\\-121\\13.06831\\-241.2734\\-121\\12.20061\\-237.3672\\-121\\11.94719\\-235.4141\\-121\\11.32929\\-227.6016\\-121\\11.06994\\-225.6484\\-121\\10.4061\\-221.7422\\-121\\10.09285\\-217.8359\\-121\\9.988433\\-215.8828\\-121\\9.678171\\-211.9766\\-121\\9.459779\\-210.0234\\-121\\8.736879\\-206.1172\\-121\\8.529975\\-204.1641\\-121\\8.412035\\-200.2578\\-121\\8.541577\\-196.3516\\-121\\9.359195\\-192.4453\\-121\\9.638034\\-190.4922\\-121\\10.17253\\-182.6797\\-121\\10.36516\\-180.7266\\-121\\11.19338\\-176.8203\\-121\\11.49462\\-174.8672\\-121\\11.92197\\-170.9609\\-121\\12.29519\\-169.0078\\-121\\12.98545\\-167.0547\\-121\\13.78102\\-163.1484\\-121\\14.28796\\-161.1953\\-121\\15.29002\\-159.2422\\-121\\16.03771\\-157.2891\\-121\\17.33124\\-155.3359\\-121\\18.24951\\-153.3828\\-121\\20.50781\\-149.9464\\-121\\22.24314\\-147.5234\\-121\\24.41406\\-145.2529\\-121\\25.86806\\-143.6172\\-121\\28.32031\\-141.1688\\-121\\30.27344\\-139.6377\\-121\\32.22656\\-138.3424\\-121\\32.88535\\-137.7578\\-121\\36.13281\\-135.2784\\-121\\40.03906\\-133.0315\\-121\\41.99219\\-132.0796\\-121\\43.94531\\-130.9768\\-121\\47.85156\\-129.0251\\-121\\49.80469\\-128.3898\\-121\\51.75781\\-127.5822\\-121\\55.66406\\-126.7396\\-121\\57.61719\\-126.4063\\-121\\59.57031\\-125.9517\\-121\\61.52344\\-125.6177\\-121\\63.47656\\-125.1046\\-121\\69.33594\\-124.1765\\-121\\71.28906\\-123.5829\\-121\\73.24219\\-123.3369\\-121\\77.14844\\-122.9483\\-121\\83.00781\\-122.6428\\-121\\86.91406\\-122.6046\\-121\\92.77344\\-122.7591\\-121\\98.63281\\-123.1308\\-121\\100.5859\\-123.3899\\-121\\102.5391\\-123.7528\\-121\\104.4922\\-124.3533\\-121\\106.4453\\-124.6894\\-121\\110.3516\\-125.6064\\-121\\114.2578\\-127.099\\-121\\116.2109\\-127.6959\\-121\\118.1641\\-128.67\\-121\\120.1172\\-129.4422\\-121\\122.0703\\-130.6353\\-121\\124.0234\\-131.6514\\-121\\125.9766\\-132.9545\\-121\\127.9297\\-134.1291\\-121\\130.2472\\-135.8047\\-121\\131.8359\\-136.7813\\-121\\133.7891\\-138.2092\\-121\\135.7422\\-139.3668\\-121\\137.6953\\-140.8421\\-121\\139.6484\\-142.4438\\-121\\141.3574\\-143.6172\\-121\\143.5547\\-145.3197\\-121\\147.4609\\-148.6514\\-121\\152.1144\\-153.3828\\-121\\153.8652\\-155.3359\\-121\\155.282\\-157.2891\\-121\\156.4632\\-159.2422\\-121\\157.8186\\-161.1953\\-121\\158.8754\\-163.1484\\-121\\160.0861\\-165.1016\\-121\\161.1328\\-167.1198\\-121\\162.0069\\-169.0078\\-121\\162.5909\\-170.9609\\-121\\163.5362\\-172.9141\\-121\\164.6737\\-176.8203\\-121\\165.455\\-178.7734\\-121\\165.8998\\-180.7266\\-121\\166.5901\\-184.6328\\-121\\166.9998\\-186.5859\\-121\\167.511\\-190.4922\\-121\\167.653\\-192.4453\\-121\\167.8826\\-198.3047\\-121\\167.911\\-204.1641\\-121\\167.7746\\-210.0234\\-121\\167.5579\\-213.9297\\-121\\167.379\\-215.8828\\-121\\167.1007\\-217.8359\\-121\\166.6891\\-219.7891\\-121\\165.746\\-225.6484\\-121\\165.2982\\-227.6016\\-121\\164.5726\\-229.5547\\-121\\163.7538\\-233.4609\\-121\\162.3428\\-237.3672\\-121\\161.9104\\-239.3203\\-121\\161.1407\\-241.2734\\-121\\160.2108\\-243.2266\\-121\\159.4204\\-245.1797\\-121\\158.2548\\-247.1328\\-121\\157.362\\-249.0859\\-121\\156.2746\\-251.0391\\-121\\155.3295\\-252.9922\\-121\\154.1718\\-254.9453\\-121\\152.7706\\-256.8984\\-121\\151.3672\\-259.0676\\-121\\149.4141\\-261.9396\\-121\\145.7784\\-266.6641\\-121\\142.4644\\-270.5703\\-121\\140.6729\\-272.5234\\-121\\137.6953\\-275.63\\-121\\133.7891\\-279.5352\\-121\\131.8359\\-281.3518\\-121\\128.422\\-284.2422\\-121\\125.9481\\-286.1953\\-121\\122.0703\\-288.9612\\-121\\118.1641\\-291.2882\\-121\\116.2109\\-292.7235\\-121\\114.2578\\-293.6891\\-121\\112.3047\\-294.7903\\-121\\110.3516\\-295.4361\\-121\\108.3984\\-296.4987\\-121\\106.4453\\-297.0778\\-121\\104.4922\\-297.9662\\-121\\102.5391\\-298.7519\\-121\\100.5859\\-299.3554\\-121\\98.63281\\-300.1794\\-121\\96.67969\\-300.6518\\-121\\92.77344\\-301.3386\\-121\\88.86719\\-302.1985\\-121\\84.96094\\-302.6214\\-121\\81.05469\\-302.8023\\-121\\77.14844\\-302.8823\\-121\\73.24219\\-302.8609\\-121\\67.38281\\-302.6533\\-121\\65.42969\\-302.4775\\-121"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "180"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "57"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-75.19531\\-303.8542\\-119\\-81.05469\\-303.2162\\-119\\-86.91406\\-302.6762\\-119\\-88.86719\\-302.4401\\-119\\-90.82031\\-301.9931\\-119\\-92.77344\\-301.396\\-119\\-96.67969\\-300.5967\\-119\\-98.63281\\-299.9773\\-119\\-100.5859\\-299.1123\\-119\\-102.5391\\-298.4616\\-119\\-104.4922\\-297.3797\\-119\\-106.4453\\-296.7004\\-119\\-108.3984\\-295.5974\\-119\\-110.3516\\-294.8492\\-119\\-112.3047\\-293.6801\\-119\\-114.2578\\-292.6315\\-119\\-118.1641\\-289.7736\\-119\\-120.1172\\-288.7357\\-119\\-122.0703\\-287.1967\\-119\\-125.9766\\-283.8588\\-119\\-127.9297\\-282.4558\\-119\\-129.8828\\-280.7523\\-119\\-132.203\\-278.3828\\-119\\-134.2206\\-276.4297\\-119\\-136.0952\\-274.4766\\-119\\-139.2107\\-270.5703\\-119\\-140.918\\-268.6172\\-119\\-142.4662\\-266.6641\\-119\\-144.9992\\-262.7578\\-119\\-145.5078\\-262.1624\\-119\\-147.8718\\-258.8516\\-119\\-148.8281\\-256.8984\\-119\\-150.0588\\-254.9453\\-119\\-150.9018\\-252.9922\\-119\\-152.1627\\-251.0391\\-119\\-154.263\\-247.1328\\-119\\-155.0722\\-245.1797\\-119\\-156.046\\-243.2266\\-119\\-156.6368\\-241.2734\\-119\\-157.7408\\-239.3203\\-119\\-158.3739\\-237.3672\\-119\\-159.4502\\-235.4141\\-119\\-160.8508\\-231.5078\\-119\\-161.7099\\-229.5547\\-119\\-162.5527\\-225.6484\\-119\\-163.3838\\-223.6953\\-119\\-163.9075\\-221.7422\\-119\\-164.3066\\-219.7891\\-119\\-165.561\\-215.8828\\-119\\-166.2735\\-211.9766\\-119\\-167.2054\\-208.0703\\-119\\-167.5078\\-206.1172\\-119\\-167.7072\\-204.1641\\-119\\-167.8941\\-200.2578\\-119\\-167.8994\\-198.3047\\-119\\-167.7421\\-194.3984\\-119\\-167.5354\\-192.4453\\-119\\-167.2207\\-190.4922\\-119\\-166.6778\\-188.5391\\-119\\-165.7527\\-184.6328\\-119\\-165.0912\\-182.6797\\-119\\-164.2839\\-180.7266\\-119\\-163.6993\\-178.7734\\-119\\-162.6635\\-176.8203\\-119\\-161.9601\\-174.8672\\-119\\-159.6844\\-170.9609\\-119\\-159.1797\\-170.3594\\-119\\-157.2266\\-167.5595\\-119\\-155.366\\-165.1016\\-119\\-153.3203\\-162.6723\\-119\\-151.3672\\-160.5093\\-119\\-148.2115\\-157.2891\\-119\\-145.5078\\-154.6338\\-119\\-143.5547\\-152.833\\-119\\-141.6016\\-151.2588\\-119\\-139.6484\\-149.4863\\-119\\-135.7422\\-146.2182\\-119\\-129.8972\\-141.6641\\-119\\-124.597\\-137.7578\\-119\\-122.0703\\-136.0753\\-119\\-120.1172\\-134.6526\\-119\\-114.2578\\-130.8277\\-119\\-112.3047\\-129.7325\\-119\\-108.3984\\-127.7056\\-119\\-106.4453\\-126.8709\\-119\\-100.5859\\-124.6597\\-119\\-96.67969\\-123.5107\\-119\\-94.72656\\-122.8652\\-119\\-92.77344\\-122.3836\\-119\\-86.91406\\-121.2045\\-119\\-84.96094\\-120.9487\\-119\\-77.14844\\-120.1692\\-119\\-75.19531\\-120.0317\\-119\\-69.33594\\-119.9427\\-119\\-65.42969\\-120.0515\\-119\\-63.47656\\-120.2733\\-119\\-59.57031\\-120.5888\\-119\\-55.66406\\-121.181\\-119\\-53.71094\\-121.7357\\-119\\-49.80469\\-123.1523\\-119\\-45.89844\\-124.8881\\-119\\-43.94531\\-125.904\\-119\\-41.99219\\-127.0376\\-119\\-40.59938\\-127.9922\\-119\\-38.08594\\-129.5568\\-119\\-36.13281\\-130.8873\\-119\\-32.30424\\-133.8516\\-119\\-30.27344\\-135.4766\\-119\\-27.88382\\-137.7578\\-119\\-26.11699\\-139.7109\\-119\\-24.41406\\-141.7827\\-119\\-21.5908\\-145.5703\\-119\\-20.24489\\-147.5234\\-119\\-19.37548\\-149.4766\\-119\\-18.21356\\-151.4297\\-119\\-17.39054\\-153.3828\\-119\\-16.25504\\-155.3359\\-119\\-15.55342\\-157.2891\\-119\\-14.04333\\-161.1953\\-119\\-13.29774\\-165.1016\\-119\\-12.24308\\-169.0078\\-119\\-11.90848\\-170.9609\\-119\\-11.51816\\-174.8672\\-119\\-11.19626\\-178.7734\\-119\\-10.39567\\-184.6328\\-119\\-10.27135\\-186.5859\\-119\\-10.26257\\-188.5391\\-119\\-10.4061\\-190.4922\\-119\\-10.89523\\-194.3984\\-119\\-10.99664\\-196.3516\\-119\\-11.00028\\-198.3047\\-119\\-10.4947\\-200.2578\\-119\\-10.19597\\-202.2109\\-119\\-9.942746\\-206.1172\\-119\\-9.746571\\-213.9297\\-119\\-9.859076\\-219.7891\\-119\\-10.19597\\-223.6953\\-119\\-11.0104\\-227.6016\\-119\\-11.32581\\-229.5547\\-119\\-11.83143\\-233.4609\\-119\\-11.99525\\-235.4141\\-119\\-12.33082\\-237.3672\\-119\\-12.89208\\-239.3203\\-119\\-13.30645\\-241.2734\\-119\\-13.94187\\-245.1797\\-119\\-14.39925\\-247.1328\\-119\\-15.22524\\-249.0859\\-119\\-15.78363\\-251.0391\\-119\\-16.53498\\-252.9922\\-119\\-17.41028\\-254.9453\\-119\\-17.96301\\-256.8984\\-119\\-19.00692\\-258.8516\\-119\\-19.53125\\-260.8047\\-119\\-20.18229\\-262.7578\\-119\\-21.29017\\-264.7109\\-119\\-22.03556\\-266.6641\\-119\\-23.28808\\-268.6172\\-119\\-24.22437\\-270.5703\\-119\\-25.33953\\-272.5234\\-119\\-26.21875\\-274.4766\\-119\\-27.40294\\-276.4297\\-119\\-28.75362\\-278.3828\\-119\\-29.94792\\-280.3359\\-119\\-32.84862\\-284.2422\\-119\\-34.17969\\-286.1474\\-119\\-35.83623\\-288.1484\\-119\\-38.08594\\-290.5123\\-119\\-39.4545\\-292.0547\\-119\\-41.99219\\-294.3596\\-119\\-43.94531\\-295.5293\\-119\\-44.47719\\-295.9609\\-119\\-47.85156\\-298.281\\-119\\-49.80469\\-299.2142\\-119\\-51.75781\\-300.3682\\-119\\-55.66406\\-301.6206\\-119\\-57.61719\\-302.3381\\-119\\-59.57031\\-302.6953\\-119\\-63.47656\\-303.1477\\-119\\-69.33594\\-303.8955\\-119\\-73.24219\\-303.9478\\-119"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "171"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "58"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "63.47656\\-302.088\\-119\\61.52344\\-301.5423\\-119\\57.61719\\-300.8095\\-119\\55.66406\\-300.3764\\-119\\53.71094\\-299.4911\\-119\\51.75781\\-298.7579\\-119\\49.80469\\-297.6915\\-119\\47.85156\\-296.8188\\-119\\45.89844\\-295.683\\-119\\43.94531\\-294.748\\-119\\40.29895\\-292.0547\\-119\\37.98554\\-290.1016\\-119\\36.13281\\-288.6855\\-119\\33.53092\\-286.1953\\-119\\30.12734\\-282.2891\\-119\\28.32031\\-280.0704\\-119\\25.72692\\-276.4297\\-119\\24.70042\\-274.4766\\-119\\24.41406\\-274.1425\\-119\\22.46094\\-270.904\\-119\\22.18289\\-270.5703\\-119\\21.26736\\-268.6172\\-119\\20.0998\\-266.6641\\-119\\18.82234\\-262.7578\\-119\\17.83265\\-260.8047\\-119\\17.33011\\-258.8516\\-119\\16.47949\\-256.8984\\-119\\15.85681\\-254.9453\\-119\\15.42664\\-252.9922\\-119\\14.22902\\-249.0859\\-119\\13.88638\\-247.1328\\-119\\13.13741\\-241.2734\\-119\\12.28448\\-237.3672\\-119\\11.81959\\-233.4609\\-119\\11.40978\\-227.6016\\-119\\10.93606\\-223.6953\\-119\\10.5806\\-221.7422\\-119\\10.16488\\-217.8359\\-119\\10.04044\\-215.8828\\-119\\9.537407\\-210.0234\\-119\\8.694322\\-206.1172\\-119\\8.496094\\-204.1641\\-119\\8.382667\\-200.2578\\-119\\8.518528\\-196.3516\\-119\\8.766352\\-194.3984\\-119\\9.234619\\-192.4453\\-119\\9.538277\\-190.4922\\-119\\9.74215\\-188.5391\\-119\\10.08606\\-182.6797\\-119\\10.26257\\-180.7266\\-119\\10.62012\\-178.7734\\-119\\11.13154\\-176.8203\\-119\\11.49876\\-174.8672\\-119\\11.89076\\-170.9609\\-119\\12.27392\\-169.0078\\-119\\12.94663\\-167.0547\\-119\\13.76433\\-163.1484\\-119\\14.25653\\-161.1953\\-119\\15.23554\\-159.2422\\-119\\15.97858\\-157.2891\\-119\\17.26944\\-155.3359\\-119\\18.14993\\-153.3828\\-119\\20.50781\\-149.7925\\-119\\22.13093\\-147.5234\\-119\\24.41406\\-145.1214\\-119\\25.72761\\-143.6172\\-119\\28.32031\\-141.0338\\-119\\30.27344\\-139.3307\\-119\\32.22656\\-137.9124\\-119\\36.13281\\-134.8219\\-119\\38.08594\\-133.4299\\-119\\40.03906\\-132.383\\-119\\41.99219\\-131.0784\\-119\\44.00712\\-129.9453\\-119\\47.85156\\-127.9494\\-119\\49.80469\\-127.1561\\-119\\51.75781\\-126.5874\\-119\\53.71094\\-125.8777\\-119\\55.66406\\-125.3949\\-119\\57.61719\\-124.7787\\-119\\59.57031\\-124.2644\\-119\\63.47656\\-122.9633\\-119\\65.42969\\-122.4852\\-119\\67.38281\\-121.784\\-119\\73.24219\\-120.7331\\-119\\77.14844\\-120.0918\\-119\\79.10156\\-119.915\\-119\\83.00781\\-119.7296\\-119\\88.86719\\-119.6872\\-119\\94.72656\\-119.8048\\-119\\98.63281\\-120.1106\\-119\\100.5859\\-120.4936\\-119\\102.5391\\-120.7522\\-119\\106.4453\\-121.5105\\-119\\110.3516\\-122.6893\\-119\\112.3047\\-123.2168\\-119\\116.2109\\-124.865\\-119\\118.1641\\-125.7587\\-119\\122.0703\\-127.8029\\-119\\125.5247\\-129.9453\\-119\\127.9297\\-131.7097\\-119\\129.8828\\-133.002\\-119\\131.8359\\-134.537\\-119\\135.7422\\-137.3312\\-119\\141.6016\\-142.375\\-119\\143.236\\-143.6172\\-119\\147.4609\\-147.2815\\-119\\149.4141\\-149.2813\\-119\\153.3203\\-153.6009\\-119\\156.0126\\-157.2891\\-119\\158.2924\\-161.1953\\-119\\159.5871\\-163.1484\\-119\\160.4715\\-165.1016\\-119\\161.5798\\-167.0547\\-119\\162.9232\\-170.9609\\-119\\163.765\\-172.9141\\-119\\164.2288\\-174.8672\\-119\\165.5995\\-178.7734\\-119\\166.3136\\-182.6797\\-119\\167.1007\\-186.5859\\-119\\167.3584\\-188.5391\\-119\\167.6839\\-192.4453\\-119\\167.8941\\-198.3047\\-119\\167.9171\\-204.1641\\-119\\167.786\\-210.0234\\-119\\167.5494\\-213.9297\\-119\\167.1276\\-217.8359\\-119\\166.716\\-219.7891\\-119\\165.7626\\-225.6484\\-119\\165.3209\\-227.6016\\-119\\164.585\\-229.5547\\-119\\163.7389\\-233.4609\\-119\\162.3428\\-237.3672\\-119\\161.9104\\-239.3203\\-119\\161.1406\\-241.2734\\-119\\160.2159\\-243.2266\\-119\\159.3959\\-245.1797\\-119\\158.2499\\-247.1328\\-119\\157.3213\\-249.0859\\-119\\155.2977\\-252.9922\\-119\\154.1582\\-254.9453\\-119\\152.7485\\-256.8984\\-119\\149.4141\\-261.8849\\-119\\145.7072\\-266.6641\\-119\\143.9968\\-268.6172\\-119\\142.3895\\-270.5703\\-119\\137.6953\\-275.5451\\-119\\134.8985\\-278.3828\\-119\\131.8359\\-281.306\\-119\\128.3736\\-284.2422\\-119\\125.8422\\-286.1953\\-119\\122.0703\\-288.9284\\-119\\118.1641\\-291.2701\\-119\\116.2109\\-292.6998\\-119\\114.2578\\-293.6667\\-119\\112.3047\\-294.7734\\-119\\110.3516\\-295.4133\\-119\\108.3984\\-296.4619\\-119\\106.4453\\-297.0562\\-119\\102.5391\\-298.7313\\-119\\100.5859\\-299.3234\\-119\\98.63281\\-300.1548\\-119\\96.67969\\-300.6337\\-119\\92.77344\\-301.3156\\-119\\88.86719\\-302.1761\\-119\\84.96094\\-302.6028\\-119\\83.00781\\-302.7127\\-119\\79.10156\\-302.8344\\-119\\73.24219\\-302.8396\\-119\\67.38281\\-302.6235\\-119\\65.42969\\-302.4275\\-119"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "182"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "59"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-75.19531\\-303.7048\\-117\\-83.00781\\-302.9542\\-117\\-86.91406\\-302.6283\\-117\\-88.86719\\-302.3346\\-117\\-92.77344\\-301.293\\-117\\-96.67969\\-300.5163\\-117\\-100.5859\\-299.0191\\-117\\-102.5391\\-298.3579\\-117\\-104.4922\\-297.2926\\-117\\-106.4453\\-296.6411\\-117\\-108.3984\\-295.5139\\-117\\-110.3516\\-294.8001\\-117\\-112.3047\\-293.6211\\-117\\-114.2578\\-292.5774\\-117\\-118.1641\\-289.7238\\-117\\-120.1172\\-288.6998\\-117\\-122.0703\\-287.1719\\-117\\-125.9766\\-283.8105\\-117\\-127.9297\\-282.3793\\-117\\-129.8828\\-280.6719\\-117\\-132.1325\\-278.3828\\-117\\-134.1688\\-276.4297\\-117\\-136.0421\\-274.4766\\-117\\-139.1404\\-270.5703\\-117\\-140.8627\\-268.6172\\-117\\-142.4216\\-266.6641\\-117\\-144.9526\\-262.7578\\-117\\-146.4557\\-260.8047\\-117\\-147.7979\\-258.8516\\-117\\-148.7962\\-256.8984\\-117\\-150.0292\\-254.9453\\-117\\-150.8692\\-252.9922\\-117\\-152.1429\\-251.0391\\-117\\-154.2291\\-247.1328\\-117\\-155.0458\\-245.1797\\-117\\-156.0337\\-243.2266\\-117\\-156.6193\\-241.2734\\-117\\-157.7236\\-239.3203\\-117\\-158.3695\\-237.3672\\-117\\-159.4272\\-235.4141\\-117\\-160.8528\\-231.5078\\-117\\-161.7275\\-229.5547\\-117\\-162.5944\\-225.6484\\-117\\-163.4404\\-223.6953\\-117\\-164.375\\-219.7891\\-117\\-165.6304\\-215.8828\\-117\\-166.362\\-211.9766\\-117\\-167.3133\\-208.0703\\-117\\-167.7653\\-204.1641\\-117\\-167.9629\\-200.2578\\-117\\-167.9746\\-198.3047\\-117\\-167.8467\\-194.3984\\-117\\-167.4395\\-190.4922\\-117\\-166.3935\\-186.5859\\-117\\-165.4309\\-182.6797\\-117\\-164.5603\\-180.7266\\-117\\-163.9334\\-178.7734\\-117\\-163.1098\\-176.8203\\-117\\-161.3404\\-172.9141\\-117\\-160.1199\\-170.9609\\-117\\-158.796\\-169.0078\\-117\\-157.586\\-167.0547\\-117\\-156.136\\-165.1016\\-117\\-153.3203\\-161.5082\\-117\\-147.7318\\-155.3359\\-117\\-145.7607\\-153.3828\\-117\\-143.5547\\-150.8368\\-117\\-139.6484\\-146.9809\\-117\\-137.6953\\-145.2448\\-117\\-135.7422\\-143.7895\\-117\\-133.7891\\-141.9582\\-117\\-131.8359\\-140.3199\\-117\\-128.6501\\-137.7578\\-117\\-127.9297\\-137.3\\-117\\-125.9766\\-135.7429\\-117\\-122.0703\\-132.9669\\-117\\-118.1441\\-129.9453\\-117\\-116.2109\\-128.6297\\-117\\-114.2578\\-127.5108\\-117\\-112.3047\\-126.5921\\-117\\-110.3516\\-125.4731\\-117\\-107.6451\\-124.0859\\-117\\-104.4922\\-122.7518\\-117\\-100.5859\\-121.3763\\-117\\-96.67969\\-120.1933\\-117\\-94.72656\\-119.5251\\-117\\-92.77344\\-119.2854\\-117\\-90.82031\\-118.9292\\-117\\-88.86719\\-118.3301\\-117\\-86.91406\\-117.985\\-117\\-79.10156\\-117.355\\-117\\-77.14844\\-116.838\\-117\\-75.19531\\-116.6541\\-117\\-73.24219\\-116.661\\-117\\-71.28906\\-116.7692\\-117\\-67.38281\\-116.754\\-117\\-61.52344\\-117.033\\-117\\-57.61719\\-117.6817\\-117\\-55.66406\\-117.8422\\-117\\-54.32581\\-118.2266\\-117\\-51.75781\\-119.3199\\-117\\-49.80469\\-119.8667\\-117\\-47.85156\\-120.8187\\-117\\-43.94531\\-122.5448\\-117\\-41.44287\\-124.0859\\-117\\-38.08594\\-126.6173\\-117\\-36.13281\\-128.2863\\-117\\-34.17969\\-130.1021\\-117\\-32.44745\\-131.8984\\-117\\-30.27344\\-134.0143\\-117\\-26.77617\\-137.7578\\-117\\-25.24567\\-139.7109\\-117\\-23.60704\\-141.6641\\-117\\-22.18511\\-143.6172\\-117\\-21.06882\\-145.5703\\-117\\-19.79342\\-147.5234\\-117\\-19.04634\\-149.4766\\-117\\-17.87051\\-151.4297\\-117\\-17.10862\\-153.3828\\-117\\-15.98161\\-155.3359\\-117\\-15.34598\\-157.2891\\-117\\-14.42906\\-159.2422\\-117\\-13.87778\\-161.1953\\-117\\-13.10107\\-165.1016\\-117\\-12.50895\\-167.0547\\-117\\-12.07886\\-169.0078\\-117\\-11.81481\\-170.9609\\-117\\-11.1051\\-178.7734\\-117\\-10.5678\\-182.6797\\-117\\-10.35525\\-184.6328\\-117\\-10.2285\\-188.5391\\-117\\-10.33579\\-190.4922\\-117\\-10.93606\\-196.3516\\-117\\-10.81139\\-198.3047\\-117\\-10.28022\\-200.2578\\-117\\-10.05609\\-202.2109\\-117\\-9.808708\\-206.1172\\-117\\-9.573348\\-213.9297\\-117\\-9.569279\\-215.8828\\-117\\-9.683439\\-219.7891\\-117\\-10.0234\\-223.6953\\-117\\-10.2983\\-225.6484\\-117\\-11.18952\\-229.5547\\-117\\-11.80508\\-233.4609\\-117\\-11.92197\\-235.4141\\-117\\-12.19733\\-237.3672\\-117\\-13.22857\\-241.2734\\-117\\-13.89146\\-245.1797\\-117\\-14.30567\\-247.1328\\-117\\-15.15458\\-249.0859\\-117\\-15.7373\\-251.0391\\-117\\-16.43997\\-252.9922\\-117\\-17.37144\\-254.9453\\-117\\-17.90926\\-256.8984\\-117\\-18.9627\\-258.8516\\-117\\-19.50758\\-260.8047\\-117\\-20.15708\\-262.7578\\-117\\-21.25\\-264.7109\\-117\\-21.99897\\-266.6641\\-117\\-23.27564\\-268.6172\\-117\\-24.22437\\-270.5703\\-117\\-25.33953\\-272.5234\\-117\\-26.20443\\-274.4766\\-117\\-27.3911\\-276.4297\\-117\\-28.73047\\-278.3828\\-117\\-29.91662\\-280.3359\\-117\\-32.84862\\-284.2422\\-117\\-34.17969\\-286.1474\\-117\\-35.82405\\-288.1484\\-117\\-38.08594\\-290.4813\\-117\\-39.51214\\-292.0547\\-117\\-41.99219\\-294.3044\\-117\\-43.94531\\-295.4692\\-117\\-44.55891\\-295.9609\\-117\\-47.85156\\-298.1732\\-117\\-49.80469\\-299.132\\-117\\-51.75781\\-300.2773\\-117\\-55.66406\\-301.516\\-117\\-57.61719\\-302.2581\\-117\\-59.57031\\-302.6466\\-117\\-69.33594\\-303.7344\\-117\\-71.28906\\-303.8256\\-117"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "178"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "60"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "63.47656\\-302.0067\\-117\\61.52344\\-301.4809\\-117\\57.61719\\-300.7699\\-117\\55.66406\\-300.3372\\-117\\53.71094\\-299.4451\\-117\\51.75781\\-298.7092\\-117\\49.80469\\-297.6162\\-117\\47.85156\\-296.7802\\-117\\45.89844\\-295.6305\\-117\\43.94531\\-294.6945\\-117\\40.38509\\-292.0547\\-117\\38.03944\\-290.1016\\-117\\36.13281\\-288.6613\\-117\\33.54011\\-286.1953\\-117\\30.14168\\-282.2891\\-117\\28.32031\\-280.0656\\-117\\25.73568\\-276.4297\\-117\\24.72744\\-274.4766\\-117\\24.41406\\-274.1146\\-117\\22.46094\\-270.874\\-117\\22.20648\\-270.5703\\-117\\21.28566\\-268.6172\\-117\\20.11317\\-266.6641\\-117\\18.83473\\-262.7578\\-117\\17.84589\\-260.8047\\-117\\17.35711\\-258.8516\\-117\\16.54938\\-256.8984\\-117\\15.88907\\-254.9453\\-117\\15.46474\\-252.9922\\-117\\14.27185\\-249.0859\\-117\\13.92315\\-247.1328\\-117\\13.18359\\-241.2734\\-117\\12.36747\\-237.3672\\-117\\12.06236\\-235.4141\\-117\\11.8606\\-233.4609\\-117\\11.46376\\-227.6016\\-117\\11.0338\\-223.6953\\-117\\10.44922\\-219.7891\\-117\\9.727515\\-211.9766\\-117\\9.495856\\-210.0234\\-117\\8.653626\\-206.1172\\-117\\8.363688\\-202.2109\\-117\\8.363688\\-198.3047\\-117\\8.565267\\-194.3984\\-117\\9.441902\\-190.4922\\-117\\9.654432\\-188.5391\\-117\\10.14245\\-180.7266\\-117\\10.47165\\-178.7734\\-117\\11.05442\\-176.8203\\-117\\11.43185\\-174.8672\\-117\\11.84353\\-170.9609\\-117\\12.1844\\-169.0078\\-117\\12.82401\\-167.0547\\-117\\13.34429\\-165.1016\\-117\\14.17894\\-161.1953\\-117\\15.13365\\-159.2422\\-117\\15.89477\\-157.2891\\-117\\17.16383\\-155.3359\\-117\\18.02147\\-153.3828\\-117\\19.34735\\-151.4297\\-117\\20.50781\\-149.4872\\-117\\21.96296\\-147.5234\\-117\\26.36719\\-142.7119\\-117\\30.27344\\-138.9888\\-117\\34.17969\\-135.4219\\-117\\36.13281\\-134.0372\\-117\\38.92744\\-131.8984\\-117\\41.99219\\-129.8255\\-117\\45.18943\\-127.9922\\-117\\45.89844\\-127.4993\\-117\\47.85156\\-126.5959\\-117\\49.80469\\-125.4417\\-117\\51.75781\\-124.7151\\-117\\53.71094\\-123.7847\\-117\\55.66406\\-123.017\\-117\\61.52344\\-120.885\\-117\\63.47656\\-120.421\\-117\\65.42969\\-119.6137\\-117\\69.33594\\-118.9895\\-117\\71.28906\\-118.1698\\-117\\73.24219\\-117.8668\\-117\\77.14844\\-117.5476\\-117\\81.05469\\-116.9652\\-117\\84.96094\\-116.7823\\-117\\88.86719\\-116.7688\\-117\\94.72656\\-116.9802\\-117\\98.63281\\-117.5356\\-117\\102.5391\\-117.8541\\-117\\104.4922\\-118.1704\\-117\\106.4453\\-119.0058\\-117\\108.3984\\-119.3038\\-117\\110.3516\\-119.7595\\-117\\112.3047\\-120.595\\-117\\114.2578\\-121.1143\\-117\\116.2109\\-122.0569\\-117\\118.1641\\-123.1488\\-117\\120.1172\\-123.8906\\-117\\122.0703\\-125.2871\\-117\\123.3895\\-126.0391\\-117\\127.9297\\-129.0429\\-117\\129.8828\\-130.5724\\-117\\131.8359\\-132.2621\\-117\\133.7891\\-133.3273\\-117\\135.7422\\-135.0057\\-117\\138.6426\\-137.7578\\-117\\141.6016\\-140.4685\\-117\\145.5078\\-144.3125\\-117\\147.1804\\-145.5703\\-117\\149.4141\\-147.849\\-117\\151.3672\\-149.998\\-117\\152.4595\\-151.4297\\-117\\154.1461\\-153.3828\\-117\\155.5733\\-155.3359\\-117\\156.5686\\-157.2891\\-117\\157.8839\\-159.2422\\-117\\160.0691\\-163.1484\\-117\\161.9204\\-167.0547\\-117\\162.4455\\-169.0078\\-117\\163.3599\\-170.9609\\-117\\163.9664\\-172.9141\\-117\\164.425\\-174.8672\\-117\\165.2385\\-176.8203\\-117\\165.7374\\-178.7734\\-117\\166.4167\\-182.6797\\-117\\167.1805\\-186.5859\\-117\\167.4338\\-188.5391\\-117\\167.7145\\-192.4453\\-117\\167.8994\\-198.3047\\-117\\167.9225\\-204.1641\\-117\\167.7907\\-210.0234\\-117\\167.5698\\-213.9297\\-117\\167.1276\\-217.8359\\-117\\166.3925\\-221.7422\\-117\\165.7728\\-225.6484\\-117\\165.332\\-227.6016\\-117\\164.585\\-229.5547\\-117\\163.7464\\-233.4609\\-117\\162.3428\\-237.3672\\-117\\161.9177\\-239.3203\\-117\\161.1407\\-241.2734\\-117\\160.2159\\-243.2266\\-117\\159.3959\\-245.1797\\-117\\158.2553\\-247.1328\\-117\\157.3073\\-249.0859\\-117\\155.2734\\-252.9565\\-117\\154.1199\\-254.9453\\-117\\152.7092\\-256.8984\\-117\\149.4141\\-261.8249\\-117\\145.6163\\-266.6641\\-117\\143.8779\\-268.6172\\-117\\142.2905\\-270.5703\\-117\\140.5119\\-272.5234\\-117\\134.8382\\-278.3828\\-117\\131.8359\\-281.2399\\-117\\128.2826\\-284.2422\\-117\\125.7586\\-286.1953\\-117\\122.0703\\-288.9001\\-117\\120.1172\\-290.0142\\-117\\118.1641\\-291.2455\\-117\\116.2109\\-292.668\\-117\\114.2578\\-293.6317\\-117\\112.3047\\-294.7463\\-117\\110.3516\\-295.3776\\-117\\108.3984\\-296.4201\\-117\\106.4453\\-297.0287\\-117\\102.5391\\-298.6984\\-117\\100.5859\\-299.287\\-117\\98.63281\\-300.1079\\-117\\96.67969\\-300.6153\\-117\\92.77344\\-301.2799\\-117\\88.86719\\-302.1505\\-117\\86.91406\\-302.4101\\-117\\84.96094\\-302.5692\\-117\\81.05469\\-302.7638\\-117\\77.14844\\-302.8344\\-117\\73.24219\\-302.8185\\-117\\69.33594\\-302.7065\\-117\\65.42969\\-302.3793\\-117"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002359"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "182"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.86719\\-302.234\\-115\\-92.77344\\-301.2092\\-115\\-96.67969\\-300.4157\\-115\\-98.63281\\-299.6145\\-115\\-102.5391\\-298.2502\\-115\\-104.4922\\-297.2002\\-115\\-106.4453\\-296.5614\\-115\\-108.3984\\-295.4361\\-115\\-110.3516\\-294.748\\-115\\-112.3047\\-293.5419\\-115\\-114.2578\\-292.5104\\-115\\-117.6427\\-290.1016\\-115\\-118.1641\\-289.6621\\-115\\-120.1172\\-288.667\\-115\\-122.0703\\-287.1346\\-115\\-125.9766\\-283.7505\\-115\\-127.9297\\-282.2975\\-115\\-129.8828\\-280.5861\\-115\\-132.0538\\-278.3828\\-115\\-134.112\\-276.4297\\-115\\-135.9844\\-274.4766\\-115\\-137.4283\\-272.5234\\-115\\-140.8065\\-268.6172\\-115\\-142.3815\\-266.6641\\-115\\-144.9023\\-262.7578\\-115\\-146.4212\\-260.8047\\-115\\-147.731\\-258.8516\\-115\\-148.7608\\-256.8984\\-115\\-150.0077\\-254.9453\\-115\\-150.8246\\-252.9922\\-115\\-152.118\\-251.0391\\-115\\-154.1953\\-247.1328\\-115\\-155.0184\\-245.1797\\-115\\-156.0136\\-243.2266\\-115\\-156.6068\\-241.2734\\-115\\-157.697\\-239.3203\\-115\\-158.3739\\-237.3672\\-115\\-159.4272\\-235.4141\\-115\\-160.8646\\-231.5078\\-115\\-161.7314\\-229.5547\\-115\\-162.6275\\-225.6484\\-115\\-163.4961\\-223.6953\\-115\\-164.4244\\-219.7891\\-115\\-165.1476\\-217.8359\\-115\\-165.7059\\-215.8828\\-115\\-166.4709\\-211.9766\\-115\\-167.4017\\-208.0703\\-115\\-167.653\\-206.1172\\-115\\-167.9629\\-202.2109\\-115\\-168.0462\\-198.3047\\-115\\-167.9513\\-194.3984\\-115\\-167.6213\\-190.4922\\-115\\-167.2683\\-188.5391\\-115\\-166.6534\\-186.5859\\-115\\-165.721\\-182.6797\\-115\\-165.0467\\-180.7266\\-115\\-164.2158\\-178.7734\\-115\\-163.5963\\-176.8203\\-115\\-162.5502\\-174.8672\\-115\\-161.8472\\-172.9141\\-115\\-160.6761\\-170.9609\\-115\\-159.6746\\-169.0078\\-115\\-158.2344\\-167.0547\\-115\\-155.7166\\-163.1484\\-115\\-153.3203\\-159.8966\\-115\\-147.8202\\-153.3828\\-115\\-146.3137\\-151.4297\\-115\\-143.5547\\-148.1783\\-115\\-141.0656\\-145.5703\\-115\\-138.9348\\-143.6172\\-115\\-137.6953\\-142.3281\\-115\\-135.7422\\-140.5002\\-115\\-131.8359\\-137.1028\\-115\\-130.0007\\-135.8047\\-115\\-127.5984\\-133.8516\\-115\\-124.0234\\-131.1766\\-115\\-120.1172\\-127.8387\\-115\\-116.2109\\-125.3132\\-115\\-114.2578\\-124.4313\\-115\\-112.3047\\-123.1094\\-115\\-108.3984\\-121.2841\\-115\\-105.8919\\-120.1797\\-115\\-102.5391\\-118.9678\\-115\\-100.5859\\-118.4501\\-115\\-98.63281\\-117.5647\\-115\\-96.67969\\-117.145\\-115\\-94.72656\\-116.8573\\-115\\-92.77344\\-116.076\\-115\\-90.82031\\-115.7379\\-115\\-84.96094\\-114.991\\-115\\-83.00781\\-114.6012\\-115\\-80.56641\\-114.3203\\-115\\-77.14844\\-114.1339\\-115\\-71.28906\\-113.9376\\-115\\-67.38281\\-113.696\\-115\\-63.47656\\-114.0712\\-115\\-61.52344\\-114.1143\\-115\\-59.57031\\-114.2734\\-115\\-57.61719\\-114.6766\\-115\\-55.66406\\-115.2352\\-115\\-53.71094\\-115.6403\\-115\\-49.80469\\-117.0526\\-115\\-47.85156\\-117.5719\\-115\\-45.89844\\-118.4862\\-115\\-43.94531\\-119.1177\\-115\\-41.99219\\-120.1378\\-115\\-40.03906\\-121.3385\\-115\\-38.08594\\-122.7304\\-115\\-34.47896\\-126.0391\\-115\\-32.22656\\-128.5205\\-115\\-30.27344\\-130.8501\\-115\\-28.12704\\-133.8516\\-115\\-26.36719\\-136.2116\\-115\\-22.46094\\-141.8305\\-115\\-20.14923\\-145.5703\\-115\\-19.29209\\-147.5234\\-115\\-18.23815\\-149.4766\\-115\\-17.44948\\-151.4297\\-115\\-16.42336\\-153.3828\\-115\\-14.88196\\-157.2891\\-115\\-14.05374\\-159.2422\\-115\\-13.2393\\-163.1484\\-115\\-12.17491\\-167.0547\\-115\\-11.90396\\-169.0078\\-115\\-11.12888\\-176.8203\\-115\\-10.4831\\-182.6797\\-115\\-10.31681\\-184.6328\\-115\\-10.26257\\-186.5859\\-115\\-10.26257\\-190.4922\\-115\\-10.35525\\-192.4453\\-115\\-10.66142\\-196.3516\\-115\\-10.44922\\-198.3047\\-115\\-10.13513\\-200.2578\\-115\\-9.765625\\-204.1641\\-115\\-9.544614\\-210.0234\\-115\\-9.357766\\-213.9297\\-115\\-9.324407\\-215.8828\\-115\\-9.44553\\-219.7891\\-115\\-10.0591\\-225.6484\\-115\\-10.3752\\-227.6016\\-115\\-11.3445\\-231.5078\\-115\\-11.61791\\-233.4609\\-115\\-12.04227\\-237.3672\\-115\\-12.4566\\-239.3203\\-115\\-13.09543\\-241.2734\\-115\\-14.19724\\-247.1328\\-115\\-15.04536\\-249.0859\\-115\\-16.31974\\-252.9922\\-115\\-17.32086\\-254.9453\\-115\\-17.85399\\-256.8984\\-115\\-18.89167\\-258.8516\\-115\\-20.11855\\-262.7578\\-115\\-21.20937\\-264.7109\\-115\\-21.98132\\-266.6641\\-115\\-23.26931\\-268.6172\\-115\\-24.1855\\-270.5703\\-115\\-25.33953\\-272.5234\\-115\\-26.17645\\-274.4766\\-115\\-27.37926\\-276.4297\\-115\\-28.69642\\-278.3828\\-115\\-29.89641\\-280.3359\\-115\\-32.83524\\-284.2422\\-115\\-34.17969\\-286.1479\\-115\\-35.82176\\-288.1484\\-115\\-38.08594\\-290.4688\\-115\\-39.5436\\-292.0547\\-115\\-41.99219\\-294.2372\\-115\\-43.94531\\-295.4214\\-115\\-45.89844\\-296.823\\-115\\-47.85156\\-298.0757\\-115\\-49.80469\\-299.0672\\-115\\-51.75781\\-300.1859\\-115\\-53.71094\\-300.8671\\-115\\-55.66406\\-301.4066\\-115\\-57.61719\\-302.1646\\-115\\-59.57031\\-302.5838\\-115\\-67.38281\\-303.4081\\-115\\-69.33594\\-303.5796\\-115\\-73.24219\\-303.6608\\-115\\-75.19531\\-303.5541\\-115\\-84.96094\\-302.7527\\-115\\-86.91406\\-302.5646\\-115"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002359"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "180"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "62"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "63.47656\\-301.95\\-115\\61.52344\\-301.4447\\-115\\57.61719\\-300.7534\\-115\\55.66406\\-300.2964\\-115\\53.71094\\-299.3913\\-115\\51.75781\\-298.6724\\-115\\49.80469\\-297.5706\\-115\\47.85156\\-296.7345\\-115\\45.89844\\-295.5775\\-115\\43.94531\\-294.6567\\-115\\40.44028\\-292.0547\\-115\\38.07655\\-290.1016\\-115\\36.13281\\-288.6577\\-115\\33.54011\\-286.1953\\-115\\30.12734\\-282.2891\\-115\\28.32031\\-280.0808\\-115\\25.73568\\-276.4297\\-115\\24.72744\\-274.4766\\-115\\24.41406\\-274.1146\\-115\\22.46094\\-270.8458\\-115\\21.29021\\-268.6172\\-115\\20.11317\\-266.6641\\-115\\18.84694\\-262.7578\\-115\\17.85942\\-260.8047\\-115\\17.38383\\-258.8516\\-115\\15.91546\\-254.9453\\-115\\15.52586\\-252.9922\\-115\\15.02455\\-251.0391\\-115\\14.30339\\-249.0859\\-115\\13.95742\\-247.1328\\-115\\13.22857\\-241.2734\\-115\\12.44213\\-237.3672\\-115\\12.10814\\-235.4141\\-115\\11.89076\\-233.4609\\-115\\11.64165\\-229.5547\\-115\\11.3246\\-225.6484\\-115\\11.0919\\-223.6953\\-115\\10.4947\\-219.7891\\-115\\9.939341\\-213.9297\\-115\\9.45638\\-210.0234\\-115\\8.589623\\-206.1172\\-115\\8.31822\\-202.2109\\-115\\8.280793\\-198.3047\\-115\\8.452972\\-194.3984\\-115\\9.354441\\-190.4922\\-115\\9.57532\\-188.5391\\-115\\10.02081\\-180.7266\\-115\\10.33579\\-178.7734\\-115\\10.88066\\-176.8203\\-115\\11.31283\\-174.8672\\-115\\11.766\\-170.9609\\-115\\12.05842\\-169.0078\\-115\\13.22266\\-165.1016\\-115\\14.0722\\-161.1953\\-115\\15.75934\\-157.2891\\-115\\16.93157\\-155.3359\\-115\\17.84498\\-153.3828\\-115\\19.18154\\-151.4297\\-115\\20.17032\\-149.4766\\-115\\21.67844\\-147.5234\\-115\\25.30354\\-143.6172\\-115\\26.36719\\-142.2256\\-115\\30.81869\\-137.7578\\-115\\34.17969\\-134.2885\\-115\\36.13281\\-132.5465\\-115\\38.08594\\-130.9128\\-115\\39.42558\\-129.9453\\-115\\41.99219\\-127.7969\\-115\\43.94531\\-126.7227\\-115\\45.89844\\-125.1146\\-115\\47.85156\\-123.7083\\-115\\49.80469\\-122.8355\\-115\\51.75781\\-121.651\\-115\\53.71094\\-120.8352\\-115\\55.66406\\-120.1339\\-115\\57.61719\\-119.1524\\-115\\59.57031\\-118.605\\-115\\61.52344\\-117.6971\\-115\\63.47656\\-117.204\\-115\\65.42969\\-116.8616\\-115\\67.38281\\-116.0325\\-115\\69.33594\\-115.5875\\-115\\71.28906\\-115.3085\\-115\\75.19531\\-114.5609\\-115\\77.28795\\-114.3203\\-115\\81.05469\\-114.0151\\-115\\84.96094\\-113.9124\\-115\\88.86719\\-113.8931\\-115\\94.72656\\-114.0824\\-115\\98.63281\\-114.4194\\-115\\100.5859\\-114.6548\\-115\\102.5391\\-115.1341\\-115\\104.4922\\-115.4066\\-115\\108.1355\\-116.2734\\-115\\110.3516\\-117.1292\\-115\\112.3047\\-117.6136\\-115\\114.2578\\-118.5484\\-115\\116.2109\\-119.3078\\-115\\118.1641\\-120.1695\\-115\\122.0703\\-122.3308\\-115\\124.5209\\-124.0859\\-115\\125.9766\\-124.9626\\-115\\127.9297\\-126.3297\\-115\\129.8828\\-128.0038\\-115\\131.8359\\-129.2655\\-115\\134.8728\\-131.8984\\-115\\137.6953\\-134.4847\\-115\\139.6484\\-136.427\\-115\\142.8199\\-139.7109\\-115\\145.5078\\-142.3703\\-115\\149.4141\\-146.396\\-115\\151.3672\\-148.5248\\-115\\153.6856\\-151.4297\\-115\\155.2734\\-153.7331\\-115\\157.4618\\-157.2891\\-115\\158.4457\\-159.2422\\-115\\159.7457\\-161.1953\\-115\\160.552\\-163.1484\\-115\\161.5936\\-165.1016\\-115\\162.8143\\-169.0078\\-115\\163.6754\\-170.9609\\-115\\164.687\\-174.8672\\-115\\165.4671\\-176.8203\\-115\\165.8783\\-178.7734\\-115\\166.541\\-182.6797\\-115\\167.2778\\-186.5859\\-115\\167.4897\\-188.5391\\-115\\167.7492\\-192.4453\\-115\\167.911\\-198.3047\\-115\\167.9397\\-202.2109\\-115\\167.8826\\-208.0703\\-115\\167.7029\\-211.9766\\-115\\167.4017\\-215.8828\\-115\\167.1419\\-217.8359\\-115\\166.4005\\-221.7422\\-115\\165.779\\-225.6484\\-115\\165.3539\\-227.6016\\-115\\164.5946\\-229.5547\\-115\\163.7389\\-233.4609\\-115\\162.3504\\-237.3672\\-115\\161.9177\\-239.3203\\-115\\161.1407\\-241.2734\\-115\\159.4082\\-245.1797\\-115\\158.2553\\-247.1328\\-115\\157.2932\\-249.0859\\-115\\155.2734\\-252.8863\\-115\\154.0833\\-254.9453\\-115\\152.6755\\-256.8984\\-115\\150.0958\\-260.8047\\-115\\147.4609\\-264.3114\\-115\\145.5454\\-266.6641\\-115\\143.8184\\-268.6172\\-115\\142.2094\\-270.5703\\-115\\140.4381\\-272.5234\\-115\\134.7722\\-278.3828\\-115\\131.8359\\-281.1796\\-115\\127.9297\\-284.4166\\-115\\125.6767\\-286.1953\\-115\\122.0703\\-288.8663\\-115\\120.1172\\-289.9531\\-115\\118.1641\\-291.2057\\-115\\116.2109\\-292.6238\\-115\\114.2578\\-293.5645\\-115\\112.3047\\-294.7141\\-115\\110.3516\\-295.3555\\-115\\108.3984\\-296.3898\\-115\\106.4453\\-296.9959\\-115\\102.5391\\-298.6754\\-115\\100.5859\\-299.2519\\-115\\98.63281\\-300.0569\\-115\\96.67969\\-300.5852\\-115\\92.77344\\-301.2485\\-115\\88.86719\\-302.1126\\-115\\86.91406\\-302.3793\\-115\\84.96094\\-302.5453\\-115\\79.10156\\-302.7969\\-115\\75.19531\\-302.8185\\-115\\71.28906\\-302.758\\-115\\67.38281\\-302.5572\\-115\\65.42969\\-302.3381\\-115"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002358"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "188"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "63"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.86719\\-302.1268\\-113\\-90.82031\\-301.5527\\-113\\-94.72656\\-300.7647\\-113\\-96.67969\\-300.2991\\-113\\-98.63281\\-299.4629\\-113\\-100.5859\\-298.8311\\-113\\-102.5391\\-298.1011\\-113\\-104.4922\\-297.1095\\-113\\-106.4453\\-296.4746\\-113\\-108.3984\\-295.3418\\-113\\-110.3516\\-294.6652\\-113\\-112.3047\\-293.4472\\-113\\-114.2578\\-292.4317\\-113\\-117.5537\\-290.1016\\-113\\-118.1641\\-289.5929\\-113\\-120.1172\\-288.6092\\-113\\-122.0703\\-287.078\\-113\\-125.9766\\-283.6697\\-113\\-127.8302\\-282.2891\\-113\\-129.8828\\-280.4778\\-113\\-131.9391\\-278.3828\\-113\\-133.996\\-276.4297\\-113\\-135.8968\\-274.4766\\-113\\-137.3236\\-272.5234\\-113\\-140.7494\\-268.6172\\-113\\-142.3356\\-266.6641\\-113\\-144.813\\-262.7578\\-113\\-146.3702\\-260.8047\\-113\\-147.6692\\-258.8516\\-113\\-148.7175\\-256.8984\\-113\\-149.9859\\-254.9453\\-113\\-150.7887\\-252.9922\\-113\\-152.0883\\-251.0391\\-113\\-154.1902\\-247.1328\\-113\\-154.9913\\-245.1797\\-113\\-155.9933\\-243.2266\\-113\\-156.5859\\-241.2734\\-113\\-157.6879\\-239.3203\\-113\\-158.357\\-237.3672\\-113\\-159.4035\\-235.4141\\-113\\-160.8646\\-231.5078\\-113\\-161.7314\\-229.5547\\-113\\-162.6723\\-225.6484\\-113\\-163.5489\\-223.6953\\-113\\-164.4718\\-219.7891\\-113\\-165.2261\\-217.8359\\-113\\-165.774\\-215.8828\\-113\\-166.1179\\-213.9297\\-113\\-167.1007\\-210.0234\\-113\\-167.4774\\-208.0703\\-113\\-167.7188\\-206.1172\\-113\\-168.0335\\-202.2109\\-113\\-168.1264\\-198.3047\\-113\\-168.0516\\-194.3984\\-113\\-167.7769\\-190.4922\\-113\\-167.5232\\-188.5391\\-113\\-167.0593\\-186.5859\\-113\\-166.4701\\-184.6328\\-113\\-165.5215\\-180.7266\\-113\\-164.6102\\-178.7734\\-113\\-163.2561\\-174.8672\\-113\\-162.2957\\-172.9141\\-113\\-161.5421\\-170.9609\\-113\\-161.1328\\-170.3688\\-113\\-159.2327\\-167.0547\\-113\\-156.68\\-163.1484\\-113\\-155.6716\\-161.1953\\-113\\-153.3203\\-157.7556\\-113\\-149.9889\\-153.3828\\-113\\-149.4141\\-152.4822\\-113\\-145.5994\\-147.5234\\-113\\-143.9978\\-145.5703\\-113\\-140.4315\\-141.6641\\-113\\-138.3751\\-139.7109\\-113\\-133.7891\\-135.2342\\-113\\-131.8359\\-134.1838\\-113\\-129.2128\\-131.8984\\-113\\-127.9297\\-130.4464\\-113\\-125.9766\\-128.9168\\-113\\-122.0703\\-125.7172\\-113\\-119.8556\\-124.0859\\-113\\-116.2109\\-121.8073\\-113\\-113.1218\\-120.1797\\-113\\-108.3984\\-118.0292\\-113\\-102.5391\\-115.7899\\-113\\-100.5859\\-115.3226\\-113\\-98.63281\\-114.6101\\-113\\-96.67969\\-114.0963\\-113\\-94.72656\\-113.7612\\-113\\-92.77344\\-113.2857\\-113\\-87.10938\\-112.3672\\-113\\-84.96094\\-112.159\\-113\\-81.05469\\-111.9296\\-113\\-79.10156\\-111.584\\-113\\-73.24219\\-111.2389\\-113\\-71.28906\\-111.2279\\-113\\-69.33594\\-111.0108\\-113\\-67.38281\\-110.6648\\-113\\-63.47656\\-111.0609\\-113\\-61.52344\\-111.4536\\-113\\-59.57031\\-111.7418\\-113\\-56.10352\\-112.3672\\-113\\-53.71094\\-112.8716\\-113\\-51.75781\\-113.5479\\-113\\-49.80469\\-114.0178\\-113\\-45.89844\\-115.3579\\-113\\-43.94531\\-115.9707\\-113\\-39.38176\\-118.2266\\-113\\-36.32813\\-120.1797\\-113\\-34.17969\\-121.9169\\-113\\-32.22656\\-123.9666\\-113\\-30.27344\\-126.3245\\-113\\-28.32031\\-128.9404\\-113\\-26.36719\\-132.1091\\-113\\-25.53665\\-133.8516\\-113\\-24.41406\\-135.5924\\-113\\-22.15379\\-139.7109\\-113\\-21.26814\\-141.6641\\-113\\-20.10968\\-143.6172\\-113\\-19.34814\\-145.5703\\-113\\-18.30701\\-147.5234\\-113\\-17.51567\\-149.4766\\-113\\-15.70495\\-153.3828\\-113\\-15.03233\\-155.3359\\-113\\-14.11518\\-157.2891\\-113\\-13.26172\\-161.1953\\-113\\-12.13458\\-165.1016\\-113\\-11.87323\\-167.0547\\-113\\-11.52664\\-170.9609\\-113\\-11.0919\\-174.8672\\-113\\-10.60675\\-178.7734\\-113\\-10.46036\\-180.7266\\-113\\-10.2892\\-184.6328\\-113\\-10.2983\\-188.5391\\-113\\-10.20397\\-192.4453\\-113\\-10.25391\\-196.3516\\-113\\-9.907156\\-202.2109\\-113\\-9.667478\\-204.1641\\-113\\-9.412977\\-208.0703\\-113\\-9.357766\\-210.0234\\-113\\-9.01762\\-213.9297\\-113\\-8.930701\\-215.8828\\-113\\-9.099187\\-219.7891\\-113\\-9.625401\\-223.6953\\-113\\-10.09285\\-227.6016\\-113\\-10.46036\\-229.5547\\-113\\-11.02218\\-231.5078\\-113\\-11.41741\\-233.4609\\-113\\-11.89732\\-237.3672\\-113\\-12.22005\\-239.3203\\-113\\-12.85306\\-241.2734\\-113\\-13.33599\\-243.2266\\-113\\-14.07434\\-247.1328\\-113\\-15.57543\\-251.0391\\-113\\-16.17619\\-252.9922\\-113\\-17.23249\\-254.9453\\-113\\-17.78739\\-256.8984\\-113\\-18.7934\\-258.8516\\-113\\-20.07004\\-262.7578\\-113\\-21.16456\\-264.7109\\-113\\-21.95562\\-266.6641\\-113\\-23.23451\\-268.6172\\-113\\-24.12446\\-270.5703\\-113\\-25.32817\\-272.5234\\-113\\-26.14765\\-274.4766\\-113\\-27.34963\\-276.4297\\-113\\-29.86704\\-280.3359\\-113\\-32.8125\\-284.2422\\-113\\-34.15606\\-286.1953\\-113\\-35.80968\\-288.1484\\-113\\-39.59451\\-292.0547\\-113\\-41.99219\\-294.168\\-113\\-43.94531\\-295.3615\\-113\\-45.89844\\-296.7627\\-113\\-47.85156\\-297.9368\\-113\\-51.42558\\-299.8672\\-113\\-51.75781\\-300.1007\\-113\\-53.71094\\-300.8031\\-113\\-55.66406\\-301.3122\\-113\\-57.61719\\-302.0349\\-113\\-59.57031\\-302.5179\\-113\\-61.52344\\-302.7527\\-113\\-67.38281\\-303.3039\\-113\\-71.28906\\-303.5275\\-113\\-73.24219\\-303.5154\\-113\\-77.14844\\-303.2914\\-113\\-84.96094\\-302.7015\\-113\\-86.91406\\-302.4693\\-113"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002358"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "176"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "64"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "63.47656\\-301.9211\\-113\\61.52344\\-301.4337\\-113\\57.61719\\-300.7359\\-113\\55.66406\\-300.254\\-113\\53.71094\\-299.3516\\-113\\51.75781\\-298.6368\\-113\\49.80469\\-297.5039\\-113\\47.85156\\-296.6989\\-113\\45.89844\\-295.5293\\-113\\43.94531\\-294.631\\-113\\40.47394\\-292.0547\\-113\\38.08594\\-290.0931\\-113\\36.13281\\-288.6472\\-113\\33.54011\\-286.1953\\-113\\30.09796\\-282.2891\\-113\\28.32031\\-280.094\\-113\\25.73568\\-276.4297\\-113\\24.73958\\-274.4766\\-113\\24.41406\\-274.101\\-113\\22.46094\\-270.86\\-113\\22.21853\\-270.5703\\-113\\21.29021\\-268.6172\\-113\\20.12392\\-266.6641\\-113\\18.87084\\-262.7578\\-113\\17.88027\\-260.8047\\-113\\17.41621\\-258.8516\\-113\\15.94543\\-254.9453\\-113\\15.09766\\-251.0391\\-113\\14.33831\\-249.0859\\-113\\13.99158\\-247.1328\\-113\\13.47778\\-243.2266\\-113\\13.28506\\-241.2734\\-113\\12.94663\\-239.3203\\-113\\12.48238\\-237.3672\\-113\\11.91518\\-233.4609\\-113\\11.52449\\-227.6016\\-113\\11.12376\\-223.6953\\-113\\10.74219\\-221.4004\\-113\\10.27135\\-217.8359\\-113\\9.920561\\-213.9297\\-113\\9.41606\\-210.0234\\-113\\8.900036\\-208.0703\\-113\\8.496094\\-206.1172\\-113\\8.327096\\-204.1641\\-113\\8.22078\\-200.2578\\-113\\8.236608\\-198.3047\\-113\\8.4851\\-194.3984\\-113\\9.326461\\-190.4922\\-113\\9.506226\\-188.5391\\-113\\9.89772\\-180.7266\\-113\\10.16488\\-178.7734\\-113\\11.0919\\-174.8672\\-113\\11.40264\\-172.9141\\-113\\11.88427\\-169.0078\\-113\\12.30605\\-167.0547\\-113\\12.98757\\-165.1016\\-113\\13.88239\\-161.1953\\-113\\14.59418\\-159.2422\\-113\\16.60156\\-155.1309\\-113\\18.55469\\-151.7236\\-113\\19.78181\\-149.4766\\-113\\22.46094\\-145.9626\\-113\\24.44022\\-143.6172\\-113\\25.9011\\-141.6641\\-113\\27.66187\\-139.7109\\-113\\30.27344\\-136.5509\\-113\\34.42881\\-131.8984\\-113\\36.12132\\-129.9453\\-113\\37.9348\\-127.9922\\-113\\40.03906\\-125.8763\\-113\\41.99219\\-124.129\\-113\\44.53125\\-122.1328\\-113\\47.85156\\-120.0285\\-113\\49.80469\\-119.109\\-113\\51.75781\\-118.0736\\-113\\55.85395\\-116.2734\\-113\\59.57031\\-114.8994\\-113\\63.47656\\-113.6801\\-113\\67.38281\\-112.7043\\-113\\71.28906\\-111.9108\\-113\\73.24219\\-111.6504\\-113\\79.10156\\-111.0336\\-113\\83.00781\\-110.8656\\-113\\86.91406\\-110.8236\\-113\\90.82031\\-110.897\\-113\\96.67969\\-111.2686\\-113\\98.63281\\-111.4293\\-113\\100.5859\\-111.726\\-113\\104.4922\\-112.4682\\-113\\110.3516\\-114.0963\\-113\\112.3047\\-114.9804\\-113\\114.2578\\-115.5497\\-113\\115.9824\\-116.2734\\-113\\118.1641\\-117.3795\\-113\\122.0703\\-119.5634\\-113\\124.0234\\-120.9007\\-113\\125.9766\\-122.0221\\-113\\127.9297\\-123.4734\\-113\\131.8359\\-126.8798\\-113\\133.5192\\-127.9922\\-113\\135.7069\\-129.9453\\-113\\139.7569\\-133.8516\\-113\\141.2376\\-135.8047\\-113\\142.9543\\-137.7578\\-113\\147.4609\\-142.4119\\-113\\151.87\\-147.5234\\-113\\153.3203\\-149.4871\\-113\\155.9531\\-153.3828\\-113\\156.9595\\-155.3359\\-113\\159.2924\\-159.2422\\-113\\161.2031\\-163.1484\\-113\\161.9672\\-165.1016\\-113\\162.4715\\-167.0547\\-113\\163.2973\\-169.0078\\-113\\163.9176\\-170.9609\\-113\\164.3595\\-172.9141\\-113\\165.6371\\-176.8203\\-113\\166.3097\\-180.7266\\-113\\167.0869\\-184.6328\\-113\\167.5494\\-188.5391\\-113\\167.7907\\-192.4453\\-113\\167.922\\-198.3047\\-113\\167.9513\\-202.2109\\-113\\167.9171\\-206.1172\\-113\\167.8136\\-210.0234\\-113\\167.6099\\-213.9297\\-113\\167.155\\-217.8359\\-113\\166.4201\\-221.7422\\-113\\165.7853\\-225.6484\\-113\\165.3752\\-227.6016\\-113\\164.6369\\-229.5547\\-113\\163.7313\\-233.4609\\-113\\162.3474\\-237.3672\\-113\\161.9177\\-239.3203\\-113\\161.1716\\-241.2734\\-113\\160.2335\\-243.2266\\-113\\159.4204\\-245.1797\\-113\\158.2553\\-247.1328\\-113\\157.2787\\-249.0859\\-113\\155.2734\\-252.8446\\-113\\154.071\\-254.9453\\-113\\151.2806\\-258.8516\\-113\\150.0714\\-260.8047\\-113\\147.4609\\-264.2356\\-113\\145.5078\\-266.6216\\-113\\143.5547\\-268.8485\\-113\\142.1526\\-270.5703\\-113\\140.3748\\-272.5234\\-113\\137.6953\\-275.3229\\-113\\134.692\\-278.3828\\-113\\131.8359\\-281.1132\\-113\\129.8828\\-282.7598\\-113\\125.5676\\-286.1953\\-113\\122.0703\\-288.8235\\-113\\120.1172\\-289.882\\-113\\118.1641\\-291.1436\\-113\\116.2109\\-292.5522\\-113\\114.2578\\-293.5008\\-113\\112.3047\\-294.6609\\-113\\110.3516\\-295.312\\-113\\108.3984\\-296.3339\\-113\\106.4453\\-296.9746\\-113\\104.4922\\-297.7319\\-113\\102.5391\\-298.6334\\-113\\100.5859\\-299.1996\\-113\\98.63281\\-299.9773\\-113\\96.67969\\-300.5357\\-113\\90.82031\\-301.5671\\-113\\88.86719\\-302.0479\\-113\\86.91406\\-302.325\\-113\\83.00781\\-302.6351\\-113\\79.10156\\-302.7694\\-113\\75.19531\\-302.8023\\-113\\71.28906\\-302.7469\\-113\\67.38281\\-302.5179\\-113\\65.42969\\-302.3053\\-113"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002357"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "196"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "65"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.86719\\-301.9931\\-111\\-90.82031\\-301.4421\\-111\\-94.72656\\-300.6791\\-111\\-96.67969\\-300.2014\\-111\\-98.63281\\-299.3201\\-111\\-100.5859\\-298.7304\\-111\\-104.4922\\-297.0139\\-111\\-106.4453\\-296.3556\\-111\\-108.3984\\-295.2581\\-111\\-110.3516\\-294.5834\\-111\\-112.3047\\-293.3433\\-111\\-114.2578\\-292.3252\\-111\\-117.4501\\-290.1016\\-111\\-118.1641\\-289.5236\\-111\\-120.1172\\-288.4977\\-111\\-122.0703\\-287.0081\\-111\\-125.9766\\-283.5757\\-111\\-127.6768\\-282.2891\\-111\\-129.8828\\-280.3273\\-111\\-131.8359\\-278.2918\\-111\\-133.8331\\-276.4297\\-111\\-135.7507\\-274.4766\\-111\\-137.2174\\-272.5234\\-111\\-140.6683\\-268.6172\\-111\\-142.2721\\-266.6641\\-111\\-143.4186\\-264.7109\\-111\\-144.7427\\-262.7578\\-111\\-146.3063\\-260.8047\\-111\\-147.6151\\-258.8516\\-111\\-148.6703\\-256.8984\\-111\\-149.9353\\-254.9453\\-111\\-150.7385\\-252.9922\\-111\\-152.0623\\-251.0391\\-111\\-153.0343\\-249.0859\\-111\\-154.1566\\-247.1328\\-111\\-154.9527\\-245.1797\\-111\\-155.9854\\-243.2266\\-111\\-156.5571\\-241.2734\\-111\\-157.6504\\-239.3203\\-111\\-158.3464\\-237.3672\\-111\\-159.3791\\-235.4141\\-111\\-160.8412\\-231.5078\\-111\\-161.7525\\-229.5547\\-111\\-162.6967\\-225.6484\\-111\\-163.5773\\-223.6953\\-111\\-164.5178\\-219.7891\\-111\\-165.3096\\-217.8359\\-111\\-165.8316\\-215.8828\\-111\\-166.187\\-213.9297\\-111\\-167.193\\-210.0234\\-111\\-167.5442\\-208.0703\\-111\\-167.7838\\-206.1172\\-111\\-168.099\\-202.2109\\-111\\-168.2144\\-198.3047\\-111\\-168.158\\-194.3984\\-111\\-168.07\\-192.4453\\-111\\-167.7202\\-188.5391\\-111\\-167.4198\\-186.5859\\-111\\-166.3314\\-182.6797\\-111\\-165.8936\\-180.7266\\-111\\-165.3152\\-178.7734\\-111\\-164.4482\\-176.8203\\-111\\-163.8429\\-174.8672\\-111\\-163.0859\\-173.0654\\-111\\-161.236\\-169.0078\\-111\\-159.1797\\-165.231\\-111\\-157.9458\\-163.1484\\-111\\-155.7969\\-159.2422\\-111\\-153.3647\\-155.3359\\-111\\-150.6194\\-151.4297\\-111\\-149.0581\\-149.4766\\-111\\-148.0772\\-147.5234\\-111\\-146.4015\\-145.5703\\-111\\-144.5652\\-143.6172\\-111\\-143.5547\\-141.957\\-111\\-139.7461\\-137.7578\\-111\\-135.7422\\-133.7927\\-111\\-133.7891\\-132.8468\\-111\\-131.8359\\-132.2598\\-111\\-131.5044\\-131.8984\\-111\\-131.485\\-129.9453\\-111\\-129.1351\\-127.9922\\-111\\-127.9297\\-127.1155\\-111\\-124.0234\\-123.7683\\-111\\-121.6384\\-122.1328\\-111\\-120.1172\\-121.1911\\-111\\-118.1641\\-120.215\\-111\\-115.0278\\-118.2266\\-111\\-112.3047\\-116.8883\\-111\\-108.3984\\-115.1962\\-111\\-106.4453\\-114.5916\\-111\\-104.4922\\-113.7138\\-111\\-102.5391\\-113.2793\\-111\\-100.5859\\-113.0454\\-111\\-98.63281\\-111.9422\\-111\\-94.72656\\-111.5203\\-111\\-92.77344\\-110.6525\\-111\\-90.82031\\-110.3098\\-111\\-84.96094\\-109.7874\\-111\\-79.10156\\-109.0627\\-111\\-75.19531\\-108.8112\\-111\\-71.28906\\-108.8496\\-111\\-67.38281\\-108.7577\\-111\\-65.42969\\-108.7993\\-111\\-61.52344\\-109.1027\\-111\\-59.57031\\-109.3857\\-111\\-57.61719\\-109.7874\\-111\\-55.66406\\-109.9791\\-111\\-53.71094\\-110.3279\\-111\\-51.75781\\-111.1864\\-111\\-49.80469\\-111.6447\\-111\\-47.85156\\-111.9565\\-111\\-45.89844\\-112.7512\\-111\\-41.99219\\-113.9763\\-111\\-38.08594\\-115.9722\\-111\\-36.13281\\-117.492\\-111\\-34.74935\\-118.2266\\-111\\-32.22656\\-120.4727\\-111\\-30.49207\\-122.1328\\-111\\-28.32031\\-124.7429\\-111\\-27.57772\\-126.0391\\-111\\-26.05252\\-127.9922\\-111\\-25.23226\\-129.9453\\-111\\-23.89152\\-131.8984\\-111\\-23.07722\\-133.8516\\-111\\-22.46094\\-134.8754\\-111\\-21.01452\\-137.7578\\-111\\-20.19133\\-139.7109\\-111\\-19.47428\\-141.6641\\-111\\-18.94039\\-143.6172\\-111\\-17.91561\\-145.5703\\-111\\-17.26423\\-147.5234\\-111\\-16.33453\\-149.4766\\-111\\-14.85443\\-153.3828\\-111\\-14.02638\\-155.3359\\-111\\-13.05241\\-159.2422\\-111\\-12.42566\\-161.1953\\-111\\-12.01831\\-163.1484\\-111\\-11.76813\\-165.1016\\-111\\-11.17265\\-170.9609\\-111\\-10.55519\\-174.8672\\-111\\-10.34546\\-176.8203\\-111\\-10.17391\\-180.7266\\-111\\-10.08235\\-184.6328\\-111\\-10.09648\\-188.5391\\-111\\-9.944898\\-200.2578\\-111\\-9.813262\\-202.2109\\-111\\-9.045323\\-210.0234\\-111\\-8.679746\\-211.9766\\-111\\-8.478938\\-213.9297\\-111\\-8.503402\\-217.8359\\-111\\-8.600725\\-219.7891\\-111\\-9.602013\\-225.6484\\-111\\-10.08941\\-229.5547\\-111\\-10.4831\\-231.5078\\-111\\-11.08332\\-233.4609\\-111\\-11.45089\\-235.4141\\-111\\-12.03824\\-239.3203\\-111\\-12.52254\\-241.2734\\-111\\-13.19019\\-243.2266\\-111\\-13.94924\\-247.1328\\-111\\-14.58083\\-249.0859\\-111\\-15.44319\\-251.0391\\-111\\-16.02872\\-252.9922\\-111\\-17.09883\\-254.9453\\-111\\-17.6976\\-256.8984\\-111\\-18.625\\-258.8516\\-111\\-19.40104\\-260.8047\\-111\\-19.98047\\-262.7578\\-111\\-21.09375\\-264.7109\\-111\\-21.89265\\-266.6641\\-111\\-23.16655\\-268.6172\\-111\\-24.05599\\-270.5703\\-111\\-25.30031\\-272.5234\\-111\\-26.10627\\-274.4766\\-111\\-29.82045\\-280.3359\\-111\\-32.78556\\-284.2422\\-111\\-34.12456\\-286.1953\\-111\\-36.13281\\-288.5099\\-111\\-38.08594\\-290.4219\\-111\\-39.63216\\-292.0547\\-111\\-41.99219\\-294.0938\\-111\\-43.94531\\-295.3209\\-111\\-45.89844\\-296.707\\-111\\-49.80469\\-298.9333\\-111\\-51.75781\\-299.993\\-111\\-53.71094\\-300.7397\\-111\\-55.66406\\-301.2357\\-111\\-57.61719\\-301.9063\\-111\\-59.57031\\-302.4315\\-111\\-61.52344\\-302.7065\\-111\\-67.38281\\-303.2043\\-111\\-71.28906\\-303.3973\\-111\\-75.19531\\-303.3203\\-111\\-84.96094\\-302.6418\\-111\\-86.91406\\-302.3884\\-111"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002357"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "184"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "66"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "63.47656\\-301.9211\\-111\\61.52344\\-301.4337\\-111\\57.61719\\-300.7245\\-111\\55.66406\\-300.2206\\-111\\53.71094\\-299.3049\\-111\\51.75781\\-298.6076\\-111\\49.80469\\-297.4609\\-111\\47.85156\\-296.6737\\-111\\45.89844\\-295.4936\\-111\\43.94531\\-294.6003\\-111\\40.50085\\-292.0547\\-111\\38.08594\\-290.0763\\-111\\36.13281\\-288.6577\\-111\\33.53557\\-286.1953\\-111\\30.08418\\-282.2891\\-111\\28.32031\\-280.1317\\-111\\25.73568\\-276.4297\\-111\\24.72511\\-274.4766\\-111\\24.41406\\-274.1114\\-111\\22.46094\\-270.8625\\-111\\22.21853\\-270.5703\\-111\\21.27878\\-268.6172\\-111\\20.14587\\-266.6641\\-111\\18.88253\\-262.7578\\-111\\17.89455\\-260.8047\\-111\\17.41621\\-258.8516\\-111\\15.95909\\-254.9453\\-111\\15.05055\\-251.0391\\-111\\14.37231\\-249.0859\\-111\\14.00321\\-247.1328\\-111\\13.27237\\-241.2734\\-111\\12.9713\\-239.3203\\-111\\12.46939\\-237.3672\\-111\\11.92882\\-233.4609\\-111\\11.51816\\-227.6016\\-111\\11.06994\\-223.6953\\-111\\10.43822\\-219.7891\\-111\\9.660994\\-211.9766\\-111\\9.319026\\-210.0234\\-111\\8.781433\\-208.0703\\-111\\8.382667\\-206.1172\\-111\\8.244657\\-204.1641\\-111\\8.22078\\-200.2578\\-111\\8.31822\\-198.3047\\-111\\8.666992\\-194.3984\\-111\\9.234619\\-190.4922\\-111\\9.706737\\-180.7266\\-111\\10.22552\\-176.8203\\-111\\10.5678\\-174.8672\\-111\\11.37579\\-170.9609\\-111\\11.96145\\-167.0547\\-111\\12.46769\\-165.1016\\-111\\13.17022\\-163.1484\\-111\\14.13066\\-159.2422\\-111\\15.13046\\-157.2891\\-111\\15.8805\\-155.3359\\-111\\17.0318\\-153.3828\\-111\\17.95226\\-151.4297\\-111\\19.19427\\-149.4766\\-111\\20.13103\\-147.5234\\-111\\24.34957\\-141.6641\\-111\\25.9009\\-139.7109\\-111\\27.13186\\-137.7578\\-111\\30.27344\\-133.3562\\-111\\32.22656\\-130.9494\\-111\\34.17969\\-128.3566\\-111\\36.21557\\-126.0391\\-111\\38.08594\\-123.7651\\-111\\40.03906\\-121.7614\\-111\\41.99219\\-120.064\\-111\\43.94531\\-119.0811\\-111\\45.89844\\-117.5712\\-111\\47.85156\\-116.3725\\-111\\49.80469\\-115.3893\\-111\\53.71094\\-113.7203\\-111\\56.28255\\-112.3672\\-111\\57.61719\\-111.9708\\-111\\59.57031\\-111.7132\\-111\\61.52344\\-110.8955\\-111\\63.47656\\-110.3175\\-111\\65.42969\\-110.0024\\-111\\67.38281\\-109.5822\\-111\\71.28906\\-108.9212\\-111\\73.24219\\-108.7384\\-111\\79.10156\\-108.4054\\-111\\81.05469\\-108.0129\\-111\\84.96094\\-107.9499\\-111\\86.91406\\-108.0129\\-111\\88.86719\\-108.3229\\-111\\90.82031\\-108.3454\\-111\\94.72656\\-108.5395\\-111\\98.63281\\-108.8373\\-111\\100.5859\\-109.0429\\-111\\104.4922\\-109.955\\-111\\106.4453\\-110.347\\-111\\110.3516\\-111.7135\\-111\\112.3047\\-112.2587\\-111\\114.2578\\-113.2461\\-111\\116.2109\\-113.9541\\-111\\118.1641\\-114.8931\\-111\\122.0703\\-117.0489\\-111\\124.0234\\-118.5915\\-111\\125.9766\\-119.5693\\-111\\127.9297\\-121.1183\\-111\\129.8828\\-122.8118\\-111\\131.8218\\-124.0859\\-111\\133.7891\\-125.7451\\-111\\135.7422\\-127.5184\\-111\\138.1051\\-129.9453\\-111\\140.1042\\-131.8984\\-111\\141.9334\\-133.8516\\-111\\143.0966\\-135.8047\\-111\\144.8069\\-137.7578\\-111\\146.7104\\-139.7109\\-111\\148.4536\\-141.6641\\-111\\151.5732\\-145.5703\\-111\\155.6983\\-151.4297\\-111\\156.6349\\-153.3828\\-111\\157.856\\-155.3359\\-111\\158.8073\\-157.2891\\-111\\159.9573\\-159.2422\\-111\\161.7472\\-163.1484\\-111\\162.2445\\-165.1016\\-111\\162.8531\\-167.0547\\-111\\163.6635\\-169.0078\\-111\\164.6086\\-172.9141\\-111\\165.3752\\-174.8672\\-111\\165.793\\-176.8203\\-111\\166.4333\\-180.7266\\-111\\167.193\\-184.6328\\-111\\167.6099\\-188.5391\\-111\\167.8022\\-192.4453\\-111\\167.9337\\-198.3047\\-111\\167.9456\\-204.1641\\-111\\167.8888\\-208.0703\\-111\\167.6018\\-213.9297\\-111\\167.4434\\-215.8828\\-111\\167.1678\\-217.8359\\-111\\166.4283\\-221.7422\\-111\\165.7914\\-225.6484\\-111\\165.4061\\-227.6016\\-111\\164.6575\\-229.5547\\-111\\163.7538\\-233.4609\\-111\\162.9993\\-235.4141\\-111\\162.3474\\-237.3672\\-111\\161.9248\\-239.3203\\-111\\161.1407\\-241.2734\\-111\\159.3708\\-245.1797\\-111\\158.2548\\-247.1328\\-111\\156.2317\\-251.0391\\-111\\154.0588\\-254.9453\\-111\\151.207\\-258.8516\\-111\\150.0204\\-260.8047\\-111\\148.5497\\-262.7578\\-111\\145.5078\\-266.5246\\-111\\142.0934\\-270.5703\\-111\\140.3137\\-272.5234\\-111\\137.6953\\-275.2506\\-111\\134.6175\\-278.3828\\-111\\131.8359\\-281.0383\\-111\\129.8828\\-282.6725\\-111\\124.0234\\-287.2769\\-111\\122.0703\\-288.7663\\-111\\120.1172\\-289.7905\\-111\\118.1641\\-291.0727\\-111\\116.2109\\-292.4894\\-111\\114.2578\\-293.4352\\-111\\112.3047\\-294.619\\-111\\110.3516\\-295.2616\\-111\\108.3984\\-296.263\\-111\\104.4922\\-297.656\\-111\\102.5391\\-298.5881\\-111\\100.5859\\-299.1456\\-111\\98.63281\\-299.905\\-111\\96.67969\\-300.5008\\-111\\90.82031\\-301.5042\\-111\\88.86719\\-301.9781\\-111\\86.91406\\-302.292\\-111\\83.00781\\-302.6214\\-111\\79.10156\\-302.7469\\-111\\75.19531\\-302.7969\\-111\\71.28906\\-302.7239\\-111\\67.38281\\-302.51\\-111\\65.42969\\-302.2818\\-111"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "193"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "67"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-90.82031\\-301.3386\\-109\\-94.72656\\-300.6067\\-109\\-96.67969\\-300.0569\\-109\\-98.63281\\-299.1954\\-109\\-100.5859\\-298.6312\\-109\\-102.5391\\-297.6788\\-109\\-106.4453\\-296.2122\\-109\\-108.3984\\-295.1664\\-109\\-110.3516\\-294.4795\\-109\\-112.3047\\-293.2345\\-109\\-114.2578\\-292.1494\\-109\\-117.3116\\-290.1016\\-109\\-118.1641\\-289.431\\-109\\-120.1172\\-288.3663\\-109\\-122.0703\\-286.9199\\-109\\-125.9766\\-283.406\\-109\\-127.504\\-282.2891\\-109\\-129.8828\\-280.1342\\-109\\-131.8359\\-278.125\\-109\\-133.6167\\-276.4297\\-109\\-135.7422\\-274.2935\\-109\\-137.0817\\-272.5234\\-109\\-138.7601\\-270.5703\\-109\\-140.5628\\-268.6172\\-109\\-142.1701\\-266.6641\\-109\\-143.2897\\-264.7109\\-109\\-144.6734\\-262.7578\\-109\\-146.2271\\-260.8047\\-109\\-147.5152\\-258.8516\\-109\\-148.6162\\-256.8984\\-109\\-149.882\\-254.9453\\-109\\-150.706\\-252.9922\\-109\\-152.0163\\-251.0391\\-109\\-152.9857\\-249.0859\\-109\\-154.1275\\-247.1328\\-109\\-154.9037\\-245.1797\\-109\\-155.9602\\-243.2266\\-109\\-156.529\\-241.2734\\-109\\-157.6184\\-239.3203\\-109\\-158.3252\\-237.3672\\-109\\-159.3541\\-235.4141\\-109\\-160.8412\\-231.5078\\-109\\-161.7525\\-229.5547\\-109\\-162.7189\\-225.6484\\-109\\-163.5957\\-223.6953\\-109\\-164.5538\\-219.7891\\-109\\-165.3752\\-217.8359\\-109\\-165.8638\\-215.8828\\-109\\-166.2504\\-213.9297\\-109\\-167.2664\\-210.0234\\-109\\-167.6055\\-208.0703\\-109\\-167.8366\\-206.1172\\-109\\-168.1436\\-202.2109\\-109\\-168.2795\\-198.3047\\-109\\-168.2879\\-196.3516\\-109\\-168.1946\\-192.4453\\-109\\-167.8986\\-188.5391\\-109\\-167.6728\\-186.5859\\-109\\-167.3222\\-184.6328\\-109\\-166.7427\\-182.6797\\-109\\-165.7992\\-178.7734\\-109\\-165.1898\\-176.8203\\-109\\-164.3654\\-174.8672\\-109\\-163.7634\\-172.9141\\-109\\-162.8557\\-170.9609\\-109\\-161.2067\\-167.0547\\-109\\-159.2636\\-163.1484\\-109\\-158.1114\\-161.1953\\-109\\-157.2266\\-159.3385\\-109\\-153.9688\\-153.3828\\-109\\-152.6838\\-151.4297\\-109\\-151.1816\\-149.4766\\-109\\-150.1864\\-147.5234\\-109\\-148.5707\\-145.5703\\-109\\-147.4709\\-143.6172\\-109\\-145.5078\\-141.182\\-109\\-143.5547\\-138.9373\\-109\\-141.6016\\-136.8667\\-109\\-139.6484\\-134.6934\\-109\\-136.8064\\-131.8984\\-109\\-135.2081\\-129.9453\\-109\\-133.7891\\-128.8768\\-109\\-131.8359\\-127.0034\\-109\\-128.5761\\-124.0859\\-109\\-126.2455\\-122.1328\\-109\\-124.0234\\-120.7494\\-109\\-122.0703\\-119.364\\-109\\-120.1172\\-118.4374\\-109\\-118.1641\\-117.1896\\-109\\-116.2109\\-116.0948\\-109\\-114.2578\\-115.1785\\-109\\-112.3047\\-114.1231\\-109\\-108.3984\\-112.6569\\-109\\-106.4453\\-111.7129\\-109\\-104.4922\\-111.234\\-109\\-102.3763\\-110.4141\\-109\\-100.5859\\-109.9074\\-109\\-98.63281\\-109.5079\\-109\\-94.72656\\-108.4513\\-109\\-88.86719\\-107.759\\-109\\-86.91406\\-107.5779\\-109\\-84.96094\\-107.2005\\-109\\-83.00781\\-107.0013\\-109\\-75.19531\\-106.4832\\-109\\-73.24219\\-106.4279\\-109\\-69.33594\\-106.6033\\-109\\-65.42969\\-106.6429\\-109\\-61.52344\\-106.8265\\-109\\-57.61719\\-107.2483\\-109\\-51.75781\\-108.34\\-109\\-49.80469\\-109.0627\\-109\\-45.89844\\-109.8756\\-109\\-43.94531\\-110.7777\\-109\\-41.99219\\-111.3619\\-109\\-40.03906\\-112.4009\\-109\\-36.13281\\-114.1893\\-109\\-33.08652\\-116.2734\\-109\\-30.93804\\-118.2266\\-109\\-28.9223\\-120.1797\\-109\\-27.23389\\-122.1328\\-109\\-24.41406\\-126.2275\\-109\\-23.4561\\-127.9922\\-109\\-22.18054\\-129.9453\\-109\\-21.42962\\-131.8984\\-109\\-20.37342\\-133.8516\\-109\\-19.7633\\-135.8047\\-109\\-18.55469\\-138.71\\-109\\-17.55411\\-141.6641\\-109\\-17.12295\\-143.6172\\-109\\-16.27361\\-145.5703\\-109\\-15.17078\\-149.4766\\-109\\-14.34375\\-151.4297\\-109\\-13.28823\\-155.3359\\-109\\-12.07618\\-159.2422\\-109\\-10.99537\\-167.0547\\-109\\-10.39567\\-170.9609\\-109\\-10.19464\\-172.9141\\-109\\-9.947432\\-176.8203\\-109\\-9.683331\\-184.6328\\-109\\-9.641438\\-188.5391\\-109\\-9.66957\\-192.4453\\-109\\-9.755711\\-196.3516\\-109\\-9.706737\\-200.2578\\-109\\-9.610615\\-202.2109\\-109\\-9.136431\\-206.1172\\-109\\-8.200699\\-211.9766\\-109\\-8.025568\\-213.9297\\-109\\-8.07408\\-217.8359\\-109\\-8.151666\\-219.7891\\-109\\-8.354335\\-221.7422\\-109\\-8.679746\\-223.6953\\-109\\-9.203942\\-225.6484\\-109\\-9.543919\\-227.6016\\-109\\-10.10346\\-231.5078\\-109\\-10.4831\\-233.4609\\-109\\-11.15234\\-235.4141\\-109\\-11.62163\\-237.3672\\-109\\-12.21686\\-241.2734\\-109\\-13.00182\\-243.2266\\-109\\-13.82698\\-247.1328\\-109\\-14.3319\\-249.0859\\-109\\-15.28293\\-251.0391\\-109\\-15.90835\\-252.9922\\-109\\-16.87961\\-254.9453\\-109\\-18.41412\\-258.8516\\-109\\-19.34186\\-260.8047\\-109\\-19.8927\\-262.7578\\-109\\-21.01164\\-264.7109\\-109\\-21.81168\\-266.6641\\-109\\-23.08664\\-268.6172\\-109\\-23.97933\\-270.5703\\-109\\-25.27773\\-272.5234\\-109\\-26.05381\\-274.4766\\-109\\-29.7822\\-280.3359\\-109\\-32.77972\\-284.2422\\-109\\-34.10881\\-286.1953\\-109\\-36.13281\\-288.4945\\-109\\-38.08594\\-290.3953\\-109\\-40.03906\\-292.4079\\-109\\-42.04102\\-294.0078\\-109\\-45.89844\\-296.6506\\-109\\-49.80469\\-298.8429\\-109\\-51.79908\\-299.8672\\-109\\-53.71094\\-300.6657\\-109\\-55.66406\\-301.1548\\-109\\-59.57031\\-302.3381\\-109\\-61.52344\\-302.6533\\-109\\-67.38281\\-303.1205\\-109\\-71.28906\\-303.2945\\-109\\-73.24219\\-303.2914\\-109\\-77.14844\\-303.1128\\-109\\-83.00781\\-302.7469\\-109\\-86.91406\\-302.292\\-109"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "184"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "68"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "63.47656\\-301.8906\\-109\\61.52344\\-301.4095\\-109\\57.61719\\-300.7018\\-109\\55.66406\\-300.1862\\-109\\53.71094\\-299.2613\\-109\\51.75781\\-298.5632\\-109\\49.80469\\-297.4195\\-109\\47.85156\\-296.6519\\-109\\45.89844\\-295.4692\\-109\\43.94531\\-294.5649\\-109\\41.99219\\-293.154\\-109\\40.03906\\-291.553\\-109\\36.13281\\-288.6577\\-109\\33.53557\\-286.1953\\-109\\30.09796\\-282.2891\\-109\\28.32031\\-280.1336\\-109\\25.73568\\-276.4297\\-109\\24.72511\\-274.4766\\-109\\24.41406\\-274.1146\\-109\\22.46094\\-270.8625\\-109\\22.21853\\-270.5703\\-109\\21.29021\\-268.6172\\-109\\20.13482\\-266.6641\\-109\\18.88489\\-262.7578\\-109\\17.88737\\-260.8047\\-109\\17.42208\\-258.8516\\-109\\15.95909\\-254.9453\\-109\\15.06519\\-251.0391\\-109\\14.39752\\-249.0859\\-109\\14.00703\\-247.1328\\-109\\13.28125\\-241.2734\\-109\\12.94663\\-239.3203\\-109\\12.48238\\-237.3672\\-109\\12.14718\\-235.4141\\-109\\11.92197\\-233.4609\\-109\\11.66221\\-229.5547\\-109\\11.48135\\-227.6016\\-109\\10.93606\\-223.6953\\-109\\10.53049\\-221.7422\\-109\\10.31681\\-219.7891\\-109\\9.560601\\-211.9766\\-109\\9.134929\\-210.0234\\-109\\8.529975\\-208.0703\\-109\\8.251664\\-206.1172\\-109\\8.114246\\-204.1641\\-109\\8.128773\\-200.2578\\-109\\8.490115\\-194.3984\\-109\\8.827815\\-190.4922\\-109\\8.954216\\-186.5859\\-109\\8.957942\\-184.6328\\-109\\9.077113\\-182.6797\\-109\\9.63294\\-178.7734\\-109\\10.32366\\-172.9141\\-109\\11.33531\\-169.0078\\-109\\11.99434\\-165.1016\\-109\\12.48076\\-163.1484\\-109\\13.20394\\-161.1953\\-109\\14.26787\\-157.2891\\-109\\15.22786\\-155.3359\\-109\\15.97377\\-153.3828\\-109\\17.08623\\-151.4297\\-109\\17.87751\\-149.4766\\-109\\19.09375\\-147.5234\\-109\\20.04688\\-145.5703\\-109\\21.39353\\-143.6172\\-109\\22.35765\\-141.6641\\-109\\23.68164\\-139.7109\\-109\\24.87768\\-137.7578\\-109\\27.08258\\-133.8516\\-109\\28.59775\\-131.8984\\-109\\29.66049\\-129.9453\\-109\\32.79321\\-126.0391\\-109\\34.00578\\-124.0859\\-109\\36.13281\\-121.6227\\-109\\38.08594\\-119.6112\\-109\\39.53552\\-118.2266\\-109\\41.99219\\-116.0971\\-109\\43.94531\\-115.0026\\-109\\45.89844\\-113.6088\\-109\\47.85156\\-112.7499\\-109\\49.80469\\-111.6259\\-109\\51.75781\\-111.1067\\-109\\53.71094\\-110.0625\\-109\\57.61719\\-108.5883\\-109\\61.52344\\-107.7538\\-109\\63.47656\\-107.2432\\-109\\67.38281\\-106.7031\\-109\\71.28906\\-106.2604\\-109\\73.24219\\-105.7924\\-109\\75.19531\\-105.5855\\-109\\81.05469\\-105.3021\\-109\\86.91406\\-105.3652\\-109\\92.77344\\-105.6693\\-109\\94.72656\\-105.8131\\-109\\96.67969\\-106.2787\\-109\\98.87695\\-106.5078\\-109\\102.5391\\-106.991\\-109\\108.3984\\-108.612\\-109\\110.3516\\-109.4035\\-109\\112.3047\\-109.8869\\-109\\114.2578\\-111.0266\\-109\\116.2109\\-111.694\\-109\\122.0703\\-114.7512\\-109\\124.0234\\-115.8304\\-109\\125.9766\\-117.2592\\-109\\127.9297\\-118.8206\\-109\\131.8359\\-121.7403\\-109\\133.7891\\-123.5055\\-109\\137.6953\\-127.3023\\-109\\140.2911\\-129.9453\\-109\\142.0543\\-131.8984\\-109\\143.6719\\-133.8516\\-109\\144.9282\\-135.8047\\-109\\148.3729\\-139.7109\\-109\\149.8631\\-141.6641\\-109\\151.0918\\-143.6172\\-109\\152.6619\\-145.5703\\-109\\154.12\\-147.5234\\-109\\155.3314\\-149.4766\\-109\\156.3622\\-151.4297\\-109\\157.586\\-153.3828\\-109\\158.4848\\-155.3359\\-109\\159.6774\\-157.2891\\-109\\160.4461\\-159.2422\\-109\\161.4654\\-161.1953\\-109\\162.073\\-163.1484\\-109\\162.5383\\-165.1016\\-109\\163.3838\\-167.0547\\-109\\164.3447\\-170.9609\\-109\\165.5932\\-174.8672\\-109\\166.58\\-180.7266\\-109\\167.3002\\-184.6328\\-109\\167.4866\\-186.5859\\-109\\167.7376\\-190.4922\\-109\\167.8816\\-194.3984\\-109\\167.9454\\-198.3047\\-109\\167.9515\\-204.1641\\-109\\167.9002\\-208.0703\\-109\\167.7217\\-211.9766\\-109\\167.4214\\-215.8828\\-109\\167.1805\\-217.8359\\-109\\166.425\\-221.7422\\-109\\165.7914\\-225.6484\\-109\\165.4161\\-227.6016\\-109\\164.668\\-229.5547\\-109\\164.1499\\-231.5078\\-109\\163.7464\\-233.4609\\-109\\162.3474\\-237.3672\\-109\\161.9057\\-239.3203\\-109\\161.1328\\-241.229\\-109\\159.3448\\-245.1797\\-109\\158.2391\\-247.1328\\-109\\156.2195\\-251.0391\\-109\\155.0752\\-252.9922\\-109\\154.0466\\-254.9453\\-109\\152.5378\\-256.8984\\-109\\151.1493\\-258.8516\\-109\\149.9617\\-260.8047\\-109\\146.9075\\-264.7109\\-109\\143.67\\-268.6172\\-109\\139.6484\\-273.1466\\-109\\134.5232\\-278.3828\\-109\\131.8359\\-280.9259\\-109\\127.7738\\-284.2422\\-109\\124.0234\\-287.2087\\-109\\122.0703\\-288.6978\\-109\\120.1172\\-289.6791\\-109\\116.2109\\-292.378\\-109\\114.2578\\-293.3587\\-109\\112.3047\\-294.5446\\-109\\110.3516\\-295.2083\\-109\\108.3984\\-296.1869\\-109\\104.4922\\-297.5596\\-109\\102.5391\\-298.538\\-109\\100.5859\\-299.0807\\-109\\96.67969\\-300.4496\\-109\\94.72656\\-300.8212\\-109\\90.82031\\-301.4311\\-109\\86.91406\\-302.2232\\-109\\83.00781\\-302.591\\-109\\77.14844\\-302.7638\\-109\\71.28906\\-302.7127\\-109\\67.38281\\-302.4898\\-109\\65.42969\\-302.2581\\-109"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "194"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "69"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-302.1761\\-107\\-90.82031\\-301.2256\\-107\\-94.72656\\-300.5239\\-107\\-96.66285\\-299.8672\\-107\\-98.63281\\-299.0934\\-107\\-100.5859\\-298.5244\\-107\\-102.5391\\-297.5116\\-107\\-104.4922\\-296.8543\\-107\\-108.3984\\-295.0989\\-107\\-110.3516\\-294.3404\\-107\\-110.7929\\-294.0078\\-107\\-114.1012\\-292.0547\\-107\\-116.2109\\-290.7467\\-107\\-118.1641\\-289.342\\-107\\-120.1172\\-288.1729\\-107\\-122.0703\\-286.7928\\-107\\-125.9766\\-283.2954\\-107\\-127.3075\\-282.2891\\-107\\-129.4688\\-280.3359\\-107\\-131.3914\\-278.3828\\-107\\-135.7422\\-274.0778\\-107\\-136.8726\\-272.5234\\-107\\-140.4685\\-268.6172\\-107\\-142.0656\\-266.6641\\-107\\-143.1372\\-264.7109\\-107\\-146.1331\\-260.8047\\-107\\-147.4609\\-258.755\\-107\\-149.8117\\-254.9453\\-107\\-150.6747\\-252.9922\\-107\\-151.9603\\-251.0391\\-107\\-152.9257\\-249.0859\\-107\\-154.0843\\-247.1328\\-107\\-154.8814\\-245.1797\\-107\\-155.9309\\-243.2266\\-107\\-156.4897\\-241.2734\\-107\\-157.588\\-239.3203\\-107\\-158.2971\\-237.3672\\-107\\-159.3541\\-235.4141\\-107\\-160.8255\\-231.5078\\-107\\-161.7225\\-229.5547\\-107\\-162.7189\\-225.6484\\-107\\-163.6224\\-223.6953\\-107\\-164.585\\-219.7891\\-107\\-165.426\\-217.8359\\-107\\-166.2954\\-213.9297\\-107\\-167.3242\\-210.0234\\-107\\-167.6607\\-208.0703\\-107\\-168.0452\\-204.1641\\-107\\-168.1824\\-202.2109\\-107\\-168.3751\\-196.3516\\-107\\-168.3093\\-192.4453\\-107\\-168.2021\\-190.4922\\-107\\-167.8583\\-186.5859\\-107\\-167.6086\\-184.6328\\-107\\-167.2567\\-182.6797\\-107\\-166.1987\\-178.7734\\-107\\-165.7538\\-176.8203\\-107\\-165.1476\\-174.8672\\-107\\-164.3261\\-172.9141\\-107\\-163.7666\\-170.9609\\-107\\-162.875\\-169.0078\\-107\\-161.325\\-165.1016\\-107\\-159.5052\\-161.1953\\-107\\-158.418\\-159.2422\\-107\\-157.5835\\-157.2891\\-107\\-156.4716\\-155.3359\\-107\\-155.7213\\-153.3828\\-107\\-152.2859\\-147.5234\\-107\\-150.6143\\-145.5703\\-107\\-149.7116\\-143.6172\\-107\\-148.1761\\-141.6641\\-107\\-145.5078\\-138.011\\-107\\-143.5547\\-135.6148\\-107\\-141.9271\\-133.8516\\-107\\-140.2902\\-131.8984\\-107\\-137.6953\\-129.1182\\-107\\-134.5378\\-126.0391\\-107\\-131.8359\\-123.5434\\-107\\-127.6449\\-120.1797\\-107\\-124.9593\\-118.2266\\-107\\-124.0234\\-117.7001\\-107\\-121.905\\-116.2734\\-107\\-118.1641\\-114.1546\\-107\\-116.2109\\-113.2928\\-107\\-114.5733\\-112.3672\\-107\\-112.3047\\-111.3359\\-107\\-108.3984\\-109.7446\\-107\\-106.4453\\-109.1934\\-107\\-104.4922\\-108.4144\\-107\\-102.5391\\-107.9018\\-107\\-100.5859\\-107.6001\\-107\\-98.63281\\-106.9155\\-107\\-96.67969\\-106.4046\\-107\\-92.77344\\-105.9033\\-107\\-90.82031\\-105.4794\\-107\\-88.86719\\-105.2641\\-107\\-84.96094\\-104.5653\\-107\\-83.00781\\-104.5025\\-107\\-79.10156\\-104.2507\\-107\\-75.19531\\-104.1387\\-107\\-73.24219\\-103.6659\\-107\\-71.28906\\-103.7246\\-107\\-69.33594\\-103.9476\\-107\\-65.42969\\-104.0475\\-107\\-63.47656\\-104.2507\\-107\\-59.22154\\-104.5547\\-107\\-57.61719\\-104.7793\\-107\\-53.71094\\-105.4528\\-107\\-51.75781\\-105.94\\-107\\-48.71545\\-106.5078\\-107\\-45.89844\\-107.3749\\-107\\-43.94531\\-107.8642\\-107\\-42.06543\\-108.4609\\-107\\-38.08594\\-110.1962\\-107\\-34.22852\\-112.3672\\-107\\-32.22656\\-113.7851\\-107\\-30.27344\\-115.3713\\-107\\-28.32031\\-117.2188\\-107\\-25.68742\\-120.1797\\-107\\-24.10419\\-122.1328\\-107\\-22.46094\\-124.7127\\-107\\-21.70139\\-126.0391\\-107\\-20.90774\\-127.9922\\-107\\-19.83964\\-129.9453\\-107\\-19.24272\\-131.8984\\-107\\-18.17057\\-133.8516\\-107\\-16.60156\\-137.9622\\-107\\-16.08297\\-139.7109\\-107\\-15.16281\\-143.6172\\-107\\-14.04693\\-147.5234\\-107\\-13.28402\\-151.4297\\-107\\-12.5921\\-153.3828\\-107\\-11.70706\\-157.2891\\-107\\-11.38286\\-159.2422\\-107\\-10.54275\\-163.1484\\-107\\-10.03928\\-167.0547\\-107\\-9.817295\\-170.9609\\-107\\-9.311124\\-178.7734\\-107\\-8.948038\\-182.6797\\-107\\-8.708294\\-184.6328\\-107\\-8.458647\\-188.5391\\-107\\-8.559718\\-190.4922\\-107\\-8.766352\\-192.4453\\-107\\-9.126045\\-194.3984\\-107\\-9.274194\\-196.3516\\-107\\-9.216707\\-200.2578\\-107\\-9.092134\\-202.2109\\-107\\-8.663293\\-204.1641\\-107\\-8.336829\\-206.1172\\-107\\-7.925638\\-210.0234\\-107\\-7.431239\\-213.9297\\-107\\-7.467049\\-215.8828\\-107\\-7.688959\\-219.7891\\-107\\-8.128447\\-223.6953\\-107\\-8.481019\\-225.6484\\-107\\-9.475447\\-229.5547\\-107\\-10.10665\\-233.4609\\-107\\-11.39904\\-237.3672\\-107\\-11.95427\\-241.2734\\-107\\-13.26712\\-245.1797\\-107\\-14.14461\\-249.0859\\-107\\-15.06255\\-251.0391\\-107\\-15.76803\\-252.9922\\-107\\-17.51677\\-256.8984\\-107\\-18.21588\\-258.8516\\-107\\-19.2752\\-260.8047\\-107\\-19.81738\\-262.7578\\-107\\-20.8945\\-264.7109\\-107\\-21.7272\\-266.6641\\-107\\-22.99194\\-268.6172\\-107\\-23.89849\\-270.5703\\-107\\-25.21255\\-272.5234\\-107\\-25.95564\\-274.4766\\-107\\-27.27096\\-276.4297\\-107\\-28.32031\\-278.1895\\-107\\-29.73485\\-280.3359\\-107\\-32.75986\\-284.2422\\-107\\-34.07813\\-286.1953\\-107\\-36.13281\\-288.5099\\-107\\-40.03906\\-292.3802\\-107\\-42.15337\\-294.0078\\-107\\-45.89844\\-296.5976\\-107\\-47.85156\\-297.5979\\-107\\-49.80469\\-298.7745\\-107\\-53.71094\\-300.601\\-107\\-57.61719\\-301.6206\\-107\\-59.57031\\-302.2476\\-107\\-61.52344\\-302.5838\\-107\\-63.47656\\-302.7804\\-107\\-69.33594\\-303.1477\\-107\\-73.24219\\-303.1958\\-107\\-75.19531\\-303.1282\\-107\\-83.00781\\-302.689\\-107\\-84.96094\\-302.4817\\-107"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "183"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "70"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "61.52344\\-301.3989\\-107\\57.61719\\-300.697\\-107\\55.66406\\-300.1509\\-107\\53.71094\\-299.2258\\-107\\51.75781\\-298.5251\\-107\\49.80469\\-297.3674\\-107\\47.85156\\-296.6255\\-107\\45.89844\\-295.4388\\-107\\43.94531\\-294.5423\\-107\\41.99219\\-293.1491\\-107\\40.03906\\-291.5238\\-107\\36.13281\\-288.6577\\-107\\33.5126\\-286.1953\\-107\\30.08418\\-282.2891\\-107\\28.32031\\-280.0984\\-107\\25.72692\\-276.4297\\-107\\24.73719\\-274.4766\\-107\\24.41406\\-274.1042\\-107\\22.46094\\-270.865\\-107\\22.21853\\-270.5703\\-107\\21.29481\\-268.6172\\-107\\20.12392\\-266.6641\\-107\\18.88489\\-262.7578\\-107\\17.88737\\-260.8047\\-107\\17.42208\\-258.8516\\-107\\15.95909\\-254.9453\\-107\\15.06786\\-251.0391\\-107\\14.38578\\-249.0859\\-107\\14.00703\\-247.1328\\-107\\13.25969\\-241.2734\\-107\\12.49556\\-237.3672\\-107\\11.91518\\-233.4609\\-107\\11.61541\\-229.5547\\-107\\11.10026\\-225.6484\\-107\\10.34546\\-221.7422\\-107\\10.04249\\-217.8359\\-107\\9.296124\\-211.9766\\-107\\8.653626\\-210.0234\\-107\\8.236839\\-208.0703\\-107\\7.868948\\-204.1641\\-107\\7.789386\\-202.2109\\-107\\7.835614\\-198.3047\\-107\\8.006636\\-194.3984\\-107\\8.140042\\-186.5859\\-107\\8.112059\\-184.6328\\-107\\8.197021\\-182.6797\\-107\\8.507097\\-180.7266\\-107\\9.341033\\-176.8203\\-107\\9.812375\\-172.9141\\-107\\10.10742\\-170.9609\\-107\\10.55519\\-169.0078\\-107\\11.12608\\-167.0547\\-107\\12.28956\\-161.1953\\-107\\12.94513\\-159.2422\\-107\\13.98625\\-155.3359\\-107\\16.3762\\-149.4766\\-107\\17.47037\\-147.5234\\-107\\18.27072\\-145.5703\\-107\\19.4556\\-143.6172\\-107\\20.20418\\-141.6641\\-107\\21.31899\\-139.7109\\-107\\22.25494\\-137.7578\\-107\\23.37957\\-135.8047\\-107\\24.34748\\-133.8516\\-107\\25.56529\\-131.8984\\-107\\26.36719\\-130.3076\\-107\\28.32031\\-127.2907\\-107\\30.27344\\-124.5045\\-107\\32.00605\\-122.1328\\-107\\34.17969\\-119.5245\\-107\\36.13281\\-117.3983\\-107\\37.27214\\-116.2734\\-107\\40.03906\\-113.8493\\-107\\41.99219\\-112.2848\\-107\\43.94531\\-110.9865\\-107\\45.89844\\-109.8965\\-107\\49.80469\\-108.032\\-107\\53.53104\\-106.5078\\-107\\55.66406\\-105.793\\-107\\57.61719\\-105.3668\\-107\\61.52344\\-104.3673\\-107\\65.42969\\-103.6942\\-107\\69.33594\\-103.2559\\-107\\71.28906\\-102.9128\\-107\\75.19531\\-102.4759\\-107\\79.10156\\-102.2731\\-107\\86.91406\\-102.5352\\-107\\90.82031\\-103.0077\\-107\\96.67969\\-103.594\\-107\\98.63281\\-104.0086\\-107\\102.1396\\-104.5547\\-107\\104.4922\\-105.1458\\-107\\106.4453\\-105.9015\\-107\\108.3984\\-106.3323\\-107\\110.3516\\-107.2031\\-107\\112.3047\\-107.7394\\-107\\114.2578\\-108.6922\\-107\\116.2109\\-109.3536\\-107\\118.1641\\-110.2081\\-107\\120.1172\\-111.3281\\-107\\122.0703\\-112.5771\\-107\\124.0234\\-113.648\\-107\\127.9833\\-116.2734\\-107\\129.8828\\-117.7508\\-107\\133.7891\\-121.25\\-107\\135.7422\\-123.1014\\-107\\138.5079\\-126.0391\\-107\\140.4973\\-127.9922\\-107\\142.2203\\-129.9453\\-107\\143.7927\\-131.8984\\-107\\145.208\\-133.8516\\-107\\148.3652\\-137.7578\\-107\\149.7857\\-139.7109\\-107\\151.3672\\-142.0528\\-107\\153.8928\\-145.5703\\-107\\155.2734\\-147.8336\\-107\\157.2266\\-151.4409\\-107\\158.2204\\-153.3828\\-107\\159.3791\\-155.3359\\-107\\160.2019\\-157.2891\\-107\\161.1328\\-159.2574\\-107\\161.908\\-161.1953\\-107\\162.3182\\-163.1484\\-107\\163.7198\\-167.0547\\-107\\164.6369\\-170.9609\\-107\\165.3539\\-172.9141\\-107\\165.7638\\-174.8672\\-107\\166.3925\\-178.7734\\-107\\167.1143\\-182.6797\\-107\\167.5408\\-186.5859\\-107\\167.8416\\-192.4453\\-107\\167.9397\\-196.3516\\-107\\167.9804\\-200.2578\\-107\\167.9002\\-208.0703\\-107\\167.6099\\-213.9297\\-107\\167.1678\\-217.8359\\-107\\166.425\\-221.7422\\-107\\165.7953\\-225.6484\\-107\\165.4161\\-227.6016\\-107\\164.655\\-229.5547\\-107\\164.1452\\-231.5078\\-107\\163.7389\\-233.4609\\-107\\162.9697\\-235.4141\\-107\\162.3277\\-237.3672\\-107\\161.8863\\-239.3203\\-107\\161.1328\\-241.1423\\-107\\159.3436\\-245.1797\\-107\\158.2135\\-247.1328\\-107\\156.1886\\-251.0391\\-107\\154.0064\\-254.9453\\-107\\151.0808\\-258.8516\\-107\\149.9256\\-260.8047\\-107\\148.431\\-262.7578\\-107\\141.9096\\-270.5703\\-107\\139.6484\\-273.0508\\-107\\137.6953\\-275.085\\-107\\134.4286\\-278.3828\\-107\\131.8359\\-280.7872\\-107\\129.8828\\-282.4263\\-107\\124.0234\\-287.135\\-107\\122.0703\\-288.6051\\-107\\120.1172\\-289.5482\\-107\\119.4196\\-290.1016\\-107\\116.2109\\-292.2417\\-107\\114.2578\\-293.2754\\-107\\112.3047\\-294.4631\\-107\\110.3516\\-295.1542\\-107\\108.3984\\-296.0906\\-107\\106.4453\\-296.8539\\-107\\104.4922\\-297.5039\\-107\\102.5391\\-298.4823\\-107\\100.5859\\-299.0338\\-107\\96.67969\\-300.3916\\-107\\94.72656\\-300.7708\\-107\\90.82031\\-301.3619\\-107\\86.91406\\-302.1735\\-107\\84.96094\\-302.4012\\-107\\81.05469\\-302.6466\\-107\\77.14844\\-302.7469\\-107\\73.24219\\-302.7411\\-107\\69.33594\\-302.6028\\-107\\67.38281\\-302.4693\\-107\\65.42969\\-302.2369\\-107"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "199"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "71"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-302.0754\\-105\\-88.86719\\-301.5403\\-105\\-94.72656\\-300.4176\\-105\\-98.63281\\-298.994\\-105\\-100.5859\\-298.4194\\-105\\-102.5391\\-297.3674\\-105\\-104.4922\\-296.7615\\-105\\-106.4453\\-295.7731\\-105\\-108.3984\\-295.0203\\-105\\-110.3516\\-294.1528\\-105\\-112.3047\\-293.0152\\-105\\-114.2578\\-291.7002\\-105\\-116.2109\\-290.6146\\-105\\-118.1641\\-289.2384\\-105\\-122.0703\\-286.6435\\-105\\-124.7665\\-284.2422\\-105\\-127.077\\-282.2891\\-105\\-129.8828\\-279.7247\\-105\\-131.1604\\-278.3828\\-105\\-133.1962\\-276.4297\\-105\\-135.7422\\-273.8586\\-105\\-136.7843\\-272.5234\\-105\\-140.3359\\-268.6172\\-105\\-141.9149\\-266.6641\\-105\\-143.0226\\-264.7109\\-105\\-146.0113\\-260.8047\\-105\\-149.7129\\-254.9453\\-105\\-150.6011\\-252.9922\\-105\\-151.9138\\-251.0391\\-105\\-152.8611\\-249.0859\\-105\\-154.0456\\-247.1328\\-105\\-154.8357\\-245.1797\\-105\\-155.9095\\-243.2266\\-105\\-156.4822\\-241.2734\\-105\\-157.5346\\-239.3203\\-105\\-158.2707\\-237.3672\\-105\\-159.2744\\-235.4141\\-105\\-160.8163\\-231.5078\\-105\\-161.744\\-229.5547\\-105\\-162.7302\\-225.6484\\-105\\-163.6224\\-223.6953\\-105\\-164.6295\\-219.7891\\-105\\-165.4455\\-217.8359\\-105\\-166.3319\\-213.9297\\-105\\-167.3891\\-210.0234\\-105\\-167.6839\\-208.0703\\-105\\-168.219\\-202.2109\\-105\\-168.4669\\-196.3516\\-105\\-168.4538\\-192.4453\\-105\\-168.1974\\-188.5391\\-105\\-167.8401\\-184.6328\\-105\\-167.601\\-182.6797\\-105\\-167.2585\\-180.7266\\-105\\-166.6268\\-178.7734\\-105\\-165.7508\\-174.8672\\-105\\-165.1345\\-172.9141\\-105\\-164.3415\\-170.9609\\-105\\-163.7978\\-169.0078\\-105\\-162.2011\\-165.1016\\-105\\-161.6175\\-163.1484\\-105\\-160.623\\-161.1953\\-105\\-159.8238\\-159.2422\\-105\\-158.8058\\-157.2891\\-105\\-157.2266\\-153.8847\\-105\\-154.064\\-147.5234\\-105\\-152.5787\\-145.5703\\-105\\-151.6978\\-143.6172\\-105\\-150.1728\\-141.6641\\-105\\-148.8058\\-139.7109\\-105\\-147.6474\\-137.7578\\-105\\-144.2683\\-133.8516\\-105\\-143.5547\\-132.7471\\-105\\-141.1379\\-129.9453\\-105\\-139.6484\\-128.3597\\-105\\-133.3537\\-122.1328\\-105\\-130.9799\\-120.1797\\-105\\-129.8828\\-119.4201\\-105\\-125.8938\\-116.2734\\-105\\-124.0234\\-115.3461\\-105\\-122.0703\\-113.8953\\-105\\-120.1172\\-113.1214\\-105\\-118.1641\\-111.8038\\-105\\-116.2109\\-110.9537\\-105\\-114.2578\\-109.8193\\-105\\-112.3047\\-108.8686\\-105\\-108.3984\\-107.4504\\-105\\-106.4453\\-107.0304\\-105\\-104.4922\\-106.0953\\-105\\-100.5859\\-105.5381\\-105\\-98.63281\\-104.457\\-105\\-96.67969\\-104.0778\\-105\\-92.77344\\-103.7147\\-105\\-90.82031\\-103.1583\\-105\\-84.96094\\-102.5756\\-105\\-83.00781\\-102.5251\\-105\\-79.10156\\-102.276\\-105\\-75.19531\\-102.0995\\-105\\-73.24219\\-101.6083\\-105\\-71.28906\\-101.5213\\-105\\-67.38281\\-101.6507\\-105\\-63.47656\\-102.2007\\-105\\-59.57031\\-102.3998\\-105\\-57.61719\\-102.558\\-105\\-53.71094\\-103.0853\\-105\\-51.75781\\-103.6229\\-105\\-47.85156\\-104.2981\\-105\\-45.89844\\-105.1286\\-105\\-43.94531\\-105.6989\\-105\\-41.99219\\-106.0821\\-105\\-40.03906\\-107.1672\\-105\\-38.08594\\-107.9041\\-105\\-36.13281\\-108.7699\\-105\\-33.37191\\-110.4141\\-105\\-32.22656\\-111.2424\\-105\\-30.27344\\-112.9188\\-105\\-28.32031\\-113.9846\\-105\\-26.05509\\-116.2734\\-105\\-24.92474\\-118.2266\\-105\\-23.18464\\-120.1797\\-105\\-21.56929\\-122.1328\\-105\\-19.54713\\-126.0391\\-105\\-18.55469\\-128.1143\\-105\\-17.83258\\-129.9453\\-105\\-17.30725\\-131.8984\\-105\\-16.11328\\-133.8516\\-105\\-14.84721\\-137.7578\\-105\\-14.32554\\-139.7109\\-105\\-13.48692\\-143.6172\\-105\\-13.21051\\-145.5703\\-105\\-12.60653\\-147.5234\\-105\\-12.11958\\-149.4766\\-105\\-11.45924\\-153.3828\\-105\\-10.44339\\-157.2891\\-105\\-9.790193\\-161.1953\\-105\\-9.036959\\-167.0547\\-105\\-8.797269\\-170.9609\\-105\\-8.526142\\-172.9141\\-105\\-8.388601\\-174.8672\\-105\\-7.961107\\-178.7734\\-105\\-7.680334\\-180.7266\\-105\\-7.261619\\-184.6328\\-105\\-7.038288\\-188.5391\\-105\\-7.138412\\-190.4922\\-105\\-7.336528\\-192.4453\\-105\\-7.728577\\-194.3984\\-105\\-7.863514\\-196.3516\\-105\\-7.990057\\-200.2578\\-105\\-7.867908\\-202.2109\\-105\\-7.548167\\-204.1641\\-105\\-7.120768\\-208.0703\\-105\\-6.826073\\-210.0234\\-105\\-6.335347\\-211.9766\\-105\\-6.177819\\-215.8828\\-105\\-6.59375\\-219.7891\\-105\\-7.116037\\-221.7422\\-105\\-8.181841\\-227.6016\\-105\\-8.662333\\-229.5547\\-105\\-9.438119\\-231.5078\\-105\\-9.702958\\-233.4609\\-105\\-10.10388\\-235.4141\\-105\\-11.40671\\-239.3203\\-105\\-12.16554\\-243.2266\\-105\\-12.98757\\-245.1797\\-105\\-13.5263\\-247.1328\\-105\\-13.95597\\-249.0859\\-105\\-15.58494\\-252.9922\\-105\\-16.2976\\-254.9453\\-105\\-17.38601\\-256.8984\\-105\\-18.03024\\-258.8516\\-105\\-19.15322\\-260.8047\\-105\\-19.72779\\-262.7578\\-105\\-20.75549\\-264.7109\\-105\\-21.6306\\-266.6641\\-105\\-22.85807\\-268.6172\\-105\\-23.79209\\-270.5703\\-105\\-25.11503\\-272.5234\\-105\\-25.88232\\-274.4766\\-105\\-27.19116\\-276.4297\\-105\\-28.32031\\-278.3314\\-105\\-29.67113\\-280.3359\\-105\\-32.73216\\-284.2422\\-105\\-34.04897\\-286.1953\\-105\\-36.13281\\-288.5194\\-105\\-38.08594\\-290.375\\-105\\-40.03906\\-292.3307\\-105\\-42.2247\\-294.0078\\-105\\-45.89844\\-296.5306\\-105\\-47.85156\\-297.4852\\-105\\-49.80469\\-298.6878\\-105\\-53.71094\\-300.532\\-105\\-57.61719\\-301.4901\\-105\\-59.57031\\-302.1529\\-105\\-61.52344\\-302.51\\-105\\-63.47656\\-302.7299\\-105\\-69.33594\\-303.0607\\-105\\-71.28906\\-303.1128\\-105\\-75.19531\\-303.0607\\-105\\-81.05469\\-302.7804\\-105\\-84.96094\\-302.4012\\-105"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "183"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "72"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "61.52344\\-301.3752\\-105\\57.61719\\-300.6678\\-105\\55.66406\\-300.1281\\-105\\53.71094\\-299.199\\-105\\51.75781\\-298.4977\\-105\\49.80469\\-297.3414\\-105\\47.85156\\-296.5942\\-105\\45.89844\\-295.4116\\-105\\43.94531\\-294.5326\\-105\\41.99219\\-293.1379\\-105\\40.03906\\-291.5273\\-105\\36.13281\\-288.6817\\-105\\33.49474\\-286.1953\\-105\\30.05725\\-282.2891\\-105\\28.32031\\-280.1299\\-105\\25.72692\\-276.4297\\-105\\24.75155\\-274.4766\\-105\\24.41406\\-274.0876\\-105\\22.46094\\-270.8958\\-105\\22.19273\\-270.5703\\-105\\21.28791\\-268.6172\\-105\\20.11317\\-266.6641\\-105\\18.84694\\-262.7578\\-105\\17.88027\\-260.8047\\-105\\17.41201\\-258.8516\\-105\\15.93206\\-254.9453\\-105\\15.01225\\-251.0391\\-105\\14.33831\\-249.0859\\-105\\13.7006\\-245.1797\\-105\\13.21572\\-241.2734\\-105\\12.39102\\-237.3672\\-105\\11.82548\\-233.4609\\-105\\11.48961\\-229.5547\\-105\\11.21779\\-227.6016\\-105\\10.71948\\-225.6484\\-105\\10.32366\\-223.6953\\-105\\10.06171\\-221.7422\\-105\\9.718372\\-217.8359\\-105\\9.41155\\-215.8828\\-105\\8.42712\\-211.9766\\-105\\8.032822\\-210.0234\\-105\\7.213246\\-204.1641\\-105\\6.810462\\-202.2109\\-105\\6.587795\\-200.2578\\-105\\6.534755\\-196.3516\\-105\\6.962217\\-194.3984\\-105\\7.012729\\-188.5391\\-105\\7.11158\\-184.6328\\-105\\7.475011\\-180.7266\\-105\\8.506945\\-174.8672\\-105\\9.706439\\-169.0078\\-105\\10.31195\\-165.1016\\-105\\10.91028\\-163.1484\\-105\\11.76314\\-159.2422\\-105\\12.08044\\-157.2891\\-105\\13.39814\\-153.3828\\-105\\13.94024\\-151.4297\\-105\\14.74699\\-149.4766\\-105\\16.25279\\-145.5703\\-105\\17.53065\\-143.6172\\-105\\18.11975\\-141.6641\\-105\\19.2627\\-139.7109\\-105\\19.84156\\-137.7578\\-105\\20.90424\\-135.8047\\-105\\22.46094\\-132.3664\\-105\\23.99327\\-129.9453\\-105\\25.37448\\-127.9922\\-105\\26.35634\\-126.0391\\-105\\27.47881\\-124.0859\\-105\\28.90413\\-122.1328\\-105\\30.65321\\-120.1797\\-105\\31.87779\\-118.2266\\-105\\33.5323\\-116.2734\\-105\\35.40039\\-114.3203\\-105\\38.08594\\-111.8628\\-105\\40.03906\\-110.2374\\-105\\43.94531\\-107.7722\\-105\\47.85156\\-105.8932\\-105\\50.37435\\-104.5547\\-105\\55.66406\\-102.8539\\-105\\61.52344\\-101.5197\\-105\\65.42969\\-101.113\\-105\\67.38281\\-100.4755\\-105\\69.33594\\-100.2259\\-105\\71.28906\\-100.0766\\-105\\75.19531\\-99.92843\\-105\\81.05469\\-99.92416\\-105\\86.91406\\-100.1602\\-105\\88.86719\\-100.3886\\-105\\90.82031\\-100.9769\\-105\\96.67969\\-101.4748\\-105\\98.63281\\-101.9727\\-105\\102.5391\\-102.6309\\-105\\104.4922\\-103.1558\\-105\\106.4453\\-103.8562\\-105\\108.3984\\-104.3331\\-105\\110.3516\\-105.2391\\-105\\112.3047\\-105.83\\-105\\114.2578\\-106.9725\\-105\\116.2109\\-107.4766\\-105\\120.1172\\-109.2015\\-105\\122.0703\\-110.551\\-105\\125.105\\-112.3672\\-105\\127.9297\\-114.386\\-105\\129.8828\\-115.5516\\-105\\133.7891\\-119.2557\\-105\\134.8246\\-120.1797\\-105\\137.6953\\-123.0861\\-105\\139.6484\\-125.1989\\-105\\140.5481\\-126.0391\\-105\\143.5547\\-129.5409\\-105\\146.7056\\-133.8516\\-105\\148.2407\\-135.8047\\-105\\149.6761\\-137.7578\\-105\\150.871\\-139.7109\\-105\\151.3672\\-140.3201\\-105\\153.7095\\-143.6172\\-105\\154.7815\\-145.5703\\-105\\155.9855\\-147.5234\\-105\\156.8788\\-149.4766\\-105\\158.0043\\-151.4297\\-105\\159.9963\\-155.3359\\-105\\160.7436\\-157.2891\\-105\\161.7161\\-159.2422\\-105\\162.6912\\-163.1484\\-105\\163.5164\\-165.1016\\-105\\164.3937\\-169.0078\\-105\\165.6042\\-172.9141\\-105\\166.5315\\-178.7734\\-105\\167.2054\\-182.6797\\-105\\167.5936\\-186.5859\\-105\\167.8467\\-192.4453\\-105\\167.9513\\-196.3516\\-105\\167.9746\\-202.2109\\-105\\167.8763\\-208.0703\\-105\\167.7217\\-211.9766\\-105\\167.5936\\-213.9297\\-105\\167.155\\-217.8359\\-105\\166.4086\\-221.7422\\-105\\165.7914\\-225.6484\\-105\\165.3856\\-227.6016\\-105\\164.6343\\-229.5547\\-105\\163.7198\\-233.4609\\-105\\162.9257\\-235.4141\\-105\\162.3035\\-237.3672\\-105\\161.8743\\-239.3203\\-105\\159.2751\\-245.1797\\-105\\157.1075\\-249.0859\\-105\\156.164\\-251.0391\\-105\\154.9408\\-252.9922\\-105\\153.9566\\-254.9453\\-105\\151.0036\\-258.8516\\-105\\149.8748\\-260.8047\\-105\\148.372\\-262.7578\\-105\\145.0544\\-266.6641\\-105\\141.8142\\-270.5703\\-105\\140.0428\\-272.5234\\-105\\135.7422\\-276.7968\\-105\\134.2209\\-278.3828\\-105\\131.8359\\-280.671\\-105\\125.9766\\-285.4081\\-105\\124.0234\\-287.049\\-105\\122.0703\\-288.4814\\-105\\120.1172\\-289.436\\-105\\118.1641\\-290.8497\\-105\\116.2109\\-292.0623\\-105\\112.8027\\-294.0078\\-105\\112.3047\\-294.3586\\-105\\110.3516\\-295.1003\\-105\\106.4453\\-296.8154\\-105\\104.4922\\-297.4289\\-105\\102.5391\\-298.4194\\-105\\100.5859\\-298.9716\\-105\\96.67969\\-300.3401\\-105\\94.72656\\-300.7147\\-105\\90.82031\\-301.2964\\-105\\86.91406\\-302.088\\-105\\83.00781\\-302.5179\\-105\\81.05469\\-302.6214\\-105\\77.14844\\-302.7239\\-105\\73.24219\\-302.7178\\-105\\69.33594\\-302.5838\\-105\\65.42969\\-302.2123\\-105"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "203"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "73"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-301.9211\\-103\\-88.86719\\-301.4095\\-103\\-92.77344\\-300.7309\\-103\\-94.72656\\-300.3156\\-103\\-96.67969\\-299.5329\\-103\\-100.5859\\-298.281\\-103\\-102.5391\\-297.238\\-103\\-104.4922\\-296.6416\\-103\\-106.4453\\-295.6026\\-103\\-108.3984\\-294.9245\\-103\\-110.2661\\-294.0078\\-103\\-112.3047\\-292.8848\\-103\\-114.2578\\-291.5115\\-103\\-116.2109\\-290.4466\\-103\\-120.1172\\-287.7137\\-103\\-122.0703\\-286.4196\\-103\\-127.9297\\-281.3851\\-103\\-129.8828\\-279.4904\\-103\\-130.9079\\-278.3828\\-103\\-134.9542\\-274.4766\\-103\\-137.6953\\-271.3725\\-103\\-140.1961\\-268.6172\\-103\\-141.7488\\-266.6641\\-103\\-142.941\\-264.7109\\-103\\-145.8748\\-260.8047\\-103\\-148.4066\\-256.8984\\-103\\-149.6201\\-254.9453\\-103\\-150.5228\\-252.9922\\-103\\-151.8331\\-251.0391\\-103\\-152.7882\\-249.0859\\-103\\-153.9964\\-247.1328\\-103\\-154.7819\\-245.1797\\-103\\-155.8568\\-243.2266\\-103\\-156.4584\\-241.2734\\-103\\-157.4758\\-239.3203\\-103\\-158.2395\\-237.3672\\-103\\-159.2319\\-235.4141\\-103\\-160.0753\\-233.4609\\-103\\-160.8028\\-231.5078\\-103\\-161.7314\\-229.5547\\-103\\-162.7162\\-225.6484\\-103\\-163.6258\\-223.6953\\-103\\-164.6497\\-219.7891\\-103\\-165.4738\\-217.8359\\-103\\-166.3468\\-213.9297\\-103\\-167.4241\\-210.0234\\-103\\-167.7029\\-208.0703\\-103\\-168.2424\\-202.2109\\-103\\-168.5452\\-196.3516\\-103\\-168.5808\\-192.4453\\-103\\-168.2068\\-186.5859\\-103\\-167.8351\\-182.6797\\-103\\-167.5842\\-180.7266\\-103\\-166.6243\\-176.8203\\-103\\-165.7855\\-172.9141\\-103\\-165.1898\\-170.9609\\-103\\-164.4153\\-169.0078\\-103\\-163.8754\\-167.0547\\-103\\-163.1859\\-165.1016\\-103\\-162.3913\\-163.1484\\-103\\-161.8137\\-161.1953\\-103\\-160.8826\\-159.2422\\-103\\-159.2751\\-155.3359\\-103\\-158.2227\\-153.3828\\-103\\-156.4152\\-149.4766\\-103\\-155.4606\\-147.5234\\-103\\-153.3441\\-143.6172\\-103\\-152.07\\-141.6641\\-103\\-150.665\\-139.7109\\-103\\-149.4774\\-137.7578\\-103\\-148.0223\\-135.8047\\-103\\-146.4608\\-133.8516\\-103\\-145.5078\\-132.5239\\-103\\-143.5547\\-130.181\\-103\\-141.6016\\-127.9808\\-103\\-135.8716\\-122.1328\\-103\\-133.6844\\-120.1797\\-103\\-129.8828\\-116.9278\\-103\\-125.9766\\-114.0984\\-103\\-122.0703\\-111.7189\\-103\\-120.1172\\-110.9232\\-103\\-118.1641\\-109.5084\\-103\\-116.2109\\-108.5525\\-103\\-114.2578\\-107.349\\-103\\-112.3047\\-106.7715\\-103\\-108.3984\\-105.3545\\-103\\-106.4453\\-104.9364\\-103\\-104.4922\\-103.9621\\-103\\-102.5391\\-103.5858\\-103\\-100.5859\\-103.3396\\-103\\-98.63281\\-102.3313\\-103\\-96.67969\\-102.0048\\-103\\-92.77344\\-101.6776\\-103\\-90.82031\\-101.1675\\-103\\-84.96094\\-100.7182\\-103\\-79.10156\\-100.3885\\-103\\-75.19531\\-100.2832\\-103\\-73.24219\\-100.0221\\-103\\-69.33594\\-99.66373\\-103\\-67.38281\\-99.97746\\-103\\-63.47656\\-100.3229\\-103\\-61.52344\\-100.375\\-103\\-57.61719\\-100.6052\\-103\\-53.71094\\-101.0591\\-103\\-49.80469\\-101.8808\\-103\\-47.85156\\-102.1592\\-103\\-43.94531\\-103.4828\\-103\\-41.99219\\-103.9228\\-103\\-40.03906\\-105.03\\-103\\-38.08594\\-105.5934\\-103\\-36.13281\\-106.6003\\-103\\-34.17969\\-107.4844\\-103\\-32.22656\\-108.7832\\-103\\-30.27344\\-109.8496\\-103\\-27.25395\\-112.3672\\-103\\-24.41406\\-115.2636\\-103\\-22.03747\\-118.2266\\-103\\-21.0177\\-120.1797\\-103\\-19.77539\\-122.1328\\-103\\-17.68578\\-126.0391\\-103\\-16.8793\\-127.9922\\-103\\-15.8729\\-129.9453\\-103\\-15.28168\\-131.8984\\-103\\-14.31754\\-133.8516\\-103\\-13.9248\\-135.8047\\-103\\-13.29566\\-137.7578\\-103\\-12.50155\\-141.6641\\-103\\-11.8656\\-143.6172\\-103\\-11.29482\\-147.5234\\-103\\-10.64601\\-149.4766\\-103\\-10.18732\\-151.4297\\-103\\-9.651916\\-155.3359\\-103\\-8.375\\-161.1953\\-103\\-8.08071\\-163.1484\\-103\\-7.903181\\-165.1016\\-103\\-7.58886\\-167.0547\\-103\\-7.252038\\-170.9609\\-103\\-6.835938\\-174.7858\\-103\\-6.51826\\-176.8203\\-103\\-5.489309\\-180.7266\\-103\\-5.151099\\-182.6797\\-103\\-4.185268\\-184.6328\\-103\\-3.021816\\-186.5859\\-103\\-2.08554\\-188.5391\\-103\\-2.166193\\-190.4922\\-103\\-3.714425\\-192.4453\\-103\\-4.882813\\-193.7036\\-103\\-5.312965\\-194.3984\\-103\\-5.581943\\-196.3516\\-103\\-5.683813\\-198.3047\\-103\\-6.081883\\-200.2578\\-103\\-5.334342\\-204.1641\\-103\\-4.507212\\-206.1172\\-103\\-4.236356\\-208.0703\\-103\\-4.167424\\-211.9766\\-103\\-4.9467\\-213.9297\\-103\\-4.664522\\-215.8828\\-103\\-5.18645\\-217.8359\\-103\\-5.190738\\-219.7891\\-103\\-5.389519\\-221.7422\\-103\\-6.835938\\-225.7705\\-103\\-8.959221\\-233.4609\\-103\\-9.582876\\-235.4141\\-103\\-10.07045\\-237.3672\\-103\\-11.47461\\-241.2734\\-103\\-11.9015\\-243.2266\\-103\\-12.52254\\-245.1797\\-103\\-13.33165\\-247.1328\\-103\\-13.80718\\-249.0859\\-103\\-14.44172\\-251.0391\\-103\\-15.3902\\-252.9922\\-103\\-16.07354\\-254.9453\\-103\\-17.2083\\-256.8984\\-103\\-17.8833\\-258.8516\\-103\\-18.98193\\-260.8047\\-103\\-19.63373\\-262.7578\\-103\\-21.52661\\-266.6641\\-103\\-22.68191\\-268.6172\\-103\\-23.6942\\-270.5703\\-103\\-25.00498\\-272.5234\\-103\\-25.79864\\-274.4766\\-103\\-27.09173\\-276.4297\\-103\\-28.2219\\-278.3828\\-103\\-29.61658\\-280.3359\\-103\\-32.69392\\-284.2422\\-103\\-34.01947\\-286.1953\\-103\\-36.13281\\-288.5194\\-103\\-40.03906\\-292.2773\\-103\\-42.29621\\-294.0078\\-103\\-45.89844\\-296.4652\\-103\\-47.85156\\-297.3785\\-103\\-49.80469\\-298.617\\-103\\-51.75781\\-299.4701\\-103\\-53.71094\\-300.4434\\-103\\-57.61719\\-301.3931\\-103\\-59.57031\\-302.0216\\-103\\-61.52344\\-302.4315\\-103\\-63.47656\\-302.6648\\-103\\-67.38281\\-302.9048\\-103\\-71.28906\\-303.0424\\-103\\-75.19531\\-302.9933\\-103\\-81.05469\\-302.7239\\-103\\-84.96094\\-302.3152\\-103"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "193"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "74"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "65.42969\\-302.1874\\-103\\61.52344\\-301.355\\-103\\57.61719\\-300.645\\-103\\55.66406\\-300.0926\\-103\\53.71094\\-299.1514\\-103\\51.75781\\-298.4612\\-103\\49.80469\\-297.2926\\-103\\47.85156\\-296.5824\\-103\\45.89844\\-295.3924\\-103\\43.94531\\-294.5326\\-103\\41.99219\\-293.1429\\-103\\40.03906\\-291.5664\\-103\\36.13281\\-288.6716\\-103\\33.48599\\-286.1953\\-103\\30.05559\\-282.2891\\-103\\28.32031\\-280.1461\\-103\\25.73568\\-276.4297\\-103\\24.72744\\-274.4766\\-103\\24.41406\\-274.1114\\-103\\22.46094\\-270.865\\-103\\22.2168\\-270.5703\\-103\\21.2693\\-268.6172\\-103\\20.0998\\-266.6641\\-103\\18.80787\\-262.7578\\-103\\17.85942\\-260.8047\\-103\\17.37767\\-258.8516\\-103\\15.90545\\-254.9453\\-103\\15.4862\\-252.9922\\-103\\14.93217\\-251.0391\\-103\\14.27185\\-249.0859\\-103\\13.65444\\-245.1797\\-103\\13.11671\\-241.2734\\-103\\12.18776\\-237.3672\\-103\\11.2069\\-229.5547\\-103\\10.20479\\-225.6484\\-103\\9.609375\\-221.7422\\-103\\8.932898\\-217.8359\\-103\\7.445371\\-211.9766\\-103\\6.835938\\-209.1515\\-103\\5.46875\\-206.1172\\-103\\5.190642\\-204.1641\\-103\\4.913015\\-200.2578\\-103\\4.171489\\-198.3047\\-103\\4.161488\\-194.3984\\-103\\3.776042\\-190.4922\\-103\\3.802083\\-188.5391\\-103\\4.310826\\-186.5859\\-103\\5.230243\\-184.6328\\-103\\5.73088\\-180.7266\\-103\\7.012729\\-176.8203\\-103\\7.750605\\-172.9141\\-103\\8.042689\\-170.9609\\-103\\9.137835\\-165.1016\\-103\\9.601727\\-163.1484\\-103\\10.10895\\-159.2422\\-103\\10.55582\\-157.2891\\-103\\11.29002\\-155.3359\\-103\\11.67111\\-153.3828\\-103\\13.04155\\-149.4766\\-103\\13.58981\\-147.5234\\-103\\14.30622\\-145.5703\\-103\\15.3021\\-143.6172\\-103\\15.87314\\-141.6641\\-103\\16.81298\\-139.7109\\-103\\17.59541\\-137.7578\\-103\\18.68693\\-135.8047\\-103\\19.40679\\-133.8516\\-103\\20.28761\\-131.8984\\-103\\23.10902\\-127.9922\\-103\\23.61591\\-126.0391\\-103\\24.41406\\-124.7215\\-103\\26.16955\\-122.1328\\-103\\27.29885\\-120.1797\\-103\\28.94737\\-118.2266\\-103\\30.05255\\-116.2734\\-103\\31.96539\\-114.3203\\-103\\33.73579\\-112.3672\\-103\\36.13281\\-110.1275\\-103\\38.08594\\-108.8841\\-103\\40.03906\\-107.31\\-103\\41.99219\\-106.3339\\-103\\44.64518\\-104.5547\\-103\\45.89844\\-103.8175\\-103\\48.39124\\-102.6016\\-103\\53.71094\\-100.813\\-103\\55.66406\\-100.3191\\-103\\57.61719\\-99.65215\\-103\\63.47656\\-98.75018\\-103\\65.42969\\-98.098\\-103\\67.38281\\-97.93377\\-103\\71.28906\\-97.72717\\-103\\75.19531\\-97.6531\\-103\\79.10156\\-97.66272\\-103\\84.96094\\-97.87754\\-103\\86.91406\\-98.047\\-103\\88.86719\\-98.31647\\-103\\90.82031\\-98.92564\\-103\\96.67969\\-99.55698\\-103\\98.63281\\-100.1025\\-103\\102.5391\\-100.8788\\-103\\104.4922\\-101.5258\\-103\\108.3984\\-102.4731\\-103\\110.3516\\-103.3438\\-103\\112.3047\\-103.9214\\-103\\114.2578\\-105.047\\-103\\116.2109\\-105.7678\\-103\\120.1172\\-107.5712\\-103\\124.0234\\-109.6668\\-103\\127.9297\\-112.4725\\-103\\129.8828\\-113.6552\\-103\\131.8359\\-115.3049\\-103\\134.8714\\-118.2266\\-103\\137.6953\\-121.0667\\-103\\140.6101\\-124.0859\\-103\\142.305\\-126.0391\\-103\\143.8469\\-127.9922\\-103\\144.9677\\-129.9453\\-103\\146.6545\\-131.8984\\-103\\148.1596\\-133.8516\\-103\\150.694\\-137.7578\\-103\\151.3672\\-138.6377\\-103\\153.4575\\-141.6641\\-103\\154.541\\-143.6172\\-103\\155.7368\\-145.5703\\-103\\156.6007\\-147.5234\\-103\\157.7378\\-149.4766\\-103\\158.6003\\-151.4297\\-103\\159.7717\\-153.3828\\-103\\160.5086\\-155.3359\\-103\\161.4272\\-157.2891\\-103\\162.0544\\-159.2422\\-103\\162.4796\\-161.1953\\-103\\163.2287\\-163.1484\\-103\\163.8239\\-165.1016\\-103\\164.6786\\-169.0078\\-103\\165.3539\\-170.9609\\-103\\165.7676\\-172.9141\\-103\\166.6365\\-178.7734\\-103\\167.0298\\-180.7266\\-103\\167.4651\\-184.6328\\-103\\167.6255\\-186.5859\\-103\\167.7838\\-190.4922\\-103\\167.9513\\-196.3516\\-103\\167.9803\\-202.2109\\-103\\167.9345\\-206.1172\\-103\\167.7175\\-211.9766\\-103\\167.3991\\-215.8828\\-103\\167.1408\\-217.8359\\-103\\166.3847\\-221.7422\\-103\\165.7914\\-225.6484\\-103\\165.3752\\-227.6016\\-103\\164.6142\\-229.5547\\-103\\163.6963\\-233.4609\\-103\\162.8981\\-235.4141\\-103\\162.2891\\-237.3672\\-103\\161.8546\\-239.3203\\-103\\160.108\\-243.2266\\-103\\159.1797\\-245.1685\\-103\\157.2266\\-248.811\\-103\\156.1272\\-251.0391\\-103\\154.9037\\-252.9922\\-103\\153.9011\\-254.9453\\-103\\150.9586\\-258.8516\\-103\\149.8145\\-260.8047\\-103\\148.3253\\-262.7578\\-103\\144.9758\\-266.6641\\-103\\141.7092\\-270.5703\\-103\\139.9474\\-272.5234\\-103\\135.7422\\-276.7241\\-103\\134.1309\\-278.3828\\-103\\131.8359\\-280.5419\\-103\\127.9297\\-283.6973\\-103\\124.0234\\-286.9308\\-103\\122.0703\\-288.3714\\-103\\120.1172\\-289.3407\\-103\\118.1641\\-290.7467\\-103\\116.2109\\-291.8549\\-103\\114.2578\\-293.0909\\-103\\112.3047\\-294.2191\\-103\\108.3984\\-295.8292\\-103\\106.4453\\-296.7693\\-103\\104.4922\\-297.3586\\-103\\102.5391\\-298.3579\\-103\\98.63281\\-299.5329\\-103\\96.67969\\-300.2667\\-103\\94.72656\\-300.6518\\-103\\88.86719\\-301.5546\\-103\\86.91406\\-301.9931\\-103\\83.00781\\-302.4693\\-103\\79.10156\\-302.6712\\-103\\75.19531\\-302.7127\\-103\\71.28906\\-302.6466\\-103\\67.38281\\-302.4275\\-103"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002352"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "376"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "75"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.96094\\-302.2123\\-101\\-88.86719\\-301.3094\\-101\\-92.77344\\-300.6405\\-101\\-94.72656\\-300.197\\-101\\-96.67969\\-299.3972\\-101\\-98.63281\\-298.794\\-101\\-100.5859\\-298.0884\\-101\\-102.5391\\-297.1251\\-101\\-104.4922\\-296.511\\-101\\-106.4453\\-295.4336\\-101\\-108.3984\\-294.8388\\-101\\-110.3516\\-293.7218\\-101\\-112.3047\\-292.7338\\-101\\-114.2578\\-291.3408\\-101\\-116.2109\\-290.2117\\-101\\-118.1641\\-288.9792\\-101\\-121.9918\\-286.1953\\-101\\-125.9766\\-282.9245\\-101\\-127.9297\\-281.2461\\-101\\-130.8023\\-278.3828\\-101\\-134.833\\-274.4766\\-101\\-137.6953\\-271.214\\-101\\-140.0432\\-268.6172\\-101\\-141.6016\\-266.5566\\-101\\-142.832\\-264.7109\\-101\\-145.7195\\-260.8047\\-101\\-148.3255\\-256.8984\\-101\\-149.4867\\-254.9453\\-101\\-150.4417\\-252.9922\\-101\\-151.7241\\-251.0391\\-101\\-152.7039\\-249.0859\\-101\\-153.9217\\-247.1328\\-101\\-154.7127\\-245.1797\\-101\\-155.792\\-243.2266\\-101\\-156.4088\\-241.2734\\-101\\-157.4022\\-239.3203\\-101\\-158.2083\\-237.3672\\-101\\-160.0438\\-233.4609\\-101\\-160.7831\\-231.5078\\-101\\-161.6955\\-229.5547\\-101\\-162.705\\-225.6484\\-101\\-163.6258\\-223.6953\\-101\\-164.6343\\-219.7891\\-101\\-165.4948\\-217.8359\\-101\\-166.3543\\-213.9297\\-101\\-167.4366\\-210.0234\\-101\\-167.7072\\-208.0703\\-101\\-168.1125\\-204.1641\\-101\\-168.6292\\-196.3516\\-101\\-168.7177\\-192.4453\\-101\\-168.521\\-188.5391\\-101\\-168.0398\\-182.6797\\-101\\-167.567\\-178.7734\\-101\\-167.1959\\-176.8203\\-101\\-166.2414\\-172.9141\\-101\\-165.8149\\-170.9609\\-101\\-165.2883\\-169.0078\\-101\\-164.5117\\-167.0547\\-101\\-163.4206\\-163.1484\\-101\\-162.5665\\-161.1953\\-101\\-162.0002\\-159.2422\\-101\\-161.3139\\-157.2891\\-101\\-160.402\\-155.3359\\-101\\-159.7215\\-153.3828\\-101\\-158.6451\\-151.4297\\-101\\-157.2266\\-148.3985\\-101\\-156.7082\\-147.5234\\-101\\-155.8651\\-145.5703\\-101\\-154.6631\\-143.6172\\-101\\-153.7972\\-141.6641\\-101\\-152.3438\\-139.7109\\-101\\-151.3672\\-137.9787\\-101\\-147.4609\\-132.4361\\-101\\-145.5469\\-129.9453\\-101\\-143.7484\\-127.9922\\-101\\-142.2019\\-126.0391\\-101\\-140.4987\\-124.0859\\-101\\-137.6953\\-121.3249\\-101\\-133.7891\\-118.0056\\-101\\-131.8359\\-116.2473\\-101\\-129.3945\\-114.3203\\-101\\-127.9297\\-113.4744\\-101\\-125.9766\\-111.9586\\-101\\-123.6719\\-110.4141\\-101\\-122.0703\\-109.4901\\-101\\-120.1172\\-108.1354\\-101\\-118.1641\\-107.3662\\-101\\-116.2109\\-106.1897\\-101\\-114.2578\\-105.2454\\-101\\-112.3047\\-104.5311\\-101\\-108.3984\\-103.2129\\-101\\-106.4453\\-102.6472\\-101\\-104.4922\\-101.892\\-101\\-100.5859\\-101.3116\\-101\\-98.63281\\-100.3843\\-101\\-96.67969\\-100.1035\\-101\\-92.77344\\-99.75053\\-101\\-90.82031\\-99.29078\\-101\\-84.96094\\-98.65656\\-101\\-81.05469\\-98.4037\\-101\\-77.14844\\-98.27319\\-101\\-73.24219\\-98.22534\\-101\\-69.33594\\-97.89497\\-101\\-67.38281\\-98.18917\\-101\\-63.47656\\-98.24412\\-101\\-59.57031\\-98.39224\\-101\\-55.66406\\-98.74272\\-101\\-51.75781\\-99.35429\\-101\\-49.80469\\-99.83351\\-101\\-47.85156\\-100.1035\\-101\\-45.89844\\-100.4746\\-101\\-43.94531\\-101.3072\\-101\\-41.99219\\-101.8125\\-101\\-40.03906\\-102.4217\\-101\\-35.59352\\-104.5547\\-101\\-32.22656\\-106.2694\\-101\\-30.27344\\-107.5797\\-101\\-28.32031\\-109.0418\\-101\\-26.36719\\-110.3477\\-101\\-24.36756\\-112.3672\\-101\\-22.46094\\-114.6683\\-101\\-19.98853\\-118.2266\\-101\\-19.09543\\-120.1797\\-101\\-16.60156\\-124.4905\\-101\\-15.09734\\-127.9922\\-101\\-14.0144\\-129.9453\\-101\\-13.47229\\-131.8984\\-101\\-12.68682\\-133.8516\\-101\\-12.14014\\-135.8047\\-101\\-11.80474\\-137.7578\\-101\\-10.73431\\-141.6641\\-101\\-9.832974\\-145.5703\\-101\\-9.104331\\-149.4766\\-101\\-8.154654\\-153.3828\\-101\\-7.604721\\-157.2891\\-101\\-7.270813\\-159.2422\\-101\\-6.677351\\-161.1953\\-101\\-6.155095\\-165.1016\\-101\\-5.253544\\-169.0078\\-101\\-4.74462\\-170.9609\\-101\\-3.323228\\-174.8672\\-101\\-2.929688\\-175.6205\\-101\\-1.905488\\-176.8203\\-101\\-0.9765625\\-178.1805\\-101\\0.9765625\\-179.9534\\-101\\2.929688\\-179.6472\\-101\\3.193204\\-178.7734\\-101\\4.882813\\-175.7461\\-101\\5.850656\\-172.9141\\-101\\6.739161\\-169.0078\\-101\\7.401316\\-167.0547\\-101\\8.180589\\-159.2422\\-101\\8.732567\\-157.2891\\-101\\9.635925\\-153.3828\\-101\\10.74219\\-149.9291\\-101\\11.65911\\-147.5234\\-101\\12.69531\\-144.3556\\-101\\13.75325\\-141.6641\\-101\\14.43977\\-139.7109\\-101\\15.92043\\-135.8047\\-101\\16.89265\\-133.8516\\-101\\18.55469\\-130.148\\-101\\19.72472\\-127.9922\\-101\\20.8849\\-126.0391\\-101\\22.46094\\-123.1908\\-101\\24.30664\\-120.1797\\-101\\25.74728\\-118.2266\\-101\\26.36719\\-117.1782\\-101\\28.32031\\-114.4153\\-101\\30.27344\\-112.436\\-101\\32.22656\\-110.3421\\-101\\34.17969\\-108.451\\-101\\38.08594\\-105.5001\\-101\\42.58149\\-102.6016\\-101\\46.36452\\-100.6484\\-101\\47.85156\\-100.149\\-101\\51.67863\\-98.69531\\-101\\55.66406\\-97.56319\\-101\\59.57031\\-96.73425\\-101\\61.52344\\-96.18538\\-101\\63.47656\\-95.8877\\-101\\65.42969\\-95.70959\\-101\\69.33594\\-95.50147\\-101\\75.19531\\-95.41685\\-101\\79.10156\\-95.4931\\-101\\83.00781\\-95.69108\\-101\\86.91406\\-95.98017\\-101\\88.86719\\-96.25391\\-101\\90.82031\\-96.64453\\-101\\96.67969\\-97.64642\\-101\\100.5859\\-98.5558\\-101\\104.4922\\-99.74017\\-101\\106.4453\\-100.1927\\-101\\110.3516\\-101.5965\\-101\\112.3047\\-102.1443\\-101\\114.2578\\-103.101\\-101\\116.2109\\-103.8601\\-101\\118.1641\\-104.9209\\-101\\121.3881\\-106.5078\\-101\\124.0234\\-107.8975\\-101\\129.8828\\-111.856\\-101\\131.8359\\-113.4547\\-101\\133.7891\\-115.1892\\-101\\138.6868\\-120.1797\\-101\\140.6776\\-122.1328\\-101\\142.3432\\-124.0859\\-101\\143.8117\\-126.0391\\-101\\145.046\\-127.9922\\-101\\146.6563\\-129.9453\\-101\\148.1095\\-131.8984\\-101\\149.2844\\-133.8516\\-101\\151.3672\\-136.9057\\-101\\153.3203\\-139.9018\\-101\\155.5405\\-143.6172\\-101\\156.3849\\-145.5703\\-101\\157.4989\\-147.5234\\-101\\158.3547\\-149.4766\\-101\\159.4892\\-151.4297\\-101\\160.2915\\-153.3828\\-101\\161.2037\\-155.3359\\-101\\161.9178\\-157.2891\\-101\\162.3504\\-159.2422\\-101\\163.6431\\-163.1484\\-101\\164.475\\-167.0547\\-101\\165.0912\\-169.0078\\-101\\165.5915\\-170.9609\\-101\\166.7258\\-178.7734\\-101\\167.1143\\-180.7266\\-101\\167.4988\\-184.6328\\-101\\167.7974\\-190.4922\\-101\\167.94\\-196.3516\\-101\\167.9745\\-202.2109\\-101\\167.9116\\-206.1172\\-101\\167.6946\\-211.9766\\-101\\167.3765\\-215.8828\\-101\\167.1007\\-217.8359\\-101\\166.3656\\-221.7422\\-101\\165.7752\\-225.6484\\-101\\165.3539\\-227.6016\\-101\\164.5917\\-229.5547\\-101\\163.6882\\-233.4609\\-101\\162.8714\\-235.4141\\-101\\162.2721\\-237.3672\\-101\\161.8347\\-239.3203\\-101\\160.8766\\-241.2734\\-101\\160.0758\\-243.2266\\-101\\158.1158\\-247.1328\\-101\\156.9255\\-249.0859\\-101\\156.0903\\-251.0391\\-101\\154.8677\\-252.9922\\-101\\153.8536\\-254.9453\\-101\\151.3672\\-258.2672\\-101\\150.8721\\-258.8516\\-101\\149.742\\-260.8047\\-101\\148.2703\\-262.7578\\-101\\144.8852\\-266.6641\\-101\\143.5547\\-268.3024\\-101\\139.7992\\-272.5234\\-101\\137.6953\\-274.7068\\-101\\133.9919\\-278.3828\\-101\\131.8359\\-280.377\\-101\\127.2028\\-284.2422\\-101\\124.0234\\-286.8272\\-101\\122.0703\\-288.1735\\-101\\120.1172\\-289.2471\\-101\\118.1641\\-290.6303\\-101\\116.2109\\-291.6573\\-101\\114.2578\\-293.0044\\-101\\112.3047\\-294.077\\-101\\110.3516\\-294.9601\\-101\\108.3984\\-295.7298\\-101\\106.4453\\-296.7074\\-101\\104.4922\\-297.2728\\-101\\102.5391\\-298.281\\-101\\98.63281\\-299.4504\\-101\\96.67969\\-300.1883\\-101\\94.72656\\-300.5954\\-101\\88.86719\\-301.4809\\-101\\84.96094\\-302.2232\\-101\\83.00781\\-302.4315\\-101\\79.10156\\-302.6533\\-101\\75.19531\\-302.6953\\-101\\71.28906\\-302.6214\\-101\\67.38281\\-302.4101\\-101\\65.42969\\-302.1529\\-101\\61.52344\\-301.3288\\-101\\57.61719\\-300.6153\\-101\\55.66406\\-300.0299\\-101\\53.71094\\-299.1089\\-101\\51.75781\\-298.4202\\-101\\49.80469\\-297.2572\\-101\\47.85156\\-296.5577\\-101\\45.89844\\-295.3697\\-101\\43.94531\\-294.5193\\-101\\40.53852\\-292.0547\\-101\\38.08594\\-290.0765\\-101\\36.13281\\-288.6716\\-101\\33.47736\\-286.1953\\-101\\30.06904\\-282.2891\\-101\\28.32031\\-280.114\\-101\\25.74455\\-276.4297\\-101\\24.72979\\-274.4766\\-101\\24.41406\\-274.1146\\-101\\22.46094\\-270.8765\\-101\\22.20285\\-270.5703\\-101\\21.25047\\-268.6172\\-101\\20.06271\\-266.6641\\-101\\18.80787\\-262.7578\\-101\\17.84589\\-260.8047\\-101\\17.3379\\-258.8516\\-101\\16.53498\\-256.8984\\-101\\15.8754\\-254.9453\\-101\\15.42664\\-252.9922\\-101\\14.20681\\-249.0859\\-101\\13.29385\\-243.2266\\-101\\12.90825\\-241.2734\\-101\\12.31971\\-239.3203\\-101\\11.9687\\-237.3672\\-101\\11.42919\\-233.4609\\-101\\11.07681\\-231.5078\\-101\\10.45653\\-229.5547\\-101\\9.033203\\-223.6953\\-101\\7.536301\\-219.7891\\-101\\6.835938\\-217.2635\\-101\\4.882813\\-214.6892\\-101\\0.9765625\\-214.5924\\-101\\-0.9765625\\-216.9186\\-101\\-2.390392\\-219.7891\\-101\\-2.835181\\-221.7422\\-101\\-3.801243\\-223.6953\\-101\\-5.110981\\-225.6484\\-101\\-6.050728\\-227.6016\\-101\\-6.64719\\-229.5547\\-101\\-7.480197\\-231.5078\\-101\\-8.602695\\-235.4141\\-101\\-9.461938\\-237.3672\\-101\\-10.04861\\-239.3203\\-101\\-10.96644\\-241.2734\\-101\\-11.62946\\-243.2266\\-101\\-12.12198\\-245.1797\\-101\\-13.05362\\-247.1328\\-101\\-14.1825\\-251.0391\\-101\\-15.13672\\-252.9922\\-101\\-15.86383\\-254.9453\\-101\\-16.97266\\-256.8984\\-101\\-17.73314\\-258.8516\\-101\\-18.74394\\-260.8047\\-101\\-20.29647\\-264.7109\\-101\\-20.50781\\-265.0029\\-101\\-22.42338\\-268.6172\\-101\\-24.41406\\-271.9567\\-101\\-24.84883\\-272.5234\\-101\\-25.70106\\-274.4766\\-101\\-26.98084\\-276.4297\\-101\\-28.09934\\-278.3828\\-101\\-30.27344\\-281.29\\-101\\-32.65512\\-284.2422\\-101\\-33.99043\\-286.1953\\-101\\-36.13281\\-288.5316\\-101\\-37.84795\\-290.1016\\-101\\-40.03906\\-292.2355\\-101\\-42.36638\\-294.0078\\-101\\-45.89844\\-296.403\\-101\\-47.85156\\-297.2976\\-101\\-49.80469\\-298.5596\\-101\\-51.75781\\-299.3665\\-101\\-53.71094\\-300.3647\\-101\\-57.61719\\-301.3026\\-101\\-59.57031\\-301.8754\\-101\\-61.52344\\-302.3381\\-101\\-63.47656\\-302.6097\\-101\\-65.42969\\-302.7527\\-101\\-69.33594\\-302.9264\\-101\\-73.24219\\-302.9651\\-101\\-77.14844\\-302.8659\\-101\\-81.05469\\-302.6712\\-101"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002351"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "368"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "76"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.96094\\-302.0754\\-99\\-86.91406\\-301.5816\\-99\\-92.77344\\-300.5433\\-99\\-94.72656\\-300.0416\\-99\\-96.67969\\-299.2675\\-99\\-98.63281\\-298.6776\\-99\\-102.5391\\-297.013\\-99\\-104.4922\\-296.369\\-99\\-106.4453\\-295.3036\\-99\\-108.3984\\-294.7027\\-99\\-110.3516\\-293.5322\\-99\\-112.3047\\-292.5824\\-99\\-114.2578\\-291.1885\\-99\\-116.2109\\-289.9204\\-99\\-118.1641\\-288.819\\-99\\-121.6781\\-286.1953\\-99\\-124.0234\\-284.2337\\-99\\-125.9766\\-282.7303\\-99\\-127.9297\\-281.0835\\-99\\-131.8359\\-277.1989\\-99\\-134.6713\\-274.4766\\-99\\-136.4435\\-272.5234\\-99\\-137.6953\\-271.007\\-99\\-139.8226\\-268.6172\\-99\\-141.6016\\-266.2863\\-99\\-145.5305\\-260.8047\\-99\\-148.2156\\-256.8984\\-99\\-149.4141\\-254.8027\\-99\\-150.3348\\-252.9922\\-99\\-151.5739\\-251.0391\\-99\\-152.5937\\-249.0859\\-99\\-153.8269\\-247.1328\\-99\\-154.6408\\-245.1797\\-99\\-155.7098\\-243.2266\\-99\\-156.3553\\-241.2734\\-99\\-157.3079\\-239.3203\\-99\\-159.0539\\-235.4141\\-99\\-160.01\\-233.4609\\-99\\-160.7592\\-231.5078\\-99\\-161.6918\\-229.5547\\-99\\-162.7276\\-225.6484\\-99\\-163.6224\\-223.6953\\-99\\-164.6446\\-219.7891\\-99\\-165.4921\\-217.8359\\-99\\-166.3697\\-213.9297\\-99\\-166.9922\\-211.9014\\-99\\-167.4557\\-210.0234\\-99\\-167.7188\\-208.0703\\-99\\-168.1414\\-204.1641\\-99\\-168.6796\\-196.3516\\-99\\-168.8446\\-192.4453\\-99\\-168.7308\\-188.5391\\-99\\-168.2222\\-182.6797\\-99\\-167.588\\-176.8203\\-99\\-167.2604\\-174.8672\\-99\\-166.2326\\-170.9609\\-99\\-165.3818\\-167.0547\\-99\\-164.5909\\-165.1016\\-99\\-164.0079\\-163.1484\\-99\\-163.5678\\-161.1953\\-99\\-162.7234\\-159.2422\\-99\\-161.6104\\-155.3359\\-99\\-160.6996\\-153.3828\\-99\\-159.9371\\-151.4297\\-99\\-158.9476\\-149.4766\\-99\\-158.0627\\-147.5234\\-99\\-156.8879\\-145.5703\\-99\\-156.0398\\-143.6172\\-99\\-154.9235\\-141.6641\\-99\\-153.9738\\-139.7109\\-99\\-151.5193\\-135.8047\\-99\\-149.4141\\-132.7529\\-99\\-147.4609\\-130.0475\\-99\\-145.5078\\-127.822\\-99\\-143.5547\\-125.3262\\-99\\-140.7035\\-122.1328\\-99\\-136.586\\-118.2266\\-99\\-135.7422\\-117.6188\\-99\\-133.7891\\-115.8961\\-99\\-131.8359\\-114.2747\\-99\\-129.4118\\-112.3672\\-99\\-127.9297\\-111.5648\\-99\\-125.9766\\-109.8755\\-99\\-122.0703\\-107.5781\\-99\\-120.1172\\-106.3411\\-99\\-118.1641\\-105.4321\\-99\\-116.2109\\-104.088\\-99\\-112.3047\\-102.5756\\-99\\-108.3984\\-101.3392\\-99\\-106.4453\\-100.9163\\-99\\-104.4922\\-100.0206\\-99\\-100.5859\\-99.51024\\-99\\-98.63281\\-98.53939\\-99\\-96.67969\\-98.21772\\-99\\-92.77344\\-97.84082\\-99\\-90.82031\\-97.40137\\-99\\-86.91406\\-96.94825\\-99\\-79.10156\\-96.39182\\-99\\-75.19531\\-96.2643\\-99\\-67.38281\\-96.21013\\-99\\-61.52344\\-96.34433\\-99\\-57.61719\\-96.61805\\-99\\-53.71094\\-97.12103\\-99\\-51.75781\\-97.4375\\-99\\-49.80469\\-97.90507\\-99\\-47.85156\\-98.1861\\-99\\-45.89844\\-98.6058\\-99\\-43.94531\\-99.46629\\-99\\-41.99219\\-99.88061\\-99\\-40.03906\\-100.5534\\-99\\-36.13281\\-102.2458\\-99\\-32.22656\\-104.1837\\-99\\-30.27344\\-105.59\\-99\\-28.32031\\-107.1293\\-99\\-26.36719\\-108.1886\\-99\\-24.41406\\-109.956\\-99\\-22.10023\\-112.3672\\-99\\-20.50781\\-114.6743\\-99\\-19.50836\\-116.2734\\-99\\-18.16559\\-118.2266\\-99\\-17.29485\\-120.1797\\-99\\-16.05603\\-122.1328\\-99\\-14.09149\\-126.0391\\-99\\-13.38959\\-127.9922\\-99\\-12.38251\\-129.9453\\-99\\-11.29056\\-133.8516\\-99\\-10.47516\\-135.8047\\-99\\-10.06662\\-137.7578\\-99\\-8.578125\\-143.6172\\-99\\-7.805102\\-147.5234\\-99\\-7.169596\\-151.4297\\-99\\-6.111145\\-155.3359\\-99\\-5.668308\\-159.2422\\-99\\-4.817082\\-161.1953\\-99\\-3.806785\\-165.1016\\-99\\-2.929688\\-166.4548\\-99\\-0.7152289\\-169.0078\\-99\\0.9765625\\-170.8278\\-99\\2.929688\\-170.5514\\-99\\3.727214\\-169.0078\\-99\\4.882813\\-167.3167\\-99\\5.748402\\-165.1016\\-99\\6.305563\\-159.2422\\-99\\6.917318\\-157.2891\\-99\\7.657877\\-153.3828\\-99\\8.780185\\-149.4766\\-99\\10.2761\\-145.5703\\-99\\10.8631\\-143.6172\\-99\\11.81075\\-141.6641\\-99\\12.46197\\-139.7109\\-99\\13.25684\\-137.7578\\-99\\13.73184\\-135.8047\\-99\\14.5678\\-133.8516\\-99\\15.25427\\-131.8984\\-99\\16.60156\\-129.0307\\-99\\17.23069\\-127.9922\\-99\\18.16239\\-126.0391\\-99\\20.61743\\-122.1328\\-99\\22.46094\\-118.6908\\-99\\24.22931\\-116.2734\\-99\\25.87426\\-114.3203\\-99\\27.29181\\-112.3672\\-99\\28.96743\\-110.4141\\-99\\30.92041\\-108.4609\\-99\\34.17969\\-105.9202\\-99\\36.13281\\-104.0743\\-99\\38.13645\\-102.6016\\-99\\40.03906\\-101.625\\-99\\41.99219\\-100.1736\\-99\\43.94531\\-99.49198\\-99\\45.89844\\-98.24866\\-99\\47.85156\\-97.91023\\-99\\49.80469\\-96.64713\\-99\\51.75781\\-96.26806\\-99\\53.71094\\-95.7408\\-99\\55.66406\\-95.33838\\-99\\59.57031\\-94.78042\\-99\\61.52344\\-94.06065\\-99\\63.47656\\-93.79712\\-99\\67.38281\\-93.62755\\-99\\71.28906\\-93.56285\\-99\\77.14844\\-93.5899\\-99\\83.00781\\-93.84232\\-99\\84.96094\\-93.97526\\-99\\88.86719\\-94.47168\\-99\\90.82031\\-94.97055\\-99\\94.72656\\-95.50418\\-99\\98.63281\\-96.33588\\-99\\100.27\\-96.74219\\-99\\102.5391\\-97.49065\\-99\\106.4453\\-98.55811\\-99\\108.3984\\-99.57422\\-99\\110.3516\\-99.94392\\-99\\112.3047\\-100.8455\\-99\\114.2578\\-101.4823\\-99\\116.2109\\-102.2314\\-99\\118.1641\\-103.2958\\-99\\120.1172\\-104.2002\\-99\\124.0234\\-106.6073\\-99\\125.9766\\-107.6666\\-99\\129.8828\\-110.2802\\-99\\131.8359\\-111.8018\\-99\\134.7399\\-114.3203\\-99\\135.7422\\-115.2886\\-99\\139.6484\\-119.3853\\-99\\140.4932\\-120.1797\\-99\\142.2043\\-122.1328\\-99\\143.7188\\-124.0859\\-99\\144.8785\\-126.0391\\-99\\146.5203\\-127.9922\\-99\\147.9943\\-129.9453\\-99\\149.1019\\-131.8984\\-99\\151.7537\\-135.8047\\-99\\155.2819\\-141.6641\\-99\\156.1996\\-143.6172\\-99\\159.1797\\-149.5376\\-99\\160.0701\\-151.4297\\-99\\160.8528\\-153.3828\\-99\\161.7647\\-155.3359\\-99\\162.6912\\-159.2422\\-99\\163.4753\\-161.1953\\-99\\164.2832\\-165.1016\\-99\\164.7551\\-167.0547\\-99\\165.4061\\-169.0078\\-99\\165.7535\\-170.9609\\-99\\166.814\\-178.7734\\-99\\167.1666\\-180.7266\\-99\\167.5254\\-184.6328\\-99\\167.7838\\-190.4922\\-99\\167.9171\\-196.3516\\-99\\167.9171\\-204.1641\\-99\\167.8382\\-208.0703\\-99\\167.649\\-211.9766\\-99\\167.3327\\-215.8828\\-99\\167.0444\\-217.8359\\-99\\166.3319\\-221.7422\\-99\\165.746\\-225.6484\\-99\\165.3209\\-227.6016\\-99\\164.5631\\-229.5547\\-99\\163.6684\\-233.4609\\-99\\162.8309\\-235.4141\\-99\\162.2582\\-237.3672\\-99\\161.7942\\-239.3203\\-99\\160.8508\\-241.2734\\-99\\160.0602\\-243.2266\\-99\\159.0157\\-245.1797\\-99\\158.0733\\-247.1328\\-99\\156.8657\\-249.0859\\-99\\156.0535\\-251.0391\\-99\\154.8055\\-252.9922\\-99\\153.8246\\-254.9453\\-99\\150.797\\-258.8516\\-99\\149.677\\-260.8047\\-99\\148.1753\\-262.7578\\-99\\144.7879\\-266.6641\\-99\\143.5547\\-268.1671\\-99\\139.6484\\-272.5152\\-99\\135.8022\\-276.4297\\-99\\131.8359\\-280.1605\\-99\\129.3861\\-282.2891\\-99\\124.5476\\-286.1953\\-99\\124.0234\\-286.687\\-99\\121.804\\-288.1484\\-99\\120.1172\\-289.1605\\-99\\118.1641\\-290.4474\\-99\\116.2109\\-291.5066\\-99\\114.2578\\-292.8649\\-99\\110.3516\\-294.8928\\-99\\108.3984\\-295.5773\\-99\\106.4453\\-296.614\\-99\\104.4922\\-297.1859\\-99\\102.5391\\-298.1732\\-99\\98.63281\\-299.3641\\-99\\96.67969\\-300.1046\\-99\\94.72656\\-300.5354\\-99\\88.86719\\-301.4095\\-99\\84.96094\\-302.1505\\-99\\83.00781\\-302.3793\\-99\\79.10156\\-302.6283\\-99\\75.19531\\-302.6776\\-99\\71.28906\\-302.6028\\-99\\67.38281\\-302.37\\-99\\65.42969\\-302.1003\\-99\\61.52344\\-301.293\\-99\\57.61719\\-300.5738\\-99\\55.66406\\-299.9198\\-99\\53.71094\\-299.0658\\-99\\51.75781\\-298.3718\\-99\\49.80469\\-297.2305\\-99\\47.85156\\-296.5286\\-99\\45.89844\\-295.3514\\-99\\43.94531\\-294.5061\\-99\\40.54954\\-292.0547\\-99\\38.08594\\-290.0598\\-99\\36.13281\\-288.6679\\-99\\33.49946\\-286.1953\\-99\\30.11196\\-282.2891\\-99\\28.32031\\-280.0482\\-99\\25.75766\\-276.4297\\-99\\24.73958\\-274.4766\\-99\\24.41406\\-274.101\\-99\\22.46094\\-270.9496\\-99\\22.1444\\-270.5703\\-99\\21.23141\\-268.6172\\-99\\20.03933\\-266.6641\\-99\\18.74249\\-262.7578\\-99\\17.81581\\-260.8047\\-99\\17.32086\\-258.8516\\-99\\16.50682\\-256.8984\\-99\\15.84145\\-254.9453\\-99\\15.37162\\-252.9922\\-99\\14.21089\\-249.0859\\-99\\13.79395\\-247.1328\\-99\\13.13308\\-243.2266\\-99\\12.52254\\-241.2734\\-99\\12.03824\\-239.3203\\-99\\11.37514\\-235.4141\\-99\\9.586907\\-229.5547\\-99\\8.789063\\-227.6473\\-99\\6.835938\\-224.6418\\-99\\4.882813\\-223.8739\\-99\\3.662109\\-223.6953\\-99\\0.9765625\\-222.9803\\-99\\-0.9765625\\-224.8136\\-99\\-3.301056\\-227.6016\\-99\\-4.882813\\-229.4129\\-99\\-6.078125\\-231.5078\\-99\\-7.06999\\-233.4609\\-99\\-7.64057\\-235.4141\\-99\\-8.351046\\-237.3672\\-99\\-9.362399\\-239.3203\\-99\\-10.13545\\-241.2734\\-99\\-11.1617\\-243.2266\\-99\\-12.54921\\-247.1328\\-99\\-13.50066\\-249.0859\\-99\\-13.9552\\-251.0391\\-99\\-15.66723\\-254.9453\\-99\\-17.57813\\-258.8516\\-99\\-18.40049\\-260.8047\\-99\\-19.39944\\-262.7578\\-99\\-20.07004\\-264.7109\\-99\\-21.24885\\-266.6641\\-99\\-22.17721\\-268.6172\\-99\\-24.62861\\-272.5234\\-99\\-25.58717\\-274.4766\\-99\\-26.84508\\-276.4297\\-99\\-27.9903\\-278.3828\\-99\\-30.27344\\-281.3791\\-99\\-32.64408\\-284.2422\\-99\\-33.9635\\-286.1953\\-99\\-36.13281\\-288.5165\\-99\\-37.87904\\-290.1016\\-99\\-40.03906\\-292.1795\\-99\\-42.44911\\-294.0078\\-99\\-45.89844\\-296.3117\\-99\\-47.85156\\-297.2293\\-99\\-49.80469\\-298.4746\\-99\\-51.75781\\-299.2415\\-99\\-53.71094\\-300.2487\\-99\\-55.66406\\-300.7986\\-99\\-57.61719\\-301.2006\\-99\\-61.52344\\-302.2123\\-99\\-63.47656\\-302.51\\-99\\-67.38281\\-302.7969\\-99\\-71.28906\\-302.8977\\-99\\-77.14844\\-302.8237\\-99\\-81.05469\\-302.6028\\-99\\-83.00781\\-302.3921\\-99"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002350"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "368"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "77"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.96094\\-301.9211\\-97\\-86.91406\\-301.4584\\-97\\-92.77344\\-300.4614\\-97\\-94.72656\\-299.8748\\-97\\-96.67969\\-299.1375\\-97\\-98.63281\\-298.5742\\-97\\-100.5859\\-297.6578\\-97\\-104.4922\\-296.1739\\-97\\-106.4453\\-295.2131\\-97\\-108.3984\\-294.5575\\-97\\-110.3516\\-293.3588\\-97\\-112.3047\\-292.3847\\-97\\-112.7035\\-292.0547\\-97\\-115.7398\\-290.1016\\-97\\-116.2109\\-289.7007\\-97\\-118.1641\\-288.6505\\-97\\-121.3823\\-286.1953\\-97\\-124.0234\\-283.9269\\-97\\-125.9766\\-282.5\\-97\\-127.9297\\-280.891\\-97\\-131.8359\\-277.017\\-97\\-134.4925\\-274.4766\\-97\\-136.2855\\-272.5234\\-97\\-137.6953\\-270.7518\\-97\\-139.6484\\-268.5421\\-97\\-141.1331\\-266.6641\\-97\\-144.0131\\-262.7578\\-97\\-147.4609\\-257.7561\\-97\\-148.1141\\-256.8984\\-97\\-149.1491\\-254.9453\\-97\\-152.4905\\-249.0859\\-97\\-153.7325\\-247.1328\\-97\\-154.5638\\-245.1797\\-97\\-155.6253\\-243.2266\\-97\\-156.3023\\-241.2734\\-97\\-158.9988\\-235.4141\\-97\\-159.9725\\-233.4609\\-97\\-160.7254\\-231.5078\\-97\\-161.6732\\-229.5547\\-97\\-162.7276\\-225.6484\\-97\\-163.5957\\-223.6953\\-97\\-164.6446\\-219.7891\\-97\\-165.4921\\-217.8359\\-97\\-166.3506\\-213.9297\\-97\\-167.4681\\-210.0234\\-97\\-168.1605\\-204.1641\\-97\\-168.8446\\-194.3984\\-97\\-168.9211\\-192.4453\\-97\\-168.9372\\-188.5391\\-97\\-168.703\\-186.5859\\-97\\-168.3772\\-182.6797\\-97\\-167.8217\\-176.8203\\-97\\-167.2604\\-172.9141\\-97\\-166.2188\\-169.0078\\-97\\-165.8815\\-167.0547\\-97\\-165.3602\\-165.1016\\-97\\-164.6282\\-163.1484\\-97\\-163.6306\\-159.2422\\-97\\-162.8147\\-157.2891\\-97\\-161.7077\\-153.3828\\-97\\-159.1879\\-147.5234\\-97\\-158.1633\\-145.5703\\-97\\-157.0031\\-143.6172\\-97\\-156.2072\\-141.6641\\-97\\-155.0729\\-139.7109\\-97\\-154.1174\\-137.7578\\-97\\-153.3203\\-136.3857\\-97\\-151.6113\\-133.8516\\-97\\-150.1968\\-131.8984\\-97\\-148.9049\\-129.9453\\-97\\-147.4609\\-128.0471\\-97\\-145.5078\\-125.8839\\-97\\-143.5547\\-123.4032\\-97\\-141.6016\\-121.127\\-97\\-140.6907\\-120.1797\\-97\\-137.6953\\-117.3299\\-97\\-136.5095\\-116.2734\\-97\\-134.0451\\-114.3203\\-97\\-131.7574\\-112.3672\\-97\\-129.2503\\-110.4141\\-97\\-125.9766\\-108.1066\\-97\\-122.0703\\-105.7734\\-97\\-120.1172\\-105.0109\\-97\\-118.1641\\-103.4886\\-97\\-116.2109\\-102.2874\\-97\\-114.2578\\-101.8159\\-97\\-112.3047\\-100.9131\\-97\\-110.3516\\-100.1686\\-97\\-108.3984\\-99.57503\\-97\\-106.4453\\-99.14538\\-97\\-104.4922\\-98.28531\\-97\\-102.5391\\-97.85091\\-97\\-100.5859\\-97.57619\\-97\\-98.63281\\-96.86665\\-97\\-96.67969\\-96.39703\\-97\\-92.77344\\-95.97697\\-97\\-90.82031\\-95.87177\\-97\\-86.91406\\-95.25611\\-97\\-81.05469\\-94.79893\\-97\\-73.24219\\-94.52808\\-97\\-67.38281\\-94.49693\\-97\\-61.52344\\-94.6571\\-97\\-59.57031\\-94.77994\\-97\\-55.66406\\-95.13218\\-97\\-53.71094\\-95.54688\\-97\\-51.75781\\-95.85762\\-97\\-49.80469\\-96.05415\\-97\\-47.85156\\-96.41386\\-97\\-45.89844\\-97.11461\\-97\\-43.94531\\-97.65412\\-97\\-41.99219\\-98.0625\\-97\\-40.03906\\-99.10783\\-97\\-38.08594\\-99.58841\\-97\\-34.17969\\-101.3312\\-97\\-32.22656\\-102.2789\\-97\\-30.27344\\-103.5541\\-97\\-28.32031\\-105.1423\\-97\\-26.36719\\-106.2329\\-97\\-24.41406\\-107.9358\\-97\\-21.90645\\-110.4141\\-97\\-20.25035\\-112.3672\\-97\\-19.14228\\-114.3203\\-97\\-17.74729\\-116.2734\\-97\\-16.49397\\-118.2266\\-97\\-15.49797\\-120.1797\\-97\\-14.37062\\-122.1328\\-97\\-13.52692\\-124.0859\\-97\\-12.49015\\-126.0391\\-97\\-11.71875\\-127.9922\\-97\\-11.15042\\-129.9453\\-97\\-10.04791\\-131.8984\\-97\\-9.687783\\-133.8516\\-97\\-8.416645\\-137.7578\\-97\\-7.654747\\-141.6641\\-97\\-7.106236\\-143.6172\\-97\\-6.268168\\-147.5234\\-97\\-5.793724\\-149.4766\\-97\\-5.187988\\-153.3828\\-97\\-4.192947\\-155.3359\\-97\\-3.804348\\-157.2891\\-97\\-3.135851\\-159.2422\\-97\\-2.060309\\-161.1953\\-97\\-0.9765625\\-162.8721\\-97\\0.9765625\\-164.051\\-97\\2.929688\\-162.6938\\-97\\3.854305\\-161.1953\\-97\\4.099528\\-159.2422\\-97\\4.951862\\-157.2891\\-97\\5.343967\\-155.3359\\-97\\5.633319\\-153.3828\\-97\\6.826456\\-149.4766\\-97\\8.213141\\-145.5703\\-97\\8.799235\\-143.6172\\-97\\9.726872\\-141.6641\\-97\\10.40649\\-139.7109\\-97\\11.22175\\-137.7578\\-97\\11.62284\\-135.8047\\-97\\12.30277\\-133.8516\\-97\\13.95631\\-129.9453\\-97\\15.81513\\-126.0391\\-97\\17.15829\\-124.0859\\-97\\17.96312\\-122.1328\\-97\\19.32566\\-120.1797\\-97\\20.33841\\-118.2266\\-97\\21.69709\\-116.2734\\-97\\23.30972\\-114.3203\\-97\\24.41406\\-112.5826\\-97\\26.25304\\-110.4141\\-97\\28.32031\\-108.2013\\-97\\30.27344\\-106.3626\\-97\\34.17969\\-102.8957\\-97\\36.13281\\-101.6543\\-97\\38.08594\\-100.275\\-97\\40.03906\\-99.29263\\-97\\41.99219\\-97.92616\\-97\\43.94531\\-97.25663\\-97\\45.89844\\-96.12149\\-97\\47.85156\\-95.26159\\-97\\49.80469\\-94.65216\\-97\\51.75781\\-94.34517\\-97\\53.71094\\-93.67933\\-97\\55.66406\\-93.25849\\-97\\59.57031\\-92.90231\\-97\\61.52344\\-92.16606\\-97\\63.47656\\-91.89752\\-97\\65.42969\\-91.77545\\-97\\69.33594\\-91.66846\\-97\\73.24219\\-91.66261\\-97\\77.14844\\-91.74364\\-97\\83.00781\\-92.06537\\-97\\84.96094\\-92.30264\\-97\\86.91406\\-92.88244\\-97\\92.77344\\-93.60607\\-97\\98.63281\\-94.85295\\-97\\100.5859\\-95.45805\\-97\\104.4922\\-96.38779\\-97\\108.3984\\-97.82646\\-97\\112.3047\\-99.40895\\-97\\114.2578\\-100.0996\\-97\\116.2109\\-101.0762\\-97\\118.1641\\-101.8893\\-97\\122.0703\\-103.9013\\-97\\126.0864\\-106.5078\\-97\\127.9297\\-107.6165\\-97\\129.8828\\-109.0313\\-97\\131.8359\\-110.3238\\-97\\135.7422\\-113.6834\\-97\\137.6953\\-115.6026\\-97\\140.1804\\-118.2266\\-97\\141.8176\\-120.1797\\-97\\143.2264\\-122.1328\\-97\\146.3416\\-126.0391\\-97\\147.7071\\-127.9922\\-97\\153.9418\\-137.7578\\-97\\154.8967\\-139.7109\\-97\\156.0141\\-141.6641\\-97\\156.7524\\-143.6172\\-97\\157.9155\\-145.5703\\-97\\158.7763\\-147.5234\\-97\\159.8522\\-149.4766\\-97\\160.552\\-151.4297\\-97\\161.5192\\-153.3828\\-97\\162.0913\\-155.3359\\-97\\162.4974\\-157.2891\\-97\\163.2136\\-159.2422\\-97\\163.7835\\-161.1953\\-97\\164.5081\\-165.1016\\-97\\165.5932\\-169.0078\\-97\\166.343\\-174.8672\\-97\\167.193\\-180.7266\\-97\\167.5374\\-184.6328\\-97\\167.8431\\-192.4453\\-97\\167.9056\\-200.2578\\-97\\167.8826\\-204.1641\\-97\\167.7217\\-210.0234\\-97\\167.6179\\-211.9766\\-97\\167.2664\\-215.8828\\-97\\166.2735\\-221.7422\\-97\\165.7023\\-225.6484\\-97\\165.2508\\-227.6016\\-97\\164.5267\\-229.5547\\-97\\163.66\\-233.4609\\-97\\162.7915\\-235.4141\\-97\\161.7818\\-239.3203\\-97\\160.8233\\-241.2734\\-97\\160.0483\\-243.2266\\-97\\158.9886\\-245.1797\\-97\\158.0421\\-247.1328\\-97\\156.829\\-249.0859\\-97\\156.0059\\-251.0391\\-97\\154.7619\\-252.9922\\-97\\153.7624\\-254.9453\\-97\\150.7183\\-258.8516\\-97\\149.549\\-260.8047\\-97\\148.096\\-262.7578\\-97\\144.6734\\-266.6641\\-97\\143.5547\\-268.0343\\-97\\141.276\\-270.5703\\-97\\137.6953\\-274.3734\\-97\\135.6471\\-276.4297\\-97\\131.8359\\-279.9841\\-97\\129.2074\\-282.2891\\-97\\124.3035\\-286.1953\\-97\\124.0234\\-286.4839\\-97\\120.1172\\-289.0651\\-97\\116.2109\\-291.3657\\-97\\114.2578\\-292.7585\\-97\\112.3047\\-293.7121\\-97\\110.3516\\-294.8051\\-97\\108.3984\\-295.4727\\-97\\106.4453\\-296.5321\\-97\\104.4922\\-297.1186\\-97\\102.5391\\-298.0226\\-97\\100.5859\\-298.7461\\-97\\98.63281\\-299.2904\\-97\\96.67969\\-299.9893\\-97\\94.72656\\-300.497\\-97\\88.86719\\-301.365\\-97\\84.96094\\-302.1003\\-97\\81.05469\\-302.51\\-97\\77.14844\\-302.6466\\-97\\73.24219\\-302.6351\\-97\\69.33594\\-302.4978\\-97\\65.42969\\-302.0608\\-97\\63.47656\\-301.6206\\-97\\57.61719\\-300.5317\\-97\\51.75781\\-298.3184\\-97\\49.80469\\-297.2075\\-97\\47.85156\\-296.5021\\-97\\45.89844\\-295.3164\\-97\\43.94531\\-294.4622\\-97\\41.99219\\-293.1034\\-97\\38.08594\\-290.0436\\-97\\36.13281\\-288.6577\\-97\\33.5264\\-286.1953\\-97\\30.1875\\-282.2891\\-97\\28.32031\\-279.9989\\-97\\25.76673\\-276.4297\\-97\\24.74201\\-274.4766\\-97\\24.41406\\-274.1042\\-97\\22.46094\\-270.9819\\-97\\22.11981\\-270.5703\\-97\\21.20451\\-268.6172\\-97\\20.00651\\-266.6641\\-97\\18.68541\\-262.7578\\-97\\17.78666\\-260.8047\\-97\\17.28352\\-258.8516\\-97\\16.41456\\-256.8984\\-97\\15.76949\\-254.9453\\-97\\15.28293\\-252.9922\\-97\\14.1129\\-249.0859\\-97\\13.31851\\-245.1797\\-97\\12.12198\\-241.2734\\-97\\11.73598\\-239.3203\\-97\\11.25026\\-237.3672\\-97\\9.8066\\-233.4609\\-97\\8.789063\\-231.4913\\-97\\7.428851\\-229.5547\\-97\\6.835938\\-228.8724\\-97\\4.882813\\-228.3254\\-97\\0.9765625\\-228.3899\\-97\\-0.9765625\\-229.1609\\-97\\-2.929688\\-230.8698\\-97\\-4.882813\\-232.7896\\-97\\-5.375573\\-233.4609\\-97\\-6.187855\\-235.4141\\-97\\-7.397269\\-237.3672\\-97\\-8.260995\\-239.3203\\-97\\-9.433461\\-241.2734\\-97\\-10.30442\\-243.2266\\-97\\-11.41633\\-245.1797\\-97\\-12.0627\\-247.1328\\-97\\-13.07588\\-249.0859\\-97\\-14.4043\\-252.9922\\-97\\-15.43527\\-254.9453\\-97\\-16.2225\\-256.8984\\-97\\-17.38172\\-258.8516\\-97\\-18.07877\\-260.8047\\-97\\-19.20359\\-262.7578\\-97\\-19.85887\\-264.7109\\-97\\-21.03991\\-266.6641\\-97\\-21.93649\\-268.6172\\-97\\-23.27383\\-270.5703\\-97\\-24.31861\\-272.5234\\-97\\-26.36719\\-275.9813\\-97\\-27.86113\\-278.3828\\-97\\-30.27344\\-281.4655\\-97\\-32.62149\\-284.2422\\-97\\-33.94859\\-286.1953\\-97\\-36.13281\\-288.5165\\-97\\-37.92459\\-290.1016\\-97\\-40.03906\\-292.1073\\-97\\-43.94531\\-295.0092\\-97\\-45.89844\\-296.2141\\-97\\-47.85156\\-297.1571\\-97\\-49.80469\\-298.3811\\-97\\-51.75781\\-299.1432\\-97\\-53.71094\\-300.1181\\-97\\-55.66406\\-300.7083\\-97\\-59.57031\\-301.5403\\-97\\-61.52344\\-302.088\\-97\\-63.47656\\-302.4227\\-97\\-65.42969\\-302.6145\\-97\\-69.33594\\-302.7969\\-97\\-73.24219\\-302.8503\\-97\\-77.14844\\-302.7748\\-97\\-81.05469\\-302.53\\-97\\-83.00781\\-302.285\\-97"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002349"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "351"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "78"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-83.00781\\-302.1874\\-95\\-86.91406\\-301.3486\\-95\\-92.77344\\-300.3764\\-95\\-94.72656\\-299.6509\\-95\\-98.63281\\-298.4547\\-95\\-100.5859\\-297.4541\\-95\\-102.5391\\-296.8065\\-95\\-106.4453\\-295.1178\\-95\\-108.3984\\-294.3944\\-95\\-108.9607\\-294.0078\\-95\\-112.3047\\-292.0934\\-95\\-115.4514\\-290.1016\\-95\\-116.2109\\-289.4929\\-95\\-118.1641\\-288.4392\\-95\\-120.1172\\-287.0315\\-95\\-123.4242\\-284.2422\\-95\\-124.0234\\-283.6731\\-95\\-127.9297\\-280.659\\-95\\-132.2091\\-276.4297\\-95\\-133.7891\\-274.9794\\-95\\-136.0627\\-272.5234\\-95\\-137.6043\\-270.5703\\-95\\-139.6484\\-268.2586\\-95\\-142.483\\-264.7109\\-95\\-145.0853\\-260.8047\\-95\\-145.5078\\-260.3124\\-95\\-147.966\\-256.8984\\-95\\-148.9824\\-254.9453\\-95\\-150.1965\\-252.9922\\-95\\-151.1917\\-251.0391\\-95\\-153.6415\\-247.1328\\-95\\-154.4744\\-245.1797\\-95\\-155.5472\\-243.2266\\-95\\-156.2617\\-241.2734\\-95\\-157.1242\\-239.3203\\-95\\-158.0987\\-237.3672\\-95\\-158.9478\\-235.4141\\-95\\-159.9255\\-233.4609\\-95\\-160.6995\\-231.5078\\-95\\-161.6602\\-229.5547\\-95\\-162.705\\-225.6484\\-95\\-163.5773\\-223.6953\\-95\\-164.6015\\-219.7891\\-95\\-165.4644\\-217.8359\\-95\\-166.3392\\-213.9297\\-95\\-167.4463\\-210.0234\\-95\\-167.7376\\-208.0703\\-95\\-168.1507\\-204.1641\\-95\\-168.9056\\-194.3984\\-95\\-169.0162\\-192.4453\\-95\\-169.0461\\-188.5391\\-95\\-168.5561\\-182.6797\\-95\\-168.3262\\-180.7266\\-95\\-167.8167\\-174.8672\\-95\\-167.5684\\-172.9141\\-95\\-167.2084\\-170.9609\\-95\\-166.6352\\-169.0078\\-95\\-165.3796\\-163.1484\\-95\\-164.5898\\-161.1953\\-95\\-163.6658\\-157.2891\\-95\\-162.2933\\-153.3828\\-95\\-161.8034\\-151.4297\\-95\\-160.9116\\-149.4766\\-95\\-160.1563\\-147.5234\\-95\\-159.2663\\-145.5703\\-95\\-158.2277\\-143.6172\\-95\\-157.3671\\-141.6641\\-95\\-156.2709\\-139.7109\\-95\\-155.3976\\-137.7578\\-95\\-153.3203\\-134.2767\\-95\\-151.7086\\-131.8984\\-95\\-150.2539\\-129.9453\\-95\\-149.4141\\-128.5298\\-95\\-147.507\\-126.0391\\-95\\-144.0465\\-122.1328\\-95\\-142.5442\\-120.1797\\-95\\-140.6166\\-118.2266\\-95\\-137.6953\\-115.5067\\-95\\-135.7422\\-113.928\\-95\\-134.0355\\-112.3672\\-95\\-131.5836\\-110.4141\\-95\\-128.9617\\-108.4609\\-95\\-125.9766\\-106.3622\\-95\\-122.0703\\-103.9688\\-95\\-120.1172\\-103.0156\\-95\\-118.1641\\-101.7344\\-95\\-115.9237\\-100.6484\\-95\\-112.3047\\-99.2522\\-95\\-110.3516\\-98.42567\\-95\\-106.4453\\-97.29688\\-95\\-102.5391\\-96.034\\-95\\-98.63281\\-95.38712\\-95\\-94.72656\\-94.46901\\-95\\-92.77344\\-94.23212\\-95\\-88.86719\\-93.94893\\-95\\-86.91406\\-93.7571\\-95\\-84.96094\\-93.4581\\-95\\-79.10156\\-93.05589\\-95\\-73.24219\\-92.79491\\-95\\-67.38281\\-92.7178\\-95\\-61.52344\\-92.98965\\-95\\-55.66406\\-93.53455\\-95\\-53.71094\\-93.90946\\-95\\-49.80469\\-94.35591\\-95\\-47.85156\\-94.81594\\-95\\-45.89844\\-95.41256\\-95\\-41.99219\\-96.27376\\-95\\-40.03906\\-97.11779\\-95\\-38.08594\\-97.74903\\-95\\-32.22656\\-100.4171\\-95\\-30.27344\\-101.601\\-95\\-28.32031\\-103.0007\\-95\\-26.36719\\-104.2411\\-95\\-24.41406\\-105.9533\\-95\\-21.73913\\-108.4609\\-95\\-19.96707\\-110.4141\\-95\\-18.55469\\-112.4052\\-95\\-17.42903\\-114.3203\\-95\\-15.98751\\-116.2734\\-95\\-12.69531\\-122.3653\\-95\\-11.93728\\-124.0859\\-95\\-9.902057\\-127.9922\\-95\\-9.197298\\-129.9453\\-95\\-8.3125\\-131.8984\\-95\\-7.842319\\-133.8516\\-95\\-7.489483\\-135.8047\\-95\\-6.667259\\-137.7578\\-95\\-6.25465\\-139.7109\\-95\\-5.977958\\-141.6641\\-95\\-5.336828\\-143.6172\\-95\\-4.34932\\-147.5234\\-95\\-3.127078\\-151.4297\\-95\\-1.983173\\-153.3828\\-95\\-0.9765625\\-155.3576\\-95\\0.9765625\\-155.9295\\-95\\2.929688\\-153.8489\\-95\\3.831845\\-151.4297\\-95\\4.664902\\-149.4766\\-95\\5.313649\\-147.5234\\-95\\6.069841\\-145.5703\\-95\\6.64605\\-143.6172\\-95\\7.621951\\-141.6641\\-95\\8.009454\\-139.7109\\-95\\8.780103\\-137.7578\\-95\\10.0179\\-133.8516\\-95\\11.5754\\-129.9453\\-95\\12.44469\\-127.9922\\-95\\13.51061\\-126.0391\\-95\\14.32292\\-124.0859\\-95\\15.58291\\-122.1328\\-95\\16.60156\\-120.3424\\-95\\17.95313\\-118.2266\\-95\\19.01245\\-116.2734\\-95\\23.23615\\-110.4141\\-95\\24.41406\\-109.1157\\-95\\26.93315\\-106.5078\\-95\\30.27344\\-103.3109\\-95\\32.22656\\-101.6948\\-95\\33.63121\\-100.6484\\-95\\36.4926\\-98.69531\\-95\\38.08594\\-97.97452\\-95\\41.99219\\-95.73224\\-95\\43.94531\\-95.06428\\-95\\45.89844\\-94.08814\\-95\\47.85156\\-93.27901\\-95\\49.80469\\-92.6548\\-95\\51.75781\\-92.33428\\-95\\53.71094\\-91.72311\\-95\\55.66406\\-91.22286\\-95\\59.57031\\-90.64994\\-95\\61.52344\\-90.18641\\-95\\65.42969\\-89.80498\\-95\\69.33594\\-89.7065\\-95\\73.24219\\-89.74711\\-95\\77.14844\\-89.90625\\-95\\83.00781\\-90.3482\\-95\\88.86719\\-91.45058\\-95\\90.82031\\-91.69784\\-95\\95.93099\\-92.83594\\-95\\98.63281\\-93.60472\\-95\\102.5391\\-94.4159\\-95\\104.4922\\-95.15625\\-95\\108.3984\\-96.21291\\-95\\109.6824\\-96.74219\\-95\\114.2578\\-98.87364\\-95\\118.1641\\-100.6056\\-95\\120.1172\\-101.6181\\-95\\122.0703\\-102.5238\\-95\\129.8828\\-107.6208\\-95\\131.8359\\-109.1\\-95\\135.6938\\-112.3672\\-95\\139.704\\-116.2734\\-95\\143.5547\\-120.8633\\-95\\145.5078\\-123.3205\\-95\\147.4869\\-126.0391\\-95\\148.6398\\-127.9922\\-95\\150.0269\\-129.9453\\-95\\151.1603\\-131.8984\\-95\\153.7598\\-135.8047\\-95\\154.6578\\-137.7578\\-95\\155.8245\\-139.7109\\-95\\156.5867\\-141.6641\\-95\\157.7025\\-143.6172\\-95\\158.4778\\-145.5703\\-95\\159.6172\\-147.5234\\-95\\160.3527\\-149.4766\\-95\\161.2031\\-151.4297\\-95\\161.9301\\-153.3828\\-95\\162.323\\-155.3359\\-95\\162.8698\\-157.2891\\-95\\163.608\\-159.2422\\-95\\164.3273\\-163.1484\\-95\\164.781\\-165.1016\\-95\\165.3646\\-167.0547\\-95\\165.7191\\-169.0078\\-95\\166.6756\\-176.8203\\-95\\167.2431\\-180.7266\\-95\\167.5494\\-184.6328\\-95\\167.8136\\-192.4453\\-95\\167.8596\\-198.3047\\-95\\167.8317\\-204.1641\\-95\\167.6643\\-210.0234\\-95\\167.4143\\-213.9297\\-95\\167.193\\-215.8828\\-95\\166.5222\\-219.7891\\-95\\165.6634\\-225.6484\\-95\\165.2007\\-227.6016\\-95\\164.4939\\-229.5547\\-95\\163.6516\\-233.4609\\-95\\162.7794\\-235.4141\\-95\\161.7525\\-239.3203\\-95\\160.7869\\-241.2734\\-95\\160.0253\\-243.2266\\-95\\158.9373\\-245.1797\\-95\\158.0047\\-247.1328\\-95\\156.7902\\-249.0859\\-95\\155.9564\\-251.0391\\-95\\154.7145\\-252.9922\\-95\\153.6686\\-254.9453\\-95\\150.6426\\-258.8516\\-95\\149.4141\\-260.7947\\-95\\148.016\\-262.7578\\-95\\144.5618\\-266.6641\\-95\\143.5547\\-267.9035\\-95\\141.1482\\-270.5703\\-95\\139.2289\\-272.5234\\-95\\137.6953\\-274.1986\\-95\\135.4691\\-276.4297\\-95\\131.8359\\-279.8138\\-95\\129.0333\\-282.2891\\-95\\124.0234\\-286.2199\\-95\\120.1172\\-288.9458\\-95\\118.1641\\-289.9984\\-95\\116.2109\\-291.2152\\-95\\114.2578\\-292.6201\\-95\\112.3047\\-293.5508\\-95\\110.3516\\-294.7072\\-95\\108.3984\\-295.3634\\-95\\106.4453\\-296.4232\\-95\\104.4922\\-297.0406\\-95\\100.5859\\-298.6742\\-95\\98.63281\\-299.2143\\-95\\94.72656\\-300.4496\\-95\\88.86719\\-301.332\\-95\\84.96094\\-302.0626\\-95\\81.05469\\-302.4693\\-95\\77.14844\\-302.6214\\-95\\73.24219\\-302.6167\\-95\\69.33594\\-302.461\\-95\\67.38281\\-302.2818\\-95\\65.42969\\-301.9793\\-95\\63.47656\\-301.5423\\-95\\59.57031\\-300.8669\\-95\\57.61719\\-300.4768\\-95\\51.75781\\-298.2651\\-95\\49.80469\\-297.1746\\-95\\47.85156\\-296.4713\\-95\\45.89844\\-295.2863\\-95\\43.94531\\-294.438\\-95\\41.99219\\-293.0701\\-95\\40.03906\\-291.492\\-95\\36.13281\\-288.6226\\-95\\33.5719\\-286.1953\\-95\\31.8859\\-284.2422\\-95\\28.32031\\-279.9269\\-95\\25.77993\\-276.4297\\-95\\24.74201\\-274.4766\\-95\\24.41406\\-274.1042\\-95\\22.46094\\-271.0035\\-95\\22.09803\\-270.5703\\-95\\21.17283\\-268.6172\\-95\\19.97103\\-266.6641\\-95\\19.37548\\-264.7109\\-95\\17.74004\\-260.8047\\-95\\17.20908\\-258.8516\\-95\\16.26547\\-256.8984\\-95\\15.14267\\-252.9922\\-95\\14.3821\\-251.0391\\-95\\13.47778\\-247.1328\\-95\\12.96496\\-245.1797\\-95\\12.21035\\-243.2266\\-95\\11.14265\\-239.3203\\-95\\9.146554\\-235.4141\\-95\\8.789063\\-234.8802\\-95\\6.835938\\-233.3541\\-95\\4.882813\\-232.8874\\-95\\2.929688\\-232.5658\\-95\\0.9765625\\-232.8058\\-95\\-0.9765625\\-233.2656\\-95\\-2.929688\\-234.5135\\-95\\-4.882813\\-236.3398\\-95\\-5.771396\\-237.3672\\-95\\-7.234375\\-239.3203\\-95\\-8.244871\\-241.2734\\-95\\-9.571651\\-243.2266\\-95\\-11.61874\\-247.1328\\-95\\-12.45117\\-249.0859\\-95\\-13.43246\\-251.0391\\-95\\-14.06996\\-252.9922\\-95\\-15.13357\\-254.9453\\-95\\-15.92197\\-256.8984\\-95\\-17.09295\\-258.8516\\-95\\-17.82908\\-260.8047\\-95\\-18.9439\\-262.7578\\-95\\-19.65784\\-264.7109\\-95\\-21.73139\\-268.6172\\-95\\-23.07494\\-270.5703\\-95\\-24.04472\\-272.5234\\-95\\-25.32432\\-274.4766\\-95\\-27.72561\\-278.3828\\-95\\-30.27344\\-281.544\\-95\\-32.58366\\-284.2422\\-95\\-33.92075\\-286.1953\\-95\\-36.13281\\-288.5042\\-95\\-37.97259\\-290.1016\\-95\\-40.09699\\-292.0547\\-95\\-43.94531\\-294.9475\\-95\\-45.89844\\-296.1059\\-95\\-47.85156\\-297.0778\\-95\\-49.80469\\-298.2698\\-95\\-51.75781\\-299.0371\\-95\\-53.71094\\-299.9619\\-95\\-55.66406\\-300.6292\\-95\\-59.57031\\-301.4066\\-95\\-61.52344\\-301.951\\-95\\-63.47656\\-302.3152\\-95\\-65.42969\\-302.5497\\-95\\-69.33594\\-302.7522\\-95\\-73.24219\\-302.8023\\-95\\-77.14844\\-302.7178\\-95\\-81.05469\\-302.461\\-95"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002348"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "360"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "79"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-83.00781\\-302.0349\\-93\\-86.91406\\-301.2395\\-93\\-90.82031\\-300.6405\\-93\\-92.77344\\-300.254\\-93\\-94.72656\\-299.4603\\-93\\-98.63281\\-298.3184\\-93\\-100.5859\\-297.2964\\-93\\-102.5391\\-296.7031\\-93\\-104.4922\\-295.7565\\-93\\-108.3984\\-294.1914\\-93\\-110.3516\\-293.0313\\-93\\-112.3047\\-291.759\\-93\\-114.2578\\-290.6886\\-93\\-116.2109\\-289.3089\\-93\\-118.1535\\-288.1484\\-93\\-120.1172\\-286.8523\\-93\\-123.2291\\-284.2422\\-93\\-125.9766\\-281.8558\\-93\\-127.9297\\-280.3441\\-93\\-131.913\\-276.4297\\-93\\-134.0138\\-274.4766\\-93\\-137.33\\-270.5703\\-93\\-140.7948\\-266.6641\\-93\\-142.3404\\-264.7109\\-93\\-144.8975\\-260.8047\\-93\\-146.3982\\-258.8516\\-93\\-147.7347\\-256.8984\\-93\\-148.8105\\-254.9453\\-93\\-150.1038\\-252.9922\\-93\\-151.0204\\-251.0391\\-93\\-151.3672\\-250.5919\\-93\\-153.4947\\-247.1328\\-93\\-154.3904\\-245.1797\\-93\\-155.4362\\-243.2266\\-93\\-157.0511\\-239.3203\\-93\\-158.0659\\-237.3672\\-93\\-158.884\\-235.4141\\-93\\-159.844\\-233.4609\\-93\\-160.6478\\-231.5078\\-93\\-161.6506\\-229.5547\\-93\\-162.6694\\-225.6484\\-93\\-163.568\\-223.6953\\-93\\-164.5821\\-219.7891\\-93\\-165.4161\\-217.8359\\-93\\-165.92\\-215.8828\\-93\\-166.3097\\-213.9297\\-93\\-167.4143\\-210.0234\\-93\\-167.7304\\-208.0703\\-93\\-168.1507\\-204.1641\\-93\\-168.2921\\-202.2109\\-93\\-168.8156\\-196.3516\\-93\\-169.1043\\-192.4453\\-93\\-169.1466\\-188.5391\\-93\\-168.9053\\-184.6328\\-93\\-168.4869\\-180.7266\\-93\\-167.9806\\-174.8672\\-93\\-167.5175\\-170.9609\\-93\\-166.58\\-167.0547\\-93\\-165.7623\\-163.1484\\-93\\-165.2764\\-161.1953\\-93\\-164.5572\\-159.2422\\-93\\-163.6379\\-155.3359\\-93\\-162.8783\\-153.3828\\-93\\-162.2606\\-151.4297\\-93\\-161.8034\\-149.4766\\-93\\-160.9116\\-147.5234\\-93\\-159.2781\\-143.6172\\-93\\-158.2574\\-141.6641\\-93\\-157.3543\\-139.7109\\-93\\-156.3031\\-137.7578\\-93\\-155.4129\\-135.8047\\-93\\-153.3203\\-132.3413\\-93\\-151.7648\\-129.9453\\-93\\-150.2769\\-127.9922\\-93\\-149.4141\\-126.6376\\-93\\-147.5209\\-124.0859\\-93\\-145.8054\\-122.1328\\-93\\-143.8802\\-120.1797\\-93\\-142.0743\\-118.2266\\-93\\-139.6484\\-115.7316\\-93\\-133.7784\\-110.4141\\-93\\-131.8359\\-108.9123\\-93\\-127.9297\\-106.125\\-93\\-125.6553\\-104.5547\\-93\\-124.0234\\-103.656\\-93\\-122.0703\\-102.4348\\-93\\-120.1172\\-101.4163\\-93\\-118.1641\\-100.1757\\-93\\-114.2578\\-98.37959\\-93\\-112.3047\\-97.81702\\-93\\-109.9057\\-96.74219\\-93\\-106.4453\\-95.65466\\-93\\-104.4922\\-95.18129\\-93\\-102.5391\\-94.56561\\-93\\-100.5859\\-94.11679\\-93\\-98.63281\\-93.80542\\-93\\-96.67969\\-93.59626\\-93\\-94.72656\\-93.07594\\-93\\-92.77344\\-92.67696\\-93\\-88.86719\\-92.21274\\-93\\-84.96094\\-92.00299\\-93\\-81.05469\\-91.51166\\-93\\-75.19531\\-91.20557\\-93\\-71.28906\\-91.09511\\-93\\-69.33594\\-91.09328\\-93\\-65.42969\\-91.19757\\-93\\-59.57031\\-91.57338\\-93\\-57.61719\\-91.89577\\-93\\-53.71094\\-92.24741\\-93\\-51.75781\\-92.49595\\-93\\-49.80469\\-92.89808\\-93\\-47.85156\\-93.59087\\-93\\-45.89844\\-93.8125\\-93\\-43.94531\\-94.19101\\-93\\-41.99219\\-94.96896\\-93\\-40.03906\\-95.43756\\-93\\-36.38174\\-96.74219\\-93\\-32.22656\\-98.65358\\-93\\-30.27344\\-99.81683\\-93\\-28.32031\\-101.2147\\-93\\-26.36719\\-102.3369\\-93\\-24.41406\\-103.9655\\-93\\-21.75611\\-106.5078\\-93\\-19.87056\\-108.4609\\-93\\-18.30449\\-110.4141\\-93\\-15.68963\\-114.3203\\-93\\-14.57458\\-116.2734\\-93\\-12.69531\\-119.8259\\-93\\-10.74219\\-123.1354\\-93\\-9.289253\\-126.0391\\-93\\-8.201599\\-127.9922\\-93\\-6.845064\\-131.8984\\-93\\-6.059301\\-133.8516\\-93\\-5.724921\\-135.8047\\-93\\-4.76844\\-137.7578\\-93\\-4.354745\\-139.7109\\-93\\-4.085493\\-141.6641\\-93\\-3.019372\\-143.6172\\-93\\-1.638455\\-147.5234\\-93\\-0.9765625\\-148.5331\\-93\\0.9765625\\-149.3483\\-93\\2.783203\\-147.5234\\-93\\3.922129\\-145.5703\\-93\\4.54635\\-143.6172\\-93\\5.708582\\-141.6641\\-93\\6.024761\\-139.7109\\-93\\6.790304\\-137.7578\\-93\\7.913257\\-133.8516\\-93\\8.540919\\-131.8984\\-93\\9.322555\\-129.9453\\-93\\10.26848\\-127.9922\\-93\\11.43859\\-126.0391\\-93\\12.22358\\-124.0859\\-93\\13.51046\\-122.1328\\-93\\14.51765\\-120.1797\\-93\\15.75567\\-118.2266\\-93\\16.60156\\-116.4857\\-93\\18.23493\\-114.3203\\-93\\20.83965\\-110.4141\\-93\\22.51344\\-108.4609\\-93\\24.41406\\-105.978\\-93\\26.36719\\-103.9833\\-93\\28.09896\\-102.6016\\-93\\30.27344\\-101.0591\\-93\\33.08823\\-98.69531\\-93\\34.17969\\-98.05988\\-93\\36.13281\\-96.59907\\-93\\38.08594\\-95.84461\\-93\\40.03906\\-94.87523\\-93\\41.99219\\-93.79736\\-93\\43.94531\\-93.23805\\-93\\45.89844\\-92.15687\\-93\\49.80469\\-90.625\\-93\\51.75781\\-90.28136\\-93\\55.66406\\-89.41386\\-93\\59.57031\\-88.8552\\-93\\61.52344\\-88.40625\\-93\\65.42969\\-88.15871\\-93\\69.33594\\-88.11227\\-93\\73.24219\\-88.16447\\-93\\77.14844\\-88.37706\\-93\\79.10156\\-88.67188\\-93\\84.96094\\-89.35787\\-93\\88.86719\\-89.91294\\-93\\90.82031\\-90.28328\\-93\\92.77344\\-90.55022\\-93\\94.08482\\-90.88281\\-93\\96.67969\\-91.71891\\-93\\100.5859\\-92.6277\\-93\\102.5391\\-93.28125\\-93\\104.4922\\-93.82655\\-93\\106.4453\\-94.27386\\-93\\108.3984\\-95.17188\\-93\\110.3516\\-95.70689\\-93\\112.3047\\-96.44464\\-93\\118.1641\\-99.53718\\-93\\120.1172\\-100.3332\\-93\\122.0703\\-101.4455\\-93\\124.0234\\-102.4443\\-93\\127.2045\\-104.5547\\-93\\129.8828\\-106.5169\\-93\\131.8359\\-107.7832\\-93\\133.7891\\-109.3573\\-93\\137.0254\\-112.3672\\-93\\139.6484\\-114.9793\\-93\\142.5708\\-118.2266\\-93\\145.6539\\-122.1328\\-93\\147.4609\\-124.5795\\-93\\149.7371\\-127.9922\\-93\\150.8223\\-129.9453\\-93\\153.4712\\-133.8516\\-93\\154.4262\\-135.8047\\-93\\155.5687\\-137.7578\\-93\\156.3721\\-139.7109\\-93\\157.4413\\-141.6641\\-93\\158.2536\\-143.6172\\-93\\159.2331\\-145.5703\\-93\\160.0998\\-147.5234\\-93\\160.8392\\-149.4766\\-93\\161.7084\\-151.4297\\-93\\162.5716\\-155.3359\\-93\\163.3212\\-157.2891\\-93\\163.8443\\-159.2422\\-93\\164.4853\\-163.1484\\-93\\165.0912\\-165.1016\\-93\\165.5359\\-167.0547\\-93\\165.8074\\-169.0078\\-93\\166.2422\\-172.9141\\-93\\167.2414\\-180.7266\\-93\\167.5374\\-184.6328\\-93\\167.7217\\-190.4922\\-93\\167.8088\\-194.3984\\-93\\167.8088\\-198.3047\\-93\\167.7542\\-206.1172\\-93\\167.5046\\-211.9766\\-93\\167.379\\-213.9297\\-93\\167.1276\\-215.8828\\-93\\166.4536\\-219.7891\\-93\\165.6272\\-225.6484\\-93\\165.1338\\-227.6016\\-93\\164.452\\-229.5547\\-93\\163.6136\\-233.4609\\-93\\162.7417\\-235.4141\\-93\\161.7225\\-239.3203\\-93\\160.7303\\-241.2734\\-93\\159.9926\\-243.2266\\-93\\158.8745\\-245.1797\\-93\\157.959\\-247.1328\\-93\\156.7315\\-249.0859\\-93\\155.8871\\-251.0391\\-93\\154.6537\\-252.9922\\-93\\153.5538\\-254.9453\\-93\\152.1254\\-256.8984\\-93\\150.5432\\-258.8516\\-93\\149.4141\\-260.6056\\-93\\147.8909\\-262.7578\\-93\\144.4312\\-266.6641\\-93\\143.5547\\-267.7834\\-93\\141.0011\\-270.5703\\-93\\139.0728\\-272.5234\\-93\\137.6953\\-274.0307\\-93\\135.3214\\-276.4297\\-93\\133.7891\\-277.7664\\-93\\131.8359\\-279.6569\\-93\\128.8342\\-282.2891\\-93\\123.721\\-286.1953\\-93\\120.1172\\-288.8102\\-93\\118.1641\\-289.7736\\-93\\114.2578\\-292.4514\\-93\\112.3047\\-293.41\\-93\\110.3516\\-294.6182\\-93\\108.3984\\-295.2625\\-93\\106.4453\\-296.3092\\-93\\102.5391\\-297.6788\\-93\\100.5859\\-298.5941\\-93\\98.63281\\-299.1321\\-93\\94.72656\\-300.3884\\-93\\88.86719\\-301.2906\\-93\\84.96094\\-302.0081\\-93\\81.05469\\-302.4227\\-93\\77.14844\\-302.5956\\-93\\73.24219\\-302.5765\\-93\\69.33594\\-302.4139\\-93\\67.38281\\-302.2261\\-93\\63.47656\\-301.4696\\-93\\59.57031\\-300.815\\-93\\57.61719\\-300.4329\\-93\\55.66406\\-299.6525\\-93\\51.75781\\-298.209\\-93\\49.80469\\-297.1428\\-93\\47.85156\\-296.4201\\-93\\45.89844\\-295.249\\-93\\43.94531\\-294.3775\\-93\\41.99219\\-293.0367\\-93\\38.08594\\-289.9348\\-93\\36.13281\\-288.5376\\-93\\33.62863\\-286.1953\\-93\\31.9553\\-284.2422\\-93\\28.32031\\-279.8316\\-93\\25.79864\\-276.4297\\-93\\24.74201\\-274.4766\\-93\\24.41406\\-274.1073\\-93\\22.46094\\-271.0313\\-93\\22.07425\\-270.5703\\-93\\21.14868\\-268.6172\\-93\\19.93075\\-266.6641\\-93\\19.34928\\-264.7109\\-93\\17.67932\\-260.8047\\-93\\17.10464\\-258.8516\\-93\\16.12505\\-256.8984\\-93\\15.5894\\-254.9453\\-93\\14.9111\\-252.9922\\-93\\14.12307\\-251.0391\\-93\\13.18359\\-247.1328\\-93\\12.29195\\-245.1797\\-93\\11.66168\\-243.2266\\-93\\10.86426\\-241.2734\\-93\\9.880914\\-239.3203\\-93\\8.789063\\-237.9649\\-93\\6.835938\\-236.5878\\-93\\4.882813\\-236.4004\\-93\\0.9765625\\-236.3276\\-93\\-0.9765625\\-236.509\\-93\\-2.929688\\-237.6801\\-93\\-4.882813\\-238.6064\\-93\\-5.573552\\-239.3203\\-93\\-7.135759\\-241.2734\\-93\\-8.249383\\-243.2266\\-93\\-8.789063\\-243.8881\\-93\\-10.87827\\-247.1328\\-93\\-12.69531\\-250.5281\\-93\\-13.02573\\-251.0391\\-93\\-13.7623\\-252.9922\\-93\\-14.6405\\-254.9453\\-93\\-16.54857\\-258.8516\\-93\\-17.56203\\-260.8047\\-93\\-19.45755\\-264.7109\\-93\\-20.27847\\-266.6641\\-93\\-22.81303\\-270.5703\\-93\\-23.83475\\-272.5234\\-93\\-25.17641\\-274.4766\\-93\\-26.32581\\-276.4297\\-93\\-27.58943\\-278.3828\\-93\\-30.27344\\-281.6308\\-93\\-32.52989\\-284.2422\\-93\\-33.89116\\-286.1953\\-93\\-36.13281\\-288.4891\\-93\\-40.22167\\-292.0547\\-93\\-43.94531\\-294.8861\\-93\\-47.85156\\-296.9979\\-93\\-49.80469\\-298.1038\\-93\\-53.71094\\-299.7703\\-93\\-55.66406\\-300.5317\\-93\\-59.57031\\-301.2835\\-93\\-63.47656\\-302.2012\\-93\\-65.42969\\-302.461\\-93\\-69.33594\\-302.689\\-93\\-73.24219\\-302.7522\\-93\\-77.14844\\-302.6533\\-93\\-81.05469\\-302.3571\\-93"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002347"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "346"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "80"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.96094\\-301.4809\\-91\\-90.82031\\-300.5508\\-91\\-92.77344\\-300.0941\\-91\\-94.72656\\-299.3234\\-91\\-96.67969\\-298.7838\\-91\\-98.63281\\-298.1378\\-91\\-100.5859\\-297.1692\\-91\\-102.5391\\-296.5942\\-91\\-104.4922\\-295.5745\\-91\\-106.4453\\-294.907\\-91\\-108.2886\\-294.0078\\-91\\-110.3516\\-292.8958\\-91\\-112.3047\\-291.5237\\-91\\-114.2578\\-290.4934\\-91\\-116.2109\\-289.1436\\-91\\-120.1172\\-286.6494\\-91\\-123.0087\\-284.2422\\-91\\-127.5724\\-280.3359\\-91\\-131.8359\\-276.1321\\-91\\-133.7891\\-274.3219\\-91\\-135.353\\-272.5234\\-91\\-140.601\\-266.6641\\-91\\-142.174\\-264.7109\\-91\\-143.3546\\-262.7578\\-91\\-144.7132\\-260.8047\\-91\\-146.2259\\-258.8516\\-91\\-147.5336\\-256.8984\\-91\\-148.6445\\-254.9453\\-91\\-149.9859\\-252.9922\\-91\\-150.8689\\-251.0391\\-91\\-152.1886\\-249.0859\\-91\\-153.3203\\-247.1216\\-91\\-155.3299\\-243.2266\\-91\\-156.9569\\-239.3203\\-91\\-158.0132\\-237.3672\\-91\\-158.8427\\-235.4141\\-91\\-159.8726\\-233.4609\\-91\\-160.6165\\-231.5078\\-91\\-161.6277\\-229.5547\\-91\\-162.6275\\-225.6484\\-91\\-163.5264\\-223.6953\\-91\\-164.5416\\-219.7891\\-91\\-165.3646\\-217.8359\\-91\\-165.8841\\-215.8828\\-91\\-166.2854\\-213.9297\\-91\\-167.3943\\-210.0234\\-91\\-167.6955\\-208.0703\\-91\\-168.1386\\-204.1641\\-91\\-168.457\\-200.2578\\-91\\-168.8594\\-196.3516\\-91\\-169.1466\\-192.4453\\-91\\-169.2254\\-188.5391\\-91\\-169.0607\\-184.6328\\-91\\-168.2505\\-176.8203\\-91\\-168.1006\\-174.8672\\-91\\-167.6965\\-170.9609\\-91\\-167.3996\\-169.0078\\-91\\-166.4075\\-165.1016\\-91\\-165.6736\\-161.1953\\-91\\-165.1338\\-159.2422\\-91\\-164.4592\\-157.2891\\-91\\-163.5711\\-153.3828\\-91\\-162.7408\\-151.4297\\-91\\-161.7147\\-147.5234\\-91\\-160.8049\\-145.5703\\-91\\-160.0407\\-143.6172\\-91\\-159.1797\\-141.7275\\-91\\-155.2734\\-133.8648\\-91\\-153.3203\\-130.5847\\-91\\-151.6586\\-127.9922\\-91\\-147.4609\\-122.3345\\-91\\-141.6016\\-116.0136\\-91\\-139.6484\\-114.1356\\-91\\-135.4731\\-110.4141\\-91\\-133.1138\\-108.4609\\-91\\-130.4104\\-106.5078\\-91\\-127.8184\\-104.5547\\-91\\-125.9766\\-103.4848\\-91\\-124.0234\\-102.1174\\-91\\-122.0703\\-101.149\\-91\\-120.1172\\-100.0094\\-91\\-116.2109\\-97.97961\\-91\\-112.3047\\-96.25391\\-91\\-110.3516\\-95.67228\\-91\\-107.8074\\-94.78906\\-91\\-104.4922\\-93.83405\\-91\\-100.5859\\-93.07392\\-91\\-98.63281\\-92.35107\\-91\\-96.67969\\-92.00755\\-91\\-92.77344\\-91.54548\\-91\\-90.82031\\-90.89239\\-91\\-88.86719\\-90.57813\\-91\\-84.96094\\-90.21963\\-91\\-83.00781\\-90.10017\\-91\\-77.14844\\-89.88618\\-91\\-75.19531\\-89.69752\\-91\\-71.28906\\-89.61405\\-91\\-67.38281\\-89.66974\\-91\\-63.47656\\-89.93924\\-91\\-59.57031\\-90.09747\\-91\\-55.66406\\-90.43961\\-91\\-53.71094\\-90.74212\\-91\\-51.75781\\-91.15826\\-91\\-49.80469\\-91.70914\\-91\\-45.89844\\-92.30132\\-91\\-43.94531\\-92.95348\\-91\\-40.03906\\-93.99076\\-91\\-38.08594\\-94.65943\\-91\\-34.17969\\-96.16547\\-91\\-32.22656\\-97.26678\\-91\\-30.27344\\-98.11573\\-91\\-28.32031\\-99.52416\\-91\\-24.41406\\-102.1086\\-91\\-21.8011\\-104.5547\\-91\\-19.89632\\-106.5078\\-91\\-18.17255\\-108.4609\\-91\\-16.60156\\-110.6847\\-91\\-14.2985\\-114.3203\\-91\\-13.26834\\-116.2734\\-91\\-12.1213\\-118.2266\\-91\\-11.10734\\-120.1797\\-91\\-8.709882\\-124.0859\\-91\\-6.863839\\-127.9922\\-91\\-5.859375\\-129.9453\\-91\\-5.115327\\-131.8984\\-91\\-4.141671\\-133.8516\\-91\\-3.706135\\-135.8047\\-91\\-2.464117\\-137.7578\\-91\\-1.983643\\-139.7109\\-91\\-0.9765625\\-141.8879\\-91\\0.9765625\\-143.0086\\-91\\2.929688\\-141.3874\\-91\\4.882813\\-137.6633\\-91\\5.916262\\-133.8516\\-91\\6.669922\\-131.8984\\-91\\7.290378\\-129.9453\\-91\\8.203125\\-127.9922\\-91\\9.312855\\-126.0391\\-91\\10.14737\\-124.0859\\-91\\11.43101\\-122.1328\\-91\\12.37305\\-120.1797\\-91\\13.66266\\-118.2266\\-91\\14.61823\\-116.2734\\-91\\16.60156\\-113.2135\\-91\\18.82102\\-110.4141\\-91\\20.07039\\-108.4609\\-91\\21.48438\\-106.5078\\-91\\24.41406\\-103.4621\\-91\\26.36719\\-101.6447\\-91\\27.98412\\-100.6484\\-91\\30.27344\\-98.97852\\-91\\32.22656\\-97.26877\\-91\\36.13281\\-94.74165\\-91\\38.08594\\-93.97246\\-91\\40.03906\\-93.08236\\-91\\41.99219\\-91.9375\\-91\\43.94531\\-91.36295\\-91\\45.89844\\-90.21875\\-91\\47.85156\\-89.87815\\-91\\49.80469\\-89.0692\\-91\\51.75781\\-88.63503\\-91\\53.71094\\-88.38374\\-91\\55.66406\\-87.93799\\-91\\57.61719\\-87.62487\\-91\\59.57031\\-87.43563\\-91\\65.42969\\-87.07334\\-91\\71.28906\\-87.10619\\-91\\73.24219\\-87.17019\\-91\\77.14844\\-87.39735\\-91\\81.05469\\-87.68475\\-91\\84.96094\\-88.08955\\-91\\88.86719\\-88.72792\\-91\\94.72656\\-89.98284\\-91\\96.67969\\-90.30385\\-91\\98.63281\\-90.85777\\-91\\100.5859\\-91.74043\\-91\\102.5391\\-92.09532\\-91\\104.4922\\-92.56194\\-91\\106.4453\\-93.38189\\-91\\110.3516\\-94.71197\\-91\\114.2578\\-96.23608\\-91\\116.2109\\-97.43022\\-91\\118.1641\\-98.29485\\-91\\120.1172\\-99.47795\\-91\\122.0703\\-100.3152\\-91\\125.9766\\-102.5583\\-91\\127.9297\\-103.9059\\-91\\129.8828\\-105.4351\\-91\\133.7891\\-108.2575\\-91\\135.7422\\-109.9184\\-91\\140.2813\\-114.3203\\-91\\141.9168\\-116.2734\\-91\\143.4091\\-118.2266\\-91\\146.603\\-122.1328\\-91\\148.026\\-124.0859\\-91\\149.4141\\-126.2523\\-91\\150.4165\\-127.9922\\-91\\151.7821\\-129.9453\\-91\\152.908\\-131.8984\\-91\\154.1715\\-133.8516\\-91\\156.1479\\-137.7578\\-91\\156.9574\\-139.7109\\-91\\157.9824\\-141.6641\\-91\\158.8126\\-143.6172\\-91\\159.8327\\-145.5703\\-91\\160.4838\\-147.5234\\-91\\161.4108\\-149.4766\\-91\\161.969\\-151.4297\\-91\\162.3504\\-153.3828\\-91\\162.8831\\-155.3359\\-91\\163.6047\\-157.2891\\-91\\164.6343\\-163.1484\\-91\\165.2508\\-165.1016\\-91\\165.6164\\-167.0547\\-91\\166.2706\\-172.9141\\-91\\167.0298\\-178.7734\\-91\\167.2296\\-180.7266\\-91\\167.5828\\-186.5859\\-91\\167.7332\\-194.3984\\-91\\167.77\\-198.3047\\-91\\167.6832\\-206.1172\\-91\\167.4241\\-211.9766\\-91\\167.0298\\-215.8828\\-91\\166.3775\\-219.7891\\-91\\165.561\\-225.6484\\-91\\164.3899\\-229.5547\\-91\\163.5773\\-233.4609\\-91\\162.6939\\-235.4141\\-91\\161.6881\\-239.3203\\-91\\160.6895\\-241.2734\\-91\\159.9576\\-243.2266\\-91\\158.7825\\-245.1797\\-91\\157.8967\\-247.1328\\-91\\156.6619\\-249.0859\\-91\\155.8286\\-251.0391\\-91\\153.4029\\-254.9453\\-91\\152.0203\\-256.8984\\-91\\150.414\\-258.8516\\-91\\149.4141\\-260.442\\-91\\147.7455\\-262.7578\\-91\\146.0925\\-264.7109\\-91\\144.2522\\-266.6641\\-91\\143.5547\\-267.6104\\-91\\140.8675\\-270.5703\\-91\\137.0321\\-274.4766\\-91\\135.1744\\-276.4297\\-91\\133.7891\\-277.6291\\-91\\131.8359\\-279.4854\\-91\\129.8828\\-281.2279\\-91\\127.9297\\-282.8537\\-91\\125.9766\\-284.2171\\-91\\123.4343\\-286.1953\\-91\\120.1172\\-288.6768\\-91\\118.1641\\-289.5794\\-91\\117.5045\\-290.1016\\-91\\114.2578\\-292.2541\\-91\\112.3047\\-293.2726\\-91\\110.3516\\-294.4928\\-91\\108.3984\\-295.1664\\-91\\106.4453\\-296.1324\\-91\\102.5391\\-297.5511\\-91\\100.5859\\-298.5064\\-91\\98.63281\\-299.0368\\-91\\94.72656\\-300.3156\\-91\\92.77344\\-300.6744\\-91\\86.91406\\-301.5546\\-91\\83.00781\\-302.2012\\-91\\81.05469\\-302.3793\\-91\\77.14844\\-302.5572\\-91\\71.28906\\-302.4734\\-91\\67.38281\\-302.1529\\-91\\63.47656\\-301.4066\\-91\\59.57031\\-300.7752\\-91\\57.61719\\-300.3916\\-91\\55.66406\\-299.593\\-91\\51.75781\\-298.1616\\-91\\49.80469\\-297.1076\\-91\\47.85156\\-296.3795\\-91\\45.89844\\-295.216\\-91\\43.94531\\-294.3143\\-91\\41.99219\\-292.9871\\-91\\38.08594\\-289.8478\\-91\\36.13281\\-288.4437\\-91\\33.71635\\-286.1953\\-91\\28.32031\\-279.7768\\-91\\25.83143\\-276.4297\\-91\\24.76591\\-274.4766\\-91\\24.41406\\-274.0778\\-91\\22.46094\\-271.0547\\-91\\22.05078\\-270.5703\\-91\\21.11117\\-268.6172\\-91\\19.90928\\-266.6641\\-91\\19.31014\\-264.7109\\-91\\18.34797\\-262.7578\\-91\\16.96538\\-258.8516\\-91\\15.98566\\-256.8984\\-91\\15.4286\\-254.9453\\-91\\14.49539\\-252.9922\\-91\\13.85161\\-251.0391\\-91\\13.32642\\-249.0859\\-91\\11.5843\\-245.1797\\-91\\10.74219\\-243.6302\\-91\\8.789063\\-241.1496\\-91\\6.835938\\-240.1203\\-91\\4.882813\\-239.9677\\-91\\0.9765625\\-239.8928\\-91\\-0.9765625\\-239.9964\\-91\\-2.929688\\-240.3538\\-91\\-4.882813\\-241.894\\-91\\-6.835938\\-243.6618\\-91\\-8.128979\\-245.1797\\-91\\-8.789063\\-245.805\\-91\\-9.847574\\-247.1328\\-91\\-11.23414\\-249.0859\\-91\\-12.24293\\-251.0391\\-91\\-13.41318\\-252.9922\\-91\\-14.11033\\-254.9453\\-91\\-15.23062\\-256.8984\\-91\\-16.02746\\-258.8516\\-91\\-17.19835\\-260.8047\\-91\\-18.01696\\-262.7578\\-91\\-19.19495\\-264.7109\\-91\\-19.9245\\-266.6641\\-91\\-21.21519\\-268.6172\\-91\\-22.46094\\-270.6914\\-91\\-24.41406\\-273.779\\-91\\-24.98653\\-274.4766\\-91\\-26.08924\\-276.4297\\-91\\-27.45972\\-278.3828\\-91\\-29.06709\\-280.3359\\-91\\-30.84664\\-282.2891\\-91\\-33.84927\\-286.1953\\-91\\-36.13281\\-288.4891\\-91\\-38.07681\\-290.1016\\-91\\-40.30819\\-292.0547\\-91\\-43.94531\\-294.8175\\-91\\-49.80469\\-297.9218\\-91\\-51.75781\\-298.8329\\-91\\-55.66406\\-300.421\\-91\\-61.52344\\-301.5944\\-91\\-63.47656\\-302.0754\\-91\\-65.42969\\-302.3571\\-91\\-69.33594\\-302.6214\\-91\\-73.24219\\-302.689\\-91\\-77.14844\\-302.5765\\-91\\-81.05469\\-302.2476\\-91"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002346"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "341"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "81"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-302.1003\\-89\\-84.96094\\-301.3619\\-89\\-90.82031\\-300.4496\\-89\\-92.77344\\-299.905\\-89\\-94.72656\\-299.1924\\-89\\-96.67969\\-298.6943\\-89\\-100.5859\\-297.0702\\-89\\-102.5391\\-296.4713\\-89\\-104.4922\\-295.4459\\-89\\-106.4453\\-294.7781\\-89\\-108.3984\\-293.6869\\-89\\-110.3516\\-292.7312\\-89\\-112.3047\\-291.3378\\-89\\-114.2578\\-290.2523\\-89\\-116.2109\\-289.0006\\-89\\-120.1172\\-286.3823\\-89\\-122.7667\\-284.2422\\-89\\-127.3468\\-280.3359\\-89\\-129.8828\\-277.7679\\-89\\-133.7891\\-274.032\\-89\\-137.6953\\-269.7491\\-89\\-140.4047\\-266.6641\\-89\\-141.956\\-264.7109\\-89\\-143.1596\\-262.7578\\-89\\-146.0564\\-258.8516\\-89\\-147.4609\\-256.7237\\-89\\-149.8336\\-252.9922\\-89\\-150.7182\\-251.0391\\-89\\-152.0779\\-249.0859\\-89\\-154.2329\\-245.1797\\-89\\-156.1149\\-241.2734\\-89\\-156.8683\\-239.3203\\-89\\-157.9714\\-237.3672\\-89\\-158.7984\\-235.4141\\-89\\-159.8712\\-233.4609\\-89\\-160.5601\\-231.5078\\-89\\-161.581\\-229.5547\\-89\\-162.5846\\-225.6484\\-89\\-163.4646\\-223.6953\\-89\\-164.4802\\-219.7891\\-89\\-165.2865\\-217.8359\\-89\\-165.8418\\-215.8828\\-89\\-166.2439\\-213.9297\\-89\\-167.3503\\-210.0234\\-89\\-167.6683\\-208.0703\\-89\\-168.1125\\-204.1641\\-89\\-168.4473\\-200.2578\\-89\\-169.0313\\-194.3984\\-89\\-169.2518\\-190.4922\\-89\\-169.2755\\-188.5391\\-89\\-169.1181\\-184.6328\\-89\\-168.8004\\-180.7266\\-89\\-168.3478\\-176.8203\\-89\\-168.0343\\-172.9141\\-89\\-167.6093\\-169.0078\\-89\\-167.2466\\-167.0547\\-89\\-166.7041\\-165.1016\\-89\\-166.2699\\-163.1484\\-89\\-165.5564\\-159.2422\\-89\\-164.3473\\-155.3359\\-89\\-163.4206\\-151.4297\\-89\\-162.6219\\-149.4766\\-89\\-161.583\\-145.5703\\-89\\-160.6611\\-143.6172\\-89\\-159.934\\-141.6641\\-89\\-158.9188\\-139.7109\\-89\\-156.0927\\-133.8516\\-89\\-154.9531\\-131.8984\\-89\\-154.0093\\-129.9453\\-89\\-153.3203\\-128.8752\\-89\\-149.9941\\-124.0859\\-89\\-147.4609\\-120.8338\\-89\\-143.5547\\-116.5082\\-89\\-141.4759\\-114.3203\\-89\\-139.3573\\-112.3672\\-89\\-134.9037\\-108.4609\\-89\\-131.8359\\-106.0996\\-89\\-127.9297\\-103.351\\-89\\-125.9766\\-101.8785\\-89\\-124.0234\\-100.9599\\-89\\-122.0703\\-99.78455\\-89\\-120.1172\\-98.79209\\-89\\-118.1641\\-97.65506\\-89\\-114.2578\\-95.83392\\-89\\-112.3047\\-95.13611\\-89\\-110.3516\\-94.30451\\-89\\-108.3984\\-93.81928\\-89\\-104.4922\\-92.53935\\-89\\-102.5391\\-92.04818\\-89\\-98.63281\\-91.18508\\-89\\-96.67969\\-90.56437\\-89\\-94.72656\\-90.16711\\-89\\-86.91406\\-89.10202\\-89\\-84.96094\\-88.78899\\-89\\-81.05469\\-88.50677\\-89\\-77.14844\\-88.28588\\-89\\-73.24219\\-88.20081\\-89\\-69.33594\\-88.21122\\-89\\-63.47656\\-88.42305\\-89\\-59.57031\\-88.69563\\-89\\-57.61719\\-88.9381\\-89\\-49.80469\\-90.11112\\-89\\-46.28314\\-90.88281\\-89\\-43.94531\\-91.53625\\-89\\-41.99219\\-91.97019\\-89\\-40.03906\\-92.58994\\-89\\-38.08594\\-93.34375\\-89\\-34.17969\\-94.71128\\-89\\-30.27344\\-96.56985\\-89\\-28.32031\\-97.7575\\-89\\-26.36719\\-99.20885\\-89\\-24.41406\\-100.3287\\-89\\-22.46094\\-101.9834\\-89\\-19.86557\\-104.5547\\-89\\-18.16579\\-106.5078\\-89\\-16.60156\\-108.5177\\-89\\-15.3845\\-110.4141\\-89\\-14.02065\\-112.3672\\-89\\-11.92898\\-116.2734\\-89\\-9.707755\\-120.1797\\-89\\-8.444864\\-122.1328\\-89\\-7.458785\\-124.0859\\-89\\-6.276777\\-126.0391\\-89\\-5.33288\\-127.9922\\-89\\-3.957201\\-129.9453\\-89\\-2.95989\\-131.8984\\-89\\-0.9765625\\-134.877\\-89\\0.2335259\\-135.8047\\-89\\0.9765625\\-136.5477\\-89\\2.929688\\-135.5293\\-89\\3.590593\\-133.8516\\-89\\4.48666\\-131.8984\\-89\\5.282738\\-129.9453\\-89\\7.213665\\-126.0391\\-89\\8.019912\\-124.0859\\-89\\9.232133\\-122.1328\\-89\\10.21359\\-120.1797\\-89\\12.53568\\-116.2734\\-89\\14.98028\\-112.3672\\-89\\16.50301\\-110.4141\\-89\\17.68973\\-108.4609\\-89\\21.01452\\-104.5547\\-89\\22.46094\\-103.0215\\-89\\26.36719\\-99.51225\\-89\\28.32031\\-97.90864\\-89\\30.27344\\-96.71375\\-89\\32.22656\\-95.25452\\-89\\36.29557\\-92.83594\\-89\\38.08594\\-92.07468\\-89\\40.03906\\-91.12471\\-89\\41.99219\\-90.02069\\-89\\43.94531\\-89.43815\\-89\\45.89844\\-88.54072\\-89\\49.80469\\-87.71088\\-89\\51.75781\\-87.18076\\-89\\53.71094\\-86.78782\\-89\\59.57031\\-86.02123\\-89\\63.47656\\-85.77408\\-89\\69.33594\\-85.66691\\-89\\71.28906\\-85.70181\\-89\\75.19531\\-85.95959\\-89\\79.10156\\-86.34505\\-89\\81.05469\\-86.47453\\-89\\83.00781\\-86.80846\\-89\\84.96094\\-87.0376\\-89\\88.86719\\-87.7812\\-89\\90.82031\\-88.03507\\-89\\94.72656\\-88.70996\\-89\\96.67969\\-89.32478\\-89\\100.5859\\-90.28241\\-89\\104.4922\\-91.69994\\-89\\106.4453\\-92.2364\\-89\\108.3984\\-93.04284\\-89\\112.3047\\-94.35756\\-89\\114.2578\\-95.3648\\-89\\116.2109\\-96.18716\\-89\\118.1641\\-97.36801\\-89\\120.1172\\-98.24609\\-89\\122.0703\\-99.44705\\-89\\124.0234\\-100.4023\\-89\\125.9766\\-101.5557\\-89\\129.8828\\-104.2633\\-89\\135.2494\\-108.4609\\-89\\139.2402\\-112.3672\\-89\\141.1684\\-114.3203\\-89\\142.7225\\-116.2734\\-89\\146.0033\\-120.1797\\-89\\147.5034\\-122.1328\\-89\\148.7145\\-124.0859\\-89\\150.0767\\-126.0391\\-89\\152.4029\\-129.9453\\-89\\153.7673\\-131.8984\\-89\\154.7388\\-133.8516\\-89\\155.8913\\-135.8047\\-89\\156.5865\\-137.7578\\-89\\157.7025\\-139.7109\\-89\\158.4343\\-141.6641\\-89\\159.5117\\-143.6172\\-89\\160.9086\\-147.5234\\-89\\161.7314\\-149.4766\\-89\\162.5325\\-153.3828\\-89\\163.2276\\-155.3359\\-89\\163.7723\\-157.2891\\-89\\164.3975\\-161.1953\\-89\\164.7828\\-163.1484\\-89\\165.3539\\-165.1016\\-89\\165.888\\-169.0078\\-89\\166.51\\-174.8672\\-89\\167.0149\\-178.7734\\-89\\167.3327\\-182.6797\\-89\\167.5308\\-186.5859\\-89\\167.649\\-192.4453\\-89\\167.6988\\-198.3047\\-89\\167.6062\\-206.1172\\-89\\167.335\\-211.9766\\-89\\166.896\\-215.8828\\-89\\166.5853\\-217.8359\\-89\\165.8053\\-223.6953\\-89\\165.4738\\-225.6484\\-89\\164.3244\\-229.5547\\-89\\163.9546\\-231.5078\\-89\\163.4857\\-233.4609\\-89\\162.6244\\-235.4141\\-89\\161.6498\\-239.3203\\-89\\160.6257\\-241.2734\\-89\\159.9066\\-243.2266\\-89\\158.6699\\-245.1797\\-89\\157.8189\\-247.1328\\-89\\156.582\\-249.0859\\-89\\155.748\\-251.0391\\-89\\153.3203\\-254.84\\-89\\151.9112\\-256.8984\\-89\\150.3551\\-258.8516\\-89\\149.4141\\-260.2632\\-89\\147.583\\-262.7578\\-89\\145.9548\\-264.7109\\-89\\144.1687\\-266.6641\\-89\\143.5547\\-267.4468\\-89\\140.7399\\-270.5703\\-89\\139.6484\\-271.6272\\-89\\137.6953\\-273.7228\\-89\\135.0042\\-276.4297\\-89\\133.7891\\-277.4633\\-89\\129.8828\\-281.0733\\-89\\127.9297\\-282.6954\\-89\\125.9766\\-283.9142\\-89\\122.0703\\-287.0668\\-89\\120.1172\\-288.4859\\-89\\118.1641\\-289.4354\\-89\\116.2109\\-290.7966\\-89\\110.3516\\-294.3121\\-89\\108.3984\\-295.0693\\-89\\104.4922\\-296.7859\\-89\\102.5391\\-297.4011\\-89\\100.5859\\-298.3937\\-89\\96.67969\\-299.5352\\-89\\94.72656\\-300.2515\\-89\\92.77344\\-300.6249\\-89\\86.91406\\-301.4696\\-89\\83.00781\\-302.1147\\-89\\79.10156\\-302.4315\\-89\\75.19531\\-302.4978\\-89\\71.28906\\-302.3884\\-89\\67.38281\\-302.0349\\-89\\63.47656\\-301.3254\\-89\\59.57031\\-300.7196\\-89\\57.61719\\-300.3307\\-89\\55.66406\\-299.5138\\-89\\53.71094\\-298.8702\\-89\\51.75781\\-298.1011\\-89\\49.80469\\-297.0685\\-89\\47.85156\\-296.3229\\-89\\45.89844\\-295.1636\\-89\\43.94531\\-294.2354\\-89\\41.99219\\-292.9319\\-89\\38.08594\\-289.7512\\-89\\36.13281\\-288.3438\\-89\\33.8199\\-286.1953\\-89\\30.5625\\-282.2891\\-89\\28.32031\\-279.7237\\-89\\25.86515\\-276.4297\\-89\\24.78027\\-274.4766\\-89\\24.41406\\-274.0649\\-89\\22.46094\\-271.0701\\-89\\22.03776\\-270.5703\\-89\\21.07219\\-268.6172\\-89\\19.85051\\-266.6641\\-89\\19.24143\\-264.7109\\-89\\18.18359\\-262.7578\\-89\\17.50103\\-260.8047\\-89\\15.79392\\-256.8984\\-89\\15.13983\\-254.9453\\-89\\14.08406\\-252.9922\\-89\\13.48039\\-251.0391\\-89\\12.69531\\-249.3473\\-89\\11.49164\\-247.1328\\-89\\10.74219\\-246.0704\\-89\\8.789063\\-244.0684\\-89\\6.835938\\-243.5419\\-89\\4.882813\\-243.3264\\-89\\2.929688\\-243.2124\\-89\\0.9765625\\-243.2128\\-89\\-0.9765625\\-243.3253\\-89\\-2.929688\\-243.6507\\-89\\-4.882813\\-244.5326\\-89\\-6.835938\\-245.9444\\-89\\-8.789063\\-247.7581\\-89\\-10.74219\\-249.8765\\-89\\-11.5899\\-251.0391\\-89\\-12.7038\\-252.9922\\-89\\-14.64844\\-256.9527\\-89\\-16.60156\\-260.7721\\-89\\-18.55469\\-264.3717\\-89\\-18.80258\\-264.7109\\-89\\-19.6418\\-266.6641\\-89\\-21.93117\\-270.5703\\-89\\-23.38973\\-272.5234\\-89\\-24.72444\\-274.4766\\-89\\-25.8893\\-276.4297\\-89\\-27.32544\\-278.3828\\-89\\-28.93814\\-280.3359\\-89\\-30.78326\\-282.2891\\-89\\-33.82259\\-286.1953\\-89\\-36.13281\\-288.4865\\-89\\-38.08594\\-290.0431\\-89\\-40.38943\\-292.0547\\-89\\-43.94531\\-294.7527\\-89\\-45.89844\\-295.7092\\-89\\-47.85156\\-296.8333\\-89\\-49.80469\\-297.7058\\-89\\-51.75781\\-298.7367\\-89\\-53.71094\\-299.4325\\-89\\-55.66406\\-300.3156\\-89\\-57.61719\\-300.741\\-89\\-61.52344\\-301.4447\\-89\\-63.47656\\-301.9203\\-89\\-65.42969\\-302.234\\-89\\-69.33594\\-302.5377\\-89\\-73.24219\\-302.6028\\-89\\-77.14844\\-302.4898\\-89\\-79.10156\\-302.3442\\-89"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "342"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "82"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-301.95\\-87\\-83.00781\\-301.5546\\-87\\-88.86719\\-300.6905\\-87\\-90.82031\\-300.3464\\-87\\-94.72656\\-299.0786\\-87\\-96.67969\\-298.5848\\-87\\-98.63281\\-297.6699\\-87\\-102.5391\\-296.3229\\-87\\-104.4922\\-295.3163\\-87\\-106.4453\\-294.6692\\-87\\-108.3984\\-293.5036\\-87\\-110.3516\\-292.543\\-87\\-110.973\\-292.0547\\-87\\-114.2578\\-289.9375\\-87\\-116.2109\\-288.8497\\-87\\-119.9166\\-286.1953\\-87\\-122.4828\\-284.2422\\-87\\-125.9766\\-281.3446\\-87\\-127.9297\\-279.5614\\-87\\-129.8828\\-277.5714\\-87\\-133.7891\\-273.7957\\-87\\-137.6953\\-269.518\\-87\\-140.1828\\-266.6641\\-87\\-141.6423\\-264.7109\\-87\\-142.9478\\-262.7578\\-87\\-143.5547\\-262.0254\\-87\\-145.8513\\-258.8516\\-87\\-148.4438\\-254.9453\\-87\\-149.6582\\-252.9922\\-87\\-150.5969\\-251.0391\\-87\\-151.965\\-249.0859\\-87\\-152.9833\\-247.1328\\-87\\-154.1466\\-245.1797\\-87\\-156.0903\\-241.2734\\-87\\-156.81\\-239.3203\\-87\\-157.9383\\-237.3672\\-87\\-158.7137\\-235.4141\\-87\\-159.829\\-233.4609\\-87\\-160.5195\\-231.5078\\-87\\-161.5221\\-229.5547\\-87\\-162.0854\\-227.6016\\-87\\-162.5398\\-225.6484\\-87\\-163.4294\\-223.6953\\-87\\-164.4088\\-219.7891\\-87\\-165.2007\\-217.8359\\-87\\-165.7986\\-215.8828\\-87\\-166.671\\-211.9766\\-87\\-167.2818\\-210.0234\\-87\\-167.6296\\-208.0703\\-87\\-168.07\\-204.1641\\-87\\-168.6059\\-198.3047\\-87\\-169.0313\\-194.3984\\-87\\-169.2755\\-190.4922\\-87\\-169.2518\\-186.5859\\-87\\-169.0607\\-182.6797\\-87\\-168.641\\-178.7734\\-87\\-168.1125\\-172.9141\\-87\\-167.7231\\-169.0078\\-87\\-167.4521\\-167.0547\\-87\\-167.03\\-165.1016\\-87\\-166.4975\\-163.1484\\-87\\-165.8045\\-159.2422\\-87\\-165.4084\\-157.2891\\-87\\-164.7181\\-155.3359\\-87\\-164.2012\\-153.3828\\-87\\-163.8028\\-151.4297\\-87\\-163.2146\\-149.4766\\-87\\-162.4627\\-147.5234\\-87\\-161.9725\\-145.5703\\-87\\-161.3622\\-143.6172\\-87\\-160.4553\\-141.6641\\-87\\-159.7545\\-139.7109\\-87\\-158.6393\\-137.7578\\-87\\-157.8182\\-135.8047\\-87\\-156.692\\-133.8516\\-87\\-155.8183\\-131.8984\\-87\\-154.7164\\-129.9453\\-87\\-153.7211\\-127.9922\\-87\\-150.9124\\-124.0859\\-87\\-149.6698\\-122.1328\\-87\\-148.1247\\-120.1797\\-87\\-146.3382\\-118.2266\\-87\\-144.3998\\-116.2734\\-87\\-143.5547\\-115.2896\\-87\\-140.6599\\-112.3672\\-87\\-138.463\\-110.4141\\-87\\-137.6953\\-109.5421\\-87\\-135.7422\\-107.8227\\-87\\-133.7891\\-106.2969\\-87\\-129.8828\\-103.4834\\-87\\-127.9297\\-101.8963\\-87\\-125.5412\\-100.6484\\-87\\-118.1641\\-96.42938\\-87\\-114.2578\\-94.71197\\-87\\-112.3047\\-93.97414\\-87\\-110.3516\\-93.38885\\-87\\-108.3984\\-92.5622\\-87\\-106.4453\\-92.03911\\-87\\-102.5391\\-90.79548\\-87\\-98.63281\\-89.87454\\-87\\-96.67969\\-89.53326\\-87\\-90.82031\\-88.32713\\-87\\-86.91406\\-87.91968\\-87\\-79.10156\\-87.4313\\-87\\-77.14844\\-87.19447\\-87\\-73.24219\\-87.10176\\-87\\-67.38281\\-87.23438\\-87\\-63.47656\\-87.53969\\-87\\-59.57031\\-87.72093\\-87\\-55.66406\\-88.01332\\-87\\-51.75781\\-88.48986\\-87\\-47.85156\\-89.35461\\-87\\-43.94531\\-90.12535\\-87\\-41.99219\\-90.63492\\-87\\-40.03906\\-91.4294\\-87\\-36.13281\\-92.66448\\-87\\-34.17969\\-93.61306\\-87\\-32.22656\\-94.21235\\-87\\-28.32031\\-96.25391\\-87\\-26.36719\\-97.53095\\-87\\-24.41406\\-98.68697\\-87\\-21.95351\\-100.6484\\-87\\-20.50781\\-102.0013\\-87\\-18.11801\\-104.5547\\-87\\-16.60156\\-106.5639\\-87\\-15.32219\\-108.4609\\-87\\-13.90122\\-110.4141\\-87\\-12.8768\\-112.3672\\-87\\-10.44922\\-116.2734\\-87\\-9.427584\\-118.2266\\-87\\-8.28528\\-120.1797\\-87\\-7.370722\\-122.1328\\-87\\-3.431659\\-127.9922\\-87\\-1.726974\\-129.9453\\-87\\-0.9765625\\-130.9219\\-87\\0.9765625\\-131.7129\\-87\\2.929688\\-130.2069\\-87\\4.327948\\-127.9922\\-87\\5.379512\\-126.0391\\-87\\6.11764\\-124.0859\\-87\\7.284628\\-122.1328\\-87\\8.163061\\-120.1797\\-87\\10.47138\\-116.2734\\-87\\11.84264\\-114.3203\\-87\\12.69531\\-112.8169\\-87\\14.37988\\-110.4141\\-87\\15.53858\\-108.4609\\-87\\19.09722\\-104.5547\\-87\\20.79613\\-102.6016\\-87\\22.89807\\-100.6484\\-87\\26.36719\\-97.5284\\-87\\28.32031\\-95.98264\\-87\\30.27344\\-94.81779\\-87\\33.2955\\-92.83594\\-87\\36.66992\\-90.88281\\-87\\40.03906\\-89.40142\\-87\\41.99219\\-88.44551\\-87\\45.89844\\-87.3265\\-87\\47.85156\\-86.65844\\-87\\53.71094\\-85.51563\\-87\\57.61719\\-84.88847\\-87\\61.52344\\-84.5722\\-87\\67.38281\\-84.4375\\-87\\71.28906\\-84.47174\\-87\\75.19531\\-84.80889\\-87\\79.10156\\-85.34121\\-87\\83.00781\\-85.78448\\-87\\84.96094\\-86.10654\\-87\\86.91406\\-86.30196\\-87\\88.86719\\-86.62728\\-87\\92.77344\\-87.57374\\-87\\96.67969\\-88.21631\\-87\\100.5859\\-89.39642\\-87\\102.5391\\-89.91936\\-87\\104.4922\\-90.56666\\-87\\108.3984\\-92.10775\\-87\\110.3516\\-92.72412\\-87\\112.3047\\-93.60763\\-87\\114.2578\\-94.21333\\-87\\116.2109\\-95.37069\\-87\\118.1641\\-96.22274\\-87\\120.1172\\-97.38659\\-87\\122.0703\\-98.34457\\-87\\124.0234\\-99.57627\\-87\\125.9766\\-100.6067\\-87\\127.9297\\-101.8358\\-87\\129.8828\\-103.4006\\-87\\133.7891\\-106.2731\\-87\\135.7422\\-107.8932\\-87\\137.6953\\-109.7175\\-87\\138.2948\\-110.4141\\-87\\140.3256\\-112.3672\\-87\\142.0975\\-114.3203\\-87\\143.6571\\-116.2734\\-87\\145.0763\\-118.2266\\-87\\148.2408\\-122.1328\\-87\\149.4879\\-124.0859\\-87\\150.5657\\-126.0391\\-87\\151.983\\-127.9922\\-87\\155.4243\\-133.8516\\-87\\157.1065\\-137.7578\\-87\\158.0707\\-139.7109\\-87\\158.8937\\-141.6641\\-87\\159.8764\\-143.6172\\-87\\160.4718\\-145.5703\\-87\\161.3571\\-147.5234\\-87\\161.9153\\-149.4766\\-87\\162.7276\\-153.3828\\-87\\163.4513\\-155.3359\\-87\\163.849\\-157.2891\\-87\\164.4768\\-161.1953\\-87\\164.8702\\-163.1484\\-87\\165.4061\\-165.1016\\-87\\165.6849\\-167.0547\\-87\\166.4919\\-174.8672\\-87\\166.9693\\-178.7734\\-87\\167.2871\\-182.6797\\-87\\167.5199\\-188.5391\\-87\\167.6099\\-194.3984\\-87\\167.6062\\-202.2109\\-87\\167.4338\\-208.0703\\-87\\167.2175\\-211.9766\\-87\\165.7395\\-223.6953\\-87\\165.3856\\-225.6484\\-87\\164.736\\-227.6016\\-87\\164.2589\\-229.5547\\-87\\163.9058\\-231.5078\\-87\\163.3719\\-233.4609\\-87\\162.5682\\-235.4141\\-87\\161.5617\\-239.3203\\-87\\160.536\\-241.2734\\-87\\159.8326\\-243.2266\\-87\\158.5855\\-245.1797\\-87\\157.7402\\-247.1328\\-87\\156.502\\-249.0859\\-87\\155.6279\\-251.0391\\-87\\153.3203\\-254.673\\-87\\149.4141\\-260.0723\\-87\\147.4609\\-262.6914\\-87\\143.5547\\-267.3026\\-87\\140.5995\\-270.5703\\-87\\139.6484\\-271.4685\\-87\\137.6953\\-273.5716\\-87\\134.8159\\-276.4297\\-87\\133.7891\\-277.2971\\-87\\130.4321\\-280.3359\\-87\\129.8828\\-280.905\\-87\\127.9297\\-282.4544\\-87\\125.9766\\-283.687\\-87\\122.0703\\-286.9027\\-87\\120.1172\\-288.2045\\-87\\118.1641\\-289.3014\\-87\\116.2109\\-290.6293\\-87\\114.2578\\-291.6786\\-87\\112.3047\\-292.9773\\-87\\110.3516\\-294.0938\\-87\\108.3984\\-294.9844\\-87\\106.4453\\-295.6913\\-87\\104.4922\\-296.6759\\-87\\102.5391\\-297.2688\\-87\\100.5859\\-298.2502\\-87\\96.67969\\-299.4066\\-87\\94.72656\\-300.1621\\-87\\92.77344\\-300.5582\\-87\\86.91406\\-301.3855\\-87\\83.00781\\-302.0349\\-87\\79.10156\\-302.3664\\-87\\75.19531\\-302.4189\\-87\\71.28906\\-302.302\\-87\\67.38281\\-301.9063\\-87\\65.42969\\-301.5546\\-87\\59.57031\\-300.6698\\-87\\57.61719\\-300.2462\\-87\\55.66406\\-299.4311\\-87\\53.71094\\-298.8183\\-87\\51.75781\\-298.0088\\-87\\49.80469\\-297.0297\\-87\\47.85156\\-296.2511\\-87\\45.89844\\-295.1125\\-87\\43.94531\\-294.1528\\-87\\41.99219\\-292.8612\\-87\\36.13281\\-288.1733\\-87\\34.00143\\-286.1953\\-87\\30.70665\\-282.2891\\-87\\28.32031\\-279.6927\\-87\\25.87544\\-276.4297\\-87\\24.78299\\-274.4766\\-87\\24.41406\\-274.0683\\-87\\22.46094\\-271.1273\\-87\\21.98882\\-270.5703\\-87\\20.9763\\-268.6172\\-87\\19.75994\\-266.6641\\-87\\19.11734\\-264.7109\\-87\\17.99581\\-262.7578\\-87\\17.3133\\-260.8047\\-87\\16.22498\\-258.8516\\-87\\15.51589\\-256.8984\\-87\\12.77043\\-251.0391\\-87\\11.35578\\-249.0859\\-87\\10.74219\\-248.3856\\-87\\8.789063\\-247.0694\\-87\\6.835938\\-246.2015\\-87\\4.882813\\-245.8618\\-87\\0.9765625\\-245.7929\\-87\\-0.9765625\\-245.8711\\-87\\-6.835938\\-248.1008\\-87\\-8.789063\\-249.5742\\-87\\-10.74219\\-251.4601\\-87\\-11.86294\\-252.9922\\-87\\-13.10532\\-254.9453\\-87\\-13.99075\\-256.8984\\-87\\-15.13991\\-258.8516\\-87\\-16.04269\\-260.8047\\-87\\-17.31451\\-262.7578\\-87\\-18.18427\\-264.7109\\-87\\-19.39087\\-266.6641\\-87\\-20.32955\\-268.6172\\-87\\-21.64132\\-270.5703\\-87\\-23.11779\\-272.5234\\-87\\-24.36188\\-274.4766\\-87\\-25.70522\\-276.4297\\-87\\-28.32031\\-279.7856\\-87\\-30.6866\\-282.2891\\-87\\-33.80801\\-286.1953\\-87\\-36.13281\\-288.4588\\-87\\-38.08594\\-289.9632\\-87\\-41.99219\\-293.2393\\-87\\-43.94531\\-294.6736\\-87\\-45.89844\\-295.6012\\-87\\-47.85156\\-296.7499\\-87\\-49.80469\\-297.5354\\-87\\-51.75781\\-298.6258\\-87\\-53.71094\\-299.2766\\-87\\-55.66406\\-300.1752\\-87\\-57.61719\\-300.6427\\-87\\-61.52344\\-301.319\\-87\\-65.42969\\-302.088\\-87\\-67.38281\\-302.3152\\-87\\-71.28906\\-302.4978\\-87\\-73.24219\\-302.5179\\-87\\-77.14844\\-302.3884\\-87\\-79.10156\\-302.2232\\-87"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "333"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "83"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-302.0735\\-85\\-83.00781\\-301.4202\\-85\\-86.91406\\-300.9008\\-85\\-90.82031\\-300.2229\\-85\\-92.77344\\-299.5461\\-85\\-96.67969\\-298.4503\\-85\\-98.63281\\-297.4965\\-85\\-102.5391\\-296.1337\\-85\\-104.4922\\-295.1884\\-85\\-106.4453\\-294.5411\\-85\\-108.3984\\-293.3349\\-85\\-110.3516\\-292.3109\\-85\\-113.7181\\-290.1016\\-85\\-114.2578\\-289.6652\\-85\\-116.2109\\-288.6679\\-85\\-118.1641\\-287.2744\\-85\\-120.1172\\-285.7268\\-85\\-124.0234\\-282.7558\\-85\\-125.9766\\-281.1497\\-85\\-127.9297\\-279.3659\\-85\\-129.8828\\-277.392\\-85\\-131.8359\\-275.5487\\-85\\-134.7973\\-272.5234\\-85\\-136.5412\\-270.5703\\-85\\-139.8959\\-266.6641\\-85\\-142.7532\\-262.7578\\-85\\-143.5547\\-261.756\\-85\\-146.9038\\-256.8984\\-85\\-148.3311\\-254.9453\\-85\\-150.5172\\-251.0391\\-85\\-151.8524\\-249.0859\\-85\\-152.8416\\-247.1328\\-85\\-154.0864\\-245.1797\\-85\\-154.9871\\-243.2266\\-85\\-156.0658\\-241.2734\\-85\\-156.7219\\-239.3203\\-85\\-157.887\\-237.3672\\-85\\-158.6398\\-235.4141\\-85\\-159.7634\\-233.4609\\-85\\-160.4452\\-231.5078\\-85\\-161.449\\-229.5547\\-85\\-162.0558\\-227.6016\\-85\\-162.4874\\-225.6484\\-85\\-163.3478\\-223.6953\\-85\\-163.9237\\-221.7422\\-85\\-164.3494\\-219.7891\\-85\\-165.0912\\-217.8359\\-85\\-165.7336\\-215.8828\\-85\\-166.5728\\-211.9766\\-85\\-167.1819\\-210.0234\\-85\\-167.5698\\-208.0703\\-85\\-168.0279\\-204.1641\\-85\\-168.7589\\-196.3516\\-85\\-168.9853\\-194.3984\\-85\\-169.2397\\-190.4922\\-85\\-169.2518\\-186.5859\\-85\\-169.1043\\-182.6797\\-85\\-168.5002\\-176.8203\\-85\\-167.9982\\-170.9609\\-85\\-167.589\\-167.0547\\-85\\-167.2702\\-165.1016\\-85\\-166.7517\\-163.1484\\-85\\-166.3392\\-161.1953\\-85\\-165.648\\-157.2891\\-85\\-165.1611\\-155.3359\\-85\\-164.4714\\-153.3828\\-85\\-163.6258\\-149.4766\\-85\\-162.8399\\-147.5234\\-85\\-162.2392\\-145.5703\\-85\\-161.7902\\-143.6172\\-85\\-159.4256\\-137.7578\\-85\\-158.3368\\-135.8047\\-85\\-157.4673\\-133.8516\\-85\\-156.3358\\-131.8984\\-85\\-155.5272\\-129.9453\\-85\\-153.3203\\-126.3074\\-85\\-151.8621\\-124.0859\\-85\\-150.3641\\-122.1328\\-85\\-149.4141\\-120.6781\\-85\\-147.5042\\-118.2266\\-85\\-145.8256\\-116.2734\\-85\\-142.094\\-112.3672\\-85\\-139.6484\\-109.9604\\-85\\-137.6953\\-108.241\\-85\\-135.4797\\-106.5078\\-85\\-133.7891\\-105.4083\\-85\\-131.8359\\-103.7064\\-85\\-129.8828\\-102.183\\-85\\-125.9766\\-99.79311\\-85\\-124.0234\\-98.77449\\-85\\-120.1172\\-96.40673\\-85\\-118.1641\\-95.51968\\-85\\-116.2109\\-94.50658\\-85\\-112.3047\\-93.10009\\-85\\-110.3516\\-92.19567\\-85\\-108.3984\\-91.49225\\-85\\-106.4453\\-90.68153\\-85\\-104.4922\\-90.18153\\-85\\-100.5859\\-89.34821\\-85\\-96.67969\\-88.40162\\-85\\-94.72656\\-88.06088\\-85\\-88.86719\\-87.3125\\-85\\-86.91406\\-86.85347\\-85\\-81.05469\\-86.17361\\-85\\-75.19531\\-85.96461\\-85\\-69.33594\\-85.98595\\-85\\-63.47656\\-86.20229\\-85\\-57.61719\\-86.71875\\-85\\-55.66406\\-87.1489\\-85\\-47.85156\\-88.147\\-85\\-43.94531\\-88.93841\\-85\\-41.99219\\-89.55381\\-85\\-38.08594\\-90.66844\\-85\\-36.13281\\-91.69441\\-85\\-34.17969\\-92.16885\\-85\\-32.22656\\-93.08656\\-85\\-30.27344\\-93.88593\\-85\\-26.36719\\-95.92704\\-85\\-24.41406\\-97.43646\\-85\\-22.46094\\-99.12306\\-85\\-20.50781\\-100.3781\\-85\\-18.55469\\-102.3032\\-85\\-16.60156\\-104.5666\\-85\\-15.32813\\-106.5078\\-85\\-13.88451\\-108.4609\\-85\\-12.79386\\-110.4141\\-85\\-10.23888\\-114.3203\\-85\\-8.079529\\-118.2266\\-85\\-7.106236\\-120.1797\\-85\\-5.817282\\-122.1328\\-85\\-4.27132\\-124.0859\\-85\\-2.929688\\-126.2721\\-85\\-0.9765625\\-127.7083\\-85\\0.9765625\\-128.0736\\-85\\2.929688\\-126.6759\\-85\\3.348214\\-126.0391\\-85\\4.199219\\-124.0859\\-85\\5.449567\\-122.1328\\-85\\6.338266\\-120.1797\\-85\\7.642663\\-118.2266\\-85\\8.53056\\-116.2734\\-85\\10.74219\\-112.8805\\-85\\12.55446\\-110.4141\\-85\\13.62581\\-108.4609\\-85\\15.26663\\-106.5078\\-85\\18.55469\\-102.9866\\-85\\20.82689\\-100.6484\\-85\\22.46094\\-99.21332\\-85\\24.41406\\-97.37943\\-85\\26.36719\\-95.68853\\-85\\28.32031\\-94.50133\\-85\\30.78676\\-92.83594\\-85\\34.17969\\-90.78242\\-85\\36.13281\\-89.87186\\-85\\38.08594\\-88.76549\\-85\\41.99219\\-87.35217\\-85\\43.94531\\-86.49568\\-85\\45.89844\\-86.04954\\-85\\47.85156\\-85.73179\\-85\\49.80469\\-84.92106\\-85\\51.75781\\-84.54213\\-85\\55.66406\\-84.09245\\-85\\57.61719\\-83.7636\\-85\\59.57031\\-83.61869\\-85\\67.38281\\-83.38507\\-85\\69.33594\\-83.36893\\-85\\75.19531\\-83.86872\\-85\\77.14844\\-84.12524\\-85\\81.05469\\-84.43218\\-85\\83.00781\\-84.65176\\-85\\86.91406\\-85.40022\\-85\\88.86719\\-85.89787\\-85\\92.77344\\-86.51252\\-85\\94.72656\\-86.93654\\-85\\96.67969\\-87.57807\\-85\\100.5859\\-88.30953\\-85\\104.4922\\-89.73114\\-85\\106.4453\\-90.31426\\-85\\110.3516\\-91.98917\\-85\\112.3047\\-92.59544\\-85\\114.2578\\-93.54046\\-85\\116.2109\\-94.3158\\-85\\118.1641\\-95.46568\\-85\\120.1172\\-96.34459\\-85\\125.9766\\-99.82162\\-85\\127.9297\\-101.1291\\-85\\129.8828\\-102.3214\\-85\\131.8359\\-103.8413\\-85\\134.9626\\-106.5078\\-85\\137.6953\\-108.9063\\-85\\141.0404\\-112.3672\\-85\\143.5547\\-115.3052\\-85\\145.9284\\-118.2266\\-85\\147.4609\\-120.2524\\-85\\150.0498\\-124.0859\\-85\\151.3672\\-126.3519\\-85\\153.7228\\-129.9453\\-85\\154.701\\-131.8984\\-85\\155.8821\\-133.8516\\-85\\156.5524\\-135.8047\\-85\\157.6335\\-137.7578\\-85\\158.3499\\-139.7109\\-85\\159.4154\\-141.6641\\-85\\160.7489\\-145.5703\\-85\\161.6244\\-147.5234\\-85\\162.3831\\-151.4297\\-85\\162.9118\\-153.3828\\-85\\163.5957\\-155.3359\\-85\\164.5058\\-161.1953\\-85\\165.426\\-165.1016\\-85\\165.7088\\-167.0547\\-85\\166.4568\\-174.8672\\-85\\166.8683\\-178.7734\\-85\\167.2175\\-182.6797\\-85\\167.4338\\-188.5391\\-85\\167.5374\\-194.3984\\-85\\167.5046\\-202.2109\\-85\\167.4116\\-206.1172\\-85\\167.073\\-211.9766\\-85\\165.6672\\-223.6953\\-85\\165.2629\\-225.6484\\-85\\164.6369\\-227.6016\\-85\\163.8292\\-231.5078\\-85\\163.2561\\-233.4609\\-85\\162.4962\\-235.4141\\-85\\162.0558\\-237.3672\\-85\\161.4583\\-239.3203\\-85\\160.4452\\-241.2734\\-85\\159.7301\\-243.2266\\-85\\158.4967\\-245.1797\\-85\\157.6233\\-247.1328\\-85\\156.4097\\-249.0859\\-85\\155.5213\\-251.0391\\-85\\153.3203\\-254.4661\\-85\\150.2114\\-258.8516\\-85\\148.6603\\-260.8047\\-85\\147.4609\\-262.4749\\-85\\143.5547\\-267.1406\\-85\\140.4284\\-270.5703\\-85\\138.453\\-272.5234\\-85\\137.6953\\-273.4023\\-85\\134.583\\-276.4297\\-85\\133.7891\\-277.0945\\-85\\129.8828\\-280.6793\\-85\\127.7875\\-282.2891\\-85\\125.9766\\-283.4847\\-85\\122.0703\\-286.7096\\-85\\120.1172\\-287.8828\\-85\\116.2109\\-290.4206\\-85\\114.2578\\-291.4407\\-85\\112.3047\\-292.8037\\-85\\108.3984\\-294.8562\\-85\\106.4453\\-295.486\\-85\\104.4922\\-296.5321\\-85\\102.5391\\-297.1272\\-85\\100.5859\\-298.0495\\-85\\98.63281\\-298.7329\\-85\\96.67969\\-299.2801\\-85\\94.72656\\-300.0158\\-85\\92.77344\\-300.4695\\-85\\90.82031\\-300.7927\\-85\\84.96094\\-301.5816\\-85\\83.00781\\-301.9211\\-85\\79.10156\\-302.2787\\-85\\75.19531\\-302.325\\-85\\71.28906\\-302.1985\\-85\\67.38281\\-301.7809\\-85\\65.42969\\-301.4447\\-85\\59.57031\\-300.618\\-85\\57.61719\\-300.1548\\-85\\55.66406\\-299.3404\\-85\\53.71094\\-298.7577\\-85\\51.75781\\-297.9217\\-85\\49.80469\\-296.9807\\-85\\47.85156\\-296.1607\\-85\\43.94531\\-294.032\\-85\\41.99219\\-292.7816\\-85\\38.6734\\-290.1016\\-85\\36.39379\\-288.1484\\-85\\34.23762\\-286.1953\\-85\\32.54958\\-284.2422\\-85\\28.32031\\-279.6516\\-85\\25.87544\\-276.4297\\-85\\24.73461\\-274.4766\\-85\\21.87746\\-270.5703\\-85\\19.64043\\-266.6641\\-85\\18.94947\\-264.7109\\-85\\17.79701\\-262.7578\\-85\\16.9987\\-260.8047\\-85\\15.86359\\-258.8516\\-85\\15.05927\\-256.8984\\-85\\13.91258\\-254.9453\\-85\\12.91689\\-252.9922\\-85\\10.74219\\-250.5092\\-85\\8.789063\\-249.3634\\-85\\4.882813\\-248.8981\\-85\\2.929688\\-248.8196\\-85\\-0.9765625\\-249.0447\\-85\\-2.929688\\-249.2487\\-85\\-4.882813\\-249.6457\\-85\\-6.835938\\-250.4469\\-85\\-8.789063\\-251.5826\\-85\\-10.74219\\-253.133\\-85\\-12.17004\\-254.9453\\-85\\-13.45868\\-256.8984\\-85\\-14.38752\\-258.8516\\-85\\-16.60156\\-262.5442\\-85\\-17.78615\\-264.7109\\-85\\-19.03955\\-266.6641\\-85\\-19.941\\-268.6172\\-85\\-22.77261\\-272.5234\\-85\\-24.01456\\-274.4766\\-85\\-25.5028\\-276.4297\\-85\\-28.32031\\-279.9535\\-85\\-30.56483\\-282.2891\\-85\\-33.80238\\-286.1953\\-85\\-36.13281\\-288.4176\\-85\\-38.08594\\-289.9031\\-85\\-41.99219\\-293.1554\\-85\\-43.94531\\-294.5872\\-85\\-45.89844\\-295.4796\\-85\\-47.85156\\-296.6519\\-85\\-49.80469\\-297.3853\\-85\\-51.75781\\-298.5137\\-85\\-53.71094\\-299.1444\\-85\\-55.66406\\-299.9902\\-85\\-57.61719\\-300.5433\\-85\\-59.57031\\-300.9131\\-85\\-63.47656\\-301.516\\-85\\-67.38281\\-302.1761\\-85\\-71.28906\\-302.3884\\-85\\-73.24219\\-302.4189\\-85\\-77.14844\\-302.2476\\-85"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "315"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "84"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-301.9056\\-83\\-81.05469\\-301.5671\\-83\\-86.91406\\-300.8099\\-83\\-88.86719\\-300.5163\\-83\\-90.82031\\-300.0941\\-83\\-92.77344\\-299.391\\-83\\-96.67969\\-298.3108\\-83\\-98.63281\\-297.3484\\-83\\-100.5859\\-296.7561\\-83\\-104.4922\\-295.0814\\-83\\-106.4453\\-294.3672\\-83\\-106.9578\\-294.0078\\-83\\-110.3037\\-292.0547\\-83\\-113.4171\\-290.1016\\-83\\-114.2578\\-289.4655\\-83\\-116.2109\\-288.4564\\-83\\-118.1641\\-287.0826\\-83\\-122.0703\\-283.9423\\-83\\-125.9766\\-280.9538\\-83\\-128.7539\\-278.3828\\-83\\-129.8828\\-277.2124\\-83\\-131.8359\\-275.3625\\-83\\-134.6071\\-272.5234\\-83\\-136.3295\\-270.5703\\-83\\-139.5452\\-266.6641\\-83\\-141.0812\\-264.7109\\-83\\-144.0398\\-260.8047\\-83\\-145.3081\\-258.8516\\-83\\-148.2077\\-254.9453\\-83\\-149.2513\\-252.9922\\-83\\-150.4328\\-251.0391\\-83\\-151.7286\\-249.0859\\-83\\-152.7319\\-247.1328\\-83\\-154.0246\\-245.1797\\-83\\-154.8984\\-243.2266\\-83\\-156.0059\\-241.2734\\-83\\-156.6368\\-239.3203\\-83\\-157.8217\\-237.3672\\-83\\-158.562\\-235.4141\\-83\\-159.6994\\-233.4609\\-83\\-160.3777\\-231.5078\\-83\\-161.3571\\-229.5547\\-83\\-162.0135\\-227.6016\\-83\\-162.4412\\-225.6484\\-83\\-163.2561\\-223.6953\\-83\\-163.8682\\-221.7422\\-83\\-164.2891\\-219.7891\\-83\\-165.66\\-215.8828\\-83\\-166.4829\\-211.9766\\-83\\-167.0736\\-210.0234\\-83\\-167.4956\\-208.0703\\-83\\-167.9804\\-204.1641\\-83\\-168.5002\\-198.3047\\-83\\-169.076\\-192.4453\\-83\\-169.2397\\-188.5391\\-83\\-169.1876\\-184.6328\\-83\\-169.1043\\-182.6797\\-83\\-168.7725\\-178.7734\\-83\\-168.5561\\-176.8203\\-83\\-167.6998\\-167.0547\\-83\\-167.3996\\-165.1016\\-83\\-166.5323\\-161.1953\\-83\\-165.4644\\-155.3359\\-83\\-164.7772\\-153.3828\\-83\\-164.2545\\-151.4297\\-83\\-163.8661\\-149.4766\\-83\\-163.3085\\-147.5234\\-83\\-162.5065\\-145.5703\\-83\\-161.5248\\-141.6641\\-83\\-160.6158\\-139.7109\\-83\\-159.9235\\-137.7578\\-83\\-158.8518\\-135.8047\\-83\\-157.959\\-133.8516\\-83\\-156.8112\\-131.8984\\-83\\-156.0484\\-129.9453\\-83\\-153.8928\\-126.0391\\-83\\-152.4682\\-124.0859\\-83\\-149.8473\\-120.1797\\-83\\-148.3251\\-118.2266\\-83\\-145.5078\\-114.9307\\-83\\-141.1865\\-110.4141\\-83\\-139.6484\\-108.9135\\-83\\-137.6953\\-107.2303\\-83\\-134.3839\\-104.5547\\-83\\-131.7792\\-102.6016\\-83\\-127.9297\\-99.9248\\-83\\-124.0234\\-97.73802\\-83\\-122.0703\\-96.48843\\-83\\-120.1172\\-95.52827\\-83\\-118.1641\\-94.46354\\-83\\-114.2578\\-92.72743\\-83\\-110.3516\\-91.28665\\-83\\-108.3984\\-90.34706\\-83\\-102.5391\\-88.65842\\-83\\-94.72656\\-87.23856\\-83\\-90.82031\\-86.41951\\-83\\-86.91406\\-85.83724\\-83\\-83.00781\\-85.48167\\-83\\-81.05469\\-84.98241\\-83\\-79.10156\\-84.81744\\-83\\-75.19531\\-84.62865\\-83\\-71.28906\\-84.60393\\-83\\-69.33594\\-84.64838\\-83\\-63.47656\\-85.10122\\-83\\-61.52344\\-85.43034\\-83\\-57.61719\\-85.69161\\-83\\-55.66406\\-85.89385\\-83\\-53.71094\\-86.23595\\-83\\-51.75781\\-86.45998\\-83\\-48.64211\\-86.97656\\-83\\-43.94531\\-87.82481\\-83\\-40.03906\\-88.83546\\-83\\-38.08594\\-89.56409\\-83\\-36.13281\\-90.13978\\-83\\-34.30176\\-90.88281\\-83\\-30.27344\\-92.63417\\-83\\-26.36719\\-94.57677\\-83\\-24.41406\\-95.74237\\-83\\-23.12859\\-96.74219\\-83\\-20.82376\\-98.69531\\-83\\-18.55469\\-100.9207\\-83\\-16.60156\\-103.0047\\-83\\-15.30198\\-104.5547\\-83\\-13.8718\\-106.5078\\-83\\-11.3801\\-110.4141\\-83\\-10.06944\\-112.3672\\-83\\-5.530895\\-120.1797\\-83\\-2.929688\\-123.1405\\-83\\-0.9765625\\-124.9315\\-83\\0.9765625\\-124.8909\\-83\\2.929688\\-122.7348\\-83\\3.352239\\-122.1328\\-83\\4.347581\\-120.1797\\-83\\6.526067\\-116.2734\\-83\\8.789063\\-112.8027\\-83\\10.5523\\-110.4141\\-83\\11.71875\\-108.4609\\-83\\13.29985\\-106.5078\\-83\\14.983\\-104.5547\\-83\\16.60156\\-102.8066\\-83\\20.79102\\-98.69531\\-83\\24.41406\\-95.47691\\-83\\26.36719\\-94.0629\\-83\\32.22656\\-90.26563\\-83\\34.17969\\-89.32198\\-83\\36.13281\\-88.23328\\-83\\41.99219\\-85.97813\\-83\\43.94531\\-85.45313\\-83\\45.89844\\-84.70289\\-83\\47.85156\\-84.21642\\-83\\49.80469\\-83.8987\\-83\\53.71094\\-83.13028\\-83\\55.66406\\-82.7995\\-83\\57.61719\\-82.62018\\-83\\61.52344\\-82.45908\\-83\\65.42969\\-82.39893\\-83\\69.33594\\-82.39423\\-83\\71.28906\\-82.50349\\-83\\75.19531\\-82.83563\\-83\\79.10156\\-83.36105\\-83\\83.00781\\-83.83429\\-83\\88.86719\\-84.75775\\-83\\90.82031\\-85.33382\\-83\\92.77344\\-85.77927\\-83\\96.67969\\-86.55904\\-83\\100.5859\\-87.71902\\-83\\102.5391\\-88.16048\\-83\\106.4453\\-89.59165\\-83\\108.3984\\-90.19986\\-83\\112.3047\\-91.88457\\-83\\114.2578\\-92.58276\\-83\\116.2109\\-93.63811\\-83\\118.1641\\-94.54294\\-83\\120.1172\\-95.63962\\-83\\122.0703\\-96.56671\\-83\\125.9766\\-99.1729\\-83\\127.9297\\-100.1817\\-83\\131.2328\\-102.6016\\-83\\133.7412\\-104.5547\\-83\\137.6953\\-108.0625\\-83\\140.0905\\-110.4141\\-83\\141.8067\\-112.3672\\-83\\143.5547\\-114.5138\\-83\\144.8775\\-116.2734\\-83\\148.03\\-120.1797\\-83\\149.4141\\-122.3582\\-83\\150.3906\\-124.0859\\-83\\151.7454\\-126.0391\\-83\\154.127\\-129.9453\\-83\\156.1707\\-133.8516\\-83\\156.9132\\-135.8047\\-83\\157.9549\\-137.7578\\-83\\158.6882\\-139.7109\\-83\\159.7385\\-141.6641\\-83\\160.2997\\-143.6172\\-83\\161.8065\\-147.5234\\-83\\162.4835\\-151.4297\\-83\\163.6766\\-155.3359\\-83\\164.5146\\-161.1953\\-83\\165.426\\-165.1016\\-83\\165.6986\\-167.0547\\-83\\166.2585\\-172.9141\\-83\\166.9388\\-180.7266\\-83\\167.2054\\-184.6328\\-83\\167.2871\\-186.5859\\-83\\167.4434\\-194.3984\\-83\\167.4241\\-200.2578\\-83\\167.2982\\-206.1172\\-83\\167.073\\-210.0234\\-83\\166.7026\\-213.9297\\-83\\165.857\\-221.7422\\-83\\165.5853\\-223.6953\\-83\\165.1198\\-225.6484\\-83\\164.5058\\-227.6016\\-83\\163.7612\\-231.5078\\-83\\162.4165\\-235.4141\\-83\\161.9962\\-237.3672\\-83\\161.3164\\-239.3203\\-83\\160.3504\\-241.2734\\-83\\159.6089\\-243.2266\\-83\\158.3951\\-245.1797\\-83\\157.4857\\-247.1328\\-83\\156.3228\\-249.0859\\-83\\155.3615\\-251.0391\\-83\\154.1969\\-252.9922\\-83\\152.7894\\-254.9453\\-83\\150.1098\\-258.8516\\-83\\147.4609\\-262.3038\\-83\\145.3897\\-264.7109\\-83\\142.1606\\-268.6172\\-83\\140.2927\\-270.5703\\-83\\139.6484\\-271.1129\\-83\\137.6953\\-273.221\\-83\\134.4132\\-276.4297\\-83\\129.8828\\-280.4117\\-83\\127.4371\\-282.2891\\-83\\125.9766\\-283.3078\\-83\\122.0703\\-286.4673\\-83\\120.1172\\-287.6117\\-83\\118.1641\\-288.999\\-83\\114.2578\\-291.2527\\-83\\112.3047\\-292.6204\\-83\\110.3516\\-293.5486\\-83\\108.3984\\-294.7231\\-83\\106.4453\\-295.3246\\-83\\104.4922\\-296.3556\\-83\\102.5391\\-297.003\\-83\\98.63281\\-298.6199\\-83\\96.67969\\-299.1485\\-83\\94.57465\\-299.8672\\-83\\92.77344\\-300.3675\\-83\\88.86719\\-300.9908\\-83\\84.96094\\-301.4646\\-83\\81.05469\\-302.0201\\-83\\79.10156\\-302.1505\\-83\\75.19531\\-302.2123\\-83\\71.28906\\-302.0608\\-83\\69.33594\\-301.8906\\-83\\59.57031\\-300.5468\\-83\\57.61719\\-300.0569\\-83\\55.66406\\-299.2597\\-83\\53.71094\\-298.7004\\-83\\47.85156\\-296.0617\\-83\\44.09124\\-294.0078\\-83\\41.99219\\-292.6926\\-83\\38.78021\\-290.1016\\-83\\34.3623\\-286.1953\\-83\\32.63041\\-284.2422\\-83\\28.32031\\-279.6128\\-83\\25.83764\\-276.4297\\-83\\24.625\\-274.4766\\-83\\23.2433\\-272.5234\\-83\\21.72998\\-270.5703\\-83\\20.50781\\-268.6051\\-83\\19.53125\\-266.6641\\-83\\18.6579\\-264.7109\\-83\\14.64844\\-257.4864\\-83\\12.69531\\-254.6587\\-83\\10.74219\\-252.786\\-83\\8.789063\\-252.0156\\-83\\6.835938\\-251.5844\\-83\\2.929688\\-251.3899\\-83\\0.9765625\\-251.4968\\-83\\-0.9765625\\-251.7201\\-83\\-2.929688\\-252.1444\\-83\\-6.835938\\-252.8312\\-83\\-10.74219\\-254.6893\\-83\\-12.69531\\-257.1426\\-83\\-15.02623\\-260.8047\\-83\\-16.07771\\-262.7578\\-83\\-17.42608\\-264.7109\\-83\\-18.47076\\-266.6641\\-83\\-19.63337\\-268.6172\\-83\\-22.2853\\-272.5234\\-83\\-24.41406\\-275.3035\\-83\\-28.32031\\-280.1218\\-83\\-32.22656\\-284.3381\\-83\\-33.80238\\-286.1953\\-83\\-36.13281\\-288.3594\\-83\\-38.08594\\-289.817\\-83\\-41.99219\\-293.0818\\-83\\-43.94531\\-294.4995\\-83\\-45.89844\\-295.3656\\-83\\-47.85156\\-296.5541\\-83\\-49.80469\\-297.2572\\-83\\-51.75781\\-298.3782\\-83\\-53.71094\\-299.0233\\-83\\-55.89489\\-299.8672\\-83\\-57.61719\\-300.4413\\-83\\-59.57031\\-300.8154\\-83\\-63.47656\\-301.3722\\-83\\-67.38281\\-301.9931\\-83\\-71.28906\\-302.2581\\-83\\-73.24219\\-302.2818\\-83\\-77.14844\\-302.1003\\-83"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "311"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "85"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-77.14844\\-301.9211\\-81\\-81.05469\\-301.4229\\-81\\-84.96094\\-300.9774\\-81\\-88.86719\\-300.4176\\-81\\-90.82031\\-299.9198\\-81\\-92.77344\\-299.2366\\-81\\-94.72656\\-298.7561\\-81\\-96.67969\\-298.1258\\-81\\-98.63281\\-297.2157\\-81\\-100.5859\\-296.6665\\-81\\-102.5391\\-295.702\\-81\\-104.4922\\-294.9722\\-81\\-106.4453\\-294.1205\\-81\\-108.3984\\-293.0094\\-81\\-110.3516\\-291.7292\\-81\\-112.3047\\-290.657\\-81\\-114.2578\\-289.2898\\-81\\-116.2109\\-288.2223\\-81\\-118.1641\\-286.8937\\-81\\-122.0703\\-283.6973\\-81\\-125.9766\\-280.7336\\-81\\-128.52\\-278.3828\\-81\\-131.8359\\-275.168\\-81\\-134.3994\\-272.5234\\-81\\-136.0802\\-270.5703\\-81\\-142.4154\\-262.7578\\-81\\-143.8427\\-260.8047\\-81\\-145.0806\\-258.8516\\-81\\-148.0705\\-254.9453\\-81\\-149.0505\\-252.9922\\-81\\-151.5789\\-249.0859\\-81\\-152.617\\-247.1328\\-81\\-153.9246\\-245.1797\\-81\\-154.7919\\-243.2266\\-81\\-155.9309\\-241.2734\\-81\\-156.5448\\-239.3203\\-81\\-157.7269\\-237.3672\\-81\\-158.4813\\-235.4141\\-81\\-159.6354\\-233.4609\\-81\\-160.3154\\-231.5078\\-81\\-161.232\\-229.5547\\-81\\-161.9656\\-227.6016\\-81\\-162.4079\\-225.6484\\-81\\-163.8143\\-221.7422\\-81\\-164.2376\\-219.7891\\-81\\-164.8324\\-217.8359\\-81\\-165.5773\\-215.8828\\-81\\-166.3925\\-211.9766\\-81\\-167.4116\\-208.0703\\-81\\-167.9281\\-204.1641\\-81\\-168.4275\\-198.3047\\-81\\-169.0009\\-192.4453\\-81\\-169.2004\\-188.5391\\-81\\-169.1599\\-184.6328\\-81\\-169.076\\-182.6797\\-81\\-168.7725\\-178.7734\\-81\\-168.3992\\-174.8672\\-81\\-167.7511\\-167.0547\\-81\\-167.1945\\-163.1484\\-81\\-166.324\\-159.2422\\-81\\-165.6454\\-155.3359\\-81\\-165.1198\\-153.3828\\-81\\-164.4531\\-151.4297\\-81\\-163.6169\\-147.5234\\-81\\-162.8017\\-145.5703\\-81\\-162.2375\\-143.6172\\-81\\-161.8277\\-141.6641\\-81\\-159.4289\\-135.8047\\-81\\-158.3047\\-133.8516\\-81\\-157.4428\\-131.8984\\-81\\-156.3459\\-129.9453\\-81\\-155.5535\\-127.9922\\-81\\-153.3203\\-124.3542\\-81\\-151.871\\-122.1328\\-81\\-148.9444\\-118.2266\\-81\\-147.5483\\-116.2734\\-81\\-145.9615\\-114.3203\\-81\\-141.6016\\-109.6635\\-81\\-139.6484\\-107.7711\\-81\\-137.6953\\-106.1369\\-81\\-135.7422\\-104.7688\\-81\\-131.8359\\-101.6896\\-81\\-127.4414\\-98.69531\\-81\\-125.9766\\-97.94458\\-81\\-120.1172\\-94.48679\\-81\\-118.1641\\-93.67997\\-81\\-116.2109\\-92.69747\\-81\\-114.2578\\-92.02117\\-81\\-110.3516\\-90.23841\\-81\\-108.3984\\-89.64409\\-81\\-106.4453\\-88.88831\\-81\\-104.4922\\-88.25787\\-81\\-100.5859\\-87.61167\\-81\\-96.67969\\-86.60686\\-81\\-92.77344\\-85.97512\\-81\\-86.91406\\-84.70531\\-81\\-83.00781\\-84.31712\\-81\\-81.05469\\-84.02625\\-81\\-79.10156\\-83.8987\\-81\\-75.19531\\-83.77866\\-81\\-69.33594\\-83.72843\\-81\\-63.47656\\-84.07345\\-81\\-61.52344\\-84.27178\\-81\\-57.61719\\-84.48897\\-81\\-55.66406\\-84.72011\\-81\\-51.75781\\-85.52629\\-81\\-49.80469\\-85.75586\\-81\\-47.85156\\-86.1244\\-81\\-45.89844\\-86.31013\\-81\\-43.94531\\-86.68583\\-81\\-41.99219\\-87.47942\\-81\\-38.08594\\-88.32025\\-81\\-36.13281\\-89.08693\\-81\\-32.22656\\-90.49656\\-81\\-30.27344\\-91.47173\\-81\\-28.32031\\-92.31375\\-81\\-26.36719\\-93.42802\\-81\\-24.41406\\-94.34517\\-81\\-22.46094\\-95.72807\\-81\\-20.50781\\-97.31322\\-81\\-19.07723\\-98.69531\\-81\\-16.60156\\-101.2395\\-81\\-15.36923\\-102.6016\\-81\\-13.8747\\-104.5547\\-81\\-12.69531\\-106.4955\\-81\\-10.74219\\-109.2358\\-81\\-8.725767\\-112.3672\\-81\\-7.615613\\-114.3203\\-81\\-6.260016\\-116.2734\\-81\\-5.334165\\-118.2266\\-81\\-2.929688\\-120.9169\\-81\\-0.9765625\\-122.3632\\-81\\0.9765625\\-121.8732\\-81\\2.238724\\-120.1797\\-81\\4.649475\\-116.2734\\-81\\6.034045\\-114.3203\\-81\\6.835938\\-112.9692\\-81\\9.896415\\-108.4609\\-81\\11.50077\\-106.5078\\-81\\14.80962\\-102.6016\\-81\\20.88867\\-96.74219\\-81\\22.46094\\-95.375\\-81\\24.41406\\-93.82078\\-81\\25.79753\\-92.83594\\-81\\30.27344\\-89.87449\\-81\\32.22656\\-88.79405\\-81\\34.17969\\-87.86086\\-81\\36.13281\\-86.80846\\-81\\40.03906\\-85.45119\\-81\\41.99219\\-84.63133\\-81\\45.89844\\-83.61038\\-81\\48.15463\\-83.07031\\-81\\51.75781\\-82.29334\\-81\\57.61719\\-81.80862\\-81\\61.52344\\-81.70454\\-81\\69.33594\\-81.7101\\-81\\73.24219\\-82.00439\\-81\\75.19531\\-82.09375\\-81\\81.05469\\-82.54613\\-81\\84.96094\\-83.35884\\-81\\90.82031\\-84.35731\\-81\\94.72656\\-85.37115\\-81\\98.63281\\-86.26693\\-81\\100.5859\\-86.8138\\-81\\102.5391\\-87.60239\\-81\\104.4922\\-88.06683\\-81\\106.4453\\-88.72369\\-81\\108.3984\\-89.54333\\-81\\110.3516\\-90.19607\\-81\\112.3047\\-91.13458\\-81\\114.2578\\-91.88525\\-81\\118.1641\\-93.87893\\-81\\120.1172\\-94.95054\\-81\\122.0703\\-95.862\\-81\\124.0234\\-97.13135\\-81\\125.9766\\-98.25201\\-81\\131.8359\\-102.2037\\-81\\133.7891\\-103.8071\\-81\\137.6953\\-107.3896\\-81\\139.6484\\-109.2873\\-81\\142.4437\\-112.3672\\-81\\145.546\\-116.2734\\-81\\147.4609\\-118.807\\-81\\149.7919\\-122.1328\\-81\\150.7853\\-124.0859\\-81\\153.4769\\-127.9922\\-81\\154.4495\\-129.9453\\-81\\155.6279\\-131.8984\\-81\\156.3904\\-133.8516\\-81\\157.362\\-135.8047\\-81\\159.0243\\-139.7109\\-81\\159.941\\-141.6641\\-81\\160.4798\\-143.6172\\-81\\161.3164\\-145.5703\\-81\\161.8984\\-147.5234\\-81\\162.5527\\-151.4297\\-81\\163.1705\\-153.3828\\-81\\163.6847\\-155.3359\\-81\\164.5267\\-161.1953\\-81\\165.4061\\-165.1016\\-81\\165.8471\\-169.0078\\-81\\166.1955\\-172.9141\\-81\\167.073\\-184.6328\\-81\\167.2296\\-188.5391\\-81\\167.322\\-196.3516\\-81\\167.2759\\-202.2109\\-81\\167.1143\\-206.1172\\-81\\166.7046\\-211.9766\\-81\\166.1706\\-217.8359\\-81\\165.7589\\-221.7422\\-81\\165.4738\\-223.6953\\-81\\164.3824\\-227.6016\\-81\\163.6684\\-231.5078\\-81\\162.9132\\-233.4609\\-81\\162.3204\\-235.4141\\-81\\161.9225\\-237.3672\\-81\\159.4406\\-243.2266\\-81\\158.277\\-245.1797\\-81\\157.3073\\-247.1328\\-81\\155.2734\\-250.9142\\-81\\154.1051\\-252.9922\\-81\\152.6423\\-254.9453\\-81\\149.996\\-258.8516\\-81\\147.4609\\-262.1414\\-81\\145.1944\\-264.7109\\-81\\142.0495\\-268.6172\\-81\\139.6484\\-270.9647\\-81\\137.6953\\-273.0409\\-81\\135.7422\\-275.0126\\-81\\134.1973\\-276.4297\\-81\\131.8773\\-278.3828\\-81\\129.6609\\-280.3359\\-81\\127.9297\\-281.614\\-81\\124.0234\\-284.6997\\-81\\122.0058\\-286.1953\\-81\\120.1172\\-287.4311\\-81\\118.1641\\-288.819\\-81\\116.2109\\-289.8215\\-81\\115.8854\\-290.1016\\-81\\112.7102\\-292.0547\\-81\\112.3047\\-292.3824\\-81\\110.3516\\-293.3428\\-81\\108.3984\\-294.5575\\-81\\106.4453\\-295.1932\\-81\\104.4922\\-296.1324\\-81\\102.5391\\-296.8829\\-81\\100.5859\\-297.5325\\-81\\98.63281\\-298.4875\\-81\\96.67969\\-299.0009\\-81\\92.77344\\-300.2641\\-81\\88.86719\\-300.9008\\-81\\84.96094\\-301.3454\\-81\\81.05469\\-301.8597\\-81\\77.14844\\-302.0608\\-81\\73.24219\\-302.0201\\-81\\69.33594\\-301.7344\\-81\\63.47656\\-301.0261\\-81\\59.57031\\-300.4695\\-81\\57.61719\\-299.9343\\-81\\55.66406\\-299.182\\-81\\53.71094\\-298.6257\\-81\\51.75781\\-297.6646\\-81\\49.80469\\-296.857\\-81\\45.89844\\-294.9411\\-81\\41.99219\\-292.5751\\-81\\38.92624\\-290.1016\\-81\\34.50521\\-286.1953\\-81\\28.32031\\-279.609\\-81\\25.77718\\-276.4297\\-81\\23.08618\\-272.5234\\-81\\21.57054\\-270.5703\\-81\\20.2469\\-268.6172\\-81\\19.39087\\-266.6641\\-81\\18.22684\\-264.7109\\-81\\17.22935\\-262.7578\\-81\\15.85662\\-260.8047\\-81\\14.64844\\-258.8616\\-81\\12.69531\\-256.5297\\-81\\10.74219\\-255.0517\\-81\\8.789063\\-254.4778\\-81\\6.835938\\-254.3531\\-81\\2.929688\\-254.2459\\-81\\0.9765625\\-254.3228\\-81\\-6.835938\\-255.1459\\-81\\-10.74219\\-256.5698\\-81\\-13.02621\\-258.8516\\-81\\-14.18235\\-260.8047\\-81\\-14.64844\\-261.3851\\-81\\-16.88368\\-264.7109\\-81\\-17.9579\\-266.6641\\-81\\-19.31866\\-268.6172\\-81\\-20.50781\\-270.5594\\-81\\-21.89867\\-272.5234\\-81\\-25.21307\\-276.4297\\-81\\-28.32031\\-280.2907\\-81\\-32.22656\\-284.3707\\-81\\-33.82662\\-286.1953\\-81\\-36.13281\\-288.3138\\-81\\-38.08594\\-289.7363\\-81\\-41.99219\\-292.9981\\-81\\-43.94531\\-294.4054\\-81\\-45.89844\\-295.2735\\-81\\-47.85156\\-296.4428\\-81\\-49.80469\\-297.1428\\-81\\-51.75781\\-298.2201\\-81\\-55.66406\\-299.5891\\-81\\-57.61719\\-300.3278\\-81\\-59.57031\\-300.7309\\-81\\-67.38281\\-301.7806\\-81\\-71.28906\\-302.088\\-81\\-75.19531\\-302.086\\-81"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "325"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "86"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-75.19531\\-301.9056\\-79\\-81.05469\\-301.3223\\-79\\-86.91406\\-300.6405\\-79\\-88.86719\\-300.325\\-79\\-92.77344\\-299.1188\\-79\\-94.72656\\-298.6414\\-79\\-98.63281\\-297.0948\\-79\\-100.5859\\-296.5541\\-79\\-102.5391\\-295.5277\\-79\\-104.4922\\-294.8631\\-79\\-108.3984\\-292.8522\\-79\\-110.3516\\-291.4922\\-79\\-112.3047\\-290.4339\\-79\\-114.2578\\-289.1429\\-79\\-115.9566\\-288.1484\\-79\\-118.1641\\-286.6836\\-79\\-118.6844\\-286.1953\\-79\\-121.2553\\-284.2422\\-79\\-122.0703\\-283.4997\\-79\\-125.9766\\-280.4646\\-79\\-128.2552\\-278.3828\\-79\\-131.8359\\-274.9048\\-79\\-134.181\\-272.5234\\-79\\-138.9911\\-266.6641\\-79\\-140.6786\\-264.7109\\-79\\-142.2549\\-262.7578\\-79\\-144.8841\\-258.8516\\-79\\-147.9458\\-254.9453\\-79\\-148.8664\\-252.9922\\-79\\-150.2485\\-251.0391\\-79\\-151.4338\\-249.0859\\-79\\-152.5065\\-247.1328\\-79\\-153.8366\\-245.1797\\-79\\-154.694\\-243.2266\\-79\\-155.8568\\-241.2734\\-79\\-156.4777\\-239.3203\\-79\\-157.6361\\-237.3672\\-79\\-158.4104\\-235.4141\\-79\\-159.5691\\-233.4609\\-79\\-160.2689\\-231.5078\\-79\\-161.1407\\-229.5547\\-79\\-161.9104\\-227.6016\\-79\\-162.352\\-225.6484\\-79\\-162.9993\\-223.6953\\-79\\-163.7612\\-221.7422\\-79\\-164.1565\\-219.7891\\-79\\-164.7135\\-217.8359\\-79\\-165.4738\\-215.8828\\-79\\-166.2775\\-211.9766\\-79\\-166.7359\\-210.0234\\-79\\-167.3242\\-208.0703\\-79\\-167.6217\\-206.1172\\-79\\-168.0623\\-202.2109\\-79\\-168.3607\\-198.3047\\-79\\-168.9056\\-192.4453\\-79\\-169.1181\\-188.5391\\-79\\-169.0903\\-184.6328\\-79\\-168.9056\\-180.7266\\-79\\-168.4028\\-174.8672\\-79\\-167.9571\\-169.0078\\-79\\-167.5927\\-165.1016\\-79\\-167.3503\\-163.1484\\-79\\-166.4557\\-159.2422\\-79\\-165.7804\\-155.3359\\-79\\-165.343\\-153.3828\\-79\\-164.6446\\-151.4297\\-79\\-163.7835\\-147.5234\\-79\\-163.1406\\-145.5703\\-79\\-162.3831\\-143.6172\\-79\\-162.0056\\-141.6641\\-79\\-161.3879\\-139.7109\\-79\\-160.4522\\-137.7578\\-79\\-159.7724\\-135.8047\\-79\\-158.6225\\-133.8516\\-79\\-157.8125\\-131.8984\\-79\\-156.6471\\-129.9453\\-79\\-155.9135\\-127.9922\\-79\\-154.7164\\-126.0391\\-79\\-153.6933\\-124.0859\\-79\\-151.3672\\-120.8111\\-79\\-150.8246\\-120.1797\\-79\\-149.6425\\-118.2266\\-79\\-148.2267\\-116.2734\\-79\\-146.5339\\-114.3203\\-79\\-141.2161\\-108.4609\\-79\\-139.0714\\-106.5078\\-79\\-136.7904\\-104.5547\\-79\\-133.7891\\-102.2153\\-79\\-131.8359\\-100.9333\\-79\\-128.7258\\-98.69531\\-79\\-125.9766\\-97.08083\\-79\\-122.0703\\-94.67867\\-79\\-120.1172\\-93.84505\\-79\\-118.1499\\-92.83594\\-79\\-116.2109\\-91.99976\\-79\\-114.1113\\-90.88281\\-79\\-112.3047\\-90.15039\\-79\\-106.4453\\-88.03507\\-79\\-104.4922\\-87.69362\\-79\\-102.5391\\-87.20681\\-79\\-100.5859\\-86.60764\\-79\\-96.67969\\-85.9118\\-79\\-92.77344\\-84.8796\\-79\\-88.86719\\-84.24342\\-79\\-86.91406\\-83.79723\\-79\\-83.00781\\-83.35047\\-79\\-79.10156\\-83.01238\\-79\\-75.19531\\-82.81854\\-79\\-69.33594\\-82.76467\\-79\\-65.42969\\-83.01189\\-79\\-57.61719\\-83.64178\\-79\\-55.66406\\-83.8391\\-79\\-53.71094\\-84.23113\\-79\\-49.80469\\-84.74544\\-79\\-43.94531\\-85.90234\\-79\\-41.99219\\-86.23736\\-79\\-40.03906\\-86.81118\\-79\\-38.08594\\-87.53566\\-79\\-36.13281\\-88.02985\\-79\\-34.17969\\-88.65842\\-79\\-30.27344\\-90.22469\\-79\\-26.36719\\-92.22028\\-79\\-22.46094\\-94.53678\\-79\\-20.50781\\-95.89951\\-79\\-18.55469\\-97.76348\\-79\\-15.72738\\-100.6484\\-79\\-14.05927\\-102.6016\\-79\\-12.81072\\-104.5547\\-79\\-10.74219\\-107.3701\\-79\\-8.610734\\-110.4141\\-79\\-6.835938\\-113.3685\\-79\\-4.704484\\-116.2734\\-79\\-3.503632\\-118.2266\\-79\\-2.929688\\-118.8618\\-79\\-0.9765625\\-120.2565\\-79\\0.9765625\\-119.2599\\-79\\1.756099\\-118.2266\\-79\\2.821181\\-116.2734\\-79\\4.39021\\-114.3203\\-79\\5.648909\\-112.3672\\-79\\8.292644\\-108.4609\\-79\\9.722794\\-106.5078\\-79\\12.69531\\-103.0699\\-79\\14.99924\\-100.6484\\-79\\16.60156\\-99.20073\\-79\\18.55469\\-97.2476\\-79\\20.50781\\-95.39612\\-79\\24.41406\\-92.38929\\-79\\26.36719\\-91.12471\\-79\\28.32031\\-89.69641\\-79\\30.27344\\-88.53401\\-79\\32.22656\\-87.61967\\-79\\34.17969\\-86.50285\\-79\\36.13281\\-85.80894\\-79\\38.08594\\-84.72589\\-79\\40.03906\\-84.17622\\-79\\43.94531\\-82.88314\\-79\\45.89844\\-82.41187\\-79\\47.85156\\-82.04349\\-79\\49.80469\\-81.82806\\-79\\51.75781\\-81.51247\\-79\\55.66406\\-81.17663\\-79\\57.61719\\-80.85016\\-79\\61.52344\\-80.72225\\-79\\65.42969\\-80.73662\\-79\\69.33594\\-80.82866\\-79\\71.28906\\-80.98222\\-79\\73.24219\\-81.31567\\-79\\77.14844\\-81.59829\\-79\\83.00781\\-82.20297\\-79\\86.91406\\-82.83563\\-79\\88.86719\\-83.32013\\-79\\92.77344\\-84.1373\\-79\\94.72656\\-84.46257\\-79\\96.67969\\-84.91076\\-79\\102.5391\\-86.66319\\-79\\104.4922\\-87.46484\\-79\\106.4453\\-88.00555\\-79\\108.3984\\-88.72369\\-79\\110.3516\\-89.58293\\-79\\112.3047\\-90.28136\\-79\\116.2109\\-92.19932\\-79\\118.1641\\-93.3314\\-79\\120.1172\\-94.11349\\-79\\122.0703\\-95.27016\\-79\\124.0234\\-96.26088\\-79\\125.9766\\-97.70131\\-79\\127.63\\-98.69531\\-79\\131.8359\\-101.6115\\-79\\133.7891\\-103.202\\-79\\139.6484\\-108.6771\\-79\\141.2785\\-110.4141\\-79\\144.4774\\-114.3203\\-79\\145.5078\\-115.5156\\-79\\147.5948\\-118.2266\\-79\\150.1294\\-122.1328\\-79\\152.4212\\-126.0391\\-79\\153.8346\\-127.9922\\-79\\154.7032\\-129.9453\\-79\\155.8919\\-131.8984\\-79\\156.5564\\-133.8516\\-79\\157.6425\\-135.8047\\-79\\158.3542\\-137.7578\\-79\\159.3425\\-139.7109\\-79\\160.0623\\-141.6641\\-79\\160.6257\\-143.6172\\-79\\161.4445\\-145.5703\\-79\\161.9274\\-147.5234\\-79\\162.6042\\-151.4297\\-79\\163.2276\\-153.3828\\-79\\163.6927\\-155.3359\\-79\\164.5091\\-161.1953\\-79\\165.3539\\-165.1016\\-79\\165.7914\\-169.0078\\-79\\166.1113\\-172.9141\\-79\\166.882\\-184.6328\\-79\\167.0444\\-188.5391\\-79\\167.1143\\-192.4453\\-79\\167.1276\\-198.3047\\-79\\167.073\\-202.2109\\-79\\166.7636\\-208.0703\\-79\\166.3656\\-213.9297\\-79\\166.0505\\-217.8359\\-79\\165.6388\\-221.7422\\-79\\165.3096\\-223.6953\\-79\\164.7003\\-225.6484\\-79\\164.2718\\-227.6016\\-79\\163.5459\\-231.5078\\-79\\162.7441\\-233.4609\\-79\\162.2344\\-235.4141\\-79\\161.8268\\-237.3672\\-79\\160.1563\\-241.2734\\-79\\159.2173\\-243.2266\\-79\\157.2266\\-246.9454\\-79\\156.1408\\-249.0859\\-79\\155.0236\\-251.0391\\-79\\154.0045\\-252.9922\\-79\\151.1134\\-256.8984\\-79\\149.8814\\-258.8516\\-79\\148.4185\\-260.8047\\-79\\145.0195\\-264.7109\\-79\\141.8772\\-268.6172\\-79\\139.6484\\-270.7866\\-79\\135.7422\\-274.8281\\-79\\133.7891\\-276.5614\\-79\\131.8359\\-278.1199\\-79\\129.333\\-280.3359\\-79\\125.9766\\-283.0056\\-79\\122.0703\\-285.8061\\-79\\121.619\\-286.1953\\-79\\118.1641\\-288.6263\\-79\\116.2109\\-289.572\\-79\\115.5455\\-290.1016\\-79\\112.2947\\-292.0547\\-79\\108.8469\\-294.0078\\-79\\108.3984\\-294.324\\-79\\104.4922\\-295.8281\\-79\\102.5391\\-296.7499\\-79\\100.5859\\-297.3199\\-79\\98.63281\\-298.2959\\-79\\94.72656\\-299.4094\\-79\\92.77344\\-300.1062\\-79\\90.82031\\-300.5317\\-79\\88.86719\\-300.8099\\-79\\83.00781\\-301.4671\\-79\\79.10156\\-301.8123\\-79\\77.14844\\-301.8754\\-79\\73.24219\\-301.8123\\-79\\69.33594\\-301.5546\\-79\\65.42969\\-301.1672\\-79\\61.52344\\-300.6922\\-79\\59.57031\\-300.3764\\-79\\55.66406\\-299.0954\\-79\\53.71094\\-298.5311\\-79\\51.75781\\-297.5116\\-79\\49.80469\\-296.794\\-79\\47.85156\\-295.7281\\-79\\45.89844\\-294.8669\\-79\\41.99219\\-292.4317\\-79\\39.0625\\-290.1016\\-79\\34.63882\\-286.1953\\-79\\28.32031\\-279.629\\-79\\25.66867\\-276.4297\\-79\\24.16314\\-274.4766\\-79\\22.84483\\-272.5234\\-79\\19.99563\\-268.6172\\-79\\19.15111\\-266.6641\\-79\\16.60156\\-262.844\\-79\\14.64844\\-260.2058\\-79\\12.69531\\-258.3485\\-79\\10.74219\\-257.0139\\-79\\8.789063\\-256.6302\\-79\\2.929688\\-256.5838\\-79\\-0.9765625\\-256.714\\-79\\-4.882813\\-256.9386\\-79\\-6.835938\\-256.8886\\-79\\-8.789063\\-257.7717\\-79\\-10.74219\\-258.4126\\-79\\-12.69531\\-260.0611\\-79\\-14.91757\\-262.7578\\-79\\-16.12338\\-264.7109\\-79\\-16.60156\\-265.3087\\-79\\-18.55469\\-268.2319\\-79\\-18.88533\\-268.6172\\-79\\-20.03368\\-270.5703\\-79\\-21.56085\\-272.5234\\-79\\-26.68531\\-278.3828\\-79\\-28.2219\\-280.3359\\-79\\-32.22656\\-284.3853\\-79\\-33.85417\\-286.1953\\-79\\-36.13281\\-288.2534\\-79\\-38.08594\\-289.6603\\-79\\-41.99219\\-292.916\\-79\\-43.94531\\-294.2775\\-79\\-45.89844\\-295.1784\\-79\\-47.85156\\-296.3339\\-79\\-49.80469\\-297.0514\\-79\\-51.75781\\-298.0361\\-79\\-53.71094\\-298.8042\\-79\\-55.66406\\-299.416\\-79\\-57.61719\\-300.2122\\-79\\-59.57031\\-300.6292\\-79\\-61.52344\\-300.907\\-79\\-67.38281\\-301.5798\\-79\\-71.28906\\-301.9063\\-79"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "318"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "87"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.86719\\-300.197\\-77\\-90.82031\\-299.5461\\-77\\-94.72656\\-298.5388\\-77\\-96.67969\\-297.6788\\-77\\-100.5859\\-296.4102\\-77\\-102.5391\\-295.3634\\-77\\-104.4922\\-294.7585\\-77\\-106.4453\\-293.6004\\-77\\-108.3984\\-292.6813\\-77\\-110.3516\\-291.2951\\-77\\-114.2578\\-289.028\\-77\\-118.1641\\-286.4149\\-77\\-120.9961\\-284.2422\\-77\\-125.8079\\-280.3359\\-77\\-127.9543\\-278.3828\\-77\\-131.8359\\-274.6115\\-77\\-133.9265\\-272.5234\\-77\\-137.1779\\-268.6172\\-77\\-140.5015\\-264.7109\\-77\\-142.0898\\-262.7578\\-77\\-143.3421\\-260.8047\\-77\\-144.735\\-258.8516\\-77\\-147.8102\\-254.9453\\-77\\-148.7909\\-252.9922\\-77\\-150.1433\\-251.0391\\-77\\-152.4041\\-247.1328\\-77\\-153.7407\\-245.1797\\-77\\-154.5993\\-243.2266\\-77\\-155.7685\\-241.2734\\-77\\-156.4276\\-239.3203\\-77\\-157.5435\\-237.3672\\-77\\-158.3419\\-235.4141\\-77\\-159.4634\\-233.4609\\-77\\-160.1985\\-231.5078\\-77\\-161.8667\\-227.6016\\-77\\-162.2962\\-225.6484\\-77\\-162.8698\\-223.6953\\-77\\-163.6963\\-221.7422\\-77\\-164.5755\\-217.8359\\-77\\-165.3539\\-215.8828\\-77\\-165.8113\\-213.9297\\-77\\-166.6003\\-210.0234\\-77\\-167.2054\\-208.0703\\-77\\-167.5408\\-206.1172\\-77\\-167.9978\\-202.2109\\-77\\-168.6151\\-194.3984\\-77\\-168.8015\\-192.4453\\-77\\-169.0004\\-188.5391\\-77\\-169.0162\\-184.6328\\-77\\-168.8454\\-180.7266\\-77\\-167.9864\\-169.0078\\-77\\-167.6492\\-165.1016\\-77\\-167.4241\\-163.1484\\-77\\-167.0588\\-161.1953\\-77\\-166.5575\\-159.2422\\-77\\-165.483\\-153.3828\\-77\\-164.8072\\-151.4297\\-77\\-164.2698\\-149.4766\\-77\\-163.898\\-147.5234\\-77\\-163.3719\\-145.5703\\-77\\-162.5179\\-143.6172\\-77\\-162.1094\\-141.6641\\-77\\-161.5943\\-139.7109\\-77\\-160.6638\\-137.7578\\-77\\-160.0006\\-135.8047\\-77\\-158.9284\\-133.8516\\-77\\-158.0305\\-131.8984\\-77\\-156.9676\\-129.9453\\-77\\-156.1202\\-127.9922\\-77\\-154.0064\\-124.0859\\-77\\-151.3077\\-120.1797\\-77\\-150.0355\\-118.2266\\-77\\-147.4609\\-114.7453\\-77\\-145.5078\\-112.377\\-77\\-142.128\\-108.4609\\-77\\-140.1486\\-106.5078\\-77\\-137.6953\\-104.3906\\-77\\-131.8359\\-100.0711\\-77\\-127.9297\\-97.51916\\-77\\-125.9766\\-96.03815\\-77\\-122.0703\\-93.98689\\-77\\-120.1172\\-93.21905\\-77\\-119.5171\\-92.83594\\-77\\-115.8719\\-90.88281\\-77\\-114.2578\\-90.1282\\-77\\-112.3047\\-89.39302\\-77\\-110.3516\\-88.5015\\-77\\-108.3984\\-87.9325\\-77\\-106.4453\\-87.47942\\-77\\-104.4922\\-86.89063\\-77\\-100.5859\\-85.91537\\-77\\-98.63281\\-85.50454\\-77\\-96.67969\\-84.9081\\-77\\-94.72656\\-84.63405\\-77\\-92.77344\\-84.12448\\-77\\-88.86719\\-83.45657\\-77\\-86.91406\\-82.92305\\-77\\-84.96094\\-82.6371\\-77\\-79.10156\\-82.23617\\-77\\-75.19531\\-82.10035\\-77\\-69.33594\\-82.10668\\-77\\-65.42969\\-82.22084\\-77\\-59.57031\\-82.5611\\-77\\-57.61719\\-82.71725\\-77\\-55.66406\\-82.99767\\-77\\-53.71094\\-83.40323\\-77\\-49.80469\\-84.022\\-77\\-47.85156\\-84.25346\\-77\\-43.94531\\-84.95531\\-77\\-38.08594\\-86.44326\\-77\\-36.13281\\-87.21256\\-77\\-32.22656\\-88.32025\\-77\\-28.32031\\-90.04095\\-77\\-26.64812\\-90.88281\\-77\\-24.41406\\-92.15876\\-77\\-20.50781\\-94.78011\\-77\\-18.55469\\-96.50967\\-77\\-14.49033\\-100.6484\\-77\\-12.69531\\-102.9481\\-77\\-8.671514\\-108.4609\\-77\\-6.835938\\-111.2627\\-77\\-4.351021\\-114.3203\\-77\\-2.929688\\-116.4939\\-77\\-0.9765625\\-117.604\\-77\\0.9765625\\-116.2386\\-77\\2.929688\\-113.9032\\-77\\4.046816\\-112.3672\\-77\\4.882813\\-110.9878\\-77\\8.079594\\-106.5078\\-77\\9.598691\\-104.5547\\-77\\12.69531\\-101.1942\\-77\\15.17704\\-98.69531\\-77\\18.55469\\-95.48907\\-77\\20.50781\\-93.86258\\-77\\22.46094\\-92.5438\\-77\\26.36719\\-89.65397\\-77\\28.32031\\-88.36136\\-77\\30.83376\\-86.97656\\-77\\32.22656\\-86.2914\\-77\\34.17969\\-85.46875\\-77\\36.13281\\-84.44699\\-77\\38.08594\\-83.78119\\-77\\40.03906\\-83.00873\\-77\\43.94531\\-81.95119\\-77\\47.85156\\-81.14358\\-77\\51.75781\\-80.51362\\-77\\55.66406\\-80.26599\\-77\\59.57031\\-80.16582\\-77\\65.42969\\-80.18389\\-77\\71.28906\\-80.29713\\-77\\77.14844\\-80.75098\\-77\\79.10156\\-81.04395\\-77\\83.00781\\-81.73924\\-77\\86.91406\\-82.19141\\-77\\90.82031\\-82.87807\\-77\\92.77344\\-83.39826\\-77\\98.63281\\-84.67021\\-77\\100.5859\\-85.37924\\-77\\104.4922\\-86.65104\\-77\\106.4453\\-87.479\\-77\\108.3984\\-88.08078\\-77\\110.3516\\-88.79472\\-77\\112.3047\\-89.69698\\-77\\114.2578\\-90.42364\\-77\\116.2109\\-91.59721\\-77\\118.1641\\-92.47899\\-77\\120.1172\\-93.60555\\-77\\122.0703\\-94.47868\\-77\\127.9297\\-98.1669\\-77\\129.8828\\-99.68535\\-77\\133.7891\\-102.4655\\-77\\135.7422\\-104.2633\\-77\\138.0313\\-106.5078\\-77\\140.1331\\-108.4609\\-77\\141.9345\\-110.4141\\-77\\143.3809\\-112.3672\\-77\\145.5078\\-114.974\\-77\\148.0469\\-118.2266\\-77\\150.3967\\-122.1328\\-77\\151.6927\\-124.0859\\-77\\152.7239\\-126.0391\\-77\\154.0588\\-127.9922\\-77\\154.9503\\-129.9453\\-77\\156.0584\\-131.8984\\-77\\156.7215\\-133.8516\\-77\\157.7962\\-135.8047\\-77\\158.4967\\-137.7578\\-77\\159.5435\\-139.7109\\-77\\160.7567\\-143.6172\\-77\\161.5194\\-145.5703\\-77\\161.9446\\-147.5234\\-77\\162.6347\\-151.4297\\-77\\163.2548\\-153.3828\\-77\\163.7042\\-155.3359\\-77\\164.4636\\-161.1953\\-77\\165.2629\\-165.1016\\-77\\165.5444\\-167.0547\\-77\\165.8923\\-170.9609\\-77\\166.2824\\-176.8203\\-77\\166.6932\\-184.6328\\-77\\166.8127\\-188.5391\\-77\\166.9096\\-194.3984\\-77\\166.776\\-202.2109\\-77\\166.5438\\-208.0703\\-77\\166.3467\\-211.9766\\-77\\166.0804\\-215.8828\\-77\\165.7424\\-219.7891\\-77\\165.501\\-221.7422\\-77\\165.0766\\-223.6953\\-77\\164.5235\\-225.6484\\-77\\163.8555\\-229.5547\\-77\\163.3699\\-231.5078\\-77\\162.5846\\-233.4609\\-77\\161.6881\\-237.3672\\-77\\160.7567\\-239.3203\\-77\\160.0296\\-241.2734\\-77\\158.9603\\-243.2266\\-77\\158.0299\\-245.1797\\-77\\156.8773\\-247.1328\\-77\\156.0434\\-249.0859\\-77\\154.873\\-251.0391\\-77\\153.8844\\-252.9922\\-77\\151.3672\\-256.4061\\-77\\150.9292\\-256.8984\\-77\\149.7445\\-258.8516\\-77\\148.3154\\-260.8047\\-77\\144.8458\\-264.7109\\-77\\143.1894\\-266.6641\\-77\\141.6444\\-268.6172\\-77\\139.6484\\-270.5446\\-77\\135.7422\\-274.6028\\-77\\131.8359\\-277.8533\\-77\\127.9297\\-281.2669\\-77\\125.9766\\-282.8048\\-77\\124.0234\\-284.0453\\-77\\120.1172\\-287.0627\\-77\\118.1641\\-288.3697\\-77\\116.2109\\-289.3756\\-77\\114.2578\\-290.6909\\-77\\112.3047\\-291.6918\\-77\\110.3516\\-292.9702\\-77\\108.3984\\-294.0313\\-77\\106.4453\\-294.9245\\-77\\104.4922\\-295.5745\\-77\\102.5391\\-296.61\\-77\\100.5859\\-297.1582\\-77\\98.63281\\-298.0361\\-77\\96.67969\\-298.7313\\-77\\94.72656\\-299.2254\\-77\\92.77344\\-299.8749\\-77\\90.82031\\-300.4004\\-77\\88.86719\\-300.7147\\-77\\84.96094\\-301.1385\\-77\\81.05469\\-301.4925\\-77\\79.10156\\-301.6074\\-77\\75.19531\\-301.6765\\-77\\73.24219\\-301.6206\\-77\\69.33594\\-301.4095\\-77\\65.42969\\-301.0742\\-77\\61.52344\\-300.618\\-77\\59.57031\\-300.2741\\-77\\57.61719\\-299.5891\\-77\\53.71094\\-298.4223\\-77\\51.75781\\-297.382\\-77\\49.80469\\-296.7091\\-77\\47.85156\\-295.5745\\-77\\45.89844\\-294.7778\\-77\\41.99219\\-292.2664\\-77\\39.21875\\-290.1016\\-77\\36.13281\\-287.4694\\-77\\34.73874\\-286.1953\\-77\\28.32031\\-279.6674\\-77\\24.41406\\-275.0929\\-77\\22.46094\\-272.5143\\-77\\19.75114\\-268.6172\\-77\\18.62917\\-266.6641\\-77\\17.30496\\-264.7109\\-77\\16.60156\\-263.8363\\-77\\14.64844\\-261.6917\\-77\\12.69531\\-260.1865\\-77\\10.74219\\-259.2403\\-77\\8.789063\\-258.9441\\-77\\2.929688\\-258.9451\\-77\\0.9765625\\-258.9958\\-77\\-0.9765625\\-259.477\\-77\\-2.929688\\-259.7295\\-77\\-4.882813\\-259.7988\\-77\\-6.835938\\-259.7623\\-77\\-8.789063\\-260.0417\\-77\\-10.74219\\-260.5324\\-77\\-12.69531\\-261.6624\\-77\\-14.64844\\-263.5306\\-77\\-17.0379\\-266.6641\\-77\\-18.28704\\-268.6172\\-77\\-19.67544\\-270.5703\\-77\\-22.46094\\-273.9661\\-77\\-24.80316\\-276.4297\\-77\\-28.07242\\-280.3359\\-77\\-32.22656\\-284.416\\-77\\-33.89292\\-286.1953\\-77\\-36.14239\\-288.1484\\-77\\-38.08594\\-289.5955\\-77\\-41.99219\\-292.8326\\-77\\-43.94531\\-294.1385\\-77\\-45.89844\\-295.0949\\-77\\-47.85156\\-296.1869\\-77\\-49.80469\\-296.9588\\-77\\-53.71094\\-298.7046\\-77\\-55.66406\\-299.264\\-77\\-57.61719\\-300.0569\\-77\\-59.57031\\-300.5278\\-77\\-61.52344\\-300.8099\\-77\\-65.42969\\-301.2395\\-77\\-69.33594\\-301.5944\\-77\\-73.24219\\-301.735\\-77\\-75.19531\\-301.705\\-77\\-81.05469\\-301.2256\\-77\\-86.91406\\-300.5542\\-77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "308"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "88"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.86719\\-300.0666\\-75\\-90.82031\\-299.3819\\-75\\-94.72656\\-298.4194\\-75\\-96.67969\\-297.4937\\-75\\-100.5859\\-296.2122\\-75\\-102.5391\\-295.23\\-75\\-104.4922\\-294.6102\\-75\\-106.4453\\-293.4183\\-75\\-108.3984\\-292.488\\-75\\-112.3047\\-289.8387\\-75\\-114.2578\\-288.8934\\-75\\-120.1172\\-284.6861\\-75\\-123.1876\\-282.2891\\-75\\-125.9766\\-279.9184\\-75\\-127.6719\\-278.3828\\-75\\-131.8359\\-274.3892\\-75\\-133.6719\\-272.5234\\-75\\-135.7422\\-270.1814\\-75\\-137.0047\\-268.6172\\-75\\-140.357\\-264.7109\\-75\\-141.9396\\-262.7578\\-75\\-143.131\\-260.8047\\-75\\-144.5769\\-258.8516\\-75\\-146.178\\-256.8984\\-75\\-147.6224\\-254.9453\\-75\\-148.7021\\-252.9922\\-75\\-150.0456\\-251.0391\\-75\\-151.0538\\-249.0859\\-75\\-151.3672\\-248.7007\\-75\\-153.3203\\-245.534\\-75\\-153.6063\\-245.1797\\-75\\-154.5132\\-243.2266\\-75\\-155.6599\\-241.2734\\-75\\-156.3735\\-239.3203\\-75\\-157.426\\-237.3672\\-75\\-158.2504\\-235.4141\\-75\\-159.3161\\-233.4609\\-75\\-160.8869\\-229.5547\\-75\\-161.7981\\-227.6016\\-75\\-162.7417\\-223.6953\\-75\\-163.5957\\-221.7422\\-75\\-164.4484\\-217.8359\\-75\\-165.2007\\-215.8828\\-75\\-165.7191\\-213.9297\\-75\\-166.4798\\-210.0234\\-75\\-167.0444\\-208.0703\\-75\\-167.4557\\-206.1172\\-75\\-167.7145\\-204.1641\\-75\\-168.0938\\-200.2578\\-75\\-168.6673\\-192.4453\\-75\\-168.8594\\-188.5391\\-75\\-168.9056\\-184.6328\\-75\\-168.6531\\-178.7734\\-75\\-167.9982\\-169.0078\\-75\\-167.4557\\-163.1484\\-75\\-167.1143\\-161.1953\\-75\\-166.6236\\-159.2422\\-75\\-166.2314\\-157.2891\\-75\\-165.5527\\-153.3828\\-75\\-164.3415\\-149.4766\\-75\\-163.5063\\-145.5703\\-75\\-162.6482\\-143.6172\\-75\\-161.7264\\-139.7109\\-75\\-160.8448\\-137.7578\\-75\\-160.1246\\-135.8047\\-75\\-159.2173\\-133.8516\\-75\\-158.1874\\-131.8984\\-75\\-157.2932\\-129.9453\\-75\\-156.262\\-127.9922\\-75\\-155.3304\\-126.0391\\-75\\-154.213\\-124.0859\\-75\\-151.6974\\-120.1797\\-75\\-148.857\\-116.2734\\-75\\-147.6497\\-114.3203\\-75\\-145.9997\\-112.3672\\-75\\-144.2077\\-110.4141\\-75\\-143.5547\\-109.5256\\-75\\-140.6691\\-106.5078\\-75\\-135.7422\\-102.194\\-75\\-133.5685\\-100.6484\\-75\\-131.8359\\-99.54478\\-75\\-127.9297\\-96.60611\\-75\\-124.0234\\-94.16378\\-75\\-122.0703\\-93.3908\\-75\\-118.1641\\-91.35607\\-75\\-116.2109\\-90.23396\\-75\\-114.2578\\-89.54256\\-75\\-112.3047\\-88.53758\\-75\\-106.4453\\-86.69444\\-75\\-102.5391\\-85.78516\\-75\\-98.63281\\-84.55608\\-75\\-96.67969\\-84.20731\\-75\\-94.72656\\-84.25946\\-75\\-92.77344\\-83.42025\\-75\\-90.82031\\-82.90755\\-75\\-86.91406\\-82.25105\\-75\\-84.96094\\-82.0612\\-75\\-81.05469\\-81.86588\\-75\\-79.10156\\-81.66606\\-75\\-75.19531\\-81.53571\\-75\\-71.28906\\-81.53259\\-75\\-65.42969\\-81.68031\\-75\\-61.52344\\-81.93099\\-75\\-57.61719\\-82.08724\\-75\\-53.71094\\-82.48869\\-75\\-47.85156\\-83.5825\\-75\\-41.99219\\-84.54499\\-75\\-38.08594\\-85.72195\\-75\\-34.17969\\-86.81635\\-75\\-32.22656\\-87.5625\\-75\\-30.27344\\-88.18331\\-75\\-26.36719\\-89.9266\\-75\\-24.57894\\-90.88281\\-75\\-22.46094\\-92.22907\\-75\\-19.05777\\-94.78906\\-75\\-16.88449\\-96.74219\\-75\\-14.97105\\-98.69531\\-75\\-12.69531\\-101.3759\\-75\\-11.83116\\-102.6016\\-75\\-10.23171\\-104.5547\\-75\\-8.888527\\-106.5078\\-75\\-5.948893\\-110.4141\\-75\\-4.882813\\-111.6683\\-75\\-2.929688\\-113.758\\-75\\-0.9765625\\-115.1228\\-75\\0.9765625\\-114.0839\\-75\\2.459162\\-112.3672\\-75\\3.79357\\-110.4141\\-75\\5.246804\\-108.4609\\-75\\8.02234\\-104.5547\\-75\\9.740797\\-102.6016\\-75\\14.64844\\-97.61859\\-75\\16.60156\\-95.75775\\-75\\18.55469\\-94.08244\\-75\\20.50781\\-92.52376\\-75\\22.69666\\-90.88281\\-75\\26.36719\\-88.40326\\-75\\28.70302\\-86.97656\\-75\\34.17969\\-84.14815\\-75\\36.13281\\-83.50182\\-75\\38.08594\\-82.64539\\-75\\41.99219\\-81.64246\\-75\\43.94531\\-80.99512\\-75\\47.85156\\-80.28677\\-75\\51.75781\\-79.93607\\-75\\55.66406\\-79.52834\\-75\\59.57031\\-79.46395\\-75\\65.42969\\-79.55032\\-75\\73.24219\\-79.87489\\-75\\75.19531\\-80.15247\\-75\\79.10156\\-80.43484\\-75\\81.05469\\-80.64598\\-75\\84.96094\\-81.39729\\-75\\86.91406\\-81.72076\\-75\\92.77344\\-82.53177\\-75\\96.67969\\-83.62347\\-75\\98.63281\\-84.04053\\-75\\100.5859\\-84.60976\\-75\\102.5391\\-85.41837\\-75\\106.4453\\-86.68216\\-75\\108.3984\\-87.62537\\-75\\110.3516\\-88.14193\\-75\\112.2887\\-88.92969\\-75\\116.2109\\-90.78363\\-75\\118.1641\\-91.90006\\-75\\122.0703\\-93.94358\\-75\\124.0234\\-95.12711\\-75\\125.9766\\-96.2113\\-75\\129.3774\\-98.69531\\-75\\129.8828\\-99.14545\\-75\\131.8359\\-100.4341\\-75\\133.7891\\-101.8895\\-75\\135.7422\\-103.6765\\-75\\138.5749\\-106.5078\\-75\\140.6389\\-108.4609\\-75\\142.3788\\-110.4141\\-75\\145.5078\\-114.3482\\-75\\148.3797\\-118.2266\\-75\\149.5938\\-120.1797\\-75\\150.6587\\-122.1328\\-75\\151.9747\\-124.0859\\-75\\153.0215\\-126.0391\\-75\\154.225\\-127.9922\\-75\\155.2734\\-129.9844\\-75\\156.1707\\-131.8984\\-75\\156.8915\\-133.8516\\-75\\157.9034\\-135.8047\\-75\\158.614\\-137.7578\\-75\\159.6559\\-139.7109\\-75\\160.8276\\-143.6172\\-75\\161.5646\\-145.5703\\-75\\162.6557\\-151.4297\\-75\\163.7042\\-155.3359\\-75\\164.4088\\-161.1953\\-75\\165.1611\\-165.1016\\-75\\165.4644\\-167.0547\\-75\\165.8213\\-170.9609\\-75\\166.1792\\-176.8203\\-75\\166.516\\-184.6328\\-75\\166.6841\\-194.3984\\-75\\166.5315\\-202.2109\\-75\\166.358\\-208.0703\\-75\\166.1852\\-211.9766\\-75\\165.8074\\-217.8359\\-75\\165.3096\\-221.7422\\-75\\164.375\\-225.6484\\-75\\163.7351\\-229.5547\\-75\\162.437\\-233.4609\\-75\\162.0495\\-235.4141\\-75\\161.5302\\-237.3672\\-75\\160.5722\\-239.3203\\-75\\159.8726\\-241.2734\\-75\\158.7364\\-243.2266\\-75\\157.8979\\-245.1797\\-75\\156.6957\\-247.1328\\-75\\155.948\\-249.0859\\-75\\154.7163\\-251.0391\\-75\\153.7424\\-252.9922\\-75\\151.3672\\-256.1776\\-75\\150.7451\\-256.8984\\-75\\149.5781\\-258.8516\\-75\\148.2016\\-260.8047\\-75\\144.6681\\-264.7109\\-75\\141.6016\\-268.3859\\-75\\139.6484\\-270.2575\\-75\\137.3954\\-272.5234\\-75\\135.7422\\-274.318\\-75\\133.273\\-276.4297\\-75\\131.8359\\-277.5775\\-75\\127.9297\\-281.0866\\-75\\125.9766\\-282.5256\\-75\\124.0234\\-283.7434\\-75\\123.4597\\-284.2422\\-75\\120.1172\\-286.8483\\-75\\116.2109\\-289.1806\\-75\\114.2578\\-290.4526\\-75\\112.3047\\-291.4173\\-75\\110.3516\\-292.777\\-75\\108.3984\\-293.7121\\-75\\106.4453\\-294.7585\\-75\\104.4922\\-295.3869\\-75\\102.5391\\-296.4102\\-75\\98.63281\\-297.6931\\-75\\96.67969\\-298.5669\\-75\\92.77344\\-299.593\\-75\\90.82031\\-300.2229\\-75\\88.86719\\-300.5841\\-75\\84.96094\\-301.0026\\-75\\81.05469\\-301.3288\\-75\\79.10156\\-301.4311\\-75\\75.19531\\-301.4925\\-75\\69.33594\\-301.287\\-75\\65.42969\\-300.9841\\-75\\61.52344\\-300.5315\\-75\\59.57031\\-300.1396\\-75\\57.61719\\-299.4352\\-75\\53.71094\\-298.2911\\-75\\51.75781\\-297.2571\\-75\\49.80469\\-296.614\\-75\\47.85156\\-295.4494\\-75\\45.89844\\-294.6696\\-75\\41.99219\\-292.0623\\-75\\39.36919\\-290.1016\\-75\\36.13281\\-287.391\\-75\\34.79092\\-286.1953\\-75\\32.22656\\-283.6234\\-75\\28.8669\\-280.3359\\-75\\27.17653\\-278.3828\\-75\\24.41406\\-275.3774\\-75\\22.06643\\-272.5234\\-75\\19.4443\\-268.6172\\-75\\16.60156\\-265.1064\\-75\\14.64844\\-263.285\\-75\\12.69531\\-262.1158\\-75\\10.74219\\-261.3351\\-75\\8.789063\\-261.159\\-75\\2.929688\\-261.2038\\-75\\0.9765625\\-261.3766\\-75\\-0.9765625\\-261.7905\\-75\\-2.929688\\-261.9249\\-75\\-6.835938\\-262.0645\\-75\\-10.74219\\-262.4292\\-75\\-12.69531\\-263.1676\\-75\\-14.64844\\-264.7725\\-75\\-16.60156\\-267.1192\\-75\\-22.42156\\-274.4766\\-75\\-24.41406\\-276.4566\\-75\\-26.12106\\-278.3828\\-75\\-28.32031\\-280.7161\\-75\\-32.22656\\-284.4294\\-75\\-34.17969\\-286.4376\\-75\\-38.08594\\-289.5425\\-75\\-41.99219\\-292.7338\\-75\\-44.00344\\-294.0078\\-75\\-47.85156\\-296.0161\\-75\\-51.75781\\-297.6068\\-75\\-53.71094\\-298.595\\-75\\-55.66406\\-299.128\\-75\\-57.63842\\-299.8672\\-75\\-59.57031\\-300.4124\\-75\\-61.52344\\-300.7098\\-75\\-65.42969\\-301.1263\\-75\\-69.33594\\-301.4447\\-75\\-73.24219\\-301.5546\\-75\\-75.19531\\-301.5302\\-75\\-81.05469\\-301.1306\\-75\\-84.96094\\-300.7371\\-75\\-86.91406\\-300.4739\\-75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "315"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "89"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.86719\\-299.8748\\-73\\-90.82031\\-299.233\\-73\\-94.72656\\-298.2606\\-73\\-96.67969\\-297.3329\\-73\\-98.63281\\-296.8065\\-73\\-102.5391\\-295.123\\-73\\-104.4922\\-294.4351\\-73\\-106.4453\\-293.2433\\-73\\-108.3984\\-292.2541\\-73\\-111.6793\\-290.1016\\-73\\-112.3047\\-289.6065\\-73\\-114.2578\\-288.7264\\-73\\-118.1641\\-285.7845\\-73\\-120.1172\\-284.4539\\-73\\-124.0234\\-281.4128\\-73\\-127.4161\\-278.3828\\-73\\-129.5226\\-276.4297\\-73\\-133.4372\\-272.5234\\-73\\-135.2434\\-270.5703\\-73\\-136.8612\\-268.6172\\-73\\-137.6953\\-267.7404\\-73\\-141.7842\\-262.7578\\-73\\-142.9879\\-260.8047\\-73\\-144.4319\\-258.8516\\-73\\-146.03\\-256.8984\\-73\\-147.4609\\-254.8945\\-73\\-148.6167\\-252.9922\\-73\\-149.9326\\-251.0391\\-73\\-150.8823\\-249.0859\\-73\\-151.3672\\-248.483\\-73\\-153.448\\-245.1797\\-73\\-154.4303\\-243.2266\\-73\\-155.5598\\-241.2734\\-73\\-156.3147\\-239.3203\\-73\\-160.0414\\-231.5078\\-73\\-160.7567\\-229.5547\\-73\\-161.6935\\-227.6016\\-73\\-162.6347\\-223.6953\\-73\\-163.4753\\-221.7422\\-73\\-164.3487\\-217.8359\\-73\\-165.6272\\-213.9297\\-73\\-166.362\\-210.0234\\-73\\-167.3479\\-206.1172\\-73\\-167.6413\\-204.1641\\-73\\-168.1776\\-198.3047\\-73\\-168.5452\\-192.4453\\-73\\-168.7177\\-188.5391\\-73\\-168.7725\\-184.6328\\-73\\-168.7456\\-182.6797\\-73\\-168.5671\\-178.7734\\-73\\-167.9862\\-169.0078\\-73\\-167.4463\\-163.1484\\-73\\-167.0869\\-161.1953\\-73\\-166.253\\-157.2891\\-73\\-165.5773\\-153.3828\\-73\\-164.3673\\-149.4766\\-73\\-163.5585\\-145.5703\\-73\\-162.7276\\-143.6172\\-73\\-161.7944\\-139.7109\\-73\\-159.3541\\-133.8516\\-73\\-158.2876\\-131.8984\\-73\\-157.474\\-129.9453\\-73\\-156.3525\\-127.9922\\-73\\-155.5099\\-126.0391\\-73\\-153.3203\\-122.3261\\-73\\-151.9112\\-120.1797\\-73\\-150.4149\\-118.2266\\-73\\-149.4141\\-116.5654\\-73\\-147.9201\\-114.3203\\-73\\-146.3005\\-112.3672\\-73\\-144.5555\\-110.4141\\-73\\-143.5547\\-108.9358\\-73\\-141.2564\\-106.5078\\-73\\-139.1134\\-104.5547\\-73\\-137.6953\\-103.4528\\-73\\-135.7422\\-101.6738\\-73\\-133.7891\\-100.1811\\-73\\-129.8828\\-97.49393\\-73\\-127.9297\\-95.90614\\-73\\-125.9766\\-94.69803\\-73\\-122.0703\\-92.67939\\-73\\-120.1172\\-91.88277\\-73\\-118.1641\\-90.58623\\-73\\-114.2578\\-88.82477\\-73\\-112.3047\\-88.0495\\-73\\-110.3516\\-87.43915\\-73\\-108.3984\\-86.55408\\-73\\-106.4453\\-86.11894\\-73\\-98.63281\\-83.8758\\-73\\-94.72656\\-83.18967\\-73\\-92.77344\\-82.58554\\-73\\-90.82031\\-82.23047\\-73\\-88.86719\\-82.10009\\-73\\-84.96094\\-81.57291\\-73\\-81.05469\\-81.28392\\-73\\-79.10156\\-80.86737\\-73\\-75.19531\\-80.71382\\-73\\-71.28906\\-80.72514\\-73\\-65.42969\\-80.8942\\-73\\-63.47656\\-81.19105\\-73\\-59.57031\\-81.50929\\-73\\-57.61719\\-81.60547\\-73\\-53.71094\\-81.95518\\-73\\-49.80469\\-82.4305\\-73\\-47.85156\\-82.74954\\-73\\-43.94531\\-83.56196\\-73\\-41.99219\\-83.90472\\-73\\-38.08594\\-84.80889\\-73\\-36.13281\\-85.51528\\-73\\-32.22656\\-86.62728\\-73\\-30.27344\\-87.48704\\-73\\-28.32031\\-88.1055\\-73\\-26.38346\\-88.92969\\-73\\-22.71412\\-90.88281\\-73\\-20.50781\\-92.47166\\-73\\-18.55469\\-94.08814\\-73\\-16.60156\\-95.86735\\-73\\-13.82097\\-98.69531\\-73\\-10.6083\\-102.6016\\-73\\-7.720226\\-106.5078\\-73\\-4.882813\\-109.7784\\-73\\-2.929688\\-111.8699\\-73\\-0.9765625\\-113.1763\\-73\\0.9765625\\-112.2376\\-73\\2.372742\\-110.4141\\-73\\4.023162\\-108.4609\\-73\\4.882813\\-107.1046\\-73\\6.754557\\-104.5547\\-73\\8.370536\\-102.6016\\-73\\12.69531\\-98.3346\\-73\\14.64844\\-96.28312\\-73\\16.60156\\-94.48924\\-73\\21.01089\\-90.88281\\-73\\22.46094\\-89.76999\\-73\\24.41406\\-88.51228\\-73\\26.36719\\-87.52251\\-73\\28.32031\\-86.19959\\-73\\30.31921\\-85.02344\\-73\\34.17969\\-83.19769\\-73\\38.08594\\-81.87751\\-73\\40.03906\\-81.38134\\-73\\41.99219\\-80.68552\\-73\\43.94531\\-80.30878\\-73\\45.89844\\-80.04425\\-73\\49.80469\\-79.38019\\-73\\53.71094\\-78.93222\\-73\\55.66406\\-78.79048\\-73\\59.57031\\-78.71383\\-73\\65.42969\\-78.79048\\-73\\69.33594\\-78.99644\\-73\\71.28906\\-79.15643\\-73\\73.24219\\-79.17255\\-73\\75.19531\\-79.632\\-73\\77.14844\\-79.87486\\-73\\83.00781\\-80.42675\\-73\\84.96094\\-80.65642\\-73\\86.91406\\-81.02841\\-73\\88.86719\\-81.50924\\-73\\92.77344\\-82.07472\\-73\\94.72656\\-82.41249\\-73\\96.67969\\-82.92535\\-73\\98.63281\\-83.53825\\-73\\100.5859\\-84.00907\\-73\\102.5391\\-84.66769\\-73\\104.4922\\-85.50475\\-73\\106.4453\\-86.13181\\-73\\110.3516\\-87.69579\\-73\\112.3047\\-88.18723\\-73\\114.2578\\-89.20342\\-73\\116.2109\\-90.11723\\-73\\118.1641\\-91.29436\\-73\\120.1172\\-92.25231\\-73\\122.0703\\-93.46122\\-73\\124.0234\\-94.43326\\-73\\125.9766\\-95.71456\\-73\\129.8828\\-98.42567\\-73\\133.7891\\-101.5113\\-73\\135.7422\\-103.2257\\-73\\139.6484\\-107.1426\\-73\\141.0362\\-108.4609\\-73\\142.6345\\-110.4141\\-73\\145.9612\\-114.3203\\-73\\147.4609\\-116.4428\\-73\\149.9126\\-120.1797\\-73\\150.9032\\-122.1328\\-73\\151.3672\\-122.7331\\-73\\153.3203\\-126.0119\\-73\\155.4913\\-129.9453\\-73\\157.0358\\-133.8516\\-73\\158.0088\\-135.8047\\-73\\158.6945\\-137.7578\\-73\\159.6946\\-139.7109\\-73\\160.8528\\-143.6172\\-73\\161.581\\-145.5703\\-73\\161.969\\-147.5234\\-73\\162.6347\\-151.4297\\-73\\163.66\\-155.3359\\-73\\164.3313\\-161.1953\\-73\\164.6396\\-163.1484\\-73\\165.3539\\-167.0547\\-73\\165.7159\\-170.9609\\-73\\166.06\\-176.8203\\-73\\166.3504\\-184.6328\\-73\\166.4201\\-188.5391\\-73\\166.4717\\-194.3984\\-73\\166.3393\\-202.2109\\-73\\166.1994\\-208.0703\\-73\\166.0454\\-211.9766\\-73\\165.6743\\-217.8359\\-73\\165.4455\\-219.7891\\-73\\164.585\\-223.6953\\-73\\163.9512\\-227.6016\\-73\\163.5773\\-229.5547\\-73\\162.8309\\-231.5078\\-73\\161.9416\\-235.4141\\-73\\161.3164\\-237.3672\\-73\\160.3948\\-239.3203\\-73\\159.7055\\-241.2734\\-73\\158.5502\\-243.2266\\-73\\157.7358\\-245.1797\\-73\\156.5529\\-247.1328\\-73\\155.819\\-249.0859\\-73\\154.583\\-251.0391\\-73\\153.5226\\-252.9922\\-73\\152.1588\\-254.9453\\-73\\150.6185\\-256.8984\\-73\\148.083\\-260.8047\\-73\\146.3515\\-262.7578\\-73\\144.4953\\-264.7109\\-73\\141.6016\\-268.1406\\-73\\139.6484\\-270.0035\\-73\\137.1245\\-272.5234\\-73\\135.2699\\-274.4766\\-73\\131.8359\\-277.3577\\-73\\127.9297\\-280.8554\\-73\\124.0234\\-283.5181\\-73\\120.1172\\-286.6174\\-73\\118.1641\\-287.7369\\-73\\116.2109\\-289.0199\\-73\\112.3047\\-291.2029\\-73\\110.3516\\-292.5461\\-73\\108.3984\\-293.4577\\-73\\106.4453\\-294.5759\\-73\\104.4922\\-295.216\\-73\\102.5391\\-296.1473\\-73\\100.5859\\-296.8482\\-73\\98.63281\\-297.4227\\-73\\96.67969\\-298.3698\\-73\\92.77344\\-299.3641\\-73\\90.82031\\-300.0036\\-73\\88.86719\\-300.4261\\-73\\86.91406\\-300.6791\\-73\\83.00781\\-301.0475\\-73\\79.10156\\-301.2706\\-73\\75.19531\\-301.332\\-73\\69.33594\\-301.1796\\-73\\65.42969\\-300.9008\\-73\\61.52344\\-300.4393\\-73\\59.57031\\-299.9619\\-73\\57.61719\\-299.2951\\-73\\55.66406\\-298.7816\\-73\\53.71094\\-298.1378\\-73\\51.75781\\-297.1476\\-73\\49.80469\\-296.5056\\-73\\47.85156\\-295.3205\\-73\\45.89844\\-294.5592\\-73\\40.03906\\-290.4831\\-73\\38.08594\\-288.9656\\-73\\34.82365\\-286.1953\\-73\\30.81939\\-282.2891\\-73\\28.72467\\-280.3359\\-73\\27.02986\\-278.3828\\-73\\24.41406\\-275.6529\\-73\\21.71947\\-272.5234\\-73\\20.19004\\-270.5703\\-73\\18.81343\\-268.6172\\-73\\16.60156\\-266.3295\\-73\\14.64844\\-264.8528\\-73\\12.69531\\-263.8927\\-73\\10.74219\\-263.2092\\-73\\8.789063\\-263.0647\\-73\\2.929688\\-263.0987\\-73\\0.9765625\\-263.2879\\-73\\-0.9765625\\-263.6883\\-73\\-4.882813\\-263.9315\\-73\\-6.835938\\-263.9966\\-73\\-10.74219\\-264.2271\\-73\\-12.69531\\-264.856\\-73\\-14.64844\\-266.0624\\-73\\-16.60156\\-267.9375\\-73\\-18.91327\\-270.5703\\-73\\-20.35938\\-272.5234\\-73\\-21.9585\\-274.4766\\-73\\-23.97576\\-276.4297\\-73\\-28.32031\\-280.8458\\-73\\-32.22656\\-284.4423\\-73\\-34.17969\\-286.4082\\-73\\-38.08594\\-289.4851\\-73\\-38.7703\\-290.1016\\-73\\-41.99219\\-292.6349\\-73\\-45.89844\\-294.9287\\-73\\-49.80469\\-296.772\\-73\\-51.75781\\-297.4385\\-73\\-53.71094\\-298.4554\\-73\\-55.66406\\-299.0043\\-73\\-59.57031\\-300.2767\\-73\\-61.52344\\-300.6094\\-73\\-63.47656\\-300.8438\\-73\\-67.38281\\-301.188\\-73\\-69.33594\\-301.3094\\-73\\-73.24219\\-301.4095\\-73\\-75.19531\\-301.396\\-73\\-81.05469\\-301.0475\\-73\\-84.96094\\-300.6585\\-73\\-86.91406\\-300.3733\\-73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "320"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "90"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-300.2515\\-71\\-90.82031\\-299.1123\\-71\\-92.77344\\-298.6882\\-71\\-94.72656\\-298.0757\\-71\\-96.67969\\-297.2043\\-71\\-98.63281\\-296.7091\\-71\\-100.5859\\-295.7464\\-71\\-104.4922\\-294.2224\\-71\\-104.7726\\-294.0078\\-71\\-108.2403\\-292.0547\\-71\\-110.3516\\-290.8091\\-71\\-112.3047\\-289.4442\\-71\\-114.2578\\-288.5405\\-71\\-116.2109\\-287.1221\\-71\\-118.1641\\-285.5671\\-71\\-122.0703\\-282.767\\-71\\-124.0234\\-281.2339\\-71\\-129.317\\-276.4297\\-71\\-131.8359\\-273.971\\-71\\-135.08\\-270.5703\\-71\\-136.7188\\-268.6172\\-71\\-137.6953\\-267.5769\\-71\\-139.6484\\-265.1622\\-71\\-140.0997\\-264.7109\\-71\\-141.6016\\-262.7477\\-71\\-142.8497\\-260.8047\\-71\\-143.5547\\-259.9531\\-71\\-145.5078\\-257.2937\\-71\\-145.874\\-256.8984\\-71\\-147.4609\\-254.6542\\-71\\-149.8005\\-251.0391\\-71\\-150.7577\\-249.0859\\-71\\-152.1255\\-247.1328\\-71\\-153.3203\\-245.1029\\-71\\-155.4349\\-241.2734\\-71\\-157.0651\\-237.3672\\-71\\-158.0836\\-235.4141\\-71\\-158.9133\\-233.4609\\-71\\-159.9599\\-231.5078\\-71\\-160.6322\\-229.5547\\-71\\-161.5749\\-227.6016\\-71\\-162.1153\\-225.6484\\-71\\-162.5325\\-223.6953\\-71\\-163.3336\\-221.7422\\-71\\-163.8661\\-219.7891\\-71\\-164.2503\\-217.8359\\-71\\-164.7949\\-215.8828\\-71\\-165.5038\\-213.9297\\-71\\-166.2381\\-210.0234\\-71\\-167.2191\\-206.1172\\-71\\-167.7677\\-202.2109\\-71\\-168.0938\\-198.3047\\-71\\-168.521\\-190.4922\\-71\\-168.6035\\-186.5859\\-71\\-168.6175\\-182.6797\\-71\\-168.2798\\-174.8672\\-71\\-168.0753\\-170.9609\\-71\\-167.6255\\-165.1016\\-71\\-167.3917\\-163.1484\\-71\\-166.6028\\-159.2422\\-71\\-165.5527\\-153.3828\\-71\\-164.3638\\-149.4766\\-71\\-163.568\\-145.5703\\-71\\-162.7533\\-143.6172\\-71\\-162.236\\-141.6641\\-71\\-161.8195\\-139.7109\\-71\\-161.1328\\-137.9659\\-71\\-159.4035\\-133.8516\\-71\\-158.3205\\-131.8984\\-71\\-157.5305\\-129.9453\\-71\\-156.3834\\-127.9922\\-71\\-155.5892\\-126.0391\\-71\\-155.2734\\-125.5875\\-71\\-153.3279\\-122.1328\\-71\\-152.0287\\-120.1797\\-71\\-150.5241\\-118.2266\\-71\\-149.4141\\-116.284\\-71\\-148.0824\\-114.3203\\-71\\-145.5078\\-110.9808\\-71\\-143.5547\\-108.6312\\-71\\-141.6282\\-106.5078\\-71\\-139.6213\\-104.5547\\-71\\-137.4489\\-102.6016\\-71\\-135.1004\\-100.6484\\-71\\-133.7891\\-99.74847\\-71\\-129.8828\\-96.7001\\-71\\-127.9297\\-95.44244\\-71\\-125.9766\\-94.07201\\-71\\-124.0234\\-93.21571\\-71\\-123.4253\\-92.83594\\-71\\-118.1641\\-90.0524\\-71\\-114.2578\\-88.21263\\-71\\-112.3047\\-87.63898\\-71\\-110.3516\\-86.76363\\-71\\-108.3984\\-86.05782\\-71\\-106.4453\\-85.55036\\-71\\-104.4922\\-84.88287\\-71\\-100.5859\\-83.90646\\-71\\-96.67969\\-82.75751\\-71\\-92.77344\\-82.06788\\-71\\-88.86719\\-81.69363\\-71\\-84.96094\\-80.86737\\-71\\-81.05469\\-80.56009\\-71\\-75.19531\\-80.26111\\-71\\-71.28906\\-80.27209\\-71\\-67.38281\\-80.35764\\-71\\-61.52344\\-80.62212\\-71\\-57.61719\\-80.92342\\-71\\-51.75781\\-81.77938\\-71\\-45.89844\\-82.42578\\-71\\-43.94531\\-82.75459\\-71\\-40.03906\\-83.70142\\-71\\-38.08594\\-84.09727\\-71\\-36.13281\\-84.60686\\-71\\-34.17969\\-85.36148\\-71\\-32.22656\\-85.98756\\-71\\-30.27344\\-86.49179\\-71\\-28.32031\\-87.40807\\-71\\-26.36719\\-88.07004\\-71\\-24.48918\\-88.92969\\-71\\-22.46094\\-90.04095\\-71\\-21.2279\\-90.88281\\-71\\-18.68557\\-92.83594\\-71\\-16.60156\\-94.62772\\-71\\-14.64844\\-96.44497\\-71\\-12.61684\\-98.69531\\-71\\-9.606482\\-102.6016\\-71\\-6.835938\\-105.9777\\-71\\-4.647391\\-108.4609\\-71\\-2.929688\\-110.0776\\-71\\-0.9765625\\-111.3645\\-71\\0.9765625\\-110.4459\\-71\\2.929688\\-108.0723\\-71\\4.882813\\-105.4104\\-71\\6.835938\\-102.9105\\-71\\8.789063\\-100.8096\\-71\\10.9375\\-98.69531\\-71\\12.80063\\-96.74219\\-71\\14.77798\\-94.78906\\-71\\17.04102\\-92.83594\\-71\\20.50781\\-90.06307\\-71\\22.46094\\-88.67741\\-71\\24.41406\\-87.62512\\-71\\28.54773\\-85.02344\\-71\\32.43132\\-83.07031\\-71\\34.17969\\-82.29604\\-71\\36.13281\\-81.76115\\-71\\38.08594\\-81.05926\\-71\\40.03906\\-80.47737\\-71\\41.99219\\-80.15941\\-71\\45.89844\\-79.33355\\-71\\49.80469\\-78.71183\\-71\\53.71094\\-78.39373\\-71\\57.61719\\-78.21727\\-71\\61.52344\\-78.19949\\-71\\65.42969\\-78.26398\\-71\\69.33594\\-78.41055\\-71\\71.28906\\-78.56175\\-71\\73.24219\\-78.58166\\-71\\75.19531\\-78.78846\\-71\\79.10156\\-79.5943\\-71\\81.05469\\-79.87817\\-71\\84.96094\\-80.21432\\-71\\88.86719\\-80.7797\\-71\\92.77344\\-81.6665\\-71\\96.67969\\-82.36068\\-71\\98.63281\\-82.86749\\-71\\102.5391\\-84.10829\\-71\\104.4922\\-84.7916\\-71\\106.4453\\-85.65533\\-71\\108.3984\\-86.28333\\-71\\110.3516\\-87.0676\\-71\\114.2578\\-88.43423\\-71\\116.2109\\-89.64048\\-71\\118.1641\\-90.49355\\-71\\120.1172\\-91.77847\\-71\\124.0234\\-93.90679\\-71\\125.9766\\-95.24904\\-71\\127.9297\\-96.40717\\-71\\131.8359\\-99.5612\\-71\\133.2921\\-100.6484\\-71\\135.714\\-102.6016\\-71\\141.6016\\-108.5463\\-71\\142.8841\\-110.4141\\-71\\146.2645\\-114.3203\\-71\\147.7266\\-116.2734\\-71\\148.8105\\-118.2266\\-71\\150.1225\\-120.1797\\-71\\151.3672\\-122.3839\\-71\\153.3203\\-125.6798\\-71\\153.5983\\-126.0391\\-71\\154.4935\\-127.9922\\-71\\155.6458\\-129.9453\\-71\\156.3219\\-131.8984\\-71\\157.1392\\-133.8516\\-71\\158.0556\\-135.8047\\-71\\158.7256\\-137.7578\\-71\\159.7033\\-139.7109\\-71\\160.8392\\-143.6172\\-71\\161.5975\\-145.5703\\-71\\161.9759\\-147.5234\\-71\\162.5877\\-151.4297\\-71\\163.5957\\-155.3359\\-71\\163.8555\\-157.2891\\-71\\164.2631\\-161.1953\\-71\\164.7984\\-165.1016\\-71\\165.1611\\-167.0547\\-71\\165.5963\\-170.9609\\-71\\165.9379\\-176.8203\\-71\\166.1472\\-182.6797\\-71\\166.2651\\-188.5391\\-71\\166.2651\\-196.3516\\-71\\166.1767\\-202.2109\\-71\\166.0457\\-208.0703\\-71\\165.9033\\-211.9766\\-71\\165.6884\\-215.8828\\-71\\165.5187\\-217.8359\\-71\\165.2135\\-219.7891\\-71\\164.7551\\-221.7422\\-71\\164.4088\\-223.6953\\-71\\163.8449\\-227.6016\\-71\\163.3719\\-229.5547\\-71\\162.6174\\-231.5078\\-71\\161.8189\\-235.4141\\-71\\160.2253\\-239.3203\\-71\\159.5052\\-241.2734\\-71\\158.3668\\-243.2266\\-71\\157.5586\\-245.1797\\-71\\156.4276\\-247.1328\\-71\\155.6396\\-249.0859\\-71\\153.3203\\-252.8826\\-71\\152.0084\\-254.9453\\-71\\149.0622\\-258.8516\\-71\\147.9143\\-260.8047\\-71\\145.5078\\-263.4533\\-71\\140.911\\-268.6172\\-71\\139.6484\\-269.7502\\-71\\134.9654\\-274.4766\\-71\\127.9297\\-280.5403\\-71\\125.9766\\-281.8389\\-71\\122.9016\\-284.2422\\-71\\120.1172\\-286.29\\-71\\118.1641\\-287.491\\-71\\116.2109\\-288.8534\\-71\\114.2578\\-289.7407\\-71\\113.805\\-290.1016\\-71\\110.3516\\-292.2055\\-71\\106.9388\\-294.0078\\-71\\106.4453\\-294.3333\\-71\\102.5391\\-295.8137\\-71\\100.5859\\-296.6947\\-71\\98.63281\\-297.2116\\-71\\96.67969\\-298.1011\\-71\\94.72656\\-298.7085\\-71\\92.77344\\-299.1565\\-71\\88.86719\\-300.2413\\-71\\86.91406\\-300.5278\\-71\\83.00781\\-300.907\\-71\\81.05469\\-301.0403\\-71\\75.19531\\-301.2006\\-71\\71.28906\\-301.1342\\-71\\67.38281\\-300.9593\\-71\\63.47656\\-300.5954\\-71\\61.52344\\-300.3314\\-71\\57.61719\\-299.1673\\-71\\55.66406\\-298.6742\\-71\\53.71094\\-297.9217\\-71\\51.75781\\-297.0417\\-71\\49.80469\\-296.369\\-71\\47.85156\\-295.2178\\-71\\45.89844\\-294.4273\\-71\\41.99219\\-291.6418\\-71\\40.03906\\-290.3406\\-71\\38.08594\\-288.8809\\-71\\34.85243\\-286.1953\\-71\\32.22656\\-283.6621\\-71\\28.32031\\-280.1621\\-71\\26.36719\\-278.0135\\-71\\22.46094\\-273.8378\\-71\\20.50781\\-271.5081\\-71\\18.55469\\-269.3311\\-71\\16.60156\\-267.6558\\-71\\14.64844\\-266.248\\-71\\12.69531\\-265.7755\\-71\\10.74219\\-265.1898\\-71\\8.789063\\-265.0997\\-71\\2.929688\\-265.1147\\-71\\0.9765625\\-265.3224\\-71\\-0.9765625\\-265.6786\\-71\\-4.882813\\-265.9497\\-71\\-8.789063\\-266.1487\\-71\\-10.74219\\-266.3047\\-71\\-12.69531\\-266.7538\\-71\\-14.64844\\-267.5771\\-71\\-16.60156\\-269.0031\\-71\\-18.55469\\-270.9793\\-71\\-19.8093\\-272.5234\\-71\\-21.58134\\-274.4766\\-71\\-23.63709\\-276.4297\\-71\\-28.32031\\-280.9755\\-71\\-31.99926\\-284.2422\\-71\\-34.17969\\-286.3531\\-71\\-38.08594\\-289.4255\\-71\\-38.85938\\-290.1016\\-71\\-41.99219\\-292.5132\\-71\\-45.89844\\-294.8475\\-71\\-47.85156\\-295.6354\\-71\\-49.80469\\-296.6717\\-71\\-51.75781\\-297.2926\\-71\\-53.71094\\-298.3205\\-71\\-57.61719\\-299.455\\-71\\-59.57031\\-300.1414\\-71\\-61.52344\\-300.5201\\-71\\-63.47656\\-300.7545\\-71\\-69.33594\\-301.1966\\-71\\-73.24219\\-301.2964\\-71\\-75.19531\\-301.2835\\-71\\-79.10156\\-301.0954\\-71\\-83.00781\\-300.7873\\-71\\-84.96094\\-300.5769\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "317"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "91"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-300.1164\\-69\\-88.86719\\-299.4703\\-69\\-92.77344\\-298.5845\\-69\\-96.67969\\-297.0948\\-69\\-98.63281\\-296.5942\\-69\\-100.5859\\-295.5689\\-69\\-102.5391\\-294.9181\\-69\\-104.4541\\-294.0078\\-69\\-106.4453\\-292.9468\\-69\\-108.3984\\-291.6418\\-69\\-110.3516\\-290.6482\\-69\\-112.3047\\-289.3116\\-69\\-114.2578\\-288.2969\\-69\\-116.2109\\-286.9577\\-69\\-120.1172\\-283.876\\-69\\-122.0703\\-282.5692\\-69\\-124.0234\\-281.0468\\-69\\-129.1299\\-276.4297\\-69\\-131.8359\\-273.801\\-69\\-134.9306\\-270.5703\\-69\\-137.6953\\-267.4037\\-69\\-139.9472\\-264.7109\\-69\\-141.6016\\-262.5568\\-69\\-142.7327\\-260.8047\\-69\\-144.2901\\-258.8516\\-69\\-147.4609\\-254.4798\\-69\\-149.6469\\-251.0391\\-69\\-150.6633\\-249.0859\\-69\\-152.02\\-247.1328\\-69\\-153.0851\\-245.1797\\-69\\-154.2495\\-243.2266\\-69\\-155.2816\\-241.2734\\-69\\-156.1716\\-239.3203\\-69\\-156.9034\\-237.3672\\-69\\-157.9942\\-235.4141\\-69\\-158.7477\\-233.4609\\-69\\-159.8726\\-231.5078\\-69\\-160.4992\\-229.5547\\-69\\-161.4306\\-227.6016\\-69\\-162.032\\-225.6484\\-69\\-162.437\\-223.6953\\-69\\-163.7795\\-219.7891\\-69\\-164.6169\\-215.8828\\-69\\-165.332\\-213.9297\\-69\\-165.7804\\-211.9766\\-69\\-166.5193\\-208.0703\\-69\\-167.0448\\-206.1172\\-69\\-167.4143\\-204.1641\\-69\\-167.6647\\-202.2109\\-69\\-168.1195\\-196.3516\\-69\\-168.3262\\-192.4453\\-69\\-168.4504\\-188.5391\\-69\\-168.4768\\-182.6797\\-69\\-168.288\\-176.8203\\-69\\-168.1176\\-172.9141\\-69\\-167.8878\\-169.0078\\-69\\-167.5614\\-165.1016\\-69\\-167.3023\\-163.1484\\-69\\-166.51\\-159.2422\\-69\\-165.8711\\-155.3359\\-69\\-165.501\\-153.3828\\-69\\-164.8582\\-151.4297\\-69\\-164.3384\\-149.4766\\-69\\-163.5391\\-145.5703\\-69\\-162.7189\\-143.6172\\-69\\-161.8108\\-139.7109\\-69\\-159.3667\\-133.8516\\-69\\-158.2992\\-131.8984\\-69\\-157.4857\\-129.9453\\-69\\-156.3766\\-127.9922\\-69\\-155.6039\\-126.0391\\-69\\-154.4167\\-124.0859\\-69\\-153.3579\\-122.1328\\-69\\-152.0735\\-120.1797\\-69\\-150.6145\\-118.2266\\-69\\-149.5332\\-116.2734\\-69\\-148.2034\\-114.3203\\-69\\-143.6554\\-108.4609\\-69\\-141.9601\\-106.5078\\-69\\-140.0876\\-104.5547\\-69\\-137.6953\\-102.2735\\-69\\-135.7422\\-100.6232\\-69\\-133.7891\\-99.2727\\-69\\-130.5938\\-96.74219\\-69\\-129.8828\\-96.11192\\-69\\-127.8701\\-94.78906\\-69\\-125.9766\\-93.7873\\-69\\-124.0234\\-92.63311\\-69\\-122.0703\\-91.62389\\-69\\-120.1172\\-90.45258\\-69\\-118.1641\\-89.63932\\-69\\-116.2109\\-88.5625\\-69\\-114.2578\\-87.90206\\-69\\-112.2233\\-86.97656\\-69\\-110.3516\\-86.25666\\-69\\-106.4453\\-84.85828\\-69\\-104.4922\\-84.27369\\-69\\-102.5391\\-83.89947\\-69\\-100.5859\\-83.41706\\-69\\-98.63281\\-82.68406\\-69\\-96.67969\\-82.21667\\-69\\-88.86719\\-81.10891\\-69\\-86.91406\\-80.72798\\-69\\-83.00781\\-80.28991\\-69\\-79.10156\\-80.0921\\-69\\-75.19531\\-79.81735\\-69\\-73.24219\\-79.78989\\-69\\-67.38281\\-79.93089\\-69\\-65.42969\\-80.085\\-69\\-61.52344\\-80.23334\\-69\\-55.66406\\-80.63901\\-69\\-53.71094\\-80.88251\\-69\\-49.80469\\-81.52648\\-69\\-43.94531\\-82.20864\\-69\\-41.99219\\-82.4709\\-69\\-40.03906\\-82.89346\\-69\\-34.17969\\-84.47174\\-69\\-32.22656\\-85.20605\\-69\\-28.32031\\-86.52734\\-69\\-26.36719\\-87.38092\\-69\\-24.41406\\-88.1113\\-69\\-22.86458\\-88.92969\\-69\\-20.50781\\-90.32372\\-69\\-18.55469\\-91.90343\\-69\\-14.64844\\-95.43197\\-69\\-11.6442\\-98.69531\\-69\\-8.292906\\-102.6016\\-69\\-6.863318\\-104.5547\\-69\\-5.117563\\-106.5078\\-69\\-2.929688\\-108.6689\\-69\\-0.9765625\\-109.7357\\-69\\0.9765625\\-108.8835\\-69\\1.365459\\-108.4609\\-69\\4.336229\\-104.5547\\-69\\6.008469\\-102.6016\\-69\\7.788874\\-100.6484\\-69\\11.68981\\-96.74219\\-69\\12.69531\\-95.6386\\-69\\15.67508\\-92.83594\\-69\\18.55469\\-90.46429\\-69\\20.67814\\-88.92969\\-69\\24.41406\\-86.59031\\-69\\26.36719\\-85.51172\\-69\\28.32031\\-84.22126\\-69\\32.22656\\-82.33262\\-69\\34.17969\\-81.7187\\-69\\36.13281\\-80.95181\\-69\\38.08594\\-80.40404\\-69\\41.99219\\-79.57639\\-69\\43.94531\\-79.05556\\-69\\45.89844\\-78.69195\\-69\\49.80469\\-78.17522\\-69\\53.71094\\-77.89838\\-69\\57.61719\\-77.68584\\-69\\61.52344\\-77.64117\\-69\\67.38281\\-77.79946\\-69\\71.28906\\-78.10847\\-69\\75.19531\\-78.21146\\-69\\77.14844\\-78.51505\\-69\\83.00781\\-79.59733\\-69\\84.96094\\-79.7686\\-69\\90.82031\\-80.62554\\-69\\92.77344\\-81.06022\\-69\\94.72656\\-81.61244\\-69\\98.63281\\-82.34106\\-69\\100.5859\\-82.88536\\-69\\102.5391\\-83.65497\\-69\\104.4922\\-84.25278\\-69\\108.3984\\-85.84423\\-69\\110.3516\\-86.42318\\-69\\114.2578\\-88.05393\\-69\\118.1641\\-89.97903\\-69\\120.1172\\-91.17722\\-69\\122.0703\\-92.26991\\-69\\124.0234\\-93.53934\\-69\\125.9766\\-94.58894\\-69\\127.9297\\-95.95964\\-69\\131.8359\\-99.11384\\-69\\133.7891\\-100.4964\\-69\\135.7422\\-102.1398\\-69\\140.1032\\-106.5078\\-69\\141.9449\\-108.4609\\-69\\143.2746\\-110.4141\\-69\\146.4781\\-114.3203\\-69\\147.999\\-116.2734\\-69\\148.9715\\-118.2266\\-69\\150.2717\\-120.1797\\-69\\151.4338\\-122.1328\\-69\\152.4936\\-124.0859\\-69\\153.7417\\-126.0391\\-69\\154.5944\\-127.9922\\-69\\155.7414\\-129.9453\\-69\\156.3578\\-131.8984\\-69\\158.0672\\-135.8047\\-69\\158.7161\\-137.7578\\-69\\159.6889\\-139.7109\\-69\\160.7783\\-143.6172\\-69\\161.583\\-145.5703\\-69\\161.969\\-147.5234\\-69\\162.5013\\-151.4297\\-69\\162.927\\-153.3828\\-69\\163.4961\\-155.3359\\-69\\163.7827\\-157.2891\\-69\\164.6099\\-165.1016\\-69\\165.2261\\-169.0078\\-69\\165.4455\\-170.9609\\-69\\165.8035\\-176.8203\\-69\\165.9619\\-180.7266\\-69\\166.0904\\-186.5859\\-69\\166.1326\\-192.4453\\-69\\166.0811\\-198.3047\\-69\\165.9958\\-204.1641\\-69\\165.7552\\-211.9766\\-69\\165.5187\\-215.8828\\-69\\165.2982\\-217.8359\\-69\\164.5235\\-221.7422\\-69\\163.7042\\-227.6016\\-69\\162.4748\\-231.5078\\-69\\162.1212\\-233.4609\\-69\\161.6626\\-235.4141\\-69\\160.7783\\-237.3672\\-69\\160.0576\\-239.3203\\-69\\159.2024\\-241.2734\\-69\\158.1926\\-243.2266\\-69\\157.2937\\-245.1797\\-69\\156.2968\\-247.1328\\-69\\155.4219\\-249.0859\\-69\\154.2618\\-251.0391\\-69\\152.9584\\-252.9922\\-69\\151.7991\\-254.9453\\-69\\148.882\\-258.8516\\-69\\147.6653\\-260.8047\\-69\\145.9961\\-262.7578\\-69\\140.6986\\-268.6172\\-69\\138.6148\\-270.5703\\-69\\135.7422\\-273.5269\\-69\\133.7891\\-275.3294\\-69\\129.8828\\-278.6058\\-69\\127.7255\\-280.3359\\-69\\125.9766\\-281.6185\\-69\\122.0703\\-284.6133\\-69\\116.847\\-288.1484\\-69\\116.2109\\-288.6402\\-69\\114.2578\\-289.4738\\-69\\112.3047\\-290.7991\\-69\\110.3516\\-291.7947\\-69\\108.3984\\-292.9985\\-69\\104.4922\\-294.906\\-69\\102.5391\\-295.5171\\-69\\100.5859\\-296.4987\\-69\\98.63281\\-297.0287\\-69\\96.67969\\-297.7188\\-69\\94.72656\\-298.5129\\-69\\90.82031\\-299.4066\\-69\\88.86719\\-299.9765\\-69\\86.91406\\-300.3555\\-69\\83.00781\\-300.7656\\-69\\79.10156\\-300.9791\\-69\\75.19531\\-301.0522\\-69\\71.28906\\-301.0095\\-69\\67.38281\\-300.8438\\-69\\63.47656\\-300.4933\\-69\\61.52344\\-300.1841\\-69\\59.57031\\-299.5641\\-69\\55.66406\\-298.5668\\-69\\53.71094\\-297.6788\\-69\\49.80469\\-296.1739\\-69\\47.85156\\-295.1248\\-69\\45.89844\\-294.292\\-69\\41.99219\\-291.4785\\-69\\38.08594\\-288.8061\\-69\\34.87203\\-286.1953\\-69\\32.22656\\-283.7209\\-69\\28.32031\\-280.4987\\-69\\22.46094\\-274.4509\\-69\\20.50781\\-272.266\\-69\\18.55469\\-270.2624\\-69\\16.60156\\-269.0127\\-69\\14.64844\\-268.09\\-69\\12.69531\\-267.5511\\-69\\10.74219\\-267.1821\\-69\\8.789063\\-267.1523\\-69\\2.929688\\-267.1776\\-69\\0.9765625\\-267.284\\-69\\-0.9765625\\-267.5217\\-69\\-2.929688\\-267.5897\\-69\\-4.882813\\-267.9284\\-69\\-6.835938\\-268.1057\\-69\\-10.74219\\-268.3395\\-69\\-12.69531\\-268.5488\\-69\\-14.64844\\-269.0938\\-69\\-16.60156\\-269.9954\\-69\\-18.55469\\-271.7022\\-69\\-21.121\\-274.4766\\-69\\-24.41406\\-277.4718\\-69\\-28.32031\\-281.1104\\-69\\-31.99527\\-284.2422\\-69\\-34.17969\\-286.2786\\-69\\-36.13281\\-287.7966\\-69\\-38.96012\\-290.1016\\-69\\-41.99219\\-292.4012\\-69\\-43.94531\\-293.4975\\-69\\-45.89844\\-294.7498\\-69\\-47.85156\\-295.4693\\-69\\-49.80469\\-296.5736\\-69\\-51.75781\\-297.1703\\-69\\-53.71094\\-298.1498\\-69\\-55.66406\\-298.7717\\-69\\-57.61719\\-299.2883\\-69\\-59.57031\\-299.9619\\-69\\-61.52344\\-300.4227\\-69\\-65.42969\\-300.8381\\-69\\-71.28906\\-301.1672\\-69\\-75.19531\\-301.1796\\-69\\-79.10156\\-301.0026\\-69\\-83.00781\\-300.7034\\-69\\-84.96094\\-300.4739\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "308"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "92"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-299.9338\\-67\\-88.86719\\-299.3318\\-67\\-92.77344\\-298.4697\\-67\\-94.72656\\-297.6068\\-67\\-98.63281\\-296.4524\\-67\\-100.5859\\-295.4148\\-67\\-102.5391\\-294.8074\\-67\\-106.4453\\-292.7939\\-67\\-108.3984\\-291.4332\\-67\\-110.3516\\-290.4293\\-67\\-112.3047\\-289.1806\\-67\\-116.2109\\-286.7878\\-67\\-116.8791\\-286.1953\\-67\\-120.1172\\-283.6497\\-67\\-122.0703\\-282.3793\\-67\\-124.0234\\-280.8488\\-67\\-124.5326\\-280.3359\\-67\\-128.9503\\-276.4297\\-67\\-131.8359\\-273.6293\\-67\\-134.7656\\-270.5703\\-67\\-137.6953\\-267.2232\\-67\\-141.6016\\-262.3985\\-67\\-142.6708\\-260.8047\\-67\\-144.2037\\-258.8516\\-67\\-145.6241\\-256.8984\\-67\\-148.3647\\-252.9922\\-67\\-150.5822\\-249.0859\\-67\\-151.9134\\-247.1328\\-67\\-152.9417\\-245.1797\\-67\\-154.1599\\-243.2266\\-67\\-156.0974\\-239.3203\\-67\\-156.7722\\-237.3672\\-67\\-157.9006\\-235.4141\\-67\\-158.5926\\-233.4609\\-67\\-159.7484\\-231.5078\\-67\\-160.3683\\-229.5547\\-67\\-161.2734\\-227.6016\\-67\\-161.9416\\-225.6484\\-67\\-162.3399\\-223.6953\\-67\\-162.8981\\-221.7422\\-67\\-163.6719\\-219.7891\\-67\\-164.452\\-215.8828\\-67\\-165.6669\\-211.9766\\-67\\-166.3504\\-208.0703\\-67\\-167.2431\\-204.1641\\-67\\-167.5408\\-202.2109\\-67\\-167.7376\\-200.2578\\-67\\-168.0038\\-196.3516\\-67\\-168.2144\\-192.4453\\-67\\-168.3302\\-188.5391\\-67\\-168.3556\\-182.6797\\-67\\-168.2144\\-176.8203\\-67\\-167.9515\\-170.9609\\-67\\-167.4774\\-165.1016\\-67\\-167.193\\-163.1484\\-67\\-166.4005\\-159.2422\\-67\\-165.8053\\-155.3359\\-67\\-165.4161\\-153.3828\\-67\\-164.761\\-151.4297\\-67\\-164.2849\\-149.4766\\-67\\-163.4538\\-145.5703\\-67\\-162.6378\\-143.6172\\-67\\-161.7691\\-139.7109\\-67\\-160.8833\\-137.7578\\-67\\-159.2605\\-133.8516\\-67\\-158.2504\\-131.8984\\-67\\-157.362\\-129.9453\\-67\\-156.321\\-127.9922\\-67\\-155.5233\\-126.0391\\-67\\-155.2734\\-125.6888\\-67\\-153.3203\\-122.1437\\-67\\-152.0691\\-120.1797\\-67\\-150.6394\\-118.2266\\-67\\-149.5768\\-116.2734\\-67\\-148.2933\\-114.3203\\-67\\-143.8427\\-108.4609\\-67\\-142.2455\\-106.5078\\-67\\-140.4486\\-104.5547\\-67\\-137.6953\\-101.8868\\-67\\-135.7422\\-100.2185\\-67\\-131.2924\\-96.74219\\-67\\-127.9297\\-94.28993\\-67\\-125.9766\\-93.43426\\-67\\-124.0234\\-92.18708\\-67\\-120.1172\\-90.01405\\-67\\-118.1641\\-89.20973\\-67\\-116.2109\\-88.16864\\-67\\-114.2578\\-87.52544\\-67\\-112.3047\\-86.53146\\-67\\-110.3516\\-85.86328\\-67\\-106.4453\\-84.34437\\-67\\-104.4922\\-83.79782\\-67\\-102.5391\\-83.46231\\-67\\-98.63281\\-82.21172\\-67\\-94.72656\\-81.52103\\-67\\-92.77344\\-81.07581\\-67\\-84.96094\\-80.1823\\-67\\-83.00781\\-79.92361\\-67\\-81.05469\\-79.76763\\-67\\-73.24219\\-79.28513\\-67\\-67.38281\\-79.48461\\-67\\-61.52344\\-79.82188\\-67\\-59.57031\\-80.03555\\-67\\-55.66406\\-80.31046\\-67\\-49.80469\\-80.85628\\-67\\-45.89844\\-81.51212\\-67\\-40.03906\\-82.25651\\-67\\-38.08594\\-82.62124\\-67\\-34.17969\\-83.85281\\-67\\-32.22656\\-84.39868\\-67\\-30.36386\\-85.02344\\-67\\-28.32031\\-85.95148\\-67\\-26.36719\\-86.53575\\-67\\-24.41406\\-87.50183\\-67\\-22.46094\\-88.28097\\-67\\-18.55469\\-90.82388\\-67\\-16.60156\\-92.6692\\-67\\-14.64844\\-94.35239\\-67\\-12.69531\\-96.296\\-67\\-10.52782\\-98.69531\\-67\\-9.078721\\-100.6484\\-67\\-5.59677\\-104.5547\\-67\\-2.929688\\-107.2054\\-67\\-0.9765625\\-108.2656\\-67\\0.9765625\\-107.398\\-67\\4.882813\\-102.7597\\-67\\8.536784\\-98.69531\\-67\\10.74219\\-96.42442\\-67\\14.47976\\-92.83594\\-67\\16.71464\\-90.88281\\-67\\18.55469\\-89.64307\\-67\\20.50781\\-88.14984\\-67\\22.46094\\-86.875\\-67\\24.41406\\-85.84183\\-67\\26.36719\\-84.53169\\-67\\30.27344\\-82.48984\\-67\\32.22656\\-81.77985\\-67\\34.17969\\-80.95181\\-67\\36.13281\\-80.38794\\-67\\38.08594\\-79.92287\\-67\\41.99219\\-78.87041\\-67\\45.89844\\-78.18124\\-67\\47.85156\\-77.89453\\-67\\53.71094\\-77.34375\\-67\\57.61719\\-77.11253\\-67\\61.52344\\-77.01563\\-67\\63.47656\\-77.04206\\-67\\67.38281\\-77.21888\\-67\\71.28906\\-77.67995\\-67\\73.24219\\-77.7993\\-67\\75.19531\\-77.80185\\-67\\77.14844\\-78.02271\\-67\\79.10156\\-78.38167\\-67\\84.47266\\-79.16406\\-67\\88.86719\\-80.02749\\-67\\92.77344\\-80.54313\\-67\\94.72656\\-80.98331\\-67\\96.67969\\-81.59508\\-67\\100.5859\\-82.40012\\-67\\104.4922\\-83.82851\\-67\\106.4453\\-84.45581\\-67\\108.3984\\-85.34421\\-67\\112.3047\\-86.63719\\-67\\114.2578\\-87.77896\\-67\\116.2109\\-88.43443\\-67\\118.1641\\-89.56573\\-67\\120.1172\\-90.5199\\-67\\124.0234\\-93.06618\\-67\\125.9766\\-94.07336\\-67\\127.9297\\-95.60066\\-67\\131.8359\\-98.54805\\-67\\133.7891\\-100.1127\\-67\\135.7422\\-101.8217\\-67\\137.6953\\-103.7279\\-67\\139.6484\\-105.8188\\-67\\140.4176\\-106.5078\\-67\\142.2084\\-108.4609\\-67\\143.7124\\-110.4141\\-67\\145.0903\\-112.3672\\-67\\148.1729\\-116.2734\\-67\\149.1382\\-118.2266\\-67\\151.591\\-122.1328\\-67\\152.5908\\-124.0859\\-67\\153.815\\-126.0391\\-67\\154.6639\\-127.9922\\-67\\155.785\\-129.9453\\-67\\156.3766\\-131.8984\\-67\\158.0487\\-135.8047\\-67\\158.6465\\-137.7578\\-67\\159.6252\\-139.7109\\-67\\160.7023\\-143.6172\\-67\\161.499\\-145.5703\\-67\\161.9178\\-147.5234\\-67\\162.4042\\-151.4297\\-67\\162.7581\\-153.3828\\-67\\163.3336\\-155.3359\\-67\\163.6927\\-157.2891\\-67\\163.9075\\-159.2422\\-67\\164.4474\\-165.1016\\-67\\164.6704\\-167.0547\\-67\\165.2385\\-170.9609\\-67\\165.561\\-174.8672\\-67\\165.8273\\-180.7266\\-67\\165.9175\\-184.6328\\-67\\165.966\\-192.4453\\-67\\165.8948\\-202.2109\\-67\\165.7589\\-208.0703\\-67\\165.483\\-213.9297\\-67\\165.2865\\-215.8828\\-67\\164.3423\\-221.7422\\-67\\163.8661\\-225.6484\\-67\\163.5063\\-227.6016\\-67\\162.7794\\-229.5547\\-67\\161.9962\\-233.4609\\-67\\161.4698\\-235.4141\\-67\\160.5481\\-237.3672\\-67\\159.8894\\-239.3203\\-67\\158.8881\\-241.2734\\-67\\158.0324\\-243.2266\\-67\\156.9569\\-245.1797\\-67\\156.1726\\-247.1328\\-67\\154.0838\\-251.0391\\-67\\152.7294\\-252.9922\\-67\\151.5416\\-254.9453\\-67\\150.1888\\-256.8984\\-67\\147.4609\\-260.6652\\-67\\145.7291\\-262.7578\\-67\\142.3124\\-266.6641\\-67\\140.4903\\-268.6172\\-67\\137.6953\\-271.2737\\-67\\135.7422\\-273.3281\\-67\\133.7891\\-275.1253\\-67\\129.8828\\-278.2133\\-67\\127.3682\\-280.3359\\-67\\124.0234\\-282.8969\\-67\\120.1172\\-285.575\\-67\\118.1641\\-287.0468\\-67\\116.2109\\-288.356\\-67\\114.2578\\-289.2757\\-67\\112.3047\\-290.5711\\-67\\110.3516\\-291.4958\\-67\\108.3984\\-292.7746\\-67\\106.4453\\-293.6557\\-67\\104.4922\\-294.7186\\-67\\102.5391\\-295.2868\\-67\\100.5859\\-296.2247\\-67\\98.63281\\-296.8677\\-67\\96.67969\\-297.3978\\-67\\94.72656\\-298.2606\\-67\\92.77344\\-298.7648\\-67\\90.82031\\-299.1595\\-67\\86.91406\\-300.1281\\-67\\83.00781\\-300.6136\\-67\\79.10156\\-300.8438\\-67\\75.19531\\-300.9184\\-67\\71.28906\\-300.8894\\-67\\67.38281\\-300.7321\\-67\\63.47656\\-300.3644\\-67\\61.52344\\-300.0026\\-67\\59.57031\\-299.3759\\-67\\55.66406\\-298.4421\\-67\\53.71094\\-297.4807\\-67\\51.75781\\-296.8543\\-67\\45.89844\\-294.1102\\-67\\43.02979\\-292.0547\\-67\\38.08594\\-288.7705\\-67\\34.85292\\-286.1953\\-67\\32.22656\\-283.841\\-67\\30.27344\\-282.3793\\-67\\28.32031\\-280.7993\\-67\\23.89172\\-276.4297\\-67\\21.79747\\-274.4766\\-67\\18.55469\\-271.3501\\-67\\16.60156\\-270.1317\\-67\\12.69531\\-269.2213\\-67\\10.74219\\-269.0369\\-67\\6.835938\\-268.9634\\-67\\2.929688\\-269.0131\\-67\\-2.929688\\-269.1764\\-67\\-4.882813\\-269.7092\\-67\\-8.789063\\-269.9633\\-67\\-10.74219\\-269.5865\\-67\\-12.69531\\-269.8536\\-67\\-14.64844\\-270.3839\\-67\\-16.60156\\-271.3243\\-67\\-18.55469\\-272.6717\\-67\\-20.50781\\-274.5869\\-67\\-24.41406\\-277.8662\\-67\\-27.19411\\-280.3359\\-67\\-30.27344\\-282.9105\\-67\\-31.95866\\-284.2422\\-67\\-34.17969\\-286.2029\\-67\\-39.0705\\-290.1016\\-67\\-41.99219\\-292.2417\\-67\\-43.94531\\-293.3668\\-67\\-45.89844\\-294.6393\\-67\\-47.85156\\-295.3418\\-67\\-49.80469\\-296.446\\-67\\-51.75781\\-297.0637\\-67\\-55.66406\\-298.6641\\-67\\-57.61719\\-299.1456\\-67\\-61.52344\\-300.3005\\-67\\-63.47656\\-300.5615\\-67\\-67.38281\\-300.8894\\-67\\-71.28906\\-301.0594\\-67\\-75.19531\\-301.0879\\-67\\-81.05469\\-300.7938\\-67\\-84.96094\\-300.3644\\-67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "298"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "93"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.96094\\-300.2413\\-65\\-88.86719\\-299.1924\\-65\\-92.77344\\-298.3133\\-65\\-94.72656\\-297.4227\\-65\\-96.67969\\-296.8953\\-65\\-98.63281\\-296.263\\-65\\-100.5859\\-295.2792\\-65\\-102.5391\\-294.6858\\-65\\-104.4922\\-293.5322\\-65\\-106.4453\\-292.6152\\-65\\-108.3984\\-291.2679\\-65\\-112.3047\\-289.0446\\-65\\-114.2578\\-287.7537\\-65\\-116.2109\\-286.5873\\-65\\-120.1172\\-283.4383\\-65\\-121.8787\\-282.2891\\-65\\-124.0234\\-280.6487\\-65\\-128.7095\\-276.4297\\-65\\-131.8359\\-273.4312\\-65\\-133.7891\\-271.338\\-65\\-134.6029\\-270.5703\\-65\\-137.6953\\-267.0434\\-65\\-141.6016\\-262.2259\\-65\\-144.1136\\-258.8516\\-65\\-145.4671\\-256.8984\\-65\\-148.2798\\-252.9922\\-65\\-150.4877\\-249.0859\\-65\\-151.8291\\-247.1328\\-65\\-152.832\\-245.1797\\-65\\-154.0766\\-243.2266\\-65\\-154.9408\\-241.2734\\-65\\-156.0136\\-239.3203\\-65\\-156.651\\-237.3672\\-65\\-157.787\\-235.4141\\-65\\-158.4473\\-233.4609\\-65\\-159.5741\\-231.5078\\-65\\-160.2367\\-229.5547\\-65\\-161.8425\\-225.6484\\-65\\-162.6967\\-221.7422\\-65\\-163.5164\\-219.7891\\-65\\-164.3094\\-215.8828\\-65\\-164.8324\\-213.9297\\-65\\-165.5215\\-211.9766\\-65\\-166.5534\\-206.1172\\-65\\-167.3712\\-202.2109\\-65\\-167.6099\\-200.2578\\-65\\-167.9982\\-194.3984\\-65\\-168.2235\\-188.5391\\-65\\-168.239\\-182.6797\\-65\\-168.175\\-178.7734\\-65\\-168.057\\-174.8672\\-65\\-167.866\\-170.9609\\-65\\-167.5698\\-167.0547\\-65\\-167.3712\\-165.1016\\-65\\-167.0588\\-163.1484\\-65\\-166.2884\\-159.2422\\-65\\-165.7124\\-155.3359\\-65\\-165.2982\\-153.3828\\-65\\-164.6396\\-151.4297\\-65\\-163.8359\\-147.5234\\-65\\-163.3212\\-145.5703\\-65\\-162.5179\\-143.6172\\-65\\-161.6825\\-139.7109\\-65\\-160.7276\\-137.7578\\-65\\-160.0236\\-135.8047\\-65\\-156.25\\-127.9922\\-65\\-155.3615\\-126.0391\\-65\\-153.3203\\-122.3302\\-65\\-152.0244\\-120.1797\\-65\\-150.6165\\-118.2266\\-65\\-149.5625\\-116.2734\\-65\\-148.3211\\-114.3203\\-65\\-146.8645\\-112.3672\\-65\\-145.5154\\-110.4141\\-65\\-142.5068\\-106.5078\\-65\\-139.6484\\-103.3814\\-65\\-137.6953\\-101.5303\\-65\\-134.421\\-98.69531\\-65\\-131.8359\\-96.63898\\-65\\-127.9297\\-93.92026\\-65\\-125.9766\\-92.79779\\-65\\-124.0234\\-91.83481\\-65\\-122.0703\\-90.63692\\-65\\-120.1172\\-89.70483\\-65\\-118.1641\\-88.64518\\-65\\-116.2109\\-87.88758\\-65\\-114.2578\\-86.90569\\-65\\-112.3047\\-86.23223\\-65\\-109.375\\-85.02344\\-65\\-106.4453\\-83.94515\\-65\\-104.4922\\-83.45952\\-65\\-100.5859\\-82.36068\\-65\\-96.67969\\-81.4402\\-65\\-94.72656\\-80.92342\\-65\\-92.77344\\-80.69169\\-65\\-86.91406\\-80.13467\\-65\\-83.00781\\-79.57037\\-65\\-77.14844\\-79.05556\\-65\\-73.24219\\-78.8601\\-65\\-67.38281\\-78.96462\\-65\\-61.52344\\-79.36418\\-65\\-53.71094\\-80.14063\\-65\\-51.75781\\-80.25957\\-65\\-47.85156\\-80.59592\\-65\\-45.89844\\-80.82866\\-65\\-40.03906\\-81.82802\\-65\\-38.08594\\-82.10651\\-65\\-36.13281\\-82.48839\\-65\\-32.22656\\-83.80746\\-65\\-30.27344\\-84.30354\\-65\\-26.36719\\-85.98122\\-65\\-24.41406\\-86.67776\\-65\\-22.46094\\-87.74289\\-65\\-20.50781\\-88.61442\\-65\\-18.55469\\-89.95579\\-65\\-15.41516\\-92.83594\\-65\\-12.69531\\-95.43197\\-65\\-9.5628\\-98.69531\\-65\\-6.068638\\-102.6016\\-65\\-2.929688\\-105.8898\\-65\\-0.9765625\\-107.0576\\-65\\0.9765625\\-105.9368\\-65\\2.193622\\-104.5547\\-65\\7.704791\\-98.69531\\-65\\10.74219\\-95.60047\\-65\\13.60212\\-92.83594\\-65\\16.60156\\-90.04867\\-65\\18.55469\\-88.53092\\-65\\20.50781\\-87.40625\\-65\\24.41406\\-84.90625\\-65\\28.32031\\-82.67821\\-65\\32.22656\\-81.07545\\-65\\34.17969\\-80.39453\\-65\\36.13281\\-79.95431\\-65\\40.03906\\-78.7336\\-65\\45.89844\\-77.68546\\-65\\49.80469\\-77.15491\\-65\\53.71094\\-76.72607\\-65\\59.57031\\-76.52276\\-65\\63.47656\\-76.54037\\-65\\67.38281\\-76.66327\\-65\\69.33594\\-76.79642\\-65\\73.24219\\-77.32275\\-65\\75.19531\\-77.37856\\-65\\77.14844\\-77.60558\\-65\\79.10156\\-77.9816\\-65\\83.00781\\-78.43164\\-65\\86.91406\\-79.11188\\-65\\88.86719\\-79.6004\\-65\\94.72656\\-80.51968\\-65\\96.67969\\-80.96875\\-65\\98.63281\\-81.68574\\-65\\102.5391\\-82.5322\\-65\\104.4922\\-83.38421\\-65\\108.3984\\-84.69569\\-65\\110.3516\\-85.60287\\-65\\112.3047\\-86.28757\\-65\\114.2578\\-87.42997\\-65\\116.2109\\-88.06093\\-65\\120.1172\\-90.05183\\-65\\122.0703\\-91.36758\\-65\\124.0234\\-92.45501\\-65\\127.4884\\-94.78906\\-65\\129.8828\\-96.55958\\-65\\134.8208\\-100.6484\\-65\\137.6953\\-103.3975\\-65\\140.6767\\-106.5078\\-65\\142.4132\\-108.4609\\-65\\143.9807\\-110.4141\\-65\\145.3438\\-112.3672\\-65\\148.2706\\-116.2734\\-65\\150.4339\\-120.1797\\-65\\151.682\\-122.1328\\-65\\152.6633\\-124.0859\\-65\\153.8739\\-126.0391\\-65\\154.6862\\-127.9922\\-65\\155.7983\\-129.9453\\-65\\156.3525\\-131.8984\\-65\\158.0028\\-135.8047\\-65\\158.5535\\-137.7578\\-65\\159.518\\-139.7109\\-65\\160.5842\\-143.6172\\-65\\161.3235\\-145.5703\\-65\\161.8357\\-147.5234\\-65\\162.6107\\-153.3828\\-65\\163.5554\\-157.2891\\-65\\163.8075\\-159.2422\\-65\\164.304\\-165.1016\\-65\\164.681\\-169.0078\\-65\\164.9571\\-170.9609\\-65\\165.3752\\-174.8672\\-65\\165.6196\\-178.7734\\-65\\165.8014\\-186.5859\\-65\\165.8074\\-194.3984\\-65\\165.7424\\-200.2578\\-65\\165.7552\\-202.2109\\-65\\165.5963\\-208.0703\\-65\\165.3959\\-211.9766\\-65\\165.2385\\-213.9297\\-65\\164.668\\-217.8359\\-65\\163.7121\\-225.6484\\-65\\163.2425\\-227.6016\\-65\\162.5813\\-229.5547\\-65\\161.8546\\-233.4609\\-65\\161.1871\\-235.4141\\-65\\160.3527\\-237.3672\\-65\\159.7087\\-239.3203\\-65\\158.6225\\-241.2734\\-65\\157.8568\\-243.2266\\-65\\156.6862\\-245.1797\\-65\\156.0184\\-247.1328\\-65\\154.8479\\-249.0859\\-65\\153.8936\\-251.0391\\-65\\151.3672\\-254.7273\\-65\\150.0041\\-256.8984\\-65\\147.4609\\-260.308\\-65\\145.3369\\-262.7578\\-65\\142.0827\\-266.6641\\-65\\140.2358\\-268.6172\\-65\\138.142\\-270.5703\\-65\\135.7422\\-273.0723\\-65\\133.7891\\-274.8539\\-65\\131.8359\\-276.2925\\-65\\129.8828\\-277.8482\\-65\\127.9297\\-279.5891\\-65\\125.9766\\-281.1865\\-65\\124.0234\\-282.6072\\-65\\122.0703\\-283.8559\\-65\\118.1641\\-286.8191\\-65\\116.0048\\-288.1484\\-65\\112.5064\\-290.1016\\-65\\110.3516\\-291.2409\\-65\\108.3984\\-292.5309\\-65\\106.4453\\-293.3783\\-65\\104.4922\\-294.4928\\-65\\100.5859\\-295.8148\\-65\\98.63281\\-296.6833\\-65\\96.67969\\-297.1496\\-65\\92.77344\\-298.5633\\-65\\88.86719\\-299.3351\\-65\\84.96094\\-300.1992\\-65\\81.05469\\-300.6067\\-65\\77.14844\\-300.7534\\-65\\73.24219\\-300.7932\\-65\\67.38281\\-300.618\\-65\\63.47656\\-300.197\\-65\\55.66406\\-298.2523\\-65\\53.71094\\-297.3044\\-65\\51.75781\\-296.7501\\-65\\49.80469\\-295.7298\\-65\\47.85156\\-294.9417\\-65\\46.02944\\-294.0078\\-65\\43.94531\\-292.6956\\-65\\40.03906\\-289.9632\\-65\\38.08594\\-288.7478\\-65\\36.13281\\-287.2623\\-65\\32.22656\\-284.0534\\-65\\30.27344\\-282.6297\\-65\\28.32031\\-281.0566\\-65\\24.41406\\-277.3452\\-65\\22.46094\\-275.5609\\-65\\20.50781\\-273.9152\\-65\\18.55469\\-272.4774\\-65\\16.60156\\-271.6349\\-65\\14.64844\\-271.1817\\-65\\12.69531\\-270.8897\\-65\\8.789063\\-270.8051\\-65\\4.882813\\-270.8239\\-65\\-2.929688\\-271.0764\\-65\\-4.882813\\-271.4879\\-65\\-6.835938\\-271.6732\\-65\\-8.789063\\-271.7574\\-65\\-10.74219\\-270.7534\\-65\\-14.64844\\-272.0941\\-65\\-16.60156\\-272.7033\\-65\\-18.55469\\-273.6277\\-65\\-21.93377\\-276.4297\\-65\\-24.37233\\-278.3828\\-65\\-26.69271\\-280.3359\\-65\\-28.32031\\-281.4985\\-65\\-31.79721\\-284.2422\\-65\\-34.17969\\-286.2182\\-65\\-36.13281\\-287.6534\\-65\\-39.21022\\-290.1016\\-65\\-42.05668\\-292.0547\\-65\\-45.20089\\-294.0078\\-65\\-45.89844\\-294.5095\\-65\\-47.85156\\-295.2378\\-65\\-49.80469\\-296.2888\\-65\\-53.71094\\-297.6682\\-65\\-55.66406\\-298.5457\\-65\\-59.57031\\-299.5461\\-65\\-61.52344\\-300.1621\\-65\\-63.47656\\-300.4624\\-65\\-67.38281\\-300.8045\\-65\\-71.28906\\-300.9542\\-65\\-75.19531\\-300.9709\\-65\\-81.05469\\-300.6987\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "316"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "94"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.96094\\-300.0666\\-63\\-86.91406\\-299.5138\\-63\\-90.82031\\-298.6759\\-63\\-92.77344\\-298.1011\\-63\\-94.72656\\-297.2649\\-63\\-96.67969\\-296.7802\\-63\\-98.63281\\-296.0313\\-63\\-100.5859\\-295.1664\\-63\\-102.5391\\-294.5317\\-63\\-104.4922\\-293.343\\-63\\-106.4453\\-292.3889\\-63\\-110.3516\\-289.8786\\-63\\-112.3047\\-288.8904\\-63\\-114.2578\\-287.5509\\-63\\-116.2109\\-286.3369\\-63\\-120.1172\\-283.2713\\-63\\-121.5863\\-282.2891\\-63\\-124.0234\\-280.378\\-63\\-128.4888\\-276.4297\\-63\\-131.8359\\-273.2228\\-63\\-133.7891\\-271.1492\\-63\\-134.4467\\-270.5703\\-63\\-136.234\\-268.6172\\-63\\-139.3828\\-264.7109\\-63\\-141.6016\\-262.065\\-63\\-144.0264\\-258.8516\\-63\\-145.5078\\-256.6522\\-63\\-148.1995\\-252.9922\\-63\\-149.2188\\-251.0391\\-63\\-150.4087\\-249.0859\\-63\\-151.7137\\-247.1328\\-63\\-152.7077\\-245.1797\\-63\\-153.9815\\-243.2266\\-63\\-154.7953\\-241.2734\\-63\\-155.9181\\-239.3203\\-63\\-156.5442\\-237.3672\\-63\\-157.6425\\-235.4141\\-63\\-158.3168\\-233.4609\\-63\\-159.3667\\-231.5078\\-63\\-160.8412\\-227.6016\\-63\\-161.7188\\-225.6484\\-63\\-162.5398\\-221.7422\\-63\\-163.3085\\-219.7891\\-63\\-163.8359\\-217.8359\\-63\\-164.5917\\-213.9297\\-63\\-165.3209\\-211.9766\\-63\\-165.7263\\-210.0234\\-63\\-166.3355\\-206.1172\\-63\\-167.1419\\-202.2109\\-63\\-167.4338\\-200.2578\\-63\\-167.8711\\-194.3984\\-63\\-168.0923\\-188.5391\\-63\\-168.1176\\-184.6328\\-63\\-168.0634\\-178.7734\\-63\\-167.963\\-174.8672\\-63\\-167.7677\\-170.9609\\-63\\-167.4651\\-167.0547\\-63\\-167.2312\\-165.1016\\-63\\-166.5009\\-161.1953\\-63\\-165.6164\\-155.3359\\-63\\-165.1338\\-153.3828\\-63\\-164.4886\\-151.4297\\-63\\-163.7464\\-147.5234\\-63\\-162.4122\\-143.6172\\-63\\-162.0495\\-141.6641\\-63\\-161.5357\\-139.7109\\-63\\-160.5668\\-137.7578\\-63\\-159.8973\\-135.8047\\-63\\-158.8565\\-133.8516\\-63\\-158.0174\\-131.8984\\-63\\-156.9569\\-129.9453\\-63\\-156.153\\-127.9922\\-63\\-154.2033\\-124.0859\\-63\\-153.0116\\-122.1328\\-63\\-151.9279\\-120.1797\\-63\\-150.5395\\-118.2266\\-63\\-149.4861\\-116.2734\\-63\\-148.3008\\-114.3203\\-63\\-146.9523\\-112.3672\\-63\\-145.7087\\-110.4141\\-63\\-143.5547\\-107.5724\\-63\\-142.6527\\-106.5078\\-63\\-139.6484\\-103.2251\\-63\\-137.6953\\-101.3217\\-63\\-134.8522\\-98.69531\\-63\\-131.8359\\-96.23975\\-63\\-129.7862\\-94.78906\\-63\\-127.9297\\-93.57363\\-63\\-125.9766\\-92.404\\-63\\-124.0234\\-91.41235\\-63\\-122.0703\\-90.25055\\-63\\-120.1172\\-89.38093\\-63\\-118.1641\\-88.2583\\-63\\-116.2109\\-87.55395\\-63\\-114.2578\\-86.53744\\-63\\-112.3047\\-85.83724\\-63\\-110.3516\\-84.86185\\-63\\-108.3984\\-84.38604\\-63\\-104.47\\-83.07031\\-63\\-102.5391\\-82.47618\\-63\\-98.63281\\-81.65294\\-63\\-96.67969\\-80.95045\\-63\\-94.72656\\-80.60215\\-63\\-90.82031\\-80.2431\\-63\\-88.86719\\-79.98\\-63\\-86.91406\\-79.81726\\-63\\-84.96094\\-79.4548\\-63\\-81.05469\\-78.91658\\-63\\-75.19531\\-78.53583\\-63\\-69.33594\\-78.50252\\-63\\-67.38281\\-78.53627\\-63\\-65.42969\\-78.72937\\-63\\-61.52344\\-78.90498\\-63\\-57.61719\\-79.17263\\-63\\-53.71094\\-79.6899\\-63\\-49.80469\\-80.06322\\-63\\-43.94531\\-80.5732\\-63\\-41.99219\\-80.82866\\-63\\-38.08594\\-81.72173\\-63\\-34.17969\\-82.42578\\-63\\-28.32031\\-84.39918\\-63\\-26.36719\\-85.31868\\-63\\-24.41406\\-86.05708\\-63\\-20.50781\\-87.93927\\-63\\-18.97322\\-88.92969\\-63\\-16.60156\\-90.68893\\-63\\-10.74219\\-96.25787\\-63\\-8.3903\\-98.69531\\-63\\-5.023663\\-102.6016\\-63\\-2.929688\\-104.7666\\-63\\-0.9765625\\-105.7594\\-63\\0.9765625\\-104.8145\\-63\\2.929688\\-102.717\\-63\\4.947917\\-100.6484\\-63\\8.486794\\-96.74219\\-63\\14.64844\\-90.82285\\-63\\16.60156\\-89.22723\\-63\\20.50781\\-86.47371\\-63\\22.46094\\-85.43344\\-63\\24.41406\\-84.17224\\-63\\26.36719\\-83.02822\\-63\\28.32031\\-82.12674\\-63\\30.27344\\-81.37094\\-63\\32.22656\\-80.46838\\-63\\36.13281\\-79.36095\\-63\\38.08594\\-78.69756\\-63\\43.94531\\-77.45694\\-63\\47.85156\\-76.81048\\-63\\49.80469\\-76.61262\\-63\\53.71094\\-76.3295\\-63\\57.61719\\-76.17655\\-63\\61.52344\\-76.14502\\-63\\69.33594\\-76.40854\\-63\\73.24219\\-76.76884\\-63\\77.14844\\-77.06821\\-63\\79.10156\\-77.52261\\-63\\81.05469\\-77.83184\\-63\\86.91406\\-78.59226\\-63\\90.82031\\-79.53912\\-63\\94.72656\\-80.15323\\-63\\96.67969\\-80.55078\\-63\\100.5859\\-81.82913\\-63\\102.5391\\-82.19751\\-63\\104.4922\\-82.80067\\-63\\106.4453\\-83.67542\\-63\\108.3984\\-84.26389\\-63\\110.3516\\-85.07993\\-63\\114.2578\\-86.90625\\-63\\118.1641\\-88.55801\\-63\\122.0703\\-90.79618\\-63\\125.9766\\-93.48019\\-63\\127.9297\\-94.61673\\-63\\129.8828\\-96.17311\\-63\\130.4731\\-96.74219\\-63\\135.2043\\-100.6484\\-63\\137.6953\\-103.0529\\-63\\140.9437\\-106.5078\\-63\\143.5547\\-109.6056\\-63\\147.4609\\-114.9683\\-63\\148.3392\\-116.2734\\-63\\150.4643\\-120.1797\\-63\\151.724\\-122.1328\\-63\\152.6832\\-124.0859\\-63\\153.8792\\-126.0391\\-63\\154.6419\\-127.9922\\-63\\155.7617\\-129.9453\\-63\\156.2979\\-131.8984\\-63\\156.9955\\-133.8516\\-63\\157.9102\\-135.8047\\-63\\158.4432\\-137.7578\\-63\\159.3283\\-139.7109\\-63\\159.9682\\-141.6641\\-63\\160.4458\\-143.6172\\-63\\161.7084\\-147.5234\\-63\\162.0147\\-149.4766\\-63\\162.474\\-153.3828\\-63\\162.8203\\-155.3359\\-63\\163.3459\\-157.2891\\-63\\163.66\\-159.2422\\-63\\163.8703\\-161.1953\\-63\\164.4752\\-169.0078\\-63\\165.0766\\-174.8672\\-63\\165.4358\\-178.7734\\-63\\165.6042\\-184.6328\\-63\\165.6567\\-192.4453\\-63\\165.5692\\-200.2578\\-63\\165.5853\\-202.2109\\-63\\165.3752\\-208.0703\\-63\\165.1057\\-211.9766\\-63\\164.6369\\-215.8828\\-63\\163.8318\\-223.6953\\-63\\163.5063\\-225.6484\\-63\\162.9132\\-227.6016\\-63\\162.4204\\-229.5547\\-63\\162.1094\\-231.5078\\-63\\161.681\\-233.4609\\-63\\160.8508\\-235.4141\\-63\\159.4766\\-239.3203\\-63\\158.3822\\-241.2734\\-63\\157.6504\\-243.2266\\-63\\156.488\\-245.1797\\-63\\155.8152\\-247.1328\\-63\\154.6032\\-249.0859\\-63\\153.6365\\-251.0391\\-63\\151.3672\\-254.34\\-63\\150.855\\-254.9453\\-63\\149.7566\\-256.8984\\-63\\148.3745\\-258.8516\\-63\\146.7859\\-260.8047\\-63\\143.2989\\-264.7109\\-63\\141.7984\\-266.6641\\-63\\139.6484\\-268.873\\-63\\137.7887\\-270.5703\\-63\\135.7422\\-272.7482\\-63\\133.7891\\-274.4847\\-63\\131.8359\\-275.9414\\-63\\129.0283\\-278.3828\\-63\\125.9766\\-280.9455\\-63\\122.0703\\-283.5712\\-63\\121.2749\\-284.2422\\-63\\118.5092\\-286.1953\\-63\\118.1641\\-286.5255\\-63\\116.2109\\-287.6567\\-63\\114.2578\\-288.9384\\-63\\112.3047\\-289.8152\\-63\\111.9385\\-290.1016\\-63\\108.5612\\-292.0547\\-63\\104.7727\\-294.0078\\-63\\102.5391\\-294.9364\\-63\\100.5859\\-295.476\\-63\\98.63281\\-296.433\\-63\\94.72656\\-297.4609\\-63\\92.77344\\-298.2834\\-63\\90.82031\\-298.7329\\-63\\86.91406\\-299.438\\-63\\83.00781\\-300.2182\\-63\\79.10156\\-300.5615\\-63\\73.24219\\-300.654\\-63\\67.38281\\-300.4855\\-63\\65.42969\\-300.2937\\-63\\63.47656\\-299.9893\\-63\\61.52344\\-299.4703\\-63\\57.61719\\-298.6361\\-63\\55.66406\\-297.9807\\-63\\53.71094\\-297.1607\\-63\\51.75781\\-296.6179\\-63\\49.80469\\-295.5662\\-63\\47.85156\\-294.837\\-63\\43.94531\\-292.6799\\-63\\41.99219\\-291.2344\\-63\\40.03906\\-289.9031\\-63\\38.08594\\-288.7478\\-63\\34.65586\\-286.1953\\-63\\32.16019\\-284.2422\\-63\\30.27344\\-282.8736\\-63\\27.16261\\-280.3359\\-63\\24.41406\\-277.7813\\-63\\22.46094\\-276.1795\\-63\\20.50781\\-274.9114\\-63\\18.55469\\-273.8017\\-63\\16.60156\\-273.1719\\-63\\14.64844\\-272.8218\\-63\\10.74219\\-272.5918\\-63\\4.882813\\-272.6671\\-63\\-0.9765625\\-272.8828\\-63\\-2.929688\\-272.9897\\-63\\-6.835938\\-273.3799\\-63\\-8.789063\\-273.4916\\-63\\-10.74219\\-273.2452\\-63\\-12.69531\\-273.4332\\-63\\-14.64844\\-273.8122\\-63\\-16.60156\\-274.0203\\-63\\-18.55469\\-274.7752\\-63\\-20.50781\\-275.8468\\-63\\-22.46094\\-277.3326\\-63\\-26.36719\\-280.5897\\-63\\-28.32031\\-281.8223\\-63\\-30.27344\\-283.2408\\-63\\-34.17969\\-286.3762\\-63\\-36.13281\\-287.6534\\-63\\-40.03906\\-290.5745\\-63\\-41.99219\\-291.7807\\-63\\-45.89844\\-294.3661\\-63\\-47.85156\\-295.1441\\-63\\-49.80469\\-296.0906\\-63\\-51.75781\\-296.872\\-63\\-53.71094\\-297.4836\\-63\\-55.66406\\-297.7172\\-63\\-57.61719\\-298.8857\\-63\\-59.57031\\-299.3699\\-63\\-61.52344\\-299.9619\\-63\\-63.47656\\-300.3525\\-63\\-67.38281\\-300.705\\-63\\-73.24219\\-300.884\\-63\\-77.14844\\-300.8157\\-63\\-81.05469\\-300.5954\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "300"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "95"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-83.00781\\-300.2389\\-61\\-84.86643\\-299.8672\\-61\\-86.91406\\-299.3436\\-61\\-90.82031\\-298.5453\\-61\\-94.72656\\-297.1274\\-61\\-96.67969\\-296.6593\\-61\\-98.63281\\-295.7581\\-61\\-102.5391\\-294.3472\\-61\\-103.0273\\-294.0078\\-61\\-106.4453\\-292.0928\\-61\\-109.7621\\-290.1016\\-61\\-110.3516\\-289.6342\\-61\\-112.3047\\-288.7131\\-61\\-116.0049\\-286.1953\\-61\\-118.5918\\-284.2422\\-61\\-121.3359\\-282.2891\\-61\\-123.7382\\-280.3359\\-61\\-127.9297\\-276.7623\\-61\\-129.8828\\-274.9794\\-61\\-133.7891\\-271.0131\\-61\\-134.3056\\-270.5703\\-61\\-136.1103\\-268.6172\\-61\\-139.2182\\-264.7109\\-61\\-140.9354\\-262.7578\\-61\\-142.483\\-260.8047\\-61\\-143.9244\\-258.8516\\-61\\-145.156\\-256.8984\\-61\\-145.5078\\-256.4997\\-61\\-148.1223\\-252.9922\\-61\\-149.1084\\-251.0391\\-61\\-151.5416\\-247.1328\\-61\\-152.5894\\-245.1797\\-61\\-153.8775\\-243.2266\\-61\\-154.6849\\-241.2734\\-61\\-155.8079\\-239.3203\\-61\\-156.4392\\-237.3672\\-61\\-157.4504\\-235.4141\\-61\\-158.193\\-233.4609\\-61\\-159.9792\\-229.5547\\-61\\-160.6384\\-227.6016\\-61\\-161.5408\\-225.6484\\-61\\-162.0495\\-223.6953\\-61\\-162.4084\\-221.7422\\-61\\-163.6927\\-217.8359\\-61\\-164.3975\\-213.9297\\-61\\-165.5557\\-210.0234\\-61\\-166.459\\-204.1641\\-61\\-167.2054\\-200.2578\\-61\\-167.6018\\-196.3516\\-61\\-167.7332\\-194.3984\\-61\\-167.8932\\-190.4922\\-61\\-167.9919\\-186.5859\\-61\\-167.9862\\-182.6797\\-61\\-167.8671\\-174.8672\\-61\\-167.6647\\-170.9609\\-61\\-167.3242\\-167.0547\\-61\\-167.0444\\-165.1016\\-61\\-166.358\\-161.1953\\-61\\-165.8193\\-157.2891\\-61\\-165.501\\-155.3359\\-61\\-164.3527\\-151.4297\\-61\\-163.6345\\-147.5234\\-61\\-162.8831\\-145.5703\\-61\\-162.3305\\-143.6172\\-61\\-161.9517\\-141.6641\\-61\\-161.3311\\-139.7109\\-61\\-160.4105\\-137.7578\\-61\\-159.7418\\-135.8047\\-61\\-158.6331\\-133.8516\\-61\\-157.8605\\-131.8984\\-61\\-156.7416\\-129.9453\\-61\\-156.0309\\-127.9922\\-61\\-154.9553\\-126.0391\\-61\\-154.0838\\-124.0859\\-61\\-152.8156\\-122.1328\\-61\\-151.7932\\-120.1797\\-61\\-150.4498\\-118.2266\\-61\\-149.4141\\-116.2845\\-61\\-148.2671\\-114.3203\\-61\\-145.7452\\-110.4141\\-61\\-144.3374\\-108.4609\\-61\\-142.6974\\-106.5078\\-61\\-139.6484\\-103.0975\\-61\\-135.125\\-98.69531\\-61\\-131.8359\\-95.918\\-61\\-129.8828\\-94.48917\\-61\\-127.318\\-92.83594\\-61\\-125.9766\\-92.14236\\-61\\-123.894\\-90.88281\\-61\\-120.1172\\-88.87225\\-61\\-116.2109\\-87.20869\\-61\\-112.3047\\-85.34121\\-61\\-110.3516\\-84.57719\\-61\\-108.3984\\-84.08907\\-61\\-106.4453\\-83.4103\\-61\\-104.4922\\-82.55984\\-61\\-102.5391\\-82.15929\\-61\\-100.5859\\-81.89717\\-61\\-96.67969\\-80.667\\-61\\-88.86719\\-79.64537\\-61\\-86.91406\\-79.49201\\-61\\-84.96094\\-79.04199\\-61\\-83.00781\\-78.75716\\-61\\-81.05469\\-78.62666\\-61\\-77.14844\\-78.26587\\-61\\-75.19531\\-78.13774\\-61\\-67.38281\\-78.12283\\-61\\-65.42969\\-78.31771\\-61\\-61.52344\\-78.44966\\-61\\-59.57031\\-78.65747\\-61\\-57.61719\\-78.7336\\-61\\-53.71094\\-79.11188\\-61\\-49.80469\\-79.69495\\-61\\-41.99219\\-80.42675\\-61\\-40.03906\\-80.67017\\-61\\-38.08594\\-81.07616\\-61\\-36.13281\\-81.58052\\-61\\-32.22656\\-82.41276\\-61\\-26.36719\\-84.52213\\-61\\-22.46094\\-86.3195\\-61\\-18.55469\\-88.40442\\-61\\-15.55525\\-90.88281\\-61\\-9.40625\\-96.74219\\-61\\-7.564603\\-98.69531\\-61\\-4.024833\\-102.6016\\-61\\-2.929688\\-103.6889\\-61\\-0.9765625\\-104.6506\\-61\\0.9765625\\-103.7103\\-61\\4.882813\\-99.80157\\-61\\8.789063\\-95.63985\\-61\\12.69531\\-91.90891\\-61\\14.64844\\-89.97858\\-61\\16.60156\\-88.34375\\-61\\18.55469\\-87.17019\\-61\\22.46094\\-84.50764\\-61\\24.41406\\-83.51157\\-61\\26.36719\\-82.3718\\-61\\28.32031\\-81.63754\\-61\\30.27344\\-80.667\\-61\\32.22656\\-80.06403\\-61\\36.13281\\-78.70708\\-61\\38.08594\\-78.21727\\-61\\43.94531\\-76.911\\-61\\45.89844\\-76.57583\\-61\\47.85156\\-76.37294\\-61\\53.71094\\-76.04777\\-61\\57.61719\\-75.91524\\-61\\61.52344\\-75.92764\\-61\\69.33594\\-76.18645\\-61\\77.14844\\-76.67057\\-61\\79.10156\\-76.95284\\-61\\81.05469\\-77.43031\\-61\\83.00781\\-77.74866\\-61\\86.91406\\-78.15018\\-61\\90.82031\\-79.09748\\-61\\94.72656\\-79.79041\\-61\\98.63281\\-80.75365\\-61\\100.5859\\-81.46904\\-61\\104.4922\\-82.40877\\-61\\106.4453\\-83.24982\\-61\\110.3516\\-84.62363\\-61\\112.3047\\-85.72534\\-61\\114.2578\\-86.49786\\-61\\116.2109\\-87.48577\\-61\\118.1641\\-88.20218\\-61\\120.1172\\-89.43134\\-61\\122.0703\\-90.37721\\-61\\124.0234\\-91.87151\\-61\\127.9297\\-94.28296\\-61\\135.5202\\-100.6484\\-61\\137.6953\\-102.7536\\-61\\139.6484\\-104.7781\\-61\\141.6016\\-106.9961\\-61\\143.5547\\-109.3815\\-61\\145.5078\\-112.0787\\-61\\145.792\\-112.3672\\-61\\148.3704\\-116.2734\\-61\\150.4578\\-120.1797\\-61\\151.7033\\-122.1328\\-61\\152.6402\\-124.0859\\-61\\153.8399\\-126.0391\\-61\\154.5741\\-127.9922\\-61\\155.6343\\-129.9453\\-61\\156.8071\\-133.8516\\-61\\157.7807\\-135.8047\\-61\\158.3065\\-137.7578\\-61\\159.8252\\-141.6641\\-61\\160.8329\\-145.5703\\-61\\161.5111\\-147.5234\\-61\\161.8937\\-149.4766\\-61\\162.6174\\-155.3359\\-61\\163.4513\\-159.2422\\-61\\163.75\\-161.1953\\-61\\164.7454\\-174.8672\\-61\\165.1611\\-178.7734\\-61\\165.343\\-182.6797\\-61\\165.4358\\-186.5859\\-61\\165.455\\-192.4453\\-61\\165.3959\\-198.3047\\-61\\165.2865\\-204.1641\\-61\\165.0618\\-208.0703\\-61\\164.7571\\-211.9766\\-61\\163.9075\\-221.7422\\-61\\163.6684\\-223.6953\\-61\\163.2276\\-225.6484\\-61\\162.6306\\-227.6016\\-61\\161.9724\\-231.5078\\-61\\161.4538\\-233.4609\\-61\\160.6018\\-235.4141\\-61\\159.9917\\-237.3672\\-61\\158.1877\\-241.2734\\-61\\157.362\\-243.2266\\-61\\156.3404\\-245.1797\\-61\\155.5598\\-247.1328\\-61\\153.3203\\-250.9435\\-61\\152.0569\\-252.9922\\-61\\150.6174\\-254.9453\\-61\\148.1612\\-258.8516\\-61\\146.5414\\-260.8047\\-61\\142.9976\\-264.7109\\-61\\141.3687\\-266.6641\\-61\\139.6484\\-268.4112\\-61\\137.3465\\-270.5703\\-61\\135.4731\\-272.5234\\-61\\133.7891\\-274.096\\-61\\129.8828\\-277.3389\\-61\\128.7273\\-278.3828\\-61\\125.9766\\-280.6402\\-61\\124.0234\\-281.9117\\-61\\120.8577\\-284.2422\\-61\\118.0176\\-286.1953\\-61\\114.2578\\-288.7036\\-61\\112.3047\\-289.513\\-61\\110.3516\\-290.7966\\-61\\108.3984\\-291.7136\\-61\\106.4453\\-292.891\\-61\\102.5391\\-294.7341\\-61\\100.5859\\-295.2513\\-61\\98.63281\\-296.0763\\-61\\96.67969\\-296.7433\\-61\\94.72656\\-297.1872\\-61\\90.82031\\-298.4967\\-61\\84.96094\\-299.4881\\-61\\83.00781\\-299.9048\\-61\\81.05469\\-300.197\\-61\\79.10156\\-300.3853\\-61\\75.19531\\-300.497\\-61\\69.33594\\-300.4227\\-61\\67.38281\\-300.325\\-61\\65.42969\\-300.0804\\-61\\57.61719\\-298.4697\\-61\\55.66406\\-297.6699\\-61\\51.75781\\-296.4619\\-61\\49.80469\\-295.4133\\-61\\47.85156\\-294.7557\\-61\\45.89844\\-293.6348\\-61\\43.94531\\-292.6188\\-61\\41.99219\\-291.1872\\-61\\40.03906\\-289.875\\-61\\38.08594\\-288.7705\\-61\\34.45242\\-286.1953\\-61\\30.27344\\-283.0869\\-61\\28.32031\\-281.56\\-61\\26.6183\\-280.3359\\-61\\24.33559\\-278.3828\\-61\\22.46094\\-276.9737\\-61\\20.50781\\-275.7175\\-61\\18.55469\\-275.04\\-61\\16.60156\\-274.4854\\-61\\10.74219\\-274.2526\\-61\\8.789063\\-274.2526\\-61\\4.882813\\-274.3733\\-61\\0.9765625\\-274.5952\\-61\\-4.882813\\-274.8417\\-61\\-8.789063\\-275.0403\\-61\\-12.69531\\-275.0938\\-61\\-16.60156\\-275.3705\\-61\\-18.55469\\-275.7028\\-61\\-20.50781\\-276.7576\\-61\\-22.46094\\-277.9383\\-61\\-26.36719\\-280.9892\\-61\\-28.32031\\-282.2975\\-61\\-30.27344\\-283.4749\\-61\\-34.17969\\-286.5766\\-61\\-36.13281\\-287.748\\-61\\-40.03906\\-290.4733\\-61\\-41.99219\\-291.6315\\-61\\-43.94531\\-293.0146\\-61\\-45.89844\\-294.224\\-61\\-49.80469\\-295.8586\\-61\\-51.75781\\-296.7766\\-61\\-53.71094\\-297.183\\-61\\-55.66406\\-297.0258\\-61\\-57.61719\\-298.763\\-61\\-63.47656\\-300.2077\\-61\\-67.38281\\-300.6024\\-61\\-71.28906\\-300.7656\\-61\\-73.24219\\-300.7879\\-61\\-77.14844\\-300.7161\\-61\\-81.05469\\-300.4818\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "304"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "96"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-83.00781\\-300.0789\\-59\\-86.91406\\-299.1852\\-59\\-90.82031\\-298.3877\\-59\\-92.77344\\-297.584\\-59\\-96.67969\\-296.4987\\-59\\-98.63281\\-295.5307\\-59\\-100.5859\\-294.9252\\-59\\-102.5391\\-294.107\\-59\\-104.4922\\-293.0092\\-59\\-106.4453\\-291.7516\\-59\\-108.3984\\-290.7471\\-59\\-110.3516\\-289.4396\\-59\\-112.3047\\-288.5146\\-59\\-114.2578\\-287.2013\\-59\\-118.2838\\-284.2422\\-59\\-120.1172\\-283.0276\\-59\\-123.4551\\-280.3359\\-59\\-125.9766\\-278.107\\-59\\-127.9297\\-276.5758\\-59\\-129.8828\\-274.8125\\-59\\-135.9724\\-268.6172\\-59\\-137.4688\\-266.6641\\-59\\-139.082\\-264.7109\\-59\\-140.8266\\-262.7578\\-59\\-142.397\\-260.8047\\-59\\-143.7988\\-258.8516\\-59\\-145.0263\\-256.8984\\-59\\-146.5869\\-254.9453\\-59\\-148.038\\-252.9922\\-59\\-149.0107\\-251.0391\\-59\\-150.252\\-249.0859\\-59\\-152.4728\\-245.1797\\-59\\-153.7463\\-243.2266\\-59\\-154.5671\\-241.2734\\-59\\-155.6821\\-239.3203\\-59\\-156.3393\\-237.3672\\-59\\-158.0571\\-233.4609\\-59\\-158.8477\\-231.5078\\-59\\-159.8435\\-229.5547\\-59\\-160.4572\\-227.6016\\-59\\-161.315\\-225.6484\\-59\\-161.908\\-223.6953\\-59\\-162.7441\\-219.7891\\-59\\-163.5164\\-217.8359\\-59\\-163.9223\\-215.8828\\-59\\-164.227\\-213.9297\\-59\\-164.6575\\-211.9766\\-59\\-165.2982\\-210.0234\\-59\\-165.6988\\-208.0703\\-59\\-166.5381\\-202.2109\\-59\\-167.1805\\-198.3047\\-59\\-167.4143\\-196.3516\\-59\\-167.6914\\-192.4453\\-59\\-167.8545\\-186.5859\\-59\\-167.8532\\-180.7266\\-59\\-167.7587\\-174.8672\\-59\\-167.5408\\-170.9609\\-59\\-167.1408\\-167.0547\\-59\\-166.4949\\-163.1484\\-59\\-165.7092\\-157.2891\\-59\\-165.3209\\-155.3359\\-59\\-164.6655\\-153.3828\\-59\\-164.227\\-151.4297\\-59\\-163.4753\\-147.5234\\-59\\-162.6802\\-145.5703\\-59\\-161.8312\\-141.6641\\-59\\-160.2435\\-137.7578\\-59\\-159.5262\\-135.8047\\-59\\-158.4152\\-133.8516\\-59\\-157.6585\\-131.8984\\-59\\-156.5369\\-129.9453\\-59\\-155.8961\\-127.9922\\-59\\-154.7513\\-126.0391\\-59\\-153.9208\\-124.0859\\-59\\-152.6228\\-122.1328\\-59\\-151.5957\\-120.1797\\-59\\-150.3667\\-118.2266\\-59\\-149.4141\\-116.4211\\-59\\-148.1966\\-114.3203\\-59\\-145.5744\\-110.4141\\-59\\-143.5547\\-107.59\\-59\\-141.0251\\-104.5547\\-59\\-139.6484\\-102.9937\\-59\\-135.309\\-98.69531\\-59\\-131.8359\\-95.66866\\-59\\-129.8828\\-94.17699\\-59\\-127.7917\\-92.83594\\-59\\-125.9766\\-91.82386\\-59\\-124.0234\\-90.58841\\-59\\-122.0703\\-89.67162\\-59\\-120.1172\\-88.4131\\-59\\-118.1641\\-87.77204\\-59\\-116.2109\\-86.80379\\-59\\-114.2578\\-85.95443\\-59\\-112.3047\\-85.00072\\-59\\-108.3984\\-83.82493\\-59\\-106.4453\\-82.91823\\-59\\-104.4922\\-82.17686\\-59\\-100.5859\\-81.60893\\-59\\-98.63281\\-80.90957\\-59\\-96.67969\\-80.45988\\-59\\-90.82031\\-79.52657\\-59\\-86.91406\\-79.06932\\-59\\-83.00781\\-78.37671\\-59\\-81.05469\\-78.30587\\-59\\-77.14844\\-77.96167\\-59\\-75.19531\\-77.8556\\-59\\-67.38281\\-77.7889\\-59\\-61.52344\\-77.90647\\-59\\-59.57031\\-78.10778\\-59\\-57.61719\\-78.16657\\-59\\-55.66406\\-78.45877\\-59\\-53.71094\\-78.61047\\-59\\-47.85156\\-79.48959\\-59\\-43.94531\\-79.91952\\-59\\-38.08594\\-80.51083\\-59\\-36.13281\\-80.88068\\-59\\-34.17969\\-81.50344\\-59\\-30.27344\\-82.44347\\-59\\-24.41406\\-84.67918\\-59\\-22.46094\\-85.81846\\-59\\-20.50781\\-86.61946\\-59\\-18.55469\\-87.84997\\-59\\-16.60156\\-89.23683\\-59\\-12.69531\\-92.79491\\-59\\-10.74219\\-94.48795\\-59\\-8.393787\\-96.74219\\-59\\-6.835938\\-98.46402\\-59\\-2.929688\\-102.628\\-59\\-0.9765625\\-103.6313\\-59\\0.9765625\\-102.812\\-59\\3.288595\\-100.6484\\-59\\5.229856\\-98.69531\\-59\\8.789063\\-94.79819\\-59\\10.74219\\-92.9987\\-59\\15.04836\\-88.92969\\-59\\18.55469\\-86.42154\\-59\\22.46094\\-83.89304\\-59\\24.41406\\-82.7374\\-59\\26.36719\\-81.91315\\-59\\28.32031\\-80.95181\\-59\\32.22656\\-79.63478\\-59\\34.17969\\-78.78017\\-59\\36.13281\\-78.22389\\-59\\41.99219\\-76.84052\\-59\\45.89844\\-76.2599\\-59\\47.85156\\-76.12096\\-59\\53.71094\\-75.8112\\-59\\55.66406\\-75.60709\\-59\\61.52344\\-75.62751\\-59\\63.47656\\-75.77822\\-59\\67.38281\\-75.89443\\-59\\71.28906\\-76.09058\\-59\\79.10156\\-76.5368\\-59\\83.00781\\-77.37609\\-59\\84.96094\\-77.69614\\-59\\86.91406\\-77.88794\\-59\\88.86719\\-78.27367\\-59\\96.67969\\-79.92287\\-59\\100.5859\\-80.98331\\-59\\102.5391\\-81.72754\\-59\\104.4922\\-82.15925\\-59\\106.4453\\-82.77037\\-59\\108.3984\\-83.66608\\-59\\110.3516\\-84.32674\\-59\\112.3047\\-85.44774\\-59\\114.2578\\-86.23279\\-59\\116.2109\\-87.17188\\-59\\118.1641\\-87.99093\\-59\\122.0703\\-90.10786\\-59\\124.0234\\-91.5405\\-59\\127.9297\\-94.06984\\-59\\129.8828\\-95.52676\\-59\\135.7422\\-100.5574\\-59\\137.6953\\-102.4144\\-59\\139.7638\\-104.5547\\-59\\141.6016\\-106.7403\\-59\\143.5547\\-109.2115\\-59\\145.5078\\-111.9751\\-59\\145.8775\\-112.3672\\-59\\148.3647\\-116.2734\\-59\\150.4333\\-120.1797\\-59\\151.6377\\-122.1328\\-59\\152.5558\\-124.0859\\-59\\153.7332\\-126.0391\\-59\\154.4717\\-127.9922\\-59\\155.4195\\-129.9453\\-59\\156.1355\\-131.8984\\-59\\156.6291\\-133.8516\\-59\\157.5936\\-135.8047\\-59\\158.7722\\-139.7109\\-59\\159.6467\\-141.6641\\-59\\160.6041\\-145.5703\\-59\\161.2312\\-147.5234\\-59\\161.7323\\-149.4766\\-59\\162.0211\\-151.4297\\-59\\162.4493\\-155.3359\\-59\\162.7557\\-157.2891\\-59\\163.5649\\-161.1953\\-59\\163.9135\\-165.1016\\-59\\165.0467\\-182.6797\\-59\\165.2135\\-188.5391\\-59\\165.1338\\-196.3516\\-59\\165.0154\\-202.2109\\-59\\164.736\\-208.0703\\-59\\164.0929\\-217.8359\\-59\\163.75\\-221.7422\\-59\\163.4294\\-223.6953\\-59\\162.8583\\-225.6484\\-59\\162.4288\\-227.6016\\-59\\161.8103\\-231.5078\\-59\\160.3795\\-235.4141\\-59\\159.7872\\-237.3672\\-59\\158.7352\\-239.3203\\-59\\157.9964\\-241.2734\\-59\\156.9528\\-243.2266\\-59\\156.1707\\-245.1797\\-59\\154.1877\\-249.0859\\-59\\152.8841\\-251.0391\\-59\\151.7979\\-252.9922\\-59\\149.0734\\-256.8984\\-59\\147.8696\\-258.8516\\-59\\146.2751\\-260.8047\\-59\\141.0156\\-266.6641\\-59\\133.7891\\-273.7705\\-59\\131.8359\\-275.4664\\-59\\127.9297\\-278.7128\\-59\\125.8343\\-280.3359\\-59\\120.1172\\-284.4292\\-59\\118.1641\\-285.6749\\-59\\116.2109\\-287.0991\\-59\\114.2578\\-288.368\\-59\\112.3047\\-289.2847\\-59\\110.3516\\-290.5063\\-59\\108.3984\\-291.3711\\-59\\106.4453\\-292.6185\\-59\\104.4922\\-293.4352\\-59\\102.5391\\-294.4863\\-59\\98.63281\\-295.6378\\-59\\96.67969\\-296.511\\-59\\92.77344\\-297.4351\\-59\\90.82031\\-298.1378\\-59\\88.86719\\-298.6086\\-59\\84.96094\\-299.1814\\-59\\81.05469\\-299.8595\\-59\\79.10156\\-300.1164\\-59\\77.14844\\-300.2515\\-59\\73.24219\\-300.3342\\-59\\69.33594\\-300.2515\\-59\\67.38281\\-300.1046\\-59\\59.57031\\-298.7461\\-59\\57.61719\\-298.2606\\-59\\55.66406\\-297.4166\\-59\\53.71094\\-296.9004\\-59\\51.75781\\-296.2865\\-59\\49.80469\\-295.2824\\-59\\47.85156\\-294.6734\\-59\\45.89844\\-293.5131\\-59\\43.94531\\-292.5492\\-59\\41.99219\\-291.1577\\-59\\40.03906\\-289.8906\\-59\\38.08594\\-288.819\\-59\\36.13281\\-287.4536\\-59\\34.18936\\-286.1953\\-59\\32.22656\\-284.7956\\-59\\30.27344\\-283.3025\\-59\\28.32031\\-281.9484\\-59\\26.36719\\-280.7012\\-59\\24.41406\\-279.0937\\-59\\22.46094\\-277.5898\\-59\\18.55469\\-276.0242\\-59\\16.60156\\-275.5661\\-59\\14.64844\\-275.6913\\-59\\8.789063\\-275.7202\\-59\\4.882813\\-275.809\\-59\\2.929688\\-275.9716\\-59\\-0.9765625\\-276.165\\-59\\-2.929688\\-276.3435\\-59\\-10.74219\\-276.6826\\-59\\-16.60156\\-276.7439\\-59\\-18.55469\\-276.9714\\-59\\-20.50781\\-277.5275\\-59\\-24.41406\\-280.0005\\-59\\-28.32031\\-282.7207\\-59\\-30.27344\\-283.7748\\-59\\-34.17969\\-286.7686\\-59\\-36.13281\\-287.9043\\-59\\-40.03906\\-290.4314\\-59\\-41.99219\\-291.5293\\-59\\-43.94531\\-292.9147\\-59\\-45.89844\\-294.0634\\-59\\-47.85156\\-294.9844\\-59\\-49.80469\\-295.6643\\-59\\-51.75781\\-296.6675\\-59\\-53.71094\\-297.0925\\-59\\-55.66406\\-297.1888\\-59\\-57.61719\\-298.6426\\-59\\-61.52344\\-299.5138\\-59\\-63.47656\\-300.0288\\-59\\-67.38281\\-300.4818\\-59\\-71.28906\\-300.6606\\-59\\-73.24219\\-300.6893\\-59\\-77.14844\\-300.6024\\-59\\-81.05469\\-300.3614\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "300"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "97"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-83.00781\\-299.8748\\-57\\-84.96094\\-299.4123\\-57\\-88.86719\\-298.6742\\-57\\-90.82031\\-298.1846\\-57\\-92.77344\\-297.3776\\-57\\-96.67969\\-296.2979\\-57\\-98.63281\\-295.3506\\-57\\-100.5859\\-294.7927\\-57\\-104.4922\\-292.8257\\-57\\-106.4453\\-291.4855\\-57\\-108.3984\\-290.5443\\-57\\-110.3516\\-289.2636\\-57\\-112.3047\\-288.2358\\-57\\-114.2578\\-287.0248\\-57\\-118.1641\\-284.0484\\-57\\-120.1172\\-282.8593\\-57\\-122.0703\\-281.3189\\-57\\-124.0234\\-279.6478\\-57\\-125.9766\\-277.867\\-57\\-127.8153\\-276.4297\\-57\\-129.8828\\-274.6039\\-57\\-133.9143\\-270.5703\\-57\\-135.7847\\-268.6172\\-57\\-137.3062\\-266.6641\\-57\\-138.958\\-264.7109\\-57\\-140.7245\\-262.7578\\-57\\-142.3208\\-260.8047\\-57\\-144.9245\\-256.8984\\-57\\-146.4844\\-254.9453\\-57\\-147.9394\\-252.9922\\-57\\-148.912\\-251.0391\\-57\\-150.1601\\-249.0859\\-57\\-151.3672\\-246.8631\\-57\\-153.5924\\-243.2266\\-57\\-154.4577\\-241.2734\\-57\\-155.5176\\-239.3203\\-57\\-156.9322\\-235.4141\\-57\\-157.927\\-233.4609\\-57\\-158.6242\\-231.5078\\-57\\-159.6767\\-229.5547\\-57\\-160.2843\\-227.6016\\-57\\-161.7651\\-223.6953\\-57\\-162.5398\\-219.7891\\-57\\-163.2413\\-217.8359\\-57\\-163.7723\\-215.8828\\-57\\-164.4202\\-211.9766\\-57\\-165.501\\-208.0703\\-57\\-165.7992\\-206.1172\\-57\\-166.5381\\-200.2578\\-57\\-167.1805\\-196.3516\\-57\\-167.5254\\-192.4453\\-57\\-167.6607\\-188.5391\\-57\\-167.7376\\-180.7266\\-57\\-167.6179\\-174.8672\\-57\\-167.3815\\-170.9609\\-57\\-167.2054\\-169.0078\\-57\\-166.3246\\-163.1484\\-57\\-165.5473\\-157.2891\\-57\\-164.4684\\-153.3828\\-57\\-163.7684\\-149.4766\\-57\\-163.2276\\-147.5234\\-57\\-162.5103\\-145.5703\\-57\\-161.6602\\-141.6641\\-57\\-160.7516\\-139.7109\\-57\\-160.0709\\-137.7578\\-57\\-159.2024\\-135.8047\\-57\\-158.219\\-133.8516\\-57\\-157.3763\\-131.8984\\-57\\-156.3735\\-129.9453\\-57\\-155.7129\\-127.9922\\-57\\-154.5522\\-126.0391\\-57\\-153.7148\\-124.0859\\-57\\-152.4478\\-122.1328\\-57\\-148.1142\\-114.3203\\-57\\-145.3617\\-110.4141\\-57\\-143.5547\\-107.6994\\-57\\-141.0369\\-104.5547\\-57\\-139.6484\\-102.9348\\-57\\-137.6953\\-100.9148\\-57\\-133.3766\\-96.74219\\-57\\-129.8828\\-93.92941\\-57\\-127.9297\\-92.61214\\-57\\-124.0234\\-90.29429\\-57\\-122.0703\\-89.33015\\-57\\-120.1172\\-88.20703\\-57\\-118.1641\\-87.55704\\-57\\-116.2109\\-86.48828\\-57\\-112.3047\\-84.73383\\-57\\-108.3984\\-83.5825\\-57\\-106.4453\\-82.46184\\-57\\-104.4922\\-81.98888\\-57\\-102.5391\\-81.77474\\-57\\-100.5068\\-81.11719\\-57\\-98.63281\\-80.63569\\-57\\-94.72656\\-79.78934\\-57\\-92.77344\\-79.54137\\-57\\-88.86719\\-78.89353\\-57\\-86.91406\\-78.71472\\-57\\-83.00781\\-78.02897\\-57\\-79.10156\\-77.90498\\-57\\-75.19531\\-77.52938\\-57\\-73.24219\\-77.46412\\-57\\-65.42969\\-77.42548\\-57\\-63.47656\\-77.50534\\-57\\-57.61719\\-77.6241\\-57\\-55.66406\\-78.0036\\-57\\-53.71094\\-78.18132\\-57\\-47.85156\\-78.94027\\-57\\-43.94531\\-79.51591\\-57\\-38.08594\\-80.17702\\-57\\-34.17969\\-80.82866\\-57\\-32.22656\\-81.45264\\-57\\-28.32031\\-82.48839\\-57\\-24.41406\\-84.10908\\-57\\-20.50781\\-86.09055\\-57\\-16.60156\\-88.44514\\-57\\-14.64844\\-90.18224\\-57\\-12.69531\\-92.06425\\-57\\-8.789063\\-95.64173\\-57\\-2.929688\\-101.75\\-57\\-0.9765625\\-102.6605\\-57\\0.9765625\\-101.9092\\-57\\2.929688\\-100.1532\\-57\\4.387556\\-98.69531\\-57\\8.071437\\-94.78906\\-57\\12.12351\\-90.88281\\-57\\12.69531\\-90.24374\\-57\\14.64844\\-88.49818\\-57\\18.55469\\-85.84183\\-57\\20.50781\\-84.40199\\-57\\24.41406\\-82.21745\\-57\\26.36719\\-81.41708\\-57\\28.32031\\-80.4894\\-57\\30.27344\\-79.83082\\-57\\32.22656\\-79.04199\\-57\\34.17969\\-78.35652\\-57\\36.13281\\-77.79425\\-57\\40.03906\\-76.77767\\-57\\43.94531\\-76.2095\\-57\\49.80469\\-75.74946\\-57\\51.75781\\-75.4375\\-57\\53.71094\\-75.36102\\-57\\55.66406\\-75.05091\\-57\\61.52344\\-75.03809\\-57\\63.47656\\-75.31384\\-57\\65.42969\\-75.40508\\-57\\67.38281\\-75.66864\\-57\\75.19531\\-76.12784\\-57\\79.10156\\-76.26452\\-57\\81.05469\\-76.52419\\-57\\84.96094\\-77.36173\\-57\\88.86719\\-77.94035\\-57\\92.77344\\-78.76714\\-57\\96.67969\\-79.64883\\-57\\100.5859\\-80.64925\\-57\\102.5391\\-81.41824\\-57\\106.4453\\-82.46696\\-57\\108.3984\\-83.36813\\-57\\110.3516\\-84.11462\\-57\\114.2578\\-86\\-57\\116.2109\\-86.80511\\-57\\118.1641\\-87.80536\\-57\\120.1172\\-88.6474\\-57\\123.5968\\-90.88281\\-57\\127.9297\\-93.85182\\-57\\129.3694\\-94.78906\\-57\\131.8078\\-96.74219\\-57\\137.6953\\-102.1492\\-57\\140.0404\\-104.5547\\-57\\141.6605\\-106.5078\\-57\\143.0058\\-108.4609\\-57\\143.5547\\-109.0876\\-57\\145.5078\\-111.9305\\-57\\145.8861\\-112.3672\\-57\\148.3471\\-116.2734\\-57\\149.2959\\-118.2266\\-57\\151.5026\\-122.1328\\-57\\152.436\\-124.0859\\-57\\153.5413\\-126.0391\\-57\\155.1132\\-129.9453\\-57\\156.0012\\-131.8984\\-57\\156.4636\\-133.8516\\-57\\157.2932\\-135.8047\\-57\\158.0089\\-137.7578\\-57\\158.554\\-139.7109\\-57\\159.405\\-141.6641\\-57\\160.0018\\-143.6172\\-57\\160.4004\\-145.5703\\-57\\160.9026\\-147.5234\\-57\\161.5248\\-149.4766\\-57\\161.8697\\-151.4297\\-57\\162.5216\\-157.2891\\-57\\162.8454\\-159.2422\\-57\\163.2813\\-161.1953\\-57\\163.7756\\-165.1016\\-57\\164.1443\\-170.9609\\-57\\164.4623\\-176.8203\\-57\\164.8494\\-186.5859\\-57\\164.8072\\-196.3516\\-57\\164.6979\\-202.2109\\-57\\164.492\\-208.0703\\-57\\164.191\\-213.9297\\-57\\163.9398\\-217.8359\\-57\\163.5264\\-221.7422\\-57\\162.5846\\-225.6484\\-57\\162.0135\\-229.5547\\-57\\161.5851\\-231.5078\\-57\\160.8028\\-233.4609\\-57\\159.5225\\-237.3672\\-57\\158.4569\\-239.3203\\-57\\157.779\\-241.2734\\-57\\156.6564\\-243.2266\\-57\\155.9773\\-245.1797\\-57\\154.8569\\-247.1328\\-57\\153.9651\\-249.0859\\-57\\152.6042\\-251.0391\\-57\\151.4486\\-252.9922\\-57\\149.4141\\-256.0969\\-57\\147.485\\-258.8516\\-57\\145.957\\-260.8047\\-57\\142.5442\\-264.7109\\-57\\140.7271\\-266.6641\\-57\\136.7834\\-270.5703\\-57\\133.7891\\-273.4617\\-57\\131.8359\\-275.18\\-57\\124.0234\\-281.3384\\-57\\122.0703\\-282.8012\\-57\\120.1172\\-283.9167\\-57\\118.1641\\-285.3123\\-57\\116.2109\\-286.8104\\-57\\112.3047\\-289.057\\-57\\108.3984\\-291.0995\\-57\\106.4453\\-292.2316\\-57\\102.5391\\-294.107\\-57\\100.5859\\-294.8646\\-57\\98.63281\\-295.3377\\-57\\96.67969\\-296.1324\\-57\\94.72656\\-296.7455\\-57\\90.82031\\-297.6162\\-57\\88.86719\\-298.281\\-57\\86.91406\\-298.653\\-57\\81.05469\\-299.4531\\-57\\77.14844\\-299.9338\\-57\\73.24219\\-300.0926\\-57\\69.33594\\-299.9893\\-57\\67.38281\\-299.7717\\-57\\59.57031\\-298.5669\\-57\\57.61719\\-297.9516\\-57\\55.66406\\-297.2165\\-57\\53.71094\\-296.7802\\-57\\51.75781\\-296.0462\\-57\\49.80469\\-295.1784\\-57\\47.85156\\-294.5722\\-57\\45.89844\\-293.412\\-57\\43.94531\\-292.4751\\-57\\43.41634\\-292.0547\\-57\\40.03906\\-289.9063\\-57\\38.08594\\-288.8824\\-57\\36.13281\\-287.569\\-57\\34.17969\\-286.4516\\-57\\30.27344\\-283.551\\-57\\28.32031\\-282.4828\\-57\\26.36719\\-281.1158\\-57\\24.41406\\-279.651\\-57\\22.46094\\-278.6157\\-57\\20.50781\\-277.7641\\-57\\18.55469\\-277.3447\\-57\\16.60156\\-277.1345\\-57\\10.74219\\-277.2157\\-57\\4.882813\\-277.3417\\-57\\-0.9765625\\-277.5809\\-57\\-2.929688\\-277.8038\\-57\\-6.835938\\-277.9976\\-57\\-12.69531\\-278.1341\\-57\\-16.60156\\-278.1206\\-57\\-18.55469\\-278.2291\\-57\\-20.50781\\-278.6861\\-57\\-22.46094\\-279.4499\\-57\\-24.41406\\-280.7222\\-57\\-26.36719\\-281.761\\-57\\-27.10978\\-282.2891\\-57\\-30.27344\\-284.2008\\-57\\-32.22656\\-285.4676\\-57\\-34.17969\\-286.9414\\-57\\-36.16688\\-288.1484\\-57\\-38.08594\\-289.2064\\-57\\-40.03906\\-290.4526\\-57\\-41.99219\\-291.4652\\-57\\-43.94531\\-292.8304\\-57\\-46.05914\\-294.0078\\-57\\-47.85156\\-294.8928\\-57\\-49.80469\\-295.4893\\-57\\-51.75781\\-296.5408\\-57\\-55.66406\\-297.5274\\-57\\-57.61719\\-298.5044\\-57\\-65.42969\\-300.1396\\-57\\-69.33594\\-300.4739\\-57\\-73.24219\\-300.583\\-57\\-77.14844\\-300.4974\\-57\\-81.05469\\-300.216\\-57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "313"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "98"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-300.0158\\-55\\-84.96094\\-299.2216\\-55\\-88.86719\\-298.5422\\-55\\-92.77344\\-297.1983\\-55\\-94.72656\\-296.7433\\-55\\-98.63281\\-295.2007\\-55\\-100.5859\\-294.6321\\-55\\-102.5391\\-293.5195\\-55\\-104.4922\\-292.6188\\-55\\-106.4453\\-291.2636\\-55\\-108.3984\\-290.2772\\-55\\-114.2578\\-286.8283\\-55\\-117.6717\\-284.2422\\-55\\-118.1641\\-283.8105\\-55\\-120.1172\\-282.6526\\-55\\-122.0703\\-281.1497\\-55\\-125.9766\\-277.6732\\-55\\-127.5573\\-276.4297\\-55\\-129.8828\\-274.369\\-55\\-135.7422\\-268.45\\-55\\-137.1582\\-266.6641\\-55\\-138.8296\\-264.7109\\-55\\-140.6188\\-262.7578\\-55\\-142.237\\-260.8047\\-55\\-143.4498\\-258.8516\\-55\\-144.813\\-256.8984\\-55\\-146.3831\\-254.9453\\-55\\-147.8092\\-252.9922\\-55\\-148.8054\\-251.0391\\-55\\-150.0672\\-249.0859\\-55\\-150.9975\\-247.1328\\-55\\-151.3672\\-246.6536\\-55\\-153.3884\\-243.2266\\-55\\-155.2816\\-239.3203\\-55\\-156.1302\\-237.3672\\-55\\-156.735\\-235.4141\\-55\\-157.7917\\-233.4609\\-55\\-158.4446\\-231.5078\\-55\\-159.4727\\-229.5547\\-55\\-160.7963\\-225.6484\\-55\\-161.5982\\-223.6953\\-55\\-162.062\\-221.7422\\-55\\-162.3962\\-219.7891\\-55\\-162.8847\\-217.8359\\-55\\-163.5773\\-215.8828\\-55\\-164.2358\\-211.9766\\-55\\-164.6269\\-210.0234\\-55\\-165.2007\\-208.0703\\-55\\-165.6228\\-206.1172\\-55\\-166.3102\\-200.2578\\-55\\-167.1152\\-194.3984\\-55\\-167.3002\\-192.4453\\-55\\-167.4956\\-188.5391\\-55\\-167.5781\\-180.7266\\-55\\-167.4338\\-174.8672\\-55\\-167.1678\\-170.9609\\-55\\-166.3847\\-165.1016\\-55\\-165.6778\\-159.2422\\-55\\-165.3209\\-157.2891\\-55\\-164.7247\\-155.3359\\-55\\-164.3094\\-153.3828\\-55\\-163.6047\\-149.4766\\-55\\-162.8981\\-147.5234\\-55\\-162.3551\\-145.5703\\-55\\-161.9828\\-143.6172\\-55\\-161.4349\\-141.6641\\-55\\-160.5119\\-139.7109\\-55\\-159.8764\\-137.7578\\-55\\-158.8227\\-135.8047\\-55\\-158.0368\\-133.8516\\-55\\-156.9937\\-131.8984\\-55\\-155.4503\\-127.9922\\-55\\-154.3649\\-126.0391\\-55\\-153.4172\\-124.0859\\-55\\-151.125\\-120.1797\\-55\\-150.1687\\-118.2266\\-55\\-148.8845\\-116.2734\\-55\\-148.0141\\-114.3203\\-55\\-145.1991\\-110.4141\\-55\\-143.9909\\-108.4609\\-55\\-142.5849\\-106.5078\\-55\\-139.6484\\-102.9348\\-55\\-137.6953\\-100.8372\\-55\\-133.5867\\-96.74219\\-55\\-129.8828\\-93.76296\\-55\\-128.6286\\-92.83594\\-55\\-125.5047\\-90.88281\\-55\\-121.9779\\-88.92969\\-55\\-118.1641\\-87.19447\\-55\\-116.2109\\-86.15944\\-55\\-113.7022\\-85.02344\\-55\\-112.3047\\-84.51685\\-55\\-108.3984\\-83.31631\\-55\\-106.4453\\-82.17929\\-55\\-102.5391\\-81.47697\\-55\\-100.5859\\-80.79906\\-55\\-94.72656\\-79.58576\\-55\\-92.77344\\-79.28413\\-55\\-90.82031\\-78.88223\\-55\\-84.96094\\-78.13391\\-55\\-83.00781\\-77.80453\\-55\\-79.10156\\-77.62177\\-55\\-75.19531\\-77.11476\\-55\\-73.24219\\-77.03403\\-55\\-69.33594\\-77.03403\\-55\\-65.42969\\-76.98399\\-55\\-59.57031\\-77.3559\\-55\\-57.61719\\-77.43686\\-55\\-55.66406\\-77.69922\\-55\\-47.85156\\-78.48706\\-55\\-43.94531\\-78.96321\\-55\\-40.03906\\-79.60796\\-55\\-36.13281\\-80.10423\\-55\\-32.22656\\-80.78924\\-55\\-30.27344\\-81.48886\\-55\\-26.36719\\-82.61365\\-55\\-24.41406\\-83.5889\\-55\\-22.46094\\-84.39117\\-55\\-20.50781\\-85.55805\\-55\\-18.55469\\-86.55291\\-55\\-16.60156\\-87.95982\\-55\\-14.64844\\-89.59287\\-55\\-10.74219\\-93.17734\\-55\\-8.836013\\-94.78906\\-55\\-6.835938\\-96.82433\\-55\\-5.110116\\-98.69531\\-55\\-2.929688\\-100.8022\\-55\\-0.9765625\\-101.8352\\-55\\0.9765625\\-101.2773\\-55\\2.929688\\-99.56872\\-55\\5.69894\\-96.74219\\-55\\6.835938\\-95.46875\\-55\\9.4846\\-92.83594\\-55\\11.55379\\-90.88281\\-55\\12.69531\\-89.64964\\-55\\16.60156\\-86.45529\\-55\\22.46094\\-82.63864\\-55\\24.41406\\-81.81474\\-55\\26.36719\\-80.77466\\-55\\30.27344\\-79.34375\\-55\\32.22656\\-78.55602\\-55\\38.08594\\-76.83794\\-55\\40.03906\\-76.41546\\-55\\41.99219\\-76.19055\\-55\\47.85156\\-75.63605\\-55\\49.80469\\-75.13153\\-55\\51.75781\\-74.79603\\-55\\55.66406\\-74.69054\\-55\\61.52344\\-74.67468\\-55\\65.42969\\-74.88397\\-55\\69.33594\\-75.36019\\-55\\71.28906\\-75.68506\\-55\\77.14844\\-76.04978\\-55\\79.10156\\-76.10933\\-55\\81.05469\\-76.27605\\-55\\84.96094\\-76.92897\\-55\\94.72656\\-78.8601\\-55\\96.67969\\-79.32682\\-55\\98.63281\\-79.98093\\-55\\100.5859\\-80.41964\\-55\\102.5391\\-80.99905\\-55\\104.4922\\-81.7487\\-55\\106.4453\\-82.26151\\-55\\108.3984\\-82.97035\\-55\\110.3516\\-83.91629\\-55\\112.3047\\-84.70907\\-55\\114.2578\\-85.78693\\-55\\116.2109\\-86.56087\\-55\\118.1641\\-87.643\\-55\\120.1172\\-88.36468\\-55\\120.8852\\-88.92969\\-55\\123.9149\\-90.88281\\-55\\127.9297\\-93.64528\\-55\\129.806\\-94.78906\\-55\\131.8359\\-96.29829\\-55\\133.7891\\-98.32832\\-55\\134.25\\-98.69531\\-55\\137.6953\\-101.897\\-55\\140.3334\\-104.5547\\-55\\141.9144\\-106.5078\\-55\\143.0956\\-108.4609\\-55\\143.5547\\-108.9959\\-55\\145.5078\\-111.9451\\-55\\145.8586\\-112.3672\\-55\\147.0034\\-114.3203\\-55\\148.2989\\-116.2734\\-55\\149.1255\\-118.2266\\-55\\150.2991\\-120.1797\\-55\\152.2847\\-124.0859\\-55\\154.1263\\-127.9922\\-55\\154.851\\-129.9453\\-55\\155.8211\\-131.8984\\-55\\156.3029\\-133.8516\\-55\\156.92\\-135.8047\\-55\\157.8068\\-137.7578\\-55\\158.3686\\-139.7109\\-55\\159.7872\\-143.6172\\-55\\160.6325\\-147.5234\\-55\\161.2297\\-149.4766\\-55\\161.69\\-151.4297\\-55\\161.9673\\-153.3828\\-55\\162.5846\\-159.2422\\-55\\163.2957\\-163.1484\\-55\\163.5866\\-165.1016\\-55\\164.0024\\-170.9609\\-55\\164.2883\\-176.8203\\-55\\164.603\\-186.5859\\-55\\164.5784\\-196.3516\\-55\\164.521\\-200.2578\\-55\\164.2932\\-208.0703\\-55\\164.0425\\-213.9297\\-55\\163.7684\\-217.8359\\-55\\163.5362\\-219.7891\\-55\\163.1851\\-221.7422\\-55\\162.7215\\-223.6953\\-55\\162.3919\\-225.6484\\-55\\161.8469\\-229.5547\\-55\\161.287\\-231.5078\\-55\\160.535\\-233.4609\\-55\\159.962\\-235.4141\\-55\\158.2391\\-239.3203\\-55\\157.4971\\-241.2734\\-55\\156.4392\\-243.2266\\-55\\155.7685\\-245.1797\\-55\\154.6036\\-247.1328\\-55\\153.6933\\-249.0859\\-55\\151.3672\\-252.5553\\-55\\151.0036\\-252.9922\\-55\\149.9389\\-254.9453\\-55\\147.4609\\-258.3455\\-55\\145.5307\\-260.8047\\-55\\142.2502\\-264.7109\\-55\\139.6484\\-267.4648\\-55\\133.7891\\-273.133\\-55\\131.8359\\-274.7971\\-55\\129.8828\\-276.2724\\-55\\127.3468\\-278.3828\\-55\\124.0234\\-281.0288\\-55\\122.0703\\-282.4251\\-55\\120.1172\\-283.5473\\-55\\116.2109\\-286.4212\\-55\\114.2578\\-287.5333\\-55\\112.3047\\-288.793\\-55\\110.3516\\-289.6133\\-55\\108.3984\\-290.8083\\-55\\106.4453\\-291.6942\\-55\\104.4922\\-292.837\\-55\\102.5391\\-293.6292\\-55\\100.5859\\-294.615\\-55\\96.67969\\-295.6378\\-55\\94.72656\\-296.4713\\-55\\90.82031\\-297.2572\\-55\\86.91406\\-298.3326\\-55\\84.96094\\-298.6593\\-55\\81.05469\\-299.1401\\-55\\77.14844\\-299.5115\\-55\\73.24219\\-299.7175\\-55\\69.33594\\-299.6265\\-55\\65.42969\\-299.2402\\-55\\61.52344\\-298.7063\\-55\\59.57031\\-298.3579\\-55\\57.61719\\-297.6089\\-55\\55.66406\\-297.0702\\-55\\53.71094\\-296.6519\\-55\\51.75781\\-295.7855\\-55\\47.85156\\-294.4396\\-55\\45.89844\\-293.3195\\-55\\43.94531\\-292.4176\\-55\\43.48624\\-292.0547\\-55\\40.03906\\-289.9362\\-55\\38.08594\\-288.9685\\-55\\36.13281\\-287.7121\\-55\\34.17969\\-286.6963\\-55\\30.27344\\-283.9047\\-55\\28.32031\\-282.8855\\-55\\26.36719\\-281.5341\\-55\\24.20775\\-280.3359\\-55\\22.46094\\-279.4865\\-55\\20.50781\\-279.0503\\-55\\18.55469\\-278.8211\\-55\\14.64844\\-278.618\\-55\\10.74219\\-278.6785\\-55\\8.789063\\-278.8281\\-55\\-0.9765625\\-279.2016\\-55\\-2.929688\\-279.3015\\-55\\-6.835938\\-279.3947\\-55\\-12.69531\\-279.4718\\-55\\-16.60156\\-279.4296\\-55\\-18.55469\\-279.4858\\-55\\-20.50781\\-279.7219\\-55\\-22.46094\\-280.4254\\-55\\-24.41406\\-281.2663\\-55\\-28.32031\\-283.3328\\-55\\-30.27344\\-284.6496\\-55\\-32.22656\\-285.7514\\-55\\-32.80892\\-286.1953\\-55\\-36.13281\\-288.3513\\-55\\-38.08594\\-289.2636\\-55\\-40.03906\\-290.4834\\-55\\-41.99219\\-291.437\\-55\\-43.94531\\-292.7716\\-55\\-47.85156\\-294.8001\\-55\\-49.80469\\-295.3634\\-55\\-51.75781\\-296.3898\\-55\\-55.66406\\-297.5274\\-55\\-57.61719\\-298.3421\\-55\\-59.57031\\-298.7905\\-55\\-63.47656\\-299.501\\-55\\-65.42969\\-299.9194\\-55\\-67.38281\\-300.1841\\-55\\-69.33594\\-300.3342\\-55\\-73.24219\\-300.4589\\-55\\-77.14844\\-300.3703\\-55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "308"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "99"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-300.0288\\-53\\-86.91406\\-298.7434\\-53\\-88.86719\\-298.3579\\-53\\-90.82031\\-297.5818\\-53\\-94.72656\\-296.5983\\-53\\-96.67969\\-295.7168\\-53\\-100.5859\\-294.4158\\-53\\-102.5391\\-293.2898\\-53\\-104.4922\\-292.3599\\-53\\-104.871\\-292.0547\\-53\\-108.3984\\-289.9093\\-53\\-110.3516\\-288.9435\\-53\\-112.3047\\-287.6869\\-53\\-114.2578\\-286.6102\\-53\\-118.1641\\-283.6107\\-53\\-120.1172\\-282.4072\\-53\\-122.0703\\-280.9892\\-53\\-125.9766\\-277.479\\-53\\-127.3281\\-276.4297\\-53\\-129.8828\\-274.1588\\-53\\-131.4557\\-272.5234\\-53\\-135.7422\\-268.2888\\-53\\-137.0157\\-266.6641\\-53\\-138.6953\\-264.7109\\-53\\-140.5242\\-262.7578\\-53\\-142.1411\\-260.8047\\-53\\-143.3182\\-258.8516\\-53\\-144.7083\\-256.8984\\-53\\-146.295\\-254.9453\\-53\\-147.6405\\-252.9922\\-53\\-148.7044\\-251.0391\\-53\\-149.9675\\-249.0859\\-53\\-150.8494\\-247.1328\\-53\\-152.1322\\-245.1797\\-53\\-154.2222\\-241.2734\\-53\\-155.0458\\-239.3203\\-53\\-156.0136\\-237.3672\\-53\\-156.5859\\-235.4141\\-53\\-157.616\\-233.4609\\-53\\-158.2952\\-231.5078\\-53\\-159.9824\\-227.6016\\-53\\-160.5539\\-225.6484\\-53\\-161.3946\\-223.6953\\-53\\-161.9367\\-221.7422\\-53\\-162.6143\\-217.8359\\-53\\-163.3085\\-215.8828\\-53\\-163.7827\\-213.9297\\-53\\-164.4012\\-210.0234\\-53\\-164.8213\\-208.0703\\-53\\-165.3856\\-206.1172\\-53\\-165.6883\\-204.1641\\-53\\-166.3208\\-198.3047\\-53\\-166.7913\\-194.3984\\-53\\-167.1678\\-190.4922\\-53\\-167.3456\\-186.5859\\-53\\-167.4017\\-180.7266\\-53\\-167.3023\\-176.8203\\-53\\-167.073\\-172.9141\\-53\\-165.9756\\-163.1484\\-53\\-165.4921\\-159.2422\\-53\\-164.4972\\-155.3359\\-53\\-163.8425\\-151.4297\\-53\\-163.3954\\-149.4766\\-53\\-162.6451\\-147.5234\\-53\\-161.8391\\-143.6172\\-53\\-160.2902\\-139.7109\\-53\\-159.6559\\-137.7578\\-53\\-158.5383\\-135.8047\\-53\\-157.8306\\-133.8516\\-53\\-156.7053\\-131.8984\\-53\\-156.078\\-129.9453\\-53\\-154.1756\\-126.0391\\-53\\-153.0546\\-124.0859\\-53\\-152.0769\\-122.1328\\-53\\-150.8896\\-120.1797\\-53\\-150\\-118.2266\\-53\\-148.6962\\-116.2734\\-53\\-147.8354\\-114.3203\\-53\\-147.4609\\-113.8675\\-53\\-145.0296\\-110.4141\\-53\\-143.8664\\-108.4609\\-53\\-142.525\\-106.5078\\-53\\-139.6484\\-102.9844\\-53\\-135.6658\\-98.69531\\-53\\-133.7069\\-96.74219\\-53\\-128.843\\-92.83594\\-53\\-125.8517\\-90.88281\\-53\\-122.0703\\-88.70313\\-53\\-120.1172\\-87.93481\\-53\\-116.2109\\-85.86555\\-53\\-114.2578\\-84.9287\\-53\\-112.3047\\-84.29851\\-53\\-110.3516\\-83.76604\\-53\\-106.4453\\-82.03912\\-53\\-104.4922\\-81.69363\\-53\\-100.5859\\-80.65642\\-53\\-92.77344\\-78.98968\\-53\\-88.86719\\-78.34634\\-53\\-84.96094\\-77.96983\\-53\\-81.05469\\-77.31169\\-53\\-79.10156\\-77.25031\\-53\\-75.19531\\-76.76075\\-53\\-67.38281\\-76.62628\\-53\\-63.47656\\-76.73603\\-53\\-59.57031\\-77.05903\\-53\\-57.61719\\-77.15875\\-53\\-53.71094\\-77.62663\\-53\\-47.85156\\-78.12279\\-53\\-41.99219\\-78.78703\\-53\\-38.08594\\-79.46286\\-53\\-32.22656\\-80.40981\\-53\\-30.27344\\-80.86929\\-53\\-28.32031\\-81.68007\\-53\\-26.36719\\-82.19456\\-53\\-24.19562\\-83.07031\\-53\\-20.50781\\-84.84124\\-53\\-18.55469\\-86.06467\\-53\\-14.64844\\-88.83708\\-53\\-7.990761\\-94.78906\\-53\\-4.173224\\-98.69531\\-53\\-2.929688\\-99.91257\\-53\\-0.9765625\\-101.2242\\-53\\0.9765625\\-100.574\\-53\\2.929688\\-98.8261\\-53\\8.745466\\-92.83594\\-53\\12.69531\\-89.00611\\-53\\15.19775\\-86.97656\\-53\\18.55469\\-84.50125\\-53\\22.46094\\-82.17838\\-53\\24.41406\\-81.35556\\-53\\26.36719\\-80.35484\\-53\\28.32031\\-79.64883\\-53\\30.27344\\-78.79543\\-53\\32.22656\\-78.12608\\-53\\36.13281\\-76.93694\\-53\\38.08594\\-76.46416\\-53\\40.03906\\-76.13925\\-53\\43.94531\\-75.76935\\-53\\45.89844\\-75.36102\\-53\\49.80469\\-74.67046\\-53\\51.75781\\-74.54211\\-53\\55.66406\\-74.49609\\-53\\61.52344\\-74.50114\\-53\\65.42969\\-74.63636\\-53\\69.33594\\-74.89641\\-53\\71.43555\\-75.25781\\-53\\75.19531\\-75.77822\\-53\\81.05469\\-76.14082\\-53\\83.00781\\-76.33438\\-53\\86.91406\\-76.95284\\-53\\88.86719\\-77.45335\\-53\\94.72656\\-78.58997\\-53\\96.67969\\-79.04199\\-53\\98.63281\\-79.76552\\-53\\102.5391\\-80.68392\\-53\\104.4922\\-81.48611\\-53\\108.3984\\-82.6558\\-53\\110.3516\\-83.72335\\-53\\112.3047\\-84.41919\\-53\\114.2578\\-85.56954\\-53\\116.2109\\-86.38452\\-53\\118.1641\\-87.44728\\-53\\120.1172\\-88.19401\\-53\\122.0703\\-89.53922\\-53\\124.0234\\-90.70313\\-53\\125.9766\\-92.17938\\-53\\127.9297\\-93.51202\\-53\\129.8828\\-94.63943\\-53\\131.8359\\-96.04646\\-53\\133.7891\\-98.12615\\-53\\134.5196\\-98.69531\\-53\\137.6953\\-101.6887\\-53\\140.5472\\-104.5547\\-53\\142.1875\\-106.5078\\-53\\143.1478\\-108.4609\\-53\\144.3971\\-110.4141\\-53\\145.7591\\-112.3672\\-53\\146.9001\\-114.3203\\-53\\148.2117\\-116.2734\\-53\\148.9966\\-118.2266\\-53\\150.1743\\-120.1797\\-53\\150.9724\\-122.1328\\-53\\152.0956\\-124.0859\\-53\\152.9257\\-126.0391\\-53\\153.9533\\-127.9922\\-53\\154.6245\\-129.9453\\-53\\155.5722\\-131.8984\\-53\\156.6368\\-135.8047\\-53\\157.5671\\-137.7578\\-53\\158.7227\\-141.6641\\-53\\159.518\\-143.6172\\-53\\160.0056\\-145.5703\\-53\\160.3854\\-147.5234\\-53\\161.4423\\-151.4297\\-53\\162.0502\\-155.3359\\-53\\162.5977\\-161.1953\\-53\\163.2957\\-165.1016\\-53\\163.5554\\-167.0547\\-53\\163.8641\\-170.9609\\-53\\164.1226\\-176.8203\\-53\\164.3935\\-186.5859\\-53\\164.3936\\-196.3516\\-53\\164.3392\\-200.2578\\-53\\164.1388\\-208.0703\\-53\\163.8972\\-213.9297\\-53\\163.5554\\-217.8359\\-53\\163.2413\\-219.7891\\-53\\162.8079\\-221.7422\\-53\\162.4962\\-223.6953\\-53\\162.0147\\-227.6016\\-53\\161.6308\\-229.5547\\-53\\160.9291\\-231.5078\\-53\\159.7191\\-235.4141\\-53\\158.7132\\-237.3672\\-53\\158.0455\\-239.3203\\-53\\157.0938\\-241.2734\\-53\\155.4778\\-245.1797\\-53\\153.3436\\-249.0859\\-53\\152.1312\\-251.0391\\-53\\150.6848\\-252.9922\\-53\\149.6353\\-254.9453\\-53\\148.2693\\-256.8984\\-53\\146.7364\\-258.8516\\-53\\145.0376\\-260.8047\\-53\\141.8438\\-264.7109\\-53\\140.0378\\-266.6641\\-53\\137.6953\\-268.9632\\-53\\133.7891\\-272.7056\\-53\\131.6793\\-274.4766\\-53\\127.9297\\-277.5155\\-53\\126.9233\\-278.3828\\-53\\124.3887\\-280.3359\\-53\\124.0234\\-280.6957\\-53\\120.1172\\-283.2656\\-53\\118.1641\\-284.677\\-53\\116.2109\\-285.8745\\-53\\114.2578\\-287.231\\-53\\112.3047\\-288.4348\\-53\\110.3516\\-289.294\\-53\\108.3984\\-290.4733\\-53\\106.4453\\-291.314\\-53\\104.4922\\-292.4823\\-53\\102.5391\\-293.2668\\-53\\100.5859\\-294.243\\-53\\98.63281\\-294.8765\\-53\\96.67969\\-295.3078\\-53\\92.77344\\-296.6411\\-53\\88.86719\\-297.34\\-53\\84.96094\\-298.3514\\-53\\83.00781\\-298.653\\-53\\79.10156\\-299.0353\\-53\\75.19531\\-299.31\\-53\\71.28906\\-299.3641\\-53\\67.38281\\-299.2033\\-53\\63.47656\\-298.8023\\-53\\61.52344\\-298.535\\-53\\59.57031\\-298.0627\\-53\\57.61719\\-297.3776\\-53\\53.71094\\-296.4987\\-53\\51.75781\\-295.5773\\-53\\49.80469\\-294.9964\\-53\\47.85156\\-294.3173\\-53\\45.89844\\-293.2345\\-53\\43.94531\\-292.3578\\-53\\41.99219\\-291.1091\\-53\\40.03906\\-290.0128\\-53\\38.08594\\-289.0636\\-53\\36.13281\\-287.9191\\-53\\34.17969\\-286.9158\\-53\\32.22656\\-285.5675\\-53\\30.27344\\-284.4375\\-53\\28.32031\\-283.1993\\-53\\26.36719\\-282.1019\\-53\\24.41406\\-281.1871\\-53\\22.46094\\-280.6072\\-53\\20.50781\\-280.1903\\-53\\16.60156\\-279.8255\\-53\\10.74219\\-279.7789\\-53\\6.835938\\-280.2903\\-53\\-0.9765625\\-280.7408\\-53\\-4.882813\\-280.8511\\-53\\-14.64844\\-280.9307\\-53\\-18.55469\\-280.9262\\-53\\-20.50781\\-281.0174\\-53\\-22.46094\\-281.3329\\-53\\-24.41406\\-281.8759\\-53\\-26.36719\\-282.9069\\-53\\-28.32031\\-283.73\\-53\\-29.0314\\-284.2422\\-53\\-34.17969\\-287.2744\\-53\\-36.13281\\-288.5235\\-53\\-38.08594\\-289.3343\\-53\\-40.03906\\-290.5322\\-53\\-41.99219\\-291.4488\\-53\\-43.94531\\-292.7229\\-53\\-45.89844\\-293.6374\\-53\\-47.85156\\-294.7107\\-53\\-49.80469\\-295.2697\\-53\\-51.75781\\-296.2141\\-53\\-53.71094\\-296.8636\\-53\\-55.66406\\-297.3449\\-53\\-57.61719\\-298.1378\\-53\\-59.57031\\-298.6554\\-53\\-63.47656\\-299.2951\\-53\\-67.38281\\-299.9893\\-53\\-69.33594\\-300.1732\\-53\\-73.24219\\-300.31\\-53\\-77.14844\\-300.2055\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "301"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "100"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-77.14844\\-299.9893\\-51\\-81.05469\\-299.493\\-51\\-86.91406\\-298.5874\\-51\\-88.86719\\-298.0884\\-51\\-90.82031\\-297.3535\\-51\\-94.72656\\-296.4102\\-51\\-96.67969\\-295.493\\-51\\-98.63281\\-294.937\\-51\\-100.5859\\-294.1336\\-51\\-106.4453\\-290.8987\\-51\\-108.3984\\-289.6408\\-51\\-110.3516\\-288.7753\\-51\\-112.3047\\-287.458\\-51\\-114.2578\\-286.345\\-51\\-118.1641\\-283.442\\-51\\-122.0703\\-280.8101\\-51\\-125.9766\\-277.301\\-51\\-127.0873\\-276.4297\\-51\\-129.8828\\-273.9485\\-51\\-131.257\\-272.5234\\-51\\-135.7422\\-268.1087\\-51\\-136.8556\\-266.6641\\-51\\-139.6484\\-263.5046\\-51\\-140.4102\\-262.7578\\-51\\-142.0332\\-260.8047\\-51\\-143.1858\\-258.8516\\-51\\-144.604\\-256.8984\\-51\\-146.1848\\-254.9453\\-51\\-147.4838\\-252.9922\\-51\\-149.8473\\-249.0859\\-51\\-150.7182\\-247.1328\\-51\\-152.0201\\-245.1797\\-51\\-152.9696\\-243.2266\\-51\\-154.0889\\-241.2734\\-51\\-154.8733\\-239.3203\\-51\\-155.8878\\-237.3672\\-51\\-156.4465\\-235.4141\\-51\\-157.3882\\-233.4609\\-51\\-158.8631\\-229.5547\\-51\\-159.8147\\-227.6016\\-51\\-160.3461\\-225.6484\\-51\\-161.7571\\-221.7422\\-51\\-162.4246\\-217.8359\\-51\\-162.941\\-215.8828\\-51\\-163.5866\\-213.9297\\-51\\-163.9326\\-211.9766\\-51\\-164.5178\\-208.0703\\-51\\-165.4644\\-204.1641\\-51\\-165.7395\\-202.2109\\-51\\-166.6602\\-192.4453\\-51\\-167.0869\\-186.5859\\-51\\-167.155\\-182.6797\\-51\\-167.1152\\-178.7734\\-51\\-166.7636\\-172.9141\\-51\\-166.0256\\-165.1016\\-51\\-165.5915\\-161.1953\\-51\\-165.2135\\-159.2422\\-51\\-164.7025\\-157.2891\\-51\\-164.3066\\-155.3359\\-51\\-163.6684\\-151.4297\\-51\\-162.4286\\-147.5234\\-51\\-161.6532\\-143.6172\\-51\\-160.7759\\-141.6641\\-51\\-159.3294\\-137.7578\\-51\\-158.3029\\-135.8047\\-51\\-157.5648\\-133.8516\\-51\\-156.491\\-131.8984\\-51\\-155.8789\\-129.9453\\-51\\-154.7818\\-127.9922\\-51\\-153.9526\\-126.0391\\-51\\-152.7835\\-124.0859\\-51\\-151.8405\\-122.1328\\-51\\-150.6397\\-120.1797\\-51\\-149.7566\\-118.2266\\-51\\-148.5635\\-116.2734\\-51\\-147.5667\\-114.3203\\-51\\-144.8759\\-110.4141\\-51\\-142.4264\\-106.5078\\-51\\-139.6484\\-103.086\\-51\\-137.6953\\-100.8571\\-51\\-135.6994\\-98.69531\\-51\\-133.7891\\-96.73456\\-51\\-127.9297\\-92.05605\\-51\\-125.9766\\-90.79954\\-51\\-124.0234\\-89.7381\\-51\\-122.0703\\-88.52886\\-51\\-120.1172\\-87.83181\\-51\\-118.1641\\-86.71088\\-51\\-114.2578\\-84.69791\\-51\\-112.3047\\-84.0059\\-51\\-110.3516\\-83.57543\\-51\\-108.3984\\-82.61303\\-51\\-106.4453\\-81.98746\\-51\\-104.4922\\-81.54716\\-51\\-102.5391\\-80.95045\\-51\\-98.63281\\-80.08637\\-51\\-96.67969\\-79.55015\\-51\\-94.72656\\-79.22199\\-51\\-90.82031\\-78.42303\\-51\\-88.86719\\-78.10815\\-51\\-84.96094\\-77.79077\\-51\\-81.05469\\-76.99774\\-51\\-77.14844\\-76.64806\\-51\\-73.24219\\-76.44922\\-51\\-69.33594\\-76.41827\\-51\\-63.47656\\-76.48639\\-51\\-55.66406\\-76.93294\\-51\\-51.75781\\-77.48298\\-51\\-43.94531\\-78.19892\\-51\\-40.03906\\-78.61743\\-51\\-38.08594\\-78.92834\\-51\\-36.13281\\-79.3548\\-51\\-30.27344\\-80.4894\\-51\\-26.36719\\-81.83641\\-51\\-24.41406\\-82.41263\\-51\\-22.46094\\-83.44001\\-51\\-20.50781\\-84.32771\\-51\\-16.60156\\-86.80109\\-51\\-14.64844\\-88.23415\\-51\\-12.69531\\-89.90625\\-51\\-10.74219\\-91.79637\\-51\\-9.432164\\-92.83594\\-51\\-7.340771\\-94.78906\\-51\\-2.929688\\-99.20722\\-51\\-0.9765625\\-100.3555\\-51\\0.9765625\\-99.98135\\-51\\2.929688\\-98.1669\\-51\\6.283309\\-94.78906\\-51\\8.130787\\-92.83594\\-51\\10.74219\\-90.25699\\-51\\12.69531\\-88.42638\\-51\\14.64844\\-86.81759\\-51\\17.04102\\-85.02344\\-51\\20.50781\\-82.7226\\-51\\22.46094\\-81.87386\\-51\\24.41406\\-80.75098\\-51\\26.36719\\-80.01297\\-51\\28.32031\\-79.1265\\-51\\30.27344\\-78.35026\\-51\\34.17969\\-77.05196\\-51\\36.13281\\-76.53634\\-51\\38.08594\\-76.18462\\-51\\41.99219\\-75.75947\\-51\\45.89844\\-74.82631\\-51\\47.85156\\-74.61823\\-51\\51.75781\\-74.39321\\-51\\61.52344\\-74.36723\\-51\\67.38281\\-74.57355\\-51\\71.28906\\-74.84465\\-51\\73.24219\\-75.07064\\-51\\77.14844\\-75.73949\\-51\\83.00781\\-76.1597\\-51\\86.91406\\-76.67193\\-51\\90.82031\\-77.60024\\-51\\94.72656\\-78.30733\\-51\\96.67969\\-78.78703\\-51\\98.63281\\-79.50155\\-51\\102.5391\\-80.48085\\-51\\104.4358\\-81.11719\\-51\\106.4453\\-81.89471\\-51\\108.3984\\-82.4388\\-51\\110.3516\\-83.46767\\-51\\112.3047\\-84.1533\\-51\\114.2578\\-85.30556\\-51\\117.8869\\-86.97656\\-51\\120.1172\\-88.06654\\-51\\122.0703\\-89.36295\\-51\\124.0234\\-90.50776\\-51\\124.4247\\-90.88281\\-51\\127.2593\\-92.83594\\-51\\127.9297\\-93.40095\\-51\\129.8828\\-94.55069\\-51\\131.8359\\-95.92953\\-51\\133.7891\\-97.89222\\-51\\134.7281\\-98.69531\\-51\\137.6953\\-101.5663\\-51\\140.564\\-104.5547\\-51\\142.1296\\-106.5078\\-51\\143.1101\\-108.4609\\-51\\146.7786\\-114.3203\\-51\\148.0807\\-116.2734\\-51\\148.8551\\-118.2266\\-51\\150.0116\\-120.1797\\-51\\150.7349\\-122.1328\\-51\\151.8876\\-124.0859\\-51\\152.6712\\-126.0391\\-51\\153.7579\\-127.9922\\-51\\154.4204\\-129.9453\\-51\\155.9854\\-133.8516\\-51\\156.4324\\-135.8047\\-51\\157.9333\\-139.7109\\-51\\158.4256\\-141.6641\\-51\\159.7734\\-145.5703\\-51\\160.5636\\-149.4766\\-51\\161.592\\-153.3828\\-51\\161.8891\\-155.3359\\-51\\162.6075\\-163.1484\\-51\\163.2548\\-167.0547\\-51\\163.5063\\-169.0078\\-51\\163.8035\\-172.9141\\-51\\164.0376\\-178.7734\\-51\\164.2218\\-186.5859\\-51\\164.2131\\-196.3516\\-51\\164.1435\\-202.2109\\-51\\163.9193\\-210.0234\\-51\\163.7351\\-213.9297\\-51\\163.2681\\-217.8359\\-51\\162.5434\\-221.7422\\-51\\161.8502\\-227.6016\\-51\\161.3554\\-229.5547\\-51\\160.6172\\-231.5078\\-51\\160.0847\\-233.4609\\-51\\159.4154\\-235.4141\\-51\\158.4323\\-237.3672\\-51\\157.8203\\-239.3203\\-51\\156.7619\\-241.2734\\-51\\156.0903\\-243.2266\\-51\\155.0842\\-245.1797\\-51\\154.1929\\-247.1328\\-51\\152.9421\\-249.0859\\-51\\151.8619\\-251.0391\\-51\\150.4257\\-252.9922\\-51\\149.4141\\-254.7339\\-51\\147.9942\\-256.8984\\-51\\144.6717\\-260.8047\\-51\\143.5547\\-262.2171\\-51\\139.6484\\-266.5591\\-51\\137.6953\\-268.4789\\-51\\133.394\\-272.5234\\-51\\131.8359\\-273.9408\\-51\\128.8578\\-276.4297\\-51\\125.9766\\-278.7589\\-51\\123.8591\\-280.3359\\-51\\120.1172\\-283.0077\\-51\\118.1641\\-284.1689\\-51\\116.2109\\-285.4598\\-51\\114.2578\\-286.8963\\-51\\112.3047\\-287.9043\\-51\\110.3516\\-289.0255\\-51\\108.3984\\-289.9247\\-51\\106.4453\\-290.9898\\-51\\104.4922\\-291.9141\\-51\\102.5391\\-292.939\\-51\\100.5859\\-293.7047\\-51\\98.63281\\-294.5849\\-51\\94.72656\\-295.4994\\-51\\92.77344\\-296.2748\\-51\\90.82031\\-296.7254\\-51\\86.91406\\-297.3569\\-51\\83.00781\\-298.323\\-51\\81.05469\\-298.5982\\-51\\75.19531\\-299.0178\\-51\\71.28906\\-299.0995\\-51\\67.38281\\-298.9817\\-51\\63.47656\\-298.6145\\-51\\61.52344\\-298.301\\-51\\59.57031\\-297.6822\\-51\\57.61719\\-297.1844\\-51\\55.66406\\-296.8108\\-51\\53.71094\\-296.3229\\-51\\51.75781\\-295.4301\\-51\\49.80469\\-294.9197\\-51\\47.85156\\-294.1887\\-51\\45.89844\\-293.1684\\-51\\43.94531\\-292.2971\\-51\\41.99219\\-291.1244\\-51\\36.13281\\-288.2199\\-51\\30.27344\\-284.8374\\-51\\28.32031\\-283.5547\\-51\\24.41406\\-281.903\\-51\\22.46094\\-281.5119\\-51\\20.50781\\-281.2709\\-51\\18.55469\\-281.2064\\-51\\12.69531\\-281.2032\\-51\\10.74219\\-281.0991\\-51\\8.789063\\-281.4326\\-51\\6.835938\\-281.6197\\-51\\-0.9765625\\-281.9579\\-51\\-8.789063\\-282.0406\\-51\\-18.55469\\-282.0136\\-51\\-20.50781\\-282.0637\\-51\\-22.46094\\-282.348\\-51\\-24.41406\\-282.7983\\-51\\-26.36719\\-283.3748\\-51\\-30.27344\\-285.3279\\-51\\-32.22656\\-286.5792\\-51\\-34.17969\\-287.4655\\-51\\-36.13281\\-288.6866\\-51\\-38.08594\\-289.4013\\-51\\-40.03906\\-290.5986\\-51\\-41.99219\\-291.4806\\-51\\-43.94531\\-292.7076\\-51\\-45.89844\\-293.5357\\-51\\-47.85156\\-294.6229\\-51\\-49.80469\\-295.1884\\-51\\-53.71094\\-296.7476\\-51\\-55.66406\\-297.1913\\-51\\-59.57031\\-298.4823\\-51\\-61.52344\\-298.8317\\-51\\-69.33594\\-299.9757\\-51\\-73.24219\\-300.1377\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "315"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "101"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-73.24219\\-299.8899\\-49\\-77.14844\\-299.7044\\-49\\-81.05469\\-299.2904\\-49\\-84.96094\\-298.749\\-49\\-86.91406\\-298.4194\\-49\\-88.86719\\-297.7359\\-49\\-90.82031\\-297.1761\\-49\\-92.77344\\-296.7802\\-49\\-94.72656\\-296.1592\\-49\\-96.67969\\-295.2994\\-49\\-98.63281\\-294.7807\\-49\\-100.5859\\-293.79\\-49\\-102.5391\\-292.9078\\-49\\-104.4922\\-291.6371\\-49\\-106.4453\\-290.7012\\-49\\-108.3984\\-289.4104\\-49\\-110.3516\\-288.5518\\-49\\-110.8817\\-288.1484\\-49\\-113.9695\\-286.1953\\-49\\-116.2109\\-284.7112\\-49\\-120.1172\\-281.8211\\-49\\-122.0703\\-280.5838\\-49\\-124.5226\\-278.3828\\-49\\-126.8569\\-276.4297\\-49\\-129.8828\\-273.6993\\-49\\-135.1031\\-268.6172\\-49\\-136.7309\\-266.6641\\-49\\-139.6484\\-263.3847\\-49\\-140.2927\\-262.7578\\-49\\-141.9049\\-260.8047\\-49\\-143.0129\\-258.8516\\-49\\-146.0544\\-254.9453\\-49\\-147.4609\\-252.8193\\-49\\-149.7274\\-249.0859\\-49\\-150.6109\\-247.1328\\-49\\-151.886\\-245.1797\\-49\\-152.794\\-243.2266\\-49\\-153.9615\\-241.2734\\-49\\-154.7181\\-239.3203\\-49\\-155.7549\\-237.3672\\-49\\-156.3202\\-235.4141\\-49\\-157.0958\\-233.4609\\-49\\-158.0027\\-231.5078\\-49\\-158.6208\\-229.5547\\-49\\-159.6327\\-227.6016\\-49\\-160.7723\\-223.6953\\-49\\-161.5381\\-221.7422\\-49\\-161.9976\\-219.7891\\-49\\-162.2771\\-217.8359\\-49\\-162.6587\\-215.8828\\-49\\-163.3085\\-213.9297\\-49\\-163.765\\-211.9766\\-49\\-164.2932\\-208.0703\\-49\\-164.655\\-206.1172\\-49\\-165.5444\\-202.2109\\-49\\-165.9264\\-198.3047\\-49\\-166.2571\\-194.3984\\-49\\-166.7548\\-186.5859\\-49\\-166.827\\-182.6797\\-49\\-166.7652\\-178.7734\\-49\\-166.4891\\-172.9141\\-49\\-165.8529\\-165.1016\\-49\\-165.6494\\-163.1484\\-49\\-165.343\\-161.1953\\-49\\-164.8452\\-159.2422\\-49\\-164.1396\\-155.3359\\-49\\-163.849\\-153.3828\\-49\\-163.4182\\-151.4297\\-49\\-162.7327\\-149.4766\\-49\\-162.2742\\-147.5234\\-49\\-161.9274\\-145.5703\\-49\\-161.3946\\-143.6172\\-49\\-160.4957\\-141.6641\\-49\\-159.87\\-139.7109\\-49\\-158.8881\\-137.7578\\-49\\-158.0906\\-135.8047\\-49\\-156.3163\\-131.8984\\-49\\-155.6227\\-129.9453\\-49\\-154.541\\-127.9922\\-49\\-153.6933\\-126.0391\\-49\\-152.5677\\-124.0859\\-49\\-151.5666\\-122.1328\\-49\\-150.4477\\-120.1797\\-49\\-148.4187\\-116.2734\\-49\\-146.0539\\-112.3672\\-49\\-143.4471\\-108.4609\\-49\\-142.3222\\-106.5078\\-49\\-139.6484\\-103.195\\-49\\-137.6953\\-100.9215\\-49\\-135.7422\\-98.7592\\-49\\-133.7891\\-96.70463\\-49\\-127.9297\\-91.95137\\-49\\-125.9766\\-90.63867\\-49\\-124.0234\\-89.6263\\-49\\-122.0703\\-88.41024\\-49\\-120.1172\\-87.7443\\-49\\-118.1641\\-86.55054\\-49\\-116.2109\\-85.61819\\-49\\-114.2578\\-84.54977\\-49\\-112.3047\\-83.80991\\-49\\-110.3516\\-83.40533\\-49\\-108.3984\\-82.45465\\-49\\-104.4922\\-81.44525\\-49\\-102.5391\\-80.74826\\-49\\-100.5859\\-80.39538\\-49\\-98.63281\\-79.76447\\-49\\-96.67969\\-79.30476\\-49\\-92.77344\\-78.64601\\-49\\-90.82031\\-78.20558\\-49\\-84.96094\\-77.57632\\-49\\-81.05469\\-76.70483\\-49\\-79.10156\\-76.51141\\-49\\-73.24219\\-76.26528\\-49\\-63.47656\\-76.32907\\-49\\-55.66406\\-76.57904\\-49\\-51.75781\\-77.06233\\-49\\-45.89844\\-77.70241\\-49\\-40.03906\\-78.21691\\-49\\-36.13281\\-78.8601\\-49\\-30.27344\\-80.23418\\-49\\-28.32031\\-80.62212\\-49\\-26.36719\\-81.42757\\-49\\-22.46094\\-82.77958\\-49\\-18.55469\\-84.98275\\-49\\-15.65213\\-86.97656\\-49\\-13.14252\\-88.92969\\-49\\-10.74219\\-91.05371\\-49\\-8.580396\\-92.83594\\-49\\-4.882813\\-96.38638\\-49\\-2.929688\\-98.34654\\-49\\-0.9765625\\-99.75326\\-49\\0.9765625\\-99.51804\\-49\\5.836839\\-94.78906\\-49\\7.686038\\-92.83594\\-49\\8.789063\\-91.79999\\-49\\10.74219\\-89.78667\\-49\\12.69531\\-87.95313\\-49\\14.64844\\-86.26318\\-49\\16.60156\\-84.75895\\-49\\20.50781\\-82.27435\\-49\\22.46094\\-81.38632\\-49\\24.41406\\-80.36051\\-49\\27.13341\\-79.16406\\-49\\30.27344\\-77.96069\\-49\\34.17969\\-76.65384\\-49\\36.13281\\-76.25269\\-49\\40.03906\\-75.74609\\-49\\41.99219\\-75.2146\\-49\\43.94531\\-74.79173\\-49\\45.89844\\-74.56026\\-49\\49.80469\\-74.34839\\-49\\51.75781\\-74.29324\\-49\\57.61719\\-74.2339\\-49\\63.47656\\-74.29309\\-49\\69.33594\\-74.54341\\-49\\73.24219\\-74.79868\\-49\\75.19531\\-74.99792\\-49\\79.10156\\-75.74286\\-49\\83.00781\\-76.04024\\-49\\86.91406\\-76.47852\\-49\\88.86719\\-76.77181\\-49\\92.77344\\-77.77339\\-49\\94.72656\\-78.07297\\-49\\96.67969\\-78.53931\\-49\\100.5859\\-79.77274\\-49\\104.4922\\-80.81614\\-49\\106.4453\\-81.74039\\-49\\108.3984\\-82.28036\\-49\\112.3047\\-83.98546\\-49\\116.2109\\-86.07741\\-49\\118.1641\\-86.92143\\-49\\121.7413\\-88.92969\\-49\\124.0234\\-90.34834\\-49\\124.6665\\-90.88281\\-49\\127.4619\\-92.83594\\-49\\127.9297\\-93.25446\\-49\\129.8828\\-94.44135\\-49\\131.8359\\-95.95164\\-49\\134.8524\\-98.69531\\-49\\137.6953\\-101.5424\\-49\\140.5128\\-104.5547\\-49\\141.9519\\-106.5078\\-49\\143.0486\\-108.4609\\-49\\143.5547\\-109.1684\\-49\\145.3501\\-112.3672\\-49\\147.903\\-116.2734\\-49\\148.6962\\-118.2266\\-49\\149.8256\\-120.1797\\-49\\150.5445\\-122.1328\\-49\\151.6317\\-124.0859\\-49\\152.433\\-126.0391\\-49\\153.4577\\-127.9922\\-49\\154.9064\\-131.8984\\-49\\155.7885\\-133.8516\\-49\\156.765\\-137.7578\\-49\\157.6666\\-139.7109\\-49\\158.6853\\-143.6172\\-49\\159.4746\\-145.5703\\-49\\159.9496\\-147.5234\\-49\\160.7281\\-151.4297\\-49\\161.3004\\-153.3828\\-49\\161.6953\\-155.3359\\-49\\161.9177\\-157.2891\\-49\\162.4042\\-163.1484\\-49\\162.86\\-167.0547\\-49\\163.1705\\-169.0078\\-49\\163.6047\\-172.9141\\-49\\163.8929\\-178.7734\\-49\\164.0724\\-186.5859\\-49\\164.0877\\-192.4453\\-49\\164.0224\\-200.2578\\-49\\163.9091\\-206.1172\\-49\\163.7684\\-210.0234\\-49\\163.5164\\-213.9297\\-49\\162.6009\\-219.7891\\-49\\162.1813\\-223.6953\\-49\\161.6371\\-227.6016\\-49\\160.3636\\-231.5078\\-49\\159.8638\\-233.4609\\-49\\158.9745\\-235.4141\\-49\\157.5235\\-239.3203\\-49\\156.5125\\-241.2734\\-49\\155.8871\\-243.2266\\-49\\154.7786\\-245.1797\\-49\\153.9733\\-247.1328\\-49\\152.6184\\-249.0859\\-49\\151.3672\\-251.1799\\-49\\149.4141\\-254.2598\\-49\\147.6435\\-256.8984\\-49\\146.0341\\-258.8516\\-49\\144.3207\\-260.8047\\-49\\143.5547\\-261.8281\\-49\\139.6484\\-266.0699\\-49\\137.6953\\-268.0398\\-49\\135.0644\\-270.5703\\-49\\133.7891\\-271.6873\\-49\\131.8359\\-273.5698\\-49\\129.8828\\-275.2725\\-49\\127.9297\\-276.8106\\-49\\125.7951\\-278.3828\\-49\\122.0703\\-281.2608\\-49\\120.1172\\-282.6641\\-49\\118.1641\\-283.6967\\-49\\117.4762\\-284.2422\\-49\\114.2578\\-286.4984\\-49\\112.3047\\-287.4869\\-49\\110.3516\\-288.7303\\-49\\108.3984\\-289.4655\\-49\\106.4453\\-290.6571\\-49\\104.4922\\-291.4173\\-49\\102.5391\\-292.5783\\-49\\100.5859\\-293.274\\-49\\98.63281\\-294.1644\\-49\\96.67969\\-294.7903\\-49\\94.72656\\-295.198\\-49\\92.77344\\-295.7298\\-49\\90.82031\\-296.4001\\-49\\88.86719\\-296.791\\-49\\84.96094\\-297.3365\\-49\\81.05469\\-298.2502\\-49\\79.10156\\-298.4978\\-49\\75.19531\\-298.774\\-49\\71.28906\\-298.871\\-49\\67.38281\\-298.7617\\-49\\63.47656\\-298.3877\\-49\\61.52344\\-297.9662\\-49\\59.57031\\-297.3985\\-49\\55.66406\\-296.6737\\-49\\53.71094\\-296.0763\\-49\\51.75781\\-295.3036\\-49\\49.80469\\-294.8355\\-49\\47.85156\\-294.0463\\-49\\43.94531\\-292.257\\-49\\41.99219\\-291.1599\\-49\\40.03906\\-290.2913\\-49\\38.08594\\-289.2532\\-49\\36.13281\\-288.474\\-49\\34.17969\\-287.2756\\-49\\32.22656\\-286.3921\\-49\\30.27344\\-285.1799\\-49\\28.32031\\-284.1061\\-49\\26.36719\\-283.2594\\-49\\24.41406\\-282.8248\\-49\\20.50781\\-282.4101\\-49\\16.60156\\-282.3636\\-49\\10.74219\\-282.6297\\-49\\6.835938\\-282.9245\\-49\\2.929688\\-283.0279\\-49\\0.9765625\\-283.2161\\-49\\-4.882813\\-283.3084\\-49\\-8.789063\\-283.3152\\-49\\-14.64844\\-283.2379\\-49\\-20.50781\\-283.2317\\-49\\-22.46094\\-283.3188\\-49\\-24.41406\\-283.5131\\-49\\-26.36719\\-284.0437\\-49\\-26.69711\\-284.2422\\-49\\-30.27344\\-285.7605\\-49\\-32.22656\\-286.9006\\-49\\-34.17969\\-287.7398\\-49\\-36.13281\\-288.827\\-49\\-38.08594\\-289.4742\\-49\\-40.03906\\-290.675\\-49\\-41.99219\\-291.4924\\-49\\-43.94531\\-292.7039\\-49\\-45.89844\\-293.4757\\-49\\-47.85156\\-294.5317\\-49\\-49.80469\\-295.1057\\-49\\-51.75781\\-295.7855\\-49\\-53.71094\\-296.6331\\-49\\-57.61719\\-297.562\\-49\\-59.57031\\-298.2709\\-49\\-61.52344\\-298.6687\\-49\\-63.47656\\-298.9654\\-49\\-69.33594\\-299.689\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "302"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "102"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-298.1959\\-47\\-88.86719\\-297.4765\\-47\\-92.77344\\-296.6294\\-47\\-94.72656\\-295.8148\\-47\\-96.67969\\-295.137\\-47\\-98.63281\\-294.5849\\-47\\-100.5859\\-293.5226\\-47\\-102.5391\\-292.6964\\-47\\-104.4922\\-291.3711\\-47\\-106.4453\\-290.4489\\-47\\-108.3984\\-289.2089\\-47\\-110.3516\\-288.2675\\-47\\-112.3047\\-287.0563\\-47\\-114.2578\\-285.6563\\-47\\-118.1641\\-283.1198\\-47\\-120.1172\\-281.6105\\-47\\-122.0229\\-280.3359\\-47\\-124.2575\\-278.3828\\-47\\-127.9297\\-275.3555\\-47\\-129.8828\\-273.5393\\-47\\-130.823\\-272.5234\\-47\\-132.8929\\-270.5703\\-47\\-135.7422\\-267.7196\\-47\\-139.6484\\-263.2874\\-47\\-140.178\\-262.7578\\-47\\-141.7512\\-260.8047\\-47\\-142.9102\\-258.8516\\-47\\-145.9227\\-254.9453\\-47\\-148.4254\\-251.0391\\-47\\-149.5909\\-249.0859\\-47\\-150.4946\\-247.1328\\-47\\-151.7193\\-245.1797\\-47\\-152.6355\\-243.2266\\-47\\-153.8269\\-241.2734\\-47\\-154.5715\\-239.3203\\-47\\-155.5822\\-237.3672\\-47\\-156.8129\\-233.4609\\-47\\-157.8348\\-231.5078\\-47\\-158.4273\\-229.5547\\-47\\-159.3541\\-227.6016\\-47\\-159.9969\\-225.6484\\-47\\-160.5269\\-223.6953\\-47\\-161.2859\\-221.7422\\-47\\-161.8304\\-219.7891\\-47\\-162.4493\\-215.8828\\-47\\-162.927\\-213.9297\\-47\\-163.5391\\-211.9766\\-47\\-163.8892\\-210.0234\\-47\\-164.3899\\-206.1172\\-47\\-164.7475\\-204.1641\\-47\\-165.2261\\-202.2109\\-47\\-165.7395\\-198.3047\\-47\\-166.0557\\-194.3984\\-47\\-166.4568\\-186.5859\\-47\\-166.5193\\-182.6797\\-47\\-166.4005\\-176.8203\\-47\\-166.2332\\-172.9141\\-47\\-165.9958\\-169.0078\\-47\\-165.4358\\-163.1484\\-47\\-164.5508\\-159.2422\\-47\\-163.6766\\-153.3828\\-47\\-162.4912\\-149.4766\\-47\\-161.7352\\-145.5703\\-47\\-160.2654\\-141.6641\\-47\\-159.6089\\-139.7109\\-47\\-158.5577\\-137.7578\\-47\\-157.8544\\-135.8047\\-47\\-156.7795\\-133.8516\\-47\\-156.1149\\-131.8984\\-47\\-154.315\\-127.9922\\-47\\-152.3198\\-124.0859\\-47\\-151.1875\\-122.1328\\-47\\-150.2557\\-120.1797\\-47\\-149.069\\-118.2266\\-47\\-148.2685\\-116.2734\\-47\\-146.9289\\-114.3203\\-47\\-145.861\\-112.3672\\-47\\-145.5078\\-111.9144\\-47\\-143.5547\\-108.8423\\-47\\-143.2419\\-108.4609\\-47\\-142.1666\\-106.5078\\-47\\-139.6484\\-103.2905\\-47\\-137.6953\\-101.0116\\-47\\-133.7891\\-96.69\\-47\\-127.9297\\-91.91401\\-47\\-125.9766\\-90.55506\\-47\\-124.0234\\-89.52611\\-47\\-122.0703\\-88.31255\\-47\\-120.1172\\-87.62542\\-47\\-118.1641\\-86.374\\-47\\-115.8114\\-85.02344\\-47\\-114.2578\\-84.2407\\-47\\-110.3516\\-83.23307\\-47\\-108.3984\\-82.31448\\-47\\-106.4453\\-81.89458\\-47\\-102.5391\\-80.57539\\-47\\-100.5859\\-80.30436\\-47\\-98.63281\\-79.56571\\-47\\-96.67969\\-79.14135\\-47\\-92.77344\\-78.53748\\-47\\-90.82031\\-78.07832\\-47\\-86.91406\\-77.59505\\-47\\-83.00781\\-76.90576\\-47\\-81.05469\\-76.49756\\-47\\-75.19531\\-76.16068\\-47\\-63.47656\\-76.20565\\-47\\-55.66406\\-76.35275\\-47\\-53.71094\\-76.47074\\-47\\-47.85156\\-77.04456\\-47\\-43.94531\\-77.56544\\-47\\-40.03906\\-77.91954\\-47\\-34.17969\\-78.79785\\-47\\-30.27344\\-79.89957\\-47\\-28.32031\\-80.30338\\-47\\-26.36719\\-80.85628\\-47\\-24.41406\\-81.7487\\-47\\-22.46094\\-82.3363\\-47\\-18.55469\\-84.37891\\-47\\-16.60156\\-85.80338\\-47\\-14.85352\\-86.97656\\-47\\-12.69531\\-88.60679\\-47\\-7.842319\\-92.83594\\-47\\-4.882813\\-95.72347\\-47\\-2.929688\\-97.70547\\-47\\-0.9765625\\-99.27579\\-47\\0.9765625\\-98.91144\\-47\\2.929688\\-97.15535\\-47\\5.419121\\-94.78906\\-47\\10.74219\\-89.35648\\-47\\13.29304\\-86.97656\\-47\\15.625\\-85.02344\\-47\\18.55469\\-83.01238\\-47\\22.46094\\-80.80146\\-47\\24.41406\\-80.06403\\-47\\26.36719\\-79.05556\\-47\\32.22656\\-76.88541\\-47\\34.17969\\-76.38366\\-47\\38.08594\\-75.74609\\-47\\41.99219\\-74.72974\\-47\\45.89844\\-74.39868\\-47\\49.80469\\-74.23905\\-47\\51.75781\\-74.04389\\-47\\55.66406\\-73.98553\\-47\\57.61719\\-73.29706\\-47\\59.57031\\-73.83397\\-47\\63.47656\\-74.08723\\-47\\65.42969\\-74.28125\\-47\\73.24219\\-74.618\\-47\\77.14844\\-74.99792\\-47\\79.10156\\-75.43059\\-47\\81.05469\\-75.76205\\-47\\88.86719\\-76.56196\\-47\\90.82031\\-77.00719\\-47\\92.77344\\-77.56544\\-47\\96.67969\\-78.35123\\-47\\98.63281\\-78.92834\\-47\\100.5859\\-79.61108\\-47\\104.4922\\-80.65248\\-47\\106.4453\\-81.59869\\-47\\108.3984\\-82.16089\\-47\\110.653\\-83.07031\\-47\\114.2578\\-84.81174\\-47\\116.2109\\-85.96449\\-47\\118.1641\\-86.83273\\-47\\122.0129\\-88.92969\\-47\\124.0234\\-90.21299\\-47\\127.9297\\-93.04858\\-47\\129.8828\\-94.3478\\-47\\131.8359\\-95.90054\\-47\\134.9224\\-98.69531\\-47\\139.6484\\-103.6825\\-47\\140.4001\\-104.5547\\-47\\141.8281\\-106.5078\\-47\\142.9478\\-108.4609\\-47\\144.1767\\-110.4141\\-47\\145.1546\\-112.3672\\-47\\145.5078\\-112.82\\-47\\147.6962\\-116.2734\\-47\\148.537\\-118.2266\\-47\\149.5469\\-120.1797\\-47\\151.2199\\-124.0859\\-47\\152.2113\\-126.0391\\-47\\153.9851\\-129.9453\\-47\\154.6203\\-131.8984\\-47\\155.5063\\-133.8516\\-47\\156.1044\\-135.8047\\-47\\156.5092\\-137.7578\\-47\\157.3073\\-139.7109\\-47\\157.9577\\-141.6641\\-47\\158.3932\\-143.6172\\-47\\159.7077\\-147.5234\\-47\\160.4576\\-151.4297\\-47\\161.4265\\-155.3359\\-47\\161.9555\\-159.2422\\-47\\162.5655\\-167.0547\\-47\\162.7698\\-169.0078\\-47\\163.3085\\-172.9141\\-47\\163.5164\\-174.8672\\-47\\163.7275\\-178.7734\\-47\\163.9252\\-186.5859\\-47\\163.9353\\-196.3516\\-47\\163.821\\-204.1641\\-47\\163.6882\\-208.0703\\-47\\163.4069\\-211.9766\\-47\\163.1995\\-213.9297\\-47\\162.6237\\-217.8359\\-47\\162.2532\\-221.7422\\-47\\161.7777\\-225.6484\\-47\\161.3787\\-227.6016\\-47\\160.6572\\-229.5547\\-47\\159.6144\\-233.4609\\-47\\158.6345\\-235.4141\\-47\\158.0067\\-237.3672\\-47\\157.0805\\-239.3203\\-47\\155.6396\\-243.2266\\-47\\154.5516\\-245.1797\\-47\\153.7019\\-247.1328\\-47\\151.3672\\-250.6359\\-47\\151.0392\\-251.0391\\-47\\150.0116\\-252.9922\\-47\\147.4609\\-256.5207\\-47\\143.5547\\-261.3843\\-47\\140.5679\\-264.7109\\-47\\137.6953\\-267.6406\\-47\\134.6354\\-270.5703\\-47\\133.7891\\-271.2464\\-47\\131.8359\\-273.1413\\-47\\129.8828\\-274.8983\\-47\\125.9766\\-277.7513\\-47\\122.0703\\-280.9405\\-47\\120.1172\\-282.0983\\-47\\118.1641\\-283.372\\-47\\116.2109\\-284.7558\\-47\\110.3516\\-288.2823\\-47\\108.3984\\-289.1614\\-47\\102.5391\\-292.0159\\-47\\100.5859\\-292.9279\\-47\\98.63281\\-293.6031\\-47\\96.67969\\-294.4529\\-47\\94.72656\\-294.9484\\-47\\92.77344\\-295.3418\\-47\\90.82031\\-295.8594\\-47\\88.86719\\-296.493\\-47\\86.91406\\-296.8319\\-47\\83.00781\\-297.34\\-47\\79.10156\\-298.1011\\-47\\77.14844\\-298.367\\-47\\75.19531\\-298.5277\\-47\\71.28906\\-298.6275\\-47\\67.38281\\-298.5384\\-47\\65.42969\\-298.376\\-47\\63.47656\\-298.0361\\-47\\59.57031\\-297.1776\\-47\\55.66406\\-296.511\\-47\\53.71094\\-295.7731\\-47\\51.75781\\-295.1906\\-47\\49.80469\\-294.7493\\-47\\43.94531\\-292.2303\\-47\\41.99219\\-291.1804\\-47\\40.03906\\-290.4314\\-47\\38.08594\\-289.3584\\-47\\36.13281\\-288.6606\\-47\\34.17969\\-287.411\\-47\\32.22656\\-286.7825\\-47\\30.27344\\-285.571\\-47\\27.06262\\-284.2422\\-47\\26.36719\\-283.8945\\-47\\24.41406\\-283.4935\\-47\\20.50781\\-283.3443\\-47\\16.60156\\-283.3673\\-47\\4.882813\\-284.2333\\-47\\2.929688\\-284.3167\\-47\\0.9765625\\-284.5201\\-47\\-2.929688\\-284.62\\-47\\-6.835938\\-284.6314\\-47\\-14.64844\\-284.4901\\-47\\-20.50781\\-284.419\\-47\\-24.41406\\-284.6152\\-47\\-26.36719\\-284.927\\-47\\-28.32031\\-285.4225\\-47\\-30.27344\\-286.4147\\-47\\-32.22656\\-287.1839\\-47\\-36.13281\\-288.9407\\-47\\-38.08594\\-289.5576\\-47\\-40.03906\\-290.7435\\-47\\-41.99219\\-291.5043\\-47\\-43.94531\\-292.6889\\-47\\-45.89844\\-293.4194\\-47\\-47.85156\\-294.4499\\-47\\-49.80469\\-294.9489\\-47\\-51.75781\\-295.6026\\-47\\-53.71094\\-296.5021\\-47\\-57.61719\\-297.3449\\-47\\-59.57031\\-297.9948\\-47\\-61.52344\\-298.5244\\-47\\-63.47656\\-298.8121\\-47\\-67.38281\\-299.2632\\-47\\-71.28906\\-299.5461\\-47\\-73.24219\\-299.6027\\-47\\-77.14844\\-299.4434\\-47\\-81.05469\\-299.1036\\-47\\-84.96094\\-298.6109\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "308"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "103"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.96094\\-298.439\\-45\\-88.86719\\-297.2687\\-45\\-92.77344\\-296.4299\\-45\\-94.72656\\-295.5337\\-45\\-98.63281\\-294.3586\\-45\\-100.5859\\-293.2809\\-45\\-102.5391\\-292.4264\\-45\\-104.4922\\-291.1436\\-45\\-108.3984\\-289.0587\\-45\\-112.3047\\-286.8444\\-45\\-116.2109\\-284.0469\\-45\\-118.1641\\-282.9069\\-45\\-121.6446\\-280.3359\\-45\\-124.0234\\-278.3083\\-45\\-127.9297\\-275.219\\-45\\-129.8828\\-273.3922\\-45\\-130.6702\\-272.5234\\-45\\-134.7587\\-268.6172\\-45\\-135.7422\\-267.5904\\-45\\-139.6484\\-263.1323\\-45\\-141.6016\\-260.7549\\-45\\-142.8287\\-258.8516\\-45\\-145.7802\\-254.9453\\-45\\-147.0018\\-252.9922\\-45\\-148.3215\\-251.0391\\-45\\-149.4141\\-249.0523\\-45\\-150.3683\\-247.1328\\-45\\-151.5336\\-245.1797\\-45\\-152.5018\\-243.2266\\-45\\-153.6631\\-241.2734\\-45\\-154.4372\\-239.3203\\-45\\-155.3601\\-237.3672\\-45\\-156.1302\\-235.4141\\-45\\-156.6147\\-233.4609\\-45\\-157.6381\\-231.5078\\-45\\-158.2489\\-229.5547\\-45\\-158.9886\\-227.6016\\-45\\-159.8433\\-225.6484\\-45\\-160.3308\\-223.6953\\-45\\-161.6371\\-219.7891\\-45\\-162.0081\\-217.8359\\-45\\-162.6206\\-213.9297\\-45\\-163.2425\\-211.9766\\-45\\-163.7042\\-210.0234\\-45\\-164.452\\-204.1641\\-45\\-164.7727\\-202.2109\\-45\\-165.2261\\-200.2578\\-45\\-165.7092\\-196.3516\\-45\\-165.9655\\-192.4453\\-45\\-166.1486\\-188.5391\\-45\\-166.2439\\-184.6328\\-45\\-166.2638\\-180.7266\\-45\\-166.1123\\-174.8672\\-45\\-165.921\\-170.9609\\-45\\-165.638\\-167.0547\\-45\\-165.426\\-165.1016\\-45\\-164.6343\\-161.1953\\-45\\-164.3273\\-159.2422\\-45\\-163.8184\\-155.3359\\-45\\-163.4069\\-153.3828\\-45\\-162.7417\\-151.4297\\-45\\-161.9828\\-147.5234\\-45\\-161.4722\\-145.5703\\-45\\-160.6477\\-143.6172\\-45\\-160.0388\\-141.6641\\-45\\-159.2323\\-139.7109\\-45\\-158.3029\\-137.7578\\-45\\-157.5731\\-135.8047\\-45\\-156.5192\\-133.8516\\-45\\-155.905\\-131.8984\\-45\\-154.8462\\-129.9453\\-45\\-154.1004\\-127.9922\\-45\\-152.9803\\-126.0391\\-45\\-152.024\\-124.0859\\-45\\-150.8082\\-122.1328\\-45\\-150.0105\\-120.1797\\-45\\-148.8321\\-118.2266\\-45\\-148.0614\\-116.2734\\-45\\-146.6809\\-114.3203\\-45\\-145.5917\\-112.3672\\-45\\-143.5547\\-109.1213\\-45\\-143.0486\\-108.4609\\-45\\-141.9493\\-106.5078\\-45\\-140.5291\\-104.5547\\-45\\-137.6953\\-101.1288\\-45\\-133.7801\\-96.74219\\-45\\-129.1101\\-92.83594\\-45\\-125.9766\\-90.5331\\-45\\-122.0703\\-88.19228\\-45\\-120.1172\\-87.38346\\-45\\-118.1641\\-86.29014\\-45\\-116.2109\\-85.0695\\-45\\-114.2578\\-84.1048\\-45\\-112.3047\\-83.80599\\-45\\-108.3984\\-82.20151\\-45\\-106.4453\\-81.78816\\-45\\-104.4922\\-80.8349\\-45\\-102.5391\\-80.45564\\-45\\-100.5859\\-80.22481\\-45\\-98.63281\\-79.51283\\-45\\-96.67969\\-79.02863\\-45\\-88.86719\\-77.69598\\-45\\-86.5009\\-77.21094\\-45\\-83.00781\\-76.6014\\-45\\-81.05469\\-76.37666\\-45\\-75.19531\\-76.08367\\-45\\-65.42969\\-76.04498\\-45\\-61.52344\\-76.07064\\-45\\-55.66406\\-76.21126\\-45\\-51.75781\\-76.35181\\-45\\-45.89844\\-76.84644\\-45\\-41.99219\\-77.39314\\-45\\-38.08594\\-77.87209\\-45\\-34.17969\\-78.43451\\-45\\-32.22656\\-78.87109\\-45\\-30.27344\\-79.51081\\-45\\-26.36719\\-80.4894\\-45\\-24.41406\\-81.35187\\-45\\-20.50781\\-82.8094\\-45\\-18.55469\\-83.97127\\-45\\-14.64844\\-86.49179\\-45\\-12.69531\\-88.06084\\-45\\-9.447675\\-90.88281\\-45\\-7.284841\\-92.83594\\-45\\-5.271709\\-94.78906\\-45\\-2.929688\\-96.95824\\-45\\-0.9765625\\-98.53372\\-45\\0.9765625\\-98.18498\\-45\\2.824768\\-96.74219\\-45\\4.882813\\-94.88412\\-45\\6.835938\\-92.98686\\-45\\8.708294\\-90.88281\\-45\\10.74219\\-88.92148\\-45\\15.14089\\-85.02344\\-45\\18.55469\\-82.54716\\-45\\20.50781\\-81.58739\\-45\\22.46094\\-80.4894\\-45\\24.41406\\-79.68442\\-45\\26.36719\\-78.69505\\-45\\32.22656\\-76.60059\\-45\\36.13281\\-75.86024\\-45\\40.03906\\-74.78817\\-45\\41.99219\\-74.5303\\-45\\47.85156\\-74.20568\\-45\\51.75781\\-73.11768\\-45\\55.66406\\-73.06896\\-45\\57.61719\\-72.87\\-45\\63.47656\\-73.26713\\-45\\65.42969\\-74.05338\\-45\\67.38281\\-74.2636\\-45\\73.24219\\-74.51103\\-45\\77.14844\\-74.78761\\-45\\79.10156\\-75.02757\\-45\\83.00781\\-75.83487\\-45\\88.86719\\-76.39515\\-45\\90.82031\\-76.77181\\-45\\92.77344\\-77.3515\\-45\\96.67969\\-78.1992\\-45\\98.63281\\-78.75188\\-45\\102.5391\\-79.99322\\-45\\104.4922\\-80.52359\\-45\\106.4453\\-81.40355\\-45\\110.3516\\-82.70941\\-45\\112.3047\\-83.76701\\-45\\114.2578\\-84.67692\\-45\\116.2109\\-85.86979\\-45\\118.1641\\-86.73785\\-45\\120.1172\\-87.86157\\-45\\122.0703\\-88.81155\\-45\\124.0234\\-90.11466\\-45\\125.9766\\-91.5603\\-45\\127.9297\\-92.82831\\-45\\129.8828\\-94.23404\\-45\\131.8359\\-95.79733\\-45\\134.9567\\-98.69531\\-45\\137.6953\\-101.625\\-45\\139.6484\\-103.8125\\-45\\141.66\\-106.5078\\-45\\142.78\\-108.4609\\-45\\144.043\\-110.4141\\-45\\144.9653\\-112.3672\\-45\\146.2995\\-114.3203\\-45\\147.4609\\-116.3847\\-45\\148.3704\\-118.2266\\-45\\149.2048\\-120.1797\\-45\\150.1749\\-122.1328\\-45\\150.8625\\-124.0859\\-45\\151.9686\\-126.0391\\-45\\152.7123\\-127.9922\\-45\\153.7352\\-129.9453\\-45\\154.3969\\-131.8984\\-45\\155.9181\\-135.8047\\-45\\156.3329\\-137.7578\\-45\\156.8823\\-139.7109\\-45\\157.7002\\-141.6641\\-45\\158.6275\\-145.5703\\-45\\159.3667\\-147.5234\\-45\\159.8809\\-149.4766\\-45\\160.5756\\-153.3828\\-45\\161.4898\\-157.2891\\-45\\161.7859\\-159.2422\\-45\\162.2702\\-165.1016\\-45\\162.5216\\-169.0078\\-45\\162.9145\\-172.9141\\-45\\163.2136\\-174.8672\\-45\\163.4961\\-178.7734\\-45\\163.6684\\-182.6797\\-45\\163.7684\\-186.5859\\-45\\163.821\\-192.4453\\-45\\163.7897\\-196.3516\\-45\\163.6431\\-204.1641\\-45\\163.4857\\-208.0703\\-45\\163.2957\\-210.0234\\-45\\162.6009\\-215.8828\\-45\\162.127\\-221.7422\\-45\\161.569\\-225.6484\\-45\\160.3933\\-229.5547\\-45\\159.9345\\-231.5078\\-45\\159.2319\\-233.4609\\-45\\158.3677\\-235.4141\\-45\\157.7919\\-237.3672\\-45\\156.735\\-239.3203\\-45\\156.1541\\-241.2734\\-45\\155.3141\\-243.2266\\-45\\153.3203\\-247.1218\\-45\\152.1403\\-249.0859\\-45\\150.714\\-251.0391\\-45\\149.7026\\-252.9922\\-45\\148.3398\\-254.9453\\-45\\145.0872\\-258.8516\\-45\\143.6406\\-260.8047\\-45\\141.9658\\-262.7578\\-45\\140.1367\\-264.7109\\-45\\137.6953\\-267.2106\\-45\\135.7422\\-269.1238\\-45\\129.742\\-274.4766\\-45\\124.7025\\-278.3828\\-45\\122.0703\\-280.5388\\-45\\120.1172\\-281.6617\\-45\\118.1641\\-283.0716\\-45\\114.2578\\-285.451\\-45\\112.3047\\-286.7996\\-45\\110.3516\\-287.7121\\-45\\108.3984\\-288.865\\-45\\106.4453\\-289.5352\\-45\\104.4922\\-290.7119\\-45\\102.5391\\-291.4413\\-45\\100.5859\\-292.5604\\-45\\98.63281\\-293.2013\\-45\\94.72656\\-294.6692\\-45\\90.82031\\-295.4265\\-45\\86.91406\\-296.5743\\-45\\79.10156\\-297.5753\\-45\\75.19531\\-298.1959\\-45\\73.24219\\-298.301\\-45\\69.33594\\-298.3488\\-45\\67.38281\\-298.2396\\-45\\59.57031\\-297.0002\\-45\\57.61719\\-296.527\\-45\\55.66406\\-295.9165\\-45\\53.71094\\-295.5552\\-45\\49.80469\\-294.6444\\-45\\47.85156\\-293.7916\\-45\\43.94531\\-292.2174\\-45\\41.99219\\-291.2256\\-45\\40.03906\\-290.5509\\-45\\38.08594\\-289.4652\\-45\\36.13281\\-288.8777\\-45\\34.17969\\-287.7981\\-45\\32.22656\\-287.0666\\-45\\28.32031\\-285.2655\\-45\\26.36719\\-284.8417\\-45\\24.41406\\-284.5724\\-45\\22.46094\\-284.4292\\-45\\18.55469\\-284.5993\\-45\\16.60156\\-284.4305\\-45\\14.64844\\-284.7768\\-45\\6.835938\\-285.3593\\-45\\0.9765625\\-285.6384\\-45\\-2.929688\\-285.707\\-45\\-6.835938\\-285.7188\\-45\\-10.74219\\-285.666\\-45\\-16.60156\\-285.537\\-45\\-22.46094\\-285.4594\\-45\\-24.41406\\-285.4845\\-45\\-26.36719\\-285.6558\\-45\\-28.2959\\-286.1953\\-45\\-32.22656\\-287.5258\\-45\\-34.17969\\-288.474\\-45\\-36.13281\\-288.9644\\-45\\-38.08594\\-289.6514\\-45\\-40.03906\\-290.8006\\-45\\-41.99219\\-291.5161\\-45\\-43.94531\\-292.6736\\-45\\-45.89844\\-293.3826\\-45\\-47.85156\\-294.3015\\-45\\-49.80469\\-294.6726\\-45\\-53.71094\\-296.3229\\-45\\-55.66406\\-296.8108\\-45\\-57.61719\\-297.1803\\-45\\-59.57031\\-297.6699\\-45\\-61.52344\\-298.3205\\-45\\-63.47656\\-298.654\\-45\\-67.38281\\-299.0724\\-45\\-69.33594\\-299.2216\\-45\\-73.24219\\-299.3554\\-45\\-77.14844\\-299.218\\-45\\-81.05469\\-298.9397\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "306"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "104"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.96094\\-298.1846\\-43\\-86.91406\\-297.5325\\-43\\-90.82031\\-296.752\\-43\\-92.77344\\-296.1607\\-43\\-94.72656\\-295.3203\\-43\\-96.67969\\-294.8388\\-43\\-98.63281\\-294.0621\\-43\\-102.4892\\-292.0547\\-43\\-104.4922\\-290.9394\\-43\\-106.4453\\-289.6821\\-43\\-108.3984\\-288.8934\\-43\\-110.3516\\-287.6236\\-43\\-112.3047\\-286.5873\\-43\\-112.7809\\-286.1953\\-43\\-115.6494\\-284.2422\\-43\\-116.2109\\-283.7609\\-43\\-118.1641\\-282.6696\\-43\\-120.1172\\-281.2882\\-43\\-124.0234\\-278.0324\\-43\\-127.9297\\-275.0555\\-43\\-129.8828\\-273.228\\-43\\-131.8359\\-271.257\\-43\\-134.6251\\-268.6172\\-43\\-136.4388\\-266.6641\\-43\\-139.6484\\-262.9419\\-43\\-141.6016\\-260.535\\-43\\-142.7493\\-258.8516\\-43\\-145.6026\\-254.9453\\-43\\-148.2212\\-251.0391\\-43\\-151.2806\\-245.1797\\-43\\-153.4819\\-241.2734\\-43\\-155.1285\\-237.3672\\-43\\-156.009\\-235.4141\\-43\\-156.4605\\-233.4609\\-43\\-157.4136\\-231.5078\\-43\\-158.7126\\-227.6016\\-43\\-159.641\\-225.6484\\-43\\-160.6924\\-221.7422\\-43\\-161.4285\\-219.7891\\-43\\-161.8622\\-217.8359\\-43\\-162.4122\\-213.9297\\-43\\-162.8454\\-211.9766\\-43\\-163.4404\\-210.0234\\-43\\-163.7967\\-208.0703\\-43\\-164.467\\-202.2109\\-43\\-165.1745\\-198.3047\\-43\\-165.4738\\-196.3516\\-43\\-165.7728\\-192.4453\\-43\\-165.9371\\-188.5391\\-43\\-166.0405\\-184.6328\\-43\\-166.0509\\-180.7266\\-43\\-165.9712\\-176.8203\\-43\\-165.8313\\-172.9141\\-43\\-165.5884\\-169.0078\\-43\\-165.0912\\-165.1016\\-43\\-164.668\\-163.1484\\-43\\-163.9058\\-157.2891\\-43\\-163.5866\\-155.3359\\-43\\-162.4796\\-151.4297\\-43\\-161.7942\\-147.5234\\-43\\-160.3639\\-143.6172\\-43\\-159.7802\\-141.6641\\-43\\-158.7904\\-139.7109\\-43\\-158.0585\\-137.7578\\-43\\-156.3099\\-133.8516\\-43\\-155.6396\\-131.8984\\-43\\-154.5954\\-129.9453\\-43\\-153.9112\\-127.9922\\-43\\-152.7158\\-126.0391\\-43\\-151.7488\\-124.0859\\-43\\-150.5503\\-122.1328\\-43\\-149.7659\\-120.1797\\-43\\-148.6574\\-118.2266\\-43\\-147.7841\\-116.2734\\-43\\-147.4609\\-115.8589\\-43\\-145.29\\-112.3672\\-43\\-143.5547\\-109.4375\\-43\\-142.8657\\-108.4609\\-43\\-141.7376\\-106.5078\\-43\\-140.384\\-104.5547\\-43\\-137.6953\\-101.2813\\-43\\-137.0915\\-100.6484\\-43\\-133.7891\\-96.8381\\-43\\-131.8359\\-95.10187\\-43\\-129.1167\\-92.83594\\-43\\-125.9766\\-90.51172\\-43\\-122.0703\\-88.13128\\-43\\-120.1172\\-87.28937\\-43\\-118.1641\\-86.25809\\-43\\-116.2109\\-85.05057\\-43\\-114.2578\\-84.14536\\-43\\-112.3047\\-83.79156\\-43\\-110.3516\\-82.89503\\-43\\-108.3984\\-82.14763\\-43\\-106.4453\\-81.69205\\-43\\-104.4922\\-80.63588\\-43\\-102.5391\\-80.36367\\-43\\-98.63281\\-79.46395\\-43\\-96.67969\\-78.95236\\-43\\-92.77344\\-78.20536\\-43\\-90.82031\\-77.89268\\-43\\-86.91406\\-77.00865\\-43\\-83.00781\\-76.40854\\-43\\-81.05469\\-76.25269\\-43\\-79.10156\\-76.21011\\-43\\-75.19531\\-75.99634\\-43\\-69.33594\\-75.90271\\-43\\-63.47656\\-75.85635\\-43\\-51.75781\\-76.17519\\-43\\-47.85156\\-76.36584\\-43\\-43.94531\\-76.70286\\-43\\-40.19326\\-77.21094\\-43\\-34.17969\\-78.14822\\-43\\-32.22656\\-78.52619\\-43\\-30.27344\\-79.00247\\-43\\-28.32031\\-79.6756\\-43\\-24.41406\\-80.84345\\-43\\-22.46094\\-81.80014\\-43\\-20.50781\\-82.40835\\-43\\-16.60156\\-84.67838\\-43\\-13.42989\\-86.97656\\-43\\-8.789063\\-90.77431\\-43\\-2.339377\\-96.74219\\-43\\-0.9765625\\-97.90536\\-43\\0.9765625\\-97.74681\\-43\\2.342224\\-96.74219\\-43\\4.451308\\-94.78906\\-43\\6.835938\\-92.47343\\-43\\8.283944\\-90.88281\\-43\\10.74219\\-88.42305\\-43\\14.64844\\-84.91493\\-43\\18.55469\\-82.21745\\-43\\20.62196\\-81.11719\\-43\\22.46094\\-80.28424\\-43\\24.59039\\-79.16406\\-43\\26.36719\\-78.38873\\-43\\30.27344\\-76.94273\\-43\\32.22656\\-76.35569\\-43\\36.13281\\-75.67921\\-43\\38.08594\\-74.86565\\-43\\40.03906\\-74.59106\\-43\\43.94531\\-74.31102\\-43\\47.94922\\-73.30469\\-43\\49.80469\\-72.94787\\-43\\51.75781\\-72.84272\\-43\\57.61719\\-72.81641\\-43\\63.47656\\-72.88874\\-43\\67.38281\\-73.41319\\-43\\69.33594\\-74.24616\\-43\\77.14844\\-74.65002\\-43\\81.05469\\-75.10057\\-43\\83.00781\\-75.71004\\-43\\86.91406\\-76.116\\-43\\88.86719\\-76.26379\\-43\\90.82031\\-76.56641\\-43\\94.72656\\-77.66412\\-43\\96.67969\\-78.05054\\-43\\100.4519\\-79.16406\\-43\\102.5391\\-79.93693\\-43\\104.4922\\-80.42749\\-43\\108.3984\\-81.96395\\-43\\110.3516\\-82.59213\\-43\\112.3047\\-83.65379\\-43\\114.2578\\-84.54382\\-43\\116.2109\\-85.78693\\-43\\118.1641\\-86.62828\\-43\\120.1172\\-87.79343\\-43\\122.0703\\-88.67987\\-43\\125.9766\\-91.465\\-43\\127.9297\\-92.7005\\-43\\129.8828\\-94.15395\\-43\\131.8359\\-95.72065\\-43\\134.94\\-98.69531\\-43\\138.5102\\-102.6016\\-43\\140.1054\\-104.5547\\-43\\141.6016\\-106.7883\\-43\\143.806\\-110.4141\\-43\\144.7873\\-112.3672\\-43\\146.1009\\-114.3203\\-43\\147.0744\\-116.2734\\-43\\148.2117\\-118.2266\\-43\\148.9223\\-120.1797\\-43\\149.9767\\-122.1328\\-43\\150.6037\\-124.0859\\-43\\151.6433\\-126.0391\\-43\\152.4442\\-127.9922\\-43\\153.3874\\-129.9453\\-43\\154.1969\\-131.8984\\-43\\154.7584\\-133.8516\\-43\\155.7098\\-135.8047\\-43\\156.561\\-139.7109\\-43\\157.3351\\-141.6641\\-43\\157.9307\\-143.6172\\-43\\158.3522\\-145.5703\\-43\\158.8787\\-147.5234\\-43\\159.6354\\-149.4766\\-43\\160.6633\\-155.3359\\-43\\161.5457\\-159.2422\\-43\\161.9792\\-163.1484\\-43\\162.127\\-165.1016\\-43\\162.6107\\-172.9141\\-43\\163.0014\\-176.8203\\-43\\163.4294\\-182.6797\\-43\\163.6047\\-188.5391\\-43\\163.6345\\-194.3984\\-43\\163.5264\\-200.2578\\-43\\163.3954\\-204.1641\\-43\\163.1557\\-208.0703\\-43\\162.9132\\-210.0234\\-43\\162.5562\\-213.9297\\-43\\162.1449\\-219.7891\\-43\\161.7076\\-223.6953\\-43\\161.2723\\-225.6484\\-43\\160.6912\\-227.6016\\-43\\159.7139\\-231.5078\\-43\\158.7978\\-233.4609\\-43\\157.4989\\-237.3672\\-43\\156.5016\\-239.3203\\-43\\155.9773\\-241.2734\\-43\\154.9624\\-243.2266\\-43\\154.1303\\-245.1797\\-43\\152.9123\\-247.1328\\-43\\151.8586\\-249.0859\\-43\\150.4833\\-251.0391\\-43\\148.0781\\-254.9453\\-43\\144.7178\\-258.8516\\-43\\143.5547\\-260.3484\\-43\\141.6016\\-262.6403\\-43\\139.6484\\-264.5857\\-43\\135.7422\\-268.6772\\-43\\131.8359\\-272.0214\\-43\\129.8828\\-273.837\\-43\\125.9766\\-277.0616\\-43\\124.1388\\-278.3828\\-43\\121.6175\\-280.3359\\-43\\118.1641\\-282.6869\\-43\\116.2109\\-283.6989\\-43\\115.5282\\-284.2422\\-43\\112.3047\\-286.3369\\-43\\110.3516\\-287.3226\\-43\\108.3984\\-288.5003\\-43\\106.4453\\-289.2288\\-43\\104.4922\\-290.2255\\-43\\98.63281\\-292.8478\\-43\\96.67969\\-293.4472\\-43\\94.72656\\-294.3035\\-43\\92.77344\\-294.8096\\-43\\88.86719\\-295.5444\\-43\\86.91406\\-296.1852\\-43\\84.96094\\-296.5862\\-43\\83.00781\\-296.8482\\-43\\79.10156\\-297.2205\\-43\\75.19531\\-297.6822\\-43\\73.24219\\-297.8598\\-43\\69.33594\\-297.9368\\-43\\59.57031\\-296.8492\\-43\\55.66406\\-295.3227\\-43\\53.71094\\-295.3801\\-43\\49.80469\\-294.5341\\-43\\47.85156\\-293.6604\\-43\\43.94531\\-292.2291\\-43\\41.99219\\-291.2603\\-43\\40.03906\\-290.6572\\-43\\38.08594\\-289.6003\\-43\\36.13281\\-289.0411\\-43\\34.17969\\-288.3225\\-43\\32.22656\\-287.3561\\-43\\30.27344\\-286.733\\-43\\28.32031\\-285.9758\\-43\\26.36719\\-285.5379\\-43\\22.46094\\-285.317\\-43\\18.55469\\-285.5555\\-43\\16.60156\\-285.5321\\-43\\14.64844\\-285.8281\\-43\\10.74219\\-286.218\\-43\\8.789063\\-286.4795\\-43\\4.882813\\-286.7311\\-43\\0.9765625\\-286.8919\\-43\\-2.929688\\-286.9622\\-43\\-6.835938\\-286.9831\\-43\\-16.60156\\-286.8396\\-43\\-24.41406\\-286.6698\\-43\\-26.36719\\-286.7131\\-43\\-28.32031\\-286.9609\\-43\\-30.27344\\-287.3387\\-43\\-32.22656\\-287.8875\\-43\\-34.17969\\-288.6509\\-43\\-36.13281\\-288.9449\\-43\\-38.08594\\-289.7912\\-43\\-40.03906\\-290.8692\\-43\\-41.99219\\-291.5398\\-43\\-43.94531\\-292.67\\-43\\-45.89844\\-293.3587\\-43\\-47.85156\\-294.1834\\-43\\-49.80469\\-294.5616\\-43\\-53.71094\\-296.1048\\-43\\-55.66406\\-296.6849\\-43\\-59.57031\\-297.4197\\-43\\-61.52344\\-298.0495\\-43\\-63.47656\\-298.4792\\-43\\-67.38281\\-298.9102\\-43\\-69.33594\\-299.0323\\-43\\-73.24219\\-299.1401\\-43\\-77.14844\\-299.0323\\-43\\-81.05469\\-298.7752\\-43\\-83.00781\\-298.5634\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "313"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "105"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-83.00781\\-298.3579\\-41\\-86.91406\\-297.3037\\-41\\-90.82031\\-296.5743\\-41\\-92.77344\\-295.802\\-41\\-94.72656\\-295.1736\\-41\\-96.67969\\-294.6692\\-41\\-98.63281\\-293.6755\\-41\\-100.5859\\-292.8224\\-41\\-102.5391\\-291.6214\\-41\\-104.4922\\-290.731\\-41\\-106.4453\\-289.4155\\-41\\-108.3984\\-288.6902\\-41\\-110.3516\\-287.3635\\-41\\-112.3047\\-286.2033\\-41\\-115.3164\\-284.2422\\-41\\-116.2109\\-283.5326\\-41\\-118.1641\\-282.3617\\-41\\-120.1172\\-281.0838\\-41\\-122.0703\\-279.4854\\-41\\-124.0234\\-277.7699\\-41\\-125.9766\\-276.2344\\-41\\-127.9297\\-274.8539\\-41\\-129.8828\\-273.0448\\-41\\-131.8359\\-271.0825\\-41\\-134.4712\\-268.6172\\-41\\-136.2893\\-266.6641\\-41\\-139.6484\\-262.715\\-41\\-141.6016\\-260.3077\\-41\\-144.1002\\-256.8984\\-41\\-148.1182\\-251.0391\\-41\\-149.0451\\-249.0859\\-41\\-150.1988\\-247.1328\\-41\\-151.0728\\-245.1797\\-41\\-152.2615\\-243.2266\\-41\\-154.2127\\-239.3203\\-41\\-154.955\\-237.3672\\-41\\-155.8878\\-235.4141\\-41\\-156.3656\\-233.4609\\-41\\-157.9654\\-229.5547\\-41\\-158.5195\\-227.6016\\-41\\-159.3914\\-225.6484\\-41\\-159.9866\\-223.6953\\-41\\-160.4532\\-221.7422\\-41\\-161.7025\\-217.8359\\-41\\-162.0447\\-215.8828\\-41\\-162.5621\\-211.9766\\-41\\-163.568\\-208.0703\\-41\\-163.8384\\-206.1172\\-41\\-164.2296\\-202.2109\\-41\\-164.7454\\-198.3047\\-41\\-165.1198\\-196.3516\\-41\\-165.5723\\-192.4453\\-41\\-165.8053\\-186.5859\\-41\\-165.8627\\-180.7266\\-41\\-165.7752\\-176.8203\\-41\\-165.6119\\-172.9141\\-41\\-165.3209\\-169.0078\\-41\\-164.3936\\-163.1484\\-41\\-163.7042\\-157.2891\\-41\\-163.2561\\-155.3359\\-41\\-162.6587\\-153.3828\\-41\\-162.0147\\-149.4766\\-41\\-161.5275\\-147.5234\\-41\\-160.7357\\-145.5703\\-41\\-159.4746\\-141.6641\\-41\\-158.4586\\-139.7109\\-41\\-157.8114\\-137.7578\\-41\\-156.7722\\-135.8047\\-41\\-156.1202\\-133.8516\\-41\\-154.3981\\-129.9453\\-41\\-153.6797\\-127.9922\\-41\\-152.4752\\-126.0391\\-41\\-150.3489\\-122.1328\\-41\\-148.4563\\-118.2266\\-41\\-146.3117\\-114.3203\\-41\\-145.0162\\-112.3672\\-41\\-143.9807\\-110.4141\\-41\\-142.6595\\-108.4609\\-41\\-141.6016\\-106.7052\\-41\\-140.1738\\-104.5547\\-41\\-137.6953\\-101.4688\\-41\\-135.2611\\-98.69531\\-41\\-133.7891\\-96.90785\\-41\\-131.8359\\-95.17217\\-41\\-129.0899\\-92.83594\\-41\\-125.9766\\-90.5331\\-41\\-122.0703\\-88.13664\\-41\\-120.1172\\-87.27411\\-41\\-118.1641\\-86.24934\\-41\\-116.2109\\-85.08558\\-41\\-114.2578\\-84.22856\\-41\\-112.3047\\-83.74938\\-41\\-110.3516\\-82.88314\\-41\\-108.3984\\-82.12032\\-41\\-106.4453\\-81.616\\-41\\-104.4922\\-80.595\\-41\\-102.5391\\-80.31123\\-41\\-100.5859\\-79.70413\\-41\\-98.63281\\-79.39063\\-41\\-94.72656\\-78.40382\\-41\\-90.82031\\-77.72871\\-41\\-88.86719\\-77.17338\\-41\\-84.96094\\-76.50245\\-41\\-81.05469\\-76.16335\\-41\\-79.10156\\-76.11455\\-41\\-75.19531\\-75.8736\\-41\\-71.28906\\-75.82047\\-41\\-65.42969\\-75.63874\\-41\\-63.47656\\-75.62231\\-41\\-61.52344\\-75.7263\\-41\\-51.75781\\-76.01869\\-41\\-47.85156\\-76.18079\\-41\\-43.94531\\-76.41863\\-41\\-40.03906\\-76.84052\\-41\\-38.08594\\-77.14384\\-41\\-32.22656\\-78.19866\\-41\\-30.27344\\-78.64362\\-41\\-26.36719\\-79.98292\\-41\\-24.41406\\-80.49399\\-41\\-20.50781\\-82.13155\\-41\\-18.6181\\-83.07031\\-41\\-16.60156\\-84.22388\\-41\\-12.69531\\-87.12093\\-41\\-10.74219\\-88.49818\\-41\\-8.789063\\-90.22062\\-41\\-6.835938\\-92.1123\\-41\\-2.929688\\-95.6427\\-41\\-0.9765625\\-97.19009\\-41\\0.9765625\\-97.30981\\-41\\2.929688\\-95.81877\\-41\\4.076408\\-94.78906\\-41\\6.835938\\-92.1404\\-41\\8.789063\\-90.04867\\-41\\10.74219\\-88.09164\\-41\\14.64844\\-84.51057\\-41\\16.71832\\-83.07031\\-41\\20.50781\\-80.75098\\-41\\22.46094\\-79.94661\\-41\\24.41406\\-78.91457\\-41\\26.36719\\-78.09818\\-41\\28.32031\\-77.41917\\-41\\30.27344\\-76.59654\\-41\\34.17969\\-75.84756\\-41\\36.13281\\-75.13153\\-41\\38.08594\\-74.64574\\-41\\41.99219\\-74.3355\\-41\\43.94531\\-74.06573\\-41\\45.89844\\-72.98988\\-41\\51.75781\\-72.77455\\-41\\61.52344\\-72.78273\\-41\\67.38281\\-72.91775\\-41\\68.84766\\-73.30469\\-41\\71.28906\\-74.25184\\-41\\77.14844\\-74.55653\\-41\\81.05469\\-74.94254\\-41\\83.00781\\-75.41803\\-41\\84.96094\\-75.77822\\-41\\90.82031\\-76.45139\\-41\\92.77344\\-76.92897\\-41\\94.72656\\-77.51825\\-41\\98.63281\\-78.47373\\-41\\100.5859\\-79.09748\\-41\\102.5391\\-79.86503\\-41\\104.4922\\-80.34686\\-41\\106.4453\\-81.04514\\-41\\108.3984\\-81.89969\\-41\\110.3516\\-82.49235\\-41\\112.3047\\-83.56486\\-41\\114.2578\\-84.39774\\-41\\116.2109\\-85.66822\\-41\\118.1641\\-86.51504\\-41\\120.1172\\-87.72729\\-41\\122.0703\\-88.52886\\-41\\125.9766\\-91.37109\\-41\\127.9297\\-92.62424\\-41\\131.8359\\-95.59608\\-41\\134.9432\\-98.69531\\-41\\137.6953\\-101.7679\\-41\\139.9421\\-104.5547\\-41\\142.4689\\-108.4609\\-41\\144.5877\\-112.3672\\-41\\145.8443\\-114.3203\\-41\\146.8039\\-116.2734\\-41\\147.9848\\-118.2266\\-41\\148.6848\\-120.1797\\-41\\149.6857\\-122.1328\\-41\\150.3849\\-124.0859\\-41\\151.2199\\-126.0391\\-41\\152.2003\\-127.9922\\-41\\152.9499\\-129.9453\\-41\\153.961\\-131.8984\\-41\\154.5274\\-133.8516\\-41\\155.4243\\-135.8047\\-41\\156.0106\\-137.7578\\-41\\156.35\\-139.7109\\-41\\156.8483\\-141.6641\\-41\\157.6732\\-143.6172\\-41\\158.5342\\-147.5234\\-41\\159.2319\\-149.4766\\-41\\159.759\\-151.4297\\-41\\160.3812\\-155.3359\\-41\\160.7461\\-157.2891\\-41\\161.2154\\-159.2422\\-41\\161.5588\\-161.1953\\-41\\161.9858\\-165.1016\\-41\\162.4165\\-172.9141\\-41\\162.9282\\-180.7266\\-41\\163.2136\\-184.6328\\-41\\163.3336\\-188.5391\\-41\\163.3719\\-192.4453\\-41\\163.3459\\-196.3516\\-41\\163.2425\\-200.2578\\-41\\163.0466\\-204.1641\\-41\\162.495\\-211.9766\\-41\\162.2771\\-215.8828\\-41\\161.9962\\-219.7891\\-41\\161.794\\-221.7422\\-41\\161.4873\\-223.6953\\-41\\160.4141\\-227.6016\\-41\\159.9866\\-229.5547\\-41\\159.4035\\-231.5078\\-41\\158.4982\\-233.4609\\-41\\157.9564\\-235.4141\\-41\\157.0948\\-237.3672\\-41\\156.35\\-239.3203\\-41\\155.7685\\-241.2734\\-41\\154.6671\\-243.2266\\-41\\153.8844\\-245.1797\\-41\\152.5967\\-247.1328\\-41\\151.4902\\-249.0859\\-41\\150.2646\\-251.0391\\-41\\148.8627\\-252.9922\\-41\\147.7389\\-254.9453\\-41\\145.5078\\-257.5141\\-41\\143.5547\\-259.8571\\-41\\141.0404\\-262.7578\\-41\\139.6484\\-264.0442\\-41\\135.2379\\-268.6172\\-41\\131.8359\\-271.5352\\-41\\129.8828\\-273.4607\\-41\\127.9297\\-275.1479\\-41\\125.9766\\-276.6219\\-41\\124.0234\\-277.9294\\-41\\120.1172\\-281.0512\\-41\\118.1641\\-282.1263\\-41\\116.2109\\-283.3345\\-41\\114.2578\\-284.6687\\-41\\112.3047\\-285.7263\\-41\\110.3516\\-286.9754\\-41\\106.4453\\-288.9458\\-41\\104.4922\\-289.6336\\-41\\102.5391\\-290.7433\\-41\\100.5859\\-291.3906\\-41\\98.63281\\-292.4415\\-41\\94.72656\\-293.7415\\-41\\92.77344\\-294.4929\\-41\\90.82031\\-294.9245\\-41\\86.91406\\-295.6566\\-41\\84.96094\\-296.2122\\-41\\83.00781\\-296.61\\-41\\81.05469\\-296.8445\\-41\\77.14844\\-297.1641\\-41\\73.24219\\-297.4258\\-41\\71.28906\\-297.4793\\-41\\67.38281\\-297.3928\\-41\\63.47656\\-297.0778\\-41\\59.57031\\-296.6849\\-41\\57.61719\\-295.952\\-41\\55.66406\\-295.4554\\-41\\53.71094\\-295.2468\\-41\\51.75781\\-294.9015\\-41\\49.80469\\-294.4103\\-41\\47.85156\\-293.5349\\-41\\45.89844\\-292.9244\\-41\\43.94531\\-292.2033\\-41\\41.99219\\-291.2867\\-41\\40.03906\\-290.7544\\-41\\38.08594\\-289.769\\-41\\36.13281\\-289.1667\\-41\\34.17969\\-288.6635\\-41\\32.22656\\-287.7849\\-41\\30.27344\\-287.1837\\-41\\26.36719\\-286.5341\\-41\\24.41406\\-286.4163\\-41\\22.46094\\-286.4553\\-41\\10.74219\\-287.1719\\-41\\8.789063\\-287.3378\\-41\\4.882813\\-287.5501\\-41\\-0.9765625\\-287.8051\\-41\\-6.835938\\-287.9547\\-41\\-10.74219\\-287.8835\\-41\\-26.36719\\-287.4775\\-41\\-28.32031\\-287.597\\-41\\-30.27344\\-287.9424\\-41\\-32.22656\\-288.1393\\-41\\-34.17969\\-288.6288\\-41\\-36.13281\\-289.3191\\-41\\-40.03906\\-290.9438\\-41\\-41.99219\\-291.5969\\-41\\-43.94531\\-292.6587\\-41\\-45.89844\\-293.3168\\-41\\-47.85156\\-294.2003\\-41\\-49.80469\\-294.6218\\-41\\-53.71094\\-295.802\\-41\\-55.66406\\-296.5408\\-41\\-59.57031\\-297.2388\\-41\\-61.52344\\-297.6947\\-41\\-63.47656\\-298.2606\\-41\\-65.42969\\-298.553\\-41\\-69.33594\\-298.8564\\-41\\-73.24219\\-298.9554\\-41\\-77.14844\\-298.8665\\-41\\-81.05469\\-298.6037\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "321"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "106"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-83.00781\\-298.0757\\-39\\-84.96094\\-297.5066\\-39\\-88.86719\\-296.8108\\-39\\-90.82031\\-296.3448\\-39\\-92.77344\\-295.5232\\-39\\-96.67969\\-294.4529\\-39\\-98.63281\\-293.3745\\-39\\-100.5859\\-292.5744\\-39\\-102.5391\\-291.3265\\-39\\-104.4922\\-290.4404\\-39\\-106.4453\\-289.2395\\-39\\-108.3984\\-288.3944\\-39\\-112.3047\\-285.8274\\-39\\-114.2578\\-284.7097\\-39\\-118.1641\\-282.0111\\-39\\-120.1172\\-280.8598\\-39\\-122.0703\\-279.2734\\-39\\-124.0234\\-277.554\\-39\\-125.9766\\-275.9484\\-39\\-127.9297\\-274.5966\\-39\\-129.8828\\-272.7991\\-39\\-131.8359\\-270.8633\\-39\\-134.2995\\-268.6172\\-39\\-136.1047\\-266.6641\\-39\\-137.6701\\-264.7109\\-39\\-141.0407\\-260.8047\\-39\\-142.5529\\-258.8516\\-39\\-143.9495\\-256.8984\\-39\\-145.1823\\-254.9453\\-39\\-145.5078\\-254.5851\\-39\\-147.9883\\-251.0391\\-39\\-148.912\\-249.0859\\-39\\-150.1038\\-247.1328\\-39\\-150.9088\\-245.1797\\-39\\-152.1317\\-243.2266\\-39\\-154.0868\\-239.3203\\-39\\-154.7885\\-237.3672\\-39\\-155.7651\\-235.4141\\-39\\-156.8964\\-231.5078\\-39\\-157.8103\\-229.5547\\-39\\-158.3448\\-227.6016\\-39\\-159.8217\\-223.6953\\-39\\-160.2665\\-221.7422\\-39\\-160.8095\\-219.7891\\-39\\-161.4763\\-217.8359\\-39\\-161.8743\\-215.8828\\-39\\-162.384\\-211.9766\\-39\\-162.7077\\-210.0234\\-39\\-163.2146\\-208.0703\\-39\\-163.6169\\-206.1172\\-39\\-163.8597\\-204.1641\\-39\\-164.4323\\-198.3047\\-39\\-165.2261\\-192.4453\\-39\\-165.3959\\-190.4922\\-39\\-165.5804\\-186.5859\\-39\\-165.6567\\-182.6797\\-39\\-165.564\\-176.8203\\-39\\-165.332\\-172.9141\\-39\\-165.1476\\-170.9609\\-39\\-164.6071\\-167.0547\\-39\\-163.7684\\-159.2422\\-39\\-163.4069\\-157.2891\\-39\\-162.8183\\-155.3359\\-39\\-162.4122\\-153.3828\\-39\\-161.7776\\-149.4766\\-39\\-161.1866\\-147.5234\\-39\\-160.4221\\-145.5703\\-39\\-159.8687\\-143.6172\\-39\\-158.9715\\-141.6641\\-39\\-157.4892\\-137.7578\\-39\\-156.4851\\-135.8047\\-39\\-155.9092\\-133.8516\\-39\\-154.9099\\-131.8984\\-39\\-154.2076\\-129.9453\\-39\\-153.3203\\-127.9818\\-39\\-151.3672\\-124.5742\\-39\\-151.0272\\-124.0859\\-39\\-150.148\\-122.1328\\-39\\-149.091\\-120.1797\\-39\\-148.2737\\-118.2266\\-39\\-147.0414\\-116.2734\\-39\\-146.1014\\-114.3203\\-39\\-144.7132\\-112.3672\\-39\\-143.7396\\-110.4141\\-39\\-141.6016\\-107.0701\\-39\\-139.9065\\-104.5547\\-39\\-137.6953\\-101.6875\\-39\\-133.5112\\-96.74219\\-39\\-129.0376\\-92.83594\\-39\\-127.9297\\-91.95113\\-39\\-125.9766\\-90.56627\\-39\\-122.0703\\-88.14975\\-39\\-120.1172\\-87.24783\\-39\\-115.9882\\-85.02344\\-39\\-112.3047\\-83.72356\\-39\\-108.3984\\-82.08064\\-39\\-106.4453\\-81.62279\\-39\\-104.4922\\-80.61866\\-39\\-102.5391\\-80.29757\\-39\\-100.5859\\-79.59034\\-39\\-98.63281\\-79.27074\\-39\\-94.72656\\-78.32067\\-39\\-92.77344\\-78.04043\\-39\\-90.82031\\-77.63524\\-39\\-88.86719\\-77.03655\\-39\\-86.91406\\-76.59806\\-39\\-84.96094\\-76.3961\\-39\\-81.05469\\-76.1226\\-39\\-77.14844\\-75.92337\\-39\\-75.19531\\-75.74937\\-39\\-73.24219\\-75.69862\\-39\\-69.33594\\-75.43329\\-39\\-67.38281\\-75.40508\\-39\\-65.42969\\-75.21498\\-39\\-63.47656\\-75.23212\\-39\\-61.52344\\-75.43193\\-39\\-55.66406\\-75.73949\\-39\\-53.71094\\-75.77908\\-39\\-49.80469\\-75.99928\\-39\\-45.89844\\-76.12124\\-39\\-43.94531\\-76.23438\\-39\\-40.03906\\-76.57026\\-39\\-36.13281\\-77.08796\\-39\\-34.17969\\-77.56303\\-39\\-30.27344\\-78.36855\\-39\\-28.32031\\-78.90498\\-39\\-26.36719\\-79.68888\\-39\\-22.46094\\-80.86929\\-39\\-20.50781\\-81.86281\\-39\\-18.55469\\-82.65279\\-39\\-14.79492\\-85.02344\\-39\\-12.69531\\-86.51323\\-39\\-10.74219\\-88.06394\\-39\\-8.789063\\-89.80789\\-39\\-6.835938\\-91.75475\\-39\\-4.882813\\-93.43519\\-39\\-2.929688\\-95.00879\\-39\\-0.9765625\\-96.32366\\-39\\0.9765625\\-96.65955\\-39\\2.929688\\-95.53152\\-39\\4.882813\\-93.8323\\-39\\6.248191\\-92.83594\\-39\\6.835938\\-92.2427\\-39\\7.780793\\-90.88281\\-39\\10.74219\\-87.87231\\-39\\14.64844\\-84.22443\\-39\\16.60156\\-82.73529\\-39\\18.55469\\-81.67819\\-39\\20.50781\\-80.51573\\-39\\22.46094\\-79.67986\\-39\\24.41406\\-78.657\\-39\\28.32031\\-77.08887\\-39\\30.27344\\-76.39407\\-39\\34.17969\\-75.59041\\-39\\36.13281\\-74.82963\\-39\\38.08594\\-74.52701\\-39\\41.99219\\-74.24616\\-39\\44.30213\\-73.30469\\-39\\45.89844\\-72.81641\\-39\\51.75781\\-72.73502\\-39\\61.52344\\-72.74275\\-39\\67.38281\\-72.84272\\-39\\69.33594\\-73.03416\\-39\\71.28906\\-74.03377\\-39\\73.24219\\-74.26955\\-39\\79.10156\\-74.59138\\-39\\81.05469\\-74.79868\\-39\\83.00781\\-75.13261\\-39\\84.96094\\-75.65793\\-39\\88.86719\\-76.17659\\-39\\90.82031\\-76.3695\\-39\\92.77344\\-76.75255\\-39\\94.72656\\-77.35045\\-39\\98.63281\\-78.35026\\-39\\100.5859\\-78.97706\\-39\\102.5391\\-79.78832\\-39\\106.4453\\-80.91279\\-39\\108.3984\\-81.86213\\-39\\110.3516\\-82.43456\\-39\\112.3047\\-83.48792\\-39\\114.2578\\-84.33926\\-39\\116.2109\\-85.57682\\-39\\118.1641\\-86.44568\\-39\\120.1172\\-87.61261\\-39\\122.0703\\-88.4131\\-39\\122.6957\\-88.92969\\-39\\125.9766\\-91.28017\\-39\\127.9297\\-92.57685\\-39\\131.8359\\-95.46624\\-39\\133.191\\-96.74219\\-39\\134.9958\\-98.69531\\-39\\137.6953\\-101.9312\\-39\\139.6719\\-104.5547\\-39\\142.3029\\-108.4609\\-39\\143.2028\\-110.4141\\-39\\143.5547\\-110.8974\\-39\\145.5155\\-114.3203\\-39\\147.6835\\-118.2266\\-39\\149.3109\\-122.1328\\-39\\150.2131\\-124.0859\\-39\\150.8557\\-126.0391\\-39\\151.9294\\-127.9922\\-39\\152.6593\\-129.9453\\-39\\153.6549\\-131.8984\\-39\\154.9746\\-135.8047\\-39\\155.7856\\-137.7578\\-39\\156.5376\\-141.6641\\-39\\157.897\\-145.5703\\-39\\158.7656\\-149.4766\\-39\\159.4388\\-151.4297\\-39\\159.878\\-153.3828\\-39\\160.4572\\-157.2891\\-39\\161.2576\\-161.1953\\-39\\161.592\\-163.1484\\-39\\161.9555\\-167.0547\\-39\\162.1868\\-170.9609\\-39\\162.8327\\-184.6328\\-39\\162.9572\\-188.5391\\-39\\163.0007\\-192.4453\\-39\\162.9715\\-196.3516\\-39\\162.873\\-200.2578\\-39\\162.6206\\-206.1172\\-39\\162.2514\\-213.9297\\-39\\161.9843\\-217.8359\\-39\\161.5588\\-221.7422\\-39\\160.5963\\-225.6484\\-39\\159.77\\-229.5547\\-39\\158.965\\-231.5078\\-39\\158.2585\\-233.4609\\-39\\157.7002\\-235.4141\\-39\\156.7317\\-237.3672\\-39\\156.1726\\-239.3203\\-39\\155.4627\\-241.2734\\-39\\154.4355\\-243.2266\\-39\\153.5301\\-245.1797\\-39\\151.3672\\-248.6469\\-39\\151.0127\\-249.0859\\-39\\149.9865\\-251.0391\\-39\\147.4609\\-254.6597\\-39\\145.6889\\-256.8984\\-39\\142.4187\\-260.8047\\-39\\140.6181\\-262.7578\\-39\\139.6484\\-263.6293\\-39\\134.7656\\-268.6172\\-39\\131.8359\\-271.2022\\-39\\129.8828\\-273.062\\-39\\127.9297\\-274.7323\\-39\\125.9766\\-276.0204\\-39\\124.0234\\-277.5155\\-39\\122.0703\\-279.1403\\-39\\120.1172\\-280.5978\\-39\\118.1641\\-281.7072\\-39\\116.2109\\-282.9848\\-39\\114.2578\\-284.0484\\-39\\110.8221\\-286.1953\\-39\\110.3516\\-286.5573\\-39\\108.3984\\-287.4655\\-39\\106.4453\\-288.5848\\-39\\104.4922\\-289.2724\\-39\\102.5391\\-290.2523\\-39\\98.63281\\-291.7786\\-39\\96.67969\\-292.7372\\-39\\94.72656\\-293.292\\-39\\90.82031\\-294.6609\\-39\\86.91406\\-295.3246\\-39\\84.96094\\-295.7059\\-39\\83.00781\\-296.2609\\-39\\81.05469\\-296.5904\\-39\\77.14844\\-296.9427\\-39\\73.24219\\-297.1533\\-39\\71.28906\\-297.1953\\-39\\67.38281\\-297.1403\\-39\\61.52344\\-296.7368\\-39\\59.57031\\-296.4713\\-39\\55.66406\\-295.4242\\-39\\51.75781\\-294.795\\-39\\49.80469\\-294.2779\\-39\\47.85156\\-293.4337\\-39\\45.89844\\-292.8779\\-39\\43.94531\\-292.1901\\-39\\41.99219\\-291.3354\\-39\\40.03906\\-290.8263\\-39\\36.13281\\-289.2907\\-39\\34.17969\\-288.9184\\-39\\32.22656\\-288.3795\\-39\\30.27344\\-287.7046\\-39\\28.32031\\-287.3387\\-39\\26.36719\\-287.1597\\-39\\24.41406\\-287.1476\\-39\\18.55469\\-287.3947\\-39\\14.64844\\-287.6885\\-39\\10.74219\\-288.0426\\-39\\8.789063\\-288.2845\\-39\\4.882813\\-288.5865\\-39\\0.9765625\\-288.6716\\-39\\-0.9765625\\-288.7883\\-39\\-4.882813\\-288.8677\\-39\\-8.789063\\-288.8677\\-39\\-14.64844\\-288.8061\\-39\\-22.46094\\-288.6613\\-39\\-26.36719\\-288.5435\\-39\\-28.32031\\-288.5752\\-39\\-32.22656\\-288.8556\\-39\\-34.17969\\-289.1317\\-39\\-36.13281\\-289.6713\\-39\\-38.08594\\-290.4227\\-39\\-41.99219\\-291.6966\\-39\\-43.94531\\-292.6781\\-39\\-45.89844\\-293.2656\\-39\\-47.85156\\-294.1463\\-39\\-49.80469\\-294.7402\\-39\\-53.71094\\-295.6052\\-39\\-55.66406\\-296.3556\\-39\\-57.61719\\-296.7881\\-39\\-61.52344\\-297.4289\\-39\\-65.42969\\-298.3579\\-39\\-67.38281\\-298.5599\\-39\\-71.28906\\-298.7838\\-39\\-75.19531\\-298.7721\\-39\\-79.10156\\-298.5905\\-39\\-81.05469\\-298.4109\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "327"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "107"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-298.1011\\-37\\-84.96094\\-297.2611\\-37\\-88.86719\\-296.6445\\-37\\-92.77344\\-295.3205\\-37\\-94.72656\\-294.8712\\-37\\-96.67969\\-294.1365\\-37\\-98.63281\\-293.1392\\-37\\-100.5859\\-292.2417\\-37\\-102.5391\\-291.0941\\-37\\-106.4453\\-289.0886\\-37\\-110.3516\\-286.9414\\-37\\-112.3047\\-285.5384\\-37\\-114.2578\\-284.4038\\-37\\-118.1641\\-281.7595\\-37\\-120.1172\\-280.5783\\-37\\-122.0703\\-279.0401\\-37\\-125.9766\\-275.7461\\-37\\-127.6618\\-274.4766\\-37\\-129.8239\\-272.5234\\-37\\-131.8449\\-270.5703\\-37\\-133.7891\\-268.9017\\-37\\-135.8794\\-266.6641\\-37\\-137.3849\\-264.7109\\-37\\-139.072\\-262.7578\\-37\\-140.8803\\-260.8047\\-37\\-142.4647\\-258.8516\\-37\\-145.0027\\-254.9453\\-37\\-145.5078\\-254.3731\\-37\\-147.8419\\-251.0391\\-37\\-148.7872\\-249.0859\\-37\\-149.9859\\-247.1328\\-37\\-150.76\\-245.1797\\-37\\-152.0048\\-243.2266\\-37\\-152.8799\\-241.2734\\-37\\-153.9502\\-239.3203\\-37\\-154.6161\\-237.3672\\-37\\-155.6085\\-235.4141\\-37\\-156.2032\\-233.4609\\-37\\-156.6749\\-231.5078\\-37\\-157.6233\\-229.5547\\-37\\-158.7629\\-225.6484\\-37\\-159.6263\\-223.6953\\-37\\-160.5457\\-219.7891\\-37\\-161.1862\\-217.8359\\-37\\-161.6989\\-215.8828\\-37\\-162.0094\\-213.9297\\-37\\-162.4577\\-210.0234\\-37\\-162.8079\\-208.0703\\-37\\-163.3212\\-206.1172\\-37\\-163.6516\\-204.1641\\-37\\-163.8787\\-202.2109\\-37\\-164.2087\\-198.3047\\-37\\-164.9699\\-190.4922\\-37\\-165.2982\\-186.5859\\-37\\-165.3752\\-182.6797\\-37\\-165.3209\\-178.7734\\-37\\-165.2385\\-176.8203\\-37\\-164.7289\\-170.9609\\-37\\-164.3175\\-167.0547\\-37\\-163.8143\\-161.1953\\-37\\-163.5164\\-159.2422\\-37\\-162.9697\\-157.2891\\-37\\-162.5216\\-155.3359\\-37\\-161.9416\\-151.4297\\-37\\-161.5167\\-149.4766\\-37\\-160.7759\\-147.5234\\-37\\-159.5938\\-143.6172\\-37\\-158.5891\\-141.6641\\-37\\-157.9765\\-139.7109\\-37\\-157.0087\\-137.7578\\-37\\-155.6512\\-133.8516\\-37\\-154.6374\\-131.8984\\-37\\-153.9898\\-129.9453\\-37\\-152.9339\\-127.9922\\-37\\-151.9783\\-126.0391\\-37\\-150.7399\\-124.0859\\-37\\-149.9485\\-122.1328\\-37\\-148.857\\-120.1797\\-37\\-148.0562\\-118.2266\\-37\\-146.7829\\-116.2734\\-37\\-145.8244\\-114.3203\\-37\\-144.5018\\-112.3672\\-37\\-142.3112\\-108.4609\\-37\\-139.6484\\-104.6192\\-37\\-137.6953\\-101.9312\\-37\\-133.7891\\-97.16787\\-37\\-131.8359\\-95.3648\\-37\\-128.9469\\-92.83594\\-37\\-125.9766\\-90.60085\\-37\\-122.0703\\-88.15768\\-37\\-120.1172\\-87.20681\\-37\\-115.9494\\-85.02344\\-37\\-114.2578\\-84.48522\\-37\\-112.3047\\-83.70606\\-37\\-110.3516\\-82.77892\\-37\\-108.3984\\-82.04132\\-37\\-106.4453\\-81.6264\\-37\\-104.4922\\-80.65314\\-37\\-102.5391\\-80.29086\\-37\\-100.5859\\-79.57484\\-37\\-98.63281\\-79.20652\\-37\\-94.72656\\-78.18099\\-37\\-92.77344\\-77.90417\\-37\\-90.82031\\-77.52483\\-37\\-86.91406\\-76.48186\\-37\\-84.96094\\-76.30151\\-37\\-77.14844\\-75.82961\\-37\\-75.19531\\-75.63605\\-37\\-73.24219\\-75.29816\\-37\\-69.33594\\-75.02757\\-37\\-65.42969\\-74.96875\\-37\\-61.52344\\-75\\-37\\-53.71094\\-75.39063\\-37\\-51.75781\\-75.72252\\-37\\-49.80469\\-75.84\\-37\\-45.89844\\-75.96749\\-37\\-41.99219\\-76.21098\\-37\\-38.08594\\-76.53345\\-37\\-36.13281\\-76.76172\\-37\\-34.17969\\-77.17338\\-37\\-28.32031\\-78.56264\\-37\\-26.36719\\-79.32554\\-37\\-22.46094\\-80.56009\\-37\\-20.50781\\-81.54398\\-37\\-18.55469\\-82.31862\\-37\\-16.60156\\-83.52786\\-37\\-14.64844\\-84.62007\\-37\\-12.69531\\-86.12885\\-37\\-9.343552\\-88.92969\\-37\\-4.882813\\-92.84489\\-37\\-0.9765625\\-95.76563\\-37\\0.9765625\\-96.11845\\-37\\2.929688\\-95.11701\\-37\\4.882813\\-93.92446\\-37\\6.240234\\-94.78906\\-37\\6.835938\\-95.36185\\-37\\7.768111\\-96.74219\\-37\\8.209229\\-98.69531\\-37\\8.310355\\-102.6016\\-37\\9.350586\\-104.5547\\-37\\10.74219\\-105.6754\\-37\\12.69531\\-105.6487\\-37\\14.64844\\-104.3634\\-37\\15.61945\\-102.6016\\-37\\15.55287\\-100.6484\\-37\\14.67226\\-98.69531\\-37\\12.41757\\-96.74219\\-37\\8.789063\\-93.44176\\-37\\7.960839\\-92.83594\\-37\\7.618481\\-90.88281\\-37\\9.413775\\-88.92969\\-37\\11.51316\\-86.97656\\-37\\14.64844\\-83.95387\\-37\\16.60156\\-82.41263\\-37\\18.55469\\-81.45972\\-37\\20.50781\\-80.28104\\-37\\22.46094\\-79.45042\\-37\\24.41406\\-78.46974\\-37\\26.36719\\-77.67942\\-37\\28.32031\\-76.79143\\-37\\30.27344\\-76.25224\\-37\\32.22656\\-75.87756\\-37\\34.17969\\-75.2146\\-37\\36.13281\\-74.68874\\-37\\38.08594\\-74.43053\\-37\\40.03906\\-74.29309\\-37\\42.06731\\-73.30469\\-37\\43.94531\\-72.86079\\-37\\45.89844\\-72.77455\\-37\\53.71094\\-72.67616\\-37\\61.52344\\-72.69763\\-37\\65.42969\\-72.74275\\-37\\69.33594\\-72.87\\-37\\71.28906\\-73.16925\\-37\\73.24219\\-74.10484\\-37\\75.19531\\-74.3172\\-37\\79.10156\\-74.49052\\-37\\83.00781\\-74.91179\\-37\\84.96094\\-75.48891\\-37\\86.91406\\-75.84872\\-37\\90.82031\\-76.29832\\-37\\92.77344\\-76.60547\\-37\\96.67969\\-77.75415\\-37\\98.63281\\-78.20494\\-37\\100.5859\\-78.87109\\-37\\102.5391\\-79.73213\\-37\\106.4453\\-80.84551\\-37\\108.3984\\-81.81205\\-37\\110.3516\\-82.38357\\-37\\112.3047\\-83.43323\\-37\\114.2578\\-84.29388\\-37\\116.2109\\-85.52811\\-37\\118.1641\\-86.39573\\-37\\120.1172\\-87.54124\\-37\\122.0703\\-88.37263\\-37\\125.9766\\-91.24476\\-37\\127.9297\\-92.47912\\-37\\131.8359\\-95.45225\\-37\\133.2645\\-96.74219\\-37\\135.026\\-98.69531\\-37\\138.0208\\-102.6016\\-37\\142.1336\\-108.4609\\-37\\142.9228\\-110.4141\\-37\\144.2119\\-112.3672\\-37\\145.1381\\-114.3203\\-37\\146.3487\\-116.2734\\-37\\148.2706\\-120.1797\\-37\\148.9996\\-122.1328\\-37\\150.0038\\-124.0859\\-37\\150.5896\\-126.0391\\-37\\151.6164\\-127.9922\\-37\\154.091\\-133.8516\\-37\\154.6287\\-135.8047\\-37\\155.4794\\-137.7578\\-37\\156.0059\\-139.7109\\-37\\156.7948\\-143.6172\\-37\\157.606\\-145.5703\\-37\\158.4565\\-149.4766\\-37\\158.9774\\-151.4297\\-37\\159.6354\\-153.3828\\-37\\160.5305\\-159.2422\\-37\\161.2992\\-163.1484\\-37\\161.7859\\-167.0547\\-37\\162.0564\\-170.9609\\-37\\162.4005\\-178.7734\\-37\\162.6541\\-188.5391\\-37\\162.6886\\-192.4453\\-37\\162.6438\\-198.3047\\-37\\162.4329\\-206.1172\\-37\\162.2172\\-211.9766\\-37\\161.9792\\-215.8828\\-37\\161.6018\\-219.7891\\-37\\161.2297\\-221.7422\\-37\\160.7357\\-223.6953\\-37\\159.97\\-227.6016\\-37\\159.4945\\-229.5547\\-37\\158.6042\\-231.5078\\-37\\158.0445\\-233.4609\\-37\\157.3752\\-235.4141\\-37\\156.5048\\-237.3672\\-37\\155.9854\\-239.3203\\-37\\154.2022\\-243.2266\\-37\\152.0091\\-247.1328\\-37\\150.6797\\-249.0859\\-37\\149.6353\\-251.0391\\-37\\148.3629\\-252.9922\\-37\\145.1698\\-256.8984\\-37\\142.1044\\-260.8047\\-37\\140.2533\\-262.7578\\-37\\138.2082\\-264.7109\\-37\\135.7422\\-267.3175\\-37\\133.7891\\-269.1722\\-37\\132.0693\\-270.5703\\-37\\129.8828\\-272.532\\-37\\127.5866\\-274.4766\\-37\\125.9766\\-275.6523\\-37\\122.0703\\-278.6785\\-37\\118.1641\\-281.3313\\-37\\116.2109\\-282.5798\\-37\\114.2578\\-283.5383\\-37\\112.3047\\-284.8636\\-37\\110.3516\\-285.903\\-37\\108.3984\\-287.089\\-37\\104.4922\\-288.9757\\-37\\102.5391\\-289.6099\\-37\\100.5859\\-290.6637\\-37\\98.63281\\-291.3006\\-37\\96.67969\\-292.2679\\-37\\94.72656\\-292.9429\\-37\\92.77344\\-293.5012\\-37\\90.82031\\-294.3195\\-37\\88.86719\\-294.7879\\-37\\84.96094\\-295.3585\\-37\\83.00781\\-295.7186\\-37\\81.05469\\-296.2122\\-37\\79.10156\\-296.5286\\-37\\77.14844\\-296.7345\\-37\\73.24219\\-296.9324\\-37\\67.38281\\-296.9273\\-37\\63.47656\\-296.7235\\-37\\61.52344\\-296.5286\\-37\\59.57031\\-296.1607\\-37\\57.61719\\-295.6448\\-37\\53.71094\\-294.9346\\-37\\51.75781\\-294.669\\-37\\49.80469\\-294.0898\\-37\\47.85156\\-293.3248\\-37\\45.89844\\-292.8308\\-37\\43.94531\\-292.1768\\-37\\41.99219\\-291.3587\\-37\\40.03906\\-290.9037\\-37\\38.08594\\-290.2913\\-37\\36.13281\\-289.4773\\-37\\32.22656\\-288.7799\\-37\\28.32031\\-288.0012\\-37\\26.36719\\-287.8134\\-37\\24.41406\\-287.8017\\-37\\14.64844\\-288.6297\\-37\\10.74219\\-288.8792\\-37\\4.882813\\-289.1813\\-37\\2.929688\\-289.2314\\-37\\0.9765625\\-289.1443\\-37\\-0.9765625\\-289.3907\\-37\\-4.882813\\-289.4929\\-37\\-8.789063\\-289.5022\\-37\\-14.64844\\-289.4351\\-37\\-20.50781\\-289.3037\\-37\\-28.32031\\-289.1987\\-37\\-32.22656\\-289.3116\\-37\\-34.17969\\-289.5732\\-37\\-38.08594\\-290.7472\\-37\\-40.03906\\-291.1906\\-37\\-41.99219\\-291.848\\-37\\-43.94531\\-292.7147\\-37\\-45.89844\\-293.2299\\-37\\-47.85156\\-294.0457\\-37\\-49.80469\\-294.7054\\-37\\-53.71094\\-295.4563\\-37\\-55.66406\\-296.1175\\-37\\-57.61719\\-296.6445\\-37\\-61.52344\\-297.2244\\-37\\-63.47656\\-297.5885\\-37\\-65.42969\\-298.0757\\-37\\-67.38281\\-298.376\\-37\\-71.28906\\-298.6073\\-37\\-75.19531\\-298.6102\\-37\\-79.10156\\-298.3849\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "321"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "108"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-79.10156\\-298.0757\\-35\\-81.05469\\-297.642\\-35\\-86.91406\\-296.818\\-35\\-88.86719\\-296.4201\\-35\\-90.82031\\-295.6425\\-35\\-94.72656\\-294.6568\\-35\\-96.67969\\-293.7377\\-35\\-98.63281\\-292.921\\-35\\-100.5859\\-291.7766\\-35\\-102.5391\\-290.8924\\-35\\-104.4922\\-289.6761\\-35\\-106.4453\\-288.9135\\-35\\-108.3984\\-287.6805\\-35\\-110.3516\\-286.7192\\-35\\-111.0053\\-286.1953\\-35\\-114.2578\\-283.9684\\-35\\-116.2109\\-282.9034\\-35\\-119.9544\\-280.3359\\-35\\-122.0703\\-278.7853\\-35\\-127.3548\\-274.4766\\-35\\-129.4728\\-272.5234\\-35\\-131.8359\\-270.2448\\-35\\-133.7891\\-268.5754\\-35\\-135.7422\\-266.4793\\-35\\-137.0959\\-264.7109\\-35\\-140.7439\\-260.8047\\-35\\-142.3404\\-258.8516\\-35\\-144.8632\\-254.9453\\-35\\-146.363\\-252.9922\\-35\\-147.6755\\-251.0391\\-35\\-148.6391\\-249.0859\\-35\\-149.8336\\-247.1328\\-35\\-150.6257\\-245.1797\\-35\\-151.8585\\-243.2266\\-35\\-152.6908\\-241.2734\\-35\\-153.8086\\-239.3203\\-35\\-154.4766\\-237.3672\\-35\\-155.3897\\-235.4141\\-35\\-156.1062\\-233.4609\\-35\\-156.5256\\-231.5078\\-35\\-157.362\\-229.5547\\-35\\-158.0363\\-227.6016\\-35\\-158.5414\\-225.6484\\-35\\-159.3541\\-223.6953\\-35\\-159.907\\-221.7422\\-35\\-160.8297\\-217.8359\\-35\\-161.4873\\-215.8828\\-35\\-161.8381\\-213.9297\\-35\\-162.5252\\-208.0703\\-35\\-163.3699\\-204.1641\\-35\\-163.6801\\-202.2109\\-35\\-164.1865\\-196.3516\\-35\\-164.8353\\-186.5859\\-35\\-164.9429\\-182.6797\\-35\\-164.8883\\-178.7734\\-35\\-164.4238\\-170.9609\\-35\\-163.8143\\-163.1484\\-35\\-163.5489\\-161.1953\\-35\\-162.6075\\-157.2891\\-35\\-162.0739\\-153.3828\\-35\\-161.74\\-151.4297\\-35\\-161.1559\\-149.4766\\-35\\-160.4411\\-147.5234\\-35\\-159.9255\\-145.5703\\-35\\-158.3134\\-141.6641\\-35\\-157.6941\\-139.7109\\-35\\-156.633\\-137.7578\\-35\\-156.1166\\-135.8047\\-35\\-155.298\\-133.8516\\-35\\-154.3818\\-131.8984\\-35\\-153.6969\\-129.9453\\-35\\-152.6062\\-127.9922\\-35\\-151.6811\\-126.0391\\-35\\-150.4369\\-124.0859\\-35\\-149.6878\\-122.1328\\-35\\-148.6087\\-120.1797\\-35\\-147.7286\\-118.2266\\-35\\-146.5428\\-116.2734\\-35\\-144.3224\\-112.3672\\-35\\-143.0325\\-110.4141\\-35\\-142.1274\\-108.4609\\-35\\-139.2865\\-104.5547\\-35\\-137.9428\\-102.6016\\-35\\-134.9273\\-98.69531\\-35\\-133.7891\\-97.33135\\-35\\-131.8359\\-95.46683\\-35\\-128.8152\\-92.83594\\-35\\-125.9766\\-90.6875\\-35\\-122.0703\\-88.17386\\-35\\-115.8447\\-85.02344\\-35\\-114.2578\\-84.50976\\-35\\-110.3516\\-82.70891\\-35\\-108.3984\\-82.02116\\-35\\-106.4453\\-81.63006\\-35\\-104.4922\\-80.68552\\-35\\-102.5391\\-80.29086\\-35\\-100.5859\\-79.64471\\-35\\-96.67969\\-78.61011\\-35\\-94.72656\\-77.98263\\-35\\-90.82031\\-77.3125\\-35\\-86.91406\\-76.38959\\-35\\-77.14844\\-75.71934\\-35\\-75.19531\\-75.18204\\-35\\-73.24219\\-74.95554\\-35\\-65.42969\\-74.80209\\-35\\-61.52344\\-74.79108\\-35\\-55.66406\\-74.97105\\-35\\-53.71094\\-74.95067\\-35\\-49.80469\\-75.64707\\-35\\-47.85156\\-75.77559\\-35\\-43.94531\\-75.93069\\-35\\-40.03906\\-76.18268\\-35\\-36.13281\\-76.53766\\-35\\-34.17969\\-76.82163\\-35\\-28.32031\\-78.31026\\-35\\-26.36719\\-78.95236\\-35\\-24.41406\\-79.75651\\-35\\-22.46094\\-80.35369\\-35\\-18.55469\\-82.09375\\-35\\-14.64844\\-84.2797\\-35\\-12.69531\\-85.84056\\-35\\-10.74219\\-87.54564\\-35\\-8.789063\\-88.90421\\-35\\-6.835938\\-90.45284\\-35\\-4.882813\\-92.3064\\-35\\-2.929688\\-93.88226\\-35\\-0.9765625\\-95.16528\\-35\\0.9765625\\-95.73975\\-35\\2.929688\\-94.57813\\-35\\4.882813\\-93.73689\\-35\\6.177145\\-94.78906\\-35\\6.835938\\-95.52364\\-35\\7.665427\\-96.74219\\-35\\8.215616\\-98.69531\\-35\\8.195466\\-100.6484\\-35\\7.8125\\-102.6016\\-35\\8.375\\-104.5547\\-35\\8.789063\\-105.0048\\-35\\10.74219\\-106.2934\\-35\\12.69531\\-106.062\\-35\\14.51994\\-104.5547\\-35\\15.44009\\-102.6016\\-35\\15.45367\\-100.6484\\-35\\14.62296\\-98.69531\\-35\\12.69531\\-96.71375\\-35\\11.18201\\-94.78906\\-35\\7.521609\\-90.88281\\-35\\9.190286\\-88.92969\\-35\\14.64844\\-83.7417\\-35\\16.60156\\-82.19456\\-35\\18.55469\\-81.09236\\-35\\24.41406\\-78.1814\\-35\\26.36719\\-77.44965\\-35\\28.32031\\-76.57489\\-35\\32.22656\\-75.63017\\-35\\34.17969\\-74.87173\\-35\\36.13281\\-74.54818\\-35\\40.03906\\-74.15841\\-35\\41.99219\\-72.89829\\-35\\43.94531\\-72.74275\\-35\\47.85156\\-72.62606\\-35\\49.80469\\-72.65191\\-35\\51.75781\\-72.3691\\-35\\55.66406\\-72.59789\\-35\\57.61719\\-72.65535\\-35\\63.47656\\-72.67616\\-35\\67.38281\\-72.75057\\-35\\71.28906\\-72.90796\\-35\\73.24219\\-73.92035\\-35\\75.19531\\-74.25786\\-35\\79.10156\\-74.44297\\-35\\83.00781\\-74.80991\\-35\\84.96094\\-75.38957\\-35\\86.91406\\-75.80595\\-35\\92.77344\\-76.5205\\-35\\96.67969\\-77.69922\\-35\\98.63281\\-78.14681\\-35\\100.5859\\-78.82797\\-35\\102.5391\\-79.7066\\-35\\106.4453\\-80.80842\\-35\\108.3984\\-81.77873\\-35\\110.3516\\-82.35171\\-35\\112.3047\\-83.38686\\-35\\114.2578\\-84.25246\\-35\\116.2109\\-85.51832\\-35\\118.1641\\-86.3523\\-35\\120.1172\\-87.54677\\-35\\122.0703\\-88.34375\\-35\\125.9766\\-91.21302\\-35\\128.6669\\-92.83594\\-35\\129.8828\\-93.75463\\-35\\131.8359\\-95.43756\\-35\\133.7891\\-97.34126\\-35\\134.9915\\-98.69531\\-35\\137.8439\\-102.6016\\-35\\139.1314\\-104.5547\\-35\\140.5956\\-106.5078\\-35\\141.9271\\-108.4609\\-35\\142.7624\\-110.4141\\-35\\143.9386\\-112.3672\\-35\\144.8025\\-114.3203\\-35\\146.104\\-116.2734\\-35\\146.9322\\-118.2266\\-35\\148.0456\\-120.1797\\-35\\148.7311\\-122.1328\\-35\\149.6983\\-124.0859\\-35\\150.4025\\-126.0391\\-35\\151.207\\-127.9922\\-35\\152.2132\\-129.9453\\-35\\152.8971\\-131.8984\\-35\\153.8847\\-133.8516\\-35\\155.0058\\-137.7578\\-35\\155.7549\\-139.7109\\-35\\156.2032\\-141.6641\\-35\\156.5222\\-143.6172\\-35\\157.8475\\-147.5234\\-35\\158.6143\\-151.4297\\-35\\159.2463\\-153.3828\\-35\\159.7448\\-155.3359\\-35\\160.2875\\-159.2422\\-35\\160.9043\\-163.1484\\-35\\161.3123\\-165.1016\\-35\\161.586\\-167.0547\\-35\\161.927\\-170.9609\\-35\\162.2652\\-178.7734\\-35\\162.4005\\-184.6328\\-35\\162.4656\\-190.4922\\-35\\162.4533\\-196.3516\\-35\\162.4005\\-202.2109\\-35\\162.2463\\-208.0703\\-35\\162.08\\-211.9766\\-35\\161.814\\-215.8828\\-35\\161.3253\\-219.7891\\-35\\160.8276\\-221.7422\\-35\\160.4385\\-223.6953\\-35\\159.7602\\-227.6016\\-35\\158.3538\\-231.5078\\-35\\157.8547\\-233.4609\\-35\\156.9589\\-235.4141\\-35\\155.7651\\-239.3203\\-35\\154.739\\-241.2734\\-35\\153.9612\\-243.2266\\-35\\152.7491\\-245.1797\\-35\\151.7263\\-247.1328\\-35\\149.1623\\-251.0391\\-35\\148.0841\\-252.9922\\-35\\146.5093\\-254.9453\\-35\\144.7511\\-256.8984\\-35\\143.1393\\-258.8516\\-35\\141.66\\-260.8047\\-35\\139.7736\\-262.7578\\-35\\137.7537\\-264.7109\\-35\\135.9724\\-266.6641\\-35\\133.7891\\-268.7393\\-35\\131.8359\\-270.2173\\-35\\129.8828\\-271.8971\\-35\\127.9297\\-273.7753\\-35\\125.9766\\-275.3382\\-35\\124.0234\\-276.7408\\-35\\122.0703\\-278.0139\\-35\\121.6654\\-278.3828\\-35\\118.1641\\-280.9455\\-35\\110.3516\\-285.4059\\-35\\108.3984\\-286.696\\-35\\106.4453\\-287.5287\\-35\\104.4922\\-288.6401\\-35\\102.5391\\-289.2448\\-35\\98.63281\\-290.9599\\-35\\96.67969\\-291.5882\\-35\\94.72656\\-292.5774\\-35\\92.77344\\-293.1263\\-35\\88.86719\\-294.5088\\-35\\86.91406\\-294.866\\-35\\83.00781\\-295.3624\\-35\\81.05469\\-295.6953\\-35\\79.10156\\-296.1324\\-35\\77.14844\\-296.4619\\-35\\73.24219\\-296.7302\\-35\\69.33594\\-296.7711\\-35\\65.42969\\-296.6519\\-35\\61.52344\\-296.2122\\-35\\57.61719\\-295.4056\\-35\\53.71094\\-294.7674\\-35\\51.75781\\-294.5307\\-35\\47.85156\\-293.2363\\-35\\45.89844\\-292.7936\\-35\\43.94531\\-292.1768\\-35\\41.99219\\-291.3946\\-35\\38.08594\\-290.5033\\-35\\36.13281\\-289.7484\\-35\\34.17969\\-289.2907\\-35\\30.27344\\-288.8441\\-35\\28.32031\\-288.6902\\-35\\24.41406\\-288.6158\\-35\\18.55469\\-288.9633\\-35\\14.64844\\-289.1436\\-35\\10.74219\\-289.3908\\-35\\2.929688\\-290.0436\\-35\\0.9765625\\-290.14\\-35\\-0.9765625\\-290.356\\-35\\-4.882813\\-290.4806\\-35\\-8.789063\\-290.5308\\-35\\-12.69531\\-290.4138\\-35\\-14.64844\\-290.4138\\-35\\-20.50781\\-290.2255\\-35\\-26.36719\\-289.9975\\-35\\-30.27344\\-289.9093\\-35\\-32.22656\\-289.9975\\-35\\-34.17969\\-290.2785\\-35\\-40.03906\\-291.344\\-35\\-43.94531\\-292.7597\\-35\\-45.89844\\-293.2277\\-35\\-49.80469\\-294.6281\\-35\\-53.71094\\-295.3287\\-35\\-55.66406\\-295.8447\\-35\\-57.61719\\-296.4619\\-35\\-59.57031\\-296.7836\\-35\\-63.47656\\-297.3235\\-35\\-67.38281\\-298.0884\\-35\\-71.28906\\-298.4023\\-35\\-75.19531\\-298.4023\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "305"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "109"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-75.19531\\-298.0757\\-33\\-77.14844\\-297.8906\\-33\\-81.05469\\-297.3484\\-33\\-86.91406\\-296.6519\\-33\\-88.86719\\-296.0896\\-33\\-90.82031\\-295.3983\\-33\\-92.77344\\-294.9665\\-33\\-94.72656\\-294.4025\\-33\\-96.67969\\-293.4147\\-33\\-98.63281\\-292.6886\\-33\\-100.5859\\-291.4472\\-33\\-102.5391\\-290.6588\\-33\\-104.4922\\-289.4442\\-33\\-106.4453\\-288.6961\\-33\\-108.3984\\-287.4465\\-33\\-110.3516\\-286.4323\\-33\\-113.5274\\-284.2422\\-33\\-114.2578\\-283.6589\\-33\\-116.2109\\-282.6435\\-33\\-118.1641\\-281.3311\\-33\\-122.0703\\-278.4642\\-33\\-125.9766\\-275.4214\\-33\\-127.9297\\-273.7441\\-33\\-131.8359\\-269.9574\\-33\\-133.3308\\-268.6172\\-33\\-135.2574\\-266.6641\\-33\\-136.9529\\-264.7109\\-33\\-140.5882\\-260.8047\\-33\\-142.1701\\-258.8516\\-33\\-143.3144\\-256.8984\\-33\\-144.696\\-254.9453\\-33\\-146.2085\\-252.9922\\-33\\-147.4609\\-250.9622\\-33\\-149.6452\\-247.1328\\-33\\-150.4894\\-245.1797\\-33\\-151.6509\\-243.2266\\-33\\-152.5093\\-241.2734\\-33\\-153.6193\\-239.3203\\-33\\-155.0993\\-235.4141\\-33\\-155.9683\\-233.4609\\-33\\-156.3971\\-231.5078\\-33\\-157.0402\\-229.5547\\-33\\-157.8585\\-227.6016\\-33\\-158.3303\\-225.6484\\-33\\-159.7129\\-221.7422\\-33\\-160.5504\\-217.8359\\-33\\-161.6465\\-213.9297\\-33\\-161.9367\\-211.9766\\-33\\-162.5977\\-206.1172\\-33\\-163.3699\\-202.2109\\-33\\-163.6684\\-200.2578\\-33\\-163.9862\\-196.3516\\-33\\-164.2192\\-192.4453\\-33\\-164.4868\\-186.5859\\-33\\-164.5387\\-184.6328\\-33\\-164.5329\\-178.7734\\-33\\-164.2131\\-170.9609\\-33\\-163.8006\\-165.1016\\-33\\-163.5649\\-163.1484\\-33\\-162.7215\\-159.2422\\-33\\-162.3919\\-157.2891\\-33\\-161.8937\\-153.3828\\-33\\-161.4674\\-151.4297\\-33\\-160.7357\\-149.4766\\-33\\-159.662\\-145.5703\\-33\\-158.7068\\-143.6172\\-33\\-158.0791\\-141.6641\\-33\\-157.3351\\-139.7109\\-33\\-156.4077\\-137.7578\\-33\\-155.8878\\-135.8047\\-33\\-154.9241\\-133.8516\\-33\\-153.3203\\-129.8694\\-33\\-150.2906\\-124.0859\\-33\\-148.4312\\-120.1797\\-33\\-146.3323\\-116.2734\\-33\\-145.1129\\-114.3203\\-33\\-144.0965\\-112.3672\\-33\\-142.7772\\-110.4141\\-33\\-141.9173\\-108.4609\\-33\\-140.5485\\-106.5078\\-33\\-139.0365\\-104.5547\\-33\\-136.3212\\-100.6484\\-33\\-134.7724\\-98.69531\\-33\\-133.0511\\-96.74219\\-33\\-131.8359\\-95.56308\\-33\\-128.6534\\-92.83594\\-33\\-127.9297\\-92.34766\\-33\\-125.9766\\-90.75511\\-33\\-122.0703\\-88.22252\\-33\\-115.8673\\-85.02344\\-33\\-114.2578\\-84.51812\\-33\\-110.3516\\-82.73704\\-33\\-108.3984\\-82.06076\\-33\\-106.4453\\-81.66048\\-33\\-104.4922\\-80.6393\\-33\\-102.5391\\-80.25484\\-33\\-100.5859\\-79.60236\\-33\\-94.72656\\-77.8304\\-33\\-88.86719\\-76.64367\\-33\\-86.91406\\-76.30599\\-33\\-84.96094\\-76.13485\\-33\\-83.00781\\-76.06454\\-33\\-79.10156\\-75.78166\\-33\\-77.14844\\-75.5544\\-33\\-75.19531\\-74.96405\\-33\\-73.24219\\-74.77315\\-33\\-65.42969\\-74.66368\\-33\\-59.57031\\-74.67734\\-33\\-53.71094\\-74.76235\\-33\\-51.75781\\-74.85659\\-33\\-49.80469\\-75.10057\\-33\\-47.85156\\-75.51675\\-33\\-45.89844\\-75.69258\\-33\\-40.03906\\-76.03787\\-33\\-36.13281\\-76.37472\\-33\\-34.17969\\-76.61517\\-33\\-32.22656\\-77.03273\\-33\\-26.36719\\-78.69114\\-33\\-24.41406\\-79.54771\\-33\\-20.50781\\-80.90957\\-33\\-16.60156\\-82.82617\\-33\\-13.15542\\-85.02344\\-33\\-8.789063\\-88.5015\\-33\\-6.835938\\-90.13004\\-33\\-4.882813\\-91.90851\\-33\\-2.929688\\-93.49376\\-33\\-0.9765625\\-94.56068\\-33\\0.9765625\\-95.23925\\-33\\5.223474\\-92.83594\\-33\\6.835938\\-91.64049\\-33\\7.17926\\-90.88281\\-33\\8.789063\\-88.9389\\-33\\12.81178\\-85.02344\\-33\\15.15447\\-83.07031\\-33\\16.60156\\-82.03667\\-33\\18.55469\\-80.80146\\-33\\20.50781\\-79.94405\\-33\\22.46094\\-78.87109\\-33\\26.36719\\-77.14173\\-33\\28.32031\\-76.40421\\-33\\30.27344\\-76.01869\\-33\\32.22656\\-75.44561\\-33\\34.17969\\-74.71684\\-33\\38.08594\\-74.15755\\-33\\40.03906\\-73.20995\\-33\\41.99219\\-72.79937\\-33\\45.89844\\-72.55756\\-33\\47.85156\\-71.9504\\-33\\49.80469\\-72.34847\\-33\\51.75781\\-71.75673\\-33\\55.66406\\-71.91644\\-33\\57.61719\\-72.51304\\-33\\59.57031\\-72.63519\\-33\\63.47656\\-72.64856\\-33\\67.38281\\-72.71235\\-33\\71.28906\\-72.85171\\-33\\73.24219\\-72.98988\\-33\\75.19531\\-74.22894\\-33\\77.14844\\-74.30492\\-33\\81.05469\\-74.5612\\-33\\83.00781\\-74.76597\\-33\\86.91406\\-75.70703\\-33\\92.77344\\-76.46777\\-33\\94.72656\\-77.02393\\-33\\96.67969\\-77.69614\\-33\\98.63281\\-78.10754\\-33\\100.5859\\-78.78703\\-33\\102.5391\\-79.69383\\-33\\106.4453\\-80.8206\\-33\\108.3984\\-81.77034\\-33\\110.3516\\-82.35171\\-33\\112.3047\\-83.37762\\-33\\114.2578\\-84.25893\\-33\\116.2109\\-85.50512\\-33\\118.1641\\-86.33569\\-33\\120.1172\\-87.52795\\-33\\122.0703\\-88.34375\\-33\\125.9766\\-91.20126\\-33\\128.8035\\-92.83594\\-33\\129.8828\\-93.64333\\-33\\131.8359\\-95.5\\-33\\134.8604\\-98.69531\\-33\\136.3636\\-100.6484\\-33\\137.5722\\-102.6016\\-33\\138.9013\\-104.5547\\-33\\140.3973\\-106.5078\\-33\\141.6098\\-108.4609\\-33\\144.6006\\-114.3203\\-33\\145.7915\\-116.2734\\-33\\146.6604\\-118.2266\\-33\\147.7771\\-120.1797\\-33\\149.3117\\-124.0859\\-33\\150.2087\\-126.0391\\-33\\150.8304\\-127.9922\\-33\\151.8759\\-129.9453\\-33\\152.5678\\-131.8984\\-33\\153.4931\\-133.8516\\-33\\154.2076\\-135.8047\\-33\\154.7054\\-137.7578\\-33\\155.4195\\-139.7109\\-33\\156.0289\\-141.6641\\-33\\156.3488\\-143.6172\\-33\\156.7815\\-145.5703\\-33\\157.5521\\-147.5234\\-33\\158.0166\\-149.4766\\-33\\158.3549\\-151.4297\\-33\\158.7929\\-153.3828\\-33\\159.4615\\-155.3359\\-33\\159.8255\\-157.2891\\-33\\160.6061\\-163.1484\\-33\\161.2859\\-167.0547\\-33\\161.7576\\-170.9609\\-33\\161.9741\\-174.8672\\-33\\162.1922\\-180.7266\\-33\\162.2821\\-184.6328\\-33\\162.3204\\-190.4922\\-33\\162.3204\\-196.3516\\-33\\162.2532\\-202.2109\\-33\\162.0977\\-208.0703\\-33\\161.8019\\-213.9297\\-33\\161.3253\\-217.8359\\-33\\160.5103\\-221.7422\\-33\\159.9006\\-225.6484\\-33\\159.4727\\-227.6016\\-33\\158.6616\\-229.5547\\-33\\157.5834\\-233.4609\\-33\\156.6319\\-235.4141\\-33\\156.1671\\-237.3672\\-33\\155.4627\\-239.3203\\-33\\154.4788\\-241.2734\\-33\\153.6638\\-243.2266\\-33\\153.3203\\-243.7148\\-33\\150.1543\\-249.0859\\-33\\148.8472\\-251.0391\\-33\\147.6607\\-252.9922\\-33\\146.1736\\-254.9453\\-33\\141.6016\\-260.2389\\-33\\139.6484\\-262.2876\\-33\\137.2034\\-264.7109\\-33\\135.3683\\-266.6641\\-33\\133.2571\\-268.6172\\-33\\129.8828\\-271.56\\-33\\127.9297\\-273.3936\\-33\\125.9766\\-274.9718\\-33\\124.0234\\-276.1739\\-33\\122.0703\\-277.5901\\-33\\120.1172\\-279.111\\-33\\118.1641\\-280.4541\\-33\\116.2109\\-281.5782\\-33\\114.2578\\-282.8593\\-33\\112.3047\\-283.7471\\-33\\110.3516\\-285.0407\\-33\\108.275\\-286.1953\\-33\\104.3972\\-288.1484\\-33\\102.5391\\-288.9846\\-33\\100.5859\\-289.5518\\-33\\98.63281\\-290.5988\\-33\\96.67969\\-291.1896\\-33\\92.77344\\-292.8071\\-33\\90.82031\\-293.3317\\-33\\88.86719\\-294.0156\\-33\\86.91406\\-294.5987\\-33\\84.96094\\-294.9079\\-33\\81.05469\\-295.3585\\-33\\79.10156\\-295.6331\\-33\\75.19531\\-296.3117\\-33\\71.28906\\-296.5198\\-33\\67.38281\\-296.4839\\-33\\65.42969\\-296.369\\-33\\63.47656\\-296.1187\\-33\\59.57031\\-295.4694\\-33\\55.66406\\-295.0199\\-33\\51.75781\\-294.3732\\-33\\49.80469\\-293.7068\\-33\\47.85156\\-293.1611\\-33\\45.89844\\-292.7522\\-33\\43.94531\\-292.2033\\-33\\41.99219\\-291.4688\\-33\\38.08594\\-290.7072\\-33\\34.17969\\-289.5372\\-33\\30.27344\\-289.101\\-33\\24.41406\\-289.0636\\-33\\18.55469\\-289.3863\\-33\\14.64844\\-289.7565\\-33\\10.74219\\-290.2913\\-33\\6.835938\\-290.6792\\-33\\-0.9765625\\-291.0558\\-33\\-8.789063\\-291.1735\\-33\\-16.60156\\-291.0454\\-33\\-20.50781\\-290.9287\\-33\\-26.36719\\-290.8174\\-33\\-32.22656\\-290.7768\\-33\\-36.13281\\-290.968\\-33\\-38.08594\\-291.1748\\-33\\-40.03906\\-291.5391\\-33\\-41.99219\\-292.3022\\-33\\-45.89844\\-293.2545\\-33\\-49.80469\\-294.5614\\-33\\-53.71094\\-295.2131\\-33\\-55.66406\\-295.6307\\-33\\-57.61719\\-296.2369\\-33\\-59.57031\\-296.6405\\-33\\-65.42969\\-297.3689\\-33\\-69.33594\\-297.9061\\-33\\-73.24219\\-298.1378\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "299"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "110"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-296.3971\\-31\\-88.86719\\-295.6913\\-31\\-92.77344\\-294.7879\\-31\\-94.72656\\-294.0765\\-31\\-96.67969\\-293.1526\\-31\\-98.63281\\-292.3912\\-31\\-100.5859\\-291.2066\\-31\\-102.5391\\-290.3642\\-31\\-104.4922\\-289.2532\\-31\\-106.4453\\-288.4326\\-31\\-112.3047\\-284.8269\\-31\\-114.2578\\-283.4284\\-31\\-116.2109\\-282.346\\-31\\-118.1641\\-281.1135\\-31\\-121.7317\\-278.3828\\-31\\-122.0703\\-278.0623\\-31\\-125.9766\\-275.2172\\-31\\-127.9297\\-273.5193\\-31\\-129.8828\\-271.6315\\-31\\-133.7891\\-267.9776\\-31\\-135.0666\\-266.6641\\-31\\-136.7996\\-264.7109\\-31\\-140.4039\\-260.8047\\-31\\-141.956\\-258.8516\\-31\\-143.1362\\-256.8984\\-31\\-146.0337\\-252.9922\\-31\\-148.4007\\-249.0859\\-31\\-151.4048\\-243.2266\\-31\\-153.3434\\-239.3203\\-31\\-154.2066\\-237.3672\\-31\\-154.8733\\-235.4141\\-31\\-155.8079\\-233.4609\\-31\\-156.7815\\-229.5547\\-31\\-157.6613\\-227.6016\\-31\\-158.6616\\-223.6953\\-31\\-159.4502\\-221.7422\\-31\\-159.952\\-219.7891\\-31\\-160.7783\\-215.8828\\-31\\-161.3909\\-213.9297\\-31\\-161.7694\\-211.9766\\-31\\-162.0265\\-210.0234\\-31\\-162.4127\\-206.1172\\-31\\-162.9562\\-202.2109\\-31\\-163.3817\\-200.2578\\-31\\-163.6311\\-198.3047\\-31\\-163.9411\\-194.3984\\-31\\-164.1333\\-190.4922\\-31\\-164.2948\\-184.6328\\-31\\-164.3013\\-180.7266\\-31\\-164.191\\-174.8672\\-31\\-164.0172\\-170.9609\\-31\\-163.7612\\-167.0547\\-31\\-163.5459\\-165.1016\\-31\\-163.2276\\-163.1484\\-31\\-162.7675\\-161.1953\\-31\\-162.4577\\-159.2422\\-31\\-161.9707\\-155.3359\\-31\\-161.6684\\-153.3828\\-31\\-160.4353\\-149.4766\\-31\\-159.9515\\-147.5234\\-31\\-159.2882\\-145.5703\\-31\\-158.4017\\-143.6172\\-31\\-157.8212\\-141.6641\\-31\\-156.8915\\-139.7109\\-31\\-155.5966\\-135.8047\\-31\\-154.616\\-133.8516\\-31\\-153.9329\\-131.8984\\-31\\-152.0981\\-127.9922\\-31\\-150.9386\\-126.0391\\-31\\-150.1496\\-124.0859\\-31\\-149.057\\-122.1328\\-31\\-148.2305\\-120.1797\\-31\\-147.0501\\-118.2266\\-31\\-146.088\\-116.2734\\-31\\-144.7833\\-114.3203\\-31\\-143.797\\-112.3672\\-31\\-142.6453\\-110.4141\\-31\\-141.6262\\-108.4609\\-31\\-140.3625\\-106.5078\\-31\\-138.8288\\-104.5547\\-31\\-136.1103\\-100.6484\\-31\\-134.5607\\-98.69531\\-31\\-131.8359\\-95.72089\\-31\\-129.8828\\-94.01194\\-31\\-127.9297\\-92.48942\\-31\\-125.9766\\-90.85918\\-31\\-122.0703\\-88.29899\\-31\\-119.6696\\-86.97656\\-31\\-115.7588\\-85.02344\\-31\\-114.2578\\-84.54382\\-31\\-110.3516\\-82.75\\-31\\-108.3984\\-82.08082\\-31\\-106.4453\\-81.67236\\-31\\-104.4922\\-80.61515\\-31\\-102.5391\\-80.25484\\-31\\-100.5859\\-79.54996\\-31\\-94.72656\\-77.78241\\-31\\-88.86719\\-76.45465\\-31\\-86.91406\\-76.2078\\-31\\-83.00781\\-75.97771\\-31\\-79.10156\\-75.68805\\-31\\-75.19531\\-74.79173\\-31\\-73.24219\\-74.65525\\-31\\-69.33594\\-74.63576\\-31\\-63.47656\\-74.54818\\-31\\-57.61719\\-74.55288\\-31\\-53.71094\\-74.60013\\-31\\-49.80469\\-74.82132\\-31\\-43.94531\\-75.5621\\-31\\-36.13281\\-76.23438\\-31\\-34.17969\\-76.44945\\-31\\-32.22656\\-76.79333\\-31\\-28.32031\\-77.93755\\-31\\-26.36719\\-78.45331\\-31\\-22.46094\\-79.97583\\-31\\-20.50781\\-80.62554\\-31\\-18.55469\\-81.69363\\-31\\-16.60156\\-82.45318\\-31\\-12.69531\\-84.96501\\-31\\-10.74219\\-86.54977\\-31\\-4.882813\\-91.51856\\-31\\-2.929688\\-93.08206\\-31\\-0.9765625\\-94.20313\\-31\\0.9765625\\-94.67372\\-31\\2.929688\\-93.92034\\-31\\4.453462\\-92.83594\\-31\\6.623299\\-90.88281\\-31\\8.789063\\-88.62005\\-31\\12.69531\\-84.80186\\-31\\14.74095\\-83.07031\\-31\\18.55469\\-80.61207\\-31\\20.50781\\-79.79091\\-31\\22.46094\\-78.69322\\-31\\24.41406\\-77.85141\\-31\\26.36719\\-76.89756\\-31\\28.32031\\-76.26989\\-31\\30.27344\\-75.90271\\-31\\34.17969\\-74.62238\\-31\\36.13281\\-74.3728\\-31\\38.08594\\-73.90394\\-31\\40.03906\\-72.85171\\-31\\43.94531\\-72.58971\\-31\\45.89844\\-71.9747\\-31\\47.85156\\-71.6944\\-31\\51.75781\\-71.65284\\-31\\55.66406\\-71.69079\\-31\\59.57031\\-72.17849\\-31\\61.52344\\-72.16933\\-31\\63.47656\\-72.34198\\-31\\65.42969\\-72.64184\\-31\\73.24219\\-72.88874\\-31\\75.19531\\-74.19405\\-31\\77.14844\\-74.26955\\-31\\83.00781\\-74.7207\\-31\\84.96094\\-74.99792\\-31\\86.91406\\-75.63908\\-31\\88.86719\\-75.95788\\-31\\92.77344\\-76.43834\\-31\\96.67969\\-77.68386\\-31\\98.63281\\-78.11369\\-31\\100.5859\\-78.79707\\-31\\102.5391\\-79.68107\\-31\\106.4453\\-80.8206\\-31\\108.3984\\-81.75323\\-31\\110.3516\\-82.34716\\-31\\112.3047\\-83.35428\\-31\\114.2578\\-84.2455\\-31\\116.2109\\-85.47159\\-31\\118.1641\\-86.32349\\-31\\120.1172\\-87.53366\\-31\\122.0703\\-88.34375\\-31\\125.9766\\-91.1871\\-31\\128.7802\\-92.83594\\-31\\129.8828\\-93.67642\\-31\\131.8359\\-95.56551\\-31\\134.7222\\-98.69531\\-31\\136.1576\\-100.6484\\-31\\137.318\\-102.6016\\-31\\137.6953\\-103.0236\\-31\\139.6484\\-105.8645\\-31\\140.1817\\-106.5078\\-31\\141.2483\\-108.4609\\-31\\142.4622\\-110.4141\\-31\\143.2789\\-112.3672\\-31\\144.3991\\-114.3203\\-31\\145.3065\\-116.2734\\-31\\146.435\\-118.2266\\-31\\148.3162\\-122.1328\\-31\\148.9533\\-124.0859\\-31\\149.9581\\-126.0391\\-31\\150.5969\\-127.9922\\-31\\151.5158\\-129.9453\\-31\\152.9744\\-133.8516\\-31\\153.9329\\-135.8047\\-31\\155.0573\\-139.7109\\-31\\155.8079\\-141.6641\\-31\\156.5376\\-145.5703\\-31\\157.7917\\-149.4766\\-31\\158.5053\\-153.3828\\-31\\159.5764\\-157.2891\\-31\\159.9006\\-159.2422\\-31\\160.3632\\-163.1484\\-31\\160.915\\-167.0547\\-31\\161.5326\\-170.9609\\-31\\161.826\\-174.8672\\-31\\162.0626\\-180.7266\\-31\\162.1506\\-184.6328\\-31\\162.1987\\-190.4922\\-31\\162.1933\\-196.3516\\-31\\162.1212\\-202.2109\\-31\\162.0265\\-206.1172\\-31\\161.8726\\-210.0234\\-31\\161.5988\\-213.9297\\-31\\161.2992\\-215.8828\\-31\\160.579\\-219.7891\\-31\\159.6622\\-225.6484\\-31\\158.3849\\-229.5547\\-31\\157.9316\\-231.5078\\-31\\156.4254\\-235.4141\\-31\\155.9808\\-237.3672\\-31\\155.0589\\-239.3203\\-31\\154.2622\\-241.2734\\-31\\153.3203\\-243.1461\\-31\\152.1473\\-245.1797\\-31\\150.8557\\-247.1328\\-31\\149.8643\\-249.0859\\-31\\148.5596\\-251.0391\\-31\\145.7779\\-254.9453\\-31\\142.4984\\-258.8516\\-31\\140.7357\\-260.8047\\-31\\138.7475\\-262.7578\\-31\\134.9376\\-266.6641\\-31\\131.8359\\-269.5264\\-31\\127.9297\\-272.9438\\-31\\125.9464\\-274.4766\\-31\\124.0234\\-275.7901\\-31\\120.1172\\-278.6888\\-31\\118.1641\\-279.9012\\-31\\116.2109\\-281.2369\\-31\\114.2578\\-282.4081\\-31\\112.3047\\-283.3681\\-31\\110.3516\\-284.6237\\-31\\108.3984\\-285.5667\\-31\\106.4453\\-286.7895\\-31\\104.4922\\-287.5987\\-31\\102.5391\\-288.6635\\-31\\100.5859\\-289.2434\\-31\\98.63281\\-289.9853\\-31\\96.67969\\-290.8711\\-31\\94.72656\\-291.455\\-31\\92.77344\\-292.4161\\-31\\88.86719\\-293.5165\\-31\\86.91406\\-294.213\\-31\\84.96094\\-294.6487\\-31\\83.00781\\-294.9134\\-31\\73.24219\\-295.985\\-31\\69.33594\\-296.1723\\-31\\67.38281\\-296.1048\\-31\\61.52344\\-295.45\\-31\\55.66406\\-294.8844\\-31\\53.71094\\-294.6121\\-31\\51.75781\\-294.173\\-31\\49.80469\\-293.5349\\-31\\45.89844\\-292.7075\\-31\\43.94531\\-292.1768\\-31\\41.99219\\-291.5288\\-31\\40.03906\\-291.1318\\-31\\36.13281\\-290.4421\\-31\\34.17969\\-289.8722\\-31\\32.22656\\-289.5245\\-31\\30.27344\\-289.3119\\-31\\24.41406\\-289.4443\\-31\\20.50781\\-289.8278\\-31\\16.60156\\-290.4206\\-31\\12.69531\\-290.8312\\-31\\2.929688\\-291.5471\\-31\\-0.9765625\\-291.7482\\-31\\-6.835938\\-291.9523\\-31\\-10.74219\\-291.9673\\-31\\-16.60156\\-291.6902\\-31\\-18.55469\\-291.5273\\-31\\-22.46094\\-291.4749\\-31\\-30.27344\\-291.2858\\-31\\-34.17969\\-291.2552\\-31\\-36.13281\\-291.3088\\-31\\-38.08594\\-291.463\\-31\\-40.03906\\-291.8228\\-31\\-41.99219\\-292.4611\\-31\\-45.89844\\-293.2796\\-31\\-49.80469\\-294.5056\\-31\\-51.75781\\-294.8474\\-31\\-55.66406\\-295.4277\\-31\\-59.57031\\-296.4587\\-31\\-61.52344\\-296.7368\\-31\\-67.38281\\-297.3317\\-31\\-71.28906\\-297.6321\\-31\\-75.19531\\-297.6321\\-31\\-79.10156\\-297.3235\\-31\\-84.96094\\-296.7476\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "303"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "111"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.86719\\-295.3891\\-29\\-90.82031\\-295.0435\\-29\\-92.77344\\-294.5739\\-29\\-94.72656\\-293.6961\\-29\\-96.67969\\-292.9198\\-29\\-100.5859\\-290.9996\\-29\\-102.5391\\-289.9261\\-29\\-104.4922\\-289.0707\\-29\\-108.3984\\-287.012\\-29\\-110.3516\\-285.6906\\-29\\-112.3047\\-284.54\\-29\\-114.2578\\-283.2092\\-29\\-118.1641\\-280.844\\-29\\-118.747\\-280.3359\\-29\\-121.3882\\-278.3828\\-29\\-122.0703\\-277.7517\\-29\\-124.0234\\-276.2456\\-29\\-125.9766\\-274.9683\\-29\\-127.9297\\-273.2907\\-29\\-133.7891\\-267.7868\\-29\\-134.882\\-266.6641\\-29\\-140.2001\\-260.8047\\-29\\-141.6567\\-258.8516\\-29\\-142.9618\\-256.8984\\-29\\-143.5547\\-256.1766\\-29\\-145.8047\\-252.9922\\-29\\-146.9632\\-251.0391\\-29\\-148.2633\\-249.0859\\-29\\-149.1699\\-247.1328\\-29\\-150.2418\\-245.1797\\-29\\-151.083\\-243.2266\\-29\\-152.1915\\-241.2734\\-29\\-153.054\\-239.3203\\-29\\-154.0684\\-237.3672\\-29\\-154.6798\\-235.4141\\-29\\-155.6036\\-233.4609\\-29\\-156.1607\\-231.5078\\-29\\-156.5694\\-229.5547\\-29\\-157.401\\-227.6016\\-29\\-157.9988\\-225.6484\\-29\\-158.4379\\-223.6953\\-29\\-159.7786\\-219.7891\\-29\\-160.5108\\-215.8828\\-29\\-161.5791\\-211.9766\\-29\\-161.8963\\-210.0234\\-29\\-162.6408\\-202.2109\\-29\\-163.0308\\-200.2578\\-29\\-163.6136\\-196.3516\\-29\\-163.8929\\-192.4453\\-29\\-164.1026\\-184.6328\\-29\\-164.1121\\-180.7266\\-29\\-164.0228\\-174.8672\\-29\\-163.8449\\-170.9609\\-29\\-163.5063\\-167.0547\\-29\\-162.4874\\-161.1953\\-29\\-162.0614\\-157.2891\\-29\\-161.7942\\-155.3359\\-29\\-161.3787\\-153.3828\\-29\\-160.7096\\-151.4297\\-29\\-159.7129\\-147.5234\\-29\\-158.8135\\-145.5703\\-29\\-157.5084\\-141.6641\\-29\\-156.5818\\-139.7109\\-29\\-156.0509\\-137.7578\\-29\\-154.3752\\-133.8516\\-29\\-153.6503\\-131.8984\\-29\\-152.6515\\-129.9453\\-29\\-151.8138\\-127.9922\\-29\\-150.6145\\-126.0391\\-29\\-149.9581\\-124.0859\\-29\\-148.7608\\-122.1328\\-29\\-147.999\\-120.1797\\-29\\-146.7677\\-118.2266\\-29\\-145.8748\\-116.2734\\-29\\-144.561\\-114.3203\\-29\\-143.4346\\-112.3672\\-29\\-142.511\\-110.4141\\-29\\-140.1565\\-106.5078\\-29\\-139.6484\\-105.9294\\-29\\-137.6953\\-103.2129\\-29\\-137.1582\\-102.6016\\-29\\-135.8955\\-100.6484\\-29\\-133.7891\\-98.07462\\-29\\-131.8359\\-95.88188\\-29\\-130.669\\-94.78906\\-29\\-125.8329\\-90.88281\\-29\\-122.0703\\-88.32612\\-29\\-119.7007\\-86.97656\\-29\\-115.6006\\-85.02344\\-29\\-114.2578\\-84.57046\\-29\\-110.3516\\-82.76317\\-29\\-108.3984\\-82.08733\\-29\\-106.4453\\-81.70571\\-29\\-104.4922\\-80.68552\\-29\\-102.5391\\-80.29086\\-29\\-99.46646\\-79.16406\\-29\\-94.72656\\-77.77595\\-29\\-92.77344\\-77.34375\\-29\\-90.82031\\-76.77444\\-29\\-88.86719\\-76.37905\\-29\\-86.91406\\-76.12951\\-29\\-81.05469\\-75.74268\\-29\\-79.10156\\-75.37691\\-29\\-77.14844\\-74.90054\\-29\\-75.19531\\-74.6563\\-29\\-73.24219\\-74.56498\\-29\\-67.38281\\-74.50035\\-29\\-65.42969\\-74.51588\\-29\\-57.61719\\-74.43577\\-29\\-53.71094\\-74.49546\\-29\\-49.80469\\-74.67325\\-29\\-43.94531\\-75.05933\\-29\\-41.99219\\-75.57878\\-29\\-38.08594\\-75.91878\\-29\\-34.17969\\-76.32469\\-29\\-32.22656\\-76.5857\\-29\\-30.27344\\-77.03403\\-29\\-28.32031\\-77.733\\-29\\-24.41406\\-78.94027\\-29\\-22.46094\\-79.83389\\-29\\-20.50781\\-80.42315\\-29\\-18.55469\\-81.45972\\-29\\-16.60156\\-82.21582\\-29\\-14.64844\\-83.4505\\-29\\-12.69531\\-84.57554\\-29\\-8.789063\\-87.99354\\-29\\-6.835938\\-89.44256\\-29\\-4.882813\\-91.0797\\-29\\-2.929688\\-92.60021\\-29\\-0.9765625\\-93.80022\\-29\\0.9765625\\-94.09863\\-29\\2.929688\\-93.7316\\-29\\4.882813\\-92.19989\\-29\\6.312779\\-90.88281\\-29\\8.789063\\-88.35395\\-29\\12.69531\\-84.51296\\-29\\14.64844\\-82.85419\\-29\\16.60156\\-81.78332\\-29\\18.55469\\-80.40149\\-29\\21.06081\\-79.16406\\-29\\24.41406\\-77.6487\\-29\\26.36719\\-76.70286\\-29\\28.32031\\-76.16966\\-29\\30.27344\\-75.73949\\-29\\32.22656\\-74.91449\\-29\\34.17969\\-74.53181\\-29\\36.13281\\-74.30492\\-29\\38.08594\\-73.81516\\-29\\40.03906\\-72.78273\\-29\\41.99219\\-72.6904\\-29\\43.94531\\-72.48389\\-29\\45.89844\\-71.70185\\-29\\47.85156\\-71.63816\\-29\\57.61719\\-71.69079\\-29\\63.47656\\-71.80933\\-29\\65.42969\\-72.44154\\-29\\67.38281\\-72.68324\\-29\\73.24219\\-72.87\\-29\\75.19531\\-73.06896\\-29\\77.14844\\-74.24056\\-29\\83.00781\\-74.66781\\-29\\84.96094\\-74.94004\\-29\\86.91406\\-75.61476\\-29\\88.86719\\-75.93845\\-29\\92.77344\\-76.42358\\-29\\96.67969\\-77.66792\\-29\\98.63281\\-78.17066\\-29\\100.5859\\-78.84925\\-29\\102.5391\\-79.687\\-29\\106.4453\\-80.83296\\-29\\108.3984\\-81.75766\\-29\\110.3516\\-82.35171\\-29\\112.3047\\-83.35228\\-29\\114.2578\\-84.24987\\-29\\116.2109\\-85.44774\\-29\\118.1641\\-86.30743\\-29\\120.1172\\-87.53366\\-29\\122.0703\\-88.36287\\-29\\124.0234\\-89.73209\\-29\\125.9766\\-91.23355\\-29\\128.5979\\-92.83594\\-29\\129.8828\\-93.8125\\-29\\132.8443\\-96.74219\\-29\\134.6229\\-98.69531\\-29\\135.9825\\-100.6484\\-29\\137.1285\\-102.6016\\-29\\139.8979\\-106.5078\\-29\\140.9943\\-108.4609\\-29\\142.2674\\-110.4141\\-29\\142.9957\\-112.3672\\-29\\144.1876\\-114.3203\\-29\\144.9815\\-116.2734\\-29\\146.1719\\-118.2266\\-29\\147.0056\\-120.1797\\-29\\148.1099\\-122.1328\\-29\\148.7311\\-124.0859\\-29\\149.6582\\-126.0391\\-29\\150.4149\\-127.9922\\-29\\151.0728\\-129.9453\\-29\\152.0275\\-131.8984\\-29\\152.6518\\-133.8516\\-29\\153.6263\\-135.8047\\-29\\154.7625\\-139.7109\\-29\\155.5157\\-141.6641\\-29\\156.0412\\-143.6172\\-29\\156.7845\\-147.5234\\-29\\157.5305\\-149.4766\\-29\\157.9565\\-151.4297\\-29\\158.6507\\-155.3359\\-29\\159.2173\\-157.2891\\-29\\159.685\\-159.2422\\-29\\160.3911\\-165.1016\\-29\\161.4494\\-172.9141\\-29\\161.7697\\-176.8203\\-29\\161.9924\\-182.6797\\-29\\162.0502\\-188.5391\\-29\\162.0743\\-194.3984\\-29\\162.0158\\-200.2578\\-29\\161.8771\\-206.1172\\-29\\161.53\\-211.9766\\-29\\161.2702\\-213.9297\\-29\\160.6084\\-217.8359\\-29\\159.7827\\-223.6953\\-29\\159.3018\\-225.6484\\-29\\158.6192\\-227.6016\\-29\\157.6796\\-231.5078\\-29\\156.7513\\-233.4609\\-29\\155.7205\\-237.3672\\-29\\154.7496\\-239.3203\\-29\\154.0396\\-241.2734\\-29\\152.8223\\-243.2266\\-29\\151.8428\\-245.1797\\-29\\150.5427\\-247.1328\\-29\\149.4867\\-249.0859\\-29\\148.281\\-251.0391\\-29\\145.5078\\-254.625\\-29\\143.5547\\-257.0182\\-29\\142.1566\\-258.8516\\-29\\140.3792\\-260.8047\\-29\\138.3817\\-262.7578\\-29\\133.7891\\-267.3833\\-29\\131.8359\\-269.1518\\-29\\130.0197\\-270.5703\\-29\\125.9766\\-273.9305\\-29\\122.0703\\-276.854\\-29\\120.1172\\-278.041\\-29\\116.2109\\-280.9062\\-29\\114.2578\\-281.8558\\-29\\112.3047\\-283.0814\\-29\\110.0518\\-284.2422\\-29\\106.6272\\-286.1953\\-29\\102.5391\\-288.204\\-29\\100.5859\\-288.9846\\-29\\98.63281\\-289.4982\\-29\\96.67969\\-290.4959\\-29\\92.77344\\-291.814\\-29\\90.82031\\-292.6603\\-29\\88.86719\\-293.1299\\-29\\84.96094\\-294.2779\\-29\\81.05469\\-294.9259\\-29\\79.10156\\-295.1094\\-29\\73.24219\\-295.5396\\-29\\69.33594\\-295.6953\\-29\\67.38281\\-295.6331\\-29\\61.52344\\-295.2468\\-29\\55.66406\\-294.7358\\-29\\53.71094\\-294.4482\\-29\\49.80469\\-293.3702\\-29\\45.89844\\-292.6396\\-29\\41.99219\\-291.5574\\-29\\40.03906\\-291.207\\-29\\36.13281\\-290.6886\\-29\\32.22656\\-289.9709\\-29\\30.27344\\-289.795\\-29\\28.32031\\-289.8093\\-29\\24.41406\\-290.1093\\-29\\22.46094\\-290.4206\\-29\\18.55469\\-290.8531\\-29\\10.74219\\-291.5602\\-29\\6.835938\\-292.1494\\-29\\2.929688\\-292.5104\\-29\\-0.9765625\\-292.6637\\-29\\-6.835938\\-292.7606\\-29\\-10.74219\\-292.7606\\-29\\-16.60156\\-292.5879\\-29\\-18.55469\\-292.393\\-29\\-22.46094\\-292.3824\\-29\\-34.17969\\-291.8353\\-29\\-38.08594\\-291.9162\\-29\\-45.89844\\-293.312\\-29\\-49.80469\\-294.461\\-29\\-51.75781\\-294.7807\\-29\\-55.66406\\-295.2907\\-29\\-57.61719\\-295.6448\\-29\\-59.57031\\-296.1723\\-29\\-61.52344\\-296.5541\\-29\\-63.47656\\-296.7836\\-29\\-67.38281\\-297.0853\\-29\\-71.28906\\-297.3109\\-29\\-73.24219\\-297.3317\\-29\\-77.14844\\-297.2033\\-29\\-83.00781\\-296.7897\\-29\\-84.96094\\-296.5372\\-29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "308"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "112"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.96094\\-296.1459\\-27\\-86.91406\\-295.5717\\-27\\-90.82031\\-294.8145\\-27\\-92.77344\\-294.2537\\-27\\-94.72656\\-293.3433\\-27\\-96.67969\\-292.6736\\-27\\-98.63281\\-291.5366\\-27\\-100.5859\\-290.7716\\-27\\-102.5391\\-289.5999\\-27\\-104.4922\\-288.8809\\-27\\-106.4453\\-287.7195\\-27\\-108.3984\\-286.7967\\-27\\-110.3516\\-285.3893\\-27\\-112.3047\\-284.1241\\-27\\-114.2578\\-283.0426\\-27\\-116.2109\\-281.7183\\-27\\-118.1641\\-280.5267\\-27\\-121.0497\\-278.3828\\-27\\-124.0234\\-275.9818\\-27\\-125.9766\\-274.638\\-27\\-127.9297\\-273.0412\\-27\\-131.8359\\-269.4378\\-27\\-134.6739\\-266.6641\\-27\\-139.965\\-260.8047\\-27\\-143.5547\\-255.9219\\-27\\-145.5155\\-252.9922\\-27\\-146.748\\-251.0391\\-27\\-148.1014\\-249.0859\\-27\\-148.9359\\-247.1328\\-27\\-150.1045\\-245.1797\\-27\\-150.8557\\-243.2266\\-27\\-152.0128\\-241.2734\\-27\\-152.8169\\-239.3203\\-27\\-153.8602\\-237.3672\\-27\\-154.4958\\-235.4141\\-27\\-155.3438\\-233.4609\\-27\\-156.0213\\-231.5078\\-27\\-156.4186\\-229.5547\\-27\\-157.0416\\-227.6016\\-27\\-157.8212\\-225.6484\\-27\\-158.7436\\-221.7422\\-27\\-159.5262\\-219.7891\\-27\\-160.2935\\-215.8828\\-27\\-160.7281\\-213.9297\\-27\\-161.338\\-211.9766\\-27\\-161.7076\\-210.0234\\-27\\-162.1506\\-206.1172\\-27\\-162.4533\\-202.2109\\-27\\-162.6751\\-200.2578\\-27\\-163.3212\\-196.3516\\-27\\-163.6766\\-192.4453\\-27\\-163.7897\\-190.4922\\-27\\-163.9353\\-184.6328\\-27\\-163.8887\\-176.8203\\-27\\-163.7426\\-172.9141\\-27\\-163.4069\\-169.0078\\-27\\-162.7466\\-165.1016\\-27\\-162.5\\-163.1484\\-27\\-162.1094\\-159.2422\\-27\\-161.5485\\-155.3359\\-27\\-160.3837\\-151.4297\\-27\\-159.9681\\-149.4766\\-27\\-159.3541\\-147.5234\\-27\\-158.475\\-145.5703\\-27\\-157.9241\\-143.6172\\-27\\-157.0805\\-141.6641\\-27\\-156.3631\\-139.7109\\-27\\-155.8436\\-137.7578\\-27\\-154.8598\\-135.8047\\-27\\-154.1616\\-133.8516\\-27\\-153.3203\\-131.912\\-27\\-151.5026\\-127.9922\\-27\\-150.4456\\-126.0391\\-27\\-149.6857\\-124.0859\\-27\\-148.6013\\-122.1328\\-27\\-147.7841\\-120.1797\\-27\\-146.5599\\-118.2266\\-27\\-145.5454\\-116.2734\\-27\\-143.5547\\-112.9492\\-27\\-143.1372\\-112.3672\\-27\\-142.3494\\-110.4141\\-27\\-141.0445\\-108.4609\\-27\\-139.8778\\-106.5078\\-27\\-136.993\\-102.6016\\-27\\-135.7422\\-100.7569\\-27\\-134.1122\\-98.69531\\-27\\-131.8359\\-96.24366\\-27\\-129.8828\\-94.35909\\-27\\-127.9297\\-92.67435\\-27\\-125.6206\\-90.88281\\-27\\-122.0703\\-88.37466\\-27\\-120.1172\\-87.40148\\-27\\-118.1641\\-86.286\\-27\\-115.5543\\-85.02344\\-27\\-114.2578\\-84.57046\\-27\\-110.3516\\-82.77655\\-27\\-108.3984\\-82.1263\\-27\\-106.4453\\-81.73502\\-27\\-104.4922\\-80.67136\\-27\\-102.5391\\-80.30242\\-27\\-100.5859\\-79.54028\\-27\\-96.67969\\-78.25393\\-27\\-94.72656\\-77.69204\\-27\\-90.82031\\-76.71568\\-27\\-88.86719\\-76.31749\\-27\\-86.91406\\-76.12515\\-27\\-83.00781\\-75.87694\\-27\\-81.05469\\-75.67149\\-27\\-79.10156\\-74.82813\\-27\\-77.14844\\-74.75835\\-27\\-73.24219\\-74.44506\\-27\\-71.28906\\-74.49052\\-27\\-67.38281\\-74.42866\\-27\\-57.61719\\-74.35962\\-27\\-53.71094\\-74.41637\\-27\\-45.89844\\-74.73466\\-27\\-43.94531\\-74.85397\\-27\\-41.99219\\-75.08971\\-27\\-40.03906\\-75.57171\\-27\\-32.22656\\-76.43783\\-27\\-30.27344\\-76.81643\\-27\\-28.32031\\-77.50666\\-27\\-24.41406\\-78.70708\\-27\\-22.46094\\-79.62877\\-27\\-20.50781\\-80.26722\\-27\\-18.55469\\-81.04333\\-27\\-14.64844\\-83.0463\\-27\\-12.69531\\-84.29932\\-27\\-8.789063\\-87.7002\\-27\\-6.970994\\-88.92969\\-27\\-2.929688\\-92.25231\\-27\\-0.9765625\\-93.55381\\-27\\0.9765625\\-93.85418\\-27\\2.929688\\-93.34627\\-27\\4.882813\\-92.03206\\-27\\12.69531\\-84.33287\\-27\\14.64844\\-82.64539\\-27\\16.60156\\-81.6553\\-27\\18.55469\\-80.24549\\-27\\22.46094\\-78.24741\\-27\\26.36719\\-76.56604\\-27\\30.27344\\-75.62231\\-27\\32.22656\\-74.77671\\-27\\36.13281\\-74.24574\\-27\\38.39518\\-73.30469\\-27\\40.03906\\-72.75057\\-27\\41.99219\\-72.66914\\-27\\43.94531\\-71.71909\\-27\\45.89844\\-71.63816\\-27\\47.85156\\-71.69682\\-27\\53.71094\\-71.63196\\-27\\61.52344\\-71.73242\\-27\\63.47656\\-72.02295\\-27\\65.42969\\-72.56403\\-27\\67.38281\\-72.66914\\-27\\73.24219\\-72.84272\\-27\\75.19531\\-73.00072\\-27\\77.14844\\-74.22894\\-27\\79.10156\\-74.3286\\-27\\83.00781\\-74.64068\\-27\\84.96094\\-74.92454\\-27\\86.91406\\-75.60368\\-27\\88.86719\\-75.91085\\-27\\92.77344\\-76.42125\\-27\\94.72656\\-76.97521\\-27\\96.67969\\-77.65826\\-27\\100.5859\\-78.84925\\-27\\102.5391\\-79.70869\\-27\\104.4922\\-80.23418\\-27\\106.4453\\-80.8602\\-27\\108.3984\\-81.77873\\-27\\110.3516\\-82.37189\\-27\\112.3047\\-83.37338\\-27\\114.2578\\-84.2455\\-27\\116.2109\\-85.44483\\-27\\118.1641\\-86.31541\\-27\\120.1172\\-87.55215\\-27\\122.0703\\-88.37653\\-27\\124.0234\\-89.76409\\-27\\125.9766\\-91.26148\\-27\\127.9297\\-92.62424\\-27\\129.8828\\-94.11724\\-27\\131.8359\\-95.96245\\-27\\134.3068\\-98.69531\\-27\\135.7843\\-100.6484\\-27\\136.9308\\-102.6016\\-27\\137.6953\\-103.621\\-27\\141.6016\\-109.83\\-27\\142.0181\\-110.4141\\-27\\142.793\\-112.3672\\-27\\143.9359\\-114.3203\\-27\\144.7254\\-116.2734\\-27\\145.8997\\-118.2266\\-27\\146.7166\\-120.1797\\-27\\147.8422\\-122.1328\\-27\\149.2959\\-126.0391\\-27\\150.1703\\-127.9922\\-27\\150.7648\\-129.9453\\-27\\151.7358\\-131.8984\\-27\\152.4041\\-133.8516\\-27\\154.0259\\-137.7578\\-27\\154.5006\\-139.7109\\-27\\155.849\\-143.6172\\-27\\156.5496\\-147.5234\\-27\\157.0838\\-149.4766\\-27\\157.7319\\-151.4297\\-27\\158.3995\\-155.3359\\-27\\158.8003\\-157.2891\\-27\\159.3667\\-159.2422\\-27\\159.7416\\-161.1953\\-27\\160.614\\-169.0078\\-27\\161.3752\\-174.8672\\-27\\161.6649\\-178.7734\\-27\\161.8098\\-182.6797\\-27\\161.8891\\-188.5391\\-27\\161.9152\\-194.3984\\-27\\161.849\\-200.2578\\-27\\161.7658\\-204.1641\\-27\\161.5761\\-208.0703\\-27\\161.1854\\-211.9766\\-27\\160.8568\\-213.9297\\-27\\159.8394\\-221.7422\\-27\\159.4727\\-223.6953\\-27\\158.8369\\-225.6484\\-27\\157.941\\-229.5547\\-27\\157.2787\\-231.5078\\-27\\156.5104\\-233.4609\\-27\\156.0923\\-235.4141\\-27\\155.375\\-237.3672\\-27\\154.4675\\-239.3203\\-27\\153.7379\\-241.2734\\-27\\152.4841\\-243.2266\\-27\\151.4206\\-245.1797\\-27\\147.9388\\-251.0391\\-27\\145.5078\\-254.1655\\-27\\144.7921\\-254.9453\\-27\\139.8907\\-260.8047\\-27\\137.8764\\-262.7578\\-27\\133.9688\\-266.6641\\-27\\131.7336\\-268.6172\\-27\\127.9297\\-271.7846\\-27\\125.9766\\-273.4821\\-27\\124.0234\\-275.0316\\-27\\120.1172\\-277.5838\\-27\\118.1641\\-279.0958\\-27\\116.2109\\-280.4068\\-27\\114.2578\\-281.4917\\-27\\112.3047\\-282.7036\\-27\\110.3516\\-283.5383\\-27\\108.3984\\-284.8094\\-27\\106.4453\\-285.7039\\-27\\104.4922\\-286.8878\\-27\\102.5391\\-287.6536\\-27\\100.5859\\-288.6866\\-27\\98.63281\\-289.2328\\-27\\96.67969\\-289.9108\\-27\\94.72656\\-290.8036\\-27\\92.77344\\-291.34\\-27\\90.82031\\-292.1768\\-27\\88.86719\\-292.8079\\-27\\84.96094\\-293.7637\\-27\\83.00781\\-294.3378\\-27\\81.05469\\-294.6848\\-27\\79.10156\\-294.8961\\-27\\73.24219\\-295.2669\\-27\\69.33594\\-295.3585\\-27\\65.42969\\-295.2625\\-27\\61.52344\\-295.0682\\-27\\57.61719\\-294.764\\-27\\53.71094\\-294.2256\\-27\\51.75781\\-293.6643\\-27\\49.80469\\-293.2211\\-27\\45.89844\\-292.5848\\-27\\43.94531\\-292.1355\\-27\\41.99219\\-291.5695\\-27\\38.08594\\-291.0346\\-27\\32.22656\\-290.5131\\-27\\30.27344\\-290.4834\\-27\\26.36719\\-290.6189\\-27\\24.41406\\-290.7654\\-27\\18.55469\\-291.3366\\-27\\14.64844\\-291.8683\\-27\\12.69531\\-292.2303\\-27\\10.74219\\-292.4866\\-27\\6.835938\\-292.8392\\-27\\2.929688\\-293.0593\\-27\\-2.929688\\-293.2325\\-27\\-8.789063\\-293.2798\\-27\\-12.69531\\-293.214\\-27\\-16.60156\\-293.0754\\-27\\-18.55469\\-292.9471\\-27\\-22.46094\\-292.9138\\-27\\-30.27344\\-292.6747\\-27\\-32.22656\\-292.5889\\-27\\-38.08594\\-292.5077\\-27\\-41.99219\\-292.7846\\-27\\-45.89844\\-293.3707\\-27\\-49.80469\\-294.4049\\-27\\-51.75781\\-294.7054\\-27\\-57.61719\\-295.4112\\-27\\-61.52344\\-296.263\\-27\\-63.47656\\-296.566\\-27\\-67.38281\\-296.8853\\-27\\-71.28906\\-297.0524\\-27\\-73.24219\\-297.0762\\-27\\-77.14844\\-296.9886\\-27\\-81.05469\\-296.7497\\-27\\-83.00781\\-296.5457\\-27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "289"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "113"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-83.00781\\-296.1869\\-25\\-84.96094\\-295.6566\\-25\\-88.86719\\-294.9783\\-25\\-90.82031\\-294.5595\\-25\\-96.67969\\-292.3607\\-25\\-98.63281\\-291.2639\\-25\\-100.5859\\-290.5131\\-25\\-102.5391\\-289.3434\\-25\\-104.4922\\-288.6571\\-25\\-106.4453\\-287.4714\\-25\\-108.3984\\-286.5054\\-25\\-111.7188\\-284.2422\\-25\\-112.3047\\-283.7743\\-25\\-114.2578\\-282.8272\\-25\\-117.8416\\-280.3359\\-25\\-120.1172\\-278.8175\\-25\\-124.0234\\-275.74\\-25\\-127.9297\\-272.7145\\-25\\-131.8359\\-269.1887\\-25\\-133.7891\\-267.3219\\-25\\-136.2267\\-264.7109\\-25\\-139.6484\\-260.7629\\-25\\-142.6237\\-256.8984\\-25\\-144.0398\\-254.9453\\-25\\-145.1939\\-252.9922\\-25\\-147.9256\\-249.0859\\-25\\-148.7399\\-247.1328\\-25\\-149.9353\\-245.1797\\-25\\-150.6531\\-243.2266\\-25\\-151.8291\\-241.2734\\-25\\-152.5865\\-239.3203\\-25\\-153.6591\\-237.3672\\-25\\-155.0202\\-233.4609\\-25\\-155.862\\-231.5078\\-25\\-156.7415\\-227.6016\\-25\\-157.5834\\-225.6484\\-25\\-158.0897\\-223.6953\\-25\\-158.4806\\-221.7422\\-25\\-159.7667\\-217.8359\\-25\\-160.4912\\-213.9297\\-25\\-161.4873\\-210.0234\\-25\\-161.814\\-208.0703\\-25\\-162.1804\\-204.1641\\-25\\-162.4656\\-200.2578\\-25\\-162.6646\\-198.3047\\-25\\-163.3954\\-192.4453\\-25\\-163.5459\\-190.4922\\-25\\-163.7426\\-184.6328\\-25\\-163.75\\-180.7266\\-25\\-163.7042\\-176.8203\\-25\\-163.6136\\-174.8672\\-25\\-163.2957\\-170.9609\\-25\\-162.6994\\-167.0547\\-25\\-162.4826\\-165.1016\\-25\\-161.9486\\-159.2422\\-25\\-161.6498\\-157.2891\\-25\\-161.2009\\-155.3359\\-25\\-160.5808\\-153.3828\\-25\\-159.7129\\-149.4766\\-25\\-158.8653\\-147.5234\\-25\\-157.6666\\-143.6172\\-25\\-156.6992\\-141.6641\\-25\\-155.5577\\-137.7578\\-25\\-154.5911\\-135.8047\\-25\\-153.9292\\-133.8516\\-25\\-152.9391\\-131.8984\\-25\\-152.1846\\-129.9453\\-25\\-151.1193\\-127.9922\\-25\\-150.2924\\-126.0391\\-25\\-148.456\\-122.1328\\-25\\-147.4609\\-120.1917\\-25\\-145.5078\\-116.7859\\-25\\-145.1407\\-116.2734\\-25\\-144.1794\\-114.3203\\-25\\-142.946\\-112.3672\\-25\\-142.1862\\-110.4141\\-25\\-140.8386\\-108.4609\\-25\\-137.6953\\-103.7409\\-25\\-135.7422\\-101.0298\\-25\\-133.9072\\-98.69531\\-25\\-131.8359\\-96.39447\\-25\\-129.8828\\-94.47379\\-25\\-127.9206\\-92.83594\\-25\\-124.0234\\-89.82047\\-25\\-122.0703\\-88.44859\\-25\\-120.1172\\-87.7292\\-25\\-118.1641\\-86.41946\\-25\\-116.2109\\-85.58845\\-25\\-115.1968\\-85.02344\\-25\\-110.3516\\-82.80831\\-25\\-108.3984\\-82.17838\\-25\\-106.4453\\-81.75262\\-25\\-104.4922\\-80.68552\\-25\\-102.5391\\-80.31606\\-25\\-100.5859\\-79.49772\\-25\\-94.72656\\-77.63586\\-25\\-90.82031\\-76.69875\\-25\\-88.86719\\-76.29457\\-25\\-83.00781\\-75.84247\\-25\\-81.05469\\-75.61104\\-25\\-79.10156\\-74.76575\\-25\\-73.24219\\-74.37396\\-25\\-71.28906\\-74.44813\\-25\\-63.47656\\-74.33484\\-25\\-55.66406\\-74.30492\\-25\\-53.71094\\-74.32293\\-25\\-45.89844\\-74.60457\\-25\\-41.99219\\-74.90744\\-25\\-40.03906\\-75.18204\\-25\\-38.08594\\-75.62231\\-25\\-32.22656\\-76.31856\\-25\\-30.27344\\-76.63612\\-25\\-24.41406\\-78.53015\\-25\\-22.46094\\-79.36846\\-25\\-18.55469\\-80.81614\\-25\\-16.60156\\-81.8512\\-25\\-14.64844\\-82.6872\\-25\\-14.19975\\-83.07031\\-25\\-11.37251\\-85.02344\\-25\\-8.789063\\-87.15489\\-25\\-6.835938\\-88.66769\\-25\\-4.26794\\-90.88281\\-25\\-2.929688\\-91.93318\\-25\\-0.9765625\\-93.28723\\-25\\0.9765625\\-93.63982\\-25\\2.929688\\-92.95892\\-25\\4.882813\\-91.79717\\-25\\11.87525\\-85.02344\\-25\\12.69531\\-84.17057\\-25\\14.64844\\-82.4688\\-25\\18.55469\\-80.14697\\-25\\20.50781\\-79.04199\\-25\\22.46094\\-78.11472\\-25\\26.36719\\-76.4583\\-25\\30.27344\\-75.52155\\-25\\32.22656\\-74.687\\-25\\36.13281\\-74.16672\\-25\\38.08594\\-72.83385\\-25\\41.99219\\-72.64184\\-25\\43.94531\\-71.67709\\-25\\45.89844\\-71.62911\\-25\\47.85156\\-71.69336\\-25\\53.71094\\-71.64548\\-25\\63.47656\\-71.74829\\-25\\65.42969\\-72.3988\\-25\\67.38281\\-72.65535\\-25\\73.24219\\-72.83385\\-25\\75.19531\\-72.97916\\-25\\77.14844\\-74.22894\\-25\\81.05469\\-74.44297\\-25\\83.00781\\-74.609\\-25\\84.96094\\-74.88397\\-25\\86.91406\\-75.61476\\-25\\92.77344\\-76.45742\\-25\\94.72656\\-76.98714\\-25\\96.67969\\-77.67449\\-25\\100.5859\\-78.87109\\-25\\102.5391\\-79.76456\\-25\\104.4922\\-80.24464\\-25\\106.4453\\-80.88784\\-25\\108.3984\\-81.80393\\-25\\110.3516\\-82.38425\\-25\\112.3047\\-83.39584\\-25\\114.2578\\-84.26757\\-25\\116.2109\\-85.45525\\-25\\118.1641\\-86.33167\\-25\\120.1172\\-87.58292\\-25\\122.0703\\-88.38037\\-25\\124.0234\\-89.79569\\-25\\125.9766\\-91.33504\\-25\\127.9297\\-92.71387\\-25\\129.8828\\-94.35909\\-25\\131.8359\\-96.24366\\-25\\134.1266\\-98.69531\\-25\\135.7422\\-100.8523\\-25\\136.7371\\-102.6016\\-25\\138.0847\\-104.5547\\-25\\139.1763\\-106.5078\\-25\\140.5686\\-108.4609\\-25\\141.7015\\-110.4141\\-25\\142.5969\\-112.3672\\-25\\146.4563\\-120.1797\\-25\\147.4687\\-122.1328\\-25\\148.3191\\-124.0859\\-25\\148.9639\\-126.0391\\-25\\149.9449\\-127.9922\\-25\\150.5177\\-129.9453\\-25\\152.1692\\-133.8516\\-25\\152.8383\\-135.8047\\-25\\153.7781\\-137.7578\\-25\\154.8357\\-141.6641\\-25\\155.58\\-143.6172\\-25\\156.068\\-145.5703\\-25\\156.7223\\-149.4766\\-25\\157.4136\\-151.4297\\-25\\157.8863\\-153.3828\\-25\\158.4987\\-157.2891\\-25\\158.9054\\-159.2422\\-25\\159.4727\\-161.1953\\-25\\159.7827\\-163.1484\\-25\\160.7723\\-172.9141\\-25\\161.229\\-176.8203\\-25\\161.401\\-178.7734\\-25\\161.6084\\-182.6797\\-25\\161.6953\\-186.5859\\-25\\161.72\\-194.3984\\-25\\161.6615\\-200.2578\\-25\\161.53\\-204.1641\\-25\\161.2968\\-208.0703\\-25\\160.5504\\-213.9297\\-25\\160.1214\\-217.8359\\-25\\159.6051\\-221.7422\\-25\\158.5053\\-225.6484\\-25\\157.6885\\-229.5547\\-25\\156.8483\\-231.5078\\-25\\155.8789\\-235.4141\\-25\\154.9769\\-237.3672\\-25\\154.2239\\-239.3203\\-25\\153.3203\\-241.2614\\-25\\151.3672\\-244.5957\\-25\\150.9447\\-245.1797\\-25\\150.0165\\-247.1328\\-25\\148.6914\\-249.0859\\-25\\147.4693\\-251.0391\\-25\\146.0785\\-252.9922\\-25\\143.5547\\-256.0648\\-25\\139.6484\\-260.4366\\-25\\135.3441\\-264.7109\\-25\\131.8359\\-268.0481\\-25\\128.9597\\-270.5703\\-25\\125.9766\\-273.0498\\-25\\124.0234\\-274.5186\\-25\\122.0703\\-275.8271\\-25\\118.1641\\-278.6379\\-25\\116.2109\\-279.8409\\-25\\114.2578\\-281.1827\\-25\\112.0914\\-282.2891\\-25\\106.4453\\-285.306\\-25\\104.4922\\-286.4793\\-25\\102.5391\\-287.2939\\-25\\100.5859\\-288.2188\\-25\\98.63281\\-288.9794\\-25\\96.67969\\-289.4652\\-25\\94.72656\\-290.4206\\-25\\90.82031\\-291.5725\\-25\\88.86719\\-292.4706\\-25\\86.91406\\-292.9665\\-25\\84.96094\\-293.3511\\-25\\81.05469\\-294.3707\\-25\\79.10156\\-294.6447\\-25\\75.19531\\-294.9725\\-25\\73.24219\\-295.0499\\-25\\67.38281\\-295.123\\-25\\63.47656\\-295.0022\\-25\\59.57031\\-294.7713\\-25\\55.66406\\-294.3243\\-25\\51.75781\\-293.4472\\-25\\47.85156\\-292.7254\\-25\\45.89844\\-292.543\\-25\\43.94531\\-292.1494\\-25\\41.99219\\-291.6398\\-25\\38.08594\\-291.137\\-25\\34.17969\\-290.9032\\-25\\30.27344\\-290.8778\\-25\\26.36719\\-291.0527\\-25\\22.46094\\-291.437\\-25\\20.50781\\-291.7408\\-25\\16.60156\\-292.4636\\-25\\10.74219\\-293.0424\\-25\\6.835938\\-293.3712\\-25\\0.9765625\\-293.811\\-25\\-0.9765625\\-293.8951\\-25\\-6.835938\\-293.9999\\-25\\-12.69531\\-293.8672\\-25\\-18.55469\\-293.5361\\-25\\-32.22656\\-292.9692\\-25\\-36.13281\\-292.8693\\-25\\-40.03906\\-292.8768\\-25\\-41.99219\\-292.9764\\-25\\-45.89844\\-293.4701\\-25\\-49.80469\\-294.3513\\-25\\-51.75781\\-294.6321\\-25\\-57.61719\\-295.241\\-25\\-61.52344\\-295.8447\\-25\\-63.47656\\-296.263\\-25\\-67.38281\\-296.6737\\-25\\-73.24219\\-296.8596\\-25\\-77.14844\\-296.7774\\-25\\-81.05469\\-296.4897\\-25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "301"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "114"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-81.05469\\-296.1187\\-23\\-83.00781\\-295.683\\-23\\-88.86719\\-294.7807\\-23\\-90.82031\\-294.2659\\-23\\-92.77344\\-293.4337\\-23\\-94.72656\\-292.843\\-23\\-98.63281\\-291.0425\\-23\\-102.5391\\-289.1779\\-23\\-104.4922\\-288.3926\\-23\\-104.8244\\-288.1484\\-23\\-108.328\\-286.1953\\-23\\-110.3516\\-284.9389\\-23\\-112.3047\\-283.5113\\-23\\-114.2578\\-282.5776\\-23\\-116.2109\\-281.2621\\-23\\-118.1641\\-279.7878\\-23\\-120.2098\\-278.3828\\-23\\-122.8896\\-276.4297\\-23\\-125.9766\\-273.9492\\-23\\-127.6474\\-272.5234\\-23\\-129.8828\\-270.4932\\-23\\-131.8359\\-268.8885\\-23\\-133.7891\\-267.0475\\-23\\-135.9566\\-264.7109\\-23\\-137.5394\\-262.7578\\-23\\-139.6484\\-260.4245\\-23\\-142.445\\-256.8984\\-23\\-143.8042\\-254.9453\\-23\\-144.9418\\-252.9922\\-23\\-147.7141\\-249.0859\\-23\\-148.6145\\-247.1328\\-23\\-149.7372\\-245.1797\\-23\\-150.5024\\-243.2266\\-23\\-151.6029\\-241.2734\\-23\\-152.3965\\-239.3203\\-23\\-153.4442\\-237.3672\\-23\\-154.1741\\-235.4141\\-23\\-154.8049\\-233.4609\\-23\\-155.6792\\-231.5078\\-23\\-156.179\\-229.5547\\-23\\-156.5341\\-227.6016\\-23\\-157.2932\\-225.6484\\-23\\-157.9174\\-223.6953\\-23\\-158.3003\\-221.7422\\-23\\-158.8056\\-219.7891\\-23\\-159.5567\\-217.8359\\-23\\-160.295\\-213.9297\\-23\\-160.7134\\-211.9766\\-23\\-161.2438\\-210.0234\\-23\\-161.6431\\-208.0703\\-23\\-162.0564\\-204.1641\\-23\\-162.4451\\-198.3047\\-23\\-163.1851\\-190.4922\\-23\\-163.4513\\-186.5859\\-23\\-163.5264\\-180.7266\\-23\\-163.4294\\-176.8203\\-23\\-163.3085\\-174.8672\\-23\\-162.4451\\-167.0547\\-23\\-161.991\\-161.1953\\-23\\-161.7615\\-159.2422\\-23\\-161.3909\\-157.2891\\-23\\-160.8028\\-155.3359\\-23\\-159.9375\\-151.4297\\-23\\-159.3914\\-149.4766\\-23\\-158.5342\\-147.5234\\-23\\-158.0191\\-145.5703\\-23\\-156.4559\\-141.6641\\-23\\-155.9933\\-139.7109\\-23\\-154.3893\\-135.8047\\-23\\-153.7044\\-133.8516\\-23\\-152.6712\\-131.8984\\-23\\-151.9355\\-129.9453\\-23\\-150.797\\-127.9922\\-23\\-150.0796\\-126.0391\\-23\\-148.9808\\-124.0859\\-23\\-148.2919\\-122.1328\\-23\\-147.0886\\-120.1797\\-23\\-146.1298\\-118.2266\\-23\\-144.892\\-116.2734\\-23\\-143.9779\\-114.3203\\-23\\-142.7901\\-112.3672\\-23\\-141.9573\\-110.4141\\-23\\-138.045\\-104.5547\\-23\\-135.7422\\-101.2788\\-23\\-133.7891\\-98.81622\\-23\\-131.8359\\-96.55808\\-23\\-129.8828\\-94.57115\\-23\\-125.24\\-90.88281\\-23\\-122.0703\\-88.55238\\-23\\-120.1172\\-87.78625\\-23\\-118.1641\\-86.52734\\-23\\-116.2109\\-85.69441\\-23\\-114.2578\\-84.57954\\-23\\-110.6934\\-83.07031\\-23\\-108.3984\\-82.19012\\-23\\-106.4453\\-81.72587\\-23\\-104.4922\\-80.70789\\-23\\-102.5391\\-80.33002\\-23\\-100.5859\\-79.41032\\-23\\-98.63281\\-78.88223\\-23\\-94.72656\\-77.63586\\-23\\-88.86719\\-76.28901\\-23\\-83.00781\\-75.72252\\-23\\-81.05469\\-74.97059\\-23\\-79.10156\\-74.7218\\-23\\-73.24219\\-74.3419\\-23\\-71.28906\\-74.39722\\-23\\-67.38281\\-74.32293\\-23\\-59.57031\\-74.23502\\-23\\-53.71094\\-74.24616\\-23\\-45.89844\\-74.53656\\-23\\-41.99219\\-74.76256\\-23\\-40.03906\\-74.94501\\-23\\-38.08594\\-75.44561\\-23\\-36.13281\\-75.77822\\-23\\-32.22656\\-76.22308\\-23\\-30.27344\\-76.5303\\-23\\-28.32031\\-77.03655\\-23\\-22.46094\\-79.06932\\-23\\-20.50781\\-79.95673\\-23\\-18.55469\\-80.67017\\-23\\-16.60156\\-81.73158\\-23\\-14.64844\\-82.47199\\-23\\-10.9933\\-85.02344\\-23\\-8.789063\\-86.8316\\-23\\-6.389293\\-88.92969\\-23\\-2.929688\\-91.72069\\-23\\-0.9765625\\-92.91303\\-23\\0.9765625\\-93.32107\\-23\\2.929688\\-92.52113\\-23\\4.882813\\-91.45528\\-23\\8.789063\\-87.88151\\-23\\11.74852\\-85.02344\\-23\\12.69531\\-84.02809\\-23\\14.64844\\-82.30927\\-23\\16.60156\\-81.02767\\-23\\18.55469\\-80.07264\\-23\\20.50781\\-78.92834\\-23\\24.41406\\-77.11098\\-23\\26.36719\\-76.36038\\-23\\28.32031\\-75.93956\\-23\\30.27344\\-75.10057\\-23\\32.22656\\-74.61341\\-23\\36.13281\\-74.11349\\-23\\38.08594\\-72.79101\\-23\\41.99219\\-71.74009\\-23\\43.94531\\-71.63816\\-23\\47.85156\\-71.62061\\-23\\49.80469\\-71.66751\\-23\\53.71094\\-71.62921\\-23\\55.66406\\-71.68997\\-23\\61.52344\\-71.72865\\-23\\65.42969\\-71.78898\\-23\\67.38281\\-72.58311\\-23\\73.24219\\-72.82507\\-23\\75.19531\\-72.95817\\-23\\77.14844\\-74.24056\\-23\\81.05469\\-74.41637\\-23\\84.96094\\-74.87173\\-23\\86.91406\\-75.59244\\-23\\92.77344\\-76.48153\\-23\\94.72656\\-77.02393\\-23\\98.63281\\-78.23688\\-23\\100.5859\\-78.92834\\-23\\102.5391\\-79.79702\\-23\\104.4922\\-80.26126\\-23\\106.4453\\-80.92793\\-23\\108.3984\\-81.81205\\-23\\110.3516\\-82.39703\\-23\\112.3047\\-83.42482\\-23\\114.2578\\-84.29376\\-23\\116.2109\\-85.49192\\-23\\118.1641\\-86.34395\\-23\\120.1172\\-87.60435\\-23\\122.0703\\-88.4175\\-23\\124.0234\\-89.85712\\-23\\125.9766\\-91.42182\\-23\\127.9297\\-92.79838\\-23\\129.8828\\-94.47379\\-23\\131.8359\\-96.37051\\-23\\133.8778\\-98.69531\\-23\\135.7422\\-101.163\\-23\\137.8338\\-104.5547\\-23\\138.9292\\-106.5078\\-23\\140.3623\\-108.4609\\-23\\141.3156\\-110.4141\\-23\\142.443\\-112.3672\\-23\\143.2147\\-114.3203\\-23\\144.2734\\-116.2734\\-23\\145.1239\\-118.2266\\-23\\146.2402\\-120.1797\\-23\\147.1102\\-122.1328\\-23\\148.11\\-124.0859\\-23\\148.7229\\-126.0391\\-23\\149.6452\\-127.9922\\-23\\150.9221\\-131.8984\\-23\\151.931\\-133.8516\\-23\\152.5934\\-135.8047\\-23\\153.4433\\-137.7578\\-23\\154.096\\-139.7109\\-23\\154.5917\\-141.6641\\-23\\155.8838\\-145.5703\\-23\\156.4927\\-149.4766\\-23\\156.9896\\-151.4297\\-23\\157.6613\\-153.3828\\-23\\158.0164\\-155.3359\\-23\\158.5904\\-159.2422\\-23\\159.5262\\-163.1484\\-23\\159.8045\\-165.1016\\-23\\160.6599\\-174.8672\\-23\\161.0508\\-178.7734\\-23\\161.349\\-182.6797\\-23\\161.4849\\-188.5391\\-23\\161.4957\\-196.3516\\-23\\161.4128\\-200.2578\\-23\\161.2283\\-204.1641\\-23\\160.9276\\-208.0703\\-23\\160.1313\\-215.8828\\-23\\159.6593\\-219.7891\\-23\\159.2605\\-221.7422\\-23\\158.6561\\-223.6953\\-23\\157.9061\\-227.6016\\-23\\157.3073\\-229.5547\\-23\\156.5496\\-231.5078\\-23\\156.1671\\-233.4609\\-23\\155.606\\-235.4141\\-23\\154.6497\\-237.3672\\-23\\153.996\\-239.3203\\-23\\152.8611\\-241.2734\\-23\\151.9104\\-243.2266\\-23\\150.5896\\-245.1797\\-23\\149.6601\\-247.1328\\-23\\148.4058\\-249.0859\\-23\\145.6586\\-252.9922\\-23\\143.5547\\-255.6208\\-23\\140.6864\\-258.8516\\-23\\137.6953\\-261.9723\\-23\\134.918\\-264.7109\\-23\\131.8359\\-267.6342\\-23\\128.3897\\-270.5703\\-23\\124.0234\\-274.0016\\-23\\120.1172\\-276.8511\\-23\\118.1641\\-278.0072\\-23\\114.2578\\-280.8176\\-23\\112.3047\\-281.7414\\-23\\110.3516\\-282.9337\\-23\\108.3984\\-283.7375\\-23\\106.4453\\-284.9236\\-23\\104.4922\\-285.8653\\-23\\102.5391\\-286.9777\\-23\\100.5859\\-287.6831\\-23\\98.63281\\-288.6829\\-23\\96.67969\\-289.1897\\-23\\94.72656\\-289.8093\\-23\\92.77344\\-290.7325\\-23\\90.82031\\-291.2213\\-23\\86.91406\\-292.6757\\-23\\83.00781\\-293.4161\\-23\\79.10156\\-294.3333\\-23\\77.14844\\-294.5962\\-23\\75.19531\\-294.7595\\-23\\71.28906\\-294.9259\\-23\\65.42969\\-294.9079\\-23\\61.52344\\-294.7358\\-23\\57.61719\\-294.3599\\-23\\53.71094\\-293.6132\\-23\\49.80469\\-293.0012\\-23\\47.85156\\-292.6009\\-23\\45.89844\\-292.5255\\-23\\43.94531\\-292.1768\\-23\\41.99219\\-291.7159\\-23\\40.03906\\-291.4317\\-23\\38.08594\\-291.2683\\-23\\34.17969\\-291.117\\-23\\30.27344\\-291.1763\\-23\\26.36719\\-291.4958\\-23\\22.46094\\-292.2904\\-23\\20.50781\\-292.5797\\-23\\12.69531\\-293.3869\\-23\\8.789063\\-293.9834\\-23\\6.835938\\-294.2256\\-23\\2.929688\\-294.4865\\-23\\-0.9765625\\-294.6159\\-23\\-8.789063\\-294.6447\\-23\\-10.74219\\-294.6074\\-23\\-18.55469\\-294.3489\\-23\\-24.41406\\-293.9846\\-23\\-28.32031\\-293.6186\\-23\\-32.22656\\-293.351\\-23\\-38.08594\\-293.1279\\-23\\-41.99219\\-293.194\\-23\\-43.94531\\-293.3399\\-23\\-45.89844\\-293.5977\\-23\\-49.80469\\-294.3265\\-23\\-51.75781\\-294.5739\\-23\\-57.61719\\-295.1033\\-23\\-61.52344\\-295.5262\\-23\\-67.38281\\-296.4201\\-23\\-73.24219\\-296.6445\\-23\\-77.14844\\-296.5372\\-23\\-79.10156\\-296.387\\-23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "285"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "115"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-77.14844\\-296.1187\\-21\\-83.00781\\-295.3458\\-21\\-86.91406\\-294.8897\\-21\\-88.86719\\-294.5248\\-21\\-92.77344\\-293.1357\\-21\\-94.72656\\-292.5684\\-21\\-96.67969\\-291.5215\\-21\\-98.63281\\-290.8203\\-21\\-100.5859\\-289.6907\\-21\\-102.5391\\-289.0212\\-21\\-106.4453\\-287.0025\\-21\\-108.3984\\-285.7361\\-21\\-110.3516\\-284.6523\\-21\\-112.3047\\-283.302\\-21\\-114.1168\\-282.2891\\-21\\-116.2109\\-281.011\\-21\\-117.0221\\-280.3359\\-21\\-120.1172\\-278.0157\\-21\\-122.0703\\-276.7481\\-21\\-124.0234\\-275.2773\\-21\\-127.3095\\-272.5234\\-21\\-133.7967\\-266.6641\\-21\\-137.2878\\-262.7578\\-21\\-140.7175\\-258.8516\\-21\\-142.2637\\-256.8984\\-21\\-144.7393\\-252.9922\\-21\\-146.189\\-251.0391\\-21\\-147.4609\\-249.0311\\-21\\-148.4911\\-247.1328\\-21\\-152.2111\\-239.3203\\-21\\-154.0154\\-235.4141\\-21\\-154.6123\\-233.4609\\-21\\-155.4184\\-231.5078\\-21\\-156.0535\\-229.5547\\-21\\-156.3985\\-227.6016\\-21\\-156.9245\\-225.6484\\-21\\-157.7234\\-223.6953\\-21\\-158.5673\\-219.7891\\-21\\-159.7786\\-215.8828\\-21\\-160.4949\\-211.9766\\-21\\-161.3909\\-208.0703\\-21\\-161.7163\\-206.1172\\-21\\-161.92\\-204.1641\\-21\\-162.3204\\-198.3047\\-21\\-162.8862\\-188.5391\\-21\\-163.0466\\-186.5859\\-21\\-163.1995\\-180.7266\\-21\\-162.9024\\-174.8672\\-21\\-162.5784\\-170.9609\\-21\\-162.1804\\-165.1016\\-21\\-161.8103\\-161.1953\\-21\\-161.5115\\-159.2422\\-21\\-160.4875\\-155.3359\\-21\\-159.7024\\-151.4297\\-21\\-158.917\\-149.4766\\-21\\-158.2905\\-147.5234\\-21\\-157.7691\\-145.5703\\-21\\-156.8346\\-143.6172\\-21\\-155.7342\\-139.7109\\-21\\-154.8462\\-137.7578\\-21\\-154.1776\\-135.8047\\-21\\-153.3579\\-133.8516\\-21\\-152.427\\-131.8984\\-21\\-151.6281\\-129.9453\\-21\\-150.5726\\-127.9922\\-21\\-149.8473\\-126.0391\\-21\\-148.778\\-124.0859\\-21\\-148.0801\\-122.1328\\-21\\-146.8418\\-120.1797\\-21\\-145.8839\\-118.2266\\-21\\-144.6649\\-116.2734\\-21\\-143.7124\\-114.3203\\-21\\-141.6254\\-110.4141\\-21\\-140.473\\-108.4609\\-21\\-139.0118\\-106.5078\\-21\\-136.5145\\-102.6016\\-21\\-135.0338\\-100.6484\\-21\\-131.8359\\-96.78658\\-21\\-129.8828\\-94.78027\\-21\\-125.0895\\-90.88281\\-21\\-122.0703\\-88.6875\\-21\\-120.1172\\-87.83181\\-21\\-118.1641\\-86.61462\\-21\\-116.2109\\-85.73784\\-21\\-114.2578\\-84.6365\\-21\\-108.3984\\-82.15314\\-21\\-106.4453\\-81.68965\\-21\\-104.4922\\-80.68552\\-21\\-102.5391\\-80.31123\\-21\\-100.5859\\-79.37822\\-21\\-94.72656\\-77.68853\\-21\\-92.77344\\-77.25096\\-21\\-90.82031\\-76.6851\\-21\\-88.86719\\-76.24785\\-21\\-83.00781\\-75.68506\\-21\\-81.05469\\-74.8816\\-21\\-77.14844\\-74.52539\\-21\\-73.24219\\-74.32977\\-21\\-69.33594\\-74.26955\\-21\\-65.42969\\-74.2636\\-21\\-59.57031\\-74.18359\\-21\\-51.75781\\-74.24574\\-21\\-43.94531\\-74.52856\\-21\\-40.03906\\-74.79448\\-21\\-38.08594\\-75.05605\\-21\\-36.13281\\-75.64707\\-21\\-30.27344\\-76.4057\\-21\\-28.32031\\-76.85523\\-21\\-24.41406\\-78.16466\\-21\\-22.46094\\-78.87109\\-21\\-20.50781\\-79.83019\\-21\\-18.55469\\-80.53776\\-21\\-16.60156\\-81.6553\\-21\\-14.64844\\-82.35244\\-21\\-10.74219\\-84.83707\\-21\\-6.835938\\-88.21122\\-21\\-4.882813\\-90.00185\\-21\\-2.929688\\-91.68066\\-21\\-0.9765625\\-92.41056\\-21\\0.9940011\\-92.83594\\-21\\2.929688\\-92.23036\\-21\\4.882813\\-91.01051\\-21\\6.835938\\-89.26296\\-21\\11.15829\\-85.02344\\-21\\13.4639\\-83.07031\\-21\\16.60156\\-80.84136\\-21\\18.55469\\-79.99664\\-21\\20.50781\\-78.77467\\-21\\24.41406\\-76.93694\\-21\\26.36719\\-76.25269\\-21\\28.32031\\-75.85252\\-21\\30.27344\\-74.94004\\-21\\32.22656\\-74.5238\\-21\\34.17969\\-74.28125\\-21\\36.13281\\-72.87\\-21\\40.03906\\-72.66914\\-21\\41.99219\\-71.76109\\-21\\43.94531\\-71.66691\\-21\\47.85156\\-71.60069\\-21\\55.66406\\-71.68666\\-21\\57.61719\\-71.66444\\-21\\61.52344\\-71.76733\\-21\\67.38281\\-71.72717\\-21\\69.33594\\-72.68324\\-21\\73.24219\\-72.82507\\-21\\75.19531\\-72.9686\\-21\\77.14844\\-74.22894\\-21\\81.05469\\-74.41637\\-21\\84.96094\\-74.85659\\-21\\86.91406\\-75.60609\\-21\\90.82031\\-76.17119\\-21\\92.77344\\-76.50806\\-21\\98.63281\\-78.28681\\-21\\102.5391\\-79.83694\\-21\\104.4922\\-80.30436\\-21\\106.4453\\-80.97108\\-21\\108.3984\\-81.84495\\-21\\110.3516\\-82.4377\\-21\\112.3047\\-83.47012\\-21\\114.2578\\-84.32668\\-21\\116.2109\\-85.52474\\-21\\118.1641\\-86.36077\\-21\\120.1172\\-87.64212\\-21\\122.0703\\-88.46233\\-21\\124.0234\\-89.89426\\-21\\125.9766\\-91.48235\\-21\\127.8363\\-92.83594\\-21\\129.8828\\-94.60189\\-21\\131.8359\\-96.63368\\-21\\133.7891\\-98.95753\\-21\\135.0935\\-100.6484\\-21\\136.473\\-102.6016\\-21\\137.4741\\-104.5547\\-21\\138.7165\\-106.5078\\-21\\140.0832\\-108.4609\\-21\\141.0391\\-110.4141\\-21\\142.2505\\-112.3672\\-21\\142.9542\\-114.3203\\-21\\144.0677\\-116.2734\\-21\\144.8272\\-118.2266\\-21\\145.9837\\-120.1797\\-21\\146.7881\\-122.1328\\-21\\147.8529\\-124.0859\\-21\\148.5103\\-126.0391\\-21\\150.116\\-129.9453\\-21\\150.6553\\-131.8984\\-21\\151.6029\\-133.8516\\-21\\153.0287\\-137.7578\\-21\\153.8826\\-139.7109\\-21\\154.8952\\-143.6172\\-21\\155.6085\\-145.5703\\-21\\156.0584\\-147.5234\\-21\\156.673\\-151.4297\\-21\\157.2932\\-153.3828\\-21\\157.8039\\-155.3359\\-21\\158.339\\-159.2422\\-21\\158.6709\\-161.1953\\-21\\159.5365\\-165.1016\\-21\\159.772\\-167.0547\\-21\\160.1166\\-170.9609\\-21\\160.9134\\-182.6797\\-21\\161.1097\\-188.5391\\-21\\161.1251\\-192.4453\\-21\\160.9809\\-200.2578\\-21\\160.5656\\-208.0703\\-21\\160.1072\\-213.9297\\-21\\159.6934\\-217.8359\\-21\\159.3018\\-219.7891\\-21\\158.7656\\-221.7422\\-21\\158.0404\\-225.6484\\-21\\157.6135\\-227.6016\\-21\\156.8185\\-229.5547\\-21\\155.9602\\-233.4609\\-21\\154.3916\\-237.3672\\-21\\153.6654\\-239.3203\\-21\\152.5018\\-241.2734\\-21\\151.3672\\-243.3808\\-21\\148.0455\\-249.0859\\-21\\143.6406\\-254.9453\\-21\\141.9847\\-256.8984\\-21\\137.6953\\-261.5156\\-21\\134.4329\\-264.7109\\-21\\131.8359\\-267.1523\\-21\\129.8828\\-268.8493\\-21\\125.9766\\-271.8579\\-21\\124.0234\\-273.5369\\-21\\122.0703\\-275.0937\\-21\\120.1172\\-276.2514\\-21\\118.1641\\-277.564\\-21\\116.2109\\-279.0359\\-21\\114.1385\\-280.3359\\-21\\110.3516\\-282.5103\\-21\\108.3984\\-283.3722\\-21\\106.4453\\-284.5298\\-21\\104.4922\\-285.4313\\-21\\102.5391\\-286.5948\\-21\\100.5859\\-287.3155\\-21\\98.63281\\-288.2344\\-21\\96.67969\\-288.9602\\-21\\94.72656\\-289.4161\\-21\\92.77344\\-290.2785\\-21\\90.82031\\-290.935\\-21\\88.86719\\-291.4245\\-21\\86.91406\\-292.2033\\-21\\84.96094\\-292.732\\-21\\81.05469\\-293.4011\\-21\\77.14844\\-294.2003\\-21\\75.19531\\-294.4541\\-21\\71.28906\\-294.6968\\-21\\67.38281\\-294.7521\\-21\\61.52344\\-294.5274\\-21\\57.61719\\-294.0608\\-21\\53.71094\\-293.3901\\-21\\47.85156\\-292.697\\-21\\45.89844\\-292.5255\\-21\\43.94531\\-292.2291\\-21\\41.99219\\-291.8123\\-21\\40.03906\\-291.5941\\-21\\36.13281\\-291.3946\\-21\\32.22656\\-291.4745\\-21\\30.27344\\-291.5818\\-21\\28.32031\\-291.8579\\-21\\24.41406\\-292.6168\\-21\\18.55469\\-293.2652\\-21\\14.64844\\-293.805\\-21\\12.69531\\-294.1484\\-21\\8.789063\\-294.5849\\-21\\4.882813\\-294.8145\\-21\\-0.9765625\\-294.9663\\-21\\-8.789063\\-294.9904\\-21\\-16.60156\\-294.8196\\-21\\-24.41406\\-294.5341\\-21\\-30.27344\\-294.046\\-21\\-32.22656\\-293.8096\\-21\\-36.13281\\-293.5133\\-21\\-40.03906\\-293.4126\\-21\\-41.99219\\-293.4472\\-21\\-45.89844\\-293.7852\\-21\\-49.80469\\-294.3466\\-21\\-53.71094\\-294.7054\\-21\\-61.52344\\-295.2911\\-21\\-65.42969\\-295.7059\\-21\\-67.38281\\-295.969\\-21\\-71.28906\\-296.2389\\-21\\-75.19531\\-296.263\\-21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "298"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "116"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.86719\\-294.2017\\-19\\-90.82031\\-293.4387\\-19\\-92.77344\\-292.8896\\-19\\-94.72656\\-292.1768\\-19\\-96.67969\\-291.2365\\-19\\-98.63281\\-290.5432\\-19\\-100.5859\\-289.4006\\-19\\-102.5391\\-288.8186\\-19\\-104.4922\\-287.6536\\-19\\-106.4453\\-286.761\\-19\\-108.3984\\-285.4243\\-19\\-112.3047\\-283.1163\\-19\\-114.2578\\-281.794\\-19\\-116.2109\\-280.7534\\-19\\-120.1172\\-277.6931\\-19\\-124.0234\\-275.0434\\-19\\-125.9766\\-273.4161\\-19\\-129.2641\\-270.5703\\-19\\-133.421\\-266.6641\\-19\\-137.6953\\-262.1043\\-19\\-138.7579\\-260.8047\\-19\\-140.5094\\-258.8516\\-19\\-142.0506\\-256.8984\\-19\\-143.2166\\-254.9453\\-19\\-144.5368\\-252.9922\\-19\\-145.9863\\-251.0391\\-19\\-147.1052\\-249.0859\\-19\\-148.3244\\-247.1328\\-19\\-149.1277\\-245.1797\\-19\\-150.2179\\-243.2266\\-19\\-150.9698\\-241.2734\\-19\\-152.0594\\-239.3203\\-19\\-152.8289\\-237.3672\\-19\\-153.8503\\-235.4141\\-19\\-154.4356\\-233.4609\\-19\\-155.8966\\-229.5547\\-19\\-156.691\\-225.6484\\-19\\-157.474\\-223.6953\\-19\\-157.9949\\-221.7422\\-19\\-158.8607\\-217.8359\\-19\\-159.5861\\-215.8828\\-19\\-160.6476\\-210.0234\\-19\\-161.5221\\-206.1172\\-19\\-161.7658\\-204.1641\\-19\\-162.0564\\-200.2578\\-19\\-162.2842\\-196.3516\\-19\\-162.495\\-190.4922\\-19\\-162.6779\\-186.5859\\-19\\-162.772\\-180.7266\\-19\\-162.6107\\-174.8672\\-19\\-162.3011\\-169.0078\\-19\\-162.0265\\-165.1016\\-19\\-161.589\\-161.1953\\-19\\-161.1713\\-159.2422\\-19\\-160.6383\\-157.2891\\-19\\-159.8712\\-153.3828\\-19\\-159.3541\\-151.4297\\-19\\-158.5644\\-149.4766\\-19\\-158.0702\\-147.5234\\-19\\-157.4383\\-145.5703\\-19\\-156.5491\\-143.6172\\-19\\-156.1166\\-141.6641\\-19\\-155.4349\\-139.7109\\-19\\-154.5786\\-137.7578\\-19\\-153.9498\\-135.8047\\-19\\-152.9833\\-133.8516\\-19\\-152.1801\\-131.8984\\-19\\-151.2211\\-129.9453\\-19\\-149.5625\\-126.0391\\-19\\-148.6044\\-124.0859\\-19\\-147.8392\\-122.1328\\-19\\-145.5078\\-118.2165\\-19\\-143.3893\\-114.3203\\-19\\-142.4731\\-112.3672\\-19\\-141.3215\\-110.4141\\-19\\-140.2856\\-108.4609\\-19\\-138.7707\\-106.5078\\-19\\-137.5016\\-104.5547\\-19\\-136.3551\\-102.6016\\-19\\-133.7891\\-99.37139\\-19\\-131.8359\\-97.05368\\-19\\-129.8828\\-95.01834\\-19\\-127.3519\\-92.83594\\-19\\-124.0234\\-90.17543\\-19\\-122.0703\\-88.85326\\-19\\-120.1172\\-87.88599\\-19\\-118.1641\\-86.69856\\-19\\-116.2109\\-85.78225\\-19\\-114.2578\\-84.75291\\-19\\-112.3047\\-83.83664\\-19\\-108.3984\\-82.15479\\-19\\-106.4453\\-81.68401\\-19\\-104.4922\\-80.64983\\-19\\-102.5391\\-80.29757\\-19\\-100.5859\\-79.37822\\-19\\-96.67969\\-78.28648\\-19\\-92.77344\\-77.31332\\-19\\-90.82031\\-76.66541\\-19\\-88.86719\\-76.23438\\-19\\-83.00781\\-75.68211\\-19\\-81.05469\\-74.84041\\-19\\-79.10156\\-74.59515\\-19\\-77.14844\\-74.4494\\-19\\-71.28906\\-74.33484\\-19\\-67.38281\\-74.22346\\-19\\-61.52344\\-74.20035\\-19\\-59.57031\\-74.01432\\-19\\-57.61719\\-74.00701\\-19\\-55.66406\\-74.16672\\-19\\-51.75781\\-73.99525\\-19\\-49.80469\\-74.29309\\-19\\-43.94531\\-74.44813\\-19\\-40.03906\\-74.68137\\-19\\-38.08594\\-74.90201\\-19\\-34.17969\\-75.78758\\-19\\-30.27344\\-76.31856\\-19\\-28.32031\\-76.68461\\-19\\-22.46094\\-78.72017\\-19\\-20.50781\\-79.67269\\-19\\-18.55469\\-80.38004\\-19\\-16.60156\\-81.43291\\-19\\-14.64844\\-82.21269\\-19\\-13.09275\\-83.07031\\-19\\-10.74219\\-84.57719\\-19\\-8.789063\\-86.3196\\-19\\-7.900551\\-86.97656\\-19\\-5.801505\\-88.92969\\-19\\-4.266401\\-90.88281\\-19\\-2.929688\\-92.05347\\-19\\-0.9765625\\-92.15449\\-19\\0.9765625\\-92.46895\\-19\\2.929688\\-91.9707\\-19\\4.596044\\-90.88281\\-19\\8.789063\\-87.17533\\-19\\10.74219\\-85.15082\\-19\\13.16445\\-83.07031\\-19\\16.60156\\-80.72798\\-19\\18.55469\\-79.906\\-19\\20.50781\\-78.61944\\-19\\22.46094\\-77.78653\\-19\\24.41406\\-76.80843\\-19\\26.36719\\-76.17446\\-19\\28.32031\\-75.77482\\-19\\30.27344\\-74.83611\\-19\\32.22656\\-74.47531\\-19\\34.17969\\-74.25218\\-19\\36.13281\\-72.85171\\-19\\40.03906\\-72.66249\\-19\\41.99219\\-71.77303\\-19\\45.89844\\-71.6513\\-19\\49.80469\\-71.60755\\-19\\51.75781\\-71.671\\-19\\57.61719\\-71.67064\\-19\\61.52344\\-71.76733\\-19\\65.42969\\-71.77303\\-19\\67.38281\\-71.72308\\-19\\69.33594\\-72.67616\\-19\\73.24219\\-72.81641\\-19\\75.19531\\-72.98988\\-19\\77.14844\\-74.21191\\-19\\79.10156\\-74.29295\\-19\\83.00781\\-74.60013\\-19\\84.96094\\-74.85659\\-19\\86.91406\\-75.63081\\-19\\90.82031\\-76.20565\\-19\\92.77344\\-76.55363\\-19\\94.72656\\-77.26352\\-19\\98.63281\\-78.40331\\-19\\102.5391\\-79.9023\\-19\\104.4922\\-80.36095\\-19\\108.3984\\-81.86506\\-19\\110.3516\\-82.46696\\-19\\112.3047\\-83.53323\\-19\\114.2578\\-84.37424\\-19\\116.2109\\-85.57513\\-19\\118.1641\\-86.41219\\-19\\120.1172\\-87.69517\\-19\\122.0703\\-88.52338\\-19\\124.0234\\-89.96616\\-19\\127.6495\\-92.83594\\-19\\129.8372\\-94.78906\\-19\\131.8359\\-96.91898\\-19\\133.7891\\-99.28639\\-19\\136.2953\\-102.6016\\-19\\137.1535\\-104.5547\\-19\\137.6953\\-105.2486\\-19\\139.7578\\-108.4609\\-19\\140.8031\\-110.4141\\-19\\141.9992\\-112.3672\\-19\\142.7471\\-114.3203\\-19\\143.7789\\-116.2734\\-19\\144.6145\\-118.2266\\-19\\145.6575\\-120.1797\\-19\\147.5143\\-124.0859\\-19\\148.335\\-126.0391\\-19\\148.9639\\-127.9922\\-19\\149.9023\\-129.9453\\-19\\150.4592\\-131.8984\\-19\\151.1659\\-133.8516\\-19\\152.0916\\-135.8047\\-19\\152.7063\\-137.7578\\-19\\153.5965\\-139.7109\\-19\\154.1741\\-141.6641\\-19\\154.6452\\-143.6172\\-19\\155.862\\-147.5234\\-19\\156.2088\\-149.4766\\-19\\156.4534\\-151.4297\\-19\\156.8427\\-153.3828\\-19\\157.4857\\-155.3359\\-19\\157.8863\\-157.2891\\-19\\158.6914\\-163.1484\\-19\\159.5158\\-167.0547\\-19\\159.9134\\-170.9609\\-19\\160.3829\\-178.7734\\-19\\160.6599\\-184.6328\\-19\\160.7281\\-192.4453\\-19\\160.6172\\-200.2578\\-19\\160.298\\-208.0703\\-19\\159.8931\\-213.9297\\-19\\159.685\\-215.8828\\-19\\159.3541\\-217.8359\\-19\\158.8286\\-219.7891\\-19\\158.4499\\-221.7422\\-19\\157.8026\\-225.6484\\-19\\156.529\\-229.5547\\-19\\156.1607\\-231.5078\\-19\\155.6792\\-233.4609\\-19\\154.7885\\-235.4141\\-19\\154.1516\\-237.3672\\-19\\152.2066\\-241.2734\\-19\\150.9638\\-243.2266\\-19\\150.0543\\-245.1797\\-19\\148.7523\\-247.1328\\-19\\147.6263\\-249.0859\\-19\\146.2387\\-251.0391\\-19\\144.6337\\-252.9922\\-19\\143.5547\\-254.4489\\-19\\141.6016\\-256.7961\\-19\\137.6953\\-260.9151\\-19\\135.8685\\-262.7578\\-19\\133.815\\-264.7109\\-19\\129.473\\-268.6172\\-19\\127.1045\\-270.5703\\-19\\124.6303\\-272.5234\\-19\\124.0234\\-273.1053\\-19\\122.0703\\-274.6274\\-19\\120.1172\\-275.7595\\-19\\118.1641\\-277.2122\\-19\\116.2109\\-278.5382\\-19\\114.2578\\-279.7287\\-19\\112.3047\\-281.0353\\-19\\110.3516\\-281.9834\\-19\\108.3984\\-283.0979\\-19\\106.4453\\-283.8929\\-19\\104.4922\\-285.0737\\-19\\100.5859\\-287.0063\\-19\\98.63281\\-287.7212\\-19\\96.67969\\-288.6732\\-19\\92.77344\\-289.7123\\-19\\90.82031\\-290.6046\\-19\\86.91406\\-291.5847\\-19\\84.96094\\-292.3365\\-19\\83.00781\\-292.756\\-19\\73.24219\\-294.2256\\-19\\69.33594\\-294.4738\\-19\\65.42969\\-294.4834\\-19\\61.52344\\-294.2641\\-19\\59.57031\\-294.0307\\-19\\53.71094\\-293.2255\\-19\\45.89844\\-292.5077\\-19\\41.99219\\-291.9578\\-19\\40.03906\\-291.802\\-19\\36.13281\\-291.7182\\-19\\32.22656\\-292.0013\\-19\\28.32031\\-292.5574\\-19\\22.46094\\-293.2501\\-19\\20.50781\\-293.5261\\-19\\16.60156\\-294.2798\\-19\\10.74219\\-294.8247\\-19\\4.882813\\-295.1265\\-19\\0.9765625\\-295.2378\\-19\\-2.929688\\-295.2868\\-19\\-8.789063\\-295.2994\\-19\\-16.60156\\-295.1003\\-19\\-24.41406\\-294.8236\\-19\\-30.27344\\-294.4961\\-19\\-36.13281\\-293.9544\\-19\\-40.03906\\-293.7377\\-19\\-43.94531\\-293.8256\\-19\\-47.85156\\-294.2101\\-19\\-55.66406\\-294.7781\\-19\\-61.52344\\-295.123\\-19\\-69.33594\\-295.6643\\-19\\-71.28906\\-295.7316\\-19\\-75.19531\\-295.7448\\-19\\-81.05469\\-295.3078\\-19\\-84.96094\\-294.9314\\-19\\-86.91406\\-294.6649\\-19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "295"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "117"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-294.3814\\-17\\-90.82031\\-293.1252\\-17\\-92.77344\\-292.6295\\-17\\-94.72656\\-291.6478\\-17\\-96.67969\\-290.9908\\-17\\-100.5859\\-289.2238\\-17\\-102.5391\\-288.5349\\-17\\-104.4922\\-287.3803\\-17\\-106.4453\\-286.4498\\-17\\-109.8501\\-284.2422\\-17\\-110.3516\\-283.8388\\-17\\-112.3047\\-282.8803\\-17\\-114.2578\\-281.5364\\-17\\-116.2109\\-280.4068\\-17\\-118.1641\\-278.9852\\-17\\-120.1172\\-277.4233\\-17\\-122.0703\\-276.0376\\-17\\-124.0234\\-274.7567\\-17\\-128.958\\-270.5703\\-17\\-131.8359\\-267.9283\\-17\\-135.0215\\-264.7109\\-17\\-137.6953\\-261.8253\\-17\\-140.2618\\-258.8516\\-17\\-141.7683\\-256.8984\\-17\\-142.9606\\-254.9453\\-17\\-143.5547\\-254.2129\\-17\\-145.5078\\-251.2425\\-17\\-146.8372\\-249.0859\\-17\\-148.1506\\-247.1328\\-17\\-148.9155\\-245.1797\\-17\\-150.0588\\-243.2266\\-17\\-150.7429\\-241.2734\\-17\\-151.8703\\-239.3203\\-17\\-152.622\\-237.3672\\-17\\-153.648\\-235.4141\\-17\\-154.8705\\-231.5078\\-17\\-155.6929\\-229.5547\\-17\\-156.1798\\-227.6016\\-17\\-156.5073\\-225.6484\\-17\\-157.1121\\-223.6953\\-17\\-157.8296\\-221.7422\\-17\\-158.6062\\-217.8359\\-17\\-159.3283\\-215.8828\\-17\\-159.8007\\-213.9297\\-17\\-160.7917\\-208.0703\\-17\\-161.243\\-206.1172\\-17\\-161.583\\-204.1641\\-17\\-161.9339\\-200.2578\\-17\\-162.1511\\-196.3516\\-17\\-162.4127\\-188.5391\\-17\\-162.5038\\-180.7266\\-17\\-162.4127\\-174.8672\\-17\\-162.1567\\-169.0078\\-17\\-161.8652\\-165.1016\\-17\\-161.6524\\-163.1484\\-17\\-161.2992\\-161.1953\\-17\\-160.3702\\-157.2891\\-17\\-159.6263\\-153.3828\\-17\\-158.8716\\-151.4297\\-17\\-157.8179\\-147.5234\\-17\\-156.9972\\-145.5703\\-17\\-156.367\\-143.6172\\-17\\-155.9393\\-141.6641\\-17\\-155.098\\-139.7109\\-17\\-153.6944\\-135.8047\\-17\\-152.6994\\-133.8516\\-17\\-151.9413\\-131.8984\\-17\\-150.8855\\-129.9453\\-17\\-150.1894\\-127.9922\\-17\\-149.1911\\-126.0391\\-17\\-148.4194\\-124.0859\\-17\\-147.5\\-122.1328\\-17\\-146.3712\\-120.1797\\-17\\-145.1348\\-118.2266\\-17\\-144.2562\\-116.2734\\-17\\-143.1089\\-114.3203\\-17\\-142.3215\\-112.3672\\-17\\-141.0973\\-110.4141\\-17\\-140.0706\\-108.4609\\-17\\-138.6041\\-106.5078\\-17\\-137.286\\-104.5547\\-17\\-136.2055\\-102.6016\\-17\\-133.7891\\-99.56608\\-17\\-131.8359\\-97.29688\\-17\\-129.8828\\-95.23296\\-17\\-127.1891\\-92.83594\\-17\\-125.9766\\-92.03645\\-17\\-124.0234\\-90.29556\\-17\\-121.9644\\-88.92969\\-17\\-120.1172\\-87.9593\\-17\\-118.1641\\-86.77681\\-17\\-116.2109\\-85.85183\\-17\\-112.3047\\-83.83611\\-17\\-108.3984\\-82.10741\\-17\\-106.4453\\-81.71551\\-17\\-104.4922\\-80.61159\\-17\\-102.5391\\-80.27931\\-17\\-100.5859\\-79.43717\\-17\\-92.77344\\-77.28358\\-17\\-90.82031\\-76.64806\\-17\\-88.86719\\-76.22768\\-17\\-83.00781\\-75.68805\\-17\\-81.05469\\-74.78876\\-17\\-77.14844\\-74.4882\\-17\\-71.28906\\-74.31066\\-17\\-63.47656\\-74.19405\\-17\\-61.52344\\-74.11437\\-17\\-59.57031\\-73.1303\\-17\\-55.66406\\-73.1431\\-17\\-53.71094\\-73.09299\\-17\\-49.80469\\-74.2283\\-17\\-43.94531\\-74.40257\\-17\\-40.03906\\-74.60457\\-17\\-36.13281\\-75.00967\\-17\\-34.17969\\-75.67634\\-17\\-28.32031\\-76.58618\\-17\\-26.36719\\-77.20331\\-17\\-22.46094\\-78.60995\\-17\\-20.50781\\-79.5276\\-17\\-18.55469\\-80.26347\\-17\\-16.61551\\-81.11719\\-17\\-12.69531\\-83.02893\\-17\\-9.790453\\-85.02344\\-17\\-7.473186\\-86.97656\\-17\\-5.366991\\-88.92969\\-17\\-2.929688\\-91.5542\\-17\\-0.9765625\\-91.94205\\-17\\0.9765625\\-92.15285\\-17\\2.929688\\-91.74593\\-17\\4.254482\\-90.88281\\-17\\6.571785\\-88.92969\\-17\\8.789063\\-86.86031\\-17\\10.74219\\-84.86196\\-17\\12.88859\\-83.07031\\-17\\16.60156\\-80.61866\\-17\\18.55469\\-79.64133\\-17\\20.50781\\-78.46834\\-17\\22.46094\\-77.69262\\-17\\24.41406\\-76.72581\\-17\\26.36719\\-76.11984\\-17\\28.32031\\-75.7162\\-17\\30.27344\\-74.75538\\-17\\34.17969\\-74.23502\\-17\\36.13281\\-72.82507\\-17\\38.08594\\-72.71983\\-17\\40.03906\\-72.29057\\-17\\41.99219\\-71.71135\\-17\\43.94531\\-71.75195\\-17\\45.89844\\-71.68666\\-17\\49.80469\\-71.66143\\-17\\51.75781\\-71.74038\\-17\\53.71094\\-71.68306\\-17\\59.57031\\-71.70033\\-17\\61.52344\\-71.806\\-17\\65.42969\\-71.90269\\-17\\67.38281\\-71.79359\\-17\\69.33594\\-72.66914\\-17\\73.24219\\-72.81641\\-17\\75.19531\\-72.98988\\-17\\77.14844\\-74.20657\\-17\\79.10156\\-74.29295\\-17\\83.00781\\-74.61341\\-17\\84.96094\\-74.84465\\-17\\86.91406\\-75.65517\\-17\\90.82031\\-76.22863\\-17\\92.77344\\-76.56615\\-17\\94.72656\\-77.36063\\-17\\98.63281\\-78.46974\\-17\\102.5391\\-79.95106\\-17\\104.4922\\-80.42749\\-17\\106.4453\\-81.23344\\-17\\110.3516\\-82.54398\\-17\\112.3047\\-83.58589\\-17\\114.2578\\-84.4229\\-17\\116.2109\\-85.61814\\-17\\118.1641\\-86.45615\\-17\\120.1172\\-87.7292\\-17\\122.0703\\-88.61156\\-17\\124.0234\\-90.03646\\-17\\127.476\\-92.83594\\-17\\129.6196\\-94.78906\\-17\\131.8359\\-97.21062\\-17\\134.6198\\-100.6484\\-17\\136.0478\\-102.6016\\-17\\136.8958\\-104.5547\\-17\\138.3124\\-106.5078\\-17\\139.3441\\-108.4609\\-17\\140.5814\\-110.4141\\-17\\141.673\\-112.3672\\-17\\142.5842\\-114.3203\\-17\\143.3919\\-116.2734\\-17\\144.3925\\-118.2266\\-17\\145.2421\\-120.1797\\-17\\146.327\\-122.1328\\-17\\147.14\\-124.0859\\-17\\148.1181\\-126.0391\\-17\\148.7056\\-127.9922\\-17\\149.6033\\-129.9453\\-17\\150.2789\\-131.8984\\-17\\150.8304\\-133.8516\\-17\\151.8584\\-135.8047\\-17\\152.434\\-137.7578\\-17\\153.9542\\-141.6641\\-17\\154.9316\\-145.5703\\-17\\155.6177\\-147.5234\\-17\\156.0631\\-149.4766\\-17\\156.5735\\-153.3828\\-17\\157.0168\\-155.3359\\-17\\157.6425\\-157.2891\\-17\\157.9652\\-159.2422\\-17\\158.4218\\-163.1484\\-17\\158.7003\\-165.1016\\-17\\159.4388\\-169.0078\\-17\\159.6593\\-170.9609\\-17\\160.0688\\-176.8203\\-17\\160.3845\\-184.6328\\-17\\160.4368\\-192.4453\\-17\\160.3505\\-200.2578\\-17\\160.0777\\-208.0703\\-17\\159.668\\-213.9297\\-17\\159.3667\\-215.8828\\-17\\158.8607\\-217.8359\\-17\\158.4913\\-219.7891\\-17\\157.9204\\-223.6953\\-17\\157.4623\\-225.6484\\-17\\156.7319\\-227.6016\\-17\\155.9476\\-231.5078\\-17\\154.5079\\-235.4141\\-17\\153.8635\\-237.3672\\-17\\152.7511\\-239.3203\\-17\\151.8642\\-241.2734\\-17\\150.6145\\-243.2266\\-17\\149.7004\\-245.1797\\-17\\147.4609\\-248.7162\\-17\\145.8571\\-251.0391\\-17\\143.5547\\-253.9455\\-17\\140.9895\\-256.8984\\-17\\139.0084\\-258.8516\\-17\\135.2896\\-262.7578\\-17\\129.8828\\-267.7484\\-17\\127.9297\\-269.4385\\-17\\125.9766\\-271.0136\\-17\\121.4913\\-274.4766\\-17\\118.1641\\-276.7623\\-17\\116.2109\\-277.867\\-17\\115.6106\\-278.3828\\-17\\112.3047\\-280.6119\\-17\\110.3516\\-281.5678\\-17\\108.3984\\-282.7841\\-17\\106.4453\\-283.486\\-17\\104.4922\\-284.6963\\-17\\102.5391\\-285.5268\\-17\\100.5859\\-286.6474\\-17\\98.63281\\-287.3473\\-17\\96.67969\\-288.2638\\-17\\94.72656\\-288.9673\\-17\\92.77344\\-289.3572\\-17\\88.86719\\-290.7924\\-17\\84.96094\\-291.6653\\-17\\83.00781\\-292.3586\\-17\\81.05469\\-292.7347\\-17\\71.28906\\-293.9086\\-17\\69.33594\\-294.0898\\-17\\65.42969\\-294.1597\\-17\\63.47656\\-294.0604\\-17\\59.57031\\-293.6983\\-17\\55.66406\\-293.2578\\-17\\47.85156\\-292.6009\\-17\\45.89844\\-292.4801\\-17\\41.99219\\-292.0923\\-17\\38.08594\\-292.1069\\-17\\32.22656\\-292.5372\\-17\\26.36719\\-293.1622\\-17\\22.46094\\-293.7965\\-17\\20.50781\\-294.2145\\-17\\18.55469\\-294.5215\\-17\\14.64844\\-294.8765\\-17\\8.789063\\-295.241\\-17\\0.9765625\\-295.6566\\-17\\-4.882813\\-295.748\\-17\\-8.789063\\-295.7464\\-17\\-12.69531\\-295.5939\\-17\\-16.60156\\-295.375\\-17\\-24.41406\\-295.045\\-17\\-32.22656\\-294.6281\\-17\\-40.03906\\-294.0886\\-17\\-43.94531\\-294.0604\\-17\\-55.66406\\-294.7054\\-17\\-63.47656\\-295.1018\\-17\\-69.33594\\-295.3412\\-17\\-71.28906\\-295.3839\\-17\\-75.19531\\-295.3662\\-17\\-79.10156\\-295.1959\\-17\\-83.00781\\-294.9134\\-17\\-84.96094\\-294.7045\\-17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "298"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "118"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-296.0313\\-15\\-16.60156\\-295.8171\\-15\\-20.50781\\-295.5026\\-15\\-24.41406\\-295.2536\\-15\\-36.13281\\-294.6083\\-15\\-41.99219\\-294.2605\\-15\\-43.94531\\-294.2605\\-15\\-49.80469\\-294.4023\\-15\\-57.61719\\-294.701\\-15\\-61.52344\\-294.8765\\-15\\-69.33594\\-295.1195\\-15\\-75.19531\\-295.1248\\-15\\-79.10156\\-294.9964\\-15\\-81.05469\\-294.8712\\-15\\-84.96094\\-294.4076\\-15\\-88.86719\\-293.3214\\-15\\-90.82031\\-292.8574\\-15\\-92.77344\\-292.1901\\-15\\-94.72656\\-291.2893\\-15\\-96.67969\\-290.7285\\-15\\-98.63281\\-289.64\\-15\\-100.5859\\-289.0411\\-15\\-102.5005\\-288.1484\\-15\\-104.4922\\-287.1025\\-15\\-108.3984\\-284.8683\\-15\\-110.3516\\-283.5256\\-15\\-112.3047\\-282.5754\\-15\\-115.7272\\-280.3359\\-15\\-118.4082\\-278.3828\\-15\\-121.22\\-276.4297\\-15\\-125.9766\\-272.8329\\-15\\-128.624\\-270.5703\\-15\\-131.8359\\-267.6472\\-15\\-134.7656\\-264.7109\\-15\\-137.6953\\-261.4936\\-15\\-139.974\\-258.8516\\-15\\-141.6016\\-256.6567\\-15\\-142.7313\\-254.9453\\-15\\-144.1515\\-252.9922\\-15\\-145.5078\\-250.7792\\-15\\-147.9362\\-247.1328\\-15\\-148.7523\\-245.1797\\-15\\-149.8684\\-243.2266\\-15\\-150.5777\\-241.2734\\-15\\-151.6181\\-239.3203\\-15\\-152.4201\\-237.3672\\-15\\-153.4011\\-235.4141\\-15\\-154.1049\\-233.4609\\-15\\-154.6623\\-231.5078\\-15\\-155.4612\\-229.5547\\-15\\-156.0486\\-227.6016\\-15\\-156.3771\\-225.6484\\-15\\-156.8264\\-223.6953\\-15\\-157.6036\\-221.7422\\-15\\-158.4201\\-217.8359\\-15\\-158.9423\\-215.8828\\-15\\-159.5956\\-213.9297\\-15\\-159.9398\\-211.9766\\-15\\-160.5188\\-208.0703\\-15\\-161.3253\\-204.1641\\-15\\-161.7697\\-200.2578\\-15\\-162.0975\\-194.3984\\-15\\-162.2344\\-190.4922\\-15\\-162.337\\-184.6328\\-15\\-162.337\\-178.7734\\-15\\-162.2041\\-172.9141\\-15\\-162.0028\\-169.0078\\-15\\-161.6649\\-165.1016\\-15\\-161.3647\\-163.1484\\-15\\-160.8851\\-161.1953\\-15\\-159.8079\\-155.3359\\-15\\-159.2605\\-153.3828\\-15\\-158.5379\\-151.4297\\-15\\-158.0908\\-149.4766\\-15\\-157.5414\\-147.5234\\-15\\-156.6805\\-145.5703\\-15\\-155.7067\\-141.6641\\-15\\-154.7953\\-139.7109\\-15\\-154.1549\\-137.7578\\-15\\-153.3579\\-135.8047\\-15\\-152.432\\-133.8516\\-15\\-151.6905\\-131.8984\\-15\\-150.6378\\-129.9453\\-15\\-149.9987\\-127.9922\\-15\\-148.9467\\-126.0391\\-15\\-148.2384\\-124.0859\\-15\\-147.0965\\-122.1328\\-15\\-146.1568\\-120.1797\\-15\\-144.8709\\-118.2266\\-15\\-144.0979\\-116.2734\\-15\\-142.9058\\-114.3203\\-15\\-142.136\\-112.3672\\-15\\-140.894\\-110.4141\\-15\\-139.797\\-108.4609\\-15\\-137.0733\\-104.5547\\-15\\-136.0397\\-102.6016\\-15\\-134.4819\\-100.6484\\-15\\-131.8359\\-97.54958\\-15\\-129.8828\\-95.43756\\-15\\-126.961\\-92.83594\\-15\\-125.9766\\-92.14628\\-15\\-124.0234\\-90.46225\\-15\\-121.6863\\-88.92969\\-15\\-118.1641\\-86.84584\\-15\\-116.2109\\-85.93171\\-15\\-114.2578\\-84.87483\\-15\\-112.3047\\-83.66578\\-15\\-108.3984\\-82.14915\\-15\\-106.4453\\-81.7523\\-15\\-104.4922\\-80.66811\\-15\\-102.5391\\-80.31818\\-15\\-100.5859\\-79.57567\\-15\\-98.63281\\-79.06932\\-15\\-94.72656\\-77.73022\\-15\\-90.82031\\-76.65591\\-15\\-88.86719\\-76.23438\\-15\\-83.00781\\-75.72252\\-15\\-81.05469\\-74.79688\\-15\\-77.14844\\-74.51897\\-15\\-73.24219\\-74.31102\\-15\\-67.38281\\-74.21107\\-15\\-63.47656\\-73.98026\\-15\\-61.52344\\-73.02286\\-15\\-55.66406\\-72.98988\\-15\\-51.75781\\-72.92766\\-15\\-49.80469\\-74.09493\\-15\\-47.85156\\-74.25218\\-15\\-41.99219\\-74.44813\\-15\\-38.08594\\-74.70076\\-15\\-36.13281\\-74.89923\\-15\\-34.17969\\-75.32986\\-15\\-32.22656\\-75.91089\\-15\\-28.32031\\-76.5303\\-15\\-26.36719\\-77.07349\\-15\\-24.41406\\-77.84001\\-15\\-22.46094\\-78.5076\\-15\\-20.50781\\-79.41196\\-15\\-16.60156\\-80.96875\\-15\\-14.64844\\-81.95691\\-15\\-12.69531\\-82.76926\\-15\\-10.74219\\-84.01517\\-15\\-9.380139\\-85.02344\\-15\\-4.882813\\-89.06048\\-15\\-2.929688\\-90.63362\\-15\\-0.9765625\\-91.70027\\-15\\0.9765625\\-91.86411\\-15\\2.929688\\-91.49316\\-15\\4.882813\\-90.14567\\-15\\6.332632\\-88.92969\\-15\\8.789063\\-86.63719\\-15\\10.74219\\-84.70499\\-15\\12.70581\\-83.07031\\-15\\14.64844\\-81.84961\\-15\\16.60156\\-80.50279\\-15\\18.55469\\-79.5679\\-15\\20.50781\\-78.38911\\-15\\22.46094\\-77.5975\\-15\\24.41406\\-76.64127\\-15\\26.36719\\-76.08367\\-15\\28.32031\\-75.68211\\-15\\30.27344\\-74.74494\\-15\\32.22656\\-74.44094\\-15\\34.17969\\-74.24056\\-15\\36.13281\\-72.84272\\-15\\38.08594\\-72.71983\\-15\\41.99219\\-71.71909\\-15\\45.89844\\-71.67709\\-15\\53.71094\\-71.69899\\-15\\61.52344\\-71.78005\\-15\\63.47656\\-71.93931\\-15\\65.42969\\-72.47699\\-15\\67.38281\\-72.04039\\-15\\69.33594\\-72.67616\\-15\\73.24219\\-72.80784\\-15\\75.19531\\-72.97916\\-15\\77.14844\\-74.21806\\-15\\81.05469\\-74.44094\\-15\\84.96094\\-74.90904\\-15\\86.91406\\-75.68671\\-15\\92.77344\\-76.62119\\-15\\94.72656\\-77.41179\\-15\\98.63281\\-78.53046\\-15\\100.5859\\-79.37384\\-15\\102.5391\\-79.99868\\-15\\104.4922\\-80.48492\\-15\\106.4453\\-81.31847\\-15\\110.3516\\-82.61114\\-15\\112.3047\\-83.67173\\-15\\114.2578\\-84.47903\\-15\\116.2109\\-85.67651\\-15\\118.1641\\-86.50808\\-15\\120.1172\\-87.76887\\-15\\122.0703\\-88.69318\\-15\\124.0234\\-90.10767\\-15\\127.3003\\-92.83594\\-15\\129.8828\\-95.25749\\-15\\131.8359\\-97.45731\\-15\\134.4159\\-100.6484\\-15\\135.7422\\-102.6129\\-15\\136.773\\-104.5547\\-15\\138.0253\\-106.5078\\-15\\139.0281\\-108.4609\\-15\\140.3562\\-110.4141\\-15\\141.3156\\-112.3672\\-15\\142.3966\\-114.3203\\-15\\143.063\\-116.2734\\-15\\144.1918\\-118.2266\\-15\\144.9169\\-120.1797\\-15\\146.065\\-122.1328\\-15\\146.8315\\-124.0859\\-15\\147.8556\\-126.0391\\-15\\149.2112\\-129.9453\\-15\\150.0921\\-131.8984\\-15\\150.6037\\-133.8516\\-15\\151.5026\\-135.8047\\-15\\152.2094\\-137.7578\\-15\\152.8073\\-139.7109\\-15\\153.692\\-141.6641\\-15\\154.2146\\-143.6172\\-15\\154.6368\\-145.5703\\-15\\155.8452\\-149.4766\\-15\\156.6819\\-155.3359\\-15\\157.7062\\-159.2422\\-15\\157.9812\\-161.1953\\-15\\158.6796\\-167.0547\\-15\\159.5764\\-172.9141\\-15\\159.8562\\-176.8203\\-15\\160.0329\\-180.7266\\-15\\160.1313\\-184.6328\\-15\\160.1959\\-190.4922\\-15\\160.1166\\-200.2578\\-15\\159.942\\-206.1172\\-15\\159.7259\\-210.0234\\-15\\159.5365\\-211.9766\\-15\\158.9073\\-215.8828\\-15\\158.5305\\-217.8359\\-15\\157.997\\-221.7422\\-15\\157.633\\-223.6953\\-15\\156.9609\\-225.6484\\-15\\156.4534\\-227.6016\\-15\\156.1355\\-229.5547\\-15\\155.6792\\-231.5078\\-15\\154.8462\\-233.4609\\-15\\154.2398\\-235.4141\\-15\\153.3203\\-237.5733\\-15\\151.4048\\-241.2734\\-15\\148.1981\\-247.1328\\-15\\145.5078\\-250.7513\\-15\\143.9054\\-252.9922\\-15\\142.3001\\-254.9453\\-15\\140.5158\\-256.8984\\-15\\139.6484\\-257.6518\\-15\\135.7422\\-261.7338\\-15\\130.5013\\-266.6641\\-15\\129.8828\\-267.3267\\-15\\127.9297\\-269.0504\\-15\\125.9766\\-270.3718\\-15\\124.0234\\-271.8961\\-15\\122.0703\\-273.5804\\-15\\120.1172\\-275.0861\\-15\\118.1641\\-276.1913\\-15\\116.2109\\-277.5002\\-15\\114.2578\\-278.9485\\-15\\110.3516\\-281.2254\\-15\\108.3862\\-282.2891\\-15\\104.4922\\-284.139\\-15\\100.5859\\-286.1419\\-15\\98.63281\\-287.0364\\-15\\96.67969\\-287.7212\\-15\\94.72656\\-288.6367\\-15\\90.82031\\-289.5426\\-15\\88.86719\\-290.3525\\-15\\86.91406\\-290.912\\-15\\83.00781\\-291.6653\\-15\\81.05469\\-292.3138\\-15\\79.10156\\-292.6569\\-15\\73.24219\\-293.2781\\-15\\69.33594\\-293.5949\\-15\\65.42969\\-293.6869\\-15\\63.47656\\-293.6317\\-15\\59.57031\\-293.4064\\-15\\51.75781\\-292.827\\-15\\49.80469\\-292.2679\\-15\\47.85156\\-292.4611\\-15\\45.89844\\-292.4611\\-15\\41.99219\\-292.2785\\-15\\40.03906\\-292.3365\\-15\\34.17969\\-292.704\\-15\\30.27344\\-293.0626\\-15\\26.36719\\-293.6104\\-15\\22.46094\\-294.4103\\-15\\18.55469\\-294.8406\\-15\\8.789063\\-295.6307\\-15\\4.882813\\-296.0161\\-15\\0.9765625\\-296.2865\\-15\\-4.882813\\-296.3898\\-15\\-8.789063\\-296.3556\\-15\\-10.74219\\-296.2865\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "293"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "119"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-296.1869\\-13\\-24.41406\\-295.4925\\-13\\-30.27344\\-295.0949\\-13\\-34.17969\\-294.8897\\-13\\-40.03906\\-294.5241\\-13\\-43.94531\\-294.3894\\-13\\-49.80469\\-294.4153\\-13\\-55.66406\\-294.5365\\-13\\-65.42969\\-294.8526\\-13\\-71.28906\\-294.9542\\-13\\-75.19531\\-294.9245\\-13\\-79.10156\\-294.7687\\-13\\-81.05469\\-294.6326\\-13\\-83.00781\\-294.3839\\-13\\-86.91406\\-293.4055\\-13\\-90.82031\\-292.5341\\-13\\-92.77344\\-291.6158\\-13\\-96.67969\\-290.3525\\-13\\-98.63281\\-289.363\\-13\\-100.5859\\-288.8226\\-13\\-102.5391\\-287.7046\\-13\\-104.4922\\-286.8403\\-13\\-106.4453\\-285.5502\\-13\\-108.3984\\-284.524\\-13\\-112.3047\\-282.1108\\-13\\-114.2578\\-281.0668\\-13\\-118.1641\\-278.1387\\-13\\-120.1172\\-276.9433\\-13\\-123.392\\-274.4766\\-13\\-128.2193\\-270.5703\\-13\\-129.8828\\-269.1375\\-13\\-131.8359\\-267.335\\-13\\-134.4558\\-264.7109\\-13\\-137.6953\\-261.1356\\-13\\-141.6016\\-256.2738\\-13\\-143.8917\\-252.9922\\-13\\-144.971\\-251.0391\\-13\\-146.4088\\-249.0859\\-13\\-147.6819\\-247.1328\\-13\\-148.5797\\-245.1797\\-13\\-149.6048\\-243.2266\\-13\\-150.4019\\-241.2734\\-13\\-152.2418\\-237.3672\\-13\\-153.9657\\-233.4609\\-13\\-154.4696\\-231.5078\\-13\\-155.8926\\-227.6016\\-13\\-156.6185\\-223.6953\\-13\\-157.8863\\-219.7891\\-13\\-158.6538\\-215.8828\\-13\\-159.3018\\-213.9297\\-13\\-159.759\\-211.9766\\-13\\-160.6445\\-206.1172\\-13\\-161.338\\-202.2109\\-13\\-161.7576\\-198.3047\\-13\\-162.0447\\-192.4453\\-13\\-162.1388\\-188.5391\\-13\\-162.2106\\-182.6797\\-13\\-162.1868\\-178.7734\\-13\\-162.1094\\-174.8672\\-13\\-161.9623\\-170.9609\\-13\\-161.6338\\-167.0547\\-13\\-161.377\\-165.1016\\-13\\-160.5636\\-161.1953\\-13\\-159.925\\-157.2891\\-13\\-159.5365\\-155.3359\\-13\\-158.7981\\-153.3828\\-13\\-158.274\\-151.4297\\-13\\-157.8724\\-149.4766\\-13\\-157.1094\\-147.5234\\-13\\-156.4584\\-145.5703\\-13\\-156.0535\\-143.6172\\-13\\-155.3897\\-141.6641\\-13\\-154.5548\\-139.7109\\-13\\-153.9498\\-137.7578\\-13\\-152.9744\\-135.8047\\-13\\-152.2096\\-133.8516\\-13\\-150.4132\\-129.9453\\-13\\-149.7516\\-127.9922\\-13\\-148.7221\\-126.0391\\-13\\-148.0049\\-124.0859\\-13\\-146.8159\\-122.1328\\-13\\-145.931\\-120.1797\\-13\\-144.6931\\-118.2266\\-13\\-143.8546\\-116.2734\\-13\\-142.7274\\-114.3203\\-13\\-141.8981\\-112.3672\\-13\\-141.6016\\-111.9822\\-13\\-139.6484\\-108.6913\\-13\\-138.2825\\-106.5078\\-13\\-136.8293\\-104.5547\\-13\\-135.7677\\-102.6016\\-13\\-134.3122\\-100.6484\\-13\\-129.8828\\-95.72285\\-13\\-126.6731\\-92.83594\\-13\\-124.0234\\-90.63669\\-13\\-122.0703\\-89.43212\\-13\\-120.1172\\-88.08247\\-13\\-116.2109\\-86.03487\\-13\\-114.2578\\-84.90137\\-13\\-112.3047\\-83.62014\\-13\\-110.3516\\-83.07866\\-13\\-108.3984\\-82.23033\\-13\\-106.4453\\-81.77938\\-13\\-104.4922\\-80.76947\\-13\\-102.5391\\-80.39858\\-13\\-98.63281\\-79.14135\\-13\\-94.72656\\-77.69922\\-13\\-92.77344\\-77.25303\\-13\\-90.82031\\-76.7043\\-13\\-88.86719\\-76.27136\\-13\\-83.00781\\-75.71219\\-13\\-81.05469\\-74.72724\\-13\\-77.14844\\-74.45472\\-13\\-73.24219\\-74.25758\\-13\\-69.33594\\-74.20035\\-13\\-67.38281\\-74.07198\\-13\\-65.42969\\-73.33458\\-13\\-63.47656\\-72.97916\\-13\\-61.52344\\-72.94787\\-13\\-51.75781\\-72.90796\\-13\\-49.80469\\-73.97607\\-13\\-47.85156\\-74.21191\\-13\\-41.99219\\-74.40257\\-13\\-38.08594\\-74.63576\\-13\\-36.13281\\-74.83611\\-13\\-34.17969\\-75.24917\\-13\\-32.22656\\-75.85735\\-13\\-28.32031\\-76.43783\\-13\\-26.36719\\-76.92697\\-13\\-24.41406\\-77.733\\-13\\-22.46094\\-78.32619\\-13\\-20.50781\\-79.26644\\-13\\-18.55469\\-80.0927\\-13\\-16.60156\\-80.80614\\-13\\-14.64844\\-81.86983\\-13\\-12.69531\\-82.57867\\-13\\-10.74219\\-83.8503\\-13\\-9.143391\\-85.02344\\-13\\-4.658048\\-88.92969\\-13\\-2.929688\\-90.27397\\-13\\-0.9765625\\-91.42182\\-13\\0.9765625\\-91.61015\\-13\\2.929688\\-91.19762\\-13\\4.882813\\-89.92632\\-13\\8.789063\\-86.4756\\-13\\10.74219\\-84.57834\\-13\\12.69531\\-82.91439\\-13\\16.60156\\-80.41876\\-13\\18.55469\\-79.49698\\-13\\20.50781\\-78.31567\\-13\\22.46094\\-77.48494\\-13\\24.41406\\-76.50011\\-13\\28.32031\\-75.60456\\-13\\30.27344\\-74.72451\\-13\\32.22656\\-74.42683\\-13\\34.17969\\-74.22955\\-13\\36.13281\\-72.82507\\-13\\38.08594\\-72.72738\\-13\\41.99219\\-71.75673\\-13\\43.94531\\-71.7076\\-13\\55.66406\\-71.72133\\-13\\61.52344\\-71.79546\\-13\\65.42969\\-72.5815\\-13\\67.38281\\-72.4245\\-13\\69.33594\\-72.6904\\-13\\73.24219\\-72.83385\\-13\\75.19531\\-73.00072\\-13\\77.14844\\-74.22346\\-13\\79.10156\\-74.31066\\-13\\83.00781\\-74.64494\\-13\\84.96094\\-74.96642\\-13\\86.91406\\-75.69401\\-13\\90.82031\\-76.30994\\-13\\92.77344\\-76.67415\\-13\\94.72656\\-77.47543\\-13\\98.63281\\-78.60688\\-13\\100.5859\\-79.45211\\-13\\104.4922\\-80.53635\\-13\\106.4453\\-81.43563\\-13\\110.3516\\-82.66781\\-13\\112.3047\\-83.73911\\-13\\114.2578\\-84.54382\\-13\\116.2109\\-85.73527\\-13\\118.1641\\-86.5873\\-13\\120.1172\\-87.80054\\-13\\122.0703\\-88.79581\\-13\\124.0234\\-90.18346\\-13\\127.1217\\-92.83594\\-13\\129.8828\\-95.47343\\-13\\134.2036\\-100.6484\\-13\\136.6328\\-104.5547\\-13\\137.6374\\-106.5078\\-13\\138.7848\\-108.4609\\-13\\140.1098\\-110.4141\\-13\\140.9973\\-112.3672\\-13\\142.1795\\-114.3203\\-13\\142.8145\\-116.2734\\-13\\143.9141\\-118.2266\\-13\\144.6667\\-120.1797\\-13\\145.7316\\-122.1328\\-13\\147.5152\\-126.0391\\-13\\148.3109\\-127.9922\\-13\\148.8928\\-129.9453\\-13\\149.8443\\-131.8984\\-13\\151.051\\-135.8047\\-13\\151.9686\\-137.7578\\-13\\152.5248\\-139.7109\\-13\\153.3203\\-141.6803\\-13\\153.9844\\-143.6172\\-13\\154.8952\\-147.5234\\-13\\155.5657\\-149.4766\\-13\\155.9602\\-151.4297\\-13\\156.451\\-155.3359\\-13\\156.7948\\-157.2891\\-13\\157.3351\\-159.2422\\-13\\157.7402\\-161.1953\\-13\\158.0029\\-163.1484\\-13\\158.8499\\-170.9609\\-13\\159.4388\\-174.8672\\-13\\159.6327\\-176.8203\\-13\\159.8255\\-180.7266\\-13\\159.9459\\-186.5859\\-13\\159.9796\\-190.4922\\-13\\159.9381\\-196.3516\\-13\\159.8597\\-202.2109\\-13\\159.7016\\-206.1172\\-13\\159.3791\\-210.0234\\-13\\158.7656\\-213.9297\\-13\\158.0436\\-219.7891\\-13\\157.7402\\-221.7422\\-13\\156.5979\\-225.6484\\-13\\155.9053\\-229.5547\\-13\\154.5485\\-233.4609\\-13\\153.9615\\-235.4141\\-13\\152.9284\\-237.3672\\-13\\152.101\\-239.3203\\-13\\150.8992\\-241.2734\\-13\\150.046\\-243.2266\\-13\\148.8095\\-245.1797\\-13\\147.8167\\-247.1328\\-13\\146.3917\\-249.0859\\-13\\144.7707\\-251.0391\\-13\\141.8906\\-254.9453\\-13\\140.0681\\-256.8984\\-13\\138.109\\-258.8516\\-13\\135.7422\\-261.3681\\-13\\134.2969\\-262.7578\\-13\\129.8828\\-266.7893\\-13\\127.7513\\-268.6172\\-13\\125.9766\\-269.8643\\-13\\122.0703\\-273.1508\\-13\\120.1172\\-274.5765\\-13\\118.1641\\-275.7675\\-13\\116.2109\\-277.1463\\-13\\112.3047\\-279.5678\\-13\\110.3516\\-280.8873\\-13\\108.3984\\-281.7473\\-13\\106.4453\\-282.9337\\-13\\104.4922\\-283.6318\\-13\\102.5391\\-284.7977\\-13\\100.5859\\-285.6011\\-13\\98.63281\\-286.6836\\-13\\96.67969\\-287.3189\\-13\\92.77344\\-288.8558\\-13\\88.86719\\-289.7096\\-13\\86.91406\\-290.5157\\-13\\84.96094\\-290.9365\\-13\\81.05469\\-291.6091\\-13\\79.10156\\-292.1632\\-13\\77.14844\\-292.5574\\-13\\73.24219\\-292.9705\\-13\\69.33594\\-293.2386\\-13\\67.38281\\-293.2879\\-13\\63.47656\\-293.2838\\-13\\59.57031\\-293.1639\\-13\\55.66406\\-292.9671\\-13\\51.75781\\-292.7212\\-13\\50.32626\\-292.0547\\-13\\49.80469\\-291.6297\\-13\\47.85156\\-292.4416\\-13\\41.99219\\-292.4115\\-13\\34.17969\\-292.9356\\-13\\30.27344\\-293.3982\\-13\\28.32031\\-293.7318\\-13\\26.36719\\-294.1742\\-13\\22.46094\\-294.7493\\-13\\14.64844\\-295.4529\\-13\\10.74219\\-296.0006\\-13\\6.835938\\-296.4001\\-13\\2.929688\\-296.6022\\-13\\-0.9765625\\-296.71\\-13\\-8.789063\\-296.71\\-13\\-14.64844\\-296.511\\-13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "299"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "120"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-296.1473\\-11\\-24.41406\\-295.8456\\-11\\-28.32031\\-295.3965\\-11\\-30.27344\\-295.2456\\-11\\-40.03906\\-294.6609\\-11\\-43.94531\\-294.4992\\-11\\-49.80469\\-294.4153\\-11\\-55.66406\\-294.458\\-11\\-63.47656\\-294.6197\\-11\\-67.38281\\-294.7296\\-11\\-73.24219\\-294.7372\\-11\\-77.14844\\-294.6159\\-11\\-79.10156\\-294.5056\\-11\\-81.05469\\-294.2878\\-11\\-84.96094\\-293.4626\\-11\\-88.86719\\-292.7145\\-11\\-92.77344\\-291.2766\\-11\\-94.72656\\-290.7473\\-11\\-96.67969\\-289.805\\-11\\-100.5859\\-288.5155\\-11\\-102.5391\\-287.3781\\-11\\-104.4922\\-286.5163\\-11\\-104.9057\\-286.1953\\-11\\-108.1473\\-284.2422\\-11\\-110.3516\\-283.0465\\-11\\-112.3047\\-281.7533\\-11\\-114.2578\\-280.778\\-11\\-116.2109\\-279.3413\\-11\\-118.1641\\-277.7725\\-11\\-120.1172\\-276.6161\\-11\\-122.0703\\-275.2513\\-11\\-124.0234\\-273.682\\-11\\-125.9766\\-271.9831\\-11\\-129.8828\\-268.8474\\-11\\-131.8359\\-267.0066\\-11\\-134.1368\\-264.7109\\-11\\-136.0021\\-262.7578\\-11\\-137.6953\\-260.7121\\-11\\-139.1341\\-258.8516\\-11\\-140.8165\\-256.8984\\-11\\-142.3689\\-254.9453\\-11\\-144.7206\\-251.0391\\-11\\-146.1848\\-249.0859\\-11\\-147.4609\\-246.9375\\-11\\-148.3948\\-245.1797\\-11\\-150.26\\-241.2734\\-11\\-150.9752\\-239.3203\\-11\\-152.0759\\-237.3672\\-11\\-152.7926\\-235.4141\\-11\\-153.7816\\-233.4609\\-11\\-154.9177\\-229.5547\\-11\\-155.69\\-227.6016\\-11\\-156.1302\\-225.6484\\-11\\-156.4605\\-223.6953\\-11\\-156.9465\\-221.7422\\-11\\-157.7348\\-219.7891\\-11\\-158.4806\\-215.8828\\-11\\-158.968\\-213.9297\\-11\\-159.5861\\-211.9766\\-11\\-159.9459\\-210.0234\\-11\\-160.4724\\-206.1172\\-11\\-161.1405\\-202.2109\\-11\\-161.6399\\-198.3047\\-11\\-161.8726\\-194.3984\\-11\\-162.0509\\-186.5859\\-11\\-162.0502\\-178.7734\\-11\\-161.9623\\-174.8672\\-11\\-161.7818\\-170.9609\\-11\\-161.377\\-167.0547\\-11\\-160.593\\-163.1484\\-11\\-159.688\\-157.2891\\-11\\-158.4977\\-153.3828\\-11\\-157.5936\\-149.4766\\-11\\-156.7513\\-147.5234\\-11\\-155.862\\-143.6172\\-11\\-155.0078\\-141.6641\\-11\\-153.7122\\-137.7578\\-11\\-152.6673\\-135.8047\\-11\\-151.9897\\-133.8516\\-11\\-150.9752\\-131.8984\\-11\\-149.4385\\-127.9922\\-11\\-148.4938\\-126.0391\\-11\\-147.731\\-124.0859\\-11\\-146.628\\-122.1328\\-11\\-145.6586\\-120.1797\\-11\\-144.5038\\-118.2266\\-11\\-141.6098\\-112.3672\\-11\\-140.4832\\-110.4141\\-11\\-139.1438\\-108.4609\\-11\\-138.0846\\-106.5078\\-11\\-136.7188\\-104.5547\\-11\\-135.7422\\-102.9942\\-11\\-134.0736\\-100.6484\\-11\\-132.4219\\-98.69531\\-11\\-129.8828\\-95.95669\\-11\\-127.9297\\-94.10012\\-11\\-125.9766\\-92.44663\\-11\\-123.9355\\-90.88281\\-11\\-122.0703\\-89.60526\\-11\\-120.1172\\-88.16336\\-11\\-118.1641\\-87.39509\\-11\\-112.3047\\-83.7507\\-11\\-110.3516\\-83.33527\\-11\\-108.3984\\-82.36196\\-11\\-106.4453\\-81.83641\\-11\\-104.4922\\-80.97999\\-11\\-102.5391\\-80.48529\\-11\\-100.5859\\-79.8555\\-11\\-96.67969\\-78.42637\\-11\\-94.72656\\-77.7984\\-11\\-92.77344\\-77.36428\\-11\\-90.82031\\-76.80972\\-11\\-88.86719\\-76.3555\\-11\\-86.91406\\-76.09391\\-11\\-83.00781\\-75.68805\\-11\\-81.05469\\-74.67035\\-11\\-79.10156\\-74.47523\\-11\\-69.33594\\-74.09224\\-11\\-67.38281\\-73.16925\\-11\\-65.42969\\-72.92766\\-11\\-57.61719\\-72.85171\\-11\\-53.71094\\-72.90796\\-11\\-51.75781\\-72.87931\\-11\\-49.80469\\-73.15608\\-11\\-47.85156\\-74.19405\\-11\\-41.99219\\-74.35314\\-11\\-38.08594\\-74.59138\\-11\\-36.13281\\-74.78761\\-11\\-34.17969\\-75.19837\\-11\\-32.22656\\-75.80244\\-11\\-28.32031\\-76.36496\\-11\\-26.36719\\-76.82967\\-11\\-24.41406\\-77.6358\\-11\\-22.46094\\-78.25524\\-11\\-20.50781\\-79.06932\\-11\\-18.55469\\-80.01041\\-11\\-16.60156\\-80.66281\\-11\\-14.64844\\-81.7487\\-11\\-12.69531\\-82.35109\\-11\\-8.889457\\-85.02344\\-11\\-2.929688\\-89.9422\\-11\\-0.9765625\\-90.98199\\-11\\0.9765625\\-91.31081\\-11\\2.929688\\-90.73421\\-11\\4.882813\\-89.72092\\-11\\8.789063\\-86.32349\\-11\\10.74219\\-84.46629\\-11\\12.69531\\-82.75751\\-11\\15.21721\\-81.11719\\-11\\18.55469\\-79.38705\\-11\\20.50781\\-78.27682\\-11\\24.41406\\-76.45426\\-11\\26.36719\\-76.02339\\-11\\30.27344\\-74.69099\\-11\\32.22656\\-74.40257\\-11\\34.17969\\-74.21806\\-11\\36.13281\\-72.81641\\-11\\38.08594\\-72.71983\\-11\\40.03906\\-72.32813\\-11\\41.99219\\-71.75246\\-11\\49.80469\\-71.71777\\-11\\53.71094\\-71.67383\\-11\\55.66406\\-71.7441\\-11\\59.57031\\-71.756\\-11\\63.47656\\-71.91095\\-11\\65.42969\\-72.20313\\-11\\67.38281\\-72.61317\\-11\\73.24219\\-72.82507\\-11\\75.19531\\-73.00072\\-11\\77.14844\\-74.23502\\-11\\79.10156\\-74.3286\\-11\\83.00781\\-74.66368\\-11\\84.96094\\-75.00762\\-11\\86.91406\\-75.72375\\-11\\90.82031\\-76.31625\\-11\\92.77344\\-76.7607\\-11\\94.72656\\-77.56065\\-11\\98.63281\\-78.67886\\-11\\100.5859\\-79.50105\\-11\\104.4922\\-80.60911\\-11\\106.4453\\-81.52294\\-11\\110.3516\\-82.73569\\-11\\112.3047\\-83.79987\\-11\\114.2578\\-84.60749\\-11\\116.2109\\-85.79894\\-11\\118.1641\\-86.66267\\-11\\120.1172\\-87.83181\\-11\\122.0703\\-88.889\\-11\\124.0234\\-90.28639\\-11\\124.5968\\-90.88281\\-11\\126.9393\\-92.83594\\-11\\129.014\\-94.78906\\-11\\129.8828\\-95.70506\\-11\\132.3785\\-98.69531\\-11\\133.9063\\-100.6484\\-11\\136.4425\\-104.5547\\-11\\137.289\\-106.5078\\-11\\137.6953\\-107.0232\\-11\\139.7839\\-110.4141\\-11\\140.7429\\-112.3672\\-11\\141.9126\\-114.3203\\-11\\142.6331\\-116.2734\\-11\\143.5785\\-118.2266\\-11\\145.2933\\-122.1328\\-11\\146.3456\\-124.0859\\-11\\147.1286\\-126.0391\\-11\\148.1099\\-127.9922\\-11\\148.6739\\-129.9453\\-11\\149.5007\\-131.8984\\-11\\150.22\\-133.8516\\-11\\150.7303\\-135.8047\\-11\\151.6641\\-137.7578\\-11\\152.9009\\-141.6641\\-11\\153.7246\\-143.6172\\-11\\154.6123\\-147.5234\\-11\\155.735\\-151.4297\\-11\\156.0752\\-153.3828\\-11\\156.5265\\-157.2891\\-11\\156.8646\\-159.2422\\-11\\157.3882\\-161.1953\\-11\\157.7728\\-163.1484\\-11\\157.997\\-165.1016\\-11\\158.5449\\-170.9609\\-11\\158.9788\\-174.8672\\-11\\159.2605\\-176.8203\\-11\\159.4272\\-178.7734\\-11\\159.6505\\-182.6797\\-11\\159.7678\\-190.4922\\-11\\159.7338\\-196.3516\\-11\\159.6327\\-202.2109\\-11\\159.5365\\-204.1641\\-11\\159.1873\\-208.0703\\-11\\158.6914\\-211.9766\\-11\\158.295\\-215.8828\\-11\\157.8442\\-219.7891\\-11\\157.401\\-221.7422\\-11\\156.7415\\-223.6953\\-11\\156.0872\\-227.6016\\-11\\155.6085\\-229.5547\\-11\\154.8253\\-231.5078\\-11\\153.6193\\-235.4141\\-11\\152.5678\\-237.3672\\-11\\151.7334\\-239.3203\\-11\\150.5584\\-241.2734\\-11\\149.662\\-243.2266\\-11\\147.4609\\-246.8964\\-11\\146.0125\\-249.0859\\-11\\142.8158\\-252.9922\\-11\\141.6016\\-254.5972\\-11\\137.4333\\-258.8516\\-11\\135.7508\\-260.8047\\-11\\133.6559\\-262.7578\\-11\\131.8359\\-264.2744\\-11\\129.3645\\-266.6641\\-11\\127.1052\\-268.6172\\-11\\122.0703\\-272.6061\\-11\\118.1641\\-275.4276\\-11\\116.2109\\-276.7139\\-11\\114.2578\\-277.7677\\-11\\112.3047\\-279.1813\\-11\\110.3516\\-280.4068\\-11\\106.4453\\-282.4798\\-11\\104.4922\\-283.3073\\-11\\102.5391\\-284.3088\\-11\\98.56771\\-286.1953\\-11\\96.67969\\-287.0091\\-11\\94.72656\\-287.6187\\-11\\92.77344\\-288.455\\-11\\90.82031\\-288.9915\\-11\\88.86719\\-289.3309\\-11\\86.91406\\-289.8359\\-11\\84.96094\\-290.5749\\-11\\83.00781\\-290.9336\\-11\\79.10156\\-291.5398\\-11\\75.19531\\-292.4317\\-11\\73.24219\\-292.679\\-11\\69.33594\\-292.9311\\-11\\63.47656\\-293.0061\\-11\\59.57031\\-292.9612\\-11\\55.66406\\-292.8009\\-11\\49.80469\\-292.4986\\-11\\47.85156\\-292.4416\\-11\\43.94531\\-292.4611\\-11\\41.99219\\-292.5343\\-11\\38.08594\\-292.8153\\-11\\34.17969\\-293.179\\-11\\32.22656\\-293.4506\\-11\\28.32031\\-294.2623\\-11\\26.36719\\-294.5703\\-11\\20.50781\\-295.1636\\-11\\16.60156\\-295.6052\\-11\\12.69531\\-296.263\\-11\\10.74219\\-296.4897\\-11\\6.835938\\-296.7455\\-11\\-0.9765625\\-296.9843\\-11\\-6.835938\\-296.9897\\-11\\-10.74219\\-296.9219\\-11\\-14.64844\\-296.7774\\-11\\-18.55469\\-296.5493\\-11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "300"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "121"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-24.41406\\-296.2511\\-9\\-28.32031\\-295.6216\\-9\\-30.27344\\-295.3876\\-9\\-36.13281\\-294.9784\\-9\\-41.99219\\-294.6489\\-9\\-45.89844\\-294.5176\\-9\\-53.71094\\-294.3356\\-9\\-63.47656\\-294.4207\\-9\\-65.42969\\-294.4898\\-9\\-69.33594\\-294.5182\\-9\\-73.24219\\-294.464\\-9\\-77.14844\\-294.2779\\-9\\-79.10156\\-294.0754\\-9\\-86.91406\\-292.7897\\-9\\-88.86719\\-292.3138\\-9\\-90.82031\\-291.4991\\-9\\-92.77344\\-291.0034\\-9\\-94.72656\\-290.3872\\-9\\-96.67969\\-289.4443\\-9\\-98.63281\\-288.9087\\-9\\-102.5391\\-287.0963\\-9\\-106.4453\\-284.9539\\-9\\-108.3984\\-283.6537\\-9\\-110.3516\\-282.7603\\-9\\-112.3047\\-281.494\\-9\\-114.2578\\-280.3744\\-9\\-116.2109\\-279.0443\\-9\\-118.1641\\-277.5021\\-9\\-120.1172\\-276.1411\\-9\\-122.0703\\-274.9858\\-9\\-124.0234\\-273.414\\-9\\-125.9766\\-271.6771\\-9\\-129.7291\\-268.6172\\-9\\-133.7158\\-264.7109\\-9\\-135.7422\\-262.6055\\-9\\-138.8425\\-258.8516\\-9\\-140.5628\\-256.8984\\-9\\-142.1311\\-254.9453\\-9\\-143.1626\\-252.9922\\-9\\-145.905\\-249.0859\\-9\\-147.0048\\-247.1328\\-9\\-148.2088\\-245.1797\\-9\\-149.057\\-243.2266\\-9\\-150.1194\\-241.2734\\-9\\-150.7346\\-239.3203\\-9\\-151.8585\\-237.3672\\-9\\-152.5534\\-235.4141\\-9\\-153.5335\\-233.4609\\-9\\-154.1534\\-231.5078\\-9\\-154.671\\-229.5547\\-9\\-155.4312\\-227.6016\\-9\\-155.9842\\-225.6484\\-9\\-156.7383\\-221.7422\\-9\\-157.5414\\-219.7891\\-9\\-157.9949\\-217.8359\\-9\\-158.7369\\-213.9297\\-9\\-159.3791\\-211.9766\\-9\\-159.8113\\-210.0234\\-9\\-160.8921\\-202.2109\\-9\\-161.229\\-200.2578\\-9\\-161.6491\\-196.3516\\-9\\-161.7454\\-194.3984\\-9\\-161.9152\\-186.5859\\-9\\-161.9129\\-180.7266\\-9\\-161.7899\\-174.8672\\-9\\-161.5326\\-170.9609\\-9\\-161.311\\-169.0078\\-9\\-160.3119\\-163.1484\\-9\\-159.7744\\-159.2422\\-9\\-159.3283\\-157.2891\\-9\\-158.6766\\-155.3359\\-9\\-157.8578\\-151.4297\\-9\\-156.506\\-147.5234\\-9\\-156.1166\\-145.5703\\-9\\-155.5942\\-143.6172\\-9\\-154.7108\\-141.6641\\-9\\-154.1255\\-139.7109\\-9\\-153.3879\\-137.7578\\-9\\-152.4251\\-135.8047\\-9\\-151.6927\\-133.8516\\-9\\-150.6854\\-131.8984\\-9\\-150.0878\\-129.9453\\-9\\-149.1107\\-127.9922\\-9\\-148.3436\\-126.0391\\-9\\-147.4688\\-124.0859\\-9\\-145.3605\\-120.1797\\-9\\-144.3666\\-118.2266\\-9\\-143.2292\\-116.2734\\-9\\-142.4537\\-114.3203\\-9\\-140.2902\\-110.4141\\-9\\-138.8922\\-108.4609\\-9\\-137.8697\\-106.5078\\-9\\-136.5838\\-104.5547\\-9\\-135.1335\\-102.6016\\-9\\-133.7976\\-100.6484\\-9\\-132.2417\\-98.69531\\-9\\-129.8828\\-96.15327\\-9\\-127.9297\\-94.28993\\-9\\-120.9001\\-88.92969\\-9\\-120.1172\\-88.24326\\-9\\-118.1641\\-87.55704\\-9\\-116.2109\\-86.43884\\-9\\-114.0839\\-85.02344\\-9\\-112.3047\\-84.01659\\-9\\-110.3516\\-83.53365\\-9\\-108.3984\\-82.50916\\-9\\-104.4922\\-81.31567\\-9\\-102.5391\\-80.48529\\-9\\-100.5859\\-80.19056\\-9\\-98.37891\\-79.16406\\-9\\-96.67969\\-78.66721\\-9\\-94.72656\\-77.97049\\-9\\-90.82031\\-77.06233\\-9\\-88.86719\\-76.47662\\-9\\-86.91406\\-76.13265\\-9\\-83.00781\\-75.70483\\-9\\-81.05469\\-74.69648\\-9\\-79.10156\\-74.46436\\-9\\-75.19531\\-74.32397\\-9\\-71.28906\\-73.92997\\-9\\-69.33594\\-73.00776\\-9\\-67.38281\\-72.86079\\-9\\-61.52344\\-72.79937\\-9\\-57.61719\\-72.81641\\-9\\-53.71094\\-72.89829\\-9\\-51.75781\\-72.84272\\-9\\-49.80469\\-72.9377\\-9\\-47.85156\\-73.96688\\-9\\-43.94531\\-74.24056\\-9\\-38.08594\\-74.55288\\-9\\-36.13281\\-74.74123\\-9\\-34.17969\\-75.15022\\-9\\-32.22656\\-75.77146\\-9\\-28.32031\\-76.32979\\-9\\-26.36719\\-76.75478\\-9\\-24.41406\\-77.52748\\-9\\-20.50781\\-78.91658\\-9\\-18.55469\\-79.92964\\-9\\-16.60156\\-80.53253\\-9\\-14.64844\\-81.48886\\-9\\-12.69531\\-82.21745\\-9\\-8.511413\\-85.02344\\-9\\-6.835938\\-86.33804\\-9\\-3.882998\\-88.92969\\-9\\-2.929688\\-89.6666\\-9\\-0.9765625\\-90.5638\\-9\\0.9765625\\-90.8601\\-9\\2.929688\\-90.35697\\-9\\4.882813\\-89.39642\\-9\\6.835938\\-87.71088\\-9\\9.83538\\-85.02344\\-9\\12.26049\\-83.07031\\-9\\12.69531\\-82.62576\\-9\\15.01465\\-81.11719\\-9\\20.50781\\-78.21089\\-9\\24.41406\\-76.42586\\-9\\26.36719\\-76.00214\\-9\\30.27344\\-74.64494\\-9\\34.17969\\-74.21806\\-9\\36.13281\\-72.81641\\-9\\40.03906\\-72.64856\\-9\\41.99219\\-71.8046\\-9\\47.85156\\-71.70931\\-9\\49.80469\\-71.75533\\-9\\55.66406\\-71.71289\\-9\\61.52344\\-71.79999\\-9\\63.47656\\-71.98767\\-9\\65.42969\\-72.50294\\-9\\67.38281\\-72.66221\\-9\\73.24219\\-72.82507\\-9\\75.19531\\-73.00072\\-9\\77.14844\\-74.25786\\-9\\81.05469\\-74.5032\\-9\\83.00781\\-74.71066\\-9\\84.96094\\-75.10189\\-9\\86.91406\\-75.78414\\-9\\90.82031\\-76.35133\\-9\\92.77344\\-76.80882\\-9\\94.72656\\-77.6414\\-9\\98.63281\\-78.76714\\-9\\100.5859\\-79.53967\\-9\\104.4922\\-80.68695\\-9\\106.4453\\-81.61543\\-9\\108.3984\\-82.15294\\-9\\110.3516\\-82.83508\\-9\\112.3047\\-83.87289\\-9\\114.2578\\-84.67692\\-9\\116.2109\\-85.85806\\-9\\118.1641\\-86.72524\\-9\\121.9161\\-88.92969\\-9\\124.0234\\-90.42941\\-9\\124.4523\\-90.88281\\-9\\126.7241\\-92.83594\\-9\\128.7618\\-94.78906\\-9\\129.8828\\-95.99497\\-9\\132.1303\\-98.69531\\-9\\133.7891\\-100.9709\\-9\\136.2062\\-104.5547\\-9\\137.0465\\-106.5078\\-9\\138.3369\\-108.4609\\-9\\139.2963\\-110.4141\\-9\\140.5268\\-112.3672\\-9\\142.4676\\-116.2734\\-9\\143.1796\\-118.2266\\-9\\144.2506\\-120.1797\\-9\\144.9597\\-122.1328\\-9\\146.0859\\-124.0859\\-9\\146.8119\\-126.0391\\-9\\147.8396\\-127.9922\\-9\\149.1277\\-131.8984\\-9\\150.0165\\-133.8516\\-9\\150.486\\-135.8047\\-9\\151.1957\\-137.7578\\-9\\152.0348\\-139.7109\\-9\\152.5662\\-141.6641\\-9\\153.9465\\-145.5703\\-9\\154.7619\\-149.4766\\-9\\155.3734\\-151.4297\\-9\\155.8581\\-153.3828\\-9\\156.1369\\-155.3359\\-9\\156.5615\\-159.2422\\-9\\156.901\\-161.1953\\-9\\157.4136\\-163.1484\\-9\\157.7648\\-165.1016\\-9\\158.1454\\-169.0078\\-9\\158.4433\\-172.9141\\-9\\158.7954\\-176.8203\\-9\\159.2605\\-182.6797\\-9\\159.3914\\-186.5859\\-9\\159.4388\\-190.4922\\-9\\159.4272\\-194.3984\\-9\\159.4837\\-196.3516\\-9\\159.3151\\-202.2109\\-9\\159.172\\-204.1641\\-9\\158.1122\\-215.8828\\-9\\157.6036\\-219.7891\\-9\\156.9734\\-221.7422\\-9\\156.4794\\-223.6953\\-9\\155.8268\\-227.6016\\-9\\154.5053\\-231.5078\\-9\\154.0033\\-233.4609\\-9\\152.2433\\-237.3672\\-9\\151.1659\\-239.3203\\-9\\150.2722\\-241.2734\\-9\\149.134\\-243.2266\\-9\\148.1855\\-245.1797\\-9\\145.5078\\-249.0226\\-9\\144.0499\\-251.0391\\-9\\142.4888\\-252.9922\\-9\\140.8001\\-254.9453\\-9\\138.7708\\-256.8984\\-9\\135.7422\\-260.09\\-9\\132.9655\\-262.7578\\-9\\131.8359\\-263.7737\\-9\\127.9297\\-267.5169\\-9\\125.9766\\-269.1233\\-9\\122.0703\\-271.9401\\-9\\120.1172\\-273.5571\\-9\\118.1641\\-275.0394\\-9\\116.2109\\-276.1193\\-9\\112.3047\\-278.7174\\-9\\110.3516\\-279.8051\\-9\\108.3984\\-281.0714\\-9\\106.4453\\-281.8943\\-9\\104.4922\\-282.9964\\-9\\102.5391\\-283.7018\\-9\\100.5859\\-284.815\\-9\\98.63281\\-285.562\\-9\\96.67969\\-286.6102\\-9\\92.77344\\-287.8441\\-9\\90.82031\\-288.6635\\-9\\88.86719\\-289.0833\\-9\\86.91406\\-289.3886\\-9\\84.96094\\-289.9152\\-9\\83.00781\\-290.5416\\-9\\81.05469\\-290.8938\\-9\\77.14844\\-291.4358\\-9\\73.24219\\-292.2417\\-9\\71.28906\\-292.4801\\-9\\69.33594\\-292.6009\\-9\\65.42969\\-292.711\\-9\\59.57031\\-292.7248\\-9\\53.71094\\-292.5167\\-9\\47.85156\\-292.3695\\-9\\43.94531\\-292.5077\\-9\\38.08594\\-292.9535\\-9\\34.17969\\-293.4242\\-9\\32.22656\\-293.7868\\-9\\30.27344\\-294.2502\\-9\\28.32031\\-294.5754\\-9\\20.50781\\-295.3945\\-9\\16.60156\\-296.1048\\-9\\14.64844\\-296.4102\\-9\\10.74219\\-296.7972\\-9\\6.835938\\-297.0058\\-9\\0.9765625\\-297.2459\\-9\\-2.929688\\-297.3246\\-9\\-10.74219\\-297.1942\\-9\\-14.64844\\-296.9477\\-9\\-20.50781\\-296.6519\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "286"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "122"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-26.36719\\-296.2511\\-7\\-30.27344\\-295.5636\\-7\\-34.17969\\-295.198\\-7\\-40.03906\\-294.802\\-7\\-45.89844\\-294.5299\\-7\\-47.85156\\-294.4868\\-7\\-53.71094\\-294.2256\\-7\\-55.66406\\-294.1975\\-7\\-63.47656\\-294.186\\-7\\-67.38281\\-294.213\\-7\\-73.24219\\-294.0608\\-7\\-79.10156\\-293.5605\\-7\\-84.96094\\-292.8142\\-7\\-86.91406\\-292.424\\-7\\-88.86719\\-291.6909\\-7\\-92.77344\\-290.6987\\-7\\-94.72656\\-289.8072\\-7\\-98.63281\\-288.6164\\-7\\-100.5859\\-287.584\\-7\\-102.5391\\-286.8042\\-7\\-104.4922\\-285.5623\\-7\\-106.4453\\-284.6084\\-7\\-108.3984\\-283.3735\\-7\\-110.3516\\-282.3623\\-7\\-112.3047\\-281.2332\\-7\\-116.2109\\-278.6568\\-7\\-120.1172\\-275.7894\\-7\\-122.0703\\-274.6406\\-7\\-124.0234\\-273.1147\\-7\\-124.627\\-272.5234\\-7\\-127.0119\\-270.5703\\-7\\-129.8828\\-268.1028\\-7\\-135.2278\\-262.7578\\-7\\-137.6953\\-259.9279\\-7\\-139.6484\\-257.5606\\-7\\-140.293\\-256.8984\\-7\\-141.8108\\-254.9453\\-7\\-142.8805\\-252.9922\\-7\\-144.2979\\-251.0391\\-7\\-147.4609\\-245.9628\\-7\\-148.007\\-245.1797\\-7\\-148.8188\\-243.2266\\-7\\-149.9256\\-241.2734\\-7\\-150.5572\\-239.3203\\-7\\-151.5819\\-237.3672\\-7\\-153.9808\\-231.5078\\-7\\-154.4792\\-229.5547\\-7\\-155.7947\\-225.6484\\-7\\-156.5574\\-221.7422\\-7\\-157.8179\\-217.8359\\-7\\-158.5161\\-213.9297\\-7\\-159.03\\-211.9766\\-7\\-159.6416\\-210.0234\\-7\\-159.9381\\-208.0703\\-7\\-160.6294\\-202.2109\\-7\\-161.2004\\-198.3047\\-7\\-161.556\\-194.3984\\-7\\-161.556\\-192.4453\\-7\\-161.7286\\-186.5859\\-7\\-161.6989\\-178.7734\\-7\\-161.5532\\-174.8672\\-7\\-161.4148\\-172.9141\\-7\\-160.6028\\-167.0547\\-7\\-159.8498\\-161.1953\\-7\\-159.4837\\-159.2422\\-7\\-158.8477\\-157.2891\\-7\\-157.5753\\-151.4297\\-7\\-156.7513\\-149.4766\\-7\\-155.9309\\-145.5703\\-7\\-154.4717\\-141.6641\\-7\\-153.9063\\-139.7109\\-7\\-152.9574\\-137.7578\\-7\\-152.2005\\-135.8047\\-7\\-150.4725\\-131.8984\\-7\\-149.882\\-129.9453\\-7\\-148.8589\\-127.9922\\-7\\-148.1648\\-126.0391\\-7\\-147.161\\-124.0859\\-7\\-146.2693\\-122.1328\\-7\\-145.0534\\-120.1797\\-7\\-144.2238\\-118.2266\\-7\\-143.0361\\-116.2734\\-7\\-142.2852\\-114.3203\\-7\\-141.0499\\-112.3672\\-7\\-140.0764\\-110.4141\\-7\\-138.7121\\-108.4609\\-7\\-136.4397\\-104.5547\\-7\\-133.7891\\-100.9861\\-7\\-131.955\\-98.69531\\-7\\-129.8828\\-96.40853\\-7\\-127.9297\\-94.54294\\-7\\-125.9766\\-93.17926\\-7\\-124.0234\\-91.68066\\-7\\-122.0703\\-90.01547\\-7\\-120.1172\\-88.51891\\-7\\-118.1641\\-87.71902\\-7\\-113.732\\-85.02344\\-7\\-110.3516\\-83.68238\\-7\\-108.3984\\-82.69054\\-7\\-104.4922\\-81.36133\\-7\\-102.5391\\-80.54313\\-7\\-100.5859\\-80.23094\\-7\\-98.07751\\-79.16406\\-7\\-94.72656\\-78.06361\\-7\\-92.77344\\-77.69204\\-7\\-90.82031\\-77.15875\\-7\\-88.86719\\-76.5\\-7\\-86.91406\\-76.17897\\-7\\-83.00781\\-75.74268\\-7\\-81.05469\\-74.87533\\-7\\-79.10156\\-74.52539\\-7\\-75.19531\\-74.33038\\-7\\-73.24219\\-73.52867\\-7\\-71.28906\\-72.41624\\-7\\-69.33594\\-72.73059\\-7\\-67.38281\\-72.76647\\-7\\-59.57031\\-72.77455\\-7\\-55.66406\\-72.86079\\-7\\-51.75781\\-72.82507\\-7\\-47.85156\\-72.91775\\-7\\-43.94531\\-74.21731\\-7\\-41.99219\\-74.28713\\-7\\-38.08594\\-74.55288\\-7\\-36.13281\\-74.73466\\-7\\-34.17969\\-75.15202\\-7\\-32.22656\\-75.7558\\-7\\-28.32031\\-76.3125\\-7\\-26.36719\\-76.69793\\-7\\-20.50781\\-78.82797\\-7\\-18.55469\\-79.76953\\-7\\-16.60156\\-80.41087\\-7\\-14.64844\\-81.32645\\-7\\-12.69531\\-82.11962\\-7\\-11.11779\\-83.07031\\-7\\-8.176492\\-85.02344\\-7\\-5.8922\\-86.97656\\-7\\-2.929688\\-89.39324\\-7\\-0.9765625\\-90.2489\\-7\\0.9765625\\-90.45481\\-7\\2.929688\\-90.10265\\-7\\4.882813\\-89.10938\\-7\\6.835938\\-87.51563\\-7\\9.640625\\-85.02344\\-7\\12.69531\\-82.48575\\-7\\14.86171\\-81.11719\\-7\\20.50781\\-78.17006\\-7\\24.41406\\-76.40854\\-7\\26.36719\\-75.98274\\-7\\28.32031\\-75.23142\\-7\\30.27344\\-74.62238\\-7\\34.17969\\-74.22955\\-7\\36.13281\\-72.83385\\-7\\40.03906\\-72.65535\\-7\\41.99219\\-72.00559\\-7\\43.94531\\-71.7442\\-7\\45.89844\\-71.72027\\-7\\49.80469\\-71.77412\\-7\\55.66406\\-71.70393\\-7\\61.52344\\-71.83008\\-7\\63.47656\\-72.47028\\-7\\65.42969\\-72.64856\\-7\\69.33594\\-72.71235\\-7\\73.24219\\-72.84272\\-7\\75.19531\\-73.15608\\-7\\77.14844\\-74.2636\\-7\\81.05469\\-74.51588\\-7\\83.00781\\-74.74494\\-7\\84.96094\\-75.35938\\-7\\86.91406\\-75.86117\\-7\\90.82031\\-76.39515\\-7\\92.77344\\-76.89657\\-7\\94.72656\\-77.69312\\-7\\96.67969\\-78.32184\\-7\\98.63281\\-78.80724\\-7\\100.5859\\-79.57774\\-7\\104.4922\\-80.75629\\-7\\106.4453\\-81.66118\\-7\\108.3984\\-82.21212\\-7\\110.3516\\-82.94358\\-7\\112.3047\\-83.94263\\-7\\114.2578\\-84.76435\\-7\\116.2109\\-85.8972\\-7\\118.1641\\-86.81881\\-7\\121.7415\\-88.92969\\-7\\124.0234\\-90.57717\\-7\\126.5625\\-92.83594\\-7\\128.6069\\-94.78906\\-7\\130.3573\\-96.74219\\-7\\133.2031\\-100.6484\\-7\\134.6928\\-102.6016\\-7\\135.8895\\-104.5547\\-7\\136.8502\\-106.5078\\-7\\138.0521\\-108.4609\\-7\\138.9574\\-110.4141\\-7\\140.2937\\-112.3672\\-7\\141.1727\\-114.3203\\-7\\142.2674\\-116.2734\\-7\\142.9228\\-118.2266\\-7\\143.9779\\-120.1797\\-7\\144.6959\\-122.1328\\-7\\145.7705\\-124.0859\\-7\\146.5506\\-126.0391\\-7\\147.4687\\-127.9922\\-7\\148.2648\\-129.9453\\-7\\148.8268\\-131.8984\\-7\\149.7372\\-133.8516\\-7\\150.7924\\-137.7578\\-7\\151.7286\\-139.7109\\-7\\152.8568\\-143.6172\\-7\\153.6501\\-145.5703\\-7\\154.1158\\-147.5234\\-7\\154.9432\\-151.4297\\-7\\155.5411\\-153.3828\\-7\\155.935\\-155.3359\\-7\\156.5936\\-161.1953\\-7\\156.9127\\-163.1484\\-7\\157.4136\\-165.1016\\-7\\157.7234\\-167.0547\\-7\\158.0835\\-170.9609\\-7\\158.3534\\-174.8672\\-7\\158.7093\\-180.7266\\-7\\158.9073\\-186.5859\\-7\\158.9152\\-192.4453\\-7\\159.0558\\-196.3516\\-7\\158.8607\\-202.2109\\-7\\158.6709\\-206.1172\\-7\\158.0919\\-213.9297\\-7\\157.633\\-217.8359\\-7\\156.6147\\-221.7422\\-7\\155.9966\\-225.6484\\-7\\155.5011\\-227.6016\\-7\\154.7591\\-229.5547\\-7\\153.6841\\-233.4609\\-7\\152.6912\\-235.4141\\-7\\151.9104\\-237.3672\\-7\\150.7265\\-239.3203\\-7\\149.9581\\-241.2734\\-7\\148.7564\\-243.2266\\-7\\147.796\\-245.1797\\-7\\145.5078\\-248.3906\\-7\\144.9084\\-249.0859\\-7\\142.0934\\-252.9922\\-7\\140.3876\\-254.9453\\-7\\138.3867\\-256.8984\\-7\\134.6331\\-260.8047\\-7\\127.9297\\-267.0446\\-7\\124.0234\\-269.9731\\-7\\120.1172\\-273.1411\\-7\\118.1641\\-274.4849\\-7\\114.2578\\-277.0132\\-7\\112.3047\\-278.062\\-7\\108.3984\\-280.6521\\-7\\106.4453\\-281.5213\\-7\\104.4922\\-282.5901\\-7\\102.5391\\-283.3549\\-7\\100.5859\\-284.2798\\-7\\94.72656\\-286.8823\\-7\\92.77344\\-287.4086\\-7\\90.79996\\-288.1484\\-7\\88.86719\\-288.7628\\-7\\84.96094\\-289.4363\\-7\\83.00781\\-289.9003\\-7\\81.05469\\-290.5033\\-7\\79.10156\\-290.8634\\-7\\69.33594\\-292.0923\\-7\\67.38281\\-292.2417\\-7\\63.47656\\-292.3908\\-7\\59.57031\\-292.4217\\-7\\53.71094\\-292.2785\\-7\\47.85156\\-292.2904\\-7\\43.94531\\-292.5515\\-7\\38.08594\\-293.0913\\-7\\36.13281\\-293.3474\\-7\\30.27344\\-294.5182\\-7\\28.32031\\-294.7713\\-7\\24.41406\\-295.1686\\-7\\20.50781\\-295.7186\\-7\\18.55469\\-296.1607\\-7\\16.60156\\-296.4897\\-7\\10.74219\\-297.0442\\-7\\0.9765625\\-297.6281\\-7\\-2.929688\\-297.7439\\-7\\-10.74219\\-297.4965\\-7\\-14.64844\\-297.1253\\-7\\-20.50781\\-296.8167\\-7\\-24.41406\\-296.5021\\-7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "288"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "123"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-10.74219\\-297.9061\\-5\\-14.64844\\-297.3365\\-5\\-24.41406\\-296.6737\\-5\\-26.36719\\-296.4805\\-5\\-28.32031\\-296.1869\\-5\\-30.27344\\-295.776\\-5\\-34.17969\\-295.2872\\-5\\-40.03906\\-294.866\\-5\\-47.85156\\-294.4677\\-5\\-49.80469\\-294.3997\\-5\\-53.71094\\-294.118\\-5\\-57.61719\\-293.9544\\-5\\-61.52344\\-293.9102\\-5\\-67.38281\\-293.79\\-5\\-73.24219\\-293.6057\\-5\\-77.14844\\-293.3511\\-5\\-81.05469\\-293.0061\\-5\\-84.96094\\-292.4732\\-5\\-86.91406\\-291.8002\\-5\\-88.86719\\-291.287\\-5\\-90.82031\\-290.8879\\-5\\-92.77344\\-290.2655\\-5\\-94.72656\\-289.4161\\-5\\-96.67969\\-288.953\\-5\\-98.63281\\-288.1726\\-5\\-102.5391\\-286.4223\\-5\\-106.2207\\-284.2422\\-5\\-108.3984\\-283.1149\\-5\\-110.3516\\-281.9293\\-5\\-112.3047\\-280.9423\\-5\\-115.9307\\-278.3828\\-5\\-118.1641\\-276.9678\\-5\\-121.6996\\-274.4766\\-5\\-124.0234\\-272.731\\-5\\-128.9288\\-268.6172\\-5\\-129.8828\\-267.7559\\-5\\-135.7422\\-261.8188\\-5\\-139.6484\\-257.2192\\-5\\-139.9764\\-256.8984\\-5\\-141.6016\\-254.6893\\-5\\-144.0296\\-251.0391\\-5\\-145.1355\\-249.0859\\-5\\-145.5078\\-248.6319\\-5\\-147.749\\-245.1797\\-5\\-148.6013\\-243.2266\\-5\\-149.6601\\-241.2734\\-5\\-151.2082\\-237.3672\\-5\\-152.1667\\-235.4141\\-5\\-152.8568\\-233.4609\\-5\\-153.781\\-231.5078\\-5\\-154.8253\\-227.6016\\-5\\-155.5411\\-225.6484\\-5\\-156.0535\\-223.6953\\-5\\-156.8427\\-219.7891\\-5\\-157.5521\\-217.8359\\-5\\-157.9949\\-215.8828\\-5\\-158.3177\\-213.9297\\-5\\-158.7463\\-211.9766\\-5\\-159.4154\\-210.0234\\-5\\-159.8045\\-208.0703\\-5\\-160.2585\\-204.1641\\-5\\-160.6353\\-200.2578\\-5\\-160.8904\\-198.3047\\-5\\-161.2713\\-194.3984\\-5\\-161.2847\\-192.4453\\-5\\-161.4739\\-186.5859\\-5\\-161.5089\\-182.6797\\-5\\-161.4494\\-178.7734\\-5\\-161.2148\\-174.8672\\-5\\-160.1114\\-165.1016\\-5\\-159.5956\\-161.1953\\-5\\-159.0028\\-159.2422\\-5\\-158.5086\\-157.2891\\-5\\-157.787\\-153.3828\\-5\\-156.503\\-149.4766\\-5\\-156.1661\\-147.5234\\-5\\-155.6959\\-145.5703\\-5\\-154.8952\\-143.6172\\-5\\-153.6347\\-139.7109\\-5\\-152.6482\\-137.7578\\-5\\-151.9575\\-135.8047\\-5\\-150.9399\\-133.8516\\-5\\-149.5909\\-129.9453\\-5\\-148.6566\\-127.9922\\-5\\-147.9426\\-126.0391\\-5\\-146.8825\\-124.0859\\-5\\-146.0667\\-122.1328\\-5\\-144.8094\\-120.1797\\-5\\-144.0397\\-118.2266\\-5\\-142.859\\-116.2734\\-5\\-142.0864\\-114.3203\\-5\\-140.8099\\-112.3672\\-5\\-139.797\\-110.4141\\-5\\-137.6953\\-107.1136\\-5\\-137.2142\\-106.5078\\-5\\-136.2588\\-104.5547\\-5\\-133.7891\\-101.3135\\-5\\-129.8828\\-96.69739\\-5\\-127.8606\\-94.78906\\-5\\-125.9766\\-93.54557\\-5\\-122.8009\\-90.88281\\-5\\-122.0703\\-90.20258\\-5\\-120.0584\\-88.92969\\-5\\-116.5757\\-86.97656\\-5\\-114.2578\\-85.51172\\-5\\-108.7607\\-83.07031\\-5\\-106.4453\\-82.08724\\-5\\-104.4922\\-81.47025\\-5\\-102.5391\\-80.6393\\-5\\-100.5859\\-80.29266\\-5\\-97.65625\\-79.16406\\-5\\-94.72656\\-78.14277\\-5\\-92.77344\\-77.78241\\-5\\-88.86719\\-76.55721\\-5\\-86.91406\\-76.21314\\-5\\-83.00781\\-75.78987\\-5\\-81.05469\\-75.40508\\-5\\-79.10156\\-74.59954\\-5\\-75.19531\\-74.34924\\-5\\-73.24219\\-73.76934\\-5\\-71.28906\\-72.44147\\-5\\-69.33594\\-72.67561\\-5\\-67.38281\\-72.74275\\-5\\-63.47656\\-72.73502\\-5\\-57.61719\\-72.79101\\-5\\-55.66406\\-72.87931\\-5\\-51.75781\\-72.82507\\-5\\-47.85156\\-72.95817\\-5\\-45.89844\\-73.77747\\-5\\-43.94531\\-74.20035\\-5\\-38.08594\\-74.54466\\-5\\-36.13281\\-74.72451\\-5\\-34.17969\\-75.15113\\-5\\-32.22656\\-75.72993\\-5\\-28.32031\\-76.28489\\-5\\-26.36719\\-76.65376\\-5\\-24.41406\\-77.39045\\-5\\-20.50781\\-78.74812\\-5\\-18.55469\\-79.6791\\-5\\-16.60156\\-80.32522\\-5\\-12.69531\\-81.99027\\-5\\-10.74219\\-83.06224\\-5\\-8.789063\\-84.24632\\-5\\-4.882813\\-87.58863\\-5\\-2.929688\\-89.11938\\-5\\-0.9765625\\-90.02018\\-5\\0.9765625\\-90.21918\\-5\\2.929688\\-89.91187\\-5\\4.638672\\-88.92969\\-5\\6.835938\\-87.30475\\-5\\10.74219\\-83.90446\\-5\\12.69531\\-82.3396\\-5\\14.70727\\-81.11719\\-5\\16.60156\\-80.20308\\-5\\18.55469\\-79.0833\\-5\\22.50402\\-77.21094\\-5\\24.41406\\-76.39407\\-5\\26.36719\\-75.9631\\-5\\28.32031\\-75.18072\\-5\\30.27344\\-74.6267\\-5\\34.17969\\-74.23502\\-5\\36.13281\\-72.82507\\-5\\40.03906\\-72.66914\\-5\\41.99219\\-72.51995\\-5\\43.94531\\-71.7442\\-5\\47.85156\\-71.78667\\-5\\55.66406\\-71.7442\\-5\\59.57031\\-71.83984\\-5\\61.52344\\-72.15057\\-5\\63.47656\\-72.64184\\-5\\67.38281\\-72.67616\\-5\\73.24219\\-72.84272\\-5\\75.19531\\-73.99838\\-5\\77.14844\\-74.26955\\-5\\81.05469\\-74.55752\\-5\\83.00781\\-74.81326\\-5\\84.96094\\-75.45909\\-5\\86.91406\\-75.91896\\-5\\90.82031\\-76.4432\\-5\\92.77344\\-77.00422\\-5\\94.72656\\-77.76981\\-5\\96.67969\\-78.38176\\-5\\98.63281\\-78.83854\\-5\\100.5859\\-79.6153\\-5\\104.4922\\-80.81839\\-5\\106.4453\\-81.72355\\-5\\108.3984\\-82.27131\\-5\\110.3516\\-83.04688\\-5\\114.2578\\-84.87483\\-5\\116.2109\\-85.96026\\-5\\120.1172\\-88.00875\\-5\\121.5163\\-88.92969\\-5\\124.0234\\-90.77876\\-5\\127.9297\\-94.29711\\-5\\130.1193\\-96.74219\\-5\\131.4525\\-98.69531\\-5\\134.4875\\-102.6016\\-5\\135.4943\\-104.5547\\-5\\136.6441\\-106.5078\\-5\\138.7036\\-110.4141\\-5\\139.9694\\-112.3672\\-5\\140.881\\-114.3203\\-5\\142.0288\\-116.2734\\-5\\142.7255\\-118.2266\\-5\\143.6546\\-120.1797\\-5\\145.2996\\-124.0859\\-5\\146.3098\\-126.0391\\-5\\147.0557\\-127.9922\\-5\\148.053\\-129.9453\\-5\\148.5779\\-131.8984\\-5\\150.0712\\-135.8047\\-5\\150.5261\\-137.7578\\-5\\152.0236\\-141.6641\\-5\\152.5232\\-143.6172\\-5\\153.8609\\-147.5234\\-5\\154.6245\\-151.4297\\-5\\155.6431\\-155.3359\\-5\\156.2149\\-159.2422\\-5\\156.5855\\-163.1484\\-5\\157.3351\\-167.0547\\-5\\157.8689\\-170.9609\\-5\\158.1364\\-174.8672\\-5\\158.4258\\-180.7266\\-5\\158.5597\\-186.5859\\-5\\158.5414\\-192.4453\\-5\\158.6592\\-196.3516\\-5\\158.5562\\-202.2109\\-5\\158.3209\\-208.0703\\-5\\157.8689\\-213.9297\\-5\\157.5936\\-215.8828\\-5\\156.7129\\-219.7891\\-5\\156.0993\\-223.6953\\-5\\155.7381\\-225.6484\\-5\\154.4723\\-229.5547\\-5\\153.9999\\-231.5078\\-5\\153.3203\\-233.2423\\-5\\151.4773\\-237.3672\\-5\\150.4249\\-239.3203\\-5\\149.5613\\-241.2734\\-5\\148.4438\\-243.2266\\-5\\146.0549\\-247.1328\\-5\\143.5547\\-250.4192\\-5\\141.6016\\-252.8899\\-5\\139.8831\\-254.9453\\-5\\137.8794\\-256.8984\\-5\\133.7891\\-261.1672\\-5\\129.8828\\-264.5986\\-5\\127.6359\\-266.6641\\-5\\122.8335\\-270.5703\\-5\\120.1172\\-272.6042\\-5\\116.2109\\-275.3568\\-5\\114.2578\\-276.546\\-5\\112.3047\\-277.5956\\-5\\110.3516\\-278.9525\\-5\\106.4453\\-281.1927\\-5\\104.4922\\-282.0262\\-5\\102.5391\\-283.052\\-5\\100.5859\\-283.6689\\-5\\98.63281\\-284.7808\\-5\\96.67969\\-285.4742\\-5\\94.72656\\-286.4343\\-5\\92.77344\\-287.0676\\-5\\90.82031\\-287.6023\\-5\\88.86719\\-288.3497\\-5\\86.91406\\-288.8637\\-5\\83.00781\\-289.4404\\-5\\81.05469\\-289.8484\\-5\\79.10156\\-290.4757\\-5\\75.19531\\-291.0487\\-5\\71.28906\\-291.3836\\-5\\65.42969\\-291.7314\\-5\\61.52344\\-291.8907\\-5\\51.75781\\-291.9865\\-5\\47.85156\\-292.1901\\-5\\41.99219\\-292.7859\\-5\\38.08594\\-293.2488\\-5\\36.13281\\-293.5731\\-5\\32.22656\\-294.418\\-5\\30.27344\\-294.7131\\-5\\24.41406\\-295.3673\\-5\\22.46094\\-295.7078\\-5\\20.50781\\-296.1723\\-5\\18.55469\\-296.4987\\-5\\16.60156\\-296.7235\\-5\\8.789063\\-297.4415\\-5\\2.929688\\-298.0226\\-5\\-0.9765625\\-298.2709\\-5\\-4.882813\\-298.2396\\-5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "285"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "124"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-297.6301\\-3\\-18.55469\\-297.2384\\-3\\-26.36719\\-296.6331\\-3\\-28.32031\\-296.4001\\-3\\-32.22656\\-295.6708\\-3\\-34.17969\\-295.3965\\-3\\-38.08594\\-295.0869\\-3\\-49.80469\\-294.3659\\-3\\-55.66406\\-293.8402\\-3\\-59.57031\\-293.6604\\-3\\-71.28906\\-293.3474\\-3\\-77.14844\\-293.0364\\-3\\-81.05469\\-292.7005\\-3\\-83.00781\\-292.4317\\-3\\-86.91406\\-291.3518\\-3\\-90.82031\\-290.5416\\-3\\-92.77344\\-289.6565\\-3\\-96.67969\\-288.6536\\-3\\-98.63281\\-287.6931\\-3\\-100.5859\\-286.9666\\-3\\-102.5391\\-285.8698\\-3\\-104.4922\\-284.9147\\-3\\-106.4453\\-283.6144\\-3\\-108.3984\\-282.8462\\-3\\-110.3516\\-281.5915\\-3\\-112.3047\\-280.5489\\-3\\-114.2578\\-279.2401\\-3\\-116.2109\\-277.7339\\-3\\-120.1172\\-275.3287\\-3\\-124.0234\\-272.2101\\-3\\-127.9297\\-269.2059\\-3\\-129.8828\\-267.4521\\-3\\-131.8359\\-265.4103\\-3\\-134.5799\\-262.7578\\-3\\-136.382\\-260.8047\\-3\\-137.6953\\-259.1044\\-3\\-139.6484\\-256.7385\\-3\\-142.4921\\-252.9922\\-3\\-144.8217\\-249.0859\\-3\\-146.2586\\-247.1328\\-3\\-147.4609\\-245.0503\\-3\\-148.4129\\-243.2266\\-3\\-150.2386\\-239.3203\\-3\\-150.8756\\-237.3672\\-3\\-151.952\\-235.4141\\-3\\-152.6086\\-233.4609\\-3\\-153.4972\\-231.5078\\-3\\-154.1183\\-229.5547\\-3\\-154.5959\\-227.6016\\-3\\-155.8838\\-223.6953\\-3\\-156.5936\\-219.7891\\-3\\-157.7962\\-215.8828\\-3\\-158.5414\\-211.9766\\-3\\-159.7001\\-208.0703\\-3\\-160.0012\\-206.1172\\-3\\-160.429\\-200.2578\\-3\\-160.901\\-194.3984\\-3\\-161.0652\\-188.5391\\-3\\-161.1707\\-182.6797\\-3\\-161.0798\\-178.7734\\-3\\-160.6633\\-172.9141\\-3\\-159.8995\\-165.1016\\-3\\-159.6236\\-163.1484\\-3\\-158.6225\\-159.2422\\-3\\-157.9464\\-155.3359\\-3\\-157.4504\\-153.3828\\-3\\-156.735\\-151.4297\\-3\\-155.9966\\-147.5234\\-3\\-155.3594\\-145.5703\\-3\\-154.6163\\-143.6172\\-3\\-154.0754\\-141.6641\\-3\\-152.3864\\-137.7578\\-3\\-151.682\\-135.8047\\-3\\-150.6696\\-133.8516\\-3\\-150.0921\\-131.8984\\-3\\-149.1962\\-129.9453\\-3\\-147.7014\\-126.0391\\-3\\-146.6481\\-124.0859\\-3\\-145.8118\\-122.1328\\-3\\-144.6077\\-120.1797\\-3\\-143.7789\\-118.2266\\-3\\-142.6819\\-116.2734\\-3\\-141.8495\\-114.3203\\-3\\-141.6016\\-114.0163\\-3\\-138.3405\\-108.4609\\-3\\-137.0016\\-106.5078\\-3\\-136\\-104.5547\\-3\\-134.5952\\-102.6016\\-3\\-131.8359\\-99.32767\\-3\\-129.5732\\-96.74219\\-3\\-127.5124\\-94.78906\\-3\\-125.9766\\-93.71297\\-3\\-122.0703\\-90.43826\\-3\\-119.7374\\-88.92969\\-3\\-118.1641\\-87.9981\\-3\\-116.2109\\-87.06837\\-3\\-114.2578\\-85.76304\\-3\\-110.3516\\-83.81877\\-3\\-108.3984\\-83.11066\\-3\\-106.4453\\-82.15395\\-3\\-104.4922\\-81.59829\\-3\\-102.5391\\-80.74826\\-3\\-100.5859\\-80.34186\\-3\\-97.22222\\-79.16406\\-3\\-94.72656\\-78.35943\\-3\\-90.82031\\-77.31415\\-3\\-88.86719\\-76.71478\\-3\\-86.91406\\-76.27778\\-3\\-81.05469\\-75.60456\\-3\\-79.10156\\-74.64376\\-3\\-77.14844\\-74.46185\\-3\\-73.24219\\-74.21107\\-3\\-69.33594\\-72.79642\\-3\\-63.47656\\-72.71235\\-3\\-61.52344\\-72.75057\\-3\\-59.57031\\-72.6894\\-3\\-55.66406\\-72.85171\\-3\\-51.75781\\-72.81641\\-3\\-47.85156\\-73.02286\\-3\\-45.89844\\-74.04662\\-3\\-43.94531\\-74.21191\\-3\\-40.03906\\-74.38909\\-3\\-36.13281\\-74.7486\\-3\\-34.17969\\-75.15202\\-3\\-32.22656\\-75.7131\\-3\\-28.32031\\-76.2567\\-3\\-26.36719\\-76.62979\\-3\\-24.41406\\-77.34838\\-3\\-20.50781\\-78.65531\\-3\\-18.55469\\-79.58064\\-3\\-14.64844\\-80.94033\\-3\\-10.74219\\-82.82801\\-3\\-8.789063\\-83.96903\\-3\\-4.882813\\-87.43229\\-3\\-2.625168\\-88.92969\\-3\\-0.9765625\\-89.82108\\-3\\0.9765625\\-90.10051\\-3\\2.929688\\-89.73565\\-3\\6.835938\\-87.05434\\-3\\9.19805\\-85.02344\\-3\\12.69531\\-82.24192\\-3\\14.64844\\-81.05975\\-3\\16.60156\\-80.17991\\-3\\18.55469\\-79.02863\\-3\\22.50402\\-77.21094\\-3\\24.41406\\-76.38889\\-3\\26.36719\\-75.95185\\-3\\28.32031\\-75.11592\\-3\\30.27344\\-74.61777\\-3\\34.17969\\-74.22346\\-3\\36.13281\\-72.83385\\-3\\40.03906\\-72.66914\\-3\\41.99219\\-72.64184\\-3\\43.94531\\-71.8046\\-3\\45.89844\\-71.77303\\-3\\55.66406\\-71.81519\\-3\\57.61719\\-71.88335\\-3\\59.57031\\-72.06886\\-3\\61.52344\\-72.62781\\-3\\67.38281\\-72.6904\\-3\\71.28906\\-72.79937\\-3\\73.24219\\-72.92766\\-3\\75.19531\\-74.20657\\-3\\77.14844\\-74.2989\\-3\\81.05469\\-74.6267\\-3\\83.00781\\-74.91715\\-3\\84.96094\\-75.58802\\-3\\86.91406\\-75.97832\\-3\\90.82031\\-76.50356\\-3\\92.77344\\-77.11328\\-3\\94.72656\\-77.84454\\-3\\96.67969\\-78.43695\\-3\\98.63281\\-78.88223\\-3\\100.5859\\-79.65571\\-3\\104.4922\\-80.89765\\-3\\106.4453\\-81.78303\\-3\\108.3984\\-82.31407\\-3\\110.3516\\-83.15424\\-3\\114.2578\\-85.00072\\-3\\120.1172\\-88.08825\\-3\\121.3117\\-88.92969\\-3\\123.8148\\-90.88281\\-3\\128.2211\\-94.78906\\-3\\129.8828\\-96.88038\\-3\\131.174\\-98.69531\\-3\\134.2209\\-102.6016\\-3\\135.2041\\-104.5547\\-3\\136.4425\\-106.5078\\-3\\137.2559\\-108.4609\\-3\\137.6953\\-109.0469\\-3\\140.6306\\-114.3203\\-3\\141.6563\\-116.2734\\-3\\142.5296\\-118.2266\\-3\\143.2413\\-120.1797\\-3\\144.2716\\-122.1328\\-3\\144.9402\\-124.0859\\-3\\146.041\\-126.0391\\-3\\146.7576\\-127.9922\\-3\\147.7661\\-129.9453\\-3\\148.967\\-133.8516\\-3\\149.8088\\-135.8047\\-3\\150.8316\\-139.7109\\-3\\151.7033\\-141.6641\\-3\\152.7631\\-145.5703\\-3\\153.532\\-147.5234\\-3\\154.032\\-149.4766\\-3\\154.7402\\-153.3828\\-3\\155.7142\\-157.2891\\-3\\156.0166\\-159.2422\\-3\\156.5855\\-165.1016\\-3\\156.84\\-167.0547\\-3\\157.5834\\-170.9609\\-3\\157.9162\\-174.8672\\-3\\158.1936\\-180.7266\\-3\\158.2968\\-186.5859\\-3\\158.2906\\-192.4453\\-3\\158.3793\\-196.3516\\-3\\158.332\\-202.2109\\-3\\158.2711\\-204.1641\\-3\\158.4063\\-208.0703\\-3\\158.0529\\-210.0234\\-3\\157.5936\\-213.9297\\-3\\156.7545\\-217.8359\\-3\\155.8926\\-223.6953\\-3\\155.3734\\-225.6484\\-3\\154.7309\\-227.6016\\-3\\153.7198\\-231.5078\\-3\\152.7737\\-233.4609\\-3\\152.0888\\-235.4141\\-3\\150.9586\\-237.3672\\-3\\150.1989\\-239.3203\\-3\\149.0451\\-241.2734\\-3\\148.1315\\-243.2266\\-3\\145.5305\\-247.1328\\-3\\144.1779\\-249.0859\\-3\\141.0445\\-252.9922\\-3\\139.6484\\-254.5105\\-3\\137.2416\\-256.8984\\-3\\133.7891\\-260.5334\\-3\\129.8828\\-264.0525\\-3\\129.2193\\-264.7109\\-3\\125.9766\\-267.6161\\-3\\122.0703\\-270.5934\\-3\\120.1172\\-271.9375\\-3\\118.1641\\-273.5237\\-3\\116.2109\\-274.9579\\-3\\114.2578\\-275.9276\\-3\\112.3047\\-277.2357\\-3\\108.3984\\-279.53\\-3\\106.4453\\-280.8013\\-3\\104.4922\\-281.5841\\-3\\102.5391\\-282.6526\\-3\\100.5859\\-283.3227\\-3\\96.67969\\-285.0967\\-3\\94.72656\\-285.7906\\-3\\92.77344\\-286.7189\\-3\\88.86719\\-287.7755\\-3\\86.91406\\-288.5042\\-3\\84.96094\\-288.9162\\-3\\81.05469\\-289.4126\\-3\\79.10156\\-289.8236\\-3\\77.14844\\-290.3985\\-3\\75.19531\\-290.7259\\-3\\71.28906\\-291.0633\\-3\\67.38281\\-291.2538\\-3\\61.52344\\-291.4464\\-3\\53.71094\\-291.6406\\-3\\49.80469\\-291.8778\\-3\\43.94531\\-292.6617\\-3\\40.03906\\-293.0907\\-3\\38.08594\\-293.4003\\-3\\34.17969\\-294.2741\\-3\\32.22656\\-294.6121\\-3\\26.36719\\-295.3036\\-3\\24.41406\\-295.6307\\-3\\22.46094\\-296.1187\\-3\\20.50781\\-296.4897\\-3\\18.55469\\-296.7345\\-3\\14.64844\\-297.0869\\-3\\6.835938\\-298.1011\\-3\\4.882813\\-298.3108\\-3\\0.9765625\\-298.5558\\-3\\-0.9765625\\-298.6268\\-3\\-4.882813\\-298.5388\\-3\\-10.74219\\-298.281\\-3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "300"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "125"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-297.9516\\-1\\-18.55469\\-297.432\\-1\\-20.50781\\-297.2277\\-1\\-28.32031\\-296.5493\\-1\\-30.27344\\-296.2511\\-1\\-34.17969\\-295.5087\\-1\\-36.13281\\-295.2996\\-1\\-43.94531\\-294.7809\\-1\\-49.80469\\-294.3443\\-1\\-55.66406\\-293.6935\\-1\\-59.57031\\-293.444\\-1\\-67.38281\\-293.2213\\-1\\-75.19531\\-292.9054\\-1\\-79.10156\\-292.5879\\-1\\-81.05469\\-292.3138\\-1\\-84.96094\\-291.3761\\-1\\-88.86719\\-290.6875\\-1\\-92.77344\\-289.3334\\-1\\-94.72656\\-288.948\\-1\\-96.67969\\-288.2045\\-1\\-98.63281\\-287.3356\\-1\\-100.5859\\-286.6022\\-1\\-102.5391\\-285.4383\\-1\\-104.4922\\-284.5104\\-1\\-106.4453\\-283.3303\\-1\\-108.3984\\-282.4375\\-1\\-110.3516\\-281.2873\\-1\\-112.3047\\-280.036\\-1\\-114.2578\\-278.8984\\-1\\-118.1641\\-276.1091\\-1\\-120.1172\\-275.0506\\-1\\-122.0703\\-273.5062\\-1\\-125.9766\\-270.2349\\-1\\-127.9297\\-268.875\\-1\\-129.8828\\-267.1302\\-1\\-131.8359\\-265.0854\\-1\\-134.266\\-262.7578\\-1\\-136.0802\\-260.8047\\-1\\-137.4688\\-258.8516\\-1\\-140.7724\\-254.9453\\-1\\-142.2677\\-252.9922\\-1\\-143.2897\\-251.0391\\-1\\-145.9961\\-247.1328\\-1\\-147.0247\\-245.1797\\-1\\-148.2212\\-243.2266\\-1\\-149.0136\\-241.2734\\-1\\-150.0588\\-239.3203\\-1\\-150.6542\\-237.3672\\-1\\-151.6712\\-235.4141\\-1\\-153.1041\\-231.5078\\-1\\-153.919\\-229.5547\\-1\\-154.9341\\-225.6484\\-1\\-155.671\\-223.6953\\-1\\-156.1422\\-221.7422\\-1\\-156.4328\\-219.7891\\-1\\-156.8758\\-217.8359\\-1\\-157.5731\\-215.8828\\-1\\-158.0322\\-213.9297\\-1\\-158.3667\\-211.9766\\-1\\-158.824\\-210.0234\\-1\\-160.0157\\-208.0703\\-1\\-160.5596\\-206.1172\\-1\\-160.0985\\-204.1641\\-1\\-160.1214\\-202.2109\\-1\\-160.6116\\-194.3984\\-1\\-160.8073\\-182.6797\\-1\\-160.7179\\-178.7734\\-1\\-160.5067\\-174.8672\\-1\\-160.2381\\-170.9609\\-1\\-159.8969\\-167.0547\\-1\\-159.668\\-165.1016\\-1\\-158.7155\\-161.1953\\-1\\-157.6705\\-155.3359\\-1\\-156.9734\\-153.3828\\-1\\-156.4777\\-151.4297\\-1\\-155.7617\\-147.5234\\-1\\-154.9669\\-145.5703\\-1\\-153.8448\\-141.6641\\-1\\-152.8841\\-139.7109\\-1\\-152.1686\\-137.7578\\-1\\-150.4768\\-133.8516\\-1\\-149.8336\\-131.8984\\-1\\-148.8892\\-129.9453\\-1\\-148.3024\\-127.9922\\-1\\-145.5078\\-122.1446\\-1\\-143.4197\\-118.2266\\-1\\-142.5658\\-116.2734\\-1\\-141.6016\\-114.4262\\-1\\-140.4218\\-112.3672\\-1\\-139.0772\\-110.4141\\-1\\-138.1017\\-108.4609\\-1\\-135.5913\\-104.5547\\-1\\-134.4105\\-102.6016\\-1\\-132.7732\\-100.6484\\-1\\-129.1707\\-96.74219\\-1\\-127.1439\\-94.78906\\-1\\-124.0234\\-92.19567\\-1\\-122.0703\\-90.73438\\-1\\-119.4901\\-88.92969\\-1\\-118.1641\\-88.08421\\-1\\-116.2109\\-87.23646\\-1\\-112.3047\\-84.92426\\-1\\-110.3516\\-83.99373\\-1\\-108.3984\\-83.27471\\-1\\-106.4453\\-82.21233\\-1\\-104.4922\\-81.7523\\-1\\-102.5391\\-80.92188\\-1\\-98.63281\\-79.87976\\-1\\-96.48862\\-79.16406\\-1\\-94.72656\\-78.68445\\-1\\-92.77344\\-77.94863\\-1\\-88.86719\\-76.96346\\-1\\-86.91406\\-76.33203\\-1\\-81.05469\\-75.6526\\-1\\-79.10156\\-74.66889\\-1\\-77.14844\\-74.4833\\-1\\-73.24219\\-74.2283\\-1\\-71.28906\\-73.6273\\-1\\-69.33594\\-72.87\\-1\\-61.52344\\-72.61221\\-1\\-59.57031\\-72.34999\\-1\\-57.61719\\-72.6199\\-1\\-55.66406\\-72.78273\\-1\\-51.75781\\-72.77455\\-1\\-47.85156\\-72.85171\\-1\\-46.0612\\-73.30469\\-1\\-43.94531\\-74.16811\\-1\\-40.03906\\-74.36513\\-1\\-36.13281\\-74.72451\\-1\\-34.17969\\-75.12173\\-1\\-32.22656\\-75.71004\\-1\\-28.32031\\-76.25102\\-1\\-26.36719\\-76.62143\\-1\\-22.46094\\-77.96861\\-1\\-20.50781\\-78.55895\\-1\\-18.55469\\-79.48483\\-1\\-16.60156\\-80.22579\\-1\\-14.64844\\-80.79166\\-1\\-10.74219\\-82.5966\\-1\\-8.789063\\-83.87495\\-1\\-4.882813\\-87.19269\\-1\\-2.302632\\-88.92969\\-1\\-0.9765625\\-89.67072\\-1\\0.9765625\\-90.08115\\-1\\2.929688\\-89.54159\\-1\\6.835938\\-86.74894\\-1\\11.49269\\-83.07031\\-1\\12.69531\\-82.1807\\-1\\14.64844\\-80.98222\\-1\\16.60156\\-80.16295\\-1\\18.55469\\-79.01546\\-1\\24.41406\\-76.4034\\-1\\26.36719\\-75.95972\\-1\\28.32031\\-75.13153\\-1\\30.27344\\-74.63576\\-1\\34.17969\\-74.22346\\-1\\36.13281\\-72.85171\\-1\\41.99219\\-72.64184\\-1\\43.94531\\-71.88867\\-1\\45.89844\\-71.90269\\-1\\49.80469\\-71.77573\\-1\\55.66406\\-71.89729\\-1\\57.61719\\-72.26154\\-1\\59.57031\\-72.51525\\-1\\61.52344\\-72.66221\\-1\\69.33594\\-72.73502\\-1\\71.28906\\-72.80784\\-1\\73.02296\\-73.30469\\-1\\75.19531\\-74.23502\\-1\\77.14844\\-74.3286\\-1\\81.05469\\-74.69681\\-1\\83.00781\\-75.10319\\-1\\84.96094\\-75.7558\\-1\\90.82031\\-76.5998\\-1\\94.72656\\-77.91013\\-1\\98.63281\\-79.02863\\-1\\104.4922\\-80.99905\\-1\\106.4453\\-81.84495\\-1\\108.3984\\-82.36935\\-1\\112.3047\\-84.1608\\-1\\116.2109\\-86.13213\\-1\\118.1641\\-87.27761\\-1\\120.1172\\-88.17705\\-1\\122.0703\\-89.65094\\-1\\123.5428\\-90.88281\\-1\\125.9766\\-93.1227\\-1\\127.9297\\-94.79828\\-1\\129.8828\\-97.24321\\-1\\130.9265\\-98.69531\\-1\\132.4848\\-100.6484\\-1\\133.8577\\-102.6016\\-1\\134.967\\-104.5547\\-1\\136.1989\\-106.5078\\-1\\137.0079\\-108.4609\\-1\\138.2285\\-110.4141\\-1\\139.1197\\-112.3672\\-1\\140.3966\\-114.3203\\-1\\141.2421\\-116.2734\\-1\\142.3418\\-118.2266\\-1\\142.9583\\-120.1797\\-1\\143.998\\-122.1328\\-1\\144.6763\\-124.0859\\-1\\145.6975\\-126.0391\\-1\\148.1673\\-131.8984\\-1\\148.7067\\-133.8516\\-1\\150.151\\-137.7578\\-1\\150.5755\\-139.7109\\-1\\151.2385\\-141.6641\\-1\\152.0092\\-143.6172\\-1\\152.487\\-145.5703\\-1\\153.7816\\-149.4766\\-1\\154.8842\\-155.3359\\-1\\155.7815\\-159.2422\\-1\\156.0486\\-161.1953\\-1\\156.5537\\-167.0547\\-1\\156.7874\\-169.0078\\-1\\157.426\\-172.9141\\-1\\157.6233\\-174.8672\\-1\\157.8896\\-178.7734\\-1\\158.0185\\-182.6797\\-1\\158.0615\\-186.5859\\-1\\158.0726\\-192.4453\\-1\\158.1505\\-196.3516\\-1\\158.1555\\-200.2578\\-1\\158.0853\\-204.1641\\-1\\158.8364\\-206.1172\\-1\\159.8106\\-208.0703\\-1\\158.1569\\-210.0234\\-1\\157.5521\\-211.9766\\-1\\156.7743\\-215.8828\\-1\\156.3078\\-219.7891\\-1\\156.0213\\-221.7422\\-1\\155.6202\\-223.6953\\-1\\154.9713\\-225.6484\\-1\\154.0187\\-229.5547\\-1\\153.3203\\-231.4921\\-1\\152.448\\-233.4609\\-1\\151.7389\\-235.4141\\-1\\150.6117\\-237.3672\\-1\\149.8922\\-239.3203\\-1\\148.6881\\-241.2734\\-1\\147.7597\\-243.2266\\-1\\146.437\\-245.1797\\-1\\144.9544\\-247.1328\\-1\\143.7544\\-249.0859\\-1\\142.3099\\-251.0391\\-1\\139.6484\\-254.0545\\-1\\133.7891\\-260.0467\\-1\\131.8359\\-261.8965\\-1\\128.746\\-264.7109\\-1\\125.9766\\-267.1523\\-1\\122.0703\\-269.9887\\-1\\118.1641\\-273.0861\\-1\\116.1133\\-274.4766\\-1\\114.2578\\-275.5402\\-1\\112.3047\\-276.8273\\-1\\110.3516\\-277.7916\\-1\\108.3984\\-279.1443\\-1\\104.4922\\-281.2332\\-1\\102.5391\\-282.0678\\-1\\100.5859\\-283.05\\-1\\98.63281\\-283.6486\\-1\\96.67969\\-284.7122\\-1\\94.72656\\-285.3575\\-1\\92.72694\\-286.1953\\-1\\90.82031\\-286.8978\\-1\\88.86719\\-287.3637\\-1\\84.96094\\-288.5787\\-1\\83.00781\\-288.948\\-1\\79.10156\\-289.4161\\-1\\77.14844\\-289.7598\\-1\\75.19531\\-290.239\\-1\\73.24219\\-290.5601\\-1\\69.33594\\-290.8696\\-1\\65.42969\\-291.0286\\-1\\57.61719\\-291.2745\\-1\\51.75781\\-291.549\\-1\\49.80469\\-291.7142\\-1\\45.89844\\-292.4012\\-1\\40.03906\\-293.1906\\-1\\38.08594\\-293.5537\\-1\\36.13281\\-294.0749\\-1\\34.17969\\-294.4707\\-1\\32.22656\\-294.764\\-1\\28.32031\\-295.23\\-1\\26.36719\\-295.5128\\-1\\22.46094\\-296.4492\\-1\\20.50781\\-296.7031\\-1\\16.60156\\-297.0628\\-1\\14.64844\\-297.3\\-1\\10.74219\\-298.0226\\-1\\8.789063\\-298.2709\\-1\\4.882813\\-298.5909\\-1\\2.929688\\-298.668\\-1\\0.9765625\\-299.0438\\-1\\-0.9765625\\-299.5279\\-1\\-2.929688\\-298.8224\\-1\\-6.835938\\-298.6884\\-1\\-10.74219\\-298.5022\\-1\\-12.69531\\-298.2911\\-1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "307"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "126"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.9765625\\-301.1765\\1\\-2.116935\\-299.8672\\1\\-2.929688\\-299.1037\\1\\-4.882813\\-298.9106\\1\\-6.835938\\-298.866\\1\\-10.74219\\-298.6588\\1\\-12.69531\\-298.4946\\1\\-16.60156\\-297.9948\\1\\-20.50781\\-297.3864\\1\\-28.32031\\-296.6593\\1\\-30.27344\\-296.4201\\1\\-34.17969\\-295.647\\1\\-36.13281\\-295.3876\\1\\-40.03906\\-295.0682\\1\\-47.85156\\-294.4961\\1\\-49.80469\\-294.2974\\1\\-53.71094\\-293.7671\\1\\-59.57031\\-293.2009\\1\\-67.38281\\-293.0063\\1\\-75.19531\\-292.6417\\1\\-79.10156\\-292.1355\\1\\-81.05469\\-291.6966\\1\\-86.91406\\-290.7756\\1\\-88.86719\\-290.2117\\1\\-90.82031\\-289.503\\1\\-94.72656\\-288.6164\\1\\-96.67969\\-287.7003\\1\\-98.63281\\-287.0072\\1\\-102.5391\\-285.1096\\1\\-104.4922\\-283.9434\\1\\-106.4453\\-283.0836\\1\\-108.3984\\-281.9491\\1\\-110.3516\\-280.9891\\1\\-112.3047\\-279.6393\\1\\-114.2578\\-278.4494\\1\\-117.287\\-276.4297\\1\\-118.1641\\-275.7764\\1\\-120.1172\\-274.6494\\1\\-122.0703\\-273.2139\\1\\-125.9766\\-269.8618\\1\\-127.6618\\-268.6172\\1\\-129.8739\\-266.6641\\1\\-131.8359\\-264.5868\\1\\-133.8501\\-262.7578\\1\\-135.7422\\-260.7202\\1\\-137.0917\\-258.8516\\1\\-138.7522\\-256.8984\\1\\-140.5105\\-254.9453\\1\\-141.9766\\-252.9922\\1\\-143.0054\\-251.0391\\1\\-143.5547\\-250.32\\1\\-145.6694\\-247.1328\\1\\-146.7417\\-245.1797\\1\\-148.0107\\-243.2266\\1\\-148.7609\\-241.2734\\1\\-149.8117\\-239.3203\\1\\-150.4662\\-237.3672\\1\\-152.1723\\-233.4609\\1\\-152.8015\\-231.5078\\1\\-153.6841\\-229.5547\\1\\-154.6825\\-225.6484\\1\\-155.3897\\-223.6953\\1\\-155.9888\\-221.7422\\1\\-156.6357\\-217.8359\\1\\-157.8828\\-213.9297\\1\\-158.6242\\-210.0234\\1\\-159.1797\\-209.3463\\1\\-161.1006\\-208.0703\\1\\-161.6375\\-206.1172\\1\\-160.1563\\-204.1641\\1\\-159.9539\\-202.2109\\1\\-160.0915\\-200.2578\\1\\-160.3697\\-194.3984\\1\\-160.5261\\-182.6797\\1\\-160.4392\\-178.7734\\1\\-160.2699\\-174.8672\\1\\-159.8633\\-169.0078\\1\\-159.6505\\-167.0547\\1\\-159.2744\\-165.1016\\1\\-158.7603\\-163.1484\\1\\-157.8103\\-157.2891\\1\\-156.6223\\-153.3828\\1\\-155.9683\\-149.4766\\1\\-155.4184\\-147.5234\\1\\-154.6662\\-145.5703\\1\\-154.1453\\-143.6172\\1\\-153.5212\\-141.6641\\1\\-152.5722\\-139.7109\\1\\-151.9326\\-137.7578\\1\\-150.9119\\-135.8047\\1\\-150.2918\\-133.8516\\1\\-148.6538\\-129.9453\\1\\-148.1014\\-127.9922\\1\\-147.0501\\-126.0391\\1\\-146.2505\\-124.0859\\1\\-145.1242\\-122.1328\\1\\-144.2242\\-120.1797\\1\\-143.1013\\-118.2266\\1\\-142.4269\\-116.2734\\1\\-141.2014\\-114.3203\\1\\-140.2161\\-112.3672\\1\\-138.8328\\-110.4141\\1\\-137.8174\\-108.4609\\1\\-136.6471\\-106.5078\\1\\-135.2681\\-104.5547\\1\\-134.2096\\-102.6016\\1\\-132.6102\\-100.6484\\1\\-129.0351\\-96.74219\\1\\-127.9297\\-95.65933\\1\\-125.9766\\-93.93787\\1\\-124.0234\\-92.36858\\1\\-120.1172\\-89.51969\\1\\-118.1641\\-88.17386\\1\\-116.2109\\-87.38657\\1\\-114.2578\\-86.33515\\1\\-112.3047\\-84.95686\\1\\-108.3984\\-83.41284\\1\\-106.4453\\-82.34882\\1\\-104.4922\\-81.90743\\1\\-100.5859\\-80.56009\\1\\-98.63281\\-80.1346\\1\\-96.67969\\-79.52385\\1\\-92.77344\\-78.17474\\1\\-86.91406\\-76.50402\\1\\-84.96094\\-76.16179\\1\\-81.05469\\-75.69108\\1\\-79.10156\\-74.70087\\1\\-75.19531\\-74.45703\\1\\-73.24219\\-74.25148\\1\\-71.28906\\-73.64173\\1\\-69.33594\\-72.88874\\1\\-65.42969\\-72.73502\\1\\-63.47656\\-72.59174\\1\\-59.57031\\-71.52805\\1\\-57.61719\\-72.45349\\1\\-55.66406\\-72.72738\\1\\-47.85156\\-72.79937\\1\\-45.89844\\-72.94787\\1\\-43.94531\\-74.02391\\1\\-41.99219\\-74.23502\\1\\-38.08594\\-74.46515\\1\\-36.13281\\-74.66781\\1\\-34.17969\\-75.08971\\1\\-32.22656\\-75.72315\\1\\-28.32031\\-76.26244\\1\\-26.36719\\-76.62621\\1\\-24.41406\\-77.30711\\1\\-20.50781\\-78.5031\\1\\-18.55469\\-79.41914\\1\\-16.60156\\-80.17947\\1\\-14.64844\\-80.75365\\1\\-12.69531\\-81.66825\\1\\-10.74219\\-82.41187\\1\\-8.789063\\-83.87249\\1\\-6.835938\\-85.52629\\1\\-4.820097\\-86.97656\\1\\-0.9765625\\-89.49731\\1\\0.9765625\\-89.93693\\1\\2.929688\\-89.29676\\1\\4.882813\\-87.9325\\1\\11.35254\\-83.07031\\1\\12.69531\\-82.12674\\1\\14.64844\\-80.95313\\1\\16.60156\\-80.15179\\1\\18.55469\\-79.01546\\1\\22.50671\\-77.21094\\1\\24.41406\\-76.41827\\1\\26.36719\\-75.97962\\1\\28.32031\\-75.19678\\1\\30.27344\\-74.66781\\1\\34.17969\\-74.24658\\1\\36.13281\\-72.86079\\1\\41.99219\\-72.65535\\1\\43.94531\\-72.28407\\1\\45.89844\\-72.1875\\1\\47.85156\\-71.83984\\1\\49.80469\\-71.78447\\1\\53.71094\\-71.8046\\1\\55.66406\\-71.94313\\1\\57.61719\\-72.60178\\1\\61.52344\\-72.67616\\1\\63.47656\\-72.66221\\1\\71.28906\\-72.82507\\1\\73.24219\\-73.99363\\1\\75.19531\\-74.27544\\1\\79.10156\\-74.5032\\1\\81.05469\\-74.7841\\1\\83.00781\\-75.24909\\1\\84.96094\\-75.84129\\1\\88.86719\\-76.34995\\1\\90.82031\\-76.73568\\1\\92.77344\\-77.40063\\1\\100.5859\\-79.79476\\1\\102.5391\\-80.45584\\1\\106.4453\\-81.91402\\1\\108.3984\\-82.44165\\1\\110.3516\\-83.44331\\1\\112.3047\\-84.2651\\1\\114.2578\\-85.3693\\1\\116.2109\\-86.23833\\1\\118.1641\\-87.42997\\1\\120.1172\\-88.31934\\1\\122.0703\\-89.80798\\1\\123.2824\\-90.88281\\1\\127.9297\\-95.20067\\1\\130.7586\\-98.69531\\1\\132.2004\\-100.6484\\1\\134.7362\\-104.5547\\1\\135.8918\\-106.5078\\1\\136.7915\\-108.4609\\1\\137.9428\\-110.4141\\1\\138.8459\\-112.3672\\1\\140.1459\\-114.3203\\1\\140.9564\\-116.2734\\1\\142.1096\\-118.2266\\1\\142.745\\-120.1797\\1\\143.6399\\-122.1328\\1\\145.2298\\-126.0391\\1\\146.2728\\-127.9922\\1\\146.9389\\-129.9453\\1\\147.906\\-131.8984\\1\\149.0673\\-135.8047\\1\\149.9221\\-137.7578\\1\\150.8757\\-141.6641\\1\\151.7263\\-143.6172\\1\\152.7614\\-147.5234\\1\\153.4424\\-149.4766\\1\\153.9278\\-151.4297\\1\\154.9691\\-157.2891\\1\\155.4732\\-159.2422\\1\\155.8268\\-161.1953\\1\\156.068\\-163.1484\\1\\156.691\\-170.9609\\1\\157.4136\\-176.8203\\1\\157.5834\\-178.7734\\1\\157.7648\\-182.6797\\1\\157.8369\\-188.5391\\1\\157.8369\\-192.4453\\1\\157.9327\\-196.3516\\1\\157.959\\-200.2578\\1\\157.8653\\-204.1641\\1\\159.1797\\-206.2709\\1\\160.0878\\-208.0703\\1\\159.1797\\-209.2849\\1\\158.1432\\-210.0234\\1\\157.1399\\-211.9766\\1\\156.5222\\-215.8828\\1\\156.1607\\-219.7891\\1\\155.8079\\-221.7422\\1\\154.6787\\-225.6484\\1\\153.7715\\-229.5547\\1\\152.8701\\-231.5078\\1\\152.1623\\-233.4609\\1\\151.2199\\-235.4141\\1\\149.4387\\-239.3203\\1\\148.4062\\-241.2734\\1\\146.0631\\-245.1797\\1\\144.5655\\-247.1328\\1\\143.5547\\-248.69\\1\\141.8438\\-251.0391\\1\\140.1772\\-252.9922\\1\\137.6953\\-255.6481\\1\\135.7422\\-257.5712\\1\\134.5418\\-258.8516\\1\\131.8359\\-261.4855\\1\\128.1438\\-264.7109\\1\\125.7918\\-266.6641\\1\\120.1172\\-271.0891\\1\\118.1641\\-272.4081\\1\\114.2578\\-275.2312\\1\\112.3047\\-276.2067\\1\\108.3984\\-278.6724\\1\\106.4453\\-279.6589\\1\\104.4922\\-280.8633\\1\\102.5391\\-281.61\\1\\100.5859\\-282.6641\\1\\98.63281\\-283.3186\\1\\96.67969\\-284.0807\\1\\94.72656\\-285.0012\\1\\92.77344\\-285.5966\\1\\90.82031\\-286.4714\\1\\86.91406\\-287.4714\\1\\83.00781\\-288.6132\\1\\81.05469\\-288.948\\1\\75.19531\\-289.6036\\1\\71.28906\\-290.3039\\1\\69.33594\\-290.5033\\1\\65.42969\\-290.7328\\1\\53.71094\\-291.2644\\1\\49.80469\\-291.5843\\1\\47.85156\\-291.9326\\1\\45.89844\\-292.4012\\1\\40.03906\\-293.2834\\1\\38.08594\\-293.7026\\1\\36.13281\\-294.2741\\1\\34.17969\\-294.6121\\1\\28.32031\\-295.3624\\1\\26.36719\\-295.7731\\1\\24.41406\\-296.2979\\1\\22.46094\\-296.6445\\1\\16.60156\\-297.235\\1\\14.64844\\-297.5462\\1\\12.69531\\-298.0757\\1\\8.789063\\-298.5317\\1\\4.882813\\-298.7915\\1\\2.929688\\-298.8652\\1\\0.9864268\\-299.8672\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "307"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "127"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.9765625\\-300.7607\\3\\-2.929688\\-299.2102\\3\\-10.74219\\-298.7891\\3\\-16.60156\\-298.2396\\3\\-20.50781\\-297.562\\3\\-24.41406\\-297.102\\3\\-30.27344\\-296.5372\\3\\-32.22656\\-296.2247\\3\\-34.17969\\-295.7895\\3\\-36.13281\\-295.4956\\3\\-40.03906\\-295.1057\\3\\-43.94531\\-294.8206\\3\\-47.85156\\-294.4868\\3\\-49.80469\\-294.2485\\3\\-53.71094\\-293.6312\\3\\-57.61719\\-293.1686\\3\\-59.57031\\-292.6358\\3\\-61.52344\\-292.9155\\3\\-63.47656\\-292.9331\\3\\-67.38281\\-292.7946\\3\\-71.28906\\-292.596\\3\\-75.19531\\-292.2541\\3\\-79.10156\\-291.5694\\3\\-84.96094\\-290.7825\\3\\-86.91406\\-290.3285\\3\\-88.86719\\-289.6231\\3\\-92.77344\\-288.8352\\3\\-96.67969\\-287.3221\\3\\-98.63281\\-286.6648\\3\\-100.5859\\-285.5347\\3\\-102.5391\\-284.7425\\3\\-104.4922\\-283.5428\\3\\-106.4453\\-282.7706\\3\\-108.3984\\-281.5771\\3\\-110.3516\\-280.6076\\3\\-113.6719\\-278.3828\\3\\-114.2578\\-277.9149\\3\\-116.2109\\-276.8326\\3\\-122.0703\\-272.7974\\3\\-127.1779\\-268.6172\\3\\-129.3279\\-266.6641\\3\\-131.8359\\-264.1236\\3\\-133.7891\\-262.2996\\3\\-135.7422\\-260.2155\\3\\-136.8139\\-258.8516\\3\\-140.2092\\-254.9453\\3\\-141.6016\\-252.9195\\3\\-142.78\\-251.0391\\3\\-144.1154\\-249.0859\\3\\-147.4609\\-243.5859\\3\\-147.741\\-243.2266\\3\\-149.4855\\-239.3203\\3\\-150.2906\\-237.3672\\3\\-150.9324\\-235.4141\\3\\-151.9355\\-233.4609\\3\\-152.5534\\-231.5078\\3\\-153.3725\\-229.5547\\3\\-154.0146\\-227.6016\\3\\-154.4771\\-225.6484\\3\\-155.0441\\-223.6953\\3\\-155.8043\\-221.7422\\3\\-156.1853\\-219.7891\\3\\-156.4534\\-217.8359\\3\\-156.8987\\-215.8828\\3\\-157.6705\\-213.9297\\3\\-158.3685\\-210.0234\\3\\-159.1797\\-208.7241\\3\\-160.144\\-208.0703\\3\\-160.6717\\-206.1172\\3\\-159.7669\\-204.1641\\3\\-159.7525\\-202.2109\\3\\-159.8969\\-200.2578\\3\\-160.1662\\-194.3984\\3\\-160.2745\\-184.6328\\3\\-160.2596\\-180.7266\\3\\-160.1513\\-176.8203\\3\\-159.948\\-172.9141\\3\\-159.6144\\-169.0078\\3\\-159.2744\\-167.0547\\3\\-158.7954\\-165.1016\\3\\-158.4565\\-163.1484\\3\\-157.9002\\-159.2422\\3\\-157.474\\-157.2891\\3\\-156.7743\\-155.3359\\3\\-156.1182\\-151.4297\\3\\-155.7142\\-149.4766\\3\\-154.9934\\-147.5234\\3\\-153.919\\-143.6172\\3\\-153.0762\\-141.6641\\3\\-151.6181\\-137.7578\\3\\-150.6245\\-135.8047\\3\\-150.0672\\-133.8516\\3\\-149.1551\\-131.8984\\3\\-147.8392\\-127.9922\\3\\-146.7712\\-126.0391\\3\\-145.9778\\-124.0859\\3\\-144.8423\\-122.1328\\3\\-143.9599\\-120.1797\\3\\-142.8672\\-118.2266\\3\\-142.2194\\-116.2734\\3\\-140.9075\\-114.3203\\3\\-139.9442\\-112.3672\\3\\-137.4001\\-108.4609\\3\\-136.4265\\-106.5078\\3\\-135.08\\-104.5547\\3\\-133.8992\\-102.6016\\3\\-132.3776\\-100.6484\\3\\-128.8508\\-96.74219\\3\\-125.9766\\-94.0985\\3\\-124.0234\\-92.6437\\3\\-122.0703\\-91.28971\\3\\-120.1172\\-89.70695\\3\\-118.1641\\-88.33251\\3\\-116.2109\\-87.50463\\3\\-114.2578\\-86.42114\\3\\-112.3047\\-85.06865\\3\\-108.3984\\-83.54051\\3\\-106.4453\\-82.51768\\3\\-102.5391\\-81.41473\\3\\-100.5859\\-80.72798\\3\\-96.67969\\-79.74051\\3\\-94.72656\\-78.96462\\3\\-92.77344\\-78.42458\\3\\-90.82031\\-77.74424\\3\\-86.91406\\-76.77763\\3\\-84.96094\\-76.24107\\3\\-81.05469\\-75.75947\\3\\-79.10156\\-74.9516\\3\\-77.14844\\-74.58064\\3\\-75.19531\\-74.50198\\3\\-73.24219\\-74.28728\\3\\-71.28906\\-73.68682\\3\\-69.33594\\-72.87931\\3\\-65.42969\\-72.75848\\3\\-61.52344\\-72.17527\\3\\-59.57031\\-72.16817\\3\\-57.61719\\-72.54923\\3\\-55.66406\\-72.74275\\3\\-51.75781\\-72.74275\\3\\-45.89844\\-72.82507\\3\\-43.94531\\-73.96735\\3\\-41.99219\\-74.26381\\3\\-38.08594\\-74.42523\\3\\-36.13281\\-74.63636\\3\\-34.17969\\-75.05605\\3\\-32.22656\\-75.73307\\3\\-28.32031\\-76.25722\\3\\-26.36719\\-76.6189\\3\\-24.41406\\-77.29357\\3\\-20.50781\\-78.49119\\3\\-18.55469\\-79.39169\\3\\-16.60156\\-80.11224\\3\\-14.64844\\-80.73078\\3\\-12.69531\\-81.73006\\3\\-10.74219\\-82.48296\\3\\-7.220929\\-85.02344\\3\\-4.412957\\-86.97656\\3\\-0.9765625\\-89.1684\\3\\0.9765625\\-89.54943\\3\\2.929688\\-88.88966\\3\\4.882813\\-87.78922\\3\\8.453967\\-85.02344\\3\\12.69531\\-82.08715\\3\\14.64844\\-80.92495\\3\\16.60156\\-80.15166\\3\\18.55469\\-79.05556\\3\\22.56775\\-77.21094\\3\\24.41406\\-76.43862\\3\\26.36719\\-76.00671\\3\\30.27344\\-74.7207\\3\\32.22656\\-74.44813\\3\\34.17969\\-74.27544\\3\\36.13281\\-73.28197\\3\\38.08594\\-72.78273\\3\\43.94531\\-72.6274\\3\\45.89844\\-72.34198\\3\\47.85156\\-72.21187\\3\\49.80469\\-72.1875\\3\\53.71094\\-71.99356\\3\\55.66406\\-72.26849\\3\\57.61719\\-72.65535\\3\\63.47656\\-72.68324\\3\\69.33594\\-72.79937\\3\\71.28906\\-73.0456\\3\\73.24219\\-74.08977\\3\\75.19531\\-74.30464\\3\\79.10156\\-74.55288\\3\\81.05469\\-74.85967\\3\\83.00781\\-75.48544\\3\\84.96094\\-75.92258\\3\\88.86719\\-76.45659\\3\\90.82031\\-76.90363\\3\\92.77344\\-77.56303\\3\\96.67969\\-78.6904\\3\\98.63281\\-79.36382\\3\\102.5391\\-80.53253\\3\\104.4922\\-81.38886\\3\\108.3984\\-82.54738\\3\\110.3516\\-83.59664\\3\\112.3047\\-84.37801\\3\\114.2578\\-85.53377\\3\\116.2109\\-86.35566\\3\\118.1641\\-87.57186\\3\\120.1172\\-88.48579\\3\\122.0703\\-89.97903\\3\\127.2252\\-94.78906\\3\\128.9828\\-96.74219\\3\\130.5538\\-98.69531\\3\\133.1275\\-102.6016\\3\\134.502\\-104.5547\\3\\136.6082\\-108.4609\\3\\137.5046\\-110.4141\\3\\139.7714\\-114.3203\\3\\140.7123\\-116.2734\\3\\141.8013\\-118.2266\\3\\143.2683\\-122.1328\\3\\144.2457\\-124.0859\\3\\144.8831\\-126.0391\\3\\146.0109\\-127.9922\\3\\146.657\\-129.9453\\3\\147.5745\\-131.8984\\3\\148.3073\\-133.8516\\3\\148.7949\\-135.8047\\3\\149.6169\\-137.7578\\3\\150.2104\\-139.7109\\3\\150.6261\\-141.6641\\3\\152.0237\\-145.5703\\3\\153.0081\\-149.4766\\3\\153.6818\\-151.4297\\3\\154.0786\\-153.3828\\3\\154.6701\\-157.2891\\3\\155.5391\\-161.1953\\3\\155.8581\\-163.1484\\3\\156.068\\-165.1016\\3\\156.5815\\-172.9141\\3\\157.2641\\-180.7266\\3\\157.3882\\-182.6797\\3\\157.5195\\-188.5391\\3\\157.5731\\-194.3984\\3\\157.6705\\-196.3516\\3\\157.7402\\-200.2578\\3\\157.5627\\-204.1641\\3\\157.685\\-206.1172\\3\\159.0332\\-208.0703\\3\\157.2266\\-210.006\\3\\156.7096\\-211.9766\\3\\155.9639\\-219.7891\\3\\155.5285\\-221.7422\\3\\154.8842\\-223.6953\\3\\154.025\\-227.6016\\3\\153.3874\\-229.5547\\3\\152.5558\\-231.5078\\3\\151.8642\\-233.4609\\3\\150.7954\\-235.4141\\3\\150.0964\\-237.3672\\3\\148.9886\\-239.3203\\3\\148.1355\\-241.2734\\3\\145.5634\\-245.1797\\3\\143.5547\\-248.1508\\3\\141.6016\\-250.6538\\3\\139.6484\\-252.9494\\3\\137.6953\\-255.1039\\3\\134.037\\-258.8516\\3\\131.8359\\-260.9714\\3\\129.7815\\-262.7578\\3\\124.0234\\-267.6279\\3\\122.0703\\-269.2018\\3\\118.1641\\-271.8417\\3\\116.2109\\-273.4254\\3\\114.2578\\-274.8021\\3\\112.3047\\-275.7677\\3\\110.3516\\-277.0488\\3\\108.3984\\-277.988\\3\\106.4453\\-279.2352\\3\\104.4551\\-280.3359\\3\\102.5391\\-281.2761\\3\\100.5859\\-282.058\\3\\98.63281\\-283.0122\\3\\96.67969\\-283.5685\\3\\94.72656\\-284.5699\\3\\90.82031\\-285.8167\\3\\88.86719\\-286.6381\\3\\84.96094\\-287.5327\\3\\81.05469\\-288.6201\\3\\79.10156\\-288.9162\\3\\73.24219\\-289.4689\\3\\67.38281\\-290.0616\\3\\65.42969\\-290.3039\\3\\61.52344\\-290.6572\\3\\53.71094\\-291.1258\\3\\49.80469\\-291.4958\\3\\47.85156\\-291.8931\\3\\45.89844\\-292.4115\\3\\40.03906\\-293.3776\\3\\36.13281\\-294.4227\\3\\28.32031\\-295.5367\\3\\26.36719\\-296.0763\\3\\24.41406\\-296.511\\3\\22.46094\\-296.773\\3\\18.55469\\-297.1803\\3\\16.60156\\-297.4541\\3\\14.64844\\-297.8438\\3\\12.69531\\-298.3579\\3\\10.74219\\-298.553\\3\\4.882813\\-298.9607\\3\\2.929688\\-299.0368\\3\\0.9765625\\-299.7176\\3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "298"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "128"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-298.1846\\5\\-22.46094\\-297.4381\\5\\-26.36719\\-297.0043\\5\\-30.27344\\-296.6405\\5\\-32.22656\\-296.3556\\5\\-36.13281\\-295.5853\\5\\-38.08594\\-295.3203\\5\\-45.89844\\-294.6648\\5\\-49.80469\\-294.1975\\5\\-53.71094\\-293.5225\\5\\-57.61719\\-293.0265\\5\\-58.87988\\-292.0547\\5\\-59.57031\\-291.0954\\5\\-60.4968\\-292.0547\\5\\-61.52344\\-292.6902\\5\\-63.47656\\-292.7515\\5\\-67.38281\\-292.5684\\5\\-71.28906\\-292.2291\\5\\-73.24219\\-291.9299\\5\\-83.00781\\-290.7686\\5\\-84.96094\\-290.3758\\5\\-86.91406\\-289.7123\\5\\-90.82031\\-288.9846\\5\\-92.77344\\-288.4572\\5\\-94.72656\\-287.6059\\5\\-96.67969\\-287.0025\\5\\-98.4933\\-286.1953\\5\\-102.5069\\-284.2422\\5\\-108.3984\\-281.2942\\5\\-110.3516\\-280.0663\\5\\-112.3047\\-278.9382\\5\\-114.2578\\-277.5432\\5\\-118.1641\\-275.2041\\5\\-121.75\\-272.5234\\5\\-122.0703\\-272.2201\\5\\-125.9766\\-269.3195\\5\\-127.9297\\-267.6472\\5\\-134.8599\\-260.8047\\5\\-136.5746\\-258.8516\\5\\-139.8409\\-254.9453\\5\\-141.1393\\-252.9922\\5\\-142.5529\\-251.0391\\5\\-143.7934\\-249.0859\\5\\-144.8629\\-247.1328\\5\\-146.2301\\-245.1797\\5\\-148.3839\\-241.2734\\5\\-149.1153\\-239.3203\\5\\-150.1081\\-237.3672\\5\\-150.674\\-235.4141\\5\\-151.6621\\-233.4609\\5\\-152.9815\\-229.5547\\5\\-153.8056\\-227.6016\\5\\-154.7688\\-223.6953\\5\\-155.5678\\-221.7422\\5\\-156.0438\\-219.7891\\5\\-156.6481\\-215.8828\\5\\-157.401\\-213.9297\\5\\-157.8653\\-211.9766\\5\\-158.1596\\-210.0234\\5\\-159.052\\-206.1172\\5\\-159.1873\\-204.1641\\5\\-159.4837\\-202.2109\\5\\-159.8045\\-198.3047\\5\\-160.0231\\-192.4453\\5\\-160.0132\\-188.5391\\5\\-160.0625\\-184.6328\\5\\-160.0472\\-180.7266\\5\\-159.9459\\-176.8203\\5\\-159.7259\\-172.9141\\5\\-159.5365\\-170.9609\\5\\-158.4699\\-165.1016\\5\\-157.9627\\-161.1953\\5\\-157.5936\\-159.2422\\5\\-156.9734\\-157.2891\\5\\-156.503\\-155.3359\\5\\-155.9139\\-151.4297\\5\\-155.3587\\-149.4766\\5\\-154.6583\\-147.5234\\5\\-154.184\\-145.5703\\5\\-153.606\\-143.6172\\5\\-152.7261\\-141.6641\\5\\-152.0719\\-139.7109\\5\\-151.1378\\-137.7578\\5\\-150.4187\\-135.8047\\5\\-149.8227\\-133.8516\\5\\-148.8857\\-131.8984\\5\\-148.2648\\-129.9453\\5\\-146.5018\\-126.0391\\5\\-145.6718\\-124.0859\\5\\-144.6195\\-122.1328\\5\\-142.6971\\-118.2266\\5\\-141.932\\-116.2734\\5\\-141.6016\\-115.8426\\5\\-137.6953\\-109.2333\\5\\-137.1094\\-108.4609\\5\\-136.2089\\-106.5078\\5\\-133.7891\\-102.882\\5\\-132.0216\\-100.6484\\5\\-130.3861\\-98.69531\\5\\-127.9297\\-96.0365\\5\\-125.9766\\-94.32728\\5\\-124.0234\\-93.01122\\5\\-122.0703\\-91.58884\\5\\-120.1172\\-89.94505\\5\\-118.1641\\-88.60162\\5\\-116.2109\\-87.61564\\5\\-112.3047\\-85.30613\\5\\-108.3984\\-83.74213\\5\\-106.4453\\-82.77042\\5\\-104.4922\\-82.09375\\5\\-102.5391\\-81.63006\\5\\-100.5859\\-80.83924\\5\\-96.67969\\-79.8569\\5\\-94.72656\\-79.06932\\5\\-92.77344\\-78.52283\\5\\-90.82031\\-77.83109\\5\\-88.86719\\-77.42712\\5\\-84.96094\\-76.29627\\5\\-81.05469\\-75.85026\\5\\-79.10156\\-75.46381\\5\\-77.14844\\-74.71613\\5\\-73.24219\\-74.33038\\5\\-71.28906\\-73.9919\\5\\-69.33594\\-73.16925\\5\\-67.38281\\-73.03416\\5\\-65.42969\\-72.79101\\5\\-61.52344\\-72.74275\\5\\-53.71094\\-72.79937\\5\\-51.75781\\-72.77455\\5\\-45.89844\\-72.84272\\5\\-43.94531\\-73.97651\\5\\-41.99219\\-74.28125\\5\\-38.08594\\-74.43246\\5\\-36.13281\\-74.63199\\5\\-34.17969\\-75.02181\\5\\-32.22656\\-75.73967\\5\\-28.32031\\-76.22842\\5\\-26.36719\\-76.61623\\5\\-24.41406\\-77.29357\\5\\-20.50781\\-78.47928\\5\\-18.55469\\-79.35186\\5\\-14.64844\\-80.6947\\5\\-12.69531\\-81.73006\\5\\-10.74219\\-82.49545\\5\\-6.835938\\-85.21061\\5\\-4.882813\\-86.40012\\5\\-2.929688\\-87.73402\\5\\-0.9765625\\-88.64292\\5\\0.9765625\\-89.32705\\5\\4.882813\\-87.67609\\5\\8.268838\\-85.02344\\5\\11.08502\\-83.07031\\5\\14.64844\\-80.91119\\5\\16.60156\\-80.15727\\5\\18.55469\\-79.06932\\5\\24.41406\\-76.43599\\5\\28.32031\\-75.65793\\5\\30.27344\\-74.76597\\5\\32.22656\\-74.48286\\5\\36.13281\\-74.12548\\5\\38.08594\\-72.79101\\5\\43.94531\\-72.68324\\5\\45.89844\\-72.515\\5\\47.85156\\-72.62373\\5\\49.80469\\-72.60942\\5\\53.71094\\-72.4502\\5\\55.66406\\-72.64184\\5\\65.42969\\-72.73502\\5\\69.33594\\-72.85171\\5\\71.28906\\-73.74136\\5\\73.24219\\-74.25218\\5\\75.19531\\-74.34675\\5\\79.10156\\-74.65424\\5\\81.05469\\-74.97765\\5\\83.00781\\-75.73967\\5\\88.86719\\-76.58186\\5\\90.82031\\-77.06233\\5\\92.77344\\-77.718\\5\\96.67969\\-78.79707\\5\\98.63281\\-79.53114\\5\\102.5391\\-80.65248\\5\\104.4922\\-81.52582\\5\\108.3984\\-82.68101\\5\\110.3516\\-83.73534\\5\\112.3047\\-84.5022\\5\\114.2578\\-85.6844\\5\\116.2109\\-86.51062\\5\\118.1641\\-87.7203\\5\\120.1172\\-88.75691\\5\\122.0703\\-90.18439\\5\\127.0085\\-94.78906\\5\\128.7898\\-96.74219\\5\\130.2807\\-98.69531\\5\\131.4438\\-100.6484\\5\\131.8359\\-101.1065\\5\\134.2353\\-104.5547\\5\\135.22\\-106.5078\\5\\136.4128\\-108.4609\\5\\137.1644\\-110.4141\\5\\138.3856\\-112.3672\\5\\139.3229\\-114.3203\\5\\140.4969\\-116.2734\\5\\142.3791\\-120.1797\\5\\142.9845\\-122.1328\\5\\144.0009\\-124.0859\\5\\144.6478\\-126.0391\\5\\145.6432\\-127.9922\\5\\147.1652\\-131.8984\\5\\148.0976\\-133.8516\\5\\148.6123\\-135.8047\\5\\149.2248\\-137.7578\\5\\150.0126\\-139.7109\\5\\150.9149\\-143.6172\\5\\151.7466\\-145.5703\\5\\152.6824\\-149.4766\\5\\153.8408\\-153.3828\\5\\154.4405\\-157.2891\\5\\155.159\\-161.1953\\5\\155.58\\-163.1484\\5\\155.8581\\-165.1016\\5\\156.1853\\-169.0078\\5\\156.5735\\-176.8203\\5\\156.8896\\-182.6797\\5\\157.0979\\-190.4922\\5\\157.1274\\-194.3984\\5\\157.2932\\-196.3516\\5\\157.4383\\-200.2578\\5\\156.9734\\-206.1172\\5\\156.9058\\-208.0703\\5\\156.6394\\-210.0234\\5\\155.9966\\-217.8359\\5\\155.7247\\-219.7891\\5\\154.6043\\-223.6953\\5\\153.7845\\-227.6016\\5\\152.9442\\-229.5547\\5\\152.2854\\-231.5078\\5\\151.4486\\-233.4609\\5\\150.4959\\-235.4141\\5\\149.7634\\-237.3672\\5\\148.6769\\-239.3203\\5\\147.7794\\-241.2734\\5\\146.4722\\-243.2266\\5\\145.0361\\-245.1797\\5\\143.9141\\-247.1328\\5\\142.4544\\-249.0859\\5\\140.8578\\-251.0391\\5\\139.0169\\-252.9922\\5\\137.6953\\-254.5171\\5\\135.4274\\-256.8984\\5\\131.8359\\-260.3634\\5\\129.2234\\-262.7578\\5\\127.9297\\-263.7806\\5\\124.0234\\-267.2211\\5\\122.0703\\-268.7544\\5\\120.1172\\-269.9128\\5\\116.2109\\-272.9778\\5\\112.3047\\-275.4405\\5\\110.3516\\-276.5758\\5\\108.3984\\-277.5483\\5\\106.4453\\-278.7923\\5\\104.4922\\-279.7423\\5\\102.5391\\-280.9257\\5\\100.5859\\-281.6023\\5\\98.63281\\-282.6024\\5\\94.72656\\-283.912\\5\\92.77344\\-284.8304\\5\\90.82031\\-285.3669\\5\\86.91406\\-286.7789\\5\\83.00781\\-287.5751\\5\\79.10156\\-288.5892\\5\\77.14844\\-288.8762\\5\\73.24219\\-289.2069\\5\\67.38281\\-289.5846\\5\\63.47656\\-289.9862\\5\\61.52344\\-290.3039\\5\\57.61719\\-290.7186\\5\\53.71094\\-291.0171\\5\\49.80469\\-291.445\\5\\47.85156\\-291.8677\\5\\45.89844\\-292.4217\\5\\41.99219\\-293.0808\\5\\40.03906\\-293.4778\\5\\36.13281\\-294.5421\\5\\30.27344\\-295.3498\\5\\28.32031\\-295.7597\\5\\26.36719\\-296.3204\\5\\24.41406\\-296.6737\\5\\18.55469\\-297.3449\\5\\14.64844\\-298.1846\\5\\12.69531\\-298.5388\\5\\10.74219\\-298.7174\\5\\4.882813\\-299.1188\\5\\2.929688\\-299.1996\\5\\-0.9765625\\-299.5932\\5\\-2.929688\\-299.273\\5\\-6.835938\\-299.1814\\5\\-10.74219\\-298.9198\\5\\-16.60156\\-298.4194\\5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "294"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "129"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-297.6089\\7\\-26.36719\\-297.0837\\7\\-30.27344\\-296.7368\\7\\-32.22656\\-296.4897\\7\\-34.17969\\-296.1324\\7\\-36.13281\\-295.6708\\7\\-38.08594\\-295.375\\7\\-45.89844\\-294.6844\\7\\-49.80469\\-294.1575\\7\\-51.75781\\-293.7354\\7\\-53.71094\\-293.4264\\7\\-57.61719\\-292.9735\\7\\-59.22515\\-292.0547\\7\\-59.57031\\-291.6147\\7\\-60.1423\\-292.0547\\7\\-61.52344\\-292.6009\\7\\-63.47656\\-292.56\\7\\-67.38281\\-292.2541\\7\\-71.28906\\-291.7204\\7\\-79.10156\\-290.9745\\7\\-81.05469\\-290.7579\\7\\-83.00781\\-290.3758\\7\\-84.96094\\-289.7622\\7\\-86.91406\\-289.3691\\7\\-88.86719\\-289.0952\\7\\-90.82031\\-288.6961\\7\\-92.77344\\-287.9355\\7\\-96.67969\\-286.6523\\7\\-98.63281\\-285.5975\\7\\-100.5859\\-284.8581\\7\\-102.5391\\-283.6982\\7\\-104.4922\\-282.9593\\7\\-106.4453\\-281.8109\\7\\-108.3984\\-280.9849\\7\\-110.3516\\-279.6331\\7\\-115.5384\\-276.4297\\7\\-116.2109\\-275.9168\\7\\-118.1641\\-274.8336\\7\\-120.1172\\-273.4168\\7\\-124.0234\\-270.237\\7\\-125.9766\\-268.9102\\7\\-127.9297\\-267.3039\\7\\-133.7891\\-261.6208\\7\\-136.3012\\-258.8516\\7\\-137.6953\\-257.0017\\7\\-139.6484\\-254.6067\\7\\-142.3276\\-251.0391\\7\\-143.4026\\-249.0859\\7\\-144.599\\-247.1328\\7\\-145.944\\-245.1797\\7\\-146.976\\-243.2266\\7\\-148.1827\\-241.2734\\7\\-148.8532\\-239.3203\\7\\-149.889\\-237.3672\\7\\-150.4706\\-235.4141\\7\\-152.1196\\-231.5078\\7\\-152.6978\\-229.5547\\7\\-153.5457\\-227.6016\\7\\-154.1093\\-225.6484\\7\\-154.5561\\-223.6953\\7\\-155.2734\\-221.7214\\7\\-155.8709\\-219.7891\\7\\-156.4651\\-215.8828\\7\\-157.6796\\-211.9766\\7\\-158.0068\\-210.0234\\7\\-158.4499\\-206.1172\\7\\-159.3413\\-200.2578\\7\\-159.7016\\-196.3516\\7\\-159.853\\-192.4453\\7\\-159.815\\-188.5391\\7\\-159.8699\\-184.6328\\7\\-159.8007\\-178.7734\\7\\-159.6144\\-174.8672\\7\\-159.4272\\-172.9141\\7\\-158.7463\\-169.0078\\7\\-158.0108\\-163.1484\\7\\-157.7148\\-161.1953\\7\\-156.6308\\-157.2891\\7\\-156.0608\\-153.3828\\7\\-155.6571\\-151.4297\\7\\-154.9573\\-149.4766\\7\\-153.9343\\-145.5703\\7\\-153.1264\\-143.6172\\7\\-151.7937\\-139.7109\\7\\-150.7813\\-137.7578\\7\\-150.2337\\-135.8047\\7\\-148.649\\-131.8984\\7\\-148.0358\\-129.9453\\7\\-147.0025\\-127.9922\\7\\-146.2271\\-126.0391\\7\\-145.2421\\-124.0859\\7\\-144.3859\\-122.1328\\7\\-143.2594\\-120.1797\\7\\-142.5159\\-118.2266\\7\\-140.4584\\-114.3203\\7\\-139.1537\\-112.3672\\7\\-138.1778\\-110.4141\\7\\-136.8752\\-108.4609\\7\\-135.9233\\-106.5078\\7\\-134.7852\\-104.5547\\7\\-133.7891\\-103.2086\\7\\-131.5487\\-100.6484\\7\\-130.007\\-98.69531\\7\\-127.9297\\-96.33529\\7\\-125.9766\\-94.71264\\7\\-124.0234\\-93.34258\\7\\-123.4524\\-92.83594\\7\\-120.1172\\-90.22539\\7\\-118.1292\\-88.92969\\7\\-116.2109\\-87.81071\\7\\-114.2578\\-86.56855\\7\\-106.4453\\-83.09514\\7\\-104.4922\\-82.19691\\7\\-102.5391\\-81.84799\\7\\-100.5859\\-80.93458\\7\\-96.67969\\-79.86359\\7\\-94.72656\\-79.15643\\7\\-90.82031\\-78.04508\\7\\-86.91406\\-77.04456\\7\\-84.96094\\-76.4283\\7\\-83.00781\\-76.1309\\7\\-81.05469\\-75.94901\\7\\-79.10156\\-75.66936\\7\\-77.14844\\-74.97059\\7\\-75.19531\\-74.62341\\7\\-73.24219\\-74.39466\\7\\-71.28906\\-74.29933\\7\\-67.38281\\-73.80084\\7\\-65.42969\\-72.80784\\7\\-59.57031\\-72.78273\\7\\-55.66406\\-72.82507\\7\\-51.75781\\-72.79101\\7\\-45.89844\\-72.84272\\7\\-43.94531\\-73.97212\\7\\-41.99219\\-74.26381\\7\\-38.08594\\-74.45247\\7\\-36.13281\\-74.64658\\7\\-34.17969\\-75.01781\\7\\-32.22656\\-75.7558\\7\\-28.32031\\-76.20981\\7\\-26.36719\\-76.63151\\7\\-24.41406\\-77.32108\\7\\-20.50781\\-78.47576\\7\\-18.55469\\-79.33684\\7\\-14.64844\\-80.63901\\7\\-12.69531\\-81.67424\\7\\-10.74219\\-82.45744\\7\\-8.789063\\-83.84263\\7\\-6.835938\\-85.08237\\7\\-2.929688\\-87.40654\\7\\0.9765625\\-89.15394\\7\\4.882813\\-87.59297\\7\\8.129223\\-85.02344\\7\\11.00756\\-83.07031\\7\\14.64844\\-80.91119\\7\\16.60156\\-80.16869\\7\\18.55469\\-79.09748\\7\\22.46094\\-77.37731\\7\\24.41406\\-76.466\\7\\28.32031\\-75.68211\\7\\30.27344\\-74.82132\\7\\32.22656\\-74.53181\\7\\36.13281\\-74.14944\\7\\38.08594\\-72.81641\\7\\45.89844\\-72.68324\\7\\55.66406\\-72.66914\\7\\65.42969\\-72.76647\\7\\67.38281\\-72.81641\\7\\69.33594\\-72.97916\\7\\71.28906\\-74.08723\\7\\73.24219\\-74.2989\\7\\75.19531\\-74.39722\\7\\79.10156\\-74.77315\\7\\83.00781\\-75.82027\\7\\88.86719\\-76.6628\\7\\92.77344\\-77.84001\\7\\96.67969\\-78.91658\\7\\98.63281\\-79.67214\\7\\102.5391\\-80.80614\\7\\104.4922\\-81.6553\\7\\106.4453\\-82.18095\\7\\108.3984\\-82.85094\\7\\110.3516\\-83.86413\\7\\112.3047\\-84.67607\\7\\114.2578\\-85.82399\\7\\116.2109\\-86.70058\\7\\119.8832\\-88.92969\\7\\122.0703\\-90.41747\\7\\126.7705\\-94.78906\\7\\128.5468\\-96.74219\\7\\129.9076\\-98.69531\\7\\131.1384\\-100.6484\\7\\132.6184\\-102.6016\\7\\133.8867\\-104.5547\\7\\134.9597\\-106.5078\\7\\136.1848\\-108.4609\\7\\136.9177\\-110.4141\\7\\138.1202\\-112.3672\\7\\138.9875\\-114.3203\\7\\140.2754\\-116.2734\\7\\141.0853\\-118.2266\\7\\142.1624\\-120.1797\\7\\142.7624\\-122.1328\\7\\143.6691\\-124.0859\\7\\145.1939\\-127.9922\\7\\146.1855\\-129.9453\\7\\146.8558\\-131.8984\\7\\147.8529\\-133.8516\\7\\148.9224\\-137.7578\\7\\149.7491\\-139.7109\\7\\150.2714\\-141.6641\\7\\150.6522\\-143.6172\\7\\152.0272\\-147.5234\\7\\152.9036\\-151.4297\\7\\153.5335\\-153.3828\\7\\153.9509\\-155.3359\\7\\154.8212\\-161.1953\\7\\155.5777\\-165.1016\\7\\155.9966\\-169.0078\\7\\156.33\\-174.8672\\7\\156.6345\\-184.6328\\7\\156.7351\\-190.4922\\7\\156.7576\\-194.3984\\7\\156.8671\\-196.3516\\7\\156.9752\\-200.2578\\7\\156.6139\\-206.1172\\7\\156.3078\\-211.9766\\7\\156.0043\\-215.8828\\7\\155.7717\\-217.8359\\7\\155.4021\\-219.7891\\7\\154.8491\\-221.7422\\7\\154.0067\\-225.6484\\7\\153.4424\\-227.6016\\7\\152.6293\\-229.5547\\7\\152.0126\\-231.5078\\7\\150.9487\\-233.4609\\7\\150.262\\-235.4141\\7\\148.3948\\-239.3203\\7\\146.1315\\-243.2266\\7\\144.6563\\-245.1797\\7\\142.1465\\-249.0859\\7\\140.4644\\-251.0391\\7\\138.5719\\-252.9922\\7\\137.6953\\-254.0315\\7\\134.9308\\-256.8984\\7\\133.7891\\-257.9476\\7\\129.8828\\-261.7464\\7\\123.9953\\-266.6641\\7\\121.5059\\-268.6172\\7\\120.1172\\-269.5573\\7\\118.1641\\-271.0185\\7\\113.0914\\-274.4766\\7\\112.3047\\-275.0545\\7\\110.3516\\-275.9997\\7\\108.3984\\-277.205\\7\\106.0929\\-278.3828\\7\\102.5391\\-280.4205\\7\\100.5859\\-281.2827\\7\\98.63281\\-282.0281\\7\\96.67969\\-282.9589\\7\\94.72656\\-283.4715\\7\\90.82031\\-284.9963\\7\\88.86719\\-285.5083\\7\\86.91406\\-286.2479\\7\\84.96094\\-286.8445\\7\\81.05469\\-287.5913\\7\\77.14844\\-288.4927\\7\\73.24219\\-288.9743\\7\\63.47656\\-289.566\\7\\61.52344\\-289.8236\\7\\57.61719\\-290.4733\\7\\55.66406\\-290.7332\\7\\51.75781\\-291.1397\\7\\49.80469\\-291.3984\\7\\47.85156\\-291.8293\\7\\45.89844\\-292.4217\\7\\41.99219\\-293.1314\\7\\40.03906\\-293.5662\\7\\38.08594\\-294.173\\7\\36.13281\\-294.6369\\7\\30.27344\\-295.4596\\7\\26.36719\\-296.4987\\7\\24.41406\\-296.7957\\7\\20.50781\\-297.2462\\7\\18.55469\\-297.5487\\7\\16.60156\\-298.0361\\7\\14.64844\\-298.4109\\7\\10.74219\\-298.862\\7\\4.882813\\-299.2597\\7\\0.9765625\\-299.438\\7\\-0.9765625\\-299.4778\\7\\-4.882813\\-299.4496\\7\\-6.835938\\-299.3669\\7\\-18.55469\\-298.3488\\7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "291"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "130"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-298.1846\\9\\-24.41406\\-297.4411\\9\\-26.36719\\-297.1682\\9\\-32.22656\\-296.5824\\9\\-34.17969\\-296.249\\9\\-36.13281\\-295.7895\\9\\-38.08594\\-295.4405\\9\\-45.89844\\-294.692\\9\\-49.80469\\-294.1033\\9\\-51.75781\\-293.659\\9\\-53.71094\\-293.3371\\9\\-57.61719\\-292.9062\\9\\-59.57031\\-292.5714\\9\\-61.52344\\-292.5255\\9\\-63.47656\\-292.3365\\9\\-67.38281\\-291.7956\\9\\-71.28906\\-291.3836\\9\\-75.19531\\-291.0831\\9\\-79.10156\\-290.6919\\9\\-81.05469\\-290.3642\\9\\-83.00781\\-289.795\\9\\-84.96094\\-289.4083\\9\\-88.86719\\-288.8308\\9\\-90.82031\\-288.2638\\9\\-92.77344\\-287.4994\\9\\-94.72656\\-286.9487\\9\\-100.5859\\-284.4038\\9\\-102.5391\\-283.3722\\9\\-104.4922\\-282.5901\\9\\-106.4453\\-281.4968\\9\\-108.3984\\-280.5729\\9\\-112.3047\\-277.9244\\9\\-114.2578\\-276.9147\\9\\-116.2109\\-275.5825\\9\\-120.1172\\-273.0447\\9\\-123.228\\-270.5703\\9\\-124.0234\\-269.8708\\9\\-127.9297\\-266.8382\\9\\-131.8359\\-263.1406\\9\\-134.2381\\-260.8047\\9\\-135.8643\\-258.8516\\9\\-137.3367\\-256.8984\\9\\-140.5853\\-252.9922\\9\\-142.041\\-251.0391\\9\\-143.0806\\-249.0859\\9\\-143.5547\\-248.4744\\9\\-146.6881\\-243.2266\\9\\-147.9394\\-241.2734\\9\\-148.6415\\-239.3203\\9\\-149.5895\\-237.3672\\9\\-150.905\\-233.4609\\9\\-151.8821\\-231.5078\\9\\-152.4764\\-229.5547\\9\\-153.92\\-225.6484\\9\\-154.3707\\-223.6953\\9\\-154.9432\\-221.7422\\9\\-155.6431\\-219.7891\\9\\-156.0559\\-217.8359\\9\\-156.3247\\-215.8828\\9\\-156.719\\-213.9297\\9\\-157.3882\\-211.9766\\9\\-157.8147\\-210.0234\\9\\-158.6423\\-202.2109\\9\\-159.4272\\-196.3516\\9\\-159.6505\\-192.4453\\9\\-159.5956\\-188.5391\\9\\-159.6505\\-184.6328\\9\\-159.5365\\-178.7734\\9\\-159.2173\\-174.8672\\9\\-158.6944\\-170.9609\\9\\-158.0322\\-165.1016\\9\\-157.7679\\-163.1484\\9\\-157.3486\\-161.1953\\9\\-156.7612\\-159.2422\\9\\-156.4234\\-157.2891\\9\\-156.1908\\-155.3359\\9\\-155.8398\\-153.3828\\9\\-155.2975\\-151.4297\\9\\-154.6492\\-149.4766\\9\\-154.1964\\-147.5234\\9\\-153.6436\\-145.5703\\9\\-152.7462\\-143.6172\\9\\-152.1827\\-141.6641\\9\\-150.5228\\-137.7578\\9\\-150.0338\\-135.8047\\9\\-149.1255\\-133.8516\\9\\-147.7409\\-129.9453\\9\\-146.7066\\-127.9922\\9\\-145.9383\\-126.0391\\9\\-144.8927\\-124.0859\\9\\-144.1048\\-122.1328\\9\\-142.9879\\-120.1797\\9\\-142.3276\\-118.2266\\9\\-141.1393\\-116.2734\\9\\-140.2109\\-114.3203\\9\\-138.8941\\-112.3672\\9\\-137.8823\\-110.4141\\9\\-136.6882\\-108.4609\\9\\-134.6444\\-104.5547\\9\\-133.0809\\-102.6016\\9\\-131.2275\\-100.6484\\9\\-127.9208\\-96.74219\\9\\-123.1921\\-92.83594\\9\\-120.1172\\-90.5166\\9\\-114.2578\\-86.76202\\9\\-112.3047\\-86.04168\\9\\-110.337\\-85.02344\\9\\-108.3984\\-84.12769\\9\\-106.4453\\-83.37364\\9\\-104.4922\\-82.43555\\9\\-102.5391\\-81.97327\\9\\-100.5859\\-81.34375\\9\\-98.63281\\-80.56009\\9\\-94.11621\\-79.16406\\9\\-86.91406\\-77.23495\\9\\-84.96094\\-76.63449\\9\\-83.00781\\-76.20139\\9\\-79.10156\\-75.82422\\9\\-77.14844\\-75.39169\\9\\-75.19531\\-74.73254\\9\\-73.24219\\-74.4858\\9\\-67.38281\\-74.17618\\9\\-65.42969\\-73.11768\\9\\-63.47656\\-72.81641\\9\\-59.57031\\-72.79937\\9\\-57.61719\\-72.85171\\9\\-51.75781\\-72.79937\\9\\-45.89844\\-72.87931\\9\\-43.94531\\-73.98131\\9\\-41.99219\\-74.25218\\9\\-38.08594\\-74.48042\\9\\-36.13281\\-74.69054\\9\\-34.17969\\-75.06419\\9\\-32.22656\\-75.7946\\9\\-28.32031\\-76.24055\\9\\-26.36719\\-76.67647\\9\\-24.41406\\-77.39045\\9\\-20.50781\\-78.49526\\9\\-18.55469\\-79.31017\\9\\-14.64844\\-80.5863\\9\\-12.69531\\-81.61244\\9\\-10.74219\\-82.41263\\9\\-8.789063\\-83.79631\\9\\-6.835938\\-84.90137\\9\\-4.882813\\-86.14379\\9\\-2.997504\\-86.97656\\9\\-0.9765625\\-88.0566\\9\\0.9765625\\-88.7328\\9\\2.929688\\-88.26293\\9\\4.882813\\-87.53561\\9\\8.06536\\-85.02344\\9\\10.96755\\-83.07031\\9\\14.64844\\-80.91119\\9\\16.60156\\-80.17991\\9\\20.50781\\-78.23428\\9\\22.46094\\-77.44278\\9\\24.41406\\-76.50705\\9\\28.32031\\-75.70291\\9\\30.27344\\-74.85967\\9\\32.22656\\-74.5612\\9\\36.13281\\-74.19839\\9\\38.08594\\-73.16925\\9\\40.03906\\-72.79101\\9\\41.99219\\-72.75057\\9\\51.75781\\-72.6904\\9\\55.66406\\-72.69763\\9\\65.42969\\-72.79101\\9\\67.38281\\-72.88874\\9\\69.33594\\-73.68353\\9\\71.28906\\-74.2636\\9\\75.19531\\-74.47783\\9\\79.10156\\-74.9375\\9\\81.05469\\-75.61976\\9\\86.91406\\-76.44279\\9\\88.86719\\-76.81113\\9\\96.67969\\-79.06932\\9\\98.63281\\-79.80011\\9\\100.5859\\-80.35829\\9\\102.5391\\-81.01481\\9\\104.4922\\-81.78303\\9\\106.4453\\-82.28789\\9\\108.3554\\-83.07031\\9\\112.4657\\-85.02344\\9\\118.1641\\-88.00352\\9\\122.0703\\-90.67609\\9\\125.9766\\-94.26774\\9\\128.2722\\-96.74219\\9\\129.5111\\-98.69531\\9\\132.3425\\-102.6016\\9\\133.4612\\-104.5547\\9\\135.9063\\-108.4609\\9\\136.7364\\-110.4141\\9\\138.7432\\-114.3203\\9\\139.9972\\-116.2734\\9\\140.8237\\-118.2266\\9\\141.896\\-120.1797\\9\\143.283\\-124.0859\\9\\144.2654\\-126.0391\\9\\144.8952\\-127.9922\\9\\145.9263\\-129.9453\\9\\146.5996\\-131.8984\\9\\147.4994\\-133.8516\\9\\148.2244\\-135.8047\\9\\148.7021\\-137.7578\\9\\150.0835\\-141.6641\\9\\150.4568\\-143.6172\\9\\150.9487\\-145.5703\\9\\151.7566\\-147.5234\\9\\152.6027\\-151.4297\\9\\153.6997\\-155.3359\\9\\154.021\\-157.2891\\9\\154.8283\\-163.1484\\9\\155.5266\\-167.0547\\9\\155.9433\\-170.9609\\9\\156.1853\\-174.8672\\9\\156.3071\\-178.7734\\9\\156.497\\-188.5391\\9\\156.5232\\-194.3984\\9\\156.5975\\-196.3516\\9\\156.5695\\-202.2109\\9\\156.3414\\-208.0703\\9\\156.1435\\-211.9766\\9\\155.7912\\-215.8828\\9\\155.4732\\-217.8359\\9\\154.5837\\-221.7422\\9\\153.7564\\-225.6484\\9\\152.9838\\-227.6016\\9\\151.6773\\-231.5078\\9\\150.6245\\-233.4609\\9\\150.0077\\-235.4141\\9\\148.9223\\-237.3672\\9\\148.1014\\-239.3203\\9\\145.6914\\-243.2266\\9\\143.5547\\-246.2921\\9\\142.9014\\-247.1328\\9\\141.66\\-249.0859\\9\\139.9891\\-251.0391\\9\\137.6953\\-253.5406\\9\\134.4763\\-256.8984\\9\\133.7891\\-257.5048\\9\\129.8828\\-261.3152\\9\\127.9297\\-262.9826\\9\\125.9766\\-264.3579\\9\\122.0703\\-267.6938\\9\\120.1172\\-269.235\\9\\118.1641\\-270.3577\\9\\114.2578\\-273.2823\\9\\112.3047\\-274.4848\\9\\110.3516\\-275.5825\\9\\108.3984\\-276.7854\\9\\106.4453\\-277.6266\\9\\104.4922\\-278.8871\\9\\102.5391\\-279.7898\\9\\100.5859\\-280.9144\\9\\98.63281\\-281.5852\\9\\96.67969\\-282.5069\\9\\94.72656\\-283.1668\\9\\92.77344\\-283.6436\\9\\90.82031\\-284.5279\\9\\86.91406\\-285.6058\\9\\84.96094\\-286.3722\\9\\83.00781\\-286.8558\\9\\79.10156\\-287.5118\\9\\75.19531\\-288.3348\\9\\73.24219\\-288.6565\\9\\69.33594\\-288.9915\\9\\63.47656\\-289.3355\\9\\59.57031\\-289.7311\\9\\55.66406\\-290.5509\\9\\49.80469\\-291.344\\9\\47.85156\\-291.7598\\9\\45.89844\\-292.4217\\9\\41.99219\\-293.1729\\9\\40.03906\\-293.6288\\9\\38.08594\\-294.2878\\9\\36.13281\\-294.7121\\9\\32.22656\\-295.2423\\9\\30.27344\\-295.5827\\9\\28.32031\\-296.1996\\9\\26.36719\\-296.6331\\9\\20.50781\\-297.3809\\9\\16.60156\\-298.2709\\9\\12.69531\\-298.8084\\9\\10.74219\\-298.9898\\9\\4.882813\\-299.4066\\9\\0.9765625\\-299.6127\\9\\-2.929688\\-299.6704\\9\\-4.882813\\-299.6462\\9\\-6.835938\\-299.5198\\9\\-12.69531\\-298.9397\\9\\-18.55469\\-298.4682\\9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "295"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "131"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-24.41406\\-297.5325\\11\\-26.36719\\-297.25\\11\\-32.22656\\-296.6479\\11\\-34.17969\\-296.3422\\11\\-38.08594\\-295.4825\\11\\-40.03906\\-295.2468\\11\\-45.89844\\-294.6844\\11\\-47.85156\\-294.4126\\11\\-51.75781\\-293.5771\\11\\-55.66406\\-293.0122\\11\\-59.57031\\-292.6009\\11\\-65.42969\\-291.6956\\11\\-69.33594\\-291.3055\\11\\-75.19531\\-290.8429\\11\\-77.14844\\-290.6073\\11\\-79.10156\\-290.2655\\11\\-81.05469\\-289.7737\\11\\-83.00781\\-289.4161\\11\\-86.91406\\-288.9114\\11\\-88.86719\\-288.455\\11\\-90.82031\\-287.7166\\11\\-94.72656\\-286.5797\\11\\-96.67969\\-285.5939\\11\\-98.63281\\-284.8914\\11\\-100.5859\\-283.8044\\11\\-102.5391\\-283.1029\\11\\-104.4922\\-282.0831\\11\\-106.4453\\-281.2047\\11\\-108.3984\\-280.022\\11\\-110.3516\\-278.9472\\11\\-112.3047\\-277.5551\\11\\-116.2109\\-275.2925\\11\\-120.1172\\-272.5311\\11\\-122.7572\\-270.5703\\11\\-125.9766\\-267.9683\\11\\-127.5068\\-266.6641\\11\\-133.7891\\-260.7785\\11\\-137.0089\\-256.8984\\11\\-137.6953\\-256.1641\\11\\-140.2858\\-252.9922\\11\\-141.6585\\-251.0391\\11\\-142.806\\-249.0859\\11\\-144.1323\\-247.1328\\11\\-145.1239\\-245.1797\\11\\-146.4442\\-243.2266\\11\\-147.6163\\-241.2734\\11\\-149.2097\\-237.3672\\11\\-150.1116\\-235.4141\\11\\-150.6449\\-233.4609\\11\\-151.568\\-231.5078\\11\\-152.2714\\-229.5547\\11\\-152.8444\\-227.6016\\11\\-153.6944\\-225.6484\\11\\-154.6662\\-221.7422\\11\\-155.3286\\-219.7891\\11\\-155.8709\\-217.8359\\11\\-156.4605\\-213.9297\\11\\-156.8964\\-211.9766\\11\\-157.4623\\-210.0234\\11\\-158.0363\\-206.1172\\11\\-158.5638\\-200.2578\\11\\-159.2024\\-194.3984\\11\\-159.3283\\-192.4453\\11\\-159.2882\\-188.5391\\11\\-159.3018\\-184.6328\\11\\-159.2024\\-180.7266\\11\\-159.0989\\-178.7734\\11\\-158.7779\\-174.8672\\11\\-158.0533\\-167.0547\\11\\-157.8071\\-165.1016\\11\\-157.4504\\-163.1484\\11\\-156.901\\-161.1953\\11\\-156.5222\\-159.2422\\11\\-156.009\\-155.3359\\11\\-155.5678\\-153.3828\\11\\-154.9037\\-151.4297\\11\\-153.9694\\-147.5234\\11\\-152.4599\\-143.6172\\11\\-151.9179\\-141.6641\\11\\-150.9535\\-139.7109\\11\\-149.7608\\-135.8047\\11\\-148.84\\-133.8516\\11\\-148.2458\\-131.8984\\11\\-146.4679\\-127.9922\\11\\-144.589\\-124.0859\\11\\-143.7529\\-122.1328\\11\\-142.762\\-120.1797\\11\\-142.0689\\-118.2266\\11\\-140.8472\\-116.2734\\11\\-139.9065\\-114.3203\\11\\-137.4324\\-110.4141\\11\\-136.5349\\-108.4609\\11\\-134.3559\\-104.5547\\11\\-132.8501\\-102.6016\\11\\-131.0124\\-100.6484\\11\\-127.9297\\-97.1443\\11\\-125.9766\\-95.36392\\11\\-122.9467\\-92.83594\\11\\-120.1172\\-90.78807\\11\\-116.2109\\-88.19382\\11\\-113.9109\\-86.97656\\11\\-109.9459\\-85.02344\\11\\-108.3984\\-84.32492\\11\\-106.4453\\-83.62931\\11\\-104.4922\\-82.76926\\11\\-102.5391\\-82.13814\\11\\-100.5859\\-81.74451\\11\\-98.63281\\-80.7394\\11\\-96.67969\\-80.18501\\11\\-88.86719\\-77.81451\\11\\-86.91406\\-77.3559\\11\\-83.00781\\-76.2553\\11\\-81.05469\\-76.11694\\11\\-77.14844\\-75.70596\\11\\-75.19531\\-74.85938\\11\\-73.24219\\-74.58599\\11\\-71.28906\\-74.43443\\11\\-67.38281\\-74.25184\\11\\-65.42969\\-74.00809\\11\\-63.47656\\-73.1431\\11\\-61.52344\\-72.81641\\11\\-55.66406\\-72.86079\\11\\-51.75781\\-72.81641\\11\\-47.85156\\-72.87\\11\\-45.89844\\-73.1431\\11\\-43.94531\\-74.08977\\11\\-38.08594\\-74.50912\\11\\-36.13281\\-74.72581\\11\\-34.17969\\-75.19678\\11\\-32.22656\\-75.83487\\11\\-28.32031\\-76.31274\\11\\-26.36719\\-76.7597\\11\\-24.41406\\-77.47915\\11\\-20.50781\\-78.49904\\11\\-18.55469\\-79.28032\\11\\-14.64844\\-80.55453\\11\\-12.69531\\-81.58791\\11\\-10.74219\\-82.36903\\11\\-8.789063\\-83.70221\\11\\-6.835938\\-84.7047\\11\\-4.882813\\-86.00626\\11\\-2.929688\\-86.86031\\11\\-0.9765625\\-88.01251\\11\\0.9765625\\-88.35649\\11\\2.929688\\-88.14193\\11\\4.882813\\-87.41639\\11\\8.047921\\-85.02344\\11\\11.01047\\-83.07031\\11\\14.64844\\-80.93893\\11\\16.60156\\-80.17991\\11\\20.50781\\-78.26307\\11\\22.46094\\-77.50459\\11\\24.41406\\-76.58361\\11\\28.32031\\-75.74286\\11\\30.27344\\-74.89641\\11\\32.22656\\-74.57818\\11\\36.13281\\-74.25218\\11\\38.08594\\-73.81906\\11\\40.03906\\-72.80784\\11\\43.94531\\-72.74275\\11\\55.66406\\-72.71235\\11\\61.52344\\-72.75057\\11\\65.42969\\-72.82507\\11\\66.95902\\-73.30469\\11\\69.33594\\-74.22894\\11\\73.24219\\-74.40257\\11\\77.14844\\-74.76235\\11\\81.05469\\-75.76814\\11\\86.91406\\-76.53766\\11\\88.86719\\-76.99924\\11\\92.77344\\-78.03056\\11\\96.40842\\-79.16406\\11\\98.63281\\-79.96362\\11\\100.5859\\-80.46821\\11\\102.5391\\-81.25\\11\\104.4922\\-81.92178\\11\\106.4453\\-82.40529\\11\\108.3984\\-83.3463\\11\\110.3516\\-84.14732\\11\\112.3047\\-85.18119\\11\\114.2578\\-86.09032\\11\\116.2109\\-87.22833\\11\\118.1641\\-88.17014\\11\\121.9076\\-90.88281\\11\\125.9766\\-94.63182\\11\\127.9297\\-96.77148\\11\\130.6912\\-100.6484\\11\\132.0103\\-102.6016\\11\\133.1279\\-104.5547\\11\\134.4758\\-106.5078\\11\\136.5784\\-110.4141\\11\\137.3819\\-112.3672\\11\\137.6953\\-112.7914\\11\\139.6484\\-116.37\\11\\141.6016\\-120.3001\\11\\142.4326\\-122.1328\\11\\142.9883\\-124.0859\\11\\144.0139\\-126.0391\\11\\144.6589\\-127.9922\\11\\145.5744\\-129.9453\\11\\147.1015\\-133.8516\\11\\148.0056\\-135.8047\\11\\149.039\\-139.7109\\11\\149.8336\\-141.6641\\11\\150.6789\\-145.5703\\11\\151.9769\\-149.4766\\11\\152.7497\\-153.3828\\11\\153.3279\\-155.3359\\11\\153.7997\\-157.2891\\11\\154.0939\\-159.2422\\11\\154.5725\\-163.1484\\11\\155.1437\\-167.0547\\11\\155.5121\\-169.0078\\11\\155.8798\\-172.9141\\11\\156.1062\\-176.8203\\11\\156.2326\\-180.7266\\11\\156.3528\\-188.5391\\11\\156.3642\\-194.3984\\11\\156.4213\\-196.3516\\11\\156.3985\\-200.2578\\11\\156.3132\\-204.1641\\11\\156.0872\\-210.0234\\11\\155.7584\\-213.9297\\11\\155.4864\\-215.8828\\11\\155.0605\\-217.8359\\11\\153.9617\\-223.6953\\11\\153.3729\\-225.6484\\11\\152.6451\\-227.6016\\11\\152.0916\\-229.5547\\11\\151.1944\\-231.5078\\11\\149.673\\-235.4141\\11\\148.6214\\-237.3672\\11\\147.7389\\-239.3203\\11\\146.5075\\-241.2734\\11\\145.13\\-243.2266\\11\\143.9986\\-245.1797\\11\\141.0991\\-249.0859\\11\\137.5868\\-252.9922\\11\\135.9743\\-254.9453\\11\\133.9674\\-256.8984\\11\\131.8359\\-258.8256\\11\\129.8183\\-260.8047\\11\\127.4889\\-262.7578\\11\\125.9766\\-263.8896\\11\\122.0703\\-267.2904\\11\\120.1172\\-268.706\\11\\118.1641\\-269.8814\\11\\117.3188\\-270.5703\\11\\114.2578\\-272.7898\\11\\112.3047\\-273.9213\\11\\110.3516\\-275.2253\\11\\108.3984\\-276.1367\\11\\106.4453\\-277.2726\\11\\104.4922\\-278.2511\\11\\100.5859\\-280.3744\\11\\98.63281\\-281.2221\\11\\96.67969\\-281.897\\11\\94.72656\\-282.8139\\11\\90.82031\\-283.8364\\11\\88.86719\\-284.6943\\11\\84.96094\\-285.6915\\11\\83.00781\\-286.3962\\11\\81.05469\\-286.8482\\11\\77.14844\\-287.4115\\11\\71.28906\\-288.4786\\11\\69.33594\\-288.7148\\11\\65.42969\\-289.0411\\11\\59.57031\\-289.4768\\11\\57.61719\\-289.7995\\11\\55.66406\\-290.3406\\11\\53.71094\\-290.7259\\11\\49.80469\\-291.2824\\11\\47.85156\\-291.7059\\11\\45.89844\\-292.4217\\11\\41.99219\\-293.2069\\11\\40.03906\\-293.7089\\11\\38.08594\\-294.3707\\11\\36.13281\\-294.7739\\11\\32.22656\\-295.3036\\11\\30.27344\\-295.7078\\11\\28.32031\\-296.3448\\11\\26.36719\\-296.7126\\11\\22.46094\\-297.1994\\11\\20.50781\\-297.5405\\11\\18.55469\\-298.0627\\11\\16.60156\\-298.4277\\11\\10.74219\\-299.11\\11\\4.882813\\-299.5641\\11\\0.9765625\\-299.7266\\11\\-2.929688\\-299.7974\\11\\-4.882813\\-299.7266\\11\\-10.74219\\-299.2363\\11\\-14.64844\\-298.8525\\11\\-18.55469\\-298.5496\\11\\-20.50781\\-298.301\\11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "296"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "132"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-24.41406\\-297.636\\13\\-28.32031\\-297.0778\\13\\-32.22656\\-296.6947\\13\\-34.17969\\-296.4171\\13\\-38.08594\\-295.5158\\13\\-40.03906\\-295.2712\\13\\-45.89844\\-294.6726\\13\\-47.85156\\-294.3683\\13\\-51.75781\\-293.4991\\13\\-53.71094\\-293.1758\\13\\-59.57031\\-292.4514\\13\\-63.47656\\-291.6853\\13\\-67.38281\\-291.2584\\13\\-73.24219\\-290.7789\\13\\-75.19531\\-290.5443\\13\\-79.10156\\-289.7014\\13\\-81.05469\\-289.4006\\13\\-84.96094\\-288.9285\\13\\-86.91406\\-288.5542\\13\\-88.86719\\-287.8788\\13\\-92.77344\\-286.8482\\13\\-98.63281\\-284.4333\\13\\-100.5859\\-283.4342\\13\\-102.5391\\-282.7942\\13\\-104.4922\\-281.6795\\13\\-106.4453\\-280.8657\\13\\-108.3984\\-279.6035\\13\\-112.3047\\-277.2625\\13\\-114.2578\\-275.9276\\13\\-116.2109\\-274.9613\\13\\-118.1641\\-273.5117\\13\\-120.1172\\-271.9627\\13\\-124.0234\\-269.2101\\13\\-127.0672\\-266.6641\\13\\-129.205\\-264.7109\\13\\-133.7891\\-260.2794\\13\\-137.6953\\-255.8211\\13\\-139.9361\\-252.9922\\13\\-141.6016\\-250.5699\\13\\-143.8427\\-247.1328\\13\\-144.8308\\-245.1797\\13\\-146.1926\\-243.2266\\13\\-148.2338\\-239.3203\\13\\-148.9292\\-237.3672\\13\\-149.8922\\-235.4141\\13\\-150.4517\\-233.4609\\13\\-151.1413\\-231.5078\\13\\-152.0453\\-229.5547\\13\\-152.5797\\-227.6016\\13\\-153.328\\-225.6484\\13\\-153.9771\\-223.6953\\13\\-154.9316\\-219.7891\\13\\-155.58\\-217.8359\\13\\-156.0043\\-215.8828\\13\\-156.5412\\-211.9766\\13\\-156.8872\\-210.0234\\13\\-157.426\\-208.0703\\13\\-157.7838\\-206.1172\\13\\-157.997\\-204.1641\\13\\-158.4642\\-198.3047\\13\\-158.8369\\-192.4453\\13\\-158.896\\-188.5391\\13\\-158.7878\\-180.7266\\13\\-158.495\\-174.8672\\13\\-158.0436\\-169.0078\\13\\-157.8547\\-167.0547\\13\\-157.5195\\-165.1016\\13\\-156.6018\\-161.1953\\13\\-156.125\\-157.2891\\13\\-155.7815\\-155.3359\\13\\-154.6121\\-151.4297\\13\\-153.6969\\-147.5234\\13\\-152.8105\\-145.5703\\13\\-151.5416\\-141.6641\\13\\-150.6662\\-139.7109\\13\\-150.1703\\-137.7578\\13\\-148.6167\\-133.8516\\13\\-148.0181\\-131.8984\\13\\-146.9727\\-129.9453\\13\\-146.2277\\-127.9922\\13\\-145.097\\-126.0391\\13\\-144.3232\\-124.0859\\13\\-143.2938\\-122.1328\\13\\-142.5413\\-120.1797\\13\\-141.6576\\-118.2266\\13\\-139.6484\\-114.5339\\13\\-138.4092\\-112.3672\\13\\-137.1251\\-110.4141\\13\\-136.3322\\-108.4609\\13\\-134.01\\-104.5547\\13\\-132.4894\\-102.6016\\13\\-129.1145\\-98.69531\\13\\-127.2364\\-96.74219\\13\\-125.9766\\-95.57994\\13\\-124.0234\\-93.94503\\13\\-122.0703\\-92.4388\\13\\-120.1172\\-91.14175\\13\\-116.2109\\-88.43056\\13\\-114.2578\\-87.62985\\13\\-112.3047\\-86.39713\\13\\-108.3984\\-84.61543\\13\\-102.5391\\-82.30302\\13\\-100.5859\\-81.86983\\13\\-98.63281\\-80.96634\\13\\-90.82031\\-78.58847\\13\\-88.86719\\-77.93304\\13\\-86.91406\\-77.48261\\13\\-83.00781\\-76.38298\\13\\-79.10156\\-76.03068\\13\\-77.14844\\-75.80392\\13\\-75.19531\\-75.16441\\13\\-73.24219\\-74.68634\\13\\-71.28906\\-74.50409\\13\\-67.38281\\-74.27537\\13\\-65.42969\\-74.22894\\13\\-63.47656\\-73.97178\\13\\-61.52344\\-72.86079\\13\\-55.66406\\-72.90796\\13\\-51.75781\\-72.85171\\13\\-47.85156\\-72.87\\13\\-43.94531\\-74.21731\\13\\-41.99219\\-74.28125\\13\\-38.08594\\-74.53369\\13\\-36.13281\\-74.73649\\13\\-34.17969\\-75.50011\\13\\-32.22656\\-75.87814\\13\\-28.32031\\-76.38508\\13\\-26.36719\\-76.82729\\13\\-24.41406\\-77.54974\\13\\-20.50781\\-78.52319\\13\\-18.55469\\-79.32182\\13\\-14.64844\\-80.53253\\13\\-12.69531\\-81.57385\\13\\-10.74219\\-82.33951\\13\\-8.789063\\-83.61068\\13\\-6.835938\\-84.58567\\13\\-4.882813\\-85.75764\\13\\-2.929688\\-86.73607\\13\\-0.9765625\\-88.08529\\13\\0.9765625\\-88.21886\\13\\2.929688\\-88.01613\\13\\4.882813\\-87.11968\\13\\6.835938\\-85.93533\\13\\8.789063\\-84.54382\\13\\12.69531\\-82.08724\\13\\14.64844\\-80.99809\\13\\16.60156\\-80.20236\\13\\20.50781\\-78.31463\\13\\22.46094\\-77.57632\\13\\24.41406\\-76.69393\\13\\26.36719\\-76.16966\\13\\28.32031\\-75.80244\\13\\30.27344\\-74.94817\\13\\32.22656\\-74.60452\\13\\36.13281\\-74.28125\\13\\38.08594\\-73.98077\\13\\40.03906\\-72.95817\\13\\41.99219\\-72.79937\\13\\43.94531\\-72.76647\\13\\51.75781\\-72.73502\\13\\59.57031\\-72.75848\\13\\63.47656\\-72.82507\\13\\65.42969\\-73.06896\\13\\67.38281\\-74.13055\\13\\73.24219\\-74.46279\\13\\75.19531\\-74.63146\\13\\77.14844\\-74.94004\\13\\79.10156\\-75.57171\\13\\81.05469\\-75.86665\\13\\86.91406\\-76.63246\\13\\90.82031\\-77.68654\\13\\92.77344\\-78.14072\\13\\94.72656\\-78.75767\\13\\98.63281\\-80.09384\\13\\100.5859\\-80.5863\\13\\102.5391\\-81.44271\\13\\106.4453\\-82.53477\\13\\108.3984\\-83.53255\\13\\110.3516\\-84.29388\\13\\112.3047\\-85.39904\\13\\114.2578\\-86.25128\\13\\116.2109\\-87.41138\\13\\118.1641\\-88.32515\\13\\121.5328\\-90.88281\\13\\123.6979\\-92.83594\\13\\125.9766\\-95.08895\\13\\127.5204\\-96.74219\\13\\129.0485\\-98.69531\\13\\130.4321\\-100.6484\\13\\133.7891\\-105.9634\\13\\134.2163\\-106.5078\\13\\135.1681\\-108.4609\\13\\136.3824\\-110.4141\\13\\137.1029\\-112.3672\\13\\138.31\\-114.3203\\13\\139.1855\\-116.2734\\13\\140.3642\\-118.2266\\13\\141.183\\-120.1797\\13\\142.2463\\-122.1328\\13\\142.804\\-124.0859\\13\\143.6834\\-126.0391\\13\\145.1509\\-129.9453\\13\\146.1457\\-131.8984\\13\\146.804\\-133.8516\\13\\147.7291\\-135.8047\\13\\148.331\\-137.7578\\13\\148.7997\\-139.7109\\13\\149.5164\\-141.6641\\13\\150.127\\-143.6172\\13\\150.9251\\-147.5234\\13\\151.6927\\-149.4766\\13\\152.1657\\-151.4297\\13\\152.5004\\-153.3828\\13\\152.9335\\-155.3359\\13\\153.5087\\-157.2891\\13\\153.8857\\-159.2422\\13\\154.1504\\-161.1953\\13\\154.8387\\-167.0547\\13\\155.1882\\-169.0078\\13\\155.6517\\-172.9141\\13\\155.9514\\-176.8203\\13\\156.0942\\-180.7266\\13\\156.2149\\-186.5859\\13\\156.2787\\-196.3516\\13\\156.25\\-200.2578\\13\\156.1553\\-204.1641\\13\\155.992\\-208.0703\\13\\155.6764\\-211.9766\\13\\155.4031\\-213.9297\\13\\154.7001\\-217.8359\\13\\154.1158\\-221.7422\\13\\153.6865\\-223.6953\\13\\152.9284\\-225.6484\\13\\151.791\\-229.5547\\13\\150.8065\\-231.5078\\13\\150.2035\\-233.4609\\13\\148.3638\\-237.3672\\13\\146.1879\\-241.2734\\13\\144.7427\\-243.2266\\13\\143.4652\\-245.1797\\13\\142.2897\\-247.1328\\13\\140.6966\\-249.0859\\13\\137.0331\\-252.9922\\13\\135.7422\\-254.5499\\13\\133.3008\\-256.8984\\13\\131.8359\\-258.2168\\13\\129.1985\\-260.8047\\13\\126.9372\\-262.7578\\13\\124.4996\\-264.7109\\13\\122.0703\\-266.7361\\13\\116.2109\\-270.9073\\13\\114.2578\\-272.0992\\13\\110.3516\\-274.7845\\13\\108.3984\\-275.6908\\13\\106.4453\\-276.8881\\13\\104.4922\\-277.6967\\13\\102.5391\\-278.9348\\13\\100.5859\\-279.7719\\13\\98.63281\\-280.8469\\13\\96.67969\\-281.4867\\13\\92.77344\\-282.9714\\13\\90.82031\\-283.4145\\13\\88.86719\\-284.0128\\13\\86.91406\\-284.8109\\13\\83.00781\\-285.7102\\13\\81.05469\\-286.3318\\13\\79.10156\\-286.7708\\13\\73.24219\\-287.6059\\13\\69.33594\\-288.3062\\13\\67.38281\\-288.5997\\13\\63.47656\\-289.0119\\13\\59.57031\\-289.3238\\13\\57.61719\\-289.5786\\13\\53.71094\\-290.6158\\13\\49.80469\\-291.2352\\13\\47.85156\\-291.6853\\13\\45.89844\\-292.4115\\13\\41.99219\\-293.2424\\13\\38.08594\\-294.4383\\13\\36.13281\\-294.8206\\13\\32.22656\\-295.3673\\13\\30.27344\\-295.8602\\13\\28.32031\\-296.4619\\13\\26.36719\\-296.7897\\13\\22.46094\\-297.2994\\13\\20.50781\\-297.7058\\13\\18.55469\\-298.2502\\13\\16.60156\\-298.5426\\13\\10.74219\\-299.1999\\13\\4.882813\\-299.6877\\13\\2.929688\\-299.798\\13\\-0.9765625\\-299.8436\\13\\-4.882813\\-299.7277\\13\\-10.74219\\-299.2779\\13\\-18.55469\\-298.6066\\13\\-20.50781\\-298.4023\\13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "288"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "133"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.9765625\\-299.9338\\15\\-4.882813\\-299.7695\\15\\-8.789063\\-299.4881\\15\\-18.55469\\-298.6709\\15\\-22.46094\\-298.1846\\15\\-26.36719\\-297.3896\\15\\-28.32031\\-297.1275\\15\\-32.22656\\-296.739\\15\\-34.17969\\-296.4772\\15\\-38.08594\\-295.5608\\15\\-40.03906\\-295.2996\\15\\-45.89844\\-294.6648\\15\\-47.85156\\-294.3333\\15\\-51.75781\\-293.423\\15\\-53.71094\\-293.1196\\15\\-57.61719\\-292.6244\\15\\-59.57031\\-292.2664\\15\\-61.52344\\-291.7729\\15\\-63.47656\\-291.4643\\15\\-71.28906\\-290.7509\\15\\-73.24219\\-290.4859\\15\\-77.14844\\-289.6595\\15\\-79.10156\\-289.3886\\15\\-83.00781\\-288.9622\\15\\-84.96094\\-288.6234\\15\\-88.86719\\-287.4006\\15\\-90.82031\\-287.0128\\15\\-92.77344\\-286.4343\\15\\-94.72656\\-285.5236\\15\\-96.67969\\-284.8839\\15\\-98.63281\\-283.8285\\15\\-100.5859\\-283.1784\\15\\-102.6503\\-282.2891\\15\\-106.4453\\-280.4199\\15\\-108.3984\\-279.268\\15\\-110.3516\\-277.922\\15\\-112.3047\\-276.9313\\15\\-114.2578\\-275.6024\\15\\-116.2109\\-274.5014\\15\\-118.1641\\-273.1598\\15\\-122.0703\\-270.0749\\15\\-124.0234\\-268.7705\\15\\-125.9766\\-267.2321\\15\\-128.8328\\-264.7109\\15\\-131.8359\\-261.8905\\15\\-134.772\\-258.8516\\15\\-138.0381\\-254.9453\\15\\-142.3533\\-249.0859\\15\\-144.5818\\-245.1797\\15\\-145.8971\\-243.2266\\15\\-146.8689\\-241.2734\\15\\-147.9907\\-239.3203\\15\\-148.6895\\-237.3672\\15\\-149.5895\\-235.4141\\15\\-150.289\\-233.4609\\15\\-150.81\\-231.5078\\15\\-151.7591\\-229.5547\\15\\-152.9208\\-225.6484\\15\\-153.7298\\-223.6953\\15\\-154.6285\\-219.7891\\15\\-155.7483\\-215.8828\\15\\-156.1062\\-213.9297\\15\\-156.5656\\-210.0234\\15\\-156.9245\\-208.0703\\15\\-157.4504\\-206.1172\\15\\-157.7679\\-204.1641\\15\\-157.9652\\-202.2109\\15\\-158.2416\\-198.3047\\15\\-158.4447\\-194.3984\\15\\-158.5749\\-190.4922\\15\\-158.586\\-188.5391\\15\\-158.5056\\-180.7266\\15\\-158.2853\\-174.8672\\15\\-157.8513\\-169.0078\\15\\-157.5834\\-167.0547\\15\\-156.6819\\-163.1484\\15\\-155.935\\-157.2891\\15\\-155.4747\\-155.3359\\15\\-154.8491\\-153.3828\\15\\-153.92\\-149.4766\\15\\-153.3203\\-147.6455\\15\\-152.5228\\-145.5703\\15\\-151.9643\\-143.6172\\15\\-151.0651\\-141.6641\\15\\-149.9449\\-137.7578\\15\\-149.0331\\-135.8047\\15\\-147.7349\\-131.8984\\15\\-146.6989\\-129.9453\\15\\-145.9343\\-127.9922\\15\\-144.7917\\-126.0391\\15\\-144.065\\-124.0859\\15\\-142.9714\\-122.1328\\15\\-142.3181\\-120.1797\\15\\-141.2421\\-118.2266\\15\\-140.3939\\-116.2734\\15\\-139.1211\\-114.3203\\15\\-138.1416\\-112.3672\\15\\-136.8764\\-110.4141\\15\\-136.0502\\-108.4609\\15\\-133.7891\\-104.7586\\15\\-129.8828\\-99.79504\\15\\-128.958\\-98.69531\\15\\-125.9766\\-95.81445\\15\\-124.0234\\-94.15466\\15\\-116.2109\\-88.66769\\15\\-114.2578\\-87.8467\\15\\-112.3047\\-86.62081\\15\\-110.3516\\-85.87399\\15\\-106.4453\\-84.0533\\15\\-104.4922\\-83.37908\\15\\-102.5391\\-82.46986\\15\\-100.5859\\-81.98319\\15\\-98.63281\\-81.32813\\15\\-96.67969\\-80.49806\\15\\-94.72656\\-80.0342\\15\\-92.19752\\-79.16406\\15\\-90.82031\\-78.80599\\15\\-88.86719\\-78.0981\\15\\-83.00781\\-76.56227\\15\\-81.05469\\-76.27218\\15\\-77.14844\\-75.89849\\15\\-75.19531\\-75.5621\\15\\-73.24219\\-74.78088\\15\\-71.28906\\-74.57758\\15\\-67.38281\\-74.31102\\15\\-63.47656\\-74.20035\\15\\-61.52344\\-72.9377\\15\\-55.66406\\-72.9686\\15\\-47.85156\\-72.84272\\15\\-43.94531\\-74.22894\\15\\-41.99219\\-74.30492\\15\\-38.08594\\-74.56807\\15\\-36.13281\\-74.78876\\15\\-34.17969\\-75.66864\\15\\-28.32031\\-76.46021\\15\\-26.36719\\-76.9389\\15\\-24.41406\\-77.60545\\15\\-20.50781\\-78.59342\\15\\-18.55469\\-79.3754\\15\\-14.64844\\-80.5416\\15\\-12.69531\\-81.56301\\15\\-10.74219\\-82.32353\\15\\-8.789063\\-83.55527\\15\\-5.872938\\-85.02344\\15\\-2.282715\\-86.97656\\15\\-0.9765625\\-87.80586\\15\\0.9765625\\-88.09354\\15\\2.929688\\-87.9158\\15\\6.835938\\-85.8922\\15\\8.789063\\-84.53516\\15\\10.74219\\-83.38876\\15\\12.69531\\-82.11962\\15\\14.64844\\-81.07616\\15\\18.55469\\-79.3836\\15\\20.50781\\-78.36293\\15\\22.46094\\-77.6414\\15\\24.41406\\-76.79057\\15\\26.36719\\-76.22253\\15\\28.32031\\-75.87044\\15\\32.22656\\-74.65525\\15\\34.17969\\-74.45027\\15\\38.08594\\-74.18539\\15\\40.03906\\-73.23811\\15\\41.99219\\-72.83385\\15\\47.85156\\-72.78273\\15\\55.66406\\-72.76647\\15\\61.52344\\-72.81641\\15\\63.47656\\-73.01172\\15\\65.42969\\-73.89632\\15\\67.38281\\-74.20568\\15\\71.28906\\-74.40409\\15\\75.19531\\-74.72707\\15\\77.14844\\-75.166\\15\\79.10156\\-75.71699\\15\\84.96094\\-76.42394\\15\\86.91406\\-76.78329\\15\\88.86719\\-77.37609\\15\\92.77344\\-78.33904\\15\\94.72656\\-78.91658\\15\\96.67969\\-79.64556\\15\\100.5859\\-80.70856\\15\\102.5391\\-81.56738\\15\\106.4453\\-82.73801\\15\\108.3984\\-83.71532\\15\\110.3516\\-84.46452\\15\\112.3047\\-85.59677\\15\\114.2578\\-86.41246\\15\\116.2109\\-87.59862\\15\\118.1641\\-88.56348\\15\\120.1172\\-89.97559\\15\\123.4345\\-92.83594\\15\\125.9766\\-95.40922\\15\\127.2022\\-96.74219\\15\\128.8099\\-98.69531\\15\\130.1058\\-100.6484\\15\\131.2406\\-102.6016\\15\\131.8359\\-103.3707\\15\\133.7891\\-106.4119\\15\\134.9253\\-108.4609\\15\\136.1314\\-110.4141\\15\\136.898\\-112.3672\\15\\138.0358\\-114.3203\\15\\138.8926\\-116.2734\\15\\140.1149\\-118.2266\\15\\140.9091\\-120.1797\\15\\142.0045\\-122.1328\\15\\143.2957\\-126.0391\\15\\144.2603\\-127.9922\\15\\144.8357\\-129.9453\\15\\145.8635\\-131.8984\\15\\146.5441\\-133.8516\\15\\148.1262\\-137.7578\\15\\149.1444\\-141.6641\\15\\149.899\\-143.6172\\15\\150.6564\\-147.5234\\15\\151.9228\\-151.4297\\15\\152.6455\\-155.3359\\15\\153.0901\\-157.2891\\15\\153.6372\\-159.2422\\15\\153.9433\\-161.1953\\15\\155.0752\\-170.9609\\15\\155.5896\\-174.8672\\15\\155.7451\\-176.8203\\15\\155.9307\\-180.7266\\15\\156.0872\\-186.5859\\15\\156.1369\\-192.4453\\15\\156.0822\\-200.2578\\15\\155.9639\\-204.1641\\15\\155.7451\\-208.0703\\15\\155.3125\\-211.9766\\15\\154.9812\\-213.9297\\15\\154.1938\\-219.7891\\15\\153.8609\\-221.7422\\15\\152.6196\\-225.6484\\15\\152.125\\-227.6016\\15\\150.5457\\-231.5078\\15\\149.9544\\-233.4609\\15\\148.8685\\-235.4141\\15\\148.0928\\-237.3672\\15\\146.8406\\-239.3203\\15\\145.8068\\-241.2734\\15\\143.5547\\-244.4909\\15\\143.0114\\-245.1797\\15\\141.8795\\-247.1328\\15\\140.324\\-249.0859\\15\\137.6953\\-251.8361\\15\\134.8842\\-254.9453\\15\\131.8359\\-257.7892\\15\\129.8828\\-259.7173\\15\\127.9297\\-261.5354\\15\\125.9766\\-263.1231\\15\\124.0234\\-264.4688\\15\\121.4371\\-266.6641\\15\\118.1641\\-269.1441\\15\\116.2109\\-270.268\\15\\112.3047\\-273.0716\\15\\110.3516\\-274.1558\\15\\108.3984\\-275.366\\15\\106.2296\\-276.4297\\15\\100.5859\\-279.3378\\15\\96.67969\\-281.1328\\15\\94.72656\\-281.6955\\15\\92.77344\\-282.5219\\15\\90.82031\\-283.1029\\15\\88.86719\\-283.5053\\15\\84.96094\\-284.8575\\15\\81.05469\\-285.6347\\15\\77.14844\\-286.6745\\15\\69.33594\\-287.7865\\15\\65.42969\\-288.5757\\15\\61.52344\\-289.0421\\15\\57.61719\\-289.4287\\15\\55.66406\\-289.8539\\15\\53.71094\\-290.5131\\15\\49.80469\\-291.21\\15\\47.85156\\-291.6777\\15\\45.89844\\-292.4012\\15\\41.99219\\-293.2727\\15\\38.08594\\-294.493\\15\\36.13281\\-294.8557\\15\\32.22656\\-295.4466\\15\\28.32031\\-296.5457\\15\\22.46094\\-297.4106\\15\\18.55469\\-298.3937\\15\\16.60156\\-298.6416\\15\\10.74219\\-299.2624\\15\\4.882813\\-299.7688\\15\\2.929688\\-299.9048\\15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "290"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "134"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.882813\\-299.9048\\17\\-6.835938\\-299.7562\\17\\-18.55469\\-298.7327\\17\\-22.46094\\-298.2911\\17\\-26.36719\\-297.46\\17\\-28.32031\\-297.179\\17\\-34.17969\\-296.5372\\17\\-36.13281\\-296.1324\\17\\-38.08594\\-295.6102\\17\\-40.03906\\-295.3203\\17\\-45.89844\\-294.645\\17\\-47.85156\\-294.3068\\17\\-49.80469\\-293.7671\\17\\-51.75781\\-293.3549\\17\\-57.61719\\-292.5167\\17\\-61.52344\\-291.5693\\17\\-63.47656\\-291.2985\\17\\-67.38281\\-290.9406\\17\\-71.28906\\-290.4834\\17\\-75.19531\\-289.6165\\17\\-81.05469\\-288.9864\\17\\-83.00781\\-288.6852\\17\\-84.96094\\-288.1722\\17\\-86.91406\\-287.5039\\17\\-90.82031\\-286.6715\\17\\-92.77344\\-285.8138\\17\\-94.72656\\-285.1828\\17\\-96.67969\\-284.4539\\17\\-98.63281\\-283.486\\17\\-100.5859\\-282.9254\\17\\-102.5391\\-281.8998\\17\\-104.4922\\-281.1037\\17\\-106.4453\\-279.923\\17\\-108.3984\\-278.928\\17\\-110.3516\\-277.5659\\17\\-114.2578\\-275.3604\\17\\-118.1641\\-272.6849\\17\\-121.0469\\-270.5703\\17\\-122.0703\\-269.7117\\17\\-125.9766\\-266.7918\\17\\-128.3906\\-264.7109\\17\\-131.8359\\-261.5596\\17\\-134.4206\\-258.8516\\17\\-136.098\\-256.8984\\17\\-137.6953\\-254.8853\\17\\-139.0788\\-252.9922\\17\\-140.6544\\-251.0391\\17\\-142.1137\\-249.0859\\17\\-143.0698\\-247.1328\\17\\-143.5547\\-246.4848\\17\\-145.5155\\-243.2266\\17\\-147.6819\\-239.3203\\17\\-149.2233\\-235.4141\\17\\-150.1073\\-233.4609\\17\\-150.5802\\-231.5078\\17\\-152.1244\\-227.6016\\17\\-152.6306\\-225.6484\\17\\-153.3869\\-223.6953\\17\\-153.9994\\-221.7422\\17\\-154.8387\\-217.8359\\17\\-155.4462\\-215.8828\\17\\-155.9182\\-213.9297\\17\\-156.1977\\-211.9766\\17\\-156.6431\\-208.0703\\17\\-157.0152\\-206.1172\\17\\-157.4857\\-204.1641\\17\\-157.7648\\-202.2109\\17\\-158.0643\\-198.3047\\17\\-158.2508\\-194.3984\\17\\-158.3775\\-188.5391\\17\\-158.3003\\-180.7266\\17\\-158.1036\\-174.8672\\17\\-157.8189\\-170.9609\\17\\-157.6036\\-169.0078\\17\\-156.7319\\-165.1016\\17\\-156.0289\\-159.2422\\17\\-155.6792\\-157.2891\\17\\-155.0737\\-155.3359\\17\\-154.5681\\-153.3828\\17\\-153.6586\\-149.4766\\17\\-152.8633\\-147.5234\\17\\-151.6732\\-143.6172\\17\\-150.7507\\-141.6641\\17\\-150.27\\-139.7109\\17\\-149.6452\\-137.7578\\17\\-148.7736\\-135.8047\\17\\-148.2191\\-133.8516\\17\\-147.4609\\-132.1077\\17\\-145.56\\-127.9922\\17\\-144.5483\\-126.0391\\17\\-143.7396\\-124.0859\\17\\-142.7378\\-122.1328\\17\\-142.0831\\-120.1797\\17\\-140.9525\\-118.2266\\17\\-140.1149\\-116.2734\\17\\-138.8307\\-114.3203\\17\\-136.6766\\-110.4141\\17\\-135.7422\\-108.522\\17\\-134.5952\\-106.5078\\17\\-133.2505\\-104.5547\\17\\-130.2517\\-100.6484\\17\\-128.5685\\-98.69531\\17\\-125.9766\\-96.14806\\17\\-124.0234\\-94.45579\\17\\-118.1641\\-90.22147\\17\\-116.1244\\-88.92969\\17\\-112.3047\\-86.90569\\17\\-108.3984\\-85.33681\\17\\-106.4453\\-84.34544\\17\\-104.4922\\-83.60237\\17\\-102.5391\\-82.68111\\17\\-98.63281\\-81.60196\\17\\-96.67969\\-80.65642\\17\\-94.72656\\-80.25986\\17\\-92.77344\\-79.49471\\17\\-90.82031\\-78.96462\\17\\-88.86719\\-78.28783\\17\\-86.91406\\-77.74424\\17\\-81.05469\\-76.395\\17\\-77.14844\\-75.99175\\17\\-75.19531\\-75.7263\\17\\-73.24219\\-74.9592\\17\\-71.28906\\-74.66064\\17\\-67.38281\\-74.3783\\17\\-63.47656\\-74.22894\\17\\-59.57031\\-73.16925\\17\\-57.61719\\-73.0456\\17\\-55.66406\\-73.19618\\17\\-53.71094\\-73.10525\\17\\-51.75781\\-72.90796\\17\\-47.85156\\-72.87\\17\\-45.89844\\-73.69698\\17\\-43.94531\\-74.25786\\17\\-40.03906\\-74.45247\\17\\-38.08594\\-74.63253\\17\\-36.13281\\-74.9567\\17\\-34.17969\\-75.73626\\17\\-28.32031\\-76.52487\\17\\-24.41406\\-77.66117\\17\\-20.50781\\-78.67578\\17\\-18.55469\\-79.42975\\17\\-14.64844\\-80.5638\\17\\-12.69531\\-81.56626\\17\\-10.74219\\-82.298\\17\\-8.789063\\-83.49461\\17\\-5.769428\\-85.02344\\17\\-2.929688\\-86.53744\\17\\-0.9765625\\-87.44982\\17\\0.9765625\\-87.95313\\17\\2.929688\\-87.81628\\17\\6.835938\\-85.85602\\17\\8.789063\\-84.53516\\17\\10.74219\\-83.43481\\17\\12.69531\\-82.17034\\17\\14.76258\\-81.11719\\17\\18.55469\\-79.45259\\17\\20.50781\\-78.4226\\17\\22.46094\\-77.72721\\17\\24.41406\\-76.85643\\17\\26.36719\\-76.27605\\17\\30.27344\\-75.54586\\17\\32.22656\\-74.73363\\17\\34.17969\\-74.51897\\17\\38.08594\\-74.26969\\17\\40.03906\\-73.90958\\17\\41.99219\\-73.06896\\17\\45.89844\\-72.84272\\17\\53.71094\\-72.79937\\17\\57.61719\\-72.83385\\17\\61.52344\\-73.02286\\17\\63.47656\\-73.4628\\17\\65.42969\\-74.21191\\17\\67.38281\\-74.26381\\17\\71.28906\\-74.48286\\17\\75.19531\\-74.84465\\17\\77.14844\\-75.38853\\17\\79.10156\\-75.82027\\17\\84.96094\\-76.52615\\17\\86.91406\\-76.96001\\17\\88.86719\\-77.5583\\17\\90.82031\\-77.97948\\17\\94.72656\\-79.11188\\17\\96.67969\\-79.82149\\17\\98.63281\\-80.28949\\17\\100.5859\\-80.85825\\17\\102.5391\\-81.72266\\17\\104.4922\\-82.24445\\17\\106.4453\\-82.98831\\17\\108.3984\\-83.90493\\17\\110.3516\\-84.69791\\17\\112.3047\\-85.77968\\17\\114.2578\\-86.5953\\17\\118.1641\\-88.85705\\17\\120.1172\\-90.18694\\17\\123.2084\\-92.83594\\17\\125.9766\\-95.68132\\17\\128.5384\\-98.69531\\17\\130.9838\\-102.6016\\17\\132.354\\-104.5547\\17\\133.4683\\-106.5078\\17\\134.7114\\-108.4609\\17\\135.7822\\-110.4141\\17\\137.6703\\-114.3203\\17\\139.7453\\-118.2266\\17\\141.6409\\-122.1328\\17\\142.4515\\-124.0859\\17\\143.0166\\-126.0391\\17\\144.0176\\-127.9922\\17\\144.6109\\-129.9453\\17\\146.3117\\-133.8516\\17\\146.9727\\-135.8047\\17\\147.8738\\-137.7578\\17\\148.8664\\-141.6641\\17\\149.5882\\-143.6172\\17\\150.1346\\-145.5703\\17\\150.8853\\-149.4766\\17\\151.6147\\-151.4297\\17\\152.0919\\-153.3828\\17\\152.7581\\-157.2891\\17\\153.7195\\-161.1953\\17\\153.9951\\-163.1484\\17\\155.0221\\-172.9141\\17\\155.2813\\-174.8672\\17\\155.6242\\-178.7734\\17\\155.8846\\-184.6328\\17\\155.9719\\-192.4453\\17\\155.8846\\-200.2578\\17\\155.7419\\-204.1641\\17\\155.457\\-208.0703\\17\\153.9695\\-219.7891\\17\\153.556\\-221.7422\\17\\152.8662\\-223.6953\\17\\151.8555\\-227.6016\\17\\150.9221\\-229.5547\\17\\150.3389\\-231.5078\\17\\149.5895\\-233.4609\\17\\148.594\\-235.4141\\17\\147.7553\\-237.3672\\17\\147.4609\\-237.7559\\17\\144.1136\\-243.2266\\17\\141.6016\\-246.7551\\17\\139.7945\\-249.0859\\17\\137.6953\\-251.3591\\17\\136.317\\-252.9922\\17\\134.4896\\-254.9453\\17\\132.3594\\-256.8984\\17\\127.9297\\-261.0738\\17\\125.9766\\-262.4929\\17\\124.0234\\-264.0124\\17\\120.1172\\-267.2798\\17\\116.2109\\-269.8227\\17\\114.2578\\-271.2424\\17\\110.3516\\-273.6843\\17\\108.3984\\-275.0183\\17\\106.4453\\-275.8024\\17\\104.4922\\-276.9701\\17\\102.5391\\-277.7505\\17\\100.5859\\-278.9266\\17\\98.63281\\-279.679\\17\\96.67969\\-280.7172\\17\\92.77344\\-281.8998\\17\\90.82031\\-282.7006\\17\\86.91406\\-283.585\\17\\83.00781\\-284.8462\\17\\79.10156\\-285.5658\\17\\75.19531\\-286.5996\\17\\69.33594\\-287.4175\\17\\67.38281\\-287.7299\\17\\63.47656\\-288.6037\\17\\61.52344\\-288.8824\\17\\57.61719\\-289.3285\\17\\55.66406\\-289.6755\\17\\53.71094\\-290.3758\\17\\51.75781\\-290.8539\\17\\49.80469\\-291.1797\\17\\47.85156\\-291.6555\\17\\45.89844\\-292.4217\\17\\41.99219\\-293.301\\17\\38.08594\\-294.5365\\17\\32.22656\\-295.5158\\17\\30.27344\\-296.1324\\17\\28.32031\\-296.6178\\17\\24.41406\\-297.1682\\17\\22.46094\\-297.5325\\17\\20.50781\\-298.1135\\17\\18.55469\\-298.4989\\17\\16.60156\\-298.7342\\17\\6.835938\\-299.7266\\17\\2.929688\\-300.0288\\17\\-0.9765625\\-300.0542\\17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "300"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "135"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.835938\\-299.8899\\19\\-16.60156\\-298.9535\\19\\-20.50781\\-298.6037\\19\\-22.46094\\-298.367\\19\\-24.41406\\-297.9948\\19\\-26.36719\\-297.5247\\19\\-28.32031\\-297.2283\\19\\-34.17969\\-296.5743\\19\\-36.13281\\-296.1996\\19\\-38.08594\\-295.6588\\19\\-40.03906\\-295.3287\\19\\-45.89844\\-294.6249\\19\\-47.85156\\-294.2705\\19\\-49.80469\\-293.7109\\19\\-51.75781\\-293.3019\\19\\-57.61719\\-292.4012\\19\\-59.57031\\-291.8309\\19\\-61.52344\\-291.4196\\19\\-63.47656\\-291.1734\\19\\-67.38281\\-290.7852\\19\\-69.33594\\-290.4934\\19\\-73.24219\\-289.6295\\19\\-75.19531\\-289.3662\\19\\-79.10156\\-288.9999\\19\\-81.05469\\-288.7331\\19\\-83.00781\\-288.2771\\19\\-84.96094\\-287.6763\\19\\-88.86719\\-286.8183\\19\\-92.77344\\-285.4066\\19\\-94.72656\\-284.8546\\19\\-96.67969\\-283.8613\\19\\-100.5859\\-282.5607\\19\\-102.5391\\-281.5519\\19\\-104.4922\\-280.7872\\19\\-106.4453\\-279.5468\\19\\-108.3984\\-278.4775\\19\\-111.7149\\-276.4297\\19\\-112.3047\\-276.0011\\19\\-114.2578\\-275.0638\\19\\-118.1641\\-272.1154\\19\\-122.0703\\-269.418\\19\\-124.0234\\-267.8584\\19\\-127.8212\\-264.7109\\19\\-131.8359\\-261.1454\\19\\-134.0296\\-258.8516\\19\\-135.7422\\-256.8697\\19\\-138.7684\\-252.9922\\19\\-140.414\\-251.0391\\19\\-141.8092\\-249.0859\\19\\-142.8192\\-247.1328\\19\\-144.158\\-245.1797\\19\\-145.1021\\-243.2266\\19\\-146.3692\\-241.2734\\19\\-148.2937\\-237.3672\\19\\-148.9224\\-235.4141\\19\\-149.8857\\-233.4609\\19\\-150.9564\\-229.5547\\19\\-151.8869\\-227.6016\\19\\-152.9926\\-223.6953\\19\\-153.7724\\-221.7422\\19\\-154.5964\\-217.8359\\19\\-155.0885\\-215.8828\\19\\-155.7007\\-213.9297\\19\\-156.0438\\-211.9766\\19\\-156.6945\\-206.1172\\19\\-157.4623\\-202.2109\\19\\-157.7234\\-200.2578\\19\\-158.0049\\-196.3516\\19\\-158.0805\\-194.3984\\19\\-158.2079\\-188.5391\\19\\-158.1699\\-182.6797\\19\\-158.0697\\-178.7734\\19\\-157.9198\\-174.8672\\19\\-157.5627\\-170.9609\\19\\-156.7874\\-167.0547\\19\\-156.5073\\-165.1016\\19\\-156.1114\\-161.1953\\19\\-155.8174\\-159.2422\\19\\-154.7625\\-155.3359\\19\\-153.935\\-151.4297\\19\\-152.5687\\-147.5234\\19\\-152.0491\\-145.5703\\19\\-150.5374\\-141.6641\\19\\-150.0835\\-139.7109\\19\\-149.2668\\-137.7578\\19\\-147.9965\\-133.8516\\19\\-146.9884\\-131.8984\\19\\-146.2185\\-129.9453\\19\\-145.1239\\-127.9922\\19\\-144.3394\\-126.0391\\19\\-143.3087\\-124.0859\\19\\-141.7757\\-120.1797\\19\\-139.7569\\-116.2734\\19\\-137.6953\\-112.7871\\19\\-137.3796\\-112.3672\\19\\-136.5122\\-110.4141\\19\\-135.3443\\-108.4609\\19\\-134.3076\\-106.5078\\19\\-131.8359\\-103.0989\\19\\-129.9079\\-100.6484\\19\\-128.1795\\-98.69531\\19\\-125.9766\\-96.48035\\19\\-123.9551\\-94.78906\\19\\-121.4164\\-92.83594\\19\\-120.1172\\-91.95407\\19\\-118.1641\\-90.44955\\19\\-116.2109\\-89.34721\\19\\-114.2578\\-88.09541\\19\\-112.3047\\-87.28694\\19\\-110.3516\\-86.29804\\19\\-108.3984\\-85.60809\\19\\-106.4453\\-84.62393\\19\\-100.5859\\-82.24496\\19\\-98.63281\\-81.77487\\19\\-96.67969\\-80.88251\\19\\-94.72656\\-80.34186\\19\\-92.77344\\-79.64133\\19\\-90.82031\\-79.1265\\19\\-86.91406\\-77.87336\\19\\-84.96094\\-77.53878\\19\\-83.00781\\-77.08887\\19\\-81.05469\\-76.5313\\19\\-75.19531\\-75.80951\\19\\-71.28906\\-74.73649\\19\\-65.42969\\-74.3355\\19\\-61.52344\\-74.20035\\19\\-57.61719\\-73.67397\\19\\-55.66406\\-73.9255\\19\\-53.71094\\-73.82301\\19\\-51.75781\\-73.09299\\19\\-49.80469\\-72.89829\\19\\-48.127\\-73.30469\\19\\-45.89844\\-74.06866\\19\\-43.94531\\-74.2872\\19\\-40.03906\\-74.50409\\19\\-38.08594\\-74.70712\\19\\-36.13281\\-75.37407\\19\\-34.17969\\-75.79107\\19\\-28.32031\\-76.56203\\19\\-24.41406\\-77.71477\\19\\-22.46094\\-78.16543\\19\\-20.50781\\-78.72017\\19\\-18.55469\\-79.48251\\19\\-14.64844\\-80.59592\\19\\-12.69531\\-81.57385\\19\\-10.74219\\-82.29033\\19\\-8.789063\\-83.43481\\19\\-5.529626\\-85.02344\\19\\-2.929688\\-86.46623\\19\\-0.9765625\\-87.29183\\19\\0.9765625\\-87.80192\\19\\2.929688\\-87.67318\\19\\6.835938\\-85.83828\\19\\8.789063\\-84.53516\\19\\10.74219\\-83.47323\\19\\12.69531\\-82.21423\\19\\16.60156\\-80.33234\\19\\18.55469\\-79.49448\\19\\20.50781\\-78.48232\\19\\22.46094\\-77.79077\\19\\24.41406\\-76.9389\\19\\26.36719\\-76.32369\\19\\30.27344\\-75.60855\\19\\32.22656\\-74.81799\\19\\34.17969\\-74.57818\\19\\38.08594\\-74.30464\\19\\40.03906\\-74.22955\\19\\43.94531\\-73.6469\\19\\45.89844\\-72.87931\\19\\53.71094\\-72.82507\\19\\57.61719\\-72.86079\\19\\59.57031\\-73.57259\\19\\61.52344\\-73.88631\\19\\63.47656\\-74.01676\\19\\65.42969\\-74.26381\\19\\67.38281\\-74.3286\\19\\71.28906\\-74.5612\\19\\75.19531\\-74.97765\\19\\77.14844\\-75.63081\\19\\79.10156\\-75.91878\\19\\83.00781\\-76.3665\\19\\84.96094\\-76.65734\\19\\88.86719\\-77.70844\\19\\90.82031\\-78.08349\\19\\92.77344\\-78.64848\\19\\96.67969\\-79.95142\\19\\98.63281\\-80.40751\\19\\100.5859\\-81.06069\\19\\102.5391\\-81.8527\\19\\104.4922\\-82.36399\\19\\108.3984\\-84.09625\\19\\112.3047\\-85.96574\\19\\114.2578\\-86.83273\\19\\117.842\\-88.92969\\19\\120.1172\\-90.43162\\19\\122.9425\\-92.83594\\19\\125.9766\\-95.98264\\19\\128.2307\\-98.69531\\19\\129.4383\\-100.6484\\19\\132.0537\\-104.5547\\19\\133.1568\\-106.5078\\19\\134.4831\\-108.4609\\19\\135.4072\\-110.4141\\19\\136.5247\\-112.3672\\19\\137.2808\\-114.3203\\19\\138.433\\-116.2734\\19\\139.305\\-118.2266\\19\\140.453\\-120.1797\\19\\141.2446\\-122.1328\\19\\142.2589\\-124.0859\\19\\142.8145\\-126.0391\\19\\143.6834\\-127.9922\\19\\144.4198\\-129.9453\\19\\145.0291\\-131.8984\\19\\146.0432\\-133.8516\\19\\146.692\\-135.8047\\19\\147.5143\\-137.7578\\19\\148.1978\\-139.7109\\19\\148.6366\\-141.6641\\19\\149.183\\-143.6172\\19\\149.9089\\-145.5703\\19\\150.6376\\-149.4766\\19\\151.1704\\-151.4297\\19\\151.8409\\-153.3828\\19\\152.8884\\-159.2422\\19\\153.4151\\-161.1953\\19\\153.7879\\-163.1484\\19\\154.4211\\-169.0078\\19\\154.7659\\-172.9141\\19\\155.3426\\-178.7734\\19\\155.6013\\-182.6797\\19\\155.735\\-186.5859\\19\\155.7912\\-190.4922\\19\\155.7815\\-194.3984\\19\\155.6627\\-200.2578\\19\\155.4717\\-204.1641\\19\\155.102\\-208.0703\\19\\154.2694\\-215.8828\\19\\153.7122\\-219.7891\\19\\152.577\\-223.6953\\19\\152.1371\\-225.6484\\19\\151.4893\\-227.6016\\19\\150.6392\\-229.5547\\19\\150.1237\\-231.5078\\19\\149.1298\\-233.4609\\19\\148.3515\\-235.4141\\19\\146.207\\-239.3203\\19\\144.8217\\-241.2734\\19\\143.6844\\-243.2266\\19\\142.4208\\-245.1797\\19\\139.6484\\-248.5755\\19\\137.4151\\-251.0391\\19\\135.7507\\-252.9922\\19\\133.7891\\-255.1134\\19\\131.8359\\-256.7743\\19\\127.5276\\-260.8047\\19\\125.0895\\-262.7578\\19\\122.7679\\-264.7109\\19\\120.1172\\-266.7473\\19\\118.1641\\-268.0259\\19\\114.2578\\-270.7973\\19\\112.3047\\-271.8784\\19\\110.3516\\-273.3108\\19\\108.3984\\-274.4847\\19\\106.4453\\-275.484\\19\\100.5859\\-278.2828\\19\\98.63281\\-279.2661\\19\\96.67969\\-280.058\\19\\94.72656\\-280.9646\\19\\92.77344\\-281.467\\19\\90.82031\\-282.0695\\19\\88.86719\\-282.8139\\19\\84.96094\\-283.5974\\19\\81.05469\\-284.7911\\19\\77.14844\\-285.5002\\19\\73.24219\\-286.4922\\19\\71.28906\\-286.8369\\19\\67.38281\\-287.403\\19\\65.42969\\-287.778\\19\\63.47656\\-288.2901\\19\\59.57031\\-289.0052\\19\\55.66406\\-289.5217\\19\\53.71094\\-290.2109\\19\\51.75781\\-290.7991\\19\\49.80469\\-291.1455\\19\\47.85156\\-291.6146\\19\\45.89844\\-292.4115\\19\\41.99219\\-293.322\\19\\38.08594\\-294.5703\\19\\32.22656\\-295.5717\\19\\30.27344\\-296.2266\\19\\28.32031\\-296.6778\\19\\24.41406\\-297.2354\\19\\22.46094\\-297.656\\19\\20.50781\\-298.2396\\19\\18.55469\\-298.5804\\19\\6.835938\\-299.8748\\19\\2.929688\\-300.1377\\19\\-0.9765625\\-300.1602\\19\\-4.882813\\-300.0288\\19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "316"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "136"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.789063\\-299.8436\\21\\-12.69531\\-299.403\\21\\-20.50781\\-298.6453\\21\\-22.46094\\-298.4194\\21\\-24.41406\\-298.0757\\21\\-26.36719\\-297.5775\\21\\-28.32031\\-297.2538\\21\\-34.17969\\-296.6022\\21\\-36.13281\\-296.2369\\21\\-38.08594\\-295.685\\21\\-40.03906\\-295.3246\\21\\-45.89844\\-294.6046\\21\\-47.85156\\-294.2225\\21\\-49.80469\\-293.6568\\21\\-51.75781\\-293.2506\\21\\-55.66406\\-292.6617\\21\\-57.61719\\-292.2417\\21\\-59.57031\\-291.6458\\21\\-61.52344\\-291.3023\\21\\-67.38281\\-290.5691\\21\\-71.28906\\-289.6727\\21\\-73.24219\\-289.3929\\21\\-77.14844\\-289.0105\\21\\-79.10156\\-288.7635\\21\\-81.05469\\-288.3744\\21\\-83.00781\\-287.7755\\21\\-86.91406\\-286.9345\\21\\-88.86719\\-286.4445\\21\\-90.82031\\-285.6212\\21\\-92.77344\\-285.0785\\21\\-94.72656\\-284.3908\\21\\-96.67969\\-283.4979\\21\\-98.63281\\-282.9714\\21\\-100.5859\\-282.0321\\21\\-102.5391\\-281.2703\\21\\-104.4551\\-280.3359\\21\\-107.8161\\-278.3828\\21\\-108.3984\\-277.942\\21\\-110.3516\\-276.9737\\21\\-112.3047\\-275.6829\\21\\-114.2578\\-274.6343\\21\\-116.2109\\-273.296\\21\\-118.1641\\-271.6872\\21\\-120.1172\\-270.2159\\21\\-122.0703\\-269.0839\\21\\-129.5776\\-262.7578\\21\\-131.8359\\-260.6221\\21\\-135.7422\\-256.4231\\21\\-137.6953\\-254.0284\\21\\-139.6484\\-251.4998\\21\\-140.106\\-251.0391\\21\\-141.6016\\-248.8196\\21\\-143.8448\\-245.1797\\21\\-144.7905\\-243.2266\\21\\-146.088\\-241.2734\\21\\-146.9727\\-239.3203\\21\\-148.0767\\-237.3672\\21\\-148.6816\\-235.4141\\21\\-149.5602\\-233.4609\\21\\-150.2337\\-231.5078\\21\\-150.6824\\-229.5547\\21\\-151.5542\\-227.6016\\21\\-152.1741\\-225.6484\\21\\-152.6827\\-223.6953\\21\\-153.4557\\-221.7422\\21\\-153.9955\\-219.7891\\21\\-154.7852\\-215.8828\\21\\-155.3879\\-213.9297\\21\\-155.8581\\-211.9766\\21\\-156.125\\-210.0234\\21\\-156.4883\\-206.1172\\21\\-157.043\\-202.2109\\21\\-157.426\\-200.2578\\21\\-157.8189\\-196.3516\\21\\-157.9097\\-194.3984\\21\\-158.0412\\-188.5391\\21\\-158.0049\\-182.6797\\21\\-157.8963\\-178.7734\\21\\-157.6885\\-174.8672\\21\\-157.4857\\-172.9141\\21\\-156.7977\\-169.0078\\21\\-156.5341\\-167.0547\\21\\-156.1607\\-163.1484\\21\\-155.9139\\-161.1953\\21\\-155.5411\\-159.2422\\21\\-154.9292\\-157.2891\\21\\-154.1249\\-153.3828\\21\\-153.6523\\-151.4297\\21\\-152.8911\\-149.4766\\21\\-151.791\\-145.5703\\21\\-150.8853\\-143.6172\\21\\-149.8336\\-139.7109\\21\\-148.9533\\-137.7578\\21\\-148.3963\\-135.8047\\21\\-147.7209\\-133.8516\\21\\-146.7172\\-131.8984\\21\\-145.9506\\-129.9453\\21\\-144.8195\\-127.9922\\21\\-144.0993\\-126.0391\\21\\-142.9938\\-124.0859\\21\\-142.3791\\-122.1328\\21\\-141.3902\\-120.1797\\21\\-140.5234\\-118.2266\\21\\-139.3345\\-116.2734\\21\\-138.3523\\-114.3203\\21\\-137.0949\\-112.3672\\21\\-136.3107\\-110.4141\\21\\-135.0579\\-108.4609\\21\\-133.9844\\-106.5078\\21\\-131.8359\\-103.5244\\21\\-129.8828\\-100.9613\\21\\-127.8869\\-98.69531\\21\\-125.9766\\-96.81796\\21\\-123.6273\\-94.78906\\21\\-121.0586\\-92.83594\\21\\-120.1172\\-92.23193\\21\\-118.1641\\-90.72134\\21\\-116.2109\\-89.60876\\21\\-114.2578\\-88.23599\\21\\-112.3047\\-87.54903\\21\\-110.3516\\-86.53146\\21\\-108.3984\\-85.82732\\21\\-106.4453\\-84.9133\\21\\-104.4922\\-84.09798\\21\\-102.5391\\-83.39584\\21\\-100.5859\\-82.4388\\21\\-98.63281\\-81.94977\\21\\-94.72656\\-80.45163\\21\\-92.77344\\-79.94146\\21\\-88.86719\\-78.72017\\21\\-86.91406\\-78.00742\\21\\-84.96094\\-77.71224\\21\\-83.00781\\-77.29486\\21\\-81.05469\\-76.72908\\21\\-79.10156\\-76.36459\\21\\-75.19531\\-75.88207\\21\\-73.24219\\-75.55222\\21\\-71.28906\\-74.83154\\21\\-69.33594\\-74.64658\\21\\-65.42969\\-74.39868\\21\\-57.61719\\-74.14087\\21\\-55.66406\\-74.21191\\21\\-53.71094\\-74.16288\\21\\-51.75781\\-73.87616\\21\\-49.80469\\-73.70016\\21\\-47.85156\\-74.08977\\21\\-45.89844\\-74.2636\\21\\-41.99219\\-74.41986\\21\\-38.08594\\-74.79242\\21\\-36.13281\\-75.60855\\21\\-30.27344\\-76.31825\\21\\-28.32031\\-76.61452\\21\\-24.41406\\-77.77155\\21\\-22.46094\\-78.2206\\21\\-20.50781\\-78.76733\\21\\-18.55469\\-79.53967\\21\\-14.64844\\-80.62891\\21\\-12.69531\\-81.59508\\21\\-10.74219\\-82.28036\\21\\-8.789063\\-83.3746\\21\\-5.234375\\-85.02344\\21\\-2.929688\\-86.33515\\21\\-0.9765625\\-87.00204\\21\\0.9765625\\-87.50349\\21\\2.929688\\-87.42894\\21\\6.835938\\-85.82803\\21\\8.789063\\-84.54382\\21\\10.74219\\-83.50213\\21\\12.69531\\-82.27247\\21\\14.64844\\-81.39729\\21\\16.60156\\-80.37866\\21\\18.55469\\-79.55032\\21\\20.50781\\-78.53627\\21\\22.46094\\-77.85595\\21\\24.41406\\-77.01417\\21\\26.36719\\-76.37302\\21\\30.27344\\-75.67921\\21\\32.22656\\-74.90625\\21\\34.17969\\-74.63636\\21\\38.08594\\-74.33484\\21\\41.99219\\-74.22346\\21\\43.94531\\-74.09464\\21\\45.89844\\-73.67711\\21\\47.85156\\-72.9686\\21\\49.80469\\-72.87\\21\\53.71094\\-72.86079\\21\\55.66406\\-73.644\\21\\57.61719\\-73.6636\\21\\59.57031\\-74.0593\\21\\61.52344\\-74.21272\\21\\65.42969\\-74.31066\\21\\69.33594\\-74.49826\\21\\73.24219\\-74.85967\\21\\77.14844\\-75.81496\\21\\83.00781\\-76.46661\\21\\84.96094\\-76.83227\\21\\86.91406\\-77.40063\\21\\90.82031\\-78.25524\\21\\92.77344\\-78.80836\\21\\94.72656\\-79.51334\\21\\98.63281\\-80.53253\\21\\100.5859\\-81.32159\\21\\104.4922\\-82.5313\\21\\106.4453\\-83.51362\\21\\108.3984\\-84.2786\\21\\110.3516\\-85.34188\\21\\112.3047\\-86.14848\\21\\116.2109\\-88.08804\\21\\120.1172\\-90.76074\\21\\122.5701\\-92.83594\\21\\124.0234\\-94.27789\\21\\126.2999\\-96.74219\\21\\127.9297\\-98.8418\\21\\130.5147\\-102.6016\\21\\131.8359\\-104.8403\\21\\134.2076\\-108.4609\\21\\135.1318\\-110.4141\\21\\136.2974\\-112.3672\\21\\137.0124\\-114.3203\\21\\138.1718\\-116.2734\\21\\138.9878\\-118.2266\\21\\140.2141\\-120.1797\\21\\140.9683\\-122.1328\\21\\142.0259\\-124.0859\\21\\143.281\\-127.9922\\21\\144.2153\\-129.9453\\21\\144.7458\\-131.8984\\21\\145.6706\\-133.8516\\21\\146.4472\\-135.8047\\21\\147.1112\\-137.7578\\21\\147.9524\\-139.7109\\21\\148.8857\\-143.6172\\21\\149.6033\\-145.5703\\21\\150.1465\\-147.5234\\21\\150.8295\\-151.4297\\21\\151.5026\\-153.3828\\21\\151.9843\\-155.3359\\21\\152.6204\\-159.2422\\21\\153.0193\\-161.1953\\21\\153.532\\-163.1484\\21\\153.8346\\-165.1016\\21\\154.2429\\-169.0078\\21\\154.7253\\-174.8672\\21\\155.1735\\-180.7266\\21\\155.43\\-184.6328\\21\\155.5657\\-190.4922\\21\\155.4994\\-196.3516\\21\\155.3726\\-200.2578\\21\\155.1157\\-204.1641\\21\\154.6326\\-210.0234\\21\\154.0677\\-215.8828\\21\\153.7907\\-217.8359\\21\\153.3725\\-219.7891\\21\\152.7903\\-221.7422\\21\\151.8899\\-225.6484\\21\\151.0302\\-227.6016\\21\\149.8443\\-231.5078\\21\\148.8126\\-233.4609\\21\\148.1014\\-235.4141\\21\\146.8966\\-237.3672\\21\\145.8378\\-239.3203\\21\\142.0364\\-245.1797\\21\\140.5105\\-247.1328\\21\\137.6953\\-250.2954\\21\\133.7891\\-254.4906\\21\\131.1406\\-256.8984\\21\\129.1344\\-258.8516\\21\\125.9766\\-261.6836\\21\\122.0703\\-264.7187\\21\\120.1172\\-266.1332\\21\\116.2109\\-269.0729\\21\\114.2578\\-270.1869\\21\\113.7873\\-270.5703\\21\\110.7641\\-272.5234\\21\\110.3516\\-272.8628\\21\\108.3984\\-273.9249\\21\\106.4453\\-275.1468\\21\\104.4922\\-275.8939\\21\\102.5391\\-276.9941\\21\\100.5859\\-277.698\\21\\98.63281\\-278.7977\\21\\96.67969\\-279.5096\\21\\94.72656\\-280.4186\\21\\92.77344\\-281.0894\\21\\90.82031\\-281.5771\\21\\86.91406\\-282.8405\\21\\83.00781\\-283.5727\\21\\79.10156\\-284.7184\\21\\73.24219\\-285.8456\\21\\71.28906\\-286.4223\\21\\69.33594\\-286.8259\\21\\65.42969\\-287.4601\\21\\63.47656\\-287.8971\\21\\61.52344\\-288.474\\21\\59.57031\\-288.8748\\21\\55.66406\\-289.4057\\21\\53.71094\\-290.0163\\21\\51.75781\\-290.7293\\21\\47.85156\\-291.5664\\21\\45.89844\\-292.4012\\21\\41.99219\\-293.3292\\21\\38.08594\\-294.579\\21\\34.17969\\-295.2254\\21\\32.22656\\-295.6216\\21\\30.27344\\-296.2865\\21\\28.32031\\-296.7168\\21\\24.41406\\-297.303\\21\\22.46094\\-297.7735\\21\\20.50781\\-298.3579\\21\\18.55469\\-298.6514\\21\\12.69531\\-299.315\\21\\6.835938\\-300.0288\\21\\4.882813\\-300.149\\21\\0.9765625\\-300.2342\\21\\-2.929688\\-300.2033\\21\\-4.882813\\-300.1377\\21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "293"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "137"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.789063\\-299.9619\\23\\-12.69531\\-299.4828\\23\\-22.46094\\-298.4603\\23\\-24.41406\\-298.1258\\23\\-26.36719\\-297.6224\\23\\-28.32031\\-297.2798\\23\\-34.17969\\-296.6178\\23\\-36.13281\\-296.249\\23\\-38.08594\\-295.7096\\23\\-40.03906\\-295.3287\\23\\-45.89844\\-294.584\\23\\-47.85156\\-294.1706\\23\\-49.80469\\-293.584\\23\\-51.75781\\-293.1949\\23\\-55.66406\\-292.5766\\23\\-59.57031\\-291.4991\\23\\-61.52344\\-291.1924\\23\\-65.42969\\-290.6929\\23\\-67.38281\\-290.2772\\23\\-69.33594\\-289.7421\\23\\-71.28906\\-289.4366\\23\\-75.19531\\-289.054\\23\\-79.10156\\-288.4505\\23\\-83.00781\\-287.4175\\23\\-86.91406\\-286.6094\\23\\-88.86719\\-285.8588\\23\\-92.77344\\-284.7334\\23\\-94.72656\\-283.8001\\23\\-98.63281\\-282.6266\\23\\-100.5859\\-281.674\\23\\-102.5391\\-280.9931\\23\\-104.4922\\-279.8509\\23\\-106.4453\\-278.8889\\23\\-108.3984\\-277.5909\\23\\-110.3516\\-276.5746\\23\\-112.3047\\-275.4218\\23\\-116.2109\\-272.9017\\23\\-120.1172\\-269.8101\\23\\-122.0703\\-268.6256\\23\\-124.0234\\-267.1274\\23\\-124.4834\\-266.6641\\23\\-126.8584\\-264.7109\\23\\-129.8828\\-262.0655\\23\\-131.8359\\-260.1469\\23\\-134.9788\\-256.8984\\23\\-137.6953\\-253.6143\\23\\-139.6484\\-251.0299\\23\\-142.436\\-247.1328\\23\\-143.4051\\-245.1797\\23\\-145.7669\\-241.2734\\23\\-146.6944\\-239.3203\\23\\-147.7979\\-237.3672\\23\\-149.1718\\-233.4609\\23\\-150.0423\\-231.5078\\23\\-150.4922\\-229.5547\\23\\-151.1054\\-227.6016\\23\\-151.9531\\-225.6484\\23\\-152.433\\-223.6953\\23\\-153.0307\\-221.7422\\23\\-153.7537\\-219.7891\\23\\-154.5529\\-215.8828\\23\\-155.0184\\-213.9297\\23\\-155.5919\\-211.9766\\23\\-155.9639\\-210.0234\\23\\-156.1853\\-208.0703\\23\\-156.7162\\-202.2109\\23\\-157.5834\\-196.3516\\23\\-157.7807\\-192.4453\\23\\-157.8621\\-188.5391\\23\\-157.8621\\-184.6328\\23\\-157.7648\\-180.7266\\23\\-157.5521\\-176.8203\\23\\-157.3486\\-174.8672\\23\\-156.5341\\-169.0078\\23\\-156.1971\\-165.1016\\23\\-155.9763\\-163.1484\\23\\-155.6544\\-161.1953\\23\\-154.6537\\-157.2891\\23\\-153.9074\\-153.3828\\23\\-152.5987\\-149.4766\\23\\-152.118\\-147.5234\\23\\-151.4338\\-145.5703\\23\\-150.6261\\-143.6172\\23\\-150.1918\\-141.6641\\23\\-148.7229\\-137.7578\\23\\-148.2053\\-135.8047\\23\\-146.4789\\-131.8984\\23\\-144.5975\\-127.9922\\23\\-143.8184\\-126.0391\\23\\-142.7896\\-124.0859\\23\\-142.181\\-122.1328\\23\\-141.0812\\-120.1797\\23\\-140.2779\\-118.2266\\23\\-139.0198\\-116.2734\\23\\-138.0744\\-114.3203\\23\\-136.8878\\-112.3672\\23\\-136.0556\\-110.4141\\23\\-133.7891\\-106.8059\\23\\-132.2331\\-104.5547\\23\\-129.8828\\-101.3394\\23\\-127.5595\\-98.69531\\23\\-124.0234\\-95.3985\\23\\-123.2798\\-94.78906\\23\\-118.0099\\-90.88281\\23\\-116.2109\\-89.79429\\23\\-114.2578\\-88.3831\\23\\-112.3047\\-87.70737\\23\\-110.3516\\-86.76363\\23\\-106.4453\\-85.26215\\23\\-104.4922\\-84.30654\\23\\-102.5391\\-83.63634\\23\\-100.5859\\-82.65663\\23\\-96.67969\\-81.46229\\23\\-94.72656\\-80.59592\\23\\-92.77344\\-80.15247\\23\\-88.86719\\-78.88223\\23\\-84.96094\\-77.83006\\23\\-83.00781\\-77.46903\\23\\-81.05469\\-76.89404\\23\\-79.10156\\-76.46487\\23\\-73.24219\\-75.69558\\23\\-71.28906\\-75.09923\\23\\-69.33594\\-74.73649\\23\\-65.42969\\-74.46515\\23\\-59.57031\\-74.25786\\23\\-49.80469\\-74.20384\\23\\-43.94531\\-74.3728\\23\\-40.03906\\-74.63253\\23\\-38.08594\\-75.10057\\23\\-36.13281\\-75.70703\\23\\-30.27344\\-76.3695\\23\\-28.32031\\-76.72266\\23\\-24.41406\\-77.84834\\23\\-22.46094\\-78.28183\\23\\-20.50781\\-78.83854\\23\\-18.55469\\-79.59588\\23\\-14.64844\\-80.67329\\23\\-12.69531\\-81.62937\\23\\-10.74219\\-82.28781\\23\\-8.789063\\-83.32163\\23\\-5.080764\\-85.02344\\23\\-2.929688\\-86.18311\\23\\0.9765625\\-87.11491\\23\\2.929688\\-87.14466\\23\\4.882813\\-86.52734\\23\\6.835938\\-85.79858\\23\\8.789063\\-84.56147\\23\\10.74219\\-83.55217\\23\\12.69531\\-82.33147\\23\\14.64844\\-81.45264\\23\\16.60156\\-80.42675\\23\\18.55469\\-79.6274\\23\\20.50781\\-78.65747\\23\\24.41406\\-77.11098\\23\\26.36719\\-76.42598\\23\\30.27344\\-75.78414\\23\\32.22656\\-75.18139\\23\\34.17969\\-74.69877\\23\\38.08594\\-74.38501\\23\\41.99219\\-74.25813\\23\\45.89844\\-74.18124\\23\\47.85156\\-73.87006\\23\\49.80469\\-73.77747\\23\\53.71094\\-73.77747\\23\\55.66406\\-74.15771\\23\\59.57031\\-74.20657\\23\\65.42969\\-74.3783\\23\\69.33594\\-74.59562\\23\\71.28906\\-74.79523\\23\\75.19531\\-75.69991\\23\\81.05469\\-76.32575\\23\\83.00781\\-76.59904\\23\\86.91406\\-77.63306\\23\\90.82031\\-78.446\\23\\94.72656\\-79.67269\\23\\98.63281\\-80.6947\\23\\100.5859\\-81.58512\\23\\102.5391\\-82.10574\\23\\104.4922\\-82.75642\\23\\106.4453\\-83.75042\\23\\108.3984\\-84.47121\\23\\110.3516\\-85.58781\\23\\112.3047\\-86.3195\\23\\114.2578\\-87.43323\\23\\116.2109\\-88.28529\\23\\119.7917\\-90.88281\\23\\122.1637\\-92.83594\\23\\124.0234\\-94.64837\\23\\125.9766\\-96.81928\\23\\128.9192\\-100.6484\\23\\130.272\\-102.6016\\23\\131.2657\\-104.5547\\23\\132.6439\\-106.5078\\23\\133.8711\\-108.4609\\23\\135.7422\\-111.9788\\23\\136.0031\\-112.3672\\23\\136.7971\\-114.3203\\23\\137.8439\\-116.2734\\23\\138.7458\\-118.2266\\23\\139.8875\\-120.1797\\23\\140.7341\\-122.1328\\23\\141.6855\\-124.0859\\23\\142.4568\\-126.0391\\23\\142.9938\\-127.9922\\23\\143.9676\\-129.9453\\23\\144.5473\\-131.8984\\23\\145.2421\\-133.8516\\23\\146.2176\\-135.8047\\23\\146.8003\\-137.7578\\23\\147.6548\\-139.7109\\23\\148.2669\\-141.6641\\23\\148.6662\\-143.6172\\23\\149.2248\\-145.5703\\23\\149.9318\\-147.5234\\23\\150.5983\\-151.4297\\23\\151.0694\\-153.3828\\23\\151.7137\\-155.3359\\23\\152.1022\\-157.2891\\23\\152.7207\\-161.1953\\23\\153.6021\\-165.1016\\23\\154.0744\\-169.0078\\23\\154.6814\\-176.8203\\23\\155.1307\\-184.6328\\23\\155.2814\\-190.4922\\23\\155.2813\\-192.4453\\23\\155.1735\\-196.3516\\23\\154.9456\\-202.2109\\23\\154.4324\\-210.0234\\23\\153.8577\\-215.8828\\23\\153.5073\\-217.8359\\23\\152.9517\\-219.7891\\23\\152.114\\-223.6953\\23\\151.5416\\-225.6484\\23\\150.7141\\-227.6016\\23\\150.2337\\-229.5547\\23\\149.4701\\-231.5078\\23\\148.5831\\-233.4609\\23\\147.8027\\-235.4141\\23\\145.3214\\-239.3203\\23\\144.2312\\-241.2734\\23\\141.6016\\-245.1085\\23\\140.1084\\-247.1328\\23\\137.6953\\-249.887\\23\\133.7891\\-254.0434\\23\\131.8359\\-255.9151\\23\\129.8828\\-257.6811\\23\\128.7124\\-258.8516\\23\\125.9766\\-261.241\\23\\124.0136\\-262.7578\\23\\122.0703\\-264.1519\\23\\118.1641\\-267.3215\\23\\116.2109\\-268.6593\\23\\114.2578\\-269.7804\\23\\112.3047\\-271.1671\\23\\110.3516\\-272.2455\\23\\108.3984\\-273.5343\\23\\106.4453\\-274.6895\\23\\100.5859\\-277.3119\\23\\98.63281\\-278.0689\\23\\96.67969\\-279.082\\23\\94.72656\\-279.7525\\23\\92.77344\\-280.6219\\23\\90.82031\\-281.1927\\23\\88.86719\\-281.6317\\23\\84.96094\\-282.8462\\23\\81.05469\\-283.549\\23\\79.10156\\-284.026\\23\\77.14844\\-284.6687\\23\\73.24219\\-285.4022\\23\\71.28906\\-285.8348\\23\\69.33594\\-286.4677\\23\\67.38281\\-286.8843\\23\\63.47656\\-287.6038\\23\\59.57031\\-288.7344\\23\\55.66406\\-289.3376\\23\\53.71094\\-289.8646\\23\\51.75781\\-290.654\\23\\47.85156\\-291.532\\23\\45.89844\\-292.3802\\23\\41.99219\\-293.322\\23\\38.08594\\-294.5876\\23\\34.17969\\-295.2502\\23\\32.22656\\-295.6708\\23\\30.27344\\-296.3448\\23\\28.32031\\-296.7541\\23\\24.41406\\-297.3669\\23\\20.50781\\-298.4523\\23\\14.64844\\-299.1535\\23\\8.789063\\-299.9619\\23\\4.882813\\-300.2365\\23\\0.9765625\\-300.3045\\23\\-2.929688\\-300.2761\\23\\-6.835938\\-300.1147\\23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "290"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "138"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.789063\\-300.0542\\25\\-10.74219\\-299.8594\\25\\-12.69531\\-299.555\\25\\-16.60156\\-299.1116\\25\\-22.46094\\-298.4989\\25\\-24.41406\\-298.1732\\25\\-26.36719\\-297.6596\\25\\-28.32031\\-297.3065\\25\\-34.17969\\-296.6331\\25\\-36.13281\\-296.2609\\25\\-38.08594\\-295.7096\\25\\-40.03906\\-295.3287\\25\\-45.89844\\-294.5632\\25\\-47.85156\\-294.1033\\25\\-49.80469\\-293.5225\\25\\-51.75781\\-293.1414\\25\\-55.66406\\-292.4801\\25\\-57.61719\\-291.8415\\25\\-59.57031\\-291.3638\\25\\-63.47656\\-290.8277\\25\\-65.42969\\-290.4834\\25\\-67.38281\\-289.9048\\25\\-69.33594\\-289.4807\\25\\-75.19531\\-288.8592\\25\\-77.14844\\-288.5267\\25\\-81.05469\\-287.5313\\25\\-84.96094\\-286.7475\\25\\-88.86719\\-285.4453\\25\\-90.82031\\-284.9693\\25\\-94.72656\\-283.4484\\25\\-96.67969\\-283.0032\\25\\-98.63281\\-282.1573\\25\\-102.5391\\-280.6706\\25\\-103.0324\\-280.3359\\25\\-106.5549\\-278.3828\\25\\-109.9471\\-276.4297\\25\\-110.3516\\-276.1193\\25\\-112.3047\\-275.1341\\25\\-118.1641\\-271.0111\\25\\-121.4985\\-268.6172\\25\\-123.9958\\-266.6641\\25\\-127.9297\\-263.446\\25\\-129.8828\\-261.7056\\25\\-133.7891\\-257.6958\\25\\-134.646\\-256.8984\\25\\-136.3363\\-254.9453\\25\\-139.1869\\-251.0391\\25\\-140.7654\\-249.0859\\25\\-142.198\\-247.1328\\25\\-143.0698\\-245.1797\\25\\-144.3371\\-243.2266\\25\\-145.3229\\-241.2734\\25\\-146.4412\\-239.3203\\25\\-147.4609\\-237.3003\\25\\-148.3057\\-235.4141\\25\\-148.8928\\-233.4609\\25\\-149.8061\\-231.5078\\25\\-150.7996\\-227.6016\\25\\-151.6509\\-225.6484\\25\\-152.7057\\-221.7422\\25\\-153.4288\\-219.7891\\25\\-153.9656\\-217.8359\\25\\-154.7366\\-213.9297\\25\\-155.7451\\-210.0234\\25\\-156.2209\\-206.1172\\25\\-156.5043\\-202.2109\\25\\-156.9149\\-198.3047\\25\\-157.2027\\-196.3516\\25\\-157.5305\\-192.4453\\25\\-157.6425\\-188.5391\\25\\-157.633\\-184.6328\\25\\-157.5084\\-180.7266\\25\\-157.1723\\-176.8203\\25\\-156.7351\\-172.9141\\25\\-156.0364\\-165.1016\\25\\-155.7483\\-163.1484\\25\\-155.3281\\-161.1953\\25\\-154.8018\\-159.2422\\25\\-154.0719\\-155.3359\\25\\-153.6284\\-153.3828\\25\\-152.8662\\-151.4297\\25\\-151.8784\\-147.5234\\25\\-151.0254\\-145.5703\\25\\-150.4295\\-143.6172\\25\\-149.9949\\-141.6641\\25\\-149.1277\\-139.7109\\25\\-147.9619\\-135.8047\\25\\-146.9695\\-133.8516\\25\\-146.2527\\-131.8984\\25\\-145.1399\\-129.9453\\25\\-144.3988\\-127.9922\\25\\-143.4208\\-126.0391\\25\\-142.6208\\-124.0859\\25\\-141.92\\-122.1328\\25\\-140.8309\\-120.1797\\25\\-139.9672\\-118.2266\\25\\-138.7735\\-116.2734\\25\\-135.7422\\-110.5435\\25\\-134.5591\\-108.4609\\25\\-133.7891\\-107.2717\\25\\-130.4792\\-102.6016\\25\\-128.9278\\-100.6484\\25\\-127.1332\\-98.69531\\25\\-124.0234\\-95.71748\\25\\-122.0703\\-94.14925\\25\\-117.6465\\-90.88281\\25\\-114.2578\\-88.68356\\25\\-110.3516\\-87.09763\\25\\-108.3984\\-86.1802\\25\\-106.4453\\-85.49555\\25\\-104.4922\\-84.49243\\25\\-102.5391\\-83.81744\\25\\-100.5859\\-82.90394\\25\\-98.63281\\-82.20828\\25\\-96.67969\\-81.64925\\25\\-94.72656\\-80.7797\\25\\-92.77344\\-80.26194\\25\\-86.91406\\-78.5558\\25\\-84.96094\\-77.94336\\25\\-83.00781\\-77.61074\\25\\-81.05469\\-77.03655\\25\\-79.10156\\-76.562\\25\\-77.14844\\-76.27506\\25\\-73.24219\\-75.83115\\25\\-69.33594\\-74.83489\\25\\-65.42969\\-74.50612\\25\\-59.57031\\-74.31676\\25\\-47.85156\\-74.2989\\25\\-43.94531\\-74.42523\\25\\-40.03906\\-74.71123\\25\\-38.08594\\-75.35938\\25\\-36.13281\\-75.79335\\25\\-32.22656\\-76.1927\\25\\-30.27344\\-76.44364\\25\\-28.32031\\-76.87213\\25\\-26.36719\\-77.44112\\25\\-22.46094\\-78.32944\\25\\-20.50781\\-78.91658\\25\\-18.55469\\-79.64251\\25\\-14.64844\\-80.71959\\25\\-12.69531\\-81.67619\\25\\-10.74219\\-82.30033\\25\\-8.789063\\-83.32163\\25\\-2.929688\\-85.90047\\25\\-0.9765625\\-86.42114\\25\\0.9765625\\-86.71282\\25\\2.929688\\-86.7902\\25\\4.882813\\-86.33994\\25\\6.835938\\-85.64608\\25\\7.902299\\-85.02344\\25\\10.74219\\-83.59664\\25\\12.69531\\-82.38213\\25\\14.64844\\-81.51801\\25\\16.60156\\-80.48529\\25\\18.55469\\-79.71121\\25\\20.50781\\-78.76733\\25\\22.46094\\-77.97443\\25\\26.36719\\-76.51608\\25\\30.27344\\-75.86206\\25\\32.22656\\-75.38853\\25\\34.17969\\-74.75496\\25\\38.08594\\-74.43775\\25\\41.99219\\-74.29295\\25\\49.80469\\-74.20657\\25\\53.71094\\-74.20657\\25\\59.57031\\-74.26381\\25\\65.42969\\-74.47026\\25\\69.33594\\-74.7232\\25\\71.28906\\-75.02376\\25\\73.24219\\-75.62231\\25\\81.05469\\-76.44744\\25\\83.00781\\-76.79803\\25\\84.96094\\-77.37609\\25\\86.91406\\-77.85235\\25\\90.82031\\-78.63635\\25\\92.77344\\-79.26644\\25\\96.67969\\-80.32259\\25\\98.63281\\-80.92645\\25\\100.5859\\-81.79571\\25\\102.5391\\-82.27801\\25\\106.4453\\-83.95361\\25\\108.3984\\-84.70654\\25\\110.3516\\-85.78693\\25\\112.3047\\-86.53447\\25\\114.2578\\-87.69313\\25\\116.2109\\-88.50912\\25\\118.1641\\-89.91228\\25\\121.7835\\-92.83594\\25\\124.0234\\-95.02907\\25\\125.9766\\-97.27276\\25\\128.6703\\-100.6484\\25\\129.9398\\-102.6016\\25\\130.998\\-104.5547\\25\\132.3876\\-106.5078\\25\\133.4706\\-108.4609\\25\\134.6784\\-110.4141\\25\\136.6217\\-114.3203\\25\\137.4236\\-116.2734\\25\\138.5152\\-118.2266\\25\\139.4371\\-120.1797\\25\\140.5063\\-122.1328\\25\\141.2806\\-124.0859\\25\\142.2547\\-126.0391\\25\\142.787\\-127.9922\\25\\144.3768\\-131.8984\\25\\144.9366\\-133.8516\\25\\145.9754\\-135.8047\\25\\146.564\\-137.7578\\25\\148.0614\\-141.6641\\25\\148.9429\\-145.5703\\25\\149.6434\\-147.5234\\25\\150.142\\-149.4766\\25\\150.7704\\-153.3828\\25\\151.8755\\-157.2891\\25\\152.8291\\-163.1484\\25\\153.6458\\-167.0547\\25\\153.8824\\-169.0078\\25\\154.2222\\-172.9141\\25\\154.5069\\-176.8203\\25\\154.795\\-182.6797\\25\\154.9341\\-186.5859\\25\\154.9854\\-192.4453\\25\\154.7787\\-200.2578\\25\\154.4887\\-206.1172\\25\\154.2429\\-210.0234\\25\\153.8824\\-213.9297\\25\\153.604\\-215.8828\\25\\152.6527\\-219.7891\\25\\151.8729\\-223.6953\\25\\151.0912\\-225.6484\\25\\150.485\\-227.6016\\25\\150.0165\\-229.5547\\25\\149.0766\\-231.5078\\25\\148.3783\\-233.4609\\25\\146.3226\\-237.3672\\25\\144.9169\\-239.3203\\25\\143.903\\-241.2734\\25\\142.5523\\-243.2266\\25\\139.6484\\-247.0557\\25\\136.2231\\-251.0391\\25\\134.3844\\-252.9922\\25\\131.8359\\-255.5023\\25\\127.9297\\-259.0613\\25\\125.8752\\-260.8047\\25\\123.4444\\-262.7578\\25\\118.1641\\-266.8836\\25\\114.2578\\-269.5078\\25\\110.3516\\-271.7718\\25\\108.3984\\-273.1449\\25\\106.4453\\-274.0819\\25\\104.4922\\-275.2215\\25\\102.5391\\-275.8842\\25\\100.5859\\-276.9339\\25\\98.63281\\-277.5681\\25\\96.67969\\-278.5076\\25\\94.72656\\-279.2721\\25\\92.77344\\-279.9202\\25\\90.82031\\-280.7516\\25\\86.91406\\-281.6747\\25\\83.00781\\-282.8462\\25\\79.10156\\-283.4979\\25\\77.14844\\-283.9389\\25\\75.19531\\-284.644\\25\\71.28906\\-285.4173\\25\\69.33594\\-285.9173\\25\\67.38281\\-286.5971\\25\\63.47656\\-287.3706\\25\\61.52344\\-287.8725\\25\\59.57031\\-288.5593\\25\\57.61719\\-288.9743\\25\\55.66406\\-289.282\\25\\53.71094\\-289.7286\\25\\51.75781\\-290.5781\\25\\47.85156\\-291.4799\\25\\45.89844\\-292.3365\\25\\41.99219\\-293.308\\25\\40.01872\\-294.0078\\25\\38.08594\\-294.5913\\25\\34.17969\\-295.2749\\25\\32.22656\\-295.7222\\25\\30.27344\\-296.4001\\25\\28.32031\\-296.7957\\25\\24.41406\\-297.4289\\25\\22.46094\\-298.0361\\25\\20.50781\\-298.5284\\25\\14.64844\\-299.2291\\25\\8.789063\\-300.091\\25\\4.882813\\-300.2979\\25\\0.9765625\\-300.3729\\25\\-4.882813\\-300.2761\\25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "309"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "139"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-10.74219\\-299.948\\27\\-12.69531\\-299.637\\27\\-16.60156\\-299.1584\\27\\-22.46094\\-298.5355\\27\\-24.41406\\-298.207\\27\\-26.36719\\-297.6855\\27\\-28.32031\\-297.3224\\27\\-34.17969\\-296.6405\\27\\-36.13281\\-296.2726\\27\\-38.08594\\-295.683\\27\\-40.03906\\-295.3243\\27\\-43.94531\\-294.8274\\27\\-45.89844\\-294.5241\\27\\-49.80469\\-293.4621\\27\\-53.71094\\-292.7645\\27\\-55.66406\\-292.3477\\27\\-57.61719\\-291.6628\\27\\-59.57031\\-291.2508\\27\\-63.47656\\-290.6776\\27\\-67.38281\\-289.6101\\27\\-69.33594\\-289.3285\\27\\-73.24219\\-288.9114\\27\\-75.19531\\-288.6169\\27\\-79.10156\\-287.6221\\27\\-83.00781\\-286.8811\\27\\-84.96094\\-286.3581\\27\\-86.91406\\-285.6348\\27\\-90.82031\\-284.6036\\27\\-92.77344\\-283.7067\\27\\-96.67969\\-282.7086\\27\\-98.63281\\-281.7908\\27\\-100.5859\\-281.1788\\27\\-102.3784\\-280.3359\\27\\-104.4922\\-279.2239\\27\\-106.4453\\-277.9748\\27\\-108.3984\\-277.0827\\27\\-110.3516\\-275.7946\\27\\-112.3047\\-274.7876\\27\\-114.2578\\-273.4598\\27\\-116.2109\\-271.9131\\27\\-118.1641\\-270.5453\\27\\-120.1172\\-269.3303\\27\\-122.0703\\-267.8088\\27\\-125.9766\\-264.5899\\27\\-127.9297\\-263.1323\\27\\-129.8828\\-261.3863\\27\\-133.7891\\-257.39\\27\\-134.3276\\-256.8984\\27\\-136.0421\\-254.9453\\27\\-137.3528\\-252.9922\\27\\-138.8307\\-251.0391\\27\\-140.5119\\-249.0859\\27\\-141.8732\\-247.1328\\27\\-142.8462\\-245.1797\\27\\-144.0717\\-243.2266\\27\\-144.9507\\-241.2734\\27\\-146.183\\-239.3203\\27\\-147.0584\\-237.3672\\27\\-148.114\\-235.4141\\27\\-148.6863\\-233.4609\\27\\-149.5007\\-231.5078\\27\\-150.1657\\-229.5547\\27\\-150.5871\\-227.6016\\27\\-151.2375\\-225.6484\\27\\-151.9981\\-223.6953\\27\\-152.4586\\-221.7422\\27\\-153.0172\\-219.7891\\27\\-153.7371\\-217.8359\\27\\-154.9364\\-211.9766\\27\\-155.4598\\-210.0234\\27\\-155.8581\\-208.0703\\27\\-156.2442\\-204.1641\\27\\-156.497\\-200.2578\\27\\-157.1568\\-192.4453\\27\\-157.3351\\-188.5391\\27\\-157.2641\\-182.6797\\27\\-157.142\\-180.7266\\27\\-156.6554\\-174.8672\\27\\-156.2266\\-169.0078\\27\\-155.8268\\-165.1016\\27\\-154.5485\\-159.2422\\27\\-153.8493\\-155.3359\\27\\-152.5879\\-151.4297\\27\\-151.5542\\-147.5234\\27\\-150.7263\\-145.5703\\27\\-150.265\\-143.6172\\27\\-149.6983\\-141.6641\\27\\-148.8532\\-139.7109\\27\\-148.3244\\-137.7578\\27\\-147.6534\\-135.8047\\27\\-146.674\\-133.8516\\27\\-145.9619\\-131.8984\\27\\-144.8393\\-129.9453\\27\\-144.1643\\-127.9922\\27\\-143.1013\\-126.0391\\27\\-142.4377\\-124.0859\\27\\-140.6024\\-120.1797\\27\\-139.5068\\-118.2266\\27\\-137.6953\\-114.8037\\27\\-137.3382\\-114.3203\\27\\-136.5171\\-112.3672\\27\\-135.2952\\-110.4141\\27\\-134.3175\\-108.4609\\27\\-131.4499\\-104.5547\\27\\-130.2279\\-102.6016\\27\\-128.5926\\-100.6484\\27\\-126.7616\\-98.69531\\27\\-124.6807\\-96.74219\\27\\-124.0234\\-96.02008\\27\\-122.0703\\-94.37366\\27\\-120.1172\\-93.06432\\27\\-118.1641\\-91.51263\\27\\-116.2109\\-90.14397\\27\\-112.3047\\-88.06654\\27\\-110.3516\\-87.40022\\27\\-108.3984\\-86.35947\\27\\-106.4453\\-85.6805\\27\\-104.4922\\-84.7112\\27\\-102.5391\\-83.99043\\27\\-98.63281\\-82.33012\\27\\-96.67969\\-81.81654\\27\\-94.72656\\-80.99905\\27\\-92.77344\\-80.38168\\27\\-88.86719\\-79.43574\\27\\-86.91406\\-78.69409\\27\\-84.96094\\-78.05433\\27\\-83.00781\\-77.73052\\27\\-79.10156\\-76.69393\\27\\-77.14844\\-76.3356\\27\\-73.24219\\-75.91896\\27\\-71.28906\\-75.57626\\27\\-69.33594\\-74.98926\\27\\-67.38281\\-74.70894\\27\\-63.47656\\-74.46515\\27\\-57.61719\\-74.33484\\27\\-53.71094\\-74.37711\\27\\-47.85156\\-74.34756\\27\\-43.94531\\-74.47527\\27\\-40.03906\\-74.7506\\27\\-38.08594\\-75.43329\\27\\-36.13281\\-75.84872\\27\\-32.22656\\-76.25246\\27\\-30.27344\\-76.5181\\27\\-26.36719\\-77.57141\\27\\-22.46094\\-78.4673\\27\\-20.50781\\-79.02863\\27\\-18.55469\\-79.71017\\27\\-14.64844\\-80.78217\\27\\-12.69531\\-81.73083\\27\\-10.74219\\-82.32056\\27\\-8.789063\\-83.33405\\27\\-6.835938\\-84.15213\\27\\-2.929688\\-85.608\\27\\-0.9765625\\-86.12865\\27\\0.9765625\\-86.38344\\27\\2.929688\\-86.44785\\27\\4.882813\\-86.1618\\27\\6.835938\\-85.46605\\27\\7.667336\\-85.02344\\27\\10.74219\\-83.63998\\27\\12.69531\\-82.47389\\27\\14.64844\\-81.68007\\27\\16.60156\\-80.5732\\27\\18.55469\\-79.87721\\27\\20.50781\\-78.84925\\27\\22.46094\\-78.04546\\27\\26.36719\\-76.6124\\27\\28.32031\\-76.19971\\27\\30.27344\\-75.91085\\27\\32.22656\\-75.45909\\27\\34.17969\\-74.81461\\27\\36.13281\\-74.6227\\27\\40.03906\\-74.39722\\27\\45.89844\\-74.28713\\27\\51.75781\\-74.24658\\27\\59.57031\\-74.31676\\27\\63.47656\\-74.47026\\27\\67.38281\\-74.70279\\27\\69.33594\\-74.92454\\27\\71.28906\\-75.47236\\27\\73.24219\\-75.79682\\27\\77.14844\\-76.13672\\27\\81.05469\\-76.6124\\27\\83.00781\\-77.05903\\27\\84.96094\\-77.62312\\27\\88.86719\\-78.38839\\27\\90.82031\\-78.85602\\27\\92.77344\\-79.47744\\27\\94.72656\\-79.90968\\27\\96.67969\\-80.49345\\27\\98.63281\\-81.27866\\27\\100.5859\\-81.94817\\27\\102.5391\\-82.45918\\27\\104.4922\\-83.39354\\27\\106.4453\\-84.14508\\27\\110.3516\\-85.97128\\27\\112.3047\\-86.79161\\27\\114.2578\\-87.85485\\27\\116.2109\\-88.77884\\27\\118.1641\\-90.13208\\27\\121.4554\\-92.83594\\27\\124.0234\\-95.36578\\27\\126.8281\\-98.69531\\27\\128.4038\\-100.6484\\27\\129.5499\\-102.6016\\27\\132.0569\\-106.5078\\27\\133.1401\\-108.4609\\27\\134.4538\\-110.4141\\27\\135.3277\\-112.3672\\27\\136.4379\\-114.3203\\27\\137.1107\\-116.2734\\27\\138.3028\\-118.2266\\27\\139.0983\\-120.1797\\27\\140.2602\\-122.1328\\27\\140.9763\\-124.0859\\27\\142.0152\\-126.0391\\27\\143.2221\\-129.9453\\27\\144.1515\\-131.8984\\27\\144.6893\\-133.8516\\27\\145.6299\\-135.8047\\27\\146.35\\-137.7578\\27\\146.9603\\-139.7109\\27\\147.8214\\-141.6641\\27\\148.7273\\-145.5703\\27\\149.268\\-147.5234\\27\\149.9318\\-149.4766\\27\\150.5692\\-153.3828\\27\\150.944\\-155.3359\\27\\151.591\\-157.2891\\27\\152.0165\\-159.2422\\27\\152.9108\\-165.1016\\27\\153.6794\\-169.0078\\27\\153.9063\\-170.9609\\27\\154.3349\\-176.8203\\27\\154.6043\\-182.6797\\27\\154.7038\\-186.5859\\27\\154.7471\\-192.4453\\27\\154.5498\\-200.2578\\27\\154.3985\\-204.1641\\27\\154.189\\-208.0703\\27\\153.8824\\-211.9766\\27\\153.6351\\-213.9297\\27\\152.7817\\-217.8359\\27\\152.0751\\-221.7422\\27\\151.5416\\-223.6953\\27\\150.7629\\-225.6484\\27\\150.3125\\-227.6016\\27\\149.7251\\-229.5547\\27\\148.7997\\-231.5078\\27\\148.1384\\-233.4609\\27\\146.9791\\-235.4141\\27\\146.0215\\-237.3672\\27\\144.593\\-239.3203\\27\\142.2549\\-243.2266\\27\\140.7463\\-245.1797\\27\\137.6953\\-248.8196\\27\\135.7167\\-251.0391\\27\\133.8743\\-252.9922\\27\\131.8359\\-254.9539\\27\\129.7141\\-256.8984\\27\\125.9766\\-260.2282\\27\\124.0234\\-261.889\\27\\120.1172\\-264.9226\\27\\114.2578\\-269.2217\\27\\112.3047\\-270.0958\\27\\111.6808\\-270.5703\\27\\108.3984\\-272.6196\\27\\104.9389\\-274.4766\\27\\104.4922\\-274.7876\\27\\100.5859\\-276.2969\\27\\98.63281\\-277.2003\\27\\96.67969\\-277.8095\\27\\94.72656\\-278.7897\\27\\90.82031\\-280.05\\27\\88.86719\\-280.8178\\27\\84.96094\\-281.6926\\27\\81.05469\\-282.8555\\27\\79.10156\\-283.1721\\27\\77.14844\\-283.3816\\27\\75.19531\\-283.9411\\27\\73.24219\\-284.6755\\27\\69.33594\\-285.4986\\27\\65.42969\\-286.7688\\27\\61.52344\\-287.6255\\27\\59.57031\\-288.3598\\27\\57.61719\\-288.887\\27\\53.71094\\-289.6165\\27\\51.75781\\-290.4733\\27\\47.85156\\-291.4238\\27\\45.89844\\-292.2664\\27\\43.94531\\-292.845\\27\\41.99219\\-293.2971\\27\\40.03906\\-294.0156\\27\\38.08594\\-294.5999\\27\\34.17969\\-295.2911\\27\\32.22656\\-295.7746\\27\\30.27344\\-296.4524\\27\\28.32031\\-296.8342\\27\\26.36719\\-297.1064\\27\\24.41406\\-297.4892\\27\\22.46094\\-298.1616\\27\\20.50781\\-298.5736\\27\\14.64844\\-299.2985\\27\\10.74219\\-299.9338\\27\\8.789063\\-300.1602\\27\\6.835938\\-300.2857\\27\\0.9765625\\-300.4211\\27\\-4.882813\\-300.3257\\27\\-8.789063\\-300.1377\\27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "302"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "140"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-10.74219\\-300.0026\\29\\-16.60156\\-299.2072\\29\\-22.46094\\-298.5702\\29\\-24.41406\\-298.2502\\29\\-26.36719\\-297.723\\29\\-28.32031\\-297.3304\\29\\-34.17969\\-296.6405\\29\\-36.13281\\-296.2609\\29\\-38.08594\\-295.6588\\29\\-40.03906\\-295.312\\29\\-43.94531\\-294.8042\\29\\-45.89844\\-294.4803\\29\\-49.80469\\-293.3919\\29\\-53.71094\\-292.6829\\29\\-57.61719\\-291.532\\29\\-59.57031\\-291.1448\\29\\-61.52344\\-290.8584\\29\\-63.47656\\-290.463\\29\\-65.42969\\-289.8236\\29\\-67.38281\\-289.4209\\29\\-71.28906\\-288.9999\\29\\-73.24219\\-288.7255\\29\\-77.14844\\-287.7355\\29\\-79.10156\\-287.317\\29\\-81.05469\\-287.003\\29\\-83.00781\\-286.5772\\29\\-84.96094\\-285.8396\\29\\-88.86719\\-284.8661\\29\\-90.82031\\-284.0844\\29\\-92.77344\\-283.4237\\29\\-94.72656\\-283.023\\29\\-98.63281\\-281.5261\\29\\-100.5859\\-280.9086\\29\\-102.5391\\-279.8096\\29\\-104.4922\\-278.9469\\29\\-106.4453\\-277.6562\\29\\-108.3984\\-276.7942\\29\\-110.3516\\-275.5356\\29\\-114.2578\\-273.1647\\29\\-118.1641\\-270.1355\\29\\-120.1172\\-269.0235\\29\\-122.0703\\-267.5398\\29\\-124.0234\\-265.8049\\29\\-125.9766\\-264.1714\\29\\-127.8658\\-262.7578\\29\\-129.8828\\-261.0099\\29\\-133.9297\\-256.8984\\29\\-135.7422\\-254.8255\\29\\-137.0124\\-252.9922\\29\\-140.2306\\-249.0859\\29\\-142.6338\\-245.1797\\29\\-143.7529\\-243.2266\\29\\-144.6959\\-241.2734\\29\\-145.9173\\-239.3203\\29\\-146.7768\\-237.3672\\29\\-147.8795\\-235.4141\\29\\-149.1298\\-231.5078\\29\\-149.973\\-229.5547\\29\\-150.8951\\-225.6484\\29\\-151.7365\\-223.6953\\29\\-152.7092\\-219.7891\\29\\-153.4433\\-217.8359\\29\\-153.9621\\-215.8828\\29\\-154.6863\\-211.9766\\29\\-155.6405\\-208.0703\\29\\-156.1182\\-204.1641\\29\\-156.3806\\-200.2578\\29\\-156.5775\\-196.3516\\29\\-156.8453\\-192.4453\\29\\-156.9526\\-188.5391\\29\\-156.9033\\-182.6797\\29\\-156.7036\\-178.7734\\29\\-156.2442\\-170.9609\\29\\-155.867\\-167.0547\\29\\-155.5535\\-165.1016\\29\\-155.0475\\-163.1484\\29\\-154.0028\\-157.2891\\29\\-153.556\\-155.3359\\29\\-152.8568\\-153.3828\\29\\-151.8755\\-149.4766\\29\\-151.0791\\-147.5234\\29\\-150.5099\\-145.5703\\29\\-150.0754\\-143.6172\\29\\-148.6241\\-139.7109\\29\\-148.0976\\-137.7578\\29\\-146.424\\-133.8516\\29\\-144.596\\-129.9453\\29\\-143.8779\\-127.9922\\29\\-142.8672\\-126.0391\\29\\-142.2463\\-124.0859\\29\\-141.2096\\-122.1328\\29\\-140.3677\\-120.1797\\29\\-139.1197\\-118.2266\\29\\-138.2478\\-116.2734\\29\\-137.0465\\-114.3203\\29\\-136.2877\\-112.3672\\29\\-135.0473\\-110.4141\\29\\-133.9713\\-108.4609\\29\\-132.6005\\-106.5078\\29\\-130.998\\-104.5547\\29\\-129.8828\\-102.6341\\29\\-128.294\\-100.6484\\29\\-126.4648\\-98.69531\\29\\-124.0234\\-96.32257\\29\\-122.0703\\-94.65072\\29\\-120.1172\\-93.36286\\29\\-116.2109\\-90.37721\\29\\-114.2578\\-89.46416\\29\\-112.3047\\-88.272\\29\\-110.3516\\-87.612\\29\\-108.3984\\-86.55054\\29\\-106.4453\\-85.84976\\29\\-102.5391\\-84.15977\\29\\-100.5859\\-83.43819\\29\\-98.63281\\-82.48179\\29\\-96.67969\\-81.95159\\29\\-92.77344\\-80.51968\\29\\-88.86719\\-79.65894\\29\\-86.91406\\-78.86713\\29\\-84.96094\\-78.29276\\29\\-81.05469\\-77.39178\\29\\-79.10156\\-76.83227\\29\\-77.14844\\-76.40635\\29\\-73.24219\\-75.99763\\29\\-69.33594\\-75.45757\\29\\-67.38281\\-74.77326\\29\\-61.52344\\-74.43775\\29\\-57.61719\\-74.39043\\29\\-51.75781\\-74.38501\\29\\-47.85156\\-74.41809\\29\\-43.94531\\-74.56412\\29\\-41.99219\\-74.70295\\29\\-40.03906\\-75.01781\\29\\-38.08594\\-75.66357\\29\\-32.22656\\-76.3339\\29\\-30.27344\\-76.62223\\29\\-26.36719\\-77.71753\\29\\-24.41406\\-78.1052\\29\\-22.46094\\-78.59578\\29\\-18.55469\\-79.7923\\29\\-16.60156\\-80.23094\\29\\-14.64844\\-80.87119\\29\\-12.69531\\-81.78776\\29\\-10.74219\\-82.37096\\29\\-8.789063\\-83.3463\\29\\-2.929688\\-85.39849\\29\\-0.9765625\\-85.76058\\29\\0.9765625\\-85.95087\\29\\2.929688\\-86.03639\\29\\4.882813\\-85.88547\\29\\6.835938\\-85.33681\\29\\10.74219\\-83.66122\\29\\12.69531\\-82.56223\\29\\14.64844\\-81.79571\\29\\16.60156\\-80.67329\\29\\18.55469\\-80.01245\\29\\20.50781\\-78.96462\\29\\22.46094\\-78.14015\\29\\24.41406\\-77.4949\\29\\26.36719\\-76.69662\\29\\28.32031\\-76.24019\\29\\32.22656\\-75.66306\\29\\34.17969\\-74.97765\\29\\36.13281\\-74.70894\\29\\38.08594\\-74.56026\\29\\41.99219\\-74.39181\\29\\49.80469\\-74.29295\\29\\55.66406\\-74.31066\\29\\59.57031\\-74.39043\\29\\63.47656\\-74.55653\\29\\67.38281\\-74.86871\\29\\69.33594\\-75.44276\\29\\71.28906\\-75.73967\\29\\77.14844\\-76.25161\\29\\79.10156\\-76.49358\\29\\81.05469\\-76.85046\\29\\84.96094\\-77.8256\\29\\88.86719\\-78.6151\\29\\90.84744\\-79.16406\\29\\96.67969\\-80.68392\\29\\98.63281\\-81.53967\\29\\102.5391\\-82.6623\\29\\104.4922\\-83.63634\\29\\106.4453\\-84.36315\\29\\108.3984\\-85.35128\\29\\110.3516\\-86.13021\\29\\114.2578\\-87.97769\\29\\115.9397\\-88.92969\\29\\118.1641\\-90.39117\\29\\118.6523\\-90.88281\\29\\121.1448\\-92.83594\\29\\124.0234\\-95.69801\\29\\124.8314\\-96.74219\\29\\126.5536\\-98.69531\\29\\128.0658\\-100.6484\\29\\129.2251\\-102.6016\\29\\130.574\\-104.5547\\29\\131.6112\\-106.5078\\29\\134.1656\\-110.4141\\29\\135.0555\\-112.3672\\29\\136.2095\\-114.3203\\29\\136.8776\\-116.2734\\29\\138.0296\\-118.2266\\29\\138.8264\\-120.1797\\29\\139.9867\\-122.1328\\29\\140.7243\\-124.0859\\29\\141.7015\\-126.0391\\29\\142.4568\\-127.9922\\29\\142.9523\\-129.9453\\29\\143.8546\\-131.8984\\29\\145.1868\\-135.8047\\29\\146.1348\\-137.7578\\29\\146.7008\\-139.7109\\29\\147.5135\\-141.6641\\29\\148.1416\\-143.6172\\29\\148.9975\\-147.5234\\29\\149.6691\\-149.4766\\29\\150.1346\\-151.4297\\29\\150.7064\\-155.3359\\29\\151.7831\\-159.2422\\29\\152.1149\\-161.1953\\29\\152.6638\\-165.1016\\29\\153.4011\\-169.0078\\29\\153.6997\\-170.9609\\29\\154.0595\\-174.8672\\29\\154.2753\\-178.7734\\29\\154.4796\\-184.6328\\29\\154.5352\\-188.5391\\29\\154.5352\\-192.4453\\29\\154.3631\\-200.2578\\29\\154.2106\\-204.1641\\29\\153.9951\\-208.0703\\29\\153.648\\-211.9766\\29\\152.8503\\-215.8828\\29\\152.2092\\-219.7891\\29\\151.8046\\-221.7422\\29\\151.0791\\-223.6953\\29\\150.5357\\-225.6484\\29\\150.1346\\-227.6016\\29\\148.5779\\-231.5078\\29\\147.8556\\-233.4609\\29\\147.4609\\-234.0429\\29\\145.5078\\-237.4676\\29\\143.5547\\-240.5657\\29\\143.0114\\-241.2734\\29\\141.9119\\-243.2266\\29\\140.402\\-245.1797\\29\\138.6895\\-247.1328\\29\\137.6953\\-248.3927\\29\\135.2355\\-251.0391\\29\\131.8359\\-254.4605\\29\\129.2504\\-256.8984\\29\\127.9297\\-258.0021\\29\\125.9766\\-259.8219\\29\\124.0234\\-261.5253\\29\\122.0703\\-263.0933\\29\\120.1172\\-264.3684\\29\\116.2109\\-267.444\\29\\114.2578\\-268.8094\\29\\112.3047\\-269.7679\\29\\110.3516\\-271.0235\\29\\108.3984\\-271.9879\\29\\106.4453\\-273.2614\\29\\104.4922\\-274.1533\\29\\102.5391\\-275.1965\\29\\100.5859\\-275.7808\\29\\98.63281\\-276.7481\\29\\94.72656\\-278.055\\29\\92.77344\\-278.9569\\29\\90.82031\\-279.5013\\29\\86.91406\\-280.8529\\29\\83.00781\\-281.7057\\29\\79.10156\\-282.8517\\29\\75.19531\\-283.4979\\29\\73.24219\\-284.0694\\29\\71.28906\\-284.768\\29\\67.38281\\-285.7191\\29\\65.42969\\-286.5013\\29\\61.52344\\-287.4334\\29\\57.61719\\-288.7848\\29\\53.71094\\-289.5058\\29\\51.75781\\-290.3642\\29\\49.80469\\-290.9379\\29\\47.85156\\-291.3663\\29\\45.89844\\-292.2033\\29\\43.94531\\-292.8249\\29\\41.99219\\-293.2834\\29\\40.01953\\-294.0078\\29\\38.08594\\-294.6121\\29\\34.17969\\-295.312\\29\\32.22656\\-295.8312\\29\\30.27344\\-296.5021\\29\\26.36719\\-297.1468\\29\\24.41406\\-297.5644\\29\\22.46094\\-298.2502\\29\\20.50781\\-298.6102\\29\\14.64844\\-299.373\\29\\10.74219\\-300.0158\\29\\6.835938\\-300.3376\\29\\0.9765625\\-300.4712\\29\\-0.9765625\\-300.4599\\29\\-6.835938\\-300.3073\\29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "287"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "141"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-10.74219\\-300.0666\\31\\-16.60156\\-299.2437\\31\\-22.46094\\-298.5901\\31\\-24.41406\\-298.2911\\31\\-26.36719\\-297.761\\31\\-28.32031\\-297.3304\\31\\-34.17969\\-296.6331\\31\\-36.13281\\-296.2247\\31\\-38.08594\\-295.6331\\31\\-40.03906\\-295.2915\\31\\-43.94531\\-294.7809\\31\\-45.89844\\-294.4254\\31\\-49.80469\\-293.3156\\31\\-53.71094\\-292.596\\31\\-57.61719\\-291.3913\\31\\-61.52344\\-290.7403\\31\\-65.42969\\-289.5879\\31\\-71.28906\\-288.8345\\31\\-73.24219\\-288.4623\\31\\-75.19531\\-287.8745\\31\\-77.14844\\-287.4377\\31\\-81.05469\\-286.7429\\31\\-84.96094\\-285.4846\\31\\-86.91406\\-285.0585\\31\\-88.86719\\-284.4897\\31\\-90.82031\\-283.6674\\31\\-94.72656\\-282.7538\\31\\-96.67969\\-281.8804\\31\\-98.63281\\-281.2891\\31\\-100.5859\\-280.5886\\31\\-102.5391\\-279.4997\\31\\-104.4922\\-278.5753\\31\\-106.4453\\-277.4229\\31\\-110.3516\\-275.3199\\31\\-112.3047\\-274.0106\\31\\-114.2578\\-272.8336\\31\\-118.1641\\-269.8775\\31\\-122.0703\\-267.2565\\31\\-125.9766\\-263.8394\\31\\-127.3774\\-262.7578\\31\\-129.5766\\-260.8047\\31\\-133.7891\\-256.5125\\31\\-135.7422\\-254.3512\\31\\-136.7615\\-252.9922\\31\\-139.8803\\-249.0859\\31\\-141.0718\\-247.1328\\31\\-142.4164\\-245.1797\\31\\-143.5547\\-242.9749\\31\\-145.5309\\-239.3203\\31\\-147.4609\\-235.5536\\31\\-148.3257\\-233.4609\\31\\-148.8796\\-231.5078\\31\\-149.7106\\-229.5547\\31\\-150.2664\\-227.6016\\31\\-150.6755\\-225.6484\\31\\-152.0481\\-221.7422\\31\\-152.484\\-219.7891\\31\\-153.0676\\-217.8359\\31\\-153.7631\\-215.8828\\31\\-154.8387\\-210.0234\\31\\-155.3281\\-208.0703\\31\\-155.6977\\-206.1172\\31\\-155.9639\\-204.1641\\31\\-156.2672\\-200.2578\\31\\-156.5975\\-192.4453\\31\\-156.6888\\-186.5859\\31\\-156.6554\\-182.6797\\31\\-156.3414\\-174.8672\\31\\-156.1011\\-170.9609\\31\\-155.6267\\-167.0547\\31\\-154.7659\\-163.1484\\31\\-153.7659\\-157.2891\\31\\-152.5662\\-153.3828\\31\\-152.1267\\-151.4297\\31\\-151.5542\\-149.4766\\31\\-150.7463\\-147.5234\\31\\-149.8198\\-143.6172\\31\\-148.9808\\-141.6641\\31\\-147.8068\\-137.7578\\31\\-146.8762\\-135.8047\\31\\-146.1721\\-133.8516\\31\\-145.0949\\-131.8984\\31\\-144.3586\\-129.9453\\31\\-143.4515\\-127.9922\\31\\-142.6575\\-126.0391\\31\\-141.9908\\-124.0859\\31\\-140.9168\\-122.1328\\31\\-140.0773\\-120.1797\\31\\-138.8281\\-118.2266\\31\\-137.9544\\-116.2734\\31\\-136.8225\\-114.3203\\31\\-135.9769\\-112.3672\\31\\-133.7891\\-108.7273\\31\\-132.3135\\-106.5078\\31\\-130.7488\\-104.5547\\31\\-129.8828\\-103.2307\\31\\-127.9297\\-100.6968\\31\\-126.0517\\-98.69531\\31\\-124.0143\\-96.74219\\31\\-121.7954\\-94.78906\\31\\-120.1172\\-93.6881\\31\\-118.1641\\-92.12856\\31\\-116.2109\\-90.6875\\31\\-114.2578\\-89.68233\\31\\-112.3047\\-88.50912\\31\\-110.3516\\-87.77966\\31\\-108.3984\\-86.83273\\31\\-104.4922\\-85.32554\\31\\-102.5391\\-84.3317\\31\\-100.5859\\-83.63794\\31\\-98.63281\\-82.70582\\31\\-94.72656\\-81.46904\\31\\-92.77344\\-80.66281\\31\\-88.86719\\-79.77917\\31\\-84.96094\\-78.44791\\31\\-83.00781\\-77.92625\\31\\-81.05469\\-77.53191\\31\\-79.10156\\-76.96504\\31\\-77.14844\\-76.51608\\31\\-75.19531\\-76.25805\\31\\-69.33594\\-75.66306\\31\\-67.38281\\-74.85938\\31\\-65.42969\\-74.68462\\31\\-59.57031\\-74.46515\\31\\-53.71094\\-74.43577\\31\\-49.80469\\-74.47531\\31\\-43.94531\\-74.67046\\31\\-41.99219\\-74.87191\\31\\-40.03906\\-75.52746\\31\\-38.08594\\-75.81311\\31\\-32.22656\\-76.42069\\31\\-30.27344\\-76.80293\\31\\-26.36719\\-77.84834\\31\\-24.41406\\-78.21494\\31\\-22.46094\\-78.71108\\31\\-20.50781\\-79.40636\\31\\-18.55469\\-79.86597\\31\\-16.60156\\-80.1463\\31\\-12.69531\\-81.88717\\31\\-10.74219\\-82.42984\\31\\-8.789063\\-83.38421\\31\\-2.929688\\-85.14063\\31\\-0.9765625\\-85.38698\\31\\2.929688\\-85.61069\\31\\4.882813\\-85.54826\\31\\6.835938\\-85.14063\\31\\10.74219\\-83.6861\\31\\12.69531\\-82.6295\\31\\14.64844\\-81.86213\\31\\16.60156\\-80.79166\\31\\18.55469\\-80.08569\\31\\22.46094\\-78.25381\\31\\24.41406\\-77.62385\\31\\26.36719\\-76.79436\\31\\28.32031\\-76.32262\\31\\32.22656\\-75.82027\\31\\36.13281\\-74.82631\\31\\40.03906\\-74.54341\\31\\45.89844\\-74.39043\\31\\49.80469\\-74.34675\\31\\55.66406\\-74.37167\\31\\59.57031\\-74.47026\\31\\65.42969\\-74.82963\\31\\67.38281\\-75.18139\\31\\69.33594\\-75.70112\\31\\73.24219\\-76.00947\\31\\77.14844\\-76.39321\\31\\79.10156\\-76.68117\\31\\83.00781\\-77.60786\\31\\86.91406\\-78.37299\\31\\88.86719\\-78.8601\\31\\90.82031\\-79.46065\\31\\94.72656\\-80.35369\\31\\96.67969\\-80.94033\\31\\98.63281\\-81.74451\\31\\100.5859\\-82.22906\\31\\102.5391\\-82.91495\\31\\104.4922\\-83.82921\\31\\106.4453\\-84.56852\\31\\108.3984\\-85.58781\\31\\110.3516\\-86.31522\\31\\112.3047\\-87.36861\\31\\114.2578\\-88.12954\\31\\118.1641\\-90.73438\\31\\120.7854\\-92.83594\\31\\122.8275\\-94.78906\\31\\124.0234\\-96.05859\\31\\126.2059\\-98.69531\\31\\127.9297\\-101.0255\\31\\130.2973\\-104.5547\\31\\131.25\\-106.5078\\31\\132.6344\\-108.4609\\31\\133.7891\\-110.4252\\31\\135.7422\\-114.0846\\31\\137.6953\\-118.3446\\31\\139.6484\\-122.2142\\31\\141.3176\\-126.0391\\31\\142.2631\\-127.9922\\31\\142.7601\\-129.9453\\31\\143.4673\\-131.8984\\31\\144.2914\\-133.8516\\31\\144.8864\\-135.8047\\31\\145.8589\\-137.7578\\31\\147.14\\-141.6641\\31\\147.9523\\-143.6172\\31\\148.7903\\-147.5234\\31\\149.9509\\-151.4297\\31\\150.5388\\-155.3359\\31\\150.9012\\-157.2891\\31\\151.4893\\-159.2422\\31\\151.9165\\-161.1953\\31\\152.7207\\-167.0547\\31\\153.7292\\-172.9141\\31\\154.0232\\-176.8203\\31\\154.2115\\-180.7266\\31\\154.324\\-184.6328\\31\\154.3741\\-188.5391\\31\\154.3521\\-192.4453\\31\\154.1842\\-200.2578\\31\\153.9362\\-206.1172\\31\\153.8057\\-208.0703\\31\\153.2974\\-211.9766\\31\\152.9108\\-213.9297\\31\\151.9843\\-219.7891\\31\\150.7583\\-223.6953\\31\\149.9089\\-227.6016\\31\\149.0054\\-229.5547\\31\\148.3783\\-231.5078\\31\\147.4842\\-233.4609\\31\\146.4063\\-235.4141\\31\\145.1269\\-237.3672\\31\\144.0845\\-239.3203\\31\\142.7221\\-241.2734\\31\\141.6016\\-243.0391\\31\\140.0542\\-245.1797\\31\\139.6484\\-245.5743\\31\\137.6953\\-247.9688\\31\\134.8465\\-251.0391\\31\\133.7891\\-252.0219\\31\\131.8359\\-254.0453\\31\\129.8828\\-255.9219\\31\\127.9297\\-257.5978\\31\\124.0234\\-261.1577\\31\\121.9295\\-262.7578\\31\\120.1172\\-263.9583\\31\\116.2109\\-267.0727\\31\\114.2578\\-268.2308\\31\\112.3047\\-269.4873\\31\\110.3516\\-270.4645\\31\\106.4453\\-272.7898\\31\\104.4922\\-273.6666\\31\\102.5391\\-274.7587\\31\\98.63281\\-276.0779\\31\\96.67969\\-277.003\\31\\94.72656\\-277.5304\\31\\90.82031\\-279.0624\\31\\88.86719\\-279.5695\\31\\84.96094\\-280.9144\\31\\81.05469\\-281.7451\\31\\77.14844\\-282.8866\\31\\73.24219\\-283.6053\\31\\69.33594\\-284.9472\\31\\67.38281\\-285.4363\\31\\63.47656\\-286.8298\\31\\61.52344\\-287.281\\31\\59.57031\\-287.9115\\31\\57.61719\\-288.6758\\31\\53.71094\\-289.4445\\31\\51.75781\\-290.2523\\31\\49.80469\\-290.8877\\31\\47.85156\\-291.3392\\31\\45.89844\\-292.1632\\31\\43.94531\\-292.8148\\31\\41.99219\\-293.2767\\31\\38.08594\\-294.6326\\31\\34.17969\\-295.3332\\31\\30.27344\\-296.5493\\31\\26.36719\\-297.1884\\31\\24.41406\\-297.6578\\31\\22.46094\\-298.301\\31\\20.50781\\-298.6391\\31\\14.64844\\-299.4478\\31\\10.74219\\-300.091\\31\\6.835938\\-300.3759\\31\\4.882813\\-300.4474\\31\\-0.9765625\\-300.5014\\31\\-6.835938\\-300.3555\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "297"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "142"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-12.69531\\-299.8899\\33\\-16.60156\\-299.2937\\33\\-22.46094\\-298.6256\\33\\-24.41406\\-298.3394\\33\\-28.32031\\-297.342\\33\\-34.17969\\-296.6139\\33\\-36.13281\\-296.1979\\33\\-38.08594\\-295.6102\\33\\-40.03906\\-295.2669\\33\\-43.94531\\-294.7388\\33\\-45.89844\\-294.3575\\33\\-47.85156\\-293.7354\\33\\-49.80469\\-293.2379\\33\\-53.71094\\-292.5077\\33\\-55.66406\\-291.7729\\33\\-57.61719\\-291.2784\\33\\-61.52344\\-290.5781\\33\\-63.47656\\-289.8773\\33\\-65.42969\\-289.4366\\33\\-69.33594\\-288.9622\\33\\-71.28906\\-288.6301\\33\\-75.19531\\-287.5686\\33\\-79.10156\\-286.8409\\33\\-81.05469\\-286.3947\\33\\-83.00781\\-285.6804\\33\\-86.91406\\-284.7897\\33\\-88.86719\\-283.9803\\33\\-90.82031\\-283.4189\\33\\-92.77344\\-283.0305\\33\\-96.67969\\-281.5986\\33\\-98.63281\\-281.0478\\33\\-102.5391\\-279.2393\\33\\-104.4922\\-278.1028\\33\\-106.4453\\-277.1982\\33\\-108.3984\\-276.0122\\33\\-110.3516\\-275.0944\\33\\-111.1698\\-274.4766\\33\\-116.2109\\-271.0866\\33\\-120.1172\\-268.2171\\33\\-122.0703\\-266.9154\\33\\-124.6109\\-264.7109\\33\\-126.9757\\-262.7578\\33\\-129.8828\\-260.0811\\33\\-131.0298\\-258.8516\\33\\-133.0119\\-256.8984\\33\\-134.8852\\-254.9453\\33\\-136.5222\\-252.9922\\33\\-139.6484\\-248.8057\\33\\-142.194\\-245.1797\\33\\-143.0491\\-243.2266\\33\\-144.2686\\-241.2734\\33\\-145.1185\\-239.3203\\33\\-146.2992\\-237.3672\\33\\-148.1379\\-233.4609\\33\\-148.6709\\-231.5078\\33\\-150.1194\\-227.6016\\33\\-150.501\\-225.6484\\33\\-151.0302\\-223.6953\\33\\-151.8409\\-221.7422\\33\\-152.7817\\-217.8359\\33\\-153.4947\\-215.8828\\33\\-153.9621\\-213.9297\\33\\-154.6244\\-210.0234\\33\\-155.4312\\-206.1172\\33\\-155.7584\\-204.1641\\33\\-156.1435\\-200.2578\\33\\-156.2442\\-198.3047\\33\\-156.4442\\-192.4453\\33\\-156.497\\-188.5391\\33\\-156.497\\-184.6328\\33\\-156.4374\\-180.7266\\33\\-156.3017\\-176.8203\\33\\-156.0872\\-172.9141\\33\\-155.6764\\-169.0078\\33\\-154.8626\\-165.1016\\33\\-153.9039\\-159.2422\\33\\-153.4158\\-157.2891\\33\\-152.7751\\-155.3359\\33\\-151.8729\\-151.4297\\33\\-151.0771\\-149.4766\\33\\-150.5309\\-147.5234\\33\\-150.1237\\-145.5703\\33\\-148.7317\\-141.6641\\33\\-148.1995\\-139.7109\\33\\-146.5766\\-135.8047\\33\\-145.8506\\-133.8516\\33\\-144.7783\\-131.8984\\33\\-144.1239\\-129.9453\\33\\-143.0835\\-127.9922\\33\\-142.4744\\-126.0391\\33\\-141.6095\\-124.0859\\33\\-139.6563\\-120.1797\\33\\-137.5184\\-116.2734\\33\\-136.6205\\-114.3203\\33\\-134.5667\\-110.4141\\33\\-133.1712\\-108.4609\\33\\-131.9074\\-106.5078\\33\\-130.5272\\-104.5547\\33\\-127.9297\\-101.1929\\33\\-125.5383\\-98.69531\\33\\-123.5672\\-96.74219\\33\\-121.3503\\-94.78906\\33\\-118.1641\\-92.3726\\33\\-116.0265\\-90.88281\\33\\-112.3047\\-88.84235\\33\\-110.3516\\-87.94052\\33\\-108.3984\\-87.17188\\33\\-106.4453\\-86.23553\\33\\-104.4922\\-85.56245\\33\\-102.5391\\-84.53212\\33\\-100.5859\\-83.80855\\33\\-96.67969\\-82.20155\\33\\-94.72656\\-81.70571\\33\\-92.77344\\-80.84345\\33\\-88.86719\\-79.87601\\33\\-86.91406\\-79.29688\\33\\-84.96094\\-78.59837\\33\\-83.00781\\-78.05405\\33\\-81.05469\\-77.66016\\33\\-77.14844\\-76.64453\\33\\-75.19531\\-76.33685\\33\\-69.33594\\-75.72993\\33\\-65.42969\\-74.78455\\33\\-59.57031\\-74.54341\\33\\-51.75781\\-74.53994\\33\\-49.80469\\-74.57422\\33\\-43.94531\\-74.81116\\33\\-40.03906\\-75.75912\\33\\-34.17969\\-76.3054\\33\\-32.22656\\-76.57047\\33\\-30.27344\\-76.99623\\33\\-28.32031\\-77.54745\\33\\-24.41406\\-78.36208\\33\\-22.46094\\-78.8601\\33\\-20.50781\\-79.5423\\33\\-18.55469\\-79.99355\\33\\-16.60156\\-80.23714\\33\\-14.64844\\-81.18983\\33\\-12.69531\\-81.95863\\33\\-10.74219\\-82.48179\\33\\-8.789063\\-83.43226\\33\\-6.835938\\-83.98909\\33\\-4.882813\\-84.43981\\33\\-2.929688\\-84.74161\\33\\2.929688\\-84.98588\\33\\4.882813\\-85.00072\\33\\6.835938\\-84.77596\\33\\10.74219\\-83.70693\\33\\12.69531\\-82.70061\\33\\14.64844\\-81.93725\\33\\16.60156\\-80.95313\\33\\18.55469\\-80.17153\\33\\22.46094\\-78.45435\\33\\24.41406\\-77.76453\\33\\26.36719\\-76.97571\\33\\28.32031\\-76.4333\\33\\34.17969\\-75.65517\\33\\38.08594\\-74.81461\\33\\41.99219\\-74.55653\\33\\49.80469\\-74.41637\\33\\53.71094\\-74.42866\\33\\59.57031\\-74.58684\\33\\63.47656\\-74.85659\\33\\65.42969\\-75.16521\\33\\67.38281\\-75.58334\\33\\69.33594\\-75.82544\\33\\73.24219\\-76.12016\\33\\77.14844\\-76.56192\\33\\79.10156\\-76.94273\\33\\81.05469\\-77.45164\\33\\84.96094\\-78.17123\\33\\86.91406\\-78.58727\\33\\90.82031\\-79.6791\\33\\94.72656\\-80.50208\\33\\96.67969\\-81.26682\\33\\98.63281\\-81.90949\\33\\100.5859\\-82.37708\\33\\102.5391\\-83.23919\\33\\106.4453\\-84.8072\\33\\108.3984\\-85.79877\\33\\110.3516\\-86.52433\\33\\112.3047\\-87.60807\\33\\114.2578\\-88.32923\\33\\117.8414\\-90.88281\\33\\120.1172\\-92.57685\\33\\122.5698\\-94.78906\\33\\124.3014\\-96.74219\\33\\125.7176\\-98.69531\\33\\127.2943\\-100.6484\\33\\128.7456\\-102.6016\\33\\129.9235\\-104.5547\\33\\130.9854\\-106.5078\\33\\132.3515\\-108.4609\\33\\133.3866\\-110.4141\\33\\134.6068\\-112.3672\\33\\135.5362\\-114.3203\\33\\136.5662\\-116.2734\\33\\137.2514\\-118.2266\\33\\138.4\\-120.1797\\33\\139.2109\\-122.1328\\33\\140.3013\\-124.0859\\33\\141.0168\\-126.0391\\33\\142.0393\\-127.9922\\33\\143.1599\\-131.8984\\33\\144.1013\\-133.8516\\33\\144.6715\\-135.8047\\33\\146.2816\\-139.7109\\33\\146.8632\\-141.6641\\33\\147.7016\\-143.6172\\33\\148.2387\\-145.5703\\33\\149.047\\-149.4766\\33\\149.7206\\-151.4297\\33\\150.1465\\-153.3828\\33\\150.6987\\-157.2891\\33\\151.132\\-159.2422\\33\\151.682\\-161.1953\\33\\152.0508\\-163.1484\\33\\152.7207\\-169.0078\\33\\153.4819\\-172.9141\\33\\153.7195\\-174.8672\\33\\153.9805\\-178.7734\\33\\154.1748\\-184.6328\\33\\154.2057\\-188.5391\\33\\154.1842\\-192.4453\\33\\154.0093\\-200.2578\\33\\153.7195\\-206.1172\\33\\153.532\\-208.0703\\33\\152.9208\\-211.9766\\33\\152.0957\\-217.8359\\33\\151.6927\\-219.7891\\33\\150.9859\\-221.7422\\33\\150.1965\\-225.6484\\33\\149.6033\\-227.6016\\33\\148.7609\\-229.5547\\33\\148.1706\\-231.5078\\33\\147.0848\\-233.4609\\33\\146.1298\\-235.4141\\33\\144.7815\\-237.3672\\33\\143.7137\\-239.3203\\33\\142.4967\\-241.2734\\33\\141.6016\\-242.5203\\33\\137.6953\\-247.5153\\33\\136.3196\\-249.0859\\33\\134.4788\\-251.0391\\33\\133.7891\\-251.6405\\33\\131.8359\\-253.6712\\33\\129.8828\\-255.5655\\33\\123.8683\\-260.8047\\33\\121.3884\\-262.7578\\33\\118.1641\\-265.1725\\33\\116.0498\\-266.6641\\33\\112.3047\\-269.143\\33\\110.3516\\-269.9709\\33\\108.3984\\-271.2195\\33\\106.4453\\-272.0958\\33\\104.4922\\-273.276\\33\\102.5391\\-274.0927\\33\\100.5859\\-275.0917\\33\\98.63281\\-275.6472\\33\\94.72656\\-277.1635\\33\\92.77344\\-277.6623\\33\\90.82031\\-278.4648\\33\\88.86719\\-279.1166\\33\\86.91406\\-279.6326\\33\\83.00781\\-280.9768\\33\\79.10156\\-281.8109\\33\\77.14844\\-282.4645\\33\\75.19531\\-283.0032\\33\\73.24219\\-283.3508\\33\\71.28906\\-283.8208\\33\\69.33594\\-284.6607\\33\\65.42969\\-285.7759\\33\\63.47656\\-286.6538\\33\\59.57031\\-287.7432\\33\\57.61719\\-288.5593\\33\\55.66406\\-289.0357\\33\\53.71094\\-289.3929\\33\\49.80469\\-290.8562\\33\\47.85156\\-291.33\\33\\45.89844\\-292.1355\\33\\43.94531\\-292.8125\\33\\41.99219\\-293.2874\\33\\40.03906\\-294.0311\\33\\38.08594\\-294.6447\\33\\34.17969\\-295.3673\\33\\30.27344\\-296.5824\\33\\26.36719\\-297.2316\\33\\24.41406\\-297.7346\\33\\22.46094\\-298.3579\\33\\20.50781\\-298.6768\\33\\16.60156\\-299.2071\\33\\10.74219\\-300.1602\\33\\6.835938\\-300.4326\\33\\4.882813\\-300.5051\\33\\-0.9765625\\-300.5536\\33\\-4.882813\\-300.4747\\33\\-8.789063\\-300.2952\\33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "293"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "143"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-12.69531\\-300.0026\\35\\-16.60156\\-299.3641\\35\\-24.41406\\-298.3849\\35\\-28.32031\\-297.3585\\35\\-34.17969\\-296.5983\\35\\-36.13281\\-296.1723\\35\\-38.08594\\-295.5853\\35\\-40.03906\\-295.2546\\35\\-43.94531\\-294.7003\\35\\-45.89844\\-294.2859\\35\\-47.85156\\-293.6361\\35\\-49.80469\\-293.1658\\35\\-53.71094\\-292.3802\\35\\-55.66406\\-291.599\\35\\-59.57031\\-290.8415\\35\\-61.52344\\-290.3642\\35\\-63.47656\\-289.6523\\35\\-65.42969\\-289.3285\\35\\-69.33594\\-288.8179\\35\\-71.28906\\-288.3727\\35\\-73.24219\\-287.7646\\35\\-75.19531\\-287.3264\\35\\-79.10156\\-286.5647\\35\\-81.05469\\-285.9096\\35\\-83.00781\\-285.3798\\35\\-84.96094\\-284.9746\\35\\-86.91406\\-284.4038\\35\\-88.86719\\-283.6295\\35\\-92.77344\\-282.774\\35\\-94.72656\\-281.9359\\35\\-98.63281\\-280.7763\\35\\-100.5859\\-279.7453\\35\\-102.5391\\-278.9755\\35\\-104.4922\\-277.767\\35\\-106.4453\\-276.9594\\35\\-108.3984\\-275.7303\\35\\-110.3516\\-274.8284\\35\\-112.3047\\-273.4887\\35\\-114.2578\\-272.0159\\35\\-116.2109\\-270.7866\\35\\-118.1641\\-269.4385\\35\\-121.8783\\-266.6641\\35\\-124.1921\\-264.7109\\35\\-125.9766\\-263.3286\\35\\-127.9297\\-261.6274\\35\\-134.6062\\-254.9453\\35\\-136.241\\-252.9922\\35\\-137.5732\\-251.0391\\35\\-140.546\\-247.1328\\35\\-141.8837\\-245.1797\\35\\-142.8158\\-243.2266\\35\\-144.0303\\-241.2734\\35\\-144.8353\\-239.3203\\35\\-146.077\\-237.3672\\35\\-146.8798\\-235.4141\\35\\-147.9239\\-233.4609\\35\\-149.0673\\-229.5547\\35\\-149.9414\\-227.6016\\35\\-150.796\\-223.6953\\35\\-151.5789\\-221.7422\\35\\-152.1434\\-219.7891\\35\\-152.5704\\-217.8359\\35\\-153.7724\\-213.9297\\35\\-154.7402\\-208.0703\\35\\-155.5139\\-204.1641\\35\\-155.992\\-200.2578\\35\\-156.2731\\-194.3984\\35\\-156.3579\\-190.4922\\35\\-156.3806\\-184.6328\\35\\-156.3193\\-180.7266\\35\\-156.1735\\-176.8203\\35\\-155.9098\\-172.9141\\35\\-155.387\\-169.0078\\35\\-154.9341\\-167.0547\\35\\-154.0139\\-161.1953\\35\\-153.6284\\-159.2422\\35\\-152.9729\\-157.2891\\35\\-152.481\\-155.3359\\35\\-152.0996\\-153.3828\\35\\-151.5158\\-151.4297\\35\\-150.7501\\-149.4766\\35\\-149.889\\-145.5703\\35\\-149.0698\\-143.6172\\35\\-147.9556\\-139.7109\\35\\-146.998\\-137.7578\\35\\-146.3092\\-135.8047\\35\\-145.3651\\-133.8516\\35\\-143.7916\\-129.9453\\35\\-142.8269\\-127.9922\\35\\-142.2547\\-126.0391\\35\\-141.2229\\-124.0859\\35\\-140.433\\-122.1328\\35\\-139.2195\\-120.1797\\35\\-138.3445\\-118.2266\\35\\-137.1644\\-116.2734\\35\\-136.4212\\-114.3203\\35\\-135.2573\\-112.3672\\35\\-134.2431\\-110.4141\\35\\-131.8359\\-106.9699\\35\\-131.4438\\-106.5078\\35\\-130.2426\\-104.5547\\35\\-128.7658\\-102.6016\\35\\-127.0487\\-100.6484\\35\\-122.0703\\-95.69827\\35\\-120.1172\\-94.06306\\35\\-116.2109\\-91.50487\\35\\-114.2578\\-90.07006\\35\\-112.3047\\-89.17199\\35\\-110.3516\\-88.09898\\35\\-108.3984\\-87.41138\\35\\-106.4453\\-86.40175\\35\\-104.4922\\-85.72099\\35\\-102.5391\\-84.7285\\35\\-98.63281\\-83.26277\\35\\-96.67969\\-82.35244\\35\\-94.72656\\-81.84808\\35\\-92.77344\\-81.0765\\35\\-90.82031\\-80.46407\\35\\-86.91406\\-79.42497\\35\\-84.96094\\-78.73341\\35\\-83.00781\\-78.1875\\35\\-81.05469\\-77.76808\\35\\-77.14844\\-76.7746\\35\\-75.19531\\-76.3961\\35\\-73.24219\\-76.17043\\35\\-69.33594\\-75.81855\\35\\-67.38281\\-75.5621\\35\\-65.42969\\-74.91361\\35\\-63.47656\\-74.79173\\35\\-59.57031\\-74.65002\\35\\-51.75781\\-74.63146\\35\\-45.89844\\-74.85345\\35\\-43.94531\\-75.00126\\35\\-41.99219\\-75.64707\\35\\-40.03906\\-75.86895\\35\\-34.17969\\-76.41411\\35\\-32.22656\\-76.73568\\35\\-28.32031\\-77.69922\\35\\-24.41406\\-78.5\\35\\-20.50781\\-79.63573\\35\\-16.60156\\-80.50605\\35\\-14.64844\\-81.35006\\35\\-12.69531\\-82.00777\\35\\-10.74219\\-82.5322\\35\\-8.789063\\-83.45687\\35\\-6.835938\\-83.94643\\35\\-4.882813\\-84.22962\\35\\-2.929688\\-84.31815\\35\\0.9765625\\-84.29712\\35\\6.835938\\-84.36626\\35\\8.789063\\-84.13304\\35\\10.74219\\-83.70293\\35\\12.69531\\-82.74718\\35\\14.64844\\-82.00667\\35\\18.55469\\-80.25259\\35\\20.50781\\-79.51591\\35\\22.46094\\-78.61651\\35\\24.41406\\-77.88843\\35\\28.32031\\-76.55779\\35\\30.27344\\-76.24607\\35\\36.13281\\-75.58104\\35\\38.08594\\-74.94563\\35\\40.03906\\-74.76953\\35\\43.94531\\-74.59562\\35\\49.80469\\-74.49052\\35\\57.61719\\-74.63636\\35\\61.52344\\-74.82963\\35\\63.47656\\-75.13261\\35\\65.42969\\-75.5948\\35\\67.38281\\-75.79335\\35\\73.24219\\-76.2458\\35\\75.19531\\-76.43807\\35\\77.14844\\-76.7487\\35\\81.05469\\-77.70532\\35\\84.96094\\-78.38174\\35\\86.91406\\-78.81529\\35\\88.86719\\-79.43574\\35\\92.77344\\-80.24716\\35\\94.72656\\-80.70856\\35\\96.67969\\-81.52055\\35\\100.5859\\-82.54398\\35\\102.5391\\-83.49633\\35\\104.4922\\-84.21888\\35\\108.3984\\-85.97688\\35\\110.3516\\-86.76363\\35\\112.3047\\-87.77896\\35\\114.2578\\-88.57784\\35\\116.2109\\-89.93021\\35\\119.969\\-92.83594\\35\\122.3063\\-94.78906\\35\\124.0234\\-96.85866\\35\\125.3581\\-98.69531\\35\\126.9904\\-100.6484\\35\\128.5077\\-102.6016\\35\\129.4936\\-104.5547\\35\\132.0243\\-108.4609\\35\\133.0857\\-110.4141\\35\\134.3675\\-112.3672\\35\\135.2405\\-114.3203\\35\\136.3782\\-116.2734\\35\\137.0049\\-118.2266\\35\\138.1566\\-120.1797\\35\\138.9286\\-122.1328\\35\\140.0328\\-124.0859\\35\\140.7813\\-126.0391\\35\\141.7593\\-127.9922\\35\\142.4583\\-129.9453\\35\\142.9572\\-131.8984\\35\\143.8779\\-133.8516\\35\\145.1317\\-137.7578\\35\\146.0732\\-139.7109\\35\\146.64\\-141.6641\\35\\148.0736\\-145.5703\\35\\148.8607\\-149.4766\\35\\149.9911\\-153.3828\\35\\150.5325\\-157.2891\\35\\150.882\\-159.2422\\35\\151.8755\\-163.1484\\35\\152.1295\\-165.1016\\35\\152.5236\\-169.0078\\35\\153.4947\\-174.8672\\35\\153.823\\-178.7734\\35\\154.0125\\-184.6328\\35\\154.0232\\-192.4453\\35\\153.823\\-200.2578\\35\\153.6021\\-204.1641\\35\\153.4151\\-206.1172\\35\\152.6345\\-211.9766\\35\\152.1752\\-215.8828\\35\\151.867\\-217.8359\\35\\150.7103\\-221.7422\\35\\149.9949\\-225.6484\\35\\149.2248\\-227.6016\\35\\147.9201\\-231.5078\\35\\146.7733\\-233.4609\\35\\145.7935\\-235.4141\\35\\143.5547\\-238.9505\\35\\143.264\\-239.3203\\35\\142.2721\\-241.2734\\35\\140.7314\\-243.2266\\35\\139.0728\\-245.1797\\35\\135.9883\\-249.0859\\35\\129.8828\\-255.1794\\35\\127.9031\\-256.8984\\35\\125.9766\\-258.4566\\35\\123.3225\\-260.8047\\35\\120.1172\\-263.3851\\35\\118.1641\\-264.6207\\35\\114.2578\\-267.4799\\35\\112.3047\\-268.6254\\35\\110.3516\\-269.6247\\35\\108.3984\\-270.7355\\35\\106.4453\\-271.6477\\35\\104.4922\\-272.7658\\35\\100.5859\\-274.5452\\35\\98.63281\\-275.3057\\35\\96.67969\\-275.8333\\35\\94.72656\\-276.6829\\35\\92.77344\\-277.287\\35\\90.82031\\-277.7833\\35\\88.86719\\-278.6098\\35\\84.96094\\-279.7226\\35\\83.00781\\-280.4879\\35\\81.05469\\-281.0478\\35\\77.14844\\-281.9423\\35\\75.19531\\-282.6727\\35\\71.28906\\-283.5229\\35\\67.38281\\-285\\35\\65.42969\\-285.5424\\35\\63.47656\\-286.431\\35\\59.57031\\-287.5824\\35\\57.61719\\-288.4264\\35\\55.66406\\-288.9692\\35\\53.71094\\-289.3407\\35\\49.80469\\-290.8277\\35\\47.85156\\-291.3133\\35\\45.89844\\-292.1213\\35\\43.94531\\-292.8063\\35\\41.99219\\-293.304\\35\\40.03906\\-294.0612\\35\\38.08594\\-294.6728\\35\\34.17969\\-295.3929\\35\\30.27344\\-296.6255\\35\\26.36719\\-297.2612\\35\\22.46094\\-298.4109\\35\\16.60156\\-299.2589\\35\\12.69531\\-299.9619\\35\\10.74219\\-300.224\\35\\8.789063\\-300.3759\\35\\4.882813\\-300.5389\\35\\0.9765625\\-300.601\\35\\-4.882813\\-300.5313\\35\\-8.789063\\-300.3555\\35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "303"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "144"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-12.69531\\-300.091\\37\\-16.60156\\-299.4311\\37\\-24.41406\\-298.4109\\37\\-28.32031\\-297.3873\\37\\-34.17969\\-296.5904\\37\\-36.13281\\-296.1324\\37\\-38.08594\\-295.5636\\37\\-43.94531\\-294.6648\\37\\-45.89844\\-294.2115\\37\\-47.85156\\-293.5436\\37\\-49.80469\\-293.0947\\37\\-51.75781\\-292.7449\\37\\-53.71094\\-292.1901\\37\\-55.66406\\-291.4567\\37\\-59.57031\\-290.722\\37\\-63.47656\\-289.4935\\37\\-67.38281\\-288.988\\37\\-69.33594\\-288.6269\\37\\-73.24219\\-287.5034\\37\\-77.14844\\-286.7379\\37\\-81.05469\\-285.5608\\37\\-84.96094\\-284.6795\\37\\-86.91406\\-283.8963\\37\\-88.86719\\-283.3947\\37\\-90.82031\\-283.0305\\37\\-92.77344\\-282.4198\\37\\-94.72656\\-281.6568\\37\\-96.67969\\-281.1507\\37\\-98.63281\\-280.3893\\37\\-100.5859\\-279.4534\\37\\-102.5391\\-278.6437\\37\\-104.4922\\-277.5039\\37\\-106.7096\\-276.4297\\37\\-110.3403\\-274.4766\\37\\-112.3047\\-273.2415\\37\\-114.2578\\-271.7365\\37\\-116.2109\\-270.4022\\37\\-118.1641\\-269.2166\\37\\-121.441\\-266.6641\\37\\-124.0234\\-264.411\\37\\-125.9766\\-262.9547\\37\\-128.4846\\-260.8047\\37\\-134.2879\\-254.9453\\37\\-135.8154\\-252.9922\\37\\-137.1824\\-251.0391\\37\\-140.3052\\-247.1328\\37\\-141.6016\\-245.0132\\37\\-143.7262\\-241.2734\\37\\-144.6076\\-239.3203\\37\\-145.7859\\-237.3672\\37\\-146.6453\\-235.4141\\37\\-147.6506\\-233.4609\\37\\-148.3191\\-231.5078\\37\\-148.8477\\-229.5547\\37\\-149.7085\\-227.6016\\37\\-150.2355\\-225.6484\\37\\-150.6076\\-223.6953\\37\\-151.9619\\-219.7891\\37\\-152.8719\\-215.8828\\37\\-153.532\\-213.9297\\37\\-153.9621\\-211.9766\\37\\-154.8626\\-206.1172\\37\\-155.5777\\-202.2109\\37\\-155.9639\\-198.3047\\37\\-156.1488\\-194.3984\\37\\-156.25\\-190.4922\\37\\-156.2847\\-186.5859\\37\\-156.2558\\-182.6797\\37\\-156.0364\\-176.8203\\37\\-155.7112\\-172.9141\\37\\-154.6913\\-167.0547\\37\\-154.1242\\-163.1484\\37\\-153.7816\\-161.1953\\37\\-152.6599\\-157.2891\\37\\-151.8409\\-153.3828\\37\\-151.0533\\-151.4297\\37\\-150.5168\\-149.4766\\37\\-150.1801\\-147.5234\\37\\-149.5602\\-145.5703\\37\\-148.7997\\-143.6172\\37\\-148.3191\\-141.6641\\37\\-147.6163\\-139.7109\\37\\-146.692\\-137.7578\\37\\-146.0049\\-135.8047\\37\\-144.9577\\-133.8516\\37\\-144.3028\\-131.8984\\37\\-143.3368\\-129.9453\\37\\-141.9936\\-126.0391\\37\\-140.925\\-124.0859\\37\\-140.1602\\-122.1328\\37\\-138.9146\\-120.1797\\37\\-138.0744\\-118.2266\\37\\-136.9105\\-116.2734\\37\\-136.1597\\-114.3203\\37\\-134.9696\\-112.3672\\37\\-133.9111\\-110.4141\\37\\-132.6015\\-108.4609\\37\\-131.1035\\-106.5078\\37\\-128.5087\\-102.6016\\37\\-126.7424\\-100.6484\\37\\-122.0703\\-95.9596\\37\\-120.1172\\-94.35424\\37\\-118.1641\\-93.20403\\37\\-114.2578\\-90.31813\\37\\-112.3047\\-89.42793\\37\\-110.3516\\-88.31186\\37\\-108.3984\\-87.61661\\37\\-106.4453\\-86.59267\\37\\-104.4922\\-85.92004\\37\\-100.5859\\-84.15475\\37\\-98.63281\\-83.53625\\37\\-96.67969\\-82.56866\\37\\-92.77344\\-81.33844\\37\\-90.82031\\-80.5863\\37\\-86.91406\\-79.559\\37\\-84.96094\\-78.87109\\37\\-83.00781\\-78.29534\\37\\-79.10156\\-77.4479\\37\\-75.19531\\-76.49437\\37\\-73.24219\\-76.24593\\37\\-67.38281\\-75.73307\\37\\-63.47656\\-74.97993\\37\\-59.57031\\-74.77315\\37\\-57.61719\\-74.73089\\37\\-51.75781\\-74.70279\\37\\-47.85156\\-74.85345\\37\\-45.89844\\-75.03436\\37\\-43.94531\\-75.47566\\37\\-41.99219\\-75.77822\\37\\-34.17969\\-76.52919\\37\\-32.22656\\-76.90147\\37\\-30.27344\\-77.41917\\37\\-26.36719\\-78.19318\\37\\-24.41406\\-78.63731\\37\\-20.50781\\-79.75766\\37\\-16.60156\\-80.70856\\37\\-14.64844\\-81.49498\\37\\-10.74219\\-82.58881\\37\\-8.789063\\-83.43226\\37\\-6.835938\\-83.83433\\37\\-4.882813\\-83.98369\\37\\-2.929688\\-83.9767\\37\\0.9765625\\-83.85767\\37\\2.929688\\-83.85767\\37\\6.835938\\-83.97498\\37\\8.789063\\-83.93266\\37\\10.74219\\-83.63998\\37\\12.69531\\-82.77151\\37\\14.64844\\-82.08131\\37\\16.60156\\-81.28125\\37\\18.55469\\-80.36257\\37\\20.50781\\-79.69612\\37\\22.46094\\-78.76733\\37\\24.41406\\-78.01766\\37\\26.36719\\-77.45683\\37\\28.32031\\-76.71606\\37\\30.27344\\-76.33685\\37\\36.13281\\-75.73967\\37\\38.08594\\-75.41679\\37\\40.03906\\-74.9375\\37\\43.94531\\-74.70279\\37\\49.80469\\-74.59562\\37\\51.75781\\-74.609\\37\\57.61719\\-74.79523\\37\\59.57031\\-74.89354\\37\\61.52344\\-75.13261\\37\\63.47656\\-75.58334\\37\\65.42969\\-75.7774\\37\\73.24219\\-76.36968\\37\\75.19531\\-76.63246\\37\\77.14844\\-76.9947\\37\\79.10156\\-77.50255\\37\\84.96094\\-78.58387\\37\\88.86719\\-79.65234\\37\\92.77344\\-80.41087\\37\\94.72656\\-80.96875\\37\\96.67969\\-81.74908\\37\\98.63281\\-82.16477\\37\\100.5859\\-82.76084\\37\\102.5391\\-83.71937\\37\\104.4922\\-84.39774\\37\\106.4453\\-85.42355\\37\\108.3984\\-86.1551\\37\\110.3516\\-87.11264\\37\\112.3047\\-87.95313\\37\\114.2456\\-88.92969\\37\\116.2109\\-90.13494\\37\\119.5938\\-92.83594\\37\\121.9383\\-94.78906\\37\\124.0234\\-97.29907\\37\\125.0473\\-98.69531\\37\\126.7641\\-100.6484\\37\\128.2263\\-102.6016\\37\\129.2471\\-104.5547\\37\\130.5703\\-106.5078\\37\\131.573\\-108.4609\\37\\131.8359\\-108.7745\\37\\133.7891\\-111.9965\\37\\134.0771\\-112.3672\\37\\135.0098\\-114.3203\\37\\136.1647\\-116.2734\\37\\136.8401\\-118.2266\\37\\137.8569\\-120.1797\\37\\138.7036\\-122.1328\\37\\139.7155\\-124.0859\\37\\141.3933\\-127.9922\\37\\142.3035\\-129.9453\\37\\142.7821\\-131.8984\\37\\144.3327\\-135.8047\\37\\144.8821\\-137.7578\\37\\145.8247\\-139.7109\\37\\147.0488\\-143.6172\\37\\147.8684\\-145.5703\\37\\148.3387\\-147.5234\\37\\148.6987\\-149.4766\\37\\149.1718\\-151.4297\\37\\149.8061\\-153.3828\\37\\150.1872\\-155.3359\\37\\150.6911\\-159.2422\\37\\151.0832\\-161.1953\\37\\151.649\\-163.1484\\37\\151.9809\\-165.1016\\37\\152.4131\\-169.0078\\37\\152.8965\\-172.9141\\37\\153.4288\\-176.8203\\37\\153.6243\\-178.7734\\37\\153.8028\\-182.6797\\37\\153.8728\\-188.5391\\37\\153.8483\\-192.4453\\37\\153.7457\\-196.3516\\37\\153.5794\\-200.2578\\37\\153.4288\\-202.2109\\37\\152.2174\\-213.9297\\37\\151.9661\\-215.8828\\37\\151.5416\\-217.8359\\37\\150.8916\\-219.7891\\37\\150.2173\\-223.6953\\37\\149.7228\\-225.6484\\37\\148.906\\-227.6016\\37\\148.372\\-229.5547\\37\\147.5886\\-231.5078\\37\\144.2932\\-237.3672\\37\\142.9452\\-239.3203\\37\\141.9705\\-241.2734\\37\\140.4665\\-243.2266\\37\\137.0157\\-247.1328\\37\\135.7422\\-248.8156\\37\\131.5207\\-252.9922\\37\\129.8828\\-254.6833\\37\\127.3837\\-256.8984\\37\\125.9766\\-258.0514\\37\\122.0703\\-261.5421\\37\\120.1172\\-262.9791\\37\\118.1641\\-264.1345\\37\\117.4837\\-264.7109\\37\\114.2578\\-267.0844\\37\\112.3047\\-268.1155\\37\\110.3516\\-269.3303\\37\\108.3984\\-270.1095\\37\\106.4453\\-271.278\\37\\104.4922\\-272.0575\\37\\102.5391\\-273.1991\\37\\100.5859\\-273.9089\\37\\98.63281\\-274.8931\\37\\94.72656\\-276.0181\\37\\92.77344\\-276.8748\\37\\88.86719\\-277.8978\\37\\86.91406\\-278.7672\\37\\83.00781\\-279.8572\\37\\81.05469\\-280.6503\\37\\77.14844\\-281.5986\\37\\75.19531\\-282.2024\\37\\73.24219\\-282.9128\\37\\71.28906\\-283.3281\\37\\69.33594\\-283.8583\\37\\67.38281\\-284.7897\\37\\65.42969\\-285.3545\\37\\61.52344\\-286.9185\\37\\59.57031\\-287.4518\\37\\57.61719\\-288.2771\\37\\55.66406\\-288.9114\\37\\53.71094\\-289.2907\\37\\51.75781\\-289.9275\\37\\49.80469\\-290.7948\\37\\47.85156\\-291.2827\\37\\43.94531\\-292.8187\\37\\41.99219\\-293.322\\37\\40.03906\\-294.1047\\37\\38.08594\\-294.7045\\37\\34.17969\\-295.4312\\37\\32.22656\\-296.1048\\37\\30.27344\\-296.6665\\37\\26.36719\\-297.2952\\37\\22.46094\\-298.4682\\37\\18.55469\\-299.0152\\37\\14.64844\\-299.6494\\37\\12.69531\\-300.0542\\37\\10.74219\\-300.2883\\37\\6.835938\\-300.5126\\37\\2.929688\\-300.6136\\37\\-0.9765625\\-300.6385\\37\\-4.882813\\-300.5647\\37\\-8.789063\\-300.4244\\37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "287"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "145"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-299.9048\\39\\-18.55469\\-299.2071\\39\\-24.41406\\-298.436\\39\\-28.32031\\-297.4048\\39\\-30.27344\\-297.0909\\39\\-34.17969\\-296.5983\\39\\-38.08594\\-295.5396\\39\\-43.94531\\-294.6331\\39\\-45.89844\\-294.1317\\39\\-47.85156\\-293.4506\\39\\-51.75781\\-292.6503\\39\\-53.71094\\-291.9462\\39\\-55.66406\\-291.3402\\39\\-59.57031\\-290.5691\\39\\-61.52344\\-289.7484\\39\\-63.47656\\-289.3238\\39\\-67.38281\\-288.8425\\39\\-69.33594\\-288.3854\\39\\-71.28906\\-287.7432\\39\\-73.24219\\-287.2871\\39\\-75.19531\\-286.929\\39\\-77.14844\\-286.4428\\39\\-79.10156\\-285.7311\\39\\-83.00781\\-284.8879\\39\\-86.91406\\-283.5734\\39\\-90.82031\\-282.7773\\39\\-92.77344\\-281.9925\\39\\-96.67969\\-280.8914\\39\\-98.63281\\-279.9285\\39\\-100.5859\\-279.1855\\39\\-102.5391\\-278.1569\\39\\-104.4922\\-277.2842\\39\\-106.4453\\-276.1837\\39\\-108.3984\\-275.3426\\39\\-110.3516\\-274.0956\\39\\-112.3047\\-272.9596\\39\\-112.824\\-272.5234\\39\\-115.6494\\-270.5703\\39\\-116.2109\\-270.082\\39\\-118.1641\\-268.9228\\39\\-121.0938\\-266.6641\\39\\-124.0234\\-264.0668\\39\\-127.9297\\-260.8612\\39\\-131.776\\-256.8984\\39\\-133.7972\\-254.9453\\39\\-137.6953\\-250.1176\\39\\-140.0099\\-247.1328\\39\\-141.1393\\-245.1797\\39\\-142.4143\\-243.2266\\39\\-145.3662\\-237.3672\\39\\-146.4304\\-235.4141\\39\\-148.1695\\-231.5078\\39\\-148.6832\\-229.5547\\39\\-150.0712\\-225.6484\\39\\-150.9543\\-221.7422\\39\\-151.7342\\-219.7891\\39\\-152.6345\\-215.8828\\39\\-153.7631\\-211.9766\\39\\-154.0896\\-210.0234\\39\\-154.9341\\-204.1641\\39\\-155.5873\\-200.2578\\39\\-155.7781\\-198.3047\\39\\-155.9966\\-194.3984\\39\\-156.125\\-190.4922\\39\\-156.1553\\-186.5859\\39\\-156.125\\-182.6797\\39\\-155.9842\\-178.7734\\39\\-155.6871\\-174.8672\\39\\-155.4436\\-172.9141\\39\\-155.0605\\-170.9609\\39\\-154.4655\\-167.0547\\39\\-153.9243\\-163.1484\\39\\-153.4947\\-161.1953\\39\\-152.8474\\-159.2422\\39\\-152.027\\-155.3359\\39\\-151.448\\-153.3828\\39\\-150.7463\\-151.4297\\39\\-149.9414\\-147.5234\\39\\-149.1681\\-145.5703\\39\\-148.069\\-141.6641\\39\\-147.1749\\-139.7109\\39\\-145.6026\\-135.8047\\39\\-144.6763\\-133.8516\\39\\-144.0365\\-131.8984\\39\\-143.0143\\-129.9453\\39\\-142.4744\\-127.9922\\39\\-141.6567\\-126.0391\\39\\-139.797\\-122.1328\\39\\-138.6773\\-120.1797\\39\\-136.7247\\-116.2734\\39\\-135.8613\\-114.3203\\39\\-134.7239\\-112.3672\\39\\-132.3085\\-108.4609\\39\\-129.3772\\-104.5547\\39\\-128.1834\\-102.6016\\39\\-126.3873\\-100.6484\\39\\-122.0703\\-96.28981\\39\\-120.0266\\-94.78906\\39\\-118.1641\\-93.52568\\39\\-116.2109\\-91.98872\\39\\-114.2578\\-90.67759\\39\\-112.3047\\-89.68514\\39\\-110.3516\\-88.5897\\39\\-108.3984\\-87.83569\\39\\-106.4453\\-86.84686\\39\\-102.5391\\-85.27662\\39\\-100.5859\\-84.36678\\39\\-98.63281\\-83.73911\\39\\-96.67969\\-82.80067\\39\\-94.72656\\-82.10574\\39\\-92.77344\\-81.59508\\39\\-90.82031\\-80.73078\\39\\-86.91406\\-79.73261\\39\\-83.00781\\-78.51497\\39\\-81.05469\\-78.03056\\39\\-79.10156\\-77.64713\\39\\-75.19531\\-76.61849\\39\\-71.28906\\-76.1597\\39\\-65.42969\\-75.67634\\39\\-63.47656\\-75.41679\\39\\-61.52344\\-75.02181\\39\\-59.57031\\-74.89923\\39\\-55.66406\\-74.7841\\39\\-51.75781\\-74.78055\\39\\-47.85156\\-75.00341\\39\\-45.89844\\-75.49068\\39\\-43.94531\\-75.73599\\39\\-36.13281\\-76.44744\\39\\-34.17969\\-76.68709\\39\\-30.27344\\-77.61838\\39\\-26.36719\\-78.36149\\39\\-24.41406\\-78.81529\\39\\-22.46094\\-79.44206\\39\\-18.55469\\-80.3275\\39\\-16.60156\\-80.85825\\39\\-14.64844\\-81.68187\\39\\-10.74219\\-82.62642\\39\\-8.789063\\-83.39354\\39\\-6.835938\\-83.70327\\39\\-4.882813\\-83.72738\\39\\0.9765625\\-83.39826\\39\\4.882813\\-83.42477\\39\\8.789063\\-83.62003\\39\\10.74219\\-83.44855\\39\\12.69531\\-82.73283\\39\\16.60156\\-81.51212\\39\\18.55469\\-80.49399\\39\\20.50781\\-79.86795\\39\\22.46094\\-78.94027\\39\\24.41406\\-78.16324\\39\\26.36719\\-77.64713\\39\\28.32031\\-76.94645\\39\\30.27344\\-76.44096\\39\\32.22656\\-76.21098\\39\\38.08594\\-75.67634\\39\\40.03906\\-75.19785\\39\\41.99219\\-74.90625\\39\\47.85156\\-74.75868\\39\\51.75781\\-74.75868\\39\\55.66406\\-74.89641\\39\\57.61719\\-75.07064\\39\\61.52344\\-75.61724\\39\\69.33594\\-76.18327\\39\\73.24219\\-76.55779\\39\\76.71067\\-77.21094\\39\\79.10156\\-77.73631\\39\\83.00781\\-78.37943\\39\\84.96094\\-78.82578\\39\\86.91406\\-79.44411\\39\\92.77344\\-80.5732\\39\\96.67969\\-81.89233\\39\\98.63281\\-82.32424\\39\\102.5391\\-83.90493\\39\\104.4922\\-84.616\\39\\106.4453\\-85.66431\\39\\108.3984\\-86.36772\\39\\110.3516\\-87.41138\\39\\112.3047\\-88.12215\\39\\114.2578\\-89.31895\\39\\116.2109\\-90.40791\\39\\119.2062\\-92.83594\\39\\121.5025\\-94.78906\\39\\122.0703\\-95.36578\\39\\125.9766\\-100.0744\\39\\126.4951\\-100.6484\\39\\127.9297\\-102.6951\\39\\130.3223\\-106.5078\\39\\131.2713\\-108.4609\\39\\131.8359\\-109.1955\\39\\133.7891\\-112.4865\\39\\135.8739\\-116.2734\\39\\137.4758\\-120.1797\\39\\138.5135\\-122.1328\\39\\139.3704\\-124.0859\\39\\140.4001\\-126.0391\\39\\141.1133\\-127.9922\\39\\142.1186\\-129.9453\\39\\143.2172\\-133.8516\\39\\144.1525\\-135.8047\\39\\144.6886\\-137.7578\\39\\146.2668\\-141.6641\\39\\146.808\\-143.6172\\39\\147.614\\-145.5703\\39\\148.1771\\-147.5234\\39\\148.9597\\-151.4297\\39\\149.5743\\-153.3828\\39\\150.0423\\-155.3359\\39\\150.5497\\-159.2422\\39\\150.8634\\-161.1953\\39\\151.8111\\-165.1016\\39\\152.0934\\-167.0547\\39\\152.6894\\-172.9141\\39\\153.343\\-178.7734\\39\\153.4947\\-180.7266\\39\\153.6351\\-184.6328\\39\\153.6668\\-188.5391\\39\\153.6243\\-192.4453\\39\\153.4689\\-196.3516\\39\\153.2241\\-200.2578\\39\\152.5866\\-208.0703\\39\\152.0165\\-213.9297\\39\\151.6927\\-215.8828\\39\\151.1195\\-217.8359\\39\\150.6606\\-219.7891\\39\\150.0213\\-223.6953\\39\\148.6863\\-227.6016\\39\\148.1506\\-229.5547\\39\\146.2294\\-233.4609\\39\\144.978\\-235.4141\\39\\144.0364\\-237.3672\\39\\141.6016\\-241.1819\\39\\140.1505\\-243.2266\\39\\139.6484\\-243.7469\\39\\135.0222\\-249.0859\\39\\130.9998\\-252.9922\\39\\129.8828\\-254.2129\\39\\126.9458\\-256.8984\\39\\124.6533\\-258.8516\\39\\122.0703\\-261.1764\\39\\120.1172\\-262.3969\\39\\116.2109\\-265.2843\\39\\114.0685\\-266.6641\\39\\110.7845\\-268.6172\\39\\110.3516\\-268.9353\\39\\108.3984\\-269.7289\\39\\106.4453\\-270.7628\\39\\104.4922\\-271.6072\\39\\102.5391\\-272.6336\\39\\98.63281\\-274.2289\\39\\96.67969\\-275.1212\\39\\94.72656\\-275.6148\\39\\92.77344\\-276.2237\\39\\90.82031\\-277.0255\\39\\88.86719\\-277.4844\\39\\86.91406\\-278.0785\\39\\84.96094\\-278.9096\\39\\81.05469\\-280.0423\\39\\79.10156\\-280.8211\\39\\75.19531\\-281.7908\\39\\73.24219\\-282.5857\\39\\69.33594\\-283.6092\\39\\67.38281\\-284.5371\\39\\63.47656\\-285.8922\\39\\61.52344\\-286.7933\\39\\59.57031\\-287.3365\\39\\55.66406\\-288.8389\\39\\53.71094\\-289.2552\\39\\51.75781\\-289.8319\\39\\49.80469\\-290.7613\\39\\47.85156\\-291.2663\\39\\43.94531\\-292.8165\\39\\41.99219\\-293.333\\39\\40.03906\\-294.1326\\39\\38.08594\\-294.7121\\39\\34.17969\\-295.45\\39\\32.22656\\-296.1459\\39\\30.27344\\-296.692\\39\\26.36719\\-297.3386\\39\\22.46094\\-298.4914\\39\\16.60156\\-299.3523\\39\\12.69531\\-300.1029\\39\\10.74219\\-300.3376\\39\\4.882813\\-300.6136\\39\\-0.9765625\\-300.6782\\39\\-4.882813\\-300.6094\\39\\-8.789063\\-300.4633\\39\\-12.69531\\-300.182\\39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "290"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "146"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-299.9893\\41\\-18.55469\\-299.2478\\41\\-24.41406\\-298.476\\41\\-28.32031\\-297.4168\\41\\-30.27344\\-297.0968\\41\\-34.17969\\-296.5824\\41\\-38.08594\\-295.5158\\41\\-43.94531\\-294.601\\41\\-47.85156\\-293.3733\\41\\-51.75781\\-292.5515\\41\\-53.71094\\-291.7598\\41\\-55.66406\\-291.2393\\41\\-57.61719\\-290.8699\\41\\-59.57031\\-290.3758\\41\\-61.52344\\-289.5355\\41\\-63.47656\\-289.2186\\41\\-65.42969\\-289.0185\\41\\-67.38281\\-288.6817\\41\\-71.28906\\-287.4875\\41\\-75.19531\\-286.7233\\41\\-77.14844\\-286.0184\\41\\-79.10156\\-285.4445\\41\\-83.00781\\-284.5677\\41\\-84.96094\\-283.8001\\41\\-86.91406\\-283.3549\\41\\-88.86719\\-283.023\\41\\-90.82031\\-282.4198\\41\\-92.77344\\-281.6916\\41\\-94.72656\\-281.1869\\41\\-96.67969\\-280.5645\\41\\-98.63281\\-279.5938\\41\\-100.5859\\-278.9191\\41\\-102.5391\\-277.7702\\41\\-104.4922\\-277.0416\\41\\-106.4453\\-275.8633\\41\\-108.3984\\-275.1039\\41\\-115.2836\\-270.5703\\41\\-116.2109\\-269.8247\\41\\-118.0725\\-268.6172\\41\\-120.1172\\-267.1494\\41\\-123.0395\\-264.7109\\41\\-127.5034\\-260.8047\\41\\-131.3365\\-256.8984\\41\\-133.7891\\-254.4532\\41\\-136.6726\\-251.0391\\41\\-138.1805\\-249.0859\\41\\-139.6484\\-246.9984\\41\\-141.6016\\-244.0239\\41\\-142.1928\\-243.2266\\41\\-143.0129\\-241.2734\\41\\-144.2195\\-239.3203\\41\\-145.0357\\-237.3672\\41\\-146.2195\\-235.4141\\41\\-146.9789\\-233.4609\\41\\-147.9839\\-231.5078\\41\\-149.0839\\-227.6016\\41\\-149.889\\-225.6484\\41\\-150.7221\\-221.7422\\41\\-151.4338\\-219.7891\\41\\-152.0412\\-217.8359\\41\\-152.8719\\-213.9297\\41\\-153.5073\\-211.9766\\41\\-153.9397\\-210.0234\\41\\-154.7181\\-204.1641\\41\\-155.5494\\-198.3047\\41\\-155.8415\\-194.3984\\41\\-156.0195\\-188.5391\\41\\-155.9719\\-182.6797\\41\\-155.8008\\-178.7734\\41\\-155.4436\\-174.8672\\41\\-154.7917\\-170.9609\\41\\-154.0132\\-165.1016\\41\\-153.6691\\-163.1484\\41\\-152.5745\\-159.2422\\41\\-151.7639\\-155.3359\\41\\-151.0189\\-153.3828\\41\\-150.5182\\-151.4297\\41\\-150.173\\-149.4766\\41\\-149.6169\\-147.5234\\41\\-148.8664\\-145.5703\\41\\-148.3665\\-143.6172\\41\\-147.7567\\-141.6641\\41\\-146.804\\-139.7109\\41\\-146.1457\\-137.7578\\41\\-145.1317\\-135.8047\\41\\-144.4658\\-133.8516\\41\\-143.6974\\-131.8984\\41\\-142.7917\\-129.9453\\41\\-142.2714\\-127.9922\\41\\-141.2669\\-126.0391\\41\\-140.4455\\-124.0859\\41\\-139.3527\\-122.1328\\41\\-138.4666\\-120.1797\\41\\-137.3175\\-118.2266\\41\\-136.5714\\-116.2734\\41\\-134.4954\\-112.3672\\41\\-133.132\\-110.4141\\41\\-131.9453\\-108.4609\\41\\-130.6253\\-106.5078\\41\\-127.9297\\-102.9271\\41\\-125.9766\\-100.71\\41\\-122.0703\\-96.71875\\41\\-120.1172\\-95.28413\\41\\-116.2109\\-92.24303\\41\\-112.3047\\-89.92456\\41\\-110.3516\\-88.87225\\41\\-106.4453\\-87.15625\\41\\-104.4922\\-86.21836\\41\\-102.5391\\-85.51172\\41\\-100.5859\\-84.57684\\41\\-98.63281\\-83.91629\\41\\-94.72656\\-82.2324\\41\\-92.77344\\-81.74039\\41\\-90.82031\\-80.91279\\41\\-88.86719\\-80.35369\\41\\-84.96094\\-79.36689\\41\\-83.00781\\-78.70555\\41\\-81.05469\\-78.17594\\41\\-79.10156\\-77.82356\\41\\-75.19531\\-76.82159\\41\\-73.24219\\-76.44536\\41\\-71.28906\\-76.24005\\41\\-63.47656\\-75.65245\\41\\-61.52344\\-75.46915\\41\\-59.57031\\-75.02181\\41\\-53.71094\\-74.875\\41\\-49.80469\\-75.00126\\41\\-47.85156\\-75.56658\\41\\-41.99219\\-76.00214\\41\\-36.13281\\-76.57047\\41\\-34.17969\\-76.92133\\41\\-32.22656\\-77.4034\\41\\-26.36719\\-78.51106\\41\\-22.46094\\-79.60916\\41\\-18.55469\\-80.46407\\41\\-16.60156\\-81.02985\\41\\-14.64844\\-81.81291\\41\\-10.74219\\-82.66456\\41\\-8.789063\\-83.28165\\41\\-6.835938\\-83.49921\\41\\-4.882813\\-83.38421\\41\\-0.9765625\\-82.87807\\41\\0.9765625\\-82.73283\\41\\4.882813\\-82.74718\\41\\8.789063\\-83.15836\\41\\10.74219\\-83.111\\41\\16.60156\\-81.65294\\41\\18.55469\\-80.59237\\41\\20.50781\\-79.97375\\41\\24.41406\\-78.40201\\41\\30.27344\\-76.56208\\41\\32.22656\\-76.31625\\41\\40.03906\\-75.60609\\41\\43.94531\\-75.32869\\41\\45.89844\\-74.97533\\41\\51.75781\\-74.93491\\41\\53.71094\\-75.00553\\41\\55.66406\\-75.44276\\41\\65.42969\\-76.06102\\41\\69.33594\\-76.34352\\41\\71.28906\\-76.54111\\41\\73.24219\\-76.85399\\41\\77.14844\\-77.62582\\41\\81.05469\\-78.23801\\41\\83.00781\\-78.62666\\41\\86.91406\\-79.69141\\41\\90.82031\\-80.35631\\41\\92.77344\\-80.7797\\41\\94.72656\\-81.60547\\41\\98.63281\\-82.50224\\41\\100.5859\\-83.40912\\41\\102.5391\\-84.09625\\41\\104.4922\\-84.90046\\41\\106.4453\\-85.85638\\41\\108.3984\\-86.58192\\41\\110.3516\\-87.62981\\41\\112.3047\\-88.30284\\41\\114.2578\\-89.59103\\41\\116.2109\\-90.77184\\41\\118.1641\\-92.2077\\41\\121.1999\\-94.78906\\41\\123.0341\\-96.74219\\41\\126.1644\\-100.6484\\41\\128.8635\\-104.5547\\41\\130.0469\\-106.5078\\41\\131.046\\-108.4609\\41\\132.3556\\-110.4141\\41\\133.3782\\-112.3672\\41\\134.6048\\-114.3203\\41\\136.5519\\-118.2266\\41\\137.2171\\-120.1797\\41\\138.3158\\-122.1328\\41\\139.0778\\-124.0859\\41\\140.2157\\-126.0391\\41\\140.895\\-127.9922\\41\\141.8973\\-129.9453\\41\\142.5062\\-131.8984\\41\\142.9938\\-133.8516\\41\\143.9466\\-135.8047\\41\\145.1317\\-139.7109\\41\\146.0634\\-141.6641\\41\\146.6201\\-143.6172\\41\\148.0076\\-147.5234\\41\\148.799\\-151.4297\\41\\149.2844\\-153.3828\\41\\149.8756\\-155.3359\\41\\150.2307\\-157.2891\\41\\150.6951\\-161.1953\\41\\151.0599\\-163.1484\\41\\151.6029\\-165.1016\\41\\151.94\\-167.0547\\41\\152.3582\\-170.9609\\41\\153.0461\\-178.7734\\41\\153.3579\\-184.6328\\41\\153.3725\\-188.5391\\41\\153.3279\\-192.4453\\41\\153.1964\\-194.3984\\41\\152.9062\\-200.2578\\41\\152.6638\\-204.1641\\41\\152.2326\\-210.0234\\41\\151.7736\\-213.9297\\41\\150.8206\\-217.8359\\41\\150.2057\\-221.7422\\41\\149.7608\\-223.6953\\41\\149.0193\\-225.6484\\41\\147.9102\\-229.5547\\41\\146.8395\\-231.5078\\41\\145.9782\\-233.4609\\41\\144.7115\\-235.4141\\41\\143.7124\\-237.3672\\41\\142.5472\\-239.3203\\41\\139.7199\\-243.2266\\41\\136.4648\\-247.1328\\41\\134.6762\\-249.0859\\41\\130.6728\\-252.9922\\41\\129.8828\\-253.8595\\41\\127.9297\\-255.7033\\41\\121.8985\\-260.8047\\41\\120.1172\\-262.0379\\41\\118.1641\\-263.5115\\41\\114.2578\\-266.0234\\41\\112.3047\\-267.3599\\41\\110.3516\\-268.3455\\41\\108.3984\\-269.4373\\41\\106.4453\\-270.0754\\41\\104.4922\\-271.2155\\41\\102.5391\\-271.9594\\41\\100.5859\\-273.0608\\41\\98.63281\\-273.717\\41\\96.67969\\-274.6355\\41\\94.72656\\-275.3076\\41\\92.77344\\-275.7679\\41\\88.86719\\-277.1707\\41\\86.91406\\-277.6188\\41\\83.00781\\-279.0866\\41\\81.05469\\-279.6021\\41\\77.14844\\-281.0403\\41\\75.19531\\-281.5187\\41\\73.24219\\-282.1441\\41\\71.28906\\-282.9464\\41\\69.33594\\-283.4141\\41\\67.38281\\-284.1724\\41\\65.42969\\-285.0308\\41\\63.47656\\-285.6829\\41\\61.52344\\-286.669\\41\\59.57031\\-287.2329\\41\\57.61719\\-287.9487\\41\\55.66406\\-288.7762\\41\\53.71094\\-289.2197\\41\\51.75781\\-289.7831\\41\\49.80469\\-290.7259\\41\\47.85156\\-291.2502\\41\\43.94531\\-292.8125\\41\\41.99219\\-293.333\\41\\40.03906\\-294.1326\\41\\38.08594\\-294.724\\41\\34.17969\\-295.45\\41\\32.22656\\-296.1739\\41\\30.27344\\-296.7126\\41\\26.36719\\-297.3636\\41\\24.41406\\-298.0226\\41\\22.46094\\-298.5284\\41\\16.60156\\-299.4066\\41\\12.69531\\-300.1602\\41\\10.74219\\-300.3672\\41\\6.835938\\-300.5871\\41\\2.929688\\-300.6987\\41\\-2.929688\\-300.6987\\41\\-8.789063\\-300.5051\\41\\-12.69531\\-300.2365\\41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "286"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "147"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-300.0542\\43\\-18.55469\\-299.31\\43\\-24.41406\\-298.5138\\43\\-26.36719\\-298.0361\\43\\-28.32031\\-297.4441\\43\\-30.27344\\-297.1132\\43\\-34.17969\\-296.5824\\43\\-38.08594\\-295.4956\\43\\-43.94531\\-294.5632\\43\\-47.85156\\-293.3264\\43\\-51.75781\\-292.4514\\43\\-53.71094\\-291.624\\43\\-57.61719\\-290.7648\\43\\-61.52344\\-289.4287\\43\\-65.42969\\-288.8945\\43\\-67.38281\\-288.4854\\43\\-69.33594\\-287.778\\43\\-71.28906\\-287.2981\\43\\-75.19531\\-286.4544\\43\\-77.14844\\-285.6717\\43\\-81.05469\\-284.7915\\43\\-83.00781\\-284.0856\\43\\-84.96094\\-283.5156\\43\\-88.86719\\-282.774\\43\\-90.82031\\-282.007\\43\\-94.72656\\-280.9616\\43\\-96.67969\\-280.1041\\43\\-100.5859\\-278.5444\\43\\-102.5391\\-277.4945\\43\\-104.4922\\-276.734\\43\\-106.4453\\-275.6522\\43\\-108.3984\\-274.8349\\43\\-110.3516\\-273.5407\\43\\-112.3047\\-272.1473\\43\\-114.2578\\-270.9941\\43\\-120.1172\\-266.8127\\43\\-122.7031\\-264.7109\\43\\-125.9766\\-261.8589\\43\\-127.9297\\-260.0603\\43\\-131.8359\\-256.1158\\43\\-134.753\\-252.9922\\43\\-136.368\\-251.0391\\43\\-137.7908\\-249.0859\\43\\-139.0788\\-247.1328\\43\\-140.5793\\-245.1797\\43\\-141.9149\\-243.2266\\43\\-142.7795\\-241.2734\\43\\-143.9938\\-239.3203\\43\\-144.7885\\-237.3672\\43\\-145.9872\\-235.4141\\43\\-146.7411\\-233.4609\\43\\-147.7449\\-231.5078\\43\\-148.3846\\-229.5547\\43\\-148.857\\-227.6016\\43\\-149.6582\\-225.6484\\43\\-150.2057\\-223.6953\\43\\-150.5692\\-221.7422\\43\\-151.0812\\-219.7891\\43\\-151.8497\\-217.8359\\43\\-152.6274\\-213.9297\\43\\-153.7604\\-210.0234\\43\\-154.0661\\-208.0703\\43\\-154.7688\\-202.2109\\43\\-155.5104\\-196.3516\\43\\-155.7216\\-192.4453\\43\\-155.8415\\-188.5391\\43\\-155.7878\\-182.6797\\43\\-155.5636\\-178.7734\\43\\-155.387\\-176.8203\\43\\-154.8181\\-172.9141\\43\\-154.3353\\-169.0078\\43\\-153.7997\\-165.1016\\43\\-152.7401\\-161.1953\\43\\-151.9694\\-157.2891\\43\\-150.7181\\-153.3828\\43\\-149.9509\\-149.4766\\43\\-149.2112\\-147.5234\\43\\-148.6291\\-145.5703\\43\\-148.1542\\-143.6172\\43\\-146.528\\-139.7109\\43\\-145.8506\\-137.7578\\43\\-144.8357\\-135.8047\\43\\-144.2644\\-133.8516\\43\\-143.2957\\-131.8984\\43\\-142.0288\\-127.9922\\43\\-140.9605\\-126.0391\\43\\-140.2057\\-124.0859\\43\\-139.0072\\-122.1328\\43\\-138.2285\\-120.1797\\43\\-137.0727\\-118.2266\\43\\-136.3911\\-116.2734\\43\\-135.2004\\-114.3203\\43\\-134.2475\\-112.3672\\43\\-133.7891\\-111.7962\\43\\-131.8359\\-108.8959\\43\\-131.4497\\-108.4609\\43\\-130.2921\\-106.5078\\43\\-128.8935\\-104.5547\\43\\-127.2626\\-102.6016\\43\\-123.5098\\-98.69531\\43\\-121.4919\\-96.74219\\43\\-118.1641\\-93.99818\\43\\-116.2109\\-92.64206\\43\\-112.3047\\-90.22977\\43\\-108.3984\\-88.13184\\43\\-106.4453\\-87.44728\\43\\-104.4922\\-86.43194\\43\\-102.5391\\-85.7588\\43\\-100.5859\\-84.84905\\43\\-96.67969\\-83.32349\\43\\-94.72656\\-82.37189\\43\\-92.77344\\-81.86983\\43\\-88.86719\\-80.46407\\43\\-84.96094\\-79.54771\\43\\-83.00781\\-78.88223\\43\\-81.05469\\-78.35409\\43\\-77.14844\\-77.55206\\43\\-73.24219\\-76.54111\\43\\-71.28906\\-76.30994\\43\\-63.47656\\-75.77146\\43\\-59.57031\\-75.5621\\43\\-55.66406\\-75.18003\\43\\-51.75781\\-75.34515\\43\\-47.85156\\-75.79107\\43\\-43.94531\\-75.96749\\43\\-40.03906\\-76.30455\\43\\-36.13281\\-76.72926\\43\\-32.22656\\-77.6157\\43\\-28.32031\\-78.27782\\43\\-26.36719\\-78.71195\\43\\-24.41406\\-79.29478\\43\\-22.46094\\-79.77129\\43\\-18.55469\\-80.57682\\43\\-14.64844\\-81.89721\\43\\-12.69531\\-82.26857\\43\\-8.789063\\-83.12544\\43\\-6.835938\\-83.17027\\43\\-2.929688\\-82.63255\\43\\-0.9765625\\-82.44711\\43\\0.9765625\\-82.37096\\43\\4.882813\\-82.37189\\43\\8.789063\\-82.59213\\43\\10.74219\\-82.6508\\43\\12.69531\\-82.44826\\43\\16.60156\\-81.67424\\43\\18.55469\\-80.67017\\43\\22.46094\\-79.41006\\43\\24.41406\\-78.5949\\43\\30.27344\\-76.8035\\43\\32.22656\\-76.42125\\43\\38.08594\\-75.9231\\43\\41.99219\\-75.71004\\43\\47.85156\\-75.5338\\43\\51.75781\\-75.5338\\43\\61.52344\\-75.95788\\43\\65.42969\\-76.19971\\43\\69.33594\\-76.52552\\43\\71.28906\\-76.79803\\43\\75.19531\\-77.57715\\43\\79.10156\\-78.1544\\43\\83.00781\\-78.90498\\43\\84.96094\\-79.49666\\43\\88.86719\\-80.232\\43\\90.82031\\-80.51083\\43\\92.77344\\-81.06022\\43\\94.72656\\-81.78701\\43\\96.67969\\-82.18961\\43\\98.63281\\-82.74709\\43\\100.5859\\-83.65982\\43\\102.5391\\-84.28821\\43\\104.4922\\-85.28718\\43\\108.3984\\-86.8913\\43\\110.3516\\-87.80914\\43\\112.3047\\-88.57784\\43\\114.2578\\-89.79581\\43\\118.1641\\-92.50092\\43\\120.9491\\-94.78906\\43\\122.8476\\-96.74219\\43\\124.3896\\-98.69531\\43\\125.9766\\-100.9117\\43\\128.6776\\-104.5547\\43\\129.7017\\-106.5078\\43\\132.1065\\-110.4141\\43\\133.1043\\-112.3672\\43\\134.4257\\-114.3203\\43\\135.2705\\-116.2734\\43\\136.3911\\-118.2266\\43\\137.0295\\-120.1797\\43\\138.1392\\-122.1328\\43\\138.847\\-124.0859\\43\\139.9805\\-126.0391\\43\\140.7221\\-127.9922\\43\\142.3719\\-131.8984\\43\\142.7772\\-133.8516\\43\\143.6393\\-135.8047\\43\\144.3925\\-137.7578\\43\\144.8982\\-139.7109\\43\\145.8333\\-141.6641\\43\\147.0588\\-145.5703\\43\\147.832\\-147.5234\\43\\148.2873\\-149.4766\\43\\149.0558\\-153.3828\\43\\149.6817\\-155.3359\\43\\150.0995\\-157.2891\\43\\150.5543\\-161.1953\\43\\150.8451\\-163.1484\\43\\151.7541\\-167.0547\\43\\152.0335\\-169.0078\\43\\152.3826\\-172.9141\\43\\152.7967\\-178.7734\\43\\152.9775\\-182.6797\\43\\153.0442\\-186.5859\\43\\152.9883\\-192.4453\\43\\152.6675\\-200.2578\\43\\152.4627\\-204.1641\\43\\152.0503\\-210.0234\\43\\151.8202\\-211.9766\\43\\151.448\\-213.9297\\43\\150.9468\\-215.8828\\43\\150.0126\\-221.7422\\43\\148.7651\\-225.6484\\43\\148.2971\\-227.6016\\43\\147.4609\\-229.7412\\43\\145.6171\\-233.4609\\43\\143.5547\\-237.0321\\43\\143.2897\\-237.3672\\43\\142.3261\\-239.3203\\43\\140.877\\-241.2734\\43\\137.6035\\-245.1797\\43\\136.1576\\-247.1328\\43\\134.3563\\-249.0859\\43\\131.8359\\-251.4881\\43\\129.8828\\-253.5066\\43\\127.9297\\-255.3785\\43\\125.9766\\-256.84\\43\\124.0234\\-258.4595\\43\\121.334\\-260.8047\\43\\120.1172\\-261.7629\\43\\118.1641\\-263.1295\\43\\116.2109\\-264.2121\\43\\115.6283\\-264.7109\\43\\112.3047\\-266.948\\43\\110.3516\\-267.8909\\43\\108.3984\\-269.0566\\43\\106.4453\\-269.7375\\43\\104.4922\\-270.6951\\43\\100.5859\\-272.3986\\43\\98.63281\\-273.3299\\43\\96.67969\\-274.0174\\43\\94.72656\\-274.9419\\43\\90.82031\\-275.9482\\43\\88.86719\\-276.7691\\43\\84.96094\\-277.8066\\43\\83.00781\\-278.6888\\43\\79.10156\\-279.863\\43\\77.14844\\-280.7535\\43\\73.24219\\-281.8452\\43\\71.28906\\-282.7223\\43\\67.38281\\-283.8718\\43\\65.42969\\-284.8877\\43\\63.47656\\-285.5089\\43\\61.52344\\-286.5208\\43\\57.61719\\-287.8345\\43\\55.66406\\-288.7202\\43\\51.75781\\-289.7233\\43\\49.80469\\-290.6962\\43\\47.85156\\-291.2241\\43\\43.94531\\-292.8148\\43\\41.99219\\-293.3297\\43\\40.03906\\-294.1326\\43\\38.08594\\-294.7196\\43\\34.17969\\-295.4727\\43\\32.22656\\-296.2247\\43\\30.27344\\-296.7259\\43\\26.36719\\-297.3841\\43\\24.41406\\-298.0757\\43\\22.46094\\-298.5565\\43\\18.55469\\-299.1309\\43\\14.64844\\-299.9048\\43\\12.69531\\-300.216\\43\\10.74219\\-300.4078\\43\\6.835938\\-300.6273\\43\\0.9765625\\-300.7656\\43\\-2.929688\\-300.7433\\43\\-6.835938\\-300.6317\\43\\-10.74219\\-300.444\\43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "290"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "148"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-300.1029\\45\\-18.55469\\-299.3404\\45\\-24.41406\\-298.5426\\45\\-26.36719\\-298.0757\\45\\-28.32031\\-297.4629\\45\\-30.27344\\-297.1297\\45\\-34.17969\\-296.5824\\45\\-38.08594\\-295.4596\\45\\-43.94531\\-294.5332\\45\\-47.85156\\-293.2741\\45\\-51.75781\\-292.3365\\45\\-53.71094\\-291.5204\\45\\-57.61719\\-290.646\\45\\-59.57031\\-289.8503\\45\\-61.52344\\-289.3446\\45\\-65.42969\\-288.7382\\45\\-69.33594\\-287.5516\\45\\-73.24219\\-286.7126\\45\\-75.19531\\-285.993\\45\\-77.14844\\-285.413\\45\\-81.05469\\-284.466\\45\\-83.00781\\-283.6976\\45\\-86.91406\\-282.991\\45\\-88.86719\\-282.4198\\45\\-90.82031\\-281.7044\\45\\-94.72656\\-280.668\\45\\-96.67969\\-279.7382\\45\\-98.63281\\-279.0827\\45\\-100.5859\\-278.0174\\45\\-102.5391\\-277.291\\45\\-106.4453\\-275.447\\45\\-108.3161\\-274.4766\\45\\-110.3516\\-273.2869\\45\\-112.3047\\-271.8358\\45\\-116.2109\\-269.3868\\45\\-122.0703\\-264.8484\\45\\-125.9766\\-261.5687\\45\\-128.8231\\-258.8516\\45\\-131.8359\\-255.7998\\45\\-134.3963\\-252.9922\\45\\-135.9844\\-251.0391\\45\\-137.3122\\-249.0859\\45\\-138.7561\\-247.1328\\45\\-140.3213\\-245.1797\\45\\-141.6016\\-243.1267\\45\\-143.67\\-239.3203\\45\\-144.593\\-237.3672\\45\\-145.7072\\-235.4141\\45\\-147.4609\\-231.4338\\45\\-148.2172\\-229.5547\\45\\-148.6987\\-227.6016\\45\\-150.0547\\-223.6953\\45\\-150.8418\\-219.7891\\45\\-151.6029\\-217.8359\\45\\-152.1086\\-215.8828\\45\\-152.4709\\-213.9297\\45\\-152.9335\\-211.9766\\45\\-153.532\\-210.0234\\45\\-153.9096\\-208.0703\\45\\-154.3801\\-204.1641\\45\\-154.9975\\-198.3047\\45\\-155.3726\\-194.3984\\45\\-155.6267\\-188.5391\\45\\-155.5372\\-182.6797\\45\\-155.4162\\-180.7266\\45\\-154.8313\\-174.8672\\45\\-154.3801\\-170.9609\\45\\-153.8693\\-167.0547\\45\\-153.4819\\-165.1016\\45\\-152.9009\\-163.1484\\45\\-152.1227\\-159.2422\\45\\-151.6712\\-157.2891\\45\\-150.9209\\-155.3359\\45\\-150.173\\-151.4297\\45\\-149.6302\\-149.4766\\45\\-148.9025\\-147.5234\\45\\-147.8841\\-143.6172\\45\\-146.9447\\-141.6641\\45\\-146.2814\\-139.7109\\45\\-145.3943\\-137.7578\\45\\-144.6166\\-135.8047\\45\\-144.0108\\-133.8516\\45\\-143.007\\-131.8984\\45\\-142.4942\\-129.9453\\45\\-141.6719\\-127.9922\\45\\-140.7133\\-126.0391\\45\\-139.8754\\-124.0859\\45\\-138.7416\\-122.1328\\45\\-137.9207\\-120.1797\\45\\-136.8733\\-118.2266\\45\\-136.1707\\-116.2734\\45\\-134.9368\\-114.3203\\45\\-133.7891\\-112.2596\\45\\-131.8359\\-109.3014\\45\\-131.1478\\-108.4609\\45\\-128.6053\\-104.5547\\45\\-125.9766\\-101.533\\45\\-123.1752\\-98.69531\\45\\-120.1172\\-95.8763\\45\\-118.1641\\-94.31535\\45\\-116.2109\\-93.14558\\45\\-114.2578\\-91.74297\\45\\-112.3047\\-90.50982\\45\\-110.3516\\-89.50215\\45\\-108.3984\\-88.31255\\45\\-106.4453\\-87.70256\\45\\-104.4922\\-86.65104\\45\\-100.5859\\-85.13699\\45\\-96.67969\\-83.56519\\45\\-94.72656\\-82.51321\\45\\-90.82031\\-81.43056\\45\\-88.86719\\-80.59592\\45\\-84.96094\\-79.71173\\45\\-83.00781\\-79.06932\\45\\-79.10156\\-78.07962\\45\\-77.14844\\-77.71158\\45\\-73.24219\\-76.71295\\45\\-71.28906\\-76.40213\\45\\-65.42969\\-75.99763\\45\\-61.52344\\-75.80244\\45\\-55.66406\\-75.62231\\45\\-51.75781\\-75.68211\\45\\-43.94531\\-76.08367\\45\\-40.03906\\-76.42125\\45\\-36.13281\\-76.95826\\45\\-32.22656\\-77.78503\\45\\-30.27344\\-78.07962\\45\\-26.36719\\-78.91658\\45\\-24.41406\\-79.51729\\45\\-18.55469\\-80.73078\\45\\-16.60156\\-81.49224\\45\\-14.64844\\-81.96716\\45\\-10.74219\\-82.6674\\45\\-8.789063\\-82.91611\\45\\-6.835938\\-82.79027\\45\\-2.929688\\-82.3348\\45\\0.9765625\\-82.14227\\45\\4.882813\\-82.13595\\45\\10.74219\\-82.35837\\45\\12.69531\\-82.29536\\45\\14.64844\\-82.06855\\45\\16.60156\\-81.68965\\45\\18.55469\\-80.76534\\45\\22.46094\\-79.60796\\45\\24.41406\\-78.80599\\45\\28.32031\\-77.63412\\45\\30.27344\\-76.99314\\45\\32.22656\\-76.54075\\45\\34.17969\\-76.33438\\45\\40.03906\\-75.92284\\45\\43.94531\\-75.79335\\45\\47.85156\\-75.73652\\45\\51.75781\\-75.77146\\45\\57.61719\\-75.92661\\45\\61.52344\\-76.10725\\45\\65.42969\\-76.34615\\45\\69.33594\\-76.76763\\45\\71.28906\\-77.07451\\45\\75.19531\\-77.80155\\45\\79.10156\\-78.37061\\45\\81.05469\\-78.76733\\45\\84.96094\\-79.72672\\45\\90.82031\\-80.69169\\45\\92.77344\\-81.41824\\45\\94.72656\\-81.94817\\45\\96.67969\\-82.35171\\45\\100.5859\\-83.86377\\45\\102.5391\\-84.50539\\45\\104.4922\\-85.53099\\45\\106.4453\\-86.23011\\45\\108.3984\\-87.19781\\45\\110.3516\\-87.9593\\45\\112.3047\\-88.90567\\45\\114.2578\\-90.00507\\45\\116.2109\\-91.51432\\45\\120.1172\\-94.29025\\45\\122.6294\\-96.74219\\45\\124.0799\\-98.69531\\45\\125.4097\\-100.6484\\45\\127.0138\\-102.6016\\45\\128.47\\-104.5547\\45\\129.4448\\-106.5078\\45\\130.6846\\-108.4609\\45\\131.7493\\-110.4141\\45\\132.9141\\-112.3672\\45\\134.2151\\-114.3203\\45\\135.0724\\-116.2734\\45\\136.1785\\-118.2266\\45\\136.8713\\-120.1797\\45\\137.907\\-122.1328\\45\\138.677\\-124.0859\\45\\139.6711\\-126.0391\\45\\140.5511\\-127.9922\\45\\141.3196\\-129.9453\\45\\142.2088\\-131.8984\\45\\142.6273\\-133.8516\\45\\143.3105\\-135.8047\\45\\144.2343\\-137.7578\\45\\144.7299\\-139.7109\\45\\146.2758\\-143.6172\\45\\146.827\\-145.5703\\45\\147.5848\\-147.5234\\45\\148.1527\\-149.4766\\45\\148.8773\\-153.3828\\45\\149.9414\\-157.2891\\45\\150.2487\\-159.2422\\45\\150.7066\\-163.1484\\45\\151.0462\\-165.1016\\45\\151.5416\\-167.0547\\45\\151.8891\\-169.0078\\45\\152.2519\\-172.9141\\45\\152.5057\\-176.8203\\45\\152.7389\\-182.6797\\45\\152.7882\\-186.5859\\45\\152.7829\\-190.4922\\45\\152.5567\\-198.3047\\45\\152.2854\\-204.1641\\45\\151.8291\\-210.0234\\45\\151.5026\\-211.9766\\45\\150.6836\\-215.8828\\45\\150.173\\-219.7891\\45\\149.7724\\-221.7422\\45\\149.0558\\-223.6953\\45\\148.0939\\-227.6016\\45\\146.3362\\-231.5078\\45\\145.1667\\-233.4609\\45\\144.2728\\-235.4141\\45\\143.0075\\-237.3672\\45\\142.0518\\-239.3203\\45\\140.5949\\-241.2734\\45\\137.1646\\-245.1797\\45\\135.7422\\-246.9972\\45\\133.9274\\-249.0859\\45\\131.8359\\-251.0129\\45\\129.8828\\-253.0172\\45\\127.8132\\-254.9453\\45\\125.9766\\-256.3356\\45\\122.0703\\-259.8155\\45\\120.1172\\-261.415\\45\\116.2109\\-263.8493\\45\\114.2578\\-265.2495\\45\\112.3047\\-266.2775\\45\\110.3516\\-267.5104\\45\\106.4453\\-269.4586\\45\\104.4922\\-270.0888\\45\\102.5391\\-271.1735\\45\\100.5859\\-271.8331\\45\\98.63281\\-272.8839\\45\\96.67969\\-273.573\\45\\92.77344\\-275.1507\\45\\90.82031\\-275.6148\\45\\88.86719\\-276.1968\\45\\86.91406\\-277.0132\\45\\84.96094\\-277.4835\\45\\83.00781\\-278.1068\\45\\81.05469\\-278.9576\\45\\79.10156\\-279.532\\45\\75.19531\\-281.1045\\45\\73.24219\\-281.6192\\45\\71.28906\\-282.4505\\45\\69.33594\\-283.1501\\45\\67.38281\\-283.6674\\45\\65.42969\\-284.7364\\45\\63.47656\\-285.3895\\45\\61.52344\\-286.3947\\45\\57.61719\\-287.7299\\45\\55.66406\\-288.6628\\45\\51.75781\\-289.6668\\45\\49.80469\\-290.6652\\45\\47.85156\\-291.2027\\45\\43.94531\\-292.8148\\45\\41.99219\\-293.3149\\45\\40.03906\\-294.1473\\45\\38.08594\\-294.724\\45\\34.17969\\-295.4857\\45\\32.22656\\-296.2369\\45\\30.27344\\-296.7368\\45\\26.36719\\-297.4197\\45\\24.41406\\-298.1378\\45\\22.46094\\-298.587\\45\\18.55469\\-299.1613\\45\\16.60156\\-299.5091\\45\\14.64844\\-299.9619\\45\\12.69531\\-300.2566\\45\\10.74219\\-300.444\\45\\6.835938\\-300.654\\45\\0.9765625\\-300.8103\\45\\-2.929688\\-300.776\\45\\-6.835938\\-300.6652\\45\\-10.74219\\-300.4747\\45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "293"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "149"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-300.1602\\47\\-18.55469\\-299.388\\47\\-20.50781\\-299.0788\\47\\-24.41406\\-298.5634\\47\\-26.36719\\-298.1258\\47\\-28.32031\\-297.4821\\47\\-30.27344\\-297.1464\\47\\-34.17969\\-296.5824\\47\\-38.08594\\-295.4596\\47\\-41.99219\\-294.8507\\47\\-43.94531\\-294.4898\\47\\-45.89844\\-293.8055\\47\\-47.85156\\-293.2338\\47\\-49.80469\\-292.7933\\47\\-51.75781\\-292.2163\\47\\-53.71094\\-291.4273\\47\\-57.61719\\-290.5131\\47\\-59.57031\\-289.6595\\47\\-63.47656\\-288.9984\\47\\-65.42969\\-288.5727\\47\\-67.38281\\-287.8725\\47\\-69.33594\\-287.355\\47\\-71.28906\\-286.9543\\47\\-73.24219\\-286.4544\\47\\-75.19531\\-285.6464\\47\\-79.10156\\-284.7363\\47\\-81.05469\\-283.9682\\47\\-83.00781\\-283.4598\\47\\-86.91406\\-282.7299\\47\\-88.86719\\-281.9968\\47\\-92.77344\\-280.9929\\47\\-96.67969\\-279.4438\\47\\-98.63281\\-278.7672\\47\\-100.5859\\-277.6958\\47\\-102.5391\\-277.0748\\47\\-104.4922\\-275.9795\\47\\-106.4453\\-275.2443\\47\\-108.3984\\-274.0374\\47\\-110.3516\\-272.9955\\47\\-110.9407\\-272.5234\\47\\-113.8229\\-270.5703\\47\\-114.2578\\-270.1897\\47\\-116.2109\\-269.1366\\47\\-118.1641\\-267.6283\\47\\-125.9766\\-261.1744\\47\\-128.3937\\-258.8516\\47\\-129.8828\\-257.2365\\47\\-131.8359\\-255.3255\\47\\-134.0069\\-252.9922\\47\\-135.7422\\-250.7855\\47\\-136.9612\\-249.0859\\47\\-137.6953\\-248.2478\\47\\-139.6484\\-245.5478\\47\\-139.9878\\-245.1797\\47\\-141.1534\\-243.2266\\47\\-142.436\\-241.2734\\47\\-143.2683\\-239.3203\\47\\-144.4184\\-237.3672\\47\\-146.319\\-233.4609\\47\\-147.093\\-231.5078\\47\\-148.0408\\-229.5547\\47\\-149.0956\\-225.6484\\47\\-149.8788\\-223.6953\\47\\-150.6533\\-219.7891\\47\\-151.9355\\-215.8828\\47\\-152.7163\\-211.9766\\47\\-153.7388\\-208.0703\\47\\-154.2263\\-204.1641\\47\\-154.6043\\-200.2578\\47\\-155.1743\\-192.4453\\47\\-155.3281\\-188.5391\\47\\-155.2813\\-184.6328\\47\\-155.2037\\-182.6797\\47\\-154.9364\\-178.7734\\47\\-154.5964\\-174.8672\\47\\-154.1829\\-170.9609\\47\\-153.6152\\-167.0547\\47\\-153.0442\\-165.1016\\47\\-152.6135\\-163.1484\\47\\-151.8784\\-159.2422\\47\\-151.197\\-157.2891\\47\\-150.6491\\-155.3359\\47\\-149.9509\\-151.4297\\47\\-149.1864\\-149.4766\\47\\-148.1859\\-145.5703\\47\\-147.5143\\-143.6172\\47\\-146.6654\\-141.6641\\47\\-146.0314\\-139.7109\\47\\-145.004\\-137.7578\\47\\-144.4151\\-135.8047\\47\\-142.802\\-131.8984\\47\\-142.3112\\-129.9453\\47\\-141.2533\\-127.9922\\47\\-140.4769\\-126.0391\\47\\-139.3922\\-124.0859\\47\\-138.5196\\-122.1328\\47\\-137.5156\\-120.1797\\47\\-135.8623\\-116.2734\\47\\-132.3213\\-110.4141\\47\\-130.9026\\-108.4609\\47\\-128.1993\\-104.5547\\47\\-125.9766\\-101.8655\\47\\-122.814\\-98.69531\\47\\-120.6436\\-96.74219\\47\\-118.1641\\-94.76359\\47\\-115.4278\\-92.83594\\47\\-109.0035\\-88.92969\\47\\-108.3984\\-88.50799\\47\\-106.4453\\-87.81995\\47\\-104.4922\\-86.83273\\47\\-102.5391\\-86.04327\\47\\-100.5859\\-85.39386\\47\\-98.63281\\-84.47147\\47\\-96.67969\\-83.79212\\47\\-94.72656\\-82.74479\\47\\-92.77344\\-82.12389\\47\\-90.82031\\-81.60205\\47\\-88.86719\\-80.78217\\47\\-84.96094\\-79.86694\\47\\-81.05469\\-78.66429\\47\\-79.10156\\-78.20415\\47\\-75.19531\\-77.45164\\47\\-73.24219\\-76.90576\\47\\-71.28906\\-76.55351\\47\\-65.42969\\-76.0873\\47\\-59.57031\\-75.84985\\47\\-55.66406\\-75.77822\\47\\-51.75781\\-75.81311\\47\\-43.94531\\-76.22253\\47\\-40.03906\\-76.54939\\47\\-38.08594\\-76.82424\\47\\-34.17969\\-77.6414\\47\\-30.27344\\-78.24461\\47\\-28.32031\\-78.68159\\47\\-24.41406\\-79.68791\\47\\-20.50781\\-80.42749\\47\\-18.55469\\-80.91279\\47\\-16.60156\\-81.66858\\47\\-12.69531\\-82.3485\\47\\-10.74219\\-82.59864\\47\\-8.789063\\-82.6702\\47\\-2.929688\\-82.14227\\47\\0.9765625\\-81.96935\\47\\6.835938\\-81.96395\\47\\10.74219\\-82.11206\\47\\12.69531\\-82.12466\\47\\14.64844\\-82.00667\\47\\16.60156\\-81.70444\\47\\18.55469\\-80.84345\\47\\22.46094\\-79.74349\\47\\26.36719\\-78.37025\\47\\32.22656\\-76.73927\\47\\34.17969\\-76.42598\\47\\36.13281\\-76.27506\\47\\41.99219\\-75.99318\\47\\47.85156\\-75.89077\\47\\53.71094\\-75.95788\\47\\57.61719\\-76.06779\\47\\61.52344\\-76.24005\\47\\65.42969\\-76.50014\\47\\69.33594\\-77.01009\\47\\73.24219\\-77.72974\\47\\77.14844\\-78.27383\\47\\79.10156\\-78.61333\\47\\83.00781\\-79.58064\\47\\86.91406\\-80.25758\\47\\88.86719\\-80.53253\\47\\90.82031\\-80.92495\\47\\92.77344\\-81.67805\\47\\96.67969\\-82.57233\\47\\98.63281\\-83.40032\\47\\102.5391\\-84.75106\\47\\104.4922\\-85.71667\\47\\106.4453\\-86.37607\\47\\108.3984\\-87.38287\\47\\110.3516\\-88.09711\\47\\114.2578\\-90.24194\\47\\117.6162\\-92.83594\\47\\118.1641\\-93.32422\\47\\120.1172\\-94.60645\\47\\122.346\\-96.74219\\47\\123.6256\\-98.69531\\47\\126.8145\\-102.6016\\47\\128.1915\\-104.5547\\47\\129.2657\\-106.5078\\47\\130.5318\\-108.4609\\47\\131.4302\\-110.4141\\47\\131.8359\\-110.9331\\47\\133.9567\\-114.3203\\47\\134.9094\\-116.2734\\47\\135.96\\-118.2266\\47\\137.5772\\-122.1328\\47\\138.5345\\-124.0859\\47\\139.3548\\-126.0391\\47\\140.3943\\-127.9922\\47\\141.0672\\-129.9453\\47\\142.0569\\-131.8984\\47\\143.1003\\-135.8047\\47\\144.0677\\-137.7578\\47\\144.5739\\-139.7109\\47\\145.2358\\-141.6641\\47\\146.1168\\-143.6172\\47\\146.64\\-145.5703\\47\\148.0095\\-149.4766\\47\\148.7361\\-153.3828\\47\\149.1847\\-155.3359\\47\\149.7811\\-157.2891\\47\\150.142\\-159.2422\\47\\150.6003\\-163.1484\\47\\150.882\\-165.1016\\47\\151.7137\\-169.0078\\47\\152.1218\\-172.9141\\47\\152.3582\\-176.8203\\47\\152.5567\\-182.6797\\47\\152.6038\\-186.5859\\47\\152.584\\-190.4922\\47\\152.383\\-198.3047\\47\\152.2229\\-202.2109\\47\\151.9848\\-206.1172\\47\\151.8019\\-208.0703\\47\\151.5158\\-210.0234\\47\\150.7658\\-213.9297\\47\\150.284\\-217.8359\\47\\149.9821\\-219.7891\\47\\148.8077\\-223.6953\\47\\148.3907\\-225.6484\\47\\147.8554\\-227.6016\\47\\146.8567\\-229.5547\\47\\146.0854\\-231.5078\\47\\144.847\\-233.4609\\47\\144.0108\\-235.4141\\47\\142.7539\\-237.3672\\47\\141.6256\\-239.3203\\47\\140.2933\\-241.2734\\47\\135.189\\-247.1328\\47\\133.7891\\-248.6494\\47\\131.8359\\-250.4902\\47\\127.9297\\-254.3903\\47\\122.0703\\-259.4401\\47\\120.1172\\-260.9577\\47\\118.1641\\-262.187\\47\\116.2109\\-263.5478\\47\\112.3047\\-265.8181\\47\\110.3516\\-267.1232\\47\\108.3984\\-267.9599\\47\\106.4453\\-269.0884\\47\\104.4922\\-269.7341\\47\\100.5859\\-271.476\\47\\98.63281\\-272.2204\\47\\96.67969\\-273.2065\\47\\94.72656\\-273.8471\\47\\92.77344\\-274.726\\47\\90.82031\\-275.3372\\47\\88.86719\\-275.785\\47\\86.91406\\-276.5594\\47\\84.96094\\-277.2189\\47\\83.00781\\-277.7103\\47\\81.05469\\-278.5444\\47\\77.14844\\-279.9706\\47\\75.19531\\-280.9135\\47\\73.24219\\-281.4427\\47\\71.28906\\-282.1859\\47\\69.33594\\-283.0426\\47\\67.38281\\-283.5304\\47\\65.42969\\-284.5887\\47\\63.47656\\-285.2911\\47\\61.52344\\-286.2329\\47\\59.57031\\-287.027\\47\\57.61719\\-287.6537\\47\\55.66406\\-288.6068\\47\\51.75781\\-289.6362\\47\\49.80469\\-290.6378\\47\\47.85156\\-291.1916\\47\\43.94531\\-292.8047\\47\\41.99219\\-293.3259\\47\\40.03906\\-294.1742\\47\\38.08594\\-294.7358\\47\\34.17969\\-295.5087\\47\\32.22656\\-296.2748\\47\\30.27344\\-296.7624\\47\\28.32031\\-297.0718\\47\\26.36719\\-297.4793\\47\\24.41406\\-298.1959\\47\\22.46094\\-298.6194\\47\\18.55469\\-299.2071\\47\\14.64844\\-300.0288\\47\\12.69531\\-300.3073\\47\\10.74219\\-300.4747\\47\\6.835938\\-300.6987\\47\\0.9765625\\-300.8438\\47\\-4.882813\\-300.7708\\47\\-8.789063\\-300.6205\\47\\-12.69531\\-300.3642\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "284"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "150"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-300.2055\\49\\-18.55469\\-299.438\\49\\-20.50781\\-299.114\\49\\-24.41406\\-298.5901\\49\\-26.36719\\-298.1846\\49\\-28.32031\\-297.5222\\49\\-30.27344\\-297.1528\\49\\-34.17969\\-296.5824\\49\\-38.08594\\-295.45\\49\\-41.99219\\-294.8457\\49\\-43.94531\\-294.4355\\49\\-45.89844\\-293.7451\\49\\-47.85156\\-293.1889\\49\\-49.80469\\-292.7443\\49\\-51.75781\\-292.1069\\49\\-53.71094\\-291.343\\49\\-55.66406\\-290.9049\\49\\-57.61719\\-290.3406\\49\\-59.57031\\-289.5444\\49\\-63.47656\\-288.887\\49\\-65.42969\\-288.3598\\49\\-67.38281\\-287.6537\\49\\-71.28906\\-286.7958\\49\\-75.19531\\-285.4192\\49\\-77.14844\\-284.9797\\49\\-79.10156\\-284.3643\\49\\-81.05469\\-283.6288\\49\\-84.96094\\-282.9338\\49\\-86.91406\\-282.36\\49\\-88.86719\\-281.674\\49\\-92.77344\\-280.7253\\49\\-94.72656\\-279.8325\\49\\-96.67969\\-279.1966\\49\\-100.5859\\-277.4585\\49\\-102.5391\\-276.7804\\49\\-104.4922\\-275.7303\\49\\-106.4453\\-275.0004\\49\\-108.3984\\-273.7412\\49\\-110.3516\\-272.6204\\49\\-112.3047\\-271.3348\\49\\-114.2578\\-269.8755\\49\\-116.2109\\-268.8556\\49\\-118.1641\\-267.3714\\49\\-121.3504\\-264.7109\\49\\-122.0703\\-264.0163\\49\\-123.6518\\-262.7578\\49\\-125.9766\\-260.7482\\49\\-127.9862\\-258.8516\\49\\-131.7255\\-254.9453\\49\\-135.1657\\-251.0391\\49\\-138.1894\\-247.1328\\49\\-141.6016\\-242.1268\\49\\-142.2289\\-241.2734\\49\\-143.0107\\-239.3203\\49\\-144.2276\\-237.3672\\49\\-145.0007\\-235.4141\\49\\-146.1175\\-233.4609\\49\\-146.8395\\-231.5078\\49\\-147.8503\\-229.5547\\49\\-148.906\\-225.6484\\49\\-149.6564\\-223.6953\\49\\-150.1872\\-221.7422\\49\\-150.5046\\-219.7891\\49\\-150.9725\\-217.8359\\49\\-151.724\\-215.8828\\49\\-152.1671\\-213.9297\\49\\-152.9335\\-210.0234\\49\\-153.532\\-208.0703\\49\\-153.8514\\-206.1172\\49\\-154.4436\\-200.2578\\49\\-154.815\\-194.3984\\49\\-155.0097\\-188.5391\\49\\-154.9735\\-184.6328\\49\\-154.8283\\-180.7266\\49\\-154.5659\\-176.8203\\49\\-153.9914\\-170.9609\\49\\-153.7267\\-169.0078\\49\\-152.7321\\-165.1016\\49\\-152.0095\\-161.1953\\49\\-151.5416\\-159.2422\\49\\-150.8385\\-157.2891\\49\\-150.4389\\-155.3359\\49\\-150.139\\-153.3828\\49\\-149.6169\\-151.4297\\49\\-148.8532\\-149.4766\\49\\-147.9461\\-145.5703\\49\\-147.0768\\-143.6172\\49\\-145.6694\\-139.7109\\49\\-144.7452\\-137.7578\\49\\-144.2038\\-135.8047\\49\\-143.2316\\-133.8516\\49\\-142.0407\\-129.9453\\49\\-140.9845\\-127.9922\\49\\-140.2344\\-126.0391\\49\\-139.0223\\-124.0859\\49\\-138.2867\\-122.1328\\49\\-137.1867\\-120.1797\\49\\-136.5045\\-118.2266\\49\\-135.353\\-116.2734\\49\\-134.4337\\-114.3203\\49\\-133.0994\\-112.3672\\49\\-131.9714\\-110.4141\\49\\-129.8828\\-107.3335\\49\\-127.9297\\-104.75\\49\\-125.9766\\-102.3029\\49\\-124.0234\\-100.2722\\49\\-122.3931\\-98.69531\\49\\-120.1172\\-96.68961\\49\\-116.2109\\-93.68183\\49\\-114.9053\\-92.83594\\49\\-112.3047\\-91.35075\\49\\-110.3516\\-90.04137\\49\\-108.3984\\-88.85326\\49\\-104.4922\\-87.06917\\49\\-102.5391\\-86.28893\\49\\-100.5859\\-85.61435\\49\\-98.63281\\-84.68463\\49\\-96.67969\\-83.9884\\49\\-92.77344\\-82.30796\\49\\-90.82031\\-81.83376\\49\\-86.91406\\-80.44348\\49\\-83.00781\\-79.55606\\49\\-81.05469\\-78.87109\\49\\-77.14844\\-78.01351\\49\\-75.19531\\-77.65257\\49\\-71.28906\\-76.77474\\49\\-69.33594\\-76.51521\\49\\-65.42969\\-76.18815\\49\\-61.52344\\-76.02635\\49\\-55.66406\\-75.90679\\49\\-49.80469\\-76.00494\\49\\-41.99219\\-76.50356\\49\\-38.08594\\-77.07451\\49\\-36.13281\\-77.50459\\49\\-32.22656\\-78.12129\\49\\-28.32031\\-78.89353\\49\\-26.36719\\-79.46616\\49\\-22.46094\\-80.24977\\49\\-20.50781\\-80.55824\\49\\-16.60156\\-81.78332\\49\\-12.69531\\-82.35296\\49\\-10.74219\\-82.52421\\49\\-8.789063\\-82.47177\\49\\-4.882813\\-82.13014\\49\\-0.9765625\\-81.87674\\49\\2.929688\\-81.75723\\49\\6.835938\\-81.75294\\49\\12.69531\\-81.94634\\49\\14.64844\\-81.90215\\49\\16.60156\\-81.67429\\49\\18.55469\\-80.87119\\49\\22.46094\\-79.82581\\49\\26.36719\\-78.53883\\49\\34.17969\\-76.59729\\49\\36.13281\\-76.39407\\49\\40.03906\\-76.18268\\49\\47.85156\\-76.03092\\49\\53.71094\\-76.11514\\49\\61.52344\\-76.37642\\49\\65.42969\\-76.74802\\49\\67.38281\\-77.01009\\49\\71.28906\\-77.66501\\49\\75.19531\\-78.16543\\49\\77.14844\\-78.46974\\49\\79.10156\\-78.89353\\49\\81.05469\\-79.42975\\49\\84.96094\\-80.13481\\49\\88.86719\\-80.74213\\49\\90.82031\\-81.36508\\49\\94.72656\\-82.27612\\49\\96.67969\\-82.82263\\49\\98.63281\\-83.64791\\49\\100.5859\\-84.22998\\49\\104.4922\\-85.89599\\49\\106.4453\\-86.55804\\49\\108.3984\\-87.5811\\49\\110.3516\\-88.27644\\49\\112.3047\\-89.45946\\49\\114.2578\\-90.5423\\49\\117.3281\\-92.83594\\49\\119.7117\\-94.78906\\49\\121.875\\-96.74219\\49\\123.4063\\-98.69531\\49\\126.6092\\-102.6016\\49\\127.9376\\-104.5547\\49\\130.3404\\-108.4609\\49\\131.2162\\-110.4141\\49\\132.554\\-112.3672\\49\\134.7425\\-116.2734\\49\\136.6028\\-120.1797\\49\\137.2867\\-122.1328\\49\\138.3831\\-124.0859\\49\\139.1066\\-126.0391\\49\\140.2024\\-127.9922\\49\\140.8847\\-129.9453\\49\\141.851\\-131.8984\\49\\142.4689\\-133.8516\\49\\142.914\\-135.8047\\49\\143.8525\\-137.7578\\49\\144.9857\\-141.6641\\49\\145.9096\\-143.6172\\49\\147.0535\\-147.5234\\49\\147.8604\\-149.4766\\49\\148.2824\\-151.4297\\49\\148.9793\\-155.3359\\49\\149.573\\-157.2891\\49\\150.0299\\-159.2422\\49\\150.7415\\-165.1016\\49\\151.0577\\-167.0547\\49\\151.5026\\-169.0078\\49\\151.9886\\-172.9141\\49\\152.3053\\-178.7734\\49\\152.4118\\-182.6797\\49\\152.4484\\-186.5859\\49\\152.4276\\-190.4922\\49\\152.3535\\-194.3984\\49\\152.0503\\-202.2109\\49\\151.7639\\-206.1172\\49\\151.5026\\-208.0703\\49\\151.1054\\-210.0234\\49\\150.5672\\-213.9297\\49\\150.127\\-217.8359\\49\\149.7228\\-219.7891\\49\\149.0583\\-221.7422\\49\\148.2108\\-225.6484\\49\\147.5135\\-227.6016\\49\\145.7623\\-231.5078\\49\\144.5909\\-233.4609\\49\\143.6244\\-235.4141\\49\\142.5218\\-237.3672\\49\\139.9227\\-241.2734\\49\\136.617\\-245.1797\\49\\133.7891\\-248.3088\\49\\129.8828\\-252.0695\\49\\127.9297\\-254.0413\\49\\125.9766\\-255.7965\\49\\122.0703\\-258.9617\\49\\118.1641\\-261.8376\\49\\116.2109\\-263.1784\\49\\114.2578\\-264.1134\\49\\112.3047\\-265.4308\\49\\108.3984\\-267.5774\\49\\104.4922\\-269.432\\49\\102.5391\\-270.0226\\49\\100.5859\\-271.1077\\49\\98.63281\\-271.7389\\49\\96.67969\\-272.7488\\49\\92.77344\\-274.1578\\49\\90.82031\\-275.0392\\49\\86.91406\\-276.0102\\49\\84.96094\\-276.8919\\49\\81.05469\\-278.0174\\49\\79.10156\\-279.0246\\49\\77.14844\\-279.683\\49\\75.19531\\-280.6787\\49\\71.28906\\-281.9635\\49\\69.33594\\-282.9254\\49\\67.38281\\-283.4255\\49\\65.42969\\-284.4166\\49\\63.47656\\-285.2188\\49\\59.57031\\-286.9669\\49\\57.61719\\-287.5877\\49\\55.66406\\-288.5514\\49\\51.75781\\-289.6133\\49\\49.80469\\-290.6128\\49\\47.85156\\-291.1861\\49\\43.94531\\-292.7946\\49\\41.99219\\-293.344\\49\\40.03906\\-294.1873\\49\\38.08594\\-294.7476\\49\\34.17969\\-295.5291\\49\\32.22656\\-296.3314\\49\\30.27344\\-296.7852\\49\\28.32031\\-297.0942\\49\\26.36719\\-297.543\\49\\24.41406\\-298.2502\\49\\22.46094\\-298.6537\\49\\18.55469\\-299.2554\\49\\14.64844\\-300.0789\\49\\12.69531\\-300.3376\\49\\6.835938\\-300.7147\\49\\2.929688\\-300.8438\\49\\-2.929688\\-300.8495\\49\\-8.789063\\-300.6473\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "292"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "151"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-299.948\\51\\-18.55469\\-299.4906\\51\\-20.50781\\-299.1507\\51\\-24.41406\\-298.6158\\51\\-26.36719\\-298.2289\\51\\-28.32031\\-297.5667\\51\\-30.27344\\-297.1423\\51\\-34.17969\\-296.5824\\51\\-38.08594\\-295.4371\\51\\-41.99219\\-294.8274\\51\\-43.94531\\-294.4254\\51\\-45.89844\\-293.7109\\51\\-47.85156\\-293.1514\\51\\-49.80469\\-292.7006\\51\\-53.71094\\-291.2744\\51\\-55.66406\\-290.8365\\51\\-59.57031\\-289.4445\\51\\-63.47656\\-288.747\\51\\-67.38281\\-287.4601\\51\\-71.28906\\-286.5544\\51\\-73.24219\\-285.7469\\51\\-77.14844\\-284.739\\51\\-79.10156\\-283.9401\\51\\-81.05469\\-283.4028\\51\\-83.00781\\-283.1019\\51\\-84.96094\\-282.6588\\51\\-86.91406\\-281.9423\\51\\-90.82031\\-280.9969\\51\\-94.72656\\-279.5257\\51\\-96.67969\\-278.9033\\51\\-98.63281\\-277.8541\\51\\-100.5859\\-277.2381\\51\\-102.5391\\-276.3416\\51\\-106.4453\\-274.6601\\51\\-108.3984\\-273.4832\\51\\-110.3516\\-272.1452\\51\\-112.3047\\-271.049\\51\\-114.2578\\-269.6473\\51\\-115.9473\\-268.6172\\51\\-118.1641\\-267.0185\\51\\-120.9635\\-264.7109\\51\\-124.0234\\-262.0949\\51\\-127.5228\\-258.8516\\51\\-129.8828\\-256.4671\\51\\-131.8359\\-254.3822\\51\\-134.8295\\-251.0391\\51\\-136.3955\\-249.0859\\51\\-137.8174\\-247.1328\\51\\-139.0736\\-245.1797\\51\\-140.5833\\-243.2266\\51\\-141.9391\\-241.2734\\51\\-142.802\\-239.3203\\51\\-143.9704\\-237.3672\\51\\-144.7597\\-235.4141\\51\\-145.8972\\-233.4609\\51\\-146.62\\-231.5078\\51\\-147.5571\\-229.5547\\51\\-148.2621\\-227.6016\\51\\-148.7361\\-225.6484\\51\\-150.0423\\-221.7422\\51\\-150.7621\\-217.8359\\51\\-151.4338\\-215.8828\\51\\-151.992\\-213.9297\\51\\-152.7009\\-210.0234\\51\\-153.6564\\-206.1172\\51\\-153.9051\\-204.1641\\51\\-154.258\\-200.2578\\51\\-154.5731\\-194.3984\\51\\-154.72\\-190.4922\\51\\-154.7659\\-186.5859\\51\\-154.6043\\-180.7266\\51\\-154.3682\\-176.8203\\51\\-154.0132\\-172.9141\\51\\-153.7577\\-170.9609\\51\\-153.3869\\-169.0078\\51\\-152.8474\\-167.0547\\51\\-151.7442\\-161.1953\\51\\-151.0791\\-159.2422\\51\\-150.5871\\-157.2891\\51\\-149.8857\\-153.3828\\51\\-149.1699\\-151.4297\\51\\-148.6415\\-149.4766\\51\\-148.2126\\-147.5234\\51\\-147.614\\-145.5703\\51\\-146.7452\\-143.6172\\51\\-146.1387\\-141.6641\\51\\-145.1983\\-139.7109\\51\\-143.9226\\-135.8047\\51\\-142.9572\\-133.8516\\51\\-142.4377\\-131.8984\\51\\-141.6697\\-129.9453\\51\\-140.7292\\-127.9922\\51\\-139.8891\\-126.0391\\51\\-138.7706\\-124.0859\\51\\-138.0101\\-122.1328\\51\\-136.9613\\-120.1797\\51\\-136.2339\\-118.2266\\51\\-135.0547\\-116.2734\\51\\-134.1217\\-114.3203\\51\\-133.7891\\-113.9031\\51\\-131.8359\\-110.8326\\51\\-130.4014\\-108.4609\\51\\-128.9648\\-106.5078\\51\\-125.9766\\-102.8497\\51\\-124.0234\\-100.7769\\51\\-121.8363\\-98.69531\\51\\-118.1641\\-95.47473\\51\\-116.2109\\-94.00912\\51\\-114.2578\\-92.89538\\51\\-110.3516\\-90.29688\\51\\-108.3984\\-89.33832\\51\\-106.4453\\-88.16286\\51\\-104.4922\\-87.49315\\51\\-102.5391\\-86.44785\\51\\-100.5859\\-85.74334\\51\\-96.67969\\-84.2182\\51\\-94.72656\\-83.54557\\51\\-92.77344\\-82.58545\\51\\-88.86719\\-81.41016\\51\\-86.91406\\-80.63901\\51\\-83.00781\\-79.75651\\51\\-79.10156\\-78.62347\\51\\-77.14844\\-78.20454\\51\\-73.24219\\-77.51401\\51\\-71.28906\\-77.07451\\51\\-67.38281\\-76.47692\\51\\-63.47656\\-76.23438\\51\\-55.66406\\-76.02596\\51\\-49.80469\\-76.13672\\51\\-45.89844\\-76.36968\\51\\-41.99219\\-76.71947\\51\\-40.03906\\-77.01009\\51\\-36.13281\\-77.75415\\51\\-32.22656\\-78.31026\\51\\-30.27344\\-78.68466\\51\\-26.36719\\-79.67838\\51\\-22.46094\\-80.37286\\51\\-20.50781\\-80.77044\\51\\-18.55469\\-81.42052\\51\\-16.60156\\-81.89214\\51\\-14.64844\\-82.17763\\51\\-12.69531\\-82.35296\\51\\-10.74219\\-82.42553\\51\\-8.789063\\-82.31958\\51\\-2.929688\\-81.84319\\51\\2.929688\\-81.45467\\51\\6.835938\\-81.39301\\51\\12.69531\\-81.75745\\51\\14.64844\\-81.74451\\51\\16.60156\\-81.51479\\51\\18.55469\\-80.87119\\51\\24.41406\\-79.39516\\51\\26.36719\\-78.73606\\51\\28.32031\\-78.21556\\51\\32.22656\\-77.37609\\51\\34.17969\\-76.86914\\51\\36.13281\\-76.53634\\51\\38.08594\\-76.38178\\51\\41.99219\\-76.25182\\51\\47.85156\\-76.1597\\51\\51.75781\\-76.19463\\51\\57.61719\\-76.35792\\51\\61.52344\\-76.5451\\51\\65.42969\\-77.0226\\51\\67.38281\\-77.33576\\51\\73.24219\\-78.10847\\51\\77.14844\\-78.74554\\51\\81.05469\\-79.68184\\51\\86.91406\\-80.61894\\51\\88.86719\\-81.06022\\51\\90.82031\\-81.66858\\51\\94.72656\\-82.44165\\51\\98.63281\\-83.88596\\51\\100.5859\\-84.50677\\51\\102.5391\\-85.43145\\51\\106.4453\\-86.84787\\51\\108.3984\\-87.81097\\51\\110.3516\\-88.52039\\51\\110.9437\\-88.92969\\51\\114.2578\\-90.8601\\51\\116.2109\\-92.20404\\51\\118.1641\\-93.74607\\51\\120.1172\\-95.40271\\51\\121.5642\\-96.74219\\51\\123.2676\\-98.69531\\51\\126.3887\\-102.6016\\51\\127.9297\\-104.8904\\51\\130.1307\\-108.4609\\51\\131.0417\\-110.4141\\51\\132.3771\\-112.3672\\51\\133.3861\\-114.3203\\51\\134.5923\\-116.2734\\51\\135.4237\\-118.2266\\51\\136.4746\\-120.1797\\51\\137.0716\\-122.1328\\51\\138.2379\\-124.0859\\51\\138.9257\\-126.0391\\51\\140.0154\\-127.9922\\51\\140.7377\\-129.9453\\51\\142.3523\\-133.8516\\51\\142.7917\\-135.8047\\51\\144.3283\\-139.7109\\51\\144.8135\\-141.6641\\51\\145.6694\\-143.6172\\51\\146.3353\\-145.5703\\51\\146.855\\-147.5234\\51\\147.6618\\-149.4766\\51\\148.1643\\-151.4297\\51\\148.8514\\-155.3359\\51\\149.8857\\-159.2422\\51\\150.2125\\-161.1953\\51\\150.8727\\-167.0547\\51\\151.6263\\-170.9609\\51\\151.9886\\-174.8672\\51\\152.1842\\-178.7734\\51\\152.2815\\-182.6797\\51\\152.3102\\-188.5391\\51\\152.1994\\-194.3984\\51\\152.0669\\-198.3047\\51\\151.864\\-202.2109\\51\\151.4757\\-206.1172\\51\\150.8362\\-210.0234\\51\\150.2193\\-215.8828\\51\\149.9187\\-217.8359\\51\\148.8077\\-221.7422\\51\\147.9953\\-225.6484\\51\\146.3596\\-229.5547\\51\\145.2836\\-231.5078\\51\\144.3676\\-233.4609\\51\\143.2096\\-235.4141\\51\\142.2897\\-237.3672\\51\\139.6484\\-240.9613\\51\\136.3053\\-245.1797\\51\\134.5898\\-247.1328\\51\\131.8359\\-249.9021\\51\\127.9297\\-253.6804\\51\\125.9766\\-255.4372\\51\\122.0703\\-258.3491\\51\\121.5328\\-258.8516\\51\\118.1641\\-261.4708\\51\\116.0482\\-262.7578\\51\\114.2578\\-263.7403\\51\\112.3047\\-264.9568\\51\\110.3516\\-265.9588\\51\\108.3984\\-267.1951\\51\\106.4453\\-268.006\\51\\104.4922\\-269.0674\\51\\102.5391\\-269.6787\\51\\98.63281\\-271.3958\\51\\96.67969\\-272.0801\\51\\94.72656\\-273.1049\\51\\92.77344\\-273.7145\\51\\90.82031\\-274.5618\\51\\88.86719\\-275.2469\\51\\86.91406\\-275.6895\\51\\83.00781\\-277.1917\\51\\81.05469\\-277.7032\\51\\79.10156\\-278.7362\\51\\77.14844\\-279.4457\\51\\75.19531\\-280.3881\\51\\73.24219\\-281.1672\\51\\71.28906\\-281.8178\\51\\69.33594\\-282.8103\\51\\67.38281\\-283.3386\\51\\63.47656\\-285.1561\\51\\61.52344\\-285.9775\\51\\59.57031\\-286.907\\51\\57.61719\\-287.5489\\51\\55.66406\\-288.5267\\51\\51.75781\\-289.6003\\51\\49.80469\\-290.6128\\51\\47.85156\\-291.1916\\51\\43.94531\\-292.8086\\51\\41.99219\\-293.3697\\51\\40.03906\\-294.213\\51\\38.08594\\-294.764\\51\\34.17969\\-295.5636\\51\\32.22656\\-296.387\\51\\30.27344\\-296.8193\\51\\28.32031\\-297.1318\\51\\26.36719\\-297.6089\\51\\24.41406\\-298.3205\\51\\22.46094\\-298.6944\\51\\18.55469\\-299.315\\51\\14.64844\\-300.1263\\51\\12.69531\\-300.3584\\51\\8.789063\\-300.6429\\51\\2.929688\\-300.8721\\51\\-2.929688\\-300.8784\\51\\-6.835938\\-300.7534\\51\\-10.74219\\-300.5647\\51\\-14.64844\\-300.2466\\51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "292"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "152"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-300.0288\\53\\-18.55469\\-299.555\\53\\-20.50781\\-299.1999\\53\\-24.41406\\-298.638\\53\\-26.36719\\-298.2709\\53\\-28.32031\\-297.5798\\53\\-30.27344\\-297.1763\\53\\-34.17969\\-296.5904\\53\\-38.08594\\-295.45\\53\\-41.99219\\-294.8158\\53\\-43.94531\\-294.4153\\53\\-45.89844\\-293.6867\\53\\-47.85156\\-293.1259\\53\\-49.80469\\-292.669\\53\\-51.75781\\-291.8778\\53\\-53.71094\\-291.2169\\53\\-55.66406\\-290.7816\\53\\-57.61719\\-290.017\\53\\-59.57031\\-289.3766\\53\\-61.52344\\-289.054\\53\\-63.47656\\-288.6169\\53\\-65.42969\\-287.899\\53\\-67.38281\\-287.3106\\53\\-69.33594\\-286.8768\\53\\-71.28906\\-286.2619\\53\\-73.24219\\-285.5172\\53\\-75.19531\\-285.0543\\53\\-77.14844\\-284.4539\\53\\-79.10156\\-283.6379\\53\\-83.00781\\-282.9128\\53\\-86.91406\\-281.6444\\53\\-88.86719\\-281.2378\\53\\-90.82031\\-280.7304\\53\\-92.77344\\-279.8753\\53\\-94.72656\\-279.2664\\53\\-96.67969\\-278.4913\\53\\-98.63281\\-277.5672\\53\\-100.5859\\-277.0009\\53\\-102.5391\\-275.9585\\53\\-104.4922\\-275.2934\\53\\-108.3984\\-273.2218\\53\\-110.3516\\-271.8105\\53\\-114.2578\\-269.4569\\53\\-115.4349\\-268.6172\\53\\-120.1172\\-265.0149\\53\\-124.0234\\-261.7612\\53\\-127.1203\\-258.8516\\53\\-129.1233\\-256.8984\\53\\-131.8359\\-254.0097\\53\\-134.4857\\-251.0391\\53\\-136.0802\\-249.0859\\53\\-137.3119\\-247.1328\\53\\-140.3345\\-243.2266\\53\\-141.6016\\-241.239\\53\\-143.6546\\-237.3672\\53\\-145.5744\\-233.4609\\53\\-148.1061\\-227.6016\\53\\-149.103\\-223.6953\\53\\-149.8518\\-221.7422\\53\\-150.2728\\-219.7891\\53\\-150.5938\\-217.8359\\53\\-151.1054\\-215.8828\\53\\-151.8019\\-213.9297\\53\\-152.8815\\-208.0703\\53\\-153.3869\\-206.1172\\53\\-153.7483\\-204.1641\\53\\-154.1134\\-200.2578\\53\\-154.2146\\-198.3047\\53\\-154.5426\\-188.5391\\53\\-154.5425\\-184.6328\\53\\-154.4196\\-180.7266\\53\\-154.0719\\-176.8203\\53\\-153.9951\\-174.8672\\53\\-153.8057\\-172.9141\\53\\-153.4689\\-170.9609\\53\\-152.9541\\-169.0078\\53\\-152.5745\\-167.0547\\53\\-151.9165\\-163.1484\\53\\-150.7463\\-159.2422\\53\\-150.0952\\-155.3359\\53\\-148.8796\\-151.4297\\53\\-147.968\\-147.5234\\53\\-147.177\\-145.5703\\53\\-145.8439\\-141.6641\\53\\-144.8783\\-139.7109\\53\\-144.3283\\-137.7578\\53\\-142.7429\\-133.8516\\53\\-142.2294\\-131.8984\\53\\-141.2604\\-129.9453\\53\\-140.4894\\-127.9922\\53\\-139.4166\\-126.0391\\53\\-137.6227\\-122.1328\\53\\-135.8906\\-118.2266\\53\\-133.7891\\-114.4614\\53\\-132.5326\\-112.3672\\53\\-131.1574\\-110.4141\\53\\-130.0904\\-108.4609\\53\\-128.7227\\-106.5078\\53\\-125.9766\\-103.2356\\53\\-124.0234\\-101.125\\53\\-121.4563\\-98.69531\\53\\-118.1641\\-95.77891\\53\\-116.2109\\-94.32573\\53\\-114.2578\\-93.29166\\53\\-110.3516\\-90.71394\\53\\-108.3984\\-89.66988\\53\\-106.4453\\-88.42725\\53\\-104.4922\\-87.70728\\53\\-102.5391\\-86.69856\\53\\-100.5859\\-86.08828\\53\\-96.67969\\-84.42767\\53\\-94.72656\\-83.73146\\53\\-92.77344\\-82.83508\\53\\-90.82031\\-82.12505\\53\\-88.86719\\-81.66271\\53\\-86.91406\\-80.81839\\53\\-83.00781\\-79.91868\\53\\-79.10156\\-78.84925\\53\\-75.19531\\-78.03726\\53\\-73.24219\\-77.75757\\53\\-69.33594\\-77.03655\\53\\-65.42969\\-76.44586\\53\\-55.66406\\-76.14718\\53\\-51.75781\\-76.18206\\53\\-45.89844\\-76.51251\\53\\-41.99219\\-76.96346\\53\\-38.08594\\-77.63858\\53\\-34.17969\\-78.17066\\53\\-30.27344\\-78.92834\\53\\-28.32031\\-79.48251\\53\\-22.46094\\-80.53635\\53\\-20.50781\\-81.01398\\53\\-18.55469\\-81.64673\\53\\-16.60156\\-81.99548\\53\\-14.64844\\-82.20553\\53\\-12.69531\\-82.31407\\53\\-10.74219\\-82.30943\\53\\-8.789063\\-82.19498\\53\\-2.929688\\-81.71249\\53\\0.9765625\\-81.33504\\53\\4.882813\\-81.17322\\53\\6.835938\\-81.14181\\53\\10.74219\\-81.25107\\53\\12.69531\\-81.39301\\53\\14.64844\\-81.43056\\53\\16.60156\\-81.23532\\53\\20.50781\\-80.41964\\53\\24.41406\\-79.51334\\53\\26.36719\\-78.87109\\53\\28.32031\\-78.3493\\53\\32.22656\\-77.58452\\53\\34.17969\\-77.13017\\53\\38.08594\\-76.49306\\53\\43.94531\\-76.32793\\53\\51.75781\\-76.32262\\53\\59.57031\\-76.61452\\53\\61.52344\\-76.81643\\53\\65.42969\\-77.33576\\53\\67.38281\\-77.67087\\53\\71.28906\\-78.08705\\53\\75.19531\\-78.69931\\53\\77.14844\\-79.06932\\53\\79.10156\\-79.55332\\53\\83.00781\\-80.2153\\53\\84.96094\\-80.46821\\53\\86.91406\\-80.83296\\53\\90.82031\\-81.89721\\53\\92.77344\\-82.22396\\53\\94.72656\\-82.67836\\53\\96.67969\\-83.48047\\53\\100.5859\\-84.76435\\53\\102.5391\\-85.65639\\53\\104.4922\\-86.26796\\53\\106.4453\\-87.22446\\53\\108.3984\\-87.94702\\53\\110.3516\\-88.85705\\53\\112.3047\\-89.93497\\53\\114.2578\\-91.26646\\53\\116.2109\\-92.49713\\53\\118.1641\\-93.9472\\53\\121.304\\-96.74219\\53\\123.1\\-98.69531\\53\\126.1636\\-102.6016\\53\\128.7802\\-106.5078\\53\\129.9235\\-108.4609\\53\\130.9105\\-110.4141\\53\\132.1929\\-112.3672\\53\\133.1772\\-114.3203\\53\\134.4342\\-116.2734\\53\\135.2572\\-118.2266\\53\\136.3294\\-120.1797\\53\\136.9153\\-122.1328\\53\\138.0568\\-124.0859\\53\\138.7775\\-126.0391\\53\\139.81\\-127.9922\\53\\141.3591\\-131.8984\\53\\142.2422\\-133.8516\\53\\142.7047\\-135.8047\\53\\143.3519\\-137.7578\\53\\144.2038\\-139.7109\\53\\144.6761\\-141.6641\\53\\146.2137\\-145.5703\\53\\146.7026\\-147.5234\\53\\147.4609\\-149.5723\\53\\148.0421\\-151.4297\\53\\148.7317\\-155.3359\\53\\149.1484\\-157.2891\\53\\149.7206\\-159.2422\\53\\150.1073\\-161.1953\\53\\150.7415\\-167.0547\\53\\151.6602\\-172.9141\\53\\151.8468\\-174.8672\\53\\152.0533\\-178.7734\\53\\152.1802\\-184.6328\\53\\152.1762\\-188.5391\\53\\152.0533\\-194.3984\\53\\151.9054\\-198.3047\\53\\151.6263\\-202.2109\\53\\150.6503\\-210.0234\\53\\150.3024\\-213.9297\\53\\150.0507\\-215.8828\\53\\149.6564\\-217.8359\\53\\149.047\\-219.7891\\53\\148.2738\\-223.6953\\53\\147.739\\-225.6484\\53\\146.8348\\-227.6016\\53\\146.1189\\-229.5547\\53\\144.928\\-231.5078\\53\\144.1274\\-233.4609\\53\\142.8885\\-235.4141\\53\\141.956\\-237.3672\\53\\140.5625\\-239.3203\\53\\137.3567\\-243.2266\\53\\135.8325\\-245.1797\\53\\133.7891\\-247.5628\\53\\131.8359\\-249.5242\\53\\128.232\\-252.9922\\53\\125.9669\\-254.9453\\53\\122.0703\\-257.9516\\53\\121.0272\\-258.8516\\53\\118.1641\\-261.0107\\53\\116.2109\\-262.1449\\53\\114.2578\\-263.4363\\53\\112.3047\\-264.3023\\53\\110.3516\\-265.5619\\53\\108.3644\\-266.6641\\53\\106.4453\\-267.618\\53\\102.5391\\-269.4047\\53\\100.5859\\-269.9552\\53\\98.63281\\-271.0119\\53\\96.67969\\-271.6656\\53\\94.72656\\-272.6042\\53\\92.77344\\-273.3719\\53\\90.82031\\-274.0204\\53\\88.86719\\-274.9419\\53\\84.96094\\-276.0042\\53\\83.00781\\-276.9433\\53\\81.05469\\-277.4859\\53\\77.14844\\-279.2701\\53\\75.19531\\-280.1057\\53\\73.24219\\-281.0435\\53\\71.28906\\-281.6787\\53\\69.33594\\-282.6727\\53\\67.38281\\-283.2827\\53\\65.42969\\-284.1259\\53\\63.47656\\-285.0993\\53\\61.52344\\-285.8831\\53\\59.57031\\-286.8705\\53\\57.61719\\-287.5158\\53\\55.66406\\-288.5155\\53\\53.71094\\-289.1074\\53\\51.75781\\-289.5906\\53\\49.80469\\-290.6128\\53\\47.85156\\-291.2027\\53\\43.94531\\-292.8289\\53\\41.99219\\-293.3961\\53\\40.03906\\-294.2641\\53\\38.08594\\-294.795\\53\\34.17969\\-295.6354\\53\\32.22656\\-296.4396\\53\\30.27344\\-296.8557\\53\\28.32031\\-297.1723\\53\\26.36719\\-297.6947\\53\\24.41406\\-298.3937\\53\\18.55469\\-299.3699\\53\\16.42072\\-299.8672\\53\\14.64844\\-300.182\\53\\10.74219\\-300.5608\\53\\2.929688\\-300.8954\\53\\-0.9765625\\-300.9373\\53\\-6.835938\\-300.782\\53\\-12.69531\\-300.4825\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "289"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "153"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-300.091\\55\\-18.55469\\-299.6127\\55\\-20.50781\\-299.2442\\55\\-24.41406\\-298.6671\\55\\-26.36719\\-298.301\\55\\-28.32031\\-297.6224\\55\\-30.27344\\-297.1897\\55\\-34.17969\\-296.6178\\55\\-38.08594\\-295.4694\\55\\-41.99219\\-294.8158\\55\\-43.94531\\-294.4049\\55\\-45.89844\\-293.6673\\55\\-49.80469\\-292.6396\\55\\-51.75781\\-291.792\\55\\-53.71094\\-291.1763\\55\\-55.66406\\-290.7186\\55\\-57.61719\\-289.8773\\55\\-59.57031\\-289.3096\\55\\-61.52344\\-288.9761\\55\\-63.47656\\-288.474\\55\\-65.42969\\-287.7022\\55\\-69.33594\\-286.7066\\55\\-71.28906\\-285.9096\\55\\-73.24219\\-285.3289\\55\\-75.19531\\-284.8492\\55\\-77.14844\\-284.0439\\55\\-79.10156\\-283.4284\\55\\-81.05469\\-283.1019\\55\\-83.00781\\-282.6358\\55\\-84.96094\\-281.9308\\55\\-86.91406\\-281.4125\\55\\-88.86719\\-281.012\\55\\-92.77344\\-279.5515\\55\\-94.72656\\-278.9784\\55\\-96.67969\\-277.9908\\55\\-100.5859\\-276.6684\\55\\-102.5391\\-275.6715\\55\\-104.4922\\-275.0484\\55\\-106.4453\\-273.8942\\55\\-108.3984\\-272.9324\\55\\-112.3047\\-270.1839\\55\\-114.2578\\-269.2031\\55\\-116.2109\\-267.7288\\55\\-120.1172\\-264.5187\\55\\-122.0703\\-263.0933\\55\\-124.0234\\-261.4125\\55\\-127.9297\\-257.5713\\55\\-128.6804\\-256.8984\\55\\-131.8359\\-253.5794\\55\\-134.1271\\-251.0391\\55\\-135.7422\\-248.9806\\55\\-136.9504\\-247.1328\\55\\-139.6484\\-243.6304\\55\\-140.024\\-243.2266\\55\\-142.4377\\-239.3203\\55\\-143.2683\\-237.3672\\55\\-144.3768\\-235.4141\\55\\-145.1801\\-233.4609\\55\\-146.247\\-231.5078\\55\\-146.9389\\-229.5547\\55\\-147.8985\\-227.6016\\55\\-148.8796\\-223.6953\\55\\-149.6153\\-221.7422\\55\\-150.142\\-219.7891\\55\\-150.8328\\-215.8828\\55\\-151.5416\\-213.9297\\55\\-152.0235\\-211.9766\\55\\-152.6384\\-208.0703\\55\\-153.5197\\-204.1641\\55\\-153.9659\\-200.2578\\55\\-154.1795\\-196.3516\\55\\-154.3135\\-192.4453\\55\\-154.2908\\-188.5391\\55\\-154.3674\\-184.6328\\55\\-154.1971\\-180.7266\\55\\-153.3203\\-179.244\\55\\-152.4431\\-178.7734\\55\\-151.6062\\-176.8203\\55\\-153.6873\\-174.8672\\55\\-153.4288\\-172.9141\\55\\-152.6493\\-169.0078\\55\\-152.0235\\-165.1016\\55\\-151.591\\-163.1484\\55\\-150.9209\\-161.1953\\55\\-150.512\\-159.2422\\55\\-150.224\\-157.2891\\55\\-149.817\\-155.3359\\55\\-149.1298\\-153.3828\\55\\-148.6217\\-151.4297\\55\\-148.2457\\-149.4766\\55\\-147.6647\\-147.5234\\55\\-146.839\\-145.5703\\55\\-146.2467\\-143.6172\\55\\-144.6332\\-139.7109\\55\\-144.0979\\-137.7578\\55\\-143.1245\\-135.8047\\55\\-141.9523\\-131.8984\\55\\-140.9486\\-129.9453\\55\\-140.2252\\-127.9922\\55\\-139.0425\\-126.0391\\55\\-138.3118\\-124.0859\\55\\-137.2621\\-122.1328\\55\\-136.5297\\-120.1797\\55\\-135.4047\\-118.2266\\55\\-134.5691\\-116.2734\\55\\-133.284\\-114.3203\\55\\-132.2198\\-112.3672\\55\\-130.821\\-110.4141\\55\\-129.8828\\-108.6746\\55\\-128.4317\\-106.5078\\55\\-125.9766\\-103.5851\\55\\-124.0234\\-101.4488\\55\\-121.1291\\-98.69531\\55\\-118.1641\\-96.11486\\55\\-116.2109\\-94.63572\\55\\-112.3047\\-92.34447\\55\\-110.3516\\-91.27202\\55\\-108.3984\\-89.9866\\55\\-104.4922\\-87.99695\\55\\-98.63281\\-85.55919\\55\\-96.67969\\-84.66662\\55\\-90.82031\\-82.19456\\55\\-88.86719\\-81.76185\\55\\-86.91406\\-80.99905\\55\\-84.96094\\-80.45584\\55\\-81.05469\\-79.58655\\55\\-79.10156\\-79.01546\\55\\-75.19531\\-78.19892\\55\\-71.28906\\-77.62385\\55\\-65.42969\\-76.61681\\55\\-61.52344\\-76.42847\\55\\-55.66406\\-76.26452\\55\\-51.75781\\-76.29429\\55\\-49.80469\\-76.40706\\55\\-45.89844\\-76.73882\\55\\-42.04102\\-77.21094\\55\\-40.03906\\-77.56065\\55\\-34.17969\\-78.37486\\55\\-32.22656\\-78.74812\\55\\-28.32031\\-79.71745\\55\\-22.46094\\-80.74483\\55\\-20.50781\\-81.367\\55\\-18.55469\\-81.84319\\55\\-16.60156\\-82.05824\\55\\-12.69531\\-82.25947\\55\\-8.789063\\-82.06398\\55\\-4.882813\\-81.72173\\55\\-2.929688\\-81.41599\\55\\2.929688\\-81.02985\\55\\6.835938\\-80.94171\\55\\10.74219\\-80.95443\\55\\14.64844\\-81.1254\\55\\16.60156\\-80.99905\\55\\20.50781\\-80.41964\\55\\24.41406\\-79.63527\\55\\26.36719\\-79.02863\\55\\30.27344\\-78.12505\\55\\32.22656\\-77.79567\\55\\36.13281\\-77.02393\\55\\40.03906\\-76.57983\\55\\41.99219\\-76.47852\\55\\51.75781\\-76.48779\\55\\55.66406\\-76.62628\\55\\61.52344\\-77.14436\\55\\67.38281\\-77.92371\\55\\69.33594\\-78.12347\\55\\73.24219\\-78.64211\\55\\77.14844\\-79.44206\\55\\81.05469\\-80.17336\\55\\84.96094\\-80.65248\\55\\86.83268\\-81.11719\\55\\88.86719\\-81.73631\\55\\92.77344\\-82.41724\\55\\96.67969\\-83.73484\\55\\98.63281\\-84.30585\\55\\102.5391\\-85.86758\\55\\104.4922\\-86.47883\\55\\106.4453\\-87.50497\\55\\108.3984\\-88.12215\\55\\110.3516\\-89.21983\\55\\112.3047\\-90.21107\\55\\116.2109\\-92.96114\\55\\118.1641\\-94.21825\\55\\120.1172\\-95.84806\\55\\122.9162\\-98.69531\\55\\124.4801\\-100.6484\\55\\125.9766\\-102.7139\\55\\128.63\\-106.5078\\55\\130.7752\\-110.4141\\55\\131.9627\\-112.3672\\55\\133.0205\\-114.3203\\55\\134.2364\\-116.2734\\55\\135.0932\\-118.2266\\55\\136.1677\\-120.1797\\55\\136.8049\\-122.1328\\55\\137.8046\\-124.0859\\55\\139.4821\\-127.9922\\55\\140.4657\\-129.9453\\55\\141.1513\\-131.8984\\55\\142.1348\\-133.8516\\55\\143.1518\\-137.7578\\55\\144.0677\\-139.7109\\55\\144.5726\\-141.6641\\55\\145.1801\\-143.6172\\55\\146.0779\\-145.5703\\55\\146.5727\\-147.5234\\55\\147.8929\\-151.4297\\55\\148.3004\\-153.3828\\55\\148.9898\\-157.2891\\55\\149.9821\\-161.1953\\55\\150.2551\\-163.1484\\55\\150.824\\-169.0078\\55\\151.4048\\-172.9141\\55\\151.8019\\-176.8203\\55\\151.9742\\-180.7266\\55\\152.0433\\-184.6328\\55\\152.03\\-188.5391\\55\\151.8809\\-194.3984\\55\\151.6712\\-198.3047\\55\\151.3134\\-202.2109\\55\\150.8665\\-206.1172\\55\\150.1684\\-213.9297\\55\\149.8306\\-215.8828\\55\\148.8255\\-219.7891\\55\\148.0862\\-223.6953\\55\\147.4609\\-225.4333\\55\\145.7896\\-229.5547\\55\\144.6574\\-231.5078\\55\\143.7789\\-233.4609\\55\\141.6016\\-237.2491\\55\\140.2391\\-239.3203\\55\\137.6953\\-242.4979\\55\\133.7891\\-246.9756\\55\\129.6794\\-251.0391\\55\\125.9766\\-254.4806\\55\\123.014\\-256.8984\\55\\120.1172\\-259.1221\\55\\116.2109\\-261.7686\\55\\114.2578\\-263.0316\\55\\112.3047\\-263.8747\\55\\110.3516\\-265.1358\\55\\108.3984\\-266.047\\55\\106.4453\\-267.2523\\55\\104.4922\\-268.0053\\55\\102.5391\\-269.0535\\55\\100.5859\\-269.6411\\55\\98.63281\\-270.4231\\55\\96.67969\\-271.3548\\55\\94.72656\\-271.9849\\55\\92.77344\\-272.9997\\55\\90.82031\\-273.6573\\55\\86.91406\\-275.2301\\55\\84.96094\\-275.7223\\55\\83.00781\\-276.5874\\55\\79.10156\\-277.9727\\55\\77.14844\\-279.1044\\55\\75.19531\\-279.8724\\55\\73.24219\\-280.9243\\55\\71.28906\\-281.5783\\55\\69.33594\\-282.5733\\55\\67.38281\\-283.2484\\55\\65.42969\\-284.0409\\55\\63.47656\\-285.0516\\55\\61.52344\\-285.8291\\55\\59.57031\\-286.8558\\55\\57.61719\\-287.5118\\55\\55.66406\\-288.5267\\55\\53.71094\\-289.1074\\55\\51.75781\\-289.5777\\55\\49.80469\\-290.6296\\55\\47.85156\\-291.2226\\55\\43.94531\\-292.8592\\55\\41.99219\\-293.464\\55\\40.03906\\-294.3109\\55\\38.08594\\-294.8323\\55\\36.13281\\-295.1932\\55\\34.17969\\-295.7222\\55\\32.22656\\-296.4897\\55\\28.32031\\-297.2033\\55\\24.41406\\-298.4603\\55\\18.55469\\-299.4188\\55\\16.60156\\-299.9048\\55\\14.64844\\-300.2263\\55\\10.74219\\-300.5759\\55\\6.835938\\-300.7699\\55\\0.9765625\\-300.9503\\55\\-2.929688\\-300.932\\55\\-6.835938\\-300.8154\\55\\-12.69531\\-300.5275\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "299"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "154"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-300.1377\\57\\-20.50781\\-299.2951\\57\\-24.41406\\-298.7001\\57\\-26.36719\\-298.3488\\57\\-28.32031\\-297.6822\\57\\-30.27344\\-297.2142\\57\\-34.17969\\-296.6405\\57\\-36.13281\\-296.1175\\57\\-38.08594\\-295.4825\\57\\-41.99219\\-294.8341\\57\\-43.94531\\-294.4023\\57\\-45.89844\\-293.6521\\57\\-49.80469\\-292.6396\\57\\-51.75781\\-291.7357\\57\\-53.71094\\-291.1216\\57\\-55.66406\\-290.6572\\57\\-57.61719\\-289.7286\\57\\-59.57031\\-289.2537\\57\\-61.52344\\-288.8945\\57\\-63.47656\\-288.3186\\57\\-65.42969\\-287.5479\\57\\-69.33594\\-286.5418\\57\\-71.28906\\-285.6804\\57\\-75.19531\\-284.6291\\57\\-77.14844\\-283.7603\\57\\-81.05469\\-282.9254\\57\\-84.96094\\-281.6486\\57\\-88.86719\\-280.7581\\57\\-90.82031\\-279.8955\\57\\-94.72656\\-278.6066\\57\\-96.67969\\-277.649\\57\\-98.63281\\-277.118\\57\\-100.5859\\-276.16\\57\\-104.4922\\-274.7153\\57\\-104.8177\\-274.4766\\57\\-108.3139\\-272.5234\\57\\-110.3516\\-271.2896\\57\\-112.3047\\-269.8746\\57\\-114.2578\\-268.867\\57\\-116.2109\\-267.4364\\57\\-120.1172\\-264.1055\\57\\-122.0064\\-262.7578\\57\\-124.2247\\-260.8047\\57\\-128.3763\\-256.8984\\57\\-130.2279\\-254.9453\\57\\-133.7891\\-250.823\\57\\-135.7422\\-248.5017\\57\\-136.6828\\-247.1328\\57\\-138.19\\-245.1797\\57\\-139.6484\\-243.1271\\57\\-142.216\\-239.3203\\57\\-143.0092\\-237.3672\\57\\-144.1606\\-235.4141\\57\\-144.8938\\-233.4609\\57\\-146.0202\\-231.5078\\57\\-146.6964\\-229.5547\\57\\-147.6249\\-227.6016\\57\\-148.2689\\-225.6484\\57\\-148.6955\\-223.6953\\57\\-149.9821\\-219.7891\\57\\-150.6575\\-215.8828\\57\\-151.1574\\-213.9297\\57\\-151.8019\\-211.9766\\57\\-152.1752\\-210.0234\\57\\-152.7861\\-206.1172\\57\\-153.556\\-202.2109\\57\\-153.7823\\-200.2578\\57\\-154.031\\-196.3516\\57\\-154.1998\\-190.4922\\57\\-154.1901\\-184.6328\\57\\-154.1491\\-182.6797\\57\\-153.755\\-180.7266\\57\\-153.3203\\-180.2919\\57\\-151.3672\\-179.8018\\57\\-149.4141\\-181.1705\\57\\-147.4609\\-181.0335\\57\\-145.5078\\-180.0368\\57\\-143.5547\\-179.474\\57\\-142.4037\\-178.7734\\57\\-143.5547\\-177.6992\\57\\-144.2871\\-176.8203\\57\\-145.2456\\-174.8672\\57\\-145.5078\\-174.5627\\57\\-147.4609\\-173.087\\57\\-149.4141\\-173.3349\\57\\-151.3672\\-173.9317\\57\\-151.9134\\-172.9141\\57\\-152.491\\-170.9609\\57\\-152.4193\\-169.0078\\57\\-152.1474\\-167.0547\\57\\-151.7639\\-165.1016\\57\\-151.1302\\-163.1484\\57\\-150.6564\\-161.1953\\57\\-150.0423\\-157.2891\\57\\-148.8607\\-153.3828\\57\\-148.0493\\-149.4766\\57\\-147.24\\-147.5234\\57\\-145.9872\\-143.6172\\57\\-145.0133\\-141.6641\\57\\-144.439\\-139.7109\\57\\-143.7645\\-137.7578\\57\\-142.881\\-135.8047\\57\\-142.3816\\-133.8516\\57\\-140.6883\\-129.9453\\57\\-139.9075\\-127.9922\\57\\-138.7906\\-126.0391\\57\\-138.0143\\-124.0859\\57\\-137.0124\\-122.1328\\57\\-136.2953\\-120.1797\\57\\-135.1149\\-118.2266\\57\\-134.3061\\-116.2734\\57\\-132.9773\\-114.3203\\57\\-130.6839\\-110.4141\\57\\-128.1389\\-106.5078\\57\\-126.4986\\-104.5547\\57\\-124.0234\\-101.778\\57\\-120.785\\-98.69531\\57\\-118.4346\\-96.74219\\57\\-118.1641\\-96.4342\\57\\-115.9668\\-94.78906\\57\\-114.2578\\-93.82449\\57\\-112.3047\\-92.59004\\57\\-110.3516\\-91.6725\\57\\-108.3984\\-90.34956\\57\\-106.4453\\-89.43436\\57\\-104.4922\\-88.23599\\57\\-102.5391\\-87.60291\\57\\-100.5859\\-86.61713\\57\\-98.63281\\-85.82076\\57\\-94.72656\\-84.02403\\57\\-92.77344\\-83.27855\\57\\-90.82031\\-82.38287\\57\\-86.91406\\-81.39092\\57\\-84.96094\\-80.65248\\57\\-83.00781\\-80.26481\\57\\-79.10156\\-79.35043\\57\\-77.14844\\-78.80724\\57\\-73.24219\\-78.07589\\57\\-65.42969\\-76.95467\\57\\-61.52344\\-76.61734\\57\\-55.66406\\-76.395\\57\\-53.71094\\-76.37666\\57\\-49.80469\\-76.56208\\57\\-43.94531\\-77.24879\\57\\-40.03906\\-77.81236\\57\\-36.13281\\-78.26307\\57\\-32.22656\\-79.06932\\57\\-30.27344\\-79.58836\\57\\-24.41406\\-80.5863\\57\\-20.50781\\-81.64925\\57\\-18.55469\\-81.94634\\57\\-16.60156\\-82.12352\\57\\-12.69531\\-82.18961\\57\\-8.789063\\-81.95159\\57\\-4.882813\\-81.50924\\57\\-0.9765625\\-81.1254\\57\\2.929688\\-80.91436\\57\\4.882813\\-80.85825\\57\\10.74219\\-80.80614\\57\\14.64844\\-80.88609\\57\\16.60156\\-80.83296\\57\\18.55469\\-80.66281\\57\\22.46094\\-80.21276\\57\\26.36719\\-79.29688\\57\\28.32031\\-78.73869\\57\\32.22656\\-77.97443\\57\\36.13281\\-77.32191\\57\\40.03906\\-76.83794\\57\\41.99219\\-76.71606\\57\\51.75781\\-76.72266\\57\\55.66406\\-76.92911\\57\\59.57031\\-77.24879\\57\\69.33594\\-78.29058\\57\\73.24219\\-78.90498\\57\\75.19531\\-79.36382\\57\\77.14844\\-79.71017\\57\\81.05469\\-80.28257\\57\\83.00781\\-80.51476\\57\\84.96094\\-80.88432\\57\\86.91406\\-81.45467\\57\\88.86719\\-81.89233\\57\\92.77344\\-82.61808\\57\\94.72656\\-83.34431\\57\\98.63281\\-84.50539\\57\\100.5859\\-85.44662\\57\\102.5391\\-86.04414\\57\\104.4922\\-86.76522\\57\\106.4453\\-87.72631\\57\\108.3984\\-88.36501\\57\\110.3516\\-89.54479\\57\\112.3047\\-90.48301\\57\\115.7227\\-92.83594\\57\\116.2109\\-93.26412\\57\\118.1641\\-94.53329\\57\\120.1172\\-96.15244\\57\\122.6232\\-98.69531\\57\\124.1962\\-100.6484\\57\\128.4849\\-106.5078\\57\\129.4994\\-108.4609\\57\\130.677\\-110.4141\\57\\131.6745\\-112.3672\\57\\134.086\\-116.2734\\57\\134.9383\\-118.2266\\57\\135.9751\\-120.1797\\57\\137.5351\\-124.0859\\57\\138.5091\\-126.0391\\57\\139.2513\\-127.9922\\57\\140.3393\\-129.9453\\57\\141.0074\\-131.8984\\57\\141.9881\\-133.8516\\57\\142.5484\\-135.8047\\57\\143.0086\\-137.7578\\57\\143.9116\\-139.7109\\57\\145.0103\\-143.6172\\57\\145.9358\\-145.5703\\57\\146.9974\\-149.4766\\57\\147.739\\-151.4297\\57\\148.1992\\-153.3828\\57\\148.8643\\-157.2891\\57\\149.8413\\-161.1953\\57\\150.1539\\-163.1484\\57\\150.8852\\-170.9609\\57\\151.591\\-176.8203\\57\\151.724\\-178.7734\\57\\151.864\\-182.6797\\57\\151.864\\-188.5391\\57\\151.7442\\-192.4453\\57\\151.5542\\-196.3516\\57\\150.824\\-204.1641\\57\\150.2125\\-211.9766\\57\\149.9602\\-213.9297\\57\\149.559\\-215.8828\\57\\149.0111\\-217.8359\\57\\148.3104\\-221.7422\\57\\147.8581\\-223.6953\\57\\146.9974\\-225.6484\\57\\146.3397\\-227.6016\\57\\144.4246\\-231.5078\\57\\143.2957\\-233.4609\\57\\142.4216\\-235.4141\\57\\139.8186\\-239.3203\\57\\137.6953\\-242.0625\\57\\135.035\\-245.1797\\57\\131.8359\\-248.5474\\57\\129.2894\\-251.0391\\57\\125.9766\\-254.0932\\57\\124.0234\\-255.7173\\57\\122.0703\\-257.1928\\57\\120.1172\\-258.4568\\57\\116.2109\\-261.3919\\57\\114.2578\\-262.3916\\57\\112.3047\\-263.587\\57\\110.0426\\-264.7109\\57\\106.4453\\-266.6718\\57\\100.5859\\-269.3898\\57\\98.63281\\-269.9257\\57\\96.67969\\-270.9341\\57\\94.72656\\-271.6151\\57\\92.77344\\-272.4258\\57\\90.82031\\-273.3472\\57\\88.86719\\-274.004\\57\\86.91406\\-274.9616\\57\\84.96094\\-275.5194\\57\\83.00781\\-276.1855\\57\\81.05469\\-277.1321\\57\\79.10156\\-277.7695\\57\\77.14844\\-278.9064\\57\\75.19531\\-279.7098\\57\\73.24219\\-280.8085\\57\\71.28906\\-281.4945\\57\\69.33594\\-282.4645\\57\\65.42969\\-283.9745\\57\\63.47656\\-285.0308\\57\\61.52344\\-285.806\\57\\59.57031\\-286.8558\\57\\57.61719\\-287.5118\\57\\55.66406\\-288.5155\\57\\51.75781\\-289.6432\\57\\49.80469\\-290.6809\\57\\47.85156\\-291.2442\\57\\45.89844\\-292.1494\\57\\43.94531\\-292.9067\\57\\41.99219\\-293.5136\\57\\40.03906\\-294.3814\\57\\38.08594\\-294.8674\\57\\36.13281\\-295.2423\\57\\34.17969\\-295.8032\\57\\32.22656\\-296.5372\\57\\28.32031\\-297.2612\\57\\24.41406\\-298.5138\\57\\20.50781\\-299.144\\57\\16.60156\\-300.0026\\57\\14.64844\\-300.2787\\57\\10.74219\\-300.5982\\57\\6.835938\\-300.804\\57\\0.9765625\\-300.9908\\57\\-0.9765625\\-300.9976\\57\\-6.835938\\-300.8438\\57\\-12.69531\\-300.5569\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "301"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "155"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-300.1711\\59\\-20.50781\\-299.3404\\59\\-26.36719\\-298.3937\\59\\-28.32031\\-297.7477\\59\\-30.27344\\-297.2465\\59\\-34.17969\\-296.6593\\59\\-36.13281\\-296.1723\\59\\-38.08594\\-295.4956\\59\\-41.99219\\-294.8391\\59\\-43.94531\\-294.4049\\59\\-45.89844\\-293.6392\\59\\-49.80469\\-292.6166\\59\\-51.75781\\-291.6909\\59\\-53.71094\\-291.0877\\59\\-55.66406\\-290.5956\\59\\-57.61719\\-289.6393\\59\\-61.52344\\-288.8098\\59\\-65.42969\\-287.4218\\59\\-67.38281\\-286.9502\\59\\-69.33594\\-286.3174\\59\\-71.28906\\-285.4846\\59\\-73.24219\\-284.9938\\59\\-77.14844\\-283.5463\\59\\-81.05469\\-282.6838\\59\\-83.00781\\-281.9333\\59\\-86.91406\\-281.0044\\59\\-88.86719\\-280.3588\\59\\-90.82031\\-279.5536\\59\\-92.77344\\-278.9987\\59\\-94.72656\\-278.0596\\59\\-98.63281\\-276.7804\\59\\-100.5859\\-275.8146\\59\\-102.5391\\-275.2517\\59\\-106.4453\\-273.3015\\59\\-108.3984\\-271.9698\\59\\-110.3516\\-270.9648\\59\\-116.2109\\-267.0756\\59\\-120.1172\\-263.7461\\59\\-121.5041\\-262.7578\\59\\-123.7146\\-260.8047\\59\\-125.9766\\-258.625\\59\\-127.8865\\-256.8984\\59\\-129.8828\\-254.8477\\59\\-131.3726\\-252.9922\\59\\-134.8778\\-249.0859\\59\\-136.4553\\-247.1328\\59\\-139.1236\\-243.2266\\59\\-140.6136\\-241.2734\\59\\-141.9103\\-239.3203\\59\\-142.7847\\-237.3672\\59\\-143.9006\\-235.4141\\59\\-144.6607\\-233.4609\\59\\-145.721\\-231.5078\\59\\-147.2572\\-227.6016\\59\\-148.0818\\-225.6484\\59\\-149.0331\\-221.7422\\59\\-149.7467\\-219.7891\\59\\-150.1988\\-217.8359\\59\\-150.8634\\-213.9297\\59\\-151.5158\\-211.9766\\59\\-151.9954\\-210.0234\\59\\-152.8503\\-204.1641\\59\\-153.5441\\-200.2578\\59\\-153.8597\\-196.3516\\59\\-153.9477\\-194.3984\\59\\-154.0514\\-188.5391\\59\\-154.0232\\-184.6328\\59\\-153.9368\\-182.6797\\59\\-153.3203\\-181.8437\\59\\-151.3672\\-180.7744\\59\\-149.4141\\-182.2689\\59\\-147.4609\\-182.3821\\59\\-145.0331\\-180.7266\\59\\-143.5547\\-179.9874\\59\\-141.6016\\-179.6632\\59\\-140.479\\-178.7734\\59\\-143.0249\\-174.8672\\59\\-143.5547\\-173.7353\\59\\-144.1569\\-172.9141\\59\\-145.5078\\-171.7221\\59\\-147.4609\\-171.1296\\59\\-149.4141\\-172.0051\\59\\-151.3672\\-171.6743\\59\\-151.9695\\-170.9609\\59\\-152.2021\\-169.0078\\59\\-151.9165\\-167.0547\\59\\-150.8031\\-163.1484\\59\\-150.1918\\-159.2422\\59\\-149.7724\\-157.2891\\59\\-149.0583\\-155.3359\\59\\-148.2457\\-151.4297\\59\\-147.739\\-149.4766\\59\\-146.8918\\-147.5234\\59\\-146.3486\\-145.5703\\59\\-145.6442\\-143.6172\\59\\-144.7477\\-141.6641\\59\\-144.2115\\-139.7109\\59\\-143.2977\\-137.7578\\59\\-142.1513\\-133.8516\\59\\-141.1611\\-131.8984\\59\\-140.4224\\-129.9453\\59\\-139.4149\\-127.9922\\59\\-137.5781\\-124.0859\\59\\-135.9652\\-120.1797\\59\\-134.8748\\-118.2266\\59\\-133.9673\\-116.2734\\59\\-131.8359\\-112.9292\\59\\-131.4135\\-112.3672\\59\\-130.4803\\-110.4141\\59\\-127.9297\\-106.7302\\59\\-126.2008\\-104.5547\\59\\-124.0234\\-102.1133\\59\\-122.5586\\-100.6484\\59\\-120.1172\\-98.44783\\59\\-117.9874\\-96.74219\\59\\-115.4199\\-94.78906\\59\\-114.2578\\-94.02951\\59\\-112.3047\\-93.06432\\59\\-110.3516\\-91.98356\\59\\-108.3984\\-90.78807\\59\\-106.4453\\-89.76421\\59\\-104.4922\\-88.59423\\59\\-102.5391\\-87.86041\\59\\-100.5859\\-86.87581\\59\\-96.67969\\-85.22784\\59\\-94.72656\\-84.21061\\59\\-92.77344\\-83.53625\\59\\-90.82031\\-82.64008\\59\\-88.86719\\-82.09978\\59\\-86.91406\\-81.7005\\59\\-84.96094\\-80.89934\\59\\-83.00781\\-80.40751\\59\\-79.10156\\-79.66537\\59\\-77.14844\\-79.11188\\59\\-73.24219\\-78.27267\\59\\-63.47656\\-77.04935\\59\\-61.52344\\-76.90576\\59\\-57.61719\\-76.79057\\59\\-55.66406\\-76.63197\\59\\-53.71094\\-76.60059\\59\\-49.80469\\-76.87395\\59\\-45.89844\\-77.37856\\59\\-38.08594\\-78.24995\\59\\-36.13281\\-78.56175\\59\\-32.22656\\-79.48959\\59\\-26.36719\\-80.44348\\59\\-24.41406\\-80.87119\\59\\-22.46094\\-81.41824\\59\\-20.50781\\-81.86213\\59\\-16.60156\\-82.15925\\59\\-14.64844\\-82.19498\\59\\-12.69531\\-82.12389\\59\\-8.789063\\-81.83844\\59\\-4.882813\\-81.36319\\59\\-0.9765625\\-81\\59\\2.929688\\-80.84754\\59\\10.74219\\-80.68392\\59\\14.64844\\-80.70856\\59\\18.55469\\-80.59592\\59\\22.46094\\-80.24223\\59\\24.41406\\-79.81726\\59\\26.36719\\-79.49908\\59\\28.32031\\-78.98968\\59\\32.22656\\-78.1875\\59\\36.13281\\-77.62109\\59\\40.03906\\-77.15875\\59\\41.99219\\-77.06233\\59\\45.89844\\-77.02393\\59\\51.75781\\-77.0755\\59\\55.66406\\-77.23419\\59\\59.57031\\-77.55599\\59\\67.38281\\-78.25964\\59\\71.28906\\-78.79707\\59\\75.19531\\-79.61221\\59\\79.10156\\-80.18741\\59\\83.00781\\-80.70856\\59\\86.91406\\-81.72832\\59\\90.82031\\-82.37276\\59\\92.77344\\-82.88947\\59\\94.72656\\-83.59902\\59\\96.67969\\-84.13809\\59\\98.63281\\-84.78442\\59\\100.5859\\-85.68821\\59\\102.5391\\-86.25128\\59\\104.4922\\-87.14063\\59\\108.3984\\-88.63089\\59\\112.2735\\-90.88281\\59\\115.3129\\-92.83594\\59\\117.998\\-94.78906\\59\\120.1172\\-96.51839\\59\\122.2486\\-98.69531\\59\\124.0234\\-100.8349\\59\\125.9766\\-103.3224\\59\\128.3075\\-106.5078\\59\\129.3335\\-108.4609\\59\\130.5565\\-110.4141\\59\\131.4439\\-112.3672\\59\\131.8359\\-112.8923\\59\\133.8412\\-116.2734\\59\\135.7422\\-120.1448\\59\\136.6349\\-122.1328\\59\\137.3033\\-124.0859\\59\\138.3921\\-126.0391\\59\\139.0947\\-127.9922\\59\\140.2213\\-129.9453\\59\\140.8705\\-131.8984\\59\\141.8258\\-133.8516\\59\\142.4583\\-135.8047\\59\\142.9224\\-137.7578\\59\\143.7383\\-139.7109\\59\\144.379\\-141.6641\\59\\144.8817\\-143.6172\\59\\145.7553\\-145.5703\\59\\146.3629\\-147.5234\\59\\146.8307\\-149.4766\\59\\147.5571\\-151.4297\\59\\148.1022\\-153.3828\\59\\149.0979\\-159.2422\\59\\149.6434\\-161.1953\\59\\150.0299\\-163.1484\\59\\150.2615\\-165.1016\\59\\150.7142\\-170.9609\\59\\151.448\\-178.7734\\59\\151.649\\-182.6797\\59\\151.6377\\-188.5391\\59\\151.4893\\-192.4453\\59\\151.0237\\-198.3047\\59\\150.2355\\-210.0234\\59\\150.0338\\-211.9766\\59\\149.7206\\-213.9297\\59\\149.1995\\-215.8828\\59\\148.7903\\-217.8359\\59\\148.1297\\-221.7422\\59\\147.5285\\-223.6953\\59\\146.7203\\-225.6484\\59\\146.0714\\-227.6016\\59\\144.9542\\-229.5547\\59\\144.1833\\-231.5078\\59\\142.9269\\-233.4609\\59\\142.1274\\-235.4141\\59\\139.2645\\-239.3203\\59\\137.8823\\-241.2734\\59\\136.3253\\-243.2266\\59\\134.6608\\-245.1797\\59\\131.8359\\-248.1975\\59\\128.9135\\-251.0391\\59\\125.9766\\-253.6613\\59\\124.0234\\-255.3255\\59\\121.8284\\-256.8984\\59\\120.1172\\-258.0289\\59\\118.1641\\-259.5456\\59\\116.2109\\-260.8761\\59\\114.2578\\-261.9628\\59\\112.3047\\-263.2004\\59\\110.3516\\-264.0024\\59\\108.3984\\-265.2082\\59\\106.4453\\-266.0432\\59\\104.4922\\-267.2087\\59\\102.5391\\-267.9767\\59\\100.5859\\-268.9895\\59\\96.67969\\-270.3374\\59\\94.72656\\-271.2868\\59\\92.77344\\-271.9375\\59\\90.82031\\-272.9934\\59\\88.86719\\-273.6655\\59\\86.91406\\-274.5742\\59\\84.96094\\-275.3197\\59\\83.00781\\-275.9049\\59\\81.05469\\-276.9339\\59\\79.10156\\-277.5848\\59\\77.14844\\-278.7105\\59\\75.19531\\-279.5558\\59\\73.24219\\-280.6771\\59\\71.28906\\-281.4217\\59\\69.33594\\-282.3764\\59\\65.42969\\-283.9237\\59\\63.47656\\-285.014\\59\\61.52344\\-285.7732\\59\\59.57031\\-286.8558\\59\\57.61719\\-287.5242\\59\\55.66406\\-288.5377\\59\\51.75781\\-289.6773\\59\\49.80469\\-290.7259\\59\\47.85156\\-291.2951\\59\\45.89844\\-292.2664\\59\\41.99219\\-293.5786\\59\\40.03906\\-294.4482\\59\\36.13281\\-295.2915\\59\\34.17969\\-295.8906\\59\\32.22656\\-296.5983\\59\\28.32031\\-297.3304\\59\\26.36719\\-298.0226\\59\\24.41406\\-298.5634\\59\\20.50781\\-299.2033\\59\\16.60156\\-300.0789\\59\\12.69531\\-300.5051\\59\\6.835938\\-300.838\\59\\0.9765625\\-301.0095\\59\\-2.929688\\-300.9875\\59\\-8.789063\\-300.7927\\59\\-14.64844\\-300.4244\\59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "290"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "156"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-299.8748\\61\\-20.50781\\-299.385\\61\\-26.36719\\-298.4442\\61\\-30.27344\\-297.2798\\61\\-34.17969\\-296.6878\\61\\-36.13281\\-296.1979\\61\\-38.08594\\-295.5396\\61\\-41.99219\\-294.8457\\61\\-43.94531\\-294.4049\\61\\-45.89844\\-293.621\\61\\-49.80469\\-292.5848\\61\\-51.75781\\-291.6478\\61\\-55.66406\\-290.5227\\61\\-57.61719\\-289.5752\\61\\-61.52344\\-288.7255\\61\\-63.47656\\-287.9387\\61\\-65.42969\\-287.2946\\61\\-67.38281\\-286.8118\\61\\-71.28906\\-285.337\\61\\-73.24219\\-284.817\\61\\-75.19531\\-283.9305\\61\\-77.14844\\-283.3723\\61\\-79.10156\\-283.0109\\61\\-83.00781\\-281.6693\\61\\-86.91406\\-280.7554\\61\\-88.86719\\-279.9138\\61\\-92.77344\\-278.6202\\61\\-94.72656\\-277.6659\\61\\-96.67969\\-277.155\\61\\-98.63281\\-276.2695\\61\\-102.5391\\-274.9745\\61\\-104.4922\\-273.8513\\61\\-106.4453\\-272.9718\\61\\-108.3984\\-271.6283\\61\\-110.3516\\-270.4645\\61\\-112.3047\\-269.4047\\61\\-116.128\\-266.6641\\61\\-121.0556\\-262.7578\\61\\-124.0234\\-260.115\\61\\-125.9766\\-258.1634\\61\\-127.3831\\-256.8984\\61\\-129.8828\\-254.3795\\61\\-131.0179\\-252.9922\\61\\-133.7891\\-249.9031\\61\\-134.5952\\-249.0859\\61\\-136.1515\\-247.1328\\61\\-137.3004\\-245.1797\\61\\-140.3402\\-241.2734\\61\\-141.6016\\-239.1539\\61\\-142.5721\\-237.3672\\61\\-144.4581\\-233.4609\\61\\-145.2743\\-231.5078\\61\\-146.2709\\-229.5547\\61\\-146.931\\-227.6016\\61\\-147.8554\\-225.6484\\61\\-148.8116\\-221.7422\\61\\-150.0547\\-217.8359\\61\\-150.6575\\-213.9297\\61\\-151.1446\\-211.9766\\61\\-151.7736\\-210.0234\\61\\-152.1317\\-208.0703\\61\\-152.6096\\-204.1641\\61\\-153.4557\\-198.3047\\61\\-153.6564\\-196.3516\\61\\-153.8616\\-190.4922\\61\\-153.8696\\-186.5859\\61\\-153.8201\\-184.6328\\61\\-153.6668\\-182.6797\\61\\-153.3203\\-182.3332\\61\\-151.3672\\-181.3812\\61\\-150.1855\\-182.6797\\61\\-149.4141\\-183.2307\\61\\-147.4609\\-183.5457\\61\\-145.6956\\-182.6797\\61\\-143.5547\\-181.1632\\61\\-141.6016\\-180.3197\\61\\-139.474\\-178.7734\\61\\-139.6564\\-176.8203\\61\\-139.513\\-172.9141\\61\\-140.4188\\-170.9609\\61\\-141.6016\\-169.7232\\61\\-143.5547\\-169.1693\\61\\-145.5078\\-170.128\\61\\-147.4609\\-171.3153\\61\\-149.4141\\-171.888\\61\\-151.3672\\-171.2713\\61\\-151.6377\\-170.9609\\61\\-151.9815\\-169.0078\\61\\-151.591\\-167.0547\\61\\-150.9647\\-165.1016\\61\\-150.5737\\-163.1484\\61\\-149.9821\\-159.2422\\61\\-148.8037\\-155.3359\\61\\-148.0336\\-151.4297\\61\\-146.6293\\-147.5234\\61\\-146.1118\\-145.5703\\61\\-145.1755\\-143.6172\\61\\-143.9572\\-139.7109\\61\\-142.992\\-137.7578\\61\\-142.5126\\-135.8047\\61\\-141.8653\\-133.8516\\61\\-140.8636\\-131.8984\\61\\-140.1567\\-129.9453\\61\\-139.0265\\-127.9922\\61\\-138.3064\\-126.0391\\61\\-137.2104\\-124.0859\\61\\-136.5591\\-122.1328\\61\\-134.6656\\-118.2266\\61\\-132.4811\\-114.3203\\61\\-131.1128\\-112.3672\\61\\-130.1962\\-110.4141\\61\\-128.887\\-108.4609\\61\\-127.4414\\-106.5078\\61\\-124.0234\\-102.4063\\61\\-122.0703\\-100.4516\\61\\-116.2109\\-95.67622\\61\\-114.2578\\-94.26591\\61\\-112.3047\\-93.54788\\61\\-110.3516\\-92.23544\\61\\-108.3984\\-91.29082\\61\\-106.4453\\-90.0232\\61\\-102.5391\\-87.99045\\61\\-100.5859\\-87.21494\\61\\-98.63281\\-86.25024\\61\\-96.67969\\-85.49464\\61\\-94.72656\\-84.49847\\61\\-90.82031\\-82.94061\\61\\-88.86719\\-82.27348\\61\\-86.91406\\-81.86983\\61\\-83.00781\\-80.5863\\61\\-81.05469\\-80.25352\\61\\-77.14844\\-79.47796\\61\\-75.19531\\-78.91658\\61\\-71.28906\\-78.20415\\61\\-67.38281\\-77.75209\\61\\-61.52344\\-77.27855\\61\\-57.61719\\-77.10243\\61\\-53.71094\\-77.06125\\61\\-51.75781\\-77.10162\\61\\-49.80469\\-77.24938\\61\\-47.85156\\-77.50875\\61\\-40.03906\\-78.25603\\61\\-36.13281\\-78.90498\\61\\-34.17969\\-79.377\\61\\-26.36719\\-80.64925\\61\\-22.46094\\-81.77915\\61\\-20.50781\\-82.00883\\61\\-16.60156\\-82.18961\\61\\-14.64844\\-82.18307\\61\\-8.789063\\-81.71764\\61\\-6.835938\\-81.41824\\61\\-2.929688\\-81.02985\\61\\0.9765625\\-80.87305\\61\\10.74219\\-80.59592\\61\\12.69531\\-80.61894\\61\\18.55469\\-80.54539\\61\\22.46094\\-80.27769\\61\\26.36719\\-79.64902\\61\\32.22656\\-78.45845\\61\\34.17969\\-78.11193\\61\\38.08594\\-77.66412\\61\\40.03906\\-77.52317\\61\\45.89844\\-77.402\\61\\47.85156\\-77.46539\\61\\51.75781\\-77.47727\\61\\59.57031\\-77.82494\\61\\63.47656\\-78.09209\\61\\65.42969\\-78.28291\\61\\69.33594\\-78.78703\\61\\73.24219\\-79.51729\\61\\79.10156\\-80.36095\\61\\81.05469\\-80.59941\\61\\83.00781\\-80.96992\\61\\84.96094\\-81.56108\\61\\88.86719\\-82.19901\\61\\90.82031\\-82.58527\\61\\92.77344\\-83.28655\\61\\96.67969\\-84.34779\\61\\98.63281\\-85.23016\\61\\102.5391\\-86.48828\\61\\104.4922\\-87.47509\\61\\106.4453\\-88.06909\\61\\108.2571\\-88.92969\\61\\110.3516\\-90.04331\\61\\112.3047\\-91.3381\\61\\114.2578\\-92.42954\\61\\116.2109\\-93.75935\\61\\118.1641\\-95.24144\\61\\119.9236\\-96.74219\\61\\121.9636\\-98.69531\\61\\124.0234\\-101.0853\\61\\125.9766\\-103.5935\\61\\128.108\\-106.5078\\61\\129.1311\\-108.4609\\61\\130.4268\\-110.4141\\61\\131.2825\\-112.3672\\61\\132.5726\\-114.3203\\61\\134.6628\\-118.2266\\61\\136.5345\\-122.1328\\61\\137.1094\\-124.0859\\61\\138.2674\\-126.0391\\61\\138.9732\\-127.9922\\61\\140.1014\\-129.9453\\61\\140.7424\\-131.8984\\61\\141.625\\-133.8516\\61\\142.3523\\-135.8047\\61\\142.8238\\-137.7578\\61\\144.2734\\-141.6641\\61\\144.7822\\-143.6172\\61\\146.2506\\-147.5234\\61\\146.6936\\-149.4766\\61\\148.0008\\-153.3828\\61\\148.9324\\-159.2422\\61\\149.8756\\-163.1484\\61\\150.3361\\-167.0547\\61\\150.5652\\-170.9609\\61\\150.8758\\-174.8672\\61\\151.3438\\-182.6797\\61\\151.3593\\-186.5859\\61\\151.2688\\-190.4922\\61\\150.2728\\-208.0703\\61\\149.8088\\-211.9766\\61\\148.9324\\-215.8828\\61\\148.3054\\-219.7891\\61\\147.9245\\-221.7422\\61\\147.1444\\-223.6953\\61\\145.7669\\-227.6016\\61\\144.678\\-229.5547\\61\\143.8184\\-231.5078\\61\\142.7237\\-233.4609\\61\\141.7908\\-235.4141\\61\\140.4474\\-237.3672\\61\\137.33\\-241.2734\\61\\136\\-243.2266\\61\\134.2564\\-245.1797\\61\\133.7891\\-245.5912\\61\\131.8359\\-247.7691\\61\\130.3986\\-249.0859\\61\\128.4433\\-251.0391\\61\\125.9766\\-253.1904\\61\\123.8281\\-254.9453\\61\\121.251\\-256.8984\\61\\114.2578\\-261.6375\\61\\112.3047\\-262.5963\\61\\110.3516\\-263.6616\\61\\108.1848\\-264.7109\\61\\104.4573\\-266.6641\\61\\102.5391\\-267.6009\\61\\100.5859\\-268.3785\\61\\98.63281\\-269.3417\\61\\96.67969\\-269.8962\\61\\94.72656\\-270.9237\\61\\92.77344\\-271.5985\\61\\88.86719\\-273.3863\\61\\86.91406\\-274.14\\61\\84.96094\\-275.1338\\61\\83.00781\\-275.6912\\61\\81.05469\\-276.7198\\61\\79.10156\\-277.4499\\61\\77.14844\\-278.4913\\61\\75.19531\\-279.4333\\61\\73.24219\\-280.5427\\61\\71.28906\\-281.361\\61\\67.38281\\-283.1721\\61\\65.42969\\-283.9004\\61\\63.47656\\-284.9839\\61\\61.52344\\-285.7634\\61\\59.57031\\-286.8744\\61\\57.61719\\-287.5537\\61\\55.66406\\-288.5862\\61\\51.75781\\-289.7598\\61\\49.80469\\-290.7852\\61\\47.85156\\-291.3526\\61\\45.89844\\-292.3695\\61\\41.99219\\-293.7068\\61\\40.03906\\-294.5241\\61\\36.13281\\-295.3367\\61\\32.22656\\-296.6593\\61\\28.32031\\-297.4228\\61\\26.36719\\-298.1498\\61\\24.41406\\-298.6229\\61\\20.50781\\-299.2836\\61\\16.60156\\-300.1602\\61\\14.64844\\-300.379\\61\\10.74219\\-300.6893\\61\\2.929688\\-301.0115\\61\\-0.9765625\\-301.0257\\61\\-4.882813\\-300.9673\\61\\-8.789063\\-300.8209\\61\\-14.64844\\-300.452\\61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "310"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "157"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-299.948\\63\\-20.50781\\-299.4677\\63\\-22.46094\\-299.0911\\63\\-26.36719\\-298.4989\\63\\-30.27344\\-297.3386\\63\\-34.17969\\-296.7235\\63\\-36.13281\\-296.2726\\63\\-38.08594\\-295.5501\\63\\-41.99219\\-294.8507\\63\\-43.94531\\-294.4254\\63\\-45.89844\\-293.6312\\63\\-49.80469\\-292.543\\63\\-51.75781\\-291.6091\\63\\-55.66406\\-290.4733\\63\\-57.61719\\-289.5194\\63\\-61.52344\\-288.64\\63\\-63.47656\\-287.7728\\63\\-65.42969\\-287.1829\\63\\-67.38281\\-286.701\\63\\-69.33594\\-285.811\\63\\-73.24219\\-284.591\\63\\-75.19531\\-283.6797\\63\\-79.10156\\-282.7873\\63\\-81.05469\\-282.009\\63\\-84.96094\\-281.036\\63\\-86.91406\\-280.3885\\63\\-88.86719\\-279.5801\\63\\-90.82031\\-279.0134\\63\\-92.77344\\-278.085\\63\\-96.67969\\-276.8377\\63\\-98.63281\\-275.8952\\63\\-100.5859\\-275.3519\\63\\-102.5391\\-274.5313\\63\\-104.4922\\-273.5056\\63\\-108.3984\\-271.3505\\63\\-110.3516\\-270.0132\\63\\-112.3047\\-269.0598\\63\\-114.2578\\-267.6649\\63\\-118.1641\\-264.5313\\63\\-120.1172\\-263.208\\63\\-122.0703\\-261.5873\\63\\-124.8208\\-258.8516\\63\\-126.9464\\-256.8984\\63\\-129.8828\\-253.9185\\63\\-131.8359\\-251.6833\\63\\-134.2632\\-249.0859\\63\\-135.7422\\-247.0638\\63\\-136.9774\\-245.1797\\63\\-140.0065\\-241.2734\\63\\-141.1101\\-239.3203\\63\\-142.3765\\-237.3672\\63\\-143.1542\\-235.4141\\63\\-144.2562\\-233.4609\\63\\-144.9316\\-231.5078\\63\\-146.0283\\-229.5547\\63\\-146.6829\\-227.6016\\63\\-147.5436\\-225.6484\\63\\-148.2008\\-223.6953\\63\\-149.1218\\-219.7891\\63\\-149.8198\\-217.8359\\63\\-150.2307\\-215.8828\\63\\-150.4997\\-213.9297\\63\\-150.8695\\-211.9766\\63\\-151.4757\\-210.0234\\63\\-151.9291\\-208.0703\\63\\-152.1924\\-206.1172\\63\\-153.343\\-196.3516\\63\\-153.6021\\-192.4453\\63\\-153.6668\\-188.5391\\63\\-153.6243\\-186.5859\\63\\-153.2643\\-184.6328\\63\\-151.7729\\-182.6797\\63\\-151.3672\\-182.3127\\63\\-149.4141\\-183.4155\\63\\-147.4609\\-184.017\\63\\-145.5078\\-183.8333\\63\\-143.5547\\-182.3019\\63\\-141.6016\\-181.3258\\63\\-140.7128\\-180.7266\\63\\-139.6484\\-179.5121\\63\\-139.2814\\-178.7734\\63\\-139.7446\\-176.8203\\63\\-139.3019\\-174.8672\\63\\-139.1348\\-172.9141\\63\\-139.6484\\-171.8169\\63\\-140.5854\\-170.9609\\63\\-141.6016\\-170.3446\\63\\-143.5547\\-170.5316\\63\\-145.5078\\-171.4957\\63\\-147.4609\\-171.9102\\63\\-149.4141\\-173.1192\\63\\-151.3672\\-172.871\\63\\-152.0402\\-170.9609\\63\\-151.724\\-169.0078\\63\\-151.1177\\-167.0547\\63\\-150.7024\\-165.1016\\63\\-150.142\\-161.1953\\63\\-149.7085\\-159.2422\\63\\-149.0558\\-157.2891\\63\\-148.2434\\-153.3828\\63\\-147.764\\-151.4297\\63\\-146.9454\\-149.4766\\63\\-145.7802\\-145.5703\\63\\-144.8587\\-143.6172\\63\\-144.3197\\-141.6641\\63\\-142.8068\\-137.7578\\63\\-142.3079\\-135.8047\\63\\-141.4314\\-133.8516\\63\\-139.7839\\-129.9453\\63\\-138.7466\\-127.9922\\63\\-137.981\\-126.0391\\63\\-136.9492\\-124.0859\\63\\-136.3517\\-122.1328\\63\\-135.2336\\-120.1797\\63\\-134.4259\\-118.2266\\63\\-133.1886\\-116.2734\\63\\-132.1964\\-114.3203\\63\\-130.9136\\-112.3672\\63\\-128.6942\\-108.4609\\63\\-127.1601\\-106.5078\\63\\-125.4507\\-104.5547\\63\\-124.0234\\-102.7952\\63\\-121.9207\\-100.6484\\63\\-117.0379\\-96.74219\\63\\-116.2109\\-96.03011\\63\\-114.2578\\-94.64955\\63\\-112.3047\\-93.73689\\63\\-110.3516\\-92.56541\\63\\-108.3984\\-91.6443\\63\\-106.4453\\-90.36476\\63\\-104.4922\\-89.3705\\63\\-102.5391\\-88.18407\\63\\-100.5859\\-87.51606\\63\\-98.63281\\-86.48492\\63\\-96.67969\\-85.7809\\63\\-94.72656\\-84.824\\63\\-92.77344\\-84.01746\\63\\-90.82031\\-83.30903\\63\\-88.86719\\-82.45918\\63\\-84.96094\\-81.58512\\63\\-83.00781\\-80.8602\\63\\-81.05469\\-80.42395\\63\\-77.14844\\-79.7636\\63\\-73.24219\\-78.82797\\63\\-69.33594\\-78.19318\\63\\-65.42969\\-77.84808\\63\\-59.57031\\-77.56303\\63\\-55.66406\\-77.47727\\63\\-51.75781\\-77.52968\\63\\-49.80469\\-77.62109\\63\\-43.94531\\-78.09505\\63\\-40.03906\\-78.54261\\63\\-38.08594\\-78.87109\\63\\-36.13281\\-79.33818\\63\\-34.17969\\-79.68447\\63\\-28.32031\\-80.52744\\63\\-26.36719\\-80.95443\\63\\-24.41406\\-81.60893\\63\\-22.46094\\-81.93725\\63\\-20.50781\\-82.10574\\63\\-16.60156\\-82.20553\\63\\-14.64844\\-82.13543\\63\\-8.789063\\-81.65294\\63\\-6.835938\\-81.30943\\63\\-2.929688\\-80.95571\\63\\0.9765625\\-80.8206\\63\\6.835938\\-80.69768\\63\\10.74219\\-80.57682\\63\\18.55469\\-80.51865\\63\\22.46094\\-80.31398\\63\\24.41406\\-80.12907\\63\\28.32031\\-79.51081\\63\\32.22656\\-78.71108\\63\\36.13281\\-78.12902\\63\\38.08594\\-77.95076\\63\\41.99219\\-77.7801\\63\\45.89844\\-77.72974\\63\\49.80469\\-77.74194\\63\\53.71094\\-77.84079\\63\\59.57031\\-78.06474\\63\\63.47656\\-78.31808\\63\\67.38281\\-78.78703\\63\\71.28906\\-79.48022\\63\\79.10156\\-80.52359\\63\\81.05469\\-80.84551\\63\\84.96094\\-81.77034\\63\\88.86719\\-82.38062\\63\\90.82031\\-82.87354\\63\\92.77344\\-83.58589\\63\\96.67969\\-84.60402\\63\\98.63281\\-85.51491\\63\\100.5859\\-86.09433\\63\\102.5391\\-86.81881\\63\\104.4922\\-87.70581\\63\\106.4453\\-88.29364\\63\\108.3984\\-89.42125\\63\\110.3516\\-90.32207\\63\\112.3047\\-91.68182\\63\\114.2578\\-92.79838\\63\\116.2109\\-94.04845\\63\\118.1641\\-95.54183\\63\\121.593\\-98.69531\\63\\124.0234\\-101.3353\\63\\126.4741\\-104.5547\\63\\127.9297\\-106.7052\\63\\130.2464\\-110.4141\\63\\131.1051\\-112.3672\\63\\132.4171\\-114.3203\\63\\133.3659\\-116.2734\\63\\134.5345\\-118.2266\\63\\135.3698\\-120.1797\\63\\136.4251\\-122.1328\\63\\136.978\\-124.0859\\63\\138.1218\\-126.0391\\63\\138.8258\\-127.9922\\63\\139.919\\-129.9453\\63\\140.6302\\-131.8984\\63\\142.2629\\-135.8047\\63\\142.7358\\-137.7578\\63\\143.3253\\-139.7109\\63\\144.1845\\-141.6641\\63\\144.652\\-143.6172\\63\\145.276\\-145.5703\\63\\146.1317\\-147.5234\\63\\147.1182\\-151.4297\\63\\147.8425\\-153.3828\\63\\148.2135\\-155.3359\\63\\148.7863\\-159.2422\\63\\149.6711\\-163.1484\\63\\150.2193\\-167.0547\\63\\150.6802\\-174.8672\\63\\150.957\\-180.7266\\63\\151.0372\\-186.5859\\63\\150.97\\-190.4922\\63\\150.5371\\-200.2578\\63\\150.2373\\-206.1172\\63\\149.8518\\-210.0234\\63\\149.0583\\-213.9297\\63\\148.1334\\-219.7891\\63\\147.6378\\-221.7422\\63\\146.8273\\-223.6953\\63\\146.231\\-225.6484\\63\\145.2601\\-227.6016\\63\\144.4308\\-229.5547\\63\\143.3906\\-231.5078\\63\\142.5044\\-233.4609\\63\\140.0892\\-237.3672\\63\\139.6484\\-237.8517\\63\\137.6953\\-240.4396\\63\\136.9629\\-241.2734\\63\\135.7422\\-242.9619\\63\\131.8359\\-247.2995\\63\\129.8828\\-249.2445\\63\\127.9208\\-251.0391\\63\\125.9766\\-252.5888\\63\\124.0234\\-254.2831\\63\\122.0703\\-255.8572\\63\\120.1172\\-257.2877\\63\\118.1641\\-258.4045\\63\\117.6169\\-258.8516\\63\\114.2578\\-261.1993\\63\\112.3047\\-262.1003\\63\\110.3516\\-263.2764\\63\\108.3984\\-264.0161\\63\\106.4453\\-265.1962\\63\\104.4922\\-266.0232\\63\\102.5391\\-267.2107\\63\\100.5859\\-267.936\\63\\98.63281\\-268.9547\\63\\94.72656\\-270.3392\\63\\92.77344\\-271.3014\\63\\90.82031\\-272.0014\\63\\88.86719\\-273.0936\\63\\86.91406\\-273.8236\\63\\84.96094\\-274.8979\\63\\83.00781\\-275.549\\63\\81.05469\\-276.3897\\63\\77.14844\\-278.2521\\63\\73.24219\\-280.4344\\63\\67.38281\\-283.1604\\63\\65.42969\\-283.8751\\63\\63.47656\\-284.9905\\63\\61.52344\\-285.8242\\63\\59.57031\\-286.907\\63\\57.61719\\-287.6094\\63\\55.66406\\-288.6334\\63\\53.71094\\-289.1905\\63\\51.75781\\-289.8722\\63\\49.80469\\-290.844\\63\\47.85156\\-291.4238\\63\\45.89844\\-292.4706\\63\\43.94531\\-293.0818\\63\\40.03906\\-294.5962\\63\\36.13281\\-295.3913\\63\\34.17969\\-296.1459\\63\\32.22656\\-296.7193\\63\\30.27344\\-297.057\\63\\28.32031\\-297.5247\\63\\26.36719\\-298.2606\\63\\24.41406\\-298.6904\\63\\20.50781\\-299.385\\63\\16.60156\\-300.2342\\63\\14.64844\\-300.452\\63\\10.74219\\-300.7321\\63\\6.835938\\-300.9202\\63\\2.929688\\-301.05\\63\\-2.929688\\-301.0427\\63\\-6.835938\\-300.9256\\63\\-12.69531\\-300.6273\\63\\-16.60156\\-300.2566\\63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "290"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "158"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-300.0158\\65\\-22.46094\\-299.144\\65\\-26.36719\\-298.546\\65\\-28.32031\\-298.0495\\65\\-30.27344\\-297.4048\\65\\-34.17969\\-296.7541\\65\\-36.13281\\-296.3204\\65\\-38.08594\\-295.5964\\65\\-43.94531\\-294.4383\\65\\-45.89844\\-293.6235\\65\\-49.80469\\-292.5077\\65\\-51.75781\\-291.5724\\65\\-55.66406\\-290.4096\\65\\-57.61719\\-289.4773\\65\\-61.52344\\-288.5593\\65\\-63.47656\\-287.6602\\65\\-67.38281\\-286.5568\\65\\-69.33594\\-285.6151\\65\\-71.28906\\-285.0449\\65\\-75.19531\\-283.5126\\65\\-77.14844\\-283.1019\\65\\-79.10156\\-282.5441\\65\\-81.05469\\-281.7487\\65\\-84.96094\\-280.7929\\65\\-86.91406\\-279.9414\\65\\-90.82031\\-278.6665\\65\\-92.77344\\-277.718\\65\\-94.72656\\-277.1942\\65\\-98.63281\\-275.6324\\65\\-100.5859\\-275.0885\\65\\-102.5391\\-274.0505\\65\\-104.4922\\-273.1919\\65\\-106.4453\\-271.8973\\65\\-108.3984\\-270.9995\\65\\-110.3516\\-269.6945\\65\\-114.2578\\-267.3373\\65\\-118.1641\\-264.0981\\65\\-120.1074\\-262.7578\\65\\-122.0703\\-261.2714\\65\\-124.5153\\-258.8516\\65\\-126.6154\\-256.8984\\65\\-128.6161\\-254.9453\\65\\-130.3848\\-252.9922\\65\\-133.7891\\-249.077\\65\\-138.2286\\-243.2266\\65\\-139.6484\\-241.1897\\65\\-141.6016\\-238.0882\\65\\-142.1336\\-237.3672\\65\\-142.8723\\-235.4141\\65\\-144.0108\\-233.4609\\65\\-144.6857\\-231.5078\\65\\-145.7072\\-229.5547\\65\\-147.1579\\-225.6484\\65\\-148.0076\\-223.6953\\65\\-148.8997\\-219.7891\\65\\-150.0712\\-215.8828\\65\\-150.6721\\-211.9766\\65\\-151.0932\\-210.0234\\65\\-151.682\\-208.0703\\65\\-152.0165\\-206.1172\\65\\-152.251\\-204.1641\\65\\-152.8172\\-198.3047\\65\\-153.2389\\-192.4453\\65\\-153.3279\\-188.5391\\65\\-153.2673\\-186.5859\\65\\-152.6133\\-184.6328\\65\\-151.3672\\-183.2498\\65\\-149.4141\\-182.9912\\65\\-147.4609\\-183.8879\\65\\-145.5078\\-183.7641\\65\\-143.5547\\-182.414\\65\\-141.6016\\-181.3325\\65\\-140.709\\-180.7266\\65\\-139.6484\\-179.3937\\65\\-139.3445\\-178.7734\\65\\-139.7363\\-176.8203\\65\\-139.4367\\-174.8672\\65\\-139.449\\-172.9141\\65\\-139.6484\\-172.6062\\65\\-141.6016\\-171.1728\\65\\-143.5547\\-171.8167\\65\\-145.5078\\-172.6556\\65\\-147.4609\\-172.9226\\65\\-149.4141\\-173.8383\\65\\-151.3672\\-173.0952\\65\\-151.5288\\-172.9141\\65\\-151.8468\\-170.9609\\65\\-150.8083\\-167.0547\\65\\-149.9089\\-161.1953\\65\\-148.8176\\-157.2891\\65\\-148.0408\\-153.3828\\65\\-146.6808\\-149.4766\\65\\-146.1678\\-147.5234\\65\\-145.311\\-145.5703\\65\\-144.6273\\-143.6172\\65\\-144.0979\\-141.6641\\65\\-143.1683\\-139.7109\\65\\-142.0701\\-135.8047\\65\\-141.0604\\-133.8516\\65\\-140.374\\-131.8984\\65\\-139.3011\\-129.9453\\65\\-138.5073\\-127.9922\\65\\-137.5772\\-126.0391\\65\\-136.7604\\-124.0859\\65\\-136.0556\\-122.1328\\65\\-134.9696\\-120.1797\\65\\-134.1436\\-118.2266\\65\\-132.9229\\-116.2734\\65\\-130.7296\\-112.3672\\65\\-129.4465\\-110.4141\\65\\-128.4849\\-108.4609\\65\\-126.8968\\-106.5078\\65\\-124.0234\\-103.18\\65\\-121.55\\-100.6484\\65\\-120.1172\\-99.5954\\65\\-116.2109\\-96.35593\\65\\-114.2578\\-95.21272\\65\\-112.3047\\-93.94185\\65\\-108.3984\\-91.89324\\65\\-104.4922\\-89.68233\\65\\-102.5391\\-88.4131\\65\\-100.5859\\-87.79662\\65\\-98.63281\\-86.76363\\65\\-94.72656\\-85.26574\\65\\-92.77344\\-84.2683\\65\\-90.82031\\-83.61642\\65\\-88.86719\\-82.72606\\65\\-86.91406\\-82.20029\\65\\-84.96094\\-81.80393\\65\\-81.05469\\-80.64228\\65\\-75.19531\\-79.6683\\65\\-71.28906\\-78.75767\\65\\-67.38281\\-78.29928\\65\\-63.47656\\-78.00014\\65\\-57.61719\\-77.80511\\65\\-55.66406\\-77.78503\\65\\-49.80469\\-77.91429\\65\\-45.89844\\-78.15843\\65\\-40.03906\\-78.8601\\65\\-36.13281\\-79.64574\\65\\-30.27344\\-80.45584\\65\\-28.32031\\-80.78217\\65\\-26.36719\\-81.38011\\65\\-24.41406\\-81.83034\\65\\-22.46094\\-82.06949\\65\\-20.50781\\-82.16393\\65\\-16.60156\\-82.17661\\65\\-10.74219\\-81.78362\\65\\-6.835938\\-81.20524\\65\\-2.929688\\-80.89934\\65\\0.9765625\\-80.78217\\65\\6.835938\\-80.68392\\65\\10.74219\\-80.5638\\65\\18.55469\\-80.50605\\65\\20.50781\\-80.45584\\65\\24.41406\\-80.19294\\65\\28.32031\\-79.71745\\65\\32.22656\\-79.00247\\65\\38.08594\\-78.20494\\65\\43.94531\\-77.96346\\65\\49.80469\\-77.97049\\65\\53.71094\\-78.04719\\65\\59.57031\\-78.32781\\65\\63.47656\\-78.62872\\65\\65.42969\\-78.83854\\65\\69.33594\\-79.45847\\65\\77.14844\\-80.41964\\65\\79.10156\\-80.73354\\65\\83.00781\\-81.6456\\65\\86.91406\\-82.25651\\65\\88.86719\\-82.61808\\65\\92.77344\\-83.84158\\65\\94.72656\\-84.29656\\65\\96.67969\\-84.98588\\65\\98.63281\\-85.77779\\65\\100.5859\\-86.34296\\65\\102.5391\\-87.25239\\65\\106.4453\\-88.61631\\65\\108.3984\\-89.72166\\65\\110.3516\\-90.69925\\65\\114.2578\\-93.24826\\65\\116.2109\\-94.35909\\65\\118.1641\\-95.86596\\65\\121.2542\\-98.69531\\65\\124.0234\\-101.6578\\65\\126.2347\\-104.5547\\65\\128.8624\\-108.4609\\65\\130.0009\\-110.4141\\65\\130.9552\\-112.3672\\65\\132.2228\\-114.3203\\65\\133.172\\-116.2734\\65\\134.3786\\-118.2266\\65\\135.1851\\-120.1797\\65\\136.2936\\-122.1328\\65\\136.8776\\-124.0859\\65\\137.931\\-126.0391\\65\\138.7079\\-127.9922\\65\\139.686\\-129.9453\\65\\140.5217\\-131.8984\\65\\141.2254\\-133.8516\\65\\142.1749\\-135.8047\\65\\143.1738\\-139.7109\\65\\144.0585\\-141.6641\\65\\145.0902\\-145.5703\\65\\145.9726\\-147.5234\\65\\146.9223\\-151.4297\\65\\147.6249\\-153.3828\\65\\148.0866\\-155.3359\\65\\148.9868\\-161.1953\\65\\149.7923\\-165.1016\\65\\150.0671\\-167.0547\\65\\150.2373\\-169.0078\\65\\150.607\\-176.8203\\65\\150.8031\\-182.6797\\65\\150.7415\\-190.4922\\65\\150.4867\\-198.3047\\65\\150.2125\\-204.1641\\65\\150.0793\\-206.1172\\65\\149.5448\\-210.0234\\65\\148.8116\\-213.9297\\65\\148.2689\\-217.8359\\65\\147.9054\\-219.7891\\65\\147.2202\\-221.7422\\65\\145.9627\\-225.6484\\65\\144.8982\\-227.6016\\65\\144.188\\-229.5547\\65\\143.0325\\-231.5078\\65\\142.2505\\-233.4609\\65\\139.6484\\-237.285\\65\\138.196\\-239.3203\\65\\135.7422\\-242.4837\\65\\135.1031\\-243.2266\\65\\131.8359\\-246.7111\\65\\129.8828\\-248.7315\\65\\127.3362\\-251.0391\\65\\125.9766\\-252.1369\\65\\124.0234\\-253.899\\65\\122.0703\\-255.5161\\65\\120.1172\\-256.6772\\65\\118.1641\\-257.9775\\65\\116.2109\\-259.4413\\65\\112.3047\\-261.7448\\65\\110.314\\-262.7578\\65\\106.4453\\-264.5792\\65\\102.5272\\-266.6641\\65\\98.63281\\-268.4043\\65\\96.67969\\-269.3464\\65\\94.72656\\-269.913\\65\\92.77344\\-270.9724\\65\\90.82031\\-271.681\\65\\88.86719\\-272.7472\\65\\86.91406\\-273.5698\\65\\84.96094\\-274.5618\\65\\83.00781\\-275.4172\\65\\81.05469\\-276.1089\\65\\79.10156\\-277.2329\\65\\77.14844\\-278.0785\\65\\76.75228\\-278.3828\\65\\73.22998\\-280.3359\\65\\67.38281\\-283.1604\\65\\65.42969\\-283.8864\\65\\63.47656\\-285.0245\\65\\61.52344\\-285.8964\\65\\59.57031\\-286.9427\\65\\57.61719\\-287.6732\\65\\55.66406\\-288.6982\\65\\53.71094\\-289.2381\\65\\51.75781\\-290\\65\\49.80469\\-290.9096\\65\\47.85156\\-291.5288\\65\\45.89844\\-292.569\\65\\43.94531\\-293.1611\\65\\40.03906\\-294.6728\\65\\36.13281\\-295.4727\\65\\34.17969\\-296.2865\\65\\32.22656\\-296.7774\\65\\30.27344\\-297.1275\\65\\28.32031\\-297.6458\\65\\26.36719\\-298.367\\65\\20.50781\\-299.4856\\65\\18.55469\\-299.9757\\65\\16.60156\\-300.3073\\65\\14.64844\\-300.5126\\65\\10.74219\\-300.782\\65\\6.835938\\-300.9688\\65\\2.929688\\-301.0926\\65\\-2.929688\\-301.0818\\65\\-8.789063\\-300.8666\\65\\-12.69531\\-300.6562\\65\\-16.60156\\-300.3165\\65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "305"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "159"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-300.091\\67\\-22.46094\\-299.2144\\67\\-26.36719\\-298.5941\\67\\-28.32031\\-298.1258\\67\\-30.27344\\-297.4849\\67\\-32.22656\\-297.0778\\67\\-34.17969\\-296.7897\\67\\-36.13281\\-296.3766\\67\\-38.08594\\-295.6448\\67\\-40.03906\\-295.2074\\67\\-43.94531\\-294.4482\\67\\-45.89844\\-293.6109\\67\\-49.80469\\-292.5077\\67\\-51.75781\\-291.5429\\67\\-53.71094\\-290.9907\\67\\-55.66406\\-290.3406\\67\\-57.61719\\-289.4525\\67\\-59.57031\\-289.0238\\67\\-61.52344\\-288.4878\\67\\-63.47656\\-287.5824\\67\\-67.38281\\-286.3709\\67\\-69.33594\\-285.4709\\67\\-71.28906\\-284.9022\\67\\-73.24219\\-283.9927\\67\\-75.19531\\-283.3539\\67\\-77.14844\\-282.9422\\67\\-81.05469\\-281.5505\\67\\-83.00781\\-281.0885\\67\\-84.96094\\-280.4608\\67\\-86.91406\\-279.6172\\67\\-88.86719\\-279.0643\\67\\-90.82031\\-278.1476\\67\\-92.77344\\-277.4551\\67\\-94.72656\\-276.9307\\67\\-96.67969\\-275.9515\\67\\-98.63281\\-275.3995\\67\\-100.5859\\-274.7101\\67\\-104.7852\\-272.5234\\67\\-108.3984\\-270.4353\\67\\-110.3516\\-269.3972\\67\\-112.3047\\-268.0863\\67\\-114.2578\\-266.9031\\67\\-116.2109\\-265.4138\\67\\-120.1172\\-262.2365\\67\\-122.0437\\-260.8047\\67\\-124.0494\\-258.8516\\67\\-128.273\\-254.9453\\67\\-131.4979\\-251.0391\\67\\-133.7891\\-248.5015\\67\\-136.4929\\-245.1797\\67\\-137.8461\\-243.2266\\67\\-139.0967\\-241.2734\\67\\-140.5698\\-239.3203\\67\\-141.8194\\-237.3672\\67\\-142.6752\\-235.4141\\67\\-143.6546\\-233.4609\\67\\-145.2601\\-229.5547\\67\\-146.2233\\-227.6016\\67\\-146.8668\\-225.6484\\67\\-147.7661\\-223.6953\\67\\-148.3038\\-221.7422\\67\\-149.2128\\-217.8359\\67\\-149.8653\\-215.8828\\67\\-150.2487\\-213.9297\\67\\-150.8118\\-210.0234\\67\\-151.8202\\-206.1172\\67\\-152.087\\-204.1641\\67\\-152.4484\\-200.2578\\67\\-152.7121\\-196.3516\\67\\-152.9088\\-192.4453\\67\\-152.9565\\-190.4922\\67\\-152.9208\\-186.5859\\67\\-152.7945\\-184.6328\\67\\-152.2833\\-182.6797\\67\\-151.3672\\-181.5546\\67\\-149.4141\\-181.5181\\67\\-148.1879\\-182.6797\\67\\-147.4609\\-183.183\\67\\-145.5078\\-183.1046\\67\\-143.5547\\-181.867\\67\\-141.94\\-180.7266\\67\\-140.7538\\-178.7734\\67\\-141.8669\\-176.8203\\67\\-143.5547\\-175.3692\\67\\-145.5078\\-174.5446\\67\\-147.4609\\-174.391\\67\\-149.4141\\-174.4487\\67\\-150.9698\\-172.9141\\67\\-151.5158\\-170.9609\\67\\-150.9885\\-169.0078\\67\\-150.6138\\-167.0547\\67\\-150.3632\\-165.1016\\67\\-149.5829\\-163.1484\\67\\-148.9314\\-161.1953\\67\\-148.7706\\-159.2422\\67\\-148.2551\\-155.3359\\67\\-147.8107\\-153.3828\\67\\-147.0588\\-151.4297\\67\\-145.9142\\-147.5234\\67\\-144.9558\\-145.5703\\67\\-144.4477\\-143.6172\\67\\-143.7789\\-141.6641\\67\\-142.9228\\-139.7109\\67\\-142.4515\\-137.7578\\67\\-141.7432\\-135.8047\\67\\-140.8081\\-133.8516\\67\\-140.1184\\-131.8984\\67\\-138.9732\\-129.9453\\67\\-138.2701\\-127.9922\\67\\-137.2378\\-126.0391\\67\\-136.5974\\-124.0859\\67\\-135.7422\\-122.1997\\67\\-133.7891\\-118.2383\\67\\-131.8359\\-114.8489\\67\\-131.4184\\-114.3203\\67\\-130.5317\\-112.3672\\67\\-129.1954\\-110.4141\\67\\-128.2014\\-108.4609\\67\\-126.643\\-106.5078\\67\\-125.9766\\-105.8322\\67\\-124.0234\\-103.5512\\67\\-121.1231\\-100.6484\\67\\-118.1641\\-98.20367\\67\\-116.1397\\-96.74219\\67\\-114.2578\\-95.56138\\67\\-112.3047\\-94.2045\\67\\-110.3516\\-93.36286\\67\\-108.3984\\-92.14764\\67\\-106.4453\\-91.28532\\67\\-104.4922\\-89.94264\\67\\-102.5391\\-88.70996\\67\\-98.63281\\-87.12865\\67\\-96.67969\\-86.24567\\67\\-94.72656\\-85.54471\\67\\-92.77344\\-84.5231\\67\\-90.82031\\-83.8998\\67\\-86.91406\\-82.38425\\67\\-83.00781\\-81.57156\\67\\-81.05469\\-80.92939\\67\\-79.10156\\-80.46821\\67\\-75.19531\\-79.89648\\67\\-71.28906\\-79.14135\\67\\-69.33594\\-78.8601\\67\\-63.47656\\-78.27267\\67\\-57.61719\\-78.05656\\67\\-53.71094\\-78.04878\\67\\-49.80469\\-78.16543\\67\\-45.89844\\-78.44175\\67\\-41.99219\\-78.89353\\67\\-38.08594\\-79.63255\\67\\-34.17969\\-80.11121\\67\\-30.27344\\-80.68695\\67\\-26.36719\\-81.7487\\67\\-24.41406\\-82.0144\\67\\-22.46094\\-82.16477\\67\\-18.55469\\-82.2188\\67\\-14.64844\\-82.03233\\67\\-10.74219\\-81.73006\\67\\-8.789063\\-81.35006\\67\\-4.882813\\-80.96875\\67\\-0.9765625\\-80.84551\\67\\4.882813\\-80.74483\\67\\10.74219\\-80.56747\\67\\14.64844\\-80.50605\\67\\18.55469\\-80.51865\\67\\24.41406\\-80.28424\\67\\26.36719\\-80.11695\\67\\32.22656\\-79.36689\\67\\34.17969\\-79.01546\\67\\38.08594\\-78.52643\\67\\40.03906\\-78.37463\\67\\43.94531\\-78.2386\\67\\49.80469\\-78.20434\\67\\53.71094\\-78.30172\\67\\59.57031\\-78.63295\\67\\63.47656\\-78.95236\\67\\67.38281\\-79.50832\\67\\75.19531\\-80.36553\\67\\77.14844\\-80.63223\\67\\83.00781\\-81.85738\\67\\86.91406\\-82.45057\\67\\88.86719\\-82.95763\\67\\90.82031\\-83.61887\\67\\94.72656\\-84.61193\\67\\96.67969\\-85.43145\\67\\100.5859\\-86.65334\\67\\102.5391\\-87.55453\\67\\104.4922\\-88.13973\\67\\106.4453\\-89.13792\\67\\108.3984\\-90.01413\\67\\110.3516\\-91.23209\\67\\112.3047\\-92.29272\\67\\114.2578\\-93.60049\\67\\116.2109\\-94.74697\\67\\118.1641\\-96.24693\\67\\118.6057\\-96.74219\\67\\120.8221\\-98.69531\\67\\122.7649\\-100.6484\\67\\124.4727\\-102.6016\\67\\127.2512\\-106.5078\\67\\128.692\\-108.4609\\67\\129.7059\\-110.4141\\67\\131.9975\\-114.3203\\67\\133.0112\\-116.2734\\67\\134.2067\\-118.2266\\67\\135.0269\\-120.1797\\67\\136.1286\\-122.1328\\67\\136.7898\\-124.0859\\67\\138.6003\\-127.9922\\67\\139.4337\\-129.9453\\67\\140.4097\\-131.8984\\67\\141.0762\\-133.8516\\67\\142.0334\\-135.8047\\67\\143.0334\\-139.7109\\67\\143.9116\\-141.6641\\67\\144.9386\\-145.5703\\67\\145.7896\\-147.5234\\67\\146.3399\\-149.4766\\67\\146.7572\\-151.4297\\67\\147.9431\\-155.3359\\67\\148.2776\\-157.2891\\67\\149.0956\\-163.1484\\67\\149.8756\\-167.0547\\67\\150.0793\\-169.0078\\67\\150.3083\\-172.9141\\67\\150.4604\\-176.8203\\67\\150.607\\-182.6797\\67\\150.5717\\-190.4922\\67\\150.3526\\-198.3047\\67\\150.1801\\-202.2109\\67\\149.8725\\-206.1172\\67\\148.8773\\-211.9766\\67\\148.3918\\-215.8828\\67\\148.0743\\-217.8359\\67\\147.5984\\-219.7891\\67\\146.8855\\-221.7422\\67\\146.3321\\-223.6953\\67\\145.5454\\-225.6484\\67\\144.6284\\-227.6016\\67\\143.8664\\-229.5547\\67\\142.7847\\-231.5078\\67\\141.8837\\-233.4609\\67\\140.6133\\-235.4141\\67\\139.0728\\-237.3672\\67\\136.391\\-241.2734\\67\\134.7117\\-243.2266\\67\\129.8828\\-248.3004\\67\\126.8248\\-251.0391\\67\\124.5185\\-252.9922\\67\\124.0234\\-253.5014\\67\\122.0703\\-255.0341\\67\\120.1172\\-256.1911\\67\\118.1641\\-257.615\\67\\114.2578\\-260.0558\\67\\112.3047\\-261.36\\67\\110.3516\\-262.1988\\67\\108.3984\\-263.328\\67\\106.4453\\-264.0249\\67\\104.4922\\-265.2055\\67\\102.5391\\-266.056\\67\\100.5859\\-267.2196\\67\\98.63281\\-267.9519\\67\\96.67969\\-269.0176\\67\\94.72656\\-269.6529\\67\\92.77344\\-270.4386\\67\\90.82031\\-271.4235\\67\\88.86719\\-272.2571\\67\\86.91406\\-273.3433\\67\\84.96094\\-274.2065\\67\\83.00781\\-275.2639\\67\\81.05469\\-275.9216\\67\\79.10156\\-277.135\\67\\77.14844\\-277.948\\67\\75.19531\\-279.2071\\67\\71.28906\\-281.264\\67\\67.38281\\-283.1721\\67\\65.42969\\-283.9237\\67\\63.47656\\-285.071\\67\\61.52344\\-285.9668\\67\\59.57031\\-286.9973\\67\\57.61719\\-287.7511\\67\\55.66406\\-288.7548\\67\\53.71094\\-289.2808\\67\\49.80469\\-290.9647\\67\\47.85156\\-291.6282\\67\\45.89844\\-292.6671\\67\\43.94531\\-293.2513\\67\\41.99219\\-294.1171\\67\\40.03906\\-294.7402\\67\\36.13281\\-295.5853\\67\\34.17969\\-296.3971\\67\\32.22656\\-296.8539\\67\\30.27344\\-297.1994\\67\\26.36719\\-298.4603\\67\\22.46094\\-299.175\\67\\18.55469\\-300.0789\\67\\16.60156\\-300.3759\\67\\14.64844\\-300.5719\\67\\10.74219\\-300.8267\\67\\6.835938\\-301.0186\\67\\2.929688\\-301.138\\67\\-0.9765625\\-301.1336\\67\\-4.882813\\-301.0621\\67\\-10.74219\\-300.804\\67\\-14.64844\\-300.5463\\67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "289"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "160"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-300.1602\\69\\-22.46094\\-299.2779\\69\\-26.36719\\-298.6465\\69\\-28.32031\\-298.2289\\69\\-30.27344\\-297.556\\69\\-32.22656\\-297.1275\\69\\-36.13281\\-296.4396\\69\\-38.08594\\-295.6953\\69\\-40.03906\\-295.2102\\69\\-41.99219\\-294.8804\\69\\-43.94531\\-294.4282\\69\\-45.89844\\-293.6083\\69\\-49.80469\\-292.4986\\69\\-51.75781\\-291.5226\\69\\-53.71094\\-290.9669\\69\\-55.66406\\-290.2785\\69\\-57.61719\\-289.4126\\69\\-59.57031\\-288.9932\\69\\-61.52344\\-288.3979\\69\\-63.47656\\-287.5034\\69\\-65.42969\\-286.9453\\69\\-69.33594\\-285.3312\\69\\-71.28906\\-284.7305\\69\\-73.24219\\-283.7635\\69\\-77.14844\\-282.7434\\69\\-79.10156\\-281.9194\\69\\-83.00781\\-280.858\\69\\-84.96094\\-280.0126\\69\\-88.86719\\-278.7189\\69\\-90.82031\\-277.7538\\69\\-92.77344\\-277.2277\\69\\-96.67969\\-275.662\\69\\-98.63281\\-275.1297\\69\\-100.5859\\-274.1245\\69\\-102.5391\\-273.328\\69\\-104.4922\\-272.1105\\69\\-106.4453\\-271.1856\\69\\-108.3984\\-269.9086\\69\\-110.3516\\-269.0378\\69\\-116.2109\\-264.9849\\69\\-118.1641\\-263.5054\\69\\-121.4468\\-260.8047\\69\\-125.9766\\-256.5211\\69\\-127.9297\\-254.7533\\69\\-129.3314\\-252.9922\\69\\-134.6606\\-247.1328\\69\\-136.1515\\-245.1797\\69\\-137.3423\\-243.2266\\69\\-140.2779\\-239.3203\\69\\-142.4799\\-235.4141\\69\\-143.2079\\-233.4609\\69\\-144.277\\-231.5078\\69\\-144.9231\\-229.5547\\69\\-145.9698\\-227.6016\\69\\-146.6018\\-225.6484\\69\\-148.1179\\-221.7422\\69\\-148.9659\\-217.8359\\69\\-149.6019\\-215.8828\\69\\-150.0873\\-213.9297\\69\\-150.6095\\-210.0234\\69\\-150.9779\\-208.0703\\69\\-151.5026\\-206.1172\\69\\-151.8809\\-204.1641\\69\\-152.0971\\-202.2109\\69\\-152.3928\\-198.3047\\69\\-152.6493\\-192.4453\\69\\-152.6422\\-186.5859\\69\\-152.5116\\-182.6797\\69\\-152.2656\\-180.7266\\69\\-152.1658\\-178.7734\\69\\-151.3672\\-177.0645\\69\\-151.1047\\-176.8203\\69\\-150.8409\\-174.8672\\69\\-151.6029\\-172.9141\\69\\-151.1195\\-170.9609\\69\\-150.7377\\-169.0078\\69\\-150.1465\\-165.1016\\69\\-149.4141\\-163.81\\69\\-148.5938\\-163.1484\\69\\-147.4609\\-161.5751\\69\\-146.8124\\-163.1484\\69\\-145.5078\\-164.6345\\69\\-143.5547\\-165.2123\\69\\-141.6016\\-164.8614\\69\\-140.1702\\-163.1484\\69\\-140.8452\\-161.1953\\69\\-142.4576\\-159.2422\\69\\-143.5547\\-158.4694\\69\\-145.5078\\-158.8844\\69\\-146.4587\\-159.2422\\69\\-147.4609\\-160.5117\\69\\-148.0992\\-157.2891\\69\\-148.0818\\-155.3359\\69\\-147.4991\\-153.3828\\69\\-146.7746\\-151.4297\\69\\-146.2531\\-149.4766\\69\\-144.7299\\-145.5703\\69\\-144.2417\\-143.6172\\69\\-143.3792\\-141.6641\\69\\-142.7358\\-139.7109\\69\\-142.2629\\-137.7578\\69\\-141.3416\\-135.8047\\69\\-139.7439\\-131.8984\\69\\-138.7326\\-129.9453\\69\\-138.0208\\-127.9922\\69\\-136.98\\-126.0391\\69\\-136.4124\\-124.0859\\69\\-135.3725\\-122.1328\\69\\-134.5691\\-120.1797\\69\\-133.4078\\-118.2266\\69\\-132.4629\\-116.2734\\69\\-131.1356\\-114.3203\\69\\-130.2347\\-112.3672\\69\\-127.9297\\-108.6151\\69\\-126.3391\\-106.5078\\69\\-124.0234\\-103.8241\\69\\-122.0703\\-101.7715\\69\\-120.1172\\-100.0651\\69\\-116.2109\\-97.27549\\69\\-114.2578\\-95.82863\\69\\-112.3047\\-94.5625\\69\\-110.3516\\-93.62898\\69\\-108.3984\\-92.48942\\69\\-106.4453\\-91.6493\\69\\-104.4922\\-90.29816\\69\\-100.5859\\-88.09354\\69\\-98.63281\\-87.54511\\69\\-96.67969\\-86.51739\\69\\-94.72656\\-85.74799\\69\\-92.77344\\-84.83237\\69\\-88.86719\\-83.54243\\69\\-86.91406\\-82.65663\\69\\-84.96094\\-82.18417\\69\\-83.00781\\-81.82798\\69\\-79.10156\\-80.73354\\69\\-73.24219\\-79.82962\\69\\-65.42969\\-78.80724\\69\\-61.52344\\-78.45435\\69\\-55.66406\\-78.29911\\69\\-53.71094\\-78.3004\\69\\-49.80469\\-78.43451\\69\\-45.89844\\-78.77712\\69\\-38.08594\\-79.87038\\69\\-36.13281\\-80.07591\\69\\-32.22656\\-80.60565\\69\\-28.32031\\-81.56738\\69\\-26.36719\\-81.92178\\69\\-24.41406\\-82.12926\\69\\-22.46094\\-82.22745\\69\\-18.55469\\-82.2272\\69\\-14.64844\\-81.99985\\69\\-10.74219\\-81.70719\\69\\-8.789063\\-81.33672\\69\\-4.882813\\-81.01398\\69\\-0.9765625\\-80.88609\\69\\4.882813\\-80.79406\\69\\12.69531\\-80.55824\\69\\18.55469\\-80.52744\\69\\22.46094\\-80.42749\\69\\26.36719\\-80.25986\\69\\32.22656\\-79.61844\\69\\38.08594\\-78.8601\\69\\41.99219\\-78.63393\\69\\47.85156\\-78.49119\\69\\51.75781\\-78.55299\\69\\57.61719\\-78.83854\\69\\59.57031\\-78.97706\\69\\67.38281\\-79.7878\\69\\73.24219\\-80.36553\\69\\77.14844\\-80.92793\\69\\81.05469\\-81.79953\\69\\84.96094\\-82.32244\\69\\86.91406\\-82.71957\\69\\88.86719\\-83.39584\\69\\92.77344\\-84.32589\\69\\96.67969\\-85.73959\\69\\98.63281\\-86.2765\\69\\100.5859\\-87.07894\\69\\104.4922\\-88.43116\\69\\106.4453\\-89.52173\\69\\108.3984\\-90.35744\\69\\110.3516\\-91.64839\\69\\112.3047\\-92.68174\\69\\115.6078\\-94.78906\\69\\118.1641\\-96.70045\\69\\120.4325\\-98.69531\\69\\122.4985\\-100.6484\\69\\124.1684\\-102.6016\\69\\128.5038\\-108.4609\\69\\129.4603\\-110.4141\\69\\130.712\\-112.3672\\69\\131.8359\\-114.5022\\69\\133.7891\\-117.9489\\69\\134.8735\\-120.1797\\69\\135.9177\\-122.1328\\69\\137.4236\\-126.0391\\69\\138.4734\\-127.9922\\69\\139.2001\\-129.9453\\69\\140.2902\\-131.8984\\69\\140.9295\\-133.8516\\69\\141.8615\\-135.8047\\69\\142.4834\\-137.7578\\69\\142.9057\\-139.7109\\69\\143.7249\\-141.6641\\69\\144.3498\\-143.6172\\69\\144.795\\-145.5703\\69\\145.5454\\-147.5234\\69\\146.1878\\-149.4766\\69\\146.5935\\-151.4297\\69\\147.1052\\-153.3828\\69\\147.7466\\-155.3359\\69\\148.1334\\-157.2891\\69\\148.8997\\-163.1484\\69\\149.6153\\-167.0547\\69\\150.0423\\-170.9609\\69\\150.2615\\-174.8672\\69\\150.4226\\-180.7266\\69\\150.4653\\-184.6328\\69\\150.4282\\-190.4922\\69\\150.2125\\-198.3047\\69\\149.9821\\-202.2109\\69\\149.559\\-206.1172\\69\\148.9192\\-210.0234\\69\\148.1948\\-215.8828\\69\\147.819\\-217.8359\\69\\147.1829\\-219.7891\\69\\146.0683\\-223.6953\\69\\145.0674\\-225.6484\\69\\144.3971\\-227.6016\\69\\143.3906\\-229.5547\\69\\142.529\\-231.5078\\69\\140.2895\\-235.4141\\69\\137.2386\\-239.3203\\69\\136.0652\\-241.2734\\69\\134.3851\\-243.2266\\69\\130.5486\\-247.1328\\69\\129.8828\\-247.8705\\69\\127.9297\\-249.7393\\69\\121.4338\\-254.9453\\69\\118.1641\\-257.1331\\69\\116.2109\\-258.2295\\69\\114.2578\\-259.618\\69\\112.2444\\-260.8047\\69\\108.4828\\-262.7578\\69\\104.4922\\-264.5919\\69\\100.5859\\-266.7162\\69\\94.72656\\-269.4145\\69\\92.77344\\-270.0263\\69\\90.82031\\-271.1645\\69\\88.86719\\-271.9247\\69\\86.91406\\-273.124\\69\\84.96094\\-273.9512\\69\\83.00781\\-275.1255\\69\\81.05469\\-275.7974\\69\\79.10156\\-277.0408\\69\\77.14844\\-277.8815\\69\\75.19531\\-279.163\\69\\71.28906\\-281.2454\\69\\67.38281\\-283.1721\\69\\65.42969\\-283.9871\\69\\63.47656\\-285.1179\\69\\61.52344\\-286.0302\\69\\59.57031\\-287.0409\\69\\57.61719\\-287.8441\\69\\55.66406\\-288.8057\\69\\53.71094\\-289.3239\\69\\51.75781\\-290.2655\\69\\47.85156\\-291.7557\\69\\45.89844\\-292.7712\\69\\43.94531\\-293.3586\\69\\41.99219\\-294.2485\\69\\40.03906\\-294.8117\\69\\38.08594\\-295.2027\\69\\36.13281\\-295.7204\\69\\34.17969\\-296.4987\\69\\30.27344\\-297.2762\\69\\28.32031\\-297.9662\\69\\26.36719\\-298.5493\\69\\22.46094\\-299.2554\\69\\18.55469\\-300.1711\\69\\16.60156\\-300.4359\\69\\12.69531\\-300.7484\\69\\8.789063\\-300.9807\\69\\4.882813\\-301.138\\69\\0.9765625\\-301.1884\\69\\-2.929688\\-301.1418\\69\\-6.835938\\-301.0186\\69\\-10.74219\\-300.8323\\69\\-14.64844\\-300.5871\\69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002266"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "277"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "161"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-300.2365\\71\\-22.46094\\-299.3499\\71\\-26.36719\\-298.706\\71\\-28.32031\\-298.33\\71\\-30.27344\\-297.6717\\71\\-32.22656\\-297.1723\\71\\-36.13281\\-296.4805\\71\\-38.08594\\-295.748\\71\\-40.03906\\-295.2546\\71\\-43.94531\\-294.458\\71\\-45.89844\\-293.6497\\71\\-49.80469\\-292.4801\\71\\-51.75781\\-291.4975\\71\\-53.71094\\-290.9309\\71\\-57.61719\\-289.3691\\71\\-59.57031\\-288.9502\\71\\-61.52344\\-288.2762\\71\\-63.47656\\-287.4102\\71\\-65.42969\\-286.8556\\71\\-67.38281\\-285.9362\\71\\-71.28906\\-284.524\\71\\-73.24219\\-283.5852\\71\\-75.19531\\-283.1335\\71\\-77.14844\\-282.4919\\71\\-79.10156\\-281.6955\\71\\-81.05469\\-281.1883\\71\\-83.00781\\-280.5645\\71\\-84.96094\\-279.6792\\71\\-86.91406\\-279.0819\\71\\-88.86719\\-278.1992\\71\\-90.82031\\-277.4784\\71\\-92.77344\\-276.956\\71\\-94.72656\\-275.9964\\71\\-98.63281\\-274.7525\\71\\-100.5859\\-273.7232\\71\\-102.5391\\-272.9128\\71\\-104.4922\\-271.6745\\71\\-106.634\\-270.5703\\71\\-110.2056\\-268.6172\\71\\-112.3047\\-267.3495\\71\\-116.2109\\-264.3932\\71\\-118.1641\\-263.0985\\71\\-120.1172\\-261.5922\\71\\-122.0703\\-259.868\\71\\-125.1283\\-256.8984\\71\\-127.9297\\-254.2775\\71\\-129.8828\\-252.0532\\71\\-131.8359\\-249.9303\\71\\-134.3164\\-247.1328\\71\\-137.0056\\-243.2266\\71\\-137.6953\\-242.4114\\71\\-139.9065\\-239.3203\\71\\-140.9943\\-237.3672\\71\\-142.2331\\-235.4141\\71\\-142.8974\\-233.4609\\71\\-143.9938\\-231.5078\\71\\-144.6747\\-229.5547\\71\\-145.6163\\-227.6016\\71\\-146.3707\\-225.6484\\71\\-147.0205\\-223.6953\\71\\-147.8785\\-221.7422\\71\\-148.3736\\-219.7891\\71\\-148.7568\\-217.8359\\71\\-149.8756\\-213.9297\\71\\-150.2307\\-211.9766\\71\\-150.7298\\-208.0703\\71\\-151.1091\\-206.1172\\71\\-151.6029\\-204.1641\\71\\-151.9054\\-202.2109\\71\\-152.2021\\-198.3047\\71\\-152.4339\\-192.4453\\71\\-152.4239\\-186.5859\\71\\-152.2021\\-180.7266\\71\\-151.8891\\-176.8203\\71\\-151.649\\-174.8672\\71\\-150.8206\\-170.9609\\71\\-150.3361\\-167.0547\\71\\-149.8033\\-165.1016\\71\\-147.9604\\-163.1484\\71\\-147.9221\\-161.1953\\71\\-147.6979\\-159.2422\\71\\-148.2091\\-157.2891\\71\\-147.8858\\-155.3359\\71\\-147.1309\\-153.3828\\71\\-146.0328\\-149.4766\\71\\-145.1342\\-147.5234\\71\\-144.0079\\-143.6172\\71\\-143.0798\\-141.6641\\71\\-142.0437\\-137.7578\\71\\-141.0672\\-135.8047\\71\\-140.3959\\-133.8516\\71\\-139.3474\\-131.8984\\71\\-138.543\\-129.9453\\71\\-136.8347\\-126.0391\\71\\-136.2134\\-124.0859\\71\\-135.1103\\-122.1328\\71\\-134.3498\\-120.1797\\71\\-133.1279\\-118.2266\\71\\-132.1928\\-116.2734\\71\\-130.9521\\-114.3203\\71\\-128.8213\\-110.4141\\71\\-127.9297\\-109.097\\71\\-124.3514\\-104.5547\\71\\-122.0703\\-102.0615\\71\\-120.1172\\-100.3986\\71\\-118.1641\\-99.11072\\71\\-114.2578\\-96.13265\\71\\-112.3047\\-95.11948\\71\\-110.3516\\-93.88317\\71\\-106.4453\\-91.92913\\71\\-102.5391\\-89.63358\\71\\-100.5859\\-88.35483\\71\\-98.63281\\-87.74111\\71\\-94.72656\\-85.9622\\71\\-92.77344\\-85.23798\\71\\-90.82031\\-84.40573\\71\\-88.86719\\-83.82729\\71\\-84.96094\\-82.41301\\71\\-81.05469\\-81.66118\\71\\-77.14844\\-80.65248\\71\\-73.24219\\-80.10554\\71\\-67.38281\\-79.47057\\71\\-63.47656\\-78.94027\\71\\-59.57031\\-78.71108\\71\\-55.66406\\-78.59684\\71\\-53.71094\\-78.61364\\71\\-49.80469\\-78.76733\\71\\-47.85156\\-78.94027\\71\\-43.94531\\-79.45847\\71\\-40.03906\\-79.85892\\71\\-34.17969\\-80.51083\\71\\-32.22656\\-80.87119\\71\\-30.27344\\-81.45972\\71\\-28.32031\\-81.83709\\71\\-24.41406\\-82.2107\\71\\-22.46094\\-82.27612\\71\\-18.55469\\-82.20159\\71\\-10.74219\\-81.70313\\71\\-8.789063\\-81.39092\\71\\-6.835938\\-81.20524\\71\\-0.9765625\\-80.99905\\71\\0.9765625\\-80.98543\\71\\10.74219\\-80.62891\\71\\22.46094\\-80.4724\\71\\28.32031\\-80.23495\\71\\32.22656\\-79.81297\\71\\40.03906\\-79.09748\\71\\41.99219\\-78.96462\\71\\45.89844\\-78.84925\\71\\51.75781\\-78.89353\\71\\59.57031\\-79.41538\\71\\65.42969\\-79.84206\\71\\71.28906\\-80.35829\\71\\73.24219\\-80.56747\\71\\79.10156\\-81.69662\\71\\83.00781\\-82.23754\\71\\84.96094\\-82.56223\\71\\88.86719\\-83.71172\\71\\92.77344\\-84.65171\\71\\94.72656\\-85.46968\\71\\98.63281\\-86.57406\\71\\100.5859\\-87.45806\\71\\102.5391\\-88.01454\\71\\104.6381\\-88.92969\\71\\108.3984\\-90.81623\\71\\111.8262\\-92.83594\\71\\112.3047\\-93.19572\\71\\114.2578\\-94.16271\\71\\117.6196\\-96.74219\\71\\122.0969\\-100.6484\\71\\124.0234\\-102.8743\\71\\125.2346\\-104.5547\\71\\126.8024\\-106.5078\\71\\128.2647\\-108.4609\\71\\129.2426\\-110.4141\\71\\130.5402\\-112.3672\\71\\131.3996\\-114.3203\\71\\132.6614\\-116.2734\\71\\134.7244\\-120.1797\\71\\136.5922\\-124.0859\\71\\137.1971\\-126.0391\\71\\138.3301\\-127.9922\\71\\139.0029\\-129.9453\\71\\140.1155\\-131.8984\\71\\140.7795\\-133.8516\\71\\141.655\\-135.8047\\71\\142.3792\\-137.7578\\71\\142.7965\\-139.7109\\71\\144.2303\\-143.6172\\71\\144.6533\\-145.5703\\71\\145.2637\\-147.5234\\71\\146.054\\-149.4766\\71\\146.8889\\-153.3828\\71\\147.4836\\-155.3359\\71\\147.9675\\-157.2891\\71\\148.2573\\-159.2422\\71\\148.9525\\-165.1016\\71\\149.573\\-169.0078\\71\\149.9911\\-172.9141\\71\\150.1872\\-176.8203\\71\\150.2902\\-180.7266\\71\\150.3418\\-184.6328\\71\\150.3251\\-188.5391\\71\\150.2551\\-192.4453\\71\\150.1346\\-196.3516\\71\\149.899\\-200.2578\\71\\149.7206\\-202.2109\\71\\148.9094\\-208.0703\\71\\148.4904\\-211.9766\\71\\147.9675\\-215.8828\\71\\146.8385\\-219.7891\\71\\146.3617\\-221.7422\\71\\145.6962\\-223.6953\\71\\144.7477\\-225.6484\\71\\144.1406\\-227.6016\\71\\143.0189\\-229.5547\\71\\142.2461\\-231.5078\\71\\140.9889\\-233.4609\\71\\139.8786\\-235.4141\\71\\136.9078\\-239.3203\\71\\135.7422\\-241.0575\\71\\133.9614\\-243.2266\\71\\131.8359\\-245.3638\\71\\129.8828\\-247.4583\\71\\127.9297\\-249.3458\\71\\125.9766\\-250.7036\\71\\122.0703\\-253.9814\\71\\120.1172\\-255.4967\\71\\118.1641\\-256.5359\\71\\114.2578\\-259.1334\\71\\112.3047\\-260.1769\\71\\110.3516\\-261.4232\\71\\108.3984\\-262.2558\\71\\106.4453\\-263.3673\\71\\104.4922\\-264.0836\\71\\102.5391\\-265.2816\\71\\100.5859\\-266.1229\\71\\98.63281\\-267.2767\\71\\96.67969\\-268.0545\\71\\94.72656\\-269.1553\\71\\92.77344\\-269.7757\\71\\90.82031\\-270.8248\\71\\88.86719\\-271.6963\\71\\86.91406\\-272.9\\71\\84.96094\\-273.7658\\71\\83.00781\\-274.9943\\71\\81.05469\\-275.7234\\71\\79.10156\\-276.957\\71\\77.14844\\-277.8184\\71\\75.19531\\-279.1436\\71\\71.28906\\-281.2454\\71\\65.16602\\-284.2422\\71\\61.48897\\-286.1953\\71\\55.66406\\-288.8793\\71\\53.71094\\-289.3798\\71\\51.75781\\-290.4096\\71\\49.80469\\-291.1126\\71\\45.89844\\-292.8556\\71\\43.94531\\-293.4866\\71\\41.99219\\-294.3707\\71\\40.03906\\-294.8778\\71\\38.08594\\-295.259\\71\\36.13281\\-295.8757\\71\\34.17969\\-296.5904\\71\\30.27344\\-297.3669\\71\\28.32031\\-298.1135\\71\\26.36719\\-298.6312\\71\\22.46094\\-299.3467\\71\\18.55469\\-300.2466\\71\\16.60156\\-300.4938\\71\\10.74219\\-300.9256\\71\\4.882813\\-301.1798\\71\\0.9765625\\-301.2279\\71\\-2.929688\\-301.1884\\71\\-6.835938\\-301.0621\\71\\-10.74219\\-300.878\\71\\-14.64844\\-300.6205\\71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002265"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "281"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "162"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-299.9338\\73\\-22.46094\\-299.4338\\73\\-28.32031\\-298.4194\\73\\-32.22656\\-297.2212\\73\\-36.13281\\-296.5372\\73\\-38.08594\\-295.8032\\73\\-40.03906\\-295.2792\\73\\-43.94531\\-294.4992\\73\\-45.89844\\-293.6758\\73\\-49.80469\\-292.4706\\73\\-51.75781\\-291.4908\\73\\-53.71094\\-290.8839\\73\\-57.61719\\-289.3309\\73\\-59.57031\\-288.9114\\73\\-63.47656\\-287.3412\\73\\-65.42969\\-286.7755\\73\\-67.38281\\-285.7812\\73\\-69.33594\\-285.0986\\73\\-73.24219\\-283.4484\\73\\-75.19531\\-283.0109\\73\\-77.14844\\-282.2024\\73\\-79.10156\\-281.4994\\73\\-81.05469\\-280.9928\\73\\-84.96094\\-279.4071\\73\\-86.91406\\-278.7647\\73\\-88.86719\\-277.786\\73\\-90.82031\\-277.2435\\73\\-92.77344\\-276.5156\\73\\-94.72656\\-275.6818\\73\\-96.67969\\-275.1464\\73\\-98.63281\\-274.1966\\73\\-100.5859\\-273.3792\\73\\-102.5391\\-272.2616\\73\\-104.4922\\-271.3324\\73\\-106.4453\\-270.0921\\73\\-108.3984\\-269.3138\\73\\-110.3516\\-268.0208\\73\\-112.3047\\-266.9154\\73\\-115.3151\\-264.7109\\73\\-116.2109\\-263.9582\\73\\-120.1172\\-261.1967\\73\\-122.7532\\-258.8516\\73\\-125.9766\\-255.8349\\73\\-127.9297\\-253.9069\\73\\-131.8359\\-249.5209\\73\\-133.8567\\-247.1328\\73\\-138.1747\\-241.2734\\73\\-139.3506\\-239.3203\\73\\-140.6882\\-237.3672\\73\\-141.9247\\-235.4141\\73\\-142.7047\\-233.4609\\73\\-144.4607\\-229.5547\\73\\-145.1557\\-227.6016\\73\\-146.157\\-225.6484\\73\\-146.7369\\-223.6953\\73\\-147.5848\\-221.7422\\73\\-148.1802\\-219.7891\\73\\-148.9868\\-215.8828\\73\\-149.5882\\-213.9297\\73\\-150.063\\-211.9766\\73\\-150.8118\\-206.1172\\73\\-151.6263\\-202.2109\\73\\-152.0025\\-198.3047\\73\\-152.1671\\-194.3984\\73\\-152.2466\\-190.4922\\73\\-152.2217\\-186.5859\\73\\-152.087\\-182.6797\\73\\-151.8291\\-178.7734\\73\\-151.591\\-176.8203\\73\\-150.8634\\-172.9141\\73\\-150.5959\\-170.9609\\73\\-150.1988\\-167.0547\\73\\-149.8413\\-165.1016\\73\\-148.8997\\-163.1484\\73\\-148.7742\\-161.1953\\73\\-148.3907\\-159.2422\\73\\-148.1257\\-157.2891\\73\\-147.6366\\-155.3359\\73\\-146.855\\-153.3828\\73\\-146.3514\\-151.4297\\73\\-145.7316\\-149.4766\\73\\-144.8742\\-147.5234\\73\\-144.3802\\-145.5703\\73\\-143.7249\\-143.6172\\73\\-142.8686\\-141.6641\\73\\-142.4447\\-139.7109\\73\\-141.7969\\-137.7578\\73\\-140.8594\\-135.8047\\73\\-140.2007\\-133.8516\\73\\-139.0533\\-131.8984\\73\\-138.3686\\-129.9453\\73\\-137.3486\\-127.9922\\73\\-135.96\\-124.0859\\73\\-134.9182\\-122.1328\\73\\-134.1284\\-120.1797\\73\\-132.8987\\-118.2266\\73\\-131.8586\\-116.2734\\73\\-129.8828\\-112.7977\\73\\-128.6201\\-110.4141\\73\\-127.1497\\-108.4609\\73\\-122.2098\\-102.6016\\73\\-119.816\\-100.6484\\73\\-118.1641\\-99.47786\\73\\-116.2109\\-97.8869\\73\\-114.2578\\-96.52281\\73\\-112.3047\\-95.42911\\73\\-110.3516\\-94.14925\\73\\-108.3984\\-93.34515\\73\\-106.4453\\-92.20174\\73\\-104.4922\\-91.25842\\73\\-102.5391\\-89.94264\\73\\-100.5859\\-88.76159\\73\\-98.63281\\-87.95939\\73\\-96.67969\\-87.27411\\73\\-94.72656\\-86.29956\\73\\-90.82031\\-84.71539\\73\\-86.91406\\-83.50362\\73\\-84.96094\\-82.69989\\73\\-83.00781\\-82.24261\\73\\-79.10156\\-81.58123\\73\\-77.14844\\-81.02985\\73\\-75.19531\\-80.62231\\73\\-71.28906\\-80.14063\\73\\-65.42969\\-79.62559\\73\\-63.47656\\-79.41914\\73\\-59.57031\\-79.11188\\73\\-55.66406\\-78.96462\\73\\-53.71094\\-78.98968\\73\\-49.80469\\-79.18828\\73\\-45.89844\\-79.56982\\73\\-41.99219\\-79.898\\73\\-38.08594\\-80.31818\\73\\-36.13281\\-80.4724\\73\\-34.17969\\-80.76534\\73\\-30.27344\\-81.75723\\73\\-28.32031\\-82.00883\\73\\-24.41406\\-82.27131\\73\\-20.50781\\-82.25452\\73\\-16.60156\\-82.08772\\73\\-14.64844\\-81.93406\\73\\-10.74219\\-81.73502\\73\\-8.789063\\-81.48073\\73\\-4.882813\\-81.25\\73\\0.9765625\\-81.15754\\73\\6.835938\\-80.88432\\73\\8.789063\\-80.71959\\73\\14.64844\\-80.64228\\73\\18.55469\\-80.52359\\73\\22.46094\\-80.51476\\73\\28.32031\\-80.32554\\73\\30.27344\\-80.20837\\73\\32.22656\\-79.9789\\73\\36.13281\\-79.70217\\73\\41.99219\\-79.38025\\73\\45.89844\\-79.3079\\73\\51.75781\\-79.33684\\73\\59.57031\\-79.71576\\73\\63.47656\\-79.93693\\73\\71.28906\\-80.54539\\73\\73.24219\\-80.80842\\73\\75.19531\\-81.26329\\73\\77.14844\\-81.61225\\73\\83.00781\\-82.43805\\73\\84.96094\\-82.91376\\73\\86.91406\\-83.53682\\73\\90.82031\\-84.42027\\73\\94.72656\\-85.76886\\73\\96.67969\\-86.23391\\73\\100.5859\\-87.74916\\73\\102.5391\\-88.24673\\73\\104.4922\\-89.26667\\73\\106.4453\\-90.11391\\73\\108.3984\\-91.32491\\73\\110.3516\\-92.26474\\73\\112.3047\\-93.57967\\73\\114.2578\\-94.53729\\73\\116.2109\\-95.97018\\73\\118.1641\\-97.63297\\73\\121.5665\\-100.6484\\73\\124.0234\\-103.3096\\73\\124.9075\\-104.5547\\73\\126.5638\\-106.5078\\73\\127.9691\\-108.4609\\73\\130.3298\\-112.3672\\73\\131.187\\-114.3203\\73\\132.4815\\-116.2734\\73\\133.4212\\-118.2266\\73\\134.5762\\-120.1797\\73\\135.4214\\-122.1328\\73\\136.4621\\-124.0859\\73\\137.0422\\-126.0391\\73\\138.1601\\-127.9922\\73\\138.8372\\-129.9453\\73\\139.9111\\-131.8984\\73\\141.3949\\-135.8047\\73\\142.2587\\-137.7578\\73\\142.686\\-139.7109\\73\\143.2482\\-141.6641\\73\\144.0768\\-143.6172\\73\\145.0413\\-147.5234\\73\\145.8748\\-149.4766\\73\\146.6978\\-153.3828\\73\\147.1673\\-155.3359\\73\\147.7486\\-157.2891\\73\\148.3398\\-161.1953\\73\\148.7525\\-165.1016\\73\\149.2143\\-169.0078\\73\\149.7467\\-172.9141\\73\\150.0213\\-176.8203\\73\\150.1801\\-182.6797\\73\\150.1465\\-190.4922\\73\\150.0126\\-194.3984\\73\\149.7838\\-198.3047\\73\\149.5882\\-200.2578\\73\\148.8867\\-206.1172\\73\\148.3054\\-211.9766\\73\\148.0504\\-213.9297\\73\\147.6506\\-215.8828\\73\\147.0388\\-217.8359\\73\\146.0761\\-221.7422\\73\\145.1868\\-223.6953\\73\\143.766\\-227.6016\\73\\142.7346\\-229.5547\\73\\141.8732\\-231.5078\\73\\140.6691\\-233.4609\\73\\139.3042\\-235.4141\\73\\138.0573\\-237.3672\\73\\135.7422\\-240.5003\\73\\133.7891\\-242.8183\\73\\131.4259\\-245.1797\\73\\129.6072\\-247.1328\\73\\127.5645\\-249.0859\\73\\125.9766\\-250.2718\\73\\122.0703\\-253.5548\\73\\120.0853\\-254.9453\\73\\118.1641\\-256.1237\\73\\116.2109\\-257.4388\\73\\114.2578\\-258.4429\\73\\113.7091\\-258.8516\\73\\110.3516\\-260.921\\73\\106.4453\\-262.9206\\73\\104.4922\\-263.7586\\73\\100.5859\\-265.7307\\73\\98.63281\\-266.8579\\73\\96.67969\\-267.7225\\73\\94.72656\\-268.7774\\73\\90.82031\\-270.4076\\73\\90.61726\\-270.5703\\73\\84.96094\\-273.6291\\73\\83.00781\\-274.9038\\73\\81.05469\\-275.6667\\73\\79.10156\\-276.8912\\73\\77.14844\\-277.7843\\73\\75.19531\\-279.122\\73\\71.28906\\-281.2761\\73\\69.29977\\-282.2891\\73\\65.42969\\-284.1104\\73\\61.66847\\-286.1953\\73\\55.66406\\-288.943\\73\\53.71094\\-289.4485\\73\\51.75781\\-290.5416\\73\\49.80469\\-291.1939\\73\\47.85156\\-292.1768\\73\\43.94531\\-293.6263\\73\\41.99219\\-294.5023\\73\\38.08594\\-295.3203\\73\\34.17969\\-296.6634\\73\\30.27344\\-297.4724\\73\\28.32031\\-298.2502\\73\\26.36719\\-298.6983\\73\\22.46094\\-299.4434\\73\\20.50781\\-299.948\\73\\18.55469\\-300.3257\\73\\14.64844\\-300.7034\\73\\8.789063\\-301.0818\\73\\4.882813\\-301.2279\\73\\-0.9765625\\-301.2595\\73\\-4.882813\\-301.184\\73\\-10.74219\\-300.9351\\73\\-16.60156\\-300.4974\\73\\-18.55469\\-300.2883\\73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002264"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "272"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "163"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-300.0416\\75\\-22.46094\\-299.5374\\75\\-24.41406\\-299.1401\\75\\-28.32031\\-298.4946\\75\\-32.22656\\-297.2798\\75\\-36.13281\\-296.5983\\75\\-38.08594\\-295.861\\75\\-40.03906\\-295.2994\\75\\-43.94531\\-294.5208\\75\\-45.89844\\-293.6845\\75\\-49.80469\\-292.4894\\75\\-51.75781\\-291.4758\\75\\-53.71094\\-290.8287\\75\\-55.66406\\-289.9555\\75\\-57.61719\\-289.3074\\75\\-59.57031\\-288.8716\\75\\-63.47656\\-287.2835\\75\\-65.42969\\-286.6836\\75\\-67.38281\\-285.6431\\75\\-69.33594\\-284.9938\\75\\-71.28906\\-284.0572\\75\\-73.24219\\-283.3386\\75\\-75.19531\\-282.8517\\75\\-77.14844\\-281.9565\\75\\-81.05469\\-280.7581\\75\\-83.00781\\-279.8171\\75\\-84.96094\\-279.1566\\75\\-86.91406\\-278.2844\\75\\-88.86719\\-277.5117\\75\\-90.82031\\-276.9433\\75\\-92.77344\\-276.0211\\75\\-96.67969\\-274.7688\\75\\-98.63281\\-273.7441\\75\\-100.5859\\-272.9819\\75\\-102.5391\\-271.7867\\75\\-104.4922\\-270.9224\\75\\-106.4453\\-269.7393\\75\\-108.3984\\-268.8801\\75\\-110.3516\\-267.6223\\75\\-112.3047\\-266.2532\\75\\-114.2578\\-265.0365\\75\\-117.3459\\-262.7578\\75\\-119.8621\\-260.8047\\75\\-122.1837\\-258.8516\\75\\-125.9766\\-255.419\\75\\-128.3864\\-252.9922\\75\\-133.7891\\-246.6285\\75\\-136.4435\\-243.2266\\75\\-138.956\\-239.3203\\75\\-140.4099\\-237.3672\\75\\-142.5126\\-233.4609\\75\\-143.1683\\-231.5078\\75\\-144.2268\\-229.5547\\75\\-144.8282\\-227.6016\\75\\-145.8795\\-225.6484\\75\\-146.495\\-223.6953\\75\\-147.9707\\-219.7891\\75\\-148.7568\\-215.8828\\75\\-149.2413\\-213.9297\\75\\-149.8413\\-211.9766\\75\\-150.173\\-210.0234\\75\\-150.6027\\-206.1172\\75\\-151.5158\\-200.2578\\75\\-151.8809\\-196.3516\\75\\-152.0199\\-192.4453\\75\\-152.0165\\-186.5859\\75\\-151.8725\\-182.6797\\75\\-151.4757\\-178.7734\\75\\-150.8601\\-174.8672\\75\\-150.2664\\-169.0078\\75\\-150.0126\\-167.0547\\75\\-149.6169\\-165.1016\\75\\-149.047\\-163.1484\\75\\-147.9886\\-157.2891\\75\\-146.6462\\-153.3828\\75\\-146.1643\\-151.4297\\75\\-145.3402\\-149.4766\\75\\-144.6823\\-147.5234\\75\\-144.2077\\-145.5703\\75\\-143.3806\\-143.6172\\75\\-142.7409\\-141.6641\\75\\-142.292\\-139.7109\\75\\-140.6883\\-135.8047\\75\\-139.9633\\-133.8516\\75\\-138.8576\\-131.8984\\75\\-138.212\\-129.9453\\75\\-137.1107\\-127.9922\\75\\-136.5446\\-126.0391\\75\\-133.8281\\-120.1797\\75\\-131.8359\\-116.7279\\75\\-131.4984\\-116.2734\\75\\-130.5768\\-114.3203\\75\\-129.3395\\-112.3672\\75\\-128.3881\\-110.4141\\75\\-126.904\\-108.4609\\75\\-121.6474\\-102.6016\\75\\-118.1641\\-99.73126\\75\\-116.2109\\-98.22118\\75\\-113.9803\\-96.74219\\75\\-110.3516\\-94.47626\\75\\-108.3984\\-93.63378\\75\\-106.4453\\-92.50391\\75\\-104.4922\\-91.61818\\75\\-102.5391\\-90.23803\\75\\-100.5859\\-89.3615\\75\\-98.63281\\-88.21886\\75\\-96.67969\\-87.56527\\75\\-94.72656\\-86.55054\\75\\-90.82031\\-85.13969\\75\\-88.86719\\-84.32508\\75\\-86.91406\\-83.80701\\75\\-83.00781\\-82.49698\\75\\-79.10156\\-81.88226\\75\\-77.14844\\-81.50639\\75\\-75.19531\\-81.01481\\75\\-73.24219\\-80.62891\\75\\-71.28906\\-80.40751\\75\\-63.47656\\-79.76649\\75\\-59.57031\\-79.53376\\75\\-55.66406\\-79.44618\\75\\-53.71094\\-79.45847\\75\\-47.85156\\-79.70443\\75\\-41.99219\\-80.12864\\75\\-36.13281\\-80.76791\\75\\-32.22656\\-81.66271\\75\\-30.27344\\-81.95863\\75\\-26.36719\\-82.26151\\75\\-22.46094\\-82.30216\\75\\-16.60156\\-82.08176\\75\\-10.74219\\-81.78776\\75\\-6.835938\\-81.46647\\75\\-4.882813\\-81.39092\\75\\0.9765625\\-81.34828\\75\\6.835938\\-81.02914\\75\\8.789063\\-80.80381\\75\\10.74219\\-80.71959\\75\\14.64844\\-80.68695\\75\\18.55469\\-80.5863\\75\\24.41406\\-80.53253\\75\\30.27344\\-80.32775\\75\\36.13281\\-79.91381\\75\\41.99219\\-79.66918\\75\\47.85156\\-79.62559\\75\\51.75781\\-79.6756\\75\\61.52344\\-80.0394\\75\\69.33594\\-80.59941\\75\\73.24219\\-81.17322\\75\\75.19531\\-81.58512\\75\\81.05469\\-82.33179\\75\\83.00781\\-82.71957\\75\\84.96094\\-83.3503\\75\\88.86719\\-84.22395\\75\\90.82031\\-84.76435\\75\\92.77344\\-85.51491\\75\\96.67969\\-86.55054\\75\\98.63281\\-87.39108\\75\\102.5391\\-88.56879\\75\\104.4922\\-89.63065\\75\\106.4453\\-90.45362\\75\\108.3984\\-91.69279\\75\\110.3516\\-92.7005\\75\\113.8942\\-94.78906\\75\\116.2109\\-96.32162\\75\\118.8263\\-98.69531\\75\\121.0869\\-100.6484\\75\\123.0007\\-102.6016\\75\\124.6806\\-104.5547\\75\\126.2395\\-106.5078\\75\\127.9297\\-108.8939\\75\\128.9243\\-110.4141\\75\\130.075\\-112.3672\\75\\131.0139\\-114.3203\\75\\132.2706\\-116.2734\\75\\133.1764\\-118.2266\\75\\134.3971\\-120.1797\\75\\135.1851\\-122.1328\\75\\136.2899\\-124.0859\\75\\136.908\\-126.0391\\75\\137.931\\-127.9922\\75\\138.6769\\-129.9453\\75\\140.5029\\-133.8516\\75\\141.1683\\-135.8047\\75\\142.0995\\-137.7578\\75\\143.0369\\-141.6641\\75\\143.8525\\-143.6172\\75\\144.4092\\-145.5703\\75\\144.8474\\-147.5234\\75\\145.5744\\-149.4766\\75\\146.1356\\-151.4297\\75\\146.8952\\-155.3359\\75\\147.8957\\-159.2422\\75\\148.1717\\-161.1953\\75\\148.7903\\-167.0547\\75\\149.1464\\-170.9609\\75\\149.6169\\-174.8672\\75\\149.7698\\-176.8203\\75\\149.9694\\-182.6797\\75\\149.9784\\-186.5859\\75\\149.9187\\-190.4922\\75\\149.6019\\-196.3516\\75\\149.1864\\-200.2578\\75\\148.3296\\-210.0234\\75\\147.7505\\-213.9297\\75\\147.1848\\-215.8828\\75\\146.2777\\-219.7891\\75\\145.6822\\-221.7422\\75\\144.8161\\-223.6953\\75\\144.2613\\-225.6484\\75\\143.2316\\-227.6016\\75\\142.491\\-229.5547\\75\\140.3315\\-233.4609\\75\\138.8636\\-235.4141\\75\\137.5407\\-237.3672\\75\\136.35\\-239.3203\\75\\134.7591\\-241.2734\\75\\132.9278\\-243.2266\\75\\127.9297\\-248.271\\75\\125.9766\\-249.9661\\75\\122.0255\\-252.9922\\75\\118.1641\\-255.7613\\75\\114.2578\\-257.9881\\75\\112.3047\\-259.2747\\75\\110.3516\\-260.2825\\75\\108.3984\\-261.5324\\75\\106.4453\\-262.3574\\75\\104.4922\\-263.4535\\75\\102.5391\\-264.2124\\75\\100.5859\\-265.3929\\75\\98.63281\\-266.3096\\75\\96.67969\\-267.4488\\75\\94.72656\\-268.3151\\75\\92.77344\\-269.4022\\75\\90.82031\\-270.1095\\75\\88.86719\\-271.3548\\75\\86.91406\\-272.3182\\75\\83.41098\\-274.4766\\75\\83.00781\\-274.7973\\75\\81.05469\\-275.6279\\75\\79.10156\\-276.8434\\75\\77.14844\\-277.7546\\75\\75.19531\\-279.1084\\75\\71.28906\\-281.3004\\75\\69.33594\\-282.3135\\75\\65.42969\\-284.2015\\75\\63.47656\\-285.2508\\75\\61.52344\\-286.4085\\75\\59.57031\\-287.2218\\75\\57.61719\\-288.2036\\75\\55.66406\\-289.0172\\75\\53.71094\\-289.5319\\75\\51.75781\\-290.6637\\75\\49.80469\\-291.2911\\75\\47.85156\\-292.3496\\75\\43.94531\\-293.7654\\75\\41.99219\\-294.584\\75\\38.08594\\-295.4148\\75\\36.13281\\-296.1979\\75\\34.17969\\-296.7455\\75\\32.22656\\-297.0959\\75\\30.27344\\-297.6224\\75\\28.32031\\-298.3579\\75\\24.41406\\-299.1204\\75\\20.50781\\-300.0789\\75\\18.55469\\-300.3961\\75\\14.64844\\-300.7596\\75\\10.74219\\-301.0208\\75\\4.882813\\-301.2858\\75\\0.9765625\\-301.3221\\75\\-4.882813\\-301.2357\\75\\-10.74219\\-300.9774\\75\\-16.60156\\-300.5463\\75\\-18.55469\\-300.3555\\75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "271"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "164"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-300.1377\\77\\-24.41406\\-299.2071\\77\\-28.32031\\-298.5599\\77\\-30.27344\\-298.0088\\77\\-32.22656\\-297.3351\\77\\-36.13281\\-296.6405\\77\\-40.03906\\-295.3332\\77\\-43.94531\\-294.5332\\77\\-45.89844\\-293.7182\\77\\-49.80469\\-292.4986\\77\\-51.75781\\-291.4711\\77\\-53.71094\\-290.8419\\77\\-55.66406\\-289.9426\\77\\-57.61719\\-289.2887\\77\\-59.57031\\-288.8469\\77\\-61.52344\\-287.9531\\77\\-65.42969\\-286.5821\\77\\-67.38281\\-285.5239\\77\\-69.33594\\-284.8915\\77\\-71.28906\\-283.8583\\77\\-75.19531\\-282.6727\\77\\-77.14844\\-281.7357\\77\\-79.10156\\-281.1804\\77\\-81.05469\\-280.4724\\77\\-83.00781\\-279.5449\\77\\-84.96094\\-278.8889\\77\\-86.91406\\-277.8665\\77\\-88.86719\\-277.2738\\77\\-90.82031\\-276.546\\77\\-92.77344\\-275.7098\\77\\-94.72656\\-275.1794\\77\\-96.67969\\-274.2026\\77\\-98.63281\\-273.3969\\77\\-100.5859\\-272.3571\\77\\-102.5391\\-271.4282\\77\\-104.4922\\-270.3074\\77\\-106.4453\\-269.464\\77\\-108.3984\\-268.2797\\77\\-110.3516\\-267.2305\\77\\-114.2578\\-264.4157\\77\\-116.2109\\-263.2145\\77\\-118.1641\\-261.7424\\77\\-121.5567\\-258.8516\\77\\-125.9766\\-254.8125\\77\\-127.8265\\-252.9922\\77\\-131.2355\\-249.0859\\77\\-131.8359\\-248.4765\\77\\-134.6325\\-245.1797\\77\\-136.1195\\-243.2266\\77\\-137.2462\\-241.2734\\77\\-137.6953\\-240.7476\\77\\-139.6484\\-237.8715\\77\\-140.067\\-237.3672\\77\\-141.066\\-235.4141\\77\\-142.2714\\-233.4609\\77\\-142.8973\\-231.5078\\77\\-143.944\\-229.5547\\77\\-144.5946\\-227.6016\\77\\-146.2794\\-223.6953\\77\\-146.8833\\-221.7422\\77\\-147.7136\\-219.7891\\77\\-148.227\\-217.8359\\77\\-148.9763\\-213.9297\\77\\-149.5448\\-211.9766\\77\\-149.9821\\-210.0234\\77\\-150.2551\\-208.0703\\77\\-151.0715\\-200.2578\\77\\-151.5789\\-196.3516\\77\\-151.7639\\-192.4453\\77\\-151.8019\\-190.4922\\77\\-151.7639\\-186.5859\\77\\-151.5542\\-182.6797\\77\\-151.0462\\-178.7734\\77\\-150.6138\\-174.8672\\77\\-150.3074\\-170.9609\\77\\-149.7811\\-167.0547\\77\\-149.2551\\-165.1016\\77\\-148.8268\\-163.1484\\77\\-148.1963\\-159.2422\\77\\-147.7732\\-157.2891\\77\\-147.0165\\-155.3359\\77\\-145.9572\\-151.4297\\77\\-145.0508\\-149.4766\\77\\-144.0079\\-145.5703\\77\\-143.1169\\-143.6172\\77\\-142.1477\\-139.7109\\77\\-141.2542\\-137.7578\\77\\-140.532\\-135.8047\\77\\-138.7128\\-131.8984\\77\\-137.9883\\-129.9453\\77\\-136.98\\-127.9922\\77\\-136.4296\\-126.0391\\77\\-135.3725\\-124.0859\\77\\-134.6168\\-122.1328\\77\\-133.509\\-120.1797\\77\\-132.5335\\-118.2266\\77\\-131.2657\\-116.2734\\77\\-130.3745\\-114.3203\\77\\-129.1311\\-112.3672\\77\\-128.0136\\-110.4141\\77\\-126.617\\-108.4609\\77\\-123.174\\-104.5547\\77\\-121.2993\\-102.6016\\77\\-118.1641\\-100.0186\\77\\-112.3047\\-95.94378\\77\\-110.2189\\-94.78906\\77\\-104.4922\\-91.89286\\77\\-102.5391\\-90.62286\\77\\-100.5859\\-89.69318\\77\\-98.63281\\-88.58197\\77\\-96.67969\\-87.83672\\77\\-94.72656\\-86.8913\\77\\-92.77344\\-86.08932\\77\\-90.82031\\-85.53152\\77\\-88.86719\\-84.65723\\77\\-84.96094\\-83.58064\\77\\-83.00781\\-82.85897\\77\\-81.05469\\-82.38062\\77\\-77.14844\\-81.82568\\77\\-73.24219\\-81.03056\\77\\-71.28906\\-80.70856\\77\\-69.33594\\-80.49345\\77\\-63.47656\\-80.05131\\77\\-59.57031\\-79.86249\\77\\-55.66406\\-79.77917\\77\\-53.71094\\-79.79185\\77\\-47.85156\\-79.98292\\77\\-43.94531\\-80.25107\\77\\-40.03906\\-80.59592\\77\\-38.08594\\-80.84345\\77\\-34.17969\\-81.62937\\77\\-32.22656\\-81.91221\\77\\-28.32031\\-82.25947\\77\\-26.36719\\-82.3409\\77\\-22.46094\\-82.31407\\77\\-10.74219\\-81.86694\\77\\-4.882813\\-81.61225\\77\\0.9765625\\-81.58839\\77\\4.882813\\-81.38886\\77\\6.835938\\-81.20524\\77\\8.789063\\-80.91119\\77\\10.74219\\-80.80381\\77\\12.69531\\-80.81839\\77\\16.60156\\-80.70061\\77\\26.36719\\-80.57682\\77\\34.17969\\-80.28911\\77\\36.13281\\-80.15261\\77\\41.99219\\-79.92914\\77\\47.85156\\-79.89957\\77\\53.71094\\-79.98292\\77\\61.52344\\-80.29572\\77\\65.42969\\-80.50996\\77\\69.33594\\-80.91591\\77\\75.19531\\-81.8325\\77\\79.10156\\-82.25947\\77\\81.05469\\-82.55939\\77\\84.96094\\-83.66809\\77\\88.86719\\-84.50852\\77\\90.82031\\-85.23478\\77\\94.72656\\-86.30092\\77\\96.67969\\-86.93687\\77\\98.63281\\-87.68045\\77\\100.5859\\-88.15217\\77\\104.4922\\-89.92348\\77\\108.3984\\-91.99485\\77\\110.3516\\-93.21325\\77\\112.3047\\-94.10943\\77\\116.1056\\-96.74219\\77\\120.1172\\-100.0933\\77\\122.7426\\-102.6016\\77\\124.3985\\-104.5547\\77\\128.7364\\-110.4141\\77\\129.732\\-112.3672\\77\\132.0103\\-116.2734\\77\\132.9753\\-118.2266\\77\\134.1943\\-120.1797\\77\\135.019\\-122.1328\\77\\136.0653\\-124.0859\\77\\136.773\\-126.0391\\77\\138.5174\\-129.9453\\77\\139.2927\\-131.8984\\77\\140.3491\\-133.8516\\77\\140.9642\\-135.8047\\77\\141.8896\\-137.7578\\77\\142.4689\\-139.7109\\77\\142.8686\\-141.6641\\77\\144.2746\\-145.5703\\77\\144.679\\-147.5234\\77\\145.2258\\-149.4766\\77\\145.9358\\-151.4297\\77\\146.6551\\-155.3359\\77\\147.0898\\-157.2891\\77\\147.6237\\-159.2422\\77\\147.9797\\-161.1953\\77\\148.6053\\-167.0547\\77\\148.8867\\-170.9609\\77\\149.39\\-176.8203\\77\\149.6691\\-182.6797\\77\\149.6691\\-188.5391\\77\\149.4696\\-192.4453\\77\\148.4843\\-206.1172\\77\\148.11\\-210.0234\\77\\147.7975\\-211.9766\\77\\146.8194\\-215.8828\\77\\145.9754\\-219.7891\\77\\145.1185\\-221.7422\\77\\143.9251\\-225.6484\\77\\142.8889\\-227.6016\\77\\142.202\\-229.5547\\77\\140.9485\\-231.5078\\77\\139.8994\\-233.4609\\77\\137.6953\\-236.6348\\77\\137.097\\-237.3672\\77\\135.9089\\-239.3203\\77\\134.4154\\-241.2734\\77\\130.671\\-245.1797\\77\\127.9297\\-247.8939\\77\\125.9766\\-249.5635\\77\\124.0234\\-250.8696\\77\\122.0703\\-252.3302\\77\\120.1172\\-253.8941\\77\\118.1641\\-255.317\\77\\116.2109\\-256.3294\\77\\114.2578\\-257.6048\\77\\112.3047\\-258.6205\\77\\108.3984\\-261.097\\77\\106.4453\\-261.9679\\77\\104.4922\\-263.0611\\77\\102.5391\\-263.8625\\77\\100.5859\\-265.0039\\77\\98.63281\\-265.9071\\77\\96.67969\\-267.1523\\77\\94.72656\\-268.0014\\77\\92.77344\\-269.2005\\77\\90.82031\\-269.9301\\77\\88.86719\\-271.1786\\77\\86.91406\\-272.1086\\77\\83.00781\\-274.6644\\77\\81.05469\\-275.5918\\77\\79.10156\\-276.7942\\77\\77.14844\\-277.7133\\77\\75.19531\\-279.1056\\77\\73.07381\\-280.3359\\77\\69.33594\\-282.3764\\77\\67.38281\\-283.2599\\77\\63.47656\\-285.3051\\77\\61.52344\\-286.523\\77\\59.57031\\-287.2848\\77\\57.61719\\-288.3087\\77\\55.66406\\-289.0833\\77\\53.71094\\-289.6463\\77\\51.75781\\-290.7726\\77\\49.80469\\-291.4128\\77\\47.85156\\-292.504\\77\\45.89844\\-293.1403\\77\\41.99219\\-294.6728\\77\\38.08594\\-295.5367\\77\\36.13281\\-296.3556\\77\\34.17969\\-296.8272\\77\\32.22656\\-297.1844\\77\\28.32031\\-298.4792\\77\\24.41406\\-299.218\\77\\20.50781\\-300.1949\\77\\16.60156\\-300.654\\77\\12.69531\\-300.9542\\77\\6.835938\\-301.2763\\77\\0.9765625\\-301.3752\\77\\-2.929688\\-301.3386\\77\\-8.789063\\-301.114\\77\\-12.69531\\-300.878\\77\\-18.55469\\-300.4078\\77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002262"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "267"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "165"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-300.216\\79\\-24.41406\\-299.2632\\79\\-28.32031\\-298.6102\\79\\-30.27344\\-298.1378\\79\\-32.22656\\-297.3985\\79\\-36.13281\\-296.6737\\79\\-40.03906\\-295.3634\\79\\-43.94531\\-294.5579\\79\\-45.89844\\-293.7551\\79\\-49.80469\\-292.5167\\79\\-51.75781\\-291.4826\\79\\-53.71094\\-290.8919\\79\\-55.66406\\-290.0156\\79\\-57.61719\\-289.2887\\79\\-59.57031\\-288.8389\\79\\-61.52344\\-287.9132\\79\\-65.42969\\-286.4714\\79\\-67.38281\\-285.4299\\79\\-69.33594\\-284.7835\\79\\-71.28906\\-283.7159\\79\\-73.24219\\-283.1616\\79\\-75.19531\\-282.4783\\79\\-77.14844\\-281.5627\\79\\-79.10156\\-281.0084\\79\\-81.05469\\-280.1057\\79\\-84.96094\\-278.5325\\79\\-86.91406\\-277.5782\\79\\-88.86719\\-277.0265\\79\\-90.82031\\-276.0752\\79\\-94.72656\\-274.8159\\79\\-96.67969\\-273.769\\79\\-98.63281\\-273.0178\\79\\-100.5859\\-271.8331\\79\\-102.5391\\-271.0495\\79\\-104.4922\\-269.87\\79\\-106.4453\\-269.1122\\79\\-108.3984\\-267.8372\\79\\-110.3516\\-266.6721\\79\\-112.3047\\-265.3838\\79\\-114.2578\\-263.9108\\79\\-116.1194\\-262.7578\\79\\-118.1641\\-261.3305\\79\\-121.1007\\-258.8516\\79\\-123.3068\\-256.8984\\79\\-125.9766\\-254.3648\\79\\-129.1681\\-251.0391\\79\\-131.8359\\-248.0584\\79\\-134.2739\\-245.1797\\79\\-135.7422\\-243.135\\79\\-136.8952\\-241.2734\\79\\-138.3329\\-239.3203\\79\\-141.9548\\-233.4609\\79\\-142.6575\\-231.5078\\79\\-144.3818\\-227.6016\\79\\-145.0258\\-225.6484\\79\\-146.0314\\-223.6953\\79\\-146.6064\\-221.7422\\79\\-148.0164\\-217.8359\\79\\-149.1718\\-211.9766\\79\\-149.7206\\-210.0234\\79\\-150.0873\\-208.0703\\79\\-150.3024\\-206.1172\\79\\-150.9339\\-198.3047\\79\\-151.1195\\-196.3516\\79\\-151.3593\\-192.4453\\79\\-151.4194\\-188.5391\\79\\-151.3593\\-186.5859\\79\\-151.1072\\-182.6797\\79\\-150.7621\\-178.7734\\79\\-150.1465\\-170.9609\\79\\-149.8653\\-169.0078\\79\\-148.9975\\-165.1016\\79\\-148.629\\-163.1484\\79\\-148.0164\\-159.2422\\79\\-147.4686\\-157.2891\\79\\-146.7779\\-155.3359\\79\\-146.3087\\-153.3828\\79\\-145.6822\\-151.4297\\79\\-144.8399\\-149.4766\\79\\-144.388\\-147.5234\\79\\-143.7773\\-145.5703\\79\\-142.9396\\-143.6172\\79\\-142.5308\\-141.6641\\79\\-141.9772\\-139.7109\\79\\-141.0444\\-137.7578\\79\\-140.3809\\-135.8047\\79\\-139.3885\\-133.8516\\79\\-136.8835\\-127.9922\\79\\-136.3051\\-126.0391\\79\\-135.2113\\-124.0859\\79\\-134.4666\\-122.1328\\79\\-133.2617\\-120.1797\\79\\-132.3547\\-118.2266\\79\\-131.0757\\-116.2734\\79\\-130.1041\\-114.3203\\79\\-128.9185\\-112.3672\\79\\-126.3089\\-108.4609\\79\\-122.9162\\-104.5547\\79\\-120.1172\\-101.8609\\79\\-118.1641\\-100.3927\\79\\-116.2109\\-99.12023\\79\\-114.2578\\-97.58588\\79\\-112.3047\\-96.25054\\79\\-110.3516\\-95.21904\\79\\-108.3984\\-94.04228\\79\\-106.4453\\-93.26761\\79\\-105.7978\\-92.83594\\79\\-102.5391\\-91.1323\\79\\-100.5859\\-89.95193\\79\\-96.67969\\-88.06802\\79\\-92.77344\\-86.37231\\79\\-90.82031\\-85.83627\\79\\-86.91406\\-84.38535\\79\\-83.00781\\-83.36397\\79\\-81.05469\\-82.71957\\79\\-79.10156\\-82.3485\\79\\-73.24219\\-81.51479\\79\\-69.33594\\-80.83296\\79\\-63.47656\\-80.33234\\79\\-57.61719\\-80.10511\\79\\-53.71094\\-80.08768\\79\\-49.80469\\-80.16374\\79\\-43.94531\\-80.49345\\79\\-40.03906\\-80.92645\\79\\-36.13281\\-81.66271\\79\\-34.17969\\-81.89969\\79\\-30.27344\\-82.25452\\79\\-26.36719\\-82.39703\\79\\-22.46094\\-82.32598\\79\\-14.64844\\-82.05736\\79\\-6.835938\\-81.83709\\79\\0.9765625\\-81.80393\\79\\4.882813\\-81.63223\\79\\6.835938\\-81.45718\\79\\8.789063\\-81.09236\\79\\10.74219\\-80.98222\\79\\14.64844\\-80.91279\\79\\18.55469\\-80.75888\\79\\22.46094\\-80.75888\\79\\30.27344\\-80.60565\\79\\38.08594\\-80.30242\\79\\45.89844\\-80.18084\\79\\53.71094\\-80.23944\\79\\61.52344\\-80.49744\\79\\65.42969\\-80.79642\\79\\71.28906\\-81.59537\\79\\77.14844\\-82.20689\\79\\79.10156\\-82.45452\\79\\81.05469\\-82.8908\\79\\83.00781\\-83.48322\\79\\86.91406\\-84.34148\\79\\88.86719\\-84.90137\\79\\90.82031\\-85.60327\\79\\92.77344\\-86.02806\\79\\94.72656\\-86.57406\\79\\96.67969\\-87.37993\\79\\100.5859\\-88.40487\\79\\102.5391\\-89.45354\\79\\104.4922\\-90.22977\\79\\106.4453\\-91.43478\\79\\108.3984\\-92.31236\\79\\110.3516\\-93.56006\\79\\112.3047\\-94.50896\\79\\114.2578\\-95.79693\\79\\115.4665\\-96.74219\\79\\118.1641\\-99.04134\\79\\120.1172\\-100.591\\79\\122.3281\\-102.6016\\79\\125.4075\\-106.5078\\79\\125.9766\\-107.1406\\79\\128.5105\\-110.4141\\79\\129.456\\-112.3672\\79\\130.6824\\-114.3203\\79\\131.6452\\-116.2734\\79\\133.9296\\-120.1797\\79\\135.7982\\-124.0859\\79\\136.6404\\-126.0391\\79\\137.3117\\-127.9922\\79\\138.355\\-129.9453\\79\\139.0374\\-131.8984\\79\\140.1602\\-133.8516\\79\\140.7823\\-135.8047\\79\\141.625\\-137.7578\\79\\142.3401\\-139.7109\\79\\142.7288\\-141.6641\\79\\143.287\\-143.6172\\79\\144.0979\\-145.5703\\79\\144.9626\\-149.4766\\79\\145.6299\\-151.4297\\79\\146.1356\\-153.3828\\79\\146.8231\\-157.2891\\79\\147.7119\\-161.1953\\79\\148.0061\\-163.1484\\79\\148.4318\\-167.0547\\79\\148.9356\\-174.8672\\79\\149.2143\\-180.7266\\79\\149.2691\\-188.5391\\79\\148.8029\\-198.3047\\79\\148.2776\\-206.1172\\79\\147.806\\-210.0234\\79\\146.8971\\-213.9297\\79\\146.1461\\-217.8359\\79\\144.7519\\-221.7422\\79\\144.2829\\-223.6953\\79\\143.3932\\-225.6484\\79\\141.8044\\-229.5547\\79\\140.6193\\-231.5078\\79\\139.289\\-233.4609\\79\\137.6953\\-236.1398\\79\\133.9505\\-241.2734\\79\\130.179\\-245.1797\\79\\127.9297\\-247.3937\\79\\125.7999\\-249.0859\\79\\124.0234\\-250.3995\\79\\120.1172\\-253.4338\\79\\114.2578\\-257.1407\\79\\112.3047\\-258.0934\\79\\110.3516\\-259.4249\\79\\108.3984\\-260.4721\\79\\106.4453\\-261.6478\\79\\104.4922\\-262.5231\\79\\102.5391\\-263.5767\\79\\100.5859\\-264.4393\\79\\100.221\\-264.7109\\79\\96.67969\\-266.761\\79\\94.72656\\-267.7678\\79\\92.77344\\-268.9781\\79\\90.82031\\-269.7679\\79\\88.86719\\-271.0037\\79\\86.91406\\-271.9612\\79\\84.96094\\-273.324\\79\\83.00781\\-274.5317\\79\\81.05469\\-275.5435\\79\\79.10156\\-276.7458\\79\\77.14844\\-277.7133\\79\\75.19531\\-279.1056\\79\\73.09792\\-280.3359\\79\\69.52898\\-282.2891\\79\\67.38281\\-283.2829\\79\\65.42969\\-284.4049\\79\\63.47656\\-285.3606\\79\\61.52344\\-286.6233\\79\\59.57031\\-287.3683\\79\\57.61719\\-288.445\\79\\53.71094\\-289.7973\\79\\51.75781\\-290.8839\\79\\49.80469\\-291.5429\\79\\47.85156\\-292.6373\\79\\45.89844\\-293.2537\\79\\43.94531\\-294.1196\\79\\41.99219\\-294.7713\\79\\40.03906\\-295.1785\\79\\38.08594\\-295.6933\\79\\36.13281\\-296.4987\\79\\32.22656\\-297.2958\\79\\30.27344\\-298.0088\\79\\28.32031\\-298.5839\\79\\24.41406\\-299.3298\\79\\20.50781\\-300.2787\\79\\16.60156\\-300.7098\\79\\10.74219\\-301.1255\\79\\6.835938\\-301.3221\\79\\0.9765625\\-301.4123\\79\\-4.882813\\-301.3386\\79\\-8.789063\\-301.1588\\79\\-14.64844\\-300.7873\\79\\-18.55469\\-300.4474\\79"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002261"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "264"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "166"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-299.8748\\81\\-24.41406\\-299.3351\\81\\-28.32031\\-298.6611\\81\\-30.27344\\-298.2396\\81\\-32.22656\\-297.4793\\81\\-34.17969\\-297.0443\\81\\-36.13281\\-296.7126\\81\\-38.08594\\-296.1324\\81\\-40.03906\\-295.4076\\81\\-43.94531\\-294.5999\\81\\-47.85156\\-293.116\\81\\-49.80469\\-292.56\\81\\-51.75781\\-291.5109\\81\\-53.71094\\-290.9252\\81\\-57.61719\\-289.282\\81\\-59.57031\\-288.8264\\81\\-61.52344\\-287.8745\\81\\-65.42969\\-286.3722\\81\\-67.38281\\-285.3473\\81\\-69.33594\\-284.6769\\81\\-71.28906\\-283.5972\\81\\-73.24219\\-283.0644\\81\\-77.14844\\-281.4256\\81\\-79.10156\\-280.818\\81\\-81.05469\\-279.7974\\81\\-83.00781\\-279.1044\\81\\-84.96094\\-278.0711\\81\\-88.86719\\-276.681\\81\\-90.82031\\-275.7551\\81\\-92.77344\\-275.1952\\81\\-94.72656\\-274.2588\\81\\-96.67969\\-273.4338\\81\\-98.63281\\-272.3977\\81\\-106.3368\\-268.6172\\81\\-108.3984\\-267.4631\\81\\-110.3516\\-266.0716\\81\\-112.5127\\-264.7109\\81\\-115.4423\\-262.7578\\81\\-118.1152\\-260.8047\\81\\-120.5673\\-258.8516\\81\\-124.0234\\-255.8095\\81\\-125.9766\\-253.9057\\81\\-128.7697\\-251.0391\\81\\-131.8359\\-247.566\\81\\-133.7891\\-245.1327\\81\\-135.7422\\-242.5724\\81\\-137.9516\\-239.3203\\81\\-139.0412\\-237.3672\\81\\-140.4469\\-235.4141\\81\\-142.4255\\-231.5078\\81\\-143.1077\\-229.5547\\81\\-144.1323\\-227.6016\\81\\-144.7188\\-225.6484\\81\\-145.6432\\-223.6953\\81\\-146.3649\\-221.7422\\81\\-146.9397\\-219.7891\\81\\-147.7409\\-217.8359\\81\\-148.2153\\-215.8828\\81\\-148.8832\\-211.9766\\81\\-149.8413\\-208.0703\\81\\-150.1346\\-206.1172\\81\\-150.4503\\-202.2109\\81\\-150.8852\\-194.3984\\81\\-150.9752\\-190.4922\\81\\-150.957\\-186.5859\\81\\-150.7945\\-182.6797\\81\\-150.3024\\-174.8672\\81\\-149.9187\\-170.9609\\81\\-149.1075\\-167.0547\\81\\-148.4558\\-163.1484\\81\\-148.1919\\-161.1953\\81\\-147.7865\\-159.2422\\81\\-146.5794\\-155.3359\\81\\-146.1278\\-153.3828\\81\\-145.3256\\-151.4297\\81\\-144.6852\\-149.4766\\81\\-144.2411\\-147.5234\\81\\-142.8068\\-143.6172\\81\\-142.4173\\-141.6641\\81\\-141.7717\\-139.7109\\81\\-140.8663\\-137.7578\\81\\-140.2322\\-135.8047\\81\\-139.1539\\-133.8516\\81\\-138.4461\\-131.8984\\81\\-137.4153\\-129.9453\\81\\-136.1256\\-126.0391\\81\\-135.0393\\-124.0859\\81\\-134.2741\\-122.1328\\81\\-133.0582\\-120.1797\\81\\-132.0818\\-118.2266\\81\\-130.8833\\-116.2734\\81\\-128.7122\\-112.3672\\81\\-125.9766\\-108.5723\\81\\-124.3057\\-106.5078\\81\\-122.5956\\-104.5547\\81\\-120.1172\\-102.2152\\81\\-118.1641\\-100.8906\\81\\-115.34\\-98.69531\\81\\-112.3047\\-96.55582\\81\\-110.3516\\-95.53976\\81\\-108.3984\\-94.29381\\81\\-106.4453\\-93.55251\\81\\-104.4922\\-92.41107\\81\\-102.5391\\-91.51996\\81\\-100.5859\\-90.24158\\81\\-98.63281\\-89.4018\\81\\-96.67969\\-88.30334\\81\\-94.72656\\-87.57912\\81\\-92.77344\\-86.66267\\81\\-88.86719\\-85.55898\\81\\-86.91406\\-84.7285\\81\\-84.96094\\-84.17166\\81\\-81.05469\\-83.23793\\81\\-79.10156\\-82.6385\\81\\-75.19531\\-82.06398\\81\\-71.28906\\-81.62231\\81\\-69.33594\\-81.29404\\81\\-65.42969\\-80.80614\\81\\-61.52344\\-80.52359\\81\\-55.66406\\-80.36095\\81\\-49.80469\\-80.41528\\81\\-43.94531\\-80.80614\\81\\-38.08594\\-81.70844\\81\\-36.13281\\-81.93923\\81\\-30.27344\\-82.38062\\81\\-26.36719\\-82.44998\\81\\-16.60156\\-82.17116\\81\\-6.835938\\-81.98319\\81\\2.929688\\-81.94116\\81\\6.835938\\-81.7487\\81\\8.789063\\-81.47429\\81\\14.64844\\-81.14181\\81\\18.55469\\-80.87119\\81\\28.32031\\-80.83296\\81\\32.22656\\-80.75629\\81\\38.08594\\-80.49345\\81\\45.89844\\-80.40424\\81\\55.66406\\-80.51865\\81\\61.52344\\-80.80842\\81\\63.47656\\-80.98543\\81\\71.28906\\-81.84808\\81\\75.19531\\-82.18731\\81\\77.14844\\-82.41313\\81\\79.10156\\-82.75642\\81\\81.05469\\-83.31799\\81\\84.96094\\-84.15955\\81\\86.91406\\-84.63157\\81\\88.86719\\-85.38882\\81\\92.77344\\-86.28893\\81\\96.67969\\-87.68045\\81\\98.63281\\-88.10571\\81\\100.5859\\-88.81435\\81\\102.5391\\-89.77912\\81\\104.4922\\-90.62286\\81\\106.4453\\-91.76505\\81\\108.3984\\-92.72743\\81\\110.3516\\-93.83177\\81\\112.3047\\-95.06701\\81\\114.2578\\-96.14173\\81\\116.2109\\-97.74462\\81\\121.6935\\-102.6016\\81\\126.7541\\-108.4609\\81\\128.2037\\-110.4141\\81\\129.2251\\-112.3672\\81\\130.4713\\-114.3203\\81\\131.3343\\-116.2734\\81\\132.5684\\-118.2266\\81\\134.6784\\-122.1328\\81\\135.5017\\-124.0859\\81\\136.4948\\-126.0391\\81\\137.0716\\-127.9922\\81\\138.1778\\-129.9453\\81\\138.8408\\-131.8984\\81\\139.919\\-133.8516\\81\\141.3216\\-137.7578\\81\\142.1749\\-139.7109\\81\\143.0404\\-143.6172\\81\\143.8407\\-145.5703\\81\\144.3623\\-147.5234\\81\\145.2026\\-151.4297\\81\\145.8748\\-153.3828\\81\\146.2719\\-155.3359\\81\\146.8987\\-159.2422\\81\\147.7599\\-163.1484\\81\\148.0301\\-165.1016\\81\\148.3804\\-169.0078\\81\\148.7044\\-174.8672\\81\\148.8773\\-180.7266\\81\\148.9324\\-188.5391\\81\\148.7442\\-194.3984\\81\\148.5745\\-198.3047\\81\\148.2064\\-204.1641\\81\\147.7486\\-208.0703\\81\\146.9191\\-211.9766\\81\\146.2298\\-215.8828\\81\\145.7435\\-217.8359\\81\\144.9626\\-219.7891\\81\\143.944\\-223.6953\\81\\142.9791\\-225.6484\\81\\142.4062\\-227.6016\\81\\141.2737\\-229.5547\\81\\140.2814\\-231.5078\\81\\138.8504\\-233.4609\\81\\136.4663\\-237.3672\\81\\133.7891\\-240.7656\\81\\129.5185\\-245.1797\\81\\127.5156\\-247.1328\\81\\124.0234\\-250.0163\\81\\122.0703\\-251.4853\\81\\116.9976\\-254.9453\\81\\116.2109\\-255.5394\\81\\114.2578\\-256.5122\\81\\113.713\\-256.8984\\81\\108.3984\\-259.9959\\81\\106.4453\\-261.2498\\81\\104.4922\\-262.1267\\81\\102.5391\\-263.2764\\81\\100.5859\\-264.0454\\81\\98.63281\\-265.3077\\81\\96.67969\\-266.3223\\81\\96.21957\\-266.6641\\81\\92.77344\\-268.6886\\81\\90.82031\\-269.6365\\81\\88.86719\\-270.823\\81\\86.91406\\-271.8517\\81\\84.96094\\-273.2617\\81\\82.93269\\-274.4766\\81\\77.14844\\-277.7215\\81\\75.19531\\-279.1344\\81\\73.16451\\-280.3359\\81\\69.33594\\-282.4951\\81\\67.38281\\-283.3173\\81\\65.42969\\-284.5183\\81\\63.47656\\-285.4376\\81\\61.52344\\-286.7066\\81\\59.57031\\-287.4637\\81\\57.61719\\-288.5787\\81\\55.66406\\-289.2015\\81\\53.71094\\-290.0008\\81\\51.75781\\-290.9759\\81\\49.80469\\-291.7119\\81\\47.85156\\-292.7589\\81\\45.89844\\-293.3776\\81\\43.94531\\-294.3015\\81\\41.99219\\-294.8608\\81\\40.03906\\-295.2749\\81\\38.08594\\-295.875\\81\\36.13281\\-296.61\\81\\32.22656\\-297.4166\\81\\30.27344\\-298.207\\81\\28.32031\\-298.6709\\81\\24.41406\\-299.4504\\81\\22.46094\\-300.0026\\81\\20.50781\\-300.3584\\81\\18.55469\\-300.5941\\81\\12.69531\\-301.0355\\81\\8.789063\\-301.2669\\81\\2.929688\\-301.4696\\81\\-0.9765625\\-301.4809\\81\\-4.882813\\-301.3989\\81\\-10.74219\\-301.0972\\81\\-14.64844\\-300.8209\\81\\-18.55469\\-300.4938\\81\\-20.50781\\-300.2664\\81"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002260"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "259"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "167"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-299.9619\\83\\-24.41406\\-299.4123\\83\\-30.27344\\-298.33\\83\\-32.22656\\-297.5644\\83\\-34.17969\\-297.0822\\83\\-36.13281\\-296.7624\\83\\-38.08594\\-296.2369\\83\\-40.03906\\-295.4694\\83\\-43.94531\\-294.6489\\83\\-47.85156\\-293.1426\\83\\-49.80469\\-292.5929\\83\\-51.75781\\-291.5574\\83\\-53.71094\\-290.9407\\83\\-57.61719\\-289.2887\\83\\-59.57031\\-288.8264\\83\\-61.52344\\-287.8604\\83\\-65.42969\\-286.3183\\83\\-67.38281\\-285.2896\\83\\-69.33594\\-284.5783\\83\\-71.28906\\-283.5142\\83\\-73.24219\\-282.9628\\83\\-75.19531\\-282.0214\\83\\-79.10156\\-280.6179\\83\\-81.05469\\-279.5968\\83\\-83.00781\\-278.8622\\83\\-84.96094\\-277.7378\\83\\-86.91406\\-277.1331\\83\\-88.86719\\-276.1968\\83\\-92.77344\\-274.8658\\83\\-94.72656\\-273.8351\\83\\-96.67969\\-273.072\\83\\-98.63281\\-271.8782\\83\\-100.5859\\-271.1211\\83\\-102.5391\\-269.9648\\83\\-104.4922\\-269.2308\\83\\-106.4453\\-268.006\\83\\-108.3984\\-267.0294\\83\\-111.7205\\-264.7109\\83\\-112.3047\\-264.2436\\83\\-114.2578\\-263.1973\\83\\-116.2109\\-261.7617\\83\\-122.0703\\-257.0739\\83\\-124.0234\\-255.3434\\83\\-128.3218\\-251.0391\\83\\-130.0639\\-249.0859\\83\\-131.6216\\-247.1328\\83\\-134.8705\\-243.2266\\83\\-136.3416\\-241.2734\\83\\-137.4046\\-239.3203\\83\\-140.0761\\-235.4141\\83\\-141.0289\\-233.4609\\83\\-142.1587\\-231.5078\\83\\-142.8097\\-229.5547\\83\\-143.7789\\-227.6016\\83\\-145.1266\\-223.6953\\83\\-146.0859\\-221.7422\\83\\-146.657\\-219.7891\\83\\-147.9953\\-215.8828\\83\\-149.0083\\-210.0234\\83\\-149.8958\\-206.1172\\83\\-150.2852\\-202.2109\\83\\-150.4828\\-198.3047\\83\\-150.6721\\-192.4453\\83\\-150.6721\\-186.5859\\83\\-150.5561\\-182.6797\\83\\-150.3688\\-178.7734\\83\\-150.115\\-174.8672\\83\\-149.9089\\-172.9141\\83\\-149.6019\\-170.9609\\83\\-148.8514\\-167.0547\\83\\-148.0129\\-161.1953\\83\\-146.882\\-157.2891\\83\\-145.9167\\-153.3828\\83\\-145.0479\\-151.4297\\83\\-144.0768\\-147.5234\\83\\-143.2339\\-145.5703\\83\\-142.2791\\-141.6641\\83\\-140.7104\\-137.7578\\83\\-140.0548\\-135.8047\\83\\-138.9541\\-133.8516\\83\\-138.2835\\-131.8984\\83\\-137.2236\\-129.9453\\83\\-136.6652\\-127.9922\\83\\-135.8918\\-126.0391\\83\\-134.8855\\-124.0859\\83\\-134.0209\\-122.1328\\83\\-131.8359\\-118.424\\83\\-128.4944\\-112.3672\\83\\-125.9766\\-108.9984\\83\\-124.0234\\-106.675\\83\\-122.1454\\-104.5547\\83\\-120.0149\\-102.6016\\83\\-116.2109\\-99.63749\\83\\-114.9368\\-98.69531\\83\\-112.0016\\-96.74219\\83\\-108.3984\\-94.60645\\83\\-106.4453\\-93.77655\\83\\-102.5391\\-91.79903\\83\\-100.5859\\-90.61228\\83\\-98.63281\\-89.70743\\83\\-96.67969\\-88.62405\\83\\-94.72656\\-87.89171\\83\\-92.58823\\-86.97656\\83\\-90.82031\\-86.33968\\83\\-88.86719\\-85.82457\\83\\-84.96094\\-84.48485\\83\\-81.05469\\-83.63947\\83\\-77.14844\\-82.63119\\83\\-75.19531\\-82.32424\\83\\-69.33594\\-81.69515\\83\\-67.38281\\-81.5317\\83\\-63.47656\\-81.06069\\83\\-61.52344\\-80.89934\\83\\-57.61719\\-80.70856\\83\\-55.66406\\-80.66281\\83\\-49.80469\\-80.71959\\83\\-47.85156\\-80.84345\\83\\-43.94531\\-81.28257\\83\\-40.03906\\-81.81748\\83\\-36.13281\\-82.14227\\83\\-30.27344\\-82.50224\\83\\-26.36719\\-82.50065\\83\\-16.60156\\-82.24952\\83\\-4.882813\\-82.11183\\83\\0.9765625\\-82.15846\\83\\2.929688\\-82.11771\\83\\10.74219\\-81.71764\\83\\16.60156\\-81.29404\\83\\18.55469\\-81.04455\\83\\22.46094\\-80.99905\\83\\28.32031\\-81.02985\\83\\32.22656\\-81.01398\\83\\36.13281\\-80.8206\\83\\40.03906\\-80.71959\\83\\45.89844\\-80.66281\\83\\49.80469\\-80.69768\\83\\55.66406\\-80.84551\\83\\59.57031\\-81.09277\\83\\67.38281\\-81.75323\\83\\71.28906\\-82.02904\\83\\75.19531\\-82.39282\\83\\77.14844\\-82.69989\\83\\79.10156\\-83.22568\\83\\84.96094\\-84.41237\\83\\88.86719\\-85.67253\\83\\92.77344\\-86.60614\\83\\94.72656\\-87.39905\\83\\98.63281\\-88.3541\\83\\100.5859\\-89.31095\\83\\102.5391\\-90.05955\\83\\104.4922\\-91.1485\\83\\106.4453\\-92.08949\\83\\108.3984\\-93.25959\\83\\110.3516\\-94.14466\\83\\112.3047\\-95.4245\\83\\114.2578\\-96.59723\\83\\116.2109\\-98.10938\\83\\118.1641\\-99.76748\\83\\121.3686\\-102.6016\\83\\122.0703\\-103.3247\\83\\124.8328\\-106.5078\\83\\126.455\\-108.4609\\83\\127.9297\\-110.648\\83\\130.2108\\-114.3203\\83\\131.0974\\-116.2734\\83\\132.3636\\-118.2266\\83\\133.3174\\-120.1797\\83\\134.5009\\-122.1328\\83\\135.2505\\-124.0859\\83\\136.3294\\-126.0391\\83\\136.9034\\-127.9922\\83\\137.9191\\-129.9453\\83\\138.6719\\-131.8984\\83\\140.4286\\-135.8047\\83\\141.0651\\-137.7578\\83\\141.9635\\-139.7109\\83\\142.4888\\-141.6641\\83\\142.8643\\-143.6172\\83\\144.1767\\-147.5234\\83\\144.8895\\-151.4297\\83\\146.041\\-155.3359\\83\\146.9485\\-161.1953\\83\\147.7486\\-165.1016\\83\\148.179\\-169.0078\\83\\148.4898\\-174.8672\\83\\148.6123\\-178.7734\\83\\148.6709\\-182.6797\\83\\148.6832\\-188.5391\\83\\148.5204\\-194.3984\\83\\148.3566\\-198.3047\\83\\147.9399\\-204.1641\\83\\147.652\\-206.1172\\83\\147.2307\\-208.0703\\83\\146.2799\\-213.9297\\83\\145.9045\\-215.8828\\83\\145.1778\\-217.8359\\83\\144.6487\\-219.7891\\83\\144.2303\\-221.7422\\83\\143.4366\\-223.6953\\83\\142.0998\\-227.6016\\83\\139.6484\\-231.6966\\83\\137.6953\\-234.7602\\83\\137.162\\-235.4141\\83\\136.0652\\-237.3672\\83\\134.6071\\-239.3203\\83\\131.8359\\-242.4152\\83\\129.103\\-245.1797\\83\\126.9747\\-247.1328\\83\\124.0234\\-249.6129\\83\\120.1172\\-252.1937\\83\\118.1641\\-253.7324\\83\\116.2109\\-255.0186\\83\\114.2578\\-256.0931\\83\\112.3047\\-257.3209\\83\\110.3516\\-258.2511\\83\\108.3984\\-259.6222\\83\\102.5391\\-262.8769\\83\\100.5859\\-263.7806\\83\\96.67969\\-266.0151\\83\\94.72656\\-267.3706\\83\\92.4193\\-268.6172\\83\\86.91406\\-271.7522\\83\\84.96094\\-273.2004\\83\\79.50246\\-276.4297\\83\\77.14844\\-277.7255\\83\\75.19531\\-279.1718\\83\\73.24219\\-280.3596\\83\\71.28906\\-281.4108\\83\\69.33594\\-282.5628\\83\\67.38281\\-283.3863\\83\\65.42969\\-284.6237\\83\\63.47656\\-285.5384\\83\\61.52344\\-286.789\\83\\59.57031\\-287.5751\\83\\57.61719\\-288.6961\\83\\55.66406\\-289.2654\\83\\53.71094\\-290.2523\\83\\49.80469\\-291.9308\\83\\47.85156\\-292.8627\\83\\45.89844\\-293.5256\\83\\43.94531\\-294.4511\\83\\40.03906\\-295.3673\\83\\38.08594\\-296.1048\\83\\36.13281\\-296.7058\\83\\34.17969\\-297.0733\\83\\32.22656\\-297.5753\\83\\30.27344\\-298.3579\\83\\26.36719\\-299.11\\83\\22.46094\\-300.1377\\83\\20.50781\\-300.4277\\83\\16.60156\\-300.804\\83\\12.69531\\-301.0771\\83\\6.835938\\-301.3989\\83\\2.929688\\-301.5302\\83\\-0.9765625\\-301.569\\83\\-4.882813\\-301.4584\\83\\-10.74219\\-301.1462\\83\\-14.64844\\-300.8666\\83\\-20.50781\\-300.3165\\83"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002259"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "270"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "168"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-300.0542\\85\\-24.41406\\-299.493\\85\\-26.36719\\-299.0973\\85\\-30.27344\\-298.4194\\85\\-32.22656\\-297.6822\\85\\-34.17969\\-297.1445\\85\\-36.13281\\-296.8193\\85\\-38.08594\\-296.3339\\85\\-40.03906\\-295.5262\\85\\-43.94531\\-294.6884\\85\\-45.8816\\-294.0078\\85\\-47.85156\\-293.1966\\85\\-49.80469\\-292.6244\\85\\-51.75781\\-291.6158\\85\\-53.71094\\-290.9713\\85\\-57.61719\\-289.3074\\85\\-59.57031\\-288.8264\\85\\-61.52344\\-287.8625\\85\\-63.47656\\-287.1173\\85\\-65.42969\\-286.2619\\85\\-67.38281\\-285.254\\85\\-69.33594\\-284.466\\85\\-71.28906\\-283.4458\\85\\-73.24219\\-282.8737\\85\\-75.19531\\-281.8409\\85\\-77.14844\\-281.2021\\85\\-79.10156\\-280.3592\\85\\-81.05469\\-279.4056\\85\\-83.00781\\-278.5572\\85\\-84.96094\\-277.5016\\85\\-86.91406\\-276.8718\\85\\-88.86719\\-275.8595\\85\\-90.82031\\-275.2812\\85\\-96.67969\\-272.576\\85\\-98.63281\\-271.5361\\85\\-102.5391\\-269.6423\\85\\-104.4922\\-268.7511\\85\\-108.0097\\-266.6641\\85\\-110.3516\\-265.2185\\85\\-112.3047\\-263.8339\\85\\-116.2109\\-261.3657\\85\\-118.1641\\-259.7667\\85\\-120.1172\\-258.0448\\85\\-121.6426\\-256.8984\\85\\-124.0234\\-254.7758\\85\\-127.7328\\-251.0391\\85\\-129.8828\\-248.7347\\85\\-131.0922\\-247.1328\\85\\-134.5048\\-243.2266\\85\\-135.9233\\-241.2734\\85\\-136.995\\-239.3203\\85\\-138.3836\\-237.3672\\85\\-140.6905\\-233.4609\\85\\-141.7605\\-231.5078\\85\\-142.5721\\-229.5547\\85\\-143.2559\\-227.6016\\85\\-144.2308\\-225.6484\\85\\-144.7754\\-223.6953\\85\\-145.7072\\-221.7422\\85\\-146.3867\\-219.7891\\85\\-146.9124\\-217.8359\\85\\-147.6772\\-215.8828\\85\\-148.1375\\-213.9297\\85\\-149.0815\\-208.0703\\85\\-149.5303\\-206.1172\\85\\-149.8756\\-204.1641\\85\\-150.2307\\-200.2578\\85\\-150.3798\\-196.3516\\85\\-150.472\\-192.4453\\85\\-150.4877\\-188.5391\\85\\-150.3688\\-182.6797\\85\\-150.1872\\-178.7734\\85\\-149.8518\\-174.8672\\85\\-149.1847\\-170.9609\\85\\-148.3846\\-165.1016\\85\\-147.7732\\-161.1953\\85\\-147.1332\\-159.2422\\85\\-146.2325\\-155.3359\\85\\-145.6432\\-153.3828\\85\\-144.8435\\-151.4297\\85\\-144.4279\\-149.4766\\85\\-143.8757\\-147.5234\\85\\-143.0369\\-145.5703\\85\\-142.1279\\-141.6641\\85\\-141.2604\\-139.7109\\85\\-139.8354\\-135.8047\\85\\-138.7716\\-133.8516\\85\\-138.0796\\-131.8984\\85\\-137.0889\\-129.9453\\85\\-136.5591\\-127.9922\\85\\-135.5794\\-126.0391\\85\\-134.7239\\-124.0859\\85\\-132.6231\\-120.1797\\85\\-131.368\\-118.2266\\85\\-130.5191\\-116.2734\\85\\-129.2657\\-114.3203\\85\\-128.216\\-112.3672\\85\\-125.9766\\-109.3265\\85\\-124.0234\\-107.0441\\85\\-121.6986\\-104.5547\\85\\-120.1172\\-103.0831\\85\\-118.1641\\-101.4283\\85\\-116.2109\\-99.95089\\85\\-114.2578\\-98.57324\\85\\-110.3516\\-96.05793\\85\\-106.4453\\-93.96178\\85\\-104.4922\\-93.19304\\85\\-102.5391\\-92.04282\\85\\-100.5859\\-91.11137\\85\\-98.63281\\-89.97921\\85\\-94.72656\\-88.10631\\85\\-92.77344\\-87.53362\\85\\-90.82031\\-86.67446\\85\\-86.91406\\-85.59464\\85\\-83.00781\\-84.35938\\85\\-79.10156\\-83.57414\\85\\-75.19531\\-82.66507\\85\\-73.24219\\-82.39232\\85\\-69.33594\\-82.00777\\85\\-63.47656\\-81.56738\\85\\-57.61719\\-81.20524\\85\\-55.66406\\-81.12547\\85\\-49.80469\\-81.18923\\85\\-45.89844\\-81.56626\\85\\-36.13281\\-82.34716\\85\\-32.22656\\-82.57875\\85\\-30.27344\\-82.62216\\85\\-26.36719\\-82.58203\\85\\-20.50781\\-82.40085\\85\\-4.882813\\-82.27075\\85\\0.9765625\\-82.39661\\85\\12.69531\\-81.80463\\85\\16.60156\\-81.58839\\85\\18.55469\\-81.34018\\85\\22.46094\\-81.18983\\85\\28.32031\\-81.2204\\85\\32.22656\\-81.27995\\85\\40.03906\\-81.0765\\85\\47.85156\\-81.06116\\85\\53.71094\\-81.23438\\85\\59.57031\\-81.51479\\85\\69.33594\\-82.08205\\85\\73.24219\\-82.40085\\85\\75.19531\\-82.68642\\85\\79.10156\\-83.59902\\85\\81.05469\\-83.90179\\85\\84.96094\\-84.77251\\85\\86.91406\\-85.48938\\85\\90.82031\\-86.35947\\85\\94.72656\\-87.69188\\85\\96.67969\\-88.09351\\85\\98.63281\\-88.72686\\85\\100.5859\\-89.66355\\85\\102.5391\\-90.38217\\85\\104.4922\\-91.56888\\85\\106.4453\\-92.44659\\85\\108.3984\\-93.62102\\85\\110.3516\\-94.52203\\85\\113.7376\\-96.74219\\85\\118.1641\\-100.1232\\85\\120.9925\\-102.6016\\85\\122.8966\\-104.5547\\85\\126.0447\\-108.4609\\85\\128.7748\\-112.3672\\85\\130.8884\\-116.2734\\85\\132.0818\\-118.2266\\85\\133.0717\\-120.1797\\85\\134.2929\\-122.1328\\85\\135.0598\\-124.0859\\85\\136.1172\\-126.0391\\85\\136.7655\\-127.9922\\85\\137.5504\\-129.9453\\85\\138.4943\\-131.8984\\85\\139.1982\\-133.8516\\85\\140.2278\\-135.8047\\85\\140.839\\-137.7578\\85\\141.6406\\-139.7109\\85\\142.3157\\-141.6641\\85\\143.1489\\-145.5703\\85\\143.8893\\-147.5234\\85\\144.3455\\-149.4766\\85\\144.652\\-151.4297\\85\\145.0703\\-153.3828\\85\\145.6948\\-155.3359\\85\\146.1025\\-157.2891\\85\\146.6533\\-161.1953\\85\\147.6772\\-167.0547\\85\\147.915\\-169.0078\\85\\148.2776\\-174.8672\\85\\148.4433\\-180.7266\\85\\148.4666\\-186.5859\\85\\148.3503\\-192.4453\\85\\148.1061\\-198.3047\\85\\147.7843\\-202.2109\\85\\147.4988\\-204.1641\\85\\146.8155\\-208.0703\\85\\146.3022\\-211.9766\\85\\145.9635\\-213.9297\\85\\144.7991\\-217.8359\\85\\144.3864\\-219.7891\\85\\143.8642\\-221.7422\\85\\143.0107\\-223.6953\\85\\142.4877\\-225.6484\\85\\141.6409\\-227.6016\\85\\140.5611\\-229.5547\\85\\139.2327\\-231.5078\\85\\138.1718\\-233.4609\\85\\136.807\\-235.4141\\85\\135.7422\\-237.0811\\85\\134.1384\\-239.3203\\85\\131.8359\\-241.9269\\85\\128.6029\\-245.1797\\85\\125.9766\\-247.5137\\85\\123.9926\\-249.0859\\85\\122.0703\\-250.363\\85\\121.251\\-251.0391\\85\\118.4043\\-252.9922\\85\\114.2578\\-255.7559\\85\\112.3047\\-256.7188\\85\\110.3516\\-257.8689\\85\\108.3984\\-259.1659\\85\\106.4453\\-260.1804\\85\\104.4922\\-261.4793\\85\\102.5391\\-262.4127\\85\\100.5859\\-263.5617\\85\\98.63281\\-264.5202\\85\\96.67969\\-265.78\\85\\94.72656\\-267.1584\\85\\92.77344\\-268.1721\\85\\90.82031\\-269.4196\\85\\88.86719\\-270.4815\\85\\86.91406\\-271.6572\\85\\84.96094\\-273.1353\\85\\82.79639\\-274.4766\\85\\79.49829\\-276.4297\\85\\77.14844\\-277.7465\\85\\75.19531\\-279.2112\\85\\73.24219\\-280.4495\\85\\71.28906\\-281.4547\\85\\69.33594\\-282.6641\\85\\67.38281\\-283.4644\\85\\65.42969\\-284.7397\\85\\63.47656\\-285.6632\\85\\61.52344\\-286.8913\\85\\59.57031\\-287.7137\\85\\57.61719\\-288.8058\\85\\55.66406\\-289.3472\\85\\53.71094\\-290.4678\\85\\51.75781\\-291.1849\\85\\49.80469\\-292.2163\\85\\45.89844\\-293.6845\\85\\43.94531\\-294.5703\\85\\40.03906\\-295.4661\\85\\38.08594\\-296.2748\\85\\36.13281\\-296.7852\\85\\34.17969\\-297.1575\\85\\32.22656\\-297.7599\\85\\30.27344\\-298.4837\\85\\26.36719\\-299.2033\\85\\22.46094\\-300.224\\85\\20.50781\\-300.4938\\85\\16.60156\\-300.8438\\85\\10.74219\\-301.2409\\85\\6.835938\\-301.4584\\85\\2.929688\\-301.5944\\85\\-0.9765625\\-301.6489\\85\\-6.835938\\-301.4337\\85\\-10.74219\\-301.21\\85\\-16.60156\\-300.7484\\85\\-20.50781\\-300.3759\\85"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002258"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "267"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "169"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-300.1377\\87\\-24.41406\\-299.6009\\87\\-26.36719\\-299.1719\\87\\-30.27344\\-298.4989\\87\\-34.17969\\-297.2244\\87\\-38.08594\\-296.4428\\87\\-40.03906\\-295.6216\\87\\-43.94531\\-294.7476\\87\\-45.89844\\-294.1196\\87\\-47.85156\\-293.2635\\87\\-49.80469\\-292.6795\\87\\-51.75781\\-291.6885\\87\\-55.66406\\-290.2655\\87\\-57.61719\\-289.3381\\87\\-59.57031\\-288.8389\\87\\-61.52344\\-287.8866\\87\\-63.47656\\-287.1064\\87\\-65.42969\\-286.218\\87\\-67.38281\\-285.2238\\87\\-69.33594\\-284.3776\\87\\-71.28906\\-283.3993\\87\\-73.24219\\-282.7971\\87\\-75.19531\\-281.7135\\87\\-77.14844\\-281.0903\\87\\-79.10156\\-280.1057\\87\\-81.05469\\-279.2354\\87\\-83.00781\\-278.1831\\87\\-86.91406\\-276.515\\87\\-88.86719\\-275.623\\87\\-90.82031\\-275.0169\\87\\-92.77344\\-273.9456\\87\\-94.72656\\-273.18\\87\\-96.67969\\-272.0164\\87\\-98.63281\\-271.196\\87\\-100.5859\\-270.0206\\87\\-102.5391\\-269.3512\\87\\-104.4922\\-268.1764\\87\\-106.4453\\-267.2317\\87\\-108.3984\\-265.8463\\87\\-110.3516\\-264.6051\\87\\-112.3047\\-263.4805\\87\\-114.2578\\-262.0696\\87\\-116.2009\\-260.8047\\87\\-118.1641\\-259.3156\\87\\-118.6382\\-258.8516\\87\\-121.0861\\-256.8984\\87\\-124.0234\\-254.2129\\87\\-125.126\\-252.9922\\87\\-127.1605\\-251.0391\\87\\-129.8828\\-248.2016\\87\\-130.7055\\-247.1328\\87\\-134.0714\\-243.2266\\87\\-135.7422\\-240.7852\\87\\-137.989\\-237.3672\\87\\-139.0118\\-235.4141\\87\\-140.3531\\-233.4609\\87\\-141.2495\\-231.5078\\87\\-142.3135\\-229.5547\\87\\-142.8805\\-227.6016\\87\\-143.8546\\-225.6484\\87\\-145.1643\\-221.7422\\87\\-146.0938\\-219.7891\\87\\-146.5971\\-217.8359\\87\\-147.8657\\-213.9297\\87\\-148.2641\\-211.9766\\87\\-148.7949\\-208.0703\\87\\-149.5\\-204.1641\\87\\-149.9949\\-200.2578\\87\\-150.2125\\-196.3516\\87\\-150.2963\\-192.4453\\87\\-150.3074\\-188.5391\\87\\-150.173\\-182.6797\\87\\-149.9221\\-178.7734\\87\\-149.7206\\-176.8203\\87\\-148.8701\\-170.9609\\87\\-148.2081\\-165.1016\\87\\-147.8758\\-163.1484\\87\\-147.4609\\-161.3348\\87\\-146.8622\\-159.2422\\87\\-146.041\\-155.3359\\87\\-145.2884\\-153.3828\\87\\-144.6896\\-151.4297\\87\\-144.2803\\-149.4766\\87\\-142.9099\\-145.5703\\87\\-142.4953\\-143.6172\\87\\-141.9585\\-141.6641\\87\\-141.0496\\-139.7109\\87\\-140.4202\\-137.7578\\87\\-138.631\\-133.8516\\87\\-137.8569\\-131.8984\\87\\-136.9371\\-129.9453\\87\\-136.3867\\-127.9922\\87\\-135.3277\\-126.0391\\87\\-134.5305\\-124.0859\\87\\-133.3971\\-122.1328\\87\\-132.4219\\-120.1797\\87\\-131.1455\\-118.2266\\87\\-130.3161\\-116.2734\\87\\-127.9297\\-112.4415\\87\\-125.9766\\-109.7004\\87\\-124.0234\\-107.3505\\87\\-121.3718\\-104.5547\\87\\-118.1641\\-101.7047\\87\\-116.2109\\-100.2535\\87\\-110.3516\\-96.34725\\87\\-108.3984\\-95.38151\\87\\-106.4453\\-94.18452\\87\\-104.4922\\-93.48914\\87\\-102.5391\\-92.30379\\87\\-100.5859\\-91.50896\\87\\-98.63281\\-90.27687\\87\\-96.67969\\-89.51686\\87\\-94.72656\\-88.39258\\87\\-92.77344\\-87.81451\\87\\-88.86719\\-86.37978\\87\\-84.96094\\-85.46256\\87\\-83.00781\\-84.76257\\87\\-81.05469\\-84.27181\\87\\-77.14844\\-83.57738\\87\\-73.24219\\-82.77037\\87\\-71.28906\\-82.47672\\87\\-69.33594\\-82.28535\\87\\-65.42969\\-82.02661\\87\\-61.52344\\-81.83376\\87\\-55.66406\\-81.61572\\87\\-49.80469\\-81.62582\\87\\-45.89844\\-81.92028\\87\\-40.03906\\-82.25344\\87\\-34.17969\\-82.71456\\87\\-32.22656\\-82.80848\\87\\-28.32031\\-82.78635\\87\\-22.46094\\-82.53352\\87\\-20.50781\\-82.48948\\87\\-14.64844\\-82.50391\\87\\-8.789063\\-82.45521\\87\\-4.882813\\-82.50391\\87\\-0.9765625\\-82.74247\\87\\0.9765625\\-82.78017\\87\\2.929688\\-82.68105\\87\\4.882813\\-82.45248\\87\\10.74219\\-82.08147\\87\\16.60156\\-81.78303\\87\\20.50781\\-81.52055\\87\\26.36719\\-81.38011\\87\\32.22656\\-81.54269\\87\\38.08594\\-81.50639\\87\\45.89844\\-81.49498\\87\\53.71094\\-81.60883\\87\\65.42969\\-82.0761\\87\\71.28906\\-82.45057\\87\\73.24219\\-82.71957\\87\\77.14844\\-83.54591\\87\\81.05469\\-84.15977\\87\\83.00781\\-84.62421\\87\\84.96094\\-85.28339\\87\\86.91406\\-85.78549\\87\\88.86719\\-86.16741\\87\\90.82031\\-86.67662\\87\\92.77344\\-87.4445\\87\\96.67969\\-88.33218\\87\\98.63281\\-89.25291\\87\\100.5859\\-89.96021\\87\\102.572\\-90.88281\\87\\110.045\\-94.78906\\87\\112.3047\\-96.10644\\87\\114.2578\\-97.56557\\87\\116.2109\\-99.19478\\87\\118.1641\\-100.6399\\87\\120.1172\\-102.2182\\87\\122.4685\\-104.5547\\87\\125.9766\\-108.9413\\87\\128.5077\\-112.3672\\87\\131.8359\\-118.4159\\87\\134.0176\\-122.1328\\87\\134.8709\\-124.0859\\87\\135.8446\\-126.0391\\87\\136.6283\\-127.9922\\87\\137.2369\\-129.9453\\87\\138.2915\\-131.8984\\87\\138.9327\\-133.8516\\87\\139.9524\\-135.8047\\87\\141.2495\\-139.7109\\87\\142.0866\\-141.6641\\87\\142.8931\\-145.5703\\87\\144.1033\\-149.4766\\87\\144.7672\\-153.3828\\87\\145.2026\\-155.3359\\87\\145.7784\\-157.2891\\87\\146.1283\\-159.2422\\87\\146.9105\\-165.1016\\87\\147.528\\-169.0078\\87\\147.9179\\-172.9141\\87\\148.0504\\-174.8672\\87\\148.2179\\-180.7266\\87\\148.2108\\-188.5391\\87\\148.0336\\-194.3984\\87\\147.9274\\-196.3516\\87\\147.5423\\-200.2578\\87\\146.9757\\-204.1641\\87\\146.2736\\-210.0234\\87\\145.9815\\-211.9766\\87\\144.8938\\-215.8828\\87\\144.1101\\-219.7891\\87\\143.3253\\-221.7422\\87\\142.2167\\-225.6484\\87\\141.1197\\-227.6016\\87\\140.2074\\-229.5547\\87\\138.8318\\-231.5078\\87\\136.4859\\-235.4141\\87\\133.7891\\-238.966\\87\\131.8359\\-241.2646\\87\\129.8828\\-243.32\\87\\127.9561\\-245.1797\\87\\124.0234\\-248.4834\\87\\122.0703\\-249.972\\87\\120.1172\\-251.3513\\87\\118.1641\\-252.5514\\87\\114.2578\\-255.3402\\87\\112.3047\\-256.2584\\87\\110.3516\\-257.5169\\87\\108.3984\\-258.5236\\87\\107.9839\\-258.8516\\87\\104.8664\\-260.8047\\87\\104.4922\\-261.1035\\87\\102.5391\\-262.0612\\87\\100.5859\\-263.328\\87\\98.63281\\-264.1959\\87\\97.97894\\-264.7109\\87\\94.72656\\-266.9249\\87\\92.77344\\-268.01\\87\\90.82031\\-269.3257\\87\\88.86719\\-270.3224\\87\\86.91406\\-271.5848\\87\\84.96094\\-273.0878\\87\\79.10156\\-276.7623\\87\\77.14844\\-277.8072\\87\\76.45313\\-278.3828\\87\\73.24219\\-280.5457\\87\\71.28906\\-281.5191\\87\\69.33594\\-282.7466\\87\\67.38281\\-283.5532\\87\\65.42969\\-284.8436\\87\\63.47656\\-285.8141\\87\\61.52344\\-286.9967\\87\\59.57031\\-287.8684\\87\\57.61719\\-288.9135\\87\\55.66406\\-289.4565\\87\\53.71094\\-290.6252\\87\\51.75781\\-291.3022\\87\\49.80469\\-292.4115\\87\\47.85156\\-293.0866\\87\\43.94531\\-294.669\\87\\40.03906\\-295.5608\\87\\38.08594\\-296.4201\\87\\34.17969\\-297.25\\87\\30.27344\\-298.5668\\87\\26.36719\\-299.3067\\87\\22.46094\\-300.2979\\87\\18.55469\\-300.721\\87\\10.74219\\-301.299\\87\\6.835938\\-301.5302\\87\\0.9765625\\-301.735\\87\\-2.929688\\-301.6906\\87\\-6.835938\\-301.5064\\87\\-10.74219\\-301.2669\\87\\-16.60156\\-300.7986\\87\\-20.50781\\-300.4359\\87"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002257"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "275"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "170"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.9765625\\-301.8441\\89\\-4.882813\\-301.705\\89\\-10.74219\\-301.3254\\89\\-14.64844\\-301.0186\\89\\-20.50781\\-300.4897\\89\\-22.46094\\-300.224\\89\\-26.36719\\-299.2667\\89\\-30.27344\\-298.5804\\89\\-32.22656\\-298.0226\\89\\-34.17969\\-297.3189\\89\\-38.08594\\-296.5577\\89\\-40.03906\\-295.7746\\89\\-41.99219\\-295.2149\\89\\-43.94531\\-294.8138\\89\\-45.89844\\-294.2537\\89\\-47.85156\\-293.3475\\89\\-49.80469\\-292.7552\\89\\-51.75781\\-291.7902\\89\\-55.66406\\-290.3525\\89\\-57.61719\\-289.3647\\89\\-59.57031\\-288.8716\\89\\-61.52344\\-287.9258\\89\\-63.47656\\-287.1167\\89\\-67.38281\\-285.2137\\89\\-71.28906\\-283.3644\\89\\-73.24219\\-282.7086\\89\\-75.19531\\-281.6318\\89\\-77.14844\\-280.981\\89\\-79.10156\\-279.8886\\89\\-81.05469\\-279.0743\\89\\-83.00781\\-277.9107\\89\\-84.96094\\-277.1577\\89\\-86.91406\\-276.1331\\89\\-90.82031\\-274.6763\\89\\-92.77344\\-273.6152\\89\\-94.72656\\-272.7709\\89\\-96.67969\\-271.6352\\89\\-98.63281\\-270.7379\\89\\-100.5859\\-269.7003\\89\\-102.5391\\-268.9834\\89\\-103.0525\\-268.6172\\89\\-106.4347\\-266.6641\\89\\-109.5133\\-264.7109\\89\\-110.3516\\-264.0576\\89\\-112.3047\\-263.0096\\89\\-114.2578\\-261.7182\\89\\-118.1641\\-258.6406\\89\\-120.1172\\-257.231\\89\\-122.0703\\-255.608\\89\\-124.0234\\-253.7194\\89\\-124.6564\\-252.9922\\89\\-126.6972\\-251.0391\\89\\-128.6303\\-249.0859\\89\\-130.3779\\-247.1328\\89\\-131.8359\\-245.2413\\89\\-133.7891\\-242.8411\\89\\-136.3866\\-239.3203\\89\\-137.4283\\-237.3672\\89\\-139.9227\\-233.4609\\89\\-140.849\\-231.5078\\89\\-141.9599\\-229.5547\\89\\-143.3218\\-225.6484\\89\\-144.2423\\-223.6953\\89\\-144.7939\\-221.7422\\89\\-145.6835\\-219.7891\\89\\-146.3092\\-217.8359\\89\\-146.8042\\-215.8828\\89\\-148.0076\\-211.9766\\89\\-148.3271\\-210.0234\\89\\-149.0532\\-204.1641\\89\\-149.6302\\-200.2578\\89\\-149.9602\\-196.3516\\89\\-150.0916\\-192.4453\\89\\-150.0873\\-188.5391\\89\\-149.9821\\-184.6328\\89\\-149.7348\\-180.7266\\89\\-149.0221\\-174.8672\\89\\-148.4726\\-169.0078\\89\\-148.0008\\-165.1016\\89\\-147.5974\\-163.1484\\89\\-147.0588\\-161.1953\\89\\-146.2634\\-157.2891\\89\\-145.7784\\-155.3359\\89\\-145.0195\\-153.3828\\89\\-144.1239\\-149.4766\\89\\-143.3519\\-147.5234\\89\\-142.7844\\-145.5703\\89\\-142.3816\\-143.6172\\89\\-141.7558\\-141.6641\\89\\-140.8734\\-139.7109\\89\\-140.2794\\-137.7578\\89\\-139.2263\\-135.8047\\89\\-138.5065\\-133.8516\\89\\-137.5492\\-131.8984\\89\\-136.7772\\-129.9453\\89\\-136.1677\\-127.9922\\89\\-135.1061\\-126.0391\\89\\-134.3515\\-124.0859\\89\\-133.1648\\-122.1328\\89\\-132.2253\\-120.1797\\89\\-130.9606\\-118.2266\\89\\-130.0456\\-116.2734\\89\\-128.875\\-114.3203\\89\\-126.2139\\-110.4141\\89\\-124.0234\\-107.7067\\89\\-122.9626\\-106.5078\\89\\-121.008\\-104.5547\\89\\-118.1641\\-102.0074\\89\\-116.2109\\-100.6234\\89\\-114.2578\\-99.3624\\89\\-113.3807\\-98.69531\\89\\-110.3516\\-96.68569\\89\\-108.3984\\-95.62347\\89\\-106.4453\\-94.44135\\89\\-104.4922\\-93.68104\\89\\-102.5391\\-92.6365\\89\\-100.5859\\-91.79671\\89\\-98.63281\\-90.66344\\89\\-96.67969\\-89.82629\\89\\-94.72656\\-88.80762\\89\\-92.77344\\-88.04021\\89\\-90.82031\\-87.57186\\89\\-88.86719\\-86.73785\\89\\-86.91406\\-86.17601\\89\\-84.96094\\-85.79198\\89\\-83.00781\\-85.30144\\89\\-81.05469\\-84.66431\\89\\-79.10156\\-84.22289\\89\\-73.24219\\-83.31445\\89\\-71.28906\\-82.90144\\89\\-69.33594\\-82.61502\\89\\-65.42969\\-82.30737\\89\\-59.57031\\-82.0331\\89\\-53.71094\\-81.93725\\89\\-49.80469\\-81.96774\\89\\-43.94531\\-82.23591\\89\\-40.03906\\-82.48566\\89\\-34.17969\\-83.00165\\89\\-32.22656\\-83.07813\\89\\-30.27344\\-83.0476\\89\\-22.46094\\-82.68375\\89\\-18.55469\\-82.6623\\89\\-16.60156\\-82.71456\\89\\-8.789063\\-82.7401\\89\\-4.882813\\-82.91256\\89\\-0.9765625\\-83.33405\\89\\0.9765625\\-83.4073\\89\\2.929688\\-83.27007\\89\\6.835938\\-82.67826\\89\\8.789063\\-82.45667\\89\\12.69531\\-82.13647\\89\\18.55469\\-81.83376\\89\\26.36719\\-81.61225\\89\\28.32031\\-81.69662\\89\\34.17969\\-81.79953\\89\\40.03906\\-81.79518\\89\\51.75781\\-81.88493\\89\\55.66406\\-81.93798\\89\\65.42969\\-82.28062\\89\\67.38281\\-82.40897\\89\\71.28906\\-82.80657\\89\\75.19531\\-83.58659\\89\\79.10156\\-84.13515\\89\\81.05469\\-84.49807\\89\\84.96094\\-85.64053\\89\\88.86719\\-86.45119\\89\\90.82031\\-87.13932\\89\\92.77344\\-87.7292\\89\\94.72656\\-88.11282\\89\\96.67969\\-88.70034\\89\\98.63281\\-89.62638\\89\\100.5859\\-90.25259\\89\\102.5391\\-91.39982\\89\\104.4922\\-92.20647\\89\\106.4453\\-93.39111\\89\\108.3984\\-94.16222\\89\\110.3516\\-95.40113\\89\\112.3047\\-96.52764\\89\\115.2182\\-98.69531\\89\\120.1172\\-102.7683\\89\\121.875\\-104.5547\\89\\124.0234\\-107.0003\\89\\125.9766\\-109.3688\\89\\128.1626\\-112.3672\\89\\129.243\\-114.3203\\89\\130.5106\\-116.2734\\89\\131.3712\\-118.2266\\89\\132.6319\\-120.1797\\89\\134.6866\\-124.0859\\89\\135.5128\\-126.0391\\89\\136.4588\\-127.9922\\89\\137.0099\\-129.9453\\89\\138.0251\\-131.8984\\89\\138.6976\\-133.8516\\89\\140.3835\\-137.7578\\89\\140.9486\\-139.7109\\89\\141.7569\\-141.6641\\89\\142.343\\-143.6172\\89\\143.0697\\-147.5234\\89\\143.7515\\-149.4766\\89\\144.2303\\-151.4297\\89\\144.8474\\-155.3359\\89\\145.2516\\-157.2891\\89\\145.7896\\-159.2422\\89\\146.1317\\-161.1953\\89\\147.528\\-172.9141\\89\\147.832\\-176.8203\\89\\147.9492\\-180.7266\\89\\147.9616\\-184.6328\\89\\147.9179\\-188.5391\\89\\147.6632\\-194.3984\\89\\146.2061\\-208.0703\\89\\145.9358\\-210.0234\\89\\144.9421\\-213.9297\\89\\144.2603\\-217.8359\\89\\143.6546\\-219.7891\\89\\142.9396\\-221.7422\\89\\142.4988\\-223.6953\\89\\141.8275\\-225.6484\\89\\139.6866\\-229.5547\\89\\138.4938\\-231.5078\\89\\137.1173\\-233.4609\\89\\136.0899\\-235.4141\\89\\134.6214\\-237.3672\\89\\131.8359\\-240.5906\\89\\129.8828\\-242.7031\\89\\127.2714\\-245.1797\\89\\124.0234\\-248.0378\\89\\122.0703\\-249.592\\89\\120.1172\\-250.682\\89\\118.1641\\-252.0811\\89\\116.2109\\-253.5858\\89\\114.2578\\-254.7048\\89\\112.3047\\-255.9409\\89\\110.3516\\-257.0739\\89\\108.3984\\-258.0913\\89\\106.4453\\-259.4687\\89\\100.9663\\-262.7578\\89\\98.63281\\-263.9785\\89\\96.67969\\-265.4076\\89\\92.77344\\-267.8954\\89\\90.82031\\-269.235\\89\\88.86719\\-270.2424\\89\\86.91406\\-271.5631\\89\\84.96094\\-273.0695\\89\\82.81653\\-274.4766\\89\\77.14844\\-277.9116\\89\\76.5822\\-278.3828\\89\\73.24219\\-280.6592\\89\\71.28906\\-281.6145\\89\\69.33594\\-282.8462\\89\\67.38281\\-283.66\\89\\65.42969\\-284.9561\\89\\63.47656\\-285.9727\\89\\61.52344\\-287.1078\\89\\57.61719\\-289.0037\\89\\55.66406\\-289.6133\\89\\53.71094\\-290.7654\\89\\51.75781\\-291.44\\89\\49.80469\\-292.5684\\89\\47.85156\\-293.2088\\89\\45.89844\\-294.0765\\89\\43.94531\\-294.7713\\89\\41.99219\\-295.1785\\89\\40.03906\\-295.7078\\89\\38.08594\\-296.5372\\89\\34.17969\\-297.3603\\89\\32.22656\\-298.1378\\89\\30.27344\\-298.6626\\89\\26.36719\\-299.4094\\89\\24.41406\\-299.9619\\89\\22.46094\\-300.3759\\89\\18.55469\\-300.7656\\89\\10.74219\\-301.3619\\89\\2.929688\\-301.8123\\89"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002256"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "262"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "171"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.882813\\-301.8123\\91\\-12.69531\\-301.2539\\91\\-20.50781\\-300.5575\\91\\-22.46094\\-300.3165\\91\\-24.41406\\-299.9194\\91\\-26.36719\\-299.391\\91\\-30.27344\\-298.6626\\91\\-32.22656\\-298.1959\\91\\-34.17969\\-297.4411\\91\\-38.08594\\-296.6405\\91\\-41.99219\\-295.2872\\91\\-43.94531\\-294.8961\\91\\-45.89844\\-294.3732\\91\\-47.85156\\-293.444\\91\\-49.80469\\-292.839\\91\\-51.75781\\-291.9039\\91\\-53.71094\\-291.1123\\91\\-55.66406\\-290.4421\\91\\-57.61719\\-289.404\\91\\-59.57031\\-288.9114\\91\\-65.42969\\-286.2479\\91\\-67.38281\\-285.2137\\91\\-69.33594\\-284.323\\91\\-71.28906\\-283.3296\\91\\-73.24219\\-282.6122\\91\\-75.19531\\-281.5673\\91\\-77.14844\\-280.8771\\91\\-79.10156\\-279.7219\\91\\-81.05469\\-278.9108\\91\\-83.00781\\-277.7022\\91\\-84.96094\\-276.9652\\91\\-86.91406\\-275.8726\\91\\-88.86719\\-275.2663\\91\\-92.77344\\-273.3363\\91\\-94.72656\\-272.2069\\91\\-96.67969\\-271.3305\\91\\-98.63281\\-270.1588\\91\\-100.5859\\-269.4603\\91\\-104.4922\\-267.398\\91\\-106.4453\\-266.0393\\91\\-108.3984\\-264.9986\\91\\-112.3047\\-262.3744\\91\\-114.2578\\-261.2829\\91\\-116.2109\\-259.7457\\91\\-120.1172\\-256.5387\\91\\-122.0703\\-255.0999\\91\\-125.9766\\-251.2005\\91\\-128.1494\\-249.0859\\91\\-131.2849\\-245.1797\\91\\-134.6071\\-241.2734\\91\\-135.9359\\-239.3203\\91\\-136.9978\\-237.3672\\91\\-138.3057\\-235.4141\\91\\-139.2831\\-233.4609\\91\\-140.5022\\-231.5078\\91\\-142.3693\\-227.6016\\91\\-142.9274\\-225.6484\\91\\-143.8779\\-223.6953\\91\\-145.0977\\-219.7891\\91\\-145.9811\\-217.8359\\91\\-146.988\\-213.9297\\91\\-147.6391\\-211.9766\\91\\-148.0614\\-210.0234\\91\\-148.345\\-208.0703\\91\\-149.1464\\-200.2578\\91\\-149.573\\-196.3516\\91\\-149.7838\\-192.4453\\91\\-149.7583\\-188.5391\\91\\-149.6019\\-184.6328\\91\\-149.0583\\-178.7734\\91\\-148.2641\\-169.0078\\91\\-147.7254\\-165.1016\\91\\-146.7823\\-161.1953\\91\\-146.0522\\-157.2891\\91\\-144.8103\\-153.3828\\91\\-144.4105\\-151.4297\\91\\-143.9116\\-149.4766\\91\\-143.1245\\-147.5234\\91\\-142.2546\\-143.6172\\91\\-140.7162\\-139.7109\\91\\-140.1217\\-137.7578\\91\\-139.0106\\-135.8047\\91\\-138.3805\\-133.8516\\91\\-137.3005\\-131.8984\\91\\-135.9882\\-127.9922\\91\\-134.9696\\-126.0391\\91\\-134.1836\\-124.0859\\91\\-132.9695\\-122.1328\\91\\-131.9598\\-120.1797\\91\\-129.7059\\-116.2734\\91\\-128.6814\\-114.3203\\91\\-124.3136\\-108.4609\\91\\-122.6273\\-106.5078\\91\\-120.6192\\-104.5547\\91\\-118.1641\\-102.3786\\91\\-115.767\\-100.6484\\91\\-114.2578\\-99.70872\\91\\-112.3047\\-98.28448\\91\\-108.3984\\-95.86267\\91\\-104.4922\\-93.8747\\91\\-102.5391\\-93.08383\\91\\-100.5859\\-92.04539\\91\\-98.63281\\-91.19012\\91\\-96.67969\\-90.10042\\91\\-94.72656\\-89.32705\\91\\-92.77344\\-88.27644\\91\\-90.82031\\-87.82872\\91\\-88.86719\\-87.23949\\91\\-86.91406\\-86.48828\\91\\-83.00781\\-85.69672\\91\\-81.05469\\-85.2098\\91\\-79.10156\\-84.58588\\91\\-77.14844\\-84.2389\\91\\-71.28906\\-83.45962\\91\\-67.38281\\-82.84606\\91\\-63.47656\\-82.49326\\91\\-59.57031\\-82.29998\\91\\-53.71094\\-82.17973\\91\\-49.80469\\-82.23236\\91\\-43.94531\\-82.49235\\91\\-41.99219\\-82.63554\\91\\-36.13281\\-83.16797\\91\\-32.22656\\-83.28811\\91\\-22.46094\\-82.90394\\91\\-18.55469\\-82.91727\\91\\-16.60156\\-83.03156\\91\\-10.74219\\-83.06244\\91\\-4.882813\\-83.46495\\91\\-2.929688\\-83.66235\\91\\0.9765625\\-83.85041\\91\\4.882813\\-83.54876\\91\\8.789063\\-82.87807\\91\\12.69531\\-82.32537\\91\\16.60156\\-82.05736\\91\\22.46094\\-81.84961\\91\\26.36719\\-81.81205\\91\\30.27344\\-81.84034\\91\\34.17969\\-81.94996\\91\\40.03906\\-81.95844\\91\\55.66406\\-82.15223\\91\\63.47656\\-82.42553\\91\\67.38281\\-82.74709\\91\\73.24219\\-83.64791\\91\\77.14844\\-84.14883\\91\\79.10156\\-84.46117\\91\\83.00781\\-85.56116\\91\\86.91406\\-86.30446\\91\\88.86719\\-86.83383\\91\\90.82031\\-87.52795\\91\\94.72656\\-88.3763\\91\\96.67969\\-89.21568\\91\\100.5859\\-90.66811\\91\\102.5391\\-91.76286\\91\\104.4922\\-92.58326\\91\\106.4453\\-93.68966\\91\\108.3984\\-94.5241\\91\\111.8503\\-96.74219\\91\\114.2578\\-98.40234\\91\\118.1641\\-101.5021\\91\\120.1172\\-103.2363\\91\\121.445\\-104.5547\\91\\124.0234\\-107.3933\\91\\126.421\\-110.4141\\91\\127.9297\\-112.6591\\91\\130.2464\\-116.2734\\91\\131.1051\\-118.2266\\91\\132.4086\\-120.1797\\91\\133.3307\\-122.1328\\91\\134.4883\\-124.0859\\91\\135.2209\\-126.0391\\91\\136.2508\\-127.9922\\91\\136.8343\\-129.9453\\91\\138.4797\\-133.8516\\91\\139.1304\\-135.8047\\91\\140.1034\\-137.7578\\91\\141.3196\\-141.6641\\91\\142.0963\\-143.6172\\91\\142.8162\\-147.5234\\91\\143.2482\\-149.4766\\91\\143.9006\\-151.4297\\91\\144.3021\\-153.3828\\91\\144.8702\\-157.2891\\91\\145.2516\\-159.2422\\91\\145.7784\\-161.1953\\91\\146.3225\\-165.1016\\91\\146.8727\\-170.9609\\91\\147.35\\-176.8203\\91\\147.5285\\-180.7266\\91\\147.5429\\-184.6328\\91\\147.4532\\-188.5391\\91\\147.1136\\-194.3984\\91\\146.5046\\-202.2109\\91\\146.1168\\-206.1172\\91\\145.8543\\-208.0703\\91\\144.9746\\-211.9766\\91\\144.3478\\-215.8828\\91\\143.9006\\-217.8359\\91\\143.1381\\-219.7891\\91\\142.2119\\-223.6953\\91\\140.4153\\-227.6016\\91\\139.0931\\-229.5547\\91\\138.0951\\-231.5078\\91\\136.7679\\-233.4609\\91\\135.7422\\-235.1776\\91\\134.1812\\-237.3672\\91\\132.4764\\-239.3203\\91\\129.8828\\-242.1777\\91\\126.7108\\-245.1797\\91\\124.0234\\-247.5596\\91\\121.9991\\-249.0859\\91\\120.1172\\-250.2367\\91\\118.1641\\-251.6838\\91\\116.2109\\-253.0156\\91\\114.2578\\-254.2345\\91\\112.3047\\-255.603\\91\\110.3516\\-256.5481\\91\\106.4453\\-259.0583\\91\\104.4922\\-260.1896\\91\\102.5391\\-261.5747\\91\\98.63281\\-263.8326\\91\\96.67969\\-265.2305\\91\\91.55054\\-268.6172\\91\\90.82031\\-269.184\\91\\88.86719\\-270.2159\\91\\86.91406\\-271.5631\\91\\84.96094\\-273.0952\\91\\82.89591\\-274.4766\\91\\81.05469\\-275.5813\\91\\79.10156\\-276.9009\\91\\77.14844\\-278.031\\91\\76.73592\\-278.3828\\91\\73.7894\\-280.3359\\91\\73.24219\\-280.7648\\91\\71.28906\\-281.7205\\91\\69.33594\\-282.938\\91\\67.38281\\-283.7838\\91\\65.42969\\-285.0643\\91\\63.46628\\-286.1953\\91\\59.57031\\-288.2638\\91\\57.61719\\-289.0952\\91\\55.66406\\-289.8093\\91\\53.71094\\-290.8879\\91\\51.75781\\-291.6102\\91\\49.80469\\-292.7005\\91\\47.85156\\-293.3364\\91\\45.89844\\-294.2659\\91\\43.94531\\-294.8608\\91\\41.99219\\-295.2625\\91\\38.08594\\-296.6479\\91\\36.13281\\-297.0202\\91\\34.17969\\-297.5093\\91\\32.22656\\-298.301\\91\\30.27344\\-298.763\\91\\28.32031\\-299.0932\\91\\24.41406\\-300.0789\\91\\22.46094\\-300.4359\\91\\18.55469\\-300.8157\\91\\14.64844\\-301.1423\\91\\8.789063\\-301.5423\\91\\6.835938\\-301.7203\\91\\2.929688\\-301.9203\\91\\0.9765625\\-301.9641\\91"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002255"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "269"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "172"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.835938\\-301.7965\\93\\-12.69531\\-301.3254\\93\\-18.55469\\-300.8154\\93\\-22.46094\\-300.4161\\93\\-24.41406\\-300.091\\93\\-26.36719\\-299.5352\\93\\-28.32031\\-299.0932\\93\\-32.22656\\-298.3394\\93\\-34.17969\\-297.5775\\93\\-36.13281\\-297.0985\\93\\-38.08594\\-296.7193\\93\\-40.03906\\-296.1459\\93\\-41.99219\\-295.3576\\93\\-45.89844\\-294.4961\\93\\-47.85156\\-293.569\\93\\-49.80469\\-292.9266\\93\\-53.71094\\-291.1817\\93\\-55.66406\\-290.5416\\93\\-57.61719\\-289.4693\\93\\-59.57031\\-288.9572\\93\\-65.42969\\-286.3046\\93\\-67.38281\\-285.2239\\93\\-71.28906\\-283.3124\\93\\-73.24219\\-282.5351\\93\\-75.19531\\-281.5162\\93\\-77.14844\\-280.7822\\93\\-79.10156\\-279.5869\\93\\-81.05469\\-278.7316\\93\\-83.00781\\-277.5482\\93\\-84.96094\\-276.7575\\93\\-86.91406\\-275.6973\\93\\-88.86719\\-275.0625\\93\\-90.82031\\-273.923\\93\\-92.77344\\-273.0599\\93\\-94.72656\\-271.8291\\93\\-96.67969\\-270.9924\\93\\-98.63281\\-269.8301\\93\\-100.5859\\-269.1456\\93\\-102.5391\\-267.926\\93\\-104.4922\\-266.9542\\93\\-108.3984\\-264.3539\\93\\-110.3516\\-263.2973\\93\\-114.0704\\-260.8047\\93\\-116.2109\\-259.2681\\93\\-121.518\\-254.9453\\93\\-125.9766\\-250.4862\\93\\-127.9297\\-248.6175\\93\\-132.5503\\-243.2266\\93\\-134.1673\\-241.2734\\93\\-135.353\\-239.3203\\93\\-136.6549\\-237.3672\\93\\-137.8581\\-235.4141\\93\\-138.8264\\-233.4609\\93\\-140.1144\\-231.5078\\93\\-140.9565\\-229.5547\\93\\-142.0181\\-227.6016\\93\\-143.32\\-223.6953\\93\\-144.1883\\-221.7422\\93\\-144.7188\\-219.7891\\93\\-146.168\\-215.8828\\93\\-147.1029\\-211.9766\\93\\-147.6787\\-210.0234\\93\\-148.0698\\-208.0703\\93\\-148.4904\\-204.1641\\93\\-148.8077\\-200.2578\\93\\-149.2128\\-194.3984\\93\\-149.2833\\-192.4453\\93\\-149.2551\\-188.5391\\93\\-149.1075\\-184.6328\\93\\-148.6292\\-176.8203\\93\\-148.2224\\-170.9609\\93\\-147.7619\\-167.0547\\93\\-146.882\\-163.1484\\93\\-146.2195\\-159.2422\\93\\-145.7784\\-157.2891\\93\\-145.0576\\-155.3359\\93\\-144.2562\\-151.4297\\93\\-142.9396\\-147.5234\\93\\-142.0866\\-143.6172\\93\\-141.2254\\-141.6641\\93\\-139.8976\\-137.7578\\93\\-138.8683\\-135.8047\\93\\-138.2379\\-133.8516\\93\\-137.1838\\-131.8984\\93\\-136.6096\\-129.9453\\93\\-135.8603\\-127.9922\\93\\-134.844\\-126.0391\\93\\-133.9686\\-124.0859\\93\\-131.8359\\-120.4487\\93\\-130.6603\\-118.2266\\93\\-129.3979\\-116.2734\\93\\-128.4419\\-114.3203\\93\\-127.9297\\-113.72\\93\\-124.0234\\-108.5743\\93\\-122.2591\\-106.5078\\93\\-120.1172\\-104.5025\\93\\-117.8757\\-102.6016\\93\\-115.2625\\-100.6484\\93\\-110.3516\\-97.48103\\93\\-108.3984\\-96.1144\\93\\-106.4453\\-95.2254\\93\\-104.4922\\-94.07591\\93\\-102.5391\\-93.41925\\93\\-100.5859\\-92.31319\\93\\-98.63281\\-91.55889\\93\\-96.67969\\-90.4199\\93\\-94.72656\\-89.67955\\93\\-92.77344\\-88.67987\\93\\-90.82031\\-88.04021\\93\\-88.86719\\-87.61683\\93\\-86.91406\\-86.92143\\93\\-84.96094\\-86.3882\\93\\-81.05469\\-85.63534\\93\\-77.14844\\-84.62906\\93\\-73.24219\\-84.06297\\93\\-61.52344\\-82.78226\\93\\-57.61719\\-82.54297\\93\\-53.71094\\-82.46886\\93\\-49.80469\\-82.54447\\93\\-47.85156\\-82.69207\\93\\-41.99219\\-83.03217\\93\\-40.03906\\-83.21088\\93\\-36.13281\\-83.43079\\93\\-32.22656\\-83.43895\\93\\-26.36719\\-83.22222\\93\\-22.46094\\-83.12414\\93\\-20.50781\\-83.12457\\93\\-16.60156\\-83.31799\\93\\-10.74219\\-83.40262\\93\\-6.835938\\-83.64151\\93\\-0.9765625\\-84.15977\\93\\0.9765625\\-84.25893\\93\\4.882813\\-83.94806\\93\\8.789063\\-83.47323\\93\\12.69531\\-82.61907\\93\\14.64844\\-82.37189\\93\\18.55469\\-82.09978\\93\\22.46094\\-81.96716\\93\\28.32031\\-81.91893\\93\\34.17969\\-82.06468\\93\\45.89844\\-82.20553\\93\\49.80469\\-82.29745\\93\\55.66406\\-82.37276\\93\\61.52344\\-82.63554\\93\\65.42969\\-82.98639\\93\\69.33594\\-83.52055\\93\\75.19531\\-84.17636\\93\\77.14844\\-84.47633\\93\\79.10156\\-84.90046\\93\\81.05469\\-85.50529\\93\\84.96094\\-86.19643\\93\\86.91406\\-86.61713\\93\\88.86719\\-87.32841\\93\\92.77344\\-88.18949\\93\\94.72656\\-88.80099\\93\\96.67969\\-89.61447\\93\\98.63281\\-90.23759\\93\\100.5859\\-91.24573\\93\\102.5391\\-92.0513\\93\\104.4922\\-93.11604\\93\\106.4453\\-93.93144\\93\\108.3984\\-95.0798\\93\\110.3516\\-96.11954\\93\\116.2109\\-100.313\\93\\118.1641\\-101.8932\\93\\120.9733\\-104.5547\\93\\122.833\\-106.5078\\93\\124.4685\\-108.4609\\93\\125.9766\\-110.4589\\93\\128.7381\\-114.3203\\93\\129.891\\-116.2734\\93\\130.8891\\-118.2266\\93\\132.0904\\-120.1797\\93\\133.0537\\-122.1328\\93\\134.2431\\-124.0859\\93\\134.9745\\-126.0391\\93\\135.9751\\-127.9922\\93\\136.6776\\-129.9453\\93\\137.2338\\-131.8984\\93\\138.2212\\-133.8516\\93\\138.8346\\-135.8047\\93\\140.435\\-139.7109\\93\\140.9409\\-141.6641\\93\\141.6855\\-143.6172\\93\\142.2422\\-145.5703\\93\\142.9099\\-149.4766\\93\\143.3806\\-151.4297\\93\\143.998\\-153.3828\\93\\144.3498\\-155.3359\\93\\144.8587\\-159.2422\\93\\145.2142\\-161.1953\\93\\145.6948\\-163.1484\\93\\146.0191\\-165.1016\\93\\146.5505\\-170.9609\\93\\146.7969\\-174.8672\\93\\146.9974\\-180.7266\\93\\146.9818\\-186.5859\\93\\146.7896\\-192.4453\\93\\146.4693\\-198.3047\\93\\146.2061\\-202.2109\\93\\146.0161\\-204.1641\\93\\145.7072\\-206.1172\\93\\144.9289\\-210.0234\\93\\144.394\\-213.9297\\93\\144.0206\\-215.8828\\93\\143.3253\\-217.8359\\93\\142.8284\\-219.7891\\93\\142.4395\\-221.7422\\93\\141.8013\\-223.6953\\93\\140.842\\-225.6484\\93\\140.0018\\-227.6016\\93\\138.6999\\-229.5547\\93\\137.5\\-231.5078\\93\\136.4682\\-233.4609\\93\\135.0754\\-235.4141\\93\\133.7891\\-237.0795\\93\\130.2545\\-241.2734\\93\\127.9297\\-243.642\\93\\123.7382\\-247.1328\\93\\121.2908\\-249.0859\\93\\120.1172\\-249.9381\\93\\116.2109\\-252.3958\\93\\114.2578\\-253.8635\\93\\112.3047\\-255.1513\\93\\110.3516\\-256.1913\\93\\108.3984\\-257.4893\\93\\106.4453\\-258.545\\93\\104.4922\\-259.8991\\93\\102.5391\\-261.3581\\93\\100.5859\\-262.363\\93\\91.47418\\-268.6172\\93\\90.82031\\-269.1505\\93\\88.86719\\-270.2014\\93\\86.91406\\-271.5905\\93\\84.96094\\-273.1385\\93\\83.00781\\-274.4847\\93\\81.05469\\-275.6179\\93\\79.10156\\-276.9944\\93\\76.89558\\-278.3828\\93\\73.24219\\-280.8749\\93\\71.28906\\-281.8324\\93\\69.33594\\-283.0351\\93\\67.38281\\-283.9357\\93\\66.99036\\-284.2422\\93\\63.47656\\-286.4191\\93\\61.52344\\-287.3479\\93\\59.57031\\-288.455\\93\\57.61719\\-289.1779\\93\\53.71094\\-290.9988\\93\\51.75781\\-291.8123\\93\\49.80469\\-292.8227\\93\\47.85156\\-293.4692\\93\\45.89844\\-294.431\\93\\43.94531\\-294.9432\\93\\41.99219\\-295.3537\\93\\40.03906\\-296.1459\\93\\38.08594\\-296.7476\\93\\36.13281\\-297.1189\\93\\34.17969\\-297.6822\\93\\32.22656\\-298.4442\\93\\28.32031\\-299.1999\\93\\24.41406\\-300.216\\93\\22.46094\\-300.4974\\93\\18.55469\\-300.884\\93\\14.64844\\-301.2179\\93\\8.789063\\-301.6489\\93\\6.835938\\-301.8441\\93\\0.9765625\\-302.0462\\93\\-2.929688\\-301.9918\\93"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002254"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "257"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "173"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.835938\\-301.9203\\95\\-18.55469\\-300.8954\\95\\-22.46094\\-300.5014\\95\\-24.41406\\-300.2263\\95\\-28.32031\\-299.2106\\95\\-32.22656\\-298.4682\\95\\-34.17969\\-297.7746\\95\\-36.13281\\-297.1897\\95\\-38.08594\\-296.7988\\95\\-40.03906\\-296.2979\\95\\-41.99219\\-295.4405\\95\\-45.89844\\-294.5913\\95\\-47.85156\\-293.7298\\95\\-51.75781\\-292.2904\\95\\-53.71094\\-291.2663\\95\\-55.66406\\-290.646\\95\\-57.61719\\-289.5555\\95\\-59.57031\\-288.9932\\95\\-61.52344\\-288.1563\\95\\-65.42969\\-286.3593\\95\\-67.38281\\-285.2392\\95\\-71.28906\\-283.3007\\95\\-73.24219\\-282.4798\\95\\-75.19531\\-281.4614\\95\\-77.14844\\-280.6818\\95\\-79.10156\\-279.4733\\95\\-81.05469\\-278.5049\\95\\-83.00781\\-277.4174\\95\\-86.91406\\-275.5623\\95\\-88.86719\\-274.8273\\95\\-90.82031\\-273.6646\\95\\-96.67969\\-270.4971\\95\\-100.5859\\-268.6572\\95\\-102.5391\\-267.5696\\95\\-104.4922\\-266.3133\\95\\-106.4453\\-265.2202\\95\\-108.3984\\-263.8909\\95\\-110.3516\\-262.7831\\95\\-112.3047\\-261.5642\\95\\-118.1641\\-257.1676\\95\\-120.1172\\-255.6645\\95\\-122.0703\\-253.9283\\95\\-124.0234\\-251.9275\\95\\-126.9601\\-249.0859\\95\\-128.8132\\-247.1328\\95\\-132.0237\\-243.2266\\95\\-133.7891\\-240.9419\\95\\-136.2755\\-237.3672\\95\\-137.2353\\-235.4141\\95\\-137.6953\\-234.7917\\95\\-140.5798\\-229.5547\\95\\-142.3618\\-225.6484\\95\\-142.9015\\-223.6953\\95\\-143.766\\-221.7422\\95\\-144.4221\\-219.7891\\95\\-144.9351\\-217.8359\\95\\-145.7435\\-215.8828\\95\\-146.288\\-213.9297\\95\\-147.1005\\-210.0234\\95\\-147.6534\\-208.0703\\95\\-148.0042\\-206.1172\\95\\-148.227\\-204.1641\\95\\-148.5387\\-200.2578\\95\\-148.7442\\-196.3516\\95\\-148.8832\\-192.4453\\95\\-148.8607\\-188.5391\\95\\-148.7609\\-184.6328\\95\\-148.3852\\-176.8203\\95\\-147.9523\\-170.9609\\95\\-147.6772\\-169.0078\\95\\-146.9124\\-165.1016\\95\\-146.3369\\-161.1953\\95\\-145.9726\\-159.2422\\95\\-144.8248\\-155.3359\\95\\-144.0677\\-151.4297\\95\\-143.3271\\-149.4766\\95\\-142.7965\\-147.5234\\95\\-142.4274\\-145.5703\\95\\-141.8615\\-143.6172\\95\\-141.024\\-141.6641\\95\\-140.4412\\-139.7109\\95\\-138.749\\-135.8047\\95\\-138.092\\-133.8516\\95\\-137.0939\\-131.8984\\95\\-136.5247\\-129.9453\\95\\-135.7422\\-128.1762\\95\\-133.7891\\-124.2603\\95\\-132.6138\\-122.1328\\95\\-131.358\\-120.1797\\95\\-130.4701\\-118.2266\\95\\-129.1743\\-116.2734\\95\\-128.1357\\-114.3203\\95\\-126.6589\\-112.3672\\95\\-125.0529\\-110.4141\\95\\-124.0234\\-109.0133\\95\\-121.7924\\-106.5078\\95\\-118.1641\\-103.237\\95\\-116.2109\\-101.6649\\95\\-114.2578\\-100.2679\\95\\-112.3047\\-99.21476\\95\\-108.3984\\-96.44009\\95\\-106.4453\\-95.50438\\95\\-104.4922\\-94.34645\\95\\-102.5391\\-93.65991\\95\\-100.5859\\-92.68625\\95\\-98.63281\\-91.83803\\95\\-94.72656\\-89.94509\\95\\-92.77344\\-89.2275\\95\\-90.82031\\-88.30334\\95\\-86.91406\\-87.39713\\95\\-84.96094\\-86.73785\\95\\-83.00781\\-86.28409\\95\\-79.10156\\-85.62769\\95\\-75.19531\\-84.70863\\95\\-73.24219\\-84.41237\\95\\-69.33594\\-83.9872\\95\\-63.47656\\-83.53625\\95\\-57.61719\\-83.03125\\95\\-53.71094\\-82.92648\\95\\-49.80469\\-83.0461\\95\\-45.89844\\-83.34042\\95\\-36.13281\\-83.61218\\95\\-32.22656\\-83.59155\\95\\-26.36719\\-83.37338\\95\\-22.46094\\-83.3005\\95\\-20.50781\\-83.31621\\95\\-16.60156\\-83.51072\\95\\-10.74219\\-83.66344\\95\\-6.835938\\-83.9114\\95\\-0.9765625\\-84.56646\\95\\0.9765625\\-84.69791\\95\\4.882813\\-84.36247\\95\\8.789063\\-83.87627\\95\\10.74219\\-83.56519\\95\\14.64844\\-82.6674\\95\\18.55469\\-82.24116\\95\\22.46094\\-82.0878\\95\\26.36719\\-82.02825\\95\\30.27344\\-82.0761\\95\\40.03906\\-82.31866\\95\\45.89844\\-82.39661\\95\\49.80469\\-82.5313\\95\\55.66406\\-82.6702\\95\\59.57031\\-82.94261\\95\\71.28906\\-84.04145\\95\\75.19531\\-84.51419\\95\\79.10156\\-85.42868\\95\\81.05469\\-85.82601\\95\\84.96094\\-86.50755\\95\\88.86719\\-87.66776\\95\\90.82031\\-88.01943\\95\\92.77344\\-88.47845\\95\\94.72656\\-89.30836\\95\\98.63281\\-90.65097\\95\\100.5859\\-91.63358\\95\\102.5391\\-92.38187\\95\\104.4922\\-93.4979\\95\\106.4453\\-94.22618\\95\\108.3984\\-95.49035\\95\\110.3516\\-96.54995\\95\\112.3047\\-97.91779\\95\\114.2578\\-99.42095\\95\\116.0432\\-100.6484\\95\\118.1641\\-102.3574\\95\\120.5252\\-104.5547\\95\\122.3881\\-106.5078\\95\\124.0234\\-108.4702\\95\\125.431\\-110.4141\\95\\128.4455\\-114.3203\\95\\129.4653\\-116.2734\\95\\130.6728\\-118.2266\\95\\131.8359\\-120.446\\95\\133.8852\\-124.0859\\95\\136.4699\\-129.9453\\95\\136.9614\\-131.8984\\95\\137.8439\\-133.8516\\95\\138.5651\\-135.8047\\95\\139.1509\\-137.7578\\95\\140.1217\\-139.7109\\95\\141.1968\\-143.6172\\95\\141.9271\\-145.5703\\95\\142.3792\\-147.5234\\95\\142.992\\-151.4297\\95\\144.0398\\-155.3359\\95\\144.337\\-157.2891\\95\\144.8103\\-161.1953\\95\\145.1133\\-163.1484\\95\\145.8646\\-167.0547\\95\\146.2402\\-170.9609\\95\\146.5355\\-176.8203\\95\\146.6097\\-180.7266\\95\\146.5981\\-186.5859\\95\\146.454\\-192.4453\\95\\146.1712\\-198.3047\\95\\145.8333\\-202.2109\\95\\145.1367\\-206.1172\\95\\144.4092\\-211.9766\\95\\144.1067\\-213.9297\\95\\142.9396\\-217.8359\\95\\142.59\\-219.7891\\95\\142.1384\\-221.7422\\95\\141.2311\\-223.6953\\95\\140.4926\\-225.6484\\95\\139.339\\-227.6016\\95\\138.3522\\-229.5547\\95\\137.0421\\-231.5078\\95\\136.0603\\-233.4609\\95\\134.6821\\-235.4141\\95\\129.8828\\-241.0102\\95\\127.7097\\-243.2266\\95\\125.9766\\-244.6007\\95\\122.0703\\-248.0117\\95\\120.1172\\-249.5285\\95\\118.1641\\-250.5723\\95\\114.2578\\-253.4647\\95\\112.3047\\-254.5946\\95\\108.3984\\-257.1407\\95\\106.4453\\-258.1902\\95\\102.5391\\-261.1112\\95\\100.5859\\-262.1603\\95\\98.63281\\-263.5885\\95\\94.72656\\-266.2322\\95\\91.45171\\-268.6172\\95\\90.82031\\-269.1366\\95\\88.86719\\-270.2374\\95\\86.91406\\-271.6352\\95\\84.96094\\-273.2058\\95\\83.00781\\-274.5938\\95\\81.05469\\-275.6571\\95\\79.10156\\-277.0914\\95\\75.19531\\-279.6006\\95\\73.24219\\-280.9766\\95\\71.28906\\-281.9586\\95\\69.33594\\-283.1186\\95\\67.38281\\-284.1259\\95\\65.42969\\-285.2901\\95\\63.47656\\-286.6022\\95\\61.52344\\-287.4756\\95\\59.57031\\-288.6132\\95\\57.61719\\-289.2671\\95\\55.66406\\-290.3148\\95\\53.71094\\-291.1126\\95\\49.80469\\-292.9301\\95\\47.85156\\-293.6392\\95\\45.89844\\-294.5524\\95\\41.99219\\-295.4727\\95\\40.03906\\-296.3422\\95\\38.08594\\-296.8377\\95\\36.13281\\-297.2205\\95\\32.22656\\-298.5598\\95\\28.32031\\-299.3298\\95\\26.36719\\-299.9048\\95\\24.41406\\-300.3285\\95\\18.55469\\-300.9607\\95\\6.835938\\-301.95\\95\\2.929688\\-302.1003\\95\\-0.9765625\\-302.1246\\95"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002253"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "265"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "174"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.789063\\-301.8906\\97\\-16.60156\\-301.1714\\97\\-22.46094\\-300.5941\\97\\-24.41406\\-300.3405\\97\\-26.36719\\-299.9194\\97\\-28.32031\\-299.3404\\97\\-32.22656\\-298.5841\\97\\-34.17969\\-298.0088\\97\\-36.13281\\-297.2988\\97\\-40.03906\\-296.4299\\97\\-41.99219\\-295.5853\\97\\-45.89844\\-294.689\\97\\-49.80469\\-293.1186\\97\\-51.75781\\-292.4636\\97\\-53.71094\\-291.377\\97\\-55.66406\\-290.7473\\97\\-57.61719\\-289.6534\\97\\-59.57031\\-289.0476\\97\\-61.52344\\-288.262\\97\\-63.47656\\-287.2673\\97\\-65.42969\\-286.4377\\97\\-67.38281\\-285.265\\97\\-71.28906\\-283.3011\\97\\-73.24219\\-282.4352\\97\\-75.19531\\-281.4137\\97\\-77.14844\\-280.5695\\97\\-77.44962\\-280.3359\\97\\-81.05469\\-278.2286\\97\\-83.00781\\-277.2835\\97\\-84.96094\\-276.2101\\97\\-86.91406\\-275.4233\\97\\-88.86719\\-274.5\\97\\-90.82031\\-273.433\\97\\-92.77344\\-272.1869\\97\\-94.72656\\-271.2771\\97\\-96.67969\\-270.0581\\97\\-98.63281\\-269.3257\\97\\-100.5859\\-268.1355\\97\\-102.5391\\-267.2087\\97\\-104.4922\\-265.8395\\97\\-108.3984\\-263.5478\\97\\-110.3516\\-262.2207\\97\\-112.3047\\-261.0784\\97\\-114.2578\\-259.6269\\97\\-118.1641\\-256.4972\\97\\-120.1172\\-255.0803\\97\\-122.0703\\-253.3547\\97\\-124.0234\\-251.3594\\97\\-125.9766\\-249.5023\\97\\-128.3014\\-247.1328\\97\\-131.3365\\-243.2266\\97\\-131.8359\\-242.6902\\97\\-134.493\\-239.3203\\97\\-135.7422\\-237.3331\\97\\-136.807\\-235.4141\\97\\-137.9902\\-233.4609\\97\\-138.9146\\-231.5078\\97\\-140.1614\\-229.5547\\97\\-140.9644\\-227.6016\\97\\-141.9825\\-225.6484\\97\\-143.1683\\-221.7422\\97\\-144.0618\\-219.7891\\97\\-145.0977\\-215.8828\\97\\-145.8589\\-213.9297\\97\\-146.3155\\-211.9766\\97\\-147.0535\\-208.0703\\97\\-147.5571\\-206.1172\\97\\-147.8886\\-204.1641\\97\\-148.11\\-202.2109\\97\\-148.379\\-198.3047\\97\\-148.5641\\-192.4453\\97\\-148.5387\\-186.5859\\97\\-148.4259\\-182.6797\\97\\-148.11\\-176.8203\\97\\-147.7865\\-172.9141\\97\\-147.5285\\-170.9609\\97\\-147.1713\\-169.0078\\97\\-146.0871\\-161.1953\\97\\-145.6163\\-159.2422\\97\\-144.998\\-157.2891\\97\\-144.3088\\-153.3828\\97\\-143.8024\\-151.4297\\97\\-143.0534\\-149.4766\\97\\-142.2833\\-145.5703\\97\\-140.8457\\-141.6641\\97\\-140.2903\\-139.7109\\97\\-139.3011\\-137.7578\\97\\-137.907\\-133.8516\\97\\-136.9504\\-131.8984\\97\\-136.3954\\-129.9453\\97\\-135.3644\\-127.9922\\97\\-134.5426\\-126.0391\\97\\-133.381\\-124.0859\\97\\-132.4066\\-122.1328\\97\\-131.1275\\-120.1797\\97\\-130.2228\\-118.2266\\97\\-127.9297\\-114.5894\\97\\-126.3401\\-112.3672\\97\\-124.0234\\-109.4453\\97\\-121.3414\\-106.5078\\97\\-120.1172\\-105.4585\\97\\-118.1641\\-103.6037\\97\\-116.2109\\-101.9574\\97\\-114.2036\\-100.6484\\97\\-112.3047\\-99.55293\\97\\-110.3516\\-98.11066\\97\\-108.1414\\-96.74219\\97\\-104.4922\\-94.73209\\97\\-102.5391\\-93.86743\\97\\-100.5859\\-93.15671\\97\\-98.63281\\-92.09267\\97\\-96.67969\\-91.37109\\97\\-94.72656\\-90.25711\\97\\-92.77344\\-89.58273\\97\\-90.82031\\-88.71875\\97\\-88.86719\\-88.08997\\97\\-86.91406\\-87.7185\\97\\-84.96094\\-87.24152\\97\\-83.00781\\-86.61713\\97\\-81.05469\\-86.23279\\97\\-77.14844\\-85.65605\\97\\-73.24219\\-84.888\\97\\-69.33594\\-84.34434\\97\\-61.52344\\-83.78838\\97\\-59.57031\\-83.68294\\97\\-53.71094\\-83.47556\\97\\-49.80469\\-83.55233\\97\\-47.85156\\-83.65146\\97\\-40.03906\\-83.73849\\97\\-32.22656\\-83.71564\\97\\-24.41406\\-83.47775\\97\\-20.50781\\-83.49068\\97\\-16.60156\\-83.67625\\97\\-12.69531\\-83.79559\\97\\-8.789063\\-83.99107\\97\\-6.835938\\-84.16473\\97\\-2.929688\\-84.74161\\97\\-0.9765625\\-85.13969\\97\\0.9765625\\-85.3157\\97\\2.929688\\-85.22626\\97\\6.835938\\-84.48571\\97\\8.789063\\-84.2456\\97\\12.69531\\-83.58123\\97\\16.60156\\-82.70324\\97\\18.55469\\-82.42578\\97\\22.46094\\-82.21358\\97\\28.32031\\-82.17023\\97\\34.17969\\-82.30216\\97\\47.85156\\-82.74479\\97\\53.71094\\-83.07806\\97\\55.66406\\-83.15295\\97\\63.47656\\-83.71554\\97\\67.38281\\-83.9705\\97\\73.24219\\-84.58736\\97\\77.14844\\-85.42868\\97\\83.00781\\-86.40033\\97\\86.91406\\-87.52423\\97\\90.82031\\-88.26385\\97\\94.72656\\-89.66639\\97\\96.67969\\-90.24921\\97\\98.63281\\-91.2263\\97\\100.5859\\-91.97205\\97\\106.4453\\-94.66997\\97\\108.3984\\-95.81001\\97\\112.3047\\-98.34209\\97\\115.4494\\-100.6484\\97\\118.1641\\-102.9168\\97\\119.9268\\-104.5547\\97\\121.8669\\-106.5078\\97\\124.0234\\-109.0081\\97\\125.0179\\-110.4141\\97\\126.6255\\-112.3672\\97\\128.0329\\-114.3203\\97\\129.1488\\-116.2734\\97\\130.3914\\-118.2266\\97\\131.2447\\-120.1797\\97\\132.5077\\-122.1328\\97\\133.4078\\-124.0859\\97\\134.4977\\-126.0391\\97\\135.2077\\-127.9922\\97\\136.1861\\-129.9453\\97\\137.346\\-133.8516\\97\\138.2857\\-135.8047\\97\\138.8152\\-137.7578\\97\\140.3689\\-141.6641\\97\\140.8347\\-143.6172\\97\\142.0898\\-147.5234\\97\\142.4515\\-149.4766\\97\\143.0466\\-153.3828\\97\\144.0272\\-157.2891\\97\\144.3239\\-159.2422\\97\\144.9746\\-165.1016\\97\\145.5744\\-169.0078\\97\\146.0221\\-172.9141\\97\\146.2166\\-176.8203\\97\\146.2942\\-180.7266\\97\\146.2839\\-186.5859\\97\\146.1243\\-192.4453\\97\\145.9142\\-196.3516\\97\\145.7553\\-198.3047\\97\\145.2278\\-202.2109\\97\\144.7645\\-206.1172\\97\\144.3773\\-210.0234\\97\\144.089\\-211.9766\\97\\143.6094\\-213.9297\\97\\143.0202\\-215.8828\\97\\142.3279\\-219.7891\\97\\141.6558\\-221.7422\\97\\140.8031\\-223.6953\\97\\140.0761\\-225.6484\\97\\138.8504\\-227.6016\\97\\137.8976\\-229.5547\\97\\134.2564\\-235.4141\\97\\129.8828\\-240.4226\\97\\127.0828\\-243.2266\\97\\122.0703\\-247.5473\\97\\118.1641\\-250.2067\\97\\116.2109\\-251.6338\\97\\114.2578\\-252.875\\97\\111.2225\\-254.9453\\97\\110.3516\\-255.6075\\97\\108.3984\\-256.6875\\97\\106.4453\\-257.9328\\97\\104.4922\\-259.4401\\97\\102.5391\\-260.8283\\97\\100.5859\\-262.0379\\97\\98.63281\\-263.4853\\97\\94.72656\\-266.1824\\97\\90.82031\\-269.1743\\97\\88.86719\\-270.3319\\97\\86.91406\\-271.7115\\97\\84.96094\\-273.2864\\97\\83.00781\\-274.7375\\97\\81.05469\\-275.7268\\97\\79.10156\\-277.1948\\97\\77.14844\\-278.5203\\97\\75.19531\\-279.7364\\97\\73.24219\\-281.0941\\97\\69.33594\\-283.2139\\97\\67.38281\\-284.3806\\97\\65.42969\\-285.4288\\97\\63.47656\\-286.7694\\97\\61.52344\\-287.6221\\97\\59.57031\\-288.7716\\97\\57.61719\\-289.3875\\97\\55.66406\\-290.5227\\97\\53.71094\\-291.2315\\97\\51.75781\\-292.3138\\97\\49.80469\\-293.0569\\97\\45.89844\\-294.6811\\97\\41.99219\\-295.6588\\97\\40.03906\\-296.4987\\97\\36.13281\\-297.3434\\97\\34.17969\\-298.1378\\97\\32.22656\\-298.6742\\97\\28.32031\\-299.4828\\97\\26.36719\\-300.0681\\97\\24.41406\\-300.431\\97\\22.46094\\-300.6606\\97\\16.60156\\-301.2228\\97\\8.789063\\-301.9203\\97\\6.835938\\-302.0608\\97\\2.929688\\-302.1985\\97\\-0.9765625\\-302.2123\\97\\-6.835938\\-302.0332\\97"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002252"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "258"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "175"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-300.6782\\99\\-24.41406\\-300.4359\\99\\-26.36719\\-300.0926\\99\\-28.32031\\-299.501\\99\\-32.22656\\-298.6943\\99\\-34.17969\\-298.218\\99\\-36.13281\\-297.4228\\99\\-40.03906\\-296.5623\\99\\-41.99219\\-295.7746\\99\\-43.94531\\-295.1858\\99\\-45.89844\\-294.776\\99\\-47.85156\\-294.1326\\99\\-49.80469\\-293.2471\\99\\-51.75781\\-292.6086\\99\\-53.71094\\-291.5121\\99\\-55.66406\\-290.8377\\99\\-57.61719\\-289.7714\\99\\-61.52344\\-288.3744\\99\\-63.47656\\-287.3105\\99\\-65.42969\\-286.4984\\99\\-67.38281\\-285.2967\\99\\-71.28906\\-283.3068\\99\\-73.24219\\-282.4063\\99\\-77.30359\\-280.3359\\99\\-80.59776\\-278.3828\\99\\-81.05469\\-278.0417\\99\\-83.00781\\-277.1735\\99\\-84.96094\\-276.0292\\99\\-86.91406\\-275.2904\\99\\-88.86719\\-274.1556\\99\\-90.82031\\-273.2\\99\\-92.77344\\-271.863\\99\\-94.72656\\-270.9871\\99\\-96.67969\\-269.7679\\99\\-98.63281\\-268.9834\\99\\-99.14102\\-268.6172\\99\\-102.5391\\-266.7025\\99\\-104.4922\\-265.4672\\99\\-106.4453\\-264.0966\\99\\-108.3984\\-263.1641\\99\\-112.3047\\-260.3961\\99\\-114.2578\\-259.094\\99\\-118.1641\\-256.0311\\99\\-120.1172\\-254.3751\\99\\-122.0703\\-252.5539\\99\\-125.9766\\-248.7579\\99\\-127.9297\\-246.7238\\99\\-131.8359\\-242.0659\\99\\-133.9198\\-239.3203\\99\\-135.1115\\-237.3672\\99\\-136.4304\\-235.4141\\99\\-137.2808\\-233.4609\\99\\-138.5091\\-231.5078\\99\\-140.5545\\-227.6016\\99\\-142.2674\\-223.6953\\99\\-142.7747\\-221.7422\\99\\-143.4523\\-219.7891\\99\\-144.2348\\-217.8359\\99\\-145.1868\\-213.9297\\99\\-145.8795\\-211.9766\\99\\-146.2838\\-210.0234\\99\\-146.9575\\-206.1172\\99\\-147.7034\\-202.2109\\99\\-147.9399\\-200.2578\\99\\-148.1728\\-196.3516\\99\\-148.2669\\-192.4453\\99\\-148.2573\\-186.5859\\99\\-148.025\\-180.7266\\99\\-147.7273\\-176.8203\\99\\-146.7673\\-169.0078\\99\\-146.0871\\-163.1484\\99\\-145.7072\\-161.1953\\99\\-145.1317\\-159.2422\\99\\-144.7363\\-157.2891\\99\\-144.0768\\-153.3828\\99\\-143.3957\\-151.4297\\99\\-142.8528\\-149.4766\\99\\-142.1091\\-145.5703\\99\\-141.2828\\-143.6172\\99\\-140.0885\\-139.7109\\99\\-139.0896\\-137.7578\\99\\-138.5091\\-135.8047\\99\\-137.6073\\-133.8516\\99\\-136.8037\\-131.8984\\99\\-136.2134\\-129.9453\\99\\-135.1327\\-127.9922\\99\\-134.3444\\-126.0391\\99\\-133.1199\\-124.0859\\99\\-132.1528\\-122.1328\\99\\-130.9387\\-120.1797\\99\\-128.7818\\-116.2734\\99\\-124.4287\\-110.4141\\99\\-122.8337\\-108.4609\\99\\-120.9168\\-106.5078\\99\\-118.7022\\-104.5547\\99\\-118.1641\\-103.9937\\99\\-116.2109\\-102.3438\\99\\-114.2578\\-101.1473\\99\\-110.3516\\-98.5\\99\\-108.3984\\-97.37042\\99\\-106.4453\\-96.06519\\99\\-104.4922\\-95.16412\\99\\-102.5391\\-94.08057\\99\\-100.5859\\-93.48905\\99\\-98.63281\\-92.39038\\99\\-96.67969\\-91.70027\\99\\-94.72656\\-90.66811\\99\\-92.77344\\-89.87786\\99\\-90.82031\\-89.25066\\99\\-88.86719\\-88.38037\\99\\-84.96094\\-87.60807\\99\\-81.05469\\-86.57406\\99\\-79.10156\\-86.25128\\99\\-71.28906\\-85.207\\99\\-69.33594\\-84.82115\\99\\-67.38281\\-84.59696\\99\\-61.52344\\-84.12917\\99\\-53.71094\\-83.85041\\99\\-47.85156\\-83.93295\\99\\-40.03906\\-83.90659\\99\\-32.22656\\-83.82618\\99\\-24.41406\\-83.63093\\99\\-20.50781\\-83.68364\\99\\-14.64844\\-83.88596\\99\\-8.789063\\-84.21152\\99\\-4.882813\\-84.79808\\99\\-2.929688\\-85.30348\\99\\-0.9765625\\-85.63457\\99\\0.9765625\\-85.76035\\99\\2.929688\\-85.70143\\99\\4.882813\\-85.46854\\99\\8.789063\\-84.65723\\99\\12.69531\\-83.90992\\99\\14.64844\\-83.58732\\99\\18.55469\\-82.74479\\99\\20.50781\\-82.48438\\99\\22.46094\\-82.37911\\99\\28.32031\\-82.29998\\99\\36.13281\\-82.52421\\99\\45.89844\\-83.09357\\99\\47.85156\\-83.16649\\99\\51.75781\\-83.43079\\99\\59.57031\\-83.78721\\99\\67.38281\\-84.28017\\99\\71.28906\\-84.75106\\99\\75.19531\\-85.47266\\99\\81.05469\\-86.36324\\99\\83.00781\\-86.793\\99\\84.96094\\-87.42358\\99\\88.86719\\-88.1251\\99\\90.82031\\-88.60892\\99\\92.77344\\-89.40529\\99\\94.72656\\-89.98179\\99\\96.67969\\-90.67907\\99\\98.63281\\-91.62823\\99\\100.5859\\-92.31549\\99\\102.5391\\-93.35812\\99\\104.4922\\-94.05022\\99\\106.4453\\-95.20061\\99\\108.3984\\-96.16422\\99\\112.3047\\-98.92556\\99\\114.2578\\-100.1739\\99\\116.2109\\-101.7081\\99\\118.1641\\-103.4851\\99\\120.1172\\-105.4633\\99\\121.2877\\-106.5078\\99\\124.0234\\-109.5505\\99\\126.1534\\-112.3672\\99\\128.8689\\-116.2734\\99\\130.9465\\-120.1797\\99\\132.155\\-122.1328\\99\\133.0321\\-124.0859\\99\\134.1916\\-126.0391\\99\\134.9094\\-127.9922\\99\\136.5345\\-131.8984\\99\\137.0049\\-133.8516\\99\\137.8823\\-135.8047\\99\\139.1152\\-139.7109\\99\\140.0076\\-141.6641\\99\\140.9801\\-145.5703\\99\\141.625\\-147.5234\\99\\142.1659\\-149.4766\\99\\142.5126\\-151.4297\\99\\143.0404\\-155.3359\\99\\143.988\\-159.2422\\99\\144.2705\\-161.1953\\99\\144.8287\\-167.0547\\99\\144.9713\\-169.0078\\99\\145.6822\\-174.8672\\99\\145.9167\\-180.7266\\99\\145.907\\-186.5859\\99\\145.7784\\-190.4922\\99\\145.5154\\-194.3984\\99\\145.1262\\-198.3047\\99\\144.3197\\-208.0703\\99\\144.0585\\-210.0234\\99\\143.073\\-213.9297\\99\\142.4223\\-217.8359\\99\\141.9498\\-219.7891\\99\\141.0977\\-221.7422\\99\\140.4464\\-223.6953\\99\\139.3885\\-225.6484\\99\\138.4713\\-227.6016\\99\\137.283\\-229.5547\\99\\136.3642\\-231.5078\\99\\133.7891\\-235.208\\99\\130.4277\\-239.3203\\99\\127.9297\\-241.974\\99\\125.9766\\-243.7327\\99\\121.7731\\-247.1328\\99\\118.1641\\-249.879\\99\\114.2578\\-252.3685\\99\\110.7405\\-254.9453\\99\\110.3516\\-255.293\\99\\108.3984\\-256.3651\\99\\104.4922\\-259.2125\\99\\100.5859\\-261.9481\\99\\98.63281\\-263.4155\\99\\96.74737\\-264.7109\\99\\91.53427\\-268.6172\\99\\90.82031\\-269.2113\\99\\86.91406\\-271.7968\\99\\83.00781\\-274.8829\\99\\81.05469\\-275.8633\\99\\77.14844\\-278.7216\\99\\75.19531\\-279.907\\99\\73.24219\\-281.2166\\99\\71.28906\\-282.3301\\99\\69.33594\\-283.3296\\99\\67.38281\\-284.6212\\99\\65.42969\\-285.6069\\99\\63.47656\\-286.9277\\99\\61.52344\\-287.7839\\99\\59.57031\\-288.8963\\99\\57.61719\\-289.5389\\99\\55.66406\\-290.6886\\99\\53.71094\\-291.3657\\99\\51.75781\\-292.5251\\99\\49.80469\\-293.1976\\99\\47.85156\\-294.1047\\99\\45.89844\\-294.7998\\99\\43.94531\\-295.2224\\99\\41.99219\\-295.8757\\99\\40.03906\\-296.6331\\99\\38.08594\\-297.0154\\99\\36.13281\\-297.5196\\99\\34.17969\\-298.3421\\99\\30.27344\\-299.1643\\99\\26.36719\\-300.2077\\99\\24.41406\\-300.5201\\99\\20.50781\\-300.9362\\99\\14.64844\\-301.4833\\99\\10.74219\\-301.9056\\99\\6.835938\\-302.1505\\99\\2.929688\\-302.2818\\99\\-0.9765625\\-302.292\\99\\-4.882813\\-302.2123\\99\\-8.789063\\-302.0201\\99"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002251"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "252"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "176"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-10.74219\\-302.0201\\101\\-14.64844\\-301.5566\\101\\-22.46094\\-300.7596\\101\\-26.36719\\-300.2413\\101\\-30.27344\\-299.1961\\101\\-34.17969\\-298.3788\\101\\-36.13281\\-297.5997\\101\\-38.08594\\-297.0688\\101\\-40.03906\\-296.6778\\101\\-43.94531\\-295.2872\\101\\-45.89844\\-294.8778\\101\\-47.85156\\-294.313\\101\\-49.80469\\-293.3853\\101\\-51.75781\\-292.7399\\101\\-53.71094\\-291.683\\101\\-55.66406\\-290.9309\\101\\-57.61719\\-289.9413\\101\\-61.52344\\-288.5016\\101\\-63.47656\\-287.3803\\101\\-65.42969\\-286.5898\\101\\-67.38281\\-285.3454\\101\\-69.33594\\-284.3908\\101\\-71.28906\\-283.3186\\101\\-73.24219\\-282.4063\\101\\-77.14844\\-280.3747\\101\\-79.10156\\-279.2066\\101\\-81.05469\\-277.9103\\101\\-83.00781\\-277.0668\\101\\-84.96094\\-275.8879\\101\\-86.91406\\-275.1213\\101\\-88.86719\\-273.9054\\101\\-90.82031\\-272.9206\\101\\-92.77344\\-271.6265\\101\\-94.72656\\-270.5621\\101\\-98.47986\\-268.6172\\101\\-100.5859\\-267.4646\\101\\-102.5391\\-266.1367\\101\\-104.4922\\-265.0365\\101\\-106.4453\\-263.7464\\101\\-110.3516\\-261.4176\\101\\-114.2578\\-258.346\\101\\-116.2109\\-257.0166\\101\\-118.1641\\-255.5557\\101\\-120.1172\\-253.8474\\101\\-123.0839\\-251.0391\\101\\-125.9766\\-248.164\\101\\-128.7206\\-245.1797\\101\\-131.8359\\-241.2274\\101\\-134.6507\\-237.3672\\101\\-135.9089\\-235.4141\\101\\-136.8347\\-233.4609\\101\\-138.0231\\-231.5078\\101\\-138.8941\\-229.5547\\101\\-140.0901\\-227.6016\\101\\-140.8517\\-225.6484\\101\\-141.7894\\-223.6953\\101\\-142.4636\\-221.7422\\101\\-142.9274\\-219.7891\\101\\-143.7262\\-217.8359\\101\\-144.3124\\-215.8828\\101\\-145.1732\\-211.9766\\101\\-145.8247\\-210.0234\\101\\-146.2415\\-208.0703\\101\\-147.0768\\-202.2109\\101\\-147.3928\\-200.2578\\101\\-147.7887\\-196.3516\\101\\-147.9555\\-190.4922\\101\\-147.9112\\-186.5859\\101\\-147.5858\\-180.7266\\101\\-147.3361\\-178.7734\\101\\-146.4439\\-169.0078\\101\\-146.0191\\-165.1016\\101\\-145.6694\\-163.1484\\101\\-145.1557\\-161.1953\\101\\-144.7879\\-159.2422\\101\\-144.2076\\-155.3359\\101\\-143.7112\\-153.3828\\101\\-143.0598\\-151.4297\\101\\-142.3551\\-147.5234\\101\\-141.851\\-145.5703\\101\\-141.0324\\-143.6172\\101\\-140.4907\\-141.6641\\101\\-139.797\\-139.7109\\101\\-138.9469\\-137.7578\\101\\-138.3409\\-135.8047\\101\\-137.3089\\-133.8516\\101\\-135.9751\\-129.9453\\101\\-134.9472\\-127.9922\\101\\-134.0835\\-126.0391\\101\\-132.8636\\-124.0859\\101\\-130.7419\\-120.1797\\101\\-129.5139\\-118.2266\\101\\-128.5392\\-116.2734\\101\\-123.9014\\-110.4141\\101\\-122.4835\\-108.4609\\101\\-120.4234\\-106.5078\\101\\-115.8332\\-102.6016\\101\\-112.3047\\-100.0914\\101\\-110.3516\\-99.00812\\101\\-109.9808\\-98.69531\\101\\-106.4453\\-96.43488\\101\\-104.4922\\-95.51361\\101\\-102.5391\\-94.37154\\101\\-100.5859\\-93.72862\\101\\-96.67969\\-91.96495\\101\\-94.72656\\-91.21056\\101\\-92.77344\\-90.19518\\101\\-90.82031\\-89.60256\\101\\-88.86719\\-88.79581\\101\\-86.91406\\-88.20844\\101\\-83.00781\\-87.52795\\101\\-79.10156\\-86.61713\\101\\-77.14844\\-86.30003\\101\\-71.28906\\-85.67249\\101\\-67.38281\\-85.1684\\101\\-61.52344\\-84.51105\\101\\-57.61719\\-84.31876\\101\\-53.71094\\-84.17596\\101\\-47.85156\\-84.18716\\101\\-38.08594\\-84.00372\\101\\-34.17969\\-83.97217\\101\\-26.36719\\-83.80134\\101\\-22.46094\\-83.81676\\101\\-14.64844\\-84.05791\\101\\-8.789063\\-84.50786\\101\\-6.835938\\-84.79964\\101\\-4.882813\\-85.29108\\101\\-0.9765625\\-86.00574\\101\\0.9765625\\-86.13706\\101\\2.929688\\-86.11557\\101\\6.835938\\-85.60049\\101\\8.789063\\-85.25453\\101\\10.74219\\-84.71331\\101\\14.64844\\-83.91975\\101\\20.50781\\-82.88251\\101\\22.46094\\-82.66168\\101\\26.36719\\-82.47672\\101\\28.32031\\-82.47281\\101\\34.17969\\-82.62216\\101\\36.13281\\-82.74247\\101\\40.03906\\-83.10816\\101\\43.94531\\-83.36192\\101\\51.75781\\-83.7346\\101\\59.57031\\-84.06822\\101\\63.47656\\-84.31171\\101\\67.38281\\-84.6541\\101\\71.28906\\-85.3074\\101\\77.14844\\-86.0511\\101\\81.05469\\-86.76522\\101\\83.00781\\-87.31405\\101\\84.96094\\-87.7215\\101\\88.86719\\-88.42161\\101\\90.82031\\-89.14906\\101\\94.72656\\-90.31075\\101\\96.67969\\-91.25842\\101\\98.63281\\-91.96972\\101\\102.5391\\-93.67566\\101\\104.4922\\-94.40567\\101\\108.3984\\-96.62775\\101\\110.3516\\-97.9613\\101\\112.3047\\-99.45412\\101\\114.1851\\-100.6484\\101\\116.2109\\-102.1283\\101\\118.7212\\-104.5547\\101\\120.8357\\-106.5078\\101\\122.7001\\-108.4609\\101\\124.2511\\-110.4141\\101\\125.548\\-112.3672\\101\\128.5441\\-116.2734\\101\\129.4765\\-118.2266\\101\\130.6653\\-120.1797\\101\\133.7891\\-126.1998\\101\\134.6319\\-127.9922\\101\\135.294\\-129.9453\\101\\136.2271\\-131.8984\\101\\137.3033\\-135.8047\\101\\138.2041\\-137.7578\\101\\139.406\\-141.6641\\101\\140.1992\\-143.6172\\101\\141.1009\\-147.5234\\101\\141.7569\\-149.4766\\101\\142.2298\\-151.4297\\101\\143.0179\\-157.2891\\101\\143.8893\\-161.1953\\101\\144.1525\\-163.1484\\101\\144.5104\\-167.0547\\101\\144.7495\\-170.9609\\101\\145.0413\\-174.8672\\101\\145.3154\\-182.6797\\101\\145.2884\\-186.5859\\101\\145.1604\\-190.4922\\101\\144.6461\\-200.2578\\101\\144.219\\-206.1172\\101\\143.9572\\-208.0703\\101\\143.05\\-211.9766\\101\\142.4583\\-215.8828\\101\\142.08\\-217.8359\\101\\141.3435\\-219.7891\\101\\140.0171\\-223.6953\\101\\138.8683\\-225.6484\\101\\138.0623\\-227.6016\\101\\136.8646\\-229.5547\\101\\135.8772\\-231.5078\\101\\134.613\\-233.4609\\101\\131.8359\\-236.8906\\101\\127.9297\\-241.3622\\101\\123.48\\-245.1797\\101\\120.1172\\-247.9948\\101\\118.1641\\-249.4983\\101\\116.2109\\-250.6174\\101\\112.3047\\-253.5582\\101\\110.3002\\-254.9453\\101\\108.3984\\-256.1339\\101\\104.6404\\-258.8516\\101\\98.63281\\-263.3842\\101\\94.72656\\-266.2057\\101\\90.82031\\-269.2705\\101\\88.86719\\-270.6523\\101\\86.91406\\-271.9192\\101\\83.00781\\-275.0356\\101\\81.05469\\-276.0662\\101\\79.10156\\-277.4299\\101\\77.14844\\-278.9115\\101\\71.28906\\-282.5649\\101\\69.33594\\-283.4813\\101\\67.38281\\-284.819\\101\\65.42969\\-285.8249\\101\\63.47656\\-287.0703\\101\\59.57031\\-289.0225\\101\\57.61719\\-289.7179\\101\\55.66406\\-290.8391\\101\\53.71094\\-291.5574\\101\\51.75781\\-292.7039\\101\\49.80469\\-293.378\\101\\47.85156\\-294.3265\\101\\45.89844\\-294.9134\\101\\43.94531\\-295.3498\\101\\41.99219\\-296.1324\\101\\40.03906\\-296.7585\\101\\38.08594\\-297.1253\\101\\36.13281\\-297.7464\\101\\34.17969\\-298.5011\\101\\30.27344\\-299.31\\101\\28.32031\\-299.8899\\101\\26.36719\\-300.325\\101\\24.41406\\-300.6052\\101\\14.64844\\-301.609\\101\\10.74219\\-302.0332\\101\\6.835938\\-302.2581\\101\\2.929688\\-302.37\\101\\-2.929688\\-302.3571\\101\\-6.835938\\-302.2369\\101"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002250"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "255"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "177"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-301.4584\\103\\-24.41406\\-300.6429\\103\\-26.36719\\-300.3733\\103\\-28.32031\\-299.9194\\103\\-30.27344\\-299.3351\\103\\-34.17969\\-298.5163\\103\\-38.08594\\-297.1776\\103\\-40.03906\\-296.7864\\103\\-41.99219\\-296.2247\\103\\-43.94531\\-295.402\\103\\-47.85156\\-294.4738\\103\\-49.80469\\-293.5319\\103\\-51.75781\\-292.8598\\103\\-53.71094\\-291.8803\\103\\-57.61719\\-290.1692\\103\\-59.57031\\-289.2568\\103\\-61.52344\\-288.6201\\103\\-63.47656\\-287.4709\\103\\-65.42969\\-286.6773\\103\\-67.38281\\-285.413\\103\\-69.33594\\-284.4897\\103\\-71.28906\\-283.3366\\103\\-73.43301\\-282.2891\\103\\-77.13721\\-280.3359\\103\\-79.10156\\-279.1517\\103\\-81.05469\\-277.8102\\103\\-83.00781\\-276.9652\\103\\-84.96094\\-275.7591\\103\\-86.91406\\-274.945\\103\\-87.58076\\-274.4766\\103\\-94.17499\\-270.5703\\103\\-94.72656\\-270.1478\\103\\-96.67969\\-269.3384\\103\\-98.63281\\-268.0959\\103\\-100.5859\\-267.1085\\103\\-104.4922\\-264.4202\\103\\-106.4453\\-263.424\\103\\-108.3984\\-262.0735\\103\\-110.3516\\-260.8621\\103\\-112.3047\\-259.418\\103\\-114.2578\\-257.8445\\103\\-118.0396\\-254.9453\\103\\-120.1172\\-253.2274\\103\\-122.4365\\-251.0391\\103\\-125.9766\\-247.513\\103\\-128.0704\\-245.1797\\103\\-129.8828\\-242.9041\\103\\-131.0587\\-241.2734\\103\\-132.658\\-239.3203\\103\\-134.1316\\-237.3672\\103\\-135.2293\\-235.4141\\103\\-136.4634\\-233.4609\\103\\-137.3004\\-231.5078\\103\\-138.4487\\-229.5547\\103\\-139.3138\\-227.6016\\103\\-140.4054\\-225.6484\\103\\-141.1133\\-223.6953\\103\\-142.0424\\-221.7422\\103\\-143.0596\\-217.8359\\103\\-143.8165\\-215.8828\\103\\-144.3304\\-213.9297\\103\\-145.0846\\-210.0234\\103\\-145.7316\\-208.0703\\103\\-146.1196\\-206.1172\\103\\-146.8118\\-200.2578\\103\\-147.1579\\-196.3516\\103\\-147.3928\\-190.4922\\103\\-147.3214\\-186.5859\\103\\-146.985\\-180.7266\\103\\-146.8156\\-178.7734\\103\\-146.4278\\-172.9141\\103\\-146.1243\\-169.0078\\103\\-145.8669\\-167.0547\\103\\-145.0802\\-163.1484\\103\\-144.2562\\-157.2891\\103\\-143.8525\\-155.3359\\103\\-143.2197\\-153.3828\\103\\-142.8238\\-151.4297\\103\\-142.1313\\-147.5234\\103\\-140.7806\\-143.6172\\103\\-140.2609\\-141.6641\\103\\-139.3802\\-139.7109\\103\\-138.092\\-135.8047\\103\\-137.0721\\-133.8516\\103\\-136.4919\\-131.8984\\103\\-134.7414\\-127.9922\\103\\-133.7891\\-126.1884\\103\\-131.8359\\-122.748\\103\\-131.3996\\-122.1328\\103\\-130.5013\\-120.1797\\103\\-129.2206\\-118.2266\\103\\-128.159\\-116.2734\\103\\-126.6897\\-114.3203\\103\\-123.3746\\-110.4141\\103\\-121.8767\\-108.4609\\103\\-116.2109\\-103.395\\103\\-114.2578\\-101.8008\\103\\-112.3047\\-100.5435\\103\\-110.3516\\-99.40134\\103\\-108.3984\\-98.02321\\103\\-104.4922\\-95.81988\\103\\-102.4978\\-94.78906\\103\\-100.5859\\-93.94067\\103\\-98.63281\\-93.30714\\103\\-96.67969\\-92.25574\\103\\-94.72656\\-91.59252\\103\\-92.77344\\-90.58182\\103\\-88.86719\\-89.31095\\103\\-86.91406\\-88.5922\\103\\-84.96094\\-88.12954\\103\\-81.05469\\-87.55062\\103\\-77.14844\\-86.70058\\103\\-75.19531\\-86.4074\\103\\-69.33594\\-85.80828\\103\\-63.47656\\-85.32554\\103\\-61.52344\\-85.04707\\103\\-57.61719\\-84.71539\\103\\-53.71094\\-84.53212\\103\\-47.85156\\-84.48284\\103\\-38.08594\\-84.13416\\103\\-34.17969\\-84.09966\\103\\-26.36719\\-83.94492\\103\\-22.46094\\-83.98141\\103\\-16.60156\\-84.18235\\103\\-12.69531\\-84.42471\\103\\-8.789063\\-84.90137\\103\\-2.929688\\-86.02941\\103\\0.9765625\\-86.52041\\103\\2.929688\\-86.51062\\103\\8.789063\\-85.71018\\103\\10.74219\\-85.28237\\103\\14.64844\\-84.27531\\103\\16.60156\\-83.90326\\103\\22.46094\\-83.09357\\103\\26.36719\\-82.79027\\103\\28.32031\\-82.75416\\103\\34.17969\\-82.90144\\103\\38.08594\\-83.28811\\103\\41.99219\\-83.54623\\103\\49.80469\\-83.89907\\103\\53.71094\\-84.04688\\103\\59.57031\\-84.35584\\103\\63.47656\\-84.67239\\103\\69.33594\\-85.46674\\103\\73.24219\\-85.85152\\103\\77.14844\\-86.3808\\103\\79.10156\\-86.76522\\103\\81.05469\\-87.29733\\103\\86.91406\\-88.29779\\103\\90.82031\\-89.57878\\103\\92.77344\\-90.08083\\103\\94.72656\\-90.81623\\103\\96.67969\\-91.68805\\103\\98.63281\\-92.32036\\103\\100.5859\\-93.29349\\103\\102.5391\\-93.94396\\103\\106.4453\\-95.90778\\103\\108.3984\\-97.21291\\103\\110.3516\\-98.39651\\103\\113.435\\-100.6484\\103\\116.001\\-102.6016\\103\\120.3125\\-106.5078\\103\\122.2276\\-108.4609\\103\\123.5822\\-110.4141\\103\\126.6851\\-114.3203\\103\\128.0735\\-116.2734\\103\\129.1261\\-118.2266\\103\\130.3223\\-120.1797\\103\\131.1492\\-122.1328\\103\\132.3692\\-124.0859\\103\\133.1818\\-126.0391\\103\\134.2961\\-127.9922\\103\\134.9383\\-129.9453\\103\\136.4996\\-133.8516\\103\\136.9418\\-135.8047\\103\\138.4436\\-139.7109\\103\\138.9337\\-141.6641\\103\\140.3233\\-145.5703\\103\\141.184\\-149.4766\\103\\141.8258\\-151.4297\\103\\142.2213\\-153.3828\\103\\142.9662\\-159.2422\\103\\143.6244\\-163.1484\\103\\144.1883\\-167.0547\\103\\144.3478\\-169.0078\\103\\144.6487\\-174.8672\\103\\144.8287\\-182.6797\\103\\144.8175\\-186.5859\\103\\144.6913\\-192.4453\\103\\144.5519\\-196.3516\\103\\144.245\\-202.2109\\103\\143.7899\\-206.1172\\103\\143.3385\\-208.0703\\103\\143.005\\-210.0234\\103\\142.4888\\-213.9297\\103\\142.1477\\-215.8828\\103\\140.8395\\-219.7891\\103\\140.3051\\-221.7422\\103\\139.3138\\-223.6953\\103\\138.4733\\-225.6484\\103\\137.3943\\-227.6016\\103\\136.5196\\-229.5547\\103\\134.1261\\-233.4609\\103\\131.8359\\-236.3604\\103\\129.1794\\-239.3203\\103\\127.3304\\-241.2734\\103\\122.9616\\-245.1797\\103\\120.1172\\-247.5633\\103\\118.0115\\-249.0859\\103\\116.2109\\-250.2699\\103\\115.2751\\-251.0391\\103\\110.3516\\-254.5561\\103\\106.4453\\-257.4329\\103\\104.4922\\-258.7783\\103\\101.9641\\-260.8047\\103\\98.63281\\-263.3793\\103\\94.72656\\-266.2748\\103\\90.82031\\-269.3529\\103\\88.86719\\-270.811\\103\\86.91406\\-272.0974\\103\\83.00781\\-275.1647\\103\\81.05469\\-276.3106\\103\\79.10156\\-277.567\\103\\77.14844\\-279.1033\\103\\75.19531\\-280.4035\\103\\73.24219\\-281.524\\103\\71.28906\\-282.7841\\103\\69.33594\\-283.6666\\103\\68.58016\\-284.2422\\103\\65.35619\\-286.1953\\103\\61.52344\\-288.3348\\103\\57.61719\\-289.9698\\103\\55.66406\\-290.979\\103\\53.71094\\-291.8157\\103\\51.75781\\-292.8561\\103\\49.80469\\-293.5731\\103\\47.85156\\-294.5182\\103\\43.94531\\-295.5128\\103\\41.99219\\-296.3556\\103\\40.03906\\-296.8692\\103\\38.08594\\-297.2611\\103\\36.13281\\-298.0361\\103\\34.17969\\-298.6312\\103\\30.27344\\-299.4629\\103\\28.32031\\-300.0804\\103\\26.36719\\-300.4344\\103\\24.41406\\-300.6875\\103\\16.60156\\-301.5182\\103\\12.69531\\-301.9931\\103\\10.74219\\-302.1505\\103\\6.835938\\-302.3571\\103\\2.929688\\-302.4526\\103\\-2.929688\\-302.4485\\103\\-6.835938\\-302.3477\\103\\-10.74219\\-302.1505\\103"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002249"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "255"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "178"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-301.9056\\105\\-16.60156\\-301.5944\\105\\-26.36719\\-300.4818\\105\\-28.32031\\-300.1046\\105\\-30.27344\\-299.501\\105\\-34.17969\\-298.6312\\105\\-36.13281\\-298.0627\\105\\-38.08594\\-297.2958\\105\\-41.99219\\-296.4102\\105\\-43.94531\\-295.5444\\105\\-47.85156\\-294.6121\\105\\-49.80469\\-293.7162\\105\\-51.75781\\-292.9699\\105\\-53.71094\\-292.1213\\105\\-55.66406\\-291.1521\\105\\-57.61719\\-290.3642\\105\\-59.57031\\-289.3386\\105\\-61.52344\\-288.7293\\105\\-63.47656\\-287.5714\\105\\-65.42969\\-286.7715\\105\\-67.38281\\-285.4978\\105\\-69.33594\\-284.5677\\105\\-71.28906\\-283.3669\\105\\-73.47523\\-282.2891\\105\\-77.09418\\-280.3359\\105\\-79.10156\\-279.1195\\105\\-81.05469\\-277.726\\105\\-83.00781\\-276.8511\\105\\-84.96094\\-275.6472\\105\\-86.91406\\-274.7525\\105\\-90.42794\\-272.5234\\105\\-90.82031\\-272.2118\\105\\-92.77344\\-271.188\\105\\-94.72656\\-269.8674\\105\\-96.67969\\-269.0598\\105\\-97.277\\-268.6172\\105\\-102.5391\\-265.3875\\105\\-104.4922\\-263.9801\\105\\-106.4453\\-262.9375\\105\\-108.3984\\-261.6735\\105\\-112.3047\\-258.7166\\105\\-114.2578\\-257.3766\\105\\-116.2109\\-255.8276\\105\\-118.1641\\-254.1733\\105\\-121.6202\\-251.0391\\105\\-124.0234\\-248.7197\\105\\-127.281\\-245.1797\\105\\-128.969\\-243.2266\\105\\-130.5493\\-241.2734\\105\\-132.0101\\-239.3203\\105\\-134.7086\\-235.4141\\105\\-135.8302\\-233.4609\\105\\-137.8864\\-229.5547\\105\\-138.7432\\-227.6016\\105\\-139.7611\\-225.6484\\105\\-140.6022\\-223.6953\\105\\-141.3135\\-221.7422\\105\\-142.1718\\-219.7891\\105\\-143.0939\\-215.8828\\105\\-143.7916\\-213.9297\\105\\-144.2654\\-211.9766\\105\\-144.9667\\-208.0703\\105\\-145.9246\\-204.1641\\105\\-146.3682\\-200.2578\\105\\-146.6417\\-196.3516\\105\\-146.7666\\-192.4453\\105\\-146.808\\-188.5391\\105\\-146.5372\\-180.7266\\105\\-146.0699\\-172.9141\\105\\-145.6163\\-169.0078\\105\\-145.2121\\-167.0547\\105\\-144.6931\\-163.1484\\105\\-144.2343\\-159.2422\\105\\-143.8779\\-157.2891\\105\\-143.2996\\-155.3359\\105\\-142.8849\\-153.3828\\105\\-142.2913\\-149.4766\\105\\-141.7704\\-147.5234\\105\\-141.0253\\-145.5703\\105\\-140.5227\\-143.6172\\105\\-139.919\\-141.6641\\105\\-139.0265\\-139.7109\\105\\-138.4948\\-137.7578\\105\\-136.8401\\-133.8516\\105\\-136.2742\\-131.8984\\105\\-135.2539\\-129.9453\\105\\-134.4954\\-127.9922\\105\\-133.2942\\-126.0391\\105\\-132.3303\\-124.0859\\105\\-131.0833\\-122.1328\\105\\-130.1437\\-120.1797\\105\\-128.938\\-118.2266\\105\\-126.2403\\-114.3203\\105\\-124.6585\\-112.3672\\105\\-122.0703\\-109.2925\\105\\-121.2818\\-108.4609\\105\\-116.2109\\-103.8103\\105\\-114.2578\\-102.184\\105\\-112.3047\\-101.0608\\105\\-108.3984\\-98.43082\\105\\-106.4453\\-97.40721\\105\\-104.4922\\-96.12244\\105\\-102.5391\\-95.28759\\105\\-100.5859\\-94.2111\\105\\-98.63281\\-93.61346\\105\\-96.67969\\-92.6476\\105\\-92.77344\\-91.14091\\105\\-90.82031\\-90.24175\\105\\-86.91406\\-89.17558\\105\\-84.96094\\-88.45516\\105\\-83.00781\\-88.08825\\105\\-79.10156\\-87.60807\\105\\-77.14844\\-87.28994\\105\\-73.24219\\-86.55054\\105\\-71.28906\\-86.33144\\105\\-65.42969\\-85.82664\\105\\-63.47656\\-85.73527\\105\\-53.71094\\-85.00072\\105\\-47.85156\\-84.83643\\105\\-43.94531\\-84.58065\\105\\-36.13281\\-84.25217\\105\\-30.27344\\-84.14399\\105\\-26.36719\\-84.11091\\105\\-22.46094\\-84.16209\\105\\-16.60156\\-84.42471\\105\\-12.69531\\-84.72651\\105\\-8.789063\\-85.36523\\105\\-6.835938\\-85.60809\\105\\-2.929688\\-86.38565\\105\\0.9765625\\-87.06534\\105\\2.929688\\-87.034\\105\\4.882813\\-86.67446\\105\\8.789063\\-86.13021\\105\\12.69531\\-85.3157\\105\\14.64844\\-84.67007\\105\\18.55469\\-83.90155\\105\\20.50781\\-83.66985\\105\\24.41406\\-83.35228\\105\\28.32031\\-83.19704\\105\\32.22656\\-83.19514\\105\\36.13281\\-83.37131\\105\\40.03906\\-83.65741\\105\\51.75781\\-84.1669\\105\\59.57031\\-84.6936\\105\\61.52344\\-84.90137\\105\\65.42969\\-85.44381\\105\\73.24219\\-86.14677\\105\\77.14844\\-86.80511\\105\\79.10156\\-87.31158\\105\\81.05469\\-87.6507\\105\\84.96094\\-88.22231\\105\\86.91406\\-88.72993\\105\\88.86719\\-89.43352\\105\\92.77344\\-90.45087\\105\\94.72656\\-91.38345\\105\\96.67969\\-92.02029\\105\\100.5859\\-93.65281\\105\\102.5391\\-94.27327\\105\\104.4922\\-95.39774\\105\\106.4453\\-96.32851\\105\\109.8861\\-98.69531\\105\\110.3516\\-99.08748\\105\\112.3047\\-100.2415\\105\\114.2578\\-101.6781\\105\\116.2109\\-103.3587\\105\\121.5598\\-108.4609\\105\\122.0703\\-109.032\\105\\124.7116\\-112.3672\\105\\126.2008\\-114.3203\\105\\128.7928\\-118.2266\\105\\131.8437\\-124.0859\\105\\133.7891\\-128.0056\\105\\134.6269\\-129.9453\\105\\135.2439\\-131.8984\\105\\136.1427\\-133.8516\\105\\136.689\\-135.8047\\105\\137.1364\\-137.7578\\105\\138.0358\\-139.7109\\105\\139.066\\-143.6172\\105\\139.8631\\-145.5703\\105\\140.3795\\-147.5234\\105\\141.2149\\-151.4297\\105\\141.7851\\-153.3828\\105\\142.1786\\-155.3359\\105\\142.4583\\-157.2891\\105\\143.2459\\-165.1016\\105\\143.6824\\-167.0547\\105\\143.9545\\-169.0078\\105\\144.3148\\-174.8672\\105\\144.4304\\-178.7734\\105\\144.4895\\-182.6797\\105\\144.4949\\-186.5859\\105\\144.442\\-190.4922\\105\\144.2634\\-196.3516\\105\\144.1606\\-198.3047\\105\\143.7899\\-202.2109\\105\\143.1518\\-206.1172\\105\\142.4703\\-211.9766\\105\\142.1348\\-213.9297\\105\\141.6016\\-215.8596\\105\\140.9368\\-217.8359\\105\\140.4351\\-219.7891\\105\\139.7298\\-221.7422\\105\\138.7933\\-223.6953\\105\\138.0076\\-225.6484\\105\\136.903\\-227.6016\\105\\136.0899\\-229.5547\\105\\134.847\\-231.5078\\105\\132.0426\\-235.4141\\105\\128.7179\\-239.3203\\105\\125.9766\\-242.0724\\105\\122.3232\\-245.1797\\105\\117.4229\\-249.0859\\105\\114.2578\\-251.4412\\105\\112.3047\\-252.7663\\105\\108.3984\\-255.8394\\105\\106.4453\\-257.2989\\105\\104.4922\\-258.6423\\105\\100.5859\\-261.8606\\105\\88.86719\\-270.9547\\105\\86.65751\\-272.5234\\105\\83.00781\\-275.2979\\105\\81.05469\\-276.6025\\105\\79.10156\\-277.7338\\105\\77.14844\\-279.2829\\105\\75.19531\\-280.6794\\105\\73.24219\\-281.7018\\105\\71.28906\\-282.9632\\105\\69.33594\\-283.9072\\105\\68.92613\\-284.2422\\105\\65.77485\\-286.1953\\105\\65.42969\\-286.4813\\105\\63.47656\\-287.4099\\105\\61.52344\\-288.5892\\105\\59.57031\\-289.2878\\105\\57.61719\\-290.3039\\105\\55.66406\\-291.1287\\105\\53.71094\\-292.164\\105\\49.80469\\-293.7916\\105\\47.85156\\-294.6769\\105\\45.89844\\-295.1401\\105\\43.94531\\-295.7059\\105\\41.99219\\-296.5372\\105\\38.08594\\-297.4166\\105\\36.13281\\-298.2606\\105\\32.22656\\-299.1321\\105\\28.32031\\-300.2182\\105\\26.36719\\-300.5389\\105\\16.60156\\-301.6489\\105\\12.69531\\-302.1388\\105\\8.789063\\-302.3793\\105\\4.882813\\-302.51\\105\\-0.9765625\\-302.5497\\105\\-6.835938\\-302.461\\105\\-10.74219\\-302.2685\\105"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002248"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "249"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "179"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-302.0608\\107\\-18.55469\\-301.4925\\107\\-26.36719\\-300.5728\\107\\-28.32031\\-300.2389\\107\\-32.22656\\-299.1468\\107\\-36.13281\\-298.2606\\107\\-38.08594\\-297.4351\\107\\-41.99219\\-296.566\\107\\-43.94531\\-295.7186\\107\\-45.89844\\-295.1421\\107\\-47.85156\\-294.724\\107\\-51.75781\\-293.0884\\107\\-53.71094\\-292.3516\\107\\-55.66406\\-291.2561\\107\\-57.61719\\-290.5349\\107\\-59.57031\\-289.4236\\107\\-61.52344\\-288.81\\107\\-63.47656\\-287.68\\107\\-65.42969\\-286.8601\\107\\-67.38281\\-285.577\\107\\-69.33594\\-284.6389\\107\\-71.28906\\-283.4163\\107\\-73.57124\\-282.2891\\107\\-77.03168\\-280.3359\\107\\-79.10156\\-279.0862\\107\\-81.05469\\-277.6689\\107\\-83.00781\\-276.7575\\107\\-84.96094\\-275.5514\\107\\-86.91406\\-274.5156\\107\\-88.86719\\-273.3519\\107\\-90.82031\\-271.94\\107\\-92.77344\\-270.9138\\107\\-94.72656\\-269.6712\\107\\-96.67969\\-268.6746\\107\\-98.63281\\-267.4679\\107\\-100.5859\\-266.0552\\107\\-102.5391\\-264.9162\\107\\-106.4453\\-262.3044\\107\\-108.3984\\-261.2272\\107\\-112.3047\\-258.1048\\107\\-116.2109\\-255.3039\\107\\-118.1641\\-253.5894\\107\\-118.7326\\-252.9922\\107\\-120.9322\\-251.0391\\107\\-124.0234\\-248.005\\107\\-128.3993\\-243.2266\\107\\-129.8912\\-241.2734\\107\\-131.2008\\-239.3203\\107\\-134.15\\-235.4141\\107\\-135.1497\\-233.4609\\107\\-136.3458\\-231.5078\\107\\-137.1189\\-229.5547\\107\\-138.2457\\-227.6016\\107\\-138.956\\-225.6484\\107\\-140.0482\\-223.6953\\107\\-140.7392\\-221.7422\\107\\-142.2289\\-217.8359\\107\\-143.0397\\-213.9297\\107\\-143.6691\\-211.9766\\107\\-144.1838\\-210.0234\\107\\-145.1159\\-204.1641\\107\\-145.8398\\-200.2578\\107\\-146.1936\\-196.3516\\107\\-146.3216\\-192.4453\\107\\-146.3741\\-188.5391\\107\\-146.1348\\-180.7266\\107\\-145.8772\\-176.8203\\107\\-145.5078\\-173.4311\\107\\-145.1643\\-170.9609\\107\\-144.7409\\-167.0547\\107\\-144.1767\\-161.1953\\107\\-143.7916\\-159.2422\\107\\-143.2705\\-157.2891\\107\\-142.8974\\-155.3359\\107\\-142.3598\\-151.4297\\107\\-141.9498\\-149.4766\\107\\-141.2362\\-147.5234\\107\\-140.2186\\-143.6172\\107\\-139.3684\\-141.6641\\107\\-138.1806\\-137.7578\\107\\-137.1872\\-135.8047\\107\\-136.6272\\-133.8516\\107\\-135.9634\\-131.8984\\107\\-134.967\\-129.9453\\107\\-134.173\\-127.9922\\107\\-132.9614\\-126.0391\\107\\-131.9328\\-124.0859\\107\\-130.7883\\-122.1328\\107\\-128.6048\\-118.2266\\107\\-125.9766\\-114.7842\\107\\-125.5516\\-114.3203\\107\\-122.5972\\-110.4141\\107\\-120.1172\\-107.8541\\107\\-116.2109\\-104.3385\\107\\-114.0185\\-102.6016\\107\\-110.3516\\-100.0531\\107\\-108.3984\\-99.02326\\107\\-107.9839\\-98.69531\\107\\-104.7247\\-96.74219\\107\\-100.5859\\-94.59833\\107\\-96.67969\\-93.19948\\107\\-94.72656\\-92.22768\\107\\-92.77344\\-91.56292\\107\\-90.82031\\-90.7033\\107\\-88.86719\\-90.04819\\107\\-86.91406\\-89.60979\\107\\-83.00781\\-88.40487\\107\\-81.05469\\-88.12\\107\\-75.19531\\-87.40983\\107\\-71.28906\\-86.73785\\107\\-67.38281\\-86.28555\\107\\-61.52344\\-85.90567\\107\\-53.71094\\-85.46854\\107\\-47.85156\\-85.2797\\107\\-43.94531\\-84.888\\107\\-40.03906\\-84.63405\\107\\-36.13281\\-84.45473\\107\\-30.27344\\-84.30067\\107\\-26.36719\\-84.30067\\107\\-20.50781\\-84.46293\\107\\-16.60156\\-84.68515\\107\\-12.69531\\-85.1234\\107\\-6.835938\\-85.95265\\107\\-4.882813\\-86.3156\\107\\-0.9765625\\-87.31909\\107\\0.9765625\\-87.59021\\107\\2.929688\\-87.5811\\107\\4.882813\\-87.2673\\107\\8.789063\\-86.53744\\107\\12.69531\\-85.72534\\107\\16.60156\\-84.58338\\107\\18.55469\\-84.19574\\107\\22.46094\\-83.78957\\107\\24.41406\\-83.66344\\107\\28.32031\\-83.55233\\107\\32.22656\\-83.51477\\107\\36.13281\\-83.60682\\107\\40.03906\\-83.82865\\107\\45.89844\\-84.08485\\107\\49.80469\\-84.28963\\107\\53.71094\\-84.55587\\107\\57.61719\\-84.9287\\107\\63.47656\\-85.58754\\107\\69.33594\\-86.05968\\107\\73.24219\\-86.46623\\107\\77.14844\\-87.29969\\107\\79.10156\\-87.6507\\107\\83.00781\\-88.16675\\107\\84.96094\\-88.55999\\107\\86.91406\\-89.2926\\107\\90.82031\\-90.26815\\107\\92.77344\\-91.06102\\107\\96.67969\\-92.3971\\107\\98.63281\\-93.3208\\107\\100.5859\\-93.92306\\107\\102.5391\\-94.73209\\107\\104.4922\\-95.75945\\107\\108.3984\\-98.1364\\107\\112.3047\\-100.9197\\107\\114.2578\\-102.1061\\107\\116.2109\\-103.7804\\107\\121.0801\\-108.4609\\107\\122.7944\\-110.4141\\107\\125.5132\\-114.3203\\107\\125.9766\\-114.8493\\107\\128.3736\\-118.2266\\107\\129.312\\-120.1797\\107\\130.5191\\-122.1328\\107\\131.2695\\-124.0859\\107\\132.4327\\-126.0391\\107\\133.2069\\-127.9922\\107\\134.2711\\-129.9453\\107\\134.8943\\-131.8984\\107\\136.408\\-135.8047\\107\\136.8266\\-137.7578\\107\\137.4111\\-139.7109\\107\\138.2041\\-141.6641\\107\\139.1849\\-145.5703\\107\\139.9208\\-147.5234\\107\\140.4097\\-149.4766\\107\\141.1668\\-153.3828\\107\\141.6855\\-155.3359\\107\\142.08\\-157.2891\\107\\142.3598\\-159.2422\\107\\143.05\\-167.0547\\107\\143.6974\\-172.9141\\107\\143.9909\\-176.8203\\107\\144.1606\\-182.6797\\107\\144.1153\\-190.4922\\107\\143.8042\\-196.3516\\107\\142.9523\\-204.1641\\107\\142.6079\\-208.0703\\107\\142.1029\\-211.9766\\107\\140.9875\\-215.8828\\107\\140.5289\\-217.8359\\107\\139.9565\\-219.7891\\107\\139.0381\\-221.7422\\107\\138.3929\\-223.6953\\107\\137.3175\\-225.6484\\107\\136.5642\\-227.6016\\107\\134.3763\\-231.5078\\107\\131.8359\\-234.8234\\107\\129.8828\\-237.2451\\107\\128.0692\\-239.3203\\107\\125.9766\\-241.4402\\107\\122.0703\\-244.7534\\107\\118.1641\\-248.1411\\107\\116.2109\\-249.7166\\107\\112.3047\\-252.4461\\107\\108.3984\\-255.7279\\107\\104.4922\\-258.5586\\107\\101.8905\\-260.8047\\107\\94.59577\\-266.6641\\107\\89.58549\\-270.5703\\107\\83.00781\\-275.4341\\107\\81.05469\\-276.8405\\107\\79.10156\\-277.9556\\107\\75.19531\\-280.9181\\107\\73.24219\\-281.8998\\107\\72.68847\\-282.2891\\107\\69.33594\\-284.2798\\107\\67.38281\\-285.3732\\107\\65.42969\\-286.7274\\107\\63.47656\\-287.6176\\107\\61.52344\\-288.8016\\107\\59.57031\\-289.4274\\107\\57.61719\\-290.5629\\107\\55.66406\\-291.2957\\107\\53.71094\\-292.4516\\107\\51.75781\\-293.1654\\107\\49.80469\\-294.0765\\107\\47.85156\\-294.8138\\107\\45.89844\\-295.2546\\107\\41.99219\\-296.6737\\107\\40.03906\\-297.0642\\107\\38.08594\\-297.6089\\107\\36.13281\\-298.4277\\107\\32.22656\\-299.2519\\107\\30.20198\\-299.8672\\107\\28.32031\\-300.3405\\107\\26.36719\\-300.6136\\107\\18.55469\\-301.5302\\107\\14.64844\\-302.0735\\107\\12.69531\\-302.2581\\107\\8.789063\\-302.4734\\107\\4.882813\\-302.5956\\107\\-2.929688\\-302.6145\\107\\-6.835938\\-302.5497\\107\\-10.74219\\-302.3921\\107"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002247"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "245"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "180"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-301.9931\\109\\-20.50781\\-301.3722\\109\\-26.36719\\-300.654\\109\\-28.32031\\-300.3525\\109\\-30.27344\\-299.8748\\109\\-32.22656\\-299.264\\109\\-36.13281\\-298.4277\\109\\-38.08594\\-297.6068\\109\\-40.03906\\-297.0628\\109\\-41.99219\\-296.6808\\109\\-45.89844\\-295.2456\\109\\-47.85156\\-294.8187\\109\\-49.80469\\-294.1473\\109\\-51.75781\\-293.2103\\109\\-53.71094\\-292.528\\109\\-55.66406\\-291.3803\\109\\-57.61719\\-290.6797\\109\\-59.57031\\-289.5207\\109\\-61.52344\\-288.8963\\109\\-63.47656\\-287.8323\\109\\-65.42969\\-286.9363\\109\\-67.38281\\-285.6709\\109\\-69.33594\\-284.7334\\109\\-71.28906\\-283.4622\\109\\-73.24219\\-282.5754\\109\\-73.64309\\-282.2891\\109\\-77.0529\\-280.3359\\109\\-79.10156\\-279.0753\\109\\-81.05469\\-277.632\\109\\-83.32987\\-276.4297\\109\\-88.86719\\-273.2025\\109\\-90.82031\\-271.7365\\109\\-92.77344\\-270.562\\109\\-94.72656\\-269.5088\\109\\-96.67969\\-268.2537\\109\\-98.63281\\-267.1458\\109\\-99.20313\\-266.6641\\109\\-102.0713\\-264.7109\\109\\-102.5391\\-264.3016\\109\\-104.4922\\-263.2531\\109\\-108.0698\\-260.8047\\109\\-110.3516\\-259.1649\\109\\-116.2109\\-254.5138\\109\\-120.1172\\-250.8534\\109\\-122.0703\\-249.3057\\109\\-124.0234\\-247.2142\\109\\-127.9297\\-242.7993\\109\\-129.8828\\-240.3321\\109\\-132.0555\\-237.3672\\109\\-134.6079\\-233.4609\\109\\-136.6166\\-229.5547\\109\\-137.4152\\-227.6016\\109\\-138.4277\\-225.6484\\109\\-139.1569\\-223.6953\\109\\-140.2039\\-221.7422\\109\\-140.7936\\-219.7891\\109\\-142.194\\-215.8828\\109\\-142.941\\-211.9766\\109\\-143.9909\\-208.0703\\109\\-144.3257\\-206.1172\\109\\-145.6835\\-194.3984\\109\\-145.8268\\-190.4922\\109\\-145.8047\\-186.5859\\109\\-145.6163\\-182.6797\\109\\-145.1185\\-176.8203\\109\\-144.2192\\-165.1016\\109\\-143.988\\-163.1484\\109\\-143.1461\\-159.2422\\109\\-142.3523\\-153.3828\\109\\-141.9772\\-151.4297\\109\\-140.797\\-147.5234\\109\\-140.3562\\-145.5703\\109\\-138.9216\\-141.6641\\109\\-138.4318\\-139.7109\\109\\-136.8695\\-135.8047\\109\\-136.369\\-133.8516\\109\\-135.4411\\-131.8984\\109\\-134.6763\\-129.9453\\109\\-132.616\\-126.0391\\109\\-131.392\\-124.0859\\109\\-130.5106\\-122.1328\\109\\-129.2477\\-120.1797\\109\\-128.1357\\-118.2266\\109\\-126.6819\\-116.2734\\109\\-121.8921\\-110.4141\\109\\-120.1172\\-108.581\\109\\-115.7148\\-104.5547\\109\\-112.3047\\-101.8008\\109\\-110.3516\\-100.5284\\109\\-108.3984\\-99.45766\\109\\-106.4453\\-98.12962\\109\\-104.4922\\-97.1451\\109\\-102.5391\\-95.95972\\109\\-100.5859\\-95.13581\\109\\-98.63281\\-94.11446\\109\\-96.67969\\-93.57145\\109\\-94.72656\\-92.64893\\109\\-92.77344\\-91.92484\\109\\-90.82031\\-91.29851\\109\\-88.86719\\-90.43258\\109\\-84.96094\\-89.52173\\109\\-81.05469\\-88.45151\\109\\-79.10156\\-88.15217\\109\\-73.24219\\-87.54511\\109\\-71.28906\\-87.30451\\109\\-67.38281\\-86.66267\\109\\-61.52344\\-86.20766\\109\\-55.66406\\-85.93226\\109\\-53.71094\\-85.78164\\109\\-47.85156\\-85.59753\\109\\-40.03906\\-84.94267\\109\\-36.13281\\-84.69791\\109\\-30.27344\\-84.5322\\109\\-26.36719\\-84.5322\\109\\-22.46094\\-84.6365\\109\\-16.60156\\-85.01581\\109\\-10.74219\\-85.68062\\109\\-6.835938\\-86.29178\\109\\-4.882813\\-86.70058\\109\\-2.929688\\-87.38287\\109\\-0.9765625\\-87.73611\\109\\0.9765625\\-87.90399\\109\\2.929688\\-87.88599\\109\\6.835938\\-87.47182\\109\\8.789063\\-87.08148\\109\\10.74219\\-86.52734\\109\\14.64844\\-85.62679\\109\\18.55469\\-84.616\\109\\22.46094\\-84.07594\\109\\24.41406\\-83.939\\109\\32.22656\\-83.76786\\109\\36.13281\\-83.80979\\109\\45.89844\\-84.25653\\109\\51.75781\\-84.69791\\109\\57.61719\\-85.37553\\109\\69.33594\\-86.33533\\109\\71.28906\\-86.57132\\109\\75.19531\\-87.32584\\109\\77.14844\\-87.6424\\109\\81.05469\\-88.11588\\109\\83.00781\\-88.49492\\109\\86.91406\\-89.68131\\109\\88.86719\\-90.10262\\109\\90.82031\\-90.71886\\109\\92.77344\\-91.54734\\109\\94.72656\\-92.07334\\109\\96.67969\\-92.92471\\109\\98.63281\\-93.66509\\109\\100.5859\\-94.23389\\109\\102.5391\\-95.26695\\109\\104.4922\\-96.15887\\109\\106.4453\\-97.49194\\109\\110.3516\\-100.0042\\109\\114.0527\\-102.6016\\109\\116.2109\\-104.3691\\109\\120.1172\\-108.0509\\109\\122.2796\\-110.4141\\109\\123.5574\\-112.3672\\109\\126.5892\\-116.2734\\109\\127.9297\\-118.4374\\109\\130.075\\-122.1328\\109\\130.8945\\-124.0859\\109\\131.9328\\-126.0391\\109\\133.7891\\-130.0945\\109\\134.5576\\-131.8984\\109\\135.1318\\-133.8516\\109\\135.9863\\-135.8047\\109\\136.5519\\-137.7578\\109\\136.9644\\-139.7109\\109\\137.5625\\-141.6641\\109\\138.3188\\-143.6172\\109\\139.1944\\-147.5234\\109\\139.9208\\-149.4766\\109\\140.3902\\-151.4297\\109\\141.0461\\-155.3359\\109\\141.9155\\-159.2422\\109\\142.4033\\-163.1484\\109\\142.56\\-165.1016\\109\\143.285\\-176.8203\\109\\143.5785\\-182.6797\\109\\143.5785\\-186.5859\\109\\143.4991\\-190.4922\\109\\143.2339\\-194.3984\\109\\143.0238\\-198.3047\\109\\142.4888\\-206.1172\\109\\142.2956\\-208.0703\\109\\141.9772\\-210.0234\\109\\140.9563\\-213.9297\\109\\140.0776\\-217.8359\\109\\139.1982\\-219.7891\\109\\138.5874\\-221.7422\\109\\137.8192\\-223.6953\\109\\136.8556\\-225.6484\\109\\136.1228\\-227.6016\\109\\133.7891\\-231.3145\\109\\132.3369\\-233.4609\\109\\129.8828\\-236.4982\\109\\127.314\\-239.3203\\109\\124.0234\\-242.578\\109\\122.0703\\-244.2506\\109\\121.1215\\-245.1797\\109\\118.8217\\-247.1328\\109\\118.1641\\-247.7861\\109\\116.2109\\-249.3987\\109\\114.2578\\-250.6646\\109\\112.3047\\-252.2193\\109\\108.3984\\-255.6209\\109\\104.4922\\-258.5285\\109\\101.9149\\-260.8047\\109\\94.72656\\-266.7448\\109\\90.82031\\-269.6927\\109\\89.79762\\-270.5703\\109\\86.91406\\-272.8213\\109\\81.05469\\-277.0423\\109\\79.10156\\-278.2665\\109\\75.19531\\-281.1184\\109\\71.28906\\-283.3083\\109\\69.33594\\-284.6241\\109\\67.38281\\-285.6227\\109\\65.42969\\-286.938\\109\\63.47656\\-287.8914\\109\\61.52344\\-288.9673\\109\\59.57031\\-289.6033\\109\\57.61719\\-290.7835\\109\\55.66406\\-291.5109\\109\\53.71094\\-292.6664\\109\\51.75781\\-293.3549\\109\\49.80469\\-294.3401\\109\\47.85156\\-294.9432\\109\\45.89844\\-295.3983\\109\\43.94531\\-296.2369\\109\\41.99219\\-296.7836\\109\\40.03906\\-297.1953\\109\\36.13281\\-298.5599\\109\\32.22656\\-299.3972\\109\\30.27344\\-300.0416\\109\\28.32031\\-300.4474\\109\\20.50781\\-301.4066\\109\\16.60156\\-301.9931\\109\\12.69531\\-302.37\\109\\6.835938\\-302.6263\\109\\0.9765625\\-302.7003\\109\\-4.882813\\-302.6697\\109\\-10.74219\\-302.5021\\109\\-14.64844\\-302.2232\\109"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002246"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "246"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "181"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-301.4925\\111\\-28.32031\\-300.4589\\111\\-30.27344\\-300.0666\\111\\-32.22656\\-299.4227\\111\\-36.13281\\-298.5668\\111\\-40.03906\\-297.1857\\111\\-41.99219\\-296.7791\\111\\-43.94531\\-296.1723\\111\\-45.89844\\-295.3724\\111\\-47.85156\\-294.9134\\111\\-49.80469\\-294.3265\\111\\-51.75781\\-293.3357\\111\\-53.71094\\-292.6629\\111\\-55.66406\\-291.5141\\111\\-57.61719\\-290.8045\\111\\-59.57031\\-289.6331\\111\\-61.52344\\-288.9984\\111\\-65.42969\\-287.0299\\111\\-67.38281\\-285.8008\\111\\-69.33594\\-284.817\\111\\-71.28906\\-283.5067\\111\\-73.24219\\-282.6146\\111\\-75.19531\\-281.4029\\111\\-77.09478\\-280.3359\\111\\-79.10156\\-279.0598\\111\\-81.05469\\-277.6095\\111\\-83.00781\\-276.5746\\111\\-84.96094\\-275.404\\111\\-86.91406\\-274.1354\\111\\-88.86719\\-273.0384\\111\\-90.82031\\-271.5807\\111\\-92.77344\\-270.221\\111\\-94.72656\\-269.3257\\111\\-96.67969\\-267.9381\\111\\-98.63281\\-266.6883\\111\\-101.5302\\-264.7109\\111\\-102.5391\\-263.9131\\111\\-106.4453\\-261.4967\\111\\-112.3047\\-256.89\\111\\-114.2578\\-255.5617\\111\\-116.2109\\-253.8641\\111\\-120.1172\\-250.1471\\111\\-122.0703\\-248.4273\\111\\-126.847\\-243.2266\\111\\-128.5453\\-241.2734\\111\\-131.1826\\-237.3672\\111\\-131.8359\\-236.5184\\111\\-133.8882\\-233.4609\\111\\-136.0092\\-229.5547\\111\\-136.8001\\-227.6016\\111\\-138.5448\\-223.6953\\111\\-139.284\\-221.7422\\111\\-140.2196\\-219.7891\\111\\-141.3756\\-215.8828\\111\\-142.0591\\-213.9297\\111\\-142.4786\\-211.9766\\111\\-143.1183\\-208.0703\\111\\-144.0397\\-204.1641\\111\\-144.2929\\-202.2109\\111\\-144.6094\\-198.3047\\111\\-144.8468\\-194.3984\\111\\-144.9632\\-190.4922\\111\\-144.9667\\-186.5859\\111\\-144.7052\\-178.7734\\111\\-144.3988\\-172.9141\\111\\-144.1048\\-169.0078\\111\\-143.5941\\-165.1016\\111\\-142.9532\\-161.1953\\111\\-142.2796\\-155.3359\\111\\-141.8796\\-153.3828\\111\\-141.3058\\-151.4297\\111\\-140.4026\\-147.5234\\111\\-139.8253\\-145.5703\\111\\-139.019\\-143.6172\\111\\-138.0034\\-139.7109\\111\\-137.0939\\-137.7578\\111\\-136.589\\-135.8047\\111\\-135.9219\\-133.8516\\111\\-134.9847\\-131.8984\\111\\-134.2678\\-129.9453\\111\\-133.0906\\-127.9922\\111\\-132.1706\\-126.0391\\111\\-130.9792\\-124.0859\\111\\-130.0904\\-122.1328\\111\\-128.8737\\-120.1797\\111\\-126.1561\\-116.2734\\111\\-123.0259\\-112.3672\\111\\-121.2773\\-110.4141\\111\\-118.1641\\-107.2963\\111\\-115.1199\\-104.5547\\111\\-112.3047\\-102.2834\\111\\-109.7636\\-100.6484\\111\\-106.4453\\-98.6277\\111\\-104.4922\\-97.61349\\111\\-102.5391\\-96.32366\\111\\-100.5859\\-95.52759\\111\\-98.63281\\-94.47569\\111\\-94.72656\\-93.23354\\111\\-92.77344\\-92.3147\\111\\-90.82031\\-91.75893\\111\\-86.91406\\-90.31217\\111\\-83.00781\\-89.49731\\111\\-79.10156\\-88.51517\\111\\-75.19531\\-87.98952\\111\\-71.28906\\-87.67591\\111\\-65.42969\\-87.03306\\111\\-61.52344\\-86.54037\\111\\-59.57031\\-86.40033\\111\\-55.66406\\-86.21889\\111\\-49.80469\\-85.88214\\111\\-47.85156\\-85.82345\\111\\-41.99219\\-85.46384\\111\\-36.13281\\-85.01581\\111\\-32.22656\\-84.90137\\111\\-26.36719\\-84.79964\\111\\-22.46094\\-84.98588\\111\\-16.60156\\-85.37553\\111\\-12.69531\\-85.72013\\111\\-8.789063\\-86.30003\\111\\-6.835938\\-86.63958\\111\\-2.929688\\-87.73891\\111\\0.9765625\\-88.15971\\111\\2.929688\\-88.12729\\111\\6.835938\\-87.84116\\111\\8.789063\\-87.60341\\111\\12.69531\\-86.44102\\111\\14.64844\\-85.93529\\111\\20.50781\\-84.71331\\111\\22.46094\\-84.43871\\111\\26.36719\\-84.11901\\111\\32.22656\\-83.97635\\111\\38.08594\\-84.04688\\111\\45.89844\\-84.46948\\111\\49.80469\\-84.81174\\111\\53.71094\\-85.31709\\111\\55.66406\\-85.51172\\111\\61.52344\\-85.94032\\111\\67.38281\\-86.42993\\111\\69.33594\\-86.67662\\111\\73.24219\\-87.37416\\111\\75.19531\\-87.65508\\111\\79.10156\\-88.09692\\111\\81.05469\\-88.3929\\111\\84.96094\\-89.55539\\111\\88.86719\\-90.4687\\111\\90.82031\\-91.32322\\111\\94.72656\\-92.49317\\111\\96.67969\\-93.4139\\111\\98.63281\\-93.94934\\111\\102.5391\\-95.69676\\111\\104.4806\\-96.74219\\111\\107.5627\\-98.69531\\111\\108.3984\\-99.32059\\111\\112.3047\\-101.7969\\111\\115.6586\\-104.5547\\111\\120.1172\\-108.789\\111\\121.582\\-110.4141\\111\\124.6378\\-114.3203\\111\\125.9996\\-116.2734\\111\\128.5608\\-120.1797\\111\\129.448\\-122.1328\\111\\130.5857\\-124.0859\\111\\131.3039\\-126.0391\\111\\132.4016\\-127.9922\\111\\133.1281\\-129.9453\\111\\134.1302\\-131.8984\\111\\135.3698\\-135.8047\\111\\136.1677\\-137.7578\\111\\136.646\\-139.7109\\111\\137.0136\\-141.6641\\111\\138.3334\\-145.5703\\111\\139.1478\\-149.4766\\111\\139.8241\\-151.4297\\111\\140.275\\-153.3828\\111\\140.8395\\-157.2891\\111\\141.9409\\-163.1484\\111\\142.1913\\-165.1016\\111\\142.4756\\-169.0078\\111\\142.686\\-172.9141\\111\\142.97\\-182.6797\\111\\142.9572\\-188.5391\\111\\142.8889\\-192.4453\\111\\142.5781\\-200.2578\\111\\142.3\\-204.1641\\111\\142.0931\\-206.1172\\111\\141.7581\\-208.0703\\111\\141.2581\\-210.0234\\111\\140.5029\\-213.9297\\111\\140.0679\\-215.8828\\111\\139.2723\\-217.8359\\111\\138.1022\\-221.7422\\111\\137.1041\\-223.6953\\111\\136.4841\\-225.6484\\111\\135.3903\\-227.6016\\111\\134.4069\\-229.5547\\111\\133.7891\\-230.3376\\111\\130.1804\\-235.4141\\111\\128.5335\\-237.3672\\111\\124.0234\\-242.0475\\111\\120.6167\\-245.1797\\111\\118.1641\\-247.3594\\111\\116.1066\\-249.0859\\111\\114.2578\\-250.3902\\111\\112.3047\\-252.0099\\111\\110.3516\\-253.819\\111\\108.3984\\-255.5243\\111\\104.4922\\-258.5412\\111\\101.9546\\-260.8047\\111\\99.57862\\-262.7578\\111\\94.72656\\-266.9557\\111\\90.82031\\-269.8532\\111\\86.91406\\-273.0422\\111\\84.96094\\-274.5504\\111\\83.00781\\-275.8033\\111\\82.23815\\-276.4297\\111\\79.40383\\-278.3828\\111\\79.10156\\-278.667\\111\\75.19531\\-281.3125\\111\\73.24219\\-282.5237\\111\\71.28906\\-283.505\\111\\69.33594\\-284.8801\\111\\63.47656\\-288.25\\111\\59.57031\\-289.8854\\111\\57.61719\\-290.9586\\111\\55.66406\\-291.814\\111\\53.71094\\-292.8537\\111\\51.75781\\-293.5802\\111\\49.80469\\-294.5468\\111\\45.89844\\-295.5689\\111\\43.94531\\-296.4396\\111\\40.03906\\-297.3434\\111\\38.08594\\-298.1616\\111\\36.13281\\-298.6904\\111\\34.17969\\-299.0808\\111\\32.22656\\-299.5891\\111\\30.27344\\-300.216\\111\\28.32031\\-300.5463\\111\\20.50781\\-301.5423\\111\\16.60156\\-302.1621\\111\\12.69531\\-302.4817\\111\\6.835938\\-302.7003\\111\\0.9765625\\-302.7748\\111\\-4.882813\\-302.7411\\111\\-10.74219\\-302.5956\\111\\-14.64844\\-302.3477\\111\\-16.60156\\-302.1505\\111"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002245"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "252"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "182"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-302.0201\\113\\-20.50781\\-301.6353\\113\\-24.41406\\-301.0594\\113\\-28.32031\\-300.5575\\113\\-30.27344\\-300.216\\113\\-32.22656\\-299.599\\113\\-36.13281\\-298.6807\\113\\-38.08594\\-298.1258\\113\\-40.03906\\-297.3144\\113\\-43.94531\\-296.3662\\113\\-45.89844\\-295.5097\\113\\-49.80469\\-294.4865\\113\\-51.75781\\-293.4857\\113\\-53.71094\\-292.7712\\113\\-55.66406\\-291.6703\\113\\-57.61719\\-290.9128\\113\\-59.57031\\-289.7831\\113\\-61.52344\\-289.0895\\113\\-63.47656\\-288.2036\\113\\-69.33594\\-284.9023\\113\\-71.28906\\-283.5555\\113\\-73.24219\\-282.6755\\113\\-75.19531\\-281.4391\\113\\-77.14844\\-280.3439\\113\\-79.10156\\-279.0676\\113\\-81.05469\\-277.5869\\113\\-83.00781\\-276.5305\\113\\-84.96094\\-275.3412\\113\\-86.91406\\-274.0106\\113\\-88.86719\\-272.8722\\113\\-92.06543\\-270.5703\\113\\-92.77344\\-270.0001\\113\\-94.72656\\-269.0845\\113\\-98.63281\\-266.2018\\113\\-100.5859\\-264.9833\\113\\-104.4922\\-262.2309\\113\\-106.4453\\-260.9788\\113\\-108.3984\\-259.5005\\113\\-112.3047\\-256.2726\\113\\-114.0498\\-254.9453\\113\\-116.2109\\-253.125\\113\\-118.4372\\-251.0391\\113\\-120.1172\\-249.592\\113\\-122.6519\\-247.1328\\113\\-126.0173\\-243.2266\\113\\-127.9297\\-240.9326\\113\\-130.5496\\-237.3672\\113\\-133.7891\\-232.2136\\113\\-134.2876\\-231.5078\\113\\-135.1617\\-229.5547\\113\\-136.2817\\-227.6016\\113\\-136.9128\\-225.6484\\113\\-137.8762\\-223.6953\\113\\-139.2755\\-219.7891\\113\\-140.1772\\-217.8359\\113\\-141.183\\-213.9297\\113\\-141.8566\\-211.9766\\113\\-142.31\\-210.0234\\113\\-143.1655\\-204.1641\\113\\-143.8802\\-200.2578\\113\\-144.1083\\-198.3047\\113\\-144.3325\\-194.3984\\113\\-144.427\\-190.4922\\113\\-144.439\\-186.5859\\113\\-144.3894\\-182.6797\\113\\-144.1799\\-176.8203\\113\\-143.8802\\-172.9141\\113\\-143.6546\\-170.9609\\113\\-143.1003\\-167.0547\\113\\-142.5781\\-161.1953\\113\\-142.1193\\-157.2891\\113\\-141.716\\-155.3359\\113\\-141.1553\\-153.3828\\113\\-140.3795\\-149.4766\\113\\-139.8507\\-147.5234\\113\\-139.0553\\-145.5703\\113\\-138.0772\\-141.6641\\113\\-137.3119\\-139.7109\\113\\-136.188\\-135.8047\\113\\-135.2782\\-133.8516\\113\\-134.6029\\-131.8984\\113\\-132.6788\\-127.9922\\113\\-131.5178\\-126.0391\\113\\-130.6431\\-124.0859\\113\\-129.4592\\-122.1328\\113\\-128.463\\-120.1797\\113\\-127.0203\\-118.2266\\113\\-125.4433\\-116.2734\\113\\-124.0316\\-114.3203\\113\\-122.4594\\-112.3672\\113\\-120.7092\\-110.4141\\113\\-118.1641\\-107.8793\\113\\-114.2578\\-104.4445\\113\\-111.8738\\-102.6016\\113\\-108.3984\\-100.2058\\113\\-106.4453\\-99.23711\\113\\-104.4922\\-97.96733\\113\\-100.5859\\-95.83943\\113\\-96.67969\\-94.09334\\113\\-94.72656\\-93.62078\\113\\-90.82031\\-92.10491\\113\\-88.86719\\-91.5676\\113\\-86.91406\\-90.83023\\113\\-84.96094\\-90.23748\\113\\-81.05469\\-89.55059\\113\\-77.14844\\-88.64116\\113\\-75.19531\\-88.27649\\113\\-69.33594\\-87.76887\\113\\-65.42969\\-87.52423\\113\\-61.52344\\-87.03306\\113\\-57.61719\\-86.61713\\113\\-45.89844\\-85.92276\\113\\-41.99219\\-85.72179\\113\\-36.13281\\-85.35574\\113\\-30.27344\\-85.30343\\113\\-26.36719\\-85.17999\\113\\-16.60156\\-85.62855\\113\\-14.64844\\-85.79441\\113\\-10.74219\\-86.25967\\113\\-8.789063\\-86.60614\\113\\-4.882813\\-87.61683\\113\\-2.929688\\-87.96526\\113\\0.9765625\\-88.46892\\113\\2.929688\\-88.45516\\113\\8.789063\\-87.89819\\113\\10.74219\\-87.5811\\113\\14.64844\\-86.29178\\113\\16.60156\\-85.86787\\113\\18.55469\\-85.58418\\113\\22.46094\\-84.84779\\113\\26.36719\\-84.43522\\113\\30.27344\\-84.23447\\113\\34.17969\\-84.16964\\113\\38.08594\\-84.24331\\113\\45.89844\\-84.67692\\113\\47.85156\\-84.824\\113\\51.75781\\-85.37315\\113\\55.66406\\-85.73214\\113\\59.57031\\-85.9839\\113\\63.47656\\-86.31595\\113\\67.38281\\-86.77979\\113\\71.28906\\-87.43094\\113\\73.24219\\-87.69188\\113\\77.14844\\-88.07295\\113\\79.10156\\-88.33115\\113\\81.05469\\-88.78696\\113\\83.00781\\-89.43352\\113\\86.91406\\-90.28571\\113\\88.86719\\-91.06232\\113\\90.82031\\-91.71289\\113\\92.77344\\-92.23978\\113\\94.72656\\-93.10967\\113\\96.67969\\-93.75185\\113\\98.63281\\-94.29053\\113\\100.5859\\-95.31033\\113\\102.5391\\-96.08476\\113\\104.4922\\-97.38223\\113\\106.4453\\-98.5\\113\\112.3047\\-102.3613\\113\\115.0625\\-104.5547\\113\\118.1641\\-107.4042\\113\\120.1172\\-109.3887\\113\\122.7144\\-112.3672\\113\\124.1101\\-114.3203\\113\\125.3451\\-116.2734\\113\\126.7913\\-118.2266\\113\\128.0625\\-120.1797\\113\\129.0394\\-122.1328\\113\\130.1437\\-124.0859\\113\\130.92\\-126.0391\\113\\132.7046\\-129.9453\\113\\133.4383\\-131.8984\\113\\134.3858\\-133.8516\\113\\135.5378\\-137.7578\\113\\136.284\\-139.7109\\113\\137.0546\\-143.6172\\113\\138.3036\\-147.5234\\113\\139.0417\\-151.4297\\113\\140.1155\\-155.3359\\113\\141.2018\\-163.1484\\113\\141.5482\\-165.1016\\113\\142.0569\\-169.0078\\113\\142.3355\\-172.9141\\113\\142.5302\\-178.7734\\113\\142.6079\\-182.6797\\113\\142.5901\\-188.5391\\113\\142.5359\\-192.4453\\113\\142.4223\\-196.3516\\113\\142.2127\\-200.2578\\113\\141.7581\\-204.1641\\113\\141.0304\\-208.0703\\113\\140.4026\\-211.9766\\113\\139.9696\\-213.9297\\113\\139.2437\\-215.8828\\113\\138.2102\\-219.7891\\113\\137.3061\\-221.7422\\113\\136.6819\\-223.6953\\113\\135.9205\\-225.6484\\113\\133.7891\\-229.3988\\113\\132.3836\\-231.5078\\113\\130.8281\\-233.4609\\113\\129.8828\\-234.8138\\113\\127.9297\\-237.1592\\113\\125.9014\\-239.3203\\113\\124.0234\\-241.4203\\113\\122.0703\\-243.3661\\113\\120.1172\\-245.0263\\113\\115.673\\-249.0859\\113\\114.2578\\-250.1496\\113\\111.0397\\-252.9922\\113\\108.3984\\-255.4408\\113\\104.4922\\-258.554\\113\\102.0358\\-260.8047\\113\\99.6933\\-262.7578\\113\\94.72656\\-267.1555\\113\\90.82031\\-270.0357\\113\\86.91406\\-273.2804\\113\\84.96094\\-274.8363\\113\\81.05469\\-277.4173\\113\\79.10156\\-278.9764\\113\\77.14844\\-280.3753\\113\\75.19531\\-281.509\\113\\73.24219\\-282.8211\\113\\71.28906\\-283.7677\\113\\70.69798\\-284.2422\\113\\67.38281\\-286.3735\\113\\65.42969\\-287.3565\\113\\63.47656\\-288.5571\\113\\61.52344\\-289.2368\\113\\59.57031\\-290.2523\\113\\57.61719\\-291.1194\\113\\55.66406\\-292.2033\\113\\49.80469\\-294.7054\\113\\47.85156\\-295.1736\\113\\45.89844\\-295.802\\113\\43.94531\\-296.5983\\113\\41.99219\\-297.0043\\113\\40.03906\\-297.5247\\113\\38.08594\\-298.367\\113\\34.17969\\-299.2253\\113\\30.27344\\-300.3525\\113\\28.32031\\-300.6429\\113\\22.46094\\-301.3855\\113\\18.55469\\-302.0349\\113\\16.60156\\-302.302\\113\\12.69531\\-302.5765\\113\\6.835938\\-302.7638\\113\\0.9765625\\-302.8344\\113\\-4.882813\\-302.8023\\113\\-8.789063\\-302.7291\\113\\-12.69531\\-302.5838\\113\\-16.60156\\-302.2818\\113"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002244"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "246"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "183"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-302.1505\\115\\-22.46094\\-301.4337\\115\\-28.32031\\-300.6495\\115\\-30.27344\\-300.3434\\115\\-32.11031\\-299.8672\\115\\-34.17969\\-299.2216\\115\\-38.08594\\-298.3205\\115\\-40.03906\\-297.4793\\115\\-43.94531\\-296.5457\\115\\-45.89844\\-295.6665\\115\\-49.80469\\-294.6036\\115\\-51.75781\\-293.6473\\115\\-53.71094\\-292.8736\\115\\-55.66406\\-291.8538\\115\\-57.61719\\-291.0065\\115\\-59.57031\\-289.9853\\115\\-63.47656\\-288.3778\\115\\-69.33594\\-284.9987\\115\\-71.28906\\-283.623\\115\\-73.24219\\-282.7329\\115\\-75.19531\\-281.4651\\115\\-77.14844\\-280.375\\115\\-79.10156\\-279.0718\\115\\-81.05469\\-277.5802\\115\\-83.00781\\-276.5006\\115\\-84.96094\\-275.3163\\115\\-86.91406\\-273.9177\\115\\-88.86719\\-272.7104\\115\\-92.77344\\-269.8664\\115\\-94.72656\\-268.7954\\115\\-96.67969\\-267.4318\\115\\-98.63281\\-265.8512\\115\\-100.5859\\-264.45\\115\\-102.5391\\-263.28\\115\\-108.3984\\-258.8594\\115\\-112.3047\\-255.793\\115\\-114.2578\\-254.0867\\115\\-120.1172\\-248.6674\\115\\-121.6872\\-247.1328\\115\\-125.1157\\-243.2266\\115\\-125.9766\\-242.3115\\115\\-128.4539\\-239.3203\\115\\-130.938\\-235.4141\\115\\-132.3178\\-233.4609\\115\\-133.2705\\-231.5078\\115\\-134.5408\\-229.5547\\115\\-135.3616\\-227.6016\\115\\-136.3685\\-225.6484\\115\\-136.9893\\-223.6953\\115\\-137.9005\\-221.7422\\115\\-139.17\\-217.8359\\115\\-139.9896\\-215.8828\\115\\-140.9444\\-211.9766\\115\\-142.0379\\-208.0703\\115\\-142.3562\\-206.1172\\115\\-143.2096\\-198.3047\\115\\-143.5941\\-194.3984\\115\\-143.8042\\-190.4922\\115\\-143.8525\\-186.5859\\115\\-143.7916\\-182.6797\\115\\-143.5627\\-178.7734\\115\\-143.2002\\-174.8672\\115\\-142.6575\\-167.0547\\115\\-142.1456\\-161.1953\\115\\-140.9525\\-155.3359\\115\\-140.2552\\-151.4297\\115\\-139.7155\\-149.4766\\115\\-139.0033\\-147.5234\\115\\-138.0591\\-143.6172\\115\\-137.3147\\-141.6641\\115\\-136.3281\\-137.7578\\115\\-135.4813\\-135.8047\\115\\-134.0792\\-131.8984\\115\\-133.0042\\-129.9453\\115\\-132.1637\\-127.9922\\115\\-131.0106\\-126.0391\\115\\-130.1586\\-124.0859\\115\\-127.9297\\-120.3424\\115\\-126.5206\\-118.2266\\115\\-124.0234\\-115.0671\\115\\-121.7599\\-112.3672\\115\\-120.1172\\-110.5403\\115\\-118.1641\\-108.5189\\115\\-115.9712\\-106.5078\\115\\-113.5938\\-104.5547\\115\\-110.3516\\-101.9757\\115\\-108.214\\-100.6484\\115\\-106.4453\\-99.66585\\115\\-104.4922\\-98.40932\\115\\-102.5391\\-97.40747\\115\\-100.5859\\-96.19022\\115\\-98.63281\\-95.4632\\115\\-96.67969\\-94.48801\\115\\-94.72656\\-93.86609\\115\\-92.77344\\-93.39304\\115\\-90.82031\\-92.51479\\115\\-86.91406\\-91.43823\\115\\-84.96094\\-90.7059\\115\\-83.00781\\-90.2489\\115\\-77.14844\\-89.26431\\115\\-75.19531\\-88.75283\\115\\-73.24219\\-88.4111\\115\\-69.33594\\-88.02591\\115\\-65.42969\\-87.818\\115\\-59.57031\\-87.3401\\115\\-55.66406\\-86.84787\\115\\-49.80469\\-86.39896\\115\\-45.89844\\-86.18105\\115\\-38.08594\\-85.69592\\115\\-36.13281\\-85.62022\\115\\-30.27344\\-85.5857\\115\\-26.36719\\-85.52117\\115\\-20.50781\\-85.68423\\115\\-16.60156\\-85.8467\\115\\-12.69531\\-86.25256\\115\\-10.74219\\-86.54037\\115\\-6.835938\\-87.55849\\115\\-2.929688\\-88.20979\\115\\0.9765625\\-89.04237\\115\\2.929688\\-89.05838\\115\\8.789063\\-88.13973\\115\\10.74219\\-87.89092\\115\\12.69531\\-87.44728\\115\\14.64844\\-86.64194\\115\\16.60156\\-86.18521\\115\\24.56826\\-85.02344\\115\\26.36719\\-84.78771\\115\\30.27344\\-84.51469\\115\\36.13281\\-84.39359\\115\\40.03906\\-84.53226\\115\\45.89844\\-84.86185\\115\\47.85156\\-85.04688\\115\\51.75781\\-85.58062\\115\\59.57031\\-86.18105\\115\\63.47656\\-86.56365\\115\\67.38281\\-87.19275\\115\\71.28906\\-87.69971\\115\\77.14844\\-88.28071\\115\\79.10156\\-88.67837\\115\\81.05469\\-89.30327\\115\\84.96094\\-90.15314\\115\\86.91406\\-90.75983\\115\\88.86719\\-91.54343\\115\\90.82031\\-92.03645\\115\\92.77344\\-92.69951\\115\\94.72656\\-93.54332\\115\\96.67969\\-94.01411\\115\\100.5859\\-95.6946\\115\\102.5391\\-96.64063\\115\\104.4922\\-97.87327\\115\\106.4453\\-99.22861\\115\\108.3984\\-100.2421\\115\\111.7374\\-102.6016\\115\\114.2578\\-104.5171\\115\\118.1641\\-108.0108\\115\\120.4542\\-110.4141\\115\\122.096\\-112.3672\\115\\126.3248\\-118.2266\\115\\127.4111\\-120.1797\\115\\128.6716\\-122.1328\\115\\129.5022\\-124.0859\\115\\130.5446\\-126.0391\\115\\131.2086\\-127.9922\\115\\132.2428\\-129.9453\\115\\132.9129\\-131.8984\\115\\133.7968\\-133.8516\\115\\134.5127\\-135.8047\\115\\135.019\\-137.7578\\115\\136.3386\\-141.6641\\115\\137.038\\-145.5703\\115\\138.2127\\-149.4766\\115\\138.8683\\-153.3828\\115\\139.2723\\-155.3359\\115\\139.8112\\-157.2891\\115\\140.1838\\-159.2422\\115\\141.0762\\-167.0547\\115\\141.7717\\-172.9141\\115\\142.0229\\-176.8203\\115\\142.1605\\-180.7266\\115\\142.2079\\-186.5859\\115\\142.1642\\-190.4922\\115\\141.9294\\-196.3516\\115\\141.7717\\-198.3047\\115\\140.7731\\-206.1172\\115\\140.2321\\-210.0234\\115\\139.7586\\-211.9766\\115\\139.0999\\-213.9297\\115\\138.2166\\-217.8359\\115\\137.409\\-219.7891\\115\\136.1989\\-223.6953\\115\\135.1509\\-225.6484\\115\\134.2839\\-227.6016\\115\\131.4468\\-231.5078\\115\\128.7458\\-235.4141\\115\\125.1518\\-239.3203\\115\\124.0234\\-240.6148\\115\\121.5439\\-243.2266\\115\\120.1172\\-244.4522\\115\\116.2109\\-248.2654\\115\\112.3047\\-251.7176\\115\\108.3984\\-255.4155\\115\\104.4922\\-258.6094\\115\\102.1949\\-260.8047\\115\\100.5859\\-262.1046\\115\\98.63281\\-263.8069\\115\\94.72656\\-267.3378\\115\\92.77344\\-268.8973\\115\\90.82031\\-270.268\\115\\86.91406\\-273.5229\\115\\84.96094\\-275.0894\\115\\82.99842\\-276.4297\\115\\81.05469\\-277.6475\\115\\79.10156\\-279.2307\\115\\77.14844\\-280.7083\\115\\75.19531\\-281.7227\\115\\73.24219\\-283.0591\\115\\71.28906\\-284.1221\\115\\69.33594\\-285.3415\\115\\67.38281\\-286.6805\\115\\65.42969\\-287.5895\\115\\63.47656\\-288.7758\\115\\61.52344\\-289.3766\\115\\59.57031\\-290.5432\\115\\57.61719\\-291.2964\\115\\55.66406\\-292.4706\\115\\53.71094\\-293.202\\115\\51.75781\\-294.1494\\115\\49.80469\\-294.8423\\115\\47.85156\\-295.3036\\115\\45.89844\\-296.0754\\115\\43.94531\\-296.7302\\115\\41.99219\\-297.1296\\115\\40.03906\\-297.761\\115\\38.08594\\-298.5171\\115\\34.17969\\-299.403\\115\\32.22656\\-300.0428\\115\\30.27344\\-300.4624\\115\\22.46094\\-301.5182\\115\\18.55469\\-302.1985\\115\\16.60156\\-302.4101\\115\\12.69531\\-302.6648\\115\\4.882813\\-302.8503\\115\\-0.9765625\\-302.8929\\115\\-4.882813\\-302.8716\\115\\-12.69531\\-302.6648\\115\\-16.60156\\-302.3884\\115"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002243"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "246"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "184"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-301.9781\\117\\-22.46094\\-301.5566\\117\\-30.27344\\-300.4427\\117\\-32.22656\\-300.0428\\117\\-34.17969\\-299.3611\\117\\-38.08594\\-298.4792\\117\\-40.03906\\-297.6699\\117\\-41.99219\\-297.0628\\117\\-43.94531\\-296.6737\\117\\-45.89844\\-295.8594\\117\\-47.85156\\-295.198\\117\\-49.80469\\-294.7131\\117\\-55.66406\\-292.1069\\117\\-57.61719\\-291.0988\\117\\-61.52344\\-289.2303\\117\\-63.47656\\-288.5208\\117\\-65.42969\\-287.3356\\117\\-67.54701\\-286.1953\\117\\-70.63526\\-284.2422\\117\\-71.28906\\-283.7174\\117\\-73.24219\\-282.8139\\117\\-75.19531\\-281.5115\\117\\-77.14844\\-280.4504\\117\\-79.10156\\-279.0914\\117\\-81.05469\\-277.5936\\117\\-84.96094\\-275.2841\\117\\-86.91406\\-273.8557\\117\\-88.86719\\-272.561\\117\\-92.77344\\-269.7555\\117\\-96.67969\\-267.1853\\117\\-97.26414\\-266.6641\\117\\-100.5859\\-264.0451\\117\\-102.5391\\-262.8317\\117\\-104.4922\\-261.4398\\117\\-105.16\\-260.8047\\117\\-107.6547\\-258.8516\\117\\-108.3984\\-258.1755\\117\\-112.3047\\-255.1614\\117\\-114.2578\\-253.4285\\117\\-118.1641\\-249.7394\\117\\-120.8512\\-247.1328\\117\\-122.6651\\-245.1797\\117\\-126.0006\\-241.2734\\117\\-128.9272\\-237.3672\\117\\-130.2749\\-235.4141\\117\\-131.2002\\-233.4609\\117\\-132.5479\\-231.5078\\117\\-134.6717\\-227.6016\\117\\-135.4772\\-225.6484\\117\\-136.3955\\-223.6953\\117\\-136.9645\\-221.7422\\117\\-137.7792\\-219.7891\\117\\-138.4452\\-217.8359\\117\\-138.9266\\-215.8828\\117\\-140.2565\\-211.9766\\117\\-141.0683\\-208.0703\\117\\-141.9794\\-204.1641\\117\\-142.4467\\-200.2578\\117\\-142.715\\-196.3516\\117\\-142.8841\\-192.4453\\117\\-142.9728\\-186.5859\\117\\-142.9321\\-182.6797\\117\\-142.8207\\-178.7734\\117\\-142.572\\-172.9141\\117\\-142.3418\\-169.0078\\117\\-141.9599\\-165.1016\\117\\-140.9525\\-159.2422\\117\\-140.3906\\-155.3359\\117\\-140.03\\-153.3828\\117\\-139.3885\\-151.4297\\117\\-137.948\\-145.5703\\117\\-137.2208\\-143.6172\\117\\-136.3642\\-139.7109\\117\\-135.5781\\-137.7578\\117\\-134.2773\\-133.8516\\117\\-133.274\\-131.8984\\117\\-132.4811\\-129.9453\\117\\-131.376\\-127.9922\\117\\-130.571\\-126.0391\\117\\-129.4511\\-124.0859\\117\\-128.5517\\-122.1328\\117\\-124.4154\\-116.2734\\117\\-122.8612\\-114.3203\\117\\-121.1462\\-112.3672\\117\\-118.1641\\-109.1424\\117\\-115.282\\-106.5078\\117\\-112.3047\\-104.0129\\117\\-110.3516\\-102.5271\\117\\-106.4453\\-100.0258\\117\\-104.4922\\-99.0551\\117\\-102.5391\\-97.80392\\117\\-100.5859\\-96.7345\\117\\-98.63281\\-95.80631\\117\\-96.67969\\-95.04605\\117\\-94.72656\\-94.1488\\117\\-92.77344\\-93.69118\\117\\-90.82031\\-93.06881\\117\\-88.86719\\-92.31859\\117\\-84.96094\\-91.34274\\117\\-81.05469\\-90.2922\\117\\-75.19531\\-89.36588\\117\\-71.28906\\-88.58543\\117\\-67.38281\\-88.16195\\117\\-65.42969\\-88.06368\\117\\-57.61719\\-87.52795\\117\\-55.66406\\-87.27989\\117\\-49.80469\\-86.72707\\117\\-43.94531\\-86.29297\\117\\-38.08594\\-85.92188\\117\\-36.13281\\-85.8467\\117\\-32.22656\\-85.797\\117\\-26.36719\\-85.77156\\117\\-20.50781\\-85.88214\\117\\-16.60156\\-86.09327\\117\\-12.69531\\-86.53032\\117\\-10.74219\\-86.95255\\117\\-8.789063\\-87.54511\\117\\-4.882813\\-88.15971\\117\\-2.929688\\-88.57523\\117\\-0.9765625\\-89.237\\117\\0.9765625\\-89.55492\\117\\2.929688\\-89.55059\\117\\4.882813\\-89.37593\\117\\6.835938\\-89.04503\\117\\8.789063\\-88.47628\\117\\12.69531\\-87.78191\\117\\16.60156\\-86.50096\\117\\22.46094\\-85.63148\\117\\30.27344\\-84.83643\\117\\36.13281\\-84.63157\\117\\40.03906\\-84.71947\\117\\45.89844\\-85.07769\\117\\49.80469\\-85.51172\\117\\53.71094\\-85.87193\\117\\55.66406\\-86\\117\\61.52344\\-86.57406\\117\\65.42969\\-87.21886\\117\\69.33594\\-87.69971\\117\\75.19531\\-88.25598\\117\\77.14844\\-88.57895\\117\\79.10156\\-89.17737\\117\\81.05469\\-89.66492\\117\\84.96094\\-90.52945\\117\\86.91406\\-91.35873\\117\\90.82031\\-92.40675\\117\\92.77344\\-93.27227\\117\\96.67969\\-94.39413\\117\\98.63281\\-95.36312\\117\\100.5859\\-96.06419\\117\\102.5391\\-97.32411\\117\\104.4922\\-98.38142\\117\\106.4453\\-99.69644\\117\\108.1461\\-100.6484\\117\\110.3516\\-102.0425\\117\\113.5274\\-104.5547\\117\\115.8255\\-106.5078\\117\\118.1641\\-108.7111\\117\\121.4126\\-112.3672\\117\\122.9858\\-114.3203\\117\\124.4236\\-116.2734\\117\\125.5732\\-118.2266\\117\\126.9348\\-120.1797\\117\\128.1684\\-122.1328\\117\\130.0167\\-126.0391\\117\\131.5226\\-129.9453\\117\\132.4654\\-131.8984\\117\\133.1001\\-133.8516\\117\\133.9554\\-135.8047\\117\\134.5833\\-137.7578\\117\\135.0555\\-139.7109\\117\\136.3163\\-143.6172\\117\\136.9845\\-147.5234\\117\\137.4111\\-149.4766\\117\\138.0165\\-151.4297\\117\\138.3882\\-153.3828\\117\\139.3073\\-159.2422\\117\\139.7723\\-161.1953\\117\\140.1184\\-163.1484\\117\\140.5268\\-167.0547\\117\\140.9686\\-172.9141\\117\\141.3176\\-178.7734\\117\\141.4327\\-182.6797\\117\\141.4588\\-186.5859\\117\\141.3156\\-192.4453\\117\\140.9725\\-198.3047\\117\\140.663\\-202.2109\\117\\140.2588\\-206.1172\\117\\139.877\\-208.0703\\117\\139.3411\\-210.0234\\117\\138.1147\\-215.8828\\117\\137.3796\\-217.8359\\117\\136.3147\\-221.7422\\117\\135.3559\\-223.6953\\117\\134.5262\\-225.6484\\117\\132.0858\\-229.5547\\117\\130.7189\\-231.5078\\117\\129.2341\\-233.4609\\117\\127.9382\\-235.4141\\117\\122.8966\\-241.2734\\117\\121.0375\\-243.2266\\117\\120.1172\\-244.0466\\117\\115.0836\\-249.0859\\117\\112.3047\\-251.5884\\117\\108.3984\\-255.419\\117\\104.4922\\-258.7132\\117\\102.3934\\-260.8047\\117\\100.5859\\-262.2064\\117\\98.63281\\-263.9283\\117\\94.72656\\-267.5232\\117\\92.77344\\-269.1682\\117\\90.86772\\-270.5703\\117\\84.96094\\-275.3294\\117\\83.00781\\-276.7715\\117\\81.05469\\-277.945\\117\\77.14844\\-280.972\\117\\75.19531\\-282.0431\\117\\71.28906\\-284.5222\\117\\69.33594\\-285.5911\\117\\67.38281\\-286.9164\\117\\65.42969\\-287.854\\117\\63.47656\\-288.9384\\117\\61.52344\\-289.5777\\117\\59.57031\\-290.7694\\117\\57.61719\\-291.5182\\117\\55.66406\\-292.6718\\117\\53.71094\\-293.3895\\117\\51.75781\\-294.3917\\117\\49.80469\\-294.9665\\117\\47.85156\\-295.4371\\117\\45.89844\\-296.3204\\117\\41.99219\\-297.2725\\117\\40.03906\\-298.0627\\117\\38.08594\\-298.6516\\117\\34.17969\\-299.6063\\117\\32.22656\\-300.231\\117\\30.27344\\-300.58\\117\\24.41406\\-301.3619\\117\\20.50781\\-302.0735\\117\\16.60156\\-302.5179\\117\\10.74219\\-302.7969\\117\\2.929688\\-302.9479\\117\\-0.9765625\\-302.9803\\117\\-6.835938\\-302.9036\\117\\-12.69531\\-302.7239\\117\\-16.60156\\-302.4817\\117\\-18.55469\\-302.2818\\117"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002242"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "244"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "185"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-302.1365\\119\\-24.41406\\-301.3619\\119\\-30.27344\\-300.5468\\119\\-32.22656\\-300.1992\\119\\-34.17969\\-299.5352\\119\\-36.13281\\-299.0165\\119\\-38.08594\\-298.6182\\119\\-41.99219\\-297.1749\\119\\-43.94531\\-296.7667\\119\\-45.89844\\-296.1048\\119\\-47.85156\\-295.2911\\119\\-49.80469\\-294.8046\\119\\-51.75781\\-294.0314\\119\\-53.71094\\-293.0988\\119\\-55.66406\\-292.3477\\119\\-57.61719\\-291.2048\\119\\-59.57031\\-290.4249\\119\\-61.52344\\-289.3052\\119\\-63.47656\\-288.6401\\119\\-65.42969\\-287.4431\\119\\-67.38281\\-286.4869\\119\\-70.80503\\-284.2422\\119\\-71.28906\\-283.8417\\119\\-73.24219\\-282.9034\\119\\-75.19531\\-281.5771\\119\\-77.14844\\-280.5357\\119\\-79.10156\\-279.1372\\119\\-81.05469\\-277.6258\\119\\-83.00781\\-276.5163\\119\\-84.96094\\-275.2565\\119\\-88.78941\\-272.5234\\119\\-94.18688\\-268.6172\\119\\-96.67969\\-266.9172\\119\\-99.33143\\-264.7109\\119\\-100.5859\\-263.7459\\119\\-104.4922\\-260.9888\\119\\-108.3984\\-257.6713\\119\\-109.4396\\-256.8984\\119\\-112.3047\\-254.3982\\119\\-115.9769\\-251.0391\\119\\-118.1641\\-248.9618\\119\\-120.1172\\-246.9921\\119\\-121.7751\\-245.1797\\119\\-124.0234\\-242.5952\\119\\-128.1758\\-237.3672\\119\\-129.2813\\-235.4141\\119\\-130.6074\\-233.4609\\119\\-131.8359\\-231.1966\\119\\-133.8736\\-227.6016\\119\\-136.3866\\-221.7422\\119\\-136.8826\\-219.7891\\119\\-137.5156\\-217.8359\\119\\-138.2491\\-215.8828\\119\\-139.1862\\-211.9766\\119\\-139.9185\\-210.0234\\119\\-140.3795\\-208.0703\\119\\-141.0181\\-204.1641\\119\\-141.716\\-200.2578\\119\\-141.9992\\-198.3047\\119\\-142.2928\\-194.3984\\119\\-142.4112\\-190.4922\\119\\-142.4553\\-184.6328\\119\\-142.3915\\-180.7266\\119\\-142.2547\\-176.8203\\119\\-141.8917\\-170.9609\\119\\-140.8534\\-163.1484\\119\\-140.6411\\-161.1953\\119\\-140.0929\\-157.2891\\119\\-139.0758\\-153.3828\\119\\-138.3259\\-149.4766\\119\\-137.7624\\-147.5234\\119\\-137.0809\\-145.5703\\119\\-136.3426\\-141.6641\\119\\-134.9325\\-137.7578\\119\\-134.4088\\-135.8047\\119\\-133.4706\\-133.8516\\119\\-132.6819\\-131.8984\\119\\-131.7479\\-129.9453\\119\\-129.9869\\-126.0391\\119\\-127.9297\\-122.1669\\119\\-126.6556\\-120.1797\\119\\-125.0719\\-118.2266\\119\\-122.3617\\-114.3203\\119\\-120.1172\\-111.9281\\119\\-118.1641\\-109.7418\\119\\-116.2109\\-107.8461\\119\\-114.2578\\-106.187\\119\\-109.6259\\-102.6016\\119\\-108.3984\\-101.7214\\119\\-106.4453\\-100.5284\\119\\-104.4922\\-99.51334\\119\\-102.5391\\-98.23467\\119\\-100.5859\\-97.32567\\119\\-98.63281\\-96.1454\\119\\-96.67969\\-95.46706\\119\\-94.72656\\-94.54492\\119\\-92.77344\\-93.93534\\119\\-90.82031\\-93.49748\\119\\-86.91406\\-92.18674\\119\\-83.00781\\-91.40161\\119\\-79.10156\\-90.34959\\119\\-77.14844\\-90.02901\\119\\-71.28906\\-89.20369\\119\\-67.38281\\-88.51311\\119\\-63.47656\\-88.14233\\119\\-55.66406\\-87.66331\\119\\-53.71094\\-87.44777\\119\\-47.85156\\-86.98463\\119\\-41.99219\\-86.41246\\119\\-34.17969\\-86.02774\\119\\-28.32031\\-85.95586\\119\\-22.46094\\-86.03274\\119\\-16.60156\\-86.33134\\119\\-14.64844\\-86.53032\\119\\-12.69531\\-86.90625\\119\\-8.789063\\-87.818\\119\\-4.882813\\-88.46892\\119\\-2.929688\\-89.19343\\119\\-0.9765625\\-89.66917\\119\\0.9765625\\-89.88467\\119\\2.929688\\-89.88443\\119\\4.882813\\-89.77863\\119\\6.835938\\-89.53773\\119\\8.789063\\-89.11325\\119\\10.74219\\-88.44141\\119\\14.64844\\-87.53944\\119\\16.60156\\-86.92143\\119\\18.55469\\-86.48828\\119\\22.46094\\-85.89474\\119\\30.27344\\-85.24281\\119\\36.13281\\-84.9287\\119\\41.99219\\-85.04688\\119\\47.85156\\-85.42057\\119\\51.75781\\-85.80138\\119\\57.61719\\-86.31981\\119\\59.57031\\-86.54037\\119\\63.47656\\-87.21886\\119\\67.38281\\-87.69067\\119\\73.24219\\-88.22778\\119\\75.19531\\-88.51601\\119\\79.10156\\-89.54739\\119\\83.00781\\-90.371\\119\\84.96094\\-91.12522\\119\\86.91406\\-91.73269\\119\\88.86719\\-92.21599\\119\\92.77344\\-93.64562\\119\\94.72656\\-94.11446\\119\\98.63281\\-95.74731\\119\\100.5859\\-96.64453\\119\\102.5391\\-97.7547\\119\\104.4922\\-99.03597\\119\\106.4453\\-100.0625\\119\\108.3984\\-101.3909\\119\\110.3408\\-102.6016\\119\\112.3047\\-104.1077\\119\\115.1002\\-106.5078\\119\\118.1641\\-109.4573\\119\\120.1172\\-111.668\\119\\120.8895\\-112.3672\\119\\122.5294\\-114.3203\\119\\123.7131\\-116.2734\\119\\125.0234\\-118.2266\\119\\126.4381\\-120.1797\\119\\127.4827\\-122.1328\\119\\128.6371\\-124.0859\\119\\129.4049\\-126.0391\\119\\130.3914\\-127.9922\\119\\131.0152\\-129.9453\\119\\132.6072\\-133.8516\\119\\133.1959\\-135.8047\\119\\134.071\\-137.7578\\119\\135.0518\\-141.6641\\119\\136.2338\\-145.5703\\119\\136.6028\\-147.5234\\119\\137.168\\-151.4297\\119\\138.1806\\-155.3359\\119\\139.2137\\-163.1484\\119\\139.9129\\-167.0547\\119\\140.1457\\-169.0078\\119\\140.5263\\-174.8672\\119\\140.679\\-178.7734\\119\\140.7559\\-182.6797\\119\\140.7292\\-190.4922\\119\\140.625\\-194.3984\\119\\140.435\\-198.3047\\119\\140.1276\\-202.2109\\119\\139.7992\\-204.1641\\119\\138.9732\\-208.0703\\119\\138.3882\\-211.9766\\119\\137.958\\-213.9297\\119\\137.2204\\-215.8828\\119\\136.3997\\-219.7891\\119\\135.4685\\-221.7422\\119\\134.7034\\-223.6953\\119\\133.7891\\-225.4676\\119\\131.8359\\-228.658\\119\\131.1364\\-229.5547\\119\\128.6654\\-233.4609\\119\\127.1282\\-235.4141\\119\\125.374\\-237.3672\\119\\123.8393\\-239.3203\\119\\122.4261\\-241.2734\\119\\120.5754\\-243.2266\\119\\118.6207\\-245.1797\\119\\116.2109\\-247.7957\\119\\114.2578\\-249.698\\119\\112.3047\\-251.4627\\119\\108.3984\\-255.4226\\119\\104.5009\\-258.8516\\119\\102.5391\\-260.8773\\119\\98.63281\\-264.0576\\119\\95.9109\\-266.6641\\119\\92.77344\\-269.4024\\119\\88.86719\\-272.5756\\119\\83.83875\\-276.4297\\119\\79.10156\\-279.7487\\119\\77.14844\\-281.213\\119\\75.19531\\-282.4518\\119\\73.24219\\-283.3958\\119\\71.28906\\-284.8046\\119\\67.38281\\-287.1161\\119\\65.42969\\-288.1726\\119\\63.47656\\-289.0891\\119\\61.52344\\-289.8611\\119\\59.57031\\-290.9496\\119\\57.61719\\-291.7984\\119\\55.66406\\-292.8532\\119\\53.71094\\-293.6004\\119\\51.75781\\-294.5811\\119\\47.85156\\-295.6191\\119\\45.89844\\-296.4987\\119\\41.99219\\-297.4411\\119\\40.03906\\-298.3108\\119\\36.13281\\-299.2513\\119\\32.22656\\-300.3733\\119\\26.36719\\-301.2092\\119\\20.50781\\-302.234\\119\\18.55469\\-302.4526\\119\\14.64844\\-302.7065\\119\\6.835938\\-302.9695\\119\\-0.9765625\\-303.0791\\119\\-6.835938\\-302.9651\\119\\-12.69531\\-302.7859\\119\\-16.60156\\-302.5765\\119"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002241"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "249"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "186"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-301.9203\\121\\-24.41406\\-301.4785\\121\\-30.27344\\-300.6473\\121\\-32.22656\\-300.3342\\121\\-36.13281\\-299.144\\121\\-38.08594\\-298.7362\\121\\-40.03906\\-298.1616\\121\\-41.99219\\-297.303\\121\\-43.94531\\-296.8587\\121\\-45.89844\\-296.2865\\121\\-47.85156\\-295.3929\\121\\-49.80469\\-294.907\\121\\-51.75781\\-294.243\\121\\-53.71094\\-293.2428\\121\\-55.66406\\-292.5255\\121\\-57.61719\\-291.3291\\121\\-59.57031\\-290.6019\\121\\-61.52344\\-289.3854\\121\\-63.47656\\-288.758\\121\\-65.42969\\-287.5804\\121\\-67.38281\\-286.6369\\121\\-71.28906\\-283.9943\\121\\-73.24219\\-283.001\\121\\-75.19531\\-281.6659\\121\\-77.14844\\-280.6282\\121\\-81.05469\\-277.6938\\121\\-83.00781\\-276.546\\121\\-84.96094\\-275.2692\\121\\-85.96978\\-274.4766\\121\\-92.77344\\-269.5493\\121\\-94.72656\\-268.0157\\121\\-96.58203\\-266.6641\\121\\-98.98868\\-264.7109\\121\\-101.6101\\-262.7578\\121\\-104.0761\\-260.8047\\121\\-106.4453\\-258.8267\\121\\-108.3984\\-257.2767\\121\\-110.3516\\-255.6127\\121\\-114.2578\\-251.9542\\121\\-115.3122\\-251.0391\\121\\-118.1641\\-248.174\\121\\-119.0956\\-247.1328\\121\\-121.0273\\-245.1797\\121\\-122.7481\\-243.2266\\121\\-124.2993\\-241.2734\\121\\-125.6021\\-239.3203\\121\\-127.1821\\-237.3672\\121\\-128.6331\\-235.4141\\121\\-131.8359\\-229.704\\121\\-133.934\\-225.6484\\121\\-134.7404\\-223.6953\\121\\-135.4389\\-221.7422\\121\\-136.2478\\-219.7891\\121\\-137.2246\\-215.8828\\121\\-137.9849\\-213.9297\\121\\-138.8568\\-210.0234\\121\\-139.9304\\-206.1172\\121\\-140.3209\\-204.1641\\121\\-140.5804\\-202.2109\\121\\-141.2233\\-196.3516\\121\\-141.517\\-192.4453\\121\\-141.7031\\-188.5391\\121\\-141.7188\\-184.6328\\121\\-141.6096\\-180.7266\\121\\-141.2533\\-174.8672\\121\\-140.9763\\-170.9609\\121\\-140.4769\\-165.1016\\121\\-139.9935\\-161.1953\\121\\-139.086\\-157.2891\\121\\-138.4603\\-153.3828\\121\\-138.0615\\-151.4297\\121\\-137.4344\\-149.4766\\121\\-136.9708\\-147.5234\\121\\-136.2271\\-143.6172\\121\\-135.5362\\-141.6641\\121\\-134.3954\\-137.7578\\121\\-132.7951\\-133.8516\\121\\-132.0522\\-131.8984\\121\\-131.051\\-129.9453\\121\\-130.3468\\-127.9922\\121\\-129.2707\\-126.0391\\121\\-128.4678\\-124.0859\\121\\-124.6068\\-118.2266\\121\\-122.0703\\-114.857\\121\\-119.7018\\-112.3672\\121\\-116.2109\\-108.5733\\121\\-113.7821\\-106.5078\\121\\-110.3516\\-103.6961\\121\\-108.3984\\-102.1982\\121\\-106.4453\\-101.1679\\121\\-104.4922\\-99.86845\\121\\-98.78229\\-96.74219\\121\\-96.67969\\-95.81185\\121\\-94.72656\\-95.10751\\121\\-92.77344\\-94.23767\\121\\-88.86719\\-93.35371\\121\\-86.91406\\-92.6476\\121\\-84.96094\\-92.13216\\121\\-81.05469\\-91.41932\\121\\-77.14844\\-90.44808\\121\\-75.19531\\-90.12265\\121\\-69.33594\\-89.41482\\121\\-63.47656\\-88.44801\\121\\-61.52344\\-88.24734\\121\\-55.66406\\-87.87378\\121\\-45.89844\\-87.21706\\121\\-41.99219\\-86.75231\\121\\-40.03906\\-86.58461\\121\\-34.17969\\-86.28893\\121\\-28.32031\\-86.21397\\121\\-22.46094\\-86.27821\\121\\-16.60156\\-86.5953\\121\\-14.64844\\-86.90625\\121\\-10.74219\\-87.73402\\121\\-6.835938\\-88.39394\\121\\-2.929688\\-89.62975\\121\\-0.9765625\\-90.00446\\121\\0.9765625\\-90.19581\\121\\2.929688\\-90.21828\\121\\6.835938\\-89.90063\\121\\8.789063\\-89.60256\\121\\10.74219\\-89.03044\\121\\12.69531\\-88.29858\\121\\16.60156\\-87.37993\\121\\18.55469\\-86.84686\\121\\20.50781\\-86.47883\\121\\24.41406\\-85.95377\\121\\28.32031\\-85.65251\\121\\30.27344\\-85.5926\\121\\36.13281\\-85.24603\\121\\40.03906\\-85.25528\\121\\43.94531\\-85.33075\\121\\47.85156\\-85.5305\\121\\51.75781\\-85.86128\\121\\57.61719\\-86.4545\\121\\59.57031\\-86.75231\\121\\61.52344\\-87.14934\\121\\65.42969\\-87.667\\121\\69.33594\\-88.02415\\121\\73.24219\\-88.4713\\121\\77.14844\\-89.45506\\121\\81.05469\\-90.21522\\121\\83.00781\\-90.83063\\121\\84.96094\\-91.56191\\121\\86.91406\\-92.0204\\121\\88.86719\\-92.62424\\121\\90.82031\\-93.46326\\121\\92.77344\\-93.92993\\121\\94.72656\\-94.52815\\121\\96.67969\\-95.45519\\121\\98.63281\\-96.12708\\121\\100.5859\\-97.28472\\121\\102.5391\\-98.21687\\121\\104.4922\\-99.5539\\121\\108.3984\\-101.7922\\121\\112.0269\\-104.5547\\121\\114.2578\\-106.3065\\121\\116.2109\\-107.9955\\121\\118.1641\\-110.067\\121\\120.2239\\-112.3672\\121\\122.0703\\-114.649\\121\\124.5768\\-118.2266\\121\\125.6584\\-120.1797\\121\\126.9472\\-122.1328\\121\\128.0713\\-124.0859\\121\\128.9315\\-126.0391\\121\\129.6859\\-127.9922\\121\\130.5981\\-129.9453\\121\\131.1331\\-131.8984\\121\\131.9999\\-133.8516\\121\\132.6769\\-135.8047\\121\\133.2355\\-137.7578\\121\\134.0332\\-139.7109\\121\\134.5622\\-141.6641\\121\\135.4685\\-145.5703\\121\\136.0677\\-147.5234\\121\\136.4415\\-149.4766\\121\\136.9446\\-153.3828\\121\\137.2758\\-155.3359\\121\\138.1595\\-159.2422\\121\\138.6099\\-163.1484\\121\\139.1789\\-169.0078\\121\\139.8631\\-174.8672\\121\\140.0776\\-178.7734\\121\\140.1923\\-184.6328\\121\\140.189\\-188.5391\\121\\140.0146\\-194.3984\\121\\139.6713\\-198.3047\\121\\138.8994\\-204.1641\\121\\138.4436\\-208.0703\\121\\138.1314\\-210.0234\\121\\137.0762\\-213.9297\\121\\136.3107\\-217.8359\\121\\134.7842\\-221.7422\\121\\133.9208\\-223.6953\\121\\132.7876\\-225.6484\\121\\131.536\\-227.6016\\121\\130.4633\\-229.5547\\121\\127.9297\\-233.3083\\121\\126.4511\\-235.4141\\121\\123.2646\\-239.3203\\121\\122.0703\\-240.8573\\121\\120.1172\\-243.1014\\121\\118.1641\\-245.1888\\121\\116.6001\\-247.1328\\121\\114.7239\\-249.0859\\121\\112.3047\\-251.3797\\121\\108.3984\\-255.4734\\121\\106.7818\\-256.8984\\121\\104.7066\\-258.8516\\121\\102.5391\\-261.087\\121\\98.63281\\-264.3188\\121\\96.17683\\-266.6641\\121\\94.72656\\-267.951\\121\\90.82031\\-271.2409\\121\\88.86719\\-272.9568\\121\\86.86474\\-274.4766\\121\\84.96094\\-275.8039\\121\\81.05469\\-278.7917\\121\\75.19531\\-282.7706\\121\\73.24219\\-283.6486\\121\\71.28906\\-285.0522\\121\\69.33594\\-286.29\\121\\65.89227\\-288.1484\\121\\65.42969\\-288.474\\121\\63.47656\\-289.2133\\121\\61.52344\\-290.239\\121\\59.57031\\-291.1035\\121\\57.61719\\-292.1768\\121\\51.75781\\-294.7219\\121\\49.80469\\-295.2027\\121\\45.89844\\-296.6445\\121\\43.94531\\-297.0702\\121\\41.99219\\-297.6839\\121\\40.03906\\-298.4823\\121\\36.13281\\-299.4216\\121\\34.17969\\-300.0804\\121\\32.22656\\-300.4933\\121\\26.36719\\-301.3386\\121\\22.46094\\-302.0735\\121\\20.50781\\-302.3664\\121\\16.60156\\-302.6776\\121\\10.74219\\-302.925\\121\\2.929688\\-303.1638\\121\\-0.9765625\\-303.1923\\121\\-4.882813\\-303.1243\\121\\-10.74219\\-302.925\\121\\-16.60156\\-302.6582\\121\\-20.50781\\-302.2581\\121"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002240"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "251"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "187"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-302.088\\123\\-26.36719\\-301.293\\123\\-32.22656\\-300.4344\\123\\-34.17969\\-299.9765\\123\\-36.13281\\-299.2824\\123\\-40.03906\\-298.3326\\123\\-41.99219\\-297.4629\\123\\-45.89844\\-296.4619\\123\\-47.85156\\-295.5337\\123\\-51.75781\\-294.4131\\123\\-53.71094\\-293.3853\\123\\-55.66406\\-292.6718\\123\\-57.61719\\-291.489\\123\\-59.57031\\-290.7545\\123\\-61.52344\\-289.5282\\123\\-63.47656\\-288.8809\\123\\-65.42969\\-287.7212\\123\\-67.38281\\-286.7542\\123\\-69.33594\\-285.404\\123\\-73.24219\\-283.0864\\123\\-75.19531\\-281.7874\\123\\-77.14844\\-280.7417\\123\\-81.05469\\-277.7664\\123\\-83.00781\\-276.5899\\123\\-84.96094\\-275.2966\\123\\-88.86719\\-272.3089\\123\\-92.77344\\-269.4717\\123\\-96.30036\\-266.6641\\123\\-98.63281\\-264.7026\\123\\-100.5859\\-263.3319\\123\\-102.5391\\-261.7491\\123\\-106.4453\\-258.2848\\123\\-108.1997\\-256.8984\\123\\-110.3516\\-255.0884\\123\\-116.5938\\-249.0859\\123\\-120.1766\\-245.1797\\123\\-122.0703\\-242.9872\\123\\-126.36\\-237.3672\\123\\-128.9195\\-233.4609\\123\\-130.0349\\-231.5078\\123\\-130.9429\\-229.5547\\123\\-132.094\\-227.6016\\123\\-132.8964\\-225.6484\\123\\-133.8914\\-223.6953\\123\\-134.6648\\-221.7422\\123\\-135.2366\\-219.7891\\123\\-136.0502\\-217.8359\\123\\-136.5729\\-215.8828\\123\\-136.9904\\-213.9297\\123\\-137.5127\\-211.9766\\123\\-138.1582\\-210.0234\\123\\-139.2348\\-204.1641\\123\\-139.7171\\-202.2109\\123\\-140.3015\\-198.3047\\123\\-140.6541\\-192.4453\\123\\-140.7907\\-186.5859\\123\\-140.7406\\-180.7266\\123\\-140.552\\-174.8672\\123\\-140.3245\\-170.9609\\123\\-139.965\\-167.0547\\123\\-139.2672\\-163.1484\\123\\-138.4555\\-157.2891\\123\\-137.6953\\-153.469\\123\\-137.1268\\-151.4297\\123\\-136.4968\\-147.5234\\123\\-136.0051\\-145.5703\\123\\-135.3671\\-143.6172\\123\\-134.3609\\-139.7109\\123\\-133.5321\\-137.7578\\123\\-132.1729\\-133.8516\\123\\-131.1695\\-131.8984\\123\\-130.5446\\-129.9453\\123\\-129.5573\\-127.9922\\123\\-128.7435\\-126.0391\\123\\-126.5924\\-122.1328\\123\\-123.8091\\-118.2266\\123\\-122.6294\\-116.2734\\123\\-120.9845\\-114.3203\\123\\-117.213\\-110.4141\\123\\-116.2109\\-109.2867\\123\\-114.2578\\-107.4778\\123\\-110.3516\\-104.2581\\123\\-106.4453\\-101.5543\\123\\-104.4922\\-100.3033\\123\\-102.5391\\-99.38731\\123\\-100.5859\\-98.11983\\123\\-98.63281\\-97.25919\\123\\-96.67969\\-96.15382\\123\\-94.72656\\-95.51087\\123\\-90.82031\\-94.05192\\123\\-86.91406\\-93.23885\\123\\-84.96094\\-92.57507\\123\\-83.00781\\-92.13216\\123\\-79.10156\\-91.46875\\123\\-75.19531\\-90.57477\\123\\-73.24219\\-90.23365\\123\\-65.42969\\-89.32949\\123\\-61.52344\\-88.57394\\123\\-59.57031\\-88.36328\\123\\-53.71094\\-87.92336\\123\\-45.89844\\-87.54463\\123\\-41.99219\\-87.21706\\123\\-38.08594\\-86.83383\\123\\-34.17969\\-86.5953\\123\\-30.27344\\-86.48202\\123\\-26.36719\\-86.46029\\123\\-22.46094\\-86.55054\\123\\-18.55469\\-86.80511\\123\\-16.60156\\-87.00098\\123\\-12.69531\\-87.68045\\123\\-8.789063\\-88.27649\\123\\-4.882813\\-89.49935\\123\\-0.9765625\\-90.37357\\123\\0.9765625\\-90.64379\\123\\2.929688\\-90.71886\\123\\6.835938\\-90.29688\\123\\8.789063\\-89.95141\\123\\10.74219\\-89.50674\\123\\12.69531\\-88.69318\\123\\14.64844\\-88.09898\\123\\18.55469\\-87.34277\\123\\20.50781\\-86.86122\\123\\22.46094\\-86.50096\\123\\24.41406\\-86.25425\\123\\28.32031\\-85.89839\\123\\30.27344\\-85.828\\123\\36.13281\\-85.50214\\123\\41.99219\\-85.47662\\123\\45.89844\\-85.55554\\123\\47.85156\\-85.65639\\123\\51.75781\\-85.95586\\123\\57.61719\\-86.60868\\123\\61.52344\\-87.32082\\123\\65.42969\\-87.80054\\123\\67.38281\\-87.95908\\123\\71.28906\\-88.45124\\123\\73.24219\\-88.81613\\123\\75.19531\\-89.33984\\123\\79.10156\\-90.07078\\123\\81.05469\\-90.56592\\123\\83.00781\\-91.34274\\123\\86.91406\\-92.34766\\123\\88.86719\\-93.19948\\123\\92.77344\\-94.22438\\123\\94.72656\\-95.12408\\123\\96.67969\\-95.84399\\123\\98.63281\\-96.70313\\123\\102.5391\\-98.9237\\123\\104.4922\\-99.9556\\123\\106.4453\\-101.2468\\123\\108.3984\\-102.2512\\123\\110.3516\\-103.7721\\123\\113.6147\\-106.5078\\123\\116.2109\\-108.8341\\123\\117.5795\\-110.4141\\123\\121.2\\-114.3203\\123\\122.7726\\-116.2734\\123\\123.8393\\-118.2266\\123\\126.4026\\-122.1328\\123\\127.3322\\-124.0859\\123\\128.4383\\-126.0391\\123\\129.0926\\-127.9922\\123\\130.0019\\-129.9453\\123\\130.6874\\-131.8984\\123\\131.1913\\-133.8516\\123\\132.0522\\-135.8047\\123\\133.1818\\-139.7109\\123\\133.9148\\-141.6641\\123\\134.4421\\-143.6172\\123\\135.2236\\-147.5234\\123\\136.1707\\-151.4297\\123\\136.4968\\-153.3828\\123\\137.2003\\-159.2422\\123\\137.948\\-163.1484\\123\\138.1866\\-165.1016\\123\\138.527\\-169.0078\\123\\138.8844\\-174.8672\\123\\139.0564\\-178.7734\\123\\139.1794\\-184.6328\\123\\139.1794\\-188.5391\\123\\139.0895\\-192.4453\\123\\138.6932\\-200.2578\\123\\138.3332\\-204.1641\\123\\138.0694\\-206.1172\\123\\137.2003\\-210.0234\\123\\136.5748\\-213.9297\\123\\136.1597\\-215.8828\\123\\135.3997\\-217.8359\\123\\134.7782\\-219.7891\\123\\134.0069\\-221.7422\\123\\131.8763\\-225.6484\\123\\130.7357\\-227.6016\\123\\129.4847\\-229.5547\\123\\128.4746\\-231.5078\\123\\125.9766\\-234.913\\123\\125.5466\\-235.4141\\123\\122.8555\\-239.3203\\123\\121.2523\\-241.2734\\123\\117.726\\-245.1797\\123\\116.3167\\-247.1328\\123\\114.5784\\-249.0859\\123\\112.3047\\-251.3147\\123\\110.3516\\-253.492\\123\\108.3984\\-255.5269\\123\\104.896\\-258.8516\\123\\102.5391\\-261.293\\123\\100.5859\\-263.0508\\123\\98.63281\\-264.6689\\123\\96.60326\\-266.6641\\123\\94.29348\\-268.6172\\123\\92.77344\\-269.7983\\123\\88.86719\\-273.2589\\123\\86.91406\\-274.8401\\123\\84.96094\\-276.0766\\123\\83.00781\\-277.5252\\123\\81.99426\\-278.3828\\123\\79.10156\\-280.5252\\123\\77.14844\\-281.667\\123\\75.19531\\-282.9998\\123\\73.24219\\-283.958\\123\\72.89907\\-284.2422\\123\\69.33594\\-286.5922\\123\\67.38281\\-287.5158\\123\\65.42969\\-288.6998\\123\\63.47656\\-289.3601\\123\\61.52344\\-290.5254\\123\\59.57031\\-291.2851\\123\\57.61719\\-292.4565\\123\\55.66406\\-293.1869\\123\\53.71094\\-294.19\\123\\51.75781\\-294.8593\\123\\49.80469\\-295.3203\\123\\47.85156\\-296.1473\\123\\45.89844\\-296.7847\\123\\43.94531\\-297.1983\\123\\41.99219\\-297.9948\\123\\40.03906\\-298.6219\\123\\38.08594\\-299.0542\\123\\36.13281\\-299.593\\123\\34.17969\\-300.2515\\123\\32.22656\\-300.6024\\123\\26.36719\\-301.4671\\123\\22.46094\\-302.234\\123\\20.50781\\-302.4693\\123\\16.60156\\-302.7469\\123\\6.835938\\-303.1675\\123\\2.929688\\-303.3105\\123\\-0.9765625\\-303.3301\\123\\-6.835938\\-303.1757\\123\\-16.60156\\-302.7351\\123\\-20.50781\\-302.37\\123"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002239"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "245"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "188"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-302.2232\\125\\-26.36719\\-301.4066\\125\\-32.22656\\-300.5428\\125\\-34.17969\\-300.1396\\125\\-36.13281\\-299.4531\\125\\-40.03906\\-298.4934\\125\\-41.99219\\-297.6458\\125\\-43.94531\\-297.0419\\125\\-45.89844\\-296.6022\\125\\-47.85156\\-295.7186\\125\\-51.75781\\-294.5595\\125\\-53.71094\\-293.5662\\125\\-55.66406\\-292.8165\\125\\-57.61719\\-291.6918\\125\\-59.57031\\-290.8881\\125\\-61.52344\\-289.7123\\125\\-63.47656\\-288.9968\\125\\-67.38281\\-286.8823\\125\\-69.33594\\-285.5152\\125\\-71.5332\\-284.2422\\125\\-75.19531\\-281.9282\\125\\-77.14844\\-280.8607\\125\\-77.76563\\-280.3359\\125\\-81.05469\\-277.8599\\125\\-83.00781\\-276.659\\125\\-84.96094\\-275.3145\\125\\-88.86719\\-272.2664\\125\\-92.77344\\-269.384\\125\\-94.72656\\-267.788\\125\\-98.63281\\-264.3928\\125\\-100.5859\\-263.0858\\125\\-102.5391\\-261.5118\\125\\-106.4453\\-257.875\\125\\-110.3516\\-254.4716\\125\\-111.7986\\-252.9922\\125\\-116.2109\\-248.7135\\125\\-118.1641\\-246.4744\\125\\-119.1998\\-245.1797\\125\\-121.1267\\-243.2266\\125\\-122.7601\\-241.2734\\125\\-124.1108\\-239.3203\\125\\-125.3101\\-237.3672\\125\\-126.8467\\-235.4141\\125\\-128.1573\\-233.4609\\125\\-129.1587\\-231.5078\\125\\-130.3034\\-229.5547\\125\\-131.0813\\-227.6016\\125\\-132.1411\\-225.6484\\125\\-132.8881\\-223.6953\\125\\-133.8127\\-221.7422\\125\\-134.5546\\-219.7891\\125\\-135.1019\\-217.8359\\125\\-135.8302\\-215.8828\\125\\-136.4042\\-213.9297\\125\\-137.112\\-210.0234\\125\\-138.1712\\-206.1172\\125\\-138.4776\\-204.1641\\125\\-139.6719\\-194.3984\\125\\-139.965\\-190.4922\\125\\-140.0761\\-186.5859\\125\\-140.066\\-182.6797\\125\\-139.9762\\-178.7734\\125\\-139.7594\\-174.8672\\125\\-139.1174\\-169.0078\\125\\-138.5732\\-163.1484\\125\\-138.0744\\-159.2422\\125\\-137.1419\\-155.3359\\125\\-136.3386\\-149.4766\\125\\-135.8446\\-147.5234\\125\\-135.187\\-145.5703\\125\\-134.2961\\-141.6641\\125\\-133.487\\-139.7109\\125\\-132.2304\\-135.8047\\125\\-131.2487\\-133.8516\\125\\-130.6479\\-131.8984\\125\\-128.1189\\-126.0391\\125\\-124.6545\\-120.1797\\125\\-122.0703\\-116.5645\\125\\-120.3419\\-114.3203\\125\\-118.1641\\-112.007\\125\\-116.2109\\-109.8251\\125\\-114.2578\\-107.9019\\125\\-110.3516\\-105.075\\125\\-108.3984\\-103.4323\\125\\-106.4453\\-101.9483\\125\\-100.5753\\-98.69531\\125\\-96.83891\\-96.74219\\125\\-94.72656\\-95.84375\\125\\-92.77344\\-95.22987\\125\\-90.82031\\-94.40266\\125\\-88.86719\\-93.93382\\125\\-86.91406\\-93.61127\\125\\-84.96094\\-93.15438\\125\\-83.00781\\-92.55221\\125\\-81.05469\\-92.16888\\125\\-75.19531\\-91.21056\\125\\-73.24219\\-90.65746\\125\\-71.28906\\-90.34857\\125\\-65.42969\\-89.68555\\125\\-63.47656\\-89.42407\\125\\-59.57031\\-88.71514\\125\\-57.61719\\-88.45478\\125\\-53.71094\\-88.09692\\125\\-43.94531\\-87.65831\\125\\-34.17969\\-87.03214\\125\\-30.27344\\-86.86212\\125\\-26.36719\\-86.81881\\125\\-24.41406\\-86.8766\\125\\-16.60156\\-87.37702\\125\\-10.74219\\-88.18652\\125\\-8.789063\\-88.60416\\125\\-6.835938\\-89.3377\\125\\-2.929688\\-90.33385\\125\\-0.9765625\\-90.93707\\125\\0.9765625\\-91.26693\\125\\2.929688\\-91.35534\\125\\4.882813\\-91.18799\\125\\6.835938\\-90.80143\\125\\10.74219\\-89.84846\\125\\12.69531\\-89.28291\\125\\14.64844\\-88.43116\\125\\16.60156\\-87.97739\\125\\20.50781\\-87.31655\\125\\24.41406\\-86.56087\\125\\30.27344\\-86.01116\\125\\34.17969\\-85.79198\\125\\38.08594\\-85.69592\\125\\43.94531\\-85.64489\\125\\45.89844\\-85.68846\\125\\51.75781\\-86.07554\\125\\55.66406\\-86.47273\\125\\57.61719\\-86.75231\\125\\59.57031\\-87.17939\\125\\63.47656\\-87.72263\\125\\67.38281\\-88.08334\\125\\69.33594\\-88.34375\\125\\71.28906\\-88.73438\\125\\75.19531\\-89.61607\\125\\79.10156\\-90.34222\\125\\81.05469\\-91.07669\\125\\83.00781\\-91.66297\\125\\84.96094\\-92.14307\\125\\88.86719\\-93.54673\\125\\90.82031\\-93.99911\\125\\92.77344\\-94.66997\\125\\94.72656\\-95.53223\\125\\96.67969\\-96.19965\\125\\98.63281\\-97.30114\\125\\100.5859\\-98.23114\\125\\102.5391\\-99.44904\\125\\104.4922\\-100.4101\\125\\107.9699\\-102.6016\\125\\110.3516\\-104.3009\\125\\114.2578\\-107.558\\125\\116.2109\\-109.4163\\125\\118.1641\\-111.6132\\125\\120.6782\\-114.3203\\125\\122.1591\\-116.2734\\125\\123.2993\\-118.2266\\125\\124.6094\\-120.1797\\125\\125.579\\-122.1328\\125\\126.7998\\-124.0859\\125\\128.6621\\-127.9922\\125\\129.2602\\-129.9453\\125\\130.1437\\-131.8984\\125\\130.7292\\-133.8516\\125\\131.1786\\-135.8047\\125\\131.9867\\-137.7578\\125\\132.5824\\-139.7109\\125\\133.0625\\-141.6641\\125\\134.252\\-145.5703\\125\\135.3227\\-151.4297\\125\\136.203\\-155.3359\\125\\136.676\\-159.2422\\125\\136.9934\\-163.1484\\125\\137.207\\-165.1016\\125\\137.9943\\-170.9609\\125\\138.2508\\-174.8672\\125\\138.4421\\-180.7266\\125\\138.4837\\-188.5391\\125\\138.3805\\-194.3984\\125\\138.2015\\-198.3047\\125\\138.0615\\-200.2578\\125\\137.7773\\-202.2109\\125\\137.1017\\-206.1172\\125\\136.6638\\-210.0234\\125\\136.3824\\-211.9766\\125\\135.9037\\-213.9297\\125\\135.2336\\-215.8828\\125\\134.7114\\-217.8359\\125\\134.0278\\-219.7891\\125\\132.9845\\-221.7422\\125\\132.0854\\-223.6953\\125\\130.9291\\-225.6484\\125\\129.9561\\-227.6016\\125\\128.8545\\-229.5547\\125\\126.3997\\-233.4609\\125\\123.5532\\-237.3672\\125\\122.376\\-239.3203\\125\\120.902\\-241.2734\\125\\117.4844\\-245.1797\\125\\116.2109\\-246.9248\\125\\114.4501\\-249.0859\\125\\112.3047\\-251.2731\\125\\109.0566\\-254.9453\\125\\105.0453\\-258.8516\\125\\102.5391\\-261.5042\\125\\98.96609\\-264.7109\\125\\96.67969\\-266.972\\125\\94.72656\\-268.6589\\125\\92.77344\\-270.0332\\125\\90.82031\\-271.7233\\125\\88.86719\\-273.5309\\125\\86.91406\\-275.1427\\125\\83.00781\\-277.7969\\125\\82.36417\\-278.3828\\125\\79.69365\\-280.3359\\125\\79.10156\\-280.8475\\125\\71.28906\\-285.5063\\125\\69.33594\\-286.8289\\125\\67.38281\\-287.7376\\125\\65.42969\\-288.8809\\125\\63.47656\\-289.5426\\125\\61.52344\\-290.7293\\125\\59.57031\\-291.4826\\125\\57.61719\\-292.6622\\125\\55.66406\\-293.3858\\125\\53.71094\\-294.4103\\125\\49.80469\\-295.4893\\125\\47.85156\\-296.3795\\125\\43.94531\\-297.3689\\125\\41.99219\\-298.2396\\125\\38.08594\\-299.189\\125\\36.02184\\-299.8672\\125\\34.17969\\-300.3644\\125\\28.32031\\-301.2577\\125\\26.36719\\-301.609\\125\\24.41406\\-302.0608\\125\\22.46094\\-302.3477\\125\\18.55469\\-302.7065\\125\\4.882813\\-303.3973\\125\\0.9765625\\-303.5033\\125\\-2.929688\\-303.4661\\125\\-10.74219\\-303.1053\\125\\-18.55469\\-302.6648\\125"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002238"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "243"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "189"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-24.41406\\-302.0067\\127\\-26.36719\\-301.5423\\127\\-28.32031\\-301.1966\\127\\-32.22656\\-300.6249\\127\\-34.17969\\-300.2616\\127\\-38.08594\\-299.05\\127\\-40.03906\\-298.6086\\127\\-43.94531\\-297.1491\\127\\-45.89844\\-296.7143\\127\\-49.80469\\-295.1906\\127\\-51.75781\\-294.6975\\127\\-53.71094\\-293.7551\\127\\-55.66406\\-292.955\\127\\-59.57031\\-291.0018\\127\\-61.52344\\-289.9152\\127\\-63.47656\\-289.0771\\127\\-65.34529\\-288.1484\\127\\-67.38281\\-287.0268\\127\\-69.33594\\-285.6943\\127\\-71.28906\\-284.5919\\127\\-75.19531\\-282.0712\\127\\-77.14844\\-280.9633\\127\\-77.90024\\-280.3359\\127\\-81.05469\\-277.9643\\127\\-83.00781\\-276.7481\\127\\-84.96094\\-275.3453\\127\\-88.86719\\-272.2268\\127\\-92.77344\\-269.31\\127\\-94.72656\\-267.7013\\127\\-98.63281\\-264.1814\\127\\-100.5859\\-262.7662\\127\\-102.5391\\-261.2427\\127\\-105.067\\-258.8516\\127\\-108.3984\\-255.8625\\127\\-110.3516\\-253.9824\\127\\-111.2421\\-252.9922\\127\\-116.2109\\-248.0359\\127\\-120.477\\-243.2266\\127\\-122.0703\\-241.1255\\127\\-123.2778\\-239.3203\\127\\-124.6985\\-237.3672\\127\\-127.9297\\-232.3379\\127\\-128.5022\\-231.5078\\127\\-129.3521\\-229.5547\\127\\-130.4342\\-227.6016\\127\\-131.1147\\-225.6484\\127\\-132.1482\\-223.6953\\127\\-132.8522\\-221.7422\\127\\-134.438\\-217.8359\\127\\-135.4852\\-213.9297\\127\\-136.1342\\-211.9766\\127\\-136.5222\\-210.0234\\127\\-137.0989\\-206.1172\\127\\-137.936\\-202.2109\\127\\-138.2392\\-200.2578\\127\\-138.4386\\-198.3047\\127\\-138.688\\-194.3984\\127\\-138.9608\\-186.5859\\127\\-138.946\\-180.7266\\127\\-138.7798\\-174.8672\\127\\-138.4649\\-169.0078\\127\\-138.1121\\-165.1016\\127\\-137.8461\\-163.1484\\127\\-137.3965\\-161.1953\\127\\-136.8506\\-157.2891\\127\\-136.4334\\-153.3828\\127\\-136.0677\\-151.4297\\127\\-135.0348\\-147.5234\\127\\-134.1706\\-143.6172\\127\\-133.3866\\-141.6641\\127\\-132.2095\\-137.7578\\127\\-131.3147\\-135.8047\\127\\-130.7419\\-133.8516\\127\\-130.0019\\-131.8984\\127\\-129.0953\\-129.9453\\127\\-128.3976\\-127.9922\\127\\-127.2599\\-126.0391\\127\\-126.32\\-124.0859\\127\\-123.8675\\-120.1797\\127\\-122.7371\\-118.2266\\127\\-121.2086\\-116.2734\\127\\-115.878\\-110.4141\\127\\-114.2578\\-108.7301\\127\\-108.3984\\-103.8974\\127\\-106.4453\\-102.5318\\127\\-104.4922\\-101.3941\\127\\-102.5391\\-100.1263\\127\\-100.5859\\-99.28891\\127\\-98.63281\\-98.07386\\127\\-96.67969\\-97.25584\\127\\-94.72656\\-96.2036\\127\\-92.77344\\-95.6203\\127\\-88.86719\\-94.2282\\127\\-84.96094\\-93.53436\\127\\-83.00781\\-93.1282\\127\\-81.05469\\-92.55411\\127\\-79.10156\\-92.17596\\127\\-75.19531\\-91.64592\\127\\-73.24219\\-91.30494\\127\\-69.33594\\-90.47388\\127\\-67.38281\\-90.17693\\127\\-63.47656\\-89.75064\\127\\-59.57031\\-89.2213\\127\\-57.61719\\-88.87543\\127\\-53.71094\\-88.34503\\127\\-51.75781\\-88.20654\\127\\-34.17969\\-87.41737\\127\\-32.22656\\-87.31158\\127\\-28.32031\\-87.24621\\127\\-24.41406\\-87.28761\\127\\-18.55469\\-87.54677\\127\\-14.64844\\-87.84937\\127\\-12.69531\\-88.07444\\127\\-10.74219\\-88.43144\\127\\-8.789063\\-89.125\\127\\-4.882813\\-90.14745\\127\\-2.872243\\-90.88281\\127\\-0.9765625\\-91.47232\\127\\0.9765625\\-91.66517\\127\\2.929688\\-91.72989\\127\\4.882813\\-91.625\\127\\6.835938\\-91.36794\\127\\10.74219\\-90.21779\\127\\12.69531\\-89.70035\\127\\16.60156\\-88.20514\\127\\20.50781\\-87.65952\\127\\24.41406\\-86.95274\\127\\28.32031\\-86.42114\\127\\34.17969\\-86.02839\\127\\40.03906\\-85.82399\\127\\45.89844\\-85.84976\\127\\53.71094\\-86.32744\\127\\55.66406\\-86.57406\\127\\59.57031\\-87.33487\\127\\63.47656\\-87.82132\\127\\67.38281\\-88.22001\\127\\69.33594\\-88.54313\\127\\73.24219\\-89.47825\\127\\77.14844\\-90.18295\\127\\79.10156\\-90.69581\\127\\81.05469\\-91.45691\\127\\84.96094\\-92.47681\\127\\86.91406\\-93.28718\\127\\90.82031\\-94.29053\\127\\92.77344\\-95.19482\\127\\94.72656\\-95.86032\\127\\96.66666\\-96.74219\\127\\98.63281\\-97.73661\\127\\100.5859\\-98.88755\\127\\102.5391\\-99.8807\\127\\104.4922\\-101.0286\\127\\106.4453\\-102.0445\\127\\109.829\\-104.5547\\127\\114.2578\\-108.09\\127\\116.5613\\-110.4141\\127\\118.1384\\-112.3672\\127\\120.1172\\-114.5889\\127\\122.8711\\-118.2266\\127\\123.9168\\-120.1797\\127\\126.169\\-124.0859\\127\\127.0414\\-126.0391\\127\\128.0441\\-127.9922\\127\\128.7971\\-129.9453\\127\\129.3433\\-131.8984\\127\\130.2083\\-133.8516\\127\\131.1252\\-137.7578\\127\\132.4542\\-141.6641\\127\\133.2976\\-145.5703\\127\\133.9139\\-147.5234\\127\\134.3738\\-149.4766\\127\\135.294\\-155.3359\\127\\136.0556\\-159.2422\\127\\136.5197\\-163.1484\\127\\137.1159\\-172.9141\\127\\137.4364\\-178.7734\\127\\137.608\\-182.6797\\127\\137.6546\\-188.5391\\127\\137.5031\\-192.4453\\127\\137.1705\\-198.3047\\127\\136.5836\\-206.1172\\127\\136.0285\\-210.0234\\127\\135.4705\\-211.9766\\127\\134.5572\\-215.8828\\127\\133.8882\\-217.8359\\127\\132.9733\\-219.7891\\127\\132.1637\\-221.7422\\127\\131.0585\\-223.6953\\127\\130.2399\\-225.6484\\127\\129.1183\\-227.6016\\127\\128.1906\\-229.5547\\127\\126.9234\\-231.5078\\127\\125.5388\\-233.4609\\127\\124.4888\\-235.4141\\127\\121.7963\\-239.3203\\127\\120.5448\\-241.2734\\127\\118.8996\\-243.2266\\127\\115.8023\\-247.1328\\127\\114.3438\\-249.0859\\127\\112.3047\\-251.2893\\127\\109.1648\\-254.9453\\127\\105.2007\\-258.8516\\127\\102.5391\\-261.6856\\127\\99.25426\\-264.7109\\127\\96.67969\\-267.2709\\127\\94.72656\\-269.018\\127\\92.77344\\-270.4022\\127\\88.86719\\-273.806\\127\\86.91406\\-275.3775\\127\\80.07813\\-280.3359\\127\\79.10156\\-281.0934\\127\\77.13783\\-282.2891\\127\\75.19531\\-283.3592\\127\\73.24219\\-284.7117\\127\\71.28906\\-285.7635\\127\\69.33594\\-287.0428\\127\\65.42969\\-289.0346\\127\\63.47656\\-289.7784\\127\\61.52344\\-290.9037\\127\\59.57031\\-291.7336\\127\\57.61719\\-292.8649\\127\\55.66406\\-293.5929\\127\\53.71094\\-294.5739\\127\\49.80469\\-295.6933\\127\\47.85156\\-296.5577\\127\\45.89844\\-296.9952\\127\\43.94531\\-297.5536\\127\\41.99219\\-298.4109\\127\\38.08594\\-299.3234\\127\\36.13281\\-300.0416\\127\\34.17969\\-300.4704\\127\\28.32031\\-301.3588\\127\\24.41406\\-302.2012\\127\\22.46094\\-302.4441\\127\\18.55469\\-302.7804\\127\\14.64844\\-302.9651\\127\\10.74219\\-303.2162\\127\\2.929688\\-303.6599\\127\\-0.9765625\\-303.7042\\127\\-4.882813\\-303.5767\\127\\-10.74219\\-303.2249\\127\\-14.64844\\-302.9542\\127\\-18.55469\\-302.7351\\127\\-22.46094\\-302.3381\\127"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002237"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "253"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "190"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.882813\\-303.8256\\129\\-12.69531\\-303.1875\\129\\-20.50781\\-302.6516\\129\\-24.41406\\-302.1761\\129\\-26.36719\\-301.6916\\129\\-28.32031\\-301.3156\\129\\-34.17969\\-300.394\\129\\-36.06912\\-299.8672\\129\\-38.08594\\-299.1852\\129\\-40.03906\\-298.7221\\129\\-41.99219\\-298.1378\\129\\-43.94531\\-297.2802\\129\\-45.89844\\-296.808\\129\\-47.85156\\-296.1607\\129\\-49.80469\\-295.2915\\129\\-51.75781\\-294.8096\\129\\-53.69636\\-294.0078\\129\\-57.61719\\-292.2417\\129\\-59.57031\\-291.119\\129\\-63.47656\\-289.1605\\129\\-65.42969\\-288.2813\\129\\-71.28906\\-284.7709\\129\\-73.24219\\-283.3669\\129\\-75.16347\\-282.2891\\129\\-77.14844\\-281.0572\\129\\-81.05469\\-278.0927\\129\\-83.00781\\-276.8615\\129\\-84.96094\\-275.4148\\129\\-91.0443\\-270.5703\\129\\-92.77344\\-269.2794\\129\\-94.72656\\-267.6345\\129\\-98.63281\\-264.0533\\129\\-100.5859\\-262.4467\\129\\-102.5391\\-260.9984\\129\\-104.7678\\-258.8516\\129\\-108.3984\\-255.594\\129\\-110.3516\\-253.6062\\129\\-112.3047\\-251.4948\\129\\-114.7498\\-249.0859\\129\\-116.5213\\-247.1328\\129\\-117.9497\\-245.1797\\129\\-121.245\\-241.2734\\129\\-122.7553\\-239.3203\\129\\-123.8839\\-237.3672\\129\\-125.1134\\-235.4141\\129\\-126.4812\\-233.4609\\129\\-127.5152\\-231.5078\\129\\-128.6834\\-229.5547\\129\\-129.4735\\-227.6016\\129\\-130.4874\\-225.6484\\129\\-131.1478\\-223.6953\\129\\-132.0886\\-221.7422\\129\\-133.4194\\-217.8359\\129\\-134.2238\\-215.8828\\129\\-134.7355\\-213.9297\\129\\-135.1376\\-211.9766\\129\\-136.1707\\-208.0703\\129\\-136.5017\\-206.1172\\129\\-137.1596\\-200.2578\\129\\-137.4435\\-198.3047\\129\\-137.91\\-194.3984\\129\\-138.0487\\-192.4453\\129\\-138.2694\\-186.5859\\129\\-138.2859\\-180.7266\\129\\-138.1686\\-176.8203\\129\\-137.981\\-172.9141\\129\\-137.8183\\-170.9609\\129\\-137.3291\\-167.0547\\129\\-136.3911\\-157.2891\\129\\-136.1057\\-155.3359\\129\\-135.2041\\-151.4297\\129\\-134.4702\\-147.5234\\129\\-133.9567\\-145.5703\\129\\-133.2409\\-143.6172\\129\\-132.1857\\-139.7109\\129\\-131.2941\\-137.7578\\129\\-130.1193\\-133.8516\\129\\-129.2164\\-131.8984\\129\\-128.5786\\-129.9453\\129\\-127.5405\\-127.9922\\129\\-126.6297\\-126.0391\\129\\-125.4157\\-124.0859\\129\\-124.4888\\-122.1328\\129\\-122.0703\\-118.3646\\129\\-120.5716\\-116.2734\\129\\-117.1162\\-112.3672\\129\\-114.2578\\-109.3282\\129\\-112.3047\\-107.539\\129\\-110.3516\\-105.9745\\129\\-108.3984\\-104.5316\\129\\-104.4922\\-101.7802\\129\\-102.5042\\-100.6484\\129\\-98.63281\\-98.64191\\129\\-94.71241\\-96.74219\\129\\-92.77344\\-95.95979\\129\\-90.82031\\-95.4002\\129\\-88.86719\\-94.6573\\129\\-86.91406\\-94.12322\\129\\-83.00781\\-93.51393\\129\\-81.05469\\-93.13034\\129\\-79.10156\\-92.57685\\129\\-77.14844\\-92.21599\\129\\-71.28906\\-91.45488\\129\\-69.33594\\-91.07388\\129\\-67.38281\\-90.5638\\129\\-65.42969\\-90.25983\\129\\-57.61719\\-89.36724\\129\\-51.75781\\-88.49335\\129\\-49.80469\\-88.33609\\129\\-41.99219\\-87.94128\\129\\-32.22656\\-87.62547\\129\\-28.32031\\-87.58691\\129\\-24.41406\\-87.62122\\129\\-16.60156\\-87.89321\\129\\-14.64844\\-88.03247\\129\\-12.69531\\-88.3112\\129\\-10.74219\\-88.87366\\129\\-8.789063\\-89.54231\\129\\-6.835938\\-90.00277\\129\\-4.882813\\-90.57974\\129\\-2.929688\\-91.45197\\129\\-0.9765625\\-91.84882\\129\\0.9765625\\-92.04717\\129\\2.929688\\-92.11317\\129\\4.882813\\-92.00586\\129\\8.789063\\-91.41492\\129\\10.74219\\-90.70461\\129\\14.64844\\-89.44669\\129\\16.60156\\-88.56348\\129\\18.55469\\-88.14967\\129\\22.46094\\-87.74164\\129\\26.36719\\-87.0639\\129\\28.32031\\-86.77979\\129\\32.22656\\-86.41246\\129\\38.08594\\-86.13242\\129\\40.03906\\-86.07554\\129\\45.89844\\-86.08828\\129\\51.75781\\-86.33515\\129\\53.71094\\-86.48202\\129\\55.66406\\-86.75231\\129\\59.57031\\-87.45147\\129\\61.52344\\-87.71509\\129\\65.42969\\-88.10199\\129\\67.38281\\-88.37439\\129\\71.28906\\-89.34187\\129\\75.19531\\-90.03751\\129\\77.14844\\-90.4687\\129\\79.10156\\-91.19718\\129\\83.00781\\-92.20536\\129\\84.96094\\-92.9677\\129\\86.91406\\-93.60627\\129\\88.86719\\-94.02399\\129\\90.82031\\-94.70101\\129\\92.77344\\-95.5493\\129\\94.72656\\-96.23186\\129\\96.67969\\-97.30859\\129\\98.63281\\-98.21687\\129\\100.5859\\-99.43848\\129\\102.5391\\-100.2706\\129\\106.2861\\-102.6016\\129\\108.3984\\-104.005\\129\\110.3516\\-105.5859\\129\\113.7494\\-108.4609\\129\\115.7048\\-110.4141\\129\\118.1641\\-113.1438\\129\\120.8972\\-116.2734\\129\\122.237\\-118.2266\\129\\123.2778\\-120.1797\\129\\124.4857\\-122.1328\\129\\125.3443\\-124.0859\\129\\126.4743\\-126.0391\\129\\127.2234\\-127.9922\\129\\128.2077\\-129.9453\\129\\128.8499\\-131.8984\\129\\129.3876\\-133.8516\\129\\130.1157\\-135.8047\\129\\130.6106\\-137.7578\\129\\131.0049\\-139.7109\\129\\131.5104\\-141.6641\\129\\132.2021\\-143.6172\\129\\133.4246\\-149.4766\\129\\133.9815\\-151.4297\\129\\134.3725\\-153.3828\\129\\134.6539\\-155.3359\\129\\135.1149\\-159.2422\\129\\135.9482\\-165.1016\\129\\136.3334\\-169.0078\\129\\136.5423\\-172.9141\\129\\136.7373\\-178.7734\\129\\136.817\\-182.6797\\129\\136.8195\\-188.5391\\129\\136.7496\\-192.4453\\129\\136.5497\\-198.3047\\129\\136.3051\\-202.2109\\129\\135.7422\\-206.1579\\129\\134.7355\\-211.9766\\129\\134.3281\\-213.9297\\129\\133.7891\\-215.4959\\129\\132.1771\\-219.7891\\129\\131.1393\\-221.7422\\129\\130.438\\-223.6953\\129\\129.3395\\-225.6484\\129\\128.5786\\-227.6016\\129\\127.3541\\-229.5547\\129\\126.3323\\-231.5078\\129\\125\\-233.4609\\129\\122.793\\-237.3672\\129\\122.0703\\-238.3438\\129\\120.1172\\-241.2644\\129\\117.2319\\-245.1797\\129\\114.2658\\-249.0859\\129\\112.3047\\-251.3377\\129\\109.2613\\-254.9453\\129\\107.3694\\-256.8984\\129\\106.4453\\-257.7484\\129\\101.6507\\-262.7578\\129\\100.5859\\-263.665\\129\\96.67969\\-267.5329\\129\\94.72656\\-269.2881\\129\\93.10176\\-270.5703\\129\\88.47128\\-274.4766\\129\\86.91406\\-275.599\\129\\83.00781\\-278.6006\\129\\79.10156\\-281.3248\\129\\77.14844\\-282.617\\129\\75.19531\\-283.5932\\129\\73.24219\\-284.965\\129\\71.19846\\-286.1953\\129\\67.38281\\-288.3646\\129\\65.42969\\-289.1793\\129\\61.52344\\-291.0781\\129\\59.57031\\-292.1069\\129\\57.61719\\-293.026\\129\\53.71094\\-294.7447\\129\\51.75781\\-295.2178\\129\\47.85156\\-296.7074\\129\\45.89844\\-297.123\\129\\43.94531\\-297.7883\\129\\41.99219\\-298.553\\129\\40.03906\\-298.9661\\129\\38.08594\\-299.5034\\129\\36.13281\\-300.1949\\129\\34.17969\\-300.5759\\129\\28.32031\\-301.4809\\129\\26.36719\\-301.95\\129\\24.41406\\-302.3152\\129\\22.46094\\-302.5421\\129\\18.55469\\-302.8293\\129\\16.60156\\-302.9189\\129\\8.789063\\-303.4756\\129\\4.882813\\-303.811\\129\\0.9765625\\-303.9478\\129\\-2.929688\\-303.9221\\129"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002236"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "255"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "191"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.835938\\-303.9221\\131\\-12.69531\\-303.3039\\131\\-16.60156\\-302.9759\\131\\-20.50781\\-302.7239\\131\\-24.41406\\-302.3152\\131\\-28.32031\\-301.4447\\131\\-34.17969\\-300.5086\\131\\-36.13281\\-300.0542\\131\\-38.08594\\-299.3234\\131\\-41.99219\\-298.33\\131\\-43.94531\\-297.4289\\131\\-47.85156\\-296.3556\\131\\-49.80469\\-295.4184\\131\\-51.75781\\-294.9181\\131\\-53.71094\\-294.2537\\131\\-55.66406\\-293.2363\\131\\-57.61719\\-292.4441\\131\\-59.57031\\-291.2409\\131\\-61.52344\\-290.3872\\131\\-63.47656\\-289.2485\\131\\-65.42969\\-288.4618\\131\\-65.85385\\-288.1484\\131\\-69.22743\\-286.1953\\131\\-71.28906\\-284.9151\\131\\-73.24219\\-283.4766\\131\\-75.19531\\-282.4813\\131\\-77.14844\\-281.1793\\131\\-80.94524\\-278.3828\\131\\-83.00781\\-276.9652\\131\\-84.96094\\-275.5117\\131\\-92.77344\\-269.2928\\131\\-94.72656\\-267.6223\\131\\-98.63281\\-263.9868\\131\\-100.5859\\-262.2562\\131\\-102.5124\\-260.8047\\131\\-104.4922\\-258.7926\\131\\-106.5421\\-256.8984\\131\\-108.3984\\-255.2886\\131\\-110.5183\\-252.9922\\131\\-112.2289\\-251.0391\\131\\-114.2578\\-249.0254\\131\\-117.4216\\-245.1797\\131\\-120.7205\\-241.2734\\131\\-122.0703\\-239.2667\\131\\-123.2382\\-237.3672\\131\\-124.5473\\-235.4141\\131\\-125.5049\\-233.4609\\131\\-126.8043\\-231.5078\\131\\-128.8757\\-227.6016\\131\\-129.5965\\-225.6484\\131\\-130.5658\\-223.6953\\131\\-131.1286\\-221.7422\\131\\-132.0141\\-219.7891\\131\\-133.2409\\-215.8828\\131\\-134.0209\\-213.9297\\131\\-134.4858\\-211.9766\\131\\-135.2174\\-208.0703\\131\\-136.0822\\-204.1641\\131\\-136.3954\\-202.2109\\131\\-136.7249\\-198.3047\\131\\-137.0216\\-192.4453\\131\\-137.2204\\-186.5859\\131\\-137.2681\\-180.7266\\131\\-137.0929\\-174.8672\\131\\-136.8266\\-169.0078\\131\\-136.615\\-165.1016\\131\\-136.4588\\-163.1484\\131\\-135.9992\\-159.2422\\131\\-135.2439\\-155.3359\\131\\-134.3168\\-149.4766\\131\\-133.109\\-145.5703\\131\\-132.0766\\-141.6641\\131\\-131.2641\\-139.7109\\131\\-130.7635\\-137.7578\\131\\-130.1565\\-135.8047\\131\\-129.2834\\-133.8516\\131\\-128.7197\\-131.8984\\131\\-126.9124\\-127.9922\\131\\-125.8138\\-126.0391\\131\\-124.8498\\-124.0859\\131\\-123.6757\\-122.1328\\131\\-122.7327\\-120.1797\\131\\-121.2928\\-118.2266\\131\\-118.1641\\-114.4171\\131\\-116.4288\\-112.3672\\131\\-114.6603\\-110.4141\\131\\-112.3047\\-108.1657\\131\\-110.2283\\-106.5078\\131\\-108.3984\\-105.1989\\131\\-106.4453\\-103.661\\131\\-104.4922\\-102.2445\\131\\-102.5391\\-101.2249\\131\\-100.5859\\-100.0206\\131\\-98.63281\\-99.2709\\131\\-96.67969\\-98.08496\\131\\-94.72656\\-97.33531\\131\\-92.77344\\-96.32006\\131\\-88.86719\\-95.21336\\131\\-86.91406\\-94.47801\\131\\-84.96094\\-94.04887\\131\\-81.05469\\-93.52563\\131\\-79.10156\\-93.15907\\131\\-77.14844\\-92.64893\\131\\-75.19531\\-92.26765\\131\\-69.33594\\-91.52455\\131\\-65.42969\\-90.68196\\131\\-61.52344\\-90.0814\\131\\-53.71094\\-89.30078\\131\\-51.75781\\-89.05451\\131\\-49.80469\\-88.69859\\131\\-47.85156\\-88.50829\\131\\-43.94531\\-88.23214\\131\\-40.03906\\-88.03599\\131\\-32.22656\\-87.85727\\131\\-26.36719\\-87.82132\\131\\-22.46094\\-87.88763\\131\\-16.60156\\-88.08493\\131\\-14.64844\\-88.2595\\131\\-12.69531\\-88.70034\\131\\-10.74219\\-89.3987\\131\\-6.835938\\-90.3541\\131\\-4.882813\\-91.21282\\131\\-2.929688\\-91.82902\\131\\-0.9765625\\-92.21202\\131\\0.9765625\\-92.45651\\131\\2.929688\\-92.58675\\131\\4.882813\\-92.46421\\131\\6.835938\\-92.19785\\131\\10.74219\\-91.33504\\131\\12.69531\\-90.44662\\131\\16.60156\\-89.16322\\131\\18.55469\\-88.44819\\131\\20.50781\\-88.15709\\131\\26.36719\\-87.49783\\131\\32.22656\\-86.71473\\131\\36.13281\\-86.4545\\131\\40.03906\\-86.32359\\131\\43.94531\\-86.27501\\131\\47.85156\\-86.34671\\131\\51.75781\\-86.52041\\131\\53.71094\\-86.71473\\131\\59.57031\\-87.59167\\131\\65.42969\\-88.20788\\131\\67.38281\\-88.54313\\131\\69.33594\\-89.13343\\131\\71.28906\\-89.54004\\131\\75.19531\\-90.23738\\131\\79.10156\\-91.51266\\131\\81.05469\\-91.95161\\131\\83.00781\\-92.52113\\131\\84.96094\\-93.33418\\131\\88.86719\\-94.28043\\131\\90.82031\\-95.18385\\131\\92.77344\\-95.85387\\131\\94.72656\\-96.70434\\131\\96.67969\\-97.73045\\131\\98.63281\\-98.87079\\131\\100.5859\\-99.77713\\131\\104.4922\\-101.8591\\131\\110.3516\\-106.1416\\131\\112.3047\\-107.6756\\131\\115.2018\\-110.4141\\131\\118.1641\\-113.7658\\131\\120.2005\\-116.2734\\131\\122.832\\-120.1797\\131\\123.7178\\-122.1328\\131\\124.8151\\-124.0859\\131\\125.6183\\-126.0391\\131\\126.6716\\-127.9922\\131\\127.36\\-129.9453\\131\\128.2942\\-131.8984\\131\\128.8689\\-133.8516\\131\\129.3009\\-135.8047\\131\\130.506\\-139.7109\\131\\131.25\\-143.6172\\131\\132.383\\-147.5234\\131\\133.4321\\-153.3828\\131\\133.9286\\-155.3359\\131\\134.268\\-157.2891\\131\\134.7078\\-161.1953\\131\\135.905\\-174.8672\\131\\136.094\\-178.7734\\131\\136.2271\\-182.6797\\131\\136.2062\\-188.5391\\131\\136.1084\\-192.4453\\131\\135.905\\-196.3516\\131\\135.3306\\-202.2109\\131\\134.6954\\-208.0703\\131\\134.41\\-210.0234\\131\\133.9958\\-211.9766\\131\\133.3201\\-213.9297\\131\\132.7673\\-215.8828\\131\\132.106\\-217.8359\\131\\131.1618\\-219.7891\\131\\130.5658\\-221.7422\\131\\129.6049\\-223.6953\\131\\128.8203\\-225.6484\\131\\126.8402\\-229.5547\\131\\125.5552\\-231.5078\\131\\124.6405\\-233.4609\\131\\123.3617\\-235.4141\\131\\122.4958\\-237.3672\\131\\119.7225\\-241.2734\\131\\118.5162\\-243.2266\\131\\117.1245\\-245.1797\\131\\115.6276\\-247.1328\\131\\114.2578\\-249.0766\\131\\111.0383\\-252.9922\\131\\109.3684\\-254.9453\\131\\107.5604\\-256.8984\\131\\105.618\\-258.8516\\131\\104.4922\\-260.1232\\131\\101.98\\-262.7578\\131\\100.5859\\-263.936\\131\\95.7459\\-268.6172\\131\\91.26157\\-272.5234\\131\\88.86719\\-274.5653\\131\\86.91406\\-275.7939\\131\\83.00781\\-278.9489\\131\\81.02448\\-280.3359\\131\\79.10156\\-281.5551\\131\\77.14844\\-282.8945\\131\\75.19531\\-283.8698\\131\\74.74525\\-284.2422\\131\\71.64797\\-286.1953\\131\\71.28906\\-286.491\\131\\69.33594\\-287.4475\\131\\67.38281\\-288.6401\\131\\65.42969\\-289.3489\\131\\63.47656\\-290.4834\\131\\61.52344\\-291.2557\\131\\59.57031\\-292.4313\\131\\57.61719\\-293.1886\\131\\55.66406\\-294.1742\\131\\53.71094\\-294.8726\\131\\51.75781\\-295.3673\\131\\49.80469\\-296.2247\\131\\47.85156\\-296.8154\\131\\45.89844\\-297.2687\\131\\43.94531\\-298.0757\\131\\41.99219\\-298.6709\\131\\40.03906\\-299.0954\\131\\36.13281\\-300.31\\131\\34.17969\\-300.6718\\131\\30.27344\\-301.2614\\131\\28.32031\\-301.6353\\131\\26.36719\\-302.1126\\131\\24.41406\\-302.4101\\131\\20.50781\\-302.7748\\131\\16.60156\\-303.0042\\131\\12.69531\\-303.3232\\131\\6.835938\\-303.882\\131\\4.882813\\-304.0325\\131\\0.9765625\\-304.1404\\131\\-2.929688\\-304.12\\131"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002235"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "252"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "192"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.789063\\-303.9221\\133\\-14.64844\\-303.2336\\133\\-18.55469\\-302.9036\\133\\-22.46094\\-302.6466\\133\\-24.41406\\-302.4315\\133\\-26.36719\\-302.0754\\133\\-30.27344\\-301.214\\133\\-34.17969\\-300.6136\\133\\-36.13281\\-300.216\\133\\-38.08594\\-299.4804\\133\\-41.99219\\-298.4713\\133\\-43.94531\\-297.5975\\133\\-45.89844\\-297.0002\\133\\-47.85156\\-296.5021\\133\\-49.80469\\-295.5827\\133\\-53.71094\\-294.4235\\133\\-55.66406\\-293.3812\\133\\-57.61719\\-292.6201\\133\\-59.57031\\-291.3689\\133\\-61.52344\\-290.5629\\133\\-63.47656\\-289.3508\\133\\-65.42969\\-288.6333\\133\\-67.38281\\-287.3896\\133\\-69.33594\\-286.3439\\133\\-71.28906\\-285.0569\\133\\-73.24219\\-283.6224\\133\\-75.19531\\-282.6641\\133\\-79.10156\\-279.8541\\133\\-83.94299\\-276.4297\\133\\-88.86719\\-272.561\\133\\-92.77344\\-269.3243\\133\\-94.72656\\-267.6406\\133\\-98.63281\\-263.9633\\133\\-100.5859\\-262.2007\\133\\-102.25\\-260.8047\\133\\-104.4922\\-258.5055\\133\\-108.3984\\-254.9028\\133\\-111.7881\\-251.0391\\133\\-114.2578\\-248.4607\\133\\-117.0753\\-245.1797\\133\\-120.1172\\-241.195\\133\\-122.7716\\-237.3672\\133\\-123.7697\\-235.4141\\133\\-126.0901\\-231.5078\\133\\-127.1101\\-229.5547\\133\\-128.2552\\-227.6016\\133\\-129.7489\\-223.6953\\133\\-130.5812\\-221.7422\\133\\-131.1306\\-219.7891\\133\\-131.903\\-217.8359\\133\\-132.5546\\-215.8828\\133\\-133.0202\\-213.9297\\133\\-134.1912\\-210.0234\\133\\-134.5783\\-208.0703\\133\\-135.1486\\-204.1641\\133\\-135.8288\\-200.2578\\133\\-136.3216\\-196.3516\\133\\-136.5345\\-192.4453\\133\\-136.6828\\-186.5859\\133\\-136.7069\\-182.6797\\133\\-136.6469\\-176.8203\\133\\-136.5345\\-172.9141\\133\\-136.2101\\-167.0547\\133\\-135.9992\\-165.1016\\133\\-135.3777\\-161.1953\\133\\-134.4267\\-153.3828\\133\\-134.0281\\-151.4297\\133\\-133.437\\-149.4766\\133\\-132.5457\\-145.5703\\133\\-131.958\\-143.6172\\133\\-131.2117\\-141.6641\\133\\-130.7594\\-139.7109\\133\\-130.2083\\-137.7578\\133\\-129.3678\\-135.8047\\133\\-128.7818\\-133.8516\\133\\-128.0851\\-131.8984\\133\\-127.0951\\-129.9453\\133\\-126.2489\\-127.9922\\133\\-125.1131\\-126.0391\\133\\-124.2511\\-124.0859\\133\\-123.0907\\-122.1328\\133\\-122.0703\\-120.2378\\133\\-120.6853\\-118.2266\\133\\-118.1641\\-115.1541\\133\\-115.7011\\-112.3672\\133\\-112.3047\\-108.8826\\133\\-109.5133\\-106.5078\\133\\-106.4453\\-104.1576\\133\\-102.5391\\-101.6438\\133\\-100.5859\\-100.5156\\133\\-98.63281\\-99.65401\\133\\-96.67969\\-98.64313\\133\\-94.72656\\-97.73987\\133\\-90.82031\\-96.08922\\133\\-86.91406\\-95.05871\\133\\-84.96094\\-94.36658\\133\\-83.00781\\-94.01646\\133\\-79.10156\\-93.54889\\133\\-77.14844\\-93.23605\\133\\-75.19531\\-92.7005\\133\\-73.24219\\-92.3058\\133\\-67.38281\\-91.56426\\133\\-65.42969\\-91.26963\\133\\-61.52344\\-90.41806\\133\\-55.66406\\-89.79357\\133\\-51.75781\\-89.4768\\133\\-47.85156\\-89.0266\\133\\-43.94531\\-88.48344\\133\\-40.03906\\-88.23999\\133\\-36.13281\\-88.10199\\133\\-28.32031\\-87.9948\\133\\-24.41406\\-88.02415\\133\\-18.55469\\-88.18822\\133\\-16.60156\\-88.30994\\133\\-14.64844\\-88.59709\\133\\-12.69531\\-89.22334\\133\\-8.789063\\-90.16005\\133\\-4.882813\\-91.64972\\133\\-0.9765625\\-92.67435\\133\\0.9765625\\-93.1282\\133\\2.929688\\-93.27071\\133\\4.882813\\-93.14245\\133\\8.789063\\-92.26309\\133\\10.74219\\-91.76505\\133\\12.69531\\-91.10873\\133\\14.64844\\-90.17946\\133\\16.60156\\-89.63726\\133\\20.50781\\-88.41465\\133\\22.46094\\-88.10383\\133\\30.27344\\-87.40983\\133\\32.22656\\-87.12383\\133\\36.13281\\-86.793\\133\\41.99219\\-86.55338\\133\\45.89844\\-86.55338\\133\\49.80469\\-86.67662\\133\\51.75781\\-86.82001\\133\\59.57031\\-87.72729\\133\\63.47656\\-88.09517\\133\\65.42969\\-88.33878\\133\\67.38281\\-88.77314\\133\\69.33594\\-89.35181\\133\\73.24219\\-90.02832\\133\\75.19531\\-90.47642\\133\\77.14844\\-91.26438\\133\\81.05469\\-92.24458\\133\\84.96094\\-93.58667\\133\\86.91406\\-94.00171\\133\\88.86719\\-94.64296\\133\\90.82031\\-95.52759\\133\\92.77344\\-96.15128\\133\\94.72656\\-97.23689\\133\\96.67969\\-98.1044\\133\\98.63281\\-99.36087\\133\\100.5859\\-100.1044\\133\\102.5391\\-101.2928\\133\\104.4922\\-102.3517\\133\\106.4453\\-103.7307\\133\\112.3047\\-108.3418\\133\\114.5339\\-110.4141\\133\\116.2694\\-112.3672\\133\\118.1641\\-114.6265\\133\\120.9449\\-118.2266\\133\\122.25\\-120.1797\\133\\123.1408\\-122.1328\\133\\124.2098\\-124.0859\\133\\125\\-126.0391\\133\\126.7785\\-129.9453\\133\\127.4034\\-131.8984\\133\\128.2691\\-133.8516\\133\\128.7834\\-135.8047\\133\\129.6768\\-139.7109\\133\\130.3267\\-141.6641\\133\\130.7257\\-143.6172\\133\\131.3982\\-147.5234\\133\\131.9589\\-149.4766\\133\\132.4013\\-151.4297\\133\\133.2637\\-157.2891\\133\\133.9647\\-161.1953\\133\\134.2403\\-163.1484\\133\\134.5669\\-167.0547\\133\\134.8943\\-172.9141\\133\\135.1537\\-180.7266\\133\\135.1982\\-184.6328\\133\\135.1888\\-188.5391\\133\\134.9573\\-196.3516\\133\\134.7366\\-200.2578\\133\\134.4342\\-204.1641\\133\\134.2238\\-206.1172\\133\\133.8984\\-208.0703\\133\\133.3997\\-210.0234\\133\\132.5967\\-213.9297\\133\\131.9589\\-215.8828\\133\\131.1375\\-217.8359\\133\\130.6213\\-219.7891\\133\\128.999\\-223.6953\\133\\128.3027\\-225.6484\\133\\127.2116\\-227.6016\\133\\126.3735\\-229.5547\\133\\125.1371\\-231.5078\\133\\124.2084\\-233.4609\\133\\123.1197\\-235.4141\\133\\122.1576\\-237.3672\\133\\120.9581\\-239.3203\\133\\119.492\\-241.2734\\133\\118.3257\\-243.2266\\133\\117.0489\\-245.1797\\133\\115.5918\\-247.1328\\133\\114.2578\\-249.0583\\133\\110.3516\\-253.9764\\133\\107.777\\-256.8984\\133\\105.8824\\-258.8516\\133\\104.4922\\-260.4404\\133\\102.3339\\-262.7578\\133\\100.5859\\-264.2761\\133\\96.17486\\-268.6172\\133\\94.72656\\-269.692\\133\\91.55599\\-272.5234\\133\\90.82031\\-273.264\\133\\88.86719\\-274.9256\\133\\86.91406\\-276.1668\\133\\84.96094\\-277.6003\\133\\83.00781\\-279.2292\\133\\81.05469\\-280.7172\\133\\79.10156\\-281.8076\\133\\77.14844\\-283.0836\\133\\73.24219\\-285.3953\\133\\71.28906\\-286.765\\133\\69.33594\\-287.6862\\133\\67.38281\\-288.8352\\133\\65.42969\\-289.526\\133\\63.47656\\-290.7105\\133\\61.52344\\-291.462\\133\\59.57031\\-292.6736\\133\\57.61719\\-293.3901\\133\\55.66406\\-294.4207\\133\\51.75781\\-295.5201\\133\\49.80469\\-296.4299\\133\\45.89844\\-297.4197\\133\\43.94531\\-298.2911\\133\\40.03906\\-299.2402\\133\\38.08594\\-299.9338\\133\\36.13281\\-300.4393\\133\\30.27344\\-301.3752\\133\\26.36719\\-302.2476\\133\\22.46094\\-302.7127\\133\\16.60156\\-303.1053\\133\\12.69531\\-303.4777\\133\\10.74219\\-303.75\\133\\6.835938\\-304.0883\\133\\2.929688\\-304.2531\\133\\-2.929688\\-304.2617\\133\\-6.835938\\-304.0883\\133"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002234"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "246"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "193"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-10.74219\\-303.9089\\135\\-14.64844\\-303.366\\135\\-18.55469\\-302.9824\\135\\-24.41406\\-302.5377\\135\\-26.36719\\-302.2232\\135\\-30.27344\\-301.3288\\135\\-34.17969\\-300.705\\135\\-36.13281\\-300.3405\\135\\-40.03906\\-299.0645\\135\\-41.99219\\-298.5905\\135\\-45.89844\\-297.0976\\135\\-47.85156\\-296.637\\135\\-49.80469\\-295.7597\\135\\-51.75781\\-295.111\\135\\-53.71094\\-294.5649\\135\\-55.66406\\-293.5413\\135\\-57.61719\\-292.7624\\135\\-59.57031\\-291.5193\\135\\-61.52344\\-290.7146\\135\\-63.47656\\-289.4865\\135\\-65.42969\\-288.7758\\135\\-67.38281\\-287.5242\\135\\-69.33594\\-286.5591\\135\\-72.69498\\-284.2422\\135\\-73.24219\\-283.8014\\135\\-75.19531\\-282.8367\\135\\-79.10156\\-280.0722\\135\\-81.05469\\-278.7622\\135\\-88.86719\\-272.7351\\135\\-90.82031\\-271.0173\\135\\-94.72656\\-267.7036\\135\\-99.92767\\-262.7578\\135\\-102.1589\\-260.8047\\135\\-103.9254\\-258.8516\\135\\-106.4453\\-256.3627\\135\\-108.3984\\-254.5441\\135\\-111.5274\\-251.0391\\135\\-114.2578\\-248.1375\\135\\-116.7134\\-245.1797\\135\\-118.0081\\-243.2266\\135\\-119.4231\\-241.2734\\135\\-120.947\\-239.3203\\135\\-122.2344\\-237.3672\\135\\-123.2256\\-235.4141\\135\\-124.4523\\-233.4609\\135\\-125.3152\\-231.5078\\135\\-126.5613\\-229.5547\\135\\-127.3999\\-227.6016\\135\\-128.457\\-225.6484\\135\\-129.1155\\-223.6953\\135\\-130.6243\\-219.7891\\135\\-131.0608\\-217.8359\\135\\-131.6757\\-215.8828\\135\\-132.3897\\-213.9297\\135\\-133.2056\\-210.0234\\135\\-133.7891\\-208.0446\\135\\-134.2586\\-206.1172\\135\\-134.5434\\-204.1641\\135\\-135.4096\\-196.3516\\135\\-135.9314\\-190.4922\\135\\-136.1031\\-186.5859\\135\\-136.1286\\-180.7266\\135\\-135.9466\\-174.8672\\135\\-135.3044\\-167.0547\\135\\-134.597\\-159.2422\\135\\-134.0901\\-155.3359\\135\\-133.1439\\-151.4297\\135\\-132.4161\\-147.5234\\135\\-131.1584\\-143.6172\\135\\-130.2437\\-139.7109\\135\\-129.4188\\-137.7578\\135\\-128.8879\\-135.8047\\135\\-128.2436\\-133.8516\\135\\-127.2766\\-131.8984\\135\\-126.5542\\-129.9453\\135\\-125.3971\\-127.9922\\135\\-124.622\\-126.0391\\135\\-123.4606\\-124.0859\\135\\-122.6428\\-122.1328\\135\\-121.2801\\-120.1797\\135\\-118.3879\\-116.2734\\135\\-116.8038\\-114.3203\\135\\-115.1055\\-112.3672\\135\\-114.2578\\-111.5796\\135\\-112.3047\\-109.5233\\135\\-110.3516\\-107.7614\\135\\-108.3984\\-106.2421\\135\\-102.5391\\-102.0658\\135\\-100.5859\\-101.1435\\135\\-98.63281\\-100.0082\\135\\-96.67969\\-99.27474\\135\\-94.72656\\-98.12994\\135\\-92.77344\\-97.44463\\135\\-90.82031\\-96.52439\\135\\-88.86719\\-95.89621\\135\\-86.91406\\-95.45462\\135\\-83.00781\\-94.33151\\135\\-81.05469\\-93.99676\\135\\-77.14844\\-93.59029\\135\\-75.19531\\-93.27803\\135\\-71.28906\\-92.35632\\135\\-69.33594\\-92.0859\\135\\-65.42969\\-91.64822\\135\\-63.47656\\-91.33401\\135\\-59.57031\\-90.56166\\135\\-55.66406\\-90.06358\\135\\-47.85156\\-89.45644\\135\\-41.99219\\-88.71835\\135\\-40.03906\\-88.53233\\135\\-36.13281\\-88.33498\\135\\-30.27344\\-88.20337\\135\\-24.41406\\-88.23999\\135\\-20.50781\\-88.36162\\135\\-18.55469\\-88.48154\\135\\-16.60156\\-88.74474\\135\\-10.74219\\-90.0023\\135\\-8.789063\\-90.54672\\135\\-6.835938\\-91.39582\\135\\-2.929688\\-92.57685\\135\\-0.9765625\\-93.30442\\135\\0.9765625\\-93.56535\\135\\2.929688\\-93.63494\\135\\4.882813\\-93.56226\\135\\6.835938\\-93.31084\\135\\8.660567\\-92.83594\\135\\12.69531\\-91.60207\\135\\14.64844\\-90.68337\\135\\16.60156\\-89.99242\\135\\18.55469\\-89.54231\\135\\22.46094\\-88.38789\\135\\24.41406\\-88.1251\\135\\30.27344\\-87.72443\\135\\34.17969\\-87.3401\\135\\40.03906\\-87.00078\\135\\45.89844\\-86.95274\\135\\49.80469\\-87.06319\\135\\61.52344\\-88.00047\\135\\65.42969\\-88.49787\\135\\67.38281\\-89.06713\\135\\69.33594\\-89.52386\\135\\73.24219\\-90.21522\\135\\75.19531\\-90.76074\\135\\77.14844\\-91.48875\\135\\81.05469\\-92.49985\\135\\83.00781\\-93.29031\\135\\86.91406\\-94.215\\135\\88.86719\\-95.09783\\135\\92.77344\\-96.53547\\135\\94.72656\\-97.62223\\135\\98.63281\\-99.66592\\135\\100.5859\\-100.5604\\135\\102.5391\\-101.6694\\135\\106.4453\\-104.259\\135\\109.3427\\-106.5078\\135\\112.3047\\-109.0278\\135\\113.7517\\-110.4141\\135\\115.625\\-112.3672\\135\\118.1641\\-115.3594\\135\\120.3169\\-118.2266\\135\\122.7192\\-122.1328\\135\\123.4189\\-124.0859\\135\\124.485\\-126.0391\\135\\125.1489\\-127.9922\\135\\126.0431\\-129.9453\\135\\126.7818\\-131.8984\\135\\127.3489\\-133.8516\\135\\128.1279\\-135.8047\\135\\128.6621\\-137.7578\\135\\129.4511\\-141.6641\\135\\130.0872\\-143.6172\\135\\130.5151\\-145.5703\\135\\131.0559\\-149.4766\\135\\131.4273\\-151.4297\\135\\132.3089\\-155.3359\\135\\132.585\\-157.2891\\135\\132.9859\\-161.1953\\135\\134.0827\\-170.9609\\135\\134.2838\\-174.8672\\135\\134.434\\-180.7266\\135\\134.4543\\-186.5859\\135\\134.38\\-192.4453\\135\\134.2282\\-196.3516\\135\\133.9017\\-200.2578\\135\\132.6534\\-210.0234\\135\\132.3059\\-211.9766\\135\\131.0608\\-215.8828\\135\\130.6183\\-217.8359\\135\\129.9393\\-219.7891\\135\\129.1426\\-221.7422\\135\\128.562\\-223.6953\\135\\127.5997\\-225.6484\\135\\126.7849\\-227.6016\\135\\125.7378\\-229.5547\\135\\124.8629\\-231.5078\\135\\123.7518\\-233.4609\\135\\122.9431\\-235.4141\\135\\120.7886\\-239.3203\\135\\119.3438\\-241.2734\\135\\116.9909\\-245.1797\\135\\115.5746\\-247.1328\\135\\114.2656\\-249.0859\\135\\112.3047\\-251.5502\\135\\110.3516\\-254.1406\\135\\108.3984\\-256.4671\\135\\106.1695\\-258.8516\\135\\104.5003\\-260.8047\\135\\102.7129\\-262.7578\\135\\100.5859\\-264.7488\\135\\96.59677\\-268.6172\\135\\94.72656\\-270.0749\\135\\90.82031\\-273.545\\135\\88.86719\\-275.1958\\135\\86.91406\\-276.6065\\135\\84.96094\\-277.8945\\135\\81.05469\\-280.9931\\135\\79.10156\\-282.0695\\135\\75.19531\\-284.6192\\135\\73.24219\\-285.6433\\135\\71.28906\\-286.966\\135\\67.38281\\-289.0037\\135\\65.42969\\-289.7548\\135\\63.47656\\-290.9067\\135\\61.52344\\-291.7446\\135\\59.57031\\-292.858\\135\\57.61719\\-293.6107\\135\\55.66406\\-294.6074\\135\\51.75781\\-295.7039\\135\\49.80469\\-296.5904\\135\\47.85156\\-297.0315\\135\\45.89844\\-297.6341\\135\\43.94531\\-298.4713\\135\\40.03906\\-299.4283\\135\\38.08594\\-300.1396\\135\\36.13281\\-300.5615\\135\\32.22656\\-301.1548\\135\\30.27344\\-301.516\\135\\28.32031\\-302.0067\\135\\26.36719\\-302.3571\\135\\24.41406\\-302.6097\\135\\18.55469\\-303.0286\\135\\14.64844\\-303.3948\\135\\10.74219\\-303.9729\\135\\6.835938\\-304.2531\\135\\2.929688\\-304.3805\\135\\-2.929688\\-304.3877\\135\\-6.835938\\-304.2443\\135"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002233"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "257"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "194"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-303.5014\\137\\-18.55469\\-303.0678\\137\\-24.41406\\-302.6097\\137\\-26.36719\\-302.3477\\137\\-28.32031\\-301.95\\137\\-30.27344\\-301.4447\\137\\-36.13281\\-300.4393\\137\\-38.08594\\-299.8748\\137\\-40.03906\\-299.1788\\137\\-41.99219\\-298.7041\\137\\-43.94531\\-298.0495\\137\\-45.89844\\-297.1983\\137\\-47.85156\\-296.7455\\137\\-51.75781\\-295.1906\\137\\-53.71094\\-294.6811\\137\\-55.66406\\-293.7142\\137\\-57.61719\\-292.8694\\137\\-59.57031\\-291.7096\\137\\-61.52344\\-290.8315\\137\\-63.47656\\-289.6472\\137\\-65.42969\\-288.8934\\137\\-67.38281\\-287.6931\\137\\-69.33594\\-286.7405\\137\\-73.24219\\-283.998\\137\\-75.19531\\-282.9795\\137\\-77.14844\\-281.5962\\137\\-79.09139\\-280.3359\\137\\-81.05469\\-278.9272\\137\\-84.96094\\-275.8706\\137\\-86.86572\\-274.4766\\137\\-88.86719\\-272.897\\137\\-90.82031\\-271.1428\\137\\-94.72656\\-267.7792\\137\\-98.63281\\-263.9853\\137\\-102.1205\\-260.8047\\137\\-103.8886\\-258.8516\\137\\-105.8057\\-256.8984\\137\\-108.3984\\-254.3757\\137\\-110.3516\\-252.1395\\137\\-112.3047\\-250.0266\\137\\-114.8776\\-247.1328\\137\\-116.2836\\-245.1797\\137\\-117.5851\\-243.2266\\137\\-118.1641\\-242.5567\\137\\-120.5039\\-239.3203\\137\\-121.6355\\-237.3672\\137\\-122.8831\\-235.4141\\137\\-123.7645\\-233.4609\\137\\-124.9023\\-231.5078\\137\\-126.85\\-227.6016\\137\\-128.6483\\-223.6953\\137\\-129.2087\\-221.7422\\137\\-129.9702\\-219.7891\\137\\-130.5857\\-217.8359\\137\\-131.4494\\-213.9297\\137\\-132.1658\\-211.9766\\137\\-132.599\\-210.0234\\137\\-133.335\\-206.1172\\137\\-134.1886\\-202.2109\\137\\-134.4305\\-200.2578\\137\\-134.7656\\-196.3516\\137\\-135.1096\\-190.4922\\137\\-135.2539\\-186.5859\\137\\-135.2737\\-180.7266\\137\\-135.1303\\-174.8672\\137\\-134.7433\\-167.0547\\137\\-134.442\\-163.1484\\137\\-133.9928\\-159.2422\\137\\-133.2234\\-155.3359\\137\\-132.2377\\-149.4766\\137\\-131.5703\\-147.5234\\137\\-131.0816\\-145.5703\\137\\-130.7373\\-143.6172\\137\\-130.2437\\-141.6641\\137\\-129.4852\\-139.7109\\137\\-128.4277\\-135.8047\\137\\-127.4805\\-133.8516\\137\\-126.7499\\-131.8984\\137\\-125.7215\\-129.9453\\137\\-124.9075\\-127.9922\\137\\-123.9034\\-126.0391\\137\\-123.0283\\-124.0859\\137\\-122.0703\\-122.3051\\137\\-120.7357\\-120.1797\\137\\-119.0828\\-118.2266\\137\\-117.5795\\-116.2734\\137\\-116.2109\\-114.3682\\137\\-114.4287\\-112.3672\\137\\-112.3047\\-110.1738\\137\\-110.3516\\-108.319\\137\\-104.4922\\-103.9144\\137\\-102.5278\\-102.6016\\137\\-98.63281\\-100.4577\\137\\-96.67969\\-99.63069\\137\\-92.77344\\-97.80801\\137\\-90.82031\\-97.11007\\137\\-88.86719\\-96.20784\\137\\-84.96094\\-95.33517\\137\\-81.05469\\-94.26779\\137\\-79.10156\\-93.97021\\137\\-75.19531\\-93.58136\\137\\-73.24219\\-93.29818\\137\\-69.33594\\-92.38296\\137\\-63.47656\\-91.65239\\137\\-59.57031\\-91.09905\\137\\-55.66406\\-90.38277\\137\\-53.71094\\-90.17602\\137\\-45.89844\\-89.58624\\137\\-40.03906\\-89.02586\\137\\-38.08594\\-88.80199\\137\\-34.17969\\-88.56519\\137\\-30.27344\\-88.45802\\137\\-24.41406\\-88.50539\\137\\-22.46094\\-88.56261\\137\\-20.50781\\-88.71835\\137\\-16.60156\\-89.2597\\137\\-12.69531\\-89.87971\\137\\-10.74219\\-90.2901\\137\\-6.835938\\-91.75026\\137\\-4.882813\\-92.34766\\137\\-2.929688\\-93.20301\\137\\-0.9765625\\-93.64877\\137\\2.929688\\-93.87241\\137\\4.882813\\-93.83036\\137\\6.835938\\-93.68229\\137\\8.789063\\-93.40927\\137\\12.69531\\-91.98745\\137\\14.64844\\-91.36483\\137\\16.60156\\-90.40063\\137\\18.55469\\-89.8896\\137\\20.50781\\-89.50089\\137\\24.41406\\-88.44819\\137\\28.32031\\-88.03804\\137\\34.17969\\-87.69188\\137\\36.13281\\-87.6255\\137\\38.08594\\-87.45474\\137\\41.99219\\-87.33487\\137\\45.89844\\-87.33487\\137\\51.75781\\-87.48123\\137\\57.61719\\-87.81617\\137\\61.52344\\-88.1139\\137\\63.47656\\-88.34375\\137\\65.42969\\-88.71991\\137\\67.38281\\-89.32159\\137\\71.28906\\-89.98981\\137\\73.24219\\-90.39453\\137\\75.19531\\-91.11465\\137\\77.14844\\-91.67178\\137\\79.10156\\-92.13005\\137\\83.00781\\-93.51768\\137\\84.96094\\-93.90292\\137\\86.91406\\-94.47569\\137\\88.86719\\-95.4254\\137\\90.82031\\-96.04122\\137\\92.77344\\-97.05386\\137\\94.72656\\-97.92641\\137\\96.67969\\-99.13921\\137\\98.63281\\-99.92068\\137\\100.5859\\-101.1333\\137\\102.5391\\-102.0196\\137\\106.4453\\-104.9495\\137\\108.3984\\-106.2278\\137\\110.3516\\-107.8168\\137\\112.3047\\-109.619\\137\\114.2578\\-111.6871\\137\\115.0351\\-112.3672\\137\\116.7417\\-114.3203\\137\\118.2306\\-116.2734\\137\\119.4765\\-118.2266\\137\\120.95\\-120.1797\\137\\122.0703\\-122.1714\\137\\122.9855\\-124.0859\\137\\123.6637\\-126.0391\\137\\124.6399\\-127.9922\\137\\125.2125\\-129.9453\\137\\126.0442\\-131.8984\\137\\126.7455\\-133.8516\\137\\127.2727\\-135.8047\\137\\127.9533\\-137.7578\\137\\128.5282\\-139.7109\\137\\129.6768\\-145.5703\\137\\130.2203\\-147.5234\\137\\130.5768\\-149.4766\\137\\131.3155\\-155.3359\\137\\132.075\\-159.2422\\137\\132.3452\\-161.1953\\137\\132.701\\-165.1016\\137\\133.0752\\-170.9609\\137\\133.2881\\-176.8203\\137\\133.3866\\-180.7266\\137\\133.4104\\-188.5391\\137\\133.2728\\-194.3984\\137\\132.8125\\-202.2109\\137\\132.4998\\-206.1172\\137\\132.2554\\-208.0703\\137\\131.8586\\-210.0234\\137\\131.338\\-211.9766\\137\\130.6091\\-215.8828\\137\\130\\-217.8359\\137\\129.2892\\-219.7891\\137\\128.776\\-221.7422\\137\\128.0703\\-223.6953\\137\\127.1342\\-225.6484\\137\\126.4166\\-227.6016\\137\\125.3196\\-229.5547\\137\\124.6192\\-231.5078\\137\\123.4426\\-233.4609\\137\\122.8058\\-235.4141\\137\\121.6241\\-237.3672\\137\\120.6727\\-239.3203\\137\\119.2558\\-241.2734\\137\\118.028\\-243.2266\\137\\116.9782\\-245.1797\\137\\115.5831\\-247.1328\\137\\114.3265\\-249.0859\\137\\112.8673\\-251.0391\\137\\111.283\\-252.9922\\137\\110.3516\\-254.335\\137\\108.3984\\-256.7628\\137\\104.4922\\-261.1906\\137\\103.0087\\-262.7578\\137\\98.63281\\-267.0858\\137\\96.67969\\-268.9063\\137\\92.77344\\-272.0932\\137\\90.82031\\-273.8545\\137\\86.91406\\-276.9412\\137\\84.96094\\-278.2787\\137\\81.05469\\-281.2113\\137\\79.10156\\-282.4229\\137\\77.14844\\-283.4924\\137\\75.19531\\-284.8731\\137\\69.33594\\-288.3087\\137\\67.38281\\-289.1552\\137\\63.47656\\-291.073\\137\\61.52344\\-292.1355\\137\\55.66406\\-294.7447\\137\\53.71094\\-295.2378\\137\\49.80469\\-296.7126\\137\\47.85156\\-297.136\\137\\43.94531\\-298.6182\\137\\41.99219\\-299.0542\\137\\40.03906\\-299.6265\\137\\38.08594\\-300.3127\\137\\36.13281\\-300.6652\\137\\32.22656\\-301.265\\137\\28.32031\\-302.1646\\137\\26.36719\\-302.4817\\137\\24.41406\\-302.6762\\137\\18.55469\\-303.1205\\137\\14.64844\\-303.5767\\137\\12.69531\\-303.9221\\137\\10.74219\\-304.1404\\137\\6.835938\\-304.3732\\137\\2.929688\\-304.4752\\137\\-2.929688\\-304.4752\\137\\-6.835938\\-304.3583\\137\\-10.74219\\-304.0664\\137"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002232"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "255"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "195"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-303.6735\\139\\-20.50781\\-302.9739\\139\\-24.41406\\-302.6826\\139\\-26.36719\\-302.461\\139\\-28.32031\\-302.1003\\139\\-30.27344\\-301.5816\\139\\-32.22656\\-301.1796\\139\\-36.13281\\-300.5164\\139\\-38.08594\\-300.0666\\139\\-40.03906\\-299.31\\139\\-43.94531\\-298.2606\\139\\-45.89844\\-297.3281\\139\\-47.85156\\-296.8272\\139\\-49.80469\\-296.1996\\139\\-51.75781\\-295.3036\\139\\-53.71094\\-294.7879\\139\\-57.61719\\-292.9941\\139\\-63.18547\\-290.1016\\139\\-63.47656\\-289.8687\\139\\-65.42969\\-289.0037\\139\\-67.38281\\-287.9061\\139\\-69.33594\\-286.9103\\139\\-71.28906\\-285.53\\139\\-76.4695\\-282.2891\\139\\-77.14844\\-281.7798\\139\\-79.10156\\-280.6201\\139\\-81.05469\\-279.1362\\139\\-84.96094\\-276.0228\\139\\-86.91406\\-274.6331\\139\\-88.86719\\-273.0878\\139\\-90.82031\\-271.2847\\139\\-94.72656\\-267.8959\\139\\-96.0264\\-266.6641\\139\\-98.63281\\-264.0349\\139\\-102.1237\\-260.8047\\139\\-103.8744\\-258.8516\\139\\-105.7556\\-256.8984\\139\\-108.3984\\-254.2918\\139\\-110.3516\\-252.0156\\139\\-112.3047\\-249.8447\\139\\-114.6123\\-247.1328\\139\\-115.9144\\-245.1797\\139\\-118.1641\\-242.1259\\139\\-119.9105\\-239.3203\\139\\-122.5518\\-235.4141\\139\\-123.3003\\-233.4609\\139\\-124.5085\\-231.5078\\139\\-125.2573\\-229.5547\\139\\-126.3733\\-227.6016\\139\\-127.1451\\-225.6484\\139\\-128.0851\\-223.6953\\139\\-128.7827\\-221.7422\\139\\-129.2509\\-219.7891\\139\\-129.9543\\-217.8359\\139\\-130.5523\\-215.8828\\139\\-131.2699\\-211.9766\\139\\-132.4132\\-208.0703\\139\\-133.2856\\-202.2109\\139\\-134.0008\\-198.3047\\139\\-134.2291\\-196.3516\\139\\-134.5801\\-190.4922\\139\\-134.7053\\-186.5859\\139\\-134.7492\\-182.6797\\139\\-134.7053\\-178.7734\\139\\-134.5606\\-172.9141\\139\\-134.3659\\-169.0078\\139\\-134.0365\\-165.1016\\139\\-133.418\\-161.1953\\139\\-132.6867\\-155.3359\\139\\-132.4075\\-153.3828\\139\\-131.9845\\-151.4297\\139\\-131.3837\\-149.4766\\139\\-130.9821\\-147.5234\\139\\-130.686\\-145.5703\\139\\-130.2552\\-143.6172\\139\\-129.5361\\-141.6641\\139\\-128.5666\\-137.7578\\139\\-127.7199\\-135.8047\\139\\-126.1676\\-131.8984\\139\\-125.1468\\-129.9453\\139\\-124.4181\\-127.9922\\139\\-123.3222\\-126.0391\\139\\-122.5586\\-124.0859\\139\\-120.1172\\-120.3696\\139\\-118.5959\\-118.2266\\139\\-116.2109\\-115.2248\\139\\-113.6407\\-112.3672\\139\\-110.3516\\-109.0138\\139\\-109.7301\\-108.4609\\139\\-106.4453\\-105.8671\\139\\-104.4922\\-104.4832\\139\\-100.5859\\-101.8908\\139\\-98.63281\\-101.0434\\139\\-96.67969\\-99.94212\\139\\-94.72656\\-99.28125\\139\\-92.77344\\-98.1804\\139\\-90.82031\\-97.52682\\139\\-88.86719\\-96.67561\\139\\-86.91406\\-96.01987\\139\\-83.00781\\-95.25377\\139\\-81.05469\\-94.64523\\139\\-79.10156\\-94.22266\\139\\-77.14844\\-93.95115\\139\\-73.24219\\-93.5858\\139\\-71.28906\\-93.29818\\139\\-67.38281\\-92.43921\\139\\-63.47656\\-91.92073\\139\\-57.61719\\-91.22333\\139\\-53.71094\\-90.49587\\139\\-49.80469\\-90.11445\\139\\-41.99219\\-89.59728\\139\\-36.13281\\-89.18237\\139\\-32.22656\\-88.9973\\139\\-28.32031\\-88.93732\\139\\-26.36719\\-89.04066\\139\\-24.41406\\-89.02734\\139\\-20.50781\\-89.24406\\139\\-16.60156\\-89.60491\\139\\-12.69531\\-90.13286\\139\\-10.74219\\-90.66962\\139\\-8.789063\\-91.50052\\139\\-6.835938\\-92.0776\\139\\-4.882813\\-92.89197\\139\\-2.929688\\-93.59743\\139\\0.9765625\\-94.06916\\139\\2.929688\\-94.13176\\139\\4.882813\\-94.08619\\139\\8.789063\\-93.71484\\139\\10.74219\\-93.29433\\139\\12.69531\\-92.35971\\139\\14.64844\\-91.76068\\139\\18.55469\\-90.28665\\139\\24.41406\\-89.0816\\139\\26.36719\\-88.56615\\139\\28.32031\\-88.29779\\139\\30.27344\\-88.14967\\139\\38.08594\\-87.77339\\139\\43.94531\\-87.66626\\139\\47.85156\\-87.65831\\139\\51.75781\\-87.71803\\139\\57.61719\\-87.94128\\139\\61.52344\\-88.24427\\139\\63.47656\\-88.52168\\139\\67.38281\\-89.52933\\139\\71.28906\\-90.16124\\139\\73.24219\\-90.63362\\139\\75.19531\\-91.37109\\139\\79.10156\\-92.3298\\139\\81.05469\\-93.14023\\139\\83.00781\\-93.66871\\139\\84.96094\\-94.08517\\139\\88.86719\\-95.66562\\139\\90.82031\\-96.35563\\139\\92.77344\\-97.4519\\139\\94.72656\\-98.31828\\139\\96.67969\\-99.50412\\139\\98.63281\\-100.262\\139\\100.5859\\-101.4685\\139\\102.5391\\-102.4992\\139\\104.4922\\-103.8762\\139\\106.4453\\-105.43\\139\\108.0095\\-106.5078\\139\\110.3516\\-108.3347\\139\\112.3047\\-110.1738\\139\\114.445\\-112.3672\\139\\116.2109\\-114.388\\139\\120.3649\\-120.1797\\139\\121.3379\\-122.1328\\139\\122.5318\\-124.0859\\139\\123.8594\\-127.9922\\139\\124.725\\-129.9453\\139\\125.2214\\-131.8984\\139\\126.0287\\-133.8516\\139\\126.6902\\-135.8047\\139\\127.1652\\-137.7578\\139\\128.373\\-141.6641\\139\\128.771\\-143.6172\\139\\129.3747\\-147.5234\\139\\130.2804\\-151.4297\\139\\130.5682\\-153.3828\\139\\131.1435\\-159.2422\\139\\131.9307\\-165.1016\\139\\132.2889\\-169.0078\\139\\132.4564\\-172.9141\\139\\132.6119\\-180.7266\\139\\132.6392\\-188.5391\\139\\132.5552\\-194.3984\\139\\132.3901\\-198.3047\\139\\132.1289\\-202.2109\\139\\131.8881\\-204.1641\\139\\131.2858\\-208.0703\\139\\130.5804\\-213.9297\\139\\130.0583\\-215.8828\\139\\129.3713\\-217.8359\\139\\128.4211\\-221.7422\\139\\127.5249\\-223.6953\\139\\126.8246\\-225.6484\\139\\125.0483\\-229.5547\\139\\124.3234\\-231.5078\\139\\123.3003\\-233.4609\\139\\122.6601\\-235.4141\\139\\121.4489\\-237.3672\\139\\120.575\\-239.3203\\139\\119.1996\\-241.2734\\139\\117.9844\\-243.2266\\139\\116.9733\\-245.1797\\139\\115.6173\\-247.1328\\139\\114.4531\\-249.0859\\139\\112.9702\\-251.0391\\139\\111.3504\\-252.9922\\139\\110.3516\\-254.5529\\139\\108.5825\\-256.8984\\139\\106.8945\\-258.8516\\139\\104.4922\\-261.4676\\139\\101.3338\\-264.7109\\139\\99.26022\\-266.6641\\139\\98.63281\\-267.4029\\139\\95.15625\\-270.5703\\139\\90.50674\\-274.4766\\139\\88.86719\\-275.637\\139\\84.96094\\-278.6939\\139\\82.69794\\-280.3359\\139\\79.10156\\-282.7466\\139\\77.14844\\-283.7236\\139\\76.51654\\-284.2422\\139\\73.45448\\-286.1953\\139\\71.28906\\-287.3803\\139\\69.33594\\-288.5817\\139\\67.38281\\-289.3047\\139\\65.42969\\-290.4549\\139\\63.47656\\-291.2576\\139\\61.52344\\-292.4636\\139\\59.57031\\-293.217\\139\\57.61719\\-294.2031\\139\\55.66406\\-294.8712\\139\\53.71094\\-295.3891\\139\\51.75781\\-296.263\\139\\49.80469\\-296.8388\\139\\47.85156\\-297.303\\139\\45.89844\\-298.1959\\139\\43.94531\\-298.7617\\139\\41.99219\\-299.2216\\139\\40.03906\\-299.9194\\139\\38.08594\\-300.4427\\139\\32.22656\\-301.4066\\139\\28.32031\\-302.325\\139\\26.36719\\-302.591\\139\\22.46094\\-302.8813\\139\\18.55469\\-303.2514\\139\\12.69531\\-304.1505\\139\\8.789063\\-304.4159\\139\\0.9765625\\-304.5951\\139\\-4.882813\\-304.525\\139\\-8.789063\\-304.3658\\139\\-10.74219\\-304.2354\\139"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002231"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "245"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "196"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-303.5781\\141\\-20.50781\\-303.0607\\141\\-26.36719\\-302.5527\\141\\-28.32031\\-302.234\\141\\-32.22656\\-301.2835\\141\\-36.13281\\-300.6136\\141\\-38.08594\\-300.2286\\141\\-40.03906\\-299.4703\\141\\-43.94531\\-298.4194\\141\\-45.89844\\-297.4965\\141\\-49.80469\\-296.3766\\141\\-51.75781\\-295.4265\\141\\-53.71094\\-294.8897\\141\\-55.66406\\-294.1336\\141\\-57.61719\\-293.138\\141\\-59.57031\\-292.257\\141\\-61.52344\\-291.1178\\141\\-67.38281\\-288.2036\\141\\-69.33594\\-287.0857\\141\\-71.28906\\-285.7605\\141\\-73.24219\\-284.6101\\141\\-75.19531\\-283.2369\\141\\-79.10156\\-280.8607\\141\\-79.69501\\-280.3359\\141\\-82.27361\\-278.3828\\141\\-83.00781\\-277.7122\\141\\-84.96094\\-276.217\\141\\-86.91406\\-274.9224\\141\\-88.86719\\-273.2837\\141\\-90.82031\\-271.4563\\141\\-94.72656\\-268.0259\\141\\-98.63281\\-264.166\\141\\-102.2461\\-260.8047\\141\\-103.9103\\-258.8516\\141\\-105.7651\\-256.8984\\141\\-108.3984\\-254.2771\\141\\-112.8415\\-249.0859\\141\\-114.3932\\-247.1328\\141\\-115.6994\\-245.1797\\141\\-118.4789\\-241.2734\\141\\-119.5076\\-239.3203\\141\\-120.9551\\-237.3672\\141\\-122.1563\\-235.4141\\141\\-124.939\\-229.5547\\141\\-125.7026\\-227.6016\\141\\-126.7324\\-225.6484\\141\\-127.3885\\-223.6953\\141\\-128.3322\\-221.7422\\141\\-129.2864\\-217.8359\\141\\-130.494\\-213.9297\\141\\-131.1427\\-210.0234\\141\\-132.1742\\-206.1172\\141\\-132.4961\\-204.1641\\141\\-133.405\\-196.3516\\141\\-133.8838\\-192.4453\\141\\-134.1529\\-188.5391\\141\\-134.2279\\-186.5859\\141\\-134.2804\\-180.7266\\141\\-134.1986\\-176.8203\\141\\-133.9899\\-172.9141\\141\\-133.6506\\-169.0078\\141\\-133.2115\\-165.1016\\141\\-132.6663\\-159.2422\\141\\-132.1508\\-155.3359\\141\\-131.2488\\-151.4297\\141\\-130.6463\\-147.5234\\141\\-130.2411\\-145.5703\\141\\-129.5597\\-143.6172\\141\\-128.6438\\-139.7109\\141\\-127.9529\\-137.7578\\141\\-127.1405\\-135.8047\\141\\-126.4921\\-133.8516\\141\\-125.4213\\-131.8984\\141\\-124.7104\\-129.9453\\141\\-123.6905\\-127.9922\\141\\-122.9137\\-126.0391\\141\\-121.7923\\-124.0859\\141\\-120.7785\\-122.1328\\141\\-117.7572\\-118.2266\\141\\-116.539\\-116.2734\\141\\-114.9018\\-114.3203\\141\\-111.0715\\-110.4141\\141\\-110.3516\\-109.6176\\141\\-108.3984\\-107.803\\141\\-106.4453\\-106.4054\\141\\-104.4922\\-105.153\\141\\-102.5391\\-103.65\\141\\-100.5859\\-102.3521\\141\\-98.63281\\-101.4234\\141\\-96.67969\\-100.3351\\141\\-94.72656\\-99.62018\\141\\-90.82031\\-97.84151\\141\\-88.86719\\-97.18843\\141\\-86.91406\\-96.35549\\141\\-84.96094\\-95.88626\\141\\-81.05469\\-95.09335\\141\\-79.10156\\-94.54676\\141\\-77.14844\\-94.19156\\141\\-75.19531\\-93.93909\\141\\-71.28906\\-93.54562\\141\\-67.38281\\-92.92188\\141\\-65.42969\\-92.51041\\141\\-61.52344\\-91.93249\\141\\-57.61719\\-91.55041\\141\\-55.66406\\-91.3066\\141\\-51.75781\\-90.63533\\141\\-47.85156\\-90.21602\\141\\-38.08594\\-89.61935\\141\\-34.17969\\-89.46828\\141\\-28.32031\\-89.39324\\141\\-22.46094\\-89.50378\\141\\-16.60156\\-89.86402\\141\\-14.64844\\-90.10262\\141\\-12.69531\\-90.47591\\141\\-10.74219\\-91.21512\\141\\-6.835938\\-92.49985\\141\\-4.882813\\-93.38566\\141\\-2.929688\\-93.82449\\141\\0.9765625\\-94.41936\\141\\2.929688\\-94.52338\\141\\4.882813\\-94.44727\\141\\8.789063\\-93.95991\\141\\10.74219\\-93.62791\\141\\12.69531\\-92.93915\\141\\14.64844\\-92.08916\\141\\16.60156\\-91.53947\\141\\18.55469\\-90.78664\\141\\20.50781\\-90.21107\\141\\24.41406\\-89.55539\\141\\28.32031\\-88.78473\\141\\30.27344\\-88.49642\\141\\32.22656\\-88.31056\\141\\38.08594\\-88.00105\\141\\43.94531\\-87.86381\\141\\49.80469\\-87.85727\\141\\55.66406\\-87.99431\\141\\57.61719\\-88.08843\\141\\61.52344\\-88.4317\\141\\63.47656\\-88.81613\\141\\65.42969\\-89.34457\\141\\71.28906\\-90.36476\\141\\75.19531\\-91.55455\\141\\79.10156\\-92.57685\\141\\81.05469\\-93.35721\\141\\84.96094\\-94.30078\\141\\86.91406\\-95.27402\\141\\88.86719\\-95.88258\\141\\90.73154\\-96.74219\\141\\96.67969\\-99.7429\\141\\100.5859\\-101.769\\141\\104.4922\\-104.364\\141\\107.3649\\-106.5078\\141\\110.3516\\-108.9642\\141\\113.6947\\-112.3672\\141\\115.5104\\-114.3203\\141\\117.0489\\-116.2734\\141\\118.401\\-118.2266\\141\\119.5378\\-120.1797\\141\\120.8643\\-122.1328\\141\\122.7409\\-126.0391\\141\\123.2767\\-127.9922\\141\\124.0786\\-129.9453\\141\\124.753\\-131.8984\\141\\125.2339\\-133.8516\\141\\126.6142\\-137.7578\\141\\127.5112\\-141.6641\\141\\128.1523\\-143.6172\\141\\128.5828\\-145.5703\\141\\129.1177\\-149.4766\\141\\129.4465\\-151.4297\\141\\130.2321\\-155.3359\\141\\130.4979\\-157.2891\\141\\130.8363\\-161.1953\\141\\131.3244\\-169.0078\\141\\131.4776\\-172.9141\\141\\131.7042\\-182.6797\\141\\131.7486\\-186.5859\\141\\131.7344\\-190.4922\\141\\131.6467\\-194.3984\\141\\131.4715\\-198.3047\\141\\130.8481\\-208.0703\\141\\130.4455\\-211.9766\\141\\130.0569\\-213.9297\\141\\129.4526\\-215.8828\\141\\128.6373\\-219.7891\\141\\128.0117\\-221.7422\\141\\127.1738\\-223.6953\\141\\126.5848\\-225.6484\\141\\125.539\\-227.6016\\141\\124.8921\\-229.5547\\141\\123.2146\\-233.4609\\141\\122.5619\\-235.4141\\141\\121.3833\\-237.3672\\141\\120.504\\-239.3203\\141\\119.1833\\-241.2734\\141\\117.9858\\-243.2266\\141\\116.9934\\-245.1797\\141\\115.7096\\-247.1328\\141\\114.6061\\-249.0859\\141\\111.5271\\-252.9922\\141\\110.3516\\-254.8058\\141\\108.8365\\-256.8984\\141\\104.4922\\-261.8106\\141\\101.6846\\-264.7109\\141\\98.63281\\-267.7182\\141\\95.53205\\-270.5703\\141\\90.82031\\-274.5997\\141\\86.91406\\-277.4005\\141\\84.96094\\-279.0231\\141\\83.00781\\-280.5223\\141\\81.05469\\-281.6232\\141\\79.10156\\-283.0103\\141\\77.14844\\-284.1061\\141\\75.19531\\-285.3353\\141\\73.24219\\-286.6992\\141\\71.28906\\-287.6369\\141\\69.33594\\-288.8314\\141\\67.38281\\-289.4733\\141\\65.42969\\-290.7119\\141\\63.47656\\-291.5128\\141\\61.52344\\-292.6897\\141\\59.57031\\-293.4254\\141\\57.61719\\-294.4396\\141\\53.71094\\-295.558\\141\\51.75781\\-296.4713\\141\\47.85156\\-297.512\\141\\45.89844\\-298.4052\\141\\41.99219\\-299.4001\\141\\40.03906\\-300.1529\\141\\38.08594\\-300.5769\\141\\34.17969\\-301.1966\\141\\32.22656\\-301.5798\\141\\30.27344\\-302.1003\\141\\28.32031\\-302.4693\\141\\26.36719\\-302.689\\141\\22.46094\\-302.9824\\141\\18.55469\\-303.4189\\141\\14.64844\\-304.0774\\141\\12.69531\\-304.2954\\141\\8.789063\\-304.5287\\141\\4.882813\\-304.642\\141\\0.9765625\\-304.7033\\141\\-4.882813\\-304.6232\\141\\-8.789063\\-304.4625\\141\\-12.69531\\-304.1798\\141"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002230"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "241"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "197"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-303.1557\\143\\-26.36719\\-302.6283\\143\\-28.32031\\-302.3477\\143\\-30.27344\\-301.9203\\143\\-32.22656\\-301.3825\\143\\-38.08594\\-300.3405\\143\\-41.99219\\-299.0424\\143\\-43.94531\\-298.5528\\143\\-45.89844\\-297.6682\\143\\-47.85156\\-297.0258\\143\\-49.80469\\-296.511\\143\\-51.75781\\-295.5523\\143\\-55.66406\\-294.3513\\143\\-57.61719\\-293.2838\\143\\-59.57031\\-292.5059\\143\\-61.52344\\-291.2703\\143\\-63.47656\\-290.4421\\143\\-65.42969\\-289.2948\\143\\-67.38281\\-288.5208\\143\\-67.89526\\-288.1484\\143\\-73.24219\\-284.8717\\143\\-75.19531\\-283.4195\\143\\-77.14844\\-282.3301\\143\\-79.10156\\-281.0838\\143\\-82.53817\\-278.3828\\143\\-83.00781\\-277.9402\\143\\-86.91406\\-275.1516\\143\\-88.86719\\-273.4938\\143\\-92.77344\\-269.8595\\143\\-94.25813\\-268.6172\\143\\-96.42392\\-266.6641\\143\\-98.63281\\-264.3829\\143\\-102.5391\\-260.742\\143\\-103.98\\-258.8516\\143\\-105.8282\\-256.8984\\143\\-108.3984\\-254.2918\\143\\-112.7539\\-249.0859\\143\\-114.2578\\-247.1049\\143\\-116.9577\\-243.2266\\143\\-118.1717\\-241.2734\\143\\-119.2871\\-239.3203\\143\\-120.7252\\-237.3672\\143\\-121.7471\\-235.4141\\143\\-122.8962\\-233.4609\\143\\-123.5871\\-231.5078\\143\\-124.6647\\-229.5547\\143\\-125.271\\-227.6016\\143\\-126.2888\\-225.6484\\143\\-127.6855\\-221.7422\\143\\-128.4973\\-219.7891\\143\\-129.3351\\-215.8828\\143\\-130.4852\\-211.9766\\143\\-131.3997\\-206.1172\\143\\-132.276\\-202.2109\\143\\-132.5312\\-200.2578\\143\\-133.0473\\-194.3984\\143\\-133.5014\\-186.5859\\143\\-133.5713\\-180.7266\\143\\-133.4635\\-176.8203\\143\\-133.0432\\-169.0078\\143\\-132.6018\\-163.1484\\143\\-132.1951\\-159.2422\\143\\-131.3968\\-155.3359\\143\\-131.1093\\-153.3828\\143\\-130.6345\\-149.4766\\143\\-130.2296\\-147.5234\\143\\-129.5965\\-145.5703\\143\\-128.7287\\-141.6641\\143\\-128.1896\\-139.7109\\143\\-127.3246\\-137.7578\\143\\-126.7265\\-135.8047\\143\\-124.9943\\-131.8984\\143\\-124.2604\\-129.9453\\143\\-123.2308\\-127.9922\\143\\-122.4624\\-126.0391\\143\\-122.0703\\-125.4796\\143\\-120.1172\\-122.2005\\143\\-118.7397\\-120.1797\\143\\-116.2109\\-116.8697\\143\\-114.2578\\-114.4009\\143\\-112.2615\\-112.3672\\143\\-110.3516\\-110.2403\\143\\-108.3984\\-108.3691\\143\\-106.4453\\-107.0786\\143\\-102.5391\\-104.0632\\143\\-98.63281\\-101.7516\\143\\-96.67969\\-100.8714\\143\\-94.72656\\-99.88494\\143\\-92.77344\\-99.23785\\143\\-90.82031\\-98.17651\\143\\-88.86719\\-97.54675\\143\\-84.96094\\-96.16951\\143\\-81.05469\\-95.42133\\143\\-77.14844\\-94.50694\\143\\-75.19531\\-94.15717\\143\\-67.38281\\-93.31762\\143\\-65.42969\\-93.00871\\143\\-63.47656\\-92.56541\\143\\-61.52344\\-92.23113\\143\\-53.71094\\-91.39462\\143\\-49.80469\\-90.77431\\143\\-45.89844\\-90.3335\\143\\-41.99219\\-90.05074\\143\\-38.08594\\-89.86577\\143\\-34.17969\\-89.75561\\143\\-26.36719\\-89.69926\\143\\-20.50781\\-89.85899\\143\\-16.60156\\-90.13286\\143\\-14.64844\\-90.40341\\143\\-8.789063\\-92.19041\\143\\-6.835938\\-93.06703\\143\\-4.882813\\-93.66871\\143\\-2.929688\\-94.05192\\143\\0.9765625\\-94.96184\\143\\2.929688\\-95.09557\\143\\4.882813\\-95.00361\\143\\6.835938\\-94.67462\\143\\10.74219\\-93.87315\\143\\12.69531\\-93.40774\\143\\14.64844\\-92.449\\143\\18.55469\\-91.30768\\143\\20.50781\\-90.59715\\143\\22.46094\\-90.15594\\143\\30.27344\\-89.05642\\143\\32.22656\\-88.68739\\143\\36.13281\\-88.35635\\143\\40.03906\\-88.15936\\143\\43.94531\\-88.06097\\143\\49.80469\\-88.03599\\143\\55.66406\\-88.18079\\143\\59.57031\\-88.46745\\143\\61.52344\\-88.73292\\143\\63.47656\\-89.21165\\143\\65.42969\\-89.59013\\143\\69.33594\\-90.18994\\143\\71.28906\\-90.62015\\143\\73.24219\\-91.27216\\143\\77.14844\\-92.21945\\143\\81.05469\\-93.56226\\143\\83.00781\\-93.97729\\143\\84.96094\\-94.58307\\143\\86.91406\\-95.49874\\143\\88.86719\\-96.11311\\143\\90.82031\\-97.2112\\143\\92.77344\\-98.03487\\143\\94.72656\\-99.21916\\143\\96.67969\\-99.98689\\143\\98.63281\\-101.1743\\143\\100.5859\\-102.0969\\143\\103.9997\\-104.5547\\143\\104.4922\\-104.9753\\143\\106.4453\\-106.2361\\143\\108.3984\\-107.7051\\143\\110.3516\\-109.4652\\143\\115.0377\\-114.3203\\143\\116.649\\-116.2734\\143\\117.6793\\-118.2266\\143\\118.1641\\-118.8391\\143\\120.2691\\-122.1328\\143\\122.1719\\-126.0391\\143\\122.9171\\-127.9922\\143\\123.3874\\-129.9453\\143\\124.1936\\-131.8984\\143\\124.7991\\-133.8516\\143\\125.2258\\-135.8047\\143\\126.5321\\-139.7109\\143\\127.3621\\-143.6172\\143\\128.4084\\-147.5234\\143\\128.6978\\-149.4766\\143\\129.4556\\-155.3359\\143\\130.1139\\-159.2422\\143\\130.361\\-161.1953\\143\\130.6391\\-165.1016\\143\\130.8247\\-170.9609\\143\\130.9685\\-182.6797\\143\\131.0096\\-188.5391\\143\\130.9548\\-196.3516\\143\\130.8142\\-202.2109\\143\\130.6345\\-206.1172\\143\\130.2637\\-210.0234\\143\\129.4526\\-213.9297\\143\\128.7726\\-217.8359\\143\\128.3713\\-219.7891\\143\\127.58\\-221.7422\\143\\126.3171\\-225.6484\\143\\125.3084\\-227.6016\\143\\124.7614\\-229.5547\\143\\123.8222\\-231.5078\\143\\122.4783\\-235.4141\\143\\121.3421\\-237.3672\\143\\120.4514\\-239.3203\\143\\119.1879\\-241.2734\\143\\118.0753\\-243.2266\\143\\117.0647\\-245.1797\\143\\115.7973\\-247.1328\\143\\114.7263\\-249.0859\\143\\111.6599\\-252.9922\\143\\110.4707\\-254.9453\\143\\109.0205\\-256.8984\\143\\104.4922\\-262.084\\143\\101.9744\\-264.7109\\143\\98.63281\\-267.9865\\143\\95.86828\\-270.5703\\143\\94.72656\\-271.4946\\143\\92.77344\\-273.2789\\143\\90.82031\\-274.9323\\143\\86.91406\\-277.6642\\143\\83.00781\\-280.8411\\143\\81.05469\\-281.8943\\143\\77.14844\\-284.5146\\143\\75.19531\\-285.5948\\143\\73.24219\\-286.9363\\143\\69.33594\\-289.0158\\143\\67.38281\\-289.7345\\143\\65.42969\\-290.9225\\143\\63.47656\\-291.8353\\143\\61.52344\\-292.891\\143\\59.57031\\-293.6736\\143\\57.61719\\-294.636\\143\\55.66406\\-295.1421\\143\\53.71094\\-295.816\\143\\51.75781\\-296.6445\\143\\49.80469\\-297.102\\143\\47.85156\\-297.7883\\143\\45.89844\\-298.5848\\143\\41.99219\\-299.6525\\143\\40.03906\\-300.325\\143\\34.17969\\-301.3518\\143\\30.27344\\-302.2818\\143\\28.32031\\-302.5838\\143\\22.46094\\-303.0938\\143\\18.55469\\-303.6467\\143\\16.60156\\-304.0325\\143\\12.69531\\-304.4228\\143\\8.789063\\-304.6326\\143\\4.882813\\-304.75\\143\\0.9765625\\-304.7927\\143\\-4.882813\\-304.7077\\143\\-10.74219\\-304.456\\143\\-12.69531\\-304.3275\\143\\-14.64844\\-304.099\\143"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002229"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "247"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "198"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-304.0092\\145\\-20.50781\\-303.282\\145\\-22.46094\\-303.0466\\145\\-26.36719\\-302.6826\\145\\-28.32031\\-302.4401\\145\\-30.27344\\-302.0735\\145\\-32.22656\\-301.5115\\145\\-34.17969\\-301.1184\\145\\-38.08594\\-300.4543\\145\\-40.01991\\-299.8672\\145\\-41.99219\\-299.1681\\145\\-43.94531\\-298.6554\\145\\-47.85156\\-297.1233\\145\\-49.80469\\-296.6255\\145\\-51.75781\\-295.7168\\145\\-55.66406\\-294.5121\\145\\-57.61719\\-293.4472\\145\\-59.57031\\-292.6926\\145\\-61.52344\\-291.4464\\145\\-63.47656\\-290.6572\\145\\-65.42969\\-289.4569\\145\\-67.38281\\-288.7279\\145\\-69.33594\\-287.479\\145\\-71.28906\\-286.443\\145\\-74.44473\\-284.2422\\145\\-75.19531\\-283.6486\\145\\-77.14844\\-282.6048\\145\\-79.10156\\-281.2761\\145\\-81.05469\\-279.7663\\145\\-86.91406\\-275.3649\\145\\-88.86719\\-273.6915\\145\\-92.77344\\-270.021\\145\\-94.64518\\-268.6172\\145\\-96.78728\\-266.6641\\145\\-98.57388\\-264.7109\\145\\-100.5859\\-262.8636\\145\\-102.7072\\-260.8047\\145\\-104.2519\\-258.8516\\145\\-108.3984\\-254.3564\\145\\-112.7045\\-249.0859\\145\\-114.2578\\-246.9777\\145\\-116.8729\\-243.2266\\145\\-117.8903\\-241.2734\\145\\-119.1406\\-239.3203\\145\\-120.5143\\-237.3672\\145\\-121.4955\\-235.4141\\145\\-122.7193\\-233.4609\\145\\-123.3576\\-231.5078\\145\\-124.3604\\-229.5547\\145\\-125.6946\\-225.6484\\145\\-126.6694\\-223.6953\\145\\-127.225\\-221.7422\\145\\-128.0398\\-219.7891\\145\\-128.6256\\-217.8359\\145\\-129.3815\\-213.9297\\145\\-129.9844\\-211.9766\\145\\-130.4852\\-210.0234\\145\\-130.7761\\-208.0703\\145\\-131.2145\\-204.1641\\145\\-131.5619\\-202.2109\\145\\-132.0229\\-200.2578\\145\\-132.3242\\-198.3047\\145\\-132.6555\\-194.3984\\145\\-132.8621\\-190.4922\\145\\-133.0027\\-186.5859\\145\\-133.0553\\-182.6797\\145\\-132.9702\\-176.8203\\145\\-132.8323\\-172.9141\\145\\-132.6399\\-169.0078\\145\\-132.3442\\-165.1016\\145\\-132.1399\\-163.1484\\145\\-131.1947\\-157.2891\\145\\-130.6002\\-151.4297\\145\\-130.2411\\-149.4766\\145\\-129.6258\\-147.5234\\145\\-129.1629\\-145.5703\\145\\-128.3799\\-141.6641\\145\\-127.5536\\-139.7109\\145\\-126.2471\\-135.8047\\145\\-125.2959\\-133.8516\\145\\-124.6438\\-131.8984\\145\\-123.6119\\-129.9453\\145\\-122.8957\\-127.9922\\145\\-120.8089\\-124.0859\\145\\-119.3683\\-122.1328\\145\\-116.7759\\-118.2266\\145\\-114.2578\\-115.1971\\145\\-108.3984\\-109.0455\\145\\-106.4453\\-107.4333\\145\\-104.4922\\-105.9547\\145\\-98.63281\\-102.0648\\145\\-96.67969\\-101.2437\\145\\-94.72656\\-100.1602\\145\\-92.77344\\-99.54623\\145\\-90.82031\\-98.62873\\145\\-88.86719\\-97.84216\\145\\-86.91406\\-97.29075\\145\\-84.96094\\-96.53696\\145\\-83.00781\\-96.01691\\145\\-79.10156\\-95.34245\\145\\-77.14844\\-94.94804\\145\\-75.19531\\-94.44231\\145\\-73.24219\\-94.13591\\145\\-65.42969\\-93.37148\\145\\-63.47656\\-93.03569\\145\\-61.52344\\-92.57685\\145\\-57.61719\\-92.02213\\145\\-49.80469\\-91.23963\\145\\-45.89844\\-90.67111\\145\\-41.99219\\-90.3023\\145\\-38.08594\\-90.08654\\145\\-34.17969\\-89.99548\\145\\-26.36719\\-89.93661\\145\\-20.50781\\-90.10051\\145\\-16.60156\\-90.45481\\145\\-14.64844\\-90.87518\\145\\-12.69531\\-91.44169\\145\\-10.74219\\-91.90302\\145\\-8.789063\\-92.60021\\145\\-6.835938\\-93.48905\\145\\-2.929688\\-94.36955\\145\\-0.9765625\\-95.06911\\145\\0.9765625\\-95.42568\\145\\2.929688\\-95.52148\\145\\4.882813\\-95.45435\\145\\6.835938\\-95.21631\\145\\10.74219\\-94.12731\\145\\12.69531\\-93.68433\\145\\16.60156\\-92.15234\\145\\20.50781\\-91.11465\\145\\22.46094\\-90.53404\\145\\24.41406\\-90.14216\\145\\30.27344\\-89.51083\\145\\36.13281\\-88.70377\\145\\40.03906\\-88.41877\\145\\43.94531\\-88.28075\\145\\47.85156\\-88.23214\\145\\51.75781\\-88.27251\\145\\55.66406\\-88.39992\\145\\59.57031\\-88.81701\\145\\63.47656\\-89.50729\\145\\67.38281\\-90.07951\\145\\69.33594\\-90.42983\\145\\73.24219\\-91.50939\\145\\77.14844\\-92.41999\\145\\79.10156\\-93.20564\\145\\81.05469\\-93.73693\\145\\83.00781\\-94.11054\\145\\84.96094\\-94.93402\\145\\88.86719\\-96.37109\\145\\90.82031\\-97.50174\\145\\92.77344\\-98.32668\\145\\94.72656\\-99.49644\\145\\96.67969\\-100.2966\\145\\100.5859\\-102.5787\\145\\102.5391\\-103.8417\\145\\104.4922\\-105.4123\\145\\106.4453\\-106.8308\\145\\108.3984\\-108.1106\\145\\110.3516\\-109.9371\\145\\114.5531\\-114.3203\\145\\116.2109\\-116.5957\\145\\118.5974\\-120.1797\\145\\119.5337\\-122.1328\\145\\120.7738\\-124.0859\\145\\121.5006\\-126.0391\\145\\122.5185\\-127.9922\\145\\123.5119\\-131.8984\\145\\124.3467\\-133.8516\\145\\124.8461\\-135.8047\\145\\125.2413\\-137.7578\\145\\125.7813\\-139.7109\\145\\126.459\\-141.6641\\145\\127.254\\-145.5703\\145\\128.253\\-149.4766\\145\\128.563\\-151.4297\\145\\129.0298\\-155.3359\\145\\129.3846\\-159.2422\\145\\129.8909\\-163.1484\\145\\130.0841\\-165.1016\\145\\130.3267\\-170.9609\\145\\130.3811\\-174.8672\\145\\130.5804\\-182.6797\\145\\130.6345\\-188.5391\\145\\130.6152\\-196.3516\\145\\130.4546\\-202.2109\\145\\130.2271\\-206.1172\\145\\129.3815\\-211.9766\\145\\128.8947\\-215.8828\\145\\128.5671\\-217.8359\\145\\128.0794\\-219.7891\\145\\127.3035\\-221.7422\\145\\126.7609\\-223.6953\\145\\126.0287\\-225.6484\\145\\125.1708\\-227.6016\\145\\124.6802\\-229.5547\\145\\123.7169\\-231.5078\\145\\122.4542\\-235.4141\\145\\121.3408\\-237.3672\\145\\120.4834\\-239.3203\\145\\119.2415\\-241.2734\\145\\117.1448\\-245.1797\\145\\114.8425\\-249.0859\\145\\111.8164\\-252.9922\\145\\110.6916\\-254.9453\\145\\109.2122\\-256.8984\\145\\106.4453\\-260.1466\\145\\104.4922\\-262.3496\\145\\100.5859\\-266.4462\\145\\96.13962\\-270.5703\\145\\94.72656\\-271.7434\\145\\92.77344\\-273.5359\\145\\90.82031\\-275.1972\\145\\88.86719\\-276.6829\\145\\86.91406\\-277.9496\\145\\83.00781\\-281.0748\\145\\79.10156\\-283.4253\\145\\77.14844\\-284.8233\\145\\71.28906\\-288.3112\\145\\69.33594\\-289.1724\\145\\65.42969\\-291.1095\\145\\63.47656\\-292.2417\\145\\59.55574\\-294.0078\\145\\57.61719\\-294.8046\\145\\55.66406\\-295.2705\\145\\53.71094\\-296.1324\\145\\51.75781\\-296.8019\\145\\49.80469\\-297.2649\\145\\47.85156\\-298.1258\\145\\45.89844\\-298.7446\\145\\43.94531\\-299.2406\\145\\41.99219\\-299.9619\\145\\40.03906\\-300.4739\\145\\34.17969\\-301.528\\145\\32.22656\\-302.0754\\145\\30.27344\\-302.4526\\145\\28.32031\\-302.7003\\145\\24.41406\\-303.0244\\145\\22.46094\\-303.2514\\145\\16.60156\\-304.2173\\145\\14.64844\\-304.3877\\145\\8.789063\\-304.7265\\145\\4.882813\\-304.8366\\145\\-0.9765625\\-304.8666\\145\\-4.882813\\-304.7927\\145\\-10.74219\\-304.5461\\145\\-14.64844\\-304.2531\\145"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002228"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "241"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "199"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-303.4165\\147\\-24.41406\\-302.9264\\147\\-28.32031\\-302.5421\\147\\-30.27344\\-302.2012\\147\\-34.17969\\-301.2344\\147\\-38.08594\\-300.5656\\147\\-40.03906\\-300.0819\\147\\-41.99219\\-299.31\\147\\-43.94531\\-298.7805\\147\\-45.89844\\-298.1498\\147\\-47.85156\\-297.2388\\147\\-49.80469\\-296.7368\\147\\-53.71094\\-295.2055\\147\\-55.66406\\-294.6609\\147\\-57.61719\\-293.6667\\147\\-59.57031\\-292.8561\\147\\-61.52344\\-291.6909\\147\\-63.47656\\-290.8499\\147\\-65.42969\\-289.644\\147\\-67.38281\\-288.921\\147\\-69.33594\\-287.7107\\147\\-71.28906\\-286.7286\\147\\-71.95345\\-286.1953\\147\\-75.19531\\-283.9434\\147\\-77.14844\\-282.8763\\147\\-80.73821\\-280.3359\\147\\-83.00781\\-278.6744\\147\\-88.23438\\-274.4766\\147\\-92.77344\\-270.3577\\147\\-94.72656\\-268.8863\\147\\-96.67969\\-267.0501\\147\\-98.89063\\-264.7109\\147\\-100.9627\\-262.7578\\147\\-102.9072\\-260.8047\\147\\-104.4669\\-258.8516\\147\\-108.3984\\-254.4807\\147\\-112.7148\\-249.0859\\147\\-116.8155\\-243.2266\\147\\-117.7749\\-241.2734\\147\\-118.1641\\-240.7981\\147\\-120.1172\\-237.6072\\147\\-121.3321\\-235.4141\\147\\-122.5456\\-233.4609\\147\\-123.2096\\-231.5078\\147\\-124.8311\\-227.6016\\147\\-125.3706\\-225.6484\\147\\-126.3507\\-223.6953\\147\\-127.5378\\-219.7891\\147\\-128.3138\\-217.8359\\147\\-128.7493\\-215.8828\\147\\-129.4908\\-211.9766\\147\\-130.0841\\-210.0234\\147\\-130.5025\\-208.0703\\147\\-131.3997\\-200.2578\\147\\-132.0597\\-196.3516\\147\\-132.2889\\-194.3984\\147\\-132.5531\\-190.4922\\147\\-132.6793\\-186.5859\\147\\-132.7242\\-182.6797\\147\\-132.6892\\-178.7734\\147\\-132.5027\\-172.9141\\147\\-132.2613\\-169.0078\\147\\-132.0717\\-167.0547\\147\\-131.4901\\-163.1484\\147\\-131.2647\\-161.1953\\147\\-130.5442\\-153.3828\\147\\-130.2059\\-151.4297\\147\\-129.6535\\-149.4766\\147\\-129.213\\-147.5234\\147\\-128.4886\\-143.6172\\147\\-127.1076\\-139.7109\\147\\-126.55\\-137.7578\\147\\-125.5713\\-135.8047\\147\\-124.9107\\-133.8516\\147\\-123.182\\-129.9453\\147\\-122.4958\\-127.9922\\147\\-121.3\\-126.0391\\147\\-120.229\\-124.0859\\147\\-118.1641\\-121.0818\\147\\-117.4091\\-120.1797\\147\\-116.2109\\-118.4013\\147\\-114.6415\\-116.2734\\147\\-112.8976\\-114.3203\\147\\-109.2687\\-110.4141\\147\\-108.3984\\-109.5378\\147\\-106.4453\\-107.8351\\147\\-102.5391\\-105.1991\\147\\-100.5859\\-103.7362\\147\\-98.63281\\-102.5163\\147\\-94.72656\\-100.577\\147\\-92.77344\\-99.75907\\147\\-90.82031\\-99.12555\\147\\-88.86719\\-98.14489\\147\\-84.96094\\-96.98633\\147\\-83.00781\\-96.29773\\147\\-81.05469\\-95.9011\\147\\-77.14844\\-95.32232\\147\\-73.24219\\-94.39146\\147\\-69.33594\\-93.93233\\147\\-65.42969\\-93.60198\\147\\-63.47656\\-93.38056\\147\\-61.52344\\-93.03419\\147\\-59.57031\\-92.57685\\147\\-55.66406\\-92.03783\\147\\-51.75781\\-91.67336\\147\\-47.85156\\-91.36514\\147\\-40.03906\\-90.43892\\147\\-36.13281\\-90.26913\\147\\-28.32031\\-90.16917\\147\\-26.36719\\-90.18681\\147\\-20.50781\\-90.40048\\147\\-18.55469\\-90.58984\\147\\-16.60156\\-90.92066\\147\\-12.69531\\-91.7313\\147\\-10.74219\\-92.25\\147\\-8.789063\\-93.15671\\147\\-6.835938\\-93.73509\\147\\-4.882813\\-94.17467\\147\\-2.929688\\-94.89144\\147\\-0.9765625\\-95.49538\\147\\0.9765625\\-95.76008\\147\\2.929688\\-95.86987\\147\\4.882813\\-95.80976\\147\\6.835938\\-95.61359\\147\\8.789063\\-95.21336\\147\\10.74219\\-94.46354\\147\\14.64844\\-93.28176\\147\\16.60156\\-92.44407\\147\\18.55469\\-91.91905\\147\\20.50781\\-91.54734\\147\\24.41406\\-90.5638\\147\\26.36719\\-90.22237\\147\\28.32031\\-90.0082\\147\\34.17969\\-89.49538\\147\\38.08594\\-89.06815\\147\\41.99219\\-88.78473\\147\\47.85156\\-88.56261\\147\\51.75781\\-88.58543\\147\\55.66406\\-88.81525\\147\\59.57031\\-89.31638\\147\\65.42969\\-90.01651\\147\\67.38281\\-90.29801\\147\\69.33594\\-90.73421\\147\\71.28906\\-91.312\\147\\75.19531\\-92.11664\\147\\77.14844\\-92.67435\\147\\79.10156\\-93.42059\\147\\83.00781\\-94.27402\\147\\84.96094\\-95.19198\\147\\86.91406\\-95.84558\\147\\88.86719\\-96.73456\\147\\96.57749\\-100.6484\\147\\98.63281\\-101.7342\\147\\100.5859\\-103.0631\\147\\102.5391\\-104.2359\\147\\106.4453\\-107.2724\\147\\108.1181\\-108.4609\\147\\110.1406\\-110.4141\\147\\114.2578\\-114.7516\\147\\116.9302\\-118.2266\\147\\120.1172\\-123.9963\\147\\121.0769\\-126.0391\\147\\122.7564\\-129.9453\\147\\123.1873\\-131.8984\\147\\123.7246\\-133.8516\\147\\124.4894\\-135.8047\\147\\125.2741\\-139.7109\\147\\125.82\\-141.6641\\147\\126.4963\\-143.6172\\147\\127.1671\\-147.5234\\147\\128.0816\\-151.4297\\147\\128.4395\\-153.3828\\147\\128.8834\\-157.2891\\147\\129.3239\\-163.1484\\147\\129.5741\\-169.0078\\147\\129.7238\\-174.8672\\147\\129.9228\\-178.7734\\147\\130.099\\-184.6328\\147\\130.1649\\-188.5391\\147\\130.1398\\-196.3516\\147\\129.9384\\-202.2109\\147\\129.6552\\-206.1172\\147\\128.9353\\-213.9297\\147\\128.3997\\-217.8359\\147\\127.1389\\-221.7422\\147\\126.6473\\-223.6953\\147\\125.1149\\-227.6016\\147\\124.6454\\-229.5547\\147\\123.6792\\-231.5078\\147\\122.5124\\-235.4141\\147\\121.4058\\-237.3672\\147\\120.6203\\-239.3203\\147\\119.3217\\-241.2734\\147\\118.3758\\-243.2266\\147\\116.2109\\-247.056\\147\\114.9764\\-249.0859\\147\\112.0458\\-252.9922\\147\\110.88\\-254.9453\\147\\109.3814\\-256.8984\\147\\106.4453\\-260.4461\\147\\102.6293\\-264.7109\\147\\100.5859\\-266.841\\147\\96.67969\\-270.3469\\147\\92.77344\\-273.7817\\147\\88.86719\\-276.9594\\147\\84.96094\\-279.8111\\147\\83.00781\\-281.3125\\147\\81.05469\\-282.6669\\147\\79.10156\\-283.6497\\147\\78.35478\\-284.2422\\147\\75.19531\\-286.3962\\147\\73.24219\\-287.3995\\147\\71.28906\\-288.623\\147\\69.33594\\-289.336\\147\\67.38281\\-290.5308\\147\\65.42969\\-291.3278\\147\\63.47656\\-292.5517\\147\\61.52344\\-293.3001\\147\\59.57031\\-294.3311\\147\\57.61719\\-294.9665\\147\\55.66406\\-295.4596\\147\\53.71094\\-296.4102\\147\\49.80469\\-297.4864\\147\\47.85156\\-298.4081\\147\\43.94531\\-299.4753\\147\\41.99219\\-300.2286\\147\\40.03906\\-300.6337\\147\\36.13281\\-301.3094\\147\\32.22656\\-302.285\\147\\30.27344\\-302.5956\\147\\24.41406\\-303.1638\\147\\22.46094\\-303.4661\\147\\18.55469\\-304.1702\\147\\14.64844\\-304.5071\\147\\8.789063\\-304.827\\147\\2.929688\\-304.9813\\147\\-0.9765625\\-304.9687\\147\\-4.882813\\-304.8888\\147\\-10.74219\\-304.6378\\147\\-14.64844\\-304.3732\\147\\-16.60156\\-304.1604\\147"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002227"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "249"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "200"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-18.55469\\-304.044\\149\\-20.50781\\-303.6181\\149\\-24.41406\\-302.9999\\149\\-28.32031\\-302.6399\\149\\-30.27344\\-302.3284\\149\\-32.22656\\-301.9056\\149\\-34.17969\\-301.3619\\149\\-38.08594\\-300.6631\\149\\-40.03906\\-300.231\\149\\-41.99219\\-299.4906\\149\\-45.89844\\-298.3514\\149\\-47.85156\\-297.3809\\149\\-49.80469\\-296.8482\\149\\-51.75781\\-296.2122\\149\\-53.71094\\-295.3205\\149\\-55.66406\\-294.7903\\149\\-57.48981\\-294.0078\\149\\-61.53311\\-292.0547\\149\\-65.2073\\-290.1016\\149\\-67.38281\\-289.0891\\149\\-71.28906\\-286.9609\\149\\-73.24219\\-285.5582\\149\\-75.19531\\-284.3908\\149\\-81.05469\\-280.4744\\149\\-83.00781\\-278.9814\\149\\-86.91406\\-275.7248\\149\\-88.61205\\-274.4766\\149\\-92.95654\\-270.5703\\149\\-94.72656\\-269.1543\\149\\-96.67969\\-267.2888\\149\\-99.13163\\-264.7109\\149\\-101.2106\\-262.7578\\149\\-103.0941\\-260.8047\\149\\-106.3874\\-256.8984\\149\\-108.3984\\-254.6947\\149\\-109.6477\\-252.9922\\149\\-112.7608\\-249.0859\\149\\-114.2578\\-246.9747\\149\\-116.2109\\-244.0132\\149\\-116.7969\\-243.2266\\149\\-117.717\\-241.2734\\149\\-118.1641\\-240.7067\\149\\-120.1698\\-237.3672\\149\\-122.0703\\-233.9094\\149\\-122.3798\\-233.4609\\149\\-123.7684\\-229.5547\\149\\-124.6991\\-227.6016\\149\\-125.1771\\-225.6484\\149\\-126.709\\-221.7422\\149\\-127.2439\\-219.7891\\149\\-128.5275\\-215.8828\\149\\-129.2173\\-211.9766\\149\\-129.6152\\-210.0234\\149\\-130.1649\\-208.0703\\149\\-130.5151\\-206.1172\\149\\-130.7401\\-204.1641\\149\\-131.0714\\-200.2578\\149\\-131.5036\\-196.3516\\149\\-132.0476\\-192.4453\\149\\-132.213\\-190.4922\\149\\-132.401\\-186.5859\\149\\-132.4496\\-182.6797\\149\\-132.4088\\-178.7734\\149\\-132.2613\\-174.8672\\149\\-131.9845\\-170.9609\\149\\-131.7224\\-169.0078\\149\\-131.1294\\-163.1484\\149\\-130.6976\\-157.2891\\149\\-130.1794\\-153.3828\\149\\-129.2764\\-149.4766\\149\\-128.5666\\-145.5703\\149\\-128.0407\\-143.6172\\149\\-127.3035\\-141.6641\\149\\-126.7761\\-139.7109\\149\\-126.0437\\-137.7578\\149\\-125.172\\-135.8047\\149\\-124.5859\\-133.8516\\149\\-123.5455\\-131.8984\\149\\-122.9118\\-129.9453\\149\\-120.9211\\-126.0391\\149\\-119.535\\-124.0859\\149\\-118.3998\\-122.1328\\149\\-115.5001\\-118.2266\\149\\-114.2578\\-116.6523\\149\\-112.3047\\-114.3974\\149\\-108.7216\\-110.4141\\149\\-106.4453\\-108.3883\\149\\-100.5859\\-104.1159\\149\\-98.63281\\-103.0407\\149\\-96.67969\\-101.824\\149\\-94.72656\\-101.0093\\149\\-92.77344\\-99.9995\\149\\-90.82031\\-99.42925\\149\\-88.86719\\-98.52093\\149\\-86.91406\\-97.84082\\149\\-84.96094\\-97.33636\\149\\-81.05469\\-96.13258\\149\\-77.14844\\-95.56916\\149\\-75.19531\\-95.23416\\149\\-73.24219\\-94.74937\\149\\-71.28906\\-94.36955\\149\\-67.38281\\-93.90182\\149\\-63.47656\\-93.59743\\149\\-61.52344\\-93.36804\\149\\-59.57031\\-93.03419\\149\\-57.61719\\-92.57685\\149\\-55.66406\\-92.28182\\149\\-51.75781\\-91.86949\\149\\-43.94531\\-91.33854\\149\\-41.99219\\-91.15334\\149\\-40.03906\\-90.84525\\149\\-36.13281\\-90.57885\\149\\-30.27344\\-90.45744\\149\\-26.36719\\-90.51109\\149\\-22.46094\\-90.69581\\149\\-20.50781\\-90.87518\\149\\-16.60156\\-91.35904\\149\\-12.69531\\-92.0239\\149\\-10.74219\\-92.63365\\149\\-8.789063\\-93.50964\\149\\-6.835938\\-93.95991\\149\\-4.882813\\-94.53207\\149\\-2.929688\\-95.35547\\149\\-0.9765625\\-95.81614\\149\\0.9765625\\-96.06356\\149\\2.929688\\-96.16874\\149\\4.882813\\-96.11161\\149\\6.835938\\-95.92011\\149\\8.789063\\-95.58807\\149\\10.74219\\-94.9798\\149\\12.69531\\-94.14021\\149\\14.64844\\-93.57967\\149\\18.55469\\-92.25786\\149\\24.41406\\-91.12871\\149\\26.36719\\-90.64379\\149\\30.27344\\-90.12265\\149\\34.17969\\-89.79232\\149\\41.99219\\-89.35733\\149\\47.85156\\-89.13491\\149\\53.71094\\-89.21929\\149\\57.61719\\-89.48687\\149\\61.52344\\-89.81123\\149\\65.42969\\-90.26339\\149\\67.38281\\-90.59908\\149\\69.33594\\-91.15705\\149\\75.19531\\-92.31398\\149\\77.14844\\-93.02519\\149\\79.10156\\-93.58945\\149\\81.05469\\-93.94431\\149\\83.00781\\-94.50484\\149\\84.96094\\-95.4128\\149\\86.91406\\-96.04212\\149\\88.86719\\-97.11007\\149\\90.82031\\-97.93945\\149\\92.77344\\-99.11671\\149\\94.72656\\-99.9145\\149\\96.67969\\-101.0833\\149\\98.63281\\-102.026\\149\\99.38859\\-102.6016\\149\\104.4922\\-106.073\\149\\106.4453\\-107.5422\\149\\108.3984\\-109.19\\149\\112.3047\\-113.1833\\149\\115.0904\\-116.2734\\149\\116.4889\\-118.2266\\149\\117.4628\\-120.1797\\149\\118.7079\\-122.1328\\149\\119.5277\\-124.0859\\149\\120.7031\\-126.0391\\149\\121.4134\\-127.9922\\149\\122.382\\-129.9453\\149\\122.939\\-131.8984\\149\\123.3619\\-133.8516\\149\\124.633\\-137.7578\\149\\125.3546\\-141.6641\\149\\126.5241\\-145.5703\\149\\127.5302\\-151.4297\\149\\128.3518\\-155.3359\\149\\128.5865\\-157.2891\\149\\129.018\\-163.1484\\149\\129.2091\\-169.0078\\149\\129.2637\\-172.9141\\149\\129.541\\-184.6328\\149\\129.5906\\-192.4453\\149\\129.5157\\-200.2578\\149\\129.2982\\-206.1172\\149\\129.074\\-210.0234\\149\\128.7708\\-213.9297\\149\\128.5517\\-215.8828\\149\\128.2266\\-217.8359\\149\\127.574\\-219.7891\\149\\126.5821\\-223.6953\\149\\125.7464\\-225.6484\\149\\125.093\\-227.6016\\149\\124.6374\\-229.5547\\149\\123.705\\-231.5078\\149\\122.5779\\-235.4141\\149\\121.5131\\-237.3672\\149\\120.7406\\-239.3203\\149\\119.4642\\-241.2734\\149\\118.5509\\-243.2266\\149\\117.3331\\-245.1797\\149\\116.4017\\-247.1328\\149\\115.1078\\-249.0859\\149\\113.6545\\-251.0391\\149\\112.3718\\-252.9922\\149\\110.3516\\-255.8873\\149\\108.3984\\-258.3885\\149\\106.4453\\-260.7792\\149\\102.9914\\-264.7109\\149\\100.5859\\-267.1491\\149\\98.63281\\-268.9702\\149\\94.63629\\-272.5234\\149\\89.90832\\-276.4297\\149\\86.91406\\-278.7826\\149\\84.79656\\-280.3359\\149\\81.05469\\-282.9506\\149\\79.10156\\-283.9962\\149\\75.19531\\-286.7166\\149\\73.24219\\-287.6602\\149\\71.28906\\-288.8697\\149\\69.33594\\-289.59\\149\\67.38281\\-290.7937\\149\\65.42969\\-291.6006\\149\\63.47656\\-292.8005\\149\\61.52344\\-293.5759\\149\\59.57031\\-294.59\\149\\57.61719\\-295.1162\\149\\55.66406\\-295.7612\\149\\53.71094\\-296.6411\\149\\51.75781\\-297.1076\\149\\47.85156\\-298.6182\\149\\45.89844\\-299.1106\\149\\41.99219\\-300.4427\\149\\36.13281\\-301.5182\\149\\34.17969\\-302.0626\\149\\32.22656\\-302.461\\149\\30.27344\\-302.7239\\149\\28.32031\\-302.8724\\149\\24.41406\\-303.3633\\149\\20.50781\\-304.1095\\149\\18.55469\\-304.3507\\149\\10.74219\\-304.8462\\149\\6.835938\\-305.0045\\149\\2.929688\\-305.1031\\149\\-0.9765625\\-305.1031\\149\\-6.835938\\-304.9185\\149\\-10.74219\\-304.7311\\149\\-14.64844\\-304.4912\\149"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002226"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "243"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "201"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-303.882\\151\\-22.46094\\-303.4214\\151\\-24.41406\\-303.0938\\151\\-28.32031\\-302.7239\\151\\-32.22656\\-302.088\\151\\-34.17969\\-301.5302\\151\\-40.03906\\-300.3853\\151\\-43.94531\\-299.0413\\151\\-45.89844\\-298.5154\\151\\-47.85156\\-297.5975\\151\\-51.75781\\-296.4232\\151\\-53.71094\\-295.4661\\151\\-55.66406\\-294.9308\\151\\-57.61719\\-294.2573\\151\\-59.57031\\-293.1976\\151\\-61.52344\\-292.424\\151\\-63.47656\\-291.2094\\151\\-65.42969\\-290.3178\\151\\-67.38281\\-289.2328\\151\\-69.33594\\-288.4074\\151\\-73.24219\\-285.888\\151\\-75.19531\\-284.7392\\151\\-77.14844\\-283.3154\\151\\-79.10156\\-281.9983\\151\\-81.05469\\-280.8242\\151\\-83.00781\\-279.2488\\151\\-86.91406\\-275.9414\\151\\-88.86719\\-274.6719\\151\\-90.82031\\-272.9155\\151\\-93.31939\\-270.5703\\151\\-94.72656\\-269.3709\\151\\-96.67969\\-267.5314\\151\\-99.34938\\-264.7109\\151\\-101.4259\\-262.7578\\151\\-103.2815\\-260.8047\\151\\-106.4453\\-257.1163\\151\\-108.4227\\-254.9453\\151\\-109.7591\\-252.9922\\151\\-112.8493\\-249.0859\\151\\-114.2578\\-247.1231\\151\\-115.477\\-245.1797\\151\\-116.8246\\-243.2266\\151\\-117.7097\\-241.2734\\151\\-118.1641\\-240.6732\\151\\-120.1172\\-237.3573\\151\\-122.2642\\-233.4609\\151\\-123.029\\-231.5078\\151\\-123.6177\\-229.5547\\151\\-124.5841\\-227.6016\\151\\-125.0565\\-225.6484\\151\\-125.6714\\-223.6953\\151\\-126.5259\\-221.7422\\151\\-127.5954\\-217.8359\\151\\-128.3063\\-215.8828\\151\\-128.7256\\-213.9297\\151\\-129.3367\\-210.0234\\151\\-130.2525\\-206.1172\\151\\-130.7701\\-202.2109\\151\\-131.034\\-198.3047\\151\\-131.3539\\-194.3984\\151\\-131.752\\-190.4922\\151\\-132.0717\\-186.5859\\151\\-132.1399\\-184.6328\\151\\-132.1289\\-180.7266\\151\\-131.9714\\-176.8203\\151\\-131.6392\\-172.9141\\151\\-130.9077\\-163.1484\\151\\-130.6629\\-159.2422\\151\\-130.1649\\-155.3359\\151\\-129.6964\\-153.3828\\151\\-129.3257\\-151.4297\\151\\-128.6937\\-147.5234\\151\\-128.2441\\-145.5703\\151\\-127.5148\\-143.6172\\151\\-126.4259\\-139.7109\\151\\-125.4636\\-137.7578\\151\\-124.8873\\-135.8047\\151\\-124.1379\\-133.8516\\151\\-123.221\\-131.8984\\151\\-122.5784\\-129.9453\\151\\-121.4461\\-127.9922\\151\\-120.4791\\-126.0391\\151\\-120.1172\\-125.6004\\151\\-118.1641\\-122.6254\\151\\-117.7455\\-122.1328\\151\\-116.5213\\-120.1797\\151\\-115.0632\\-118.2266\\151\\-112.3047\\-114.9935\\151\\-109.9266\\-112.3672\\151\\-108.0604\\-110.4141\\151\\-106.4453\\-108.9458\\151\\-104.4922\\-107.342\\151\\-102.5391\\-105.8673\\151\\-97.38394\\-102.6016\\151\\-96.67969\\-102.1033\\151\\-94.72656\\-101.3143\\151\\-92.77344\\-100.2761\\151\\-88.86719\\-98.97536\\151\\-86.91406\\-98.11723\\151\\-83.00781\\-97.11328\\151\\-81.05469\\-96.43414\\151\\-79.10156\\-96.03658\\151\\-75.19531\\-95.49337\\151\\-71.28906\\-94.67372\\151\\-67.38281\\-94.05817\\151\\-61.52344\\-93.57417\\151\\-59.57031\\-93.34959\\151\\-57.61719\\-93.00739\\151\\-55.66406\\-92.56541\\151\\-53.71094\\-92.28662\\151\\-49.80469\\-91.92481\\151\\-41.99219\\-91.49588\\151\\-38.08594\\-91.1473\\151\\-34.17969\\-90.96481\\151\\-30.27344\\-90.87518\\151\\-26.36719\\-90.99463\\151\\-18.55469\\-91.44666\\151\\-14.64844\\-91.9201\\151\\-12.69531\\-92.33321\\151\\-10.74219\\-93.15671\\151\\-8.789063\\-93.74779\\151\\-6.835938\\-94.20181\\151\\-4.882813\\-95.0086\\151\\-2.929688\\-95.67317\\151\\0.9765625\\-96.41453\\151\\2.929688\\-96.5678\\151\\4.882813\\-96.49471\\151\\8.789063\\-95.88215\\151\\10.74219\\-95.39052\\151\\12.69531\\-94.43196\\151\\16.60156\\-93.331\\151\\18.55469\\-92.64893\\151\\20.50781\\-92.16029\\151\\22.46094\\-91.81\\151\\26.36719\\-91.22162\\151\\30.27344\\-90.50095\\151\\34.17969\\-90.09827\\151\\36.13281\\-89.97601\\151\\41.99219\\-89.70985\\151\\47.85156\\-89.59422\\151\\53.71094\\-89.62401\\151\\57.61719\\-89.78755\\151\\61.52344\\-90.06461\\151\\65.42969\\-90.58788\\151\\69.33594\\-91.42341\\151\\73.24219\\-92.11123\\151\\75.19531\\-92.55411\\151\\77.14844\\-93.27675\\151\\81.05469\\-94.07375\\151\\83.00781\\-94.76485\\151\\84.96094\\-95.59294\\151\\86.91406\\-96.26324\\151\\88.86719\\-97.36789\\151\\90.82031\\-98.15344\\151\\92.77344\\-99.3765\\151\\94.72656\\-100.1334\\151\\96.67969\\-101.3581\\151\\98.63281\\-102.3722\\151\\101.7624\\-104.5547\\151\\102.5391\\-105.2167\\151\\106.4453\\-107.8481\\151\\108.3984\\-109.5467\\151\\112.3047\\-113.5405\\151\\114.6926\\-116.2734\\151\\116.2109\\-118.611\\151\\118.2162\\-122.1328\\151\\120.1698\\-126.0391\\151\\121.0724\\-127.9922\\151\\122.6901\\-131.8984\\151\\123.5518\\-135.8047\\151\\124.2974\\-137.7578\\151\\124.7993\\-139.7109\\151\\125.4944\\-143.6172\\151\\126.1636\\-145.5703\\151\\126.6119\\-147.5234\\151\\127.5228\\-153.3828\\151\\127.9672\\-155.3359\\151\\128.3038\\-157.2891\\151\\128.5203\\-159.2422\\151\\128.7984\\-163.1484\\151\\128.9756\\-167.0547\\151\\129.1642\\-178.7734\\151\\129.2421\\-184.6328\\151\\129.2843\\-192.4453\\151\\129.238\\-200.2578\\151\\129.1489\\-204.1641\\151\\128.9998\\-208.0703\\151\\128.7772\\-211.9766\\151\\128.4059\\-215.8828\\151\\128.0651\\-217.8359\\151\\127.4535\\-219.7891\\151\\126.5526\\-223.6953\\151\\125.7324\\-225.6484\\151\\125.1195\\-227.6016\\151\\124.6726\\-229.5547\\151\\123.7558\\-231.5078\\151\\122.6525\\-235.4141\\151\\121.6527\\-237.3672\\151\\120.864\\-239.3203\\151\\119.6382\\-241.2734\\151\\118.7263\\-243.2266\\151\\117.4409\\-245.1797\\151\\116.6225\\-247.1328\\151\\113.8632\\-251.0391\\151\\112.6452\\-252.9922\\151\\110.3516\\-256.1506\\151\\108.3984\\-258.7295\\151\\106.4453\\-261.1535\\151\\103.2612\\-264.7109\\151\\101.3555\\-266.6641\\151\\98.63281\\-269.2753\\151\\94.72656\\-272.8224\\151\\92.68811\\-274.4766\\151\\88.86719\\-277.4548\\151\\84.96094\\-280.6139\\151\\82.40897\\-282.2891\\151\\77.14844\\-285.6131\\151\\75.19531\\-286.9912\\151\\71.28906\\-289.0643\\151\\69.15039\\-290.1016\\151\\63.47656\\-293.0419\\151\\59.57031\\-294.795\\151\\57.61719\\-295.2872\\151\\55.66406\\-296.1607\\151\\53.71094\\-296.8188\\151\\51.75781\\-297.3127\\151\\49.80469\\-298.2289\\151\\45.89844\\-299.3491\\151\\43.94531\\-300.1164\\151\\41.99219\\-300.5996\\151\\38.08594\\-301.2964\\151\\34.17969\\-302.2818\\151\\32.22656\\-302.5956\\151\\28.32031\\-302.9824\\151\\26.36719\\-303.2604\\151\\22.46094\\-304.044\\151\\18.55469\\-304.4912\\151\\12.69531\\-304.8612\\151\\4.882813\\-305.2148\\151\\-0.9765625\\-305.2533\\151\\-8.789063\\-304.9463\\151\\-14.64844\\-304.5965\\151\\-18.55469\\-304.2264\\151"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002225"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "238"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "202"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-304.1095\\153\\-24.41406\\-303.2424\\153\\-26.36719\\-302.9715\\153\\-30.27344\\-302.5838\\153\\-32.22656\\-302.2715\\153\\-36.13281\\-301.2614\\153\\-40.03906\\-300.5278\\153\\-41.99219\\-300.0026\\153\\-43.94531\\-299.1958\\153\\-45.89844\\-298.6776\\153\\-49.80469\\-297.1209\\153\\-51.75781\\-296.6022\\153\\-53.71094\\-295.7059\\153\\-57.61719\\-294.4961\\153\\-59.57031\\-293.4254\\153\\-61.52344\\-292.6825\\153\\-63.47656\\-291.4479\\153\\-65.42969\\-290.6293\\153\\-67.38281\\-289.3997\\153\\-69.33594\\-288.6902\\153\\-71.28906\\-287.4331\\153\\-73.24219\\-286.3519\\153\\-76.32396\\-284.2422\\153\\-77.14844\\-283.5671\\153\\-79.10156\\-282.3931\\153\\-81.05469\\-281.116\\153\\-83.00781\\-279.5253\\153\\-84.96094\\-277.8009\\153\\-88.86719\\-274.979\\153\\-90.82031\\-273.2355\\153\\-91.50849\\-272.5234\\153\\-96.67969\\-267.7635\\153\\-97.68113\\-266.6641\\153\\-100.5859\\-263.6932\\153\\-101.6422\\-262.7578\\153\\-103.444\\-260.8047\\153\\-106.4453\\-257.3721\\153\\-108.6593\\-254.9453\\153\\-109.9152\\-252.9922\\153\\-112.9859\\-249.0859\\153\\-114.4064\\-247.1328\\153\\-115.5536\\-245.1797\\153\\-116.8729\\-243.2266\\153\\-117.7416\\-241.2734\\153\\-118.1641\\-240.7269\\153\\-120.1172\\-237.3379\\153\\-122.2234\\-233.4609\\153\\-122.9814\\-231.5078\\153\\-123.5385\\-229.5547\\153\\-124.4894\\-227.6016\\153\\-125.5292\\-223.6953\\153\\-126.4113\\-221.7422\\153\\-127.3708\\-217.8359\\153\\-128.0794\\-215.8828\\153\\-128.5749\\-213.9297\\153\\-129.5183\\-208.0703\\153\\-130.3678\\-204.1641\\153\\-130.6345\\-202.2109\\153\\-131.2668\\-192.4453\\153\\-131.6806\\-186.5859\\153\\-131.7817\\-182.6797\\153\\-131.6954\\-178.7734\\153\\-131.4814\\-174.8672\\153\\-130.6417\\-161.1953\\153\\-130.1649\\-157.2891\\153\\-129.3979\\-153.3828\\153\\-128.8086\\-149.4766\\153\\-128.4485\\-147.5234\\153\\-127.1932\\-143.6172\\153\\-126.6997\\-141.6641\\153\\-125.1481\\-137.7578\\153\\-124.6046\\-135.8047\\153\\-123.6342\\-133.8516\\153\\-122.9806\\-131.8984\\153\\-122.125\\-129.9453\\153\\-121.0767\\-127.9922\\153\\-119.833\\-126.0391\\153\\-118.7027\\-124.0859\\153\\-116.2109\\-120.4629\\153\\-114.5809\\-118.2266\\153\\-112.3047\\-115.5056\\153\\-109.5215\\-112.3672\\153\\-106.4453\\-109.3436\\153\\-104.4922\\-107.673\\153\\-102.5391\\-106.2177\\153\\-100.5859\\-105.0879\\153\\-98.63281\\-103.6695\\153\\-96.67969\\-102.4166\\153\\-90.82031\\-99.82576\\153\\-88.86719\\-99.28622\\153\\-86.91406\\-98.41158\\153\\-84.96094\\-97.83823\\153\\-83.00781\\-97.41006\\153\\-79.10156\\-96.26596\\153\\-73.24219\\-95.40552\\153\\-71.28906\\-95.06706\\153\\-69.33594\\-94.6027\\153\\-67.38281\\-94.25227\\153\\-65.42969\\-94.03086\\153\\-59.57031\\-93.54777\\153\\-57.61719\\-93.3369\\153\\-53.71094\\-92.62424\\153\\-49.80469\\-92.16151\\153\\-45.89844\\-91.92673\\153\\-41.99219\\-91.75785\\153\\-40.03906\\-91.61655\\153\\-36.13281\\-91.45152\\153\\-30.27344\\-91.34637\\153\\-26.36719\\-91.43324\\153\\-20.50781\\-91.61523\\153\\-16.60156\\-91.90028\\153\\-14.64844\\-92.18307\\153\\-12.69531\\-92.72743\\153\\-10.74219\\-93.50964\\153\\-8.789063\\-93.92703\\153\\-6.835938\\-94.54492\\153\\-4.882813\\-95.40819\\153\\0.9765625\\-96.98808\\153\\2.929688\\-97.1598\\153\\4.882813\\-97.08099\\153\\6.835938\\-96.67561\\153\\10.74219\\-95.68915\\153\\14.64844\\-94.05981\\153\\18.55469\\-93.14699\\153\\20.50781\\-92.53197\\153\\22.46094\\-92.11904\\153\\24.41406\\-91.82664\\153\\28.32031\\-91.34274\\153\\32.22656\\-90.70843\\153\\36.13281\\-90.29572\\153\\40.03906\\-90.09174\\153\\43.94531\\-89.97028\\153\\47.85156\\-89.92235\\153\\53.71094\\-89.9276\\153\\57.61719\\-90.06811\\153\\61.52344\\-90.38554\\153\\63.47656\\-90.68337\\153\\67.38281\\-91.38895\\153\\71.28906\\-91.94584\\153\\73.24219\\-92.31625\\153\\77.14844\\-93.45968\\153\\81.05469\\-94.21886\\153\\83.00781\\-95.04414\\153\\86.91406\\-96.48951\\153\\88.86719\\-97.5769\\153\\90.82031\\-98.43265\\153\\92.77344\\-99.57942\\153\\94.72656\\-100.4156\\153\\98.3347\\-102.6016\\153\\100.5859\\-104.038\\153\\104.4922\\-106.9443\\153\\106.4453\\-108.2533\\153\\108.8797\\-110.4141\\153\\112.5636\\-114.3203\\153\\114.2578\\-116.3392\\153\\116.8815\\-120.1797\\153\\117.7033\\-122.1328\\153\\118.8519\\-124.0859\\153\\119.6512\\-126.0391\\153\\120.803\\-127.9922\\153\\121.4761\\-129.9453\\153\\122.4211\\-131.8984\\153\\122.963\\-133.8516\\153\\123.3337\\-135.8047\\153\\124.6212\\-139.7109\\153\\125.2869\\-143.6172\\153\\125.7827\\-145.5703\\153\\126.4113\\-147.5234\\153\\127.2768\\-153.3828\\153\\128.0382\\-157.2891\\153\\128.5203\\-161.1953\\153\\128.8498\\-167.0547\\153\\128.9119\\-169.0078\\153\\129.0583\\-182.6797\\153\\129.1028\\-190.4922\\153\\129.0601\\-200.2578\\153\\128.9291\\-206.1172\\153\\128.6537\\-211.9766\\153\\128.2807\\-215.8828\\153\\127.9297\\-217.6154\\153\\127.3692\\-219.7891\\153\\126.5448\\-223.6953\\153\\125.7713\\-225.6484\\153\\125.1418\\-227.6016\\153\\124.7025\\-229.5547\\153\\123.8632\\-231.5078\\153\\123.2217\\-233.4609\\153\\122.7398\\-235.4141\\153\\120.9755\\-239.3203\\153\\119.8471\\-241.2734\\153\\118.8881\\-243.2266\\153\\117.5666\\-245.1797\\153\\116.785\\-247.1328\\153\\115.4284\\-249.0859\\153\\112.8305\\-252.9922\\153\\111.3404\\-254.9453\\153\\108.5848\\-258.8516\\153\\106.4453\\-261.4288\\153\\103.4617\\-264.7109\\153\\101.5818\\-266.6641\\153\\98.63281\\-269.4968\\153\\94.72656\\-273.1094\\153\\92.77344\\-274.7673\\153\\90.82031\\-276.1836\\153\\84.96094\\-280.8988\\153\\82.85985\\-282.2891\\153\\81.05469\\-283.3342\\153\\79.10156\\-284.7812\\153\\73.24219\\-288.4222\\153\\71.28906\\-289.2532\\153\\69.33594\\-290.3872\\153\\67.38281\\-291.2348\\153\\65.42969\\-292.4362\\153\\63.47656\\-293.2683\\153\\61.52344\\-294.3035\\153\\59.57031\\-294.9607\\153\\57.61719\\-295.5066\\153\\55.66406\\-296.4619\\153\\53.71094\\-296.9692\\153\\51.75781\\-297.6068\\153\\49.80469\\-298.4934\\153\\47.85156\\-299.0101\\153\\43.94531\\-300.3616\\153\\40.03906\\-301.094\\153\\38.08594\\-301.516\\153\\36.13281\\-302.1003\\153\\32.22656\\-302.7127\\153\\28.32031\\-303.132\\153\\26.36719\\-303.4777\\153\\24.41406\\-303.9972\\153\\22.46094\\-304.2787\\153\\18.55469\\-304.6232\\153\\6.835938\\-305.317\\153\\2.929688\\-305.4122\\153\\-0.9765625\\-305.4143\\153\\-6.835938\\-305.1726\\153\\-12.69531\\-304.827\\153\\-18.55469\\-304.3805\\153"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002224"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "241"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "203"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-303.9221\\155\\-24.41406\\-303.43\\155\\-26.36719\\-303.0824\\155\\-30.27344\\-302.689\\155\\-32.22656\\-302.4227\\155\\-34.17969\\-301.9931\\155\\-36.13281\\-301.4174\\155\\-40.03906\\-300.6631\\155\\-41.99219\\-300.2182\\155\\-43.94531\\-299.388\\155\\-47.85156\\-298.207\\155\\-49.80469\\-297.2764\\155\\-51.75781\\-296.772\\155\\-55.66406\\-295.227\\155\\-57.61719\\-294.6896\\155\\-59.57031\\-293.6956\\155\\-61.52344\\-292.8795\\155\\-63.47656\\-291.7631\\155\\-65.42969\\-290.8617\\155\\-67.38281\\-289.6299\\155\\-69.33594\\-288.9059\\155\\-71.28906\\-287.7182\\155\\-73.24219\\-286.7057\\155\\-77.14844\\-283.8824\\155\\-79.10156\\-282.7564\\155\\-82.42516\\-280.3359\\155\\-84.96094\\-278.232\\155\\-86.91406\\-276.7841\\155\\-88.86719\\-275.2354\\155\\-90.82031\\-273.4869\\155\\-91.77734\\-272.5234\\155\\-94.72656\\-269.8007\\155\\-96.11192\\-268.6172\\155\\-97.94387\\-266.6641\\155\\-100.5859\\-263.9612\\155\\-101.8903\\-262.7578\\155\\-106.4453\\-257.5781\\155\\-108.8797\\-254.9453\\155\\-111.5374\\-251.0391\\155\\-113.1205\\-249.0859\\155\\-114.579\\-247.1328\\155\\-115.6741\\-245.1797\\155\\-116.945\\-243.2266\\155\\-117.8266\\-241.2734\\155\\-118.1641\\-240.8524\\155\\-120.1694\\-237.3672\\155\\-122.0703\\-233.6999\\155\\-122.9576\\-231.5078\\155\\-123.4831\\-229.5547\\155\\-124.4154\\-227.6016\\155\\-125.4521\\-223.6953\\155\\-126.3127\\-221.7422\\155\\-127.2329\\-217.8359\\155\\-128.4421\\-213.9297\\155\\-129.3367\\-208.0703\\155\\-130.1893\\-204.1641\\155\\-130.4986\\-202.2109\\155\\-130.8048\\-198.3047\\155\\-130.9921\\-194.3984\\155\\-131.4285\\-186.5859\\155\\-131.5059\\-182.6797\\155\\-131.4285\\-178.7734\\155\\-131.0801\\-170.9609\\155\\-130.7701\\-165.1016\\155\\-130.4509\\-161.1953\\155\\-130.1893\\-159.2422\\155\\-129.445\\-155.3359\\155\\-128.6098\\-149.4766\\155\\-128.1566\\-147.5234\\155\\-127.4414\\-145.5703\\155\\-126.4139\\-141.6641\\155\\-125.504\\-139.7109\\155\\-124.9302\\-137.7578\\155\\-124.2477\\-135.8047\\155\\-123.3322\\-133.8516\\155\\-122.7362\\-131.8984\\155\\-121.6443\\-129.9453\\155\\-120.7429\\-127.9922\\155\\-119.3683\\-126.0391\\155\\-118.2467\\-124.0859\\155\\-116.2109\\-121.0408\\155\\-112.4663\\-116.2734\\155\\-110.8434\\-114.3203\\155\\-109.098\\-112.3672\\155\\-106.4453\\-109.7323\\155\\-104.4922\\-108.0164\\155\\-102.4009\\-106.5078\\155\\-100.5859\\-105.3558\\155\\-98.63281\\-103.9016\\155\\-94.72656\\-101.7154\\155\\-92.77344\\-100.9835\\155\\-90.82031\\-100.0121\\155\\-88.86719\\-99.4938\\155\\-84.96094\\-98.06438\\155\\-81.05469\\-97.18382\\155\\-79.10156\\-96.53049\\155\\-77.14844\\-96.15289\\155\\-71.28906\\-95.312\\155\\-67.38281\\-94.48696\\155\\-65.42969\\-94.20823\\155\\-61.52344\\-93.8242\\155\\-55.66406\\-93.34018\\155\\-49.80469\\-92.46895\\155\\-45.89844\\-92.14873\\155\\-40.03906\\-91.85938\\155\\-36.13281\\-91.72346\\155\\-30.27344\\-91.64779\\155\\-24.41406\\-91.75029\\155\\-18.55469\\-91.97759\\155\\-16.60156\\-92.17231\\155\\-14.64844\\-92.52113\\155\\-12.69531\\-93.20564\\155\\-8.789063\\-94.15717\\155\\-6.835938\\-95.00691\\155\\-4.882813\\-95.71331\\155\\-2.929688\\-96.2569\\155\\-0.9765625\\-97.00214\\155\\0.9765625\\-97.42522\\155\\2.929688\\-97.54983\\155\\4.882813\\-97.48135\\155\\6.835938\\-97.22114\\155\\8.789063\\-96.5399\\155\\12.69531\\-95.27734\\155\\14.64844\\-94.34645\\155\\18.55469\\-93.50613\\155\\22.46094\\-92.49985\\155\\24.41406\\-92.13839\\155\\26.36719\\-91.8862\\155\\34.17969\\-91.04919\\155\\36.13281\\-90.74738\\155\\41.99219\\-90.37357\\155\\49.80469\\-90.21143\\155\\53.71094\\-90.21494\\155\\57.61719\\-90.37974\\155\\59.57031\\-90.5638\\155\\63.47656\\-91.20396\\155\\69.33594\\-91.88507\\155\\71.28906\\-92.14754\\155\\73.24219\\-92.54297\\155\\75.19531\\-93.15438\\155\\77.14844\\-93.60627\\155\\79.10156\\-93.93909\\155\\81.05469\\-94.41401\\155\\83.00781\\-95.31641\\155\\84.96094\\-95.93961\\155\\86.82291\\-96.74219\\155\\92.77344\\-99.72482\\155\\96.67969\\-101.7888\\155\\98.63281\\-103.1533\\155\\100.5859\\-104.3538\\155\\103.6099\\-106.5078\\155\\106.0846\\-108.4609\\155\\108.373\\-110.4141\\155\\112.3047\\-114.596\\155\\114.2578\\-116.8848\\155\\115.2893\\-118.2266\\155\\116.5915\\-120.1797\\155\\117.4286\\-122.1328\\155\\118.6096\\-124.0859\\155\\119.3638\\-126.0391\\155\\120.5287\\-127.9922\\155\\121.2477\\-129.9453\\155\\122.0939\\-131.8984\\155\\122.8164\\-133.8516\\155\\123.6816\\-137.7578\\155\\124.4596\\-139.7109\\155\\125.1628\\-143.6172\\155\\125.5644\\-145.5703\\155\\126.2123\\-147.5234\\155\\126.598\\-149.4766\\155\\127.4474\\-155.3359\\155\\128.155\\-159.2422\\155\\128.3967\\-161.1953\\155\\128.6692\\-165.1016\\155\\128.8272\\-169.0078\\155\\128.8834\\-172.9141\\155\\128.946\\-182.6797\\155\\128.9756\\-190.4922\\155\\128.9291\\-200.2578\\155\\128.8221\\-206.1172\\155\\128.5522\\-211.9766\\155\\128.415\\-213.9297\\155\\128.1654\\-215.8828\\155\\127.3103\\-219.7891\\155\\126.5603\\-223.6953\\155\\125.1795\\-227.6016\\155\\124.7709\\-229.5547\\155\\123.2774\\-233.4609\\155\\122.8285\\-235.4141\\155\\122.0703\\-237.236\\155\\120.1248\\-241.2734\\155\\118.1641\\-244.6777\\155\\117.7777\\-245.1797\\155\\116.9355\\-247.1328\\155\\115.5973\\-249.0859\\155\\114.4319\\-251.0391\\155\\112.3047\\-253.9765\\155\\111.512\\-254.9453\\155\\108.815\\-258.8516\\155\\106.4453\\-261.6548\\155\\105.3731\\-262.7578\\155\\101.7953\\-266.6641\\155\\97.71412\\-270.5703\\155\\94.72656\\-273.3649\\155\\92.77344\\-275.0844\\155\\88.86719\\-277.9966\\155\\88.45313\\-278.3828\\155\\84.96094\\-281.1465\\155\\83.00781\\-282.5256\\155\\81.05469\\-283.5766\\155\\77.14844\\-286.402\\155\\75.19531\\-287.4465\\155\\73.24219\\-288.7225\\155\\71.28906\\-289.4742\\155\\69.33594\\-290.6875\\155\\67.38281\\-291.5076\\155\\65.42969\\-292.7343\\155\\63.47656\\-293.5353\\155\\61.52344\\-294.5775\\155\\59.57031\\-295.1178\\155\\57.61719\\-295.7995\\155\\55.66406\\-296.6665\\155\\53.71094\\-297.1405\\155\\51.75781\\-297.9948\\155\\49.80469\\-298.6964\\155\\47.85156\\-299.2293\\155\\45.89844\\-300.0046\\155\\43.94531\\-300.5433\\155\\40.03906\\-301.2706\\155\\36.13281\\-302.325\\155\\34.17969\\-302.6097\\155\\30.27344\\-303.0382\\155\\28.32031\\-303.343\\155\\24.41406\\-304.2354\\155\\20.50781\\-304.6071\\155\\6.835938\\-305.5355\\155\\2.929688\\-305.6281\\155\\-2.929688\\-305.5484\\155\\-6.835938\\-305.3322\\155\\-16.60156\\-304.6745\\155\\-20.50781\\-304.2787\\155"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002223"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "237"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "204"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.929688\\-305.8073\\157\\-6.835938\\-305.5614\\157\\-12.69531\\-305.0666\\157\\-18.55469\\-304.622\\157\\-22.46094\\-304.1604\\157\\-26.36719\\-303.2391\\157\\-28.32031\\-302.9651\\157\\-32.22656\\-302.5572\\157\\-34.17969\\-302.1874\\157\\-38.08594\\-301.1505\\157\\-41.99219\\-300.3764\\157\\-45.89844\\-298.9951\\157\\-47.85156\\-298.4534\\157\\-49.80469\\-297.4937\\157\\-53.71094\\-296.3339\\157\\-55.66406\\-295.3839\\157\\-57.61719\\-294.8526\\157\\-59.57031\\-294.0469\\157\\-63.47656\\-292.1901\\157\\-67.38281\\-290\\157\\-71.18317\\-288.1484\\157\\-73.24219\\-286.9708\\157\\-75.19531\\-285.5544\\157\\-79.10156\\-283.0328\\157\\-81.05469\\-281.5806\\157\\-82.92165\\-280.3359\\157\\-86.91406\\-277.0912\\157\\-90.03751\\-274.4766\\157\\-94.72656\\-270.1603\\157\\-96.54772\\-268.6172\\157\\-100.5859\\-264.3428\\157\\-102.2084\\-262.7578\\157\\-104.4922\\-260.1263\\157\\-105.4921\\-258.8516\\157\\-107.3453\\-256.8984\\157\\-109.0694\\-254.9453\\157\\-110.4854\\-252.9922\\157\\-111.7042\\-251.0391\\157\\-112.3047\\-250.3393\\157\\-114.7585\\-247.1328\\157\\-115.8189\\-245.1797\\157\\-117.033\\-243.2266\\157\\-117.9872\\-241.2734\\157\\-120.3195\\-237.3672\\157\\-121.2356\\-235.4141\\157\\-122.2897\\-233.4609\\157\\-122.9759\\-231.5078\\157\\-123.4608\\-229.5547\\157\\-124.3804\\-227.6016\\157\\-125.4025\\-223.6953\\157\\-126.224\\-221.7422\\157\\-127.1537\\-217.8359\\157\\-128.334\\-213.9297\\157\\-128.6778\\-211.9766\\157\\-129.555\\-206.1172\\157\\-130.0266\\-204.1641\\157\\-130.3645\\-202.2109\\157\\-130.7352\\-198.3047\\157\\-130.9116\\-194.3984\\157\\-131.2256\\-188.5391\\157\\-131.3321\\-184.6328\\157\\-131.3262\\-180.7266\\157\\-131.1489\\-174.8672\\157\\-130.7821\\-167.0547\\157\\-130.49\\-163.1484\\157\\-130.2748\\-161.1953\\157\\-129.5296\\-157.2891\\157\\-128.7529\\-151.4297\\157\\-128.4119\\-149.4766\\157\\-127.1671\\-145.5703\\157\\-126.7051\\-143.6172\\157\\-126.0431\\-141.6641\\157\\-125.2275\\-139.7109\\157\\-124.7185\\-137.7578\\157\\-123.819\\-135.8047\\157\\-122.4512\\-131.8984\\157\\-121.3265\\-129.9453\\157\\-120.3425\\-127.9922\\157\\-118.1641\\-124.6701\\157\\-117.7\\-124.0859\\157\\-116.6922\\-122.1328\\157\\-115.2018\\-120.1797\\157\\-112.3047\\-116.6563\\157\\-110.4574\\-114.3203\\157\\-108.724\\-112.3672\\157\\-106.4453\\-110.1141\\157\\-104.4922\\-108.4015\\157\\-102.0255\\-106.5078\\157\\-99.12109\\-104.5547\\157\\-98.63281\\-104.1467\\157\\-96.67969\\-103.0832\\157\\-94.72656\\-101.8919\\157\\-92.77344\\-101.1961\\157\\-90.82031\\-100.2045\\157\\-86.91406\\-99.15449\\157\\-84.96094\\-98.30592\\157\\-81.05469\\-97.43819\\157\\-77.14844\\-96.3528\\157\\-75.19531\\-96.03928\\157\\-71.28906\\-95.51138\\157\\-69.33594\\-95.19707\\157\\-65.42969\\-94.4025\\157\\-61.52344\\-93.95629\\157\\-53.71094\\-93.37709\\157\\-51.75781\\-93.18668\\157\\-47.85156\\-92.6365\\157\\-43.94531\\-92.3058\\157\\-38.08594\\-92.0238\\157\\-30.27344\\-91.88563\\157\\-22.46094\\-92.06196\\157\\-18.55469\\-92.2489\\157\\-16.60156\\-92.48942\\157\\-12.69531\\-93.5015\\157\\-10.74219\\-93.88991\\157\\-8.789063\\-94.46593\\157\\-6.835938\\-95.37759\\157\\-2.929688\\-96.64745\\157\\-0.9765625\\-97.42178\\157\\0.9765625\\-97.74392\\157\\2.929688\\-97.85755\\157\\4.882813\\-97.79273\\157\\6.835938\\-97.55599\\157\\8.789063\\-97.0495\\157\\10.74219\\-96.20103\\157\\12.69531\\-95.58862\\157\\14.64844\\-94.78078\\157\\16.60156\\-94.10232\\157\\20.50781\\-93.41537\\157\\24.41406\\-92.52995\\157\\26.36719\\-92.23455\\157\\30.27344\\-91.77799\\157\\36.13281\\-91.33688\\157\\38.08594\\-91.25391\\157\\43.94531\\-90.83063\\157\\49.80469\\-90.55515\\157\\53.71094\\-90.59908\\157\\57.61719\\-90.84525\\157\\61.52344\\-91.36221\\157\\65.42969\\-91.68182\\157\\69.33594\\-92.09564\\157\\71.28906\\-92.38021\\157\\75.19531\\-93.37273\\157\\79.10156\\-94.06916\\157\\81.05469\\-94.68585\\157\\83.00781\\-95.53619\\157\\84.96094\\-96.10828\\157\\86.91406\\-97.10026\\157\\88.86719\\-97.91086\\157\\90.82031\\-99.05621\\157\\92.77344\\-99.87329\\157\\94.72656\\-101.06\\157\\96.67969\\-101.9742\\157\\97.51062\\-102.6016\\157\\102.5391\\-106.0036\\157\\104.4922\\-107.4582\\157\\107.9317\\-110.4141\\157\\109.8968\\-112.3672\\157\\112.3047\\-114.9352\\157\\115.033\\-118.2266\\157\\116.2842\\-120.1797\\157\\118.3138\\-124.0859\\157\\119.1774\\-126.0391\\157\\120.2526\\-127.9922\\157\\121.8401\\-131.8984\\157\\122.7069\\-133.8516\\157\\123.5418\\-137.7578\\157\\124.3115\\-139.7109\\157\\124.7972\\-141.6641\\157\\125.4762\\-145.5703\\157\\126.0851\\-147.5234\\157\\126.5385\\-149.4766\\157\\127.3562\\-155.3359\\157\\128.0382\\-159.2422\\157\\128.3241\\-161.1953\\157\\128.6127\\-165.1016\\157\\128.7884\\-169.0078\\157\\128.8445\\-172.9141\\157\\128.8894\\-182.6797\\157\\128.8779\\-196.3516\\157\\128.8221\\-202.2109\\157\\128.7453\\-206.1172\\157\\128.594\\-210.0234\\157\\128.3535\\-213.9297\\157\\128.0651\\-215.8828\\157\\127.2731\\-219.7891\\157\\126.5902\\-223.6953\\157\\125.2441\\-227.6016\\157\\124.8355\\-229.5547\\157\\124.1949\\-231.5078\\157\\123.3497\\-233.4609\\157\\122.927\\-235.4141\\157\\122.2269\\-237.3672\\157\\121.231\\-239.3203\\157\\120.399\\-241.2734\\157\\119.1567\\-243.2266\\157\\118.0459\\-245.1797\\157\\117.0662\\-247.1328\\157\\115.8046\\-249.0859\\157\\114.6715\\-251.0391\\157\\114.2578\\-251.5045\\157\\112.3047\\-254.2358\\157\\111.6869\\-254.9453\\157\\109.0299\\-258.8516\\157\\107.3727\\-260.8047\\157\\105.5434\\-262.7578\\157\\102.0033\\-266.6641\\157\\94.72656\\-273.6189\\157\\92.77344\\-275.3424\\157\\88.86719\\-278.4204\\157\\83.00781\\-282.8211\\157\\81.05469\\-283.8954\\157\\77.14844\\-286.7379\\157\\75.19531\\-287.7564\\157\\73.24219\\-288.9581\\157\\71.28906\\-289.776\\157\\69.33594\\-290.9424\\157\\67.38281\\-291.8907\\157\\65.42969\\-292.9722\\157\\61.52344\\-294.776\\157\\59.57031\\-295.2742\\157\\57.61719\\-296.1739\\157\\55.66406\\-296.8272\\157\\53.71094\\-297.3655\\157\\51.75781\\-298.3352\\157\\47.85156\\-299.4986\\157\\45.89844\\-300.2991\\157\\40.03906\\-301.4901\\157\\38.08594\\-302.0773\\157\\36.13281\\-302.51\\157\\32.22656\\-302.9514\\157\\30.27344\\-303.2302\\157\\26.36719\\-304.12\\157\\24.41406\\-304.4262\\157\\12.69531\\-305.3524\\157\\10.74219\\-305.5484\\157\\6.835938\\-305.8213\\157\\0.9765625\\-305.9009\\157"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002222"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "236"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "205"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.835938\\-305.862\\159\\-12.69531\\-305.2561\\159\\-18.55469\\-304.7595\\159\\-22.46094\\-304.3507\\159\\-24.41406\\-304.0092\\159\\-26.36719\\-303.4756\\159\\-28.32031\\-303.0938\\159\\-32.22656\\-302.6648\\159\\-34.17969\\-302.37\\159\\-38.08594\\-301.3156\\159\\-41.99219\\-300.5468\\159\\-43.94531\\-299.9765\\159\\-45.89844\\-299.1881\\159\\-47.85156\\-298.649\\159\\-51.75781\\-297.0731\\159\\-53.71094\\-296.5698\\159\\-55.66406\\-295.6167\\159\\-59.57031\\-294.3808\\159\\-61.52344\\-293.3142\\159\\-63.47656\\-292.5251\\159\\-65.42969\\-291.2657\\159\\-67.38281\\-290.4249\\159\\-69.33594\\-289.2501\\159\\-71.28906\\-288.4518\\159\\-71.6816\\-288.1484\\159\\-77.14844\\-284.7178\\159\\-81.05469\\-281.8496\\159\\-83.00781\\-280.6639\\159\\-85.64661\\-278.3828\\159\\-88.86719\\-275.7056\\159\\-90.46599\\-274.4766\\159\\-92.77344\\-272.3222\\159\\-96.67969\\-268.8792\\159\\-100.5859\\-264.7923\\159\\-102.599\\-262.7578\\159\\-105.8275\\-258.8516\\159\\-109.2715\\-254.9453\\159\\-110.7661\\-252.9922\\159\\-111.9358\\-251.0391\\159\\-114.9503\\-247.1328\\159\\-118.1641\\-241.4129\\159\\-119.2336\\-239.3203\\159\\-120.4962\\-237.3672\\159\\-121.3351\\-235.4141\\159\\-122.3776\\-233.4609\\159\\-122.9995\\-231.5078\\159\\-123.4961\\-229.5547\\159\\-124.4127\\-227.6016\\159\\-125.4059\\-223.6953\\159\\-126.2004\\-221.7422\\159\\-126.7251\\-219.7891\\159\\-127.6536\\-215.8828\\159\\-128.2911\\-213.9297\\159\\-128.6436\\-211.9766\\159\\-129.4855\\-206.1172\\159\\-130.2965\\-202.2109\\159\\-130.5318\\-200.2578\\159\\-130.81\\-196.3516\\159\\-131.1603\\-188.5391\\159\\-131.25\\-184.6328\\159\\-131.25\\-180.7266\\159\\-131.0801\\-174.8672\\159\\-130.7174\\-167.0547\\159\\-130.3971\\-163.1484\\159\\-130.1233\\-161.1953\\159\\-129.3879\\-157.2891\\159\\-128.6173\\-151.4297\\159\\-128.2021\\-149.4766\\159\\-127.4852\\-147.5234\\159\\-126.5046\\-143.6172\\159\\-125.6466\\-141.6641\\159\\-124.4924\\-137.7578\\159\\-123.5057\\-135.8047\\159\\-122.9553\\-133.8516\\159\\-122.1097\\-131.8984\\159\\-121.0562\\-129.9453\\159\\-119.8392\\-127.9922\\159\\-118.7729\\-126.0391\\159\\-117.3941\\-124.0859\\159\\-116.3005\\-122.1328\\159\\-114.9022\\-120.1797\\159\\-111.5987\\-116.2734\\159\\-110.3516\\-114.6255\\159\\-108.2935\\-112.3672\\159\\-104.4922\\-108.7239\\159\\-101.7197\\-106.5078\\159\\-98.80371\\-104.5547\\159\\-94.72656\\-102.0569\\159\\-92.77344\\-101.3558\\159\\-90.82031\\-100.444\\159\\-88.86719\\-99.78609\\159\\-86.91406\\-99.36008\\159\\-84.96094\\-98.57324\\159\\-83.00781\\-97.98743\\159\\-79.10156\\-97.22437\\159\\-77.14844\\-96.60675\\159\\-75.19531\\-96.19463\\159\\-69.33594\\-95.39711\\159\\-63.47656\\-94.34396\\159\\-59.57031\\-93.94946\\159\\-55.66406\\-93.6788\\159\\-49.80469\\-93.32422\\159\\-43.94531\\-92.67435\\159\\-41.99219\\-92.51041\\159\\-38.08594\\-92.3058\\159\\-30.27344\\-92.14628\\159\\-22.46094\\-92.35632\\159\\-18.55469\\-92.60021\\159\\-16.60156\\-92.92188\\159\\-10.74219\\-94.0942\\159\\-6.835938\\-95.64208\\159\\-4.882813\\-96.2298\\159\\-2.929688\\-97.16256\\159\\-0.9765625\\-97.72389\\159\\0.9765625\\-98.02852\\159\\2.929688\\-98.1491\\159\\4.882813\\-98.06715\\159\\6.835938\\-97.81995\\159\\8.789063\\-97.41036\\159\\10.74219\\-96.55112\\159\\12.69531\\-95.81921\\159\\14.64844\\-95.18666\\159\\16.60156\\-94.3886\\159\\18.55469\\-93.98447\\159\\22.46094\\-93.40614\\159\\26.36719\\-92.64893\\159\\30.27344\\-92.10491\\159\\34.17969\\-91.82301\\159\\40.03906\\-91.55762\\159\\45.89844\\-91.21484\\159\\49.80469\\-91.08656\\159\\53.71094\\-91.13549\\159\\55.66406\\-91.21707\\159\\61.52344\\-91.65486\\159\\63.47656\\-91.72952\\159\\67.38281\\-92.09213\\159\\71.28906\\-92.7005\\159\\73.24219\\-93.20301\\159\\79.10156\\-94.26065\\159\\83.00781\\-95.71569\\159\\84.96094\\-96.30056\\159\\86.91406\\-97.3328\\159\\88.86719\\-98.09821\\159\\90.82031\\-99.27997\\159\\92.77344\\-100.034\\159\\94.72656\\-101.2799\\159\\96.67969\\-102.1683\\159\\100.0176\\-104.5547\\159\\100.5859\\-105.0329\\159\\102.5391\\-106.2691\\159\\104.4922\\-107.6941\\159\\106.4453\\-109.3526\\159\\109.6316\\-112.3672\\159\\112.3047\\-115.219\\159\\114.8039\\-118.2266\\159\\116.2109\\-120.454\\159\\117.1332\\-122.1328\\159\\120.9666\\-129.9453\\159\\121.6682\\-131.8984\\159\\122.6184\\-133.8516\\159\\123.4681\\-137.7578\\159\\124.2217\\-139.7109\\159\\124.7531\\-141.6641\\159\\125.438\\-145.5703\\159\\126.0431\\-147.5234\\159\\126.5228\\-149.4766\\159\\127.0677\\-153.3828\\159\\127.667\\-157.2891\\159\\128.0382\\-159.2422\\159\\128.4819\\-163.1484\\159\\128.7835\\-169.0078\\159\\128.8445\\-174.8672\\159\\128.8837\\-184.6328\\159\\128.8724\\-190.4922\\159\\128.7946\\-202.2109\\159\\128.5826\\-210.0234\\159\\128.3314\\-213.9297\\159\\128.0518\\-215.8828\\159\\127.2842\\-219.7891\\159\\126.6398\\-223.6953\\159\\126.0713\\-225.6484\\159\\125.335\\-227.6016\\159\\124.9164\\-229.5547\\159\\124.3717\\-231.5078\\159\\123.4591\\-233.4609\\159\\123.0171\\-235.4141\\159\\122.4297\\-237.3672\\159\\121.38\\-239.3203\\159\\120.5997\\-241.2734\\159\\119.3126\\-243.2266\\159\\118.1641\\-245.3956\\159\\116.2109\\-248.8234\\159\\114.8564\\-251.0391\\159\\114.2578\\-251.7527\\159\\112.3047\\-254.4807\\159\\111.881\\-254.9453\\159\\110.6145\\-256.8984\\159\\109.1835\\-258.8516\\159\\107.5393\\-260.8047\\159\\103.9411\\-264.7109\\159\\102.238\\-266.6641\\159\\98.63281\\-270.082\\159\\94.72656\\-273.8629\\159\\92.77344\\-275.5521\\159\\88.86719\\-278.795\\159\\83.00781\\-283.0541\\159\\79.10156\\-285.5627\\159\\77.14844\\-287.0091\\159\\75.19531\\-288.1884\\159\\71.28906\\-290.2117\\159\\69.33594\\-291.1684\\159\\67.38281\\-292.3648\\159\\65.42969\\-293.1857\\159\\63.47656\\-294.2176\\159\\61.52344\\-294.937\\159\\59.57031\\-295.4727\\159\\57.61719\\-296.4619\\159\\55.66406\\-297.0009\\159\\53.71094\\-297.656\\159\\51.75781\\-298.5814\\159\\49.80469\\-299.1064\\159\\47.83381\\-299.8672\\159\\45.89844\\-300.5008\\159\\41.99219\\-301.2447\\159\\38.08594\\-302.3186\\159\\36.13281\\-302.6516\\159\\32.22656\\-303.1049\\159\\30.27344\\-303.5014\\159\\28.32031\\-304.0209\\159\\26.36719\\-304.3615\\159\\24.41406\\-304.5825\\159\\14.64844\\-305.4409\\159\\10.74219\\-305.9009\\159\\6.835938\\-306.0731\\159\\0.9765625\\-306.1233\\159\\-4.882813\\-305.9741\\159"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002221"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "241"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "206"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-305.2782\\161\\-22.46094\\-304.5144\\161\\-24.41406\\-304.2703\\161\\-28.32031\\-303.3009\\161\\-30.27344\\-302.9889\\161\\-34.17969\\-302.53\\161\\-36.13281\\-302.1388\\161\\-38.08594\\-301.516\\161\\-43.94531\\-300.2438\\161\\-45.89844\\-299.4325\\161\\-49.80469\\-298.2289\\161\\-51.75781\\-297.2767\\161\\-53.71094\\-296.7655\\161\\-57.61719\\-295.1421\\161\\-59.57031\\-294.6236\\161\\-61.52344\\-293.5983\\161\\-63.47656\\-292.7694\\161\\-65.42969\\-291.5359\\161\\-67.38281\\-290.7245\\161\\-69.33594\\-289.4738\\161\\-71.28906\\-288.7397\\161\\-73.24219\\-287.4587\\161\\-75.19531\\-286.385\\161\\-77.14844\\-285.0057\\161\\-79.10156\\-283.5082\\161\\-83.00781\\-280.9981\\161\\-86.91406\\-277.5882\\161\\-88.50828\\-276.4297\\161\\-90.82031\\-274.586\\161\\-93.03793\\-272.5234\\161\\-95.24094\\-270.5703\\161\\-98.63281\\-267.2656\\161\\-99.1452\\-266.6641\\161\\-102.9554\\-262.7578\\161\\-104.6229\\-260.8047\\161\\-106.1695\\-258.8516\\161\\-108.3984\\-256.3044\\161\\-110.9962\\-252.9922\\161\\-112.3047\\-251.0485\\161\\-115.1461\\-247.1328\\161\\-116.3291\\-245.1797\\161\\-117.2926\\-243.2266\\161\\-118.5209\\-241.2734\\161\\-119.3875\\-239.3203\\161\\-120.671\\-237.3672\\161\\-121.4644\\-235.4141\\161\\-122.5065\\-233.4609\\161\\-123.5722\\-229.5547\\161\\-124.4894\\-227.6016\\161\\-125.4731\\-223.6953\\161\\-126.2805\\-221.7422\\161\\-127.1813\\-217.8359\\161\\-128.3241\\-213.9297\\161\\-128.6621\\-211.9766\\161\\-129.4827\\-206.1172\\161\\-130.2857\\-202.2109\\161\\-130.686\\-198.3047\\161\\-130.8911\\-194.3984\\161\\-131.1344\\-188.5391\\161\\-131.214\\-184.6328\\161\\-131.214\\-180.7266\\161\\-131.1232\\-176.8203\\161\\-130.799\\-169.0078\\161\\-130.5318\\-165.1016\\161\\-130.334\\-163.1484\\161\\-129.5927\\-159.2422\\161\\-129.2982\\-157.2891\\161\\-128.8097\\-153.3828\\161\\-128.5073\\-151.4297\\161\\-128.0105\\-149.4766\\161\\-127.3108\\-147.5234\\161\\-126.2826\\-143.6172\\161\\-125.399\\-141.6641\\161\\-124.8933\\-139.7109\\161\\-124.2217\\-137.7578\\161\\-123.3206\\-135.8047\\161\\-122.7777\\-133.8516\\161\\-121.7403\\-131.8984\\161\\-120.8348\\-129.9453\\161\\-119.5007\\-127.9922\\161\\-118.4441\\-126.0391\\161\\-116.2109\\-122.5486\\161\\-114.624\\-120.1797\\161\\-111.3281\\-116.2734\\161\\-110.3516\\-114.9469\\161\\-107.9636\\-112.3672\\161\\-104.4922\\-108.9701\\161\\-101.4657\\-106.5078\\161\\-100.5859\\-105.8704\\161\\-94.72656\\-102.2255\\161\\-88.86719\\-99.91152\\161\\-86.91406\\-99.50912\\161\\-84.96094\\-98.90825\\161\\-83.00781\\-98.16213\\161\\-79.10156\\-97.44992\\161\\-75.19531\\-96.39567\\161\\-73.24219\\-96.06776\\161\\-67.38281\\-95.30271\\161\\-65.42969\\-95.0004\\161\\-63.47656\\-94.59081\\161\\-59.57031\\-94.09502\\161\\-53.71094\\-93.70724\\161\\-47.85156\\-93.42798\\161\\-40.03906\\-92.79838\\161\\-36.13281\\-92.55411\\161\\-32.22656\\-92.45891\\161\\-28.32031\\-92.45891\\161\\-22.46094\\-92.68733\\161\\-20.50781\\-92.82831\\161\\-16.60156\\-93.28409\\161\\-12.69531\\-93.89638\\161\\-10.74219\\-94.35883\\161\\-8.789063\\-95.22683\\161\\-4.882813\\-96.56398\\161\\-2.929688\\-97.49805\\161\\-0.9765625\\-97.98943\\161\\0.9765625\\-98.3805\\161\\2.929688\\-98.57324\\161\\4.882813\\-98.44783\\161\\8.789063\\-97.6925\\161\\10.74219\\-97.00214\\161\\12.69531\\-96.06891\\161\\14.64844\\-95.51221\\161\\16.66667\\-94.78906\\161\\18.55469\\-94.215\\161\\20.50781\\-93.93382\\161\\26.36719\\-93.20564\\161\\30.27344\\-92.54297\\161\\34.17969\\-92.15073\\161\\41.99219\\-91.71607\\161\\47.85156\\-91.51304\\161\\51.75781\\-91.49033\\161\\55.66406\\-91.5686\\161\\61.52344\\-91.89355\\161\\63.47656\\-91.94205\\161\\67.38281\\-92.34476\\161\\69.33594\\-92.67435\\161\\73.24219\\-93.45173\\161\\77.14844\\-94.02132\\161\\79.10156\\-94.50484\\161\\81.05469\\-95.32232\\161\\83.00781\\-95.86987\\161\\84.96094\\-96.5399\\161\\86.91406\\-97.53326\\161\\88.86719\\-98.29858\\161\\90.82031\\-99.43848\\161\\92.77344\\-100.1805\\161\\94.72656\\-101.3982\\161\\96.67969\\-102.3574\\161\\98.63281\\-103.7185\\161\\100.5859\\-105.2408\\161\\104.4922\\-107.8764\\161\\106.4453\\-109.5864\\161\\109.3959\\-112.3672\\161\\112.3047\\-115.4791\\161\\114.574\\-118.2266\\161\\116.2109\\-120.7245\\161\\117.0524\\-122.1328\\161\\117.8315\\-124.0859\\161\\118.9761\\-126.0391\\161\\119.8215\\-127.9922\\161\\120.883\\-129.9453\\161\\121.5759\\-131.8984\\161\\122.5424\\-133.8516\\161\\123.4464\\-137.7578\\161\\124.2084\\-139.7109\\161\\124.749\\-141.6641\\161\\125.4642\\-145.5703\\161\\126.112\\-147.5234\\161\\126.5462\\-149.4766\\161\\127.1006\\-153.3828\\161\\127.7274\\-157.2891\\161\\128.0913\\-159.2422\\161\\128.5052\\-163.1484\\161\\128.7996\\-169.0078\\161\\128.8557\\-172.9141\\161\\128.9177\\-184.6328\\161\\128.9006\\-190.4922\\161\\128.7884\\-202.2109\\161\\128.575\\-210.0234\\161\\128.3216\\-213.9297\\161\\128.0651\\-215.8828\\161\\127.6652\\-217.8359\\161\\126.6937\\-223.6953\\161\\126.2004\\-225.6484\\161\\125.4261\\-227.6016\\161\\124.5212\\-231.5078\\161\\123.6233\\-233.4609\\161\\122.5716\\-237.3672\\161\\121.5371\\-239.3203\\161\\120.7555\\-241.2734\\161\\119.4681\\-243.2266\\161\\118.5245\\-245.1797\\161\\117.2577\\-247.1328\\161\\116.2358\\-249.0859\\161\\114.9918\\-251.0391\\161\\112.0644\\-254.9453\\161\\110.7942\\-256.8984\\161\\109.3179\\-258.8516\\161\\107.6981\\-260.8047\\161\\104.1059\\-264.7109\\161\\102.5472\\-266.6641\\161\\100.5859\\-268.5772\\161\\98.63281\\-270.3281\\161\\96.44501\\-272.5234\\161\\94.72656\\-274.1298\\161\\90.82031\\-277.38\\161\\88.86719\\-279.0682\\161\\86.91406\\-280.6119\\161\\84.96094\\-281.8737\\161\\81.05469\\-284.6795\\161\\79.10156\\-285.9073\\161\\75.19531\\-288.56\\161\\73.24219\\-289.3537\\161\\71.28906\\-290.5745\\161\\69.33594\\-291.4094\\161\\67.38281\\-292.6552\\161\\65.42969\\-293.41\\161\\63.47656\\-294.4929\\161\\59.57031\\-295.7448\\161\\57.61719\\-296.6675\\161\\55.66406\\-297.1942\\161\\53.71094\\-298.0897\\161\\51.75781\\-298.7827\\161\\49.80469\\-299.3637\\161\\47.85156\\-300.1992\\161\\45.89844\\-300.6631\\161\\41.99219\\-301.4506\\161\\40.03906\\-302.088\\161\\38.08594\\-302.51\\161\\34.17969\\-302.9955\\161\\32.22656\\-303.3203\\161\\28.32031\\-304.2954\\161\\26.36719\\-304.54\\161\\20.50781\\-305.1176\\161\\14.64844\\-305.8073\\161\\10.74219\\-306.1425\\161\\4.882813\\-306.2838\\161\\0.9765625\\-306.2759\\161\\-4.882813\\-306.1795\\161\\-8.789063\\-305.9503\\161"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002220"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "242"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "207"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-12.69531\\-305.8351\\163\\-18.55469\\-305.0737\\163\\-24.41406\\-304.4695\\163\\-26.36719\\-304.1505\\163\\-30.27344\\-303.1638\\163\\-34.17969\\-302.6648\\163\\-36.13281\\-302.3477\\163\\-40.03906\\-301.2539\\163\\-43.94531\\-300.465\\163\\-47.85156\\-299.0517\\163\\-49.80469\\-298.4934\\163\\-51.75781\\-297.5354\\163\\-55.66406\\-296.2266\\163\\-57.61719\\-295.2824\\163\\-59.57031\\-294.8236\\163\\-61.42849\\-294.0078\\163\\-63.47656\\-292.9937\\163\\-65.42969\\-291.9152\\163\\-68.92825\\-290.1016\\163\\-69.33594\\-289.7905\\163\\-71.28906\\-288.9508\\163\\-73.24219\\-287.7455\\163\\-75.19531\\-286.723\\163\\-78.55631\\-284.2422\\163\\-79.10156\\-283.7814\\163\\-81.05469\\-282.7146\\163\\-83.00781\\-281.2547\\163\\-86.91406\\-277.9543\\163\\-88.86719\\-276.5313\\163\\-90.82031\\-274.9279\\163\\-92.77344\\-273.1723\\163\\-94.72656\\-271.2646\\163\\-95.57846\\-270.5703\\163\\-98.63281\\-267.614\\163\\-99.46903\\-266.6641\\163\\-101.408\\-264.7109\\163\\-104.4922\\-261.3705\\163\\-108.3984\\-256.7418\\163\\-110.3516\\-254.2107\\163\\-111.1861\\-252.9922\\163\\-112.7104\\-251.0391\\163\\-114.2578\\-248.8188\\163\\-116.6395\\-245.1797\\163\\-117.4721\\-243.2266\\163\\-118.7356\\-241.2734\\163\\-119.6106\\-239.3203\\163\\-120.851\\-237.3672\\163\\-121.6328\\-235.4141\\163\\-122.6488\\-233.4609\\163\\-123.7147\\-229.5547\\163\\-124.6129\\-227.6016\\163\\-125.0571\\-225.6484\\163\\-125.6161\\-223.6953\\163\\-126.4205\\-221.7422\\163\\-127.2694\\-217.8359\\163\\-128.3967\\-213.9297\\163\\-129.5321\\-206.1172\\163\\-130.3206\\-202.2109\\163\\-130.7109\\-198.3047\\163\\-130.9828\\-192.4453\\163\\-131.2219\\-184.6328\\163\\-131.2182\\-180.7266\\163\\-131.1529\\-176.8203\\163\\-130.8048\\-169.0078\\163\\-130.5359\\-165.1016\\163\\-130.2994\\-163.1484\\163\\-129.5321\\-159.2422\\163\\-128.7463\\-153.3828\\163\\-128.4149\\-151.4297\\163\\-127.1839\\-147.5234\\163\\-126.709\\-145.5703\\163\\-126.0287\\-143.6172\\163\\-125.2497\\-141.6641\\163\\-124.7656\\-139.7109\\163\\-123.9219\\-137.7578\\163\\-123.1995\\-135.8047\\163\\-122.6107\\-133.8516\\163\\-121.4905\\-131.8984\\163\\-120.6284\\-129.9453\\163\\-119.2809\\-127.9922\\163\\-118.0745\\-126.0391\\163\\-117.0382\\-124.0859\\163\\-115.6424\\-122.1328\\163\\-114.3451\\-120.1797\\163\\-112.8094\\-118.2266\\163\\-111.1624\\-116.2734\\163\\-110.3516\\-115.1945\\163\\-107.7584\\-112.3672\\163\\-104.4922\\-109.1319\\163\\-102.5391\\-107.4973\\163\\-100.5859\\-105.9975\\163\\-98.63281\\-104.8989\\163\\-96.67969\\-103.5724\\163\\-94.72656\\-102.3978\\163\\-92.77344\\-101.6016\\163\\-90.82031\\-100.9181\\163\\-88.86719\\-100.046\\163\\-84.96094\\-99.16065\\163\\-83.00781\\-98.3805\\163\\-81.05469\\-97.95056\\163\\-77.14844\\-97.23047\\163\\-75.19531\\-96.67561\\163\\-73.24219\\-96.23946\\163\\-65.42969\\-95.2513\\163\\-61.52344\\-94.5521\\163\\-59.57031\\-94.27474\\163\\-53.71094\\-93.84801\\163\\-43.94531\\-93.43643\\163\\-38.08594\\-93.12399\\163\\-34.17969\\-92.86015\\163\\-28.32031\\-92.81322\\163\\-26.36719\\-92.87563\\163\\-20.50781\\-93.21418\\163\\-16.60156\\-93.55454\\163\\-12.69531\\-94.0942\\163\\-10.74219\\-94.7038\\163\\-8.789063\\-95.50767\\163\\-6.835938\\-96.09309\\163\\-4.882813\\-97.0495\\163\\-2.929688\\-97.75965\\163\\0.9765625\\-98.90825\\163\\2.929688\\-99.10332\\163\\4.882813\\-98.98336\\163\\8.789063\\-97.94697\\163\\10.74219\\-97.3473\\163\\12.69531\\-96.36352\\163\\14.64844\\-95.74839\\163\\16.60156\\-95.26751\\163\\18.55469\\-94.58466\\163\\20.50781\\-94.17057\\163\\22.46094\\-93.92034\\163\\30.27344\\-93.16615\\163\\34.17969\\-92.56541\\163\\36.13281\\-92.36837\\163\\40.03906\\-92.08598\\163\\47.85156\\-91.81262\\163\\51.75781\\-91.77012\\163\\55.66406\\-91.83395\\163\\63.47656\\-92.21202\\163\\65.42969\\-92.3866\\163\\67.38281\\-92.67435\\163\\69.33594\\-93.08912\\163\\71.28906\\-93.39124\\163\\75.19531\\-93.87169\\163\\77.14844\\-94.18761\\163\\81.05469\\-95.52148\\163\\83.00781\\-96.02232\\163\\84.80748\\-96.74219\\163\\88.86719\\-98.52093\\163\\90.82031\\-99.5694\\163\\92.77344\\-100.3496\\163\\96.67969\\-102.5773\\163\\98.63281\\-103.8894\\163\\100.5859\\-105.4026\\163\\104.4922\\-108.0836\\163\\106.4453\\-109.8052\\163\\109.1588\\-112.3672\\163\\112.3047\\-115.7334\\163\\114.3444\\-118.2266\\163\\116.9934\\-122.1328\\163\\117.7338\\-124.0859\\163\\118.914\\-126.0391\\163\\119.7305\\-127.9922\\163\\120.8288\\-129.9453\\163\\121.5338\\-131.8984\\163\\122.5094\\-133.8516\\163\\123.4554\\-137.7578\\163\\124.2217\\-139.7109\\163\\124.7734\\-141.6641\\163\\125.5321\\-145.5703\\163\\126.224\\-147.5234\\163\\126.6121\\-149.4766\\163\\127.1684\\-153.3828\\163\\128.1772\\-159.2422\\163\\128.5558\\-163.1484\\163\\128.8333\\-169.0078\\163\\128.9288\\-174.8672\\163\\128.9818\\-180.7266\\163\\128.964\\-188.5391\\163\\128.8159\\-202.2109\\163\\128.6053\\-210.0234\\163\\128.3535\\-213.9297\\163\\128.1167\\-215.8828\\163\\127.3775\\-219.7891\\163\\126.7488\\-223.6953\\163\\126.3231\\-225.6484\\163\\125.5517\\-227.6016\\163\\124.6491\\-231.5078\\163\\123.7958\\-233.4609\\163\\122.6814\\-237.3672\\163\\121.7017\\-239.3203\\163\\120.8826\\-241.2734\\163\\119.6226\\-243.2266\\163\\118.6796\\-245.1797\\163\\117.3602\\-247.1328\\163\\116.4186\\-249.0859\\163\\115.116\\-251.0391\\163\\113.6407\\-252.9922\\163\\110.9416\\-256.8984\\163\\107.8566\\-260.8047\\163\\104.355\\-264.7109\\163\\102.8343\\-266.6641\\163\\100.5859\\-268.9526\\163\\98.74321\\-270.5703\\163\\96.86379\\-272.5234\\163\\94.69866\\-274.4766\\163\\92.77344\\-275.9205\\163\\88.86719\\-279.3051\\163\\86.91406\\-280.893\\163\\83.00781\\-283.4699\\163\\82.0625\\-284.2422\\163\\79.10156\\-286.3681\\163\\77.14844\\-287.4995\\163\\75.19531\\-288.8058\\163\\73.24219\\-289.5612\\163\\71.28906\\-290.8256\\163\\69.33594\\-291.705\\163\\67.38281\\-292.8702\\163\\65.42969\\-293.6913\\163\\63.47656\\-294.7097\\163\\61.52344\\-295.2224\\163\\59.57031\\-296.1048\\163\\57.61719\\-296.8393\\163\\55.66406\\-297.4166\\163\\53.71094\\-298.4023\\163\\51.75781\\-298.9789\\163\\47.85156\\-300.4176\\163\\43.94531\\-301.1925\\163\\40.03906\\-302.3152\\163\\38.08594\\-302.6648\\163\\34.17969\\-303.1638\\163\\32.22656\\-303.6181\\163\\30.27344\\-304.1702\\163\\28.32031\\-304.4796\\163\\20.50781\\-305.3755\\163\\16.60156\\-305.926\\163\\12.69531\\-306.2234\\163\\8.789063\\-306.3616\\163\\4.882813\\-306.4144\\163\\0.9765625\\-306.4144\\163\\-4.882813\\-306.3288\\163\\-8.789063\\-306.1704\\163"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002219"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "242"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "208"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-305.926\\165\\-18.55469\\-305.3223\\165\\-26.36719\\-304.3944\\165\\-28.32031\\-304.0325\\165\\-30.27344\\-303.4165\\165\\-32.22656\\-303.034\\165\\-36.13281\\-302.5377\\165\\-38.08594\\-302.1169\\165\\-40.03906\\-301.4877\\165\\-43.94531\\-300.6427\\165\\-45.89844\\-300.1216\\165\\-47.85156\\-299.287\\165\\-49.80469\\-298.7168\\165\\-53.71094\\-297.0994\\165\\-55.66406\\-296.4839\\165\\-57.61719\\-295.5075\\165\\-59.57031\\-294.9844\\165\\-61.52344\\-294.3401\\165\\-63.47656\\-293.2232\\165\\-65.42969\\-292.3557\\165\\-67.38281\\-291.1617\\165\\-69.33594\\-290.238\\165\\-75.19531\\-286.9823\\165\\-77.14844\\-285.5255\\165\\-79.10156\\-284.1696\\165\\-81.05469\\-282.9795\\165\\-84.51087\\-280.3359\\165\\-88.86719\\-276.8511\\165\\-92.77344\\-273.4631\\165\\-94.72656\\-271.5891\\165\\-95.89705\\-270.5703\\165\\-98.63281\\-267.91\\165\\-101.7464\\-264.7109\\165\\-104.4922\\-261.7431\\165\\-105.2291\\-260.8047\\165\\-108.6983\\-256.8984\\165\\-110.3516\\-254.6413\\165\\-111.3921\\-252.9922\\165\\-112.9908\\-251.0391\\165\\-114.4546\\-249.0859\\165\\-115.5831\\-247.1328\\165\\-116.8855\\-245.1797\\165\\-117.7107\\-243.2266\\165\\-118.9506\\-241.2734\\165\\-119.9247\\-239.3203\\165\\-121.0133\\-237.3672\\165\\-122.7877\\-233.4609\\165\\-123.2652\\-231.5078\\165\\-123.9368\\-229.5547\\165\\-124.7352\\-227.6016\\165\\-125.1708\\-225.6484\\165\\-126.5754\\-221.7422\\165\\-127.4294\\-217.8359\\165\\-128.0382\\-215.8828\\165\\-128.5003\\-213.9297\\165\\-129.3275\\-208.0703\\165\\-129.6441\\-206.1172\\165\\-130.0974\\-204.1641\\165\\-130.3971\\-202.2109\\165\\-130.7589\\-198.3047\\165\\-131.0911\\-190.4922\\165\\-131.2176\\-186.5859\\165\\-131.2788\\-182.6797\\165\\-131.1983\\-176.8203\\165\\-130.8214\\-169.0078\\165\\-130.5603\\-165.1016\\165\\-130.2965\\-163.1484\\165\\-129.5296\\-159.2422\\165\\-128.7052\\-153.3828\\165\\-128.3392\\-151.4297\\165\\-127.0875\\-147.5234\\165\\-126.6186\\-145.5703\\165\\-125.8102\\-143.6172\\165\\-125.1341\\-141.6641\\165\\-124.6491\\-139.7109\\165\\-123.7027\\-137.7578\\165\\-122.4486\\-133.8516\\165\\-121.297\\-131.8984\\165\\-120.3896\\-129.9453\\165\\-118.1641\\-126.4625\\165\\-117.8096\\-126.0391\\165\\-116.8984\\-124.0859\\165\\-114.2578\\-120.3348\\165\\-112.6718\\-118.2266\\165\\-110.3516\\-115.3584\\165\\-107.6497\\-112.3672\\165\\-104.4922\\-109.2016\\165\\-102.5391\\-107.549\\165\\-100.5859\\-106.1105\\165\\-98.63281\\-105.0364\\165\\-96.67969\\-103.6735\\165\\-94.72656\\-102.5788\\165\\-92.77344\\-101.7122\\165\\-90.82031\\-101.0923\\165\\-88.86719\\-100.2045\\165\\-84.96094\\-99.35628\\165\\-81.05469\\-98.11045\\165\\-77.14844\\-97.43121\\165\\-75.19531\\-97.00668\\165\\-73.24219\\-96.44922\\165\\-69.33594\\-95.89548\\165\\-63.47656\\-95.19707\\165\\-59.57031\\-94.52338\\165\\-57.61719\\-94.28776\\165\\-53.71094\\-93.98732\\165\\-49.80469\\-93.8008\\165\\-38.08594\\-93.43643\\165\\-34.17969\\-93.24962\\165\\-26.36719\\-93.21418\\165\\-22.46094\\-93.36328\\165\\-18.55469\\-93.59414\\165\\-14.64844\\-93.97729\\165\\-12.69531\\-94.33782\\165\\-10.74219\\-95.10751\\165\\-6.835938\\-96.36062\\165\\-4.882813\\-97.39516\\165\\-2.929688\\-98.01066\\165\\-0.9765625\\-98.76677\\165\\0.9765625\\-99.29108\\165\\2.929688\\-99.42192\\165\\4.882813\\-99.32827\\165\\6.835938\\-98.97331\\165\\8.789063\\-98.24233\\165\\10.74219\\-97.63737\\165\\14.64844\\-96.00549\\165\\18.55469\\-95.10983\\165\\20.50781\\-94.51942\\165\\22.46094\\-94.16994\\165\\24.41406\\-93.93909\\165\\30.27344\\-93.52493\\165\\34.17969\\-93.16378\\165\\36.13281\\-92.89152\\165\\40.03906\\-92.48717\\165\\47.85156\\-92.11835\\165\\51.75781\\-92.06216\\165\\55.66406\\-92.10883\\165\\63.47656\\-92.51041\\165\\65.42969\\-92.71387\\165\\67.38281\\-93.06528\\165\\71.28906\\-93.58945\\165\\75.19531\\-94.00171\\165\\77.14844\\-94.4167\\165\\79.10156\\-95.15614\\165\\83.00781\\-96.18666\\165\\84.96094\\-97.08567\\165\\86.91406\\-97.83745\\165\\88.86719\\-98.79769\\165\\92.77344\\-100.5452\\165\\96.37841\\-102.6016\\165\\98.63281\\-104.0369\\165\\100.5859\\-105.5759\\165\\104.4922\\-108.2915\\165\\106.4453\\-110.0012\\165\\108.9254\\-112.3672\\165\\112.5865\\-116.2734\\165\\115.5981\\-120.1797\\165\\116.9194\\-122.1328\\165\\117.6892\\-124.0859\\165\\118.8687\\-126.0391\\165\\119.6699\\-127.9922\\165\\120.8147\\-129.9453\\165\\121.5251\\-131.8984\\165\\122.5124\\-133.8516\\165\\123.4773\\-137.7578\\165\\124.2853\\-139.7109\\165\\124.8162\\-141.6641\\165\\125.1795\\-143.6172\\165\\125.6622\\-145.5703\\165\\126.3536\\-147.5234\\165\\126.7053\\-149.4766\\165\\127.2805\\-153.3828\\165\\128.0244\\-157.2891\\165\\128.2807\\-159.2422\\165\\128.6394\\-163.1484\\165\\128.964\\-170.9609\\165\\129.072\\-178.7734\\165\\129.0483\\-188.5391\\165\\128.8837\\-202.2109\\165\\128.7884\\-206.1172\\165\\128.575\\-211.9766\\165\\128.2246\\-215.8828\\165\\127.4785\\-219.7891\\165\\126.4562\\-225.6484\\165\\125.7084\\-227.6016\\165\\125.1601\\-229.5547\\165\\124.7614\\-231.5078\\165\\123.2774\\-235.4141\\165\\122.7766\\-237.3672\\165\\120.9893\\-241.2734\\165\\119.7984\\-243.2266\\165\\118.798\\-245.1797\\165\\117.47\\-247.1328\\165\\116.5654\\-249.0859\\165\\113.7888\\-252.9922\\165\\112.5041\\-254.9453\\165\\111.084\\-256.8984\\165\\108.3984\\-260.3753\\165\\104.4922\\-264.8924\\165\\103.0415\\-266.6641\\165\\101.1691\\-268.6172\\165\\99.05243\\-270.5703\\165\\96.67969\\-272.9976\\165\\94.72656\\-274.7971\\165\\92.77344\\-276.1779\\165\\90.82031\\-277.808\\165\\88.86719\\-279.556\\165\\86.91406\\-281.1487\\165\\84.96094\\-282.5256\\165\\83.00781\\-283.7366\\165\\82.4375\\-284.2422\\165\\79.69962\\-286.1953\\165\\79.10156\\-286.7062\\165\\77.14844\\-287.7992\\165\\75.19531\\-288.9899\\165\\73.24219\\-289.8574\\165\\72.92624\\-290.1016\\165\\69.4423\\-292.0547\\165\\65.42969\\-294.0472\\165\\63.47656\\-294.8831\\165\\61.52344\\-295.4148\\165\\59.57031\\-296.4232\\165\\57.61719\\-297.008\\165\\55.66406\\-297.7332\\165\\53.71094\\-298.6267\\165\\51.75781\\-299.1847\\165\\49.80469\\-300.0036\\165\\47.85156\\-300.5925\\165\\43.94531\\-301.396\\165\\41.99219\\-302.0479\\165\\40.03906\\-302.5222\\165\\36.13281\\-303.0201\\165\\34.17969\\-303.3948\\165\\32.22656\\-304.0092\\165\\30.27344\\-304.3911\\165\\24.41406\\-305.0992\\165\\18.55469\\-306.0084\\165\\16.60156\\-306.1795\\165\\12.69531\\-306.3864\\165\\8.789063\\-306.5068\\165\\2.929688\\-306.5882\\165\\-4.882813\\-306.4774\\165\\-8.789063\\-306.347\\165"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002218"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "229"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "209"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-305.9971\\167\\-22.46094\\-305.0737\\167\\-28.32031\\-304.3147\\167\\-32.22656\\-303.2757\\167\\-38.08594\\-302.383\\167\\-41.99219\\-301.2267\\167\\-45.89844\\-300.386\\167\\-47.85156\\-299.5911\\167\\-51.75781\\-298.3256\\167\\-53.71094\\-297.3163\\167\\-55.66406\\-296.7322\\167\\-59.57031\\-295.1664\\167\\-61.52344\\-294.5987\\167\\-63.47656\\-293.4882\\167\\-65.42969\\-292.6687\\167\\-67.38281\\-291.4131\\167\\-69.33594\\-290.5657\\167\\-71.28906\\-289.3266\\167\\-73.24219\\-288.4618\\167\\-75.19531\\-287.2126\\167\\-79.10156\\-284.584\\167\\-82.33696\\-282.2891\\167\\-84.96094\\-280.3612\\167\\-89.72749\\-276.4297\\167\\-92.77344\\-273.7394\\167\\-94.72656\\-271.8789\\167\\-96.2136\\-270.5703\\167\\-98.63281\\-268.2049\\167\\-102.0542\\-264.7109\\167\\-104.4922\\-262.0888\\167\\-105.5376\\-260.8047\\167\\-109.0062\\-256.8984\\167\\-110.4865\\-254.9453\\167\\-111.6815\\-252.9922\\167\\-114.7852\\-249.0859\\167\\-115.8642\\-247.1328\\167\\-117.0959\\-245.1797\\167\\-118.0591\\-243.2266\\167\\-120.1172\\-239.6059\\167\\-122.198\\-235.4141\\167\\-122.9337\\-233.4609\\167\\-123.4083\\-231.5078\\167\\-124.2477\\-229.5547\\167\\-124.8582\\-227.6016\\167\\-125.3274\\-225.6484\\167\\-126.1509\\-223.6953\\167\\-126.7384\\-221.7422\\167\\-127.1495\\-219.7891\\167\\-128.2508\\-215.8828\\167\\-128.6248\\-213.9297\\167\\-129.448\\-208.0703\\167\\-130.2411\\-204.1641\\167\\-130.511\\-202.2109\\167\\-130.8157\\-198.3047\\167\\-131.0801\\-192.4453\\167\\-131.2994\\-186.5859\\167\\-131.373\\-182.6797\\167\\-131.2702\\-176.8203\\167\\-130.7527\\-167.0547\\167\\-130.3645\\-163.1484\\167\\-129.5785\\-159.2422\\167\\-128.6723\\-153.3828\\167\\-128.2854\\-151.4297\\167\\-127.5954\\-149.4766\\167\\-126.5592\\-145.5703\\167\\-125.6966\\-143.6172\\167\\-125.0633\\-141.6641\\167\\-124.5488\\-139.7109\\167\\-123.5722\\-137.7578\\167\\-123.0229\\-135.8047\\167\\-122.2832\\-133.8516\\167\\-122.0703\\-133.5596\\167\\-120.1399\\-129.9453\\167\\-118.1641\\-126.6581\\167\\-117.6723\\-126.0391\\167\\-116.7889\\-124.0859\\167\\-114.2578\\-120.4549\\167\\-112.6112\\-118.2266\\167\\-110.3516\\-115.4219\\167\\-107.6054\\-112.3672\\167\\-104.4922\\-109.2487\\167\\-102.5391\\-107.5951\\167\\-100.5859\\-106.1917\\167\\-98.63281\\-105.1369\\167\\-96.67969\\-103.7609\\167\\-92.77344\\-101.8238\\167\\-90.82031\\-101.2279\\167\\-88.86719\\-100.3914\\167\\-86.91406\\-99.84731\\167\\-84.96094\\-99.50253\\167\\-83.00781\\-99.00921\\167\\-81.05469\\-98.29858\\167\\-79.10156\\-97.9031\\167\\-75.19531\\-97.24526\\167\\-71.28906\\-96.32366\\167\\-69.33594\\-96.06074\\167\\-63.47656\\-95.41772\\167\\-61.52344\\-95.16467\\167\\-57.61719\\-94.52338\\167\\-53.71094\\-94.14428\\167\\-49.80469\\-93.93233\\167\\-45.89844\\-93.78911\\167\\-40.03906\\-93.64117\\167\\-32.22656\\-93.48083\\167\\-26.36719\\-93.47227\\167\\-22.46094\\-93.57446\\167\\-16.60156\\-93.93909\\167\\-14.64844\\-94.1827\\167\\-12.69531\\-94.65936\\167\\-10.74219\\-95.38377\\167\\-8.789063\\-95.94218\\167\\-4.882813\\-97.64899\\167\\-2.929688\\-98.30837\\167\\-0.9765625\\-99.18359\\167\\0.9765625\\-99.52511\\167\\2.929688\\-99.62194\\167\\4.882813\\-99.55402\\167\\6.835938\\-99.32007\\167\\8.69864\\-98.69531\\167\\12.69531\\-97.23047\\167\\14.64844\\-96.29099\\167\\18.55469\\-95.43396\\167\\22.46094\\-94.46829\\167\\24.41406\\-94.14859\\167\\28.32031\\-93.83015\\167\\34.17969\\-93.51712\\167\\40.03906\\-93.08912\\167\\43.94531\\-92.72743\\167\\47.85156\\-92.52113\\167\\53.71094\\-92.40125\\167\\55.66406\\-92.45891\\167\\61.52344\\-92.84401\\167\\63.47656\\-92.92257\\167\\75.19531\\-94.17871\\167\\79.10156\\-95.37881\\167\\83.00781\\-96.36805\\167\\84.96094\\-97.2709\\167\\86.91406\\-97.99461\\167\\88.86719\\-99.02791\\167\\90.82031\\-99.79319\\167\\94.72656\\-101.741\\167\\98.63281\\-104.2104\\167\\100.5859\\-105.719\\167\\104.4245\\-108.4609\\167\\106.4453\\-110.1753\\167\\108.7815\\-112.3672\\167\\110.6721\\-114.3203\\167\\112.4401\\-116.2734\\167\\115.5313\\-120.1797\\167\\116.8771\\-122.1328\\167\\117.6463\\-124.0859\\167\\118.8576\\-126.0391\\167\\119.6699\\-127.9922\\167\\120.8354\\-129.9453\\167\\121.5579\\-131.8984\\167\\122.5488\\-133.8516\\167\\123.5221\\-137.7578\\167\\124.3804\\-139.7109\\167\\124.8805\\-141.6641\\167\\125.2688\\-143.6172\\167\\126.4902\\-147.5234\\167\\127.4444\\-153.3828\\167\\128.1906\\-157.2891\\167\\128.4089\\-159.2422\\167\\128.7323\\-163.1484\\167\\129.067\\-170.9609\\167\\129.1765\\-176.8203\\167\\129.1931\\-182.6797\\167\\129.0909\\-194.3984\\167\\128.9764\\-200.2578\\167\\128.9756\\-202.2109\\167\\128.8159\\-208.0703\\167\\128.6466\\-211.9766\\167\\128.3438\\-215.8828\\167\\128.0651\\-217.8359\\167\\127.2337\\-221.7422\\167\\126.5679\\-225.6484\\167\\125.275\\-229.5547\\167\\124.8613\\-231.5078\\167\\124.2348\\-233.4609\\167\\123.3621\\-235.4141\\167\\122.8721\\-237.3672\\167\\122.0703\\-239.2772\\167\\121.0938\\-241.2734\\167\\118.9006\\-245.1797\\167\\117.5705\\-247.1328\\167\\116.6922\\-249.0859\\167\\116.2109\\-249.7099\\167\\112.6661\\-254.9453\\167\\109.6765\\-258.8516\\167\\108.3984\\-260.6313\\167\\103.2146\\-266.6641\\167\\101.3849\\-268.6172\\167\\99.30463\\-270.5703\\167\\96.67969\\-273.2542\\167\\94.72656\\-275.0707\\167\\90.82031\\-278.1387\\167\\88.27311\\-280.3359\\167\\84.96094\\-282.8559\\167\\81.05469\\-285.4835\\167\\79.10156\\-286.9635\\167\\77.14844\\-288.1567\\167\\75.19531\\-289.1548\\167\\73.24219\\-290.2546\\167\\71.28906\\-291.2279\\167\\69.33594\\-292.4854\\167\\67.38281\\-293.295\\167\\65.42969\\-294.3834\\167\\61.52344\\-295.7059\\167\\59.57031\\-296.6527\\167\\57.61719\\-297.193\\167\\55.66406\\-298.1378\\167\\51.75781\\-299.4352\\167\\49.80469\\-300.2667\\167\\47.85156\\-300.7534\\167\\45.89844\\-301.1423\\167\\41.99219\\-302.3053\\167\\40.03906\\-302.6648\\167\\36.13281\\-303.2008\\167\\32.22656\\-304.2703\\167\\24.41406\\-305.3447\\167\\20.50781\\-306.0414\\167\\16.60156\\-306.3509\\167\\10.74219\\-306.6196\\167\\6.835938\\-306.7031\\167\\0.9765625\\-306.7463\\167\\-4.882813\\-306.6447\\167\\-8.789063\\-306.5089\\167\\-14.64844\\-306.1885\\167"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002217"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "230"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "210"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-305.7932\\169\\-22.46094\\-305.3708\\169\\-24.41406\\-305.0522\\169\\-30.27344\\-304.2264\\169\\-34.17969\\-303.1601\\169\\-38.08594\\-302.5956\\169\\-40.03906\\-302.1646\\169\\-41.99219\\-301.4901\\169\\-45.89844\\-300.5938\\169\\-47.85156\\-300.0046\\169\\-49.80469\\-299.1555\\169\\-51.75781\\-298.5885\\169\\-53.71094\\-297.6301\\169\\-57.61719\\-296.3229\\169\\-59.57031\\-295.3634\\169\\-61.52344\\-294.7998\\169\\-65.42969\\-292.9112\\169\\-67.38281\\-291.7336\\169\\-69.33594\\-290.8014\\169\\-71.28906\\-289.5464\\169\\-73.24219\\-288.7449\\169\\-75.19531\\-287.4343\\169\\-77.14844\\-286.293\\169\\-79.10156\\-284.8994\\169\\-81.05469\\-283.3892\\169\\-82.76139\\-282.2891\\169\\-84.96094\\-280.7104\\169\\-88.86719\\-277.3513\\169\\-90.04688\\-276.4297\\169\\-92.77344\\-274.0358\\169\\-96.5721\\-270.5703\\169\\-100.6381\\-266.6641\\169\\-104.1613\\-262.7578\\169\\-107.6109\\-258.8516\\169\\-109.2773\\-256.8984\\169\\-110.8156\\-254.9453\\169\\-112.0438\\-252.9922\\169\\-115.0551\\-249.0859\\169\\-116.2516\\-247.1328\\169\\-117.2858\\-245.1797\\169\\-118.461\\-243.2266\\169\\-119.3777\\-241.2734\\169\\-120.6493\\-239.3203\\169\\-121.4173\\-237.3672\\169\\-122.4811\\-235.4141\\169\\-123.5932\\-231.5078\\169\\-124.499\\-229.5547\\169\\-125.5489\\-225.6484\\169\\-126.4232\\-223.6953\\169\\-127.3508\\-219.7891\\169\\-127.9823\\-217.8359\\169\\-128.4574\\-215.8828\\169\\-129.302\\-210.0234\\169\\-130.4102\\-204.1641\\169\\-130.6299\\-202.2109\\169\\-130.9996\\-196.3516\\169\\-131.4285\\-186.5859\\169\\-131.4838\\-180.7266\\169\\-131.376\\-176.8203\\169\\-130.7932\\-167.0547\\169\\-130.4599\\-163.1484\\169\\-130.0974\\-161.1953\\169\\-129.6296\\-159.2422\\169\\-128.684\\-153.3828\\169\\-128.2854\\-151.4297\\169\\-127.5823\\-149.4766\\169\\-126.5241\\-145.5703\\169\\-125.6378\\-143.6172\\169\\-124.4796\\-139.7109\\169\\-123.4961\\-137.7578\\169\\-122.9806\\-135.8047\\169\\-122.1556\\-133.8516\\169\\-118.8992\\-127.9922\\169\\-117.5916\\-126.0391\\169\\-116.7295\\-124.0859\\169\\-114.2578\\-120.4904\\169\\-112.5969\\-118.2266\\169\\-110.3516\\-115.4375\\169\\-107.5868\\-112.3672\\169\\-104.4922\\-109.2617\\169\\-102.5391\\-107.6155\\169\\-100.5859\\-106.2421\\169\\-98.63281\\-105.2037\\169\\-96.67969\\-103.8324\\169\\-92.77344\\-101.9246\\169\\-90.82031\\-101.3433\\169\\-86.91406\\-99.95874\\169\\-83.00781\\-99.21825\\169\\-81.05469\\-98.54671\\169\\-79.10156\\-98.05659\\169\\-75.19531\\-97.43059\\169\\-73.24219\\-97.0612\\169\\-71.28906\\-96.55518\\169\\-69.33594\\-96.21416\\169\\-61.52344\\-95.37997\\169\\-55.66406\\-94.52338\\169\\-53.71094\\-94.34091\\169\\-49.80469\\-94.07827\\169\\-45.89844\\-93.91373\\169\\-40.03906\\-93.76019\\169\\-28.32031\\-93.65862\\169\\-22.46094\\-93.75891\\169\\-18.55469\\-93.95808\\169\\-16.60156\\-94.13176\\169\\-14.64844\\-94.44727\\169\\-10.74219\\-95.62856\\169\\-8.789063\\-96.16199\\169\\-6.835938\\-97.14469\\169\\-4.882813\\-97.87885\\169\\-2.929688\\-98.75089\\169\\-0.9765625\\-99.44966\\169\\0.9765625\\-99.71116\\169\\2.929688\\-99.78609\\169\\4.882813\\-99.73962\\169\\6.835938\\-99.54129\\169\\8.789063\\-99.10614\\169\\10.74219\\-98.1835\\169\\12.69531\\-97.50174\\169\\14.64844\\-96.61921\\169\\16.60156\\-96.01691\\169\\20.50781\\-95.30684\\169\\24.41406\\-94.39428\\169\\26.36719\\-94.15717\\169\\30.27344\\-93.85985\\169\\38.08594\\-93.54025\\169\\45.89844\\-93.14023\\169\\53.71094\\-92.81322\\169\\57.61719\\-93.11192\\169\\65.42969\\-93.39859\\169\\71.28906\\-93.88352\\169\\73.24219\\-94.08619\\169\\75.19531\\-94.42199\\169\\77.14844\\-95.05475\\169\\79.10156\\-95.56439\\169\\81.05469\\-95.95755\\169\\83.00781\\-96.55385\\169\\84.96094\\-97.41919\\169\\86.91406\\-98.15472\\169\\88.86719\\-99.19998\\169\\90.82031\\-99.90527\\169\\92.77344\\-100.9884\\169\\94.72656\\-101.8365\\169\\98.8023\\-104.5547\\169\\101.6195\\-106.5078\\169\\104.2434\\-108.4609\\169\\106.4453\\-110.3432\\169\\108.6604\\-112.3672\\169\\110.5781\\-114.3203\\169\\112.3047\\-116.2819\\169\\115.4801\\-120.1797\\169\\116.8555\\-122.1328\\169\\117.6367\\-124.0859\\169\\118.8687\\-126.0391\\169\\119.7097\\-127.9922\\169\\120.8704\\-129.9453\\169\\121.6162\\-131.8984\\169\\122.6071\\-133.8516\\169\\123.6205\\-137.7578\\169\\124.499\\-139.7109\\169\\125.3698\\-143.6172\\169\\126.0986\\-145.5703\\169\\126.6224\\-147.5234\\169\\127.2583\\-151.4297\\169\\128.0783\\-155.3359\\169\\128.3562\\-157.2891\\169\\128.703\\-161.1953\\169\\129.0415\\-167.0547\\169\\129.1844\\-170.9609\\169\\129.3147\\-176.8203\\169\\129.3367\\-182.6797\\169\\129.2091\\-194.3984\\169\\128.9987\\-206.1172\\169\\128.6167\\-213.9297\\169\\128.2246\\-217.8359\\169\\127.3658\\-221.7422\\169\\126.6807\\-225.6484\\169\\126.176\\-227.6016\\169\\125.4109\\-229.5547\\169\\124.4154\\-233.4609\\169\\123.4645\\-235.4141\\169\\122.951\\-237.3672\\169\\122.0703\\-239.522\\169\\120.1838\\-243.2266\\169\\118.1641\\-246.5299\\169\\117.6859\\-247.1328\\169\\116.7929\\-249.0859\\169\\112.8113\\-254.9453\\169\\109.8022\\-258.8516\\169\\108.4984\\-260.8047\\169\\104.4922\\-265.3594\\169\\103.3936\\-266.6641\\169\\101.5693\\-268.6172\\169\\99.50725\\-270.5703\\169\\96.67969\\-273.4661\\169\\94.72656\\-275.285\\169\\88.69538\\-280.3359\\169\\86.91406\\-281.6185\\169\\83.00781\\-284.5544\\169\\81.05469\\-285.8141\\169\\77.14844\\-288.4789\\169\\75.19531\\-289.3096\\169\\73.24219\\-290.5805\\169\\71.28906\\-291.4785\\169\\69.33594\\-292.7405\\169\\67.38281\\-293.5703\\169\\65.42969\\-294.6316\\169\\63.47656\\-295.2131\\169\\61.52344\\-296.1048\\169\\59.57031\\-296.8333\\169\\57.61719\\-297.4385\\169\\55.66406\\-298.439\\169\\53.71094\\-299.0279\\169\\49.80469\\-300.4731\\169\\45.89844\\-301.3354\\169\\43.94531\\-302.0067\\169\\41.99219\\-302.51\\169\\38.08594\\-303.0524\\169\\36.13281\\-303.4547\\169\\34.17969\\-304.0774\\169\\32.22656\\-304.4601\\169\\26.36719\\-305.2716\\169\\22.46094\\-306.0305\\169\\18.55469\\-306.39\\169\\12.69531\\-306.6979\\169\\6.835938\\-306.8838\\169\\0.9765625\\-306.9415\\169\\-2.929688\\-306.8791\\169\\-8.789063\\-306.6818\\169\\-14.64844\\-306.39\\169\\-18.55469\\-306.0731\\169"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002216"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "234"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "211"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-305.8073\\171\\-24.41406\\-305.3627\\171\\-26.36719\\-305.0237\\171\\-30.27344\\-304.4804\\171\\-32.22656\\-304.099\\171\\-34.17969\\-303.4618\\171\\-36.13281\\-303.041\\171\\-40.03906\\-302.4354\\171\\-43.94531\\-301.2228\\171\\-47.85156\\-300.3213\\171\\-49.80469\\-299.4624\\171\\-53.71094\\-298.0768\\171\\-55.66406\\-297.1539\\171\\-57.61719\\-296.5981\\171\\-59.57031\\-295.6142\\171\\-61.52344\\-294.9784\\171\\-63.47656\\-294.2191\\171\\-67.53943\\-292.0547\\171\\-70.96041\\-290.1016\\171\\-71.28906\\-289.8387\\171\\-73.24219\\-288.9581\\171\\-75.19531\\-287.6869\\171\\-77.14844\\-286.6476\\171\\-81.05469\\-283.6358\\171\\-83.00781\\-282.4544\\171\\-84.96094\\-280.9758\\171\\-88.03923\\-278.3828\\171\\-88.86719\\-277.616\\171\\-92.77344\\-274.3913\\171\\-94.72656\\-272.7131\\171\\-97.00259\\-270.5703\\171\\-101.0322\\-266.6641\\171\\-102.8519\\-264.7109\\171\\-108.3984\\-258.3063\\171\\-110.3516\\-255.9135\\171\\-112.5194\\-252.9922\\171\\-115.29\\-249.0859\\171\\-116.6255\\-247.1328\\171\\-117.4855\\-245.1797\\171\\-118.7547\\-243.2266\\171\\-119.6709\\-241.2734\\171\\-120.8868\\-239.3203\\171\\-121.6942\\-237.3672\\171\\-122.7066\\-235.4141\\171\\-123.2337\\-233.4609\\171\\-123.9063\\-231.5078\\171\\-124.7218\\-229.5547\\171\\-125.1964\\-227.6016\\171\\-126.6473\\-223.6953\\171\\-127.6266\\-219.7891\\171\\-128.2747\\-217.8359\\171\\-128.6447\\-215.8828\\171\\-129.4936\\-210.0234\\171\\-130.3101\\-206.1172\\171\\-130.7465\\-202.2109\\171\\-131.1232\\-196.3516\\171\\-131.5402\\-188.5391\\171\\-131.6671\\-182.6797\\171\\-131.6683\\-180.7266\\171\\-131.5172\\-176.8203\\171\\-130.5481\\-163.1484\\171\\-130.213\\-161.1953\\171\\-129.739\\-159.2422\\171\\-129.0838\\-155.3359\\171\\-128.3518\\-151.4297\\171\\-127.6175\\-149.4766\\171\\-126.5191\\-145.5703\\171\\-125.6268\\-143.6172\\171\\-124.4596\\-139.7109\\171\\-123.4737\\-137.7578\\171\\-122.9565\\-135.8047\\171\\-122.0941\\-133.8516\\171\\-121.0455\\-131.8984\\171\\-119.873\\-129.9453\\171\\-118.8816\\-127.9922\\171\\-117.5781\\-126.0391\\171\\-116.7295\\-124.0859\\171\\-114.2578\\-120.4753\\171\\-112.5969\\-118.2266\\171\\-110.3516\\-115.4045\\171\\-107.6212\\-112.3672\\171\\-104.4922\\-109.254\\171\\-102.5391\\-107.6211\\171\\-100.5859\\-106.2949\\171\\-98.63281\\-105.2665\\171\\-96.67969\\-103.9173\\171\\-94.72656\\-103.042\\171\\-92.77344\\-102.0132\\171\\-88.86719\\-100.8087\\171\\-86.91406\\-100.0766\\171\\-83.00781\\-99.38295\\171\\-81.05469\\-98.86547\\171\\-79.10156\\-98.23056\\171\\-77.14844\\-97.87738\\171\\-73.24219\\-97.28791\\171\\-69.33594\\-96.4061\\171\\-67.38281\\-96.15515\\171\\-61.52344\\-95.57146\\171\\-57.61719\\-95.1398\\171\\-55.66406\\-94.82844\\171\\-51.75781\\-94.38895\\171\\-47.85156\\-94.14428\\171\\-41.99219\\-93.93087\\171\\-36.13281\\-93.84191\\171\\-28.32031\\-93.82434\\171\\-24.41406\\-93.86609\\171\\-20.50781\\-93.99447\\171\\-16.60156\\-94.37538\\171\\-14.73999\\-94.78906\\171\\-10.74219\\-95.8539\\171\\-8.789063\\-96.44725\\171\\-6.835938\\-97.45294\\171\\-4.882813\\-98.13979\\171\\-2.929688\\-99.1638\\171\\-0.9765625\\-99.64929\\171\\0.9765625\\-99.8922\\171\\2.929688\\-99.99532\\171\\4.882813\\-99.91903\\171\\6.835938\\-99.71756\\171\\8.789063\\-99.3606\\171\\12.69531\\-97.72991\\171\\16.60156\\-96.24469\\171\\18.55469\\-95.84558\\171\\22.46094\\-95.24983\\171\\26.36719\\-94.40266\\171\\30.27344\\-94.02882\\171\\41.99219\\-93.58307\\171\\43.94531\\-93.55209\\171\\53.71094\\-93.23885\\171\\57.61719\\-93.44019\\171\\61.52344\\-93.50507\\171\\65.42969\\-93.63277\\171\\71.28906\\-94.03361\\171\\73.24219\\-94.29082\\171\\75.19531\\-94.73438\\171\\77.14844\\-95.29037\\171\\81.05469\\-96.061\\171\\86.91406\\-98.29581\\171\\88.86719\\-99.31444\\171\\90.82031\\-99.9995\\171\\92.77344\\-101.1367\\171\\94.72656\\-101.9357\\171\\96.67969\\-103.3\\171\\100.5859\\-105.8745\\171\\104.4922\\-108.7743\\171\\108.557\\-112.3672\\171\\110.4899\\-114.3203\\171\\112.3047\\-116.3637\\171\\115.4413\\-120.1797\\171\\116.8555\\-122.1328\\171\\117.6658\\-124.0859\\171\\118.9047\\-126.0391\\171\\119.7962\\-127.9922\\171\\120.9284\\-129.9453\\171\\121.7206\\-131.8984\\171\\122.6854\\-133.8516\\171\\123.1682\\-135.8047\\171\\123.7538\\-137.7578\\171\\124.5961\\-139.7109\\171\\125.5101\\-143.6172\\171\\126.3021\\-145.5703\\171\\126.7608\\-147.5234\\171\\127.4505\\-151.4297\\171\\127.9297\\-153.4165\\171\\128.2935\\-155.3359\\171\\128.5121\\-157.2891\\171\\128.9525\\-163.1484\\171\\129.2677\\-169.0078\\171\\129.4011\\-172.9141\\171\\129.5157\\-178.7734\\171\\129.5183\\-182.6797\\171\\129.472\\-186.5859\\171\\129.1219\\-206.1172\\171\\128.7143\\-213.9297\\171\\128.3535\\-217.8359\\171\\128.0244\\-219.7891\\171\\127.5302\\-221.7422\\171\\126.7987\\-225.6484\\171\\126.3733\\-227.6016\\171\\125.5691\\-229.5547\\171\\124.5488\\-233.4609\\171\\123.5722\\-235.4141\\171\\123.029\\-237.3672\\171\\122.3424\\-239.3203\\171\\121.2748\\-241.2734\\171\\120.3545\\-243.2266\\171\\118.1641\\-246.6959\\171\\117.8032\\-247.1328\\171\\116.8729\\-249.0859\\171\\115.5286\\-251.0391\\171\\114.3392\\-252.9922\\171\\112.9338\\-254.9453\\171\\109.9121\\-258.8516\\171\\108.6972\\-260.8047\\171\\104.4922\\-265.5573\\171\\102.5391\\-267.8117\\171\\100.5859\\-269.6665\\171\\97.71767\\-272.5234\\171\\95.83144\\-274.4766\\171\\88.86719\\-280.5949\\171\\86.91406\\-281.8527\\171\\83.00781\\-284.8593\\171\\81.05469\\-286.2332\\171\\79.10156\\-287.4298\\171\\77.14844\\-288.7344\\171\\75.19531\\-289.5298\\171\\73.24219\\-290.8284\\171\\71.28906\\-291.807\\171\\69.33594\\-292.9779\\171\\65.42969\\-294.8267\\171\\63.47656\\-295.4169\\171\\61.52344\\-296.4201\\171\\59.57031\\-297.0023\\171\\55.66406\\-298.6554\\171\\53.71094\\-299.264\\171\\51.75781\\-300.1079\\171\\49.80469\\-300.6564\\171\\45.89844\\-301.578\\171\\43.94531\\-302.2715\\171\\41.99219\\-302.6582\\171\\40.03906\\-302.9011\\171\\38.08594\\-303.2481\\171\\34.17969\\-304.3228\\171\\28.32031\\-305.179\\171\\24.41406\\-306.0084\\171\\22.46094\\-306.2485\\171\\18.55469\\-306.5421\\171\\10.74219\\-306.9647\\171\\6.835938\\-307.1012\\171\\2.929688\\-307.1721\\171\\-2.929688\\-307.11\\171\\-8.789063\\-306.8859\\171\\-16.60156\\-306.4564\\171\\-20.50781\\-306.1425\\171"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002215"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "232"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "212"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-24.41406\\-305.7787\\173\\-26.36719\\-305.3028\\173\\-28.32031\\-304.963\\173\\-32.22656\\-304.3905\\173\\-34.17969\\-303.9221\\173\\-36.13281\\-303.2852\\173\\-40.03906\\-302.6399\\173\\-41.99219\\-302.2039\\173\\-43.94531\\-301.4995\\173\\-47.85156\\-300.5623\\173\\-49.80469\\-299.8749\\173\\-51.75781\\-299.048\\173\\-53.71094\\-298.4345\\173\\-55.66406\\-297.4195\\173\\-57.61719\\-296.8113\\173\\-61.52344\\-295.1521\\173\\-63.47656\\-294.5125\\173\\-65.42969\\-293.3666\\173\\-67.38281\\-292.5309\\173\\-69.33594\\-291.2547\\173\\-71.56033\\-290.1016\\173\\-75.05267\\-288.1484\\173\\-77.14844\\-286.9216\\173\\-81.05469\\-283.9434\\173\\-83.00781\\-282.7317\\173\\-84.96094\\-281.209\\173\\-88.38264\\-278.3828\\173\\-88.86719\\-277.9161\\173\\-92.77344\\-274.812\\173\\-95.33435\\-272.5234\\173\\-101.381\\-266.6641\\173\\-103.2157\\-264.7109\\173\\-104.9045\\-262.7578\\173\\-106.7016\\-260.8047\\173\\-108.3984\\-258.7858\\173\\-112.3047\\-253.75\\173\\-114.2982\\-251.0391\\173\\-116.9067\\-247.1328\\173\\-117.7636\\-245.1797\\173\\-118.1641\\-244.6546\\173\\-120.1248\\-241.2734\\173\\-122.0783\\-237.3672\\173\\-122.9013\\-235.4141\\173\\-123.421\\-233.4609\\173\\-124.3234\\-231.5078\\173\\-125.4401\\-227.6016\\173\\-126.3148\\-225.6484\\173\\-127.3391\\-221.7422\\173\\-127.9968\\-219.7891\\173\\-128.4989\\-217.8359\\173\\-129.3815\\-211.9766\\173\\-130.2154\\-208.0703\\173\\-130.7109\\-204.1641\\173\\-131.2927\\-196.3516\\173\\-131.8123\\-188.5391\\173\\-131.9444\\-182.6797\\173\\-131.9167\\-180.7266\\173\\-131.7375\\-176.8203\\173\\-131.058\\-169.0078\\173\\-130.6299\\-163.1484\\173\\-130.3545\\-161.1953\\173\\-129.4691\\-157.2891\\173\\-128.8138\\-153.3828\\173\\-128.4241\\-151.4297\\173\\-127.0739\\-147.5234\\173\\-126.5659\\-145.5703\\173\\-125.6714\\-143.6172\\173\\-124.4894\\-139.7109\\173\\-123.4961\\-137.7578\\173\\-122.9685\\-135.8047\\173\\-122.1406\\-133.8516\\173\\-118.9248\\-127.9922\\173\\-117.6147\\-126.0391\\173\\-116.7756\\-124.0859\\173\\-114.2578\\-120.375\\173\\-112.6604\\-118.2266\\173\\-110.3516\\-115.335\\173\\-107.6827\\-112.3672\\173\\-104.4922\\-109.2278\\173\\-102.5391\\-107.6211\\173\\-100.5859\\-106.335\\173\\-98.63281\\-105.3117\\173\\-96.67969\\-103.9975\\173\\-94.72656\\-103.1359\\173\\-92.77344\\-102.0886\\173\\-88.86719\\-100.981\\173\\-86.91406\\-100.2076\\173\\-84.96094\\-99.79752\\173\\-83.00781\\-99.50636\\173\\-81.05469\\-99.11101\\173\\-79.10156\\-98.43623\\173\\-77.14844\\-98.01843\\173\\-71.28906\\-97.13657\\173\\-69.33594\\-96.66142\\173\\-67.38281\\-96.32366\\173\\-65.42969\\-96.09293\\173\\-57.61719\\-95.37125\\173\\-53.71094\\-94.93179\\173\\-51.75781\\-94.66037\\173\\-47.85156\\-94.32058\\173\\-41.99219\\-94.07495\\173\\-36.13281\\-93.98026\\173\\-24.41406\\-94.01392\\173\\-20.50781\\-94.19662\\173\\-18.55469\\-94.39706\\173\\-16.60156\\-94.70448\\173\\-10.74219\\-96.08174\\173\\-9.036847\\-96.74219\\173\\-4.882813\\-98.49303\\173\\-2.929688\\-99.43068\\173\\0.9765625\\-100.1307\\173\\2.929688\\-100.2787\\173\\4.882813\\-100.1602\\173\\6.835938\\-99.90697\\173\\8.789063\\-99.5535\\173\\10.74219\\-98.88605\\173\\12.69531\\-97.96576\\173\\14.64844\\-97.31842\\173\\16.60156\\-96.56654\\173\\18.55469\\-96.0574\\173\\24.41406\\-95.2193\\173\\28.32031\\-94.46354\\173\\32.22656\\-94.13164\\173\\41.99219\\-93.74316\\173\\53.71094\\-93.51343\\173\\55.66406\\-93.57859\\173\\63.47656\\-93.71894\\173\\69.33594\\-93.9895\\173\\71.28906\\-94.19156\\173\\73.24219\\-94.53588\\173\\77.14844\\-95.46234\\173\\81.05469\\-96.21586\\173\\83.00781\\-97.00028\\173\\84.96094\\-97.67197\\173\\86.91406\\-98.4529\\173\\88.86719\\-99.39466\\173\\90.82031\\-100.1008\\173\\92.77344\\-101.2357\\173\\94.72656\\-102.0445\\173\\98.63281\\-104.7952\\173\\100.5859\\-105.9366\\173\\104.4922\\-108.8672\\173\\106.4453\\-110.6319\\173\\108.4927\\-112.3672\\173\\110.4267\\-114.3203\\173\\112.3047\\-116.4095\\173\\115.4441\\-120.1797\\173\\116.89\\-122.1328\\173\\117.7308\\-124.0859\\173\\118.9616\\-126.0391\\173\\121.0054\\-129.9453\\173\\122.7607\\-133.8516\\173\\123.2311\\-135.8047\\173\\124.6955\\-139.7109\\173\\125.1281\\-141.6641\\173\\125.6946\\-143.6172\\173\\126.4793\\-145.5703\\173\\127.2583\\-149.4766\\173\\128.1924\\-153.3828\\173\\128.4629\\-155.3359\\173\\128.8272\\-159.2422\\173\\129.098\\-163.1484\\173\\129.5296\\-170.9609\\173\\129.7531\\-176.8203\\173\\129.7675\\-182.6797\\173\\129.71\\-186.5859\\173\\129.541\\-190.4922\\173\\129.555\\-192.4453\\173\\129.2465\\-206.1172\\173\\129.0551\\-210.0234\\173\\128.8097\\-213.9297\\173\\128.4768\\-217.8359\\173\\128.1906\\-219.7891\\173\\127.2879\\-223.6953\\173\\126.5228\\-227.6016\\173\\125.7556\\-229.5547\\173\\125.1267\\-231.5078\\173\\124.6491\\-233.4609\\173\\123.6884\\-235.4141\\173\\122.465\\-239.3203\\173\\121.3679\\-241.2734\\173\\120.4834\\-243.2266\\173\\119.1617\\-245.1797\\173\\117.9445\\-247.1328\\173\\116.945\\-249.0859\\173\\115.6315\\-251.0391\\173\\114.4968\\-252.9922\\173\\110.0757\\-258.8516\\173\\108.8625\\-260.8047\\173\\103.6794\\-266.6641\\173\\102.011\\-268.6172\\173\\100.5859\\-269.8912\\173\\97.94081\\-272.5234\\173\\96.08624\\-274.4766\\173\\92.77344\\-277.3448\\173\\90.82031\\-279.1734\\173\\88.86719\\-280.8891\\173\\84.96094\\-283.5493\\173\\84.14713\\-284.2422\\173\\81.05469\\-286.5821\\173\\79.10156\\-287.6735\\173\\77.14844\\-288.9234\\173\\75.19531\\-289.8174\\173\\74.84267\\-290.1016\\173\\71.28906\\-292.2055\\173\\67.80876\\-294.0078\\173\\67.38281\\-294.2918\\173\\63.47656\\-295.6767\\173\\61.52344\\-296.6445\\173\\59.57031\\-297.1859\\173\\57.61719\\-298.1846\\173\\53.71094\\-299.5329\\173\\51.75781\\-300.3555\\173\\47.85156\\-301.2485\\173\\43.94531\\-302.4651\\173\\40.03906\\-303.034\\173\\38.08594\\-303.4995\\173\\36.13281\\-304.1302\\173\\34.17969\\-304.4996\\173\\30.27344\\-305.0451\\173\\28.32031\\-305.4097\\173\\26.36719\\-305.9009\\173\\24.41406\\-306.2062\\173\\18.55469\\-306.6926\\173\\10.74219\\-307.1754\\173\\6.835938\\-307.3427\\173\\2.929688\\-307.441\\173\\-2.929688\\-307.3776\\173\\-8.789063\\-307.128\\173\\-14.64844\\-306.7787\\173\\-20.50781\\-306.3651\\173\\-22.46094\\-306.1425\\173"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002214"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "233"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "213"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.882813\\-307.6246\\175\\-8.789063\\-307.414\\175\\-14.64844\\-306.9991\\175\\-20.50781\\-306.5481\\175\\-24.41406\\-306.1135\\175\\-28.32031\\-305.2235\\175\\-34.17969\\-304.2817\\175\\-38.08594\\-303.1087\\175\\-41.99219\\-302.4651\\175\\-45.89844\\-301.2052\\175\\-49.80469\\-300.2358\\175\\-51.75781\\-299.3362\\175\\-53.71094\\-298.6922\\175\\-57.61719\\-297.0088\\175\\-59.57031\\-296.3583\\175\\-61.52344\\-295.3287\\175\\-63.47656\\-294.731\\175\\-65.42969\\-293.6643\\175\\-67.38281\\-292.7831\\175\\-69.33594\\-291.5326\\175\\-71.28906\\-290.6113\\175\\-73.24219\\-289.329\\175\\-75.19531\\-288.4472\\175\\-77.14844\\-287.1417\\175\\-79.10156\\-285.6472\\175\\-81.05469\\-284.3515\\175\\-83.00781\\-282.9465\\175\\-84.96094\\-281.4436\\175\\-92.77344\\-275.139\\175\\-94.72656\\-273.3772\\175\\-101.6576\\-266.6641\\175\\-106.4453\\-261.5064\\175\\-108.7708\\-258.8516\\175\\-111.611\\-254.9453\\175\\-112.3047\\-254.1595\\175\\-114.2578\\-251.5385\\175\\-114.7122\\-251.0391\\175\\-117.1091\\-247.1328\\175\\-119.2522\\-243.2266\\175\\-120.5627\\-241.2734\\175\\-121.3637\\-239.3203\\175\\-122.4623\\-237.3672\\175\\-123.7027\\-233.4609\\175\\-124.6202\\-231.5078\\175\\-125.1079\\-229.5547\\175\\-125.8089\\-227.6016\\175\\-126.6149\\-225.6484\\175\\-127.0919\\-223.6953\\175\\-128.319\\-219.7891\\175\\-128.6982\\-217.8359\\175\\-129.2717\\-213.9297\\175\\-129.6405\\-211.9766\\175\\-130.1122\\-210.0234\\175\\-130.4599\\-208.0703\\175\\-130.6792\\-206.1172\\175\\-131.0075\\-202.2109\\175\\-131.5499\\-196.3516\\175\\-132.0354\\-190.4922\\175\\-132.1825\\-186.5859\\175\\-132.2229\\-182.6797\\175\\-132.1508\\-178.7734\\175\\-131.8735\\-174.8672\\175\\-131.1868\\-169.0078\\175\\-130.7239\\-163.1484\\175\\-130.49\\-161.1953\\175\\-130.1251\\-159.2422\\175\\-129.6152\\-157.2891\\175\\-128.5073\\-151.4297\\175\\-127.1474\\-147.5234\\175\\-126.6402\\-145.5703\\175\\-125.7957\\-143.6172\\175\\-125.0893\\-141.6641\\175\\-124.5488\\-139.7109\\175\\-123.5619\\-137.7578\\175\\-122.9984\\-135.8047\\175\\-122.0703\\-133.6176\\175\\-120.1399\\-129.9453\\175\\-118.1641\\-126.6161\\175\\-117.7107\\-126.0391\\175\\-116.8512\\-124.0859\\175\\-114.2578\\-120.209\\175\\-110.3516\\-115.2188\\175\\-107.7542\\-112.3672\\175\\-104.4922\\-109.1934\\175\\-102.5391\\-107.6081\\175\\-100.5859\\-106.3781\\175\\-98.63281\\-105.3485\\175\\-96.67969\\-104.0603\\175\\-94.72656\\-103.2193\\175\\-92.77344\\-102.1739\\175\\-88.86719\\-101.1201\\175\\-86.91406\\-100.3663\\175\\-84.96094\\-99.8922\\175\\-81.05469\\-99.27155\\175\\-77.14844\\-98.16213\\175\\-71.28906\\-97.33149\\175\\-67.38281\\-96.53049\\175\\-65.42969\\-96.24242\\175\\-53.71094\\-95.20476\\175\\-47.85156\\-94.53588\\175\\-41.99219\\-94.25227\\175\\-36.13281\\-94.14428\\175\\-28.32031\\-94.17396\\175\\-24.41406\\-94.21347\\175\\-20.50781\\-94.45404\\175\\-18.55469\\-94.74969\\175\\-12.69531\\-95.8539\\175\\-10.74219\\-96.32808\\175\\-8.789063\\-97.23047\\175\\-6.835938\\-97.92606\\175\\-4.882813\\-98.93761\\175\\-2.929688\\-99.63259\\175\\0.9765625\\-100.4456\\175\\2.929688\\-100.6242\\175\\4.882813\\-100.4882\\175\\8.789063\\-99.76657\\175\\10.74219\\-99.15608\\175\\12.69531\\-98.21636\\175\\16.60156\\-97.0123\\175\\18.55469\\-96.34768\\175\\20.50781\\-95.99232\\175\\26.36719\\-95.25059\\175\\30.27344\\-94.58307\\175\\32.22656\\-94.39986\\175\\36.13281\\-94.21347\\175\\41.99219\\-93.88352\\175\\51.75781\\-93.70596\\175\\57.61719\\-93.73693\\175\\63.47656\\-93.83015\\175\\69.33594\\-94.11924\\175\\71.28906\\-94.38331\\175\\75.19531\\-95.25755\\175\\79.10156\\-95.91411\\175\\81.05469\\-96.42782\\175\\83.00781\\-97.21471\\175\\84.96094\\-97.84784\\175\\88.86719\\-99.49263\\175\\90.82031\\-100.2121\\175\\92.77344\\-101.3186\\175\\94.72656\\-102.14\\175\\98.63281\\-104.9104\\175\\100.5859\\-106.0069\\175\\103.8959\\-108.4609\\175\\108.4073\\-112.3672\\175\\110.3937\\-114.3203\\175\\112.3047\\-116.4546\\175\\115.4735\\-120.1797\\175\\116.9241\\-122.1328\\175\\117.8148\\-124.0859\\175\\118.1641\\-124.5417\\175\\120.1399\\-127.9922\\175\\122.0703\\-132.0277\\175\\122.8455\\-133.8516\\175\\123.3048\\-135.8047\\175\\124.1379\\-137.7578\\175\\124.8014\\-139.7109\\175\\125.2497\\-141.6641\\175\\126.6365\\-145.5703\\175\\127.469\\-149.4766\\175\\128.0105\\-151.4297\\175\\128.4026\\-153.3828\\175\\128.9818\\-159.2422\\175\\129.8125\\-170.9609\\175\\130.0692\\-176.8203\\175\\130.0974\\-178.7734\\175\\130.0125\\-186.5859\\175\\129.7969\\-190.4922\\175\\129.8119\\-192.4453\\175\\129.71\\-196.3516\\175\\129.5526\\-200.2578\\175\\129.4585\\-204.1641\\175\\129.2804\\-208.0703\\175\\128.9235\\-213.9297\\175\\128.5903\\-217.8359\\175\\128.3562\\-219.7891\\175\\127.9819\\-221.7422\\175\\127.4384\\-223.6953\\175\\126.6396\\-227.6016\\175\\125.9993\\-229.5547\\175\\125.2116\\-231.5078\\175\\124.7321\\-233.4609\\175\\123.8206\\-235.4141\\175\\122.565\\-239.3203\\175\\121.4644\\-241.2734\\175\\120.5901\\-243.2266\\175\\119.2367\\-245.1797\\175\\117.0258\\-249.0859\\175\\115.7294\\-251.0391\\175\\114.632\\-252.9922\\175\\112.3047\\-256.0668\\175\\111.5951\\-256.8984\\175\\109.0071\\-260.8047\\175\\107.3255\\-262.7578\\175\\105.5415\\-264.7109\\175\\103.8793\\-266.6641\\175\\102.5391\\-268.3688\\175\\100.5859\\-270.2173\\175\\98.26753\\-272.5234\\175\\96.67969\\-274.2568\\175\\94.17628\\-276.4297\\175\\92.77344\\-277.5627\\175\\90.82031\\-279.4044\\175\\88.86719\\-281.1367\\175\\86.91406\\-282.5947\\175\\84.96094\\-283.8154\\175\\84.48476\\-284.2422\\175\\81.05469\\-286.8289\\175\\75.35629\\-290.1016\\175\\73.24219\\-291.2292\\175\\71.28906\\-292.5242\\175\\69.33594\\-293.4158\\175\\67.38281\\-294.5559\\175\\65.42969\\-295.1686\\175\\63.47656\\-296.0462\\175\\61.52344\\-296.8141\\175\\59.57031\\-297.4289\\175\\57.61719\\-298.4648\\175\\55.66406\\-299.0551\\175\\53.6941\\-299.8672\\175\\51.75781\\-300.5357\\175\\47.85156\\-301.4532\\175\\45.89844\\-302.1529\\175\\43.94531\\-302.6145\\175\\40.03906\\-303.218\\175\\38.08594\\-303.84\\175\\36.13281\\-304.3507\\175\\30.27344\\-305.2533\\175\\26.36719\\-306.133\\175\\22.46094\\-306.5438\\175\\18.55469\\-306.8529\\175\\8.789063\\-307.537\\175\\2.929688\\-307.7484\\175\\-0.9765625\\-307.7484\\175"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002213"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "243"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "214"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.789063\\-307.7636\\177\\-20.50781\\-306.7191\\177\\-24.41406\\-306.3396\\177\\-26.36719\\-306.0627\\177\\-30.27344\\-305.1418\\177\\-34.17969\\-304.5196\\177\\-36.13281\\-304.12\\177\\-38.08594\\-303.3922\\177\\-40.03906\\-302.9596\\177\\-41.99219\\-302.6582\\177\\-43.94531\\-302.2261\\177\\-45.89844\\-301.4646\\177\\-49.80469\\-300.4924\\177\\-53.71094\\-298.927\\177\\-55.66406\\-298.2523\\177\\-57.61719\\-297.2339\\177\\-59.57031\\-296.6338\\177\\-61.52344\\-295.5912\\177\\-63.47656\\-294.9237\\177\\-65.42969\\-294.0475\\177\\-71.28906\\-290.8636\\177\\-73.24219\\-289.5313\\177\\-75.19531\\-288.717\\177\\-81.05469\\-284.6729\\177\\-84.22636\\-282.2891\\177\\-89.21712\\-278.3828\\177\\-92.77344\\-275.3867\\177\\-94.72656\\-273.6386\\177\\-101.9304\\-266.6641\\177\\-105.5242\\-262.7578\\177\\-106.4453\\-261.8301\\177\\-109.0913\\-258.8516\\177\\-110.5763\\-256.8984\\177\\-111.9366\\-254.9453\\177\\-114.998\\-251.0391\\177\\-116.2848\\-249.0859\\177\\-117.3073\\-247.1328\\177\\-118.6336\\-245.1797\\177\\-119.5636\\-243.2266\\177\\-120.862\\-241.2734\\177\\-121.6916\\-239.3203\\177\\-122.7445\\-237.3672\\177\\-123.2879\\-235.4141\\177\\-124.1234\\-233.4609\\177\\-124.8455\\-231.5078\\177\\-125.3551\\-229.5547\\177\\-126.2695\\-227.6016\\177\\-127.364\\-223.6953\\177\\-128.0805\\-221.7422\\177\\-128.5549\\-219.7891\\177\\-129.5046\\-213.9297\\177\\-130.0135\\-211.9766\\177\\-130.4006\\-210.0234\\177\\-130.6676\\-208.0703\\177\\-131.2188\\-202.2109\\177\\-131.7368\\-198.3047\\177\\-132.1289\\-194.3984\\177\\-132.3932\\-188.5391\\177\\-132.4463\\-182.6797\\177\\-132.3853\\-178.7734\\177\\-132.1928\\-174.8672\\177\\-131.9975\\-172.9141\\177\\-131.4026\\-169.0078\\177\\-130.9781\\-165.1016\\177\\-130.6345\\-161.1953\\177\\-130.3236\\-159.2422\\177\\-129.3425\\-155.3359\\177\\-128.6139\\-151.4297\\177\\-128.039\\-149.4766\\177\\-127.2579\\-147.5234\\177\\-126.7338\\-145.5703\\177\\-125.179\\-141.6641\\177\\-124.6449\\-139.7109\\177\\-123.6792\\-137.7578\\177\\-122.3888\\-133.8516\\177\\-121.2658\\-131.8984\\177\\-120.3664\\-129.9453\\177\\-118.1641\\-126.395\\177\\-117.8733\\-126.0391\\177\\-116.9529\\-124.0859\\177\\-115.6237\\-122.1328\\177\\-114.4333\\-120.1797\\177\\-112.8956\\-118.2266\\177\\-111.2241\\-116.2734\\177\\-110.3516\\-115.0647\\177\\-107.8575\\-112.3672\\177\\-104.4922\\-109.1406\\177\\-102.5391\\-107.5807\\177\\-100.5859\\-106.3925\\177\\-98.63281\\-105.3845\\177\\-96.67969\\-104.1255\\177\\-94.72656\\-103.2817\\177\\-92.77344\\-102.2542\\177\\-90.82031\\-101.6835\\177\\-88.86719\\-101.2331\\177\\-86.91406\\-100.5177\\177\\-84.96094\\-99.97897\\177\\-81.05469\\-99.3904\\177\\-79.10156\\-98.93227\\177\\-77.14844\\-98.32832\\177\\-75.19531\\-97.98282\\177\\-69.33594\\-97.19711\\177\\-65.42969\\-96.41666\\177\\-63.47656\\-96.20592\\177\\-53.71094\\-95.40169\\177\\-49.80469\\-95.05475\\177\\-45.89844\\-94.64633\\177\\-41.99219\\-94.43584\\177\\-38.08594\\-94.34091\\177\\-34.17969\\-94.33377\\177\\-28.32031\\-94.37823\\177\\-24.41406\\-94.47062\\177\\-22.46094\\-94.58624\\177\\-20.50781\\-94.82876\\177\\-14.64844\\-95.71511\\177\\-12.69531\\-96.06696\\177\\-10.74219\\-96.67561\\177\\-8.789063\\-97.49805\\177\\-6.835938\\-98.16856\\177\\-4.882813\\-99.25969\\177\\0.9765625\\-100.8362\\177\\2.929688\\-100.9927\\177\\4.882813\\-100.8646\\177\\8.789063\\-99.97473\\177\\10.74219\\-99.39561\\177\\12.69531\\-98.54562\\177\\14.64844\\-97.82909\\177\\16.60156\\-97.34361\\177\\18.55469\\-96.73456\\177\\20.50781\\-96.23512\\177\\22.46094\\-95.9342\\177\\26.36719\\-95.53339\\177\\30.27344\\-95.06706\\177\\38.08594\\-94.28098\\177\\41.99219\\-94.0613\\177\\49.80469\\-93.87169\\177\\53.71094\\-93.84191\\177\\59.57031\\-93.86609\\177\\65.42969\\-94.01873\\177\\69.33594\\-94.3041\\177\\71.28906\\-94.6027\\177\\75.19531\\-95.42168\\177\\79.10156\\-96.04971\\177\\81.05469\\-96.66142\\177\\83.00781\\-97.41067\\177\\84.96094\\-97.99696\\177\\86.91406\\-98.88311\\177\\90.82031\\-100.3351\\177\\92.77344\\-101.4059\\177\\94.72656\\-102.2533\\177\\98.07832\\-104.5547\\177\\98.63281\\-105.0028\\177\\100.5859\\-106.0818\\177\\104.4922\\-108.9967\\177\\108.3567\\-112.3672\\177\\110.377\\-114.3203\\177\\114.2578\\-118.695\\177\\115.5086\\-120.1797\\177\\116.9577\\-122.1328\\177\\117.9181\\-124.0859\\177\\120.3166\\-127.9922\\177\\122.1549\\-131.8984\\177\\122.9377\\-133.8516\\177\\123.4037\\-135.8047\\177\\124.3234\\-137.7578\\177\\125.4025\\-141.6641\\177\\126.2374\\-143.6172\\177\\127.219\\-147.5234\\177\\128.2725\\-151.4297\\177\\128.5749\\-153.3828\\177\\129.1367\\-159.2422\\177\\129.4347\\-163.1484\\177\\129.9991\\-169.0078\\177\\130.1379\\-170.9609\\177\\130.331\\-176.8203\\177\\130.331\\-182.6797\\177\\130.2748\\-186.5859\\177\\130.1525\\-190.4922\\177\\130.0841\\-194.3984\\177\\129.8125\\-200.2578\\177\\129.6699\\-204.1641\\177\\129.0415\\-213.9297\\177\\128.5003\\-219.7891\\177\\128.2021\\-221.7422\\177\\127.6287\\-223.6953\\177\\126.7488\\-227.6016\\177\\126.2004\\-229.5547\\177\\125.2975\\-231.5078\\177\\124.8079\\-233.4609\\177\\123.2167\\-237.3672\\177\\122.665\\-239.3203\\177\\121.5728\\-241.2734\\177\\120.7031\\-243.2266\\177\\119.3305\\-245.1797\\177\\118.2726\\-247.1328\\177\\114.7702\\-252.9922\\177\\112.3047\\-256.2347\\177\\111.7188\\-256.8984\\177\\110.5453\\-258.8516\\177\\109.1551\\-260.8047\\177\\105.7414\\-264.7109\\177\\104.1297\\-266.6641\\177\\102.6476\\-268.6172\\177\\100.5859\\-270.5936\\177\\98.67126\\-272.5234\\177\\96.67969\\-274.6489\\177\\92.77344\\-277.8772\\177\\90.82031\\-279.6737\\177\\88.86719\\-281.3575\\177\\86.91406\\-282.875\\177\\84.96094\\-284.1519\\177\\81.05469\\-287.0413\\177\\79.10156\\-288.2823\\177\\77.14844\\-289.2601\\177\\75.19531\\-290.5227\\177\\73.24219\\-291.4605\\177\\71.28906\\-292.7842\\177\\69.33594\\-293.71\\177\\67.38281\\-294.7613\\177\\65.42969\\-295.3685\\177\\63.47656\\-296.3795\\177\\61.52344\\-297.0015\\177\\59.57031\\-297.7873\\177\\57.61719\\-298.6859\\177\\55.66406\\-299.2965\\177\\53.71094\\-300.1794\\177\\49.80469\\-301.1428\\177\\47.85156\\-301.705\\177\\45.89844\\-302.37\\177\\43.94531\\-302.7411\\177\\41.99219\\-303.0022\\177\\40.03906\\-303.4661\\177\\38.08594\\-304.1404\\177\\36.13281\\-304.5182\\177\\32.22656\\-305.0953\\177\\28.32031\\-306.0084\\177\\26.36719\\-306.2948\\177\\22.46094\\-306.6823\\177\\12.69531\\-307.5231\\177\\10.74219\\-307.7184\\177\\6.835938\\-307.9274\\177\\0.9765625\\-308.0416\\177\\-4.882813\\-307.9557\\177"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002212"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "244"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "215"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-12.69531\\-307.7484\\179\\-20.50781\\-306.9019\\179\\-26.36719\\-306.3059\\179\\-28.32031\\-305.9971\\179\\-30.27344\\-305.4739\\179\\-32.22656\\-305.0484\\179\\-36.13281\\-304.4158\\179\\-40.03906\\-303.1851\\179\\-43.94531\\-302.4898\\179\\-47.85156\\-301.163\\179\\-49.80469\\-300.7282\\179\\-51.75781\\-300.1472\\179\\-53.71094\\-299.2029\\179\\-55.66406\\-298.5669\\179\\-57.61719\\-297.5546\\179\\-59.57031\\-296.8492\\179\\-63.47656\\-295.1072\\179\\-65.42969\\-294.3998\\179\\-67.38281\\-293.2614\\179\\-69.33594\\-292.3607\\179\\-72.88954\\-290.1016\\179\\-73.24219\\-289.8152\\179\\-75.19531\\-288.926\\179\\-77.14844\\-287.6164\\179\\-79.10156\\-286.4247\\179\\-82.00097\\-284.2422\\179\\-83.00781\\-283.3988\\179\\-86.91406\\-280.6139\\179\\-89.59029\\-278.3828\\179\\-94.72656\\-273.908\\179\\-96.2021\\-272.5234\\179\\-98.63281\\-270.1077\\179\\-102.2611\\-266.6641\\179\\-103.9931\\-264.7109\\179\\-107.666\\-260.8047\\179\\-109.3686\\-258.8516\\179\\-112.4148\\-254.9453\\179\\-115.2649\\-251.0391\\179\\-116.6346\\-249.0859\\179\\-117.5626\\-247.1328\\179\\-118.9242\\-245.1797\\179\\-121.1379\\-241.2734\\179\\-122.1401\\-239.3203\\179\\-122.9741\\-237.3672\\179\\-123.5453\\-235.4141\\179\\-124.5021\\-233.4609\\179\\-125.0647\\-231.5078\\179\\-125.7289\\-229.5547\\179\\-126.5855\\-227.6016\\179\\-127.1042\\-225.6484\\179\\-128.4056\\-221.7422\\179\\-129.3945\\-215.8828\\179\\-130.3443\\-211.9766\\179\\-130.6345\\-210.0234\\179\\-131.2476\\-204.1641\\179\\-131.9167\\-200.2578\\179\\-132.172\\-198.3047\\179\\-132.4348\\-194.3984\\179\\-132.6082\\-188.5391\\179\\-132.6201\\-180.7266\\179\\-132.4496\\-174.8672\\179\\-132.1178\\-170.9609\\179\\-131.7368\\-169.0078\\179\\-131.1335\\-165.1016\\179\\-130.7527\\-161.1953\\179\\-130.494\\-159.2422\\179\\-130.0841\\-157.2891\\179\\-129.5046\\-155.3359\\179\\-128.726\\-151.4297\\179\\-128.2286\\-149.4766\\179\\-127.4231\\-147.5234\\179\\-126.2374\\-143.6172\\179\\-125.3045\\-141.6641\\179\\-124.7672\\-139.7109\\179\\-123.8632\\-137.7578\\179\\-123.1439\\-135.8047\\179\\-122.5318\\-133.8516\\179\\-121.4095\\-131.8984\\179\\-120.5665\\-129.9453\\179\\-119.246\\-127.9922\\179\\-117.0631\\-124.0859\\179\\-115.7964\\-122.1328\\179\\-114.6356\\-120.1797\\179\\-111.3641\\-116.2734\\179\\-110.3516\\-114.9095\\179\\-107.9685\\-112.3672\\179\\-104.4922\\-109.083\\179\\-102.5391\\-107.5541\\179\\-100.5859\\-106.3781\\179\\-98.63281\\-105.3845\\179\\-96.67969\\-104.1603\\179\\-94.72656\\-103.3268\\179\\-92.77344\\-102.3254\\179\\-90.82031\\-101.7354\\179\\-88.86719\\-101.2974\\179\\-84.96094\\-100.046\\179\\-81.05469\\-99.47767\\179\\-79.10156\\-99.08727\\179\\-77.14844\\-98.49587\\179\\-75.19531\\-98.10297\\179\\-69.33594\\-97.36919\\179\\-65.42969\\-96.63368\\179\\-61.52344\\-96.14418\\179\\-49.80469\\-95.27734\\179\\-45.89844\\-94.9329\\179\\-41.99219\\-94.65936\\179\\-38.08594\\-94.53774\\179\\-32.22656\\-94.56481\\179\\-28.32031\\-94.61761\\179\\-24.41406\\-94.79707\\179\\-22.46094\\-94.96052\\179\\-16.60156\\-95.63801\\179\\-12.69531\\-96.30611\\179\\-10.74219\\-97.08099\\179\\-8.789063\\-97.71875\\179\\-6.835938\\-98.45795\\179\\-4.882813\\-99.47305\\179\\-2.929688\\-99.98288\\179\\-0.9494357\\-100.6484\\179\\0.9765625\\-101.1266\\179\\2.929688\\-101.2548\\179\\4.882813\\-101.16\\179\\6.835938\\-100.8239\\179\\10.74219\\-99.65974\\179\\12.69531\\-98.95824\\179\\14.64844\\-98.10822\\179\\18.55469\\-97.13932\\179\\20.50781\\-96.56268\\179\\22.46094\\-96.16737\\179\\24.41406\\-95.92936\\179\\28.32031\\-95.57149\\179\\34.17969\\-95.10522\\179\\38.08594\\-94.53399\\179\\40.03906\\-94.35883\\179\\45.89844\\-94.1235\\179\\49.80469\\-94.0066\\179\\59.57031\\-93.95115\\179\\65.42969\\-94.14012\\179\\69.33594\\-94.52338\\179\\73.24219\\-95.24435\\179\\77.14844\\-95.82666\\179\\79.10156\\-96.22012\\179\\83.00781\\-97.55965\\179\\84.96094\\-98.11291\\179\\86.91406\\-99.03957\\179\\88.86719\\-99.68372\\179\\90.82031\\-100.4562\\179\\92.77344\\-101.4776\\179\\94.72656\\-102.3334\\179\\96.67969\\-103.6188\\179\\98.63281\\-105.0594\\179\\100.5859\\-106.1348\\179\\102.5391\\-107.5227\\179\\104.4922\\-109.0161\\179\\108.3246\\-112.3672\\179\\110.377\\-114.3203\\179\\114.2578\\-118.6508\\179\\115.5354\\-120.1797\\179\\116.9859\\-122.1328\\179\\119.1782\\-126.0391\\179\\120.4533\\-127.9922\\179\\121.2792\\-129.9453\\179\\122.309\\-131.8984\\179\\123.0167\\-133.8516\\179\\123.5188\\-135.8047\\179\\124.4796\\-137.7578\\179\\125.5691\\-141.6641\\179\\126.4531\\-143.6172\\179\\127.4116\\-147.5234\\179\\128.039\\-149.4766\\179\\128.4629\\-151.4297\\179\\128.7302\\-153.3828\\179\\129.1246\\-157.2891\\179\\129.4691\\-161.1953\\179\\129.9537\\-165.1016\\179\\130.1379\\-167.0547\\179\\130.4509\\-172.9141\\179\\130.54\\-178.7734\\179\\130.4814\\-186.5859\\179\\130.3777\\-192.4453\\179\\130.213\\-198.3047\\179\\129.9531\\-204.1641\\179\\129.6048\\-208.0703\\179\\129.1565\\-213.9297\\179\\128.6207\\-219.7891\\179\\128.3464\\-221.7422\\179\\127.2916\\-225.6484\\179\\126.3436\\-229.5547\\179\\125.3976\\-231.5078\\179\\124.8657\\-233.4609\\179\\124.1379\\-235.4141\\179\\123.2879\\-237.3672\\179\\122.7521\\-239.3203\\179\\121.6758\\-241.2734\\179\\120.8082\\-243.2266\\179\\119.4269\\-245.1797\\179\\118.4115\\-247.1328\\179\\115.9948\\-251.0391\\179\\114.8952\\-252.9922\\179\\112.3047\\-256.4338\\179\\111.8841\\-256.8984\\179\\110.7465\\-258.8516\\179\\109.2926\\-260.8047\\179\\105.9502\\-264.7109\\179\\102.9251\\-268.6172\\179\\100.5859\\-270.9284\\179\\96.67969\\-274.9462\\179\\94.72656\\-276.672\\179\\92.77344\\-278.2628\\179\\90.45516\\-280.3359\\179\\87.97269\\-282.2891\\179\\84.96094\\-284.5079\\179\\82.57473\\-286.1953\\179\\79.62536\\-288.1484\\179\\79.10156\\-288.563\\179\\77.14844\\-289.457\\179\\75.19531\\-290.7508\\179\\73.24219\\-291.7516\\179\\71.28906\\-292.9924\\179\\69.33594\\-294.107\\179\\67.38281\\-294.9427\\179\\65.42969\\-295.6117\\179\\63.47656\\-296.614\\179\\61.52344\\-297.2085\\179\\59.57031\\-298.1997\\179\\55.66406\\-299.5891\\179\\53.71094\\-300.4037\\179\\49.80469\\-301.3288\\179\\47.85156\\-302.0216\\179\\45.89844\\-302.5497\\179\\41.99219\\-303.1757\\179\\38.08594\\-304.3539\\179\\34.17969\\-304.9423\\179\\32.22656\\-305.2986\\179\\30.27344\\-305.8213\\179\\28.32031\\-306.2002\\179\\26.36719\\-306.4278\\179\\14.64844\\-307.6105\\179\\10.74219\\-307.9796\\179\\4.882813\\-308.1906\\179\\0.9765625\\-308.253\\179\\-2.929688\\-308.2222\\179\\-6.835938\\-308.1319\\179\\-10.74219\\-307.9149\\179"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002211"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "248"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "216"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-14.64844\\-307.8619\\181\\-20.50781\\-307.1261\\181\\-28.32031\\-306.2628\\181\\-30.27344\\-305.9009\\181\\-32.22656\\-305.35\\181\\-34.17969\\-304.9402\\181\\-38.08594\\-304.2354\\181\\-40.03906\\-303.524\\181\\-41.99219\\-303.0001\\181\\-43.94531\\-302.6826\\181\\-45.89844\\-302.2179\\181\\-47.85156\\-301.4506\\181\\-51.75781\\-300.447\\181\\-53.71094\\-299.5528\\181\\-57.61719\\-298.0361\\181\\-59.57031\\-297.0527\\181\\-61.52344\\-296.3898\\181\\-63.47656\\-295.312\\181\\-65.42969\\-294.6693\\181\\-67.38281\\-293.5479\\181\\-69.33594\\-292.6587\\181\\-71.28906\\-291.3022\\181\\-76.86492\\-288.1484\\181\\-79.10156\\-286.745\\181\\-79.72569\\-286.1953\\181\\-82.37457\\-284.2422\\181\\-83.00781\\-283.6714\\181\\-86.91406\\-280.9503\\181\\-89.90077\\-278.3828\\181\\-92.77344\\-275.8314\\181\\-94.46101\\-274.4766\\181\\-96.60645\\-272.5234\\181\\-98.63281\\-270.4627\\181\\-100.5859\\-268.768\\181\\-102.7202\\-266.6641\\181\\-104.3691\\-264.7109\\181\\-108.3984\\-260.3571\\181\\-112.3047\\-255.5829\\181\\-114.2578\\-252.9824\\181\\-116.9159\\-249.0859\\181\\-117.9445\\-247.1328\\181\\-119.179\\-245.1797\\181\\-120.5246\\-243.2266\\181\\-121.4293\\-241.2734\\181\\-122.542\\-239.3203\\181\\-123.1873\\-237.3672\\181\\-124.7836\\-233.4609\\181\\-125.3275\\-231.5078\\181\\-126.2489\\-229.5547\\181\\-127.402\\-225.6484\\181\\-128.1738\\-223.6953\\181\\-128.6563\\-221.7422\\181\\-129.3072\\-217.8359\\181\\-129.7511\\-215.8828\\181\\-130.2994\\-213.9297\\181\\-130.6077\\-211.9766\\181\\-131.0379\\-208.0703\\181\\-131.6246\\-204.1641\\181\\-132.0476\\-202.2109\\181\\-132.3184\\-200.2578\\181\\-132.4888\\-198.3047\\181\\-132.6695\\-194.3984\\181\\-132.847\\-186.5859\\181\\-132.8273\\-180.7266\\181\\-132.7295\\-176.8203\\181\\-132.5504\\-172.9141\\181\\-132.4088\\-170.9609\\181\\-132.1399\\-169.0078\\181\\-131.37\\-165.1016\\181\\-131.0852\\-163.1484\\181\\-130.6417\\-159.2422\\181\\-130.3101\\-157.2891\\181\\-129.2591\\-153.3828\\181\\-128.4395\\-149.4766\\181\\-127.6615\\-147.5234\\181\\-126.4531\\-143.6172\\181\\-125.4945\\-141.6641\\181\\-124.9007\\-139.7109\\181\\-124.1521\\-137.7578\\181\\-123.241\\-135.8047\\181\\-122.6894\\-133.8516\\181\\-121.5978\\-131.8984\\181\\-120.7406\\-129.9453\\181\\-119.4171\\-127.9922\\181\\-118.3803\\-126.0391\\181\\-116.2109\\-122.3582\\181\\-114.8358\\-120.1797\\181\\-114.2578\\-119.555\\181\\-110.3516\\-114.7424\\181\\-108.1139\\-112.3672\\181\\-104.4922\\-109.0238\\181\\-102.5391\\-107.5288\\181\\-100.5859\\-106.3501\\181\\-98.63281\\-105.3958\\181\\-96.67969\\-104.183\\181\\-94.72656\\-103.3636\\181\\-92.77344\\-102.3853\\181\\-90.82031\\-101.7819\\181\\-88.86719\\-101.3389\\181\\-84.96094\\-100.1176\\181\\-83.00781\\-99.77348\\181\\-81.05469\\-99.54239\\181\\-79.10156\\-99.21159\\181\\-75.19531\\-98.22447\\181\\-73.24219\\-97.95056\\181\\-67.38281\\-97.24526\\181\\-63.47656\\-96.53049\\181\\-59.57031\\-96.10387\\181\\-45.89844\\-95.18918\\181\\-41.99219\\-94.94682\\181\\-38.08594\\-94.82813\\181\\-32.22656\\-94.84332\\181\\-28.32031\\-94.9329\\181\\-24.41406\\-95.12843\\181\\-18.55469\\-95.63015\\181\\-14.64844\\-96.13818\\181\\-12.69531\\-96.64745\\181\\-10.74219\\-97.38377\\181\\-8.789063\\-97.93172\\181\\-6.835938\\-98.84027\\181\\-4.882813\\-99.63721\\181\\-2.929688\\-100.1837\\181\\-0.9765625\\-100.9572\\181\\0.9765625\\-101.3396\\181\\2.929688\\-101.448\\181\\4.882813\\-101.3886\\181\\6.835938\\-101.1401\\181\\8.789063\\-100.487\\181\\12.69531\\-99.30971\\181\\14.64844\\-98.42478\\181\\16.60156\\-97.86523\\181\\22.46094\\-96.48773\\181\\26.36719\\-95.93898\\181\\32.22656\\-95.55055\\181\\36.13281\\-95.17562\\181\\40.03906\\-94.70243\\181\\43.94531\\-94.41936\\181\\47.85156\\-94.21726\\181\\57.61719\\-94.05355\\181\\59.57031\\-94.05355\\181\\63.47656\\-94.16127\\181\\67.38281\\-94.45885\\181\\69.33594\\-94.73481\\181\\73.24219\\-95.39242\\181\\77.14844\\-95.95536\\181\\79.10156\\-96.38412\\181\\81.05469\\-97.12376\\181\\84.96094\\-98.24696\\181\\86.91406\\-99.16698\\181\\88.86719\\-99.78883\\181\\90.82031\\-100.5919\\181\\94.72656\\-102.4105\\181\\96.67969\\-103.6537\\181\\98.63281\\-105.1044\\181\\100.5859\\-106.1708\\181\\102.5391\\-107.5354\\181\\104.4922\\-109.0482\\181\\108.3405\\-112.3672\\181\\110.3516\\-114.2598\\181\\114.2578\\-118.5928\\181\\115.5802\\-120.1797\\181\\117.0185\\-122.1328\\181\\119.262\\-126.0391\\181\\120.5665\\-127.9922\\181\\121.3793\\-129.9453\\181\\122.4459\\-131.8984\\181\\123.6651\\-135.8047\\181\\124.6166\\-137.7578\\181\\125.1248\\-139.7109\\181\\125.7957\\-141.6641\\181\\126.6151\\-143.6172\\181\\127.0812\\-145.5703\\181\\128.2831\\-149.4766\\181\\128.8775\\-153.3828\\181\\129.5046\\-159.2422\\181\\130.0418\\-163.1484\\181\\130.3875\\-167.0547\\181\\130.5603\\-170.9609\\181\\130.6676\\-176.8203\\181\\130.6745\\-182.6797\\181\\130.5958\\-190.4922\\181\\130.4289\\-198.3047\\181\\130.2857\\-202.2109\\181\\130.0556\\-206.1172\\181\\129.4585\\-211.9766\\181\\128.7369\\-219.7891\\181\\128.4801\\-221.7422\\181\\128.0527\\-223.6953\\181\\127.4235\\-225.6484\\181\\126.459\\-229.5547\\181\\125.5006\\-231.5078\\181\\124.2872\\-235.4141\\181\\123.3788\\-237.3672\\181\\122.8285\\-239.3203\\181\\121.814\\-241.2734\\181\\120.8995\\-243.2266\\181\\119.5431\\-245.1797\\181\\118.551\\-247.1328\\181\\117.2668\\-249.0859\\181\\115.0264\\-252.9922\\181\\112.1094\\-256.8984\\181\\110.9106\\-258.8516\\181\\108.3984\\-262.1475\\181\\106.2124\\-264.7109\\181\\104.7823\\-266.6641\\181\\103.1599\\-268.6172\\181\\101.2968\\-270.5703\\181\\100.5859\\-271.1674\\181\\98.63281\\-273.2509\\181\\95.33039\\-276.4297\\181\\93.04926\\-278.3828\\181\\90.82031\\-280.3944\\181\\86.91406\\-283.2478\\181\\84.96094\\-284.7731\\181\\82.97937\\-286.1953\\181\\81.05469\\-287.419\\181\\79.10156\\-288.7799\\181\\77.14844\\-289.6953\\181\\76.64696\\-290.1016\\181\\73.37182\\-292.0547\\181\\71.28906\\-293.2093\\181\\69.33594\\-294.4321\\181\\67.38281\\-295.111\\181\\63.47656\\-296.8065\\181\\61.52344\\-297.4638\\181\\59.57031\\-298.4828\\181\\57.61719\\-299.0849\\181\\55.66406\\-299.9338\\181\\53.71094\\-300.5895\\181\\51.75781\\-301.0235\\181\\49.80469\\-301.5652\\181\\47.85156\\-302.2818\\181\\45.89844\\-302.6826\\181\\43.94531\\-302.9734\\181\\41.99219\\-303.3867\\181\\40.03906\\-304.099\\181\\38.08594\\-304.5059\\181\\34.17969\\-305.1066\\181\\30.27344\\-306.0521\\181\\28.32031\\-306.3362\\181\\20.50781\\-307.1946\\181\\16.60156\\-307.6875\\181\\12.69531\\-308.0501\\181\\6.835938\\-308.312\\181\\0.9765625\\-308.406\\181\\-2.929688\\-308.3983\\181\\-6.835938\\-308.312\\181\\-10.74219\\-308.1581\\181"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002210"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "247"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "217"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.60156\\-307.9292\\183\\-20.50781\\-307.3937\\183\\-30.27344\\-306.1974\\183\\-32.22656\\-305.7641\\183\\-34.17969\\-305.203\\183\\-38.08594\\-304.497\\183\\-40.03906\\-303.9851\\183\\-41.99219\\-303.2447\\183\\-45.89844\\-302.494\\183\\-49.80469\\-301.1505\\183\\-51.75781\\-300.6683\\183\\-53.71094\\-300.0191\\183\\-55.66406\\-299.0826\\183\\-57.61719\\-298.4228\\183\\-59.57031\\-297.309\\183\\-61.52344\\-296.6519\\183\\-63.47656\\-295.5859\\183\\-65.42969\\-294.8752\\183\\-69.33594\\-292.8848\\183\\-71.28906\\-291.5664\\183\\-73.24219\\-290.5547\\183\\-75.19531\\-289.262\\183\\-77.14844\\-288.2981\\183\\-79.10156\\-286.9992\\183\\-83.00781\\-283.9864\\183\\-84.96094\\-282.684\\183\\-86.91406\\-281.2117\\183\\-88.86719\\-279.5585\\183\\-90.82031\\-277.7526\\183\\-92.77344\\-276.1217\\183\\-94.72656\\-274.6978\\183\\-96.67969\\-272.8738\\183\\-98.961\\-270.5703\\183\\-100.5859\\-269.1543\\183\\-103.1081\\-266.6641\\183\\-104.4922\\-265.0609\\183\\-108.4699\\-260.8047\\183\\-109.8737\\-258.8516\\183\\-112.3047\\-255.9673\\183\\-114.6782\\-252.9922\\183\\-118.4346\\-247.1328\\183\\-119.4761\\-245.1797\\183\\-120.8511\\-243.2266\\183\\-121.7863\\-241.2734\\183\\-122.8381\\-239.3203\\183\\-123.427\\-237.3672\\183\\-124.4154\\-235.4141\\183\\-125.7045\\-231.5078\\183\\-126.6071\\-229.5547\\183\\-127.1517\\-227.6016\\183\\-128.5009\\-223.6953\\183\\-129.213\\-219.7891\\183\\-129.6535\\-217.8359\\183\\-130.2178\\-215.8828\\183\\-130.5958\\-213.9297\\183\\-131.3382\\-208.0703\\183\\-132.1615\\-204.1641\\183\\-132.4273\\-202.2109\\183\\-132.7431\\-198.3047\\183\\-132.9283\\-194.3984\\183\\-133.0686\\-188.5391\\183\\-133.0862\\-182.6797\\183\\-132.9542\\-176.8203\\183\\-132.63\\-170.9609\\183\\-132.172\\-167.0547\\183\\-131.2982\\-163.1484\\183\\-130.5065\\-157.2891\\183\\-130.0278\\-155.3359\\183\\-129.4316\\-153.3828\\183\\-128.6139\\-149.4766\\183\\-128.0117\\-147.5234\\183\\-127.2015\\-145.5703\\183\\-126.6506\\-143.6172\\183\\-125.7668\\-141.6641\\183\\-125.038\\-139.7109\\183\\-124.4154\\-137.7578\\183\\-123.3871\\-135.8047\\183\\-122.8503\\-133.8516\\183\\-120.923\\-129.9453\\183\\-119.665\\-127.9922\\183\\-118.6586\\-126.0391\\183\\-117.3279\\-124.0859\\183\\-116.3618\\-122.1328\\183\\-115.0076\\-120.1797\\183\\-110.3516\\-114.5383\\183\\-108.2601\\-112.3672\\183\\-104.4922\\-108.9595\\183\\-102.5391\\-107.5096\\183\\-100.5859\\-106.3081\\183\\-98.63281\\-105.3893\\183\\-96.67969\\-104.1728\\183\\-94.72656\\-103.3905\\183\\-92.77344\\-102.4376\\183\\-90.82031\\-101.8168\\183\\-86.91406\\-100.8497\\183\\-84.96094\\-100.1941\\183\\-83.00781\\-99.82882\\183\\-79.10156\\-99.31302\\183\\-77.14844\\-98.89208\\183\\-75.19531\\-98.36979\\183\\-73.24219\\-98.04256\\183\\-67.38281\\-97.39141\\183\\-65.42969\\-97.1084\\183\\-61.52344\\-96.43822\\183\\-59.57031\\-96.2225\\183\\-55.66406\\-95.94939\\183\\-47.85156\\-95.47324\\183\\-41.99219\\-95.19989\\183\\-38.08594\\-95.11459\\183\\-32.22656\\-95.10296\\183\\-26.36719\\-95.27411\\183\\-22.46094\\-95.51266\\183\\-18.55469\\-95.82465\\183\\-16.60156\\-96.05001\\183\\-14.64844\\-96.38306\\183\\-12.69531\\-97.07645\\183\\-8.789063\\-98.15905\\183\\-6.835938\\-99.17376\\183\\-2.929688\\-100.4606\\183\\-0.9765625\\-101.1998\\183\\0.9765625\\-101.5172\\183\\2.929688\\-101.6191\\183\\4.882813\\-101.5833\\183\\6.835938\\-101.373\\183\\8.789063\\-100.8407\\183\\10.74219\\-100.069\\183\\12.69531\\-99.5437\\183\\16.60156\\-98.11389\\183\\18.55469\\-97.64063\\183\\20.50781\\-97.28882\\183\\24.41406\\-96.4777\\183\\26.36719\\-96.18677\\183\\30.27344\\-95.90126\\183\\41.99219\\-94.94928\\183\\43.94531\\-94.70313\\183\\47.85156\\-94.42457\\183\\53.71094\\-94.23934\\183\\57.61719\\-94.17871\\183\\61.52344\\-94.22266\\183\\65.42969\\-94.43331\\183\\67.38281\\-94.61629\\183\\71.28906\\-95.27411\\183\\77.14844\\-96.08543\\183\\79.10156\\-96.57703\\183\\81.05469\\-97.29441\\183\\83.00781\\-97.7765\\183\\84.96094\\-98.38932\\183\\86.91406\\-99.28125\\183\\88.86719\\-99.86127\\183\\90.69653\\-100.6484\\183\\94.72656\\-102.5202\\183\\96.67969\\-103.6937\\183\\98.63281\\-105.1532\\183\\100.5859\\-106.2177\\183\\102.5391\\-107.5482\\183\\104.4922\\-109.0664\\183\\108.34\\-112.3672\\183\\110.3516\\-114.2109\\183\\114.2578\\-118.5354\\183\\116.2109\\-120.9165\\183\\118.3025\\-124.0859\\183\\119.3326\\-126.0391\\183\\120.6727\\-127.9922\\183\\121.4844\\-129.9453\\183\\122.575\\-131.8984\\183\\123.1439\\-133.8516\\183\\123.848\\-135.8047\\183\\124.7403\\-137.7578\\183\\125.2484\\-139.7109\\183\\126.0851\\-141.6641\\183\\126.7588\\-143.6172\\183\\127.2427\\-145.5703\\183\\127.9373\\-147.5234\\183\\128.4716\\-149.4766\\183\\129.0128\\-153.3828\\183\\129.4585\\-157.2891\\183\\130.099\\-161.1953\\183\\130.3236\\-163.1484\\183\\130.5804\\-167.0547\\183\\130.7043\\-170.9609\\183\\130.7932\\-176.8203\\183\\130.799\\-182.6797\\183\\130.7527\\-188.5391\\183\\130.6417\\-196.3516\\183\\130.4814\\-202.2109\\183\\130.2748\\-206.1172\\183\\130.1104\\-208.0703\\183\\129.4244\\-213.9297\\183\\128.8491\\-219.7891\\183\\128.2508\\-223.6953\\183\\127.5823\\-225.6484\\183\\126.5669\\-229.5547\\183\\125.6378\\-231.5078\\183\\124.4363\\-235.4141\\183\\123.4663\\-237.3672\\183\\122.9082\\-239.3203\\183\\122.0703\\-241.1798\\183\\120.9834\\-243.2266\\183\\119.6699\\-245.1797\\183\\118.686\\-247.1328\\183\\117.3816\\-249.0859\\183\\116.4032\\-251.0391\\183\\115.1482\\-252.9922\\183\\113.7174\\-254.9453\\183\\111.0647\\-258.8516\\183\\108.3984\\-262.4622\\183\\104.4922\\-267.3177\\183\\101.5562\\-270.5703\\183\\100.5859\\-271.439\\183\\98.63281\\-273.5255\\183\\95.62296\\-276.4297\\183\\94.72656\\-277.1321\\183\\90.82031\\-280.7161\\183\\88.65327\\-282.2891\\183\\86.91406\\-283.4304\\183\\83.00781\\-286.5026\\183\\81.05469\\-287.6375\\183\\79.10156\\-288.9757\\183\\77.14844\\-290.0121\\183\\75.19531\\-291.1763\\183\\73.24219\\-292.5272\\183\\71.28906\\-293.4723\\183\\69.33594\\-294.6651\\183\\67.38281\\-295.2786\\183\\65.42969\\-296.3092\\183\\63.47656\\-296.9807\\183\\59.57031\\-298.6922\\183\\57.61719\\-299.3134\\183\\55.66406\\-300.21\\183\\53.71094\\-300.7524\\183\\51.75781\\-301.188\\183\\47.85156\\-302.4734\\183\\43.94531\\-303.136\\183\\40.03906\\-304.2984\\183\\36.13281\\-304.9303\\183\\34.17969\\-305.308\\183\\32.22656\\-305.8213\\183\\30.27344\\-306.2148\\183\\28.32031\\-306.4694\\183\\20.50781\\-307.3776\\183\\16.60156\\-307.9274\\183\\12.69531\\-308.2222\\183\\6.835938\\-308.45\\183\\-0.9765625\\-308.5417\\183\\-6.835938\\-308.4622\\183\\-10.74219\\-308.341\\183\\-14.64844\\-308.1115\\183"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002209"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "246"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "218"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-20.50781\\-307.7181\\185\\-24.41406\\-307.1261\\185\\-30.27344\\-306.3936\\185\\-32.22656\\-306.106\\185\\-36.13281\\-305.0701\\185\\-40.03906\\-304.3178\\185\\-41.99219\\-303.6033\\185\\-43.94531\\-303.0183\\185\\-45.89844\\-302.6813\\185\\-47.85156\\-302.2012\\185\\-49.80469\\-301.4146\\185\\-53.71094\\-300.3586\\185\\-55.66406\\-299.3977\\185\\-57.61719\\-298.6814\\185\\-59.57031\\-297.6281\\185\\-61.52344\\-296.8521\\185\\-65.42969\\-295.0637\\185\\-67.38281\\-294.2838\\185\\-67.7562\\-294.0078\\185\\-73.24219\\-290.8214\\185\\-75.19531\\-289.4738\\185\\-77.14844\\-288.5801\\185\\-79.10156\\-287.2192\\185\\-81.05469\\-285.7361\\185\\-83.00781\\-284.4061\\185\\-84.96094\\-282.96\\185\\-88.29886\\-280.3359\\185\\-90.82031\\-278.1072\\185\\-92.87383\\-276.4297\\185\\-94.72656\\-275.0237\\185\\-96.67969\\-273.1861\\185\\-99.29574\\-270.5703\\185\\-101.4579\\-268.6172\\185\\-108.876\\-260.8047\\185\\-111.7497\\-256.8984\\185\\-112.3047\\-256.2957\\185\\-114.9947\\-252.9922\\185\\-116.2523\\-251.0391\\185\\-117.4074\\-249.0859\\185\\-118.7654\\-247.1328\\185\\-119.882\\-245.1797\\185\\-121.1221\\-243.2266\\185\\-122.2567\\-241.2734\\185\\-123.0589\\-239.3203\\185\\-123.7497\\-237.3672\\185\\-124.7145\\-235.4141\\185\\-125.2741\\-233.4609\\185\\-126.2275\\-231.5078\\185\\-127.4852\\-227.6016\\185\\-128.2574\\-225.6484\\185\\-128.7474\\-223.6953\\185\\-129.5245\\-219.7891\\185\\-130.1398\\-217.8359\\185\\-130.5603\\-215.8828\\185\\-131.065\\-211.9766\\185\\-131.37\\-210.0234\\185\\-132.2545\\-206.1172\\185\\-132.5063\\-204.1641\\185\\-132.8779\\-200.2578\\185\\-133.2401\\-194.3984\\185\\-133.4022\\-188.5391\\185\\-133.4022\\-182.6797\\185\\-133.3067\\-178.7734\\185\\-133.1109\\-174.8672\\185\\-132.8273\\-170.9609\\185\\-132.4348\\-167.0547\\185\\-132.1178\\-165.1016\\185\\-131.5741\\-163.1484\\185\\-131.1908\\-161.1953\\185\\-130.6535\\-157.2891\\185\\-130.2776\\-155.3359\\185\\-129.6405\\-153.3828\\185\\-129.1519\\-151.4297\\185\\-128.3033\\-147.5234\\185\\-127.4351\\-145.5703\\185\\-126.8452\\-143.6172\\185\\-126.1382\\-141.6641\\185\\-125.2032\\-139.7109\\185\\-124.6405\\-137.7578\\185\\-123.6258\\-135.8047\\185\\-123.0105\\-133.8516\\185\\-122.2141\\-131.8984\\185\\-120.1172\\-128.1007\\185\\-118.8833\\-126.0391\\185\\-117.5194\\-124.0859\\185\\-116.6426\\-122.1328\\185\\-115.1966\\-120.1797\\185\\-110.3516\\-114.3295\\185\\-108.4589\\-112.3672\\185\\-106.273\\-110.4141\\185\\-104.4922\\-108.9111\\185\\-102.5391\\-107.4906\\185\\-100.5859\\-106.2691\\185\\-98.63281\\-105.3713\\185\\-96.67969\\-104.1653\\185\\-94.72656\\-103.4145\\185\\-92.77344\\-102.4914\\185\\-90.82031\\-101.8401\\185\\-86.91406\\-100.9035\\185\\-84.96094\\-100.2427\\185\\-83.00781\\-99.86601\\185\\-79.10156\\-99.39367\\185\\-77.14844\\-99.04118\\185\\-75.19531\\-98.49587\\185\\-73.24219\\-98.13338\\185\\-65.42969\\-97.26263\\185\\-61.52344\\-96.63368\\185\\-57.61719\\-96.19778\\185\\-53.71094\\-95.94743\\185\\-47.85156\\-95.62691\\185\\-41.99219\\-95.37997\\185\\-34.17969\\-95.2933\\185\\-30.27344\\-95.34266\\185\\-24.41406\\-95.57826\\185\\-20.50781\\-95.83388\\185\\-16.60156\\-96.26567\\185\\-14.71819\\-96.74219\\185\\-12.69531\\-97.38006\\185\\-10.74219\\-97.83219\\185\\-8.789063\\-98.43623\\185\\-6.835938\\-99.40826\\185\\-4.882813\\-99.97044\\185\\-2.929688\\-100.8074\\185\\-0.9765625\\-101.3934\\185\\0.9765625\\-101.6828\\185\\2.929688\\-101.7868\\185\\4.882813\\-101.7471\\185\\6.835938\\-101.5707\\185\\8.789063\\-101.1706\\185\\10.74219\\-100.2992\\185\\14.64844\\-99.12858\\185\\16.60156\\-98.38932\\185\\18.55469\\-97.90424\\185\\26.36719\\-96.51363\\185\\32.22656\\-95.90747\\185\\34.17969\\-95.75446\\185\\41.99219\\-95.26397\\185\\47.85156\\-94.71986\\185\\53.71094\\-94.37249\\185\\55.66406\\-94.31786\\185\\61.52344\\-94.36182\\185\\65.42969\\-94.61629\\185\\67.38281\\-94.82844\\185\\71.28906\\-95.42202\\185\\75.19531\\-95.90279\\185\\77.14844\\-96.22095\\185\\81.05469\\-97.43121\\185\\83.00781\\-97.89201\\185\\84.96094\\-98.53372\\185\\86.91406\\-99.3765\\185\\88.86719\\-99.92663\\185\\92.77344\\-101.6429\\185\\94.71451\\-102.6016\\185\\96.67969\\-103.7399\\185\\98.63281\\-105.1913\\185\\100.5859\\-106.2441\\185\\102.5391\\-107.5679\\185\\104.4922\\-109.0624\\185\\108.3732\\-112.3672\\185\\110.3516\\-114.1784\\185\\112.3047\\-116.2647\\185\\114.2578\\-118.4579\\185\\116.2109\\-120.8516\\185\\118.3942\\-124.0859\\185\\119.4096\\-126.0391\\185\\120.7548\\-127.9922\\185\\121.6038\\-129.9453\\185\\122.6639\\-131.8984\\185\\123.2239\\-133.8516\\185\\124.8318\\-137.7578\\185\\125.3715\\-139.7109\\185\\126.3231\\-141.6641\\185\\127.4322\\-145.5703\\185\\128.1924\\-147.5234\\185\\128.6321\\-149.4766\\185\\129.4111\\-155.3359\\185\\130.0974\\-159.2422\\185\\130.5318\\-163.1484\\185\\130.7174\\-167.0547\\185\\130.8266\\-170.9609\\185\\130.9133\\-176.8203\\185\\130.9077\\-182.6797\\185\\130.8594\\-188.5391\\185\\130.7589\\-196.3516\\185\\130.6226\\-202.2109\\185\\130.3206\\-208.0703\\185\\129.9225\\-211.9766\\185\\129.6048\\-213.9297\\185\\128.9702\\-219.7891\\185\\128.3997\\-223.6953\\185\\127.1666\\-227.6016\\185\\126.6892\\-229.5547\\185\\125.836\\-231.5078\\185\\125.094\\-233.4609\\185\\124.5754\\-235.4141\\185\\123.5764\\-237.3672\\185\\122.987\\-239.3203\\185\\122.2257\\-241.2734\\185\\120.1172\\-244.7944\\185\\118.8064\\-247.1328\\185\\117.5109\\-249.0859\\185\\116.603\\-251.0391\\185\\112.6489\\-256.8984\\185\\109.7887\\-260.8047\\185\\108.488\\-262.7578\\185\\104.4922\\-267.6181\\185\\101.8212\\-270.5703\\185\\99.841\\-272.5234\\185\\98.63281\\-273.8233\\185\\95.94167\\-276.4297\\185\\94.72656\\-277.3944\\185\\92.77344\\-279.2207\\185\\90.82031\\-280.948\\185\\88.86719\\-282.4544\\185\\86.91406\\-283.6589\\185\\83.00781\\-286.7724\\185\\79.10156\\-289.1499\\185\\77.14844\\-290.3892\\185\\75.19531\\-291.4294\\185\\73.24219\\-292.7969\\185\\69.33594\\-294.8562\\185\\67.38281\\-295.5066\\185\\65.42969\\-296.5652\\185\\63.47656\\-297.1703\\185\\61.52344\\-298.207\\185\\57.61719\\-299.5756\\185\\55.66406\\-300.4157\\185\\51.75781\\-301.3795\\185\\49.80469\\-302.1529\\185\\47.85156\\-302.6214\\185\\45.89844\\-302.9023\\185\\43.94531\\-303.3203\\185\\41.99219\\-303.9851\\185\\40.03906\\-304.4535\\185\\36.13281\\-305.0845\\185\\32.22656\\-306.0627\\185\\30.27344\\-306.3616\\185\\24.41406\\-307.0588\\185\\18.55469\\-307.9007\\185\\14.64844\\-308.2441\\185\\8.789063\\-308.5176\\185\\2.929688\\-308.6384\\185\\-2.929688\\-308.6503\\185\\-6.835938\\-308.5963\\185\\-12.69531\\-308.4106\\185\\-16.60156\\-308.145\\185"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002208"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "246"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "219"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-22.46094\\-307.7484\\187\\-26.36719\\-307.0876\\187\\-32.22656\\-306.3169\\187\\-34.17969\\-305.9857\\187\\-36.13281\\-305.3651\\187\\-40.03906\\-304.5497\\187\\-41.99219\\-304.044\\187\\-43.94531\\-303.2505\\187\\-47.85156\\-302.461\\187\\-51.75781\\-301.0848\\187\\-53.71094\\-300.5981\\187\\-55.53288\\-299.8672\\187\\-59.57031\\-298.078\\187\\-61.52344\\-297.0562\\187\\-63.47656\\-296.3229\\187\\-65.42969\\-295.2697\\187\\-67.38281\\-294.5539\\187\\-69.33594\\-293.339\\187\\-71.28906\\-292.3347\\187\\-71.63128\\-292.0547\\187\\-74.79581\\-290.1016\\187\\-75.19531\\-289.7736\\187\\-77.14844\\-288.819\\187\\-83.00781\\-284.7525\\187\\-86.91406\\-281.6622\\187\\-88.71488\\-280.3359\\187\\-93.25761\\-276.4297\\187\\-94.72656\\-275.2565\\187\\-96.67969\\-273.4596\\187\\-98.63281\\-271.4655\\187\\-102.5391\\-267.793\\187\\-105.3863\\-264.7109\\187\\-107.3276\\-262.7578\\187\\-109.1595\\-260.8047\\187\\-110.7407\\-258.8516\\187\\-112.1501\\-256.8984\\187\\-114.2578\\-254.3232\\187\\-116.6458\\-251.0391\\187\\-117.726\\-249.0859\\187\\-118.1641\\-248.5634\\187\\-120.1172\\-245.5106\\187\\-120.4012\\-245.1797\\187\\-121.4012\\-243.2266\\187\\-122.6048\\-241.2734\\187\\-123.2605\\-239.3203\\187\\-124.2084\\-237.3672\\187\\-125.6087\\-233.4609\\187\\-126.5841\\-231.5078\\187\\-127.154\\-229.5547\\187\\-127.9297\\-227.5835\\187\\-128.5747\\-225.6484\\187\\-129.3846\\-221.7422\\187\\-130.0146\\-219.7891\\187\\-130.5025\\-217.8359\\187\\-131.0535\\-213.9297\\187\\-131.3968\\-211.9766\\187\\-132.3184\\-208.0703\\187\\-132.5852\\-206.1172\\187\\-133.1894\\-200.2578\\187\\-133.6929\\-194.3984\\187\\-133.8698\\-190.4922\\187\\-133.9245\\-186.5859\\187\\-133.8976\\-182.6797\\187\\-133.722\\-178.7734\\187\\-133.4252\\-174.8672\\187\\-133.062\\-170.9609\\187\\-132.6481\\-167.0547\\187\\-132.3853\\-165.1016\\187\\-131.9714\\-163.1484\\187\\-131.4202\\-161.1953\\187\\-131.0513\\-159.2422\\187\\-130.4764\\-155.3359\\187\\-129.3257\\-151.4297\\187\\-128.5181\\-147.5234\\187\\-127.054\\-143.6172\\187\\-126.447\\-141.6641\\187\\-125.4502\\-139.7109\\187\\-124.8485\\-137.7578\\187\\-123.189\\-133.8516\\187\\-122.5382\\-131.8984\\187\\-121.3938\\-129.9453\\187\\-120.4622\\-127.9922\\187\\-118.1641\\-124.5249\\187\\-117.8096\\-124.0859\\187\\-116.8553\\-122.1328\\187\\-115.4125\\-120.1797\\187\\-112.3047\\-116.3668\\187\\-110.5197\\-114.3203\\187\\-108.6446\\-112.3672\\187\\-106.4189\\-110.4141\\187\\-103.9855\\-108.4609\\187\\-100.5859\\-106.2298\\187\\-98.63281\\-105.3394\\187\\-96.67969\\-104.1555\\187\\-94.72656\\-103.4316\\187\\-92.77344\\-102.5196\\187\\-90.82031\\-101.8706\\187\\-86.91406\\-100.9646\\187\\-84.96094\\-100.2901\\187\\-83.00781\\-99.88494\\187\\-79.10156\\-99.44176\\187\\-77.14844\\-99.10822\\187\\-75.19531\\-98.60057\\187\\-73.24219\\-98.2157\\187\\-69.33594\\-97.76226\\187\\-65.42969\\-97.37668\\187\\-59.57031\\-96.54275\\187\\-57.61719\\-96.31681\\187\\-53.71094\\-96.05067\\187\\-45.89844\\-95.66138\\187\\-41.99219\\-95.53448\\187\\-38.08594\\-95.4697\\187\\-34.17969\\-95.46194\\187\\-28.32031\\-95.5737\\187\\-24.41406\\-95.74953\\187\\-20.50781\\-95.99789\\187\\-18.55469\\-96.21944\\187\\-16.60156\\-96.55518\\187\\-14.64844\\-97.16705\\187\\-10.74219\\-98.01802\\187\\-6.835938\\-99.57942\\187\\-4.882813\\-100.1703\\187\\-2.929688\\-101.0955\\187\\-0.9765625\\-101.5771\\187\\0.9765625\\-101.849\\187\\2.929688\\-101.9563\\187\\4.882813\\-101.9098\\187\\6.835938\\-101.7354\\187\\8.789063\\-101.4059\\187\\12.69531\\-99.89298\\187\\14.64844\\-99.35686\\187\\18.55469\\-98.15472\\187\\20.50781\\-97.77331\\187\\26.36719\\-96.95998\\187\\28.32031\\-96.60675\\187\\32.22656\\-96.06208\\187\\34.17969\\-95.9011\\187\\41.99219\\-95.47448\\187\\49.80469\\-94.90262\\187\\53.71094\\-94.54492\\187\\57.61719\\-94.49248\\187\\61.52344\\-94.56314\\187\\65.42969\\-94.81288\\187\\71.28906\\-95.55308\\187\\75.19531\\-96.00422\\187\\77.14844\\-96.36313\\187\\79.10156\\-97.02981\\187\\83.00781\\-98.00691\\187\\86.91406\\-99.45421\\187\\88.86719\\-99.98288\\187\\90.82031\\-100.9093\\187\\92.77344\\-101.696\\187\\94.59556\\-102.6016\\187\\96.67969\\-103.7932\\187\\98.63281\\-105.228\\187\\100.5859\\-106.2691\\187\\102.5391\\-107.5807\\187\\104.4922\\-109.0534\\187\\108.4428\\-112.3672\\187\\110.3516\\-114.1465\\187\\112.3047\\-116.1816\\187\\114.2578\\-118.3761\\187\\116.2109\\-120.7674\\187\\118.4784\\-124.0859\\187\\119.5001\\-126.0391\\187\\120.8412\\-127.9922\\187\\121.7098\\-129.9453\\187\\122.7445\\-131.8984\\187\\123.3206\\-133.8516\\187\\124.2604\\-135.8047\\187\\125.5333\\-139.7109\\187\\126.5015\\-141.6641\\187\\127.0255\\-143.6172\\187\\127.6516\\-145.5703\\187\\128.3838\\-147.5234\\187\\128.7578\\-149.4766\\187\\129.3202\\-153.3828\\187\\130.0569\\-157.2891\\187\\130.3545\\-159.2422\\187\\130.686\\-163.1484\\187\\130.7761\\-165.1016\\187\\130.9903\\-172.9141\\187\\131.047\\-176.8203\\187\\131.0359\\-182.6797\\187\\130.9842\\-188.5391\\187\\130.854\\-196.3516\\187\\130.7288\\-202.2109\\187\\130.4986\\-208.0703\\187\\130.1772\\-211.9766\\187\\129.5667\\-215.8828\\187\\129.086\\-219.7891\\187\\128.5239\\-223.6953\\187\\128.039\\-225.6484\\187\\127.3072\\-227.6016\\187\\126.7997\\-229.5547\\187\\126.0851\\-231.5078\\187\\125.2116\\-233.4609\\187\\124.7065\\-235.4141\\187\\123.7392\\-237.3672\\187\\122.3724\\-241.2734\\187\\122.0703\\-241.6811\\187\\118.1641\\-248.4263\\187\\117.6419\\-249.0859\\187\\116.7661\\-251.0391\\187\\114.2578\\-254.8608\\187\\112.8673\\-256.8984\\187\\111.3641\\-258.8516\\187\\108.7963\\-262.7578\\187\\105.4511\\-266.6641\\187\\104.4922\\-267.9077\\187\\102.1027\\-270.5703\\187\\98.63281\\-274.1315\\187\\96.24301\\-276.4297\\187\\90.82031\\-281.1552\\187\\88.86719\\-282.7317\\187\\86.91406\\-283.9664\\187\\84.96094\\-285.4324\\187\\83.00781\\-287.0122\\187\\81.05469\\-288.3377\\187\\79.10156\\-289.342\\187\\77.14844\\-290.6792\\187\\71.28906\\-294.1956\\187\\67.38281\\-295.8438\\187\\65.42969\\-296.7682\\187\\63.47656\\-297.4131\\187\\61.52344\\-298.4713\\187\\59.57031\\-299.0658\\187\\57.61719\\-299.9202\\187\\55.66406\\-300.601\\187\\51.75781\\-301.591\\187\\49.80469\\-302.3607\\187\\45.89844\\-303.0227\\187\\43.94531\\-303.5525\\187\\41.99219\\-304.2173\\187\\36.13281\\-305.2681\\187\\34.17969\\-305.8351\\187\\32.22656\\-306.2348\\187\\24.41406\\-307.2205\\187\\20.50781\\-307.8619\\187\\18.55469\\-308.0982\\187\\14.64844\\-308.3894\\187\\8.789063\\-308.6207\\187\\0.9765625\\-308.7551\\187\\-6.835938\\-308.6974\\187\\-12.69531\\-308.5484\\187\\-18.55469\\-308.2001\\187"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002207"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "248"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "220"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-26.36719\\-307.3427\\189\\-30.27344\\-306.7463\\189\\-34.17969\\-306.2546\\189\\-36.13281\\-305.7932\\189\\-38.08594\\-305.1579\\189\\-41.99219\\-304.3307\\189\\-43.94531\\-303.5752\\189\\-45.89844\\-303.0025\\189\\-47.85156\\-302.6582\\189\\-49.80469\\-302.1553\\189\\-51.75781\\-301.332\\189\\-55.66406\\-300.1905\\189\\-57.61719\\-299.1392\\189\\-59.57031\\-298.3806\\189\\-61.52344\\-297.2805\\189\\-63.47656\\-296.5942\\189\\-65.42969\\-295.4897\\189\\-67.38281\\-294.7708\\189\\-69.33594\\-293.6185\\189\\-71.28906\\-292.6515\\189\\-73.24219\\-291.2636\\189\\-75.19531\\-290.1978\\189\\-77.14844\\-289.0199\\189\\-79.10156\\-287.7289\\189\\-81.05469\\-286.5534\\189\\-86.91406\\-281.9491\\189\\-88.86719\\-280.6097\\189\\-96.67969\\-273.686\\189\\-100.5859\\-269.8737\\189\\-102.5391\\-268.1403\\189\\-105.6706\\-264.7109\\189\\-107.6213\\-262.7578\\189\\-109.4012\\-260.8047\\189\\-111.0528\\-258.8516\\189\\-114.2578\\-254.8624\\189\\-116.9727\\-251.0391\\189\\-119.3438\\-247.1328\\189\\-120.7546\\-245.1797\\189\\-121.7542\\-243.2266\\189\\-122.8676\\-241.2734\\189\\-123.4986\\-239.3203\\189\\-124.577\\-237.3672\\189\\-125.1919\\-235.4141\\189\\-126.113\\-233.4609\\189\\-126.8523\\-231.5078\\189\\-127.4893\\-229.5547\\189\\-128.3268\\-227.6016\\189\\-129.2468\\-223.6953\\189\\-130.4232\\-219.7891\\189\\-131.0354\\-215.8828\\189\\-131.3968\\-213.9297\\189\\-131.9444\\-211.9766\\189\\-132.3753\\-210.0234\\189\\-132.6447\\-208.0703\\189\\-133.3407\\-202.2109\\189\\-133.8976\\-198.3047\\189\\-134.0709\\-196.3516\\189\\-134.2891\\-190.4922\\189\\-134.318\\-186.5859\\189\\-134.2861\\-182.6797\\189\\-134.1584\\-178.7734\\189\\-133.8838\\-174.8672\\189\\-133.0754\\-169.0078\\189\\-132.5899\\-165.1016\\189\\-132.2825\\-163.1484\\189\\-131.2354\\-159.2422\\189\\-130.6463\\-155.3359\\189\\-130.2178\\-153.3828\\189\\-129.562\\-151.4297\\189\\-129.0782\\-149.4766\\189\\-128.7121\\-147.5234\\189\\-128.1105\\-145.5703\\189\\-127.2961\\-143.6172\\189\\-126.7198\\-141.6641\\189\\-125.8176\\-139.7109\\189\\-125.0721\\-137.7578\\189\\-124.4495\\-135.8047\\189\\-123.4455\\-133.8516\\189\\-122.8201\\-131.8984\\189\\-121.7244\\-129.9453\\189\\-120.782\\-127.9922\\189\\-119.4042\\-126.0391\\189\\-117.0435\\-122.1328\\189\\-116.2109\\-120.9075\\189\\-114.2578\\-118.3984\\189\\-112.3047\\-116.0451\\189\\-108.7935\\-112.3672\\189\\-106.4453\\-110.3005\\189\\-103.9855\\-108.4609\\189\\-100.5859\\-106.2057\\189\\-98.63281\\-105.3162\\189\\-96.67969\\-104.1458\\189\\-94.72656\\-103.4208\\189\\-92.77344\\-102.534\\189\\-90.82031\\-101.894\\189\\-86.91406\\-100.9902\\189\\-84.96094\\-100.3158\\189\\-83.00781\\-99.90411\\189\\-79.10156\\-99.47099\\189\\-77.14844\\-99.15147\\189\\-73.24219\\-98.26994\\189\\-71.28906\\-98.01884\\189\\-63.47656\\-97.2571\\189\\-57.61719\\-96.46036\\189\\-53.71094\\-96.14752\\189\\-49.80469\\-95.93274\\189\\-45.89844\\-95.77094\\189\\-41.99219\\-95.66138\\189\\-34.17969\\-95.60287\\189\\-28.32031\\-95.7388\\189\\-24.41406\\-95.90739\\189\\-20.50781\\-96.18655\\189\\-18.55469\\-96.4831\\189\\-14.64844\\-97.43895\\189\\-10.74219\\-98.23959\\189\\-8.789063\\-99.1506\\189\\-4.882813\\-100.4173\\189\\-2.929688\\-101.3146\\189\\-0.9765625\\-101.7368\\189\\0.9765625\\-102.0156\\189\\2.929688\\-102.1409\\189\\4.882813\\-102.0771\\189\\6.835938\\-101.8823\\189\\8.789063\\-101.5707\\189\\10.74219\\-100.9789\\189\\12.69531\\-100.082\\189\\16.60156\\-99.05106\\189\\18.55469\\-98.42294\\189\\22.46094\\-97.70808\\189\\26.36719\\-97.29441\\189\\28.32031\\-96.99487\\189\\30.27344\\-96.56654\\189\\32.22656\\-96.25706\\189\\34.17969\\-96.05389\\189\\41.99219\\-95.63654\\189\\49.80469\\-95.10751\\189\\53.71094\\-94.79707\\189\\55.66406\\-94.71761\\189\\61.52344\\-94.78112\\189\\65.42969\\-95.01498\\189\\73.24219\\-95.87354\\189\\75.19531\\-96.1197\\189\\77.14844\\-96.5525\\189\\79.10156\\-97.19711\\189\\83.00781\\-98.1349\\189\\84.96094\\-98.90825\\189\\86.91406\\-99.52826\\189\\88.86719\\-100.0421\\189\\90.82031\\-101.0003\\189\\92.77344\\-101.7315\\189\\94.48242\\-102.6016\\189\\96.67969\\-103.8397\\189\\98.63281\\-105.2633\\189\\100.5859\\-106.3081\\189\\102.5391\\-107.5936\\189\\104.4922\\-109.0443\\189\\108.5108\\-112.3672\\189\\110.3516\\-114.0863\\189\\112.3047\\-116.0893\\189\\114.2578\\-118.2899\\189\\116.2109\\-120.677\\189\\118.556\\-124.0859\\189\\119.5851\\-126.0391\\189\\120.9062\\-127.9922\\189\\122.8258\\-131.8984\\189\\123.431\\-133.8516\\189\\124.4259\\-135.8047\\189\\125.0159\\-137.7578\\189\\125.7147\\-139.7109\\189\\126.6436\\-141.6641\\189\\127.1647\\-143.6172\\189\\127.9297\\-145.6642\\189\\128.5228\\-147.5234\\189\\128.889\\-149.4766\\189\\129.5157\\-153.3828\\189\\130.3206\\-157.2891\\189\\130.6995\\-161.1953\\189\\130.8862\\-165.1016\\189\\131.0965\\-170.9609\\189\\131.2102\\-176.8203\\189\\131.2182\\-180.7266\\189\\131.1303\\-188.5391\\189\\130.9184\\-198.3047\\189\\130.7174\\-206.1172\\189\\130.3875\\-211.9766\\189\\130.1505\\-213.9297\\189\\129.4691\\-217.8359\\189\\128.6404\\-223.6953\\189\\128.2266\\-225.6484\\189\\127.469\\-227.6016\\189\\126.3148\\-231.5078\\189\\125.3662\\-233.4609\\189\\124.8273\\-235.4141\\189\\123.1667\\-239.3203\\189\\122.484\\-241.2734\\189\\121.2925\\-243.2266\\189\\120.1172\\-245.3938\\189\\118.1641\\-248.6798\\189\\117.8215\\-249.0859\\189\\116.9194\\-251.0391\\189\\115.6212\\-252.9922\\189\\114.4913\\-254.9453\\189\\113.0703\\-256.8984\\189\\111.5369\\-258.8516\\189\\110.3599\\-260.8047\\189\\109.0113\\-262.7578\\189\\105.6802\\-266.6641\\189\\104.4922\\-268.1929\\189\\102.4228\\-270.5703\\189\\100.609\\-272.5234\\189\\98.63281\\-274.4853\\189\\96.56634\\-276.4297\\189\\90.82031\\-281.3851\\189\\88.86719\\-282.9465\\189\\84.96094\\-285.7274\\189\\81.05469\\-288.6571\\189\\79.10156\\-289.533\\189\\78.37975\\-290.1016\\189\\75.19531\\-292.2163\\189\\73.24219\\-293.2855\\189\\71.28906\\-294.5095\\189\\69.33594\\-295.2055\\189\\67.38281\\-296.2266\\189\\63.47656\\-297.7439\\189\\61.52344\\-298.668\\189\\59.57031\\-299.2883\\189\\57.61719\\-300.2169\\189\\53.71094\\-301.2131\\189\\49.80469\\-302.51\\189\\45.89844\\-303.172\\189\\41.99219\\-304.3877\\189\\38.08594\\-305.0351\\189\\36.13281\\-305.4908\\189\\34.17969\\-306.0731\\189\\32.22656\\-306.3794\\189\\28.32031\\-306.8576\\189\\24.41406\\-307.4178\\189\\22.46094\\-307.7915\\189\\18.55469\\-308.2441\\189\\14.64844\\-308.5005\\189\\8.789063\\-308.7154\\189\\4.882813\\-308.8065\\189\\0.9765625\\-308.8458\\189\\-4.882813\\-308.8296\\189\\-12.69531\\-308.6621\\189\\-16.60156\\-308.4814\\189\\-20.50781\\-308.2222\\189\\-22.46094\\-308.028\\189"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002206"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "241"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "221"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-24.41406\\-307.9914\\191\\-30.27344\\-306.9487\\191\\-34.17969\\-306.4459\\191\\-36.13281\\-306.133\\191\\-38.08594\\-305.4639\\191\\-40.03906\\-304.9402\\191\\-41.99219\\-304.5319\\191\\-43.94531\\-304.0092\\191\\-45.89844\\-303.2234\\191\\-49.80469\\-302.4227\\191\\-51.75781\\-301.619\\191\\-55.66406\\-300.4483\\191\\-57.61719\\-299.1766\\191\\-59.57031\\-298.4283\\191\\-61.52344\\-297.5596\\191\\-63.47656\\-296.8004\\191\\-65.42969\\-295.7687\\191\\-67.38281\\-294.9604\\191\\-69.29977\\-294.0078\\191\\-71.28906\\-292.8893\\191\\-73.24219\\-291.5215\\191\\-75.19531\\-290.5322\\191\\-77.14844\\-289.2054\\191\\-79.00391\\-288.1484\\191\\-81.05469\\-286.8483\\191\\-84.31244\\-284.2422\\191\\-84.96094\\-283.6617\\191\\-86.91406\\-282.3623\\191\\-88.86719\\-280.9259\\191\\-92.77344\\-277.3624\\191\\-96.19928\\-274.4766\\191\\-100.5859\\-270.2473\\191\\-102.478\\-268.6172\\191\\-106.0217\\-264.7109\\191\\-108.3984\\-262.3015\\191\\-112.3047\\-257.6547\\191\\-114.6361\\-254.9453\\191\\-115.8526\\-252.9922\\191\\-118.5988\\-249.0859\\191\\-119.7043\\-247.1328\\191\\-121.0438\\-245.1797\\191\\-122.2176\\-243.2266\\191\\-123.8906\\-239.3203\\191\\-124.8372\\-237.3672\\191\\-125.4979\\-235.4141\\191\\-126.5077\\-233.4609\\191\\-127.1277\\-231.5078\\191\\-128.6222\\-227.6016\\191\\-129.584\\-223.6953\\191\\-130.2886\\-221.7422\\191\\-130.6908\\-219.7891\\191\\-131.3445\\-215.8828\\191\\-131.958\\-213.9297\\191\\-132.3996\\-211.9766\\191\\-133.2101\\-206.1172\\191\\-133.8698\\-202.2109\\191\\-134.1482\\-200.2578\\191\\-134.4085\\-196.3516\\191\\-134.5735\\-190.4922\\191\\-134.5949\\-186.5859\\191\\-134.5147\\-180.7266\\191\\-134.2448\\-174.8672\\191\\-134.0709\\-172.9141\\191\\-133.054\\-167.0547\\191\\-132.4992\\-163.1484\\191\\-132.1289\\-161.1953\\191\\-131.5104\\-159.2422\\191\\-131.067\\-157.2891\\191\\-130.4764\\-153.3828\\191\\-129.2637\\-149.4766\\191\\-128.8944\\-147.5234\\191\\-128.4084\\-145.5703\\191\\-127.6381\\-143.6172\\191\\-126.3193\\-139.7109\\191\\-125.3355\\-137.7578\\191\\-124.7403\\-135.8047\\191\\-123.8158\\-133.8516\\191\\-122.2141\\-129.9453\\191\\-121.0706\\-127.9922\\191\\-119.7527\\-126.0391\\191\\-118.5889\\-124.0859\\191\\-116.2109\\-120.5374\\191\\-114.4907\\-118.2266\\191\\-112.3047\\-115.7958\\191\\-108.9331\\-112.3672\\191\\-106.4453\\-110.2319\\191\\-104.4922\\-108.9277\\191\\-102.5391\\-107.478\\191\\-100.5859\\-106.1823\\191\\-98.63281\\-105.2973\\191\\-96.67969\\-104.124\\191\\-94.72656\\-103.4163\\191\\-92.77344\\-102.534\\191\\-90.82031\\-101.894\\191\\-86.91406\\-101.0267\\191\\-84.96094\\-100.3419\\191\\-83.00781\\-99.93108\\191\\-79.10156\\-99.48877\\191\\-77.14844\\-99.19305\\191\\-73.24219\\-98.31828\\191\\-71.28906\\-98.05977\\191\\-63.47656\\-97.34619\\191\\-59.57031\\-96.89079\\191\\-57.61719\\-96.60675\\191\\-53.71094\\-96.24242\\191\\-49.80469\\-96.019\\191\\-43.94531\\-95.8074\\191\\-38.08594\\-95.73325\\191\\-32.22656\\-95.76031\\191\\-26.36719\\-95.95988\\191\\-22.46094\\-96.18974\\191\\-20.50781\\-96.4061\\191\\-16.60156\\-97.30756\\191\\-12.69531\\-98.0038\\191\\-10.74219\\-98.54671\\191\\-8.789063\\-99.37231\\191\\-6.835938\\-99.88756\\191\\-4.882813\\-100.7358\\191\\-2.929688\\-101.4724\\191\\-0.9765625\\-101.8973\\191\\0.9765625\\-102.192\\191\\2.929688\\-102.3762\\191\\4.882813\\-102.2804\\191\\6.835938\\-102.053\\191\\8.789063\\-101.725\\191\\10.74219\\-101.2036\\191\\12.69531\\-100.2849\\191\\20.50781\\-98.24871\\191\\22.46094\\-97.91949\\191\\26.36719\\-97.5203\\191\\28.32031\\-97.24833\\191\\32.22656\\-96.50317\\191\\36.13281\\-96.09706\\191\\40.03906\\-95.88904\\191\\47.85156\\-95.39242\\191\\53.71094\\-95.0528\\191\\57.61719\\-94.94561\\191\\61.52344\\-94.98731\\191\\65.42969\\-95.22088\\191\\69.33594\\-95.57146\\191\\73.24219\\-95.98807\\191\\75.19531\\-96.2569\\191\\79.10156\\-97.31696\\191\\83.00781\\-98.26994\\191\\84.96094\\-99.05726\\191\\88.86719\\-100.0951\\191\\90.82031\\-101.0739\\191\\92.77344\\-101.7789\\191\\96.67969\\-103.8822\\191\\98.63281\\-105.2973\\191\\100.5859\\-106.364\\191\\102.5391\\-107.5936\\191\\104.4922\\-109.0534\\191\\108.5598\\-112.3672\\191\\110.3516\\-114.0289\\191\\112.3047\\-116.0177\\191\\114.2662\\-118.2266\\191\\116.2109\\-120.5758\\191\\118.6276\\-124.0859\\191\\119.6781\\-126.0391\\191\\120.9772\\-127.9922\\191\\122.9065\\-131.8984\\191\\123.5522\\-133.8516\\191\\124.5667\\-135.8047\\191\\125.1309\\-137.7578\\191\\126.7671\\-141.6641\\191\\127.3193\\-143.6172\\191\\128.1334\\-145.5703\\191\\128.649\\-147.5234\\191\\129.3164\\-151.4297\\191\\130.2013\\-155.3359\\191\\130.511\\-157.2891\\191\\130.6928\\-159.2422\\191\\131.0167\\-165.1016\\191\\131.2805\\-170.9609\\191\\131.4361\\-176.8203\\191\\131.4573\\-180.7266\\191\\131.4026\\-184.6328\\191\\131.0404\\-198.3047\\191\\130.8157\\-206.1172\\191\\130.6629\\-210.0234\\191\\130.3678\\-213.9297\\191\\130.1104\\-215.8828\\191\\129.3331\\-219.7891\\191\\128.7511\\-223.6953\\191\\128.3809\\-225.6484\\191\\127.0358\\-229.5547\\191\\126.5024\\-231.5078\\191\\125.5418\\-233.4609\\191\\124.936\\-235.4141\\191\\124.1936\\-237.3672\\191\\123.2557\\-239.3203\\191\\122.6071\\-241.2734\\191\\121.4252\\-243.2266\\191\\120.5117\\-245.1797\\191\\119.2082\\-247.1328\\191\\118.0753\\-249.0859\\191\\117.0755\\-251.0391\\191\\115.808\\-252.9922\\191\\114.7494\\-254.9453\\191\\111.7763\\-258.8516\\191\\110.6649\\-260.8047\\191\\109.21\\-262.7578\\191\\102.7517\\-270.5703\\191\\100.9498\\-272.5234\\191\\98.63281\\-274.8021\\191\\94.6841\\-278.3828\\191\\90.00788\\-282.2891\\191\\86.91406\\-284.6826\\191\\81.05469\\-288.8777\\191\\79.10156\\-289.813\\191\\77.14844\\-291.1406\\191\\75.19531\\-292.5665\\191\\73.24219\\-293.5645\\191\\71.28906\\-294.7402\\191\\69.33594\\-295.4169\\191\\67.38281\\-296.493\\191\\65.42969\\-297.1095\\191\\63.47656\\-298.1258\\191\\59.57031\\-299.5439\\191\\57.61719\\-300.4192\\191\\53.71094\\-301.3722\\191\\51.75781\\-302.1147\\191\\49.80469\\-302.6214\\191\\47.85156\\-302.9156\\191\\45.89844\\-303.3401\\191\\43.94531\\-304.0553\\191\\41.99219\\-304.5168\\191\\38.08594\\-305.2007\\191\\36.13281\\-305.7787\\191\\34.17969\\-306.2515\\191\\28.32031\\-306.9991\\191\\22.46094\\-307.9892\\191\\18.55469\\-308.3615\\191\\14.64844\\-308.5916\\191\\8.789063\\-308.8065\\191\\4.882813\\-308.8847\\191\\-0.9765625\\-308.9452\\191\\-6.835938\\-308.8918\\191\\-12.69531\\-308.7667\\191\\-20.50781\\-308.3938\\191"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002205"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "239"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "222"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-26.36719\\-307.9292\\193\\-28.32031\\-307.4829\\193\\-30.27344\\-307.1688\\193\\-36.13281\\-306.3322\\193\\-38.08594\\-305.8486\\193\\-40.03906\\-305.1497\\193\\-43.94531\\-304.2984\\193\\-45.89844\\-303.5116\\193\\-47.85156\\-302.9403\\193\\-49.80469\\-302.591\\193\\-51.75781\\-301.9375\\193\\-53.71094\\-301.1714\\193\\-55.66406\\-300.6427\\193\\-56.91964\\-299.8672\\193\\-57.61719\\-299.1953\\193\\-59.57031\\-298.4194\\193\\-61.52344\\-297.9368\\193\\-63.47656\\-296.9702\\193\\-65.42969\\-296.1473\\193\\-67.38281\\-295.1299\\193\\-69.33594\\-294.338\\193\\-72.99107\\-292.0547\\193\\-75.19531\\-290.7868\\193\\-77.14844\\-289.431\\193\\-79.10156\\-288.4518\\193\\-82.24655\\-286.1953\\193\\-84.96094\\-283.9884\\193\\-86.91406\\-282.6984\\193\\-88.86719\\-281.1758\\193\\-92.77344\\-277.6311\\193\\-94.72656\\-275.9884\\193\\-96.67039\\-274.4766\\193\\-98.60689\\-272.5234\\193\\-102.5391\\-268.9375\\193\\-104.4922\\-266.8894\\193\\-106.437\\-264.7109\\193\\-108.3984\\-262.7486\\193\\-110.3516\\-260.4395\\193\\-111.553\\-258.8516\\193\\-114.9369\\-254.9453\\193\\-116.299\\-252.9922\\193\\-117.4759\\-251.0391\\193\\-118.1641\\-250.1551\\193\\-120.2257\\-247.1328\\193\\-122.0703\\-243.959\\193\\-122.5789\\-243.2266\\193\\-123.2879\\-241.2734\\193\\-124.349\\-239.3203\\193\\-125.0603\\-237.3672\\193\\-126.7965\\-233.4609\\193\\-127.4507\\-231.5078\\193\\-128.3529\\-229.5547\\193\\-129.3351\\-225.6484\\193\\-130.0721\\-223.6953\\193\\-130.6033\\-221.7422\\193\\-131.2913\\-217.8359\\193\\-132.4107\\-213.9297\\193\\-133.0046\\-210.0234\\193\\-134.0614\\-204.1641\\193\\-134.4604\\-200.2578\\193\\-134.7332\\-194.3984\\193\\-134.8489\\-186.5859\\193\\-134.7547\\-180.7266\\193\\-134.4889\\-174.8672\\193\\-134.1167\\-170.9609\\193\\-133.3069\\-167.0547\\193\\-132.401\\-161.1953\\193\\-131.9167\\-159.2422\\193\\-131.2982\\-157.2891\\193\\-130.6723\\-153.3828\\193\\-130.2296\\-151.4297\\193\\-129.5131\\-149.4766\\193\\-128.6621\\-145.5703\\193\\-128.1092\\-143.6172\\193\\-127.2846\\-141.6641\\193\\-126.6781\\-139.7109\\193\\-125.7506\\-137.7578\\193\\-124.3115\\-133.8516\\193\\-123.2926\\-131.8984\\193\\-122.618\\-129.9453\\193\\-121.3763\\-127.9922\\193\\-120.2325\\-126.0391\\193\\-117.4497\\-122.1328\\193\\-116.2195\\-120.1797\\193\\-114.7629\\-118.2266\\193\\-112.3047\\-115.5101\\193\\-109.1291\\-112.3672\\193\\-106.4453\\-110.1682\\193\\-100.5859\\-106.1348\\193\\-98.63281\\-105.2739\\193\\-96.67969\\-104.1026\\193\\-94.72656\\-103.4055\\193\\-92.77344\\-102.534\\193\\-90.82031\\-101.894\\193\\-86.91406\\-101.0486\\193\\-84.96094\\-100.3934\\193\\-83.00781\\-99.95089\\193\\-77.14844\\-99.23853\\193\\-73.24219\\-98.36979\\193\\-71.28906\\-98.10297\\193\\-63.47656\\-97.41661\\193\\-59.57031\\-97.01456\\193\\-55.66406\\-96.49471\\193\\-53.71094\\-96.32624\\193\\-49.80469\\-96.10367\\193\\-43.94531\\-95.89548\\193\\-38.08594\\-95.83874\\193\\-34.17969\\-95.84354\\193\\-28.32031\\-96.00845\\193\\-24.41406\\-96.21722\\193\\-22.46094\\-96.39567\\193\\-20.50781\\-96.73456\\193\\-18.55469\\-97.19054\\193\\-14.64844\\-97.83894\\193\\-12.69531\\-98.23056\\193\\-10.74219\\-98.95905\\193\\-6.835938\\-100.0509\\193\\-4.882813\\-101.029\\193\\-2.929688\\-101.6309\\193\\0.9765625\\-102.4247\\193\\2.929688\\-102.6713\\193\\4.882813\\-102.5494\\193\\8.789063\\-101.8472\\193\\10.74219\\-101.3523\\193\\12.69531\\-100.5156\\193\\14.64844\\-99.8922\\193\\18.55469\\-99.04854\\193\\20.50781\\-98.52093\\193\\22.46094\\-98.15278\\193\\28.32031\\-97.43506\\193\\34.17969\\-96.52748\\193\\38.08594\\-96.14948\\193\\49.80469\\-95.40485\\193\\53.71094\\-95.21796\\193\\57.61719\\-95.13086\\193\\61.52344\\-95.18106\\193\\67.38281\\-95.50521\\193\\73.24219\\-96.07459\\193\\75.19531\\-96.39342\\193\\77.14844\\-96.94304\\193\\81.05469\\-97.7848\\193\\83.00781\\-98.39135\\193\\84.96094\\-99.19002\\193\\88.86719\\-100.1703\\193\\90.82031\\-101.147\\193\\92.77344\\-101.8334\\193\\96.67969\\-103.9295\\193\\98.63281\\-105.3394\\193\\100.5859\\-106.4071\\193\\102.5391\\-107.6064\\193\\106.2073\\-110.4141\\193\\108.5904\\-112.3672\\193\\110.3516\\-114.0025\\193\\112.3047\\-115.9631\\193\\114.3627\\-118.2266\\193\\116.2109\\-120.4896\\193\\118.6908\\-124.0859\\193\\119.7664\\-126.0391\\193\\121.0438\\-127.9922\\193\\122.1542\\-129.9453\\193\\122.9797\\-131.8984\\193\\123.6834\\-133.8516\\193\\124.6802\\-135.8047\\193\\125.2441\\-137.7578\\193\\126.2356\\-139.7109\\193\\127.4921\\-143.6172\\193\\128.3008\\-145.5703\\193\\128.7676\\-147.5234\\193\\129.4992\\-151.4297\\193\\130.0278\\-153.3828\\193\\130.4196\\-155.3359\\193\\130.6676\\-157.2891\\193\\131.183\\-165.1016\\193\\131.6406\\-172.9141\\193\\131.828\\-178.7734\\193\\131.7082\\-184.6328\\193\\131.2382\\-196.3516\\193\\130.7761\\-210.0234\\193\\130.5442\\-213.9297\\193\\130.3443\\-215.8828\\193\\129.9688\\-217.8359\\193\\129.4936\\-219.7891\\193\\128.5156\\-225.6484\\193\\127.9297\\-227.5441\\193\\127.1797\\-229.5547\\193\\126.651\\-231.5078\\193\\125.7324\\-233.4609\\193\\124.3581\\-237.3672\\193\\123.3454\\-239.3203\\193\\122.7193\\-241.2734\\193\\121.5758\\-243.2266\\193\\120.6913\\-245.1797\\193\\119.3656\\-247.1328\\193\\118.3758\\-249.0859\\193\\116.2109\\-252.8912\\193\\114.981\\-254.9453\\193\\112.0718\\-258.8516\\193\\110.8897\\-260.8047\\193\\109.3945\\-262.7578\\193\\103.0238\\-270.5703\\193\\101.1955\\-272.5234\\193\\98.63281\\-275.0597\\193\\95.03455\\-278.3828\\193\\90.31042\\-282.2891\\193\\88.86719\\-283.3278\\193\\84.96094\\-286.5087\\193\\81.05469\\-289.0522\\193\\77.14844\\-291.4098\\193\\75.19531\\-292.8458\\193\\71.28906\\-294.9294\\193\\69.33594\\-295.6872\\193\\67.38281\\-296.6862\\193\\65.42969\\-297.297\\193\\63.47656\\-298.3788\\193\\61.52344\\-299.0101\\193\\59.52229\\-299.8672\\193\\57.61719\\-300.563\\193\\53.71094\\-301.5671\\193\\51.75781\\-302.3186\\193\\49.80469\\-302.7239\\193\\47.85156\\-303.0133\\193\\45.89844\\-303.524\\193\\43.94531\\-304.2443\\193\\40.03906\\-304.9852\\193\\38.08594\\-305.4076\\193\\36.13281\\-306.0414\\193\\34.17969\\-306.39\\193\\30.27344\\-306.8817\\193\\26.36719\\-307.4961\\193\\24.41406\\-307.875\\193\\22.46094\\-308.145\\193\\18.55469\\-308.4573\\193\\12.69531\\-308.7498\\193\\4.882813\\-308.9916\\193\\-0.9765625\\-309.0862\\193\\-4.882813\\-309.0481\\193\\-12.69531\\-308.8458\\193\\-20.50781\\-308.5193\\193\\-24.41406\\-308.1906\\193"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002204"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "238"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "223"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-28.32031\\-307.7344\\195\\-36.13281\\-306.5047\\195\\-38.08594\\-306.133\\195\\-40.03906\\-305.4256\\195\\-41.99219\\-304.8917\\195\\-43.94531\\-304.5046\\195\\-45.89844\\-303.882\\195\\-47.85156\\-303.1087\\195\\-49.80469\\-302.7127\\195\\-51.75781\\-302.2039\\195\\-53.71094\\-301.3659\\195\\-55.66406\\-300.8035\\195\\-57.60528\\-299.8672\\195\\-59.57031\\-298.7537\\195\\-61.52344\\-298.2834\\195\\-63.47656\\-297.1362\\195\\-65.42969\\-296.4263\\195\\-67.38281\\-295.2824\\195\\-69.33594\\-294.5925\\195\\-71.28906\\-293.3345\\195\\-73.55368\\-292.0547\\195\\-76.69442\\-290.1016\\195\\-77.14844\\-289.7153\\195\\-79.10156\\-288.7397\\195\\-82.6656\\-286.1953\\195\\-85.15083\\-284.2422\\195\\-86.91406\\-282.9727\\195\\-90.13052\\-280.3359\\195\\-92.77344\\-277.9402\\195\\-96.67969\\-274.8504\\195\\-99.00145\\-272.5234\\195\\-101.1429\\-270.5703\\195\\-104.4922\\-267.2294\\195\\-106.4453\\-265.0892\\195\\-108.7752\\-262.7578\\195\\-110.4574\\-260.8047\\195\\-111.8699\\-258.8516\\195\\-115.1966\\-254.9453\\195\\-116.6676\\-252.9922\\195\\-117.7215\\-251.0391\\195\\-120.6352\\-247.1328\\195\\-121.6784\\-245.1797\\195\\-122.8453\\-243.2266\\195\\-123.5318\\-241.2734\\195\\-124.6487\\-239.3203\\195\\-125.3078\\-237.3672\\195\\-126.3977\\-235.4141\\195\\-127.0752\\-233.4609\\195\\-128.6426\\-229.5547\\195\\-129.1274\\-227.6016\\195\\-129.7226\\-225.6484\\195\\-130.4362\\-223.6953\\195\\-131.175\\-219.7891\\195\\-132.3442\\-215.8828\\195\\-133.3696\\-210.0234\\195\\-133.8412\\-208.0703\\195\\-134.4079\\-204.1641\\195\\-134.8386\\-198.3047\\195\\-134.9995\\-194.3984\\195\\-135.1427\\-186.5859\\195\\-135.0068\\-180.7266\\195\\-134.8311\\-176.8203\\195\\-134.3592\\-170.9609\\195\\-134.1146\\-169.0078\\195\\-133.2368\\-165.1016\\195\\-132.2798\\-159.2422\\195\\-131.6658\\-157.2891\\195\\-131.1594\\-155.3359\\195\\-130.4803\\-151.4297\\195\\-129.8421\\-149.4766\\195\\-129.3351\\-147.5234\\195\\-128.4618\\-143.6172\\195\\-127.6659\\-141.6641\\195\\-126.2999\\-137.7578\\195\\-125.269\\-135.8047\\195\\-124.6525\\-133.8516\\195\\-123.57\\-131.8984\\195\\-122.9047\\-129.9453\\195\\-120.6481\\-126.0391\\195\\-119.096\\-124.0859\\195\\-117.7228\\-122.1328\\195\\-116.4932\\-120.1797\\195\\-115.0145\\-118.2266\\195\\-112.3047\\-115.2765\\195\\-109.2948\\-112.3672\\195\\-106.4453\\-110.0511\\195\\-104.1379\\-108.4609\\195\\-100.5859\\-106.1026\\195\\-98.63281\\-105.2623\\195\\-96.67969\\-104.0905\\195\\-94.72656\\-103.3991\\195\\-92.77344\\-102.5486\\195\\-90.82031\\-101.9057\\195\\-86.91406\\-101.0698\\195\\-84.96094\\-100.4191\\195\\-83.00781\\-99.96669\\195\\-77.14844\\-99.26799\\195\\-75.19531\\-98.90509\\195\\-73.24219\\-98.43623\\195\\-71.28906\\-98.1412\\195\\-59.57031\\-97.09324\\195\\-55.66406\\-96.59358\\195\\-51.75781\\-96.28022\\195\\-43.94531\\-95.98899\\195\\-38.08594\\-95.92063\\195\\-34.17969\\-95.94743\\195\\-30.27344\\-96.06123\\195\\-26.36719\\-96.24242\\195\\-24.41406\\-96.4061\\195\\-22.46094\\-96.69\\195\\-20.50781\\-97.106\\195\\-14.64844\\-98.03902\\195\\-12.69531\\-98.54671\\195\\-10.74219\\-99.27013\\195\\-8.789063\\-99.71703\\195\\-6.835938\\-100.2734\\195\\-4.882813\\-101.2489\\195\\-2.929688\\-101.7887\\195\\0.9765625\\-102.7421\\195\\2.929688\\-102.9669\\195\\4.882813\\-102.8615\\195\\6.835938\\-102.4388\\195\\10.74219\\-101.4794\\195\\14.64844\\-100.0247\\195\\20.50781\\-98.85186\\195\\22.46094\\-98.36979\\195\\24.41406\\-98.06715\\195\\32.22656\\-97.12376\\195\\36.13281\\-96.52899\\195\\38.08594\\-96.29559\\195\\45.89844\\-95.72765\\195\\53.71094\\-95.3498\\195\\59.57031\\-95.27734\\195\\61.52344\\-95.32585\\195\\67.38281\\-95.61581\\195\\73.24219\\-96.16077\\195\\75.19531\\-96.50646\\195\\77.14844\\-97.09324\\195\\79.10156\\-97.42175\\195\\81.05469\\-97.84834\\195\\83.00781\\-98.50831\\195\\84.96094\\-99.28735\\195\\86.91406\\-99.71116\\195\\88.86719\\-100.2398\\195\\90.82031\\-101.2036\\195\\92.77344\\-101.8886\\195\\94.72656\\-102.9857\\195\\96.67969\\-103.9616\\195\\98.63281\\-105.3695\\195\\100.5859\\-106.4375\\195\\102.5391\\-107.6321\\195\\106.2073\\-110.4141\\195\\108.6053\\-112.3672\\195\\110.3516\\-113.977\\195\\112.3047\\-115.9137\\195\\114.4516\\-118.2266\\195\\116.2109\\-120.3999\\195\\117.344\\-122.1328\\195\\118.7443\\-124.0859\\195\\122.2929\\-129.9453\\195\\123.8312\\-133.8516\\195\\124.7667\\-135.8047\\195\\125.3834\\-137.7578\\195\\126.4287\\-139.7109\\195\\127.0109\\-141.6641\\195\\128.4335\\-145.5703\\195\\129.2509\\-149.4766\\195\\130.2637\\-153.3828\\195\\130.5804\\-155.3359\\195\\130.7872\\-157.2891\\195\\131.2226\\-163.1484\\195\\131.9167\\-170.9609\\195\\132.1178\\-174.8672\\195\\132.2029\\-178.7734\\195\\132.1399\\-182.6797\\195\\131.9167\\-188.5391\\195\\131.5381\\-194.3984\\195\\131.2718\\-200.2578\\195\\130.7932\\-211.9766\\195\\130.5194\\-215.8828\\195\\130.2154\\-217.8359\\195\\129.302\\-221.7422\\195\\128.633\\-225.6484\\195\\128.1305\\-227.6016\\195\\127.3345\\-229.5547\\195\\126.7568\\-231.5078\\195\\125.102\\-235.4141\\195\\124.4894\\-237.3672\\195\\123.421\\-239.3203\\195\\122.8333\\-241.2734\\195\\121.7493\\-243.2266\\195\\120.8469\\-245.1797\\195\\119.5348\\-247.1328\\195\\118.6096\\-249.0859\\195\\117.3765\\-251.0391\\195\\116.4952\\-252.9922\\195\\115.1801\\-254.9453\\195\\113.7463\\-256.8984\\195\\112.4453\\-258.8516\\195\\110.3516\\-261.7898\\195\\106.5119\\-266.6641\\195\\103.2597\\-270.5703\\195\\101.4359\\-272.5234\\195\\98.63281\\-275.3008\\195\\95.32374\\-278.3828\\195\\92.77344\\-280.6223\\195\\90.66068\\-282.2891\\195\\88.86719\\-283.5844\\195\\88.13852\\-284.2422\\195\\84.96094\\-286.8097\\195\\82.93431\\-288.1484\\195\\81.05469\\-289.2015\\195\\79.10156\\-290.6186\\195\\73.24219\\-294.3001\\195\\71.28906\\-295.1003\\195\\67.38281\\-296.8355\\195\\65.42969\\-297.5116\\195\\63.47656\\-298.5597\\195\\61.52344\\-299.1847\\195\\59.57031\\-300.1199\\195\\57.61719\\-300.6887\\195\\55.66406\\-301.1505\\195\\51.75781\\-302.4651\\195\\47.85156\\-303.1282\\195\\43.94531\\-304.3805\\195\\40.03906\\-305.1218\\195\\36.13281\\-306.2234\\195\\30.27344\\-307.0306\\195\\28.32031\\-307.3403\\195\\26.36719\\-307.7484\\195\\22.46094\\-308.2744\\195\\16.60156\\-308.6739\\195\\4.882813\\-309.1445\\195\\-0.9765625\\-309.2982\\195\\-4.882813\\-309.2408\\195\\-20.50781\\-308.6326\\195\\-24.41406\\-308.3658\\195\\-26.36719\\-308.1381\\195"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002203"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "247"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "224"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-30.27344\\-307.763\\197\\-32.22656\\-307.3451\\197\\-38.08594\\-306.3169\\197\\-40.03906\\-305.7932\\197\\-41.99219\\-305.0996\\197\\-45.89844\\-304.1604\\197\\-47.85156\\-303.2979\\197\\-51.75781\\-302.405\\197\\-53.71094\\-301.5927\\197\\-57.61719\\-300.2932\\197\\-59.57031\\-299.1782\\197\\-61.52344\\-298.5054\\197\\-63.47656\\-297.3516\\197\\-65.42969\\-296.6338\\197\\-67.38281\\-295.4828\\197\\-69.33594\\-294.7952\\197\\-71.28906\\-293.6132\\197\\-73.24219\\-292.6323\\197\\-75.19531\\-291.2572\\197\\-79.10156\\-288.9738\\197\\-81.05469\\-287.5751\\197\\-83.00781\\-286.3221\\197\\-85.5625\\-284.2422\\197\\-90.50336\\-280.3359\\197\\-92.77344\\-278.3258\\197\\-94.72656\\-276.7715\\197\\-96.67969\\-275.1159\\197\\-98.63281\\-273.2721\\197\\-99.27455\\-272.5234\\197\\-101.4202\\-270.5703\\197\\-104.4922\\-267.4711\\197\\-105.1839\\-266.6641\\197\\-109.0518\\-262.7578\\197\\-110.7942\\-260.8047\\197\\-112.2963\\-258.8516\\197\\-115.4413\\-254.9453\\197\\-116.9241\\-252.9922\\197\\-118.1227\\-251.0391\\197\\-119.4558\\-249.0859\\197\\-120.9375\\-247.1328\\197\\-122.11\\-245.1797\\197\\-123.059\\-243.2266\\197\\-123.9053\\-241.2734\\197\\-124.8644\\-239.3203\\197\\-125.6533\\-237.3672\\197\\-126.6981\\-235.4141\\197\\-127.3878\\-233.4609\\197\\-128.3322\\-231.5078\\197\\-129.4181\\-227.6016\\197\\-130.2178\\-225.6484\\197\\-130.7091\\-223.6953\\197\\-131.0467\\-221.7422\\197\\-131.5458\\-219.7891\\197\\-132.2733\\-217.8359\\197\\-133.3921\\-211.9766\\197\\-133.9111\\-210.0234\\197\\-134.4898\\-206.1172\\197\\-134.8447\\-202.2109\\197\\-135.1303\\-198.3047\\197\\-135.3074\\-194.3984\\197\\-135.5052\\-186.5859\\197\\-135.3001\\-180.7266\\197\\-135.0812\\-176.8203\\197\\-134.5564\\-170.9609\\197\\-134.3479\\-169.0078\\197\\-134.0248\\-167.0547\\197\\-133.1473\\-163.1484\\197\\-132.5409\\-159.2422\\197\\-132.1289\\-157.2891\\197\\-131.4765\\-155.3359\\197\\-130.7123\\-151.4297\\197\\-130.272\\-149.4766\\197\\-129.1551\\-145.5703\\197\\-128.7356\\-143.6172\\197\\-128.1615\\-141.6641\\197\\-127.3049\\-139.7109\\197\\-126.6629\\-137.7578\\197\\-125.6745\\-135.8047\\197\\-124.9158\\-133.8516\\197\\-122.2331\\-127.9922\\197\\-120.938\\-126.0391\\197\\-119.4196\\-124.0859\\197\\-116.7817\\-120.1797\\197\\-115.2536\\-118.2266\\197\\-112.3047\\-115.0527\\197\\-109.4416\\-112.3672\\197\\-106.4453\\-109.9166\\197\\-104.3586\\-108.4609\\197\\-100.5859\\-106.0687\\197\\-98.63281\\-105.2472\\197\\-96.67969\\-104.0724\\197\\-94.72656\\-103.4055\\197\\-92.77344\\-102.5785\\197\\-90.82031\\-101.9209\\197\\-86.91406\\-101.0935\\197\\-84.96094\\-100.4456\\197\\-83.00781\\-99.98709\\197\\-77.14844\\-99.29673\\197\\-73.24219\\-98.49587\\197\\-71.28906\\-98.18163\\197\\-67.38281\\-97.80534\\197\\-59.57031\\-97.15171\\197\\-55.66406\\-96.69\\197\\-51.75781\\-96.34546\\197\\-45.89844\\-96.12513\\197\\-38.08594\\-96.01239\\197\\-34.17969\\-96.04012\\197\\-30.27344\\-96.18494\\197\\-26.36719\\-96.43822\\197\\-24.41406\\-96.69\\197\\-22.46094\\-97.06334\\197\\-16.60156\\-97.89941\\197\\-14.64844\\-98.26994\\197\\-12.69531\\-98.961\\197\\-10.74219\\-99.49586\\197\\-8.789063\\-99.8922\\197\\-6.835938\\-100.6081\\197\\-4.882813\\-101.4384\\197\\0.9765625\\-103.0363\\197\\2.929688\\-103.2003\\197\\4.882813\\-103.093\\197\\6.835938\\-102.6855\\197\\12.69531\\-101.0003\\197\\14.64844\\-100.1735\\197\\16.60156\\-99.74568\\197\\20.50781\\-99.09782\\197\\22.46094\\-98.61455\\197\\24.41406\\-98.23335\\197\\28.32031\\-97.72384\\197\\32.22656\\-97.33835\\197\\36.13281\\-96.78063\\197\\38.08594\\-96.44922\\197\\43.94531\\-95.9427\\197\\51.75781\\-95.5273\\197\\53.71094\\-95.45409\\197\\59.57031\\-95.3886\\197\\61.52344\\-95.43396\\197\\67.38281\\-95.71167\\197\\71.28906\\-96.0363\\197\\73.24219\\-96.24809\\197\\75.19531\\-96.64745\\197\\77.14844\\-97.21841\\197\\81.05469\\-98.00275\\197\\84.96094\\-99.36411\\197\\86.91406\\-99.76325\\197\\88.86719\\-100.3158\\197\\90.82031\\-101.2758\\197\\92.77344\\-101.9324\\197\\94.72656\\-103.0449\\197\\96.67969\\-104.0237\\197\\98.63281\\-105.4056\\197\\102.5391\\-107.6503\\197\\104.4922\\-109.0801\\197\\108.3984\\-112.1788\\197\\110.3516\\-113.9401\\197\\112.3047\\-115.8756\\197\\114.5187\\-118.2266\\197\\116.2109\\-120.3247\\197\\117.3816\\-122.1328\\197\\118.8022\\-124.0859\\197\\122.3958\\-129.9453\\197\\123.1384\\-131.8984\\197\\124.8826\\-135.8047\\197\\125.5562\\-137.7578\\197\\126.5806\\-139.7109\\197\\127.1561\\-141.6641\\197\\127.9374\\-143.6172\\197\\128.5588\\-145.5703\\197\\129.3913\\-149.4766\\197\\130.4325\\-153.3828\\197\\130.7158\\-155.3359\\197\\131.0404\\-159.2422\\197\\131.4598\\-163.1484\\197\\131.9714\\-167.0547\\197\\132.1508\\-169.0078\\197\\132.3496\\-172.9141\\197\\132.4463\\-176.8203\\197\\132.3979\\-182.6797\\197\\132.2229\\-188.5391\\197\\132.0229\\-192.4453\\197\\131.6007\\-198.3047\\197\\131.284\\-204.1641\\197\\131.0012\\-210.0234\\197\\130.6606\\-215.8828\\197\\130.4196\\-217.8359\\197\\129.9982\\-219.7891\\197\\129.4585\\-221.7422\\197\\128.7511\\-225.6484\\197\\128.2935\\-227.6016\\197\\127.4881\\-229.5547\\197\\126.1382\\-233.4609\\197\\125.1746\\-235.4141\\197\\124.5961\\-237.3672\\197\\123.5057\\-239.3203\\197\\122.9323\\-241.2734\\197\\120.9823\\-245.1797\\197\\119.7486\\-247.1328\\197\\118.8019\\-249.0859\\197\\117.5152\\-251.0391\\197\\116.726\\-252.9922\\197\\116.2109\\-253.6949\\197\\112.7223\\-258.8516\\197\\111.2203\\-260.8047\\197\\108.3984\\-264.6621\\197\\106.7814\\-266.6641\\197\\103.4483\\-270.5703\\197\\101.6474\\-272.5234\\197\\98.63281\\-275.4875\\197\\96.67969\\-277.2697\\197\\95.57427\\-278.3828\\197\\92.77344\\-280.9084\\197\\90.82031\\-282.4558\\197\\88.86719\\-283.8864\\197\\84.96094\\-287.0506\\197\\83.00781\\-288.4564\\197\\81.05469\\-289.4236\\197\\79.10156\\-290.8954\\197\\77.14844\\-292.2444\\197\\75.19531\\-293.347\\197\\73.24219\\-294.5796\\197\\71.28906\\-295.2697\\197\\69.33594\\-296.3092\\197\\67.38281\\-296.9692\\197\\63.47656\\-298.7192\\197\\61.52344\\-299.3789\\197\\59.57031\\-300.2991\\197\\55.66406\\-301.2706\\197\\53.71094\\-302.0349\\197\\51.75781\\-302.5646\\197\\47.85156\\-303.2391\\197\\45.89844\\-303.9729\\197\\43.94531\\-304.4959\\197\\40.03906\\-305.2932\\197\\38.08594\\-305.9623\\197\\36.13281\\-306.3582\\197\\30.27344\\-307.185\\197\\26.36719\\-307.9537\\197\\24.41406\\-308.2222\\197\\18.55469\\-308.6739\\197\\12.69531\\-308.9262\\197\\10.74219\\-309.0602\\197\\2.929688\\-309.436\\197\\-0.9765625\\-309.5938\\197\\-6.835938\\-309.4102\\197\\-14.64844\\-308.9527\\197\\-22.46094\\-308.6386\\197\\-26.36719\\-308.3245\\197"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002202"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "239"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "225"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.835938\\-309.6707\\199\\-10.74219\\-309.3608\\199\\-16.60156\\-308.976\\199\\-22.46094\\-308.7381\\199\\-28.32031\\-308.2908\\199\\-30.27344\\-308.0167\\199\\-34.17969\\-307.185\\199\\-40.03906\\-306.0753\\199\\-41.99219\\-305.3297\\199\\-45.89844\\-304.3715\\199\\-47.85156\\-303.5492\\199\\-49.80469\\-302.9293\\199\\-51.75781\\-302.5497\\199\\-55.66406\\-301.0668\\199\\-57.61719\\-300.463\\199\\-59.57031\\-299.4296\\199\\-61.52344\\-298.6719\\199\\-63.47656\\-297.5885\\199\\-65.42969\\-296.802\\199\\-67.38281\\-295.7298\\199\\-69.33594\\-294.9542\\199\\-73.24219\\-292.8567\\199\\-75.19531\\-291.489\\199\\-77.14844\\-290.4781\\199\\-80.6776\\-288.1484\\199\\-83.00781\\-286.667\\199\\-86.91406\\-283.3869\\199\\-88.46457\\-282.2891\\199\\-90.82031\\-280.459\\199\\-93.12529\\-278.3828\\199\\-95.47244\\-276.4297\\199\\-98.63281\\-273.5578\\199\\-99.5857\\-272.5234\\199\\-101.7198\\-270.5703\\199\\-104.4922\\-267.8034\\199\\-105.5001\\-266.6641\\199\\-107.4345\\-264.7109\\199\\-110.3516\\-261.6172\\199\\-114.2578\\-256.8891\\199\\-116.2109\\-254.3092\\199\\-122.5036\\-245.1797\\199\\-123.2767\\-243.2266\\199\\-124.3234\\-241.2734\\199\\-125.0933\\-239.3203\\199\\-126.1535\\-237.3672\\199\\-128.6272\\-231.5078\\199\\-129.1675\\-229.5547\\199\\-130.5442\\-225.6484\\199\\-131.3737\\-221.7422\\199\\-132.1197\\-219.7891\\199\\-132.5995\\-217.8359\\199\\-133.3769\\-213.9297\\199\\-133.9388\\-211.9766\\199\\-134.3095\\-210.0234\\199\\-134.9574\\-204.1641\\199\\-135.4765\\-198.3047\\199\\-135.7342\\-194.3984\\199\\-135.8849\\-190.4922\\199\\-135.9404\\-186.5859\\199\\-135.7969\\-182.6797\\199\\-135.5035\\-178.7734\\199\\-134.7281\\-170.9609\\199\\-134.2918\\-167.0547\\199\\-133.9377\\-165.1016\\199\\-133.0853\\-161.1953\\199\\-132.4599\\-157.2891\\199\\-131.9714\\-155.3359\\199\\-131.3223\\-153.3828\\199\\-130.6002\\-149.4766\\199\\-130.1398\\-147.5234\\199\\-129.4284\\-145.5703\\199\\-128.5082\\-141.6641\\199\\-127.7054\\-139.7109\\199\\-126.224\\-135.8047\\199\\-125.1754\\-133.8516\\199\\-124.4236\\-131.8984\\199\\-123.3241\\-129.9453\\199\\-122.5825\\-127.9922\\199\\-118.4896\\-122.1328\\199\\-115.4521\\-118.2266\\199\\-113.7028\\-116.2734\\199\\-112.3047\\-114.8652\\199\\-109.5963\\-112.3672\\199\\-106.4453\\-109.7688\\199\\-104.4922\\-108.3871\\199\\-102.5391\\-107.2801\\199\\-100.5859\\-106.0163\\199\\-98.63281\\-105.2353\\199\\-96.67969\\-104.0694\\199\\-94.72656\\-103.4099\\199\\-92.77344\\-102.5785\\199\\-90.82031\\-101.9328\\199\\-86.91406\\-101.1201\\199\\-84.96094\\-100.4606\\199\\-83.00781\\-100.0078\\199\\-77.14844\\-99.30492\\199\\-75.19531\\-98.96735\\199\\-73.24219\\-98.52093\\199\\-71.28906\\-98.20703\\199\\-67.38281\\-97.82458\\199\\-59.57031\\-97.20924\\199\\-53.71094\\-96.55518\\199\\-51.75781\\-96.39567\\199\\-45.89844\\-96.19598\\199\\-40.03906\\-96.10014\\199\\-34.17969\\-96.13998\\199\\-30.27344\\-96.31681\\199\\-28.32031\\-96.49471\\199\\-22.46094\\-97.33041\\199\\-18.55469\\-97.81061\\199\\-16.60156\\-98.09972\\199\\-14.64844\\-98.64313\\199\\-12.69531\\-99.29108\\199\\-8.789063\\-100.1369\\199\\-6.835938\\-100.9884\\199\\-4.882813\\-101.613\\199\\-2.929688\\-102.1226\\199\\-0.9765625\\-102.8083\\199\\0.9765625\\-103.2618\\199\\2.929688\\-103.3963\\199\\4.882813\\-103.284\\199\\6.835938\\-102.911\\199\\8.789063\\-102.2122\\199\\12.69531\\-101.1768\\199\\14.64844\\-100.3788\\199\\16.60156\\-99.86601\\199\\20.50781\\-99.28004\\199\\24.41406\\-98.42478\\199\\28.32031\\-97.86043\\199\\32.22656\\-97.50174\\199\\36.13281\\-97.00668\\199\\40.03906\\-96.36516\\199\\43.94531\\-96.0246\\199\\49.80469\\-95.70595\\199\\55.66406\\-95.50832\\199\\59.57031\\-95.48494\\199\\63.47656\\-95.60287\\199\\67.38281\\-95.81339\\199\\71.28906\\-96.10014\\199\\73.24219\\-96.32624\\199\\75.11393\\-96.74219\\199\\77.14844\\-97.30604\\199\\81.05469\\-98.08102\\199\\84.96094\\-99.43635\\199\\86.91406\\-99.79752\\199\\88.86719\\-100.4043\\199\\90.82031\\-101.327\\199\\92.77344\\-101.9686\\199\\94.72656\\-103.1025\\199\\96.67969\\-104.0788\\199\\98.63281\\-105.4234\\199\\102.5391\\-107.6578\\199\\104.4922\\-109.0928\\199\\108.6219\\-112.3672\\199\\110.3516\\-113.9372\\199\\112.3047\\-115.8418\\199\\114.5712\\-118.2266\\199\\116.2109\\-120.2487\\199\\117.43\\-122.1328\\199\\118.1641\\-123.061\\199\\120.1172\\-126.0678\\199\\122.5021\\-129.9453\\199\\123.2159\\-131.8984\\199\\124.2084\\-133.8516\\199\\125.754\\-137.7578\\199\\126.709\\-139.7109\\199\\127.304\\-141.6641\\199\\128.1704\\-143.6172\\199\\128.6932\\-145.5703\\199\\129.5644\\-149.4766\\199\\130.1629\\-151.4297\\199\\130.5603\\-153.3828\\199\\131.1791\\-159.2422\\199\\131.4466\\-161.1953\\199\\132.0834\\-165.1016\\199\\132.4208\\-169.0078\\199\\132.5658\\-172.9141\\199\\132.6358\\-176.8203\\199\\132.5783\\-182.6797\\199\\132.4208\\-188.5391\\199\\132.0717\\-196.3516\\199\\131.8436\\-200.2578\\199\\131.4055\\-206.1172\\199\\130.7761\\-215.8828\\199\\130.576\\-217.8359\\199\\130.2386\\-219.7891\\199\\129.6831\\-221.7422\\199\\129.2255\\-223.6953\\199\\128.4241\\-227.6016\\199\\127.6401\\-229.5547\\199\\126.2826\\-233.4609\\199\\125.2526\\-235.4141\\199\\124.6725\\-237.3672\\199\\123.6177\\-239.3203\\199\\122.9989\\-241.2734\\199\\122.1556\\-243.2266\\199\\118.9528\\-249.0859\\199\\117.6758\\-251.0391\\199\\116.8727\\-252.9922\\199\\115.5363\\-254.9453\\199\\114.3138\\-256.8984\\199\\112.9034\\-258.8516\\199\\111.3645\\-260.8047\\199\\108.6554\\-264.7109\\199\\106.4453\\-267.3462\\199\\103.6173\\-270.5703\\199\\101.8317\\-272.5234\\199\\98.63281\\-275.6554\\199\\95.78394\\-278.3828\\199\\92.77344\\-281.1421\\199\\90.82031\\-282.7349\\199\\83.00781\\-288.7478\\199\\81.05469\\-289.7523\\199\\77.14844\\-292.58\\199\\73.24219\\-294.7755\\199\\71.28906\\-295.4558\\199\\69.33594\\-296.4987\\199\\67.38281\\-297.1057\\199\\65.42969\\-298.1135\\199\\61.52344\\-299.5796\\199\\59.57031\\-300.421\\199\\55.66406\\-301.4066\\199\\53.71094\\-302.1874\\199\\51.75781\\-302.6418\\199\\49.80469\\-302.9278\\199\\47.85156\\-303.3633\\199\\45.89844\\-304.1302\\199\\43.94531\\-304.6001\\199\\41.99219\\-304.9687\\199\\40.03906\\-305.4892\\199\\38.08594\\-306.1425\\199\\30.27344\\-307.3658\\199\\26.36719\\-308.1086\\199\\24.41406\\-308.3492\\199\\18.55469\\-308.7615\\199\\12.69531\\-309.0481\\199\\6.835938\\-309.4912\\199\\0.9765625\\-309.7956\\199\\-2.929688\\-309.8337\\199"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002201"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "243"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "226"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.789063\\-309.6854\\201\\-10.74219\\-309.5021\\201\\-16.60156\\-309.0739\\201\\-22.46094\\-308.7949\\201\\-28.32031\\-308.3983\\201\\-32.22656\\-307.8486\\201\\-36.13281\\-306.9415\\201\\-40.03906\\-306.2323\\201\\-43.94531\\-304.9443\\201\\-45.89844\\-304.502\\201\\-49.80469\\-303.0297\\201\\-51.75781\\-302.6399\\201\\-53.71094\\-302.0081\\201\\-55.66406\\-301.1588\\201\\-57.61719\\-300.552\\201\\-59.57031\\-299.5971\\201\\-61.52344\\-298.7748\\201\\-63.47656\\-297.8141\\201\\-67.38281\\-296.0161\\201\\-69.33594\\-295.0627\\201\\-71.28906\\-294.2372\\201\\-71.58015\\-294.0078\\201\\-77.14844\\-290.7198\\201\\-79.10156\\-289.3499\\201\\-81.05469\\-288.2508\\201\\-83.00781\\-286.9199\\201\\-86.91406\\-283.6327\\201\\-88.86719\\-282.3304\\201\\-90.82031\\-280.7951\\201\\-91.27269\\-280.3359\\201\\-94.72656\\-277.276\\201\\-95.79258\\-276.4297\\201\\-98.63281\\-273.8233\\201\\-100.5859\\-271.8411\\201\\-102.0121\\-270.5703\\201\\-104.4922\\-268.1139\\201\\-105.8102\\-266.6641\\201\\-107.7275\\-264.7109\\201\\-110.3516\\-261.9262\\201\\-114.2578\\-257.2335\\201\\-114.6055\\-256.8984\\201\\-116.2109\\-254.6842\\201\\-117.2467\\-252.9922\\201\\-120.1992\\-249.0859\\201\\-122.7533\\-245.1797\\201\\-123.5214\\-243.2266\\201\\-124.6212\\-241.2734\\201\\-125.3595\\-239.3203\\201\\-126.5251\\-237.3672\\201\\-127.2609\\-235.4141\\201\\-128.2708\\-233.4609\\201\\-129.4936\\-229.5547\\201\\-130.3236\\-227.6016\\201\\-131.1991\\-223.6953\\201\\-131.9025\\-221.7422\\201\\-132.503\\-219.7891\\201\\-133.3131\\-215.8828\\201\\-133.8976\\-213.9297\\201\\-134.3297\\-211.9766\\201\\-135.5163\\-202.2109\\201\\-135.9271\\-198.3047\\201\\-136.0583\\-196.3516\\201\\-136.26\\-190.4922\\201\\-136.2731\\-186.5859\\201\\-136.1451\\-182.6797\\201\\-135.8699\\-178.7734\\201\\-135.3475\\-174.8672\\201\\-134.2566\\-165.1016\\201\\-133.9111\\-163.1484\\201\\-133.4022\\-161.1953\\201\\-132.3496\\-155.3359\\201\\-131.1909\\-151.4297\\201\\-130.494\\-147.5234\\201\\-129.2254\\-143.6172\\201\\-128.7812\\-141.6641\\201\\-128.2017\\-139.7109\\201\\-127.3049\\-137.7578\\201\\-126.6257\\-135.8047\\201\\-125.5253\\-133.8516\\201\\-124.7484\\-131.8984\\201\\-123.6484\\-129.9453\\201\\-122.827\\-127.9922\\201\\-120.2848\\-124.0859\\201\\-118.1641\\-121.3015\\201\\-114.2578\\-116.6336\\201\\-112.3047\\-114.6856\\201\\-109.7656\\-112.3672\\201\\-106.4453\\-109.6061\\201\\-104.4922\\-108.2244\\201\\-102.5391\\-107.2127\\201\\-100.5859\\-105.9701\\201\\-98.63281\\-105.2195\\201\\-96.67969\\-104.0905\\201\\-94.72656\\-103.4099\\201\\-92.77344\\-102.5938\\201\\-90.82031\\-101.9406\\201\\-86.91406\\-101.1367\\201\\-84.96094\\-100.4882\\201\\-83.00781\\-100.0247\\201\\-81.05469\\-99.75606\\201\\-77.14844\\-99.3286\\201\\-75.19531\\-98.98131\\201\\-73.24219\\-98.53372\\201\\-71.28906\\-98.22447\\201\\-67.38281\\-97.84383\\201\\-59.57031\\-97.28278\\201\\-51.75781\\-96.49471\\201\\-45.89844\\-96.26257\\201\\-41.99219\\-96.20397\\201\\-36.13281\\-96.22552\\201\\-32.22656\\-96.36516\\201\\-30.27344\\-96.51839\\201\\-26.36719\\-97.1084\\201\\-18.55469\\-98.02877\\201\\-16.60156\\-98.41348\\201\\-14.64844\\-99.09543\\201\\-12.69531\\-99.54129\\201\\-10.74219\\-99.88756\\201\\-8.789063\\-100.5167\\201\\-6.835938\\-101.306\\201\\-2.929688\\-102.3869\\201\\-0.9765625\\-103.1171\\201\\0.9765625\\-103.4702\\201\\2.929688\\-103.5732\\201\\4.882813\\-103.4805\\201\\6.835938\\-103.1501\\201\\8.789063\\-102.4388\\201\\10.74219\\-101.8517\\201\\12.69531\\-101.373\\201\\16.60156\\-100.0078\\201\\20.50781\\-99.45045\\201\\22.46094\\-99.11568\\201\\26.36719\\-98.26731\\201\\28.32031\\-98.00507\\201\\34.17969\\-97.41661\\201\\36.13281\\-97.17826\\201\\40.03906\\-96.50646\\201\\41.99219\\-96.27462\\201\\47.85156\\-95.8877\\201\\51.75781\\-95.71167\\201\\55.66406\\-95.60287\\201\\59.57031\\-95.59164\\201\\63.47656\\-95.71625\\201\\69.33594\\-96.02569\\201\\73.24219\\-96.4061\\201\\77.14844\\-97.38028\\201\\81.05469\\-98.1491\\201\\83.00781\\-98.92123\\201\\84.96094\\-99.47995\\201\\86.91406\\-99.84731\\201\\88.86719\\-100.4882\\201\\90.82031\\-101.3683\\201\\92.77344\\-102.0095\\201\\94.72656\\-103.164\\201\\96.67969\\-104.1227\\201\\98.63281\\-105.4635\\201\\102.5391\\-107.6655\\201\\104.4922\\-109.1099\\201\\108.3984\\-112.154\\201\\110.3516\\-113.9134\\201\\112.3047\\-115.7989\\201\\114.6214\\-118.2266\\201\\116.2195\\-120.1797\\201\\117.4805\\-122.1328\\201\\118.1641\\-122.9873\\201\\120.1172\\-125.9359\\201\\122.575\\-129.9453\\201\\123.2894\\-131.8984\\201\\124.3717\\-133.8516\\201\\125.0755\\-135.8047\\201\\126.8144\\-139.7109\\201\\127.4572\\-141.6641\\201\\128.319\\-143.6172\\201\\129.2087\\-147.5234\\201\\130.3101\\-151.4297\\201\\130.6676\\-153.3828\\201\\131.3382\\-159.2422\\201\\132.095\\-163.1484\\201\\132.3496\\-165.1016\\201\\132.5057\\-167.0547\\201\\132.6959\\-170.9609\\201\\132.8125\\-176.8203\\201\\132.7787\\-180.7266\\201\\132.6959\\-184.6328\\201\\132.1825\\-200.2578\\201\\131.9025\\-204.1641\\201\\131.7082\\-206.1172\\201\\130.6995\\-217.8359\\201\\130.4102\\-219.7891\\201\\129.3202\\-223.6953\\201\\128.5156\\-227.6016\\201\\127.0207\\-231.5078\\201\\126.3758\\-233.4609\\201\\125.3236\\-235.4141\\201\\124.7373\\-237.3672\\201\\123.729\\-239.3203\\201\\122.3108\\-243.2266\\201\\122.0703\\-243.5623\\201\\120.1172\\-247.2865\\201\\118.1641\\-250.6284\\201\\117.8409\\-251.0391\\201\\116.9835\\-252.9922\\201\\115.6924\\-254.9453\\201\\114.5399\\-256.8984\\201\\111.4898\\-260.8047\\201\\108.8455\\-264.7109\\201\\106.4453\\-267.5575\\201\\101.9744\\-272.5234\\201\\100.5859\\-273.9214\\201\\96.67969\\-277.6343\\201\\95.95758\\-278.3828\\201\\92.77344\\-281.2863\\201\\88.86719\\-284.524\\201\\86.69411\\-286.1953\\201\\83.00781\\-288.9258\\201\\79.10156\\-291.3281\\201\\77.14844\\-292.7945\\201\\75.00989\\-294.0078\\201\\73.24219\\-294.8861\\201\\71.28906\\-295.5804\\201\\69.33594\\-296.6022\\201\\67.38281\\-297.193\\201\\65.42969\\-298.218\\201\\61.52344\\-299.6053\\201\\59.57031\\-300.4398\\201\\55.66406\\-301.4532\\201\\53.71094\\-302.1927\\201\\51.75781\\-302.6123\\201\\49.80469\\-302.9245\\201\\47.85156\\-303.3788\\201\\45.89844\\-304.1404\\201\\41.99219\\-304.9807\\201\\38.08594\\-306.1613\\201\\32.22656\\-307.1041\\201\\28.32031\\-307.8765\\201\\26.36719\\-308.1614\\201\\22.46094\\-308.5281\\201\\18.55469\\-308.8016\\201\\16.60156\\-308.8803\\201\\12.69531\\-309.1381\\201\\6.835938\\-309.6557\\201\\0.9765625\\-309.8937\\201\\-2.929688\\-309.9277\\201"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002200"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "271"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "227"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-32.22656\\-307.4844\\203\\-34.17969\\-306.6061\\203\\-38.08594\\-306.3246\\203\\-40.03906\\-306.0857\\203\\-41.99219\\-304.6846\\203\\-43.94531\\-304.5751\\203\\-47.85156\\-302.925\\203\\-49.80469\\-302.7671\\203\\-51.75781\\-302.2629\\203\\-53.71094\\-301.4862\\203\\-55.66406\\-300.5088\\203\\-57.61719\\-300.2839\\203\\-59.57031\\-299.0259\\203\\-61.52344\\-298.5941\\203\\-63.47656\\-296.9858\\203\\-65.42969\\-296.3446\\203\\-67.38281\\-295.4615\\203\\-71.28906\\-293.4809\\203\\-73.24219\\-292.8369\\203\\-75.19531\\-291.0544\\203\\-77.14844\\-290.5085\\203\\-79.10156\\-288.8061\\203\\-81.05469\\-288.1211\\203\\-83.31948\\-286.1953\\203\\-86.04677\\-284.2422\\203\\-86.91406\\-283.4522\\203\\-88.86719\\-281.9794\\203\\-90.82031\\-280.8991\\203\\-91.36746\\-280.3359\\203\\-94.72656\\-277.4311\\203\\-95.9744\\-276.4297\\203\\-98.63281\\-274.0024\\203\\-100.5859\\-272.0284\\203\\-102.201\\-270.5703\\203\\-104.4922\\-268.305\\203\\-110.3516\\-262.1147\\203\\-114.2578\\-257.4031\\203\\-114.7911\\-256.8984\\203\\-116.2684\\-254.9453\\203\\-117.3937\\-252.9922\\203\\-120.4826\\-249.0859\\203\\-121.6211\\-247.1328\\203\\-122.9309\\-245.1797\\203\\-123.7755\\-243.2266\\203\\-124.8519\\-241.2734\\203\\-125.6419\\-239.3203\\203\\-126.7545\\-237.3672\\203\\-127.5618\\-235.4141\\203\\-128.5707\\-233.4609\\203\\-129.1302\\-231.5078\\203\\-129.9232\\-229.5547\\203\\-130.6122\\-227.6016\\203\\-130.9933\\-225.6484\\203\\-131.56\\-223.6953\\203\\-132.3412\\-221.7422\\203\\-133.202\\-217.8359\\203\\-133.8412\\-215.8828\\203\\-134.2861\\-213.9297\\203\\-134.5993\\-211.9766\\203\\-135.3692\\-206.1172\\203\\-135.9535\\-202.2109\\203\\-136.2565\\-198.3047\\203\\-136.4159\\-194.3984\\203\\-136.5004\\-190.4922\\203\\-136.5125\\-186.5859\\203\\-136.3011\\-180.7266\\203\\-135.9535\\-176.8203\\203\\-135.3369\\-172.9141\\203\\-135.0812\\-170.9609\\203\\-134.4851\\-165.1016\\203\\-134.2448\\-163.1484\\203\\-133.8557\\-161.1953\\203\\-133.3313\\-159.2422\\203\\-132.2706\\-153.3828\\203\\-131.5499\\-151.4297\\203\\-131.0379\\-149.4766\\203\\-130.7465\\-147.5234\\203\\-130.313\\-145.5703\\203\\-129.5386\\-143.6172\\203\\-128.5539\\-139.7109\\203\\-127.6945\\-137.7578\\203\\-126.9585\\-135.8047\\203\\-124.9777\\-131.8984\\203\\-124.0938\\-129.9453\\203\\-123.0217\\-127.9922\\203\\-120.6055\\-124.0859\\203\\-114.2578\\-116.4031\\203\\-112.3047\\-114.5029\\203\\-109.9466\\-112.3672\\203\\-106.4453\\-109.4492\\203\\-104.4922\\-108.0689\\203\\-102.5391\\-107.1523\\203\\-100.5859\\-105.9316\\203\\-98.63281\\-105.2195\\203\\-96.67969\\-104.1026\\203\\-94.72656\\-103.4208\\203\\-92.756\\-102.6016\\203\\-90.82031\\-101.9446\\203\\-86.91406\\-101.1367\\203\\-84.96094\\-100.5035\\203\\-83.00781\\-100.0373\\203\\-77.14844\\-99.33655\\203\\-73.24219\\-98.54671\\203\\-71.28906\\-98.22447\\203\\-69.33594\\-98.03246\\203\\-57.61719\\-97.20924\\203\\-51.75781\\-96.63368\\203\\-47.85156\\-96.41666\\203\\-41.99219\\-96.29829\\203\\-36.13281\\-96.35525\\203\\-32.22656\\-96.5806\\203\\-26.36719\\-97.36919\\203\\-22.46094\\-97.75259\\203\\-18.55469\\-98.30837\\203\\-14.64844\\-99.38361\\203\\-10.74219\\-100.1602\\203\\-8.789063\\-100.945\\203\\-6.835938\\-101.5643\\203\\-4.882813\\-102.0426\\203\\-2.929688\\-102.8334\\203\\-0.9765625\\-103.386\\203\\0.9765625\\-103.6674\\203\\2.929688\\-103.7764\\203\\4.882813\\-103.6674\\203\\6.835938\\-103.3817\\203\\8.789063\\-102.7983\\203\\10.74219\\-102.0253\\203\\12.69531\\-101.5579\\203\\14.64844\\-100.9595\\203\\16.60156\\-100.1735\\203\\18.55469\\-99.79752\\203\\22.46094\\-99.30125\\203\\24.41406\\-98.95526\\203\\26.36719\\-98.43623\\203\\30.27344\\-97.90337\\203\\36.13281\\-97.30428\\203\\41.99219\\-96.42738\\203\\43.94531\\-96.21416\\203\\47.85156\\-95.96622\\203\\51.75781\\-95.80278\\203\\55.66406\\-95.7066\\203\\59.57031\\-95.68514\\203\\63.47656\\-95.81899\\203\\69.33594\\-96.10742\\203\\73.24219\\-96.50646\\203\\77.14844\\-97.45869\\203\\81.05469\\-98.23335\\203\\83.00781\\-99.01854\\203\\84.96094\\-99.52679\\203\\86.91406\\-99.88494\\203\\88.86719\\-100.5618\\203\\90.82031\\-101.4135\\203\\92.77344\\-102.0604\\203\\94.72656\\-103.218\\203\\96.67969\\-104.1653\\203\\98.63281\\-105.4974\\203\\100.5859\\-106.6563\\203\\102.5391\\-107.6759\\203\\104.4922\\-109.1351\\203\\106.4453\\-110.7042\\203\\108.3984\\-112.154\\203\\110.3516\\-113.9018\\203\\112.3047\\-115.7648\\203\\114.6554\\-118.2266\\203\\116.2694\\-120.1797\\203\\117.5197\\-122.1328\\203\\120.327\\-126.0391\\203\\121.4012\\-127.9922\\203\\122.6367\\-129.9453\\203\\123.3573\\-131.8984\\203\\124.4796\\-133.8516\\203\\125.1563\\-135.8047\\203\\126.1405\\-137.7578\\203\\127.6131\\-141.6641\\203\\128.4363\\-143.6172\\203\\129.311\\-147.5234\\203\\130.4232\\-151.4297\\203\\130.7465\\-153.3828\\203\\131.1907\\-157.2891\\203\\131.515\\-159.2422\\203\\131.9975\\-161.1953\\203\\132.3242\\-163.1484\\203\\132.5291\\-165.1016\\203\\132.7883\\-169.0078\\203\\132.9371\\-172.9141\\203\\132.9845\\-176.8203\\203\\132.9216\\-182.6797\\203\\132.5671\\-192.4453\\203\\132.3901\\-200.2578\\203\\132.172\\-204.1641\\203\\131.8359\\-208.0006\\203\\131.3664\\-211.9766\\203\\130.7761\\-217.8359\\203\\130.5151\\-219.7891\\203\\130.0289\\-221.7422\\203\\129.3912\\-223.6953\\203\\128.5592\\-227.6016\\203\\127.9297\\-229.3431\\203\\127.0336\\-231.5078\\203\\126.3758\\-233.4609\\203\\125.3196\\-235.4141\\203\\124.7342\\-237.3672\\203\\123.7497\\-239.3203\\203\\122.3524\\-243.2266\\203\\121.2357\\-245.1797\\203\\120.1172\\-247.3281\\203\\118.1641\\-250.6848\\203\\117.8861\\-251.0391\\203\\116.9705\\-252.9922\\203\\114.5442\\-256.8984\\203\\112.9729\\-258.8516\\203\\109.5332\\-262.7578\\203\\108.6629\\-264.7109\\203\\106.4453\\-267.3049\\203\\105.0548\\-268.6172\\203\\103.2715\\-270.5703\\203\\102.5391\\-271.2273\\203\\101.4367\\-272.5234\\203\\99.28191\\-274.4766\\203\\98.63281\\-275.214\\203\\96.67969\\-277.0342\\203\\95.47822\\-278.3828\\203\\93.33062\\-280.3359\\203\\92.77344\\-280.9455\\203\\90.82031\\-282.6043\\203\\88.86719\\-283.395\\203\\88.01997\\-284.2422\\203\\85.80405\\-286.1953\\203\\84.96094\\-287.1251\\203\\81.05469\\-289.3565\\203\\80.26886\\-290.1016\\203\\77.20686\\-292.0547\\203\\75.19531\\-293.6079\\203\\73.24219\\-294.3265\\203\\71.28906\\-294.8228\\203\\69.33594\\-295.4371\\203\\68.75394\\-295.9609\\203\\67.38281\\-296.7642\\203\\65.42969\\-297.2329\\203\\64.50861\\-297.9141\\203\\63.47656\\-298.4514\\203\\61.52344\\-298.7007\\203\\59.57031\\-299.9348\\203\\57.61719\\-300.2876\\203\\55.66406\\-300.9439\\203\\53.71094\\-301.3079\\203\\51.75781\\-301.4839\\203\\49.80469\\-302.4272\\203\\47.85156\\-302.6891\\203\\45.89844\\-302.8178\\203\\43.94531\\-303.9881\\203\\41.99219\\-304.4516\\203\\40.03906\\-304.5427\\203\\38.08594\\-305.1461\\203\\36.13281\\-306.1109\\203\\32.22656\\-306.3443\\203\\30.27344\\-306.8688\\203\\28.32031\\-307.2518\\203\\26.36719\\-307.4506\\203\\22.46094\\-307.6659\\203\\20.50781\\-307.6878\\203\\18.55469\\-308.202\\203\\16.60156\\-308.4886\\203\\14.64844\\-308.5761\\203\\6.835938\\-308.7249\\203\\-2.929688\\-308.7946\\203\\-8.789063\\-308.7884\\203\\-16.60156\\-308.7051\\203\\-22.46094\\-308.547\\203\\-24.41406\\-307.8235\\203\\-28.32031\\-307.8064\\203"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002199"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "280"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "228"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.91406\\-280.4469\\205\\-88.86719\\-279.2467\\205\\-90.82031\\-278.8235\\205\\-92.77344\\-276.9073\\205\\-94.6841\\-276.4297\\205\\-96.77124\\-274.4766\\205\\-98.63281\\-272.8665\\205\\-100.9994\\-270.5703\\205\\-102.5391\\-268.9271\\205\\-104.4922\\-267.121\\205\\-106.9137\\-264.7109\\205\\-110.6663\\-260.8047\\205\\-111.259\\-258.8516\\205\\-115.2433\\-254.9453\\205\\-116.8887\\-252.9922\\205\\-117.6227\\-251.0391\\205\\-119.4949\\-249.0859\\205\\-120.1172\\-248.2164\\205\\-120.6275\\-247.1328\\205\\-122.2237\\-245.1797\\205\\-123.0844\\-243.2266\\205\\-124.4343\\-241.2734\\205\\-124.7816\\-239.3203\\205\\-125.4198\\-237.3672\\205\\-125.9766\\-236.6317\\205\\-126.578\\-235.4141\\205\\-127.9835\\-233.4609\\205\\-129.0248\\-231.5078\\205\\-129.9072\\-229.5547\\205\\-131.4745\\-223.6953\\205\\-132.4185\\-221.7422\\205\\-133.148\\-217.8359\\205\\-134.0008\\-215.8828\\205\\-134.4161\\-213.9297\\205\\-135.0281\\-208.0703\\205\\-135.6211\\-206.1172\\205\\-135.8838\\-204.1641\\205\\-136.1873\\-200.2578\\205\\-136.387\\-194.3984\\205\\-136.4731\\-188.5391\\205\\-136.453\\-186.5859\\205\\-136.5247\\-182.6797\\205\\-136.323\\-178.7734\\205\\-135.9258\\-174.8672\\205\\-135.2637\\-170.9609\\205\\-134.4601\\-163.1484\\205\\-134.1883\\-161.1953\\205\\-133.2335\\-157.2891\\205\\-132.558\\-153.3828\\205\\-132.0476\\-151.4297\\205\\-131.335\\-149.4766\\205\\-130.5925\\-145.5703\\205\\-129.2555\\-141.6641\\205\\-128.7984\\-139.7109\\205\\-128.1756\\-137.7578\\205\\-127.233\\-135.8047\\205\\-126.4335\\-133.8516\\205\\-125.2294\\-131.8984\\205\\-124.4181\\-129.9453\\205\\-123.1658\\-127.9922\\205\\-122.0787\\-126.0391\\205\\-120.7702\\-124.0859\\205\\-118.1641\\-120.8794\\205\\-117.5106\\-120.1797\\205\\-114.3244\\-116.2734\\205\\-112.3047\\-114.362\\205\\-107.7946\\-110.4141\\205\\-106.4453\\-109.3682\\205\\-104.4922\\-108.0043\\205\\-102.5391\\-107.1305\\205\\-100.5859\\-105.9316\\205\\-98.63281\\-105.2506\\205\\-96.67969\\-104.124\\205\\-94.72656\\-103.4486\\205\\-92.72112\\-102.6016\\205\\-90.82031\\-101.9564\\205\\-86.91406\\-101.16\\205\\-84.96094\\-100.5322\\205\\-83.00781\\-100.0587\\205\\-81.05469\\-99.77975\\205\\-77.14844\\-99.35217\\205\\-75.19531\\-99.02762\\205\\-71.28906\\-98.26994\\205\\-69.33594\\-98.06678\\205\\-57.61719\\-97.30428\\205\\-49.80469\\-96.64745\\205\\-45.89844\\-96.46036\\205\\-41.99219\\-96.42738\\205\\-36.13281\\-96.55518\\205\\-34.17969\\-96.67561\\205\\-26.36719\\-97.57277\\205\\-22.46094\\-97.96541\\205\\-20.50781\\-98.24233\\205\\-16.60156\\-99.26651\\205\\-12.69531\\-99.96237\\205\\-8.789063\\-101.327\\205\\-6.835938\\-101.8119\\205\\-4.882813\\-102.4485\\205\\-2.929688\\-103.2352\\205\\-0.9765625\\-103.6287\\205\\0.9765625\\-103.8879\\205\\2.929688\\-104.0054\\205\\4.882813\\-103.8983\\205\\6.835938\\-103.6095\\205\\8.789063\\-103.1113\\205\\10.74219\\-102.2581\\205\\14.64844\\-101.1829\\205\\16.60156\\-100.4061\\205\\18.55469\\-99.91152\\205\\24.41406\\-99.14849\\205\\28.32031\\-98.29858\\205\\30.27344\\-98.022\\205\\38.08594\\-97.16333\\205\\41.99219\\-96.55518\\205\\43.94531\\-96.31681\\205\\47.85156\\-96.05001\\205\\53.71094\\-95.83874\\205\\57.61719\\-95.79188\\205\\63.47656\\-95.91788\\205\\69.33594\\-96.24242\\205\\71.28906\\-96.4061\\205\\73.24219\\-96.71947\\205\\75.19531\\-97.17826\\205\\79.10156\\-97.89542\\205\\81.05469\\-98.33849\\205\\83.00781\\-99.10056\\205\\84.96094\\-99.58769\\205\\86.91406\\-99.93108\\205\\90.82031\\-101.4653\\205\\92.77344\\-102.126\\205\\94.72656\\-103.274\\205\\96.67969\\-104.1861\\205\\98.63281\\-105.5029\\205\\100.5859\\-106.6563\\205\\102.5391\\-107.6759\\205\\104.4922\\-109.1225\\205\\106.4453\\-110.6778\\205\\108.3984\\-112.1298\\205\\112.3047\\-115.7353\\205\\114.6803\\-118.2266\\205\\116.2694\\-120.1797\\205\\117.5197\\-122.1328\\205\\118.1641\\-122.9093\\205\\120.1172\\-125.7674\\205\\120.379\\-126.0391\\205\\121.4377\\-127.9922\\205\\122.6807\\-129.9453\\205\\123.409\\-131.8984\\205\\124.5212\\-133.8516\\205\\125.2009\\-135.8047\\205\\126.2642\\-137.7578\\205\\126.9745\\-139.7109\\205\\128.5192\\-143.6172\\205\\129.3519\\-147.5234\\205\\129.9688\\-149.4766\\205\\130.4102\\-151.4297\\205\\130.9673\\-155.3359\\205\\131.4361\\-159.2422\\205\\131.7368\\-161.1953\\205\\132.6201\\-165.1016\\205\\132.8316\\-169.0078\\205\\132.9643\\-174.8672\\205\\132.9036\\-182.6797\\205\\132.5092\\-194.3984\\205\\132.3822\\-200.2578\\205\\131.8359\\-202.1914\\205\\130.8335\\-204.1641\\205\\130.7189\\-211.9766\\205\\130.5664\\-215.8828\\205\\129.2646\\-219.7891\\205\\129.1297\\-221.7422\\205\\128.0296\\-225.6484\\205\\127.7061\\-227.6016\\205\\126.937\\-229.5547\\205\\126.3043\\-231.5078\\205\\124.6721\\-233.4609\\205\\124.5117\\-235.4141\\205\\124.0234\\-236.6305\\205\\123.4482\\-237.3672\\205\\122.794\\-239.3203\\205\\122.0703\\-240.7423\\205\\121.6185\\-241.2734\\205\\120.8283\\-243.2266\\205\\120.3021\\-245.1797\\205\\118.5238\\-247.1328\\205\\118.1641\\-248.3921\\205\\117.657\\-249.0859\\205\\116.2109\\-251.8235\\205\\115.1778\\-252.9922\\205\\114.5591\\-254.9453\\205\\112.3047\\-257.1378\\205\\110.3516\\-257.0538\\205\\108.3984\\-258.6074\\205\\106.4453\\-258.2656\\205\\104.4922\\-259.0957\\205\\102.5391\\-259.0469\\205\\100.5859\\-259.0957\\205\\98.63281\\-260.0723\\205\\94.72656\\-260.0723\\205\\92.77344\\-261.0488\\205\\90.82031\\-260.9674\\205\\88.86719\\-261.0488\\205\\86.91406\\-261.3906\\205\\84.96094\\-261.5371\\205\\83.00781\\-262.0254\\205\\81.05469\\-262.0254\\205\\79.10156\\-262.1719\\205\\77.14844\\-262.4323\\205\\75.19531\\-262.5625\\205\\73.24219\\-263.002\\205\\69.33594\\-263.002\\205\\67.38281\\-263.7344\\205\\65.42969\\-263.3438\\205\\63.47656\\-263.4902\\205\\61.52344\\-264.3854\\205\\59.57031\\-263.7344\\205\\55.66406\\-264.2227\\205\\55.17578\\-264.7109\\205\\53.71094\\-265.1992\\205\\51.75781\\-265.2969\\205\\49.80469\\-265.0365\\205\\47.85156\\-265.6875\\205\\45.89844\\-265.6875\\205\\43.94531\\-266.2979\\205\\41.99219\\-266.5664\\205\\39.55078\\-266.6641\\205\\36.13281\\-268.1289\\205\\32.22656\\-267.6406\\205\\30.27344\\-268.9427\\205\\26.36719\\-268.9427\\205\\24.41406\\-269.8379\\205\\22.46094\\-269.8379\\205\\20.50781\\-270.2448\\205\\18.55469\\-270.8145\\205\\16.60156\\-271.1563\\205\\14.64844\\-270.8958\\205\\12.69531\\-271.0586\\205\\10.74219\\-271.5469\\205\\8.789063\\-272.3281\\205\\6.835938\\-272.3839\\205\\4.882813\\-272.7188\\205\\2.929688\\-272.2793\\205\\0.9765625\\-272.7676\\205\\-0.9765625\\-273.1094\\205\\-2.929688\\-273.2559\\205\\-4.882813\\-273.5\\205\\-6.835938\\-273.8906\\205\\-8.789063\\-273.6628\\205\\-10.74219\\-274.2324\\205\\-14.64844\\-274.151\\205\\-16.60156\\-274.7207\\205\\-18.55469\\-274.7207\\205\\-20.50781\\-275.4531\\205\\-28.32031\\-275.4531\\205\\-32.22656\\-276.7552\\205\\-34.17969\\-276.918\\205\\-36.13281\\-277.4063\\205\\-38.08594\\-276.7552\\205\\-40.03906\\-278.0573\\205\\-41.99219\\-278.0573\\205\\-43.94531\\-278.7083\\205\\-47.85156\\-278.7083\\205\\-49.80469\\-279.3594\\205\\-51.75781\\-279.3594\\205\\-53.71094\\-279.6035\\205\\-55.66406\\-280.5313\\205\\-57.61719\\-280.5313\\205\\-59.57031\\-280.9219\\205\\-60.30273\\-280.3359\\205\\-61.52344\\-279.7934\\205\\-63.15104\\-280.3359\\205\\-63.47656\\-280.5801\\205\\-65.42969\\-280.1406\\205\\-69.33594\\-280.1964\\205\\-71.28906\\-280.5801\\205\\-77.14844\\-280.5801\\205\\-79.10156\\-280.1964\\205\\-81.05469\\-280.9219\\205\\-83.00781\\-281.3125\\205\\-84.96094\\-281.8008\\205"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002198"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "282"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "229"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-126.6741\\-227.6016\\207\\-127.9297\\-226.9738\\207\\-128.5482\\-225.6484\\207\\-128.9063\\-223.6953\\207\\-129.8828\\-222.7861\\207\\-130.3415\\-221.7422\\207\\-130.7828\\-219.7891\\207\\-130.9204\\-217.8359\\207\\-131.8359\\-216.7896\\207\\-132.2368\\-215.8828\\207\\-132.6238\\-213.9297\\207\\-132.872\\-208.0703\\207\\-133.7891\\-207.1304\\207\\-134.476\\-206.1172\\207\\-134.6393\\-200.2578\\207\\-134.7892\\-188.5391\\207\\-134.7969\\-186.5859\\207\\-135.7422\\-183.7999\\207\\-136.0307\\-182.6797\\207\\-135.9435\\-178.7734\\207\\-135.7107\\-174.8672\\207\\-135.4465\\-172.9141\\207\\-134.8763\\-170.9609\\207\\-134.6866\\-169.0078\\207\\-134.4125\\-163.1484\\207\\-134.0728\\-161.1953\\207\\-133.0357\\-159.2422\\207\\-132.803\\-155.3359\\207\\-132.5966\\-153.3828\\207\\-131.7274\\-151.4297\\207\\-131.1512\\-149.4766\\207\\-130.6956\\-145.5703\\207\\-130.2059\\-143.6172\\207\\-129.4358\\-141.6641\\207\\-128.4018\\-137.7578\\207\\-127.4515\\-135.8047\\207\\-126.6413\\-133.8516\\207\\-125.4085\\-131.8984\\207\\-124.543\\-129.9453\\207\\-123.2747\\-127.9922\\207\\-122.2199\\-126.0391\\207\\-120.8761\\-124.0859\\207\\-118.1641\\-120.7434\\207\\-117.6348\\-120.1797\\207\\-114.4695\\-116.2734\\207\\-112.3047\\-114.2633\\207\\-107.8525\\-110.4141\\207\\-104.4922\\-107.983\\207\\-102.5391\\-107.1347\\207\\-100.5859\\-105.9701\\207\\-98.63281\\-105.2665\\207\\-96.67969\\-104.1529\\207\\-94.72656\\-103.4702\\207\\-92.65351\\-102.6016\\207\\-90.82031\\-101.9605\\207\\-86.91406\\-101.1733\\207\\-84.96094\\-100.5776\\207\\-83.00781\\-100.0895\\207\\-81.05469\\-99.79752\\207\\-77.14844\\-99.40189\\207\\-75.19531\\-99.14156\\207\\-71.28906\\-98.40234\\207\\-69.33594\\-98.17336\\207\\-65.42969\\-97.91505\\207\\-55.66406\\-97.31898\\207\\-49.80469\\-96.87963\\207\\-45.89844\\-96.64745\\207\\-43.94531\\-96.62012\\207\\-38.08594\\-96.8098\\207\\-34.17969\\-97.07422\\207\\-28.32031\\-97.59159\\207\\-24.41406\\-97.98088\\207\\-22.46094\\-98.26062\\207\\-18.55469\\-99.20896\\207\\-14.64844\\-99.84943\\207\\-12.69531\\-100.4005\\207\\-10.74219\\-101.2344\\207\\-6.835938\\-102.2233\\207\\-4.882813\\-103.0964\\207\\-2.929688\\-103.5999\\207\\0.9765625\\-104.2507\\207\\2.929688\\-104.4599\\207\\4.882813\\-104.2956\\207\\6.835938\\-103.9353\\207\\8.789063\\-103.4362\\207\\12.69531\\-101.9075\\207\\14.64844\\-101.426\\207\\18.55469\\-100.1176\\207\\20.50781\\-99.81549\\207\\26.36719\\-99.02994\\207\\28.32031\\-98.55988\\207\\30.27344\\-98.19846\\207\\32.22656\\-97.93976\\207\\38.08594\\-97.31898\\207\\40.03906\\-97.07422\\207\\43.94531\\-96.47166\\207\\47.85156\\-96.1801\\207\\53.71094\\-95.97908\\207\\57.61719\\-95.9451\\207\\63.47656\\-96.07487\\207\\69.33594\\-96.47166\\207\\71.28906\\-96.70463\\207\\73.24219\\-97.06994\\207\\79.10156\\-98.02164\\207\\81.05469\\-98.55988\\207\\83.00781\\-99.25246\\207\\86.91406\\-100.0333\\207\\88.86719\\-100.8544\\207\\92.77344\\-102.2716\\207\\94.72656\\-103.4048\\207\\96.67969\\-104.3415\\207\\100.5859\\-106.7836\\207\\102.5391\\-107.7767\\207\\104.4922\\-109.2126\\207\\108.3984\\-112.2442\\207\\110.6491\\-114.3203\\207\\111.8601\\-116.2734\\207\\115.6734\\-120.1797\\207\\117.2406\\-122.1328\\207\\118.248\\-124.0859\\207\\120.1172\\-126.4878\\207\\122.0703\\-129.5432\\207\\122.4073\\-129.9453\\207\\122.9452\\-131.8984\\207\\123.83\\-133.8516\\207\\124.9012\\-135.8047\\207\\125.4391\\-137.7578\\207\\126.7034\\-139.7109\\207\\127.0116\\-141.6641\\207\\128.2097\\-143.6172\\207\\128.5015\\-145.5703\\207\\129.3855\\-149.4766\\207\\129.351\\-151.4297\\207\\129.4899\\-153.3828\\207\\130.1651\\-155.3359\\207\\130.2299\\-161.1953\\207\\130.3275\\-163.1484\\207\\131.3065\\-165.1016\\207\\131.4314\\-169.0078\\207\\131.4364\\-170.9609\\207\\131.3477\\-174.8672\\207\\131.121\\-180.7266\\207\\130.9136\\-184.6328\\207\\130.4139\\-192.4453\\207\\130.2426\\-196.3516\\207\\130.0746\\-198.3047\\207\\129.8828\\-198.7523\\207\\127.9297\\-198.5091\\207\\125.9766\\-198.4675\\207\\124.0234\\-198.5488\\207\\118.1641\\-198.5488\\207\\116.2109\\-198.9395\\207\\114.7461\\-200.2578\\207\\114.2578\\-200.4301\\207\\108.3984\\-200.502\\207\\106.4453\\-201.1646\\207\\104.4922\\-200.6205\\207\\102.5391\\-200.5675\\207\\100.5859\\-201.4514\\207\\98.63281\\-201.5895\\207\\97.26563\\-202.2109\\207\\94.72656\\-202.7188\\207\\90.82031\\-202.7188\\207\\88.86719\\-202.2342\\207\\86.91406\\-201.9446\\207\\84.96094\\-201.9668\\207\\83.00781\\-202.1133\\207\\81.05469\\-202.7399\\207\\79.10156\\-202.7399\\207\\75.19531\\-202.875\\207\\73.24219\\-203.0015\\207\\71.95724\\-204.1641\\207\\71.28906\\-204.4814\\207\\70.58377\\-204.1641\\207\\69.33594\\-203.0945\\207\\67.38281\\-202.9855\\207\\65.42969\\-203.3503\\207\\64.45313\\-204.1641\\207\\63.47656\\-204.5213\\207\\59.57031\\-204.5213\\207\\57.61719\\-205.2555\\207\\56.57087\\-206.1172\\207\\55.66406\\-206.3523\\207\\54.25347\\-206.1172\\207\\53.71094\\-205.7103\\207\\51.75781\\-204.641\\207\\49.80469\\-206.177\\207\\45.89844\\-206.6473\\207\\43.94531\\-208.2426\\207\\41.99219\\-208.1313\\207\\40.03906\\-206.4485\\207\\38.08594\\-206.9375\\207\\36.59539\\-208.0703\\207\\36.13281\\-208.2426\\207\\30.27344\\-208.2769\\207\\28.32031\\-208.6563\\207\\26.36719\\-208.4558\\207\\24.41406\\-209.0469\\207\\23.38867\\-210.0234\\207\\22.46094\\-210.5249\\207\\20.50781\\-210.8122\\207\\19.19158\\-211.9766\\207\\18.55469\\-212.2583\\207\\14.64844\\-212.3202\\207\\12.69531\\-212.8404\\207\\10.74219\\-214.8656\\207\\9.632458\\-215.8828\\207\\8.789063\\-216.4451\\207\\6.835938\\-216.9082\\207\\5.67627\\-217.8359\\207\\4.882813\\-218.1119\\207\\2.929688\\-218.1544\\207\\1.464844\\-217.8359\\207\\0.9765625\\-217.4603\\207\\-0.9765625\\-216.5634\\207\\-2.476283\\-217.8359\\207\\-2.792969\\-219.7891\\207\\-3.78418\\-219.7891\\207\\-4.882813\\-219.1613\\207\\-8.789063\\-218.3583\\207\\-12.69531\\-218.2225\\207\\-14.64844\\-219.1613\\207\\-15.38086\\-219.7891\\207\\-16.60156\\-220.0554\\207\\-20.50781\\-220.0909\\207\\-22.46094\\-218.3242\\207\\-24.41406\\-218.427\\207\\-25.85178\\-219.7891\\207\\-26.36719\\-220.1146\\207\\-32.22656\\-220.0909\\207\\-34.17969\\-220.6726\\207\\-36.13281\\-220.1688\\207\\-38.08594\\-221.7625\\207\\-40.03906\\-221.6608\\207\\-41.99219\\-222.4049\\207\\-43.94531\\-222.4746\\207\\-47.85156\\-222.3807\\207\\-51.75781\\-222.5167\\207\\-53.71094\\-222.5017\\207\\-55.17578\\-223.6953\\207\\-55.66406\\-223.9573\\207\\-57.61719\\-222.5167\\207\\-59.57031\\-222.6141\\207\\-60.94638\\-223.6953\\207\\-61.52344\\-224.005\\207\\-63.47656\\-224.0814\\207\\-64.58334\\-223.6953\\207\\-65.42969\\-222.99\\207\\-66.48763\\-223.6953\\207\\-67.38281\\-223.9573\\207\\-69.33594\\-223.8479\\207\\-71.28906\\-222.5444\\207\\-72.9852\\-223.6953\\207\\-73.52941\\-223.6953\\207\\-75.19531\\-222.6061\\207\\-77.14844\\-223.47\\207\\-81.05469\\-224.0906\\207\\-83.00781\\-224.0441\\207\\-84.05413\\-223.6953\\207\\-84.96094\\-223.0271\\207\\-86.01888\\-223.6953\\207\\-86.91406\\-225.4857\\207\\-88.86719\\-224.0906\\207\\-90.82031\\-224.4684\\207\\-92.77344\\-224.1836\\207\\-94.72656\\-224.0912\\207\\-96.67969\\-224.557\\207\\-98.63281\\-224.0906\\207\\-100.5859\\-224.1614\\207\\-102.5391\\-225.8835\\207\\-104.4922\\-225.8835\\207\\-106.4453\\-224.2568\\207\\-108.3984\\-225.5597\\207\\-110.3516\\-224.5498\\207\\-112.3047\\-224.3024\\207\\-114.2578\\-224.2908\\207\\-116.2109\\-225.9449\\207\\-118.1641\\-225.9449\\207\\-120.1172\\-227.6602\\207\\-122.0703\\-226.3809\\207\\-124.0234\\-226.3356\\207\\-125.7324\\-227.6016\\207"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002197"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "263"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "230"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-131.8359\\-171.1004\\209\\-132.0539\\-167.0547\\209\\-132.1875\\-163.1484\\209\\-132.0247\\-161.1953\\209\\-130.4726\\-159.2422\\209\\-130.6424\\-153.3828\\209\\-129.862\\-151.4297\\209\\-129.289\\-149.4766\\209\\-129.7689\\-147.5234\\209\\-129.9253\\-145.5703\\209\\-129.2623\\-143.6172\\209\\-128.8806\\-141.6641\\209\\-128.3138\\-139.7109\\209\\-128.0671\\-137.7578\\209\\-126.7183\\-135.8047\\209\\-125.9844\\-133.8516\\209\\-124.0234\\-130.5744\\209\\-123.4444\\-129.9453\\209\\-122.8793\\-127.9922\\209\\-121.2713\\-126.0391\\209\\-120.6172\\-124.0859\\209\\-118.1641\\-121.3917\\209\\-116.2109\\-119.4688\\209\\-115.1808\\-118.2266\\209\\-114.2578\\-117.4084\\209\\-112.3047\\-115.3205\\209\\-111.1424\\-114.3203\\209\\-109.2832\\-112.3672\\209\\-108.3984\\-111.6388\\209\\-106.4453\\-109.6491\\209\\-104.4922\\-108.3361\\209\\-102.5391\\-107.4777\\209\\-100.5859\\-106.9095\\209\\-100.1332\\-106.5078\\209\\-98.63281\\-105.6109\\209\\-94.72656\\-103.7609\\209\\-92.77344\\-103.4784\\209\\-90.82031\\-102.1804\\209\\-86.91406\\-101.8259\\209\\-84.96094\\-100.9606\\209\\-83.00781\\-100.7106\\209\\-81.05469\\-100.5645\\209\\-79.10156\\-99.71162\\209\\-73.24219\\-99.02552\\209\\-69.33594\\-98.40234\\209\\-63.47656\\-97.95643\\209\\-47.85156\\-97.0487\\209\\-45.89844\\-97.01386\\209\\-43.94531\\-97.58422\\209\\-41.99219\\-97.71875\\209\\-32.22656\\-97.79561\\209\\-28.32031\\-97.9567\\209\\-26.36719\\-98.116\\209\\-24.41406\\-99.1729\\209\\-22.46094\\-99.47305\\209\\-18.55469\\-99.67776\\209\\-16.60156\\-99.9035\\209\\-14.64844\\-100.8187\\209\\-12.69531\\-101.2523\\209\\-10.74219\\-101.9525\\209\\-8.789063\\-102.31\\209\\-6.835938\\-103.3208\\209\\-4.882813\\-103.8055\\209\\-2.929688\\-104.1379\\209\\-0.9765625\\-105.5084\\209\\2.929688\\-105.6174\\209\\6.835938\\-105.5371\\209\\8.789063\\-104.1227\\209\\10.74219\\-103.6436\\209\\12.69531\\-102.3978\\209\\14.64844\\-102.0545\\209\\16.60156\\-101.317\\209\\18.55469\\-100.9362\\209\\20.50781\\-100.7161\\209\\22.46094\\-99.89098\\209\\26.36719\\-99.6134\\209\\30.27344\\-99.485\\209\\32.22656\\-98.88697\\209\\34.17969\\-98.04603\\209\\40.03906\\-97.80795\\209\\43.94531\\-97.77141\\209\\45.89844\\-97.30946\\209\\47.85156\\-96.51839\\209\\53.71094\\-96.31153\\209\\57.61719\\-96.28368\\209\\63.47656\\-96.4362\\209\\65.42969\\-96.5806\\209\\67.38281\\-97.703\\209\\69.33594\\-97.78677\\209\\73.24219\\-97.83308\\209\\77.14844\\-98.03548\\209\\78.48987\\-98.69531\\209\\79.10156\\-99.17518\\209\\81.05469\\-99.59724\\209\\83.00781\\-99.7275\\209\\88.86719\\-101.4531\\209\\90.82031\\-102.1475\\209\\92.77344\\-103.56\\209\\94.72656\\-103.9665\\209\\96.67969\\-105.6141\\209\\100.5859\\-107.4283\\209\\102.5391\\-108.8961\\209\\104.4922\\-109.8518\\209\\107.3242\\-112.3672\\209\\108.3984\\-113.5711\\209\\109.2262\\-114.3203\\209\\109.7841\\-116.2734\\209\\111.414\\-118.2266\\209\\113.3827\\-120.1797\\209\\115.2344\\-122.1328\\209\\115.6561\\-124.0859\\209\\117.207\\-126.0391\\209\\118.1641\\-127.0572\\209\\118.5272\\-127.9922\\209\\120.3906\\-129.9453\\209\\120.3451\\-131.8984\\209\\120.4007\\-133.8516\\209\\120.1172\\-134.6506\\209\\118.1641\\-134.5276\\209\\116.5039\\-135.8047\\209\\116.2109\\-136.3906\\209\\114.2578\\-136.7813\\209\\110.3516\\-136.7813\\209\\108.3984\\-137.5137\\209\\104.4922\\-137.5625\\209\\102.5391\\-137.9531\\209\\98.63281\\-137.9531\\209\\96.67969\\-138.4902\\209\\92.77344\\-138.4902\\209\\90.82031\\-138.3438\\209\\88.86719\\-137.9206\\209\\86.91406\\-138.9785\\209\\84.96094\\-138.7344\\209\\83.00781\\-139.0134\\209\\81.05469\\-138.7344\\209\\78.125\\-139.7109\\209\\77.14844\\-139.9551\\209\\75.19531\\-139.9063\\209\\73.24219\\-139.5156\\209\\71.28906\\-140.2969\\209\\69.33594\\-140.0365\\209\\67.38281\\-140.4434\\209\\65.42969\\-141.3385\\209\\63.47656\\-141.4199\\209\\61.52344\\-141.9896\\209\\59.57031\\-143.1289\\209\\57.61719\\-143.373\\209\\55.66406\\-143.4219\\209\\53.71094\\-143.8613\\209\\51.75781\\-143.9427\\209\\49.80469\\-143.8613\\209\\47.85156\\-144.5938\\209\\43.94531\\-145.3262\\209\\41.99219\\-145.082\\209\\39.0625\\-145.5703\\209\\38.08594\\-145.8958\\209\\36.13281\\-145.9365\\209\\34.17969\\-146.5469\\209\\30.27344\\-147.2793\\209\\28.32031\\-147.849\\209\\27.83203\\-147.5234\\209\\26.36719\\-147.1049\\209\\23.92578\\-147.5234\\209\\22.46094\\-148.9883\\209\\20.50781\\-149.151\\209\\18.55469\\-148.221\\209\\16.60156\\-147.4014\\209\\16.40625\\-147.5234\\209\\15.25879\\-149.4766\\209\\17.57813\\-151.4297\\209\\18.35938\\-153.3828\\209\\18.55469\\-153.5223\\209\\19.22286\\-155.3359\\209\\18.55469\\-156.7465\\209\\18.14779\\-157.2891\\209\\16.60156\\-160.6319\\209\\16.11328\\-161.1953\\209\\14.64844\\-162.2173\\209\\13.49198\\-161.1953\\209\\13.73106\\-159.2422\\209\\14.64844\\-158.0313\\209\\15.625\\-157.2891\\209\\15.93339\\-155.3359\\209\\15.80256\\-153.3828\\209\\15.23438\\-151.4297\\209\\14.64844\\-150.6973\\209\\12.69531\\-150.6973\\209\\11.71875\\-147.5234\\209\\10.74219\\-146.73\\209\\9.684245\\-147.5234\\209\\8.789063\\-151.1042\\209\\5.859377\\-151.4297\\209\\4.882813\\-152.4063\\209\\2.929688\\-152.8945\\209\\0.9765625\\-152.4063\\209\\-0.9765625\\-152.4063\\209\\-3.906252\\-151.4297\\209\\-6.835938\\-150.8193\\209\\-8.789063\\-150.7321\\209\\-8.957436\\-151.4297\\209\\-8.789063\\-152.2435\\209\\-8.029513\\-153.3828\\209\\-7.93457\\-155.3359\\209\\-8.32648\\-157.2891\\209\\-8.789063\\-158.7539\\209\\-12.36979\\-157.2891\\209\\-12.69531\\-157.228\\209\\-14.07138\\-155.3359\\209\\-14.64844\\-154.278\\209\\-15.31982\\-153.3828\\209\\-16.60156\\-150.9414\\209\\-20.50781\\-152.1272\\209\\-22.46094\\-152.8945\\209\\-24.41406\\-153.5223\\209\\-26.36719\\-153.9688\\209\\-28.32031\\-155.4754\\209\\-30.27344\\-155.8242\\209\\-32.22656\\-157.0449\\209\\-34.17969\\-157.5332\\209\\-36.13281\\-157.5332\\209\\-40.03906\\-158.998\\209\\-41.01562\\-159.2422\\209\\-40.85286\\-161.1953\\209\\-40.03906\\-162.416\\209\\-38.57422\\-165.1016\\209\\-40.03906\\-165.6875\\209\\-41.99219\\-166.0781\\209\\-43.94531\\-166.7292\\209\\-47.85156\\-166.8105\\209\\-51.75781\\-167.8685\\209\\-53.71094\\-167.8685\\209\\-55.66406\\-168.4219\\209\\-59.57031\\-169.2031\\209\\-65.42969\\-169.9844\\209\\-65.84821\\-169.0078\\209\\-66.16211\\-167.0547\\209\\-67.38281\\-165.4271\\209\\-69.33594\\-165.6875\\209\\-71.28906\\-165.6875\\209\\-73.24219\\-165.9154\\209\\-79.10156\\-165.834\\209\\-81.05469\\-165.6875\\209\\-83.00781\\-164.9063\\209\\-88.86719\\-166.0781\\209\\-90.82031\\-166.3223\\209\\-92.77344\\-166.4688\\209\\-94.72656\\-166.4688\\209\\-96.67969\\-167.2175\\209\\-98.63281\\-167.6406\\209\\-100.5859\\-167.6406\\209\\-102.5391\\-168.0313\\209\\-104.4922\\-168.0313\\209\\-106.4453\\-168.2754\\209\\-108.3984\\-168.4219\\209\\-110.3516\\-168.4219\\209\\-112.3047\\-168.6823\\209\\-114.2578\\-169.1473\\209\\-118.1641\\-169.2031\\209\\-120.1172\\-168.5195\\209\\-122.0703\\-169.1706\\209\\-124.0234\\-169.7054\\209\\-125.9766\\-169.5938\\209\\-129.8828\\-170.4727\\209"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002197"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "231"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "51.75781\\-192.8374\\209\\47.85156\\-191.9751\\209\\45.89844\\-191.3626\\209\\43.94531\\-189.9756\\209\\41.99219\\-188.0658\\209\\40.6562\\-186.5859\\209\\39.25341\\-184.6328\\209\\38.76101\\-182.6797\\209\\38.01957\\-180.7266\\209\\37.71973\\-178.7734\\209\\37.64416\\-176.8203\\209\\37.83308\\-174.8672\\209\\39.07697\\-170.9609\\209\\40.4077\\-169.0078\\209\\41.99219\\-167.0938\\209\\43.94531\\-165.3\\209\\45.89844\\-163.7719\\209\\47.85156\\-162.8125\\209\\51.75781\\-161.8297\\209\\53.71094\\-161.7799\\209\\55.66406\\-161.8635\\209\\57.61719\\-162.2324\\209\\61.52344\\-163.3738\\209\\63.47656\\-165.071\\209\\65.42969\\-167.1659\\209\\66.8288\\-169.0078\\209\\67.50036\\-170.9609\\209\\68.29279\\-172.9141\\209\\68.82983\\-174.8672\\209\\69.01041\\-176.8203\\209\\68.90412\\-178.7734\\209\\68.52979\\-180.7266\\209\\67.87456\\-182.6797\\209\\65.75801\\-186.5859\\209\\64.19906\\-188.5391\\209\\63.47656\\-189.2616\\209\\61.52344\\-190.8434\\209\\59.57031\\-191.5836\\209\\57.61719\\-192.0448\\209\\55.66406\\-192.721\\209\\53.71094\\-192.9473\\209"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002196"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "232"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-83.00781\\-104.6361\\211\\-83.00781\\-104.4937\\211\\-81.05469\\-104.4896\\211\\-79.92188\\-102.6016\\211\\-79.10156\\-102.0473\\211\\-78.125\\-100.6484\\211\\-77.14844\\-100.2377\\211\\-73.24219\\-100.1109\\211\\-65.42969\\-100.105\\211\\-63.47656\\-99.59558\\211\\-61.55599\\-98.69531\\211\\-55.66406\\-98.38308\\211\\-45.89844\\-98.39959\\211\\-45.37354\\-98.69531\\211\\-43.94531\\-100.3512\\211\\-41.99219\\-100.5539\\211\\-39.0625\\-100.6484\\211\\-40.03906\\-100.7569\\211\\-43.94531\\-102.1133\\211\\-45.89844\\-102.5625\\211\\-47.85156\\-102.8269\\211\\-49.80469\\-103.5171\\211\\-51.75781\\-103.8385\\211\\-53.71094\\-104.3594\\211\\-55.66406\\-104.4849\\211\\-59.57031\\-104.4937\\211\\-61.52344\\-104.7988\\211\\-63.47656\\-104.4462\\211\\-67.38281\\-104.4896\\211\\-69.33594\\-104.78\\211\\-71.28906\\-105.1761\\211\\-73.24219\\-105.165\\211\\-77.14844\\-104.4896\\211\\-79.10156\\-104.4659\\211\\-81.05469\\-104.6435\\211"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002196"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "233"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "45.89844\\-191.2246\\211\\43.94531\\-189.441\\211\\43.23557\\-188.5391\\211\\41.29895\\-186.5859\\211\\40.03906\\-184.5932\\211\\39.17034\\-182.6797\\211\\38.04656\\-178.7734\\211\\38.06212\\-176.8203\\211\\38.71783\\-174.8672\\211\\39.1344\\-172.9141\\211\\39.90834\\-170.9609\\211\\41.09792\\-169.0078\\211\\43.94531\\-165.7084\\211\\45.89844\\-164.3343\\211\\51.75781\\-162.8821\\211\\53.71094\\-162.8119\\211\\55.66406\\-163.0798\\211\\57.61719\\-163.2176\\211\\59.57031\\-163.7488\\211\\61.52344\\-164.6063\\211\\62.06092\\-165.1016\\211\\63.73312\\-167.0547\\211\\65.42969\\-169.2883\\211\\66.36002\\-170.9609\\211\\67.10085\\-172.9141\\211\\68.543\\-174.8672\\211\\69.14247\\-176.8203\\211\\68.88458\\-178.7734\\211\\67.82362\\-180.7266\\211\\66.90079\\-182.6797\\211\\66.20002\\-184.6328\\211\\64.85324\\-186.5859\\211\\63.47656\\-189.0774\\211\\62.42559\\-190.4922\\211\\61.52344\\-191.2623\\211\\59.57031\\-191.6682\\211\\57.61719\\-191.6891\\211\\53.71094\\-192.2084\\211\\49.80469\\-191.8809\\211\\47.85156\\-191.8428\\211"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002195"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "234"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "45.89844\\-191.5885\\213\\43.94531\\-189.3946\\213\\42.22552\\-186.5859\\213\\40.52734\\-184.6328\\213\\39.52474\\-182.6797\\213\\38.42298\\-180.7266\\213\\38.04688\\-178.7734\\213\\38.09524\\-176.8203\\213\\38.88434\\-174.8672\\213\\39.47303\\-172.9141\\213\\40.57943\\-170.9609\\213\\41.3769\\-169.0078\\213\\43.09824\\-167.0547\\213\\43.94531\\-165.9517\\213\\45.89844\\-164.2711\\213\\47.85156\\-164.0427\\213\\51.75781\\-163.7856\\213\\53.71094\\-163.7527\\213\\55.66406\\-163.8592\\213\\59.57031\\-163.6367\\213\\61.52344\\-164.8556\\213\\64.68461\\-169.0078\\213\\65.85217\\-170.9609\\213\\66.52222\\-172.9141\\213\\68.27126\\-174.8672\\213\\69.87601\\-176.8203\\213\\68.8829\\-178.7734\\213\\66.91108\\-180.7266\\213\\66.41228\\-182.6797\\213\\65.77897\\-184.6328\\213\\64.27361\\-186.5859\\213\\63.60427\\-188.5391\\213\\62.11605\\-190.4922\\213\\61.52344\\-191.0425\\213\\59.57031\\-191.7453\\213\\57.61719\\-191.4547\\213\\53.71094\\-191.7867\\213\\49.80469\\-191.6541\\213\\47.85156\\-192.1294\\213"
-                     }
-                  }
-               ]
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "1"
-            }
-         },
-         {
-            "3006,002a" : {
-               "Name" : "ROIDisplayColor",
-               "Type" : "String",
-               "Value" : "255\\128\\0"
-            },
-            "3006,0040" : {
-               "Name" : "ContourSequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "0"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.822617\\-185.532\\-53\\-3.217159\\-185.016\\-53\\-4.008816\\-184.5845\\-53\\-5.647892\\-183.1425\\-53\\-6.398726\\-182.0491\\-53\\-7.210587\\-180.1176\\-53\\-7.346458\\-179.2563\\-53\\-7.377643\\-177.2732\\-53\\-7.126414\\-176.1662\\-53\\-6.619712\\-174.8111\\-53\\-5.605105\\-173.2615\\-53\\-4.617378\\-172.2797\\-53\\-2.766951\\-171.1722\\-53\\-1.271545\\-170.6588\\-53\\-0.0942254\\-170.4699\\-53\\2.401256\\-170.6252\\-53\\4.452537\\-171.345\\-53\\5.834437\\-172.2258\\-53\\6.781363\\-173.1533\\-53\\7.660157\\-174.3542\\-53\\8.380367\\-175.9948\\-53\\8.713982\\-178.0575\\-53\\8.469196\\-180.1765\\-53\\7.653542\\-182.0623\\-53\\6.902081\\-183.148\\-53\\5.191735\\-184.6208\\-53\\4.422974\\-185.0313\\-53\\3.000576\\-185.5425\\-53\\1.200459\\-185.8655\\-53\\0.01856305\\-185.8689\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "1"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.341555\\-188.6337\\-51\\-3.535146\\-188.3137\\-51\\-5.369791\\-187.5508\\-51\\-7.173401\\-186.3121\\-51\\-8.14281\\-185.3723\\-51\\-8.990662\\-184.2822\\-51\\-9.847253\\-182.7528\\-51\\-10.39609\\-181.203\\-51\\-10.71813\\-179.6096\\-51\\-10.77989\\-177.9484\\-51\\-10.54996\\-176.1485\\-51\\-10.1444\\-174.7373\\-51\\-9.088316\\-172.5497\\-51\\-8.272603\\-171.4671\\-51\\-7.298368\\-170.4557\\-51\\-6.209515\\-169.5924\\-51\\-4.749192\\-168.7345\\-51\\-2.19852\\-167.8273\\-51\\-0.6399968\\-167.5823\\-51\\1.771882\\-167.5708\\-51\\4.245574\\-168.0636\\-51\\5.91089\\-168.708\\-51\\7.559203\\-169.6802\\-51\\8.420381\\-170.3498\\-51\\9.505224\\-171.4484\\-51\\10.31162\\-172.5158\\-51\\11.35321\\-174.6068\\-51\\11.81211\\-176.1853\\-51\\11.97659\\-177.2013\\-51\\11.94348\\-179.7251\\-51\\11.63167\\-181.2601\\-51\\10.85321\\-183.1923\\-51\\10.08713\\-184.4571\\-51\\8.580834\\-186.1377\\-51\\6.968125\\-187.3102\\-51\\4.756684\\-188.2898\\-51\\3.254199\\-188.6678\\-51\\1.365167\\-188.914\\-51\\-0.09017476\\-188.9274\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "2"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.608414\\-190.8814\\-49\\-2.645632\\-190.735\\-49\\-4.589392\\-190.2724\\-49\\-7.0136\\-189.2481\\-49\\-8.287686\\-188.4489\\-49\\-9.628903\\-187.2869\\-49\\-10.3438\\-186.5149\\-49\\-11.82217\\-184.2494\\-49\\-12.70732\\-181.9412\\-49\\-12.98179\\-180.6998\\-49\\-13.16898\\-178.4189\\-49\\-13.05518\\-176.7242\\-49\\-12.85543\\-175.5786\\-49\\-12.08132\\-173.2456\\-49\\-11.03628\\-171.3663\\-49\\-9.825652\\-169.8201\\-49\\-8.695223\\-168.7595\\-49\\-7.077835\\-167.6154\\-49\\-5.095147\\-166.6542\\-49\\-3.767403\\-166.1914\\-49\\-2.059778\\-165.8097\\-49\\-0.6657854\\-165.6538\\-49\\1.859423\\-165.656\\-49\\3.165309\\-165.8142\\-49\\4.951316\\-166.2173\\-49\\6.370563\\-166.7074\\-49\\8.303261\\-167.6476\\-49\\9.938641\\-168.799\\-49\\11.07829\\-169.8779\\-49\\12.73386\\-172.1206\\-49\\13.48909\\-173.6905\\-49\\14.06981\\-175.5351\\-49\\14.36629\\-177.6962\\-49\\14.37679\\-179.1843\\-49\\13.92681\\-181.9256\\-49\\13.02016\\-184.2536\\-49\\11.53705\\-186.488\\-49\\10.66682\\-187.4052\\-49\\8.596537\\-188.9759\\-49\\7.012528\\-189.7673\\-49\\5.771133\\-190.215\\-49\\3.820653\\-190.6934\\-49\\0.915529\\-190.9782\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "3"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.766109\\-192.449\\-47\\-4.545334\\-192.0033\\-47\\-6.383731\\-191.4537\\-47\\-8.912426\\-190.2184\\-47\\-10.74276\\-188.8016\\-47\\-11.76466\\-187.7107\\-47\\-12.85325\\-186.2136\\-47\\-13.4939\\-185.0675\\-47\\-14.16497\\-183.4894\\-47\\-14.80652\\-181.0453\\-47\\-14.9981\\-178.2717\\-47\\-14.73243\\-175.6446\\-47\\-14.22203\\-173.7833\\-47\\-13.71214\\-172.5214\\-47\\-12.9784\\-171.1141\\-47\\-12.20102\\-169.9789\\-47\\-11.17459\\-168.7754\\-47\\-9.609863\\-167.3787\\-47\\-7.623668\\-166.1301\\-47\\-5.717514\\-165.303\\-47\\-3.140729\\-164.6207\\-47\\-0.2983212\\-164.2986\\-47\\1.37434\\-164.3013\\-47\\4.332889\\-164.6626\\-47\\6.884155\\-165.3468\\-47\\8.175083\\-165.8712\\-47\\9.766849\\-166.7243\\-47\\11.6268\\-168.0956\\-47\\13.3617\\-169.9562\\-47\\14.39541\\-171.511\\-47\\15.38894\\-173.6825\\-47\\15.94131\\-175.6663\\-47\\16.11355\\-176.7408\\-47\\16.20782\\-178.5872\\-47\\16.01542\\-181.0023\\-47\\15.35206\\-183.5091\\-47\\14.85419\\-184.6912\\-47\\13.86121\\-186.4645\\-47\\12.95067\\-187.6651\\-47\\11.65571\\-188.9811\\-47\\10.10412\\-190.1278\\-47\\7.54406\\-191.3674\\-47\\5.612908\\-191.9473\\-47\\2.955307\\-192.4017\\-47\\0.9817407\\-192.5283\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "4"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.140761\\-193.7074\\-45\\-4.687198\\-193.3627\\-45\\-6.623366\\-192.8527\\-45\\-8.896114\\-191.9043\\-45\\-10.65378\\-190.7969\\-45\\-11.66073\\-189.9634\\-45\\-12.79229\\-188.8113\\-45\\-13.77693\\-187.5283\\-45\\-14.69869\\-185.9812\\-45\\-15.44591\\-184.3086\\-45\\-16.02585\\-182.3833\\-45\\-16.37223\\-180.4318\\-45\\-16.45874\\-179.1066\\-45\\-16.41418\\-177.2073\\-45\\-16.11909\\-175.2643\\-45\\-15.4728\\-173.0481\\-45\\-14.9034\\-171.7483\\-45\\-13.86018\\-169.9272\\-45\\-12.73055\\-168.4862\\-45\\-11.96184\\-167.6871\\-45\\-10.60552\\-166.5473\\-45\\-9.521469\\-165.8239\\-45\\-7.886041\\-164.9711\\-45\\-6.418256\\-164.3974\\-45\\-4.860384\\-163.9617\\-45\\-2.930271\\-163.5989\\-45\\-0.72114\\-163.4032\\-45\\1.8841\\-163.4224\\-45\\3.771169\\-163.6114\\-45\\5.364509\\-163.879\\-45\\7.559484\\-164.4669\\-45\\9.085904\\-165.0659\\-45\\10.46447\\-165.765\\-45\\11.71759\\-166.56\\-45\\13.49652\\-168.0904\\-45\\15.06668\\-169.9921\\-45\\15.72351\\-171.0691\\-45\\16.67154\\-173.0784\\-45\\17.31111\\-175.2739\\-45\\17.6105\\-177.2485\\-45\\17.65084\\-179.2095\\-45\\17.33424\\-181.8578\\-45\\16.62098\\-184.3224\\-45\\15.88099\\-185.9563\\-45\\14.61162\\-187.969\\-45\\12.93161\\-189.8138\\-45\\11.82021\\-190.7118\\-45\\10.06631\\-191.7967\\-45\\7.79474\\-192.7375\\-45\\5.85596\\-193.2606\\-45\\2.902209\\-193.6915\\-45\\0.6107318\\-193.8097\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "5"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.947727\\-194.6507\\-43\\-6.683777\\-194.0739\\-43\\-8.366441\\-193.4799\\-43\\-10.49791\\-192.3744\\-43\\-11.74501\\-191.4837\\-43\\-12.83203\\-190.5254\\-43\\-14.53089\\-188.5235\\-43\\-15.66893\\-186.6947\\-43\\-16.35616\\-185.2073\\-43\\-16.88515\\-183.6866\\-43\\-17.36\\-181.7038\\-43\\-17.58575\\-179.8169\\-43\\-17.60777\\-177.949\\-43\\-17.42749\\-176.0556\\-43\\-16.99187\\-174.0566\\-43\\-16.29703\\-172.1052\\-43\\-15.68627\\-170.8136\\-43\\-14.61173\\-169.1167\\-43\\-13.76594\\-168.0586\\-43\\-12.5461\\-166.8405\\-43\\-10.72443\\-165.4708\\-43\\-9.581362\\-164.8218\\-43\\-8.044\\-164.128\\-43\\-6.546018\\-163.6264\\-43\\-3.792288\\-163.0456\\-43\\-2.35171\\-162.8714\\-43\\0.1365536\\-162.7499\\-43\\3.502366\\-162.9258\\-43\\5.039333\\-163.1376\\-43\\7.561336\\-163.6948\\-43\\9.051079\\-164.1841\\-43\\10.7699\\-164.9427\\-43\\12.85463\\-166.232\\-43\\14.07534\\-167.2561\\-43\\15.80034\\-169.1895\\-43\\16.66054\\-170.4831\\-43\\17.49128\\-172.1681\\-43\\18.18336\\-174.1126\\-43\\18.61912\\-176.1209\\-43\\18.7822\\-177.8264\\-43\\18.76648\\-179.8252\\-43\\18.54255\\-181.6972\\-43\\18.06285\\-183.6877\\-43\\17.53193\\-185.1978\\-43\\16.81882\\-186.7126\\-43\\16.17732\\-187.8007\\-43\\14.8746\\-189.5352\\-43\\13.99732\\-190.4683\\-43\\12.89922\\-191.4061\\-43\\11.12269\\-192.5905\\-43\\9.515988\\-193.361\\-43\\7.735961\\-193.9766\\-43\\5.124373\\-194.5478\\-43\\2.327199\\-194.8432\\-43\\0.5318326\\-194.9219\\-43\\-1.1571\\-194.8876\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "6"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.27534\\-195.8569\\-41\\-4.335244\\-195.623\\-41\\-5.918368\\-195.3287\\-41\\-8.253383\\-194.6237\\-41\\-9.518801\\-194.0752\\-41\\-11.41795\\-192.9626\\-41\\-12.81964\\-191.8723\\-41\\-14.07298\\-190.6338\\-41\\-14.98739\\-189.5319\\-41\\-16.48104\\-187.1359\\-41\\-17.2977\\-185.3021\\-41\\-18.10059\\-182.599\\-41\\-18.4371\\-180.3407\\-41\\-18.50148\\-178.2657\\-41\\-18.35611\\-176.4015\\-41\\-17.94641\\-174.1963\\-41\\-17.14885\\-171.8785\\-41\\-16.44548\\-170.4306\\-41\\-15.30129\\-168.6468\\-41\\-13.39483\\-166.5619\\-41\\-11.68497\\-165.2527\\-41\\-9.149891\\-163.9167\\-41\\-6.475635\\-163.0583\\-41\\-4.695973\\-162.7053\\-41\\-2.095681\\-162.4253\\-41\\0.1862088\\-162.355\\-41\\3.279232\\-162.4901\\-41\\6.518366\\-162.9473\\-41\\8.719695\\-163.4903\\-41\\11.35423\\-164.5342\\-41\\12.86096\\-165.3879\\-41\\14.68143\\-166.7743\\-41\\15.8761\\-168.0039\\-41\\16.82797\\-169.203\\-41\\17.62696\\-170.5009\\-41\\18.75608\\-173.0168\\-41\\19.35952\\-175.256\\-41\\19.67778\\-178.2775\\-41\\19.61115\\-180.3702\\-41\\19.05021\\-183.5517\\-41\\18.46996\\-185.3001\\-41\\17.93382\\-186.5632\\-41\\17.15242\\-188.0015\\-41\\16.15121\\-189.4989\\-41\\15.2311\\-190.5983\\-41\\13.99592\\-191.7868\\-41\\12.5863\\-192.862\\-41\\10.68986\\-193.9503\\-41\\8.988591\\-194.651\\-41\\7.111657\\-195.1968\\-41\\5.070956\\-195.5813\\-41\\3.444153\\-195.7864\\-41\\0.9071178\\-195.934\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "6.883477\\-196.1855\\-39\\3.31687\\-196.7449\\-39\\0.1840343\\-196.8911\\-39\\-2.168188\\-196.8065\\-39\\-5.131364\\-196.4182\\-39\\-6.865339\\-196.0183\\-39\\-8.391089\\-195.5025\\-39\\-10.35013\\-194.5941\\-39\\-12.31495\\-193.3082\\-39\\-14.41963\\-191.373\\-39\\-15.44767\\-190.1358\\-39\\-17.01392\\-187.6382\\-39\\-17.95422\\-185.5337\\-39\\-18.60554\\-183.4256\\-39\\-18.94471\\-181.7539\\-39\\-19.14719\\-179.9703\\-39\\-19.15868\\-177.733\\-39\\-18.9477\\-175.797\\-39\\-18.21297\\-172.8511\\-39\\-17.34949\\-170.792\\-39\\-16.36503\\-169.1001\\-39\\-14.84135\\-167.176\\-39\\-13.37627\\-165.8261\\-39\\-11.26581\\-164.4245\\-39\\-9.478131\\-163.5988\\-39\\-7.785415\\-163.0387\\-39\\-5.800844\\-162.5915\\-39\\-2.845564\\-162.2306\\-39\\-0.296187\\-162.1483\\-39\\2.879539\\-162.2264\\-39\\5.571328\\-162.5124\\-39\\7.021233\\-162.7483\\-39\\8.998903\\-163.2188\\-39\\10.64914\\-163.7668\\-39\\12.47289\\-164.611\\-39\\14.57109\\-165.9861\\-39\\16.06158\\-167.3453\\-39\\16.83329\\-168.2302\\-39\\17.80139\\-169.6003\\-39\\18.5317\\-170.8773\\-39\\19.2148\\-172.4211\\-39\\19.70044\\-173.9077\\-39\\20.11936\\-175.8158\\-39\\20.33403\\-177.7819\\-39\\20.32064\\-179.9968\\-39\\20.11448\\-181.7866\\-39\\19.77521\\-183.4439\\-39\\19.11833\\-185.5512\\-39\\18.17838\\-187.6401\\-39\\16.6192\\-190.1019\\-39\\15.58879\\-191.3326\\-39\\14.57395\\-192.329\\-39\\12.9265\\-193.6254\\-39\\11.5263\\-194.4823\\-39\\9.278243\\-195.4815\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "58"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.3652583\\-197.7523\\-37\\-2.84042\\-197.6062\\-37\\-5.249024\\-197.2277\\-37\\-7.959698\\-196.4566\\-37\\-9.176228\\-195.9621\\-37\\-10.75031\\-195.1422\\-37\\-12.37077\\-194.0488\\-37\\-14.18201\\-192.4338\\-37\\-15.01975\\-191.5288\\-37\\-16.36035\\-189.7464\\-37\\-17.25987\\-188.2488\\-37\\-18.20497\\-186.2015\\-37\\-18.99448\\-183.8128\\-37\\-19.40045\\-181.9088\\-37\\-19.62643\\-179.4507\\-37\\-19.59429\\-177.4891\\-37\\-19.37653\\-175.6184\\-37\\-19.02017\\-174.0032\\-37\\-18.41396\\-172.151\\-37\\-17.85656\\-170.8487\\-37\\-16.68548\\-168.8338\\-37\\-14.89802\\-166.6857\\-37\\-13.4893\\-165.4794\\-37\\-12.39336\\-164.7149\\-37\\-10.0785\\-163.5587\\-37\\-8.660318\\-163.0602\\-37\\-7.077616\\-162.6559\\-37\\-5.030459\\-162.3145\\-37\\-2.545675\\-162.0878\\-37\\-0.6050572\\-162.0288\\-37\\1.834189\\-162.0677\\-37\\4.870774\\-162.2885\\-37\\7.004755\\-162.5879\\-37\\9.824748\\-163.2504\\-37\\11.28433\\-163.7707\\-37\\13.48506\\-164.8479\\-37\\14.67924\\-165.6614\\-37\\16.14462\\-166.9021\\-37\\17.85059\\-168.9353\\-37\\19.03722\\-170.9476\\-37\\19.58371\\-172.214\\-37\\20.18371\\-174.0237\\-37\\20.55072\\-175.665\\-37\\20.76628\\-177.5179\\-37\\20.79492\\-179.6206\\-37\\20.55993\\-181.9842\\-37\\20.1623\\-183.8388\\-37\\19.37411\\-186.2137\\-37\\18.41123\\-188.2842\\-37\\16.8483\\-190.6992\\-37\\15.76595\\-191.9756\\-37\\13.64206\\-193.9089\\-37\\11.95624\\-195.0376\\-37\\9.522807\\-196.2016\\-37\\7.614946\\-196.8369\\-37\\6.393201\\-197.1375\\-37\\4.028552\\-197.5366\\-37\\1.585741\\-197.7315\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.011054\\-198.45\\-35\\-3.515336\\-198.2757\\-35\\-5.820865\\-197.8132\\-35\\-8.492883\\-196.9121\\-35\\-10.33341\\-195.9786\\-35\\-11.73128\\-195.1129\\-35\\-12.78396\\-194.3101\\-35\\-15.02464\\-192.1009\\-35\\-16.20895\\-190.5655\\-35\\-17.17096\\-189.049\\-35\\-18.33889\\-186.6698\\-35\\-19.16713\\-184.2496\\-35\\-19.6025\\-182.3057\\-35\\-19.795\\-180.8852\\-35\\-19.87189\\-178.8853\\-35\\-19.79253\\-176.8255\\-35\\-19.60343\\-175.46\\-35\\-19.16522\\-173.5886\\-35\\-18.36777\\-171.3731\\-35\\-16.93981\\-168.8086\\-35\\-15.47414\\-166.9951\\-35\\-14.23786\\-165.8372\\-35\\-12.23188\\-164.456\\-35\\-10.69007\\-163.6889\\-35\\-9.492958\\-163.2328\\-35\\-7.84963\\-162.7676\\-35\\-5.719952\\-162.3644\\-35\\-4.173187\\-162.184\\-35\\-1.681149\\-162.0459\\-35\\0.144162\\-162.037\\-35\\3.238762\\-162.1386\\-35\\6.88022\\-162.5323\\-35\\9.023931\\-162.9675\\-35\\10.75736\\-163.476\\-35\\13.31658\\-164.6056\\-35\\15.37676\\-165.9858\\-35\\16.63979\\-167.1398\\-35\\18.14849\\-168.9837\\-35\\19.53145\\-171.4421\\-35\\20.56552\\-174.5061\\-35\\20.96635\\-176.8945\\-35\\21.0423\\-179.024\\-35\\20.97064\\-180.8634\\-35\\20.77291\\-182.3294\\-35\\20.33835\\-184.2698\\-35\\19.50653\\-186.6964\\-35\\18.34611\\-189.0515\\-35\\16.86303\\-191.2905\\-35\\15.80127\\-192.5407\\-35\\13.99531\\-194.2418\\-35\\12.40674\\-195.3945\\-35\\9.707335\\-196.8209\\-35\\6.990014\\-197.741\\-35\\4.667814\\-198.2197\\-35\\3.190203\\-198.4089\\-35\\0.5833686\\-198.547\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.9237666\\-199.18\\-33\\2.717184\\-199.114\\-33\\4.315667\\-198.9167\\-33\\6.102829\\-198.5715\\-33\\9.199105\\-197.5732\\-33\\11.28817\\-196.5405\\-33\\12.50523\\-195.7674\\-33\\13.84302\\-194.7506\\-33\\14.92268\\-193.7848\\-33\\16.81388\\-191.6602\\-33\\18.52025\\-189.0442\\-33\\19.76457\\-186.3371\\-33\\20.14809\\-185.2369\\-33\\20.77979\\-182.741\\-33\\21.00422\\-181.1959\\-33\\21.12359\\-179.018\\-33\\20.98653\\-176.5416\\-33\\20.55878\\-174.2877\\-33\\19.96604\\-172.3991\\-33\\19.5264\\-171.3693\\-33\\18.52998\\-169.5264\\-33\\17.69972\\-168.3344\\-33\\16.80214\\-167.3034\\-33\\14.96535\\-165.6799\\-33\\13.39843\\-164.6786\\-33\\10.90186\\-163.5725\\-33\\8.356034\\-162.8876\\-33\\5.223742\\-162.3858\\-33\\2.483041\\-162.1695\\-33\\-1.293987\\-162.1078\\-33\\-4.056855\\-162.244\\-33\\-6.059783\\-162.4789\\-33\\-9.004567\\-163.121\\-33\\-10.69523\\-163.7302\\-33\\-12.17222\\-164.4402\\-33\\-14.42947\\-165.9964\\-33\\-15.65638\\-167.1688\\-33\\-16.65851\\-168.3688\\-33\\-17.57818\\-169.775\\-33\\-18.79206\\-172.3076\\-33\\-19.40941\\-174.2853\\-33\\-19.81692\\-176.4846\\-33\\-19.95404\\-178.8181\\-33\\-19.83517\\-181.1443\\-33\\-19.61795\\-182.6488\\-33\\-19.2083\\-184.4238\\-33\\-18.59839\\-186.2833\\-33\\-17.35473\\-188.9958\\-33\\-15.65456\\-191.6227\\-33\\-13.85898\\-193.6727\\-33\\-11.72565\\-195.4899\\-33\\-9.805804\\-196.7376\\-33\\-7.863381\\-197.6676\\-33\\-4.901328\\-198.6204\\-33\\-1.986058\\-199.0976\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "57"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "2.660912\\-199.6445\\-31\\4.226826\\-199.4462\\-31\\6.097453\\-199.0435\\-31\\7.896241\\-198.4689\\-31\\9.824241\\-197.6435\\-31\\10.8982\\-197.066\\-31\\12.3295\\-196.118\\-31\\14.01524\\-194.7723\\-31\\16.01427\\-192.7027\\-31\\17.05584\\-191.3518\\-31\\18.34218\\-189.2645\\-31\\19.24446\\-187.4211\\-31\\20.12814\\-184.9806\\-31\\20.54638\\-183.3534\\-31\\20.95838\\-180.4412\\-31\\20.9555\\-177.5709\\-31\\20.55608\\-174.8552\\-31\\19.94983\\-172.7844\\-31\\18.795\\-170.2538\\-31\\17.86502\\-168.8378\\-31\\16.46647\\-167.1849\\-31\\15.38389\\-166.2226\\-31\\13.51335\\-164.9364\\-31\\12.64582\\-164.4844\\-31\\10.32381\\-163.5727\\-31\\8.893404\\-163.1776\\-31\\6.505832\\-162.7141\\-31\\5.050382\\-162.527\\-31\\2.347314\\-162.3247\\-31\\-0.4595994\\-162.2558\\-31\\-3.967167\\-162.3983\\-31\\-7.341415\\-162.8928\\-31\\-9.122101\\-163.3443\\-31\\-11.0698\\-164.0863\\-31\\-12.28379\\-164.6953\\-31\\-13.70665\\-165.6371\\-31\\-15.32403\\-167.0487\\-31\\-16.68543\\-168.6904\\-31\\-17.64228\\-170.1695\\-31\\-18.78241\\-172.7049\\-31\\-19.38939\\-174.796\\-31\\-19.78473\\-177.5036\\-31\\-19.78773\\-180.3918\\-31\\-19.37545\\-183.3009\\-31\\-18.95291\\-184.9476\\-31\\-18.09381\\-187.3181\\-31\\-17.18\\-189.1844\\-31\\-15.88642\\-191.2932\\-31\\-14.81701\\-192.6714\\-31\\-12.63814\\-194.9186\\-31\\-11.07162\\-196.1511\\-31\\-9.025517\\-197.4393\\-31\\-7.531065\\-198.1386\\-31\\-4.926319\\-199.056\\-31\\-3.031982\\-199.4621\\-31\\-1.515858\\-199.6529\\-31\\0.7690603\\-199.7182\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "58"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "1.412349\\-200.0875\\-29\\3.219846\\-199.9358\\-29\\4.670805\\-199.6858\\-29\\6.861041\\-199.0859\\-29\\8.47685\\-198.4476\\-29\\10.25429\\-197.5354\\-29\\12.7034\\-195.8563\\-29\\14.17598\\-194.5401\\-29\\15.33043\\-193.2992\\-29\\16.49088\\-191.8359\\-29\\17.56162\\-190.1828\\-29\\18.38729\\-188.6836\\-29\\19.47412\\-186.0897\\-29\\20.10225\\-183.965\\-29\\20.55823\\-181.4346\\-29\\20.65493\\-178.4025\\-29\\20.54999\\-176.7789\\-29\\20.19482\\-174.8399\\-29\\19.77271\\-173.3128\\-29\\19.15315\\-171.7258\\-29\\18.3006\\-170.0972\\-29\\16.83395\\-168.0862\\-29\\15.78183\\-167.0124\\-29\\13.85394\\-165.5461\\-29\\12.41315\\-164.7274\\-29\\11.27372\\-164.2252\\-29\\8.254211\\-163.3058\\-29\\6.320167\\-162.9473\\-29\\3.673314\\-162.647\\-29\\-0.3223828\\-162.4922\\-29\\-2.568819\\-162.5553\\-29\\-5.216539\\-162.7949\\-29\\-7.057449\\-163.1081\\-29\\-8.775189\\-163.5559\\-29\\-11.27512\\-164.5356\\-29\\-12.69376\\-165.3564\\-29\\-14.61176\\-166.8408\\-29\\-15.66345\\-167.9321\\-29\\-17.1428\\-169.9929\\-29\\-17.98554\\-171.6288\\-29\\-18.60535\\-173.2359\\-29\\-19.0226\\-174.7456\\-29\\-19.3792\\-176.7111\\-29\\-19.47831\\-179.7989\\-29\\-19.3891\\-181.3425\\-29\\-18.92397\\-183.9145\\-29\\-18.26879\\-186.1048\\-29\\-17.17722\\-188.6788\\-29\\-15.81327\\-191.0266\\-29\\-14.4059\\-192.9133\\-29\\-13.07098\\-194.3863\\-29\\-11.61316\\-195.7147\\-29\\-10.07028\\-196.856\\-29\\-8.101531\\-198.0305\\-29\\-5.634142\\-199.0816\\-29\\-3.475472\\-199.68\\-29\\-2.032731\\-199.9321\\-29\\-0.2768756\\-200.085\\-29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.481232\\-199.746\\-27\\-5.013044\\-199.3006\\-27\\-7.25056\\-198.3716\\-27\\-8.585252\\-197.6228\\-27\\-11.1061\\-195.8249\\-27\\-13.23437\\-193.7473\\-27\\-14.42582\\-192.315\\-27\\-15.43683\\-190.8579\\-27\\-16.57709\\-188.8754\\-27\\-17.785\\-186.0533\\-27\\-18.49081\\-183.6031\\-27\\-18.79461\\-181.9119\\-27\\-18.9603\\-180.2495\\-27\\-18.93498\\-177.6739\\-27\\-18.7735\\-176.2413\\-27\\-18.40058\\-174.4273\\-27\\-17.72743\\-172.4099\\-27\\-16.46043\\-169.93\\-27\\-14.82731\\-167.8201\\-27\\-13.49565\\-166.5749\\-27\\-11.70075\\-165.3324\\-27\\-10.14801\\-164.5412\\-27\\-7.98289\\-163.7732\\-27\\-5.466483\\-163.2217\\-27\\-3.201627\\-162.9633\\-27\\0.7001616\\-162.8449\\-27\\4.365788\\-163.0684\\-27\\6.65586\\-163.3797\\-27\\9.191432\\-163.975\\-27\\11.30018\\-164.7283\\-27\\12.86595\\-165.5231\\-27\\14.7683\\-166.832\\-27\\15.99012\\-167.9712\\-27\\17.62197\\-170.0456\\-27\\18.37139\\-171.3631\\-27\\19.12995\\-173.1078\\-27\\19.56762\\-174.4957\\-27\\19.94318\\-176.3027\\-27\\20.10716\\-177.7353\\-27\\20.13619\\-180.2916\\-27\\19.96795\\-181.9967\\-27\\19.67255\\-183.6552\\-27\\18.95786\\-186.1509\\-27\\17.99604\\-188.4773\\-27\\17.21602\\-189.968\\-27\\15.59781\\-192.4395\\-27\\13.60563\\-194.7172\\-27\\12.31807\\-195.9032\\-27\\9.974627\\-197.5729\\-27\\8.451646\\-198.4279\\-27\\6.240468\\-199.333\\-27\\4.03852\\-199.9206\\-27\\1.516819\\-200.2208\\-27\\-0.3991877\\-200.2114\\-27\\-1.633978\\-200.0908\\-27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.185663\\-200.1234\\-25\\3.256205\\-199.9214\\-25\\5.832376\\-199.2668\\-25\\7.611921\\-198.543\\-25\\9.582726\\-197.4335\\-25\\11.26943\\-196.23\\-25\\13.54712\\-194.0715\\-25\\14.58444\\-192.8494\\-25\\16.24645\\-190.4324\\-25\\17.27654\\-188.506\\-25\\18.34132\\-185.8458\\-25\\18.95859\\-183.5814\\-25\\19.33558\\-181.1944\\-25\\19.4011\\-178.3316\\-25\\19.10145\\-175.8849\\-25\\18.66952\\-174.1868\\-25\\18.18242\\-172.7807\\-25\\17.34504\\-171.055\\-25\\16.17856\\-169.3289\\-25\\15.37545\\-168.4019\\-25\\13.35405\\-166.6551\\-25\\11.90313\\-165.7527\\-25\\10.7535\\-165.1932\\-25\\8.61746\\-164.4069\\-25\\5.583602\\-163.7381\\-25\\3.198856\\-163.44\\-25\\-0.4785639\\-163.3213\\-25\\-2.008536\\-163.3704\\-25\\-4.400415\\-163.6136\\-25\\-6.264466\\-163.9456\\-25\\-8.370073\\-164.5317\\-25\\-10.745\\-165.5811\\-25\\-12.508\\-166.7241\\-25\\-14.22305\\-168.2729\\-25\\-15.58332\\-169.9987\\-25\\-16.36557\\-171.3024\\-25\\-17.02022\\-172.7041\\-25\\-17.50209\\-174.1138\\-25\\-17.93183\\-175.8206\\-25\\-18.22518\\-178.2495\\-25\\-18.15415\\-181.1573\\-25\\-17.76797\\-183.5519\\-25\\-17.16986\\-185.7233\\-25\\-16.08179\\-188.4207\\-25\\-15.03626\\-190.3443\\-25\\-13.43329\\-192.6635\\-25\\-12.3151\\-193.9789\\-25\\-10.12761\\-196.0521\\-25\\-8.417209\\-197.3008\\-25\\-6.853009\\-198.2316\\-25\\-5.414006\\-198.8908\\-25\\-3.802698\\-199.4691\\-25\\-2.132722\\-199.8714\\-25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.07837604\\-199.6779\\-23\\2.431958\\-199.5861\\-23\\3.436413\\-199.4285\\-23\\5.20365\\-198.9564\\-23\\7.654629\\-197.9007\\-23\\9.649947\\-196.6496\\-23\\11.49915\\-195.1177\\-23\\13.54391\\-192.9075\\-23\\15.02104\\-190.8191\\-23\\15.83574\\-189.4024\\-23\\16.74062\\-187.5359\\-23\\17.30989\\-186.0417\\-23\\18.07808\\-183.1658\\-23\\18.38577\\-180.8733\\-23\\18.4127\\-178.3936\\-23\\18.31808\\-177.3272\\-23\\17.8785\\-175.0415\\-23\\17.33068\\-173.4198\\-23\\16.54432\\-171.714\\-23\\15.48916\\-170.0771\\-23\\14.27016\\-168.6671\\-23\\13.16352\\-167.6805\\-23\\11.8863\\-166.7685\\-23\\9.741194\\-165.6643\\-23\\7.9375\\-165.0112\\-23\\5.268491\\-164.3885\\-23\\3.180732\\-164.1257\\-23\\1.261507\\-163.9848\\-23\\-1.996709\\-164.0643\\-23\\-4.110225\\-164.2878\\-23\\-5.502007\\-164.5465\\-23\\-7.774304\\-165.1954\\-23\\-9.37663\\-165.8759\\-23\\-11.09252\\-166.86\\-23\\-12.16324\\-167.671\\-23\\-13.86175\\-169.3726\\-23\\-14.94153\\-170.859\\-23\\-16.12964\\-173.227\\-23\\-16.70781\\-174.972\\-23\\-17.14531\\-177.2835\\-23\\-17.23403\\-178.3416\\-23\\-17.20185\\-180.8079\\-23\\-16.88508\\-183.0977\\-23\\-16.4387\\-184.8998\\-23\\-15.76538\\-186.8796\\-23\\-14.99123\\-188.5945\\-23\\-13.77763\\-190.7324\\-23\\-12.35614\\-192.7228\\-23\\-10.27783\\-194.9755\\-23\\-8.84327\\-196.1978\\-23\\-7.384455\\-197.2179\\-23\\-5.427882\\-198.2863\\-23\\-3.656532\\-198.9833\\-23\\-2.284822\\-199.3635\\-23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "16"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "3.98182\\-198.4269\\-21\\6.29082\\-197.5728\\-21\\8.083325\\-196.583\\-21\\10.44217\\-194.7254\\-21\\11.96358\\-193.1431\\-21\\12.87122\\-192.0051\\-21\\14.05624\\-190.2481\\-21\\14.88011\\-188.7763\\-21\\15.85204\\-186.5755\\-21\\16.48686\\-184.6488\\-21\\16.99897\\-182.1364\\-21\\17.16245\\-179.1668\\-21\\17.01657\\-177.2991\\-21\\16.78024\\-176.0205\\-21\\16.03852\\-173.6517\\-21\\15.37458\\-172.2917\\-21\\14.54147\\-170.9638\\-21\\12.82453\\-169.0054\\-21\\11.20515\\-167.7301\\-21\\9.962468\\-166.9923\\-21\\8.206527\\-166.1958\\-21\\6.75092\\-165.7118\\-21\\3.521514\\-165.0587\\-21\\1.543854\\-164.8992\\-21\\-1.192336\\-164.9101\\-21\\-3.46555\\-165.1579\\-21\\-5.75534\\-165.6519\\-21\\-6.99636\\-166.0598\\-21\\-8.731181\\-166.8276\\-21\\-10.02547\\-167.5912\\-21\\-11.61092\\-168.8404\\-21\\-13.01537\\-170.375\\-21\\-13.91475\\-171.6831\\-21\\-14.86979\\-173.5788\\-21\\-15.60217\\-175.9473\\-21\\-15.8355\\-177.2316\\-21\\-15.97555\\-179.0813\\-21\\-15.79508\\-182.1241\\-21\\-15.27197\\-184.5975\\-21\\-14.67615\\-186.379\\-21\\-13.42753\\-189.0896\\-21\\-12.10266\\-191.2193\\-21\\-10.72468\\-192.9962\\-21\\-9.042567\\-194.7226\\-21\\-7.785137\\-195.7792\\-21\\-6.413276\\-196.7185\\-21\\-4.173418\\-197.8622\\-21\\-2.440898\\-198.4348\\-21\\-1.164569\\-198.7136\\-21\\0.6191094\\-198.8593\\-21\\2.335062\\-198.7626\\-21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.5889828\\-197.5246\\-19\\2.835643\\-197.332\\-19\\4.30677\\-196.9336\\-19\\5.709937\\-196.3677\\-19\\6.881927\\-195.7212\\-19\\8.124926\\-194.8623\\-19\\9.839561\\-193.3575\\-19\\11.40593\\-191.5383\\-19\\12.70374\\-189.6326\\-19\\13.74795\\-187.6603\\-19\\14.58252\\-185.5632\\-19\\15.29049\\-182.7444\\-19\\15.53867\\-180.3367\\-19\\15.42756\\-177.9723\\-19\\15.19261\\-176.5847\\-19\\14.69539\\-174.8309\\-19\\14.00282\\-173.2608\\-19\\13.13703\\-171.8342\\-19\\12.05496\\-170.5098\\-19\\10.70214\\-169.2813\\-19\\8.479903\\-167.8711\\-19\\6.386815\\-167.0245\\-19\\4.919351\\-166.608\\-19\\3.045448\\-166.272\\-19\\0.8626077\\-166.1093\\-19\\-2.075699\\-166.2534\\-19\\-3.758297\\-166.5414\\-19\\-5.2565\\-166.9532\\-19\\-6.887741\\-167.5745\\-19\\-8.371519\\-168.3612\\-19\\-9.530785\\-169.1743\\-19\\-10.88979\\-170.4183\\-19\\-11.98201\\-171.7669\\-19\\-12.83368\\-173.1905\\-19\\-13.52013\\-174.7657\\-19\\-14.02571\\-176.6176\\-19\\-14.24492\\-177.9435\\-19\\-14.33936\\-180.3024\\-19\\-14.20106\\-181.9133\\-19\\-13.86696\\-183.7047\\-19\\-13.20319\\-185.8977\\-19\\-12.73275\\-187.054\\-19\\-11.75172\\-188.9993\\-19\\-10.82458\\-190.48\\-19\\-9.554393\\-192.1282\\-19\\-8.637105\\-193.1485\\-19\\-7.039917\\-194.587\\-19\\-5.717835\\-195.5364\\-19\\-4.517857\\-196.2186\\-19\\-3.186833\\-196.7988\\-19\\-1.669466\\-197.257\\-19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.1235377\\-195.474\\-17\\1.804056\\-195.4358\\-17\\3.193761\\-195.1728\\-17\\4.936379\\-194.5104\\-17\\7.081278\\-193.1535\\-17\\8.424042\\-191.9718\\-17\\9.772861\\-190.4307\\-17\\10.66149\\-189.1545\\-17\\11.48567\\-187.7544\\-17\\12.26737\\-185.9685\\-17\\12.8173\\-184.3466\\-17\\13.29074\\-182.0984\\-17\\13.40055\\-179.3775\\-17\\13.07205\\-176.968\\-17\\12.53151\\-175.2713\\-17\\11.47048\\-173.2201\\-17\\10.42338\\-171.8802\\-17\\8.871119\\-170.4704\\-17\\7.842943\\-169.7776\\-17\\6.013384\\-168.8929\\-17\\4.277493\\-168.3248\\-17\\1.7721\\-167.9162\\-17\\-0.6045735\\-167.9008\\-17\\-3.11303\\-168.2811\\-17\\-4.849556\\-168.8343\\-17\\-6.437299\\-169.5556\\-17\\-7.709316\\-170.4028\\-17\\-9.257141\\-171.8151\\-17\\-10.29888\\-173.159\\-17\\-11.35214\\-175.2177\\-17\\-11.87741\\-176.882\\-17\\-12.19843\\-179.3271\\-17\\-12.07064\\-182.0387\\-17\\-11.39801\\-184.8957\\-17\\-10.33594\\-187.4394\\-17\\-9.433351\\-188.9828\\-17\\-8.49837\\-190.3111\\-17\\-7.219549\\-191.7679\\-17\\-5.795415\\-193.0425\\-17\\-3.744724\\-194.3721\\-17\\-1.994946\\-195.0855\\-17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.7068194\\-192.3193\\-15\\1.778206\\-192.2554\\-15\\3.278348\\-191.8488\\-15\\5.270322\\-190.8209\\-15\\6.444961\\-189.8547\\-15\\7.695644\\-188.4697\\-15\\9.096697\\-186.2276\\-15\\9.615885\\-185.0309\\-15\\10.12963\\-183.4464\\-15\\10.33149\\-182.4313\\-15\\10.51023\\-180.2237\\-15\\10.3229\\-178.3365\\-15\\9.868426\\-176.6739\\-15\\8.912128\\-174.7967\\-15\\7.811391\\-173.4004\\-15\\6.810744\\-172.5222\\-15\\5.713912\\-171.8099\\-15\\3.66125\\-170.9448\\-15\\1.180124\\-170.5237\\-15\\-1.314152\\-170.6611\\-15\\-2.488662\\-170.9164\\-15\\-4.607367\\-171.8135\\-15\\-6.15391\\-172.9093\\-15\\-6.968218\\-173.7279\\-15\\-7.729516\\-174.7539\\-15\\-8.665351\\-176.588\\-15\\-9.117551\\-178.2786\\-15\\-9.292521\\-180.2088\\-15\\-9.125008\\-182.1612\\-15\\-8.899356\\-183.3273\\-15\\-8.361764\\-184.9581\\-15\\-7.812262\\-186.1729\\-15\\-6.460924\\-188.2952\\-15\\-5.798864\\-189.1324\\-15\\-4.021014\\-190.7058\\-15\\-3.00817\\-191.3242\\-15\\-1.225947\\-192.0618\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.09172209\\-186.5479\\-13\\1.081909\\-186.5705\\-13\\2.730814\\-186.019\\-13\\4.171261\\-184.7574\\-13\\5.077491\\-183.1443\\-13\\5.434966\\-181.8303\\-13\\5.467434\\-179.6536\\-13\\5.072665\\-178.4028\\-13\\4.113387\\-177.0428\\-13\\3.520375\\-176.4499\\-13\\2.286752\\-175.7327\\-13\\1.468056\\-175.5158\\-13\\-0.2742291\\-175.5056\\-13\\-1.488022\\-175.9041\\-13\\-2.364897\\-176.4514\\-13\\-3.28625\\-177.5044\\-13\\-4.115311\\-178.9828\\-13\\-4.307397\\-180.078\\-13\\-4.283947\\-181.0146\\-13\\-3.822874\\-183.088\\-13\\-2.927249\\-184.6766\\-13\\-1.546395\\-185.9364\\-13"
-                     }
-                  }
-               ]
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "2"
-            }
-         },
-         {
-            "3006,002a" : {
-               "Name" : "ROIDisplayColor",
-               "Type" : "String",
-               "Value" : "0\\0\\255"
-            },
-            "3006,0040" : {
-               "Name" : "ContourSequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "0"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.0846473\\-179.8274\\-61\\-1.105887\\-178.6369\\-61\\-1.105887\\-177.6369\\-61\\0.0846473\\-176.4464\\-61\\1.084647\\-176.4464\\-61\\2.275181\\-177.6369\\-61\\2.275181\\-178.6369\\-61\\1.084647\\-179.8274\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "1"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.415353\\-186.8274\\-59\\-2.915353\\-186.3274\\-59\\-3.415353\\-186.3274\\-59\\-3.915353\\-185.8274\\-59\\-4.415353\\-185.8274\\-59\\-7.605886\\-182.6369\\-59\\-7.605886\\-182.1369\\-59\\-8.105886\\-181.6369\\-59\\-8.105886\\-180.1369\\-59\\-8.605886\\-179.6369\\-59\\-8.605886\\-177.1369\\-59\\-8.105886\\-176.6369\\-59\\-8.105886\\-175.1369\\-59\\-7.605886\\-174.6369\\-59\\-7.605886\\-174.1369\\-59\\-4.915353\\-171.4464\\-59\\-4.415353\\-171.4464\\-59\\-3.915353\\-170.9464\\-59\\-3.415353\\-170.9464\\-59\\-2.915353\\-170.4464\\-59\\-2.415353\\-170.4464\\-59\\-1.915353\\-169.9464\\-59\\3.084647\\-169.9464\\-59\\3.584647\\-170.4464\\-59\\4.084647\\-170.4464\\-59\\4.584647\\-170.9464\\-59\\5.084647\\-170.9464\\-59\\5.584647\\-171.4464\\-59\\6.084647\\-171.4464\\-59\\8.775181\\-174.1369\\-59\\8.775181\\-174.6369\\-59\\9.275181\\-175.1369\\-59\\9.275181\\-176.1369\\-59\\9.775181\\-176.6369\\-59\\9.775181\\-180.6369\\-59\\9.275181\\-181.1369\\-59\\9.275181\\-181.6369\\-59\\8.775181\\-182.1369\\-59\\8.775181\\-182.6369\\-59\\5.084647\\-186.3274\\-59\\4.084647\\-186.3274\\-59\\3.584647\\-186.8274\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "74"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "2"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.415353\\-190.8274\\-57\\-1.915353\\-190.3274\\-57\\-3.915353\\-190.3274\\-57\\-4.415353\\-189.8274\\-57\\-4.915353\\-189.8274\\-57\\-5.415353\\-189.3274\\-57\\-5.915353\\-189.3274\\-57\\-6.415353\\-188.8274\\-57\\-6.915353\\-188.8274\\-57\\-7.915353\\-187.8274\\-57\\-8.415353\\-187.8274\\-57\\-9.605886\\-186.6369\\-57\\-9.605886\\-186.1369\\-57\\-10.60589\\-185.1369\\-57\\-10.60589\\-184.6369\\-57\\-11.10589\\-184.1369\\-57\\-11.10589\\-183.6369\\-57\\-11.60589\\-183.1369\\-57\\-11.60589\\-182.6369\\-57\\-12.10589\\-182.1369\\-57\\-12.10589\\-175.1369\\-57\\-11.60589\\-174.6369\\-57\\-11.60589\\-173.6369\\-57\\-10.60589\\-172.6369\\-57\\-10.60589\\-172.1369\\-57\\-7.415353\\-168.9464\\-57\\-6.915353\\-168.9464\\-57\\-6.415353\\-168.4464\\-57\\-5.915353\\-168.4464\\-57\\-5.415353\\-167.9464\\-57\\-4.915353\\-167.9464\\-57\\-4.415353\\-167.4464\\-57\\-3.915353\\-167.4464\\-57\\-3.415353\\-166.9464\\-57\\-1.415353\\-166.9464\\-57\\-0.9153527\\-166.4464\\-57\\2.084647\\-166.4464\\-57\\2.584647\\-166.9464\\-57\\4.584647\\-166.9464\\-57\\5.084647\\-167.4464\\-57\\5.584647\\-167.4464\\-57\\6.084647\\-167.9464\\-57\\6.584647\\-167.9464\\-57\\7.084647\\-168.4464\\-57\\7.584647\\-168.4464\\-57\\8.084647\\-168.9464\\-57\\8.584647\\-168.9464\\-57\\12.27518\\-172.6369\\-57\\12.27518\\-173.1369\\-57\\12.77518\\-173.6369\\-57\\12.77518\\-174.6369\\-57\\13.27518\\-175.1369\\-57\\13.27518\\-176.6369\\-57\\13.77518\\-177.1369\\-57\\13.77518\\-180.1369\\-57\\13.27518\\-180.6369\\-57\\13.27518\\-182.1369\\-57\\12.77518\\-182.6369\\-57\\12.77518\\-183.6369\\-57\\12.27518\\-184.1369\\-57\\12.27518\\-184.6369\\-57\\11.27518\\-185.6369\\-57\\11.27518\\-186.1369\\-57\\9.584647\\-187.8274\\-57\\9.084647\\-187.8274\\-57\\8.084647\\-188.8274\\-57\\7.584647\\-188.8274\\-57\\7.084647\\-189.3274\\-57\\6.584647\\-189.3274\\-57\\6.084647\\-189.8274\\-57\\5.584647\\-189.8274\\-57\\5.084647\\-190.3274\\-57\\3.084647\\-190.3274\\-57\\2.584647\\-190.8274\\-57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "82"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "3"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.415353\\-192.8274\\-55\\-4.915353\\-192.3274\\-55\\-5.915353\\-192.3274\\-55\\-6.415353\\-191.8274\\-55\\-6.915353\\-191.8274\\-55\\-7.415353\\-191.3274\\-55\\-7.915353\\-191.3274\\-55\\-8.415353\\-190.8274\\-55\\-8.915353\\-190.8274\\-55\\-9.915353\\-189.8274\\-55\\-10.41535\\-189.8274\\-55\\-12.10589\\-188.1369\\-55\\-12.10589\\-187.6369\\-55\\-13.10589\\-186.6369\\-55\\-13.10589\\-186.1369\\-55\\-13.60589\\-185.6369\\-55\\-13.60589\\-185.1369\\-55\\-14.10589\\-184.6369\\-55\\-14.10589\\-184.1369\\-55\\-14.60589\\-183.6369\\-55\\-14.60589\\-182.1369\\-55\\-15.10589\\-181.6369\\-55\\-15.10589\\-175.6369\\-55\\-14.60589\\-175.1369\\-55\\-14.60589\\-174.1369\\-55\\-14.10589\\-173.6369\\-55\\-14.10589\\-172.6369\\-55\\-13.60589\\-172.1369\\-55\\-13.60589\\-171.6369\\-55\\-12.60589\\-170.6369\\-55\\-12.60589\\-170.1369\\-55\\-10.41535\\-167.9464\\-55\\-9.915353\\-167.9464\\-55\\-8.415353\\-166.4464\\-55\\-7.915353\\-166.4464\\-55\\-7.415353\\-165.9464\\-55\\-6.415353\\-165.9464\\-55\\-5.915353\\-165.4464\\-55\\-5.415353\\-165.4464\\-55\\-4.915353\\-164.9464\\-55\\-3.415353\\-164.9464\\-55\\-2.915353\\-164.4464\\-55\\4.084647\\-164.4464\\-55\\4.584647\\-164.9464\\-55\\6.084647\\-164.9464\\-55\\6.584647\\-165.4464\\-55\\7.084647\\-165.4464\\-55\\7.584647\\-165.9464\\-55\\8.584647\\-165.9464\\-55\\9.084647\\-166.4464\\-55\\9.584647\\-166.4464\\-55\\10.58465\\-167.4464\\-55\\11.08465\\-167.4464\\-55\\13.77518\\-170.1369\\-55\\13.77518\\-170.6369\\-55\\14.77518\\-171.6369\\-55\\14.77518\\-172.1369\\-55\\15.27518\\-172.6369\\-55\\15.27518\\-173.1369\\-55\\15.77518\\-173.6369\\-55\\15.77518\\-175.1369\\-55\\16.27518\\-175.6369\\-55\\16.27518\\-182.1369\\-55\\15.77518\\-182.6369\\-55\\15.77518\\-183.6369\\-55\\15.27518\\-184.1369\\-55\\15.27518\\-184.6369\\-55\\14.77518\\-185.1369\\-55\\14.77518\\-185.6369\\-55\\14.27518\\-186.1369\\-55\\14.27518\\-186.6369\\-55\\12.77518\\-188.1369\\-55\\12.77518\\-188.6369\\-55\\11.58465\\-189.8274\\-55\\11.08465\\-189.8274\\-55\\10.08465\\-190.8274\\-55\\9.584647\\-190.8274\\-55\\8.584647\\-191.8274\\-55\\7.584647\\-191.8274\\-55\\7.084647\\-192.3274\\-55\\6.084647\\-192.3274\\-55\\5.584647\\-192.8274\\-55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "80"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "4"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.915353\\-194.8274\\-53\\-5.415353\\-194.3869\\-53\\-6.915353\\-194.3274\\-53\\-7.415353\\-193.8274\\-53\\-7.915353\\-193.8274\\-53\\-8.415353\\-193.3274\\-53\\-8.915353\\-193.3274\\-53\\-9.415353\\-192.8274\\-53\\-9.915353\\-192.8274\\-53\\-10.91535\\-191.8274\\-53\\-11.41535\\-191.8274\\-53\\-14.10589\\-189.1369\\-53\\-14.10589\\-188.6369\\-53\\-15.10589\\-187.6369\\-53\\-15.10589\\-187.1369\\-53\\-16.10589\\-186.1369\\-53\\-16.10589\\-185.1369\\-53\\-16.60589\\-184.6369\\-53\\-16.60589\\-183.6369\\-53\\-17.10589\\-183.1369\\-53\\-17.10589\\-174.6369\\-53\\-16.60589\\-174.1369\\-53\\-16.60589\\-173.1369\\-53\\-16.10589\\-172.6369\\-53\\-16.10589\\-172.1369\\-53\\-15.60589\\-171.6369\\-53\\-15.60589\\-171.1369\\-53\\-15.10589\\-170.6369\\-53\\-15.10589\\-170.1369\\-53\\-10.41535\\-165.4464\\-53\\-9.915353\\-165.4464\\-53\\-9.415353\\-164.9464\\-53\\-8.915353\\-164.9464\\-53\\-8.415353\\-164.4464\\-53\\-7.915353\\-164.4464\\-53\\-7.415353\\-163.9464\\-53\\-6.415353\\-163.9464\\-53\\-5.915353\\-163.4464\\-53\\-4.415353\\-163.3869\\-53\\-3.915353\\-162.9464\\-53\\-1.915353\\-162.8869\\-53\\3.084647\\-162.8869\\-53\\5.084647\\-162.9464\\-53\\5.584647\\-163.3869\\-53\\7.084647\\-163.4464\\-53\\7.584647\\-163.9464\\-53\\8.584647\\-163.9464\\-53\\9.084647\\-164.4464\\-53\\9.584647\\-164.4464\\-53\\10.08465\\-164.9464\\-53\\10.58465\\-164.9464\\-53\\11.08465\\-165.4464\\-53\\11.58465\\-165.4464\\-53\\16.27518\\-170.1369\\-53\\16.27518\\-170.6369\\-53\\17.27518\\-171.6369\\-53\\17.27518\\-172.6369\\-53\\17.77518\\-173.1369\\-53\\17.77518\\-174.1369\\-53\\18.27518\\-174.6369\\-53\\18.27518\\-183.1369\\-53\\17.77518\\-183.6369\\-53\\17.77518\\-185.1369\\-53\\17.27518\\-185.6369\\-53\\17.27518\\-186.1369\\-53\\16.27518\\-187.1369\\-53\\16.27518\\-187.6369\\-53\\15.27518\\-188.6369\\-53\\15.27518\\-189.1369\\-53\\13.08465\\-191.3274\\-53\\12.58465\\-191.3274\\-53\\11.08465\\-192.8274\\-53\\10.58465\\-192.8274\\-53\\10.08465\\-193.3274\\-53\\9.584647\\-193.3274\\-53\\9.084647\\-193.8274\\-53\\8.584647\\-193.8274\\-53\\8.084647\\-194.3274\\-53\\6.584647\\-194.3274\\-53\\6.084647\\-194.8274\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "93"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "5"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.415353\\-196.8274\\-51\\-3.915353\\-196.3869\\-51\\-5.915353\\-196.3274\\-51\\-6.415353\\-195.8869\\-51\\-7.915353\\-195.8274\\-51\\-8.415353\\-195.3274\\-51\\-8.915353\\-195.3274\\-51\\-9.415353\\-194.8274\\-51\\-9.915353\\-194.8274\\-51\\-10.41535\\-194.3274\\-51\\-10.91535\\-194.3274\\-51\\-12.41535\\-192.8274\\-51\\-12.91535\\-192.8274\\-51\\-15.60589\\-190.1369\\-51\\-15.60589\\-189.6369\\-51\\-17.10589\\-188.1369\\-51\\-17.10589\\-187.6369\\-51\\-17.60589\\-187.1369\\-51\\-17.60589\\-186.6369\\-51\\-18.10589\\-186.1369\\-51\\-18.16535\\-185.1369\\-51\\-18.60589\\-184.6369\\-51\\-18.66535\\-183.1369\\-51\\-19.10589\\-182.6369\\-51\\-19.10589\\-175.1369\\-51\\-18.66535\\-174.6369\\-51\\-18.60589\\-173.1369\\-51\\-18.10589\\-172.6369\\-51\\-18.10589\\-172.1369\\-51\\-17.60589\\-171.6369\\-51\\-17.60589\\-171.1369\\-51\\-17.10589\\-170.6369\\-51\\-17.10589\\-170.1369\\-51\\-16.10589\\-169.1369\\-51\\-16.10589\\-168.6369\\-51\\-12.41535\\-164.9464\\-51\\-11.91535\\-164.9464\\-51\\-11.41535\\-164.4464\\-51\\-10.91535\\-164.3869\\-51\\-9.915353\\-163.4464\\-51\\-8.915353\\-163.3869\\-51\\-8.415353\\-162.9464\\-51\\-7.415353\\-162.8869\\-51\\-6.915353\\-162.4464\\-51\\-5.915353\\-162.3869\\-51\\-5.415353\\-161.9464\\-51\\-3.415353\\-161.8869\\-51\\-2.915353\\-161.4464\\-51\\3.584647\\-161.4464\\-51\\4.084647\\-161.8869\\-51\\6.584647\\-161.9464\\-51\\7.084647\\-162.3869\\-51\\8.084647\\-162.4464\\-51\\8.584647\\-162.8869\\-51\\9.584647\\-162.9464\\-51\\11.08465\\-163.8869\\-51\\12.58465\\-164.4464\\-51\\13.58465\\-165.3869\\-51\\14.08465\\-165.4464\\-51\\17.27518\\-168.6369\\-51\\17.27518\\-169.1369\\-51\\18.27518\\-170.1369\\-51\\18.27518\\-170.6369\\-51\\18.77518\\-171.1369\\-51\\19.27518\\-172.1369\\-51\\19.27518\\-172.6369\\-51\\19.77518\\-173.1369\\-51\\19.77518\\-174.1369\\-51\\20.27518\\-174.6369\\-51\\20.27518\\-182.6369\\-51\\19.83465\\-183.1369\\-51\\19.77518\\-184.6369\\-51\\19.33465\\-185.1369\\-51\\19.27518\\-186.1369\\-51\\18.77518\\-186.6369\\-51\\18.77518\\-187.1369\\-51\\18.27518\\-187.6369\\-51\\18.27518\\-188.1369\\-51\\15.77518\\-190.6369\\-51\\15.77518\\-191.1369\\-51\\14.58465\\-192.3274\\-51\\14.08465\\-192.3274\\-51\\12.08465\\-194.3274\\-51\\11.58465\\-194.3274\\-51\\11.08465\\-194.8274\\-51\\10.58465\\-194.8274\\-51\\10.08465\\-195.3274\\-51\\9.084647\\-195.3869\\-51\\8.584647\\-195.8274\\-51\\7.084647\\-195.8869\\-51\\6.584647\\-196.3274\\-51\\5.084647\\-196.3869\\-51\\4.584647\\-196.8274\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "87"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "6"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.915353\\-198.3274\\-49\\-3.415353\\-197.8869\\-49\\-5.915353\\-197.8274\\-49\\-6.415353\\-197.3869\\-49\\-7.415353\\-197.3274\\-49\\-7.915353\\-196.8869\\-49\\-8.915353\\-196.8274\\-49\\-9.415353\\-196.3869\\-49\\-10.41535\\-196.3274\\-49\\-10.91535\\-195.8274\\-49\\-11.41535\\-195.8274\\-49\\-12.41535\\-194.8274\\-49\\-12.91535\\-194.8274\\-49\\-17.10589\\-190.6369\\-49\\-17.16535\\-190.1369\\-49\\-18.10589\\-189.1369\\-49\\-19.60589\\-186.1369\\-49\\-19.66535\\-185.1369\\-49\\-20.10589\\-184.6369\\-49\\-20.16535\\-183.1369\\-49\\-20.60589\\-182.6369\\-49\\-20.66535\\-177.6369\\-49\\-20.60589\\-174.6369\\-49\\-20.16535\\-174.1369\\-49\\-20.10589\\-173.1369\\-49\\-19.66535\\-172.6369\\-49\\-19.60589\\-171.6369\\-49\\-19.10589\\-170.6369\\-49\\-18.60589\\-170.1369\\-49\\-18.60589\\-169.6369\\-49\\-17.16535\\-168.1369\\-49\\-17.10589\\-167.6369\\-49\\-13.91535\\-164.4464\\-49\\-13.41535\\-164.3869\\-49\\-12.41535\\-163.4464\\-49\\-9.915353\\-162.3869\\-49\\-9.415353\\-161.9464\\-49\\-8.415353\\-161.8869\\-49\\-7.915353\\-161.4464\\-49\\-6.415353\\-161.3869\\-49\\-5.915353\\-160.9464\\-49\\-3.415353\\-160.8869\\-49\\-2.915353\\-160.4464\\-49\\4.084647\\-160.4464\\-49\\4.584647\\-160.8869\\-49\\7.084647\\-160.9464\\-49\\7.584647\\-161.3869\\-49\\9.084647\\-161.4464\\-49\\10.58465\\-162.3869\\-49\\11.58465\\-162.4464\\-49\\12.08465\\-162.9464\\-49\\12.58465\\-162.9464\\-49\\13.58465\\-163.4464\\-49\\15.08465\\-164.8869\\-49\\15.58465\\-164.9464\\-49\\18.27518\\-167.6369\\-49\\18.33465\\-168.1369\\-49\\19.77518\\-169.6369\\-49\\19.77518\\-170.1369\\-49\\20.27518\\-170.6369\\-49\\20.77518\\-171.6369\\-49\\20.83465\\-172.6369\\-49\\21.27518\\-173.1369\\-49\\21.33465\\-174.1369\\-49\\21.77518\\-174.6369\\-49\\21.83465\\-176.6369\\-49\\21.83465\\-180.6369\\-49\\21.77518\\-183.1369\\-49\\21.33465\\-183.6369\\-49\\21.27518\\-184.6369\\-49\\20.83465\\-185.1369\\-49\\20.77518\\-186.1369\\-49\\20.33465\\-186.6369\\-49\\19.27518\\-189.1369\\-49\\18.27518\\-190.1369\\-49\\18.27518\\-190.6369\\-49\\14.58465\\-194.3274\\-49\\14.08465\\-194.3274\\-49\\13.08465\\-195.3274\\-49\\11.58465\\-195.8869\\-49\\10.08465\\-196.8274\\-49\\9.084647\\-196.8869\\-49\\8.584647\\-197.3274\\-49\\7.084647\\-197.3869\\-49\\6.584647\\-197.8274\\-49\\4.084647\\-197.8869\\-49\\3.584647\\-198.3274\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "85"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.415353\\-199.3274\\-47\\-4.915353\\-198.8869\\-47\\-6.915353\\-198.8274\\-47\\-7.415353\\-198.3869\\-47\\-8.415353\\-198.3274\\-47\\-8.915353\\-197.8869\\-47\\-9.915353\\-197.8274\\-47\\-11.41535\\-196.8869\\-47\\-12.91535\\-196.3274\\-47\\-13.91535\\-195.3869\\-47\\-14.41535\\-195.3274\\-47\\-17.60589\\-192.1369\\-47\\-17.66535\\-191.6369\\-47\\-19.10589\\-190.1369\\-47\\-19.16535\\-189.6369\\-47\\-20.60589\\-187.1369\\-47\\-20.66535\\-186.1369\\-47\\-21.10589\\-185.6369\\-47\\-21.16535\\-184.6369\\-47\\-21.60589\\-184.1369\\-47\\-21.66535\\-182.1369\\-47\\-22.10589\\-181.6369\\-47\\-22.10589\\-176.1369\\-47\\-21.66535\\-175.6369\\-47\\-21.60589\\-173.6369\\-47\\-21.16535\\-173.1369\\-47\\-21.10589\\-172.1369\\-47\\-19.66535\\-169.6369\\-47\\-19.60589\\-169.1369\\-47\\-18.66535\\-168.1369\\-47\\-18.60589\\-167.6369\\-47\\-16.41535\\-165.3869\\-47\\-14.41535\\-163.4464\\-47\\-13.91535\\-163.3869\\-47\\-12.41535\\-162.4464\\-47\\-9.915353\\-161.3869\\-47\\-9.415353\\-160.9464\\-47\\-7.915353\\-160.8869\\-47\\-7.415353\\-160.4464\\-47\\-5.915353\\-160.3869\\-47\\-5.415353\\-159.9464\\-47\\-4.415353\\-159.8869\\-47\\5.584647\\-159.8869\\-47\\6.584647\\-160.3869\\-47\\8.584647\\-160.4464\\-47\\9.084647\\-160.8869\\-47\\10.08465\\-160.9464\\-47\\10.58465\\-161.3869\\-47\\11.58465\\-161.4464\\-47\\12.08465\\-161.8869\\-47\\14.58465\\-162.9464\\-47\\15.58465\\-163.8869\\-47\\16.08465\\-163.9464\\-47\\19.77518\\-167.6369\\-47\\19.83465\\-168.1369\\-47\\20.77518\\-169.1369\\-47\\20.83465\\-169.6369\\-47\\22.27518\\-172.1369\\-47\\22.33465\\-173.1369\\-47\\22.77518\\-173.6369\\-47\\22.83465\\-175.6369\\-47\\23.27518\\-176.1369\\-47\\23.27518\\-182.1369\\-47\\22.83465\\-182.6369\\-47\\22.77518\\-184.1369\\-47\\22.33465\\-184.6369\\-47\\22.27518\\-185.6369\\-47\\21.83465\\-186.1369\\-47\\21.77518\\-187.1369\\-47\\21.33465\\-187.6369\\-47\\20.27518\\-190.1369\\-47\\18.33465\\-192.1369\\-47\\18.27518\\-192.6369\\-47\\16.08465\\-194.8274\\-47\\15.58465\\-194.8869\\-47\\14.08465\\-196.3274\\-47\\13.58465\\-196.3274\\-47\\13.08465\\-196.8274\\-47\\12.08465\\-197.3274\\-47\\11.08465\\-197.3869\\-47\\9.584647\\-198.3274\\-47\\8.084647\\-198.3869\\-47\\7.584647\\-198.8274\\-47\\5.584647\\-198.8869\\-47\\5.084647\\-199.3274\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "96"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-5.415353\\-200.3274\\-45\\-5.915353\\-199.8869\\-45\\-7.415353\\-199.8274\\-45\\-7.915353\\-199.3869\\-45\\-8.915353\\-199.3274\\-45\\-9.415353\\-198.8869\\-45\\-10.41535\\-198.8274\\-45\\-10.91535\\-198.3869\\-45\\-13.41535\\-197.3274\\-45\\-14.41535\\-196.3869\\-45\\-14.91535\\-196.3274\\-45\\-19.10589\\-192.1369\\-45\\-19.16535\\-191.6369\\-45\\-20.10589\\-190.6369\\-45\\-21.60589\\-187.6369\\-45\\-21.66535\\-186.6369\\-45\\-22.10589\\-186.1369\\-45\\-22.16535\\-185.1369\\-45\\-22.60589\\-184.6369\\-45\\-22.66535\\-182.6369\\-45\\-23.10589\\-182.1369\\-45\\-23.10589\\-175.6369\\-45\\-22.66535\\-175.1369\\-45\\-22.60589\\-173.6369\\-45\\-22.16535\\-173.1369\\-45\\-22.10589\\-172.1369\\-45\\-20.66535\\-169.6369\\-45\\-20.60589\\-169.1369\\-45\\-19.66535\\-167.6369\\-45\\-19.60589\\-167.1369\\-45\\-16.41535\\-163.9464\\-45\\-15.91535\\-163.8869\\-45\\-14.91535\\-162.9464\\-45\\-14.41535\\-162.8869\\-45\\-13.41535\\-161.9464\\-45\\-12.91535\\-161.8869\\-45\\-11.41535\\-160.9464\\-45\\-10.41535\\-160.8869\\-45\\-9.915353\\-160.4464\\-45\\-8.915353\\-160.3869\\-45\\-8.415353\\-159.9464\\-45\\-6.915353\\-159.8869\\-45\\-6.415353\\-159.4464\\-45\\-5.415353\\-159.3869\\-45\\-1.915353\\-159.3869\\-45\\-1.415353\\-158.9464\\-45\\1.584647\\-158.9464\\-45\\2.084647\\-159.3869\\-45\\6.084647\\-159.3869\\-45\\7.084647\\-159.4464\\-45\\7.584647\\-159.8869\\-45\\9.084647\\-159.9464\\-45\\9.584647\\-160.3869\\-45\\10.58465\\-160.4464\\-45\\11.08465\\-160.8869\\-45\\12.08465\\-160.9464\\-45\\12.58465\\-161.3869\\-45\\13.08465\\-161.3869\\-45\\13.58465\\-161.8869\\-45\\14.08465\\-161.8869\\-45\\14.58465\\-162.3869\\-45\\16.08465\\-162.9464\\-45\\17.58465\\-164.3869\\-45\\18.08465\\-164.4464\\-45\\20.27518\\-166.6369\\-45\\20.33465\\-167.1369\\-45\\21.27518\\-168.1369\\-45\\21.83465\\-169.6369\\-45\\23.27518\\-172.1369\\-45\\23.33465\\-173.1369\\-45\\23.77518\\-173.6369\\-45\\23.83465\\-175.1369\\-45\\24.27518\\-175.6369\\-45\\24.27518\\-182.6369\\-45\\23.83465\\-183.1369\\-45\\23.77518\\-184.6369\\-45\\23.33465\\-185.1369\\-45\\23.27518\\-186.1369\\-45\\22.83465\\-186.6369\\-45\\22.77518\\-187.6369\\-45\\21.27518\\-190.6369\\-45\\19.83465\\-192.1369\\-45\\19.77518\\-192.6369\\-45\\16.58465\\-195.8274\\-45\\16.08465\\-195.8869\\-45\\14.58465\\-197.3274\\-45\\12.08465\\-198.3869\\-45\\11.58465\\-198.8274\\-45\\10.58465\\-198.8869\\-45\\10.08465\\-199.3274\\-45\\8.584647\\-199.3869\\-45\\8.084647\\-199.8274\\-45\\6.084647\\-199.8869\\-45\\5.584647\\-200.3274\\-45\\3.084647\\-200.3869\\-45\\-2.915353\\-200.3869\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "103"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-5.415353\\-201.3274\\-43\\-5.915353\\-200.8869\\-43\\-7.415353\\-200.8274\\-43\\-7.915353\\-200.3869\\-43\\-9.415353\\-200.3274\\-43\\-10.91535\\-199.3869\\-43\\-11.91535\\-199.3274\\-43\\-12.91535\\-198.8274\\-43\\-13.91535\\-197.8869\\-43\\-14.41535\\-197.8274\\-43\\-15.41535\\-196.8869\\-43\\-15.91535\\-196.8274\\-43\\-19.10589\\-193.6369\\-43\\-19.16535\\-193.1369\\-43\\-20.10589\\-192.1369\\-43\\-20.16535\\-191.6369\\-43\\-21.10589\\-190.6369\\-43\\-21.66535\\-189.1369\\-43\\-22.10589\\-188.6369\\-43\\-22.16535\\-187.6369\\-43\\-22.60589\\-187.1369\\-43\\-22.66535\\-186.1369\\-43\\-23.10589\\-185.6369\\-43\\-23.16535\\-184.6369\\-43\\-23.60589\\-184.1369\\-43\\-23.66535\\-182.1369\\-43\\-24.10589\\-181.6369\\-43\\-24.10589\\-176.6369\\-43\\-23.66535\\-176.1369\\-43\\-23.60589\\-173.6369\\-43\\-23.16535\\-173.1369\\-43\\-23.10589\\-172.1369\\-43\\-21.66535\\-169.6369\\-43\\-21.10589\\-168.1369\\-43\\-20.16535\\-167.1369\\-43\\-20.10589\\-166.6369\\-43\\-16.91535\\-163.4464\\-43\\-16.41535\\-163.3869\\-43\\-15.41535\\-162.4464\\-43\\-14.91535\\-162.3869\\-43\\-14.41535\\-161.8869\\-43\\-13.91535\\-161.8869\\-43\\-12.91535\\-160.9464\\-43\\-11.91535\\-160.8869\\-43\\-11.41535\\-160.3869\\-43\\-10.91535\\-160.3869\\-43\\-10.41535\\-159.9464\\-43\\-8.915353\\-159.8869\\-43\\-8.415353\\-159.4464\\-43\\-6.415353\\-159.3869\\-43\\-5.415353\\-158.8869\\-43\\6.084647\\-158.8869\\-43\\7.084647\\-159.3869\\-43\\9.084647\\-159.4464\\-43\\9.584647\\-159.8869\\-43\\11.08465\\-159.9464\\-43\\11.58465\\-160.3869\\-43\\12.58465\\-160.4464\\-43\\15.08465\\-161.8869\\-43\\15.58465\\-161.9464\\-43\\16.58465\\-162.8869\\-43\\17.08465\\-162.9464\\-43\\18.08465\\-163.8869\\-43\\18.58465\\-163.9464\\-43\\21.27518\\-166.6369\\-43\\21.33465\\-167.1369\\-43\\22.27518\\-168.1369\\-43\\22.83465\\-169.6369\\-43\\24.27518\\-172.1369\\-43\\24.33465\\-173.1369\\-43\\24.77518\\-173.6369\\-43\\24.83465\\-176.1369\\-43\\25.27518\\-176.6369\\-43\\25.27518\\-181.6369\\-43\\24.83465\\-182.1369\\-43\\24.77518\\-184.1369\\-43\\24.33465\\-184.6369\\-43\\24.27518\\-185.6369\\-43\\23.83465\\-186.1369\\-43\\23.77518\\-187.1369\\-43\\23.33465\\-187.6369\\-43\\23.27518\\-188.6369\\-43\\22.83465\\-189.1369\\-43\\22.27518\\-190.6369\\-43\\21.33465\\-191.6369\\-43\\21.27518\\-192.1369\\-43\\19.83465\\-193.6369\\-43\\19.77518\\-194.1369\\-43\\17.58465\\-196.3274\\-43\\17.08465\\-196.3869\\-43\\15.58465\\-197.8274\\-43\\14.08465\\-198.3869\\-43\\13.58465\\-198.8274\\-43\\12.08465\\-199.3869\\-43\\11.58465\\-199.8274\\-43\\10.58465\\-199.8869\\-43\\10.08465\\-200.3274\\-43\\8.584647\\-200.3869\\-43\\8.084647\\-200.8274\\-43\\6.084647\\-200.8869\\-43\\5.584647\\-201.3274\\-43\\3.084647\\-201.3869\\-43\\-3.415353\\-201.3869\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "109"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.915353\\-202.3274\\-41\\-5.415353\\-201.8869\\-41\\-7.415353\\-201.8274\\-41\\-7.915353\\-201.3869\\-41\\-8.915353\\-201.3274\\-41\\-9.415353\\-200.8869\\-41\\-10.41535\\-200.8274\\-41\\-12.91535\\-199.3869\\-41\\-14.41535\\-198.8274\\-41\\-15.91535\\-197.3869\\-41\\-16.41535\\-197.3274\\-41\\-19.60589\\-194.1369\\-41\\-19.66535\\-193.6369\\-41\\-20.60589\\-192.6369\\-41\\-20.66535\\-192.1369\\-41\\-21.60589\\-191.1369\\-41\\-22.16535\\-189.6369\\-41\\-23.10589\\-188.1369\\-41\\-23.16535\\-187.1369\\-41\\-23.60589\\-186.6369\\-41\\-23.66535\\-185.6369\\-41\\-24.10589\\-185.1369\\-41\\-24.16535\\-183.1369\\-41\\-24.60589\\-182.6369\\-41\\-24.66535\\-181.6369\\-41\\-24.66535\\-176.6369\\-41\\-24.60589\\-175.1369\\-41\\-24.16535\\-174.6369\\-41\\-24.10589\\-173.1369\\-41\\-23.66535\\-172.6369\\-41\\-23.60589\\-171.6369\\-41\\-22.66535\\-170.1369\\-41\\-22.66535\\-169.6369\\-41\\-22.16535\\-169.1369\\-41\\-22.10589\\-168.6369\\-41\\-21.16535\\-167.6369\\-41\\-21.10589\\-167.1369\\-41\\-20.16535\\-166.1369\\-41\\-20.10589\\-165.6369\\-41\\-18.41535\\-163.9464\\-41\\-17.91535\\-163.8869\\-41\\-16.41535\\-162.4464\\-41\\-15.91535\\-162.3869\\-41\\-15.41535\\-161.8869\\-41\\-14.91535\\-161.8869\\-41\\-13.91535\\-160.9464\\-41\\-12.91535\\-160.4464\\-41\\-11.91535\\-160.3869\\-41\\-11.41535\\-159.8869\\-41\\-10.41535\\-159.8869\\-41\\-9.915353\\-159.3869\\-41\\-8.415353\\-159.3869\\-41\\-7.915353\\-158.9464\\-41\\-4.415353\\-158.8869\\-41\\-3.915353\\-158.4464\\-41\\-2.915353\\-158.3869\\-41\\3.584647\\-158.3869\\-41\\4.584647\\-158.4464\\-41\\5.084647\\-158.8869\\-41\\8.084647\\-158.9464\\-41\\8.584647\\-159.3869\\-41\\10.58465\\-159.3869\\-41\\11.08465\\-159.8869\\-41\\12.08465\\-159.8869\\-41\\12.58465\\-160.3869\\-41\\13.58465\\-160.4464\\-41\\16.58465\\-161.9464\\-41\\17.58465\\-162.8869\\-41\\18.58465\\-163.3869\\-41\\21.83465\\-166.6369\\-41\\22.33465\\-167.6369\\-41\\23.27518\\-168.6369\\-41\\23.83465\\-170.1369\\-41\\24.77518\\-171.6369\\-41\\24.83465\\-172.6369\\-41\\25.27518\\-173.1369\\-41\\25.33465\\-174.6369\\-41\\25.77518\\-175.1369\\-41\\25.83465\\-176.1369\\-41\\25.83465\\-181.6369\\-41\\25.77518\\-182.6369\\-41\\25.33465\\-183.1369\\-41\\25.27518\\-185.1369\\-41\\24.83465\\-185.6369\\-41\\24.77518\\-186.6369\\-41\\24.33465\\-187.1369\\-41\\24.27518\\-188.1369\\-41\\23.33465\\-189.6369\\-41\\22.77518\\-191.1369\\-41\\21.83465\\-192.1369\\-41\\21.77518\\-192.6369\\-41\\20.83465\\-193.6369\\-41\\20.77518\\-194.1369\\-41\\18.08465\\-196.8274\\-41\\17.58465\\-196.8869\\-41\\16.08465\\-198.3274\\-41\\15.58465\\-198.3869\\-41\\14.58465\\-199.3274\\-41\\12.58465\\-200.3274\\-41\\11.58465\\-200.3869\\-41\\11.08465\\-200.8274\\-41\\10.08465\\-200.8869\\-41\\9.584647\\-201.3274\\-41\\8.584647\\-201.3869\\-41\\8.084647\\-201.8274\\-41\\5.584647\\-201.8869\\-41\\5.084647\\-202.3274\\-41\\3.084647\\-202.3869\\-41\\-2.415353\\-202.3869\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "135"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.415353\\-203.3274\\-39\\-3.915353\\-202.8869\\-39\\-6.415353\\-202.8274\\-39\\-6.915353\\-202.3869\\-39\\-8.415353\\-202.3274\\-39\\-8.915353\\-201.8869\\-39\\-9.915353\\-201.8274\\-39\\-11.41535\\-200.8869\\-39\\-11.91535\\-200.8869\\-39\\-12.41535\\-200.3869\\-39\\-12.91535\\-200.3869\\-39\\-13.41535\\-199.8869\\-39\\-13.91535\\-199.8274\\-39\\-14.91535\\-198.8869\\-39\\-15.41535\\-198.8274\\-39\\-16.91535\\-197.3869\\-39\\-17.41535\\-197.3274\\-39\\-19.10589\\-195.6369\\-39\\-19.16535\\-195.1369\\-39\\-20.60589\\-193.6369\\-39\\-20.66535\\-193.1369\\-39\\-21.60589\\-192.1369\\-39\\-21.66535\\-191.6369\\-39\\-22.16535\\-191.1369\\-39\\-22.16535\\-190.6369\\-39\\-22.66535\\-190.1369\\-39\\-22.66535\\-189.6369\\-39\\-23.16535\\-189.1369\\-39\\-23.16535\\-188.6369\\-39\\-23.60589\\-188.1369\\-39\\-23.66535\\-187.1369\\-39\\-24.16535\\-186.6369\\-39\\-24.16535\\-185.6369\\-39\\-24.60589\\-185.1369\\-39\\-24.66535\\-183.1369\\-39\\-25.10589\\-182.6369\\-39\\-25.16535\\-181.6369\\-39\\-25.16535\\-176.6369\\-39\\-25.10589\\-175.6369\\-39\\-24.66535\\-175.1369\\-39\\-24.60589\\-173.1369\\-39\\-24.16535\\-172.6369\\-39\\-24.10589\\-171.6369\\-39\\-23.66535\\-171.1369\\-39\\-23.66535\\-170.6369\\-39\\-23.16535\\-170.1369\\-39\\-23.10589\\-169.1369\\-39\\-22.16535\\-168.1369\\-39\\-22.10589\\-167.6369\\-39\\-21.16535\\-166.6369\\-39\\-21.10589\\-166.1369\\-39\\-17.91535\\-162.9464\\-39\\-17.41535\\-162.8869\\-39\\-16.41535\\-161.9464\\-39\\-15.91535\\-161.8869\\-39\\-15.41535\\-161.3869\\-39\\-14.91535\\-161.3869\\-39\\-14.41535\\-160.8869\\-39\\-13.91535\\-160.8869\\-39\\-13.41535\\-160.3869\\-39\\-12.91535\\-160.3869\\-39\\-12.41535\\-159.8869\\-39\\-11.41535\\-159.8869\\-39\\-10.91535\\-159.3869\\-39\\-9.415353\\-159.3869\\-39\\-8.915353\\-158.8869\\-39\\-6.415353\\-158.8869\\-39\\-5.415353\\-158.3869\\-39\\5.584647\\-158.3869\\-39\\6.584647\\-158.8869\\-39\\9.084647\\-158.8869\\-39\\9.584647\\-159.3869\\-39\\11.58465\\-159.4464\\-39\\12.08465\\-159.8869\\-39\\13.08465\\-159.8869\\-39\\13.58465\\-160.3869\\-39\\14.08465\\-160.3869\\-39\\14.58465\\-160.8869\\-39\\15.08465\\-160.8869\\-39\\15.58465\\-161.3869\\-39\\16.08465\\-161.3869\\-39\\16.58465\\-161.8869\\-39\\17.08465\\-161.8869\\-39\\17.58465\\-162.3869\\-39\\18.08465\\-162.4464\\-39\\19.58465\\-163.8869\\-39\\20.08465\\-163.9464\\-39\\21.77518\\-165.6369\\-39\\21.83465\\-166.1369\\-39\\23.27518\\-167.6369\\-39\\23.33465\\-168.1369\\-39\\23.83465\\-168.6369\\-39\\23.83465\\-169.1369\\-39\\24.33465\\-169.6369\\-39\\24.33465\\-170.1369\\-39\\24.83465\\-170.6369\\-39\\24.83465\\-171.1369\\-39\\25.27518\\-171.6369\\-39\\25.33465\\-172.6369\\-39\\25.77518\\-173.1369\\-39\\25.83465\\-175.1369\\-39\\26.33465\\-176.1369\\-39\\26.33465\\-181.6369\\-39\\26.27518\\-182.6369\\-39\\25.83465\\-183.1369\\-39\\25.77518\\-185.1369\\-39\\25.33465\\-185.6369\\-39\\25.33465\\-186.6369\\-39\\24.83465\\-187.1369\\-39\\24.77518\\-188.1369\\-39\\23.83465\\-189.6369\\-39\\23.83465\\-190.1369\\-39\\23.33465\\-190.6369\\-39\\23.33465\\-191.1369\\-39\\22.83465\\-191.6369\\-39\\22.77518\\-192.1369\\-39\\21.83465\\-193.1369\\-39\\21.77518\\-193.6369\\-39\\19.83465\\-195.6369\\-39\\19.77518\\-196.1369\\-39\\19.08465\\-196.8274\\-39\\18.58465\\-196.8869\\-39\\16.58465\\-198.8274\\-39\\16.08465\\-198.8869\\-39\\15.08465\\-199.8274\\-39\\12.58465\\-200.8869\\-39\\12.08465\\-201.3274\\-39\\11.08465\\-201.3869\\-39\\10.58465\\-201.8274\\-39\\9.584647\\-201.8869\\-39\\9.084647\\-202.3274\\-39\\7.584647\\-202.3869\\-39\\7.084647\\-202.8274\\-39\\4.584647\\-202.8869\\-39\\4.084647\\-203.3274\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "134"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.915353\\-203.8274\\-37\\-5.415353\\-203.3869\\-37\\-6.915353\\-203.3274\\-37\\-7.415353\\-202.8869\\-37\\-8.915353\\-202.8274\\-37\\-9.415353\\-202.3869\\-37\\-10.41535\\-202.3274\\-37\\-12.91535\\-200.8869\\-37\\-13.41535\\-200.8274\\-37\\-14.41535\\-199.8869\\-37\\-14.91535\\-199.8274\\-37\\-16.41535\\-198.3869\\-37\\-16.91535\\-198.3274\\-37\\-19.10589\\-196.1369\\-37\\-19.16535\\-195.6369\\-37\\-21.10589\\-193.6369\\-37\\-21.16535\\-193.1369\\-37\\-22.10589\\-192.1369\\-37\\-22.66535\\-190.6369\\-37\\-23.16535\\-190.1369\\-37\\-23.16535\\-189.6369\\-37\\-23.66535\\-189.1369\\-37\\-23.66535\\-188.1369\\-37\\-24.16535\\-187.6369\\-37\\-24.16535\\-187.1369\\-37\\-24.60589\\-186.6369\\-37\\-24.66535\\-185.1369\\-37\\-25.10589\\-184.6369\\-37\\-25.16535\\-182.1369\\-37\\-25.60589\\-181.6369\\-37\\-25.66535\\-180.6369\\-37\\-25.66535\\-177.1369\\-37\\-25.60589\\-176.1369\\-37\\-25.16535\\-175.6369\\-37\\-25.10589\\-173.6369\\-37\\-24.66535\\-173.1369\\-37\\-24.66535\\-172.1369\\-37\\-24.16535\\-171.6369\\-37\\-24.10589\\-170.6369\\-37\\-23.66535\\-170.1369\\-37\\-23.66535\\-169.6369\\-37\\-23.16535\\-169.1369\\-37\\-23.16535\\-168.6369\\-37\\-22.66535\\-168.1369\\-37\\-22.60589\\-167.6369\\-37\\-21.16535\\-166.1369\\-37\\-21.10589\\-165.6369\\-37\\-18.91535\\-163.4464\\-37\\-18.41535\\-163.3869\\-37\\-17.41535\\-162.3869\\-37\\-16.91535\\-162.3869\\-37\\-15.91535\\-161.4464\\-37\\-15.41535\\-161.3869\\-37\\-14.91535\\-160.8869\\-37\\-14.41535\\-160.8869\\-37\\-13.91535\\-160.3869\\-37\\-13.41535\\-160.3869\\-37\\-12.91535\\-159.9464\\-37\\-11.91535\\-159.8869\\-37\\-11.41535\\-159.3869\\-37\\-9.915353\\-159.3869\\-37\\-9.415353\\-158.8869\\-37\\-7.415353\\-158.8869\\-37\\-6.415353\\-158.3869\\-37\\-2.915353\\-158.3869\\-37\\-2.415353\\-157.8869\\-37\\2.584647\\-157.8869\\-37\\3.084647\\-158.3869\\-37\\6.584647\\-158.3869\\-37\\7.584647\\-158.8869\\-37\\9.584647\\-158.8869\\-37\\10.08465\\-159.3869\\-37\\11.58465\\-159.3869\\-37\\12.08465\\-159.8869\\-37\\13.58465\\-159.8869\\-37\\14.08465\\-160.3869\\-37\\14.58465\\-160.3869\\-37\\15.08465\\-160.8869\\-37\\15.58465\\-160.8869\\-37\\16.08465\\-161.3869\\-37\\16.58465\\-161.3869\\-37\\17.08465\\-161.8869\\-37\\17.58465\\-161.8869\\-37\\18.58465\\-162.8869\\-37\\19.08465\\-162.8869\\-37\\23.33465\\-167.1369\\-37\\23.33465\\-167.6369\\-37\\24.33465\\-168.6369\\-37\\24.33465\\-169.1369\\-37\\24.83465\\-169.6369\\-37\\24.83465\\-170.1369\\-37\\25.27518\\-170.6369\\-37\\25.33465\\-171.6369\\-37\\25.77518\\-172.1369\\-37\\25.83465\\-173.6369\\-37\\26.33465\\-174.1369\\-37\\26.33465\\-175.6369\\-37\\26.83465\\-176.6369\\-37\\26.83465\\-180.6369\\-37\\26.77518\\-181.6369\\-37\\26.33465\\-182.1369\\-37\\26.27518\\-184.6369\\-37\\25.83465\\-185.1369\\-37\\25.77518\\-186.6369\\-37\\25.33465\\-187.1369\\-37\\25.33465\\-187.6369\\-37\\24.83465\\-188.1369\\-37\\24.77518\\-189.1369\\-37\\24.33465\\-189.6369\\-37\\24.33465\\-190.1369\\-37\\23.83465\\-190.6369\\-37\\23.83465\\-191.1369\\-37\\23.33465\\-191.6369\\-37\\23.27518\\-192.1369\\-37\\22.33465\\-193.1369\\-37\\22.27518\\-193.6369\\-37\\20.33465\\-195.6369\\-37\\20.27518\\-196.1369\\-37\\18.08465\\-198.3274\\-37\\17.58465\\-198.3869\\-37\\16.08465\\-199.8274\\-37\\14.58465\\-200.3869\\-37\\13.58465\\-201.3274\\-37\\12.58465\\-201.8274\\-37\\11.58465\\-201.8869\\-37\\11.08465\\-202.3274\\-37\\10.08465\\-202.3869\\-37\\9.584647\\-202.8274\\-37\\8.584647\\-202.8869\\-37\\8.084647\\-203.3274\\-37\\6.584647\\-203.3869\\-37\\6.084647\\-203.8274\\-37\\4.584647\\-203.8869\\-37\\-3.915353\\-203.8869\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "128"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.415353\\-204.8274\\-35\\-2.915353\\-204.3869\\-35\\-5.415353\\-204.3274\\-35\\-5.915353\\-203.8869\\-35\\-7.415353\\-203.8274\\-35\\-7.915353\\-203.3869\\-35\\-8.915353\\-203.3274\\-35\\-9.415353\\-202.8869\\-35\\-10.41535\\-202.8274\\-35\\-12.91535\\-201.3869\\-35\\-13.41535\\-201.3274\\-35\\-14.41535\\-200.3869\\-35\\-15.41535\\-199.8869\\-35\\-20.66535\\-194.6369\\-35\\-21.16535\\-193.6369\\-35\\-22.10589\\-192.6369\\-35\\-22.16535\\-192.1369\\-35\\-22.66535\\-191.6369\\-35\\-22.66535\\-191.1369\\-35\\-23.16535\\-190.6369\\-35\\-23.16535\\-190.1369\\-35\\-23.66535\\-189.6369\\-35\\-23.66535\\-188.6369\\-35\\-24.16535\\-188.1369\\-35\\-24.16535\\-187.6369\\-35\\-24.66535\\-187.1369\\-35\\-24.66535\\-185.6369\\-35\\-25.16535\\-185.1369\\-35\\-25.16535\\-183.6369\\-35\\-25.66535\\-182.6369\\-35\\-25.66535\\-175.1369\\-35\\-25.16535\\-174.1369\\-35\\-25.16535\\-173.1369\\-35\\-24.66535\\-172.6369\\-35\\-24.66535\\-171.6369\\-35\\-24.16535\\-171.1369\\-35\\-24.16535\\-170.1369\\-35\\-23.66535\\-169.6369\\-35\\-23.66535\\-169.1369\\-35\\-23.16535\\-168.6369\\-35\\-23.16535\\-168.1369\\-35\\-22.16535\\-167.1369\\-35\\-21.66535\\-166.1369\\-35\\-18.41535\\-162.8869\\-35\\-17.91535\\-162.8869\\-35\\-16.91535\\-161.8869\\-35\\-16.41535\\-161.8869\\-35\\-15.91535\\-161.3869\\-35\\-15.41535\\-161.3869\\-35\\-14.91535\\-160.8869\\-35\\-14.41535\\-160.8869\\-35\\-13.91535\\-160.3869\\-35\\-13.41535\\-160.3869\\-35\\-12.91535\\-159.8869\\-35\\-11.91535\\-159.8869\\-35\\-11.41535\\-159.3869\\-35\\-9.915353\\-159.3869\\-35\\-9.415353\\-158.8869\\-35\\-7.415353\\-158.8869\\-35\\-6.915353\\-158.3869\\-35\\-3.415353\\-158.3869\\-35\\-2.915353\\-157.8869\\-35\\3.084647\\-157.8869\\-35\\3.584647\\-158.3869\\-35\\7.084647\\-158.3869\\-35\\7.584647\\-158.8869\\-35\\9.584647\\-158.8869\\-35\\10.08465\\-159.3869\\-35\\11.58465\\-159.3869\\-35\\12.08465\\-159.8869\\-35\\13.58465\\-159.8869\\-35\\14.08465\\-160.3869\\-35\\14.58465\\-160.3869\\-35\\15.08465\\-160.8869\\-35\\15.58465\\-160.8869\\-35\\16.08465\\-161.3869\\-35\\16.58465\\-161.3869\\-35\\17.08465\\-161.8869\\-35\\17.58465\\-161.8869\\-35\\18.08465\\-162.3869\\-35\\18.58465\\-162.3869\\-35\\20.08465\\-163.8869\\-35\\20.58465\\-163.8869\\-35\\22.77518\\-166.1369\\-35\\22.83465\\-166.6369\\-35\\23.83465\\-167.6369\\-35\\23.83465\\-168.1369\\-35\\24.83465\\-169.1369\\-35\\24.83465\\-169.6369\\-35\\25.27518\\-170.1369\\-35\\25.33465\\-171.1369\\-35\\25.83465\\-171.6369\\-35\\25.83465\\-172.6369\\-35\\26.33465\\-173.1369\\-35\\26.33465\\-174.1369\\-35\\26.83465\\-175.1369\\-35\\26.83465\\-182.6369\\-35\\26.33465\\-183.6369\\-35\\26.33465\\-185.1369\\-35\\25.83465\\-185.6369\\-35\\25.83465\\-187.1369\\-35\\25.33465\\-187.6369\\-35\\25.27518\\-188.6369\\-35\\24.83465\\-189.1369\\-35\\24.83465\\-189.6369\\-35\\24.33465\\-190.1369\\-35\\24.33465\\-190.6369\\-35\\23.83465\\-191.1369\\-35\\23.83465\\-191.6369\\-35\\23.33465\\-192.1369\\-35\\23.27518\\-192.6369\\-35\\22.33465\\-193.6369\\-35\\21.83465\\-194.6369\\-35\\16.58465\\-199.8869\\-35\\15.58465\\-200.3869\\-35\\15.08465\\-200.8869\\-35\\14.58465\\-200.8869\\-35\\13.58465\\-201.8274\\-35\\12.08465\\-202.3869\\-35\\11.58465\\-202.8274\\-35\\10.58465\\-202.8869\\-35\\10.08465\\-203.3274\\-35\\9.084647\\-203.3869\\-35\\8.584647\\-203.8274\\-35\\7.084647\\-203.8869\\-35\\6.584647\\-204.3274\\-35\\4.084647\\-204.3869\\-35\\3.584647\\-204.8274\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "151"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.415353\\-205.3274\\-33\\-2.915353\\-204.8869\\-33\\-5.415353\\-204.8274\\-33\\-5.915353\\-204.3869\\-33\\-7.415353\\-204.3274\\-33\\-7.915353\\-203.8869\\-33\\-8.915353\\-203.8274\\-33\\-9.415353\\-203.3869\\-33\\-9.915353\\-203.3869\\-33\\-10.41535\\-202.8869\\-33\\-10.91535\\-202.8869\\-33\\-11.41535\\-202.3869\\-33\\-11.91535\\-202.3869\\-33\\-12.41535\\-201.8869\\-33\\-12.91535\\-201.8869\\-33\\-13.41535\\-201.3869\\-33\\-13.91535\\-201.3274\\-33\\-15.91535\\-199.3869\\-33\\-16.41535\\-199.3869\\-33\\-19.10589\\-196.6369\\-33\\-19.16535\\-196.1369\\-33\\-21.16535\\-194.1369\\-33\\-21.16535\\-193.6369\\-33\\-22.16535\\-192.6369\\-33\\-22.16535\\-192.1369\\-33\\-22.66535\\-191.6369\\-33\\-22.66535\\-191.1369\\-33\\-23.16535\\-190.6369\\-33\\-23.16535\\-190.1369\\-33\\-23.66535\\-189.6369\\-33\\-23.66535\\-189.1369\\-33\\-24.16535\\-188.6369\\-33\\-24.16535\\-187.6369\\-33\\-24.66535\\-187.1369\\-33\\-24.66535\\-185.6369\\-33\\-25.16535\\-185.1369\\-33\\-25.16535\\-183.6369\\-33\\-25.66535\\-183.1369\\-33\\-25.66535\\-179.6369\\-33\\-26.16535\\-179.1369\\-33\\-26.16535\\-178.6369\\-33\\-25.66535\\-178.1369\\-33\\-25.66535\\-174.6369\\-33\\-25.16535\\-174.1369\\-33\\-25.16535\\-173.1369\\-33\\-24.66535\\-172.6369\\-33\\-24.66535\\-171.6369\\-33\\-24.16535\\-171.1369\\-33\\-24.16535\\-170.1369\\-33\\-23.66535\\-169.6369\\-33\\-23.66535\\-169.1369\\-33\\-23.16535\\-168.6369\\-33\\-23.16535\\-168.1369\\-33\\-22.16535\\-167.1369\\-33\\-22.16535\\-166.6369\\-33\\-18.41535\\-162.8869\\-33\\-17.91535\\-162.8869\\-33\\-16.91535\\-161.8869\\-33\\-16.41535\\-161.8869\\-33\\-15.91535\\-161.3869\\-33\\-15.41535\\-161.3869\\-33\\-14.91535\\-160.8869\\-33\\-14.41535\\-160.8869\\-33\\-13.91535\\-160.3869\\-33\\-13.41535\\-160.3869\\-33\\-12.91535\\-159.8869\\-33\\-11.91535\\-159.8869\\-33\\-11.41535\\-159.3869\\-33\\-9.915353\\-159.3869\\-33\\-9.415353\\-158.8869\\-33\\-6.915353\\-158.8274\\-33\\-6.415353\\-158.3869\\-33\\-2.415353\\-158.3869\\-33\\-1.415353\\-157.8869\\-33\\0.0846473\\-157.8869\\-33\\0.5846473\\-158.3274\\-33\\1.584647\\-158.3869\\-33\\6.584647\\-158.3869\\-33\\7.084647\\-158.8869\\-33\\9.584647\\-158.8869\\-33\\10.08465\\-159.3869\\-33\\11.58465\\-159.3869\\-33\\12.08465\\-159.8869\\-33\\13.58465\\-159.8869\\-33\\14.08465\\-160.3869\\-33\\14.58465\\-160.3869\\-33\\15.08465\\-160.8869\\-33\\15.58465\\-160.8869\\-33\\16.08465\\-161.3869\\-33\\16.58465\\-161.3869\\-33\\17.08465\\-161.8869\\-33\\17.58465\\-161.8869\\-33\\18.08465\\-162.3869\\-33\\18.58465\\-162.3869\\-33\\20.08465\\-163.8869\\-33\\20.58465\\-163.8869\\-33\\22.83465\\-166.1369\\-33\\22.83465\\-166.6369\\-33\\23.83465\\-167.6369\\-33\\23.89411\\-168.1369\\-33\\24.83465\\-169.1369\\-33\\24.83465\\-169.6369\\-33\\25.33465\\-170.1369\\-33\\25.33465\\-171.1369\\-33\\25.83465\\-171.6369\\-33\\25.83465\\-172.6369\\-33\\26.33465\\-173.1369\\-33\\26.33465\\-174.1369\\-33\\26.83465\\-174.6369\\-33\\26.83465\\-177.6369\\-33\\27.33465\\-178.1369\\-33\\27.33465\\-179.1369\\-33\\26.83465\\-179.6369\\-33\\26.83465\\-183.1369\\-33\\26.33465\\-183.6369\\-33\\26.33465\\-185.1369\\-33\\25.83465\\-185.6369\\-33\\25.83465\\-187.1369\\-33\\25.33465\\-187.6369\\-33\\25.33465\\-188.6369\\-33\\24.83465\\-189.1369\\-33\\24.83465\\-189.6369\\-33\\24.33465\\-190.1369\\-33\\24.33465\\-190.6369\\-33\\23.83465\\-191.1369\\-33\\23.83465\\-191.6369\\-33\\23.33465\\-192.1369\\-33\\23.33465\\-192.6369\\-33\\22.33465\\-193.6369\\-33\\22.33465\\-194.1369\\-33\\20.83465\\-195.6369\\-33\\20.77518\\-196.1369\\-33\\17.58465\\-199.3869\\-33\\17.08465\\-199.3869\\-33\\15.08465\\-201.3274\\-33\\14.58465\\-201.3869\\-33\\14.08465\\-201.8869\\-33\\13.58465\\-201.8869\\-33\\13.08465\\-202.3869\\-33\\12.58465\\-202.3869\\-33\\12.08465\\-202.8869\\-33\\11.58465\\-202.8869\\-33\\11.08465\\-203.3869\\-33\\10.58465\\-203.3869\\-33\\10.08465\\-203.8274\\-33\\9.084647\\-203.8869\\-33\\8.584647\\-204.3274\\-33\\7.084647\\-204.3869\\-33\\6.584647\\-204.8274\\-33\\4.084647\\-204.8869\\-33\\3.584647\\-205.3274\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "136"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.415353\\-205.8274\\-31\\-1.915353\\-205.3869\\-31\\-4.915353\\-205.3274\\-31\\-5.415353\\-204.8869\\-31\\-6.915353\\-204.8274\\-31\\-7.415353\\-204.3869\\-31\\-8.415353\\-204.3869\\-31\\-8.915353\\-203.8869\\-31\\-9.415353\\-203.8869\\-31\\-9.915353\\-203.3869\\-31\\-10.41535\\-203.3869\\-31\\-10.91535\\-202.8869\\-31\\-11.41535\\-202.8869\\-31\\-11.91535\\-202.3869\\-31\\-12.41535\\-202.3869\\-31\\-13.41535\\-201.3869\\-31\\-13.91535\\-201.3869\\-31\\-15.91535\\-199.3869\\-31\\-16.41535\\-199.3869\\-31\\-19.16535\\-196.6369\\-31\\-19.16535\\-196.1369\\-31\\-21.16535\\-194.1369\\-31\\-21.16535\\-193.6369\\-31\\-22.16535\\-192.6369\\-31\\-22.16535\\-192.1369\\-31\\-22.66535\\-191.6369\\-31\\-22.66535\\-191.1369\\-31\\-23.16535\\-190.6369\\-31\\-23.16535\\-190.1369\\-31\\-23.66535\\-189.6369\\-31\\-23.72482\\-188.6369\\-31\\-24.16535\\-188.1369\\-31\\-24.16535\\-187.6369\\-31\\-24.66535\\-187.1369\\-31\\-24.66535\\-185.6369\\-31\\-25.16535\\-185.1369\\-31\\-25.22482\\-183.1369\\-31\\-25.66535\\-182.6369\\-31\\-25.66535\\-175.1369\\-31\\-25.16535\\-174.6369\\-31\\-25.16535\\-173.6369\\-31\\-24.72482\\-173.1369\\-31\\-24.66535\\-171.6369\\-31\\-24.16535\\-171.1369\\-31\\-24.16535\\-170.6369\\-31\\-23.72482\\-170.1369\\-31\\-23.16535\\-168.6369\\-31\\-22.66535\\-168.1369\\-31\\-22.66535\\-167.6369\\-31\\-21.22482\\-166.1369\\-31\\-21.16535\\-165.6369\\-31\\-18.91535\\-163.3869\\-31\\-18.41535\\-163.3869\\-31\\-17.41535\\-162.3869\\-31\\-16.91535\\-162.3274\\-31\\-15.91535\\-161.3869\\-31\\-15.41535\\-161.3869\\-31\\-14.91535\\-160.8869\\-31\\-14.41535\\-160.8869\\-31\\-13.91535\\-160.3869\\-31\\-12.91535\\-160.3869\\-31\\-12.41535\\-159.8869\\-31\\-11.41535\\-159.8274\\-31\\-10.91535\\-159.3869\\-31\\-9.415353\\-159.3869\\-31\\-8.915353\\-158.8869\\-31\\-5.915353\\-158.8274\\-31\\-5.415353\\-158.3869\\-31\\5.584647\\-158.3869\\-31\\6.084647\\-158.8869\\-31\\9.084647\\-158.8869\\-31\\9.584647\\-159.3869\\-31\\11.58465\\-159.3869\\-31\\12.08465\\-159.8869\\-31\\13.08465\\-159.8869\\-31\\13.58465\\-160.3869\\-31\\14.58465\\-160.3869\\-31\\15.08465\\-160.8869\\-31\\15.58465\\-160.8869\\-31\\16.08465\\-161.3869\\-31\\16.58465\\-161.3869\\-31\\17.08465\\-161.8869\\-31\\17.58465\\-161.8869\\-31\\18.58465\\-162.8869\\-31\\19.08465\\-162.8869\\-31\\23.83465\\-167.6369\\-31\\23.83465\\-168.1369\\-31\\24.33465\\-168.6369\\-31\\24.33465\\-169.1369\\-31\\24.83465\\-169.6369\\-31\\24.83465\\-170.1369\\-31\\25.33465\\-170.6369\\-31\\25.33465\\-171.1369\\-31\\25.83465\\-171.6369\\-31\\25.89411\\-173.1369\\-31\\26.33465\\-173.6369\\-31\\26.33465\\-174.6369\\-31\\26.83465\\-175.1369\\-31\\26.83465\\-182.6369\\-31\\26.39411\\-183.1369\\-31\\26.33465\\-185.1369\\-31\\25.83465\\-185.6369\\-31\\25.83465\\-187.1369\\-31\\25.33465\\-187.6369\\-31\\25.33465\\-188.6369\\-31\\24.83465\\-189.1369\\-31\\24.83465\\-189.6369\\-31\\24.33465\\-190.1369\\-31\\24.33465\\-190.6369\\-31\\23.83465\\-191.1369\\-31\\23.83465\\-191.6369\\-31\\23.33465\\-192.1369\\-31\\23.33465\\-192.6369\\-31\\22.33465\\-193.6369\\-31\\22.33465\\-194.1369\\-31\\20.83465\\-195.6369\\-31\\20.83465\\-196.1369\\-31\\17.08465\\-199.8869\\-31\\16.58465\\-199.8869\\-31\\14.58465\\-201.8869\\-31\\14.08465\\-201.8869\\-31\\13.58465\\-202.3869\\-31\\13.08465\\-202.3869\\-31\\12.58465\\-202.8869\\-31\\12.08465\\-202.8869\\-31\\11.58465\\-203.3869\\-31\\11.08465\\-203.3869\\-31\\10.58465\\-203.8869\\-31\\10.08465\\-203.8869\\-31\\9.584647\\-204.3274\\-31\\8.584647\\-204.3869\\-31\\8.084647\\-204.8274\\-31\\6.584647\\-204.8869\\-31\\6.084647\\-205.3274\\-31\\3.084647\\-205.3869\\-31\\2.584647\\-205.8274\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "144"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "16"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.415353\\-205.8869\\-29\\-3.915353\\-205.3869\\-29\\-5.415353\\-205.3869\\-29\\-5.915353\\-204.8869\\-29\\-7.415353\\-204.8869\\-29\\-7.915353\\-204.3869\\-29\\-8.415353\\-204.3869\\-29\\-8.915353\\-203.8869\\-29\\-9.415353\\-203.8869\\-29\\-9.915353\\-203.3869\\-29\\-10.41535\\-203.3869\\-29\\-10.91535\\-202.8869\\-29\\-11.41535\\-202.8869\\-29\\-11.91535\\-202.3869\\-29\\-12.41535\\-202.3869\\-29\\-13.41535\\-201.3869\\-29\\-13.91535\\-201.3869\\-29\\-16.41535\\-198.9464\\-29\\-16.91535\\-198.8869\\-29\\-18.16535\\-197.6369\\-29\\-18.22482\\-197.1369\\-29\\-20.66535\\-194.6369\\-29\\-20.66535\\-194.1369\\-29\\-21.66535\\-193.1369\\-29\\-21.66535\\-192.6369\\-29\\-22.16535\\-192.1369\\-29\\-22.16535\\-191.6369\\-29\\-22.66535\\-191.1369\\-29\\-22.66535\\-190.6369\\-29\\-23.16535\\-190.1369\\-29\\-23.16535\\-189.6369\\-29\\-23.66535\\-189.1369\\-29\\-23.72482\\-188.1369\\-29\\-24.16535\\-187.6369\\-29\\-24.22482\\-186.6369\\-29\\-24.66535\\-186.1369\\-29\\-24.72482\\-184.6369\\-29\\-25.16535\\-184.1369\\-29\\-25.22482\\-180.6369\\-29\\-25.66535\\-180.1369\\-29\\-25.66535\\-178.1369\\-29\\-25.22482\\-177.6369\\-29\\-25.16535\\-174.6369\\-29\\-24.72482\\-174.1369\\-29\\-24.66535\\-172.6369\\-29\\-24.16535\\-172.1369\\-29\\-24.16535\\-171.1369\\-29\\-23.66535\\-170.6369\\-29\\-23.66535\\-170.1369\\-29\\-23.16535\\-169.1369\\-29\\-22.66535\\-168.6369\\-29\\-22.66535\\-168.1369\\-29\\-21.22482\\-166.6369\\-29\\-21.16535\\-166.1369\\-29\\-18.41535\\-163.3869\\-29\\-17.91535\\-163.3274\\-29\\-16.91535\\-162.3869\\-29\\-16.41535\\-162.3274\\-29\\-15.41535\\-161.3869\\-29\\-14.91535\\-161.3869\\-29\\-14.41535\\-160.8869\\-29\\-13.41535\\-160.8274\\-29\\-11.91535\\-159.8869\\-29\\-10.91535\\-159.8869\\-29\\-10.41535\\-159.3869\\-29\\-7.915353\\-159.3274\\-29\\-7.415353\\-158.8869\\-29\\-3.415353\\-158.8274\\-29\\-2.915353\\-158.3869\\-29\\2.584647\\-158.3869\\-29\\3.084647\\-158.8274\\-29\\4.084647\\-158.8869\\-29\\7.584647\\-158.8869\\-29\\8.084647\\-159.3274\\-29\\10.58465\\-159.3869\\-29\\11.08465\\-159.8274\\-29\\12.58465\\-159.8869\\-29\\13.08465\\-160.3869\\-29\\14.08465\\-160.3869\\-29\\14.58465\\-160.8869\\-29\\15.08465\\-160.8869\\-29\\15.58465\\-161.3869\\-29\\16.08465\\-161.3869\\-29\\16.58465\\-161.8869\\-29\\17.08465\\-161.8869\\-29\\18.08465\\-162.8274\\-29\\18.58465\\-162.8869\\-29\\20.08465\\-164.3274\\-29\\20.58465\\-164.3869\\-29\\21.83465\\-165.6369\\-29\\21.89411\\-166.1369\\-29\\23.33465\\-167.6369\\-29\\23.39411\\-168.1369\\-29\\24.33465\\-169.1369\\-29\\24.33465\\-169.6369\\-29\\24.83465\\-170.1369\\-29\\24.89411\\-171.1369\\-29\\25.33465\\-171.6369\\-29\\25.33465\\-172.1369\\-29\\25.83465\\-172.6369\\-29\\25.89411\\-174.1369\\-29\\26.33465\\-174.6369\\-29\\26.39411\\-177.1369\\-29\\26.83465\\-177.6369\\-29\\26.83465\\-180.1369\\-29\\26.39411\\-180.6369\\-29\\26.33465\\-184.1369\\-29\\25.89411\\-184.6369\\-29\\25.83465\\-186.1369\\-29\\25.39411\\-186.6369\\-29\\25.33465\\-188.1369\\-29\\24.83465\\-188.6369\\-29\\24.83465\\-189.1369\\-29\\24.33465\\-189.6369\\-29\\24.33465\\-190.1369\\-29\\23.83465\\-190.6369\\-29\\23.83465\\-191.1369\\-29\\23.33465\\-191.6369\\-29\\23.33465\\-192.1369\\-29\\22.83465\\-192.6369\\-29\\22.83465\\-193.1369\\-29\\21.89411\\-194.1369\\-29\\21.83465\\-194.6369\\-29\\20.39411\\-196.1369\\-29\\20.33465\\-196.6369\\-29\\17.08465\\-199.8869\\-29\\16.58465\\-199.8869\\-29\\14.58465\\-201.8869\\-29\\14.08465\\-201.8869\\-29\\13.58465\\-202.3869\\-29\\13.08465\\-202.3869\\-29\\12.58465\\-202.8869\\-29\\12.08465\\-202.8869\\-29\\11.58465\\-203.3869\\-29\\11.08465\\-203.3869\\-29\\10.58465\\-203.8869\\-29\\10.08465\\-203.8869\\-29\\9.584647\\-204.3869\\-29\\9.084647\\-204.3869\\-29\\8.584647\\-204.8869\\-29\\7.084647\\-204.8869\\-29\\6.584647\\-205.3869\\-29\\5.084647\\-205.3869\\-29\\4.584647\\-205.8869\\-29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "128"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.4153527\\-206.3869\\-27\\-0.9153527\\-205.8869\\-27\\-3.415353\\-205.8869\\-27\\-3.915353\\-205.3869\\-27\\-5.415353\\-205.3869\\-27\\-5.915353\\-204.8869\\-27\\-7.415353\\-204.8869\\-27\\-7.915353\\-204.3869\\-27\\-8.415353\\-204.3869\\-27\\-8.915353\\-203.8869\\-27\\-9.415353\\-203.8869\\-27\\-9.915353\\-203.3869\\-27\\-10.41535\\-203.3869\\-27\\-10.91535\\-202.8869\\-27\\-11.41535\\-202.8869\\-27\\-11.91535\\-202.3869\\-27\\-12.41535\\-202.3869\\-27\\-13.91535\\-200.9464\\-27\\-14.41535\\-200.8869\\-27\\-19.16535\\-196.1369\\-27\\-19.22482\\-195.6369\\-27\\-20.66535\\-194.1369\\-27\\-21.22482\\-192.6369\\-27\\-22.16535\\-191.6369\\-27\\-22.16535\\-191.1369\\-27\\-22.66535\\-190.6369\\-27\\-22.72482\\-189.6369\\-27\\-23.66535\\-188.1369\\-27\\-23.72482\\-187.1369\\-27\\-24.16535\\-186.6369\\-27\\-24.22482\\-185.1369\\-27\\-24.66535\\-184.6369\\-27\\-24.72482\\-181.6369\\-27\\-25.16535\\-181.1369\\-27\\-25.16535\\-177.6369\\-27\\-24.72482\\-177.1369\\-27\\-24.66535\\-174.1369\\-27\\-24.22482\\-173.6369\\-27\\-24.16535\\-172.6369\\-27\\-23.72482\\-172.1369\\-27\\-23.66535\\-171.1369\\-27\\-22.72482\\-169.6369\\-27\\-22.66535\\-169.1369\\-27\\-21.72482\\-168.1369\\-27\\-21.66535\\-167.6369\\-27\\-20.72482\\-166.6369\\-27\\-20.66535\\-166.1369\\-27\\-18.41535\\-163.8869\\-27\\-17.91535\\-163.8274\\-27\\-16.91535\\-162.8869\\-27\\-16.41535\\-162.8274\\-27\\-15.41535\\-161.8869\\-27\\-14.91535\\-161.8869\\-27\\-14.41535\\-161.3869\\-27\\-13.91535\\-161.3869\\-27\\-13.41535\\-160.8869\\-27\\-12.91535\\-160.8869\\-27\\-12.41535\\-160.3869\\-27\\-11.41535\\-160.3869\\-27\\-10.91535\\-159.8869\\-27\\-9.415353\\-159.8274\\-27\\-8.915353\\-159.3869\\-27\\-5.915353\\-159.3274\\-27\\-5.415353\\-158.8869\\-27\\5.084647\\-158.8869\\-27\\5.584647\\-159.3274\\-27\\9.084647\\-159.3869\\-27\\9.584647\\-159.8274\\-27\\11.08465\\-159.8869\\-27\\11.58465\\-160.3274\\-27\\13.08465\\-160.3869\\-27\\13.58465\\-160.8869\\-27\\14.08465\\-160.8869\\-27\\17.08465\\-162.3869\\-27\\18.08465\\-163.3274\\-27\\18.58465\\-163.3869\\-27\\19.39411\\-164.1369\\-27\\22.83465\\-167.6369\\-27\\22.89411\\-168.1369\\-27\\23.83465\\-169.1369\\-27\\23.83465\\-169.6369\\-27\\24.33465\\-170.1369\\-27\\24.33465\\-170.6369\\-27\\24.83465\\-171.1369\\-27\\24.89411\\-172.1369\\-27\\25.33465\\-172.6369\\-27\\25.39411\\-173.6369\\-27\\25.83465\\-174.1369\\-27\\25.89411\\-176.6369\\-27\\26.33465\\-177.1369\\-27\\26.33465\\-181.1369\\-27\\25.89411\\-181.6369\\-27\\25.83465\\-184.6369\\-27\\25.39411\\-185.1369\\-27\\25.33465\\-186.6369\\-27\\24.89411\\-187.1369\\-27\\24.83465\\-188.1369\\-27\\24.39411\\-188.6369\\-27\\24.33465\\-189.6369\\-27\\23.83465\\-190.1369\\-27\\23.83465\\-190.6369\\-27\\23.33465\\-191.1369\\-27\\23.33465\\-191.6369\\-27\\22.83465\\-192.1369\\-27\\22.83465\\-192.6369\\-27\\21.89411\\-193.6369\\-27\\21.83465\\-194.1369\\-27\\20.89411\\-195.1369\\-27\\20.83465\\-195.6369\\-27\\15.08465\\-201.3869\\-27\\14.58465\\-201.3869\\-27\\13.58465\\-202.3869\\-27\\13.08465\\-202.3869\\-27\\12.58465\\-202.8869\\-27\\12.08465\\-202.8869\\-27\\11.58465\\-203.3869\\-27\\11.08465\\-203.3869\\-27\\10.58465\\-203.8869\\-27\\10.08465\\-203.8869\\-27\\9.584647\\-204.3869\\-27\\9.084647\\-204.3869\\-27\\8.584647\\-204.8869\\-27\\7.584647\\-204.8869\\-27\\7.084647\\-205.3869\\-27\\5.584647\\-205.3869\\-27\\5.084647\\-205.8869\\-27\\2.584647\\-205.8869\\-27\\2.084647\\-206.3869\\-27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "118"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.915353\\-205.8869\\-25\\-3.415353\\-205.3869\\-25\\-5.415353\\-205.3869\\-25\\-5.915353\\-204.8869\\-25\\-6.915353\\-204.8869\\-25\\-7.415353\\-204.3869\\-25\\-7.915353\\-204.3869\\-25\\-10.41535\\-202.9464\\-25\\-10.91535\\-202.8869\\-25\\-11.41535\\-202.3869\\-25\\-11.91535\\-202.3869\\-25\\-13.41535\\-200.9464\\-25\\-13.91535\\-200.8869\\-25\\-17.41535\\-197.4464\\-25\\-18.66535\\-196.1369\\-25\\-18.72482\\-195.6369\\-25\\-19.66535\\-194.6369\\-25\\-19.72482\\-194.1369\\-25\\-20.66535\\-193.1369\\-25\\-21.22482\\-191.6369\\-25\\-21.66535\\-191.1369\\-25\\-22.22482\\-189.6369\\-25\\-22.66535\\-189.1369\\-25\\-22.72482\\-188.1369\\-25\\-23.16535\\-187.6369\\-25\\-23.22482\\-186.6369\\-25\\-23.66535\\-186.1369\\-25\\-23.72482\\-185.1369\\-25\\-24.16535\\-184.6369\\-25\\-24.22482\\-181.1369\\-25\\-24.66535\\-180.6369\\-25\\-24.66535\\-178.1369\\-25\\-24.22482\\-177.6369\\-25\\-24.16535\\-174.6369\\-25\\-23.72482\\-174.1369\\-25\\-23.66535\\-172.6369\\-25\\-22.66535\\-170.6369\\-25\\-22.22482\\-170.1369\\-25\\-21.66535\\-168.6369\\-25\\-20.72482\\-167.6369\\-25\\-20.66535\\-167.1369\\-25\\-19.91535\\-166.3274\\-25\\-17.41535\\-163.8869\\-25\\-16.91535\\-163.8274\\-25\\-15.91535\\-162.8869\\-25\\-15.41535\\-162.8274\\-25\\-14.41535\\-161.8869\\-25\\-13.91535\\-161.8869\\-25\\-13.41535\\-161.3869\\-25\\-12.41535\\-161.3274\\-25\\-10.91535\\-160.3869\\-25\\-9.415353\\-160.3274\\-25\\-8.915353\\-159.8869\\-25\\-6.915353\\-159.8274\\-25\\-6.415353\\-159.3869\\-25\\6.584647\\-159.3869\\-25\\7.084647\\-159.8274\\-25\\9.584647\\-159.8869\\-25\\10.08465\\-160.3274\\-25\\11.58465\\-160.3869\\-25\\12.08465\\-160.8869\\-25\\12.58465\\-160.8869\\-25\\13.08465\\-161.3274\\-25\\14.08465\\-161.3869\\-25\\14.58465\\-161.8869\\-25\\15.08465\\-161.8869\\-25\\16.08465\\-162.3869\\-25\\17.08465\\-163.3274\\-25\\17.58465\\-163.3869\\-25\\18.58465\\-164.3274\\-25\\19.08465\\-164.3869\\-25\\21.33465\\-166.6369\\-25\\21.39411\\-167.1369\\-25\\22.83465\\-168.6369\\-25\\23.39411\\-170.1369\\-25\\24.33465\\-171.6369\\-25\\24.39411\\-172.6369\\-25\\24.83465\\-173.1369\\-25\\24.89411\\-174.1369\\-25\\25.33465\\-174.6369\\-25\\25.39411\\-177.6369\\-25\\25.83465\\-178.1369\\-25\\25.83465\\-181.1369\\-25\\25.39411\\-181.6369\\-25\\25.33465\\-184.6369\\-25\\24.89411\\-185.1369\\-25\\24.83465\\-186.6369\\-25\\24.39411\\-187.1369\\-25\\24.33465\\-188.1369\\-25\\23.83465\\-188.6369\\-25\\23.83465\\-189.1369\\-25\\23.39411\\-189.6369\\-25\\23.33465\\-190.6369\\-25\\22.83465\\-191.1369\\-25\\22.83465\\-191.6369\\-25\\21.89411\\-192.6369\\-25\\21.33465\\-194.1369\\-25\\20.39411\\-195.1369\\-25\\20.33465\\-195.6369\\-25\\18.39411\\-197.6369\\-25\\18.33465\\-198.1369\\-25\\17.08465\\-199.3869\\-25\\16.58465\\-199.4464\\-25\\14.58465\\-201.3869\\-25\\14.08465\\-201.4464\\-25\\13.08465\\-202.3869\\-25\\12.58465\\-202.4464\\-25\\11.58465\\-203.3869\\-25\\11.08465\\-203.3869\\-25\\10.58465\\-203.8869\\-25\\10.08465\\-203.8869\\-25\\9.584647\\-204.3869\\-25\\8.584647\\-204.4464\\-25\\8.084647\\-204.8869\\-25\\7.084647\\-204.8869\\-25\\6.584647\\-205.3869\\-25\\4.584647\\-205.4464\\-25\\4.084647\\-205.8869\\-25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "102"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.915353\\-205.3869\\-23\\-4.415353\\-204.9464\\-23\\-5.915353\\-204.8869\\-23\\-6.415353\\-204.3869\\-23\\-6.915353\\-204.3869\\-23\\-8.415353\\-203.4464\\-23\\-9.415353\\-203.3869\\-23\\-10.41535\\-202.4464\\-23\\-10.91535\\-202.3869\\-23\\-11.91535\\-201.4464\\-23\\-12.41535\\-201.3869\\-23\\-13.41535\\-200.4464\\-23\\-13.91535\\-200.3869\\-23\\-17.16535\\-197.1369\\-23\\-17.22482\\-196.6369\\-23\\-18.66535\\-195.1369\\-23\\-18.72482\\-194.6369\\-23\\-19.66535\\-193.6369\\-23\\-20.22482\\-192.1369\\-23\\-21.16535\\-191.1369\\-23\\-21.22482\\-190.1369\\-23\\-22.16535\\-188.6369\\-23\\-22.22482\\-187.6369\\-23\\-22.66535\\-187.1369\\-23\\-22.72482\\-186.1369\\-23\\-23.16535\\-185.6369\\-23\\-23.22482\\-183.6369\\-23\\-23.66535\\-183.1369\\-23\\-23.66535\\-175.6369\\-23\\-23.22482\\-175.1369\\-23\\-23.16535\\-173.6369\\-23\\-22.72482\\-173.1369\\-23\\-22.66535\\-172.1369\\-23\\-21.22482\\-169.6369\\-23\\-21.16535\\-169.1369\\-23\\-20.22482\\-168.1369\\-23\\-20.16535\\-167.6369\\-23\\-19.41535\\-166.8274\\-23\\-16.41535\\-163.8869\\-23\\-15.91535\\-163.8274\\-23\\-14.91535\\-162.8869\\-23\\-11.91535\\-161.3869\\-23\\-10.91535\\-161.3274\\-23\\-10.41535\\-160.8869\\-23\\-9.415353\\-160.8274\\-23\\-8.915353\\-160.3869\\-23\\-6.915353\\-160.3274\\-23\\-6.415353\\-159.8869\\-23\\-2.915353\\-159.8274\\-23\\2.584647\\-159.8274\\-23\\3.084647\\-159.8869\\-23\\7.084647\\-159.8869\\-23\\7.584647\\-160.3274\\-23\\9.084647\\-160.3869\\-23\\9.584647\\-160.8274\\-23\\11.08465\\-160.8869\\-23\\11.58465\\-161.3274\\-23\\12.58465\\-161.3869\\-23\\15.08465\\-162.8274\\-23\\16.58465\\-163.3869\\-23\\18.08465\\-164.8274\\-23\\18.58465\\-164.8869\\-23\\20.83465\\-167.1369\\-23\\20.89411\\-167.6369\\-23\\21.83465\\-168.6369\\-23\\22.39411\\-170.1369\\-23\\22.83465\\-170.6369\\-23\\23.89411\\-173.1369\\-23\\24.33465\\-173.6369\\-23\\24.39411\\-175.6369\\-23\\24.83465\\-176.1369\\-23\\24.83465\\-183.1369\\-23\\24.39411\\-183.6369\\-23\\24.33465\\-185.6369\\-23\\23.89411\\-186.1369\\-23\\23.83465\\-187.1369\\-23\\23.39411\\-187.6369\\-23\\23.33465\\-188.6369\\-23\\22.39411\\-190.1369\\-23\\22.33465\\-191.1369\\-23\\21.83465\\-192.1369\\-23\\20.89411\\-193.1369\\-23\\20.33465\\-194.6369\\-23\\18.89411\\-196.1369\\-23\\18.83465\\-196.6369\\-23\\16.39411\\-199.1369\\-23\\14.58465\\-200.8869\\-23\\14.08465\\-200.9464\\-23\\13.08465\\-201.8869\\-23\\12.58465\\-201.9464\\-23\\11.58465\\-202.8869\\-23\\11.08465\\-202.8869\\-23\\10.58465\\-203.3869\\-23\\10.08465\\-203.3869\\-23\\9.584647\\-203.8869\\-23\\9.084647\\-203.8869\\-23\\8.584647\\-204.3869\\-23\\7.584647\\-204.4464\\-23\\7.084647\\-204.8869\\-23\\5.584647\\-204.9464\\-23\\5.084647\\-205.3869\\-23\\-0.9153527\\-205.4464\\-23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "99"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.415353\\-204.8869\\-21\\-3.915353\\-204.4464\\-21\\-5.415353\\-204.3869\\-21\\-5.915353\\-203.9464\\-21\\-6.915353\\-203.8869\\-21\\-8.415353\\-202.9464\\-21\\-9.915353\\-202.3869\\-21\\-10.91535\\-201.4464\\-21\\-11.41535\\-201.3869\\-21\\-13.41535\\-199.4464\\-21\\-13.91535\\-199.3869\\-21\\-16.16535\\-197.1369\\-21\\-16.22482\\-196.6369\\-21\\-17.66535\\-195.1369\\-21\\-17.72482\\-194.6369\\-21\\-18.66535\\-193.6369\\-21\\-19.22482\\-192.1369\\-21\\-20.16535\\-191.1369\\-21\\-20.66535\\-190.1369\\-21\\-20.72482\\-189.1369\\-21\\-21.16535\\-188.6369\\-21\\-21.22482\\-187.6369\\-21\\-21.66535\\-187.1369\\-21\\-21.72482\\-186.1369\\-21\\-22.16535\\-185.6369\\-21\\-22.22482\\-184.1369\\-21\\-22.66535\\-183.6369\\-21\\-22.72482\\-181.1369\\-21\\-22.72482\\-177.6369\\-21\\-22.66535\\-175.6369\\-21\\-22.22482\\-175.1369\\-21\\-22.16535\\-173.6369\\-21\\-21.22482\\-172.1369\\-21\\-21.16535\\-171.1369\\-21\\-20.66535\\-170.1369\\-21\\-19.72482\\-169.1369\\-21\\-19.66535\\-168.6369\\-21\\-18.72482\\-167.6369\\-21\\-18.66535\\-167.1369\\-21\\-17.41535\\-165.8869\\-21\\-16.91535\\-165.8274\\-21\\-14.91535\\-163.8869\\-21\\-10.91535\\-161.8869\\-21\\-9.915353\\-161.8274\\-21\\-9.415353\\-161.3869\\-21\\-8.415353\\-161.3274\\-21\\-7.915353\\-160.8869\\-21\\-5.915353\\-160.8274\\-21\\-5.415353\\-160.3869\\-21\\5.584647\\-160.3869\\-21\\6.084647\\-160.8274\\-21\\8.584647\\-160.8869\\-21\\9.084647\\-161.3274\\-21\\10.08465\\-161.3869\\-21\\10.58465\\-161.8274\\-21\\11.58465\\-161.8869\\-21\\12.08465\\-162.3274\\-21\\13.08465\\-162.3869\\-21\\14.58465\\-163.3274\\-21\\15.08465\\-163.3869\\-21\\16.08465\\-164.3274\\-21\\16.58465\\-164.3869\\-21\\20.58465\\-168.3274\\-21\\21.39411\\-170.1369\\-21\\21.83465\\-170.6369\\-21\\22.39411\\-172.1369\\-21\\22.83465\\-172.6369\\-21\\22.89411\\-173.6369\\-21\\23.33465\\-174.1369\\-21\\23.39411\\-175.1369\\-21\\23.83465\\-175.6369\\-21\\23.89411\\-177.6369\\-21\\23.89411\\-181.6369\\-21\\23.83465\\-183.6369\\-21\\23.39411\\-184.1369\\-21\\23.33465\\-185.6369\\-21\\22.89411\\-186.1369\\-21\\22.83465\\-187.6369\\-21\\21.89411\\-189.1369\\-21\\21.83465\\-190.1369\\-21\\20.39411\\-192.6369\\-21\\20.33465\\-193.1369\\-21\\19.39411\\-194.1369\\-21\\19.33465\\-194.6369\\-21\\17.89411\\-196.1369\\-21\\17.83465\\-196.6369\\-21\\17.08465\\-197.4464\\-21\\14.08465\\-200.3869\\-21\\13.58465\\-200.4464\\-21\\12.08465\\-201.8869\\-21\\10.08465\\-202.8869\\-21\\9.584647\\-202.9464\\-21\\8.084647\\-203.8869\\-21\\7.084647\\-203.9464\\-21\\6.584647\\-204.3869\\-21\\5.584647\\-204.4464\\-21\\5.084647\\-204.8869\\-21\\3.084647\\-204.9464\\-21\\-1.915353\\-204.9464\\-21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "100"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.915353\\-204.3869\\-19\\-2.415353\\-203.9464\\-19\\-4.415353\\-203.8869\\-19\\-4.915353\\-203.4464\\-19\\-5.915353\\-203.3869\\-19\\-6.415353\\-202.9464\\-19\\-8.915353\\-201.8869\\-19\\-9.915353\\-200.9464\\-19\\-10.41535\\-200.8869\\-19\\-11.91535\\-199.4464\\-19\\-12.41535\\-199.3869\\-19\\-15.16535\\-196.6369\\-19\\-15.22482\\-196.1369\\-19\\-17.16535\\-194.1369\\-19\\-17.22482\\-193.6369\\-19\\-18.16535\\-192.6369\\-19\\-18.22482\\-192.1369\\-19\\-19.66535\\-189.6369\\-19\\-19.72482\\-188.6369\\-19\\-20.16535\\-188.1369\\-19\\-20.22482\\-187.1369\\-19\\-20.66535\\-186.6369\\-19\\-20.72482\\-185.6369\\-19\\-21.16535\\-185.1369\\-19\\-21.22482\\-183.1369\\-19\\-21.66535\\-182.6369\\-19\\-21.66535\\-176.6369\\-19\\-21.22482\\-176.1369\\-19\\-21.16535\\-174.6369\\-19\\-20.72482\\-174.1369\\-19\\-20.66535\\-173.1369\\-19\\-20.22482\\-172.6369\\-19\\-20.16535\\-171.6369\\-19\\-19.66535\\-170.6369\\-19\\-18.72482\\-169.6369\\-19\\-18.41535\\-168.8274\\-19\\-14.72482\\-165.1369\\-19\\-13.91535\\-164.8274\\-19\\-12.91535\\-163.8869\\-19\\-12.41535\\-163.8274\\-19\\-10.91535\\-162.8869\\-19\\-9.915353\\-162.8274\\-19\\-9.415353\\-162.3869\\-19\\-8.415353\\-162.3274\\-19\\-7.915353\\-161.8869\\-19\\-6.415353\\-161.8274\\-19\\-5.915353\\-161.3869\\-19\\-3.915353\\-161.3274\\-19\\5.084647\\-161.3274\\-19\\6.584647\\-161.3869\\-19\\7.084647\\-161.8274\\-19\\8.584647\\-161.8869\\-19\\9.084647\\-162.3274\\-19\\10.08465\\-162.3869\\-19\\10.58465\\-162.8274\\-19\\11.58465\\-162.8869\\-19\\13.08465\\-163.8274\\-19\\13.58465\\-163.8274\\-19\\14.08465\\-164.3274\\-19\\14.58465\\-164.3869\\-19\\15.58465\\-165.3274\\-19\\16.39411\\-165.6369\\-19\\19.08465\\-168.3274\\-19\\19.39411\\-169.1369\\-19\\20.39411\\-170.1369\\-19\\20.39411\\-170.6369\\-19\\20.89411\\-171.1369\\-19\\20.89411\\-171.6369\\-19\\21.39411\\-172.1369\\-19\\21.39411\\-172.6369\\-19\\21.83465\\-173.1369\\-19\\21.89411\\-174.1369\\-19\\22.33465\\-174.6369\\-19\\22.39411\\-176.1369\\-19\\22.83465\\-176.6369\\-19\\22.83465\\-182.6369\\-19\\22.39411\\-183.1369\\-19\\22.33465\\-185.1369\\-19\\21.89411\\-185.6369\\-19\\21.83465\\-187.1369\\-19\\21.39411\\-187.6369\\-19\\21.33465\\-188.6369\\-19\\19.89411\\-191.1369\\-19\\19.89411\\-191.6369\\-19\\19.39411\\-192.1369\\-19\\18.83465\\-193.6369\\-19\\17.39411\\-195.1369\\-19\\17.08465\\-195.9464\\-19\\12.89411\\-200.1369\\-19\\12.08465\\-200.4464\\-19\\11.08465\\-201.3869\\-19\\10.58465\\-201.4464\\-19\\9.584647\\-202.3869\\-19\\8.584647\\-202.8869\\-19\\7.584647\\-202.9464\\-19\\7.084647\\-203.3869\\-19\\6.084647\\-203.4464\\-19\\5.584647\\-203.8869\\-19\\3.584647\\-203.9464\\-19\\3.084647\\-204.3869\\-19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "104"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.9153527\\-203.3869\\-17\\-1.415353\\-202.9464\\-17\\-3.415353\\-202.8869\\-17\\-3.915353\\-202.4464\\-17\\-4.915353\\-202.3869\\-17\\-5.415353\\-201.9464\\-17\\-6.415353\\-201.8869\\-17\\-7.915353\\-200.9464\\-17\\-8.415353\\-200.8869\\-17\\-9.915353\\-199.4464\\-17\\-10.41535\\-199.4464\\-17\\-14.91535\\-194.9464\\-17\\-15.22482\\-194.1369\\-17\\-16.22482\\-193.1369\\-17\\-16.22482\\-192.6369\\-17\\-17.22482\\-191.6369\\-17\\-17.22482\\-191.1369\\-17\\-17.72482\\-190.6369\\-17\\-17.72482\\-190.1369\\-17\\-18.66535\\-188.6369\\-17\\-18.72482\\-187.6369\\-17\\-19.16535\\-187.1369\\-17\\-19.22482\\-185.6369\\-17\\-19.66535\\-185.1369\\-17\\-19.72482\\-183.6369\\-17\\-20.16535\\-183.1369\\-17\\-20.22482\\-182.1369\\-17\\-20.22482\\-177.6369\\-17\\-20.16535\\-176.6369\\-17\\-19.72482\\-176.1369\\-17\\-19.72482\\-174.6369\\-17\\-19.22482\\-174.1369\\-17\\-19.22482\\-173.1369\\-17\\-18.72482\\-172.6369\\-17\\-18.72482\\-172.1369\\-17\\-18.22482\\-171.6369\\-17\\-18.22482\\-171.1369\\-17\\-17.72482\\-170.6369\\-17\\-17.72482\\-170.1369\\-17\\-12.91535\\-165.3274\\-17\\-12.41535\\-165.3274\\-17\\-11.91535\\-164.8274\\-17\\-11.41535\\-164.8274\\-17\\-10.91535\\-164.3274\\-17\\-10.41535\\-164.3274\\-17\\-9.915353\\-163.8274\\-17\\-9.415353\\-163.8274\\-17\\-8.915353\\-163.3869\\-17\\-7.915353\\-163.3274\\-17\\-7.415353\\-162.8869\\-17\\-5.915353\\-162.8274\\-17\\-5.415353\\-162.3869\\-17\\-3.915353\\-162.3274\\-17\\4.584647\\-162.3274\\-17\\6.084647\\-162.3869\\-17\\6.584647\\-162.8274\\-17\\8.084647\\-162.8869\\-17\\8.584647\\-163.3274\\-17\\9.584647\\-163.3869\\-17\\10.08465\\-163.8274\\-17\\11.08465\\-163.8869\\-17\\12.58465\\-164.8274\\-17\\13.08465\\-164.8869\\-17\\14.08465\\-165.8274\\-17\\14.89411\\-166.1369\\-17\\18.39411\\-169.6369\\-17\\18.39411\\-170.1369\\-17\\19.39411\\-171.1369\\-17\\19.39411\\-171.6369\\-17\\19.89411\\-172.1369\\-17\\19.89411\\-172.6369\\-17\\20.39411\\-173.1369\\-17\\20.39411\\-174.1369\\-17\\20.89411\\-174.6369\\-17\\20.89411\\-176.1369\\-17\\21.33465\\-176.6369\\-17\\21.39411\\-177.6369\\-17\\21.39411\\-182.6369\\-17\\20.89411\\-183.6369\\-17\\20.83465\\-185.6369\\-17\\20.39411\\-186.1369\\-17\\20.39411\\-187.1369\\-17\\19.89411\\-187.6369\\-17\\19.89411\\-188.6369\\-17\\19.39411\\-189.1369\\-17\\19.33465\\-190.1369\\-17\\18.83465\\-191.1369\\-17\\17.89411\\-192.1369\\-17\\17.89411\\-192.6369\\-17\\16.89411\\-193.6369\\-17\\16.89411\\-194.1369\\-17\\10.89411\\-200.1369\\-17\\10.08465\\-200.4464\\-17\\9.584647\\-200.9464\\-17\\9.084647\\-200.9464\\-17\\8.584647\\-201.4464\\-17\\8.084647\\-201.4464\\-17\\7.584647\\-201.9464\\-17\\7.084647\\-201.9464\\-17\\6.584647\\-202.3869\\-17\\5.584647\\-202.4464\\-17\\5.084647\\-202.8869\\-17\\3.084647\\-202.9464\\-17\\2.584647\\-203.3869\\-17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "93"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.915353\\-200.9464\\-15\\-4.915353\\-200.9464\\-15\\-5.415353\\-200.4464\\-15\\-6.415353\\-200.3869\\-15\\-7.415353\\-199.4464\\-15\\-7.915353\\-199.4464\\-15\\-9.415353\\-197.9464\\-15\\-9.915353\\-197.9464\\-15\\-13.22482\\-194.6369\\-15\\-13.22482\\-194.1369\\-15\\-15.22482\\-192.1369\\-15\\-15.22482\\-191.6369\\-15\\-15.72482\\-191.1369\\-15\\-15.72482\\-190.6369\\-15\\-16.22482\\-190.1369\\-15\\-16.22482\\-189.6369\\-15\\-16.72482\\-189.1369\\-15\\-16.72482\\-188.6369\\-15\\-17.22482\\-188.1369\\-15\\-17.22482\\-187.1369\\-15\\-17.72482\\-186.6369\\-15\\-17.72482\\-185.1369\\-15\\-18.22482\\-184.6369\\-15\\-18.22482\\-176.1369\\-15\\-17.72482\\-175.6369\\-15\\-17.72482\\-174.1369\\-15\\-17.22482\\-173.6369\\-15\\-17.22482\\-172.6369\\-15\\-16.22482\\-171.6369\\-15\\-16.22482\\-171.1369\\-15\\-15.72482\\-170.6369\\-15\\-15.72482\\-170.1369\\-15\\-12.41535\\-166.8274\\-15\\-11.91535\\-166.8274\\-15\\-10.91535\\-165.8274\\-15\\-10.41535\\-165.8274\\-15\\-9.915353\\-165.3274\\-15\\-9.415353\\-165.3274\\-15\\-8.915353\\-164.8869\\-15\\-7.915353\\-164.8274\\-15\\-7.415353\\-164.3869\\-15\\-6.415353\\-164.3274\\-15\\-5.915353\\-163.8869\\-15\\-4.415353\\-163.8274\\-15\\-3.915353\\-163.3869\\-15\\-2.915353\\-163.3274\\-15\\3.584647\\-163.3274\\-15\\4.584647\\-163.3869\\-15\\5.084647\\-163.8274\\-15\\6.584647\\-163.8869\\-15\\7.084647\\-164.3274\\-15\\8.084647\\-164.3274\\-15\\8.584647\\-164.8274\\-15\\9.584647\\-164.8274\\-15\\10.08465\\-165.3274\\-15\\11.08465\\-165.3869\\-15\\12.08465\\-165.8869\\-15\\13.58465\\-167.3274\\-15\\14.08465\\-167.3274\\-15\\16.39411\\-169.6369\\-15\\16.39411\\-170.1369\\-15\\17.39411\\-171.1369\\-15\\17.39411\\-171.6369\\-15\\17.89411\\-172.1369\\-15\\17.89411\\-172.6369\\-15\\18.39411\\-173.1369\\-15\\18.39411\\-173.6369\\-15\\18.89411\\-174.1369\\-15\\18.89411\\-175.1369\\-15\\19.39411\\-175.6369\\-15\\19.39411\\-184.6369\\-15\\18.89411\\-185.6369\\-15\\18.83465\\-187.1369\\-15\\18.39411\\-187.6369\\-15\\18.39411\\-188.1369\\-15\\17.89411\\-188.6369\\-15\\17.89411\\-189.6369\\-15\\17.39411\\-190.1369\\-15\\17.39411\\-190.6369\\-15\\16.39411\\-191.6369\\-15\\16.39411\\-192.1369\\-15\\15.39411\\-193.1369\\-15\\15.39411\\-193.6369\\-15\\10.08465\\-198.9464\\-15\\9.584647\\-198.9464\\-15\\8.584647\\-199.9464\\-15\\8.084647\\-199.9464\\-15\\7.584647\\-200.4464\\-15\\7.084647\\-200.4464\\-15\\6.584647\\-200.9464\\-15\\5.584647\\-200.9464\\-15\\4.584647\\-201.4464\\-15\\-2.915353\\-201.4464\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "90"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.915353\\-199.4464\\-13\\-3.415353\\-198.9464\\-13\\-4.415353\\-198.9464\\-13\\-4.915353\\-198.4464\\-13\\-5.415353\\-198.4464\\-13\\-5.915353\\-197.9464\\-13\\-6.415353\\-197.9464\\-13\\-6.915353\\-197.4464\\-13\\-7.415353\\-197.4464\\-13\\-8.915353\\-195.9464\\-13\\-9.415353\\-195.9464\\-13\\-11.22482\\-194.1369\\-13\\-11.22482\\-193.6369\\-13\\-12.72482\\-192.1369\\-13\\-12.72482\\-191.6369\\-13\\-13.72482\\-190.6369\\-13\\-13.72482\\-190.1369\\-13\\-14.22482\\-189.6369\\-13\\-14.22482\\-189.1369\\-13\\-14.72482\\-188.6369\\-13\\-14.72482\\-188.1369\\-13\\-15.22482\\-187.6369\\-13\\-15.22482\\-186.6369\\-13\\-15.72482\\-186.1369\\-13\\-15.72482\\-184.6369\\-13\\-16.22482\\-184.1369\\-13\\-16.22482\\-176.6369\\-13\\-15.72482\\-176.1369\\-13\\-15.72482\\-174.6369\\-13\\-15.22482\\-174.1369\\-13\\-15.22482\\-173.6369\\-13\\-14.72482\\-173.1369\\-13\\-14.72482\\-172.6369\\-13\\-14.22482\\-172.1369\\-13\\-14.22482\\-171.6369\\-13\\-10.41535\\-167.8274\\-13\\-9.915353\\-167.8274\\-13\\-8.915353\\-166.8274\\-13\\-8.415353\\-166.8274\\-13\\-7.915353\\-166.3274\\-13\\-6.915353\\-166.3274\\-13\\-6.415353\\-165.8274\\-13\\-5.415353\\-165.8274\\-13\\-4.915353\\-165.3274\\-13\\-2.915353\\-165.3274\\-13\\-2.415353\\-164.8274\\-13\\3.084647\\-164.8274\\-13\\4.084647\\-165.3274\\-13\\6.084647\\-165.3274\\-13\\6.584647\\-165.8274\\-13\\7.584647\\-165.8274\\-13\\8.084647\\-166.3274\\-13\\8.584647\\-166.3274\\-13\\9.084647\\-166.8274\\-13\\9.584647\\-166.8274\\-13\\10.08465\\-167.3274\\-13\\10.58465\\-167.3274\\-13\\11.08465\\-167.8274\\-13\\11.58465\\-167.8274\\-13\\15.39411\\-171.6369\\-13\\15.39411\\-172.1369\\-13\\15.89411\\-172.6369\\-13\\15.89411\\-173.1369\\-13\\16.39411\\-173.6369\\-13\\16.39411\\-174.1369\\-13\\16.89411\\-174.6369\\-13\\16.89411\\-176.1369\\-13\\17.39411\\-176.6369\\-13\\17.39411\\-184.1369\\-13\\16.89411\\-184.6369\\-13\\16.89411\\-186.1369\\-13\\16.39411\\-186.6369\\-13\\16.39411\\-187.6369\\-13\\15.89411\\-188.1369\\-13\\15.89411\\-189.1369\\-13\\15.39411\\-189.6369\\-13\\15.39411\\-190.1369\\-13\\14.39411\\-191.1369\\-13\\14.39411\\-191.6369\\-13\\13.39411\\-192.6369\\-13\\13.39411\\-193.1369\\-13\\9.584647\\-196.9464\\-13\\9.084647\\-196.9464\\-13\\8.084647\\-197.9464\\-13\\7.584647\\-197.9464\\-13\\7.084647\\-198.4464\\-13\\6.584647\\-198.4464\\-13\\6.084647\\-198.9464\\-13\\5.084647\\-198.9464\\-13\\4.584647\\-199.4464\\-13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "84"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.915353\\-196.9464\\-11\\-2.415353\\-196.4464\\-11\\-3.415353\\-196.4464\\-11\\-3.915353\\-195.9464\\-11\\-4.415353\\-195.9464\\-11\\-4.915353\\-195.4464\\-11\\-5.415353\\-195.4464\\-11\\-5.915353\\-194.9464\\-11\\-6.415353\\-194.9464\\-11\\-10.72482\\-190.6369\\-11\\-10.72482\\-190.1369\\-11\\-11.22482\\-189.6369\\-11\\-11.22482\\-189.1369\\-11\\-11.72482\\-188.6369\\-11\\-11.72482\\-188.1369\\-11\\-12.22482\\-187.6369\\-11\\-12.22482\\-187.1369\\-11\\-12.72482\\-186.6369\\-11\\-12.72482\\-186.1369\\-11\\-13.22482\\-185.6369\\-11\\-13.22482\\-184.1369\\-11\\-13.72482\\-183.6369\\-11\\-13.72482\\-177.1369\\-11\\-13.22482\\-176.6369\\-11\\-13.22482\\-175.6369\\-11\\-12.72482\\-175.1369\\-11\\-12.72482\\-174.6369\\-11\\-12.22482\\-174.1369\\-11\\-12.22482\\-173.6369\\-11\\-10.72482\\-172.1369\\-11\\-10.72482\\-171.6369\\-11\\-9.415353\\-170.3274\\-11\\-8.915353\\-170.3274\\-11\\-7.915353\\-169.3274\\-11\\-7.415353\\-169.3274\\-11\\-6.915353\\-168.8274\\-11\\-6.415353\\-168.8274\\-11\\-5.915353\\-168.3274\\-11\\-5.415353\\-168.3274\\-11\\-4.915353\\-167.8274\\-11\\-4.415353\\-167.8274\\-11\\-3.915353\\-167.3274\\-11\\-1.415353\\-167.3274\\-11\\-0.9153527\\-166.8274\\-11\\2.084647\\-166.8274\\-11\\2.584647\\-167.3274\\-11\\4.584647\\-167.3274\\-11\\5.084647\\-167.8274\\-11\\6.084647\\-167.8274\\-11\\6.584647\\-168.3274\\-11\\7.084647\\-168.3274\\-11\\7.584647\\-168.8274\\-11\\8.084647\\-168.8274\\-11\\8.584647\\-169.3274\\-11\\9.084647\\-169.3274\\-11\\13.39411\\-173.6369\\-11\\13.39411\\-174.1369\\-11\\13.89411\\-174.6369\\-11\\13.89411\\-175.1369\\-11\\14.39411\\-175.6369\\-11\\14.39411\\-176.6369\\-11\\14.89411\\-177.1369\\-11\\14.89411\\-184.1369\\-11\\14.39411\\-184.6369\\-11\\14.39411\\-185.6369\\-11\\13.89411\\-186.1369\\-11\\13.89411\\-187.1369\\-11\\13.39411\\-187.6369\\-11\\13.39411\\-188.1369\\-11\\12.89411\\-188.6369\\-11\\12.89411\\-189.1369\\-11\\12.39411\\-189.6369\\-11\\12.39411\\-190.1369\\-11\\10.89411\\-191.6369\\-11\\10.89411\\-192.1369\\-11\\9.084647\\-193.9464\\-11\\8.584647\\-193.9464\\-11\\7.084647\\-195.4464\\-11\\6.584647\\-195.4464\\-11\\6.084647\\-195.9464\\-11\\5.584647\\-195.9464\\-11\\5.084647\\-196.4464\\-11\\4.084647\\-196.4464\\-11\\3.584647\\-196.9464\\-11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "60"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.915353\\-192.9464\\-9\\-2.415353\\-192.4464\\-9\\-3.415353\\-192.4464\\-9\\-4.415353\\-191.4464\\-9\\-4.915353\\-191.4464\\-9\\-7.724819\\-188.6369\\-9\\-7.724819\\-188.1369\\-9\\-8.724819\\-187.1369\\-9\\-8.724819\\-186.6369\\-9\\-9.224819\\-186.1369\\-9\\-9.224819\\-185.6369\\-9\\-9.724819\\-185.1369\\-9\\-9.724819\\-183.6369\\-9\\-10.22482\\-183.1369\\-9\\-10.22482\\-178.1369\\-9\\-9.724819\\-177.6369\\-9\\-9.724819\\-176.6369\\-9\\-9.224819\\-176.1369\\-9\\-9.224819\\-175.6369\\-9\\-8.724819\\-175.1369\\-9\\-8.724819\\-174.6369\\-9\\-5.915353\\-171.8274\\-9\\-5.415353\\-171.8274\\-9\\-4.915353\\-171.3274\\-9\\-4.415353\\-171.3274\\-9\\-3.915353\\-170.8274\\-9\\-2.915353\\-170.8274\\-9\\-2.415353\\-170.3274\\-9\\-0.4153527\\-170.3274\\-9\\0.0846473\\-169.8274\\-9\\1.084647\\-169.8274\\-9\\1.584647\\-170.3274\\-9\\3.584647\\-170.3274\\-9\\4.084647\\-170.8274\\-9\\5.084647\\-170.8274\\-9\\5.584647\\-171.3274\\-9\\6.084647\\-171.3274\\-9\\6.584647\\-171.8274\\-9\\7.084647\\-171.8274\\-9\\9.894114\\-174.6369\\-9\\9.894114\\-175.1369\\-9\\10.39411\\-175.6369\\-9\\10.39411\\-176.1369\\-9\\10.89411\\-176.6369\\-9\\10.89411\\-177.6369\\-9\\11.39411\\-178.1369\\-9\\11.39411\\-183.6369\\-9\\10.89411\\-184.1369\\-9\\10.89411\\-185.1369\\-9\\10.39411\\-185.6369\\-9\\10.39411\\-186.1369\\-9\\9.894114\\-186.6369\\-9\\9.894114\\-187.1369\\-9\\9.394114\\-187.6369\\-9\\9.394114\\-188.1369\\-9\\5.584647\\-191.9464\\-9\\5.084647\\-191.9464\\-9\\4.584647\\-192.4464\\-9\\4.084647\\-192.4464\\-9\\3.584647\\-192.9464\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "27"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.4153527\\-185.9464\\-7\\-0.9153527\\-185.4464\\-7\\-1.415353\\-185.4464\\-7\\-2.724819\\-184.1369\\-7\\-2.724819\\-183.6369\\-7\\-3.224819\\-183.1369\\-7\\-3.224819\\-182.6369\\-7\\-3.724819\\-182.1369\\-7\\-3.724819\\-179.1369\\-7\\-3.224819\\-178.6369\\-7\\-3.224819\\-178.1369\\-7\\-1.415353\\-176.3274\\-7\\-0.4153527\\-176.3274\\-7\\0.0846473\\-175.8274\\-7\\1.084647\\-175.8274\\-7\\1.584647\\-176.3274\\-7\\2.584647\\-176.3274\\-7\\4.394114\\-178.1369\\-7\\4.394114\\-178.6369\\-7\\4.894114\\-179.1369\\-7\\4.894114\\-182.6369\\-7\\4.394114\\-183.1369\\-7\\4.394114\\-183.6369\\-7\\2.584647\\-185.4464\\-7\\2.084647\\-185.4464\\-7\\1.584647\\-185.9464\\-7"
-                     }
-                  }
-               ]
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "3"
-            }
-         },
-         {
-            "3006,002a" : {
-               "Name" : "ROIDisplayColor",
-               "Type" : "String",
-               "Value" : "0\\255\\0"
-            },
-            "3006,0040" : {
-               "Name" : "ContourSequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "0"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.915353\\-179.8274\\-61\\-6.105886\\-178.6369\\-61\\-6.105886\\-177.6369\\-61\\-4.915353\\-176.4464\\-61\\6.084647\\-176.4464\\-61\\7.275181\\-177.6369\\-61\\7.275181\\-178.6369\\-61\\6.084647\\-179.8274\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "1"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-7.415353\\-186.8274\\-59\\-7.915353\\-186.3274\\-59\\-8.415353\\-186.3274\\-59\\-8.915353\\-185.8274\\-59\\-9.415353\\-185.8274\\-59\\-12.60589\\-182.6369\\-59\\-12.60589\\-182.1369\\-59\\-13.10589\\-181.6369\\-59\\-13.10589\\-180.1369\\-59\\-13.60589\\-179.6369\\-59\\-13.60589\\-177.1369\\-59\\-13.10589\\-176.6369\\-59\\-13.10589\\-175.1369\\-59\\-12.60589\\-174.6369\\-59\\-12.60589\\-174.1369\\-59\\-9.915353\\-171.4464\\-59\\-9.415353\\-171.4464\\-59\\-8.915353\\-170.9464\\-59\\-8.415353\\-170.9464\\-59\\-7.915353\\-170.4464\\-59\\-7.415353\\-170.4464\\-59\\-6.915353\\-169.9464\\-59\\8.084647\\-169.9464\\-59\\8.584647\\-170.4464\\-59\\9.084647\\-170.4464\\-59\\9.584647\\-170.9464\\-59\\10.08465\\-170.9464\\-59\\10.58465\\-171.4464\\-59\\11.08465\\-171.4464\\-59\\13.77518\\-174.1369\\-59\\13.77518\\-174.6369\\-59\\14.27518\\-175.1369\\-59\\14.27518\\-176.1369\\-59\\14.77518\\-176.6369\\-59\\14.77518\\-180.6369\\-59\\14.27518\\-181.1369\\-59\\14.27518\\-181.6369\\-59\\13.77518\\-182.1369\\-59\\13.77518\\-182.6369\\-59\\10.08465\\-186.3274\\-59\\9.084647\\-186.3274\\-59\\8.584647\\-186.8274\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "74"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "2"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.415353\\-190.8274\\-57\\-6.915353\\-190.3274\\-57\\-8.915353\\-190.3274\\-57\\-9.415353\\-189.8274\\-57\\-9.915353\\-189.8274\\-57\\-10.41535\\-189.3274\\-57\\-10.91535\\-189.3274\\-57\\-11.41535\\-188.8274\\-57\\-11.91535\\-188.8274\\-57\\-12.91535\\-187.8274\\-57\\-13.41535\\-187.8274\\-57\\-14.60589\\-186.6369\\-57\\-14.60589\\-186.1369\\-57\\-15.60589\\-185.1369\\-57\\-15.60589\\-184.6369\\-57\\-16.10589\\-184.1369\\-57\\-16.10589\\-183.6369\\-57\\-16.60589\\-183.1369\\-57\\-16.60589\\-182.6369\\-57\\-17.10589\\-182.1369\\-57\\-17.10589\\-175.1369\\-57\\-16.60589\\-174.6369\\-57\\-16.60589\\-173.6369\\-57\\-15.60589\\-172.6369\\-57\\-15.60589\\-172.1369\\-57\\-12.41535\\-168.9464\\-57\\-11.91535\\-168.9464\\-57\\-11.41535\\-168.4464\\-57\\-10.91535\\-168.4464\\-57\\-10.41535\\-167.9464\\-57\\-9.915353\\-167.9464\\-57\\-9.415353\\-167.4464\\-57\\-8.915353\\-167.4464\\-57\\-8.415353\\-166.9464\\-57\\-6.415353\\-166.9464\\-57\\-5.915353\\-166.4464\\-57\\7.084647\\-166.4464\\-57\\7.584647\\-166.9464\\-57\\9.584647\\-166.9464\\-57\\10.08465\\-167.4464\\-57\\10.58465\\-167.4464\\-57\\11.08465\\-167.9464\\-57\\11.58465\\-167.9464\\-57\\12.08465\\-168.4464\\-57\\12.58465\\-168.4464\\-57\\13.08465\\-168.9464\\-57\\13.58465\\-168.9464\\-57\\17.27518\\-172.6369\\-57\\17.27518\\-173.1369\\-57\\17.77518\\-173.6369\\-57\\17.77518\\-174.6369\\-57\\18.27518\\-175.1369\\-57\\18.27518\\-176.6369\\-57\\18.77518\\-177.1369\\-57\\18.77518\\-180.1369\\-57\\18.27518\\-180.6369\\-57\\18.27518\\-182.1369\\-57\\17.77518\\-182.6369\\-57\\17.77518\\-183.6369\\-57\\17.27518\\-184.1369\\-57\\17.27518\\-184.6369\\-57\\16.27518\\-185.6369\\-57\\16.27518\\-186.1369\\-57\\14.58465\\-187.8274\\-57\\14.08465\\-187.8274\\-57\\13.08465\\-188.8274\\-57\\12.58465\\-188.8274\\-57\\12.08465\\-189.3274\\-57\\11.58465\\-189.3274\\-57\\11.08465\\-189.8274\\-57\\10.58465\\-189.8274\\-57\\10.08465\\-190.3274\\-57\\8.084647\\-190.3274\\-57\\7.584647\\-190.8274\\-57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "82"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "3"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-9.415353\\-192.8274\\-55\\-9.915353\\-192.3274\\-55\\-10.91535\\-192.3274\\-55\\-11.41535\\-191.8274\\-55\\-11.91535\\-191.8274\\-55\\-12.41535\\-191.3274\\-55\\-12.91535\\-191.3274\\-55\\-13.41535\\-190.8274\\-55\\-13.91535\\-190.8274\\-55\\-14.91535\\-189.8274\\-55\\-15.41535\\-189.8274\\-55\\-17.10589\\-188.1369\\-55\\-17.10589\\-187.6369\\-55\\-18.10589\\-186.6369\\-55\\-18.10589\\-186.1369\\-55\\-18.60589\\-185.6369\\-55\\-18.60589\\-185.1369\\-55\\-19.10589\\-184.6369\\-55\\-19.10589\\-184.1369\\-55\\-19.60589\\-183.6369\\-55\\-19.60589\\-182.1369\\-55\\-20.10589\\-181.6369\\-55\\-20.10589\\-175.6369\\-55\\-19.60589\\-175.1369\\-55\\-19.60589\\-174.1369\\-55\\-19.10589\\-173.6369\\-55\\-19.10589\\-172.6369\\-55\\-18.60589\\-172.1369\\-55\\-18.60589\\-171.6369\\-55\\-17.60589\\-170.6369\\-55\\-17.60589\\-170.1369\\-55\\-15.41535\\-167.9464\\-55\\-14.91535\\-167.9464\\-55\\-13.41535\\-166.4464\\-55\\-12.91535\\-166.4464\\-55\\-12.41535\\-165.9464\\-55\\-11.41535\\-165.9464\\-55\\-10.91535\\-165.4464\\-55\\-10.41535\\-165.4464\\-55\\-9.915353\\-164.9464\\-55\\-8.415353\\-164.9464\\-55\\-7.915353\\-164.4464\\-55\\9.084647\\-164.4464\\-55\\9.584647\\-164.9464\\-55\\11.08465\\-164.9464\\-55\\11.58465\\-165.4464\\-55\\12.08465\\-165.4464\\-55\\12.58465\\-165.9464\\-55\\13.58465\\-165.9464\\-55\\14.08465\\-166.4464\\-55\\14.58465\\-166.4464\\-55\\15.58465\\-167.4464\\-55\\16.08465\\-167.4464\\-55\\18.77518\\-170.1369\\-55\\18.77518\\-170.6369\\-55\\19.77518\\-171.6369\\-55\\19.77518\\-172.1369\\-55\\20.27518\\-172.6369\\-55\\20.27518\\-173.1369\\-55\\20.77518\\-173.6369\\-55\\20.77518\\-175.1369\\-55\\21.27518\\-175.6369\\-55\\21.27518\\-182.1369\\-55\\20.77518\\-182.6369\\-55\\20.77518\\-183.6369\\-55\\20.27518\\-184.1369\\-55\\20.27518\\-184.6369\\-55\\19.77518\\-185.1369\\-55\\19.77518\\-185.6369\\-55\\19.27518\\-186.1369\\-55\\19.27518\\-186.6369\\-55\\17.77518\\-188.1369\\-55\\17.77518\\-188.6369\\-55\\16.58465\\-189.8274\\-55\\16.08465\\-189.8274\\-55\\15.08465\\-190.8274\\-55\\14.58465\\-190.8274\\-55\\13.58465\\-191.8274\\-55\\12.58465\\-191.8274\\-55\\12.08465\\-192.3274\\-55\\11.08465\\-192.3274\\-55\\10.58465\\-192.8274\\-55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "80"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "4"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-9.915353\\-194.8274\\-53\\-10.41535\\-194.3869\\-53\\-11.91535\\-194.3274\\-53\\-12.41535\\-193.8274\\-53\\-12.91535\\-193.8274\\-53\\-13.41535\\-193.3274\\-53\\-13.91535\\-193.3274\\-53\\-14.41535\\-192.8274\\-53\\-14.91535\\-192.8274\\-53\\-15.91535\\-191.8274\\-53\\-16.41535\\-191.8274\\-53\\-19.10589\\-189.1369\\-53\\-19.10589\\-188.6369\\-53\\-20.10589\\-187.6369\\-53\\-20.10589\\-187.1369\\-53\\-21.10589\\-186.1369\\-53\\-21.10589\\-185.1369\\-53\\-21.60589\\-184.6369\\-53\\-21.60589\\-183.6369\\-53\\-22.10589\\-183.1369\\-53\\-22.10589\\-174.6369\\-53\\-21.60589\\-174.1369\\-53\\-21.60589\\-173.1369\\-53\\-21.10589\\-172.6369\\-53\\-21.10589\\-172.1369\\-53\\-20.60589\\-171.6369\\-53\\-20.60589\\-171.1369\\-53\\-20.10589\\-170.6369\\-53\\-20.10589\\-170.1369\\-53\\-15.41535\\-165.4464\\-53\\-14.91535\\-165.4464\\-53\\-14.41535\\-164.9464\\-53\\-13.91535\\-164.9464\\-53\\-13.41535\\-164.4464\\-53\\-12.91535\\-164.4464\\-53\\-12.41535\\-163.9464\\-53\\-11.41535\\-163.9464\\-53\\-10.91535\\-163.4464\\-53\\-9.415353\\-163.3869\\-53\\-8.915353\\-162.9464\\-53\\-6.915353\\-162.8869\\-53\\8.084647\\-162.8869\\-53\\10.08465\\-162.9464\\-53\\10.58465\\-163.3869\\-53\\12.08465\\-163.4464\\-53\\12.58465\\-163.9464\\-53\\13.58465\\-163.9464\\-53\\14.08465\\-164.4464\\-53\\14.58465\\-164.4464\\-53\\15.08465\\-164.9464\\-53\\15.58465\\-164.9464\\-53\\16.08465\\-165.4464\\-53\\16.58465\\-165.4464\\-53\\21.27518\\-170.1369\\-53\\21.27518\\-170.6369\\-53\\22.27518\\-171.6369\\-53\\22.27518\\-172.6369\\-53\\22.77518\\-173.1369\\-53\\22.77518\\-174.1369\\-53\\23.27518\\-174.6369\\-53\\23.27518\\-183.1369\\-53\\22.77518\\-183.6369\\-53\\22.77518\\-185.1369\\-53\\22.27518\\-185.6369\\-53\\22.27518\\-186.1369\\-53\\21.27518\\-187.1369\\-53\\21.27518\\-187.6369\\-53\\20.27518\\-188.6369\\-53\\20.27518\\-189.1369\\-53\\18.08465\\-191.3274\\-53\\17.58465\\-191.3274\\-53\\16.08465\\-192.8274\\-53\\15.58465\\-192.8274\\-53\\15.08465\\-193.3274\\-53\\14.58465\\-193.3274\\-53\\14.08465\\-193.8274\\-53\\13.58465\\-193.8274\\-53\\13.08465\\-194.3274\\-53\\11.58465\\-194.3274\\-53\\11.08465\\-194.8274\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "92"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "5"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.415353\\-196.8274\\-51\\-8.915353\\-196.3869\\-51\\-10.91535\\-196.3274\\-51\\-11.41535\\-195.8869\\-51\\-12.91535\\-195.8274\\-51\\-13.41535\\-195.3274\\-51\\-13.91535\\-195.3274\\-51\\-14.41535\\-194.8274\\-51\\-14.91535\\-194.8274\\-51\\-15.41535\\-194.3274\\-51\\-15.91535\\-194.3274\\-51\\-17.41535\\-192.8274\\-51\\-17.91535\\-192.8274\\-51\\-20.60589\\-190.1369\\-51\\-20.60589\\-189.6369\\-51\\-22.10589\\-188.1369\\-51\\-22.10589\\-187.6369\\-51\\-22.60589\\-187.1369\\-51\\-22.60589\\-186.6369\\-51\\-23.10589\\-186.1369\\-51\\-23.16535\\-185.1369\\-51\\-23.60589\\-184.6369\\-51\\-23.66535\\-183.1369\\-51\\-24.10589\\-182.6369\\-51\\-24.10589\\-175.1369\\-51\\-23.66535\\-174.6369\\-51\\-23.60589\\-173.1369\\-51\\-23.10589\\-172.6369\\-51\\-23.10589\\-172.1369\\-51\\-22.60589\\-171.6369\\-51\\-22.60589\\-171.1369\\-51\\-22.10589\\-170.6369\\-51\\-22.10589\\-170.1369\\-51\\-21.10589\\-169.1369\\-51\\-21.10589\\-168.6369\\-51\\-17.41535\\-164.9464\\-51\\-16.91535\\-164.9464\\-51\\-16.41535\\-164.4464\\-51\\-15.91535\\-164.3869\\-51\\-14.91535\\-163.4464\\-51\\-13.91535\\-163.3869\\-51\\-13.41535\\-162.9464\\-51\\-12.41535\\-162.8869\\-51\\-11.91535\\-162.4464\\-51\\-10.91535\\-162.3869\\-51\\-10.41535\\-161.9464\\-51\\-8.415353\\-161.8869\\-51\\-7.915353\\-161.4464\\-51\\8.584647\\-161.4464\\-51\\9.084647\\-161.8869\\-51\\11.58465\\-161.9464\\-51\\12.08465\\-162.3869\\-51\\13.08465\\-162.4464\\-51\\13.58465\\-162.8869\\-51\\14.58465\\-162.9464\\-51\\17.58465\\-164.4464\\-51\\18.58465\\-165.3869\\-51\\19.08465\\-165.4464\\-51\\22.27518\\-168.6369\\-51\\22.27518\\-169.1369\\-51\\23.27518\\-170.1369\\-51\\23.27518\\-170.6369\\-51\\23.77518\\-171.1369\\-51\\24.27518\\-172.1369\\-51\\24.27518\\-172.6369\\-51\\24.77518\\-173.1369\\-51\\24.77518\\-174.1369\\-51\\25.27518\\-174.6369\\-51\\25.27518\\-182.6369\\-51\\24.83465\\-183.1369\\-51\\24.77518\\-184.6369\\-51\\24.33465\\-185.1369\\-51\\24.27518\\-186.1369\\-51\\23.77518\\-186.6369\\-51\\23.77518\\-187.1369\\-51\\23.27518\\-187.6369\\-51\\23.27518\\-188.1369\\-51\\20.77518\\-190.6369\\-51\\20.77518\\-191.1369\\-51\\19.58465\\-192.3274\\-51\\19.08465\\-192.3274\\-51\\17.08465\\-194.3274\\-51\\16.58465\\-194.3274\\-51\\16.08465\\-194.8274\\-51\\15.58465\\-194.8274\\-51\\15.08465\\-195.3274\\-51\\14.08465\\-195.3869\\-51\\13.58465\\-195.8274\\-51\\12.08465\\-195.8869\\-51\\11.58465\\-196.3274\\-51\\10.08465\\-196.3869\\-51\\9.584647\\-196.8274\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "88"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "6"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-7.915353\\-198.3274\\-49\\-8.415353\\-197.8869\\-49\\-10.91535\\-197.8274\\-49\\-11.41535\\-197.3869\\-49\\-12.41535\\-197.3274\\-49\\-12.91535\\-196.8869\\-49\\-13.91535\\-196.8274\\-49\\-14.41535\\-196.3869\\-49\\-15.41535\\-196.3274\\-49\\-15.91535\\-195.8274\\-49\\-16.41535\\-195.8274\\-49\\-17.41535\\-194.8274\\-49\\-17.91535\\-194.8274\\-49\\-22.10589\\-190.6369\\-49\\-22.16535\\-190.1369\\-49\\-23.10589\\-189.1369\\-49\\-23.66535\\-187.6369\\-49\\-24.60589\\-186.1369\\-49\\-24.66535\\-185.1369\\-49\\-25.10589\\-184.6369\\-49\\-25.16535\\-183.1369\\-49\\-25.60589\\-182.6369\\-49\\-25.66535\\-177.6369\\-49\\-25.60589\\-174.6369\\-49\\-25.16535\\-174.1369\\-49\\-25.10589\\-173.1369\\-49\\-24.66535\\-172.6369\\-49\\-24.60589\\-171.6369\\-49\\-24.10589\\-170.6369\\-49\\-23.60589\\-170.1369\\-49\\-23.60589\\-169.6369\\-49\\-22.16535\\-168.1369\\-49\\-22.10589\\-167.6369\\-49\\-18.91535\\-164.4464\\-49\\-18.41535\\-164.3869\\-49\\-17.41535\\-163.4464\\-49\\-16.91535\\-163.3869\\-49\\-14.41535\\-161.9464\\-49\\-13.41535\\-161.8869\\-49\\-12.91535\\-161.4464\\-49\\-11.41535\\-161.3869\\-49\\-10.91535\\-160.9464\\-49\\-8.415353\\-160.8869\\-49\\-7.915353\\-160.4464\\-49\\9.084647\\-160.4464\\-49\\9.584647\\-160.8869\\-49\\12.08465\\-160.9464\\-49\\12.58465\\-161.3869\\-49\\14.08465\\-161.4464\\-49\\15.58465\\-162.3869\\-49\\16.58465\\-162.4464\\-49\\17.08465\\-162.9464\\-49\\17.58465\\-162.9464\\-49\\18.58465\\-163.4464\\-49\\20.08465\\-164.8869\\-49\\20.58465\\-164.9464\\-49\\23.27518\\-167.6369\\-49\\23.33465\\-168.1369\\-49\\24.77518\\-169.6369\\-49\\24.77518\\-170.1369\\-49\\25.27518\\-170.6369\\-49\\25.77518\\-171.6369\\-49\\25.83465\\-172.6369\\-49\\26.27518\\-173.1369\\-49\\26.33465\\-174.1369\\-49\\26.77518\\-174.6369\\-49\\26.83465\\-176.6369\\-49\\26.83465\\-180.6369\\-49\\26.77518\\-183.1369\\-49\\26.33465\\-183.6369\\-49\\26.27518\\-184.6369\\-49\\25.83465\\-185.1369\\-49\\25.77518\\-186.1369\\-49\\25.33465\\-186.6369\\-49\\24.27518\\-189.1369\\-49\\23.27518\\-190.1369\\-49\\23.27518\\-190.6369\\-49\\19.58465\\-194.3274\\-49\\19.08465\\-194.3274\\-49\\18.08465\\-195.3274\\-49\\16.58465\\-195.8869\\-49\\15.08465\\-196.8274\\-49\\14.08465\\-196.8869\\-49\\13.58465\\-197.3274\\-49\\12.08465\\-197.3869\\-49\\11.58465\\-197.8274\\-49\\9.084647\\-197.8869\\-49\\8.584647\\-198.3274\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "84"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-9.415353\\-199.3274\\-47\\-9.915353\\-198.8869\\-47\\-11.91535\\-198.8274\\-47\\-12.41535\\-198.3869\\-47\\-13.41535\\-198.3274\\-47\\-13.91535\\-197.8869\\-47\\-14.91535\\-197.8274\\-47\\-15.41535\\-197.3869\\-47\\-17.91535\\-196.3274\\-47\\-18.91535\\-195.3869\\-47\\-19.41535\\-195.3274\\-47\\-22.60589\\-192.1369\\-47\\-22.66535\\-191.6369\\-47\\-24.10589\\-190.1369\\-47\\-24.16535\\-189.6369\\-47\\-25.60589\\-187.1369\\-47\\-25.66535\\-186.1369\\-47\\-26.10589\\-185.6369\\-47\\-26.16535\\-184.6369\\-47\\-26.60589\\-184.1369\\-47\\-26.66535\\-182.1369\\-47\\-27.10589\\-181.6369\\-47\\-27.10589\\-176.1369\\-47\\-26.66535\\-175.6369\\-47\\-26.60589\\-173.6369\\-47\\-26.16535\\-173.1369\\-47\\-26.10589\\-172.1369\\-47\\-24.66535\\-169.6369\\-47\\-24.60589\\-169.1369\\-47\\-23.66535\\-168.1369\\-47\\-23.60589\\-167.6369\\-47\\-21.41535\\-165.3869\\-47\\-19.41535\\-163.4464\\-47\\-15.91535\\-161.8869\\-47\\-14.41535\\-160.9464\\-47\\-12.91535\\-160.8869\\-47\\-12.41535\\-160.4464\\-47\\-10.91535\\-160.3869\\-47\\-10.41535\\-159.9464\\-47\\-9.415353\\-159.8869\\-47\\10.58465\\-159.8869\\-47\\11.58465\\-160.3869\\-47\\13.58465\\-160.4464\\-47\\14.08465\\-160.8869\\-47\\15.08465\\-160.9464\\-47\\15.58465\\-161.3869\\-47\\16.58465\\-161.4464\\-47\\17.08465\\-161.8869\\-47\\19.08465\\-162.8869\\-47\\19.58465\\-162.9464\\-47\\20.58465\\-163.8869\\-47\\21.08465\\-163.9464\\-47\\24.77518\\-167.6369\\-47\\24.83465\\-168.1369\\-47\\25.77518\\-169.1369\\-47\\25.83465\\-169.6369\\-47\\27.27518\\-172.1369\\-47\\27.33465\\-173.1369\\-47\\27.77518\\-173.6369\\-47\\27.83465\\-175.6369\\-47\\28.27518\\-176.1369\\-47\\28.27518\\-182.1369\\-47\\27.83465\\-182.6369\\-47\\27.77518\\-184.1369\\-47\\27.33465\\-184.6369\\-47\\27.27518\\-185.6369\\-47\\26.83465\\-186.1369\\-47\\26.77518\\-187.1369\\-47\\25.33465\\-189.6369\\-47\\25.27518\\-190.1369\\-47\\23.33465\\-192.1369\\-47\\23.27518\\-192.6369\\-47\\21.08465\\-194.8274\\-47\\20.58465\\-194.8869\\-47\\19.08465\\-196.3274\\-47\\18.58465\\-196.3274\\-47\\18.08465\\-196.8274\\-47\\17.08465\\-197.3274\\-47\\16.08465\\-197.3869\\-47\\14.58465\\-198.3274\\-47\\13.08465\\-198.3869\\-47\\12.58465\\-198.8274\\-47\\10.58465\\-198.8869\\-47\\10.08465\\-199.3274\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "97"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-10.41535\\-200.3274\\-45\\-10.91535\\-199.8869\\-45\\-12.41535\\-199.8274\\-45\\-12.91535\\-199.3869\\-45\\-13.91535\\-199.3274\\-45\\-14.41535\\-198.8869\\-45\\-15.41535\\-198.8274\\-45\\-15.91535\\-198.3869\\-45\\-18.41535\\-197.3274\\-45\\-19.41535\\-196.3869\\-45\\-19.91535\\-196.3274\\-45\\-24.10589\\-192.1369\\-45\\-24.16535\\-191.6369\\-45\\-25.10589\\-190.6369\\-45\\-26.60589\\-187.6369\\-45\\-26.66535\\-186.6369\\-45\\-27.10589\\-186.1369\\-45\\-27.16535\\-185.1369\\-45\\-27.60589\\-184.6369\\-45\\-27.66535\\-182.6369\\-45\\-28.10589\\-182.1369\\-45\\-28.10589\\-175.6369\\-45\\-27.66535\\-175.1369\\-45\\-27.60589\\-173.6369\\-45\\-27.16535\\-173.1369\\-45\\-27.10589\\-172.1369\\-45\\-25.66535\\-169.6369\\-45\\-25.60589\\-169.1369\\-45\\-24.66535\\-167.6369\\-45\\-24.60589\\-167.1369\\-45\\-21.41535\\-163.9464\\-45\\-20.91535\\-163.8869\\-45\\-19.91535\\-162.9464\\-45\\-19.41535\\-162.8869\\-45\\-18.41535\\-161.9464\\-45\\-16.91535\\-161.3869\\-45\\-16.41535\\-160.9464\\-45\\-15.41535\\-160.8869\\-45\\-14.91535\\-160.4464\\-45\\-13.91535\\-160.3869\\-45\\-13.41535\\-159.9464\\-45\\-11.91535\\-159.8869\\-45\\-11.41535\\-159.4464\\-45\\-10.41535\\-159.3869\\-45\\-6.915353\\-159.3869\\-45\\-6.415353\\-158.9464\\-45\\6.584647\\-158.9464\\-45\\7.084647\\-159.3869\\-45\\11.08465\\-159.3869\\-45\\12.08465\\-159.4464\\-45\\12.58465\\-159.8869\\-45\\14.08465\\-159.9464\\-45\\14.58465\\-160.3869\\-45\\15.58465\\-160.4464\\-45\\16.08465\\-160.8869\\-45\\17.08465\\-160.9464\\-45\\17.58465\\-161.3869\\-45\\18.08465\\-161.3869\\-45\\18.58465\\-161.8869\\-45\\19.08465\\-161.8869\\-45\\19.58465\\-162.3869\\-45\\21.08465\\-162.9464\\-45\\22.58465\\-164.3869\\-45\\23.08465\\-164.4464\\-45\\25.27518\\-166.6369\\-45\\25.33465\\-167.1369\\-45\\26.27518\\-168.1369\\-45\\26.83465\\-169.6369\\-45\\28.27518\\-172.1369\\-45\\28.33465\\-173.1369\\-45\\28.77518\\-173.6369\\-45\\28.83465\\-175.1369\\-45\\29.27518\\-175.6369\\-45\\29.27518\\-182.6369\\-45\\28.83465\\-183.1369\\-45\\28.77518\\-184.6369\\-45\\28.33465\\-185.1369\\-45\\28.27518\\-186.1369\\-45\\27.83465\\-186.6369\\-45\\27.77518\\-187.6369\\-45\\26.83465\\-189.1369\\-45\\26.27518\\-190.6369\\-45\\24.83465\\-192.1369\\-45\\24.77518\\-192.6369\\-45\\21.58465\\-195.8274\\-45\\21.08465\\-195.8869\\-45\\19.58465\\-197.3274\\-45\\17.08465\\-198.3869\\-45\\16.58465\\-198.8274\\-45\\15.58465\\-198.8869\\-45\\15.08465\\-199.3274\\-45\\13.58465\\-199.3869\\-45\\13.08465\\-199.8274\\-45\\11.08465\\-199.8869\\-45\\10.58465\\-200.3274\\-45\\8.084647\\-200.3869\\-45\\-7.915353\\-200.3869\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "102"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-10.41535\\-201.3274\\-43\\-10.91535\\-200.8869\\-43\\-12.41535\\-200.8274\\-43\\-12.91535\\-200.3869\\-43\\-14.41535\\-200.3274\\-43\\-15.91535\\-199.3869\\-43\\-16.91535\\-199.3274\\-43\\-17.91535\\-198.8274\\-43\\-18.91535\\-197.8869\\-43\\-19.41535\\-197.8274\\-43\\-20.41535\\-196.8869\\-43\\-20.91535\\-196.8274\\-43\\-24.10589\\-193.6369\\-43\\-24.16535\\-193.1369\\-43\\-25.10589\\-192.1369\\-43\\-25.16535\\-191.6369\\-43\\-26.10589\\-190.6369\\-43\\-26.66535\\-189.1369\\-43\\-27.10589\\-188.6369\\-43\\-27.16535\\-187.6369\\-43\\-27.60589\\-187.1369\\-43\\-27.66535\\-186.1369\\-43\\-28.10589\\-185.6369\\-43\\-28.16535\\-184.6369\\-43\\-28.60589\\-184.1369\\-43\\-28.66535\\-182.1369\\-43\\-29.10589\\-181.6369\\-43\\-29.10589\\-176.6369\\-43\\-28.66535\\-176.1369\\-43\\-28.60589\\-173.6369\\-43\\-28.16535\\-173.1369\\-43\\-28.10589\\-172.1369\\-43\\-26.66535\\-169.6369\\-43\\-26.10589\\-168.1369\\-43\\-25.16535\\-167.1369\\-43\\-25.10589\\-166.6369\\-43\\-21.91535\\-163.4464\\-43\\-21.41535\\-163.3869\\-43\\-20.41535\\-162.4464\\-43\\-19.91535\\-162.3869\\-43\\-19.41535\\-161.8869\\-43\\-18.91535\\-161.8869\\-43\\-17.91535\\-160.9464\\-43\\-16.91535\\-160.8869\\-43\\-16.41535\\-160.3869\\-43\\-15.91535\\-160.3869\\-43\\-15.41535\\-159.9464\\-43\\-13.91535\\-159.8869\\-43\\-13.41535\\-159.4464\\-43\\-11.41535\\-159.3869\\-43\\-10.41535\\-158.8869\\-43\\11.08465\\-158.8869\\-43\\12.08465\\-159.3869\\-43\\14.08465\\-159.4464\\-43\\14.58465\\-159.8869\\-43\\16.08465\\-159.9464\\-43\\16.58465\\-160.3869\\-43\\17.58465\\-160.4464\\-43\\20.08465\\-161.8869\\-43\\20.58465\\-161.9464\\-43\\21.58465\\-162.8869\\-43\\22.08465\\-162.9464\\-43\\23.08465\\-163.8869\\-43\\23.58465\\-163.9464\\-43\\26.27518\\-166.6369\\-43\\26.33465\\-167.1369\\-43\\27.27518\\-168.1369\\-43\\27.83465\\-169.6369\\-43\\29.27518\\-172.1369\\-43\\29.33465\\-173.1369\\-43\\29.77518\\-173.6369\\-43\\29.83465\\-176.1369\\-43\\30.27518\\-176.6369\\-43\\30.27518\\-181.6369\\-43\\29.83465\\-182.1369\\-43\\29.77518\\-184.1369\\-43\\29.33465\\-184.6369\\-43\\29.27518\\-185.6369\\-43\\28.83465\\-186.1369\\-43\\28.77518\\-187.1369\\-43\\28.33465\\-187.6369\\-43\\28.27518\\-188.6369\\-43\\27.27518\\-190.6369\\-43\\26.33465\\-191.6369\\-43\\26.27518\\-192.1369\\-43\\24.83465\\-193.6369\\-43\\24.77518\\-194.1369\\-43\\22.58465\\-196.3274\\-43\\22.08465\\-196.3869\\-43\\20.58465\\-197.8274\\-43\\19.08465\\-198.3869\\-43\\18.58465\\-198.8274\\-43\\17.08465\\-199.3869\\-43\\16.58465\\-199.8274\\-43\\15.58465\\-199.8869\\-43\\15.08465\\-200.3274\\-43\\13.58465\\-200.3869\\-43\\13.08465\\-200.8274\\-43\\11.08465\\-200.8869\\-43\\10.58465\\-201.3274\\-43\\8.084647\\-201.3869\\-43\\-8.415353\\-201.3869\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "109"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-9.915353\\-202.3274\\-41\\-10.41535\\-201.8869\\-41\\-12.41535\\-201.8274\\-41\\-12.91535\\-201.3869\\-41\\-13.91535\\-201.3274\\-41\\-14.41535\\-200.8869\\-41\\-15.41535\\-200.8274\\-41\\-16.91535\\-199.8869\\-41\\-19.41535\\-198.8274\\-41\\-20.91535\\-197.3869\\-41\\-21.41535\\-197.3274\\-41\\-24.60589\\-194.1369\\-41\\-24.66535\\-193.6369\\-41\\-25.60589\\-192.6369\\-41\\-25.66535\\-192.1369\\-41\\-26.60589\\-191.1369\\-41\\-27.16535\\-189.6369\\-41\\-28.10589\\-188.1369\\-41\\-28.16535\\-187.1369\\-41\\-28.60589\\-186.6369\\-41\\-28.66535\\-185.6369\\-41\\-29.10589\\-185.1369\\-41\\-29.16535\\-183.1369\\-41\\-29.60589\\-182.6369\\-41\\-29.66535\\-181.6369\\-41\\-29.66535\\-176.6369\\-41\\-29.60589\\-175.1369\\-41\\-29.16535\\-174.6369\\-41\\-29.10589\\-173.1369\\-41\\-28.66535\\-172.6369\\-41\\-28.60589\\-171.6369\\-41\\-27.66535\\-170.1369\\-41\\-27.66535\\-169.6369\\-41\\-27.16535\\-169.1369\\-41\\-27.10589\\-168.6369\\-41\\-26.16535\\-167.6369\\-41\\-26.10589\\-167.1369\\-41\\-25.16535\\-166.1369\\-41\\-25.10589\\-165.6369\\-41\\-23.41535\\-163.9464\\-41\\-22.91535\\-163.8869\\-41\\-21.41535\\-162.4464\\-41\\-20.91535\\-162.3869\\-41\\-20.41535\\-161.8869\\-41\\-19.91535\\-161.8869\\-41\\-18.91535\\-160.9464\\-41\\-17.91535\\-160.4464\\-41\\-16.91535\\-160.3869\\-41\\-16.41535\\-159.8869\\-41\\-15.41535\\-159.8869\\-41\\-14.91535\\-159.3869\\-41\\-13.41535\\-159.3869\\-41\\-12.91535\\-158.9464\\-41\\-9.415353\\-158.8869\\-41\\-8.915353\\-158.4464\\-41\\-7.915353\\-158.3869\\-41\\8.584647\\-158.3869\\-41\\9.584647\\-158.4464\\-41\\10.08465\\-158.8869\\-41\\13.08465\\-158.9464\\-41\\13.58465\\-159.3869\\-41\\15.58465\\-159.3869\\-41\\16.08465\\-159.8869\\-41\\17.08465\\-159.8869\\-41\\17.58465\\-160.3869\\-41\\18.58465\\-160.4464\\-41\\21.58465\\-161.9464\\-41\\22.58465\\-162.8869\\-41\\23.58465\\-163.3869\\-41\\26.83465\\-166.6369\\-41\\27.33465\\-167.6369\\-41\\28.27518\\-168.6369\\-41\\28.83465\\-170.1369\\-41\\29.77518\\-171.6369\\-41\\29.83465\\-172.6369\\-41\\30.27518\\-173.1369\\-41\\30.33465\\-174.6369\\-41\\30.77518\\-175.1369\\-41\\30.83465\\-176.1369\\-41\\30.83465\\-181.6369\\-41\\30.77518\\-182.6369\\-41\\30.33465\\-183.1369\\-41\\30.27518\\-185.1369\\-41\\29.83465\\-185.6369\\-41\\29.77518\\-186.6369\\-41\\29.33465\\-187.1369\\-41\\29.27518\\-188.1369\\-41\\28.33465\\-189.6369\\-41\\27.77518\\-191.1369\\-41\\26.83465\\-192.1369\\-41\\26.77518\\-192.6369\\-41\\25.83465\\-193.6369\\-41\\25.77518\\-194.1369\\-41\\23.08465\\-196.8274\\-41\\22.58465\\-196.8869\\-41\\21.08465\\-198.3274\\-41\\20.58465\\-198.3869\\-41\\19.58465\\-199.3274\\-41\\17.58465\\-200.3274\\-41\\16.58465\\-200.3869\\-41\\16.08465\\-200.8274\\-41\\15.08465\\-200.8869\\-41\\14.58465\\-201.3274\\-41\\13.58465\\-201.3869\\-41\\13.08465\\-201.8274\\-41\\10.58465\\-201.8869\\-41\\10.08465\\-202.3274\\-41\\8.084647\\-202.3869\\-41\\-7.415353\\-202.3869\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "135"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.415353\\-203.3274\\-39\\-8.915353\\-202.8869\\-39\\-11.41535\\-202.8274\\-39\\-11.91535\\-202.3869\\-39\\-13.41535\\-202.3274\\-39\\-13.91535\\-201.8869\\-39\\-14.91535\\-201.8274\\-39\\-16.41535\\-200.8869\\-39\\-16.91535\\-200.8869\\-39\\-17.41535\\-200.3869\\-39\\-17.91535\\-200.3869\\-39\\-18.41535\\-199.8869\\-39\\-18.91535\\-199.8274\\-39\\-19.91535\\-198.8869\\-39\\-20.41535\\-198.8274\\-39\\-21.91535\\-197.3869\\-39\\-22.41535\\-197.3274\\-39\\-24.10589\\-195.6369\\-39\\-24.16535\\-195.1369\\-39\\-25.60589\\-193.6369\\-39\\-25.66535\\-193.1369\\-39\\-26.60589\\-192.1369\\-39\\-26.66535\\-191.6369\\-39\\-27.16535\\-191.1369\\-39\\-27.16535\\-190.6369\\-39\\-27.66535\\-190.1369\\-39\\-27.66535\\-189.6369\\-39\\-28.16535\\-189.1369\\-39\\-28.16535\\-188.6369\\-39\\-28.60589\\-188.1369\\-39\\-28.66535\\-187.1369\\-39\\-29.16535\\-186.6369\\-39\\-29.16535\\-185.6369\\-39\\-29.60589\\-185.1369\\-39\\-29.66535\\-183.1369\\-39\\-30.10589\\-182.6369\\-39\\-30.16535\\-181.6369\\-39\\-30.16535\\-176.6369\\-39\\-30.10589\\-175.6369\\-39\\-29.66535\\-175.1369\\-39\\-29.60589\\-173.1369\\-39\\-29.16535\\-172.6369\\-39\\-29.10589\\-171.6369\\-39\\-28.66535\\-171.1369\\-39\\-28.66535\\-170.6369\\-39\\-28.16535\\-170.1369\\-39\\-28.10589\\-169.1369\\-39\\-27.16535\\-168.1369\\-39\\-27.10589\\-167.6369\\-39\\-26.16535\\-166.6369\\-39\\-26.10589\\-166.1369\\-39\\-22.91535\\-162.9464\\-39\\-22.41535\\-162.8869\\-39\\-21.41535\\-161.9464\\-39\\-20.91535\\-161.8869\\-39\\-20.41535\\-161.3869\\-39\\-19.91535\\-161.3869\\-39\\-19.41535\\-160.8869\\-39\\-18.91535\\-160.8869\\-39\\-18.41535\\-160.3869\\-39\\-17.91535\\-160.3869\\-39\\-17.41535\\-159.8869\\-39\\-16.41535\\-159.8869\\-39\\-15.91535\\-159.3869\\-39\\-14.41535\\-159.3869\\-39\\-13.91535\\-158.8869\\-39\\-11.41535\\-158.8869\\-39\\-10.41535\\-158.3869\\-39\\10.58465\\-158.3869\\-39\\11.58465\\-158.8869\\-39\\14.08465\\-158.8869\\-39\\14.58465\\-159.3869\\-39\\16.58465\\-159.4464\\-39\\17.08465\\-159.8869\\-39\\18.08465\\-159.8869\\-39\\18.58465\\-160.3869\\-39\\19.08465\\-160.3869\\-39\\19.58465\\-160.8869\\-39\\20.08465\\-160.8869\\-39\\20.58465\\-161.3869\\-39\\21.08465\\-161.3869\\-39\\21.58465\\-161.8869\\-39\\22.08465\\-161.8869\\-39\\22.58465\\-162.3869\\-39\\23.08465\\-162.4464\\-39\\24.58465\\-163.8869\\-39\\25.08465\\-163.9464\\-39\\26.77518\\-165.6369\\-39\\26.83465\\-166.1369\\-39\\28.27518\\-167.6369\\-39\\28.33465\\-168.1369\\-39\\28.83465\\-168.6369\\-39\\28.83465\\-169.1369\\-39\\29.33465\\-169.6369\\-39\\29.33465\\-170.1369\\-39\\29.83465\\-170.6369\\-39\\29.83465\\-171.1369\\-39\\30.27518\\-171.6369\\-39\\30.33465\\-172.6369\\-39\\30.77518\\-173.1369\\-39\\30.83465\\-175.1369\\-39\\31.33465\\-176.1369\\-39\\31.33465\\-181.6369\\-39\\31.27518\\-182.6369\\-39\\30.83465\\-183.1369\\-39\\30.77518\\-185.1369\\-39\\30.33465\\-185.6369\\-39\\30.33465\\-186.6369\\-39\\29.83465\\-187.1369\\-39\\29.77518\\-188.1369\\-39\\28.83465\\-189.6369\\-39\\28.83465\\-190.1369\\-39\\28.33465\\-190.6369\\-39\\28.33465\\-191.1369\\-39\\27.83465\\-191.6369\\-39\\27.77518\\-192.1369\\-39\\26.83465\\-193.1369\\-39\\26.77518\\-193.6369\\-39\\24.83465\\-195.6369\\-39\\24.77518\\-196.1369\\-39\\24.08465\\-196.8274\\-39\\23.58465\\-196.8869\\-39\\21.58465\\-198.8274\\-39\\21.08465\\-198.8869\\-39\\20.08465\\-199.8274\\-39\\17.58465\\-200.8869\\-39\\17.08465\\-201.3274\\-39\\16.08465\\-201.3869\\-39\\15.58465\\-201.8274\\-39\\14.58465\\-201.8869\\-39\\14.08465\\-202.3274\\-39\\12.58465\\-202.3869\\-39\\12.08465\\-202.8274\\-39\\9.584647\\-202.8869\\-39\\9.084647\\-203.3274\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "134"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-9.915353\\-203.8274\\-37\\-10.41535\\-203.3869\\-37\\-11.91535\\-203.3274\\-37\\-12.41535\\-202.8869\\-37\\-13.91535\\-202.8274\\-37\\-14.41535\\-202.3869\\-37\\-15.41535\\-202.3274\\-37\\-17.91535\\-200.8869\\-37\\-18.41535\\-200.8274\\-37\\-19.41535\\-199.8869\\-37\\-19.91535\\-199.8274\\-37\\-21.41535\\-198.3869\\-37\\-21.91535\\-198.3274\\-37\\-24.10589\\-196.1369\\-37\\-24.16535\\-195.6369\\-37\\-26.10589\\-193.6369\\-37\\-26.16535\\-193.1369\\-37\\-27.10589\\-192.1369\\-37\\-27.66535\\-190.6369\\-37\\-28.16535\\-190.1369\\-37\\-28.16535\\-189.6369\\-37\\-28.66535\\-189.1369\\-37\\-28.66535\\-188.1369\\-37\\-29.16535\\-187.6369\\-37\\-29.16535\\-187.1369\\-37\\-29.60589\\-186.6369\\-37\\-29.66535\\-185.1369\\-37\\-30.10589\\-184.6369\\-37\\-30.16535\\-182.1369\\-37\\-30.60589\\-181.6369\\-37\\-30.66535\\-180.6369\\-37\\-30.66535\\-177.1369\\-37\\-30.60589\\-176.1369\\-37\\-30.16535\\-175.6369\\-37\\-30.10589\\-173.6369\\-37\\-29.66535\\-173.1369\\-37\\-29.66535\\-172.1369\\-37\\-29.16535\\-171.6369\\-37\\-29.10589\\-170.6369\\-37\\-28.66535\\-170.1369\\-37\\-28.66535\\-169.6369\\-37\\-28.16535\\-169.1369\\-37\\-28.16535\\-168.6369\\-37\\-27.66535\\-168.1369\\-37\\-27.60589\\-167.6369\\-37\\-26.16535\\-166.1369\\-37\\-26.10589\\-165.6369\\-37\\-23.91535\\-163.4464\\-37\\-23.41535\\-163.3869\\-37\\-22.41535\\-162.3869\\-37\\-21.91535\\-162.3869\\-37\\-20.91535\\-161.4464\\-37\\-20.41535\\-161.3869\\-37\\-19.91535\\-160.8869\\-37\\-19.41535\\-160.8869\\-37\\-18.91535\\-160.3869\\-37\\-18.41535\\-160.3869\\-37\\-17.91535\\-159.9464\\-37\\-16.91535\\-159.8869\\-37\\-16.41535\\-159.3869\\-37\\-14.91535\\-159.3869\\-37\\-14.41535\\-158.8869\\-37\\-12.41535\\-158.8869\\-37\\-11.41535\\-158.3869\\-37\\-7.915353\\-158.3869\\-37\\-7.415353\\-157.8869\\-37\\7.584647\\-157.8869\\-37\\8.084647\\-158.3869\\-37\\11.58465\\-158.3869\\-37\\12.58465\\-158.8869\\-37\\14.58465\\-158.8869\\-37\\15.08465\\-159.3869\\-37\\16.58465\\-159.3869\\-37\\17.08465\\-159.8869\\-37\\18.58465\\-159.8869\\-37\\19.08465\\-160.3869\\-37\\19.58465\\-160.3869\\-37\\20.08465\\-160.8869\\-37\\20.58465\\-160.8869\\-37\\21.08465\\-161.3869\\-37\\21.58465\\-161.3869\\-37\\22.08465\\-161.8869\\-37\\22.58465\\-161.8869\\-37\\23.58465\\-162.8869\\-37\\24.08465\\-162.8869\\-37\\28.33465\\-167.1369\\-37\\28.33465\\-167.6369\\-37\\29.33465\\-168.6369\\-37\\29.33465\\-169.1369\\-37\\29.83465\\-169.6369\\-37\\29.83465\\-170.1369\\-37\\30.27518\\-170.6369\\-37\\30.33465\\-171.6369\\-37\\30.77518\\-172.1369\\-37\\30.83465\\-173.6369\\-37\\31.33465\\-174.1369\\-37\\31.33465\\-175.6369\\-37\\31.83465\\-176.6369\\-37\\31.83465\\-180.6369\\-37\\31.77518\\-181.6369\\-37\\31.33465\\-182.1369\\-37\\31.27518\\-184.6369\\-37\\30.83465\\-185.1369\\-37\\30.77518\\-186.6369\\-37\\30.33465\\-187.1369\\-37\\30.33465\\-187.6369\\-37\\29.83465\\-188.1369\\-37\\29.77518\\-189.1369\\-37\\29.33465\\-189.6369\\-37\\29.33465\\-190.1369\\-37\\28.83465\\-190.6369\\-37\\28.83465\\-191.1369\\-37\\28.33465\\-191.6369\\-37\\28.27518\\-192.1369\\-37\\27.33465\\-193.1369\\-37\\27.27518\\-193.6369\\-37\\25.33465\\-195.6369\\-37\\25.27518\\-196.1369\\-37\\23.08465\\-198.3274\\-37\\22.58465\\-198.3869\\-37\\21.08465\\-199.8274\\-37\\19.58465\\-200.3869\\-37\\18.58465\\-201.3274\\-37\\17.58465\\-201.8274\\-37\\16.58465\\-201.8869\\-37\\16.08465\\-202.3274\\-37\\15.08465\\-202.3869\\-37\\14.58465\\-202.8274\\-37\\13.58465\\-202.8869\\-37\\13.08465\\-203.3274\\-37\\11.58465\\-203.3869\\-37\\11.08465\\-203.8274\\-37\\9.584647\\-203.8869\\-37\\-8.915353\\-203.8869\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "128"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-7.415353\\-204.8274\\-35\\-7.915353\\-204.3869\\-35\\-10.41535\\-204.3274\\-35\\-10.91535\\-203.8869\\-35\\-12.41535\\-203.8274\\-35\\-12.91535\\-203.3869\\-35\\-13.91535\\-203.3274\\-35\\-14.41535\\-202.8869\\-35\\-15.41535\\-202.8274\\-35\\-16.91535\\-201.8869\\-35\\-18.41535\\-201.3274\\-35\\-19.41535\\-200.3869\\-35\\-20.41535\\-199.8869\\-35\\-25.66535\\-194.6369\\-35\\-26.16535\\-193.6369\\-35\\-27.10589\\-192.6369\\-35\\-27.16535\\-192.1369\\-35\\-27.66535\\-191.6369\\-35\\-27.66535\\-191.1369\\-35\\-28.16535\\-190.6369\\-35\\-28.16535\\-190.1369\\-35\\-28.66535\\-189.6369\\-35\\-28.66535\\-188.6369\\-35\\-29.16535\\-188.1369\\-35\\-29.16535\\-187.6369\\-35\\-29.66535\\-187.1369\\-35\\-29.66535\\-185.6369\\-35\\-30.16535\\-185.1369\\-35\\-30.16535\\-183.6369\\-35\\-30.66535\\-182.6369\\-35\\-30.66535\\-175.1369\\-35\\-30.16535\\-174.1369\\-35\\-30.16535\\-173.1369\\-35\\-29.66535\\-172.6369\\-35\\-29.66535\\-171.6369\\-35\\-29.16535\\-171.1369\\-35\\-29.16535\\-170.1369\\-35\\-28.66535\\-169.6369\\-35\\-28.66535\\-169.1369\\-35\\-28.16535\\-168.6369\\-35\\-28.16535\\-168.1369\\-35\\-27.16535\\-167.1369\\-35\\-26.66535\\-166.1369\\-35\\-23.41535\\-162.8869\\-35\\-22.91535\\-162.8869\\-35\\-21.91535\\-161.8869\\-35\\-21.41535\\-161.8869\\-35\\-20.91535\\-161.3869\\-35\\-20.41535\\-161.3869\\-35\\-19.91535\\-160.8869\\-35\\-19.41535\\-160.8869\\-35\\-18.91535\\-160.3869\\-35\\-18.41535\\-160.3869\\-35\\-17.91535\\-159.8869\\-35\\-16.91535\\-159.8869\\-35\\-16.41535\\-159.3869\\-35\\-14.91535\\-159.3869\\-35\\-14.41535\\-158.8869\\-35\\-12.41535\\-158.8869\\-35\\-11.91535\\-158.3869\\-35\\-8.415353\\-158.3869\\-35\\-7.915353\\-157.8869\\-35\\8.084647\\-157.8869\\-35\\8.584647\\-158.3869\\-35\\12.08465\\-158.3869\\-35\\12.58465\\-158.8869\\-35\\14.58465\\-158.8869\\-35\\15.08465\\-159.3869\\-35\\16.58465\\-159.3869\\-35\\17.08465\\-159.8869\\-35\\18.58465\\-159.8869\\-35\\19.08465\\-160.3869\\-35\\19.58465\\-160.3869\\-35\\20.08465\\-160.8869\\-35\\20.58465\\-160.8869\\-35\\21.08465\\-161.3869\\-35\\21.58465\\-161.3869\\-35\\22.08465\\-161.8869\\-35\\22.58465\\-161.8869\\-35\\23.08465\\-162.3869\\-35\\23.58465\\-162.3869\\-35\\25.08465\\-163.8869\\-35\\25.58465\\-163.8869\\-35\\27.77518\\-166.1369\\-35\\27.83465\\-166.6369\\-35\\28.83465\\-167.6369\\-35\\28.83465\\-168.1369\\-35\\29.83465\\-169.1369\\-35\\29.83465\\-169.6369\\-35\\30.27518\\-170.1369\\-35\\30.33465\\-171.1369\\-35\\30.83465\\-171.6369\\-35\\30.83465\\-172.6369\\-35\\31.33465\\-173.1369\\-35\\31.33465\\-174.1369\\-35\\31.83465\\-175.1369\\-35\\31.83465\\-182.6369\\-35\\31.33465\\-183.6369\\-35\\31.33465\\-185.1369\\-35\\30.83465\\-185.6369\\-35\\30.83465\\-187.1369\\-35\\30.33465\\-187.6369\\-35\\30.27518\\-188.6369\\-35\\29.83465\\-189.1369\\-35\\29.83465\\-189.6369\\-35\\29.33465\\-190.1369\\-35\\29.33465\\-190.6369\\-35\\28.83465\\-191.1369\\-35\\28.83465\\-191.6369\\-35\\28.33465\\-192.1369\\-35\\28.27518\\-192.6369\\-35\\27.33465\\-193.6369\\-35\\26.83465\\-194.6369\\-35\\21.58465\\-199.8869\\-35\\20.58465\\-200.3869\\-35\\20.08465\\-200.8869\\-35\\19.58465\\-200.8869\\-35\\18.58465\\-201.8274\\-35\\17.08465\\-202.3869\\-35\\16.58465\\-202.8274\\-35\\15.58465\\-202.8869\\-35\\15.08465\\-203.3274\\-35\\14.08465\\-203.3869\\-35\\13.58465\\-203.8274\\-35\\12.08465\\-203.8869\\-35\\11.58465\\-204.3274\\-35\\9.084647\\-204.3869\\-35\\8.584647\\-204.8274\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "151"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-7.415353\\-205.3274\\-33\\-7.915353\\-204.8869\\-33\\-10.41535\\-204.8274\\-33\\-10.91535\\-204.3869\\-33\\-12.41535\\-204.3274\\-33\\-12.91535\\-203.8869\\-33\\-13.91535\\-203.8274\\-33\\-14.41535\\-203.3869\\-33\\-14.91535\\-203.3869\\-33\\-15.41535\\-202.8869\\-33\\-15.91535\\-202.8869\\-33\\-16.41535\\-202.3869\\-33\\-16.91535\\-202.3869\\-33\\-17.41535\\-201.8869\\-33\\-17.91535\\-201.8869\\-33\\-18.41535\\-201.3869\\-33\\-18.91535\\-201.3274\\-33\\-20.91535\\-199.3869\\-33\\-21.41535\\-199.3869\\-33\\-24.10589\\-196.6369\\-33\\-24.16535\\-196.1369\\-33\\-26.16535\\-194.1369\\-33\\-26.16535\\-193.6369\\-33\\-27.16535\\-192.6369\\-33\\-27.16535\\-192.1369\\-33\\-27.66535\\-191.6369\\-33\\-27.66535\\-191.1369\\-33\\-28.16535\\-190.6369\\-33\\-28.16535\\-190.1369\\-33\\-28.66535\\-189.6369\\-33\\-28.66535\\-189.1369\\-33\\-29.16535\\-188.6369\\-33\\-29.16535\\-187.6369\\-33\\-29.66535\\-187.1369\\-33\\-29.66535\\-185.6369\\-33\\-30.16535\\-185.1369\\-33\\-30.16535\\-183.6369\\-33\\-30.66535\\-183.1369\\-33\\-30.66535\\-179.6369\\-33\\-31.16535\\-179.1369\\-33\\-31.16535\\-178.6369\\-33\\-30.66535\\-178.1369\\-33\\-30.66535\\-174.6369\\-33\\-30.16535\\-174.1369\\-33\\-30.16535\\-173.1369\\-33\\-29.66535\\-172.6369\\-33\\-29.66535\\-171.6369\\-33\\-29.16535\\-171.1369\\-33\\-29.16535\\-170.1369\\-33\\-28.66535\\-169.6369\\-33\\-28.66535\\-169.1369\\-33\\-28.16535\\-168.6369\\-33\\-28.16535\\-168.1369\\-33\\-27.16535\\-167.1369\\-33\\-27.16535\\-166.6369\\-33\\-23.41535\\-162.8869\\-33\\-22.91535\\-162.8869\\-33\\-21.91535\\-161.8869\\-33\\-21.41535\\-161.8869\\-33\\-20.91535\\-161.3869\\-33\\-20.41535\\-161.3869\\-33\\-19.91535\\-160.8869\\-33\\-19.41535\\-160.8869\\-33\\-18.91535\\-160.3869\\-33\\-18.41535\\-160.3869\\-33\\-17.91535\\-159.8869\\-33\\-16.91535\\-159.8869\\-33\\-16.41535\\-159.3869\\-33\\-14.91535\\-159.3869\\-33\\-14.41535\\-158.8869\\-33\\-11.91535\\-158.8274\\-33\\-11.41535\\-158.3869\\-33\\-7.415353\\-158.3869\\-33\\-6.415353\\-157.8869\\-33\\5.084647\\-157.8869\\-33\\5.584647\\-158.3274\\-33\\6.584647\\-158.3869\\-33\\11.58465\\-158.3869\\-33\\12.08465\\-158.8869\\-33\\14.58465\\-158.8869\\-33\\15.08465\\-159.3869\\-33\\16.58465\\-159.3869\\-33\\17.08465\\-159.8869\\-33\\18.58465\\-159.8869\\-33\\19.08465\\-160.3869\\-33\\19.58465\\-160.3869\\-33\\20.08465\\-160.8869\\-33\\20.58465\\-160.8869\\-33\\21.08465\\-161.3869\\-33\\21.58465\\-161.3869\\-33\\22.08465\\-161.8869\\-33\\22.58465\\-161.8869\\-33\\23.08465\\-162.3869\\-33\\23.58465\\-162.3869\\-33\\25.08465\\-163.8869\\-33\\25.58465\\-163.8869\\-33\\27.83465\\-166.1369\\-33\\27.83465\\-166.6369\\-33\\28.83465\\-167.6369\\-33\\28.89411\\-168.1369\\-33\\29.83465\\-169.1369\\-33\\29.83465\\-169.6369\\-33\\30.33465\\-170.1369\\-33\\30.33465\\-171.1369\\-33\\30.83465\\-171.6369\\-33\\30.83465\\-172.6369\\-33\\31.33465\\-173.1369\\-33\\31.33465\\-174.1369\\-33\\31.83465\\-174.6369\\-33\\31.83465\\-177.6369\\-33\\32.33465\\-178.1369\\-33\\32.33465\\-179.1369\\-33\\31.83465\\-179.6369\\-33\\31.83465\\-183.1369\\-33\\31.33465\\-183.6369\\-33\\31.33465\\-185.1369\\-33\\30.83465\\-185.6369\\-33\\30.83465\\-187.1369\\-33\\30.33465\\-187.6369\\-33\\30.33465\\-188.6369\\-33\\29.83465\\-189.1369\\-33\\29.83465\\-189.6369\\-33\\29.33465\\-190.1369\\-33\\29.33465\\-190.6369\\-33\\28.83465\\-191.1369\\-33\\28.83465\\-191.6369\\-33\\28.33465\\-192.1369\\-33\\28.33465\\-192.6369\\-33\\27.33465\\-193.6369\\-33\\27.33465\\-194.1369\\-33\\25.83465\\-195.6369\\-33\\25.77518\\-196.1369\\-33\\22.58465\\-199.3869\\-33\\22.08465\\-199.3869\\-33\\20.08465\\-201.3274\\-33\\19.58465\\-201.3869\\-33\\19.08465\\-201.8869\\-33\\18.58465\\-201.8869\\-33\\18.08465\\-202.3869\\-33\\17.58465\\-202.3869\\-33\\17.08465\\-202.8869\\-33\\16.58465\\-202.8869\\-33\\16.08465\\-203.3869\\-33\\15.58465\\-203.3869\\-33\\15.08465\\-203.8274\\-33\\14.08465\\-203.8869\\-33\\13.58465\\-204.3274\\-33\\12.08465\\-204.3869\\-33\\11.58465\\-204.8274\\-33\\9.084647\\-204.8869\\-33\\8.584647\\-205.3274\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "135"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.415353\\-205.8274\\-31\\-6.915353\\-205.3869\\-31\\-9.915353\\-205.3274\\-31\\-10.41535\\-204.8869\\-31\\-11.91535\\-204.8274\\-31\\-12.41535\\-204.3869\\-31\\-13.41535\\-204.3869\\-31\\-13.91535\\-203.8869\\-31\\-14.41535\\-203.8869\\-31\\-14.91535\\-203.3869\\-31\\-15.41535\\-203.3869\\-31\\-15.91535\\-202.8869\\-31\\-16.41535\\-202.8869\\-31\\-16.91535\\-202.3869\\-31\\-17.41535\\-202.3869\\-31\\-18.41535\\-201.3869\\-31\\-18.91535\\-201.3869\\-31\\-20.91535\\-199.3869\\-31\\-21.41535\\-199.3869\\-31\\-24.16535\\-196.6369\\-31\\-24.16535\\-196.1369\\-31\\-26.16535\\-194.1369\\-31\\-26.16535\\-193.6369\\-31\\-27.16535\\-192.6369\\-31\\-27.16535\\-192.1369\\-31\\-27.66535\\-191.6369\\-31\\-27.66535\\-191.1369\\-31\\-28.16535\\-190.6369\\-31\\-28.16535\\-190.1369\\-31\\-28.66535\\-189.6369\\-31\\-28.72482\\-188.6369\\-31\\-29.16535\\-188.1369\\-31\\-29.16535\\-187.6369\\-31\\-29.66535\\-187.1369\\-31\\-29.66535\\-185.6369\\-31\\-30.16535\\-185.1369\\-31\\-30.22482\\-183.1369\\-31\\-30.66535\\-182.6369\\-31\\-30.66535\\-175.1369\\-31\\-30.16535\\-174.6369\\-31\\-30.16535\\-173.6369\\-31\\-29.72482\\-173.1369\\-31\\-29.66535\\-171.6369\\-31\\-29.16535\\-171.1369\\-31\\-29.16535\\-170.6369\\-31\\-28.16535\\-168.6369\\-31\\-27.66535\\-168.1369\\-31\\-27.66535\\-167.6369\\-31\\-26.22482\\-166.1369\\-31\\-26.16535\\-165.6369\\-31\\-23.91535\\-163.3869\\-31\\-23.41535\\-163.3869\\-31\\-22.41535\\-162.3869\\-31\\-21.91535\\-162.3274\\-31\\-20.91535\\-161.3869\\-31\\-20.41535\\-161.3869\\-31\\-19.91535\\-160.8869\\-31\\-19.41535\\-160.8869\\-31\\-18.91535\\-160.3869\\-31\\-17.91535\\-160.3869\\-31\\-17.41535\\-159.8869\\-31\\-16.41535\\-159.8274\\-31\\-15.91535\\-159.3869\\-31\\-14.41535\\-159.3869\\-31\\-13.91535\\-158.8869\\-31\\-10.91535\\-158.8274\\-31\\-10.41535\\-158.3869\\-31\\10.58465\\-158.3869\\-31\\11.08465\\-158.8869\\-31\\14.08465\\-158.8869\\-31\\14.58465\\-159.3869\\-31\\16.58465\\-159.3869\\-31\\17.08465\\-159.8869\\-31\\18.08465\\-159.8869\\-31\\18.58465\\-160.3869\\-31\\19.58465\\-160.3869\\-31\\20.08465\\-160.8869\\-31\\20.58465\\-160.8869\\-31\\21.08465\\-161.3869\\-31\\21.58465\\-161.3869\\-31\\22.08465\\-161.8869\\-31\\22.58465\\-161.8869\\-31\\23.58465\\-162.8869\\-31\\24.08465\\-162.8869\\-31\\28.83465\\-167.6369\\-31\\28.83465\\-168.1369\\-31\\29.33465\\-168.6369\\-31\\29.33465\\-169.1369\\-31\\29.83465\\-169.6369\\-31\\29.83465\\-170.1369\\-31\\30.33465\\-170.6369\\-31\\30.33465\\-171.1369\\-31\\30.83465\\-171.6369\\-31\\30.89411\\-173.1369\\-31\\31.33465\\-173.6369\\-31\\31.33465\\-174.6369\\-31\\31.83465\\-175.1369\\-31\\31.83465\\-182.6369\\-31\\31.39411\\-183.1369\\-31\\31.33465\\-185.1369\\-31\\30.83465\\-185.6369\\-31\\30.83465\\-187.1369\\-31\\30.33465\\-187.6369\\-31\\30.33465\\-188.6369\\-31\\29.83465\\-189.1369\\-31\\29.83465\\-189.6369\\-31\\29.33465\\-190.1369\\-31\\29.33465\\-190.6369\\-31\\28.83465\\-191.1369\\-31\\28.83465\\-191.6369\\-31\\28.33465\\-192.1369\\-31\\28.33465\\-192.6369\\-31\\27.33465\\-193.6369\\-31\\27.33465\\-194.1369\\-31\\25.83465\\-195.6369\\-31\\25.83465\\-196.1369\\-31\\22.08465\\-199.8869\\-31\\21.58465\\-199.8869\\-31\\19.58465\\-201.8869\\-31\\19.08465\\-201.8869\\-31\\18.58465\\-202.3869\\-31\\18.08465\\-202.3869\\-31\\17.58465\\-202.8869\\-31\\17.08465\\-202.8869\\-31\\16.58465\\-203.3869\\-31\\16.08465\\-203.3869\\-31\\15.58465\\-203.8869\\-31\\15.08465\\-203.8869\\-31\\14.58465\\-204.3274\\-31\\13.58465\\-204.3869\\-31\\13.08465\\-204.8274\\-31\\11.58465\\-204.8869\\-31\\11.08465\\-205.3274\\-31\\8.084647\\-205.3869\\-31\\7.584647\\-205.8274\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "144"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "16"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.415353\\-205.8869\\-29\\-8.915353\\-205.3869\\-29\\-10.41535\\-205.3869\\-29\\-10.91535\\-204.8869\\-29\\-12.41535\\-204.8869\\-29\\-12.91535\\-204.3869\\-29\\-13.41535\\-204.3869\\-29\\-13.91535\\-203.8869\\-29\\-14.41535\\-203.8869\\-29\\-14.91535\\-203.3869\\-29\\-15.41535\\-203.3869\\-29\\-15.91535\\-202.8869\\-29\\-16.41535\\-202.8869\\-29\\-16.91535\\-202.3869\\-29\\-17.41535\\-202.3869\\-29\\-18.41535\\-201.3869\\-29\\-18.91535\\-201.3869\\-29\\-21.41535\\-198.9464\\-29\\-21.91535\\-198.8869\\-29\\-23.16535\\-197.6369\\-29\\-23.22482\\-197.1369\\-29\\-25.66535\\-194.6369\\-29\\-25.66535\\-194.1369\\-29\\-26.66535\\-193.1369\\-29\\-26.66535\\-192.6369\\-29\\-27.16535\\-192.1369\\-29\\-27.16535\\-191.6369\\-29\\-27.66535\\-191.1369\\-29\\-27.66535\\-190.6369\\-29\\-28.16535\\-190.1369\\-29\\-28.16535\\-189.6369\\-29\\-28.66535\\-189.1369\\-29\\-28.72482\\-188.1369\\-29\\-29.16535\\-187.6369\\-29\\-29.22482\\-186.6369\\-29\\-29.66535\\-186.1369\\-29\\-29.72482\\-184.6369\\-29\\-30.16535\\-184.1369\\-29\\-30.22482\\-180.6369\\-29\\-30.66535\\-180.1369\\-29\\-30.66535\\-178.1369\\-29\\-30.22482\\-177.6369\\-29\\-30.16535\\-174.6369\\-29\\-29.72482\\-174.1369\\-29\\-29.66535\\-172.6369\\-29\\-29.16535\\-172.1369\\-29\\-29.16535\\-171.1369\\-29\\-28.66535\\-170.6369\\-29\\-28.66535\\-170.1369\\-29\\-28.16535\\-169.1369\\-29\\-27.66535\\-168.6369\\-29\\-27.66535\\-168.1369\\-29\\-26.22482\\-166.6369\\-29\\-26.16535\\-166.1369\\-29\\-23.41535\\-163.3869\\-29\\-22.91535\\-163.3274\\-29\\-21.91535\\-162.3869\\-29\\-21.41535\\-162.3274\\-29\\-20.41535\\-161.3869\\-29\\-19.91535\\-161.3869\\-29\\-19.41535\\-160.8869\\-29\\-18.41535\\-160.8274\\-29\\-16.91535\\-159.8869\\-29\\-15.91535\\-159.8869\\-29\\-15.41535\\-159.3869\\-29\\-12.91535\\-159.3274\\-29\\-12.41535\\-158.8869\\-29\\-8.415353\\-158.8274\\-29\\-7.915353\\-158.3869\\-29\\7.584647\\-158.3869\\-29\\8.084647\\-158.8274\\-29\\9.084647\\-158.8869\\-29\\12.58465\\-158.8869\\-29\\13.08465\\-159.3274\\-29\\15.58465\\-159.3869\\-29\\16.08465\\-159.8274\\-29\\17.58465\\-159.8869\\-29\\18.08465\\-160.3869\\-29\\19.08465\\-160.3869\\-29\\19.58465\\-160.8869\\-29\\20.08465\\-160.8869\\-29\\20.58465\\-161.3869\\-29\\21.08465\\-161.3869\\-29\\21.58465\\-161.8869\\-29\\22.08465\\-161.8869\\-29\\23.08465\\-162.8274\\-29\\23.58465\\-162.8869\\-29\\25.08465\\-164.3274\\-29\\25.58465\\-164.3869\\-29\\26.83465\\-165.6369\\-29\\26.89411\\-166.1369\\-29\\28.33465\\-167.6369\\-29\\28.39411\\-168.1369\\-29\\29.33465\\-169.1369\\-29\\29.33465\\-169.6369\\-29\\29.83465\\-170.1369\\-29\\29.89411\\-171.1369\\-29\\30.33465\\-171.6369\\-29\\30.33465\\-172.1369\\-29\\30.83465\\-172.6369\\-29\\30.89411\\-174.1369\\-29\\31.33465\\-174.6369\\-29\\31.39411\\-177.1369\\-29\\31.83465\\-177.6369\\-29\\31.83465\\-180.1369\\-29\\31.39411\\-180.6369\\-29\\31.33465\\-184.1369\\-29\\30.89411\\-184.6369\\-29\\30.83465\\-186.1369\\-29\\30.39411\\-186.6369\\-29\\30.33465\\-188.1369\\-29\\29.83465\\-188.6369\\-29\\29.83465\\-189.1369\\-29\\29.33465\\-189.6369\\-29\\29.33465\\-190.1369\\-29\\28.83465\\-190.6369\\-29\\28.83465\\-191.1369\\-29\\28.33465\\-191.6369\\-29\\28.33465\\-192.1369\\-29\\27.83465\\-192.6369\\-29\\27.83465\\-193.1369\\-29\\26.89411\\-194.1369\\-29\\26.83465\\-194.6369\\-29\\25.39411\\-196.1369\\-29\\25.33465\\-196.6369\\-29\\22.08465\\-199.8869\\-29\\21.58465\\-199.8869\\-29\\19.58465\\-201.8869\\-29\\19.08465\\-201.8869\\-29\\18.58465\\-202.3869\\-29\\18.08465\\-202.3869\\-29\\17.58465\\-202.8869\\-29\\17.08465\\-202.8869\\-29\\16.58465\\-203.3869\\-29\\16.08465\\-203.3869\\-29\\15.58465\\-203.8869\\-29\\15.08465\\-203.8869\\-29\\14.58465\\-204.3869\\-29\\14.08465\\-204.3869\\-29\\13.58465\\-204.8869\\-29\\12.08465\\-204.8869\\-29\\11.58465\\-205.3869\\-29\\10.08465\\-205.3869\\-29\\9.584647\\-205.8869\\-29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "128"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-5.415353\\-206.3869\\-27\\-5.915353\\-205.8869\\-27\\-8.415353\\-205.8869\\-27\\-8.915353\\-205.3869\\-27\\-10.41535\\-205.3869\\-27\\-10.91535\\-204.8869\\-27\\-12.41535\\-204.8869\\-27\\-12.91535\\-204.3869\\-27\\-13.41535\\-204.3869\\-27\\-13.91535\\-203.8869\\-27\\-14.41535\\-203.8869\\-27\\-14.91535\\-203.3869\\-27\\-15.41535\\-203.3869\\-27\\-15.91535\\-202.8869\\-27\\-16.41535\\-202.8869\\-27\\-16.91535\\-202.3869\\-27\\-17.41535\\-202.3869\\-27\\-18.91535\\-200.9464\\-27\\-19.41535\\-200.8869\\-27\\-24.16535\\-196.1369\\-27\\-24.22482\\-195.6369\\-27\\-25.66535\\-194.1369\\-27\\-26.22482\\-192.6369\\-27\\-27.16535\\-191.6369\\-27\\-27.16535\\-191.1369\\-27\\-27.66535\\-190.6369\\-27\\-27.72482\\-189.6369\\-27\\-28.66535\\-188.1369\\-27\\-28.72482\\-187.1369\\-27\\-29.16535\\-186.6369\\-27\\-29.22482\\-185.1369\\-27\\-29.66535\\-184.6369\\-27\\-29.72482\\-181.6369\\-27\\-30.16535\\-181.1369\\-27\\-30.16535\\-177.6369\\-27\\-29.72482\\-177.1369\\-27\\-29.66535\\-174.1369\\-27\\-29.22482\\-173.6369\\-27\\-29.16535\\-172.6369\\-27\\-28.72482\\-172.1369\\-27\\-28.66535\\-171.1369\\-27\\-27.72482\\-169.6369\\-27\\-27.66535\\-169.1369\\-27\\-26.72482\\-168.1369\\-27\\-26.66535\\-167.6369\\-27\\-25.72482\\-166.6369\\-27\\-25.66535\\-166.1369\\-27\\-23.41535\\-163.8869\\-27\\-22.91535\\-163.8274\\-27\\-21.91535\\-162.8869\\-27\\-21.41535\\-162.8274\\-27\\-20.41535\\-161.8869\\-27\\-19.91535\\-161.8869\\-27\\-19.41535\\-161.3869\\-27\\-18.91535\\-161.3869\\-27\\-18.41535\\-160.8869\\-27\\-17.91535\\-160.8869\\-27\\-17.41535\\-160.3869\\-27\\-16.41535\\-160.3869\\-27\\-15.91535\\-159.8869\\-27\\-14.41535\\-159.8274\\-27\\-13.91535\\-159.3869\\-27\\-10.91535\\-159.3274\\-27\\-10.41535\\-158.8869\\-27\\10.08465\\-158.8869\\-27\\10.58465\\-159.3274\\-27\\14.08465\\-159.3869\\-27\\14.58465\\-159.8274\\-27\\16.08465\\-159.8869\\-27\\16.58465\\-160.3274\\-27\\18.08465\\-160.3869\\-27\\18.58465\\-160.8869\\-27\\19.08465\\-160.8869\\-27\\22.08465\\-162.3869\\-27\\23.08465\\-163.3274\\-27\\23.58465\\-163.3869\\-27\\24.39411\\-164.1369\\-27\\27.83465\\-167.6369\\-27\\27.89411\\-168.1369\\-27\\28.83465\\-169.1369\\-27\\28.83465\\-169.6369\\-27\\29.33465\\-170.1369\\-27\\29.33465\\-170.6369\\-27\\29.83465\\-171.1369\\-27\\29.89411\\-172.1369\\-27\\30.33465\\-172.6369\\-27\\30.39411\\-173.6369\\-27\\30.83465\\-174.1369\\-27\\30.89411\\-176.6369\\-27\\31.33465\\-177.1369\\-27\\31.33465\\-181.1369\\-27\\30.89411\\-181.6369\\-27\\30.83465\\-184.6369\\-27\\30.39411\\-185.1369\\-27\\30.33465\\-186.6369\\-27\\29.89411\\-187.1369\\-27\\29.83465\\-188.1369\\-27\\29.39411\\-188.6369\\-27\\29.33465\\-189.6369\\-27\\28.83465\\-190.1369\\-27\\28.83465\\-190.6369\\-27\\28.33465\\-191.1369\\-27\\28.33465\\-191.6369\\-27\\27.83465\\-192.1369\\-27\\27.83465\\-192.6369\\-27\\26.89411\\-193.6369\\-27\\26.83465\\-194.1369\\-27\\25.89411\\-195.1369\\-27\\25.83465\\-195.6369\\-27\\20.08465\\-201.3869\\-27\\19.58465\\-201.3869\\-27\\18.58465\\-202.3869\\-27\\18.08465\\-202.3869\\-27\\17.58465\\-202.8869\\-27\\17.08465\\-202.8869\\-27\\16.58465\\-203.3869\\-27\\16.08465\\-203.3869\\-27\\15.58465\\-203.8869\\-27\\15.08465\\-203.8869\\-27\\14.58465\\-204.3869\\-27\\14.08465\\-204.3869\\-27\\13.58465\\-204.8869\\-27\\12.58465\\-204.8869\\-27\\12.08465\\-205.3869\\-27\\10.58465\\-205.3869\\-27\\10.08465\\-205.8869\\-27\\7.584647\\-205.8869\\-27\\7.084647\\-206.3869\\-27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "120"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-7.915353\\-205.8869\\-25\\-8.415353\\-205.3869\\-25\\-10.41535\\-205.3869\\-25\\-10.91535\\-204.8869\\-25\\-11.91535\\-204.8869\\-25\\-12.41535\\-204.3869\\-25\\-12.91535\\-204.3869\\-25\\-14.41535\\-203.4464\\-25\\-15.91535\\-202.8869\\-25\\-16.41535\\-202.3869\\-25\\-16.91535\\-202.3869\\-25\\-18.41535\\-200.9464\\-25\\-18.91535\\-200.8869\\-25\\-22.41535\\-197.4464\\-25\\-23.66535\\-196.1369\\-25\\-23.72482\\-195.6369\\-25\\-24.66535\\-194.6369\\-25\\-24.72482\\-194.1369\\-25\\-25.66535\\-193.1369\\-25\\-26.22482\\-191.6369\\-25\\-26.66535\\-191.1369\\-25\\-27.22482\\-189.6369\\-25\\-27.66535\\-189.1369\\-25\\-27.72482\\-188.1369\\-25\\-28.16535\\-187.6369\\-25\\-28.22482\\-186.6369\\-25\\-28.66535\\-186.1369\\-25\\-28.72482\\-185.1369\\-25\\-29.16535\\-184.6369\\-25\\-29.22482\\-181.1369\\-25\\-29.66535\\-180.6369\\-25\\-29.66535\\-178.1369\\-25\\-29.22482\\-177.6369\\-25\\-29.16535\\-174.6369\\-25\\-28.72482\\-174.1369\\-25\\-28.66535\\-172.6369\\-25\\-27.66535\\-170.6369\\-25\\-27.22482\\-170.1369\\-25\\-26.66535\\-168.6369\\-25\\-25.72482\\-167.6369\\-25\\-25.66535\\-167.1369\\-25\\-23.22482\\-164.6369\\-25\\-22.41535\\-163.8869\\-25\\-21.91535\\-163.8274\\-25\\-20.91535\\-162.8869\\-25\\-20.41535\\-162.8274\\-25\\-19.41535\\-161.8869\\-25\\-18.91535\\-161.8869\\-25\\-18.41535\\-161.3869\\-25\\-17.41535\\-161.3274\\-25\\-15.91535\\-160.3869\\-25\\-14.41535\\-160.3274\\-25\\-13.91535\\-159.8869\\-25\\-11.91535\\-159.8274\\-25\\-11.41535\\-159.3869\\-25\\11.58465\\-159.3869\\-25\\12.08465\\-159.8274\\-25\\14.58465\\-159.8869\\-25\\15.08465\\-160.3274\\-25\\16.58465\\-160.3869\\-25\\17.08465\\-160.8869\\-25\\17.58465\\-160.8869\\-25\\18.08465\\-161.3274\\-25\\19.08465\\-161.3869\\-25\\19.58465\\-161.8869\\-25\\20.08465\\-161.8869\\-25\\21.08465\\-162.3869\\-25\\22.08465\\-163.3274\\-25\\22.58465\\-163.3869\\-25\\23.58465\\-164.3274\\-25\\24.08465\\-164.3869\\-25\\26.33465\\-166.6369\\-25\\26.39411\\-167.1369\\-25\\27.83465\\-168.6369\\-25\\29.33465\\-171.6369\\-25\\29.39411\\-172.6369\\-25\\29.83465\\-173.1369\\-25\\29.89411\\-174.1369\\-25\\30.33465\\-174.6369\\-25\\30.39411\\-177.6369\\-25\\30.83465\\-178.1369\\-25\\30.83465\\-181.1369\\-25\\30.39411\\-181.6369\\-25\\30.33465\\-184.6369\\-25\\29.89411\\-185.1369\\-25\\29.83465\\-186.6369\\-25\\29.39411\\-187.1369\\-25\\29.33465\\-188.1369\\-25\\28.83465\\-188.6369\\-25\\28.83465\\-189.1369\\-25\\28.39411\\-189.6369\\-25\\28.33465\\-190.6369\\-25\\27.83465\\-191.1369\\-25\\27.83465\\-191.6369\\-25\\26.89411\\-192.6369\\-25\\26.33465\\-194.1369\\-25\\25.39411\\-195.1369\\-25\\25.33465\\-195.6369\\-25\\23.39411\\-197.6369\\-25\\23.33465\\-198.1369\\-25\\22.08465\\-199.3869\\-25\\21.58465\\-199.4464\\-25\\19.58465\\-201.3869\\-25\\19.08465\\-201.4464\\-25\\18.08465\\-202.3869\\-25\\17.58465\\-202.4464\\-25\\16.58465\\-203.3869\\-25\\16.08465\\-203.3869\\-25\\15.58465\\-203.8869\\-25\\15.08465\\-203.8869\\-25\\14.58465\\-204.3869\\-25\\13.58465\\-204.4464\\-25\\13.08465\\-204.8869\\-25\\12.08465\\-204.8869\\-25\\11.58465\\-205.3869\\-25\\9.584647\\-205.4464\\-25\\9.084647\\-205.8869\\-25\\5.584647\\-205.8869\\-25\\5.084647\\-205.9464\\-25\\-4.915353\\-205.9464\\-25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "103"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.915353\\-205.3869\\-23\\-9.415353\\-204.9464\\-23\\-10.91535\\-204.8869\\-23\\-11.41535\\-204.3869\\-23\\-11.91535\\-204.3869\\-23\\-13.41535\\-203.4464\\-23\\-14.41535\\-203.3869\\-23\\-15.41535\\-202.4464\\-23\\-15.91535\\-202.3869\\-23\\-16.91535\\-201.4464\\-23\\-17.41535\\-201.3869\\-23\\-18.41535\\-200.4464\\-23\\-18.91535\\-200.3869\\-23\\-22.16535\\-197.1369\\-23\\-22.22482\\-196.6369\\-23\\-23.66535\\-195.1369\\-23\\-23.72482\\-194.6369\\-23\\-24.66535\\-193.6369\\-23\\-25.22482\\-192.1369\\-23\\-26.16535\\-191.1369\\-23\\-26.22482\\-190.1369\\-23\\-27.16535\\-188.6369\\-23\\-27.22482\\-187.6369\\-23\\-27.66535\\-187.1369\\-23\\-27.72482\\-186.1369\\-23\\-28.16535\\-185.6369\\-23\\-28.22482\\-183.6369\\-23\\-28.66535\\-183.1369\\-23\\-28.66535\\-175.6369\\-23\\-28.22482\\-175.1369\\-23\\-28.16535\\-173.6369\\-23\\-27.72482\\-173.1369\\-23\\-27.66535\\-172.1369\\-23\\-26.22482\\-169.6369\\-23\\-26.16535\\-169.1369\\-23\\-25.22482\\-168.1369\\-23\\-25.16535\\-167.6369\\-23\\-24.41535\\-166.8274\\-23\\-21.41535\\-163.8869\\-23\\-20.91535\\-163.8274\\-23\\-19.91535\\-162.8869\\-23\\-19.41535\\-162.8274\\-23\\-16.91535\\-161.3869\\-23\\-15.91535\\-161.3274\\-23\\-15.41535\\-160.8869\\-23\\-14.41535\\-160.8274\\-23\\-13.91535\\-160.3869\\-23\\-11.91535\\-160.3274\\-23\\-11.41535\\-159.8869\\-23\\-7.915353\\-159.8274\\-23\\7.584647\\-159.8274\\-23\\8.084647\\-159.8869\\-23\\12.08465\\-159.8869\\-23\\12.58465\\-160.3274\\-23\\14.08465\\-160.3869\\-23\\14.58465\\-160.8274\\-23\\16.08465\\-160.8869\\-23\\16.58465\\-161.3274\\-23\\17.58465\\-161.3869\\-23\\21.58465\\-163.3869\\-23\\23.08465\\-164.8274\\-23\\23.58465\\-164.8869\\-23\\25.83465\\-167.1369\\-23\\25.89411\\-167.6369\\-23\\26.83465\\-168.6369\\-23\\27.39411\\-170.1369\\-23\\27.83465\\-170.6369\\-23\\28.39411\\-172.1369\\-23\\29.33465\\-173.6369\\-23\\29.39411\\-175.6369\\-23\\29.83465\\-176.1369\\-23\\29.83465\\-183.1369\\-23\\29.39411\\-183.6369\\-23\\29.33465\\-185.6369\\-23\\28.89411\\-186.1369\\-23\\28.83465\\-187.1369\\-23\\28.39411\\-187.6369\\-23\\28.33465\\-188.6369\\-23\\27.39411\\-190.1369\\-23\\27.33465\\-191.1369\\-23\\26.83465\\-192.1369\\-23\\25.89411\\-193.1369\\-23\\25.33465\\-194.6369\\-23\\23.89411\\-196.1369\\-23\\23.83465\\-196.6369\\-23\\22.58465\\-197.9464\\-23\\19.58465\\-200.8869\\-23\\19.08465\\-200.9464\\-23\\18.08465\\-201.8869\\-23\\17.58465\\-201.9464\\-23\\16.58465\\-202.8869\\-23\\16.08465\\-202.8869\\-23\\15.58465\\-203.3869\\-23\\15.08465\\-203.3869\\-23\\14.58465\\-203.8869\\-23\\14.08465\\-203.8869\\-23\\13.58465\\-204.3869\\-23\\12.58465\\-204.4464\\-23\\12.08465\\-204.8869\\-23\\10.58465\\-204.9464\\-23\\10.08465\\-205.3869\\-23\\7.084647\\-205.4464\\-23\\-5.915353\\-205.4464\\-23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "99"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.415353\\-204.8869\\-21\\-8.915353\\-204.4464\\-21\\-10.41535\\-204.3869\\-21\\-10.91535\\-203.9464\\-21\\-11.91535\\-203.8869\\-21\\-12.41535\\-203.4464\\-21\\-14.91535\\-202.3869\\-21\\-15.91535\\-201.4464\\-21\\-16.41535\\-201.3869\\-21\\-18.41535\\-199.4464\\-21\\-18.91535\\-199.3869\\-21\\-21.16535\\-197.1369\\-21\\-21.22482\\-196.6369\\-21\\-22.66535\\-195.1369\\-21\\-22.72482\\-194.6369\\-21\\-23.66535\\-193.6369\\-21\\-24.22482\\-192.1369\\-21\\-25.16535\\-191.1369\\-21\\-25.66535\\-190.1369\\-21\\-25.72482\\-189.1369\\-21\\-26.16535\\-188.6369\\-21\\-26.22482\\-187.6369\\-21\\-26.66535\\-187.1369\\-21\\-26.72482\\-186.1369\\-21\\-27.16535\\-185.6369\\-21\\-27.22482\\-184.1369\\-21\\-27.66535\\-183.6369\\-21\\-27.72482\\-181.1369\\-21\\-27.72482\\-177.6369\\-21\\-27.66535\\-175.6369\\-21\\-27.22482\\-175.1369\\-21\\-27.16535\\-173.6369\\-21\\-26.22482\\-172.1369\\-21\\-26.16535\\-171.1369\\-21\\-25.66535\\-170.1369\\-21\\-24.72482\\-169.1369\\-21\\-24.66535\\-168.6369\\-21\\-23.72482\\-167.6369\\-21\\-23.66535\\-167.1369\\-21\\-22.41535\\-165.8869\\-21\\-21.91535\\-165.8274\\-21\\-19.91535\\-163.8869\\-21\\-19.41535\\-163.8274\\-21\\-17.91535\\-162.8869\\-21\\-15.91535\\-161.8869\\-21\\-14.91535\\-161.8274\\-21\\-14.41535\\-161.3869\\-21\\-13.41535\\-161.3274\\-21\\-12.91535\\-160.8869\\-21\\-10.91535\\-160.8274\\-21\\-10.41535\\-160.3869\\-21\\10.58465\\-160.3869\\-21\\11.08465\\-160.8274\\-21\\13.58465\\-160.8869\\-21\\14.08465\\-161.3274\\-21\\15.08465\\-161.3869\\-21\\15.58465\\-161.8274\\-21\\16.58465\\-161.8869\\-21\\17.08465\\-162.3274\\-21\\18.08465\\-162.3869\\-21\\19.58465\\-163.3274\\-21\\20.08465\\-163.3869\\-21\\21.08465\\-164.3274\\-21\\21.58465\\-164.3869\\-21\\25.58465\\-168.3274\\-21\\26.39411\\-170.1369\\-21\\27.83465\\-172.6369\\-21\\27.89411\\-173.6369\\-21\\28.33465\\-174.1369\\-21\\28.39411\\-175.1369\\-21\\28.83465\\-175.6369\\-21\\28.89411\\-177.6369\\-21\\28.89411\\-181.6369\\-21\\28.83465\\-183.6369\\-21\\28.39411\\-184.1369\\-21\\28.33465\\-185.6369\\-21\\27.89411\\-186.1369\\-21\\27.83465\\-187.6369\\-21\\26.89411\\-189.1369\\-21\\26.83465\\-190.1369\\-21\\25.33465\\-193.1369\\-21\\24.39411\\-194.1369\\-21\\24.33465\\-194.6369\\-21\\22.89411\\-196.1369\\-21\\22.83465\\-196.6369\\-21\\22.08465\\-197.4464\\-21\\19.08465\\-200.3869\\-21\\18.58465\\-200.4464\\-21\\17.08465\\-201.8869\\-21\\16.58465\\-201.9464\\-21\\15.08465\\-202.8869\\-21\\13.58465\\-203.4464\\-21\\13.08465\\-203.8869\\-21\\12.08465\\-203.9464\\-21\\11.58465\\-204.3869\\-21\\10.58465\\-204.4464\\-21\\10.08465\\-204.8869\\-21\\8.084647\\-204.9464\\-21\\-6.915353\\-204.9464\\-21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "101"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.915353\\-204.3869\\-19\\-7.415353\\-203.9464\\-19\\-9.415353\\-203.8869\\-19\\-9.915353\\-203.4464\\-19\\-10.91535\\-203.3869\\-19\\-13.41535\\-201.9464\\-19\\-13.91535\\-201.8869\\-19\\-14.91535\\-200.9464\\-19\\-15.41535\\-200.8869\\-19\\-16.91535\\-199.4464\\-19\\-17.41535\\-199.3869\\-19\\-20.16535\\-196.6369\\-19\\-20.22482\\-196.1369\\-19\\-22.16535\\-194.1369\\-19\\-22.22482\\-193.6369\\-19\\-23.16535\\-192.6369\\-19\\-23.22482\\-192.1369\\-19\\-24.66535\\-189.6369\\-19\\-24.72482\\-188.6369\\-19\\-25.16535\\-188.1369\\-19\\-25.22482\\-187.1369\\-19\\-25.66535\\-186.6369\\-19\\-25.72482\\-185.6369\\-19\\-26.16535\\-185.1369\\-19\\-26.22482\\-183.1369\\-19\\-26.66535\\-182.6369\\-19\\-26.66535\\-176.6369\\-19\\-26.22482\\-176.1369\\-19\\-26.16535\\-174.6369\\-19\\-25.72482\\-174.1369\\-19\\-25.66535\\-173.1369\\-19\\-25.22482\\-172.6369\\-19\\-25.16535\\-171.6369\\-19\\-24.66535\\-170.6369\\-19\\-23.72482\\-169.6369\\-19\\-23.41535\\-168.8274\\-19\\-19.72482\\-165.1369\\-19\\-18.91535\\-164.8274\\-19\\-17.91535\\-163.8869\\-19\\-17.41535\\-163.8274\\-19\\-15.91535\\-162.8869\\-19\\-14.91535\\-162.8274\\-19\\-14.41535\\-162.3869\\-19\\-13.41535\\-162.3274\\-19\\-12.91535\\-161.8869\\-19\\-11.41535\\-161.8274\\-19\\-10.91535\\-161.3869\\-19\\-8.915353\\-161.3274\\-19\\10.08465\\-161.3274\\-19\\11.58465\\-161.3869\\-19\\12.08465\\-161.8274\\-19\\13.58465\\-161.8869\\-19\\14.08465\\-162.3274\\-19\\15.08465\\-162.3869\\-19\\15.58465\\-162.8274\\-19\\16.58465\\-162.8869\\-19\\18.08465\\-163.8274\\-19\\18.58465\\-163.8274\\-19\\19.08465\\-164.3274\\-19\\19.58465\\-164.3869\\-19\\20.58465\\-165.3274\\-19\\21.39411\\-165.6369\\-19\\24.08465\\-168.3274\\-19\\24.39411\\-169.1369\\-19\\25.39411\\-170.1369\\-19\\25.39411\\-170.6369\\-19\\25.89411\\-171.1369\\-19\\25.89411\\-171.6369\\-19\\26.39411\\-172.1369\\-19\\26.39411\\-172.6369\\-19\\26.83465\\-173.1369\\-19\\26.89411\\-174.1369\\-19\\27.33465\\-174.6369\\-19\\27.39411\\-176.1369\\-19\\27.83465\\-176.6369\\-19\\27.83465\\-182.6369\\-19\\27.39411\\-183.1369\\-19\\27.33465\\-185.1369\\-19\\26.89411\\-185.6369\\-19\\26.83465\\-187.1369\\-19\\26.39411\\-187.6369\\-19\\26.33465\\-188.6369\\-19\\25.33465\\-190.6369\\-19\\24.89411\\-191.1369\\-19\\24.89411\\-191.6369\\-19\\24.39411\\-192.1369\\-19\\23.83465\\-193.6369\\-19\\22.39411\\-195.1369\\-19\\22.08465\\-195.9464\\-19\\17.89411\\-200.1369\\-19\\17.08465\\-200.4464\\-19\\16.08465\\-201.3869\\-19\\15.58465\\-201.4464\\-19\\14.58465\\-202.3869\\-19\\13.58465\\-202.8869\\-19\\12.58465\\-202.9464\\-19\\12.08465\\-203.3869\\-19\\11.08465\\-203.4464\\-19\\10.58465\\-203.8869\\-19\\8.584647\\-203.9464\\-19\\8.084647\\-204.3869\\-19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "103"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-5.915353\\-203.3869\\-17\\-6.415353\\-202.9464\\-17\\-8.415353\\-202.8869\\-17\\-8.915353\\-202.4464\\-17\\-9.915353\\-202.3869\\-17\\-10.41535\\-201.9464\\-17\\-11.41535\\-201.8869\\-17\\-13.41535\\-200.8869\\-17\\-14.91535\\-199.4464\\-17\\-15.41535\\-199.4464\\-17\\-19.91535\\-194.9464\\-17\\-20.22482\\-194.1369\\-17\\-21.22482\\-193.1369\\-17\\-21.22482\\-192.6369\\-17\\-22.22482\\-191.6369\\-17\\-22.22482\\-191.1369\\-17\\-22.72482\\-190.6369\\-17\\-22.72482\\-190.1369\\-17\\-23.66535\\-188.6369\\-17\\-23.72482\\-187.6369\\-17\\-24.16535\\-187.1369\\-17\\-24.22482\\-185.6369\\-17\\-24.66535\\-185.1369\\-17\\-24.72482\\-183.6369\\-17\\-25.16535\\-183.1369\\-17\\-25.22482\\-182.1369\\-17\\-25.22482\\-177.6369\\-17\\-25.16535\\-176.6369\\-17\\-24.72482\\-176.1369\\-17\\-24.72482\\-174.6369\\-17\\-24.22482\\-174.1369\\-17\\-24.22482\\-173.1369\\-17\\-23.72482\\-172.6369\\-17\\-23.72482\\-172.1369\\-17\\-23.22482\\-171.6369\\-17\\-23.22482\\-171.1369\\-17\\-22.72482\\-170.6369\\-17\\-22.72482\\-170.1369\\-17\\-17.91535\\-165.3274\\-17\\-17.41535\\-165.3274\\-17\\-16.91535\\-164.8274\\-17\\-16.41535\\-164.8274\\-17\\-15.91535\\-164.3274\\-17\\-15.41535\\-164.3274\\-17\\-14.91535\\-163.8274\\-17\\-14.41535\\-163.8274\\-17\\-13.91535\\-163.3869\\-17\\-12.91535\\-163.3274\\-17\\-12.41535\\-162.8869\\-17\\-10.91535\\-162.8274\\-17\\-10.41535\\-162.3869\\-17\\-8.915353\\-162.3274\\-17\\9.584647\\-162.3274\\-17\\11.08465\\-162.3869\\-17\\11.58465\\-162.8274\\-17\\13.08465\\-162.8869\\-17\\13.58465\\-163.3274\\-17\\14.58465\\-163.3869\\-17\\15.08465\\-163.8274\\-17\\16.08465\\-163.8869\\-17\\17.58465\\-164.8274\\-17\\18.08465\\-164.8869\\-17\\19.08465\\-165.8274\\-17\\19.89411\\-166.1369\\-17\\23.39411\\-169.6369\\-17\\23.39411\\-170.1369\\-17\\24.39411\\-171.1369\\-17\\24.39411\\-171.6369\\-17\\24.89411\\-172.1369\\-17\\24.89411\\-172.6369\\-17\\25.39411\\-173.1369\\-17\\25.39411\\-174.1369\\-17\\25.89411\\-174.6369\\-17\\25.89411\\-176.1369\\-17\\26.33465\\-176.6369\\-17\\26.39411\\-177.6369\\-17\\26.39411\\-182.6369\\-17\\25.89411\\-183.6369\\-17\\25.83465\\-185.6369\\-17\\25.39411\\-186.1369\\-17\\25.39411\\-187.1369\\-17\\24.89411\\-187.6369\\-17\\24.89411\\-188.6369\\-17\\24.39411\\-189.1369\\-17\\24.33465\\-190.1369\\-17\\23.83465\\-191.1369\\-17\\22.89411\\-192.1369\\-17\\22.89411\\-192.6369\\-17\\21.89411\\-193.6369\\-17\\21.89411\\-194.1369\\-17\\15.89411\\-200.1369\\-17\\15.08465\\-200.4464\\-17\\14.58465\\-200.9464\\-17\\14.08465\\-200.9464\\-17\\13.58465\\-201.4464\\-17\\13.08465\\-201.4464\\-17\\12.58465\\-201.9464\\-17\\12.08465\\-201.9464\\-17\\11.58465\\-202.3869\\-17\\10.58465\\-202.4464\\-17\\10.08465\\-202.8869\\-17\\8.084647\\-202.9464\\-17\\7.584647\\-203.3869\\-17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "93"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.915353\\-200.9464\\-15\\-9.915353\\-200.9464\\-15\\-10.41535\\-200.4464\\-15\\-11.41535\\-200.3869\\-15\\-12.41535\\-199.4464\\-15\\-12.91535\\-199.4464\\-15\\-14.41535\\-197.9464\\-15\\-14.91535\\-197.9464\\-15\\-18.22482\\-194.6369\\-15\\-18.22482\\-194.1369\\-15\\-20.22482\\-192.1369\\-15\\-20.22482\\-191.6369\\-15\\-20.72482\\-191.1369\\-15\\-20.72482\\-190.6369\\-15\\-21.22482\\-190.1369\\-15\\-21.22482\\-189.6369\\-15\\-21.72482\\-189.1369\\-15\\-21.72482\\-188.6369\\-15\\-22.22482\\-188.1369\\-15\\-22.22482\\-187.1369\\-15\\-22.72482\\-186.6369\\-15\\-22.72482\\-185.1369\\-15\\-23.22482\\-184.6369\\-15\\-23.22482\\-176.1369\\-15\\-22.72482\\-175.6369\\-15\\-22.72482\\-174.1369\\-15\\-22.22482\\-173.6369\\-15\\-22.22482\\-172.6369\\-15\\-21.22482\\-171.6369\\-15\\-21.22482\\-171.1369\\-15\\-20.72482\\-170.6369\\-15\\-20.72482\\-170.1369\\-15\\-17.41535\\-166.8274\\-15\\-16.91535\\-166.8274\\-15\\-15.91535\\-165.8274\\-15\\-15.41535\\-165.8274\\-15\\-14.91535\\-165.3274\\-15\\-14.41535\\-165.3274\\-15\\-13.91535\\-164.8869\\-15\\-12.91535\\-164.8274\\-15\\-12.41535\\-164.3869\\-15\\-11.41535\\-164.3274\\-15\\-10.91535\\-163.8869\\-15\\-9.415353\\-163.8274\\-15\\-8.915353\\-163.3869\\-15\\-7.915353\\-163.3274\\-15\\8.584647\\-163.3274\\-15\\9.584647\\-163.3869\\-15\\10.08465\\-163.8274\\-15\\11.58465\\-163.8869\\-15\\12.08465\\-164.3274\\-15\\13.08465\\-164.3274\\-15\\13.58465\\-164.8274\\-15\\14.58465\\-164.8274\\-15\\15.08465\\-165.3274\\-15\\16.08465\\-165.3869\\-15\\17.08465\\-165.8869\\-15\\18.58465\\-167.3274\\-15\\19.08465\\-167.3274\\-15\\21.39411\\-169.6369\\-15\\21.39411\\-170.1369\\-15\\22.39411\\-171.1369\\-15\\22.39411\\-171.6369\\-15\\22.89411\\-172.1369\\-15\\22.89411\\-172.6369\\-15\\23.39411\\-173.1369\\-15\\23.39411\\-173.6369\\-15\\23.89411\\-174.1369\\-15\\23.89411\\-175.1369\\-15\\24.39411\\-175.6369\\-15\\24.39411\\-184.6369\\-15\\23.89411\\-185.6369\\-15\\23.83465\\-187.1369\\-15\\23.39411\\-187.6369\\-15\\23.39411\\-188.1369\\-15\\22.89411\\-188.6369\\-15\\22.89411\\-189.6369\\-15\\22.39411\\-190.1369\\-15\\22.39411\\-190.6369\\-15\\21.39411\\-191.6369\\-15\\21.39411\\-192.1369\\-15\\20.39411\\-193.1369\\-15\\20.39411\\-193.6369\\-15\\15.08465\\-198.9464\\-15\\14.58465\\-198.9464\\-15\\13.58465\\-199.9464\\-15\\13.08465\\-199.9464\\-15\\12.58465\\-200.4464\\-15\\12.08465\\-200.4464\\-15\\11.58465\\-200.9464\\-15\\10.58465\\-200.9464\\-15\\9.584647\\-201.4464\\-15\\-7.915353\\-201.4464\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "90"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-7.915353\\-199.4464\\-13\\-8.415353\\-198.9464\\-13\\-9.415353\\-198.9464\\-13\\-9.915353\\-198.4464\\-13\\-10.41535\\-198.4464\\-13\\-10.91535\\-197.9464\\-13\\-11.41535\\-197.9464\\-13\\-11.91535\\-197.4464\\-13\\-12.41535\\-197.4464\\-13\\-13.91535\\-195.9464\\-13\\-14.41535\\-195.9464\\-13\\-16.22482\\-194.1369\\-13\\-16.22482\\-193.6369\\-13\\-17.72482\\-192.1369\\-13\\-17.72482\\-191.6369\\-13\\-18.72482\\-190.6369\\-13\\-18.72482\\-190.1369\\-13\\-19.22482\\-189.6369\\-13\\-19.22482\\-189.1369\\-13\\-19.72482\\-188.6369\\-13\\-19.72482\\-188.1369\\-13\\-20.22482\\-187.6369\\-13\\-20.22482\\-186.6369\\-13\\-20.72482\\-186.1369\\-13\\-20.72482\\-184.6369\\-13\\-21.22482\\-184.1369\\-13\\-21.22482\\-176.6369\\-13\\-20.72482\\-176.1369\\-13\\-20.72482\\-174.6369\\-13\\-20.22482\\-174.1369\\-13\\-20.22482\\-173.6369\\-13\\-19.72482\\-173.1369\\-13\\-19.72482\\-172.6369\\-13\\-19.22482\\-172.1369\\-13\\-19.22482\\-171.6369\\-13\\-15.41535\\-167.8274\\-13\\-14.91535\\-167.8274\\-13\\-13.91535\\-166.8274\\-13\\-13.41535\\-166.8274\\-13\\-12.91535\\-166.3274\\-13\\-11.91535\\-166.3274\\-13\\-11.41535\\-165.8274\\-13\\-10.41535\\-165.8274\\-13\\-9.915353\\-165.3274\\-13\\-7.915353\\-165.3274\\-13\\-7.415353\\-164.8274\\-13\\8.084647\\-164.8274\\-13\\9.084647\\-165.3274\\-13\\11.08465\\-165.3274\\-13\\11.58465\\-165.8274\\-13\\12.58465\\-165.8274\\-13\\13.08465\\-166.3274\\-13\\13.58465\\-166.3274\\-13\\14.08465\\-166.8274\\-13\\14.58465\\-166.8274\\-13\\15.08465\\-167.3274\\-13\\15.58465\\-167.3274\\-13\\16.08465\\-167.8274\\-13\\16.58465\\-167.8274\\-13\\20.39411\\-171.6369\\-13\\20.39411\\-172.1369\\-13\\20.89411\\-172.6369\\-13\\20.89411\\-173.1369\\-13\\21.39411\\-173.6369\\-13\\21.39411\\-174.1369\\-13\\21.89411\\-174.6369\\-13\\21.89411\\-176.1369\\-13\\22.39411\\-176.6369\\-13\\22.39411\\-184.1369\\-13\\21.89411\\-184.6369\\-13\\21.89411\\-186.1369\\-13\\21.39411\\-186.6369\\-13\\21.39411\\-187.6369\\-13\\20.89411\\-188.1369\\-13\\20.89411\\-189.1369\\-13\\20.39411\\-189.6369\\-13\\20.39411\\-190.1369\\-13\\19.39411\\-191.1369\\-13\\19.39411\\-191.6369\\-13\\18.39411\\-192.6369\\-13\\18.39411\\-193.1369\\-13\\14.58465\\-196.9464\\-13\\14.08465\\-196.9464\\-13\\13.08465\\-197.9464\\-13\\12.58465\\-197.9464\\-13\\12.08465\\-198.4464\\-13\\11.58465\\-198.4464\\-13\\11.08465\\-198.9464\\-13\\10.08465\\-198.9464\\-13\\9.584647\\-199.4464\\-13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "84"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.915353\\-196.9464\\-11\\-7.415353\\-196.4464\\-11\\-8.415353\\-196.4464\\-11\\-8.915353\\-195.9464\\-11\\-9.415353\\-195.9464\\-11\\-9.915353\\-195.4464\\-11\\-10.41535\\-195.4464\\-11\\-10.91535\\-194.9464\\-11\\-11.41535\\-194.9464\\-11\\-15.72482\\-190.6369\\-11\\-15.72482\\-190.1369\\-11\\-16.22482\\-189.6369\\-11\\-16.22482\\-189.1369\\-11\\-16.72482\\-188.6369\\-11\\-16.72482\\-188.1369\\-11\\-17.22482\\-187.6369\\-11\\-17.22482\\-187.1369\\-11\\-17.72482\\-186.6369\\-11\\-17.72482\\-186.1369\\-11\\-18.22482\\-185.6369\\-11\\-18.22482\\-184.1369\\-11\\-18.72482\\-183.6369\\-11\\-18.72482\\-177.1369\\-11\\-18.22482\\-176.6369\\-11\\-18.22482\\-175.6369\\-11\\-17.72482\\-175.1369\\-11\\-17.72482\\-174.6369\\-11\\-17.22482\\-174.1369\\-11\\-17.22482\\-173.6369\\-11\\-15.72482\\-172.1369\\-11\\-15.72482\\-171.6369\\-11\\-14.41535\\-170.3274\\-11\\-13.91535\\-170.3274\\-11\\-12.91535\\-169.3274\\-11\\-12.41535\\-169.3274\\-11\\-11.91535\\-168.8274\\-11\\-11.41535\\-168.8274\\-11\\-10.91535\\-168.3274\\-11\\-10.41535\\-168.3274\\-11\\-9.915353\\-167.8274\\-11\\-9.415353\\-167.8274\\-11\\-8.915353\\-167.3274\\-11\\-6.415353\\-167.3274\\-11\\-5.915353\\-166.8274\\-11\\7.084647\\-166.8274\\-11\\7.584647\\-167.3274\\-11\\9.584647\\-167.3274\\-11\\10.08465\\-167.8274\\-11\\11.08465\\-167.8274\\-11\\11.58465\\-168.3274\\-11\\12.08465\\-168.3274\\-11\\12.58465\\-168.8274\\-11\\13.08465\\-168.8274\\-11\\13.58465\\-169.3274\\-11\\14.08465\\-169.3274\\-11\\18.39411\\-173.6369\\-11\\18.39411\\-174.1369\\-11\\18.89411\\-174.6369\\-11\\18.89411\\-175.1369\\-11\\19.39411\\-175.6369\\-11\\19.39411\\-176.6369\\-11\\19.89411\\-177.1369\\-11\\19.89411\\-184.1369\\-11\\19.39411\\-184.6369\\-11\\19.39411\\-185.6369\\-11\\18.89411\\-186.1369\\-11\\18.89411\\-187.1369\\-11\\18.39411\\-187.6369\\-11\\18.39411\\-188.1369\\-11\\17.89411\\-188.6369\\-11\\17.89411\\-189.1369\\-11\\17.39411\\-189.6369\\-11\\17.39411\\-190.1369\\-11\\15.89411\\-191.6369\\-11\\15.89411\\-192.1369\\-11\\14.08465\\-193.9464\\-11\\13.58465\\-193.9464\\-11\\12.08465\\-195.4464\\-11\\11.58465\\-195.4464\\-11\\11.08465\\-195.9464\\-11\\10.58465\\-195.9464\\-11\\10.08465\\-196.4464\\-11\\9.084647\\-196.4464\\-11\\8.584647\\-196.9464\\-11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "60"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.915353\\-192.9464\\-9\\-7.415353\\-192.4464\\-9\\-8.415353\\-192.4464\\-9\\-9.415353\\-191.4464\\-9\\-9.915353\\-191.4464\\-9\\-12.72482\\-188.6369\\-9\\-12.72482\\-188.1369\\-9\\-13.72482\\-187.1369\\-9\\-13.72482\\-186.6369\\-9\\-14.22482\\-186.1369\\-9\\-14.22482\\-185.6369\\-9\\-14.72482\\-185.1369\\-9\\-14.72482\\-183.6369\\-9\\-15.22482\\-183.1369\\-9\\-15.22482\\-178.1369\\-9\\-14.72482\\-177.6369\\-9\\-14.72482\\-176.6369\\-9\\-14.22482\\-176.1369\\-9\\-14.22482\\-175.6369\\-9\\-13.72482\\-175.1369\\-9\\-13.72482\\-174.6369\\-9\\-10.91535\\-171.8274\\-9\\-10.41535\\-171.8274\\-9\\-9.915353\\-171.3274\\-9\\-9.415353\\-171.3274\\-9\\-8.915353\\-170.8274\\-9\\-7.915353\\-170.8274\\-9\\-7.415353\\-170.3274\\-9\\-5.415353\\-170.3274\\-9\\-4.915353\\-169.8274\\-9\\6.084647\\-169.8274\\-9\\6.584647\\-170.3274\\-9\\8.584647\\-170.3274\\-9\\9.084647\\-170.8274\\-9\\10.08465\\-170.8274\\-9\\10.58465\\-171.3274\\-9\\11.08465\\-171.3274\\-9\\11.58465\\-171.8274\\-9\\12.08465\\-171.8274\\-9\\14.89411\\-174.6369\\-9\\14.89411\\-175.1369\\-9\\15.39411\\-175.6369\\-9\\15.39411\\-176.1369\\-9\\15.89411\\-176.6369\\-9\\15.89411\\-177.6369\\-9\\16.39411\\-178.1369\\-9\\16.39411\\-183.6369\\-9\\15.89411\\-184.1369\\-9\\15.89411\\-185.1369\\-9\\15.39411\\-185.6369\\-9\\15.39411\\-186.1369\\-9\\14.89411\\-186.6369\\-9\\14.89411\\-187.1369\\-9\\14.39411\\-187.6369\\-9\\14.39411\\-188.1369\\-9\\10.58465\\-191.9464\\-9\\10.08465\\-191.9464\\-9\\9.584647\\-192.4464\\-9\\9.084647\\-192.4464\\-9\\8.584647\\-192.9464\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "27"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-5.415353\\-185.9464\\-7\\-5.915353\\-185.4464\\-7\\-6.415353\\-185.4464\\-7\\-7.724819\\-184.1369\\-7\\-7.724819\\-183.6369\\-7\\-8.224819\\-183.1369\\-7\\-8.224819\\-182.6369\\-7\\-8.724819\\-182.1369\\-7\\-8.724819\\-179.1369\\-7\\-8.224819\\-178.6369\\-7\\-8.224819\\-178.1369\\-7\\-6.415353\\-176.3274\\-7\\-5.415353\\-176.3274\\-7\\-4.915353\\-175.8274\\-7\\6.084647\\-175.8274\\-7\\6.584647\\-176.3274\\-7\\7.584647\\-176.3274\\-7\\9.394114\\-178.1369\\-7\\9.394114\\-178.6369\\-7\\9.894114\\-179.1369\\-7\\9.894114\\-182.6369\\-7\\9.394114\\-183.1369\\-7\\9.394114\\-183.6369\\-7\\7.584647\\-185.4464\\-7\\7.084647\\-185.4464\\-7\\6.584647\\-185.9464\\-7"
-                     }
-                  }
-               ]
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "4"
-            }
-         },
-         {
-            "3006,002a" : {
-               "Name" : "ROIDisplayColor",
-               "Type" : "String",
-               "Value" : "255\\255\\0"
-            },
-            "3006,0040" : {
-               "Name" : "ContourSequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "58"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "0"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "2.118783\\-200.688\\-7\\3.688119\\-200.4978\\-7\\5.064636\\-200.0758\\-7\\6.460264\\-200.0264\\-7\\7.564238\\-199.5488\\-7\\8.963009\\-199.3706\\-7\\9.836956\\-198.8362\\-7\\10.55657\\-198.8968\\-7\\11.28211\\-198.4411\\-7\\12.275\\-198.3316\\-7\\14.16791\\-197.7549\\-7\\15.50114\\-197.832\\-7\\16.29665\\-197.6216\\-7\\17.00278\\-197.7832\\-7\\17.45366\\-198.2698\\-7\\18.59054\\-199.0016\\-7\\19.21973\\-200.6346\\-7\\19.49258\\-202.3157\\-7\\18.92627\\-204.8141\\-7\\18.22073\\-206.092\\-7\\17.54166\\-207.0491\\-7\\15.64322\\-209.0824\\-7\\12.91953\\-210.7655\\-7\\10.07212\\-212.0289\\-7\\8.292524\\-212.4787\\-7\\5.70048\\-212.8561\\-7\\4.445841\\-213.1447\\-7\\3.398423\\-213.1118\\-7\\1.34725\\-213.295\\-7\\-0.371215\\-213.2948\\-7\\-2.35529\\-213.1097\\-7\\-3.460436\\-213.138\\-7\\-4.730655\\-212.8487\\-7\\-7.296126\\-212.4844\\-7\\-9.096278\\-212.0284\\-7\\-11.94889\\-210.7569\\-7\\-14.66847\\-209.0861\\-7\\-16.56054\\-207.0503\\-7\\-17.24433\\-206.0919\\-7\\-17.94979\\-204.8142\\-7\\-18.51423\\-202.3195\\-7\\-18.27359\\-200.6581\\-7\\-17.40776\\-198.7672\\-7\\-16.49381\\-198.2694\\-7\\-16.00928\\-197.7922\\-7\\-15.31869\\-197.6215\\-7\\-14.52699\\-197.8338\\-7\\-13.31736\\-197.6794\\-7\\-12.22724\\-198.1126\\-7\\-10.58196\\-198.3851\\-7\\-9.658433\\-198.8586\\-7\\-8.861181\\-198.8359\\-7\\-7.989448\\-199.3696\\-7\\-6.621591\\-199.5406\\-7\\-5.501807\\-200.0241\\-7\\-4.076972\\-200.0788\\-7\\-2.811528\\-200.4866\\-7\\-1.550765\\-200.6176\\-7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "1"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "2.638206\\-193.8351\\-5\\4.27789\\-193.5854\\-5\\9.087528\\-191.5363\\-5\\9.707728\\-190.9396\\-5\\10.19323\\-190.836\\-5\\12.97652\\-189.1775\\-5\\14.22778\\-188.5783\\-5\\16.42825\\-188.1113\\-5\\17.89869\\-188.0158\\-5\\20.06059\\-188.6115\\-5\\21.94577\\-189.9909\\-5\\23.19127\\-191.2707\\-5\\24.221\\-193.0529\\-5\\24.8614\\-194.5046\\-5\\25.38822\\-196.4797\\-5\\25.65618\\-199.9844\\-5\\25.18298\\-203.4908\\-5\\24.5757\\-205.3404\\-5\\23.86917\\-206.8904\\-5\\22.57464\\-209.1143\\-5\\20.08956\\-211.9573\\-5\\18.50864\\-213.2627\\-5\\16.59299\\-214.5708\\-5\\14.02119\\-215.888\\-5\\12.57855\\-216.4844\\-5\\9.800355\\-217.3315\\-5\\6.525309\\-217.9846\\-5\\2.20525\\-218.3889\\-5\\0.6021065\\-218.4633\\-5\\-1.300326\\-218.398\\-5\\-5.548341\\-217.9847\\-5\\-8.823057\\-217.3318\\-5\\-11.60107\\-216.4846\\-5\\-13.04884\\-215.8828\\-5\\-15.23056\\-214.7541\\-5\\-17.54913\\-213.2539\\-5\\-19.11278\\-211.9575\\-5\\-21.59816\\-209.1141\\-5\\-22.92257\\-206.836\\-5\\-23.62809\\-205.2501\\-5\\-24.20657\\-203.4767\\-5\\-24.67878\\-199.9896\\-5\\-24.41169\\-196.4795\\-5\\-23.8864\\-194.508\\-5\\-23.25277\\-193.0608\\-5\\-22.21377\\-191.2699\\-5\\-20.96932\\-189.9909\\-5\\-19.08403\\-188.6115\\-5\\-16.92213\\-188.0158\\-5\\-14.26493\\-188.3163\\-5\\-12.09743\\-189.1377\\-5\\-11.23366\\-189.693\\-5\\-8.731774\\-190.9395\\-5\\-8.110901\\-191.5363\\-5\\-3.304572\\-193.5722\\-5\\-0.8416062\\-193.8936\\-5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "76"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "2"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.864589\\-221.8821\\-3\\-4.262839\\-221.705\\-3\\-6.966069\\-221.2908\\-3\\-10.64893\\-220.3757\\-3\\-14.25606\\-219.1237\\-3\\-17.98728\\-217.0966\\-3\\-19.8985\\-215.6573\\-3\\-21.56731\\-214.2381\\-3\\-23.44175\\-212.1059\\-3\\-24.59382\\-210.5732\\-3\\-26.01821\\-207.9047\\-3\\-26.77742\\-206.1993\\-3\\-27.35131\\-204.3581\\-3\\-27.84531\\-201.8294\\-3\\-27.98084\\-200.0783\\-3\\-28.03899\\-197.6873\\-3\\-27.82421\\-195.3723\\-3\\-27.39288\\-193.1793\\-3\\-26.38541\\-190.2343\\-3\\-25.9979\\-189.3203\\-3\\-24.23606\\-186.2188\\-3\\-23.11403\\-184.7514\\-3\\-22.14576\\-183.6978\\-3\\-20.29444\\-181.9018\\-3\\-17.92085\\-180.2553\\-3\\-14.91576\\-178.7754\\-3\\-12.09181\\-178.0114\\-3\\-10.41864\\-177.6524\\-3\\-8.380567\\-177.7356\\-3\\-7.821159\\-177.5995\\-3\\-6.256923\\-177.9025\\-3\\-5.568405\\-177.6836\\-3\\-3.728723\\-178.3027\\-3\\-2.461752\\-178.4334\\-3\\-1.873984\\-178.2949\\-3\\-1.278085\\-178.617\\-3\\-0.6892607\\-178.5616\\-3\\0.915863\\-178.7556\\-3\\1.413679\\-178.5143\\-3\\2.260312\\-178.6259\\-3\\2.849585\\-178.2998\\-3\\3.442821\\-178.436\\-3\\5.749365\\-178.0533\\-3\\6.584952\\-177.6623\\-3\\7.209674\\-177.8984\\-3\\8.797851\\-177.5999\\-3\\9.35713\\-177.7356\\-3\\11.3952\\-177.6524\\-3\\13.06837\\-178.0114\\-3\\15.89232\\-178.7754\\-3\\16.71202\\-179.1062\\-3\\19.12932\\-180.402\\-3\\20.75851\\-181.5704\\-3\\22.18242\\-182.7463\\-3\\24.09221\\-184.7533\\-3\\25.21266\\-186.2189\\-3\\26.97704\\-189.3233\\-3\\27.36121\\-190.2331\\-3\\28.37042\\-193.1835\\-3\\28.76588\\-195.0818\\-3\\29.0182\\-197.6763\\-3\\28.96166\\-200.9124\\-3\\28.38528\\-204.1257\\-3\\27.75371\\-206.1993\\-3\\26.99477\\-207.9047\\-3\\25.57038\\-210.5732\\-3\\24.41832\\-212.1058\\-3\\22.54387\\-214.2381\\-3\\19.49674\\-216.7331\\-3\\17.89876\\-217.7106\\-3\\15.2332\\-219.1235\\-3\\11.62549\\-220.3757\\-3\\7.942632\\-221.2908\\-3\\5.239401\\-221.705\\-3\\2.843655\\-221.8819\\-3\\0.4587926\\-221.9557\\-3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "69"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "3"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.505893\\-224.659\\-1\\-3.872592\\-224.5329\\-1\\-6.075192\\-224.2514\\-1\\-10.10377\\-223.4046\\-1\\-12.09372\\-222.8099\\-1\\-15.40204\\-221.5276\\-1\\-17.30988\\-220.5775\\-1\\-19.52165\\-219.2113\\-1\\-21.64827\\-217.6772\\-1\\-24.03179\\-215.3864\\-1\\-25.01208\\-214.2589\\-1\\-27.05294\\-211.3666\\-1\\-28.61117\\-208.2582\\-1\\-29.29426\\-206.4117\\-1\\-29.91546\\-204.106\\-1\\-30.2992\\-201.8872\\-1\\-30.53119\\-198.9491\\-1\\-30.3863\\-195.7051\\-1\\-29.95169\\-192.8636\\-1\\-29.52408\\-191.1825\\-1\\-28.35457\\-187.8148\\-1\\-27.50398\\-185.9839\\-1\\-26.57295\\-184.29\\-1\\-25.47632\\-182.5485\\-1\\-24.10098\\-180.6762\\-1\\-22.8449\\-179.206\\-1\\-21.20982\\-177.5157\\-1\\-18.44579\\-175.1434\\-1\\-15.26518\\-172.9597\\-1\\-13.75686\\-172.1249\\-1\\-10.84213\\-170.7385\\-1\\-7.96404\\-169.6793\\-1\\-5.895551\\-169.0958\\-1\\-2.046023\\-168.4893\\-1\\-0.101065\\-168.4183\\-1\\2.370644\\-168.4714\\-1\\4.407464\\-168.665\\-1\\6.877327\\-169.0973\\-1\\8.940471\\-169.6793\\-1\\11.81951\\-170.7388\\-1\\14.7207\\-172.1159\\-1\\17.70461\\-173.9061\\-1\\20.25886\\-175.7929\\-1\\22.28488\\-177.589\\-1\\24.25022\\-179.6929\\-1\\26.49762\\-182.5952\\-1\\27.66922\\-184.4665\\-1\\29.33005\\-187.8129\\-1\\30.50064\\-191.1825\\-1\\30.92746\\-192.861\\-1\\31.27184\\-194.9045\\-1\\31.47488\\-197.6931\\-1\\31.41817\\-200.4838\\-1\\31.26016\\-201.9663\\-1\\30.82529\\-204.4017\\-1\\30.27291\\-206.4079\\-1\\29.58772\\-208.2582\\-1\\28.02929\\-211.3663\\-1\\25.97207\\-214.2774\\-1\\24.95238\\-215.4348\\-1\\22.62433\\-217.678\\-1\\20.50612\\-219.2063\\-1\\18.28639\\-220.5776\\-1\\16.3786\\-221.5276\\-1\\13.07029\\-222.8099\\-1\\11.08033\\-223.4046\\-1\\7.05121\\-224.2515\\-1\\4.857371\\-224.5319\\-1\\0.9292888\\-224.704\\-1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "74"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "4"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.230072\\-226.988\\1\\1.617026\\-227.0116\\1\\5.893857\\-226.7186\\1\\9.422059\\-226.1311\\1\\12.82796\\-225.243\\1\\16.03768\\-224.1147\\1\\19.40093\\-222.4731\\1\\21.62452\\-221.1039\\1\\22.9313\\-220.1671\\1\\25.06567\\-218.3331\\1\\27.12967\\-216.1705\\1\\28.78583\\-213.9369\\1\\29.86313\\-212.229\\1\\30.97235\\-210.1181\\1\\32.10492\\-207.151\\1\\32.72127\\-205.0031\\1\\33.13824\\-202.708\\1\\33.44806\\-199.6716\\1\\33.46246\\-198.0082\\1\\33.29013\\-195.2014\\1\\33.01165\\-193.3288\\1\\32.51138\\-190.9886\\1\\31.80636\\-188.4967\\1\\30.6123\\-185.512\\1\\29.06974\\-182.4883\\1\\27.56436\\-180.0939\\1\\26.32525\\-178.4071\\1\\24.40985\\-176.106\\1\\22.75132\\-174.4283\\1\\21.24067\\-173.0551\\1\\19.72177\\-171.8311\\1\\17.56783\\-170.317\\1\\15.52231\\-169.1041\\1\\12.61545\\-167.7029\\1\\10.1143\\-166.806\\1\\7.618216\\-166.143\\1\\5.625355\\-165.7783\\1\\1.528728\\-165.3489\\1\\-0.7995239\\-165.3682\\1\\-4.667117\\-165.7833\\1\\-6.629262\\-166.138\\1\\-9.138115\\-166.8062\\1\\-11.63889\\-167.7029\\1\\-14.54575\\-169.1041\\1\\-16.59123\\-170.317\\1\\-18.74592\\-171.832\\1\\-20.28835\\-173.0799\\1\\-22.52108\\-175.159\\1\\-24.25586\\-177.0566\\1\\-25.41307\\-178.4684\\1\\-26.59302\\-180.0987\\1\\-28.58984\\-183.391\\1\\-29.63597\\-185.512\\1\\-30.8298\\-188.4967\\1\\-31.53481\\-190.9886\\1\\-32.0358\\-193.3289\\1\\-32.30801\\-195.136\\1\\-32.47206\\-199.6432\\1\\-32.34568\\-201.3506\\1\\-31.75202\\-204.9769\\1\\-31.12837\\-207.1509\\1\\-29.99633\\-210.1172\\1\\-29.05882\\-211.905\\1\\-27.81673\\-213.929\\1\\-25.93152\\-216.4034\\1\\-24.09339\\-218.3303\\1\\-21.59067\\-220.4518\\1\\-19.56627\\-221.7962\\1\\-17.17303\\-223.1198\\1\\-15.05823\\-224.1127\\1\\-12.72814\\-224.9722\\1\\-10.90476\\-225.5172\\1\\-8.454619\\-226.1279\\1\\-4.813118\\-226.7221\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "76"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "5"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.3135906\\-228.9314\\3\\1.290305\\-228.9303\\3\\4.793899\\-228.7583\\3\\7.307244\\-228.4516\\3\\10.98056\\-227.7123\\3\\13.59094\\-226.9913\\3\\15.95373\\-226.1736\\3\\19.26485\\-224.678\\3\\20.92691\\-223.7265\\3\\22.81876\\-222.4889\\3\\24.3543\\-221.3317\\3\\26.22543\\-219.7086\\3\\27.37218\\-218.5479\\3\\29.24239\\-216.3239\\3\\30.38726\\-214.6923\\3\\31.41593\\-213.0145\\3\\32.74849\\-210.2846\\3\\33.9155\\-206.9134\\3\\34.60811\\-204.0022\\3\\35.0148\\-200.3019\\3\\35.01503\\-196.413\\3\\34.80304\\-194.4035\\3\\34.45737\\-192.2376\\3\\34.00693\\-190.1625\\3\\33.21647\\-187.5761\\3\\32.32428\\-185.2765\\3\\31.40952\\-183.2593\\3\\30.05162\\-180.7046\\3\\28.06799\\-177.6877\\3\\25.71058\\-174.7955\\3\\23.80749\\-172.8204\\3\\22.07121\\-171.2518\\3\\19.2796\\-169.1515\\3\\17.22806\\-167.8832\\3\\15.05452\\-166.7691\\3\\11.73059\\-165.5063\\3\\8.736152\\-164.6779\\3\\5.936163\\-164.1722\\3\\2.654293\\-163.8878\\3\\-1.301358\\-163.8856\\3\\-4.962992\\-164.1727\\3\\-7.758486\\-164.6777\\3\\-9.65784\\-165.1808\\3\\-12.71687\\-166.1844\\3\\-14.08671\\-166.7715\\3\\-16.24262\\-167.8787\\3\\-18.67115\\-169.4019\\3\\-20.83492\\-171.025\\3\\-22.69699\\-172.6715\\3\\-24.68094\\-174.731\\3\\-27.11776\\-177.7423\\3\\-29.0754\\-180.7054\\3\\-30.43284\\-183.2591\\3\\-31.34771\\-185.2765\\3\\-32.23991\\-187.5761\\3\\-33.03045\\-190.1627\\3\\-33.55018\\-192.5997\\3\\-34.03828\\-196.4082\\3\\-34.04025\\-200.2078\\3\\-33.79142\\-202.9676\\3\\-33.52932\\-204.4788\\3\\-32.93048\\-206.9364\\3\\-31.77195\\-210.2846\\3\\-30.43933\\-213.0145\\3\\-29.41279\\-214.6913\\3\\-28.21924\\-216.381\\3\\-25.89614\\-219.083\\3\\-23.44763\\-221.2687\\3\\-21.03433\\-223.0565\\3\\-18.62058\\-224.47\\3\\-17.00047\\-225.3025\\3\\-14.29901\\-226.427\\3\\-12.64971\\-226.9758\\3\\-10.00135\\-227.7132\\3\\-6.330335\\-228.4518\\3\\-3.812125\\-228.7596\\3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "79"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "6"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.252691\\-230.4623\\5\\-6.212992\\-230.1293\\5\\-9.146994\\-229.5928\\5\\-12.73069\\-228.6603\\5\\-16.33685\\-227.3569\\5\\-18.70528\\-226.2385\\5\\-21.84462\\-224.3979\\5\\-23.28526\\-223.3784\\5\\-25.33088\\-221.7136\\5\\-26.99786\\-220.1182\\5\\-28.97999\\-217.8698\\5\\-30.75214\\-215.3696\\5\\-31.29977\\-214.4659\\5\\-32.71239\\-211.6962\\5\\-33.4382\\-209.9144\\5\\-34.49167\\-206.6018\\5\\-34.82876\\-205.0423\\5\\-35.27651\\-202.1661\\5\\-35.44458\\-199.6658\\5\\-35.37939\\-196.1625\\5\\-34.99789\\-192.9438\\5\\-34.52095\\-190.5999\\5\\-33.75994\\-187.8714\\5\\-32.98402\\-185.629\\5\\-32.15805\\-183.6363\\5\\-31.00288\\-181.3047\\5\\-29.33825\\-178.5006\\5\\-26.90814\\-175.1217\\5\\-24.91504\\-172.884\\5\\-22.77211\\-170.8369\\5\\-20.66631\\-169.1362\\5\\-18.51003\\-167.6791\\5\\-17.01823\\-166.8163\\5\\-15.51472\\-166.0764\\5\\-13.59794\\-165.2959\\5\\-12.13263\\-164.8016\\5\\-9.508026\\-164.0994\\5\\-7.533429\\-163.7547\\5\\-4.755338\\-163.3887\\5\\0.6029193\\-163.1679\\5\\5.724001\\-163.3857\\5\\9.877586\\-163.9805\\5\\11.77233\\-164.418\\5\\14.50093\\-165.2692\\5\\16.44098\\-166.0604\\5\\19.38646\\-167.6241\\5\\21.63471\\-169.1293\\5\\23.75167\\-170.84\\5\\26.22358\\-173.2368\\5\\27.8851\\-175.1225\\5\\29.46671\\-177.2436\\5\\31.12628\\-179.8239\\5\\31.9417\\-181.2482\\5\\33.13614\\-183.6406\\5\\33.96057\\-185.6289\\5\\34.7365\\-187.8714\\5\\35.49983\\-190.6069\\5\\35.93556\\-192.8452\\5\\36.35567\\-196.16\\5\\36.42181\\-199.6032\\5\\36.25412\\-202.1605\\5\\35.66015\\-205.7325\\5\\35.12953\\-207.7594\\5\\34.41796\\-209.9017\\5\\33.69498\\-211.6962\\5\\32.27636\\-214.4658\\5\\31.7289\\-215.3694\\5\\29.95662\\-217.8699\\5\\28.03683\\-220.076\\5\\26.30546\\-221.7157\\5\\24.27489\\-223.3727\\5\\21.71678\\-225.0882\\5\\19.68466\\-226.2368\\5\\17.31322\\-227.357\\5\\13.70726\\-228.6603\\5\\10.12356\\-229.5928\\5\\7.206679\\-230.1255\\5\\4.211326\\-230.461\\5\\0.4916681\\-230.5871\\5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "79"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.113355\\-231.9815\\7\\1.78387\\-231.9958\\7\\5.839989\\-231.6794\\7\\7.611424\\-231.4675\\7\\9.987147\\-231.0579\\7\\12.91806\\-230.3536\\7\\15.50904\\-229.5385\\7\\17.72618\\-228.6717\\7\\20.56344\\-227.3343\\7\\23.81407\\-225.377\\7\\26.31833\\-223.4626\\7\\27.75669\\-222.2016\\7\\29.74725\\-220.1285\\7\\31.10832\\-218.4566\\7\\32.34916\\-216.7125\\7\\33.77028\\-214.3543\\7\\34.78714\\-212.3056\\7\\35.90201\\-209.4008\\7\\36.51296\\-207.3902\\7\\36.98742\\-205.3055\\7\\37.47757\\-201.6117\\7\\37.56797\\-197.5989\\7\\37.3562\\-194.4153\\7\\36.79647\\-191.0921\\7\\36.2218\\-188.8031\\7\\35.06652\\-185.2823\\7\\33.42091\\-181.5529\\7\\31.93871\\-178.8714\\7\\29.70436\\-175.5734\\7\\28.22831\\-173.7659\\7\\26.38695\\-171.7636\\7\\24.68287\\-170.174\\7\\22.94795\\-168.7995\\7\\21.15678\\-167.5496\\7\\18.40044\\-166.0376\\7\\15.17508\\-164.7411\\7\\12.34891\\-163.9888\\7\\9.686124\\-163.5579\\7\\6.619918\\-163.267\\7\\2.036601\\-163.1488\\7\\-3.364203\\-163.1777\\7\\-5.648504\\-163.267\\7\\-10.16484\\-163.7568\\7\\-12.99839\\-164.3995\\7\\-14.20547\\-164.7418\\7\\-16.97895\\-165.8251\\7\\-18.19831\\-166.4128\\7\\-20.17971\\-167.5494\\7\\-21.97139\\-168.7995\\7\\-23.70631\\-170.174\\7\\-25.41785\\-171.7746\\7\\-27.25049\\-173.7628\\7\\-28.72779\\-175.5734\\7\\-30.96593\\-178.8796\\7\\-32.72195\\-182.1051\\7\\-34.08269\\-185.2576\\7\\-35.24524\\-188.8031\\7\\-35.82001\\-191.0926\\7\\-36.37973\\-194.4156\\7\\-36.62768\\-198.1999\\7\\-36.50275\\-201.6698\\7\\-36.01051\\-205.3088\\7\\-35.53661\\-207.3902\\7\\-34.92545\\-209.401\\7\\-33.70901\\-212.5259\\7\\-32.53335\\-214.8377\\7\\-30.92758\\-217.3744\\7\\-28.79788\\-220.1051\\7\\-26.66315\\-222.302\\7\\-25.34836\\-223.4622\\7\\-22.82267\\-225.3763\\7\\-20.65603\\-226.7433\\7\\-18.55426\\-227.8498\\7\\-16.74965\\-228.6716\\7\\-14.53247\\-229.5385\\7\\-11.94139\\-230.3536\\7\\-9.010533\\-231.0579\\7\\-6.634991\\-231.4674\\7\\-4.863411\\-231.6793\\7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "83"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.4003342\\-233.2461\\9\\4.02504\\-233.0949\\9\\6.533574\\-232.8296\\9\\9.712001\\-232.3584\\9\\11.8706\\-231.8688\\9\\15.03886\\-230.9707\\9\\18.33954\\-229.7097\\9\\20.95532\\-228.458\\9\\24.30868\\-226.4386\\9\\26.23126\\-225.0348\\9\\28.40893\\-223.133\\9\\29.68939\\-221.8814\\9\\31.66967\\-219.5752\\9\\33.24977\\-217.3623\\9\\34.16417\\-215.841\\9\\35.29821\\-213.738\\9\\36.0014\\-212.1932\\9\\37.10344\\-209.0577\\9\\37.45719\\-207.8224\\9\\38.05902\\-205.1721\\9\\38.5475\\-201.1462\\9\\38.59718\\-197.9972\\9\\38.44669\\-195.317\\9\\38.12399\\-192.9546\\9\\37.68431\\-190.6108\\9\\36.4941\\-186.3636\\9\\35.53729\\-183.8625\\9\\34.36541\\-181.2518\\9\\32.9718\\-178.722\\9\\32.24244\\-177.5356\\9\\30.71769\\-175.3617\\9\\28.87608\\-173.0675\\9\\26.74139\\-170.8697\\9\\25.37294\\-169.6574\\9\\23.92429\\-168.5262\\9\\21.80225\\-167.1184\\9\\19.61738\\-165.9521\\9\\18.3121\\-165.3829\\9\\16.36147\\-164.7129\\9\\14.34965\\-164.2001\\9\\11.1674\\-163.7356\\9\\7.199081\\-163.5224\\9\\1.372858\\-163.5936\\9\\-4.748299\\-163.5675\\9\\-6.222456\\-163.5224\\9\\-10.19083\\-163.7356\\9\\-13.36962\\-164.1991\\9\\-15.38274\\-164.7125\\9\\-17.3416\\-165.3844\\9\\-19.30886\\-166.2719\\9\\-20.82355\\-167.1171\\9\\-22.94773\\-168.5262\\9\\-24.39638\\-169.6574\\9\\-25.76461\\-170.8695\\9\\-27.89928\\-173.0672\\9\\-29.74113\\-175.3617\\9\\-31.26588\\-177.5356\\9\\-33.38591\\-181.2446\\9\\-34.55597\\-183.8606\\9\\-35.51778\\-186.3646\\9\\-36.7073\\-190.5943\\9\\-37.14925\\-192.93\\9\\-37.47027\\-195.3165\\9\\-37.62305\\-197.996\\9\\-37.55172\\-201.3841\\9\\-37.08222\\-205.1741\\9\\-36.47828\\-207.8301\\9\\-36.1259\\-209.0615\\9\\-35.02481\\-212.1933\\9\\-33.73475\\-214.8871\\9\\-32.56988\\-216.9276\\9\\-30.68651\\-219.584\\9\\-28.7129\\-221.8813\\9\\-26.32982\\-224.1456\\9\\-24.95306\\-225.2711\\9\\-22.80794\\-226.7836\\9\\-20.11026\\-228.3863\\9\\-17.95666\\-229.4615\\9\\-13.97597\\-231.0012\\9\\-10.92568\\-231.8589\\9\\-8.734808\\-232.3585\\9\\-5.55708\\-232.8296\\9\\-3.048317\\-233.0951\\9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "86"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.347774\\-234.2774\\11\\2.076297\\-234.2512\\11\\5.315486\\-234.076\\11\\8.891184\\-233.5704\\11\\12.76923\\-232.7454\\11\\15.01874\\-232.092\\11\\18.17616\\-230.8951\\11\\19.70145\\-230.2389\\11\\22.5713\\-228.7495\\11\\24.2843\\-227.6906\\11\\26.40683\\-226.1659\\11\\27.72368\\-225.0999\\11\\29.91719\\-223.0515\\11\\31.85921\\-220.8909\\11\\32.75888\\-219.7371\\11\\34.06079\\-217.8211\\11\\35.67154\\-215.0535\\11\\36.85835\\-212.443\\11\\38.08195\\-208.9933\\11\\38.54485\\-207.0529\\11\\39.00657\\-204.5316\\11\\39.21459\\-202.9322\\11\\39.45261\\-199.6305\\11\\39.32095\\-195.9739\\11\\38.9065\\-192.5048\\11\\38.4711\\-190.3198\\11\\37.71616\\-187.4484\\11\\37.20184\\-185.9004\\11\\35.70038\\-182.1832\\11\\34.86518\\-180.4969\\11\\33.22965\\-177.6419\\11\\31.78922\\-175.481\\11\\29.46731\\-172.6306\\11\\27.50459\\-170.6222\\11\\25.57172\\-168.9939\\11\\23.93461\\-167.8008\\11\\22.10848\\-166.709\\11\\18.96548\\-165.3339\\11\\17.47947\\-164.8615\\11\\15.0394\\-164.3373\\11\\12.10361\\-164.052\\11\\9.684925\\-164.0091\\11\\5.773968\\-164.1576\\11\\3.828449\\-164.3023\\11\\-2.873777\\-164.3022\\11\\-4.768305\\-164.1588\\11\\-8.708386\\-164.0091\\11\\-11.12704\\-164.052\\11\\-14.12973\\-164.3563\\11\\-16.50329\\-164.8615\\11\\-17.98896\\-165.3339\\11\\-21.13229\\-166.7092\\11\\-22.95804\\-167.8008\\11\\-24.59516\\-168.9939\\11\\-26.52803\\-170.6222\\11\\-28.49075\\-172.6306\\11\\-30.81266\\-175.481\\11\\-32.25309\\-177.6419\\11\\-33.88862\\-180.4969\\11\\-34.72403\\-182.1839\\11\\-36.22878\\-185.9097\\11\\-36.74054\\-187.4451\\11\\-37.49325\\-190.3164\\11\\-37.92682\\-192.4971\\11\\-38.34434\\-195.973\\11\\-38.47602\\-199.6328\\11\\-38.2383\\-202.9321\\11\\-38.03004\\-204.5313\\11\\-37.56659\\-207.1261\\11\\-37.10224\\-209.0008\\11\\-35.87864\\-212.4493\\11\\-34.08095\\-216.1853\\11\\-33.06963\\-217.8515\\11\\-31.78241\\-219.737\\11\\-30.88265\\-220.8909\\11\\-28.94056\\-223.0516\\11\\-27.72459\\-224.2173\\11\\-25.42918\\-226.166\\11\\-23.30767\\-227.6906\\11\\-21.59467\\-228.7496\\11\\-18.74289\\-230.2425\\11\\-15.78055\\-231.4655\\11\\-14.02753\\-232.0893\\11\\-11.78584\\-232.7469\\11\\-7.914277\\-233.5708\\11\\-4.331664\\-234.077\\11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "85"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "8.493884\\-234.5764\\13\\11.79889\\-233.9312\\13\\14.11177\\-233.2976\\13\\17.48217\\-232.1583\\13\\21.00282\\-230.5951\\13\\23.41281\\-229.274\\13\\26.76602\\-226.9787\\13\\28.83936\\-225.2561\\13\\30.94899\\-223.165\\13\\32.75066\\-221.0801\\13\\34.07261\\-219.2731\\13\\35.24554\\-217.4447\\13\\36.50222\\-215.1296\\13\\37.28791\\-213.442\\13\\38.0702\\-211.4309\\13\\38.88156\\-208.9017\\13\\39.72481\\-205.0045\\13\\40.0441\\-202.2794\\13\\40.19049\\-199.5818\\13\\40.13769\\-197.0911\\13\\39.80278\\-193.6548\\13\\39.22738\\-190.4314\\13\\38.45135\\-187.5511\\13\\37.5313\\-184.8195\\13\\36.23561\\-181.7441\\13\\35.25876\\-179.8088\\13\\34.27408\\-178.0789\\13\\32.52323\\-175.4213\\13\\30.94167\\-173.3975\\13\\29.6861\\-172.0036\\13\\27.91198\\-170.2863\\13\\25.3169\\-168.2355\\13\\23.68431\\-167.2091\\13\\21.5541\\-166.1696\\13\\19.30247\\-165.3401\\13\\16.11502\\-164.7093\\13\\13.49307\\-164.5035\\13\\11.23911\\-164.5566\\13\\6.408697\\-165.0268\\13\\3.100249\\-165.2863\\13\\-0.7164387\\-165.3562\\13\\-5.432432\\-165.0266\\13\\-10.26396\\-164.5568\\13\\-12.51007\\-164.5049\\13\\-15.12665\\-164.7087\\13\\-16.3662\\-164.8919\\13\\-18.32609\\-165.3402\\13\\-20.57754\\-166.1696\\13\\-22.70788\\-167.2092\\13\\-24.3404\\-168.2355\\13\\-26.93542\\-170.2863\\13\\-28.70954\\-172.0036\\13\\-29.96511\\-173.3975\\13\\-31.54667\\-175.4213\\13\\-33.29752\\-178.0789\\13\\-34.2822\\-179.8088\\13\\-35.25905\\-181.7441\\13\\-36.81007\\-185.4838\\13\\-37.62061\\-188.0353\\13\\-38.25008\\-190.4274\\13\\-38.82615\\-193.6542\\13\\-39.16125\\-197.0911\\13\\-39.21392\\-199.5818\\13\\-39.06759\\-202.2792\\13\\-38.7482\\-205.0048\\13\\-37.90586\\-208.8992\\13\\-36.99252\\-211.729\\13\\-36.31318\\-213.4341\\13\\-35.52634\\-215.1275\\13\\-34.27116\\-217.4413\\13\\-33.09589\\-219.2734\\13\\-31.7741\\-221.0801\\13\\-29.97243\\-223.165\\13\\-27.86122\\-225.2573\\13\\-25.7893\\-226.9787\\13\\-22.43624\\-229.274\\13\\-20.01815\\-230.5973\\13\\-17.40203\\-231.8029\\13\\-15.30777\\-232.6044\\13\\-10.82813\\-233.929\\13\\-7.524759\\-234.5817\\13\\-5.269984\\-234.904\\13\\-2.816839\\-235.1104\\13\\0.9473966\\-235.236\\13\\6.244745\\-234.9043\\13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "91"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.352428\\-235.8766\\15\\-0.2751435\\-236.0274\\15\\4.346042\\-235.8818\\15\\8.495686\\-235.379\\15\\11.06613\\-234.9151\\15\\14.32617\\-234.0538\\15\\16.99848\\-233.1746\\15\\19.38593\\-232.2192\\15\\21.40554\\-231.223\\15\\24.18315\\-229.6686\\15\\25.36932\\-228.9052\\15\\27.42297\\-227.392\\15\\28.83851\\-226.2276\\15\\30.91222\\-224.2525\\15\\33.00831\\-221.88\\15\\35.25417\\-218.7149\\15\\36.24412\\-217.0504\\15\\37.27632\\-215.0163\\15\\38.14688\\-213.0815\\15\\39.25492\\-209.8866\\15\\40.14484\\-206.1315\\15\\40.53278\\-203.5353\\15\\40.65158\\-202.2302\\15\\40.73747\\-199.5977\\15\\40.61519\\-195.4557\\15\\40.04453\\-191.5536\\15\\39.27789\\-188.2651\\15\\38.71294\\-186.3867\\15\\38.02491\\-184.4544\\15\\36.27225\\-180.55\\15\\35.15323\\-178.4959\\15\\33.48592\\-175.8985\\15\\31.2849\\-173.0847\\15\\29.07742\\-170.8158\\15\\27.71301\\-169.6174\\15\\25.43394\\-167.971\\15\\23.93298\\-167.1358\\15\\22.13282\\-166.3177\\15\\20.29844\\-165.7189\\15\\18.72643\\-165.3374\\15\\16.12563\\-165.0569\\15\\14.06328\\-165.0467\\15\\11.78314\\-165.1992\\15\\10.041\\-165.4037\\15\\6.943377\\-165.9\\15\\3.907112\\-166.2342\\15\\0.8798413\\-166.412\\15\\-0.6704234\\-166.3927\\15\\-3.197479\\-166.2017\\15\\-5.896914\\-165.9104\\15\\-9.107254\\-165.3954\\15\\-10.80505\\-165.199\\15\\-13.10921\\-165.0527\\15\\-15.15511\\-165.0575\\15\\-17.74988\\-165.3374\\15\\-19.32188\\-165.719\\15\\-21.15606\\-166.3176\\15\\-22.4703\\-166.8992\\15\\-24.35965\\-167.9235\\15\\-26.73643\\-169.6174\\15\\-28.10086\\-170.8158\\15\\-30.30834\\-173.0847\\15\\-32.50935\\-175.8985\\15\\-34.17667\\-178.4959\\15\\-35.29569\\-180.55\\15\\-37.04974\\-184.456\\15\\-37.73783\\-186.3914\\15\\-38.29824\\-188.2576\\15\\-39.0706\\-191.5646\\15\\-39.6387\\-195.4538\\15\\-39.74317\\-197.4321\\15\\-39.76262\\-199.6461\\15\\-39.67511\\-202.2437\\15\\-39.1681\\-206.1319\\15\\-38.27806\\-209.8794\\15\\-37.17265\\-213.073\\15\\-36.29976\\-215.0163\\15\\-35.26755\\-217.0504\\15\\-34.27761\\-218.7149\\15\\-32.03175\\-221.88\\15\\-29.93566\\-224.2525\\15\\-27.86196\\-226.2276\\15\\-26.44641\\-227.392\\15\\-24.39276\\-228.9052\\15\\-23.2063\\-229.6688\\15\\-20.88731\\-230.9883\\15\\-19.11937\\-231.8959\\15\\-16.00317\\-233.187\\15\\-13.31468\\-234.0595\\15\\-10.09784\\-234.9124\\15\\-7.404643\\-235.3997\\15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "91"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.029942\\-236.6653\\17\\2.010749\\-236.6631\\17\\4.446617\\-236.5433\\17\\7.80014\\-236.192\\17\\11.24284\\-235.5591\\17\\14.3904\\-234.7445\\17\\16.36345\\-234.1138\\17\\18.94065\\-233.0963\\17\\22.1008\\-231.612\\17\\24.14786\\-230.4455\\17\\25.90031\\-229.2962\\17\\28.79989\\-227.0577\\17\\30.52427\\-225.4877\\17\\32.30814\\-223.6189\\17\\33.45079\\-222.2632\\17\\34.81234\\-220.4238\\17\\36.2802\\-218.109\\17\\37.21424\\-216.3908\\17\\38.1212\\-214.5175\\17\\39.37437\\-211.2721\\17\\40.25782\\-208.0095\\17\\40.97256\\-204.1384\\17\\41.16975\\-201.4004\\17\\41.194\\-197.9985\\17\\40.995\\-194.4936\\17\\40.12784\\-189.6766\\17\\38.99094\\-185.823\\17\\37.74787\\-182.6521\\17\\36.88046\\-180.7916\\17\\35.49171\\-178.2528\\17\\34.59517\\-176.8215\\17\\33.08762\\-174.694\\17\\31.4337\\-172.7147\\17\\29.65073\\-170.9631\\17\\28.23744\\-169.74\\17\\26.13827\\-168.256\\17\\23.89013\\-167.0711\\17\\21.29716\\-166.1405\\17\\19.91508\\-165.8356\\17\\17.64164\\-165.5893\\17\\16.16661\\-165.5578\\17\\13.18897\\-165.7594\\17\\9.827169\\-166.2907\\17\\9.030597\\-166.4862\\17\\5.331411\\-167.0857\\17\\2.805104\\-167.2884\\17\\0.5181172\\-167.3798\\17\\-2.145707\\-167.2692\\17\\-4.359952\\-167.0851\\17\\-8.052878\\-166.4862\\17\\-8.839521\\-166.2936\\17\\-12.21871\\-165.7586\\17\\-14.4383\\-165.5712\\17\\-16.64768\\-165.5859\\17\\-18.93849\\-165.8356\\17\\-20.32041\\-166.1404\\17\\-22.96261\\-167.1066\\17\\-25.16241\\-168.2557\\17\\-27.26087\\-169.74\\17\\-28.67417\\-170.9631\\17\\-30.45713\\-172.7147\\17\\-32.11098\\-174.694\\17\\-33.61861\\-176.8215\\17\\-34.51515\\-178.2528\\17\\-35.90389\\-180.7916\\17\\-36.77374\\-182.6609\\17\\-38.05385\\-185.9387\\17\\-39.1563\\-189.6925\\17\\-40.01937\\-194.4906\\17\\-40.22412\\-197.8868\\17\\-40.25567\\-200.0251\\17\\-39.99991\\-204.1131\\17\\-39.27728\\-208.04\\17\\-38.3979\\-211.2717\\17\\-37.14464\\-214.5175\\17\\-36.23768\\-216.3908\\17\\-35.30364\\-218.109\\17\\-33.83577\\-220.4238\\17\\-32.47423\\-222.2632\\17\\-31.33158\\-223.6189\\17\\-29.5477\\-225.4877\\17\\-27.82333\\-227.0577\\17\\-24.92375\\-229.2962\\17\\-23.1713\\-230.4455\\17\\-21.11721\\-231.6143\\17\\-17.96264\\-233.0968\\17\\-15.38684\\-234.1138\\17\\-12.07484\\-235.1296\\17\\-8.607195\\-235.8893\\17\\-6.823508\\-236.192\\17\\-3.461445\\-236.5527\\17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "91"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.683462\\-237.1808\\19\\-0.3255929\\-237.2869\\19\\1.98873\\-237.2744\\19\\6.102846\\-236.9748\\19\\8.808264\\-236.6017\\19\\11.8226\\-236.0039\\19\\15.15961\\-235.084\\19\\17.59692\\-234.2435\\19\\21.17103\\-232.6884\\19\\23.70801\\-231.3148\\19\\25.63118\\-230.0909\\19\\27.22925\\-228.9643\\19\\29.64411\\-226.9581\\19\\31.27211\\-225.3938\\19\\32.6134\\-223.9785\\19\\33.65456\\-222.7374\\19\\34.92638\\-221.0197\\19\\36.92345\\-217.8707\\19\\37.80421\\-216.1634\\19\\39.01139\\-213.4186\\19\\40.21777\\-209.8514\\19\\40.93425\\-206.8082\\19\\41.44651\\-203.388\\19\\41.53868\\-201.9218\\19\\41.58962\\-198.2017\\19\\41.47086\\-195.6101\\19\\40.99016\\-192.0179\\19\\40.49805\\-189.7695\\19\\39.78902\\-187.1465\\19\\38.0587\\-182.4983\\19\\37.23079\\-180.7453\\19\\35.86929\\-178.3167\\19\\34.26572\\-175.836\\19\\33.18003\\-174.382\\19\\31.90347\\-172.8926\\19\\29.2744\\-170.4186\\19\\27.71636\\-169.2266\\19\\26.30185\\-168.3265\\19\\24.7761\\-167.5538\\19\\23.44883\\-167.0246\\19\\21.57928\\-166.4988\\19\\19.73483\\-166.2275\\19\\17.51628\\-166.082\\19\\13.82242\\-166.4349\\19\\11.24808\\-166.8884\\19\\6.648745\\-167.8427\\19\\2.705294\\-168.2977\\19\\-0.3347399\\-168.3679\\19\\-2.307163\\-168.2352\\19\\-5.671096\\-167.8429\\19\\-10.26944\\-166.8886\\19\\-14.32032\\-166.2309\\19\\-16.49104\\-166.0875\\19\\-19.59993\\-166.3339\\19\\-21.13187\\-166.6263\\19\\-23.80653\\-167.5589\\19\\-25.32434\\-168.3261\\19\\-26.7399\\-169.2267\\19\\-28.29752\\-170.4184\\19\\-30.92687\\-172.8926\\19\\-32.10453\\-174.2648\\19\\-33.28954\\-175.8364\\19\\-34.89272\\-178.3167\\19\\-36.25507\\-180.7468\\19\\-37.08184\\-182.4977\\19\\-38.81234\\-187.1461\\19\\-39.53094\\-189.7971\\19\\-39.99321\\-191.935\\19\\-40.49356\\-195.5714\\19\\-40.61342\\-198.1896\\19\\-40.60046\\-200.9537\\19\\-40.46983\\-203.3885\\19\\-39.96544\\-206.7779\\19\\-39.24426\\-209.8392\\19\\-38.03483\\-213.4186\\19\\-36.82764\\-216.1634\\19\\-35.94689\\-217.8707\\19\\-33.94993\\-221.0195\\19\\-32.68019\\-222.7339\\19\\-31.6368\\-223.9785\\19\\-30.29556\\-225.3937\\19\\-28.66755\\-226.958\\19\\-26.25268\\-228.9643\\19\\-24.65469\\-230.0906\\19\\-22.73081\\-231.3152\\19\\-20.19467\\-232.6883\\19\\-16.62036\\-234.2435\\19\\-14.18234\\-235.0842\\19\\-10.84966\\-236.0035\\19\\-7.831686\\-236.6017\\19\\-5.126106\\-236.9749\\19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "89"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-7.395645\\-237.1539\\21\\-5.306133\\-237.4465\\21\\-1.839133\\-237.7328\\21\\-0.2842809\\-237.7869\\21\\2.888096\\-237.7201\\21\\6.287021\\-237.4457\\21\\8.372333\\-237.1539\\21\\12.0181\\-236.4454\\21\\15.61547\\-235.4113\\21\\19.22269\\-234.0662\\21\\21.98839\\-232.7559\\21\\25.03997\\-231.0009\\21\\26.98458\\-229.6644\\21\\29.05565\\-227.992\\21\\31.54506\\-225.6577\\21\\32.48167\\-224.6909\\21\\34.09058\\-222.7743\\21\\35.60046\\-220.6714\\21\\37.31148\\-217.8795\\21\\38.7951\\-214.7482\\21\\39.74943\\-212.3699\\21\\40.51642\\-209.866\\21\\40.99348\\-208.0448\\21\\41.45464\\-205.5703\\21\\41.80071\\-202.592\\21\\41.88151\\-201.3297\\21\\41.88874\\-197.8653\\21\\41.81102\\-196.4728\\21\\41.45572\\-193.2742\\21\\40.96309\\-190.6114\\21\\40.59074\\-189.0445\\21\\39.74879\\-186.2077\\21\\38.86715\\-183.821\\21\\37.84655\\-181.5504\\21\\36.43913\\-178.8346\\21\\34.43165\\-175.7988\\21\\33.05247\\-174.0063\\21\\31.33508\\-172.1742\\21\\29.6805\\-170.6856\\21\\27.39972\\-169.0863\\21\\24.77579\\-167.7686\\21\\22.22219\\-166.998\\21\\20.05033\\-166.6939\\21\\17.04919\\-166.7386\\21\\13.51682\\-167.2449\\21\\6.849967\\-168.7165\\21\\4.290162\\-169.1081\\21\\1.848251\\-169.3105\\21\\-1.52107\\-169.2661\\21\\-4.729115\\-168.9312\\21\\-8.234799\\-168.2235\\21\\-12.55383\\-167.2427\\21\\-16.22912\\-166.7331\\21\\-19.07346\\-166.6938\\21\\-21.30426\\-167.0212\\21\\-23.31525\\-167.5782\\21\\-24.7057\\-168.1694\\21\\-26.43823\\-169.0961\\21\\-28.71857\\-170.7057\\21\\-30.35854\\-172.1742\\21\\-32.07625\\-174.0068\\21\\-33.45519\\-175.7989\\21\\-35.46249\\-178.8344\\21\\-37.13916\\-182.1024\\21\\-37.89063\\-183.8214\\21\\-38.77219\\-186.2077\\21\\-39.61443\\-189.0458\\21\\-39.98876\\-190.6182\\21\\-40.47935\\-193.2755\\21\\-40.83527\\-196.4711\\21\\-40.92815\\-199.0401\\21\\-40.82614\\-202.5875\\21\\-40.47823\\-205.5696\\21\\-40.01206\\-208.064\\21\\-39.53767\\-209.8693\\21\\-38.77287\\-212.3699\\21\\-37.81854\\-214.7482\\21\\-36.33566\\-217.8782\\21\\-34.62394\\-220.6713\\21\\-32.88985\\-223.0571\\21\\-31.49877\\-224.6991\\21\\-30.56858\\-225.6576\\21\\-28.07457\\-227.9989\\21\\-26.00935\\-229.6635\\21\\-24.12276\\-230.9619\\21\\-21.01183\\-232.7559\\21\\-18.24613\\-234.0662\\21\\-14.63894\\-235.4113\\21\\-11.04153\\-236.4454\\21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "87"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.753596\\-237.9068\\23\\-7.798041\\-237.4943\\23\\-12.49881\\-236.4653\\23\\-14.92717\\-235.7205\\23\\-17.91876\\-234.5966\\23\\-20.97709\\-233.1124\\23\\-23.39151\\-231.7868\\23\\-24.52939\\-231.0763\\23\\-26.46242\\-229.6994\\23\\-28.32055\\-228.1715\\23\\-30.59839\\-226.0416\\23\\-32.9426\\-223.4142\\23\\-34.19903\\-221.718\\23\\-35.41452\\-219.9157\\23\\-37.05581\\-216.9329\\23\\-37.93576\\-215.1135\\23\\-39.16697\\-211.8353\\23\\-40.049\\-208.7443\\23\\-40.48323\\-206.6258\\23\\-40.93272\\-203.2229\\23\\-41.04909\\-198.6833\\23\\-40.91858\\-195.6227\\23\\-40.51166\\-192.5473\\23\\-40.11248\\-190.5581\\23\\-39.25061\\-187.2482\\23\\-38.19663\\-184.3367\\23\\-37.45996\\-182.5188\\23\\-35.485\\-178.6937\\23\\-33.64775\\-175.9321\\23\\-32.37863\\-174.3356\\23\\-30.103\\-171.9627\\23\\-27.50261\\-169.9239\\23\\-24.99735\\-168.5609\\23\\-23.94234\\-168.1558\\23\\-22.20877\\-167.6713\\23\\-20.17484\\-167.3306\\23\\-17.85983\\-167.2667\\23\\-15.82807\\-167.4507\\23\\-12.94633\\-167.9768\\23\\-7.278864\\-169.34\\23\\-5.3747\\-169.7353\\23\\-2.782075\\-170.1234\\23\\-0.1803772\\-170.3169\\23\\1.211557\\-170.3144\\23\\3.757592\\-170.1218\\23\\6.351666\\-169.7354\\23\\8.256512\\-169.3402\\23\\13.90996\\-167.9789\\23\\16.61414\\-167.4835\\23\\18.83676\\-167.2667\\23\\21.15127\\-167.3306\\23\\23.17904\\-167.6704\\23\\25.95107\\-168.5521\\23\\28.50536\\-169.9458\\23\\30.09743\\-171.1355\\23\\31.61209\\-172.4674\\23\\33.33221\\-174.3126\\23\\34.67731\\-175.9927\\23\\36.46438\\-178.6976\\23\\38.05774\\-181.6987\\23\\38.93901\\-183.6968\\23\\40.22915\\-187.2592\\23\\41.07985\\-190.5024\\23\\41.47528\\-192.4789\\23\\41.89619\\-195.6398\\23\\42.01239\\-198.1642\\23\\42.0208\\-200.5878\\23\\41.90052\\-203.3836\\23\\41.46058\\-206.6285\\23\\41.02722\\-208.7396\\23\\40.14355\\-211.8357\\23\\38.91092\\-215.1169\\23\\38.04168\\-216.9199\\23\\36.39198\\-219.9142\\23\\35.17476\\-221.7196\\23\\33.90102\\-223.4383\\23\\31.57782\\-226.0384\\23\\28.89132\\-228.5272\\23\\27.4328\\-229.703\\23\\24.36909\\-231.7857\\23\\21.95364\\-233.1124\\23\\18.89659\\-234.5961\\23\\15.90339\\-235.7207\\23\\13.48157\\-236.4646\\23\\8.774865\\-237.4942\\23\\5.767869\\-237.9031\\23\\0.4896935\\-238.1725\\23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "88"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "16"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "4.048399\\-238.3469\\25\\7.277422\\-238.0141\\25\\9.884943\\-237.5736\\25\\13.97069\\-236.601\\25\\16.38051\\-235.8169\\25\\19.9451\\-234.3963\\25\\21.37597\\-233.7215\\25\\24.86881\\-231.7308\\25\\26.40133\\-230.7061\\25\\28.8117\\-228.8449\\25\\31.13347\\-226.7313\\25\\33.31998\\-224.3756\\25\\35.48628\\-221.5382\\25\\36.58189\\-219.8341\\25\\38.12429\\-217.0754\\25\\38.92406\\-215.3398\\25\\39.79585\\-213.1714\\25\\40.99886\\-209.2183\\25\\41.42735\\-207.3092\\25\\41.85594\\-204.6539\\25\\42.12229\\-200.6738\\25\\42.12553\\-198.9667\\25\\41.89124\\-194.9655\\25\\41.41027\\-191.7418\\25\\40.62634\\-188.4188\\25\\39.39574\\-184.7328\\25\\38.24226\\-182.1304\\25\\36.95335\\-179.5813\\25\\35.21127\\-176.7896\\25\\33.375\\-174.4627\\25\\32.22188\\-173.2283\\25\\29.96692\\-171.2278\\25\\27.81486\\-169.8414\\25\\25.13781\\-168.6561\\25\\23.87956\\-168.305\\25\\21.90726\\-167.9758\\25\\19.20375\\-167.9256\\25\\17.32254\\-168.1313\\25\\14.95999\\-168.5373\\25\\12.37971\\-169.1585\\25\\8.008792\\-170.3103\\25\\4.971269\\-170.8907\\25\\2.334427\\-171.2197\\25\\0.4871397\\-171.2889\\25\\-1.371287\\-171.2183\\25\\-4.08017\\-170.8727\\25\\-7.032401\\-170.3103\\25\\-11.41537\\-169.1541\\25\\-15.55213\\-168.2392\\25\\-18.22731\\-167.9256\\25\\-20.93111\\-167.9758\\25\\-22.83704\\-168.2807\\25\\-24.13958\\-168.6436\\25\\-25.78547\\-169.3058\\25\\-27.90437\\-170.4867\\25\\-29.13807\\-171.3391\\25\\-31.32607\\-173.3061\\25\\-32.48741\\-174.5445\\25\\-34.35188\\-176.9543\\25\\-35.94552\\-179.5131\\25\\-37.20418\\-181.9399\\25\\-38.41994\\-184.7355\\25\\-39.65216\\-188.4303\\25\\-40.46104\\-191.8705\\25\\-40.91464\\-194.9659\\25\\-41.14793\\-198.68\\25\\-41.16267\\-199.9126\\25\\-40.88074\\-204.6442\\25\\-40.42034\\-207.4778\\25\\-40.06873\\-209.0601\\25\\-38.82009\\-213.1691\\25\\-38.15368\\-214.8128\\25\\-36.54058\\-218.1881\\25\\-35.60959\\-219.8293\\25\\-34.50632\\-221.5435\\25\\-32.34322\\-224.3759\\25\\-30.18397\\-226.7013\\25\\-27.83978\\-228.8404\\25\\-25.41993\\-230.7106\\25\\-23.88605\\-231.7353\\25\\-20.39869\\-233.722\\25\\-18.95782\\-234.4007\\25\\-15.40254\\-235.8178\\25\\-12.97344\\-236.5978\\25\\-10.60687\\-237.2122\\25\\-6.377011\\-238.0053\\25\\-2.883398\\-238.3622\\25\\0.4586823\\-238.4255\\25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "93"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.03459688\\-238.6139\\27\\4.904679\\-238.4729\\27\\7.818363\\-238.1249\\27\\9.986352\\-237.7584\\27\\13.27563\\-236.9786\\27\\16.60685\\-235.917\\27\\18.22424\\-235.2912\\27\\22.26905\\-233.4154\\27\\24.6817\\-231.9871\\27\\25.95901\\-231.1438\\27\\28.17739\\-229.4771\\27\\29.45213\\-228.4237\\27\\31.67609\\-226.2693\\27\\33.61864\\-224.0833\\27\\35.45016\\-221.6339\\27\\36.9472\\-219.2343\\27\\38.94528\\-215.2966\\27\\39.83692\\-213.0724\\27\\40.61589\\-210.6761\\27\\41.40452\\-207.3687\\27\\41.89172\\-204.0721\\27\\42.06532\\-200.765\\27\\42.08072\\-198.9393\\27\\41.88657\\-195.2258\\27\\41.48308\\-192.4421\\27\\41.03865\\-190.2398\\27\\40.21426\\-187.2357\\27\\39.06013\\-184.1378\\27\\38.06069\\-181.8863\\27\\36.43656\\-178.8604\\27\\35.03962\\-176.8033\\27\\33.86467\\-175.2868\\27\\32.52273\\-173.8039\\27\\31.52626\\-172.8636\\27\\29.41476\\-171.2155\\27\\27.92555\\-170.3192\\27\\26.40118\\-169.5958\\27\\24.98025\\-169.1189\\27\\22.60722\\-168.6688\\27\\20.19957\\-168.5711\\27\\17.88089\\-168.7913\\27\\16.07779\\-169.0979\\27\\14.02724\\-169.5716\\27\\9.145086\\-170.916\\27\\6.601874\\-171.5438\\27\\2.729523\\-172.1479\\27\\0.1094743\\-172.2408\\27\\-1.757627\\-172.1476\\27\\-5.622898\\-171.5443\\27\\-8.136178\\-170.9295\\27\\-13.40357\\-169.4913\\27\\-15.09846\\-169.0974\\27\\-16.90388\\-168.7914\\27\\-19.22301\\-168.5711\\27\\-21.63097\\-168.6688\\27\\-23.58984\\-169.0176\\27\\-25.42688\\-169.5959\\27\\-26.93791\\-170.3158\\27\\-28.22816\\-171.0692\\27\\-29.96432\\-172.3705\\27\\-31.69272\\-173.9609\\27\\-32.89073\\-175.2887\\27\\-34.87782\\-177.9464\\27\\-36.23392\\-180.1901\\27\\-37.38808\\-182.5407\\27\\-38.08374\\-184.1379\\27\\-39.23799\\-187.2373\\27\\-40.11014\\-190.525\\27\\-40.51105\\-192.4794\\27\\-40.91004\\-195.2247\\27\\-41.02796\\-197.2805\\27\\-41.10802\\-200.3053\\27\\-40.91162\\-204.097\\27\\-40.4935\\-206.9815\\27\\-39.98569\\-209.3535\\27\\-38.86222\\-213.0662\\27\\-37.98161\\-215.2875\\27\\-37.17999\\-217.013\\27\\-35.96891\\-219.2391\\27\\-34.90492\\-220.9825\\27\\-33.97001\\-222.3341\\27\\-32.40631\\-224.3739\\27\\-30.68747\\-226.2804\\27\\-28.80373\\-228.136\\27\\-27.8726\\-228.9475\\27\\-25.56764\\-230.7291\\27\\-23.38526\\-232.1795\\27\\-21.05225\\-233.5269\\27\\-16.71018\\-235.533\\27\\-13.36723\\-236.6658\\27\\-8.980839\\-237.7621\\27\\-6.912771\\-238.1162\\27\\-3.682885\\-238.4816\\27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "86"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.413155\\-238.7541\\29\\5.023041\\-238.5659\\29\\8.150431\\-238.1874\\29\\10.27469\\-237.7945\\29\\13.26938\\-237.0727\\29\\17.56068\\-235.6528\\29\\21.21932\\-233.993\\29\\22.79973\\-233.1467\\29\\26.12589\\-231.0507\\29\\28.66479\\-229.0784\\29\\30.45506\\-227.4759\\29\\33.03888\\-224.7294\\29\\33.99401\\-223.5474\\29\\36.15505\\-220.4792\\29\\37.20221\\-218.6946\\29\\38.90091\\-215.2383\\29\\39.80353\\-212.8287\\29\\41.01338\\-208.7018\\29\\41.45699\\-206.4105\\29\\41.84095\\-203.4432\\29\\41.95745\\-200.293\\29\\41.83922\\-196.0952\\29\\41.4432\\-193.0125\\29\\40.96298\\-190.5797\\29\\40.09978\\-187.421\\29\\38.52546\\-183.272\\29\\37.61929\\-181.3711\\29\\35.48587\\-177.8592\\29\\34.25529\\-176.1794\\29\\32.52202\\-174.2382\\29\\30.02571\\-172.1448\\29\\28.87105\\-171.3671\\29\\26.30465\\-170.1524\\29\\23.79359\\-169.4824\\29\\22.00226\\-169.2916\\29\\20.29381\\-169.3234\\29\\18.33458\\-169.5027\\29\\14.76035\\-170.2191\\29\\11.33772\\-171.2109\\29\\7.438661\\-172.2641\\29\\5.378239\\-172.7119\\29\\3.424526\\-172.9936\\29\\0.4580991\\-173.1884\\29\\-2.457453\\-172.9929\\29\\-4.401687\\-172.7118\\29\\-6.824599\\-172.1784\\29\\-11.68959\\-170.7874\\29\\-15.42822\\-169.8439\\29\\-17.35658\\-169.503\\29\\-19.31737\\-169.3233\\29\\-21.02546\\-169.2916\\29\\-22.81627\\-169.4822\\29\\-25.33453\\-170.1537\\29\\-27.89765\\-171.3699\\29\\-29.0554\\-172.1488\\29\\-31.54563\\-174.2385\\29\\-33.27873\\-176.1794\\29\\-34.50931\\-177.8592\\29\\-36.64312\\-181.3722\\29\\-37.54911\\-183.2725\\29\\-39.12331\\-187.4211\\29\\-39.98946\\-190.5872\\29\\-40.46658\\-193.0122\\29\\-40.86082\\-196.0722\\29\\-40.97685\\-198.9644\\29\\-40.93272\\-202.2657\\29\\-40.85752\\-203.4983\\29\\-40.4788\\-206.4231\\29\\-40.03172\\-208.7132\\29\\-38.82713\\-212.8279\\29\\-37.92532\\-215.2365\\29\\-36.22628\\-218.6937\\29\\-35.17873\\-220.4788\\29\\-33.01707\\-223.5479\\29\\-32.06234\\-224.7295\\29\\-29.65695\\-227.3036\\29\\-27.79914\\-228.9852\\29\\-26.26655\\-230.21\\29\\-24.12762\\-231.7298\\29\\-22.121\\-232.9879\\29\\-20.16258\\-234.0261\\29\\-16.4124\\-235.7099\\29\\-12.28331\\-237.077\\29\\-9.271958\\-237.7982\\29\\-7.467124\\-238.1452\\29\\-4.080799\\-238.5643\\29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "84"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.4901226\\-238.7366\\31\\4.307921\\-238.6424\\31\\7.446903\\-238.2924\\31\\9.917973\\-237.8726\\31\\13.9465\\-236.8512\\31\\17.67932\\-235.5356\\31\\21.27737\\-233.9167\\31\\25.13845\\-231.6337\\31\\27.64256\\-229.787\\31\\28.9626\\-228.6737\\31\\31.36633\\-226.3819\\31\\33.49854\\-223.9586\\31\\35.39708\\-221.2745\\31\\37.55659\\-217.6499\\31\\38.74607\\-215.0237\\31\\39.73824\\-212.4469\\31\\40.47105\\-209.8965\\31\\40.98198\\-207.8148\\31\\41.40693\\-205.2838\\31\\41.68865\\-201.8148\\31\\41.75964\\-199.5409\\31\\41.41822\\-194.4963\\31\\40.99544\\-191.8885\\31\\40.09607\\-188.3015\\31\\39.31947\\-186.007\\31\\37.98592\\-182.7767\\31\\37.09343\\-181.0414\\31\\35.54602\\-178.4887\\31\\33.86545\\-176.2896\\31\\32.62204\\-174.9317\\31\\31.27496\\-173.7163\\31\\29.66087\\-172.4931\\31\\28.41368\\-171.7478\\31\\26.78667\\-171.0172\\31\\24.1816\\-170.2549\\31\\21.31641\\-170.0368\\31\\19.59637\\-170.1471\\31\\17.39042\\-170.4745\\31\\15.19672\\-170.9739\\31\\7.979877\\-173.0299\\31\\4.596751\\-173.7646\\31\\1.916388\\-174.0483\\31\\-0.6310761\\-174.0825\\31\\-3.613085\\-173.7657\\31\\-7.004896\\-173.0296\\31\\-12.193\\-171.526\\31\\-16.41236\\-170.4641\\31\\-18.61145\\-170.1465\\31\\-20.35093\\-170.0359\\31\\-23.20504\\-170.2549\\31\\-25.8102\\-171.0172\\31\\-27.43696\\-171.7478\\31\\-28.6843\\-172.4931\\31\\-30.2984\\-173.7163\\31\\-31.64548\\-174.9317\\31\\-32.88889\\-176.2896\\31\\-34.56945\\-178.4887\\31\\-36.11686\\-181.0414\\31\\-37.00936\\-182.7767\\31\\-38.34291\\-186.007\\31\\-39.11985\\-188.3023\\31\\-39.98562\\-191.7552\\31\\-40.4445\\-194.524\\31\\-40.76713\\-198.9238\\31\\-40.70885\\-201.8533\\31\\-40.46113\\-205.0827\\31\\-40.02164\\-207.7572\\31\\-39.20723\\-210.9518\\31\\-38.76167\\-212.4469\\31\\-37.76955\\-215.0235\\31\\-36.58002\\-217.6499\\31\\-34.42748\\-221.2671\\31\\-32.52197\\-223.9586\\31\\-30.99468\\-225.7379\\31\\-28.32024\\-228.3686\\31\\-26.19358\\-230.1669\\31\\-24.15025\\-231.641\\31\\-20.29691\\-233.9186\\31\\-17.91772\\-235.0095\\31\\-15.4289\\-236.0352\\31\\-12.9876\\-236.8521\\31\\-8.942101\\-237.8723\\31\\-6.478204\\-238.292\\31\\-3.542845\\-238.6289\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "90"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.4953977\\-238.7004\\33\\2.750556\\-238.6575\\33\\6.656632\\-238.3173\\33\\9.024737\\-237.942\\33\\13.48291\\-236.8813\\33\\16.08524\\-236.0259\\33\\19.23837\\-234.7399\\33\\21.7297\\-233.4525\\33\\24.23479\\-231.9745\\33\\26.6918\\-230.2872\\33\\29.07076\\-228.273\\33\\32.02996\\-225.3131\\33\\33.16754\\-223.9576\\33\\35.50502\\-220.6669\\33\\37.07004\\-217.9509\\33\\37.89184\\-216.2903\\33\\39.45831\\-212.2763\\33\\40.24522\\-209.568\\33\\40.99987\\-205.9013\\33\\41.36486\\-202.1829\\33\\41.44279\\-200.4987\\33\\41.33272\\-197.2349\\33\\40.95243\\-193.6895\\33\\40.10103\\-189.631\\33\\39.23831\\-186.8839\\33\\38.54536\\-184.9983\\33\\37.7583\\-183.2423\\33\\36.59358\\-180.9804\\33\\35.20951\\-178.8038\\33\\33.4445\\-176.5375\\33\\32.18155\\-175.2398\\33\\30.51949\\-173.8254\\33\\28.40141\\-172.493\\33\\26.19894\\-171.5501\\33\\25.01247\\-171.2166\\33\\23.32162\\-170.953\\33\\20.72319\\-170.8793\\33\\18.1765\\-171.1597\\33\\16.3128\\-171.5532\\33\\12.56025\\-172.5728\\33\\9.754065\\-173.4435\\33\\7.603109\\-174.0198\\33\\5.220454\\-174.5403\\33\\3.43474\\-174.8145\\33\\1.153885\\-174.9719\\33\\-0.3174352\\-174.9824\\33\\-2.459932\\-174.8144\\33\\-4.238948\\-174.5412\\33\\-6.626546\\-174.0198\\33\\-8.777449\\-173.4435\\33\\-13.63095\\-171.9926\\33\\-16.07005\\-171.3863\\33\\-18.26521\\-171.0082\\33\\-19.89178\\-170.8556\\33\\-22.34499\\-170.953\\33\\-24.03591\\-171.2166\\33\\-25.73358\\-171.7285\\33\\-28.26204\\-172.9639\\33\\-29.54293\\-173.8254\\33\\-31.20499\\-175.2398\\33\\-32.46794\\-176.5375\\33\\-34.23293\\-178.8041\\33\\-35.61702\\-180.9804\\33\\-36.78174\\-183.2423\\33\\-37.56881\\-184.9983\\33\\-38.26184\\-186.884\\33\\-39.12965\\-189.6468\\33\\-40.01433\\-193.8777\\33\\-40.3143\\-196.8376\\33\\-40.4475\\-198.8009\\33\\-40.38829\\-202.2036\\33\\-40.04157\\-205.8176\\33\\-39.26876\\-209.5669\\33\\-38.48176\\-212.2762\\33\\-36.91528\\-216.2903\\33\\-36.09344\\-217.9508\\33\\-34.97908\\-219.9547\\33\\-33.6489\\-221.9684\\33\\-32.19098\\-223.9576\\33\\-30.47704\\-225.9456\\33\\-28.08905\\-228.2809\\33\\-25.72135\\-230.283\\33\\-23.94052\\-231.5493\\33\\-21.15728\\-233.2631\\33\\-18.26126\\-234.7402\\33\\-15.10819\\-236.0256\\33\\-12.51236\\-236.8809\\33\\-8.047938\\-237.9421\\33\\-5.483054\\-238.3414\\33\\-2.218568\\-238.6264\\33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "85"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.000859\\-238.4568\\35\\2.036119\\-238.4849\\35\\4.143352\\-238.3752\\35\\6.613834\\-238.1095\\35\\9.514951\\-237.627\\35\\12.33269\\-236.9785\\35\\15.53581\\-235.954\\35\\19.42916\\-234.3671\\35\\22.94777\\-232.4604\\35\\25.02822\\-231.1092\\35\\27.5958\\-229.1517\\35\\29.03459\\-227.8704\\35\\31.28551\\-225.6089\\35\\32.91689\\-223.6862\\35\\35.34478\\-220.2166\\35\\36.57921\\-218.0723\\35\\37.74644\\-215.6492\\35\\38.42889\\-213.9913\\35\\39.35489\\-211.3383\\35\\40.40844\\-206.7554\\35\\40.92302\\-202.2714\\35\\41.00206\\-199.7695\\35\\40.93535\\-197.9866\\35\\40.66289\\-195.0022\\35\\40.07468\\-191.502\\35\\39.24739\\-188.4096\\35\\38.50623\\-186.2061\\35\\36.90047\\-182.6232\\35\\36.08315\\-181.1808\\35\\34.83999\\-179.2665\\35\\32.98299\\-176.9483\\35\\30.91133\\-174.9926\\35\\29.24399\\-173.817\\35\\26.68323\\-172.5698\\35\\25.37802\\-172.1649\\35\\23.34433\\-171.7898\\35\\20.98104\\-171.7251\\35\\19.32048\\-171.8611\\35\\16.92815\\-172.2928\\35\\14.67541\\-172.8482\\35\\10.65421\\-174.0508\\35\\8.156789\\-174.7474\\35\\4.922141\\-175.4625\\35\\2.723269\\-175.7374\\35\\0.4495099\\-175.8301\\35\\-1.732899\\-175.7384\\35\\-3.945446\\-175.4625\\35\\-7.180226\\-174.7474\\35\\-12.94566\\-173.0651\\35\\-15.53978\\-172.3788\\35\\-18.24297\\-171.8915\\35\\-20.00237\\-171.7255\\35\\-22.36777\\-171.7898\\35\\-24.40134\\-172.1649\\35\\-25.7159\\-172.5713\\35\\-28.26852\\-173.8174\\35\\-29.93477\\-174.9926\\35\\-32.00647\\-176.9484\\35\\-33.86517\\-179.27\\35\\-35.10661\\-181.1808\\35\\-35.92391\\-182.6232\\35\\-37.53215\\-186.2058\\35\\-38.27248\\-188.4124\\35\\-39.10156\\-191.5144\\35\\-39.68585\\-194.9945\\35\\-39.97252\\-198.107\\35\\-40.01736\\-201.139\\35\\-39.59502\\-205.6914\\35\\-39.2518\\-207.7293\\35\\-38.3785\\-211.3382\\35\\-37.45229\\-213.9914\\35\\-36.76987\\-215.6492\\35\\-35.60251\\-218.0725\\35\\-34.37028\\-220.2115\\35\\-31.94033\\-223.6862\\35\\-30.30895\\-225.6089\\35\\-28.05807\\-227.8703\\35\\-26.61924\\-229.1517\\35\\-24.0249\\-231.129\\35\\-21.98286\\-232.4527\\35\\-18.45258\\-234.3672\\35\\-14.5715\\-235.9517\\35\\-11.35603\\-236.9786\\35\\-8.538386\\-237.627\\35\\-5.602347\\-238.1122\\35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "87"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.61614\\-237.6672\\37\\-10.98535\\-236.7354\\37\\-14.51257\\-235.6436\\37\\-17.65323\\-234.3289\\37\\-21.22044\\-232.4753\\37\\-23.51953\\-231.0013\\37\\-24.98857\\-229.9255\\37\\-27.8242\\-227.5122\\37\\-29.54052\\-225.7867\\37\\-30.79133\\-224.3732\\37\\-32.45856\\-222.2233\\37\\-33.85873\\-220.1125\\37\\-35.11557\\-217.9072\\37\\-35.85318\\-216.4401\\37\\-37.16885\\-213.3141\\37\\-38.003\\-210.7243\\37\\-38.43382\\-209.0325\\37\\-39.0409\\-205.897\\37\\-39.43265\\-202.0462\\37\\-39.37213\\-197.2073\\37\\-38.91679\\-193.5749\\37\\-38.23898\\-190.3668\\37\\-37.60628\\-188.2453\\37\\-36.71917\\-185.776\\37\\-35.76009\\-183.722\\37\\-34.08898\\-180.7492\\37\\-33.02569\\-179.2651\\37\\-31.76208\\-177.7688\\37\\-30.65273\\-176.6622\\37\\-29.07246\\-175.3406\\37\\-27.88852\\-174.5473\\37\\-26.47118\\-173.8304\\37\\-25.22582\\-173.3481\\37\\-23.84299\\-172.9659\\37\\-21.62577\\-172.6531\\37\\-20.26233\\-172.6532\\37\\-17.86761\\-172.8491\\37\\-14.26632\\-173.589\\37\\-8.348366\\-175.2729\\37\\-4.379842\\-176.2158\\37\\-2.388492\\-176.495\\37\\0.1449418\\-176.6609\\37\\1.875269\\-176.6272\\37\\5.358457\\-176.2152\\37\\9.324851\\-175.2729\\37\\15.23803\\-173.5915\\37\\18.02307\\-172.979\\37\\21.24292\\-172.6531\\37\\22.60233\\-172.6531\\37\\24.81956\\-172.9659\\37\\26.86782\\-173.5768\\37\\28.85266\\-174.5411\\37\\30.04928\\-175.3407\\37\\31.6293\\-176.6622\\37\\32.73854\\-177.7687\\37\\33.68728\\-178.8876\\37\\35.07052\\-180.757\\37\\36.73661\\-183.7219\\37\\37.72141\\-185.852\\37\\38.25498\\-187.2657\\37\\39.2155\\-190.3667\\37\\39.89351\\-193.5759\\37\\40.34883\\-197.2083\\37\\40.40963\\-202.048\\37\\40.01748\\-205.8969\\37\\39.41037\\-209.0326\\37\\38.99327\\-210.6581\\37\\37.94262\\-213.8319\\37\\36.82975\\-216.4401\\37\\36.09213\\-217.9072\\37\\34.83552\\-220.1121\\37\\33.43513\\-222.2233\\37\\31.76789\\-224.3732\\37\\30.51708\\-225.7867\\37\\28.80077\\-227.5122\\37\\25.96513\\-229.9255\\37\\24.49606\\-231.0013\\37\\22.19667\\-232.4754\\37\\18.62989\\-234.3289\\37\\16.48496\\-235.2552\\37\\14.84352\\-235.8546\\37\\11.9587\\-236.7358\\37\\7.592703\\-237.6672\\37\\5.001103\\-237.9932\\37\\2.409481\\-238.1873\\37\\-1.532403\\-238.1847\\37\\-4.024491\\-237.9932\\37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "83"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.702011\\-237.6129\\39\\-1.211487\\-237.7944\\39\\2.181149\\-237.7945\\39\\4.685203\\-237.6135\\39\\7.860736\\-237.1998\\39\\11.88129\\-236.3153\\39\\14.14131\\-235.6363\\39\\16.36092\\-234.8151\\39\\18.63998\\-233.816\\39\\20.80708\\-232.6991\\39\\23.50611\\-231.068\\39\\26.56095\\-228.7745\\39\\28.37767\\-227.1652\\39\\30.90448\\-224.5071\\39\\32.53694\\-222.4393\\39\\33.87878\\-220.5102\\39\\35.12926\\-218.4678\\39\\36.53879\\-215.611\\39\\37.93586\\-211.9901\\39\\38.7508\\-209.0889\\39\\39.34272\\-205.9254\\39\\39.67249\\-203.3363\\39\\39.78941\\-200.5734\\39\\39.75761\\-198.8169\\39\\39.51723\\-195.7409\\39\\39.00574\\-192.5483\\39\\38.46976\\-190.2929\\39\\37.64039\\-187.6277\\39\\36.67556\\-185.2806\\39\\35.34\\-182.7097\\39\\33.48629\\-179.905\\39\\32.07675\\-178.2744\\39\\29.92944\\-176.3831\\39\\28.30461\\-175.3548\\39\\26.20537\\-174.3951\\39\\23.68919\\-173.7934\\39\\22.16423\\-173.6378\\39\\19.27844\\-173.7463\\39\\15.70568\\-174.3975\\39\\8.223543\\-176.3965\\39\\5.378874\\-177.0056\\39\\3.461764\\-177.2816\\39\\1.472076\\-177.4337\\39\\-0.4933432\\-177.4327\\39\\-2.466461\\-177.2858\\39\\-4.045619\\-177.0645\\39\\-7.23469\\-176.3978\\39\\-14.72956\\-174.3975\\39\\-18.29946\\-173.7507\\39\\-21.1878\\-173.6378\\39\\-22.71219\\-173.7935\\39\\-24.21482\\-174.0921\\39\\-26.08353\\-174.7365\\39\\-27.50921\\-175.4565\\39\\-28.95288\\-176.3831\\39\\-31.10019\\-178.2744\\39\\-32.50885\\-179.9039\\39\\-34.01783\\-182.1251\\39\\-35.48392\\-184.8132\\39\\-36.6627\\-187.6236\\39\\-37.48743\\-190.283\\39\\-38.03294\\-192.571\\39\\-38.54067\\-195.7409\\39\\-38.78103\\-198.8165\\39\\-38.81285\\-200.5735\\39\\-38.69593\\-203.3363\\39\\-38.36618\\-205.9219\\39\\-37.77484\\-209.0889\\39\\-36.61217\\-212.9868\\39\\-35.56226\\-215.6108\\39\\-34.15272\\-218.4678\\39\\-32.90222\\-220.5102\\39\\-31.56038\\-222.4393\\39\\-29.92792\\-224.5071\\39\\-27.40102\\-227.1654\\39\\-25.58439\\-228.7745\\39\\-22.52944\\-231.0681\\39\\-19.83947\\-232.6957\\39\\-17.66599\\-233.815\\39\\-15.3811\\-234.8158\\39\\-13.51527\\-235.513\\39\\-10.39749\\-236.4391\\39\\-6.884175\\-237.1998\\39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "84"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.3400956\\-237.2985\\41\\-3.233385\\-237.1493\\41\\-7.737672\\-236.492\\41\\-10.04799\\-235.9853\\41\\-14.54029\\-234.5463\\41\\-17.77674\\-233.0933\\41\\-19.93046\\-231.9582\\41\\-21.18027\\-231.2044\\41\\-24.37808\\-228.9078\\41\\-25.76576\\-227.7526\\41\\-27.87546\\-225.7523\\41\\-28.98915\\-224.5288\\41\\-30.57085\\-222.6016\\41\\-32.3194\\-220.1352\\41\\-33.69656\\-217.7817\\41\\-35.36361\\-214.1454\\41\\-36.01065\\-212.458\\41\\-36.9594\\-209.23\\41\\-37.35035\\-207.4368\\41\\-37.71606\\-205.0721\\41\\-37.97752\\-202.5728\\41\\-38.0004\\-198.8415\\41\\-37.85862\\-196.5713\\41\\-37.44385\\-193.8403\\41\\-36.6803\\-190.4399\\41\\-35.73935\\-187.5616\\41\\-34.26327\\-184.3181\\41\\-33.04035\\-182.2709\\41\\-32.26568\\-181.1462\\41\\-30.9919\\-179.5856\\41\\-29.96336\\-178.5467\\41\\-28.67622\\-177.472\\41\\-26.37898\\-176.059\\41\\-24.77358\\-175.3962\\41\\-22.06712\\-174.7763\\41\\-20.15941\\-174.6766\\41\\-18.57177\\-174.7414\\41\\-16.59039\\-174.9821\\41\\-14.53618\\-175.3825\\41\\-7.747453\\-177.0903\\41\\-6.204718\\-177.444\\41\\-3.500894\\-177.9178\\41\\-0.8682781\\-178.1636\\41\\1.530129\\-178.186\\41\\4.511961\\-177.9179\\41\\8.733384\\-177.0879\\41\\15.51274\\-175.3825\\41\\17.56694\\-174.9821\\41\\19.54817\\-174.7414\\41\\21.12675\\-174.676\\41\\23.05467\\-174.777\\41\\25.82758\\-175.4239\\41\\27.34306\\-176.0523\\41\\29.65279\\-177.472\\41\\30.93995\\-178.5467\\41\\31.96724\\-179.5837\\41\\33.43142\\-181.3729\\41\\34.50909\\-182.9986\\41\\35.295\\-184.4318\\41\\36.3792\\-186.71\\41\\37.36567\\-189.5115\\41\\37.84663\\-191.1509\\41\\38.42079\\-193.8375\\41\\38.83489\\-196.5692\\41\\38.97879\\-198.8264\\41\\38.95415\\-202.5714\\41\\38.69285\\-205.0701\\41\\38.26485\\-207.6837\\41\\37.50433\\-210.8386\\41\\36.33387\\-214.1667\\41\\34.67833\\-217.7717\\41\\33.29601\\-220.1352\\41\\31.54742\\-222.6016\\41\\29.96554\\-224.5292\\41\\28.83795\\-225.7647\\41\\26.74392\\-227.7472\\41\\25.35453\\-228.9079\\41\\22.14914\\-231.209\\41\\18.73229\\-233.1064\\41\\15.43164\\-234.5793\\41\\11.00961\\-235.9893\\41\\8.710009\\-236.4923\\41\\4.328912\\-237.12\\41\\1.313616\\-237.2967\\41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "84"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.955154\\-236.2846\\43\\-2.707301\\-236.501\\43\\1.202072\\-236.6001\\43\\4.107514\\-236.4532\\43\\5.930137\\-236.2856\\43\\8.445067\\-235.865\\43\\10.48218\\-235.4241\\43\\14.03991\\-234.3177\\43\\16.11947\\-233.5263\\43\\19.04493\\-232.1423\\43\\20.98556\\-231.0457\\43\\22.73697\\-229.8897\\43\\24.68273\\-228.4667\\43\\27.00895\\-226.4374\\43\\29.76091\\-223.5387\\43\\30.65047\\-222.4255\\43\\32.23809\\-220.2175\\43\\33.41503\\-218.2785\\43\\34.36595\\-216.4765\\43\\36.01795\\-212.5974\\43\\36.93511\\-209.5831\\43\\37.32171\\-207.9585\\43\\37.70532\\-205.8017\\43\\37.97639\\-203.3611\\43\\38.06329\\-201.6431\\43\\38.00877\\-197.9967\\43\\37.66869\\-194.8309\\43\\36.87068\\-191.1074\\43\\35.73542\\-187.7982\\43\\34.77942\\-185.6406\\43\\33.44427\\-183.2631\\43\\32.25814\\-181.6049\\43\\30.33052\\-179.5509\\43\\28.85168\\-178.3182\\43\\27.01671\\-177.2258\\43\\25.64424\\-176.63\\43\\23.84089\\-176.1033\\43\\21.49493\\-175.8133\\43\\19.59134\\-175.8229\\43\\17.38559\\-176.0377\\43\\13.4158\\-176.8141\\43\\10.13593\\-177.6155\\43\\6.292988\\-178.4255\\43\\2.716954\\-178.8667\\43\\0.65814\\-178.9406\\43\\-1.74198\\-178.8663\\43\\-5.316413\\-178.4255\\43\\-9.159284\\-177.6155\\43\\-12.43955\\-176.814\\43\\-16.40882\\-176.0378\\43\\-18.61486\\-175.8229\\43\\-20.53669\\-175.8165\\43\\-23.13804\\-176.1575\\43\\-25.36633\\-176.8953\\43\\-27.03267\\-177.7669\\43\\-28.30706\\-178.6481\\43\\-29.3285\\-179.5227\\43\\-31.2833\\-181.6073\\43\\-32.51058\\-183.3202\\43\\-33.80414\\-185.6419\\43\\-34.75871\\-187.798\\43\\-35.8939\\-191.1069\\43\\-36.69219\\-194.8313\\43\\-36.99111\\-197.5941\\43\\-37.11143\\-201.0014\\43\\-36.99994\\-203.3603\\43\\-36.72874\\-205.8024\\43\\-36.33923\\-207.9854\\43\\-35.95862\\-209.5827\\43\\-35.04138\\-212.5974\\43\\-33.80167\\-215.5842\\43\\-32.58022\\-218.0595\\43\\-31.28763\\-220.1815\\43\\-29.67391\\-222.4255\\43\\-28.78436\\-223.5386\\43\\-26.7344\\-225.7667\\43\\-25.59165\\-226.8523\\43\\-23.70625\\-228.4667\\43\\-21.76042\\-229.8897\\43\\-18.66968\\-231.825\\43\\-15.93942\\-233.1724\\43\\-13.06401\\-234.3177\\43\\-10.81817\\-235.0614\\43\\-7.545309\\-235.8298\\43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "82"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.100227\\-235.7332\\45\\1.437713\\-235.8003\\45\\5.294383\\-235.5499\\45\\6.804339\\-235.3395\\45\\10.51384\\-234.5422\\45\\12.7683\\-233.8944\\45\\15.00934\\-233.0731\\45\\17.38166\\-232.0212\\45\\19.0458\\-231.1523\\45\\21.10321\\-229.9139\\45\\22.53\\-228.9478\\45\\25.12174\\-226.8947\\45\\26.87385\\-225.2957\\45\\28.26976\\-223.7979\\45\\30.55404\\-220.9503\\45\\32.14964\\-218.4886\\45\\33.48821\\-216.0404\\45\\34.92249\\-212.6543\\45\\35.88692\\-209.5876\\45\\36.32925\\-207.7695\\45\\36.75126\\-205.1409\\45\\37.04799\\-201.5114\\45\\36.95938\\-197.8098\\45\\36.60044\\-195.1116\\45\\35.8653\\-191.5822\\45\\35.50805\\-190.383\\45\\34.59135\\-187.9586\\45\\33.69322\\-186.0481\\45\\32.8547\\-184.5539\\45\\31.87257\\-183.0983\\45\\30.4122\\-181.36\\45\\28.13129\\-179.4048\\45\\26.90944\\-178.656\\45\\25.15255\\-177.8439\\45\\22.8357\\-177.2106\\45\\21.33761\\-177.023\\45\\19.37333\\-176.983\\45\\17.72774\\-177.0813\\45\\14.55401\\-177.5571\\45\\8.662991\\-178.7782\\45\\6.573238\\-179.168\\45\\3.933375\\-179.5311\\45\\1.705158\\-179.6717\\45\\-0.7371299\\-179.6709\\45\\-2.78506\\-179.5449\\45\\-5.572783\\-179.1703\\45\\-9.201396\\-178.4734\\45\\-11.53369\\-177.9544\\45\\-14.97319\\-177.3044\\45\\-17.92788\\-176.9971\\45\\-19.54189\\-176.9788\\45\\-22.29094\\-177.2938\\45\\-23.63145\\-177.659\\45\\-25.80092\\-178.5809\\45\\-27.11061\\-179.3631\\45\\-28.40954\\-180.3949\\45\\-29.43712\\-181.3611\\45\\-30.89596\\-183.0981\\45\\-31.87783\\-184.5536\\45\\-32.71107\\-186.0414\\45\\-33.5854\\-187.8715\\45\\-34.5313\\-190.3825\\45\\-34.88872\\-191.5822\\45\\-35.62388\\-195.1116\\45\\-35.9823\\-197.8023\\45\\-36.07149\\-201.5149\\45\\-35.77505\\-205.1384\\45\\-35.35269\\-207.7695\\45\\-34.91042\\-209.5873\\45\\-33.94565\\-212.6538\\45\\-33.03407\\-214.8826\\45\\-31.68403\\-217.6209\\45\\-29.57736\\-220.9505\\45\\-27.29504\\-223.796\\45\\-25.75001\\-225.4355\\45\\-24.14528\\-226.8943\\45\\-21.55342\\-228.9478\\45\\-18.6119\\-230.8521\\45\\-15.63765\\-232.3666\\45\\-11.795\\-233.8934\\45\\-9.539515\\-234.5415\\45\\-5.827325\\-235.3395\\45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "76"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "27"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.352002\\-234.8572\\47\\2.327949\\-234.8578\\47\\6.529886\\-234.396\\47\\9.582994\\-233.7909\\47\\12.01802\\-233.087\\47\\15.29542\\-231.8733\\47\\17.26853\\-230.9367\\47\\19.22566\\-229.8668\\47\\21.95089\\-228.0791\\47\\24.28699\\-226.2204\\47\\26.61855\\-223.9811\\47\\28.56215\\-221.7475\\47\\30.8011\\-218.5682\\47\\31.86789\\-216.702\\47\\32.7491\\-214.9375\\47\\33.90556\\-212.0882\\47\\34.85136\\-208.8762\\47\\35.32409\\-206.7744\\47\\35.58638\\-205.0795\\47\\35.87545\\-200.8659\\47\\35.82267\\-198.8716\\47\\35.271\\-194.4814\\47\\34.67645\\-191.9465\\47\\34.05193\\-189.9698\\47\\33.10344\\-187.7412\\47\\31.68133\\-185.2255\\47\\30.37927\\-183.4487\\47\\28.38676\\-181.4048\\47\\26.35579\\-179.9827\\47\\24.27835\\-179.0401\\47\\21.92644\\-178.4214\\47\\20.46898\\-178.2515\\47\\17.62013\\-178.2567\\47\\15.58224\\-178.4631\\47\\12.7661\\-178.8753\\47\\6.619486\\-179.9942\\47\\4.355937\\-180.2575\\47\\2.18924\\-180.4008\\47\\-0.1275444\\-180.4426\\47\\-2.663076\\-180.3201\\47\\-5.576665\\-179.9965\\47\\-13.10967\\-178.669\\47\\-16.73705\\-178.2459\\47\\-19.49224\\-178.2496\\47\\-20.9081\\-178.4081\\47\\-22.83438\\-178.8881\\47\\-23.87511\\-179.2603\\47\\-25.36547\\-179.9907\\47\\-27.41222\\-181.4064\\47\\-29.4066\\-183.4528\\47\\-30.70476\\-185.2254\\47\\-32.12716\\-187.7414\\47\\-33.07545\\-189.9703\\47\\-33.69988\\-191.9465\\47\\-34.29444\\-194.4814\\47\\-34.77962\\-198.0478\\47\\-34.90196\\-200.4547\\47\\-34.76553\\-203.2309\\47\\-34.6021\\-205.0937\\47\\-34.34883\\-206.7671\\47\\-33.87418\\-208.8779\\47\\-32.91704\\-212.0867\\47\\-31.77262\\-214.9375\\47\\-30.89486\\-216.6933\\47\\-29.81977\\-218.5779\\47\\-28.30831\\-220.8152\\47\\-27.15636\\-222.2609\\47\\-25.6508\\-223.9763\\47\\-23.54604\\-225.994\\47\\-21.40775\\-227.7592\\47\\-18.25686\\-229.8614\\47\\-16.29125\\-230.9366\\47\\-14.3218\\-231.8719\\47\\-11.04131\\-233.0871\\47\\-8.609464\\-233.7895\\47\\-5.532891\\-234.4047\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "78"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.586367\\-233.7692\\49\\-4.514985\\-233.403\\49\\-6.729055\\-233.0348\\49\\-9.032927\\-232.5018\\49\\-11.84868\\-231.6054\\49\\-14.23164\\-230.625\\49\\-16.59274\\-229.4488\\49\\-18.94414\\-227.9973\\49\\-20.4453\\-226.9577\\49\\-22.41385\\-225.3631\\49\\-23.49748\\-224.362\\49\\-25.29828\\-222.4891\\49\\-26.95232\\-220.4763\\49\\-28.30385\\-218.5452\\49\\-29.14141\\-217.1767\\49\\-30.57886\\-214.3882\\49\\-31.96657\\-210.8574\\49\\-32.92613\\-207.0903\\49\\-33.33209\\-204.6764\\49\\-33.51704\\-201.9398\\49\\-33.51541\\-199.7307\\49\\-33.34029\\-197.3005\\49\\-32.72715\\-193.7449\\49\\-32.17788\\-191.8219\\49\\-31.63612\\-190.2728\\49\\-30.92518\\-188.6159\\49\\-29.47046\\-186.1052\\49\\-28.73272\\-185.0459\\49\\-27.46505\\-183.6122\\49\\-26.28099\\-182.5291\\49\\-24.96325\\-181.5919\\49\\-23.78745\\-180.9234\\49\\-21.21263\\-179.9911\\49\\-19.43706\\-179.6503\\49\\-17.06289\\-179.5035\\49\\-15.2568\\-179.5542\\49\\-10.79308\\-180.0697\\49\\-5.359003\\-180.8951\\49\\-1.9823\\-181.1865\\49\\0.4868818\\-181.2394\\49\\2.957352\\-181.1866\\49\\6.328884\\-180.896\\49\\11.76956\\-180.0697\\49\\16.23252\\-179.5542\\49\\18.03996\\-179.5037\\49\\20.36407\\-179.6425\\49\\21.90669\\-179.9239\\49\\23.59489\\-180.4357\\49\\25.01028\\-181.059\\49\\27.27857\\-182.5436\\49\\29.04501\\-184.2726\\49\\30.44515\\-186.1025\\49\\31.90175\\-188.6159\\49\\32.61268\\-190.2728\\49\\33.15444\\-191.8219\\49\\33.70371\\-193.7449\\49\\34.31683\\-197.3083\\49\\34.47989\\-199.67\\49\\34.49369\\-201.9434\\49\\34.28286\\-204.7752\\49\\33.90208\\-207.0959\\49\\32.94308\\-210.8574\\49\\31.5554\\-214.3883\\49\\30.11962\\-217.1731\\49\\29.28031\\-218.5453\\49\\27.86812\\-220.5497\\49\\26.73426\\-221.9643\\49\\25.34393\\-223.4911\\49\\23.36901\\-225.3817\\49\\21.38063\\-226.9917\\49\\20.11714\\-227.8702\\49\\17.56931\\-229.4488\\49\\15.2082\\-230.625\\49\\12.82524\\-231.6054\\49\\10.00915\\-232.502\\49\\8.02219\\-232.9743\\49\\5.513772\\-233.3979\\49\\1.782654\\-233.7549\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "76"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "29"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.4788265\\-232.4674\\51\\2.913418\\-232.3855\\51\\6.284549\\-231.978\\51\\8.513913\\-231.5119\\51\\11.24444\\-230.7303\\51\\13.76363\\-229.7963\\51\\15.26823\\-229.0834\\51\\17.53312\\-227.8738\\51\\18.91449\\-227.01\\51\\21.63127\\-224.9897\\51\\23.28301\\-223.5265\\51\\25.27138\\-221.4612\\51\\26.79997\\-219.5609\\51\\28.04951\\-217.7491\\51\\29.70911\\-214.8422\\51\\30.93\\-212.0411\\51\\31.59792\\-210.1046\\51\\32.29706\\-207.4125\\51\\32.70765\\-205.1378\\51\\32.94046\\-202.5233\\51\\32.93384\\-200.3055\\51\\32.72424\\-197.1287\\51\\32.5313\\-195.9349\\51\\31.93222\\-193.2978\\51\\31.28674\\-191.4237\\51\\30.51685\\-189.5914\\51\\29.52436\\-187.8418\\51\\28.43461\\-186.2404\\51\\27.58209\\-185.2284\\51\\26.11936\\-183.8802\\51\\24.04256\\-182.4999\\51\\22.06322\\-181.6479\\51\\20.61372\\-181.2627\\51\\18.3985\\-180.9224\\51\\15.66515\\-180.8663\\51\\12.95305\\-181.0412\\51\\9.919917\\-181.4013\\51\\4.926303\\-181.9264\\51\\1.477127\\-182.1143\\51\\-0.5807838\\-182.1148\\51\\-3.949467\\-181.9264\\51\\-8.943355\\-181.4013\\51\\-11.97649\\-181.0412\\51\\-14.68858\\-180.8663\\51\\-17.42187\\-180.9224\\51\\-19.65405\\-181.2605\\51\\-21.64181\\-181.8331\\51\\-23.06819\\-182.5018\\51\\-24.66653\\-183.5275\\51\\-26.08599\\-184.7231\\51\\-27.03238\\-185.7309\\51\\-27.99373\\-186.9772\\51\\-29.54024\\-189.5913\\51\\-30.31016\\-191.4237\\51\\-30.95569\\-193.298\\51\\-31.53636\\-195.8363\\51\\-31.81158\\-197.7394\\51\\-31.94215\\-199.3501\\51\\-31.99932\\-201.6339\\51\\-31.73083\\-205.139\\51\\-31.32049\\-207.4125\\51\\-30.62136\\-210.1046\\51\\-29.95344\\-212.0411\\51\\-28.74346\\-214.8272\\51\\-27.77425\\-216.5827\\51\\-25.86349\\-219.496\\51\\-24.07564\\-221.6938\\51\\-22.29071\\-223.5446\\51\\-19.51143\\-225.896\\51\\-16.55571\\-227.8749\\51\\-14.29134\\-229.0836\\51\\-12.78707\\-229.7963\\51\\-10.26788\\-230.7303\\51\\-7.537351\\-231.5119\\51\\-5.307986\\-231.978\\51\\-1.734085\\-232.4022\\51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "74"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.9877779\\-230.9355\\53\\4.486869\\-230.7041\\53\\7.022734\\-230.2955\\53\\8.944558\\-229.8163\\53\\10.94564\\-229.1848\\53\\13.6383\\-228.0975\\53\\15.52082\\-227.1861\\53\\17.23051\\-226.1865\\53\\18.89039\\-225.078\\53\\21.45873\\-222.9931\\53\\23.6603\\-220.7808\\53\\25.06766\\-219.0926\\53\\26.45644\\-217.1164\\53\\27.6746\\-215.0903\\53\\28.86301\\-212.6291\\53\\29.64749\\-210.5279\\53\\30.28515\\-208.4486\\53\\30.71211\\-206.6179\\53\\31.02842\\-204.5966\\53\\31.20989\\-201.864\\53\\31.16084\\-199.3531\\53\\30.97486\\-197.6067\\53\\30.34172\\-194.4462\\53\\29.17732\\-191.1388\\53\\28.60739\\-189.9997\\53\\27.51967\\-188.2268\\53\\25.83354\\-186.2561\\53\\24.35108\\-184.9746\\53\\22.45431\\-183.8206\\53\\21.29148\\-183.3188\\53\\18.45971\\-182.5389\\53\\15.78529\\-182.2691\\53\\12.69964\\-182.2955\\53\\10.08759\\-182.4671\\53\\7.137596\\-182.7626\\53\\4.822176\\-182.9205\\53\\0.9723852\\-183.0581\\53\\-2.462666\\-182.9866\\53\\-6.189179\\-182.7598\\53\\-9.111023\\-182.4671\\53\\-11.72274\\-182.2956\\53\\-14.80881\\-182.269\\53\\-17.48314\\-182.5389\\53\\-20.3146\\-183.3187\\53\\-21.47771\\-183.8207\\53\\-23.37465\\-184.9749\\53\\-24.86145\\-186.2602\\53\\-26.54256\\-188.2262\\53\\-27.63078\\-189.9996\\53\\-28.20084\\-191.1387\\53\\-28.92394\\-193.0278\\53\\-29.51733\\-195.0057\\53\\-30.0009\\-197.6103\\53\\-30.18413\\-199.3416\\53\\-30.23373\\-201.8548\\53\\-30.08429\\-204.2943\\53\\-29.73396\\-206.6251\\53\\-29.30851\\-208.4488\\53\\-28.67107\\-210.5275\\53\\-27.88404\\-212.6292\\53\\-26.69554\\-215.0875\\53\\-25.48743\\-217.1053\\53\\-24.0894\\-219.0945\\53\\-22.66061\\-220.8107\\53\\-21.50497\\-222.0081\\53\\-19.70906\\-223.6477\\53\\-17.32664\\-225.4926\\53\\-14.55236\\-227.1779\\53\\-12.72484\\-228.0808\\53\\-9.971407\\-229.1838\\53\\-7.967996\\-229.8163\\53\\-6.046172\\-230.2955\\53\\-3.510362\\-230.704\\53\\-1.326811\\-230.8918\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "69"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.931477\\-229.067\\55\\0.5037407\\-229.1619\\55\\2.909452\\-229.0665\\55\\5.040643\\-228.8164\\55\\7.295846\\-228.3616\\55\\9.425772\\-227.8119\\55\\10.72097\\-227.3606\\55\\13.64646\\-226.1012\\55\\15.88495\\-224.8573\\55\\17.84682\\-223.5394\\55\\18.95674\\-222.6789\\55\\20.60209\\-221.2146\\55\\22.42559\\-219.3141\\55\\23.7379\\-217.6922\\55\\25.53761\\-214.9379\\55\\27.12781\\-211.6854\\55\\28.24475\\-208.4618\\55\\28.70173\\-206.5608\\55\\28.94021\\-205.0969\\55\\29.18653\\-202.0917\\55\\29.12651\\-199.624\\55\\28.92341\\-197.6218\\55\\28.32661\\-194.9262\\55\\27.77718\\-193.2782\\55\\27.01268\\-191.6519\\55\\25.54392\\-189.1922\\55\\24.37959\\-187.8965\\55\\22.95992\\-186.6362\\55\\21.97119\\-185.944\\55\\20.49822\\-185.1757\\55\\19.20589\\-184.6393\\55\\17.796\\-184.2572\\55\\15.15539\\-183.8459\\55\\13.55124\\-183.7513\\55\\10.2443\\-183.7425\\55\\6.348239\\-183.9617\\55\\2.780094\\-184.0823\\55\\-1.817295\\-184.082\\55\\-5.387124\\-183.9629\\55\\-9.268621\\-183.7425\\55\\-13.67699\\-183.7912\\55\\-16.81925\\-184.2571\\55\\-18.22933\\-184.6393\\55\\-19.52166\\-185.1757\\55\\-20.99463\\-185.944\\55\\-21.98336\\-186.6362\\55\\-23.40302\\-187.8965\\55\\-24.56736\\-189.1922\\55\\-26.03612\\-191.6519\\55\\-26.80019\\-193.2778\\55\\-27.45898\\-195.3237\\55\\-27.97836\\-197.8177\\55\\-28.14787\\-199.8485\\55\\-28.2149\\-202.0984\\55\\-28.04641\\-204.4785\\55\\-27.72893\\-206.5652\\55\\-27.26824\\-208.4617\\55\\-26.16336\\-211.6632\\55\\-24.561\\-214.9381\\55\\-22.76068\\-217.6932\\55\\-21.01845\\-219.8008\\55\\-18.59926\\-222.1508\\55\\-16.87041\\-223.5393\\55\\-14.90805\\-224.8582\\55\\-12.66214\\-226.1062\\55\\-10.89876\\-226.896\\55\\-8.444405\\-227.8139\\55\\-6.309231\\-228.363\\55\\-4.051909\\-228.8174\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "32"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.793279\\-226.9717\\57\\-4.598895\\-226.615\\57\\-6.08763\\-226.2953\\57\\-7.991784\\-225.7051\\57\\-10.11324\\-224.9261\\57\\-12.81841\\-223.5908\\57\\-15.02908\\-222.19\\57\\-17.59372\\-220.1392\\57\\-19.75173\\-217.8914\\57\\-21.63069\\-215.4707\\57\\-23.34215\\-212.4236\\57\\-24.35789\\-210.0593\\57\\-25.18137\\-207.4173\\57\\-25.57248\\-205.6027\\57\\-25.89632\\-202.1783\\57\\-25.83419\\-200.2823\\57\\-25.43758\\-197.2175\\57\\-24.93854\\-195.3036\\57\\-24.36317\\-193.7866\\57\\-23.64673\\-192.3625\\57\\-22.72882\\-190.9226\\57\\-21.80332\\-189.8069\\57\\-20.65436\\-188.7135\\57\\-19.54524\\-187.8382\\57\\-17.39332\\-186.6967\\57\\-15.7959\\-186.1086\\57\\-13.6237\\-185.6334\\57\\-11.70106\\-185.3875\\57\\-7.609021\\-185.2267\\57\\-2.400037\\-185.3348\\57\\3.371206\\-185.3348\\57\\8.579274\\-185.2257\\57\\12.67692\\-185.3876\\57\\14.59939\\-185.6335\\57\\16.77251\\-186.1086\\57\\18.36988\\-186.6967\\57\\20.5218\\-187.8382\\57\\21.63092\\-188.7135\\57\\22.77989\\-189.8069\\57\\23.70539\\-190.9226\\57\\24.62329\\-192.3625\\57\\25.33991\\-193.7872\\57\\25.94422\\-195.4058\\57\\26.41677\\-197.2344\\57\\26.81017\\-200.1715\\57\\26.86265\\-201.6363\\57\\26.79383\\-203.5401\\57\\26.54897\\-205.6027\\57\\26.15793\\-207.4173\\57\\25.33446\\-210.0593\\57\\24.31871\\-212.4236\\57\\22.60739\\-215.4704\\57\\21.03864\\-217.5256\\57\\18.57056\\-220.1393\\57\\16.00564\\-222.19\\57\\13.79497\\-223.5908\\57\\11.0898\\-224.9261\\57\\8.967829\\-225.7052\\57\\7.060122\\-226.2962\\57\\4.792458\\-226.7433\\57\\1.316508\\-227.0675\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "57"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "33"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.007898\\-224.1842\\59\\-5.633465\\-223.823\\59\\-7.388333\\-223.2772\\59\\-9.525916\\-222.4253\\59\\-12.24367\\-220.9544\\59\\-13.77391\\-219.9508\\59\\-15.91024\\-218.1614\\59\\-17.46073\\-216.5652\\59\\-19.10684\\-214.4567\\59\\-20.66047\\-211.8987\\59\\-21.75287\\-209.5192\\59\\-22.54363\\-206.882\\59\\-23.04093\\-204.2319\\59\\-23.13367\\-202.0268\\59\\-22.94877\\-199.426\\59\\-22.45282\\-196.7966\\59\\-21.77791\\-195.0977\\59\\-20.90553\\-193.3357\\59\\-20.24132\\-192.3807\\59\\-18.98284\\-190.9573\\59\\-18.16468\\-190.2555\\59\\-15.7657\\-188.727\\59\\-14.14937\\-188.0709\\59\\-11.10525\\-187.3542\\59\\-8.265779\\-187.0049\\59\\-5.726636\\-186.851\\59\\-3.29828\\-186.8177\\59\\6.715771\\-186.8536\\59\\9.642008\\-187.0367\\59\\12.08205\\-187.3533\\59\\15.13399\\-188.0757\\59\\16.74223\\-188.727\\59\\19.14125\\-190.2555\\59\\19.9594\\-190.9573\\59\\21.21788\\-192.3807\\59\\21.88209\\-193.3357\\59\\22.75447\\-195.0977\\59\\23.42877\\-196.7948\\59\\23.92281\\-199.4456\\59\\24.06277\\-200.9095\\59\\24.08795\\-202.9561\\59\\24.00546\\-204.2538\\59\\23.47472\\-207.0727\\59\\22.7294\\-209.5192\\59\\21.63708\\-211.8987\\59\\20.11054\\-214.439\\59\\18.78767\\-216.1893\\59\\16.33028\\-218.6924\\59\\14.76846\\-219.9596\\59\\13.21276\\-220.966\\59\\10.50257\\-222.4254\\59\\8.364835\\-223.2772\\59\\6.610652\\-223.823\\59\\4.977284\\-224.1879\\59\\2.007368\\-224.5406\\59\\0.4325693\\-224.6072\\59\\-1.004857\\-224.5432\\59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "34"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "1.764367\\-221.4984\\61\\3.654794\\-221.3179\\61\\7.203878\\-220.4183\\61\\9.339288\\-219.5722\\61\\11.9681\\-218.0688\\61\\13.79902\\-216.7584\\61\\16.1487\\-214.3184\\61\\17.52622\\-212.6309\\61\\18.7694\\-210.4807\\61\\19.94951\\-207.6994\\61\\20.42612\\-205.7367\\61\\20.73337\\-203.3174\\61\\20.80488\\-201.5498\\61\\20.64866\\-200.0113\\61\\20.26042\\-198.1714\\61\\19.07385\\-195.3121\\61\\17.64525\\-193.3923\\61\\15.65859\\-191.6211\\61\\13.04623\\-190.3073\\61\\10.32528\\-189.4553\\61\\8.439642\\-189.1374\\61\\5.345034\\-188.8738\\61\\0.4571372\\-188.6552\\61\\-4.352931\\-188.8738\\61\\-7.530559\\-189.145\\61\\-9.348761\\-189.4554\\61\\-10.60953\\-189.7913\\61\\-12.46985\\-190.4942\\61\\-14.68204\\-191.6211\\61\\-16.66868\\-193.3923\\61\\-18.09729\\-195.3121\\61\\-19.2845\\-198.1844\\61\\-19.66375\\-199.9591\\61\\-19.83198\\-201.5849\\61\\-19.75667\\-203.3159\\61\\-19.45048\\-205.7354\\61\\-18.97295\\-207.6994\\61\\-17.77633\\-210.5106\\61\\-16.50928\\-212.6572\\61\\-15.1487\\-214.3571\\61\\-12.88452\\-216.7218\\61\\-11.55351\\-217.7256\\61\\-9.578808\\-218.9419\\61\\-7.648614\\-219.8824\\61\\-5.095757\\-220.774\\61\\-2.682042\\-221.3173\\61\\-0.5944416\\-221.5246\\61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.116315\\-217.5211\\63\\2.525019\\-217.4579\\63\\4.246804\\-217.1772\\63\\6.333959\\-216.5989\\63\\8.590102\\-215.5211\\63\\10.15074\\-214.5676\\63\\11.27054\\-213.6739\\63\\13.19327\\-211.6382\\63\\14.96154\\-208.9368\\63\\15.64968\\-207.4078\\63\\16.21769\\-205.4836\\63\\16.57324\\-202.9722\\63\\16.40019\\-202.2493\\63\\16.41231\\-200.831\\63\\15.95592\\-199.0985\\63\\14.74458\\-196.5793\\63\\13.62659\\-195.1967\\63\\12.09371\\-194.0262\\63\\10.4419\\-193.0549\\63\\8.833938\\-192.4071\\63\\7.166197\\-191.9658\\63\\4.288877\\-191.4669\\63\\2.13356\\-191.2932\\63\\-0.7566112\\-191.2767\\63\\-3.418837\\-191.4973\\63\\-6.217521\\-191.9706\\63\\-7.865997\\-192.4099\\63\\-9.935484\\-193.2915\\63\\-11.92157\\-194.5695\\63\\-12.6587\\-195.2066\\63\\-13.77571\\-196.5776\\63\\-14.97968\\-199.098\\63\\-15.43575\\-200.8311\\63\\-15.42365\\-202.2478\\63\\-15.59671\\-202.9725\\63\\-15.24105\\-205.483\\63\\-14.67312\\-207.4078\\63\\-13.985\\-208.9368\\63\\-12.4394\\-211.3325\\63\\-10.295\\-213.6731\\63\\-9.101588\\-214.6196\\63\\-8.217945\\-215.14\\63\\-5.360232\\-216.5986\\63\\-3.26926\\-217.1783\\63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "33"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.5933019\\-211.6764\\65\\1.5833\\-211.6789\\65\\2.160541\\-211.4577\\65\\2.975951\\-211.5574\\65\\5.119955\\-210.6432\\65\\6.759023\\-209.634\\65\\7.755369\\-208.6972\\65\\8.492185\\-207.7591\\65\\9.450212\\-205.9687\\65\\9.887464\\-204.6694\\65\\10.13643\\-203.2983\\65\\9.873201\\-201.1\\65\\8.385763\\-198.5388\\65\\7.587423\\-197.7187\\65\\6.257915\\-197.046\\65\\3.591137\\-196.0411\\65\\2.492168\\-195.7818\\65\\0.6393334\\-195.6101\\65\\-1.485472\\-195.7764\\65\\-2.646059\\-196.0535\\65\\-4.571265\\-196.7523\\65\\-6.576953\\-197.6478\\65\\-7.758991\\-199.0457\\65\\-8.613137\\-200.4699\\65\\-9.128022\\-201.8906\\65\\-9.161495\\-203.2404\\65\\-8.908936\\-204.6779\\65\\-8.082075\\-206.8487\\65\\-6.786169\\-208.657\\65\\-5.777151\\-209.6353\\65\\-4.145667\\-210.6442\\65\\-1.99099\\-211.5607\\65\\-1.183566\\-211.4585\\65"
-                     }
-                  }
-               ]
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "5"
-            }
-         },
-         {
-            "3006,002a" : {
-               "Name" : "ROIDisplayColor",
-               "Type" : "String",
-               "Value" : "128\\64\\64"
-            },
-            "3006,0040" : {
-               "Name" : "ContourSequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "0"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "13.69339\\-153.7846\\-71\\13.55374\\-151.832\\-71\\13.13763\\-149.9193\\-71\\12.45355\\-148.0851\\-71\\11.5154\\-146.3671\\-71\\10.34229\\-144.8\\-71\\8.958109\\-143.4158\\-71\\7.391023\\-142.2427\\-71\\5.672937\\-141.3045\\-71\\3.838827\\-140.6204\\-71\\1.92603\\-140.2043\\-71\\-0.02651533\\-140.0647\\-71\\-1.979061\\-140.2043\\-71\\-3.891858\\-140.6204\\-71\\-5.725968\\-141.3045\\-71\\-7.444054\\-142.2427\\-71\\-9.01114\\-143.4158\\-71\\-10.39532\\-144.8\\-71\\-11.56843\\-146.3671\\-71\\-12.50658\\-148.0851\\-71\\-13.19066\\-149.9193\\-71\\-13.60677\\-151.832\\-71\\-13.74642\\-153.7846\\-71\\-13.60677\\-155.7371\\-71\\-13.19066\\-157.6499\\-71\\-12.50658\\-159.484\\-71\\-11.56843\\-161.2021\\-71\\-10.39532\\-162.7692\\-71\\-9.01114\\-164.1534\\-71\\-7.444054\\-165.3265\\-71\\-5.725968\\-166.2646\\-71\\-3.891858\\-166.9487\\-71\\-1.979061\\-167.3648\\-71\\-0.02651533\\-167.5045\\-71\\1.92603\\-167.3648\\-71\\3.838827\\-166.9487\\-71\\5.672937\\-166.2646\\-71\\7.391023\\-165.3265\\-71\\8.958109\\-164.1534\\-71\\10.34229\\-162.7692\\-71\\11.5154\\-161.2021\\-71\\12.45355\\-159.484\\-71\\13.13763\\-157.6499\\-71\\13.55374\\-155.7371\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "1"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-5.148041\\-165.9794\\-69\\-5.15705\\-165.9716\\-69\\-7.148041\\-164.7573\\-69\\-8.215205\\-163.9716\\-69\\-9.148041\\-163.2319\\-69\\-10.30565\\-161.9716\\-69\\-11.14804\\-160.8723\\-69\\-11.81296\\-159.9716\\-69\\-12.55688\\-157.9716\\-69\\-13.14804\\-156.3745\\-69\\-13.33953\\-155.9716\\-69\\-13.65681\\-153.9716\\-69\\-13.60259\\-151.9716\\-69\\-13.14804\\-150.3049\\-69\\-13.03693\\-149.9716\\-69\\-12.3037\\-147.9716\\-69\\-11.47041\\-145.9716\\-69\\-11.14804\\-145.6113\\-69\\-9.866431\\-143.9716\\-69\\-9.148041\\-143.2319\\-69\\-7.387711\\-141.9716\\-69\\-7.148041\\-141.7673\\-69\\-5.148041\\-140.745\\-69\\-3.148041\\-140.1884\\-69\\-2.488467\\-139.9716\\-69\\-1.148041\\-139.5753\\-69\\0.8519591\\-139.5077\\-69\\2.851959\\-139.9034\\-69\\2.99712\\-139.9716\\-69\\4.851959\\-140.5932\\-69\\6.851959\\-141.3352\\-69\\7.781647\\-141.9716\\-69\\8.851959\\-142.7456\\-69\\10.12097\\-143.9716\\-69\\10.85196\\-144.7939\\-69\\11.71669\\-145.9716\\-69\\12.59853\\-147.9716\\-69\\12.85196\\-148.4069\\-69\\13.53753\\-149.9716\\-69\\13.78946\\-151.9716\\-69\\13.81931\\-153.9716\\-69\\13.66591\\-155.9716\\-69\\13.09334\\-157.9716\\-69\\12.85196\\-158.3018\\-69\\11.97572\\-159.9716\\-69\\10.85196\\-161.759\\-69\\10.66047\\-161.9716\\-69\\8.851959\\-163.8889\\-69\\8.764658\\-163.9716\\-69\\6.851959\\-165.1415\\-69\\5.351959\\-165.9716\\-69\\4.851959\\-166.3369\\-69\\2.851959\\-166.7397\\-69\\0.8519591\\-166.9805\\-69\\-1.148041\\-166.9536\\-69\\-3.148041\\-166.6639\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "2"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.148041\\-166.1237\\-67\\-3.431825\\-165.9716\\-67\\-5.148041\\-165.3066\\-67\\-7.148041\\-164.225\\-67\\-7.434863\\-163.9716\\-67\\-9.148041\\-162.6639\\-67\\-9.816612\\-161.9716\\-67\\-11.14804\\-160.2064\\-67\\-11.36482\\-159.9716\\-67\\-12.2759\\-157.9716\\-67\\-12.84804\\-155.9716\\-67\\-13.14804\\-154.8466\\-67\\-13.38942\\-153.9716\\-67\\-13.40147\\-151.9716\\-67\\-13.14804\\-150.9438\\-67\\-12.90666\\-149.9716\\-67\\-12.30225\\-147.9716\\-67\\-11.58362\\-145.9716\\-67\\-11.14804\\-145.4571\\-67\\-10.01544\\-143.9716\\-67\\-9.148041\\-143.0314\\-67\\-7.83693\\-141.9716\\-67\\-7.148041\\-141.4371\\-67\\-5.148041\\-140.4261\\-67\\-4.0451\\-139.9716\\-67\\-3.148041\\-139.5855\\-67\\-1.148041\\-139.1744\\-67\\0.8519591\\-139.11\\-67\\2.851959\\-139.2997\\-67\\4.851959\\-139.9637\\-67\\4.86206\\-139.9716\\-67\\6.851959\\-140.9232\\-67\\8.587959\\-141.9716\\-67\\8.851959\\-142.2007\\-67\\10.66047\\-143.9716\\-67\\10.85196\\-144.1746\\-67\\12.02353\\-145.9716\\-67\\12.85196\\-147.522\\-67\\13.17433\\-147.9716\\-67\\13.73354\\-149.9716\\-67\\13.90175\\-151.9716\\-67\\13.89704\\-153.9716\\-67\\13.70846\\-155.9716\\-67\\13.08113\\-157.9716\\-67\\12.85196\\-158.2662\\-67\\11.89696\\-159.9716\\-67\\10.85196\\-161.4538\\-67\\10.40684\\-161.9716\\-67\\8.851959\\-163.5077\\-67\\8.281589\\-163.9716\\-67\\6.851959\\-164.8777\\-67\\4.851959\\-165.7181\\-67\\4.140421\\-165.9716\\-67\\2.851959\\-166.3877\\-67\\0.8519591\\-166.6966\\-67\\-1.148041\\-166.6365\\-67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "3"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.148041\\-166.0397\\-65\\-1.321118\\-165.9716\\-65\\-3.148041\\-165.4287\\-65\\-5.148041\\-164.9246\\-65\\-6.640688\\-163.9716\\-65\\-7.148041\\-163.5456\\-65\\-9.148041\\-162.025\\-65\\-9.201476\\-161.9716\\-65\\-10.73189\\-159.9716\\-65\\-11.14804\\-159.4678\\-65\\-12.04444\\-157.9716\\-65\\-12.52642\\-155.9716\\-65\\-13.00935\\-153.9716\\-65\\-13.14804\\-152.0716\\-65\\-13.15585\\-151.9716\\-65\\-13.14804\\-151.9345\\-65\\-12.80389\\-149.9716\\-65\\-12.30082\\-147.9716\\-65\\-11.6909\\-145.9716\\-65\\-11.14804\\-145.293\\-65\\-10.164\\-143.9716\\-65\\-9.148041\\-142.8279\\-65\\-8.18831\\-141.9716\\-65\\-7.148041\\-141.1767\\-65\\-5.221811\\-139.9716\\-65\\-5.148041\\-139.9034\\-65\\-3.148041\\-139.2216\\-65\\-1.148041\\-138.9093\\-65\\0.8519591\\-138.8471\\-65\\2.851959\\-138.9716\\-65\\4.851959\\-139.3425\\-65\\6.070709\\-139.9716\\-65\\6.851959\\-140.4261\\-65\\8.851959\\-141.5456\\-65\\9.302939\\-141.9716\\-65\\10.85196\\-143.5105\\-65\\11.28754\\-143.9716\\-65\\12.42603\\-145.9716\\-65\\12.85196\\-146.648\\-65\\13.54427\\-147.9716\\-65\\13.89451\\-149.9716\\-65\\14.03251\\-151.9716\\-65\\13.98028\\-153.9716\\-65\\13.74326\\-155.9716\\-65\\13.08113\\-157.9716\\-65\\12.85196\\-158.2512\\-65\\11.81625\\-159.9716\\-65\\10.85196\\-161.1988\\-65\\10.16805\\-161.9716\\-65\\8.851959\\-163.2094\\-65\\7.791809\\-163.9716\\-65\\6.851959\\-164.6295\\-65\\4.851959\\-165.2928\\-65\\2.851959\\-165.7801\\-65\\1.951959\\-165.9716\\-65\\0.8519591\\-166.2007\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "4"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "14.39637\\-151.9821\\-63\\14.25672\\-150.0296\\-63\\13.84062\\-148.1168\\-63\\13.15653\\-146.2827\\-63\\12.21838\\-144.5646\\-63\\11.04528\\-142.9975\\-63\\9.661092\\-141.6133\\-63\\8.094006\\-140.4402\\-63\\6.37592\\-139.5021\\-63\\4.54181\\-138.818\\-63\\2.629012\\-138.4019\\-63\\0.6764669\\-138.2622\\-63\\-1.276079\\-138.4019\\-63\\-3.188876\\-138.818\\-63\\-5.022986\\-139.5021\\-63\\-6.741072\\-140.4402\\-63\\-8.308158\\-141.6133\\-63\\-9.692343\\-142.9975\\-63\\-10.86545\\-144.5646\\-63\\-11.80359\\-146.2827\\-63\\-12.48768\\-148.1168\\-63\\-12.90379\\-150.0296\\-63\\-13.04343\\-151.9821\\-63\\-12.90379\\-153.9347\\-63\\-12.48768\\-155.8475\\-63\\-11.80359\\-157.6816\\-63\\-10.86545\\-159.3997\\-63\\-9.692343\\-160.9668\\-63\\-8.308158\\-162.351\\-63\\-6.741072\\-163.524\\-63\\-5.022986\\-164.4622\\-63\\-3.188876\\-165.1463\\-63\\-1.276079\\-165.5624\\-63\\0.6764669\\-165.702\\-63\\2.629012\\-165.5624\\-63\\4.54181\\-165.1463\\-63\\6.37592\\-164.4622\\-63\\8.094006\\-163.524\\-63\\9.661092\\-162.351\\-63\\11.04528\\-160.9668\\-63\\12.21838\\-159.3997\\-63\\13.15653\\-157.6816\\-63\\13.84062\\-155.8475\\-63\\14.25672\\-153.9347\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "5"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.148041\\-164.6571\\-61\\-4.969959\\-163.9716\\-61\\-5.148041\\-163.8745\\-61\\-7.148041\\-162.5874\\-61\\-7.833576\\-161.9716\\-61\\-9.148041\\-160.7201\\-61\\-9.838649\\-159.9716\\-61\\-11.14804\\-158.1054\\-61\\-11.27304\\-157.9716\\-61\\-12.02598\\-155.9716\\-61\\-12.46928\\-153.9716\\-61\\-12.6306\\-151.9716\\-61\\-12.52642\\-149.9716\\-61\\-12.24496\\-147.9716\\-61\\-11.77707\\-145.9716\\-61\\-11.14804\\-145.1358\\-61\\-10.32063\\-143.9716\\-61\\-9.148041\\-142.4618\\-61\\-8.679291\\-141.9716\\-61\\-7.148041\\-140.6614\\-61\\-6.170768\\-139.9716\\-61\\-5.148041\\-139.2793\\-61\\-3.148041\\-138.6705\\-61\\-1.148041\\-138.2129\\-61\\0.6940643\\-137.9716\\-61\\0.8519591\\-137.9483\\-61\\1.001959\\-137.9716\\-61\\2.851959\\-138.225\\-61\\4.851959\\-138.6772\\-61\\6.851959\\-139.3499\\-61\\7.771959\\-139.9716\\-61\\8.851959\\-140.7093\\-61\\10.2605\\-141.9716\\-61\\10.85196\\-142.6314\\-61\\11.90543\\-143.9716\\-61\\12.85196\\-145.4344\\-61\\13.25821\\-145.9716\\-61\\13.83077\\-147.9716\\-61\\14.03251\\-149.9716\\-61\\14.09586\\-151.9716\\-61\\14.00061\\-153.9716\\-61\\13.68758\\-155.9716\\-61\\12.85196\\-157.6818\\-61\\12.63518\\-157.9716\\-61\\11.36073\\-159.9716\\-61\\10.85196\\-160.5119\\-61\\9.33583\\-161.9716\\-61\\8.851959\\-162.4261\\-61\\6.851959\\-163.7063\\-61\\6.393136\\-163.9716\\-61\\4.851959\\-164.6503\\-61\\2.851959\\-164.9941\\-61\\0.8519591\\-165.1151\\-61\\-1.148041\\-165.0168\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "6"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.148041\\-164.1102\\-59\\-3.415647\\-163.9716\\-59\\-5.148041\\-163.3031\\-59\\-7.139911\\-161.9716\\-59\\-7.148041\\-161.9637\\-59\\-9.148041\\-160.1237\\-59\\-9.300215\\-159.9716\\-59\\-10.63927\\-157.9716\\-59\\-11.14804\\-157.143\\-59\\-11.79883\\-155.9716\\-59\\-12.29669\\-153.9716\\-59\\-12.42945\\-151.9716\\-59\\-12.39194\\-149.9716\\-59\\-12.19465\\-147.9716\\-59\\-11.7844\\-145.9716\\-59\\-11.14804\\-145.1216\\-59\\-10.34304\\-143.9716\\-59\\-9.148041\\-142.2765\\-59\\-8.85945\\-141.9716\\-59\\-7.148041\\-140.4537\\-59\\-6.520134\\-139.9716\\-59\\-5.148041\\-139.1406\\-59\\-3.148041\\-138.3474\\-59\\-1.991178\\-137.9716\\-59\\-1.148041\\-137.683\\-59\\0.8519591\\-137.4541\\-59\\2.851959\\-137.6274\\-59\\3.891175\\-137.9716\\-59\\4.851959\\-138.2939\\-59\\6.851959\\-139.111\\-59\\8.356161\\-139.9716\\-59\\8.851959\\-140.3474\\-59\\10.64773\\-141.9716\\-59\\10.85196\\-142.1999\\-59\\12.09505\\-143.9716\\-59\\12.85196\\-145.1132\\-59\\13.42738\\-145.9716\\-59\\13.85196\\-147.9716\\-59\\13.99546\\-149.9716\\-59\\14.01105\\-151.9716\\-59\\13.92004\\-153.9716\\-59\\13.57055\\-155.9716\\-59\\12.85196\\-157.1732\\-59\\12.3091\\-157.9716\\-59\\10.87521\\-159.9716\\-59\\10.85196\\-159.9948\\-59\\8.851959\\-161.8061\\-59\\8.677716\\-161.9716\\-59\\6.851959\\-163.2535\\-59\\5.143098\\-163.9716\\-59\\4.851959\\-164.137\\-59\\2.851959\\-164.6902\\-59\\0.8519591\\-164.8609\\-59\\-1.148041\\-164.7154\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.271281\\-164.1144\\-57\\-3.771281\\-163.4351\\-57\\-5.271281\\-162.8887\\-57\\-7.271281\\-161.4484\\-57\\-8.981404\\-159.8185\\-57\\-9.903447\\-158.8185\\-57\\-11.98291\\-154.8185\\-57\\-12.37776\\-152.3185\\-57\\-12.43219\\-150.3185\\-57\\-12.01284\\-146.8185\\-57\\-11.32857\\-145.3185\\-57\\-9.486599\\-142.3185\\-57\\-7.271281\\-140.0635\\-57\\-5.271281\\-139.0502\\-57\\-3.771281\\-138.1114\\-57\\-2.771281\\-137.7305\\-57\\0.7287188\\-137.2339\\-57\\2.728719\\-137.3661\\-57\\4.728719\\-137.7029\\-57\\6.728719\\-138.6215\\-57\\8.728719\\-139.7457\\-57\\9.228719\\-140.1428\\-57\\11.37872\\-142.3185\\-57\\12.43545\\-143.8185\\-57\\13.40675\\-145.8185\\-57\\13.82006\\-147.3185\\-57\\14.01332\\-148.8185\\-57\\14.06249\\-150.8185\\-57\\13.93082\\-153.3185\\-57\\13.4018\\-155.8185\\-57\\12.34539\\-157.8185\\-57\\10.72872\\-159.8165\\-57\\8.228719\\-161.9943\\-57\\6.728719\\-163.0251\\-57\\5.728719\\-163.4045\\-57\\3.728719\\-163.957\\-57\\0.7287188\\-164.4045\\-57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.7712812\\-162.3907\\-55\\-2.771281\\-161.903\\-55\\-5.271281\\-160.9637\\-55\\-7.271281\\-159.5261\\-55\\-9.465337\\-157.3185\\-55\\-10.46659\\-155.8185\\-55\\-11.481\\-153.8185\\-55\\-11.95412\\-152.3185\\-55\\-12.15075\\-150.3185\\-55\\-12.18795\\-148.8185\\-55\\-12.09488\\-146.8185\\-55\\-11.85187\\-145.3185\\-55\\-11.49982\\-144.3185\\-55\\-10.3678\\-142.3185\\-55\\-9.396281\\-140.8185\\-55\\-7.771281\\-138.9171\\-55\\-6.771281\\-138.0685\\-55\\-4.771281\\-137.0019\\-55\\-3.271281\\-136.0665\\-55\\-1.271281\\-135.5645\\-55\\0.7287188\\-135.3013\\-55\\2.728719\\-135.3946\\-55\\4.728719\\-135.7281\\-55\\6.296901\\-136.3185\\-55\\8.728719\\-137.673\\-55\\10.72872\\-139.5331\\-55\\11.93449\\-140.8185\\-55\\12.9705\\-142.3185\\-55\\13.44804\\-143.3185\\-55\\13.92794\\-144.8185\\-55\\14.32267\\-146.8185\\-55\\14.48337\\-148.3185\\-55\\14.39841\\-150.3185\\-55\\13.92515\\-152.8185\\-55\\13.32778\\-154.8185\\-55\\12.44833\\-156.3185\\-55\\11.34338\\-157.8185\\-55\\10.22872\\-158.9868\\-55\\6.728719\\-161.3464\\-55\\4.728719\\-161.9753\\-55\\2.728719\\-162.3988\\-55\\0.7287188\\-162.5742\\-55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.771281\\-160.4794\\-53\\-3.271281\\-160.0187\\-53\\-5.271281\\-159.106\\-53\\-6.271281\\-158.4856\\-53\\-7.67889\\-157.3185\\-53\\-8.771281\\-156.216\\-53\\-9.921006\\-154.8185\\-53\\-10.53123\\-153.8185\\-53\\-11.45093\\-151.8185\\-53\\-11.91314\\-150.3185\\-53\\-12.10858\\-148.8185\\-53\\-12.22991\\-146.8185\\-53\\-11.97614\\-144.3185\\-53\\-11.38256\\-142.3185\\-53\\-10.95748\\-141.3185\\-53\\-9.791958\\-139.3185\\-53\\-8.771281\\-138.0747\\-53\\-7.271281\\-136.6074\\-53\\-5.271281\\-135.212\\-53\\-3.271281\\-134.2706\\-53\\-1.271281\\-133.6957\\-53\\1.228719\\-133.4974\\-53\\3.228719\\-133.5724\\-53\\4.228719\\-133.7169\\-53\\5.728719\\-134.1446\\-53\\7.228719\\-134.7095\\-53\\8.228719\\-135.2521\\-53\\9.728719\\-136.2738\\-53\\11.39702\\-137.8185\\-53\\12.27336\\-138.8185\\-53\\13.30653\\-140.3185\\-53\\13.8515\\-141.3185\\-53\\14.40837\\-142.8185\\-53\\14.82524\\-144.3185\\-53\\15.06075\\-146.8185\\-53\\14.99249\\-148.8185\\-53\\14.8515\\-149.8185\\-53\\13.90512\\-152.8185\\-53\\12.42455\\-155.3185\\-53\\11.72872\\-156.1313\\-53\\9.728719\\-158.0586\\-53\\7.228719\\-159.5793\\-53\\4.728719\\-160.4521\\-53\\1.228719\\-160.8757\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.7287188\\-160.9344\\-51\\-1.271281\\-160.5247\\-51\\-3.771281\\-159.6612\\-51\\-4.771281\\-159.4098\\-51\\-6.271281\\-158.4668\\-51\\-8.125693\\-156.8185\\-51\\-9.964287\\-154.8185\\-51\\-11.27128\\-152.3339\\-51\\-11.95253\\-150.8185\\-51\\-12.24703\\-148.3185\\-51\\-12.30253\\-146.8185\\-51\\-11.91314\\-143.3185\\-51\\-11.51654\\-142.3185\\-51\\-10.61775\\-140.8185\\-51\\-9.846281\\-139.3185\\-51\\-9.099493\\-138.3185\\-51\\-7.624832\\-136.8185\\-51\\-6.771281\\-136.1162\\-51\\-4.771281\\-135.0282\\-51\\-3.271281\\-134.1122\\-51\\-1.271281\\-133.6372\\-51\\0.7287188\\-133.5338\\-51\\2.728719\\-133.5591\\-51\\4.728719\\-133.7492\\-51\\6.228719\\-134.2942\\-51\\8.728719\\-135.6202\\-51\\10.72872\\-137.3014\\-51\\11.72872\\-138.4046\\-51\\13.27978\\-140.3185\\-51\\13.9018\\-141.8185\\-51\\14.16837\\-142.8185\\-51\\14.92515\\-144.8185\\-51\\15.12716\\-146.8185\\-51\\14.91313\\-149.3185\\-51\\13.94546\\-152.3185\\-51\\13.2565\\-153.8185\\-51\\12.34769\\-155.3185\\-51\\11.22872\\-156.6797\\-51\\9.728719\\-157.9801\\-51\\8.228719\\-158.9643\\-51\\7.228719\\-159.4562\\-51\\4.228719\\-160.4297\\-51\\2.228719\\-160.8631\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.771281\\-160.5362\\-49\\-2.771281\\-160.126\\-49\\-4.771281\\-159.5163\\-49\\-5.771281\\-158.9917\\-49\\-7.211929\\-157.8185\\-49\\-8.849406\\-156.3185\\-49\\-10.43012\\-154.3185\\-49\\-11.48175\\-152.3185\\-49\\-12.01805\\-150.8185\\-49\\-12.32234\\-148.8185\\-49\\-12.37034\\-146.3185\\-49\\-11.85732\\-142.8185\\-49\\-9.880177\\-139.3185\\-49\\-9.118665\\-138.3185\\-49\\-7.771281\\-136.9865\\-49\\-6.771281\\-136.1436\\-49\\-3.771281\\-134.5172\\-49\\-3.271281\\-134.1488\\-49\\-1.271281\\-133.6807\\-49\\0.7287188\\-133.5674\\-49\\2.728719\\-133.5993\\-49\\4.728719\\-133.9018\\-49\\6.728719\\-134.6891\\-49\\8.728719\\-135.7245\\-49\\10.53541\\-137.3185\\-49\\12.38943\\-139.3185\\-49\\13.43509\\-140.8185\\-49\\14.43647\\-143.8185\\-49\\14.85372\\-145.3185\\-49\\15.01849\\-146.8185\\-49\\14.93082\\-148.8185\\-49\\14.57146\\-149.8185\\-49\\13.91313\\-152.3185\\-49\\12.94924\\-154.3185\\-49\\11.22872\\-156.6811\\-49\\9.728719\\-157.9994\\-49\\8.228719\\-159.0063\\-49\\6.228719\\-159.8848\\-49\\2.728719\\-160.9662\\-49\\0.7287188\\-161.0388\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.771281\\-160.4273\\-47\\-5.271281\\-159.399\\-47\\-6.771281\\-158.4478\\-47\\-8.083393\\-157.3185\\-47\\-9.921006\\-155.3185\\-47\\-11.39847\\-152.8185\\-47\\-11.96031\\-151.3185\\-47\\-12.41907\\-149.3185\\-47\\-12.5203\\-147.3185\\-47\\-12.42292\\-145.3185\\-47\\-11.97885\\-143.3185\\-47\\-11.42669\\-141.8185\\-47\\-10.32234\\-139.8185\\-47\\-9.271281\\-138.4354\\-47\\-7.643116\\-136.8185\\-47\\-6.271281\\-135.7706\\-47\\-4.271281\\-134.6848\\-47\\-2.771281\\-134.1192\\-47\\-0.7712812\\-133.6766\\-47\\1.228719\\-133.5776\\-47\\3.228719\\-133.6957\\-47\\5.228719\\-134.1505\\-47\\6.728719\\-134.7169\\-47\\9.228719\\-136.1891\\-47\\10.22872\\-137.0286\\-47\\11.50725\\-138.3185\\-47\\12.32524\\-139.3185\\-47\\13.50587\\-141.3185\\-47\\14.31205\\-143.3185\\-47\\14.83276\\-145.8185\\-47\\14.92659\\-147.3185\\-47\\14.82524\\-148.8185\\-47\\14.42075\\-150.8185\\-47\\13.92515\\-152.3185\\-47\\12.93467\\-154.3185\\-47\\11.90026\\-155.8185\\-47\\10.22872\\-157.5495\\-47\\8.228719\\-159.0278\\-47\\6.68751\\-159.8185\\-47\\4.728719\\-160.5219\\-47\\2.728719\\-160.9249\\-47\\1.228719\\-161.0191\\-47\\-0.2712812\\-160.9273\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.271281\\-159.9757\\-45\\-3.771281\\-159.5566\\-45\\-5.271281\\-158.9994\\-45\\-7.271281\\-157.4532\\-45\\-9.347207\\-155.3185\\-45\\-10.43747\\-153.8185\\-45\\-11.92669\\-150.8185\\-45\\-12.27323\\-148.3185\\-45\\-12.34628\\-146.8185\\-45\\-11.90907\\-142.8185\\-45\\-9.771281\\-138.8207\\-45\\-9.434689\\-138.3185\\-45\\-7.271281\\-136.186\\-45\\-3.771281\\-134.1264\\-45\\-1.771281\\-133.5841\\-45\\0.7287188\\-133.3391\\-45\\4.728719\\-133.6122\\-45\\6.728719\\-134.2219\\-45\\8.228719\\-135.0745\\-45\\9.728719\\-136.1583\\-45\\10.93011\\-137.3185\\-45\\12.29208\\-138.8185\\-45\\13.36414\\-140.3185\\-45\\13.92369\\-141.8185\\-45\\14.89841\\-144.8185\\-45\\15.05232\\-146.8185\\-45\\14.91468\\-148.8185\\-45\\14.05397\\-151.3185\\-45\\13.82778\\-152.3185\\-45\\13.3352\\-153.3185\\-45\\12.36054\\-154.8185\\-45\\10.72872\\-156.8978\\-45\\9.228719\\-158.0096\\-45\\7.728719\\-158.9456\\-45\\6.728719\\-159.4321\\-45\\4.728719\\-160.0075\\-45\\2.728719\\-160.4175\\-45\\0.7287188\\-160.512\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.771281\\-159.4847\\-43\\-4.271281\\-158.9249\\-43\\-5.271281\\-158.3877\\-43\\-7.271281\\-156.9082\\-43\\-9.271281\\-154.7764\\-43\\-9.98719\\-153.8185\\-43\\-11.37284\\-151.3185\\-43\\-11.90907\\-149.8185\\-43\\-12.18524\\-146.8185\\-43\\-12.11402\\-144.8185\\-43\\-11.89628\\-142.8185\\-43\\-10.0982\\-139.3185\\-43\\-9.946152\\-138.8185\\-43\\-9.271281\\-137.9948\\-43\\-7.636188\\-136.3185\\-43\\-5.271281\\-134.5922\\-43\\-3.271281\\-133.6026\\-43\\-1.271281\\-133.154\\-43\\0.7287188\\-132.9175\\-43\\2.728719\\-132.9981\\-43\\4.228719\\-133.1668\\-43\\6.228719\\-133.6325\\-43\\7.728719\\-134.2674\\-43\\9.228719\\-135.2188\\-43\\10.50267\\-136.3185\\-43\\12.3939\\-138.3185\\-43\\13.36443\\-139.8185\\-43\\13.87455\\-140.8185\\-43\\14.14001\\-141.8185\\-43\\14.90512\\-143.8185\\-43\\15.10372\\-144.8185\\-43\\15.27336\\-146.8185\\-43\\14.97543\\-148.8185\\-43\\13.49547\\-152.8185\\-43\\12.9028\\-153.8185\\-43\\10.87266\\-156.3185\\-43\\8.728719\\-158.0166\\-43\\6.728719\\-159.0696\\-43\\5.228719\\-159.5479\\-43\\2.728719\\-159.9478\\-43\\0.7287188\\-159.9829\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.271281\\-159.4829\\-41\\-3.271281\\-158.8726\\-41\\-5.271281\\-157.8497\\-41\\-7.170254\\-156.3185\\-41\\-9.271281\\-154.1263\\-41\\-10.52356\\-152.3185\\-41\\-11.41514\\-150.3185\\-41\\-12\\-148.3185\\-41\\-12.06371\\-144.8185\\-41\\-11.85187\\-142.8185\\-41\\-11.44603\\-141.8185\\-41\\-10.63766\\-140.3185\\-41\\-10.02244\\-138.8185\\-41\\-9.346281\\-137.8185\\-41\\-8.45844\\-136.8185\\-41\\-7.271281\\-135.6967\\-41\\-5.271281\\-134.136\\-41\\-4.271281\\-133.6913\\-41\\-1.271281\\-132.634\\-41\\0.7287188\\-132.2002\\-41\\2.728719\\-132.2521\\-41\\4.228719\\-132.5902\\-41\\6.228719\\-133.2351\\-41\\8.728719\\-134.2072\\-41\\11.22872\\-136.4643\\-41\\12.93227\\-138.3185\\-41\\13.27336\\-138.8185\\-41\\14.95854\\-142.8185\\-41\\15.38781\\-144.8185\\-41\\15.35591\\-147.3185\\-41\\14.89841\\-149.3185\\-41\\14.60818\\-149.8185\\-41\\13.44638\\-152.8185\\-41\\12.36761\\-154.3185\\-41\\10.72872\\-156.067\\-41\\9.728719\\-156.979\\-41\\8.228719\\-157.9997\\-41\\6.228719\\-158.8818\\-41\\4.728719\\-159.42\\-41\\2.728719\\-159.5921\\-41\\0.7287188\\-159.5993\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "16"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.771281\\-158.5638\\-39\\-4.271281\\-157.9542\\-39\\-5.271281\\-157.4098\\-39\\-7.271281\\-155.9649\\-39\\-8.426606\\-154.8185\\-39\\-9.965292\\-152.8185\\-39\\-10.96479\\-150.8185\\-39\\-11.49531\\-149.3185\\-39\\-11.92669\\-147.3185\\-39\\-12.00115\\-145.3185\\-39\\-11.91711\\-143.8185\\-39\\-11.48019\\-141.8185\\-39\\-10.93575\\-140.3185\\-39\\-9.924596\\-138.3185\\-39\\-8.367061\\-136.3185\\-39\\-7.271281\\-135.2373\\-39\\-5.771281\\-134.128\\-39\\-4.271281\\-133.2804\\-39\\-2.771281\\-132.6462\\-39\\-0.7712812\\-132.1057\\-39\\1.728719\\-131.9249\\-39\\4.728719\\-132.2144\\-39\\6.228719\\-132.6575\\-39\\7.728719\\-133.2907\\-39\\9.228719\\-134.136\\-39\\10.72872\\-135.2581\\-39\\11.79798\\-136.3185\\-39\\13.37057\\-138.3185\\-39\\14.37844\\-140.3185\\-39\\14.91622\\-141.8185\\-39\\15.35591\\-143.8185\\-39\\15.45033\\-145.3185\\-39\\15.36855\\-147.3185\\-39\\14.93494\\-149.3185\\-39\\14.39841\\-150.8185\\-39\\13.40526\\-152.8185\\-39\\11.86842\\-154.8185\\-39\\10.72872\\-155.9523\\-39\\8.728719\\-157.3934\\-39\\7.728719\\-157.9435\\-39\\6.228719\\-158.5452\\-39\\4.728719\\-159.0044\\-39\\1.728719\\-159.3126\\-39\\-0.7712812\\-159.0847\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.7287188\\-159.3848\\-37\\-1.771281\\-158.9603\\-37\\-3.271281\\-158.2324\\-37\\-5.271281\\-157.495\\-37\\-7.271281\\-155.9742\\-37\\-8.921281\\-154.3185\\-37\\-10.37284\\-152.3185\\-37\\-11.50318\\-149.8185\\-37\\-11.98151\\-148.3185\\-37\\-12.13145\\-146.3185\\-37\\-12.13145\\-144.8185\\-37\\-11.98019\\-142.8185\\-37\\-11.50073\\-141.3185\\-37\\-10.35461\\-138.8185\\-37\\-8.905896\\-136.8185\\-37\\-7.271281\\-135.195\\-37\\-5.271281\\-133.6869\\-37\\-3.271281\\-132.899\\-37\\-1.771281\\-132.1869\\-37\\0.7287188\\-131.8088\\-37\\2.728719\\-131.8531\\-37\\4.728719\\-132.115\\-37\\9.228719\\-134.2643\\-37\\10.72872\\-135.5533\\-37\\12.39024\\-137.3185\\-37\\13.45081\\-138.8185\\-37\\14.88598\\-142.3185\\-37\\15.37257\\-144.8185\\-37\\15.32006\\-146.8185\\-37\\14.89319\\-148.8185\\-37\\13.22872\\-152.718\\-37\\12.41455\\-153.8185\\-37\\10.72872\\-155.604\\-37\\9.228719\\-156.9263\\-37\\8.228719\\-157.5148\\-37\\6.228719\\-158.2907\\-37\\4.728719\\-159.0273\\-37\\2.728719\\-159.3427\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.771281\\-159.0158\\-35\\-5.271281\\-157.5469\\-35\\-6.271281\\-156.92\\-35\\-8.624831\\-154.8185\\-35\\-9.88938\\-153.3185\\-35\\-11.4067\\-150.8185\\-35\\-12.0138\\-148.8185\\-35\\-12.33163\\-146.3185\\-35\\-12.33163\\-144.8185\\-35\\-11.90907\\-141.8185\\-35\\-11.39551\\-140.3185\\-35\\-9.870337\\-137.8185\\-35\\-9.08514\\-136.8185\\-35\\-7.271281\\-135.0657\\-35\\-5.271281\\-133.6168\\-35\\-3.271281\\-132.7297\\-35\\-1.271281\\-132.0256\\-35\\0.7287188\\-131.7838\\-35\\2.228719\\-131.8318\\-35\\4.728719\\-132.163\\-35\\5.228719\\-132.4882\\-35\\8.728719\\-134.0483\\-35\\10.72872\\-135.6626\\-35\\11.83157\\-136.8185\\-35\\13.27336\\-138.8185\\-35\\13.90837\\-140.3185\\-35\\14.93358\\-143.8185\\-35\\15.04747\\-144.8185\\-35\\14.93762\\-147.3185\\-35\\13.91653\\-150.8185\\-35\\13.27009\\-152.3185\\-35\\11.40592\\-154.8185\\-35\\10.22872\\-155.9404\\-35\\8.728719\\-157.1197\\-35\\5.228719\\-158.637\\-35\\4.728719\\-158.9682\\-35\\2.228719\\-159.3631\\-35\\0.7287188\\-159.4045\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.271281\\-159.154\\-33\\-2.271281\\-158.8963\\-33\\-4.771281\\-157.8877\\-33\\-6.271281\\-157.0421\\-33\\-7.249963\\-156.3185\\-33\\-9.418083\\-154.3185\\-33\\-10.43271\\-152.8185\\-33\\-11.88725\\-150.3185\\-33\\-12.46331\\-146.8185\\-33\\-12.4049\\-143.8185\\-33\\-11.90064\\-140.8185\\-33\\-10.41773\\-138.3185\\-33\\-9.417235\\-136.8185\\-33\\-7.224985\\-134.8185\\-33\\-6.271281\\-134.1172\\-33\\-4.771281\\-133.2907\\-33\\-3.271281\\-132.608\\-33\\-1.271281\\-132.0029\\-33\\0.7287188\\-131.7838\\-33\\2.728719\\-131.9018\\-33\\4.728719\\-132.2521\\-33\\7.228719\\-133.5129\\-33\\8.728719\\-134.1408\\-33\\11.22872\\-136.3506\\-33\\12.36761\\-137.8185\\-33\\13.25297\\-139.3185\\-33\\13.91925\\-140.8185\\-33\\14.77978\\-144.8185\\-33\\14.76339\\-146.3185\\-33\\14.39495\\-148.3185\\-33\\13.92369\\-150.3185\\-33\\13.2494\\-151.8185\\-33\\12.37586\\-153.3185\\-33\\11.23067\\-154.8185\\-33\\8.728719\\-157.0105\\-33\\7.228719\\-157.6488\\-33\\4.728719\\-158.8663\\-33\\2.228719\\-159.3243\\-33\\0.7287188\\-159.4045\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.271281\\-158.9682\\-31\\-4.771281\\-158.0707\\-31\\-6.771281\\-156.9828\\-31\\-8.207413\\-155.8185\\-31\\-9.271281\\-154.7684\\-31\\-10.4375\\-153.3185\\-31\\-11.31592\\-151.8185\\-31\\-11.98703\\-150.3185\\-31\\-12.44267\\-148.8185\\-31\\-12.79196\\-145.8185\\-31\\-12.42669\\-142.3185\\-31\\-11.97057\\-140.8185\\-31\\-11.50733\\-139.8185\\-31\\-10.38256\\-137.8185\\-31\\-9.271281\\-136.4691\\-31\\-8.108529\\-135.3185\\-31\\-6.771281\\-134.2297\\-31\\-4.771281\\-133.1206\\-31\\-3.771281\\-132.7169\\-31\\-1.771281\\-132.142\\-31\\0.7287188\\-131.9273\\-31\\3.728719\\-132.1786\\-31\\5.228719\\-132.6087\\-31\\6.728719\\-133.1848\\-31\\9.228719\\-134.7156\\-31\\10.95849\\-136.3185\\-31\\11.80931\\-137.3185\\-31\\13.3515\\-139.8185\\-31\\13.92262\\-141.3185\\-31\\14.41468\\-143.3185\\-31\\14.54431\\-145.8185\\-31\\14.4777\\-147.3185\\-31\\13.94017\\-149.8185\\-31\\13.38225\\-151.3185\\-31\\11.88404\\-153.8185\\-31\\11.02568\\-154.8185\\-31\\9.228719\\-156.5063\\-31\\7.728719\\-157.4932\\-31\\5.728719\\-158.439\\-31\\4.228719\\-158.9367\\-31\\2.728719\\-159.1575\\-31\\0.7287188\\-159.3165\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.271281\\-159.3757\\-29\\-3.771281\\-158.9072\\-29\\-7.271281\\-156.9045\\-29\\-9.034212\\-155.3185\\-29\\-9.911112\\-154.3185\\-29\\-10.66724\\-152.8185\\-29\\-11.93037\\-150.8185\\-29\\-12.41111\\-148.3185\\-29\\-12.51099\\-146.8185\\-29\\-12.40064\\-143.8185\\-29\\-11.92292\\-141.3185\\-29\\-11.49616\\-140.3185\\-29\\-8.98694\\-136.8185\\-29\\-7.271281\\-135.1918\\-29\\-5.771281\\-134.1362\\-29\\-4.771281\\-133.6505\\-29\\-1.771281\\-132.6557\\-29\\0.7287188\\-132.2219\\-29\\2.728719\\-132.4542\\-29\\3.728719\\-132.6766\\-29\\6.728719\\-133.7219\\-29\\7.728719\\-134.2144\\-29\\9.228719\\-135.1466\\-29\\10.72872\\-136.3355\\-29\\12.88855\\-139.3185\\-29\\13.43467\\-140.3185\\-29\\13.90346\\-141.8185\\-29\\14.47372\\-144.8185\\-29\\14.50832\\-146.8185\\-29\\14.33276\\-148.3185\\-29\\13.94284\\-150.3185\\-29\\12.92477\\-152.8185\\-29\\11.72872\\-154.6072\\-29\\10.56778\\-155.8185\\-29\\8.728719\\-157.3243\\-29\\5.728719\\-158.8726\\-29\\4.228719\\-159.4175\\-29\\3.228719\\-159.5526\\-29\\0.7287188\\-159.6249\\-29\\-1.271281\\-159.5563\\-29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.271281\\-159.506\\-27\\-5.271281\\-158.516\\-27\\-6.771281\\-157.5182\\-27\\-8.271281\\-156.361\\-27\\-9.371599\\-155.3185\\-27\\-10.33163\\-153.8185\\-27\\-11.96123\\-150.8185\\-27\\-12.3491\\-148.3185\\-27\\-12.44603\\-146.8185\\-27\\-12.39182\\-144.8185\\-27\\-11.92101\\-142.3185\\-27\\-11.38492\\-140.8185\\-27\\-10.37532\\-139.3185\\-27\\-8.444246\\-136.8185\\-27\\-7.271281\\-135.6999\\-27\\-5.771281\\-134.6592\\-27\\-4.771281\\-134.0937\\-27\\-3.271281\\-133.5775\\-27\\-1.271281\\-133.1454\\-27\\0.7287188\\-132.9997\\-27\\2.728719\\-133.073\\-27\\3.728719\\-133.2095\\-27\\5.728719\\-133.7351\\-27\\6.728719\\-134.1015\\-27\\8.728719\\-135.2194\\-27\\10.72872\\-136.7478\\-27\\12.35372\\-138.8185\\-27\\13.3515\\-140.3185\\-27\\13.84925\\-141.8185\\-27\\14.46155\\-144.3185\\-27\\14.71167\\-146.8185\\-27\\14.36022\\-149.3185\\-27\\13.84468\\-151.3185\\-27\\13.22872\\-152.8884\\-27\\12.4242\\-154.3185\\-27\\10.57499\\-156.3185\\-27\\9.228719\\-157.42\\-27\\7.228719\\-158.6128\\-27\\6.728719\\-159.0187\\-27\\5.228719\\-159.5343\\-27\\2.728719\\-159.972\\-27\\0.7287188\\-160.0351\\-27\\-0.7712812\\-159.9249\\-27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.7712812\\-160.42\\-25\\-2.771281\\-159.9478\\-25\\-5.271281\\-159.0036\\-25\\-7.271281\\-157.4827\\-25\\-8.612997\\-156.3185\\-25\\-9.927359\\-154.8185\\-25\\-11.28464\\-152.3185\\-25\\-11.98175\\-150.8185\\-25\\-12.28464\\-148.3185\\-25\\-12.3678\\-146.3185\\-25\\-12.22991\\-144.8185\\-25\\-11.84628\\-142.8185\\-25\\-10.96144\\-140.8185\\-25\\-9.932618\\-139.3185\\-25\\-7.271281\\-136.2379\\-25\\-4.771281\\-134.6192\\-25\\-3.771281\\-134.1612\\-25\\-1.271281\\-133.5674\\-25\\0.7287188\\-133.4603\\-25\\2.728719\\-133.509\\-25\\4.728719\\-133.6979\\-25\\6.728719\\-134.5803\\-25\\8.728719\\-135.5917\\-25\\10.22872\\-136.6485\\-25\\11.34035\\-137.8185\\-25\\12.88855\\-139.8185\\-25\\13.4633\\-140.8185\\-25\\14.39495\\-143.8185\\-25\\14.84698\\-145.8185\\-25\\14.94911\\-146.8185\\-25\\14.85591\\-148.3185\\-25\\14.38412\\-150.3185\\-25\\13.92515\\-151.8185\\-25\\12.87651\\-154.3185\\-25\\10.67515\\-156.8185\\-25\\7.728719\\-158.9521\\-25\\6.728719\\-159.509\\-25\\5.228719\\-159.9542\\-25\\2.728719\\-160.5299\\-25\\0.7287188\\-160.6023\\-25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.271281\\-160.9965\\-23\\-3.271281\\-160.126\\-23\\-5.271281\\-159.3818\\-23\\-7.271281\\-157.8565\\-23\\-9.432798\\-155.8185\\-23\\-10.39628\\-154.3185\\-23\\-11.44267\\-152.3185\\-23\\-11.99461\\-150.8185\\-23\\-12.23324\\-148.3185\\-23\\-12.26933\\-146.8185\\-23\\-12.08845\\-144.8185\\-23\\-11.90064\\-143.8185\\-23\\-10.8491\\-141.3185\\-23\\-9.915627\\-139.8185\\-23\\-9.054068\\-138.8185\\-23\\-7.103042\\-136.8185\\-23\\-5.771281\\-135.7379\\-23\\-4.771281\\-135.1522\\-23\\-2.271281\\-134.1766\\-23\\-0.2712812\\-133.7738\\-23\\0.7287188\\-133.6746\\-23\\2.728719\\-133.7245\\-23\\4.728719\\-134.0765\\-23\\9.228719\\-136.2086\\-23\\10.72872\\-137.5296\\-23\\12.33653\\-139.3185\\-23\\13.40512\\-140.8185\\-23\\14.42369\\-143.8185\\-23\\14.86443\\-145.3185\\-23\\15.05069\\-146.8185\\-23\\14.92515\\-149.3185\\-23\\14.37455\\-151.3185\\-23\\13.28601\\-154.3185\\-23\\12.95635\\-154.8185\\-23\\11.22872\\-156.7847\\-23\\8.728719\\-158.9846\\-23\\5.228719\\-160.5397\\-23\\3.728719\\-160.9997\\-23\\2.728719\\-161.131\\-23\\0.7287188\\-161.1848\\-23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.771281\\-160.9757\\-21\\-4.271281\\-160.3818\\-21\\-5.771281\\-159.5609\\-21\\-7.271281\\-158.5038\\-21\\-8.97267\\-156.8185\\-21\\-10.39847\\-154.8185\\-21\\-11.36523\\-152.8185\\-21\\-11.96771\\-150.8185\\-21\\-12.24003\\-147.8185\\-21\\-11.93575\\-144.8185\\-21\\-11.47738\\-143.3185\\-21\\-10.82857\\-141.8185\\-21\\-9.974161\\-140.3185\\-21\\-8.81017\\-138.8185\\-21\\-7.771281\\-137.7722\\-21\\-5.771281\\-136.2324\\-21\\-3.771281\\-135.2169\\-21\\-2.271281\\-134.6827\\-21\\-0.2712812\\-134.3355\\-21\\1.228719\\-134.1807\\-21\\2.728719\\-134.2771\\-21\\4.728719\\-134.5972\\-21\\6.728719\\-135.2907\\-21\\7.728719\\-135.7492\\-21\\9.228719\\-136.6324\\-21\\10.65908\\-137.8185\\-21\\11.6509\\-138.8185\\-21\\12.87137\\-140.3185\\-21\\13.93647\\-142.3185\\-21\\14.34\\-143.3185\\-21\\14.89841\\-145.3185\\-21\\15.09936\\-147.8185\\-21\\14.99106\\-149.8185\\-21\\14.40512\\-152.3185\\-21\\13.82267\\-153.8185\\-21\\13.27978\\-154.8185\\-21\\11.86333\\-156.8185\\-21\\10.22872\\-158.4379\\-21\\8.728719\\-159.5296\\-21\\6.728719\\-160.556\\-21\\5.728719\\-160.9456\\-21\\3.228719\\-161.5219\\-21\\1.228719\\-161.5954\\-21\\-0.7712812\\-161.472\\-21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.271281\\-161.5534\\-19\\-4.771281\\-160.8663\\-19\\-6.271281\\-159.9966\\-19\\-7.735567\\-158.8185\\-19\\-9.957422\\-156.3185\\-19\\-11.92669\\-152.3185\\-19\\-12.13978\\-150.3185\\-19\\-12.20202\\-148.8185\\-19\\-12.12156\\-146.8185\\-19\\-11.82234\\-144.8185\\-19\\-10.01287\\-141.3185\\-19\\-9.386007\\-140.3185\\-19\\-7.271281\\-138.1688\\-19\\-5.771281\\-137.0964\\-19\\-4.271281\\-136.212\\-19\\-3.271281\\-135.7674\\-19\\-0.2712812\\-135.2581\\-19\\0.7287188\\-135.1522\\-19\\2.728719\\-135.2095\\-19\\5.228719\\-135.6612\\-19\\6.728719\\-136.2492\\-19\\9.228719\\-137.6523\\-19\\10.72872\\-138.99\\-19\\11.95741\\-140.3185\\-19\\12.95755\\-141.8185\\-19\\13.87844\\-143.8185\\-19\\14.38036\\-145.3185\\-19\\14.84468\\-147.3185\\-19\\14.9691\\-148.8185\\-19\\14.79798\\-150.3185\\-19\\14.04122\\-152.8185\\-19\\13.86234\\-153.8185\\-19\\13.4655\\-154.8185\\-19\\12.8352\\-155.8185\\-19\\10.72872\\-158.3604\\-19\\8.728719\\-160.0485\\-19\\7.228719\\-161.0219\\-19\\6.228719\\-161.4297\\-19\\4.228719\\-161.9045\\-19\\0.7287188\\-162.2838\\-19\\-1.271281\\-162.0142\\-19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "27"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.7287188\\-163.3243\\-17\\-1.271281\\-163.0501\\-17\\-3.271281\\-162.1979\\-17\\-5.271281\\-161.5221\\-17\\-6.771281\\-160.4306\\-17\\-8.50683\\-158.8185\\-17\\-9.446281\\-157.8185\\-17\\-10.45298\\-156.3185\\-17\\-11.50469\\-154.3185\\-17\\-12.0158\\-152.8185\\-17\\-12.26933\\-150.3185\\-17\\-12.2435\\-148.8185\\-17\\-12.08075\\-146.8185\\-17\\-11.52916\\-144.8185\\-17\\-10.47753\\-142.8185\\-17\\-9.4785\\-141.3185\\-17\\-8.542588\\-140.3185\\-17\\-6.771281\\-138.6381\\-17\\-5.271281\\-137.5829\\-17\\-3.271281\\-136.6444\\-17\\-1.771281\\-136.1133\\-17\\0.7287188\\-135.7907\\-17\\2.728719\\-135.9098\\-17\\4.728719\\-136.2706\\-17\\7.228719\\-137.5503\\-17\\8.728719\\-138.1269\\-17\\10.63472\\-139.8185\\-17\\11.9027\\-141.3185\\-17\\13.34235\\-143.8185\\-17\\13.82006\\-144.8185\\-17\\14.47193\\-147.8185\\-17\\14.55733\\-148.8185\\-17\\14.47661\\-150.8185\\-17\\14.04431\\-152.8185\\-17\\13.83276\\-154.3185\\-17\\12.77009\\-156.3185\\-17\\10.93237\\-158.8185\\-17\\8.702775\\-160.8185\\-17\\6.228719\\-162.039\\-17\\3.728719\\-162.9273\\-17\\2.728719\\-163.1253\\-17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-2.771281\\-163.415\\-15\\-3.771281\\-163.0526\\-15\\-5.771281\\-162.0211\\-15\\-7.271281\\-161.0078\\-15\\-9.487383\\-158.8185\\-15\\-9.865231\\-158.3185\\-15\\-10.55003\\-156.8185\\-15\\-11.49003\\-155.3185\\-15\\-11.96479\\-154.3185\\-15\\-12.29196\\-152.3185\\-15\\-12.40064\\-150.8185\\-15\\-12.30253\\-148.8185\\-15\\-11.94436\\-146.3185\\-15\\-10.41907\\-143.3185\\-15\\-9.365459\\-141.8185\\-15\\-7.271281\\-139.6763\\-15\\-5.271281\\-138.2872\\-15\\-3.771281\\-137.642\\-15\\-1.771281\\-137.1167\\-15\\0.7287188\\-136.7095\\-15\\4.228719\\-137.1707\\-15\\5.728719\\-137.6113\\-15\\7.228719\\-138.2463\\-15\\9.228719\\-139.5954\\-15\\10.72872\\-141.0194\\-15\\11.40098\\-141.8185\\-15\\13.44035\\-144.8185\\-15\\13.85808\\-146.3185\\-15\\14.33028\\-148.8185\\-15\\14.34\\-150.8185\\-15\\13.91155\\-154.3185\\-15\\13.3515\\-155.8185\\-15\\12.84496\\-156.8185\\-15\\11.8352\\-158.3185\\-15\\10.48431\\-159.8185\\-15\\8.728719\\-161.4933\\-15\\6.228719\\-162.8427\\-15\\4.728719\\-163.4562\\-15\\1.728719\\-163.8757\\-15\\0.2287188\\-163.9072\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "29"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.2287188\\-164.9321\\-13\\-1.771281\\-164.4738\\-13\\-3.771281\\-163.7219\\-13\\-5.271281\\-163.3877\\-13\\-8.271281\\-160.965\\-13\\-9.417254\\-159.8185\\-13\\-10.50711\\-158.3185\\-13\\-11.94267\\-155.3185\\-13\\-12.39406\\-153.3185\\-13\\-12.47885\\-150.3185\\-13\\-12.35461\\-148.8185\\-13\\-12.00426\\-146.8185\\-13\\-10.96429\\-144.8185\\-13\\-9.271281\\-142.3204\\-13\\-7.230683\\-140.3185\\-13\\-5.271281\\-139.1205\\-13\\-3.271281\\-138.0825\\-13\\-1.271281\\-137.647\\-13\\0.7287188\\-137.5495\\-13\\2.728719\\-137.6101\\-13\\5.228719\\-138.1193\\-13\\6.728719\\-139.0432\\-13\\8.228719\\-139.663\\-13\\9.119103\\-140.3185\\-13\\10.72872\\-141.954\\-13\\11.8889\\-143.3185\\-13\\12.88036\\-144.8185\\-13\\13.3352\\-145.8185\\-13\\13.82267\\-147.3185\\-13\\14.03229\\-148.8185\\-13\\14.13477\\-150.8185\\-13\\13.95154\\-154.3185\\-13\\13.41925\\-156.3185\\-13\\11.9081\\-158.8185\\-13\\10.72872\\-160.2131\\-13\\8.228719\\-162.4987\\-13\\6.728719\\-163.4898\\-13\\4.228719\\-164.1097\\-13\\3.228719\\-164.5408\\-13\\1.228719\\-164.9478\\-13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-3.271281\\-164.9709\\-11\\-5.771281\\-163.9072\\-11\\-7.271281\\-162.9867\\-11\\-9.974498\\-160.3185\\-11\\-10.99843\\-158.8185\\-11\\-11.91907\\-156.8185\\-11\\-12.46479\\-154.8185\\-11\\-12.60681\\-152.8185\\-11\\-12.58378\\-150.8185\\-11\\-12.41111\\-148.8185\\-11\\-11.95093\\-146.8185\\-11\\-10.35999\\-144.3185\\-11\\-9.271281\\-142.9763\\-11\\-6.771281\\-140.6415\\-11\\-5.271281\\-139.6891\\-11\\-2.271281\\-138.6746\\-11\\0.7287188\\-138.1454\\-11\\3.728719\\-138.6207\\-11\\6.728719\\-139.6786\\-11\\8.228719\\-140.5795\\-11\\10.72872\\-142.9246\\-11\\11.92113\\-144.3185\\-11\\12.89775\\-145.8185\\-11\\13.40837\\-146.8185\\-11\\13.92515\\-148.8185\\-11\\14.06075\\-152.8185\\-11\\13.94156\\-154.8185\\-11\\13.44924\\-156.8185\\-11\\12.40628\\-158.8185\\-11\\11.41015\\-160.3185\\-11\\8.728719\\-162.9957\\-11\\7.228719\\-163.8848\\-11\\4.728719\\-165.0337\\-11\\2.728719\\-165.5326\\-11\\0.7287188\\-165.6231\\-11\\-1.271281\\-165.5318\\-11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.271281\\-166.4273\\-9\\-3.271281\\-165.9847\\-9\\-5.771281\\-164.939\\-9\\-7.271281\\-164.0142\\-9\\-8.676523\\-162.8185\\-9\\-9.771281\\-161.6935\\-9\\-10.87478\\-160.3185\\-9\\-11.96709\\-158.3185\\-9\\-12.48344\\-156.8185\\-9\\-12.95724\\-154.8185\\-9\\-13.04846\\-152.8185\\-9\\-12.96479\\-150.8185\\-9\\-12.34343\\-148.3185\\-9\\-11.9691\\-147.3185\\-9\\-10.89628\\-145.3185\\-9\\-9.690689\\-143.8185\\-9\\-8.715526\\-142.8185\\-9\\-6.771281\\-141.2406\\-9\\-4.771281\\-140.1786\\-9\\-3.271281\\-139.63\\-9\\-1.271281\\-139.1786\\-9\\0.7287188\\-139.0809\\-9\\2.228719\\-139.154\\-9\\4.728719\\-139.7072\\-9\\5.728719\\-140.0908\\-9\\7.728719\\-141.0915\\-9\\9.228719\\-142.1443\\-9\\11.36866\\-144.3185\\-9\\12.40709\\-145.8185\\-9\\13.37844\\-147.8185\\-9\\13.87057\\-149.3185\\-9\\14.30931\\-152.8185\\-9\\13.86443\\-156.3185\\-9\\13.36443\\-157.8185\\-9\\12.39588\\-159.8185\\-9\\10.92024\\-161.8185\\-9\\9.228719\\-163.4804\\-9\\7.728719\\-164.5341\\-9\\5.728719\\-165.5333\\-9\\4.228719\\-166.0497\\-9\\2.228719\\-166.4542\\-9\\0.7287188\\-166.5329\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "32"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.7712812\\-167.3848\\-7\\-2.771281\\-166.9757\\-7\\-5.271281\\-165.8391\\-7\\-6.771281\\-165.0282\\-7\\-9.377184\\-162.8185\\-7\\-11.43931\\-159.8185\\-7\\-11.97152\\-158.8185\\-7\\-12.35732\\-157.3185\\-7\\-12.6648\\-154.3185\\-7\\-12.66\\-152.8185\\-7\\-12.45093\\-150.3185\\-7\\-11.84343\\-148.3185\\-7\\-11.01359\\-146.8185\\-7\\-9.969198\\-145.3185\\-7\\-9.271281\\-144.5486\\-7\\-7.271281\\-142.6365\\-7\\-4.771281\\-141.212\\-7\\-3.271281\\-140.5793\\-7\\-1.771281\\-140.1044\\-7\\0.7287188\\-139.9124\\-7\\3.228719\\-140.0975\\-7\\5.228719\\-140.7643\\-7\\7.228719\\-141.7025\\-7\\8.728719\\-142.6048\\-7\\10.72872\\-144.4036\\-7\\11.83761\\-145.8185\\-7\\12.8665\\-147.3185\\-7\\13.41432\\-148.3185\\-7\\13.93221\\-150.3185\\-7\\14.27336\\-152.8185\\-7\\14.28601\\-154.3185\\-7\\13.88036\\-157.3185\\-7\\13.4552\\-158.8185\\-7\\12.39896\\-160.8185\\-7\\10.91778\\-162.8185\\-7\\9.728719\\-163.9124\\-7\\8.228719\\-165.0588\\-7\\6.728719\\-165.8906\\-7\\4.228719\\-166.9775\\-7\\2.728719\\-167.3391\\-7\\0.7287188\\-167.4811\\-7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "33"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-1.771281\\-167.9542\\-5\\-3.271281\\-167.5379\\-5\\-4.771281\\-166.9847\\-5\\-7.271281\\-165.4656\\-5\\-8.271281\\-164.5796\\-5\\-9.94198\\-162.8185\\-5\\-10.94446\\-161.3185\\-5\\-11.89406\\-159.3185\\-5\\-12.46626\\-157.3185\\-5\\-12.71399\\-154.3185\\-5\\-12.38018\\-151.3185\\-5\\-11.51171\\-148.8185\\-5\\-10.39793\\-146.8185\\-5\\-9.271281\\-145.478\\-5\\-8.107374\\-144.3185\\-5\\-6.771281\\-143.1866\\-5\\-4.771281\\-142.0776\\-5\\-2.271281\\-141.2072\\-5\\0.7287188\\-140.8663\\-5\\2.728719\\-140.9959\\-5\\4.228719\\-141.2169\\-5\\6.728719\\-142.0831\\-5\\8.728719\\-143.2324\\-5\\10.04348\\-144.3185\\-5\\11.22872\\-145.5048\\-5\\12.29798\\-146.8185\\-5\\13.44351\\-148.8185\\-5\\13.84\\-149.8185\\-5\\14.39669\\-151.8185\\-5\\14.59722\\-154.3185\\-5\\14.37455\\-157.3185\\-5\\13.95258\\-158.8185\\-5\\13.39582\\-160.3185\\-5\\11.85145\\-162.8185\\-5\\10.22872\\-164.5365\\-5\\9.228719\\-165.4269\\-5\\6.728719\\-166.9591\\-5\\5.228719\\-167.5221\\-5\\3.728719\\-167.939\\-5\\2.728719\\-168.0805\\-5\\0.7287188\\-168.1593\\-5"
-                     }
-                  }
-               ]
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "6"
-            }
-         },
-         {
-            "3006,002a" : {
-               "Name" : "ROIDisplayColor",
-               "Type" : "String",
-               "Value" : "0\\0\\255"
-            },
-            "3006,0040" : {
-               "Name" : "ContourSequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002384"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "0"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-119.4995\\-203.5678\\-165\\-120.5937\\-201.6146\\-165\\-120.5044\\-199.6615\\-165\\-119.4168\\-198.4154\\-165\\-117.7781\\-199.6615\\-165\\-117.4883\\-201.6146\\-165\\-119.3273\\-203.5678\\-165"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002383"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "1"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-119.4168\\-204.4669\\-163\\-120.5383\\-203.5678\\-163\\-120.7776\\-201.6146\\-163\\-119.8859\\-199.6615\\-163\\-119.4168\\-199.1956\\-163\\-118.7628\\-199.6615\\-163\\-117.4637\\-201.0101\\-163\\-117.067\\-201.6146\\-163\\-118.4403\\-203.5678\\-163"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002382"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "2"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-119.4168\\-204.5322\\-161\\-120.6583\\-203.5678\\-161\\-120.7851\\-201.6146\\-161\\-119.4168\\-199.7137\\-161\\-117.4637\\-200.5271\\-161\\-116.7459\\-201.6146\\-161\\-118.3749\\-203.5678\\-161"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002381"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "6"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "3"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-119.4168\\-204.3647\\-159\\-120.2877\\-203.5678\\-159\\-120.7776\\-201.6146\\-159\\-119.4168\\-199.7281\\-159\\-117.4637\\-199.9097\\-159\\-116.4779\\-201.6146\\-159"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002380"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "6"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "4"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-119.4168\\-203.5156\\-157\\-120.993\\-201.6146\\-157\\-119.4168\\-199.7281\\-157\\-117.4637\\-199.6877\\-157\\-116.4161\\-201.6146\\-157\\-117.4637\\-202.5824\\-157"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002379"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "5"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-121.37\\-202.397\\-155\\-122.0797\\-201.6146\\-155\\-121.37\\-200.5042\\-155\\-119.4168\\-199.6994\\-155\\-117.4637\\-199.8824\\-155\\-116.637\\-201.6146\\-155\\-117.4637\\-202.3495\\-155\\-119.4168\\-202.8882\\-155"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002378"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "6"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-121.37\\-203.1456\\-153\\-122.5448\\-201.6146\\-153\\-122.4594\\-199.6615\\-153\\-123.3231\\-198.3154\\-153\\-125.2762\\-197.9441\\-153\\-127.2293\\-198.8704\\-153\\-128.3016\\-197.7084\\-153\\-127.2293\\-196.5592\\-153\\-125.2762\\-196.9653\\-153\\-123.3231\\-196.9339\\-153\\-121.37\\-197.3683\\-153\\-119.6871\\-199.6615\\-153\\-118.0209\\-201.6146\\-153\\-119.4168\\-202.6304\\-153"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002377"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-121.37\\-203.344\\-151\\-122.6089\\-201.6146\\-151\\-122.4269\\-199.6615\\-151\\-121.37\\-198.3038\\-151\\-120.3819\\-199.6615\\-151\\-118.5777\\-201.6146\\-151\\-119.4168\\-202.4454\\-151"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002376"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-171.2091\\-149\\-43.15147\\-170.3646\\-149\\-45.1981\\-168.3139\\-149\\-46.11063\\-166.4584\\-149\\-45.1981\\-165.2122\\-149\\-42.53649\\-162.5521\\-149\\-41.29185\\-161.6277\\-149\\-39.33873\\-161.7262\\-149\\-37.3856\\-163.6955\\-149\\-36.4542\\-164.5053\\-149\\-34.88807\\-166.4584\\-149\\-36.44037\\-168.4115\\-149\\-38.3279\\-170.3646\\-149\\-39.33873\\-171.1723\\-149"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002375"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-45.1981\\-173.0039\\-147\\-46.62139\\-172.3178\\-147\\-47.15123\\-171.9095\\-147\\-49.10435\\-171.6348\\-147\\-51.05748\\-170.9334\\-147\\-51.39357\\-170.3646\\-147\\-50.16919\\-168.4115\\-147\\-49.36344\\-166.4584\\-147\\-49.10435\\-166.172\\-147\\-46.74353\\-164.5053\\-147\\-45.1981\\-163.6972\\-147\\-43.24498\\-161.7185\\-147\\-41.29185\\-161.0959\\-147\\-39.33873\\-161.5796\\-147\\-37.3856\\-163.5331\\-147\\-35.54006\\-164.5053\\-147\\-34.40963\\-166.4584\\-147\\-38.14181\\-170.3646\\-147\\-39.33873\\-171.3974\\-147\\-41.29185\\-172.114\\-147\\-43.24498\\-173.6062\\-147"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002374"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-51.05748\\-172.2589\\-145\\-51.88936\\-170.3646\\-145\\-49.9113\\-166.4584\\-145\\-49.10435\\-165.6514\\-145\\-45.1981\\-163.6128\\-145\\-43.24498\\-161.6333\\-145\\-41.29185\\-161.015\\-145\\-39.33873\\-161.5001\\-145\\-37.3856\\-162.8581\\-145\\-35.43248\\-163.8162\\-145\\-34.65681\\-164.5053\\-145\\-34.33782\\-166.4584\\-145\\-37.3856\\-169.495\\-145\\-39.33873\\-170.5286\\-145\\-41.29185\\-170.5388\\-145\\-45.1981\\-169.2225\\-145\\-47.15123\\-169.6139\\-145\\-49.10435\\-171.4739\\-145"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002373"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-204.958\\-143\\-124.2414\\-203.5678\\-143\\-123.3231\\-202.4856\\-143\\-121.37\\-201.0149\\-143\\-119.4168\\-200.6575\\-143\\-117.4637\\-200.6332\\-143\\-116.4622\\-201.6146\\-143\\-117.4637\\-202.5912\\-143\\-119.4168\\-202.5718\\-143\\-120.4331\\-203.5678\\-143\\-121.37\\-204.7359\\-143"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002373"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-51.05748\\-172.1929\\-143\\-51.86792\\-170.3646\\-143\\-51.05748\\-168.578\\-143\\-49.93924\\-166.4584\\-143\\-49.10435\\-165.6278\\-143\\-45.1981\\-163.6128\\-143\\-43.24498\\-161.6333\\-143\\-41.29185\\-161.0054\\-143\\-39.33873\\-161.0699\\-143\\-37.3856\\-161.6558\\-143\\-34.47985\\-164.5053\\-143\\-34.13548\\-166.4584\\-143\\-36.05906\\-168.4115\\-143\\-37.3856\\-169.4889\\-143\\-39.33873\\-170.3873\\-143\\-41.29185\\-170.3873\\-143\\-45.1981\\-168.52\\-143\\-47.15123\\-169.4972\\-143\\-49.10435\\-171.4468\\-143"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002372"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-206.564\\-141\\-124.4056\\-205.5209\\-141\\-124.8603\\-203.5678\\-141\\-123.4396\\-201.6146\\-141\\-123.1701\\-201.6146\\-141\\-121.37\\-202.3617\\-141\\-119.4168\\-201.3438\\-141\\-117.4637\\-200.4936\\-141\\-116.4512\\-201.6146\\-141\\-117.4637\\-202.6\\-141\\-119.4168\\-203.9364\\-141\\-120.4755\\-205.5209\\-141\\-121.37\\-206.4524\\-141"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002372"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-51.05748\\-171.144\\-141\\-51.53709\\-170.3646\\-141\\-50.94897\\-168.4115\\-141\\-49.93924\\-166.4584\\-141\\-49.10435\\-165.6278\\-141\\-45.1981\\-163.6128\\-141\\-43.24498\\-161.6333\\-141\\-41.29185\\-161.0054\\-141\\-39.33873\\-161.0054\\-141\\-37.3856\\-161.782\\-141\\-35.43248\\-163.8127\\-141\\-34.65681\\-164.5053\\-141\\-33.71507\\-166.4584\\-141\\-35.50452\\-168.4115\\-141\\-37.3856\\-169.4889\\-141\\-39.33873\\-170.3873\\-141\\-41.29185\\-170.3873\\-141\\-45.06961\\-168.4115\\-141\\-45.335\\-168.4115\\-141\\-47.15123\\-169.4397\\-141\\-49.10435\\-171.4324\\-141"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002371"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-208.2524\\-139\\-124.6333\\-207.474\\-139\\-125.2762\\-206.9345\\-139\\-126.2388\\-205.5209\\-139\\-126.9103\\-203.5678\\-139\\-127.987\\-201.6146\\-139\\-129.8008\\-199.6615\\-139\\-129.9937\\-197.7084\\-139\\-129.1825\\-196.8613\\-139\\-127.2293\\-195.7637\\-139\\-126.0461\\-197.7084\\-139\\-126.0514\\-199.6615\\-139\\-125.2762\\-200.3583\\-139\\-123.3231\\-200.6518\\-139\\-120.1878\\-203.5678\\-139\\-120.3096\\-205.5209\\-139\\-121.37\\-206.5723\\-139"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002371"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "16"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-51.06511\\-170.3646\\-139\\-50.9465\\-168.4115\\-139\\-49.93924\\-166.4584\\-139\\-49.10435\\-165.6278\\-139\\-45.1981\\-163.6128\\-139\\-43.24498\\-161.6333\\-139\\-41.29185\\-161.0054\\-139\\-39.33873\\-161.0054\\-139\\-37.3856\\-162.4204\\-139\\-35.33741\\-164.5053\\-139\\-33.62796\\-166.4584\\-139\\-35.38265\\-168.4115\\-139\\-37.3856\\-169.4889\\-139\\-39.33873\\-170.3873\\-139\\-41.29185\\-170.3873\\-139\\-43.24498\\-169.3976\\-139\\-45.1981\\-167.7354\\-139\\-47.15123\\-168.4348\\-139\\-49.10435\\-171.2141\\-139"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002370"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-125.2762\\-208.1304\\-137\\-125.9399\\-207.474\\-137\\-127.3648\\-205.5209\\-137\\-129.1825\\-202.1513\\-137\\-129.5619\\-201.6146\\-137\\-130.3909\\-199.6615\\-137\\-130.0337\\-197.7084\\-137\\-129.1825\\-196.8433\\-137\\-127.2293\\-195.7629\\-137\\-125.2762\\-196.6599\\-137\\-124.2997\\-197.7084\\-137\\-122.2621\\-199.6615\\-137\\-121.0577\\-201.6146\\-137\\-120.2314\\-203.5678\\-137\\-119.9222\\-205.5209\\-137\\-121.37\\-206.7067\\-137\\-123.3231\\-208.4724\\-137"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002370"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-170.5765\\-137\\-50.00279\\-170.3646\\-137\\-50.9301\\-168.4115\\-137\\-49.93924\\-166.4584\\-137\\-49.10435\\-165.6278\\-137\\-47.15123\\-164.4677\\-137\\-45.1981\\-163.5647\\-137\\-43.24498\\-161.6333\\-137\\-41.29185\\-161.0054\\-137\\-39.33873\\-161.0054\\-137\\-37.39323\\-162.5521\\-137\\-33.62796\\-166.4584\\-137\\-35.38265\\-168.4115\\-137\\-37.3856\\-169.4889\\-137\\-39.33873\\-170.3873\\-137\\-41.29185\\-170.3873\\-137\\-43.24498\\-169.3929\\-137\\-45.1981\\-167.5378\\-137\\-47.15123\\-167.6395\\-137\\-47.95702\\-168.4115\\-137"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002369"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-125.2762\\-207.7558\\-135\\-127.2293\\-206.295\\-135\\-127.9764\\-205.5209\\-135\\-129.4864\\-203.5678\\-135\\-130.3591\\-201.6146\\-135\\-130.6917\\-199.6615\\-135\\-130.0337\\-197.7084\\-135\\-129.1825\\-196.8433\\-135\\-127.2293\\-195.8907\\-135\\-125.2762\\-196.606\\-135\\-123.3231\\-197.1559\\-135\\-121.37\\-198.1381\\-135\\-119.4268\\-199.6615\\-135\\-118.9955\\-201.6146\\-135\\-119.7529\\-203.5678\\-135\\-119.2814\\-205.5209\\-135\\-121.37\\-206.9043\\-135\\-123.3231\\-208.0513\\-135"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002369"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-170.3873\\-135\\-43.24498\\-169.3881\\-135\\-45.1981\\-167.478\\-135\\-47.15123\\-167.5463\\-135\\-48.03013\\-168.4115\\-135\\-49.10435\\-169.7198\\-135\\-50.92669\\-168.4115\\-135\\-49.93924\\-166.4584\\-135\\-47.15123\\-163.8424\\-135\\-45.1981\\-163.3728\\-135\\-43.24498\\-161.624\\-135\\-41.29185\\-161.0054\\-135\\-39.33873\\-161.0054\\-135\\-37.3856\\-162.3643\\-135\\-35.28936\\-164.5053\\-135\\-33.62796\\-166.4584\\-135\\-35.38265\\-168.4115\\-135\\-37.3856\\-169.4064\\-135\\-39.33873\\-170.2561\\-135"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002368"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-206.3476\\-133\\-129.9039\\-203.5678\\-133\\-130.6826\\-201.6146\\-133\\-130.7586\\-199.6615\\-133\\-130.0337\\-197.7084\\-133\\-129.1825\\-196.8433\\-133\\-127.2293\\-196.3109\\-133\\-125.2762\\-197.0659\\-133\\-121.37\\-196.7771\\-133\\-119.4168\\-198.278\\-133\\-117.4864\\-199.6615\\-133\\-118.4003\\-201.6146\\-133\\-119.06\\-203.5678\\-133\\-120.1311\\-205.5209\\-133\\-121.37\\-206.6685\\-133\\-123.3231\\-207.17\\-133\\-125.2762\\-207.1172\\-133"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002368"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.32029\\-170.3646\\-133\\-43.24498\\-169.3881\\-133\\-45.1981\\-167.478\\-133\\-47.15123\\-167.5463\\-133\\-49.10435\\-169.5208\\-133\\-50.92669\\-168.4115\\-133\\-49.93924\\-166.4584\\-133\\-47.15123\\-163.7041\\-133\\-45.1981\\-162.9292\\-133\\-43.24498\\-161.624\\-133\\-41.29185\\-161.0054\\-133\\-39.33873\\-161.0054\\-133\\-37.3856\\-161.7295\\-133\\-35.43248\\-163.7582\\-133\\-34.61152\\-164.5053\\-133\\-33.62796\\-166.4584\\-133\\-35.43248\\-168.2761\\-133\\-37.3856\\-168.9142\\-133\\-39.33873\\-169.7291\\-133"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002367"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-206.4227\\-131\\-129.9608\\-203.5678\\-131\\-130.7389\\-201.6146\\-131\\-130.7586\\-199.6615\\-131\\-130.0337\\-197.7084\\-131\\-129.1825\\-196.8433\\-131\\-127.2293\\-196.497\\-131\\-125.2762\\-197.4609\\-131\\-123.3231\\-197.1387\\-131\\-121.37\\-197.1465\\-131\\-119.4168\\-197.8169\\-131\\-118.1332\\-199.6615\\-131\\-118.973\\-203.5678\\-131\\-119.4168\\-204.0694\\-131\\-120.3186\\-205.5209\\-131\\-121.37\\-206.5767\\-131\\-123.3231\\-207.0393\\-131\\-125.2762\\-207.0393\\-131"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002367"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.30143\\-170.3646\\-131\\-43.24498\\-169.3881\\-131\\-45.1981\\-167.478\\-131\\-47.15123\\-167.5463\\-131\\-49.10435\\-169.4972\\-131\\-50.92669\\-168.4115\\-131\\-49.93924\\-166.4584\\-131\\-47.15123\\-163.6592\\-131\\-45.15527\\-162.5521\\-131\\-43.24498\\-161.5885\\-131\\-41.29185\\-161.0054\\-131\\-39.33873\\-161.0054\\-131\\-37.3856\\-161.5968\\-131\\-34.46535\\-164.5053\\-131\\-33.63014\\-166.4584\\-131\\-35.43248\\-167.7284\\-131\\-37.3856\\-167.776\\-131\\-39.33873\\-169.5411\\-131"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002366"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-206.6955\\-129\\-128.4934\\-205.5209\\-129\\-129.9666\\-203.5678\\-129\\-130.7389\\-201.6146\\-129\\-130.7586\\-199.6615\\-129\\-130.128\\-197.7084\\-129\\-129.1825\\-196.7371\\-129\\-127.2293\\-196.4582\\-129\\-125.2762\\-196.9323\\-129\\-123.3231\\-196.8128\\-129\\-121.37\\-197.6276\\-129\\-119.4168\\-197.7471\\-129\\-118.2459\\-199.6615\\-129\\-118.7921\\-201.6146\\-129\\-118.973\\-203.5678\\-129\\-120.262\\-205.5209\\-129\\-121.37\\-206.7145\\-129\\-123.3231\\-207.2035\\-129\\-125.2762\\-207.0486\\-129"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002366"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.30143\\-170.3646\\-129\\-43.24498\\-169.3881\\-129\\-45.1981\\-167.478\\-129\\-47.15123\\-167.5463\\-129\\-49.10435\\-169.4972\\-129\\-50.92669\\-168.4115\\-129\\-49.93924\\-166.4584\\-129\\-48.09834\\-164.5053\\-129\\-45.1981\\-161.8307\\-129\\-41.29185\\-161.0054\\-129\\-39.33873\\-161.0054\\-129\\-37.3856\\-161.584\\-129\\-34.45126\\-164.5053\\-129\\-33.64341\\-166.4584\\-129\\-35.43248\\-167.5284\\-129\\-37.3856\\-167.6038\\-129\\-39.33873\\-169.5001\\-129"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "27"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-208.1576\\-127\\-125.2762\\-207.3932\\-127\\-127.2293\\-207.097\\-127\\-128.6942\\-205.5209\\-127\\-129.9666\\-203.5678\\-127\\-130.7389\\-201.6146\\-127\\-130.7586\\-199.6615\\-127\\-130.5285\\-197.7084\\-127\\-129.1825\\-196.2082\\-127\\-127.2293\\-196.0701\\-127\\-123.3231\\-196.5014\\-127\\-121.37\\-197.5201\\-127\\-119.4168\\-197.7459\\-127\\-117.7998\\-199.6615\\-127\\-118.4891\\-201.6146\\-127\\-118.9639\\-203.5678\\-127\\-119.6406\\-205.5209\\-127\\-120.7763\\-207.474\\-127\\-121.37\\-208.0513\\-127"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-115.5106\\-206.2984\\-127\\-116.1531\\-205.5209\\-127\\-115.2401\\-203.5678\\-127\\-113.5575\\-201.7094\\-127\\-111.6043\\-203.2542\\-127\\-111.3686\\-203.5678\\-127\\-112.5125\\-205.5209\\-127\\-113.5575\\-206.5467\\-127"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002365"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "29"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.30143\\-170.3646\\-127\\-43.24498\\-169.3881\\-127\\-45.1981\\-167.478\\-127\\-47.15123\\-167.5463\\-127\\-49.10435\\-169.4972\\-127\\-50.92669\\-168.4115\\-127\\-49.95071\\-166.4584\\-127\\-48.54872\\-164.5053\\-127\\-45.1981\\-161.6746\\-127\\-43.24498\\-161.0873\\-127\\-39.33873\\-161.0054\\-127\\-37.3856\\-161.584\\-127\\-34.45126\\-164.5053\\-127\\-33.64745\\-166.4584\\-127\\-35.43248\\-167.5004\\-127\\-37.3856\\-167.5673\\-127\\-39.33873\\-169.5001\\-127"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.0329\\-125\\-127.8083\\-207.474\\-125\\-128.8464\\-205.5209\\-125\\-130.0424\\-203.5678\\-125\\-130.7389\\-201.6146\\-125\\-130.7292\\-197.7084\\-125\\-129.1825\\-195.8907\\-125\\-127.2293\\-195.7928\\-125\\-125.2762\\-195.8218\\-125\\-123.3231\\-196.0701\\-125\\-119.4168\\-197.5075\\-125\\-117.4637\\-199.5872\\-125\\-118.3749\\-201.6146\\-125\\-118.8051\\-203.5678\\-125\\-118.8259\\-205.5209\\-125\\-121.37\\-207.9114\\-125\\-123.3231\\-208.5313\\-125\\-125.2762\\-208.6126\\-125"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-115.5106\\-206.6492\\-125\\-116.367\\-205.5209\\-125\\-115.2515\\-203.5678\\-125\\-113.5575\\-201.6223\\-125\\-111.6043\\-203.1936\\-125\\-111.3338\\-203.5678\\-125\\-112.5125\\-205.5209\\-125\\-113.5575\\-206.5515\\-125"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002364"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "32"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.30143\\-170.3646\\-125\\-43.24498\\-169.3321\\-125\\-45.1981\\-167.4105\\-125\\-47.15123\\-167.5463\\-125\\-49.10435\\-169.4972\\-125\\-50.92669\\-168.4115\\-125\\-49.95635\\-166.4584\\-125\\-48.84526\\-164.5053\\-125\\-46.73161\\-162.5521\\-125\\-45.1981\\-161.6434\\-125\\-43.24498\\-161.0054\\-125\\-39.33873\\-161.0054\\-125\\-37.3856\\-161.584\\-125\\-34.45126\\-164.5053\\-125\\-33.64745\\-166.4584\\-125\\-35.43248\\-167.5004\\-125\\-37.3856\\-167.5673\\-125\\-39.33873\\-169.5001\\-125"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "33"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2358\\-123\\-127.9872\\-207.474\\-123\\-129.6649\\-205.5209\\-123\\-130.5003\\-203.5678\\-123\\-130.7487\\-201.6146\\-123\\-130.7586\\-197.7084\\-123\\-129.1825\\-195.7928\\-123\\-125.2762\\-195.7476\\-123\\-123.3231\\-195.7928\\-123\\-121.37\\-196.152\\-123\\-119.4168\\-196.8409\\-123\\-118.4508\\-197.7084\\-123\\-118.2183\\-199.6615\\-123\\-118.3101\\-201.6146\\-123\\-118.1062\\-203.5678\\-123\\-117.6253\\-205.5209\\-123\\-119.9837\\-207.474\\-123\\-121.37\\-208.3961\\-123\\-123.3231\\-208.7068\\-123\\-125.2762\\-208.873\\-123"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "34"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-115.5106\\-205.8584\\-123\\-116.822\\-205.5209\\-123\\-115.5106\\-204.4777\\-123\\-115.2401\\-203.5678\\-123\\-113.5575\\-201.6223\\-123\\-111.6043\\-203.1936\\-123\\-111.3338\\-203.5678\\-123\\-112.4254\\-205.5209\\-123\\-113.5575\\-206.5646\\-123"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002363"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.30133\\-170.3646\\-123\\-43.24498\\-168.7758\\-123\\-45.1981\\-166.9525\\-123\\-47.15123\\-167.5463\\-123\\-49.10435\\-169.4972\\-123\\-50.92669\\-168.4115\\-123\\-49.10435\\-164.8212\\-123\\-48.88055\\-164.5053\\-123\\-46.83384\\-162.5521\\-123\\-45.1981\\-161.6434\\-123\\-43.24498\\-161.0054\\-123\\-39.33873\\-161.0054\\-123\\-37.3856\\-161.584\\-123\\-34.45126\\-164.5053\\-123\\-33.64745\\-166.4584\\-123\\-35.43248\\-167.5004\\-123\\-37.3856\\-167.5673\\-123\\-39.33873\\-169.5001\\-123"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2563\\-121\\-129.9137\\-205.5209\\-121\\-130.7197\\-203.5678\\-121\\-130.7586\\-197.7084\\-121\\-129.1825\\-195.7928\\-121\\-127.2293\\-195.7476\\-121\\-125.2762\\-195.5669\\-121\\-123.3231\\-195.5026\\-121\\-121.37\\-195.7928\\-121\\-119.4168\\-196.8074\\-121\\-118.6712\\-197.7084\\-121\\-118.6107\\-199.6615\\-121\\-118.2693\\-201.6146\\-121\\-117.4637\\-203.2483\\-121\\-116.5873\\-203.5678\\-121\\-116.3163\\-205.5209\\-121\\-117.4637\\-206.4771\\-121\\-117.7984\\-207.474\\-121\\-119.4168\\-208.5975\\-121\\-123.3231\\-208.9218\\-121\\-125.2762\\-208.9652\\-121"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-206.7537\\-121\\-115.2868\\-205.5209\\-121\\-115.2288\\-203.5678\\-121\\-113.5575\\-201.6223\\-121\\-111.6043\\-203.1646\\-121\\-111.3114\\-203.5678\\-121\\-111.8038\\-205.5209\\-121"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002362"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-169.4972\\-121\\-50.92669\\-168.4115\\-121\\-49.10435\\-164.8212\\-121\\-48.88055\\-164.5053\\-121\\-46.83384\\-162.5521\\-121\\-45.1981\\-161.6434\\-121\\-43.24498\\-161.0054\\-121\\-41.29185\\-160.7476\\-121\\-39.33873\\-160.7211\\-121\\-37.3856\\-161.584\\-121\\-34.45126\\-164.5053\\-121\\-33.64745\\-166.4584\\-121\\-35.43248\\-167.5004\\-121\\-37.3856\\-167.5673\\-121\\-39.33873\\-169.5001\\-121\\-41.29185\\-170.1529\\-121\\-43.24498\\-167.9797\\-121\\-45.1981\\-166.5805\\-121\\-47.15123\\-167.5463\\-121"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2563\\-119\\-129.9453\\-205.5209\\-119\\-130.7487\\-203.5678\\-119\\-130.7586\\-197.7084\\-119\\-129.1825\\-195.7928\\-119\\-127.2293\\-195.7476\\-119\\-125.2762\\-195.0465\\-119\\-123.3231\\-194.7631\\-119\\-121.37\\-195.4791\\-119\\-119.4168\\-197.0306\\-119\\-118.8949\\-197.7084\\-119\\-118.7468\\-199.6615\\-119\\-118.1528\\-201.6146\\-119\\-117.4637\\-202.9998\\-119\\-116.6329\\-203.5678\\-119\\-116.3504\\-205.5209\\-119\\-117.1308\\-207.474\\-119\\-117.4637\\-207.8147\\-119\\-119.4168\\-208.8809\\-119\\-125.2762\\-208.9652\\-119"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-207.2149\\-119\\-115.2288\\-205.5209\\-119\\-115.0493\\-203.5678\\-119\\-113.5575\\-201.8908\\-119\\-111.6043\\-203.1683\\-119\\-111.3114\\-203.5678\\-119\\-111.3453\\-205.5209\\-119\\-111.6043\\-205.828\\-119"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002361"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-169.4972\\-119\\-50.92669\\-168.4115\\-119\\-50.07069\\-166.4584\\-119\\-49.11198\\-164.5053\\-119\\-46.83384\\-162.5521\\-119\\-45.1981\\-161.6434\\-119\\-43.24498\\-160.9957\\-119\\-41.29185\\-159.8112\\-119\\-39.33873\\-159.76\\-119\\-37.3856\\-161.5756\\-119\\-34.45126\\-164.5053\\-119\\-33.64745\\-166.4584\\-119\\-35.43248\\-167.5004\\-119\\-37.3856\\-167.5673\\-119\\-39.33873\\-169.5001\\-119\\-41.29185\\-169.5997\\-119\\-43.24498\\-167.5473\\-119\\-45.1981\\-166.5106\\-119\\-47.15123\\-167.5463\\-119"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2563\\-117\\-129.9453\\-205.5209\\-117\\-130.7487\\-203.5678\\-117\\-131.1759\\-199.6615\\-117\\-130.7718\\-197.7084\\-117\\-129.1825\\-196.0314\\-117\\-127.2293\\-195.553\\-117\\-125.2762\\-194.7524\\-117\\-123.3231\\-194.0859\\-117\\-121.37\\-194.8409\\-117\\-120.3395\\-195.7553\\-117\\-118.7856\\-197.7084\\-117\\-118.3291\\-199.6615\\-117\\-117.5159\\-201.6146\\-117\\-117.0219\\-203.5678\\-117\\-116.3504\\-205.5209\\-117\\-117.4095\\-207.474\\-117\\-119.4168\\-208.8575\\-117\\-121.37\\-208.9652\\-117\\-125.2762\\-208.9652\\-117"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-208.0864\\-117\\-114.3155\\-207.474\\-117\\-115.2288\\-205.5209\\-117\\-114.5537\\-203.5678\\-117\\-113.5575\\-202.5511\\-117\\-111.5522\\-203.5678\\-117\\-111.3114\\-205.5209\\-117\\-112.867\\-207.474\\-117"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002360"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-169.4972\\-117\\-50.95982\\-168.4115\\-117\\-50.57807\\-166.4584\\-117\\-49.75014\\-164.5053\\-117\\-49.10435\\-163.8304\\-117\\-47.15123\\-162.8112\\-117\\-45.1981\\-161.6434\\-117\\-43.24498\\-160.9859\\-117\\-41.29185\\-159.6522\\-117\\-39.33873\\-159.6019\\-117\\-34.45126\\-164.5053\\-117\\-33.64745\\-166.4584\\-117\\-35.43248\\-167.5004\\-117\\-37.3856\\-167.5673\\-117\\-39.33873\\-169.5001\\-117\\-41.29185\\-169.4247\\-117\\-43.24498\\-167.5004\\-117\\-45.1981\\-166.5106\\-117\\-47.15123\\-167.5463\\-117"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002359"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2563\\-115\\-129.9453\\-205.5209\\-115\\-130.7487\\-203.5678\\-115\\-131.7007\\-201.6146\\-115\\-132.2463\\-199.6615\\-115\\-130.8465\\-197.7084\\-115\\-129.1825\\-196.596\\-115\\-127.2293\\-195.0877\\-115\\-125.2762\\-194.1382\\-115\\-123.3231\\-193.7355\\-115\\-121.37\\-194.6252\\-115\\-120.121\\-195.7553\\-115\\-118.3182\\-197.7084\\-115\\-117.3951\\-199.6615\\-115\\-116.941\\-201.6146\\-115\\-117.0851\\-203.5678\\-115\\-116.3504\\-205.5209\\-115\\-117.4637\\-206.0411\\-115\\-118.2116\\-207.474\\-115\\-119.4168\\-208.6022\\-115\\-121.37\\-208.9652\\-115\\-125.2762\\-208.9652\\-115"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002359"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-169.4972\\-115\\-50.95982\\-168.4115\\-115\\-50.90887\\-166.4584\\-115\\-49.92955\\-164.5053\\-115\\-49.10435\\-163.6801\\-115\\-47.15123\\-162.8112\\-115\\-45.1981\\-161.6434\\-115\\-43.24498\\-160.9859\\-115\\-41.29185\\-159.6437\\-115\\-39.33873\\-159.5937\\-115\\-34.45126\\-164.5053\\-115\\-33.95162\\-166.4584\\-115\\-35.43248\\-167.3662\\-115\\-37.3856\\-167.5621\\-115\\-39.33873\\-169.3595\\-115\\-41.29185\\-169.2801\\-115\\-43.24498\\-167.4954\\-115\\-45.1981\\-166.5106\\-115\\-47.15123\\-167.5463\\-115"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002358"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2563\\-113\\-129.9453\\-205.5209\\-113\\-130.7487\\-203.5678\\-113\\-131.8924\\-201.6146\\-113\\-132.6823\\-199.6615\\-113\\-131.1356\\-197.5845\\-113\\-129.1825\\-196.6416\\-113\\-127.2293\\-194.9086\\-113\\-125.2762\\-193.7945\\-113\\-123.3231\\-193.7074\\-113\\-121.37\\-194.4888\\-113\\-119.582\\-195.7553\\-113\\-117.4637\\-198.2539\\-113\\-116.4872\\-199.6615\\-113\\-116.5007\\-201.6146\\-113\\-117.0718\\-203.5678\\-113\\-115.5106\\-205.3607\\-113\\-113.5575\\-203.3808\\-113\\-111.6043\\-205.1102\\-113\\-111.3114\\-205.5209\\-113\\-111.6043\\-205.8753\\-113\\-113.5575\\-207.4218\\-113\\-115.5106\\-205.7301\\-113\\-117.4637\\-206.4975\\-113\\-118.0847\\-207.474\\-113\\-119.4168\\-208.5933\\-113\\-121.37\\-208.9652\\-113\\-125.2762\\-208.9652\\-113"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002358"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-169.4972\\-113\\-50.95982\\-168.4115\\-113\\-50.68089\\-166.4584\\-113\\-49.79962\\-164.5053\\-113\\-49.10435\\-163.7985\\-113\\-47.15123\\-162.8112\\-113\\-45.1981\\-161.6434\\-113\\-41.29185\\-159.5836\\-113\\-39.33873\\-159.5937\\-113\\-34.45126\\-164.5053\\-113\\-34.84488\\-166.4584\\-113\\-35.43248\\-166.8838\\-113\\-37.3856\\-167.557\\-113\\-39.33873\\-168.8179\\-113\\-41.29185\\-168.7909\\-113\\-43.24498\\-167.4905\\-113\\-45.1981\\-166.5106\\-113\\-47.15123\\-167.5463\\-113"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002357"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "29"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2563\\-111\\-129.9453\\-205.5209\\-111\\-130.7487\\-203.5678\\-111\\-131.9022\\-201.6146\\-111\\-132.7319\\-199.6615\\-111\\-131.8204\\-197.7084\\-111\\-131.1356\\-197.0592\\-111\\-129.1825\\-195.967\\-111\\-127.2293\\-194.7032\\-111\\-125.2762\\-193.7355\\-111\\-123.3231\\-193.6936\\-111\\-121.37\\-194.0379\\-111\\-119.4168\\-195.0982\\-111\\-118.8086\\-195.7553\\-111\\-117.9774\\-197.7084\\-111\\-116.2356\\-199.6615\\-111\\-115.7705\\-201.6146\\-111\\-116.1515\\-203.5678\\-111\\-115.5106\\-204.0484\\-111\\-113.5575\\-202.8835\\-111\\-112.7051\\-203.5678\\-111\\-111.3225\\-205.5209\\-111\\-112.6888\\-207.474\\-111\\-113.5575\\-208.2721\\-111\\-115.5106\\-207.8906\\-111\\-117.4637\\-207.9017\\-111\\-119.4168\\-208.6526\\-111\\-121.37\\-208.9652\\-111\\-125.2762\\-208.9652\\-111"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002357"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-169.3309\\-111\\-50.62059\\-168.4115\\-111\\-50.16104\\-166.4584\\-111\\-49.25296\\-164.5053\\-111\\-46.83384\\-162.5521\\-111\\-45.1981\\-161.6434\\-111\\-43.24498\\-159.8717\\-111\\-41.29185\\-159.3601\\-111\\-39.33873\\-159.5937\\-111\\-37.3856\\-161.567\\-111\\-34.35008\\-164.5053\\-111\\-35.27732\\-166.4584\\-111\\-37.3856\\-167.552\\-111\\-39.33873\\-168.4491\\-111\\-41.29185\\-168.4342\\-111\\-43.24498\\-167.4856\\-111\\-45.1981\\-166.1635\\-111\\-47.15123\\-167.4729\\-111"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "27"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2563\\-109\\-129.9453\\-205.5209\\-109\\-130.7487\\-203.5678\\-109\\-131.9022\\-201.6146\\-109\\-132.7319\\-199.6615\\-109\\-131.9704\\-197.7084\\-109\\-131.1356\\-196.8599\\-109\\-129.1825\\-195.125\\-109\\-127.2293\\-194.159\\-109\\-125.2762\\-193.6936\\-109\\-121.37\\-193.7074\\-109\\-119.4168\\-194.6904\\-109\\-118.4125\\-195.7553\\-109\\-117.5445\\-197.7084\\-109\\-116.0821\\-199.6615\\-109\\-115.5106\\-200.2234\\-109\\-113.5575\\-201.53\\-109\\-111.7398\\-203.5678\\-109\\-111.6991\\-205.5209\\-109\\-112.6791\\-207.474\\-109\\-113.5575\\-208.3844\\-109\\-115.5106\\-208.7021\\-109\\-117.4637\\-207.7397\\-109\\-119.4168\\-208.0972\\-109\\-121.37\\-208.8129\\-109\\-123.3231\\-208.9652\\-109\\-125.2762\\-208.9652\\-109"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-54.96373\\-192.6368\\-109\\-55.80775\\-191.849\\-109\\-54.17596\\-189.8959\\-109\\-53.0106\\-188.7382\\-109\\-51.05748\\-187.0464\\-109\\-50.31601\\-187.9428\\-109\\-51.71575\\-189.8959\\-109\\-53.0106\\-191.1812\\-109"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002356"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-168.8554\\-109\\-49.75251\\-168.4115\\-109\\-49.97186\\-166.4584\\-109\\-48.88175\\-164.5053\\-109\\-46.83384\\-162.5521\\-109\\-45.1981\\-161.6392\\-109\\-43.24498\\-159.7\\-109\\-41.29185\\-159.1512\\-109\\-39.33873\\-159.5937\\-109\\-37.3856\\-161.567\\-109\\-36.10386\\-162.5521\\-109\\-33.99061\\-164.5053\\-109\\-35.32818\\-166.4584\\-109\\-37.3856\\-167.552\\-109\\-39.33873\\-168.4039\\-109\\-41.29185\\-168.4039\\-109\\-43.24498\\-167.4768\\-109\\-45.1981\\-165.68\\-109\\-46.38026\\-166.4584\\-109\\-48.51841\\-168.4115\\-109"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "27"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2563\\-107\\-129.9453\\-205.5209\\-107\\-130.7487\\-203.5678\\-107\\-131.9022\\-201.6146\\-107\\-132.7319\\-199.6615\\-107\\-131.9764\\-197.7084\\-107\\-129.1825\\-194.9174\\-107\\-127.2293\\-193.8098\\-107\\-125.2762\\-193.6936\\-107\\-121.37\\-193.6936\\-107\\-119.4168\\-194.6292\\-107\\-118.2575\\-195.7553\\-107\\-116.8657\\-197.7084\\-107\\-116.2258\\-199.6615\\-107\\-115.5106\\-200.6055\\-107\\-113.5575\\-201.0835\\-107\\-112.8797\\-201.6146\\-107\\-111.3453\\-203.5678\\-107\\-112.3242\\-205.5209\\-107\\-113.0408\\-207.474\\-107\\-113.5575\\-208.0827\\-107\\-115.5106\\-208.9052\\-107\\-117.4637\\-207.0967\\-107\\-119.4168\\-206.8859\\-107\\-121.37\\-208.6377\\-107\\-123.3231\\-208.9652\\-107\\-125.2762\\-208.9652\\-107"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-56.91685\\-192.1797\\-107\\-57.38867\\-191.849\\-107\\-56.91685\\-191.3772\\-107\\-55.89487\\-189.8959\\-107\\-51.96428\\-185.9896\\-107\\-51.05748\\-185.2972\\-107\\-49.10435\\-183.5184\\-107\\-48.11643\\-184.0365\\-107\\-48.47075\\-185.9896\\-107\\-53.0106\\-190.5408\\-107\\-55.64436\\-191.849\\-107"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002355"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.11422\\-168.4115\\-107\\-49.95635\\-166.4584\\-107\\-48.85258\\-164.5053\\-107\\-46.83384\\-162.5521\\-107\\-45.1981\\-161.6349\\-107\\-43.24498\\-159.6909\\-107\\-41.29185\\-159.1255\\-107\\-39.33873\\-159.5937\\-107\\-37.3856\\-161.567\\-107\\-35.70213\\-162.5521\\-107\\-33.64094\\-164.5053\\-107\\-35.32716\\-166.4584\\-107\\-37.3856\\-167.552\\-107\\-39.33873\\-168.4039\\-107\\-41.29185\\-168.4039\\-107\\-43.24498\\-167.4678\\-107\\-45.1981\\-165.5566\\-107\\-46.73043\\-166.4584\\-107\\-47.15123\\-166.9124\\-107"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "29"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "57"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2563\\-105\\-129.9453\\-205.5209\\-105\\-131.1356\\-203.4433\\-105\\-132.0776\\-201.6146\\-105\\-132.7319\\-199.6615\\-105\\-132.1379\\-197.7084\\-105\\-131.1356\\-196.5612\\-105\\-129.1825\\-194.7032\\-105\\-127.2293\\-193.7646\\-105\\-125.2762\\-193.6936\\-105\\-121.37\\-193.6936\\-105\\-119.4168\\-194.6198\\-105\\-118.1341\\-195.7553\\-105\\-116.36\\-197.7084\\-105\\-115.9417\\-201.6146\\-105\\-115.5106\\-202.1463\\-105\\-114.7388\\-201.6146\\-105\\-113.5575\\-201.1625\\-105\\-112.962\\-201.6146\\-105\\-111.3338\\-203.5678\\-105\\-112.3467\\-205.5209\\-105\\-113.0634\\-207.474\\-105\\-113.5575\\-208.0504\\-105\\-115.5106\\-208.9074\\-105\\-116.9113\\-207.474\\-105\\-117.4637\\-206.4344\\-105\\-119.4168\\-206.9057\\-105\\-121.37\\-208.6487\\-105\\-125.2762\\-208.8498\\-105"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "58"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-60.8231\\-196.3584\\-105\\-61.56079\\-195.7553\\-105\\-61.42183\\-193.8021\\-105\\-53.0106\\-185.4116\\-105\\-51.05748\\-184.5899\\-105\\-49.10435\\-183.4166\\-105\\-48.51028\\-184.0365\\-105\\-50.05766\\-185.9896\\-105\\-53.99479\\-189.8959\\-105\\-56.91685\\-192.4655\\-105"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002354"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "59"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-168.4001\\-105\\-49.95635\\-166.4584\\-105\\-49.10435\\-164.8212\\-105\\-46.83384\\-162.5521\\-105\\-45.1981\\-161.6349\\-105\\-43.24498\\-159.6909\\-105\\-41.29185\\-159.1255\\-105\\-39.33873\\-159.5937\\-105\\-37.3856\\-161.5102\\-105\\-35.43248\\-162.3404\\-105\\-33.62796\\-164.5053\\-105\\-35.73611\\-166.4584\\-105\\-37.3856\\-167.4548\\-105\\-39.33873\\-168.4039\\-105\\-41.29185\\-168.4039\\-105\\-43.24498\\-167.4633\\-105\\-45.1981\\-165.5472\\-105\\-46.74631\\-166.4584\\-105\\-47.15123\\-166.8991\\-105"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "60"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2563\\-103\\-129.9453\\-205.5209\\-103\\-131.6929\\-203.5678\\-103\\-132.4907\\-201.6146\\-103\\-132.7422\\-199.6615\\-103\\-132.5094\\-197.7084\\-103\\-131.4611\\-195.7553\\-103\\-131.1356\\-195.4274\\-103\\-129.1825\\-194.1965\\-103\\-127.2293\\-193.6936\\-103\\-123.3231\\-193.6667\\-103\\-121.37\\-193.4453\\-103\\-119.4168\\-194.4794\\-103\\-115.5106\\-197.454\\-103\\-115.2912\\-197.7084\\-103\\-114.7308\\-199.6615\\-103\\-113.5575\\-200.5302\\-103\\-112.4907\\-201.6146\\-103\\-111.3225\\-203.5678\\-103\\-112.8672\\-207.474\\-103\\-113.5575\\-208.2587\\-103\\-115.5106\\-208.9013\\-103\\-117.3107\\-207.474\\-103\\-117.4637\\-206.6852\\-103\\-119.4168\\-207.4069\\-103\\-121.37\\-208.5536\\-103\\-123.3231\\-208.3438\\-103\\-125.2762\\-208.6277\\-103"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-60.8231\\-195.0559\\-103\\-62.08502\\-193.8021\\-103\\-53.0106\\-184.7531\\-103\\-51.05748\\-183.0235\\-103\\-49.67312\\-182.0834\\-103\\-49.10435\\-181.5269\\-103\\-48.71519\\-182.0834\\-103\\-50.10823\\-184.0365\\-103\\-51.74948\\-185.9896\\-103"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002353"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "62"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-168.4001\\-103\\-49.95635\\-166.4584\\-103\\-49.10435\\-164.8212\\-103\\-46.85012\\-162.5521\\-103\\-45.1981\\-161.6301\\-103\\-43.24498\\-159.6909\\-103\\-41.29185\\-159.1255\\-103\\-39.33873\\-159.5937\\-103\\-37.3856\\-161.2653\\-103\\-35.43248\\-161.7527\\-103\\-34.58307\\-162.5521\\-103\\-33.63471\\-164.5053\\-103\\-36.67002\\-166.4584\\-103\\-39.33873\\-168.4039\\-103\\-41.29185\\-168.4039\\-103\\-43.24498\\-167.4633\\-103\\-45.1981\\-165.5472\\-103\\-46.74631\\-166.4584\\-103\\-47.15123\\-166.8991\\-103"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002352"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "63"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2624\\-101\\-131.8849\\-203.5678\\-101\\-132.7319\\-201.6146\\-101\\-132.7526\\-197.7084\\-101\\-131.9734\\-195.7553\\-101\\-131.1356\\-194.9128\\-101\\-129.1825\\-193.7945\\-101\\-127.2293\\-193.6801\\-101\\-123.3231\\-193.1769\\-101\\-121.37\\-192.8527\\-101\\-119.4168\\-193.4477\\-101\\-117.4637\\-195.3288\\-101\\-115.5106\\-196.5167\\-101\\-114.4045\\-197.7084\\-101\\-113.6395\\-199.6615\\-101\\-112.3942\\-201.6146\\-101\\-111.3225\\-203.5678\\-101\\-113.3678\\-207.474\\-101\\-113.5575\\-207.685\\-101\\-115.5106\\-208.7848\\-101\\-117.4637\\-208.6312\\-101\\-121.37\\-208.5206\\-101\\-123.3231\\-208.156\\-101\\-125.2762\\-208.6141\\-101"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002352"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "64"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-62.77623\\-194.7142\\-101\\-63.36574\\-193.8021\\-101\\-59.63448\\-189.8959\\-101\\-58.86998\\-188.8507\\-101\\-53.0106\\-183.0145\\-101\\-49.10435\\-179.2079\\-101\\-47.96503\\-180.1303\\-101\\-48.494\\-182.0834\\-101\\-60.8231\\-194.3927\\-101"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002352"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "65"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-168.4001\\-101\\-49.95635\\-166.4584\\-101\\-49.10435\\-164.8212\\-101\\-47.15123\\-162.3651\\-101\\-45.1981\\-161.5396\\-101\\-43.24498\\-159.6812\\-101\\-41.29185\\-159.1255\\-101\\-39.33873\\-159.5937\\-101\\-37.77495\\-160.599\\-101\\-37.3856\\-160.976\\-101\\-35.43248\\-161.5799\\-101\\-34.43372\\-162.5521\\-101\\-33.99295\\-164.5053\\-101\\-35.43248\\-165.4307\\-101\\-37.293\\-166.4584\\-101\\-39.33873\\-168.4039\\-101\\-41.29185\\-168.4039\\-101\\-43.24498\\-167.4586\\-101\\-45.1981\\-165.5423\\-101\\-46.74958\\-166.4584\\-101\\-47.15123\\-166.8991\\-101"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002351"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "66"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.2803\\-99\\-130.1688\\-205.5209\\-99\\-131.8909\\-203.5678\\-99\\-132.7319\\-201.6146\\-99\\-132.7526\\-197.7084\\-99\\-132.1435\\-195.7553\\-99\\-131.1356\\-194.613\\-99\\-129.1825\\-193.381\\-99\\-127.2293\\-193.4304\\-99\\-125.2762\\-192.8424\\-99\\-123.3231\\-192.3532\\-99\\-121.37\\-192.1117\\-99\\-119.4168\\-192.7555\\-99\\-117.4637\\-194.8091\\-99\\-115.8185\\-195.7553\\-99\\-113.6522\\-197.7084\\-99\\-113.2535\\-199.6615\\-99\\-112.3999\\-201.6146\\-99\\-111.3453\\-203.5678\\-99\\-112.5082\\-205.5209\\-99\\-113.5575\\-206.7403\\-99\\-115.5106\\-208.4259\\-99\\-117.4637\\-208.7847\\-99\\-119.4168\\-208.9475\\-99\\-123.3231\\-208.6553\\-99\\-125.2762\\-208.839\\-99"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002351"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "67"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-62.77623\\-194.5872\\-99\\-63.49121\\-193.8021\\-99\\-62.77623\\-192.7485\\-99\\-60.8231\\-190.4311\\-99\\-60.17585\\-189.8959\\-99\\-59.65918\\-187.9428\\-99\\-58.86998\\-186.8823\\-99\\-54.96373\\-182.9913\\-99\\-51.05748\\-179.1537\\-99\\-49.10435\\-177.7188\\-99\\-48.43719\\-178.1771\\-99\\-48.30838\\-180.1303\\-99\\-49.10435\\-181.0674\\-99\\-58.86998\\-190.7943\\-99\\-60.8231\\-192.9747\\-99"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002351"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "68"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-168.4003\\-99\\-49.96194\\-166.4584\\-99\\-48.86409\\-164.5053\\-99\\-47.88497\\-162.5521\\-99\\-47.15123\\-161.8377\\-99\\-45.1981\\-161.262\\-99\\-43.24498\\-159.667\\-99\\-41.29185\\-159.1255\\-99\\-39.33873\\-159.5898\\-99\\-37.75181\\-160.599\\-99\\-37.3856\\-160.9558\\-99\\-35.43248\\-161.5799\\-99\\-34.42916\\-162.5521\\-99\\-34.7133\\-164.5053\\-99\\-37.30297\\-166.4584\\-99\\-39.33873\\-168.4039\\-99\\-41.29185\\-168.4039\\-99\\-43.24498\\-167.3163\\-99\\-45.1981\\-165.4048\\-99\\-46.7823\\-166.4584\\-99\\-47.15123\\-166.8991\\-99"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002350"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "27"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "69"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.4694\\-97\\-129.1825\\-207.0796\\-97\\-130.5641\\-205.5209\\-97\\-131.9121\\-203.5678\\-97\\-132.7319\\-201.6146\\-97\\-132.7526\\-197.7084\\-97\\-132.5153\\-195.7553\\-97\\-131.1356\\-193.6792\\-97\\-129.1825\\-192.9335\\-97\\-127.2293\\-192.8198\\-97\\-125.2762\\-192.0154\\-97\\-123.3231\\-191.6133\\-97\\-121.37\\-191.6496\\-97\\-119.4168\\-192.6976\\-97\\-117.4637\\-194.4226\\-97\\-115.5106\\-195.3097\\-97\\-113.5575\\-196.9853\\-97\\-113.0067\\-197.7084\\-97\\-112.9671\\-199.6615\\-97\\-112.5857\\-201.6146\\-97\\-111.6991\\-203.5678\\-97\\-112.3305\\-205.5209\\-97\\-113.5575\\-206.8959\\-97\\-115.5106\\-208.2563\\-97\\-117.4637\\-208.5615\\-97\\-121.37\\-208.9652\\-97\\-125.2762\\-208.9652\\-97"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002350"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "70"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-62.77623\\-193.2986\\-97\\-63.35246\\-191.849\\-97\\-61.40206\\-189.8959\\-97\\-60.8231\\-188.3665\\-97\\-60.50223\\-187.9428\\-97\\-59.94572\\-185.9896\\-97\\-58.86998\\-185.0267\\-97\\-53.93615\\-180.1303\\-97\\-52.02604\\-178.1771\\-97\\-51.05748\\-177.4293\\-97\\-49.10435\\-178.0053\\-97\\-48.94843\\-178.1771\\-97\\-50.15179\\-180.1303\\-97\\-51.05748\\-181.0287\\-97\\-51.90258\\-182.0834\\-97\\-53.74945\\-184.0365\\-97\\-54.96373\\-185.1758\\-97\\-56.01004\\-185.9896\\-97\\-58.86998\\-188.8354\\-97\\-60.09288\\-189.8959\\-97\\-60.8231\\-191.6205\\-97"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002350"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "71"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-168.3654\\-97\\-50.15721\\-166.4584\\-97\\-49.23979\\-164.5053\\-97\\-48.00927\\-162.5521\\-97\\-47.15123\\-161.6899\\-97\\-45.1981\\-160.9957\\-97\\-43.24498\\-159.6578\\-97\\-41.29185\\-159.0989\\-97\\-39.33873\\-159.5058\\-97\\-37.3856\\-160.4221\\-97\\-35.43248\\-161.4912\\-97\\-34.16401\\-162.5521\\-97\\-35.16996\\-164.5053\\-97\\-35.43248\\-164.6796\\-97\\-39.33873\\-168.4039\\-97\\-41.29185\\-168.4039\\-97\\-43.24498\\-167.103\\-97\\-45.1981\\-165.2288\\-97\\-46.83469\\-166.4584\\-97\\-47.15123\\-166.8646\\-97"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002349"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "72"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-129.1825\\-208.0542\\-95\\-129.7661\\-207.474\\-95\\-131.1356\\-205.4564\\-95\\-132.1169\\-203.5678\\-95\\-132.7422\\-201.6146\\-95\\-132.8069\\-197.7084\\-95\\-132.7848\\-195.7553\\-95\\-131.9804\\-193.8021\\-95\\-131.1356\\-193.0497\\-95\\-129.1825\\-192.6535\\-95\\-127.2293\\-191.7676\\-95\\-125.2762\\-191.1773\\-95\\-123.3231\\-191.3522\\-95\\-121.37\\-191.6746\\-95\\-119.4168\\-192.7123\\-95\\-117.4637\\-193.9507\\-95\\-115.5106\\-194.8503\\-95\\-113.5575\\-196.658\\-95\\-112.6116\\-197.7084\\-95\\-112.4406\\-199.6615\\-95\\-112.8113\\-201.6146\\-95\\-112.2396\\-203.5678\\-95\\-111.7659\\-205.5209\\-95\\-112.9203\\-207.474\\-95\\-113.5575\\-208.1073\\-95\\-115.5106\\-208.6448\\-95\\-117.4637\\-208.5421\\-95\\-119.4168\\-208.6712\\-95\\-121.37\\-208.9652\\-95\\-125.2762\\-208.9652\\-95\\-127.2293\\-208.7847\\-95"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002349"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "73"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-60.8231\\-189.7594\\-95\\-62.74294\\-187.9428\\-95\\-61.8286\\-185.9896\\-95\\-58.86998\\-183.4462\\-95\\-55.50892\\-180.1303\\-95\\-53.0106\\-177.4369\\-95\\-51.05748\\-177.3568\\-95\\-50.34042\\-178.1771\\-95\\-51.9435\\-180.1303\\-95\\-53.12157\\-182.0834\\-95\\-55.0764\\-184.0365\\-95\\-56.91685\\-185.3731\\-95\\-58.86998\\-187.3188\\-95\\-59.64987\\-187.9428\\-95"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002349"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "74"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-168.0558\\-95\\-50.6214\\-166.4584\\-95\\-49.76434\\-164.5053\\-95\\-47.15123\\-161.6794\\-95\\-45.1981\\-160.9558\\-95\\-43.24498\\-159.6357\\-95\\-41.29185\\-158.5933\\-95\\-39.33873\\-158.4476\\-95\\-37.3856\\-159.5415\\-95\\-35.43248\\-160.7746\\-95\\-33.47935\\-161.8704\\-95\\-32.62582\\-162.5521\\-95\\-33.47935\\-163.9784\\-95\\-34.45591\\-164.5053\\-95\\-35.43248\\-164.7758\\-95\\-39.33873\\-168.4039\\-95\\-41.29185\\-168.4039\\-95\\-43.24498\\-167.3163\\-95\\-45.1981\\-165.3988\\-95\\-47.15123\\-166.3658\\-95"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002348"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "75"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-129.1825\\-208.2248\\-93\\-131.688\\-205.5209\\-93\\-132.5172\\-203.5678\\-93\\-132.7848\\-201.6146\\-93\\-133.4882\\-197.7084\\-93\\-133.1263\\-195.7553\\-93\\-132.4845\\-193.8021\\-93\\-131.1356\\-192.334\\-93\\-129.1825\\-191.8723\\-93\\-127.2293\\-190.9495\\-93\\-125.2762\\-190.3471\\-93\\-123.3231\\-190.9319\\-93\\-121.37\\-192.0106\\-93\\-119.4168\\-192.9018\\-93\\-117.4637\\-193.6277\\-93\\-115.5106\\-194.6485\\-93\\-112.4275\\-197.7084\\-93\\-111.7137\\-199.6615\\-93\\-112.6352\\-201.6146\\-93\\-112.6331\\-203.5678\\-93\\-111.7398\\-205.5209\\-93\\-112.5382\\-207.474\\-93\\-113.5575\\-208.4834\\-93\\-115.5106\\-208.9563\\-93\\-117.4637\\-208.7847\\-93\\-119.4168\\-208.8201\\-93\\-121.37\\-208.9652\\-93\\-127.2293\\-208.9563\\-93"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002348"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "76"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-62.77623\\-190.9084\\-93\\-63.79619\\-189.8959\\-93\\-64.03902\\-187.9428\\-93\\-63.5418\\-185.9896\\-93\\-62.77623\\-185.247\\-93\\-60.8231\\-183.7641\\-93\\-58.86998\\-182.6535\\-93\\-56.91685\\-180.4785\\-93\\-56.50862\\-180.1303\\-93\\-54.96373\\-178.1414\\-93\\-53.0106\\-177.1517\\-93\\-52.19029\\-178.1771\\-93\\-53.44375\\-180.1303\\-93\\-54.25634\\-182.0834\\-93\\-56.91685\\-184.6781\\-93\\-60.17767\\-187.9428\\-93\\-61.95661\\-189.8959\\-93"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002348"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "77"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-168.5063\\-93\\-43.24498\\-167.4916\\-93\\-45.1981\\-165.5616\\-93\\-47.15123\\-165.7385\\-93\\-49.10435\\-167.6698\\-93\\-50.98299\\-166.4584\\-93\\-49.96546\\-164.5053\\-93\\-48.23468\\-162.5521\\-93\\-47.15123\\-161.5249\\-93\\-45.1981\\-160.3858\\-93\\-43.24498\\-159.3859\\-93\\-42.35884\\-158.6459\\-93\\-41.29185\\-157.4286\\-93\\-39.33873\\-156.562\\-93\\-37.3856\\-157.5049\\-93\\-36.12515\\-158.6459\\-93\\-33.47935\\-160.6804\\-93\\-31.52623\\-161.8348\\-93\\-30.62537\\-162.5521\\-93\\-31.52623\\-163.9868\\-93\\-32.10945\\-164.5053\\-93\\-33.47935\\-165.0689\\-93\\-35.43248\\-165.3591\\-93\\-36.77838\\-166.4584\\-93\\-37.3856\\-167.1208\\-93\\-39.33873\\-168.5063\\-93"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002347"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "78"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-129.1825\\-208.2248\\-91\\-131.8729\\-205.5209\\-91\\-132.7739\\-203.5678\\-91\\-133.2503\\-201.6146\\-91\\-133.9235\\-199.6615\\-91\\-134.2849\\-197.7084\\-91\\-133.7454\\-195.7553\\-91\\-132.8069\\-193.8021\\-91\\-131.1356\\-191.662\\-91\\-129.1825\\-191.2717\\-91\\-127.2293\\-190.5699\\-91\\-125.2762\\-189.6484\\-91\\-123.3231\\-190.7419\\-91\\-121.37\\-192.3373\\-91\\-119.4168\\-193.1257\\-91\\-117.4637\\-193.3957\\-91\\-115.5106\\-194.4589\\-91\\-112.401\\-197.7084\\-91\\-111.3004\\-199.6615\\-91\\-112.4751\\-201.6146\\-91\\-113.4345\\-203.5678\\-91\\-112.3213\\-205.5209\\-91\\-112.5432\\-207.474\\-91\\-113.5575\\-208.4834\\-91\\-115.5106\\-208.9652\\-91\\-119.4168\\-208.9218\\-91\\-123.3231\\-208.9652\\-91\\-127.2293\\-208.9563\\-91"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002347"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "79"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-64.72935\\-190.1274\\-91\\-64.89211\\-189.8959\\-91\\-65.32645\\-187.9428\\-91\\-65.17381\\-185.9896\\-91\\-64.72935\\-184.9991\\-91\\-63.81877\\-184.0365\\-91\\-62.77623\\-183.2329\\-91\\-60.64872\\-182.0834\\-91\\-59.31023\\-180.1303\\-91\\-58.86998\\-179.2777\\-91\\-57.92017\\-178.1771\\-91\\-55.45201\\-176.224\\-91\\-54.96373\\-175.987\\-91\\-54.58008\\-176.224\\-91\\-54.11892\\-178.1771\\-91\\-54.96373\\-180.0446\\-91\\-56.04308\\-182.0834\\-91\\-58.86998\\-184.9236\\-91\\-59.72149\\-185.9896\\-91\\-61.476\\-187.9428\\-91\\-61.98135\\-189.8959\\-91\\-62.77623\\-191.2522\\-91"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002347"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "29"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "80"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-169.2568\\-91\\-43.24498\\-167.7991\\-91\\-45.1981\\-165.6988\\-91\\-47.15123\\-165.4679\\-91\\-49.10435\\-167.3957\\-91\\-51.05748\\-166.9141\\-91\\-51.37229\\-166.4584\\-91\\-51.05748\\-166.0349\\-91\\-49.10435\\-162.6928\\-91\\-47.15123\\-160.7874\\-91\\-45.1981\\-159.5259\\-91\\-44.07686\\-158.6459\\-91\\-43.51702\\-156.6928\\-91\\-43.24498\\-156.3081\\-91\\-41.29185\\-154.7006\\-91\\-37.3856\\-154.6704\\-91\\-35.43248\\-155.4899\\-91\\-34.00301\\-156.6928\\-91\\-33.47935\\-157.5331\\-91\\-33.14473\\-158.6459\\-91\\-31.52623\\-160.5746\\-91\\-29.5731\\-161.8005\\-91\\-28.62636\\-162.5521\\-91\\-28.72675\\-164.5053\\-91\\-31.52623\\-164.769\\-91\\-33.47935\\-166.1177\\-91\\-35.43248\\-167.1242\\-91\\-37.3856\\-168.843\\-91\\-39.33873\\-169.3881\\-91"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002346"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "81"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-129.1825\\-208.2248\\-89\\-131.8729\\-205.5209\\-89\\-133.1553\\-203.5678\\-89\\-133.9641\\-201.6146\\-89\\-134.4482\\-199.6615\\-89\\-134.6953\\-197.7084\\-89\\-134.0749\\-195.7553\\-89\\-133.2108\\-193.8021\\-89\\-131.7747\\-191.849\\-89\\-131.1356\\-191.3407\\-89\\-129.1825\\-191.2871\\-89\\-127.2293\\-190.5764\\-89\\-125.2762\\-189.5598\\-89\\-123.3231\\-190.7252\\-89\\-121.37\\-192.2837\\-89\\-119.4168\\-193.0469\\-89\\-117.4637\\-193.0139\\-89\\-115.5106\\-193.2997\\-89\\-115.0745\\-193.8021\\-89\\-113.9156\\-195.7553\\-89\\-112.1745\\-197.7084\\-89\\-111.0315\\-199.6615\\-89\\-112.2177\\-201.6146\\-89\\-113.5575\\-202.759\\-89\\-115.5106\\-203.4448\\-89\\-117.4637\\-203.168\\-89\\-118.7048\\-203.5678\\-89\\-119.4168\\-204.4915\\-89\\-119.6777\\-205.5209\\-89\\-119.4168\\-205.864\\-89\\-117.4637\\-205.9586\\-89\\-116.7884\\-205.5209\\-89\\-115.5106\\-203.8049\\-89\\-113.5575\\-204.7265\\-89\\-112.7127\\-205.5209\\-89\\-112.5382\\-207.474\\-89\\-113.5575\\-208.4834\\-89\\-115.5106\\-208.9652\\-89\\-117.4637\\-208.8473\\-89\\-119.4168\\-208.5378\\-89\\-123.3231\\-208.9303\\-89\\-127.2293\\-208.9563\\-89"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002346"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "82"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-64.72935\\-192.9191\\-89\\-66.3895\\-189.8959\\-89\\-67.20176\\-187.9428\\-89\\-67.21145\\-184.0365\\-89\\-66.68247\\-182.6259\\-89\\-66.21297\\-182.0834\\-89\\-67.30222\\-180.1303\\-89\\-67.51163\\-178.1771\\-89\\-66.68247\\-177.742\\-89\\-64.72935\\-179.6383\\-89\\-62.77623\\-180.8028\\-89\\-60.8231\\-180.4755\\-89\\-58.86998\\-178.6086\\-89\\-56.95053\\-178.1771\\-89\\-57.11739\\-180.1303\\-89\\-57.88578\\-182.0834\\-89\\-58.86998\\-183.0235\\-89\\-60.8231\\-183.8326\\-89\\-60.96261\\-184.0365\\-89\\-61.8792\\-187.9428\\-89\\-61.9398\\-189.8959\\-89\\-62.14433\\-191.849\\-89\\-62.77623\\-192.6421\\-89"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002346"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "83"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-172.592\\-89\\-43.24498\\-169.8198\\-89\\-45.75188\\-166.4584\\-89\\-47.15123\\-165.3223\\-89\\-49.10435\\-166.551\\-89\\-51.05748\\-167.6263\\-89\\-51.96246\\-166.4584\\-89\\-50.05957\\-162.5521\\-89\\-45.96318\\-158.6459\\-89\\-43.70415\\-154.7396\\-89\\-43.24498\\-154.2865\\-89\\-41.29185\\-153.5093\\-89\\-37.3856\\-153.5093\\-89\\-35.43248\\-153.7893\\-89\\-33.47935\\-155.4951\\-89\\-32.43875\\-156.6928\\-89\\-31.69385\\-158.6459\\-89\\-29.5731\\-160.6219\\-89\\-27.61998\\-161.9449\\-89\\-27.05613\\-162.5521\\-89\\-27.61998\\-164.3738\\-89\\-29.5731\\-163.9172\\-89\\-30.63755\\-164.5053\\-89\\-31.52623\\-165.589\\-89\\-32.06223\\-166.4584\\-89\\-32.80389\\-168.4115\\-89\\-33.47935\\-169.2386\\-89\\-35.43248\\-171.1522\\-89\\-36.8222\\-172.3178\\-89\\-37.3856\\-172.6167\\-89"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "84"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-129.1825\\-208.2312\\-87\\-131.1356\\-206.319\\-87\\-133.6917\\-203.5678\\-87\\-134.4548\\-201.6146\\-87\\-134.6953\\-199.6615\\-87\\-134.7058\\-197.7084\\-87\\-134.4559\\-195.7553\\-87\\-133.931\\-193.8021\\-87\\-133.0887\\-192.1611\\-87\\-132.8058\\-191.849\\-87\\-131.1356\\-190.8984\\-87\\-129.1825\\-191.1179\\-87\\-127.2293\\-189.8583\\-87\\-125.2762\\-189.1465\\-87\\-123.3231\\-190.3842\\-87\\-121.37\\-192.311\\-87\\-119.4168\\-192.9202\\-87\\-117.4637\\-192.6685\\-87\\-115.5106\\-192.7573\\-87\\-112.7466\\-195.7553\\-87\\-111.5668\\-197.7084\\-87\\-110.6376\\-199.6615\\-87\\-110.196\\-201.6146\\-87\\-111.6043\\-203.1012\\-87\\-113.5575\\-202.6755\\-87\\-115.5106\\-202.5357\\-87\\-117.4637\\-201.5475\\-87\\-119.4168\\-201.1874\\-87\\-120.8817\\-201.6146\\-87\\-120.8671\\-203.5678\\-87\\-120.6791\\-205.5209\\-87\\-121.0684\\-207.474\\-87\\-123.3231\\-208.7778\\-87\\-125.2762\\-208.9652\\-87\\-127.2293\\-208.9563\\-87"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "85"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-121.37\\-188.7396\\-87\\-122.7666\\-187.9428\\-87\\-122.1597\\-185.9896\\-87\\-121.37\\-185.4677\\-87\\-119.4168\\-185.8676\\-87\\-118.4684\\-187.9428\\-87\\-119.4168\\-189.1095\\-87"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "86"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-117.4637\\-208.4865\\-87\\-118.626\\-207.474\\-87\\-115.7982\\-205.5209\\-87\\-115.5106\\-205.2052\\-87\\-113.5575\\-205.0111\\-87\\-111.6043\\-204.3045\\-87\\-111.1359\\-205.5209\\-87\\-112.5333\\-207.474\\-87\\-113.5575\\-208.4834\\-87\\-115.5106\\-208.9563\\-87"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "87"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-64.72935\\-196.2396\\-87\\-66.11471\\-195.7553\\-87\\-66.34738\\-193.8021\\-87\\-66.68247\\-192.9685\\-87\\-67.80195\\-191.849\\-87\\-70.29349\\-189.8959\\-87\\-70.58872\\-189.5432\\-87\\-71.07291\\-187.9428\\-87\\-71.10316\\-184.0365\\-87\\-71.62538\\-182.0834\\-87\\-71.92943\\-180.1303\\-87\\-71.94951\\-178.1771\\-87\\-72.54185\\-176.6716\\-87\\-72.54185\\-176.1085\\-87\\-70.58872\\-175.5968\\-87\\-69.88737\\-176.224\\-87\\-69.48196\\-178.1771\\-87\\-68.6356\\-178.7995\\-87\\-66.68247\\-179.3808\\-87\\-66.12685\\-180.1303\\-87\\-66.77637\\-182.0834\\-87\\-63.25056\\-184.0365\\-87\\-62.77623\\-184.1821\\-87\\-61.74595\\-185.9896\\-87\\-60.8231\\-188.9193\\-87\\-59.91312\\-187.9428\\-87\\-59.01359\\-185.9896\\-87\\-58.42608\\-185.9896\\-87\\-56.91685\\-186.8338\\-87\\-54.16853\\-187.9428\\-87\\-53.81932\\-189.8959\\-87\\-56.15433\\-191.849\\-87\\-58.86998\\-193.7716\\-87\\-60.8231\\-193.5186\\-87\\-62.77623\\-197.0927\\-87"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "34"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "88"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-174.5184\\-87\\-39.33873\\-174.1701\\-87\\-41.29185\\-173.2812\\-87\\-43.24498\\-172.6167\\-87\\-43.64448\\-172.3178\\-87\\-45.1981\\-170.0705\\-87\\-46.04807\\-168.4115\\-87\\-46.57315\\-166.4584\\-87\\-47.15123\\-165.7923\\-87\\-49.10435\\-165.4072\\-87\\-51.05748\\-167.1669\\-87\\-51.84871\\-166.4584\\-87\\-51.90926\\-164.5053\\-87\\-51.31656\\-162.5521\\-87\\-47.02916\\-158.6459\\-87\\-45.9049\\-156.6928\\-87\\-43.24498\\-153.8864\\-87\\-41.29185\\-153.1832\\-87\\-37.3856\\-153.1832\\-87\\-35.43248\\-153.3247\\-87\\-33.47935\\-154.195\\-87\\-32.92405\\-154.7396\\-87\\-31.37762\\-156.6928\\-87\\-30.47495\\-158.6459\\-87\\-29.5731\\-159.6167\\-87\\-28.32689\\-160.599\\-87\\-26.81325\\-162.5521\\-87\\-27.61998\\-163.192\\-87\\-29.5731\\-163.7615\\-87\\-30.38875\\-164.5053\\-87\\-31.2444\\-168.4115\\-87\\-32.49636\\-170.3646\\-87\\-33.47935\\-171.5319\\-87\\-35.43248\\-173.4851\\-87"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002345"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "89"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "58.20655\\-189.8959\\-87\\58.02259\\-187.9428\\-87\\59.41157\\-185.9896\\-87\\60.00053\\-184.0365\\-87\\60.27065\\-183.7757\\-87\\62.22377\\-183.7757\\-87\\62.49389\\-184.0365\\-87\\62.80058\\-185.9896\\-87\\62.79063\\-187.9428\\-87\\62.22377\\-189.2237\\-87\\61.54275\\-189.8959\\-87\\60.27065\\-190.5001\\-87"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "90"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-129.1825\\-208.2827\\-85\\-131.1356\\-206.5541\\-85\\-132.1589\\-205.5209\\-85\\-133.8307\\-203.5678\\-85\\-134.6749\\-201.6146\\-85\\-134.7058\\-195.7553\\-85\\-134.4638\\-193.8021\\-85\\-133.7707\\-191.849\\-85\\-133.0887\\-191.1351\\-85\\-131.1356\\-190.7262\\-85\\-129.1825\\-190.9919\\-85\\-127.2293\\-189.0407\\-85\\-125.8004\\-187.9428\\-85\\-124.026\\-185.9896\\-85\\-123.3231\\-185.3697\\-85\\-121.37\\-183.9557\\-85\\-119.4168\\-183.7045\\-85\\-118.8444\\-184.0365\\-85\\-117.6764\\-185.9896\\-85\\-117.2399\\-187.9428\\-85\\-118.2866\\-189.8959\\-85\\-116.6546\\-191.849\\-85\\-115.5106\\-192.5474\\-85\\-112.4242\\-195.7553\\-85\\-111.2374\\-197.7084\\-85\\-110.4394\\-199.6615\\-85\\-109.2842\\-201.6146\\-85\\-109.3151\\-203.5678\\-85\\-110.6422\\-205.5209\\-85\\-113.5575\\-208.4834\\-85\\-115.5106\\-208.9218\\-85\\-117.5722\\-207.474\\-85\\-115.5106\\-205.2372\\-85\\-113.5575\\-203.9157\\-85\\-113.2772\\-203.5678\\-85\\-115.5106\\-202.3856\\-85\\-117.4637\\-200.5849\\-85\\-118.796\\-199.6615\\-85\\-118.9535\\-197.7084\\-85\\-119.4168\\-196.1602\\-85\\-119.9051\\-195.7553\\-85\\-121.37\\-195.4232\\-85\\-122.2923\\-195.7553\\-85\\-123.3231\\-196.9922\\-85\\-123.5654\\-197.7084\\-85\\-123.3231\\-198.4578\\-85\\-122.6141\\-199.6615\\-85\\-122.4686\\-201.6146\\-85\\-122.0193\\-205.5209\\-85\\-122.3811\\-207.474\\-85\\-123.3231\\-208.4609\\-85\\-125.2762\\-209.0501\\-85\\-127.2293\\-209.0112\\-85"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "91"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-62.77623\\-200.1789\\-85\\-63.93182\\-199.6615\\-85\\-64.72935\\-199.0986\\-85\\-67.31564\\-197.7084\\-85\\-69.4494\\-195.7553\\-85\\-71.3535\\-193.8021\\-85\\-72.54185\\-192.33\\-85\\-74.49497\\-188.6034\\-85\\-74.65656\\-187.9428\\-85\\-74.61704\\-185.9896\\-85\\-73.571\\-182.0834\\-85\\-72.75703\\-180.1303\\-85\\-72.5576\\-178.1771\\-85\\-73.53934\\-176.224\\-85\\-72.54185\\-174.6189\\-85\\-70.58872\\-175.3977\\-85\\-69.77938\\-176.224\\-85\\-70.58872\\-177.7586\\-85\\-72.48441\\-178.1771\\-85\\-71.98988\\-180.1303\\-85\\-70.58872\\-180.4493\\-85\\-68.6356\\-181.1068\\-85\\-68.05533\\-180.1303\\-85\\-67.44541\\-178.1771\\-85\\-66.68247\\-176.7123\\-85\\-64.72935\\-176.383\\-85\\-62.39588\\-178.1771\\-85\\-60.60991\\-180.1303\\-85\\-60.45522\\-182.0834\\-85\\-58.44318\\-184.0365\\-85\\-57.31445\\-185.9896\\-85\\-55.26031\\-187.9428\\-85\\-54.15371\\-189.8959\\-85\\-54.51583\\-193.8021\\-85\\-53.51923\\-195.7553\\-85\\-53.062\\-197.7084\\-85\\-54.96373\\-197.9683\\-85\\-56.91685\\-197.857\\-85\\-58.86998\\-196.4682\\-85\\-60.8231\\-196.7683\\-85\\-61.61045\\-197.7084\\-85\\-62.27012\\-199.6615\\-85"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "34"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "92"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-174.836\\-85\\-43.24498\\-174.2\\-85\\-45.36086\\-172.3178\\-85\\-46.26588\\-170.3646\\-85\\-46.7921\\-168.4115\\-85\\-47.51505\\-166.4584\\-85\\-49.10435\\-164.2151\\-85\\-51.05748\\-164.6861\\-85\\-52.45744\\-162.5521\\-85\\-51.68159\\-160.599\\-85\\-51.05748\\-160.0959\\-85\\-49.10435\\-159.6415\\-85\\-47.91771\\-158.6459\\-85\\-46.06449\\-156.6928\\-85\\-43.24498\\-153.8864\\-85\\-41.29185\\-153.1832\\-85\\-35.43248\\-153.1832\\-85\\-33.47935\\-153.7925\\-85\\-32.40846\\-154.7396\\-85\\-30.45743\\-156.6928\\-85\\-29.3584\\-158.6459\\-85\\-27.61998\\-160.1497\\-85\\-26.65626\\-160.599\\-85\\-25.66685\\-161.4734\\-85\\-23.71373\\-162.5761\\-85\\-25.66685\\-163.0915\\-85\\-27.61998\\-162.9292\\-85\\-29.63968\\-164.5053\\-85\\-30.42159\\-168.4115\\-85\\-31.18571\\-170.3646\\-85\\-32.46399\\-172.3178\\-85\\-34.22523\\-174.2709\\-85\\-35.43248\\-175.273\\-85\\-37.3856\\-175.9339\\-85"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002344"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "93"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-196.7531\\-85\\52.82857\\-195.7553\\-85\\54.04394\\-193.8021\\-85\\54.41127\\-192.0613\\-85\\55.88823\\-189.8959\\-85\\55.92752\\-185.9896\\-85\\56.3644\\-185.0499\\-85\\57.10017\\-184.0365\\-85\\58.12075\\-182.0834\\-85\\60.27065\\-180.014\\-85\\64.1769\\-179.7319\\-85\\66.13003\\-179.8174\\-85\\66.74976\\-180.1303\\-85\\68.08315\\-181.5453\\-85\\68.27015\\-182.0834\\-85\\66.68667\\-184.0365\\-85\\66.13003\\-185.0486\\-85\\65.33375\\-185.9896\\-85\\64.56055\\-187.9428\\-85\\64.49564\\-189.8959\\-85\\62.6981\\-191.849\\-85\\62.22377\\-192.1901\\-85\\60.27065\\-192.6464\\-85\\58.31752\\-194.102\\-85\\56.3644\\-195.8627\\-85"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "94"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-209.4498\\-83\\-129.1825\\-208.4828\\-83\\-130.7785\\-207.474\\-83\\-132.6034\\-205.5209\\-83\\-133.869\\-203.5678\\-83\\-134.6749\\-201.6146\\-83\\-134.8548\\-195.7553\\-83\\-134.8548\\-193.8021\\-83\\-134.1254\\-191.849\\-83\\-133.0887\\-190.8123\\-83\\-131.1356\\-190.7395\\-83\\-129.1825\\-190.8499\\-83\\-128.3447\\-189.8959\\-83\\-127.2293\\-188.152\\-83\\-125.2762\\-185.841\\-83\\-123.3231\\-184.7318\\-83\\-121.37\\-183.0988\\-83\\-119.4168\\-182.622\\-83\\-117.4637\\-183.0668\\-83\\-116.6902\\-184.0365\\-83\\-116.5641\\-185.9896\\-83\\-116.4494\\-189.8959\\-83\\-115.551\\-191.849\\-83\\-114.3584\\-193.8021\\-83\\-112.4182\\-195.7553\\-83\\-110.9622\\-197.7084\\-83\\-110.1906\\-199.6615\\-83\\-109.2742\\-201.6146\\-83\\-109.3257\\-203.5678\\-83\\-110.6324\\-205.5209\\-83\\-113.5575\\-208.4506\\-83\\-115.5106\\-208.873\\-83\\-117.0384\\-207.474\\-83\\-115.6614\\-205.5209\\-83\\-113.9143\\-203.5678\\-83\\-115.5106\\-202.3589\\-83\\-118.0031\\-199.6615\\-83\\-118.3705\\-195.7553\\-83\\-119.4168\\-194.7983\\-83\\-121.37\\-194.2591\\-83\\-123.3231\\-194.4555\\-83\\-125.2762\\-195.122\\-83\\-126.357\\-195.7553\\-83\\-126.6735\\-197.7084\\-83\\-125.2762\\-198.459\\-83\\-124.3997\\-199.6615\\-83\\-123.3231\\-201.7774\\-83\\-122.6912\\-203.5678\\-83\\-122.6322\\-205.5209\\-83\\-123.4178\\-207.474\\-83\\-124.8329\\-209.4271\\-83\\-125.2762\\-209.8457\\-83"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "95"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-53.0106\\-201.7632\\-83\\-54.96373\\-200.4173\\-83\\-56.91685\\-199.8972\\-83\\-58.86998\\-198.7744\\-83\\-60.8231\\-197.214\\-83\\-62.77623\\-196.9594\\-83\\-63.90371\\-195.7553\\-83\\-64.72935\\-194.5758\\-83\\-66.24302\\-195.7553\\-83\\-66.68247\\-196.7318\\-83\\-68.6356\\-197.5066\\-83\\-70.58872\\-196.5803\\-83\\-71.71024\\-195.7553\\-83\\-73.64672\\-193.8021\\-83\\-74.99562\\-191.849\\-83\\-76.06877\\-189.8959\\-83\\-76.64754\\-187.9428\\-83\\-76.18176\\-185.9896\\-83\\-74.49497\\-184.3167\\-83\\-72.54185\\-183.9297\\-83\\-71.45778\\-182.0834\\-83\\-71.66675\\-180.1303\\-83\\-71.29819\\-178.1771\\-83\\-71.60017\\-176.224\\-83\\-70.58872\\-175.0033\\-83\\-68.6356\\-173.9363\\-83\\-64.72935\\-173.9047\\-83\\-62.77623\\-175.1421\\-83\\-60.8231\\-177.2901\\-83\\-60.235\\-178.1771\\-83\\-59.48398\\-180.1303\\-83\\-58.05363\\-182.0834\\-83\\-57.25434\\-184.0365\\-83\\-56.89414\\-185.9896\\-83\\-55.79869\\-187.9428\\-83\\-54.31802\\-189.8959\\-83\\-53.75125\\-191.849\\-83\\-51.06705\\-195.7553\\-83\\-50.68137\\-197.7084\\-83\\-50.72488\\-199.6615\\-83\\-51.05748\\-200.7047\\-83\\-52.34906\\-201.6146\\-83"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "96"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-176.5601\\-83\\-41.29185\\-175.8917\\-83\\-43.24498\\-175.3425\\-83\\-44.59356\\-174.2709\\-83\\-46.23733\\-172.3178\\-83\\-47.24597\\-170.3646\\-83\\-47.84209\\-168.4115\\-83\\-48.2009\\-166.4584\\-83\\-48.82253\\-164.5053\\-83\\-49.10435\\-164.1942\\-83\\-51.05748\\-163.624\\-83\\-53.0106\\-163.1879\\-83\\-53.54882\\-162.5521\\-83\\-53.18499\\-160.599\\-83\\-51.05748\\-159.3758\\-83\\-49.10435\\-159.2031\\-83\\-47.15123\\-157.7373\\-83\\-43.24498\\-153.8864\\-83\\-41.29185\\-153.1832\\-83\\-37.3856\\-153.1832\\-83\\-35.43248\\-153.133\\-83\\-33.47935\\-153.5905\\-83\\-31.52623\\-154.7018\\-83\\-29.33574\\-156.6928\\-83\\-28.29412\\-158.6459\\-83\\-27.61998\\-159.299\\-83\\-25.66685\\-159.8874\\-83\\-23.71373\\-160.0616\\-83\\-23.03087\\-160.599\\-83\\-22.73716\\-162.5521\\-83\\-23.71373\\-163.3007\\-83\\-25.66685\\-162.9895\\-83\\-27.61998\\-163.291\\-83\\-28.79086\\-164.5053\\-83\\-29.06779\\-166.4584\\-83\\-29.5731\\-168.1967\\-83\\-30.34645\\-170.3646\\-83\\-31.1545\\-172.3178\\-83\\-32.43212\\-174.2709\\-83\\-33.47935\\-175.3113\\-83\\-35.43248\\-176.6207\\-83\\-37.3856\\-176.9683\\-83"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "97"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "32.9269\\-201.9917\\-83\\32.45412\\-201.6146\\-83\\32.30545\\-199.6615\\-83\\33.9982\\-197.7084\\-83\\34.88002\\-196.8331\\-83\\36.83315\\-195.3577\\-83\\38.47033\\-195.7553\\-83\\37.98462\\-197.7084\\-83\\36.83315\\-198.512\\-83\\35.96424\\-199.6615\\-83\\34.88002\\-200.6521\\-83"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002343"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "98"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-199.8684\\-83\\48.37751\\-199.6615\\-83\\47.7168\\-197.7084\\-83\\48.5519\\-196.2787\\-83\\49.11595\\-195.7553\\-83\\50.50502\\-194.0591\\-83\\50.83494\\-193.8021\\-83\\51.98537\\-191.849\\-83\\52.71585\\-189.8959\\-83\\53.32094\\-187.9428\\-83\\53.13131\\-185.9896\\-83\\54.20611\\-184.0365\\-83\\56.09991\\-182.0834\\-83\\56.21579\\-180.1303\\-83\\56.07587\\-178.1771\\-83\\56.3644\\-177.6482\\-83\\58.31752\\-175.5232\\-83\\60.27065\\-174.0622\\-83\\62.22377\\-173.9562\\-83\\64.1769\\-173.9728\\-83\\64.96358\\-174.2709\\-83\\66.13003\\-175.0208\\-83\\68.08315\\-176.9643\\-83\\68.65281\\-178.1771\\-83\\69.21423\\-180.1303\\-83\\69.32159\\-182.0834\\-83\\68.91592\\-184.0365\\-83\\67.72424\\-185.9896\\-83\\66.79269\\-187.9428\\-83\\66.48325\\-189.8959\\-83\\64.1769\\-192.6319\\-83\\62.22377\\-194.25\\-83\\60.27065\\-195.1848\\-83\\59.52237\\-195.7553\\-83\\58.31752\\-196.4179\\-83\\56.3644\\-197.87\\-83\\54.41127\\-198.8713\\-83\\52.45815\\-199.6282\\-83\\50.50502\\-199.8869\\-83"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "99"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-210.0347\\-81\\-129.1825\\-208.6141\\-81\\-131.1356\\-207.7577\\-81\\-133.1695\\-205.5209\\-81\\-134.0745\\-203.5678\\-81\\-134.76\\-201.6146\\-81\\-134.7944\\-199.6615\\-81\\-135.2656\\-197.7084\\-81\\-135.5881\\-195.7553\\-81\\-135.596\\-193.8021\\-81\\-134.9586\\-191.849\\-81\\-133.0887\\-190.4466\\-81\\-131.1356\\-190.8396\\-81\\-129.1825\\-189.9716\\-81\\-128.19\\-187.9428\\-81\\-126.2583\\-185.9896\\-81\\-123.9723\\-184.0365\\-81\\-123.3231\\-183.3945\\-81\\-119.4168\\-181.5029\\-81\\-117.4637\\-181.4127\\-81\\-115.5261\\-182.0834\\-81\\-115.0678\\-184.0365\\-81\\-115.6758\\-185.9896\\-81\\-115.7633\\-187.9428\\-81\\-115.2401\\-191.849\\-81\\-114.3584\\-193.8021\\-81\\-112.412\\-195.7553\\-81\\-110.6476\\-197.7084\\-81\\-109.6589\\-199.6615\\-81\\-109.2742\\-201.6146\\-81\\-109.6512\\-203.033\\-81\\-109.9507\\-203.5678\\-81\\-111.6043\\-205.3395\\-81\\-112.5658\\-203.5678\\-81\\-113.5575\\-202.8836\\-81\\-115.5106\\-202.0493\\-81\\-115.948\\-201.6146\\-81\\-117.2893\\-199.6615\\-81\\-117.6754\\-197.7084\\-81\\-118.3098\\-195.7553\\-81\\-119.4168\\-194.6697\\-81\\-121.37\\-193.8248\\-81\\-123.3231\\-194.3403\\-81\\-125.2762\\-193.7794\\-81\\-127.2293\\-193.8918\\-81\\-128.8313\\-195.7553\\-81\\-129.4284\\-197.7084\\-81\\-129.3876\\-199.6615\\-81\\-129.1825\\-200.131\\-81\\-127.2293\\-200.9004\\-81\\-125.2762\\-201.1527\\-81\\-123.9408\\-203.5678\\-81\\-123.9067\\-205.5209\\-81\\-124.2997\\-207.474\\-81\\-124.5015\\-209.4271\\-81\\-125.2762\\-210.375\\-81"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "100"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-62.77623\\-201.5572\\-81\\-60.8231\\-201.2977\\-81\\-59.75113\\-199.6615\\-81\\-60.8231\\-198.4735\\-81\\-66.68247\\-194.9925\\-81\\-68.6356\\-194.2346\\-81\\-69.42997\\-195.7553\\-81\\-70.58872\\-196.757\\-81\\-72.54185\\-196.2496\\-81\\-73.03623\\-195.7553\\-81\\-74.31528\\-193.8021\\-81\\-72.1246\\-191.849\\-81\\-71.94786\\-189.8959\\-81\\-71.45998\\-187.9428\\-81\\-71.25248\\-185.9896\\-81\\-72.10472\\-184.0365\\-81\\-74.70424\\-180.1303\\-81\\-73.45385\\-178.1771\\-81\\-72.43947\\-176.224\\-81\\-71.53477\\-174.2709\\-81\\-70.58872\\-173.1328\\-81\\-68.6356\\-171.9412\\-81\\-66.68247\\-171.8859\\-81\\-64.72935\\-170.844\\-81\\-64.28245\\-170.3646\\-81\\-64.72935\\-169.9825\\-81\\-65.70591\\-168.4115\\-81\\-64.72935\\-167.7991\\-81\\-62.77623\\-168.2499\\-81\\-62.61464\\-168.4115\\-81\\-62.21378\\-170.3646\\-81\\-62.77623\\-171.1242\\-81\\-64.01205\\-172.3178\\-81\\-62.77623\\-173.3012\\-81\\-60.8231\\-175.3719\\-81\\-60.12989\\-176.224\\-81\\-59.72098\\-178.1771\\-81\\-58.04842\\-180.1303\\-81\\-56.52746\\-182.0834\\-81\\-56.07909\\-184.0365\\-81\\-55.98298\\-185.9896\\-81\\-54.96373\\-187.8005\\-81\\-53.19321\\-189.8959\\-81\\-52.26085\\-191.849\\-81\\-50.98827\\-193.8021\\-81\\-49.84701\\-195.7553\\-81\\-48.92997\\-199.6615\\-81\\-48.70699\\-201.6146\\-81\\-49.10435\\-202.174\\-81\\-51.05748\\-202.9323\\-81\\-53.0106\\-202.8313\\-81\\-54.96373\\-202.1608\\-81\\-56.91685\\-201.0769\\-81\\-58.86998\\-202.0731\\-81\\-60.8231\\-202.0348\\-81"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "101"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-43.24498\\-176.2316\\-81\\-45.1981\\-175.0004\\-81\\-45.94076\\-174.2709\\-81\\-46.75936\\-172.3178\\-81\\-48.01753\\-170.3646\\-81\\-48.54882\\-168.4115\\-81\\-48.72492\\-166.4584\\-81\\-49.48592\\-164.5053\\-81\\-51.05748\\-163.4066\\-81\\-53.0106\\-163.5333\\-81\\-54.39732\\-162.5521\\-81\\-53.98716\\-160.599\\-81\\-53.0106\\-159.6274\\-81\\-51.05748\\-159.1512\\-81\\-49.55896\\-158.6459\\-81\\-47.15123\\-157.5346\\-81\\-45.1981\\-155.7849\\-81\\-43.24498\\-153.8864\\-81\\-41.29185\\-153.1832\\-81\\-37.3856\\-153.057\\-81\\-35.43248\\-152.6249\\-81\\-33.47935\\-152.7638\\-81\\-31.52623\\-153.7027\\-81\\-29.5731\\-155.3201\\-81\\-27.61998\\-157.4725\\-81\\-25.62035\\-158.6459\\-81\\-23.71373\\-159.3095\\-81\\-21.7606\\-160.1295\\-81\\-21.31671\\-160.599\\-81\\-21.7606\\-161.253\\-81\\-23.71373\\-162.1868\\-81\\-25.66685\\-162.1868\\-81\\-27.86587\\-164.5053\\-81\\-28.43645\\-166.4584\\-81\\-29.18616\\-170.3646\\-81\\-30.32123\\-172.3178\\-81\\-31.1419\\-174.2709\\-81\\-33.00609\\-176.224\\-81\\-33.47935\\-176.6109\\-81\\-35.43248\\-177.3291\\-81\\-37.3856\\-177.8118\\-81\\-41.29185\\-176.8163\\-81"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "102"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "34.88002\\-202.0114\\-81\\34.12435\\-201.6146\\-81\\34.19485\\-199.6615\\-81\\35.43225\\-197.7084\\-81\\36.04395\\-195.7553\\-81\\36.83315\\-194.8681\\-81\\38.78627\\-193.75\\-81\\40.7394\\-193.7214\\-81\\41.58379\\-195.7553\\-81\\41.54834\\-197.7084\\-81\\40.7394\\-198.8145\\-81\\38.78627\\-199.6122\\-81\\36.83315\\-200.5883\\-81"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002342"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "103"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-204.0421\\-81\\46.25997\\-203.5678\\-81\\46.66327\\-199.6615\\-81\\48.5519\\-194.2567\\-81\\50.84096\\-189.8959\\-81\\51.96987\\-185.9896\\-81\\53.19732\\-184.0365\\-81\\54.90598\\-182.0834\\-81\\55.1587\\-180.1303\\-81\\54.80864\\-178.1771\\-81\\55.37571\\-176.224\\-81\\56.3644\\-174.5659\\-81\\58.31752\\-172.6827\\-81\\60.27065\\-171.2191\\-81\\62.22377\\-170.6389\\-81\\64.1769\\-170.995\\-81\\66.13003\\-171.6546\\-81\\66.9379\\-172.3178\\-81\\68.90415\\-174.2709\\-81\\70.30865\\-176.224\\-81\\69.74331\\-180.1303\\-81\\69.75445\\-182.0834\\-81\\69.99813\\-184.0365\\-81\\68.60355\\-187.9428\\-81\\68.46408\\-189.8959\\-81\\66.99706\\-191.849\\-81\\66.13003\\-192.7001\\-81\\65.24026\\-193.8021\\-81\\64.1769\\-195.4334\\-81\\63.77802\\-195.7553\\-81\\62.22377\\-196.4672\\-81\\58.31752\\-197.9078\\-81\\56.3644\\-198.8767\\-81\\54.41127\\-200.6451\\-81\\52.45815\\-202.141\\-81\\49.87207\\-203.5678\\-81\\48.5519\\-204.0368\\-81"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "60"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "104"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-210.1278\\-79\\-129.1825\\-208.3059\\-79\\-131.1356\\-207.1275\\-79\\-133.0887\\-206.1664\\-79\\-133.7063\\-205.5209\\-79\\-135.3237\\-201.6146\\-79\\-135.3779\\-199.6615\\-79\\-136.3014\\-195.7553\\-79\\-136.3086\\-193.8021\\-79\\-135.7573\\-191.849\\-79\\-135.0419\\-191.1057\\-79\\-133.0887\\-190.6644\\-79\\-131.1356\\-191.1408\\-79\\-130.2142\\-189.8959\\-79\\-129.1825\\-188.205\\-79\\-127.2293\\-185.7305\\-79\\-125.2762\\-184.9163\\-79\\-123.3231\\-183.0816\\-79\\-121.37\\-181.5105\\-79\\-119.4168\\-181.0426\\-79\\-117.4637\\-180.0073\\-79\\-115.5106\\-179.6673\\-79\\-113.9264\\-180.1303\\-79\\-113.5575\\-180.5559\\-79\\-113.1681\\-182.0834\\-79\\-114.2067\\-184.0365\\-79\\-114.75\\-185.9896\\-79\\-115.0759\\-187.9428\\-79\\-115.2288\\-191.849\\-79\\-114.3356\\-193.8021\\-79\\-112.4582\\-195.7553\\-79\\-111.0086\\-197.7084\\-79\\-110.7374\\-199.6615\\-79\\-110.694\\-201.6146\\-79\\-111.6043\\-202.1985\\-79\\-113.3947\\-201.6146\\-79\\-115.5106\\-200.6686\\-79\\-116.8423\\-199.6615\\-79\\-117.4637\\-198.9243\\-79\\-118.1131\\-197.7084\\-79\\-118.7678\\-195.7553\\-79\\-119.4168\\-195.0228\\-79\\-121.37\\-194.4018\\-79\\-123.3231\\-195.3082\\-79\\-124.6515\\-193.8021\\-79\\-125.2762\\-192.7321\\-79\\-127.2293\\-192.6432\\-79\\-128.9023\\-193.8021\\-79\\-130.7986\\-195.7553\\-79\\-131.1356\\-196.6208\\-79\\-132.0376\\-199.6615\\-79\\-131.7443\\-201.6146\\-79\\-131.1356\\-202.3199\\-79\\-129.1825\\-203.2748\\-79\\-127.2293\\-202.8803\\-79\\-126.288\\-203.5678\\-79\\-124.9623\\-205.5209\\-79\\-125.371\\-207.474\\-79\\-124.9944\\-209.4271\\-79\\-125.2762\\-209.8089\\-79"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "105"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-51.05748\\-203.9958\\-79\\-53.0106\\-202.8427\\-79\\-54.96373\\-202.2775\\-79\\-56.91685\\-201.4152\\-79\\-58.86998\\-202.2605\\-79\\-60.8231\\-202.6199\\-79\\-61.88458\\-201.6146\\-79\\-60.8231\\-199.6532\\-79\\-63.33072\\-197.7084\\-79\\-64.72935\\-196.8577\\-79\\-66.68247\\-195.8907\\-79\\-68.6356\\-194.7728\\-79\\-70.58872\\-195.2975\\-79\\-72.25797\\-193.8021\\-79\\-71.48299\\-191.849\\-79\\-72.25462\\-189.8959\\-79\\-73.41774\\-187.9428\\-79\\-73.21502\\-185.9896\\-79\\-73.94266\\-184.0365\\-79\\-75.04393\\-182.0834\\-79\\-75.19252\\-180.1303\\-79\\-74.79708\\-178.1771\\-79\\-73.58245\\-176.224\\-79\\-72.63659\\-174.2709\\-79\\-71.50681\\-172.3178\\-79\\-70.58872\\-171.3713\\-79\\-68.6356\\-170.3569\\-79\\-66.68247\\-169.9184\\-79\\-64.72935\\-168.59\\-79\\-62.77623\\-168.164\\-79\\-62.52874\\-168.4115\\-79\\-61.99596\\-170.3646\\-79\\-62.62762\\-172.3178\\-79\\-61.58008\\-174.2709\\-79\\-60.8231\\-174.9587\\-79\\-59.81733\\-176.224\\-79\\-59.44282\\-178.1771\\-79\\-57.78831\\-180.1303\\-79\\-55.94937\\-182.0834\\-79\\-54.78934\\-184.0365\\-79\\-54.02016\\-185.9896\\-79\\-52.42334\\-187.9428\\-79\\-51.57035\\-189.8959\\-79\\-50.3869\\-191.849\\-79\\-49.10435\\-194.502\\-79\\-48.64862\\-195.7553\\-79\\-48.29313\\-197.7084\\-79\\-47.83186\\-199.6615\\-79\\-46.88069\\-201.6146\\-79\\-46.72475\\-203.5678\\-79\\-47.15123\\-204.0525\\-79\\-49.10435\\-204.348\\-79"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "106"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-178.4246\\-79\\-39.33873\\-178.0957\\-79\\-41.29185\\-177.2997\\-79\\-43.24498\\-176.8013\\-79\\-45.1981\\-175.4757\\-79\\-46.37101\\-174.2709\\-79\\-47.45721\\-172.3178\\-79\\-48.35908\\-170.3646\\-79\\-48.89265\\-168.4115\\-79\\-49.02358\\-166.4584\\-79\\-50.00079\\-164.5053\\-79\\-51.05748\\-163.4952\\-79\\-53.0106\\-163.4462\\-79\\-54.96373\\-162.7444\\-79\\-55.13811\\-162.5521\\-79\\-54.72471\\-160.599\\-79\\-53.0106\\-159.2596\\-79\\-51.05748\\-159.1167\\-79\\-50.34485\\-158.6459\\-79\\-45.1981\\-155.5607\\-79\\-43.24498\\-153.8311\\-79\\-41.29185\\-153.0456\\-79\\-37.3856\\-152.1489\\-79\\-35.43248\\-151.7496\\-79\\-33.47935\\-151.7227\\-79\\-31.52623\\-152.2602\\-79\\-29.5731\\-153.5517\\-79\\-26.41407\\-156.6928\\-79\\-25.66685\\-157.3332\\-79\\-23.50575\\-158.6459\\-79\\-21.7606\\-159.5564\\-79\\-20.7796\\-160.599\\-79\\-21.7606\\-161.7409\\-79\\-23.71373\\-161.571\\-79\\-25.66685\\-161.9719\\-79\\-26.23371\\-162.5521\\-79\\-27.03946\\-164.5053\\-79\\-27.59727\\-166.4584\\-79\\-27.92729\\-168.4115\\-79\\-28.4131\\-170.3646\\-79\\-29.22433\\-172.3178\\-79\\-30.37311\\-174.2709\\-79\\-32.30362\\-176.224\\-79\\-33.47935\\-177.1312\\-79\\-35.43248\\-178.1393\\-79"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "107"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "36.83315\\-200.1202\\-79\\36.52736\\-199.6615\\-79\\37.28888\\-197.7084\\-79\\37.48234\\-195.7553\\-79\\38.78627\\-194.1726\\-79\\40.7394\\-193.6801\\-79\\42.27658\\-195.7553\\-79\\42.32553\\-197.7084\\-79\\41.12875\\-199.6615\\-79\\40.7394\\-200.0385\\-79\\38.78627\\-200.3446\\-79"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002341"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "108"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "44.64565\\-206.2478\\-79\\44.07695\\-205.5209\\-79\\44.08056\\-203.5678\\-79\\45.00275\\-201.6146\\-79\\45.74487\\-199.6615\\-79\\46.06864\\-197.7084\\-79\\47.3462\\-195.7553\\-79\\47.94485\\-193.8021\\-79\\49.15864\\-191.849\\-79\\49.95091\\-189.8959\\-79\\50.51271\\-187.9428\\-79\\51.52553\\-185.9896\\-79\\52.89284\\-184.0365\\-79\\53.76894\\-182.0834\\-79\\54.50602\\-180.1303\\-79\\54.33051\\-178.1771\\-79\\54.8511\\-174.2709\\-79\\55.79193\\-172.3178\\-79\\56.3644\\-171.7569\\-79\\58.41306\\-170.3646\\-79\\60.27065\\-169.3936\\-79\\62.22377\\-169.3076\\-79\\64.1769\\-169.6403\\-79\\66.13003\\-170.1529\\-79\\68.08315\\-171.379\\-79\\70.03628\\-173.2674\\-79\\70.90758\\-174.2709\\-79\\71.37539\\-176.224\\-79\\70.65973\\-180.1303\\-79\\70.66685\\-182.0834\\-79\\71.28091\\-184.0365\\-79\\71.18975\\-185.9896\\-79\\70.45876\\-187.9428\\-79\\70.42017\\-189.8959\\-79\\70.72195\\-191.849\\-79\\70.03628\\-193.0885\\-79\\68.08315\\-192.8511\\-79\\65.07786\\-195.7553\\-79\\64.1769\\-196.4826\\-79\\62.22377\\-197.4208\\-79\\60.27065\\-198.1431\\-79\\58.31752\\-198.7206\\-79\\56.3644\\-200.2893\\-79\\54.41127\\-202.1366\\-79\\52.45815\\-202.9741\\-79\\50.50502\\-204.3039\\-79\\48.5519\\-205.0116\\-79\\46.59877\\-206.2034\\-79"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "109"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-208.5668\\-77\\-128.2271\\-207.474\\-77\\-129.1825\\-206.2184\\-77\\-131.1356\\-206.6456\\-77\\-133.0887\\-206.281\\-77\\-133.8224\\-205.5209\\-77\\-135.2034\\-203.5678\\-77\\-135.9283\\-201.6146\\-77\\-136.2015\\-199.6615\\-77\\-136.5517\\-195.7553\\-77\\-136.6341\\-193.8021\\-77\\-136.1186\\-191.849\\-77\\-135.0419\\-190.7381\\-77\\-133.0887\\-190.7433\\-77\\-132.0353\\-191.849\\-77\\-133.5369\\-193.8021\\-77\\-133.5016\\-195.7553\\-77\\-133.6109\\-197.7084\\-77\\-133.9916\\-199.6615\\-77\\-133.0887\\-201.4559\\-77\\-131.6354\\-203.5678\\-77\\-131.1356\\-204.1497\\-77\\-129.1825\\-205.2692\\-77\\-127.2293\\-204.7572\\-77\\-126.764\\-205.5209\\-77\\-126.8708\\-207.474\\-77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "32"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "110"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-117.4637\\-198.8086\\-77\\-119.3181\\-197.7084\\-77\\-121.37\\-195.8224\\-77\\-123.3231\\-196.4303\\-77\\-124.0027\\-195.7553\\-77\\-124.5931\\-193.8021\\-77\\-123.3805\\-191.849\\-77\\-125.2762\\-190.2377\\-77\\-129.1825\\-192.1664\\-77\\-129.6708\\-191.849\\-77\\-130.9848\\-189.8959\\-77\\-129.8644\\-187.9428\\-77\\-127.2293\\-185.2153\\-77\\-125.2762\\-183.7416\\-77\\-123.3231\\-182.7904\\-77\\-121.37\\-181.0335\\-77\\-119.4168\\-179.8222\\-77\\-117.4637\\-179.085\\-77\\-115.5106\\-178.5846\\-77\\-113.5575\\-178.6262\\-77\\-111.6043\\-179.3191\\-77\\-110.9637\\-180.1303\\-77\\-113.0408\\-184.0365\\-77\\-114.2384\\-185.9896\\-77\\-114.5714\\-187.9428\\-77\\-114.7658\\-189.8959\\-77\\-115.1111\\-191.849\\-77\\-114.2106\\-193.8021\\-77\\-113.1712\\-195.7553\\-77\\-113.5575\\-196.3178\\-77\\-115.5106\\-196.9991\\-77\\-116.0768\\-197.7084\\-77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "111"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-47.15123\\-205.7356\\-77\\-51.05748\\-204.3519\\-77\\-53.0106\\-202.5313\\-77\\-56.91685\\-200.9793\\-77\\-58.86998\\-200.8426\\-77\\-60.8231\\-200.9506\\-77\\-61.05005\\-199.6615\\-77\\-62.77623\\-198.2025\\-77\\-66.68247\\-196.5188\\-77\\-68.6356\\-195.5642\\-77\\-70.58872\\-194.711\\-77\\-71.51359\\-193.8021\\-77\\-73.09895\\-191.849\\-77\\-75.00531\\-189.8959\\-77\\-75.77381\\-187.9428\\-77\\-75.79456\\-185.9896\\-77\\-75.94746\\-182.0834\\-77\\-75.94746\\-180.1303\\-77\\-75.50069\\-178.1771\\-77\\-74.69441\\-176.224\\-77\\-73.29428\\-174.2709\\-77\\-72.2207\\-172.3178\\-77\\-70.58872\\-170.2561\\-77\\-68.6356\\-169.2667\\-77\\-66.68247\\-168.7485\\-77\\-64.72935\\-168.5077\\-77\\-62.77623\\-169.7219\\-77\\-62.3205\\-170.3646\\-77\\-62.46141\\-172.3178\\-77\\-61.86571\\-174.2709\\-77\\-60.26101\\-176.224\\-77\\-59.23932\\-178.1771\\-77\\-57.68977\\-180.1303\\-77\\-54.00111\\-184.0365\\-77\\-53.22379\\-185.9896\\-77\\-51.9593\\-187.9428\\-77\\-51.05748\\-189.864\\-77\\-49.99645\\-191.849\\-77\\-48.56809\\-193.8021\\-77\\-47.86094\\-195.7553\\-77\\-46.81294\\-197.7084\\-77\\-46.42155\\-199.6615\\-77\\-45.1981\\-203.6073\\-77\\-46.80721\\-205.5209\\-77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "112"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-178.4477\\-77\\-41.29185\\-178.1543\\-77\\-43.24498\\-177.0851\\-77\\-45.1981\\-176.2616\\-77\\-47.15123\\-173.7783\\-77\\-48.04818\\-172.3178\\-77\\-48.75558\\-170.3646\\-77\\-48.91735\\-168.4115\\-77\\-49.49622\\-166.4584\\-77\\-50.31509\\-164.5053\\-77\\-51.05748\\-163.5221\\-77\\-53.0106\\-162.2798\\-77\\-54.96373\\-163.4174\\-77\\-55.79869\\-162.5521\\-77\\-55.48568\\-160.599\\-77\\-54.96373\\-160.0384\\-77\\-53.0106\\-159.0644\\-77\\-51.05748\\-159.0328\\-77\\-49.10435\\-157.7348\\-77\\-47.15123\\-155.8996\\-77\\-45.25969\\-154.7396\\-77\\-41.29185\\-152.1374\\-77\\-39.33873\\-151.5475\\-77\\-37.3856\\-150.4254\\-77\\-35.43248\\-150.3071\\-77\\-33.47935\\-150.2979\\-77\\-31.52623\\-150.4016\\-77\\-29.5731\\-151.5603\\-77\\-25.66685\\-155.4519\\-77\\-24.66661\\-156.6928\\-77\\-23.71373\\-157.6286\\-77\\-21.7606\\-159.1376\\-77\\-20.56261\\-160.599\\-77\\-21.7606\\-161.5399\\-77\\-23.71373\\-161.2309\\-77\\-25.55754\\-162.5521\\-77\\-26.44915\\-164.5053\\-77\\-27.02109\\-166.4584\\-77\\-27.65783\\-170.3646\\-77\\-29.5731\\-174.1413\\-77\\-31.33808\\-176.224\\-77\\-33.47935\\-177.2595\\-77\\-35.43248\\-178.459\\-77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002340"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "60"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "113"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "44.64565\\-208.097\\-77\\43.35519\\-207.474\\-77\\42.69252\\-206.8818\\-77\\42.01205\\-205.5209\\-77\\42.08616\\-203.5678\\-77\\43.51398\\-201.6146\\-77\\43.88173\\-199.6615\\-77\\42.69252\\-198.4626\\-77\\40.7394\\-200.1639\\-77\\40.03904\\-199.6615\\-77\\39.32449\\-197.7084\\-77\\39.46862\\-195.7553\\-77\\40.7394\\-194.5891\\-77\\42.39142\\-195.7553\\-77\\43.58458\\-197.7084\\-77\\44.64565\\-198.7594\\-77\\45.33535\\-197.7084\\-77\\46.29073\\-195.7553\\-77\\47.55489\\-193.8021\\-77\\48.29281\\-191.849\\-77\\49.54891\\-189.8959\\-77\\50.25754\\-187.9428\\-77\\51.40537\\-185.9896\\-77\\52.96642\\-184.0365\\-77\\53.7383\\-182.0834\\-77\\54.2892\\-180.1303\\-77\\54.49204\\-176.224\\-77\\54.4189\\-174.2709\\-77\\55.36158\\-172.3178\\-77\\56.3644\\-171.3661\\-77\\58.31752\\-169.8504\\-77\\60.27065\\-168.6839\\-77\\62.22377\\-167.8896\\-77\\64.1769\\-167.9407\\-77\\66.13003\\-169.1019\\-77\\68.08315\\-169.8008\\-77\\68.76958\\-170.3646\\-77\\70.65273\\-172.3178\\-77\\71.59502\\-174.2709\\-77\\71.82781\\-176.224\\-77\\71.54315\\-180.1303\\-77\\71.93243\\-182.0834\\-77\\73.31968\\-184.0365\\-77\\73.1822\\-185.9896\\-77\\72.43271\\-187.9428\\-77\\71.94802\\-189.8959\\-77\\71.59248\\-191.849\\-77\\70.03628\\-193.7634\\-77\\68.08315\\-194.3646\\-77\\65.80138\\-195.7553\\-77\\64.1769\\-196.5834\\-77\\62.22377\\-197.7459\\-77\\60.27065\\-198.4716\\-77\\58.31752\\-199.8485\\-77\\56.3644\\-200.6561\\-77\\54.41127\\-202.2841\\-77\\52.45815\\-202.8207\\-77\\50.50502\\-204.4176\\-77\\48.5519\\-205.88\\-77\\46.59877\\-206.7899\\-77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "114"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-133.0887\\-206.281\\-75\\-135.7113\\-203.5678\\-75\\-136.4182\\-201.6146\\-75\\-136.1452\\-199.6615\\-75\\-136.4872\\-197.7084\\-75\\-136.5141\\-195.7553\\-75\\-137.2541\\-193.8021\\-75\\-137.4918\\-191.849\\-75\\-136.995\\-191.2197\\-75\\-135.0419\\-189.5704\\-75\\-133.0887\\-189.7738\\-75\\-131.1356\\-189.5288\\-75\\-130.0004\\-187.9428\\-75\\-128.1431\\-185.9896\\-75\\-125.2762\\-183.1492\\-75\\-123.3231\\-181.3216\\-75\\-121.37\\-179.9433\\-75\\-119.4168\\-179.0627\\-75\\-117.4637\\-177.9163\\-75\\-115.5106\\-177.4091\\-75\\-113.5575\\-177.3659\\-75\\-111.6043\\-177.4365\\-75\\-110.0349\\-178.1771\\-75\\-109.6512\\-178.7425\\-75\\-109.1776\\-180.1303\\-75\\-110.5958\\-182.0834\\-75\\-112.4655\\-184.0365\\-75\\-113.3705\\-185.9896\\-75\\-113.6395\\-187.9428\\-75\\-114.2352\\-189.8959\\-75\\-114.4514\\-191.849\\-75\\-113.4627\\-193.8021\\-75\\-113.5575\\-193.967\\-75\\-115.5106\\-193.8835\\-75\\-116.2885\\-191.849\\-75\\-117.4637\\-190.8037\\-75\\-119.4168\\-189.6602\\-75\\-125.2762\\-189.6602\\-75\\-127.2293\\-191.0068\\-75\\-129.1825\\-191.6496\\-75\\-131.1356\\-190.4295\\-75\\-132.447\\-191.849\\-75\\-133.0887\\-192.3202\\-75\\-134.1326\\-193.8021\\-75\\-134.1519\\-197.7084\\-75\\-134.5361\\-199.6615\\-75\\-133.7966\\-201.6146\\-75\\-131.9486\\-203.5678\\-75\\-131.1356\\-204.8881\\-75\\-130.5938\\-205.5209\\-75\\-131.1356\\-206.0819\\-75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "115"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-119.4168\\-198.4368\\-75\\-121.37\\-196.9922\\-75\\-122.7679\\-195.7553\\-75\\-123.8397\\-193.8021\\-75\\-123.3231\\-193.3036\\-75\\-121.37\\-194.1731\\-75\\-119.4168\\-194.8215\\-75\\-118.5807\\-195.7553\\-75\\-118.5013\\-197.7084\\-75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "116"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-208.8291\\-75\\-114.8337\\-207.474\\-75\\-113.5575\\-206.1414\\-75\\-111.6043\\-204.7806\\-75\\-109.6512\\-203.0729\\-75\\-109.1496\\-203.5678\\-75\\-109.6512\\-205.4458\\-75\\-110.7531\\-207.474\\-75\\-111.6043\\-208.3344\\-75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "117"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-205.857\\-75\\-51.05748\\-204.4188\\-75\\-53.0106\\-202.4576\\-75\\-54.96373\\-201.3789\\-75\\-56.91685\\-200.5598\\-75\\-58.86998\\-199.8652\\-75\\-60.8231\\-198.69\\-75\\-62.77623\\-197.2618\\-75\\-66.68247\\-196.6046\\-75\\-68.6356\\-196.0592\\-75\\-70.58872\\-194.696\\-75\\-73.88613\\-191.849\\-75\\-75.57207\\-189.8959\\-75\\-76.36733\\-187.9428\\-75\\-76.39592\\-184.0365\\-75\\-76.51469\\-182.0834\\-75\\-76.38152\\-180.1303\\-75\\-76.10759\\-178.1771\\-75\\-75.31549\\-176.224\\-75\\-73.44608\\-174.2709\\-75\\-72.54185\\-172.3929\\-75\\-71.35563\\-170.3646\\-75\\-70.58872\\-169.5\\-75\\-68.6356\\-167.8342\\-75\\-66.68247\\-167.9147\\-75\\-64.72935\\-168.5217\\-75\\-63.18773\\-170.3646\\-75\\-63.16809\\-172.3178\\-75\\-61.98853\\-174.2709\\-75\\-60.8231\\-175.7683\\-75\\-58.24606\\-178.1771\\-75\\-57.58635\\-180.1303\\-75\\-55.84002\\-182.0834\\-75\\-53.91997\\-184.0365\\-75\\-53.11911\\-185.9896\\-75\\-51.94481\\-187.9428\\-75\\-51.05748\\-189.8224\\-75\\-49.99069\\-191.849\\-75\\-48.14371\\-193.8021\\-75\\-46.66006\\-195.7553\\-75\\-45.93727\\-197.7084\\-75\\-44.77273\\-199.6615\\-75\\-44.4538\\-201.6146\\-75\\-44.32273\\-203.5678\\-75\\-44.44733\\-205.5209\\-75\\-45.1981\\-206.4044\\-75\\-47.15123\\-206.5244\\-75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "118"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-178.459\\-75\\-43.24498\\-177.1534\\-75\\-45.1981\\-176.517\\-75\\-47.42176\\-174.2709\\-75\\-48.33207\\-172.3178\\-75\\-48.90491\\-170.3646\\-75\\-49.02358\\-168.4115\\-75\\-50.0202\\-166.4584\\-75\\-50.80999\\-164.5053\\-75\\-51.23127\\-162.5521\\-75\\-53.0106\\-161.5846\\-75\\-54.96373\\-163.1827\\-75\\-55.78114\\-162.5521\\-75\\-55.94494\\-160.599\\-75\\-54.96373\\-159.3349\\-75\\-53.0106\\-158.2247\\-75\\-51.05748\\-158.3054\\-75\\-49.10435\\-157.3493\\-75\\-45.1981\\-153.4683\\-75\\-43.24498\\-151.5841\\-75\\-41.29185\\-150.3549\\-75\\-39.33873\\-149.634\\-75\\-37.3856\\-148.4211\\-75\\-31.52623\\-148.3984\\-75\\-29.5731\\-149.356\\-75\\-27.61998\\-151.2834\\-75\\-25.66685\\-153.3997\\-75\\-23.17185\\-156.6928\\-75\\-21.7606\\-157.9173\\-75\\-20.64113\\-158.6459\\-75\\-20.9038\\-160.599\\-75\\-21.7606\\-161.124\\-75\\-23.71373\\-161.412\\-75\\-25.01754\\-162.5521\\-75\\-25.54478\\-164.5053\\-75\\-26.42171\\-166.4584\\-75\\-27.01365\\-168.4115\\-75\\-27.36089\\-170.3646\\-75\\-29.09063\\-174.2709\\-75\\-30.78185\\-176.224\\-75\\-31.52623\\-176.8089\\-75\\-33.47935\\-177.4589\\-75\\-35.43248\\-178.459\\-75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "119"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-212.6675\\-75\\-38.97663\\-211.3803\\-75\\-38.77942\\-209.4271\\-75\\-40.71965\\-207.474\\-75\\-39.99188\\-205.5209\\-75\\-39.33873\\-204.9461\\-75\\-37.3856\\-206.485\\-75\\-35.76817\\-207.474\\-75\\-35.43248\\-207.8872\\-75\\-34.73412\\-209.4271\\-75\\-35.43248\\-210.7768\\-75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002339"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "120"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "40.7394\\-210.2787\\-75\\39.44636\\-209.4271\\-75\\39.17891\\-207.474\\-75\\40.13042\\-205.5209\\-75\\40.04552\\-203.5678\\-75\\41.91685\\-201.6146\\-75\\41.77662\\-199.6615\\-75\\40.50755\\-197.7084\\-75\\40.7394\\-197.3105\\-75\\42.69252\\-195.9748\\-75\\44.64565\\-196.6708\\-75\\45.67855\\-195.7553\\-75\\47.21819\\-193.8021\\-75\\47.93761\\-191.849\\-75\\49.44199\\-189.8959\\-75\\50.25754\\-187.9428\\-75\\50.50502\\-187.6201\\-75\\52.52473\\-184.0365\\-75\\54.34469\\-180.1303\\-75\\54.88212\\-178.1771\\-75\\55.18678\\-176.224\\-75\\55.18501\\-174.2709\\-75\\55.9753\\-172.3178\\-75\\56.3644\\-171.9719\\-75\\58.31752\\-171.2158\\-75\\60.91588\\-168.4115\\-75\\62.22377\\-167.2961\\-75\\64.1769\\-166.9086\\-75\\66.13003\\-167.4933\\-75\\68.08315\\-168.2121\\-75\\70.03628\\-170.4572\\-75\\71.14304\\-172.3178\\-75\\72.1764\\-174.2709\\-75\\72.61331\\-176.224\\-75\\72.73133\\-180.1303\\-75\\74.74574\\-182.0834\\-75\\75.35311\\-184.0365\\-75\\74.87685\\-185.9896\\-75\\74.0646\\-187.9428\\-75\\73.04388\\-189.8959\\-75\\72.15099\\-191.849\\-75\\70.03628\\-193.7214\\-75\\68.08315\\-194.6264\\-75\\66.13003\\-195.7629\\-75\\64.1769\\-196.5529\\-75\\62.10826\\-197.7084\\-75\\60.27065\\-198.5107\\-75\\58.31752\\-200.0775\\-75\\56.3644\\-200.7502\\-75\\52.45815\\-202.5106\\-75\\48.5519\\-206.3289\\-75\\46.59877\\-208.1492\\-75\\44.64565\\-209.3419\\-75\\42.69252\\-209.969\\-75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "121"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-133.0887\\-206.315\\-73\\-135.8035\\-203.5678\\-73\\-136.5796\\-201.6146\\-73\\-136.2788\\-199.6615\\-73\\-136.1555\\-197.7084\\-73\\-135.9191\\-195.7553\\-73\\-136.995\\-195.1449\\-73\\-137.7261\\-193.8021\\-73\\-138.2989\\-191.849\\-73\\-136.995\\-189.9205\\-73\\-135.0419\\-189.0748\\-73\\-133.47\\-189.8959\\-73\\-134.6401\\-193.8021\\-73\\-134.6991\\-195.7553\\-73\\-134.6401\\-197.7084\\-73\\-134.685\\-199.6615\\-73\\-134.0835\\-201.6146\\-73\\-132.3589\\-203.5678\\-73\\-131.3221\\-205.5209\\-73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "122"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-121.37\\-206.4117\\-73\\-122.2831\\-205.5209\\-73\\-122.5685\\-203.5678\\-73\\-121.37\\-201.8966\\-73\\-119.4168\\-201.8141\\-73\\-117.4637\\-203.5045\\-73\\-118.4046\\-205.5209\\-73\\-119.4168\\-206.4975\\-73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "123"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-208.5717\\-73\\-114.3147\\-207.474\\-73\\-112.2386\\-205.5209\\-73\\-109.6512\\-202.6777\\-73\\-108.7274\\-203.5678\\-73\\-109.1893\\-205.5209\\-73\\-110.6229\\-207.474\\-73\\-111.6043\\-208.4313\\-73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "29"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "124"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-193.957\\-73\\-115.5106\\-193.2341\\-73\\-116.2483\\-191.849\\-73\\-117.4637\\-190.7419\\-73\\-119.4168\\-189.6484\\-73\\-121.37\\-189.6484\\-73\\-125.2762\\-189.5289\\-73\\-127.2293\\-190.9589\\-73\\-129.1825\\-191.5279\\-73\\-130.5259\\-189.8959\\-73\\-130.015\\-187.9428\\-73\\-128.5678\\-185.9896\\-73\\-124.6165\\-182.0834\\-73\\-121.37\\-179.2264\\-73\\-119.4168\\-177.8915\\-73\\-117.4637\\-177.0816\\-73\\-115.5106\\-176.0357\\-73\\-113.5575\\-175.5675\\-73\\-111.6043\\-175.5675\\-73\\-109.6512\\-175.892\\-73\\-109.2181\\-176.224\\-73\\-107.5627\\-178.1771\\-73\\-108.3004\\-180.1303\\-73\\-109.6512\\-181.9643\\-73\\-111.7671\\-184.0365\\-73\\-112.8151\\-185.9896\\-73\\-113.1607\\-187.9428\\-73\\-113.5053\\-191.849\\-73\\-113.4627\\-193.8021\\-73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "125"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-45.1981\\-208.1927\\-73\\-47.15123\\-206.6477\\-73\\-49.10435\\-206.1272\\-73\\-51.05748\\-204.3919\\-73\\-53.0106\\-202.43\\-73\\-54.96373\\-200.9085\\-73\\-56.91685\\-200.2612\\-73\\-58.86998\\-198.961\\-73\\-60.8231\\-198.3403\\-73\\-62.77623\\-196.6874\\-73\\-64.72935\\-196.0352\\-73\\-66.68247\\-196.4542\\-73\\-68.6356\\-196.2772\\-73\\-70.58872\\-194.9567\\-73\\-72.54185\\-193.9765\\-73\\-74.49497\\-192.5546\\-73\\-75.19653\\-191.849\\-73\\-76.4481\\-189.3857\\-73\\-76.99432\\-187.9428\\-73\\-76.97005\\-184.0365\\-73\\-77.19821\\-182.0834\\-73\\-76.99432\\-180.1303\\-73\\-76.4481\\-178.3061\\-73\\-75.57109\\-176.224\\-73\\-73.91025\\-174.2709\\-73\\-72.95779\\-172.3178\\-73\\-71.49218\\-170.3646\\-73\\-70.35177\\-168.4115\\-73\\-68.6356\\-166.8019\\-73\\-66.68247\\-167.5251\\-73\\-65.40209\\-168.4115\\-73\\-64.72935\\-169.0602\\-73\\-63.84714\\-170.3646\\-73\\-63.66721\\-172.3178\\-73\\-60.02756\\-176.224\\-73\\-59.35244\\-178.1771\\-73\\-57.75454\\-180.1303\\-73\\-55.8448\\-182.0834\\-73\\-54.12996\\-184.0365\\-73\\-53.52428\\-185.9896\\-73\\-51.97979\\-187.9428\\-73\\-51.08018\\-189.8959\\-73\\-49.99069\\-191.849\\-73\\-46.17466\\-195.7553\\-73\\-44.93901\\-197.7084\\-73\\-44.2021\\-199.6615\\-73\\-42.69086\\-201.6146\\-73\\-42.52568\\-203.5678\\-73\\-42.47607\\-205.5209\\-73\\-41.29185\\-207.3941\\-73\\-41.29185\\-207.7182\\-73\\-43.24498\\-209.4158\\-73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "126"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-178.459\\-73\\-43.24498\\-177.1534\\-73\\-45.1981\\-176.4357\\-73\\-47.15123\\-174.8887\\-73\\-47.67925\\-174.2709\\-73\\-48.49067\\-172.3178\\-73\\-48.91735\\-170.3646\\-73\\-49.52549\\-168.4115\\-73\\-50.32877\\-166.4584\\-73\\-50.97671\\-164.5053\\-73\\-51.00529\\-162.5521\\-73\\-53.0106\\-161.1483\\-73\\-54.96373\\-161.7758\\-73\\-56.51209\\-160.599\\-73\\-55.86871\\-158.6459\\-73\\-54.96373\\-157.7313\\-73\\-53.0106\\-157.5801\\-73\\-51.05748\\-157.5989\\-73\\-49.8256\\-156.6928\\-73\\-47.85458\\-154.7396\\-73\\-45.1981\\-151.6358\\-73\\-43.24498\\-149.6111\\-73\\-41.29185\\-148.3336\\-73\\-39.33873\\-147.6403\\-73\\-37.3856\\-146.3819\\-73\\-29.5731\\-146.3786\\-73\\-27.61998\\-147.5417\\-73\\-25.66685\\-149.6718\\-73\\-25.0434\\-150.8334\\-73\\-24.58868\\-152.7865\\-73\\-21.7606\\-156.6257\\-73\\-19.80748\\-157.6793\\-73\\-18.83091\\-158.6459\\-73\\-18.958\\-160.599\\-73\\-19.80748\\-161.2552\\-73\\-21.7606\\-160.9245\\-73\\-23.71373\\-161.774\\-73\\-24.47158\\-162.5521\\-73\\-25.50526\\-166.4584\\-73\\-26.39004\\-168.4115\\-73\\-27.03622\\-170.3646\\-73\\-27.58242\\-172.3178\\-73\\-28.61788\\-174.2709\\-73\\-31.52623\\-177.1702\\-73\\-33.47935\\-178.2579\\-73\\-35.43248\\-178.459\\-73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "127"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-215.6929\\-73\\-39.48958\\-213.3334\\-73\\-39.92275\\-211.3803\\-73\\-39.33873\\-210.9454\\-73\\-37.3856\\-210.1075\\-73\\-36.88252\\-209.4271\\-73\\-37.61021\\-207.474\\-73\\-37.21633\\-205.5209\\-73\\-35.43248\\-204.8167\\-73\\-34.41892\\-205.5209\\-73\\-33.02159\\-207.474\\-73\\-32.69705\\-209.4271\\-73\\-32.70338\\-211.3803\\-73\\-33.47935\\-212.7877\\-73\\-35.43248\\-214.6752\\-73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002338"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "128"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "40.7394\\-210.8636\\-73\\38.83886\\-209.4271\\-73\\37.76113\\-207.474\\-73\\38.74813\\-205.5209\\-73\\39.84422\\-203.5678\\-73\\41.64118\\-201.6146\\-73\\41.79734\\-199.6615\\-73\\41.66924\\-197.7084\\-73\\42.69252\\-196.5461\\-73\\44.64565\\-196.2935\\-73\\45.27298\\-195.7553\\-73\\47.6057\\-191.849\\-73\\49.44199\\-189.8959\\-73\\50.31802\\-187.9428\\-73\\51.45243\\-185.9896\\-73\\52.85737\\-184.0365\\-73\\53.66274\\-182.0834\\-73\\54.86426\\-180.1303\\-73\\55.85287\\-178.1771\\-73\\57.25677\\-176.224\\-73\\58.9395\\-174.2709\\-73\\59.77006\\-172.3178\\-73\\60.27065\\-171.5128\\-73\\61.6511\\-168.4115\\-73\\62.22377\\-167.8492\\-73\\64.1769\\-167.0344\\-73\\66.13003\\-166.6223\\-73\\68.08315\\-167.3594\\-73\\69.1746\\-168.4115\\-73\\70.8186\\-170.3646\\-73\\71.62794\\-172.3178\\-73\\72.77173\\-174.2709\\-73\\73.49921\\-176.224\\-73\\74.03726\\-178.1771\\-73\\74.84856\\-180.1303\\-73\\75.54688\\-182.0834\\-73\\75.70865\\-184.0365\\-73\\75.54688\\-185.9896\\-73\\74.97739\\-187.9428\\-73\\74.09113\\-189.8959\\-73\\72.71759\\-191.849\\-73\\71.9894\\-192.5857\\-73\\69.76799\\-193.8021\\-73\\68.08315\\-194.6264\\-73\\66.13003\\-195.7629\\-73\\64.1769\\-196.3466\\-73\\62.22377\\-197.1203\\-73\\60.27065\\-198.3509\\-73\\58.31752\\-198.7817\\-73\\56.3644\\-199.9688\\-73\\54.41127\\-200.8502\\-73\\52.45815\\-202.3851\\-73\\46.59877\\-208.3534\\-73\\44.64565\\-210.2114\\-73\\42.69252\\-211.2375\\-73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "129"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-136.995\\-195.3323\\-71\\-137.9204\\-193.8021\\-71\\-138.4512\\-191.849\\-71\\-137.5271\\-189.8959\\-71\\-136.995\\-189.3822\\-71\\-135.0419\\-188.8947\\-71\\-133.9586\\-189.8959\\-71\\-134.65\\-191.849\\-71\\-135.5115\\-193.8021\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "130"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-131.1356\\-208.3379\\-71\\-133.0887\\-206.7127\\-71\\-135.0419\\-204.7114\\-71\\-136.0366\\-203.5678\\-71\\-137.4109\\-201.6146\\-71\\-137.6967\\-199.6615\\-71\\-137.4014\\-197.7084\\-71\\-136.995\\-196.6358\\-71\\-135.0419\\-198.8692\\-71\\-134.76\\-199.6615\\-71\\-134.5653\\-201.6146\\-71\\-133.7457\\-203.5678\\-71\\-131.8905\\-205.5209\\-71\\-130.1651\\-207.474\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "131"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-129.1825\\-191.1576\\-71\\-130.0827\\-189.8959\\-71\\-129.8677\\-185.9896\\-71\\-125.2762\\-181.3496\\-71\\-123.3231\\-179.8134\\-71\\-121.37\\-178.8333\\-71\\-119.4168\\-177.099\\-71\\-117.4637\\-176.0246\\-71\\-115.5106\\-175.1328\\-71\\-113.5575\\-174.7001\\-71\\-111.6043\\-174.6804\\-71\\-109.6512\\-175.0007\\-71\\-108.2722\\-176.224\\-71\\-107.2098\\-178.1771\\-71\\-107.362\\-180.1303\\-71\\-108.6896\\-182.0834\\-71\\-110.6179\\-184.0365\\-71\\-112.1892\\-185.9896\\-71\\-112.5809\\-187.9428\\-71\\-112.8325\\-189.8959\\-71\\-113.5575\\-191.3314\\-71\\-115.5106\\-191.8109\\-71\\-117.4637\\-190.5022\\-71\\-119.4168\\-189.6484\\-71\\-121.37\\-189.6484\\-71\\-123.3231\\-189.2264\\-71\\-125.2762\\-189.0859\\-71\\-127.2293\\-190.4581\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "132"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-205.8242\\-71\\-123.5955\\-205.5209\\-71\\-122.4817\\-203.5678\\-71\\-121.37\\-202.3226\\-71\\-119.4168\\-202.1448\\-71\\-117.969\\-203.5678\\-71\\-118.3928\\-205.5209\\-71\\-119.4168\\-206.5272\\-71\\-121.37\\-206.8315\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "133"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-121.37\\-198.1614\\-71\\-121.8489\\-197.7084\\-71\\-122.0953\\-195.7553\\-71\\-121.37\\-195.1025\\-71\\-119.4168\\-194.4584\\-71\\-117.4637\\-194.6383\\-71\\-116.0995\\-195.7553\\-71\\-117.4637\\-197.3093\\-71\\-117.9573\\-197.7084\\-71\\-119.4168\\-198.4191\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "134"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.8104\\-207.474\\-71\\-111.4073\\-205.5209\\-71\\-110.7921\\-203.5678\\-71\\-109.6512\\-202.4214\\-71\\-108.2874\\-203.5678\\-71\\-108.7494\\-205.5209\\-71\\-109.6512\\-206.6209\\-71\\-111.3575\\-207.474\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "135"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-212.4209\\-71\\-44.08998\\-209.4271\\-71\\-47.15123\\-206.4649\\-71\\-49.10435\\-205.2061\\-71\\-51.05748\\-204.1185\\-71\\-53.63406\\-201.6146\\-71\\-54.96373\\-200.4886\\-71\\-56.91685\\-199.0052\\-71\\-60.8231\\-197.775\\-71\\-62.77623\\-196.5764\\-71\\-64.72935\\-195.7629\\-71\\-66.68247\\-195.8907\\-71\\-68.6356\\-195.8638\\-71\\-70.58872\\-195.5796\\-71\\-72.54185\\-194.5866\\-71\\-75.35576\\-191.849\\-71\\-76.95341\\-189.8959\\-71\\-77.45631\\-187.9428\\-71\\-77.29089\\-185.9896\\-71\\-77.29594\\-184.0365\\-71\\-77.93417\\-182.0834\\-71\\-76.95341\\-178.1771\\-71\\-76.4481\\-176.8799\\-71\\-75.25808\\-174.2709\\-71\\-72.10854\\-170.3646\\-71\\-71.29661\\-168.4115\\-71\\-70.58872\\-167.5647\\-71\\-68.6356\\-166.5938\\-71\\-66.68247\\-167.5341\\-71\\-65.76791\\-168.4115\\-71\\-64.31341\\-170.3646\\-71\\-63.76729\\-172.3178\\-71\\-61.84233\\-174.2709\\-71\\-60.45611\\-176.224\\-71\\-59.74255\\-178.1771\\-71\\-55.86683\\-182.0834\\-71\\-53.87813\\-185.9896\\-71\\-52.26585\\-187.9428\\-71\\-51.49483\\-189.8959\\-71\\-49.99069\\-191.849\\-71\\-46.09674\\-195.7553\\-71\\-44.49281\\-197.7084\\-71\\-43.86203\\-199.6615\\-71\\-43.24498\\-200.33\\-71\\-40.57408\\-203.5678\\-71\\-40.49991\\-205.5209\\-71\\-40.09035\\-207.474\\-71\\-39.19489\\-209.4271\\-71\\-38.83542\\-211.3803\\-71\\-39.33873\\-211.9395\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "136"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-178.3641\\-71\\-44.66209\\-176.224\\-71\\-46.6485\\-174.2709\\-71\\-48.18058\\-172.3178\\-71\\-48.92997\\-170.3646\\-71\\-50.00858\\-168.4115\\-71\\-50.84577\\-166.4584\\-71\\-50.97671\\-164.5053\\-71\\-51.00529\\-162.5521\\-71\\-53.0106\\-160.9245\\-71\\-54.96373\\-161.4695\\-71\\-56.13679\\-160.599\\-71\\-56.64448\\-158.6459\\-71\\-54.96373\\-157.2177\\-71\\-51.05748\\-157.181\\-71\\-49.10435\\-155.6864\\-71\\-48.32798\\-154.7396\\-71\\-47.40042\\-152.7865\\-71\\-45.90886\\-150.8334\\-71\\-43.24498\\-147.6437\\-71\\-41.29185\\-146.3445\\-71\\-39.33873\\-145.6769\\-71\\-37.3856\\-144.3643\\-71\\-35.43248\\-144.3248\\-71\\-29.5731\\-144.3569\\-71\\-27.61998\\-145.4807\\-71\\-25.66685\\-147.4154\\-71\\-24.57868\\-148.8803\\-71\\-23.56512\\-150.8334\\-71\\-23.13642\\-152.7865\\-71\\-22.57853\\-154.7396\\-71\\-21.7606\\-155.625\\-71\\-20.32108\\-156.6928\\-71\\-17.96367\\-158.6459\\-71\\-19.80748\\-160.0823\\-71\\-21.7606\\-160.1194\\-71\\-22.28018\\-160.599\\-71\\-23.71373\\-162.7498\\-71\\-24.47383\\-164.5053\\-71\\-25.54478\\-168.4115\\-71\\-26.62252\\-170.3646\\-71\\-27.34944\\-172.3178\\-71\\-28.53319\\-174.2709\\-71\\-31.52623\\-177.2358\\-71\\-33.47935\\-178.459\\-71\\-39.33873\\-178.459\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "137"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-35.43248\\-217.6743\\-71\\-35.86716\\-217.2396\\-71\\-36.3024\\-215.2865\\-71\\-36.41446\\-213.3334\\-71\\-36.38306\\-211.3803\\-71\\-36.12399\\-209.4271\\-71\\-35.57317\\-207.474\\-71\\-34.42262\\-205.5209\\-71\\-33.47935\\-205.0208\\-71\\-32.92963\\-205.5209\\-71\\-31.4862\\-207.474\\-71\\-30.72405\\-209.4271\\-71\\-30.75418\\-213.3334\\-71\\-31.52623\\-214.7378\\-71\\-33.47935\\-216.6264\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002337"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "138"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "40.7394\\-211.8422\\-71\\38.78627\\-210.515\\-71\\37.81871\\-209.4271\\-71\\37.88586\\-207.474\\-71\\38.65084\\-205.5209\\-71\\39.66735\\-203.5678\\-71\\41.57061\\-201.6146\\-71\\42.12286\\-199.6615\\-71\\43.38929\\-197.7084\\-71\\45.48643\\-195.7553\\-71\\46.93706\\-193.8021\\-71\\47.80107\\-191.849\\-71\\49.50249\\-189.8959\\-71\\50.89441\\-187.9428\\-71\\51.93771\\-185.9896\\-71\\53.83504\\-184.0365\\-71\\55.05\\-182.0834\\-71\\55.47879\\-180.1303\\-71\\57.12844\\-178.1771\\-71\\58.00063\\-176.224\\-71\\59.2135\\-174.2709\\-71\\60.84795\\-172.3178\\-71\\61.29649\\-170.3646\\-71\\62.22377\\-169.3172\\-71\\64.1769\\-167.4163\\-71\\66.13003\\-165.8513\\-71\\68.08315\\-166.0237\\-71\\68.5748\\-166.4584\\-71\\70.19904\\-168.4115\\-71\\71.18723\\-170.3646\\-71\\72.34622\\-172.3178\\-71\\73.80709\\-176.224\\-71\\74.74107\\-178.1771\\-71\\75.56799\\-180.1303\\-71\\75.78714\\-182.0834\\-71\\75.78714\\-184.0365\\-71\\75.56799\\-187.9428\\-71\\74.7121\\-189.8959\\-71\\73.94253\\-190.6959\\-71\\71.9894\\-192.4126\\-71\\70.03628\\-193.2032\\-71\\68.08315\\-194.6054\\-71\\66.13003\\-195.6605\\-71\\64.1769\\-195.8773\\-71\\62.22377\\-196.6207\\-71\\60.27065\\-197.6418\\-71\\58.31752\\-197.8828\\-71\\56.3644\\-198.6242\\-71\\54.41127\\-200.3036\\-71\\52.5279\\-201.6146\\-71\\50.49733\\-203.5678\\-71\\49.04599\\-205.5209\\-71\\47.39098\\-207.474\\-71\\44.64565\\-210.2193\\-71\\42.69252\\-211.7268\\-71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "139"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-133.0887\\-208.1307\\-69\\-135.7049\\-205.5209\\-69\\-137.2425\\-203.5678\\-69\\-137.9537\\-201.6146\\-69\\-138.4024\\-199.6615\\-69\\-138.2607\\-197.7084\\-69\\-137.5646\\-195.7553\\-69\\-138.2992\\-193.8021\\-69\\-138.5711\\-191.849\\-69\\-137.7673\\-189.8959\\-69\\-136.995\\-189.1575\\-69\\-135.0419\\-188.8344\\-69\\-134.2122\\-189.8959\\-69\\-135.4189\\-191.849\\-69\\-136.665\\-195.7553\\-69\\-135.4414\\-199.6615\\-69\\-133.8381\\-203.5678\\-69\\-132.195\\-205.5209\\-69\\-131.1356\\-206.5947\\-69\\-130.0678\\-207.474\\-69\\-131.1356\\-208.7696\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "140"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-129.1825\\-190.8336\\-69\\-129.987\\-189.8959\\-69\\-130.002\\-185.9896\\-69\\-125.2762\\-181.2064\\-69\\-121.37\\-177.4358\\-69\\-119.4168\\-176.6134\\-69\\-117.4637\\-175.4358\\-69\\-115.5106\\-174.7175\\-69\\-113.5575\\-174.4947\\-69\\-111.6043\\-174.4947\\-69\\-109.6512\\-174.6277\\-69\\-107.6981\\-175.862\\-69\\-107.4163\\-176.224\\-69\\-107.2098\\-178.1771\\-69\\-107.2917\\-180.1303\\-69\\-108.6191\\-182.0834\\-69\\-110.5075\\-184.0365\\-69\\-111.3806\\-185.9896\\-69\\-111.5378\\-187.9428\\-69\\-112.2243\\-189.8959\\-69\\-113.5575\\-191.207\\-69\\-115.5106\\-190.8518\\-69\\-117.4637\\-189.7605\\-69\\-119.4168\\-189.6484\\-69\\-121.37\\-189.6484\\-69\\-123.3231\\-188.8677\\-69\\-125.2762\\-187.9506\\-69\\-127.2293\\-189.1635\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "141"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-206.3011\\-69\\-124.0755\\-205.5209\\-69\\-121.37\\-202.8622\\-69\\-119.4168\\-202.3113\\-69\\-118.476\\-203.5678\\-69\\-119.2258\\-205.5209\\-69\\-119.4168\\-205.7106\\-69\\-121.37\\-206.5426\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "142"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-119.4168\\-200.5468\\-69\\-119.9875\\-199.6615\\-69\\-122.3289\\-197.7084\\-69\\-122.1838\\-195.7553\\-69\\-121.37\\-195.4623\\-69\\-119.4168\\-195.882\\-69\\-117.4637\\-194.7918\\-69\\-116.3846\\-195.7553\\-69\\-116.7832\\-197.7084\\-69\\-118.8173\\-199.6615\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "143"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-109.6512\\-207.9681\\-69\\-110.3261\\-207.474\\-69\\-111.2638\\-205.5209\\-69\\-111.1335\\-203.5678\\-69\\-109.6512\\-201.7501\\-69\\-107.6981\\-202.9767\\-69\\-107.2822\\-203.5678\\-69\\-107.4163\\-205.5209\\-69\\-109.0941\\-207.474\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "144"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-213.5204\\-69\\-41.50111\\-213.3334\\-69\\-43.24498\\-210.8343\\-69\\-44.12101\\-209.4271\\-69\\-46.01353\\-207.474\\-69\\-48.06578\\-205.5209\\-69\\-50.41875\\-203.5678\\-69\\-52.10506\\-201.6146\\-69\\-53.0106\\-200.8638\\-69\\-54.96373\\-199.7281\\-69\\-56.91685\\-198.3788\\-69\\-58.86998\\-197.6708\\-69\\-62.77623\\-196.3656\\-69\\-64.72935\\-195.7629\\-69\\-68.6356\\-195.6067\\-69\\-70.58872\\-195.5937\\-69\\-72.54185\\-194.6177\\-69\\-74.49497\\-192.7188\\-69\\-77.29414\\-189.8959\\-69\\-78.002\\-187.9428\\-69\\-77.34256\\-185.9896\\-69\\-77.33937\\-184.0365\\-69\\-78.1194\\-182.0834\\-69\\-78.0218\\-180.1303\\-69\\-77.32793\\-178.1771\\-69\\-75.60079\\-174.2709\\-69\\-74.95694\\-172.3178\\-69\\-73.58523\\-170.3646\\-69\\-72.85667\\-168.4115\\-69\\-72.54185\\-168.0571\\-69\\-70.58872\\-166.5861\\-69\\-68.6356\\-167.1181\\-69\\-66.68247\\-168.1035\\-69\\-66.37235\\-168.4115\\-69\\-65.20876\\-170.3646\\-69\\-63.93415\\-172.3178\\-69\\-62.3919\\-174.2709\\-69\\-61.45839\\-176.224\\-69\\-59.77108\\-178.1771\\-69\\-57.81529\\-180.1303\\-69\\-56.08044\\-182.0834\\-69\\-55.62658\\-184.0365\\-69\\-54.14993\\-185.9896\\-69\\-53.44529\\-187.9428\\-69\\-51.9261\\-189.8959\\-69\\-50.02813\\-191.849\\-69\\-45.1981\\-196.6483\\-69\\-42.53697\\-199.6615\\-69\\-41.4558\\-201.6146\\-69\\-40.10569\\-203.5678\\-69\\-38.50617\\-205.5209\\-69\\-38.35792\\-209.4271\\-69\\-38.37479\\-211.3803\\-69\\-39.33873\\-212.9441\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "145"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-178.3766\\-69\\-41.29185\\-177.5486\\-69\\-43.24498\\-176.9071\\-69\\-45.1981\\-175.2525\\-69\\-48.12254\\-172.3178\\-69\\-48.92997\\-170.3646\\-69\\-50.07079\\-168.4115\\-69\\-50.97671\\-166.4584\\-69\\-51.00529\\-162.5521\\-69\\-52.28399\\-160.599\\-69\\-53.0106\\-159.9531\\-69\\-54.96373\\-160.146\\-69\\-56.80835\\-158.6459\\-69\\-55.34197\\-156.6928\\-69\\-54.96373\\-156.3462\\-69\\-53.0106\\-156.2045\\-69\\-51.05748\\-156.2768\\-69\\-49.36344\\-154.7396\\-69\\-48.27501\\-152.7865\\-69\\-46.63631\\-150.8334\\-69\\-45.53419\\-148.8803\\-69\\-44.24221\\-146.9271\\-69\\-43.24498\\-145.9556\\-69\\-41.29185\\-144.5301\\-69\\-39.33873\\-143.9975\\-69\\-37.3856\\-142.5413\\-69\\-35.43248\\-142.3031\\-69\\-31.52623\\-142.3129\\-69\\-29.5731\\-142.5862\\-69\\-29.03303\\-143.0209\\-69\\-26.05595\\-144.974\\-69\\-25.66685\\-145.3631\\-69\\-23.12886\\-148.8803\\-69\\-22.61865\\-152.7865\\-69\\-21.15839\\-154.7396\\-69\\-19.80748\\-155.8108\\-69\\-18.48168\\-156.6928\\-69\\-17.85435\\-157.3842\\-69\\-17.03901\\-158.6459\\-69\\-17.85435\\-159.4498\\-69\\-21.7606\\-159.6849\\-69\\-22.68316\\-160.599\\-69\\-23.37764\\-162.5521\\-69\\-23.57829\\-164.5053\\-69\\-24.68067\\-166.4584\\-69\\-25.32033\\-168.4115\\-69\\-26.32655\\-170.3646\\-69\\-27.01292\\-172.3178\\-69\\-28.53319\\-174.2709\\-69\\-31.52623\\-177.2056\\-69\\-33.47935\\-178.3888\\-69\\-37.3856\\-178.459\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "146"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-31.52623\\-219.8064\\-69\\-33.47935\\-218.4551\\-69\\-34.37799\\-217.2396\\-69\\-33.96763\\-215.2865\\-69\\-33.47935\\-214.7827\\-69\\-32.58854\\-213.3334\\-69\\-32.58417\\-211.3803\\-69\\-34.43372\\-207.474\\-69\\-33.66291\\-205.5209\\-69\\-31.52623\\-204.455\\-69\\-29.5731\\-204.5255\\-69\\-28.81935\\-205.5209\\-69\\-28.78344\\-213.3334\\-69\\-28.69089\\-217.2396\\-69\\-29.5731\\-218.9624\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002336"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "147"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "36.83315\\-210.2154\\-69\\36.22009\\-209.4271\\-69\\37.74612\\-207.474\\-69\\38.80898\\-205.5209\\-69\\39.5479\\-203.5678\\-69\\41.02313\\-201.6146\\-69\\41.89561\\-199.6615\\-69\\43.63098\\-197.7084\\-69\\47.47339\\-193.8021\\-69\\48.88799\\-191.849\\-69\\50.01974\\-189.8959\\-69\\50.50502\\-189.3888\\-69\\53.26329\\-185.9896\\-69\\55.17788\\-184.0365\\-69\\56.10631\\-182.0834\\-69\\56.29731\\-180.1303\\-69\\58.22278\\-176.224\\-69\\59.26122\\-174.2709\\-69\\61.10706\\-172.3178\\-69\\61.68248\\-170.3646\\-69\\63.24141\\-168.4115\\-69\\66.13003\\-165.5566\\-69\\68.08315\\-165.436\\-69\\69.44424\\-166.4584\\-69\\71.12982\\-168.4115\\-69\\72.28237\\-170.3646\\-69\\73.06313\\-172.3178\\-69\\73.62563\\-174.2709\\-69\\76.40096\\-182.0834\\-69\\76.43387\\-184.0365\\-69\\75.78714\\-185.9896\\-69\\75.63656\\-187.9428\\-69\\74.74341\\-189.8959\\-69\\73.94253\\-190.7276\\-69\\70.03628\\-192.7354\\-69\\68.08315\\-194.3134\\-69\\66.13003\\-195.0858\\-69\\64.1769\\-195.6745\\-69\\62.22377\\-196.3696\\-69\\58.31752\\-197.0523\\-69\\56.3644\\-198.3403\\-69\\54.41127\\-198.9517\\-69\\52.45815\\-200.5127\\-69\\49.41714\\-203.5678\\-69\\46.59877\\-207.0846\\-69\\44.23671\\-209.4271\\-69\\42.69252\\-210.6813\\-69\\40.7394\\-210.9183\\-69\\38.78627\\-210.834\\-69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "148"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-133.0887\\-208.5296\\-67\\-135.0419\\-206.7921\\-67\\-139.3735\\-201.6146\\-67\\-139.4189\\-199.6615\\-67\\-138.9481\\-198.7626\\-67\\-137.9505\\-197.7084\\-67\\-137.4395\\-195.7553\\-67\\-137.912\\-193.8021\\-67\\-138.9481\\-193.1486\\-67\\-139.7376\\-191.849\\-67\\-138.9481\\-190.8493\\-67\\-136.995\\-189.2816\\-67\\-135.8637\\-189.8959\\-67\\-135.9193\\-191.849\\-67\\-136.5392\\-193.8021\\-67\\-136.618\\-195.7553\\-67\\-136.4783\\-197.7084\\-67\\-135.7606\\-199.6615\\-67\\-134.598\\-201.6146\\-67\\-133.8091\\-203.5678\\-67\\-133.0887\\-204.8786\\-67\\-131.3965\\-207.474\\-67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "149"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-129.1825\\-190.9792\\-67\\-130.6509\\-189.8959\\-67\\-130.002\\-185.9896\\-67\\-126.23\\-182.0834\\-67\\-121.37\\-177.354\\-67\\-119.4168\\-176.6109\\-67\\-117.4637\\-175.6589\\-67\\-115.5106\\-175.0058\\-67\\-113.5575\\-174.5964\\-67\\-111.6043\\-174.5414\\-67\\-109.6512\\-174.8923\\-67\\-108.1689\\-176.224\\-67\\-107.3413\\-178.1771\\-67\\-108.8451\\-182.0834\\-67\\-110.4589\\-184.0365\\-67\\-111.1697\\-185.9896\\-67\\-111.1884\\-187.9428\\-67\\-111.3686\\-189.8959\\-67\\-111.6043\\-190.2183\\-67\\-113.5575\\-191.556\\-67\\-115.5106\\-190.7634\\-67\\-117.4637\\-189.6484\\-67\\-121.37\\-189.6484\\-67\\-123.3231\\-188.8259\\-67\\-125.2762\\-187.6953\\-67\\-127.2293\\-189.0711\\-67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "150"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-119.4168\\-201.3056\\-67\\-120.4992\\-199.6615\\-67\\-121.37\\-198.9458\\-67\\-123.3231\\-198.4348\\-67\\-124.1515\\-197.7084\\-67\\-125.1355\\-195.7553\\-67\\-123.3231\\-194.5046\\-67\\-121.8379\\-195.7553\\-67\\-119.7712\\-197.7084\\-67\\-119.4168\\-198.1686\\-67\\-118.7333\\-199.6615\\-67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "151"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-109.6512\\-208.4313\\-67\\-111.1814\\-207.474\\-67\\-110.6529\\-203.5678\\-67\\-109.6512\\-201.5608\\-67\\-107.6981\\-201.3003\\-67\\-107.3941\\-201.6146\\-67\\-106.9538\\-203.5678\\-67\\-107.1761\\-205.5209\\-67\\-108.6939\\-207.474\\-67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "152"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-214.1275\\-67\\-42.11936\\-213.3334\\-67\\-42.89845\\-211.3803\\-67\\-43.83964\\-209.4271\\-67\\-44.90513\\-207.474\\-67\\-47.15123\\-205.27\\-67\\-48.99421\\-203.5678\\-67\\-51.05748\\-201.3445\\-67\\-53.0106\\-200.2931\\-67\\-54.96373\\-198.5604\\-67\\-56.91685\\-197.0453\\-67\\-60.8231\\-196.4221\\-67\\-62.77623\\-195.8638\\-67\\-64.72935\\-195.6468\\-67\\-66.68247\\-195.0662\\-67\\-68.6356\\-194.8169\\-67\\-70.58872\\-194.8003\\-67\\-72.54185\\-194.3465\\-67\\-74.49497\\-192.7188\\-67\\-77.32939\\-189.8959\\-67\\-78.1194\\-187.9428\\-67\\-77.5021\\-185.9896\\-67\\-77.4929\\-184.0365\\-67\\-78.13069\\-182.0834\\-67\\-78.14214\\-180.1303\\-67\\-77.5042\\-178.1771\\-67\\-77.26413\\-176.224\\-67\\-76.89199\\-174.2709\\-67\\-75.51739\\-172.3178\\-67\\-75.20918\\-170.3646\\-67\\-74.17421\\-168.4115\\-67\\-72.54185\\-166.7301\\-67\\-70.58872\\-165.8586\\-67\\-68.6356\\-167.3949\\-67\\-65.64996\\-170.3646\\-67\\-64.00902\\-172.3178\\-67\\-63.34132\\-174.2709\\-67\\-61.73425\\-176.224\\-67\\-59.77584\\-178.1771\\-67\\-57.98976\\-180.1303\\-67\\-57.54538\\-182.0834\\-67\\-56.02463\\-184.0365\\-67\\-55.47741\\-185.9896\\-67\\-52.244\\-189.8959\\-67\\-51.05748\\-191.5325\\-67\\-48.7766\\-193.8021\\-67\\-47.15123\\-195.0381\\-67\\-45.1981\\-196.6563\\-67\\-43.24498\\-198.5966\\-67\\-38.5166\\-203.5678\\-67\\-38.0998\\-205.5209\\-67\\-36.61515\\-207.474\\-67\\-36.48756\\-209.4271\\-67\\-36.75057\\-211.3803\\-67\\-38.23501\\-213.3334\\-67\\-39.33873\\-214.4201\\-67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "153"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-178.2293\\-67\\-39.33873\\-177.4945\\-67\\-41.29185\\-176.9786\\-67\\-43.24498\\-175.6621\\-67\\-45.1981\\-174.9442\\-67\\-47.15123\\-173.2372\\-67\\-48.08054\\-172.3178\\-67\\-48.86863\\-170.3646\\-67\\-50.03561\\-168.4115\\-67\\-50.90887\\-166.4584\\-67\\-50.99089\\-162.5521\\-67\\-51.73477\\-160.599\\-67\\-53.0106\\-159.5004\\-67\\-54.96373\\-159.6801\\-67\\-56.67455\\-158.6459\\-67\\-55.9969\\-156.6928\\-67\\-54.96373\\-155.634\\-67\\-51.05748\\-155.5678\\-67\\-50.00813\\-154.7396\\-67\\-48.88055\\-152.7865\\-67\\-48.24146\\-150.8334\\-67\\-46.6474\\-148.8803\\-67\\-45.57513\\-146.9271\\-67\\-43.24498\\-144.4857\\-67\\-41.29185\\-143.5881\\-67\\-39.33873\\-142.2708\\-67\\-37.3856\\-141.5277\\-67\\-35.43248\\-140.3281\\-67\\-33.47935\\-140.3221\\-67\\-31.52623\\-140.6331\\-67\\-29.5731\\-141.9855\\-67\\-27.61998\\-142.2708\\-67\\-25.66685\\-143.2711\\-67\\-23.12139\\-146.9271\\-67\\-22.62394\\-148.8803\\-67\\-21.61199\\-150.8334\\-67\\-21.47878\\-152.7865\\-67\\-20.39213\\-154.7396\\-67\\-19.80748\\-155.2563\\-67\\-17.85435\\-155.8328\\-67\\-16.98136\\-156.6928\\-67\\-16.3178\\-158.6459\\-67\\-17.85435\\-159.5889\\-67\\-19.80748\\-159.0523\\-67\\-21.7606\\-159.8023\\-67\\-22.50625\\-160.599\\-67\\-23.3672\\-164.5053\\-67\\-24.40037\\-166.4584\\-67\\-25.53142\\-170.3646\\-67\\-26.64861\\-172.3178\\-67\\-29.5731\\-175.2997\\-67\\-31.52623\\-176.9711\\-67\\-33.47935\\-177.5278\\-67\\-35.43248\\-178.2437\\-67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "154"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-31.52623\\-222.677\\-67\\-32.17556\\-221.1459\\-67\\-32.41527\\-219.1928\\-67\\-32.48144\\-217.2396\\-67\\-31.60332\\-215.2865\\-67\\-30.62365\\-213.3334\\-67\\-30.62818\\-211.3803\\-67\\-31.47364\\-209.4271\\-67\\-32.54763\\-207.474\\-67\\-32.24493\\-205.5209\\-67\\-31.52623\\-204.8062\\-67\\-29.5731\\-203.8304\\-67\\-27.73011\\-205.5209\\-67\\-27.61235\\-207.474\\-67\\-27.07376\\-209.4271\\-67\\-26.82652\\-211.3803\\-67\\-26.32018\\-213.3334\\-67\\-25.17857\\-215.2865\\-67\\-25.004\\-217.2396\\-67\\-25.66685\\-218.819\\-67\\-27.75086\\-221.1459\\-67\\-29.5731\\-222.7675\\-67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002335"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "155"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "38.78627\\-210.4719\\-67\\37.05252\\-209.4271\\-67\\38.78627\\-207.3505\\-67\\39.5479\\-205.5209\\-67\\39.59183\\-203.5678\\-67\\40.57545\\-201.6146\\-67\\42.34147\\-199.6615\\-67\\48.5519\\-193.4048\\-67\\52.80467\\-187.9428\\-67\\53.62342\\-185.9896\\-67\\56.89453\\-182.0834\\-67\\57.45505\\-178.1771\\-67\\58.92458\\-176.224\\-67\\59.39807\\-174.2709\\-67\\61.00065\\-172.3178\\-67\\61.37712\\-170.3646\\-67\\64.1769\\-167.4536\\-67\\66.13003\\-165.5049\\-67\\68.08315\\-164.789\\-67\\70.03628\\-165.7116\\-67\\70.80782\\-166.4584\\-67\\72.28237\\-168.4115\\-67\\73.07716\\-170.3646\\-67\\73.61486\\-172.3178\\-67\\73.73082\\-174.2709\\-67\\74.7185\\-176.224\\-67\\75.57875\\-178.1771\\-67\\75.73406\\-180.1303\\-67\\76.70015\\-182.0834\\-67\\76.87222\\-184.0365\\-67\\76.29238\\-185.9896\\-67\\75.07949\\-187.9428\\-67\\74.38258\\-189.8959\\-67\\73.94253\\-190.3842\\-67\\71.27325\\-191.849\\-67\\68.08315\\-193.2098\\-67\\66.13003\\-194.4331\\-67\\64.1769\\-195.0991\\-67\\62.22377\\-195.8773\\-67\\60.27065\\-195.979\\-67\\58.31752\\-196.601\\-67\\56.3644\\-197.716\\-67\\54.41127\\-198.3506\\-67\\52.45815\\-199.3204\\-67\\46.11049\\-205.5209\\-67\\44.64565\\-206.8967\\-67\\42.69252\\-208.8809\\-67\\40.7394\\-210.3455\\-67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "156"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-136.995\\-197.4864\\-65\\-137.2558\\-195.7553\\-65\\-137.3706\\-193.8021\\-65\\-138.9481\\-193.2228\\-65\\-140.1579\\-191.849\\-65\\-138.9481\\-189.9037\\-65\\-136.995\\-190.7138\\-65\\-136.4479\\-191.849\\-65\\-136.7458\\-193.8021\\-65\\-136.5572\\-195.7553\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "157"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-131.1356\\-210.0249\\-65\\-133.0887\\-208.8885\\-65\\-135.0419\\-208.1378\\-65\\-137.5087\\-205.5209\\-65\\-138.4128\\-203.5678\\-65\\-138.9481\\-203.0053\\-65\\-139.8952\\-201.6146\\-65\\-139.8087\\-199.6615\\-65\\-138.9481\\-198.685\\-65\\-136.995\\-197.7481\\-65\\-135.8003\\-199.6615\\-65\\-134.1702\\-201.6146\\-65\\-132.7526\\-205.5209\\-65\\-131.8203\\-207.474\\-65\\-131.1356\\-208.5695\\-65\\-129.1825\\-209.3324\\-65\\-129.1825\\-209.5942\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "158"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-199.2377\\-65\\-124.521\\-197.7084\\-65\\-124.4706\\-195.7553\\-65\\-123.3231\\-194.7215\\-65\\-121.7619\\-195.7553\\-65\\-120.6426\\-197.7084\\-65\\-121.2922\\-199.6615\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "159"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-192.2359\\-65\\-115.5106\\-190.7634\\-65\\-117.4637\\-189.6484\\-65\\-121.37\\-189.5391\\-65\\-123.3231\\-188.723\\-65\\-125.2762\\-187.4291\\-65\\-127.2293\\-188.9525\\-65\\-129.1825\\-190.2261\\-65\\-129.8996\\-189.8959\\-65\\-130.2623\\-187.9428\\-65\\-129.7052\\-185.9896\\-65\\-127.2293\\-182.5447\\-65\\-125.2762\\-180.9743\\-65\\-123.3231\\-179.2833\\-65\\-121.37\\-177.8389\\-65\\-119.4168\\-177.0024\\-65\\-117.4637\\-176.517\\-65\\-115.5106\\-175.6075\\-65\\-113.5575\\-175.0337\\-65\\-111.6043\\-174.927\\-65\\-109.6512\\-175.9603\\-65\\-109.3855\\-176.224\\-65\\-108.6068\\-178.1771\\-65\\-108.8014\\-180.1303\\-65\\-109.1982\\-182.0834\\-65\\-110.1042\\-184.0365\\-65\\-110.5453\\-185.9896\\-65\\-110.5502\\-187.9428\\-65\\-110.8298\\-189.8959\\-65\\-111.6043\\-191.2397\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "160"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.6043\\-208.0998\\-65\\-112.118\\-207.474\\-65\\-110.9349\\-205.5209\\-65\\-110.5918\\-203.5678\\-65\\-110.5882\\-201.6146\\-65\\-109.6512\\-199.5338\\-65\\-107.6981\\-200.234\\-65\\-106.707\\-201.6146\\-65\\-106.3835\\-203.5678\\-65\\-106.9621\\-205.5209\\-65\\-108.6606\\-207.474\\-65\\-109.6512\\-208.4841\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "59"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "161"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-214.1861\\-65\\-42.17027\\-213.3334\\-65\\-42.89845\\-211.3803\\-65\\-43.16421\\-209.4271\\-65\\-44.32954\\-207.474\\-65\\-48.06494\\-203.5678\\-65\\-49.59574\\-201.6146\\-65\\-50.5419\\-199.6615\\-65\\-51.05748\\-199.089\\-65\\-53.0106\\-198.5322\\-65\\-54.96373\\-197.2695\\-65\\-56.91685\\-196.4045\\-65\\-58.86998\\-195.991\\-65\\-60.8231\\-195.8773\\-65\\-62.77623\\-195.6332\\-65\\-66.68247\\-194.4295\\-65\\-68.6356\\-193.9765\\-65\\-70.58872\\-193.8543\\-65\\-72.54185\\-193.5904\\-65\\-74.49497\\-192.5998\\-65\\-77.21042\\-189.8959\\-65\\-77.89591\\-187.9428\\-65\\-77.90438\\-185.9896\\-65\\-78.14214\\-182.0834\\-65\\-78.14214\\-180.1303\\-65\\-77.88997\\-176.224\\-65\\-77.327\\-174.2709\\-65\\-76.41025\\-172.3178\\-65\\-76.24435\\-170.3646\\-65\\-75.52061\\-168.4115\\-65\\-74.49497\\-166.8535\\-65\\-74.10287\\-166.4584\\-65\\-72.54185\\-165.4677\\-65\\-70.58872\\-165.5147\\-65\\-69.57169\\-166.4584\\-65\\-63.7963\\-172.3178\\-65\\-62.50569\\-174.2709\\-65\\-61.76228\\-176.224\\-65\\-59.78056\\-178.1771\\-65\\-58.48304\\-180.1303\\-65\\-57.79107\\-182.0834\\-65\\-56.65776\\-184.0365\\-65\\-55.81591\\-185.9896\\-65\\-53.92886\\-187.9428\\-65\\-52.94402\\-189.8959\\-65\\-52.1772\\-191.849\\-65\\-51.05748\\-193.6769\\-65\\-49.10435\\-195.5131\\-65\\-47.15123\\-196.4248\\-65\\-45.1981\\-197.0591\\-65\\-43.24498\\-198.6138\\-65\\-38.28736\\-203.5678\\-65\\-36.58275\\-205.5209\\-65\\-35.40885\\-207.474\\-65\\-34.54149\\-209.4271\\-65\\-35.25163\\-211.3803\\-65\\-36.4379\\-213.3334\\-65\\-37.3856\\-214.3904\\-65\\-39.33873\\-214.8996\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "162"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-176.9589\\-65\\-41.29185\\-175.6243\\-65\\-43.24498\\-174.9788\\-65\\-45.1981\\-173.7012\\-65\\-47.15123\\-172.3101\\-65\\-49.68696\\-168.4115\\-65\\-50.36843\\-166.4584\\-65\\-50.89589\\-164.5053\\-65\\-51.13824\\-160.599\\-65\\-52.39147\\-158.6459\\-65\\-53.0106\\-158.0983\\-65\\-54.96373\\-159.1044\\-65\\-55.61196\\-158.6459\\-65\\-56.64448\\-156.6928\\-65\\-54.96373\\-155.2308\\-65\\-53.0106\\-155.1035\\-65\\-51.05748\\-154.2847\\-65\\-49.6131\\-152.7865\\-65\\-48.85686\\-150.8334\\-65\\-48.246\\-148.8803\\-65\\-47.15123\\-147.4842\\-65\\-45.1981\\-145.4102\\-65\\-41.29185\\-141.6411\\-65\\-40.63358\\-141.0678\\-65\\-39.33873\\-140.2432\\-65\\-37.3856\\-139.7242\\-65\\-33.47935\\-139.659\\-65\\-31.52623\\-140.0157\\-65\\-29.5731\\-140.2509\\-65\\-27.61998\\-140.3341\\-65\\-25.66685\\-141.3195\\-65\\-23.71373\\-143.2556\\-65\\-22.89769\\-144.974\\-65\\-22.51681\\-146.9271\\-65\\-21.13207\\-148.8803\\-65\\-20.86715\\-150.8334\\-65\\-20.85053\\-152.7865\\-65\\-19.80748\\-154.1636\\-65\\-17.85435\\-155.5008\\-65\\-16.71274\\-156.6928\\-65\\-16.32115\\-158.6459\\-65\\-17.85435\\-159.4012\\-65\\-19.80748\\-157.7135\\-65\\-20.82755\\-158.6459\\-65\\-21.7606\\-160.6571\\-65\\-22.54474\\-162.5521\\-65\\-22.96945\\-164.5053\\-65\\-23.59166\\-166.4584\\-65\\-24.69517\\-168.4115\\-65\\-25.38503\\-170.3646\\-65\\-26.59119\\-172.3178\\-65\\-29.5731\\-175.2475\\-65\\-31.52623\\-176.5058\\-65\\-33.47935\\-176.9906\\-65\\-35.43248\\-177.2006\\-65\\-37.3856\\-177.1961\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "163"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-33.47935\\-225.3561\\-65\\-33.79158\\-225.0521\\-65\\-34.0205\\-223.099\\-65\\-31.56437\\-221.1459\\-65\\-29.5731\\-219.0097\\-65\\-28.76395\\-217.2396\\-65\\-28.64767\\-213.3334\\-65\\-28.65308\\-211.3803\\-65\\-29.1574\\-209.4271\\-65\\-30.40928\\-207.474\\-65\\-29.83408\\-205.5209\\-65\\-29.18989\\-205.5209\\-65\\-27.61998\\-206.9464\\-65\\-27.31601\\-207.474\\-65\\-25.66685\\-209.5023\\-65\\-24.87197\\-211.3803\\-65\\-24.7754\\-213.3334\\-65\\-24.23496\\-215.2865\\-65\\-23.51429\\-217.2396\\-65\\-24.40804\\-219.1928\\-65\\-24.91832\\-221.1459\\-65\\-25.66685\\-222.0342\\-65\\-27.36645\\-223.099\\-65\\-30.28925\\-225.0521\\-65\\-31.52623\\-225.7251\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002334"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "164"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-200.9465\\-65\\45.63759\\-199.6615\\-65\\46.59877\\-198.6\\-65\\48.77726\\-195.7553\\-65\\49.72486\\-193.8021\\-65\\50.90175\\-191.849\\-65\\51.754\\-189.8959\\-65\\53.30886\\-187.9428\\-65\\54.24968\\-185.9896\\-65\\55.31516\\-184.0365\\-65\\56.92633\\-182.0834\\-65\\57.39815\\-180.1303\\-65\\57.98986\\-178.1771\\-65\\59.15923\\-176.224\\-65\\59.86171\\-174.2709\\-65\\60.20406\\-172.3178\\-65\\61.25177\\-170.3646\\-65\\63.22274\\-168.4115\\-65\\64.85419\\-166.4584\\-65\\66.13003\\-165.312\\-65\\68.08315\\-164.6407\\-65\\70.03628\\-165.3749\\-65\\71.5737\\-166.4584\\-65\\73.07827\\-168.4115\\-65\\73.61486\\-170.3646\\-65\\73.95016\\-174.2709\\-65\\75.70865\\-178.1771\\-65\\75.73406\\-180.1303\\-65\\76.70177\\-182.0834\\-65\\76.8599\\-184.0365\\-65\\75.68394\\-185.9896\\-65\\73.12958\\-189.8959\\-65\\71.9894\\-191.0301\\-65\\70.03628\\-191.2871\\-65\\68.96621\\-191.849\\-65\\65.99915\\-193.8021\\-65\\62.22377\\-195.5436\\-65\\60.27065\\-195.6332\\-65\\56.3644\\-196.9339\\-65\\54.41127\\-197.0243\\-65\\52.45815\\-197.2708\\-65\\50.50502\\-198.8909\\-65\\49.44775\\-199.6615\\-65\\48.5519\\-200.5084\\-65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "165"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-136.995\\-194.1552\\-63\\-138.9481\\-193.2639\\-63\\-140.2798\\-191.849\\-63\\-138.9481\\-189.6964\\-63\\-136.995\\-190.7995\\-63\\-136.1376\\-191.849\\-63\\-136.5014\\-193.8021\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "166"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-133.0887\\-209.953\\-63\\-135.0419\\-208.5647\\-63\\-136.4148\\-207.474\\-63\\-138.9481\\-204.825\\-63\\-139.873\\-203.5678\\-63\\-140.2909\\-201.6146\\-63\\-139.9626\\-199.6615\\-63\\-138.9481\\-198.5868\\-63\\-136.995\\-198.7759\\-63\\-135.0419\\-200.4841\\-63\\-133.8944\\-201.6146\\-63\\-132.6633\\-203.5678\\-63\\-132.575\\-205.5209\\-63\\-131.799\\-207.474\\-63\\-131.1356\\-208.1837\\-63\\-129.563\\-209.4271\\-63\\-131.1356\\-210.5018\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "167"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-198.7583\\-63\\-124.3633\\-197.7084\\-63\\-124.2078\\-195.7553\\-63\\-123.3231\\-194.8792\\-63\\-121.37\\-194.8143\\-63\\-120.4482\\-195.7553\\-63\\-120.4755\\-197.7084\\-63\\-121.37\\-198.7612\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "168"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-192.5405\\-63\\-115.5106\\-190.7634\\-63\\-117.4637\\-189.6484\\-63\\-119.4168\\-189.6254\\-63\\-121.37\\-189.1458\\-63\\-123.3231\\-187.4045\\-63\\-125.1276\\-185.9896\\-63\\-127.2293\\-184.1166\\-63\\-126.6176\\-182.0834\\-63\\-125.2762\\-181.0273\\-63\\-123.3231\\-180.6011\\-63\\-121.37\\-180.4558\\-63\\-119.4168\\-179.1293\\-63\\-118.7244\\-178.1771\\-63\\-117.4637\\-177.1575\\-63\\-115.5106\\-176.686\\-63\\-113.5575\\-175.8372\\-63\\-111.6043\\-176.1096\\-63\\-110.0182\\-178.1771\\-63\\-109.2448\\-180.1303\\-63\\-109.2742\\-182.0834\\-63\\-109.5026\\-185.9896\\-63\\-109.5026\\-187.9428\\-63\\-110.8668\\-191.849\\-63\\-111.6043\\-193.3396\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "169"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.6043\\-208.8154\\-63\\-112.7265\\-207.474\\-63\\-112.1012\\-205.5209\\-63\\-111.8281\\-203.5678\\-63\\-113.5575\\-200.5985\\-63\\-113.9828\\-199.6615\\-63\\-114.5232\\-197.7084\\-63\\-113.5575\\-196.6485\\-63\\-112.2496\\-195.7553\\-63\\-111.6043\\-194.874\\-63\\-111.0308\\-195.7553\\-63\\-109.6512\\-196.4736\\-63\\-107.2542\\-199.6615\\-63\\-106.5506\\-201.6146\\-63\\-105.3386\\-203.5678\\-63\\-106.717\\-205.5209\\-63\\-107.6981\\-206.6021\\-63\\-109.6512\\-208.5304\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "170"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-64.72935\\-194.3968\\-63\\-66.68247\\-193.6936\\-63\\-68.6356\\-193.5092\\-63\\-70.58872\\-193.0219\\-63\\-72.54185\\-192.7645\\-63\\-74.49497\\-191.3125\\-63\\-76.4481\\-189.2644\\-63\\-77.33311\\-187.9428\\-63\\-77.50824\\-185.9896\\-63\\-78.14214\\-184.0365\\-63\\-78.13069\\-176.224\\-63\\-77.55184\\-174.2709\\-63\\-77.31379\\-172.3178\\-63\\-77.30902\\-170.3646\\-63\\-76.95341\\-168.4115\\-63\\-75.3062\\-166.4584\\-63\\-74.49497\\-165.6879\\-63\\-72.54185\\-164.854\\-63\\-70.58872\\-165.2757\\-63\\-69.16235\\-166.4584\\-63\\-67.57723\\-168.4115\\-63\\-63.74297\\-172.3178\\-63\\-62.35085\\-174.2709\\-63\\-61.76228\\-176.224\\-63\\-59.8205\\-178.1771\\-63\\-58.77523\\-180.1303\\-63\\-57.83474\\-182.0834\\-63\\-56.99762\\-184.0365\\-63\\-55.85853\\-185.9896\\-63\\-54.17959\\-187.9428\\-63\\-52.94402\\-191.849\\-63\\-53.46467\\-193.8021\\-63\\-54.96373\\-195.203\\-63\\-56.91685\\-195.6198\\-63\\-60.8231\\-195.5078\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "171"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-214.1077\\-63\\-42.08626\\-213.3334\\-63\\-42.78301\\-211.3803\\-63\\-43.75325\\-209.4271\\-63\\-44.41962\\-207.474\\-63\\-46.03582\\-205.5209\\-63\\-47.4236\\-203.5678\\-63\\-47.96593\\-201.6146\\-63\\-46.98685\\-199.6615\\-63\\-45.1981\\-198.7254\\-63\\-43.24498\\-199.0195\\-63\\-41.29185\\-200.5626\\-63\\-39.33873\\-202.4944\\-63\\-34.40828\\-207.474\\-63\\-33.83847\\-209.4271\\-63\\-32.92382\\-211.3803\\-63\\-32.80878\\-213.3334\\-63\\-33.47935\\-213.943\\-63\\-37.3856\\-214.9071\\-63\\-39.33873\\-214.9095\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "172"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-176.4357\\-63\\-39.33873\\-175.5612\\-63\\-41.29185\\-174.9341\\-63\\-45.1981\\-172.3575\\-63\\-47.19093\\-170.3646\\-63\\-49.70145\\-166.4584\\-63\\-50.33714\\-164.5053\\-63\\-50.87048\\-162.5521\\-63\\-50.97671\\-160.599\\-63\\-51.67794\\-158.6459\\-63\\-53.0106\\-157.5027\\-63\\-54.96373\\-157.8656\\-63\\-56.81364\\-156.6928\\-63\\-55.37741\\-154.7396\\-63\\-54.96373\\-154.3626\\-63\\-51.05748\\-153.2377\\-63\\-50.59153\\-152.7865\\-63\\-49.53904\\-150.8334\\-63\\-48.77669\\-148.8803\\-63\\-47.89039\\-146.9271\\-63\\-45.1981\\-143.5726\\-63\\-42.6472\\-141.0678\\-63\\-39.90595\\-139.1146\\-63\\-39.33873\\-138.5764\\-63\\-37.3856\\-138.1852\\-63\\-33.47935\\-138.1719\\-63\\-31.52623\\-138.2371\\-63\\-29.5731\\-138.7129\\-63\\-27.61998\\-139.7844\\-63\\-25.66685\\-140.0955\\-63\\-24.0271\\-141.0678\\-63\\-23.71373\\-141.3859\\-63\\-21.7606\\-144.2775\\-63\\-21.22238\\-144.974\\-63\\-20.89019\\-146.9271\\-63\\-20.7045\\-148.8803\\-63\\-20.02067\\-150.8334\\-63\\-19.14778\\-152.7865\\-63\\-17.44067\\-154.7396\\-63\\-16.26065\\-156.6928\\-63\\-17.85435\\-157.9607\\-63\\-19.80748\\-157.3853\\-63\\-21.24393\\-158.6459\\-63\\-21.72304\\-162.5521\\-63\\-22.75936\\-164.5053\\-63\\-23.40976\\-166.4584\\-63\\-24.64072\\-168.4115\\-63\\-25.49246\\-170.3646\\-63\\-26.70816\\-172.3178\\-63\\-27.61998\\-173.2346\\-63\\-29.5731\\-174.8698\\-63\\-31.52623\\-175.5161\\-63\\-33.47935\\-176.3325\\-63\\-35.43248\\-176.4478\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "173"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-33.47935\\-225.9411\\-63\\-34.43244\\-225.0521\\-63\\-33.7769\\-223.099\\-63\\-33.47935\\-222.8399\\-63\\-31.52623\\-222.5658\\-63\\-30.12439\\-223.099\\-63\\-29.5731\\-223.7826\\-63\\-29.17637\\-225.0521\\-63\\-29.5731\\-225.4643\\-63\\-31.52623\\-226.2046\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "174"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-25.66685\\-223.7275\\-63\\-26.86043\\-223.099\\-63\\-27.5238\\-221.1459\\-63\\-26.73169\\-219.1928\\-63\\-26.64866\\-217.2396\\-63\\-26.70689\\-211.3803\\-63\\-25.92125\\-209.4271\\-63\\-25.66685\\-209.2154\\-63\\-23.71373\\-210.5843\\-63\\-23.09228\\-211.3803\\-63\\-22.8773\\-213.3334\\-63\\-22.79019\\-219.1928\\-63\\-22.90291\\-221.1459\\-63\\-23.71373\\-222.3734\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002333"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "175"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-196.3028\\-63\\52.45815\\-195.1457\\-63\\51.44193\\-193.8021\\-63\\51.66188\\-191.849\\-63\\52.84509\\-189.8959\\-63\\53.66889\\-187.9428\\-63\\54.95749\\-185.9896\\-63\\55.57655\\-184.0365\\-63\\57.22897\\-180.1303\\-63\\57.992\\-178.1771\\-63\\59.20152\\-176.224\\-63\\60.00011\\-174.2709\\-63\\60.01156\\-172.3178\\-63\\61.18242\\-170.3646\\-63\\63.182\\-168.4115\\-63\\63.89507\\-166.4584\\-63\\64.1769\\-166.1606\\-63\\66.13003\\-164.7982\\-63\\68.08315\\-164.6273\\-63\\70.03628\\-164.7982\\-63\\71.9894\\-165.7364\\-63\\72.71919\\-166.4584\\-63\\73.5834\\-168.4115\\-63\\73.82046\\-170.3646\\-63\\74.48874\\-172.3178\\-63\\75.09058\\-176.224\\-63\\75.70865\\-178.1771\\-63\\75.72126\\-180.1303\\-63\\76.42578\\-182.0834\\-63\\76.46531\\-184.0365\\-63\\74.90414\\-185.9896\\-63\\73.23837\\-187.9428\\-63\\71.9894\\-189.7006\\-63\\70.03628\\-190.6475\\-63\\68.08315\\-191.039\\-63\\66.13003\\-193.0896\\-63\\64.1769\\-194.2933\\-63\\62.22377\\-194.7333\\-63\\60.27065\\-194.9806\\-63\\58.23476\\-195.7553\\-63\\56.3644\\-196.3616\\-63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "176"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-135.0419\\-209.8563\\-61\\-136.995\\-208.1972\\-61\\-139.696\\-205.5209\\-61\\-140.4482\\-203.5678\\-61\\-141.5843\\-201.6146\\-61\\-141.4817\\-199.6615\\-61\\-140.9012\\-199.0204\\-61\\-138.9481\\-198.278\\-61\\-136.995\\-199.1403\\-61\\-136.4705\\-199.6615\\-61\\-133.7684\\-201.6146\\-61\\-133.0887\\-202.1861\\-61\\-131.9083\\-203.5678\\-61\\-131.8909\\-205.5209\\-61\\-131.3473\\-207.474\\-61\\-129.8577\\-209.4271\\-61\\-131.1356\\-210.7908\\-61\\-133.0887\\-210.5557\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "177"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-198.126\\-61\\-123.7223\\-197.7084\\-61\\-123.7346\\-195.7553\\-61\\-123.3231\\-195.3161\\-61\\-121.37\\-194.7133\\-61\\-119.713\\-195.7553\\-61\\-119.954\\-197.7084\\-61\\-121.37\\-198.6479\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "178"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.6043\\-208.8274\\-61\\-113.0866\\-207.474\\-61\\-112.7475\\-205.5209\\-61\\-112.6849\\-203.5678\\-61\\-114.2471\\-201.6146\\-61\\-114.9712\\-199.6615\\-61\\-116.1857\\-197.7084\\-61\\-115.5106\\-196.794\\-61\\-114.4719\\-195.7553\\-61\\-113.5575\\-195.1837\\-61\\-112.2777\\-193.8021\\-61\\-113.5575\\-192.2333\\-61\\-115.5106\\-190.7634\\-61\\-117.4637\\-189.6368\\-61\\-119.4168\\-189.4895\\-61\\-121.37\\-188.4341\\-61\\-121.8404\\-187.9428\\-61\\-122.3095\\-185.9896\\-61\\-121.37\\-184.3779\\-61\\-121.034\\-184.0365\\-61\\-119.4168\\-182.9837\\-61\\-117.4637\\-182.4726\\-61\\-116.7931\\-182.0834\\-61\\-115.5106\\-179.743\\-61\\-113.5575\\-178.1998\\-61\\-111.6043\\-178.7567\\-61\\-110.5804\\-180.1303\\-61\\-109.9218\\-182.0834\\-61\\-109.5846\\-184.0365\\-61\\-109.3473\\-185.9896\\-61\\-109.2742\\-187.9428\\-61\\-109.3694\\-189.8959\\-61\\-110.1525\\-191.849\\-61\\-110.1829\\-193.8021\\-61\\-109.6512\\-194.2452\\-61\\-108.8358\\-195.7553\\-61\\-106.8551\\-199.6615\\-61\\-105.1988\\-203.5678\\-61\\-106.1916\\-205.5209\\-61\\-107.3992\\-207.474\\-61\\-107.6981\\-207.7771\\-61\\-109.6512\\-208.6851\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "179"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-64.72935\\-193.8248\\-61\\-66.68247\\-193.0722\\-61\\-68.6356\\-192.7758\\-61\\-70.58872\\-192.3138\\-61\\-72.54185\\-191.1676\\-61\\-74.49497\\-189.5959\\-61\\-77.32656\\-185.9896\\-61\\-78.00449\\-184.0365\\-61\\-78.13069\\-182.0834\\-61\\-78.13069\\-174.2709\\-61\\-77.85191\\-170.3646\\-61\\-77.4639\\-168.4115\\-61\\-76.39297\\-166.4584\\-61\\-74.49497\\-165.3586\\-61\\-72.54185\\-164.6539\\-61\\-70.58872\\-164.7758\\-61\\-68.6356\\-165.8092\\-61\\-68.03587\\-166.4584\\-61\\-66.5604\\-168.4115\\-61\\-65.22359\\-170.3646\\-61\\-63.69448\\-172.3178\\-61\\-62.35085\\-174.2709\\-61\\-61.76711\\-176.224\\-61\\-59.99055\\-178.1771\\-61\\-59.62952\\-180.1303\\-61\\-58.0083\\-182.0834\\-61\\-57.63719\\-184.0365\\-61\\-55.88152\\-185.9896\\-61\\-54.96373\\-187.8958\\-61\\-53.88462\\-189.8959\\-61\\-53.68668\\-191.849\\-61\\-54.96373\\-193.9123\\-61\\-56.91685\\-194.6969\\-61\\-60.8231\\-194.6928\\-61\\-62.77623\\-194.3434\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "180"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-174.9132\\-61\\-43.23722\\-172.3178\\-61\\-45.34536\\-170.3646\\-61\\-47.15123\\-168.3884\\-61\\-49.67913\\-164.5053\\-61\\-50.87048\\-160.599\\-61\\-51.15222\\-158.6459\\-61\\-52.43921\\-156.6928\\-61\\-53.0106\\-156.3394\\-61\\-54.96373\\-157.7391\\-61\\-56.81017\\-156.6928\\-61\\-55.74394\\-154.7396\\-61\\-54.96373\\-153.9676\\-61\\-53.0106\\-153.3176\\-61\\-51.05748\\-152.114\\-61\\-49.9138\\-150.8334\\-61\\-48.99585\\-148.8803\\-61\\-48.36438\\-146.9271\\-61\\-47.48732\\-144.974\\-61\\-45.98239\\-143.0209\\-61\\-43.24498\\-140.2451\\-61\\-41.29185\\-138.5574\\-61\\-39.33873\\-138.0671\\-61\\-37.3856\\-137.831\\-61\\-35.43248\\-137.7077\\-61\\-33.47935\\-137.7077\\-61\\-31.52623\\-137.8278\\-61\\-29.5731\\-138.0481\\-61\\-27.61998\\-138.4549\\-61\\-25.66685\\-139.7144\\-61\\-23.71373\\-140.2418\\-61\\-22.87996\\-141.0678\\-61\\-21.16826\\-143.0209\\-61\\-20.69566\\-144.974\\-61\\-20.01918\\-146.9271\\-61\\-18.98535\\-150.8334\\-61\\-18.60369\\-152.7865\\-61\\-16.86397\\-154.7396\\-61\\-16.08685\\-156.6928\\-61\\-17.85435\\-157.6738\\-61\\-19.80748\\-157.4983\\-61\\-20.91919\\-158.6459\\-61\\-21.52488\\-160.599\\-61\\-21.52488\\-162.5521\\-61\\-22.72372\\-164.5053\\-61\\-23.39891\\-166.4584\\-61\\-24.64072\\-168.4115\\-61\\-26.24163\\-170.3646\\-61\\-27.61998\\-172.2943\\-61\\-29.5731\\-173.6974\\-61\\-31.52623\\-174.9132\\-61\\-33.47935\\-175.1986\\-61\\-37.3856\\-175.1897\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "181"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-35.43248\\-215.5795\\-61\\-37.3856\\-214.8996\\-61\\-39.33873\\-214.4772\\-61\\-41.29185\\-212.9664\\-61\\-42.44474\\-211.3803\\-61\\-43.68887\\-209.4271\\-61\\-44.36167\\-207.474\\-61\\-45.39754\\-205.5209\\-61\\-46.0315\\-203.5678\\-61\\-45.25555\\-201.6146\\-61\\-43.24498\\-200.5646\\-61\\-41.29185\\-200.8343\\-61\\-39.33873\\-202.5956\\-61\\-38.38377\\-203.5678\\-61\\-37.3856\\-204.8568\\-61\\-34.73739\\-207.474\\-61\\-33.92324\\-209.4271\\-61\\-33.47935\\-209.9617\\-61\\-31.09154\\-213.3334\\-61\\-31.52623\\-213.9037\\-61\\-33.47935\\-215.4481\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "182"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-23.71373\\-221.5727\\-61\\-24.18216\\-221.1459\\-61\\-24.54181\\-219.1928\\-61\\-24.6098\\-217.2396\\-61\\-24.4793\\-215.2865\\-61\\-24.52407\\-213.3334\\-61\\-23.71373\\-211.4905\\-61\\-22.92027\\-213.3334\\-61\\-22.49781\\-215.2865\\-61\\-21.7606\\-216.0166\\-61\\-21.10447\\-217.2396\\-61\\-20.86286\\-219.1928\\-61\\-21.7606\\-220.7816\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002332"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "183"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-195.0069\\-61\\53.05957\\-193.8021\\-61\\52.45815\\-191.8149\\-61\\54.17555\\-187.9428\\-61\\55.23944\\-185.9896\\-61\\56.11691\\-184.0365\\-61\\56.25589\\-182.0834\\-61\\56.93406\\-180.1303\\-61\\57.48114\\-178.1771\\-61\\59.14207\\-176.224\\-61\\59.85471\\-174.2709\\-61\\60.01156\\-172.3178\\-61\\60.93021\\-170.3646\\-61\\62.80618\\-168.4115\\-61\\63.64677\\-166.4584\\-61\\64.1769\\-165.8927\\-61\\66.13003\\-164.6407\\-61\\70.03628\\-164.6407\\-61\\71.9894\\-165.3403\\-61\\73.15832\\-166.4584\\-61\\74.51983\\-170.3646\\-61\\75.06605\\-172.3178\\-61\\75.46765\\-174.2709\\-61\\75.58083\\-176.224\\-61\\75.81488\\-178.1771\\-61\\75.82906\\-182.0834\\-61\\75.69621\\-184.0365\\-61\\74.7208\\-185.9896\\-61\\71.9894\\-188.8699\\-61\\68.08315\\-190.7841\\-61\\66.13003\\-192.7209\\-61\\64.1769\\-193.6667\\-61\\62.22377\\-193.9376\\-61\\60.27065\\-194.3672\\-61\\56.3644\\-195.5683\\-61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "184"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-135.0419\\-210.5507\\-59\\-136.5067\\-209.4271\\-59\\-138.5876\\-207.474\\-59\\-140.9012\\-205.1264\\-59\\-141.8737\\-203.5678\\-59\\-142.0104\\-201.6146\\-59\\-142.027\\-199.6615\\-59\\-141.6536\\-197.7084\\-59\\-140.9012\\-196.88\\-59\\-138.9481\\-197.3807\\-59\\-136.995\\-199.1112\\-59\\-135.0419\\-201.2681\\-59\\-133.0887\\-201.6522\\-59\\-131.1356\\-203.2313\\-59\\-130.8651\\-203.5678\\-59\\-130.8101\\-207.474\\-59\\-129.8893\\-209.4271\\-59\\-131.1356\\-211.1492\\-59\\-133.0887\\-210.9094\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "33"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "185"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.6043\\-208.5122\\-59\\-112.6179\\-207.474\\-59\\-113.1045\\-205.5209\\-59\\-113.1805\\-203.5678\\-59\\-114.2911\\-201.6146\\-59\\-115.0759\\-199.6615\\-59\\-115.3362\\-197.7084\\-59\\-114.4863\\-195.7553\\-59\\-112.5298\\-193.8021\\-59\\-113.433\\-191.849\\-59\\-115.5106\\-190.7578\\-59\\-117.4637\\-189.5089\\-59\\-119.4168\\-188.8539\\-59\\-120.2364\\-187.9428\\-59\\-119.9936\\-185.9896\\-59\\-119.4168\\-185.5403\\-59\\-117.4637\\-185.1927\\-59\\-115.5106\\-184.9526\\-59\\-113.5575\\-183.9033\\-59\\-111.6043\\-183.9601\\-59\\-110.202\\-185.9896\\-59\\-109.3364\\-187.9428\\-59\\-109.2742\\-189.8959\\-59\\-109.3473\\-191.849\\-59\\-108.8611\\-193.8021\\-59\\-107.9799\\-195.7553\\-59\\-106.8631\\-197.7084\\-59\\-105.1753\\-201.6146\\-59\\-105.0956\\-203.5678\\-59\\-105.2313\\-205.5209\\-59\\-106.7826\\-207.474\\-59\\-107.6981\\-208.4214\\-59\\-109.6512\\-208.8809\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "186"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-60.8231\\-193.9242\\-59\\-64.72935\\-193.4766\\-59\\-68.73325\\-191.849\\-59\\-72.54185\\-190.45\\-59\\-74.49497\\-188.8944\\-59\\-75.40043\\-187.9428\\-59\\-77.04784\\-185.9896\\-59\\-77.4935\\-184.0365\\-59\\-78.13069\\-182.0834\\-59\\-78.14214\\-176.224\\-59\\-79.05056\\-174.2709\\-59\\-79.00096\\-172.3178\\-59\\-78.13069\\-170.3646\\-59\\-77.95734\\-168.4115\\-59\\-77.23978\\-166.4584\\-59\\-76.4481\\-165.6628\\-59\\-74.49497\\-164.8518\\-59\\-72.54185\\-164.6407\\-59\\-70.58872\\-164.6273\\-59\\-68.6356\\-165.5319\\-59\\-65.85463\\-168.4115\\-59\\-64.05327\\-170.3646\\-59\\-63.37089\\-172.3178\\-59\\-62.26254\\-174.2709\\-59\\-61.74464\\-176.224\\-59\\-60.33482\\-178.1771\\-59\\-59.78285\\-180.1303\\-59\\-58.48304\\-182.0834\\-59\\-57.80425\\-184.0365\\-59\\-56.11235\\-185.9896\\-59\\-55.61985\\-187.9428\\-59\\-54.21898\\-189.8959\\-59\\-54.29005\\-191.849\\-59\\-54.96373\\-192.6463\\-59\\-56.91685\\-193.6801\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "187"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-174.393\\-59\\-39.33873\\-173.5712\\-59\\-43.24498\\-170.9994\\-59\\-44.00669\\-170.3646\\-59\\-45.79081\\-168.4115\\-59\\-47.18998\\-166.4584\\-59\\-49.64565\\-162.5521\\-59\\-50.30957\\-160.599\\-59\\-50.87048\\-158.6459\\-59\\-51.20861\\-156.6928\\-59\\-53.0106\\-155.8919\\-59\\-54.96373\\-157.7391\\-59\\-56.64103\\-156.6928\\-59\\-55.73209\\-154.7396\\-59\\-54.96373\\-153.9345\\-59\\-53.0106\\-153.1384\\-59\\-51.05748\\-151.692\\-59\\-50.36968\\-150.8334\\-59\\-49.10435\\-147.6386\\-59\\-47.89891\\-144.974\\-59\\-45.1981\\-141.4942\\-59\\-42.75381\\-139.1146\\-59\\-41.29185\\-138.0542\\-59\\-39.33873\\-137.804\\-59\\-37.3856\\-136.5122\\-59\\-35.43248\\-136.1602\\-59\\-33.47935\\-136.1602\\-59\\-31.52623\\-136.6472\\-59\\-29.5731\\-137.8757\\-59\\-27.61998\\-138.0357\\-59\\-25.66685\\-138.4346\\-59\\-23.71373\\-139.9702\\-59\\-22.46759\\-141.0678\\-59\\-20.87084\\-143.0209\\-59\\-19.80748\\-145.0895\\-59\\-19.00135\\-146.9271\\-59\\-18.6689\\-150.8334\\-59\\-17.21932\\-152.7865\\-59\\-16.66077\\-154.7396\\-59\\-16.37376\\-156.6928\\-59\\-17.85435\\-157.4137\\-59\\-19.80748\\-157.5443\\-59\\-20.77979\\-158.6459\\-59\\-21.38357\\-160.599\\-59\\-21.52488\\-162.5521\\-59\\-22.72372\\-164.5053\\-59\\-23.53934\\-166.4584\\-59\\-24.70992\\-168.4115\\-59\\-27.61998\\-171.4285\\-59\\-29.5731\\-172.9459\\-59\\-31.52623\\-173.6109\\-59\\-33.47935\\-174.393\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "188"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-35.43248\\-215.557\\-59\\-37.3856\\-214.482\\-59\\-39.33873\\-213.7588\\-59\\-41.29185\\-212.2712\\-59\\-42.16484\\-211.3803\\-59\\-43.80222\\-207.474\\-59\\-44.28257\\-205.5209\\-59\\-44.20285\\-203.5678\\-59\\-43.24498\\-202.2593\\-59\\-41.29185\\-202.282\\-59\\-39.33873\\-204.9941\\-59\\-37.3856\\-207.0719\\-59\\-35.06138\\-209.4271\\-59\\-33.47935\\-211.3564\\-59\\-31.65593\\-213.3334\\-59\\-33.1634\\-215.2865\\-59\\-33.47935\\-215.5103\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "189"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-17.85435\\-222.3654\\-59\\-19.80748\\-219.9523\\-59\\-21.21487\\-219.1928\\-59\\-21.7606\\-218.5301\\-59\\-22.40201\\-217.2396\\-59\\-21.7606\\-216.5663\\-59\\-20.3343\\-217.2396\\-59\\-19.80748\\-217.6656\\-59\\-19.0675\\-219.1928\\-59\\-17.85435\\-220.1495\\-59\\-16.87779\\-221.1459\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "190"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-11.99498\\-231.8804\\-59\\-14.91694\\-228.9584\\-59\\-12.96382\\-227.0053\\-59\\-12.96382\\-225.0521\\-59\\-11.99498\\-224.0833\\-59\\-10.04185\\-224.0833\\-59\\-7.119884\\-227.0053\\-59\\-9.073009\\-228.9584\\-59\\-9.073009\\-230.9115\\-59\\-10.04185\\-231.8804\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002331"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "191"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-194.655\\-59\\54.41127\\-193.7432\\-59\\53.42152\\-191.849\\-59\\53.72223\\-189.8959\\-59\\54.41127\\-188.0106\\-59\\56.25589\\-184.0365\\-59\\56.25589\\-182.0834\\-59\\56.51301\\-180.1303\\-59\\57.34096\\-178.1771\\-59\\58.90239\\-176.224\\-59\\59.3246\\-174.2709\\-59\\59.87392\\-172.3178\\-59\\60.20406\\-170.3646\\-59\\61.46481\\-168.4115\\-59\\62.22377\\-167.7098\\-59\\64.1769\\-165.5836\\-59\\66.13003\\-164.6407\\-59\\68.08315\\-164.4387\\-59\\70.03628\\-164.4825\\-59\\71.9894\\-164.8092\\-59\\73.596\\-166.4584\\-59\\74.45621\\-168.4115\\-59\\75.08105\\-170.3646\\-59\\75.58083\\-172.3178\\-59\\75.82906\\-176.224\\-59\\76.44977\\-178.1771\\-59\\76.44977\\-180.1303\\-59\\75.70865\\-182.0834\\-59\\75.0711\\-184.0365\\-59\\73.48476\\-185.9896\\-59\\72.35638\\-187.9428\\-59\\71.9894\\-188.3696\\-59\\69.67355\\-189.8959\\-59\\68.08315\\-190.7702\\-59\\66.13003\\-192.2864\\-59\\62.22377\\-193.5783\\-59\\60.27065\\-193.7794\\-59\\58.31752\\-194.3323\\-59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "192"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-133.0887\\-211.9092\\-57\\-135.0419\\-210.8749\\-57\\-136.995\\-210.166\\-57\\-138.9481\\-208.6972\\-57\\-140.9012\\-206.9713\\-57\\-141.9532\\-205.5209\\-57\\-142.2188\\-203.5678\\-57\\-143.4291\\-201.6146\\-57\\-143.8433\\-199.6615\\-57\\-143.2487\\-197.7084\\-57\\-141.9858\\-195.7553\\-57\\-141.8613\\-193.8021\\-57\\-141.5331\\-191.849\\-57\\-139.8363\\-189.8959\\-57\\-138.9481\\-189.0502\\-57\\-136.995\\-189.5729\\-57\\-136.7132\\-189.8959\\-57\\-137.7153\\-191.849\\-57\\-139.0207\\-193.8021\\-57\\-138.5238\\-195.7553\\-57\\-137.4297\\-197.7084\\-57\\-136.5696\\-199.6615\\-57\\-135.0419\\-201.4402\\-57\\-133.0887\\-201.5339\\-57\\-131.1356\\-202.4664\\-57\\-130.2049\\-203.5678\\-57\\-130.2901\\-205.5209\\-57\\-130.6917\\-207.474\\-57\\-129.8893\\-209.4271\\-57\\-129.3593\\-211.3803\\-57\\-131.1356\\-212.3873\\-57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "193"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.6043\\-207.8464\\-57\\-111.9404\\-207.474\\-57\\-112.6306\\-205.5209\\-57\\-113.1705\\-203.5678\\-57\\-114.0194\\-201.6146\\-57\\-115.2176\\-197.7084\\-57\\-114.7207\\-195.7553\\-57\\-113.5575\\-193.8568\\-57\\-114.0943\\-191.849\\-57\\-116.2735\\-189.8959\\-57\\-116.9594\\-187.9428\\-57\\-113.5575\\-185.6126\\-57\\-111.6043\\-186.1474\\-57\\-110.2068\\-187.9428\\-57\\-109.3473\\-189.8959\\-57\\-109.1982\\-191.849\\-57\\-108.4826\\-193.8021\\-57\\-106.8947\\-195.7553\\-57\\-105.9807\\-197.7084\\-57\\-104.8865\\-199.6615\\-57\\-104.6564\\-201.6146\\-57\\-104.6654\\-203.5678\\-57\\-104.941\\-205.5209\\-57\\-106.6504\\-207.474\\-57\\-107.6981\\-208.5217\\-57\\-109.6512\\-208.9475\\-57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "34"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "194"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-66.68247\\-192.265\\-57\\-70.58872\\-190.7634\\-57\\-72.54185\\-189.7089\\-57\\-74.49497\\-188.8446\\-57\\-75.36571\\-187.9428\\-57\\-76.47081\\-185.9896\\-57\\-77.34399\\-184.0365\\-57\\-78.1194\\-182.0834\\-57\\-78.14214\\-176.224\\-57\\-79.20678\\-174.2709\\-57\\-79.16853\\-172.3178\\-57\\-78.14214\\-170.3646\\-57\\-78.1194\\-168.4115\\-57\\-77.57001\\-166.4584\\-57\\-76.4481\\-165.2931\\-57\\-74.49497\\-164.6539\\-57\\-70.58872\\-164.4387\\-57\\-68.6356\\-165.4673\\-57\\-64.72935\\-169.3261\\-57\\-63.77649\\-170.3646\\-57\\-62.50569\\-172.3178\\-57\\-61.47931\\-176.224\\-57\\-60.43616\\-178.1771\\-57\\-59.79536\\-180.1303\\-57\\-58.63425\\-182.0834\\-57\\-57.83081\\-184.0365\\-57\\-55.8323\\-187.9428\\-57\\-54.97136\\-189.8959\\-57\\-55.83376\\-191.849\\-57\\-56.91685\\-192.692\\-57\\-58.86998\\-193.0844\\-57\\-60.8231\\-193.5904\\-57\\-62.77623\\-193.0551\\-57\\-64.72935\\-192.7195\\-57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "195"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-173.1018\\-57\\-39.08441\\-172.3178\\-57\\-43.24498\\-169.6426\\-57\\-46.21432\\-166.4584\\-57\\-47.65395\\-164.5053\\-57\\-48.46881\\-162.5521\\-57\\-49.65056\\-160.599\\-57\\-50.32877\\-158.6459\\-57\\-50.88309\\-156.6928\\-57\\-51.05748\\-156.4786\\-57\\-53.0106\\-155.855\\-57\\-54.96373\\-157.6985\\-57\\-55.98468\\-156.6928\\-57\\-55.47741\\-154.7396\\-57\\-53.0106\\-152.3706\\-57\\-51.05748\\-150.4149\\-57\\-49.85114\\-148.8803\\-57\\-47.96167\\-144.974\\-57\\-46.70733\\-143.0209\\-57\\-45.89492\\-141.0678\\-57\\-43.24498\\-138.3847\\-57\\-41.29185\\-137.8819\\-57\\-39.33873\\-136.6819\\-57\\-37.3856\\-136.0562\\-57\\-35.43248\\-135.9348\\-57\\-33.47935\\-135.9348\\-57\\-31.52623\\-136.2604\\-57\\-29.5731\\-137.6997\\-57\\-25.66685\\-138.0366\\-57\\-23.71373\\-138.6149\\-57\\-21.13207\\-141.0678\\-57\\-20.57646\\-143.0209\\-57\\-19.05372\\-144.974\\-57\\-18.70448\\-146.9271\\-57\\-18.23138\\-148.8803\\-57\\-17.94909\\-150.8334\\-57\\-16.88687\\-152.7865\\-57\\-16.23353\\-154.7396\\-57\\-17.85435\\-155.9745\\-57\\-19.34602\\-156.6928\\-57\\-19.80748\\-157.2049\\-57\\-20.43937\\-158.6459\\-57\\-20.89491\\-160.599\\-57\\-21.67983\\-162.5521\\-57\\-22.76392\\-164.5053\\-57\\-24.35952\\-166.4584\\-57\\-25.66685\\-168.2596\\-57\\-27.77652\\-170.3646\\-57\\-29.5731\\-171.7172\\-57\\-31.52623\\-172.806\\-57\\-33.47935\\-173.1794\\-57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "196"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-11.99498\\-231.8881\\-57\\-12.97154\\-230.9115\\-57\\-12.95598\\-228.9584\\-57\\-11.00285\\-227.0053\\-57\\-11.00285\\-225.0521\\-57\\-12.97154\\-223.099\\-57\\-11.99498\\-222.1225\\-57\\-7.127726\\-227.0053\\-57\\-7.127726\\-228.9584\\-57\\-10.04185\\-231.8725\\-57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002330"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "197"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-192.1346\\-57\\54.19957\\-191.849\\-57\\54.18748\\-189.8959\\-57\\54.98734\\-187.9428\\-57\\55.68832\\-185.9896\\-57\\56.25589\\-184.0365\\-57\\56.25589\\-182.0834\\-57\\57.0339\\-180.1303\\-57\\57.5925\\-178.1771\\-57\\58.94606\\-174.2709\\-57\\59.39807\\-172.3178\\-57\\60.02316\\-170.3646\\-57\\61.25656\\-168.4115\\-57\\64.1769\\-165.4953\\-57\\66.13003\\-164.4387\\-57\\68.08315\\-163.6944\\-57\\70.03628\\-163.8628\\-57\\71.9894\\-164.8308\\-57\\73.5857\\-166.4584\\-57\\74.67495\\-168.4115\\-57\\75.58083\\-170.3646\\-57\\75.70865\\-172.3178\\-57\\75.70865\\-174.2709\\-57\\76.39249\\-176.224\\-57\\76.67413\\-178.1771\\-57\\76.32102\\-180.1303\\-57\\75.69621\\-182.0834\\-57\\74.82825\\-184.0365\\-57\\72.92631\\-185.9896\\-57\\71.78996\\-187.9428\\-57\\70.03628\\-189.7473\\-57\\68.08315\\-190.8575\\-57\\66.13003\\-191.7405\\-57\\64.1769\\-192.2508\\-57\\62.22377\\-193.0542\\-57\\60.27065\\-193.6801\\-57\\56.3644\\-193.7945\\-57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "198"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-135.0419\\-211.7721\\-55\\-136.995\\-210.6419\\-55\\-138.9481\\-210.4731\\-55\\-140.9012\\-208.9244\\-55\\-143.3514\\-205.5209\\-55\\-143.9109\\-203.5678\\-55\\-144.2455\\-199.6615\\-55\\-144.0126\\-197.7084\\-55\\-143.3855\\-195.7553\\-55\\-142.1279\\-193.8021\\-55\\-141.9487\\-191.849\\-55\\-140.9826\\-189.8959\\-55\\-138.9481\\-188.5815\\-55\\-136.995\\-189.4312\\-55\\-136.628\\-189.8959\\-55\\-137.4297\\-191.849\\-55\\-137.7392\\-193.8021\\-55\\-137.4833\\-195.7553\\-55\\-136.8595\\-197.7084\\-55\\-136.8206\\-199.6615\\-55\\-135.0419\\-201.3328\\-55\\-133.0887\\-201.3328\\-55\\-131.1356\\-202.1366\\-55\\-129.1443\\-203.5678\\-55\\-129.4182\\-205.5209\\-55\\-130.3496\\-207.474\\-55\\-129.8893\\-209.4271\\-55\\-128.2376\\-211.3803\\-55\\-129.1825\\-212.4937\\-55\\-131.1356\\-212.8365\\-55\\-133.0887\\-212.5855\\-55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "199"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-109.6512\\-208.9475\\-55\\-111.3686\\-207.474\\-55\\-111.9509\\-205.5209\\-55\\-112.6709\\-203.5678\\-55\\-114.1099\\-201.6146\\-55\\-114.8138\\-199.6615\\-55\\-115.2288\\-197.7084\\-55\\-115.1436\\-195.7553\\-55\\-114.3043\\-193.8021\\-55\\-114.2643\\-191.849\\-55\\-114.6088\\-189.8959\\-55\\-113.5575\\-187.9701\\-55\\-111.6043\\-188.1116\\-55\\-109.6512\\-190.4975\\-55\\-107.7057\\-193.8021\\-55\\-106.4648\\-195.7553\\-55\\-104.8693\\-197.7084\\-55\\-103.2836\\-201.6146\\-55\\-103.348\\-203.5678\\-55\\-104.7596\\-205.5209\\-55\\-105.932\\-207.474\\-55\\-107.6981\\-208.7129\\-55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "200"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-64.72935\\-191.8566\\-55\\-66.68247\\-191.7405\\-55\\-68.6356\\-191.1536\\-55\\-74.49497\\-188.8446\\-55\\-75.36571\\-187.9428\\-55\\-77.33002\\-184.0365\\-55\\-78.1194\\-182.0834\\-55\\-78.14214\\-176.224\\-55\\-79.00096\\-174.2709\\-55\\-78.94744\\-172.3178\\-55\\-78.33464\\-170.3646\\-55\\-78.26579\\-168.4115\\-55\\-77.85993\\-166.4584\\-55\\-76.4481\\-164.961\\-55\\-74.49497\\-164.6407\\-55\\-72.54185\\-163.8838\\-55\\-70.58872\\-163.7176\\-55\\-68.6356\\-165.1108\\-55\\-66.68247\\-166.1635\\-55\\-64.42538\\-168.4115\\-55\\-63.29897\\-170.3646\\-55\\-62.36028\\-172.3178\\-55\\-61.80431\\-174.2709\\-55\\-60.6114\\-176.224\\-55\\-60.44608\\-178.1771\\-55\\-59.82948\\-180.1303\\-55\\-58.83242\\-182.0834\\-55\\-58.02214\\-184.0365\\-55\\-57.6706\\-185.9896\\-55\\-55.94029\\-187.9428\\-55\\-55.7153\\-189.8959\\-55\\-56.91685\\-191.228\\-55\\-58.86998\\-192.4141\\-55\\-60.8231\\-193.0672\\-55\\-62.77623\\-192.7284\\-55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "201"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-171.2701\\-55\\-39.33873\\-170.2398\\-55\\-41.29185\\-169.3176\\-55\\-43.24498\\-168.1295\\-55\\-45.1981\\-166.0771\\-55\\-46.39963\\-164.5053\\-55\\-48.1137\\-162.5521\\-55\\-49.10435\\-160.1422\\-55\\-50.33656\\-156.6928\\-55\\-51.05748\\-155.8731\\-55\\-53.0106\\-155.855\\-55\\-54.96373\\-157.5639\\-55\\-55.75813\\-156.6928\\-55\\-55.07223\\-154.7396\\-55\\-53.77135\\-152.7865\\-55\\-49.90144\\-148.8803\\-55\\-48.86863\\-146.9271\\-55\\-47.96753\\-144.974\\-55\\-46.8047\\-143.0209\\-55\\-46.0111\\-141.0678\\-55\\-43.24498\\-138.2742\\-55\\-41.29185\\-137.6997\\-55\\-39.33873\\-136.2556\\-55\\-37.3856\\-135.9287\\-55\\-33.47935\\-135.8645\\-55\\-31.52623\\-136.0033\\-55\\-29.5731\\-136.5712\\-55\\-27.61998\\-137.6997\\-55\\-25.66685\\-137.8757\\-55\\-23.71373\\-138.2636\\-55\\-20.91425\\-141.0678\\-55\\-19.96906\\-143.0209\\-55\\-18.90974\\-144.974\\-55\\-18.15831\\-146.9271\\-55\\-17.75961\\-148.8803\\-55\\-17.06633\\-150.8334\\-55\\-16.59027\\-152.7865\\-55\\-16.24263\\-154.7396\\-55\\-19.68438\\-156.6928\\-55\\-20.03127\\-158.6459\\-55\\-20.85379\\-160.599\\-55\\-22.49791\\-162.5521\\-55\\-23.0576\\-164.5053\\-55\\-24.7002\\-166.4584\\-55\\-27.61998\\-169.4426\\-55\\-29.5731\\-170.8355\\-55\\-33.47935\\-171.7261\\-55\\-35.43248\\-171.713\\-55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "202"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-25.66685\\-222.1225\\-55\\-26.64341\\-221.1459\\-55\\-26.59939\\-217.2396\\-55\\-25.66685\\-216.3071\\-55\\-23.71373\\-216.3071\\-55\\-20.74001\\-219.1928\\-55\\-20.74001\\-221.1459\\-55\\-21.7606\\-222.1665\\-55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002329"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "203"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-193.1212\\-55\\55.10583\\-191.849\\-55\\54.61071\\-189.8959\\-55\\55.29066\\-187.9428\\-55\\56.1406\\-185.9896\\-55\\56.37203\\-182.0834\\-55\\57.25096\\-180.1303\\-55\\58.02456\\-178.1771\\-55\\58.15593\\-176.224\\-55\\58.10582\\-174.2709\\-55\\59.18838\\-172.3178\\-55\\60.01156\\-170.3646\\-55\\61.16964\\-168.4115\\-55\\62.22377\\-166.9561\\-55\\64.1769\\-165.1041\\-55\\66.13003\\-163.6855\\-55\\68.08315\\-163.4792\\-55\\70.03628\\-163.7728\\-55\\73.06748\\-166.4584\\-55\\74.7248\\-168.4115\\-55\\75.68394\\-170.3646\\-55\\75.70865\\-172.3178\\-55\\75.84347\\-174.2709\\-55\\76.39249\\-176.224\\-55\\76.36649\\-178.1771\\-55\\75.81488\\-180.1303\\-55\\75.69621\\-182.0834\\-55\\74.79071\\-184.0365\\-55\\72.92245\\-185.9896\\-55\\71.9894\\-187.7348\\-55\\70.67695\\-189.8959\\-55\\70.03628\\-190.4707\\-55\\68.08315\\-191.2347\\-55\\66.13003\\-191.6373\\-55\\64.1769\\-191.2171\\-55\\60.27065\\-193.543\\-55\\58.31752\\-193.6936\\-55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "204"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-135.0419\\-212.2074\\-53\\-136.995\\-211.1097\\-53\\-138.9481\\-211.0442\\-53\\-140.9012\\-210.745\\-53\\-142.0854\\-209.4271\\-53\\-143.3547\\-207.474\\-53\\-144.0995\\-205.5209\\-53\\-145.1816\\-203.5678\\-53\\-145.8219\\-201.6146\\-53\\-145.8672\\-199.6615\\-53\\-145.2313\\-197.7084\\-53\\-143.9711\\-195.7553\\-53\\-143.4674\\-193.8021\\-53\\-142.2258\\-191.849\\-53\\-141.6968\\-189.8959\\-53\\-140.9012\\-189.123\\-53\\-138.9481\\-188.0521\\-53\\-136.9142\\-189.8959\\-53\\-137.1447\\-193.8021\\-53\\-137.0325\\-195.7553\\-53\\-137.6545\\-197.7084\\-53\\-137.9715\\-199.6615\\-53\\-136.995\\-200.9616\\-53\\-135.0419\\-200.9085\\-53\\-133.0887\\-200.6605\\-53\\-131.1356\\-201.2935\\-53\\-129.1825\\-202.1144\\-53\\-128.0279\\-203.5678\\-53\\-128.4525\\-205.5209\\-53\\-130.1544\\-207.474\\-53\\-129.8316\\-209.4271\\-53\\-129.1825\\-210.0801\\-53\\-127.2293\\-210.9375\\-53\\-125.2762\\-210.9402\\-53\\-123.3231\\-210.6441\\-53\\-121.37\\-210.7017\\-53\\-120.6958\\-211.3803\\-53\\-121.37\\-212.0135\\-53\\-123.3231\\-212.4358\\-53\\-125.2762\\-212.3061\\-53\\-127.2293\\-212.3061\\-53\\-129.1825\\-212.8811\\-53\\-133.0887\\-212.9869\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "205"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-109.6512\\-208.9475\\-53\\-111.3806\\-207.474\\-53\\-111.6271\\-205.5209\\-53\\-112.5428\\-203.5678\\-53\\-113.5575\\-202.4956\\-53\\-114.6672\\-201.6146\\-53\\-116.0944\\-199.6615\\-53\\-115.5632\\-197.7084\\-53\\-115.503\\-195.7553\\-53\\-114.4487\\-193.8021\\-53\\-113.5575\\-191.3711\\-53\\-112.7871\\-189.8959\\-53\\-111.6043\\-189.311\\-53\\-109.6512\\-190.7088\\-53\\-107.6981\\-192.7965\\-53\\-105.745\\-195.1208\\-53\\-105.1141\\-195.7553\\-53\\-102.872\\-199.6615\\-53\\-102.7245\\-201.6146\\-53\\-102.9021\\-203.5678\\-53\\-104.9426\\-207.474\\-53\\-105.745\\-208.3641\\-53\\-107.6981\\-208.9052\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "34"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "206"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-62.77623\\-192.2058\\-53\\-64.72935\\-191.6496\\-53\\-66.68247\\-191.6496\\-53\\-68.6356\\-191.2871\\-53\\-70.58872\\-190.6373\\-53\\-74.49497\\-188.8446\\-53\\-75.36571\\-187.9428\\-53\\-77.33002\\-184.0365\\-53\\-78.1194\\-182.0834\\-53\\-78.15374\\-176.224\\-53\\-78.26579\\-174.2709\\-53\\-78.25262\\-172.3178\\-53\\-79.1396\\-170.3646\\-53\\-79.02975\\-168.4115\\-53\\-77.45142\\-166.4584\\-53\\-76.4481\\-165.4411\\-53\\-72.54185\\-163.665\\-53\\-70.58872\\-163.3898\\-53\\-68.6356\\-163.7537\\-53\\-66.68247\\-165.5366\\-53\\-63.89027\\-168.4115\\-53\\-62.48326\\-170.3646\\-53\\-62.27091\\-172.3178\\-53\\-61.73804\\-174.2709\\-53\\-60.46628\\-176.224\\-53\\-60.45611\\-178.1771\\-53\\-59.65215\\-182.0834\\-53\\-58.53389\\-184.0365\\-53\\-57.98806\\-185.9896\\-53\\-57.23586\\-187.9428\\-53\\-56.19908\\-189.8959\\-53\\-56.91685\\-190.7403\\-53\\-58.86998\\-191.7543\\-53\\-60.8231\\-192.371\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "207"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-35.43248\\-170.7806\\-53\\-37.3856\\-169.6648\\-53\\-39.33873\\-168.8998\\-53\\-41.29185\\-167.7045\\-53\\-43.07736\\-166.4584\\-53\\-45.1981\\-164.2936\\-53\\-47.15123\\-162.2086\\-53\\-48.34203\\-160.599\\-53\\-48.90491\\-158.6459\\-53\\-49.59263\\-156.6928\\-53\\-51.05748\\-155.3539\\-53\\-53.0106\\-155.8491\\-53\\-54.96373\\-157.2903\\-53\\-55.51415\\-156.6928\\-53\\-54.95477\\-154.7396\\-53\\-53.8034\\-152.7865\\-53\\-49.90144\\-148.8803\\-53\\-48.86863\\-146.9271\\-53\\-47.96753\\-144.974\\-53\\-46.8047\\-143.0209\\-53\\-46.0111\\-141.0678\\-53\\-43.24498\\-138.2702\\-53\\-41.29185\\-136.6617\\-53\\-39.33873\\-136.0139\\-53\\-37.3856\\-135.8577\\-53\\-31.52623\\-135.8974\\-53\\-29.5731\\-136.0192\\-53\\-27.61998\\-136.5559\\-53\\-25.66685\\-137.7156\\-53\\-23.71373\\-138.2011\\-53\\-20.86933\\-141.0678\\-53\\-19.64589\\-143.0209\\-53\\-18.85291\\-144.974\\-53\\-17.12565\\-148.8803\\-53\\-16.59027\\-150.8334\\-53\\-15.9091\\-152.7865\\-53\\-18.06577\\-154.7396\\-53\\-19.80748\\-156.8503\\-53\\-20.60268\\-158.6459\\-53\\-21.0464\\-160.599\\-53\\-22.77823\\-162.5521\\-53\\-23.71373\\-163.7438\\-53\\-25.66685\\-166.0102\\-53\\-28.16072\\-168.4115\\-53\\-29.5731\\-169.2493\\-53\\-31.52623\\-169.7077\\-53\\-33.47935\\-170.7806\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "208"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-23.71373\\-224.0756\\-53\\-26.57366\\-221.1459\\-53\\-23.71373\\-218.2162\\-53\\-19.80748\\-218.2162\\-53\\-16.80803\\-221.1459\\-53\\-16.80803\\-223.099\\-53\\-17.85435\\-224.1453\\-53\\-21.7606\\-224.1453\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002328"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "209"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-192.6763\\-53\\55.6949\\-191.849\\-53\\55.41756\\-189.8959\\-53\\55.70827\\-187.9428\\-53\\56.25589\\-185.9896\\-53\\56.38711\\-184.0365\\-53\\57.62789\\-180.1303\\-53\\58.15593\\-178.1771\\-53\\58.15593\\-176.224\\-53\\57.45399\\-174.2709\\-53\\57.55581\\-172.3178\\-53\\59.70627\\-170.3646\\-53\\60.74149\\-168.4115\\-53\\61.29929\\-166.4584\\-53\\62.22377\\-165.4679\\-53\\64.1769\\-163.7901\\-53\\66.13003\\-163.3757\\-53\\68.08315\\-163.5503\\-53\\70.03628\\-164.2462\\-53\\71.9894\\-165.7525\\-53\\74.67361\\-168.4115\\-53\\75.68394\\-170.3646\\-53\\75.82906\\-172.3178\\-53\\76.53417\\-174.2709\\-53\\76.62685\\-176.224\\-53\\75.94783\\-178.1771\\-53\\75.70865\\-180.1303\\-53\\75.69621\\-182.0834\\-53\\74.85429\\-184.0365\\-53\\73.3884\\-185.9896\\-53\\72.60182\\-187.9428\\-53\\71.0018\\-189.8959\\-53\\70.03628\\-190.8001\\-53\\68.08315\\-191.5235\\-53\\66.13003\\-191.6252\\-53\\64.1769\\-191.0073\\-53\\62.22377\\-190.96\\-53\\60.27065\\-193.0219\\-53\\58.31752\\-193.6667\\-53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "210"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-135.0419\\-213.4621\\-51\\-136.995\\-212.6192\\-51\\-140.9012\\-212.5855\\-51\\-142.8544\\-210.9456\\-51\\-143.9466\\-209.4271\\-51\\-144.4405\\-207.474\\-51\\-145.8763\\-205.5209\\-51\\-146.0845\\-201.6146\\-51\\-146.0845\\-199.6615\\-51\\-145.6966\\-197.7084\\-51\\-144.186\\-195.7553\\-51\\-143.9711\\-193.8021\\-51\\-143.3656\\-191.849\\-51\\-140.9012\\-189.2783\\-51\\-138.9481\\-188.8579\\-51\\-138.1103\\-189.8959\\-51\\-137.9847\\-195.7553\\-51\\-138.0536\\-197.7084\\-51\\-139.2842\\-199.6615\\-51\\-138.3048\\-201.6146\\-51\\-136.995\\-202.3931\\-51\\-135.7056\\-201.6146\\-51\\-135.0419\\-200.9509\\-51\\-133.0887\\-200.1668\\-51\\-129.1825\\-200.6931\\-51\\-128.2108\\-201.6146\\-51\\-127.9027\\-203.5678\\-51\\-128.5331\\-205.5209\\-51\\-130.037\\-207.474\\-51\\-129.1825\\-209.2729\\-51\\-127.2293\\-210.1714\\-51\\-125.2762\\-210.2166\\-51\\-123.3231\\-209.898\\-51\\-121.37\\-209.1123\\-51\\-119.0275\\-211.3803\\-51\\-119.4168\\-211.8535\\-51\\-121.37\\-212.9973\\-51\\-123.3231\\-213.1339\\-51\\-131.1356\\-213.198\\-51\\-133.0887\\-214.0516\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "211"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.6043\\-208.052\\-51\\-112.1131\\-207.474\\-51\\-112.6101\\-205.5209\\-51\\-113.6607\\-203.5678\\-51\\-115.5106\\-202.5954\\-51\\-116.549\\-201.6146\\-51\\-116.6635\\-199.6615\\-51\\-116.5232\\-195.7553\\-51\\-115.5106\\-194.3557\\-51\\-113.5575\\-192.8479\\-51\\-111.6043\\-190.7035\\-51\\-109.6512\\-190.7993\\-51\\-108.4898\\-191.849\\-51\\-105.745\\-194.529\\-51\\-103.7918\\-196.5691\\-51\\-102.9171\\-197.7084\\-51\\-101.404\\-201.6146\\-51\\-102.2257\\-203.5678\\-51\\-102.8901\\-205.5209\\-51\\-105.745\\-208.4792\\-51\\-107.6981\\-208.9652\\-51\\-109.6512\\-209.0806\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "212"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-60.8231\\-191.8566\\-51\\-62.77623\\-191.7136\\-51\\-68.6356\\-191.5785\\-51\\-70.58872\\-191.2276\\-51\\-72.54185\\-190.5129\\-51\\-74.49497\\-188.8896\\-51\\-75.45644\\-187.9428\\-51\\-76.59671\\-185.9896\\-51\\-78.1194\\-182.0834\\-51\\-78.14214\\-180.1303\\-51\\-78.42393\\-176.224\\-51\\-78.14214\\-172.3178\\-51\\-79.26781\\-170.3646\\-51\\-79.18523\\-168.4115\\-51\\-76.4481\\-165.6338\\-51\\-74.49497\\-163.9279\\-51\\-70.58872\\-162.909\\-51\\-68.6356\\-163.3583\\-51\\-66.68247\\-164.0893\\-51\\-66.26395\\-164.5053\\-51\\-65.10349\\-166.4584\\-51\\-64.72935\\-166.905\\-51\\-62.77623\\-169.908\\-51\\-62.3795\\-170.3646\\-51\\-61.94886\\-172.3178\\-51\\-61.33678\\-174.2709\\-51\\-60.46628\\-176.224\\-51\\-60.46628\\-178.1771\\-51\\-60.36113\\-180.1303\\-51\\-59.79667\\-182.0834\\-51\\-58.67054\\-184.0365\\-51\\-58.54446\\-185.9896\\-51\\-57.81436\\-187.9428\\-51\\-56.91685\\-189.9428\\-51\\-58.86998\\-191.7968\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "213"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-35.43248\\-169.2139\\-51\\-37.3856\\-168.0648\\-51\\-39.33873\\-167.3146\\-51\\-41.29185\\-166.9552\\-51\\-43.24498\\-165.5245\\-51\\-46.20753\\-162.5521\\-51\\-47.51822\\-160.599\\-51\\-48.3465\\-158.6459\\-51\\-48.79212\\-156.6928\\-51\\-49.10435\\-155.9403\\-51\\-50.15067\\-154.7396\\-51\\-51.05748\\-154.3353\\-51\\-53.0106\\-155.8833\\-51\\-54.76361\\-154.7396\\-51\\-53.75236\\-152.7865\\-51\\-49.90144\\-148.8803\\-51\\-48.77669\\-146.9271\\-51\\-47.90443\\-144.974\\-51\\-46.8047\\-143.0209\\-51\\-46.0111\\-141.0678\\-51\\-43.24498\\-138.1816\\-51\\-41.29185\\-136.2768\\-51\\-39.33873\\-135.7466\\-51\\-37.3856\\-135.6614\\-51\\-31.52623\\-135.6614\\-51\\-27.61998\\-136.0139\\-51\\-25.66685\\-136.5932\\-51\\-23.71373\\-138.0176\\-51\\-21.7606\\-138.8197\\-51\\-21.46763\\-139.1146\\-51\\-20.54351\\-141.0678\\-51\\-19.0253\\-143.0209\\-51\\-18.55331\\-144.974\\-51\\-17.94909\\-146.9271\\-51\\-16.94127\\-148.8803\\-51\\-15.23051\\-150.8334\\-51\\-14.79014\\-152.7865\\-51\\-15.90123\\-154.1915\\-51\\-17.85435\\-153.4819\\-51\\-19.55999\\-154.7396\\-51\\-19.87406\\-156.6928\\-51\\-20.78404\\-158.6459\\-51\\-22.47309\\-160.599\\-51\\-23.71373\\-162.2201\\-51\\-28.10038\\-166.4584\\-51\\-29.5731\\-167.3449\\-51\\-31.52623\\-167.9436\\-51\\-32.06964\\-168.4115\\-51\\-33.47935\\-169.2245\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "5"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "214"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-27.61998\\-229.8381\\-51\\-28.49972\\-228.9584\\-51\\-28.49972\\-225.0521\\-51\\-27.61998\\-224.1724\\-51\\-24.7871\\-227.0053\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "215"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-19.80748\\-227.9818\\-51\\-24.69029\\-223.099\\-51\\-24.59347\\-219.1928\\-51\\-23.71373\\-218.313\\-51\\-19.80748\\-218.2162\\-51\\-17.85435\\-220.1693\\-51\\-15.90123\\-220.1693\\-51\\-12.87472\\-223.099\\-51\\-12.87472\\-225.0521\\-51\\-15.90123\\-228.0786\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002327"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "34"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "216"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.1774\\-191.849\\-51\\56.08257\\-189.8959\\-51\\56.28363\\-185.9896\\-51\\57.00687\\-184.0365\\-51\\58.05844\\-180.1303\\-51\\58.15593\\-176.224\\-51\\57.13308\\-172.3178\\-51\\57.65618\\-170.3646\\-51\\59.43569\\-168.4115\\-51\\60.83258\\-166.4584\\-51\\61.63674\\-164.5053\\-51\\62.22377\\-163.9279\\-51\\64.1769\\-163.3614\\-51\\66.13003\\-163.0434\\-51\\70.03628\\-165.8811\\-51\\71.9894\\-167.241\\-51\\73.94253\\-168.2121\\-51\\75.55913\\-170.3646\\-51\\76.4794\\-172.3178\\-51\\77.08388\\-174.2709\\-51\\77.07806\\-176.224\\-51\\76.59247\\-178.1771\\-51\\75.84347\\-180.1303\\-51\\75.81488\\-182.0834\\-51\\75.33372\\-184.0365\\-51\\74.49974\\-185.9896\\-51\\72.21037\\-189.8959\\-51\\70.03628\\-191.2793\\-51\\68.08315\\-191.6496\\-51\\66.13003\\-191.6133\\-51\\64.1769\\-191.0099\\-51\\62.22377\\-190.9005\\-51\\60.27065\\-192.8404\\-51\\58.31752\\-193.7945\\-51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "217"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-140.9012\\-214.4141\\-49\\-142.4306\\-213.3334\\-49\\-144.0143\\-211.3803\\-49\\-145.144\\-209.4271\\-49\\-145.9674\\-207.474\\-49\\-146.0911\\-205.5209\\-49\\-146.1181\\-199.6615\\-49\\-146.0105\\-197.7084\\-49\\-145.3449\\-195.7553\\-49\\-144.0933\\-193.8021\\-49\\-143.2545\\-191.849\\-49\\-142.8544\\-191.482\\-49\\-140.9012\\-191.543\\-49\\-140.5847\\-191.849\\-49\\-139.3545\\-195.7553\\-49\\-138.3062\\-197.7084\\-49\\-136.995\\-199.5038\\-49\\-135.0419\\-198.5107\\-49\\-133.0887\\-198.7993\\-49\\-131.1356\\-199.8231\\-49\\-129.1825\\-200.5269\\-49\\-128.0783\\-201.6146\\-49\\-128.052\\-203.5678\\-49\\-129.0701\\-207.474\\-49\\-127.2293\\-208.9185\\-49\\-123.3231\\-209.1342\\-49\\-121.37\\-209.1566\\-49\\-119.4168\\-210.3402\\-49\\-118.3663\\-211.3803\\-49\\-119.4168\\-212.8451\\-49\\-121.37\\-214.1057\\-49\\-123.3231\\-214.4616\\-49\\-131.1356\\-214.472\\-49\\-133.0887\\-214.7016\\-49\\-135.0419\\-214.6372\\-49\\-136.995\\-214.4375\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "218"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.6043\\-209.451\\-49\\-112.8397\\-207.474\\-49\\-113.2645\\-205.5209\\-49\\-114.909\\-203.5678\\-49\\-115.5106\\-203.1093\\-49\\-116.9275\\-201.6146\\-49\\-117.9939\\-199.6615\\-49\\-118.3699\\-197.7084\\-49\\-118.0019\\-195.7553\\-49\\-117.4637\\-195.1914\\-49\\-115.3938\\-193.8021\\-49\\-113.5575\\-192.9176\\-49\\-111.6043\\-191.4051\\-49\\-109.6512\\-191.2793\\-49\\-108.1864\\-191.849\\-49\\-105.745\\-193.1353\\-49\\-103.1083\\-195.7553\\-49\\-101.8387\\-198.1536\\-49\\-101.2594\\-199.6615\\-49\\-100.8795\\-201.6146\\-49\\-100.8792\\-203.5678\\-49\\-102.1748\\-205.5209\\-49\\-105.745\\-208.5122\\-49\\-107.6981\\-209.091\\-49\\-109.6512\\-210.1992\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "219"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-60.8231\\-192.5511\\-49\\-62.77623\\-191.7543\\-49\\-64.72935\\-191.6496\\-49\\-68.6356\\-191.6496\\-49\\-70.58872\\-191.5235\\-49\\-72.54185\\-190.8153\\-49\\-74.49497\\-189.3906\\-49\\-76.4481\\-188.42\\-49\\-76.89199\\-187.9428\\-49\\-77.51467\\-185.9896\\-49\\-77.75189\\-184.0365\\-49\\-78.33464\\-182.0834\\-49\\-78.27915\\-180.1303\\-49\\-79.11543\\-178.1771\\-49\\-79.38596\\-176.224\\-49\\-79.1409\\-174.2709\\-49\\-78.40122\\-172.5335\\-49\\-78.40122\\-172.1393\\-49\\-79.27597\\-170.3646\\-49\\-79.17394\\-168.4115\\-49\\-76.4481\\-165.6577\\-49\\-74.49497\\-164.1383\\-49\\-70.58872\\-162.834\\-49\\-68.6356\\-162.7759\\-49\\-66.68247\\-163.5287\\-49\\-65.77196\\-164.5053\\-49\\-64.40383\\-166.4584\\-49\\-63.74791\\-168.4115\\-49\\-62.28213\\-170.3646\\-49\\-61.76648\\-172.3178\\-49\\-60.56401\\-174.2709\\-49\\-60.46628\\-176.224\\-49\\-60.46628\\-178.1771\\-49\\-60.36113\\-180.1303\\-49\\-59.76978\\-182.0834\\-49\\-58.67054\\-184.0365\\-49\\-58.65827\\-185.9896\\-49\\-58.10835\\-187.9428\\-49\\-57.69136\\-189.8959\\-49\\-58.05433\\-191.849\\-49\\-58.86998\\-192.574\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "220"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-35.43248\\-167.3151\\-49\\-37.3856\\-166.0563\\-49\\-39.33873\\-165.4334\\-49\\-41.29185\\-165.3846\\-49\\-42.62292\\-164.5053\\-49\\-45.1981\\-161.9878\\-49\\-46.34792\\-160.599\\-49\\-47.41031\\-158.6459\\-49\\-47.80398\\-156.6928\\-49\\-48.38117\\-154.7396\\-49\\-49.10435\\-153.9337\\-49\\-51.05748\\-154.4191\\-49\\-53.0106\\-156.5533\\-49\\-54.07902\\-154.7396\\-49\\-53.37759\\-152.7865\\-49\\-51.83551\\-150.8334\\-49\\-49.8888\\-148.8803\\-49\\-48.25538\\-146.9271\\-49\\-47.32561\\-144.974\\-49\\-46.8047\\-143.0209\\-49\\-46.07939\\-141.0678\\-49\\-44.56957\\-139.1146\\-49\\-43.25311\\-137.1615\\-49\\-41.2841\\-135.2084\\-49\\-39.33873\\-134.0736\\-49\\-35.43248\\-134.009\\-49\\-31.52623\\-134.1152\\-49\\-29.5731\\-134.6349\\-49\\-27.61998\\-135.8227\\-49\\-25.66685\\-136.2821\\-49\\-23.71373\\-137.7686\\-49\\-21.7606\\-138.2191\\-49\\-20.87322\\-139.1146\\-49\\-19.74089\\-141.0678\\-49\\-18.09007\\-144.974\\-49\\-17.90653\\-146.9271\\-49\\-16.60252\\-148.8803\\-49\\-15.90123\\-149.4576\\-49\\-14.63715\\-150.8334\\-49\\-14.44017\\-152.7865\\-49\\-15.90123\\-154.548\\-49\\-17.85435\\-153.205\\-49\\-19.55828\\-154.7396\\-49\\-20.60648\\-156.6928\\-49\\-20.9933\\-158.6459\\-49\\-23.71373\\-161.6262\\-49\\-25.66685\\-163.3074\\-49\\-27.61998\\-164.1438\\-49\\-29.5731\\-165.4776\\-49\\-31.52623\\-165.9884\\-49\\-33.47935\\-167.3338\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "221"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-17.85435\\-230.0652\\-49\\-19.80748\\-228.112\\-49\\-20.78404\\-227.0053\\-49\\-24.69029\\-223.099\\-49\\-24.69029\\-221.1459\\-49\\-21.7606\\-218.3464\\-49\\-19.80748\\-218.3464\\-49\\-17.85435\\-220.1693\\-49\\-15.90123\\-220.1693\\-49\\-13.9481\\-222.1225\\-49\\-11.99498\\-222.1225\\-49\\-11.01841\\-223.099\\-49\\-10.88821\\-225.0521\\-49\\-15.90123\\-230.0652\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "222"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "19.25502\\-233.2251\\-49\\18.75305\\-232.8646\\-49\\18.07058\\-230.9115\\-49\\17.81223\\-227.0053\\-49\\19.25502\\-226.0536\\-49\\20.80803\\-227.0053\\-49\\21.60002\\-228.9584\\-49\\20.3627\\-230.9115\\-49\\19.63595\\-232.8646\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002326"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "223"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "58.31752\\-194.5622\\-49\\57.41286\\-193.8021\\-49\\56.25589\\-191.849\\-49\\56.25589\\-187.9428\\-49\\56.40196\\-185.9896\\-49\\58.07004\\-182.0834\\-49\\58.15593\\-180.1303\\-49\\58.15593\\-176.224\\-49\\58.0818\\-174.2709\\-49\\57.61577\\-172.3178\\-49\\57.72518\\-170.3646\\-49\\58.87164\\-168.4115\\-49\\59.42592\\-166.4584\\-49\\61.12089\\-164.5053\\-49\\62.22377\\-163.5579\\-49\\64.1769\\-162.8987\\-49\\66.13003\\-163.83\\-49\\66.76192\\-164.5053\\-49\\66.96124\\-166.4584\\-49\\67.93011\\-168.4115\\-49\\70.03628\\-170.3262\\-49\\71.9894\\-170.2545\\-49\\73.94253\\-169.7119\\-49\\75.89565\\-171.4604\\-49\\76.67176\\-172.3178\\-49\\77.55581\\-174.2709\\-49\\77.55581\\-176.224\\-49\\77.17546\\-178.1771\\-49\\76.64561\\-180.1303\\-49\\76.49274\\-184.0365\\-49\\75.34943\\-185.9896\\-49\\74.58279\\-187.9428\\-49\\73.43426\\-189.8959\\-49\\71.9894\\-191.3754\\-49\\70.03628\\-191.7136\\-49\\66.13003\\-191.6373\\-49\\64.1769\\-191.3522\\-49\\62.22377\\-192.0607\\-49\\60.27065\\-194.0016\\-49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "224"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-142.8544\\-213.9684\\-47\\-143.5072\\-213.3334\\-47\\-145.1064\\-211.3803\\-47\\-145.9692\\-209.4271\\-47\\-146.2144\\-205.5209\\-47\\-146.2305\\-203.5678\\-47\\-146.1181\\-201.6146\\-47\\-146.0977\\-197.7084\\-47\\-145.5835\\-195.7553\\-47\\-142.8544\\-192.5765\\-47\\-140.9012\\-194.3389\\-47\\-139.7873\\-195.7553\\-47\\-138.9481\\-196.6263\\-47\\-136.995\\-198.3187\\-47\\-135.0419\\-198.4646\\-47\\-129.1825\\-200.4978\\-47\\-128.1327\\-201.6146\\-47\\-127.3648\\-203.5678\\-47\\-127.6337\\-205.5209\\-47\\-126.4914\\-207.474\\-47\\-125.2762\\-208.4924\\-47\\-123.3231\\-209.9583\\-47\\-121.37\\-210.5641\\-47\\-119.4168\\-210.6977\\-47\\-117.4637\\-210.7174\\-47\\-116.4236\\-211.3803\\-47\\-116.2162\\-213.3334\\-47\\-117.4637\\-214.3965\\-47\\-119.4168\\-214.5451\\-47\\-121.37\\-214.8996\\-47\\-123.3231\\-214.9935\\-47\\-125.2762\\-214.9095\\-47\\-131.1356\\-214.9195\\-47\\-133.0887\\-215.0995\\-47\\-135.0419\\-215.1644\\-47\\-136.995\\-214.9935\\-47\\-140.9012\\-214.8996\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "225"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.6043\\-210.7452\\-47\\-112.9906\\-209.4271\\-47\\-113.358\\-207.474\\-47\\-114.0014\\-205.5209\\-47\\-115.0194\\-203.5678\\-47\\-116.4782\\-201.6146\\-47\\-118.2196\\-199.6615\\-47\\-118.4106\\-197.7084\\-47\\-117.7567\\-195.7553\\-47\\-115.4994\\-193.8021\\-47\\-113.5575\\-192.9268\\-47\\-111.6043\\-191.6496\\-47\\-109.6512\\-191.5899\\-47\\-107.6981\\-191.6874\\-47\\-105.745\\-192.7222\\-47\\-102.5953\\-195.7553\\-47\\-100.8938\\-197.7084\\-47\\-100.5909\\-199.6615\\-47\\-100.1447\\-201.6146\\-47\\-100.3593\\-203.5678\\-47\\-100.9313\\-205.5209\\-47\\-103.7918\\-208.2445\\-47\\-105.745\\-208.7511\\-47\\-107.6981\\-210.1827\\-47\\-109.6512\\-210.7073\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "226"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-76.4481\\-192.0105\\-47\\-76.62959\\-191.849\\-47\\-77.47892\\-189.8959\\-47\\-78.40122\\-188.4465\\-47\\-78.97308\\-187.9428\\-47\\-80.34634\\-185.9896\\-47\\-79.50335\\-184.0365\\-47\\-79.51012\\-182.0834\\-47\\-79.24345\\-180.1303\\-47\\-79.29966\\-178.1771\\-47\\-79.79242\\-176.224\\-47\\-79.10923\\-172.3178\\-47\\-78.62502\\-168.4115\\-47\\-77.20924\\-166.4584\\-47\\-76.4481\\-165.6972\\-47\\-74.33746\\-164.5053\\-47\\-72.54185\\-163.6985\\-47\\-70.58872\\-162.9733\\-47\\-68.6356\\-161.837\\-47\\-66.68247\\-161.5712\\-47\\-65.4269\\-162.5521\\-47\\-64.96671\\-164.5053\\-47\\-64.2293\\-166.4584\\-47\\-63.13203\\-168.4115\\-47\\-62.77623\\-168.7237\\-47\\-61.64907\\-170.3646\\-47\\-61.23204\\-172.3178\\-47\\-60.46628\\-174.2709\\-47\\-60.44608\\-178.1771\\-47\\-59.43191\\-182.0834\\-47\\-58.65827\\-184.0365\\-47\\-58.65827\\-185.9896\\-47\\-58.55516\\-187.9428\\-47\\-58.1184\\-189.8959\\-47\\-58.21041\\-191.849\\-47\\-58.86998\\-192.5857\\-47\\-60.8231\\-193.1529\\-47\\-62.77623\\-192.3284\\-47\\-64.72935\\-191.6496\\-47\\-68.6356\\-191.9041\\-47\\-70.58872\\-191.7682\\-47\\-72.54185\\-191.3933\\-47\\-74.49497\\-191.2408\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "227"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-165.0415\\-47\\-39.33873\\-163.7946\\-47\\-41.29185\\-163.4651\\-47\\-42.71424\\-162.5521\\-47\\-44.69606\\-160.599\\-47\\-45.86153\\-158.6459\\-47\\-46.47791\\-156.6928\\-47\\-47.53309\\-154.7396\\-47\\-49.10435\\-153.3854\\-47\\-51.03441\\-154.7396\\-47\\-52.46077\\-156.6928\\-47\\-53.0106\\-157.0992\\-47\\-53.4917\\-156.6928\\-47\\-53.87811\\-154.7396\\-47\\-53.04816\\-152.7865\\-47\\-51.83551\\-150.8334\\-47\\-49.88238\\-148.8803\\-47\\-48.08731\\-146.9271\\-47\\-47.02916\\-144.974\\-47\\-46.83641\\-143.0209\\-47\\-46.53362\\-141.0678\\-47\\-45.73436\\-139.1146\\-47\\-43.24498\\-135.3735\\-47\\-41.29185\\-133.955\\-47\\-39.33873\\-132.8108\\-47\\-37.3856\\-132.2275\\-47\\-35.43248\\-132.2096\\-47\\-33.47935\\-132.7887\\-47\\-31.52623\\-133.6992\\-47\\-29.5731\\-133.9317\\-47\\-27.61998\\-134.6122\\-47\\-25.66685\\-135.8403\\-47\\-23.71373\\-136.4476\\-47\\-21.7606\\-137.9268\\-47\\-20.40307\\-139.1146\\-47\\-18.9605\\-141.0678\\-47\\-18.54691\\-143.0209\\-47\\-17.94909\\-144.974\\-47\\-17.74504\\-146.9271\\-47\\-16.10177\\-148.8803\\-47\\-14.04966\\-150.8334\\-47\\-15.90123\\-152.4748\\-47\\-17.85435\\-153.0108\\-47\\-18.91045\\-154.7396\\-47\\-20.69234\\-156.6928\\-47\\-21.33523\\-158.6459\\-47\\-22.86349\\-160.599\\-47\\-23.71373\\-161.3976\\-47\\-25.66685\\-161.8396\\-47\\-27.61998\\-163.6109\\-47\\-29.5731\\-164.6669\\-47\\-31.52623\\-165.1683\\-47\\-33.47935\\-165.4565\\-47\\-35.43248\\-165.4016\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "228"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-17.85435\\-232.0486\\-47\\-18.83091\\-230.9115\\-47\\-20.78404\\-228.9584\\-47\\-20.78404\\-227.0053\\-47\\-23.71373\\-224.0756\\-47\\-24.85082\\-223.099\\-47\\-24.52976\\-221.1459\\-47\\-23.71373\\-220.3298\\-47\\-21.7606\\-220.1693\\-47\\-19.80748\\-220.1693\\-47\\-17.85435\\-220.3298\\-47\\-15.90123\\-220.3298\\-47\\-13.9481\\-222.1225\\-47\\-11.99498\\-222.283\\-47\\-9.065289\\-225.0521\\-47\\-10.85788\\-227.0053\\-47\\-10.85788\\-230.9115\\-47\\-11.99498\\-232.0486\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "229"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "19.25502\\-234.0953\\-47\\17.56823\\-232.8646\\-47\\17.46087\\-227.0053\\-47\\19.25502\\-226.0162\\-47\\21.20815\\-227.8363\\-47\\22.19295\\-228.9584\\-47\\22.2507\\-230.9115\\-47\\21.2314\\-232.8646\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002325"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "230"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "58.31752\\-195.2386\\-47\\56.82915\\-193.8021\\-47\\56.25589\\-191.849\\-47\\56.28363\\-187.9428\\-47\\57.70717\\-184.0365\\-47\\58.01154\\-182.0834\\-47\\58.01154\\-180.1303\\-47\\58.15593\\-178.1771\\-47\\58.15593\\-174.2709\\-47\\57.9458\\-170.3646\\-47\\58.12919\\-168.4115\\-47\\58.83121\\-166.4584\\-47\\57.72034\\-164.5053\\-47\\56.3644\\-163.4523\\-47\\55.48389\\-162.5521\\-47\\56.3644\\-161.6668\\-47\\58.31752\\-161.5954\\-47\\60.36972\\-162.5521\\-47\\62.22377\\-163.2184\\-47\\64.1769\\-162.8227\\-47\\65.42828\\-164.5053\\-47\\65.48069\\-166.4584\\-47\\67.14334\\-168.4115\\-47\\70.03628\\-171.4226\\-47\\71.9894\\-171.3196\\-47\\73.94253\\-170.4601\\-47\\75.89565\\-171.5207\\-47\\76.68421\\-172.3178\\-47\\77.75404\\-174.2709\\-47\\77.90874\\-176.224\\-47\\78.61651\\-178.1771\\-47\\78.25369\\-180.1303\\-47\\77.26945\\-182.0834\\-47\\77.21005\\-184.0365\\-47\\76.8479\\-185.9896\\-47\\76.72197\\-187.9428\\-47\\75.89565\\-189.7689\\-47\\74.80606\\-191.849\\-47\\73.94253\\-192.8256\\-47\\71.9894\\-193.0971\\-47\\70.03628\\-192.7562\\-47\\68.08315\\-191.9432\\-47\\64.1769\\-191.6252\\-47\\62.22377\\-192.6102\\-47\\60.27065\\-194.5308\\-47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "62"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "231"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-136.995\\-215.7574\\-45\\-138.9481\\-215.0047\\-45\\-140.9012\\-214.9935\\-45\\-142.8544\\-214.0375\\-45\\-145.4927\\-211.3803\\-45\\-146.1987\\-209.4271\\-45\\-146.3447\\-207.474\\-45\\-147.2874\\-205.5209\\-45\\-147.3476\\-203.5678\\-45\\-146.1321\\-201.6146\\-45\\-146.1181\\-197.7084\\-45\\-145.2138\\-195.7553\\-45\\-144.8075\\-195.3938\\-45\\-142.8544\\-194.9912\\-45\\-141.3784\\-195.7553\\-45\\-136.995\\-198.3577\\-45\\-135.0419\\-198.9842\\-45\\-133.0887\\-200.2388\\-45\\-131.1356\\-200.4993\\-45\\-129.1825\\-200.8805\\-45\\-128.5911\\-201.6146\\-45\\-127.7706\\-203.5678\\-45\\-126.3638\\-205.5209\\-45\\-124.0407\\-209.4271\\-45\\-123.3231\\-210.118\\-45\\-121.37\\-210.7805\\-45\\-119.4168\\-210.8749\\-45\\-117.4637\\-210.7588\\-45\\-115.5106\\-210.2021\\-45\\-114.8242\\-209.4271\\-45\\-113.9237\\-205.5209\\-45\\-114.6131\\-203.5678\\-45\\-116.3058\\-201.6146\\-45\\-118.229\\-199.6615\\-45\\-118.3634\\-197.7084\\-45\\-117.4637\\-196.2249\\-45\\-115.5106\\-193.979\\-45\\-113.5575\\-192.9268\\-45\\-111.6043\\-191.6746\\-45\\-107.6981\\-191.6496\\-45\\-105.745\\-192.6056\\-45\\-103.7918\\-193.9386\\-45\\-101.8387\\-195.054\\-45\\-101.1337\\-195.7553\\-45\\-98.94222\\-199.6615\\-45\\-98.90456\\-201.6146\\-45\\-99.37321\\-203.5678\\-45\\-100.1916\\-205.5209\\-45\\-102.4447\\-207.474\\-45\\-103.7918\\-208.519\\-45\\-105.745\\-209.091\\-45\\-107.6981\\-210.4579\\-45\\-109.6512\\-210.9007\\-45\\-111.6043\\-212.0517\\-45\\-113.5575\\-212.5196\\-45\\-115.5106\\-214.2445\\-45\\-119.4168\\-216.0081\\-45\\-121.37\\-216.4019\\-45\\-125.2762\\-215.2945\\-45\\-131.1356\\-215.3103\\-45\\-133.0887\\-216.0538\\-45\\-135.0419\\-216.3777\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "232"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.2606\\-202.4949\\-45\\-85.56919\\-201.6146\\-45\\-85.19905\\-199.6615\\-45\\-82.30747\\-196.8648\\-45\\-81.41229\\-197.7084\\-45\\-81.85449\\-199.6615\\-45\\-83.37642\\-201.6146\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "233"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-78.40122\\-192.1607\\-45\\-78.69419\\-191.849\\-45\\-79.20146\\-189.8959\\-45\\-80.35435\\-188.3587\\-45\\-82.43137\\-185.9896\\-45\\-83.16133\\-184.0365\\-45\\-82.5045\\-182.0834\\-45\\-80.86704\\-180.1303\\-45\\-80.35435\\-179.38\\-45\\-79.7971\\-178.1771\\-45\\-80.25961\\-176.224\\-45\\-80.01826\\-174.2709\\-45\\-79.21117\\-172.3178\\-45\\-78.06071\\-170.3646\\-45\\-77.43903\\-168.4115\\-45\\-76.64754\\-166.4584\\-45\\-74.49497\\-164.8586\\-45\\-72.54185\\-164.0893\\-45\\-70.58872\\-163.5065\\-45\\-68.6356\\-161.7344\\-45\\-66.68247\\-161.0054\\-45\\-64.72935\\-161.4458\\-45\\-63.91251\\-162.5521\\-45\\-64.25605\\-164.5053\\-45\\-63.57355\\-166.4584\\-45\\-61.29522\\-168.4115\\-45\\-60.64872\\-170.3646\\-45\\-60.46628\\-174.2709\\-45\\-60.45611\\-178.1771\\-45\\-59.70385\\-182.0834\\-45\\-58.65827\\-184.0365\\-45\\-58.65827\\-187.9428\\-45\\-58.42338\\-189.8959\\-45\\-58.3669\\-191.849\\-45\\-58.86998\\-192.4594\\-45\\-60.8231\\-192.719\\-45\\-62.77623\\-191.1998\\-45\\-64.72935\\-191.8263\\-45\\-66.68247\\-192.714\\-45\\-68.6356\\-193.2197\\-45\\-70.58872\\-192.6744\\-45\\-72.54185\\-192.7509\\-45\\-74.49497\\-193.1304\\-45\\-76.4481\\-193.2016\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "234"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-33.47935\\-164.7871\\-45\\-35.43248\\-163.8222\\-45\\-37.3856\\-163.4992\\-45\\-39.33873\\-163.3015\\-45\\-41.29185\\-161.8596\\-45\\-42.81697\\-160.599\\-45\\-46.263\\-156.6928\\-45\\-46.90374\\-154.7396\\-45\\-47.15123\\-154.4141\\-45\\-49.10435\\-152.9609\\-45\\-51.16337\\-154.7396\\-45\\-52.58714\\-156.6928\\-45\\-53.0106\\-157.0076\\-45\\-53.38739\\-156.6928\\-45\\-53.82182\\-154.7396\\-45\\-53.0106\\-152.8231\\-45\\-51.83551\\-150.8334\\-45\\-49.98486\\-148.8803\\-45\\-48.61607\\-146.9271\\-45\\-46.98964\\-143.0209\\-45\\-46.7742\\-141.0678\\-45\\-46.08281\\-139.1146\\-45\\-44.90513\\-137.1615\\-45\\-44.06221\\-135.2084\\-45\\-43.24498\\-134.3457\\-45\\-41.29185\\-132.7546\\-45\\-39.33873\\-132.0297\\-45\\-37.3856\\-131.746\\-45\\-35.43248\\-131.6382\\-45\\-31.52623\\-132.1686\\-45\\-29.5731\\-132.7243\\-45\\-27.61998\\-133.8235\\-45\\-25.66685\\-134.0682\\-45\\-23.71373\\-134.9465\\-45\\-21.7606\\-136.4845\\-45\\-19.07384\\-139.1146\\-45\\-18.04135\\-143.0209\\-45\\-17.73138\\-144.974\\-45\\-16.98452\\-146.9271\\-45\\-15.90123\\-148.1584\\-45\\-13.9481\\-149.4212\\-45\\-12.80689\\-150.8334\\-45\\-13.9481\\-152.3669\\-45\\-15.90123\\-151.4897\\-45\\-17.84648\\-152.7865\\-45\\-18.78984\\-154.7396\\-45\\-20.27223\\-156.6928\\-45\\-20.90666\\-158.6459\\-45\\-21.7606\\-159.5484\\-45\\-23.71373\\-161.061\\-45\\-25.66685\\-161.6482\\-45\\-27.61998\\-163.2673\\-45\\-29.5731\\-163.7839\\-45\\-31.52623\\-164.729\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "235"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-17.85435\\-233.8412\\-45\\-18.83091\\-232.8646\\-45\\-18.83091\\-230.9115\\-45\\-20.78404\\-228.9584\\-45\\-20.9766\\-227.0053\\-45\\-23.71373\\-224.2681\\-45\\-25.66685\\-224.0756\\-45\\-26.64341\\-223.099\\-45\\-25.66685\\-222.1225\\-45\\-23.71373\\-221.9299\\-45\\-21.7606\\-220.1693\\-45\\-19.80748\\-220.3619\\-45\\-19.02348\\-221.1459\\-45\\-18.83091\\-223.099\\-45\\-17.85435\\-224.0756\\-45\\-15.90123\\-224.2681\\-45\\-13.9481\\-222.315\\-45\\-11.99498\\-224.0756\\-45\\-10.04185\\-224.0756\\-45\\-9.065289\\-225.0521\\-45\\-8.872726\\-227.0053\\-45\\-8.872726\\-232.8646\\-45\\-10.04185\\-234.0338\\-45\\-15.90123\\-234.0338\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "236"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "19.25502\\-234.2876\\-45\\17.38267\\-232.8646\\-45\\17.38267\\-230.9115\\-45\\17.20716\\-228.9584\\-45\\17.26405\\-227.0053\\-45\\19.25502\\-226.0201\\-45\\22.28464\\-228.9584\\-45\\22.97427\\-230.9115\\-45\\22.09071\\-232.8646\\-45\\21.20815\\-233.6898\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002324"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "237"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "58.28636\\-195.7553\\-45\\56.35677\\-193.8021\\-45\\56.25589\\-191.849\\-45\\56.25589\\-189.8959\\-45\\56.44517\\-187.9428\\-45\\57.26985\\-185.9896\\-45\\57.92813\\-184.0365\\-45\\57.369\\-182.0834\\-45\\57.42686\\-180.1303\\-45\\58.14314\\-178.1771\\-45\\58.15593\\-172.3178\\-45\\57.46362\\-170.3646\\-45\\57.46064\\-168.4115\\-45\\58.05666\\-166.4584\\-45\\56.3644\\-164.513\\-45\\54.41127\\-162.6858\\-45\\54.41127\\-162.4454\\-45\\55.62523\\-160.599\\-45\\56.3644\\-159.8985\\-45\\58.31752\\-160.0466\\-45\\60.27065\\-161.6943\\-45\\62.22377\\-162.8987\\-45\\64.1769\\-162.8227\\-45\\66.13003\\-164.055\\-45\\66.58025\\-164.5053\\-45\\67.36084\\-166.4584\\-45\\69.62216\\-170.3646\\-45\\70.03628\\-170.9191\\-45\\71.9894\\-171.6057\\-45\\73.94253\\-170.9283\\-45\\75.89565\\-171.4362\\-45\\76.82757\\-172.3178\\-45\\78.5942\\-174.2709\\-45\\80.02726\\-176.224\\-45\\80.68081\\-178.1771\\-45\\80.61118\\-180.1303\\-45\\79.8019\\-181.691\\-45\\78.23571\\-184.0365\\-45\\76.83553\\-185.9896\\-45\\75.87103\\-189.8959\\-45\\74.82407\\-191.849\\-45\\73.94253\\-192.7704\\-45\\71.9894\\-194.2064\\-45\\70.03628\\-194.9661\\-45\\68.08315\\-194.1326\\-45\\66.13003\\-192.6234\\-45\\64.1769\\-191.6496\\-45\\62.22377\\-192.1081\\-45\\60.27065\\-194.1834\\-45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "238"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-138.4763\\-215.2865\\-43\\-138.9481\\-215.0047\\-43\\-140.9012\\-214.8437\\-43\\-142.8544\\-213.8187\\-43\\-145.4336\\-211.3803\\-43\\-147.1163\\-209.4271\\-43\\-147.8309\\-207.474\\-43\\-147.9813\\-205.5209\\-43\\-147.6239\\-203.5678\\-43\\-146.1391\\-201.6146\\-43\\-146.1181\\-197.7084\\-43\\-145.1813\\-195.7553\\-43\\-144.8075\\-195.4183\\-43\\-142.8544\\-196.0409\\-43\\-140.9012\\-197.0884\\-43\\-138.9481\\-197.6418\\-43\\-136.995\\-198.4621\\-43\\-134.7736\\-199.6615\\-43\\-133.0887\\-200.4168\\-43\\-131.1356\\-201.0386\\-43\\-129.1825\\-202.0168\\-43\\-126.1653\\-205.5209\\-43\\-123.3231\\-209.4348\\-43\\-121.37\\-210.4913\\-43\\-119.4168\\-210.9183\\-43\\-117.4637\\-210.8001\\-43\\-116.1224\\-209.4271\\-43\\-115.9291\\-207.474\\-43\\-114.6537\\-205.5209\\-43\\-114.9774\\-203.5678\\-43\\-116.4414\\-201.6146\\-43\\-118.3001\\-199.6615\\-43\\-118.3333\\-197.7084\\-43\\-115.5106\\-194.634\\-43\\-113.5575\\-192.938\\-43\\-111.6043\\-191.6746\\-43\\-107.6981\\-191.6496\\-43\\-105.745\\-192.0744\\-43\\-103.7918\\-192.9728\\-43\\-101.8387\\-194.6002\\-43\\-100.5885\\-195.7553\\-43\\-98.88557\\-197.7084\\-43\\-98.13191\\-199.6615\\-43\\-98.13191\\-201.6146\\-43\\-98.47869\\-203.5678\\-43\\-98.9419\\-205.5209\\-43\\-101.8387\\-208.2641\\-43\\-103.7918\\-208.9135\\-43\\-105.745\\-210.2427\\-43\\-107.6981\\-210.766\\-43\\-109.6512\\-211.1328\\-43\\-111.6043\\-212.5288\\-43\\-113.5575\\-214.0772\\-43\\-115.5106\\-214.7897\\-43\\-117.4637\\-216.0215\\-43\\-119.4168\\-216.7095\\-43\\-121.37\\-216.9141\\-43\\-123.3231\\-216.5764\\-43\\-125.2762\\-216.4369\\-43\\-131.1356\\-216.4471\\-43\\-135.0419\\-216.8626\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "239"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.2606\\-202.3638\\-43\\-85.32527\\-201.6146\\-43\\-85.09549\\-199.6615\\-43\\-82.30747\\-196.789\\-43\\-80.99861\\-197.7084\\-43\\-81.48116\\-199.6615\\-43\\-82.30747\\-200.5395\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "240"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-74.49497\\-194.0016\\-43\\-76.4481\\-192.493\\-43\\-76.99667\\-191.849\\-43\\-77.74773\\-189.8959\\-43\\-79.44796\\-187.9428\\-43\\-82.30747\\-185.1096\\-43\\-83.22574\\-184.0365\\-43\\-84.56864\\-182.0834\\-43\\-84.43607\\-180.1303\\-43\\-82.30747\\-177.8852\\-43\\-81.54018\\-176.224\\-43\\-81.07419\\-174.2709\\-43\\-79.24163\\-172.3178\\-43\\-77.51636\\-170.3646\\-43\\-76.97005\\-168.4115\\-43\\-75.51041\\-166.4584\\-43\\-74.49497\\-165.4771\\-43\\-72.54185\\-164.3698\\-43\\-70.58872\\-163.5897\\-43\\-66.68247\\-159.9118\\-43\\-64.72935\\-159.8781\\-43\\-64.01591\\-160.599\\-43\\-63.65513\\-162.5521\\-43\\-63.59584\\-164.5053\\-43\\-62.77623\\-165.2456\\-43\\-60.8231\\-165.8923\\-43\\-60.30035\\-166.4584\\-43\\-60.53013\\-168.4115\\-43\\-60.46628\\-170.3646\\-43\\-60.46628\\-178.1771\\-43\\-60.26585\\-180.1303\\-43\\-59.72777\\-182.0834\\-43\\-58.67054\\-184.0365\\-43\\-58.65827\\-187.9428\\-43\\-57.95642\\-189.8959\\-43\\-57.66113\\-191.849\\-43\\-58.86998\\-193.5904\\-43\\-61.26456\\-191.849\\-43\\-62.77623\\-191.1133\\-43\\-63.58764\\-191.849\\-43\\-66.19761\\-193.8021\\-43\\-66.68247\\-194.2495\\-43\\-68.6356\\-195.0943\\-43\\-70.58872\\-195.0797\\-43\\-72.54185\\-194.8329\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "241"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-162.8882\\-43\\-41.29185\\-161.6211\\-43\\-46.23355\\-156.6928\\-43\\-46.82571\\-154.7396\\-43\\-47.53462\\-152.7865\\-43\\-49.10435\\-151.6533\\-43\\-50.46278\\-152.7865\\-43\\-51.83429\\-154.7396\\-43\\-53.0106\\-155.8813\\-43\\-53.86847\\-154.7396\\-43\\-53.14703\\-152.7865\\-43\\-50.61192\\-148.8803\\-43\\-49.63238\\-146.9271\\-43\\-48.52504\\-144.974\\-43\\-47.84799\\-143.0209\\-43\\-47.02916\\-141.0678\\-43\\-46.55149\\-139.1146\\-43\\-45.76496\\-137.1615\\-43\\-43.24498\\-133.2014\\-43\\-41.29185\\-132.0235\\-43\\-39.33873\\-131.6891\\-43\\-37.3856\\-130.715\\-43\\-35.43248\\-130.2409\\-43\\-33.47935\\-130.7825\\-43\\-31.52623\\-131.584\\-43\\-27.61998\\-132.1105\\-43\\-25.66685\\-132.7332\\-43\\-21.7606\\-134.8345\\-43\\-21.42123\\-135.2084\\-43\\-20.3102\\-137.1615\\-43\\-18.82659\\-139.1146\\-43\\-18.06605\\-141.0678\\-43\\-17.69159\\-143.0209\\-43\\-17.03069\\-144.974\\-43\\-15.90123\\-146.6429\\-43\\-13.25238\\-148.8803\\-43\\-12.34269\\-150.8334\\-43\\-13.34956\\-152.7865\\-43\\-14.08354\\-152.7865\\-43\\-15.90123\\-151.1902\\-43\\-17.89191\\-152.7865\\-43\\-18.76673\\-154.7396\\-43\\-20.81008\\-158.6459\\-43\\-21.7606\\-159.6049\\-43\\-23.71373\\-160.9859\\-43\\-25.66685\\-161.6253\\-43\\-27.61998\\-162.8987\\-43\\-29.5731\\-163.5853\\-43\\-31.52623\\-164.3968\\-43\\-33.47935\\-164.3698\\-43\\-35.43248\\-163.5377\\-43\\-37.3856\\-162.9775\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "242"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-15.90123\\-235.7943\\-43\\-16.87779\\-234.8178\\-43\\-18.59863\\-232.8646\\-43\\-18.83091\\-230.9115\\-43\\-26.64341\\-223.099\\-43\\-23.71373\\-220.1693\\-43\\-21.7606\\-220.1693\\-43\\-20.78404\\-221.1459\\-43\\-19.80748\\-222.3547\\-43\\-17.11008\\-225.0521\\-43\\-15.90123\\-226.0287\\-43\\-13.9481\\-224.3079\\-43\\-11.99498\\-224.0756\\-43\\-10.04185\\-224.0756\\-43\\-7.112164\\-227.0053\\-43\\-7.112164\\-232.8646\\-43\\-8.088726\\-234.0735\\-43\\-10.04185\\-236.0266\\-43\\-13.9481\\-236.0266\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "243"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "19.25502\\-234.4712\\-43\\17.38267\\-232.8646\\-43\\17.16547\\-230.9115\\-43\\16.48725\\-228.9584\\-43\\16.6683\\-227.0053\\-43\\17.3019\\-226.4106\\-43\\19.25502\\-226.1186\\-43\\21.20815\\-227.9859\\-43\\23.29491\\-228.9584\\-43\\24.37201\\-230.9115\\-43\\23.40358\\-232.8646\\-43\\23.16127\\-233.1288\\-43\\21.20815\\-234.3441\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002323"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "244"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "58.31752\\-196.3834\\-43\\57.11947\\-195.7553\\-43\\56.26966\\-193.8021\\-43\\56.26966\\-189.8959\\-43\\56.94815\\-187.9428\\-43\\57.49542\\-185.9896\\-43\\57.36467\\-184.0365\\-43\\56.9417\\-182.0834\\-43\\57.34096\\-180.1303\\-43\\58.14314\\-178.1771\\-43\\58.15593\\-172.3178\\-43\\57.59396\\-170.3646\\-43\\57.17744\\-168.4115\\-43\\57.45419\\-166.4584\\-43\\56.42282\\-164.5053\\-43\\54.41127\\-163.5574\\-43\\53.83843\\-162.5521\\-43\\55.43998\\-160.599\\-43\\56.3644\\-159.6965\\-43\\58.31752\\-159.7428\\-43\\60.27065\\-161.6609\\-43\\62.22377\\-162.8227\\-43\\64.1769\\-162.8227\\-43\\66.13003\\-163.6042\\-43\\68.08315\\-165.1179\\-43\\70.03628\\-166.3703\\-43\\72.07154\\-168.4115\\-43\\73.94253\\-169.7115\\-43\\75.89565\\-170.6769\\-43\\77.84878\\-171.7888\\-43\\79.8019\\-173.745\\-43\\80.57095\\-174.2709\\-43\\81.75503\\-175.3986\\-43\\82.19949\\-176.224\\-43\\81.33908\\-178.1771\\-43\\80.69708\\-180.1303\\-43\\79.8019\\-181.2217\\-43\\78.85406\\-182.0834\\-43\\76.94238\\-184.0365\\-43\\76.03108\\-185.9896\\-43\\75.01514\\-187.9428\\-43\\74.43081\\-189.8959\\-43\\73.1654\\-191.849\\-43\\70.34965\\-195.7553\\-43\\70.03628\\-196.039\\-43\\68.08315\\-195.2746\\-43\\67.1015\\-193.8021\\-43\\66.13003\\-192.8742\\-43\\64.1769\\-191.6496\\-43\\62.22377\\-191.6874\\-43\\60.07121\\-193.8021\\-43\\58.97408\\-195.7553\\-43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "64"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "245"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-217.2952\\-41\\-125.2762\\-217.0402\\-41\\-127.2293\\-216.9141\\-41\\-135.0419\\-216.9578\\-41\\-136.995\\-216\\-41\\-138.9481\\-214.8132\\-41\\-140.9012\\-214.2431\\-41\\-142.8544\\-212.4783\\-41\\-144.7132\\-211.3803\\-41\\-146.7606\\-209.9826\\-41\\-147.2992\\-209.4271\\-41\\-147.9679\\-207.474\\-41\\-148.0679\\-205.5209\\-41\\-147.7277\\-203.5678\\-41\\-146.3259\\-201.6146\\-41\\-146.1181\\-199.6615\\-41\\-146.1181\\-197.7084\\-41\\-145.9722\\-195.7553\\-41\\-144.8075\\-194.47\\-41\\-142.8544\\-195.3955\\-41\\-140.9012\\-197.6418\\-41\\-138.9481\\-197.7459\\-41\\-136.995\\-198.4906\\-41\\-134.9169\\-199.6615\\-41\\-133.0887\\-200.4399\\-41\\-131.1356\\-201.4152\\-41\\-129.1825\\-201.9294\\-41\\-127.0299\\-203.5678\\-41\\-126.126\\-205.5209\\-41\\-125.2762\\-206.6467\\-41\\-123.3231\\-208.8284\\-41\\-121.37\\-210.0873\\-41\\-119.4168\\-210.7349\\-41\\-117.4637\\-210.1612\\-41\\-116.8589\\-209.4271\\-41\\-116.4224\\-207.474\\-41\\-115.5106\\-205.6062\\-41\\-116.201\\-203.5678\\-41\\-117.8859\\-201.6146\\-41\\-118.6423\\-199.6615\\-41\\-118.3365\\-197.7084\\-41\\-115.5106\\-194.8542\\-41\\-113.5575\\-192.9496\\-41\\-111.6043\\-191.6746\\-41\\-107.6981\\-191.6496\\-41\\-105.745\\-191.6874\\-41\\-103.7918\\-192.6354\\-41\\-101.8387\\-193.8687\\-41\\-99.8856\\-194.9568\\-41\\-98.99256\\-195.7553\\-41\\-96.82784\\-199.6615\\-41\\-96.39086\\-201.6146\\-41\\-96.93359\\-203.5678\\-41\\-98.09406\\-205.5209\\-41\\-100.3232\\-207.474\\-41\\-103.7918\\-210.2453\\-41\\-107.6981\\-211.1097\\-41\\-109.6512\\-212.1848\\-41\\-111.6043\\-213.878\\-41\\-113.5575\\-214.7324\\-41\\-115.5106\\-215.2489\\-41\\-117.4637\\-216.3226\\-41\\-119.4168\\-217.2169\\-41\\-121.37\\-217.3835\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "246"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-70.58872\\-196.7539\\-41\\-71.84233\\-195.7553\\-41\\-73.05276\\-193.8021\\-41\\-74.10594\\-191.849\\-41\\-75.64347\\-189.8959\\-41\\-77.50365\\-187.9428\\-41\\-78.97456\\-185.9896\\-41\\-80.35435\\-184.636\\-41\\-82.30747\\-183.2341\\-41\\-84.4484\\-182.0834\\-41\\-85.43736\\-180.1303\\-41\\-84.74504\\-178.1771\\-41\\-84.2606\\-177.6889\\-41\\-81.47768\\-174.2709\\-41\\-79.41415\\-172.3178\\-41\\-77.88154\\-170.3646\\-41\\-77.16587\\-168.4115\\-41\\-74.49497\\-165.6477\\-41\\-72.54185\\-163.8127\\-41\\-70.58872\\-163.2418\\-41\\-68.6356\\-161.7036\\-41\\-66.68247\\-159.7517\\-41\\-64.72935\\-159.6584\\-41\\-63.82223\\-160.599\\-41\\-61.95633\\-164.5053\\-41\\-60.16354\\-166.4584\\-41\\-60.67449\\-168.4115\\-41\\-60.74233\\-170.3646\\-41\\-60.46628\\-172.3178\\-41\\-60.44608\\-178.1771\\-41\\-59.91661\\-180.1303\\-41\\-59.2268\\-182.0834\\-41\\-58.65827\\-184.0365\\-41\\-58.65827\\-185.9896\\-41\\-58.44883\\-187.9428\\-41\\-57.02536\\-191.849\\-41\\-57.2374\\-193.8021\\-41\\-58.86998\\-195.0173\\-41\\-60.8231\\-194.2064\\-41\\-62.77623\\-193.0381\\-41\\-64.72935\\-193.2075\\-41\\-66.68247\\-194.719\\-41\\-68.6356\\-196.466\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "247"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-162.8227\\-41\\-39.33873\\-162.5294\\-41\\-41.29185\\-161.5542\\-41\\-46.23355\\-156.6928\\-41\\-46.82571\\-154.7396\\-41\\-46.9155\\-152.7865\\-41\\-47.15123\\-152.5017\\-41\\-49.10435\\-151.2104\\-41\\-50.90887\\-152.7865\\-41\\-51.9084\\-154.7396\\-41\\-53.0106\\-155.7316\\-41\\-54.1669\\-154.7396\\-41\\-53.64912\\-152.7865\\-41\\-52.40424\\-150.8334\\-41\\-51.60001\\-148.8803\\-41\\-49.87423\\-146.9271\\-41\\-48.84526\\-144.974\\-41\\-48.53607\\-143.0209\\-41\\-47.77602\\-141.0678\\-41\\-46.79441\\-139.1146\\-41\\-46.08452\\-137.1615\\-41\\-44.96238\\-135.2084\\-41\\-43.96256\\-133.2553\\-41\\-43.24498\\-132.5494\\-41\\-41.29185\\-131.8241\\-41\\-39.33873\\-130.7772\\-41\\-37.3856\\-130.0255\\-41\\-35.43248\\-129.8543\\-41\\-31.52623\\-130.2142\\-41\\-29.5731\\-130.2525\\-41\\-27.61998\\-130.7432\\-41\\-25.66685\\-131.8815\\-41\\-23.71373\\-132.1969\\-41\\-21.7606\\-133.0406\\-41\\-21.5459\\-133.2553\\-41\\-18.97963\\-137.1615\\-41\\-17.92093\\-141.0678\\-41\\-17.05491\\-143.0209\\-41\\-16.55056\\-144.974\\-41\\-15.90123\\-145.8008\\-41\\-12.57178\\-148.8803\\-41\\-12.21896\\-150.8334\\-41\\-12.85886\\-152.7865\\-41\\-13.9481\\-153.1277\\-41\\-14.14754\\-152.7865\\-41\\-15.90123\\-150.9555\\-41\\-17.89191\\-152.7865\\-41\\-19.71273\\-156.6928\\-41\\-20.79712\\-158.6459\\-41\\-21.7606\\-159.6094\\-41\\-23.71373\\-160.9859\\-41\\-25.66685\\-161.6253\\-41\\-27.61998\\-162.8112\\-41\\-31.52623\\-163.6786\\-41\\-33.47935\\-163.6634\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "248"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-13.9481\\-237.7475\\-41\\-14.92466\\-236.7709\\-41\\-16.60923\\-234.8178\\-41\\-16.60923\\-232.8646\\-41\\-18.56236\\-230.9115\\-41\\-21.05259\\-228.9584\\-41\\-23.71373\\-226.2973\\-41\\-25.66685\\-223.807\\-41\\-26.37486\\-223.099\\-41\\-24.69029\\-221.1459\\-41\\-23.71373\\-220.1693\\-41\\-21.7606\\-220.1693\\-41\\-20.78404\\-221.1459\\-41\\-20.78404\\-223.099\\-41\\-17.85435\\-226.0287\\-41\\-15.90123\\-226.2973\\-41\\-13.9481\\-226.2973\\-41\\-11.99498\\-224.3441\\-41\\-10.04185\\-224.3441\\-41\\-8.088726\\-226.0287\\-41\\-7.112164\\-227.0053\\-41\\-7.112164\\-234.8178\\-41\\-8.088726\\-236.0629\\-41\\-10.04185\\-237.7475\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "249"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "19.25502\\-235.4552\\-41\\18.56828\\-234.8178\\-41\\16.90622\\-232.8646\\-41\\15.61931\\-228.9584\\-41\\16.16167\\-227.0053\\-41\\17.3019\\-226.0941\\-41\\19.25502\\-226.0663\\-41\\21.20815\\-227.8738\\-41\\23.16127\\-228.2988\\-41\\25.1144\\-228.3159\\-41\\26.15774\\-228.9584\\-41\\25.81728\\-230.9115\\-41\\25.1144\\-231.8628\\-41\\23.33813\\-234.8178\\-41\\21.20815\\-235.9657\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002322"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "250"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-196.1773\\-41\\56.01611\\-195.7553\\-41\\56.04325\\-193.8021\\-41\\56.25589\\-191.849\\-41\\56.26966\\-189.8959\\-41\\56.66836\\-187.9428\\-41\\56.96413\\-185.9896\\-41\\56.78977\\-184.0365\\-41\\57.05983\\-182.0834\\-41\\58.15593\\-178.1771\\-41\\58.15593\\-172.3178\\-41\\57.43103\\-170.3646\\-41\\56.88636\\-168.4115\\-41\\57.29911\\-166.4584\\-41\\57.55415\\-164.5053\\-41\\55.19648\\-162.5521\\-41\\55.88193\\-160.599\\-41\\56.3644\\-160.0692\\-41\\58.31752\\-159.7284\\-41\\60.27065\\-161.6609\\-41\\62.22377\\-162.8227\\-41\\64.1769\\-162.8227\\-41\\68.08315\\-163.7728\\-41\\70.03628\\-165.0257\\-41\\71.9894\\-166.0939\\-41\\73.94253\\-167.9649\\-41\\75.89565\\-168.9722\\-41\\77.84878\\-169.1811\\-41\\79.8019\\-170.2728\\-41\\81.75503\\-172.361\\-41\\82.81818\\-174.2709\\-41\\82.83186\\-176.224\\-41\\82.16653\\-178.1771\\-41\\79.8019\\-180.5172\\-41\\77.84878\\-181.3992\\-41\\77.04977\\-182.0834\\-41\\75.12396\\-184.0365\\-41\\74.31666\\-185.9896\\-41\\73.90079\\-187.9428\\-41\\72.95398\\-189.8959\\-41\\71.22108\\-191.849\\-41\\70.03628\\-194.2793\\-41\\68.08315\\-194.6795\\-41\\67.36784\\-193.8021\\-41\\66.13003\\-192.7847\\-41\\64.1769\\-191.5107\\-41\\62.22377\\-191.4797\\-41\\61.76649\\-191.849\\-41\\60.00011\\-193.8021\\-41\\59.11742\\-195.7553\\-41\\58.31752\\-196.5512\\-41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "64"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "251"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-129.1825\\-217.4098\\-39\\-133.0887\\-217.0158\\-39\\-135.0419\\-216.7605\\-39\\-136.995\\-215.8845\\-39\\-138.9481\\-214.3147\\-39\\-140.9012\\-213.341\\-39\\-144.2215\\-211.3803\\-39\\-144.8075\\-210.9643\\-39\\-146.4566\\-209.4271\\-39\\-147.1575\\-207.474\\-39\\-147.636\\-205.5209\\-39\\-147.9468\\-203.5678\\-39\\-147.3954\\-201.6146\\-39\\-146.1321\\-199.6615\\-39\\-146.101\\-195.7553\\-39\\-144.8075\\-194.0275\\-39\\-142.8544\\-195.1795\\-39\\-140.9012\\-197.7311\\-39\\-138.9481\\-197.7606\\-39\\-136.995\\-198.4906\\-39\\-135.0419\\-199.797\\-39\\-133.0887\\-200.5453\\-39\\-131.1356\\-201.4926\\-39\\-129.1825\\-201.8356\\-39\\-127.2293\\-203.3517\\-39\\-126.1513\\-205.5209\\-39\\-125.2762\\-206.432\\-39\\-123.3231\\-208.0622\\-39\\-121.37\\-208.5245\\-39\\-119.4168\\-209.7229\\-39\\-117.4637\\-207.9297\\-39\\-117.1447\\-207.474\\-39\\-116.8385\\-205.5209\\-39\\-118.5913\\-201.6146\\-39\\-118.8949\\-199.6615\\-39\\-118.3355\\-197.7084\\-39\\-113.5575\\-192.9496\\-39\\-111.6043\\-191.6746\\-39\\-107.6981\\-191.3765\\-39\\-105.745\\-191.4647\\-39\\-103.7918\\-192.0622\\-39\\-101.8387\\-192.8515\\-39\\-100.0151\\-193.8021\\-39\\-97.93247\\-195.0103\\-39\\-96.98767\\-195.7553\\-39\\-96.26118\\-197.7084\\-39\\-94.94582\\-199.6615\\-39\\-94.37728\\-201.6146\\-39\\-95.05374\\-203.5678\\-39\\-95.97935\\-204.9324\\-39\\-97.19562\\-207.474\\-39\\-97.93247\\-208.0108\\-39\\-99.8856\\-208.7882\\-39\\-101.8387\\-210.1113\\-39\\-103.7918\\-210.7378\\-39\\-105.745\\-210.9007\\-39\\-107.6981\\-212.1277\\-39\\-109.6512\\-212.927\\-39\\-111.6043\\-214.3944\\-39\\-117.4637\\-216.9805\\-39\\-119.4168\\-218.0877\\-39\\-121.37\\-218.3851\\-39\\-123.3231\\-218.3807\\-39\\-127.2293\\-217.4232\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "252"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-70.58872\\-196.0238\\-39\\-70.81567\\-195.7553\\-39\\-71.52361\\-193.8021\\-39\\-72.72885\\-191.849\\-39\\-73.77373\\-189.8959\\-39\\-75.14374\\-187.9428\\-39\\-78.62978\\-184.0365\\-39\\-80.35435\\-182.6856\\-39\\-82.30747\\-181.4669\\-39\\-84.2606\\-180.714\\-39\\-84.93913\\-180.1303\\-39\\-86.41197\\-178.1771\\-39\\-86.47072\\-176.224\\-39\\-86.21372\\-175.9915\\-39\\-84.2606\\-175.4361\\-39\\-83.54852\\-174.2709\\-39\\-82.30747\\-173.1539\\-39\\-80.35435\\-171.9586\\-39\\-79.04015\\-170.3646\\-39\\-76.4481\\-167.435\\-39\\-73.52367\\-164.5053\\-39\\-72.54185\\-163.6188\\-39\\-70.58872\\-162.6742\\-39\\-68.6356\\-161.6227\\-39\\-66.68247\\-159.8248\\-39\\-64.72935\\-159.7325\\-39\\-63.89164\\-160.599\\-39\\-62.4297\\-162.5521\\-39\\-61.85584\\-164.5053\\-39\\-60.44608\\-166.4584\\-39\\-61.53098\\-168.4115\\-39\\-61.70345\\-170.3646\\-39\\-60.78554\\-172.3178\\-39\\-60.46628\\-174.2709\\-39\\-60.44608\\-178.1771\\-39\\-59.87281\\-180.1303\\-39\\-59.03157\\-182.0834\\-39\\-58.65827\\-184.0365\\-39\\-58.65827\\-185.9896\\-39\\-57.93336\\-187.9428\\-39\\-57.31358\\-189.8959\\-39\\-56.83608\\-191.849\\-39\\-56.0233\\-193.8021\\-39\\-55.51841\\-195.7553\\-39\\-56.91685\\-196.9777\\-39\\-58.86998\\-195.6332\\-39\\-62.51772\\-193.8021\\-39\\-62.77623\\-193.6151\\-39\\-64.72935\\-192.9402\\-39\\-66.16109\\-193.8021\\-39\\-68.6356\\-196.3697\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "253"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-162.7879\\-39\\-39.33873\\-161.746\\-39\\-41.29185\\-161.2786\\-39\\-43.24498\\-159.6401\\-39\\-44.28142\\-158.6459\\-39\\-46.09674\\-156.6928\\-39\\-46.72057\\-154.7396\\-39\\-46.85826\\-152.7865\\-39\\-47.15123\\-152.4292\\-39\\-49.10435\\-150.9419\\-39\\-50.97671\\-152.7865\\-39\\-52.15434\\-154.7396\\-39\\-53.0106\\-155.3682\\-39\\-53.82553\\-154.7396\\-39\\-53.80115\\-152.7865\\-39\\-53.0106\\-151.0078\\-39\\-51.78856\\-148.8803\\-39\\-49.8949\\-146.9271\\-39\\-48.90491\\-144.974\\-39\\-48.82253\\-143.0209\\-39\\-47.95238\\-141.0678\\-39\\-46.85826\\-139.1146\\-39\\-46.45802\\-137.1615\\-39\\-45.64089\\-135.2084\\-39\\-44.02309\\-133.2553\\-39\\-43.24498\\-132.4894\\-39\\-41.29185\\-131.799\\-39\\-39.33873\\-130.5469\\-39\\-37.3856\\-129.8286\\-39\\-33.47935\\-129.4711\\-39\\-31.52623\\-129.5234\\-39\\-29.5731\\-129.6851\\-39\\-27.61998\\-130.0429\\-39\\-25.66685\\-130.6689\\-39\\-23.71373\\-131.6792\\-39\\-21.7606\\-132.4572\\-39\\-19.09031\\-135.2084\\-39\\-18.47914\\-137.1615\\-39\\-17.64116\\-141.0678\\-39\\-16.85518\\-143.0209\\-39\\-15.96781\\-144.974\\-39\\-13.9481\\-147.0131\\-39\\-12.30445\\-148.8803\\-39\\-12.34593\\-150.8334\\-39\\-12.85886\\-152.7865\\-39\\-13.61626\\-154.7396\\-39\\-14.19578\\-154.7396\\-39\\-14.14754\\-152.7865\\-39\\-14.80259\\-150.8334\\-39\\-15.90123\\-150.0927\\-39\\-16.6722\\-150.8334\\-39\\-17.89191\\-152.7865\\-39\\-18.76673\\-154.7396\\-39\\-19.99581\\-156.6928\\-39\\-20.95089\\-158.6459\\-39\\-21.7606\\-159.4556\\-39\\-23.71373\\-160.7075\\-39\\-27.61998\\-162.4996\\-39\\-31.52623\\-163.2152\\-39\\-33.47935\\-163.2352\\-39\\-35.43248\\-162.8882\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "254"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-21.7606\\-229.6212\\-39\\-24.37657\\-227.0053\\-39\\-24.37657\\-225.0521\\-39\\-22.42345\\-223.099\\-39\\-24.37657\\-221.1459\\-39\\-23.71373\\-220.483\\-39\\-21.7606\\-220.483\\-39\\-21.09775\\-221.1459\\-39\\-21.09775\\-223.099\\-39\\-17.1915\\-227.0053\\-39\\-19.80748\\-229.6212\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "255"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-13.9481\\-237.4337\\-39\\-14.61095\\-236.7709\\-39\\-12.65782\\-234.8178\\-39\\-12.65782\\-232.8646\\-39\\-14.61095\\-230.9115\\-39\\-14.61095\\-228.9584\\-39\\-11.99498\\-226.3424\\-39\\-8.088726\\-226.3424\\-39\\-7.425878\\-227.0053\\-39\\-7.425878\\-236.7709\\-39\\-8.088726\\-237.4337\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "256"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "21.20815\\-237.2592\\-39\\19.25502\\-236.4316\\-39\\17.3019\\-234.5248\\-39\\15.34877\\-233.8678\\-39\\13.39565\\-233.3834\\-39\\12.59235\\-232.8646\\-39\\13.04913\\-230.9115\\-39\\13.20368\\-228.9584\\-39\\13.39565\\-228.55\\-39\\15.02951\\-227.0053\\-39\\17.3019\\-226.2083\\-39\\19.25502\\-226.1869\\-39\\23.16127\\-227.9278\\-39\\25.1144\\-228.0937\\-39\\27.06752\\-228.0516\\-39\\28.16195\\-228.9584\\-39\\27.32128\\-230.9115\\-39\\25.1144\\-233.8412\\-39\\24.48661\\-234.8178\\-39\\23.16127\\-236.0676\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "257"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-197.4521\\-39\\54.92309\\-195.7553\\-39\\55.45724\\-193.8021\\-39\\56.25589\\-191.849\\-39\\56.34169\\-187.9428\\-39\\56.60012\\-185.9896\\-39\\56.60012\\-184.0365\\-39\\56.76113\\-182.0834\\-39\\57.38203\\-180.1303\\-39\\58.14314\\-178.1771\\-39\\58.15593\\-172.3178\\-39\\57.19072\\-168.4115\\-39\\57.3649\\-166.4584\\-39\\58.04699\\-164.5053\\-39\\56.97145\\-162.5521\\-39\\56.20281\\-160.599\\-39\\56.3644\\-160.4179\\-39\\58.31752\\-159.7233\\-39\\60.27065\\-161.61\\-39\\62.22377\\-162.3454\\-39\\64.1769\\-162.3583\\-39\\66.13003\\-162.6469\\-39\\70.03628\\-163.8456\\-39\\71.9894\\-165.1365\\-39\\73.94253\\-166.0476\\-39\\75.89565\\-167.1272\\-39\\77.84878\\-167.675\\-39\\79.8019\\-168.7906\\-39\\82.54697\\-172.3178\\-39\\83.02151\\-174.2709\\-39\\82.5782\\-176.224\\-39\\81.75503\\-177.2067\\-39\\79.8019\\-179.079\\-39\\77.84878\\-180.4871\\-39\\75.89565\\-181.3824\\-39\\73.31683\\-184.0365\\-39\\72.44638\\-185.9896\\-39\\72.28632\\-187.9428\\-39\\71.01284\\-189.8959\\-39\\70.03628\\-190.9053\\-39\\68.08315\\-192.2498\\-39\\66.13003\\-191.792\\-39\\64.1769\\-190.9722\\-39\\62.22377\\-190.9025\\-39\\61.17508\\-191.849\\-39\\59.78832\\-193.8021\\-39\\59.05503\\-195.7553\\-39\\58.31752\\-196.5045\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002321"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "258"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "75.89565\\-205.8244\\-39\\71.83709\\-201.6146\\-39\\71.72717\\-199.6615\\-39\\71.9894\\-199.4064\\-39\\73.94253\\-199.5988\\-39\\75.89565\\-200.9761\\-39\\77.33986\\-199.6615\\-39\\77.84878\\-199.3857\\-39\\79.8019\\-199.0826\\-39\\83.70815\\-198.9655\\-39\\85.66128\\-200.6855\\-39\\86.9602\\-201.6146\\-39\\87.6144\\-202.6056\\-39\\88.56265\\-203.5678\\-39\\87.6144\\-204.3375\\-39\\85.66128\\-204.4393\\-39\\81.75503\\-204.4393\\-39\\79.8019\\-205.6997\\-39\\77.84878\\-206.1434\\-39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "79"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "259"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-219.0312\\-37\\-125.2762\\-218.5227\\-37\\-127.2293\\-218.3833\\-37\\-129.1825\\-218.364\\-37\\-131.1356\\-217.9039\\-37\\-132.9492\\-217.2396\\-37\\-136.995\\-215.2941\\-37\\-140.9012\\-212.9464\\-37\\-142.8544\\-212.2721\\-37\\-144.8075\\-211.0984\\-37\\-146.1321\\-209.4271\\-37\\-146.1833\\-207.474\\-37\\-146.5249\\-205.5209\\-37\\-147.6042\\-203.5678\\-37\\-147.4559\\-201.6146\\-37\\-146.1321\\-199.6615\\-37\\-146.0786\\-195.7553\\-37\\-144.8075\\-194.4089\\-37\\-142.8544\\-196.4395\\-37\\-140.9012\\-198.1029\\-37\\-138.9481\\-198.1333\\-37\\-136.995\\-198.6901\\-37\\-135.0419\\-200.4459\\-37\\-131.1356\\-201.5199\\-37\\-129.1825\\-202.2716\\-37\\-128.1023\\-203.5678\\-37\\-126.2262\\-205.5209\\-37\\-125.2762\\-206.3736\\-37\\-123.3231\\-207.1485\\-37\\-121.37\\-207.5825\\-37\\-119.4168\\-207.5128\\-37\\-118.5201\\-205.5209\\-37\\-118.5976\\-203.5678\\-37\\-119.1129\\-201.6146\\-37\\-119.3075\\-199.6615\\-37\\-118.2565\\-197.7084\\-37\\-115.5106\\-194.8855\\-37\\-113.5575\\-192.9496\\-37\\-111.6043\\-191.543\\-37\\-107.6981\\-190.5638\\-37\\-105.745\\-190.8777\\-37\\-103.7918\\-191.4773\\-37\\-101.8387\\-191.9304\\-37\\-99.8856\\-192.732\\-37\\-97.93247\\-193.8543\\-37\\-95.97935\\-194.5022\\-37\\-93.36704\\-195.7553\\-37\\-92.0731\\-196.8804\\-37\\-90.11997\\-196.2435\\-37\\-87.67857\\-193.8021\\-37\\-85.83813\\-191.849\\-37\\-84.17182\\-189.8959\\-37\\-82.30747\\-189.419\\-37\\-78.40122\\-189.6029\\-37\\-78.09964\\-189.8959\\-37\\-78.12409\\-193.8021\\-37\\-78.00684\\-195.7553\\-37\\-78.40122\\-197.8711\\-37\\-79.81467\\-199.6615\\-37\\-79.82851\\-203.5678\\-37\\-82.30747\\-205.7256\\-37\\-84.2606\\-205.6051\\-37\\-86.21372\\-204.0041\\-37\\-90.11997\\-203.9863\\-37\\-92.0731\\-205.6914\\-37\\-93.80087\\-207.474\\-37\\-95.97935\\-208.8547\\-37\\-97.93247\\-209.168\\-37\\-99.8856\\-210.2559\\-37\\-101.8387\\-210.7275\\-37\\-103.7918\\-210.9007\\-37\\-105.745\\-211.1933\\-37\\-109.6512\\-214.1472\\-37\\-111.6043\\-214.8069\\-37\\-113.5575\\-216.0414\\-37\\-115.5106\\-216.7688\\-37\\-117.4637\\-217.9936\\-37\\-119.4168\\-218.6874\\-37\\-121.3483\\-219.1928\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "260"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-56.91685\\-197.8528\\-37\\-59.0976\\-195.7553\\-37\\-62.77623\\-193.4831\\-37\\-64.72935\\-192.6271\\-37\\-66.68247\\-192.9678\\-37\\-68.6356\\-194.1684\\-37\\-70.58872\\-192.9984\\-37\\-71.52256\\-191.849\\-37\\-72.46673\\-189.8959\\-37\\-74.49497\\-186.185\\-37\\-76.03642\\-184.0365\\-37\\-76.4481\\-183.6366\\-37\\-80.35435\\-181.101\\-37\\-82.30747\\-180.3893\\-37\\-84.2606\\-179.1306\\-37\\-86.22222\\-178.1771\\-37\\-87.18278\\-176.224\\-37\\-85.39088\\-174.2709\\-37\\-84.2606\\-173.4405\\-37\\-82.30747\\-172.7409\\-37\\-80.35435\\-171.4633\\-37\\-79.30804\\-170.3646\\-37\\-77.92793\\-168.4115\\-37\\-76.72047\\-166.4584\\-37\\-74.49497\\-164.2462\\-37\\-72.54185\\-163.0404\\-37\\-70.58872\\-161.7326\\-37\\-68.6356\\-161.3168\\-37\\-66.68247\\-160.3858\\-37\\-64.72935\\-160.2607\\-37\\-62.36983\\-162.5521\\-37\\-61.85084\\-164.5053\\-37\\-60.8231\\-166.4503\\-37\\-61.79966\\-168.4115\\-37\\-62.09363\\-170.3646\\-37\\-61.6498\\-172.3178\\-37\\-60.47658\\-174.2709\\-37\\-60.45611\\-178.1771\\-37\\-60.17035\\-180.1303\\-37\\-59.63896\\-182.0834\\-37\\-58.67054\\-184.0365\\-37\\-58.65827\\-185.9896\\-37\\-57.84841\\-187.9428\\-37\\-56.93956\\-189.8959\\-37\\-56.82211\\-191.849\\-37\\-55.86255\\-193.8021\\-37\\-54.69739\\-195.7553\\-37\\-54.02353\\-197.7084\\-37\\-54.96373\\-199.2454\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "261"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-35.43248\\-162.7996\\-37\\-37.3856\\-162.4292\\-37\\-41.29185\\-160.786\\-37\\-43.24498\\-159.4158\\-37\\-44.04889\\-158.6459\\-37\\-46.39568\\-154.7396\\-37\\-46.84726\\-152.7865\\-37\\-48.25713\\-150.8334\\-37\\-49.10435\\-150.0896\\-37\\-50.22654\\-150.8334\\-37\\-50.97671\\-152.7865\\-37\\-52.3792\\-154.7396\\-37\\-53.0106\\-155.1835\\-37\\-53.55719\\-154.7396\\-37\\-53.81575\\-152.7865\\-37\\-53.0106\\-150.8944\\-37\\-51.77618\\-148.8803\\-37\\-50.03416\\-146.9271\\-37\\-49.11204\\-144.974\\-37\\-48.671\\-143.0209\\-37\\-47.85169\\-141.0678\\-37\\-46.84726\\-139.1146\\-37\\-46.22681\\-137.1615\\-37\\-45.1981\\-135.4245\\-37\\-43.70789\\-133.2553\\-37\\-43.24498\\-132.7983\\-37\\-41.29185\\-131.9118\\-37\\-39.33873\\-130.5257\\-37\\-37.3856\\-129.802\\-37\\-35.43248\\-128.8293\\-37\\-33.47935\\-128.3001\\-37\\-31.52623\\-128.2945\\-37\\-29.5731\\-128.6999\\-37\\-27.61998\\-129.6308\\-37\\-25.66685\\-130.0326\\-37\\-23.71373\\-130.77\\-37\\-21.7606\\-132.4203\\-37\\-18.93371\\-135.2084\\-37\\-18.00296\\-137.1615\\-37\\-17.90653\\-139.1146\\-37\\-17.05706\\-141.0678\\-37\\-16.52976\\-143.0209\\-37\\-15.17651\\-144.974\\-37\\-13.29103\\-146.9271\\-37\\-12.262\\-148.8803\\-37\\-12.69688\\-150.8334\\-37\\-13.08795\\-154.7396\\-37\\-13.9481\\-155.5268\\-37\\-14.67778\\-154.7396\\-37\\-14.1351\\-152.7865\\-37\\-14.22615\\-150.8334\\-37\\-15.90123\\-149.4706\\-37\\-17.2875\\-150.8334\\-37\\-18.16034\\-152.7865\\-37\\-18.85416\\-154.7396\\-37\\-20.62606\\-156.6928\\-37\\-22.18097\\-158.6459\\-37\\-25.66685\\-161.3043\\-37\\-27.61998\\-161.6964\\-37\\-29.5731\\-162.4567\\-37\\-31.52623\\-162.8669\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "262"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "19.22887\\-238.724\\-37\\17.3019\\-236.797\\-37\\15.34877\\-235.9698\\-37\\13.39565\\-235.4037\\-37\\11.44252\\-234.1687\\-37\\10.19276\\-232.8646\\-37\\10.64013\\-230.9115\\-37\\11.74851\\-228.9584\\-37\\13.39565\\-226.8309\\-37\\15.34877\\-226.467\\-37\\19.25502\\-226.2478\\-37\\21.20815\\-226.2715\\-37\\23.16127\\-226.8814\\-37\\25.1144\\-227.9043\\-37\\27.06752\\-227.9118\\-37\\28.7964\\-228.9584\\-37\\28.54103\\-230.9115\\-37\\25.73149\\-234.8178\\-37\\25.1144\\-235.4667\\-37\\23.16127\\-236.5234\\-37\\21.20815\\-238.0343\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "263"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-199.5235\\-37\\53.26749\\-197.7084\\-37\\53.57496\\-195.7553\\-37\\55.2799\\-193.8021\\-37\\56.25589\\-191.849\\-37\\56.28363\\-187.9428\\-37\\57.02763\\-185.9896\\-37\\57.2319\\-184.0365\\-37\\56.75631\\-182.0834\\-37\\57.35947\\-180.1303\\-37\\58.14314\\-178.1771\\-37\\58.15593\\-172.3178\\-37\\58.0818\\-170.3646\\-37\\57.72286\\-168.4115\\-37\\57.73701\\-166.4584\\-37\\58.11808\\-164.5053\\-37\\57.18272\\-162.5521\\-37\\56.3644\\-160.5245\\-37\\58.31752\\-159.7183\\-37\\60.27065\\-161.37\\-37\\64.1769\\-161.4302\\-37\\66.13003\\-161.7408\\-37\\68.08315\\-162.3713\\-37\\70.03628\\-163.4814\\-37\\72.63463\\-164.5053\\-37\\75.89565\\-165.6953\\-37\\77.84878\\-166.835\\-37\\79.8019\\-167.6489\\-37\\80.53564\\-168.4115\\-37\\81.5193\\-170.3646\\-37\\82.62257\\-172.3178\\-37\\82.55833\\-174.2709\\-37\\81.75503\\-175.3695\\-37\\78.94282\\-178.1771\\-37\\75.89565\\-180.4451\\-37\\73.98009\\-182.0834\\-37\\71.9894\\-184.6648\\-37\\70.81079\\-185.9896\\-37\\70.03628\\-187.3934\\-37\\68.08315\\-189.4607\\-37\\66.13003\\-190.3011\\-37\\64.1769\\-189.8238\\-37\\62.22377\\-189.9035\\-37\\60.27065\\-192.2321\\-37\\59.30334\\-193.8021\\-37\\58.65361\\-195.7553\\-37\\56.3644\\-198.396\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "264"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "75.89565\\-213.7995\\-37\\75.32599\\-213.3334\\-37\\74.4308\\-211.3803\\-37\\74.07616\\-209.4271\\-37\\73.01937\\-207.474\\-37\\72.48379\\-205.5209\\-37\\71.75038\\-203.5678\\-37\\70.51546\\-201.6146\\-37\\70.18488\\-199.6615\\-37\\71.9894\\-198.1243\\-37\\73.94253\\-198.2466\\-37\\75.89565\\-199.0709\\-37\\77.84878\\-198.9572\\-37\\79.8019\\-199.0475\\-37\\81.75503\\-198.7263\\-37\\83.36192\\-199.6615\\-37\\83.70815\\-200.0624\\-37\\85.78104\\-201.6146\\-37\\87.6144\\-202.7126\\-37\\88.61024\\-203.5678\\-37\\89.56753\\-205.1324\\-37\\89.95605\\-205.5209\\-37\\91.14334\\-207.474\\-37\\91.52065\\-207.8513\\-37\\92.21238\\-207.474\\-37\\93.47378\\-207.2481\\-37\\93.81393\\-207.474\\-37\\94.20836\\-209.4271\\-37\\93.58503\\-211.3803\\-37\\93.47378\\-212.3568\\-37\\92.67477\\-213.3334\\-37\\91.52065\\-215.147\\-37\\89.54874\\-213.3334\\-37\\89.36484\\-211.3803\\-37\\89.78725\\-209.4271\\-37\\89.56753\\-209.2074\\-37\\87.6144\\-208.3405\\-37\\85.66128\\-208.3725\\-37\\83.70815\\-209.4106\\-37\\81.75503\\-209.9254\\-37\\79.8019\\-210.2664\\-37\\77.84878\\-211.2624\\-37\\77.3605\\-211.3803\\-37\\76.36173\\-213.3334\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002320"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "265"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "87.6144\\-194.0768\\-37\\87.38904\\-193.8021\\-37\\88.67167\\-191.849\\-37\\89.56753\\-191.091\\-37\\90.85798\\-191.849\\-37\\91.52065\\-192.6676\\-37\\92.0564\\-193.8021\\-37\\91.52065\\-194.7098\\-37\\89.56753\\-194.9929\\-37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "90"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "266"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-123.3231\\-219.6781\\-35\\-125.2762\\-218.9337\\-35\\-129.1825\\-218.8888\\-35\\-131.1356\\-218.5187\\-35\\-133.0887\\-217.719\\-35\\-135.0419\\-216.0215\\-35\\-136.995\\-214.9717\\-35\\-138.9481\\-214.0781\\-35\\-140.9012\\-212.9367\\-35\\-142.8544\\-212.5997\\-35\\-144.7113\\-211.3803\\-35\\-145.9468\\-209.4271\\-35\\-146.1321\\-205.5209\\-35\\-146.5131\\-203.5678\\-35\\-146.5489\\-201.6146\\-35\\-146.1251\\-199.6615\\-35\\-146.1043\\-197.7084\\-35\\-145.7338\\-195.7553\\-35\\-144.8075\\-194.9319\\-35\\-142.8544\\-197.5863\\-35\\-140.9012\\-198.7272\\-35\\-138.9481\\-198.8916\\-35\\-137.2946\\-199.6615\\-35\\-135.0419\\-200.9907\\-35\\-133.0887\\-201.4402\\-35\\-131.1356\\-201.5339\\-35\\-129.1825\\-201.9612\\-35\\-127.2669\\-203.5678\\-35\\-125.9587\\-205.5209\\-35\\-125.2762\\-206.1919\\-35\\-123.3231\\-207.012\\-35\\-121.37\\-206.9377\\-35\\-119.4168\\-205.8319\\-35\\-119.135\\-205.5209\\-35\\-119.1694\\-203.5678\\-35\\-120.2248\\-201.6146\\-35\\-120.2616\\-199.6615\\-35\\-119.4168\\-198.8965\\-35\\-117.4637\\-197.7943\\-35\\-116.2377\\-195.7553\\-35\\-113.5575\\-192.9554\\-35\\-111.6043\\-191.1783\\-35\\-109.6512\\-190.3074\\-35\\-107.6981\\-189.7343\\-35\\-105.745\\-190.1451\\-35\\-103.7918\\-190.862\\-35\\-99.8856\\-191.0617\\-35\\-97.93247\\-192.5251\\-35\\-95.97935\\-193.2017\\-35\\-94.02622\\-193.0051\\-35\\-92.0731\\-192.141\\-35\\-89.33598\\-189.8959\\-35\\-88.16685\\-188.7742\\-35\\-86.21372\\-187.924\\-35\\-84.2606\\-186.3664\\-35\\-82.30747\\-186.3567\\-35\\-80.35435\\-186.6385\\-35\\-78.40122\\-187.3481\\-35\\-76.4481\\-187.3781\\-35\\-75.69348\\-187.9428\\-35\\-75.89451\\-189.8959\\-35\\-75.73863\\-193.8021\\-35\\-75.10277\\-195.7553\\-35\\-75.31027\\-197.7084\\-35\\-76.64754\\-199.6615\\-35\\-76.69559\\-203.5678\\-35\\-76.84288\\-205.5209\\-35\\-78.40122\\-207.4483\\-35\\-80.35435\\-209.282\\-35\\-82.30747\\-210.0026\\-35\\-84.2606\\-210.1389\\-35\\-87.67857\\-209.4271\\-35\\-90.11997\\-209.1467\\-35\\-92.0731\\-209.0057\\-35\\-92.86186\\-209.4271\\-35\\-94.02622\\-210.3004\\-35\\-95.97935\\-210.9309\\-35\\-97.93247\\-210.9739\\-35\\-99.8856\\-211.2059\\-35\\-101.8387\\-210.9094\\-35\\-103.7918\\-210.834\\-35\\-105.745\\-212.1018\\-35\\-107.6981\\-213.9302\\-35\\-109.6512\\-214.7483\\-35\\-111.6043\\-215.0047\\-35\\-113.5575\\-216.2529\\-35\\-115.5106\\-217.0402\\-35\\-115.759\\-217.2396\\-35\\-119.2569\\-219.1928\\-35\\-121.37\\-220.0747\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "267"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-54.96373\\-200.9616\\-35\\-56.29595\\-199.6615\\-35\\-57.67428\\-197.7084\\-35\\-59.59977\\-195.7553\\-35\\-61.86001\\-193.8021\\-35\\-62.77623\\-192.9011\\-35\\-64.72935\\-191.6668\\-35\\-66.68247\\-191.6707\\-35\\-68.6356\\-192.15\\-35\\-69.19187\\-191.849\\-35\\-70.58872\\-190.2948\\-35\\-71.56528\\-187.9428\\-35\\-72.9435\\-185.9896\\-35\\-73.67995\\-184.0365\\-35\\-74.49497\\-183.3715\\-35\\-76.4481\\-181.4975\\-35\\-78.40122\\-180.6604\\-35\\-80.35435\\-179.4977\\-35\\-82.30747\\-178.7184\\-35\\-83.27407\\-178.1771\\-35\\-84.38067\\-176.224\\-35\\-83.06852\\-174.2709\\-35\\-79.86026\\-170.3646\\-35\\-79.1896\\-168.4115\\-35\\-77.44578\\-166.4584\\-35\\-73.20489\\-162.5521\\-35\\-72.54185\\-161.8856\\-35\\-70.58872\\-161.3106\\-35\\-68.6356\\-161.061\\-35\\-66.68247\\-160.5913\\-35\\-64.72935\\-160.5176\\-35\\-62.77623\\-161.9594\\-35\\-62.20657\\-162.5521\\-35\\-61.72136\\-164.5053\\-35\\-61.54926\\-166.4584\\-35\\-62.10673\\-168.4115\\-35\\-62.31426\\-170.3646\\-35\\-61.8607\\-172.3178\\-35\\-60.9051\\-174.2709\\-35\\-60.46628\\-176.224\\-35\\-60.39773\\-180.1303\\-35\\-59.85492\\-182.0834\\-35\\-59.01859\\-184.0365\\-35\\-58.68298\\-185.9896\\-35\\-57.15421\\-189.8959\\-35\\-56.82211\\-191.849\\-35\\-55.84214\\-193.8021\\-35\\-54.06648\\-195.7553\\-35\\-53.39754\\-197.7084\\-35\\-53.57134\\-199.6615\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "268"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-161.3586\\-35\\-42.70438\\-158.6459\\-35\\-44.47339\\-156.6928\\-35\\-46.09591\\-154.7396\\-35\\-46.71387\\-152.7865\\-35\\-47.46346\\-150.8334\\-35\\-49.10435\\-149.4706\\-35\\-50.90443\\-150.8334\\-35\\-51.27577\\-152.7865\\-35\\-52.74837\\-154.7396\\-35\\-53.26122\\-154.7396\\-35\\-53.79916\\-152.7865\\-35\\-53.0106\\-150.896\\-35\\-52.635\\-150.8334\\-35\\-51.72565\\-148.8803\\-35\\-50.52324\\-146.9271\\-35\\-49.55927\\-144.974\\-35\\-48.09104\\-143.0209\\-35\\-47.15123\\-140.7805\\-35\\-46.6485\\-139.1146\\-35\\-45.8964\\-137.1615\\-35\\-44.29406\\-135.2084\\-35\\-42.41464\\-133.2553\\-35\\-41.29185\\-132.236\\-35\\-39.33873\\-130.6812\\-35\\-37.3856\\-129.9437\\-35\\-35.43248\\-128.6191\\-35\\-33.47935\\-127.8842\\-35\\-31.52623\\-127.8578\\-35\\-29.5731\\-128.0898\\-35\\-27.61998\\-128.8398\\-35\\-25.66685\\-129.8199\\-35\\-23.71373\\-130.381\\-35\\-20.92836\\-133.2553\\-35\\-18.92436\\-135.2084\\-35\\-17.90653\\-137.1615\\-35\\-17.89191\\-139.1146\\-35\\-16.90338\\-141.0678\\-35\\-16.18305\\-143.0209\\-35\\-14.94932\\-144.974\\-35\\-12.97154\\-146.9271\\-35\\-12.2411\\-148.8803\\-35\\-11.89952\\-150.8334\\-35\\-11.79269\\-152.7865\\-35\\-13.00705\\-154.7396\\-35\\-13.9481\\-155.6219\\-35\\-14.82535\\-154.7396\\-35\\-14.29687\\-152.7865\\-35\\-14.1598\\-150.8334\\-35\\-15.90123\\-149.1732\\-35\\-17.77358\\-150.8334\\-35\\-18.63849\\-152.7865\\-35\\-19.37948\\-154.7396\\-35\\-20.97223\\-156.6928\\-35\\-23.71373\\-159.4323\\-35\\-25.66685\\-160.6938\\-35\\-27.61998\\-161.3106\\-35\\-29.5731\\-161.6804\\-35\\-31.52623\\-162.2179\\-35\\-35.43248\\-162.2071\\-35\\-37.3856\\-161.713\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "269"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "19.25502\\-239.6371\\-35\\17.3019\\-238.4071\\-35\\13.39565\\-236.4669\\-35\\11.44252\\-235.3436\\-35\\9.380892\\-232.8646\\-35\\9.761773\\-230.9115\\-35\\10.89999\\-228.9584\\-35\\11.44252\\-228.4701\\-35\\13.39565\\-227.7592\\-35\\15.34877\\-226.6587\\-35\\17.3019\\-226.4055\\-35\\21.20815\\-225.6172\\-35\\23.16127\\-225.9236\\-35\\25.20318\\-227.0053\\-35\\27.06752\\-227.8598\\-35\\29.02065\\-228.3019\\-35\\29.75917\\-228.9584\\-35\\29.55279\\-230.9115\\-35\\27.97433\\-232.8646\\-35\\26.5293\\-234.8178\\-35\\25.1144\\-236.5118\\-35\\23.16127\\-237.5291\\-35\\21.20815\\-239.3961\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "270"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-201.9136\\-35\\53.59747\\-201.6146\\-35\\52.45815\\-199.9956\\-35\\52.36341\\-197.7084\\-35\\53.33706\\-195.7553\\-35\\55.26383\\-193.8021\\-35\\56.25589\\-191.849\\-35\\56.28363\\-187.9428\\-35\\57.22063\\-185.9896\\-35\\57.7793\\-184.0365\\-35\\57.51123\\-182.0834\\-35\\57.76821\\-180.1303\\-35\\58.15593\\-178.1771\\-35\\58.16891\\-170.3646\\-35\\58.10582\\-168.4115\\-35\\58.13052\\-164.5053\\-35\\57.31749\\-162.5521\\-35\\57.2233\\-160.599\\-35\\58.31752\\-160.0584\\-35\\60.27065\\-161.061\\-35\\64.1769\\-161.0873\\-35\\66.13003\\-161.3469\\-35\\68.08315\\-161.4144\\-35\\70.03628\\-162.1307\\-35\\71.9894\\-163.2013\\-35\\73.94253\\-163.7067\\-35\\75.89565\\-164.9122\\-35\\77.84878\\-165.6412\\-35\\79.8019\\-166.8141\\-35\\81.22079\\-168.4115\\-35\\82.55313\\-170.3646\\-35\\82.60838\\-172.3178\\-35\\81.75503\\-173.4959\\-35\\80.85863\\-174.2709\\-35\\76.94675\\-178.1771\\-35\\75.89565\\-179.0117\\-35\\73.94253\\-180.8627\\-35\\71.9894\\-182.478\\-35\\69.76888\\-184.0365\\-35\\68.08315\\-186.4474\\-35\\66.61831\\-187.9428\\-35\\66.13003\\-188.2821\\-35\\64.1769\\-188.3293\\-35\\62.22377\\-188.9602\\-35\\61.30258\\-189.8959\\-35\\60.07121\\-191.849\\-35\\58.31752\\-195.5859\\-35\\57.17006\\-197.7084\\-35\\55.78962\\-199.6615\\-35\\54.7082\\-201.6146\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "271"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "83.70815\\-197.1969\\-35\\82.93191\\-195.7553\\-35\\83.70815\\-194.6741\\-35\\84.81788\\-193.8021\\-35\\85.66128\\-193.622\\-35\\86.85485\\-191.849\\-35\\87.6144\\-191.1654\\-35\\89.56753\\-190.1796\\-35\\91.52065\\-190.451\\-35\\92.70728\\-191.849\\-35\\92.86343\\-193.8021\\-35\\91.52065\\-195.6323\\-35\\89.56753\\-195.6605\\-35\\85.66128\\-196.2834\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002319"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "272"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "87.6144\\-230.2388\\-35\\85.91978\\-228.9584\\-35\\85.71731\\-227.0053\\-35\\83.70815\\-224.9795\\-35\\79.8019\\-224.8611\\-35\\77.84878\\-223.0255\\-35\\76.00873\\-221.1459\\-35\\74.92722\\-219.1928\\-35\\74.13476\\-217.2396\\-35\\72.71243\\-215.2865\\-35\\72.33817\\-213.3334\\-35\\74.01433\\-209.4271\\-35\\73.93465\\-207.474\\-35\\73.04331\\-203.5678\\-35\\71.34611\\-201.6146\\-35\\70.73045\\-199.6615\\-35\\71.9894\\-198.647\\-35\\73.94253\\-198.6292\\-35\\75.89565\\-199.6522\\-35\\77.84878\\-201.0786\\-35\\79.8019\\-200.6496\\-35\\81.25401\\-199.6615\\-35\\81.75503\\-198.7322\\-35\\82.30376\\-199.6615\\-35\\82.78518\\-201.6146\\-35\\83.70815\\-202.9309\\-35\\85.66128\\-203.1446\\-35\\86.27755\\-203.5678\\-35\\87.6144\\-205.0977\\-35\\89.56753\\-207.7792\\-35\\91.32534\\-209.4271\\-35\\92.09264\\-211.3803\\-35\\93.47378\\-213.1381\\-35\\94.11066\\-215.2865\\-35\\95.4269\\-216.9378\\-35\\97.04266\\-219.1928\\-35\\96.71542\\-221.1459\\-35\\96.02049\\-223.099\\-35\\95.4269\\-224.1802\\-35\\95.19438\\-225.0521\\-35\\94.07109\\-227.0053\\-35\\93.47378\\-228.287\\-35\\91.68341\\-228.9584\\-35\\89.56753\\-230.5816\\-35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "94"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "273"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-125.2762\\-219.3414\\-33\\-129.1825\\-218.9811\\-33\\-131.1356\\-218.8998\\-33\\-133.0887\\-217.8853\\-33\\-135.0419\\-215.9915\\-33\\-136.995\\-214.9504\\-33\\-138.9481\\-214.0781\\-33\\-140.9012\\-212.9367\\-33\\-142.8544\\-212.3946\\-33\\-143.9366\\-211.3803\\-33\\-145.2811\\-209.4271\\-33\\-146.0367\\-205.5209\\-33\\-146.1321\\-203.5678\\-33\\-146.0824\\-197.7084\\-33\\-144.8075\\-196.1472\\-33\\-142.8544\\-197.9559\\-33\\-140.9012\\-198.7036\\-33\\-136.995\\-200.4174\\-33\\-135.0419\\-201.3789\\-33\\-133.0887\\-201.5339\\-33\\-131.1356\\-201.5199\\-33\\-129.1825\\-201.2741\\-33\\-127.2293\\-201.4268\\-33\\-126.7598\\-201.6146\\-33\\-125.5307\\-203.5678\\-33\\-125.2762\\-204.1505\\-33\\-124.3322\\-205.5209\\-33\\-123.3231\\-206.2777\\-33\\-121.37\\-206.104\\-33\\-120.6831\\-205.5209\\-33\\-120.6131\\-203.5678\\-33\\-121.37\\-202.2122\\-33\\-121.9766\\-201.6146\\-33\\-120.6297\\-199.6615\\-33\\-119.4168\\-199.2085\\-33\\-117.4637\\-198.6468\\-33\\-116.5253\\-197.7084\\-33\\-114.2613\\-193.8021\\-33\\-111.6043\\-191.0171\\-33\\-109.6512\\-189.7089\\-33\\-105.745\\-189.3403\\-33\\-103.7918\\-189.6673\\-33\\-99.8856\\-189.8437\\-33\\-95.97935\\-191.3452\\-33\\-94.02622\\-191.078\\-33\\-92.0731\\-190.0478\\-33\\-90.11997\\-188.8513\\-33\\-89.36838\\-187.9428\\-33\\-87.50687\\-185.9896\\-33\\-86.21372\\-183.9893\\-33\\-84.2606\\-182.353\\-33\\-82.30747\\-182.8104\\-33\\-80.83612\\-184.0365\\-33\\-80.35435\\-184.2983\\-33\\-78.40122\\-186.0272\\-33\\-76.4481\\-186.1653\\-33\\-74.49497\\-186.4413\\-33\\-73.67226\\-187.9428\\-33\\-74.64359\\-189.8959\\-33\\-74.09286\\-191.849\\-33\\-73.10116\\-193.8021\\-33\\-72.87837\\-195.7553\\-33\\-72.85409\\-197.7084\\-33\\-73.07223\\-199.6615\\-33\\-73.46656\\-201.6146\\-33\\-74.49497\\-203.9625\\-33\\-74.93887\\-205.5209\\-33\\-75.83857\\-207.474\\-33\\-76.4481\\-208.2006\\-33\\-78.40122\\-210.173\\-33\\-80.35435\\-212.0443\\-33\\-82.30747\\-212.8906\\-33\\-84.1835\\-213.3334\\-33\\-86.21372\\-214.0824\\-33\\-88.16685\\-214.1863\\-33\\-89.48808\\-213.3334\\-33\\-90.11997\\-213.0714\\-33\\-92.0731\\-212.5814\\-33\\-94.02622\\-212.56\\-33\\-95.97935\\-212.6978\\-33\\-97.93247\\-212.6573\\-33\\-99.8856\\-212.5172\\-33\\-101.8387\\-211.6124\\-33\\-103.7918\\-211.2175\\-33\\-106.2083\\-213.3334\\-33\\-107.6981\\-214.4307\\-33\\-109.6512\\-214.9825\\-33\\-111.6043\\-215.0274\\-33\\-113.5575\\-216.2682\\-33\\-115.5106\\-217.0652\\-33\\-117.4637\\-218.076\\-33\\-119.4168\\-219.6752\\-33\\-121.37\\-220.2895\\-33\\-123.3231\\-219.7484\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "274"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-54.96373\\-202.3925\\-33\\-55.65693\\-201.6146\\-33\\-56.91685\\-199.3943\\-33\\-57.75587\\-197.7084\\-33\\-61.61751\\-193.8021\\-33\\-62.81692\\-191.849\\-33\\-64.72935\\-190.6218\\-33\\-66.68247\\-189.9035\\-33\\-68.6356\\-188.1451\\-33\\-70.46767\\-185.9896\\-33\\-72.54185\\-183.7442\\-33\\-74.49497\\-182.4217\\-33\\-76.4481\\-180.9667\\-33\\-78.40122\\-179.3165\\-33\\-80.35435\\-178.5465\\-33\\-80.89283\\-178.1771\\-33\\-82.22671\\-176.224\\-33\\-81.60573\\-172.3178\\-33\\-81.18067\\-170.3646\\-33\\-79.87784\\-168.4115\\-33\\-78.68305\\-166.4584\\-33\\-78.40122\\-166.1766\\-33\\-74.49497\\-163.4722\\-33\\-72.54185\\-161.5184\\-33\\-70.58872\\-160.3923\\-33\\-68.6356\\-160.5176\\-33\\-66.68247\\-159.8754\\-33\\-64.72935\\-159.7939\\-33\\-61.91152\\-162.5521\\-33\\-61.15076\\-164.5053\\-33\\-62.29661\\-168.4115\\-33\\-62.36028\\-170.3646\\-33\\-62.12689\\-172.3178\\-33\\-61.65126\\-174.2709\\-33\\-60.46628\\-176.224\\-33\\-60.45611\\-180.1303\\-33\\-59.2669\\-185.9896\\-33\\-58.39346\\-187.9428\\-33\\-56.91685\\-191.7164\\-33\\-55.84214\\-193.8021\\-33\\-53.91166\\-195.7553\\-33\\-53.04816\\-197.7084\\-33\\-53.04816\\-199.6615\\-33\\-53.76918\\-201.6146\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "58"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "275"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-161.1403\\-33\\-38.84293\\-160.599\\-33\\-41.29185\\-159.4142\\-33\\-44.04049\\-156.6928\\-33\\-45.29284\\-154.7396\\-33\\-46.24857\\-152.7865\\-33\\-46.76184\\-150.8334\\-33\\-47.15123\\-150.381\\-33\\-49.10435\\-149.1508\\-33\\-50.96273\\-150.8334\\-33\\-52.3475\\-152.7865\\-33\\-53.0106\\-153.3519\\-33\\-53.38102\\-152.7865\\-33\\-53.0106\\-150.9961\\-33\\-52.46807\\-150.8334\\-33\\-50.89589\\-146.9271\\-33\\-49.3189\\-144.974\\-33\\-47.28666\\-143.0209\\-33\\-46.65713\\-141.0678\\-33\\-46.12841\\-139.1146\\-33\\-45.1981\\-137.4312\\-33\\-43.68829\\-135.2084\\-33\\-41.29185\\-132.8233\\-33\\-39.33873\\-131.619\\-33\\-37.3856\\-130.3114\\-33\\-35.43248\\-128.7742\\-33\\-33.47935\\-128.0049\\-33\\-31.52623\\-127.8118\\-33\\-29.5731\\-127.8306\\-33\\-27.61998\\-128.5794\\-33\\-25.66685\\-129.7929\\-33\\-23.71373\\-130.0122\\-33\\-22.27795\\-131.3021\\-33\\-20.9067\\-133.2553\\-33\\-18.92436\\-135.2084\\-33\\-17.90653\\-137.1615\\-33\\-17.58382\\-139.1146\\-33\\-16.12502\\-143.0209\\-33\\-14.70356\\-144.974\\-33\\-12.56649\\-146.9271\\-33\\-12.19843\\-148.8803\\-33\\-11.35688\\-150.8334\\-33\\-11.22344\\-152.7865\\-33\\-13.9481\\-155.5176\\-33\\-14.93164\\-154.7396\\-33\\-14.65225\\-152.7865\\-33\\-14.1598\\-150.8334\\-33\\-15.94602\\-148.8803\\-33\\-17.86198\\-150.8334\\-33\\-18.74681\\-152.7865\\-33\\-20.57584\\-154.7396\\-33\\-21.7606\\-156.3061\\-33\\-24.13324\\-158.6459\\-33\\-25.66685\\-159.7348\\-33\\-27.61998\\-160.6366\\-33\\-29.5731\\-161.3043\\-33\\-31.52623\\-161.425\\-33\\-35.43248\\-161.4197\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "276"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "15.34877\\-239.1022\\-33\\13.39565\\-237.9395\\-33\\11.85485\\-236.7709\\-33\\10.44438\\-234.8178\\-33\\9.315013\\-232.8646\\-33\\9.598716\\-230.9115\\-33\\10.95786\\-228.9584\\-33\\11.44252\\-228.552\\-33\\13.39565\\-228.0795\\-33\\15.34877\\-227.354\\-33\\17.3019\\-226.4055\\-33\\19.25502\\-225.9254\\-33\\21.20815\\-224.6751\\-33\\25.1144\\-225.975\\-33\\29.02065\\-227.4666\\-33\\30.97377\\-228.9288\\-33\\29.02065\\-232.8121\\-33\\27.81247\\-234.8178\\-33\\26.42274\\-236.7709\\-33\\25.1144\\-237.9048\\-33\\21.20815\\-240.0244\\-33\\19.25502\\-240.0486\\-33\\17.3019\\-239.77\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "277"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.34964\\-201.6146\\-33\\52.27115\\-199.6615\\-33\\52.55289\\-197.7084\\-33\\53.46571\\-195.7553\\-33\\55.12597\\-193.8021\\-33\\55.93793\\-191.849\\-33\\56.25589\\-189.8959\\-33\\56.28363\\-187.9428\\-33\\58.11808\\-184.0365\\-33\\58.05844\\-182.0834\\-33\\58.15593\\-178.1771\\-33\\58.15593\\-174.2709\\-33\\58.50452\\-172.3178\\-33\\58.50452\\-170.3646\\-33\\58.16891\\-168.4115\\-33\\58.15593\\-164.5053\\-33\\57.79557\\-162.5521\\-33\\58.31752\\-161.8589\\-33\\60.27065\\-160.9957\\-33\\64.1769\\-160.319\\-33\\68.08315\\-160.4182\\-33\\70.03628\\-160.8714\\-33\\71.9894\\-161.634\\-33\\73.94253\\-162.7928\\-33\\75.89565\\-163.5897\\-33\\77.84878\\-164.8691\\-33\\79.8019\\-165.6863\\-33\\81.75503\\-167.5254\\-33\\82.48745\\-168.4115\\-33\\82.84544\\-170.3646\\-33\\81.88372\\-172.3178\\-33\\79.8019\\-173.6295\\-33\\77.84878\\-175.579\\-33\\75.89565\\-177.4045\\-33\\74.66261\\-178.1771\\-33\\73.94253\\-178.8561\\-33\\71.9894\\-180.211\\-33\\70.03628\\-180.8627\\-33\\68.08315\\-183.0457\\-33\\66.13003\\-184.6414\\-33\\64.1769\\-186.0129\\-33\\62.22377\\-187.609\\-33\\60.27065\\-191.4682\\-33\\59.16356\\-193.8021\\-33\\58.14314\\-195.7553\\-33\\56.3644\\-199.3952\\-33\\55.35366\\-201.6146\\-33\\54.41127\\-202.8796\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "18"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "278"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "79.8019\\-197.4398\\-33\\78.11733\\-195.7553\\-33\\78.22855\\-193.8021\\-33\\79.8019\\-192.7979\\-33\\81.75503\\-192.1081\\-33\\83.70815\\-192.1745\\-33\\85.66128\\-191.8261\\-33\\87.6144\\-190.6442\\-33\\89.56753\\-189.6842\\-33\\91.52065\\-190.1349\\-33\\93.47378\\-191.1016\\-33\\93.93442\\-191.849\\-33\\92.93954\\-193.8021\\-33\\91.52065\\-195.3891\\-33\\89.56753\\-195.7629\\-33\\87.6144\\-196.4263\\-33\\85.66128\\-197.3573\\-33\\83.70815\\-198.0123\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "279"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "81.75503\\-249.0608\\-33\\81.15356\\-248.4896\\-33\\80.59066\\-246.5365\\-33\\79.8019\\-245.56\\-33\\79.27152\\-244.5834\\-33\\77.69067\\-242.6303\\-33\\76.53547\\-238.724\\-33\\77.23124\\-236.7709\\-33\\76.4201\\-234.8178\\-33\\74.38197\\-232.8646\\-33\\74.62612\\-230.9115\\-33\\75.09541\\-228.9584\\-33\\75.30634\\-227.0053\\-33\\75.22546\\-225.0521\\-33\\74.67494\\-223.099\\-33\\75.33533\\-221.1459\\-33\\75.56055\\-219.1928\\-33\\75.63273\\-217.2396\\-33\\75.60352\\-215.2865\\-33\\75.76389\\-213.3334\\-33\\77.23124\\-211.3803\\-33\\77.46664\\-209.4271\\-33\\77.12178\\-207.474\\-33\\75.89565\\-205.8976\\-33\\75.89565\\-205.0814\\-33\\77.25117\\-203.5678\\-33\\79.8019\\-202.2848\\-33\\80.48346\\-203.5678\\-33\\81.75503\\-205.0039\\-33\\83.70815\\-205.2409\\-33\\84.63929\\-205.5209\\-33\\85.66128\\-206.5672\\-33\\85.94763\\-207.474\\-33\\86.01722\\-209.4271\\-33\\86.8657\\-211.3803\\-33\\87.6144\\-212.1548\\-33\\87.97801\\-213.3334\\-33\\88.98159\\-215.2865\\-33\\89.56753\\-215.8725\\-33\\90.02325\\-217.2396\\-33\\91.52065\\-218.737\\-33\\91.83713\\-219.1928\\-33\\92.2802\\-221.1459\\-33\\92.9448\\-223.099\\-33\\93.47378\\-223.628\\-33\\93.71792\\-225.0521\\-33\\93.74081\\-232.8646\\-33\\93.55515\\-234.8178\\-33\\91.99537\\-236.7709\\-33\\91.52065\\-237.9102\\-33\\90.70685\\-238.724\\-33\\90.20048\\-240.6771\\-33\\90.04893\\-242.6303\\-33\\89.56753\\-243.3898\\-33\\85.66128\\-247.0323\\-33\\83.70815\\-249.1578\\-33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "89"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "280"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-219.6928\\-31\\-129.1825\\-218.6723\\-31\\-131.1356\\-218.524\\-31\\-133.0887\\-217.7514\\-31\\-135.0419\\-215.9915\\-31\\-136.995\\-214.9504\\-31\\-138.9481\\-214.0781\\-31\\-140.9012\\-212.9367\\-31\\-142.8544\\-211.9764\\-31\\-143.4505\\-211.3803\\-31\\-144.1057\\-209.4271\\-31\\-144.5837\\-207.474\\-31\\-145.6569\\-205.5209\\-31\\-146.0306\\-203.5678\\-31\\-146.1181\\-201.6146\\-31\\-146.0786\\-197.7084\\-31\\-144.8075\\-196.4851\\-31\\-142.8544\\-197.9559\\-31\\-140.9012\\-198.6382\\-31\\-138.883\\-199.6615\\-31\\-135.0419\\-201.1442\\-31\\-133.0887\\-201.2057\\-31\\-131.1356\\-201.0489\\-31\\-129.1825\\-200.6632\\-31\\-127.2293\\-200.4288\\-31\\-125.2762\\-200.4878\\-31\\-123.3231\\-200.1997\\-31\\-121.37\\-199.6991\\-31\\-119.4168\\-199.6239\\-31\\-117.4637\\-198.8394\\-31\\-116.2655\\-197.7084\\-31\\-114.578\\-195.7553\\-31\\-113.7445\\-193.8021\\-31\\-112.451\\-191.849\\-31\\-111.6043\\-191.0023\\-31\\-109.6512\\-189.5189\\-31\\-107.6981\\-189.0296\\-31\\-105.745\\-188.6928\\-31\\-101.8387\\-188.6951\\-31\\-99.8856\\-189.0489\\-31\\-97.93247\\-189.7089\\-31\\-95.97935\\-190.1316\\-31\\-94.02622\\-189.5598\\-31\\-92.0731\\-189.1843\\-31\\-90.11997\\-189.0322\\-31\\-89.07288\\-187.9428\\-31\\-87.44096\\-185.9896\\-31\\-85.9319\\-182.0834\\-31\\-84.2606\\-180.6604\\-31\\-82.30747\\-180.4558\\-31\\-80.35435\\-181.0629\\-31\\-79.73653\\-182.0834\\-31\\-77.74393\\-184.0365\\-31\\-76.4481\\-185.0732\\-31\\-74.49497\\-185.0459\\-31\\-72.99659\\-185.9896\\-31\\-72.57941\\-187.9428\\-31\\-72.63659\\-189.8959\\-31\\-71.31686\\-191.849\\-31\\-70.82445\\-193.8021\\-31\\-70.80043\\-195.7553\\-31\\-71.21017\\-199.6615\\-31\\-71.63504\\-201.6146\\-31\\-72.70344\\-203.5678\\-31\\-73.58108\\-205.5209\\-31\\-75.78197\\-209.4271\\-31\\-77.59383\\-211.3803\\-31\\-80.35435\\-213.794\\-31\\-82.30747\\-214.6583\\-31\\-84.21257\\-215.2865\\-31\\-86.21372\\-216.0712\\-31\\-88.16685\\-216.3721\\-31\\-90.11997\\-215.6844\\-31\\-92.0731\\-214.8136\\-31\\-94.02622\\-214.1318\\-31\\-95.97935\\-214.1618\\-31\\-97.93247\\-214.0367\\-31\\-99.8856\\-213.159\\-31\\-101.8387\\-212.9766\\-31\\-103.7918\\-213.3613\\-31\\-105.745\\-214.4544\\-31\\-107.6981\\-214.7982\\-31\\-109.6512\\-215.0047\\-31\\-111.6043\\-215.016\\-31\\-113.5575\\-216.103\\-31\\-117.4637\\-217.5862\\-31\\-121.37\\-219.6896\\-31\\-123.3231\\-219.2303\\-31\\-125.2762\\-219.9428\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "281"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-54.96373\\-203.7509\\-31\\-56.78141\\-199.6615\\-31\\-57.76504\\-197.7084\\-31\\-59.73958\\-195.7553\\-31\\-61.10683\\-193.8021\\-31\\-61.91074\\-191.849\\-31\\-62.77623\\-190.9077\\-31\\-64.72935\\-189.4895\\-31\\-66.68247\\-188.5299\\-31\\-70.58872\\-184.6664\\-31\\-72.54185\\-183.5101\\-31\\-73.51841\\-182.0834\\-31\\-74.49497\\-181.2054\\-31\\-76.4481\\-180.7151\\-31\\-78.40122\\-179.4772\\-31\\-80.35435\\-177.767\\-31\\-81.42586\\-176.224\\-31\\-81.82787\\-174.2709\\-31\\-81.79379\\-172.3178\\-31\\-81.59946\\-170.3646\\-31\\-81.15025\\-168.4115\\-31\\-79.4509\\-166.4584\\-31\\-76.4481\\-163.8098\\-31\\-74.7307\\-162.5521\\-31\\-72.54185\\-160.4066\\-31\\-70.58872\\-159.4619\\-31\\-68.6356\\-159.7387\\-31\\-66.68247\\-159.7262\\-31\\-64.72935\\-159.5576\\-31\\-62.77623\\-161.5088\\-31\\-61.90291\\-162.5521\\-31\\-61.22522\\-164.5053\\-31\\-62.34154\\-168.4115\\-31\\-62.33233\\-172.3178\\-31\\-61.7668\\-174.2709\\-31\\-60.46628\\-176.224\\-31\\-60.46628\\-180.1303\\-31\\-60.81547\\-182.0834\\-31\\-60.27378\\-184.0365\\-31\\-60.19531\\-185.9896\\-31\\-59.8581\\-187.9428\\-31\\-57.88843\\-189.8959\\-31\\-55.84214\\-193.8021\\-31\\-54.03829\\-195.7553\\-31\\-53.26969\\-197.7084\\-31\\-53.00297\\-199.6615\\-31\\-53.05666\\-201.6146\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "57"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "282"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-159.4514\\-31\\-41.29185\\-158.1486\\-31\\-43.24498\\-156.2358\\-31\\-44.46059\\-154.7396\\-31\\-45.50206\\-152.7865\\-31\\-46.26005\\-150.8334\\-31\\-47.15123\\-149.7388\\-31\\-49.10435\\-148.8879\\-31\\-51.05748\\-150.9863\\-31\\-52.46807\\-150.8334\\-31\\-51.9134\\-148.8803\\-31\\-51.05748\\-146.808\\-31\\-47.15123\\-143.6895\\-31\\-46.63997\\-143.0209\\-31\\-46.11813\\-141.0678\\-31\\-44.99866\\-139.1146\\-31\\-44.17576\\-137.1615\\-31\\-42.40722\\-135.2084\\-31\\-39.33873\\-132.2182\\-31\\-37.3856\\-130.516\\-31\\-35.27766\\-129.349\\-31\\-33.47935\\-128.5388\\-31\\-31.52623\\-128.1554\\-31\\-29.5731\\-128.1484\\-31\\-27.61998\\-128.7584\\-31\\-25.66685\\-129.7837\\-31\\-23.71373\\-129.811\\-31\\-21.7606\\-130.9452\\-31\\-21.42451\\-131.3021\\-31\\-20.78873\\-133.2553\\-31\\-18.91927\\-135.2084\\-31\\-17.85435\\-137.241\\-31\\-17.07215\\-139.1146\\-31\\-16.56407\\-141.0678\\-31\\-15.77916\\-143.0209\\-31\\-13.9481\\-144.9816\\-31\\-12.26551\\-146.9271\\-31\\-12.17466\\-148.8803\\-31\\-11.29743\\-150.8334\\-31\\-11.50302\\-152.7865\\-31\\-11.99498\\-153.1929\\-31\\-13.9481\\-154.211\\-31\\-14.76533\\-152.7865\\-31\\-14.38279\\-150.8334\\-31\\-15.36007\\-148.8803\\-31\\-15.90123\\-148.3715\\-31\\-16.76818\\-148.8803\\-31\\-17.85435\\-150.2277\\-31\\-18.16916\\-150.8334\\-31\\-18.8496\\-152.7865\\-31\\-23.71373\\-157.717\\-31\\-25.66685\\-159.3539\\-31\\-27.61998\\-159.7187\\-31\\-29.5731\\-160.3427\\-31\\-31.52623\\-160.3923\\-31\\-35.43248\\-160.3672\\-31\\-37.3856\\-159.7738\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "283"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "13.39565\\-238.9597\\-31\\11.44252\\-237.5856\\-31\\10.6466\\-236.7709\\-31\\9.866426\\-234.8178\\-31\\9.58414\\-232.8646\\-31\\10.31266\\-230.9115\\-31\\12.01738\\-228.9584\\-31\\13.39565\\-228.0947\\-31\\17.3019\\-226.4204\\-31\\19.25502\\-225.912\\-31\\21.20815\\-224.3524\\-31\\23.16127\\-224.3463\\-31\\27.06752\\-225.3581\\-31\\29.02065\\-225.577\\-31\\31.37942\\-227.0053\\-31\\32.42626\\-228.9584\\-31\\31.35626\\-230.9115\\-31\\30.60756\\-232.8646\\-31\\29.36881\\-234.8178\\-31\\27.81126\\-236.7709\\-31\\27.06752\\-237.4728\\-31\\25.1144\\-238.7906\\-31\\23.16127\\-239.6912\\-31\\21.20815\\-239.9238\\-31\\17.3019\\-240.2242\\-31\\15.34877\\-239.8147\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "284"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-205.1077\\-31\\52.84725\\-203.5678\\-31\\52.28376\\-201.6146\\-31\\52.27115\\-199.6615\\-31\\53.8946\\-195.7553\\-31\\54.85517\\-193.8021\\-31\\56.25589\\-189.8959\\-31\\56.28363\\-187.9428\\-31\\58.15593\\-184.0365\\-31\\58.15593\\-174.2709\\-31\\59.06606\\-172.3178\\-31\\59.15105\\-170.3646\\-31\\58.71425\\-168.4115\\-31\\58.68687\\-162.5521\\-31\\60.27065\\-160.8599\\-31\\62.22377\\-159.7708\\-31\\64.1769\\-159.4514\\-31\\70.03628\\-159.4567\\-31\\71.9894\\-160.1437\\-31\\72.69869\\-160.599\\-31\\75.89565\\-162.2024\\-31\\79.8019\\-165.0333\\-31\\81.75503\\-166.1766\\-31\\82.04069\\-166.4584\\-31\\82.87807\\-168.4115\\-31\\82.66936\\-170.3646\\-31\\81.75503\\-171.3839\\-31\\79.8019\\-172.9037\\-31\\77.84878\\-175.1852\\-31\\75.89565\\-176.7036\\-31\\73.94253\\-176.7036\\-31\\71.9894\\-176.8089\\-31\\70.40326\\-178.1771\\-31\\69.19024\\-180.1303\\-31\\68.08315\\-181.3523\\-31\\66.13003\\-183.028\\-31\\62.22377\\-185.121\\-31\\61.33549\\-185.9896\\-31\\60.58546\\-189.8959\\-31\\59.74481\\-191.849\\-31\\59.06133\\-193.8021\\-31\\58.14314\\-195.7553\\-31\\56.3644\\-200.101\\-31\\55.83943\\-201.6146\\-31\\55.67833\\-203.5678\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002317"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "285"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "75.89565\\-199.2474\\-31\\74.0535\\-197.7084\\-31\\73.55559\\-195.7553\\-31\\73.94253\\-195.1338\\-31\\74.24147\\-193.8021\\-31\\75.89565\\-191.738\\-31\\77.84878\\-191.8566\\-31\\79.8019\\-191.7004\\-31\\83.70815\\-191.6874\\-31\\85.66128\\-191.0043\\-31\\87.6144\\-190.1316\\-31\\89.56753\\-190.1244\\-31\\91.52065\\-190.8572\\-31\\93.47378\\-191.4362\\-31\\93.76603\\-191.849\\-31\\92.53769\\-193.8021\\-31\\91.52065\\-194.8298\\-31\\89.56753\\-195.778\\-31\\87.6144\\-196.0592\\-31\\85.66128\\-196.8476\\-31\\83.70815\\-197.4727\\-31\\81.75503\\-197.1921\\-31\\79.8019\\-198.3816\\-31\\77.84878\\-199.2474\\-31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "139"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "286"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-127.2293\\-219.3881\\-29\\-129.1825\\-217.7076\\-29\\-131.1356\\-217.5695\\-29\\-133.0887\\-217.2623\\-29\\-135.0419\\-216.1757\\-29\\-138.9481\\-214.2551\\-29\\-140.9012\\-213.1848\\-29\\-142.5838\\-211.3803\\-29\\-143.7007\\-209.4271\\-29\\-144.5484\\-205.5209\\-29\\-145.6394\\-203.5678\\-29\\-146.0233\\-201.6146\\-29\\-146.0464\\-199.6615\\-29\\-145.6587\\-197.7084\\-29\\-144.8075\\-196.8956\\-29\\-142.8544\\-198.2997\\-29\\-140.9012\\-199.1202\\-29\\-138.9202\\-199.6615\\-29\\-136.995\\-200.0775\\-29\\-135.0419\\-200.6522\\-29\\-133.0887\\-200.7648\\-29\\-131.1356\\-200.3177\\-29\\-129.1825\\-200.1172\\-29\\-125.2762\\-200.3819\\-29\\-123.3231\\-199.7281\\-29\\-119.4168\\-199.6842\\-29\\-117.4637\\-199.3127\\-29\\-115.5106\\-197.4582\\-29\\-113.5575\\-194.4404\\-29\\-113.0632\\-193.8021\\-29\\-112.2835\\-191.849\\-29\\-109.6512\\-189.3186\\-29\\-107.6981\\-188.6497\\-29\\-105.745\\-187.7433\\-29\\-101.8387\\-187.7558\\-29\\-99.8856\\-188.7409\\-29\\-97.93247\\-189.3932\\-29\\-95.97935\\-189.6721\\-29\\-94.02622\\-189.4163\\-29\\-92.0731\\-189.3546\\-29\\-90.11997\\-189.4134\\-29\\-88.16685\\-188.1985\\-29\\-87.93829\\-187.9428\\-29\\-86.97095\\-185.9896\\-29\\-85.76984\\-184.0365\\-29\\-85.34517\\-182.0834\\-29\\-84.2606\\-180.5551\\-29\\-82.30747\\-178.4983\\-29\\-81.75746\\-178.1771\\-29\\-81.58187\\-176.224\\-29\\-81.82787\\-174.2709\\-29\\-82.26991\\-172.3178\\-29\\-82.47636\\-170.3646\\-29\\-81.70446\\-168.4115\\-29\\-80.70771\\-166.4584\\-29\\-80.35435\\-166.1119\\-29\\-78.40122\\-164.8563\\-29\\-76.4481\\-163.446\\-29\\-73.58817\\-160.599\\-29\\-72.54185\\-159.6563\\-29\\-70.58872\\-159.176\\-29\\-68.6356\\-159.552\\-29\\-66.68247\\-159.6225\\-29\\-64.72935\\-159.3055\\-29\\-62.8992\\-160.599\\-29\\-62.30538\\-162.5521\\-29\\-62.41241\\-164.5053\\-29\\-62.32963\\-166.4584\\-29\\-62.36028\\-172.3178\\-29\\-61.87077\\-174.2709\\-29\\-60.98705\\-176.224\\-29\\-60.46628\\-178.1771\\-29\\-60.48701\\-180.1303\\-29\\-61.40361\\-182.0834\\-29\\-61.33678\\-185.9896\\-29\\-61.00002\\-187.9428\\-29\\-58.86998\\-189.3262\\-29\\-58.19538\\-189.8959\\-29\\-56.82211\\-191.849\\-29\\-55.97481\\-193.8021\\-29\\-54.7128\\-195.7553\\-29\\-53.352\\-199.6615\\-29\\-53.00297\\-201.6146\\-29\\-53.65265\\-205.5209\\-29\\-54.10408\\-207.474\\-29\\-54.96373\\-208.9447\\-29\\-56.68303\\-207.474\\-29\\-57.83916\\-205.5209\\-29\\-56.76494\\-203.5678\\-29\\-56.716\\-201.6146\\-29\\-56.83393\\-199.6615\\-29\\-57.8499\\-197.7084\\-29\\-59.73958\\-195.7553\\-29\\-60.49758\\-193.8021\\-29\\-61.7668\\-191.849\\-29\\-62.77623\\-190.689\\-29\\-66.68247\\-187.2467\\-29\\-68.6356\\-185.1923\\-29\\-70.58872\\-183.2676\\-29\\-72.54185\\-182.4605\\-29\\-72.81197\\-182.0834\\-29\\-74.49497\\-180.9693\\-29\\-76.4481\\-180.8152\\-29\\-78.20403\\-182.0834\\-29\\-76.4481\\-183.928\\-29\\-74.49497\\-184.2497\\-29\\-72.54185\\-185.4969\\-29\\-72.19533\\-185.9896\\-29\\-71.60244\\-187.9428\\-29\\-70.40759\\-189.8959\\-29\\-69.31756\\-191.849\\-29\\-68.8763\\-195.7553\\-29\\-69.35323\\-197.7084\\-29\\-69.95803\\-199.6615\\-29\\-70.66949\\-201.6146\\-29\\-72.66392\\-205.5209\\-29\\-73.54439\\-207.474\\-29\\-75.73962\\-211.3803\\-29\\-76.4481\\-212.0707\\-29\\-78.40122\\-213.0516\\-29\\-80.35435\\-214.4009\\-29\\-82.30747\\-215.9606\\-29\\-84.2606\\-216.4498\\-29\\-88.16685\\-216.9691\\-29\\-92.0731\\-216.4129\\-29\\-94.02622\\-215.7748\\-29\\-95.97935\\-215.3408\\-29\\-97.93247\\-215.2039\\-29\\-99.8856\\-214.2021\\-29\\-101.8387\\-214.1805\\-29\\-103.7918\\-214.7615\\-29\\-105.745\\-214.9717\\-29\\-111.6043\\-215.0047\\-29\\-113.5575\\-215.5239\\-29\\-115.5106\\-216.3011\\-29\\-117.4637\\-216.6363\\-29\\-121.37\\-218.796\\-29\\-123.3231\\-218.9933\\-29\\-125.2762\\-219.9931\\-29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "287"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-158.8329\\-29\\-41.29185\\-157.4291\\-29\\-44.01146\\-154.7396\\-29\\-45.50409\\-150.8334\\-29\\-46.72636\\-148.8803\\-29\\-47.15123\\-148.4554\\-29\\-49.10435\\-148.323\\-29\\-49.71157\\-148.8803\\-29\\-51.05748\\-150.6596\\-29\\-52.44794\\-148.8803\\-29\\-51.81953\\-146.9271\\-29\\-51.05748\\-146.1562\\-29\\-49.10435\\-145.2792\\-29\\-47.15123\\-144.0797\\-29\\-46.24071\\-143.0209\\-29\\-45.1981\\-140.9655\\-29\\-43.36705\\-137.1615\\-29\\-42.13788\\-135.2084\\-29\\-37.3856\\-130.5278\\-29\\-35.43248\\-129.7837\\-29\\-33.47935\\-129.4575\\-29\\-31.52623\\-129.0213\\-29\\-29.5731\\-128.8293\\-29\\-27.61998\\-129.1874\\-29\\-25.66685\\-129.7837\\-29\\-23.71373\\-129.802\\-29\\-21.7606\\-130.5762\\-29\\-21.0609\\-131.3021\\-29\\-20.36789\\-133.2553\\-29\\-18.89936\\-135.2084\\-29\\-16.90338\\-139.1146\\-29\\-16.13695\\-141.0678\\-29\\-15.18139\\-143.0209\\-29\\-13.46939\\-144.974\\-29\\-12.46539\\-146.9271\\-29\\-11.88647\\-148.8803\\-29\\-11.68485\\-150.8334\\-29\\-11.99498\\-151.3491\\-29\\-13.84903\\-152.7865\\-29\\-14.00507\\-152.7865\\-29\\-14.67919\\-150.8334\\-29\\-15.65203\\-148.8803\\-29\\-15.90123\\-148.6146\\-29\\-17.85435\\-148.9837\\-29\\-18.62507\\-150.8334\\-29\\-19.18269\\-152.7865\\-29\\-20.75573\\-154.7396\\-29\\-23.71373\\-157.5982\\-29\\-25.66685\\-158.7813\\-29\\-27.61998\\-159.3476\\-29\\-29.5731\\-159.452\\-29\\-35.43248\\-159.452\\-29\\-37.3856\\-159.3783\\-29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "288"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "15.34877\\-239.3692\\-29\\13.39565\\-238.2391\\-29\\11.44252\\-237.7928\\-29\\10.24829\\-236.7709\\-29\\9.367329\\-234.8178\\-29\\10.06285\\-232.8646\\-29\\11.18166\\-230.9115\\-29\\12.6981\\-228.9584\\-29\\13.39565\\-228.3855\\-29\\15.34877\\-227.7235\\-29\\17.3019\\-226.7013\\-29\\19.25502\\-225.965\\-29\\21.20815\\-224.2344\\-29\\23.16127\\-223.9589\\-29\\29.02065\\-223.5282\\-29\\30.97377\\-224.3023\\-29\\31.81362\\-225.0521\\-29\\32.9269\\-225.4738\\-29\\34.33071\\-227.0053\\-29\\34.34568\\-228.9584\\-29\\33.27812\\-230.9115\\-29\\32.51946\\-232.8646\\-29\\31.52018\\-234.8178\\-29\\30.97377\\-235.1629\\-29\\29.02065\\-236.8251\\-29\\27.06752\\-237.938\\-29\\25.1144\\-238.1484\\-29\\23.16127\\-238.6441\\-29\\21.20815\\-238.7318\\-29\\17.3019\\-239.7875\\-29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "289"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-208.4091\\-29\\53.34546\\-207.474\\-29\\52.88194\\-203.5678\\-29\\52.86768\\-199.6615\\-29\\53.46507\\-197.7084\\-29\\55.85613\\-191.849\\-29\\56.25589\\-189.8959\\-29\\56.28363\\-187.9428\\-29\\58.15593\\-184.0365\\-29\\58.15593\\-176.224\\-29\\58.52923\\-174.2709\\-29\\59.32267\\-172.3178\\-29\\59.60761\\-170.3646\\-29\\59.41675\\-168.4115\\-29\\59.42618\\-162.5521\\-29\\60.13422\\-160.599\\-29\\62.22377\\-159.3902\\-29\\64.1769\\-159.1596\\-29\\66.13003\\-159.1512\\-29\\68.08315\\-158.7125\\-29\\70.03628\\-158.8453\\-29\\73.94253\\-159.8\\-29\\75.89565\\-161.2234\\-29\\77.84878\\-162.2334\\-29\\79.8019\\-163.6743\\-29\\81.75503\\-165.4409\\-29\\82.64648\\-166.4584\\-29\\83.00285\\-168.4115\\-29\\81.79572\\-170.3646\\-29\\79.8019\\-171.607\\-29\\79.07087\\-172.3178\\-29\\77.8409\\-174.2709\\-29\\77.28845\\-176.224\\-29\\75.89565\\-177.2006\\-29\\73.94253\\-176.7041\\-29\\71.9894\\-177.0067\\-29\\70.03628\\-179.1818\\-29\\69.29144\\-180.1303\\-29\\68.08315\\-181.1735\\-29\\66.13003\\-182.5917\\-29\\64.1769\\-183.0012\\-29\\62.22377\\-183.9411\\-29\\60.54118\\-185.9896\\-29\\60.05895\\-187.9428\\-29\\59.74481\\-189.8959\\-29\\58.14314\\-195.7553\\-29\\57.73049\\-197.7084\\-29\\56.77333\\-201.6146\\-29\\57.27012\\-203.5678\\-29\\57.08311\\-205.5209\\-29\\55.59129\\-207.474\\-29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002316"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "290"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "71.9894\\-198.5184\\-29\\71.27856\\-197.7084\\-29\\70.70387\\-195.7553\\-29\\71.38668\\-193.8021\\-29\\72.36353\\-191.849\\-29\\72.36806\\-187.9428\\-29\\72.94026\\-185.9896\\-29\\73.94253\\-184.7611\\-29\\75.89565\\-184.3207\\-29\\77.6159\\-185.9896\\-29\\77.43024\\-187.9428\\-29\\77.38654\\-189.8959\\-29\\77.84878\\-190.4689\\-29\\79.8019\\-190.8054\\-29\\81.75503\\-190.8144\\-29\\83.70815\\-190.9335\\-29\\87.6144\\-190.1366\\-29\\89.56753\\-190.888\\-29\\91.52065\\-191.3933\\-29\\92.11744\\-191.849\\-29\\92.33535\\-193.8021\\-29\\91.52065\\-194.6124\\-29\\89.56753\\-195.7629\\-29\\87.6144\\-195.7928\\-29\\85.66128\\-196.4399\\-29\\83.70815\\-196.9004\\-29\\81.75503\\-196.6508\\-29\\79.8019\\-197.2083\\-29\\77.84878\\-198.6445\\-29\\75.89565\\-199.235\\-29\\73.94253\\-199.4007\\-29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "151"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "291"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-125.2762\\-219.4967\\-27\\-127.2293\\-217.7481\\-27\\-127.6596\\-217.2396\\-27\\-129.1825\\-215.9198\\-27\\-131.1356\\-216.5164\\-27\\-133.0887\\-216.9921\\-27\\-135.0419\\-216.6382\\-27\\-136.995\\-215.8062\\-27\\-138.9481\\-214.6962\\-27\\-140.9012\\-213.8417\\-27\\-141.428\\-213.3334\\-27\\-142.205\\-211.3803\\-27\\-142.6069\\-209.4271\\-27\\-143.6791\\-207.474\\-27\\-143.9654\\-205.5209\\-27\\-144.3728\\-203.5678\\-27\\-145.5919\\-201.6146\\-27\\-145.5236\\-199.6615\\-27\\-144.8075\\-198.7237\\-27\\-142.8544\\-198.6354\\-27\\-140.9012\\-199.8485\\-27\\-138.9481\\-200.0285\\-27\\-136.995\\-199.7137\\-27\\-135.0419\\-200.3512\\-27\\-133.0887\\-200.5191\\-27\\-131.1356\\-199.77\\-27\\-129.1825\\-199.7137\\-27\\-127.2293\\-199.9976\\-27\\-125.2762\\-200.1411\\-27\\-123.3231\\-199.6842\\-27\\-117.4637\\-199.6691\\-27\\-115.5106\\-198.3067\\-27\\-114.9988\\-197.7084\\-27\\-114.0393\\-195.7553\\-27\\-112.4778\\-193.8021\\-27\\-111.385\\-191.849\\-27\\-109.6512\\-189.8732\\-27\\-107.6981\\-188.9807\\-27\\-105.745\\-188.3536\\-27\\-101.8387\\-188.0648\\-27\\-99.8856\\-188.6324\\-27\\-95.97935\\-189.6254\\-27\\-90.11997\\-189.6254\\-27\\-88.16685\\-188.9139\\-27\\-87.29282\\-187.9428\\-27\\-86.17616\\-185.9896\\-27\\-85.03078\\-182.0834\\-27\\-83.76376\\-180.1303\\-27\\-83.52172\\-178.1771\\-27\\-82.61695\\-176.224\\-27\\-81.95065\\-174.2709\\-27\\-83.18839\\-172.3178\\-27\\-83.43243\\-170.3646\\-27\\-83.01521\\-168.4115\\-27\\-81.70111\\-166.4584\\-27\\-80.35435\\-165.1624\\-27\\-77.03101\\-162.5521\\-27\\-74.49497\\-160.0464\\-27\\-72.54185\\-159.0176\\-27\\-68.6356\\-159.3055\\-27\\-64.72935\\-159.3135\\-27\\-63.09238\\-160.599\\-27\\-63.57523\\-162.5521\\-27\\-63.92945\\-164.5053\\-27\\-63.65615\\-166.4584\\-27\\-62.81437\\-168.4115\\-27\\-62.36028\\-170.3646\\-27\\-62.36028\\-172.3178\\-27\\-62.14433\\-174.2709\\-27\\-61.66219\\-176.224\\-27\\-60.47658\\-178.1771\\-27\\-60.48701\\-180.1303\\-27\\-61.01144\\-182.0834\\-27\\-60.99874\\-185.9896\\-27\\-60.64619\\-187.9428\\-27\\-58.27997\\-189.8959\\-27\\-56.80835\\-191.849\\-27\\-56.38059\\-193.8021\\-27\\-55.82082\\-195.7553\\-27\\-55.67208\\-197.7084\\-27\\-56.21931\\-199.6615\\-27\\-54.96373\\-200.061\\-27\\-53.90662\\-201.6146\\-27\\-53.83652\\-203.5678\\-27\\-53.60294\\-205.5209\\-27\\-53.04816\\-207.474\\-27\\-52.64678\\-209.4271\\-27\\-52.49282\\-211.3803\\-27\\-51.95355\\-213.3334\\-27\\-51.65712\\-215.2865\\-27\\-51.01309\\-217.2396\\-27\\-50.76622\\-219.1928\\-27\\-51.05748\\-219.6414\\-27\\-53.0106\\-220.7318\\-27\\-54.96373\\-220.5057\\-27\\-58.86998\\-216.7158\\-27\\-60.8231\\-215.1252\\-27\\-62.31625\\-213.3334\\-27\\-62.25743\\-211.3803\\-27\\-61.61656\\-209.4271\\-27\\-60.2921\\-207.474\\-27\\-59.84184\\-205.5209\\-27\\-58.73354\\-203.5678\\-27\\-58.03182\\-201.6146\\-27\\-57.07607\\-199.6615\\-27\\-58.12752\\-197.7084\\-27\\-58.86998\\-196.9857\\-27\\-59.74472\\-195.7553\\-27\\-60.46628\\-193.8021\\-27\\-61.60739\\-191.849\\-27\\-62.60211\\-189.8959\\-27\\-64.72935\\-187.8906\\-27\\-66.68247\\-186.5608\\-27\\-67.2431\\-185.9896\\-27\\-68.6356\\-183.9174\\-27\\-70.82627\\-182.0834\\-27\\-72.54185\\-181.1312\\-27\\-74.49497\\-181.0165\\-27\\-75.98344\\-182.0834\\-27\\-74.49497\\-183.0651\\-27\\-71.714\\-185.9896\\-27\\-70.8611\\-187.9428\\-27\\-70.58872\\-188.2657\\-27\\-68.21445\\-191.849\\-27\\-67.62594\\-193.8021\\-27\\-67.2347\\-195.7553\\-27\\-67.41784\\-197.7084\\-27\\-68.26725\\-199.6615\\-27\\-68.6356\\-200.113\\-27\\-70.62658\\-203.5678\\-27\\-71.59183\\-205.5209\\-27\\-73.67287\\-209.4271\\-27\\-74.8942\\-211.3803\\-27\\-76.4481\\-213.061\\-27\\-78.40122\\-214.3549\\-27\\-84.2606\\-217.3204\\-27\\-86.21372\\-217.6011\\-27\\-92.0731\\-217.5907\\-27\\-94.02622\\-217.1715\\-27\\-95.97935\\-216.6131\\-27\\-97.93247\\-216.4275\\-27\\-99.8856\\-215.8123\\-27\\-101.8387\\-214.9805\\-27\\-107.6981\\-215.0047\\-27\\-109.6512\\-214.7491\\-27\\-111.6043\\-214.6217\\-27\\-113.5575\\-214.6255\\-27\\-117.4637\\-215.3262\\-27\\-119.4168\\-215.6225\\-27\\-121.37\\-217.7923\\-27\\-123.3231\\-218.7113\\-27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "292"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-158.433\\-27\\-39.33873\\-157.827\\-27\\-40.76208\\-156.6928\\-27\\-43.24498\\-154.2701\\-27\\-44.43799\\-152.7865\\-27\\-44.89414\\-150.8334\\-27\\-46.08444\\-148.8803\\-27\\-47.15123\\-147.8579\\-27\\-49.10435\\-147.9297\\-27\\-50.08091\\-148.8803\\-27\\-51.05748\\-150.1043\\-27\\-52.91905\\-148.8803\\-27\\-52.49569\\-146.9271\\-27\\-51.05748\\-145.4156\\-27\\-49.10435\\-144.9218\\-27\\-47.15123\\-144.1736\\-27\\-46.06563\\-143.0209\\-27\\-44.84128\\-141.0678\\-27\\-44.24905\\-139.1146\\-27\\-42.24936\\-135.2084\\-27\\-39.33873\\-132.4541\\-27\\-37.3856\\-130.5377\\-27\\-35.43248\\-129.7929\\-27\\-33.47935\\-129.7744\\-27\\-31.52623\\-129.536\\-27\\-29.5731\\-128.6689\\-27\\-27.61998\\-128.6498\\-27\\-25.66685\\-129.536\\-27\\-23.71373\\-129.802\\-27\\-21.7606\\-130.4982\\-27\\-20.9647\\-131.3021\\-27\\-19.46919\\-133.2553\\-27\\-18.78506\\-135.2084\\-27\\-17.90653\\-137.1615\\-27\\-16.89485\\-139.1146\\-27\\-16.08823\\-141.0678\\-27\\-14.93419\\-143.0209\\-27\\-13.30669\\-144.974\\-27\\-12.72488\\-146.9271\\-27\\-11.35688\\-148.8803\\-27\\-11.70591\\-150.8334\\-27\\-11.99498\\-151.0843\\-27\\-13.9481\\-151.101\\-27\\-14.24186\\-150.8334\\-27\\-15.90123\\-148.6641\\-27\\-17.85435\\-148.8907\\-27\\-18.71984\\-150.8334\\-27\\-20.0465\\-152.7865\\-27\\-21.03783\\-154.7396\\-27\\-21.7606\\-155.4624\\-27\\-23.71373\\-157.0797\\-27\\-25.66685\\-157.8051\\-27\\-27.61998\\-158.7544\\-27\\-29.5731\\-159.1512\\-27\\-33.47935\\-159.1427\\-27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "33"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "293"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "13.39565\\-236.7789\\-27\\11.44252\\-236.5551\\-27\\10.10847\\-234.8178\\-27\\10.51706\\-232.8646\\-27\\13.39565\\-229.7172\\-27\\15.34877\\-228.3374\\-27\\17.3019\\-227.7036\\-27\\19.25502\\-226.3665\\-27\\23.16127\\-224.5351\\-27\\25.1144\\-224.0101\\-27\\27.06752\\-223.1512\\-27\\29.02065\\-222.1225\\-27\\30.97377\\-221.3591\\-27\\32.9269\\-220.0133\\-27\\34.88002\\-219.4197\\-27\\36.83315\\-220.8651\\-27\\37.02512\\-221.1459\\-27\\36.84078\\-223.099\\-27\\36.31656\\-225.0521\\-27\\36.33517\\-228.9584\\-27\\35.30938\\-230.9115\\-27\\34.50136\\-232.8646\\-27\\34.27472\\-234.8178\\-27\\32.9269\\-236.1121\\-27\\30.97377\\-236.3067\\-27\\29.02065\\-237.2529\\-27\\27.06752\\-237.6118\\-27\\25.1144\\-237.1499\\-27\\23.16127\\-237.1314\\-27\\21.20815\\-236.9262\\-27\\19.25502\\-236.3932\\-27\\17.3019\\-237.4667\\-27\\15.34877\\-237.4587\\-27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002315"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "84"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "294"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-208.0812\\-27\\53.65948\\-207.474\\-27\\53.6699\\-199.6615\\-27\\53.92591\\-197.7084\\-27\\54.55988\\-195.7553\\-27\\56.24233\\-191.849\\-27\\56.25589\\-189.8959\\-27\\56.56384\\-187.9428\\-27\\58.15593\\-184.0365\\-27\\58.15593\\-178.1771\\-27\\57.96182\\-176.224\\-27\\59.05275\\-174.2709\\-27\\59.65696\\-172.3178\\-27\\59.97768\\-170.3646\\-27\\59.95584\\-162.5521\\-27\\60.01156\\-160.599\\-27\\60.27065\\-160.3105\\-27\\62.22377\\-159.1255\\-27\\66.13003\\-159.1167\\-27\\68.08315\\-157.8222\\-27\\70.03628\\-157.8445\\-27\\71.9894\\-158.8203\\-27\\75.89565\\-159.8854\\-27\\77.84878\\-161.197\\-27\\79.8019\\-162.3148\\-27\\82.00594\\-164.5053\\-27\\83.08379\\-166.4584\\-27\\82.87041\\-168.4115\\-27\\81.75503\\-169.5492\\-27\\78.74603\\-172.3178\\-27\\76.94695\\-174.2709\\-27\\77.83701\\-176.224\\-27\\79.82461\\-178.1771\\-27\\80.71855\\-180.1303\\-27\\81.24747\\-182.0834\\-27\\81.25704\\-184.0365\\-27\\81.47904\\-185.9896\\-27\\81.75503\\-186.443\\-27\\83.10961\\-187.9428\\-27\\83.70815\\-188.4354\\-27\\85.66128\\-189.1942\\-27\\86.41307\\-189.8959\\-27\\87.6144\\-190.7185\\-27\\90.8877\\-191.849\\-27\\91.52065\\-192.3669\\-27\\92.10179\\-193.8021\\-27\\91.52065\\-194.4094\\-27\\89.56753\\-195.7476\\-27\\87.6144\\-195.778\\-27\\85.66128\\-196.039\\-27\\83.70815\\-196.6156\\-27\\81.75503\\-197.0169\\-27\\79.8019\\-197.5444\\-27\\77.84878\\-198.4282\\-27\\75.89565\\-198.9076\\-27\\73.94253\\-200.3108\\-27\\71.9894\\-200.3555\\-27\\71.24378\\-199.6615\\-27\\70.18707\\-197.7084\\-27\\69.65925\\-195.7553\\-27\\70.04402\\-193.8021\\-27\\70.97857\\-191.849\\-27\\70.95181\\-189.8959\\-27\\70.54552\\-187.9428\\-27\\71.15025\\-185.9896\\-27\\72.16379\\-184.0365\\-27\\73.94253\\-180.2\\-27\\73.94253\\-179.9983\\-27\\71.9894\\-179.0535\\-27\\70.72964\\-180.1303\\-27\\68.08315\\-181.598\\-27\\66.13003\\-182.232\\-27\\62.22377\\-183.1925\\-27\\61.32703\\-184.0365\\-27\\60.55247\\-185.9896\\-27\\60.37915\\-187.9428\\-27\\59.32186\\-189.8959\\-27\\58.63234\\-191.849\\-27\\58.13562\\-193.8021\\-27\\58.13052\\-197.7084\\-27\\57.52531\\-201.6146\\-27\\58.18008\\-203.5678\\-27\\57.86819\\-205.5209\\-27\\56.3644\\-207.0247\\-27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "156"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "295"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-54.96373\\-224.1935\\-25\\-56.09627\\-223.099\\-25\\-57.65989\\-221.1459\\-25\\-60.8231\\-217.9649\\-25\\-62.77623\\-216.4808\\-25\\-64.09531\\-215.2865\\-25\\-63.70653\\-211.3803\\-25\\-62.57537\\-209.4271\\-25\\-61.78003\\-207.474\\-25\\-60.55073\\-205.5209\\-25\\-60.0093\\-203.5678\\-25\\-59.72324\\-201.6146\\-25\\-59.06942\\-199.6615\\-25\\-58.86998\\-198.748\\-25\\-58.33287\\-197.7084\\-25\\-58.86998\\-197.3656\\-25\\-59.63446\\-195.7553\\-25\\-60.8231\\-192.2717\\-25\\-61.9118\\-189.8959\\-25\\-64.72935\\-186.9662\\-25\\-66.68247\\-185.17\\-25\\-67.71182\\-184.0365\\-25\\-70.58872\\-181.1996\\-25\\-72.54185\\-180.3556\\-25\\-74.47208\\-182.0834\\-25\\-73.28047\\-184.0365\\-25\\-71.46908\\-185.9896\\-25\\-70.2117\\-187.9428\\-25\\-69.35138\\-189.8959\\-25\\-67.8008\\-191.849\\-25\\-66.67484\\-193.8021\\-25\\-66.72062\\-195.7553\\-25\\-67.3728\\-199.6615\\-25\\-68.21966\\-201.6146\\-25\\-69.62296\\-203.5678\\-25\\-71.58157\\-207.474\\-25\\-73.17171\\-209.4271\\-25\\-74.12084\\-211.3803\\-25\\-75.64489\\-213.3334\\-25\\-78.40122\\-215.842\\-25\\-80.35435\\-216.4938\\-25\\-82.30747\\-217.0264\\-25\\-84.2606\\-218.09\\-25\\-86.21372\\-218.3858\\-25\\-94.02622\\-218.3652\\-25\\-95.97935\\-217.8079\\-25\\-97.93247\\-216.9921\\-25\\-99.8856\\-216.7022\\-25\\-101.8387\\-216.0666\\-25\\-103.7918\\-215.2199\\-25\\-107.6981\\-214.7343\\-25\\-111.6043\\-213.5347\\-25\\-113.5575\\-213.3741\\-25\\-115.5106\\-213.3741\\-25\\-117.4637\\-213.5866\\-25\\-119.4168\\-213.5757\\-25\\-121.37\\-214.3625\\-25\\-122.5833\\-215.2865\\-25\\-123.5383\\-217.2396\\-25\\-125.2762\\-218.1552\\-25\\-126.1307\\-217.2396\\-25\\-127.2293\\-216.2912\\-25\\-129.1825\\-215.6758\\-25\\-131.1356\\-216.4509\\-25\\-133.0887\\-217.0039\\-25\\-135.0419\\-216.9357\\-25\\-136.995\\-216\\-25\\-138.9481\\-214.739\\-25\\-140.9012\\-213.6524\\-25\\-141.2267\\-213.3334\\-25\\-142.0834\\-211.3803\\-25\\-142.1982\\-209.4271\\-25\\-142.5725\\-207.474\\-25\\-143.1574\\-205.5209\\-25\\-143.8527\\-203.5678\\-25\\-144.31\\-201.6146\\-25\\-142.8544\\-199.7019\\-25\\-140.9012\\-200.4417\\-25\\-138.9481\\-200.6279\\-25\\-136.995\\-200.2072\\-25\\-135.0419\\-200.3569\\-25\\-133.0887\\-200.3975\\-25\\-131.1356\\-200.1835\\-25\\-127.2293\\-200.1835\\-25\\-125.2762\\-200.26\\-25\\-123.3231\\-200.4825\\-25\\-119.4168\\-200.1782\\-25\\-117.4637\\-200.1668\\-25\\-115.5106\\-199.057\\-25\\-112.8103\\-195.7553\\-25\\-111.385\\-193.8021\\-25\\-110.5036\\-191.849\\-25\\-109.6512\\-190.9331\\-25\\-107.6981\\-189.7462\\-25\\-105.745\\-189.5176\\-25\\-103.7918\\-188.9656\\-25\\-101.8387\\-188.8032\\-25\\-99.8856\\-189.1921\\-25\\-97.93247\\-189.3466\\-25\\-95.97935\\-189.9625\\-25\\-94.02622\\-190.2851\\-25\\-92.0731\\-190.296\\-25\\-90.11997\\-190.1137\\-25\\-88.16685\\-189.0049\\-25\\-87.1417\\-187.9428\\-25\\-85.74288\\-185.9896\\-25\\-85.33709\\-184.0365\\-25\\-84.25297\\-182.0834\\-25\\-83.77232\\-180.1303\\-25\\-83.75529\\-178.1771\\-25\\-82.80235\\-176.224\\-25\\-82.60188\\-174.2709\\-25\\-83.90955\\-172.3178\\-25\\-84.39132\\-170.3646\\-25\\-83.75488\\-168.4115\\-25\\-83.30586\\-166.4584\\-25\\-82.30747\\-164.8036\\-25\\-80.35435\\-163.3049\\-25\\-79.12255\\-162.5521\\-25\\-77.13937\\-160.599\\-25\\-76.4481\\-160.0863\\-25\\-74.49497\\-158.2735\\-25\\-72.54185\\-157.8801\\-25\\-70.58872\\-159.1078\\-25\\-66.68247\\-159.1342\\-25\\-64.72935\\-159.7496\\-25\\-63.96576\\-160.599\\-25\\-64.26739\\-164.5053\\-25\\-64.10082\\-166.4584\\-25\\-63.67012\\-168.4115\\-25\\-62.81467\\-170.3646\\-25\\-62.36028\\-172.3178\\-25\\-62.35085\\-174.2709\\-25\\-61.87514\\-176.224\\-25\\-61.00002\\-178.1771\\-25\\-60.47658\\-180.1303\\-25\\-60.48701\\-185.9896\\-25\\-59.91788\\-187.9428\\-25\\-57.93967\\-189.8959\\-25\\-56.82211\\-191.849\\-25\\-56.79478\\-193.8021\\-25\\-56.40559\\-195.7553\\-25\\-56.47129\\-199.6615\\-25\\-55.86839\\-201.6146\\-25\\-54.08537\\-203.5678\\-25\\-51.9585\\-209.4271\\-25\\-51.25833\\-213.3334\\-25\\-50.99089\\-215.2865\\-25\\-49.76937\\-217.2396\\-25\\-49.10435\\-217.9481\\-25\\-47.40409\\-219.1928\\-25\\-45.67188\\-221.1459\\-25\\-45.83106\\-223.099\\-25\\-47.15123\\-224.1322\\-25\\-49.10435\\-224.4339\\-25\\-53.0106\\-224.5505\\-25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "296"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-157.0992\\-25\\-41.29185\\-155.6278\\-25\\-44.29094\\-152.7865\\-25\\-44.86201\\-150.8334\\-25\\-45.78632\\-148.8803\\-25\\-47.15123\\-147.6518\\-25\\-49.10435\\-147.5052\\-25\\-50.76587\\-148.8803\\-25\\-51.05748\\-149.2392\\-25\\-52.05729\\-148.8803\\-25\\-52.91142\\-146.9271\\-25\\-51.65363\\-144.974\\-25\\-51.05748\\-144.3947\\-25\\-47.15123\\-143.8718\\-25\\-46.33833\\-143.0209\\-25\\-45.1981\\-140.2688\\-25\\-44.06762\\-137.1615\\-25\\-42.81432\\-135.2084\\-25\\-40.7348\\-133.2553\\-25\\-39.33873\\-132.2929\\-25\\-37.3856\\-130.5377\\-25\\-35.43248\\-129.802\\-25\\-33.47935\\-129.7837\\-25\\-29.5731\\-128.0487\\-25\\-27.61998\\-128.0416\\-25\\-25.66685\\-128.8254\\-25\\-23.71373\\-129.7929\\-25\\-21.7606\\-130.4924\\-25\\-19.0675\\-133.2553\\-25\\-18.39565\\-135.2084\\-25\\-17.57062\\-137.1615\\-25\\-16.07561\\-141.0678\\-25\\-14.69523\\-143.0209\\-25\\-12.69252\\-144.974\\-25\\-12.48033\\-146.9271\\-25\\-11.1333\\-148.8803\\-25\\-11.58427\\-150.8334\\-25\\-11.99498\\-151.1264\\-25\\-13.9481\\-150.1693\\-25\\-15.90123\\-148.0655\\-25\\-17.85435\\-148.479\\-25\\-18.19044\\-148.8803\\-25\\-18.85922\\-150.8334\\-25\\-20.58372\\-152.7865\\-25\\-21.7606\\-154.2576\\-25\\-23.71373\\-155.9999\\-25\\-25.66685\\-157.3455\\-25\\-27.61998\\-157.7901\\-25\\-29.5731\\-158.4054\\-25\\-33.47935\\-158.3821\\-25\\-35.43248\\-157.7933\\-25\\-37.3856\\-157.4955\\-25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "297"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "32.9269\\-237.5271\\-25\\30.97377\\-236.7028\\-25\\29.02065\\-236.1876\\-25\\27.06752\\-236.1487\\-25\\25.1144\\-235.7356\\-25\\23.16127\\-235.69\\-25\\21.20815\\-235.3868\\-25\\19.25502\\-234.3295\\-25\\17.3019\\-233.8725\\-25\\15.34877\\-234.0141\\-25\\13.39565\\-234.4516\\-25\\12.24153\\-232.8646\\-25\\13.39565\\-231.6637\\-25\\13.86738\\-230.9115\\-25\\16.3593\\-228.9584\\-25\\17.3019\\-228.3595\\-25\\19.25502\\-227.7169\\-25\\21.20815\\-226.4064\\-25\\23.16127\\-226.0909\\-25\\25.1144\\-225.3842\\-25\\28.04409\\-223.099\\-25\\29.02065\\-222.2595\\-25\\30.97377\\-221.2267\\-25\\32.9269\\-219.9973\\-25\\34.88002\\-218.9811\\-25\\36.83315\\-218.4977\\-25\\38.78627\\-218.403\\-25\\39.96576\\-219.1928\\-25\\39.22261\\-221.1459\\-25\\38.78627\\-221.7673\\-25\\38.4655\\-223.099\\-25\\38.42274\\-228.9584\\-25\\37.55447\\-230.9115\\-25\\37.34058\\-232.8646\\-25\\36.84219\\-234.8178\\-25\\34.56535\\-236.7709\\-25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002314"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "85"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "298"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-206.5494\\-25\\53.80323\\-205.5209\\-25\\54.26266\\-201.6146\\-25\\54.2892\\-197.7084\\-25\\54.58566\\-195.7553\\-25\\55.59083\\-193.8021\\-25\\56.25589\\-191.849\\-25\\56.26966\\-189.8959\\-25\\57.05658\\-187.9428\\-25\\58.48291\\-184.0365\\-25\\58.46613\\-182.0834\\-25\\57.76939\\-180.1303\\-25\\57.69229\\-178.1771\\-25\\57.42917\\-176.224\\-25\\58.31752\\-175.0571\\-25\\59.21824\\-174.2709\\-25\\59.96334\\-172.3178\\-25\\60.00616\\-164.5053\\-25\\60.39272\\-162.5521\\-25\\60.63764\\-160.599\\-25\\62.22377\\-159.2884\\-25\\64.1769\\-159.1167\\-25\\66.13003\\-158.6228\\-25\\68.08315\\-157.5581\\-25\\70.03628\\-157.3728\\-25\\71.9894\\-158.0229\\-25\\73.94253\\-159.1342\\-25\\75.89565\\-159.393\\-25\\77.84878\\-159.8922\\-25\\79.8019\\-161.6518\\-25\\82.60168\\-164.5053\\-25\\84.27828\\-166.4584\\-25\\83.46025\\-168.4115\\-25\\81.75503\\-169.5035\\-25\\78.73067\\-172.3178\\-25\\77.10165\\-174.2709\\-25\\77.84878\\-175.6489\\-25\\78.55779\\-176.224\\-25\\79.8019\\-176.9564\\-25\\82.23705\\-180.1303\\-25\\82.82344\\-182.0834\\-25\\82.83311\\-184.0365\\-25\\83.70815\\-185.4973\\-25\\85.66128\\-188.0419\\-25\\86.80216\\-189.8959\\-25\\87.6144\\-190.8725\\-25\\89.56753\\-191.6133\\-25\\89.90594\\-191.849\\-25\\91.17094\\-193.8021\\-25\\89.56753\\-195.5999\\-25\\87.6144\\-196.0592\\-25\\85.66128\\-195.778\\-25\\83.70815\\-196.562\\-25\\81.74087\\-197.7084\\-25\\79.8019\\-198.398\\-25\\75.89565\\-199.4578\\-25\\73.94253\\-200.6231\\-25\\71.9894\\-200.9274\\-25\\70.5125\\-199.6615\\-25\\69.67945\\-197.7084\\-25\\69.64934\\-193.8021\\-25\\70.37679\\-189.8959\\-25\\70.36648\\-187.9428\\-25\\71.71886\\-184.0365\\-25\\72.13801\\-182.0834\\-25\\71.9894\\-181.8135\\-25\\70.03628\\-181.0168\\-25\\68.08315\\-182.1781\\-25\\66.13003\\-182.2055\\-25\\64.1769\\-182.8987\\-25\\62.22377\\-183.4872\\-25\\61.63065\\-184.0365\\-25\\60.95969\\-185.9896\\-25\\60.41926\\-187.9428\\-25\\59.0652\\-189.8959\\-25\\58.31752\\-191.6255\\-25\\57.22607\\-191.849\\-25\\58.04361\\-193.8021\\-25\\58.15593\\-195.7553\\-25\\58.16891\\-199.6615\\-25\\58.51696\\-201.6146\\-25\\59.24401\\-203.5678\\-25\\59.07882\\-205.5209\\-25\\58.31752\\-206.2989\\-25\\56.3644\\-207.012\\-25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "164"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "299"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-47.15123\\-227.1093\\-23\\-49.10435\\-226.5907\\-23\\-51.05748\\-226.5689\\-23\\-53.0106\\-226.2757\\-23\\-54.96373\\-225.7192\\-23\\-57.76161\\-223.099\\-23\\-59.34524\\-221.1459\\-23\\-61.19404\\-219.1928\\-23\\-62.77623\\-217.9992\\-23\\-64.11523\\-217.2396\\-23\\-64.72935\\-216.7305\\-23\\-65.65255\\-215.2865\\-23\\-65.02594\\-213.3334\\-23\\-64.75418\\-211.3803\\-23\\-63.92181\\-209.4271\\-23\\-61.71828\\-205.5209\\-23\\-60.47658\\-203.5678\\-23\\-60.17723\\-201.6146\\-23\\-59.67336\\-199.6615\\-23\\-58.86998\\-197.9627\\-23\\-58.39127\\-197.7084\\-23\\-58.86998\\-197.0302\\-23\\-59.79229\\-193.8021\\-23\\-60.24259\\-191.849\\-23\\-61.77641\\-189.8959\\-23\\-63.52301\\-187.9428\\-23\\-64.49363\\-185.9896\\-23\\-66.68247\\-184.0136\\-23\\-68.6356\\-182.8735\\-23\\-70.58872\\-181.0116\\-23\\-72.54185\\-179.2795\\-23\\-74.49497\\-179.3348\\-23\\-75.06183\\-180.1303\\-23\\-73.61894\\-182.0834\\-23\\-72.54185\\-184.0108\\-23\\-71.32114\\-185.9896\\-23\\-69.75533\\-187.9428\\-23\\-68.8138\\-189.8959\\-23\\-67.7435\\-191.849\\-23\\-67.0056\\-193.8021\\-23\\-67.57581\\-195.7553\\-23\\-67.89613\\-197.7084\\-23\\-67.9116\\-199.6615\\-23\\-68.13876\\-201.6146\\-23\\-68.82394\\-203.5678\\-23\\-70.58872\\-207.1006\\-23\\-71.94506\\-209.4271\\-23\\-75.46655\\-213.3334\\-23\\-78.40122\\-216.2212\\-23\\-80.35435\\-217.0039\\-23\\-82.30747\\-217.9475\\-23\\-84.2606\\-218.6987\\-23\\-86.21372\\-218.9811\\-23\\-92.0731\\-218.9811\\-23\\-94.02622\\-218.9222\\-23\\-97.58595\\-217.2396\\-23\\-97.93247\\-217.0158\\-23\\-99.8856\\-217.0039\\-23\\-101.8387\\-216.716\\-23\\-103.7918\\-215.7926\\-23\\-107.6981\\-214.2834\\-23\\-109.6512\\-212.9598\\-23\\-111.6043\\-211.9807\\-23\\-113.5575\\-211.3887\\-23\\-115.5106\\-211.4216\\-23\\-117.4637\\-212.015\\-23\\-119.4168\\-212.1066\\-23\\-121.37\\-212.5196\\-23\\-123.3231\\-214.1431\\-23\\-127.2293\\-216.2523\\-23\\-131.1356\\-216.7875\\-23\\-133.0887\\-216.9921\\-23\\-135.0419\\-216.6907\\-23\\-136.995\\-215.5966\\-23\\-138.9481\\-214.1649\\-23\\-140.9012\\-212.3442\\-23\\-141.6794\\-211.3803\\-23\\-141.9652\\-209.4271\\-23\\-142.1783\\-205.5209\\-23\\-143.4966\\-203.5678\\-23\\-143.2294\\-201.6146\\-23\\-142.8544\\-201.2527\\-23\\-140.9012\\-201.0399\\-23\\-138.9481\\-201.2057\\-23\\-136.995\\-200.9117\\-23\\-133.0887\\-200.8678\\-23\\-129.1825\\-201.2728\\-23\\-127.2293\\-201.3325\\-23\\-126.0392\\-201.6146\\-23\\-123.3231\\-203.0634\\-23\\-121.37\\-202.4988\\-23\\-120.087\\-201.6146\\-23\\-119.4168\\-201.3577\\-23\\-117.4637\\-201.3202\\-23\\-115.5106\\-200.667\\-23\\-114.4664\\-199.6615\\-23\\-113.1482\\-197.7084\\-23\\-112.0257\\-195.7553\\-23\\-110.4907\\-193.8021\\-23\\-109.2892\\-191.849\\-23\\-107.6981\\-190.7821\\-23\\-105.745\\-190.8943\\-23\\-103.7918\\-190.1324\\-23\\-101.8387\\-189.9214\\-23\\-99.8856\\-190.0703\\-23\\-97.93247\\-189.6721\\-23\\-95.97935\\-190.5666\\-23\\-94.02622\\-191.1466\\-23\\-92.0731\\-191.1729\\-23\\-90.11997\\-190.6529\\-23\\-87.40479\\-187.9428\\-23\\-86.06512\\-185.9896\\-23\\-84.5011\\-182.0834\\-23\\-84.46035\\-178.1771\\-23\\-82.89341\\-176.224\\-23\\-83.02246\\-174.2709\\-23\\-84.98217\\-172.3178\\-23\\-85.38496\\-170.3646\\-23\\-84.99583\\-168.4115\\-23\\-84.02488\\-166.4584\\-23\\-83.29312\\-164.5053\\-23\\-82.30747\\-163.4073\\-23\\-81.31326\\-162.5521\\-23\\-80.35435\\-161.105\\-23\\-78.40122\\-159.4227\\-23\\-76.4481\\-158.1875\\-23\\-74.49497\\-157.4126\\-23\\-72.54185\\-157.6693\\-23\\-70.58872\\-159.0989\\-23\\-68.6356\\-159.1167\\-23\\-66.68247\\-159.2635\\-23\\-64.70664\\-160.599\\-23\\-64.32295\\-162.5521\\-23\\-64.30398\\-166.4584\\-23\\-64.1223\\-168.4115\\-23\\-63.56479\\-170.3646\\-23\\-62.36983\\-172.3178\\-23\\-62.36028\\-174.2709\\-23\\-62.15526\\-176.224\\-23\\-61.75482\\-178.1771\\-23\\-60.87609\\-180.1303\\-23\\-60.47658\\-182.0834\\-23\\-60.45611\\-185.9896\\-23\\-59.82454\\-187.9428\\-23\\-57.84177\\-189.8959\\-23\\-56.82211\\-191.849\\-23\\-56.78141\\-195.7553\\-23\\-56.45553\\-197.7084\\-23\\-55.90431\\-199.6615\\-23\\-55.5226\\-201.6146\\-23\\-53.94186\\-203.5678\\-23\\-52.67009\\-205.5209\\-23\\-52.023\\-207.474\\-23\\-50.94734\\-209.4271\\-23\\-50.48782\\-211.3803\\-23\\-50.35295\\-213.3334\\-23\\-50.1132\\-215.2865\\-23\\-49.10435\\-216.4717\\-23\\-47.10545\\-217.2396\\-23\\-45.1981\\-219.5218\\-23\\-44.37714\\-221.1459\\-23\\-43.6841\\-223.099\\-23\\-44.55576\\-225.0521\\-23\\-45.1981\\-226.1151\\-23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "300"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-157.1724\\-23\\-39.33873\\-155.9552\\-23\\-41.29185\\-155.382\\-23\\-43.24498\\-153.787\\-23\\-44.28631\\-152.7865\\-23\\-45.33761\\-150.8334\\-23\\-46.17466\\-148.8803\\-23\\-47.15123\\-147.8982\\-23\\-49.10435\\-147.1746\\-23\\-51.05748\\-148.2273\\-23\\-52.91957\\-146.9271\\-23\\-51.81369\\-144.974\\-23\\-51.05748\\-144.2178\\-23\\-49.10435\\-143.6559\\-23\\-47.78377\\-143.0209\\-23\\-47.15123\\-142.4223\\-23\\-46.42722\\-141.0678\\-23\\-46.01733\\-139.1146\\-23\\-44.82108\\-137.1615\\-23\\-44.05787\\-135.2084\\-23\\-43.24498\\-134.3816\\-23\\-41.29185\\-132.7095\\-23\\-39.33873\\-131.9652\\-23\\-37.3856\\-130.5317\\-23\\-35.43248\\-129.802\\-23\\-33.47935\\-129.7837\\-23\\-31.52623\\-128.6246\\-23\\-29.5731\\-127.8118\\-23\\-27.61998\\-127.8118\\-23\\-25.66685\\-128.3979\\-23\\-23.71373\\-129.5234\\-23\\-21.7606\\-130.3305\\-23\\-18.93995\\-133.2553\\-23\\-17.85435\\-135.2907\\-23\\-17.07798\\-137.1615\\-23\\-16.44744\\-139.1146\\-23\\-15.70179\\-141.0678\\-23\\-12.24246\\-144.974\\-23\\-12.15892\\-146.9271\\-23\\-11.12286\\-148.8803\\-23\\-11.59505\\-150.8334\\-23\\-11.99498\\-151.1152\\-23\\-13.9481\\-149.8852\\-23\\-14.85308\\-148.8803\\-23\\-15.90123\\-147.3039\\-23\\-17.85435\\-147.6351\\-23\\-18.60142\\-148.8803\\-23\\-19.54482\\-150.8334\\-23\\-21.03373\\-152.7865\\-23\\-23.71373\\-155.4565\\-23\\-25.66685\\-156.7875\\-23\\-27.61998\\-157.3317\\-23\\-29.5731\\-157.4918\\-23\\-33.47935\\-157.4979\\-23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "34"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "301"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "30.97377\\-235.3968\\-23\\27.06752\\-233.9508\\-23\\25.1144\\-233.3478\\-23\\23.16127\\-233.4291\\-23\\21.20815\\-233.2568\\-23\\19.25502\\-232.8728\\-23\\17.3019\\-231.9436\\-23\\16.19433\\-230.9115\\-23\\18.77784\\-228.9584\\-23\\21.20815\\-227.8925\\-23\\23.16127\\-226.7936\\-23\\25.1144\\-226.011\\-23\\27.06752\\-224.5972\\-23\\29.02065\\-223.6345\\-23\\30.97377\\-222.0842\\-23\\32.9269\\-220.3263\\-23\\34.96807\\-219.1928\\-23\\38.16992\\-217.2396\\-23\\38.78627\\-216.7811\\-23\\40.7394\\-216.9684\\-23\\42.69252\\-218.6726\\-23\\43.83185\\-219.1928\\-23\\44.64565\\-219.744\\-23\\46.25517\\-221.1459\\-23\\45.94065\\-223.099\\-23\\44.64565\\-224.709\\-23\\44.11131\\-227.0053\\-23\\42.69252\\-228.4797\\-23\\42.41509\\-228.9584\\-23\\40.59676\\-230.9115\\-23\\38.4258\\-234.8178\\-23\\36.83315\\-236.1075\\-23\\34.88002\\-236.4175\\-23\\32.9269\\-236.5221\\-23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "302"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-164.754\\-23\\50.99331\\-164.5053\\-23\\50.50502\\-164.1537\\-23\\49.3274\\-162.5521\\-23\\50.50502\\-161.3009\\-23\\52.45815\\-160.9859\\-23\\53.14174\\-160.599\\-23\\56.3644\\-159.7905\\-23\\57.38123\\-160.599\\-23\\57.65292\\-162.5521\\-23\\56.3644\\-163.6566\\-23\\54.41127\\-163.1518\\-23\\52.95564\\-164.5053\\-23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002313"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "97"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "303"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-208.0585\\-23\\53.53459\\-207.474\\-23\\52.96848\\-205.5209\\-23\\53.52657\\-203.5678\\-23\\54.27584\\-201.6146\\-23\\54.30277\\-197.7084\\-23\\53.85413\\-195.7553\\-23\\55.22931\\-193.8021\\-23\\56.25589\\-191.849\\-23\\56.28363\\-189.8959\\-23\\57.31985\\-187.9428\\-23\\58.16891\\-185.9896\\-23\\59.39174\\-184.0365\\-23\\59.07165\\-182.0834\\-23\\58.31752\\-181.2849\\-23\\56.43013\\-180.1303\\-23\\56.67004\\-178.1771\\-23\\56.71092\\-176.224\\-23\\56.26966\\-174.2709\\-23\\56.3644\\-174.1488\\-23\\58.31752\\-174.5261\\-23\\58.99816\\-174.2709\\-23\\59.96732\\-172.3178\\-23\\59.97904\\-166.4584\\-23\\59.59171\\-164.5053\\-23\\60.27065\\-163.9011\\-23\\61.07867\\-162.5521\\-23\\61.3761\\-160.599\\-23\\62.22377\\-159.7108\\-23\\64.1769\\-159.1078\\-23\\66.13003\\-157.8296\\-23\\68.08315\\-157.3137\\-23\\70.03628\\-157.1896\\-23\\71.9894\\-157.8389\\-23\\73.94253\\-159.1167\\-23\\77.84878\\-159.5015\\-23\\79.36307\\-160.599\\-23\\80.84717\\-162.5521\\-23\\83.70815\\-165.4157\\-23\\84.65247\\-166.4584\\-23\\84.47995\\-168.4115\\-23\\83.70815\\-169.1592\\-23\\81.75503\\-169.9557\\-23\\79.8019\\-171.294\\-23\\78.73163\\-172.3178\\-23\\78.51503\\-174.2709\\-23\\79.8019\\-175.1768\\-23\\80.97234\\-176.224\\-23\\82.28937\\-178.1771\\-23\\82.96024\\-180.1303\\-23\\83.19447\\-182.0834\\-23\\83.54656\\-184.0365\\-23\\83.70815\\-184.2148\\-23\\85.66128\\-187.63\\-23\\85.93741\\-187.9428\\-23\\86.94036\\-189.8959\\-23\\87.6144\\-190.6521\\-23\\89.56753\\-191.4596\\-23\\90.02666\\-191.849\\-23\\90.57542\\-193.8021\\-23\\89.56753\\-195.2746\\-23\\89.04168\\-195.7553\\-23\\87.6144\\-196.683\\-23\\85.66128\\-196.0914\\-23\\83.70815\\-196.562\\-23\\81.75503\\-197.7311\\-23\\79.8019\\-198.5183\\-23\\77.75383\\-199.6615\\-23\\75.89565\\-200.3547\\-23\\73.94253\\-201.3483\\-23\\71.9894\\-201.1417\\-23\\70.54552\\-199.6615\\-23\\69.66929\\-197.7084\\-23\\69.62988\\-193.8021\\-23\\69.66929\\-191.849\\-23\\70.65514\\-189.8959\\-23\\71.24992\\-187.9428\\-23\\71.70757\\-184.0365\\-23\\71.67367\\-182.0834\\-23\\70.03628\\-181.0313\\-23\\68.08315\\-182.2055\\-23\\66.13003\\-182.2188\\-23\\64.1769\\-182.9185\\-23\\62.22377\\-183.4418\\-23\\61.28178\\-184.0365\\-23\\60.58546\\-185.9896\\-23\\59.40323\\-187.9428\\-23\\58.59935\\-189.8959\\-23\\58.31752\\-191.2081\\-23\\57.1782\\-191.849\\-23\\58.11245\\-193.8021\\-23\\58.16891\\-197.7084\\-23\\58.55325\\-199.6615\\-23\\59.7479\\-203.5678\\-23\\59.96965\\-205.5209\\-23\\58.31752\\-206.7838\\-23\\56.3644\\-207.3655\\-23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "169"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "304"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-53.0106\\-227.5592\\-21\\-54.96373\\-226.1876\\-21\\-56.91685\\-225.2759\\-21\\-59.09534\\-223.099\\-21\\-60.33482\\-221.1459\\-21\\-60.8231\\-220.5966\\-21\\-62.77623\\-218.8217\\-21\\-64.72935\\-217.8117\\-21\\-65.3374\\-217.2396\\-21\\-66.33595\\-215.2865\\-21\\-66.43833\\-213.3334\\-21\\-66.15406\\-211.3803\\-21\\-65.46329\\-209.4271\\-21\\-64.19847\\-207.474\\-21\\-62.49623\\-205.5209\\-21\\-60.48701\\-203.5678\\-21\\-60.46628\\-201.6146\\-21\\-59.9268\\-199.6615\\-21\\-59.16294\\-197.7084\\-21\\-58.86998\\-196.3767\\-21\\-58.46786\\-195.7553\\-21\\-58.86998\\-195.1338\\-21\\-59.16491\\-193.8021\\-21\\-59.91133\\-191.849\\-21\\-61.74802\\-189.8959\\-21\\-62.81437\\-187.9428\\-21\\-63.67012\\-185.9896\\-21\\-65.66708\\-184.0365\\-21\\-66.68247\\-183.1732\\-21\\-68.6356\\-182.5207\\-21\\-70.58872\\-181.0116\\-21\\-72.54185\\-179.2539\\-21\\-74.49497\\-179.2344\\-21\\-75.10056\\-180.1303\\-21\\-74.49497\\-180.7497\\-21\\-71.89597\\-184.0365\\-21\\-70.82943\\-185.9896\\-21\\-69.35319\\-187.9428\\-21\\-68.37651\\-189.8959\\-21\\-67.91329\\-193.8021\\-21\\-68.33163\\-197.7084\\-21\\-68.36507\\-203.5678\\-21\\-69.62116\\-205.5209\\-21\\-70.38929\\-207.474\\-21\\-71.57017\\-209.4271\\-21\\-77.4295\\-215.2865\\-21\\-78.40122\\-216.2212\\-21\\-80.35435\\-217.0158\\-21\\-82.30747\\-218.1557\\-21\\-84.2606\\-218.9811\\-21\\-86.21372\\-219.0058\\-21\\-88.16685\\-219.3544\\-21\\-90.11997\\-219.5871\\-21\\-92.0731\\-219.2593\\-21\\-94.02622\\-218.6554\\-21\\-97.93247\\-217.0279\\-21\\-101.8387\\-217.0039\\-21\\-103.7918\\-216.0124\\-21\\-107.6981\\-213.4783\\-21\\-110.0802\\-211.3803\\-21\\-111.6043\\-209.9241\\-21\\-113.5575\\-209.2222\\-21\\-115.5106\\-209.0589\\-21\\-117.4637\\-209.2876\\-21\\-119.4168\\-209.6321\\-21\\-121.37\\-210.4508\\-21\\-123.3231\\-212.1103\\-21\\-124.082\\-213.3334\\-21\\-125.2762\\-214.4409\\-21\\-127.2293\\-216.0381\\-21\\-129.1825\\-216.5321\\-21\\-133.0887\\-216.513\\-21\\-135.0419\\-215.8818\\-21\\-136.995\\-214.2638\\-21\\-138.9481\\-212.9672\\-21\\-140.3839\\-211.3803\\-21\\-141.1298\\-209.4271\\-21\\-141.6735\\-207.474\\-21\\-142.0398\\-205.5209\\-21\\-142.5078\\-203.5678\\-21\\-141.5997\\-201.6146\\-21\\-140.9012\\-201.0195\\-21\\-138.9481\\-201.0973\\-21\\-136.995\\-201.4926\\-21\\-135.0419\\-201.5771\\-21\\-133.0887\\-201.9446\\-21\\-131.1356\\-202.7964\\-21\\-129.6774\\-203.5678\\-21\\-129.1825\\-204.0696\\-21\\-127.2293\\-205.3146\\-21\\-123.3231\\-205.4185\\-21\\-117.4637\\-205.3146\\-21\\-115.5106\\-203.839\\-21\\-115.4264\\-203.5678\\-21\\-112.3086\\-199.6615\\-21\\-111.5084\\-197.7084\\-21\\-110.5948\\-195.7553\\-21\\-109.3137\\-193.8021\\-21\\-107.6981\\-192.0157\\-21\\-105.745\\-191.7964\\-21\\-103.7918\\-191.2039\\-21\\-101.8387\\-191.1689\\-21\\-99.8856\\-190.8404\\-21\\-97.93247\\-190.3809\\-21\\-95.97935\\-190.9464\\-21\\-94.02622\\-191.6133\\-21\\-92.0731\\-191.9711\\-21\\-90.11997\\-190.757\\-21\\-89.56602\\-189.8959\\-21\\-88.55616\\-187.9428\\-21\\-86.87736\\-185.9896\\-21\\-85.56785\\-184.0365\\-21\\-85.40793\\-182.0834\\-21\\-85.40793\\-180.1303\\-21\\-85.29142\\-178.1771\\-21\\-84.2606\\-177.024\\-21\\-82.55456\\-176.224\\-21\\-82.83589\\-174.2709\\-21\\-84.2606\\-173.2256\\-21\\-85.19186\\-172.3178\\-21\\-85.72544\\-170.3646\\-21\\-85.52651\\-168.4115\\-21\\-84.88002\\-166.4584\\-21\\-83.54811\\-164.5053\\-21\\-82.69682\\-162.5521\\-21\\-81.47997\\-160.599\\-21\\-80.35435\\-159.4303\\-21\\-78.40122\\-157.986\\-21\\-76.4481\\-157.4089\\-21\\-74.49497\\-157.1896\\-21\\-72.54185\\-157.6646\\-21\\-70.58872\\-159.0989\\-21\\-68.6356\\-159.1342\\-21\\-66.68247\\-159.5973\\-21\\-65.6088\\-160.599\\-21\\-65.08009\\-162.5521\\-21\\-64.7672\\-164.5053\\-21\\-64.34241\\-166.4584\\-21\\-64.30398\\-168.4115\\-21\\-63.87786\\-170.3646\\-21\\-62.85886\\-172.3178\\-21\\-62.36983\\-174.2709\\-21\\-62.35085\\-176.224\\-21\\-62.16254\\-178.1771\\-21\\-61.57703\\-180.1303\\-21\\-60.46628\\-182.0834\\-21\\-60.46628\\-184.0365\\-21\\-60.19831\\-185.9896\\-21\\-59.67505\\-187.9428\\-21\\-57.83238\\-189.8959\\-21\\-56.82211\\-191.849\\-21\\-56.79478\\-193.8021\\-21\\-56.43745\\-195.7553\\-21\\-55.29982\\-199.6615\\-21\\-53.71313\\-203.5678\\-21\\-52.12775\\-205.5209\\-21\\-51.35241\\-207.474\\-21\\-50.18649\\-209.4271\\-21\\-48.72342\\-213.3334\\-21\\-47.66029\\-215.2865\\-21\\-45.75984\\-217.2396\\-21\\-46.34647\\-219.1928\\-21\\-45.8412\\-221.1459\\-21\\-45.00279\\-223.099\\-21\\-44.86201\\-227.0053\\-21\\-45.1981\\-227.3698\\-21\\-47.15123\\-228.2083\\-21\\-49.10435\\-228.0702\\-21\\-51.05748\\-228.0512\\-21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "305"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-157.1636\\-21\\-39.33873\\-155.6987\\-21\\-41.29185\\-155.2193\\-21\\-43.24498\\-153.787\\-21\\-44.28631\\-152.7865\\-21\\-46.03439\\-150.8334\\-21\\-46.69824\\-148.8803\\-21\\-47.15123\\-148.3581\\-21\\-49.10435\\-146.8186\\-21\\-51.05748\\-147.9601\\-21\\-52.89986\\-146.9271\\-21\\-52.01878\\-144.974\\-21\\-51.05748\\-144.0512\\-21\\-49.10435\\-143.0285\\-21\\-47.21781\\-141.0678\\-21\\-46.60501\\-139.1146\\-21\\-45.82156\\-137.1615\\-21\\-44.60344\\-135.2084\\-21\\-43.24498\\-133.7257\\-21\\-41.29185\\-132.2692\\-21\\-39.33873\\-131.5138\\-21\\-37.3856\\-130.3448\\-21\\-35.43248\\-129.802\\-21\\-33.47935\\-129.7837\\-21\\-31.52623\\-128.6206\\-21\\-29.5731\\-127.8306\\-21\\-27.61998\\-127.8213\\-21\\-25.66685\\-128.0523\\-21\\-23.71373\\-128.8116\\-21\\-21.7606\\-129.9806\\-21\\-19.80748\\-131.5183\\-21\\-17.85435\\-134.8322\\-21\\-17.54836\\-135.2084\\-21\\-16.04983\\-139.1146\\-21\\-15.12101\\-141.0678\\-21\\-13.09217\\-143.0209\\-21\\-12.20668\\-144.974\\-21\\-12.17183\\-146.9271\\-21\\-11.12286\\-148.8803\\-21\\-11.59505\\-150.8334\\-21\\-11.99498\\-151.1152\\-21\\-13.9481\\-149.544\\-21\\-14.45685\\-148.8803\\-21\\-15.23716\\-146.9271\\-21\\-15.90123\\-146.2743\\-21\\-17.85435\\-146.978\\-21\\-18.71171\\-148.8803\\-21\\-20.54885\\-150.8334\\-21\\-21.7606\\-152.3363\\-21\\-24.21983\\-154.7396\\-21\\-25.66685\\-155.841\\-21\\-27.61998\\-156.7875\\-21\\-29.5731\\-157.1724\\-21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "32"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "306"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "34.88002\\-235.6556\\-21\\33.40501\\-234.8178\\-21\\30.97377\\-233.0349\\-21\\29.02065\\-232.656\\-21\\25.1144\\-230.6243\\-21\\23.16127\\-231.1312\\-21\\21.20815\\-231.0792\\-21\\20.74699\\-230.9115\\-21\\21.20815\\-230.5506\\-21\\22.35256\\-228.9584\\-21\\23.16127\\-228.4559\\-21\\25.07684\\-227.0053\\-21\\28.89123\\-225.0521\\-21\\30.97377\\-223.81\\-21\\33.66528\\-221.1459\\-21\\38.78627\\-216.7107\\-21\\40.7394\\-215.9801\\-21\\42.69252\\-216.4365\\-21\\44.64565\\-216.6189\\-21\\46.59877\\-215.5286\\-21\\48.5519\\-214.084\\-21\\50.50502\\-213.4699\\-21\\51.81468\\-215.2865\\-21\\52.194\\-217.2396\\-21\\52.00371\\-219.1928\\-21\\50.50502\\-221.6799\\-21\\48.82271\\-225.0521\\-21\\47.22656\\-227.0053\\-21\\43.32031\\-230.9115\\-21\\40.7394\\-233.1291\\-21\\38.78627\\-235.152\\-21\\36.83315\\-235.9552\\-21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "307"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-209.5356\\-21\\52.25871\\-207.474\\-21\\52.27115\\-205.5209\\-21\\52.45815\\-205.2673\\-21\\54.23689\\-201.6146\\-21\\54.30277\\-197.7084\\-21\\53.91657\\-195.7553\\-21\\56.25589\\-191.849\\-21\\56.28363\\-189.8959\\-21\\57.33559\\-187.9428\\-21\\58.18982\\-185.9896\\-21\\58.91044\\-185.9896\\-21\\59.23399\\-187.9428\\-21\\58.55325\\-189.8959\\-21\\58.31752\\-191.2105\\-21\\57.27993\\-191.849\\-21\\58.15757\\-193.8021\\-21\\58.20902\\-197.7084\\-21\\59.0575\\-199.6615\\-21\\59.68361\\-201.6146\\-21\\61.1935\\-205.5209\\-21\\61.30825\\-207.474\\-21\\60.27065\\-208.0311\\-21\\58.31752\\-207.8711\\-21\\56.3644\\-208.3778\\-21\\54.41127\\-209.8334\\-21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002312"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "84"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "308"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "71.9894\\-202.1803\\-21\\71.41673\\-201.6146\\-21\\70.46963\\-199.6615\\-21\\69.64934\\-195.7553\\-21\\69.67945\\-191.849\\-21\\70.69672\\-189.8959\\-21\\71.30522\\-187.9428\\-21\\71.68543\\-184.0365\\-21\\71.67367\\-182.0834\\-21\\70.03628\\-181.0313\\-21\\68.08315\\-182.2055\\-21\\66.13003\\-182.2055\\-21\\62.22377\\-182.8006\\-21\\60.27065\\-182.5991\\-21\\59.93805\\-182.0834\\-21\\58.31752\\-180.7362\\-21\\56.3644\\-181.5362\\-21\\54.80344\\-180.1303\\-21\\55.93105\\-176.224\\-21\\56.26966\\-174.2709\\-21\\57.03257\\-174.2709\\-21\\58.31752\\-174.9889\\-21\\59.05734\\-174.2709\\-21\\59.94789\\-172.3178\\-21\\59.99065\\-170.3646\\-21\\59.50939\\-168.4115\\-21\\59.6626\\-166.4584\\-21\\58.31752\\-165.2702\\-21\\57.45862\\-166.4584\\-21\\56.3644\\-167.3152\\-21\\54.41127\\-166.666\\-21\\51.0853\\-164.5053\\-21\\52.45815\\-162.5721\\-21\\54.41127\\-163.2888\\-21\\54.77642\\-162.5521\\-21\\55.00981\\-160.599\\-21\\56.3644\\-159.7362\\-21\\57.88219\\-160.599\\-21\\58.31752\\-161.0143\\-21\\59.00716\\-162.5521\\-21\\60.27065\\-164.4671\\-21\\61.55399\\-162.5521\\-21\\61.82705\\-160.599\\-21\\62.22377\\-160.1069\\-21\\64.1769\\-158.3599\\-21\\66.13003\\-157.5359\\-21\\68.08315\\-157.181\\-21\\70.03628\\-157.1896\\-21\\71.9894\\-157.6693\\-21\\73.94253\\-158.8329\\-21\\75.89565\\-159.4873\\-21\\77.84878\\-159.4722\\-21\\79.8019\\-159.9283\\-21\\80.44778\\-160.599\\-21\\81.75503\\-162.2572\\-21\\83.99976\\-164.5053\\-21\\85.11555\\-166.4584\\-21\\84.74125\\-168.4115\\-21\\83.70815\\-169.3418\\-21\\81.75503\\-170.3723\\-21\\79.8019\\-171.3038\\-21\\78.73701\\-172.3178\\-21\\79.4277\\-174.2709\\-21\\79.8019\\-174.5414\\-21\\81.75503\\-175.3479\\-21\\82.55357\\-176.224\\-21\\82.97451\\-178.1771\\-21\\83.58608\\-180.1303\\-21\\83.99011\\-182.0834\\-21\\84.50065\\-184.0365\\-21\\85.17592\\-185.9896\\-21\\86.41714\\-187.9428\\-21\\87.9562\\-189.8959\\-21\\90.42767\\-191.849\\-21\\90.44939\\-193.8021\\-21\\88.9183\\-195.7553\\-21\\87.6144\\-197.0592\\-21\\85.66128\\-196.7318\\-21\\83.70815\\-196.7919\\-21\\81.75503\\-197.775\\-21\\79.8019\\-198.5291\\-21\\77.84878\\-199.9433\\-21\\75.89565\\-200.8121\\-21\\73.94253\\-202.4672\\-21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "24"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "309"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-135.0419\\-214.1947\\-19\\-136.995\\-212.9466\\-19\\-138.9481\\-211.9582\\-19\\-139.4693\\-211.3803\\-19\\-139.9778\\-209.4271\\-19\\-140.3785\\-207.474\\-19\\-141.6436\\-205.5209\\-19\\-141.9344\\-203.5678\\-19\\-141.7852\\-201.6146\\-19\\-140.9012\\-200.6225\\-19\\-138.9481\\-200.5324\\-19\\-136.995\\-201.1146\\-19\\-135.0419\\-201.9186\\-19\\-133.0887\\-202.9292\\-19\\-132.397\\-203.5678\\-19\\-131.1356\\-205.9623\\-19\\-129.6029\\-207.474\\-19\\-127.4037\\-209.4271\\-19\\-125.8437\\-211.3803\\-19\\-125.7645\\-213.3334\\-19\\-127.2293\\-214.5001\\-19\\-129.1825\\-215.0359\\-19\\-131.1356\\-215.1293\\-19\\-133.0887\\-215.0978\\-19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "139"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "310"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-53.0106\\-227.8294\\-19\\-54.96373\\-226.391\\-19\\-56.91685\\-225.8719\\-19\\-59.69734\\-223.099\\-19\\-60.8231\\-221.7481\\-19\\-62.77623\\-219.7976\\-19\\-65.79623\\-217.2396\\-19\\-67.43683\\-215.2865\\-19\\-67.88847\\-213.3334\\-19\\-67.41067\\-211.3803\\-19\\-66.09544\\-209.4271\\-19\\-65.48421\\-207.474\\-19\\-64.72935\\-206.6982\\-19\\-62.77623\\-205.1242\\-19\\-60.8231\\-203.88\\-19\\-60.51914\\-203.5678\\-19\\-60.46628\\-201.6146\\-19\\-60.19493\\-199.6615\\-19\\-59.76802\\-197.7084\\-19\\-58.86998\\-194.4092\\-19\\-57.62215\\-193.8021\\-19\\-58.86998\\-193.5498\\-19\\-59.63834\\-191.849\\-19\\-61.35961\\-189.8959\\-19\\-61.92243\\-187.9428\\-19\\-61.55552\\-185.9896\\-19\\-62.77623\\-185.4262\\-19\\-64.72935\\-184.3425\\-19\\-66.68247\\-183.0327\\-19\\-68.6356\\-182.1642\\-19\\-72.2249\\-180.1303\\-19\\-72.54185\\-179.8776\\-19\\-73.05804\\-180.1303\\-19\\-73.42841\\-182.0834\\-19\\-72.12332\\-184.0365\\-19\\-70.96432\\-185.9896\\-19\\-68.83091\\-187.9428\\-19\\-68.36507\\-189.8959\\-19\\-68.33163\\-193.8021\\-19\\-68.34263\\-201.6146\\-19\\-68.78421\\-203.5678\\-19\\-69.77013\\-205.5209\\-19\\-70.41434\\-207.474\\-19\\-71.57017\\-209.4271\\-19\\-77.4295\\-215.2865\\-19\\-78.40122\\-216.2212\\-19\\-80.35435\\-217.0158\\-19\\-82.30747\\-218.1557\\-19\\-84.2606\\-218.9811\\-19\\-86.21372\\-218.9933\\-19\\-88.16685\\-219.6724\\-19\\-90.11997\\-219.988\\-19\\-92.0731\\-219.5183\\-19\\-94.02622\\-218.2011\\-19\\-95.97935\\-217.7016\\-19\\-99.8856\\-217.0158\\-19\\-101.8387\\-216.7309\\-19\\-103.7918\\-215.8014\\-19\\-105.745\\-214.2834\\-19\\-106.7732\\-213.3334\\-19\\-108.0497\\-211.3803\\-19\\-109.2163\\-209.4271\\-19\\-111.0111\\-207.474\\-19\\-111.1824\\-205.5209\\-19\\-110.3649\\-203.5678\\-19\\-110.4584\\-201.6146\\-19\\-109.7985\\-197.7084\\-19\\-109.13\\-195.7553\\-19\\-107.9992\\-193.8021\\-19\\-107.6981\\-193.5154\\-19\\-103.7918\\-192.076\\-19\\-101.8387\\-191.6496\\-19\\-97.93247\\-191.1922\\-19\\-95.97935\\-191.2032\\-19\\-94.02622\\-191.3549\\-19\\-92.0731\\-192.4679\\-19\\-90.32809\\-191.849\\-19\\-90.11997\\-191.6049\\-19\\-89.59723\\-189.8959\\-19\\-88.8307\\-187.9428\\-19\\-87.14356\\-185.9896\\-19\\-85.76074\\-184.0365\\-19\\-85.75176\\-180.1303\\-19\\-85.46362\\-178.1771\\-19\\-84.2606\\-176.932\\-19\\-82.46818\\-176.224\\-19\\-82.8161\\-174.2709\\-19\\-84.2606\\-173.2256\\-19\\-85.19186\\-172.3178\\-19\\-85.73412\\-170.3646\\-19\\-85.70841\\-168.4115\\-19\\-85.26575\\-166.4584\\-19\\-84.11199\\-164.5053\\-19\\-83.33243\\-162.5521\\-19\\-82.30747\\-160.7022\\-19\\-79.79335\\-158.6459\\-19\\-78.40122\\-157.7413\\-19\\-76.4481\\-157.2147\\-19\\-74.49497\\-157.181\\-19\\-72.54185\\-157.6646\\-19\\-70.58872\\-159.1078\\-19\\-68.6356\\-159.2986\\-19\\-66.68247\\-160.3567\\-19\\-66.45712\\-160.599\\-19\\-65.95005\\-162.5521\\-19\\-65.6312\\-164.5053\\-19\\-64.81136\\-166.4584\\-19\\-64.33262\\-168.4115\\-19\\-64.13701\\-170.3646\\-19\\-63.69012\\-172.3178\\-19\\-62.85823\\-174.2709\\-19\\-62.36028\\-176.224\\-19\\-62.34154\\-178.1771\\-19\\-61.79098\\-180.1303\\-19\\-60.50829\\-182.0834\\-19\\-61.00501\\-184.0365\\-19\\-60.52817\\-185.9896\\-19\\-59.58988\\-187.9428\\-19\\-58.86998\\-188.6112\\-19\\-57.83734\\-189.8959\\-19\\-56.86467\\-191.849\\-19\\-56.82211\\-193.8021\\-19\\-56.00441\\-195.7553\\-19\\-55.29982\\-197.7084\\-19\\-54.91154\\-199.6615\\-19\\-53.29243\\-203.5678\\-19\\-51.88593\\-205.5209\\-19\\-50.67561\\-207.474\\-19\\-49.77195\\-209.4271\\-19\\-48.21412\\-211.3803\\-19\\-48.13282\\-213.3334\\-19\\-47.83418\\-215.2865\\-19\\-47.88108\\-217.2396\\-19\\-48.81829\\-219.1928\\-19\\-47.8364\\-221.1459\\-19\\-45.25028\\-227.0053\\-19\\-47.15123\\-228.6654\\-19\\-49.10435\\-228.3298\\-19\\-51.05748\\-228.3228\\-19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "311"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-157.1636\\-19\\-39.33873\\-155.6987\\-19\\-41.29185\\-155.2193\\-19\\-43.24498\\-153.787\\-19\\-46.25096\\-150.8334\\-19\\-46.89214\\-148.8803\\-19\\-48.38509\\-146.9271\\-19\\-49.10435\\-146.2561\\-19\\-51.05748\\-147.2168\\-19\\-51.83429\\-146.9271\\-19\\-52.50354\\-144.974\\-19\\-51.05748\\-143.6923\\-19\\-49.10435\\-142.2946\\-19\\-48.00776\\-141.0678\\-19\\-47.20341\\-139.1146\\-19\\-45.1981\\-135.2176\\-19\\-43.77708\\-133.2553\\-19\\-43.24498\\-132.746\\-19\\-41.29185\\-131.9549\\-19\\-39.33873\\-130.7577\\-19\\-37.3856\\-129.9948\\-19\\-35.43248\\-129.7929\\-19\\-33.47935\\-129.7837\\-19\\-31.52623\\-128.8577\\-19\\-29.5731\\-128.2246\\-19\\-25.66685\\-128.2246\\-19\\-23.71373\\-128.7869\\-19\\-21.7606\\-129.7929\\-19\\-19.80748\\-130.5685\\-19\\-19.07379\\-131.3021\\-19\\-18.35412\\-133.2553\\-19\\-17.10431\\-135.2084\\-19\\-16.42318\\-137.1615\\-19\\-16.04983\\-139.1146\\-19\\-14.73917\\-141.0678\\-19\\-12.5407\\-143.0209\\-19\\-12.16936\\-144.974\\-19\\-12.18372\\-146.9271\\-19\\-11.12286\\-148.8803\\-19\\-11.59505\\-150.8334\\-19\\-11.99498\\-151.1152\\-19\\-12.38743\\-150.8334\\-19\\-14.18382\\-148.8803\\-19\\-15.02482\\-146.9271\\-19\\-15.90123\\-146.0975\\-19\\-17.85435\\-147.0356\\-19\\-18.71171\\-148.8803\\-19\\-23.71373\\-153.8677\\-19\\-25.66685\\-155.3539\\-19\\-27.61998\\-156.0398\\-19\\-29.5731\\-157.181\\-19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "312"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "36.81145\\-234.8178\\-19\\34.88002\\-234.2057\\-19\\32.9269\\-233.0119\\-19\\30.97377\\-231.5347\\-19\\29.58074\\-230.9115\\-19\\27.28036\\-228.9584\\-19\\28.81407\\-227.0053\\-19\\30.97377\\-225.7943\\-19\\39.55684\\-217.2396\\-19\\40.7394\\-216.2816\\-19\\42.69252\\-215.7574\\-19\\44.64565\\-215.0356\\-19\\46.59877\\-214.043\\-19\\48.5519\\-212.3889\\-19\\50.50502\\-210.9881\\-19\\51.56514\\-209.4271\\-19\\52.25871\\-207.474\\-19\\52.27115\\-205.5209\\-19\\53.13816\\-203.5678\\-19\\53.73917\\-201.6146\\-19\\54.26266\\-197.7084\\-19\\54.2892\\-195.7553\\-19\\56.25589\\-191.849\\-19\\56.28363\\-189.8959\\-19\\58.31752\\-185.8501\\-19\\60.27065\\-185.6641\\-19\\60.43224\\-185.9896\\-19\\59.38612\\-187.9428\\-19\\59.03173\\-189.8959\\-19\\58.84336\\-191.849\\-19\\58.22278\\-195.7553\\-19\\58.61049\\-197.7084\\-19\\60.08365\\-201.6146\\-19\\61.03761\\-203.5678\\-19\\63.16068\\-207.474\\-19\\62.22377\\-209.3197\\-19\\60.27065\\-209.1123\\-19\\58.31752\\-208.6595\\-19\\56.3644\\-209.7131\\-19\\52.94643\\-211.3803\\-19\\52.45815\\-212.0778\\-19\\51.9445\\-213.3334\\-19\\53.17505\\-215.2865\\-19\\53.92651\\-217.2396\\-19\\53.90207\\-219.1928\\-19\\53.033\\-221.1459\\-19\\51.63068\\-223.099\\-19\\50.56774\\-225.0521\\-19\\48.86805\\-227.0053\\-19\\46.59877\\-229.2404\\-19\\44.48406\\-230.9115\\-19\\42.69252\\-232.0644\\-19\\40.7394\\-233.6469\\-19\\38.78627\\-234.5703\\-19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002311"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "73"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "313"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "71.9894\\-202.4704\\-19\\71.1731\\-201.6146\\-19\\70.85835\\-199.6615\\-19\\70.92355\\-197.7084\\-19\\70.38456\\-195.7553\\-19\\70.35017\\-193.8021\\-19\\69.99871\\-191.849\\-19\\70.07442\\-189.8959\\-19\\70.47105\\-187.9428\\-19\\71.9894\\-181.9362\\-19\\70.03628\\-181.0262\\-19\\68.08315\\-182.2188\\-19\\66.13003\\-182.245\\-19\\62.22377\\-182.8429\\-19\\61.09436\\-182.0834\\-19\\59.48779\\-180.1303\\-19\\59.83066\\-178.1771\\-19\\59.84747\\-174.2709\\-19\\59.98817\\-172.3178\\-19\\59.74422\\-170.3646\\-19\\58.31752\\-168.83\\-19\\57.5513\\-168.4115\\-19\\56.10088\\-166.4584\\-19\\56.01563\\-164.5053\\-19\\56.3644\\-162.4148\\-19\\58.31752\\-161.0906\\-19\\59.31192\\-162.5521\\-19\\58.73004\\-164.5053\\-19\\60.27065\\-166.6415\\-19\\61.44638\\-164.5053\\-19\\62.34675\\-162.5521\\-19\\62.27596\\-160.599\\-19\\63.00613\\-158.6459\\-19\\64.1769\\-157.6358\\-19\\66.13003\\-157.2958\\-19\\68.08315\\-157.1547\\-19\\70.03628\\-157.1547\\-19\\71.9894\\-157.356\\-19\\73.94253\\-158.0704\\-19\\75.89565\\-159.3349\\-19\\77.84878\\-159.4998\\-19\\79.8019\\-159.9051\\-19\\81.75503\\-161.6609\\-19\\84.78385\\-164.5053\\-19\\86.38114\\-166.4584\\-19\\85.20889\\-168.4115\\-19\\83.70815\\-169.3608\\-19\\81.75503\\-170.3873\\-19\\79.8019\\-171.3086\\-19\\78.73701\\-172.3178\\-19\\78.8724\\-174.2709\\-19\\79.8019\\-174.7328\\-19\\81.75503\\-174.8071\\-19\\83.01203\\-176.224\\-19\\83.22854\\-178.1771\\-19\\84.42907\\-180.1303\\-19\\84.8049\\-182.0834\\-19\\84.91337\\-184.0365\\-19\\85.98894\\-185.9896\\-19\\86.78736\\-187.9428\\-19\\87.6144\\-188.9138\\-19\\89.56753\\-190.7993\\-19\\91.04338\\-191.849\\-19\\91.03711\\-193.8021\\-19\\89.56753\\-194.7541\\-19\\87.6144\\-197.0517\\-19\\85.66128\\-197.9884\\-19\\83.70815\\-197.9377\\-19\\81.75503\\-198.3913\\-19\\79.8019\\-199.0988\\-19\\76.72258\\-201.6146\\-19\\75.89565\\-202.422\\-19\\73.94253\\-203.35\\-19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "16"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "314"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-137.1171\\-211.3803\\-17\\-138.5074\\-209.4271\\-17\\-138.9481\\-208.6489\\-17\\-140.2362\\-205.5209\\-17\\-140.6116\\-203.5678\\-17\\-140.617\\-201.6146\\-17\\-138.9481\\-200.4499\\-17\\-136.995\\-201.0657\\-17\\-135.0419\\-202.6575\\-17\\-134.0843\\-203.5678\\-17\\-133.1596\\-205.5209\\-17\\-132.7705\\-207.474\\-17\\-131.4954\\-209.4271\\-17\\-131.2492\\-211.3803\\-17\\-133.0887\\-212.6162\\-17\\-135.0419\\-212.3648\\-17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "83"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "315"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-90.11997\\-219.2593\\-17\\-92.0731\\-218.5923\\-17\\-94.02622\\-217.819\\-17\\-97.93247\\-217.6167\\-17\\-101.8387\\-216.2631\\-17\\-103.3931\\-215.2865\\-17\\-105.9432\\-213.3334\\-17\\-109.2874\\-207.474\\-17\\-108.7178\\-203.5678\\-17\\-109.2165\\-201.6146\\-17\\-109.0829\\-199.6615\\-17\\-108.5843\\-197.7084\\-17\\-107.9698\\-195.7553\\-17\\-106.2019\\-193.8021\\-17\\-105.745\\-193.4723\\-17\\-103.7918\\-192.6823\\-17\\-101.8387\\-191.6373\\-17\\-97.93247\\-191.5899\\-17\\-95.97935\\-191.1052\\-17\\-94.02622\\-190.7742\\-17\\-92.08296\\-191.849\\-17\\-90.11997\\-190.964\\-17\\-88.53619\\-187.9428\\-17\\-87.29612\\-185.9896\\-17\\-86.58984\\-184.0365\\-17\\-86.56823\\-182.0834\\-17\\-86.16154\\-180.1303\\-17\\-85.87764\\-178.1771\\-17\\-84.2606\\-176.7622\\-17\\-83.42231\\-176.224\\-17\\-83.14529\\-174.2709\\-17\\-85.212\\-172.3178\\-17\\-85.77904\\-170.3646\\-17\\-85.76984\\-168.4115\\-17\\-85.55743\\-166.4584\\-17\\-85.0601\\-164.5053\\-17\\-83.8326\\-162.5521\\-17\\-82.97427\\-160.599\\-17\\-82.30747\\-159.9138\\-17\\-80.35435\\-159.1167\\-17\\-78.40122\\-157.7413\\-17\\-76.4481\\-157.2147\\-17\\-74.49497\\-157.181\\-17\\-72.54185\\-157.6506\\-17\\-70.58872\\-159.0806\\-17\\-68.6356\\-159.6122\\-17\\-67.59429\\-160.599\\-17\\-66.68247\\-162.8384\\-17\\-66.13626\\-164.5053\\-17\\-65.64753\\-166.4584\\-17\\-64.82553\\-168.4115\\-17\\-64.33262\\-170.3646\\-17\\-64.13701\\-172.3178\\-17\\-63.53933\\-174.2709\\-17\\-62.36028\\-176.224\\-17\\-62.34154\\-178.1771\\-17\\-61.80399\\-180.1303\\-17\\-61.03604\\-182.0834\\-17\\-62.77623\\-183.5863\\-17\\-64.72935\\-183.3221\\-17\\-66.68247\\-182.8924\\-17\\-68.6356\\-181.6527\\-17\\-70.58872\\-181.0414\\-17\\-72.54185\\-180.7399\\-17\\-73.77341\\-182.0834\\-17\\-71.9966\\-185.9896\\-17\\-68.79556\\-187.9428\\-17\\-69.01427\\-189.8959\\-17\\-68.36507\\-193.8021\\-17\\-68.74574\\-195.7553\\-17\\-68.73106\\-197.7084\\-17\\-68.39988\\-199.6615\\-17\\-68.79836\\-201.6146\\-17\\-69.55821\\-203.5678\\-17\\-70.82445\\-207.474\\-17\\-71.72296\\-209.4271\\-17\\-73.51841\\-211.3803\\-17\\-78.40122\\-216.2119\\-17\\-80.35435\\-216.9921\\-17\\-82.30747\\-218.1464\\-17\\-84.2606\\-218.957\\-17\\-86.21372\\-218.9811\\-17\\-88.16685\\-219.3414\\-17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "316"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-49.10435\\-228.3298\\-17\\-51.05748\\-228.2955\\-17\\-53.0106\\-227.8199\\-17\\-54.96373\\-226.3697\\-17\\-56.91685\\-225.8561\\-17\\-60.8231\\-221.952\\-17\\-62.77623\\-220.1267\\-17\\-64.72935\\-219.2321\\-17\\-66.95213\\-217.2396\\-17\\-68.0588\\-215.2865\\-17\\-68.33163\\-213.3334\\-17\\-67.69952\\-211.3803\\-17\\-66.29554\\-209.4271\\-17\\-65.74294\\-207.474\\-17\\-64.72935\\-206.4884\\-17\\-61.02539\\-203.5678\\-17\\-60.47658\\-201.6146\\-17\\-60.46628\\-199.6615\\-17\\-60.21275\\-197.7084\\-17\\-59.78306\\-195.7553\\-17\\-58.86998\\-192.6059\\-17\\-56.91685\\-193.6122\\-17\\-55.82909\\-195.7553\\-17\\-54.9561\\-197.7084\\-17\\-54.89714\\-199.6615\\-17\\-53.85358\\-201.6146\\-17\\-52.59909\\-203.5678\\-17\\-51.74412\\-205.5209\\-17\\-50.16829\\-207.474\\-17\\-49.28127\\-209.4271\\-17\\-47.98754\\-211.3803\\-17\\-48.19532\\-213.3334\\-17\\-48.62495\\-215.2865\\-17\\-49.56499\\-217.2396\\-17\\-50.23367\\-219.1928\\-17\\-49.69965\\-221.1459\\-17\\-47.52232\\-225.0521\\-17\\-46.06794\\-227.0053\\-17\\-47.06154\\-228.9584\\-17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "317"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-157.1636\\-17\\-39.33873\\-155.6987\\-17\\-41.29185\\-155.2193\\-17\\-43.24498\\-153.787\\-17\\-46.23538\\-150.8334\\-17\\-46.8694\\-148.8803\\-17\\-48.2033\\-146.9271\\-17\\-49.10435\\-146.0353\\-17\\-51.05748\\-146.2705\\-17\\-52.92182\\-144.974\\-17\\-51.05748\\-142.9982\\-17\\-49.10435\\-141.3907\\-17\\-48.83198\\-141.0678\\-17\\-46.60501\\-137.1615\\-17\\-45.78978\\-135.2084\\-17\\-43.24498\\-132.4894\\-17\\-41.29185\\-131.799\\-17\\-39.33873\\-130.5199\\-17\\-37.3856\\-129.802\\-17\\-33.47935\\-129.7837\\-17\\-31.52623\\-129.5106\\-17\\-29.5731\\-129.048\\-17\\-25.66685\\-129.048\\-17\\-21.7606\\-129.811\\-17\\-19.80748\\-130.4899\\-17\\-18.97111\\-131.3021\\-17\\-17.85435\\-133.3414\\-17\\-16.06281\\-137.1615\\-17\\-16.04983\\-139.1146\\-17\\-14.75201\\-141.0678\\-17\\-12.51772\\-143.0209\\-17\\-12.17062\\-144.974\\-17\\-12.21095\\-146.9271\\-17\\-11.12286\\-148.8803\\-17\\-11.59505\\-150.8334\\-17\\-11.99498\\-151.1152\\-17\\-12.38743\\-150.8334\\-17\\-14.1719\\-148.8803\\-17\\-14.94076\\-146.9271\\-17\\-15.90123\\-146.1065\\-17\\-17.2255\\-146.9271\\-17\\-17.85435\\-147.6075\\-17\\-18.61925\\-148.8803\\-17\\-19.80748\\-150.3246\\-17\\-22.26443\\-152.7865\\-17\\-23.71373\\-154.072\\-17\\-25.66685\\-155.2533\\-17\\-27.61998\\-155.8344\\-17\\-29.5731\\-157.181\\-17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002310"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "138"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "318"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "36.83315\\-233.6978\\-17\\35.35854\\-232.8646\\-17\\33.23978\\-230.9115\\-17\\31.31392\\-228.9584\\-17\\32.07369\\-227.0053\\-17\\32.9269\\-226.143\\-17\\33.7407\\-225.0521\\-17\\36.83315\\-221.9442\\-17\\39.19058\\-219.1928\\-17\\40.7394\\-217.6439\\-17\\42.69252\\-216.1708\\-17\\44.64565\\-214.4409\\-17\\46.59877\\-212.5936\\-17\\48.5519\\-211.3137\\-17\\50.50502\\-210.6114\\-17\\51.70302\\-209.4271\\-17\\52.27115\\-207.474\\-17\\52.27115\\-205.5209\\-17\\52.96198\\-201.6146\\-17\\53.37067\\-199.6615\\-17\\53.94086\\-197.7084\\-17\\54.26266\\-195.7553\\-17\\56.25589\\-191.849\\-17\\56.28363\\-189.8959\\-17\\57.31985\\-187.9428\\-17\\58.18209\\-185.9896\\-17\\59.33341\\-184.0365\\-17\\60.05441\\-182.0834\\-17\\60.00011\\-180.1303\\-17\\60.01156\\-174.2709\\-17\\60.51814\\-172.3178\\-17\\60.58877\\-170.3646\\-17\\60.90039\\-168.4115\\-17\\61.83514\\-166.4584\\-17\\62.22377\\-165.922\\-17\\62.79855\\-164.5053\\-17\\63.08373\\-162.5521\\-17\\63.05312\\-160.599\\-17\\63.19042\\-158.6459\\-17\\64.1769\\-157.6594\\-17\\68.08315\\-156.6546\\-17\\70.03628\\-156.7875\\-17\\71.9894\\-157.1724\\-17\\73.94253\\-157.6645\\-17\\75.89565\\-158.7945\\-17\\79.8019\\-160.1901\\-17\\80.21601\\-160.599\\-17\\83.03527\\-162.5521\\-17\\83.70815\\-163.1652\\-17\\85.66128\\-164.2508\\-17\\85.91936\\-164.5053\\-17\\86.89456\\-166.4584\\-17\\86.0736\\-168.4115\\-17\\85.66128\\-168.7706\\-17\\83.70815\\-169.5365\\-17\\81.75503\\-170.6902\\-17\\79.8019\\-171.4744\\-17\\78.85844\\-172.3178\\-17\\77.18762\\-174.2709\\-17\\77.84878\\-175.7093\\-17\\81.75503\\-174.7328\\-17\\83.70815\\-175.7594\\-17\\84.08473\\-176.224\\-17\\84.17232\\-178.1771\\-17\\84.73679\\-180.1303\\-17\\85.07641\\-182.0834\\-17\\84.917\\-184.0365\\-17\\85.22392\\-185.9896\\-17\\86.68501\\-187.9428\\-17\\87.6144\\-188.9771\\-17\\89.56753\\-190.2124\\-17\\91.52065\\-191.1958\\-17\\92.21122\\-191.849\\-17\\92.47233\\-193.8021\\-17\\91.52065\\-194.7599\\-17\\89.56753\\-195.2851\\-17\\89.15534\\-195.7553\\-17\\88.10614\\-197.7084\\-17\\87.6144\\-198.2587\\-17\\85.66128\\-199.6351\\-17\\83.70815\\-199.6527\\-17\\81.75503\\-200.283\\-17\\79.75224\\-201.6146\\-17\\77.84878\\-202.5059\\-17\\75.89565\\-204.3767\\-17\\73.94253\\-204.2095\\-17\\73.2971\\-203.5678\\-17\\71.88089\\-201.6146\\-17\\71.45828\\-199.6615\\-17\\71.49255\\-197.7084\\-17\\71.25117\\-195.7553\\-17\\71.24227\\-193.8021\\-17\\70.87253\\-191.849\\-17\\70.40166\\-189.8959\\-17\\70.47363\\-185.9896\\-17\\71.14887\\-184.0365\\-17\\72.69065\\-182.0834\\-17\\73.07583\\-180.1303\\-17\\71.9894\\-179.5659\\-17\\71.36858\\-180.1303\\-17\\68.08315\\-182.3191\\-17\\66.13003\\-182.5832\\-17\\64.1769\\-183.1031\\-17\\62.68181\\-184.0365\\-17\\62.22377\\-184.4905\\-17\\61.23018\\-185.9896\\-17\\59.36029\\-187.9428\\-17\\59.19199\\-189.8959\\-17\\59.53555\\-191.849\\-17\\58.8956\\-195.7553\\-17\\59.18391\\-197.7084\\-17\\59.73641\\-199.6615\\-17\\60.27065\\-200.9778\\-17\\61.54282\\-203.5678\\-17\\63.1381\\-205.5209\\-17\\63.9899\\-207.474\\-17\\64.27531\\-209.4271\\-17\\62.22377\\-210.8817\\-17\\60.27065\\-210.2174\\-17\\58.31752\\-208.9742\\-17\\56.3644\\-210.0466\\-17\\54.41127\\-210.598\\-17\\52.33775\\-211.3803\\-17\\51.80149\\-213.3334\\-17\\53.09076\\-215.2865\\-17\\55.01177\\-217.2396\\-17\\55.23677\\-219.1928\\-17\\54.23176\\-221.1459\\-17\\53.56688\\-223.099\\-17\\52.43077\\-225.0521\\-17\\50.50502\\-226.131\\-17\\47.1824\\-228.9584\\-17\\46.59877\\-229.5318\\-17\\44.64565\\-230.4468\\-17\\44.10615\\-230.9115\\-17\\41.33185\\-232.8646\\-17\\40.7394\\-233.3874\\-17\\38.78627\\-233.9887\\-17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "319"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-136.995\\-208.4831\\-15\\-137.683\\-207.474\\-15\\-138.9481\\-205.1901\\-15\\-139.5132\\-203.5678\\-15\\-139.0866\\-201.6146\\-15\\-138.9481\\-201.4662\\-15\\-136.995\\-202.4243\\-15\\-135.8214\\-203.5678\\-15\\-134.6833\\-205.5209\\-15\\-134.668\\-207.474\\-15\\-135.0419\\-208.431\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "88"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "320"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-92.0731\\-217.3229\\-15\\-94.02622\\-217.0499\\-15\\-95.97935\\-217.0249\\-15\\-97.93247\\-216.6642\\-15\\-99.8856\\-216.4795\\-15\\-101.8387\\-215.839\\-15\\-103.7918\\-214.294\\-15\\-104.8503\\-213.3334\\-15\\-106.5205\\-211.3803\\-15\\-107.3162\\-209.4271\\-15\\-108.5007\\-207.474\\-15\\-108.3152\\-203.5678\\-15\\-108.863\\-201.6146\\-15\\-108.5656\\-199.6615\\-15\\-107.4257\\-197.7084\\-15\\-106.9219\\-195.7553\\-15\\-105.745\\-194.215\\-15\\-103.7918\\-192.9335\\-15\\-101.8387\\-191.4143\\-15\\-99.8856\\-191.1854\\-15\\-97.93247\\-191.0901\\-15\\-95.97935\\-190.5641\\-15\\-94.02622\\-189.7215\\-15\\-92.0731\\-189.745\\-15\\-90.11997\\-188.7125\\-15\\-89.55103\\-187.9428\\-15\\-88.46344\\-185.9896\\-15\\-87.68867\\-184.0365\\-15\\-87.11391\\-180.1303\\-15\\-87.09702\\-178.1771\\-15\\-86.21372\\-176.9583\\-15\\-84.2606\\-176.749\\-15\\-83.36139\\-176.224\\-15\\-83.39693\\-174.2709\\-15\\-85.59602\\-172.3178\\-15\\-86.77087\\-170.3646\\-15\\-86.69886\\-168.4115\\-15\\-85.54041\\-164.5053\\-15\\-84.89536\\-162.5521\\-15\\-83.19733\\-160.599\\-15\\-82.30747\\-159.7133\\-15\\-80.35435\\-159.1167\\-15\\-78.40122\\-157.7503\\-15\\-76.4481\\-157.239\\-15\\-74.49497\\-157.181\\-15\\-72.54185\\-157.5542\\-15\\-70.58872\\-158.5933\\-15\\-68.6356\\-160.055\\-15\\-68.15599\\-160.599\\-15\\-67.487\\-162.5521\\-15\\-66.35696\\-164.5053\\-15\\-66.12836\\-166.4584\\-15\\-65.66368\\-168.4115\\-15\\-64.82553\\-170.3646\\-15\\-63.74791\\-174.2709\\-15\\-62.3992\\-176.224\\-15\\-62.35085\\-178.1771\\-15\\-61.87779\\-180.1303\\-15\\-62.42999\\-182.0834\\-15\\-62.77623\\-182.3479\\-15\\-64.72935\\-182.6931\\-15\\-66.4536\\-182.0834\\-15\\-68.6356\\-181.0824\\-15\\-72.54185\\-181.0926\\-15\\-74.49497\\-181.9338\\-15\\-74.49497\\-182.2111\\-15\\-73.30249\\-184.0365\\-15\\-72.50215\\-185.9896\\-15\\-70.11341\\-187.9428\\-15\\-69.90266\\-189.8959\\-15\\-69.30377\\-191.849\\-15\\-68.46121\\-193.8021\\-15\\-69.36663\\-195.7553\\-15\\-69.49346\\-197.7084\\-15\\-69.13287\\-199.6615\\-15\\-69.5746\\-201.6146\\-15\\-70.14484\\-203.5678\\-15\\-70.44012\\-205.5209\\-15\\-71.3771\\-207.474\\-15\\-73.66592\\-211.3803\\-15\\-75.48649\\-213.3334\\-15\\-78.40122\\-216.024\\-15\\-80.35435\\-216.7485\\-15\\-82.30747\\-217.9632\\-15\\-84.2606\\-218.6815\\-15\\-86.21372\\-218.9222\\-15\\-88.16685\\-218.6134\\-15\\-90.11997\\-218.031\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "321"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-53.0106\\-227.5311\\-15\\-54.96373\\-226.1485\\-15\\-56.91685\\-225.3227\\-15\\-58.86998\\-223.6913\\-15\\-60.8231\\-221.9466\\-15\\-62.77623\\-220.5411\\-15\\-64.72935\\-220.3907\\-15\\-66.21176\\-219.1928\\-15\\-67.77906\\-217.2396\\-15\\-68.79955\\-215.2865\\-15\\-68.37651\\-213.3334\\-15\\-67.85538\\-211.3803\\-15\\-66.68247\\-209.3788\\-15\\-65.76199\\-207.474\\-15\\-61.67041\\-203.5678\\-15\\-60.49758\\-201.6146\\-15\\-60.46628\\-197.7084\\-15\\-60.22009\\-195.7553\\-15\\-59.64622\\-193.8021\\-15\\-58.86998\\-192.9469\\-15\\-56.91685\\-193.7681\\-15\\-55.82909\\-195.7553\\-15\\-54.9561\\-197.7084\\-15\\-54.89714\\-199.6615\\-15\\-53.85757\\-201.6146\\-15\\-52.11256\\-203.5678\\-15\\-51.2932\\-205.5209\\-15\\-49.92955\\-207.474\\-15\\-48.6643\\-209.4271\\-15\\-48.05839\\-211.3803\\-15\\-48.35355\\-213.3334\\-15\\-48.96891\\-215.2865\\-15\\-50.49554\\-219.1928\\-15\\-50.57219\\-221.1459\\-15\\-49.72084\\-223.099\\-15\\-47.98488\\-225.0521\\-15\\-46.62927\\-227.0053\\-15\\-47.15123\\-227.8162\\-15\\-49.10435\\-228.2823\\-15\\-51.05748\\-228.1363\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "322"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-157.1636\\-15\\-39.33873\\-155.7074\\-15\\-41.29185\\-155.2365\\-15\\-43.24498\\-153.787\\-15\\-44.28631\\-152.7865\\-15\\-46.06785\\-150.8334\\-15\\-46.68648\\-148.8803\\-15\\-48.01753\\-146.9271\\-15\\-49.10435\\-145.9164\\-15\\-51.05748\\-146.125\\-15\\-52.92182\\-144.974\\-15\\-51.67397\\-143.0209\\-15\\-49.57477\\-141.0678\\-15\\-47.7609\\-139.1146\\-15\\-46.8047\\-137.1615\\-15\\-45.96798\\-135.2084\\-15\\-43.24498\\-132.4894\\-15\\-41.29185\\-131.799\\-15\\-39.33873\\-130.5314\\-15\\-37.3856\\-129.8199\\-15\\-35.43248\\-129.7837\\-15\\-23.71373\\-129.7929\\-15\\-21.7606\\-129.9772\\-15\\-19.80748\\-130.6999\\-15\\-19.17725\\-131.3021\\-15\\-17.85435\\-133.3414\\-15\\-16.06281\\-137.1615\\-15\\-16.04983\\-139.1146\\-15\\-14.93375\\-141.0678\\-15\\-12.91205\\-143.0209\\-15\\-12.21595\\-144.974\\-15\\-12.36319\\-146.9271\\-15\\-11.99498\\-147.1636\\-15\\-11.12286\\-148.8803\\-15\\-11.59505\\-150.8334\\-15\\-11.99498\\-151.1152\\-15\\-12.38743\\-150.8334\\-15\\-14.14754\\-148.8803\\-15\\-14.66425\\-146.9271\\-15\\-15.90123\\-146.1357\\-15\\-16.79423\\-146.9271\\-15\\-18.17987\\-148.8803\\-15\\-19.08219\\-150.8334\\-15\\-21.7606\\-153.5058\\-15\\-23.71373\\-155.0234\\-15\\-27.61998\\-156.0289\\-15\\-29.5731\\-157.239\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "323"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "38.78627\\-233.0212\\-15\\36.83315\\-232.4572\\-15\\35.26672\\-230.9115\\-15\\34.88002\\-229.0529\\-15\\34.98761\\-227.0053\\-15\\36.09553\\-225.0521\\-15\\36.83315\\-224.2902\\-15\\39.08934\\-221.1459\\-15\\39.95486\\-219.1928\\-15\\40.7394\\-218.4169\\-15\\42.69252\\-217.091\\-15\\45.50202\\-213.3334\\-15\\46.59877\\-212.2137\\-15\\48.5519\\-210.7699\\-15\\50.0104\\-211.3803\\-15\\50.50502\\-212.0856\\-15\\50.96031\\-213.3334\\-15\\51.90843\\-215.2865\\-15\\52.45815\\-215.8362\\-15\\54.41127\\-216.8453\\-15\\54.88453\\-217.2396\\-15\\55.83226\\-219.1928\\-15\\55.27875\\-221.1459\\-15\\54.58566\\-223.099\\-15\\53.06448\\-225.0521\\-15\\52.45815\\-225.6585\\-15\\50.50502\\-226.1021\\-15\\46.59877\\-228.4387\\-15\\44.64565\\-229.7125\\-15\\42.69252\\-231.1991\\-15\\40.7394\\-232.3793\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "73"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "324"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "62.22377\\-212.1544\\-15\\61.3937\\-211.3803\\-15\\58.97418\\-209.4271\\-15\\58.31752\\-208.8129\\-15\\56.3644\\-209.0086\\-15\\54.41127\\-209.7665\\-15\\53.71777\\-209.4271\\-15\\52.45815\\-207.9786\\-15\\52.24645\\-207.474\\-15\\52.27115\\-203.5678\\-15\\52.63253\\-201.6146\\-15\\53.67759\\-197.7084\\-15\\54.27584\\-195.7553\\-15\\56.25589\\-191.849\\-15\\56.28363\\-189.8959\\-15\\57.36303\\-187.9428\\-15\\58.16891\\-185.9896\\-15\\58.55325\\-184.0365\\-15\\59.33994\\-182.0834\\-15\\59.97768\\-180.1303\\-15\\60.01156\\-174.2709\\-15\\61.03297\\-172.3178\\-15\\61.55498\\-170.3646\\-15\\62.22377\\-168.9678\\-15\\63.57201\\-166.4584\\-15\\63.69749\\-164.5053\\-15\\63.52077\\-162.5521\\-15\\63.48785\\-160.599\\-15\\63.92941\\-158.6459\\-15\\64.1769\\-158.3821\\-15\\66.13003\\-157.3246\\-15\\68.08315\\-155.9297\\-15\\70.03628\\-156.0976\\-15\\71.9894\\-157.1547\\-15\\73.94253\\-157.3728\\-15\\75.89565\\-157.8551\\-15\\77.84878\\-159.0952\\-15\\79.8019\\-159.8087\\-15\\81.75503\\-161.4994\\-15\\83.70815\\-162.3651\\-15\\85.66128\\-163.6636\\-15\\86.51933\\-164.5053\\-15\\87.35531\\-166.4584\\-15\\86.97044\\-168.4115\\-15\\85.66128\\-169.3987\\-15\\83.70815\\-170.0285\\-15\\81.75503\\-171.1429\\-15\\79.8019\\-171.9667\\-15\\77.84878\\-173.3048\\-15\\76.93169\\-174.2709\\-15\\75.89565\\-175.9717\\-15\\73.86475\\-178.1771\\-15\\71.9894\\-179.3677\\-15\\70.03628\\-181.3032\\-15\\68.08315\\-182.8739\\-15\\66.13003\\-183.4955\\-15\\64.1769\\-184.7245\\-15\\62.22377\\-186.5942\\-15\\60.27065\\-187.4487\\-15\\59.62718\\-187.9428\\-15\\59.21078\\-189.8959\\-15\\60.03493\\-191.849\\-15\\59.69587\\-193.8021\\-15\\59.57078\\-195.7553\\-15\\59.69587\\-197.7084\\-15\\60.57664\\-199.6615\\-15\\61.32716\\-201.6146\\-15\\63.06747\\-203.5678\\-15\\64.58182\\-205.5209\\-15\\65.75842\\-207.474\\-15\\66.15365\\-209.4271\\-15\\64.90556\\-211.3803\\-15\\64.1769\\-212.0118\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002309"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "325"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "75.89565\\-205.9208\\-15\\73.87594\\-203.5678\\-15\\72.92881\\-201.6146\\-15\\72.17773\\-199.6615\\-15\\71.75368\\-197.7084\\-15\\71.69643\\-193.8021\\-15\\71.25553\\-189.8959\\-15\\71.25117\\-187.9428\\-15\\70.92061\\-185.9896\\-15\\71.2934\\-184.0365\\-15\\73.08142\\-182.0834\\-15\\73.94253\\-180.861\\-15\\75.89565\\-178.5922\\-15\\77.84878\\-177.3308\\-15\\79.8019\\-176.3188\\-15\\81.75503\\-175.0531\\-15\\83.70815\\-174.8797\\-15\\84.80801\\-176.224\\-15\\84.73267\\-178.1771\\-15\\84.81986\\-180.1303\\-15\\85.08397\\-182.0834\\-15\\84.81492\\-184.0365\\-15\\84.82484\\-185.9896\\-15\\87.6144\\-189.0032\\-15\\90.70685\\-189.8959\\-15\\95.4269\\-191.5235\\-15\\95.59499\\-191.849\\-15\\93.85659\\-193.8021\\-15\\91.52065\\-196.1182\\-15\\89.56753\\-197.1151\\-15\\87.93992\\-199.6615\\-15\\85.66128\\-202.0076\\-15\\83.70815\\-203.6985\\-15\\79.8019\\-204.1018\\-15\\78.20856\\-205.5209\\-15\\77.84878\\-205.9766\\-15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "92"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "326"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.16685\\-218.0109\\-13\\-90.10603\\-217.2396\\-13\\-92.0731\\-216.0833\\-13\\-94.02622\\-216.3377\\-13\\-95.97935\\-216.1181\\-13\\-97.93247\\-215.4804\\-13\\-99.8856\\-215.6708\\-13\\-101.8387\\-214.9588\\-13\\-103.8764\\-213.3334\\-13\\-105.745\\-210.8443\\-13\\-106.7165\\-209.4271\\-13\\-107.5111\\-207.474\\-13\\-107.6173\\-205.5209\\-13\\-107.5627\\-203.5678\\-13\\-108.0054\\-201.6146\\-13\\-107.6173\\-199.6615\\-13\\-106.9717\\-197.7084\\-13\\-106.1607\\-195.7553\\-13\\-104.6195\\-193.8021\\-13\\-101.8387\\-191.0982\\-13\\-99.8856\\-190.1171\\-13\\-97.93247\\-189.4665\\-13\\-95.97935\\-189.0013\\-13\\-94.02622\\-188.7705\\-13\\-92.59736\\-187.9428\\-13\\-92.0731\\-187.0204\\-13\\-91.0791\\-185.9896\\-13\\-90.11997\\-184.5762\\-13\\-88.84167\\-182.0834\\-13\\-88.48586\\-180.1303\\-13\\-88.3308\\-178.1771\\-13\\-88.16685\\-177.9632\\-13\\-86.21372\\-176.7653\\-13\\-84.2606\\-177.2696\\-13\\-82.30747\\-177.9981\\-13\\-81.5631\\-176.224\\-13\\-82.30747\\-175.5237\\-13\\-84.2606\\-174.1093\\-13\\-86.21372\\-173.1779\\-13\\-87.42758\\-172.3178\\-13\\-88.62413\\-170.3646\\-13\\-88.10941\\-168.4115\\-13\\-86.84793\\-166.4584\\-13\\-85.70841\\-164.5053\\-13\\-85.12502\\-162.5521\\-13\\-82.30747\\-159.7133\\-13\\-80.35435\\-159.1167\\-13\\-78.40122\\-157.9297\\-13\\-76.4481\\-157.4043\\-13\\-74.49497\\-157.1896\\-13\\-72.54185\\-157.4429\\-13\\-70.58872\\-158.2902\\-13\\-70.21831\\-158.6459\\-13\\-68.6356\\-160.8149\\-13\\-67.83444\\-162.5521\\-13\\-66.81891\\-164.5053\\-13\\-66.29554\\-166.4584\\-13\\-66.12836\\-168.4115\\-13\\-65.50739\\-170.3646\\-13\\-64.35233\\-172.3178\\-13\\-63.88204\\-174.2709\\-13\\-63.00159\\-176.224\\-13\\-62.3992\\-178.1771\\-13\\-62.18388\\-180.1303\\-13\\-62.77623\\-180.8677\\-13\\-64.65739\\-182.0834\\-13\\-66.68247\\-181.2955\\-13\\-68.6356\\-180.8383\\-13\\-70.58872\\-181.0201\\-13\\-72.54185\\-181.3745\\-13\\-74.16567\\-182.0834\\-13\\-73.80919\\-184.0365\\-13\\-72.91888\\-185.9896\\-13\\-71.56528\\-187.9428\\-13\\-70.83792\\-189.8959\\-13\\-69.77927\\-191.849\\-13\\-69.19601\\-193.8021\\-13\\-69.786\\-195.7553\\-13\\-70.09167\\-197.7084\\-13\\-69.90862\\-199.6615\\-13\\-70.44012\\-203.5678\\-13\\-70.85926\\-205.5209\\-13\\-71.73383\\-207.474\\-13\\-73.3488\\-209.4271\\-13\\-74.49497\\-211.3208\\-13\\-75.85973\\-213.3334\\-13\\-76.4481\\-213.9075\\-13\\-78.65292\\-215.2865\\-13\\-80.35435\\-216.1884\\-13\\-82.30747\\-217.0513\\-13\\-84.2606\\-218.1035\\-13\\-86.21372\\-218.3649\\-13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "327"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-51.05748\\-227.4428\\-13\\-53.0106\\-226.3138\\-13\\-54.96373\\-225.4113\\-13\\-58.86998\\-222.5434\\-13\\-62.77623\\-220.8311\\-13\\-64.72935\\-220.4966\\-13\\-66.68247\\-219.4727\\-13\\-68.83688\\-217.2396\\-13\\-69.61765\\-215.2865\\-13\\-69.12096\\-213.3334\\-13\\-68.51171\\-211.3803\\-13\\-67.60853\\-209.4271\\-13\\-66.05949\\-207.474\\-13\\-64.72935\\-206.3925\\-13\\-61.8628\\-203.5678\\-13\\-60.50829\\-201.6146\\-13\\-60.46628\\-195.7553\\-13\\-59.66898\\-193.8021\\-13\\-58.86998\\-193.0475\\-13\\-56.91685\\-194.2668\\-13\\-55.84843\\-195.7553\\-13\\-55.00129\\-197.7084\\-13\\-54.91154\\-199.6615\\-13\\-54.04433\\-201.6146\\-13\\-51.99478\\-203.5678\\-13\\-50.65108\\-205.5209\\-13\\-49.79522\\-207.474\\-13\\-48.22544\\-209.4271\\-13\\-48.15245\\-211.3803\\-13\\-48.72492\\-213.3334\\-13\\-50.12456\\-217.2396\\-13\\-50.71095\\-219.1928\\-13\\-50.88309\\-221.1459\\-13\\-49.87271\\-223.099\\-13\\-47.86002\\-225.0521\\-13\\-47.21989\\-227.0053\\-13\\-49.10435\\-228.0821\\-13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "328"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-157.1981\\-13\\-39.33873\\-155.9223\\-13\\-41.29185\\-155.3682\\-13\\-43.24498\\-153.7823\\-13\\-44.26593\\-152.7865\\-13\\-45.39056\\-150.8334\\-13\\-47.15123\\-147.2947\\-13\\-47.39712\\-146.9271\\-13\\-49.10435\\-145.5475\\-13\\-51.05748\\-146.1309\\-13\\-52.92182\\-144.974\\-13\\-51.82026\\-143.0209\\-13\\-51.05748\\-142.2581\\-13\\-49.10435\\-141.1199\\-13\\-47.20341\\-139.1146\\-13\\-46.59398\\-137.1615\\-13\\-45.7749\\-135.2084\\-13\\-43.24498\\-132.5255\\-13\\-41.29185\\-131.8158\\-13\\-39.33873\\-130.7417\\-13\\-37.3856\\-130.0052\\-13\\-35.43248\\-129.811\\-13\\-33.47935\\-129.7837\\-13\\-23.71373\\-129.7929\\-13\\-21.7606\\-130.3207\\-13\\-20.05374\\-131.3021\\-13\\-18.00296\\-133.2553\\-13\\-16.94754\\-135.2084\\-13\\-16.06281\\-137.1615\\-13\\-16.04983\\-139.1146\\-13\\-14.96885\\-141.0678\\-13\\-13.09361\\-143.0209\\-13\\-12.23912\\-144.974\\-13\\-12.32528\\-146.9271\\-13\\-11.99498\\-147.1636\\-13\\-11.12286\\-148.8803\\-13\\-11.59505\\-150.8334\\-13\\-11.99498\\-151.1152\\-13\\-12.38743\\-150.8334\\-13\\-14.15039\\-148.8803\\-13\\-15.16076\\-146.9271\\-13\\-15.90123\\-146.506\\-13\\-16.32237\\-146.9271\\-13\\-17.3019\\-148.8803\\-13\\-18.63084\\-150.8334\\-13\\-19.80748\\-152.3132\\-13\\-21.7606\\-154.2731\\-13\\-23.71373\\-155.8123\\-13\\-27.61998\\-157.0722\\-13\\-29.5731\\-157.4731\\-13\\-33.47935\\-157.2469\\-13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "329"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "38.78627\\-231.8831\\-13\\37.11584\\-230.9115\\-13\\36.92933\\-228.9584\\-13\\37.36175\\-227.0053\\-13\\38.89641\\-225.0521\\-13\\39.7032\\-223.099\\-13\\40.95564\\-221.1459\\-13\\41.60499\\-219.1928\\-13\\42.69252\\-218.3121\\-13\\43.64255\\-217.2396\\-13\\44.78208\\-215.2865\\-13\\45.71938\\-213.3334\\-13\\46.59877\\-212.3233\\-13\\48.5519\\-210.4738\\-13\\49.85159\\-211.3803\\-13\\50.1795\\-213.3334\\-13\\51.49734\\-215.2865\\-13\\52.45815\\-216.2422\\-13\\54.41127\\-217.4405\\-13\\55.95546\\-219.1928\\-13\\55.81867\\-221.1459\\-13\\54.85787\\-223.099\\-13\\54.41127\\-223.5456\\-13\\52.45815\\-224.5788\\-13\\50.50502\\-224.9147\\-13\\48.5519\\-225.7162\\-13\\46.59877\\-227.4712\\-13\\44.64565\\-228.334\\-13\\43.45546\\-228.9584\\-13\\40.7394\\-231.3231\\-13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002308"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "117"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "330"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "62.22377\\-212.3613\\-13\\60.27065\\-210.431\\-13\\58.31752\\-208.6598\\-13\\56.3644\\-208.6059\\-13\\54.41127\\-208.9218\\-13\\52.45815\\-207.9728\\-13\\52.03278\\-207.474\\-13\\51.97853\\-205.5209\\-13\\52.25871\\-203.5678\\-13\\53.13544\\-201.6146\\-13\\53.73427\\-199.6615\\-13\\53.94711\\-197.7084\\-13\\54.33051\\-195.7553\\-13\\56.25589\\-191.849\\-13\\56.28363\\-189.8959\\-13\\57.28024\\-187.9428\\-13\\58.15593\\-185.9896\\-13\\58.16891\\-184.0365\\-13\\59.19084\\-182.0834\\-13\\59.97768\\-180.1303\\-13\\60.07121\\-174.2709\\-13\\62.22377\\-170.7046\\-13\\64.1769\\-168.7052\\-13\\66.13003\\-166.9513\\-13\\66.53439\\-166.4584\\-13\\66.27314\\-164.5053\\-13\\64.13934\\-162.5521\\-13\\63.74221\\-160.599\\-13\\64.96527\\-158.6459\\-13\\66.13003\\-157.555\\-13\\68.08315\\-155.9617\\-13\\70.03628\\-155.7683\\-13\\71.9894\\-156.8544\\-13\\73.94253\\-157.1896\\-13\\75.89565\\-157.4115\\-13\\77.84878\\-158.03\\-13\\79.8019\\-159.5325\\-13\\83.70815\\-161.8524\\-13\\86.51398\\-164.5053\\-13\\88.17825\\-166.4584\\-13\\88.57803\\-168.4115\\-13\\87.6144\\-169.585\\-13\\85.66128\\-170.0717\\-13\\81.75503\\-171.4841\\-13\\79.95609\\-172.3178\\-13\\77.84878\\-173.6977\\-13\\77.36349\\-174.2709\\-13\\76.32455\\-176.224\\-13\\74.39175\\-178.1771\\-13\\73.94253\\-179.041\\-13\\72.9189\\-180.1303\\-13\\73.94253\\-181.8295\\-13\\75.89565\\-180.3173\\-13\\78.51196\\-178.1771\\-13\\79.8019\\-177.2428\\-13\\81.75503\\-175.5674\\-13\\83.70815\\-174.977\\-13\\84.91193\\-176.224\\-13\\84.81002\\-178.1771\\-13\\84.82484\\-180.1303\\-13\\85.173\\-182.0834\\-13\\85.29429\\-184.0365\\-13\\86.04783\\-185.9896\\-13\\87.6144\\-188.0494\\-13\\89.56753\\-189.138\\-13\\91.52065\\-189.2261\\-13\\93.47378\\-189.4612\\-13\\95.4269\\-190.2689\\-13\\96.53684\\-191.849\\-13\\95.4269\\-193.4978\\-13\\91.52065\\-197.325\\-13\\89.56753\\-198.6917\\-13\\88.80442\\-199.6615\\-13\\88.2495\\-201.6146\\-13\\88.50844\\-203.5678\\-13\\89.70809\\-205.5209\\-13\\89.74722\\-207.474\\-13\\89.56753\\-207.7817\\-13\\87.6144\\-209.9229\\-13\\86.17915\\-211.3803\\-13\\85.66128\\-211.6581\\-13\\83.70815\\-211.4994\\-13\\81.75503\\-209.9192\\-13\\80.45959\\-209.4271\\-13\\79.8019\\-208.7826\\-13\\77.84878\\-208.1576\\-13\\77.09415\\-207.474\\-13\\73.55559\\-201.6146\\-13\\72.95517\\-199.6615\\-13\\72.45696\\-197.7084\\-13\\71.73031\\-193.8021\\-13\\71.69643\\-191.849\\-13\\71.81376\\-185.9896\\-13\\72.73434\\-184.0365\\-13\\73.81806\\-182.0834\\-13\\71.9894\\-180.7017\\-13\\70.03628\\-182.7282\\-13\\68.36331\\-184.0365\\-13\\66.13003\\-186.2984\\-13\\64.1769\\-187.0883\\-13\\63.18749\\-187.9428\\-13\\62.22377\\-188.4343\\-13\\60.27065\\-189.8817\\-13\\60.58546\\-191.849\\-13\\60.10906\\-193.8021\\-13\\60.14858\\-197.7084\\-13\\62.22377\\-200.6292\\-13\\63.66909\\-201.6146\\-13\\64.1769\\-202.1511\\-13\\66.13003\\-203.2446\\-13\\66.48159\\-203.5678\\-13\\66.84103\\-205.5209\\-13\\67.56279\\-207.474\\-13\\68.13614\\-209.4271\\-13\\67.24458\\-211.3803\\-13\\66.13003\\-212.7849\\-13\\64.1769\\-213.0743\\-13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "90"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "331"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.21372\\-217.5757\\-11\\-88.16685\\-217.173\\-11\\-90.11997\\-216.6341\\-11\\-91.6662\\-215.2865\\-11\\-92.0731\\-214.6388\\-11\\-93.49454\\-213.3334\\-11\\-94.02622\\-212.9988\\-11\\-95.47627\\-213.3334\\-11\\-97.93247\\-214.2303\\-11\\-99.8856\\-214.5062\\-11\\-101.8387\\-214.1204\\-11\\-103.7918\\-212.3952\\-11\\-104.7183\\-211.3803\\-11\\-106.2856\\-209.4271\\-11\\-107.042\\-207.474\\-11\\-107.1928\\-205.5209\\-11\\-107.2098\\-199.6615\\-11\\-107.0838\\-197.7084\\-11\\-105.745\\-195.8773\\-11\\-103.7691\\-193.8021\\-11\\-102.7486\\-191.849\\-11\\-100.701\\-189.8959\\-11\\-99.8856\\-189.0191\\-11\\-97.93247\\-187.5081\\-11\\-95.97935\\-186.8588\\-11\\-94.62132\\-185.9896\\-11\\-94.29933\\-184.0365\\-11\\-94.02622\\-183.1158\\-11\\-92.99386\\-182.0834\\-11\\-92.0731\\-181.785\\-11\\-90.11997\\-179.8802\\-11\\-89.33982\\-178.1771\\-11\\-88.16685\\-177.1428\\-11\\-86.21372\\-177.2255\\-11\\-84.2606\\-178.4811\\-11\\-82.30747\\-179.2836\\-11\\-78.40122\\-182.0183\\-11\\-77.30596\\-180.1303\\-11\\-78.93234\\-178.1771\\-11\\-82.30747\\-175.4236\\-11\\-86.21372\\-174.1624\\-11\\-88.16685\\-173.6327\\-11\\-89.28761\\-172.3178\\-11\\-89.42455\\-170.3646\\-11\\-88.74365\\-168.4115\\-11\\-87.07685\\-166.4584\\-11\\-85.70841\\-164.5053\\-11\\-85.12502\\-162.5521\\-11\\-82.30747\\-159.7133\\-11\\-80.35435\\-159.1167\\-11\\-78.40122\\-158.2299\\-11\\-76.4481\\-157.5266\\-11\\-74.49497\\-157.2229\\-11\\-72.54185\\-157.5938\\-11\\-71.19757\\-158.6459\\-11\\-69.4281\\-160.599\\-11\\-68.14732\\-162.5521\\-11\\-67.48943\\-164.5053\\-11\\-66.35696\\-166.4584\\-11\\-66.28574\\-168.4115\\-11\\-65.86295\\-170.3646\\-11\\-64.72935\\-172.6123\\-11\\-64.15205\\-174.2709\\-11\\-63.73255\\-176.224\\-11\\-63.04676\\-178.1771\\-11\\-62.97708\\-180.1303\\-11\\-64.72935\\-181.694\\-11\\-66.68247\\-182.2717\\-11\\-68.6356\\-181.2269\\-11\\-70.58872\\-180.8745\\-11\\-74.49497\\-181.7092\\-11\\-76.4481\\-181.6091\\-11\\-78.1655\\-182.0834\\-11\\-76.4481\\-182.5669\\-11\\-75.38959\\-184.0365\\-11\\-73.63131\\-185.9896\\-11\\-71.57072\\-189.8959\\-11\\-70.16734\\-193.8021\\-11\\-70.2319\\-195.7553\\-11\\-70.49399\\-197.7084\\-11\\-70.49399\\-201.6146\\-11\\-70.89269\\-203.5678\\-11\\-71.55998\\-205.5209\\-11\\-72.54185\\-207.4226\\-11\\-73.91383\\-209.4271\\-11\\-76.4481\\-212.3343\\-11\\-77.43958\\-213.3334\\-11\\-78.40122\\-214.1062\\-11\\-82.30747\\-216.1611\\-11\\-84.2606\\-216.9904\\-11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "332"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-51.05748\\-225.9568\\-11\\-53.0106\\-224.7625\\-11\\-54.96373\\-223.982\\-11\\-56.91685\\-222.5164\\-11\\-58.86998\\-221.543\\-11\\-60.8231\\-220.4452\\-11\\-62.77623\\-220.2908\\-11\\-64.72935\\-219.8974\\-11\\-66.68247\\-218.7527\\-11\\-68.6356\\-217.7369\\-11\\-69.16193\\-217.2396\\-11\\-70.14484\\-215.2865\\-11\\-69.92024\\-213.3334\\-11\\-69.58984\\-211.3803\\-11\\-68.6356\\-209.6225\\-11\\-67.33552\\-207.474\\-11\\-66.68247\\-206.8404\\-11\\-64.72935\\-205.7701\\-11\\-62.77623\\-204.5017\\-11\\-61.86226\\-203.5678\\-11\\-60.6361\\-201.6146\\-11\\-60.46628\\-195.7553\\-11\\-59.26758\\-193.8021\\-11\\-58.86998\\-193.4453\\-11\\-56.91685\\-194.7074\\-11\\-55.99802\\-195.7553\\-11\\-55.37967\\-197.7084\\-11\\-54.48721\\-201.6146\\-11\\-51.05748\\-204.7777\\-11\\-50.42894\\-205.5209\\-11\\-49.57801\\-207.474\\-11\\-48.24123\\-209.4271\\-11\\-48.35908\\-211.3803\\-11\\-49.34007\\-213.3334\\-11\\-50.12456\\-215.2865\\-11\\-50.69049\\-217.2396\\-11\\-50.88309\\-219.1928\\-11\\-50.49363\\-221.1459\\-11\\-49.10435\\-222.9837\\-11\\-47.15123\\-224.7577\\-11\\-46.24125\\-225.0521\\-11\\-47.15123\\-225.4781\\-11\\-49.10435\\-226.6328\\-11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "333"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-156.8414\\-11\\-41.29185\\-155.627\\-11\\-44.15931\\-152.7865\\-11\\-44.68442\\-150.8334\\-11\\-46.21905\\-148.8803\\-11\\-46.85826\\-146.9271\\-11\\-47.15123\\-146.5891\\-11\\-49.10435\\-145.2215\\-11\\-52.65456\\-146.9271\\-11\\-53.0106\\-147.2689\\-11\\-53.25474\\-146.9271\\-11\\-52.92182\\-144.974\\-11\\-51.82026\\-143.0209\\-11\\-51.05748\\-142.2581\\-11\\-49.10435\\-141.5731\\-11\\-48.44088\\-141.0678\\-11\\-46.8047\\-139.1146\\-11\\-46.18961\\-137.1615\\-11\\-45.1981\\-135.6666\\-11\\-43.24498\\-133.2316\\-11\\-41.29185\\-131.965\\-11\\-39.33873\\-131.5259\\-11\\-37.3856\\-130.542\\-11\\-35.43248\\-130.0188\\-11\\-33.47935\\-129.8199\\-11\\-31.52623\\-129.7837\\-11\\-25.66685\\-129.7837\\-11\\-23.71373\\-129.8199\\-11\\-21.7606\\-130.5022\\-11\\-19.80748\\-131.9617\\-11\\-18.47196\\-133.2553\\-11\\-16.95255\\-135.2084\\-11\\-16.06281\\-137.1615\\-11\\-16.06281\\-139.1146\\-11\\-15.13255\\-141.0678\\-11\\-13.25452\\-143.0209\\-11\\-12.2307\\-144.974\\-11\\-12.14869\\-146.9271\\-11\\-11.10109\\-148.8803\\-11\\-11.55785\\-150.8334\\-11\\-11.99498\\-151.1373\\-11\\-12.41606\\-150.8334\\-11\\-14.21891\\-148.8803\\-11\\-15.90123\\-147.7163\\-11\\-16.87779\\-148.8803\\-11\\-18.24129\\-150.8334\\-11\\-19.09058\\-152.7865\\-11\\-21.7606\\-155.4372\\-11\\-23.71373\\-156.8013\\-11\\-25.66685\\-157.3882\\-11\\-27.61998\\-157.7695\\-11\\-29.5731\\-158.2672\\-11\\-31.52623\\-157.7426\\-11\\-33.47935\\-157.4876\\-11\\-37.3856\\-157.3818\\-11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "334"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "44.64565\\-224.9301\\-11\\42.90179\\-223.099\\-11\\42.97257\\-221.1459\\-11\\43.63094\\-219.1928\\-11\\45.10629\\-217.2396\\-11\\45.74352\\-215.2865\\-11\\46.59877\\-214.0233\\-11\\48.5519\\-211.4418\\-11\\51.20257\\-215.2865\\-11\\52.45815\\-216.4807\\-11\\54.41127\\-218.0042\\-11\\55.5177\\-219.1928\\-11\\55.77846\\-221.1459\\-11\\54.41127\\-222.6698\\-11\\52.45815\\-223.8608\\-11\\48.5519\\-224.0199\\-11\\46.59877\\-224.8262\\-11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "75"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "335"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "64.1769\\-218.3464\\-11\\62.99107\\-217.2396\\-11\\64.15419\\-215.2865\\-11\\63.50618\\-213.3334\\-11\\62.31995\\-211.3803\\-11\\60.27065\\-209.4195\\-11\\58.31752\\-208.5614\\-11\\56.3644\\-208.6008\\-11\\54.41127\\-208.7381\\-11\\52.45815\\-207.8042\\-11\\52.15419\\-207.474\\-11\\51.79858\\-205.5209\\-11\\52.45815\\-203.4213\\-11\\54.26266\\-199.6615\\-11\\54.35909\\-197.7084\\-11\\54.6931\\-195.7553\\-11\\55.41225\\-193.8021\\-11\\56.25589\\-191.849\\-11\\56.34169\\-189.8959\\-11\\58.15593\\-185.9896\\-11\\58.23676\\-184.0365\\-11\\59.20414\\-182.0834\\-11\\59.97768\\-180.1303\\-11\\60.07121\\-176.224\\-11\\61.30172\\-172.3178\\-11\\62.22377\\-171.2744\\-11\\64.1769\\-169.8284\\-11\\66.13003\\-168.9596\\-11\\66.67816\\-168.4115\\-11\\67.46886\\-166.4584\\-11\\67.39793\\-164.5053\\-11\\66.13003\\-163.2087\\-11\\65.26278\\-162.5521\\-11\\64.44743\\-160.599\\-11\\65.29626\\-158.6459\\-11\\66.13003\\-157.7394\\-11\\68.08315\\-156.7735\\-11\\70.03628\\-155.7068\\-11\\71.9894\\-156.1509\\-11\\73.94253\\-157.2229\\-11\\75.89565\\-157.4192\\-11\\77.84878\\-158.0294\\-11\\79.8019\\-159.6225\\-11\\81.63296\\-160.599\\-11\\83.70815\\-161.9618\\-11\\88.40881\\-166.4584\\-11\\89.30843\\-168.4115\\-11\\87.86594\\-170.3646\\-11\\85.66128\\-170.771\\-11\\83.70815\\-171.3623\\-11\\79.8019\\-172.7337\\-11\\77.84878\\-174.6687\\-11\\76.77754\\-176.224\\-11\\74.83076\\-178.1771\\-11\\71.80106\\-182.0834\\-11\\70.5537\\-184.0365\\-11\\68.08315\\-185.7899\\-11\\66.34956\\-187.9428\\-11\\64.1769\\-190.1696\\-11\\62.22377\\-191.5663\\-11\\61.20039\\-193.8021\\-11\\62.22377\\-195.444\\-11\\64.1769\\-197.3793\\-11\\64.40624\\-197.7084\\-11\\65.13468\\-199.6615\\-11\\66.13003\\-200.5695\\-11\\67.52903\\-203.5678\\-11\\68.08315\\-205.3943\\-11\\68.99936\\-207.474\\-11\\69.57404\\-209.4271\\-11\\69.89828\\-211.3803\\-11\\68.58047\\-213.3334\\-11\\68.63614\\-215.2865\\-11\\68.52517\\-217.2396\\-11\\68.08315\\-217.5677\\-11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002307"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "336"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "83.70815\\-211.9255\\-11\\81.75503\\-210.305\\-11\\79.8019\\-209.1016\\-11\\77.84878\\-207.3302\\-11\\76.69903\\-205.5209\\-11\\75.08022\\-203.5678\\-11\\73.94253\\-199.7572\\-11\\73.26189\\-197.7084\\-11\\72.93323\\-195.7553\\-11\\72.16379\\-193.8021\\-11\\71.77769\\-191.849\\-11\\72.47768\\-187.9428\\-11\\72.91871\\-185.9896\\-11\\73.82162\\-184.0365\\-11\\75.05593\\-182.0834\\-11\\75.89565\\-181.3124\\-11\\80.48006\\-178.1771\\-11\\81.75503\\-177.1793\\-11\\83.70815\\-176.0362\\-11\\83.9116\\-176.224\\-11\\84.92886\\-178.1771\\-11\\85.31475\\-180.1303\\-11\\86.24503\\-182.0834\\-11\\86.6557\\-184.0365\\-11\\87.6144\\-185.5059\\-11\\89.56753\\-187.4955\\-11\\90.18101\\-187.9428\\-11\\91.52065\\-188.5685\\-11\\93.47378\\-189.311\\-11\\95.4269\\-190.9452\\-11\\96.22202\\-191.849\\-11\\95.80847\\-193.8021\\-11\\94.40965\\-195.7553\\-11\\93.47378\\-196.8105\\-11\\91.52065\\-198.7521\\-11\\90.40136\\-199.6615\\-11\\90.07508\\-201.6146\\-11\\91.52065\\-204.7295\\-11\\91.97964\\-205.5209\\-11\\93.77239\\-207.474\\-11\\93.9883\\-209.4271\\-11\\93.47378\\-209.8829\\-11\\91.52065\\-210.6762\\-11\\90.87653\\-211.3803\\-11\\89.56753\\-211.8804\\-11\\85.66128\\-212.4506\\-11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "337"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-90.11997\\-215.9824\\-9\\-92.0731\\-214.0085\\-9\\-94.02622\\-212.6292\\-9\\-95.97935\\-212.8114\\-9\\-97.93247\\-213.3712\\-9\\-99.8856\\-213.6761\\-9\\-101.8387\\-212.927\\-9\\-103.7918\\-211.3726\\-9\\-105.2654\\-209.4271\\-9\\-106.5095\\-207.474\\-9\\-107.0353\\-205.5209\\-9\\-107.1844\\-203.5678\\-9\\-107.2098\\-197.7084\\-9\\-106.1667\\-195.7553\\-9\\-103.8873\\-193.8021\\-9\\-102.9201\\-191.849\\-9\\-101.1635\\-189.8959\\-9\\-100.2471\\-187.9428\\-9\\-99.8856\\-186.8723\\-9\\-98.96764\\-185.9896\\-9\\-97.95518\\-184.0365\\-9\\-96.45859\\-182.0834\\-9\\-95.97935\\-181.7056\\-9\\-92.0731\\-179.4604\\-9\\-88.16685\\-178.1057\\-9\\-86.21372\\-178.4129\\-9\\-84.2606\\-179.4413\\-9\\-82.30747\\-180.6271\\-9\\-80.35435\\-181.4872\\-9\\-78.40122\\-183.1601\\-9\\-76.4481\\-184.5954\\-9\\-75.01055\\-185.9896\\-9\\-73.53976\\-187.9428\\-9\\-72.59403\\-189.8959\\-9\\-71.95094\\-191.849\\-9\\-71.15066\\-195.7553\\-9\\-71.21352\\-201.6146\\-9\\-71.60326\\-203.5678\\-9\\-72.54185\\-205.4041\\-9\\-73.75124\\-207.474\\-9\\-75.32597\\-209.4271\\-9\\-77.08549\\-211.3803\\-9\\-78.40122\\-212.6728\\-9\\-80.35435\\-214.2312\\-9\\-82.30747\\-215.0627\\-9\\-84.2606\\-216.1552\\-9\\-86.21372\\-216.4434\\-9\\-88.16685\\-216.4292\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "338"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-68.6356\\-182.5779\\-9\\-70.58872\\-180.9519\\-9\\-72.54185\\-181.1673\\-9\\-74.49497\\-181.7536\\-9\\-76.4481\\-180.9587\\-9\\-78.40122\\-179.0653\\-9\\-80.35435\\-177.3449\\-9\\-82.30747\\-176.4732\\-9\\-84.2606\\-175.3529\\-9\\-86.21372\\-174.9798\\-9\\-88.16685\\-174.7684\\-9\\-88.87948\\-174.2709\\-9\\-90.11997\\-172.3584\\-9\\-89.19936\\-170.3646\\-9\\-87.07685\\-166.4584\\-9\\-85.70841\\-164.5053\\-9\\-85.12502\\-162.5521\\-9\\-82.30747\\-159.7224\\-9\\-80.35435\\-159.176\\-9\\-78.40122\\-157.9352\\-9\\-76.4481\\-157.3723\\-9\\-74.49497\\-157.3623\\-9\\-72.54185\\-157.8321\\-9\\-70.58872\\-159.6225\\-9\\-69.64884\\-160.599\\-9\\-68.4118\\-162.5521\\-9\\-67.83222\\-164.5053\\-9\\-66.87081\\-166.4584\\-9\\-66.29554\\-168.4115\\-9\\-66.13626\\-170.3646\\-9\\-65.52016\\-172.3178\\-9\\-64.35233\\-174.2709\\-9\\-64.14126\\-176.224\\-9\\-63.72837\\-178.1771\\-9\\-63.71272\\-180.1303\\-9\\-65.3623\\-182.0834\\-9\\-66.68247\\-183.1474\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "339"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-45.1981\\-225.803\\-9\\-46.77088\\-225.0521\\-9\\-47.15123\\-224.0198\\-9\\-49.10435\\-224.4334\\-9\\-51.05748\\-224.3915\\-9\\-53.0106\\-223.4985\\-9\\-56.91685\\-221.4759\\-9\\-58.86998\\-220.0427\\-9\\-60.8231\\-219.0707\\-9\\-64.72935\\-218.4809\\-9\\-66.68247\\-217.9388\\-9\\-68.6356\\-216.7697\\-9\\-69.99163\\-215.2865\\-9\\-70.66949\\-213.3334\\-9\\-70.55058\\-211.3803\\-9\\-69.60101\\-209.4271\\-9\\-68.0991\\-207.474\\-9\\-66.68247\\-206.3707\\-9\\-64.72935\\-205.1539\\-9\\-62.77623\\-204.5713\\-9\\-61.85735\\-203.5678\\-9\\-61.51031\\-201.6146\\-9\\-61.48633\\-199.6615\\-9\\-61.18222\\-197.7084\\-9\\-60.54128\\-195.7553\\-9\\-58.86998\\-193.6667\\-9\\-56.91685\\-195.188\\-9\\-56.44355\\-195.7553\\-9\\-54.92617\\-199.6615\\-9\\-54.45247\\-201.6146\\-9\\-52.68983\\-203.5678\\-9\\-51.03476\\-205.5209\\-9\\-49.8198\\-207.474\\-9\\-48.74523\\-209.4271\\-9\\-48.81138\\-211.3803\\-9\\-49.91724\\-213.3334\\-9\\-50.67805\\-215.2865\\-9\\-50.4921\\-217.2396\\-9\\-49.87165\\-219.1928\\-9\\-49.10435\\-220.4992\\-9\\-47.87739\\-221.1459\\-9\\-47.15123\\-222.0594\\-9\\-45.75007\\-223.099\\-9\\-45.1981\\-223.252\\-9\\-43.24498\\-224.7027\\-9\\-43.24498\\-225.3242\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "340"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-33.47935\\-158.4233\\-9\\-35.43248\\-158.3249\\-9\\-37.3856\\-157.763\\-9\\-39.33873\\-157.4822\\-9\\-41.29185\\-156.1456\\-9\\-42.48266\\-154.7396\\-9\\-43.98736\\-152.7865\\-9\\-44.54876\\-150.8334\\-9\\-46.03299\\-148.8803\\-9\\-46.66294\\-146.9271\\-9\\-47.15123\\-146.2837\\-9\\-49.10435\\-144.8519\\-9\\-52.05497\\-146.9271\\-9\\-53.0106\\-148.5587\\-9\\-53.72605\\-146.9271\\-9\\-53.0106\\-145.1192\\-9\\-51.82026\\-143.0209\\-9\\-51.05748\\-142.2581\\-9\\-49.10435\\-141.5731\\-9\\-47.15123\\-139.8664\\-9\\-46.57392\\-139.1146\\-9\\-45.78404\\-137.1615\\-9\\-44.18106\\-135.2084\\-9\\-43.24498\\-134.2102\\-9\\-41.29185\\-132.53\\-9\\-39.33873\\-131.9782\\-9\\-37.3856\\-131.5379\\-9\\-35.43248\\-130.56\\-9\\-33.47935\\-130.0392\\-9\\-31.52623\\-129.8459\\-9\\-25.66685\\-129.8459\\-9\\-23.71373\\-130.0223\\-9\\-21.7606\\-130.7274\\-9\\-19.80748\\-132.2598\\-9\\-16.96786\\-135.2084\\-9\\-16.06281\\-137.1615\\-9\\-16.06281\\-139.1146\\-9\\-15.6655\\-141.0678\\-9\\-12.28794\\-144.974\\-9\\-11.77118\\-146.9271\\-9\\-10.89822\\-148.8803\\-9\\-11.01841\\-150.8334\\-9\\-11.99498\\-151.3471\\-9\\-12.67335\\-150.8334\\-9\\-14.38523\\-148.8803\\-9\\-15.90123\\-148.0883\\-9\\-16.68924\\-148.8803\\-9\\-17.85435\\-150.9579\\-9\\-18.74681\\-152.7865\\-9\\-21.7606\\-155.7683\\-9\\-23.71373\\-157.3556\\-9\\-25.66685\\-157.7795\\-9\\-27.6412\\-158.6459\\-9\\-29.5731\\-159.1596\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "341"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-222.4143\\-9\\45.34478\\-221.1459\\-9\\45.58283\\-219.1928\\-9\\46.32264\\-217.2396\\-9\\47.48111\\-215.2865\\-9\\48.5519\\-213.9149\\-9\\50.50502\\-215.9644\\-9\\52.45815\\-217.5427\\-9\\54.41127\\-218.6319\\-9\\54.94337\\-219.1928\\-9\\54.95894\\-221.1459\\-9\\54.41127\\-221.6722\\-9\\52.45815\\-222.4276\\-9\\50.50502\\-222.5002\\-9\\48.5519\\-222.4051\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "79"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "342"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "62.22377\\-218.765\\-9\\61.24202\\-217.2396\\-9\\63.20499\\-215.2865\\-9\\63.59203\\-213.3334\\-9\\63.76826\\-211.3803\\-9\\64.32186\\-209.4271\\-9\\64.1769\\-207.8809\\-9\\63.91991\\-207.474\\-9\\62.22377\\-207.0609\\-9\\60.27065\\-207.0412\\-9\\58.31752\\-207.19\\-9\\56.3644\\-207.4997\\-9\\54.41127\\-207.5004\\-9\\52.96907\\-205.5209\\-9\\53.05049\\-203.5678\\-9\\53.50582\\-201.6146\\-9\\54.33051\\-199.6615\\-9\\54.71524\\-197.7084\\-9\\55.91604\\-193.8021\\-9\\56.40196\\-191.849\\-9\\56.78034\\-189.8959\\-9\\57.36873\\-187.9428\\-9\\58.31752\\-185.7611\\-9\\59.3476\\-182.0834\\-9\\59.98882\\-180.1303\\-9\\60.08365\\-178.1771\\-9\\60.71454\\-176.224\\-9\\61.65549\\-172.3178\\-9\\62.22377\\-171.693\\-9\\64.39519\\-170.3646\\-9\\66.13003\\-169.5966\\-9\\67.23997\\-168.4115\\-9\\67.64846\\-166.4584\\-9\\67.66721\\-164.5053\\-9\\66.47428\\-162.5521\\-9\\65.12976\\-160.599\\-9\\65.51573\\-158.6459\\-9\\66.13003\\-157.9449\\-9\\68.08315\\-157.181\\-9\\70.03628\\-155.9229\\-9\\71.9894\\-156.1574\\-9\\73.94253\\-157.407\\-9\\75.89565\\-157.8678\\-9\\79.8019\\-159.7068\\-9\\83.09109\\-162.5521\\-9\\83.70815\\-163.2246\\-9\\85.66128\\-164.2815\\-9\\88.10863\\-166.4584\\-9\\89.43109\\-168.4115\\-9\\90.35722\\-170.3646\\-9\\89.56753\\-171.3193\\-9\\87.6144\\-171.1323\\-9\\85.66128\\-171.3895\\-9\\83.70815\\-172.4125\\-9\\81.75503\\-173.0266\\-9\\79.8019\\-173.5211\\-9\\75.23869\\-178.1771\\-9\\73.84561\\-180.1303\\-9\\71.9894\\-183.3302\\-9\\70.03628\\-185.8245\\-9\\68.08315\\-187.6051\\-9\\66.57704\\-189.8959\\-9\\66.13003\\-191.1405\\-9\\65.43517\\-191.849\\-9\\64.44115\\-193.8021\\-9\\65.91139\\-195.7553\\-9\\67.09179\\-197.7084\\-9\\68.08315\\-199.1624\\-9\\68.24474\\-199.6615\\-9\\68.69141\\-203.5678\\-9\\69.2129\\-205.5209\\-9\\70.49466\\-207.474\\-9\\70.996\\-209.4271\\-9\\71.25698\\-211.3803\\-9\\70.03628\\-213.9086\\-9\\68.55933\\-217.2396\\-9\\68.08315\\-217.6454\\-9\\66.13003\\-218.4376\\-9\\64.1769\\-218.7742\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002306"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "343"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "85.66128\\-211.4495\\-9\\83.70815\\-210.4292\\-9\\81.75503\\-209.0703\\-9\\79.8019\\-208.1431\\-9\\77.27467\\-205.5209\\-9\\76.26499\\-203.5678\\-9\\73.58107\\-195.7553\\-9\\72.94932\\-193.8021\\-9\\72.54352\\-191.849\\-9\\73.27004\\-187.9428\\-9\\73.53728\\-185.9896\\-9\\74.79986\\-184.0365\\-9\\75.89565\\-182.8731\\-9\\77.84878\\-182.0183\\-9\\79.96828\\-180.1303\\-9\\83.70815\\-177.2977\\-9\\84.68472\\-178.1771\\-9\\86.35278\\-180.1303\\-9\\87.11132\\-182.0834\\-9\\88.29189\\-184.0365\\-9\\91.65608\\-187.9428\\-9\\93.47378\\-189.1458\\-9\\94.36615\\-189.8959\\-9\\95.50767\\-191.849\\-9\\95.46446\\-193.8021\\-9\\95.7592\\-195.7553\\-9\\95.4269\\-196.6253\\-9\\94.72607\\-197.7084\\-9\\92.64891\\-199.6615\\-9\\92.10659\\-201.6146\\-9\\92.65371\\-203.5678\\-9\\94.67228\\-207.474\\-9\\95.03751\\-209.4271\\-9\\93.47378\\-210.7997\\-9\\91.52065\\-211.5638\\-9\\89.56753\\-211.9756\\-9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "344"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.16685\\-215.5428\\-7\\-90.11997\\-214.8071\\-7\\-94.02622\\-212.8804\\-7\\-97.93247\\-212.8804\\-7\\-99.8856\\-212.7086\\-7\\-101.8387\\-211.7576\\-7\\-104.1463\\-209.4271\\-7\\-105.2567\\-207.474\\-7\\-106.5051\\-205.5209\\-7\\-107.012\\-203.5678\\-7\\-107.1599\\-201.6146\\-7\\-107.1599\\-197.7084\\-7\\-106.5095\\-195.7553\\-7\\-104.7125\\-193.8021\\-7\\-103.5787\\-191.849\\-7\\-102.5964\\-189.8959\\-7\\-101.3758\\-187.9428\\-7\\-100.8881\\-185.9896\\-7\\-99.8856\\-184.3924\\-7\\-97.47471\\-182.0834\\-7\\-95.97935\\-181.034\\-7\\-94.02622\\-180.6356\\-7\\-92.0731\\-179.3896\\-7\\-90.11997\\-179.2144\\-7\\-86.21372\\-179.4293\\-7\\-84.2606\\-180.9506\\-7\\-82.30747\\-182.1927\\-7\\-80.35435\\-183.2191\\-7\\-79.25083\\-184.0365\\-7\\-76.4481\\-185.8435\\-7\\-74.49497\\-188.0502\\-7\\-73.50266\\-189.8959\\-7\\-73.14159\\-191.849\\-7\\-71.98826\\-195.7553\\-7\\-71.98826\\-197.7084\\-7\\-72.97921\\-203.5678\\-7\\-73.81534\\-205.5209\\-7\\-75.36236\\-207.474\\-7\\-76.4481\\-209.1231\\-7\\-78.19683\\-211.3803\\-7\\-80.35435\\-213.386\\-7\\-82.30747\\-215.022\\-7\\-84.2606\\-215.4874\\-7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "345"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-66.68247\\-184.5489\\-7\\-68.6356\\-183.1339\\-7\\-70.58872\\-181.0262\\-7\\-72.54185\\-181.1838\\-7\\-74.49497\\-182.7153\\-7\\-76.4481\\-181.4304\\-7\\-78.40122\\-179.5004\\-7\\-80.35435\\-178.4721\\-7\\-82.30747\\-177.2737\\-7\\-85.93202\\-176.224\\-7\\-88.16685\\-175.3604\\-7\\-90.11997\\-174.4826\\-7\\-90.36024\\-174.2709\\-7\\-90.78426\\-172.3178\\-7\\-89.23356\\-170.3646\\-7\\-87.07685\\-166.4584\\-7\\-85.70841\\-164.5053\\-7\\-85.12502\\-162.5521\\-7\\-82.30747\\-159.8957\\-7\\-80.35435\\-159.396\\-7\\-78.40122\\-157.7743\\-7\\-76.4481\\-157.3142\\-7\\-74.49497\\-157.5868\\-7\\-70.58872\\-159.7775\\-7\\-69.81236\\-160.599\\-7\\-68.6356\\-163.1078\\-7\\-67.47723\\-166.4584\\-7\\-66.30545\\-168.4115\\-7\\-66.27608\\-170.3646\\-7\\-65.85463\\-172.3178\\-7\\-64.89094\\-174.2709\\-7\\-64.29466\\-176.224\\-7\\-64.12634\\-178.1771\\-7\\-64.09746\\-180.1303\\-7\\-64.52991\\-182.0834\\-7\\-65.95434\\-184.0365\\-7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "346"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-45.1981\\-223.7642\\-7\\-46.17466\\-223.099\\-7\\-47.15123\\-222.7165\\-7\\-51.05748\\-222.6532\\-7\\-53.0106\\-221.7591\\-7\\-58.86998\\-218.511\\-7\\-60.8231\\-217.9776\\-7\\-62.77623\\-217.1042\\-7\\-66.68247\\-216.5321\\-7\\-68.6356\\-215.6958\\-7\\-70.9281\\-213.3334\\-7\\-71.56528\\-211.3803\\-7\\-70.59635\\-209.4271\\-7\\-69.51389\\-207.474\\-7\\-68.6356\\-206.6173\\-7\\-66.68247\\-205.7933\\-7\\-62.77623\\-204.65\\-7\\-61.87896\\-203.5678\\-7\\-62.09893\\-201.6146\\-7\\-62.15627\\-199.6615\\-7\\-61.79966\\-197.7084\\-7\\-61.22485\\-195.7553\\-7\\-59.41166\\-193.8021\\-7\\-58.86998\\-193.3768\\-7\\-58.35638\\-193.8021\\-7\\-56.87929\\-195.7553\\-7\\-55.83749\\-197.7084\\-7\\-54.04433\\-201.6146\\-7\\-51.80223\\-205.5209\\-7\\-50.22997\\-207.474\\-7\\-49.75014\\-209.4271\\-7\\-49.72532\\-211.3803\\-7\\-50.3359\\-213.3334\\-7\\-50.62947\\-215.2865\\-7\\-49.10435\\-217.4812\\-7\\-47.15123\\-218.8067\\-7\\-44.99436\\-221.1459\\-7\\-44.7846\\-223.099\\-7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "347"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-158.8329\\-7\\-39.33873\\-158.4609\\-7\\-41.29185\\-157.4171\\-7\\-42.0452\\-156.6928\\-7\\-43.46122\\-154.7396\\-7\\-44.27691\\-152.7865\\-7\\-44.70125\\-150.8334\\-7\\-45.36325\\-148.8803\\-7\\-46.37498\\-146.9271\\-7\\-47.15123\\-145.8223\\-7\\-49.11223\\-144.974\\-7\\-51.49039\\-146.9271\\-7\\-52.44047\\-148.8803\\-7\\-53.0106\\-149.6219\\-7\\-54.7719\\-148.8803\\-7\\-53.77071\\-146.9271\\-7\\-53.0106\\-145.2322\\-7\\-51.79111\\-143.0209\\-7\\-51.05748\\-142.2761\\-7\\-49.10435\\-141.5731\\-7\\-47.15123\\-140.1873\\-7\\-46.1795\\-139.1146\\-7\\-45.1981\\-137.657\\-7\\-43.24498\\-135.2004\\-7\\-41.29185\\-133.7606\\-7\\-39.33873\\-132.5384\\-7\\-37.3856\\-131.9982\\-7\\-35.43248\\-131.5727\\-7\\-33.47935\\-130.5997\\-7\\-31.52623\\-130.2254\\-7\\-25.66685\\-130.2209\\-7\\-23.71373\\-130.5669\\-7\\-19.80748\\-132.4055\\-7\\-16.97306\\-135.2084\\-7\\-16.06281\\-137.1615\\-7\\-16.04983\\-141.0678\\-7\\-14.76841\\-143.0209\\-7\\-12.5764\\-144.974\\-7\\-11.28426\\-146.9271\\-7\\-10.49119\\-148.8803\\-7\\-9.518917\\-150.8334\\-7\\-9.726502\\-152.7865\\-7\\-10.04185\\-153.0091\\-7\\-11.99498\\-151.8699\\-7\\-13.9481\\-149.6287\\-7\\-15.90123\\-148.5482\\-7\\-16.23106\\-148.8803\\-7\\-17.27503\\-150.8334\\-7\\-19.80748\\-154.3477\\-7\\-22.49913\\-156.6928\\-7\\-23.71373\\-157.6271\\-7\\-25.66685\\-158.6535\\-7\\-27.61998\\-159.1678\\-7\\-29.5731\\-159.3902\\-7\\-31.52623\\-159.4671\\-7\\-35.43248\\-159.3662\\-7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "77"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "348"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "62.22377\\-217.2758\\-7\\63.47535\\-215.2865\\-7\\64.33966\\-213.3334\\-7\\65.05782\\-211.3803\\-7\\66.27386\\-209.4271\\-7\\66.66463\\-207.474\\-7\\66.13003\\-206.1891\\-7\\65.47337\\-205.5209\\-7\\64.4169\\-203.5678\\-7\\64.1769\\-203.3532\\-7\\60.27065\\-203.3499\\-7\\58.31752\\-203.7267\\-7\\56.3644\\-205.1102\\-7\\54.41127\\-204.056\\-7\\54.20528\\-203.5678\\-7\\54.07924\\-201.6146\\-7\\54.7578\\-199.6615\\-7\\55.2958\\-197.7084\\-7\\55.93521\\-195.7553\\-7\\56.68992\\-193.8021\\-7\\57.27361\\-189.8959\\-7\\57.8626\\-187.9428\\-7\\58.80581\\-185.9896\\-7\\59.73439\\-182.0834\\-7\\60.00011\\-180.1303\\-7\\60.68659\\-178.1771\\-7\\61.64446\\-174.2709\\-7\\62.61841\\-172.3178\\-7\\64.1769\\-171.1075\\-7\\66.13003\\-170.5262\\-7\\67.48013\\-168.4115\\-7\\68.14973\\-166.4584\\-7\\68.61942\\-164.5053\\-7\\65.82606\\-160.599\\-7\\65.68613\\-158.6459\\-7\\66.13003\\-158.1408\\-7\\68.08315\\-157.231\\-7\\70.03628\\-156.7449\\-7\\71.9894\\-156.9165\\-7\\73.94253\\-157.6935\\-7\\75.89565\\-158.7813\\-7\\77.84878\\-159.1512\\-7\\79.8019\\-159.7165\\-7\\83.70815\\-163.7716\\-7\\85.66128\\-164.729\\-7\\87.09245\\-166.4584\\-7\\88.55164\\-168.4115\\-7\\89.56753\\-169.3072\\-7\\90.51811\\-170.3646\\-7\\90.39913\\-172.3178\\-7\\89.56753\\-172.9366\\-7\\87.6144\\-172.3985\\-7\\85.66128\\-172.4805\\-7\\83.70815\\-173.3649\\-7\\81.75503\\-174.0994\\-7\\79.8019\\-175.3062\\-7\\75.89565\\-179.1613\\-7\\73.27824\\-182.0834\\-7\\72.2354\\-184.0365\\-7\\71.08337\\-185.9896\\-7\\70.03628\\-188.2023\\-7\\68.78591\\-189.8959\\-7\\68.22925\\-191.849\\-7\\68.20034\\-193.8021\\-7\\68.62222\\-195.7553\\-7\\69.25373\\-197.7084\\-7\\69.37598\\-199.6615\\-7\\69.67932\\-201.6146\\-7\\70.25725\\-203.5678\\-7\\71.11522\\-205.5209\\-7\\72.53359\\-207.474\\-7\\72.3439\\-209.4271\\-7\\71.71886\\-211.3803\\-7\\70.77847\\-213.3334\\-7\\68.08315\\-216.1316\\-7\\66.13003\\-216.7894\\-7\\64.1769\\-217.1645\\-7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002305"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "349"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "85.66128\\-210.0676\\-7\\83.70815\\-208.7741\\-7\\81.51376\\-207.474\\-7\\79.56344\\-205.5209\\-7\\78.04101\\-203.5678\\-7\\76.31418\\-199.6615\\-7\\75.18125\\-197.7084\\-7\\74.54554\\-195.7553\\-7\\74.29935\\-193.8021\\-7\\73.6075\\-191.849\\-7\\73.5787\\-189.8959\\-7\\74.22435\\-187.9428\\-7\\74.67051\\-185.9896\\-7\\75.89565\\-184.5661\\-7\\77.84878\\-183.3055\\-7\\81.75503\\-179.5199\\-7\\83.70815\\-178.7103\\-7\\85.66128\\-179.4585\\-7\\88.26724\\-182.0834\\-7\\88.9288\\-184.0365\\-7\\90.43613\\-185.9896\\-7\\91.52065\\-187.1953\\-7\\93.47378\\-188.405\\-7\\94.8628\\-189.8959\\-7\\95.16781\\-191.849\\-7\\95.17941\\-193.8021\\-7\\96.03932\\-195.7553\\-7\\95.89732\\-197.7084\\-7\\94.58891\\-199.6615\\-7\\93.16981\\-203.5678\\-7\\93.48141\\-205.5209\\-7\\94.0532\\-207.474\\-7\\93.9252\\-209.4271\\-7\\93.47378\\-209.8396\\-7\\91.52065\\-210.1408\\-7\\89.56753\\-210.2841\\-7\\87.6144\\-210.5696\\-7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "350"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-90.11997\\-213.9453\\-5\\-92.0731\\-212.8365\\-5\\-94.02622\\-212.5237\\-5\\-97.93247\\-212.4659\\-5\\-99.8856\\-211.7401\\-5\\-100.2911\\-211.3803\\-5\\-104.1198\\-207.474\\-5\\-106.398\\-203.5678\\-5\\-106.8126\\-201.6146\\-5\\-106.808\\-197.7084\\-5\\-106.2364\\-195.7553\\-5\\-105.0489\\-193.8021\\-5\\-104.4925\\-191.849\\-5\\-103.0344\\-189.8959\\-5\\-102.5058\\-187.9428\\-5\\-99.8856\\-184.6744\\-5\\-97.93247\\-183.4881\\-5\\-95.97935\\-182.4308\\-5\\-92.0731\\-180.7653\\-5\\-90.11997\\-180.6439\\-5\\-88.16685\\-180.7076\\-5\\-86.21372\\-181.0043\\-5\\-84.2606\\-182.4322\\-5\\-82.30747\\-183.3874\\-5\\-80.35435\\-185.1782\\-5\\-79.27248\\-185.9896\\-5\\-78.40122\\-186.8609\\-5\\-76.4481\\-188.2683\\-5\\-74.71692\\-189.8959\\-5\\-74.69441\\-191.849\\-5\\-73.27281\\-195.7553\\-5\\-73.19814\\-197.7084\\-5\\-73.80215\\-199.6615\\-5\\-74.68198\\-201.6146\\-5\\-74.70817\\-203.5678\\-5\\-75.65649\\-205.5209\\-5\\-77.01537\\-207.474\\-5\\-78.40122\\-208.994\\-5\\-79.04064\\-209.4271\\-5\\-80.35435\\-210.9598\\-5\\-81.40325\\-213.3334\\-5\\-82.30747\\-214.8041\\-5\\-84.2606\\-214.689\\-5\\-86.21372\\-214.4655\\-5\\-88.16685\\-214.4456\\-5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "351"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-66.68247\\-187.0116\\-5\\-68.6356\\-185.2572\\-5\\-69.75458\\-184.0365\\-5\\-70.58872\\-181.9538\\-5\\-71.80943\\-182.0834\\-5\\-72.54185\\-182.435\\-5\\-74.49497\\-183.8568\\-5\\-76.4481\\-183.1792\\-5\\-79.48058\\-180.1303\\-5\\-80.35435\\-179.4217\\-5\\-82.30747\\-178.5048\\-5\\-88.16685\\-176.7894\\-5\\-90.11997\\-175.8818\\-5\\-91.29795\\-174.2709\\-5\\-91.1775\\-172.3178\\-5\\-89.89142\\-170.3646\\-5\\-88.78934\\-168.4115\\-5\\-87.07685\\-166.4584\\-5\\-85.70841\\-164.5053\\-5\\-85.10917\\-162.5521\\-5\\-84.2606\\-161.7157\\-5\\-82.30747\\-160.7476\\-5\\-80.35435\\-159.5846\\-5\\-78.40122\\-158.0037\\-5\\-76.4481\\-157.5228\\-5\\-74.49497\\-157.8518\\-5\\-72.54185\\-159.3154\\-5\\-70.58872\\-160.559\\-5\\-68.36507\\-164.5053\\-5\\-67.65421\\-166.4584\\-5\\-66.31549\\-168.4115\\-5\\-66.28574\\-170.3646\\-5\\-66.13807\\-172.3178\\-5\\-65.51168\\-174.2709\\-5\\-64.30398\\-176.224\\-5\\-64.28546\\-178.1771\\-5\\-64.05327\\-180.1303\\-5\\-63.94535\\-182.0834\\-5\\-64.13701\\-184.0365\\-5\\-64.18214\\-185.9896\\-5\\-64.72935\\-187.2851\\-5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "352"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-47.2832\\-221.1459\\-5\\-49.10435\\-219.9207\\-5\\-51.05748\\-219.8952\\-5\\-53.1815\\-219.1928\\-5\\-54.96373\\-217.9421\\-5\\-57.09674\\-217.2396\\-5\\-58.86998\\-216.7514\\-5\\-60.8231\\-216.5448\\-5\\-62.77623\\-215.9594\\-5\\-66.68247\\-215.0596\\-5\\-68.6356\\-214.1713\\-5\\-70.58872\\-213.1296\\-5\\-72.40338\\-211.3803\\-5\\-71.86101\\-209.4271\\-5\\-70.58872\\-206.3773\\-5\\-69.81561\\-205.5209\\-5\\-68.6356\\-204.5094\\-5\\-66.68247\\-204.0811\\-5\\-64.72935\\-204.0878\\-5\\-63.39471\\-203.5678\\-5\\-64.07298\\-201.6146\\-5\\-64.18829\\-199.6615\\-5\\-63.53435\\-197.7084\\-5\\-62.77623\\-196.268\\-5\\-61.74464\\-193.8021\\-5\\-60.8231\\-193.173\\-5\\-58.86998\\-192.9892\\-5\\-58.05703\\-193.8021\\-5\\-57.33279\\-195.7553\\-5\\-55.98701\\-197.7084\\-5\\-55.40762\\-199.6615\\-5\\-54.093\\-201.6146\\-5\\-53.43597\\-203.5678\\-5\\-52.18428\\-205.5209\\-5\\-50.84293\\-209.4271\\-5\\-50.57877\\-211.3803\\-5\\-51.34144\\-213.3334\\-5\\-51.41555\\-215.2865\\-5\\-51.05748\\-216.1817\\-5\\-49.10435\\-218.1106\\-5\\-47.10802\\-219.1928\\-5\\-47.01559\\-221.1459\\-5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "60"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "353"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.33873\\-159.4619\\-5\\-41.29185\\-158.17\\-5\\-43.24498\\-156.1867\\-5\\-44.28836\\-154.7396\\-5\\-44.69833\\-152.7865\\-5\\-44.89414\\-148.8803\\-5\\-46.29364\\-146.9271\\-5\\-47.15123\\-145.978\\-5\\-49.10435\\-145.9099\\-5\\-50.14642\\-146.9271\\-5\\-53.0106\\-150.2348\\-5\\-54.77498\\-148.8803\\-5\\-53.73794\\-146.9271\\-5\\-52.45338\\-144.974\\-5\\-51.62714\\-143.0209\\-5\\-51.05748\\-142.435\\-5\\-49.10435\\-141.5731\\-5\\-47.15123\\-140.4362\\-5\\-45.77742\\-139.1146\\-5\\-44.17146\\-137.1615\\-5\\-43.24498\\-136.1743\\-5\\-41.29185\\-134.5363\\-5\\-39.33873\\-133.7689\\-5\\-37.3856\\-132.5569\\-5\\-35.43248\\-132.0183\\-5\\-31.52623\\-131.3397\\-5\\-29.5731\\-131.2941\\-5\\-25.66685\\-131.3248\\-5\\-21.7606\\-131.8562\\-5\\-19.80748\\-132.4576\\-5\\-17.02501\\-135.2084\\-5\\-16.17176\\-137.1615\\-5\\-16.06281\\-139.1146\\-5\\-16.06281\\-141.0678\\-5\\-15.13134\\-143.0209\\-5\\-13.9481\\-144.2773\\-5\\-11.99498\\-146.0388\\-5\\-11.15419\\-146.9271\\-5\\-9.153595\\-150.8334\\-5\\-8.331031\\-152.7865\\-5\\-9.525399\\-154.7396\\-5\\-10.04185\\-155.1346\\-5\\-10.5583\\-154.7396\\-5\\-11.99498\\-152.6208\\-5\\-13.08894\\-150.8334\\-5\\-13.9481\\-149.9501\\-5\\-15.90123\\-149.7514\\-5\\-16.85816\\-150.8334\\-5\\-18.21347\\-152.7865\\-5\\-19.03151\\-154.7396\\-5\\-19.80748\\-155.4952\\-5\\-21.7606\\-157.1274\\-5\\-23.71373\\-157.9277\\-5\\-25.66685\\-159.1596\\-5\\-27.61998\\-159.396\\-5\\-29.5731\\-159.7697\\-5\\-31.52623\\-160.2735\\-5\\-33.47935\\-160.2493\\-5\\-35.43248\\-159.722\\-5\\-37.3856\\-159.4722\\-5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "77"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "354"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "66.13003\\-215.1115\\-5\\65.1328\\-213.3334\\-5\\65.58562\\-211.3803\\-5\\66.99429\\-209.4271\\-5\\67.74487\\-207.474\\-5\\67.38285\\-205.5209\\-5\\66.49197\\-203.5678\\-5\\66.13003\\-203.157\\-5\\64.1769\\-201.6395\\-5\\62.22377\\-201.2173\\-5\\58.31752\\-201.2679\\-5\\56.3644\\-201.8421\\-5\\56.13698\\-201.6146\\-5\\55.62872\\-199.6615\\-5\\56.03888\\-197.7084\\-5\\56.77079\\-195.7553\\-5\\57.73769\\-191.849\\-5\\57.95131\\-189.8959\\-5\\58.78837\\-187.9428\\-5\\59.75939\\-184.0365\\-5\\60.00011\\-182.0834\\-5\\60.09626\\-180.1303\\-5\\61.08216\\-178.1771\\-5\\61.59219\\-176.224\\-5\\62.22377\\-174.7714\\-5\\63.51947\\-172.3178\\-5\\64.1769\\-171.7295\\-5\\66.13003\\-171.3825\\-5\\67.13202\\-170.3646\\-5\\67.57784\\-168.4115\\-5\\68.82745\\-166.4584\\-5\\69.27905\\-164.5053\\-5\\68.79929\\-162.5521\\-5\\66.82603\\-160.599\\-5\\66.22476\\-158.6459\\-5\\68.08315\\-157.3623\\-5\\70.03628\\-157.1724\\-5\\71.9894\\-157.1896\\-5\\73.94253\\-157.8254\\-5\\75.89565\\-159.1078\\-5\\77.84878\\-159.1596\\-5\\79.8019\\-159.7417\\-5\\80.63577\\-160.599\\-5\\81.55559\\-162.5521\\-5\\83.70815\\-164.4105\\-5\\85.66128\\-165.4747\\-5\\86.4154\\-166.4584\\-5\\87.16311\\-168.4115\\-5\\87.6144\\-168.7958\\-5\\89.56753\\-169.7719\\-5\\90.20441\\-170.3646\\-5\\91.88259\\-172.3178\\-5\\92.48559\\-174.2709\\-5\\91.52065\\-175.0428\\-5\\89.56753\\-174.6459\\-5\\87.6144\\-173.8524\\-5\\85.66128\\-173.5706\\-5\\83.70815\\-174.8229\\-5\\81.75503\\-175.5366\\-5\\80.89853\\-176.224\\-5\\77.84878\\-179.1394\\-5\\74.94846\\-182.0834\\-5\\73.19382\\-184.0365\\-5\\71.9894\\-187.2148\\-5\\70.87791\\-189.8959\\-5\\70.27858\\-191.849\\-5\\70.26219\\-193.8021\\-5\\70.59515\\-197.7084\\-5\\70.62222\\-199.6615\\-5\\71.22768\\-201.6146\\-5\\73.13251\\-205.5209\\-5\\73.88869\\-207.474\\-5\\73.04226\\-209.4271\\-5\\71.9894\\-211.3709\\-5\\70.72327\\-213.3334\\-5\\70.03628\\-214.0204\\-5\\68.08315\\-215.1249\\-5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002304"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "355"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "85.08929\\-207.474\\-5\\83.70815\\-205.2846\\-5\\82.30756\\-203.5678\\-5\\81.75503\\-203.2635\\-5\\79.8019\\-202.5912\\-5\\79.04765\\-201.6146\\-5\\76.0994\\-195.7553\\-5\\76.05724\\-193.8021\\-5\\75.42392\\-191.849\\-5\\75.05183\\-189.8959\\-5\\75.63097\\-187.9428\\-5\\75.89565\\-187.4932\\-5\\77.22983\\-185.9896\\-5\\77.84878\\-185.5221\\-5\\79.8019\\-183.5099\\-5\\80.94763\\-182.0834\\-5\\81.75503\\-181.2946\\-5\\83.70815\\-180.5284\\-5\\85.66128\\-180.8186\\-5\\87.6144\\-181.4486\\-5\\88.26359\\-182.0834\\-5\\89.02131\\-184.0365\\-5\\90.46053\\-185.9896\\-5\\91.52065\\-186.9247\\-5\\93.47378\\-187.4374\\-5\\94.02737\\-187.9428\\-5\\95.14507\\-189.8959\\-5\\95.16781\\-193.8021\\-5\\95.46475\\-195.7553\\-5\\95.46446\\-197.7084\\-5\\95.11208\\-199.6615\\-5\\94.24628\\-201.6146\\-5\\93.08684\\-203.5678\\-5\\92.80046\\-205.5209\\-5\\91.97757\\-207.474\\-5\\91.52065\\-207.9352\\-5\\89.56753\\-208.8809\\-5\\87.6144\\-209.2304\\-5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "356"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-92.0731\\-211.8482\\-3\\-94.02622\\-211.1194\\-3\\-97.93247\\-210.7319\\-3\\-99.8856\\-209.669\\-3\\-101.8387\\-207.8052\\-3\\-104.0131\\-205.5209\\-3\\-104.8674\\-203.5678\\-3\\-105.186\\-201.6146\\-3\\-105.1897\\-197.7084\\-3\\-105.0043\\-195.7553\\-3\\-104.9949\\-193.8021\\-3\\-104.4528\\-191.849\\-3\\-102.7308\\-189.8959\\-3\\-101.8778\\-187.9428\\-3\\-99.8856\\-186.817\\-3\\-98.6942\\-185.9896\\-3\\-95.97935\\-184.9987\\-3\\-94.67076\\-184.0365\\-3\\-92.0731\\-183.0874\\-3\\-90.11997\\-182.9558\\-3\\-88.16685\\-182.561\\-3\\-86.21372\\-182.7005\\-3\\-84.2606\\-183.6872\\-3\\-82.30747\\-185.1478\\-3\\-81.45976\\-185.9896\\-3\\-80.35435\\-187.4773\\-3\\-78.40122\\-189.4459\\-3\\-77.83458\\-189.8959\\-3\\-76.78614\\-191.849\\-3\\-76.70719\\-193.8021\\-3\\-76.4481\\-194.5346\\-3\\-75.69243\\-195.7553\\-3\\-75.1335\\-197.7084\\-3\\-76.71864\\-201.6146\\-3\\-76.72047\\-203.5678\\-3\\-77.68043\\-205.5209\\-3\\-78.40122\\-206.3777\\-3\\-80.35435\\-208.0075\\-3\\-81.82858\\-209.4271\\-3\\-82.30747\\-210.1002\\-3\\-84.2606\\-212.0028\\-3\\-86.21372\\-212.7379\\-3\\-88.16685\\-212.805\\-3\\-90.11997\\-212.46\\-3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "76"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "357"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-66.68247\\-213.9319\\-3\\-68.6356\\-213.0977\\-3\\-70.58872\\-212.663\\-3\\-72.54185\\-211.6402\\-3\\-72.80368\\-211.3803\\-3\\-73.43423\\-209.4271\\-3\\-72.89063\\-207.474\\-3\\-72.85923\\-205.5209\\-3\\-72.54185\\-204.7885\\-3\\-71.74839\\-203.5678\\-3\\-70.96714\\-201.6146\\-3\\-70.83485\\-197.7084\\-3\\-70.58872\\-196.9876\\-3\\-69.46355\\-195.7553\\-3\\-69.33964\\-193.8021\\-3\\-70.58872\\-193.0005\\-3\\-71.40945\\-191.849\\-3\\-73.35565\\-189.8959\\-3\\-74.65903\\-187.9428\\-3\\-75.35177\\-185.9896\\-3\\-76.4481\\-185.1351\\-3\\-80.35435\\-181.2209\\-3\\-82.30747\\-179.4813\\-3\\-84.2606\\-178.9748\\-3\\-86.21372\\-178.7896\\-3\\-88.16685\\-178.3058\\-3\\-90.11997\\-178.3607\\-3\\-92.0731\\-178.5824\\-3\\-94.02622\\-178.5159\\-3\\-94.47091\\-178.1771\\-3\\-94.92838\\-176.224\\-3\\-92.97231\\-174.2709\\-3\\-92.0731\\-173.1213\\-3\\-90.75388\\-170.3646\\-3\\-88.9763\\-168.4115\\-3\\-87.07132\\-166.4584\\-3\\-85.65961\\-164.5053\\-3\\-84.90613\\-162.5521\\-3\\-84.2606\\-161.9278\\-3\\-82.30747\\-161.3586\\-3\\-80.35435\\-159.6517\\-3\\-78.40122\\-158.8576\\-3\\-76.4481\\-158.4637\\-3\\-74.49497\\-158.7406\\-3\\-72.54185\\-159.4408\\-3\\-71.14285\\-160.599\\-3\\-69.62142\\-162.5521\\-3\\-68.37651\\-164.5053\\-3\\-67.66387\\-166.4584\\-3\\-66.31549\\-168.4115\\-3\\-66.27608\\-172.3178\\-3\\-65.68048\\-174.2709\\-3\\-64.30398\\-176.224\\-3\\-64.28546\\-178.1771\\-3\\-63.83036\\-180.1303\\-3\\-63.02571\\-182.0834\\-3\\-63.02391\\-184.0365\\-3\\-62.31426\\-185.9896\\-3\\-61.37951\\-189.8959\\-3\\-60.8231\\-190.4459\\-3\\-60.09214\\-191.849\\-3\\-58.45586\\-193.8021\\-3\\-57.71454\\-195.7553\\-3\\-56.64072\\-197.7084\\-3\\-55.15073\\-201.6146\\-3\\-54.03939\\-203.5678\\-3\\-53.0106\\-207.198\\-3\\-52.09507\\-209.4271\\-3\\-51.95266\\-211.3803\\-3\\-53.0106\\-212.7494\\-3\\-54.96373\\-212.9681\\-3\\-56.07655\\-213.3334\\-3\\-56.91685\\-213.8284\\-3\\-58.86998\\-214.4904\\-3\\-60.8231\\-214.5346\\-3\\-64.72935\\-214.4487\\-3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "358"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-160.5754\\-3\\-39.33873\\-160.56\\-3\\-41.29185\\-159.6774\\-3\\-42.56138\\-158.6459\\-3\\-44.26426\\-156.6928\\-3\\-44.82638\\-154.7396\\-3\\-44.9864\\-152.7865\\-3\\-45.02372\\-148.8803\\-3\\-46.5379\\-146.9271\\-3\\-47.15123\\-146.3457\\-3\\-49.10435\\-146.7595\\-3\\-51.05748\\-149.5346\\-3\\-52.13983\\-150.8334\\-3\\-53.0106\\-151.448\\-3\\-53.76779\\-150.8334\\-3\\-54.36663\\-148.8803\\-3\\-53.21289\\-146.9271\\-3\\-51.80393\\-144.974\\-3\\-51.01992\\-143.0209\\-3\\-49.10435\\-141.7033\\-3\\-47.15123\\-141.4348\\-3\\-45.1981\\-139.6796\\-3\\-43.24498\\-137.0631\\-3\\-41.29185\\-135.7932\\-3\\-39.33873\\-134.284\\-3\\-37.3856\\-133.6712\\-3\\-35.43248\\-132.6338\\-3\\-33.47935\\-132.184\\-3\\-23.71373\\-132.1653\\-3\\-21.7606\\-132.2071\\-3\\-19.80748\\-133.0642\\-3\\-17.63338\\-135.2084\\-3\\-16.53677\\-137.1615\\-3\\-16.17176\\-139.1146\\-3\\-16.06281\\-141.0678\\-3\\-15.72558\\-143.0209\\-3\\-14.77082\\-144.974\\-3\\-13.9481\\-145.6724\\-3\\-11.99498\\-146.3147\\-3\\-11.32585\\-146.9271\\-3\\-9.818055\\-148.8803\\-3\\-8.036543\\-152.7865\\-3\\-8.288477\\-154.7396\\-3\\-9.065289\\-156.6928\\-3\\-10.04185\\-157.6568\\-3\\-10.55338\\-156.6928\\-3\\-11.79522\\-154.7396\\-3\\-12.15657\\-152.7865\\-3\\-13.30763\\-150.8334\\-3\\-13.9481\\-150.2566\\-3\\-15.90123\\-150.2586\\-3\\-16.49641\\-150.8334\\-3\\-17.85435\\-153.0168\\-3\\-18.74084\\-154.7396\\-3\\-21.7606\\-157.6182\\-3\\-23.71373\\-158.8576\\-3\\-25.66685\\-159.396\\-3\\-27.61998\\-159.7753\\-3\\-29.5731\\-160.7606\\-3\\-31.52623\\-161.1372\\-3\\-33.47935\\-161.1292\\-3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "359"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-131.9597\\-3\\48.93942\\-131.3021\\-3\\48.5519\\-131.0007\\-3\\46.59877\\-128.3217\\-3\\46.16409\\-127.3959\\-3\\46.35129\\-125.4428\\-3\\46.59877\\-125.1172\\-3\\48.5519\\-124.3478\\-3\\49.92403\\-125.4428\\-3\\51.86971\\-127.3959\\-3\\53.03798\\-129.349\\-3\\52.29835\\-131.3021\\-3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "73"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "360"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "68.08315\\-214.3036\\-3\\66.66016\\-213.3334\\-3\\66.6872\\-211.3803\\-3\\67.19069\\-209.4271\\-3\\68.41081\\-207.474\\-3\\68.76727\\-205.5209\\-3\\68.08315\\-204.0835\\-3\\66.3684\\-201.6146\\-3\\66.13003\\-201.3999\\-3\\64.1769\\-200.5941\\-3\\62.22377\\-200.0613\\-3\\60.27065\\-199.9847\\-3\\58.31752\\-199.4502\\-3\\57.05591\\-197.7084\\-3\\57.3723\\-195.7553\\-3\\58.67434\\-191.849\\-3\\59.25706\\-187.9428\\-3\\59.78529\\-185.9896\\-3\\60.09626\\-184.0365\\-3\\60.20406\\-182.0834\\-3\\61.7984\\-176.224\\-3\\62.86611\\-174.2709\\-3\\63.27794\\-172.3178\\-3\\64.1769\\-171.2404\\-3\\66.13003\\-171.5767\\-3\\67.1401\\-170.3646\\-3\\67.41365\\-168.4115\\-3\\68.67483\\-166.4584\\-3\\69.17584\\-164.5053\\-3\\69.0092\\-162.5521\\-3\\68.08315\\-161.6858\\-3\\66.59676\\-160.599\\-3\\66.92857\\-158.6459\\-3\\68.08315\\-157.5645\\-3\\70.03628\\-157.181\\-3\\71.9894\\-157.1981\\-3\\73.94253\\-157.8312\\-3\\75.89565\\-159.1167\\-3\\77.84878\\-159.2232\\-3\\79.8019\\-159.9831\\-3\\80.39749\\-160.599\\-3\\80.9489\\-162.5521\\-3\\81.75503\\-163.4612\\-3\\85.07867\\-166.4584\\-3\\86.5738\\-168.4115\\-3\\87.6144\\-169.4191\\-3\\89.56753\\-170.2019\\-3\\91.52065\\-171.5419\\-3\\92.29647\\-172.3178\\-3\\93.77976\\-174.2709\\-3\\94.28345\\-176.224\\-3\\93.47378\\-177.7116\\-3\\91.52065\\-177.0094\\-3\\89.56753\\-176.6732\\-3\\87.6144\\-176.0421\\-3\\85.66128\\-175.6543\\-3\\84.69997\\-176.224\\-3\\81.75503\\-177.3768\\-3\\79.8019\\-179.0542\\-3\\77.84878\\-180.892\\-3\\75.04298\\-184.0365\\-3\\74.23266\\-185.9896\\-3\\73.19691\\-187.9428\\-3\\72.45273\\-189.8959\\-3\\72.25905\\-191.849\\-3\\72.2299\\-197.7084\\-3\\72.31773\\-199.6615\\-3\\73.33547\\-201.6146\\-3\\75.24734\\-205.5209\\-3\\74.95837\\-207.474\\-3\\73.94253\\-209.2069\\-3\\72.2299\\-211.3803\\-3\\70.03628\\-213.3258\\-3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002303"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "33"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "361"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "89.56753\\-207.5643\\-3\\88.97073\\-207.474\\-3\\87.6144\\-206.8142\\-3\\87.00092\\-205.5209\\-3\\85.66128\\-204.1982\\-3\\85.20012\\-203.5678\\-3\\83.70815\\-202.0618\\-3\\81.75503\\-201.0578\\-3\\80.20507\\-199.6615\\-3\\78.43722\\-195.7553\\-3\\78.32543\\-193.8021\\-3\\78.36345\\-191.849\\-3\\78.94411\\-189.8959\\-3\\79.8019\\-188.6264\\-3\\80.97136\\-185.9896\\-3\\82.29911\\-184.0365\\-3\\83.70815\\-183.1316\\-3\\85.66128\\-182.8142\\-3\\87.6144\\-182.8983\\-3\\88.57954\\-184.0365\\-3\\89.56753\\-185.6008\\-3\\90.0341\\-185.9896\\-3\\91.52065\\-186.6901\\-3\\93.47378\\-187.0511\\-3\\94.40594\\-187.9428\\-3\\95.04987\\-189.8959\\-3\\95.04987\\-191.849\\-3\\95.16781\\-195.7553\\-3\\95.16781\\-197.7084\\-3\\95.07008\\-199.6615\\-3\\94.04855\\-201.6146\\-3\\92.55432\\-203.5678\\-3\\91.61092\\-205.5209\\-3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "362"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-94.02622\\-209.5792\\-1\\-95.97935\\-208.5367\\-1\\-97.93247\\-207.8496\\-1\\-99.8856\\-206.7079\\-1\\-101.0236\\-205.5209\\-1\\-102.2647\\-203.5678\\-1\\-103.0446\\-201.6146\\-1\\-103.1754\\-199.6615\\-1\\-102.8346\\-195.7553\\-1\\-103.9427\\-193.8021\\-1\\-103.7918\\-193.4766\\-1\\-102.3193\\-191.849\\-1\\-101.8387\\-191.505\\-1\\-99.8856\\-191.1194\\-1\\-99.12083\\-191.849\\-1\\-98.65269\\-193.8021\\-1\\-98.52271\\-195.7553\\-1\\-97.78599\\-197.7084\\-1\\-95.97935\\-200.0269\\-1\\-94.02622\\-200.952\\-1\\-92.0731\\-201.0165\\-1\\-88.16685\\-201.0165\\-1\\-86.67149\\-201.6146\\-1\\-85.7412\\-201.6146\\-1\\-84.2606\\-200.8975\\-1\\-83.39135\\-199.6615\\-1\\-82.86357\\-197.7084\\-1\\-82.67738\\-195.7553\\-1\\-83.39135\\-193.8021\\-1\\-82.30747\\-192.451\\-1\\-80.35435\\-192.4322\\-1\\-79.15151\\-193.8021\\-1\\-79.13667\\-201.6146\\-1\\-78.26324\\-203.5678\\-1\\-80.35435\\-204.5254\\-1\\-81.54667\\-205.5209\\-1\\-86.21372\\-209.9417\\-1\\-88.16685\\-210.4953\\-1\\-90.11997\\-209.608\\-1\\-92.0731\\-209.8089\\-1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "363"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-84.2606\\-191.4421\\-1\\-85.13036\\-189.8959\\-1\\-86.56468\\-187.9428\\-1\\-87.17549\\-185.9896\\-1\\-86.21372\\-185.3143\\-1\\-84.2606\\-186.8091\\-1\\-82.97965\\-187.9428\\-1\\-83.5648\\-189.8959\\-1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "68"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "364"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-70.58872\\-211.6859\\-1\\-72.54185\\-210.6365\\-1\\-73.85007\\-209.4271\\-1\\-75.21622\\-207.474\\-1\\-75.44078\\-205.5209\\-1\\-74.97029\\-203.5678\\-1\\-74.86733\\-201.6146\\-1\\-73.84047\\-199.6615\\-1\\-73.15801\\-197.7084\\-1\\-72.92398\\-195.7553\\-1\\-72.94061\\-193.8021\\-1\\-73.90552\\-191.849\\-1\\-75.13455\\-189.8959\\-1\\-75.92774\\-187.9428\\-1\\-77.59229\\-185.9896\\-1\\-80.35435\\-183.2286\\-1\\-82.30747\\-181.4403\\-1\\-84.2606\\-180.7474\\-1\\-86.21372\\-180.64\\-1\\-88.16685\\-179.6857\\-1\\-90.11997\\-179.8861\\-1\\-92.0731\\-180.658\\-1\\-94.02622\\-180.658\\-1\\-95.97935\\-181.2958\\-1\\-96.96479\\-180.1303\\-1\\-96.51257\\-178.1771\\-1\\-95.65383\\-176.224\\-1\\-94.10071\\-174.2709\\-1\\-92.0731\\-172.1016\\-1\\-90.92139\\-170.3646\\-1\\-87.06573\\-166.4584\\-1\\-85.50396\\-164.5053\\-1\\-83.63584\\-162.5521\\-1\\-82.30747\\-161.5931\\-1\\-80.35435\\-159.6647\\-1\\-78.40122\\-159.1427\\-1\\-74.49497\\-158.9607\\-1\\-72.54185\\-159.1078\\-1\\-70.58872\\-160.6595\\-1\\-69.58466\\-162.5521\\-1\\-68.33163\\-164.5053\\-1\\-67.6252\\-166.4584\\-1\\-66.31549\\-168.4115\\-1\\-66.28574\\-172.3178\\-1\\-65.71095\\-174.2709\\-1\\-64.37253\\-176.224\\-1\\-64.28546\\-178.1771\\-1\\-63.77519\\-180.1303\\-1\\-62.45071\\-182.0834\\-1\\-62.36983\\-184.0365\\-1\\-61.88647\\-185.9896\\-1\\-60.98586\\-187.9428\\-1\\-60.48701\\-189.8959\\-1\\-59.30733\\-193.8021\\-1\\-57.96317\\-195.7553\\-1\\-57.61228\\-197.7084\\-1\\-57.11629\\-199.6615\\-1\\-55.95509\\-201.6146\\-1\\-55.01591\\-205.5209\\-1\\-54.05692\\-207.474\\-1\\-53.73061\\-209.4271\\-1\\-54.96373\\-210.6708\\-1\\-56.91685\\-210.8954\\-1\\-60.8231\\-210.9057\\-1\\-61.90992\\-211.3803\\-1\\-62.77623\\-211.9397\\-1\\-64.72935\\-212.6748\\-1\\-68.6356\\-212.4707\\-1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "62"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "365"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-161.4469\\-1\\-42.66662\\-160.599\\-1\\-44.57525\\-158.6459\\-1\\-45.71111\\-156.6928\\-1\\-45.80561\\-154.7396\\-1\\-45.83934\\-150.8334\\-1\\-46.00028\\-148.8803\\-1\\-47.15123\\-147.7766\\-1\\-49.10435\\-148.4652\\-1\\-49.48746\\-148.8803\\-1\\-50.62275\\-150.8334\\-1\\-51.05748\\-151.3857\\-1\\-53.0106\\-152.6001\\-1\\-54.01752\\-150.8334\\-1\\-53.4082\\-148.8803\\-1\\-51.835\\-146.9271\\-1\\-50.66309\\-144.974\\-1\\-50.17363\\-143.0209\\-1\\-49.10435\\-142.1633\\-1\\-47.15123\\-142.0311\\-1\\-45.83106\\-141.0678\\-1\\-44.13769\\-139.1146\\-1\\-42.26305\\-137.1615\\-1\\-41.29185\\-136.2821\\-1\\-39.33873\\-134.7872\\-1\\-37.3856\\-134.1631\\-1\\-33.47935\\-133.491\\-1\\-23.71373\\-133.479\\-1\\-21.7606\\-133.6668\\-1\\-19.80748\\-134.4509\\-1\\-17.85435\\-136.2688\\-1\\-17.07205\\-137.1615\\-1\\-16.55735\\-139.1146\\-1\\-16.17176\\-141.0678\\-1\\-16.06281\\-143.0209\\-1\\-15.74586\\-144.974\\-1\\-13.9481\\-146.7449\\-1\\-11.99498\\-147.0887\\-1\\-10.04185\\-148.1778\\-1\\-9.347532\\-148.8803\\-1\\-8.317284\\-150.8334\\-1\\-8.022142\\-152.7865\\-1\\-7.993985\\-156.6928\\-1\\-7.927136\\-158.6459\\-1\\-8.088726\\-159.6668\\-1\\-10.04185\\-159.0057\\-1\\-10.84403\\-156.6928\\-1\\-11.73411\\-154.7396\\-1\\-12.28794\\-152.7865\\-1\\-13.9481\\-151.0328\\-1\\-15.90123\\-151.3283\\-1\\-17.02529\\-152.7865\\-1\\-18.16659\\-154.7396\\-1\\-20.13749\\-156.6928\\-1\\-22.59665\\-158.6459\\-1\\-23.71373\\-159.396\\-1\\-25.66685\\-159.827\\-1\\-27.61998\\-160.892\\-1\\-29.5731\\-161.3756\\-1\\-31.52623\\-161.4895\\-1\\-37.3856\\-161.5096\\-1\\-39.33873\\-161.6152\\-1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "366"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "13.39565\\-202.0426\\-1\\12.88583\\-201.6146\\-1\\11.90029\\-199.6615\\-1\\13.39565\\-198.7108\\-1\\15.34877\\-198.2541\\-1\\19.25502\\-198.084\\-1\\25.1144\\-198.084\\-1\\27.06752\\-198.6713\\-1\\29.02065\\-199.0695\\-1\\32.9269\\-199.0974\\-1\\34.1219\\-199.6615\\-1\\34.88002\\-201.1777\\-1\\34.88002\\-201.7367\\-1\\32.9269\\-202.3099\\-1\\27.06752\\-202.3339\\-1\\25.1144\\-202.5349\\-1\\21.20815\\-202.4577\\-1\\19.25502\\-202.5529\\-1\\17.3019\\-202.3339\\-1\\15.34877\\-202.3301\\-1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "367"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-135.5953\\-1\\53.61227\\-135.2084\\-1\\52.45815\\-134.4005\\-1\\50.50502\\-133.8558\\-1\\48.5519\\-133.1144\\-1\\46.59877\\-131.1608\\-1\\45.86635\\-129.349\\-1\\45.38741\\-127.3959\\-1\\45.80323\\-125.4428\\-1\\46.59877\\-123.5464\\-1\\48.5519\\-121.859\\-1\\50.50502\\-121.3352\\-1\\52.45815\\-122.5673\\-1\\54.41127\\-124.5735\\-1\\56.5882\\-127.3959\\-1\\56.68992\\-131.3021\\-1\\56.6813\\-133.2553\\-1\\56.3644\\-134.0528\\-1\\55.32953\\-135.2084\\-1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "71"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "368"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "68.08315\\-211.4204\\-1\\67.59779\\-209.4271\\-1\\67.92156\\-207.474\\-1\\68.71473\\-205.5209\\-1\\68.64824\\-203.5678\\-1\\67.22237\\-201.6146\\-1\\66.13003\\-200.5334\\-1\\62.22377\\-199.0964\\-1\\60.27065\\-198.7754\\-1\\58.88784\\-197.7084\\-1\\58.82284\\-195.7553\\-1\\58.98702\\-193.8021\\-1\\59.27914\\-191.849\\-1\\59.82143\\-189.8959\\-1\\59.93014\\-187.9428\\-1\\60.21847\\-185.9896\\-1\\60.74149\\-184.0365\\-1\\61.21556\\-180.1303\\-1\\61.63241\\-178.1771\\-1\\61.81738\\-176.224\\-1\\62.15719\\-174.2709\\-1\\62.12903\\-172.3178\\-1\\61.85678\\-170.3646\\-1\\62.22377\\-169.9531\\-1\\66.13003\\-168.9799\\-1\\66.42757\\-168.4115\\-1\\67.07376\\-166.4584\\-1\\66.89825\\-164.5053\\-1\\64.40578\\-162.5521\\-1\\65.22246\\-160.599\\-1\\66.78658\\-158.6459\\-1\\68.08315\\-157.5264\\-1\\70.03628\\-157.181\\-1\\71.9894\\-157.1981\\-1\\73.94253\\-157.7982\\-1\\75.89565\\-159.0618\\-1\\77.84878\\-159.4393\\-1\\79.19632\\-160.599\\-1\\80.70034\\-162.5521\\-1\\84.62864\\-166.4584\\-1\\87.6144\\-169.5699\\-1\\89.50571\\-170.3646\\-1\\91.52065\\-171.5619\\-1\\92.26807\\-172.3178\\-1\\94.38208\\-176.224\\-1\\95.29\\-178.1771\\-1\\94.13042\\-180.1303\\-1\\93.47378\\-180.3893\\-1\\91.52065\\-179.2306\\-1\\89.56753\\-178.688\\-1\\85.66128\\-178.6333\\-1\\83.70815\\-178.7588\\-1\\81.75503\\-179.4608\\-1\\79.8019\\-180.8481\\-1\\78.44041\\-182.0834\\-1\\77.00667\\-184.0365\\-1\\75.89565\\-186.7859\\-1\\75.24178\\-187.9428\\-1\\74.43081\\-189.8959\\-1\\74.28672\\-191.849\\-1\\74.24247\\-193.8021\\-1\\74.30143\\-195.7553\\-1\\74.50917\\-197.7084\\-1\\75.27611\\-199.6615\\-1\\76.41136\\-201.6146\\-1\\77.07683\\-203.5678\\-1\\77.55038\\-205.5209\\-1\\76.29515\\-207.474\\-1\\73.94253\\-209.7437\\-1\\70.96401\\-211.3803\\-1\\70.03628\\-212.0245\\-1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002302"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "22"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "369"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "89.56753\\-202.2695\\-1\\87.6144\\-200.7336\\-1\\85.66128\\-200.309\\-1\\83.70815\\-198.8292\\-1\\82.44363\\-197.7084\\-1\\82.41812\\-191.849\\-1\\82.45963\\-189.8959\\-1\\82.94975\\-187.9428\\-1\\84.34617\\-185.9896\\-1\\85.66128\\-185.0591\\-1\\87.6144\\-185.6099\\-1\\89.56753\\-187.6471\\-1\\93.47378\\-187.3475\\-1\\94.06103\\-187.9428\\-1\\94.32325\\-191.849\\-1\\94.77034\\-193.8021\\-1\\95.04987\\-195.7553\\-1\\95.10138\\-197.7084\\-1\\94.7473\\-199.6615\\-1\\93.47378\\-200.8849\\-1\\91.82969\\-201.6146\\-1\\91.52065\\-201.9088\\-1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "370"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-90.11997\\-206.1372\\1\\-90.82527\\-205.5209\\1\\-92.0731\\-204.7771\\1\\-97.93247\\-204.7592\\1\\-99.09293\\-203.5678\\1\\-100.5667\\-201.6146\\1\\-101.0587\\-199.6615\\1\\-99.8856\\-198.0905\\1\\-97.93247\\-198.8695\\1\\-95.97935\\-200.8639\\1\\-94.02622\\-202.4542\\1\\-88.16685\\-202.4821\\1\\-86.40903\\-203.5678\\1\\-87.23167\\-205.5209\\1\\-88.16685\\-206.4805\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "64"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "371"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-70.58872\\-210.0848\\1\\-72.54185\\-208.9652\\1\\-74.49497\\-208.5975\\1\\-76.4481\\-207.6156\\1\\-77.66117\\-205.5209\\1\\-78.01282\\-203.5678\\1\\-77.25401\\-201.6146\\1\\-77.21608\\-199.6615\\1\\-77.03256\\-197.7084\\1\\-75.87424\\-195.7553\\1\\-75.7938\\-193.8021\\1\\-76.4481\\-192.9058\\1\\-76.93638\\-191.849\\1\\-77.54881\\-189.8959\\1\\-78.40122\\-188.8589\\1\\-78.92397\\-187.9428\\1\\-79.58008\\-185.9896\\1\\-80.35435\\-185.2263\\1\\-82.30747\\-184.3446\\1\\-84.2606\\-182.9425\\1\\-86.21372\\-182.7215\\1\\-92.0731\\-182.7143\\1\\-94.02622\\-182.8581\\1\\-95.97935\\-183.618\\1\\-97.93247\\-182.1367\\1\\-97.53325\\-180.1303\\1\\-96.80605\\-178.1771\\1\\-95.31612\\-176.224\\1\\-94.49039\\-174.2709\\1\\-92.76669\\-172.3178\\1\\-90.92139\\-170.3646\\1\\-88.16685\\-167.6064\\1\\-85.25603\\-164.5053\\1\\-80.35435\\-159.6692\\1\\-74.49497\\-158.0185\\1\\-72.54185\\-158.0111\\1\\-71.65613\\-158.6459\\1\\-70.58872\\-159.8228\\1\\-70.06375\\-160.599\\1\\-69.32647\\-162.5521\\1\\-68.06594\\-164.5053\\1\\-67.38155\\-166.4584\\1\\-66.30545\\-168.4115\\1\\-66.28574\\-172.3178\\1\\-65.85167\\-174.2709\\1\\-64.87796\\-176.224\\1\\-64.29466\\-178.1771\\1\\-63.88513\\-180.1303\\1\\-62.44014\\-184.0365\\1\\-61.90769\\-185.9896\\1\\-60.67449\\-189.8959\\1\\-60.36737\\-191.849\\1\\-59.83737\\-193.8021\\1\\-58.39103\\-197.7084\\1\\-57.87038\\-199.6615\\1\\-56.01658\\-205.5209\\1\\-55.74346\\-207.474\\1\\-56.91685\\-208.6474\\1\\-58.86998\\-208.7087\\1\\-60.8231\\-208.5935\\1\\-62.77623\\-208.6234\\1\\-64.72935\\-209.8755\\1\\-66.68247\\-210.6797\\1\\-68.6356\\-210.7525\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "372"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-62.77623\\-130.7763\\1\\-63.3634\\-129.349\\1\\-63.286\\-127.3959\\1\\-61.93801\\-125.4428\\1\\-58.86998\\-122.4178\\1\\-56.91685\\-121.0974\\1\\-54.96373\\-121.1496\\1\\-54.41927\\-121.5365\\1\\-52.82091\\-123.4896\\1\\-52.40635\\-125.4428\\1\\-53.0106\\-127.4072\\1\\-54.96373\\-128.196\\1\\-56.71053\\-127.3959\\1\\-56.91685\\-127.1773\\1\\-58.86998\\-127.5194\\1\\-59.91037\\-129.349\\1\\-60.8231\\-131.2361\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "373"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-45.1981\\-133.9364\\1\\-46.5775\\-133.2553\\1\\-47.15123\\-132.515\\1\\-47.77267\\-131.3021\\1\\-47.76482\\-129.349\\1\\-47.15123\\-128.6342\\1\\-45.1981\\-127.0559\\1\\-44.39286\\-127.3959\\1\\-43.24498\\-128.131\\1\\-42.57996\\-129.349\\1\\-42.64524\\-131.3021\\1\\-43.24498\\-132.8786\\1\\-43.62165\\-133.2553\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "374"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-43.24498\\-163.5058\\1\\-44.61655\\-162.5521\\1\\-45.1981\\-161.7173\\1\\-46.75211\\-158.6459\\1\\-47.06245\\-156.6928\\1\\-46.69205\\-154.7396\\1\\-47.28086\\-152.7865\\1\\-48.68266\\-150.8334\\1\\-49.10435\\-150.66\\1\\-51.05748\\-152.2913\\1\\-51.87319\\-152.7865\\1\\-53.0106\\-153.9801\\1\\-53.59654\\-152.7865\\1\\-51.81011\\-148.8803\\1\\-49.10435\\-144.4715\\1\\-47.15123\\-143.7874\\1\\-46.07939\\-143.0209\\1\\-45.1981\\-141.9786\\1\\-43.34189\\-139.1146\\1\\-41.29185\\-137.1081\\1\\-39.33873\\-136.0368\\1\\-37.3856\\-135.7167\\1\\-35.43248\\-134.6774\\1\\-33.47935\\-134.2066\\1\\-23.71373\\-134.2066\\1\\-21.7606\\-134.6343\\1\\-19.80748\\-135.8332\\1\\-18.4116\\-137.1615\\1\\-17.04806\\-139.1146\\1\\-16.18305\\-143.0209\\1\\-16.06281\\-144.974\\1\\-14.70477\\-146.9271\\1\\-13.9481\\-147.5515\\1\\-11.99498\\-147.8012\\1\\-10.04185\\-148.407\\1\\-9.517032\\-148.8803\\1\\-8.126287\\-150.8334\\1\\-7.980219\\-154.7396\\1\\-7.635742\\-156.6928\\1\\-7.394166\\-158.6459\\1\\-7.600445\\-160.599\\1\\-8.088726\\-162.4436\\1\\-10.04185\\-161.116\\1\\-10.17729\\-158.6459\\1\\-10.44107\\-156.6928\\1\\-11.63407\\-154.7396\\1\\-13.03523\\-152.7865\\1\\-13.9481\\-151.9353\\1\\-15.00673\\-152.7865\\1\\-16.38566\\-154.7396\\1\\-17.85435\\-156.3203\\1\\-20.41783\\-158.6459\\1\\-21.7606\\-159.4048\\1\\-23.71373\\-159.8893\\1\\-25.66685\\-161.2379\\1\\-29.5731\\-161.8538\\1\\-31.52623\\-163.0345\\1\\-33.47935\\-163.2559\\1\\-37.3856\\-163.2679\\1\\-39.33873\\-163.8813\\1\\-41.29185\\-163.9193\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "375"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "21.20815\\-204.5516\\1\\19.25502\\-203.405\\1\\17.3019\\-202.8367\\1\\15.34877\\-202.6388\\1\\13.39565\\-202.3164\\1\\11.44252\\-200.8517\\1\\9.489399\\-200.3363\\1\\5.583149\\-200.1498\\1\\4.975681\\-199.6615\\1\\5.583149\\-198.9197\\1\\7.536274\\-198.4197\\1\\9.489399\\-198.4103\\1\\11.44252\\-198.1967\\1\\15.34877\\-197.5598\\1\\17.3019\\-197.1528\\1\\19.25502\\-196.8705\\1\\21.20815\\-196.7194\\1\\23.16127\\-196.7318\\1\\27.06752\\-197.0399\\1\\30.97377\\-197.9702\\1\\32.9269\\-198.0407\\1\\34.88002\\-198.2267\\1\\36.83315\\-198.7853\\1\\38.78627\\-199.1361\\1\\39.8643\\-199.6615\\1\\40.7394\\-200.56\\1\\41.35259\\-201.6146\\1\\40.7394\\-202.0883\\1\\38.78627\\-202.3378\\1\\34.88002\\-202.3037\\1\\32.9269\\-202.0287\\1\\30.97377\\-202.1117\\1\\29.02065\\-202.4068\\1\\25.1144\\-203.3392\\1\\23.16127\\-204.5588\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "376"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "36.83315\\-132.5473\\1\\34.94183\\-131.3021\\1\\33.29051\\-129.349\\1\\33.66871\\-127.3959\\1\\34.88002\\-126.623\\1\\36.83315\\-126.2553\\1\\38.78627\\-126.2725\\1\\40.70184\\-127.3959\\1\\40.45551\\-129.349\\1\\39.62865\\-131.3021\\1\\38.78627\\-132.2701\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "377"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-135.5014\\1\\46.59877\\-134.4866\\1\\44.85061\\-133.2553\\1\\43.8305\\-131.3021\\1\\44.45865\\-127.3959\\1\\45.71391\\-125.4428\\1\\46.11916\\-123.4896\\1\\47.49631\\-121.5365\\1\\48.5519\\-120.3733\\1\\50.50502\\-118.6949\\1\\52.45815\\-118.8305\\1\\55.18501\\-121.5365\\1\\56.66836\\-123.4896\\1\\57.12273\\-125.4428\\1\\57.82282\\-127.3959\\1\\57.94192\\-129.349\\1\\58.34024\\-131.3021\\1\\58.54132\\-133.2553\\1\\57.42815\\-135.2084\\1\\56.3644\\-136.3467\\1\\54.41127\\-136.5779\\1\\52.45815\\-135.8986\\1\\50.50502\\-135.5549\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "65"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "378"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "70.03628\\-210.5771\\1\\68.732\\-209.4271\\1\\67.98841\\-205.5209\\1\\68.48238\\-203.5678\\1\\68.09084\\-201.6146\\1\\66.13003\\-199.4241\\1\\62.22377\\-198.2708\\1\\61.47066\\-197.7084\\1\\60.47009\\-195.7553\\1\\59.85774\\-193.8021\\1\\60.99099\\-189.8959\\1\\61.00307\\-185.9896\\1\\61.22481\\-184.0365\\1\\61.57458\\-182.0834\\1\\61.81738\\-178.1771\\1\\61.82705\\-170.3646\\1\\63.21777\\-168.4115\\1\\63.70605\\-166.4584\\1\\63.78017\\-164.5053\\1\\63.64677\\-162.5521\\1\\64.72131\\-160.599\\1\\65.55718\\-158.6459\\1\\66.13003\\-158.005\\1\\68.08315\\-157.1513\\1\\71.9894\\-157.1896\\1\\73.94253\\-157.6089\\1\\77.84878\\-159.6922\\1\\80.63329\\-162.5521\\1\\84.55672\\-166.4584\\1\\87.6144\\-169.5761\\1\\89.36989\\-170.3646\\1\\91.52065\\-171.8229\\1\\91.97842\\-172.3178\\1\\92.83875\\-174.2709\\1\\94.24107\\-176.224\\1\\96.23444\\-178.1771\\1\\98.09297\\-180.1303\\1\\97.96243\\-182.0834\\1\\97.38003\\-182.7236\\1\\95.4269\\-182.6993\\1\\93.8328\\-182.0834\\1\\91.52065\\-181.0098\\1\\89.56753\\-180.7334\\1\\87.6144\\-180.7878\\1\\85.66128\\-180.9685\\1\\83.70815\\-181.3998\\1\\81.75503\\-182.9719\\1\\79.8019\\-183.3302\\1\\79.16399\\-184.0365\\1\\78.38732\\-185.9896\\1\\78.27525\\-187.9428\\1\\78.31998\\-189.8959\\1\\77.84878\\-191.0005\\1\\77.28619\\-191.849\\1\\76.58778\\-193.8021\\1\\77.84878\\-194.9937\\1\\79.12582\\-195.7553\\1\\79.8019\\-196.4112\\1\\80.63761\\-197.7084\\1\\80.55376\\-201.6146\\1\\80.40353\\-203.5678\\1\\79.8019\\-204.0082\\1\\77.84878\\-205.9447\\1\\75.89565\\-207.5498\\1\\71.9894\\-210.1062\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "379"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "93.47378\\-199.4174\\1\\91.5904\\-197.7084\\1\\90.12726\\-195.7553\\1\\89.56753\\-195.3663\\1\\87.6144\\-194.8044\\1\\86.62085\\-193.8021\\1\\87.6144\\-192.2787\\1\\89.56753\\-192.1393\\1\\91.52065\\-193.0149\\1\\93.47378\\-194.1362\\1\\94.52847\\-195.7553\\1\\94.68011\\-197.7084\\1"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "82"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "380"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-80.454\\-207.474\\3\\-81.68516\\-205.5209\\3\\-81.23916\\-203.5678\\3\\-81.57505\\-201.6146\\3\\-81.68603\\-199.6615\\3\\-80.13606\\-197.7084\\3\\-79.20023\\-195.7553\\3\\-79.20824\\-191.849\\3\\-79.99364\\-189.8959\\3\\-81.23454\\-187.9428\\3\\-81.82733\\-185.9896\\3\\-82.30747\\-185.5923\\3\\-84.2606\\-184.9198\\3\\-86.21372\\-184.8189\\3\\-88.16685\\-184.9135\\3\\-90.11997\\-184.8058\\3\\-92.0731\\-184.866\\3\\-94.02622\\-185.7243\\3\\-95.97935\\-186.9007\\3\\-97.93247\\-187.5544\\3\\-98.34428\\-187.9428\\3\\-98.98875\\-189.8959\\3\\-99.06674\\-191.849\\3\\-99.8856\\-192.8403\\3\\-100.8695\\-191.849\\3\\-100.814\\-189.8959\\3\\-100.6003\\-187.9428\\3\\-100.1693\\-185.9896\\3\\-98.79784\\-184.0365\\3\\-98.47869\\-182.0834\\3\\-97.15599\\-180.1303\\3\\-96.61464\\-178.1771\\3\\-94.94684\\-176.224\\3\\-94.02622\\-174.3828\\3\\-92.84267\\-172.3178\\3\\-88.16685\\-167.6064\\3\\-86.21372\\-165.5415\\3\\-84.2606\\-163.3053\\3\\-82.30747\\-161.5154\\3\\-80.35435\\-159.6266\\3\\-78.40122\\-159.0806\\3\\-76.4481\\-157.8248\\3\\-74.49497\\-157.3345\\3\\-72.54185\\-157.2465\\3\\-70.58872\\-158.1946\\3\\-70.20686\\-158.6459\\3\\-69.36247\\-160.599\\3\\-68.23887\\-162.5521\\3\\-67.47956\\-164.5053\\3\\-66.53387\\-166.4584\\3\\-66.28574\\-168.4115\\3\\-66.24779\\-172.3178\\3\\-65.95745\\-174.2709\\3\\-65.28976\\-176.224\\3\\-64.30398\\-178.1771\\3\\-64.18806\\-180.1303\\3\\-63.8094\\-182.0834\\3\\-63.18773\\-184.0365\\3\\-62.30538\\-185.9896\\3\\-61.84509\\-187.9428\\3\\-61.63145\\-189.8959\\3\\-61.24163\\-191.849\\3\\-60.46398\\-193.8021\\3\\-59.37825\\-197.7084\\3\\-58.58432\\-199.6615\\3\\-58.08553\\-201.6146\\3\\-57.89341\\-203.5678\\3\\-58.7709\\-205.5209\\3\\-58.96626\\-205.5209\\3\\-60.8231\\-204.4036\\3\\-62.83601\\-203.5678\\3\\-64.72935\\-203.0315\\3\\-65.74884\\-203.5678\\3\\-66.68247\\-204.6432\\3\\-67.16734\\-205.5209\\3\\-67.34594\\-207.474\\3\\-68.6356\\-208.6233\\3\\-70.58872\\-208.5698\\3\\-72.54185\\-208.0851\\3\\-74.49497\\-207.287\\3\\-76.4481\\-208.1233\\3\\-78.40122\\-207.7215\\3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "381"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-45.1981\\-135.9117\\3\\-46.7327\\-135.2084\\3\\-49.10435\\-133.7309\\3\\-51.05748\\-132.0067\\3\\-53.0106\\-131.4106\\3\\-54.96373\\-130.5955\\3\\-56.91685\\-130.1079\\3\\-58.86998\\-131.2673\\3\\-60.8231\\-133.2276\\3\\-62.77623\\-133.9861\\3\\-64.03022\\-133.2553\\3\\-64.72935\\-132.6637\\3\\-65.71269\\-131.3021\\3\\-65.57247\\-129.349\\3\\-65.21456\\-127.3959\\3\\-64.72935\\-125.8529\\3\\-63.53646\\-123.4896\\3\\-62.77623\\-122.6064\\3\\-59.714\\-119.5834\\3\\-58.86998\\-118.9377\\3\\-56.91685\\-118.8931\\3\\-54.96373\\-119.1842\\3\\-54.17027\\-119.5834\\3\\-53.0106\\-120.4424\\3\\-52.33921\\-121.5365\\3\\-51.64722\\-123.4896\\3\\-50.34789\\-125.4428\\3\\-49.10435\\-126.9329\\3\\-47.15123\\-126.1425\\3\\-45.1981\\-124.7469\\3\\-43.24498\\-124.2536\\3\\-39.33873\\-124.4208\\3\\-37.3856\\-124.4208\\3\\-36.48262\\-125.4428\\3\\-37.3856\\-126.6983\\3\\-38.08315\\-127.3959\\3\\-39.33873\\-128.2748\\3\\-40.39881\\-129.349\\3\\-41.21108\\-131.3021\\3\\-42.20807\\-133.2553\\3\\-43.24498\\-134.546\\3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "70"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "382"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.088726\\-169.0701\\3\\-8.438359\\-168.4115\\3\\-9.104879\\-166.4584\\3\\-9.515021\\-164.5053\\3\\-10.02829\\-162.5521\\3\\-10.17729\\-160.599\\3\\-10.64058\\-158.6459\\3\\-10.95776\\-156.6928\\3\\-11.99498\\-155.6555\\3\\-13.9481\\-155.6021\\3\\-14.96452\\-156.6928\\3\\-15.90123\\-158.2755\\3\\-16.31439\\-158.6459\\3\\-17.85435\\-159.463\\3\\-19.80748\\-160.2597\\3\\-21.7606\\-161.405\\3\\-23.71373\\-161.5815\\3\\-25.66685\\-162.2922\\3\\-27.61998\\-163.3176\\3\\-29.5731\\-163.4141\\3\\-31.52623\\-164.1865\\3\\-33.47935\\-165.2601\\3\\-37.3856\\-165.3547\\3\\-39.33873\\-166.1469\\3\\-41.29185\\-167.1691\\3\\-43.24498\\-167.1622\\3\\-44.69298\\-166.4584\\3\\-46.67312\\-164.5053\\3\\-47.15123\\-163.7767\\3\\-48.4973\\-160.599\\3\\-49.52753\\-158.6459\\3\\-48.40766\\-156.6928\\3\\-47.96503\\-154.7396\\3\\-49.10435\\-153.5173\\3\\-51.05748\\-153.5601\\3\\-52.79269\\-154.7396\\3\\-53.0106\\-155.1453\\3\\-53.38728\\-154.7396\\3\\-53.49888\\-152.7865\\3\\-51.93584\\-150.8334\\3\\-50.53454\\-148.8803\\3\\-49.10435\\-146.7407\\3\\-47.15123\\-145.9193\\3\\-45.49436\\-144.974\\3\\-45.1981\\-144.6525\\3\\-43.51263\\-141.0678\\3\\-41.29185\\-138.7475\\3\\-39.33873\\-137.8493\\3\\-37.58627\\-137.1615\\3\\-35.43248\\-136.118\\3\\-33.47935\\-135.9379\\3\\-27.61998\\-135.9307\\3\\-23.71373\\-135.8757\\3\\-21.7606\\-135.9886\\3\\-19.80748\\-136.807\\3\\-19.44805\\-137.1615\\3\\-18.4647\\-139.1146\\3\\-17.10276\\-141.0678\\3\\-16.18305\\-144.974\\3\\-14.95534\\-146.9271\\3\\-13.9481\\-147.9344\\3\\-11.99498\\-149.2253\\3\\-10.04185\\-149.6923\\3\\-8.669558\\-150.8334\\3\\-7.763205\\-154.7396\\3\\-6.401283\\-158.6459\\3\\-6.920053\\-160.599\\3\\-7.32562\\-162.5521\\3\\-7.590744\\-166.4584\\3\\-7.869189\\-168.4115\\3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "383"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "21.20815\\-211.9906\\3\\19.96923\\-211.3803\\3\\19.25502\\-210.8601\\3\\17.66664\\-209.4271\\3\\15.34877\\-207.1286\\3\\14.45799\\-205.5209\\3\\13.50416\\-203.5678\\3\\11.44252\\-201.6067\\3\\9.489399\\-200.4787\\3\\7.536274\\-200.1498\\3\\5.583149\\-200.0458\\3\\3.630024\\-200.0679\\3\\1.676899\\-200.4874\\3\\-0.276226\\-200.3291\\3\\-0.9219313\\-199.6615\\3\\-0.276226\\-198.2548\\3\\0.3702308\\-197.7084\\3\\1.676899\\-197.1461\\3\\5.583149\\-196.9996\\3\\7.536274\\-197.2057\\3\\9.489399\\-197.573\\3\\11.44252\\-197.573\\3\\15.34877\\-196.8154\\3\\17.3019\\-195.9629\\3\\19.25502\\-194.1657\\3\\19.83434\\-193.8021\\3\\21.20815\\-193.2724\\3\\23.16127\\-193.2724\\3\\25.1144\\-194.4092\\3\\27.06752\\-195.127\\3\\29.02065\\-196.307\\3\\30.97377\\-196.8821\\3\\32.9269\\-197.1941\\3\\34.88002\\-197.6708\\3\\36.83315\\-197.9322\\3\\40.7394\\-198.1738\\3\\42.69252\\-198.7731\\3\\44.06948\\-199.6615\\3\\44.64565\\-200.2494\\3\\46.59877\\-200.8736\\3\\47.83384\\-201.6146\\3\\46.59877\\-202.6388\\3\\44.64565\\-202.6599\\3\\42.69252\\-202.4698\\3\\40.7394\\-202.5345\\3\\38.78627\\-202.4862\\3\\36.83315\\-202.0855\\3\\34.88002\\-201.9816\\3\\30.97377\\-202.5796\\3\\29.7368\\-203.5678\\3\\29.68845\\-205.5209\\3\\28.28823\\-207.474\\3\\27.786\\-209.4271\\3\\27.06752\\-210.4749\\3\\26.0569\\-211.3803\\3\\25.1144\\-211.9807\\3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "384"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-137.9012\\3\\52.45815\\-136.6403\\3\\50.50502\\-136.1081\\3\\48.5519\\-136.1214\\3\\46.59877\\-135.9182\\3\\44.64565\\-134.6992\\3\\42.69252\\-133.6992\\3\\40.7394\\-133.467\\3\\36.83315\\-133.894\\3\\34.88002\\-133.9241\\3\\33.32578\\-133.2553\\3\\32.9269\\-132.8326\\3\\32.2523\\-131.3021\\3\\30.97377\\-129.215\\3\\30.35528\\-127.3959\\3\\30.57166\\-125.4428\\3\\30.97377\\-125.2003\\3\\32.9269\\-126.1736\\3\\36.83315\\-125.8681\\3\\38.78627\\-125.8957\\3\\40.7394\\-126.7128\\3\\42.69252\\-128.5666\\3\\44.64565\\-126.5905\\3\\45.50788\\-125.4428\\3\\45.96751\\-121.5365\\3\\47.52493\\-119.5834\\3\\49.82143\\-117.6303\\3\\50.50502\\-116.7758\\3\\52.45815\\-116.5173\\3\\53.44105\\-117.6303\\3\\56.3644\\-120.6325\\3\\57.12891\\-121.5365\\3\\57.93097\\-123.4896\\3\\58.07512\\-125.4428\\3\\58.7429\\-127.3959\\3\\59.05614\\-129.349\\3\\59.4491\\-133.2553\\3\\58.95942\\-135.2084\\3\\58.31752\\-136.1605\\3\\57.37172\\-137.1615\\3\\56.3644\\-137.8244\\3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002300"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "68"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "385"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "70.03628\\-207.9998\\3\\69.671\\-207.474\\3\\68.79072\\-205.5209\\3\\69.11625\\-203.5678\\3\\69.15737\\-201.6146\\3\\68.08315\\-200.4744\\3\\66.13003\\-198.725\\3\\64.1769\\-197.5173\\3\\62.22377\\-196.4402\\3\\61.60732\\-195.7553\\3\\61.08524\\-193.8021\\3\\61.28608\\-191.849\\3\\61.76022\\-189.8959\\3\\61.61135\\-185.9896\\3\\61.81738\\-182.0834\\3\\61.81738\\-180.1303\\3\\62.01207\\-176.224\\3\\61.81738\\-172.3178\\3\\61.81738\\-170.3646\\3\\62.12903\\-168.4115\\3\\63.07074\\-166.4584\\3\\63.30359\\-164.5053\\3\\63.42678\\-162.5521\\3\\65.11239\\-160.599\\3\\65.54516\\-158.6459\\3\\66.13003\\-157.7662\\3\\67.16909\\-156.6928\\3\\68.08315\\-156.0509\\3\\71.9894\\-157.0496\\3\\73.94253\\-157.261\\3\\75.89565\\-157.9569\\3\\78.66029\\-160.599\\3\\84.55672\\-166.4584\\3\\87.6144\\-169.5761\\3\\89.56753\\-170.9235\\3\\90.97811\\-172.3178\\3\\92.42168\\-174.2709\\3\\94.00275\\-176.224\\3\\97.38003\\-179.4378\\3\\98.02192\\-180.1303\\3\\98.43613\\-182.0834\\3\\98.48789\\-185.9896\\3\\97.38003\\-187.4226\\3\\96.43156\\-185.9896\\3\\95.4269\\-185.0062\\3\\93.47378\\-184.9405\\3\\91.52065\\-184.5464\\3\\89.56753\\-182.9682\\3\\88.02209\\-184.0365\\3\\85.66128\\-186.0458\\3\\83.70815\\-186.9662\\3\\81.75503\\-187.4598\\3\\81.27211\\-187.9428\\3\\82.41909\\-189.8959\\3\\84.31746\\-191.849\\3\\84.65661\\-193.8021\\3\\84.59296\\-201.6146\\3\\84.55218\\-203.5678\\3\\86.53008\\-205.5209\\3\\86.2871\\-207.474\\3\\85.66128\\-208.0061\\3\\83.70815\\-207.5119\\3\\81.75503\\-206.2238\\3\\79.8019\\-204.6647\\3\\77.84878\\-204.7063\\3\\76.2881\\-205.5209\\3\\73.94253\\-207.9387\\3\\71.9894\\-209.1943\\3"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "82"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "386"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-86.21372\\-212.4242\\5\\-86.82738\\-211.3803\\5\\-85.14561\\-209.4271\\5\\-84.97034\\-207.474\\5\\-85.32027\\-205.5209\\5\\-86.80949\\-203.5678\\5\\-86.29362\\-201.6146\\5\\-85.18223\\-199.6615\\5\\-85.21789\\-195.7553\\5\\-84.92736\\-193.8021\\5\\-84.96292\\-191.849\\5\\-85.70127\\-189.8959\\5\\-86.21372\\-189.3834\\5\\-88.16685\\-189.0451\\5\\-90.11997\\-188.4155\\5\\-92.0731\\-188.708\\5\\-95.97935\\-192.2821\\5\\-97.02608\\-193.8021\\5\\-95.7373\\-195.7553\\5\\-95.13648\\-197.7084\\5\\-95.97935\\-198.6046\\5\\-97.93247\\-199.1075\\5\\-99.03481\\-197.7084\\5\\-98.99458\\-195.7553\\5\\-100.4749\\-193.8021\\5\\-101.1894\\-191.849\\5\\-100.6543\\-187.9428\\5\\-99.56008\\-185.9896\\5\\-98.82766\\-184.0365\\5\\-97.27627\\-182.0834\\5\\-96.70669\\-180.1303\\5\\-95.97935\\-178.2173\\5\\-94.85529\\-176.224\\5\\-93.38389\\-174.2709\\5\\-92.60422\\-172.3178\\5\\-90.92139\\-170.3646\\5\\-87.07132\\-166.4584\\5\\-85.59612\\-164.5053\\5\\-84.88406\\-162.5521\\5\\-84.2606\\-161.9251\\5\\-82.30747\\-160.5043\\5\\-80.35435\\-159.5341\\5\\-78.40122\\-158.3378\\5\\-76.4481\\-157.5357\\5\\-74.49497\\-156.4626\\5\\-72.54185\\-155.8402\\5\\-70.58872\\-157.0764\\5\\-69.18919\\-158.6459\\5\\-67.93145\\-160.599\\5\\-67.47303\\-162.5521\\5\\-66.52089\\-164.5053\\5\\-66.28574\\-166.4584\\5\\-66.20287\\-170.3646\\5\\-66.02291\\-172.3178\\5\\-65.49065\\-174.2709\\5\\-64.51765\\-176.224\\5\\-64.30398\\-178.1771\\5\\-64.30398\\-180.1303\\5\\-64.19922\\-182.0834\\5\\-63.82322\\-184.0365\\5\\-63.21628\\-185.9896\\5\\-62.38929\\-187.9428\\5\\-62.33344\\-189.8959\\5\\-61.88025\\-191.849\\5\\-61.69067\\-193.8021\\5\\-61.14\\-195.7553\\5\\-59.92713\\-197.7084\\5\\-59.78369\\-199.6615\\5\\-60.56711\\-201.6146\\5\\-60.8231\\-201.8565\\5\\-62.77623\\-202.5187\\5\\-64.72935\\-202.2039\\5\\-66.68247\\-202.4919\\5\\-68.15868\\-203.5678\\5\\-68.6356\\-204.1271\\5\\-70.58872\\-205.6651\\5\\-72.54185\\-206.6008\\5\\-74.49497\\-206.561\\5\\-78.40122\\-207.1379\\5\\-80.35435\\-208.4192\\5\\-82.30747\\-210.1181\\5\\-84.2606\\-211.4333\\5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "387"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-62.77623\\-137.5134\\5\\-64.72935\\-136.9432\\5\\-65.57198\\-135.2084\\5\\-67.34611\\-131.3021\\5\\-67.25261\\-129.349\\5\\-66.68247\\-127.6484\\5\\-65.77135\\-125.4428\\5\\-65.31528\\-123.4896\\5\\-63.84916\\-121.5365\\5\\-62.00195\\-119.5834\\5\\-60.8231\\-118.5709\\5\\-58.86998\\-117.7264\\5\\-56.91685\\-118.348\\5\\-53.0106\\-118.5363\\5\\-51.31261\\-119.5834\\5\\-50.77948\\-121.5365\\5\\-49.10435\\-123.0076\\5\\-47.15123\\-123.3619\\5\\-45.1981\\-123.4669\\5\\-43.24498\\-122.9123\\5\\-41.29185\\-123.2191\\5\\-39.33873\\-123.8465\\5\\-37.3856\\-123.915\\5\\-35.69156\\-125.4428\\5\\-36.19805\\-127.3959\\5\\-37.3856\\-128.3825\\5\\-38.86967\\-129.349\\5\\-39.33873\\-129.7838\\5\\-40.33398\\-131.3021\\5\\-40.86972\\-133.2553\\5\\-42.40419\\-135.2084\\5\\-42.91946\\-137.1615\\5\\-43.24498\\-137.4754\\5\\-45.1981\\-137.9018\\5\\-47.15123\\-137.7825\\5\\-48.20917\\-137.1615\\5\\-49.10435\\-136.0991\\5\\-49.60162\\-135.2084\\5\\-50.39719\\-133.2553\\5\\-51.05748\\-132.5509\\5\\-53.0106\\-132.0308\\5\\-54.96373\\-132.1696\\5\\-56.91685\\-132.0866\\5\\-58.74477\\-133.2553\\5\\-60.8231\\-135.3533\\5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "78"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "388"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.182476\\-183.1748\\5\\-5.68691\\-182.0834\\5\\-6.135601\\-181.9268\\5\\-8.088726\\-180.7864\\5\\-8.76602\\-180.1303\\5\\-7.852215\\-178.1771\\5\\-7.293704\\-176.224\\5\\-7.413866\\-174.2709\\5\\-7.774056\\-172.3178\\5\\-7.726453\\-170.3646\\5\\-8.088726\\-170.0294\\5\\-8.745687\\-168.4115\\5\\-9.257484\\-166.4584\\5\\-9.318666\\-164.5053\\5\\-9.732377\\-162.5521\\5\\-10.72544\\-160.599\\5\\-11.99498\\-159.4449\\5\\-13.1086\\-160.599\\5\\-13.9481\\-162.2682\\5\\-14.22872\\-162.5521\\5\\-15.90123\\-163.4131\\5\\-19.80748\\-163.4299\\5\\-21.7606\\-164.3228\\5\\-23.71373\\-165.3818\\5\\-29.5731\\-165.424\\5\\-31.56285\\-166.4584\\5\\-33.47935\\-167.2528\\5\\-35.43248\\-167.3149\\5\\-37.54429\\-168.4115\\5\\-39.33873\\-169.1592\\5\\-45.1981\\-169.1128\\5\\-46.36479\\-168.4115\\5\\-48.38356\\-166.4584\\5\\-49.60162\\-164.5053\\5\\-49.66661\\-162.5521\\5\\-50.25634\\-160.599\\5\\-51.05748\\-159.1125\\5\\-53.0106\\-158.2455\\5\\-54.50362\\-156.6928\\5\\-53.01823\\-152.7865\\5\\-51.53916\\-150.8334\\5\\-51.05748\\-150.3613\\5\\-49.10435\\-149.2918\\5\\-47.79576\\-148.8803\\5\\-45.1981\\-147.7222\\5\\-44.39275\\-146.9271\\5\\-42.70057\\-144.974\\5\\-42.53627\\-143.0209\\5\\-42.08984\\-141.0678\\5\\-41.29185\\-140.0843\\5\\-39.33873\\-139.1373\\5\\-37.3856\\-139.8508\\5\\-35.52126\\-139.1146\\5\\-33.47935\\-137.968\\5\\-27.61998\\-137.8441\\5\\-25.66685\\-137.7538\\5\\-23.71373\\-137.2423\\5\\-21.7606\\-137.1221\\5\\-19.54753\\-139.1146\\5\\-18.67753\\-141.0678\\5\\-17.48897\\-143.0209\\5\\-16.6101\\-144.974\\5\\-15.00851\\-146.9271\\5\\-13.04792\\-148.8803\\5\\-11.99498\\-150.0366\\5\\-10.04185\\-151.6351\\5\\-9.00561\\-152.7865\\5\\-8.088726\\-154.7281\\5\\-6.812478\\-156.6928\\5\\-6.127972\\-158.6459\\5\\-5.799511\\-160.599\\5\\-5.59622\\-162.5521\\5\\-5.511343\\-170.3646\\5\\-4.630898\\-172.3178\\5\\-4.182476\\-172.9547\\5\\-3.654451\\-174.2709\\5\\-3.630021\\-180.1303\\5\\-3.823353\\-182.0834\\5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "389"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "21.20815\\-215.7338\\5\\19.25502\\-214.6054\\5\\17.3019\\-213.8975\\5\\16.25799\\-213.3334\\5\\15.34877\\-212.6515\\5\\12.00451\\-209.4271\\5\\10.11973\\-207.474\\5\\9.489399\\-206.6583\\5\\8.906991\\-205.5209\\5\\8.836396\\-201.6146\\5\\7.536274\\-200.4727\\5\\3.630024\\-199.9433\\5\\1.676899\\-200.4398\\5\\-0.276226\\-200.6015\\5\\-2.095468\\-199.6615\\5\\-3.212173\\-197.7084\\5\\-3.399192\\-195.7553\\5\\-2.229351\\-194.2579\\5\\-0.8597816\\-195.7553\\5\\-0.276226\\-196.132\\5\\1.676899\\-196.0718\\5\\5.583149\\-196.0718\\5\\7.536274\\-196.5458\\5\\9.489399\\-196.8459\\5\\11.44252\\-196.8101\\5\\13.39565\\-196.2106\\5\\13.97653\\-195.7553\\5\\15.95808\\-193.8021\\5\\17.3019\\-192.7469\\5\\19.25502\\-191.543\\5\\21.20815\\-191.2869\\5\\23.16127\\-191.2869\\5\\25.1144\\-191.5882\\5\\27.06752\\-192.753\\5\\29.02065\\-194.3895\\5\\30.97377\\-195.1318\\5\\32.9269\\-196.2532\\5\\34.88002\\-197.164\\5\\36.83315\\-197.573\\5\\40.7394\\-197.573\\5\\44.64565\\-197.9525\\5\\46.59877\\-198.6339\\5\\48.5519\\-198.8953\\5\\50.50502\\-198.9379\\5\\51.65914\\-199.6615\\5\\52.8858\\-201.6146\\5\\52.45815\\-202.1103\\5\\50.50502\\-202.4947\\5\\48.5519\\-202.4368\\5\\46.59877\\-202.6383\\5\\44.64565\\-202.6464\\5\\42.69252\\-202.5164\\5\\40.7394\\-202.0493\\5\\38.78627\\-202.3774\\5\\34.88002\\-202.5602\\5\\33.73973\\-203.5678\\5\\33.55513\\-207.474\\5\\32.9269\\-208.5346\\5\\32.21743\\-209.4271\\5\\27.06752\\-214.5741\\5\\25.1144\\-215.7338\\5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "390"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-137.3371\\5\\44.64565\\-136.0736\\5\\42.69252\\-134.476\\5\\40.7394\\-133.9877\\5\\38.78627\\-134.1585\\5\\36.58241\\-135.2084\\5\\34.88002\\-135.8857\\5\\32.9269\\-135.0776\\5\\30.97377\\-133.2799\\5\\29.02065\\-131.1987\\5\\27.07958\\-129.349\\5\\27.87319\\-127.3959\\5\\29.02065\\-126.005\\5\\29.86404\\-125.4428\\5\\30.97377\\-124.9962\\5\\32.9269\\-125.9224\\5\\34.88002\\-125.9729\\5\\38.78627\\-125.931\\5\\40.7394\\-126.4417\\5\\42.4728\\-127.3959\\5\\42.94606\\-127.3959\\5\\44.51021\\-125.4428\\5\\44.7154\\-121.5365\\5\\45.94946\\-119.5834\\5\\46.59877\\-118.9163\\5\\48.5916\\-117.6303\\5\\49.7673\\-115.6771\\5\\49.85202\\-113.724\\5\\50.50502\\-113.0109\\5\\52.45815\\-112.9555\\5\\53.36642\\-113.724\\5\\54.85683\\-115.6771\\5\\55.42335\\-117.6303\\5\\57.21334\\-119.5834\\5\\58.52923\\-121.5365\\5\\59.06227\\-123.4896\\5\\59.08413\\-125.4428\\5\\59.44685\\-127.3959\\5\\60.87366\\-129.349\\5\\60.97866\\-133.2553\\5\\60.90957\\-135.2084\\5\\60.27065\\-136.81\\5\\60.00431\\-137.1615\\5\\56.3644\\-139.0595\\5\\54.41127\\-138.9889\\5\\52.45815\\-137.938\\5\\50.50502\\-137.6235\\5\\48.5519\\-137.7968\\5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "391"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "77.84878\\-212.1099\\5\\75.89565\\-211.1117\\5\\73.94253\\-210.436\\5\\71.9894\\-209.6204\\5\\71.9894\\-208.8814\\5\\73.94253\\-208.1145\\5\\75.89565\\-208.1313\\5\\77.84878\\-208.6281\\5\\79.8019\\-210.3924\\5\\81.12669\\-211.3803\\5\\79.8019\\-212.3458\\5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002299"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "62"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "392"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "85.66128\\-209.604\\5\\83.70815\\-208.2945\\5\\82.92401\\-207.474\\5\\79.8019\\-204.6005\\5\\77.84878\\-203.0912\\5\\75.89565\\-203.6341\\5\\74.93359\\-205.5209\\5\\73.94253\\-207.0261\\5\\71.9894\\-207.0429\\5\\70.97166\\-205.5209\\5\\70.71281\\-203.5678\\5\\70.62689\\-201.6146\\5\\70.03628\\-200.8441\\5\\68.08315\\-199.2598\\5\\66.13003\\-198.2752\\5\\63.45903\\-195.7553\\5\\62.98609\\-193.8021\\5\\63.08263\\-189.8959\\5\\62.73204\\-187.9428\\5\\61.99998\\-185.9896\\5\\61.99998\\-184.0365\\5\\61.81738\\-180.1303\\5\\62.6008\\-178.1771\\5\\63.05893\\-176.224\\5\\62.66113\\-174.2709\\5\\61.89825\\-172.3178\\5\\61.81738\\-168.4115\\5\\62.26222\\-164.5053\\5\\63.391\\-162.5521\\5\\65.28603\\-160.599\\5\\65.62471\\-158.6459\\5\\65.52297\\-156.6928\\5\\66.13003\\-155.2343\\5\\66.61831\\-154.7396\\5\\68.08315\\-154.0472\\5\\70.03628\\-155.3763\\5\\73.94253\\-156.6851\\5\\75.89565\\-157.8414\\5\\82.60673\\-164.5053\\5\\85.66128\\-167.6076\\5\\90.45776\\-172.3178\\5\\92.31172\\-174.2709\\5\\93.35171\\-176.224\\5\\94.67932\\-178.1771\\5\\95.4269\\-178.7793\\5\\96.72032\\-180.1303\\5\\97.82166\\-182.0834\\5\\98.49413\\-184.0365\\5\\98.82784\\-185.9896\\5\\98.4703\\-189.8959\\5\\98.42684\\-191.849\\5\\97.78955\\-193.8021\\5\\96.58173\\-195.7553\\5\\95.52308\\-197.7084\\5\\94.14386\\-199.6615\\5\\93.51134\\-201.6146\\5\\92.33256\\-203.5678\\5\\91.52065\\-204.6178\\5\\90.63744\\-205.5209\\5\\89.56753\\-206.362\\5\\88.42916\\-207.474\\5\\87.6144\\-208.5172\\5"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "70"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "393"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.16685\\-213.3593\\7\\-87.30246\\-211.3803\\7\\-84.71083\\-209.4271\\7\\-84.91364\\-207.474\\7\\-86.21372\\-206.4352\\7\\-88.16685\\-205.6294\\7\\-90.11997\\-203.4351\\7\\-91.18853\\-201.6146\\7\\-92.0731\\-200.7171\\7\\-94.02622\\-199.9976\\7\\-95.97935\\-199.5394\\7\\-97.93247\\-199.5129\\7\\-99.28587\\-197.7084\\7\\-99.02781\\-195.7553\\7\\-99.62112\\-193.8021\\7\\-100.8957\\-191.849\\7\\-100.5853\\-189.8959\\7\\-99.54951\\-187.9428\\7\\-98.96771\\-185.9896\\7\\-98.63422\\-184.0365\\7\\-96.88046\\-182.0834\\7\\-95.95664\\-180.1303\\7\\-95.68638\\-178.1771\\7\\-94.83075\\-176.224\\7\\-92.97175\\-174.2709\\7\\-92.0731\\-172.4345\\7\\-90.92139\\-170.3646\\7\\-87.06008\\-166.4584\\7\\-85.50571\\-164.5053\\7\\-84.90294\\-162.5521\\7\\-82.30747\\-159.7789\\7\\-78.40122\\-157.4577\\7\\-76.4481\\-155.9528\\7\\-75.0955\\-154.7396\\7\\-74.49497\\-153.5522\\7\\-72.54185\\-151.2259\\7\\-70.58872\\-150.9998\\7\\-69.79865\\-152.7865\\7\\-69.46192\\-154.7396\\7\\-68.27878\\-156.6928\\7\\-67.4649\\-158.6459\\7\\-66.47077\\-160.599\\7\\-66.19419\\-164.5053\\7\\-66.18563\\-166.4584\\7\\-65.8627\\-170.3646\\7\\-65.46965\\-172.3178\\7\\-64.48186\\-174.2709\\7\\-64.30398\\-176.224\\7\\-64.27637\\-184.0365\\7\\-63.85759\\-185.9896\\7\\-63.6534\\-187.9428\\7\\-63.64954\\-189.8959\\7\\-63.08019\\-191.849\\7\\-62.34154\\-193.8021\\7\\-61.96994\\-195.7553\\7\\-61.79966\\-197.7084\\7\\-62.77623\\-198.7252\\7\\-66.68247\\-200.7211\\7\\-68.6356\\-201.56\\7\\-70.58872\\-202.7197\\7\\-72.54185\\-202.7573\\7\\-73.9843\\-203.5678\\7\\-75.90089\\-205.5209\\7\\-76.4481\\-205.9385\\7\\-78.40122\\-206.6093\\7\\-80.35435\\-208.3945\\7\\-82.30747\\-210.0097\\7\\-83.38914\\-211.3803\\7\\-84.2606\\-212.8414\\7\\-86.21372\\-214.4032\\7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "126"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "394"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.182476\\-183.8035\\7\\-5.037658\\-182.0834\\7\\-5.527342\\-180.1303\\7\\-5.535071\\-178.1771\\7\\-5.764507\\-176.224\\7\\-6.915818\\-174.2709\\7\\-7.32549\\-172.3178\\7\\-7.312359\\-170.3646\\7\\-7.439473\\-168.4115\\7\\-7.975172\\-166.4584\\7\\-8.868942\\-164.5053\\7\\-10.04185\\-163.0274\\7\\-11.99498\\-164.2306\\7\\-14.02852\\-166.4584\\7\\-15.90123\\-167.3282\\7\\-19.80748\\-167.3577\\7\\-21.8628\\-168.4115\\7\\-23.71373\\-169.2034\\7\\-29.5731\\-169.2074\\7\\-33.47935\\-169.3076\\7\\-35.43248\\-170.553\\7\\-37.3856\\-171.1336\\7\\-41.29185\\-171.1336\\7\\-43.24498\\-171.0824\\7\\-45.1981\\-170.6794\\7\\-47.15123\\-169.5614\\7\\-49.10435\\-167.8079\\7\\-50.20853\\-166.4584\\7\\-51.30496\\-164.5053\\7\\-51.67054\\-162.5521\\7\\-53.0106\\-160.8168\\7\\-54.96373\\-161.3162\\7\\-55.74609\\-160.599\\7\\-55.59849\\-158.6459\\7\\-54.28371\\-156.6928\\7\\-53.54998\\-154.7396\\7\\-52.33656\\-152.7865\\7\\-51.05748\\-151.4643\\7\\-49.10435\\-149.9707\\7\\-47.15123\\-148.6565\\7\\-45.1981\\-147.8239\\7\\-43.92923\\-146.9271\\7\\-41.46073\\-144.974\\7\\-40.30947\\-143.0209\\7\\-40.84525\\-141.0678\\7\\-41.29185\\-140.4865\\7\\-43.24498\\-139.9008\\7\\-45.1981\\-139.9145\\7\\-47.15123\\-138.7381\\7\\-50.98317\\-137.1615\\7\\-52.52232\\-135.2084\\7\\-53.0106\\-134.8693\\7\\-53.6366\\-135.2084\\7\\-54.96373\\-135.5489\\7\\-56.91685\\-134.193\\7\\-58.86998\\-135.8354\\7\\-60.04876\\-137.1615\\7\\-60.64619\\-139.1146\\7\\-62.77623\\-141.1935\\7\\-64.72935\\-141.8996\\7\\-66.68247\\-141.4307\\7\\-67.03584\\-141.0678\\7\\-67.5247\\-139.1146\\7\\-68.6356\\-137.1444\\7\\-69.23862\\-135.2084\\7\\-69.18491\\-131.3021\\7\\-68.6356\\-129.4064\\7\\-67.75818\\-127.3959\\7\\-67.33523\\-125.4428\\7\\-66.68247\\-123.5917\\7\\-65.71111\\-121.5365\\7\\-65.39565\\-119.5834\\7\\-63.61245\\-117.6303\\7\\-62.77623\\-116.9214\\7\\-60.8231\\-116.3756\\7\\-58.86998\\-116.1688\\7\\-56.91685\\-116.7729\\7\\-54.96373\\-116.8966\\7\\-53.0106\\-117.8541\\7\\-51.05748\\-118.7036\\7\\-49.68598\\-119.5834\\7\\-49.10435\\-120.2426\\7\\-47.15123\\-120.5599\\7\\-46.4394\\-121.5365\\7\\-45.1981\\-122.5319\\7\\-43.24498\\-122.1931\\7\\-41.29185\\-122.5755\\7\\-37.3856\\-123.1967\\7\\-34.96163\\-125.4428\\7\\-34.55678\\-127.3959\\7\\-35.02097\\-129.349\\7\\-37.3856\\-131.8682\\7\\-38.50814\\-133.2553\\7\\-38.79161\\-135.2084\\7\\-40.19159\\-137.1615\\7\\-39.33873\\-138.0624\\7\\-38.59905\\-139.1146\\7\\-37.3856\\-140.3716\\7\\-35.43248\\-141.6837\\7\\-33.47935\\-141.8824\\7\\-31.52623\\-141.1212\\7\\-29.58446\\-139.1146\\7\\-27.61998\\-138.1302\\7\\-25.66685\\-138.0319\\7\\-23.71373\\-136.5087\\7\\-21.7606\\-136.1739\\7\\-20.81058\\-137.1615\\7\\-22.15733\\-139.1146\\7\\-20.77829\\-141.0678\\7\\-19.83054\\-143.0209\\7\\-17.85435\\-144.3167\\7\\-15.90123\\-146.0851\\7\\-13.08643\\-148.8803\\7\\-12.03254\\-150.8334\\7\\-11.65729\\-152.7865\\7\\-10.55233\\-154.7396\\7\\-7.999948\\-156.6928\\7\\-7.040816\\-158.6459\\7\\-5.588048\\-160.599\\7\\-4.454518\\-162.5521\\7\\-3.825655\\-164.5053\\7\\-3.2901\\-168.4115\\7\\-2.512554\\-170.3646\\7\\-2.424664\\-174.2709\\7\\-2.426121\\-180.1303\\7\\-2.5191\\-182.0834\\7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "64"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "395"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "19.25502\\-217.7221\\7\\17.3019\\-216.5036\\7\\15.34877\\-215.8032\\7\\13.39565\\-214.5879\\7\\11.44252\\-213.9139\\7\\10.36528\\-213.3334\\7\\9.489399\\-212.5319\\7\\8.840089\\-211.3803\\7\\8.033275\\-209.4271\\7\\7.536274\\-208.8086\\7\\6.893936\\-207.474\\7\\6.859801\\-203.5678\\7\\5.872132\\-201.6146\\7\\3.630024\\-200.3074\\7\\1.676899\\-199.909\\7\\-0.276226\\-199.9545\\7\\-2.229351\\-198.7676\\7\\-3.245571\\-197.7084\\7\\-3.934333\\-195.7553\\7\\-3.127789\\-193.8021\\7\\-2.229351\\-192.3047\\7\\-2.067761\\-193.8021\\7\\-0.276226\\-195.7476\\7\\5.583149\\-195.7476\\7\\7.536274\\-195.85\\7\\9.489399\\-195.3984\\7\\11.44252\\-195.0627\\7\\13.39565\\-194.2832\\7\\15.34877\\-192.6079\\7\\17.3019\\-191.3607\\7\\21.20815\\-190.0103\\7\\23.16127\\-190.0103\\7\\25.1144\\-190.7138\\7\\27.06752\\-191.1629\\7\\28.30631\\-191.849\\7\\29.02065\\-192.4001\\7\\32.9269\\-194.6121\\7\\34.88002\\-196.1842\\7\\36.83315\\-196.7454\\7\\42.69252\\-196.6986\\7\\46.59877\\-196.851\\7\\50.50502\\-197.8967\\7\\52.45815\\-198.543\\7\\53.79414\\-199.6615\\7\\54.97956\\-201.6146\\7\\54.92253\\-203.5678\\7\\54.41127\\-204.3043\\7\\52.45815\\-204.2438\\7\\51.96376\\-203.5678\\7\\50.50502\\-202.4872\\7\\48.5519\\-202.0114\\7\\46.59877\\-202.3742\\7\\44.64565\\-202.5291\\7\\42.69252\\-202.5422\\7\\40.7394\\-202.7788\\7\\39.82666\\-203.5678\\7\\39.51991\\-205.5209\\7\\38.78627\\-207.2975\\7\\36.83315\\-208.9298\\7\\34.32805\\-211.3803\\7\\30.97377\\-214.5541\\7\\29.02065\\-216.4801\\7\\27.06752\\-217.7479\\7\\21.20815\\-217.7728\\7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "396"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-141.8694\\7\\54.41127\\-140.5088\\7\\52.45815\\-139.4156\\7\\52.16122\\-139.1146\\7\\50.50502\\-138.0847\\7\\46.59877\\-139.632\\7\\45.04674\\-139.1146\\7\\42.69252\\-137.5545\\7\\42.46873\\-137.1615\\7\\42.09771\\-135.2084\\7\\40.7394\\-134.4382\\7\\38.78627\\-135.9235\\7\\36.83315\\-136.563\\7\\34.88002\\-137.6584\\7\\32.9269\\-136.6599\\7\\29.16199\\-135.2084\\7\\28.26367\\-133.2553\\7\\27.06752\\-132.1626\\7\\25.00508\\-131.3021\\7\\24.45136\\-129.349\\7\\25.1144\\-128.1139\\7\\25.7404\\-127.3959\\7\\27.06752\\-126.6458\\7\\30.97377\\-125.7996\\7\\32.9269\\-126.2818\\7\\34.88002\\-126.4458\\7\\36.83315\\-126.4368\\7\\40.7394\\-126.0064\\7\\42.69252\\-126.9558\\7\\44.22451\\-125.4428\\7\\44.27866\\-121.5365\\7\\45.54954\\-119.5834\\7\\47.3939\\-117.6303\\7\\47.89914\\-115.6771\\7\\47.26253\\-113.724\\7\\47.98611\\-111.7709\\7\\48.5519\\-111.3308\\7\\50.50502\\-111.1356\\7\\52.45815\\-111.3429\\7\\54.41127\\-112.7413\\7\\55.27044\\-113.724\\7\\56.53878\\-115.6771\\7\\57.36902\\-117.6303\\7\\58.93897\\-119.5834\\7\\59.43876\\-121.5365\\7\\60.91999\\-123.4896\\7\\60.95675\\-125.4428\\7\\61.14258\\-127.3959\\7\\62.43548\\-129.349\\7\\62.81187\\-131.3021\\7\\61.80966\\-133.2553\\7\\62.48286\\-135.2084\\7\\62.99449\\-137.1615\\7\\62.99829\\-139.1146\\7\\62.27676\\-141.0678\\7\\60.27065\\-141.9412\\7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "397"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "73.94253\\-210.4491\\7\\72.74183\\-209.4271\\7\\72.33161\\-207.474\\7\\71.69643\\-205.5209\\7\\71.9894\\-205.1063\\7\\73.94253\\-204.352\\7\\75.36243\\-205.5209\\7\\77.25278\\-207.474\\7\\79.58897\\-209.4271\\7\\77.84878\\-210.7728\\7\\75.89565\\-210.5313\\7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002298"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "69"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "398"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "85.66128\\-210.8023\\7\\84.77466\\-209.4271\\7\\83.98997\\-207.474\\7\\81.75503\\-205.3593\\7\\79.8019\\-204.4518\\7\\77.84878\\-202.4357\\7\\75.6515\\-201.6146\\7\\73.94253\\-201.0949\\7\\71.9894\\-200.3884\\7\\71.30856\\-199.6615\\7\\70.03628\\-198.7971\\7\\68.08315\\-198.3143\\7\\65.44643\\-195.7553\\7\\64.97066\\-193.8021\\7\\64.9591\\-191.849\\7\\64.45872\\-189.8959\\7\\63.31356\\-187.9428\\7\\63.11353\\-185.9896\\7\\63.10569\\-184.0365\\7\\62.78571\\-182.0834\\7\\62.01207\\-180.1303\\7\\62.97535\\-178.1771\\7\\63.26627\\-176.224\\7\\63.21342\\-174.2709\\7\\62.65846\\-172.3178\\7\\61.81738\\-170.3646\\7\\61.81738\\-166.4584\\7\\61.95324\\-164.5053\\7\\64.42867\\-162.5521\\7\\65.55272\\-160.599\\7\\65.56809\\-158.6459\\7\\64.77003\\-156.6928\\7\\63.06376\\-154.7396\\7\\63.00357\\-152.7865\\7\\63.44326\\-150.8334\\7\\61.92483\\-148.8803\\7\\62.22377\\-147.3649\\7\\64.1769\\-147.3829\\7\\66.13003\\-148.2452\\7\\67.22636\\-148.8803\\7\\68.08315\\-149.5898\\7\\70.03628\\-151.6591\\7\\72.50031\\-154.7396\\7\\73.94253\\-155.9631\\7\\75.89565\\-157.8038\\7\\79.8019\\-161.6807\\7\\85.66128\\-167.6076\\7\\87.6144\\-169.2962\\7\\88.68813\\-170.3646\\7\\90.36505\\-172.3178\\7\\92.31172\\-174.2709\\7\\93.19195\\-176.224\\7\\94.27769\\-178.1771\\7\\95.98741\\-180.1303\\7\\96.1487\\-182.0834\\7\\96.63982\\-184.0365\\7\\97.38003\\-184.7451\\7\\98.31627\\-185.9896\\7\\98.32523\\-191.849\\7\\97.88829\\-193.8021\\7\\96.54778\\-195.7553\\7\\95.4269\\-197.0555\\7\\94.62789\\-197.7084\\7\\93.43621\\-199.6615\\7\\92.88642\\-205.5209\\7\\92.05715\\-207.474\\7\\90.88274\\-209.4271\\7\\89.56753\\-210.6442\\7\\87.6144\\-211.2739\\7"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "399"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.16685\\-214.3782\\9\\-89.17902\\-213.3334\\9\\-88.52826\\-211.3803\\9\\-88.16685\\-211.0763\\9\\-86.21372\\-210.6419\\9\\-84.2606\\-210.4738\\9\\-83.28941\\-211.3803\\9\\-83.25271\\-213.3334\\9\\-84.2606\\-214.3863\\9\\-86.21372\\-214.9916\\9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "121"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "400"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-82.30747\\-208.3292\\9\\-84.2606\\-206.7979\\9\\-86.21372\\-206.5585\\9\\-88.16685\\-205.9828\\9\\-90.11997\\-204.3694\\9\\-92.0731\\-202.5149\\9\\-94.02622\\-200.9081\\9\\-95.97935\\-200.1411\\9\\-97.93247\\-198.863\\9\\-98.8963\\-197.7084\\9\\-98.68775\\-195.7553\\9\\-98.08333\\-193.8021\\9\\-98.81633\\-191.849\\9\\-99.08444\\-189.8959\\9\\-98.95495\\-187.9428\\9\\-98.65025\\-185.9896\\9\\-96.81705\\-182.0834\\9\\-95.77991\\-180.1303\\9\\-94.57868\\-176.224\\9\\-92.8913\\-174.2709\\9\\-90.92139\\-170.3646\\9\\-87.06573\\-166.4584\\9\\-85.42603\\-164.5053\\9\\-84.64754\\-162.5521\\9\\-83.1932\\-160.599\\9\\-80.35435\\-157.756\\9\\-79.18748\\-156.6928\\9\\-77.24952\\-154.7396\\9\\-76.69559\\-152.7865\\9\\-75.3296\\-150.8334\\9\\-74.96582\\-148.8803\\9\\-74.49497\\-147.9605\\9\\-73.55953\\-146.9271\\9\\-72.54185\\-146.2911\\9\\-71.36423\\-144.974\\9\\-71.18107\\-141.0678\\9\\-71.18846\\-137.1615\\9\\-71.11886\\-133.2553\\9\\-70.65531\\-131.3021\\9\\-69.73932\\-129.349\\9\\-69.29173\\-127.3959\\9\\-68.6356\\-125.4872\\9\\-67.76367\\-123.4896\\9\\-67.38422\\-121.5365\\9\\-66.68247\\-119.7688\\9\\-65.64257\\-117.6303\\9\\-62.77623\\-114.7834\\9\\-60.8231\\-113.1621\\9\\-58.86998\\-112.9993\\9\\-56.91685\\-112.5471\\9\\-54.96373\\-112.7259\\9\\-54.16991\\-113.724\\9\\-54.08911\\-115.6771\\9\\-53.43439\\-117.6303\\9\\-53.0106\\-118.054\\9\\-51.05748\\-117.7966\\9\\-49.10435\\-116.2264\\9\\-47.15123\\-117.3496\\9\\-45.96045\\-119.5834\\9\\-45.1981\\-120.404\\9\\-43.24498\\-121.1018\\9\\-41.29185\\-122.0728\\9\\-39.33873\\-122.1362\\9\\-37.3856\\-122.4654\\9\\-36.03101\\-123.4896\\9\\-33.93464\\-125.4428\\9\\-32.68685\\-127.3959\\9\\-32.29679\\-129.349\\9\\-31.26714\\-131.3021\\9\\-33.08149\\-133.2553\\9\\-35.43248\\-135.4081\\9\\-36.9858\\-137.1615\\9\\-36.32223\\-139.1146\\9\\-35.37989\\-141.0678\\9\\-37.3856\\-142.8181\\9\\-39.33873\\-142.5955\\9\\-41.29185\\-141.9029\\9\\-43.24498\\-141.8077\\9\\-45.1981\\-142.2355\\9\\-47.15123\\-140.6211\\9\\-49.75909\\-139.1146\\9\\-51.05748\\-138.4386\\9\\-53.0106\\-137.8939\\9\\-56.91685\\-137.8694\\9\\-58.67321\\-139.1146\\9\\-60.8231\\-141.2645\\9\\-62.31267\\-143.0209\\9\\-64.1669\\-144.974\\9\\-65.8264\\-146.9271\\9\\-66.01269\\-148.8803\\9\\-66.04694\\-150.8334\\9\\-66.61589\\-152.7865\\9\\-67.71275\\-154.7396\\9\\-67.1216\\-156.6928\\9\\-65.93237\\-158.6459\\9\\-65.84605\\-160.599\\9\\-65.84605\\-166.4584\\9\\-65.47216\\-168.4115\\9\\-64.69179\\-170.3646\\9\\-64.30398\\-174.2709\\9\\-64.30398\\-176.224\\9\\-64.47026\\-180.1303\\9\\-64.48186\\-182.0834\\9\\-65.17324\\-184.0365\\9\\-65.04417\\-185.9896\\9\\-64.29466\\-187.9428\\9\\-64.97684\\-189.8959\\9\\-63.74307\\-193.8021\\9\\-64.72935\\-195.6209\\9\\-66.14899\\-197.7084\\9\\-66.68247\\-198.2051\\9\\-68.6356\\-198.8557\\9\\-70.58872\\-198.8965\\9\\-72.05357\\-199.6615\\9\\-72.54185\\-200.0905\\9\\-74.49497\\-201.0366\\9\\-75.28699\\-201.6146\\9\\-76.4481\\-202.7577\\9\\-77.03513\\-203.5678\\9\\-79.04356\\-205.5209\\9\\-80.35435\\-206.9628\\9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "144"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "401"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "19.25502\\-219.4518\\9\\17.3019\\-218.269\\9\\15.34877\\-217.4266\\9\\13.39565\\-216.3543\\9\\11.44252\\-215.8085\\9\\9.489399\\-214.7558\\9\\7.880472\\-213.3334\\9\\5.583149\\-210.8403\\9\\4.947608\\-209.4271\\9\\4.900552\\-205.5209\\9\\3.95229\\-203.5678\\9\\3.630024\\-203.1748\\9\\2.967176\\-201.6146\\9\\1.676899\\-200.331\\9\\-0.276226\\-199.7836\\9\\-2.229351\\-198.6189\\9\\-3.181253\\-197.7084\\9\\-3.934333\\-195.7553\\9\\-3.127789\\-193.8021\\9\\-3.127789\\-184.0365\\9\\-4.182476\\-182.4855\\9\\-4.485547\\-180.1303\\9\\-4.574386\\-178.1771\\9\\-5.098585\\-176.224\\9\\-6.367447\\-172.3178\\9\\-6.449974\\-170.3646\\9\\-6.966408\\-168.4115\\9\\-8.088726\\-166.6491\\9\\-10.04185\\-165.3312\\9\\-11.49332\\-166.4584\\9\\-12.88338\\-168.4115\\9\\-13.9481\\-170.5143\\9\\-15.90123\\-171.1941\\9\\-17.85435\\-171.232\\9\\-29.5731\\-171.3111\\9\\-31.52623\\-172.3553\\9\\-33.47935\\-173.0266\\9\\-37.3856\\-173.0693\\9\\-41.29185\\-173.0442\\9\\-43.24498\\-172.6848\\9\\-45.1981\\-171.6353\\9\\-47.15123\\-170.8355\\9\\-49.10435\\-169.3019\\9\\-49.95953\\-168.4115\\9\\-51.4143\\-166.4584\\9\\-52.58335\\-164.5053\\9\\-53.0106\\-163.9794\\9\\-54.96373\\-163.2819\\9\\-55.69747\\-162.5521\\9\\-55.97411\\-160.599\\9\\-55.51304\\-158.6459\\9\\-53.84983\\-156.6928\\9\\-52.38963\\-154.7396\\9\\-51.2834\\-152.7865\\9\\-47.88365\\-148.8803\\9\\-47.15123\\-148.1765\\9\\-45.1981\\-147.3165\\9\\-43.24498\\-146.9937\\9\\-41.29185\\-146.243\\9\\-39.33873\\-145.7922\\9\\-37.3856\\-145.7409\\9\\-35.43248\\-145.085\\9\\-33.47935\\-143.647\\9\\-31.52623\\-142.9458\\9\\-30.31894\\-141.0678\\9\\-30.31148\\-139.1146\\9\\-29.5731\\-138.3008\\9\\-27.61998\\-137.8939\\9\\-25.66685\\-137.8633\\9\\-23.71373\\-136.6674\\9\\-21.7606\\-136.1382\\9\\-20.72381\\-137.1615\\9\\-20.74135\\-139.1146\\9\\-21.34466\\-141.0678\\9\\-21.7606\\-141.6859\\9\\-23.30856\\-143.0209\\9\\-21.7606\\-145.0979\\9\\-19.80748\\-145.7995\\9\\-17.85435\\-145.9358\\9\\-15.90123\\-146.4965\\9\\-13.9481\\-148.098\\9\\-13.14861\\-148.8803\\9\\-12.28794\\-150.8334\\9\\-11.62799\\-152.7865\\9\\-10.79806\\-154.7396\\9\\-9.711435\\-156.6928\\9\\-9.14881\\-158.6459\\9\\-7.924354\\-160.599\\9\\-6.135601\\-161.4432\\9\\-4.893168\\-162.5521\\9\\-3.546935\\-164.5053\\9\\-3.120012\\-166.4584\\9\\-2.46671\\-168.4115\\9\\-2.067761\\-170.3646\\9\\-2.067761\\-193.8021\\9\\-0.276226\\-195.7476\\9\\3.630024\\-195.7476\\9\\5.583149\\-195.6605\\9\\7.536274\\-195.1555\\9\\9.489399\\-194.4662\\9\\11.44252\\-193.9131\\9\\13.39565\\-192.8925\\9\\15.34877\\-191.3694\\9\\17.3019\\-190.6617\\9\\19.25502\\-189.8011\\9\\21.20815\\-189.4895\\9\\23.16127\\-189.4895\\9\\27.06752\\-190.0501\\9\\29.02065\\-190.7621\\9\\30.97377\\-192.35\\9\\32.9269\\-193.3582\\9\\34.88002\\-194.5346\\9\\36.83315\\-193.958\\9\\38.78627\\-193.1326\\9\\40.7394\\-193.0736\\9\\44.64565\\-193.1195\\9\\46.13219\\-193.8021\\9\\48.5519\\-196.0013\\9\\50.50502\\-196.7502\\9\\52.45815\\-197.2288\\9\\54.41127\\-198.5184\\9\\55.80938\\-199.6615\\9\\58.31752\\-202.3471\\9\\59.11653\\-203.5678\\9\\58.31752\\-204.7345\\9\\56.3644\\-204.4216\\9\\54.41127\\-205.0706\\9\\52.45815\\-203.2818\\9\\50.50502\\-202.5036\\9\\48.5519\\-202.611\\9\\47.43665\\-203.5678\\9\\47.35645\\-205.5209\\9\\46.59877\\-207.1897\\9\\44.34047\\-209.4271\\9\\40.7394\\-211.1063\\9\\40.4621\\-211.3803\\9\\36.83315\\-212.929\\9\\36.42459\\-213.3334\\9\\34.88002\\-214.2914\\9\\33.05181\\-215.2865\\9\\30.97377\\-216.6318\\9\\29.02065\\-218.5484\\9\\27.06752\\-219.681\\9\\21.20815\\-219.6896\\9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "402"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "75.89565\\-208.741\\9\\73.94253\\-207.8181\\9\\73.62833\\-207.474\\9\\71.9894\\-206.4715\\9\\70.99101\\-205.5209\\9\\71.9894\\-204.2444\\9\\73.94253\\-203.7042\\9\\75.89565\\-204.5341\\9\\78.55679\\-207.474\\9\\77.85884\\-209.4271\\9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002297"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "130"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "403"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "85.66128\\-212.1512\\9\\84.98519\\-211.3803\\9\\84.61135\\-207.474\\9\\81.75503\\-204.7387\\9\\80.19128\\-203.5678\\9\\77.84878\\-201.0527\\9\\75.89565\\-200.6426\\9\\73.94253\\-200.0244\\9\\71.9894\\-198.5004\\9\\68.08315\\-196.1475\\9\\67.69093\\-195.7553\\9\\66.90614\\-193.8021\\9\\66.87\\-191.849\\9\\65.70863\\-189.8959\\9\\65.00914\\-187.9428\\9\\64.91552\\-185.9896\\9\\64.46987\\-184.0365\\9\\63.24787\\-182.0834\\9\\62.9598\\-178.1771\\9\\63.28798\\-174.2709\\9\\63.02322\\-172.3178\\9\\61.81738\\-170.3646\\9\\61.83683\\-166.4584\\9\\62.81439\\-164.5053\\9\\64.1769\\-163.5073\\9\\65.23405\\-162.5521\\9\\65.56036\\-160.599\\9\\65.32447\\-158.6459\\9\\64.1769\\-157.3818\\9\\62.22377\\-155.6831\\9\\61.42477\\-154.7396\\9\\60.17299\\-152.7865\\9\\59.52069\\-150.8334\\9\\59.45595\\-148.8803\\9\\58.31752\\-147.2318\\9\\56.0904\\-144.974\\9\\55.30812\\-143.0209\\9\\54.41127\\-142.2408\\9\\52.45815\\-141.8816\\9\\50.50502\\-141.2996\\9\\48.5519\\-140.866\\9\\46.59877\\-141.8583\\9\\44.64565\\-141.7346\\9\\42.69252\\-139.9935\\9\\40.7394\\-137.7251\\9\\38.78627\\-137.8819\\9\\34.88002\\-138.0898\\9\\32.9269\\-138.0029\\9\\30.97377\\-137.804\\9\\27.60607\\-135.2084\\9\\27.06752\\-134.6271\\9\\25.1144\\-133.5027\\9\\23.16127\\-131.8641\\9\\21.99167\\-131.3021\\9\\22.10798\\-129.349\\9\\23.16127\\-128.5343\\9\\25.1144\\-127.7903\\9\\27.06752\\-127.5703\\9\\29.02065\\-126.6257\\9\\30.97377\\-126.3093\\9\\34.85783\\-127.3959\\9\\36.83315\\-127.2605\\9\\38.78627\\-126.4809\\9\\40.7394\\-125.8867\\9\\42.39956\\-127.3959\\9\\42.69252\\-127.8585\\9\\43.34842\\-127.3959\\9\\44.22186\\-125.4428\\9\\44.22971\\-123.4896\\9\\44.35268\\-121.5365\\9\\44.82129\\-119.5834\\9\\46.01826\\-117.6303\\9\\46.77829\\-115.6771\\9\\46.4767\\-113.724\\9\\46.51801\\-109.8178\\9\\47.97943\\-107.8646\\9\\48.5519\\-107.5391\\9\\50.50502\\-107.6289\\9\\52.45815\\-108.9115\\9\\54.95647\\-111.7709\\9\\56.5882\\-113.724\\9\\57.52672\\-115.6771\\9\\59.0997\\-117.6303\\9\\60.50637\\-119.5834\\9\\61.18586\\-121.5365\\9\\62.39816\\-123.4896\\9\\62.95248\\-125.4428\\9\\63.01364\\-127.3959\\9\\63.40923\\-129.349\\9\\64.1769\\-131.3268\\9\\63.12899\\-133.2553\\9\\63.91991\\-135.2084\\9\\64.92694\\-137.1615\\9\\64.93475\\-139.1146\\9\\65.46495\\-141.0678\\9\\66.13003\\-141.7956\\9\\66.83209\\-143.0209\\9\\67.38811\\-144.974\\9\\68.08315\\-145.6391\\9\\70.03628\\-147.9319\\9\\70.59039\\-148.8803\\9\\71.30976\\-150.8334\\9\\72.60369\\-152.7865\\9\\73.3438\\-154.7396\\9\\75.20347\\-156.6928\\9\\79.8019\\-161.3752\\9\\80.82186\\-162.5521\\9\\83.70815\\-165.6338\\9\\85.66128\\-167.6076\\9\\87.6144\\-168.6262\\9\\89.01507\\-170.3646\\9\\90.36505\\-172.3178\\9\\92.31172\\-174.2709\\9\\93.47378\\-176.9001\\9\\94.80545\\-180.1303\\9\\95.22746\\-182.0834\\9\\96.52617\\-185.9896\\9\\96.49952\\-191.849\\9\\96.38821\\-193.8021\\9\\95.4269\\-195.5768\\9\\93.47378\\-198.4803\\9\\92.82444\\-199.6615\\9\\92.84525\\-201.6146\\9\\93.18081\\-203.5678\\9\\93.18081\\-205.5209\\9\\92.59714\\-207.474\\9\\92.16998\\-209.4271\\9\\91.52065\\-210.2485\\9\\89.56753\\-211.6277\\9\\87.6144\\-212.4301\\9"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "144"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "404"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.16685\\-215.4609\\11\\-89.73811\\-213.3334\\11\\-88.93459\\-211.3803\\11\\-88.16685\\-210.7378\\11\\-84.97777\\-209.4271\\11\\-83.98716\\-207.474\\11\\-86.21372\\-205.8659\\11\\-88.16685\\-204.8413\\11\\-90.11997\\-204.5914\\11\\-92.0731\\-203.9863\\11\\-94.02622\\-202.2603\\11\\-96.50832\\-199.6615\\11\\-97.3269\\-197.7084\\11\\-97.85171\\-195.7553\\11\\-97.21999\\-191.849\\11\\-98.12217\\-189.8959\\11\\-98.64404\\-187.9428\\11\\-97.10126\\-184.0365\\11\\-96.62868\\-182.0834\\11\\-94.02622\\-176.2345\\11\\-92.8913\\-174.2709\\11\\-90.92139\\-170.3646\\11\\-87.07132\\-166.4584\\11\\-85.63642\\-164.5053\\11\\-85.04087\\-162.5521\\11\\-83.28403\\-160.599\\11\\-81.42473\\-158.6459\\11\\-80.35435\\-157.2124\\11\\-79.82538\\-156.6928\\11\\-78.84512\\-154.7396\\11\\-77.443\\-152.7865\\11\\-77.1307\\-150.8334\\11\\-76.69559\\-148.8803\\11\\-75.48679\\-146.9271\\11\\-74.56156\\-143.0209\\11\\-73.44824\\-141.0678\\11\\-73.14159\\-139.1146\\11\\-73.10378\\-137.1615\\11\\-72.25989\\-133.2553\\11\\-71.63853\\-131.3021\\11\\-71.25157\\-129.349\\11\\-70.66949\\-127.3959\\11\\-69.72794\\-125.4428\\11\\-69.34361\\-123.4896\\11\\-68.6356\\-121.6265\\11\\-67.68321\\-119.5834\\11\\-65.65255\\-115.6771\\11\\-64.72935\\-114.6715\\11\\-60.8231\\-110.9007\\11\\-58.86998\\-109.5703\\11\\-56.91685\\-109.6183\\11\\-55.12368\\-111.7709\\11\\-54.62947\\-113.724\\11\\-54.5769\\-115.6771\\11\\-54.1465\\-117.6303\\11\\-53.36742\\-119.5834\\11\\-53.0106\\-120.743\\11\\-51.96033\\-119.5834\\11\\-51.05748\\-119.0575\\11\\-50.37746\\-117.6303\\11\\-49.10435\\-116.5199\\11\\-47.15123\\-116.8308\\11\\-45.1981\\-118.7352\\11\\-43.24498\\-120.2286\\11\\-41.29185\\-120.8162\\11\\-37.3856\\-120.894\\11\\-35.43248\\-122.1634\\11\\-32.58228\\-123.4896\\11\\-31.52623\\-124.3005\\11\\-30.78675\\-125.4428\\11\\-30.56243\\-127.3959\\11\\-29.5731\\-128.8655\\11\\-27.77671\\-131.3021\\11\\-28.42869\\-133.2553\\11\\-29.5731\\-133.7046\\11\\-33.47935\\-136.5131\\11\\-34.19198\\-137.1615\\11\\-33.47935\\-138.0213\\11\\-31.52623\\-138.2097\\11\\-29.5731\\-137.7363\\11\\-27.61998\\-137.6498\\11\\-25.66685\\-137.783\\11\\-23.71373\\-137.8109\\11\\-21.7606\\-137.6997\\11\\-20.22342\\-139.1146\\11\\-20.87008\\-141.0678\\11\\-21.7606\\-142.0213\\11\\-23.48348\\-143.0209\\11\\-23.71373\\-143.2856\\11\\-25.66685\\-143.4595\\11\\-27.61998\\-143.4595\\11\\-31.52623\\-143.6303\\11\\-33.47935\\-142.2492\\11\\-35.43248\\-142.2345\\11\\-37.3856\\-142.9401\\11\\-39.33873\\-142.8988\\11\\-41.29185\\-142.2332\\11\\-45.1981\\-143.9544\\11\\-47.1024\\-143.0209\\11\\-48.05736\\-141.0678\\11\\-49.10435\\-140.0868\\11\\-51.05748\\-139.951\\11\\-53.0106\\-140.757\\11\\-54.96373\\-141.1945\\11\\-56.91685\\-139.9866\\11\\-58.24131\\-141.0678\\11\\-60.01615\\-143.0209\\11\\-60.56044\\-144.974\\11\\-62.11594\\-146.9271\\11\\-62.77623\\-148.715\\11\\-63.97474\\-150.8334\\11\\-64.22404\\-152.7865\\11\\-65.35347\\-154.7396\\11\\-65.50719\\-156.6928\\11\\-64.72172\\-158.6459\\11\\-64.72172\\-166.4584\\11\\-64.51765\\-170.3646\\11\\-64.50555\\-176.224\\11\\-65.26254\\-178.1771\\11\\-65.61507\\-180.1303\\11\\-65.61507\\-182.0834\\11\\-65.87681\\-184.0365\\11\\-65.87854\\-185.9896\\11\\-65.63986\\-187.9428\\11\\-66.2477\\-189.8959\\11\\-67.36064\\-191.849\\11\\-67.3735\\-193.8021\\11\\-67.74988\\-195.7553\\11\\-68.6356\\-196.5893\\11\\-70.58872\\-196.8594\\11\\-72.54185\\-196.9646\\11\\-73.80848\\-197.7084\\11\\-74.49497\\-198.4232\\11\\-75.20996\\-199.6615\\11\\-77.41924\\-201.6146\\11\\-78.96316\\-203.5678\\11\\-79.48978\\-205.5209\\11\\-80.35435\\-206.4314\\11\\-82.30747\\-208.1301\\11\\-83.95663\\-209.4271\\11\\-82.97111\\-211.3803\\11\\-83.12363\\-213.3334\\11\\-84.2606\\-215.0388\\11\\-86.21372\\-216.0069\\11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "132"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "405"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "17.3019\\-219.4967\\11\\15.34877\\-218.3028\\11\\11.44252\\-216.8875\\11\\7.536274\\-215.9008\\11\\6.252478\\-215.2865\\11\\5.583149\\-214.7298\\11\\3.141743\\-211.3803\\11\\2.934593\\-209.4271\\11\\2.928273\\-207.474\\11\\2.594985\\-205.5209\\11\\1.124444\\-203.5678\\11\\0.918452\\-201.6146\\11\\-0.276226\\-200.3628\\11\\-3.181253\\-197.7084\\11\\-3.934333\\-195.7553\\11\\-3.127789\\-193.8021\\11\\-3.127789\\-184.0365\\11\\-3.726747\\-182.0834\\11\\-4.182476\\-181.9843\\11\\-4.845324\\-180.1303\\11\\-5.101333\\-178.1771\\11\\-5.192569\\-176.224\\11\\-5.597382\\-174.2709\\11\\-6.858785\\-170.3646\\11\\-8.088726\\-168.8062\\11\\-10.04185\\-167.6463\\11\\-10.76396\\-168.4115\\11\\-11.19699\\-170.3646\\11\\-11.82059\\-172.3178\\11\\-13.9481\\-174.4703\\11\\-15.90123\\-175.0405\\11\\-17.85435\\-175.103\\11\\-21.7606\\-175.103\\11\\-23.71373\\-175.1593\\11\\-27.61998\\-175.4071\\11\\-31.52623\\-175.2407\\11\\-35.43248\\-175.1827\\11\\-37.3856\\-175.076\\11\\-41.29185\\-175.0021\\11\\-43.24498\\-174.0196\\11\\-45.1981\\-173.2025\\11\\-46.5728\\-172.3178\\11\\-49.10435\\-170.0369\\11\\-51.05748\\-167.676\\11\\-53.0106\\-165.7146\\11\\-54.96373\\-165.9658\\11\\-55.7688\\-164.5053\\11\\-55.84177\\-162.5521\\11\\-55.51618\\-160.599\\11\\-54.96373\\-159.8553\\11\\-51.69197\\-154.7396\\11\\-50.05317\\-152.7865\\11\\-47.83761\\-148.8803\\11\\-47.15123\\-148.2016\\11\\-45.1981\\-147.2737\\11\\-41.29185\\-147.0079\\11\\-39.33873\\-146.7897\\11\\-35.43248\\-146.9647\\11\\-31.52623\\-146.7792\\11\\-29.5731\\-147.3716\\11\\-27.61998\\-147.6281\\11\\-23.71373\\-147.6507\\11\\-21.7606\\-147.512\\11\\-19.80748\\-147.5447\\11\\-17.85435\\-147.7784\\11\\-15.90123\\-147.8988\\11\\-13.9481\\-148.975\\11\\-12.67106\\-150.8334\\11\\-11.53301\\-152.7865\\11\\-10.75605\\-154.7396\\11\\-10.20344\\-156.6928\\11\\-9.918877\\-158.6459\\11\\-9.283515\\-160.599\\11\\-8.088726\\-162.2964\\11\\-6.135601\\-163.4776\\11\\-5.153613\\-164.5053\\11\\-2.98999\\-168.4115\\11\\-2.39094\\-170.3646\\11\\-2.067761\\-174.2709\\11\\-2.067761\\-193.8021\\11\\-0.276226\\-195.7476\\11\\3.630024\\-195.5558\\11\\5.583149\\-195.0991\\11\\7.536274\\-194.4476\\11\\9.489399\\-193.272\\11\\11.44252\\-192.9374\\11\\13.39565\\-192.4947\\11\\15.34877\\-190.9173\\11\\17.3019\\-189.8437\\11\\19.25502\\-189.2816\\11\\21.20815\\-189.0851\\11\\23.16127\\-189.0696\\11\\25.1144\\-189.2744\\11\\27.06752\\-189.6484\\11\\29.02065\\-189.8732\\11\\30.97377\\-191.0556\\11\\32.9269\\-192.5933\\11\\34.88002\\-192.9357\\11\\36.8712\\-191.849\\11\\38.78627\\-191.081\\11\\40.7394\\-189.8437\\11\\42.69252\\-189.8293\\11\\44.64565\\-190.9372\\11\\46.59877\\-191.1258\\11\\48.4315\\-191.849\\11\\50.76396\\-193.8021\\11\\52.35939\\-195.7553\\11\\56.3644\\-198.4839\\11\\58.31752\\-200.262\\11\\60.90619\\-203.5678\\11\\60.27065\\-204.4777\\11\\59.23535\\-205.5209\\11\\58.31752\\-206.1668\\11\\57.59946\\-205.5209\\11\\56.3644\\-204.0423\\11\\54.41127\\-202.7896\\11\\52.22418\\-203.5678\\11\\50.50502\\-206.7721\\11\\48.5519\\-209.0831\\11\\46.23668\\-211.3803\\11\\43.72949\\-213.3334\\11\\42.69252\\-213.8985\\11\\40.7394\\-214.2021\\11\\38.55117\\-215.2865\\11\\36.83315\\-215.8167\\11\\34.88002\\-215.9883\\11\\32.9269\\-216.7547\\11\\30.28882\\-219.1928\\11\\29.02065\\-220.139\\11\\27.06752\\-220.6021\\11\\21.20815\\-220.6021\\11\\19.25502\\-220.2104\\11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "406"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "73.94253\\-206.3512\\11\\71.9894\\-204.7855\\11\\70.70183\\-203.5678\\11\\71.9894\\-202.567\\11\\73.94253\\-202.8184\\11\\75.89565\\-203.9512\\11\\76.8251\\-205.5209\\11\\75.89565\\-206.6664\\11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002296"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "125"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "407"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "87.6144\\-213.5691\\11\\85.66128\\-212.1205\\11\\85.03983\\-211.3803\\11\\84.95953\\-209.4271\\11\\84.65392\\-207.474\\11\\80.67241\\-203.5678\\11\\78.91703\\-201.6146\\11\\77.84878\\-200.2272\\11\\75.89565\\-198.617\\11\\73.94253\\-197.3829\\11\\71.9894\\-196.7372\\11\\70.87246\\-195.7553\\11\\69.3879\\-193.8021\\11\\68.23176\\-189.8959\\11\\67.04948\\-187.9428\\11\\66.37751\\-185.9896\\11\\65.2443\\-184.0365\\11\\64.98492\\-182.0834\\11\\64.51518\\-180.1303\\11\\63.29355\\-178.1771\\11\\63.21235\\-176.224\\11\\63.24436\\-174.2709\\11\\63.03911\\-172.3178\\11\\62.08834\\-170.3646\\11\\61.86695\\-166.4584\\11\\64.1769\\-164.2347\\11\\65.46053\\-162.5521\\11\\65.314\\-160.599\\11\\64.1769\\-159.0426\\11\\61.70949\\-156.6928\\11\\59.92952\\-154.7396\\11\\58.95893\\-152.7865\\11\\56.3644\\-148.9517\\11\\52.37221\\-144.974\\11\\50.50502\\-143.2949\\11\\48.5519\\-142.4374\\11\\46.59877\\-143.6874\\11\\44.64565\\-142.4316\\11\\42.69252\\-140.484\\11\\40.7394\\-139.9402\\11\\38.78627\\-139.7743\\11\\36.83315\\-139.9094\\11\\34.88002\\-140.2096\\11\\32.9269\\-139.8208\\11\\30.97377\\-138.5657\\11\\29.02065\\-137.409\\11\\27.06752\\-135.9348\\11\\25.1144\\-135.4559\\11\\23.16127\\-134.4065\\11\\22.30825\\-133.2553\\11\\20.16333\\-131.3021\\11\\21.02596\\-129.349\\11\\23.16127\\-128.2673\\11\\25.1144\\-127.8667\\11\\27.06752\\-128.1649\\11\\29.1268\\-127.3959\\11\\30.97377\\-126.8902\\11\\32.9269\\-127.6777\\11\\34.88002\\-127.1484\\11\\36.83315\\-126.7534\\11\\40.7394\\-125.8297\\11\\42.08547\\-127.3959\\11\\42.69252\\-128.5419\\11\\43.91323\\-127.3959\\11\\44.35803\\-125.4428\\11\\44.51021\\-123.4896\\11\\45.3913\\-121.5365\\11\\45.57636\\-119.5834\\11\\46.77316\\-117.6303\\11\\47.50624\\-115.6771\\11\\47.46832\\-113.724\\11\\45.82586\\-109.8178\\11\\45.28569\\-107.8646\\11\\46.11049\\-105.9115\\11\\46.59877\\-105.5445\\11\\48.5519\\-105.4956\\11\\50.50502\\-106.1792\\11\\52.45815\\-107.3701\\11\\54.59827\\-109.8178\\11\\55.71907\\-111.7709\\11\\58.31752\\-114.6295\\11\\60.57461\\-117.6303\\11\\61.35305\\-119.5834\\11\\62.99245\\-121.5365\\11\\63.19605\\-123.4896\\11\\64.21446\\-125.4428\\11\\64.89133\\-127.3959\\11\\65.10439\\-129.349\\11\\65.47327\\-131.3021\\11\\65.98781\\-133.2553\\11\\66.76855\\-135.2084\\11\\67.01118\\-139.1146\\11\\68.08315\\-141.1776\\11\\68.9455\\-143.0209\\11\\72.04158\\-148.8803\\11\\72.98171\\-150.8334\\11\\74.09113\\-152.7865\\11\\74.93484\\-154.7396\\11\\76.54481\\-156.6928\\11\\80.45811\\-160.599\\11\\82.01411\\-162.5521\\11\\82.82481\\-164.5053\\11\\85.66128\\-167.5655\\11\\87.707\\-168.4115\\11\\89.56753\\-171.0695\\11\\90.36505\\-172.3178\\11\\92.31172\\-174.2709\\11\\93.18081\\-176.224\\11\\93.32516\\-178.1771\\11\\94.36733\\-180.1303\\11\\94.73785\\-182.0834\\11\\94.79837\\-184.0365\\11\\95.40419\\-185.9896\\11\\94.80545\\-187.9428\\11\\94.83655\\-189.8959\\11\\94.24107\\-193.8021\\11\\94.07971\\-195.7553\\11\\93.29939\\-197.7084\\11\\92.71788\\-199.6615\\11\\92.74136\\-201.6146\\11\\93.18081\\-203.5678\\11\\93.18081\\-205.5209\\11\\92.93317\\-209.4271\\11\\91.65453\\-211.3803\\11\\89.56753\\-212.5843\\11"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "160"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "408"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-88.16685\\-216.3311\\13\\-89.53915\\-215.2865\\13\\-90.59082\\-213.3334\\13\\-89.05895\\-211.3803\\13\\-87.0754\\-209.4271\\13\\-86.32387\\-207.474\\13\\-88.16685\\-205.9128\\13\\-90.11997\\-204.9747\\13\\-92.0731\\-204.5399\\13\\-93.1522\\-203.5678\\13\\-94.85468\\-201.6146\\13\\-96.00206\\-199.6615\\13\\-96.91049\\-197.7084\\13\\-97.61766\\-195.7553\\13\\-97.15976\\-193.8021\\13\\-96.88828\\-191.849\\13\\-97.17786\\-189.8959\\13\\-97.83774\\-187.9428\\13\\-97.60696\\-185.9896\\13\\-96.87308\\-184.0365\\13\\-95.97172\\-182.0834\\13\\-95.75555\\-180.1303\\13\\-94.02622\\-176.3165\\13\\-91.8614\\-172.3178\\13\\-90.92139\\-170.3646\\13\\-88.16685\\-167.5872\\13\\-87.13763\\-166.4584\\13\\-85.78835\\-164.5053\\13\\-85.21065\\-162.5521\\13\\-83.4204\\-160.599\\13\\-82.67682\\-158.6459\\13\\-82.30747\\-158.2159\\13\\-80.35435\\-155.2547\\13\\-79.87233\\-154.7396\\13\\-79.1455\\-152.7865\\13\\-78.67176\\-150.8334\\13\\-77.443\\-148.8803\\13\\-77.1623\\-146.9271\\13\\-76.70719\\-144.974\\13\\-75.49985\\-143.0209\\13\\-75.19672\\-141.0678\\13\\-74.76551\\-139.1146\\13\\-74.10563\\-137.1615\\13\\-73.55544\\-135.2084\\13\\-73.30915\\-133.2553\\13\\-72.87794\\-131.3021\\13\\-72.14493\\-129.349\\13\\-71.61246\\-127.3959\\13\\-71.28416\\-125.4428\\13\\-70.64091\\-123.4896\\13\\-68.71637\\-119.5834\\13\\-66.73466\\-115.6771\\13\\-65.64188\\-113.724\\13\\-64.72935\\-112.8262\\13\\-63.33723\\-111.7709\\13\\-60.8231\\-109.4795\\13\\-58.86998\\-108.672\\13\\-56.91685\\-108.9622\\13\\-55.92995\\-109.8178\\13\\-55.25669\\-111.7709\\13\\-55.22281\\-115.6771\\13\\-54.94084\\-117.6303\\13\\-54.15158\\-119.5834\\13\\-53.81084\\-121.5365\\13\\-53.63205\\-123.4896\\13\\-53.13267\\-125.4428\\13\\-52.94611\\-127.3959\\13\\-52.92065\\-129.349\\13\\-51.05748\\-131.2888\\13\\-50.33502\\-129.349\\13\\-50.09035\\-127.3959\\13\\-49.36244\\-123.4896\\13\\-50.27523\\-121.5365\\13\\-50.83368\\-119.5834\\13\\-49.44373\\-117.6303\\13\\-49.10435\\-117.3091\\13\\-47.15123\\-117.1449\\13\\-45.1981\\-118.4603\\13\\-43.24498\\-118.7099\\13\\-41.29185\\-119.3596\\13\\-39.33873\\-120.2432\\13\\-37.54358\\-119.5834\\13\\-37.23214\\-119.5834\\13\\-35.43248\\-120.3288\\13\\-29.72682\\-123.4896\\13\\-27.61998\\-124.8857\\13\\-25.66685\\-125.0789\\13\\-24.07645\\-125.4428\\13\\-21.7606\\-126.6311\\13\\-19.80748\\-126.6311\\13\\-17.85435\\-126.9113\\13\\-17.22587\\-127.3959\\13\\-15.90123\\-129.3881\\13\\-17.85435\\-130.0786\\13\\-19.80748\\-130.5697\\13\\-20.65383\\-131.3021\\13\\-21.7606\\-131.7006\\13\\-24.26936\\-133.2553\\13\\-27.61998\\-134.4987\\13\\-28.70815\\-135.2084\\13\\-27.61998\\-135.9701\\13\\-25.66685\\-137.6054\\13\\-23.71373\\-138.1339\\13\\-21.7606\\-138.4294\\13\\-21.07158\\-139.1146\\13\\-21.39126\\-141.0678\\13\\-21.7606\\-141.4468\\13\\-23.71373\\-142.3994\\13\\-25.66685\\-143.1156\\13\\-27.61998\\-143.2914\\13\\-29.5731\\-143.8454\\13\\-31.52623\\-144.0401\\13\\-33.47935\\-143.7242\\13\\-35.43248\\-142.3648\\13\\-37.3856\\-142.1946\\13\\-39.33873\\-142.2206\\13\\-41.29185\\-142.524\\13\\-43.24498\\-144.0813\\13\\-45.1981\\-144.9663\\13\\-47.15123\\-144.2375\\13\\-48.35439\\-143.0209\\13\\-49.10435\\-141.8089\\13\\-50.04762\\-141.0678\\13\\-51.05748\\-140.5481\\13\\-53.0106\\-142.4204\\13\\-54.96373\\-143.3716\\13\\-56.91685\\-143.4921\\13\\-58.17825\\-144.974\\13\\-59.52766\\-146.9271\\13\\-61.98277\\-150.8334\\13\\-62.66772\\-152.7865\\13\\-63.85582\\-154.7396\\13\\-64.04031\\-156.6928\\13\\-64.32295\\-162.5521\\13\\-64.41454\\-166.4584\\13\\-65.24303\\-168.4115\\13\\-65.61507\\-170.3646\\13\\-65.66743\\-176.224\\13\\-66.36374\\-178.1771\\13\\-66.95301\\-180.1303\\13\\-66.97741\\-182.0834\\13\\-67.51588\\-184.0365\\13\\-67.46042\\-187.9428\\13\\-68.2405\\-189.8959\\13\\-68.6356\\-190.4407\\13\\-70.41212\\-193.8021\\13\\-72.54185\\-194.8723\\13\\-74.49497\\-195.9913\\13\\-76.4481\\-198.1486\\13\\-77.46783\\-199.6615\\13\\-79.05735\\-201.6146\\13\\-79.49187\\-203.5678\\13\\-81.07314\\-205.5209\\13\\-81.50352\\-207.474\\13\\-82.53339\\-209.4271\\13\\-83.10648\\-211.3803\\13\\-83.42419\\-213.3334\\13\\-83.87366\\-215.2865\\13\\-84.2606\\-215.7167\\13\\-86.21372\\-216.7396\\13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "409"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "9.489399\\-131.584\\13\\7.536274\\-130.3194\\13\\5.583149\\-129.7434\\13\\5.196209\\-129.349\\13\\5.583149\\-128.4168\\13\\6.469765\\-127.3959\\13\\7.536274\\-126.9163\\13\\8.933768\\-127.3959\\13\\9.489399\\-127.7351\\13\\11.33663\\-129.349\\13\\11.64196\\-131.3021\\13\\11.44252\\-131.5016\\13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "148"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "410"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "17.3019\\-219.9909\\13\\15.34877\\-218.844\\13\\13.39565\\-218.3167\\13\\11.44252\\-217.9955\\13\\7.536274\\-217.8245\\13\\5.583149\\-216.8744\\13\\3.630024\\-214.9182\\13\\2.808824\\-213.3334\\13\\2.011525\\-211.3803\\13\\0.9145823\\-209.4271\\13\\0.7895203\\-205.5209\\13\\0.4536789\\-203.5678\\13\\-0.8742334\\-201.6146\\13\\-1.418709\\-199.6615\\13\\-3.186284\\-197.7084\\13\\-3.945965\\-195.7553\\13\\-3.469849\\-193.8021\\13\\-3.127789\\-191.849\\13\\-3.127789\\-187.9428\\13\\-3.726747\\-185.9896\\13\\-4.182476\\-185.3682\\13\\-4.290983\\-184.0365\\13\\-4.890484\\-182.0834\\13\\-5.797315\\-178.1771\\13\\-5.923899\\-176.224\\13\\-7.711942\\-172.3178\\13\\-8.088726\\-171.8486\\13\\-10.04185\\-173.7493\\13\\-11.88054\\-176.224\\13\\-13.9481\\-178.4352\\13\\-15.90123\\-178.9937\\13\\-17.85435\\-179.2359\\13\\-19.80748\\-179.0296\\13\\-21.7606\\-179.0084\\13\\-23.71373\\-180.342\\13\\-25.66685\\-180.6185\\13\\-29.5731\\-180.6185\\13\\-31.52623\\-180.2657\\13\\-33.47935\\-179.0016\\13\\-35.43248\\-178.8677\\13\\-37.3856\\-178.2992\\13\\-39.33873\\-177.0975\\13\\-41.29185\\-176.9846\\13\\-43.24498\\-175.8467\\13\\-45.1981\\-175.0511\\13\\-46.22085\\-174.2709\\13\\-48.05844\\-172.3178\\13\\-49.99673\\-170.3646\\13\\-51.69774\\-168.4115\\13\\-53.0106\\-167.4103\\13\\-54.96373\\-167.2947\\13\\-55.74033\\-166.4584\\13\\-55.54424\\-164.5053\\13\\-54.29364\\-162.5521\\13\\-53.98716\\-160.599\\13\\-53.01841\\-158.6459\\13\\-51.73707\\-156.6928\\13\\-51.05748\\-154.877\\13\\-49.8651\\-152.7865\\13\\-47.15123\\-149.2696\\13\\-45.1981\\-147.7989\\13\\-43.24498\\-147.371\\13\\-39.33873\\-147.3525\\13\\-37.3856\\-147.7822\\13\\-35.43248\\-147.9691\\13\\-31.52623\\-148.016\\13\\-29.5731\\-148.371\\13\\-27.61998\\-149.0023\\13\\-23.71373\\-149.0023\\13\\-21.7606\\-148.5012\\13\\-19.80748\\-148.395\\13\\-15.90123\\-149.5295\\13\\-13.9481\\-150.7258\\13\\-11.4195\\-154.7396\\13\\-10.71135\\-156.6928\\13\\-10.21624\\-158.6459\\13\\-9.933344\\-160.599\\13\\-8.99727\\-162.5521\\13\\-7.259236\\-164.5053\\13\\-6.189427\\-166.4584\\13\\-4.182476\\-168.5092\\13\\-3.22873\\-170.3646\\13\\-2.999805\\-172.3178\\13\\-2.403737\\-174.2709\\13\\-2.403737\\-176.224\\13\\-2.067761\\-180.1303\\13\\-2.067761\\-191.849\\13\\-1.925388\\-193.8021\\13\\-0.276226\\-195.5195\\13\\1.676899\\-195.0535\\13\\3.630024\\-194.7545\\13\\5.583149\\-193.9599\\13\\7.536274\\-192.9644\\13\\9.489399\\-192.5722\\13\\11.44252\\-191.9592\\13\\13.39565\\-191.6252\\13\\15.34877\\-190.8123\\13\\17.3019\\-189.6368\\13\\21.20815\\-188.7324\\13\\23.16127\\-188.1713\\13\\25.1144\\-189.0231\\13\\27.06752\\-189.6368\\13\\29.02065\\-189.6602\\13\\30.97377\\-190.6141\\13\\32.9269\\-191.3189\\13\\34.88002\\-191.2784\\13\\36.86761\\-189.8959\\13\\38.78627\\-189.0638\\13\\40.7394\\-187.9052\\13\\42.69252\\-187.3003\\13\\44.64565\\-187.3965\\13\\46.59877\\-187.9052\\13\\48.5519\\-188.9779\\13\\50.50502\\-189.3183\\13\\51.64631\\-189.8959\\13\\53.73674\\-191.849\\13\\54.41127\\-192.6879\\13\\54.91659\\-193.8021\\13\\55.17438\\-195.7553\\13\\56.3644\\-197.0363\\13\\58.31752\\-198.8282\\13\\60.91999\\-201.6146\\13\\61.34531\\-203.5678\\13\\60.97594\\-205.5209\\13\\60.27065\\-206.2407\\13\\58.31752\\-206.734\\13\\57.24286\\-205.5209\\13\\57.46904\\-203.5678\\13\\56.3644\\-202.567\\13\\54.41127\\-202.7669\\13\\53.57035\\-203.5678\\13\\53.12765\\-205.5209\\13\\52.45815\\-206.7579\\13\\50.50502\\-209.5636\\13\\49.42894\\-211.3803\\13\\48.5519\\-212.2409\\13\\46.59877\\-213.3856\\13\\42.69252\\-215.3673\\13\\40.7394\\-215.9883\\13\\38.78627\\-216.2966\\13\\36.83315\\-216.7335\\13\\34.88002\\-217.2918\\13\\32.9269\\-218.2212\\13\\30.97377\\-219.7959\\13\\29.02065\\-220.7344\\13\\27.06752\\-220.8754\\13\\21.20815\\-220.8754\\13\\19.25502\\-220.7274\\13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002295"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "136"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "411"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "87.6144\\-214.1497\\13\\86.72513\\-213.3334\\13\\85.09934\\-211.3803\\13\\84.86104\\-209.4271\\13\\84.43317\\-207.474\\13\\82.71524\\-205.5209\\13\\80.73618\\-203.5678\\13\\79.49591\\-201.6146\\13\\78.60432\\-199.6615\\13\\77.84878\\-198.864\\13\\75.89565\\-197.1773\\13\\73.94253\\-196.1445\\13\\73.48249\\-195.7553\\13\\71.8063\\-193.8021\\13\\70.81194\\-191.849\\13\\69.63052\\-189.8959\\13\\68.9047\\-187.9428\\13\\67.68851\\-185.9896\\13\\66.96781\\-184.0365\\13\\66.87486\\-182.0834\\13\\66.13003\\-180.1727\\13\\65.01755\\-178.1771\\13\\64.50893\\-176.224\\13\\63.36609\\-174.2709\\13\\63.14466\\-170.3646\\13\\62.90025\\-168.4115\\13\\61.99998\\-166.4584\\13\\63.84506\\-164.5053\\13\\64.1769\\-164.2646\\13\\65.28219\\-162.5521\\13\\64.1769\\-161.0511\\13\\57.96924\\-154.7396\\13\\57.31605\\-152.7865\\13\\56.3644\\-151.2943\\13\\52.32845\\-146.9271\\13\\50.1257\\-144.974\\13\\48.5519\\-144.0496\\13\\46.59877\\-144.3837\\13\\44.64565\\-143.8733\\13\\43.89712\\-143.0209\\13\\40.7394\\-140.2002\\13\\38.78627\\-139.9659\\13\\36.83315\\-140.1748\\13\\34.88002\\-141.3496\\13\\32.9269\\-140.422\\13\\30.97377\\-139.9025\\13\\29.02065\\-138.1381\\13\\27.06752\\-136.2561\\13\\25.1144\\-135.8509\\13\\23.16127\\-135.6051\\13\\22.75437\\-135.2084\\13\\20.15997\\-133.2553\\13\\19.90778\\-131.3021\\13\\21.20815\\-130.0286\\13\\23.16127\\-128.8096\\13\\25.1144\\-128.2166\\13\\27.06752\\-128.2635\\13\\29.02065\\-128.0984\\13\\30.97377\\-127.6664\\13\\32.9269\\-127.7107\\13\\34.88002\\-126.6301\\13\\36.83315\\-126.0081\\13\\38.78627\\-125.1172\\13\\40.7394\\-125.0081\\13\\41.18219\\-125.4428\\13\\41.74892\\-127.3959\\13\\42.47782\\-129.349\\13\\42.97545\\-129.349\\13\\44.64565\\-127.0161\\13\\45.36444\\-125.4428\\13\\45.59521\\-123.4896\\13\\46.62221\\-121.5365\\13\\47.40599\\-119.5834\\13\\48.5519\\-117.2006\\13\\49.16619\\-115.6771\\13\\48.5519\\-114.2489\\13\\47.12874\\-111.7709\\13\\44.64565\\-108.885\\13\\43.88403\\-107.8646\\13\\43.86165\\-105.9115\\13\\44.64565\\-104.1537\\13\\46.59877\\-103.4875\\13\\48.5519\\-103.5617\\13\\50.50502\\-104.6559\\13\\52.45815\\-106.4886\\13\\56.3644\\-110.5952\\13\\57.23616\\-111.7709\\13\\58.95584\\-113.724\\13\\60.57461\\-115.6771\\13\\61.18567\\-117.6303\\13\\62.9271\\-119.5834\\13\\63.46803\\-121.5365\\13\\64.1769\\-123.4495\\13\\65.17146\\-125.4428\\13\\65.45001\\-127.3959\\13\\65.58873\\-129.349\\13\\66.44484\\-131.3021\\13\\67.1349\\-133.2553\\13\\67.50837\\-135.2084\\13\\68.08315\\-137.1062\\13\\68.84975\\-139.1146\\13\\69.15407\\-141.0678\\13\\70.21066\\-143.0209\\13\\71.10561\\-144.974\\13\\72.22512\\-146.9271\\13\\73.05967\\-148.8803\\13\\74.25734\\-150.8334\\13\\75.01186\\-152.7865\\13\\76.30205\\-154.7396\\13\\77.30021\\-156.6928\\13\\78.92715\\-158.6459\\13\\80.68772\\-160.599\\13\\82.6167\\-162.5521\\13\\83.93195\\-164.5053\\13\\85.03387\\-166.4584\\13\\85.66128\\-167.0965\\13\\87.6144\\-167.9768\\13\\88.09936\\-168.4115\\13\\89.16113\\-170.3646\\13\\90.4174\\-172.3178\\13\\92.31172\\-174.2709\\13\\93.18081\\-176.224\\13\\93.19195\\-178.1771\\13\\94.28349\\-180.1303\\13\\94.65398\\-182.0834\\13\\94.69689\\-185.9896\\13\\94.13015\\-187.9428\\13\\94.06844\\-191.849\\13\\93.55515\\-193.8021\\13\\93.18081\\-197.7084\\13\\93.0484\\-199.6615\\13\\93.18081\\-203.5678\\13\\93.16981\\-209.4271\\13\\92.55202\\-211.3803\\13\\91.52065\\-212.4012\\13\\89.56753\\-213.7483\\13"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "176"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "412"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-90.11997\\-216.2631\\15\\-91.12308\\-215.2865\\15\\-91.28856\\-213.3334\\15\\-88.73223\\-211.3803\\15\\-87.43196\\-209.4271\\15\\-87.33182\\-207.474\\15\\-88.16685\\-206.4632\\15\\-90.11997\\-205.0156\\15\\-92.0731\\-204.8681\\15\\-94.02622\\-203.9128\\15\\-94.36231\\-203.5678\\15\\-95.08379\\-201.6146\\15\\-96.48466\\-199.6615\\15\\-97.61766\\-195.7553\\15\\-97.12798\\-193.8021\\15\\-97.03949\\-191.849\\15\\-97.48588\\-189.8959\\15\\-97.6395\\-187.9428\\15\\-97.59639\\-185.9896\\15\\-96.11478\\-182.0834\\15\\-95.89858\\-180.1303\\15\\-95.10873\\-178.1771\\15\\-94.47012\\-176.224\\15\\-92.9474\\-174.2709\\15\\-90.92139\\-170.3646\\15\\-89.05784\\-168.4115\\15\\-87.3885\\-166.4584\\15\\-86.54981\\-164.5053\\15\\-85.40068\\-162.5521\\15\\-84.47231\\-160.599\\15\\-83.37241\\-158.6459\\15\\-82.54649\\-156.6928\\15\\-81.35719\\-154.7396\\15\\-80.49078\\-152.7865\\15\\-79.36505\\-150.8334\\15\\-78.84512\\-148.8803\\15\\-77.87011\\-146.9271\\15\\-76.90108\\-143.0209\\15\\-76.01475\\-141.0678\\15\\-75.48045\\-139.1146\\15\\-75.05691\\-137.1615\\15\\-74.44239\\-135.2084\\15\\-74.12084\\-133.2553\\15\\-72.46047\\-127.3959\\15\\-72.14747\\-125.4428\\15\\-71.56055\\-123.4896\\15\\-70.58872\\-121.4361\\15\\-68.61271\\-117.6303\\15\\-67.69222\\-115.6771\\15\\-66.68247\\-113.8684\\15\\-64.56396\\-111.7709\\15\\-62.77623\\-110.7446\\15\\-58.86998\\-109.2919\\15\\-57.90403\\-109.8178\\15\\-56.91685\\-110.6995\\15\\-56.22715\\-111.7709\\15\\-55.99509\\-113.724\\15\\-55.76928\\-117.6303\\15\\-55.0858\\-121.5365\\15\\-54.32952\\-123.4896\\15\\-53.18499\\-127.3959\\15\\-53.00156\\-129.349\\15\\-51.05748\\-130.9277\\15\\-49.74522\\-129.349\\15\\-48.96891\\-127.3959\\15\\-49.27874\\-125.4428\\15\\-49.11198\\-123.4896\\15\\-50.09943\\-121.5365\\15\\-50.18571\\-119.5834\\15\\-49.10435\\-118.5475\\15\\-47.15123\\-118.2588\\15\\-45.1981\\-118.4143\\15\\-43.24498\\-118.3898\\15\\-41.29185\\-118.6477\\15\\-39.33873\\-118.7688\\15\\-37.3856\\-118.6606\\15\\-35.43248\\-118.9341\\15\\-33.47935\\-120.6116\\15\\-29.5731\\-121.0146\\15\\-27.61998\\-121.266\\15\\-25.66685\\-121.8262\\15\\-23.71373\\-122.7399\\15\\-21.7606\\-124.5042\\15\\-19.80748\\-124.7164\\15\\-17.85435\\-125.1388\\15\\-15.90123\\-126.777\\15\\-13.9481\\-128.1088\\15\\-11.99498\\-128.379\\15\\-10.04185\\-129.0235\\15\\-8.088726\\-129.2824\\15\\-5.915087\\-129.349\\15\\-4.182476\\-130.659\\15\\-2.229351\\-130.9458\\15\\-0.276226\\-130.7162\\15\\1.005512\\-129.349\\15\\3.630024\\-128.5235\\15\\5.583149\\-126.8186\\15\\7.536274\\-126.7328\\15\\9.489399\\-128.1821\\15\\11.44252\\-129.1734\\15\\13.32477\\-131.3021\\15\\12.89368\\-133.2553\\15\\11.44252\\-134.1131\\15\\9.489399\\-133.3638\\15\\7.536274\\-132.3701\\15\\3.630024\\-132.2787\\15\\1.676899\\-132.0466\\15\\-0.276226\\-131.6491\\15\\-6.135601\\-131.6277\\15\\-10.04185\\-131.5631\\15\\-13.9481\\-131.0336\\15\\-17.85435\\-131.6989\\15\\-19.80748\\-131.773\\15\\-21.7606\\-132.337\\15\\-23.71373\\-133.6806\\15\\-25.66685\\-134.7237\\15\\-26.115\\-135.2084\\15\\-26.33008\\-137.1615\\15\\-26.05885\\-139.1146\\15\\-25.66685\\-140.2743\\15\\-24.78113\\-141.0678\\15\\-29.5731\\-142.8214\\15\\-31.52623\\-143.1258\\15\\-33.47935\\-142.7562\\15\\-34.73396\\-141.0678\\15\\-35.43248\\-140.483\\15\\-37.3856\\-140.6784\\15\\-37.77254\\-141.0678\\15\\-40.69408\\-143.0209\\15\\-41.29185\\-143.5977\\15\\-43.24498\\-144.4915\\15\\-45.1981\\-145.8648\\15\\-47.15123\\-145.6808\\15\\-47.89071\\-144.974\\15\\-49.58653\\-143.0209\\15\\-51.05748\\-141.8615\\15\\-52.34355\\-143.0209\\15\\-53.92696\\-144.974\\15\\-54.96373\\-145.839\\15\\-56.91685\\-146.1626\\15\\-57.58859\\-146.9271\\15\\-58.97236\\-148.8803\\15\\-60.10064\\-150.8334\\15\\-61.48339\\-152.7865\\15\\-62.14769\\-154.7396\\15\\-63.46344\\-156.6928\\15\\-63.83141\\-158.6459\\15\\-63.94535\\-160.599\\15\\-64.29466\\-162.5521\\15\\-64.41454\\-164.5053\\15\\-65.28347\\-166.4584\\15\\-65.85023\\-168.4115\\15\\-66.29309\\-170.3646\\15\\-66.31313\\-172.3178\\15\\-67.0145\\-174.2709\\15\\-67.49352\\-176.224\\15\\-67.84505\\-178.1771\\15\\-67.99007\\-180.1303\\15\\-69.42243\\-184.0365\\15\\-69.58595\\-187.9428\\15\\-70.7642\\-189.8959\\15\\-72.54185\\-191.9543\\15\\-74.49497\\-193.0222\\15\\-75.38474\\-193.8021\\15\\-76.82513\\-195.7553\\15\\-77.62968\\-197.7084\\15\\-79.07072\\-199.6615\\15\\-79.5959\\-201.6146\\15\\-81.07938\\-203.5678\\15\\-81.73017\\-207.474\\15\\-82.98079\\-209.4271\\15\\-83.42805\\-211.3803\\15\\-83.91408\\-215.2865\\15\\-84.2606\\-215.6621\\15\\-86.21372\\-216.9141\\15\\-88.16685\\-216.8602\\15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "145"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "413"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "17.3019\\-220.0581\\15\\15.34877\\-219.0058\\15\\13.39565\\-218.9204\\15\\9.489399\\-218.8826\\15\\7.536274\\-218.7663\\15\\5.583149\\-218.2551\\15\\4.048551\\-217.2396\\15\\1.676899\\-214.7342\\15\\0.8592031\\-213.3334\\15\\0.07952174\\-211.3803\\15\\-1.099892\\-209.4271\\15\\-1.149214\\-205.5209\\15\\-1.248309\\-203.5678\\15\\-1.573059\\-201.6146\\15\\-2.221722\\-199.6615\\15\\-3.248997\\-197.7084\\15\\-3.969283\\-195.7553\\15\\-3.921415\\-193.8021\\15\\-3.469849\\-191.849\\15\\-3.726747\\-189.8959\\15\\-4.182476\\-189.4076\\15\\-4.331083\\-187.9428\\15\\-4.897635\\-185.9896\\15\\-5.186291\\-184.0365\\15\\-5.626853\\-182.0834\\15\\-7.908274\\-178.1771\\15\\-8.088726\\-177.0704\\15\\-8.396162\\-178.1771\\15\\-9.859416\\-180.1303\\15\\-11.99498\\-182.2633\\15\\-13.9481\\-183.7296\\15\\-14.51348\\-184.0365\\15\\-15.90123\\-184.274\\15\\-17.85435\\-184.4012\\15\\-19.80748\\-184.2393\\15\\-21.7606\\-183.1373\\15\\-23.71373\\-184.1662\\15\\-25.66685\\-184.505\\15\\-29.5731\\-184.505\\15\\-31.52623\\-184.0912\\15\\-33.47935\\-182.8934\\15\\-35.43248\\-182.5909\\15\\-37.3856\\-182.1803\\15\\-39.33873\\-180.2888\\15\\-43.24498\\-178.2453\\15\\-45.1981\\-176.7639\\15\\-47.15123\\-174.8621\\15\\-49.10435\\-172.4445\\15\\-51.57777\\-170.3646\\15\\-53.0106\\-169.3179\\15\\-53.90627\\-168.4115\\15\\-54.71453\\-166.4584\\15\\-54.05616\\-164.5053\\15\\-52.87417\\-162.5521\\15\\-52.14312\\-160.599\\15\\-51.57954\\-158.6459\\15\\-50.25758\\-154.7396\\15\\-49.43201\\-152.7865\\15\\-47.15123\\-150.4388\\15\\-44.75342\\-148.8803\\15\\-43.24498\\-148.0641\\15\\-39.33873\\-148.0752\\15\\-37.3856\\-148.6412\\15\\-35.43248\\-149.6509\\15\\-33.47935\\-149.9231\\15\\-29.5731\\-150.1802\\15\\-23.71373\\-150.2238\\15\\-19.80748\\-150.1802\\15\\-17.85435\\-150.3105\\15\\-15.90123\\-151.3992\\15\\-14.45656\\-152.7865\\15\\-13.1964\\-154.7396\\15\\-12.26551\\-156.6928\\15\\-10.80768\\-158.6459\\15\\-10.22885\\-160.599\\15\\-9.198874\\-162.5521\\15\\-8.036141\\-164.5053\\15\\-7.658267\\-166.4584\\15\\-6.551004\\-168.4115\\15\\-5.024696\\-170.3646\\15\\-4.252789\\-172.3178\\15\\-3.257997\\-174.2709\\15\\-3.231726\\-176.224\\15\\-3.024892\\-178.1771\\15\\-2.441053\\-180.1303\\15\\-2.447145\\-182.0834\\15\\-2.067761\\-185.9896\\15\\-2.067761\\-189.8959\\15\\-1.925388\\-191.849\\15\\-1.269247\\-193.8021\\15\\-0.276226\\-194.6949\\15\\3.630024\\-192.9554\\15\\5.583149\\-192.4623\\15\\7.536274\\-191.8263\\15\\9.489399\\-191.6252\\15\\11.44252\\-191.1795\\15\\13.39565\\-190.9466\\15\\15.34877\\-190.5344\\15\\17.3019\\-189.6368\\15\\19.25502\\-189.4799\\15\\21.20815\\-188.9281\\15\\23.16127\\-188.0648\\15\\25.1144\\-189.0085\\15\\27.06752\\-189.6368\\15\\29.02065\\-189.6484\\15\\30.97377\\-189.8583\\15\\32.9269\\-190.6085\\15\\34.88002\\-189.6797\\15\\36.88681\\-187.9428\\15\\38.78627\\-187.1313\\15\\40.7394\\-186.68\\15\\42.69252\\-185.4677\\15\\44.64565\\-185.1948\\15\\46.59877\\-185.2632\\15\\48.5519\\-185.4843\\15\\50.50502\\-186.5569\\15\\52.45815\\-188.2808\\15\\54.41127\\-190.1826\\15\\56.01403\\-191.849\\15\\57.0339\\-193.8021\\15\\57.09682\\-195.7553\\15\\57.97166\\-197.7084\\15\\60.27065\\-200.0351\\15\\62.89709\\-203.5678\\15\\60.27065\\-206.0003\\15\\58.38728\\-205.5209\\15\\59.10152\\-203.5678\\15\\58.31752\\-202.6651\\15\\56.3644\\-202.4406\\15\\55.19347\\-203.5678\\15\\54.61951\\-205.5209\\15\\53.49543\\-207.474\\15\\51.93081\\-209.4271\\15\\50.80397\\-211.3803\\15\\48.5519\\-213.4419\\15\\46.59877\\-214.4037\\15\\44.64565\\-215.4982\\15\\42.69252\\-216.3008\\15\\40.7394\\-216.7426\\15\\36.83315\\-217.0039\\15\\36.43103\\-217.2396\\15\\32.9269\\-218.8034\\15\\30.97377\\-219.9771\\15\\29.02065\\-220.8868\\15\\19.25502\\-220.8868\\15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002294"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "142"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "414"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "87.6144\\-213.8827\\15\\85.66128\\-212.0553\\15\\85.09934\\-211.3803\\15\\84.70711\\-209.4271\\15\\83.39333\\-207.474\\15\\82.72752\\-205.5209\\15\\80.92381\\-203.5678\\15\\80.50365\\-201.6146\\15\\77.84878\\-197.9066\\15\\75.73431\\-195.7553\\15\\73.94253\\-192.5366\\15\\71.91093\\-189.8959\\15\\70.854\\-187.9428\\15\\70.03628\\-186.0574\\15\\68.90276\\-184.0365\\15\\68.73224\\-180.1303\\15\\68.08315\\-178.9258\\15\\66.13003\\-176.1788\\15\\65.08406\\-174.2709\\15\\64.95287\\-172.3178\\15\\64.50242\\-170.3646\\15\\63.33535\\-168.4115\\15\\62.78886\\-166.4584\\15\\61.34808\\-164.5053\\15\\62.22377\\-163.4081\\15\\63.47815\\-162.5521\\15\\62.22377\\-161.253\\15\\61.76885\\-160.599\\15\\60.27065\\-158.8883\\15\\56.20785\\-154.7396\\15\\55.13308\\-152.7865\\15\\53.84405\\-150.8334\\15\\52.97938\\-148.8803\\15\\50.50502\\-146.4731\\15\\48.5519\\-145.966\\15\\46.59877\\-145.7523\\15\\44.64565\\-144.2921\\15\\43.57235\\-143.0209\\15\\42.69252\\-142.1692\\15\\40.7394\\-140.5541\\15\\38.78627\\-140.1324\\15\\36.83315\\-140.4116\\15\\34.88002\\-141.5474\\15\\32.9269\\-141.3933\\15\\30.97377\\-140.2156\\15\\29.75179\\-139.1146\\15\\27.06752\\-136.3792\\15\\25.1144\\-135.7703\\15\\23.85707\\-135.2084\\15\\21.20815\\-133.7689\\15\\20.61963\\-133.2553\\15\\20.52349\\-131.3021\\15\\21.20815\\-130.6061\\15\\25.1144\\-128.8263\\15\\27.06752\\-128.2543\\15\\29.02065\\-127.8927\\15\\30.97377\\-127.7926\\15\\34.88002\\-126.3124\\15\\36.83315\\-125.0657\\15\\38.78627\\-124.4001\\15\\40.56435\\-123.4896\\15\\40.89149\\-123.4896\\15\\41.80597\\-125.4428\\15\\41.63987\\-127.3959\\15\\40.7394\\-128.8404\\15\\40.28164\\-129.349\\15\\39.94805\\-131.3021\\15\\40.7394\\-132.8669\\15\\42.69252\\-134.1601\\15\\43.53554\\-133.2553\\15\\43.58553\\-131.3021\\15\\44.00755\\-129.349\\15\\45.39647\\-127.3959\\15\\45.85777\\-125.4428\\15\\47.18209\\-123.4896\\15\\48.5519\\-122.3743\\15\\49.38971\\-121.5365\\15\\49.38706\\-115.6771\\15\\48.5519\\-114.0438\\15\\47.16104\\-111.7709\\15\\44.64565\\-109.2505\\15\\41.76271\\-105.9115\\15\\41.83018\\-103.9584\\15\\42.69252\\-102.8413\\15\\44.64565\\-101.6183\\15\\46.59877\\-101.5344\\15\\48.0113\\-102.0053\\15\\50.50502\\-103.1137\\15\\51.65431\\-103.9584\\15\\52.45815\\-104.7257\\15\\54.41127\\-107.168\\15\\55.05629\\-107.8646\\15\\57.18329\\-109.8178\\15\\58.57661\\-111.7709\\15\\59.54747\\-113.724\\15\\61.19342\\-115.6771\\15\\62.27596\\-117.6303\\15\\63.23758\\-119.5834\\15\\63.74221\\-121.5365\\15\\64.95124\\-123.4896\\15\\65.46372\\-125.4428\\15\\65.61634\\-127.3959\\15\\66.13003\\-128.8292\\15\\67.15774\\-131.3021\\15\\67.56648\\-133.2553\\15\\68.4342\\-135.2084\\15\\69.13729\\-137.1615\\15\\69.52502\\-139.1146\\15\\70.03628\\-140.5632\\15\\71.13251\\-143.0209\\15\\72.27122\\-144.974\\15\\73.07716\\-146.9271\\15\\74.29935\\-148.8803\\15\\75.02597\\-150.8334\\15\\76.31159\\-152.7865\\15\\77.20736\\-154.7396\\15\\77.84878\\-155.4301\\15\\80.33203\\-158.6459\\15\\81.07455\\-160.599\\15\\81.75503\\-161.2831\\15\\85.66128\\-165.8203\\15\\88.3817\\-168.4115\\15\\89.80325\\-170.3646\\15\\90.72658\\-172.3178\\15\\92.35996\\-174.2709\\15\\93.18081\\-176.224\\15\\93.28677\\-178.1771\\15\\94.32827\\-180.1303\\15\\95.0205\\-182.0834\\15\\95.0205\\-184.0365\\15\\94.6392\\-185.9896\\15\\94.02789\\-187.9428\\15\\94.06612\\-189.8959\\15\\94.3102\\-191.849\\15\\94.25226\\-193.8021\\15\\93.92676\\-195.7553\\15\\93.39301\\-197.7084\\15\\93.16981\\-201.6146\\15\\93.18081\\-209.4271\\15\\93.03642\\-211.3803\\15\\91.52065\\-212.8336\\15\\89.56753\\-213.661\\15"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "189"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "415"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-92.0731\\-215.6211\\17\\-92.38792\\-215.2865\\17\\-92.78111\\-213.3334\\17\\-92.0731\\-212.5997\\17\\-90.11997\\-212.5331\\17\\-88.12929\\-211.3803\\17\\-87.69601\\-209.4271\\17\\-87.68724\\-207.474\\17\\-89.08141\\-205.5209\\17\\-90.11997\\-204.6523\\17\\-92.0731\\-204.7387\\17\\-94.02622\\-204.6534\\17\\-95.01635\\-203.5678\\17\\-95.65383\\-201.6146\\17\\-96.79315\\-199.6615\\17\\-97.42421\\-197.7084\\17\\-97.61766\\-195.7553\\17\\-97.59639\\-193.8021\\17\\-97.77089\\-191.849\\17\\-97.62851\\-187.9428\\17\\-97.60696\\-185.9896\\17\\-97.03875\\-184.0365\\17\\-96.61489\\-180.1303\\17\\-94.83424\\-176.224\\17\\-93.26\\-174.2709\\17\\-92.46983\\-172.3178\\17\\-90.9886\\-170.3646\\17\\-89.36993\\-168.4115\\17\\-88.40257\\-166.4584\\17\\-88.16685\\-166.2033\\17\\-86.21372\\-163.1958\\17\\-85.71688\\-162.5521\\17\\-85.15205\\-160.599\\17\\-83.73047\\-158.6459\\17\\-83.19147\\-156.6928\\17\\-81.77734\\-154.7396\\17\\-81.21575\\-152.7865\\17\\-79.86607\\-150.8334\\17\\-79.37361\\-148.8803\\17\\-79.02267\\-146.9271\\17\\-78.01184\\-144.974\\17\\-77.42899\\-143.0209\\17\\-77.06955\\-141.0678\\17\\-76.17573\\-139.1146\\17\\-75.51186\\-137.1615\\17\\-75.32637\\-135.2084\\17\\-74.94796\\-133.2553\\17\\-74.17808\\-131.3021\\17\\-73.59673\\-129.349\\17\\-73.37701\\-127.3959\\17\\-72.94825\\-125.4428\\17\\-71.30589\\-121.5365\\17\\-70.22961\\-119.5834\\17\\-69.32647\\-117.6303\\17\\-68.24622\\-115.6771\\17\\-67.32437\\-113.724\\17\\-65.78301\\-111.7709\\17\\-64.72935\\-110.7943\\17\\-62.77623\\-110.3829\\17\\-60.8231\\-110.6802\\17\\-59.71695\\-111.7709\\17\\-58.26036\\-113.724\\17\\-57.82141\\-115.6771\\17\\-57.63105\\-119.5834\\17\\-57.03892\\-121.5365\\17\\-55.92085\\-123.4896\\17\\-55.12532\\-125.4428\\17\\-53.74174\\-127.3959\\17\\-53.18499\\-129.349\\17\\-53.0106\\-129.6173\\17\\-51.05748\\-130.6145\\17\\-49.86932\\-129.349\\17\\-49.77089\\-127.3959\\17\\-49.99991\\-125.4428\\17\\-49.52029\\-123.4896\\17\\-49.75023\\-121.5365\\17\\-49.4124\\-119.5834\\17\\-49.10435\\-119.2733\\17\\-47.15123\\-118.4754\\17\\-45.1981\\-118.4087\\17\\-43.24498\\-117.4675\\17\\-41.29185\\-117.1956\\17\\-39.33873\\-118.3454\\17\\-37.3856\\-118.4087\\17\\-35.43248\\-118.6897\\17\\-33.47935\\-120.2497\\17\\-31.52623\\-120.4979\\17\\-29.5731\\-120.5795\\17\\-25.66685\\-120.483\\17\\-23.71373\\-120.7015\\17\\-22.30843\\-121.5365\\17\\-21.7606\\-122.0213\\17\\-19.65155\\-123.4896\\17\\-17.85435\\-124.4618\\17\\-16.44376\\-125.4428\\17\\-15.90123\\-125.9616\\17\\-13.9481\\-126.9895\\17\\-11.99498\\-127.6228\\17\\-8.088726\\-128.0083\\17\\-6.135601\\-128.0193\\17\\-2.229351\\-128.5668\\17\\-0.276226\\-128.3585\\17\\1.676899\\-127.9773\\17\\3.630024\\-127.7573\\17\\5.583149\\-126.9612\\17\\7.536274\\-127.2089\\17\\9.489399\\-128.8058\\17\\11.44252\\-129.9339\\17\\13.39565\\-130.7809\\17\\13.89542\\-131.3021\\17\\14.21776\\-133.2553\\17\\13.39565\\-134.3016\\17\\11.44252\\-135.8577\\17\\9.489399\\-134.7514\\17\\7.536274\\-134.3769\\17\\5.583149\\-134.3851\\17\\3.630024\\-135.1043\\17\\-0.276226\\-135.1043\\17\\-2.229351\\-135.2618\\17\\-6.135601\\-135.1827\\17\\-8.088726\\-134.0396\\17\\-10.04185\\-133.5914\\17\\-11.99498\\-132.3689\\17\\-13.9481\\-131.7275\\17\\-15.90123\\-131.6382\\17\\-19.80748\\-131.7551\\17\\-21.7606\\-132.1098\\17\\-23.71373\\-132.9583\\17\\-25.66685\\-134.1602\\17\\-26.62933\\-135.2084\\17\\-27.61998\\-136.9399\\17\\-29.5731\\-137.4244\\17\\-31.52623\\-137.1371\\17\\-33.47935\\-137.6691\\17\\-35.43248\\-139.047\\17\\-37.3856\\-140.6331\\17\\-39.33873\\-142.3784\\17\\-41.29185\\-144.3926\\17\\-42.03145\\-144.974\\17\\-44.9201\\-146.9271\\17\\-45.1981\\-147.2093\\17\\-47.15123\\-147.7\\17\\-47.86296\\-146.9271\\17\\-48.10264\\-144.974\\17\\-48.68379\\-143.0209\\17\\-49.10435\\-142.6539\\17\\-51.05748\\-141.7706\\17\\-52.12225\\-143.0209\\17\\-53.38232\\-144.974\\17\\-54.27126\\-146.9271\\17\\-54.96373\\-147.5727\\17\\-56.91685\\-148.5295\\17\\-58.86998\\-150.2052\\17\\-59.43359\\-150.8334\\17\\-60.03344\\-152.7865\\17\\-61.79514\\-154.7396\\17\\-62.52874\\-156.6928\\17\\-62.96456\\-158.6459\\17\\-63.845\\-160.599\\17\\-64.40383\\-162.5521\\17\\-65.3364\\-164.5053\\17\\-65.87512\\-166.4584\\17\\-67.09842\\-168.4115\\17\\-67.631\\-170.3646\\17\\-67.67828\\-172.3178\\17\\-69.47975\\-176.224\\17\\-69.56947\\-178.1771\\17\\-70.24935\\-180.1303\\17\\-71.30914\\-182.0834\\17\\-71.44252\\-184.0365\\17\\-72.07852\\-185.9896\\17\\-74.30683\\-189.8959\\17\\-76.4481\\-192.0372\\17\\-77.34708\\-193.8021\\17\\-78.18829\\-195.7553\\17\\-79.29175\\-197.7084\\17\\-80.03781\\-199.6615\\17\\-80.35435\\-199.9965\\17\\-81.30576\\-201.6146\\17\\-81.52716\\-203.5678\\17\\-82.0145\\-205.5209\\17\\-82.14589\\-207.474\\17\\-83.2976\\-209.4271\\17\\-83.67574\\-211.3803\\17\\-83.76376\\-213.3334\\17\\-84.88002\\-215.2865\\17\\-86.21372\\-216.5413\\17\\-88.16685\\-217.0039\\17\\-90.11997\\-216.8503\\17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "137"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "416"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "7.536274\\-219.7851\\17\\3.630024\\-218.0355\\17\\0.7859116\\-215.2865\\17\\-0.8051974\\-213.3334\\17\\-1.498207\\-211.3803\\17\\-2.027063\\-209.4271\\17\\-2.792967\\-207.474\\17\\-3.128943\\-205.5209\\17\\-3.27073\\-199.6615\\17\\-3.557686\\-197.7084\\17\\-4.304546\\-195.7553\\17\\-4.331083\\-191.849\\17\\-4.92867\\-189.8959\\17\\-5.305997\\-187.9428\\17\\-6.135601\\-185.8776\\17\\-7.890362\\-184.0365\\17\\-8.226719\\-184.0365\\17\\-10.04185\\-187.0664\\17\\-11.99498\\-189.1104\\17\\-13.9481\\-189.941\\17\\-15.90123\\-190.1648\\17\\-17.85435\\-189.7114\\17\\-19.80748\\-188.5429\\17\\-23.71373\\-187.1311\\17\\-29.5731\\-187.1438\\17\\-31.52623\\-187.0218\\17\\-33.47935\\-186.6473\\17\\-37.3856\\-185.1708\\17\\-39.33873\\-184.677\\17\\-41.29185\\-183.8906\\17\\-45.1981\\-179.9791\\17\\-46.05814\\-178.1771\\17\\-47.15123\\-176.3958\\17\\-49.10435\\-174.2629\\17\\-51.05748\\-173.2712\\17\\-53.0106\\-173.882\\17\\-54.38082\\-172.3178\\17\\-54.42051\\-170.3646\\17\\-54.09196\\-168.4115\\17\\-53.0106\\-166.5168\\17\\-51.74646\\-164.5053\\17\\-51.18518\\-162.5521\\17\\-51.01992\\-160.599\\17\\-50.25354\\-158.6459\\17\\-50.01116\\-156.6928\\17\\-49.3313\\-154.7396\\17\\-47.98164\\-152.7865\\17\\-47.15123\\-152.0642\\17\\-45.1981\\-151.4082\\17\\-43.24498\\-150.0349\\17\\-41.29185\\-149.9501\\17\\-39.33873\\-150.0004\\17\\-37.3856\\-151.0197\\17\\-35.43248\\-151.8567\\17\\-33.47935\\-152.5236\\17\\-31.52623\\-153.58\\17\\-27.61998\\-153.9133\\17\\-25.66685\\-153.943\\17\\-23.71373\\-153.7559\\17\\-21.7606\\-153.6833\\17\\-19.80748\\-153.7559\\17\\-17.85435\\-154.5115\\17\\-15.90123\\-156.4178\\17\\-13.72412\\-158.6459\\17\\-11.99498\\-159.6592\\17\\-10.96063\\-160.599\\17\\-9.545004\\-162.5521\\17\\-8.088726\\-166.3272\\17\\-7.143166\\-168.4115\\17\\-5.743732\\-170.3646\\17\\-5.414683\\-172.3178\\17\\-4.746325\\-174.2709\\17\\-3.805449\\-176.224\\17\\-3.454937\\-178.1771\\17\\-3.270161\\-180.1303\\17\\-3.270161\\-182.0834\\17\\-2.972705\\-184.0365\\17\\-2.093915\\-185.9896\\17\\-1.707395\\-189.8959\\17\\-1.166621\\-191.849\\17\\-0.276226\\-192.7447\\17\\1.676899\\-192.4211\\17\\3.630024\\-191.2717\\17\\5.583149\\-190.9557\\17\\9.489399\\-190.9035\\17\\11.44252\\-190.6179\\17\\13.39565\\-190.0323\\17\\17.3019\\-189.6484\\17\\19.25502\\-189.6141\\17\\21.20815\\-189.1659\\17\\23.16127\\-188.975\\17\\25.1144\\-189.2163\\17\\27.06752\\-189.6368\\17\\30.97377\\-189.6484\\17\\32.9269\\-189.272\\17\\36.83315\\-186.7404\\17\\38.78627\\-185.3973\\17\\42.69252\\-184.7415\\17\\44.64565\\-183.4451\\17\\46.59877\\-183.1328\\17\\48.5519\\-183.4302\\17\\50.50502\\-184.8855\\17\\52.20833\\-185.9896\\17\\56.3644\\-190.1225\\17\\57.46552\\-191.849\\17\\58.08897\\-193.8021\\17\\58.14061\\-195.7553\\17\\59.13804\\-197.7084\\17\\60.27065\\-198.8237\\17\\62.22377\\-200.4831\\17\\63.15769\\-201.6146\\17\\63.37017\\-203.5678\\17\\62.22377\\-204.5819\\17\\60.81124\\-203.5678\\17\\60.27065\\-203.0106\\17\\58.31752\\-202.4115\\17\\56.69423\\-203.5678\\17\\55.55145\\-205.5209\\17\\54.82021\\-207.474\\17\\53.51652\\-209.4271\\17\\51.87467\\-211.3803\\17\\48.5519\\-214.103\\17\\46.59877\\-215.4481\\17\\44.64565\\-216.3291\\17\\42.69252\\-216.8602\\17\\40.7394\\-217.0039\\17\\36.83315\\-217.0158\\17\\36.48663\\-217.2396\\17\\32.54286\\-219.1928\\17\\29.02065\\-220.7891\\17\\27.06752\\-220.8984\\17\\21.20815\\-220.8984\\17\\19.25502\\-220.7891\\17\\15.44753\\-219.1928\\17\\13.39565\\-219.7701\\17\\11.44252\\-220.0088\\17\\9.489399\\-220.0088\\17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002293"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "144"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "417"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "85.66128\\-212.0553\\17\\85.09934\\-211.3803\\17\\84.66671\\-209.4271\\17\\83.17802\\-207.474\\17\\82.43811\\-203.5678\\17\\80.91332\\-201.6146\\17\\80.64825\\-199.6615\\17\\79.8019\\-198.2715\\17\\79.29434\\-197.7084\\17\\78.2056\\-195.7553\\17\\76.98643\\-193.8021\\17\\75.60268\\-191.849\\17\\74.71587\\-189.8959\\17\\73.49014\\-187.9428\\17\\72.72182\\-185.9896\\17\\71.54238\\-184.0365\\17\\70.8613\\-182.0834\\17\\70.34431\\-180.1303\\17\\69.28235\\-178.1771\\17\\68.83221\\-176.224\\17\\67.64234\\-174.2709\\17\\66.9384\\-172.3178\\17\\66.13003\\-170.701\\17\\64.68304\\-168.4115\\17\\63.10539\\-166.4584\\17\\61.34748\\-164.5053\\17\\61.10186\\-160.599\\17\\58.31752\\-157.7028\\17\\55.29858\\-154.7396\\17\\53.69306\\-152.7865\\17\\52.91307\\-150.8334\\17\\51.43052\\-148.8803\\17\\50.50502\\-148.131\\17\\48.5519\\-147.9469\\17\\46.59877\\-146.6512\\17\\44.64565\\-145.8377\\17\\43.90962\\-144.974\\17\\43.36549\\-143.0209\\17\\42.69252\\-142.3444\\17\\40.7394\\-141.899\\17\\38.78627\\-141.8421\\17\\36.83315\\-141.6675\\17\\34.88002\\-141.7881\\17\\32.9269\\-141.6748\\17\\29.02065\\-139.5189\\17\\28.62392\\-139.1146\\17\\27.49552\\-137.1615\\17\\25.1144\\-134.936\\17\\23.16127\\-134.0956\\17\\22.12891\\-133.2553\\17\\22.08191\\-131.3021\\17\\23.16127\\-130.2279\\17\\25.1144\\-129.7457\\17\\27.06752\\-128.451\\17\\29.02065\\-127.8118\\17\\30.97377\\-127.8023\\17\\32.9269\\-126.6661\\17\\34.88002\\-125.8681\\17\\36.83315\\-124.6365\\17\\38.78627\\-123.0367\\17\\40.7394\\-122.5846\\17\\41.91895\\-123.4896\\17\\42.22168\\-125.4428\\17\\41.75068\\-127.3959\\17\\40.16789\\-129.349\\17\\39.70515\\-131.3021\\17\\39.87773\\-133.2553\\17\\40.7394\\-134.1933\\17\\42.09502\\-135.2084\\17\\44.43893\\-137.1615\\17\\44.64565\\-138.5101\\17\\44.95017\\-137.1615\\17\\45.59247\\-135.2084\\17\\45.03752\\-133.2553\\17\\45.23935\\-131.3021\\17\\45.96005\\-127.3959\\17\\47.27925\\-125.4428\\17\\47.88181\\-123.4896\\17\\49.24154\\-121.5365\\17\\49.00763\\-119.5834\\17\\48.35246\\-117.6303\\17\\47.83156\\-115.6771\\17\\47.51817\\-113.724\\17\\46.59877\\-111.9949\\17\\44.48406\\-109.8178\\17\\42.69252\\-107.4881\\17\\40.06293\\-103.9584\\17\\41.53359\\-102.0053\\17\\42.69252\\-101.1228\\17\\44.64565\\-100.8659\\17\\46.59877\\-100.7969\\17\\48.5519\\-101.1097\\17\\50.35131\\-102.0053\\17\\52.45815\\-103.4356\\17\\54.70424\\-105.9115\\17\\56.26034\\-107.8646\\17\\58.42603\\-109.8178\\17\\59.27229\\-111.7709\\17\\60.93369\\-113.724\\17\\61.69059\\-115.6771\\17\\63.08049\\-117.6303\\17\\63.52756\\-119.5834\\17\\64.55392\\-121.5365\\17\\65.24184\\-123.4896\\17\\65.5918\\-125.4428\\17\\65.71408\\-127.3959\\17\\66.83977\\-129.349\\17\\67.48013\\-131.3021\\17\\68.08315\\-132.8138\\17\\69.18689\\-135.2084\\17\\69.59238\\-137.1615\\17\\71.15838\\-141.0678\\17\\72.31492\\-143.0209\\17\\73.06778\\-144.974\\17\\74.21306\\-146.9271\\17\\74.99814\\-148.8803\\17\\76.22117\\-150.8334\\17\\76.98654\\-152.7865\\17\\77.84878\\-153.9343\\17\\80.21784\\-156.6928\\17\\80.86022\\-158.6459\\17\\84.10738\\-162.5521\\17\\84.81344\\-164.5053\\17\\86.55565\\-166.4584\\17\\88.48525\\-168.4115\\17\\90.2713\\-170.3646\\17\\91.69504\\-172.3178\\17\\92.65675\\-174.2709\\17\\94.59588\\-180.1303\\17\\95.15636\\-182.0834\\17\\95.15636\\-184.0365\\17\\95.03017\\-185.9896\\17\\94.5251\\-187.9428\\17\\94.61552\\-189.8959\\17\\94.96839\\-191.849\\17\\94.90721\\-193.8021\\17\\94.548\\-195.7553\\17\\93.95338\\-199.6615\\17\\93.40719\\-201.6146\\17\\93.39301\\-203.5678\\17\\93.22629\\-205.5209\\17\\93.16981\\-211.3803\\17\\91.52065\\-212.927\\17\\87.6144\\-213.0859\\17"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "185"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "418"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-92.0731\\-216.3833\\19\\-93.12147\\-215.2865\\19\\-93.44157\\-213.3334\\19\\-92.0731\\-212.3087\\19\\-90.11997\\-212.5749\\19\\-88.84089\\-211.3803\\19\\-87.87388\\-209.4271\\19\\-87.77012\\-207.474\\19\\-89.07183\\-205.5209\\19\\-90.11997\\-204.6428\\19\\-92.0731\\-205.6448\\19\\-94.02622\\-206.4309\\19\\-95.01241\\-205.5209\\19\\-95.97935\\-203.3123\\19\\-96.57909\\-201.6146\\19\\-97.0855\\-199.6615\\19\\-97.9401\\-197.7084\\19\\-97.98466\\-195.7553\\19\\-98.57495\\-193.8021\\19\\-98.81683\\-191.849\\19\\-98.59532\\-189.8959\\19\\-97.98466\\-187.9428\\19\\-97.98466\\-185.9896\\19\\-97.77089\\-184.0365\\19\\-97.45\\-182.0834\\19\\-96.61489\\-178.1771\\19\\-95.19321\\-176.224\\19\\-94.40325\\-174.2709\\19\\-91.33559\\-170.3646\\19\\-90.43479\\-168.4115\\19\\-87.43196\\-164.5053\\19\\-86.75195\\-162.5521\\19\\-85.44844\\-160.599\\19\\-84.81785\\-158.6459\\19\\-83.46743\\-156.6928\\19\\-82.89884\\-154.7396\\19\\-81.47739\\-152.7865\\19\\-81.00366\\-150.8334\\19\\-79.85751\\-148.8803\\19\\-79.38603\\-146.9271\\19\\-79.05056\\-144.974\\19\\-78.03424\\-143.0209\\19\\-77.4374\\-141.0678\\19\\-77.08364\\-139.1146\\19\\-76.20061\\-137.1615\\19\\-75.98335\\-135.2084\\19\\-74.48734\\-131.3021\\19\\-74.202\\-129.349\\19\\-74.04838\\-127.3959\\19\\-70.91425\\-119.5834\\19\\-69.80283\\-117.6303\\19\\-68.90797\\-115.6771\\19\\-67.84417\\-113.724\\19\\-66.68247\\-111.7786\\19\\-64.72935\\-109.8848\\19\\-62.77623\\-109.045\\19\\-60.8231\\-110.2484\\19\\-58.86998\\-112.2936\\19\\-57.82185\\-113.724\\19\\-57.84438\\-115.6771\\19\\-58.20367\\-117.6303\\19\\-58.32066\\-119.5834\\19\\-57.99242\\-121.5365\\19\\-57.78254\\-123.4896\\19\\-56.91685\\-124.7853\\19\\-54.36757\\-127.3959\\19\\-53.73452\\-129.349\\19\\-53.0106\\-130.3126\\19\\-51.05748\\-130.4928\\19\\-50.25847\\-129.349\\19\\-50.40127\\-127.3959\\19\\-50.66809\\-125.4428\\19\\-49.78437\\-123.4896\\19\\-48.29055\\-119.5834\\19\\-47.15123\\-118.6193\\19\\-45.1981\\-118.4032\\19\\-43.24498\\-116.9016\\19\\-41.29185\\-116.6042\\19\\-39.33873\\-116.6782\\19\\-37.3856\\-117.2143\\19\\-36.94229\\-117.6303\\19\\-35.43248\\-118.5945\\19\\-33.47935\\-119.1964\\19\\-31.52623\\-120.5515\\19\\-29.5731\\-120.7153\\19\\-27.61998\\-120.6048\\19\\-26.67118\\-119.5834\\19\\-27.36089\\-117.6303\\19\\-25.66685\\-117.1272\\19\\-23.71373\\-117.4897\\19\\-22.35838\\-119.5834\\19\\-21.7606\\-120.1812\\19\\-19.80748\\-122.5536\\19\\-17.85435\\-123.9692\\19\\-15.90123\\-124.7724\\19\\-13.9481\\-126.3188\\19\\-10.04185\\-126.9429\\19\\-8.088726\\-127.6076\\19\\-6.135601\\-127.6076\\19\\-2.229351\\-127.8239\\19\\-0.276226\\-127.7214\\19\\1.676899\\-126.9992\\19\\3.630024\\-126.6064\\19\\5.583149\\-126.8906\\19\\7.536274\\-128.2262\\19\\8.5174\\-129.349\\19\\9.489399\\-131.4339\\19\\11.44252\\-131.8196\\19\\13.39565\\-133.0925\\19\\13.47703\\-133.2553\\19\\12.20774\\-135.2084\\19\\11.44252\\-135.778\\19\\9.489399\\-135.9926\\19\\7.536274\\-136.3064\\19\\5.583149\\-136.4591\\19\\3.630024\\-136.9313\\19\\1.676899\\-136.9951\\19\\-0.276226\\-137.561\\19\\-2.229351\\-138.2724\\19\\-4.182476\\-138.2438\\19\\-6.135601\\-137.3853\\19\\-8.45982\\-135.2084\\19\\-10.04185\\-134.073\\19\\-11.99498\\-132.4538\\19\\-13.9481\\-131.0092\\19\\-15.90123\\-130.4448\\19\\-17.85435\\-130.4539\\19\\-19.80748\\-131.0092\\19\\-21.7606\\-131.8562\\19\\-23.71373\\-132.4406\\19\\-25.66685\\-133.6926\\19\\-29.5731\\-135.9712\\19\\-31.52623\\-135.9433\\19\\-33.47935\\-136.7748\\19\\-33.84634\\-137.1615\\19\\-34.60543\\-139.1146\\19\\-36.4337\\-141.0678\\19\\-38.4722\\-143.0209\\19\\-39.33873\\-143.9531\\19\\-41.29185\\-145.7956\\19\\-43.24498\\-146.3543\\19\\-45.1981\\-148.007\\19\\-47.15123\\-148.7983\\19\\-48.68321\\-146.9271\\19\\-47.26109\\-143.0209\\19\\-49.10435\\-142.2836\\19\\-51.05748\\-141.0983\\19\\-53.0106\\-141.6956\\19\\-53.89561\\-144.974\\19\\-54.14756\\-146.9271\\19\\-55.57124\\-148.8803\\19\\-57.93016\\-150.8334\\19\\-61.70439\\-154.7396\\19\\-62.36028\\-156.6928\\19\\-63.33664\\-158.6459\\19\\-63.95643\\-160.599\\19\\-65.36124\\-162.5521\\19\\-65.90218\\-164.5053\\19\\-67.19982\\-166.4584\\19\\-67.93353\\-168.4115\\19\\-69.03991\\-170.3646\\19\\-69.54391\\-172.3178\\19\\-71.4848\\-176.224\\19\\-71.51192\\-178.1771\\19\\-71.88187\\-180.1303\\19\\-73.00602\\-182.0834\\19\\-73.52402\\-184.0365\\19\\-74.49497\\-185.8729\\19\\-76.4481\\-188.3928\\19\\-77.32999\\-189.8959\\19\\-79.28013\\-193.8021\\19\\-79.57014\\-195.7553\\19\\-80.98593\\-197.7084\\19\\-81.51019\\-199.6615\\19\\-81.84551\\-201.6146\\19\\-83.03989\\-203.5678\\19\\-83.32128\\-205.5209\\19\\-83.32128\\-207.474\\19\\-83.47842\\-209.4271\\19\\-83.76376\\-211.3803\\19\\-83.89362\\-213.3334\\19\\-85.26134\\-215.2865\\19\\-86.21372\\-216.2885\\19\\-88.16685\\-217.0158\\19\\-90.11997\\-217.0158\\19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "146"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "419"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "5.583149\\-219.7547\\19\\1.803628\\-217.2396\\19\\-0.276226\\-215.2189\\19\\-2.229351\\-213.1188\\19\\-3.249316\\-211.3803\\19\\-3.302256\\-209.4271\\19\\-3.547185\\-207.474\\19\\-3.969283\\-205.5209\\19\\-3.970774\\-199.6615\\19\\-4.856516\\-197.7084\\19\\-5.26414\\-195.7553\\19\\-5.37659\\-193.8021\\19\\-5.662298\\-191.849\\19\\-6.135601\\-190.5843\\19\\-8.115359\\-189.8959\\19\\-10.08394\\-191.849\\19\\-11.99498\\-194.1953\\19\\-13.9481\\-195.3367\\19\\-15.90123\\-195.2791\\19\\-17.85435\\-194.7244\\19\\-19.80748\\-193.3304\\19\\-21.7606\\-191.6377\\19\\-23.71373\\-191.0544\\19\\-25.66685\\-190.8206\\19\\-31.52623\\-190.6956\\19\\-33.47935\\-189.7672\\19\\-35.43248\\-189.1946\\19\\-37.3856\\-188.8578\\19\\-39.33873\\-187.7058\\19\\-41.29185\\-187.2356\\19\\-43.24498\\-185.7914\\19\\-45.1981\\-184.9548\\19\\-45.82589\\-184.0365\\19\\-48.03736\\-180.1303\\19\\-48.30195\\-178.1771\\19\\-49.10435\\-176.5825\\19\\-49.54686\\-176.224\\19\\-51.05748\\-175.5751\\19\\-53.0106\\-176.8431\\19\\-54.96373\\-180.0473\\19\\-55.90326\\-178.1771\\19\\-55.64329\\-176.224\\19\\-55.63981\\-174.2709\\19\\-55.21121\\-172.3178\\19\\-55.59226\\-170.3646\\19\\-54.96373\\-169.346\\19\\-53.0106\\-168.1335\\19\\-51.05748\\-167.3223\\19\\-50.11033\\-166.4584\\19\\-49.94775\\-164.5053\\19\\-49.91108\\-160.599\\19\\-49.34171\\-158.6459\\19\\-48.2442\\-156.6928\\19\\-47.15123\\-155.1646\\19\\-45.1981\\-154.0507\\19\\-43.1562\\-152.7865\\19\\-41.29185\\-152.1375\\19\\-39.42751\\-152.7865\\19\\-37.3856\\-153.8202\\19\\-35.43248\\-153.8851\\19\\-33.58275\\-154.7396\\19\\-31.52623\\-155.8301\\19\\-29.5731\\-156.454\\19\\-27.61998\\-157.8661\\19\\-25.66685\\-157.9172\\19\\-23.71373\\-156.6213\\19\\-21.7606\\-156.0832\\19\\-19.80748\\-156.7012\\19\\-17.62899\\-158.6459\\19\\-13.9481\\-160.8137\\19\\-11.99498\\-161.638\\19\\-10.83105\\-162.5521\\19\\-9.152741\\-164.5053\\19\\-7.245331\\-168.4115\\19\\-6.127972\\-170.3646\\19\\-5.853774\\-172.3178\\19\\-5.459128\\-174.2709\\19\\-4.902313\\-176.224\\19\\-3.867663\\-178.1771\\19\\-3.729492\\-180.1303\\19\\-3.711633\\-182.0834\\19\\-3.210352\\-184.0365\\19\\-1.776367\\-185.9896\\19\\-1.315637\\-187.9428\\19\\-0.276226\\-189.8343\\19\\1.676899\\-190.7383\\19\\3.630024\\-190.3929\\19\\5.583149\\-189.7605\\19\\9.489399\\-189.9913\\19\\13.39565\\-189.6602\\19\\19.25502\\-189.6368\\19\\23.16127\\-189.425\\19\\25.1144\\-189.5704\\19\\29.02065\\-189.6484\\19\\30.97377\\-189.5289\\19\\32.9269\\-188.847\\19\\34.88002\\-186.9815\\19\\36.83315\\-185.2693\\19\\38.78627\\-184.8149\\19\\40.7394\\-183.3667\\19\\42.69252\\-183.0764\\19\\44.64565\\-182.95\\19\\46.59877\\-182.5717\\19\\50.50502\\-183.2849\\19\\52.45815\\-184.8535\\19\\54.14559\\-185.9896\\19\\56.3644\\-188.1335\\19\\57.49233\\-189.8959\\19\\58.98037\\-191.849\\19\\59.19263\\-193.8021\\19\\59.19727\\-195.7553\\19\\59.44755\\-197.7084\\19\\60.27065\\-198.5814\\19\\62.22377\\-199.8359\\19\\63.59959\\-201.6146\\19\\64.86411\\-203.5678\\19\\64.1769\\-204.2737\\19\\62.22377\\-204.4171\\19\\60.27065\\-202.4589\\19\\58.31752\\-202.6106\\19\\57.41432\\-203.5678\\19\\57.19072\\-205.5209\\19\\55.93105\\-207.474\\19\\54.81558\\-209.4271\\19\\52.45815\\-212.0139\\19\\50.50502\\-213.5724\\19\\48.5519\\-214.5349\\19\\46.59877\\-215.9466\\19\\44.64565\\-216.7867\\19\\42.69252\\-217.0158\\19\\36.83315\\-217.0158\\19\\36.46694\\-217.2396\\19\\32.9269\\-218.8672\\19\\30.97377\\-219.6547\\19\\29.02065\\-220.2476\\19\\27.06752\\-220.6663\\19\\25.1144\\-220.7891\\19\\23.16127\\-220.7789\\19\\21.20815\\-220.6663\\19\\19.25502\\-220.2552\\19\\17.3019\\-219.7064\\19\\15.34877\\-219.731\\19\\13.39565\\-220.2593\\19\\11.44252\\-220.6292\\19\\9.489399\\-220.6292\\19\\7.536274\\-220.2733\\19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002292"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "145"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "420"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "85.66128\\-212.0553\\19\\85.09934\\-211.3803\\19\\84.70255\\-209.4271\\19\\83.46066\\-207.474\\19\\83.21987\\-205.5209\\19\\82.45755\\-201.6146\\19\\81.30843\\-199.6615\\19\\80.63124\\-197.7084\\19\\79.07986\\-195.7553\\19\\78.71832\\-193.8021\\19\\77.61768\\-191.849\\19\\76.78484\\-189.8959\\19\\75.72018\\-187.9428\\19\\74.82886\\-185.9896\\19\\73.76033\\-184.0365\\19\\72.88548\\-182.0834\\19\\71.86458\\-180.1303\\19\\70.99281\\-178.1771\\19\\70.39675\\-176.224\\19\\69.3424\\-174.2709\\19\\68.9295\\-172.3178\\19\\67.84962\\-170.3646\\19\\64.1769\\-166.4506\\19\\62.84813\\-164.5053\\19\\61.41227\\-162.5521\\19\\61.01492\\-160.599\\19\\58.31752\\-157.7836\\19\\55.19357\\-154.7396\\19\\53.26838\\-152.7865\\19\\51.52951\\-150.8334\\19\\50.50502\\-150.0067\\19\\48.5519\\-149.89\\19\\46.59877\\-149.1523\\19\\44.64565\\-148.0865\\19\\42.69252\\-147.457\\19\\42.36269\\-146.9271\\19\\43.20987\\-144.974\\19\\43.60608\\-143.0209\\19\\42.69252\\-142.0491\\19\\40.7394\\-142.1165\\19\\38.78627\\-142.5561\\19\\36.83315\\-142.2812\\19\\32.9269\\-142.0102\\19\\30.97377\\-141.4348\\19\\29.02065\\-140.1099\\19\\28.05317\\-139.1146\\19\\26.6905\\-137.1615\\19\\25.8309\\-135.2084\\19\\25.1144\\-134.4958\\19\\23.29303\\-133.2553\\19\\23.32643\\-131.3021\\19\\25.1144\\-130.1102\\19\\27.06752\\-128.5361\\19\\29.02065\\-127.8118\\19\\30.97377\\-127.8023\\19\\32.9269\\-126.5777\\19\\34.88002\\-125.0121\\19\\37.06424\\-123.4896\\19\\38.78627\\-122.4642\\19\\40.7394\\-122.584\\19\\41.71148\\-123.4896\\19\\42.27658\\-125.4428\\19\\41.98096\\-127.3959\\19\\41.55091\\-129.349\\19\\40.38028\\-131.3021\\19\\40.39288\\-133.2553\\19\\41.94087\\-135.2084\\19\\42.69252\\-135.8936\\19\\43.72627\\-137.1615\\19\\43.57414\\-139.1146\\19\\44.64565\\-140.3523\\19\\46.0832\\-139.1146\\19\\46.00606\\-135.2084\\19\\45.47918\\-133.2553\\19\\45.7667\\-131.3021\\19\\47.16415\\-129.349\\19\\47.58402\\-127.3959\\19\\48.08993\\-123.4896\\19\\48.22638\\-121.5365\\19\\48.10801\\-119.5834\\19\\47.70671\\-117.6303\\19\\46.91779\\-115.6771\\19\\45.79205\\-113.724\\19\\45.48341\\-111.7709\\19\\43.60434\\-109.8178\\19\\42.65496\\-107.8646\\19\\41.86797\\-105.9115\\19\\40.87684\\-103.9584\\19\\41.10982\\-102.0053\\19\\44.25055\\-100.0521\\19\\44.64565\\-99.71604\\19\\46.59877\\-99.24658\\19\\48.41965\\-100.0521\\19\\50.50502\\-101.3843\\19\\52.45815\\-102.9818\\19\\53.94007\\-103.9584\\19\\56.3644\\-106.4224\\19\\57.43192\\-107.8646\\19\\59.02365\\-109.8178\\19\\60.47009\\-111.7709\\19\\61.25132\\-113.724\\19\\62.22377\\-115.2172\\19\\62.66113\\-115.6771\\19\\63.26627\\-117.6303\\19\\63.67159\\-119.5834\\19\\64.92165\\-121.5365\\19\\65.48069\\-123.4896\\19\\65.62471\\-125.4428\\19\\67.26482\\-129.349\\19\\67.65778\\-131.3021\\19\\68.78693\\-133.2553\\19\\70.4548\\-137.1615\\19\\71.16203\\-139.1146\\19\\72.24849\\-141.0678\\19\\73.08917\\-143.0209\\19\\73.64956\\-144.974\\19\\73.94253\\-145.427\\19\\75.60268\\-148.8803\\19\\76.648\\-150.8334\\19\\78.25517\\-152.7865\\19\\78.96281\\-154.7396\\19\\82.24619\\-158.6459\\19\\82.87045\\-160.599\\19\\84.61873\\-162.5521\\19\\87.17277\\-166.4584\\19\\87.6144\\-166.9057\\19\\89.56753\\-169.3759\\19\\92.29022\\-172.3178\\19\\93.95338\\-176.224\\19\\95.11208\\-180.1303\\19\\95.41927\\-182.0834\\19\\95.43453\\-185.9896\\19\\95.27829\\-187.9428\\19\\95.92374\\-189.8959\\19\\95.94058\\-191.849\\19\\95.44961\\-193.8021\\19\\95.11\\-197.7084\\19\\94.60677\\-199.6615\\19\\94.33835\\-201.6146\\19\\94.32938\\-203.5678\\19\\93.84076\\-205.5209\\19\\93.18081\\-207.474\\19\\93.18081\\-211.3803\\19\\91.52065\\-212.927\\19\\87.6144\\-212.9367\\19"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "188"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "421"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-92.0731\\-216.8828\\21\\-93.69014\\-215.2865\\21\\-92.60489\\-213.3334\\21\\-92.0731\\-212.9869\\21\\-90.11997\\-212.6489\\21\\-89.42386\\-211.3803\\21\\-88.76907\\-209.4271\\21\\-87.77012\\-207.474\\21\\-89.48633\\-205.5209\\21\\-90.11997\\-205.0326\\21\\-90.70869\\-205.5209\\21\\-93.58846\\-207.474\\21\\-94.02622\\-207.8758\\21\\-95.97935\\-206.1287\\21\\-96.48466\\-205.5209\\21\\-96.8591\\-203.5678\\21\\-96.97268\\-201.6146\\21\\-98.42075\\-199.6615\\21\\-98.83487\\-197.7084\\21\\-98.92135\\-193.8021\\21\\-99.2161\\-191.849\\21\\-98.92552\\-189.8959\\21\\-98.83929\\-187.9428\\21\\-98.83487\\-184.0365\\21\\-98.63422\\-182.0834\\21\\-97.60696\\-180.1303\\21\\-96.52557\\-176.224\\21\\-93.27387\\-172.3178\\21\\-92.46004\\-170.3646\\21\\-92.0731\\-169.9461\\21\\-89.40653\\-166.4584\\21\\-88.6377\\-164.5053\\21\\-87.40942\\-162.5521\\21\\-86.57055\\-160.599\\21\\-85.42056\\-158.6459\\21\\-84.61166\\-156.6928\\21\\-83.4204\\-154.7396\\21\\-82.78399\\-152.7865\\21\\-81.44759\\-150.8334\\21\\-81.01739\\-148.8803\\21\\-79.85751\\-146.9271\\21\\-79.38999\\-144.974\\21\\-79.07072\\-143.0209\\21\\-78.0547\\-141.0678\\21\\-77.44981\\-139.1146\\21\\-77.07663\\-137.1615\\21\\-76.4481\\-135.3152\\21\\-75.57552\\-133.2553\\21\\-75.07984\\-131.3021\\21\\-74.47227\\-129.349\\21\\-74.35954\\-127.3959\\21\\-73.02146\\-123.4896\\21\\-72.21633\\-121.5365\\21\\-70.58872\\-118.1028\\21\\-70.29575\\-117.6303\\21\\-67.32034\\-111.7709\\21\\-65.83307\\-109.8178\\21\\-64.72935\\-108.8182\\21\\-62.77623\\-108.4343\\21\\-60.8231\\-109.0138\\21\\-58.86998\\-110.9034\\21\\-57.83121\\-111.7709\\21\\-56.16064\\-113.724\\21\\-57.48651\\-115.6771\\21\\-57.85289\\-117.6303\\21\\-58.35629\\-119.5834\\21\\-58.42608\\-121.5365\\21\\-58.36466\\-123.4896\\21\\-57.74591\\-125.4428\\21\\-55.71377\\-127.3959\\21\\-53.0106\\-131.0828\\21\\-51.05748\\-131.3687\\21\\-50.39444\\-129.349\\21\\-50.89589\\-127.3959\\21\\-50.89589\\-125.4428\\21\\-48.77883\\-121.5365\\21\\-47.8591\\-119.5834\\21\\-47.15123\\-118.8866\\21\\-45.1981\\-118.4552\\21\\-43.24498\\-116.8291\\21\\-41.29185\\-116.5235\\21\\-39.33873\\-116.5332\\21\\-37.3856\\-116.7365\\21\\-35.43248\\-118.3919\\21\\-33.47935\\-118.8281\\21\\-31.52623\\-120.6218\\21\\-29.5731\\-121.3627\\21\\-27.61998\\-120.0885\\21\\-27.61998\\-119.4741\\21\\-29.5731\\-118.5542\\21\\-30.5108\\-117.6303\\21\\-31.19639\\-115.6771\\21\\-29.5731\\-114.6296\\21\\-25.66685\\-116.5123\\21\\-23.71373\\-116.5985\\21\\-22.32598\\-117.6303\\21\\-21.05885\\-119.5834\\21\\-19.80748\\-120.9903\\21\\-17.85435\\-123.0249\\21\\-15.90123\\-124.4054\\21\\-13.9481\\-125.0268\\21\\-11.99498\\-125.8681\\21\\-10.04185\\-126.2467\\21\\-8.088726\\-126.4828\\21\\-2.229351\\-126.4926\\21\\-0.276226\\-126.5345\\21\\1.676899\\-126.3651\\21\\3.630024\\-126.0425\\21\\5.583149\\-126.388\\21\\6.745723\\-127.3959\\21\\8.369536\\-131.3021\\21\\9.962703\\-133.2553\\21\\10.04185\\-135.2084\\21\\8.843969\\-137.1615\\21\\7.536274\\-138.2101\\21\\5.583149\\-139.047\\21\\3.630024\\-140.3442\\21\\1.676899\\-140.4943\\21\\-2.229351\\-140.4622\\21\\-4.182476\\-140.2327\\21\\-5.441728\\-139.1146\\21\\-8.088726\\-136.2525\\21\\-11.18475\\-133.2553\\21\\-13.9481\\-130.5074\\21\\-15.90123\\-129.9109\\21\\-17.85435\\-129.9187\\21\\-19.80748\\-130.4915\\21\\-21.7606\\-131.6277\\21\\-23.71373\\-132.0522\\21\\-25.66685\\-132.3221\\21\\-27.61998\\-133.3917\\21\\-29.5731\\-134.2926\\21\\-30.96536\\-135.2084\\21\\-31.52623\\-135.7145\\21\\-34.30672\\-139.1146\\21\\-39.33873\\-144.158\\21\\-41.29185\\-146.0698\\21\\-43.21414\\-146.9271\\21\\-45.1981\\-148.0512\\21\\-46.92831\\-148.8803\\21\\-47.38969\\-148.8803\\21\\-49.10435\\-147.3442\\21\\-50.05766\\-146.9271\\21\\-49.10435\\-146.3205\\21\\-48.46959\\-144.974\\21\\-48.23876\\-143.0209\\21\\-51.05748\\-142.0874\\21\\-53.0106\\-142.4212\\21\\-53.887\\-144.974\\21\\-53.0106\\-146.1261\\21\\-51.78148\\-146.9271\\21\\-52.53833\\-148.8803\\21\\-53.0106\\-149.2618\\21\\-54.96373\\-149.3849\\21\\-56.91685\\-150.3451\\21\\-58.86998\\-151.9488\\21\\-61.69913\\-154.7396\\21\\-62.45071\\-156.6928\\21\\-63.71133\\-158.6459\\21\\-65.28181\\-160.599\\21\\-65.93683\\-162.5521\\21\\-67.19122\\-164.5053\\21\\-68.30785\\-166.4584\\21\\-69.61695\\-168.4115\\21\\-70.38787\\-170.3646\\21\\-71.53524\\-172.3178\\21\\-72.40542\\-174.2709\\21\\-73.42314\\-176.224\\21\\-73.49796\\-178.1771\\21\\-74.23232\\-180.1303\\21\\-75.42576\\-182.0834\\21\\-76.06377\\-184.0365\\21\\-77.33466\\-185.9896\\21\\-79.32834\\-189.8959\\21\\-79.52589\\-191.849\\21\\-80.90681\\-193.8021\\21\\-81.36723\\-195.7553\\21\\-81.57145\\-197.7084\\21\\-83.05223\\-199.6615\\21\\-83.34997\\-201.6146\\21\\-83.74692\\-205.5209\\21\\-83.78099\\-209.4271\\21\\-83.86387\\-211.3803\\21\\-84.96107\\-213.3334\\21\\-85.55088\\-215.2865\\21\\-86.21372\\-216.0714\\21\\-88.16685\\-217.0158\\21\\-90.11997\\-217.0111\\21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "142"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "422"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "5.583149\\-220.0305\\21\\3.630024\\-218.9453\\21\\1.676899\\-218.072\\21\\-0.276226\\-216.5036\\21\\-1.980159\\-215.2865\\21\\-3.452471\\-213.3334\\21\\-3.95868\\-211.3803\\21\\-4.746092\\-209.4271\\21\\-5.252857\\-207.474\\21\\-5.295405\\-203.5678\\21\\-5.370314\\-201.6146\\21\\-5.555089\\-199.6615\\21\\-5.910241\\-197.7084\\21\\-6.135601\\-197.2545\\21\\-7.656249\\-195.7553\\21\\-8.088726\\-195.5327\\21\\-10.37779\\-197.7084\\21\\-13.9481\\-200.9571\\21\\-15.90123\\-200.9108\\21\\-17.85435\\-200.2583\\21\\-19.80748\\-198.9695\\21\\-21.7606\\-197.1403\\21\\-23.71373\\-196.4945\\21\\-24.69029\\-195.7553\\21\\-25.66685\\-195.2208\\21\\-27.61998\\-194.7713\\21\\-31.52623\\-194.7225\\21\\-33.47935\\-194.5694\\21\\-35.43248\\-193.2891\\21\\-37.3856\\-192.776\\21\\-39.33873\\-192.6381\\21\\-41.29185\\-191.349\\21\\-43.24498\\-190.8173\\21\\-45.1981\\-190.4416\\21\\-47.15123\\-189.2423\\21\\-48.46088\\-187.9428\\21\\-49.77532\\-185.9896\\21\\-50.18467\\-182.0834\\21\\-50.79114\\-180.1303\\21\\-51.05748\\-179.8481\\21\\-53.0106\\-180.6111\\21\\-54.96373\\-182.2461\\21\\-55.15247\\-182.0834\\21\\-55.9747\\-180.1303\\21\\-55.11234\\-176.224\\21\\-55.31025\\-174.2709\\21\\-56.0923\\-170.3646\\21\\-56.31454\\-168.4115\\21\\-54.96373\\-167.4433\\21\\-53.0106\\-167.7901\\21\\-51.95414\\-168.4115\\21\\-49.10435\\-170.3548\\21\\-48.08104\\-168.4115\\21\\-48.02421\\-166.4584\\21\\-48.02421\\-162.5521\\21\\-47.96676\\-160.599\\21\\-47.0931\\-158.6459\\21\\-45.1981\\-157.7566\\21\\-43.24498\\-156.4128\\21\\-41.29185\\-155.7656\\21\\-35.43248\\-155.9062\\21\\-33.79756\\-156.6928\\21\\-31.52623\\-158.3719\\21\\-29.0675\\-160.599\\21\\-27.61998\\-161.6195\\21\\-25.66685\\-161.6481\\21\\-23.71373\\-160.3074\\21\\-21.7606\\-159.7932\\21\\-19.80748\\-159.825\\21\\-17.85435\\-160.9652\\21\\-15.90123\\-161.729\\21\\-13.9481\\-161.9532\\21\\-13.20053\\-162.5521\\21\\-10.39394\\-164.5053\\21\\-8.833998\\-166.4584\\21\\-7.609112\\-168.4115\\21\\-6.083418\\-172.3178\\21\\-5.865067\\-174.2709\\21\\-5.217927\\-176.224\\21\\-4.115892\\-178.1771\\21\\-3.923388\\-182.0834\\21\\-2.981784\\-184.0365\\21\\-2.229351\\-184.7426\\21\\-0.3588582\\-185.9896\\21\\1.676899\\-188.1937\\21\\3.630024\\-188.9103\\21\\5.583149\\-188.9279\\21\\7.536274\\-189.1659\\21\\9.489399\\-189.5704\\21\\11.44252\\-189.6484\\21\\23.16127\\-189.6484\\21\\27.06752\\-189.8883\\21\\29.02065\\-189.7343\\21\\30.97377\\-189.161\\21\\32.58185\\-187.9428\\21\\34.88002\\-185.6641\\21\\36.83315\\-184.8533\\21\\38.78627\\-183.2506\\21\\40.7394\\-182.9384\\21\\42.69252\\-182.5273\\21\\46.59877\\-182.2055\\21\\48.5519\\-182.3652\\21\\50.50502\\-182.9185\\21\\52.45815\\-183.3151\\21\\54.41127\\-185.1612\\21\\56.3644\\-186.7797\\21\\57.48249\\-187.9428\\21\\59.01295\\-189.8959\\21\\59.43424\\-191.849\\21\\59.96669\\-193.8021\\21\\60.00011\\-195.7553\\21\\60.23309\\-197.7084\\21\\62.33712\\-199.6615\\21\\64.1769\\-200.7517\\21\\64.97244\\-201.6146\\21\\65.26755\\-203.5678\\21\\64.1769\\-204.5609\\21\\62.22377\\-202.7915\\21\\60.27065\\-202.3986\\21\\58.86374\\-203.5678\\21\\57.11293\\-207.474\\21\\55.51709\\-209.4271\\21\\54.41127\\-210.6144\\21\\52.45815\\-212.2315\\21\\50.50502\\-214.074\\21\\48.5519\\-214.9195\\21\\46.59877\\-215.5905\\21\\44.64565\\-216.3598\\21\\42.69252\\-216.8429\\21\\38.78627\\-217.0158\\21\\36.83315\\-217.0158\\21\\32.9269\\-218.3054\\21\\30.97377\\-218.8672\\21\\29.02065\\-219.6087\\21\\25.1144\\-220.2407\\21\\23.16127\\-220.2503\\21\\19.25502\\-219.6981\\21\\17.3019\\-219.098\\21\\13.39565\\-220.7689\\21\\11.44252\\-220.8984\\21\\9.489399\\-220.8984\\21\\7.536274\\-220.7689\\21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "423"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "40.7394\\-148.3082\\21\\39.66383\\-146.9271\\21\\38.78627\\-145.2115\\21\\36.83315\\-144.1881\\21\\34.88002\\-143.8736\\21\\32.9269\\-142.2387\\21\\30.97377\\-141.6601\\21\\29.02065\\-140.2855\\21\\27.82597\\-139.1146\\21\\26.24632\\-137.1615\\21\\25.41133\\-135.2084\\21\\23.89761\\-133.2553\\21\\23.85515\\-131.3021\\21\\25.1144\\-130.0998\\21\\27.06752\\-128.5361\\21\\29.02065\\-127.8118\\21\\30.97377\\-127.8023\\21\\32.9269\\-126.5777\\21\\34.04371\\-125.4428\\21\\36.83315\\-122.009\\21\\38.78627\\-121.2325\\21\\40.7394\\-122.7223\\21\\41.51782\\-123.4896\\21\\42.24863\\-125.4428\\21\\43.18369\\-127.3959\\21\\42.7887\\-129.349\\21\\41.59719\\-131.3021\\21\\41.4057\\-133.2553\\21\\42.01605\\-135.2084\\21\\43.43588\\-137.1615\\21\\43.25446\\-139.1146\\21\\42.40491\\-141.0678\\21\\40.27523\\-143.0209\\21\\39.46236\\-144.974\\21\\40.7394\\-145.3175\\21\\42.69252\\-146.4686\\21\\43.66909\\-146.9271\\21\\42.69252\\-147.7023\\21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002291"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "108"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "424"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "85.66128\\-212.0553\\21\\85.09934\\-211.3803\\21\\84.85046\\-209.4271\\21\\84.73334\\-207.474\\21\\84.48656\\-205.5209\\21\\83.35133\\-203.5678\\21\\82.95071\\-201.6146\\21\\82.7438\\-199.6615\\21\\80.78746\\-195.7553\\21\\80.40163\\-193.8021\\21\\79.01577\\-191.849\\21\\78.72324\\-189.8959\\21\\77.72107\\-187.9428\\21\\76.82213\\-185.9896\\21\\74.87331\\-182.0834\\21\\73.83321\\-180.1303\\21\\71.03152\\-174.2709\\21\\70.39919\\-172.3178\\21\\69.32839\\-170.3646\\21\\68.08315\\-168.5402\\21\\64.04047\\-164.5053\\21\\63.22068\\-162.5521\\21\\62.22377\\-161.4792\\21\\59.19322\\-158.6459\\21\\58.31752\\-157.7448\\21\\54.41127\\-153.9488\\21\\52.45815\\-152.5274\\21\\50.50502\\-151.5796\\21\\48.5519\\-150.8856\\21\\46.59877\\-149.7722\\21\\45.90914\\-148.8803\\21\\45.11562\\-146.9271\\21\\45.54745\\-144.974\\21\\45.87123\\-141.0678\\21\\46.1734\\-139.1146\\21\\46.17077\\-135.2084\\21\\45.81477\\-133.2553\\21\\46.98812\\-131.3021\\21\\47.85934\\-129.349\\21\\48.02177\\-127.3959\\21\\48.13596\\-123.4896\\21\\47.72453\\-121.5365\\21\\47.48039\\-119.5834\\21\\46.73421\\-117.6303\\21\\45.70474\\-115.6771\\21\\44.1488\\-113.724\\21\\43.13912\\-109.8178\\21\\43.57187\\-107.8646\\21\\43.72677\\-105.9115\\21\\43.77808\\-102.0053\\21\\44.42185\\-100.0521\\21\\44.64565\\-99.82834\\21\\46.59877\\-99.1113\\21\\48.5519\\-99.53845\\21\\50.50502\\-101.0584\\21\\52.45815\\-101.8968\\21\\54.41127\\-103.0358\\21\\55.72835\\-103.9584\\21\\56.3644\\-104.5626\\21\\58.71425\\-107.8646\\21\\59.33711\\-109.8178\\21\\60.91652\\-111.7709\\21\\61.63891\\-113.724\\21\\62.96713\\-115.6771\\21\\63.56985\\-117.6303\\21\\63.7705\\-119.5834\\21\\65.02263\\-121.5365\\21\\65.58381\\-123.4896\\21\\65.70465\\-125.4428\\21\\66.87432\\-127.3959\\21\\67.4761\\-129.349\\21\\69.2653\\-133.2553\\21\\70.35317\\-135.2084\\21\\71.19081\\-137.1615\\21\\71.62241\\-139.1146\\21\\72.74624\\-141.0678\\21\\74.46448\\-144.974\\21\\75.1252\\-146.9271\\21\\76.45758\\-148.8803\\21\\77.04539\\-150.8334\\21\\79.8019\\-154.2223\\21\\80.30721\\-154.7396\\21\\80.84271\\-156.6928\\21\\82.60047\\-158.6459\\21\\84.22482\\-160.599\\21\\84.84007\\-162.5521\\21\\87.6144\\-165.7141\\21\\88.3547\\-166.4584\\21\\91.20191\\-170.3646\\21\\92.6935\\-172.3178\\21\\93.90846\\-174.2709\\21\\95.13393\\-178.1771\\21\\95.95703\\-180.1303\\21\\96.29447\\-182.0834\\21\\96.29836\\-187.9428\\21\\96.51545\\-189.8959\\21\\96.48936\\-191.849\\21\\96.29836\\-193.8021\\21\\96.2896\\-197.7084\\21\\95.94058\\-199.6615\\21\\95.14507\\-201.6146\\21\\94.99221\\-203.5678\\21\\94.25212\\-205.5209\\21\\93.23805\\-207.474\\21\\93.18081\\-211.3803\\21\\91.52065\\-212.9869\\21\\89.56753\\-213.0294\\21\\87.6144\\-212.9367\\21"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "184"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "425"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-92.0731\\-216.9096\\23\\-93.73051\\-215.2865\\23\\-92.0731\\-213.9568\\23\\-90.11997\\-213.3967\\23\\-89.72324\\-211.3803\\23\\-89.00608\\-209.4271\\23\\-88.16685\\-208.1584\\23\\-87.51824\\-207.474\\23\\-88.16685\\-206.8054\\23\\-90.11997\\-205.3214\\23\\-92.0731\\-206.58\\23\\-94.02622\\-208.4186\\23\\-95.97935\\-207.9928\\23\\-96.46763\\-207.474\\23\\-97.58595\\-203.5678\\23\\-97.72077\\-201.6146\\23\\-98.76503\\-199.6615\\23\\-99.22947\\-197.7084\\23\\-99.25707\\-195.7553\\23\\-99.41476\\-193.8021\\23\\-99.6739\\-191.849\\23\\-99.42364\\-187.9428\\23\\-99.25006\\-184.0365\\23\\-98.62152\\-180.1303\\23\\-97.61766\\-178.1771\\23\\-97.03069\\-176.224\\23\\-95.97935\\-174.4558\\23\\-94.52599\\-172.3178\\23\\-92.88005\\-170.3646\\23\\-91.37556\\-168.4115\\23\\-90.58472\\-166.4584\\23\\-89.38878\\-164.5053\\23\\-88.52367\\-162.5521\\23\\-88.16685\\-162.176\\23\\-86.21372\\-159.2757\\23\\-85.70841\\-158.6459\\23\\-85.11084\\-156.6928\\23\\-83.73047\\-154.7396\\23\\-83.43428\\-152.7865\\23\\-82.69686\\-150.8334\\23\\-81.42312\\-148.8803\\23\\-81.01392\\-146.9271\\23\\-79.87474\\-144.974\\23\\-79.38989\\-143.0209\\23\\-79.07072\\-141.0678\\23\\-78.07571\\-139.1146\\23\\-77.45848\\-137.1615\\23\\-77.00222\\-135.2084\\23\\-76.14413\\-133.2553\\23\\-74.38647\\-127.3959\\23\\-74.18016\\-125.4428\\23\\-73.22142\\-123.4896\\23\\-72.39324\\-121.5365\\23\\-71.78658\\-119.5834\\23\\-70.93525\\-117.6303\\23\\-69.84445\\-115.6771\\23\\-69.01746\\-113.724\\23\\-68.6356\\-113.1673\\23\\-66.86068\\-109.8178\\23\\-64.72935\\-107.8262\\23\\-62.77623\\-106.9621\\23\\-60.8231\\-108.1138\\23\\-58.86998\\-108.9286\\23\\-56.91685\\-109.1396\\23\\-56.20299\\-109.8178\\23\\-55.72535\\-111.7709\\23\\-55.54859\\-113.724\\23\\-56.0186\\-115.6771\\23\\-57.45507\\-117.6303\\23\\-57.7681\\-119.5834\\23\\-57.91464\\-121.5365\\23\\-58.39036\\-123.4896\\23\\-57.90258\\-125.4428\\23\\-56.24706\\-127.3959\\23\\-55.67889\\-129.349\\23\\-53.88053\\-131.3021\\23\\-53.0106\\-132.0552\\23\\-51.05748\\-132.488\\23\\-49.50812\\-133.2553\\23\\-49.10435\\-133.5912\\23\\-48.61607\\-133.2553\\23\\-48.77883\\-131.3021\\23\\-50.27729\\-129.349\\23\\-50.97671\\-127.3959\\23\\-50.82175\\-125.4428\\23\\-49.78164\\-123.4896\\23\\-48.26661\\-121.5365\\23\\-46.51313\\-119.5834\\23\\-44.00508\\-117.6303\\23\\-43.24498\\-116.8855\\23\\-41.29185\\-116.488\\23\\-39.33873\\-116.472\\23\\-37.3856\\-116.5751\\23\\-35.43248\\-117.2023\\23\\-33.47935\\-118.726\\23\\-31.52623\\-120.3885\\23\\-30.26639\\-119.5834\\23\\-30.7061\\-117.6303\\23\\-30.37769\\-115.6771\\23\\-29.5731\\-115.0143\\23\\-27.61998\\-114.9176\\23\\-25.66685\\-116.3912\\23\\-24.79737\\-117.6303\\23\\-23.71373\\-118.8534\\23\\-21.7606\\-119.1487\\23\\-19.80748\\-120.6925\\23\\-17.85435\\-122.7093\\23\\-15.90123\\-124.0279\\23\\-13.9481\\-124.4228\\23\\-11.99498\\-124.5888\\23\\-8.088726\\-124.5463\\23\\-6.135601\\-124.6117\\23\\-2.229351\\-124.6388\\23\\1.676899\\-125.7893\\23\\3.630024\\-125.7246\\23\\5.583149\\-125.9564\\23\\7.022591\\-127.3959\\23\\7.26574\\-129.349\\23\\8.265953\\-131.3021\\23\\8.875712\\-133.2553\\23\\8.730388\\-135.2084\\23\\9.122411\\-137.1615\\23\\8.434081\\-139.1146\\23\\7.536274\\-139.9982\\23\\5.583149\\-142.2752\\23\\3.642544\\-143.0209\\23\\1.676899\\-144.1685\\23\\-2.229351\\-144.19\\23\\-4.115892\\-143.0209\\23\\-5.142557\\-141.0678\\23\\-5.507069\\-139.1146\\23\\-7.284788\\-137.1615\\23\\-11.19356\\-133.2553\\23\\-12.64431\\-131.3021\\23\\-13.9481\\-130.0632\\23\\-15.90123\\-129.6638\\23\\-17.85435\\-129.6638\\23\\-21.7606\\-130.3121\\23\\-25.66685\\-131.7641\\23\\-27.61998\\-132.0843\\23\\-29.03886\\-133.2553\\23\\-32.34325\\-137.1615\\23\\-39.33873\\-144.158\\23\\-41.29185\\-145.8285\\23\\-43.24498\\-146.373\\23\\-45.1981\\-147.6787\\23\\-47.15123\\-148.4066\\23\\-49.10435\\-149.6064\\23\\-51.05748\\-149.5771\\23\\-53.0106\\-149.954\\23\\-54.96373\\-150.4564\\23\\-56.91685\\-150.7249\\23\\-58.86998\\-151.9985\\23\\-61.69913\\-154.7396\\23\\-63.33507\\-156.6928\\23\\-64.47026\\-158.6459\\23\\-65.96828\\-160.599\\23\\-68.38293\\-164.5053\\23\\-70.58872\\-166.8412\\23\\-71.55566\\-168.4115\\23\\-72.31805\\-170.3646\\23\\-73.51363\\-172.3178\\23\\-73.75747\\-174.2709\\23\\-75.03237\\-176.224\\23\\-75.48116\\-178.1771\\23\\-77.43861\\-182.0834\\23\\-77.55304\\-184.0365\\23\\-78.97729\\-185.9896\\23\\-79.49874\\-187.9428\\23\\-80.92913\\-189.8959\\23\\-81.44179\\-191.849\\23\\-81.54585\\-193.8021\\23\\-82.83961\\-195.7553\\23\\-83.41425\\-197.7084\\23\\-83.78099\\-201.6146\\23\\-84.95448\\-203.5678\\23\\-85.34332\\-205.5209\\23\\-85.40817\\-207.474\\23\\-84.83868\\-209.4271\\23\\-84.96107\\-211.3803\\23\\-85.4813\\-213.3334\\23\\-85.77904\\-215.2865\\23\\-86.21372\\-215.7957\\23\\-88.16685\\-216.9578\\23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "426"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-47.15123\\-112.0964\\23\\-47.57691\\-111.7709\\23\\-48.59969\\-109.8178\\23\\-47.15123\\-108.6254\\23\\-45.1981\\-108.7699\\23\\-43.24498\\-108.4188\\23\\-41.29185\\-109.2332\\23\\-40.7948\\-109.8178\\23\\-40.94308\\-111.7709\\23\\-41.29185\\-112.129\\23\\-43.24498\\-112.5901\\23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "141"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "427"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "3.630024\\-219.7547\\23\\1.676899\\-218.4812\\23\\-0.276226\\-217.7616\\23\\-2.229351\\-216.097\\23\\-3.061238\\-215.2865\\23\\-4.718739\\-213.3334\\23\\-5.304203\\-211.3803\\23\\-5.500061\\-209.4271\\23\\-6.000165\\-207.474\\23\\-6.143948\\-205.5209\\23\\-6.948161\\-203.5678\\23\\-8.088726\\-202.7468\\23\\-10.04185\\-202.9902\\23\\-11.99498\\-204.9085\\23\\-13.9481\\-204.9448\\23\\-15.90123\\-204.5401\\23\\-17.85435\\-203.2401\\23\\-19.80748\\-202.6241\\23\\-21.7606\\-202.5817\\23\\-23.71373\\-200.9804\\23\\-25.66685\\-200.5858\\23\\-27.61998\\-199.1183\\23\\-29.5731\\-198.6908\\23\\-33.47935\\-198.5746\\23\\-35.43248\\-197.289\\23\\-37.3856\\-196.7318\\23\\-41.29185\\-196.5932\\23\\-43.24498\\-195.2028\\23\\-45.1981\\-194.7432\\23\\-47.15123\\-194.6067\\23\\-49.10435\\-193.2046\\23\\-50.43373\\-191.849\\23\\-51.89688\\-189.8959\\23\\-52.10274\\-185.9896\\23\\-52.77488\\-184.0365\\23\\-53.0106\\-183.7991\\23\\-54.96373\\-183.3976\\23\\-56.70456\\-184.0365\\23\\-57.02536\\-184.0365\\23\\-56.69149\\-182.0834\\23\\-55.87247\\-180.1303\\23\\-54.28325\\-178.1771\\23\\-54.96373\\-176.3231\\23\\-55.86994\\-174.2709\\23\\-56.02387\\-172.3178\\23\\-56.43745\\-170.3646\\23\\-55.70225\\-168.4115\\23\\-54.96373\\-167.783\\23\\-53.0106\\-167.9495\\23\\-52.43054\\-168.4115\\23\\-50.80999\\-170.3646\\23\\-51.21907\\-172.3178\\23\\-51.05748\\-172.5097\\23\\-49.10435\\-173.3939\\23\\-47.57553\\-172.3178\\23\\-46.43139\\-170.3646\\23\\-46.16598\\-168.4115\\23\\-46.03447\\-162.5521\\23\\-45.1981\\-160.6539\\23\\-42.7053\\-158.6459\\23\\-41.29185\\-157.8402\\23\\-37.3856\\-157.8305\\23\\-35.43248\\-158.5645\\23\\-33.47935\\-159.7723\\23\\-31.87366\\-160.599\\23\\-29.5731\\-162.6361\\23\\-27.61998\\-163.7158\\23\\-23.71373\\-163.705\\23\\-21.7606\\-162.5761\\23\\-19.80748\\-162.4855\\23\\-17.85435\\-163.608\\23\\-13.9481\\-163.7436\\23\\-11.99498\\-164.8464\\23\\-10.04185\\-166.726\\23\\-8.798469\\-168.4115\\23\\-7.558592\\-170.3646\\23\\-6.069017\\-174.2709\\23\\-4.954981\\-178.1771\\23\\-4.087735\\-180.1303\\23\\-3.463686\\-182.0834\\23\\-2.229351\\-183.2754\\23\\-0.276226\\-184.8495\\23\\1.676899\\-185.7288\\23\\3.630024\\-187.3115\\23\\5.583149\\-187.8762\\23\\7.536274\\-188.6318\\23\\9.489399\\-189.1934\\23\\11.44252\\-189.6484\\23\\19.25502\\-189.6484\\23\\23.16127\\-189.8583\\23\\25.1144\\-190.6505\\23\\27.06752\\-190.9929\\23\\29.02065\\-190.5452\\23\\30.97377\\-188.9917\\23\\34.88002\\-185.0798\\23\\38.78627\\-183.0348\\23\\40.7394\\-182.3425\\23\\42.69252\\-182.2055\\23\\44.64565\\-182.2055\\23\\46.59877\\-182.091\\23\\48.5519\\-182.0758\\23\\50.50502\\-182.3539\\23\\52.45815\\-183.168\\23\\54.41127\\-184.8035\\23\\56.3644\\-185.3754\\23\\58.87164\\-187.9428\\23\\59.43943\\-189.8959\\23\\60.89918\\-191.849\\23\\61.20702\\-193.8021\\23\\61.21896\\-197.7084\\23\\62.22377\\-198.9062\\23\\64.1769\\-200.3446\\23\\65.35535\\-201.6146\\23\\64.1769\\-203.4303\\23\\62.22377\\-202.4254\\23\\60.27065\\-202.5771\\23\\59.3589\\-203.5678\\23\\58.97365\\-205.5209\\23\\57.56899\\-207.474\\23\\56.87315\\-209.4271\\23\\54.41127\\-211.8163\\23\\52.45815\\-212.6192\\23\\50.50502\\-214.1135\\23\\48.5519\\-215.0047\\23\\46.59877\\-215.039\\23\\44.64565\\-215.6433\\23\\40.7394\\-216.3598\\23\\38.78627\\-216.8503\\23\\34.88002\\-216.9227\\23\\32.9269\\-217.5652\\23\\30.97377\\-217.8958\\23\\29.02065\\-217.9351\\23\\27.06752\\-218.3656\\23\\25.1144\\-219.4633\\23\\23.16127\\-219.4402\\23\\21.20815\\-218.3763\\23\\19.25502\\-218.3305\\23\\17.3019\\-218.8888\\23\\15.34877\\-219.9927\\23\\13.39565\\-220.8868\\23\\7.536274\\-220.8868\\23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "428"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "40.59117\\-148.8803\\23\\38.78627\\-147.7816\\23\\36.83315\\-145.849\\23\\34.88002\\-144.5032\\23\\32.9269\\-143.5307\\23\\32.40732\\-143.0209\\23\\29.3989\\-141.0678\\23\\29.02065\\-140.7212\\23\\27.06752\\-139.7386\\23\\26.44361\\-139.1146\\23\\25.46317\\-137.1615\\23\\24.2742\\-135.2084\\23\\23.63494\\-133.2553\\23\\23.16127\\-131.2201\\23\\25.80514\\-129.349\\23\\27.06752\\-128.5361\\23\\29.02065\\-127.8118\\23\\30.97377\\-127.8023\\23\\32.9269\\-126.5777\\23\\34.00917\\-125.4428\\23\\35.02863\\-123.4896\\23\\35.66431\\-121.5365\\23\\36.83315\\-120.6043\\23\\38.78627\\-120.8285\\23\\41.48275\\-123.4896\\23\\42.30558\\-125.4428\\23\\43.49988\\-127.3959\\23\\43.67356\\-129.349\\23\\41.98096\\-131.3021\\23\\41.79206\\-133.2553\\23\\41.85736\\-135.2084\\23\\41.77856\\-137.1615\\23\\43.4441\\-139.1146\\23\\43.73884\\-141.0678\\23\\41.78302\\-144.974\\23\\42.4107\\-146.9271\\23\\40.89602\\-148.8803\\23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002290"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "109"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "429"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "89.56753\\-213.9257\\23\\85.66128\\-211.8248\\23\\85.28425\\-211.3803\\23\\84.94707\\-207.474\\23\\84.75888\\-203.5678\\23\\84.75888\\-201.6146\\23\\84.30616\\-199.6615\\23\\82.92783\\-197.7084\\23\\82.75211\\-195.7553\\23\\81.58987\\-193.8021\\23\\80.80982\\-191.849\\23\\80.28725\\-189.8959\\23\\78.99195\\-187.9428\\23\\78.8159\\-185.9896\\23\\72.94202\\-174.2709\\23\\71.02653\\-170.3646\\23\\70.03628\\-168.6418\\23\\65.94302\\-164.5053\\23\\64.68871\\-162.5521\\23\\62.22377\\-159.9358\\23\\60.27065\\-158.7544\\23\\58.18982\\-156.6928\\23\\56.3644\\-155.4758\\23\\54.41127\\-153.8929\\23\\52.45815\\-153.1013\\23\\50.50502\\-151.9639\\23\\48.22006\\-150.8334\\23\\47.25861\\-148.8803\\23\\47.08706\\-146.9271\\23\\45.89077\\-144.974\\23\\46.24772\\-143.0209\\23\\46.28065\\-141.0678\\23\\46.1734\\-137.1615\\23\\46.18283\\-133.2553\\23\\47.64545\\-131.3021\\23\\48.09892\\-129.349\\23\\48.15517\\-125.4428\\23\\48.06362\\-123.4896\\23\\47.38503\\-121.5365\\23\\45.75599\\-119.5834\\23\\45.54743\\-117.6303\\23\\44.00734\\-115.6771\\23\\43.05165\\-113.724\\23\\42.39956\\-111.7709\\23\\42.42199\\-109.8178\\23\\43.75909\\-107.8646\\23\\45.40248\\-105.9115\\23\\45.69197\\-103.9584\\23\\45.71442\\-102.0053\\23\\46.59877\\-100.613\\23\\48.5519\\-100.1329\\23\\50.50502\\-100.8306\\23\\52.45815\\-101.0545\\23\\54.41127\\-101.8959\\23\\56.3644\\-103.3544\\23\\58.55325\\-105.9115\\23\\59.31513\\-107.8646\\23\\59.87392\\-109.8178\\23\\61.02372\\-111.7709\\23\\61.80783\\-113.724\\23\\63.00407\\-115.6771\\23\\63.69728\\-117.6303\\23\\64.62079\\-119.5834\\23\\65.27832\\-121.5365\\23\\65.59989\\-123.4896\\23\\66.51941\\-125.4428\\23\\67.29369\\-127.3959\\23\\67.63926\\-129.349\\23\\68.77673\\-131.3021\\23\\69.58329\\-133.2553\\23\\70.67048\\-135.2084\\23\\71.62241\\-137.1615\\23\\72.33592\\-139.1146\\23\\73.21499\\-141.0678\\23\\74.43369\\-143.0209\\23\\75.05663\\-144.974\\23\\76.33954\\-146.9271\\23\\76.99658\\-148.8803\\23\\78.38699\\-150.8334\\23\\78.9602\\-152.7865\\23\\80.59333\\-154.7396\\23\\81.23307\\-156.6928\\23\\82.64568\\-158.6459\\23\\84.59881\\-160.599\\23\\86.15833\\-162.5521\\23\\87.30428\\-164.5053\\23\\87.6144\\-164.8196\\23\\90.37083\\-168.4115\\23\\92.22839\\-170.3646\\23\\93.15896\\-172.3178\\23\\94.26234\\-174.2709\\23\\95.4269\\-176.8326\\23\\95.96317\\-178.1771\\23\\96.4942\\-180.1303\\23\\96.90918\\-182.0834\\23\\97.07606\\-185.9896\\23\\97.07606\\-187.9428\\23\\97.20564\\-189.8959\\23\\97.19302\\-191.849\\23\\97.07606\\-193.8021\\23\\97.0545\\-197.7084\\23\\96.54881\\-199.6615\\23\\96.32534\\-201.6146\\23\\95.90651\\-203.5678\\23\\94.70049\\-205.5209\\23\\93.22629\\-209.4271\\23\\93.18081\\-211.3803\\23\\91.90986\\-213.3334\\23\\91.52065\\-213.6799\\23"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "173"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "430"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-95.97935\\-208.6449\\25\\-97.02536\\-207.474\\25\\-98.53221\\-205.5209\\25\\-98.86818\\-203.5678\\25\\-98.90483\\-201.6146\\25\\-99.08659\\-199.6615\\25\\-99.61507\\-197.7084\\25\\-99.62651\\-195.7553\\25\\-100.5418\\-193.8021\\25\\-100.8784\\-191.849\\25\\-100.8784\\-187.9428\\25\\-100.612\\-185.9896\\25\\-99.62651\\-184.0365\\25\\-99.52878\\-182.0834\\25\\-98.98185\\-180.1303\\25\\-98.61858\\-178.1771\\25\\-97.60696\\-176.224\\25\\-96.74167\\-174.2709\\25\\-95.17033\\-172.3178\\25\\-93.95647\\-170.3646\\25\\-92.0731\\-167.6687\\25\\-91.34694\\-166.4584\\25\\-90.53592\\-164.5053\\25\\-90.11997\\-164.0733\\25\\-87.49735\\-160.599\\25\\-86.71944\\-158.6459\\25\\-85.50571\\-156.6928\\25\\-84.78645\\-154.7396\\25\\-83.73865\\-152.7865\\25\\-83.12378\\-150.8334\\25\\-81.79379\\-148.8803\\25\\-81.03082\\-144.974\\25\\-79.89239\\-143.0209\\25\\-79.38979\\-141.0678\\25\\-79.06407\\-139.1146\\25\\-78.08641\\-137.1615\\25\\-76.35336\\-133.2553\\25\\-76.13329\\-131.3021\\25\\-75.16128\\-129.349\\25\\-74.38647\\-127.3959\\25\\-74.29554\\-125.4428\\25\\-73.24798\\-123.4896\\25\\-72.41978\\-121.5365\\25\\-72.28276\\-119.5834\\25\\-71.20634\\-117.6303\\25\\-70.3069\\-115.6771\\25\\-69.83862\\-113.724\\25\\-68.6356\\-111.5455\\25\\-67.87971\\-109.8178\\25\\-66.68247\\-108.2417\\25\\-64.37964\\-105.9115\\25\\-62.77623\\-104.499\\25\\-60.8231\\-106.2284\\25\\-56.91685\\-107.8873\\25\\-55.23426\\-109.8178\\25\\-54.89663\\-113.724\\25\\-55.50195\\-115.6771\\25\\-55.98956\\-117.6303\\25\\-56.92448\\-119.5834\\25\\-57.5383\\-121.5365\\25\\-57.74825\\-123.4896\\25\\-57.6059\\-125.4428\\25\\-55.98423\\-129.349\\25\\-53.0106\\-132.3448\\25\\-51.05748\\-134.0796\\25\\-50.11171\\-135.2084\\25\\-49.10435\\-136.1892\\25\\-47.44781\\-135.2084\\25\\-47.87368\\-133.2553\\25\\-49.6131\\-131.3021\\25\\-50.58663\\-129.349\\25\\-50.86914\\-127.3959\\25\\-50.16837\\-125.4428\\25\\-49.22642\\-123.4896\\25\\-47.85711\\-121.5365\\25\\-45.1981\\-118.8635\\25\\-43.22227\\-117.6303\\25\\-41.29185\\-116.5661\\25\\-39.33873\\-116.472\\25\\-37.3856\\-116.5235\\25\\-35.43248\\-116.7873\\25\\-33.47935\\-118.5254\\25\\-31.52623\\-118.5736\\25\\-29.5731\\-116.6733\\25\\-27.61998\\-116.5396\\25\\-25.66685\\-118.032\\25\\-23.71373\\-118.6351\\25\\-21.7606\\-118.6431\\25\\-19.80748\\-119.8558\\25\\-18.73326\\-121.5365\\25\\-17.85435\\-122.5732\\25\\-15.90123\\-123.9516\\25\\-11.99498\\-124.0967\\25\\-10.04185\\-123.0832\\25\\-8.088726\\-122.3351\\25\\-5.81008\\-123.4896\\25\\-4.182476\\-124.0967\\25\\-2.229351\\-124.1039\\25\\-0.276226\\-124.4214\\25\\1.676899\\-124.5617\\25\\3.630024\\-124.5617\\25\\5.006706\\-125.4428\\25\\5.583149\\-125.9552\\25\\6.699888\\-127.3959\\25\\7.71066\\-131.3021\\25\\8.098207\\-133.2553\\25\\7.882796\\-135.2084\\25\\8.352305\\-137.1615\\25\\7.980166\\-139.1146\\25\\7.074307\\-141.0678\\25\\6.818501\\-143.0209\\25\\5.583149\\-145.0941\\25\\3.630024\\-146.2068\\25\\-0.276226\\-146.2643\\25\\-2.229351\\-147.1674\\25\\-4.182476\\-145.4869\\25\\-4.633673\\-144.974\\25\\-5.469301\\-143.0209\\25\\-5.150434\\-141.0678\\25\\-5.366617\\-139.1146\\25\\-8.088726\\-136.3367\\25\\-11.19356\\-133.2553\\25\\-11.99498\\-131.6524\\25\\-13.58952\\-129.349\\25\\-13.9481\\-129.0389\\25\\-15.90123\\-128.4192\\25\\-17.85435\\-128.3939\\25\\-21.7606\\-128.4805\\25\\-23.71373\\-129.4976\\25\\-27.61998\\-130.9948\\25\\-27.95544\\-131.3021\\25\\-29.5731\\-133.4236\\25\\-30.38182\\-135.2084\\25\\-32.30847\\-137.1615\\25\\-39.33873\\-144.1389\\25\\-41.29185\\-145.278\\25\\-45.1981\\-146.4832\\25\\-47.15123\\-148.1237\\25\\-49.10435\\-149.9433\\25\\-51.05748\\-149.9169\\25\\-53.0106\\-150.0511\\25\\-54.96373\\-151.1039\\25\\-56.91685\\-151.648\\25\\-58.86998\\-152.4935\\25\\-60.8231\\-153.8298\\25\\-62.77623\\-155.7757\\25\\-64.72935\\-157.3818\\25\\-66.02634\\-158.6459\\25\\-66.68247\\-159.8016\\25\\-68.42241\\-162.5521\\25\\-72.54185\\-166.7065\\25\\-73.48734\\-168.4115\\25\\-74.32059\\-170.3646\\25\\-75.47153\\-172.3178\\25\\-75.51299\\-174.2709\\25\\-76.58308\\-176.224\\25\\-77.45192\\-178.1771\\25\\-78.48581\\-180.1303\\25\\-79.41738\\-182.0834\\25\\-79.43034\\-184.0365\\25\\-80.55112\\-185.9896\\25\\-82.30747\\-189.7738\\25\\-83.38085\\-191.849\\25\\-83.4394\\-193.8021\\25\\-84.17983\\-195.7553\\25\\-85.31579\\-197.7084\\25\\-85.40817\\-201.6146\\25\\-85.5852\\-203.5678\\25\\-86.21372\\-204.6323\\25\\-87.22018\\-205.5209\\25\\-88.16685\\-206.051\\25\\-92.0731\\-206.7416\\25\\-94.02622\\-208.4969\\25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "431"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-92.0731\\-216.3667\\25\\-93.13712\\-215.2865\\25\\-92.0731\\-213.6157\\25\\-90.11997\\-212.453\\25\\-88.16685\\-209.8447\\25\\-86.21372\\-209.1123\\25\\-85.89891\\-209.4271\\25\\-85.52468\\-211.3803\\25\\-85.76074\\-213.3334\\25\\-86.89894\\-215.2865\\25\\-88.16685\\-216.4944\\25\\-90.11997\\-217.0158\\25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "432"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-45.34671\\-111.7709\\25\\-45.93541\\-109.8178\\25\\-45.1981\\-109.0163\\25\\-43.24498\\-107.4479\\25\\-41.29185\\-107.2873\\25\\-38.72631\\-109.8178\\25\\-40.20206\\-111.7709\\25\\-41.29185\\-112.9903\\25\\-43.24498\\-113.601\\25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "139"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "433"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "3.630024\\-219.6367\\25\\1.676899\\-218.8998\\25\\-0.276226\\-218.0519\\25\\-3.130406\\-215.2865\\25\\-5.052227\\-213.3334\\25\\-5.853774\\-211.3803\\25\\-6.800369\\-209.4271\\25\\-8.088726\\-207.2623\\25\\-10.04185\\-207.107\\25\\-11.99498\\-208.571\\25\\-13.9481\\-207.5443\\25\\-15.90123\\-206.2224\\25\\-17.85435\\-204.6973\\25\\-21.7606\\-204.6144\\25\\-23.71373\\-203.6965\\25\\-25.66685\\-202.6358\\25\\-29.5731\\-202.5958\\25\\-31.52623\\-201.1606\\25\\-33.47935\\-200.67\\25\\-39.33873\\-200.589\\25\\-41.29185\\-199.4258\\25\\-43.24498\\-198.7133\\25\\-45.1981\\-198.6255\\25\\-47.15123\\-197.5214\\25\\-49.10435\\-196.7509\\25\\-51.05748\\-195.5501\\25\\-53.0106\\-192.0725\\25\\-53.20167\\-191.849\\25\\-53.93963\\-189.8959\\25\\-53.9828\\-187.9428\\25\\-54.96373\\-185.9669\\25\\-56.91685\\-186.2896\\25\\-57.22791\\-185.9896\\25\\-57.7966\\-184.0365\\25\\-55.7751\\-180.1303\\25\\-54.96373\\-178.277\\25\\-55.64279\\-176.224\\25\\-55.82451\\-174.2709\\25\\-55.59927\\-172.3178\\25\\-54.79603\\-170.3646\\25\\-53.0106\\-169.3125\\25\\-51.32719\\-170.3646\\25\\-52.02884\\-174.2709\\25\\-53.0106\\-175.7242\\25\\-53.75739\\-176.224\\25\\-53.0106\\-177.0484\\25\\-51.05748\\-177.1635\\25\\-49.10435\\-176.3342\\25\\-46.77709\\-174.2709\\25\\-46.10702\\-172.3178\\25\\-45.62347\\-170.3646\\25\\-44.90317\\-168.4115\\25\\-44.38673\\-166.4584\\25\\-44.13643\\-164.5053\\25\\-43.24498\\-162.7855\\25\\-41.08746\\-160.599\\25\\-39.33873\\-159.6431\\25\\-37.3856\\-160.3858\\25\\-35.43248\\-161.6954\\25\\-33.47935\\-162.4996\\25\\-31.52623\\-163.7104\\25\\-29.78236\\-164.5053\\25\\-27.61998\\-165.6635\\25\\-23.71373\\-165.7025\\25\\-21.7606\\-165.0099\\25\\-19.80748\\-163.8358\\25\\-15.90123\\-165.3208\\25\\-13.9481\\-165.7141\\25\\-11.99498\\-166.8153\\25\\-10.04185\\-168.7441\\25\\-8.813099\\-170.3646\\25\\-7.583412\\-172.3178\\25\\-6.861763\\-174.2709\\25\\-5.986994\\-176.224\\25\\-5.521312\\-178.1771\\25\\-4.928127\\-180.1303\\25\\-3.139792\\-182.0834\\25\\-2.229351\\-182.8927\\25\\-0.276226\\-183.2599\\25\\1.676899\\-184.8577\\25\\3.630024\\-185.6967\\25\\5.583149\\-187.1912\\25\\7.536274\\-187.7942\\25\\9.489399\\-188.9694\\25\\11.44252\\-189.6484\\25\\13.39565\\-189.6484\\25\\17.3019\\-189.8151\\25\\19.25502\\-189.8437\\25\\21.20815\\-190.6821\\25\\23.16127\\-191.0874\\25\\27.06752\\-191.6133\\25\\29.02065\\-191.242\\25\\30.97377\\-190.0598\\25\\33.12919\\-187.9428\\25\\34.32591\\-185.9896\\25\\34.88002\\-185.3574\\25\\36.83315\\-184.0138\\25\\38.78627\\-183.0092\\25\\40.7394\\-182.2055\\25\\44.64565\\-182.2055\\25\\46.59877\\-181.2773\\25\\48.5519\\-181.334\\25\\50.50502\\-182.3072\\25\\52.45815\\-183.1432\\25\\56.3644\\-185.1699\\25\\59.13208\\-187.9428\\25\\60.88494\\-189.8959\\25\\61.31427\\-191.849\\25\\61.63143\\-193.8021\\25\\61.63143\\-195.7553\\25\\61.77079\\-197.7084\\25\\62.22377\\-198.2031\\25\\64.1769\\-199.6868\\25\\66.13003\\-200.9655\\25\\66.73901\\-201.6146\\25\\66.13003\\-202.314\\25\\64.1769\\-202.6311\\25\\62.22377\\-202.4214\\25\\60.93407\\-203.5678\\25\\59.38167\\-205.5209\\25\\59.28124\\-207.474\\25\\58.31752\\-209.275\\25\\56.32684\\-211.3803\\25\\54.41127\\-212.6131\\25\\52.45815\\-212.9564\\25\\50.50502\\-214.1221\\25\\48.5519\\-214.8946\\25\\44.64565\\-214.925\\25\\42.69252\\-215.0009\\25\\38.78627\\-215.929\\25\\32.9269\\-215.929\\25\\27.06752\\-216.0069\\25\\23.16127\\-216.1025\\25\\21.20815\\-216.0538\\25\\19.25502\\-216.6755\\25\\15.34877\\-219.9341\\25\\13.39565\\-220.8076\\25\\11.44252\\-220.8984\\25\\7.536274\\-220.8868\\25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "434"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "38.78627\\-147.6583\\25\\36.83315\\-146.4832\\25\\34.88002\\-145.8562\\25\\32.9269\\-144.1349\\25\\30.97377\\-142.5679\\25\\29.02065\\-142.0223\\25\\27.06752\\-140.6614\\25\\25.1144\\-139.6887\\25\\24.51863\\-139.1146\\25\\23.59596\\-135.2084\\25\\22.82518\\-133.2553\\25\\22.77433\\-131.3021\\25\\23.16127\\-130.8627\\25\\25.56717\\-129.349\\25\\27.06752\\-128.4983\\25\\29.02065\\-127.8118\\25\\30.97377\\-127.7424\\25\\32.9269\\-126.5105\\25\\33.94437\\-125.4428\\25\\35.71355\\-121.5365\\25\\36.83315\\-120.5972\\25\\38.78627\\-120.8041\\25\\41.48647\\-123.4896\\25\\43.23693\\-125.4428\\25\\43.7944\\-127.3959\\25\\43.92531\\-129.349\\25\\43.55099\\-131.3021\\25\\42.24863\\-133.2553\\25\\41.99709\\-135.2084\\25\\42.46716\\-137.1615\\25\\43.80424\\-139.1146\\25\\44.06078\\-141.0678\\25\\43.73628\\-143.0209\\25\\42.51814\\-144.974\\25\\42.55709\\-146.9271\\25\\40.7394\\-148.4007\\25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002289"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "106"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "435"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "89.56753\\-214.1997\\25\\87.6144\\-212.4747\\25\\86.76804\\-211.3803\\25\\86.3646\\-209.4271\\25\\85.24533\\-207.474\\25\\85.19931\\-205.5209\\25\\86.12544\\-203.5678\\25\\86.22012\\-201.6146\\25\\84.9229\\-199.6615\\25\\84.78152\\-197.7084\\25\\84.23927\\-195.7553\\25\\82.87942\\-193.8021\\25\\82.80972\\-191.849\\25\\80.81381\\-187.9428\\25\\80.75704\\-185.9896\\25\\79.88267\\-184.0365\\25\\78.82534\\-182.0834\\25\\76.86761\\-178.1771\\25\\75.9809\\-176.224\\25\\74.90527\\-174.2709\\25\\74.04409\\-172.3178\\25\\71.9894\\-168.6693\\25\\69.8395\\-166.4584\\25\\66.13003\\-162.7715\\25\\64.02829\\-160.599\\25\\59.91017\\-156.6928\\25\\58.31752\\-155.4942\\25\\56.3644\\-154.2847\\25\\54.41127\\-153.4883\\25\\52.45815\\-153.1226\\25\\50.50502\\-151.9781\\25\\49.07409\\-150.8334\\25\\47.8693\\-148.8803\\25\\48.02387\\-146.9271\\25\\47.78661\\-144.974\\25\\47.68719\\-141.0678\\25\\47.06962\\-139.1146\\25\\46.16812\\-137.1615\\25\\46.26268\\-135.2084\\25\\47.36923\\-133.2553\\25\\47.93761\\-131.3021\\25\\48.15517\\-129.349\\25\\48.13596\\-125.4428\\25\\47.67393\\-123.4896\\25\\45.88434\\-121.5365\\25\\44.88137\\-119.5834\\25\\43.73732\\-117.6303\\25\\42.04324\\-115.6771\\25\\41.6489\\-113.724\\25\\41.65336\\-111.7709\\25\\41.99641\\-109.8178\\25\\45.7437\\-105.9115\\25\\46.15488\\-103.9584\\25\\46.30581\\-102.0053\\25\\46.59877\\-101.6936\\25\\48.5519\\-100.7547\\25\\50.50502\\-100.7663\\25\\52.45815\\-99.79305\\25\\54.41127\\-100.5973\\25\\56.3644\\-102.4154\\25\\58.31752\\-105.1548\\25\\58.93181\\-105.9115\\25\\60.74149\\-109.8178\\25\\61.80783\\-113.724\\25\\63.00407\\-115.6771\\25\\63.69728\\-117.6303\\25\\64.93804\\-119.5834\\25\\65.50858\\-121.5365\\25\\65.62471\\-123.4896\\25\\66.82529\\-125.4428\\25\\67.48341\\-127.3959\\25\\69.30386\\-131.3021\\25\\69.68975\\-133.2553\\25\\70.8164\\-135.2084\\25\\72.71297\\-139.1146\\25\\74.22435\\-141.0678\\25\\75.08031\\-143.0209\\25\\75.63656\\-144.974\\25\\76.63666\\-146.9271\\25\\78.24551\\-148.8803\\25\\78.89945\\-150.8334\\25\\80.33203\\-152.7865\\25\\81.25818\\-156.6928\\25\\82.75162\\-158.6459\\25\\83.70815\\-159.4823\\25\\85.66128\\-160.9373\\25\\87.6144\\-163.56\\25\\89.97183\\-166.4584\\25\\92.76962\\-170.3646\\25\\93.98806\\-172.3178\\25\\94.7216\\-174.2709\\25\\95.97445\\-176.224\\25\\97.07606\\-180.1303\\25\\97.25796\\-182.0834\\25\\97.97562\\-184.0365\\25\\98.2929\\-185.9896\\25\\98.2929\\-197.7084\\25\\97.85368\\-199.6615\\25\\97.0545\\-201.6146\\25\\96.55129\\-203.5678\\25\\95.82613\\-205.5209\\25\\94.6596\\-207.474\\25\\93.87051\\-209.4271\\25\\93.18081\\-211.3803\\25\\92.17365\\-213.3334\\25\\91.52065\\-213.9636\\25"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "187"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "436"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-95.97935\\-209.9414\\27\\-98.49441\\-207.474\\27\\-99.38029\\-203.5678\\27\\-100.4661\\-201.6146\\27\\-100.8827\\-199.6615\\27\\-100.8909\\-195.7553\\27\\-100.9654\\-193.8021\\27\\-101.2614\\-191.849\\27\\-101.2317\\-187.9428\\27\\-100.9199\\-185.9896\\27\\-100.8909\\-182.0834\\27\\-100.5687\\-180.1303\\27\\-98.99978\\-178.1771\\27\\-98.61205\\-176.224\\27\\-97.12412\\-174.2709\\27\\-96.5631\\-172.3178\\27\\-94.78982\\-170.3646\\27\\-93.30006\\-168.4115\\27\\-92.55271\\-166.4584\\27\\-90.89832\\-164.5053\\27\\-89.49519\\-162.5521\\27\\-88.6339\\-160.599\\27\\-87.49077\\-158.6459\\27\\-86.61548\\-156.6928\\27\\-85.46362\\-154.7396\\27\\-84.74596\\-152.7865\\27\\-83.4766\\-150.8334\\27\\-82.89451\\-148.8803\\27\\-81.79379\\-146.9271\\27\\-81.04045\\-143.0209\\27\\-79.90137\\-141.0678\\27\\-79.38979\\-139.1146\\27\\-79.03677\\-137.1615\\27\\-77.5021\\-135.2084\\27\\-77.01776\\-133.2553\\27\\-76.4481\\-131.7016\\27\\-75.20286\\-129.349\\27\\-74.38647\\-127.3959\\27\\-74.29554\\-125.4428\\27\\-73.24798\\-123.4896\\27\\-72.43334\\-121.5365\\27\\-72.38026\\-119.5834\\27\\-71.2346\\-117.6303\\27\\-70.40173\\-115.6771\\27\\-70.31819\\-113.724\\27\\-69.20625\\-111.7709\\27\\-67.21018\\-107.8646\\27\\-65.92293\\-105.9115\\27\\-64.92042\\-103.9584\\27\\-62.77623\\-102.0723\\27\\-60.8231\\-104.0546\\27\\-58.64521\\-105.9115\\27\\-56.91685\\-107.0887\\27\\-56.07735\\-107.8646\\27\\-54.8873\\-109.8178\\27\\-54.02531\\-111.7709\\27\\-53.97745\\-113.724\\27\\-54.96373\\-115.9158\\27\\-55.93593\\-119.5834\\27\\-56.72578\\-121.5365\\27\\-56.92448\\-123.4896\\27\\-56.95441\\-125.4428\\27\\-56.82211\\-127.3959\\27\\-56.03495\\-129.349\\27\\-54.96373\\-130.5026\\27\\-52.16818\\-133.2553\\27\\-51.4369\\-135.2084\\27\\-52.15175\\-137.1615\\27\\-52.09427\\-139.1146\\27\\-51.05748\\-140.4672\\27\\-49.80561\\-139.1146\\27\\-49.10435\\-137.5069\\27\\-47.70345\\-135.2084\\27\\-48.2518\\-133.2553\\27\\-50.16447\\-131.3021\\27\\-50.90887\\-129.349\\27\\-49.39732\\-125.4428\\27\\-48.2108\\-123.4896\\27\\-44.375\\-119.5834\\27\\-42.74813\\-117.6303\\27\\-41.74075\\-115.6771\\27\\-43.33972\\-113.724\\27\\-44.09016\\-111.7709\\27\\-44.08014\\-109.8178\\27\\-43.24498\\-108.7808\\27\\-41.29185\\-108.0341\\27\\-39.33873\\-108.5985\\27\\-38.30845\\-109.8178\\27\\-39.87774\\-111.7709\\27\\-40.55582\\-113.724\\27\\-40.82012\\-115.6771\\27\\-39.33873\\-116.4827\\27\\-37.3856\\-116.4272\\27\\-35.43248\\-116.4932\\27\\-33.47935\\-117.1637\\27\\-31.52623\\-118.3627\\27\\-29.5731\\-117.4938\\27\\-27.61998\\-117.4433\\27\\-25.66685\\-118.4087\\27\\-21.7606\\-118.6282\\27\\-20.70856\\-119.5834\\27\\-17.85435\\-122.7053\\27\\-15.90123\\-124.0416\\27\\-11.99498\\-124.0322\\27\\-10.04185\\-123.3676\\27\\-8.088726\\-122.8335\\27\\-4.182476\\-124.0695\\27\\-2.229351\\-124.0063\\27\\3.630024\\-124.1144\\27\\5.145793\\-125.4428\\27\\6.363338\\-127.3959\\27\\6.777315\\-129.349\\27\\6.50499\\-131.3021\\27\\6.559711\\-137.1615\\27\\6.475886\\-143.0209\\27\\6.623959\\-144.974\\27\\6.171673\\-146.9271\\27\\5.583149\\-147.5157\\27\\3.630024\\-148.2344\\27\\1.676899\\-148.2413\\27\\-0.276226\\-149.345\\27\\-2.229351\\-150.1059\\27\\-3.591113\\-148.8803\\27\\-3.946754\\-146.9271\\27\\-4.68779\\-144.974\\27\\-5.060525\\-143.0209\\27\\-5.269915\\-141.0678\\27\\-5.605467\\-139.1146\\27\\-7.284788\\-137.1615\\27\\-11.15716\\-133.2553\\27\\-11.16417\\-131.3021\\27\\-11.95622\\-129.349\\27\\-13.9481\\-128.1725\\27\\-15.90123\\-127.8398\\27\\-17.85435\\-127.0802\\27\\-19.80748\\-127.1158\\27\\-21.7606\\-127.7926\\27\\-23.71373\\-126.9873\\27\\-25.66685\\-127.6815\\27\\-27.61998\\-129.4156\\27\\-28.93756\\-131.3021\\27\\-29.40795\\-133.2553\\27\\-30.24484\\-135.2084\\27\\-33.47935\\-138.2865\\27\\-37.3856\\-142.2153\\27\\-39.33873\\-143.9161\\27\\-41.29185\\-144.3967\\27\\-43.24498\\-145.3829\\27\\-45.1981\\-146.1779\\27\\-47.15123\\-148.0621\\27\\-49.10435\\-149.5296\\27\\-51.05748\\-150.0136\\27\\-54.96373\\-151.1589\\27\\-56.91685\\-151.8811\\27\\-58.86998\\-152.1088\\27\\-60.8231\\-152.8531\\27\\-62.77623\\-154.8344\\27\\-64.72935\\-155.5697\\27\\-66.36558\\-156.6928\\27\\-67.81065\\-158.6459\\27\\-68.48699\\-160.599\\27\\-72.54185\\-164.5443\\27\\-74.49497\\-167.56\\27\\-76.4481\\-170.4565\\27\\-77.40746\\-172.3178\\27\\-78.00672\\-174.2709\\27\\-78.40122\\-174.6817\\27\\-79.39075\\-176.224\\27\\-79.40337\\-178.1771\\27\\-80.51456\\-180.1303\\27\\-81.43894\\-182.0834\\27\\-81.44376\\-184.0365\\27\\-82.30747\\-185.6834\\27\\-82.58542\\-185.9896\\27\\-83.43187\\-187.9428\\27\\-83.52818\\-189.8959\\27\\-84.81948\\-191.849\\27\\-85.3954\\-193.8021\\27\\-85.73412\\-197.7084\\27\\-86.7556\\-199.6615\\27\\-87.33298\\-201.6146\\27\\-87.3419\\-203.5678\\27\\-87.96741\\-205.5209\\27\\-88.16685\\-205.7261\\27\\-90.11997\\-206.6685\\27\\-92.0731\\-207.107\\27\\-94.02622\\-208.8825\\27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "437"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-92.0731\\-216.0052\\27\\-92.79181\\-215.2865\\27\\-92.28915\\-213.3334\\27\\-90.11997\\-212.3673\\27\\-88.16685\\-210.7447\\27\\-86.96568\\-211.3803\\27\\-86.8874\\-213.3334\\27\\-87.57451\\-215.2865\\27\\-88.16685\\-216.0044\\27\\-90.11997\\-216.9163\\27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "122"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "438"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "5.583149\\-220.0467\\27\\3.630024\\-219.0573\\27\\1.676899\\-218.9811\\27\\-0.276226\\-218.0959\\27\\-5.096371\\-213.3334\\27\\-6.135601\\-212.1263\\27\\-6.936382\\-211.3803\\27\\-8.088726\\-210.5725\\27\\-11.99498\\-210.5363\\27\\-13.9481\\-209.6182\\27\\-17.85435\\-207.4364\\27\\-19.80748\\-206.6201\\27\\-21.7606\\-206.6201\\27\\-23.71373\\-205.695\\27\\-25.66685\\-204.6\\27\\-29.5731\\-204.6\\27\\-33.47935\\-202.6126\\27\\-41.29185\\-202.5912\\27\\-43.24498\\-201.5332\\27\\-45.1981\\-200.6553\\27\\-47.15123\\-200.6076\\27\\-51.05748\\-198.6716\\27\\-52.66288\\-197.7084\\27\\-53.0106\\-197.358\\27\\-53.93148\\-195.7553\\27\\-53.98309\\-193.8021\\27\\-54.31439\\-191.849\\27\\-54.96373\\-189.728\\27\\-56.91685\\-188.4271\\27\\-57.35487\\-187.9428\\27\\-58.46358\\-185.9896\\27\\-57.75705\\-184.0365\\27\\-54.28764\\-180.1303\\27\\-53.0106\\-179.204\\27\\-51.05748\\-178.8732\\27\\-50.23479\\-178.1771\\27\\-48.62474\\-176.224\\27\\-46.48856\\-174.2709\\27\\-44.93901\\-172.3178\\27\\-44.41184\\-170.3646\\27\\-44.09016\\-168.4115\\27\\-43.24498\\-167.1026\\27\\-40.89425\\-164.5053\\27\\-40.25961\\-162.5521\\27\\-39.33873\\-160.8989\\27\\-37.3856\\-159.7861\\27\\-36.62071\\-160.599\\27\\-36.6995\\-162.5521\\27\\-35.43248\\-163.7013\\27\\-33.96763\\-164.5053\\27\\-33.47935\\-164.9139\\27\\-31.52623\\-165.7105\\27\\-29.5731\\-165.8965\\27\\-27.61998\\-167.2977\\27\\-25.66685\\-167.6937\\27\\-19.80748\\-167.6108\\27\\-13.9481\\-167.6999\\27\\-11.99498\\-168.8659\\27\\-10.04185\\-170.7919\\27\\-8.827892\\-172.3178\\27\\-7.635742\\-174.2709\\27\\-6.899647\\-176.224\\27\\-5.192548\\-180.1303\\27\\-4.182476\\-181.1022\\27\\-2.229351\\-182.3309\\27\\-0.276226\\-183.0805\\27\\3.630024\\-185.0797\\27\\5.583149\\-187.0036\\27\\7.536274\\-187.6837\\27\\9.489399\\-188.9344\\27\\11.44252\\-189.6484\\27\\13.39565\\-189.7215\\27\\15.34877\\-190.6244\\27\\17.3019\\-191.0558\\27\\19.25502\\-191.1011\\27\\21.20815\\-192.2923\\27\\23.16127\\-192.9906\\27\\27.06752\\-193.0484\\27\\29.02065\\-192.4941\\27\\30.97377\\-190.8556\\27\\33.81789\\-187.9428\\27\\35.489\\-185.9896\\27\\38.78627\\-183.0258\\27\\40.7394\\-182.2828\\27\\44.64565\\-182.2055\\27\\46.59877\\-181.4273\\27\\48.5519\\-181.5293\\27\\50.50502\\-182.95\\27\\52.45815\\-183.3439\\27\\54.41127\\-184.0289\\27\\56.3644\\-185.1403\\27\\61.09697\\-189.8959\\27\\61.74416\\-191.849\\27\\61.89825\\-195.7553\\27\\63.02493\\-197.7084\\27\\64.1769\\-198.8832\\27\\66.13003\\-200.3109\\27\\67.3941\\-201.6146\\27\\66.13003\\-203.2529\\27\\64.1769\\-202.8948\\27\\62.22377\\-203.7722\\27\\61.25973\\-205.5209\\27\\60.83258\\-207.474\\27\\59.14384\\-209.4271\\27\\56.3644\\-212.1774\\27\\54.41127\\-212.9367\\27\\52.45815\\-213.8592\\27\\50.50502\\-214.2352\\27\\48.5519\\-214.013\\27\\42.69252\\-213.9861\\27\\36.83315\\-214.045\\27\\34.88002\\-212.9789\\27\\32.9269\\-212.3524\\27\\30.97377\\-212.3186\\27\\25.1144\\-212.3186\\27\\23.16127\\-212.3524\\27\\21.20815\\-213.2607\\27\\19.25502\\-214.7602\\27\\14.73438\\-219.1928\\27\\13.39565\\-220.1837\\27\\11.44252\\-220.8116\\27\\7.536274\\-220.8008\\27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "439"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "42.69252\\-149.6587\\27\\40.7394\\-148.136\\27\\38.78627\\-147.2737\\27\\36.83315\\-147.0492\\27\\34.88002\\-146.0757\\27\\32.9269\\-144.5676\\27\\30.97377\\-143.9744\\27\\29.02065\\-142.6145\\27\\27.06752\\-142.2424\\27\\25.1144\\-141.7059\\27\\23.16127\\-140.1715\\27\\22.14616\\-139.1146\\27\\22.13092\\-133.2553\\27\\22.16019\\-131.3021\\27\\23.16127\\-129.2934\\27\\25.1144\\-128.3596\\27\\29.02065\\-127.7629\\27\\30.97377\\-126.8455\\27\\32.9269\\-125.2405\\27\\34.25906\\-123.4896\\27\\35.89507\\-121.5365\\27\\36.83315\\-120.6748\\27\\38.78627\\-120.8041\\27\\40.7394\\-122.7513\\27\\42.69252\\-124.3809\\27\\43.77808\\-125.4428\\27\\44.13197\\-127.3959\\27\\44.18368\\-129.349\\27\\43.7094\\-131.3021\\27\\42.43344\\-133.2553\\27\\43.21222\\-135.2084\\27\\43.78954\\-137.1615\\27\\44.16603\\-139.1146\\27\\44.28883\\-141.0678\\27\\45.17676\\-143.0209\\27\\45.78727\\-144.974\\27\\45.89907\\-146.9271\\27\\45.20107\\-148.8803\\27\\44.64565\\-149.3999\\27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002288"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "116"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "440"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "89.56753\\-212.9415\\27\\88.21149\\-211.3803\\27\\86.9318\\-209.4271\\27\\86.80511\\-207.474\\27\\86.79985\\-205.5209\\27\\86.92535\\-201.6146\\27\\86.79985\\-199.6615\\27\\86.19778\\-197.7084\\27\\84.89965\\-195.7553\\27\\84.78323\\-191.849\\27\\82.80103\\-187.9428\\27\\82.40055\\-185.9896\\27\\81.75503\\-185.3095\\27\\80.83318\\-184.0365\\27\\80.76994\\-182.0834\\27\\79.93833\\-180.1303\\27\\78.82094\\-178.1771\\27\\77.96412\\-176.224\\27\\76.85438\\-174.2709\\27\\76.06711\\-172.3178\\27\\75.89565\\-172.1351\\27\\73.94253\\-168.5499\\27\\71.90482\\-166.4584\\27\\66.13003\\-160.8499\\27\\63.91781\\-158.6459\\27\\62.22377\\-157.4131\\27\\58.31752\\-154.2755\\27\\56.3644\\-153.4626\\27\\54.41127\\-153.1226\\27\\50.50502\\-151.4689\\27\\49.61527\\-150.8334\\27\\48.1305\\-148.8803\\27\\47.87936\\-146.9271\\27\\48.09058\\-143.0209\\27\\48.02177\\-141.0678\\27\\47.39045\\-139.1146\\27\\46.59877\\-137.6454\\27\\46.17585\\-137.1615\\27\\46.59877\\-136.6687\\27\\47.38679\\-135.2084\\27\\47.90256\\-133.2553\\27\\48.12653\\-131.3021\\27\\48.15517\\-127.3959\\27\\48.11721\\-125.4428\\27\\47.40922\\-123.4896\\27\\46.59877\\-122.6956\\27\\44.64565\\-121.2585\\27\\43.64478\\-119.5834\\27\\43.06955\\-117.6303\\27\\41.62759\\-115.6771\\27\\40.76211\\-113.724\\27\\40.80598\\-111.7709\\27\\42.8653\\-109.8178\\27\\44.07599\\-107.8646\\27\\44.64565\\-107.2719\\27\\46.59877\\-105.8886\\27\\47.7753\\-103.9584\\27\\47.85294\\-102.0053\\27\\48.5519\\-101.2728\\27\\50.50502\\-100.8364\\27\\52.45815\\-99.40966\\27\\54.41127\\-99.59016\\27\\56.85268\\-102.0053\\27\\58.9634\\-105.9115\\27\\59.84265\\-107.8646\\27\\60.91999\\-109.8178\\27\\61.70182\\-111.7709\\27\\61.81738\\-113.724\\27\\63.00407\\-115.6771\\27\\63.69728\\-117.6303\\27\\64.94558\\-119.5834\\27\\65.56036\\-121.5365\\27\\65.63318\\-123.4896\\27\\66.85982\\-125.4428\\27\\67.54493\\-127.3959\\27\\68.72473\\-129.349\\27\\70.03628\\-132.4367\\27\\71.9894\\-133.777\\27\\72.57315\\-135.2084\\27\\72.36642\\-137.1615\\27\\73.2864\\-139.1146\\27\\74.67123\\-141.0678\\27\\75.89565\\-143.6185\\27\\77.07627\\-146.9271\\27\\78.57015\\-148.8803\\27\\79.43491\\-150.8334\\27\\80.52223\\-152.7865\\27\\80.75146\\-154.7396\\27\\80.76978\\-156.6928\\27\\81.75503\\-157.7191\\27\\83.70815\\-159.1078\\27\\85.66128\\-159.8324\\27\\86.42406\\-160.599\\27\\88.04909\\-162.5521\\27\\89.56753\\-164.6179\\27\\90.81366\\-166.4584\\27\\92.24776\\-168.4115\\27\\93.873\\-170.3646\\27\\94.71533\\-172.3178\\27\\95.92395\\-174.2709\\27\\96.59232\\-176.224\\27\\97.07606\\-178.1771\\27\\97.98635\\-180.1303\\27\\98.31503\\-182.0834\\27\\98.46844\\-184.0365\\27\\98.82784\\-185.9896\\27\\98.91721\\-191.849\\27\\98.91721\\-197.7084\\27\\98.51102\\-199.6615\\27\\98.33077\\-201.6146\\27\\97.88275\\-203.5678\\27\\96.59232\\-205.5209\\27\\95.8333\\-207.474\\27\\94.18742\\-209.4271\\27\\93.125\\-211.3803\\27\\91.52065\\-213.3105\\27"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "176"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "441"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-98.06528\\-209.4271\\29\\-99.01022\\-207.474\\29\\-100.5315\\-205.5209\\29\\-100.8911\\-203.5678\\29\\-100.9654\\-201.6146\\29\\-101.2846\\-199.6615\\29\\-101.3005\\-195.7553\\29\\-102.4122\\-193.8021\\29\\-102.8927\\-191.849\\29\\-102.8927\\-189.8959\\29\\-102.5549\\-187.9428\\29\\-101.3679\\-185.9896\\29\\-101.3005\\-182.0834\\29\\-100.9947\\-180.1303\\29\\-100.5521\\-178.1771\\29\\-99.02999\\-176.224\\29\\-98.56065\\-174.2709\\29\\-97.12024\\-172.3178\\29\\-96.10142\\-170.3646\\29\\-94.58507\\-168.4115\\29\\-92.88775\\-166.4584\\29\\-91.45604\\-164.5053\\29\\-90.57296\\-162.5521\\29\\-89.43689\\-160.599\\29\\-88.57836\\-158.6459\\29\\-87.01461\\-156.6928\\29\\-85.73412\\-154.7396\\29\\-85.05769\\-152.7865\\29\\-83.75529\\-150.8334\\29\\-83.44228\\-148.8803\\29\\-82.88799\\-146.9271\\29\\-81.74554\\-144.974\\29\\-81.03043\\-141.0678\\29\\-79.84904\\-139.1146\\29\\-79.21656\\-137.1615\\29\\-78.09726\\-135.2084\\29\\-76.4481\\-131.4765\\29\\-75.24657\\-129.349\\29\\-74.45741\\-127.3959\\29\\-74.29554\\-125.4428\\29\\-73.24798\\-123.4896\\29\\-72.43334\\-121.5365\\29\\-72.38026\\-119.5834\\29\\-71.2346\\-117.6303\\29\\-70.40173\\-115.6771\\29\\-70.40173\\-113.724\\29\\-69.23433\\-111.7709\\29\\-67.29713\\-107.8646\\29\\-66.19419\\-105.9115\\29\\-65.90813\\-103.9584\\29\\-64.3428\\-102.0053\\29\\-62.77623\\-101.0115\\29\\-60.8231\\-101.0153\\29\\-59.80508\\-102.0053\\29\\-58.90783\\-103.9584\\29\\-56.83471\\-105.9115\\29\\-53.0106\\-107.8198\\29\\-51.05748\\-107.7914\\29\\-49.78956\\-109.8178\\29\\-50.32949\\-111.7709\\29\\-52.20261\\-113.724\\29\\-53.6703\\-115.6771\\29\\-54.01941\\-117.6303\\29\\-55.36045\\-119.5834\\29\\-55.73664\\-121.5365\\29\\-55.98448\\-123.4896\\29\\-56.75526\\-125.4428\\29\\-56.82211\\-127.3959\\29\\-56.35176\\-129.349\\29\\-55.60577\\-131.3021\\29\\-54.96373\\-131.9624\\29\\-53.05163\\-133.2553\\29\\-51.82058\\-135.2084\\29\\-52.9021\\-137.1615\\29\\-52.37871\\-139.1146\\29\\-51.05748\\-142.4381\\29\\-49.10435\\-142.6453\\29\\-48.95574\\-141.0678\\29\\-48.96891\\-139.1146\\29\\-48.88055\\-137.1615\\29\\-48.45504\\-135.2084\\29\\-48.72733\\-133.2553\\29\\-50.24725\\-131.3021\\29\\-50.93541\\-129.349\\29\\-49.88247\\-127.3959\\29\\-47.94403\\-123.4896\\29\\-44.11972\\-119.5834\\29\\-44.05878\\-117.6303\\29\\-43.43331\\-115.6771\\29\\-43.24498\\-115.4574\\29\\-41.29185\\-115.0545\\29\\-40.71562\\-115.6771\\29\\-39.33873\\-116.597\\29\\-37.82037\\-115.6771\\29\\-36.54935\\-113.724\\29\\-35.43248\\-112.7897\\29\\-34.43588\\-113.724\\29\\-33.79102\\-115.6771\\29\\-33.47935\\-115.9701\\29\\-31.52623\\-116.6288\\29\\-29.5731\\-116.6292\\29\\-27.61998\\-117.1996\\29\\-25.66685\\-118.7\\29\\-23.71373\\-118.7148\\29\\-21.76867\\-117.6303\\29\\-20.76968\\-115.6771\\29\\-19.80748\\-114.7243\\29\\-18.12979\\-115.6771\\29\\-17.85435\\-116.5252\\29\\-15.90123\\-117.4094\\29\\-14.7464\\-115.6771\\29\\-13.9481\\-114.9834\\29\\-13.30743\\-115.6771\\29\\-13.9481\\-116.3219\\29\\-15.90123\\-117.7862\\29\\-17.85435\\-117.9508\\29\\-19.80748\\-116.874\\29\\-21.74534\\-117.6303\\29\\-21.18009\\-119.5834\\29\\-21.52188\\-121.5365\\29\\-21.7606\\-121.812\\29\\-23.71373\\-122.6767\\29\\-25.66685\\-123.8427\\29\\-26.79122\\-125.4428\\29\\-27.61998\\-127.29\\29\\-28.86146\\-129.349\\29\\-28.86336\\-131.3021\\29\\-28.30045\\-133.2553\\29\\-28.3326\\-135.2084\\29\\-29.5731\\-136.4422\\29\\-31.31062\\-137.1615\\29\\-33.47935\\-138.3733\\29\\-36.12791\\-141.0678\\29\\-37.3856\\-142.6744\\29\\-39.33873\\-144.285\\29\\-41.29185\\-144.681\\29\\-43.24498\\-145.8589\\29\\-45.1981\\-146.5501\\29\\-47.15123\\-147.6268\\29\\-49.10435\\-148.4155\\29\\-51.05748\\-150.0086\\29\\-53.0106\\-151.0809\\29\\-54.96373\\-151.0572\\29\\-56.91685\\-151.3666\\29\\-58.86998\\-150.6551\\29\\-60.8231\\-150.9842\\29\\-62.77623\\-151.7664\\29\\-63.82753\\-152.7865\\29\\-64.72935\\-154.2006\\29\\-65.2212\\-154.7396\\29\\-66.68247\\-155.858\\29\\-67.51255\\-156.6928\\29\\-69.13657\\-158.6459\\29\\-70.58091\\-160.599\\29\\-74.5892\\-164.5053\\29\\-76.4481\\-166.6093\\29\\-77.40119\\-168.4115\\29\\-77.63255\\-170.3646\\29\\-79.10458\\-172.3178\\29\\-80.35435\\-174.3123\\29\\-81.39873\\-176.224\\29\\-81.44199\\-178.1771\\29\\-82.50278\\-180.1303\\29\\-84.2606\\-184.0259\\29\\-85.31568\\-185.9896\\29\\-85.42952\\-189.8959\\29\\-86.44482\\-191.849\\29\\-87.35055\\-193.8021\\29\\-87.40237\\-197.7084\\29\\-89.19895\\-201.6146\\29\\-88.64307\\-203.5678\\29\\-88.871\\-205.5209\\29\\-90.11997\\-206.635\\29\\-92.0731\\-208.2202\\29\\-94.02622\\-210.2203\\29\\-95.97935\\-210.6406\\29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "442"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-39.45628\\-103.9584\\29\\-40.4115\\-102.0053\\29\\-40.31529\\-98.09901\\29\\-39.33873\\-97.2343\\29\\-37.3856\\-97.23911\\29\\-35.90212\\-98.09901\\29\\-36.27451\\-100.0521\\29\\-38.02684\\-102.0053\\29\\-39.20509\\-103.9584\\29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "443"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.182476\\-156.313\\29\\-6.135601\\-154.5255\\29\\-8.088726\\-154.2232\\29\\-10.04185\\-153.3779\\29\\-10.3725\\-152.7865\\29\\-10.04185\\-152.4866\\29\\-8.088726\\-152.0203\\29\\-6.135601\\-151.0921\\29\\-5.900923\\-150.8334\\29\\-4.838685\\-146.9271\\29\\-4.101708\\-144.974\\29\\-4.370813\\-143.0209\\29\\-5.340724\\-141.0678\\29\\-5.923899\\-139.1146\\29\\-7.236725\\-137.1615\\29\\-9.161344\\-135.2084\\29\\-10.53013\\-133.2553\\29\\-10.51269\\-131.3021\\29\\-10.60394\\-129.349\\29\\-11.99498\\-128.0695\\29\\-13.9481\\-127.6998\\29\\-14.58558\\-127.3959\\29\\-14.84412\\-125.4428\\29\\-13.9481\\-124.9374\\29\\-11.99498\\-124.9374\\29\\-10.04185\\-124.533\\29\\-8.088726\\-123.9849\\29\\-6.135601\\-124.7029\\29\\-4.182476\\-126.6696\\29\\-2.229351\\-124.573\\29\\-0.276226\\-124.1054\\29\\1.676899\\-124.1094\\29\\3.630024\\-124.5545\\29\\4.560328\\-125.4428\\29\\4.814246\\-127.3959\\29\\4.620276\\-129.349\\29\\4.800951\\-131.3021\\29\\6.311696\\-135.2084\\29\\6.528639\\-137.1615\\29\\5.635733\\-139.1146\\29\\5.488408\\-141.0678\\29\\6.338421\\-143.0209\\29\\7.536274\\-144.7703\\29\\9.337312\\-146.9271\\29\\7.777244\\-148.8803\\29\\5.583149\\-150.1804\\29\\3.630024\\-151.0153\\29\\2.653461\\-152.7865\\29\\1.676899\\-153.7178\\29\\-0.276226\\-154.3353\\29\\-0.7425126\\-154.7396\\29\\-2.229351\\-155.6129\\29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "130"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "444"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "5.583149\\-219.6274\\29\\3.630024\\-218.9811\\29\\1.676899\\-218.8998\\29\\-0.276226\\-218.0652\\29\\-4.182476\\-214.2235\\29\\-6.135601\\-212.7086\\29\\-8.088726\\-212.4648\\29\\-10.04185\\-212.4409\\29\\-11.99498\\-211.9092\\29\\-13.9481\\-210.7105\\29\\-15.90123\\-210.0208\\29\\-17.85435\\-208.741\\29\\-21.7606\\-208.5649\\29\\-23.82562\\-207.474\\29\\-25.66685\\-206.6283\\29\\-29.5731\\-206.58\\29\\-33.47935\\-204.6079\\29\\-41.29185\\-204.5708\\29\\-43.24498\\-203.8085\\29\\-45.1981\\-202.6226\\29\\-47.15123\\-202.2933\\29\\-49.10435\\-200.9793\\29\\-51.05748\\-200.6337\\29\\-53.0106\\-199.7733\\29\\-54.24656\\-197.7084\\29\\-54.84166\\-195.7553\\29\\-54.91154\\-193.8021\\29\\-56.13018\\-191.849\\29\\-56.91685\\-191.3372\\29\\-58.86998\\-192.4763\\29\\-59.42393\\-191.849\\29\\-59.33194\\-189.8959\\29\\-58.45145\\-187.9428\\29\\-57.89802\\-185.9896\\29\\-56.91685\\-184.729\\29\\-54.40321\\-182.0834\\29\\-52.13946\\-180.1303\\29\\-50.54921\\-178.1771\\29\\-49.67448\\-176.224\\29\\-49.10435\\-175.5877\\29\\-47.15123\\-174.5857\\29\\-45.1981\\-173.2773\\29\\-43.24498\\-170.9235\\29\\-41.29185\\-168.8493\\29\\-39.33873\\-166.8964\\29\\-37.3856\\-165.6782\\29\\-35.43248\\-166.7607\\29\\-31.71646\\-168.4115\\29\\-29.5731\\-169.5582\\29\\-25.66685\\-169.6902\\29\\-15.90123\\-169.6832\\29\\-13.9481\\-170.6878\\29\\-11.99498\\-171.5922\\29\\-10.72161\\-172.3178\\29\\-10.04185\\-172.9909\\29\\-9.340596\\-174.2709\\29\\-8.554068\\-176.224\\29\\-7.40461\\-178.1771\\29\\-5.630934\\-180.1303\\29\\-4.182476\\-181.1435\\29\\-2.229351\\-182.245\\29\\1.676899\\-183.9699\\29\\3.630024\\-185.0433\\29\\5.583149\\-186.9851\\29\\7.536274\\-187.6837\\29\\9.489399\\-188.9344\\29\\11.44252\\-189.6484\\29\\13.39565\\-190.6047\\29\\15.34877\\-191.3189\\29\\17.3019\\-191.6874\\29\\19.25502\\-192.5546\\29\\21.20815\\-194.205\\29\\25.7624\\-197.7084\\29\\27.06752\\-198.4473\\29\\28.56912\\-197.7084\\29\\30.97377\\-195.5671\\29\\31.92147\\-193.8021\\29\\32.11147\\-191.849\\29\\33.31359\\-189.8959\\29\\34.39756\\-187.9428\\29\\35.82171\\-185.9896\\29\\36.83315\\-185.0319\\29\\38.78627\\-183.3976\\29\\40.7394\\-182.9339\\29\\42.69252\\-182.3072\\29\\46.59877\\-182.1781\\29\\48.5519\\-182.2461\\29\\52.45815\\-183.8749\\29\\54.41127\\-184.1595\\29\\56.3644\\-185.1598\\29\\61.1302\\-189.8959\\29\\61.80783\\-191.849\\29\\61.81738\\-193.8021\\29\\62.99829\\-195.7553\\29\\63.38744\\-197.7084\\29\\64.1769\\-198.5883\\29\\68.08315\\-200.9576\\29\\68.69141\\-201.6146\\29\\68.08315\\-202.3538\\29\\65.77386\\-203.5678\\29\\64.1769\\-204.2639\\29\\62.22377\\-206.2518\\29\\61.3325\\-207.474\\29\\60.44629\\-209.4271\\29\\58.31752\\-211.5611\\29\\54.41127\\-213.8791\\29\\52.45815\\-214.6132\\29\\50.50502\\-214.3202\\29\\48.5519\\-213.2386\\29\\46.59877\\-213.0404\\29\\42.69252\\-212.1303\\29\\40.89613\\-211.3803\\29\\38.3362\\-209.4271\\29\\36.83315\\-208.5497\\29\\34.88002\\-207.9587\\29\\34.35236\\-207.474\\29\\32.9269\\-206.5676\\29\\30.97377\\-206.1203\\29\\30.35736\\-205.5209\\29\\29.02065\\-204.6191\\29\\27.06752\\-204.6097\\29\\25.1144\\-204.7079\\29\\24.27508\\-205.5209\\29\\23.32995\\-207.474\\29\\22.21889\\-209.4271\\29\\21.20815\\-210.793\\29\\15.34877\\-216.6865\\29\\13.39565\\-218.6068\\29\\11.44252\\-219.7998\\29\\7.536274\\-219.8489\\29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002287"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "154"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "445"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "89.56753\\-212.1009\\29\\88.98701\\-211.3803\\29\\88.78332\\-209.4271\\29\\88.73399\\-207.474\\29\\88.69149\\-199.6615\\29\\87.6144\\-197.6298\\29\\86.80704\\-195.7553\\29\\86.77525\\-193.8021\\29\\86.2079\\-191.849\\29\\84.90384\\-189.8959\\29\\84.79904\\-187.9428\\29\\83.99026\\-185.9896\\29\\82.81335\\-184.0365\\29\\82.43365\\-182.0834\\29\\80.89941\\-180.1303\\29\\80.79202\\-178.1771\\29\\79.97738\\-176.224\\29\\78.8299\\-174.2709\\29\\77.84878\\-172.1734\\29\\75.89565\\-168.4384\\29\\71.9894\\-164.4942\\29\\71.10391\\-162.5521\\29\\69.55477\\-160.599\\29\\68.08315\\-158.5843\\29\\66.13003\\-158.8075\\29\\63.96235\\-156.6928\\29\\62.22377\\-155.5337\\29\\60.35203\\-154.7396\\29\\58.31752\\-153.403\\29\\56.3644\\-152.3012\\29\\54.41127\\-151.6751\\29\\52.45815\\-151.4281\\29\\50.50502\\-150.3263\\29\\49.1295\\-148.8803\\29\\48.5519\\-148.1163\\29\\46.59877\\-147.8021\\29\\44.64565\\-149.8187\\29\\42.69252\\-149.9564\\29\\40.7394\\-148.1018\\29\\38.23018\\-146.9271\\29\\36.83315\\-146.3652\\29\\32.9269\\-145.1978\\29\\30.97377\\-144.521\\29\\27.06752\\-143.9601\\29\\25.1144\\-142.6539\\29\\23.16127\\-142.081\\29\\20.09842\\-139.1146\\29\\19.41897\\-137.1615\\29\\20.07665\\-135.2084\\29\\20.40814\\-133.2553\\29\\21.94677\\-129.349\\29\\23.16127\\-127.4195\\29\\25.1144\\-126.5174\\29\\27.06752\\-127.0015\\29\\29.02065\\-126.8099\\29\\30.97377\\-125.2265\\29\\32.9269\\-124.2891\\29\\33.87507\\-123.4896\\29\\35.47274\\-121.5365\\29\\36.83315\\-120.5599\\29\\38.78627\\-120.8475\\29\\40.7394\\-122.7513\\29\\42.69252\\-124.0279\\29\\44.08372\\-125.4428\\29\\44.29913\\-129.349\\29\\44.03136\\-131.3021\\29\\43.03304\\-135.2084\\29\\43.85077\\-137.1615\\29\\44.34169\\-139.1146\\29\\45.27044\\-141.0678\\29\\45.87486\\-143.0209\\29\\46.59877\\-144.2136\\29\\48.28556\\-144.974\\29\\48.66816\\-144.974\\29\\49.11399\\-143.0209\\29\\48.21361\\-141.0678\\29\\47.46101\\-139.1146\\29\\47.39071\\-137.1615\\29\\47.97905\\-135.2084\\29\\48.27007\\-133.2553\\29\\48.29281\\-127.3959\\29\\48.17487\\-125.4428\\29\\47.34556\\-123.4896\\29\\46.59877\\-122.7623\\29\\44.64565\\-122.057\\29\\44.06622\\-121.5365\\29\\42.54391\\-119.5834\\29\\42.38856\\-117.6303\\29\\40.70184\\-113.724\\29\\40.73177\\-111.7709\\29\\42.69252\\-110.4241\\29\\44.64565\\-108.8203\\29\\46.59877\\-107.3913\\29\\48.5519\\-106.2735\\29\\48.90399\\-105.9115\\29\\49.64814\\-103.9584\\29\\51.12592\\-102.0053\\29\\52.45815\\-100.8063\\29\\54.41127\\-100.416\\29\\56.40196\\-102.0053\\29\\57.27121\\-103.9584\\29\\58.47911\\-105.9115\\29\\59.24526\\-107.8646\\29\\60.89162\\-109.8178\\29\\61.70408\\-111.7709\\29\\61.74131\\-113.724\\29\\63.00407\\-115.6771\\29\\63.69728\\-117.6303\\29\\64.25767\\-119.5834\\29\\65.21014\\-121.5365\\29\\65.59989\\-123.4896\\29\\66.85982\\-125.4428\\29\\67.54493\\-127.3959\\29\\68.75489\\-129.349\\29\\70.03628\\-132.0457\\29\\71.9894\\-132.3982\\29\\73.46768\\-133.2553\\29\\72.98076\\-135.2084\\29\\72.64224\\-137.1615\\29\\74.29935\\-139.1146\\29\\75.19232\\-141.0678\\29\\76.38393\\-143.0209\\29\\77.02715\\-144.974\\29\\78.30176\\-146.9271\\29\\79.00636\\-148.8803\\29\\80.37156\\-150.8334\\29\\80.34012\\-152.7865\\29\\78.69684\\-154.7396\\29\\79.8019\\-156.3929\\29\\81.75503\\-157.4601\\29\\83.70815\\-158.047\\29\\85.66128\\-159.7492\\29\\90.3435\\-164.5053\\29\\91.96901\\-166.4584\\29\\92.83525\\-168.4115\\29\\94.28482\\-170.3646\\29\\95.90923\\-172.3178\\29\\96.66123\\-174.2709\\29\\97.16832\\-176.224\\29\\98.00439\\-178.1771\\29\\98.49036\\-180.1303\\29\\98.8363\\-182.0834\\29\\98.90778\\-184.0365\\29\\98.8998\\-187.9428\\29\\99.9402\\-189.8959\\29\\100.2721\\-191.849\\29\\100.2545\\-199.6615\\29\\99.80966\\-201.6146\\29\\98.54147\\-203.5678\\29\\97.9372\\-205.5209\\29\\96.17458\\-207.474\\29\\94.17053\\-209.4271\\29\\92.4761\\-211.3803\\29\\91.52065\\-212.3515\\29"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "182"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "446"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-99.939\\-209.4271\\31\\-100.9209\\-207.474\\31\\-101.031\\-205.5209\\31\\-101.3168\\-203.5678\\31\\-102.4631\\-201.6146\\31\\-102.8894\\-199.6615\\31\\-102.8974\\-195.7553\\31\\-102.9706\\-193.8021\\31\\-103.1425\\-191.849\\31\\-103.1425\\-189.8959\\31\\-102.8974\\-184.0365\\31\\-102.8934\\-182.0834\\31\\-102.5055\\-180.1303\\31\\-101.0257\\-178.1771\\31\\-100.5349\\-176.224\\31\\-99.05963\\-174.2709\\31\\-98.54954\\-172.3178\\31\\-96.79925\\-170.3646\\31\\-95.26492\\-168.4115\\31\\-94.18781\\-166.4584\\31\\-90.96201\\-162.5521\\31\\-89.86089\\-160.599\\31\\-88.9798\\-158.6459\\31\\-87.57451\\-156.6928\\31\\-86.67789\\-154.7396\\31\\-85.50843\\-152.7865\\31\\-84.82445\\-150.8334\\31\\-83.75529\\-148.8803\\31\\-83.14101\\-146.9271\\31\\-81.93045\\-144.974\\31\\-81.72261\\-143.0209\\31\\-81.24808\\-141.0678\\31\\-80.06138\\-139.1146\\31\\-79.45917\\-137.1615\\31\\-79.00828\\-135.2084\\31\\-77.57668\\-133.2553\\31\\-77.00222\\-131.3021\\31\\-75.68746\\-129.349\\31\\-74.29554\\-125.4428\\31\\-73.24798\\-123.4896\\31\\-72.43334\\-121.5365\\31\\-72.38026\\-119.5834\\31\\-71.2346\\-117.6303\\31\\-70.40173\\-115.6771\\31\\-70.40173\\-113.724\\31\\-69.23433\\-111.7709\\31\\-68.6356\\-110.4813\\31\\-66.28574\\-105.9115\\31\\-66.16052\\-103.9584\\31\\-65.31298\\-102.0053\\31\\-62.77623\\-99.80465\\31\\-60.8231\\-99.16049\\31\\-59.63232\\-100.0521\\31\\-58.09483\\-102.0053\\31\\-56.91685\\-103.0524\\31\\-54.96373\\-102.6813\\31\\-53.0106\\-101.3217\\31\\-52.20321\\-102.0053\\31\\-51.91545\\-103.9584\\31\\-51.05748\\-105.4789\\31\\-49.10435\\-105.6185\\31\\-47.9461\\-103.9584\\31\\-47.15123\\-103.2748\\31\\-46.424\\-103.9584\\31\\-45.7574\\-105.9115\\31\\-45.1981\\-106.9723\\31\\-44.508\\-107.8646\\31\\-45.1981\\-108.2628\\31\\-47.15123\\-110.3578\\31\\-48.33175\\-111.7709\\31\\-51.05748\\-114.4731\\31\\-52.13318\\-115.6771\\31\\-53.47257\\-117.6303\\31\\-54.03345\\-119.5834\\31\\-55.61306\\-121.5365\\31\\-56.18196\\-123.4896\\31\\-56.89414\\-125.4428\\31\\-56.98344\\-127.3959\\31\\-56.75526\\-129.349\\31\\-56.32219\\-131.3021\\31\\-54.96373\\-133.3186\\31\\-53.0106\\-134.5743\\31\\-52.50488\\-135.2084\\31\\-53.25687\\-137.1615\\31\\-55.24585\\-139.1146\\31\\-55.80614\\-141.0678\\31\\-56.56081\\-143.0209\\31\\-54.96373\\-144.2377\\31\\-53.0106\\-141.9746\\31\\-51.05748\\-142.2129\\31\\-49.11626\\-141.0678\\31\\-48.90491\\-137.1615\\31\\-48.96891\\-135.2084\\31\\-49.89291\\-133.2553\\31\\-50.64854\\-131.3021\\31\\-50.93541\\-129.349\\31\\-49.88668\\-127.3959\\31\\-48.96891\\-125.4428\\31\\-48.4551\\-123.4896\\31\\-46.90174\\-121.5365\\31\\-45.1981\\-120.5433\\31\\-44.08684\\-119.5834\\31\\-43.63192\\-117.6303\\31\\-43.24498\\-117.1341\\31\\-41.29185\\-116.2842\\31\\-39.33873\\-116.5615\\31\\-38.14766\\-115.6771\\31\\-37.3856\\-114.2123\\31\\-36.99323\\-113.724\\31\\-35.43248\\-112.8412\\31\\-34.50758\\-113.724\\31\\-32.77905\\-115.6771\\31\\-31.52623\\-116.5547\\31\\-29.5731\\-116.7404\\31\\-28.52678\\-117.6303\\31\\-27.39698\\-119.5834\\31\\-28.5902\\-121.5365\\31\\-28.74331\\-123.4896\\31\\-28.76365\\-125.4428\\31\\-28.60562\\-127.3959\\31\\-28.27627\\-129.349\\31\\-27.61998\\-130.9986\\31\\-26.38556\\-133.2553\\31\\-26.40602\\-135.2084\\31\\-27.61998\\-137.119\\31\\-29.5731\\-137.7663\\31\\-31.52623\\-138.1381\\31\\-32.6352\\-139.1146\\31\\-34.13222\\-141.0678\\31\\-33.47935\\-143.0621\\31\\-35.43248\\-144.2152\\31\\-37.3856\\-144.5486\\31\\-39.33873\\-145.0825\\31\\-41.29185\\-145.1857\\31\\-43.24498\\-145.6666\\31\\-45.1981\\-146.2673\\31\\-46.74329\\-146.9271\\31\\-49.10435\\-148.0665\\31\\-51.05748\\-149.9281\\31\\-52.86796\\-150.8334\\31\\-53.20295\\-150.8334\\31\\-54.96373\\-150.1375\\31\\-56.78947\\-148.8803\\31\\-56.50822\\-146.9271\\31\\-55.74334\\-144.974\\31\\-56.91685\\-143.4049\\31\\-57.65966\\-144.974\\31\\-57.397\\-146.9271\\31\\-58.86998\\-148.4001\\31\\-59.54782\\-148.8803\\31\\-62.77623\\-150.3852\\31\\-64.72935\\-152.2416\\31\\-66.68247\\-154.5395\\31\\-70.76534\\-158.6459\\31\\-72.54185\\-159.584\\31\\-73.55115\\-160.599\\31\\-74.71296\\-162.5521\\31\\-76.4481\\-163.6026\\31\\-77.31335\\-164.5053\\31\\-78.56661\\-166.4584\\31\\-80.28403\\-170.3646\\31\\-81.37269\\-172.3178\\31\\-81.59328\\-174.2709\\31\\-82.92838\\-176.224\\31\\-83.44337\\-178.1771\\31\\-83.61127\\-180.1303\\31\\-84.90184\\-182.0834\\31\\-85.61813\\-184.0365\\31\\-86.81422\\-185.9896\\31\\-87.36294\\-187.9428\\31\\-87.38452\\-189.8959\\31\\-88.4389\\-191.849\\31\\-89.26875\\-193.8021\\31\\-89.33121\\-197.7084\\31\\-89.89618\\-201.6146\\31\\-89.57066\\-203.5678\\31\\-89.64913\\-205.5209\\31\\-90.11997\\-206.0664\\31\\-92.0731\\-207.793\\31\\-94.02622\\-209.9918\\31\\-95.97935\\-210.8183\\31\\-97.93247\\-210.6491\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "447"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-51.05748\\-95.15248\\31\\-52.19348\\-94.19276\\31\\-51.05748\\-92.18219\\31\\-49.10435\\-91.85308\\31\\-48.91307\\-92.23963\\31\\-47.15123\\-93.26298\\31\\-45.1981\\-94.2411\\31\\-49.10435\\-96.06137\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "448"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-106.4028\\31\\-42.39048\\-105.9115\\31\\-42.46476\\-102.0053\\31\\-42.43983\\-100.0521\\31\\-41.80928\\-98.09901\\31\\-41.29185\\-97.63367\\31\\-39.33873\\-97.17535\\31\\-37.3856\\-97.73202\\31\\-36.95881\\-98.09901\\31\\-36.25017\\-100.0521\\31\\-37.3856\\-102.0876\\31\\-38.21152\\-103.9584\\31\\-39.33873\\-104.9486\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "449"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-19.80748\\-123.9812\\31\\-20.26812\\-123.4896\\31\\-19.80748\\-122.9665\\31\\-18.03584\\-121.5365\\31\\-18.54401\\-119.5834\\31\\-20.9363\\-117.6303\\31\\-20.81845\\-115.6771\\31\\-19.80748\\-114.6617\\31\\-17.85435\\-114.5554\\31\\-15.90123\\-114.5718\\31\\-13.9481\\-113.0318\\31\\-11.99498\\-111.0812\\31\\-10.4691\\-111.7709\\31\\-10.47921\\-113.724\\31\\-10.81365\\-115.6771\\31\\-11.34936\\-117.6303\\31\\-11.99498\\-118.2831\\31\\-13.9481\\-119.0183\\31\\-17.68056\\-121.5365\\31\\-17.64913\\-123.4896\\31\\-17.85435\\-124.0045\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "450"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-10.04185\\-159.0163\\31\\-10.46147\\-158.6459\\31\\-11.25394\\-156.6928\\31\\-11.99498\\-155.5779\\31\\-13.9481\\-153.9393\\31\\-15.90123\\-153.7277\\31\\-16.68365\\-152.7865\\31\\-15.90123\\-152.0357\\31\\-13.9481\\-151.9054\\31\\-10.04185\\-151.1482\\31\\-8.088726\\-151.0572\\31\\-6.135601\\-149.2611\\31\\-5.876513\\-148.8803\\31\\-5.048862\\-146.9271\\31\\-4.182476\\-145.1854\\31\\-4.182476\\-144.7749\\31\\-5.046897\\-143.0209\\31\\-5.565939\\-141.0678\\31\\-5.781145\\-139.1146\\31\\-6.486653\\-137.1615\\31\\-7.760537\\-135.2084\\31\\-9.517401\\-133.2553\\31\\-10.13659\\-131.3021\\31\\-8.87474\\-129.349\\31\\-8.088726\\-128.6166\\31\\-6.135601\\-128.7671\\31\\-4.182476\\-128.345\\31\\-2.229351\\-127.3133\\31\\-0.276226\\-126.8128\\31\\1.676899\\-127.9062\\31\\2.795063\\-129.349\\31\\6.083196\\-133.2553\\31\\6.818501\\-135.2084\\31\\6.921985\\-137.1615\\31\\6.449677\\-139.1146\\31\\5.583149\\-140.8893\\31\\5.583149\\-141.2428\\31\\6.666348\\-143.0209\\31\\7.536274\\-143.7777\\31\\9.489399\\-144.8376\\31\\11.73026\\-146.9271\\31\\12.18062\\-148.8803\\31\\11.44252\\-149.3504\\31\\8.416386\\-150.8334\\31\\7.536274\\-151.3818\\31\\5.948298\\-152.7865\\31\\4.74527\\-154.7396\\31\\4.606586\\-156.6928\\31\\3.630024\\-158.6924\\31\\1.676899\\-159.4934\\31\\-2.229351\\-159.5485\\31\\-4.182476\\-159.7421\\31\\-6.135601\\-159.6964\\31\\-8.088726\\-159.4553\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "141"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "451"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.276226\\-217.4987\\31\\-2.229351\\-216.107\\31\\-4.182476\\-214.2235\\31\\-6.135601\\-212.9174\\31\\-10.04185\\-213.0294\\31\\-11.99498\\-212.7312\\31\\-13.9481\\-212.0037\\31\\-15.90123\\-210.7997\\31\\-17.85435\\-210.584\\31\\-19.80748\\-210.4867\\31\\-21.7606\\-210.0188\\31\\-23.71373\\-208.7445\\31\\-25.66685\\-208.5304\\31\\-27.61998\\-208.5077\\31\\-29.5731\\-208.0329\\31\\-31.52623\\-206.7814\\31\\-33.47935\\-206.6391\\31\\-39.33873\\-206.5334\\31\\-41.29185\\-206.1877\\31\\-43.24498\\-204.7752\\31\\-45.1981\\-204.5854\\31\\-47.15123\\-203.8102\\31\\-49.10435\\-202.6308\\31\\-51.05748\\-202.2568\\31\\-53.0106\\-200.9508\\31\\-54.30717\\-199.6615\\31\\-55.7333\\-195.7553\\31\\-56.91685\\-194.0801\\31\\-58.86998\\-194.9754\\31\\-60.05176\\-193.8021\\31\\-59.75159\\-191.849\\31\\-58.63262\\-189.8959\\31\\-57.89341\\-187.9428\\31\\-56.91685\\-186.5951\\31\\-54.43475\\-184.0365\\31\\-53.55992\\-182.0834\\31\\-51.94744\\-180.1303\\31\\-50.82012\\-178.1771\\31\\-49.85342\\-176.224\\31\\-49.10435\\-175.453\\31\\-47.15123\\-174.6092\\31\\-45.1981\\-173.4256\\31\\-43.24498\\-171.9879\\31\\-41.29185\\-170.9517\\31\\-39.33873\\-169.6918\\31\\-37.3856\\-169.5508\\31\\-35.43248\\-169.6383\\31\\-31.52623\\-171.5914\\31\\-27.61998\\-173.3371\\31\\-23.71373\\-173.3964\\31\\-21.7606\\-172.713\\31\\-19.80748\\-171.6921\\31\\-15.90123\\-171.7038\\31\\-13.9481\\-172.8828\\31\\-11.99498\\-174.6282\\31\\-10.58282\\-176.224\\31\\-9.350833\\-178.1771\\31\\-8.088726\\-179.6553\\31\\-6.135601\\-180.9297\\31\\-4.182476\\-181.4845\\31\\-2.564589\\-182.0834\\31\\-0.276226\\-183.0764\\31\\1.676899\\-184.132\\31\\3.630024\\-185.0703\\31\\5.583149\\-186.9851\\31\\7.536274\\-187.8073\\31\\9.489399\\-188.9753\\31\\11.44252\\-189.7605\\31\\13.39565\\-190.9028\\31\\15.34877\\-192.5242\\31\\17.3019\\-193.1383\\31\\19.25502\\-194.2227\\31\\21.20815\\-196.2359\\31\\22.18471\\-197.7084\\31\\23.16127\\-198.6651\\31\\27.06752\\-199.4745\\31\\29.02065\\-199.0337\\31\\30.97377\\-197.9474\\31\\31.22326\\-197.7084\\31\\32.46273\\-195.7553\\31\\32.88934\\-193.8021\\31\\33.51858\\-191.849\\31\\34.3343\\-189.8959\\31\\35.58338\\-187.9428\\31\\37.38654\\-185.9896\\31\\40.7394\\-183.3702\\31\\42.69252\\-182.9379\\31\\44.64565\\-182.3803\\31\\46.59877\\-182.9797\\31\\48.5519\\-183.127\\31\\50.50502\\-183.4368\\31\\52.20274\\-184.0365\\31\\54.41127\\-184.9495\\31\\56.3644\\-185.3754\\31\\58.31752\\-187.0934\\31\\61.1302\\-189.8959\\31\\61.80783\\-191.849\\31\\61.94195\\-193.8021\\31\\63.17334\\-195.7553\\31\\63.7705\\-197.7084\\31\\64.1769\\-198.1628\\31\\66.13003\\-199.5385\\31\\68.08315\\-200.2758\\31\\69.42922\\-201.6146\\31\\68.08315\\-203.2422\\31\\66.13003\\-203.5012\\31\\64.1769\\-204.6756\\31\\63.421\\-205.5209\\31\\62.94248\\-207.474\\31\\61.38222\\-209.4271\\31\\60.35203\\-211.3803\\31\\56.3644\\-213.7891\\31\\54.41127\\-214.6164\\31\\52.45815\\-214.94\\31\\50.50502\\-214.7028\\31\\48.5519\\-213.9898\\31\\46.59877\\-212.9367\\31\\44.64565\\-212.4409\\31\\42.69252\\-211.1933\\31\\40.7394\\-210.4785\\31\\37.60565\\-207.474\\31\\35.85659\\-205.5209\\31\\34.88002\\-203.4963\\31\\32.9269\\-202.6693\\31\\30.97377\\-202.8037\\31\\29.02065\\-203.7294\\31\\27.06752\\-203.817\\31\\25.1144\\-203.7548\\31\\23.16127\\-204.2056\\31\\22.09302\\-205.5209\\31\\21.20815\\-206.7944\\31\\20.56337\\-207.474\\31\\20.05271\\-209.4271\\31\\19.25502\\-210.6572\\31\\18.61928\\-211.3803\\31\\12.78442\\-217.2396\\31\\11.44252\\-218.2759\\31\\9.489399\\-218.9702\\31\\7.536274\\-218.9575\\31\\3.630024\\-218.8086\\31\\1.676899\\-218.291\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "11"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "452"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "5.583149\\-118.5064\\31\\4.788743\\-117.6303\\31\\4.485206\\-115.6771\\31\\5.583149\\-114.6805\\31\\7.536274\\-114.6805\\31\\9.489399\\-115.6533\\31\\11.44252\\-116.8203\\31\\12.20327\\-117.6303\\31\\11.44252\\-118.4216\\31\\9.489399\\-119.1025\\31\\7.536274\\-119.1367\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "453"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "42.69252\\-149.4576\\31\\40.7394\\-148.0412\\31\\36.83315\\-146.1334\\31\\34.88002\\-145.3707\\31\\29.02065\\-145.0825\\31\\27.06752\\-144.5676\\31\\25.1144\\-144.2526\\31\\23.16127\\-143.7818\\31\\21.20815\\-142.33\\31\\19.25502\\-141.6602\\31\\18.66258\\-141.0678\\31\\17.77556\\-139.1146\\31\\18.03689\\-135.2084\\31\\18.22933\\-131.3021\\31\\19.36434\\-129.349\\31\\20.23159\\-127.3959\\31\\21.20815\\-126.5029\\31\\25.1144\\-125.8867\\31\\27.06752\\-126.1336\\31\\29.02065\\-125.1172\\31\\30.97377\\-124.2358\\31\\32.9269\\-122.8845\\31\\34.88002\\-120.9495\\31\\36.83315\\-120.6826\\31\\38.78627\\-121.6173\\31\\42.02781\\-123.4896\\31\\42.69252\\-123.9605\\31\\44.15737\\-125.4428\\31\\44.32013\\-127.3959\\31\\45.22245\\-129.349\\31\\45.44958\\-131.3021\\31\\43.72359\\-133.2553\\31\\43.5425\\-135.2084\\31\\45.71244\\-137.1615\\31\\45.49262\\-139.1146\\31\\45.50918\\-141.0678\\31\\47.09301\\-143.0209\\31\\48.10911\\-144.974\\31\\47.8599\\-146.9271\\31\\44.64565\\-149.3885\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002286"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "121"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "454"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "91.52065\\-209.0057\\31\\90.71227\\-207.474\\31\\90.69516\\-205.5209\\31\\90.1547\\-203.5678\\31\\90.05581\\-201.6146\\31\\90.10654\\-199.6615\\31\\88.97285\\-197.7084\\31\\88.75549\\-195.7553\\31\\88.6943\\-193.8021\\31\\87.82418\\-191.849\\31\\86.81999\\-189.8959\\31\\86.73447\\-187.9428\\31\\85.92948\\-185.9896\\31\\84.80615\\-184.0365\\31\\83.97311\\-182.0834\\31\\82.83855\\-180.1303\\31\\82.76414\\-178.1771\\31\\81.92018\\-176.224\\31\\80.80677\\-174.2709\\31\\78.84904\\-170.3646\\31\\77.93904\\-168.4115\\31\\75.89565\\-166.2691\\31\\73.94253\\-162.7825\\31\\71.96597\\-160.599\\31\\70.50476\\-158.6459\\31\\69.22352\\-156.6928\\31\\68.08315\\-155.6884\\31\\66.13003\\-155.6071\\31\\64.1769\\-154.8481\\31\\62.22377\\-153.6391\\31\\60.27065\\-152.8096\\31\\58.31752\\-151.6975\\31\\56.3644\\-151.3809\\31\\54.41127\\-150.3793\\31\\52.45815\\-149.7489\\31\\50.71217\\-148.8803\\31\\49.34955\\-146.9271\\31\\49.29449\\-144.974\\31\\49.81781\\-143.0209\\31\\49.1206\\-141.0678\\31\\47.91\\-139.1146\\31\\47.7235\\-137.1615\\31\\48.5519\\-136.2651\\31\\49.28941\\-135.2084\\31\\49.68959\\-133.2553\\31\\49.66866\\-127.3959\\31\\49.03408\\-125.4428\\31\\47.35773\\-123.4896\\31\\46.59877\\-122.7623\\31\\44.64565\\-122.0248\\31\\44.06402\\-121.5365\\31\\42.44504\\-119.5834\\31\\42.49308\\-117.6303\\31\\41.86379\\-115.6771\\31\\41.76148\\-113.724\\31\\41.83085\\-111.7709\\31\\42.69252\\-110.8139\\31\\44.64565\\-109.0115\\31\\46.08844\\-107.8646\\31\\48.5519\\-105.6391\\31\\49.87313\\-103.9584\\31\\52.45815\\-101.2888\\31\\54.41127\\-101.2354\\31\\55.22417\\-102.0053\\31\\56.53878\\-103.9584\\31\\57.31238\\-105.9115\\31\\58.99084\\-107.8646\\31\\60.45765\\-109.8178\\31\\61.0762\\-111.7709\\31\\61.19153\\-113.724\\31\\62.87305\\-115.6771\\31\\63.62278\\-117.6303\\31\\63.75153\\-119.5834\\31\\65.03313\\-121.5365\\31\\65.58381\\-123.4896\\31\\66.85982\\-125.4428\\31\\67.54493\\-127.3959\\31\\68.75489\\-129.349\\31\\70.03628\\-131.8494\\31\\71.9894\\-132.3097\\31\\73.57092\\-133.2553\\31\\72.99541\\-135.2084\\31\\72.76955\\-137.1615\\31\\74.68003\\-139.1146\\31\\75.89565\\-141.4238\\31\\77.55581\\-144.974\\31\\78.61156\\-146.9271\\31\\80.18884\\-148.8803\\31\\80.61793\\-150.8334\\31\\79.8019\\-151.9717\\31\\78.98183\\-152.7865\\31\\77.64053\\-154.7396\\31\\79.0794\\-156.6928\\31\\79.8019\\-157.2774\\31\\81.75503\\-157.2998\\31\\83.70815\\-157.8814\\31\\86.4715\\-160.599\\31\\87.6144\\-161.5576\\31\\89.44338\\-162.5521\\31\\91.54336\\-164.5053\\31\\94.02386\\-168.4115\\31\\95.66042\\-170.3646\\31\\96.69281\\-172.3178\\31\\97.94212\\-174.2709\\31\\98.37426\\-176.224\\31\\98.63633\\-178.1771\\31\\99.07406\\-180.1303\\31\\99.15876\\-182.0834\\31\\99.08566\\-184.0365\\31\\98.285\\-185.9896\\31\\98.2417\\-187.9428\\31\\99.99599\\-189.8959\\31\\100.5129\\-191.849\\31\\100.7726\\-195.7553\\31\\100.8243\\-199.6615\\31\\100.5041\\-201.6146\\31\\100.3097\\-203.5678\\31\\99.38656\\-205.5209\\31\\97.38003\\-206.6376\\31\\95.4269\\-208.2168\\31\\93.47378\\-209.275\\31"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "121"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "455"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-99.8856\\-210.8042\\33\\-101.0872\\-209.4271\\33\\-102.3793\\-207.474\\33\\-102.8693\\-205.5209\\33\\-102.9706\\-201.6146\\33\\-103.2299\\-199.6615\\33\\-103.4453\\-191.849\\33\\-103.4558\\-189.8959\\33\\-104.4071\\-187.9428\\33\\-104.3767\\-185.9896\\33\\-103.321\\-184.0365\\33\\-103.321\\-182.0834\\33\\-103.0654\\-180.1303\\33\\-102.4916\\-178.1771\\33\\-101.0528\\-176.224\\33\\-100.5313\\-174.2709\\33\\-99.09959\\-172.3178\\33\\-98.11948\\-170.3646\\33\\-96.58833\\-168.4115\\33\\-94.86701\\-166.4584\\33\\-93.38418\\-164.5053\\33\\-92.32078\\-162.5521\\33\\-90.74905\\-160.599\\33\\-89.49519\\-158.6459\\33\\-88.4658\\-156.6928\\33\\-86.95289\\-154.7396\\33\\-85.62997\\-152.7865\\33\\-85.43531\\-150.8334\\33\\-84.76935\\-148.8803\\33\\-83.4747\\-146.9271\\33\\-82.96385\\-144.974\\33\\-81.93045\\-143.0209\\33\\-81.02065\\-139.1146\\33\\-79.84067\\-137.1615\\33\\-79.16237\\-135.2084\\33\\-78.01429\\-133.2553\\33\\-77.1478\\-131.3021\\33\\-75.17806\\-127.3959\\33\\-74.49497\\-125.7881\\33\\-73.24798\\-123.4896\\33\\-72.43334\\-121.5365\\33\\-72.38026\\-119.5834\\33\\-71.2346\\-117.6303\\33\\-70.40173\\-115.6771\\33\\-70.26758\\-113.724\\33\\-69.16882\\-111.7709\\33\\-68.29951\\-109.8178\\33\\-66.28574\\-105.9115\\33\\-66.2571\\-103.9584\\33\\-65.92065\\-102.0053\\33\\-62.77623\\-99.31037\\33\\-60.8231\\-97.88731\\33\\-58.86998\\-96.70277\\33\\-58.13755\\-96.14588\\33\\-56.91685\\-95.50779\\33\\-54.96373\\-94.8697\\33\\-54.52891\\-94.19276\\33\\-51.65278\\-92.23963\\33\\-51.05748\\-91.63184\\33\\-49.10435\\-90.96746\\33\\-47.15123\\-91.3523\\33\\-45.1981\\-92.04717\\33\\-43.24498\\-93.20078\\33\\-42.28824\\-94.19276\\33\\-41.15542\\-96.14588\\33\\-39.33873\\-97.26893\\33\\-38.45224\\-98.09901\\33\\-36.84622\\-100.0521\\33\\-38.18845\\-103.9584\\33\\-41.29185\\-107.1605\\33\\-44.42476\\-109.8178\\33\\-47.15123\\-112.5329\\33\\-49.10435\\-114.0321\\33\\-51.05748\\-115.0242\\33\\-51.69579\\-115.6771\\33\\-53.14604\\-117.6303\\33\\-53.87373\\-119.5834\\33\\-55.71226\\-121.5365\\33\\-56.91685\\-123.8778\\33\\-57.57314\\-125.4428\\33\\-57.76382\\-127.3959\\33\\-57.05229\\-129.349\\33\\-56.34534\\-133.2553\\33\\-55.84806\\-135.2084\\33\\-56.07088\\-137.1615\\33\\-56.74247\\-139.1146\\33\\-57.57669\\-141.0678\\33\\-58.52345\\-144.974\\33\\-59.68378\\-146.9271\\33\\-60.8231\\-147.7634\\33\\-62.77623\\-148.7408\\33\\-64.72935\\-150.5335\\33\\-66.68247\\-152.6434\\33\\-68.6356\\-154.5965\\33\\-70.85934\\-156.6928\\33\\-72.54185\\-157.4773\\33\\-74.49497\\-158.5064\\33\\-76.5407\\-160.599\\33\\-78.40122\\-163.5857\\33\\-80.56872\\-166.4584\\33\\-82.30747\\-170.1651\\33\\-83.39085\\-172.3178\\33\\-83.50668\\-174.2709\\33\\-84.2606\\-175.9827\\33\\-85.36665\\-178.1771\\33\\-85.48661\\-180.1303\\33\\-86.55177\\-182.0834\\33\\-87.43163\\-184.0365\\33\\-88.53853\\-185.9896\\33\\-89.33524\\-187.9428\\33\\-89.36043\\-189.8959\\33\\-89.63765\\-191.849\\33\\-90.68567\\-193.8021\\33\\-91.18009\\-195.7553\\33\\-91.18484\\-197.7084\\33\\-91.33659\\-201.6146\\33\\-91.33513\\-205.5209\\33\\-92.952\\-207.474\\33\\-94.68243\\-209.4271\\33\\-95.97935\\-210.6466\\33\\-97.93247\\-211.0654\\33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "456"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-53.0106\\-149.6708\\33\\-54.50474\\-148.8803\\33\\-54.96373\\-148.1631\\33\\-55.43457\\-146.9271\\33\\-54.8078\\-144.974\\33\\-51.42147\\-143.0209\\33\\-51.05748\\-142.5326\\33\\-50.37109\\-141.0678\\33\\-49.71542\\-139.1146\\33\\-49.15904\\-137.1615\\33\\-49.92753\\-135.2084\\33\\-50.57212\\-133.2553\\33\\-51.08036\\-131.3021\\33\\-51.19804\\-129.349\\33\\-49.52972\\-125.4428\\33\\-48.77883\\-123.4896\\33\\-46.91522\\-121.5365\\33\\-45.1981\\-120.6166\\33\\-44.04087\\-119.5834\\33\\-42.31067\\-117.6303\\33\\-41.29185\\-116.6884\\33\\-39.33873\\-116.5629\\33\\-37.3856\\-116.1204\\33\\-35.43248\\-115.3425\\33\\-33.47935\\-116.5102\\33\\-31.52623\\-117.2359\\33\\-30.90478\\-117.6303\\33\\-29.62193\\-119.5834\\33\\-30.75311\\-121.5365\\33\\-30.3344\\-123.4896\\33\\-29.3324\\-125.4428\\33\\-28.57422\\-127.3959\\33\\-25.46557\\-131.3021\\33\\-24.50026\\-133.2553\\33\\-24.84634\\-135.2084\\33\\-26.47006\\-137.1615\\33\\-27.61998\\-138.1381\\33\\-29.5731\\-138.5973\\33\\-30.37048\\-139.1146\\33\\-31.52623\\-140.2197\\33\\-32.11574\\-141.0678\\33\\-31.125\\-143.0209\\33\\-31.52623\\-144.2532\\33\\-32.28306\\-144.974\\33\\-33.47935\\-145.293\\33\\-35.43248\\-145.0262\\33\\-37.3856\\-144.9359\\33\\-41.29185\\-145.0262\\33\\-43.24498\\-145.1226\\33\\-45.1981\\-145.6513\\33\\-47.15123\\-146.2888\\33\\-49.10435\\-147.5285\\33\\-51.4542\\-148.8803\\33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "21"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "457"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-17.85435\\-125.6545\\33\\-19.80748\\-124.4554\\33\\-20.6815\\-123.4896\\33\\-20.03932\\-121.5365\\33\\-19.11491\\-119.5834\\33\\-20.51361\\-117.6303\\33\\-20.0893\\-115.6771\\33\\-19.80748\\-115.3814\\33\\-17.85435\\-114.5672\\33\\-15.90123\\-114.5117\\33\\-13.9481\\-112.9645\\33\\-11.99498\\-111.0271\\33\\-9.946788\\-111.7709\\33\\-9.959849\\-113.724\\33\\-10.24129\\-115.6771\\33\\-10.8003\\-117.6303\\33\\-11.99498\\-118.9093\\33\\-13.9481\\-120.6355\\33\\-15.94561\\-121.5365\\33\\-16.85226\\-123.4896\\33\\-17.01342\\-125.4428\\33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "60"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "458"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.088726\\-160.9267\\33\\-10.04185\\-160.1875\\33\\-11.99498\\-159.7657\\33\\-13.9481\\-158.9991\\33\\-16.3379\\-156.6928\\33\\-17.85435\\-155.4656\\33\\-19.80748\\-153.2029\\33\\-21.7606\\-151.1422\\33\\-22.23603\\-150.8334\\33\\-21.7606\\-150.4957\\33\\-17.85435\\-151.3311\\33\\-15.90123\\-151.0328\\33\\-13.9481\\-151.1373\\33\\-11.99498\\-151.0691\\33\\-10.04185\\-150.1684\\33\\-8.088726\\-149.6168\\33\\-6.135601\\-148.0719\\33\\-5.191057\\-146.9271\\33\\-4.337838\\-144.974\\33\\-5.293897\\-143.0209\\33\\-5.190372\\-141.0678\\33\\-4.182476\\-139.629\\33\\-3.656048\\-139.1146\\33\\-3.282644\\-137.1615\\33\\-4.239253\\-135.2084\\33\\-6.135601\\-134.1425\\33\\-8.088726\\-133.8456\\33\\-8.880334\\-133.2553\\33\\-9.758922\\-131.3021\\33\\-8.088726\\-129.9685\\33\\-4.182476\\-130.8753\\33\\-2.229351\\-130.7429\\33\\-0.276226\\-129.8246\\33\\1.676899\\-129.2405\\33\\3.630024\\-130.5118\\33\\4.436973\\-131.3021\\33\\5.744739\\-133.2553\\33\\6.665659\\-135.2084\\33\\7.221461\\-137.1615\\33\\6.706425\\-139.1146\\33\\6.295641\\-141.0678\\33\\7.536274\\-142.5415\\33\\9.489399\\-144.2185\\33\\11.44252\\-145.6938\\33\\13.39565\\-145.9553\\33\\15.47747\\-146.9271\\33\\15.86315\\-148.8803\\33\\15.34877\\-149.415\\33\\12.44381\\-150.8334\\33\\11.44252\\-151.4514\\33\\9.860131\\-152.7865\\33\\7.914582\\-154.7396\\33\\6.844542\\-156.6928\\33\\6.152811\\-158.6459\\33\\4.771381\\-160.599\\33\\3.630024\\-161.6079\\33\\1.676899\\-161.7569\\33\\-0.276226\\-161.7569\\33\\-2.229351\\-161.4559\\33\\-6.135601\\-161.4559\\33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "144"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "459"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "1.676899\\-217.4987\\33\\-0.276226\\-216.3721\\33\\-2.229351\\-215.4229\\33\\-4.182476\\-214.1472\\33\\-6.135601\\-213.0743\\33\\-8.088726\\-213.975\\33\\-10.04185\\-214.4459\\33\\-11.99498\\-213.9366\\33\\-13.9481\\-212.7651\\33\\-15.90123\\-212.4857\\33\\-17.85435\\-211.9719\\33\\-19.80748\\-211.0547\\33\\-21.7606\\-210.7732\\33\\-23.71373\\-210.0985\\33\\-25.66685\\-209.0703\\33\\-27.61998\\-209.0501\\33\\-29.5731\\-208.7511\\33\\-31.52623\\-208.5606\\33\\-33.47935\\-208.5083\\33\\-35.43248\\-208.097\\33\\-37.3856\\-207.097\\33\\-39.33873\\-207.097\\33\\-41.29185\\-206.7537\\33\\-43.24498\\-206.5722\\33\\-45.1981\\-206.1701\\33\\-47.15123\\-204.7812\\33\\-49.10435\\-204.2241\\33\\-51.05748\\-202.929\\33\\-53.0106\\-202.6423\\33\\-54.30294\\-201.6146\\33\\-55.64784\\-199.6615\\33\\-56.08604\\-197.7084\\33\\-56.91685\\-196.2563\\33\\-58.86998\\-197.041\\33\\-60.15567\\-195.7553\\33\\-59.89627\\-193.8021\\33\\-59.25937\\-191.849\\33\\-56.91685\\-188.5768\\33\\-56.36872\\-187.9428\\33\\-55.48568\\-185.9896\\33\\-53.93316\\-184.0365\\33\\-53.10534\\-182.0834\\33\\-51.94308\\-180.1303\\33\\-49.10435\\-176.838\\33\\-47.15123\\-175.0754\\33\\-45.1981\\-173.974\\33\\-43.24498\\-173.1425\\33\\-41.29185\\-172.0924\\33\\-39.33873\\-171.7294\\33\\-35.43248\\-171.7294\\33\\-33.47935\\-172.7996\\33\\-31.52623\\-173.6061\\33\\-29.5731\\-173.9948\\33\\-27.61998\\-175.0344\\33\\-25.66685\\-176.4309\\33\\-23.71373\\-177.178\\33\\-21.7606\\-176.5996\\33\\-19.80748\\-175.4115\\33\\-15.90123\\-175.4115\\33\\-13.9481\\-176.5671\\33\\-11.99498\\-178.4969\\33\\-10.63784\\-180.1303\\33\\-10.04185\\-180.64\\33\\-8.088726\\-181.2312\\33\\-6.135601\\-181.492\\33\\-4.182476\\-182.2461\\33\\-2.229351\\-182.4368\\33\\-0.276226\\-183.1107\\33\\1.676899\\-184.9011\\33\\3.630024\\-185.476\\33\\7.536274\\-188.692\\33\\9.489399\\-189.4429\\33\\11.44252\\-190.6674\\33\\13.39565\\-191.4922\\33\\17.3019\\-195.0861\\33\\18.51986\\-195.7553\\33\\19.25502\\-196.3555\\33\\20.02707\\-197.7084\\33\\21.20815\\-198.9975\\33\\23.16127\\-199.4745\\33\\27.06752\\-199.9395\\33\\29.02065\\-199.8282\\33\\30.97377\\-198.6356\\33\\32.9269\\-197.1607\\33\\34.08895\\-195.7553\\33\\34.18644\\-193.8021\\33\\34.44667\\-191.849\\33\\35.56251\\-189.8959\\33\\36.83315\\-188.287\\33\\39.17016\\-185.9896\\33\\42.69252\\-183.4262\\33\\44.64565\\-183.1689\\33\\46.59877\\-183.3702\\33\\50.50502\\-184.0594\\33\\52.45815\\-184.9532\\33\\54.41127\\-185.3335\\33\\56.3644\\-185.9521\\33\\58.31752\\-187.1236\\33\\61.1302\\-189.8959\\33\\61.80783\\-191.849\\33\\62.98061\\-193.8021\\33\\63.50082\\-195.7553\\33\\65.00533\\-197.7084\\33\\66.13003\\-198.7905\\33\\68.08315\\-199.6386\\33\\70.03628\\-200.9162\\33\\70.71745\\-201.6146\\33\\70.78553\\-203.5678\\33\\70.03628\\-204.079\\33\\68.08315\\-203.3561\\33\\66.13003\\-204.4137\\33\\65.23177\\-205.5209\\33\\64.34706\\-207.474\\33\\62.93349\\-209.4271\\33\\60.27065\\-212.1991\\33\\58.31752\\-212.8804\\33\\56.3644\\-214.0929\\33\\54.41127\\-214.9297\\33\\50.50502\\-214.961\\33\\48.5519\\-214.3048\\33\\46.59877\\-213.0977\\33\\44.64565\\-212.7197\\33\\42.69252\\-212.08\\33\\40.7394\\-210.4348\\33\\37.76471\\-207.474\\33\\36.62145\\-205.5209\\33\\36.20189\\-203.5678\\33\\34.88002\\-202.2459\\33\\32.9269\\-201.9076\\33\\30.97377\\-202.6159\\33\\29.02065\\-204.3186\\33\\27.06752\\-204.6543\\33\\25.1144\\-204.4203\\33\\23.16127\\-203.6625\\33\\21.20815\\-204.1674\\33\\20.01513\\-205.5209\\33\\18.59306\\-207.474\\33\\17.99717\\-209.4271\\33\\16.63051\\-211.3803\\33\\12.74227\\-215.2865\\33\\11.44252\\-216.5411\\33\\9.489399\\-217.7616\\33\\7.536274\\-217.8467\\33\\3.630024\\-217.8394\\33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "460"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "5.583149\\-120.3678\\33\\4.834616\\-119.5834\\33\\3.976546\\-117.6303\\33\\3.630024\\-115.668\\33\\5.583149\\-114.4913\\33\\7.536274\\-114.5154\\33\\9.489399\\-114.6775\\33\\11.39853\\-115.6771\\33\\13.00871\\-117.6303\\33\\11.44252\\-119.6065\\33\\9.489399\\-120.6095\\33\\7.536274\\-121.0228\\33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "461"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "40.7394\\-147.5218\\33\\38.78627\\-146.3032\\33\\36.83315\\-145.6838\\33\\34.88002\\-145.278\\33\\30.97377\\-145.267\\33\\29.02065\\-145.3758\\33\\25.1144\\-145.295\\33\\23.16127\\-145.705\\33\\21.20815\\-145.5086\\33\\19.25502\\-143.6739\\33\\16.64494\\-141.0678\\33\\16.00507\\-139.1146\\33\\15.96467\\-137.1615\\33\\16.01284\\-133.2553\\33\\16.09873\\-131.3021\\33\\17.3019\\-129.1511\\33\\18.01554\\-127.3959\\33\\19.18801\\-125.4428\\33\\21.20815\\-124.4413\\33\\23.16127\\-124.8837\\33\\25.1144\\-124.4662\\33\\26.15774\\-123.4896\\33\\27.06752\\-122.8779\\33\\29.02065\\-122.6374\\33\\30.97377\\-122.5692\\33\\32.9269\\-121.3737\\33\\34.88002\\-120.7257\\33\\40.7394\\-122.7942\\33\\42.69252\\-124.0928\\33\\44.05046\\-125.4428\\33\\45.15993\\-127.3959\\33\\45.82979\\-129.349\\33\\45.66939\\-131.3021\\33\\43.9828\\-133.2553\\33\\44.64565\\-134.7428\\33\\46.08509\\-137.1615\\33\\45.70034\\-139.1146\\33\\45.55439\\-141.0678\\33\\47.42936\\-143.0209\\33\\48.10801\\-144.974\\33\\47.32477\\-146.9271\\33\\46.59877\\-147.5368\\33\\44.64565\\-148.185\\33\\42.69252\\-148.371\\33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002285"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "124"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "462"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "93.47378\\-207.068\\33\\92.6638\\-205.5209\\33\\91.90968\\-203.5678\\33\\91.74827\\-199.6615\\33\\90.77847\\-197.7084\\33\\90.73121\\-195.7553\\33\\90.11892\\-193.8021\\33\\89.01189\\-191.849\\33\\88.77833\\-189.8959\\33\\88.24075\\-187.9428\\33\\87.02303\\-185.9896\\33\\86.80791\\-184.0365\\33\\85.94579\\-182.0834\\33\\84.84574\\-180.1303\\33\\84.33681\\-178.1771\\33\\82.98677\\-176.224\\33\\82.83073\\-174.2709\\33\\80.83676\\-170.3646\\33\\79.95525\\-168.4115\\33\\78.7979\\-166.4584\\33\\77.84878\\-164.5165\\33\\75.89565\\-162.3666\\33\\71.9894\\-158.5023\\33\\70.61201\\-156.6928\\33\\68.08315\\-154.3267\\33\\66.13003\\-153.6321\\33\\64.1769\\-153.3469\\33\\62.22377\\-152.295\\33\\60.27065\\-151.4068\\33\\58.31752\\-150.3225\\33\\56.3644\\-149.6783\\33\\54.41127\\-149.3976\\33\\52.45815\\-148.3768\\33\\50.97153\\-146.9271\\33\\50.50502\\-145.7827\\33\\49.69631\\-144.974\\33\\50.09639\\-143.0209\\33\\49.84199\\-141.0678\\33\\48.5519\\-138.1241\\33\\47.70961\\-137.1615\\33\\48.5519\\-136.6802\\33\\49.59258\\-135.2084\\33\\50.1083\\-133.2553\\33\\50.09863\\-127.3959\\33\\49.80673\\-125.4428\\33\\48.5519\\-124.252\\33\\45.26539\\-121.5365\\33\\43.42763\\-119.5834\\33\\43.59573\\-117.6303\\33\\43.23312\\-115.6771\\33\\42.25784\\-113.724\\33\\42.25784\\-111.7709\\33\\43.84755\\-109.8178\\33\\46.59877\\-107.0315\\33\\50.50502\\-103.3129\\33\\52.45815\\-102.2215\\33\\54.41127\\-102.9194\\33\\57.01718\\-105.9115\\33\\58.92385\\-107.8646\\33\\59.98882\\-109.8178\\33\\60.10789\\-111.7709\\33\\60.36539\\-113.724\\33\\61.26724\\-115.6771\\33\\63.22906\\-117.6303\\33\\63.68005\\-119.5834\\33\\64.97066\\-121.5365\\33\\65.5759\\-123.4896\\33\\66.85982\\-125.4428\\33\\67.54493\\-127.3959\\33\\68.77488\\-129.349\\33\\70.03628\\-130.8005\\33\\71.9894\\-132.0374\\33\\73.1474\\-133.2553\\33\\72.76969\\-135.2084\\33\\73.86115\\-137.1615\\33\\75.19883\\-139.1146\\33\\76.40096\\-141.0678\\33\\77.14178\\-143.0209\\33\\78.1953\\-144.974\\33\\78.82008\\-146.9271\\33\\79.7571\\-148.8803\\33\\79.24687\\-150.8334\\33\\77.30282\\-152.7865\\33\\76.41232\\-154.7396\\33\\76.93081\\-156.6928\\33\\77.84878\\-157.7602\\33\\79.8019\\-159.5268\\33\\80.62527\\-158.6459\\33\\81.75503\\-157.7013\\33\\83.70815\\-158.7754\\33\\84.72935\\-160.599\\33\\83.70815\\-162.6917\\33\\83.44729\\-164.5053\\33\\83.70815\\-164.7793\\33\\85.66128\\-164.6244\\33\\87.6144\\-162.8072\\33\\89.5754\\-162.5521\\33\\91.52065\\-163.7766\\33\\92.31818\\-164.5053\\33\\94.02547\\-166.4584\\33\\95.59578\\-168.4115\\33\\96.72356\\-170.3646\\33\\97.96145\\-172.3178\\33\\98.6356\\-174.2709\\33\\99.89199\\-176.224\\33\\100.2843\\-178.1771\\33\\100.2929\\-182.0834\\33\\100.03\\-184.0365\\33\\99.33315\\-184.7757\\33\\97.27486\\-185.9896\\33\\97.43515\\-187.9428\\33\\98.08286\\-189.8959\\33\\96.33044\\-191.849\\33\\97.38003\\-192.7927\\33\\99.33315\\-193.0011\\33\\99.97004\\-193.8021\\33\\101.8112\\-195.7553\\33\\102.2387\\-197.7084\\33\\102.2375\\-201.6146\\33\\101.8307\\-203.5678\\33\\100.5439\\-205.5209\\33\\99.33315\\-206.7255\\33\\97.38003\\-206.9439\\33\\95.44724\\-207.474\\33"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "126"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "463"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-99.8856\\-212.4602\\35\\-101.8387\\-211.3717\\35\\-102.8603\\-209.4271\\35\\-102.9863\\-207.474\\35\\-103.2456\\-205.5209\\35\\-103.2536\\-203.5678\\35\\-103.1114\\-201.6146\\35\\-104.3006\\-199.6615\\35\\-104.8734\\-197.7084\\35\\-104.8905\\-189.8959\\35\\-105.0066\\-187.9428\\35\\-105.0007\\-185.9896\\35\\-104.8865\\-184.0365\\35\\-104.8825\\-182.0834\\35\\-104.441\\-180.1303\\35\\-103.1704\\-178.1771\\35\\-102.543\\-176.224\\35\\-101.0872\\-174.2709\\35\\-100.5276\\-172.3178\\35\\-98.8046\\-170.3646\\35\\-97.21804\\-168.4115\\35\\-96.30487\\-166.4584\\35\\-94.02622\\-163.5779\\35\\-92.12569\\-160.599\\35\\-90.11997\\-159.1921\\35\\-89.52319\\-158.6459\\35\\-88.0029\\-156.6928\\35\\-86.80685\\-154.7396\\35\\-85.19493\\-152.7865\\35\\-85.35802\\-150.8334\\35\\-85.08215\\-148.8803\\35\\-83.80762\\-146.9271\\35\\-83.46917\\-144.974\\35\\-82.92117\\-143.0209\\35\\-81.73782\\-141.0678\\35\\-81.22581\\-139.1146\\35\\-79.94795\\-137.1615\\35\\-79.19109\\-135.2084\\35\\-78.1194\\-133.2553\\35\\-76.4481\\-129.7111\\35\\-75.20842\\-127.3959\\35\\-74.49497\\-125.7759\\35\\-73.24798\\-123.4896\\35\\-72.43334\\-121.5365\\35\\-72.38026\\-119.5834\\35\\-71.2346\\-117.6303\\35\\-69.63733\\-113.724\\35\\-68.65831\\-111.7709\\35\\-68.29951\\-109.8178\\35\\-66.28574\\-105.9115\\35\\-66.28574\\-103.9584\\35\\-66.16879\\-102.0053\\35\\-65.09129\\-100.0521\\35\\-64.72935\\-99.68243\\35\\-62.59403\\-98.09901\\35\\-60.8231\\-97.13435\\35\\-59.52276\\-96.14588\\35\\-58.86998\\-95.49657\\35\\-56.91685\\-94.993\\35\\-54.96373\\-93.54353\\35\\-53.0106\\-93.05045\\35\\-51.05748\\-91.66899\\35\\-49.10435\\-91.00684\\35\\-45.1981\\-91.14387\\35\\-43.62109\\-92.23963\\35\\-43.24498\\-92.64594\\35\\-42.32361\\-94.19276\\35\\-40.48257\\-96.14588\\35\\-38.88574\\-98.09901\\35\\-38.47017\\-100.0521\\35\\-38.46027\\-102.0053\\35\\-38.55466\\-103.9584\\35\\-40.07115\\-105.9115\\35\\-41.29185\\-107.2261\\35\\-47.90376\\-113.724\\35\\-49.10435\\-114.7006\\35\\-51.05748\\-116.1025\\35\\-53.0106\\-117.1035\\35\\-53.51591\\-117.6303\\35\\-55.01591\\-119.5834\\35\\-56.23273\\-121.5365\\35\\-57.61521\\-123.4896\\35\\-58.17243\\-125.4428\\35\\-58.20343\\-127.3959\\35\\-57.79062\\-129.349\\35\\-57.13309\\-131.3021\\35\\-56.98344\\-133.2553\\35\\-56.63503\\-135.2084\\35\\-56.85027\\-137.1615\\35\\-57.64676\\-139.1146\\35\\-58.16299\\-141.0678\\35\\-58.80339\\-143.0209\\35\\-58.98333\\-144.974\\35\\-60.8231\\-146.2228\\35\\-62.77623\\-146.7833\\35\\-64.72935\\-148.6716\\35\\-68.6356\\-152.5465\\35\\-72.54185\\-154.7649\\35\\-74.49497\\-156.4937\\35\\-76.4481\\-158.3234\\35\\-78.40122\\-160.3006\\35\\-80.5116\\-162.5521\\35\\-81.39562\\-164.5053\\35\\-82.55767\\-166.4584\\35\\-83.48478\\-168.4115\\35\\-83.6833\\-170.3646\\35\\-84.82915\\-172.3178\\35\\-85.4612\\-174.2709\\35\\-85.70004\\-176.224\\35\\-86.80098\\-178.1771\\35\\-87.43443\\-180.1303\\35\\-88.53494\\-182.0834\\35\\-89.38604\\-184.0365\\35\\-90.50387\\-185.9896\\35\\-91.25164\\-187.9428\\35\\-91.35812\\-191.849\\35\\-91.62099\\-193.8021\\35\\-91.99233\\-195.7553\\35\\-92.00652\\-197.7084\\35\\-92.67088\\-199.6615\\35\\-93.19476\\-201.6146\\35\\-93.28799\\-205.5209\\35\\-93.6545\\-207.474\\35\\-94.96928\\-209.4271\\35\\-96.55918\\-211.3803\\35\\-97.93247\\-212.4574\\35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "464"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-16.06156\\-125.4428\\35\\-16.57899\\-123.4896\\35\\-17.63136\\-121.5365\\35\\-18.9524\\-119.5834\\35\\-19.55933\\-117.6303\\35\\-17.85435\\-115.4227\\35\\-15.90123\\-114.7987\\35\\-14.57286\\-113.724\\35\\-12.68019\\-111.7709\\35\\-11.99498\\-110.683\\35\\-11.17983\\-109.8178\\35\\-10.04185\\-108.9518\\35\\-8.298872\\-109.8178\\35\\-7.571723\\-111.7709\\35\\-8.088726\\-112.3013\\35\\-9.037227\\-113.724\\35\\-9.904408\\-115.6771\\35\\-10.39867\\-117.6303\\35\\-11.21479\\-119.5834\\35\\-13.23312\\-121.5365\\35\\-13.9481\\-122.4534\\35\\-15.11829\\-123.4896\\35\\-15.79988\\-125.4428\\35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "141"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "465"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.276226\\-215.4362\\35\\-2.229351\\-214.4122\\35\\-4.182476\\-213.509\\35\\-6.135601\\-213.9227\\35\\-8.088726\\-214.6443\\35\\-10.04185\\-214.9095\\35\\-11.99498\\-214.6515\\35\\-13.9481\\-213.8955\\35\\-15.90123\\-212.8714\\35\\-19.80748\\-212.5097\\35\\-21.7606\\-211.9504\\35\\-23.71373\\-210.7042\\35\\-25.66685\\-210.5626\\35\\-27.61998\\-210.5412\\35\\-29.5731\\-210.0491\\35\\-31.52623\\-208.9742\\35\\-35.43248\\-208.6829\\35\\-39.33873\\-208.5869\\35\\-41.29185\\-208.1799\\35\\-43.24498\\-207.0486\\35\\-45.1981\\-206.6955\\35\\-47.15123\\-206.2297\\35\\-49.10435\\-204.8184\\35\\-51.05748\\-204.5787\\35\\-53.0106\\-204.1009\\35\\-55.57801\\-201.6146\\35\\-56.19069\\-199.6615\\35\\-56.91685\\-198.6428\\35\\-58.86998\\-198.5814\\35\\-60.22038\\-197.7084\\35\\-59.93975\\-195.7553\\35\\-59.2494\\-193.8021\\35\\-55.8561\\-189.8959\\35\\-55.47741\\-187.9428\\35\\-54.82628\\-185.9896\\35\\-53.0106\\-182.3204\\35\\-51.80178\\-180.1303\\35\\-47.15123\\-175.4394\\35\\-45.1981\\-174.647\\35\\-43.24498\\-174.0335\\35\\-41.29185\\-173.6686\\35\\-35.43248\\-173.7137\\35\\-33.47935\\-174.0562\\35\\-31.52623\\-175.0789\\35\\-29.5731\\-175.6528\\35\\-27.61998\\-176.8014\\35\\-25.66685\\-178.6556\\35\\-23.71373\\-179.4399\\35\\-21.7606\\-179.4732\\35\\-19.80748\\-179.2718\\35\\-17.85435\\-180.3847\\35\\-15.90123\\-180.8483\\35\\-10.04185\\-181.5278\\35\\-8.088726\\-182.1648\\35\\-6.135601\\-182.3614\\35\\-4.182476\\-182.9816\\35\\-0.276226\\-183.5808\\35\\0.1908256\\-184.0365\\35\\1.676899\\-185.0768\\35\\3.630024\\-186.752\\35\\5.583149\\-187.4632\\35\\8.580186\\-189.8959\\35\\9.489399\\-190.6998\\35\\11.44252\\-191.5235\\35\\13.39565\\-193.0055\\35\\13.94943\\-193.8021\\35\\14.907\\-195.7553\\35\\17.3019\\-197.9144\\35\\19.25502\\-199.027\\35\\21.20815\\-199.77\\35\\23.16127\\-199.9671\\35\\25.1144\\-200.6158\\35\\27.06752\\-201.7901\\35\\29.02065\\-201.6721\\35\\31.2971\\-199.6615\\35\\33.6487\\-197.7084\\35\\35.52545\\-195.7553\\35\\35.98328\\-193.8021\\35\\36.0116\\-191.849\\35\\36.3244\\-189.8959\\35\\37.83625\\-187.9428\\35\\38.78627\\-187.0417\\35\\40.7394\\-185.4123\\35\\42.69252\\-184.8617\\35\\44.64565\\-184.0601\\35\\48.5519\\-184.2807\\35\\50.50502\\-184.9575\\35\\54.41127\\-185.7421\\35\\56.3644\\-186.7913\\35\\58.31752\\-187.3072\\35\\60.27065\\-189.0363\\35\\61.1302\\-189.8959\\35\\61.99998\\-191.849\\35\\63.24991\\-193.8021\\35\\64.96164\\-195.7553\\35\\66.55727\\-197.7084\\35\\68.08315\\-198.8771\\35\\70.03628\\-200.1997\\35\\71.9894\\-201.3509\\35\\72.24749\\-201.6146\\35\\72.9227\\-203.5678\\35\\71.9894\\-204.3125\\35\\70.03628\\-204.0731\\35\\68.08315\\-203.545\\35\\66.13003\\-205.096\\35\\65.7732\\-205.5209\\35\\65.45394\\-207.474\\35\\64.37665\\-209.4271\\35\\62.22377\\-211.6079\\35\\60.27065\\-212.7698\\35\\58.31752\\-213.198\\35\\56.3644\\-214.2066\\35\\54.41127\\-214.9825\\35\\50.50502\\-215.0047\\35\\48.5519\\-214.715\\35\\46.59877\\-214.0041\\35\\44.64565\\-212.908\\35\\42.69252\\-212.3387\\35\\40.7394\\-210.4764\\35\\37.76939\\-207.474\\35\\36.82552\\-205.5209\\35\\36.72464\\-203.5678\\35\\34.88002\\-201.6954\\35\\32.9269\\-202.3638\\35\\30.97377\\-203.9151\\35\\29.02065\\-204.6736\\35\\27.06752\\-206.0179\\35\\25.1144\\-205.8871\\35\\23.16127\\-204.4467\\35\\21.20815\\-203.6898\\35\\19.25502\\-204.1479\\35\\17.95837\\-205.5209\\35\\17.3019\\-206.5951\\35\\16.58041\\-207.474\\35\\15.96406\\-209.4271\\35\\14.64925\\-211.3803\\35\\10.74195\\-215.2865\\35\\9.489399\\-216.3154\\35\\7.536274\\-216.9026\\35\\3.630024\\-216.9026\\35\\1.676899\\-216.3486\\35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "151"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "466"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "1.676899\\-162.5897\\35\\-0.276226\\-162.3905\\35\\-2.229351\\-161.8619\\35\\-6.135601\\-161.9418\\35\\-10.04185\\-160.903\\35\\-11.99498\\-160.786\\35\\-13.9481\\-160.2071\\35\\-15.90123\\-159.2635\\35\\-17.85435\\-157.9254\\35\\-18.96506\\-156.6928\\35\\-20.472\\-154.7396\\35\\-22.4095\\-152.7865\\35\\-24.66122\\-150.8334\\35\\-27.61998\\-147.6057\\35\\-29.5731\\-146.3699\\35\\-31.52623\\-146.2007\\35\\-33.47935\\-145.7739\\35\\-35.43248\\-144.3247\\35\\-37.3856\\-143.9658\\35\\-43.24498\\-143.9658\\35\\-45.1981\\-144.3506\\35\\-47.15123\\-145.5427\\35\\-49.10435\\-146.258\\35\\-51.05748\\-147.4452\\35\\-53.0106\\-148.248\\35\\-54.85038\\-146.9271\\35\\-54.86607\\-144.974\\35\\-52.01866\\-143.0209\\35\\-51.17192\\-141.0678\\35\\-50.61358\\-139.1146\\35\\-50.42762\\-137.1615\\35\\-51.21284\\-133.2553\\35\\-51.88623\\-131.3021\\35\\-52.09352\\-129.349\\35\\-51.05748\\-128.0654\\35\\-50.3284\\-127.3959\\35\\-48.95872\\-125.4428\\35\\-48.53215\\-123.4896\\35\\-46.26694\\-121.5365\\35\\-45.1981\\-120.8221\\35\\-43.24498\\-118.8993\\35\\-41.29185\\-117.9493\\35\\-39.33873\\-117.1969\\35\\-35.43248\\-117.296\\35\\-33.47935\\-118.7076\\35\\-32.72352\\-119.5834\\35\\-32.26904\\-121.5365\\35\\-29.5731\\-124.6654\\35\\-26.37505\\-127.3959\\35\\-25.38263\\-129.349\\35\\-24.1959\\-131.3021\\35\\-23.42007\\-133.2553\\35\\-23.85117\\-135.2084\\35\\-24.77628\\-137.1615\\35\\-26.82767\\-139.1146\\35\\-27.61998\\-139.9658\\35\\-29.00206\\-141.0678\\35\\-28.71946\\-143.0209\\35\\-25.66685\\-145.4801\\35\\-23.71373\\-146.5003\\35\\-21.7606\\-148.2313\\35\\-19.80748\\-149.38\\35\\-17.85435\\-149.6112\\35\\-15.90123\\-149.5983\\35\\-13.9481\\-150.0993\\35\\-11.99498\\-150.0638\\35\\-10.04185\\-148.547\\35\\-8.088726\\-147.6743\\35\\-6.796815\\-146.9271\\35\\-6.135601\\-146.1337\\35\\-5.605467\\-144.974\\35\\-5.826835\\-143.0209\\35\\-4.182476\\-141.85\\35\\-2.229351\\-141.3933\\35\\-1.921308\\-141.0678\\35\\-1.125197\\-139.1146\\35\\-1.095841\\-135.2084\\35\\-1.215228\\-133.2553\\35\\-0.5638437\\-131.3021\\35\\-0.276226\\-130.9956\\35\\1.676899\\-129.9763\\35\\3.630024\\-130.6981\\35\\4.252001\\-131.3021\\35\\5.221694\\-133.2553\\35\\6.479583\\-135.2084\\35\\7.536274\\-137.0816\\35\\7.536274\\-137.4646\\35\\6.831269\\-141.0678\\35\\7.536274\\-142.2885\\35\\8.224113\\-143.0209\\35\\9.489399\\-143.9081\\35\\11.44252\\-145.0406\\35\\13.39565\\-145.1484\\35\\15.34877\\-145.9445\\35\\17.3019\\-147.5569\\35\\18.94179\\-146.9271\\35\\19.25502\\-146.3547\\35\\19.52556\\-144.974\\35\\17.3019\\-142.8988\\35\\15.61931\\-141.0678\\35\\12.34933\\-137.1615\\35\\13.45078\\-135.2084\\35\\14.73993\\-131.3021\\35\\15.87073\\-129.349\\35\\16.20606\\-125.4428\\35\\17.3019\\-124.5045\\35\\19.25502\\-123.3233\\35\\21.20815\\-122.5933\\35\\23.16127\\-122.6766\\35\\27.06752\\-122.2191\\35\\30.97377\\-122.206\\35\\32.9269\\-120.87\\35\\34.88002\\-120.8872\\35\\36.83315\\-122.1312\\35\\38.78627\\-122.312\\35\\40.65726\\-123.4896\\35\\42.69252\\-124.9631\\35\\44.64565\\-126.6649\\35\\45.34856\\-127.3959\\35\\46.06055\\-129.349\\35\\45.74853\\-131.3021\\35\\44.38656\\-133.2553\\35\\45.4052\\-135.2084\\35\\46.16409\\-137.1615\\35\\45.75094\\-139.1146\\35\\45.77328\\-141.0678\\35\\47.94632\\-143.0209\\35\\48.20538\\-144.974\\35\\46.59877\\-147.0626\\35\\44.64565\\-147.5335\\35\\42.69252\\-147.587\\35\\40.7394\\-146.3865\\35\\36.83315\\-145.2097\\35\\34.88002\\-144.9967\\35\\30.97377\\-145.267\\35\\29.02065\\-145.8605\\35\\27.06752\\-146.3057\\35\\25.1144\\-146.4135\\35\\23.16127\\-146.7785\\35\\21.20815\\-147.6817\\35\\19.51484\\-148.8803\\35\\17.3019\\-151.1037\\35\\15.34877\\-152.2423\\35\\13.39565\\-153.1527\\35\\11.44252\\-154.9995\\35\\9.823486\\-156.6928\\35\\8.745027\\-158.6459\\35\\7.893553\\-160.599\\35\\7.536274\\-160.9245\\35\\5.583149\\-162.0064\\35\\3.630024\\-162.5897\\35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "467"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "7.536274\\-122.465\\35\\5.583149\\-120.6591\\35\\4.592896\\-119.5834\\35\\3.622395\\-117.6303\\35\\3.2308\\-115.6771\\35\\3.630024\\-114.2345\\35\\7.536274\\-114.7577\\35\\9.489399\\-115.3782\\35\\11.44252\\-116.2776\\35\\13.057\\-117.6303\\35\\12.37818\\-119.5834\\35\\9.489399\\-122.2797\\35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "66"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "468"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "71.9894\\-155.5356\\35\\68.08315\\-153.3092\\35\\66.13003\\-152.3175\\35\\64.1769\\-151.6379\\35\\62.42873\\-150.8334\\35\\60.27065\\-149.6392\\35\\58.56826\\-148.8803\\35\\56.3644\\-147.7331\\35\\54.41127\\-147.6867\\35\\52.45815\\-147.4476\\35\\51.77913\\-146.9271\\35\\50.50502\\-145.4171\\35\\49.5848\\-144.974\\35\\49.7837\\-143.0209\\35\\50.13568\\-141.0678\\35\\49.29897\\-139.1146\\35\\48.5519\\-137.7312\\35\\47.64714\\-137.1615\\35\\48.5519\\-136.7221\\35\\49.63309\\-135.2084\\35\\50.20106\\-133.2553\\35\\50.20106\\-131.3021\\35\\50.36959\\-129.349\\35\\50.30558\\-127.3959\\35\\50.1083\\-125.4428\\35\\49.05946\\-123.4896\\35\\48.5519\\-123.0134\\35\\46.59877\\-121.6342\\35\\44.63802\\-119.5834\\35\\44.03136\\-117.6303\\35\\43.85619\\-115.6771\\35\\43.24008\\-113.724\\35\\42.367\\-111.7709\\35\\42.69252\\-111.425\\35\\44.64565\\-108.6762\\35\\45.30563\\-107.8646\\35\\46.59877\\-105.8301\\35\\48.5519\\-104.7539\\35\\50.50502\\-104.0531\\35\\52.45815\\-103.0711\\35\\54.41127\\-103.5195\\35\\58.91641\\-107.8646\\35\\59.92413\\-109.8178\\35\\58.98731\\-113.724\\35\\60.09653\\-115.6771\\35\\62.22377\\-116.8057\\35\\63.04832\\-117.6303\\35\\63.67159\\-119.5834\\35\\64.97066\\-121.5365\\35\\65.5759\\-123.4896\\35\\66.85982\\-125.4428\\35\\67.54493\\-127.3959\\35\\68.90154\\-129.349\\35\\71.37978\\-131.3021\\35\\72.34622\\-133.2553\\35\\72.68158\\-135.2084\\35\\74.56992\\-137.1615\\35\\75.89565\\-139.38\\35\\76.66815\\-141.0678\\35\\77.38403\\-143.0209\\35\\76.62257\\-146.9271\\35\\77.2179\\-148.8803\\35\\77.07389\\-150.8334\\35\\75.89565\\-151.6363\\35\\74.6124\\-152.7865\\35\\73.69839\\-154.7396\\35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "469"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "91.52065\\-193.2114\\35\\90.84364\\-191.849\\35\\90.7975\\-189.8959\\35\\90.58906\\-187.9428\\35\\87.6144\\-181.6506\\35\\84.92509\\-176.224\\35\\84.77486\\-174.2709\\35\\83.83887\\-172.3178\\35\\82.80201\\-170.3646\\35\\81.9239\\-168.4115\\35\\80.91002\\-166.4584\\35\\80.08796\\-164.5053\\35\\78.94665\\-162.5521\\35\\79.8019\\-161.6522\\35\\81.75503\\-161.8279\\35\\82.26329\\-162.5521\\35\\82.65198\\-164.5053\\35\\83.70815\\-165.507\\35\\85.66128\\-165.8159\\35\\87.6144\\-163.9444\\35\\89.56753\\-163.6143\\35\\91.52065\\-163.5874\\35\\93.47378\\-164.2985\\35\\95.58226\\-166.4584\\35\\96.69163\\-168.4115\\35\\98.02905\\-170.3646\\35\\98.74044\\-172.3178\\35\\99.96055\\-174.2709\\35\\100.5354\\-176.224\\35\\100.9092\\-178.1771\\35\\100.9092\\-182.0834\\35\\100.5439\\-184.0365\\35\\99.33315\\-185.2597\\35\\97.38003\\-185.7779\\35\\95.4269\\-187.0185\\35\\94.49152\\-187.9428\\35\\93.90005\\-189.8959\\35\\93.9211\\-191.849\\35\\93.47378\\-193.2357\\35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002284"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "470"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "99.33315\\-208.2202\\35\\97.38003\\-206.9798\\35\\95.4269\\-206.3255\\35\\94.66085\\-205.5209\\35\\94.54931\\-203.5678\\35\\93.99693\\-201.6146\\35\\92.97672\\-199.6615\\35\\92.73984\\-197.7084\\35\\93.47378\\-195.468\\35\\95.4269\\-194.999\\35\\99.33315\\-195.1062\\35\\101.2863\\-196.6301\\35\\102.0665\\-197.7084\\35\\102.3276\\-199.6615\\35\\102.3742\\-201.6146\\35\\102.2223\\-205.5209\\35\\101.2863\\-207.56\\35"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "115"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "471"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-101.8387\\-212.5492\\37\\-102.8813\\-211.3803\\37\\-103.0462\\-209.4271\\37\\-103.0986\\-207.474\\37\\-103.9139\\-205.5209\\37\\-104.005\\-203.5678\\37\\-102.5001\\-201.6146\\37\\-103.8001\\-199.6615\\37\\-104.9026\\-197.7084\\37\\-105.4302\\-191.849\\37\\-105.4975\\-185.9896\\37\\-105.441\\-182.0834\\37\\-104.9423\\-178.1771\\37\\-103.9546\\-176.224\\37\\-101.1051\\-172.3178\\37\\-100.2156\\-170.3646\\37\\-97.93247\\-167.56\\37\\-97.20776\\-166.4584\\37\\-96.21288\\-164.5053\\37\\-94.64996\\-162.5521\\37\\-92.0731\\-159.831\\37\\-90.11997\\-159.1427\\37\\-88.16685\\-157.6806\\37\\-86.21372\\-155.6071\\37\\-85.26846\\-154.7396\\37\\-83.5024\\-152.7865\\37\\-84.6557\\-150.8334\\37\\-85.18607\\-148.8803\\37\\-84.4753\\-146.9271\\37\\-83.66171\\-144.974\\37\\-83.20998\\-143.0209\\37\\-81.97139\\-141.0678\\37\\-81.25348\\-139.1146\\37\\-79.95762\\-137.1615\\37\\-79.19109\\-135.2084\\37\\-78.1194\\-133.2553\\37\\-76.4481\\-129.4064\\37\\-75.20842\\-127.3959\\37\\-74.49497\\-125.7759\\37\\-73.24798\\-123.4896\\37\\-72.41978\\-121.5365\\37\\-72.17803\\-119.5834\\37\\-71.16157\\-117.6303\\37\\-70.40173\\-115.6771\\37\\-68.21885\\-111.7709\\37\\-68.08182\\-109.8178\\37\\-66.29554\\-105.9115\\37\\-66.53387\\-103.9584\\37\\-66.3895\\-102.0053\\37\\-65.94879\\-100.0521\\37\\-64.35825\\-98.09901\\37\\-62.77623\\-97.13826\\37\\-60.8231\\-97.07842\\37\\-58.86998\\-95.40858\\37\\-56.91685\\-94.04307\\37\\-54.96373\\-93.12862\\37\\-53.0106\\-92.94138\\37\\-51.05748\\-91.54287\\37\\-49.10435\\-91.00684\\37\\-45.1981\\-91.07436\\37\\-43.3568\\-92.23963\\37\\-42.41513\\-94.19276\\37\\-40.50967\\-96.14588\\37\\-39.54102\\-98.09901\\37\\-38.9922\\-100.0521\\37\\-39.02391\\-103.9584\\37\\-40.09556\\-105.9115\\37\\-41.29185\\-107.3025\\37\\-43.24498\\-109.3054\\37\\-45.1981\\-111.1293\\37\\-47.82333\\-113.724\\37\\-49.10435\\-114.8408\\37\\-51.05748\\-116.3057\\37\\-53.0106\\-116.9224\\37\\-55.65336\\-119.5834\\37\\-57.48698\\-121.5365\\37\\-58.86998\\-123.6064\\37\\-59.69814\\-125.4428\\37\\-58.40241\\-129.349\\37\\-58.00449\\-131.3021\\37\\-57.75587\\-133.2553\\37\\-56.91685\\-135.0976\\37\\-58.14641\\-139.1146\\37\\-59.37305\\-141.0678\\37\\-60.14262\\-143.0209\\37\\-60.8231\\-144.3965\\37\\-61.54892\\-144.974\\37\\-62.77623\\-145.5244\\37\\-64.72935\\-146.6727\\37\\-68.6356\\-150.4707\\37\\-69.16457\\-150.8334\\37\\-72.54185\\-152.4736\\37\\-74.49497\\-153.5869\\37\\-76.4481\\-154.8617\\37\\-78.40122\\-156.7863\\37\\-80.35435\\-160.1561\\37\\-82.50111\\-162.5521\\37\\-84.54783\\-166.4584\\37\\-85.48277\\-168.4115\\37\\-85.56085\\-170.3646\\37\\-87.44825\\-174.2709\\37\\-87.53738\\-176.224\\37\\-91.35779\\-184.0365\\37\\-91.71165\\-185.9896\\37\\-92.793\\-187.9428\\37\\-93.29534\\-189.8959\\37\\-93.38517\\-197.7084\\37\\-93.62447\\-199.6615\\37\\-94.72108\\-201.6146\\37\\-95.25442\\-203.5678\\37\\-95.28016\\-207.474\\37\\-95.6283\\-209.4271\\37\\-96.81016\\-211.3803\\37\\-97.93247\\-212.4915\\37\\-99.8856\\-212.8625\\37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "472"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-15.90123\\-124.4128\\37\\-16.75449\\-123.4896\\37\\-17.46741\\-121.5365\\37\\-18.37102\\-119.5834\\37\\-17.49184\\-117.6303\\37\\-15.90123\\-116.4507\\37\\-13.12664\\-113.724\\37\\-12.372\\-111.7709\\37\\-11.97227\\-109.8178\\37\\-10.2416\\-107.8646\\37\\-7.903179\\-105.9115\\37\\-6.135601\\-104.2749\\37\\-4.182476\\-104.6441\\37\\-2.915023\\-105.9115\\37\\-2.229351\\-106.8067\\37\\-0.276226\\-108.7598\\37\\0.4854928\\-109.8178\\37\\1.676899\\-110.3693\\37\\2.628894\\-111.7709\\37\\4.336596\\-113.724\\37\\5.583149\\-114.8335\\37\\7.021835\\-115.6771\\37\\7.536274\\-116.1136\\37\\9.489399\\-116.8865\\37\\10.67393\\-117.6303\\37\\11.57796\\-119.5834\\37\\10.87567\\-121.5365\\37\\9.634433\\-123.4896\\37\\9.299159\\-123.4896\\37\\7.536274\\-122.7519\\37\\6.41811\\-121.5365\\37\\4.797249\\-119.5834\\37\\3.983385\\-117.6303\\37\\2.532024\\-115.6771\\37\\0.7249041\\-113.724\\37\\-0.276226\\-112.0659\\37\\-2.229351\\-110.1057\\37\\-4.182476\\-110.1229\\37\\-5.196599\\-111.7709\\37\\-6.135601\\-112.5687\\37\\-8.088726\\-114.4564\\37\\-9.159955\\-115.6771\\37\\-10.13659\\-117.6303\\37\\-10.85801\\-119.5834\\37\\-12.73115\\-121.5365\\37\\-13.9481\\-123.0105\\37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "206"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "473"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-10.04185\\-160.5326\\37\\-11.99498\\-160.5333\\37\\-13.9481\\-160.4134\\37\\-15.90123\\-159.5292\\37\\-17.85435\\-158.9277\\37\\-19.80748\\-157.5743\\37\\-20.63532\\-156.6928\\37\\-21.34466\\-154.7396\\37\\-21.7606\\-154.2684\\37\\-23.82509\\-152.7865\\37\\-25.66685\\-150.4617\\37\\-27.61998\\-148.7317\\37\\-29.5731\\-147.7242\\37\\-31.52623\\-146.2137\\37\\-33.47935\\-145.5654\\37\\-35.43248\\-144.1201\\37\\-37.3856\\-143.3777\\37\\-39.33873\\-143.3777\\37\\-41.29185\\-143.5262\\37\\-43.24498\\-143.5262\\37\\-45.1981\\-143.7934\\37\\-47.15123\\-143.8468\\37\\-49.10435\\-144.7077\\37\\-51.05748\\-145.7995\\37\\-53.0106\\-146.5764\\37\\-54.89109\\-144.974\\37\\-53.78741\\-143.0209\\37\\-52.45701\\-141.0678\\37\\-52.25105\\-137.1615\\37\\-52.21548\\-135.2084\\37\\-52.33496\\-133.2553\\37\\-52.74974\\-131.3021\\37\\-52.1363\\-129.349\\37\\-51.05748\\-128.3136\\37\\-49.28449\\-127.3959\\37\\-47.15123\\-125.8851\\37\\-46.27398\\-125.4428\\37\\-45.27948\\-123.4896\\37\\-45.07603\\-121.5365\\37\\-42.98275\\-119.5834\\37\\-41.29185\\-118.7379\\37\\-39.33873\\-118.4247\\37\\-37.3856\\-118.7839\\37\\-35.43248\\-119.2665\\37\\-33.47935\\-120.6355\\37\\-31.52623\\-122.3321\\37\\-29.5731\\-123.1918\\37\\-27.61998\\-124.2949\\37\\-25.66685\\-124.3848\\37\\-23.71373\\-125.065\\37\\-23.17987\\-125.4428\\37\\-23.43052\\-127.3959\\37\\-23.99178\\-129.349\\37\\-22.96943\\-131.3021\\37\\-22.42819\\-133.2553\\37\\-22.32976\\-135.2084\\37\\-22.43042\\-137.1615\\37\\-23.71373\\-138.5813\\37\\-24.42312\\-139.1146\\37\\-25.66685\\-140.3241\\37\\-26.22202\\-141.0678\\37\\-25.72682\\-143.0209\\37\\-23.71373\\-144.5609\\37\\-21.7606\\-146.4304\\37\\-19.80748\\-147.6046\\37\\-13.9481\\-147.7231\\37\\-11.99498\\-147.6612\\37\\-10.68084\\-146.9271\\37\\-8.299575\\-144.974\\37\\-8.7902\\-141.0678\\37\\-8.088726\\-139.5114\\37\\-6.135601\\-140.5879\\37\\-5.600369\\-141.0678\\37\\-4.182476\\-141.887\\37\\-2.229351\\-141.8309\\37\\-1.509514\\-141.0678\\37\\-0.6630462\\-139.1146\\37\\-0.1677191\\-137.1615\\37\\0.7167954\\-135.2084\\37\\1.064478\\-133.2553\\37\\1.676899\\-132.1603\\37\\3.630024\\-132.3622\\37\\5.583149\\-134.426\\37\\7.536274\\-135.9813\\37\\9.489399\\-136.4172\\37\\11.44252\\-135.1375\\37\\12.86569\\-133.2553\\37\\13.94977\\-131.3021\\37\\14.64317\\-129.349\\37\\14.44775\\-127.3959\\37\\14.07173\\-125.4428\\37\\15.20186\\-123.4896\\37\\17.3019\\-122.5403\\37\\21.20815\\-122.2126\\37\\23.16127\\-122.2126\\37\\27.06752\\-122.1062\\37\\29.02065\\-122.1062\\37\\30.97377\\-122.2066\\37\\32.9269\\-121.7676\\37\\34.88002\\-121.8453\\37\\36.83315\\-122.6316\\37\\38.17222\\-123.4896\\37\\38.78627\\-124.041\\37\\40.7394\\-125.2311\\37\\42.69252\\-125.8856\\37\\44.64565\\-126.8032\\37\\45.25965\\-127.3959\\37\\46.25225\\-129.349\\37\\46.25225\\-131.3021\\37\\45.60063\\-133.2553\\37\\45.53836\\-135.2084\\37\\46.16409\\-137.1615\\37\\45.93592\\-139.1146\\37\\47.16748\\-141.0678\\37\\48.5519\\-142.5668\\37\\50.16389\\-141.0678\\37\\48.5519\\-137.4005\\37\\48.08396\\-137.1615\\37\\48.5519\\-136.9804\\37\\49.69038\\-135.2084\\37\\50.19698\\-133.2553\\37\\50.23681\\-131.3021\\37\\51.24419\\-129.349\\37\\51.127\\-127.3959\\37\\49.9214\\-123.4896\\37\\47.69392\\-121.5365\\37\\46.59877\\-120.4491\\37\\45.94946\\-119.5834\\37\\45.25316\\-117.6303\\37\\44.27866\\-115.6771\\37\\43.4287\\-113.724\\37\\42.70028\\-111.7709\\37\\43.86928\\-109.8178\\37\\45.58966\\-107.8646\\37\\46.35129\\-105.9115\\37\\46.59877\\-105.6588\\37\\48.5519\\-104.6552\\37\\50.50502\\-104.4721\\37\\52.45815\\-104.025\\37\\54.41127\\-104.8115\\37\\56.33623\\-105.9115\\37\\58.31752\\-107.3202\\37\\58.85882\\-107.8646\\37\\59.6626\\-109.8178\\37\\58.95358\\-111.7709\\37\\57.68974\\-113.724\\37\\58.31752\\-114.2733\\37\\60.27065\\-115.2877\\37\\62.22377\\-116.937\\37\\62.91341\\-117.6303\\37\\63.55211\\-119.5834\\37\\64.95912\\-121.5365\\37\\65.5759\\-123.4896\\37\\66.85982\\-125.4428\\37\\67.54493\\-127.3959\\37\\68.81403\\-129.349\\37\\71.0504\\-131.3021\\37\\72.15888\\-133.2553\\37\\72.78889\\-135.2084\\37\\74.63708\\-137.1615\\37\\76.27267\\-139.1146\\37\\76.92937\\-141.0678\\37\\76.85646\\-143.0209\\37\\75.89565\\-144.4281\\37\\75.36636\\-144.974\\37\\74.4581\\-146.9271\\37\\74.46111\\-148.8803\\37\\73.45821\\-150.8334\\37\\71.9894\\-152.6046\\37\\70.03628\\-152.5895\\37\\68.08315\\-151.5387\\37\\66.13003\\-151.2864\\37\\64.1769\\-150.2687\\37\\62.22377\\-148.7649\\37\\58.51284\\-146.9271\\37\\56.3644\\-145.7493\\37\\52.45815\\-145.6963\\37\\50.50502\\-145.1135\\37\\48.5519\\-145.0988\\37\\46.59877\\-146.151\\37\\44.64565\\-146.8729\\37\\42.69252\\-146.2865\\37\\40.7394\\-145.5745\\37\\38.78627\\-145.0262\\37\\36.83315\\-144.3003\\37\\34.88002\\-143.9507\\37\\32.9269\\-144.2287\\37\\31.08792\\-144.974\\37\\27.06752\\-146.9653\\37\\25.1144\\-147.8591\\37\\23.16127\\-148.5032\\37\\21.20815\\-149.8483\\37\\19.25502\\-152.2793\\37\\17.3019\\-153.5819\\37\\15.34877\\-155.0938\\37\\13.39565\\-156.1829\\37\\11.44252\\-157.5172\\37\\10.66895\\-158.6459\\37\\9.626842\\-160.599\\37\\7.536274\\-161.8122\\37\\5.583149\\-162.2418\\37\\1.676899\\-162.2842\\37\\-0.276226\\-161.5396\\37\\-2.229351\\-161.2691\\37\\-4.182476\\-161.6757\\37\\-6.135601\\-161.6747\\37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "146"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "474"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "3.630024\\-215.6832\\37\\1.676899\\-215.23\\37\\-0.276226\\-214.3318\\37\\-2.229351\\-213.309\\37\\-4.182476\\-212.9027\\37\\-6.135601\\-214.0658\\37\\-8.088726\\-214.8372\\37\\-10.04185\\-214.9935\\37\\-11.99498\\-214.828\\37\\-13.9481\\-214.0777\\37\\-15.90123\\-212.9367\\37\\-19.80748\\-212.8804\\37\\-21.7606\\-212.252\\37\\-23.71373\\-210.892\\37\\-27.61998\\-210.842\\37\\-29.5731\\-210.6723\\37\\-31.52623\\-210.0277\\37\\-33.47935\\-208.9652\\37\\-37.3856\\-208.8423\\37\\-39.33873\\-208.8423\\37\\-41.29185\\-208.6888\\37\\-43.24498\\-208.1716\\37\\-45.1981\\-206.9687\\37\\-47.15123\\-206.7067\\37\\-49.10435\\-206.1594\\37\\-51.05748\\-204.9908\\37\\-53.0106\\-204.3831\\37\\-55.71384\\-201.6146\\37\\-56.4835\\-199.6615\\37\\-56.91685\\-199.1322\\37\\-58.86998\\-199.1044\\37\\-60.39944\\-197.7084\\37\\-59.83285\\-195.7553\\37\\-58.86998\\-194.704\\37\\-55.55843\\-191.849\\37\\-55.13811\\-189.8959\\37\\-55.03031\\-187.9428\\37\\-54.10149\\-185.9896\\37\\-53.29243\\-184.0365\\37\\-52.10488\\-182.0834\\37\\-51.05748\\-180.804\\37\\-49.10435\\-178.7954\\37\\-47.15123\\-176.9445\\37\\-45.1981\\-175.702\\37\\-43.24498\\-175.2834\\37\\-41.29185\\-175.1977\\37\\-39.33873\\-175.6613\\37\\-33.47935\\-175.7044\\37\\-31.52623\\-176.7585\\37\\-29.5731\\-177.54\\37\\-27.61998\\-178.701\\37\\-25.66685\\-179.7135\\37\\-23.71373\\-180.9247\\37\\-21.7606\\-181.3944\\37\\-19.80748\\-181.4882\\37\\-17.85435\\-182.5529\\37\\-15.90123\\-183.2188\\37\\-13.9481\\-183.232\\37\\-11.99498\\-182.9055\\37\\-10.04185\\-182.4222\\37\\-8.088726\\-182.9995\\37\\-4.182476\\-183.554\\37\\-2.229351\\-184.8613\\37\\-0.276226\\-185.3136\\37\\1.676899\\-185.5929\\37\\4.644389\\-187.9428\\37\\6.820574\\-189.8959\\37\\9.489399\\-192.3907\\37\\11.24342\\-193.8021\\37\\12.8497\\-195.7553\\37\\14.13366\\-197.7084\\37\\15.34877\\-198.7095\\37\\17.3019\\-199.0518\\37\\18.99961\\-199.6615\\37\\21.20815\\-200.5754\\37\\25.1144\\-202.8908\\37\\27.06752\\-203.2708\\37\\29.02065\\-203.1609\\37\\30.67278\\-201.6146\\37\\31.99971\\-199.6615\\37\\32.9269\\-198.7343\\37\\34.88002\\-197.2863\\37\\36.23605\\-195.7553\\37\\36.82552\\-193.8021\\37\\36.97371\\-191.849\\37\\37.6661\\-189.8959\\37\\39.37498\\-187.9428\\37\\40.7394\\-186.8559\\37\\42.69252\\-185.4434\\37\\44.64565\\-185.2056\\37\\48.5519\\-185.1297\\37\\50.50502\\-185.2449\\37\\54.41127\\-185.6431\\37\\56.3644\\-186.4837\\37\\58.31752\\-187.1105\\37\\60.27065\\-188.8797\\37\\63.10428\\-191.849\\37\\64.1769\\-193.336\\37\\66.5649\\-195.7553\\37\\67.65778\\-197.7084\\37\\68.08315\\-198.2072\\37\\70.14263\\-199.6615\\37\\71.9894\\-200.6381\\37\\73.00311\\-201.6146\\37\\73.7888\\-203.5678\\37\\71.9894\\-204.4716\\37\\70.03628\\-203.7434\\37\\68.08315\\-204.5881\\37\\67.34453\\-205.5209\\37\\66.77161\\-207.474\\37\\65.49448\\-209.4271\\37\\64.33712\\-211.3803\\37\\62.22377\\-212.8033\\37\\60.27065\\-213.9357\\37\\58.31752\\-214.4459\\37\\54.41127\\-214.9935\\37\\50.50502\\-215.0047\\37\\48.5519\\-214.961\\37\\46.59877\\-214.2557\\37\\44.64565\\-212.9367\\37\\42.69252\\-212.3748\\37\\41.5067\\-211.3803\\37\\39.44912\\-209.4271\\37\\37.76088\\-207.474\\37\\36.82552\\-205.5209\\37\\36.82552\\-203.5678\\37\\34.90642\\-201.6146\\37\\32.9269\\-202.5189\\37\\31.94355\\-203.5678\\37\\30.97377\\-204.3612\\37\\29.02065\\-204.1901\\37\\27.06752\\-204.9854\\37\\26.83695\\-205.5209\\37\\25.1144\\-206.1877\\37\\23.62014\\-205.5209\\37\\23.16127\\-205.1362\\37\\21.20815\\-204.2407\\37\\19.25502\\-203.7164\\37\\17.3019\\-203.967\\37\\15.34877\\-205.0471\\37\\14.88866\\-205.5209\\37\\14.04437\\-207.474\\37\\13.9224\\-209.4271\\37\\12.55085\\-211.3803\\37\\9.489399\\-214.4176\\37\\7.536274\\-215.6635\\37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "475"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "91.52065\\-186.6905\\37\\90.3086\\-184.0365\\37\\89.16113\\-182.0834\\37\\88.8232\\-180.1303\\37\\87.6144\\-177.8777\\37\\86.88911\\-176.224\\37\\86.21443\\-174.2709\\37\\85.10403\\-172.3178\\37\\84.3086\\-170.3646\\37\\83.10926\\-168.4115\\37\\83.26536\\-166.4584\\37\\83.70815\\-166.0072\\37\\85.66128\\-165.9875\\37\\87.6144\\-167.0735\\37\\89.56753\\-165.49\\37\\90.39384\\-164.5053\\37\\91.52065\\-163.6832\\37\\93.47378\\-163.4403\\37\\95.4269\\-164.3795\\37\\97.38003\\-167.5006\\37\\99.55252\\-170.3646\\37\\100.4243\\-172.3178\\37\\100.7161\\-174.2709\\37\\101.9391\\-176.224\\37\\102.2878\\-178.1771\\37\\102.2878\\-182.0834\\37\\101.9564\\-184.0365\\37\\101.2863\\-184.7442\\37\\99.33315\\-185.6535\\37\\97.38003\\-185.8026\\37\\93.47378\\-187.7855\\37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002283"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "476"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "99.33315\\-208.446\\37\\98.29829\\-207.474\\37\\96.68248\\-205.5209\\37\\96.69707\\-203.5678\\37\\95.96213\\-201.6146\\37\\95.4269\\-200.8521\\37\\94.84747\\-199.6615\\37\\95.57207\\-197.7084\\37\\97.38003\\-196.7318\\37\\99.33315\\-197.2544\\37\\99.68286\\-197.7084\\37\\99.95629\\-199.6615\\37\\101.2863\\-202.3614\\37\\101.6757\\-203.5678\\37\\102.1098\\-205.5209\\37\\102.4043\\-207.474\\37\\101.2863\\-208.7959\\37"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "130"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "477"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-101.8387\\-212.0023\\39\\-102.373\\-211.3803\\39\\-102.6809\\-209.4271\\39\\-102.6516\\-207.474\\39\\-101.8387\\-206.0882\\39\\-101.1033\\-205.5209\\39\\-100.2775\\-201.6146\\39\\-98.65237\\-199.6615\\39\\-98.78968\\-197.7084\\39\\-99.8856\\-197.0637\\39\\-101.8387\\-197.3134\\39\\-103.7918\\-197.2888\\39\\-105.745\\-194.3969\\39\\-106.2363\\-193.8021\\39\\-106.8483\\-191.849\\39\\-107.0668\\-187.9428\\39\\-107.0742\\-184.0365\\39\\-106.8316\\-180.1303\\39\\-106.3538\\-178.1771\\39\\-105.2741\\-176.224\\39\\-104.0192\\-174.2709\\39\\-102.5129\\-172.3178\\39\\-101.8387\\-171.3033\\39\\-100.1379\\-168.4115\\39\\-97.93247\\-165.5756\\39\\-97.22083\\-164.5053\\39\\-95.97935\\-162.2999\\39\\-94.02622\\-161.0484\\39\\-92.0731\\-159.6891\\39\\-90.11997\\-159.1512\\39\\-88.16685\\-157.9562\\39\\-84.2606\\-155.8272\\39\\-83.14777\\-154.7396\\39\\-82.06065\\-152.7865\\39\\-82.37668\\-150.8334\\39\\-82.3334\\-148.8803\\39\\-82.59944\\-146.9271\\39\\-83.46973\\-144.974\\39\\-83.484\\-143.0209\\39\\-82.90215\\-141.0678\\39\\-81.30949\\-139.1146\\39\\-80.17996\\-137.1615\\39\\-78.40122\\-133.625\\39\\-78.14214\\-133.2553\\39\\-77.65647\\-131.3021\\39\\-77.27909\\-129.349\\39\\-75.32622\\-127.3959\\39\\-73.24798\\-123.4896\\39\\-72.36746\\-121.5365\\39\\-70.73734\\-117.6303\\39\\-70.2044\\-115.6771\\39\\-69.12691\\-113.724\\39\\-67.60387\\-111.7709\\39\\-67.12131\\-109.8178\\39\\-66.50809\\-107.8646\\39\\-66.34639\\-105.9115\\39\\-67.35615\\-103.9584\\39\\-66.9643\\-102.0053\\39\\-66.16879\\-100.0521\\39\\-65.10878\\-98.09901\\39\\-64.72935\\-97.72198\\39\\-62.77623\\-97.12642\\39\\-60.8231\\-97.04828\\39\\-59.67943\\-96.14588\\39\\-56.91685\\-93.59055\\39\\-54.96373\\-93.05045\\39\\-53.16008\\-92.23963\\39\\-51.05748\\-91.06678\\39\\-49.10435\\-90.89356\\39\\-47.15123\\-91.00684\\39\\-45.1981\\-91.30081\\39\\-44.24078\\-92.23963\\39\\-42.51995\\-94.19276\\39\\-41.09241\\-96.14588\\39\\-40.3322\\-98.09901\\39\\-39.30117\\-100.0521\\39\\-39.16434\\-102.0053\\39\\-39.17714\\-103.9584\\39\\-40.09556\\-105.9115\\39\\-41.29185\\-107.6579\\39\\-43.24498\\-109.9532\\39\\-45.1981\\-111.1217\\39\\-47.15123\\-112.9269\\39\\-49.10435\\-114.4443\\39\\-51.05748\\-115.3649\\39\\-53.0106\\-116.8076\\39\\-54.96373\\-118.6777\\39\\-58.12717\\-121.5365\\39\\-59.68614\\-123.4896\\39\\-60.06567\\-125.4428\\39\\-59.96639\\-127.3959\\39\\-59.7262\\-129.349\\39\\-58.50299\\-131.3021\\39\\-57.90258\\-133.2553\\39\\-56.80151\\-135.2084\\39\\-57.81203\\-137.1615\\39\\-59.37975\\-139.1146\\39\\-59.13737\\-141.0678\\39\\-60.8231\\-141.8015\\39\\-62.64753\\-143.0209\\39\\-64.72935\\-144.7299\\39\\-66.68247\\-146.5935\\39\\-68.6356\\-147.7184\\39\\-70.58872\\-148.9965\\39\\-74.49497\\-150.2853\\39\\-76.78733\\-152.7865\\39\\-80.87006\\-156.6928\\39\\-82.30747\\-158.6564\\39\\-83.52818\\-160.599\\39\\-84.2606\\-162.17\\39\\-85.55311\\-164.5053\\39\\-87.46931\\-168.4115\\39\\-87.52561\\-170.3646\\39\\-89.43324\\-174.2709\\39\\-89.99128\\-176.224\\39\\-91.15513\\-178.1771\\39\\-91.40755\\-180.1303\\39\\-92.0731\\-181.602\\39\\-93.32688\\-184.0365\\39\\-93.37315\\-185.9896\\39\\-94.54858\\-187.9428\\39\\-95.28892\\-189.8959\\39\\-95.34746\\-195.7553\\39\\-95.97115\\-197.7084\\39\\-95.72987\\-199.6615\\39\\-97.15891\\-203.5678\\39\\-97.17591\\-209.4271\\39\\-97.43839\\-211.3803\\39\\-97.93247\\-211.9488\\39\\-99.8856\\-212.6519\\39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "478"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-15.90123\\-124.7675\\39\\-17.03069\\-123.4896\\39\\-17.3407\\-121.5365\\39\\-16.14871\\-117.6303\\39\\-15.90123\\-117.3722\\39\\-13.49675\\-115.6771\\39\\-12.10348\\-113.724\\39\\-11.72098\\-111.7709\\39\\-11.64669\\-109.8178\\39\\-10.58372\\-107.8646\\39\\-8.741628\\-105.9115\\39\\-6.135601\\-101.9824\\39\\-4.182476\\-102.2246\\39\\-2.229351\\-103.555\\39\\-2.085516\\-103.9584\\39\\-0.276226\\-106.091\\39\\0.883442\\-107.8646\\39\\2.364693\\-109.8178\\39\\3.214081\\-111.7709\\39\\3.855385\\-113.724\\39\\4.798697\\-115.6771\\39\\5.583149\\-116.5316\\39\\7.083721\\-117.6303\\39\\9.489399\\-120.2383\\39\\10.19228\\-121.5365\\39\\10.89139\\-123.4896\\39\\9.489399\\-124.3691\\39\\7.536274\\-122.8218\\39\\6.548677\\-121.5365\\39\\5.583149\\-120.5975\\39\\2.897602\\-117.6303\\39\\-0.276226\\-114.5103\\39\\-2.229351\\-113.2878\\39\\-4.182476\\-113.2519\\39\\-6.135601\\-114.0751\\39\\-8.088726\\-115.0168\\39\\-8.756605\\-115.6771\\39\\-10.13659\\-117.6303\\39\\-10.83172\\-119.5834\\39\\-12.42967\\-121.5365\\39\\-13.20327\\-123.4896\\39\\-13.9481\\-124.2387\\39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "85"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "479"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-13.9481\\-213.4419\\39\\-15.90123\\-212.9367\\39\\-19.80748\\-212.927\\39\\-21.7606\\-212.2813\\39\\-23.71373\\-210.9364\\39\\-29.5731\\-210.6686\\39\\-31.52623\\-210.1487\\39\\-33.47935\\-208.9652\\39\\-39.33873\\-208.9563\\39\\-41.29185\\-208.897\\39\\-43.24498\\-208.368\\39\\-45.1981\\-207.0486\\39\\-47.15123\\-206.9687\\39\\-49.10435\\-206.3884\\39\\-51.05748\\-205.1339\\39\\-53.0106\\-204.4015\\39\\-53.83657\\-203.5678\\39\\-55.39841\\-201.6146\\39\\-55.92579\\-199.6615\\39\\-56.91685\\-198.6023\\39\\-58.97612\\-199.6615\\39\\-60.22068\\-197.7084\\39\\-59.72686\\-195.7553\\39\\-58.86998\\-194.8679\\39\\-57.1203\\-193.8021\\39\\-55.03031\\-191.849\\39\\-54.92617\\-187.9428\\39\\-53.90959\\-185.9896\\39\\-52.18694\\-184.0365\\39\\-51.2932\\-182.0834\\39\\-49.82712\\-180.1303\\39\\-49.10435\\-179.3865\\39\\-47.15123\\-178.081\\39\\-45.1981\\-177.5638\\39\\-43.24498\\-177.397\\39\\-35.43248\\-177.4406\\39\\-33.47935\\-177.5557\\39\\-31.52623\\-178.0002\\39\\-29.5731\\-179.0193\\39\\-27.61998\\-179.7434\\39\\-25.66685\\-180.9779\\39\\-23.71373\\-181.6069\\39\\-21.7606\\-182.9937\\39\\-19.80748\\-183.4991\\39\\-17.85435\\-183.4872\\39\\-15.90123\\-183.789\\39\\-13.9481\\-183.7774\\39\\-11.99498\\-183.4189\\39\\-10.04185\\-183.4049\\39\\-8.088726\\-183.7416\\39\\-6.135601\\-184.2463\\39\\-4.182476\\-184.9398\\39\\-2.229351\\-185.5277\\39\\-0.276226\\-186.8095\\39\\1.676899\\-187.3072\\39\\2.721396\\-187.9428\\39\\4.949112\\-189.8959\\39\\8.850878\\-193.8021\\39\\10.7101\\-195.7553\\39\\11.99967\\-197.7084\\39\\13.39565\\-199.0124\\39\\15.34877\\-199.4999\\39\\17.3019\\-199.8456\\39\\19.25502\\-200.6975\\39\\20.50036\\-201.6146\\39\\20.62831\\-203.5678\\39\\19.25502\\-203.8627\\39\\17.3019\\-202.6623\\39\\15.34877\\-202.5208\\39\\13.1721\\-203.5678\\39\\12.00979\\-205.5209\\39\\11.91203\\-207.474\\39\\11.44252\\-208.8057\\39\\11.01528\\-209.4271\\39\\9.168161\\-211.3803\\39\\7.536274\\-212.9114\\39\\6.838729\\-213.3334\\39\\5.583149\\-213.7408\\39\\1.676899\\-213.7572\\39\\-0.276226\\-212.6305\\39\\-2.229351\\-212.0405\\39\\-4.182476\\-212.4831\\39\\-8.088726\\-214.3522\\39\\-10.04185\\-214.7208\\39\\-11.99498\\-214.3204\\39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "196"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "480"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-6.135601\\-160.6077\\39\\-7.170757\\-158.6459\\39\\-8.088726\\-157.9994\\39\\-10.04185\\-157.7323\\39\\-11.99498\\-157.8538\\39\\-14.04261\\-158.6459\\39\\-15.90123\\-159.0129\\39\\-17.70176\\-158.6459\\39\\-19.80748\\-158.0462\\39\\-21.7606\\-155.7449\\39\\-23.71373\\-154.1208\\39\\-25.02511\\-152.7865\\39\\-26.47449\\-150.8334\\39\\-27.61998\\-149.7062\\39\\-29.5731\\-147.9753\\39\\-31.52623\\-146.0821\\39\\-35.43248\\-144.0258\\39\\-37.3856\\-142.3413\\39\\-39.33873\\-142.3212\\39\\-41.29185\\-142.9389\\39\\-45.1981\\-143.0584\\39\\-47.15123\\-142.3362\\39\\-49.10435\\-142.9538\\39\\-51.05748\\-144.3551\\39\\-53.0106\\-145.5165\\39\\-54.96373\\-144.8565\\39\\-56.06507\\-143.0209\\39\\-56.87035\\-141.0678\\39\\-54.96373\\-139.4445\\39\\-53.66803\\-137.1615\\39\\-53.24756\\-135.2084\\39\\-53.84229\\-133.2553\\39\\-54.12294\\-131.3021\\39\\-53.29272\\-129.349\\39\\-53.0106\\-129.069\\39\\-51.05748\\-127.9896\\39\\-49.10435\\-127.3881\\39\\-45.1981\\-126.6697\\39\\-43.24498\\-126.7916\\39\\-41.79652\\-125.4428\\39\\-42.69742\\-123.4896\\39\\-44.12568\\-121.5365\\39\\-43.24498\\-120.6221\\39\\-41.29185\\-120.0347\\39\\-39.33873\\-119.3225\\39\\-37.3856\\-120.4758\\39\\-35.43248\\-121.0146\\39\\-33.47935\\-121.266\\39\\-31.52623\\-121.807\\39\\-27.61998\\-122.4144\\39\\-25.66685\\-122.5505\\39\\-23.71373\\-123.0367\\39\\-21.7606\\-124.3982\\39\\-20.67272\\-125.4428\\39\\-21.04674\\-127.3959\\39\\-22.35578\\-129.349\\39\\-22.22192\\-131.3021\\39\\-20.92275\\-133.2553\\39\\-20.35267\\-135.2084\\39\\-20.57097\\-137.1615\\39\\-24.06048\\-141.0678\\39\\-23.71373\\-141.9706\\39\\-22.9512\\-143.0209\\39\\-21.7606\\-143.6507\\39\\-19.80748\\-145.0931\\39\\-17.85435\\-145.5559\\39\\-13.9481\\-145.5369\\39\\-12.10595\\-144.974\\39\\-11.50669\\-143.0209\\39\\-11.5001\\-139.1146\\39\\-11.10997\\-137.1615\\39\\-10.04185\\-136.5042\\39\\-8.088726\\-137.0443\\39\\-6.135601\\-137.9699\\39\\-4.182476\\-139.2347\\39\\-2.229351\\-139.7717\\39\\-0.276226\\-137.9362\\39\\0.3519412\\-137.1615\\39\\1.676899\\-135.8577\\39\\3.630024\\-134.6357\\39\\5.583149\\-135.37\\39\\7.536274\\-135.891\\39\\9.489399\\-135.7625\\39\\11.44252\\-134.2203\\39\\12.3907\\-133.2553\\39\\13.39565\\-131.2064\\39\\13.93387\\-129.349\\39\\13.79238\\-127.3959\\39\\12.56494\\-125.4428\\39\\13.8229\\-123.4896\\39\\15.34877\\-122.4863\\39\\17.3019\\-122.2191\\39\\21.20815\\-122.1062\\39\\29.02065\\-122.1062\\39\\32.9269\\-122.9843\\39\\34.88002\\-123.0014\\39\\36.83315\\-123.3542\\39\\38.78627\\-124.6875\\39\\40.7394\\-125.8297\\39\\42.69252\\-126.424\\39\\44.5471\\-127.3959\\39\\46.59877\\-128.8998\\39\\47.03072\\-129.349\\39\\47.69271\\-131.3021\\39\\47.05406\\-133.2553\\39\\45.89702\\-135.2084\\39\\46.1734\\-137.1615\\39\\46.32824\\-139.1146\\39\\47.52319\\-141.0678\\39\\48.5519\\-142.4712\\39\\50.33269\\-141.0678\\39\\49.46044\\-139.1146\\39\\49.40899\\-137.1615\\39\\49.98307\\-135.2084\\39\\50.27028\\-131.3021\\39\\51.53812\\-129.349\\39\\51.82998\\-127.3959\\39\\51.62757\\-125.4428\\39\\51.10645\\-123.4896\\39\\49.87276\\-121.5365\\39\\47.28934\\-119.5834\\39\\45.97733\\-117.6303\\39\\45.17676\\-115.6771\\39\\43.55789\\-113.724\\39\\43.68278\\-111.7709\\39\\44.05331\\-109.8178\\39\\46.59877\\-106.65\\39\\48.5519\\-104.7918\\39\\50.50502\\-104.2175\\39\\52.45815\\-104.025\\39\\54.41127\\-104.5173\\39\\56.3644\\-105.5144\\39\\58.34024\\-107.8646\\39\\58.27469\\-109.8178\\39\\57.09408\\-111.7709\\39\\57.42031\\-113.724\\39\\58.31752\\-114.4454\\39\\60.27065\\-115.1659\\39\\60.78493\\-115.6771\\39\\62.31852\\-117.6303\\39\\63.19616\\-119.5834\\39\\64.91687\\-121.5365\\39\\65.5759\\-123.4896\\39\\66.85982\\-125.4428\\39\\67.54493\\-127.3959\\39\\68.7588\\-129.349\\39\\70.86864\\-131.3021\\39\\73.39243\\-133.2553\\39\\73.30005\\-135.2084\\39\\74.52847\\-137.1615\\39\\75.55972\\-139.1146\\39\\76.15474\\-141.0678\\39\\75.28612\\-143.0209\\39\\73.57464\\-144.974\\39\\72.68467\\-146.9271\\39\\72.54185\\-148.8803\\39\\71.9894\\-149.9545\\39\\70.03628\\-150.5724\\39\\68.08315\\-149.5968\\39\\66.13003\\-149.5293\\39\\64.57044\\-148.8803\\39\\60.27065\\-146.3625\\39\\58.31752\\-144.8901\\39\\56.3644\\-143.8872\\39\\54.41127\\-143.7252\\39\\50.50502\\-143.6322\\39\\48.5519\\-144.4521\\39\\48.0113\\-144.974\\39\\46.59877\\-145.4505\\39\\44.64565\\-145.7585\\39\\42.69252\\-144.7932\\39\\40.7394\\-143.9493\\39\\38.78627\\-143.927\\39\\36.83315\\-143.7407\\39\\34.88002\\-143.1825\\39\\32.9269\\-143.6068\\39\\30.97377\\-144.1897\\39\\29.70178\\-144.974\\39\\27.06752\\-146.859\\39\\25.58966\\-148.8803\\39\\23.16127\\-151.0075\\39\\21.20815\\-153.3598\\39\\19.44065\\-154.7396\\39\\18.33535\\-156.6928\\39\\17.35824\\-158.6459\\39\\15.34877\\-158.3802\\39\\13.39565\\-157.8362\\39\\11.44252\\-158.2672\\39\\8.534781\\-160.599\\39\\7.536274\\-161.1248\\39\\5.75893\\-160.599\\39\\3.630024\\-159.7159\\39\\1.676899\\-159.5633\\39\\-0.1765768\\-158.6459\\39\\-2.229351\\-157.0183\\39\\-4.182476\\-160.6075\\39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "481"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-214.2952\\39\\44.64565\\-212.9367\\39\\42.69252\\-212.3704\\39\\40.7394\\-210.5688\\39\\37.856\\-207.474\\39\\37.09224\\-205.5209\\39\\36.84078\\-203.5678\\39\\34.88002\\-201.8504\\39\\34.33749\\-201.6146\\39\\33.35609\\-199.6615\\39\\35.60496\\-197.7084\\39\\37.0876\\-195.7553\\39\\37.63944\\-193.8021\\39\\37.95843\\-191.849\\39\\39.11403\\-189.8959\\39\\41.08053\\-187.9428\\39\\42.69252\\-186.7296\\39\\44.64565\\-185.6431\\39\\46.59877\\-185.4514\\39\\48.5519\\-185.0311\\39\\50.50502\\-184.8303\\39\\52.45815\\-184.8439\\39\\54.41127\\-185.1074\\39\\56.3644\\-185.6003\\39\\58.31752\\-186.4297\\39\\60.27065\\-187.4768\\39\\62.75184\\-189.8959\\39\\64.1769\\-191.4474\\39\\66.52549\\-193.8021\\39\\68.38879\\-195.7553\\39\\69.21416\\-197.7084\\39\\70.03628\\-198.7218\\39\\71.9894\\-200.1584\\39\\73.94253\\-201.2823\\39\\74.26804\\-201.6146\\39\\74.93612\\-203.5678\\39\\73.94253\\-204.3855\\39\\71.9894\\-204.0844\\39\\70.03628\\-204.3501\\39\\68.71644\\-205.5209\\39\\67.65778\\-207.474\\39\\66.85496\\-209.4271\\39\\65.64175\\-211.3803\\39\\64.1769\\-212.7872\\39\\62.22377\\-214.009\\39\\60.27065\\-214.6583\\39\\58.31752\\-214.8996\\39\\54.41127\\-214.9935\\39\\48.5519\\-214.9935\\39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "482"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "95.4269\\-186.0844\\39\\93.47378\\-185.8164\\39\\92.67988\\-184.0365\\39\\91.48309\\-182.0834\\39\\90.71068\\-180.1303\\39\\89.56753\\-177.8755\\39\\88.88274\\-176.224\\39\\87.6144\\-173.9171\\39\\86.9874\\-172.3178\\39\\86.04532\\-170.3646\\39\\85.66128\\-169.7853\\39\\85.18166\\-168.4115\\39\\85.66128\\-167.7246\\39\\87.6144\\-168.0222\\39\\89.56753\\-168.0886\\39\\90.85509\\-166.4584\\39\\92.07975\\-164.5053\\39\\93.47378\\-163.6057\\39\\95.4269\\-163.4845\\39\\96.80242\\-164.5053\\39\\98.08863\\-166.4584\\39\\99.5235\\-168.4115\\39\\101.9133\\-172.3178\\39\\102.4208\\-174.2709\\39\\102.9033\\-178.1771\\39\\102.8929\\-182.0834\\39\\102.5206\\-184.0365\\39\\101.2863\\-185.2771\\39\\99.33315\\-185.7779\\39\\97.38003\\-185.7902\\39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002282"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "483"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "101.2863\\-210.1016\\39\\100.564\\-209.4271\\39\\99.01414\\-207.474\\39\\99.27666\\-205.5209\\39\\101.2863\\-206.1831\\39\\103.1524\\-207.474\\39\\103.2788\\-209.4271\\39"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "484"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-103.7918\\-196.152\\41\\-105.745\\-194.5909\\41\\-106.5796\\-193.8021\\41\\-107.6034\\-191.849\\41\\-108.2901\\-189.8959\\41\\-108.7401\\-187.9428\\41\\-108.754\\-184.0365\\41\\-108.3589\\-182.0834\\41\\-107.6605\\-180.1303\\41\\-107.3516\\-178.1771\\41\\-106.9363\\-176.224\\41\\-105.9131\\-174.2709\\41\\-103.7918\\-171.9957\\41\\-103.0403\\-170.3646\\41\\-102.0128\\-168.4115\\41\\-99.8856\\-166.1876\\41\\-97.93247\\-163.6044\\41\\-97.21804\\-162.5521\\41\\-95.97935\\-160.4552\\41\\-94.02622\\-159.5682\\41\\-90.11997\\-159.4085\\41\\-86.21372\\-158.8794\\41\\-85.74288\\-160.599\\41\\-86.21372\\-161.8958\\41\\-86.64426\\-162.5521\\41\\-89.32198\\-168.4115\\41\\-89.49474\\-170.3646\\41\\-90.47443\\-172.3178\\41\\-91.27511\\-174.2709\\41\\-91.72658\\-176.224\\41\\-92.74407\\-178.1771\\41\\-93.36893\\-180.1303\\41\\-94.02622\\-181.5745\\41\\-95.30953\\-184.0365\\41\\-95.34273\\-185.9896\\41\\-96.47733\\-187.9428\\41\\-97.1748\\-189.8959\\41\\-97.2916\\-191.849\\41\\-97.29986\\-193.8021\\41\\-97.93247\\-195.4511\\41\\-98.59515\\-195.7553\\41\\-99.8856\\-196.0027\\41\\-101.8387\\-196.2172\\41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "485"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-15.90123\\-123.9225\\41\\-16.18305\\-123.4896\\41\\-16.11293\\-121.5365\\41\\-14.84476\\-119.5834\\41\\-14.24107\\-117.6303\\41\\-13.9481\\-117.3164\\41\\-11.99498\\-116.2693\\41\\-11.40904\\-115.6771\\41\\-10.64818\\-113.724\\41\\-10.50382\\-111.7709\\41\\-10.49483\\-109.8178\\41\\-10.38236\\-107.8646\\41\\-9.133277\\-105.9115\\41\\-8.051166\\-103.9584\\41\\-7.276693\\-102.0053\\41\\-6.135601\\-101.0884\\41\\-4.182476\\-101.2425\\41\\-2.229351\\-101.1906\\41\\-1.098225\\-102.0053\\41\\-0.9950157\\-103.9584\\41\\0.3730842\\-105.9115\\41\\1.027646\\-107.8646\\41\\2.015706\\-109.8178\\41\\2.749638\\-111.7709\\41\\2.816222\\-113.724\\41\\3.950992\\-115.6771\\41\\4.443826\\-117.6303\\41\\5.583149\\-118.6705\\41\\5.983075\\-119.5834\\41\\5.583149\\-119.922\\41\\3.394302\\-117.6303\\41\\1.119846\\-115.6771\\41\\-0.276226\\-114.7376\\41\\-2.229351\\-114.5507\\41\\-4.182476\\-114.5451\\41\\-6.135601\\-114.7997\\41\\-8.088726\\-116.0027\\41\\-10.04185\\-116.891\\41\\-10.78809\\-117.6303\\41\\-11.32884\\-119.5834\\41\\-12.86395\\-121.5365\\41\\-13.41363\\-123.4896\\41\\-13.9481\\-124.0428\\41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "76"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "486"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-13.9481\\-212.9766\\41\\-15.90123\\-212.927\\41\\-19.80748\\-212.6989\\41\\-21.7606\\-212.1421\\41\\-23.71373\\-210.8198\\41\\-27.61998\\-210.1012\\41\\-29.5731\\-210.0728\\41\\-31.59598\\-209.4271\\41\\-33.47935\\-208.9563\\41\\-37.3856\\-208.9475\\41\\-41.29185\\-208.7535\\41\\-43.24498\\-208.2837\\41\\-45.1981\\-207.0486\\41\\-47.15123\\-207.0393\\41\\-49.10435\\-206.4065\\41\\-51.05748\\-204.9684\\41\\-53.0106\\-204.1808\\41\\-53.61693\\-203.5678\\41\\-54.52163\\-201.6146\\41\\-55.0451\\-199.6615\\41\\-56.91685\\-198.3332\\41\\-58.86998\\-199.3494\\41\\-59.70338\\-197.7084\\41\\-59.32571\\-195.7553\\41\\-58.86998\\-195.2472\\41\\-56.91685\\-193.7646\\41\\-54.96373\\-192.4317\\41\\-54.51055\\-191.849\\41\\-54.86827\\-187.9428\\41\\-53.68877\\-185.9896\\41\\-51.73843\\-184.0365\\41\\-49.10435\\-181.0065\\41\\-47.15123\\-179.5078\\41\\-43.24498\\-178.6378\\41\\-35.43248\\-178.6378\\41\\-29.5731\\-179.9533\\41\\-27.61998\\-181.1124\\41\\-25.66685\\-181.7753\\41\\-23.71373\\-183.06\\41\\-21.7606\\-184.5441\\41\\-19.80748\\-185.2167\\41\\-15.90123\\-184.481\\41\\-11.99498\\-184.3886\\41\\-10.04185\\-184.9184\\41\\-8.088726\\-185.228\\41\\-6.135601\\-185.4048\\41\\-4.182476\\-185.7421\\41\\-2.229351\\-186.9775\\41\\-0.276226\\-187.6953\\41\\1.676899\\-188.84\\41\\2.956788\\-189.8959\\41\\4.895116\\-191.849\\41\\6.71527\\-193.8021\\41\\7.536274\\-194.8809\\41\\9.425152\\-197.7084\\41\\11.44252\\-199.0575\\41\\13.39565\\-199.6239\\41\\15.34877\\-200.0624\\41\\17.3019\\-201.2533\\41\\17.3019\\-201.8621\\41\\15.34877\\-202.341\\41\\13.39565\\-202.3543\\41\\11.44252\\-202.5963\\41\\10.06087\\-203.5678\\41\\9.489399\\-205.1107\\41\\8.22078\\-207.474\\41\\7.255142\\-209.4271\\41\\5.583149\\-210.9388\\41\\4.938618\\-211.3803\\41\\3.630024\\-211.8079\\41\\1.676899\\-211.8343\\41\\-0.276226\\-211.2101\\41\\-2.229351\\-210.9037\\41\\-4.182476\\-212.1668\\41\\-8.088726\\-213.5078\\41\\-10.04185\\-213.8953\\41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "202"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "487"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "15.34877\\-158.9277\\41\\13.39565\\-157.5703\\41\\11.44252\\-157.1636\\41\\9.489399\\-157.2747\\41\\7.536274\\-156.9831\\41\\6.385325\\-156.6928\\41\\3.630024\\-155.0808\\41\\1.676899\\-154.7158\\41\\-0.276226\\-153.1557\\41\\-2.229351\\-152.1622\\41\\-4.182476\\-151.2687\\41\\-6.135601\\-151.4895\\41\\-8.066015\\-152.7865\\41\\-10.04185\\-152.9772\\41\\-11.99498\\-153.3753\\41\\-13.5412\\-154.7396\\41\\-17.88225\\-156.6928\\41\\-19.80748\\-157.1087\\41\\-21.7606\\-155.4575\\41\\-23.71373\\-154.5283\\41\\-25.66685\\-152.2736\\41\\-26.71499\\-150.8334\\41\\-29.5731\\-147.7831\\41\\-31.52623\\-145.8327\\41\\-33.47935\\-144.2287\\41\\-35.43248\\-143.6112\\41\\-37.3856\\-142.1005\\41\\-39.33873\\-141.9234\\41\\-41.29185\\-141.9855\\41\\-43.24498\\-141.8681\\41\\-47.15123\\-141.8405\\41\\-49.10435\\-142.1845\\41\\-51.05748\\-143.6068\\41\\-53.0106\\-144.2272\\41\\-54.96373\\-144.2351\\41\\-56.68923\\-143.0209\\41\\-58.57701\\-141.0678\\41\\-57.49926\\-139.1146\\41\\-57.97742\\-137.1615\\41\\-58.86998\\-136.6615\\41\\-59.64575\\-137.1615\\41\\-60.3475\\-139.1146\\41\\-60.8231\\-139.8257\\41\\-61.9861\\-141.0678\\41\\-64.72935\\-142.7337\\41\\-66.68247\\-144.6108\\41\\-67.2532\\-144.974\\41\\-70.58872\\-146.5713\\41\\-72.54185\\-147.6095\\41\\-74.49497\\-148.1671\\41\\-76.4481\\-149.9866\\41\\-78.40122\\-151.4581\\41\\-80.33215\\-150.8334\\41\\-80.28986\\-148.8803\\41\\-79.39215\\-146.9271\\41\\-79.55151\\-144.974\\41\\-80.35435\\-144.1826\\41\\-82.30747\\-144.4269\\41\\-83.5556\\-143.0209\\41\\-83.23904\\-141.0678\\41\\-81.65134\\-139.1146\\41\\-81.00014\\-137.1615\\41\\-79.27692\\-135.2084\\41\\-78.39359\\-133.2553\\41\\-78.0547\\-131.3021\\41\\-78.95197\\-129.349\\41\\-78.40122\\-128.3519\\41\\-76.4481\\-127.2319\\41\\-74.49497\\-125.7574\\41\\-72.54185\\-122.1717\\41\\-72.12774\\-121.5365\\41\\-71.22062\\-119.5834\\41\\-69.65223\\-115.6771\\41\\-68.6356\\-114.0654\\41\\-66.47269\\-111.7709\\41\\-65.57139\\-109.8178\\41\\-66.31549\\-105.9115\\41\\-66.94157\\-103.9584\\41\\-66.60171\\-102.0053\\41\\-66.07767\\-100.0521\\41\\-64.12067\\-98.09901\\41\\-62.77623\\-97.23048\\41\\-60.8231\\-96.896\\41\\-57.5661\\-94.19276\\41\\-56.91685\\-93.54705\\41\\-54.96373\\-93.03987\\41\\-53.68335\\-92.23963\\41\\-51.05748\\-90.32407\\41\\-49.10435\\-89.88671\\41\\-47.15123\\-90.94621\\41\\-45.1981\\-91.78265\\41\\-43.08339\\-94.19276\\41\\-42.27725\\-96.14588\\41\\-40.52088\\-98.09901\\41\\-39.74047\\-100.0521\\41\\-39.43347\\-102.0053\\41\\-39.56409\\-103.9584\\41\\-40.11324\\-105.9115\\41\\-41.29185\\-107.3884\\41\\-43.24498\\-109.5514\\41\\-47.15123\\-112.4535\\41\\-49.10435\\-113.5315\\41\\-53.0106\\-116.5522\\41\\-54.96373\\-117.4109\\41\\-56.91685\\-119.0078\\41\\-59.39495\\-121.5365\\41\\-59.99955\\-123.4896\\41\\-60.39773\\-125.4428\\41\\-60.33482\\-127.3959\\41\\-59.94646\\-129.349\\41\\-59.08317\\-131.3021\\41\\-56.91685\\-134.539\\41\\-55.89206\\-135.2084\\41\\-54.96373\\-136.4616\\41\\-54.47225\\-135.2084\\41\\-54.84075\\-133.2553\\41\\-54.98643\\-131.3021\\41\\-54.2893\\-129.349\\41\\-53.0106\\-128.0265\\41\\-51.05748\\-126.817\\41\\-49.10435\\-126.3995\\41\\-45.1981\\-126.1304\\41\\-43.24498\\-125.5823\\41\\-42.25058\\-123.4896\\41\\-41.29185\\-121.899\\41\\-39.33873\\-121.0228\\41\\-37.3856\\-121.5592\\41\\-35.43248\\-121.7722\\41\\-33.47935\\-120.9302\\41\\-31.52623\\-120.5816\\41\\-29.5731\\-120.586\\41\\-27.61998\\-120.9551\\41\\-25.66685\\-122.1681\\41\\-23.71373\\-122.8403\\41\\-21.7606\\-124.1562\\41\\-20.30453\\-125.4428\\41\\-20.36789\\-127.3959\\41\\-20.83775\\-129.349\\41\\-20.9468\\-131.3021\\41\\-19.66797\\-133.2553\\41\\-18.51739\\-135.2084\\41\\-18.33375\\-137.1615\\41\\-18.47969\\-139.1146\\41\\-18.26345\\-141.0678\\41\\-17.85435\\-141.3534\\41\\-15.90123\\-141.407\\41\\-15.58528\\-141.0678\\41\\-15.08551\\-139.1146\\41\\-13.9481\\-137.6929\\41\\-13.67643\\-137.1615\\41\\-11.99498\\-136.0653\\41\\-10.04185\\-135.9164\\41\\-6.135601\\-136.0958\\41\\-4.182476\\-136.2806\\41\\-2.229351\\-136.6044\\41\\-0.276226\\-136.1623\\41\\3.630024\\-135.7857\\41\\7.536274\\-135.8645\\41\\9.489399\\-134.9575\\41\\11.44252\\-133.1602\\41\\12.6423\\-131.3021\\41\\13.34347\\-129.349\\41\\13.69258\\-127.3959\\41\\13.32804\\-125.4428\\41\\14.62398\\-123.4896\\41\\15.34877\\-122.9341\\41\\17.3019\\-122.3557\\41\\21.20815\\-122.1062\\41\\29.02065\\-122.1062\\41\\30.97377\\-122.7623\\41\\32.9269\\-123.8667\\41\\36.83315\\-123.9605\\41\\38.78627\\-124.725\\41\\40.7394\\-125.8774\\41\\42.69252\\-126.6647\\41\\44.64565\\-127.7527\\41\\46.59877\\-128.685\\41\\47.26665\\-129.349\\41\\48.02994\\-131.3021\\41\\47.63543\\-133.2553\\41\\46.12793\\-135.2084\\41\\46.39933\\-137.1615\\41\\47.3312\\-139.1146\\41\\47.8219\\-141.0678\\41\\47.64636\\-143.0209\\41\\46.59877\\-144.0437\\41\\44.64565\\-144.3658\\41\\40.7394\\-143.1017\\41\\38.78627\\-143.0875\\41\\36.83315\\-142.4229\\41\\34.88002\\-141.9993\\41\\32.9269\\-142.267\\41\\30.97377\\-143.5748\\41\\29.02065\\-144.3003\\41\\28.32078\\-144.974\\41\\26.79699\\-146.9271\\41\\26.10546\\-148.8803\\41\\24.24038\\-150.8334\\41\\21.0442\\-154.7396\\41\\20.34291\\-158.6459\\41\\19.25502\\-159.8321\\41\\17.3019\\-159.6431\\41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "488"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-214.2952\\41\\44.64565\\-212.9367\\41\\42.69252\\-212.3614\\41\\39.79034\\-209.4271\\41\\38.51204\\-207.474\\41\\37.74236\\-205.5209\\41\\37.22753\\-203.5678\\41\\36.83315\\-202.9762\\41\\34.88002\\-202.4524\\41\\33.66491\\-201.6146\\41\\33.89344\\-199.6615\\41\\34.88002\\-198.6216\\41\\36.83315\\-197.1459\\41\\37.93178\\-195.7553\\41\\38.14048\\-193.8021\\41\\38.78627\\-191.8955\\41\\39.73936\\-189.8959\\41\\42.69252\\-186.9705\\41\\44.64565\\-185.8152\\41\\46.59877\\-185.129\\41\\48.5519\\-184.589\\41\\50.50502\\-184.1981\\41\\52.45815\\-184.1851\\41\\54.41127\\-184.6279\\41\\58.31752\\-185.1293\\41\\60.27065\\-186.4203\\41\\62.22377\\-187.5895\\41\\62.62869\\-187.9428\\41\\68.08315\\-193.3744\\41\\68.46372\\-193.8021\\41\\69.53943\\-195.7553\\41\\70.07565\\-197.7084\\41\\72.16468\\-199.6615\\41\\73.94253\\-200.7228\\41\\74.86742\\-201.6146\\41\\75.82928\\-203.5678\\41\\73.94253\\-204.4592\\41\\71.9894\\-203.8222\\41\\70.03628\\-205.1665\\41\\69.74331\\-205.5209\\41\\69.27498\\-207.474\\41\\68.08315\\-209.608\\41\\67.3276\\-211.3803\\41\\66.13003\\-212.7266\\41\\64.1769\\-214.0095\\41\\62.22377\\-214.6942\\41\\60.27065\\-214.9504\\41\\58.31752\\-215.0047\\41\\48.5519\\-214.9935\\41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "489"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "66.13003\\-147.5927\\41\\64.54681\\-146.9271\\41\\62.22377\\-145.6477\\41\\60.6584\\-144.974\\41\\57.28056\\-143.0209\\41\\56.3644\\-142.4324\\41\\54.41127\\-141.7246\\41\\52.45815\\-141.7014\\41\\51.54052\\-141.0678\\41\\49.99747\\-139.1146\\41\\49.96373\\-137.1615\\41\\50.45308\\-133.2553\\41\\50.82156\\-131.3021\\41\\51.68437\\-129.349\\41\\52.21066\\-127.3959\\41\\52.15419\\-125.4428\\41\\51.81244\\-123.4896\\41\\50.91396\\-121.5365\\41\\48.5519\\-119.2536\\41\\46.59877\\-117.1791\\41\\45.36922\\-115.6771\\41\\43.90137\\-113.724\\41\\43.8919\\-111.7709\\41\\44.10743\\-109.8178\\41\\45.16609\\-107.8646\\41\\46.39648\\-105.9115\\41\\48.5519\\-103.8345\\41\\50.50502\\-103.0345\\41\\52.45815\\-102.4127\\41\\54.41127\\-102.4825\\41\\56.97808\\-105.9115\\41\\57.59661\\-107.8646\\41\\56.9417\\-109.8178\\41\\56.94815\\-111.7709\\41\\57.96543\\-113.724\\41\\60.27065\\-115.8387\\41\\62.22377\\-118.0532\\41\\63.09523\\-119.5834\\41\\64.89782\\-121.5365\\41\\65.5918\\-123.4896\\41\\66.86636\\-125.4428\\41\\67.54493\\-127.3959\\41\\68.76225\\-129.349\\41\\70.73031\\-131.3021\\41\\72.96028\\-133.2553\\41\\73.33659\\-135.2084\\41\\73.59179\\-137.1615\\41\\73.64391\\-139.1146\\41\\73.57011\\-141.0678\\41\\73.88508\\-143.0209\\41\\72.88416\\-144.974\\41\\71.9894\\-146.5276\\41\\70.03628\\-148.5547\\41\\68.08315\\-147.6265\\41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002281"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "28"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "490"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "95.4269\\-184.7606\\41\\94.74016\\-184.0365\\41\\93.79929\\-182.0834\\41\\92.37144\\-180.1303\\41\\91.26156\\-178.1771\\41\\90.91822\\-176.224\\41\\89.56753\\-173.7673\\41\\89.01199\\-172.3178\\41\\89.46431\\-170.3646\\41\\91.52065\\-168.7194\\41\\91.78768\\-168.4115\\41\\92.70487\\-166.4584\\41\\93.92633\\-164.5053\\41\\95.4269\\-163.6136\\41\\97.38003\\-163.5382\\41\\98.62683\\-164.5053\\41\\99.55851\\-166.4584\\41\\101.3839\\-168.4115\\41\\102.4208\\-170.3646\\41\\102.7629\\-172.3178\\41\\103.9361\\-174.2709\\41\\104.6002\\-176.224\\41\\104.6152\\-182.0834\\41\\104.0379\\-184.0365\\41\\103.2394\\-184.7823\\41\\101.2863\\-185.6748\\41\\99.33315\\-185.8026\\41\\97.38003\\-185.5729\\41"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "491"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-105.745\\-194.4879\\43\\-107.6981\\-193.2232\\43\\-108.7962\\-191.849\\43\\-109.0088\\-189.8959\\43\\-109.4155\\-187.9428\\43\\-109.7042\\-185.9896\\43\\-109.7474\\-184.0365\\43\\-109.1019\\-180.1303\\43\\-109.0176\\-178.1771\\43\\-108.3513\\-176.224\\43\\-107.3833\\-174.2709\\43\\-106.0396\\-172.3178\\43\\-104.4407\\-170.3646\\43\\-103.3759\\-168.4115\\43\\-102.1309\\-166.4584\\43\\-99.8856\\-164.2321\\43\\-97.21531\\-160.599\\43\\-95.97935\\-159.4581\\43\\-94.02622\\-159.5899\\43\\-90.09472\\-160.599\\43\\-89.49017\\-162.5521\\43\\-89.53288\\-164.5053\\43\\-89.89618\\-166.4584\\43\\-90.87879\\-168.4115\\43\\-91.42809\\-170.3646\\43\\-91.80257\\-172.3178\\43\\-92.80552\\-174.2709\\43\\-93.39327\\-176.224\\43\\-94.43784\\-178.1771\\43\\-95.97935\\-181.5273\\43\\-97.29986\\-184.0365\\43\\-97.32363\\-185.9896\\43\\-97.68328\\-187.9428\\43\\-99.02762\\-189.8959\\43\\-99.29609\\-191.849\\43\\-99.32498\\-193.8021\\43\\-99.8856\\-194.5229\\43\\-101.8387\\-195.2634\\43\\-103.7918\\-195.306\\43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "80"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "492"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-19.80748\\-211.8939\\43\\-23.71373\\-210.2666\\43\\-25.66685\\-209.262\\43\\-27.61998\\-208.7417\\43\\-31.52623\\-208.7813\\43\\-37.3856\\-208.7405\\43\\-39.33873\\-208.4171\\43\\-41.29185\\-208.2002\\43\\-43.24498\\-207.6734\\43\\-45.1981\\-207.0393\\43\\-47.15123\\-206.8935\\43\\-49.10435\\-206.1161\\43\\-51.05748\\-204.3672\\43\\-52.08218\\-203.5678\\43\\-53.29243\\-201.6146\\43\\-53.51591\\-199.6615\\43\\-54.96373\\-198.2052\\43\\-56.91685\\-198.5667\\43\\-58.86998\\-197.861\\43\\-58.97848\\-197.7084\\43\\-58.46823\\-195.7553\\43\\-56.91685\\-194.0531\\43\\-54.96373\\-193.3862\\43\\-53.53256\\-191.849\\43\\-53.69356\\-189.8959\\43\\-54.08385\\-187.9428\\43\\-53.0106\\-187.0083\\43\\-51.05748\\-185.1115\\43\\-50.16908\\-184.0365\\43\\-48.22615\\-182.0834\\43\\-47.15123\\-181.2045\\43\\-45.1981\\-180.1074\\43\\-43.24498\\-179.6035\\43\\-35.43248\\-179.6035\\43\\-33.47935\\-180.0489\\43\\-31.52623\\-181.152\\43\\-29.5731\\-181.5621\\43\\-27.61998\\-182.6718\\43\\-25.66685\\-183.4087\\43\\-24.56822\\-184.0365\\43\\-23.71373\\-184.7097\\43\\-21.7606\\-185.6967\\43\\-19.80748\\-186.2266\\43\\-17.85435\\-185.51\\43\\-15.90123\\-185.2395\\43\\-13.9481\\-185.2337\\43\\-11.99498\\-185.42\\43\\-8.088726\\-186.2283\\43\\-6.135601\\-186.8537\\43\\-4.182476\\-187.3731\\43\\-2.229351\\-188.5364\\43\\-0.276226\\-189.3186\\43\\0.7382613\\-189.8959\\43\\1.676899\\-190.6228\\43\\2.893958\\-191.849\\43\\5.583149\\-195.8204\\43\\6.241761\\-197.7084\\43\\7.536274\\-198.6907\\43\\9.489399\\-199.1202\\43\\11.44252\\-199.9213\\43\\13.39565\\-200.2444\\43\\15.29627\\-201.6146\\43\\13.39565\\-202.4727\\43\\11.44252\\-202.4935\\43\\9.489399\\-202.2742\\43\\7.536274\\-202.7598\\43\\6.401883\\-203.5678\\43\\6.081674\\-205.5209\\43\\5.583149\\-206.9467\\43\\5.157872\\-207.474\\43\\3.010283\\-209.4271\\43\\1.676899\\-209.8716\\43\\-0.276226\\-209.9154\\43\\-2.229351\\-210.3174\\43\\-4.182476\\-211.2033\\43\\-6.135601\\-212.3464\\43\\-8.088726\\-212.6992\\43\\-10.04185\\-212.7452\\43\\-15.90123\\-212.6695\\43\\-17.85435\\-212.3517\\43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "493"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-8.088726\\-115.9009\\43\\-8.442864\\-115.6771\\43\\-8.885774\\-113.724\\43\\-8.612305\\-111.7709\\43\\-8.658387\\-109.8178\\43\\-10.60451\\-107.8646\\43\\-10.92204\\-105.9115\\43\\-10.04185\\-105.1382\\43\\-8.134359\\-103.9584\\43\\-6.771652\\-102.0053\\43\\-6.135601\\-101.4399\\43\\-4.182476\\-101.0201\\43\\-2.229351\\-101.0929\\43\\-0.9128458\\-102.0053\\43\\-0.8029779\\-103.9584\\43\\0.471678\\-107.8646\\43\\0.1650356\\-113.724\\43\\-0.276226\\-114.1406\\43\\-2.229351\\-114.946\\43\\-4.182476\\-115.2063\\43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "194"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "494"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "19.25502\\-159.0523\\43\\18.16453\\-158.6459\\43\\17.3019\\-158.0147\\43\\15.34877\\-156.8684\\43\\13.39565\\-154.7821\\43\\11.44252\\-153.7988\\43\\9.489399\\-153.3184\\43\\8.543839\\-152.7865\\43\\7.536274\\-151.7947\\43\\5.306456\\-150.8334\\43\\3.630024\\-149.6067\\43\\1.098933\\-148.8803\\43\\-0.276226\\-147.9936\\43\\-2.229351\\-147.4407\\43\\-6.135601\\-147.3408\\43\\-8.088726\\-147.4451\\43\\-10.04185\\-147.9037\\43\\-11.3386\\-148.8803\\43\\-11.99498\\-149.1955\\43\\-13.9481\\-150.9651\\43\\-15.90123\\-151.7323\\43\\-17.32851\\-152.7865\\43\\-19.80748\\-153.6308\\43\\-21.7606\\-153.3606\\43\\-23.71373\\-153.2025\\43\\-25.66685\\-151.5565\\43\\-27.89235\\-148.8803\\43\\-29.00289\\-146.9271\\43\\-31.52623\\-144.3546\\43\\-33.47935\\-143.4758\\43\\-35.43248\\-142.3102\\43\\-37.3856\\-141.7478\\43\\-39.33873\\-141.0754\\43\\-41.29185\\-141.0905\\43\\-43.24498\\-140.124\\43\\-45.1981\\-140.2877\\43\\-47.15123\\-141.0905\\43\\-51.05748\\-142.2859\\43\\-53.0106\\-143.4052\\43\\-54.96373\\-143.473\\43\\-56.91685\\-142.2771\\43\\-58.03359\\-141.0678\\43\\-58.0953\\-139.1146\\43\\-58.32066\\-137.1615\\43\\-58.86998\\-136.5457\\43\\-60.8231\\-136.3767\\43\\-61.59843\\-137.1615\\43\\-62.55243\\-139.1146\\43\\-64.72935\\-140.8045\\43\\-66.68247\\-142.6577\\43\\-67.2607\\-143.0209\\43\\-70.58872\\-144.5883\\43\\-71.17717\\-144.974\\43\\-74.49497\\-146.5547\\43\\-76.4481\\-148.3145\\43\\-78.40122\\-147.9037\\43\\-78.61293\\-146.9271\\43\\-79.30737\\-144.974\\43\\-80.35435\\-143.8686\\43\\-82.30747\\-143.5551\\43\\-82.91701\\-143.0209\\43\\-83.42673\\-141.0678\\43\\-82.96777\\-139.1146\\43\\-79.67747\\-135.2084\\43\\-79.02602\\-133.2553\\43\\-78.1655\\-131.3021\\43\\-79.36459\\-129.349\\43\\-79.03571\\-127.3959\\43\\-78.40122\\-126.7888\\43\\-76.4481\\-126.676\\43\\-74.49497\\-125.4195\\43\\-73.22186\\-123.4896\\43\\-71.72642\\-121.5365\\43\\-70.92481\\-119.5834\\43\\-70.40173\\-117.6303\\43\\-69.30265\\-115.6771\\43\\-66.16879\\-111.7709\\43\\-65.45092\\-109.8178\\43\\-65.92403\\-107.8646\\43\\-66.28574\\-105.9115\\43\\-66.17421\\-103.9584\\43\\-66.17716\\-102.0053\\43\\-65.65111\\-100.0521\\43\\-62.77623\\-97.57404\\43\\-60.8231\\-96.50734\\43\\-60.45928\\-96.14588\\43\\-57.59208\\-94.19276\\43\\-56.91685\\-93.54705\\43\\-54.96373\\-93.03987\\43\\-53.0106\\-91.66756\\43\\-51.05748\\-89.79212\\43\\-49.10435\\-89.16714\\43\\-47.39712\\-90.28651\\43\\-46.05853\\-92.23963\\43\\-44.25538\\-94.19276\\43\\-43.24498\\-95.58121\\43\\-41.23967\\-98.09901\\43\\-40.35285\\-100.0521\\43\\-40.04125\\-102.0053\\43\\-40.26556\\-103.9584\\43\\-40.24619\\-105.9115\\43\\-41.29185\\-107.1855\\43\\-43.24498\\-109.2181\\43\\-45.1981\\-110.5679\\43\\-47.15123\\-111.6167\\43\\-49.10435\\-112.9269\\43\\-51.05748\\-114.7668\\43\\-53.0106\\-116.0542\\43\\-54.96373\\-116.425\\43\\-56.80753\\-117.6303\\43\\-58.06003\\-119.5834\\43\\-59.67232\\-121.5365\\43\\-60.50829\\-123.4896\\43\\-61.06724\\-125.4428\\43\\-60.9051\\-127.3959\\43\\-60.16354\\-129.349\\43\\-59.80547\\-131.3021\\43\\-58.86998\\-132.5773\\43\\-56.91685\\-132.9532\\43\\-55.70261\\-131.3021\\43\\-55.00129\\-129.349\\43\\-53.0106\\-127.1368\\43\\-51.05748\\-126.331\\43\\-49.10435\\-125.9481\\43\\-47.15123\\-125.0484\\43\\-45.1981\\-124.4759\\43\\-43.24498\\-124.3167\\43\\-41.29185\\-122.7036\\43\\-39.33873\\-122.0161\\43\\-37.3856\\-122.0585\\43\\-35.43248\\-121.0745\\43\\-33.47935\\-120.5177\\43\\-31.52623\\-120.345\\43\\-29.5731\\-120.3393\\43\\-27.61998\\-120.4579\\43\\-25.88783\\-121.5365\\43\\-23.71373\\-123.6281\\43\\-21.7606\\-124.6626\\43\\-20.96261\\-125.4428\\43\\-19.99717\\-127.3959\\43\\-20.0432\\-129.349\\43\\-20.45335\\-131.3021\\43\\-17.85435\\-134.7543\\43\\-15.90123\\-136.1669\\43\\-13.9481\\-136.0536\\43\\-10.04185\\-136.0001\\43\\-2.229351\\-136.0421\\43\\1.676899\\-135.9577\\43\\3.630024\\-136.0001\\43\\7.536274\\-135.9323\\43\\9.489399\\-135.4675\\43\\9.777928\\-135.2084\\43\\11.14956\\-133.2553\\43\\11.94784\\-131.3021\\43\\12.98346\\-129.349\\43\\14.30322\\-127.3959\\43\\15.32534\\-125.4428\\43\\17.39531\\-123.4896\\43\\19.25502\\-122.5598\\43\\21.20815\\-122.1062\\43\\27.06752\\-122.1062\\43\\29.02065\\-122.2435\\43\\30.97377\\-122.8993\\43\\32.9269\\-123.9692\\43\\34.88002\\-123.9779\\43\\36.83315\\-124.1389\\43\\38.78627\\-124.8324\\43\\40.7394\\-125.8867\\43\\42.69252\\-126.6898\\43\\44.64565\\-127.8023\\43\\46.59877\\-128.6704\\43\\47.2891\\-129.349\\43\\48.09892\\-131.3021\\43\\47.75336\\-133.2553\\43\\46.78514\\-135.2084\\43\\47.88905\\-139.1146\\43\\47.73647\\-141.0678\\43\\46.59877\\-142.4552\\43\\44.64565\\-143.5296\\43\\42.69252\\-142.3822\\43\\40.7394\\-141.8622\\43\\38.78627\\-141.6701\\43\\36.83315\\-141.6185\\43\\34.88002\\-141.2032\\43\\32.9269\\-141.6581\\43\\30.97377\\-142.2426\\43\\29.02065\\-143.9375\\43\\28.17592\\-144.974\\43\\26.90358\\-146.9271\\43\\26.1409\\-148.8803\\43\\24.52206\\-150.8334\\43\\24.05646\\-154.7396\\43\\23.64956\\-156.6928\\43\\23.16127\\-157.181\\43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "495"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-215.5135\\43\\50.50502\\-215.0047\\43\\48.5519\\-214.9935\\43\\46.59877\\-214.2901\\43\\44.64565\\-212.8251\\43\\42.69252\\-212.1018\\43\\41.96692\\-211.3803\\43\\40.43341\\-209.4271\\43\\39.71168\\-207.474\\43\\38.56248\\-205.5209\\43\\37.94441\\-203.5678\\43\\37.43587\\-201.6146\\43\\36.83315\\-201.1232\\43\\36.27813\\-201.6146\\43\\34.4615\\-203.5678\\43\\32.9269\\-204.5443\\43\\32.00459\\-203.5678\\43\\33.72326\\-201.6146\\43\\34.3773\\-199.6615\\43\\34.88002\\-199.0368\\43\\36.83315\\-197.6276\\43\\38.53879\\-195.7553\\43\\38.92171\\-193.8021\\43\\39.6033\\-191.849\\43\\40.03327\\-189.8959\\43\\41.70704\\-187.9428\\43\\42.69252\\-186.9878\\43\\44.64565\\-185.8152\\43\\46.59877\\-185.0396\\43\\48.5519\\-184.0741\\43\\50.50502\\-183.9699\\43\\52.45815\\-183.6571\\43\\54.41127\\-183.7528\\43\\58.31752\\-184.6961\\43\\60.27065\\-185.1048\\43\\62.22377\\-186.4633\\43\\64.1769\\-187.7021\\43\\68.30907\\-191.849\\43\\70.74702\\-195.7553\\43\\71.19564\\-197.7084\\43\\72.83647\\-199.6615\\43\\73.94253\\-200.6675\\43\\75.27924\\-201.6146\\43\\76.82227\\-203.5678\\43\\75.89565\\-204.3594\\43\\73.94253\\-204.2539\\43\\71.9894\\-204.6426\\43\\71.25441\\-205.5209\\43\\70.70129\\-207.474\\43\\68.72341\\-211.3803\\43\\66.87964\\-213.3334\\43\\66.13003\\-213.9746\\43\\64.1769\\-214.7016\\43\\62.22377\\-215.178\\43\\60.27065\\-215.5135\\43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "496"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "66.13003\\-145.6189\\43\\64.5525\\-144.974\\43\\60.44298\\-143.0209\\43\\58.31752\\-141.8883\\43\\56.52899\\-141.0678\\43\\54.41127\\-139.6833\\43\\52.45815\\-139.6751\\43\\51.58105\\-139.1146\\43\\50.77876\\-137.1615\\43\\50.79663\\-135.2084\\43\\51.3351\\-133.2553\\43\\52.03278\\-129.349\\43\\52.27115\\-127.3959\\43\\52.25871\\-125.4428\\43\\51.9408\\-123.4896\\43\\51.04129\\-121.5365\\43\\49.24214\\-119.5834\\43\\45.38562\\-115.6771\\43\\44.1488\\-113.724\\43\\43.67801\\-111.7709\\43\\43.88451\\-109.8178\\43\\44.40993\\-107.8646\\43\\45.87786\\-105.9115\\43\\48.5519\\-103.2505\\43\\50.50502\\-102.4761\\43\\52.45815\\-100.8989\\43\\54.41127\\-100.8561\\43\\55.60885\\-102.0053\\43\\57.15471\\-105.9115\\43\\57.498\\-107.8646\\43\\56.82291\\-109.8178\\43\\57.25367\\-111.7709\\43\\60.66503\\-115.6771\\43\\62.22377\\-117.8372\\43\\63.14366\\-119.5834\\43\\64.91827\\-121.5365\\43\\66.13003\\-123.5007\\43\\67.00642\\-125.4428\\43\\67.72633\\-127.3959\\43\\68.99652\\-129.349\\43\\70.87568\\-131.3021\\43\\72.04158\\-133.2553\\43\\72.53561\\-135.2084\\43\\72.58174\\-137.1615\\43\\72.28237\\-139.1146\\43\\72.1764\\-141.0678\\43\\72.5667\\-143.0209\\43\\71.9894\\-145.1525\\43\\70.03628\\-146.5578\\43\\68.08315\\-145.6438\\43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002280"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "26"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "497"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "97.38003\\-184.7331\\43\\96.71868\\-184.0365\\43\\95.4269\\-181.6607\\43\\94.72458\\-180.1303\\43\\94.38332\\-178.1771\\43\\93.17884\\-176.224\\43\\92.71176\\-174.2709\\43\\91.39858\\-172.3178\\43\\91.97321\\-170.3646\\43\\92.85948\\-168.4115\\43\\95.34613\\-164.5053\\43\\97.38003\\-163.111\\43\\99.33315\\-163.1719\\43\\100.4515\\-164.5053\\43\\101.5116\\-166.4584\\43\\103.8579\\-170.3646\\43\\104.6788\\-172.3178\\43\\105.25\\-174.2709\\43\\106.3926\\-176.224\\43\\106.6155\\-178.1771\\43\\106.6125\\-182.0834\\43\\105.6127\\-184.0365\\43\\105.1925\\-184.5058\\43\\103.2394\\-185.4677\\43\\101.2863\\-185.8026\\43\\99.33315\\-185.559\\43"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "498"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-107.6981\\-193.6405\\45\\-109.2259\\-191.849\\45\\-109.4395\\-189.8959\\45\\-110.4094\\-187.9428\\45\\-110.9665\\-185.9896\\45\\-111.0106\\-184.0365\\45\\-110.9665\\-180.1303\\45\\-110.7768\\-178.1771\\45\\-107.9631\\-172.3178\\45\\-105.745\\-169.9131\\45\\-104.0229\\-166.4584\\45\\-99.8856\\-162.2889\\45\\-98.686\\-160.599\\45\\-97.93247\\-159.8215\\45\\-95.97935\\-158.8816\\45\\-94.02622\\-159.9799\\45\\-93.48493\\-160.599\\45\\-92.18545\\-162.5521\\45\\-91.47792\\-164.5053\\45\\-91.4838\\-166.4584\\45\\-92.63226\\-168.4115\\45\\-93.36121\\-170.3646\\45\\-93.40793\\-172.3178\\45\\-94.5423\\-174.2709\\45\\-95.32631\\-176.224\\45\\-96.41067\\-178.1771\\45\\-97.93247\\-181.5052\\45\\-99.27966\\-184.0365\\45\\-99.28329\\-185.9896\\45\\-99.53455\\-187.9428\\45\\-101.243\\-189.8959\\45\\-101.3129\\-191.849\\45\\-101.8387\\-193.3812\\45\\-102.5363\\-193.8021\\45\\-103.7918\\-194.0951\\45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "72"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "499"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-15.90123\\-211.7371\\45\\-17.85435\\-211.0866\\45\\-19.80748\\-210.2498\\45\\-21.7606\\-209.9212\\45\\-23.71373\\-208.4107\\45\\-25.66685\\-208.0061\\45\\-27.31254\\-207.474\\45\\-27.61998\\-207.2062\\45\\-29.5731\\-207.4137\\45\\-31.52623\\-208.0051\\45\\-33.47935\\-208.0134\\45\\-37.3856\\-208.2076\\45\\-41.29185\\-207.1485\\45\\-43.24498\\-206.9199\\45\\-45.1981\\-206.8247\\45\\-47.15123\\-206.3143\\45\\-48.10772\\-205.5209\\45\\-50.11579\\-203.5678\\45\\-51.54576\\-201.6146\\45\\-52.08683\\-199.6615\\45\\-53.0106\\-198.6443\\45\\-54.96373\\-198.1109\\45\\-56.91685\\-199.3631\\45\\-58.16658\\-197.7084\\45\\-57.86994\\-195.7553\\45\\-56.91685\\-194.66\\45\\-53.0106\\-192.8196\\45\\-52.14077\\-191.849\\45\\-51.66306\\-189.8959\\45\\-51.05748\\-188.1475\\45\\-50.01292\\-185.9896\\45\\-49.10435\\-184.9418\\45\\-47.15123\\-183.0195\\45\\-45.1981\\-181.5262\\45\\-33.47935\\-181.5262\\45\\-31.52623\\-182.8972\\45\\-29.5731\\-183.5192\\45\\-27.61998\\-183.7641\\45\\-25.66685\\-185.2712\\45\\-23.71373\\-186.6534\\45\\-21.7606\\-187.5268\\45\\-19.80748\\-187.3654\\45\\-15.90123\\-186.2756\\45\\-13.9481\\-186.2534\\45\\-11.99498\\-186.8806\\45\\-10.04185\\-187.3654\\45\\-6.135601\\-187.8207\\45\\-4.182476\\-188.9436\\45\\-2.229351\\-189.7738\\45\\-0.276226\\-191.0724\\45\\0.6721664\\-191.849\\45\\1.676899\\-192.9153\\45\\2.200478\\-193.8021\\45\\2.241\\-195.7553\\45\\3.669086\\-197.7084\\45\\5.583149\\-199.1158\\45\\9.489399\\-199.9518\\45\\11.44252\\-200.6623\\45\\13.00702\\-201.6146\\45\\11.44252\\-202.6576\\45\\9.489399\\-202.6633\\45\\7.536274\\-201.9816\\45\\5.583149\\-202.04\\45\\3.630024\\-202.745\\45\\2.517828\\-203.5678\\45\\2.193171\\-205.5209\\45\\-0.276226\\-207.773\\45\\-2.229351\\-208.6875\\45\\-4.182476\\-210.145\\45\\-7.093383\\-211.3803\\45\\-8.088726\\-211.7164\\45\\-10.04185\\-211.777\\45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "500"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-4.182476\\-116.1025\\45\\-5.049175\\-115.6771\\45\\-6.135601\\-114.8494\\45\\-6.810824\\-113.724\\45\\-6.791893\\-109.8178\\45\\-8.088726\\-107.8725\\45\\-10.04185\\-108.1004\\45\\-10.38365\\-107.8646\\45\\-11.4759\\-105.9115\\45\\-10.04185\\-104.8911\\45\\-8.088726\\-105.1368\\45\\-6.82617\\-103.9584\\45\\-4.95974\\-102.0053\\45\\-4.182476\\-101.3775\\45\\-2.229351\\-101.5706\\45\\-1.794662\\-102.0053\\45\\-1.444714\\-105.9115\\45\\-0.5883233\\-107.8646\\45\\-1.179212\\-109.8178\\45\\-1.629614\\-111.7709\\45\\-1.65969\\-113.724\\45\\-2.229351\\-114.6235\\45\\-3.467673\\-115.6771\\45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "204"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "501"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "21.20815\\-156.9285\\45\\19.07551\\-154.7396\\45\\18.4107\\-152.7865\\45\\17.3019\\-151.6891\\45\\16.0049\\-150.8334\\45\\15.34877\\-150.2159\\45\\13.39565\\-149.807\\45\\11.44252\\-149.5044\\45\\10.62066\\-148.8803\\45\\9.489399\\-147.749\\45\\8.286387\\-146.9271\\45\\7.536274\\-146.2277\\45\\5.583149\\-145.5889\\45\\4.344226\\-144.974\\45\\3.630024\\-144.3\\45\\1.676899\\-143.8003\\45\\-2.229351\\-143.5372\\45\\-3.676756\\-143.0209\\45\\-4.182476\\-142.5152\\45\\-6.135601\\-142.3358\\45\\-6.985572\\-143.0209\\45\\-8.088726\\-143.4261\\45\\-11.99498\\-143.7013\\45\\-13.9481\\-145.1392\\45\\-15.90123\\-146.0132\\45\\-16.81519\\-146.9271\\45\\-19.80748\\-149.0157\\45\\-21.7606\\-149.5897\\45\\-23.71373\\-149.6912\\45\\-25.66685\\-149.4817\\45\\-26.41743\\-148.8803\\45\\-28.92963\\-144.974\\45\\-30.9579\\-143.0209\\45\\-31.52623\\-142.5764\\45\\-33.47935\\-141.825\\45\\-35.43248\\-141.5648\\45\\-37.3856\\-140.223\\45\\-39.33873\\-139.5667\\45\\-41.29185\\-138.4059\\45\\-43.24498\\-137.9418\\45\\-47.15123\\-139.6718\\45\\-49.10435\\-139.9965\\45\\-51.05748\\-141.4721\\45\\-53.0106\\-141.6781\\45\\-54.96373\\-141.6781\\45\\-56.91685\\-141.5291\\45\\-57.38978\\-141.0678\\45\\-58.18987\\-139.1146\\45\\-58.40523\\-137.1615\\45\\-58.86998\\-136.3579\\45\\-60.8231\\-134.8791\\45\\-61.07596\\-135.2084\\45\\-64.99965\\-139.1146\\45\\-67.09955\\-141.0678\\45\\-68.6356\\-141.848\\45\\-70.58872\\-142.7021\\45\\-72.54185\\-143.8096\\45\\-74.49497\\-144.6208\\45\\-75.0741\\-144.974\\45\\-76.4481\\-146.144\\45\\-78.40122\\-144.9226\\45\\-79.71039\\-143.0209\\45\\-80.35435\\-142.3906\\45\\-82.30747\\-141.6781\\45\\-82.96478\\-141.0678\\45\\-83.43052\\-139.1146\\45\\-82.30747\\-137.1692\\45\\-80.93367\\-135.2084\\45\\-79.14829\\-133.2553\\45\\-78.1655\\-131.3021\\45\\-79.3591\\-129.349\\45\\-78.62853\\-127.3959\\45\\-78.40122\\-127.2076\\45\\-76.4481\\-127.0682\\45\\-73.23506\\-123.4896\\45\\-71.94047\\-121.5365\\45\\-71.11068\\-119.5834\\45\\-70.40173\\-117.6303\\45\\-69.26653\\-115.6771\\45\\-67.33904\\-113.724\\45\\-66.27608\\-111.7709\\45\\-66.00639\\-109.8178\\45\\-66.23859\\-105.9115\\45\\-65.75264\\-103.9584\\45\\-65.77203\\-102.0053\\45\\-65.2294\\-100.0521\\45\\-64.72935\\-99.55508\\45\\-62.77623\\-98.5429\\45\\-60.8231\\-97.17764\\45\\-58.86998\\-95.21644\\45\\-57.31399\\-94.19276\\45\\-56.91685\\-93.80843\\45\\-54.96373\\-93.09525\\45\\-53.67736\\-92.23963\\45\\-51.05748\\-89.77094\\45\\-49.10435\\-89.01598\\45\\-47.15123\\-90.06866\\45\\-46.95179\\-90.28651\\45\\-46.45971\\-92.23963\\45\\-45.07603\\-94.19276\\45\\-44.13579\\-96.14588\\45\\-42.34317\\-98.09901\\45\\-40.74253\\-100.0521\\45\\-40.36744\\-102.0053\\45\\-40.93503\\-103.9584\\45\\-40.93503\\-105.9115\\45\\-42.21386\\-107.8646\\45\\-43.24498\\-108.9315\\45\\-45.1981\\-110.2974\\45\\-47.15123\\-111.1605\\45\\-47.89968\\-111.7709\\45\\-51.05748\\-113.8325\\45\\-54.96373\\-115.3581\\45\\-56.91685\\-116.8557\\45\\-57.6764\\-117.6303\\45\\-58.51316\\-119.5834\\45\\-59.6921\\-121.5365\\45\\-61.35936\\-123.4896\\45\\-61.94991\\-125.4428\\45\\-61.72136\\-127.3959\\45\\-60.46628\\-129.349\\45\\-59.92792\\-133.2553\\45\\-58.86998\\-134.4258\\45\\-56.91685\\-132.2201\\45\\-56.2034\\-131.3021\\45\\-55.37523\\-129.349\\45\\-54.96373\\-128.9323\\45\\-52.65938\\-127.3959\\45\\-51.05748\\-126.4873\\45\\-49.10435\\-125.6666\\45\\-47.15123\\-124.6281\\45\\-45.1981\\-124.0438\\45\\-43.24498\\-123.9949\\45\\-41.29185\\-122.7247\\45\\-39.33873\\-122.1062\\45\\-37.3856\\-122.1062\\45\\-35.43248\\-120.9516\\45\\-33.47935\\-120.4665\\45\\-29.5731\\-120.266\\45\\-27.61998\\-120.2976\\45\\-25.66685\\-121.2305\\45\\-25.36289\\-121.5365\\45\\-24.57761\\-123.4896\\45\\-21.7606\\-126.0399\\45\\-20.01571\\-127.3959\\45\\-18.88915\\-129.349\\45\\-20.07985\\-131.3021\\45\\-19.71202\\-133.2553\\45\\-18.29298\\-135.2084\\45\\-17.85435\\-135.5445\\45\\-15.90123\\-136.0501\\45\\-11.99498\\-136.502\\45\\-8.088726\\-136.7085\\45\\-2.229351\\-136.7058\\45\\1.676899\\-136.5668\\45\\3.630024\\-136.6968\\45\\5.583149\\-136.6335\\45\\7.536274\\-136.1171\\45\\9.489399\\-135.8369\\45\\10.43471\\-135.2084\\45\\11.52329\\-133.2553\\45\\11.55103\\-131.3021\\45\\15.34877\\-126.8614\\45\\16.43666\\-125.4428\\45\\19.25502\\-122.6506\\45\\21.20815\\-122.1062\\45\\27.06752\\-122.1062\\45\\29.02065\\-122.5087\\45\\30.97377\\-123.1857\\45\\32.9269\\-123.9692\\45\\34.88002\\-123.9865\\45\\36.83315\\-124.3893\\45\\38.78627\\-124.9808\\45\\40.7394\\-125.7246\\45\\42.69252\\-126.8166\\45\\44.64565\\-128.0951\\45\\46.59877\\-128.8546\\45\\47.11578\\-129.349\\45\\48.28136\\-131.3021\\45\\48.49972\\-133.2553\\45\\48.16496\\-135.2084\\45\\48.00258\\-139.1146\\45\\47.0111\\-141.0678\\45\\46.59877\\-141.4269\\45\\44.64565\\-141.6745\\45\\42.69252\\-141.6266\\45\\40.7394\\-140.3492\\45\\38.78627\\-139.6833\\45\\34.88002\\-140.0315\\45\\32.9269\\-140.358\\45\\30.97377\\-141.8556\\45\\29.02065\\-142.5677\\45\\28.5873\\-143.0209\\45\\28.61241\\-144.974\\45\\29.81039\\-146.9271\\45\\29.02065\\-148.493\\45\\27.06752\\-147.6544\\45\\26.09096\\-148.8803\\45\\25.1144\\-149.8248\\45\\24.72746\\-150.8334\\45\\24.4935\\-152.7865\\45\\24.04409\\-154.7396\\45\\23.99256\\-156.6928\\45\\23.16127\\-157.427\\45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "502"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-215.9207\\45\\50.50502\\-215.0047\\45\\48.5519\\-214.8372\\45\\46.59877\\-214.1221\\45\\43.3231\\-211.3803\\45\\41.68402\\-209.4271\\45\\40.46703\\-207.474\\45\\39.0681\\-203.5678\\45\\38.78627\\-201.5375\\45\\36.83315\\-201.0018\\45\\36.21601\\-201.6146\\45\\35.55959\\-203.5678\\45\\34.88002\\-204.258\\45\\32.9269\\-203.8568\\45\\32.67941\\-203.5678\\45\\33.91328\\-201.6146\\45\\34.88002\\-199.8657\\45\\36.83315\\-198.0005\\45\\38.98571\\-195.7553\\45\\39.61297\\-193.8021\\45\\40.01437\\-191.849\\45\\40.7394\\-190.0319\\45\\41.91025\\-187.9428\\45\\42.69252\\-187.1804\\45\\48.5519\\-183.9843\\45\\50.50502\\-183.6571\\45\\52.45815\\-183.101\\45\\54.41127\\-183.1062\\45\\56.3644\\-183.56\\45\\58.31752\\-183.7217\\45\\60.27065\\-184.6893\\45\\62.22377\\-185.1974\\45\\64.1769\\-186.8732\\45\\68.08315\\-190.7646\\45\\69.07529\\-191.849\\45\\70.60012\\-193.8021\\45\\71.41974\\-195.7553\\45\\71.90863\\-197.7084\\45\\73.03907\\-199.6615\\45\\73.94253\\-200.5797\\45\\75.79136\\-201.6146\\45\\77.7138\\-203.5678\\45\\75.89565\\-204.5486\\45\\73.94253\\-204.4386\\45\\72.70015\\-205.5209\\45\\71.82781\\-207.474\\45\\71.23319\\-209.4271\\45\\70.03628\\-211.2649\\45\\68.08315\\-213.6367\\45\\66.13003\\-214.6722\\45\\64.1769\\-215.1918\\45\\62.22377\\-216.0287\\45\\60.27065\\-216.3782\\45\\54.41127\\-216.3782\\45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "503"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "64.1769\\-143.5634\\45\\62.22377\\-142.3225\\45\\60.27065\\-141.6537\\45\\59.28469\\-141.0678\\45\\56.3644\\-139.03\\45\\54.41127\\-137.9231\\45\\52.45815\\-137.3732\\45\\52.24645\\-137.1615\\45\\51.73831\\-135.2084\\45\\52.19906\\-131.3021\\45\\52.27115\\-127.3959\\45\\52.22243\\-125.4428\\45\\51.49609\\-123.4896\\45\\50.50502\\-121.546\\45\\49.26167\\-119.5834\\45\\45.38562\\-115.6771\\45\\44.22028\\-113.724\\45\\43.46481\\-111.7709\\45\\43.69739\\-109.8178\\45\\44.19267\\-107.8646\\45\\45.83041\\-105.9115\\45\\47.64286\\-103.9584\\45\\49.8559\\-102.0053\\45\\51.43245\\-100.0521\\45\\52.45815\\-99.13592\\45\\54.41127\\-99.95739\\45\\56.0475\\-102.0053\\45\\56.82637\\-103.9584\\45\\57.35518\\-105.9115\\45\\57.59136\\-107.8646\\45\\57.45612\\-109.8178\\45\\58.23676\\-111.7709\\45\\59.45841\\-113.724\\45\\60.99567\\-115.6771\\45\\62.78886\\-117.6303\\45\\63.48785\\-119.5834\\45\\65.13301\\-121.5365\\45\\67.3111\\-123.4896\\45\\67.3814\\-125.4428\\45\\68.08315\\-126.7986\\45\\69.92776\\-129.349\\45\\71.45118\\-131.3021\\45\\72.01211\\-133.2553\\45\\71.7656\\-135.2084\\45\\71.73031\\-141.0678\\45\\71.59226\\-143.0209\\45\\70.03628\\-144.6645\\45\\68.08315\\-143.8329\\45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002279"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "29"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "504"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "103.2394\\-186.801\\45\\101.2863\\-185.6641\\45\\99.33315\\-184.7233\\45\\98.68011\\-184.0365\\45\\97.38003\\-181.6087\\45\\96.73096\\-180.1303\\45\\96.69461\\-178.1771\\45\\95.81587\\-176.224\\45\\94.78951\\-174.2709\\45\\94.66057\\-172.3178\\45\\93.94154\\-170.3646\\45\\93.73463\\-168.4115\\45\\94.4656\\-166.4584\\45\\96.58867\\-162.5521\\45\\97.38003\\-161.6638\\45\\99.33315\\-161.1647\\45\\100.6795\\-162.5521\\45\\101.2863\\-163.5195\\45\\103.2394\\-166.2719\\45\\104.6872\\-168.4115\\45\\105.3773\\-170.3646\\45\\106.6488\\-172.3178\\45\\106.7991\\-174.2709\\45\\107.783\\-176.224\\45\\108.3724\\-178.1771\\45\\108.5686\\-180.1303\\45\\108.1032\\-184.0365\\45\\106.852\\-185.9896\\45\\105.1925\\-187.1037\\45"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "33"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "505"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-107.6981\\-193.4594\\47\\-109.2771\\-191.849\\47\\-110.3932\\-189.8959\\47\\-111.8693\\-187.9428\\47\\-112.7316\\-185.9896\\47\\-112.9007\\-184.0365\\47\\-112.8809\\-180.1303\\47\\-112.2886\\-178.1771\\47\\-109.402\\-172.3178\\47\\-108.1002\\-170.3646\\47\\-106.6366\\-168.4115\\47\\-104.1508\\-164.5053\\47\\-97.93247\\-158.3658\\47\\-95.97935\\-157.8775\\47\\-95.13842\\-158.6459\\47\\-94.00352\\-160.599\\47\\-93.88979\\-162.5521\\47\\-93.42306\\-164.5053\\47\\-93.40008\\-166.4584\\47\\-94.53714\\-168.4115\\47\\-95.18623\\-170.3646\\47\\-95.32639\\-172.3178\\47\\-96.53851\\-174.2709\\47\\-97.30341\\-176.224\\47\\-97.93247\\-177.4594\\47\\-98.60181\\-178.1771\\47\\-99.2599\\-180.1303\\47\\-101.2749\\-184.0365\\47\\-101.2865\\-185.9896\\47\\-101.8387\\-187.3539\\47\\-103.2745\\-189.8959\\47\\-103.7384\\-191.849\\47\\-105.745\\-193.123\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "62"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "506"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-76.4481\\-143.8496\\47\\-78.40122\\-142.6997\\47\\-80.35435\\-140.7509\\47\\-82.30747\\-140.0478\\47\\-83.33669\\-139.1146\\47\\-83.18783\\-137.1615\\47\\-81.35689\\-135.2084\\47\\-79.37778\\-133.2553\\47\\-78.46781\\-131.3021\\47\\-79.30908\\-129.349\\47\\-78.40122\\-128.103\\47\\-76.4481\\-127.3283\\47\\-75.15118\\-125.4428\\47\\-73.39697\\-123.4896\\47\\-72.54185\\-121.5926\\47\\-71.25157\\-119.5834\\47\\-70.58872\\-117.964\\47\\-69.26653\\-115.6771\\47\\-67.30135\\-113.724\\47\\-66.28574\\-111.7709\\47\\-66.2571\\-107.8646\\47\\-66.04043\\-105.9115\\47\\-65.32206\\-103.9584\\47\\-64.99021\\-102.0053\\47\\-64.55496\\-100.0521\\47\\-62.77623\\-98.87749\\47\\-60.8231\\-97.33577\\47\\-58.86998\\-95.40253\\47\\-56.91685\\-94.81421\\47\\-53.59175\\-92.23963\\47\\-51.05748\\-90.05299\\47\\-49.10435\\-89.25027\\47\\-47.43896\\-90.28651\\47\\-46.71654\\-92.23963\\47\\-46.20884\\-94.19276\\47\\-43.24498\\-98.18665\\47\\-42.29395\\-100.0521\\47\\-41.53416\\-102.0053\\47\\-42.42813\\-103.9584\\47\\-42.55833\\-105.9115\\47\\-43.42324\\-107.8646\\47\\-45.44624\\-109.8178\\47\\-49.10435\\-112.2846\\47\\-51.05748\\-112.9269\\47\\-53.0106\\-114.3164\\47\\-54.96373\\-114.9396\\47\\-57.70455\\-117.6303\\47\\-58.59944\\-119.5834\\47\\-59.69734\\-121.5365\\47\\-61.44702\\-123.4896\\47\\-62.08011\\-125.4428\\47\\-61.88967\\-127.3959\\47\\-60.53013\\-129.349\\47\\-60.43616\\-131.3021\\47\\-61.40904\\-133.2553\\47\\-62.77623\\-135.1693\\47\\-65.05196\\-137.1615\\47\\-67.05083\\-139.1146\\47\\-68.6356\\-140.2509\\47\\-70.58872\\-141.5255\\47\\-72.54185\\-142.1964\\47\\-74.49497\\-143.395\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "60"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "507"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-25.66685\\-145.6612\\47\\-26.66442\\-144.974\\47\\-29.5731\\-142.1391\\47\\-31.52623\\-141.5199\\47\\-33.47935\\-140.3341\\47\\-35.43248\\-139.856\\47\\-37.3856\\-138.687\\47\\-39.33873\\-137.9929\\47\\-41.29185\\-137.6411\\47\\-43.24498\\-136.5313\\47\\-45.1981\\-136.9453\\47\\-47.15123\\-137.6873\\47\\-49.10435\\-137.7813\\47\\-51.05748\\-139.4833\\47\\-53.0106\\-139.7098\\47\\-54.96373\\-139.7017\\47\\-56.91685\\-139.1685\\47\\-57.85025\\-137.1615\\47\\-58.34553\\-135.2084\\47\\-56.91685\\-132.4669\\47\\-56.20071\\-131.3021\\47\\-54.4022\\-129.349\\47\\-53.0106\\-128.4512\\47\\-51.05748\\-126.6999\\47\\-49.10435\\-125.1498\\47\\-47.15123\\-124.3034\\47\\-45.1981\\-123.6766\\47\\-43.24498\\-123.9516\\47\\-41.29185\\-122.7247\\47\\-39.33873\\-122.1062\\47\\-37.3856\\-122.1062\\47\\-35.43248\\-121.9726\\47\\-33.47935\\-121.266\\47\\-29.5731\\-120.3599\\47\\-27.61998\\-120.266\\47\\-25.66685\\-120.8768\\47\\-25.0141\\-121.5365\\47\\-24.15652\\-123.4896\\47\\-22.59674\\-125.4428\\47\\-21.7606\\-126.1161\\47\\-19.80748\\-126.8154\\47\\-19.21038\\-127.3959\\47\\-18.71789\\-129.349\\47\\-20.5833\\-131.3021\\47\\-21.27232\\-133.2553\\47\\-20.57225\\-135.2084\\47\\-19.80748\\-135.9216\\47\\-17.85435\\-136.5551\\47\\-15.90123\\-136.8024\\47\\-14.92466\\-137.1615\\47\\-13.9481\\-137.8752\\47\\-11.99498\\-138.3641\\47\\-10.04185\\-139.0508\\47\\-10.04185\\-139.1711\\47\\-11.99498\\-140.1585\\47\\-12.90419\\-141.0678\\47\\-13.9481\\-141.6354\\47\\-17.85435\\-141.6941\\47\\-21.7606\\-145.4753\\47\\-23.71373\\-145.7345\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "73"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "508"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-17.85435\\-209.8483\\47\\-19.80748\\-208.3471\\47\\-21.7606\\-208.028\\47\\-23.71373\\-206.3036\\47\\-25.2791\\-205.5209\\47\\-25.66685\\-205.1273\\47\\-27.61998\\-204.0977\\47\\-29.5731\\-204.635\\47\\-31.52623\\-206.083\\47\\-33.47935\\-206.1557\\47\\-37.3856\\-206.8891\\47\\-41.29185\\-206.8213\\47\\-45.1981\\-206.1414\\47\\-46.02387\\-205.5209\\47\\-48.10716\\-203.5678\\47\\-49.80493\\-201.6146\\47\\-50.89785\\-199.6615\\47\\-53.0106\\-198.2965\\47\\-54.96373\\-198.9807\\47\\-55.6643\\-199.6615\\47\\-56.94449\\-201.6146\\47\\-57.78545\\-199.6615\\47\\-57.11629\\-195.7553\\47\\-54.96373\\-194.0666\\47\\-53.0106\\-193.4029\\47\\-51.05748\\-191.9711\\47\\-49.89523\\-189.8959\\47\\-49.41447\\-187.9428\\47\\-47.98944\\-185.9896\\47\\-45.96725\\-184.0365\\47\\-45.1981\\-183.5161\\47\\-33.47935\\-183.5075\\47\\-31.52623\\-184.8562\\47\\-29.5731\\-185.5102\\47\\-27.73353\\-185.9896\\47\\-25.66685\\-187.4757\\47\\-24.79249\\-187.9428\\47\\-23.71373\\-188.8705\\47\\-21.7606\\-189.4721\\47\\-19.80748\\-188.8771\\47\\-17.85435\\-187.719\\47\\-15.90123\\-187.5509\\47\\-13.9481\\-187.5509\\47\\-11.99498\\-187.8762\\47\\-10.04185\\-189.1245\\47\\-8.088726\\-189.4721\\47\\-6.135601\\-189.5321\\47\\-5.456771\\-189.8959\\47\\-4.182476\\-190.8817\\47\\-2.473492\\-191.849\\47\\-2.229351\\-192.1106\\47\\-1.566927\\-193.8021\\47\\-0.1243163\\-195.7553\\47\\0.7170299\\-197.7084\\47\\1.676899\\-198.4059\\47\\3.630024\\-199.1761\\47\\7.536274\\-200.1392\\47\\9.489399\\-200.8574\\47\\10.43933\\-201.6146\\47\\9.489399\\-203.1074\\47\\7.536274\\-202.3037\\47\\5.583149\\-202.0306\\47\\3.630024\\-201.9917\\47\\1.676899\\-202.175\\47\\-0.276226\\-202.5912\\47\\-1.496929\\-203.5678\\47\\-1.790516\\-205.5209\\47\\-2.229351\\-206.3366\\47\\-3.257858\\-207.474\\47\\-6.135601\\-209.0681\\47\\-6.556533\\-209.4271\\47\\-8.088726\\-209.9468\\47\\-15.90123\\-209.9468\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "65"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "509"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "23.16127\\-152.901\\47\\20.96401\\-150.8334\\47\\19.05063\\-148.8803\\47\\18.21407\\-146.9271\\47\\17.3019\\-146.0048\\47\\15.34877\\-145.4073\\47\\13.39565\\-145.6051\\47\\11.44252\\-145.1953\\47\\9.489399\\-143.4354\\47\\7.536274\\-141.8474\\47\\5.583149\\-141.4921\\47\\5.17024\\-141.0678\\47\\5.078031\\-139.1146\\47\\7.536274\\-136.797\\47\\9.489399\\-136.3545\\47\\11.44252\\-135.6573\\47\\11.96275\\-135.2084\\47\\12.22988\\-133.2553\\47\\11.67825\\-131.3021\\47\\12.83855\\-129.349\\47\\15.34877\\-126.7548\\47\\16.47439\\-125.4428\\47\\19.25502\\-122.6758\\47\\21.20815\\-122.2751\\47\\23.16127\\-122.3167\\47\\27.06752\\-122.1062\\47\\29.02065\\-122.3807\\47\\30.97377\\-122.8156\\47\\32.9269\\-123.7254\\47\\38.78627\\-124.4569\\47\\40.7394\\-125.0558\\47\\42.69252\\-127.4543\\47\\44.64565\\-129.11\\47\\46.59877\\-129.7508\\47\\48.5519\\-130.6532\\47\\49.1728\\-131.3021\\47\\49.66733\\-133.2553\\47\\49.50647\\-135.2084\\47\\48.96784\\-137.1615\\47\\47.3033\\-139.1146\\47\\46.59877\\-139.6948\\47\\42.69252\\-139.6819\\47\\41.23519\\-139.1146\\47\\40.7394\\-138.6791\\47\\38.78627\\-137.8648\\47\\36.83315\\-138.3654\\47\\34.88002\\-139.289\\47\\32.9269\\-139.9603\\47\\31.43636\\-141.0678\\47\\30.97377\\-141.7749\\47\\29.02065\\-142.5728\\47\\28.74665\\-143.0209\\47\\29.02065\\-143.3073\\47\\30.97377\\-143.8179\\47\\31.8826\\-144.974\\47\\31.82555\\-146.9271\\47\\30.77292\\-148.8803\\47\\29.02065\\-150.608\\47\\26.429\\-148.8803\\47\\25.89806\\-146.9271\\47\\25.1144\\-146.1133\\47\\24.42444\\-146.9271\\47\\24.19062\\-148.8803\\47\\24.10265\\-150.8334\\47\\23.30924\\-152.7865\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "510"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-216.2108\\47\\50.50502\\-215.0047\\47\\48.5519\\-214.4702\\47\\46.59877\\-213.2095\\47\\44.64565\\-212.1013\\47\\43.93287\\-211.3803\\47\\42.3334\\-209.4271\\47\\41.62048\\-207.474\\47\\40.16655\\-205.5209\\47\\39.59429\\-201.6146\\47\\38.78627\\-200.7634\\47\\36.83315\\-201.7928\\47\\34.88002\\-204.0038\\47\\34.26643\\-203.5678\\47\\34.40636\\-201.6146\\47\\35.65787\\-199.6615\\47\\39.5113\\-195.7553\\47\\40.0397\\-193.8021\\47\\40.46886\\-191.849\\47\\41.5119\\-189.8959\\47\\42.69252\\-188.394\\47\\44.64565\\-186.7758\\47\\46.59877\\-185.0266\\47\\48.5519\\-183.9843\\47\\50.50502\\-183.1549\\47\\52.45815\\-182.6937\\47\\54.41127\\-182.6937\\47\\58.31752\\-183.168\\47\\60.27065\\-184.0741\\47\\62.22377\\-184.6754\\47\\64.1769\\-185.6078\\47\\68.42428\\-189.8959\\47\\69.62734\\-191.849\\47\\71.05507\\-193.8021\\47\\72.76297\\-197.7084\\47\\73.46886\\-199.6615\\47\\73.94253\\-200.2347\\47\\75.90582\\-201.6146\\47\\77.84878\\-202.7451\\47\\78.57467\\-203.5678\\47\\77.84878\\-204.3219\\47\\75.89565\\-204.461\\47\\73.94253\\-204.8491\\47\\73.40123\\-205.5209\\47\\73.08862\\-207.474\\47\\72.60586\\-209.4271\\47\\70.9954\\-211.3803\\47\\69.51961\\-213.3334\\47\\68.08315\\-214.6689\\47\\66.13003\\-215.1644\\47\\64.1769\\-216.0303\\47\\62.22377\\-216.6903\\47\\60.27065\\-216.9467\\47\\54.41127\\-216.9578\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "511"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "70.03628\\-143.473\\47\\68.08315\\-142.2359\\47\\66.13003\\-141.7169\\47\\64.1769\\-141.7014\\47\\62.61153\\-141.0678\\47\\58.62204\\-139.1146\\47\\55.16314\\-137.1615\\47\\54.41127\\-136.5632\\47\\53.12011\\-135.2084\\47\\52.40729\\-133.2553\\47\\52.24551\\-131.3021\\47\\52.27115\\-127.3959\\47\\52.21066\\-125.4428\\47\\51.42149\\-123.4896\\47\\50.50502\\-121.7202\\47\\49.26167\\-119.5834\\47\\47.33366\\-117.6303\\47\\45.52406\\-115.6771\\47\\43.41724\\-111.7709\\47\\42.95518\\-109.8178\\47\\43.70257\\-107.8646\\47\\45.556\\-105.9115\\47\\46.89243\\-103.9584\\47\\49.26977\\-102.0053\\47\\49.97402\\-100.0521\\47\\50.50502\\-99.13857\\47\\52.45815\\-98.405\\47\\54.41127\\-99.36954\\47\\55.14236\\-100.0521\\47\\56.1406\\-102.0053\\47\\56.60012\\-103.9584\\47\\57.27555\\-107.8646\\47\\58.02456\\-109.8178\\47\\59.93456\\-113.724\\47\\61.01999\\-115.6771\\47\\62.99649\\-117.6303\\47\\64.3886\\-119.5834\\47\\65.405\\-121.5365\\47\\67.13726\\-123.4896\\47\\67.55302\\-125.4428\\47\\68.79072\\-127.3959\\47\\70.90366\\-129.349\\47\\72.56421\\-131.3021\\47\\72.79778\\-133.2553\\47\\72.01211\\-135.2084\\47\\71.69643\\-137.1615\\47\\71.69643\\-139.1146\\47\\71.55471\\-141.0678\\47\\70.62694\\-143.0209\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "512"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "103.2394\\-186.8877\\47\\102.2004\\-185.9896\\47\\100.6372\\-184.0365\\47\\98.68015\\-180.1303\\47\\98.65614\\-178.1771\\47\\97.84389\\-176.224\\47\\96.7155\\-174.2709\\47\\96.5698\\-172.3178\\47\\95.89539\\-170.3646\\47\\94.84547\\-168.4115\\47\\95.29047\\-166.4584\\47\\95.79388\\-162.5521\\47\\96.83815\\-160.599\\47\\97.38003\\-160.0571\\47\\99.33315\\-159.2952\\47\\101.2863\\-160.4272\\47\\102.6407\\-162.5521\\47\\103.2394\\-164.0099\\47\\105.1925\\-166.1021\\47\\106.6369\\-168.4115\\47\\107.1457\\-169.9287\\47\\108.5698\\-172.3178\\47\\108.6164\\-174.2709\\47\\108.8379\\-176.224\\47\\109.7439\\-178.1771\\47\\110.1784\\-180.1303\\47\\109.7518\\-182.0834\\47\\109.0322\\-184.0365\\47\\108.8264\\-185.9896\\47\\107.1457\\-187.5836\\47\\105.1925\\-187.4808\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002278"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "513"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "105.1925\\-215.8586\\47\\104.6238\\-215.2865\\47\\103.8021\\-213.3334\\47\\105.1925\\-212.1985\\47\\107.1457\\-213.0497\\47\\107.4638\\-213.3334\\47\\108.4325\\-215.2865\\47\\107.1457\\-216.7147\\47"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "514"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-107.6981\\-192.7657\\49\\-109.6512\\-191.517\\49\\-111.7427\\-189.8959\\49\\-113.3151\\-187.9428\\49\\-114.2883\\-185.9896\\49\\-114.8534\\-184.0365\\49\\-114.8699\\-180.1303\\49\\-114.0833\\-178.1771\\49\\-113.5575\\-177.4836\\49\\-112.1609\\-174.2709\\49\\-111.6043\\-173.4984\\49\\-110.235\\-170.3646\\49\\-109.6512\\-169.6187\\49\\-109.0304\\-168.4115\\49\\-107.5059\\-166.4584\\49\\-106.1647\\-164.5053\\49\\-99.8856\\-158.2404\\49\\-97.93247\\-157.204\\49\\-95.97935\\-157.7282\\49\\-95.07976\\-158.6459\\49\\-94.74091\\-160.599\\49\\-95.0753\\-162.5521\\49\\-95.35411\\-166.4584\\49\\-95.80115\\-168.4115\\49\\-97.03729\\-170.3646\\49\\-97.34274\\-172.3178\\49\\-97.93247\\-173.3738\\49\\-98.7197\\-174.2709\\49\\-99.70734\\-176.224\\49\\-101.2202\\-178.1771\\49\\-101.2921\\-180.1303\\49\\-102.3393\\-182.0834\\49\\-103.2723\\-184.0365\\49\\-103.2941\\-185.9896\\49\\-105.0553\\-189.8959\\49\\-105.4688\\-191.849\\49\\-105.745\\-192.1855\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "515"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-78.40122\\-142.1184\\49\\-80.35435\\-140.2002\\49\\-82.30747\\-139.7907\\49\\-83.06953\\-139.1146\\49\\-83.51861\\-137.1615\\49\\-82.40513\\-135.2084\\49\\-80.35435\\-133.1459\\49\\-79.01884\\-131.3021\\49\\-79.27824\\-129.349\\49\\-78.88211\\-127.3959\\49\\-78.40122\\-126.9941\\49\\-76.4481\\-126.8121\\49\\-75.18461\\-125.4428\\49\\-73.87556\\-123.4896\\49\\-73.0387\\-121.5365\\49\\-71.2617\\-119.5834\\49\\-70.58872\\-117.9598\\49\\-69.26653\\-115.6771\\49\\-67.51719\\-113.724\\49\\-66.45868\\-111.7709\\49\\-66.06252\\-107.8646\\49\\-65.53515\\-105.9115\\49\\-64.63461\\-103.9584\\49\\-64.0873\\-100.0521\\49\\-59.31657\\-96.14588\\49\\-58.86998\\-95.69655\\49\\-56.91685\\-95.10168\\49\\-55.67448\\-94.19276\\49\\-53.0106\\-91.67579\\49\\-51.05748\\-90.84844\\49\\-49.10435\\-90.53241\\49\\-47.32011\\-92.23963\\49\\-46.06306\\-96.14588\\49\\-44.70061\\-98.09901\\49\\-43.94741\\-100.0521\\49\\-42.55888\\-102.0053\\49\\-42.97444\\-103.9584\\49\\-43.85459\\-105.9115\\49\\-44.62002\\-107.8646\\49\\-46.28237\\-109.8178\\49\\-47.15123\\-110.4635\\49\\-49.4586\\-111.7709\\49\\-53.0106\\-113.4139\\49\\-54.96373\\-114.9295\\49\\-57.59642\\-117.6303\\49\\-58.2952\\-119.5834\\49\\-59.56609\\-121.5365\\49\\-60.45928\\-123.4896\\49\\-61.67207\\-125.4428\\49\\-61.75249\\-127.3959\\49\\-60.53013\\-129.349\\49\\-60.78554\\-131.3021\\49\\-61.85934\\-133.2553\\49\\-62.77623\\-134.1983\\49\\-64.72935\\-135.7954\\49\\-66.68247\\-137.0631\\49\\-68.6356\\-138.7416\\49\\-70.58872\\-139.8842\\49\\-72.54185\\-140.7916\\49\\-74.49497\\-141.8921\\49\\-76.4481\\-142.3896\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "516"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-33.47935\\-139.5426\\49\\-35.43248\\-138.2376\\49\\-37.3856\\-137.5869\\49\\-39.33873\\-137.3485\\49\\-41.29185\\-136.4411\\49\\-43.24498\\-135.7889\\49\\-45.1981\\-135.5722\\49\\-47.15123\\-135.722\\49\\-49.10435\\-135.7405\\49\\-51.63068\\-137.1615\\49\\-53.0106\\-137.5933\\49\\-54.96373\\-137.5933\\49\\-55.82152\\-137.1615\\49\\-56.91685\\-135.895\\49\\-57.21785\\-135.2084\\49\\-55.58171\\-133.2553\\49\\-54.17079\\-131.3021\\49\\-53.0106\\-129.5161\\49\\-51.05748\\-127.2672\\49\\-47.15123\\-124.2394\\49\\-45.1981\\-123.0457\\49\\-43.24498\\-123.9516\\49\\-41.29185\\-122.6816\\49\\-39.33873\\-121.862\\49\\-37.3856\\-122.2563\\49\\-35.43248\\-122.8481\\49\\-33.47935\\-123.2472\\49\\-31.52623\\-122.7229\\49\\-30.62337\\-121.5365\\49\\-29.5731\\-120.7015\\49\\-27.61998\\-119.9993\\49\\-25.66685\\-120.6642\\49\\-24.90942\\-121.5365\\49\\-21.99189\\-125.4428\\49\\-19.80748\\-126.6269\\49\\-18.94704\\-127.3959\\49\\-18.56223\\-129.349\\49\\-19.80748\\-130.5027\\49\\-21.7606\\-131.9874\\49\\-23.71373\\-132.4356\\49\\-25.62616\\-133.2553\\49\\-26.60585\\-135.2084\\49\\-26.03794\\-137.1615\\49\\-27.61998\\-138.2451\\49\\-28.6118\\-139.1146\\49\\-29.5731\\-139.5573\\49\\-31.52623\\-139.6736\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "73"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "517"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-17.85435\\-207.8735\\49\\-19.80748\\-206.1795\\49\\-21.07555\\-205.5209\\49\\-23.71373\\-202.9727\\49\\-24.61908\\-201.6146\\49\\-25.66685\\-200.891\\49\\-27.61998\\-201.5501\\49\\-29.5731\\-202.4986\\49\\-30.81334\\-203.5678\\49\\-31.52623\\-204.0218\\49\\-33.47935\\-204.3502\\49\\-35.43248\\-205.3678\\49\\-37.3856\\-206.0179\\49\\-41.29185\\-206.0092\\49\\-42.73926\\-205.5209\\49\\-45.1981\\-204.1915\\49\\-45.9654\\-203.5678\\49\\-47.54883\\-201.6146\\49\\-48.61103\\-199.6615\\49\\-49.10435\\-199.266\\49\\-51.05748\\-198.3201\\49\\-53.0106\\-198.7026\\49\\-54.96373\\-200.5094\\49\\-56.92615\\-201.6146\\49\\-57.61212\\-199.6615\\49\\-56.43499\\-197.7084\\49\\-55.74857\\-195.7553\\49\\-54.96373\\-194.9136\\49\\-53.0106\\-194.2235\\49\\-51.05748\\-194.3934\\49\\-49.89862\\-193.8021\\49\\-47.70438\\-189.8959\\49\\-47.15123\\-188.7495\\49\\-45.1981\\-186.4779\\49\\-44.52791\\-185.9896\\49\\-43.24498\\-185.562\\49\\-33.47935\\-185.5521\\49\\-31.52623\\-186.8469\\49\\-29.5731\\-187.5508\\49\\-28.87892\\-187.9428\\49\\-27.61998\\-188.9672\\49\\-26.06708\\-189.8959\\49\\-24.64322\\-191.849\\49\\-23.71373\\-192.7257\\49\\-21.7606\\-191.8407\\49\\-19.80748\\-190.8156\\49\\-17.85435\\-189.5959\\49\\-13.9481\\-189.5704\\49\\-12.67314\\-189.8959\\49\\-10.04185\\-191.385\\49\\-8.088726\\-191.5096\\49\\-6.949403\\-191.849\\49\\-6.135601\\-192.3517\\49\\-4.618173\\-193.8021\\49\\-4.182476\\-194.3801\\49\\-3.704584\\-195.7553\\49\\-2.075633\\-197.7084\\49\\-0.276226\\-198.7646\\49\\1.676899\\-199.2404\\49\\3.630024\\-200.0097\\49\\5.583149\\-200.3442\\49\\7.447495\\-201.6146\\49\\5.583149\\-202.3623\\49\\3.630024\\-202.5238\\49\\1.676899\\-201.9507\\49\\-0.276226\\-201.6522\\49\\-4.182476\\-202.5257\\49\\-5.643147\\-203.5678\\49\\-7.312952\\-205.5209\\49\\-8.088726\\-206.8179\\49\\-8.777122\\-207.474\\49\\-10.04185\\-207.9502\\49\\-15.90123\\-207.9502\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "58"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "518"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "29.02065\\-151.0925\\49\\27.06752\\-149.6321\\49\\26.50701\\-148.8803\\49\\25.81283\\-146.9271\\49\\25.1144\\-145.5303\\49\\23.16127\\-144.795\\49\\21.20815\\-145.5115\\49\\20.72997\\-144.974\\49\\20.54343\\-143.0209\\49\\19.25502\\-141.7325\\49\\17.3019\\-141.5285\\49\\15.34877\\-141.8236\\49\\13.39565\\-141.5998\\49\\12.72479\\-141.0678\\49\\10.79391\\-139.1146\\49\\11.89557\\-137.1615\\49\\13.39565\\-136.0675\\49\\15.23852\\-135.2084\\49\\14.0159\\-133.2553\\49\\13.39565\\-132.9153\\49\\11.87276\\-131.3021\\49\\12.3599\\-129.349\\49\\16.24631\\-125.4428\\49\\19.25502\\-122.8438\\49\\23.16127\\-122.907\\49\\25.1144\\-122.2585\\49\\27.06752\\-122.1062\\49\\29.02065\\-122.1289\\49\\30.97377\\-122.4777\\49\\32.9269\\-123.1431\\49\\34.88002\\-123.9692\\49\\36.83315\\-124.0033\\49\\38.78627\\-124.1872\\49\\40.7394\\-125.0962\\49\\41.09045\\-125.4428\\49\\42.02181\\-127.3959\\49\\43.44625\\-129.349\\49\\44.64565\\-130.2426\\49\\48.5519\\-130.3089\\49\\49.5395\\-131.3021\\49\\49.34536\\-133.2553\\49\\48.5519\\-135.6605\\49\\47.48539\\-137.1615\\49\\46.59877\\-137.6137\\49\\44.64565\\-137.4538\\49\\42.69252\\-136.0774\\49\\40.7394\\-135.8187\\49\\38.78627\\-136.3126\\49\\36.83315\\-137.5285\\49\\34.88002\\-137.8435\\49\\32.9269\\-138.5803\\49\\32.38228\\-139.1146\\49\\31.43105\\-141.0678\\49\\32.34472\\-143.0209\\49\\32.7399\\-144.974\\49\\32.52768\\-146.9271\\49\\31.76458\\-148.8803\\49\\30.97377\\-149.7675\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "519"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-216.0486\\49\\50.50502\\-214.8252\\49\\48.5519\\-214.1224\\49\\46.59877\\-212.5212\\49\\44.64565\\-210.7497\\49\\41.76899\\-207.474\\49\\41.03633\\-205.5209\\49\\40.77696\\-203.5678\\49\\40.06931\\-201.6146\\49\\38.78627\\-200.5473\\49\\36.83315\\-202.3244\\49\\35.26843\\-201.6146\\49\\35.8815\\-199.6615\\49\\36.83315\\-198.6423\\49\\39.72965\\-195.7553\\49\\40.46886\\-193.8021\\49\\40.5277\\-191.849\\49\\41.68372\\-189.8959\\49\\46.59877\\-185.0312\\49\\48.5519\\-183.9699\\49\\50.50502\\-183.1204\\49\\52.45815\\-182.5019\\49\\54.41127\\-182.2704\\49\\56.3644\\-182.3652\\49\\60.27065\\-183.9843\\49\\62.22377\\-184.0441\\49\\64.1769\\-185.0872\\49\\66.13003\\-187.0563\\49\\67.12793\\-187.9428\\49\\69.08541\\-189.8959\\49\\70.6245\\-191.849\\49\\71.62558\\-193.8021\\49\\72.75146\\-195.7553\\49\\73.37891\\-197.7084\\49\\73.71873\\-199.6615\\49\\75.89565\\-201.607\\49\\77.84878\\-202.1121\\49\\79.05422\\-203.5678\\49\\77.84878\\-204.5784\\49\\75.89565\\-204.2341\\49\\73.96542\\-205.5209\\49\\73.35217\\-209.4271\\49\\72.02847\\-211.3803\\49\\70.03628\\-213.7981\\49\\68.08315\\-214.9717\\49\\64.1769\\-216.7003\\49\\62.22377\\-216.9805\\49\\56.3644\\-217.0158\\49\\54.41127\\-216.8379\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "520"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "70.03628\\-141.6766\\49\\68.08315\\-140.7073\\49\\66.13003\\-139.8948\\49\\64.1769\\-139.7151\\49\\62.22377\\-139.6343\\49\\60.27065\\-138.3806\\49\\58.31752\\-137.6228\\49\\56.3644\\-136.4859\\49\\54.41127\\-134.9059\\49\\53.20008\\-133.2553\\49\\52.46578\\-131.3021\\49\\51.9911\\-129.349\\49\\51.88334\\-127.3959\\49\\51.87467\\-125.4428\\49\\51.58384\\-123.4896\\49\\50.79799\\-121.5365\\49\\49.26167\\-119.5834\\49\\47.33366\\-117.6303\\49\\45.89625\\-115.6771\\49\\45.12798\\-113.724\\49\\43.20492\\-111.7709\\49\\41.46468\\-109.8178\\49\\42.12882\\-107.8646\\49\\44.00773\\-105.9115\\49\\45.55392\\-103.9584\\49\\47.64268\\-102.0053\\49\\48.91384\\-100.0521\\49\\50.50502\\-98.80192\\49\\52.45815\\-98.65313\\49\\54.41127\\-99.22073\\49\\55.37761\\-100.0521\\49\\55.90664\\-102.0053\\49\\56.25589\\-103.9584\\49\\56.34169\\-105.9115\\49\\56.95144\\-107.8646\\49\\57.80261\\-109.8178\\49\\58.98432\\-111.7709\\49\\61.01999\\-115.6771\\49\\63.00219\\-117.6303\\49\\64.35129\\-119.5834\\49\\65.24184\\-121.5365\\49\\66.8753\\-123.4896\\49\\67.73663\\-125.4428\\49\\68.08315\\-125.9355\\49\\69.55704\\-127.3959\\49\\71.9894\\-129.3881\\49\\73.31861\\-131.3021\\49\\73.304\\-133.2553\\49\\71.70757\\-137.1615\\49\\71.5428\\-139.1146\\49\\70.75101\\-141.0678\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "7"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "521"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "105.1925\\-216.2336\\49\\104.295\\-215.2865\\49\\104.3399\\-213.3334\\49\\105.1925\\-212.7158\\49\\107.1457\\-213.7725\\49\\108.225\\-215.2865\\49\\107.1457\\-216.6964\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002277"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "31"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "522"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "107.1457\\-188.964\\49\\106.0493\\-187.9428\\49\\103.6543\\-185.9896\\49\\101.7176\\-182.0834\\49\\100.6615\\-180.1303\\49\\100.5017\\-178.1771\\49\\99.75632\\-176.224\\49\\98.68417\\-174.2709\\49\\98.22166\\-172.3178\\49\\97.09241\\-170.3646\\49\\96.61505\\-168.4115\\49\\96.46631\\-166.4584\\49\\96.19187\\-164.5053\\49\\95.76741\\-162.5521\\49\\96.65315\\-160.599\\49\\99.33315\\-157.9074\\49\\101.2863\\-158.1698\\49\\103.2394\\-160.1416\\49\\104.8143\\-162.5521\\49\\106.5421\\-164.5053\\49\\107.1457\\-165.8424\\49\\107.628\\-166.4584\\49\\108.6041\\-168.4115\\49\\109.0988\\-169.686\\49\\109.5698\\-170.3646\\49\\110.5198\\-172.3178\\49\\110.57\\-176.224\\49\\111.1062\\-180.1303\\49\\110.5829\\-184.0365\\49\\110.403\\-187.9428\\49\\109.0988\\-189.6666\\49"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "523"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.6043\\-190.8619\\51\\-113.5575\\-189.3638\\51\\-114.7913\\-187.9428\\51\\-115.5106\\-186.3195\\51\\-116.6836\\-184.0365\\51\\-116.8613\\-182.0834\\51\\-116.8701\\-180.1303\\51\\-116.7429\\-178.1771\\51\\-115.5106\\-176.1155\\51\\-114.8302\\-174.2709\\51\\-113.5575\\-172.1783\\51\\-112.8577\\-170.3646\\51\\-111.6043\\-168.4234\\51\\-110.1771\\-166.4584\\51\\-108.2433\\-164.5053\\51\\-100.3447\\-156.6928\\51\\-99.8856\\-156.3064\\51\\-97.93247\\-155.9773\\51\\-97.14082\\-156.6928\\51\\-95.44308\\-158.6459\\51\\-95.32306\\-160.599\\51\\-95.91277\\-162.5521\\51\\-96.88402\\-164.5053\\51\\-97.32611\\-166.4584\\51\\-97.93247\\-168.1764\\51\\-99.2468\\-170.3646\\51\\-99.8856\\-172.2527\\51\\-102.4766\\-176.224\\51\\-103.2838\\-178.1771\\51\\-103.3102\\-180.1303\\51\\-104.3714\\-182.0834\\51\\-105.2533\\-184.0365\\51\\-105.277\\-185.9896\\51\\-105.4688\\-187.9428\\51\\-106.4367\\-189.8959\\51\\-107.6981\\-191.3778\\51\\-109.6512\\-191.5785\\51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "65"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "524"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-78.40122\\-141.9629\\51\\-80.35435\\-140.3427\\51\\-82.30747\\-139.4402\\51\\-82.66579\\-139.1146\\51\\-83.64299\\-137.1615\\51\\-83.20103\\-135.2084\\51\\-82.30747\\-134.2044\\51\\-79.39937\\-131.3021\\51\\-78.98609\\-129.349\\51\\-78.83146\\-127.3959\\51\\-78.40122\\-126.999\\51\\-76.4481\\-126.6309\\51\\-75.36248\\-125.4428\\51\\-74.49497\\-123.5007\\51\\-73.18433\\-121.5365\\51\\-71.2683\\-119.5834\\51\\-70.58872\\-117.9558\\51\\-69.26653\\-115.6771\\51\\-68.01565\\-113.724\\51\\-67.04868\\-111.7709\\51\\-66.23859\\-109.8178\\51\\-65.64047\\-107.8646\\51\\-64.64858\\-105.9115\\51\\-64.31341\\-103.9584\\51\\-64.24974\\-102.0053\\51\\-63.68409\\-100.0521\\51\\-62.77623\\-99.20791\\51\\-60.8231\\-97.62534\\51\\-58.86998\\-96.82636\\51\\-58.10393\\-96.14588\\51\\-55.59822\\-94.19276\\51\\-54.96373\\-93.56536\\51\\-53.0106\\-92.00779\\51\\-51.05748\\-91.24196\\51\\-49.10435\\-91.6915\\51\\-48.50179\\-92.23963\\51\\-47.41214\\-94.19276\\51\\-46.96423\\-96.14588\\51\\-46.1092\\-98.09901\\51\\-44.70693\\-100.0521\\51\\-43.5982\\-102.0053\\51\\-43.93198\\-103.9584\\51\\-44.50056\\-105.9115\\51\\-45.59503\\-107.8646\\51\\-47.36908\\-109.8178\\51\\-49.96792\\-111.7709\\51\\-51.05748\\-112.447\\51\\-53.0106\\-113.1369\\51\\-55.45796\\-115.6771\\51\\-57.16434\\-117.6303\\51\\-57.83623\\-119.5834\\51\\-58.99205\\-121.5365\\51\\-59.81575\\-123.4896\\51\\-60.81547\\-125.4428\\51\\-61.18456\\-127.3959\\51\\-60.50829\\-129.349\\51\\-61.4505\\-131.3021\\51\\-62.77623\\-133.0864\\51\\-65.23798\\-135.2084\\51\\-66.68247\\-136.2697\\51\\-68.6356\\-137.5483\\51\\-70.58872\\-138.3443\\51\\-72.54185\\-139.6119\\51\\-74.49497\\-140.3684\\51\\-76.4481\\-141.5348\\51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "525"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-203.9258\\51\\-42.17236\\-203.5678\\51\\-43.24498\\-202.7888\\51\\-45.1981\\-200.9876\\51\\-46.17466\\-199.6615\\51\\-47.15123\\-198.9375\\51\\-49.10435\\-198.4316\\51\\-51.05748\\-198.7086\\51\\-53.0106\\-200.2186\\51\\-54.96373\\-200.6512\\51\\-56.07246\\-199.6615\\51\\-55.27762\\-197.7084\\51\\-53.64584\\-195.7553\\51\\-53.0106\\-195.3132\\51\\-49.10435\\-195.309\\51\\-47.15123\\-194.7241\\51\\-45.91911\\-193.8021\\51\\-45.66774\\-191.849\\51\\-45.1981\\-190.6185\\51\\-43.24498\\-188.4981\\51\\-42.33142\\-187.9428\\51\\-41.29185\\-187.6968\\51\\-33.47935\\-187.6968\\51\\-31.52623\\-189.3121\\51\\-29.18056\\-191.849\\51\\-28.65079\\-193.8021\\51\\-27.61998\\-194.7997\\51\\-25.66685\\-195.1943\\51\\-23.71373\\-195.3577\\51\\-21.7606\\-195.1838\\51\\-19.44657\\-193.8021\\51\\-17.85435\\-193.154\\51\\-13.9481\\-193.1367\\51\\-11.99498\\-193.352\\51\\-10.43775\\-193.8021\\51\\-8.088726\\-195.3544\\51\\-7.674748\\-195.7553\\51\\-4.182476\\-197.9924\\51\\-2.229351\\-199.1703\\51\\-1.00125\\-199.6615\\51\\-2.229351\\-201.4236\\51\\-4.182476\\-201.5906\\51\\-6.135601\\-201.1004\\51\\-8.088726\\-201.4134\\51\\-10.04185\\-202.2101\\51\\-11.99498\\-202.4267\\51\\-13.9481\\-202.4913\\51\\-17.85435\\-202.492\\51\\-19.80748\\-202.2874\\51\\-21.7606\\-201.002\\51\\-25.66685\\-200.4509\\51\\-29.5731\\-200.8257\\51\\-33.47935\\-202.5631\\51\\-35.43248\\-203.9235\\51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "526"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-33.47935\\-137.6432\\51\\-35.43248\\-136.6445\\51\\-37.3856\\-135.9191\\51\\-41.29185\\-135.5467\\51\\-43.24498\\-134.5288\\51\\-45.1981\\-133.9877\\51\\-47.15123\\-133.7674\\51\\-51.05748\\-133.5482\\51\\-51.38971\\-133.2553\\51\\-51.77228\\-131.3021\\51\\-51.05748\\-130.2673\\51\\-50.19095\\-129.349\\51\\-49.32408\\-127.3959\\51\\-47.15123\\-125.0415\\51\\-45.1981\\-123.9182\\51\\-43.24498\\-124.2522\\51\\-41.71978\\-123.4896\\51\\-39.33873\\-122.135\\51\\-37.3856\\-123.0014\\51\\-35.43248\\-124.629\\51\\-33.04158\\-125.4428\\51\\-31.52623\\-126.1403\\51\\-30.54966\\-125.4428\\51\\-29.28237\\-121.5365\\51\\-27.98379\\-119.5834\\51\\-27.61998\\-119.2219\\51\\-25.66685\\-119.5947\\51\\-24.87542\\-121.5365\\51\\-21.7606\\-124.9603\\51\\-19.80748\\-126.7711\\51\\-18.94665\\-127.3959\\51\\-17.93762\\-129.349\\51\\-19.80748\\-130.6671\\51\\-21.7606\\-131.799\\51\\-23.71373\\-131.8241\\51\\-25.66685\\-131.584\\51\\-29.5731\\-129.6777\\51\\-30.89299\\-131.3021\\51\\-31.12047\\-133.2553\\51\\-31.00964\\-135.2084\\51\\-31.47928\\-137.1615\\51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "527"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "29.02065\\-151.3128\\51\\27.06752\\-150.0977\\51\\26.15898\\-148.8803\\51\\25.19578\\-146.9271\\51\\24.76563\\-144.974\\51\\24.6083\\-143.0209\\51\\25.1144\\-141.243\\51\\27.06752\\-141.3085\\51\\27.43904\\-141.0678\\51\\27.84377\\-139.1146\\51\\27.06752\\-138.5609\\51\\25.1144\\-138.2409\\51\\23.16127\\-138.2507\\51\\21.20815\\-137.3344\\51\\20.0338\\-135.2084\\51\\18.01322\\-133.2553\\51\\17.3019\\-132.7628\\51\\15.34877\\-132.1775\\51\\13.39565\\-131.996\\51\\11.44252\\-131.4891\\51\\11.1707\\-131.3021\\51\\11.25842\\-129.349\\51\\15.34877\\-125.2489\\51\\17.3019\\-124.0517\\51\\19.25502\\-123.2902\\51\\21.20815\\-123.9188\\51\\22.1572\\-123.4896\\51\\24.51625\\-121.5365\\51\\25.1144\\-121.1275\\51\\27.06752\\-122.1062\\51\\29.02065\\-122.1062\\51\\30.97377\\-122.5886\\51\\32.9269\\-123.5844\\51\\34.88002\\-124.1353\\51\\36.83315\\-124.2763\\51\\38.78627\\-124.6388\\51\\40.7394\\-126.4073\\51\\41.52541\\-127.3959\\51\\42.69252\\-129.1423\\51\\44.64565\\-130.8588\\51\\46.59877\\-131.0432\\51\\47.35832\\-131.3021\\51\\46.59877\\-133.2664\\51\\44.64565\\-133.8656\\51\\42.69252\\-133.7873\\51\\40.7394\\-133.9745\\51\\38.78627\\-134.6906\\51\\36.83315\\-135.8809\\51\\34.88002\\-136.4091\\51\\32.9269\\-137.7377\\51\\31.69534\\-139.1146\\51\\32.40057\\-141.0678\\51\\32.80483\\-143.0209\\51\\32.83216\\-146.9271\\51\\31.99167\\-148.8803\\51\\30.97377\\-149.9202\\51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "528"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-214.465\\51\\46.59877\\-212.3618\\51\\43.75744\\-209.4271\\51\\42.45517\\-207.474\\51\\41.83982\\-205.5209\\51\\41.56874\\-203.5678\\51\\40.7394\\-201.4465\\51\\38.78627\\-200.6139\\51\\36.83315\\-202.5436\\51\\35.71297\\-201.6146\\51\\36.34487\\-199.6615\\51\\36.83315\\-199.0566\\51\\38.78627\\-197.2628\\51\\40.11161\\-195.7553\\51\\40.90099\\-191.849\\51\\41.7715\\-189.8959\\51\\44.64565\\-186.9844\\51\\46.59877\\-185.12\\51\\50.50502\\-183.4714\\51\\52.45815\\-183.0011\\51\\54.41127\\-182.6358\\51\\56.3644\\-182.6627\\51\\58.31752\\-183.2001\\51\\60.27065\\-183.9843\\51\\62.22377\\-184.4383\\51\\64.1769\\-185.1797\\51\\66.13003\\-187.0366\\51\\68.08315\\-188.309\\51\\69.43069\\-189.8959\\51\\70.91884\\-191.849\\51\\72.59257\\-193.8021\\51\\73.39999\\-195.7553\\51\\74.08099\\-199.6615\\51\\75.89565\\-201.2613\\51\\77.84878\\-201.9851\\51\\79.23125\\-203.5678\\51\\77.84878\\-204.5923\\51\\75.89565\\-204.4629\\51\\74.61101\\-205.5209\\51\\73.74309\\-207.474\\51\\73.7068\\-209.4271\\51\\72.71908\\-211.3803\\51\\70.03628\\-214.0714\\51\\64.1769\\-216.9921\\51\\58.31752\\-217.0158\\51\\56.3644\\-216.8307\\51\\54.41127\\-216.2962\\51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "529"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "68.08315\\-139.5453\\51\\66.13003\\-138.4365\\51\\64.1769\\-137.9217\\51\\62.22377\\-137.6948\\51\\58.31752\\-135.9548\\51\\56.3644\\-134.8829\\51\\54.41127\\-133.2162\\51\\52.45815\\-130.741\\51\\51.48159\\-129.349\\51\\51.03603\\-127.3959\\51\\50.98397\\-123.4896\\51\\50.22889\\-121.5365\\51\\49.10753\\-119.5834\\51\\47.33366\\-117.6303\\51\\45.97733\\-115.6771\\51\\44.91576\\-113.724\\51\\44.64565\\-113.4558\\51\\42.69252\\-112.2417\\51\\40.7394\\-110.651\\51\\39.90158\\-109.8178\\51\\40.20229\\-107.8646\\51\\40.7394\\-107.0291\\51\\41.74526\\-105.9115\\51\\43.28883\\-103.9584\\51\\44.64565\\-102.6252\\51\\45.42905\\-102.0053\\51\\46.87672\\-100.0521\\51\\48.5519\\-98.86858\\51\\52.45815\\-98.90456\\51\\54.41127\\-99.61478\\51\\54.86535\\-100.0521\\51\\55.36781\\-102.0053\\51\\56.1527\\-103.9584\\51\\56.25589\\-105.9115\\51\\56.5882\\-107.8646\\51\\57.27684\\-109.8178\\51\\58.97033\\-111.7709\\51\\60.27065\\-114.1326\\51\\61.01999\\-115.6771\\51\\63.00219\\-117.6303\\51\\64.67963\\-119.5834\\51\\65.52035\\-121.5365\\51\\67.01192\\-123.4896\\51\\68.08315\\-125.0222\\51\\71.37652\\-127.3959\\51\\72.81148\\-129.349\\51\\73.68343\\-131.3021\\51\\73.16855\\-133.2553\\51\\72.21476\\-135.2084\\51\\71.71703\\-137.1615\\51\\70.95345\\-139.1146\\51\\70.03628\\-139.873\\51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002276"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "530"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "109.0988\\-192.4585\\51\\106.9339\\-189.8959\\51\\106.1691\\-187.9428\\51\\104.7836\\-185.9896\\51\\104.6652\\-184.0365\\51\\103.7195\\-182.0834\\51\\102.6676\\-180.1303\\51\\102.3076\\-178.1771\\51\\100.9987\\-176.224\\51\\100.6799\\-174.2709\\51\\99.96597\\-172.3178\\51\\98.73565\\-170.3646\\51\\98.42317\\-168.4115\\51\\97.68967\\-166.4584\\51\\97.21365\\-164.5053\\51\\96.85709\\-162.5521\\51\\98.09389\\-160.599\\51\\98.70157\\-158.6459\\51\\99.33315\\-157.2287\\51\\99.72552\\-156.6928\\51\\99.33315\\-154.7091\\51\\101.2863\\-155.028\\51\\103.2394\\-156.9784\\51\\104.5887\\-158.6459\\51\\105.1925\\-159.7923\\51\\105.818\\-160.599\\51\\107.7248\\-162.5521\\51\\108.9725\\-164.5053\\51\\110.4503\\-166.4584\\51\\111.043\\-168.4115\\51\\112.336\\-170.3646\\51\\112.49\\-172.3178\\51\\112.4802\\-174.2709\\51\\112.8643\\-176.224\\51\\113.005\\-178.2687\\51\\112.5765\\-180.1303\\51\\113.1729\\-182.0834\\51\\113.1445\\-184.0365\\51\\112.5516\\-185.9896\\51\\112.49\\-189.8959\\51\\112.2687\\-191.849\\51\\111.0519\\-193.1161\\51"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "531"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-190.4886\\53\\-114.473\\-189.8959\\53\\-115.5106\\-188.9433\\53\\-116.1599\\-187.9428\\53\\-116.3347\\-185.9896\\53\\-118.0667\\-184.0365\\53\\-118.6573\\-182.0834\\53\\-118.8597\\-180.1303\\53\\-118.6801\\-178.1771\\53\\-118.3375\\-176.224\\53\\-117.5838\\-174.2709\\53\\-115.6501\\-170.3646\\53\\-114.3213\\-168.4115\\53\\-111.6043\\-165.6594\\53\\-108.4182\\-162.5521\\53\\-107.6981\\-161.9725\\53\\-102.384\\-156.6928\\53\\-101.8387\\-156.0182\\53\\-99.8856\\-155.1676\\53\\-97.93247\\-155.7601\\53\\-97.01814\\-156.6928\\53\\-96.35349\\-158.6459\\53\\-96.33041\\-160.599\\53\\-96.80014\\-162.5521\\53\\-98.44296\\-164.5053\\53\\-99.33043\\-166.4584\\53\\-103.1951\\-172.3178\\53\\-103.3417\\-174.2709\\53\\-104.4826\\-176.224\\53\\-105.2709\\-178.1771\\53\\-105.3102\\-180.1303\\53\\-106.3671\\-182.0834\\53\\-107.2314\\-184.0365\\53\\-107.2568\\-187.9428\\53\\-107.5056\\-189.8959\\53\\-107.6981\\-190.1334\\53\\-109.6512\\-191.4333\\53\\-111.6043\\-191.2631\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "532"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-80.35435\\-140.182\\53\\-81.60841\\-139.1146\\53\\-83.44996\\-137.1615\\53\\-83.54903\\-135.2084\\53\\-82.44911\\-133.2553\\53\\-80.35435\\-131.1394\\53\\-78.40122\\-128.5807\\53\\-76.4481\\-126.3066\\53\\-75.81718\\-125.4428\\53\\-75.00029\\-123.4896\\53\\-73.1946\\-121.5365\\53\\-71.2683\\-119.5834\\53\\-70.58872\\-117.9558\\53\\-68.08338\\-113.724\\53\\-67.1172\\-111.7709\\53\\-66.02963\\-109.8178\\53\\-64.30398\\-105.9115\\53\\-63.98759\\-102.0053\\53\\-63.54027\\-100.0521\\53\\-62.77623\\-99.31483\\53\\-60.8231\\-98.60432\\53\\-58.86998\\-97.22952\\53\\-57.63462\\-96.14588\\53\\-54.96373\\-93.56536\\53\\-53.0106\\-92.84669\\53\\-51.05748\\-92.50256\\53\\-49.10435\\-93.87015\\53\\-48.81984\\-94.19276\\53\\-48.25149\\-96.14588\\53\\-46.18935\\-100.0521\\53\\-44.75898\\-102.0053\\53\\-44.5559\\-103.9584\\53\\-45.0111\\-105.9115\\53\\-46.05597\\-107.8646\\53\\-47.76523\\-109.8178\\53\\-49.10435\\-111.141\\53\\-51.05748\\-112.4404\\53\\-53.0106\\-113.3188\\53\\-54.82765\\-115.6771\\53\\-56.91685\\-117.7258\\53\\-58.56601\\-121.5365\\53\\-59.54645\\-123.4896\\53\\-60.0933\\-125.4428\\53\\-60.27378\\-127.3959\\53\\-60.80039\\-129.349\\53\\-61.88794\\-131.3021\\53\\-64.72935\\-134.1519\\53\\-66.68247\\-135.5164\\53\\-68.6356\\-135.9769\\53\\-70.94489\\-137.1615\\53\\-76.4481\\-139.9015\\53\\-78.40122\\-140.7422\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "20"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "533"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-35.43248\\-135.2892\\53\\-37.3856\\-134.2001\\53\\-39.33873\\-133.7614\\53\\-41.29185\\-133.7435\\53\\-43.24498\\-133.459\\53\\-46.83927\\-131.3021\\53\\-47.15123\\-130.7798\\53\\-47.57847\\-129.349\\53\\-47.39723\\-127.3959\\53\\-45.1981\\-125.2897\\53\\-43.24498\\-125.0286\\53\\-39.33873\\-124.8731\\53\\-37.3856\\-125.3629\\53\\-35.43248\\-126.5717\\53\\-34.27037\\-127.3959\\53\\-33.16123\\-129.349\\53\\-33.12489\\-131.3021\\53\\-33.18638\\-133.2553\\53\\-33.47935\\-134.4094\\53\\-34.8671\\-135.2084\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "534"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-33.47935\\-201.6668\\53\\-35.43248\\-201.0522\\53\\-37.3856\\-200.8557\\53\\-41.29185\\-200.8431\\53\\-43.24498\\-200.663\\53\\-45.1981\\-199.6225\\53\\-47.15123\\-199.0582\\53\\-49.10435\\-199.3289\\53\\-51.05748\\-199.9206\\53\\-53.0106\\-200.3055\\53\\-53.956\\-199.6615\\53\\-53.2336\\-197.7084\\53\\-53.0106\\-197.4307\\53\\-51.05748\\-196.0933\\53\\-49.10435\\-195.7325\\53\\-47.15123\\-195.7177\\53\\-45.1981\\-195.3219\\53\\-43.24498\\-194.7787\\53\\-41.29185\\-194.5088\\53\\-39.33873\\-194.0887\\53\\-37.3856\\-194.0326\\53\\-35.43248\\-194.2066\\53\\-31.52623\\-195.1073\\53\\-29.5731\\-196.3493\\53\\-27.61998\\-197.3633\\53\\-25.66685\\-197.4131\\53\\-23.71373\\-197.3513\\53\\-21.7606\\-197.1623\\53\\-17.85435\\-196.6349\\53\\-11.99498\\-196.6349\\53\\-10.04185\\-197.0275\\53\\-8.088726\\-197.7632\\53\\-6.135601\\-198.2031\\53\\-4.182476\\-198.8769\\53\\-2.981218\\-199.6615\\53\\-4.182476\\-200.9794\\53\\-6.135601\\-201.047\\53\\-8.088726\\-200.5554\\53\\-10.04185\\-200.529\\53\\-13.9481\\-200.8506\\53\\-15.90123\\-200.888\\53\\-17.85435\\-201.4627\\53\\-21.7606\\-201.9948\\53\\-23.71373\\-202.6822\\53\\-25.66685\\-202.8279\\53\\-27.61998\\-202.7968\\53\\-29.5731\\-201.9993\\53\\-31.52623\\-201.6676\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "23"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "535"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-21.7606\\-131.5379\\53\\-23.71373\\-131.2313\\53\\-25.66685\\-130.4872\\53\\-27.04218\\-129.349\\53\\-27.34624\\-127.3959\\53\\-28.21202\\-123.4896\\53\\-28.18243\\-121.5365\\53\\-27.61998\\-120.0554\\53\\-27.20954\\-119.5834\\53\\-26.19796\\-117.6303\\53\\-25.66685\\-117.0864\\53\\-23.7218\\-115.6771\\53\\-21.7606\\-116.0745\\53\\-20.70646\\-117.6303\\53\\-21.7606\\-119.289\\53\\-23.71373\\-119.2904\\53\\-24.28444\\-119.5834\\53\\-24.93685\\-121.5365\\53\\-23.24006\\-123.4896\\53\\-21.7606\\-125.4049\\53\\-19.83387\\-127.3959\\53\\-17.70356\\-129.349\\53\\-19.80748\\-131.3969\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "536"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "27.06752\\-151.0933\\53\\25.80406\\-148.8803\\53\\25.22454\\-146.9271\\53\\25.45377\\-144.974\\53\\26.2099\\-143.0209\\53\\28.36358\\-141.0678\\53\\29.02065\\-140.054\\53\\30.97377\\-139.5754\\53\\32.47671\\-141.0678\\53\\32.83216\\-143.0209\\53\\32.84613\\-144.974\\53\\32.62294\\-146.9271\\53\\31.84243\\-148.8803\\53\\29.97998\\-150.8334\\53\\29.02065\\-151.6872\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "537"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "27.06752\\-137.4433\\53\\26.56762\\-137.1615\\53\\24.58261\\-135.2084\\53\\24.10028\\-133.2553\\53\\22.53872\\-131.3021\\53\\21.20815\\-130.004\\53\\17.3019\\-130.8104\\53\\15.34877\\-131.5496\\53\\13.39565\\-131.8074\\53\\11.44252\\-131.799\\53\\10.13543\\-131.3021\\53\\10.52303\\-129.349\\53\\12.77532\\-127.3959\\53\\15.34877\\-124.7821\\53\\17.3019\\-122.9669\\53\\19.25502\\-122.7731\\53\\21.20815\\-123.1454\\53\\22.81702\\-121.5365\\53\\23.16127\\-120.8115\\53\\25.1144\\-120.9408\\53\\25.64628\\-121.5365\\53\\27.06752\\-122.4674\\53\\29.02065\\-122.3832\\53\\30.97377\\-123.1446\\53\\32.9269\\-124.2828\\53\\36.83315\\-125.0484\\53\\38.78627\\-125.7816\\53\\40.7394\\-127.1827\\53\\42.37863\\-129.349\\53\\43.27236\\-131.3021\\53\\42.69252\\-131.7336\\53\\40.7394\\-132.3983\\53\\38.78627\\-133.7082\\53\\36.83315\\-134.4439\\53\\34.88002\\-135.7137\\53\\32.9269\\-136.3792\\53\\31.45188\\-137.1615\\53\\30.97377\\-137.9668\\53\\29.02065\\-137.9938\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "538"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-215.5392\\53\\52.45815\\-215.016\\53\\50.50502\\-214.2944\\53\\48.5519\\-212.8191\\53\\46.59877\\-211.9967\\53\\44.37328\\-209.4271\\53\\43.55283\\-207.474\\53\\42.2958\\-205.5209\\53\\42.00643\\-203.5678\\53\\41.52927\\-201.6146\\53\\40.7394\\-200.771\\53\\38.78627\\-200.9968\\53\\36.83315\\-202.6358\\53\\35.92599\\-201.6146\\53\\36.83315\\-199.9599\\53\\38.78627\\-198.0258\\53\\40.48031\\-195.7553\\53\\40.5277\\-193.8021\\53\\41.48178\\-191.849\\53\\42.04665\\-189.8959\\53\\43.68726\\-187.9428\\53\\44.64565\\-186.9844\\53\\46.59877\\-185.4434\\53\\48.5519\\-184.9422\\53\\50.50502\\-184.2874\\53\\52.45815\\-183.5198\\53\\54.41127\\-183.2857\\53\\56.3644\\-183.2955\\53\\58.31752\\-183.5282\\53\\60.27065\\-184.3663\\53\\62.22377\\-185.0702\\53\\64.1769\\-185.923\\53\\66.13003\\-187.1487\\53\\68.08315\\-188.1729\\53\\70.03628\\-190.612\\53\\70.92928\\-191.849\\53\\72.87094\\-193.8021\\53\\73.71873\\-195.7553\\53\\73.74309\\-197.7084\\53\\74.65324\\-199.6615\\53\\77.84878\\-202.546\\53\\78.784\\-203.5678\\53\\77.84878\\-204.513\\53\\75.89565\\-204.8681\\53\\75.06328\\-205.5209\\53\\73.74309\\-207.474\\53\\73.73082\\-209.4271\\53\\72.74352\\-211.3803\\53\\70.03628\\-214.0782\\53\\67.49992\\-215.2865\\53\\64.1769\\-216.7847\\53\\62.22377\\-217.0158\\53\\58.31752\\-217.0158\\53\\56.3644\\-216.443\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "539"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "66.13003\\-137.5285\\53\\64.1769\\-136.4898\\53\\62.22377\\-135.9482\\53\\60.27065\\-135.5489\\53\\58.31752\\-134.5831\\53\\56.3644\\-133.8174\\53\\54.41127\\-132.3727\\53\\51.05862\\-129.349\\53\\49.88412\\-127.3959\\53\\49.85199\\-123.4896\\53\\49.42422\\-121.5365\\53\\48.5519\\-119.688\\53\\47.33978\\-117.6303\\53\\44.64565\\-114.5544\\53\\43.81531\\-113.724\\53\\41.54138\\-111.7709\\53\\39.51244\\-109.8178\\53\\38.82412\\-107.8646\\53\\37.73531\\-103.9584\\53\\38.78627\\-103.0612\\53\\39.71401\\-102.0053\\53\\40.1707\\-100.0521\\53\\40.7394\\-99.29682\\53\\42.01707\\-98.09901\\53\\44.64565\\-96.15926\\53\\46.59877\\-96.91932\\53\\48.5519\\-97.81528\\53\\50.50502\\-98.90456\\53\\52.45815\\-98.92021\\53\\54.22427\\-100.0521\\53\\54.96852\\-102.0053\\53\\55.84634\\-103.9584\\53\\56.22896\\-105.9115\\53\\56.49984\\-107.8646\\53\\57.21825\\-109.8178\\53\\58.97033\\-111.7709\\53\\60.27065\\-113.7343\\53\\61.14539\\-115.6771\\53\\64.90932\\-119.5834\\53\\66.52441\\-121.5365\\53\\67.35699\\-123.4896\\53\\68.08315\\-124.5308\\53\\69.29906\\-125.4428\\53\\71.9894\\-127.0198\\53\\72.35561\\-127.3959\\53\\73.33852\\-129.349\\53\\73.71873\\-131.3021\\53\\73.03754\\-133.2553\\53\\71.71886\\-135.2084\\53\\71.51729\\-137.1615\\53\\70.03628\\-138.4109\\53\\68.08315\\-137.9053\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "540"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "105.1925\\-214.2475\\53\\104.5782\\-213.3334\\53\\105.1925\\-211.9228\\53\\105.6151\\-211.3803\\53\\107.1457\\-210.2184\\53\\108.5669\\-211.3803\\53\\109.76\\-213.3334\\53\\109.0988\\-214.0387\\53\\107.1457\\-215.2633\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002275"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "541"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "111.0519\\-195.082\\53\\109.0988\\-193.3779\\53\\108.1471\\-191.849\\53\\107.1229\\-189.8959\\53\\106.8487\\-187.9428\\53\\106.4447\\-184.0365\\53\\105.6509\\-182.0834\\53\\104.7009\\-180.1303\\53\\104.3313\\-178.1771\\53\\103.3585\\-176.224\\53\\101.9503\\-172.3178\\53\\100.7482\\-170.3646\\53\\100.6066\\-168.4115\\53\\99.33315\\-166.1016\\53\\98.78343\\-164.5053\\53\\98.59518\\-162.5521\\53\\98.71609\\-160.599\\53\\98.94621\\-158.6459\\53\\98.74384\\-156.6928\\53\\98.00348\\-154.7396\\53\\99.33315\\-153.2212\\53\\101.2863\\-153.1883\\53\\103.2394\\-154.2033\\53\\103.9355\\-154.7396\\53\\105.8825\\-156.6928\\53\\107.1457\\-158.6577\\53\\108.9767\\-160.599\\53\\110.9951\\-162.5521\\53\\112.9052\\-164.5053\\53\\114.1076\\-166.4584\\53\\114.8838\\-168.4115\\53\\115.989\\-170.3646\\53\\114.9582\\-172.9107\\53\\114.651\\-174.2709\\53\\114.9582\\-175.0643\\53\\115.7003\\-176.224\\53\\116.2914\\-178.1771\\53\\116.1159\\-180.1303\\53\\116.299\\-182.0834\\53\\116.2884\\-184.0365\\53\\116.0842\\-185.9896\\53\\115.9964\\-187.9428\\53\\114.9688\\-189.8959\\53\\114.4806\\-191.849\\53\\114.2594\\-193.8021\\53\\113.005\\-195.113\\53"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "542"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-190.5635\\55\\-114.6317\\-189.8959\\55\\-115.5106\\-189.0902\\55\\-116.2167\\-187.9428\\55\\-116.3497\\-185.9896\\55\\-118.3215\\-184.0365\\55\\-119.7737\\-182.0834\\55\\-120.0416\\-180.1303\\55\\-119.4168\\-178.7131\\55\\-118.9902\\-178.1771\\55\\-118.4082\\-176.224\\55\\-118.3131\\-174.2709\\55\\-118.0993\\-172.3178\\55\\-117.0345\\-170.3646\\55\\-116.428\\-168.4115\\55\\-115.5106\\-166.6914\\55\\-113.5575\\-164.4031\\55\\-111.6043\\-162.4095\\55\\-107.6981\\-159.8352\\55\\-105.745\\-158.0406\\55\\-104.3972\\-156.6928\\55\\-103.193\\-154.7396\\55\\-101.8387\\-153.3322\\55\\-99.8856\\-153.7695\\55\\-98.9523\\-154.7396\\55\\-97.35641\\-156.6928\\55\\-97.29106\\-158.6459\\55\\-97.54883\\-160.599\\55\\-97.93247\\-161.5756\\55\\-98.52271\\-162.5521\\55\\-100.2415\\-164.5053\\55\\-102.4575\\-168.4115\\55\\-104.3293\\-170.3646\\55\\-105.2937\\-172.3178\\55\\-105.3529\\-174.2709\\55\\-106.4545\\-176.224\\55\\-107.2583\\-178.1771\\55\\-107.309\\-180.1303\\55\\-108.3675\\-182.0834\\55\\-109.2197\\-184.0365\\55\\-109.2349\\-187.9428\\55\\-109.339\\-189.8959\\55\\-109.6512\\-190.2657\\55\\-111.6043\\-191.1041\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "543"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-80.35435\\-139.9061\\55\\-83.34705\\-137.1615\\55\\-83.74692\\-135.2084\\55\\-83.21464\\-133.2553\\55\\-82.30747\\-132.2341\\55\\-77.46307\\-127.3959\\55\\-76.4481\\-125.4533\\55\\-75.15454\\-123.4896\\55\\-73.20815\\-121.5365\\55\\-71.47791\\-119.5834\\55\\-70.58872\\-117.6636\\55\\-69.26653\\-115.6771\\55\\-67.60625\\-113.724\\55\\-66.52089\\-111.7709\\55\\-65.628\\-109.8178\\55\\-64.56776\\-107.8646\\55\\-63.58387\\-103.9584\\55\\-63.29829\\-102.0053\\55\\-63.54206\\-100.0521\\55\\-62.77623\\-99.31725\\55\\-60.8231\\-98.90456\\55\\-58.86998\\-97.34889\\55\\-56.91685\\-95.45267\\55\\-54.96373\\-93.91471\\55\\-53.0106\\-93.231\\55\\-51.05748\\-93.91694\\55\\-50.77296\\-94.19276\\55\\-49.9264\\-96.14588\\55\\-48.69506\\-98.09901\\55\\-47.96398\\-100.0521\\55\\-46.36602\\-102.0053\\55\\-45.37762\\-103.9584\\55\\-45.67432\\-105.9115\\55\\-46.64463\\-107.8646\\55\\-48.05762\\-109.8178\\55\\-49.10435\\-110.8645\\55\\-51.05748\\-112.2592\\55\\-53.0106\\-113.1754\\55\\-55.34278\\-115.6771\\55\\-56.91685\\-117.747\\55\\-58.55516\\-121.5365\\55\\-59.03274\\-123.4896\\55\\-59.8558\\-127.3959\\55\\-60.8231\\-128.7042\\55\\-62.77623\\-131.0939\\55\\-64.72935\\-132.7635\\55\\-66.68247\\-134.006\\55\\-68.6356\\-134.6212\\55\\-70.58872\\-135.8354\\55\\-72.54185\\-136.572\\55\\-74.49497\\-137.8108\\55\\-76.4481\\-138.4765\\55\\-78.40122\\-139.7283\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "15"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "544"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-41.29185\\-131.7867\\55\\-43.24498\\-130.9932\\55\\-45.1981\\-129.8181\\55\\-45.63711\\-129.349\\55\\-45.62629\\-127.3959\\55\\-45.1981\\-126.9805\\55\\-43.24498\\-126.1073\\55\\-41.29185\\-125.8681\\55\\-39.33873\\-126.3762\\55\\-37.3856\\-127.1845\\55\\-35.43248\\-128.8065\\55\\-35.05155\\-129.349\\55\\-35.43248\\-131.3459\\55\\-37.3856\\-132.3209\\55\\-39.33873\\-131.9978\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "545"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-29.5731\\-204.019\\55\\-31.52623\\-202.7565\\55\\-33.47935\\-202.5971\\55\\-37.3856\\-201.3059\\55\\-43.24498\\-201.2939\\55\\-45.1981\\-201.0812\\55\\-47.15123\\-200.4695\\55\\-49.10435\\-200.251\\55\\-50.42873\\-199.6615\\55\\-50.93961\\-197.7084\\55\\-49.10435\\-196.7136\\55\\-45.1981\\-196.3285\\55\\-43.24498\\-196.2243\\55\\-37.3856\\-196.2243\\55\\-35.43248\\-196.3326\\55\\-31.52623\\-197.5346\\55\\-31.15336\\-197.7084\\55\\-29.5731\\-199.0664\\55\\-29.04413\\-199.6615\\55\\-27.61998\\-200.7186\\55\\-25.66685\\-200.9932\\55\\-23.71373\\-200.5275\\55\\-22.69376\\-199.6615\\55\\-21.7606\\-199.2691\\55\\-19.80748\\-199.023\\55\\-11.99498\\-199.3622\\55\\-11.06724\\-199.6615\\55\\-13.9481\\-200.0672\\55\\-15.90123\\-200.1273\\55\\-17.85435\\-200.934\\55\\-18.68624\\-201.6146\\55\\-21.7606\\-202.18\\55\\-23.71373\\-203.6491\\55\\-25.66685\\-204.4185\\55\\-27.61998\\-204.6762\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "546"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-23.71373\\-130.2042\\55\\-25.19772\\-129.349\\55\\-25.66685\\-128.6844\\55\\-26.25776\\-127.3959\\55\\-27.20457\\-123.4896\\55\\-27.05936\\-121.5365\\55\\-25.66685\\-120.6519\\55\\-25.21387\\-121.5365\\55\\-24.43299\\-123.4896\\55\\-22.75291\\-125.4428\\55\\-21.7606\\-126.7611\\55\\-18.77488\\-129.349\\55\\-19.80748\\-130.7334\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "14"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "547"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "27.06752\\-151.4911\\55\\26.50543\\-150.8334\\55\\25.78228\\-148.8803\\55\\26.0376\\-146.9271\\55\\26.59904\\-144.974\\55\\27.06752\\-144.2364\\55\\29.02065\\-142.199\\55\\30.97377\\-141.2518\\55\\31.99103\\-143.0209\\55\\32.2235\\-144.974\\55\\32.02846\\-146.9271\\55\\31.1005\\-148.8803\\55\\29.81009\\-150.8334\\55\\29.02065\\-151.6089\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "548"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "29.02065\\-135.6301\\55\\27.83631\\-135.2084\\55\\27.06752\\-134.2047\\55\\26.79409\\-133.2553\\55\\25.97906\\-131.3021\\55\\24.96596\\-129.349\\55\\26.24468\\-127.3959\\55\\26.35873\\-125.4428\\55\\25.1144\\-123.8355\\55\\23.16127\\-124.6127\\55\\21.20815\\-124.7134\\55\\20.63768\\-125.4428\\55\\19.73094\\-127.3959\\55\\19.25502\\-128.0921\\55\\17.92422\\-129.349\\55\\17.3019\\-129.7559\\55\\13.39565\\-131.7904\\55\\11.44252\\-131.8074\\55\\10.46596\\-131.3021\\55\\10.76644\\-129.349\\55\\11.44252\\-128.7631\\55\\13.39565\\-127.7011\\55\\15.54265\\-125.4428\\55\\16.88153\\-123.4896\\55\\17.3019\\-123.0801\\55\\19.25502\\-122.1416\\55\\21.20815\\-122.8408\\55\\23.16127\\-122.8417\\55\\25.50048\\-123.4896\\55\\27.06752\\-124.6718\\55\\28.71101\\-123.4896\\55\\29.02065\\-123.3949\\55\\30.97377\\-124.176\\55\\34.88002\\-125.931\\55\\36.83315\\-126.2383\\55\\38.78627\\-126.7222\\55\\39.62443\\-127.3959\\55\\40.86789\\-129.349\\55\\40.01098\\-131.3021\\55\\38.78627\\-132.3255\\55\\36.83315\\-133.6806\\55\\34.88002\\-134.4327\\55\\32.9269\\-135.4441\\55\\30.97377\\-135.6608\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "549"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-216.0773\\55\\54.41127\\-215.0274\\55\\52.45815\\-214.8437\\55\\50.50502\\-214.0772\\55\\48.5519\\-212.5\\55\\46.59877\\-210.735\\55\\43.69069\\-207.474\\55\\42.32553\\-205.5209\\55\\42.3155\\-203.5678\\55\\41.72021\\-201.6146\\55\\40.7394\\-200.603\\55\\36.83315\\-202.245\\55\\36.40249\\-201.6146\\55\\37.64114\\-199.6615\\55\\39.48753\\-197.7084\\55\\40.50368\\-195.7553\\55\\40.9264\\-193.8021\\55\\41.75299\\-191.849\\55\\42.346\\-189.8959\\55\\43.75654\\-187.9428\\55\\44.64565\\-187.0836\\55\\47.02405\\-185.9896\\55\\48.5519\\-185.4514\\55\\50.50502\\-184.9571\\55\\52.45815\\-184.597\\55\\58.31752\\-184.6086\\55\\60.27065\\-185.1044\\55\\64.1769\\-187.1846\\55\\68.08315\\-188.9301\\55\\70.03628\\-190.8837\\55\\72.69096\\-193.8021\\55\\73.48476\\-195.7553\\55\\73.75552\\-197.7084\\55\\74.70563\\-199.6615\\55\\76.72197\\-201.6146\\55\\78.1306\\-203.5678\\55\\77.84878\\-203.8788\\55\\75.36668\\-205.5209\\55\\73.74309\\-207.474\\55\\73.44526\\-209.4271\\55\\72.2915\\-211.3803\\55\\70.03628\\-213.6256\\55\\68.08315\\-214.7629\\55\\66.13003\\-215.3094\\55\\64.1769\\-216.1901\\55\\62.22377\\-216.7783\\55\\60.27065\\-217.0039\\55\\58.31752\\-216.8116\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "550"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "70.03628\\-137.4433\\55\\68.08315\\-136.4672\\55\\64.1769\\-135.5123\\55\\62.22377\\-134.5288\\55\\58.31752\\-133.5333\\55\\56.3644\\-132.6062\\55\\54.41127\\-131.8407\\55\\52.45815\\-130.4264\\55\\50.50502\\-129.1957\\55\\49.20875\\-127.3959\\55\\49.01724\\-125.4428\\55\\48.99399\\-123.4896\\55\\47.9638\\-119.5834\\55\\47.17484\\-117.6303\\55\\45.39569\\-115.6771\\55\\39.46987\\-109.8178\\55\\37.96675\\-107.8646\\55\\37.03483\\-103.9584\\55\\39.66615\\-102.0053\\55\\40.7394\\-99.55751\\55\\42.85529\\-98.09901\\55\\44.64565\\-95.96093\\55\\46.59877\\-96.35818\\55\\49.03204\\-98.09901\\55\\50.50502\\-98.90983\\55\\52.45815\\-98.92021\\55\\54.18748\\-100.0521\\55\\54.58566\\-102.0053\\55\\55.3313\\-103.9584\\55\\56.3644\\-106.3915\\55\\56.87566\\-107.8646\\55\\57.68303\\-109.8178\\55\\58.98432\\-111.7709\\55\\60.79034\\-113.724\\55\\61.65692\\-115.6771\\55\\63.15106\\-117.6303\\55\\64.1769\\-118.8073\\55\\66.99527\\-121.5365\\55\\67.77918\\-123.4896\\55\\68.08315\\-123.9107\\55\\70.28288\\-125.4428\\55\\71.9894\\-126.4729\\55\\72.91237\\-127.3959\\55\\74.23824\\-129.349\\55\\74.0646\\-131.3021\\55\\73.03278\\-133.2553\\55\\71.51647\\-135.2084\\55\\70.41458\\-137.1615\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "551"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "105.1925\\-213.6025\\55\\104.9568\\-213.3334\\55\\105.7279\\-211.3803\\55\\106.6074\\-209.4271\\55\\107.1457\\-208.8276\\55\\109.0988\\-208.3343\\55\\110.5183\\-209.4271\\55\\111.4901\\-211.3803\\55\\112.0987\\-213.3334\\55\\111.0519\\-214.4357\\55\\109.0988\\-214.9825\\55\\107.1457\\-214.828\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002274"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "552"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "111.0519\\-196.0783\\55\\110.7623\\-195.7553\\55\\108.8936\\-191.849\\55\\108.6623\\-189.8959\\55\\108.6327\\-185.9896\\55\\107.9873\\-184.0365\\55\\106.8866\\-182.0834\\55\\106.6865\\-180.1303\\55\\106.0714\\-178.1771\\55\\104.9334\\-176.224\\55\\104.7112\\-174.2709\\55\\103.9503\\-172.3178\\55\\102.7892\\-170.3646\\55\\102.7199\\-168.4115\\55\\101.8105\\-166.4584\\55\\100.7705\\-164.5053\\55\\100.1013\\-162.5521\\55\\99.25238\\-160.599\\55\\98.97633\\-158.6459\\55\\98.32275\\-156.6928\\55\\97.78642\\-154.7396\\55\\99.33315\\-153.2918\\55\\101.2863\\-151.9826\\55\\103.2394\\-152.0591\\55\\105.1925\\-153.3116\\55\\107.1937\\-154.7396\\55\\113.005\\-160.4007\\55\\114.9582\\-161.4085\\55\\115.9928\\-162.5521\\55\\116.2958\\-164.5053\\55\\116.9113\\-165.9701\\55\\118.2341\\-168.4115\\55\\118.449\\-170.3646\\55\\118.8644\\-172.1041\\55\\120.0108\\-174.2709\\55\\120.0018\\-178.1771\\55\\119.4157\\-180.1303\\55\\119.0349\\-182.0834\\55\\118.9865\\-184.0365\\55\\118.4186\\-185.9896\\55\\118.3412\\-187.9428\\55\\117.379\\-189.8959\\55\\117.1274\\-191.849\\55\\117.0198\\-193.8021\\55\\115.9857\\-195.7553\\55\\114.9582\\-196.7388\\55\\113.005\\-197.0159\\55"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "553"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-115.5106\\-188.5081\\57\\-115.9636\\-187.9428\\57\\-116.5651\\-185.9896\\57\\-118.3226\\-184.0365\\57\\-118.7989\\-182.0834\\57\\-118.0063\\-180.1303\\57\\-117.4637\\-179.6124\\57\\-114.8234\\-178.1771\\57\\-113.6915\\-176.224\\57\\-114.8392\\-174.2709\\57\\-115.5106\\-174.1399\\57\\-117.4637\\-172.9258\\57\\-117.6875\\-172.3178\\57\\-117.2593\\-170.3646\\57\\-116.1529\\-166.4584\\57\\-114.8982\\-164.5053\\57\\-113.8936\\-162.5521\\57\\-111.6043\\-159.9762\\57\\-109.6512\\-158.4366\\57\\-107.022\\-156.6928\\57\\-105.745\\-155.3958\\57\\-104.4125\\-152.7865\\57\\-103.7918\\-152.171\\57\\-101.8387\\-150.7169\\57\\-99.8856\\-151.4719\\57\\-98.20301\\-154.7396\\57\\-97.97004\\-156.6928\\57\\-98.77534\\-158.6459\\57\\-100.0611\\-160.599\\57\\-100.9613\\-162.5521\\57\\-103.4512\\-166.4584\\57\\-104.5087\\-168.4115\\57\\-106.2167\\-170.3646\\57\\-107.2906\\-172.3178\\57\\-107.4133\\-174.2709\\57\\-108.6428\\-176.224\\57\\-109.6034\\-178.1771\\57\\-109.6417\\-180.1303\\57\\-110.6386\\-182.0834\\57\\-111.2059\\-184.0365\\57\\-111.0049\\-185.9896\\57\\-111.0239\\-187.9428\\57\\-111.6043\\-189.2198\\57\\-113.5575\\-189.7215\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "554"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-80.35435\\-139.4186\\57\\-82.30747\\-138.1466\\57\\-83.34705\\-137.1615\\57\\-83.75529\\-135.2084\\57\\-83.56164\\-133.2553\\57\\-82.47636\\-131.3021\\57\\-78.40122\\-127.1964\\57\\-76.4481\\-124.9178\\57\\-73.43661\\-121.5365\\57\\-72.12424\\-119.5834\\57\\-71.03262\\-117.6303\\57\\-67.54758\\-113.724\\57\\-65.36326\\-109.8178\\57\\-64.06951\\-107.8646\\57\\-63.54353\\-105.9115\\57\\-62.69546\\-103.9584\\57\\-62.3795\\-102.0053\\57\\-62.48051\\-100.0521\\57\\-59.40808\\-98.09901\\57\\-56.91685\\-96.022\\57\\-54.96373\\-94.98411\\57\\-53.0106\\-94.59828\\57\\-51.463\\-96.14588\\57\\-49.4695\\-100.0521\\57\\-48.18835\\-102.0053\\57\\-46.40561\\-103.9584\\57\\-46.1443\\-105.9115\\57\\-47.15123\\-107.3838\\57\\-49.00197\\-109.8178\\57\\-51.36177\\-111.7709\\57\\-53.0106\\-113.028\\57\\-55.69615\\-115.6771\\57\\-57.09124\\-117.6303\\57\\-58.57701\\-121.5365\\57\\-58.65827\\-125.4428\\57\\-59.72578\\-127.3959\\57\\-61.83315\\-129.349\\57\\-62.77623\\-130.4002\\57\\-64.72935\\-132.3503\\57\\-66.68247\\-133.8494\\57\\-68.6356\\-134.4395\\57\\-70.58872\\-135.6902\\57\\-74.49497\\-136.5317\\57\\-76.4481\\-137.7746\\57\\-78.40122\\-138.4194\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "555"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-37.3856\\-131.3248\\57\\-39.33873\\-130.3488\\57\\-41.29185\\-129.881\\57\\-42.24237\\-129.349\\57\\-43.24498\\-127.8451\\57\\-43.24498\\-127.2055\\57\\-41.29185\\-126.3651\\57\\-39.33873\\-126.9625\\57\\-36.67352\\-129.349\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "19"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "556"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-29.5731\\-204.0744\\57\\-30.52669\\-203.5678\\57\\-31.52623\\-202.4644\\57\\-33.47935\\-202.7599\\57\\-37.3856\\-202.314\\57\\-43.24498\\-202.3007\\57\\-45.1981\\-202.2593\\57\\-46.20456\\-201.6146\\57\\-46.62177\\-199.6615\\57\\-45.1981\\-198.1845\\57\\-44.31238\\-197.7084\\57\\-43.24498\\-197.3553\\57\\-37.3856\\-197.3553\\57\\-35.43248\\-198.185\\57\\-33.47935\\-199.9122\\57\\-31.52623\\-200.8357\\57\\-29.5731\\-201.4465\\57\\-26.13131\\-203.5678\\57\\-27.61998\\-204.6022\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "557"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "11.44252\\-131.3397\\57\\12.1908\\-129.349\\57\\13.39565\\-128.7047\\57\\15.34877\\-126.9433\\57\\17.3019\\-124.66\\57\\19.25502\\-122.7814\\57\\20.12206\\-123.4896\\57\\19.25502\\-124.7782\\57\\18.617\\-125.4428\\57\\18.13994\\-127.3959\\57\\17.3019\\-128.3806\\57\\15.34877\\-130.0535\\57\\13.39565\\-131.3098\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "558"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "27.06752\\-149.785\\57\\26.64613\\-148.8803\\57\\26.94545\\-146.9271\\57\\29.02065\\-144.6688\\57\\29.71819\\-144.974\\57\\30.79987\\-146.9271\\57\\29.87691\\-148.8803\\57\\29.02065\\-150.1111\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "17"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "559"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "30.97377\\-133.8261\\57\\29.17256\\-133.2553\\57\\28.48097\\-131.3021\\57\\28.28303\\-129.349\\57\\28.67812\\-125.4428\\57\\29.02065\\-125.0814\\57\\30.97377\\-124.689\\57\\31.99473\\-125.4428\\57\\32.9269\\-126.4681\\57\\34.88002\\-127.2672\\57\\36.83315\\-127.3433\\57\\38.78627\\-128.943\\57\\39.03376\\-129.349\\57\\37.97247\\-131.3021\\57\\36.83315\\-132.2469\\57\\34.88002\\-133.5592\\57\\32.9269\\-133.8163\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "560"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-215.5027\\57\\52.45815\\-214.4763\\57\\50.4562\\-213.3334\\57\\48.5519\\-212.3467\\57\\43.69069\\-207.474\\57\\42.3357\\-205.5209\\57\\42.3357\\-203.5678\\57\\41.7287\\-201.6146\\57\\40.7394\\-200.5943\\57\\38.78627\\-201.4362\\57\\37.24005\\-201.6146\\57\\36.9971\\-203.5678\\57\\36.65201\\-203.5678\\57\\36.79559\\-201.6146\\57\\37.79396\\-199.6615\\57\\39.61868\\-197.7084\\57\\41.47309\\-193.8021\\57\\42.06436\\-191.849\\57\\42.78798\\-189.8959\\57\\44.64565\\-187.6722\\57\\48.5519\\-185.8026\\57\\52.45815\\-185.1558\\57\\54.41127\\-185.0469\\57\\58.31752\\-185.3266\\57\\60.27065\\-186.5573\\57\\62.22377\\-187.4768\\57\\64.1769\\-188.8362\\57\\66.13003\\-189.6711\\57\\68.08315\\-190.269\\57\\70.29919\\-191.849\\57\\71.9894\\-194.48\\57\\72.7169\\-195.7553\\57\\73.96577\\-199.6615\\57\\76.35094\\-201.6146\\57\\77.60129\\-203.5678\\57\\75.89565\\-205.1145\\57\\73.94253\\-206.6359\\57\\73.30128\\-207.474\\57\\72.61146\\-209.4271\\57\\71.9894\\-210.1423\\57\\68.82684\\-213.3334\\57\\68.08315\\-213.9911\\57\\66.13003\\-214.7923\\57\\64.44138\\-215.2865\\57\\62.22377\\-216.1798\\57\\60.27065\\-216.556\\57\\58.31752\\-216.2631\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "561"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "68.08315\\-135.4789\\57\\66.13003\\-134.5018\\57\\62.22377\\-133.5027\\57\\60.27065\\-132.5711\\57\\56.3644\\-131.5463\\57\\54.41127\\-130.6412\\57\\52.45815\\-130.0234\\57\\50.50502\\-128.9241\\57\\49.03408\\-127.3959\\57\\47.97258\\-125.4428\\57\\48.13596\\-121.5365\\57\\47.59927\\-119.5834\\57\\46.59877\\-117.7109\\57\\45.38562\\-115.6771\\57\\39.4896\\-109.8178\\57\\38.2627\\-107.8646\\57\\38.40263\\-105.9115\\57\\38.78627\\-105.1655\\57\\39.6823\\-103.9584\\57\\40.7394\\-103.1932\\57\\41.90129\\-102.0053\\57\\42.69252\\-100.9213\\57\\43.5794\\-100.0521\\57\\44.64565\\-99.31628\\57\\46.59877\\-98.26917\\57\\48.5519\\-98.72641\\57\\50.50502\\-98.98483\\57\\52.45815\\-99.02254\\57\\53.88921\\-100.0521\\57\\54.26266\\-102.0053\\57\\54.95257\\-103.9584\\57\\55.83226\\-105.9115\\57\\57.0066\\-107.8646\\57\\58.34024\\-109.8178\\57\\59.17631\\-111.7709\\57\\62.76315\\-115.6771\\57\\63.63069\\-117.6303\\57\\65.38686\\-119.5834\\57\\67.53093\\-121.5365\\57\\68.08315\\-122.4201\\57\\69.03488\\-123.4896\\57\\70.03628\\-124.2236\\57\\71.9894\\-125.4195\\57\\73.98128\\-127.3959\\57\\75.22981\\-129.349\\57\\74.94495\\-131.3021\\57\\73.3299\\-133.2553\\57\\71.9894\\-134.5958\\57\\70.03628\\-135.9393\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "562"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "107.1457\\-214.1324\\57\\106.2667\\-213.3334\\57\\106.3846\\-211.3803\\57\\106.9713\\-209.4271\\57\\109.0988\\-207.5978\\57\\111.0519\\-208.5436\\57\\112.4792\\-209.4271\\57\\113.005\\-210.4953\\57\\113.2492\\-211.3803\\57\\112.6754\\-213.3334\\57\\111.0519\\-214.4531\\57\\109.0988\\-214.4628\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002273"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "563"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "113.005\\-197.7898\\57\\111.2648\\-195.7553\\57\\110.8855\\-193.8021\\57\\110.3773\\-189.8959\\57\\110.203\\-187.9428\\57\\110.182\\-185.9896\\57\\109.6272\\-184.0365\\57\\108.7097\\-182.0834\\57\\108.6673\\-180.1303\\57\\107.8044\\-178.1771\\57\\106.7804\\-176.224\\57\\106.7092\\-174.2709\\57\\105.9117\\-172.3178\\57\\104.8381\\-170.3646\\57\\104.7545\\-168.4115\\57\\103.2394\\-165.9939\\57\\101.5462\\-162.5521\\57\\100.1316\\-160.599\\57\\99.69697\\-158.6459\\57\\98.38313\\-156.6928\\57\\98.22852\\-154.7396\\57\\100.1426\\-152.7865\\57\\101.2863\\-151.0477\\57\\103.2394\\-149.8434\\57\\105.1793\\-150.8334\\57\\107.1457\\-152.3463\\57\\109.0988\\-153.2748\\57\\111.1237\\-154.7396\\57\\113.0559\\-156.6928\\57\\114.9582\\-158.5009\\57\\117.3593\\-160.599\\57\\118.4512\\-162.5521\\57\\118.5086\\-164.5053\\57\\119.5811\\-166.4584\\57\\121.0069\\-168.4115\\57\\122.8594\\-172.3178\\57\\123.0053\\-174.2709\\57\\122.5015\\-176.224\\57\\122.4994\\-178.1771\\57\\122.8573\\-180.1303\\57\\122.7788\\-182.0834\\57\\122.2081\\-184.0365\\57\\120.8175\\-186.6976\\57\\120.4373\\-187.9428\\57\\118.8644\\-190.8267\\57\\118.445\\-191.849\\57\\118.2116\\-193.8021\\57\\117.7492\\-195.7553\\57\\116.9113\\-196.651\\57\\114.9582\\-198.1654\\57"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "13"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "564"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-115.5106\\-188.0628\\59\\-116.8093\\-185.9896\\59\\-117.4637\\-185.1758\\59\\-117.9774\\-184.0365\\59\\-117.4637\\-182.991\\59\\-116.2583\\-182.0834\\59\\-115.5106\\-181.7095\\59\\-114.2514\\-182.0834\\59\\-113.5575\\-182.6693\\59\\-113.0878\\-184.0365\\59\\-112.6028\\-185.9896\\59\\-112.6312\\-187.9428\\59\\-113.5575\\-188.7715\\59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "25"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "565"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.7427\\-172.3178\\59\\-115.4032\\-170.3646\\59\\-115.6592\\-168.4115\\59\\-115.3069\\-166.4584\\59\\-114.1964\\-162.5521\\59\\-111.772\\-158.6459\\59\\-107.9104\\-154.7396\\59\\-106.3934\\-152.7865\\59\\-103.7918\\-150.205\\59\\-101.8387\\-148.9039\\59\\-99.8856\\-148.2484\\59\\-99.29351\\-148.8803\\59\\-98.84556\\-150.8334\\59\\-98.2143\\-152.7865\\59\\-98.02721\\-154.7396\\59\\-98.7999\\-156.6928\\59\\-101.8476\\-160.599\\59\\-102.9691\\-162.5521\\59\\-103.7918\\-163.8111\\59\\-106.001\\-166.4584\\59\\-107.6981\\-169.2029\\59\\-108.2372\\-170.3646\\59\\-109.4961\\-172.3178\\59\\-109.6512\\-172.9107\\59\\-111.6043\\-173.6583\\59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "566"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-82.30747\\-138.0869\\59\\-83.31659\\-137.1615\\59\\-84.20842\\-135.2084\\59\\-84.0368\\-133.2553\\59\\-83.04121\\-131.3021\\59\\-80.35435\\-128.3569\\59\\-75.47153\\-123.4896\\59\\-74.06451\\-121.5365\\59\\-73.00381\\-119.5834\\59\\-69.51916\\-115.6771\\59\\-68.15342\\-113.724\\59\\-67.02361\\-111.7709\\59\\-64.72935\\-109.0951\\59\\-63.85044\\-107.8646\\59\\-63.01195\\-105.9115\\59\\-62.36983\\-103.9584\\59\\-62.27938\\-102.0053\\59\\-61.48739\\-100.0521\\59\\-60.8231\\-99.43452\\59\\-58.86998\\-98.76606\\59\\-56.91685\\-97.32903\\59\\-54.96373\\-96.42985\\59\\-53.0106\\-96.9811\\59\\-52.39045\\-98.09901\\59\\-51.74002\\-100.0521\\59\\-51.05748\\-100.6625\\59\\-50.01532\\-102.0053\\59\\-48.07536\\-103.9584\\59\\-46.94894\\-105.9115\\59\\-47.82645\\-107.8646\\59\\-49.7305\\-109.8178\\59\\-54.96373\\-114.9295\\59\\-57.53114\\-117.6303\\59\\-58.19268\\-119.5834\\59\\-58.65827\\-121.5365\\59\\-58.69559\\-123.4896\\59\\-59.05698\\-125.4428\\59\\-60.26022\\-127.3959\\59\\-60.8231\\-127.8962\\59\\-62.84711\\-129.349\\59\\-62.95933\\-131.3021\\59\\-62.66486\\-133.2553\\59\\-64.72935\\-133.9227\\59\\-67.17075\\-135.2084\\59\\-68.6356\\-135.8706\\59\\-70.58872\\-136.5042\\59\\-74.49497\\-136.0629\\59\\-76.4481\\-136.4898\\59\\-78.40122\\-137.733\\59\\-80.35435\\-138.3783\\59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "567"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "58.31752\\-215.4493\\59\\56.3644\\-214.9825\\59\\54.41127\\-214.8189\\59\\52.45815\\-214.096\\59\\50.50502\\-212.8054\\59\\48.5519\\-212.1182\\59\\46.59877\\-210.4085\\59\\43.69069\\-207.474\\59\\42.3357\\-205.5209\\59\\42.3357\\-203.5678\\59\\41.61116\\-201.6146\\59\\40.7394\\-200.7513\\59\\39.17176\\-201.6146\\59\\38.78627\\-201.969\\59\\37.80488\\-203.5678\\59\\36.83315\\-204.5206\\59\\35.74265\\-203.5678\\59\\36.83315\\-201.5434\\59\\37.74559\\-199.6615\\59\\39.61868\\-197.7084\\59\\40.50368\\-195.7553\\59\\41.63691\\-193.8021\\59\\42.346\\-191.849\\59\\43.45207\\-189.8959\\59\\45.4502\\-187.9428\\59\\46.59877\\-186.9662\\59\\48.5519\\-185.8152\\59\\50.50502\\-185.8026\\59\\52.45815\\-185.1382\\59\\54.41127\\-184.7287\\59\\56.3644\\-185.2207\\59\\58.31752\\-185.8676\\59\\60.27065\\-187.0801\\59\\64.1769\\-190.444\\59\\67.30521\\-191.849\\59\\68.08315\\-192.3425\\59\\70.03628\\-194.2677\\59\\72.29816\\-197.7084\\59\\72.97164\\-199.6615\\59\\73.94253\\-200.6324\\59\\75.89565\\-201.9965\\59\\77.36342\\-203.5678\\59\\75.89565\\-205.6023\\59\\73.94253\\-205.8051\\59\\71.99789\\-207.474\\59\\70.77996\\-209.4271\\59\\68.8995\\-211.3803\\59\\66.13003\\-213.9958\\59\\64.1769\\-214.6074\\59\\62.22377\\-215.0718\\59\\60.27065\\-215.7367\\59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "568"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "66.13003\\-133.467\\59\\64.1769\\-132.5329\\59\\60.27065\\-131.5044\\59\\58.31752\\-130.5988\\59\\54.41127\\-129.8493\\59\\52.88194\\-129.349\\59\\50.50502\\-128.3725\\59\\49.53407\\-127.3959\\59\\47.87188\\-125.4428\\59\\47.90942\\-123.4896\\59\\48.11721\\-121.5365\\59\\47.36923\\-119.5834\\59\\46.1734\\-117.6303\\59\\45.38562\\-115.6771\\59\\41.45285\\-111.7709\\59\\39.68587\\-109.8178\\59\\39.3745\\-107.8646\\59\\40.0391\\-105.9115\\59\\40.7394\\-105.0863\\59\\45.78243\\-100.0521\\59\\46.59877\\-99.45161\\59\\50.50502\\-99.30975\\59\\52.45815\\-99.6133\\59\\52.97175\\-100.0521\\59\\54.7578\\-103.9584\\59\\55.52236\\-105.9115\\59\\56.99943\\-107.8646\\59\\58.79999\\-109.8178\\59\\59.61066\\-111.7709\\59\\61.02788\\-113.724\\59\\63.14532\\-115.6771\\59\\64.1769\\-117.0504\\59\\66.13003\\-119.1433\\59\\70.03628\\-123.0563\\59\\72.9369\\-125.4428\\59\\74.89597\\-127.3959\\59\\76.60951\\-129.349\\59\\76.44379\\-131.3021\\59\\73.94253\\-133.9996\\59\\71.9894\\-134.942\\59\\70.03628\\-134.5754\\59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002272"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "57"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "569"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "114.9582\\-198.5635\\59\\113.2231\\-197.7084\\59\\112.2065\\-195.7553\\59\\112.1738\\-191.849\\59\\111.7973\\-189.8959\\59\\111.2761\\-187.9428\\59\\111.2221\\-185.9896\\59\\110.643\\-184.0365\\59\\110.2204\\-182.0834\\59\\110.1995\\-180.1303\\59\\109.6712\\-178.1771\\59\\108.7157\\-176.224\\59\\108.3914\\-174.2709\\59\\107.7212\\-172.3178\\59\\106.8481\\-170.3646\\59\\106.7689\\-168.4115\\59\\105.5425\\-166.4584\\59\\104.0621\\-164.5053\\59\\103.0718\\-162.5521\\59\\101.635\\-160.599\\59\\101.0615\\-158.6459\\59\\99.7663\\-156.6928\\59\\99.44497\\-154.7396\\59\\100.3423\\-152.7865\\59\\100.8424\\-150.8334\\59\\101.2863\\-150.2281\\59\\103.2394\\-148.5173\\59\\105.1925\\-149.038\\59\\107.1457\\-150.4002\\59\\109.0988\\-151.1643\\59\\111.0519\\-152.3877\\59\\113.005\\-153.2965\\59\\114.481\\-154.7396\\59\\114.9582\\-155.5031\\59\\116.1698\\-156.6928\\59\\116.9113\\-157.1426\\59\\118.8644\\-158.8438\\59\\120.2762\\-160.599\\59\\120.5463\\-162.5521\\59\\120.591\\-164.5053\\59\\121.3614\\-166.4584\\59\\123.0233\\-168.4115\\59\\123.8009\\-170.3646\\59\\124.7238\\-175.0196\\59\\125.0712\\-176.224\\59\\125.0493\\-178.1771\\59\\124.7763\\-180.1303\\59\\124.7553\\-182.0834\\59\\124.5499\\-185.9896\\59\\123.2158\\-187.9428\\59\\122.7707\\-188.2339\\59\\120.8175\\-190.4322\\59\\119.7304\\-191.849\\59\\119.2282\\-193.8021\\59\\119.3035\\-195.7553\\59\\118.8644\\-196.444\\59\\117.098\\-197.7084\\59"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "30"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "570"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-113.5575\\-169.5667\\61\\-114.1807\\-168.4115\\61\\-114.4153\\-166.4584\\61\\-114.0014\\-164.5053\\61\\-113.6929\\-162.5521\\61\\-112.9422\\-160.599\\61\\-111.6043\\-158.9096\\61\\-111.2501\\-158.6459\\61\\-109.4649\\-156.6928\\61\\-108.7501\\-154.7396\\61\\-107.6981\\-152.9691\\61\\-106.26\\-150.8334\\61\\-103.7918\\-148.355\\61\\-101.8387\\-147.1837\\61\\-99.8856\\-146.2306\\61\\-97.93247\\-146.0455\\61\\-97.50646\\-146.9271\\61\\-97.68156\\-148.8803\\61\\-98.20301\\-150.8334\\61\\-98.08109\\-152.7865\\61\\-98.82388\\-154.7396\\61\\-99.8856\\-156.189\\61\\-102.3309\\-158.6459\\61\\-103.7918\\-160.2911\\61\\-104.3259\\-160.599\\61\\-105.745\\-162.0879\\61\\-107.6981\\-165.1854\\61\\-108.2639\\-166.4584\\61\\-109.6512\\-168.8607\\61\\-111.5311\\-170.3646\\61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "571"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-82.30747\\-137.9058\\61\\-83.35047\\-137.1615\\61\\-84.2606\\-136.2871\\61\\-85.67119\\-135.2084\\61\\-85.11585\\-133.2553\\61\\-83.35229\\-131.3021\\61\\-81.84897\\-129.349\\61\\-80.46617\\-127.3959\\61\\-76.4481\\-123.3676\\61\\-73.39755\\-119.5834\\61\\-71.57054\\-117.6303\\61\\-70.12517\\-115.6771\\61\\-69.02495\\-113.724\\61\\-66.68247\\-111.1386\\61\\-65.60365\\-109.8178\\61\\-64.16064\\-107.8646\\61\\-62.33233\\-103.9584\\61\\-62.01391\\-102.0053\\61\\-60.8231\\-100.7299\\61\\-58.86998\\-99.24132\\61\\-54.96373\\-97.25881\\61\\-53.77568\\-98.09901\\61\\-53.53557\\-100.0521\\61\\-51.64204\\-102.0053\\61\\-49.28654\\-103.9584\\61\\-48.18953\\-105.9115\\61\\-48.09219\\-107.8646\\61\\-49.73826\\-109.8178\\61\\-57.71002\\-117.6303\\61\\-58.96472\\-119.5834\\61\\-59.44149\\-121.5365\\61\\-59.45258\\-123.4896\\61\\-59.64269\\-125.4428\\61\\-60.6053\\-127.3959\\61\\-62.48483\\-129.349\\61\\-61.60308\\-131.3021\\61\\-62.64773\\-133.2553\\61\\-66.68247\\-134.6328\\61\\-68.6356\\-135.9103\\61\\-70.58872\\-136.4859\\61\\-72.54185\\-136.8295\\61\\-76.4481\\-135.5449\\61\\-78.40122\\-136.3909\\61\\-80.35435\\-137.6835\\61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "572"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-212.5179\\61\\48.5519\\-211.3726\\61\\46.59877\\-210.4085\\61\\43.69069\\-207.474\\61\\42.3357\\-205.5209\\61\\42.3357\\-203.5678\\61\\41.19163\\-201.6146\\61\\40.7394\\-201.1961\\61\\38.78627\\-202.8874\\61\\36.83315\\-205.1005\\61\\34.88002\\-205.6029\\61\\34.77573\\-205.5209\\61\\35.20325\\-203.5678\\61\\36.83315\\-201.9263\\61\\37.26398\\-201.6146\\61\\37.83802\\-199.6615\\61\\39.62399\\-197.7084\\61\\40.50368\\-195.7553\\61\\41.63691\\-193.8021\\61\\42.3357\\-191.849\\61\\43.66439\\-189.8959\\61\\46.59877\\-186.9709\\61\\48.5519\\-185.8152\\61\\50.50502\\-185.7902\\61\\52.45815\\-185.1074\\61\\54.41127\\-184.7348\\61\\56.3644\\-185.1835\\61\\58.31752\\-185.8676\\61\\60.27065\\-187.085\\61\\64.1769\\-190.9659\\61\\65.27554\\-191.849\\61\\67.47593\\-193.8021\\61\\69.24829\\-195.7553\\61\\70.80082\\-197.7084\\61\\71.63245\\-199.6615\\61\\71.9894\\-200.069\\61\\73.94253\\-201.1882\\61\\75.89565\\-202.5746\\61\\76.83546\\-203.5678\\61\\76.55699\\-205.5209\\61\\75.89565\\-206.1146\\61\\73.94253\\-205.7462\\61\\71.9894\\-205.7669\\61\\70.03628\\-207.4428\\61\\68.82153\\-209.4271\\61\\66.13003\\-212.1661\\61\\64.1769\\-213.5512\\61\\62.22377\\-214.1983\\61\\60.27065\\-214.5606\\61\\56.3644\\-214.5777\\61\\54.41127\\-214.2772\\61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "573"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "69.67996\\-133.2553\\61\\68.08315\\-132.5561\\61\\64.1769\\-131.4242\\61\\62.22377\\-130.554\\61\\58.31752\\-129.5285\\61\\54.41127\\-128.6424\\61\\52.45815\\-128.0626\\61\\50.50502\\-126.9843\\61\\49.01284\\-125.4428\\61\\48.25893\\-123.4896\\61\\48.13596\\-121.5365\\61\\47.36923\\-119.5834\\61\\46.1734\\-117.6303\\61\\45.38562\\-115.6771\\61\\41.47802\\-111.7709\\61\\40.18544\\-109.8178\\61\\40.51178\\-107.8646\\61\\41.84772\\-105.9115\\61\\46.59877\\-101.145\\61\\48.5519\\-100.6336\\61\\50.50502\\-100.409\\61\\52.45815\\-101.0347\\61\\53.33276\\-102.0053\\61\\54.72609\\-103.9584\\61\\55.521\\-105.9115\\61\\56.99219\\-107.8646\\61\\58.9491\\-109.8178\\61\\60.29336\\-111.7709\\61\\61.48358\\-113.724\\61\\63.67159\\-115.6771\\61\\65.18204\\-117.6303\\61\\70.03628\\-122.5239\\61\\71.83839\\-123.4896\\61\\73.94253\\-124.9585\\61\\76.38796\\-127.3959\\61\\77.87403\\-129.349\\61\\77.23916\\-131.3021\\61\\75.89565\\-133.2963\\61\\73.94253\\-134.5377\\61\\71.9894\\-134.4384\\61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002271"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "574"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "114.9582\\-198.0675\\61\\114.4521\\-197.7084\\61\\113.3216\\-195.7553\\61\\112.883\\-193.8021\\61\\112.9074\\-189.8959\\61\\112.3743\\-185.9896\\61\\111.3435\\-182.0834\\61\\111.3082\\-180.1303\\61\\110.9853\\-178.1771\\61\\109.8442\\-174.2709\\61\\109.0761\\-172.3178\\61\\108.4047\\-168.4115\\61\\107.3022\\-166.4584\\61\\105.6228\\-164.5053\\61\\105.0018\\-162.5521\\61\\103.6037\\-160.599\\61\\103.1514\\-158.6459\\61\\101.7364\\-156.6928\\61\\100.7274\\-154.7396\\61\\100.6405\\-152.7865\\61\\100.8333\\-150.8334\\61\\101.4678\\-148.8803\\61\\103.2394\\-147.1394\\61\\105.1925\\-147.2144\\61\\107.1457\\-148.454\\61\\109.0988\\-149.1675\\61\\111.0519\\-150.3967\\61\\113.005\\-151.0921\\61\\114.9582\\-152.2664\\61\\116.7026\\-154.7396\\61\\118.8644\\-157.1878\\61\\120.8268\\-158.6459\\61\\122.7096\\-160.599\\61\\122.7137\\-164.5053\\61\\122.8088\\-166.4584\\61\\124.9275\\-170.3646\\61\\125.493\\-172.3178\\61\\125.7796\\-174.2709\\61\\126.9529\\-176.224\\61\\127.7191\\-178.1771\\61\\127.8705\\-180.1303\\61\\127.8852\\-182.0834\\61\\128.63\\-183.5482\\61\\129.0762\\-185.9896\\61\\128.63\\-187.166\\61\\127.9325\\-187.9428\\61\\126.9821\\-189.8959\\61\\126.6769\\-190.2038\\61\\124.6102\\-189.8959\\61\\122.7707\\-190.4609\\61\\120.8175\\-192.2567\\61\\119.9885\\-193.8021\\61\\119.8828\\-195.7553\\61\\118.8644\\-197.006\\61\\116.9113\\-197.5983\\61"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "9"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "575"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-111.6043\\-168.1959\\63\\-113.16\\-166.4584\\63\\-112.8271\\-164.5053\\63\\-112.8069\\-162.5521\\63\\-111.6043\\-160.4818\\63\\-109.6512\\-160.1921\\63\\-108.6747\\-160.599\\63\\-108.3084\\-162.5521\\63\\-109.6512\\-165.595\\63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "75"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "576"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-105.745\\-158.4628\\63\\-107.3915\\-156.6928\\63\\-107.8949\\-154.7396\\63\\-107.0042\\-150.8334\\63\\-106.192\\-148.8803\\63\\-103.7918\\-146.4839\\63\\-101.8387\\-145.166\\63\\-99.8856\\-144.3881\\63\\-98.0834\\-143.0209\\63\\-95.97935\\-141.0445\\63\\-94.02622\\-140.5857\\63\\-92.0731\\-138.981\\63\\-88.41099\\-135.2084\\63\\-86.21372\\-133.1399\\63\\-84.2606\\-131.1801\\63\\-83.07928\\-129.349\\63\\-81.3736\\-127.3959\\63\\-78.40122\\-124.654\\63\\-75.50254\\-121.5365\\63\\-74.00977\\-119.5834\\63\\-72.67828\\-117.6303\\63\\-71.04365\\-115.6771\\63\\-69.26582\\-113.724\\63\\-67.31233\\-111.7709\\63\\-65.99836\\-109.8178\\63\\-65.0571\\-107.8646\\63\\-63.48211\\-105.9115\\63\\-62.29661\\-103.9584\\63\\-61.66226\\-102.0053\\63\\-60.8231\\-101.2176\\63\\-58.86998\\-99.68514\\63\\-56.91685\\-98.64154\\63\\-54.96373\\-97.86329\\63\\-54.70081\\-98.09901\\63\\-53.83128\\-100.0521\\63\\-52.39351\\-102.0053\\63\\-50.22296\\-103.9584\\63\\-49.50128\\-105.9115\\63\\-48.92744\\-107.8646\\63\\-49.77958\\-109.8178\\63\\-51.7029\\-111.7709\\63\\-55.71532\\-115.6771\\63\\-57.85272\\-117.6303\\63\\-59.6208\\-119.5834\\63\\-60.08692\\-121.5365\\63\\-60.02025\\-123.4896\\63\\-59.73656\\-125.4428\\63\\-59.97461\\-127.3959\\63\\-61.44081\\-129.349\\63\\-62.02985\\-131.3021\\63\\-62.77623\\-131.9763\\63\\-64.72935\\-132.4932\\63\\-66.68247\\-133.7606\\63\\-68.6356\\-134.4646\\63\\-70.58872\\-135.764\\63\\-72.54185\\-136.4498\\63\\-74.49497\\-136.741\\63\\-75.60588\\-135.2084\\63\\-76.4481\\-134.3289\\63\\-78.40122\\-134.8192\\63\\-80.35435\\-136.3615\\63\\-82.30747\\-137.409\\63\\-84.2606\\-137.3359\\63\\-86.21372\\-137.3956\\63\\-88.16685\\-139.168\\63\\-90.11997\\-139.9716\\63\\-93.18638\\-143.0209\\63\\-94.02622\\-143.4724\\63\\-95.97935\\-145.3858\\63\\-96.6422\\-146.9271\\63\\-97.0855\\-148.8803\\63\\-99.16798\\-152.7865\\63\\-99.8856\\-153.888\\63\\-101.8387\\-155.7923\\63\\-103.7918\\-157.5191\\63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "577"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-213.4281\\63\\50.50502\\-212.5071\\63\\48.5519\\-211.2718\\63\\46.59877\\-210.4085\\63\\43.69069\\-207.474\\63\\42.3357\\-205.5209\\63\\42.3357\\-203.5678\\63\\40.79733\\-201.6146\\63\\40.67429\\-201.6146\\63\\38.6605\\-203.5678\\63\\37.46844\\-205.5209\\63\\36.83315\\-206.1701\\63\\34.88002\\-206.5412\\63\\33.57233\\-205.5209\\63\\34.59734\\-203.5678\\63\\36.83315\\-202.2277\\63\\37.53158\\-201.6146\\63\\38.02944\\-199.6615\\63\\39.62925\\-197.7084\\63\\40.50368\\-195.7553\\63\\41.63691\\-193.8021\\63\\42.3357\\-191.849\\63\\43.66439\\-189.8959\\63\\46.59877\\-186.9851\\63\\48.5519\\-185.841\\63\\50.50502\\-185.8026\\63\\52.45815\\-185.4843\\63\\54.41127\\-185.3611\\63\\56.3644\\-185.4843\\63\\58.31752\\-185.9089\\63\\60.27065\\-187.0938\\63\\67.05598\\-193.8021\\63\\68.08315\\-195.7083\\63\\70.33286\\-199.6615\\63\\71.9894\\-201.1725\\63\\73.94253\\-202.1061\\63\\75.39468\\-203.5678\\63\\74.84728\\-205.5209\\63\\73.94253\\-205.9103\\63\\71.9894\\-205.2169\\63\\70.03628\\-205.7116\\63\\68.08315\\-207.3245\\63\\66.495\\-209.4271\\63\\64.88036\\-211.3803\\63\\64.1769\\-211.9607\\63\\62.22377\\-212.8451\\63\\60.27065\\-213.5686\\63\\58.31752\\-213.7904\\63\\56.3644\\-213.7904\\63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "578"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "73.94253\\-133.9639\\63\\71.9894\\-132.8632\\63\\70.03628\\-132.0603\\63\\68.08315\\-131.4242\\63\\66.13003\\-130.4782\\63\\64.1769\\-129.7349\\63\\62.22377\\-129.3717\\63\\60.27065\\-128.5733\\63\\58.31752\\-128.0581\\63\\54.41127\\-127.4656\\63\\52.45815\\-126.558\\63\\50.50502\\-124.9902\\63\\49.3796\\-123.4896\\63\\47.39071\\-119.5834\\63\\46.19238\\-117.6303\\63\\45.38562\\-115.6771\\63\\42.69252\\-112.9273\\63\\41.66576\\-111.7709\\63\\41.38868\\-109.8178\\63\\42.06026\\-107.8646\\63\\42.69252\\-107.0627\\63\\46.59877\\-103.1527\\63\\48.5519\\-101.8055\\63\\50.50502\\-101.087\\63\\52.45815\\-101.6461\\63\\54.6931\\-103.9584\\63\\55.48501\\-105.9115\\63\\56.98487\\-107.8646\\63\\58.94188\\-109.8178\\63\\62.22377\\-113.3223\\63\\64.73916\\-115.6771\\63\\66.13003\\-117.249\\63\\70.03628\\-121.0711\\63\\73.94253\\-123.3935\\63\\77.84878\\-127.2584\\63\\79.91204\\-129.349\\63\\79.38874\\-131.3021\\63\\77.84878\\-132.3941\\63\\77.12567\\-133.2553\\63\\75.89565\\-134.0691\\63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002270"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "62"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "579"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "114.9582\\-195.872\\63\\113.8991\\-193.8021\\63\\113.7558\\-191.849\\63\\114.171\\-189.8959\\63\\114.164\\-187.9428\\63\\113.8335\\-185.9896\\63\\113.0726\\-184.0365\\63\\112.4231\\-180.1303\\63\\112.2156\\-178.1771\\63\\111.8848\\-176.224\\63\\111.1339\\-174.2709\\63\\110.3739\\-170.3646\\63\\109.818\\-168.4115\\63\\108.2551\\-166.4584\\63\\107.2964\\-164.5053\\63\\106.9803\\-162.5521\\63\\105.624\\-160.599\\63\\105.1689\\-158.6459\\63\\103.7277\\-156.6928\\63\\102.1624\\-154.7396\\63\\101.7599\\-152.7865\\63\\101.2341\\-150.8334\\63\\100.8516\\-148.8803\\63\\101.3634\\-146.9271\\63\\100.9608\\-144.974\\63\\101.2863\\-143.7607\\63\\103.2394\\-144.7853\\63\\105.1925\\-145.1676\\63\\107.1457\\-146.4839\\63\\109.0988\\-147.1525\\63\\111.0519\\-148.3958\\63\\113.005\\-149.0872\\63\\114.9582\\-149.2635\\63\\116.4893\\-150.8334\\63\\116.8713\\-152.7865\\63\\117.9087\\-154.7396\\63\\118.8644\\-155.8098\\63\\120.8175\\-157.2834\\63\\123.4347\\-158.6459\\63\\124.7238\\-159.9524\\63\\125.1435\\-160.599\\63\\124.9867\\-162.5521\\63\\124.201\\-164.5053\\63\\123.9286\\-166.4584\\63\\124.7238\\-167.9628\\63\\126.4385\\-170.3646\\63\\126.7862\\-172.3178\\63\\126.9718\\-174.2709\\63\\127.7788\\-176.224\\63\\129.4036\\-178.1771\\63\\129.6958\\-180.1303\\63\\129.7053\\-182.0834\\63\\129.8941\\-184.0365\\63\\129.9236\\-185.9896\\63\\129.1987\\-187.9428\\63\\127.9061\\-189.8959\\63\\126.6769\\-191.2031\\63\\124.7238\\-191.3278\\63\\122.7707\\-192.1153\\63\\120.8714\\-193.8021\\63\\118.8644\\-195.9871\\63\\116.9113\\-196.545\\63"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "71"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "580"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-105.745\\-154.6176\\65\\-106.7688\\-152.7865\\65\\-106.9422\\-150.8334\\65\\-106.914\\-148.8803\\65\\-105.8147\\-146.9271\\65\\-103.7918\\-144.8622\\65\\-101.8387\\-143.5942\\65\\-99.8856\\-142.5844\\65\\-97.93247\\-140.7039\\65\\-95.97935\\-139.7006\\65\\-94.02622\\-138.2869\\65\\-92.66909\\-137.1615\\65\\-90.11997\\-134.6069\\65\\-88.16685\\-133.2476\\65\\-86.21372\\-132.1466\\65\\-85.37422\\-131.3021\\65\\-83.80487\\-129.349\\65\\-82.47636\\-127.3959\\65\\-79.88065\\-125.4428\\65\\-78.06242\\-123.4896\\65\\-75.21043\\-119.5834\\65\\-73.50376\\-117.6303\\65\\-67.67513\\-111.7709\\65\\-66.43499\\-109.8178\\65\\-65.32808\\-107.8646\\65\\-63.69056\\-105.9115\\65\\-62.77623\\-104.3308\\65\\-61.18118\\-102.0053\\65\\-60.8231\\-101.6587\\65\\-58.86998\\-100.8345\\65\\-56.91685\\-100.1553\\65\\-54.96373\\-100.2677\\65\\-53.79014\\-102.0053\\65\\-53.0106\\-102.5471\\65\\-51.57305\\-103.9584\\65\\-50.38139\\-107.8646\\65\\-50.06597\\-109.8178\\65\\-51.71413\\-111.7709\\65\\-53.71648\\-113.724\\65\\-55.82243\\-115.6771\\65\\-56.91685\\-116.5388\\65\\-58.86998\\-117.5769\\65\\-60.0944\\-119.5834\\65\\-60.83073\\-121.5365\\65\\-60.78495\\-123.4896\\65\\-59.35244\\-125.4428\\65\\-59.67282\\-127.3959\\65\\-60.8231\\-128.7553\\65\\-62.77623\\-130.7872\\65\\-64.72935\\-131.9307\\65\\-66.68247\\-132.8478\\65\\-68.6356\\-133.9578\\65\\-70.58872\\-134.4774\\65\\-72.54185\\-135.2008\\65\\-74.49497\\-136.2887\\65\\-76.4481\\-134.5899\\65\\-78.40122\\-134.0505\\65\\-80.35435\\-134.7939\\65\\-82.30747\\-136.3253\\65\\-84.2606\\-137.409\\65\\-86.21372\\-138.1381\\65\\-88.16685\\-139.6\\65\\-90.11997\\-140.8515\\65\\-92.30166\\-143.0209\\65\\-94.02622\\-144.3947\\65\\-96.57402\\-146.9271\\65\\-97.64086\\-148.8803\\65\\-99.22699\\-150.8334\\65\\-99.8856\\-151.5186\\65\\-101.6134\\-152.7865\\65\\-103.7918\\-154.5063\\65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "581"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-212.0713\\65\\46.59877\\-210.4085\\65\\43.69069\\-207.474\\65\\42.3357\\-205.5209\\65\\42.3357\\-203.5678\\65\\40.79733\\-201.6146\\65\\40.67429\\-201.6146\\65\\38.6605\\-203.5678\\65\\37.6721\\-205.5209\\65\\36.83315\\-206.3956\\65\\34.88002\\-206.6246\\65\\33.68754\\-205.5209\\65\\34.88002\\-203.8614\\65\\37.26133\\-201.6146\\65\\37.85279\\-199.6615\\65\\39.62399\\-197.7084\\65\\40.50368\\-195.7553\\65\\41.63691\\-193.8021\\65\\42.3357\\-191.849\\65\\43.66439\\-189.8959\\65\\46.59877\\-187.093\\65\\48.5519\\-186.3279\\65\\50.50502\\-185.841\\65\\56.3644\\-185.8152\\65\\58.31752\\-186.3815\\65\\60.27065\\-187.1496\\65\\63.13189\\-189.8959\\65\\67.05598\\-193.8021\\65\\68.1213\\-197.7084\\65\\69.02174\\-199.6615\\65\\70.03628\\-200.6649\\65\\71.9894\\-202.0585\\65\\73.94253\\-203.3193\\65\\73.94253\\-204.0646\\65\\72.60369\\-205.5209\\65\\71.9894\\-205.78\\65\\70.03628\\-205.2061\\65\\68.08315\\-205.3077\\65\\66.13003\\-207.217\\65\\64.1769\\-209.5698\\65\\62.53269\\-211.3803\\65\\60.27065\\-212.4293\\65\\58.31752\\-212.9174\\65\\52.45815\\-212.9367\\65\\50.50502\\-212.7872\\65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "582"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "75.89565\\-133.7521\\65\\73.94253\\-132.5635\\65\\71.9894\\-131.8375\\65\\70.03628\\-130.657\\65\\68.08315\\-130.0643\\65\\66.13003\\-128.8946\\65\\64.1769\\-128.1438\\65\\60.27065\\-127.4188\\65\\58.31752\\-126.6113\\65\\56.3644\\-126.0691\\65\\54.41127\\-125.7389\\65\\52.45815\\-124.8925\\65\\50.50502\\-123.0895\\65\\48.5519\\-120.9092\\65\\47.58477\\-119.5834\\65\\46.59877\\-117.7109\\65\\45.41793\\-115.6771\\65\\43.65527\\-113.724\\65\\42.33107\\-111.7709\\65\\42.53948\\-109.8178\\65\\43.88784\\-107.8646\\65\\46.59877\\-105.1442\\65\\50.50502\\-102.6649\\65\\52.45815\\-102.6024\\65\\54.41127\\-103.6975\\65\\54.67036\\-103.9584\\65\\55.48405\\-105.9115\\65\\57.01011\\-107.8646\\65\\58.95972\\-109.8178\\65\\61.0113\\-111.7709\\65\\62.22377\\-112.7841\\65\\64.1769\\-114.691\\65\\66.13003\\-116.2986\\65\\68.08315\\-117.6068\\65\\71.9894\\-120.7257\\65\\73.94253\\-122.5237\\65\\77.84878\\-126.3866\\65\\81.15725\\-129.349\\65\\81.75503\\-130.8434\\65\\82.22077\\-131.3021\\65\\82.34862\\-133.2553\\65\\81.75503\\-133.6434\\65\\79.6734\\-133.2553\\65\\77.84878\\-133.6806\\65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002269"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "59"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "583"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "116.9113\\-194.2482\\65\\116.3554\\-193.8021\\65\\115.1841\\-191.849\\65\\115.3645\\-189.8959\\65\\115.3645\\-187.9428\\65\\114.708\\-184.0365\\65\\114.6757\\-182.0834\\65\\113.4304\\-178.1771\\65\\113.1271\\-176.224\\65\\112.3352\\-172.3178\\65\\111.8184\\-170.3646\\65\\111.0746\\-168.4115\\65\\109.7037\\-166.4584\\65\\108.926\\-164.5053\\65\\108.4655\\-162.5521\\65\\107.6023\\-160.599\\65\\107.1457\\-159.8342\\65\\105.6605\\-156.6928\\65\\103.7769\\-154.7396\\65\\102.7094\\-152.7865\\65\\102.0706\\-150.8334\\65\\101.2863\\-148.8137\\65\\100.798\\-146.9271\\65\\100.0774\\-144.974\\65\\99.54241\\-143.0209\\65\\101.2863\\-141.1102\\65\\103.2394\\-142.6732\\65\\105.1925\\-143.5853\\65\\107.1457\\-144.6195\\65\\109.0988\\-145.134\\65\\111.0519\\-146.117\\65\\113.005\\-146.9887\\65\\116.9113\\-147.2856\\65\\118.1226\\-148.8803\\65\\118.0843\\-150.8334\\65\\118.3073\\-152.7865\\65\\119.3298\\-154.7396\\65\\120.8175\\-155.8598\\65\\122.7707\\-157.1181\\65\\124.7238\\-157.8426\\65\\125.5727\\-158.6459\\65\\126.9917\\-160.599\\65\\126.8123\\-162.5521\\65\\125.9716\\-164.5053\\65\\125.4381\\-166.4584\\65\\127.1074\\-168.4115\\65\\127.9494\\-170.3646\\65\\127.7625\\-172.3178\\65\\127.7625\\-174.2709\\65\\128.3825\\-176.224\\65\\129.6413\\-178.1771\\65\\129.761\\-180.1303\\65\\129.7494\\-184.0365\\65\\129.1559\\-185.9896\\65\\128.63\\-186.816\\65\\127.1409\\-189.8959\\65\\126.6769\\-190.3953\\65\\124.6511\\-191.849\\65\\120.8175\\-194.2286\\65"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "66"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "584"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-105.745\\-151.2519\\67\\-106.6428\\-148.8803\\67\\-106.2212\\-146.9271\\67\\-104.7447\\-144.974\\67\\-103.7918\\-143.9463\\67\\-101.8387\\-142.1671\\67\\-97.93247\\-139.1068\\67\\-95.97935\\-138.2699\\67\\-94.57886\\-137.1615\\67\\-92.0731\\-134.6381\\67\\-90.11997\\-132.8018\\67\\-88.16685\\-131.9716\\67\\-86.21372\\-130.5845\\67\\-83.3773\\-127.3959\\67\\-81.26292\\-125.4428\\67\\-78.40122\\-122.566\\67\\-77.4922\\-121.5365\\67\\-74.59043\\-117.6303\\67\\-70.58872\\-113.6843\\67\\-68.58219\\-111.7709\\67\\-65.386\\-107.8646\\67\\-64.72935\\-106.965\\67\\-62.7841\\-103.9584\\67\\-60.8231\\-102.7073\\67\\-58.86998\\-102.348\\67\\-56.91685\\-102.2943\\67\\-54.96373\\-102.8393\\67\\-53.26017\\-103.9584\\67\\-52.70728\\-105.9115\\67\\-52.04046\\-107.8646\\67\\-51.05748\\-109.7802\\67\\-51.8056\\-111.7709\\67\\-53.0106\\-112.8116\\67\\-54.96373\\-114.6601\\67\\-56.91685\\-116.2073\\67\\-58.86998\\-116.8203\\67\\-59.67232\\-117.6303\\67\\-60.38841\\-119.5834\\67\\-61.50722\\-121.5365\\67\\-62.77623\\-123.4349\\67\\-62.77623\\-123.6605\\67\\-60.8231\\-124.7845\\67\\-60.0225\\-125.4428\\67\\-59.98378\\-127.3959\\67\\-62.77623\\-130.2525\\67\\-64.72935\\-131.4507\\67\\-66.68247\\-132.5256\\67\\-68.6356\\-133.7935\\67\\-70.58872\\-133.657\\67\\-72.54185\\-133.9241\\67\\-74.49497\\-134.7404\\67\\-76.4481\\-135.2006\\67\\-78.40122\\-134.3248\\67\\-80.35435\\-134.0356\\67\\-82.30747\\-134.7476\\67\\-84.2606\\-136.3005\\67\\-86.21372\\-137.5989\\67\\-88.16685\\-138.5378\\67\\-88.7757\\-139.1146\\67\\-91.1926\\-141.0678\\67\\-97.06752\\-146.9271\\67\\-97.93247\\-147.8615\\67\\-99.18277\\-148.8803\\67\\-100.8684\\-150.8334\\67\\-101.8387\\-151.6697\\67\\-103.7918\\-152.4929\\67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "585"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-212.3467\\67\\43.69069\\-207.474\\67\\42.3357\\-205.5209\\67\\42.3357\\-203.5678\\67\\40.79733\\-201.6146\\67\\40.67429\\-201.6146\\67\\38.59381\\-203.5678\\67\\37.66188\\-205.5209\\67\\36.83315\\-206.3812\\67\\34.88002\\-206.7894\\67\\33.78938\\-205.5209\\67\\35.60873\\-203.5678\\67\\36.83315\\-201.5231\\67\\37.67612\\-199.6615\\67\\39.61868\\-197.7084\\67\\40.5524\\-195.7553\\67\\41.64687\\-193.8021\\67\\42.3357\\-191.849\\67\\43.67378\\-189.8959\\67\\44.64565\\-188.9287\\67\\46.59877\\-187.4545\\67\\50.50502\\-186.3173\\67\\52.45815\\-185.8026\\67\\56.3644\\-185.841\\67\\58.31752\\-186.8752\\67\\60.27065\\-187.4208\\67\\62.22377\\-189.0148\\67\\67.05598\\-193.8021\\67\\67.60354\\-195.7553\\67\\67.6123\\-197.7084\\67\\68.1216\\-199.6615\\67\\70.56822\\-201.6146\\67\\71.9894\\-202.6251\\67\\72.89543\\-203.5678\\67\\72.78532\\-205.5209\\67\\71.9894\\-206.2381\\67\\70.03628\\-205.8485\\67\\68.08315\\-204.6452\\67\\66.13003\\-205.5125\\67\\65.07094\\-207.474\\67\\62.22377\\-210.6942\\67\\60.27065\\-212.3995\\67\\58.31752\\-212.927\\67\\50.50502\\-212.9367\\67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "41"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "586"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "77.84878\\-132.9847\\67\\75.89565\\-132.4384\\67\\73.86964\\-131.3021\\67\\70.03628\\-129.8524\\67\\68.08315\\-128.5466\\67\\65.91772\\-127.3959\\67\\64.1769\\-126.7211\\67\\62.22377\\-126.2642\\67\\60.27065\\-126.0432\\67\\58.31752\\-125.4815\\67\\56.3644\\-124.5455\\67\\52.45815\\-122.9112\\67\\50.50502\\-121.4962\\67\\48.5519\\-119.2913\\67\\47.44772\\-117.6303\\67\\45.6817\\-115.6771\\67\\44.1231\\-111.7709\\67\\44.47186\\-109.8178\\67\\45.88047\\-107.8646\\67\\47.81746\\-105.9115\\67\\48.5519\\-105.3455\\67\\50.50502\\-104.4284\\67\\52.45815\\-103.2802\\67\\53.70377\\-103.9584\\67\\54.41127\\-104.5362\\67\\55.33328\\-105.9115\\67\\60.27065\\-110.8146\\67\\64.12431\\-113.724\\67\\66.50562\\-115.6771\\67\\69.31638\\-117.6303\\67\\70.03628\\-118.2542\\67\\71.9894\\-119.5308\\67\\74.09338\\-121.5365\\67\\76.42092\\-123.4896\\67\\80.39399\\-127.3959\\67\\81.75503\\-128.4762\\67\\83.70815\\-130.3753\\67\\84.81889\\-131.3021\\67\\84.605\\-133.2553\\67\\83.70815\\-133.9528\\67\\81.75503\\-134.4304\\67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002268"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "59"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "587"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "120.8175\\-192.0474\\67\\119.7596\\-191.849\\67\\118.8644\\-191.3119\\67\\117.1985\\-189.8959\\67\\116.968\\-187.9428\\67\\116.8486\\-185.9896\\67\\116.9381\\-182.0834\\67\\114.7279\\-178.1771\\67\\114.3304\\-176.224\\67\\114.1804\\-174.2709\\67\\113.7829\\-172.3178\\67\\112.3859\\-168.4115\\67\\111.5611\\-166.4584\\67\\110.4485\\-164.5053\\67\\109.2615\\-160.599\\67\\106.7245\\-156.6928\\67\\105.7209\\-154.7396\\67\\104.1575\\-152.7865\\67\\102.8425\\-150.8334\\67\\101.2863\\-146.9633\\67\\100.089\\-144.974\\67\\99.04018\\-143.0209\\67\\99.661\\-141.0678\\67\\99.27932\\-139.1146\\67\\101.2863\\-138.9708\\67\\103.2394\\-140.6639\\67\\107.1457\\-142.9679\\67\\111.0519\\-143.2704\\67\\113.005\\-144.808\\67\\114.9582\\-145.1628\\67\\116.9113\\-145.2081\\67\\118.8644\\-145.6334\\67\\120.8175\\-146.7548\\67\\120.9285\\-146.9271\\67\\119.9234\\-148.8803\\67\\119.3174\\-150.8334\\67\\119.7811\\-152.7865\\67\\120.8175\\-154.1713\\67\\122.7707\\-155.4841\\67\\124.7238\\-156.4668\\67\\126.7456\\-158.6459\\67\\127.7427\\-160.599\\67\\127.7553\\-162.5521\\67\\127.5873\\-164.5053\\67\\127.718\\-166.4584\\67\\128.63\\-167.5619\\67\\129.1418\\-168.4115\\67\\128.7797\\-170.3646\\67\\127.9672\\-172.3178\\67\\127.9672\\-174.2709\\67\\128.1081\\-176.224\\67\\128.3808\\-178.1771\\67\\128.4403\\-182.0834\\67\\128.3548\\-184.0365\\67\\126.9573\\-185.9896\\67\\126.6769\\-187.1225\\67\\126.2667\\-187.9428\\67\\124.7973\\-189.8959\\67\\122.7707\\-191.9051\\67"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "63"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "588"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-103.7918\\-150.8094\\69\\-105.415\\-148.8803\\69\\-105.3985\\-146.9271\\69\\-105.0101\\-144.974\\69\\-104.2965\\-143.0209\\69\\-103.7918\\-142.4512\\69\\-99.8856\\-138.608\\69\\-97.93247\\-137.2354\\69\\-95.97935\\-136.5332\\69\\-92.68539\\-133.2553\\69\\-92.0731\\-132.7232\\69\\-90.11997\\-131.7657\\69\\-88.16685\\-130.4532\\69\\-84.2606\\-127.1607\\69\\-80.35435\\-123.1685\\69\\-78.8895\\-121.5365\\69\\-77.28595\\-119.5834\\69\\-74.49497\\-116.6283\\69\\-71.56528\\-113.724\\69\\-69.28867\\-111.7709\\69\\-66.68247\\-109.1441\\69\\-65.65111\\-107.8646\\69\\-64.44753\\-105.9115\\69\\-62.77623\\-104.3453\\69\\-60.8231\\-103.4241\\69\\-58.86998\\-103.1039\\69\\-56.91685\\-103.6902\\69\\-56.42223\\-103.9584\\69\\-54.96373\\-105.4169\\69\\-53.63588\\-107.8646\\69\\-52.44152\\-109.8178\\69\\-52.35732\\-111.7709\\69\\-53.0106\\-112.3314\\69\\-54.96373\\-113.5834\\69\\-56.91685\\-115.3875\\69\\-59.09534\\-117.6303\\69\\-60.30341\\-119.5834\\69\\-62.77623\\-122.0763\\69\\-64.72935\\-123.0977\\69\\-65.94507\\-123.4896\\69\\-64.58984\\-125.4428\\69\\-62.77623\\-126.1481\\69\\-61.47204\\-127.3959\\69\\-63.07733\\-129.349\\69\\-65.98246\\-131.3021\\69\\-66.68247\\-131.8753\\69\\-68.6356\\-132.8114\\69\\-70.58872\\-132.4126\\69\\-72.54185\\-132.5384\\69\\-74.49497\\-133.7702\\69\\-76.4481\\-134.4543\\69\\-78.40122\\-134.9115\\69\\-80.35435\\-134.0636\\69\\-82.30747\\-133.7102\\69\\-84.2606\\-134.6836\\69\\-86.21372\\-136.2743\\69\\-88.16685\\-138.0266\\69\\-90.11997\\-138.9751\\69\\-92.0731\\-140.3745\\69\\-97.93247\\-146.1834\\69\\-99.8856\\-147.4889\\69\\-101.241\\-148.8803\\69\\-101.8387\\-149.6865\\69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "589"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-212.3316\\69\\44.64565\\-208.4686\\69\\43.69069\\-207.474\\69\\42.3357\\-205.5209\\69\\42.28613\\-203.5678\\69\\40.7394\\-201.6373\\69\\38.78627\\-202.9778\\69\\38.27753\\-203.5678\\69\\37.47207\\-205.5209\\69\\36.83315\\-206.1882\\69\\34.88002\\-206.9419\\69\\33.6935\\-205.5209\\69\\35.7007\\-203.5678\\69\\37.67888\\-199.6615\\69\\39.63324\\-197.7084\\69\\41.07769\\-195.7553\\69\\42.3357\\-191.849\\69\\43.76017\\-189.8959\\69\\44.64565\\-189.0622\\69\\47.14131\\-187.9428\\69\\50.50502\\-186.7657\\69\\52.45815\\-185.8026\\69\\56.3644\\-185.841\\69\\58.31752\\-186.9008\\69\\60.27065\\-187.3965\\69\\62.22377\\-188.7997\\69\\64.1769\\-190.6146\\69\\67.07135\\-193.8021\\69\\67.60354\\-195.7553\\69\\67.63926\\-199.6615\\69\\69.52707\\-201.6146\\69\\71.8024\\-203.5678\\69\\72.27136\\-205.5209\\69\\71.9894\\-205.8131\\69\\70.03628\\-206.3669\\69\\68.08315\\-204.6302\\69\\66.13003\\-205.4488\\69\\65.07588\\-207.474\\69\\63.50082\\-209.4271\\69\\62.54031\\-211.3803\\69\\62.22377\\-211.6925\\69\\60.27065\\-212.7278\\69\\58.31752\\-212.9367\\69\\50.50502\\-212.9174\\69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "590"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "81.75503\\-133.7347\\69\\79.8019\\-132.5271\\69\\77.84878\\-131.9388\\69\\75.89565\\-130.8139\\69\\73.94253\\-130.0106\\69\\71.9894\\-129.3725\\69\\70.03628\\-128.5001\\69\\68.08315\\-126.9699\\69\\66.13003\\-126.2547\\69\\64.1769\\-125.9577\\69\\62.22377\\-125.1279\\69\\58.31752\\-124.0661\\69\\56.3644\\-122.9726\\69\\54.41127\\-122.137\\69\\52.45815\\-121.0706\\69\\50.50502\\-119.6439\\69\\48.73141\\-117.6303\\69\\47.12193\\-115.6771\\69\\46.68541\\-113.724\\69\\46.59877\\-111.6081\\69\\46.68755\\-109.8178\\69\\47.94898\\-107.8646\\69\\48.5519\\-107.251\\69\\50.50502\\-105.803\\69\\52.45815\\-105.0298\\69\\54.41127\\-105.783\\69\\56.3644\\-106.6716\\69\\58.31752\\-107.8417\\69\\60.29635\\-109.8178\\69\\62.22377\\-111.0806\\69\\66.13003\\-114.9617\\69\\68.08315\\-116.5199\\69\\70.03628\\-117.2038\\69\\73.94253\\-120.6838\\69\\75.89565\\-122.112\\69\\77.84878\\-123.3676\\69\\79.8019\\-125.3073\\69\\82.40863\\-127.3959\\69\\83.70815\\-128.6654\\69\\85.66128\\-129.7375\\69\\87.41438\\-131.3021\\69\\85.97594\\-133.2553\\69\\85.66128\\-133.4547\\69\\83.70815\\-133.9313\\69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002267"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "54"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "591"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "120.8175\\-186.9662\\69\\119.8681\\-185.9896\\69\\119.9223\\-184.0365\\69\\120.6083\\-182.0834\\69\\118.9218\\-180.1303\\69\\116.9113\\-178.0883\\69\\115.7249\\-174.2709\\69\\114.9702\\-170.3646\\69\\114.3988\\-168.4115\\69\\113.2397\\-166.4584\\69\\111.2998\\-162.5521\\69\\110.9288\\-160.599\\69\\109.7421\\-158.6459\\69\\108.394\\-156.6928\\69\\107.3516\\-154.7396\\69\\105.8563\\-152.7865\\69\\104.192\\-150.8334\\69\\102.8813\\-148.8803\\69\\102.1018\\-146.9271\\69\\100.4224\\-144.974\\69\\99.53259\\-143.0209\\69\\99.00763\\-141.0678\\69\\98.06524\\-139.1146\\69\\97.38003\\-137.3921\\69\\97.38003\\-136.8541\\69\\99.33315\\-136.619\\69\\100.2156\\-137.1615\\69\\103.2394\\-138.6813\\69\\105.1925\\-139.1941\\69\\107.1457\\-140.7851\\69\\111.0519\\-141.6118\\69\\114.9582\\-143.4954\\69\\118.8644\\-144.2248\\69\\120.8175\\-145.5346\\69\\121.7775\\-146.9271\\69\\121.4299\\-148.8803\\69\\120.8175\\-150.9729\\69\\122.5265\\-152.7865\\69\\124.7238\\-154.8578\\69\\126.6769\\-158.1042\\69\\127.113\\-158.6459\\69\\127.7418\\-160.599\\69\\127.7584\\-164.5053\\69\\127.9212\\-166.4584\\69\\128.2731\\-168.4115\\69\\127.9845\\-170.3646\\69\\127.6046\\-174.2709\\69\\126.6769\\-177.1701\\69\\125.9445\\-178.1771\\69\\125.6732\\-180.1303\\69\\125.6732\\-182.0834\\69\\125.1958\\-184.0365\\69\\124.7238\\-184.8457\\69\\122.7707\\-186.8306\\69"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002266"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "74"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "592"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-103.7918\\-148.7394\\71\\-104.8106\\-146.9271\\71\\-105.0432\\-144.974\\71\\-105.0151\\-143.0209\\71\\-104.3526\\-141.0678\\71\\-103.7918\\-140.4333\\71\\-100.4905\\-137.1615\\71\\-99.8856\\-136.6317\\71\\-97.93247\\-135.8156\\71\\-95.97935\\-134.5204\\71\\-94.02622\\-132.6017\\71\\-92.0731\\-131.2491\\71\\-90.11997\\-130.4113\\71\\-88.16685\\-128.7805\\71\\-86.21372\\-127.8235\\71\\-84.2606\\-126.3809\\71\\-81.40102\\-123.4896\\71\\-79.88142\\-121.5365\\71\\-78.67176\\-119.5834\\71\\-74.49497\\-115.4689\\71\\-72.54185\\-113.6248\\71\\-70.58872\\-112.3833\\71\\-68.6356\\-110.7717\\71\\-67.6871\\-109.8178\\71\\-66.19419\\-107.8646\\71\\-65.07906\\-105.9115\\71\\-64.72935\\-105.5594\\71\\-62.77623\\-104.7745\\71\\-60.8231\\-104.7595\\71\\-58.86998\\-103.5237\\71\\-56.91685\\-103.6841\\71\\-56.64261\\-103.9584\\71\\-56.55664\\-105.9115\\71\\-56.04016\\-107.8646\\71\\-54.96373\\-109.0198\\71\\-54.4045\\-109.8178\\71\\-53.76606\\-111.7709\\71\\-54.96373\\-112.8911\\71\\-57.39647\\-115.6771\\71\\-58.11153\\-117.6303\\71\\-58.86998\\-118.4336\\71\\-60.8231\\-120.1422\\71\\-62.77623\\-120.9495\\71\\-64.72935\\-122.2881\\71\\-66.68247\\-122.4228\\71\\-68.6356\\-123.0107\\71\\-70.58872\\-124.5711\\71\\-71.46632\\-125.4428\\71\\-70.58872\\-127.3813\\71\\-68.6356\\-126.6314\\71\\-66.68247\\-126.1478\\71\\-64.72935\\-125.8681\\71\\-62.77623\\-127.0443\\71\\-62.47728\\-127.3959\\71\\-64.24847\\-129.349\\71\\-64.72935\\-129.7585\\71\\-66.68247\\-130.2685\\71\\-68.6356\\-130.9159\\71\\-70.58872\\-131.6787\\71\\-72.54185\\-131.9762\\71\\-74.49497\\-132.746\\71\\-76.4481\\-133.9877\\71\\-78.40122\\-134.6113\\71\\-80.56187\\-133.2553\\71\\-82.30747\\-132.414\\71\\-84.2606\\-133.6941\\71\\-86.21372\\-134.6328\\71\\-88.16685\\-136.4692\\71\\-90.11997\\-137.6913\\71\\-92.0731\\-138.5405\\71\\-92.79073\\-139.1146\\71\\-98.6854\\-144.974\\71\\-99.8856\\-145.9386\\71\\-101.8387\\-147.8593\\71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002266"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "593"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-212.1059\\71\\46.59877\\-210.4085\\71\\43.69069\\-207.474\\71\\42.27658\\-205.5209\\71\\41.98723\\-203.5678\\71\\40.7394\\-202.1229\\71\\38.78627\\-202.5815\\71\\37.82858\\-203.5678\\71\\36.58547\\-205.5209\\71\\34.88002\\-206.7661\\71\\33.06963\\-205.5209\\71\\34.88002\\-204.3015\\71\\35.67554\\-203.5678\\71\\36.11158\\-201.6146\\71\\37.70308\\-199.6615\\71\\38.78627\\-198.733\\71\\41.50004\\-195.7553\\71\\42.08285\\-193.8021\\71\\42.3357\\-191.849\\71\\44.09048\\-189.8959\\71\\44.64565\\-189.4134\\71\\46.59877\\-188.7167\\71\\48.5519\\-187.6837\\71\\50.50502\\-186.9125\\71\\52.45815\\-185.8026\\71\\56.3644\\-185.8152\\71\\58.31752\\-186.3217\\71\\62.22377\\-187.7433\\71\\64.72887\\-189.8959\\71\\65.91532\\-191.849\\71\\67.20473\\-193.8021\\71\\67.60354\\-195.7553\\71\\67.63017\\-199.6615\\71\\69.13205\\-201.6146\\71\\71.1208\\-203.5678\\71\\71.65136\\-205.5209\\71\\70.03628\\-206.5066\\71\\68.08315\\-204.9448\\71\\66.13003\\-206.252\\71\\65.08501\\-207.474\\71\\63.69728\\-209.4271\\71\\63.06151\\-211.3803\\71\\62.22377\\-212.2019\\71\\60.27065\\-212.927\\71\\52.45815\\-212.9367\\71\\50.50502\\-212.7872\\71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002266"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "99"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "594"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "118.8644\\-174.3116\\71\\118.7912\\-168.4115\\71\\117.0403\\-166.4584\\71\\114.9582\\-164.6489\\71\\113.5369\\-162.5521\\71\\112.91\\-160.599\\71\\111.7899\\-158.6459\\71\\111.0519\\-156.8555\\71\\109.5961\\-154.7396\\71\\107.8648\\-152.7865\\71\\105.9173\\-150.8334\\71\\104.4872\\-148.8803\\71\\103.3936\\-146.9271\\71\\101.9858\\-144.974\\71\\100.282\\-143.0209\\71\\99.29559\\-141.0678\\71\\96.91096\\-139.1146\\71\\95.4269\\-137.7684\\71\\93.90974\\-137.1615\\71\\93.47378\\-136.5802\\71\\91.52065\\-134.835\\71\\89.56753\\-133.2934\\71\\85.66128\\-133.8326\\71\\83.70815\\-133.5143\\71\\81.75503\\-132.4864\\71\\79.8019\\-131.7369\\71\\77.84878\\-130.4516\\71\\75.82277\\-129.349\\71\\73.94253\\-128.6208\\71\\71.9894\\-128.0095\\71\\70.03628\\-126.9172\\71\\68.08315\\-126.1066\\71\\66.13003\\-125.5782\\71\\64.1769\\-124.7724\\71\\60.32809\\-123.4896\\71\\56.3644\\-121.9019\\71\\54.41127\\-120.7882\\71\\52.45815\\-120.0209\\71\\50.50502\\-118.5245\\71\\49.62558\\-117.6303\\71\\48.80697\\-115.6771\\71\\48.67167\\-113.724\\71\\48.64696\\-111.7709\\71\\48.78978\\-109.8178\\71\\50.50502\\-108.3945\\71\\52.45815\\-108.1302\\71\\54.41127\\-107.2572\\71\\56.3644\\-106.7092\\71\\58.31752\\-107.2995\\71\\60.27065\\-109.1581\\71\\62.22377\\-110.5413\\71\\63.70693\\-111.7709\\71\\65.20021\\-113.724\\71\\66.13003\\-114.6538\\71\\68.08315\\-116.1118\\71\\70.03628\\-116.7292\\71\\71.9894\\-118.6372\\71\\73.94253\\-120.1874\\71\\75.89565\\-121.1018\\71\\77.84878\\-122.6243\\71\\79.8019\\-124.4226\\71\\81.75503\\-125.7364\\71\\85.66128\\-127.9667\\71\\87.6144\\-128.8277\\71\\88.21712\\-129.349\\71\\89.56753\\-130.9204\\71\\90.67258\\-131.3021\\71\\91.52065\\-132.0346\\71\\93.47378\\-132.9942\\71\\94.52847\\-133.2553\\71\\95.4269\\-133.6712\\71\\97.38003\\-134.0266\\71\\99.33315\\-134.7201\\71\\101.2863\\-136.2915\\71\\103.3391\\-137.1615\\71\\105.1925\\-137.74\\71\\107.1457\\-138.6043\\71\\109.0988\\-139.6514\\71\\111.0519\\-140.2997\\71\\113.005\\-141.4331\\71\\114.9582\\-142.2345\\71\\118.8644\\-143.9742\\71\\119.9467\\-144.974\\71\\121.438\\-146.9271\\71\\121.7983\\-148.8803\\71\\122.6612\\-150.8334\\71\\124.7238\\-154.2706\\71\\125.1106\\-154.7396\\71\\125.7543\\-156.6928\\71\\126.2876\\-160.599\\71\\126.309\\-164.5053\\71\\126.2293\\-166.4584\\71\\125.8631\\-168.4115\\71\\125.7178\\-170.3646\\71\\125.7178\\-172.3178\\71\\125.1563\\-174.2709\\71\\124.7238\\-174.8315\\71\\122.7707\\-176.1264\\71\\120.8175\\-176.1903\\71"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002265"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "70"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "595"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-103.7918\\-145.9787\\73\\-104.4449\\-144.974\\73\\-105.0432\\-143.0209\\73\\-105.0681\\-141.0678\\73\\-104.5355\\-139.1146\\73\\-103.7918\\-138.1668\\73\\-102.7963\\-137.1615\\73\\-99.8856\\-135.167\\73\\-97.93247\\-134.0804\\73\\-95.97935\\-132.5172\\73\\-94.02622\\-130.6141\\73\\-91.70489\\-129.349\\73\\-90.11997\\-128.6221\\73\\-88.16685\\-127.2866\\73\\-86.21372\\-126.5188\\73\\-84.94346\\-125.4428\\73\\-82.30747\\-122.8545\\73\\-81.23659\\-121.5365\\73\\-79.38722\\-119.5834\\73\\-76.4481\\-116.614\\73\\-74.49497\\-114.7761\\73\\-70.97262\\-111.7709\\73\\-68.6356\\-109.6328\\73\\-67.02596\\-107.8646\\73\\-64.72935\\-105.6953\\73\\-62.77623\\-105.4839\\73\\-60.8231\\-106.4725\\73\\-58.86998\\-105.6452\\73\\-57.16099\\-103.9584\\73\\-56.91685\\-104.1579\\73\\-58.65181\\-105.9115\\73\\-58.30845\\-107.8646\\73\\-56.5944\\-109.8178\\73\\-55.69019\\-111.7709\\73\\-56.35184\\-113.724\\73\\-57.86629\\-115.6771\\73\\-59.12443\\-117.6303\\73\\-61.1987\\-119.5834\\73\\-64.72935\\-121.6851\\73\\-66.68247\\-122.0747\\73\\-68.6356\\-122.2904\\73\\-70.58872\\-122.9359\\73\\-71.30385\\-123.4896\\73\\-73.13935\\-125.4428\\73\\-72.54185\\-126.7042\\73\\-70.58872\\-126.6408\\73\\-68.6356\\-126.2985\\73\\-64.72935\\-125.9793\\73\\-63.46144\\-127.3959\\73\\-64.72935\\-128.8038\\73\\-66.68247\\-129.726\\73\\-68.6356\\-129.9372\\73\\-70.58872\\-130.5288\\73\\-74.49497\\-132.4628\\73\\-76.4481\\-133.8401\\73\\-78.40122\\-134.372\\73\\-79.57007\\-133.2553\\73\\-78.40122\\-131.3754\\73\\-78.40122\\-131.1024\\73\\-80.35435\\-130.304\\73\\-82.30747\\-131.0105\\73\\-84.2606\\-132.4706\\73\\-86.21372\\-133.6674\\73\\-88.16685\\-134.5933\\73\\-90.11997\\-136.2347\\73\\-92.0731\\-137.5809\\73\\-94.02622\\-138.5043\\73\\-94.74329\\-139.1146\\73\\-99.8856\\-144.1855\\73\\-101.8387\\-146.0698\\73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002265"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "596"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-212.4763\\73\\48.5519\\-211.2718\\73\\46.59877\\-210.4085\\73\\43.69069\\-207.474\\73\\42.06063\\-205.5209\\73\\41.60586\\-203.5678\\73\\40.7394\\-202.6325\\73\\38.78627\\-202.4974\\73\\34.88002\\-206.478\\73\\33.00904\\-207.474\\73\\32.79373\\-207.474\\73\\32.37532\\-205.5209\\73\\34.88002\\-203.9042\\73\\35.23124\\-203.5678\\73\\35.35562\\-201.6146\\73\\36.83315\\-200.0123\\73\\38.78627\\-199.262\\73\\40.7394\\-197.0551\\73\\41.61001\\-195.7553\\73\\42.32553\\-193.8021\\73\\42.39956\\-191.849\\73\\44.64565\\-189.6964\\73\\46.59877\\-188.8855\\73\\48.5519\\-187.6953\\73\\50.50502\\-186.9171\\73\\52.45815\\-185.8026\\73\\58.31752\\-185.8152\\73\\60.27065\\-186.3108\\73\\62.22377\\-187.1388\\73\\65.09123\\-189.8959\\73\\66.8338\\-191.849\\73\\67.44443\\-193.8021\\73\\67.60354\\-195.7553\\73\\67.63017\\-199.6615\\73\\69.04549\\-201.6146\\73\\70.96611\\-203.5678\\73\\71.65136\\-205.5209\\73\\70.03628\\-206.5113\\73\\68.08315\\-205.1641\\73\\66.13003\\-206.4381\\73\\65.10846\\-207.474\\73\\63.76096\\-209.4271\\73\\63.07109\\-211.3803\\73\\62.22377\\-212.2113\\73\\60.27065\\-212.927\\73\\52.45815\\-212.9367\\73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002265"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "82"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "597"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "120.8175\\-165.5984\\73\\118.8644\\-164.0893\\73\\116.9113\\-163.4792\\73\\116.1152\\-162.5521\\73\\114.9582\\-160.4994\\73\\113.0138\\-156.6928\\73\\111.8256\\-154.7396\\73\\107.9284\\-150.8334\\73\\106.4972\\-148.8803\\73\\105.2933\\-146.9271\\73\\103.6389\\-144.974\\73\\101.2863\\-142.6242\\73\\99.33315\\-140.4396\\73\\97.38003\\-139.7289\\73\\95.4269\\-138.3246\\73\\93.47378\\-137.7312\\73\\91.52065\\-136.3467\\73\\89.56753\\-134.3089\\73\\87.6144\\-133.7854\\73\\85.66128\\-133.5027\\73\\81.75503\\-131.2646\\73\\79.8019\\-130.416\\73\\77.84878\\-128.7883\\73\\75.89565\\-128.1665\\73\\73.94253\\-127.772\\73\\71.9894\\-126.6921\\73\\68.08315\\-125.5375\\73\\66.13003\\-124.7223\\73\\64.1769\\-124.1352\\73\\62.22377\\-122.9123\\73\\58.31752\\-121.8438\\73\\56.3644\\-120.6021\\73\\54.42276\\-119.5834\\73\\52.45815\\-118.3845\\73\\51.52104\\-117.6303\\73\\50.65874\\-115.6771\\73\\51.62921\\-113.724\\73\\51.48159\\-111.7709\\73\\53.73265\\-109.8178\\73\\54.41127\\-109.4328\\73\\56.3644\\-107.5114\\73\\58.31752\\-107.6652\\73\\58.53207\\-107.8646\\73\\61.6153\\-109.8178\\73\\62.22377\\-110.2886\\73\\64.1769\\-111.364\\73\\66.72416\\-113.724\\73\\68.08315\\-114.8877\\73\\70.03628\\-116.2145\\73\\71.9894\\-117.4378\\73\\74.42123\\-119.5834\\73\\77.84878\\-122.0489\\73\\79.8019\\-122.9669\\73\\81.75503\\-124.5565\\73\\83.70815\\-125.7862\\73\\85.66128\\-126.6246\\73\\87.6144\\-127.8033\\73\\89.56753\\-128.7805\\73\\91.52065\\-129.9295\\73\\93.47378\\-130.7281\\73\\95.4269\\-131.8986\\73\\97.38003\\-132.52\\73\\99.33315\\-133.7188\\73\\101.2863\\-134.6126\\73\\103.2394\\-135.7673\\73\\105.1925\\-136.3855\\73\\107.1457\\-137.6003\\73\\109.0988\\-138.3241\\73\\111.0519\\-139.5938\\73\\113.005\\-140.3071\\73\\114.9582\\-141.6064\\73\\116.9113\\-142.5679\\73\\119.4166\\-144.974\\73\\120.1574\\-146.9271\\73\\121.3796\\-148.8803\\73\\122.7707\\-150.8933\\73\\123.7561\\-152.7865\\73\\124.2418\\-156.6928\\73\\124.158\\-158.6459\\73\\123.8098\\-160.599\\73\\123.8098\\-164.5053\\73\\122.7707\\-165.9527\\73"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002264"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "67"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "598"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-103.7918\\-143.8212\\75\\-104.4489\\-143.0209\\75\\-105.3386\\-141.0678\\75\\-106.5418\\-139.1146\\75\\-105.9015\\-137.1615\\75\\-103.7918\\-135.8778\\75\\-101.8387\\-134.4488\\75\\-99.8856\\-132.7536\\75\\-97.93247\\-132.0173\\75\\-95.97935\\-130.5223\\75\\-94.02622\\-128.7466\\75\\-92.0731\\-127.919\\75\\-90.11997\\-126.6598\\75\\-88.16685\\-125.5055\\75\\-86.21372\\-124.7319\\75\\-84.97148\\-123.4896\\75\\-82.30747\\-121.1832\\75\\-80.73868\\-119.5834\\75\\-76.4481\\-115.3606\\75\\-74.49497\\-114.5081\\75\\-72.54185\\-112.9392\\75\\-70.58872\\-110.7775\\75\\-68.6356\\-108.948\\75\\-66.68247\\-107.6484\\75\\-64.72935\\-106.7789\\75\\-62.77623\\-107.1601\\75\\-60.8231\\-108.2204\\75\\-59.22572\\-109.8178\\75\\-59.13446\\-113.724\\75\\-59.6237\\-115.6771\\75\\-63.23775\\-119.5834\\75\\-64.72935\\-120.7296\\75\\-66.68247\\-121.645\\75\\-68.6356\\-122.0666\\75\\-70.58872\\-122.2803\\75\\-72.54185\\-122.9291\\75\\-73.1452\\-123.4896\\75\\-74.34534\\-125.4428\\75\\-72.54185\\-126.8064\\75\\-70.58872\\-126.0993\\75\\-68.6356\\-126.6182\\75\\-66.68247\\-127.2609\\75\\-64.72935\\-126.9037\\75\\-64.30505\\-127.3959\\75\\-64.72935\\-127.8655\\75\\-66.68247\\-127.7912\\75\\-68.6356\\-128.7361\\75\\-69.68319\\-129.349\\75\\-72.54185\\-130.5108\\75\\-74.49497\\-132.1539\\75\\-76.4481\\-133.5592\\75\\-78.40122\\-134.1967\\75\\-79.21167\\-133.2553\\75\\-77.21936\\-131.3021\\75\\-75.61552\\-129.349\\75\\-76.4481\\-128.063\\75\\-78.40122\\-128.5264\\75\\-82.30747\\-130.3353\\75\\-84.2606\\-131.6409\\75\\-86.21372\\-132.4396\\75\\-88.16685\\-133.6472\\75\\-90.11997\\-134.5553\\75\\-92.0731\\-136.1911\\75\\-94.02622\\-137.561\\75\\-95.97935\\-138.6634\\75\\-98.74043\\-141.0678\\75\\-101.8387\\-144.0776\\75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002264"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "599"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-212.3465\\75\\48.5519\\-210.9094\\75\\46.59877\\-210.4085\\75\\44.64565\\-208.4686\\75\\41.78479\\-205.5209\\75\\40.7394\\-203.8259\\75\\38.78627\\-202.6308\\75\\35.66604\\-205.5209\\75\\32.9269\\-208.1598\\75\\30.97377\\-208.0866\\75\\30.39015\\-207.474\\75\\30.97377\\-205.8571\\75\\31.57694\\-205.5209\\75\\32.9269\\-205.2169\\75\\34.84246\\-203.5678\\75\\34.87239\\-201.6146\\75\\36.83315\\-199.6842\\75\\38.78627\\-199.6239\\75\\40.7394\\-197.3743\\75\\41.61414\\-195.7553\\75\\42.3357\\-193.8021\\75\\42.95339\\-191.849\\75\\44.92581\\-189.8959\\75\\48.24041\\-187.9428\\75\\48.5519\\-187.6953\\75\\50.50502\\-186.9171\\75\\52.45815\\-185.8026\\75\\58.31752\\-185.8026\\75\\60.27065\\-185.9521\\75\\62.22377\\-187.0818\\75\\65.09123\\-189.8959\\75\\66.81581\\-191.849\\75\\67.44067\\-193.8021\\75\\67.60354\\-195.7553\\75\\67.63017\\-199.6615\\75\\69.04549\\-201.6146\\75\\70.96611\\-203.5678\\75\\71.65136\\-205.5209\\75\\70.03628\\-206.5113\\75\\68.08315\\-205.1641\\75\\66.13003\\-206.4878\\75\\65.23228\\-207.474\\75\\64.21475\\-209.4271\\75\\63.07109\\-211.3803\\75\\62.22377\\-212.2113\\75\\60.27065\\-212.927\\75\\52.45815\\-212.9367\\75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002264"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "69"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "600"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "116.9113\\-157.5391\\75\\114.9582\\-155.6552\\75\\114.1706\\-154.7396\\75\\113.005\\-153.8861\\75\\109.0988\\-150.0208\\75\\106.3158\\-146.9271\\75\\100.42\\-141.0678\\75\\99.33315\\-140.1405\\75\\97.38003\\-139.2094\\75\\93.47378\\-136.8338\\75\\91.52065\\-136.051\\75\\89.56753\\-134.1364\\75\\87.6144\\-132.9522\\75\\85.66128\\-132.3929\\75\\83.70815\\-130.6449\\75\\81.75503\\-130.0695\\75\\77.84878\\-128.0153\\75\\75.89565\\-127.4481\\75\\73.94253\\-126.6136\\75\\70.03628\\-125.4949\\75\\64.1769\\-123.1027\\75\\62.22377\\-122.5676\\75\\60.29612\\-121.5365\\75\\58.31752\\-120.3773\\75\\55.03035\\-117.6303\\75\\53.40419\\-115.6771\\75\\54.13363\\-113.724\\75\\55.86943\\-111.7709\\75\\56.95516\\-109.8178\\75\\58.31752\\-108.988\\75\\60.27065\\-109.2126\\75\\62.22377\\-110.4667\\75\\64.42927\\-111.7709\\75\\66.13003\\-112.5315\\75\\68.08315\\-113.6537\\75\\70.03628\\-114.942\\75\\71.9894\\-116.6537\\75\\73.94253\\-118.6269\\75\\75.89565\\-120.011\\75\\77.84878\\-120.9903\\75\\79.8019\\-122.2803\\75\\81.75503\\-123.1535\\75\\83.70815\\-124.6544\\75\\85.66128\\-125.362\\75\\87.6144\\-126.5339\\75\\89.56753\\-127.2729\\75\\91.52065\\-128.472\\75\\93.47378\\-129.3109\\75\\95.4269\\-130.4361\\75\\97.38003\\-131.727\\75\\99.33315\\-132.4577\\75\\101.2863\\-133.7583\\75\\103.2394\\-134.3912\\75\\105.1925\\-135.6996\\75\\107.1457\\-136.3486\\75\\109.0988\\-137.6557\\75\\111.0519\\-138.6085\\75\\111.5909\\-139.1146\\75\\113.005\\-140.0615\\75\\114.7322\\-141.0678\\75\\116.9113\\-143.0488\\75\\118.0598\\-144.974\\75\\119.1243\\-146.9271\\75\\119.9677\\-148.8803\\75\\120.957\\-150.8334\\75\\121.8035\\-152.7865\\75\\121.8429\\-156.6928\\75\\120.8175\\-157.9432\\75\\118.8644\\-158.031\\75"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "601"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-103.7918\\-142.1921\\77\\-105.745\\-140.6492\\77\\-106.9991\\-139.1146\\77\\-106.7359\\-137.1615\\77\\-105.745\\-136.0629\\77\\-103.7918\\-134.3751\\77\\-101.8387\\-132.8633\\77\\-99.8856\\-131.9035\\77\\-97.93247\\-130.6731\\77\\-95.97935\\-128.7208\\77\\-94.02622\\-127.7282\\77\\-92.0731\\-126.4856\\77\\-90.11997\\-124.8404\\77\\-88.16685\\-123.9917\\77\\-86.21372\\-122.7655\\77\\-84.2606\\-121.3495\\77\\-82.30747\\-120.5109\\77\\-76.4481\\-114.6705\\77\\-74.62067\\-113.724\\77\\-72.54185\\-111.4908\\77\\-70.58872\\-109.6901\\77\\-68.6356\\-108.6084\\77\\-66.68247\\-108.4885\\77\\-64.72935\\-108.5622\\77\\-62.77623\\-108.9076\\77\\-61.67053\\-109.8178\\77\\-61.53257\\-111.7709\\77\\-61.53868\\-113.724\\77\\-61.85479\\-115.6771\\77\\-63.20646\\-117.6303\\77\\-64.72935\\-119.3586\\77\\-66.68247\\-120.5831\\77\\-68.6356\\-121.6312\\77\\-72.54185\\-122.4735\\77\\-73.89266\\-123.4896\\77\\-75.47153\\-125.4428\\77\\-76.4481\\-126.4424\\77\\-78.40122\\-127.6759\\77\\-80.35435\\-128.4965\\77\\-82.30747\\-129.6406\\77\\-84.2606\\-130.449\\77\\-86.21372\\-131.6299\\77\\-88.16685\\-132.4221\\77\\-90.11997\\-133.6264\\77\\-92.0731\\-134.5108\\77\\-94.02622\\-136.1788\\77\\-95.97935\\-137.9586\\77\\-97.93247\\-139.4042\\77\\-99.8856\\-140.3937\\77\\-101.8387\\-142.1592\\77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "12"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "602"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-78.40122\\-134.0403\\77\\-79.04702\\-133.2553\\77\\-75.13329\\-129.349\\77\\-73.56577\\-127.3959\\77\\-72.54185\\-126.5636\\77\\-70.58872\\-126.0648\\77\\-69.23917\\-127.3959\\77\\-70.58872\\-128.5064\\77\\-72.54185\\-129.6878\\77\\-74.49497\\-130.7424\\77\\-76.4481\\-132.3782\\77\\-77.30925\\-133.2553\\77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "603"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-212.3261\\77\\48.5519\\-210.8834\\77\\46.59877\\-210.3845\\77\\41.69962\\-205.5209\\77\\40.7394\\-204.473\\77\\38.78627\\-203.1184\\77\\35.26937\\-205.5209\\77\\32.9269\\-207.633\\77\\30.97377\\-207.7582\\77\\30.70744\\-207.474\\77\\30.97377\\-206.9729\\77\\32.9269\\-207.1078\\77\\34.0962\\-205.5209\\77\\34.85732\\-203.5678\\77\\34.87239\\-201.6146\\77\\36.83315\\-199.6842\\77\\38.78627\\-199.6239\\77\\40.7394\\-197.3743\\77\\41.61414\\-195.7553\\77\\42.3357\\-193.8021\\77\\43.50124\\-191.849\\77\\44.64565\\-190.6926\\77\\46.59877\\-188.8902\\77\\48.5519\\-187.6953\\77\\50.50502\\-186.942\\77\\52.45815\\-185.8811\\77\\56.3644\\-185.8026\\77\\58.31752\\-185.9089\\77\\62.22377\\-187.1926\\77\\65.09123\\-189.8959\\77\\65.91832\\-191.849\\77\\67.1315\\-193.8021\\77\\67.53693\\-195.7553\\77\\67.57784\\-199.6615\\77\\69.04066\\-201.6146\\77\\70.96611\\-203.5678\\77\\71.65136\\-205.5209\\77\\70.03628\\-206.5113\\77\\68.08315\\-205.1641\\77\\66.13003\\-206.7477\\77\\65.50858\\-207.474\\77\\64.8857\\-209.4271\\77\\62.22377\\-212.2113\\77\\60.27065\\-212.927\\77\\52.45815\\-212.9174\\77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002263"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "604"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "113.005\\-151.4307\\77\\109.0988\\-147.7883\\77\\106.2476\\-144.974\\77\\105.1925\\-144.1591\\77\\101.2863\\-140.2594\\77\\99.33315\\-138.9094\\77\\97.38003\\-138.0734\\77\\95.4269\\-136.4845\\77\\93.47378\\-135.6967\\77\\91.52065\\-134.3864\\77\\89.56753\\-132.5692\\77\\87.6144\\-132.014\\77\\85.66128\\-131.0064\\77\\83.70815\\-129.6855\\77\\79.8019\\-128.3676\\77\\77.78696\\-127.3959\\77\\73.94253\\-125.7615\\77\\71.9894\\-125.0364\\77\\70.03628\\-124.65\\77\\68.08315\\-123.8308\\77\\66.13003\\-122.7434\\77\\62.22377\\-121.3352\\77\\60.64107\\-119.5834\\77\\60.27065\\-118.9203\\77\\58.31752\\-117.2782\\77\\56.91247\\-115.6771\\77\\58.35766\\-113.724\\77\\60.27065\\-112.4545\\77\\64.1769\\-112.4168\\77\\66.13003\\-112.4599\\77\\68.08315\\-113.1821\\77\\70.03628\\-114.5471\\77\\71.9894\\-115.5636\\77\\74.2477\\-117.6303\\77\\75.89565\\-118.841\\77\\77.84878\\-120.55\\77\\83.38538\\-123.4896\\77\\83.70815\\-123.7598\\77\\85.66128\\-124.2235\\77\\87.6144\\-124.8771\\77\\89.56753\\-125.9413\\77\\91.52065\\-126.8075\\77\\95.4269\\-129.1172\\77\\97.38003\\-130.5134\\77\\99.33315\\-131.7117\\77\\101.2863\\-132.6932\\77\\103.2394\\-133.9384\\77\\105.1925\\-134.7141\\77\\107.1457\\-135.9811\\77\\109.0988\\-136.7696\\77\\113.8776\\-141.0678\\77\\115.5413\\-143.0209\\77\\116.9113\\-146.8028\\77\\117.8878\\-148.8803\\77\\116.9113\\-150.315\\77\\114.9582\\-151.3217\\77"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002262"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "605"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-103.7918\\-141.2574\\79\\-105.745\\-140.2314\\79\\-106.8192\\-139.1146\\79\\-107.4819\\-137.1615\\79\\-106.5275\\-135.2084\\79\\-105.745\\-134.4818\\79\\-103.7918\\-133.6215\\79\\-101.8387\\-132.1686\\79\\-100.3149\\-131.3021\\79\\-97.93247\\-129.4921\\79\\-95.97935\\-127.7054\\79\\-94.02622\\-126.5596\\79\\-92.0731\\-125.0765\\79\\-90.11997\\-124.1567\\79\\-88.16685\\-122.9638\\79\\-84.2606\\-119.448\\79\\-82.30747\\-118.9341\\79\\-80.7711\\-117.6303\\79\\-76.4481\\-113.5445\\79\\-74.49497\\-111.763\\79\\-72.54185\\-110.6211\\79\\-68.6356\\-108.8365\\79\\-66.68247\\-109.4204\\79\\-66.09454\\-109.8178\\79\\-65.08878\\-111.7709\\79\\-65.0863\\-115.6771\\79\\-65.54648\\-117.6303\\79\\-67.52219\\-119.5834\\79\\-68.6356\\-120.5823\\79\\-70.58872\\-121.6031\\79\\-72.54185\\-122.4817\\79\\-74.49497\\-123.482\\79\\-76.93995\\-125.4428\\79\\-78.40122\\-126.5076\\79\\-80.35435\\-127.6383\\79\\-82.30747\\-128.4758\\79\\-84.2606\\-129.6172\\79\\-86.21372\\-130.4129\\79\\-88.16685\\-131.5821\\79\\-90.11997\\-132.4049\\79\\-92.0731\\-133.6026\\79\\-94.02622\\-134.4848\\79\\-94.87212\\-135.2084\\79\\-96.86775\\-137.1615\\79\\-97.93247\\-138.0581\\79\\-99.8856\\-139.3553\\79\\-101.8387\\-140.3561\\79"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002262"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "606"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-212.0871\\79\\48.5519\\-210.7484\\79\\46.59877\\-210.1787\\79\\44.64565\\-208.4686\\79\\40.7394\\-204.5402\\79\\38.96039\\-203.5678\\79\\38.58021\\-203.5678\\79\\36.83315\\-204.4333\\79\\34.88999\\-203.5678\\79\\34.93221\\-201.6146\\79\\36.83315\\-199.7563\\79\\38.78627\\-199.6239\\79\\40.7394\\-197.4884\\79\\41.63839\\-195.7553\\79\\42.3357\\-193.8021\\79\\43.63098\\-191.849\\79\\46.59877\\-188.9193\\79\\48.5519\\-187.7684\\79\\52.45815\\-186.4203\\79\\54.41127\\-185.9973\\79\\56.3644\\-186.0123\\79\\62.22377\\-187.6067\\79\\64.1769\\-189.0449\\79\\65.06161\\-189.8959\\79\\65.5759\\-191.849\\79\\66.80819\\-193.8021\\79\\67.27015\\-195.7553\\79\\67.32201\\-199.6615\\79\\68.98421\\-201.6146\\79\\70.96611\\-203.5678\\79\\71.65136\\-205.5209\\79\\70.03628\\-206.5113\\79\\68.08315\\-205.1641\\79\\66.13003\\-206.8935\\79\\65.64175\\-207.474\\79\\65.02838\\-209.4271\\79\\62.22377\\-212.2113\\79\\60.27065\\-212.927\\79\\54.41127\\-212.9174\\79\\52.45815\\-212.7304\\79"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002262"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "607"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "111.0519\\-145.3466\\79\\107.1457\\-142.4334\\79\\105.1925\\-142.0925\\79\\102.1594\\-139.1146\\79\\101.2863\\-138.3204\\79\\99.33315\\-136.9939\\79\\97.38003\\-136.2254\\79\\95.4269\\-135.0131\\79\\93.47378\\-134.1696\\79\\91.52065\\-132.5167\\79\\89.56753\\-131.5958\\79\\85.66128\\-130.1637\\79\\83.70815\\-128.4675\\79\\81.75503\\-127.785\\79\\77.84878\\-126.5296\\79\\75.89565\\-125.7129\\79\\73.94253\\-124.5975\\79\\70.03628\\-123.7854\\79\\68.08315\\-122.6637\\79\\66.13003\\-122.1639\\79\\64.1769\\-120.7806\\79\\62.90795\\-119.5834\\79\\62.73252\\-117.6303\\79\\62.86425\\-115.6771\\79\\63.74897\\-113.724\\79\\64.1769\\-113.444\\79\\66.13003\\-112.7724\\79\\70.03628\\-114.5825\\79\\71.9894\\-115.5532\\79\\73.94253\\-116.7347\\79\\75.89565\\-118.2759\\79\\77.84878\\-119.2885\\79\\79.8019\\-120.7864\\79\\81.75503\\-121.9877\\79\\83.70815\\-122.7132\\79\\85.66128\\-123.6382\\79\\87.6144\\-124.1842\\79\\89.56753\\-124.9575\\79\\91.52065\\-126.0698\\79\\93.47378\\-126.9381\\79\\95.4269\\-128.7408\\79\\97.38003\\-130.0194\\79\\99.33315\\-130.5658\\79\\101.2863\\-132.2507\\79\\103.2394\\-133.6712\\79\\105.1925\\-134.5884\\79\\105.9484\\-135.2084\\79\\108.8168\\-137.1615\\79\\112.3075\\-141.0678\\79\\113.7095\\-143.0209\\79\\113.7845\\-144.974\\79\\113.005\\-145.8683\\79"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002261"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "608"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-105.745\\-139.7152\\81\\-108.4472\\-137.1615\\81\\-108.0392\\-135.2084\\81\\-107.6981\\-134.8601\\81\\-105.745\\-133.7008\\81\\-102.3055\\-131.3021\\81\\-101.8387\\-130.8952\\81\\-99.8856\\-129.7696\\81\\-97.93247\\-128.3511\\81\\-95.97935\\-126.479\\81\\-94.02622\\-125.219\\81\\-90.11997\\-123.9779\\81\\-88.16685\\-122.8333\\81\\-86.92442\\-121.5365\\81\\-85.53764\\-119.5834\\81\\-84.2606\\-118.5357\\81\\-82.30747\\-118.4641\\81\\-80.35435\\-116.8462\\81\\-78.64193\\-115.6771\\81\\-76.4481\\-113.8479\\81\\-74.30623\\-111.7709\\81\\-72.54185\\-110.7898\\81\\-68.6356\\-110.612\\81\\-67.29961\\-111.7709\\81\\-67.10735\\-113.724\\81\\-67.10735\\-115.6771\\81\\-67.54118\\-117.6303\\81\\-69.11729\\-119.5834\\81\\-70.58872\\-120.6777\\81\\-72.54185\\-121.7684\\81\\-74.49497\\-122.6244\\81\\-76.4481\\-124.3078\\81\\-78.40122\\-125.1194\\81\\-82.30747\\-127.5754\\81\\-84.2606\\-128.4142\\81\\-86.21372\\-129.0808\\81\\-88.16685\\-130.2396\\81\\-90.11997\\-131.5463\\81\\-92.0731\\-132.3542\\81\\-94.02622\\-133.5583\\81\\-95.97935\\-134.4374\\81\\-96.87013\\-135.2084\\81\\-98.83344\\-137.1615\\81\\-99.8856\\-138.0576\\81\\-101.8387\\-139.4003\\81\\-103.7918\\-140.171\\81"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002261"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "609"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-212.2256\\81\\50.50502\\-211.1808\\81\\48.5519\\-210.4784\\81\\46.59877\\-209.2401\\81\\44.64565\\-208.4597\\81\\40.7394\\-204.4183\\81\\39.01444\\-203.5678\\81\\38.56433\\-203.5678\\81\\36.83315\\-204.4333\\81\\34.88002\\-203.6262\\81\\35.29597\\-201.6146\\81\\36.83315\\-200.1668\\81\\38.78627\\-199.6239\\81\\40.7394\\-198.1251\\81\\41.14579\\-197.7084\\81\\42.4107\\-193.8021\\81\\43.66909\\-191.849\\81\\44.64565\\-190.8677\\81\\46.59877\\-189.1175\\81\\48.5519\\-188.3121\\81\\52.45815\\-187.0609\\81\\54.41127\\-186.8156\\81\\56.3644\\-186.8299\\81\\58.31752\\-187.105\\81\\60.27065\\-187.6722\\81\\62.22377\\-188.4455\\81\\64.1769\\-189.5878\\81\\64.49127\\-189.8959\\81\\65.36679\\-191.849\\81\\65.81521\\-193.8021\\81\\66.09246\\-195.7553\\81\\66.10732\\-197.7084\\81\\66.74038\\-199.6615\\81\\68.82858\\-201.6146\\81\\70.03628\\-202.6151\\81\\70.96611\\-203.5678\\81\\71.65136\\-205.5209\\81\\70.03628\\-206.5113\\81\\68.08315\\-205.1641\\81\\66.13003\\-206.8935\\81\\65.64175\\-207.474\\81\\65.02838\\-209.4271\\81\\62.22377\\-212.2113\\81\\60.27065\\-212.927\\81\\56.3644\\-212.9367\\81\\54.41127\\-212.7715\\81"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002261"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "610"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "99.33315\\-134.3471\\81\\97.38003\\-133.1978\\81\\93.47378\\-132.0269\\81\\91.52065\\-130.9427\\81\\89.56753\\-130.0586\\81\\85.66128\\-128.1902\\81\\83.70815\\-127.0229\\81\\81.75503\\-126.2105\\81\\79.8019\\-125.1668\\81\\77.84878\\-124.9511\\81\\75.89565\\-124.267\\81\\73.94253\\-122.9648\\81\\71.9894\\-122.7345\\81\\70.03628\\-121.9027\\81\\68.08315\\-120.8322\\81\\66.13003\\-120.3195\\81\\65.30118\\-119.5834\\81\\65.16934\\-117.6303\\81\\66.13003\\-116.6203\\81\\68.08315\\-115.4572\\81\\70.03628\\-116.3343\\81\\71.9894\\-116.5948\\81\\73.94253\\-116.7285\\81\\75.89565\\-118.088\\81\\77.84878\\-119.2686\\81\\79.8019\\-120.6167\\81\\81.75503\\-121.3879\\81\\83.70815\\-122.3321\\81\\85.75681\\-123.4896\\81\\87.6144\\-124.3113\\81\\89.56753\\-124.9034\\81\\91.52065\\-125.9647\\81\\93.47378\\-126.8816\\81\\95.4269\\-129.0963\\81\\97.38003\\-130.4541\\81\\99.33315\\-130.8021\\81\\101.8722\\-133.2553\\81\\101.2863\\-134.2914\\81"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002260"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "611"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-105.745\\-138.1594\\83\\-107.5896\\-137.1615\\83\\-108.4571\\-135.2084\\83\\-107.6981\\-134.3841\\83\\-105.745\\-132.8478\\83\\-103.7918\\-131.7579\\83\\-100.4632\\-129.349\\83\\-97.93247\\-127.0704\\83\\-95.69452\\-125.4428\\83\\-94.02622\\-124.5286\\83\\-92.0731\\-124.2031\\83\\-90.11997\\-124.0669\\83\\-88.16685\\-122.9136\\83\\-86.85606\\-121.5365\\83\\-85.62138\\-119.5834\\83\\-84.2606\\-118.4864\\83\\-82.30747\\-118.4864\\83\\-80.35435\\-117.4419\\83\\-78.40122\\-116.5457\\83\\-76.4481\\-116.3053\\83\\-75.44628\\-115.6771\\83\\-74.49497\\-114.7872\\83\\-72.54185\\-114.2353\\83\\-70.40092\\-115.6771\\83\\-70.78119\\-117.6303\\83\\-72.84989\\-119.5834\\83\\-74.49497\\-120.8942\\83\\-75.61757\\-121.5365\\83\\-76.4481\\-122.2474\\83\\-78.40122\\-123.0781\\83\\-80.35435\\-124.4779\\83\\-82.30747\\-126.1491\\83\\-84.2606\\-126.9652\\83\\-86.21372\\-127.135\\83\\-88.16685\\-128.339\\83\\-90.11997\\-130.1557\\83\\-92.0731\\-130.9639\\83\\-94.02622\\-132.1067\\83\\-95.97935\\-132.8463\\83\\-97.93247\\-134.2256\\83\\-100.8807\\-137.1615\\83\\-101.8387\\-138.0119\\83\\-103.7918\\-138.3922\\83"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002260"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "612"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-210.9273\\83\\48.5519\\-210.4037\\83\\46.59877\\-208.9135\\83\\44.64565\\-208.3404\\83\\43.84496\\-207.474\\83\\42.91632\\-205.5209\\83\\40.7394\\-203.7042\\83\\38.78627\\-203.3561\\83\\36.83315\\-204.4333\\83\\34.88002\\-204.0261\\83\\34.46408\\-203.5678\\83\\35.5879\\-201.6146\\83\\36.83315\\-200.4886\\83\\38.78627\\-199.7836\\83\\40.7394\\-198.527\\83\\41.55004\\-197.7084\\83\\42.22778\\-195.7553\\83\\43.96153\\-191.849\\83\\44.64565\\-191.1649\\83\\46.8479\\-189.8959\\83\\48.5519\\-189.0306\\83\\50.50502\\-188.7413\\83\\54.41127\\-187.5609\\83\\56.3644\\-187.5836\\83\\58.31752\\-188.3198\\83\\60.27065\\-188.7558\\83\\62.22377\\-189.3513\\83\\64.68073\\-191.849\\83\\65.41582\\-193.8021\\83\\65.63318\\-195.7553\\83\\65.65918\\-197.7084\\83\\66.9896\\-199.6615\\83\\70.96611\\-203.5678\\83\\71.65136\\-205.5209\\83\\70.03628\\-206.5113\\83\\68.08315\\-205.1641\\83\\66.13003\\-206.8935\\83\\65.64175\\-207.474\\83\\65.02838\\-209.4271\\83\\62.22377\\-212.2457\\83\\60.27065\\-212.927\\83\\56.3644\\-212.9367\\83\\54.41127\\-212.6254\\83"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002259"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "32"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "613"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-107.6981\\-135.8573\\85\\-108.2729\\-135.2084\\85\\-107.6981\\-134.5552\\85\\-105.745\\-133.3907\\85\\-103.4385\\-131.3021\\85\\-100.3173\\-129.349\\85\\-97.93247\\-127.1602\\85\\-95.97935\\-126.2972\\85\\-94.02622\\-125.2646\\85\\-92.0731\\-124.475\\85\\-90.11997\\-124.4662\\85\\-88.16685\\-123.6972\\85\\-86.10522\\-121.5365\\85\\-85.3921\\-119.5834\\85\\-84.2606\\-118.6109\\85\\-82.30747\\-118.6109\\85\\-80.35435\\-118.9473\\85\\-79.49114\\-119.5834\\85\\-79.18124\\-121.5365\\85\\-80.35435\\-122.6402\\85\\-82.30747\\-123.3152\\85\\-84.2606\\-124.7017\\85\\-86.21372\\-125.2474\\85\\-88.16685\\-126.4402\\85\\-90.11997\\-128.4123\\85\\-92.0731\\-129.2968\\85\\-94.02622\\-130.3451\\85\\-95.97935\\-131.2355\\85\\-97.93247\\-131.2945\\85\\-99.8856\\-132.5468\\85\\-103.7918\\-136.3986\\85\\-105.745\\-136.7746\\85"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002259"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "45"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "614"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-212.2513\\85\\50.50502\\-211.0032\\85\\48.5519\\-210.4235\\85\\46.59877\\-208.771\\85\\44.64565\\-207.2848\\85\\43.61606\\-205.5209\\85\\42.69252\\-204.5974\\85\\40.7394\\-203.3808\\85\\38.78627\\-203.4593\\85\\36.83315\\-204.4723\\85\\34.88002\\-204.31\\85\\34.21053\\-203.5678\\85\\35.66702\\-201.6146\\85\\36.83315\\-200.7011\\85\\38.78627\\-200.3757\\85\\40.7394\\-199.0049\\85\\41.76392\\-197.7084\\85\\43.10847\\-195.7553\\85\\43.72024\\-193.8021\\85\\44.64565\\-192.5722\\85\\46.59877\\-190.9681\\85\\48.5519\\-190.0313\\85\\50.50502\\-189.3731\\85\\52.45815\\-189.0175\\85\\54.41127\\-188.7856\\85\\56.3644\\-188.8023\\85\\60.27065\\-189.4018\\85\\62.22377\\-190.7823\\85\\64.1769\\-192.7107\\85\\65.1774\\-193.8021\\85\\65.63318\\-195.7553\\85\\65.65918\\-197.7084\\85\\67.10659\\-199.6615\\85\\71.00823\\-203.5678\\85\\71.65136\\-205.5209\\85\\70.03628\\-206.5352\\85\\68.08315\\-205.1641\\85\\66.13003\\-206.8935\\85\\65.64175\\-207.474\\85\\65.03913\\-209.4271\\85\\62.22377\\-212.4658\\85\\60.27065\\-212.9664\\85\\58.31752\\-213.0404\\85\\56.3644\\-212.9973\\85\\54.41127\\-212.8451\\85"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002258"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "615"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-213.6589\\87\\52.45815\\-212.606\\87\\50.50502\\-211.7672\\87\\48.5519\\-210.6993\\87\\46.59877\\-209.1016\\87\\44.64565\\-206.7765\\87\\43.70262\\-205.5209\\87\\42.69252\\-204.5361\\87\\40.7394\\-203.6763\\87\\36.83315\\-204.8092\\87\\34.88002\\-203.836\\87\\34.70564\\-203.5678\\87\\36.83315\\-201.3538\\87\\38.78627\\-201.0966\\87\\40.7394\\-200.547\\87\\41.6069\\-199.6615\\87\\42.22778\\-197.7084\\87\\43.54941\\-195.7553\\87\\44.09153\\-193.8021\\87\\44.64565\\-193.1075\\87\\46.59877\\-191.4696\\87\\48.5519\\-190.6867\\87\\50.50502\\-189.6368\\87\\54.41127\\-189.264\\87\\56.3644\\-189.3308\\87\\60.27065\\-189.6602\\87\\62.22377\\-190.9657\\87\\65.10995\\-193.8021\\87\\65.63318\\-195.7553\\87\\65.74309\\-197.7084\\87\\67.15726\\-199.6615\\87\\68.08315\\-200.6332\\87\\71.2072\\-203.5678\\87\\71.65136\\-205.5209\\87\\70.03628\\-206.756\\87\\68.08315\\-205.1641\\87\\66.13003\\-206.8935\\87\\65.64175\\-207.474\\87\\65.11277\\-209.4271\\87\\64.1769\\-210.7484\\87\\62.22377\\-212.8538\\87\\60.27065\\-213.5328\\87\\58.31752\\-213.9962\\87"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002257"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "616"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-214.013\\89\\50.50502\\-212.9189\\89\\48.5519\\-212.1711\\89\\46.59877\\-210.8212\\89\\45.55322\\-209.4271\\89\\44.39816\\-207.474\\89\\43.55057\\-205.5209\\89\\42.69252\\-204.7026\\89\\40.7394\\-204.4167\\89\\38.78627\\-204.5746\\89\\36.83315\\-206.1628\\89\\35.32976\\-205.5209\\89\\35.35369\\-203.5678\\89\\36.83315\\-202.2027\\89\\38.78627\\-201.4926\\89\\40.7394\\-201.2429\\89\\42.11646\\-199.6615\\89\\43.1179\\-197.7084\\89\\43.75267\\-195.7553\\89\\44.22028\\-193.8021\\89\\44.64565\\-193.2605\\89\\46.59877\\-191.5342\\89\\48.5519\\-190.7497\\89\\50.50502\\-189.5494\\89\\52.45815\\-189.2198\\89\\54.41127\\-189.0903\\89\\56.3644\\-189.3035\\89\\58.31752\\-189.6368\\89\\60.27065\\-189.8011\\89\\62.22377\\-191.0062\\89\\65.10487\\-193.8021\\89\\65.63318\\-195.7553\\89\\67.31416\\-199.6615\\89\\68.08315\\-200.5219\\89\\70.03628\\-201.8504\\89\\71.56403\\-203.5678\\89\\71.74327\\-205.5209\\89\\72.69408\\-207.474\\89\\71.9894\\-208.3474\\89\\70.03628\\-207.4993\\89\\68.49245\\-205.5209\\89\\68.08315\\-205.1641\\89\\66.13003\\-206.8935\\89\\65.64175\\-207.474\\89\\65.26732\\-209.4271\\89\\64.47382\\-211.3803\\89\\62.22377\\-213.6039\\89\\60.27065\\-214.3768\\89\\58.31752\\-214.8136\\89\\54.41127\\-214.1407\\89"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002256"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "617"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-215.3673\\91\\50.50502\\-214.6918\\91\\48.5519\\-214.2123\\91\\46.59877\\-212.7113\\91\\45.53683\\-211.3803\\91\\44.42185\\-209.4271\\91\\43.85975\\-207.474\\91\\42.69252\\-206.0062\\91\\40.7394\\-204.8444\\91\\38.78627\\-204.9716\\91\\36.83315\\-206.4057\\91\\35.00328\\-205.5209\\91\\35.69382\\-203.5678\\91\\36.83315\\-202.4338\\91\\38.78627\\-201.5339\\91\\40.7394\\-201.3328\\91\\42.17057\\-199.6615\\91\\43.31731\\-197.7084\\91\\43.78473\\-195.7553\\91\\44.14034\\-193.8021\\91\\45.86635\\-191.849\\91\\46.59877\\-191.2567\\91\\48.5519\\-190.5233\\91\\50.50502\\-189.2466\\91\\54.41127\\-188.277\\91\\56.3644\\-189.0869\\91\\58.31752\\-189.6602\\91\\62.22377\\-191.16\\91\\65.10487\\-193.8021\\91\\65.64175\\-195.7553\\91\\66.98203\\-197.7084\\91\\67.53693\\-199.6615\\91\\68.08315\\-200.2934\\91\\70.09786\\-201.6146\\91\\71.69643\\-203.5678\\91\\72.36642\\-205.5209\\91\\73.15639\\-207.474\\91\\71.9894\\-208.6469\\91\\70.42297\\-207.474\\91\\68.08315\\-205.1641\\91\\66.13003\\-206.8935\\91\\65.64175\\-207.474\\91\\65.5015\\-209.4271\\91\\65.01326\\-211.3803\\91\\62.22377\\-214.6144\\91\\60.27065\\-215.9008\\91\\58.31752\\-216.0726\\91\\54.41127\\-215.8626\\91"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002255"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "618"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-217.414\\93\\52.45815\\-216.4077\\93\\50.50502\\-215.7395\\93\\46.59877\\-214.1157\\93\\45.82499\\-213.3334\\93\\44.49704\\-211.3803\\93\\43.90727\\-209.4271\\93\\43.62156\\-207.474\\93\\42.69252\\-206.5109\\93\\40.7394\\-205.1539\\93\\38.78627\\-205.1539\\93\\36.83315\\-206.3771\\93\\35.56087\\-205.5209\\93\\35.96662\\-203.5678\\93\\36.83315\\-202.5963\\93\\38.78627\\-201.5061\\93\\40.7394\\-200.8024\\93\\41.83297\\-199.6615\\93\\42.57045\\-197.7084\\93\\43.47666\\-195.7553\\93\\43.88975\\-193.8021\\93\\45.60663\\-191.849\\93\\46.59877\\-190.921\\93\\48.5519\\-189.8583\\93\\50.50502\\-188.9538\\93\\52.45815\\-187.9505\\93\\54.41127\\-187.92\\93\\56.3644\\-189.0595\\93\\58.31752\\-189.6842\\93\\60.27065\\-190.8632\\93\\62.22377\\-191.4922\\93\\64.1769\\-192.9054\\93\\65.10487\\-193.8021\\93\\65.64175\\-195.7553\\93\\67.06772\\-197.7084\\93\\67.62119\\-199.6615\\93\\68.08315\\-200.201\\93\\70.11546\\-201.6146\\93\\71.9894\\-203.942\\93\\72.80556\\-205.5209\\93\\73.53389\\-207.474\\93\\71.9894\\-208.521\\93\\70.03628\\-206.5921\\93\\68.08315\\-205.2852\\93\\65.87093\\-207.474\\93\\65.71408\\-209.4271\\93\\65.27332\\-211.3803\\93\\64.35381\\-213.3334\\93\\62.94581\\-215.2865\\93\\62.22377\\-216.0202\\93\\60.27065\\-217.1704\\93\\58.31752\\-217.8016\\93\\56.3644\\-217.8093\\93"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002254"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "51"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "619"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-217.646\\95\\50.50502\\-216.4411\\95\\48.5519\\-215.7212\\95\\46.59877\\-214.5225\\95\\45.39724\\-213.3334\\95\\44.23925\\-211.3803\\95\\43.56881\\-207.474\\95\\42.69252\\-206.5258\\95\\40.7394\\-204.9512\\95\\38.78627\\-205.05\\95\\36.83315\\-205.842\\95\\36.48387\\-205.5209\\95\\36.56078\\-203.5678\\95\\38.78627\\-201.3441\\95\\40.7394\\-200.5211\\95\\41.611\\-199.6615\\95\\42.20424\\-197.7084\\95\\42.58402\\-195.7553\\95\\43.68743\\-193.8021\\95\\46.59877\\-190.813\\95\\48.5519\\-189.6602\\95\\50.50502\\-188.8485\\95\\52.45815\\-187.719\\95\\54.41127\\-188.5531\\95\\56.3644\\-189.1781\\95\\58.31752\\-189.6842\\95\\60.27065\\-190.9044\\95\\62.22377\\-191.556\\95\\64.1769\\-192.9054\\95\\65.10487\\-193.8021\\95\\65.753\\-195.7553\\95\\67.13462\\-197.7084\\95\\67.63017\\-199.6615\\95\\68.08315\\-200.1911\\95\\70.11546\\-201.6146\\95\\71.9894\\-203.9042\\95\\72.89687\\-205.5209\\95\\73.66005\\-207.474\\95\\71.9894\\-208.4601\\95\\70.03628\\-206.5207\\95\\68.08315\\-206.0747\\95\\67.04\\-207.474\\95\\66.4788\\-209.4271\\95\\65.5015\\-211.3803\\95\\65.00056\\-213.3334\\95\\63.3252\\-215.2865\\95\\62.22377\\-216.7663\\95\\60.27065\\-218.1887\\95\\58.31752\\-218.6638\\95\\56.3644\\-218.6638\\95\\54.41127\\-218.3071\\95"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002253"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "52"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "620"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-217.6266\\97\\48.5519\\-216.1359\\97\\47.19285\\-215.2865\\97\\44.57906\\-213.3334\\97\\44.22971\\-211.3803\\97\\44.13197\\-209.4271\\97\\43.79665\\-207.474\\97\\42.89627\\-205.5209\\97\\42.69252\\-205.3186\\97\\40.7394\\-204.5403\\97\\38.78627\\-204.6171\\97\\37.15867\\-203.5678\\97\\37.87724\\-201.6146\\97\\38.78627\\-200.7969\\97\\40.7394\\-199.5789\\97\\41.82982\\-197.7084\\97\\42.3357\\-195.7553\\97\\43.60746\\-193.8021\\97\\46.59877\\-190.803\\97\\48.5519\\-189.6484\\97\\50.50502\\-188.843\\97\\52.45815\\-187.707\\97\\54.41127\\-188.6125\\97\\56.3644\\-189.1635\\97\\58.31752\\-189.5919\\97\\60.27065\\-190.5891\\97\\62.22377\\-191.2276\\97\\64.1769\\-192.849\\97\\65.18834\\-193.8021\\97\\66.71706\\-195.7553\\97\\67.32939\\-197.7084\\97\\67.71616\\-199.6615\\97\\68.08315\\-200.0731\\97\\70.24143\\-201.6146\\97\\71.9894\\-203.7729\\97\\72.9614\\-205.5209\\97\\73.67171\\-207.474\\97\\71.9894\\-208.4554\\97\\70.03628\\-206.516\\97\\68.08315\\-206.6835\\97\\67.45836\\-207.474\\97\\66.97606\\-209.4271\\97\\65.70465\\-211.3803\\97\\65.29616\\-213.3334\\97\\64.47382\\-215.2865\\97\\62.92503\\-217.2396\\97\\62.22377\\-217.9157\\97\\60.27065\\-218.7838\\97\\58.31752\\-218.969\\97\\56.3644\\-218.969\\97\\54.41127\\-218.844\\97\\52.45815\\-218.3454\\97"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002252"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "621"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-218.089\\99\\48.5519\\-216.2222\\99\\46.59877\\-214.5592\\99\\45.33344\\-213.3334\\99\\44.22971\\-211.3803\\99\\44.14034\\-207.474\\99\\43.78503\\-205.5209\\99\\42.69252\\-204.3651\\99\\40.7394\\-203.5012\\99\\38.78627\\-202.7359\\99\\38.02944\\-201.6146\\99\\39.70121\\-199.6615\\99\\41.611\\-197.7084\\99\\42.32553\\-195.7553\\99\\43.63622\\-193.8021\\99\\46.59877\\-190.8578\\99\\48.5519\\-189.7215\\99\\50.50502\\-188.843\\99\\52.45815\\-187.6953\\99\\54.41127\\-187.8762\\99\\56.3644\\-188.7211\\99\\60.27065\\-189.7605\\99\\63.46841\\-191.849\\99\\66.13003\\-193.9123\\99\\67.31992\\-195.7553\\99\\67.65778\\-197.7084\\99\\68.67686\\-199.6615\\99\\70.81422\\-201.6146\\99\\72.51953\\-203.5678\\99\\73.24\\-205.5209\\99\\73.68155\\-207.474\\99\\71.9894\\-208.4457\\99\\70.03628\\-206.4928\\99\\68.08315\\-206.8736\\99\\67.60354\\-207.474\\99\\67.30097\\-209.4271\\99\\66.56738\\-211.3803\\99\\65.53029\\-213.3334\\99\\64.93645\\-215.2865\\99\\62.22377\\-218.0049\\99\\60.27065\\-218.957\\99\\54.41127\\-218.9811\\99\\52.45815\\-218.8779\\99"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002251"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "622"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-218.1645\\101\\45.60785\\-213.3334\\101\\44.22971\\-211.3803\\101\\44.22971\\-207.474\\101\\44.1748\\-205.5209\\101\\43.79665\\-203.5678\\101\\42.69252\\-202.4735\\101\\40.7394\\-202.4793\\101\\39.59818\\-201.6146\\101\\39.49428\\-199.6615\\101\\40.42503\\-197.7084\\101\\42.69252\\-195.4962\\101\\43.87835\\-193.8021\\101\\44.64565\\-192.8969\\101\\46.59877\\-191.2276\\101\\48.5519\\-190.4872\\101\\50.50502\\-188.874\\101\\52.45815\\-187.7311\\101\\54.41127\\-187.6953\\101\\56.3644\\-187.848\\101\\58.31752\\-188.6861\\101\\60.27065\\-189.1941\\101\\62.22377\\-190.5102\\101\\64.1769\\-191.2101\\101\\67.02867\\-193.8021\\101\\68.61633\\-195.7553\\101\\69.10834\\-197.7084\\101\\69.3185\\-199.6615\\101\\70.96425\\-201.6146\\101\\72.84786\\-203.5678\\101\\73.6607\\-205.5209\\101\\73.56878\\-207.474\\101\\71.9894\\-208.2355\\101\\70.03628\\-206.2899\\101\\68.08315\\-206.8837\\101\\67.6123\\-207.474\\101\\67.52122\\-209.4271\\101\\66.9123\\-211.3803\\101\\65.63318\\-213.3334\\101\\64.96745\\-215.2865\\101\\62.22377\\-218.0049\\101\\60.27065\\-218.957\\101\\52.45815\\-218.9811\\101"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002250"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "623"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-218.1591\\103\\45.65674\\-213.3334\\103\\44.24892\\-211.3803\\103\\44.22971\\-205.5209\\103\\44.18368\\-203.5678\\103\\43.80669\\-201.6146\\103\\42.69252\\-200.5005\\103\\40.7394\\-200.7848\\103\\38.88469\\-199.6615\\103\\39.70676\\-197.7084\\103\\40.7394\\-196.6758\\103\\42.69252\\-194.9843\\103\\44.64565\\-193.4873\\103\\46.59877\\-192.3801\\103\\47.19628\\-191.849\\103\\50.50502\\-189.2603\\103\\52.45815\\-188.5851\\103\\54.41127\\-187.6953\\103\\56.3644\\-187.6837\\103\\58.31752\\-187.7812\\103\\60.27065\\-188.6324\\103\\62.22377\\-189.2063\\103\\66.13003\\-191.767\\103\\68.13573\\-193.8021\\103\\69.33453\\-195.7553\\103\\69.57431\\-197.7084\\103\\69.65925\\-199.6615\\103\\70.98843\\-201.6146\\103\\72.91042\\-203.5678\\103\\73.7149\\-205.5209\\103\\73.22173\\-207.474\\103\\71.9894\\-207.8752\\103\\70.30196\\-205.5209\\103\\70.03628\\-205.2734\\103\\68.08315\\-206.8837\\103\\67.6123\\-207.474\\103\\67.60354\\-209.4271\\103\\66.94725\\-211.3803\\103\\65.62471\\-213.3334\\103\\64.96127\\-215.2865\\103\\62.22377\\-217.9992\\103\\60.27065\\-218.9453\\103\\58.31752\\-218.9811\\103\\52.45815\\-218.969\\103"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002249"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "624"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-217.5965\\105\\48.5519\\-216.19\\105\\47.65326\\-215.2865\\105\\45.98449\\-213.3334\\105\\45.39418\\-211.3803\\105\\44.28883\\-209.4271\\105\\44.28883\\-203.5678\\105\\44.23925\\-201.6146\\105\\43.82612\\-199.6615\\105\\42.69252\\-198.5222\\105\\41.63937\\-197.7084\\105\\41.37129\\-195.7553\\105\\42.69252\\-194.2207\\105\\44.64565\\-193.6124\\105\\46.59877\\-193.1459\\105\\48.5519\\-191.96\\105\\50.50502\\-189.579\\105\\52.45815\\-188.3492\\105\\54.41127\\-187.6279\\105\\56.3644\\-187.1476\\105\\58.31752\\-186.9783\\105\\60.27065\\-186.9949\\105\\62.22377\\-187.7658\\105\\64.1769\\-188.8767\\105\\66.13003\\-189.8267\\105\\68.13614\\-191.849\\105\\69.32651\\-193.8021\\105\\69.62988\\-195.7553\\105\\70.59989\\-197.7084\\105\\71.08829\\-199.6615\\105\\71.9894\\-201.4159\\105\\73.314\\-203.5678\\105\\73.70034\\-205.5209\\105\\72.99166\\-207.474\\105\\71.9894\\-207.7836\\105\\70.43964\\-205.5209\\105\\70.03628\\-205.1641\\105\\68.08315\\-206.8837\\105\\67.6123\\-207.474\\105\\67.60354\\-209.4271\\105\\66.94725\\-211.3803\\105\\65.27608\\-213.3334\\105\\64.46063\\-215.2865\\105\\62.22377\\-217.5544\\105\\60.27065\\-218.3046\\105\\58.31752\\-218.957\\105\\54.41127\\-218.9453\\105\\52.45815\\-218.3987\\105"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002248"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "625"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-217.6743\\107\\50.50502\\-216.4807\\107\\48.5519\\-214.8474\\107\\47.29865\\-213.3334\\107\\45.90334\\-211.3803\\107\\45.72923\\-209.4271\\107\\45.72923\\-201.6146\\107\\45.69557\\-199.6615\\107\\44.64565\\-197.5903\\107\\42.69252\\-196.9181\\107\\40.76444\\-195.7553\\107\\41.44713\\-193.8021\\107\\42.69252\\-192.623\\107\\44.64565\\-192.6192\\107\\46.59877\\-193.0671\\107\\48.5519\\-192.6116\\107\\49.32316\\-191.849\\107\\50.18387\\-189.8959\\107\\51.52327\\-187.9428\\107\\52.45815\\-187.18\\107\\56.3644\\-186.529\\107\\58.31752\\-185.9669\\107\\60.27065\\-185.9669\\107\\62.22377\\-186.6459\\107\\64.1769\\-186.9399\\107\\66.13003\\-187.7764\\107\\68.23619\\-189.8959\\107\\69.33212\\-191.849\\107\\69.64934\\-193.8021\\107\\70.62898\\-195.7553\\107\\71.31252\\-197.7084\\107\\71.62241\\-199.6615\\107\\72.8451\\-201.6146\\107\\73.67199\\-203.5678\\107\\73.70034\\-205.5209\\107\\71.9894\\-206.7643\\107\\70.03628\\-205.2279\\107\\68.08315\\-206.9447\\107\\67.65778\\-207.474\\107\\67.57784\\-209.4271\\107\\66.88659\\-211.3803\\107\\64.1769\\-214.1886\\107\\62.22377\\-216.3311\\107\\60.27065\\-217.9942\\107\\58.31752\\-218.8585\\107\\56.3644\\-218.8918\\107\\54.41127\\-218.379\\107"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002247"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "626"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-217.5652\\109\\52.45815\\-216.4486\\109\\50.50502\\-215.5456\\109\\48.5519\\-213.9682\\109\\48.03523\\-213.3334\\109\\47.32696\\-211.3803\\109\\46.15488\\-209.4271\\109\\46.06864\\-207.474\\109\\46.06055\\-199.6615\\109\\45.85678\\-197.7084\\109\\44.64565\\-195.5999\\109\\42.69252\\-195.1856\\109\\40.79936\\-193.8021\\109\\41.45866\\-191.849\\109\\42.69252\\-190.6782\\109\\44.64565\\-191.1808\\109\\46.59877\\-192.265\\109\\47.36449\\-191.849\\109\\48.5519\\-190.916\\109\\49.20109\\-189.8959\\109\\49.88992\\-187.9428\\109\\50.50502\\-187.3196\\109\\52.45815\\-186.4417\\109\\54.41127\\-185.1732\\109\\56.3644\\-184.919\\109\\62.22377\\-184.919\\109\\64.1769\\-185.2828\\109\\66.13003\\-186.5833\\109\\68.08315\\-187.7368\\109\\69.3424\\-189.8959\\109\\69.66929\\-191.849\\109\\70.65157\\-193.8021\\109\\71.32261\\-195.7553\\109\\71.65331\\-197.7084\\109\\71.73031\\-199.6615\\109\\72.89927\\-201.6146\\109\\73.73082\\-203.5678\\109\\73.69025\\-205.5209\\109\\71.9894\\-206.5165\\109\\70.03628\\-206.0957\\109\\68.57439\\-207.474\\109\\67.23376\\-209.4271\\109\\66.13003\\-210.7099\\109\\62.22377\\-214.6553\\109\\60.27065\\-216.5198\\109\\58.31752\\-217.7937\\109\\56.3644\\-217.832\\109"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002246"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "627"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-215.8667\\111\\52.45815\\-214.791\\111\\50.74916\\-213.3334\\111\\48.5519\\-210.9471\\111\\47.41623\\-209.4271\\111\\46.30581\\-207.474\\111\\46.1734\\-205.5209\\111\\46.1734\\-201.6146\\111\\45.99319\\-197.7084\\111\\45.4863\\-195.7553\\111\\44.64565\\-194.7845\\111\\42.69252\\-193.1958\\111\\40.91619\\-191.849\\111\\41.36763\\-189.8959\\111\\42.69252\\-188.6935\\111\\44.64565\\-189.491\\111\\46.59877\\-189.3398\\111\\47.27385\\-187.9428\\111\\48.5519\\-185.6589\\111\\49.74935\\-184.0365\\111\\50.50502\\-183.4748\\111\\54.41127\\-182.8848\\111\\56.3644\\-182.8483\\111\\62.22377\\-182.8862\\111\\64.1769\\-183.7564\\111\\64.54188\\-184.0365\\111\\68.08315\\-185.7787\\111\\69.34603\\-187.9428\\111\\69.68975\\-189.8959\\111\\70.67048\\-191.849\\111\\71.32617\\-193.8021\\111\\71.65331\\-195.7553\\111\\71.84079\\-199.6615\\111\\72.95634\\-201.6146\\111\\73.72629\\-203.5678\\111\\73.51614\\-205.5209\\111\\71.9894\\-206.1942\\111\\70.03628\\-205.6526\\111\\68.87722\\-207.474\\111\\67.0244\\-209.4271\\111\\64.1769\\-212.2702\\111\\62.22377\\-214.1504\\111\\60.27065\\-215.3387\\111\\58.31752\\-215.8725\\111"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002245"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "48"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "628"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-213.9825\\113\\52.45815\\-212.8317\\113\\50.50502\\-211.0124\\113\\48.5519\\-209.0323\\113\\47.38932\\-207.474\\113\\46.35129\\-205.5209\\113\\46.08509\\-201.6146\\113\\45.0474\\-195.7553\\113\\43.09776\\-191.849\\113\\42.69252\\-191.4597\\113\\40.7394\\-190.5951\\113\\39.95164\\-189.8959\\113\\40.51404\\-187.9428\\113\\40.7394\\-187.694\\113\\42.69252\\-186.6657\\113\\44.64565\\-185.9588\\113\\46.58839\\-184.0365\\113\\47.77298\\-180.1303\\113\\48.5519\\-176.5495\\113\\48.87742\\-176.224\\113\\50.50502\\-175.8541\\113\\56.3644\\-175.8752\\113\\58.07338\\-178.1771\\113\\58.31752\\-178.2768\\113\\60.39105\\-180.1303\\113\\62.22377\\-180.8164\\113\\64.1769\\-181.7493\\113\\64.60483\\-182.0834\\113\\66.13003\\-182.7831\\113\\68.08315\\-183.9341\\113\\69.35626\\-185.9896\\113\\69.72146\\-187.9428\\113\\70.70034\\-189.8959\\113\\71.32617\\-191.849\\113\\71.64288\\-193.8021\\113\\71.71886\\-197.7084\\113\\73.37286\\-201.6146\\113\\73.71953\\-203.5678\\113\\73.72201\\-205.5209\\113\\71.9894\\-205.9217\\113\\70.03628\\-205.1035\\113\\69.70019\\-205.5209\\113\\68.92368\\-207.474\\113\\66.13003\\-210.2705\\113\\64.1769\\-212.1279\\113\\62.20827\\-213.3334\\113\\60.27065\\-213.9968\\113\\58.31752\\-214.0521\\113"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002244"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "56"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "629"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-211.6679\\115\\50.50502\\-210.2983\\115\\49.65795\\-209.4271\\115\\48.03822\\-207.474\\115\\47.32494\\-205.5209\\115\\46.09346\\-203.5678\\115\\45.71749\\-201.6146\\115\\44.44621\\-197.7084\\115\\44.21096\\-195.7553\\115\\43.74314\\-193.8021\\115\\43.10403\\-191.849\\115\\42.69252\\-191.3256\\115\\40.7394\\-188.323\\115\\38.78627\\-188.7283\\115\\38.39775\\-187.9428\\115\\38.86405\\-185.9896\\115\\40.7394\\-184.6975\\115\\42.69252\\-184.1771\\115\\44.75833\\-182.0834\\115\\45.20456\\-180.1303\\115\\45.27344\\-176.224\\115\\45.66333\\-174.2709\\115\\46.59877\\-172.7387\\115\\48.5519\\-170.5274\\115\\50.50502\\-170.4534\\115\\54.41127\\-170.4623\\115\\56.3644\\-170.9245\\115\\57.77645\\-172.3178\\115\\58.31752\\-172.6659\\115\\59.90865\\-174.2709\\115\\60.9669\\-176.224\\115\\62.22377\\-178.1848\\115\\64.1769\\-178.9726\\115\\66.13003\\-180.3046\\115\\69.0216\\-184.0365\\115\\69.74331\\-185.9896\\115\\70.71876\\-187.9428\\115\\71.33662\\-189.8959\\115\\71.64288\\-191.849\\115\\71.71886\\-197.7084\\115\\72.85578\\-199.6615\\115\\73.6607\\-201.6146\\115\\73.93365\\-203.5678\\115\\74.68025\\-205.5209\\115\\73.94253\\-206.391\\115\\71.9894\\-205.8642\\115\\70.03628\\-204.9014\\115\\69.548\\-205.5209\\115\\68.81814\\-207.474\\115\\66.13003\\-210.1763\\115\\64.13126\\-211.3803\\115\\62.22377\\-212.4111\\115\\60.27065\\-212.9539\\115\\58.31752\\-213.0743\\115\\56.3644\\-212.9743\\115\\54.41127\\-212.5213\\115"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002243"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "62"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "630"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-211.6312\\117\\52.45815\\-210.5455\\117\\50.50502\\-208.9328\\117\\48.5519\\-206.7748\\117\\47.59301\\-205.5209\\117\\45.84288\\-203.5678\\117\\45.25123\\-201.6146\\117\\44.34169\\-199.6615\\117\\44.11552\\-197.7084\\117\\43.73388\\-195.7553\\117\\43.22879\\-193.8021\\117\\42.274\\-191.849\\117\\42.01565\\-189.8959\\117\\41.40594\\-187.9428\\117\\40.7394\\-187.2866\\117\\38.98972\\-187.9428\\117\\37.69968\\-189.8959\\117\\36.83315\\-190.3231\\117\\36.42571\\-189.8959\\117\\36.19626\\-187.9428\\117\\37.53249\\-185.9896\\117\\37.53249\\-184.0365\\117\\38.78627\\-182.7908\\117\\40.7394\\-182.2731\\117\\42.88359\\-180.1303\\117\\43.27962\\-178.1771\\117\\43.32119\\-172.3178\\117\\44.64565\\-170.3451\\117\\45.38934\\-168.4115\\117\\46.59877\\-167.2964\\117\\48.5519\\-167.1627\\117\\52.45815\\-167.1702\\117\\54.41127\\-167.2649\\117\\56.3644\\-167.4742\\117\\57.72345\\-168.4115\\117\\60.27065\\-170.883\\117\\61.43642\\-172.3178\\117\\62.22377\\-173.8541\\117\\64.00251\\-176.224\\117\\66.13003\\-178.2579\\117\\67.50584\\-180.1303\\117\\68.75489\\-182.0834\\117\\69.51961\\-184.0365\\117\\70.72986\\-185.9896\\117\\71.34706\\-187.9428\\117\\71.64288\\-189.8959\\117\\71.69643\\-191.849\\117\\71.73031\\-197.7084\\117\\72.90119\\-199.6615\\117\\73.94253\\-201.9402\\117\\74.59184\\-203.5678\\117\\75.17208\\-205.5209\\117\\73.94253\\-206.7316\\117\\71.87865\\-205.5209\\117\\70.03628\\-204.5335\\117\\69.1893\\-205.5209\\117\\68.08315\\-207.3881\\117\\66.08967\\-209.4271\\117\\62.22377\\-211.5673\\117\\60.27065\\-212.3817\\117\\58.31752\\-212.7251\\117\\56.3644\\-212.4525\\117"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002242"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "59"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "631"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-211.5546\\119\\54.41127\\-210.5174\\119\\52.45815\\-209.6645\\119\\50.50502\\-208.3898\\119\\48.5519\\-206.5021\\119\\45.93592\\-203.5678\\119\\45.46977\\-201.6146\\119\\44.25871\\-199.6615\\119\\43.799\\-197.7084\\119\\43.22055\\-195.7553\\119\\42.274\\-193.8021\\119\\41.75703\\-191.849\\119\\41.51408\\-189.8959\\119\\40.97512\\-187.9428\\119\\38.78627\\-185.7156\\119\\36.83315\\-185.356\\119\\35.88342\\-184.0365\\119\\36.3756\\-182.0834\\119\\36.83315\\-181.6383\\119\\38.78627\\-180.7998\\119\\39.97786\\-180.1303\\119\\40.7394\\-179.2079\\119\\41.27878\\-178.1771\\119\\41.29503\\-172.3178\\119\\41.4354\\-170.3646\\119\\42.83099\\-168.4115\\119\\43.99704\\-166.4584\\119\\44.64565\\-165.8098\\119\\46.59877\\-165.2118\\119\\52.45815\\-165.2233\\119\\54.41127\\-165.6271\\119\\58.31752\\-167.0365\\119\\60.27065\\-168.31\\119\\62.22377\\-170.3723\\119\\63.42678\\-172.3178\\119\\64.1769\\-174.0241\\119\\65.55272\\-176.224\\119\\68.08315\\-179.473\\119\\68.66909\\-180.1303\\119\\69.38694\\-182.0834\\119\\70.62331\\-184.0365\\119\\71.36123\\-185.9896\\119\\71.64288\\-187.9428\\119\\71.69643\\-189.8959\\119\\71.69643\\-193.8021\\119\\71.89466\\-195.7553\\119\\72.19315\\-197.7084\\119\\73.07387\\-199.6615\\119\\74.18154\\-201.6146\\119\\74.88622\\-203.5678\\119\\74.65784\\-205.5209\\119\\73.94253\\-206.1414\\119\\71.9894\\-204.5764\\119\\70.03628\\-204.3145\\119\\67.21873\\-207.474\\119\\66.13003\\-208.5575\\119\\64.1769\\-210.2094\\119\\60.62423\\-211.3803\\119\\58.31752\\-212.0563\\119"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002241"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "632"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-209.6155\\121\\52.45815\\-208.5507\\121\\50.50502\\-207.6857\\121\\48.5519\\-206.2927\\121\\47.80809\\-205.5209\\121\\46.38707\\-203.5678\\121\\45.69422\\-201.6146\\121\\44.56488\\-199.6615\\121\\43.70978\\-197.7084\\121\\42.44504\\-195.7553\\121\\41.85997\\-193.8021\\121\\41.4694\\-191.849\\121\\40.46703\\-189.8959\\121\\39.27456\\-185.9896\\121\\38.78627\\-185.2615\\121\\37.5051\\-184.0365\\121\\36.83315\\-183.567\\121\\35.11874\\-182.0834\\121\\36.83315\\-180.5089\\121\\38.78627\\-178.8793\\121\\39.28312\\-178.1771\\121\\39.54217\\-174.2709\\121\\39.5479\\-172.3178\\121\\39.8055\\-170.3646\\121\\41.04539\\-168.4115\\121\\42.05147\\-166.4584\\121\\42.69252\\-165.7427\\121\\44.64565\\-163.8993\\121\\46.59877\\-163.4794\\121\\52.45815\\-163.4837\\121\\54.41127\\-164.1133\\121\\56.3644\\-165.2917\\121\\58.31752\\-165.69\\121\\59.51885\\-166.4584\\121\\62.22377\\-168.4342\\121\\64.1769\\-171.4135\\121\\64.85506\\-172.3178\\121\\65.51573\\-174.2709\\121\\66.85279\\-176.224\\121\\67.4203\\-178.1771\\121\\68.95491\\-180.1303\\121\\69.6109\\-182.0834\\121\\70.89658\\-184.0365\\121\\71.65331\\-185.9896\\121\\71.69643\\-191.849\\121\\71.90863\\-193.8021\\121\\72.75234\\-195.7553\\121\\73.28606\\-197.7084\\121\\74.33178\\-199.6615\\121\\74.98818\\-201.6146\\121\\75.02121\\-203.5678\\121\\73.94253\\-204.4599\\121\\72.66315\\-203.5678\\121\\71.9894\\-202.9287\\121\\70.03628\\-203.4111\\121\\68.80407\\-205.5209\\121\\66.13003\\-208.2482\\121\\62.22377\\-210.4037\\121\\60.27065\\-210.7603\\121\\58.31752\\-210.8182\\121\\56.3644\\-210.4902\\121"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002240"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "65"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "633"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-209.5365\\123\\54.41127\\-208.5407\\123\\52.45815\\-207.6994\\123\\50.50502\\-206.4865\\123\\49.26149\\-205.5209\\123\\47.51062\\-203.5678\\123\\46.12793\\-201.6146\\123\\45.49636\\-199.6615\\123\\43.91191\\-197.7084\\123\\42.68489\\-195.7553\\123\\41.97475\\-193.8021\\123\\41.5532\\-191.849\\123\\39.86466\\-189.8959\\123\\38.77864\\-185.9896\\123\\38.38453\\-184.0365\\123\\36.83315\\-182.8109\\123\\34.88002\\-183.189\\123\\33.58014\\-182.0834\\123\\34.25682\\-180.1303\\123\\34.88002\\-179.292\\123\\36.83315\\-178.0564\\123\\37.78687\\-176.224\\123\\38.45165\\-174.2709\\123\\38.58398\\-172.3178\\123\\39.30823\\-170.3646\\123\\39.85453\\-168.4115\\123\\41.22187\\-166.4584\\123\\42.24973\\-164.5053\\123\\42.69252\\-164.0706\\123\\44.64565\\-163.2083\\123\\46.59877\\-162.9681\\123\\52.45815\\-162.9681\\123\\54.41127\\-163.287\\123\\56.3644\\-163.713\\123\\58.31752\\-165.0721\\123\\60.27065\\-165.6761\\123\\63.22659\\-168.4115\\123\\64.79939\\-170.3646\\123\\65.37048\\-172.3178\\123\\66.73402\\-174.2709\\123\\67.39059\\-176.224\\123\\67.5863\\-178.1771\\123\\68.97912\\-180.1303\\123\\69.63955\\-182.0834\\123\\70.79638\\-184.0365\\123\\71.54006\\-185.9896\\123\\71.90863\\-187.9428\\123\\72.1676\\-189.8959\\123\\72.18186\\-191.849\\123\\72.77436\\-193.8021\\123\\74.31488\\-195.7553\\123\\74.96537\\-197.7084\\123\\75.25346\\-199.6615\\123\\75.2668\\-201.6146\\123\\73.94253\\-202.78\\123\\72.59787\\-201.6146\\123\\71.9894\\-200.8955\\123\\70.03628\\-201.5083\\123\\69.06983\\-203.5678\\123\\68.08315\\-205.2989\\123\\66.01247\\-207.474\\123\\64.1769\\-208.4506\\123\\62.05222\\-209.4271\\123\\60.27065\\-210.1067\\123\\58.31752\\-210.1261\\123"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002239"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "72"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "634"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-206.5714\\125\\51.08061\\-205.5209\\125\\49.15432\\-203.5678\\125\\47.51313\\-201.6146\\125\\46.13681\\-199.6615\\125\\45.26598\\-197.7084\\125\\43.69781\\-195.7553\\125\\42.59778\\-193.8021\\125\\41.6426\\-191.849\\125\\39.70351\\-189.8959\\125\\38.76357\\-187.9428\\125\\38.42715\\-185.9896\\125\\37.85878\\-184.0365\\125\\36.83315\\-182.2921\\125\\34.88002\\-182.2864\\125\\33.8583\\-184.0365\\125\\32.9269\\-185.402\\125\\30.97377\\-185.5733\\125\\29.89048\\-184.0365\\125\\30.97377\\-182.8565\\125\\31.98848\\-182.0834\\125\\33.06796\\-180.1303\\125\\33.55513\\-178.1771\\125\\34.88002\\-176.7904\\125\\35.74697\\-176.224\\125\\36.83315\\-175.1804\\125\\37.3821\\-174.2709\\125\\37.82954\\-172.3178\\125\\38.51014\\-170.3646\\125\\39.75367\\-168.4115\\125\\40.65863\\-166.4584\\125\\41.76759\\-164.5053\\125\\42.69252\\-163.608\\125\\44.64565\\-162.8987\\125\\46.59877\\-162.4292\\125\\48.5519\\-162.3268\\125\\50.50502\\-162.5146\\125\\52.45815\\-162.8227\\125\\54.41127\\-162.8987\\125\\56.3644\\-163.2683\\125\\58.31752\\-163.7849\\125\\60.27065\\-165.2086\\125\\62.22377\\-166.1654\\125\\64.41931\\-168.4115\\125\\65.35731\\-170.3646\\125\\65.7835\\-172.3178\\125\\67.08142\\-174.2709\\125\\67.5612\\-176.224\\125\\67.62119\\-178.1771\\125\\68.97912\\-180.1303\\125\\69.63955\\-182.0834\\125\\70.13101\\-184.0365\\125\\71.2362\\-185.9896\\125\\72.70218\\-187.9428\\125\\73.1853\\-189.8959\\125\\73.35191\\-191.849\\125\\74.37579\\-193.8021\\125\\75.28259\\-195.7553\\125\\75.57753\\-197.7084\\125\\75.1795\\-199.6615\\125\\73.94253\\-200.8641\\125\\73.1457\\-199.6615\\125\\71.9894\\-198.3152\\125\\70.03628\\-199.515\\125\\69.03374\\-201.6146\\125\\67.93346\\-203.5678\\125\\66.95329\\-205.5209\\125\\66.13003\\-206.3254\\125\\62.22377\\-208.2654\\125\\60.27065\\-208.8196\\125\\58.31752\\-208.831\\125\\56.3644\\-208.3888\\125"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002238"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "69"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "635"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "58.31752\\-207.8685\\127\\56.3644\\-206.5053\\127\\52.45815\\-205.491\\127\\50.36959\\-203.5678\\127\\49.275\\-201.6146\\127\\47.53753\\-199.6615\\127\\46.31695\\-197.7084\\127\\45.3951\\-195.7553\\127\\44.64565\\-195.0058\\127\\43.71027\\-193.8021\\127\\41.9167\\-191.849\\127\\39.78827\\-189.8959\\127\\38.6642\\-187.9428\\127\\37.48928\\-184.0365\\127\\36.83315\\-182.1278\\127\\35.79086\\-180.1303\\127\\34.88002\\-179.396\\127\\34.10989\\-180.1303\\127\\33.24534\\-182.0834\\127\\32.13842\\-184.0365\\127\\30.97377\\-184.935\\127\\29.16657\\-184.0365\\127\\30.01979\\-182.0834\\127\\30.97377\\-180.7081\\127\\31.6041\\-180.1303\\127\\32.05078\\-178.1771\\127\\33.22679\\-176.224\\127\\35.81618\\-174.2709\\127\\37.30399\\-172.3178\\127\\37.93301\\-170.3646\\127\\39.74902\\-168.4115\\127\\40.91378\\-166.4584\\127\\41.94633\\-164.5053\\127\\42.69252\\-163.7777\\127\\44.64565\\-163.0258\\127\\46.59877\\-161.7383\\127\\48.5519\\-161.5114\\127\\50.50502\\-161.7639\\127\\52.45815\\-162.5\\127\\54.41127\\-162.8227\\127\\56.3644\\-162.9292\\127\\58.31752\\-163.6803\\127\\60.27065\\-164.741\\127\\62.22377\\-165.6423\\127\\65.00475\\-168.4115\\127\\65.5759\\-170.3646\\127\\66.68045\\-172.3178\\127\\67.40984\\-174.2709\\127\\67.60354\\-176.224\\127\\67.62119\\-178.1771\\127\\68.97912\\-180.1303\\127\\69.87469\\-182.0834\\127\\70.33755\\-184.0365\\127\\71.9894\\-186.0729\\127\\73.35992\\-187.9428\\127\\74.14196\\-189.8959\\127\\74.51597\\-191.849\\127\\74.86108\\-195.7553\\127\\74.19508\\-197.7084\\127\\73.81943\\-197.7084\\127\\71.9894\\-195.764\\127\\70.03628\\-197.0031\\127\\68.87997\\-199.6615\\127\\67.7148\\-201.6146\\127\\66.82488\\-203.5678\\127\\66.13003\\-204.359\\127\\64.1769\\-205.9971\\127\\62.22377\\-206.3089\\127\\60.27065\\-207.8369\\127"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002237"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "65"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "636"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "54.41127\\-203.9845\\129\\53.28318\\-203.5678\\129\\52.45815\\-202.9912\\129\\51.38025\\-201.6146\\129\\49.46397\\-199.6615\\129\\48.1426\\-197.7084\\129\\47.48111\\-195.7553\\129\\45.56942\\-193.8021\\129\\44.64565\\-193.1093\\129\\42.69252\\-191.3317\\129\\40.61312\\-189.8959\\129\\38.98571\\-187.9428\\129\\38.23064\\-185.9896\\129\\37.5927\\-184.0365\\129\\36.82552\\-182.0834\\129\\36.76656\\-180.1303\\129\\35.86616\\-178.1771\\129\\34.88002\\-177.524\\129\\34.18633\\-178.1771\\129\\33.04897\\-180.1303\\129\\31.74546\\-182.0834\\129\\30.97377\\-183.0514\\129\\30.05418\\-182.0834\\129\\30.26789\\-180.1303\\129\\30.97377\\-178.3009\\129\\32.16615\\-176.224\\129\\32.9269\\-175.3945\\129\\34.88002\\-174.5831\\129\\36.87071\\-172.3178\\129\\37.7999\\-170.3646\\129\\39.75819\\-168.4115\\129\\41.52742\\-166.4584\\129\\43.19317\\-164.5053\\129\\44.64565\\-163.4227\\129\\46.59877\\-161.7144\\129\\48.5519\\-161.2449\\129\\50.50502\\-161.3564\\129\\52.45815\\-161.7559\\129\\54.41127\\-162.4714\\129\\56.3644\\-162.8777\\129\\58.31752\\-163.6714\\129\\62.22377\\-165.627\\129\\65.02587\\-168.4115\\129\\65.62471\\-170.3646\\129\\66.83776\\-172.3178\\129\\67.46218\\-174.2709\\129\\67.60354\\-176.224\\129\\67.89615\\-178.1771\\129\\69.35509\\-180.1303\\129\\70.03628\\-181.2121\\129\\71.9894\\-183.1052\\129\\72.71828\\-184.0365\\129\\73.07937\\-185.9896\\129\\72.99166\\-187.9428\\129\\71.9894\\-189.8471\\129\\70.03628\\-191.6342\\129\\68.57546\\-193.8021\\129\\68.35688\\-195.7553\\129\\68.26001\\-197.7084\\129\\66.13003\\-200.859\\129\\64.1769\\-202.7615\\129\\63.18639\\-203.5678\\129\\62.22377\\-204.056\\129\\60.27065\\-204.2467\\129\\58.31752\\-204.2587\\129"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002236"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "61"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "637"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-201.9023\\131\\55.36459\\-201.6146\\131\\54.41127\\-200.9243\\131\\52.45815\\-199.3047\\131\\51.05124\\-197.7084\\131\\50.50502\\-196.8821\\131\\50.07419\\-195.7553\\131\\48.59768\\-193.8021\\131\\46.59877\\-192.2663\\131\\44.64565\\-191.685\\131\\42.69252\\-190.7992\\131\\40.7394\\-189.1562\\131\\39.52595\\-187.9428\\131\\38.61189\\-185.9896\\131\\37.83748\\-184.0365\\131\\37.29671\\-182.0834\\131\\36.78097\\-178.1771\\131\\34.88002\\-176.7859\\131\\33.0354\\-178.1771\\131\\30.97377\\-180.5392\\131\\30.59993\\-180.1303\\131\\30.2061\\-178.1771\\131\\32.9269\\-175.3152\\131\\34.88002\\-174.119\\131\\36.83315\\-171.9384\\131\\37.79008\\-170.3646\\131\\39.76284\\-168.4115\\131\\44.64565\\-163.7791\\131\\46.59877\\-162.4024\\131\\48.5519\\-161.5756\\131\\50.50502\\-161.2238\\131\\52.45815\\-161.4468\\131\\54.41127\\-161.964\\131\\56.3644\\-162.8777\\131\\58.31752\\-163.6714\\131\\62.22377\\-165.627\\131\\65.02587\\-168.4115\\131\\66.19816\\-172.3178\\131\\67.20473\\-174.2709\\131\\67.89615\\-176.224\\131\\69.37593\\-178.1771\\131\\70.03628\\-178.8313\\131\\71.77925\\-180.1303\\131\\72.79903\\-182.0834\\131\\72.57534\\-184.0365\\131\\71.9894\\-185.0962\\131\\70.2021\\-182.0834\\131\\69.89895\\-182.0834\\131\\68.91209\\-184.0365\\131\\68.9127\\-185.9896\\131\\68.4232\\-187.9428\\131\\66.5257\\-191.849\\131\\66.29409\\-193.8021\\131\\66.265\\-195.7553\\131\\66.13003\\-196.3701\\131\\65.4609\\-197.7084\\131\\64.1769\\-199.0418\\131\\63.35058\\-199.6615\\131\\60.27065\\-200.9444\\131\\59.37119\\-201.6146\\131\\58.31752\\-201.8908\\131"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002235"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "55"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "638"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "56.3644\\-196.4419\\133\\54.41127\\-195.5705\\133\\52.68944\\-193.8021\\133\\50.65151\\-191.849\\133\\48.5519\\-190.7073\\133\\44.64565\\-190.3184\\133\\42.69252\\-189.7475\\133\\40.7394\\-188.7143\\133\\39.96786\\-187.9428\\133\\39.04536\\-185.9896\\133\\38.28355\\-184.0365\\133\\38.03632\\-182.0834\\133\\37.62171\\-180.1303\\133\\37.08234\\-178.1771\\133\\36.83315\\-177.8881\\133\\34.88002\\-176.5388\\133\\32.9269\\-177.1323\\133\\30.97377\\-178.8\\133\\30.45337\\-178.1771\\133\\32.11003\\-176.224\\133\\34.03005\\-174.2709\\133\\36.13807\\-172.3178\\133\\37.89441\\-170.3646\\133\\40.7394\\-167.4795\\133\\42.69252\\-166.0145\\133\\44.64565\\-164.9712\\133\\46.59877\\-163.5038\\133\\48.5519\\-162.4292\\133\\50.50502\\-161.5852\\133\\52.45815\\-161.6467\\133\\56.3644\\-162.8669\\133\\58.31752\\-163.6714\\133\\62.22377\\-165.627\\133\\63.0903\\-166.4584\\133\\64.84795\\-168.4115\\133\\65.50566\\-170.3646\\133\\65.65041\\-172.3178\\133\\67.07884\\-174.2709\\133\\68.08315\\-175.3756\\133\\70.03628\\-176.8601\\133\\71.9894\\-178.8963\\133\\72.79742\\-180.1303\\133\\71.9894\\-181.7381\\133\\70.03628\\-180.8826\\133\\68.08315\\-180.6848\\133\\66.55501\\-182.0834\\133\\66.30972\\-184.0365\\133\\66.26611\\-185.9896\\133\\66.13003\\-186.464\\133\\64.44157\\-189.8959\\133\\64.1769\\-190.622\\133\\63.32241\\-191.849\\133\\62.22377\\-193.7716\\133\\60.27065\\-195.7756\\133\\58.31752\\-196.4614\\133"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002234"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "49"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "639"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-189.8238\\135\\48.5519\\-189.317\\135\\46.59877\\-189.3088\\135\\44.64565\\-188.9407\\135\\42.69252\\-188.3206\\135\\40.7394\\-187.1004\\135\\39.84671\\-185.9896\\135\\39.0681\\-184.0365\\135\\38.19257\\-180.1303\\135\\37.63829\\-178.1771\\135\\36.83315\\-177.2919\\135\\34.88002\\-176.528\\135\\32.9269\\-176.9784\\135\\32.12958\\-176.224\\135\\33.86748\\-174.2709\\135\\34.88002\\-173.2741\\135\\36.83315\\-171.9387\\135\\38.78627\\-169.7906\\135\\39.76284\\-168.4115\\135\\40.7394\\-167.4838\\135\\44.64565\\-165.5353\\135\\46.59877\\-164.0989\\135\\48.5519\\-163.5237\\135\\50.50502\\-162.8091\\135\\52.45815\\-162.8683\\135\\54.41127\\-163.2411\\135\\56.3644\\-163.2726\\135\\58.31752\\-163.7457\\135\\60.27065\\-164.948\\135\\62.22377\\-165.9447\\135\\62.75591\\-166.4584\\135\\63.86885\\-168.4115\\135\\65.10124\\-170.3646\\135\\65.50185\\-172.3178\\135\\66.13003\\-173.1304\\135\\68.08315\\-174.7928\\135\\70.03628\\-175.6217\\135\\70.6729\\-176.224\\135\\72.8146\\-180.1303\\135\\71.9894\\-181.5408\\135\\70.03628\\-180.668\\135\\68.08315\\-179.1102\\135\\66.13003\\-179.704\\135\\65.75443\\-180.1303\\135\\63.66692\\-185.9896\\135\\60.27065\\-189.5621\\135\\58.31752\\-190.8562\\135\\56.3644\\-190.9034\\135\\54.41127\\-190.6992\\135"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002233"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "47"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "640"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.1396\\137\\44.64565\\-187.6828\\137\\42.69252\\-186.8719\\137\\41.54235\\-185.9896\\137\\40.7394\\-185.1926\\137\\39.81995\\-184.0365\\137\\38.99798\\-182.0834\\137\\38.71969\\-180.1303\\137\\38.20485\\-178.1771\\137\\36.83315\\-176.8211\\137\\34.88002\\-176.517\\137\\32.9269\\-176.5937\\137\\32.54633\\-176.224\\137\\33.87246\\-174.2709\\137\\34.88002\\-173.2791\\137\\36.83315\\-172.3985\\137\\38.78627\\-170.284\\137\\39.76284\\-168.4115\\137\\40.7394\\-167.4838\\137\\42.69252\\-166.1119\\137\\46.59877\\-164.6273\\137\\48.5519\\-164.0989\\137\\50.50502\\-163.9279\\137\\52.45815\\-163.9356\\137\\58.31752\\-164.8118\\137\\60.27065\\-165.6638\\137\\62.22377\\-167.4494\\137\\62.98779\\-168.4115\\137\\63.98721\\-170.3646\\137\\65.09692\\-172.3178\\137\\66.13003\\-173.4931\\137\\68.08315\\-174.7294\\137\\70.03628\\-175.7198\\137\\70.53724\\-176.224\\137\\71.52523\\-178.1771\\137\\72.67036\\-180.1303\\137\\71.9894\\-181.429\\137\\70.03628\\-181.1515\\137\\68.08315\\-179.1811\\137\\66.13003\\-178.7428\\137\\64.39308\\-180.1303\\137\\63.79279\\-182.0834\\137\\62.91016\\-184.0365\\137\\62.22377\\-184.9677\\137\\60.27065\\-186.9128\\137\\58.31752\\-188.1095\\137\\56.3644\\-188.1413\\137"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002232"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "641"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "44.64565\\-186.4317\\139\\42.69252\\-185.417\\139\\40.7394\\-183.5299\\139\\39.57048\\-182.0834\\139\\39.05681\\-180.1303\\139\\38.71969\\-178.1771\\139\\36.83315\\-176.528\\139\\34.88002\\-176.5058\\139\\34.31256\\-176.224\\139\\33.87246\\-174.2709\\139\\34.88002\\-173.2791\\139\\36.83315\\-172.3985\\139\\38.78627\\-170.284\\139\\39.75819\\-168.4115\\139\\41.70021\\-166.4584\\139\\42.69252\\-165.333\\139\\44.64565\\-164.3425\\139\\46.59877\\-163.9886\\139\\50.50502\\-163.9886\\139\\52.45815\\-164.2462\\139\\54.41127\\-165.2894\\139\\58.31752\\-166.1654\\139\\60.27065\\-167.4042\\139\\62.22377\\-169.3568\\139\\62.96481\\-170.3646\\139\\64.1769\\-172.5619\\139\\66.42199\\-174.2709\\139\\68.08315\\-175.1372\\139\\69.36257\\-176.224\\139\\70.974\\-178.1771\\139\\71.83749\\-180.1303\\139\\70.03628\\-181.6693\\139\\68.08315\\-180.3347\\139\\66.13003\\-178.7153\\139\\64.1769\\-179.031\\139\\63.11111\\-180.1303\\139\\62.71206\\-182.0834\\139\\61.38417\\-184.0365\\139\\60.27065\\-185.15\\139\\58.31752\\-186.284\\139\\56.3644\\-186.6153\\139\\46.59877\\-186.6073\\139"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002231"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "642"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "42.69252\\-184.5969\\141\\40.08662\\-182.0834\\141\\39.52116\\-180.1303\\141\\38.71969\\-178.1771\\141\\36.83315\\-176.528\\141\\34.88002\\-176.5058\\141\\34.49121\\-176.224\\141\\33.86748\\-174.2709\\141\\34.88002\\-173.2741\\141\\36.83315\\-172.3843\\141\\38.67777\\-170.3646\\141\\40.58971\\-166.4584\\141\\41.93989\\-164.5053\\141\\42.69252\\-163.7847\\141\\44.64565\\-162.9601\\141\\46.59877\\-162.7136\\141\\48.5519\\-162.7136\\141\\50.50502\\-163.0499\\141\\52.45815\\-163.6675\\141\\56.3644\\-165.7396\\141\\60.03712\\-168.4115\\141\\62.22377\\-170.9811\\141\\63.24219\\-172.3178\\141\\64.1769\\-173.3509\\141\\66.13003\\-174.7328\\141\\68.08315\\-175.5382\\141\\68.80121\\-176.224\\141\\70.07413\\-178.1771\\141\\70.95248\\-180.1303\\141\\70.03628\\-181.4562\\141\\68.08315\\-181.0509\\141\\66.13003\\-179.0541\\141\\64.1769\\-178.6854\\141\\62.31923\\-180.1303\\141\\61.49377\\-182.0834\\141\\60.27065\\-183.8737\\141\\58.31752\\-185.0899\\141\\56.3644\\-185.7779\\141\\54.41127\\-185.841\\141\\48.5519\\-185.828\\141\\46.59877\\-185.5457\\141\\44.64565\\-185.1626\\141"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002230"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "643"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-186.3691\\143\\46.59877\\-185.3577\\143\\44.64565\\-184.931\\143\\42.69252\\-184.0741\\143\\40.49191\\-182.0834\\143\\39.69213\\-180.1303\\143\\38.78627\\-178.2593\\143\\36.83315\\-176.528\\143\\34.88002\\-176.528\\143\\34.45504\\-176.224\\143\\33.86748\\-174.2709\\143\\34.88002\\-173.2741\\143\\36.83315\\-172.0039\\143\\38.1081\\-170.3646\\143\\38.76357\\-168.4115\\143\\40.63008\\-164.5053\\143\\42.85215\\-162.5521\\143\\44.64565\\-161.6378\\143\\46.59877\\-161.3931\\143\\48.5519\\-161.3872\\143\\50.50502\\-161.7213\\143\\52.45815\\-162.8302\\143\\54.41127\\-163.6477\\143\\56.3644\\-165.3537\\143\\58.13763\\-166.4584\\143\\60.27065\\-168.05\\143\\60.6321\\-168.4115\\143\\61.55723\\-170.3646\\143\\63.11113\\-172.3178\\143\\64.1769\\-173.4098\\143\\66.13003\\-175.1305\\143\\68.08315\\-176.3916\\143\\69.31644\\-178.1771\\143\\69.80518\\-180.1303\\143\\68.08315\\-181.2307\\143\\66.13003\\-179.363\\143\\64.1769\\-178.5132\\143\\62.22377\\-179.6247\\143\\61.78909\\-180.1303\\143\\61.22652\\-182.0834\\143\\60.27065\\-183.1135\\143\\58.31752\\-184.9638\\143\\56.3644\\-185.8026\\143\\54.41127\\-186.3362\\143\\52.45815\\-186.5789\\143\\50.50502\\-186.5824\\143"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002229"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "644"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-186.3106\\145\\44.64565\\-185.284\\145\\42.69252\\-184.5277\\145\\40.14051\\-182.0834\\145\\39.56079\\-180.1303\\145\\38.71969\\-178.1771\\145\\36.83315\\-176.528\\145\\34.88002\\-176.6949\\145\\34.15432\\-176.224\\145\\33.86748\\-174.2709\\145\\35.9606\\-172.3178\\145\\37.42137\\-170.3646\\145\\37.94288\\-168.4115\\145\\39.15562\\-166.4584\\145\\39.86466\\-164.5053\\145\\42.69252\\-161.7406\\145\\44.64565\\-161.2413\\145\\46.59877\\-161.0244\\145\\48.5519\\-161.0244\\145\\50.50502\\-161.2826\\145\\52.45815\\-161.7061\\145\\53.99778\\-162.5521\\145\\56.3644\\-164.1461\\145\\58.31752\\-165.592\\145\\60.27065\\-167.3023\\145\\61.21121\\-168.4115\\145\\62.31923\\-170.3646\\145\\63.22315\\-172.3178\\145\\66.13003\\-175.3676\\145\\67.0953\\-176.224\\145\\68.48839\\-178.1771\\145\\68.97242\\-180.1303\\145\\68.08315\\-181.1314\\145\\66.13003\\-180.4464\\145\\64.1769\\-178.7468\\145\\62.22377\\-179.6247\\145\\61.78909\\-180.1303\\145\\61.1641\\-182.0834\\145\\58.31752\\-184.9591\\145\\56.3644\\-186.1512\\145\\54.41127\\-186.9257\\145\\52.45815\\-187.2544\\145\\50.50502\\-187.2754\\145\\48.5519\\-186.9969\\145"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002228"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "645"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-187.9953\\147\\44.64565\\-186.688\\147\\42.69252\\-184.9543\\147\\39.79391\\-182.0834\\147\\39.11394\\-180.1303\\147\\38.70551\\-178.1771\\147\\36.83315\\-176.528\\147\\34.88002\\-177.0165\\147\\33.36635\\-176.224\\147\\33.86748\\-174.2709\\147\\35.82098\\-172.3178\\147\\36.85586\\-170.3646\\147\\38.74871\\-166.4584\\147\\39.74516\\-164.5053\\147\\42.69252\\-161.5961\\147\\44.64565\\-161.0244\\147\\50.50502\\-161.0054\\147\\52.45815\\-161.4393\\147\\54.41127\\-161.9949\\147\\56.3644\\-163.6938\\147\\58.31752\\-165.0542\\147\\60.27065\\-166.0592\\147\\60.66987\\-166.4584\\147\\61.5433\\-168.4115\\147\\62.93821\\-170.3646\\147\\63.50359\\-172.3178\\147\\64.88953\\-174.2709\\147\\66.57627\\-176.224\\147\\67.44786\\-178.1771\\147\\67.96667\\-180.1303\\147\\66.13003\\-181.1784\\147\\64.1769\\-179.1908\\147\\62.22377\\-179.6247\\147\\61.78909\\-180.1303\\147\\61.1641\\-182.0834\\147\\58.31752\\-184.9681\\147\\56.3644\\-186.6926\\147\\54.41127\\-187.4117\\147\\52.45815\\-187.719\\147\\50.50502\\-188.1681\\147"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002227"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "646"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.2284\\149\\44.64565\\-187.1605\\149\\42.69252\\-185.3473\\149\\39.69002\\-182.0834\\149\\38.73409\\-180.1303\\149\\38.69153\\-178.1771\\149\\36.83315\\-176.4945\\149\\34.88002\\-177.2596\\149\\32.9269\\-176.3397\\149\\32.9269\\-176.1325\\149\\33.86748\\-174.2709\\149\\35.82098\\-172.3178\\149\\36.84078\\-170.3646\\149\\39.632\\-164.5053\\149\\42.69252\\-161.6001\\149\\44.64565\\-161.061\\149\\46.59877\\-161.0054\\149\\50.50502\\-161.052\\149\\52.45815\\-161.5849\\149\\54.41127\\-162.4035\\149\\56.3644\\-163.6831\\149\\60.27065\\-165.6453\\149\\61.08369\\-166.4584\\149\\61.77988\\-168.4115\\149\\63.09235\\-170.3646\\149\\63.68862\\-172.3178\\149\\64.12472\\-174.2709\\149\\65.39055\\-176.224\\149\\67.01259\\-178.1771\\149\\67.42345\\-180.1303\\149\\66.13003\\-181.7514\\149\\64.1769\\-180.1218\\149\\62.22377\\-179.6247\\149\\61.78909\\-180.1303\\149\\61.16859\\-182.0834\\149\\60.27065\\-183.1022\\149\\58.31752\\-185.0929\\149\\56.3644\\-186.8988\\149\\54.41127\\-187.707\\149\\52.45815\\-188.2054\\149\\50.50502\\-188.856\\149\\48.5519\\-188.9351\\149"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002226"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "46"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "647"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.8056\\151\\44.64565\\-187.4843\\151\\42.69252\\-186.6943\\151\\41.99966\\-185.9896\\151\\40.9511\\-184.0365\\151\\39.68608\\-182.0834\\151\\38.73409\\-180.1303\\151\\38.69153\\-178.1771\\151\\36.83315\\-176.0612\\151\\34.88002\\-177.7081\\151\\32.84552\\-178.1771\\151\\32.88934\\-176.224\\151\\33.88301\\-174.2709\\151\\35.82098\\-172.3178\\151\\36.89973\\-170.3646\\151\\38.78627\\-166.3211\\151\\39.42131\\-164.5053\\151\\42.69252\\-161.7514\\151\\44.64565\\-161.3043\\151\\46.59877\\-161.0959\\151\\48.5519\\-161.0959\\151\\50.50502\\-161.298\\151\\52.45815\\-161.8172\\151\\54.41127\\-162.8669\\151\\56.3644\\-163.6831\\151\\60.27065\\-165.6453\\151\\61.08369\\-166.4584\\151\\61.77988\\-168.4115\\151\\63.09235\\-170.3646\\151\\63.68862\\-172.3178\\151\\63.69728\\-174.2709\\151\\65.08166\\-176.224\\151\\66.05679\\-178.1771\\151\\67.16763\\-180.1303\\151\\66.18947\\-182.0834\\151\\64.1769\\-180.5694\\151\\62.22377\\-179.635\\151\\61.7984\\-180.1303\\151\\61.26863\\-182.0834\\151\\60.27065\\-183.861\\151\\57.7625\\-185.9896\\151\\56.3644\\-186.9285\\151\\54.41127\\-188.0375\\151\\52.45815\\-188.8622\\151\\50.50502\\-189.3958\\151\\48.5519\\-189.4465\\151"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002225"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "53"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "648"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.9873\\153\\44.64565\\-187.6837\\153\\42.69252\\-187.0443\\153\\41.66076\\-185.9896\\153\\40.50368\\-184.0365\\153\\39.6997\\-182.0834\\153\\38.7939\\-180.1303\\153\\38.70551\\-178.1771\\153\\38.1438\\-176.224\\153\\36.83315\\-175.4207\\153\\35.97445\\-176.224\\153\\34.90274\\-178.1771\\153\\32.9269\\-179.8733\\153\\32.07883\\-178.1771\\153\\32.9269\\-176.6278\\153\\33.27977\\-176.224\\153\\34.02617\\-174.2709\\153\\35.83592\\-172.3178\\153\\37.28613\\-170.3646\\153\\37.8903\\-168.4115\\153\\39.77387\\-164.5053\\153\\40.7394\\-163.6465\\153\\42.69252\\-162.934\\153\\44.64565\\-161.6453\\153\\46.59877\\-161.4518\\153\\48.5519\\-161.4518\\153\\50.50502\\-161.6879\\153\\52.45815\\-162.4024\\153\\54.41127\\-162.9292\\153\\56.3644\\-163.7013\\153\\58.31752\\-164.7643\\153\\60.27065\\-165.6652\\153\\61.06382\\-166.4584\\153\\61.72692\\-168.4115\\153\\63.09235\\-170.3646\\153\\63.68862\\-172.3178\\153\\63.69728\\-174.2709\\153\\65.08166\\-176.224\\153\\65.61702\\-178.1771\\153\\67.0467\\-180.1303\\153\\66.13003\\-181.6485\\153\\64.1769\\-180.1219\\153\\62.22377\\-179.721\\153\\61.86695\\-180.1303\\153\\61.59941\\-182.0834\\153\\61.04533\\-184.0365\\153\\60.27065\\-184.8462\\153\\58.31752\\-186.1905\\153\\56.3644\\-187.0805\\153\\54.41127\\-188.4515\\153\\52.45815\\-189.1991\\153\\50.50502\\-189.6368\\153\\48.5519\\-189.6368\\153"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002224"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "50"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "649"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.9674\\155\\44.64565\\-187.6279\\155\\42.69252\\-187.0229\\155\\41.68185\\-185.9896\\155\\40.59079\\-184.0365\\155\\39.80663\\-182.0834\\155\\39.1633\\-180.1303\\155\\38.70551\\-178.1771\\155\\38.54984\\-176.224\\155\\36.83315\\-175.3472\\155\\35.90123\\-176.224\\155\\35.26696\\-178.1771\\155\\32.9269\\-180.342\\155\\32.65169\\-180.1303\\155\\31.93554\\-178.1771\\155\\33.8099\\-176.224\\155\\34.59042\\-174.2709\\155\\36.00683\\-172.3178\\155\\37.78988\\-170.3646\\155\\38.43057\\-168.4115\\155\\39.30902\\-166.4584\\155\\40.7394\\-164.8373\\155\\42.69252\\-163.6661\\155\\44.64565\\-162.934\\155\\46.59877\\-162.3499\\155\\48.5519\\-162.3374\\155\\50.50502\\-162.6043\\155\\54.41127\\-163.2894\\155\\56.3644\\-163.7849\\155\\58.31752\\-165.0923\\155\\60.27065\\-166.0054\\155\\60.72363\\-166.4584\\155\\61.47812\\-168.4115\\155\\63.0695\\-170.3646\\155\\63.64677\\-172.3178\\155\\63.69728\\-174.2709\\155\\65.08166\\-176.224\\155\\65.63579\\-178.1771\\155\\66.98998\\-180.1303\\155\\66.13003\\-181.118\\155\\64.1769\\-179.5366\\155\\62.56933\\-180.1303\\155\\62.22377\\-180.6185\\155\\61.18903\\-184.0365\\155\\60.27065\\-184.9915\\155\\58.31752\\-186.7678\\155\\54.41127\\-188.0389\\155\\52.45815\\-188.9704\\155\\50.50502\\-189.5811\\155\\48.5519\\-189.5919\\155"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002223"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "650"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.7819\\157\\44.64565\\-187.4126\\157\\42.69252\\-186.7559\\157\\41.93791\\-185.9896\\157\\40.26288\\-182.0834\\157\\39.61332\\-180.1303\\157\\38.78627\\-178.1587\\157\\36.83315\\-176.4682\\157\\35.65822\\-178.1771\\157\\34.88002\\-178.9719\\157\\32.9269\\-180.342\\157\\32.65169\\-180.1303\\157\\32.02505\\-178.1771\\157\\34.05252\\-176.224\\157\\34.88002\\-174.8448\\157\\36.97266\\-172.3178\\157\\38.40195\\-170.3646\\157\\39.98687\\-166.4584\\157\\40.7394\\-165.7315\\157\\42.69252\\-164.8947\\157\\44.64565\\-163.6221\\157\\46.59877\\-163.4363\\157\\52.45815\\-163.4403\\157\\54.41127\\-163.6826\\157\\56.3644\\-164.3437\\157\\58.31752\\-165.5295\\157\\60.27065\\-167.3427\\157\\62.92424\\-170.3646\\157\\63.43852\\-172.3178\\157\\63.69728\\-174.2709\\157\\65.08166\\-176.224\\157\\65.69267\\-178.1771\\157\\66.98328\\-180.1303\\157\\66.13003\\-181.0011\\157\\64.1769\\-180.0073\\157\\62.22377\\-181.5219\\157\\61.80783\\-182.0834\\157\\61.18903\\-184.0365\\157\\58.31752\\-186.9195\\157\\56.3644\\-187.6498\\157\\54.41127\\-187.6953\\157\\52.45815\\-188.6593\\157\\50.50502\\-189.3003\\157\\48.5519\\-189.3154\\157"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002222"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "651"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.0529\\159\\44.64565\\-187.1091\\159\\42.69252\\-185.3403\\159\\41.58095\\-184.0365\\159\\40.53996\\-182.0834\\159\\39.8247\\-180.1303\\159\\39.21165\\-178.1771\\159\\38.78627\\-177.6558\\159\\36.83315\\-177.0871\\159\\34.88002\\-178.9657\\159\\32.9269\\-180.342\\159\\32.65169\\-180.1303\\159\\32.78871\\-178.1771\\159\\34.5699\\-176.224\\159\\35.71483\\-174.2709\\159\\37.68164\\-172.3178\\159\\38.80898\\-170.3646\\159\\39.69999\\-168.4115\\159\\40.7394\\-167.2642\\159\\42.69252\\-165.5719\\159\\44.64565\\-164.789\\159\\46.59877\\-164.1692\\159\\50.50502\\-164.0433\\159\\52.45815\\-164.1085\\159\\54.41127\\-164.3183\\159\\56.3644\\-164.6923\\159\\58.31752\\-165.6577\\159\\61.07677\\-168.4115\\159\\63.17709\\-172.3178\\159\\63.69728\\-174.2709\\159\\65.08166\\-176.224\\159\\66.16759\\-178.1771\\159\\67.14043\\-180.1303\\159\\66.13003\\-181.093\\159\\64.1769\\-180.3777\\159\\62.22377\\-181.6187\\159\\61.80783\\-182.0834\\159\\61.18903\\-184.0365\\159\\58.31752\\-186.9195\\159\\56.3644\\-187.6498\\159\\54.41127\\-187.6953\\159\\52.45815\\-187.9958\\159\\50.50502\\-188.7671\\159\\48.5519\\-188.8438\\159"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002221"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "652"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-188.0667\\161\\46.59877\\-187.6837\\161\\44.64565\\-187.0304\\161\\41.67872\\-184.0365\\161\\40.53996\\-182.0834\\161\\40.20314\\-180.1303\\161\\39.58572\\-178.1771\\161\\38.78627\\-177.3233\\161\\36.83315\\-177.1494\\161\\34.88002\\-178.9271\\161\\32.9269\\-180.342\\161\\32.65169\\-180.1303\\161\\33.37178\\-178.1771\\161\\34.92789\\-176.224\\161\\35.85659\\-174.2709\\161\\37.77519\\-172.3178\\161\\39.28312\\-170.3646\\161\\40.14669\\-168.4115\\161\\40.7394\\-167.8354\\161\\44.64565\\-165.4404\\161\\46.98571\\-164.5053\\161\\48.5519\\-164.017\\161\\50.50502\\-163.8035\\161\\52.45815\\-164.1183\\161\\54.41127\\-164.6273\\161\\56.3644\\-164.6923\\161\\58.31752\\-165.6577\\161\\61.07677\\-168.4115\\161\\61.7984\\-170.3646\\161\\63.09655\\-172.3178\\161\\63.69728\\-174.2709\\161\\65.08611\\-176.224\\161\\66.87432\\-178.1771\\161\\67.41467\\-180.1303\\161\\66.13003\\-181.1203\\161\\64.1769\\-180.3777\\161\\62.22377\\-181.6187\\161\\61.80783\\-182.0834\\161\\61.20208\\-184.0365\\161\\58.31752\\-186.9432\\161\\56.3644\\-187.6498\\161\\52.45815\\-187.862\\161\\50.50502\\-188.0925\\161"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002220"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "43"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "653"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-188.3957\\163\\48.5519\\-187.707\\163\\46.59877\\-187.6837\\163\\44.64565\\-187.0304\\163\\41.67872\\-184.0365\\163\\40.53996\\-182.0834\\163\\39.98197\\-180.1303\\163\\39.53562\\-178.1771\\163\\38.78627\\-177.3633\\163\\36.83315\\-177.1494\\163\\34.88002\\-178.9271\\163\\32.9269\\-180.342\\163\\32.65169\\-180.1303\\163\\33.37178\\-178.1771\\163\\34.88002\\-176.8844\\163\\35.39362\\-176.224\\163\\36.0736\\-174.2709\\163\\39.64198\\-170.3646\\163\\41.33076\\-168.4115\\163\\44.64565\\-165.5443\\163\\46.84004\\-164.5053\\163\\48.5519\\-163.7849\\163\\50.50502\\-163.6029\\163\\52.45815\\-163.8767\\163\\54.41127\\-164.6273\\163\\56.3644\\-164.6923\\163\\58.31752\\-165.6577\\163\\61.07677\\-168.4115\\163\\61.7984\\-170.3646\\163\\63.09655\\-172.3178\\163\\63.69728\\-174.2709\\163\\65.08611\\-176.224\\163\\67.01913\\-178.1771\\163\\67.53146\\-180.1303\\163\\66.13003\\-181.1203\\163\\64.1769\\-180.4558\\163\\62.22377\\-181.7225\\163\\61.89825\\-182.0834\\163\\61.2851\\-184.0365\\163\\60.27065\\-185.2818\\163\\58.31752\\-187.1117\\163\\54.41127\\-188.2357\\163\\52.45815\\-188.7231\\163"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002219"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "44"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "654"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-188.8941\\165\\48.5519\\-187.8073\\165\\46.59877\\-187.6837\\165\\44.64565\\-187.0304\\165\\41.67872\\-184.0365\\165\\40.53996\\-182.0834\\165\\39.03376\\-178.1771\\165\\38.78627\\-177.8949\\165\\36.83315\\-177.0337\\165\\34.88002\\-178.8787\\165\\32.9269\\-180.342\\165\\32.65169\\-180.1303\\165\\33.4093\\-178.1771\\165\\34.88002\\-177.3467\\165\\35.86828\\-176.224\\165\\37.13711\\-174.2709\\165\\37.92709\\-172.3178\\165\\41.45097\\-168.4115\\165\\42.69252\\-167.1573\\165\\44.64565\\-165.5443\\165\\46.59877\\-164.6539\\165\\48.5519\\-164.2695\\165\\50.50502\\-164.0989\\165\\52.45815\\-164.3183\\165\\54.41127\\-164.6407\\165\\56.3644\\-164.7982\\165\\58.31752\\-165.6818\\165\\61.07677\\-168.4115\\165\\61.88768\\-170.3646\\165\\63.13058\\-172.3178\\165\\63.69728\\-174.2709\\165\\65.08611\\-176.224\\165\\67.01913\\-178.1771\\165\\67.53146\\-180.1303\\165\\66.13003\\-181.1483\\165\\64.1769\\-180.7588\\165\\62.6008\\-182.0834\\165\\61.64326\\-184.0365\\165\\60.91993\\-185.9896\\165\\60.27065\\-186.657\\165\\58.31752\\-187.478\\165\\56.3644\\-187.7812\\165\\54.41127\\-188.76\\165\\52.45815\\-189.2979\\165"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002218"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "34"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "655"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-188.479\\167\\46.59877\\-187.6837\\167\\44.64565\\-187.0487\\167\\41.6661\\-184.0365\\167\\40.53996\\-182.0834\\167\\39.70565\\-180.1303\\167\\38.78627\\-178.2228\\167\\36.47121\\-176.224\\167\\37.64858\\-174.2709\\167\\38.41693\\-172.3178\\167\\39.74862\\-170.3646\\167\\42.69252\\-167.3939\\167\\44.64565\\-165.583\\167\\46.59877\\-164.8823\\167\\50.50502\\-164.5718\\167\\54.41127\\-164.6539\\167\\58.31752\\-165.8441\\167\\61.07677\\-168.4115\\167\\62.63271\\-170.3646\\167\\63.27104\\-172.3178\\167\\63.69728\\-174.2709\\167\\65.08611\\-176.224\\167\\67.01913\\-178.1771\\167\\67.54762\\-180.1303\\167\\66.13003\\-181.3717\\167\\64.1769\\-180.9938\\167\\63.10223\\-182.0834\\167\\61.81738\\-184.0365\\167\\61.17777\\-185.9896\\167\\60.27065\\-186.9259\\167\\56.3644\\-188.3198\\167\\54.41127\\-189.0805\\167\\52.45815\\-189.6029\\167\\50.50502\\-189.166\\167"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002217"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "656"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-188.8896\\169\\46.59877\\-187.6837\\169\\44.64565\\-187.1897\\169\\42.69252\\-185.5616\\169\\41.5271\\-184.0365\\169\\40.5277\\-182.0834\\169\\39.70097\\-180.1303\\169\\38.78627\\-178.2585\\169\\37.57112\\-176.224\\169\\37.75653\\-174.2709\\169\\39.77679\\-170.3646\\169\\42.69252\\-167.4791\\169\\44.64565\\-165.7046\\169\\48.5519\\-165.2303\\169\\50.50502\\-164.741\\169\\52.45815\\-164.6407\\169\\54.41127\\-164.7982\\169\\58.31752\\-166.3363\\169\\60.27065\\-167.6054\\169\\63.01571\\-170.3646\\169\\63.54501\\-172.3178\\169\\63.69728\\-174.2709\\169\\65.08611\\-176.224\\169\\67.01913\\-178.1771\\169\\67.56357\\-180.1303\\169\\66.62582\\-182.0834\\169\\66.13003\\-182.3221\\169\\64.1769\\-181.0496\\169\\63.20448\\-182.0834\\169\\61.95324\\-184.0365\\169\\61.19153\\-185.9896\\169\\60.27065\\-186.944\\169\\58.31752\\-187.6498\\169\\56.3644\\-188.7574\\169\\54.41127\\-189.4402\\169\\52.45815\\-189.6368\\169\\50.50502\\-189.4895\\169"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002216"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "657"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-188.9788\\171\\46.59877\\-187.6953\\171\\44.64565\\-187.5364\\171\\42.69252\\-186.8429\\171\\41.85616\\-185.9896\\171\\40.83414\\-184.0365\\171\\40.5277\\-182.0834\\171\\38.86704\\-178.1771\\171\\37.71694\\-176.224\\171\\37.7662\\-174.2709\\171\\39.36358\\-172.3178\\171\\39.86779\\-170.3646\\171\\42.69252\\-167.5145\\171\\44.64565\\-166.3363\\171\\46.59877\\-166.0424\\171\\50.50502\\-165.158\\171\\52.45815\\-164.6407\\171\\54.41127\\-165.2583\\171\\56.3644\\-165.7594\\171\\58.17618\\-166.4584\\171\\60.27065\\-167.6054\\171\\63.08182\\-170.3646\\171\\63.68005\\-172.3178\\171\\63.78996\\-174.2709\\171\\65.1442\\-176.224\\171\\67.01913\\-178.1771\\171\\67.57281\\-180.1303\\171\\68.30695\\-182.0834\\171\\68.08315\\-182.3392\\171\\66.13003\\-182.5048\\171\\65.67429\\-182.0834\\171\\64.1769\\-181.1208\\171\\63.29416\\-182.0834\\171\\62.75391\\-184.0365\\171\\61.19559\\-185.9896\\171\\60.27065\\-186.944\\171\\58.31752\\-187.7433\\171\\56.3644\\-188.8905\\171\\54.41127\\-189.5919\\171\\50.50502\\-189.6368\\171"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002215"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "658"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-188.9841\\173\\46.59877\\-187.6953\\173\\44.64565\\-187.6722\\173\\42.69252\\-187.0275\\173\\41.68624\\-185.9896\\173\\40.65863\\-184.0365\\173\\40.5277\\-182.0834\\173\\39.8236\\-180.1303\\173\\39.40056\\-178.1771\\173\\37.7267\\-176.224\\173\\37.78027\\-174.2709\\173\\39.62925\\-172.3178\\173\\40.4225\\-170.3646\\173\\41.96815\\-168.4115\\173\\42.69252\\-167.7319\\173\\46.58276\\-166.4584\\173\\48.5519\\-165.7504\\173\\50.50502\\-165.2583\\173\\52.45815\\-164.6539\\173\\54.41127\\-165.5138\\173\\56.3644\\-166.2109\\173\\58.31752\\-166.5531\\173\\60.27065\\-167.5764\\173\\63.11198\\-170.3646\\173\\63.7705\\-172.3178\\173\\64.67099\\-174.2709\\173\\65.3223\\-176.224\\173\\67.07855\\-178.1771\\173\\67.57891\\-180.1303\\173\\68.86916\\-182.0834\\173\\68.08315\\-182.9989\\173\\66.13003\\-181.6697\\173\\64.1769\\-181.4184\\173\\63.58456\\-182.0834\\173\\63.14916\\-184.0365\\173\\60.27065\\-186.944\\173\\58.31752\\-188.4136\\173\\56.3644\\-189.1021\\173\\54.41127\\-189.6254\\173\\50.50502\\-189.6484\\173"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002214"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "39"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "659"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-189.0085\\175\\46.59877\\-187.7812\\175\\44.64565\\-187.6837\\175\\42.69252\\-186.9754\\175\\41.78814\\-185.9896\\175\\41.43483\\-184.0365\\175\\40.5277\\-182.0834\\175\\40.34018\\-180.1303\\175\\39.64363\\-178.1771\\175\\37.73119\\-176.224\\175\\37.79477\\-174.2709\\175\\39.73959\\-172.3178\\175\\40.7394\\-171.0971\\175\\42.69252\\-168.9447\\175\\44.64565\\-167.4166\\175\\48.5519\\-165.5981\\175\\50.50502\\-164.7982\\175\\52.45815\\-164.6539\\175\\54.41127\\-165.4008\\175\\56.3644\\-165.8735\\175\\58.29977\\-166.4584\\175\\60.27065\\-167.3449\\175\\62.22377\\-168.8449\\175\\64.61426\\-172.3178\\175\\65.25068\\-174.2709\\175\\66.39088\\-176.224\\175\\67.27543\\-178.1771\\175\\67.57224\\-180.1303\\175\\68.90835\\-182.0834\\175\\68.08315\\-182.9755\\175\\66.13003\\-181.1823\\175\\64.1769\\-181.5207\\175\\63.68005\\-182.0834\\175\\63.20858\\-184.0365\\175\\60.27065\\-186.944\\175\\58.31752\\-188.7973\\175\\56.3644\\-189.4799\\175\\54.41127\\-189.6368\\175\\50.50502\\-189.6484\\175"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002213"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "660"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.6605\\177\\45.05518\\-187.9428\\177\\42.69252\\-186.5505\\177\\42.20424\\-185.9896\\177\\41.65728\\-184.0365\\177\\40.53996\\-182.0834\\177\\40.5156\\-180.1303\\177\\39.70833\\-178.1771\\177\\37.73573\\-176.224\\177\\38.02807\\-174.2709\\177\\38.78627\\-173.6075\\177\\41.69271\\-170.3646\\177\\44.64565\\-167.4954\\177\\48.5519\\-165.5295\\177\\50.50502\\-164.6407\\177\\52.45815\\-164.6407\\177\\54.41127\\-164.8329\\177\\56.3644\\-165.4645\\177\\58.31752\\-165.8586\\177\\59.82919\\-166.4584\\177\\62.22377\\-167.6556\\177\\63.01386\\-168.4115\\177\\63.62278\\-170.3646\\177\\65.01605\\-172.3178\\177\\65.55272\\-174.2709\\177\\66.94047\\-176.224\\177\\67.50584\\-178.1771\\177\\67.5499\\-180.1303\\177\\68.77602\\-182.0834\\177\\68.08315\\-182.8172\\177\\67.36208\\-182.0834\\177\\66.13003\\-181.1157\\177\\64.1769\\-181.53\\177\\63.68862\\-182.0834\\177\\63.21265\\-184.0365\\177\\58.31752\\-188.8622\\177\\56.3644\\-189.5919\\177\\54.41127\\-189.6484\\177\\50.50502\\-189.6484\\177\\48.5519\\-189.2229\\177"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002212"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "661"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.9624\\179\\42.69252\\-186.4387\\179\\42.30558\\-185.9896\\179\\41.67872\\-184.0365\\179\\40.53996\\-182.0834\\179\\40.5277\\-180.1303\\179\\39.82202\\-178.1771\\179\\38.78627\\-176.9868\\179\\37.88966\\-176.224\\179\\38.78627\\-174.4202\\179\\40.7394\\-171.9647\\179\\41.73465\\-170.3646\\179\\44.64565\\-167.4954\\179\\48.5519\\-165.5249\\179\\50.50502\\-164.6273\\179\\54.41127\\-164.6407\\179\\56.3644\\-164.7871\\179\\58.31752\\-165.4433\\179\\60.27065\\-165.8586\\179\\63.07357\\-168.4115\\179\\64.74974\\-170.3646\\179\\65.31025\\-172.3178\\179\\65.63318\\-174.2709\\179\\66.62119\\-176.224\\179\\67.29369\\-178.1771\\179\\67.16239\\-180.1303\\179\\66.13003\\-180.9552\\179\\64.1769\\-181.53\\179\\63.68862\\-182.0834\\179\\63.21265\\-184.0365\\179\\58.31752\\-188.8622\\179\\56.3644\\-189.5919\\179\\54.41127\\-189.6484\\179\\50.50502\\-189.6484\\179\\48.5519\\-189.5811\\179"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002211"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "33"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "662"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.9873\\181\\44.64565\\-187.1994\\181\\42.69252\\-185.2388\\181\\41.67872\\-184.0365\\181\\40.53996\\-182.0834\\181\\40.5277\\-180.1303\\181\\40.40331\\-178.1771\\181\\37.69566\\-176.224\\181\\38.99721\\-174.2709\\181\\40.7394\\-172.0696\\181\\41.73465\\-170.3646\\181\\44.64565\\-167.4954\\181\\46.59877\\-165.7566\\181\\48.5519\\-165.2664\\181\\50.50502\\-164.6273\\181\\56.3644\\-164.6407\\181\\58.31752\\-164.8201\\181\\60.27065\\-165.6528\\181\\62.22377\\-167.2661\\181\\65.02029\\-170.3646\\181\\65.5759\\-172.3178\\181\\65.72363\\-176.224\\181\\67.06921\\-178.1771\\181\\67.23077\\-180.1303\\181\\68.13698\\-182.0834\\181\\66.13003\\-180.9766\\181\\64.1769\\-181.53\\181\\63.68862\\-182.0834\\181\\63.21265\\-184.0365\\181\\58.31752\\-188.8622\\181\\56.3644\\-189.5919\\181\\54.41127\\-189.6484\\181\\48.5519\\-189.6368\\181"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002210"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "40"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "663"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.6025\\183\\44.64565\\-187.0445\\183\\41.67872\\-184.0365\\183\\40.53996\\-182.0834\\183\\40.5277\\-180.1303\\183\\39.54173\\-178.1771\\183\\36.95704\\-176.224\\183\\38.99721\\-174.2709\\183\\40.7394\\-172.0676\\183\\41.73005\\-170.3646\\183\\46.59877\\-165.5795\\183\\48.5519\\-164.741\\183\\50.50502\\-164.6273\\183\\52.45815\\-163.7728\\183\\54.41127\\-163.5816\\183\\56.3644\\-163.8559\\183\\58.31752\\-164.6539\\183\\60.27065\\-165.3365\\183\\62.22377\\-165.8887\\183\\62.81649\\-166.4584\\183\\63.61497\\-168.4115\\183\\65.0455\\-170.3646\\183\\65.62471\\-172.3178\\183\\65.64175\\-176.224\\183\\67.02962\\-178.1771\\183\\67.51877\\-180.1303\\183\\68.88767\\-182.0834\\183\\69.2713\\-184.0365\\183\\68.08315\\-185.1059\\183\\67.12839\\-184.0365\\183\\67.27444\\-182.0834\\183\\66.13003\\-181.0936\\183\\64.1769\\-181.53\\183\\63.68862\\-182.0834\\183\\63.21265\\-184.0365\\183\\58.31752\\-188.8622\\183\\56.3644\\-189.5919\\183\\54.41127\\-189.6484\\183\\50.50502\\-189.6484\\183\\48.5519\\-189.2264\\183"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002209"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "42"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "664"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-189.014\\185\\46.59877\\-187.8343\\185\\44.64565\\-187.0304\\185\\41.67872\\-184.0365\\185\\40.53996\\-182.0834\\185\\40.5277\\-180.1303\\185\\38.51837\\-178.1771\\185\\36.84078\\-176.224\\185\\38.99721\\-174.2709\\185\\40.5277\\-172.3178\\185\\42.3208\\-168.4115\\185\\42.69252\\-168.0445\\185\\44.64565\\-167.0754\\185\\46.59877\\-165.5192\\185\\48.5519\\-164.6407\\185\\50.50502\\-164.5574\\185\\52.45815\\-163.5745\\185\\54.41127\\-163.0741\\185\\58.31752\\-163.8491\\185\\60.27065\\-164.8201\\185\\62.22377\\-165.6423\\185\\63.07478\\-166.4584\\185\\64.74518\\-168.4115\\185\\65.34056\\-170.3646\\185\\65.63318\\-172.3178\\185\\65.64175\\-176.224\\185\\67.02962\\-178.1771\\185\\67.57891\\-180.1303\\185\\68.88353\\-182.0834\\185\\69.51334\\-184.0365\\185\\68.08315\\-185.6429\\185\\67.02248\\-184.0365\\185\\67.1804\\-182.0834\\185\\66.13003\\-181.2064\\185\\64.1769\\-181.6858\\185\\63.82008\\-182.0834\\185\\63.24261\\-184.0365\\185\\61.20381\\-185.9896\\185\\58.31752\\-188.8622\\185\\56.3644\\-189.5919\\185\\54.41127\\-189.6484\\185\\50.50502\\-189.6484\\185"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002208"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "35"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "665"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-188.9841\\187\\46.59877\\-187.6837\\187\\44.64565\\-187.0304\\187\\41.67872\\-184.0365\\187\\40.53996\\-182.0834\\187\\40.5277\\-180.1303\\187\\38.29012\\-178.1771\\187\\36.92789\\-176.224\\187\\39.07701\\-174.2709\\187\\40.5277\\-172.3178\\187\\40.73177\\-170.3646\\187\\41.80348\\-168.4115\\187\\44.64565\\-165.8091\\187\\48.53754\\-164.5053\\187\\50.50502\\-163.7249\\187\\54.41127\\-162.8227\\187\\56.3644\\-162.996\\187\\58.31752\\-163.6855\\187\\62.22377\\-165.627\\187\\64.99483\\-168.4115\\187\\65.54516\\-170.3646\\187\\65.63318\\-172.3178\\187\\65.64175\\-176.224\\187\\67.02962\\-178.1771\\187\\67.6123\\-180.1303\\187\\67.87144\\-182.0834\\187\\69.21365\\-184.0365\\187\\68.08315\\-185.6757\\187\\66.13003\\-185.2906\\187\\64.1769\\-184.6748\\187\\62.22377\\-185.0801\\187\\58.31752\\-188.8622\\187\\56.3644\\-189.5919\\187\\54.41127\\-189.6484\\187\\50.50502\\-189.6484\\187"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002207"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "666"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-189.0295\\189\\46.59877\\-187.8343\\189\\44.64565\\-187.0304\\189\\41.67872\\-184.0365\\189\\40.53996\\-182.0834\\189\\40.40288\\-180.1303\\189\\37.54788\\-178.1771\\189\\37.53844\\-176.224\\189\\39.51595\\-174.2709\\189\\40.5277\\-172.3178\\189\\40.53996\\-170.3646\\189\\41.74321\\-168.4115\\189\\44.64565\\-165.5888\\189\\46.59877\\-164.7758\\189\\48.5519\\-163.7494\\189\\52.45815\\-162.9489\\189\\54.41127\\-162.8227\\189\\56.3644\\-162.9987\\189\\58.31752\\-163.6907\\189\\62.22377\\-165.627\\189\\65.02587\\-168.4115\\189\\65.61634\\-170.3646\\189\\65.64175\\-176.224\\189\\66.96918\\-178.1771\\189\\67.53693\\-180.1303\\189\\67.60949\\-182.0834\\189\\68.40867\\-184.0365\\189\\68.08315\\-184.4516\\189\\66.13003\\-185.5978\\189\\64.1769\\-185.1851\\189\\62.4352\\-185.9896\\189\\60.27065\\-187.2188\\189\\58.31752\\-188.8721\\189\\56.3644\\-189.5919\\189\\54.41127\\-189.6484\\189\\50.50502\\-189.6484\\189"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002206"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "667"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.6803\\191\\44.64565\\-187.0304\\191\\41.67872\\-184.0365\\191\\40.53996\\-182.0834\\191\\39.50197\\-180.1303\\191\\37.12808\\-178.1771\\191\\37.76254\\-176.224\\191\\39.67188\\-174.2709\\191\\40.5156\\-172.3178\\191\\40.53996\\-170.3646\\191\\41.74321\\-168.4115\\191\\44.64565\\-165.549\\191\\48.5519\\-163.6892\\191\\50.50502\\-163.0688\\191\\52.45815\\-162.8227\\191\\54.41127\\-162.8561\\191\\56.3644\\-163.4799\\191\\58.31752\\-163.9356\\191\\62.22377\\-165.6689\\191\\64.94894\\-168.4115\\191\\65.54193\\-170.3646\\191\\65.63318\\-172.3178\\191\\65.63318\\-176.224\\191\\67.26247\\-180.1303\\191\\67.56757\\-182.0834\\191\\67.59119\\-184.0365\\191\\66.13003\\-185.1283\\191\\64.1769\\-184.8189\\191\\63.19555\\-185.9896\\191\\62.22377\\-186.8949\\191\\60.27065\\-187.546\\191\\58.31752\\-188.8771\\191\\56.3644\\-189.5919\\191\\54.41127\\-189.6484\\191\\50.50502\\-189.6484\\191\\48.5519\\-189.311\\191"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002205"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "38"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "668"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "46.59877\\-188.9528\\193\\42.69252\\-185.2227\\193\\41.61658\\-184.0365\\193\\40.37076\\-182.0834\\193\\37.59769\\-180.1303\\193\\37.61729\\-178.1771\\193\\38.13699\\-176.224\\193\\39.64135\\-174.2709\\193\\40.35997\\-172.3178\\193\\40.53996\\-170.3646\\193\\41.74321\\-168.4115\\193\\44.64565\\-165.549\\193\\46.90486\\-164.5053\\193\\48.5519\\-163.9055\\193\\52.45815\\-162.9707\\193\\54.41127\\-163.0079\\193\\56.3644\\-163.6831\\193\\60.27065\\-165.3951\\193\\62.22377\\-166.1654\\193\\64.21446\\-168.4115\\193\\65.2738\\-170.3646\\193\\65.63318\\-172.3178\\193\\65.63318\\-176.224\\193\\65.74309\\-178.1771\\193\\67.01652\\-180.1303\\193\\67.2901\\-182.0834\\193\\66.47246\\-184.0365\\193\\66.13003\\-184.2544\\193\\64.1769\\-183.6473\\193\\63.83038\\-184.0365\\193\\63.20894\\-185.9896\\193\\62.22377\\-186.9662\\193\\60.27065\\-187.8343\\193\\58.31752\\-188.9428\\193\\56.3644\\-189.6029\\193\\54.41127\\-189.6602\\193\\50.50502\\-189.6484\\193\\48.5519\\-189.5391\\193"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002204"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "669"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "52.45815\\-190.0501\\195\\48.5519\\-189.6368\\195\\46.59877\\-189.0482\\195\\44.64565\\-187.4898\\195\\42.69252\\-186.5756\\195\\42.10992\\-185.9896\\195\\41.19238\\-184.0365\\195\\39.74195\\-182.0834\\195\\37.66954\\-180.1303\\195\\38.04292\\-178.1771\\195\\38.56248\\-176.224\\195\\39.36358\\-174.2709\\195\\39.85867\\-172.3178\\195\\40.53996\\-170.3646\\195\\41.74321\\-168.4115\\195\\44.64565\\-165.549\\195\\46.59877\\-164.6539\\195\\48.5519\\-164.4677\\195\\50.50502\\-163.8982\\195\\52.45815\\-163.4297\\195\\54.41127\\-163.4841\\195\\56.3644\\-163.967\\195\\57.89225\\-164.5053\\195\\60.27065\\-165.6105\\195\\62.22377\\-167.2618\\195\\65.08095\\-170.3646\\195\\65.62471\\-172.3178\\195\\65.63318\\-178.1771\\195\\66.32946\\-180.1303\\195\\65.51115\\-182.0834\\195\\63.89507\\-184.0365\\195\\63.19609\\-185.9896\\195\\62.22377\\-186.9662\\195\\60.27065\\-188.5815\\195\\56.3644\\-189.8011\\195\\54.41127\\-190.0489\\195"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002203"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "670"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-190.6548\\197\\48.5519\\-189.8583\\197\\46.59877\\-189.334\\197\\44.64565\\-188.6403\\197\\42.69252\\-187.0058\\197\\41.69875\\-185.9896\\197\\39.57973\\-182.0834\\197\\38.09084\\-180.1303\\197\\38.56248\\-178.1771\\197\\38.83846\\-174.2709\\197\\39.68302\\-172.3178\\197\\40.35754\\-170.3646\\197\\41.74321\\-168.4115\\197\\44.64565\\-165.549\\197\\46.59877\\-164.6539\\197\\48.5519\\-164.6273\\197\\50.50502\\-164.4677\\197\\52.45815\\-163.5333\\197\\54.41127\\-163.5923\\197\\56.3644\\-164.2815\\197\\58.31752\\-164.6923\\197\\60.27065\\-165.6401\\197\\63.10777\\-168.4115\\197\\64.95087\\-170.3646\\197\\65.54516\\-172.3178\\197\\65.63318\\-174.2709\\197\\65.63318\\-178.1771\\197\\65.69534\\-180.1303\\197\\65.3684\\-182.0834\\197\\64.84344\\-184.0365\\197\\63.23032\\-185.9896\\197\\62.22377\\-187.0877\\197\\60.27065\\-188.91\\197\\58.31752\\-189.5089\\197\\56.3644\\-190.5089\\197\\54.41127\\-191.0488\\197\\52.45815\\-191.065\\197"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002202"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "36"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "671"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "48.5519\\-190.4981\\199\\46.59877\\-189.4705\\199\\44.64565\\-188.861\\199\\41.66076\\-185.9896\\199\\40.50368\\-184.0365\\199\\39.68146\\-182.0834\\199\\38.62468\\-180.1303\\199\\38.69153\\-178.1771\\199\\38.69153\\-174.2709\\199\\39.33249\\-172.3178\\199\\39.85957\\-170.3646\\199\\41.74321\\-168.4115\\199\\44.64565\\-165.597\\199\\46.59877\\-164.8329\\199\\48.5519\\-164.6273\\199\\50.50502\\-164.6273\\199\\52.45815\\-163.6144\\199\\54.41127\\-163.4428\\199\\56.3644\\-163.8292\\199\\57.992\\-164.5053\\199\\60.27065\\-165.6453\\199\\63.00404\\-168.4115\\199\\64.21446\\-170.3646\\199\\65.20064\\-172.3178\\199\\65.48783\\-174.2709\\199\\65.63318\\-178.1771\\199\\65.48069\\-182.0834\\199\\65.15782\\-184.0365\\199\\63.39841\\-185.9896\\199\\62.22377\\-187.7558\\199\\60.27065\\-189.172\\199\\58.31752\\-189.6254\\199\\56.3644\\-190.6761\\199\\54.41127\\-191.2485\\199\\52.45815\\-191.3033\\199\\50.50502\\-191.1115\\199"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002201"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "37"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "672"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "50.50502\\-190.3872\\201\\48.70726\\-189.8959\\201\\46.59877\\-188.8312\\201\\44.64565\\-187.9505\\201\\42.69252\\-186.6921\\201\\42.00614\\-185.9896\\201\\41.1463\\-184.0365\\201\\40.7394\\-183.6093\\201\\40.03379\\-182.0834\\201\\39.332\\-180.1303\\201\\39.23771\\-176.224\\201\\39.13399\\-174.2709\\201\\39.1633\\-172.3178\\201\\39.9486\\-170.3646\\201\\42.69252\\-167.777\\201\\44.64565\\-166.2227\\201\\48.5519\\-165.1889\\201\\50.50502\\-165.1898\\201\\52.45815\\-164.3058\\201\\54.41127\\-163.9916\\201\\56.3644\\-164.4245\\201\\60.27065\\-166.009\\201\\60.71999\\-166.4584\\201\\62.22377\\-168.4833\\201\\63.01346\\-170.3646\\201\\64.1769\\-172.3358\\201\\64.77061\\-174.2709\\201\\65.24287\\-178.1771\\201\\65.01001\\-180.1303\\201\\65.3684\\-184.0365\\201\\64.1769\\-185.6328\\201\\62.22377\\-187.0156\\201\\60.27065\\-188.7301\\201\\58.31752\\-189.1453\\201\\56.3644\\-189.7105\\201\\54.41127\\-190.3962\\201\\52.45815\\-190.4597\\201"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002200"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "10"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "673"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "40.7394\\-174.3062\\203\\40.02677\\-172.3178\\203\\40.7394\\-171.1511\\203\\42.69252\\-169.7956\\203\\44.64565\\-169.9335\\203\\45.13897\\-170.3646\\203\\46.46356\\-172.3178\\203\\46.32986\\-174.2709\\203\\44.64565\\-175.534\\203\\42.69252\\-175.4795\\203"
-                     }
-                  },
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002200"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "CLOSED_PLANAR"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "8"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "674"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "62.22377\\-185.221\\203\\61.20846\\-184.0365\\203\\61.70231\\-182.0834\\203\\62.22377\\-181.5906\\203\\64.1769\\-181.8031\\203\\64.4192\\-182.0834\\203\\65.25975\\-184.0365\\203\\64.1769\\-185.397\\203"
-                     }
-                  }
-               ]
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "7"
-            }
-         },
-         {
-            "3006,002a" : {
-               "Name" : "ROIDisplayColor",
-               "Type" : "String",
-               "Value" : "255\\255\\0"
-            },
-            "3006,0040" : {
-               "Name" : "ContourSequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002301"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "POINT"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "1"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "0"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "-0.4882813\\-206.6055\\1"
-                     }
-                  }
-               ]
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "8"
-            }
-         },
-         {
-            "3006,002a" : {
-               "Name" : "ROIDisplayColor",
-               "Type" : "String",
-               "Value" : "255\\0\\0"
-            },
-            "3006,0040" : {
-               "Name" : "ContourSequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "3006,0016" : {
-                        "Name" : "ContourImageSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "0008,1150" : {
-                                 "Name" : "ReferencedSOPClassUID",
-                                 "Type" : "String",
-                                 "Value" : "1.2.840.10008.5.1.4.1.1.2"
-                              },
-                              "0008,1155" : {
-                                 "Name" : "ReferencedSOPInstanceUID",
-                                 "Type" : "String",
-                                 "Value" : "1.3.12.2.1107.5.1.4.66930.30000018062412550879500002318"
-                              }
-                           }
-                        ]
-                     },
-                     "3006,0042" : {
-                        "Name" : "ContourGeometricType",
-                        "Type" : "String",
-                        "Value" : "POINT"
-                     },
-                     "3006,0046" : {
-                        "Name" : "NumberOfContourPoints",
-                        "Type" : "String",
-                        "Value" : "1"
-                     },
-                     "3006,0048" : {
-                        "Name" : "ContourNumber",
-                        "Type" : "String",
-                        "Value" : "0"
-                     },
-                     "3006,0050" : {
-                        "Name" : "ContourData",
-                        "Type" : "String",
-                        "Value" : "0.6\\-180.9\\-33"
-                     }
-                  }
-               ]
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "9"
-            }
-         }
-      ]
-   },
-   "3006,0080" : {
-      "Name" : "RTROIObservationsSequence",
-      "Type" : "Sequence",
-      "Value" : [
-         {
-            "3006,0082" : {
-               "Name" : "ObservationNumber",
-               "Type" : "String",
-               "Value" : "1"
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "1"
-            },
-            "3006,0085" : {
-               "Name" : "ROIObservationLabel",
-               "Type" : "String",
-               "Value" : "External"
-            },
-            "3006,00a4" : {
-               "Name" : "RTROIInterpretedType",
-               "Type" : "String",
-               "Value" : "EXTERNAL"
-            }
-         },
-         {
-            "3006,0082" : {
-               "Name" : "ObservationNumber",
-               "Type" : "String",
-               "Value" : "2"
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "2"
-            },
-            "3006,0085" : {
-               "Name" : "ROIObservationLabel",
-               "Type" : "String",
-               "Value" : "CTV"
-            },
-            "3006,00a4" : {
-               "Name" : "RTROIInterpretedType",
-               "Type" : "String",
-               "Value" : "CTV"
-            }
-         },
-         {
-            "3006,0082" : {
-               "Name" : "ObservationNumber",
-               "Type" : "String",
-               "Value" : "3"
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "3"
-            },
-            "3006,0085" : {
-               "Name" : "ROIObservationLabel",
-               "Type" : "String",
-               "Value" : "PTV"
-            },
-            "3006,00a4" : {
-               "Name" : "RTROIInterpretedType",
-               "Type" : "String",
-               "Value" : "PTV"
-            }
-         },
-         {
-            "3006,0082" : {
-               "Name" : "ObservationNumber",
-               "Type" : "String",
-               "Value" : "4"
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "4"
-            },
-            "3006,0085" : {
-               "Name" : "ROIObservationLabel",
-               "Type" : "String",
-               "Value" : "PTV Eval"
-            },
-            "3006,00a4" : {
-               "Name" : "RTROIInterpretedType",
-               "Type" : "String",
-               "Value" : "PTV"
-            }
-         },
-         {
-            "3006,0082" : {
-               "Name" : "ObservationNumber",
-               "Type" : "String",
-               "Value" : "5"
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "5"
-            },
-            "3006,0085" : {
-               "Name" : "ROIObservationLabel",
-               "Type" : "String",
-               "Value" : "Bladder"
-            },
-            "3006,00a4" : {
-               "Name" : "RTROIInterpretedType",
-               "Type" : "String",
-               "Value" : "ORGAN"
-            }
-         },
-         {
-            "3006,0082" : {
-               "Name" : "ObservationNumber",
-               "Type" : "String",
-               "Value" : "6"
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "6"
-            },
-            "3006,0085" : {
-               "Name" : "ROIObservationLabel",
-               "Type" : "String",
-               "Value" : "Rectum"
-            },
-            "3006,00a4" : {
-               "Name" : "RTROIInterpretedType",
-               "Type" : "String",
-               "Value" : "ORGAN"
-            }
-         },
-         {
-            "3006,0082" : {
-               "Name" : "ObservationNumber",
-               "Type" : "String",
-               "Value" : "7"
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "7"
-            },
-            "3006,0085" : {
-               "Name" : "ROIObservationLabel",
-               "Type" : "String",
-               "Value" : "Air Override"
-            },
-            "3006,00a4" : {
-               "Name" : "RTROIInterpretedType",
-               "Type" : "String",
-               "Value" : "NONE"
-            },
-            "3006,00b0" : {
-               "Name" : "ROIPhysicalPropertiesSequence",
-               "Type" : "Sequence",
-               "Value" : [
-                  {
-                     "3006,00b2" : {
-                        "Name" : "ROIPhysicalProperty",
-                        "Type" : "String",
-                        "Value" : "REL_MASS_DENSITY"
-                     },
-                     "3006,00b4" : {
-                        "Name" : "ROIPhysicalPropertyValue",
-                        "Type" : "String",
-                        "Value" : "1"
-                     }
-                  },
-                  {
-                     "3006,00b2" : {
-                        "Name" : "ROIPhysicalProperty",
-                        "Type" : "String",
-                        "Value" : "REL_ELEC_DENSITY"
-                     },
-                     "3006,00b4" : {
-                        "Name" : "ROIPhysicalPropertyValue",
-                        "Type" : "String",
-                        "Value" : "1.000148"
-                     }
-                  },
-                  {
-                     "3006,00b2" : {
-                        "Name" : "ROIPhysicalProperty",
-                        "Type" : "String",
-                        "Value" : "EFFECTIVE_Z"
-                     },
-                     "3006,00b4" : {
-                        "Name" : "ROIPhysicalPropertyValue",
-                        "Type" : "String",
-                        "Value" : "6.600049"
-                     }
-                  },
-                  {
-                     "3006,00b2" : {
-                        "Name" : "ROIPhysicalProperty",
-                        "Type" : "String",
-                        "Value" : "EFF_Z_PER_A"
-                     },
-                     "3006,00b4" : {
-                        "Name" : "ROIPhysicalPropertyValue",
-                        "Type" : "String",
-                        "Value" : "0.5550822"
-                     }
-                  },
-                  {
-                     "3006,00b2" : {
-                        "Name" : "ROIPhysicalProperty",
-                        "Type" : "String",
-                        "Value" : "MEAN_EXCI_ENERGY"
-                     },
-                     "3006,00b4" : {
-                        "Name" : "ROIPhysicalPropertyValue",
-                        "Type" : "String",
-                        "Value" : "75"
-                     }
-                  },
-                  {
-                     "3006,00b2" : {
-                        "Name" : "ROIPhysicalProperty",
-                        "Type" : "String",
-                        "Value" : "ELEM_FRACTION"
-                     },
-                     "3006,00b4" : {
-                        "Name" : "ROIPhysicalPropertyValue",
-                        "Type" : "String",
-                        "Value" : "0"
-                     },
-                     "3006,00b6" : {
-                        "Name" : "ROIElementalCompositionSequence",
-                        "Type" : "Sequence",
-                        "Value" : [
-                           {
-                              "3006,00b7" : {
-                                 "Name" : "ROIElementalCompositionAtomicNumber",
-                                 "Type" : "String",
-                                 "Value" : "1"
-                              },
-                              "3006,00b8" : {
-                                 "Name" : "ROIElementalCompositionAtomicMassFraction",
-                                 "Type" : "String",
-                                 "Value" : "0.111893997"
-                              }
-                           },
-                           {
-                              "3006,00b7" : {
-                                 "Name" : "ROIElementalCompositionAtomicNumber",
-                                 "Type" : "String",
-                                 "Value" : "8"
-                              },
-                              "3006,00b8" : {
-                                 "Name" : "ROIElementalCompositionAtomicMassFraction",
-                                 "Type" : "String",
-                                 "Value" : "0.888105989"
-                              }
-                           }
-                        ]
-                     }
-                  }
-               ]
-            },
-            "300a,00e1" : {
-               "Name" : "MaterialID",
-               "Type" : "String",
-               "Value" : "Water"
-            }
-         },
-         {
-            "3006,0082" : {
-               "Name" : "ObservationNumber",
-               "Type" : "String",
-               "Value" : "8"
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "8"
-            },
-            "3006,0085" : {
-               "Name" : "ROIObservationLabel",
-               "Type" : "String",
-               "Value" : "Localization Poi"
-            },
-            "3006,00a4" : {
-               "Name" : "RTROIInterpretedType",
-               "Type" : "String",
-               "Value" : "MARKER"
-            }
-         },
-         {
-            "3006,0082" : {
-               "Name" : "ObservationNumber",
-               "Type" : "String",
-               "Value" : "9"
-            },
-            "3006,0084" : {
-               "Name" : "ReferencedROINumber",
-               "Type" : "String",
-               "Value" : "9"
-            },
-            "3006,0085" : {
-               "Name" : "ROIObservationLabel",
-               "Type" : "String",
-               "Value" : "Isocenter"
-            },
-            "3006,00a4" : {
-               "Name" : "RTROIInterpretedType",
-               "Type" : "String",
-               "Value" : "ISOCENTER"
-            }
-         }
-      ]
-   },
-   "300e,0002" : {
-      "Name" : "ApprovalStatus",
-      "Type" : "String",
-      "Value" : "APPROVED"
-   },
-   "300e,0004" : {
-      "Name" : "ReviewDate",
-      "Type" : "String",
-      "Value" : "20181204"
-   },
-   "300e,0005" : {
-      "Name" : "ReviewTime",
-      "Type" : "String",
-      "Value" : "115323"
-   },
-   "300e,0008" : {
-      "Name" : "ReviewerName",
-      "Type" : "String",
-      "Value" : "DSNET_marc.blakey"
-   }
-}
--- a/UnitTestsSources/GenericToolboxTests.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4251 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "../Framework/Toolbox/GenericToolbox.h"
-
-#include <boost/date_time/posix_time/posix_time.hpp>
-#include <boost/lexical_cast.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include <gtest/gtest.h>
-#include <stdint.h>
-#include <cmath>
-
-TEST(GenericToolbox, TestLegitDoubleString)
-{
-  using OrthancStone::GenericToolbox::LegitDoubleString;
-
-  EXPECT_TRUE(LegitDoubleString("12.34"));
-  EXPECT_TRUE(LegitDoubleString("1234"));
-  EXPECT_TRUE(LegitDoubleString(".1234"));
-  EXPECT_TRUE(LegitDoubleString("1234."));
-  EXPECT_TRUE(LegitDoubleString("0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011234"));
-  EXPECT_TRUE(LegitDoubleString("000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000011234"));
-  EXPECT_TRUE(LegitDoubleString("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112.34"));
-  EXPECT_TRUE(LegitDoubleString("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011234."));
-  EXPECT_TRUE(LegitDoubleString("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001123456"));
-  EXPECT_TRUE(LegitDoubleString("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001123456000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011234565664565623456"));
-  EXPECT_TRUE(LegitDoubleString("1234."));
-  EXPECT_TRUE(LegitDoubleString(".0123"));
-  EXPECT_TRUE(LegitDoubleString(".123"));
-  EXPECT_TRUE(LegitDoubleString(".5"));
-  EXPECT_TRUE(LegitDoubleString("."));
-  EXPECT_TRUE(LegitDoubleString(""));
-  EXPECT_TRUE(LegitDoubleString("0."));
-  EXPECT_TRUE(LegitDoubleString(".0"));
-
-  EXPECT_TRUE(LegitDoubleString("1e-15"));
-  EXPECT_TRUE(LegitDoubleString("1E-15"));
-  EXPECT_TRUE(LegitDoubleString("0.31E-15"));
-  EXPECT_TRUE(LegitDoubleString(".0031E-15"));
-  EXPECT_TRUE(LegitDoubleString("1e-15"));
-  EXPECT_TRUE(LegitDoubleString("1E015"));
-  EXPECT_TRUE(LegitDoubleString("0.31E015"));
-
-
-  EXPECT_FALSE(LegitDoubleString(".5f"));
-  EXPECT_FALSE(LegitDoubleString("\n.0031E015"));
-  EXPECT_FALSE(LegitDoubleString(".05f"));
-  EXPECT_FALSE(LegitDoubleString(" 1 2 "));
-  EXPECT_FALSE(LegitDoubleString(" 0.12\t"));
-  EXPECT_FALSE(LegitDoubleString(" 0.12"));
-  EXPECT_FALSE(LegitDoubleString("0.12\t"));
-  EXPECT_FALSE(LegitDoubleString("12\t"));
-  EXPECT_FALSE(LegitDoubleString(".01 23"));
-  EXPECT_FALSE(LegitDoubleString(". 123"));
-  EXPECT_FALSE(LegitDoubleString(".5 "));
-  EXPECT_FALSE(LegitDoubleString(" ."));
-  EXPECT_FALSE(LegitDoubleString("\n0."));
-}
-
-TEST(GenericToolbox, TestLegitIntegerString)
-{
-  using OrthancStone::GenericToolbox::LegitIntegerString;
-
-  EXPECT_TRUE(LegitIntegerString("1234"));
-  EXPECT_TRUE(LegitIntegerString("234"));
-  EXPECT_TRUE(LegitIntegerString("01234"));
-  EXPECT_TRUE(LegitIntegerString("12340"));
-  EXPECT_TRUE(LegitIntegerString("0000000000000011234"));
-  EXPECT_TRUE(LegitIntegerString("00000000000000011234"));
-  EXPECT_TRUE(LegitIntegerString("00000000000011234"));
-  EXPECT_TRUE(LegitIntegerString("112340000000000010"));
-  EXPECT_TRUE(LegitIntegerString("0000000000001123456"));
-  EXPECT_TRUE(LegitIntegerString("000000000000112345604565665623456"));
-  EXPECT_TRUE(LegitIntegerString(""));
-  EXPECT_TRUE(LegitIntegerString("0"));
-  EXPECT_TRUE(LegitIntegerString("00000"));
-
-  EXPECT_FALSE(LegitIntegerString(".5f"));
-  EXPECT_FALSE(LegitIntegerString("1e-15"));
-  EXPECT_FALSE(LegitIntegerString("1E-15"));
-  EXPECT_FALSE(LegitIntegerString("0.31E-15"));
-  EXPECT_FALSE(LegitIntegerString(".0031E-15"));
-  EXPECT_FALSE(LegitIntegerString("1e-15"));
-  EXPECT_FALSE(LegitIntegerString("1E015"));
-  EXPECT_FALSE(LegitIntegerString("0.31E015"));
-  EXPECT_FALSE(LegitIntegerString("\n.0031E015"));
-  EXPECT_FALSE(LegitIntegerString(".05f"));
-  EXPECT_FALSE(LegitIntegerString(" 1 2 "));
-  EXPECT_FALSE(LegitIntegerString(" 0.12\t"));
-  EXPECT_FALSE(LegitIntegerString(" 0.12"));
-  EXPECT_FALSE(LegitIntegerString("0.12\t"));
-  EXPECT_FALSE(LegitIntegerString("12\t"));
-  EXPECT_FALSE(LegitIntegerString(".01 23"));
-  EXPECT_FALSE(LegitIntegerString(". 123"));
-  EXPECT_FALSE(LegitIntegerString(".5 "));
-  EXPECT_FALSE(LegitIntegerString(" ."));
-  EXPECT_FALSE(LegitIntegerString("\n0."));
-}
-
-TEST(GenericToolbox, TestStringToDouble)
-{
-  using OrthancStone::GenericToolbox::StringToDouble;
-
-  const double TOLERANCE = 0.00000000000001;
-  double r = 0.0;
-  bool ok = StringToDouble(r, "0.0001");
-  EXPECT_TRUE(ok);
-  EXPECT_NEAR(0.0001, r, TOLERANCE);
-
-  {
-    bool ok = StringToDouble(r, "0.0001");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.0001, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.50217817069333900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.50217817069333900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.96770274105399000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.96770274105399000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.49521088758962000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.49521088758962000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.06201839227379000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.06201839227379000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.33360671999703000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.33360671999703000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.07639304839166000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.07639304839166000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.19287806240687400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.19287806240687400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.44207082838626000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.44207082838626000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.84619708036551800000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.84619708036551800000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.58091726580509000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.58091726580509000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.18073661859763000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.18073661859763000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.33045549786387000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.33045549786387000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.00272400249168000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.00272400249168000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.95337715877137000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.95337715877137000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "8.95930523708542000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(8.95930523708542000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.78847681371515000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.78847681371515000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.23601540702684000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.23601540702684000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.40676557671367000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.40676557671367000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.36110595246212700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.36110595246212700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.10430292945232000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.10430292945232000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.34892053003478100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.34892053003478100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.86871791690589000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.86871791690589000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.23477571361979100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.23477571361979100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.17723077954105000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.17723077954105000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.55533339430731000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.55533339430731000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.39193581722996000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.39193581722996000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.98290538242799000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.98290538242799000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.39701448187652000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.39701448187652000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.97546141973594000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.97546141973594000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.33870401451186000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.33870401451186000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.15061799435527000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.15061799435527000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.78705704115137000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.78705704115137000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.56210637202493000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.56210637202493000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-8.86139731673717000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-8.86139731673717000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.63169336137189000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.63169336137189000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.93978481744645000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.93978481744645000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.49952444717512000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.49952444717512000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.32659301981935000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.32659301981935000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.59514994228045000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.59514994228045000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.66422938111626000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.66422938111626000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.70431239624531000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.70431239624531000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.22698147029468000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.22698147029468000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.90761005965631200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.90761005965631200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.43368952065867000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.43368952065867000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.79510450171595000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.79510450171595000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.94081596072268000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.94081596072268000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.42019476309409300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.42019476309409300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.70663631642677000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.70663631642677000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.06601188243267550000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.06601188243267550000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.79928310771909400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.79928310771909400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.65577800860582000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.65577800860582000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.62187216187698000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.62187216187698000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.95596656702613300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.95596656702613300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.14349841191783000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.14349841191783000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.23732575725115000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.23732575725115000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.02522229405373000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.02522229405373000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.43364697172459700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.43364697172459700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.39612114240613000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.39612114240613000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.87981321512563200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.87981321512563200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.47459557296809400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.47459557296809400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.10534326849558000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.10534326849558000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.48420825457170000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.48420825457170000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.98994851457562000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.98994851457562000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.18550683277018200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.18550683277018200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.79951199056989300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.79951199056989300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.92573951347502000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.92573951347502000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.46138476058529000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.46138476058529000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.34518431607109000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.34518431607109000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.33372656820168000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.33372656820168000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.16931283159188600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.16931283159188600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.97223922802124000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.97223922802124000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.48394627491386000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.48394627491386000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.88861737945960600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.88861737945960600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.85676190081840000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.85676190081840000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.54459170417494000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.54459170417494000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.16447870264995300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.16447870264995300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.35795535411029000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.35795535411029000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.29431172135530300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.29431172135530300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.96558311276619000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.96558311276619000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.81681460880669000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.81681460880669000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.20509941503951000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.20509941503951000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.72765905661257000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.72765905661257000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.48788237089759900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.48788237089759900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.24947907141902000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.24947907141902000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.59005387432649000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.59005387432649000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.30370570926522000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.30370570926522000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.73638792046556000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.73638792046556000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.87789934199453800000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.87789934199453800000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.51989255137937000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.51989255137937000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.76305470679095000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.76305470679095000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.86920962997342000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.86920962997342000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.91313411328065000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.91313411328065000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.73463683758381000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.73463683758381000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.84273889473222500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.84273889473222500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.87403925546477700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.87403925546477700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.36964126011414000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.36964126011414000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.02726746648694000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.02726746648694000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.50557053097483000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.50557053097483000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.56453106035648000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.56453106035648000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.61890516636808000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.61890516636808000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.37767835277405000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.37767835277405000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.90511255527429100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.90511255527429100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.05929345122920000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.05929345122920000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.21311454144036000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.21311454144036000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-7.79062987304713000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-7.79062987304713000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.21365525338096000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.21365525338096000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.28348152906416000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.28348152906416000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.06610409505261000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.06610409505261000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.35302095923550200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.35302095923550200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.90818370281786000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.90818370281786000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.32125632829404000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.32125632829404000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.19461589112926800000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.19461589112926800000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.13206147532649300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.13206147532649300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.90445975568758000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.90445975568758000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.09055301456874000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.09055301456874000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.94747584830211900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.94747584830211900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.87479371073786000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.87479371073786000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.77693922561847000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.77693922561847000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.43857452366099000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.43857452366099000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.32571155407419000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.32571155407419000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.02598140411007480000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.02598140411007480000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.63213858956142000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.63213858956142000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.87199046737281000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.87199046737281000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.51485641768478000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.51485641768478000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.64286402800302700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.64286402800302700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.47677130142230000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.47677130142230000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.39498987162520000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.39498987162520000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.97846593865349600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.97846593865349600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.38696988049949000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.38696988049949000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.99716557343840900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.99716557343840900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.26983285318203300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.26983285318203300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.02818282704670500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.02818282704670500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.33995460770471000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.33995460770471000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.90961343273142000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.90961343273142000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.70545858631691000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.70545858631691000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.99837322296447000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.99837322296447000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.52931499785106000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.52931499785106000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.50600351005455000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.50600351005455000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.83191012798055900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.83191012798055900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.58090819604341000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.58090819604341000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.95182376827953000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.95182376827953000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.04199841193785000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.04199841193785000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.17938850513021000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.17938850513021000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.66797071567664000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.66797071567664000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.37221015583147000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.37221015583147000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.75673862000485000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.75673862000485000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.79003986824116500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.79003986824116500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.86020949016507000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.86020949016507000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.14082258481500000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.14082258481500000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.71685664840859000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.71685664840859000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.93998389083824300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.93998389083824300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.77244357996158000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.77244357996158000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.10595524850565900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.10595524850565900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.69799635213612000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.69799635213612000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.57971250175452400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.57971250175452400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.92766866933807100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.92766866933807100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.46991620588858000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.46991620588858000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.94569644123488000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.94569644123488000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.18859094010287000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.18859094010287000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.03213167005865000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.03213167005865000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "8.81754146434609000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(8.81754146434609000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.75897430327076600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.75897430327076600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.80047028975912000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.80047028975912000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.00529573224131364000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.00529573224131364000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.71024073322357000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.71024073322357000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.60642130185119000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.60642130185119000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.09793780927960000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.09793780927960000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.18560965637846000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.18560965637846000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.13078526893487000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.13078526893487000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.19951899215254000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.19951899215254000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.81885534502479000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.81885534502479000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.00480638980341000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.00480638980341000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.35315675289406200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.35315675289406200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.29812812014442000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.29812812014442000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.98878626408816000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.98878626408816000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.34644737073484000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.34644737073484000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.37478492823657000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.37478492823657000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.97205178784195000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.97205178784195000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.65165003646427000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.65165003646427000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.89236175545723000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.89236175545723000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.80366872242454000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.80366872242454000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "7.65465855719486000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(7.65465855719486000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.51455943741659600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.51455943741659600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.14337541345649000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.14337541345649000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.06909574569091000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.06909574569091000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.07698497525470000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.07698497525470000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.04223854975535000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.04223854975535000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.46422724459484000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.46422724459484000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.65888981424971000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.65888981424971000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-7.10193673069906000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-7.10193673069906000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.77638222509466500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.77638222509466500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.15543610545042000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.15543610545042000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.51787760900314000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.51787760900314000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.09022915694655000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.09022915694655000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.41861013154040000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.41861013154040000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.40227565288403000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.40227565288403000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.44321592617247400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.44321592617247400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.34090258417639000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.34090258417639000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.54291265629528700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.54291265629528700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.70700051509186000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.70700051509186000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-6.55072864947955000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-6.55072864947955000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.96741942560520000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.96741942560520000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.55202552301084000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.55202552301084000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.36133250863907300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.36133250863907300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.46513564511238000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.46513564511238000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.97424909475891000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.97424909475891000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.87005014400085000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.87005014400085000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.25552308785543000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.25552308785543000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.43365620710902500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.43365620710902500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.17392137573999000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.17392137573999000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.56870774575795000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.56870774575795000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.07449225479459900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.07449225479459900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.25905472211571000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.25905472211571000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.13708454690765000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.13708454690765000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.08223808231444500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.08223808231444500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.69624060459529000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.69624060459529000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.87232652840742000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.87232652840742000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.20739068103174300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.20739068103174300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.45449313279700600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.45449313279700600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.06604828436047000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.06604828436047000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.16603807756896700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.16603807756896700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "6.56288534361719000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(6.56288534361719000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.28481655900710000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.28481655900710000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.79412040010646300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.79412040010646300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.90088144503330000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.90088144503330000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.65278657648370200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.65278657648370200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.40305895338068000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.40305895338068000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.07193308249503000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.07193308249503000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.83752112822253600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.83752112822253600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.63174453257058400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.63174453257058400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.80163760021425000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.80163760021425000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.57922670044433000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.57922670044433000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "6.80309348037215000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(6.80309348037215000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.03658264005365000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.03658264005365000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "8.57714214650747000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(8.57714214650747000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.25657256359494300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.25657256359494300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.07218601388076000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.07218601388076000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.70300607815345600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.70300607815345600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.06822028770915030000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.06822028770915030000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.52253514473857300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.52253514473857300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.89211508282910000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.89211508282910000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.47331243043688000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.47331243043688000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.77190031720697000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.77190031720697000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.80704979593058400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.80704979593058400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.58398766715845000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.58398766715845000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.59532008540482000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.59532008540482000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.92824570343456000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.92824570343456000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.15232705272560400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.15232705272560400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.13670276871382500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.13670276871382500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.20063314286385000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.20063314286385000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.20390958339690000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.20390958339690000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.01999231401200000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.01999231401200000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.33696129476675000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.33696129476675000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.97472839619216000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.97472839619216000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.25935508044004000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.25935508044004000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.98737992668548000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.98737992668548000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.12647380973595000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.12647380973595000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.04573005673487000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.04573005673487000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.40131707240240000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.40131707240240000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.65350895248975000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.65350895248975000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.94344081509933000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.94344081509933000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.72697189247371000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.72697189247371000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-6.67990308483490000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-6.67990308483490000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.32343310660542000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.32343310660542000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.78517123090950000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.78517123090950000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.25849816293583000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.25849816293583000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.75396267700095000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.75396267700095000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.07647901824168000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.07647901824168000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.38047538070258000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.38047538070258000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.20758597742145100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.20758597742145100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.85537090667122100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.85537090667122100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.76805423797310000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.76805423797310000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.40449492713592000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.40449492713592000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.62167096457336000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.62167096457336000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.74002997550002000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.74002997550002000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.42443064164790400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.42443064164790400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.27951604455776900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.27951604455776900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.51579267322296100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.51579267322296100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.36457251883339000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.36457251883339000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.24583724281163800000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.24583724281163800000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.89377268220461400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.89377268220461400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.45674815825147000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.45674815825147000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.85885778179785000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.85885778179785000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.46665640857091000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.46665640857091000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.20955012166670000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.20955012166670000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.56901773371710000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.56901773371710000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.28236715260714000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.28236715260714000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.68701183150938000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.68701183150938000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.52491544332882000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.52491544332882000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.35369978756681100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.35369978756681100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.37511760913818000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.37511760913818000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.97143364160106000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.97143364160106000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.24559477959438200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.24559477959438200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.75423032204965000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.75423032204965000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.32370293533555300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.32370293533555300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.91057697616735300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.91057697616735300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.47061739750017000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.47061739750017000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.00584944044255000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.00584944044255000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.50109276836214000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.50109276836214000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.55007311077336000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.55007311077336000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "6.72362848947278000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(6.72362848947278000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.01151577930873910000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.01151577930873910000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.42911860719965600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.42911860719965600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.66111289816664900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.66111289816664900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.86619326895662000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.86619326895662000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.55732089555551800000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.55732089555551800000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.30341160871063000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.30341160871063000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.56416171751671000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.56416171751671000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.18594183907073900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.18594183907073900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.76842629255481000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.76842629255481000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.51401910241563500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.51401910241563500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.22475819701855600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.22475819701855600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.52647532265208000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.52647532265208000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.36302691626541400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.36302691626541400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.97344494357431000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.97344494357431000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.55983273528683000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.55983273528683000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.11831213859734000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.11831213859734000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.65912510665320000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.65912510665320000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.49382686162217300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.49382686162217300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.82681319206813000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.82681319206813000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.63990018376158400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.63990018376158400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.46190583889476000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.46190583889476000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.33778970852365000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.33778970852365000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.67479071577411000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.67479071577411000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.92524843393689500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.92524843393689500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.25880026429762000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.25880026429762000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.74489327613996700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.74489327613996700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.81221138965657700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.81221138965657700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.63922583575742000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.63922583575742000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.46277795175279000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.46277795175279000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.92701639727950000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.92701639727950000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.00608886511047000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.00608886511047000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.59692755566202000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.59692755566202000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.43660191582482000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.43660191582482000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.81340386111566000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.81340386111566000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.41381029424169000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.41381029424169000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.19067619994638000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.19067619994638000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.41344288416300500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.41344288416300500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.19449050806631000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.19449050806631000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.94346623486537000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.94346623486537000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.15222182306952000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.15222182306952000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.16597270635016000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.16597270635016000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.70800933434033500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.70800933434033500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.01520859362049000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.01520859362049000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.99808924291921000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.99808924291921000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.46413571523617000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.46413571523617000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.23372155013436100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.23372155013436100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.22220872747082200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.22220872747082200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.45231083327185000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.45231083327185000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.18629931302726700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.18629931302726700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.25902351261081000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.25902351261081000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.74979626491734000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.74979626491734000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.96938763187002300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.96938763187002300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.01957662295404000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.01957662295404000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.29052978268713000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.29052978268713000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.72223107008226000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.72223107008226000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.02075269473024000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.02075269473024000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.41254866425811000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.41254866425811000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.79485280000328000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.79485280000328000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.71346724218879000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.71346724218879000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.02769972220451300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.02769972220451300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.30840233811538300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.30840233811538300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.46998368658050000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.46998368658050000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.39027116095637000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.39027116095637000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.76287623175477000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.76287623175477000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.32254147772188000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.32254147772188000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.43476530791568300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.43476530791568300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.15293149279800000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.15293149279800000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.52187680632247000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.52187680632247000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.81464816227136000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.81464816227136000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.45410471462063000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.45410471462063000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.05770661428355000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.05770661428355000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.13365631051443000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.13365631051443000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.78752268413674000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.78752268413674000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.07653691039301000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.07653691039301000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.69590678743817200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.69590678743817200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.16750017237716000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.16750017237716000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.80454059859949500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.80454059859949500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.01080121519000000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.01080121519000000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-6.26823154211325000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-6.26823154211325000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.27168923945051000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.27168923945051000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.95882006177823000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.95882006177823000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.29782169884960000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.29782169884960000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.18868107998160000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.18868107998160000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.42221680213317000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.42221680213317000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.97658929351465000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.97658929351465000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.76786358453912000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.76786358453912000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.63996015852897000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.63996015852897000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.53048948235281000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.53048948235281000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.72713707173900000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.72713707173900000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.67678586641071000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.67678586641071000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.27938145860632000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.27938145860632000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.67198854485259000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.67198854485259000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.08448300379640000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.08448300379640000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.89200760812645600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.89200760812645600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.84610740591283000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.84610740591283000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.33520422865196000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.33520422865196000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.26977509689943300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.26977509689943300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.06556998317024000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.06556998317024000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.10187258099846900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.10187258099846900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.17925123727943000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.17925123727943000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.53744857107300000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.53744857107300000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.79170718052687000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.79170718052687000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.70094405912437000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.70094405912437000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.36090079790873000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.36090079790873000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.24214402582849600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.24214402582849600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.61857148054390100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.61857148054390100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.49681404951875000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.49681404951875000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.62901170744691000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.62901170744691000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.31812686057237000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.31812686057237000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.29232513324991000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.29232513324991000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.30415968616239000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.30415968616239000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.23085063327904200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.23085063327904200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.55328286749515200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.55328286749515200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.85987085857330000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.85987085857330000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.91580898949892000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.91580898949892000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.83451772893723400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.83451772893723400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "8.47663066417390000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(8.47663066417390000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.07750241770625000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.07750241770625000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.79888627452876900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.79888627452876900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.62390154942094000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.62390154942094000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.15344123017231000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.15344123017231000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.29946850732165400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.29946850732165400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.43195118421230900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.43195118421230900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.96541584823575200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.96541584823575200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.31046639376194000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.31046639376194000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.80868720295308000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.80868720295308000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.91875650345864000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.91875650345864000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.16383120358956700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.16383120358956700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.70602187714556100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.70602187714556100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.59908461641224000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.59908461641224000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.75777826959967000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.75777826959967000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "7.51297060665513000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(7.51297060665513000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.26428182282563100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.26428182282563100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.39790664337099000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.39790664337099000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.52727246472497000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.52727246472497000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.15622706860781000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.15622706860781000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.33838258813926000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.33838258813926000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.68209356689853000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.68209356689853000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.12950059731897000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.12950059731897000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.24366467557925000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.24366467557925000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.49620375847259000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.49620375847259000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.04336416841016000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.04336416841016000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.67258592218424000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.67258592218424000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.50983053528049600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.50983053528049600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.91671084717300400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.91671084717300400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-8.44023177630015000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-8.44023177630015000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.74048232685721000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.74048232685721000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.26893036021697000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.26893036021697000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.81851986861265000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.81851986861265000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.15033199581975000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.15033199581975000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.78498201393837000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.78498201393837000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.05287486584367510000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.05287486584367510000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.61135813076181000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.61135813076181000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.28026567889772000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.28026567889772000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.42191037602383000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.42191037602383000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.91926628714024000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.91926628714024000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.13695172353534000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.13695172353534000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.19234124167404000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.19234124167404000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.54749310279860000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.54749310279860000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.79683457995789900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.79683457995789900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.35976469553121900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.35976469553121900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.77036485893720200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.77036485893720200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.05245602278075000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.05245602278075000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.82693752156961000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.82693752156961000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.59176692084240000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.59176692084240000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.59390017044970000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.59390017044970000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.33597209441560000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.33597209441560000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.73223852215944000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.73223852215944000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.36562951036666300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.36562951036666300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.16083819415565000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.16083819415565000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.19457461912900000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.19457461912900000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.48993781857833000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.48993781857833000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.91089514047878000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.91089514047878000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.67713158365996000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.67713158365996000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.14929866451844800000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.14929866451844800000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.76110653286820000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.76110653286820000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.05937778946509720000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.05937778946509720000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.67737188304973000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.67737188304973000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.58425440578219000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.58425440578219000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.30491550374261000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.30491550374261000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.48379945880357000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.48379945880357000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.62987027701035800000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.62987027701035800000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.97181285150671000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.97181285150671000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.24881707556359700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.24881707556359700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.83925282156180000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.83925282156180000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.07567311295324000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.07567311295324000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.78919598870022000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.78919598870022000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.51240908161798000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.51240908161798000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.51275535534832000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.51275535534832000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.58920518726789000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.58920518726789000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.81944139206950000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.81944139206950000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.20584689863215000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.20584689863215000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.52387820278697400000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.52387820278697400000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.41030960929320000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.41030960929320000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.92103214885374000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.92103214885374000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.24231540245246000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.24231540245246000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.16908726665941100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.16908726665941100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.44589887686242000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.44589887686242000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.49069006371512000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.49069006371512000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.80650544937931100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.80650544937931100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.97976397104165000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.97976397104165000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.98766812819005000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.98766812819005000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.72989593663204100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.72989593663204100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.61947487048298000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.61947487048298000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.14305085135282200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.14305085135282200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.19625994631193500000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.19625994631193500000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.37918205114016000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.37918205114016000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "6.59599108171267000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(6.59599108171267000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.96455017519345000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.96455017519345000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.54659210340770000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.54659210340770000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.34333955584988000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.34333955584988000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.97945807230247000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.97945807230247000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.16309656911088000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.16309656911088000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.25046325751587000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.25046325751587000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.95513333613538000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.95513333613538000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.44180657712571200000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.44180657712571200000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.62068238736436000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.62068238736436000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.06550714914445000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.06550714914445000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.50821128944561000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.50821128944561000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.15508838007900000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.15508838007900000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.95233817795899000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.95233817795899000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.51496658163574000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.51496658163574000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.78333801715048000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.78333801715048000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.21314186040171000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.21314186040171000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.66527690284710800000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.66527690284710800000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.15441313415350000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.15441313415350000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.23491685110319000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.23491685110319000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.72724695951577000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.72724695951577000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.24050455306641300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.24050455306641300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.21656863480457000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.21656863480457000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.26488830552906000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.26488830552906000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "3.75588617365038000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(3.75588617365038000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.03323480544193850000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.03323480544193850000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.09120742547457650000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.09120742547457650000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-7.88263056036503000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-7.88263056036503000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.43816026309627000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.43816026309627000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-7.03193105607121000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-7.03193105607121000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.60611554369909000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.60611554369909000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-5.51585989717609000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-5.51585989717609000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.07820571638609000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.07820571638609000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.06101375865811000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.06101375865811000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.20736962161768000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.20736962161768000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.90243061828996000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.90243061828996000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.85299495975262000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.85299495975262000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.12934888152265000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.12934888152265000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.67072919212958000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.67072919212958000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.83114509924264900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.83114509924264900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.30250616100438000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.30250616100438000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.12093048302870000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.12093048302870000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.05552960660102000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.05552960660102000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.49292325032676000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.49292325032676000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.17400757029104000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.17400757029104000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.14267109660887000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.14267109660887000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.10546669054034000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.10546669054034000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.21371952871041700000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.21371952871041700000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "4.78156583044177000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(4.78156583044177000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.50472792044367000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.50472792044367000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.12605755507866600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.12605755507866600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.70371185139311000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.70371185139311000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.10053982101354000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.10053982101354000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.83624586947925000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.83624586947925000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.05046060224221000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.05046060224221000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.28157147555257100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.28157147555257100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.59637285322805000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.59637285322805000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.75470175557419100000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.75470175557419100000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.70838399472621000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.70838399472621000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.45654131621183000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.45654131621183000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.28443945581399000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.28443945581399000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.68823597183684000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.68823597183684000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.29650435341174000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.29650435341174000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.90134290476188000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.90134290476188000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.18487205108194000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.18487205108194000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.14778330708372000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.14778330708372000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.98574838531856000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.98574838531856000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.38116626593387000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.38116626593387000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.18109367323846900000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.18109367323846900000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.54919024558896000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.54919024558896000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-3.01819062231017000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-3.01819062231017000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.86141885135950000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.86141885135950000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.31984756442573800000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.31984756442573800000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.35256585949514000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.35256585949514000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-6.04254591090669000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-6.04254591090669000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.31151799331342300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.31151799331342300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.77556498660193000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.77556498660193000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "5.90371566906766000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(5.90371566906766000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.29825016398122000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.29825016398122000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.01456323654512000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.01456323654512000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-6.19305288625244000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-6.19305288625244000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.99509367627092600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.99509367627092600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.08519786419394440000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.08519786419394440000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.88317752752055000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.88317752752055000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "1.69592260047492000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(1.69592260047492000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.66260089028084000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.66260089028084000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.12882625389413000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.12882625389413000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.79536921500302000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.79536921500302000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-4.51399167357593000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-4.51399167357593000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-0.75817764527332300000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-0.75817764527332300000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-2.12821371262498000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-2.12821371262498000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "-1.08153732327358000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(-1.08153732327358000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "0.71608571781169600000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(0.71608571781169600000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.42004689052701000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.42004689052701000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.84542164846610000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.84542164846610000000, r, TOLERANCE);
-  }
-
-  {
-    bool ok = StringToDouble(r, "2.97822513569917000000");
-    EXPECT_TRUE(ok);
-    EXPECT_NEAR(2.97822513569917000000, r, TOLERANCE);
-  }
-}
-
-TEST(GenericToolbox, TestStringToDoubleHard)
-{
-  using OrthancStone::GenericToolbox::StringToDouble;
-  const double TOLERANCE = 0.00000000000001;
-
-  size_t i = 0;
-  const size_t COUNT = 125;
-  //const double FACTOR = 1.000000000171271211;
-  const double FACTOR = 1.71271211;
-  for (double b = DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
-  {
-    char txt[1024];
-#if defined(_MSC_VER)
-    sprintf_s(txt, "%.17f", b);
-#else
-    snprintf(txt, sizeof(txt) - 1, "%.17f", b);
-#endif
-    double r = 0.0;
-    bool ok = StringToDouble(r, txt);
-    
-#if 0
-    if (ok)
-    {
-      printf("OK for txt = \"%s\" and r = %.17f\n", txt, r);
-    }
-    else
-    {
-      printf("Not ok for txt = \"%s\" and r = %.17f\n", txt, r);
-      ok = StringToDouble(r, txt);
-    }
-#endif
-
-    EXPECT_TRUE(ok);
-
-#if 0
-    if (fabs(b - r) > TOLERANCE)
-    {
-      printf("fabs(b (%.17f) - r (%.17f)) ((%.17f))  > TOLERANCE (%.17f)\n", b, r, fabs(b-r), TOLERANCE);
-    }
-#endif
-    EXPECT_NEAR(b, r, TOLERANCE);
-  }
-}
-
-TEST(GenericToolbox, TestStringToDoubleHardNeg)
-{
-  using OrthancStone::GenericToolbox::StringToDouble;
-  const double TOLERANCE = 0.00000000000001;
-
-  size_t i = 0;
-  const size_t COUNT = 125;
-  //const double FACTOR = 1.000000000171271211;
-  const double FACTOR = 1.71271211;
-  for (double b = -1.0*DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
-  {
-    char txt[1024];
-#if defined(_MSC_VER)
-    sprintf_s(txt, "%.17f", b);
-#else
-    snprintf(txt, sizeof(txt) - 1, "%.17f", b);
-#endif
-    double r = 0.0;
-    bool ok = StringToDouble(r, txt);
-
-#if 0
-    if (ok)
-    {
-      printf("OK for txt = \"%s\" and r = %.17f\n", txt, r);
-    }
-    else
-    {
-      printf("Not ok for txt = \"%s\" and r = %.17f\n", txt, r);
-      ok = StringToDouble(r, txt);
-    }
-#endif
-
-    EXPECT_TRUE(ok);
-
-#if 0
-    if (fabs(b - r) > TOLERANCE)
-    {
-      printf("fabs(b (%.17f) - r (%.17f)) ((%.17f))  > TOLERANCE (%.17f)\n", b, r, fabs(b - r), TOLERANCE);
-    }
-#endif
-    EXPECT_NEAR(b, r, TOLERANCE);
-  }
-}
-
-static const size_t NUM_TIMINGS_CONVS = 1; // set to 2000 if you want to measure perfs;
-
-
-//4444444444444444$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
-
-TEST(GenericToolbox, TestStringToDoubleHardNeg_lexical_cast_vs_StringToDouble)
-{
-  using OrthancStone::GenericToolbox::StringToDouble;
-  const double TOLERANCE = 0.00000000000001;
-
-  double total_us_StringToDouble = 0.0;
-  double total_us_lexical_cast = 0.0;
-  int64_t numConversions = 0;
-
-  size_t i = 0;
-  const size_t COUNT = 125;
-  //const double FACTOR = 1.000000000171271211;
-  const double FACTOR = 1.71271211;
-  for (double b = -1.0 * DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
-  {
-    char txt[1024];
-#if defined(_MSC_VER)
-    sprintf_s(txt, "%.17f", b);
-#else
-    snprintf(txt, sizeof(txt) - 1, "%.17f", b);
-#endif
-    
-    
-    double r = 0.0;
-
-    bool ok = true;
-
-    {
-      boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();
-      for (size_t i = 0; i < NUM_TIMINGS_CONVS; ++i)
-      {
-        ok = StringToDouble(r, txt);
-      }
-      boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();
-      total_us_StringToDouble += (end - start).total_microseconds();
-    }
-
-    {
-      boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();
-      for (size_t i = 0; i < NUM_TIMINGS_CONVS; ++i)
-      {
-        try
-        {
-          r = boost::lexical_cast<double>(txt);
-          ok = true;
-        }
-        catch (boost::bad_lexical_cast& )
-        {
-          ok = false;
-        }
-      }
-      boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();
-      total_us_lexical_cast += (end - start).total_microseconds();
-    }
-    numConversions += NUM_TIMINGS_CONVS;
-
-#if 0
-    if (ok)
-    {
-      printf("OK for txt = \"%s\" and r = %.17f\n", txt, r);
-    }
-    else
-    {
-      printf("Not ok for txt = \"%s\" and r = %.17f\n", txt, r);
-      ok = StringToDouble(r, txt);
-    }
-#endif
-
-    EXPECT_TRUE(ok);
-
-#if 0
-    if (fabs(b - r) > TOLERANCE)
-    {
-      printf("fabs(b (%.17f) - r (%.17f)) ((%.17f))  > TOLERANCE (%.17f)\n", b, r, fabs(b - r), TOLERANCE);
-    }
-#endif
-    EXPECT_NEAR(b, r, TOLERANCE);
-  }
-  std::cout << "Total time (us) for " << numConversions 
-    << " conversions using StringToDouble (with NO scientific notation)      = " 
-    << static_cast<int64_t>(total_us_StringToDouble) << std::endl;
-  
-  std::cout << "Time per conversion using StringToDouble (ns) = " 
-    << (int64_t)( (total_us_StringToDouble * 1000) /((double)numConversions)) << std::endl;
-
-  std::cout << "Total time (us) for " << numConversions 
-    << " conversions using boost::lexical_cast (with NO scientific notation) = " 
-    << static_cast<int64_t>(total_us_lexical_cast) << std::endl;
-
-  std::cout << "Time per conversion using boost::lexical_cast (ns) = "
-    << (int64_t)( (total_us_lexical_cast * 1000) / ((double)numConversions)) << std::endl;
-
-  std::cout << "StringToDouble is " << (int)((total_us_lexical_cast / total_us_StringToDouble) + 0.5) << " times faster than boost::lexical_cast" << std::endl;
-
-}
-//4444444444444444$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
-
-
-TEST(GenericToolbox, TestStringToDoubleHardScientific)
-{
-  using OrthancStone::GenericToolbox::StringToDouble;
-  const double TOLERANCE = 0.00000000000001;
-
-  size_t i = 0;
-  const size_t COUNT = 125;
-  //const double FACTOR = 1.000000000171271211;
-  const double FACTOR = 1.71271211;
-  for (double b = DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
-  {
-
-    // the tolerance must be adapted depending on the exponent
-    double exponent = (b == 0) ? 0 : 1.0 + std::floor(std::log10(std::fabs(b)));
-    double actualTolerance = TOLERANCE * pow(10.0, exponent);
-
-    char txt[1024];
-#if defined(_MSC_VER)
-    sprintf_s(txt, "%.17e", b);
-#else
-    snprintf(txt, sizeof(txt) - 1, "%.17e", b);
-#endif
-    double r = 0.0;
-    bool ok = StringToDouble(r, txt);
-
-#if 0
-    if (ok)
-    {
-      printf("OK for txt = \"%s\" and r = %.17e\n", txt, r);
-    }
-    else
-    {
-      printf("Not ok for txt = \"%s\" and r = %.17e\n", txt, r);
-      ok = StringToDouble(r, txt);
-    }
-#endif
-
-    EXPECT_TRUE(ok);
-
-#if 0
-    if (fabs(b - r) > actualTolerance)
-    {
-      printf("NOK fabs(b (%.17f) - r (%.17f)) ((%.17f))  > actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
-      printf("NOK fabs(b (%.17e) - r (%.17e)) ((%.17e))  > actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
-      ok = StringToDouble(r, txt);
-    }
-    else
-    {
-      printf("OK  fabs(b (%.17f) - r (%.17f)) ((%.17f)) <= actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
-      printf("OK  fabs(b (%.17e) - r (%.17e)) ((%.17e)) <= actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
-    }
-#endif
-    EXPECT_NEAR(b, r, actualTolerance);
-  }
-}
-
-TEST(GenericToolbox, TestStringToDoubleHardNegScientific)
-{
-  using OrthancStone::GenericToolbox::StringToDouble;
-  const double TOLERANCE = 0.00000000000001;
-
-  size_t i = 0;
-  const size_t COUNT = 125;
-  //const double FACTOR = 1.000000000171271211;
-  const double FACTOR = 1.71271211;
-  for (double b = -1.0 * DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
-  {
-    // the tolerance must be adapted depending on the exponent
-    double exponent = (b == 0) ? 0 : 1.0 + std::floor(std::log10(std::fabs(b)));
-    double actualTolerance = TOLERANCE * pow(10.0, exponent);
-
-    char txt[1024];
-#if defined(_MSC_VER)
-    sprintf_s(txt, "%.17e", b);
-#else
-    snprintf(txt, sizeof(txt) - 1, "%.17e", b);
-#endif
-    double r = 0.0;
-    bool ok = StringToDouble(r, txt);
-
-#if 0
-    if (ok)
-    {
-      printf("OK for txt = \"%s\" and r = %.17e\n", txt, r);
-    }
-    else
-    {
-      printf("Not ok for txt = \"%s\" and r = %.17e\n", txt, r);
-      ok = StringToDouble(r, txt);
-    }
-#endif
-
-    EXPECT_TRUE(ok);
-
-#if 0
-    if (fabs(b - r) > actualTolerance)
-    {
-      printf("NOK fabs(b (%.17f) - r (%.17f)) ((%.17f))  > actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
-      printf("NOK fabs(b (%.17e) - r (%.17e)) ((%.17e))  > actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
-      ok = StringToDouble(r, txt);
-    }
-    else
-    {
-      printf("OK  fabs(b (%.17f) - r (%.17f)) ((%.17f)) <= actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
-      printf("OK  fabs(b (%.17e) - r (%.17e)) ((%.17e)) <= actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
-    }
-#endif
-    EXPECT_NEAR(b, r, actualTolerance);
-  }
-}
-
-
-TEST(GenericToolbox, TestStringToDoubleHardNegScientific_lexical_cast_vs_StringToDouble)
-{
-  using OrthancStone::GenericToolbox::StringToDouble;
-  const double TOLERANCE = 0.00000000000001;
-
-  size_t i = 0;
-  const size_t COUNT = 125;
-  //const double FACTOR = 1.000000000171271211;
-  const double FACTOR = 1.71271211;
-
-  double total_us_StringToDouble = 0.0;
-  double total_us_lexical_cast = 0.0;
-  int64_t numConversions = 0;
-
-  for (double b = -1.0 * DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
-  {
-    // the tolerance must be adapted depending on the exponent
-    double exponent = (b == 0) ? 0 : 1.0 + std::floor(std::log10(std::fabs(b)));
-    double actualTolerance = TOLERANCE * pow(10.0, exponent);
-
-    char txt[1024];
-#if defined(_MSC_VER)
-    sprintf_s(txt, "%.17e", b);
-#else
-    snprintf(txt, sizeof(txt) - 1, "%.17e", b);
-#endif
-    double r = 0.0;
-
-    bool ok = true;
-
-    {
-      boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();
-      for (size_t i = 0; i < NUM_TIMINGS_CONVS; ++i)
-      {
-        ok = StringToDouble(r, txt);
-      }
-      boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();
-      total_us_StringToDouble += (end - start).total_microseconds();
-    }
-
-    {
-      boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();
-      for (size_t i = 0; i < NUM_TIMINGS_CONVS; ++i)
-      {
-        try
-        {
-          r = boost::lexical_cast<double>(txt);
-          ok = true;
-        }
-        catch (boost::bad_lexical_cast& )
-        {
-          ok = false;
-        }
-      }
-      boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();
-      total_us_lexical_cast += (end - start).total_microseconds();
-    }
-    numConversions += NUM_TIMINGS_CONVS;
-
-#if 0
-    if (ok)
-    {
-      printf("OK for txt = \"%s\" and r = %.17e\n", txt, r);
-    }
-    else
-    {
-      printf("Not ok for txt = \"%s\" and r = %.17e\n", txt, r);
-      ok = StringToDouble(r, txt);
-    }
-#endif
-
-    EXPECT_TRUE(ok);
-
-#if 0
-    if (fabs(b - r) > actualTolerance)
-    {
-      printf("NOK fabs(b (%.17f) - r (%.17f)) ((%.17f))  > actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
-      printf("NOK fabs(b (%.17e) - r (%.17e)) ((%.17e))  > actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
-      ok = StringToDouble(r, txt);
-    }
-    else
-    {
-      printf("OK  fabs(b (%.17f) - r (%.17f)) ((%.17f)) <= actualTolerance (%.17f)\n", b, r, fabs(b - r), actualTolerance);
-      printf("OK  fabs(b (%.17e) - r (%.17e)) ((%.17e)) <= actualTolerance (%.17e)\n", b, r, fabs(b - r), actualTolerance);
-    }
-#endif
-    EXPECT_NEAR(b, r, actualTolerance);
-  }
-
-  std::cout << "Total time (us) for " << numConversions
-    << " conversions using StringToDouble (WITH scientific notation)      = "
-    << static_cast<int64_t>(total_us_StringToDouble) << std::endl;
-
-  std::cout << "Time per conversion using StringToDouble (ns) = "
-    << (int64_t)( (total_us_StringToDouble*1000) / ((double)numConversions)) << std::endl;
-
-  std::cout << "Total time (us) for " << numConversions
-    << " conversions using boost::lexical_cast (WITH  scientific notation) = "
-    << static_cast<int64_t>(total_us_lexical_cast) << std::endl;
-
-  std::cout << "Time per conversion using boost::lexical_cast (ns) = "
-    << (int64_t)( (total_us_lexical_cast * 1000) / ((double)numConversions)) << std::endl;
-
-  std::cout << "StringToDouble is " << (int)((total_us_lexical_cast / total_us_StringToDouble)+ 0.5) << " times faster than boost::lexical_cast" << std::endl;
-}
-
-
-TEST(GenericToolbox, TestStringToIntegerHard)
-{
-  using OrthancStone::GenericToolbox::StringToInteger;
-
-  size_t i = 0;
-  const size_t COUNT = 125;
-  //const double FACTOR = 1.000000000171271211;
-  const double FACTOR = 1.71271211;
-  for (double b = DBL_EPSILON; b < DBL_MAX && i < COUNT; ++i, b *= FACTOR)
-  {
-    int64_t bi = static_cast<int64_t>(b);
-    char txt[1024];
-#if defined(_MSC_VER)
-#  if (_MSC_VER > 1800)
-    sprintf_s(txt, "%lld", bi);
-#  else
-    sprintf_s(txt, "%I64d", bi);
-#  endif
-#else
-    snprintf(txt, sizeof(txt) - 1, "%ld", bi);
-#endif
-    int64_t r = 0;
-    bool ok = StringToInteger<int64_t>(r, txt);
-    EXPECT_TRUE(ok);
-    EXPECT_EQ(bi, r);
-#if 0
-    if (ok)
-    {
-      printf("OK for b = %.17f bi = %lld txt = \"%s\" and r = %lld\n", b, bi, txt, r);
-    }
-    else
-    {
-      printf("NOK for b = %.17f bi = %lld txt = \"%s\" and r = %lld\n", b, bi, txt,r);
-      ok = StringToInteger<int64_t>(r, txt);
-    }
-#endif
-  }
-}
-
-
-TEST(GenericToolbox, TestGetRgbValuesFromString)
-{
-  using OrthancStone::GenericToolbox::GetRgbValuesFromString;
-
-  uint8_t red = 0;
-  uint8_t green = 0;
-  uint8_t blue = 0;
-
-  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, ""));
-  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, " "));
-  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, "rgb() "));
-  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, "rgb(12,30 2563) "));
-  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, "rgb(12,30 2563,45) "));
-  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, "rgb(12,303.23,45)"));
-  EXPECT_FALSE(GetRgbValuesFromString(red, green, blue, "rgb(12,303,45 "));
-
-  ASSERT_TRUE(GetRgbValuesFromString(red, green, blue, "rgb(12,255,45)"));
-  EXPECT_EQ(12, red);
-  EXPECT_EQ(255, green);
-  EXPECT_EQ(45, blue);
-
-  ASSERT_TRUE(GetRgbValuesFromString(red, green, blue, " rgb ( 72 , 257 , 47 ) "));
-  EXPECT_EQ(72, red);
-  EXPECT_EQ(1, green); //rollover 255 --> 255, 256 --> 0, 257 --> 1,...
-  EXPECT_EQ(47, blue);
-
-  ASSERT_TRUE(GetRgbValuesFromString(red, green, blue, " rgb ( 72 , 247 , 47 ) "));
-  EXPECT_EQ(72, red);
-  EXPECT_EQ(247, green);
-  EXPECT_EQ(47, blue);
-
-  ASSERT_TRUE(GetRgbValuesFromString(red, green, blue, " rgb ( 000, 0, 000) "));
-  EXPECT_EQ(0, red);
-  EXPECT_EQ(0, green);
-  EXPECT_EQ(0, blue);
-}
-
-
-
-
-
-
-
--- a/UnitTestsSources/ImageToolboxTests.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,260 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "../Framework/Toolbox/ImageToolbox.h"
-
-// #include <boost/chrono.hpp>
-// #include <boost/lexical_cast.hpp>
-
-#include <Compatibility.h>
-#include <Images/Image.h>
-#include <Images/PixelTraits.h>
-
-#include "stdint.h"
-
-#include <gtest/gtest.h>
-
-#include <cmath>
-
-
-TEST(ImageToolbox, SimpleHisto_Grayscale8_BinSize1)
-{
-  using OrthancStone::HistogramData;
-  using OrthancStone::DumpHistogramResult;
-  using OrthancStone::ComputeHistogram;
-
-  const unsigned int W = 16;
-  const unsigned int H = 16;
-
-  // 256/17 = 15,...
-  // 256 % 17 = 1
-  // 0 will be 16 times
-  // 1 will be 15 times
-  // 2 will be 15 times
-  // ...
-  // 16 will be 15 times
-
-  size_t pixCounter = 0;
-
-  std::unique_ptr<Orthanc::Image> image(new Orthanc::Image(
-    Orthanc::PixelFormat_Grayscale8, W, H, false));
-
-  for (unsigned int y = 0; y < H; ++y)
-  {
-    uint8_t* buffer = reinterpret_cast<uint8_t*>(image->GetRow(y));
-    for (unsigned int x = 0; x < W; ++x, ++buffer, ++pixCounter)
-    {
-      *buffer = static_cast<uint8_t>(pixCounter % 17);
-    }
-  }
-
-  HistogramData hd;
-  ComputeHistogram(*image, hd, 1);
-  ASSERT_EQ(-0.5, hd.minValue);
-  ASSERT_EQ(17u, hd.bins.size());
-  ASSERT_EQ(16u, hd.bins[0]);
-  for (size_t i = 1; i < hd.bins.size(); ++i)
-    ASSERT_EQ(15u, hd.bins[i]);
-}
-
-TEST(ImageToolbox, SimpleHisto_Grayscale8_BinSize1_FormatString)
-{
-  using OrthancStone::HistogramData;
-  using OrthancStone::DumpHistogramResult;
-  using OrthancStone::ComputeHistogram;
-
-  const unsigned int W = 16;
-  const unsigned int H = 16;
-
-  // 256/17 = 15,...
-  // 256 % 17 = 1
-  // 0 will be 16 times
-  // 1 will be 15 times
-  // 2 will be 15 times
-  // ...
-  // 16 will be 15 times
-
-  size_t pixCounter = 0;
-
-  std::unique_ptr<Orthanc::Image> image(new Orthanc::Image(
-    Orthanc::PixelFormat_Grayscale8, W, H, false));
-
-  for (unsigned int y = 0; y < H; ++y)
-  {
-    uint8_t* buffer = reinterpret_cast<uint8_t*>(image->GetRow(y));
-    for (unsigned int x = 0; x < W; ++x, ++buffer, ++pixCounter)
-    {
-      *buffer = static_cast<uint8_t>(pixCounter % 17);
-    }
-  }
-
-  HistogramData hd;
-  ComputeHistogram(*image, hd, 1);
-
-  // void DumpHistogramResult(std::string& s, const HistogramData& hd)
-  std::string s;
-  DumpHistogramResult(s, hd);
-  std::cout << s;
-}
-
-template<Orthanc::PixelFormat Format>
-void SimpleHisto_T_BinSize1_2()
-{
-  using OrthancStone::HistogramData;
-  using OrthancStone::DumpHistogramResult;
-  using OrthancStone::ComputeHistogram;
-
-  const unsigned int W = 16;
-  const unsigned int H = 16;
-
-  // 256/17 = 15,...
-  // 256 % 17 = 1
-  // 0 will be 16 times
-  // 1 will be 15 times
-  // 2 will be 15 times
-  // ...
-  // 16 will be 15 times
-
-  size_t pixCounter = 0;
-
-  std::unique_ptr<Orthanc::Image> image(new Orthanc::Image(
-    Format, W, H, false));
-
-  typedef typename Orthanc::PixelTraits<Format>::PixelType PixelType;
-
-  PixelType pixValue = 0;
-
-  for (unsigned int y = 0; y < H; ++y)
-  {
-    PixelType* buffer = reinterpret_cast<PixelType*>(image->GetRow(y));
-    for (unsigned int x = 0; x < W; ++x, ++buffer, ++pixCounter)
-    {
-      // 0..99 0..99 0..55
-      *buffer = pixValue;
-      pixValue++;
-      if (pixValue >= 100)
-        pixValue = 0;
-    }
-  }
-
-  HistogramData hd;
-  ComputeHistogram(*image, hd, 1);
-  ASSERT_EQ(-0.5, hd.minValue);
-  ASSERT_EQ(100u, hd.bins.size());
-  for (size_t i = 0; i <= 55; ++i)
-    ASSERT_EQ(3u, hd.bins[i]);
-  for (size_t i = 56; i <= 99; ++i)
-    ASSERT_EQ(2u, hd.bins[i]);
-}
-
-TEST(ImageToolbox, SimpleHisto_Grayscale8_BinSize1_2)
-{               
-  SimpleHisto_T_BinSize1_2<Orthanc::PixelFormat_Grayscale8>();
-}
-
-TEST(ImageToolbox, SimpleHisto_Grayscale16_BinSize1_2)
-{
-  SimpleHisto_T_BinSize1_2<Orthanc::PixelFormat_Grayscale16>();
-}
-
-TEST(ImageToolbox, SimpleHisto_SignedGrayscale16_BinSize1_2)
-{
-  SimpleHisto_T_BinSize1_2<Orthanc::PixelFormat_SignedGrayscale16>();
-}
-
-TEST(ImageToolbox, SimpleHisto_Grayscale32_BinSize1_2)
-{
-  SimpleHisto_T_BinSize1_2<Orthanc::PixelFormat_Grayscale32>();
-}
-
-template<Orthanc::PixelFormat Format>
-void SimpleHisto_T_BinSize10_2()
-{
-  using OrthancStone::HistogramData;
-  using OrthancStone::DumpHistogramResult;
-  using OrthancStone::ComputeHistogram;
-
-  const unsigned int W = 16;
-  const unsigned int H = 16;
-
-  // 256/17 = 15,...
-  // 256 % 17 = 1
-  // 0 will be 16 times
-  // 1 will be 15 times
-  // 2 will be 15 times
-  // ...
-  // 16 will be 15 times
-
-  size_t pixCounter = 0;
-
-  std::unique_ptr<Orthanc::Image> image(new Orthanc::Image(
-    Format, W, H, false));
-
-  typedef typename Orthanc::PixelTraits<Format>::PixelType PixelType;
-
-  PixelType pixValue = 0;
-
-  for (unsigned int y = 0; y < H; ++y)
-  {
-    PixelType* buffer = reinterpret_cast<PixelType*>(image->GetRow(y));
-    for (unsigned int x = 0; x < W; ++x, ++buffer, ++pixCounter)
-    {
-      // 0..99 0..99 0..55
-      *buffer = pixValue;
-      pixValue++;
-      if (pixValue >= 100)
-        pixValue = 0;
-    }
-  }
-
-  HistogramData hd;
-  ComputeHistogram(*image, hd, 10);
-  ASSERT_EQ(-0.5, hd.minValue);
-  ASSERT_EQ(10u, hd.bins.size());
-
-  for (size_t i = 0; i <= 4; ++i)
-    ASSERT_EQ(30u, hd.bins[i]);
-
-  ASSERT_EQ(26u, hd.bins[5]);
-
-  for (size_t i = 6; i <= 9; ++i)
-    ASSERT_EQ(20u, hd.bins[i]);
-}
-
-TEST(ImageToolbox, SimpleHisto_Grayscale8_BinSize10_2)
-{
-  SimpleHisto_T_BinSize10_2<Orthanc::PixelFormat_Grayscale8>();
-}
-
-TEST(ImageToolbox, SimpleHisto_Grayscale16_BinSize10_2)
-{
-  SimpleHisto_T_BinSize10_2<Orthanc::PixelFormat_Grayscale16>();
-}
-
-TEST(ImageToolbox, SimpleHisto_SignedGrayscale16_BinSize10_2)
-{
-  SimpleHisto_T_BinSize10_2<Orthanc::PixelFormat_SignedGrayscale16>();
-}
-
-TEST(ImageToolbox, SimpleHisto_Grayscale32_BinSize10_2)
-{
-  SimpleHisto_T_BinSize10_2<Orthanc::PixelFormat_Grayscale32>();
-}
-
--- a/UnitTestsSources/PixelTestPatternsTests.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include "../Framework/Toolbox/PixelTestPatterns.h"
-
-#include <Images/Image.h>
-#include <Images/PngWriter.h>
-
-#include <boost/chrono.hpp>
-#include <boost/lexical_cast.hpp>
-
-#include <gtest/gtest.h>
-#include <stdint.h>
-#include <cmath>
-
- /* Autogenerated from prout.png */
-static const unsigned char bin2c_SimpleRedBlueHGradient_png[391] = "\211PNG\15\12\32\12\0\0\0\15IHDR\0\0\0\200\0\0\0\200\10\6\0\0\0\303>a\313\0\0\1MIDATx\234\355\322\1\15\3000\0\303\260~\3741o\7\342X\12\203|o{wgev\26Z\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p\15\200k\0\\\3\340\32\0\327\0\270\6\3005\0\256\1p?\314\262\201\3760\355r\262\0\0\0\0IEND\256B`\202";
-
-TEST(PixelTestPatterns, SimpleRedHGradient)
-{
-  std::unique_ptr<Orthanc::Image> texture;
-
-  texture.reset(new Orthanc::Image(
-    Orthanc::PixelFormat_RGBA32,
-    128,
-    128,
-    /*forceMinimalPitch*/false));
-
-  Orthanc::ImageAccessor target;
-  texture->GetWriteableAccessor(target);
-
-  OrthancStone::PixelTestPatterns::fillWithHGradient(target,255,0,0,0,0,255);
-
-  Orthanc::PngWriter writer;
-#if 0
-  writer.WriteToFile("SimpleRedBlueHGradient.png", *texture);
-#else
-  std::string contents;
-  writer.WriteToMemory(contents, *texture);
-
-  ASSERT_EQ(1u, sizeof(unsigned char));
-  ASSERT_EQ(391u, sizeof(bin2c_SimpleRedBlueHGradient_png));
-  ASSERT_EQ(390u, contents.size());
-
-  char* resultPngBytes = &(contents[0]);
-
-  int result = memcmp(resultPngBytes, bin2c_SimpleRedBlueHGradient_png, 390);
-  ASSERT_EQ(0, result);
-#endif
-}
-
-static const unsigned char bin2c_SimpleRedBlueVGradient_png[400] = "\211PNG\15\12\32\12\0\0\0\15IHDR\0\0\0\200\0\0\0\200\10\6\0\0\0\303>a\313\0\0\1VIDATx\234\355\322A\21\3000\14\300\260t7\376\220\327\301\310\303\22\2?|\356\314\35\262\336o\236\355\6\26\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\14\20g\2008\3\304\31 \316\0q\6\2103@\234\1\342\316\231\357nG\260\347\7\221\255\203\367~A)\36\0\0\0\0IEND\256B`\202";
-
-
-TEST(PixelTestPatterns, SimpleRedBlueVGradient)
-{
-  std::unique_ptr<Orthanc::Image> texture;
-
-  texture.reset(new Orthanc::Image(
-    Orthanc::PixelFormat_RGBA32,
-    128,
-    128,
-    /*forceMinimalPitch*/false));
-
-  Orthanc::ImageAccessor target;
-  texture->GetWriteableAccessor(target);
-
-  OrthancStone::PixelTestPatterns::fillWithVGradient(target, 255, 0, 0, 0, 0, 255);
-
-  Orthanc::PngWriter writer;
-#if 0
-  writer.WriteToFile("SimpleRedBlueVGradient.png", *texture);
-#else
-  std::string contents;
-  writer.WriteToMemory(contents, *texture);
-
-  ASSERT_EQ(1u, sizeof(unsigned char));
-  ASSERT_EQ(400u, sizeof(bin2c_SimpleRedBlueVGradient_png));
-  ASSERT_EQ(399u, contents.size());
-
-  char* resultPngBytes = &(contents[0]);
-
-  int result = memcmp(resultPngBytes, bin2c_SimpleRedBlueVGradient_png, 399);
-  ASSERT_EQ(0, result);
-#endif
-}
-
-
-/* Autogenerated from MultiGradient.png */
-static const unsigned char bin2c_MultiGradient_png[774] = "\211PNG\15\12\32\12\0\0\0\15IHDR\0\0\1\0\0\0\0\200\10\6\0\0\0\344\265\267\12\0\0\2\314IDATx\234\355\325\301\11\3030\24\5\301/\242\376+6(E$ \314\354\30\337\215\364X\2573s\6\266\316\314\226\237\365\271}\5\227\255\331{\273\357s\373\374sY\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\25\0^\13\220\2559\347\354\231Q\337\317\372\303)\276\331Ys\377\26\256.\340\3673|\261}\373\3n{\360?\240>\200\347\351\376i\5\300V\0pz\0t\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0l\5\0W\0lz\0\276!\352\302\35+U\244b\0\0\0\0IEND\256B`\202";
-
-TEST(PixelTestPatterns, MultiGradient)
-{
-  std::unique_ptr<Orthanc::Image> texture;
-
-  const int CELLW = 64;
-  const int CELLH = 64;
-  const int NHCELLS = 4;
-  const int NVCELLS = 2;
-  const int NCELLS = NHCELLS * NVCELLS;
-
-  texture.reset(new Orthanc::Image(
-    Orthanc::PixelFormat_RGBA32,
-    NHCELLS * CELLW,
-    NVCELLS * CELLH,
-    /*forceMinimalPitch*/false));
-
-  // H:R->K, V:G->W, H:B->K
-
-  //                    R   G   B   K   C   M   Y   W
-  uint8_t startR[NCELLS] = {255,000,000,000,000,255,255,255};
-  uint8_t startG[NCELLS] = {000,255,000,000,255,000,255,255};
-  uint8_t startB[NCELLS] = {000,000,255,000,255,255,000,255};
-  
-  //                  K   W   K   W   W   K   W   K
-  uint8_t eeendR[NCELLS] = {000,255,000,255,255,000,255,000};
-  uint8_t eeendG[NCELLS] = {000,255,000,255,255,000,255,000 };
-  uint8_t eeendB[NCELLS] = {000,255,000,255,255,000,255,000 };
-
-  for(size_t slot = 0; slot < NCELLS; ++slot)
-  {
-    int x0 = (slot % 4) * CELLW;
-    bool vertical = (((slot / NHCELLS) % 2) == 0) ? (slot % 2 == 0) : (slot % 2 == 1);
-    int y0 = static_cast<int>(slot / NHCELLS) * CELLH;
-    Orthanc::ImageAccessor target;
-    texture->GetRegion(target, x0, y0, CELLW, CELLH);
-    if (vertical)
-      OrthancStone::PixelTestPatterns::fillWithVGradient(target, startR[slot], startG[slot], startB[slot], eeendR[slot], eeendG[slot], eeendB[slot]);
-    else 
-      OrthancStone::PixelTestPatterns::fillWithHGradient(target, startR[slot], startG[slot], startB[slot], eeendR[slot], eeendG[slot], eeendB[slot]);
-  }
- 
-  Orthanc::PngWriter writer;
-#if 0
-  writer.WriteToFile("MultiGradient.png", *texture);
-#else
-  std::string contents;
-  writer.WriteToMemory(contents, *texture);
-
-  ASSERT_EQ(1u, sizeof(unsigned char));
-  ASSERT_EQ(774u, sizeof(bin2c_MultiGradient_png));
-  ASSERT_EQ(773u, contents.size());
-
-  char* resultPngBytes = &(contents[0]);
-
-  int result = memcmp(resultPngBytes, bin2c_MultiGradient_png, 773);
-  ASSERT_EQ(0, result);
-#endif
-}
-
--- a/UnitTestsSources/SortedFramesCreateTest.py	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-#!/usr/bin/env python
-
-import pprint
-import requests
-import sys
-
-if len(sys.argv) != 2:
-    print('Usage: %s [Orthanc series ID]' % sys.argv[0])
-    print('Example: %s 4d04593b-953ced51-87e93f11-ae4cf03c-25defdcd | xclip -selection c -t text/plain' % sys.argv[0])
-    exit(-1)
-
-SERIES = sys.argv[1]
-
-r = requests.get('http://localhost:8042/series/%s/study' % SERIES)
-r.raise_for_status()
-print('  // From patient %s' % r.json() ['PatientMainDicomTags']['PatientName'])
-
-r = requests.get('http://localhost:8042/series/%s' % SERIES)
-r.raise_for_status()
-
-first = True
-
-for instance in r.json() ['Instances']:
-    tags = requests.get('http://localhost:8042/instances/%s/tags?short' % instance)
-    tags.raise_for_status()
-
-    if first:
-        print('''
-  Orthanc::DicomMap tags;
-  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "%s", false);
-  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "%s", false);    
-  OrthancStone::SortedFrames f;
-''' % (tags.json() ['0020,000d'], tags.json() ['0020,000e']))
-        first = False
-   
-    print('  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "%s", false);' % instance)
-    
-    if '0020,0032' in tags.json():
-        print('  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "%s", false);' %
-              tags.json() ['0020,0032'].replace('\\', '\\\\'))
-    
-    if '0020,0037' in tags.json():
-        print('  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "%s", false);' %
-              tags.json() ['0020,0037'].replace('\\', '\\\\'))
-
-    if '0020,0013' in tags.json():
-        print('  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "%s", false);' %
-              tags.json() ['0020,0013'].replace('\\', '\\\\'))
-
-    if '0054,1330' in tags.json():
-        print('  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_INDEX, "%s", false);' %
-              tags.json() ['0054,1330'].replace('\\', '\\\\'))
-
-    print('  f.AddInstance(tags);')
-    
-print('  f.Sort();')
-
-r = requests.get('http://localhost:8042/series/%s/ordered-slices' % SERIES)
-r.raise_for_status()
-slices = r.json() ['SlicesShort']
-
-print('  ASSERT_EQ(%du, f.GetFramesCount());' % len(slices))
-
-for i in range(len(slices)):
-    print('  ASSERT_EQ(f.GetFrameSopInstanceUid(%d), "%s");' % (i, slices[i][0]))
-
--- a/UnitTestsSources/SortedFramesTests.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,483 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include <gtest/gtest.h>
-
-#include "../Framework/Toolbox/SortedFrames.h"
-
-#include <OrthancException.h>
-
-
-TEST(SortedFrames, Basic)
-{
-  OrthancStone::SortedFrames f;
-  ASSERT_TRUE(f.GetStudyInstanceUid().empty());
-  ASSERT_TRUE(f.GetSeriesInstanceUid().empty());
-  ASSERT_EQ(0u, f.GetInstancesCount());
-  ASSERT_THROW(f.GetInstanceTags(0), Orthanc::OrthancException);
-  ASSERT_THROW(f.GetSopInstanceUid(0), Orthanc::OrthancException);
-  ASSERT_TRUE(f.IsSorted());
-  ASSERT_EQ(0u, f.GetFramesCount());
-  ASSERT_THROW(f.GetFrameTags(0), Orthanc::OrthancException);
-  ASSERT_THROW(f.GetFrameSopInstanceUid(0), Orthanc::OrthancException);
-  ASSERT_THROW(f.GetFrameSiblingsCount(0), Orthanc::OrthancException);
-  ASSERT_THROW(f.GetFrameIndex(0), Orthanc::OrthancException);
-
-  Orthanc::DicomMap tags;
-  ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException);
-  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false);
-  ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException);
-  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false);
-  ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop", false);
-  f.AddInstance(tags);
-
-  ASSERT_EQ("study", f.GetStudyInstanceUid());
-  ASSERT_EQ("series", f.GetSeriesInstanceUid());
-  ASSERT_EQ(1u, f.GetInstancesCount());
-  std::string s;
-  ASSERT_TRUE(f.GetInstanceTags(0).LookupStringValue(s, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false));
-  ASSERT_EQ("sop", s);
-  ASSERT_EQ("sop", f.GetSopInstanceUid(0));
-  ASSERT_FALSE(f.IsSorted());
-  ASSERT_THROW(f.GetFramesCount(), Orthanc::OrthancException);
-  ASSERT_THROW(f.GetFrameTags(0), Orthanc::OrthancException);
-  ASSERT_THROW(f.GetFrameSopInstanceUid(0), Orthanc::OrthancException);
-  ASSERT_THROW(f.GetFrameSiblingsCount(0), Orthanc::OrthancException);
-  ASSERT_THROW(f.GetFrameIndex(0), Orthanc::OrthancException);
-
-  f.Sort();
-  ASSERT_TRUE(f.IsSorted());
-  ASSERT_EQ(1u, f.GetFramesCount());
-  ASSERT_TRUE(f.GetFrameTags(0).LookupStringValue(s, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false));
-  ASSERT_EQ("sop", s);
-  ASSERT_EQ("sop", f.GetFrameSopInstanceUid(0));
-  ASSERT_EQ(1u, f.GetFrameSiblingsCount(0));
-  ASSERT_EQ(0u, f.GetFrameIndex(0));
-  ASSERT_THROW(f.GetFrameTags(1), Orthanc::OrthancException);
-}
-
-
-TEST(SortedFrames, SortSopInstanceUid)
-{
-  Orthanc::DicomMap tags;
-  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false);
-  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false);
-    
-  OrthancStone::SortedFrames f;
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false);
-  tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "1", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "3", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false);
-  tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "2", false);
-  f.AddInstance(tags);
-    
-  f.Sort();
-  ASSERT_EQ(3u, f.GetInstancesCount());
-  ASSERT_EQ("sop3", f.GetSopInstanceUid(0));
-  ASSERT_EQ("sop1", f.GetSopInstanceUid(1));
-  ASSERT_EQ("sop2", f.GetSopInstanceUid(2));
-  ASSERT_EQ(6u, f.GetFramesCount());
-  ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(0));  ASSERT_EQ(0u, f.GetFrameIndex(0));
-  ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(1));  ASSERT_EQ(1u, f.GetFrameIndex(1));
-  ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(2));  ASSERT_EQ(2u, f.GetFrameIndex(2));
-  ASSERT_EQ("sop2", f.GetFrameSopInstanceUid(3));  ASSERT_EQ(0u, f.GetFrameIndex(3));
-  ASSERT_EQ("sop2", f.GetFrameSopInstanceUid(4));  ASSERT_EQ(1u, f.GetFrameIndex(4));
-  ASSERT_EQ("sop3", f.GetFrameSopInstanceUid(5));  ASSERT_EQ(0u, f.GetFrameIndex(5));
-}
-
-
-TEST(SortedFrames, SortInstanceNumber)
-{
-  Orthanc::DicomMap tags;
-  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false);
-  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false);
-    
-  OrthancStone::SortedFrames f;
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "-20", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2a", false);
-  tags.Remove(Orthanc::DICOM_TAG_INSTANCE_NUMBER);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop4", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop5", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
-  f.AddInstance(tags);
-    
-  f.Sort();
-  ASSERT_EQ(6u, f.GetInstancesCount());
-  ASSERT_EQ("sop1", f.GetSopInstanceUid(0));
-  ASSERT_EQ("sop2", f.GetSopInstanceUid(1));
-  ASSERT_EQ("sop2a", f.GetSopInstanceUid(2));
-  ASSERT_EQ("sop4", f.GetSopInstanceUid(3));
-  ASSERT_EQ("sop3", f.GetSopInstanceUid(4));
-  ASSERT_EQ("sop5", f.GetSopInstanceUid(5));
-  ASSERT_EQ(6u, f.GetFramesCount());
-  ASSERT_EQ("sop2", f.GetFrameSopInstanceUid(0));  ASSERT_EQ(0u, f.GetFrameIndex(0));
-  ASSERT_EQ("sop3", f.GetFrameSopInstanceUid(1));  ASSERT_EQ(0u, f.GetFrameIndex(1));
-  ASSERT_EQ("sop4", f.GetFrameSopInstanceUid(2));  ASSERT_EQ(0u, f.GetFrameIndex(2));
-  ASSERT_EQ("sop5", f.GetFrameSopInstanceUid(3));  ASSERT_EQ(0u, f.GetFrameIndex(3));
-  ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(4));  ASSERT_EQ(0u, f.GetFrameIndex(4));
-  ASSERT_EQ("sop2a", f.GetFrameSopInstanceUid(5));  ASSERT_EQ(0u, f.GetFrameIndex(5));
-}
-
-
-TEST(SortedFrames, SortInstanceNumberAndImageIndex)
-{
-  Orthanc::DicomMap tags;
-  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false);
-  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false);
-    
-  OrthancStone::SortedFrames f;
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false);
-  tags.Remove(Orthanc::DICOM_TAG_INSTANCE_NUMBER);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_INDEX, "20", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_INDEX, "30", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop4", false);
-  tags.Remove(Orthanc::DICOM_TAG_IMAGE_INDEX);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "30", false);
-  f.AddInstance(tags);
-    
-  f.Sort();
-  ASSERT_EQ(4u, f.GetInstancesCount());
-  ASSERT_EQ("sop1", f.GetSopInstanceUid(0));
-  ASSERT_EQ("sop2", f.GetSopInstanceUid(1));
-  ASSERT_EQ("sop3", f.GetSopInstanceUid(2));
-  ASSERT_EQ("sop4", f.GetSopInstanceUid(3));
-  ASSERT_EQ(4u, f.GetFramesCount());
-  // First instance number, then image index
-  ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(0));  ASSERT_EQ(0u, f.GetFrameIndex(0));
-  ASSERT_EQ("sop4", f.GetFrameSopInstanceUid(1));  ASSERT_EQ(0u, f.GetFrameIndex(1));
-  ASSERT_EQ("sop2", f.GetFrameSopInstanceUid(2));  ASSERT_EQ(0u, f.GetFrameIndex(2));
-  ASSERT_EQ("sop3", f.GetFrameSopInstanceUid(3));  ASSERT_EQ(0u, f.GetFrameIndex(3));
-}
-
-
-TEST(SortedFrames, Knix)  // Created using "SortedFramesCreateTest.py"
-{
-  Orthanc::DicomMap tags;
-  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "1.2.840.113619.2.176.2025.1499492.7391.1171285944.390", false);
-  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "1.2.840.113619.2.176.2025.1499492.7391.1171285944.392", false);    
-  OrthancStone::SortedFrames f;
-
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "67b44a5e-8997f88d-6e527bd6-df342483-dab1674c", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-60.7285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "a8ee83f9-1cc26ad9-ebba3043-8afc47c2-bd784610", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-42.7285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "6", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "5a2acb03-063f5063-cac452d1-a55992f9-769900fb", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-114.729\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "22", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "23d12f39-e9a4fc21-8da338c4-97feff30-48e95534", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-83.2285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "15", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "16606f69-83b48518-ab34304a-c8871b7f-a9298d74", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-78.7285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "14", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "63d595f3-327a306d-1709bb8b-2a72e11c-4f7221fe", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-96.7285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "18", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "8bdecadd-e3477e28-bbbf0297-22b0b680-37b13a7c", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-65.2285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "11", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "b590cc95-55789755-ebd10b76-911e855e-f24e4fe7", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-74.2285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "13", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "eaa49a94-b9042041-7f45150b-e414f800-d7232874", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-38.2285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "5", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "6824db93-ed4e2740-07be953f-6d0a8fb3-af0a3a0b", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-105.729\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "e0d82343-9cef01e9-e21df50a-11886a94-1d0216ea", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-51.7285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "8", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "dc1576ee-25b0b1ef-e038df76-d296fcad-a1456169", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-110.229\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "21", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "b9cf5158-06f8e713-7d5111aa-411fd75b-7be2c51e", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-20.2285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "1", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "5faf886f-bd5517cf-1a6ba06e-ac0e6ddb-47bdd8b2", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-101.229\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "19", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "3e8f8ec1-b603f874-825552f1-6fcac7fa-72ca1aa5", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-24.7285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "2", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "7a7c0120-37f6dd58-c46312e6-2559975d-5af4616f", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-87.7285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "16", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "a0ca6802-56c697c3-0205bab8-42217cfc-84ff0de6", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-33.7285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "4", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "efce9ff4-3fe07d83-745846f8-fefe5d64-bfea65e6", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-56.2285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "9", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "fa56f961-d1ae8f6a-989c04f4-7a588e9e-b41b1a13", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-92.2285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "17", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "f5e889ac-c5afdc37-c5b62074-a8bdeef3-c58d9889", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-69.7285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "12", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "c19fb4b6-ad1224f2-2c3a2b28-0ea233be-38eea0de", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-47.2285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "7", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "348efc0a-71ee4758-56bd51fa-9703cbff-9b51d4c9", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-29.2285\\-105.586\\73.7768", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "-0\\1\\0\\-0\\-0\\-1", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "3", false);
-  f.AddInstance(tags);
-  f.Sort();
-  ASSERT_EQ(22u, f.GetFramesCount());
-  ASSERT_EQ(f.GetFrameSopInstanceUid(0), "b9cf5158-06f8e713-7d5111aa-411fd75b-7be2c51e");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(1), "3e8f8ec1-b603f874-825552f1-6fcac7fa-72ca1aa5");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(2), "348efc0a-71ee4758-56bd51fa-9703cbff-9b51d4c9");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(3), "a0ca6802-56c697c3-0205bab8-42217cfc-84ff0de6");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(4), "eaa49a94-b9042041-7f45150b-e414f800-d7232874");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(5), "a8ee83f9-1cc26ad9-ebba3043-8afc47c2-bd784610");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(6), "c19fb4b6-ad1224f2-2c3a2b28-0ea233be-38eea0de");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(7), "e0d82343-9cef01e9-e21df50a-11886a94-1d0216ea");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(8), "efce9ff4-3fe07d83-745846f8-fefe5d64-bfea65e6");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(9), "67b44a5e-8997f88d-6e527bd6-df342483-dab1674c");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(10), "8bdecadd-e3477e28-bbbf0297-22b0b680-37b13a7c");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(11), "f5e889ac-c5afdc37-c5b62074-a8bdeef3-c58d9889");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(12), "b590cc95-55789755-ebd10b76-911e855e-f24e4fe7");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(13), "16606f69-83b48518-ab34304a-c8871b7f-a9298d74");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(14), "23d12f39-e9a4fc21-8da338c4-97feff30-48e95534");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(15), "7a7c0120-37f6dd58-c46312e6-2559975d-5af4616f");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(16), "fa56f961-d1ae8f6a-989c04f4-7a588e9e-b41b1a13");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(17), "63d595f3-327a306d-1709bb8b-2a72e11c-4f7221fe");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(18), "5faf886f-bd5517cf-1a6ba06e-ac0e6ddb-47bdd8b2");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(19), "6824db93-ed4e2740-07be953f-6d0a8fb3-af0a3a0b");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(20), "dc1576ee-25b0b1ef-e038df76-d296fcad-a1456169");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(21), "5a2acb03-063f5063-cac452d1-a55992f9-769900fb");
-}
-
-
-TEST(SortedFrames, Cardiac)  // Created using "SortedFramesCreateTest.py"
-{
-  Orthanc::DicomMap tags;
-  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "1.3.51.0.1.1.192.168.29.133.1681753.1681732", false);
-  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "1.3.12.2.1107.5.2.33.37097.2012041612474981424569674.0.0.0", false);    
-  OrthancStone::SortedFrames f;
-
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "a468da62-a8a6e0b9-f66b86b0-b15fa30b-93077161", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "14", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "1cf40ac9-e823e677-cbd5db4b-9e48b451-cccbf950", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "21", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "d52d5f21-54f1ad99-4015a995-108f7210-ee157944", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "15", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "b348f629-11d59f98-fb22710b-4964b90a-f44436ff", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "12", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "aac4f2ba-e863f124-6af96709-053258a7-3d39db26", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "13", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "8fefe14c-c4c34152-2c3d3514-04e75747-eb7f01f0", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "20b42f52-6d5f784b-cdbc0fbe-4bfc6b0c-5a199c75", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "17", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "931d0c36-8fbb4101-70e6d756-edb15431-aaa9a31b", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "19", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "9e3b97ec-25b86a67-2cbb8f77-94e73268-4509d383", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "caa62568-fdf894fe-08f830a2-5a468967-681d954b", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "18", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "e734c170-96b0a397-95e3b43e-d7a5ed74-025843c8", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "22", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "efc9f411-9f4294e0-66d292a1-b8b6b421-897f1d80", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "11", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "8346a1db-0b08a22b-9045aaad-57098aac-5b2e9159", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "16", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "8c7d1e4d-7936f799-c4b8b56b-32d0d9a6-2b492e98", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "3", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "faec09f9-ca7fe0f0-2b25c370-bb1bfaef-8ccfa560", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "4", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "99c20bcc-115ae447-84d616f2-cb6c5576-9f67aa7a", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "23", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "7906b806-47190031-72c5043c-d42704c1-688a3b23", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "9", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "c9dfc022-7b377063-08bdc5e8-fedcc463-8de22ee6", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "6", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "6570b6c0-7d2f324d-db7cad50-843f62df-d0446352", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "5", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "0be36fe7-6c7a762b-281cf109-fff9d8ea-42e16b7a", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "7", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "ec282396-a8209d00-1c5091f3-f632bf3d-a1bcebba", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "8", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "fda415d4-f1429b07-5d1cd9f0-675059ff-c0ce9e67", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "1", false);
-  f.AddInstance(tags);
-  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "f555ef96-6b01a90c-bdc2585a-dd17bb3a-75e89920", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-37.318577811371\\-157.20910163001\\232.94204104611", false);
-  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "0.73931693068262\\0.61320183243991\\-0.2781977510663\\-0.3521819177853\\-3.9073598e-009\\-0.9359315662938", false);
-  tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "2", false);
-  f.AddInstance(tags);
-  f.Sort();
-  ASSERT_EQ(23u, f.GetFramesCount());
-  ASSERT_EQ(f.GetFrameSopInstanceUid(0), "fda415d4-f1429b07-5d1cd9f0-675059ff-c0ce9e67");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(1), "f555ef96-6b01a90c-bdc2585a-dd17bb3a-75e89920");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(2), "8c7d1e4d-7936f799-c4b8b56b-32d0d9a6-2b492e98");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(3), "faec09f9-ca7fe0f0-2b25c370-bb1bfaef-8ccfa560");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(4), "6570b6c0-7d2f324d-db7cad50-843f62df-d0446352");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(5), "c9dfc022-7b377063-08bdc5e8-fedcc463-8de22ee6");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(6), "0be36fe7-6c7a762b-281cf109-fff9d8ea-42e16b7a");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(7), "ec282396-a8209d00-1c5091f3-f632bf3d-a1bcebba");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(8), "7906b806-47190031-72c5043c-d42704c1-688a3b23");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(9), "9e3b97ec-25b86a67-2cbb8f77-94e73268-4509d383");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(10), "efc9f411-9f4294e0-66d292a1-b8b6b421-897f1d80");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(11), "b348f629-11d59f98-fb22710b-4964b90a-f44436ff");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(12), "aac4f2ba-e863f124-6af96709-053258a7-3d39db26");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(13), "a468da62-a8a6e0b9-f66b86b0-b15fa30b-93077161");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(14), "d52d5f21-54f1ad99-4015a995-108f7210-ee157944");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(15), "8346a1db-0b08a22b-9045aaad-57098aac-5b2e9159");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(16), "20b42f52-6d5f784b-cdbc0fbe-4bfc6b0c-5a199c75");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(17), "caa62568-fdf894fe-08f830a2-5a468967-681d954b");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(18), "931d0c36-8fbb4101-70e6d756-edb15431-aaa9a31b");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(19), "8fefe14c-c4c34152-2c3d3514-04e75747-eb7f01f0");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(20), "1cf40ac9-e823e677-cbd5db4b-9e48b451-cccbf950");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(21), "e734c170-96b0a397-95e3b43e-d7a5ed74-025843c8");
-  ASSERT_EQ(f.GetFrameSopInstanceUid(22), "99c20bcc-115ae447-84d616f2-cb6c5576-9f67aa7a");
-}
--- a/UnitTestsSources/TestCommands.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include <gtest/gtest.h>
-
-//#include "../Applications/Commands/BaseCommandFactory.h"
-//#include "OrthancException.h"
-
-//class CommandIncrement: public OrthancStone::BaseCommand<CommandIncrement>
-//{
-//public:
-//  static int counter;
-//  int increment_;
-//public:
-//  CommandIncrement()
-//    : OrthancStone::BaseCommand<CommandIncrement>("increment"),
-//      increment_(0)
-//  {}
-
-//  virtual void Execute()
-//  {
-//    counter += increment_;
-//  }
-//  virtual void Configure(const Json::Value& arguments)
-//  {
-//    increment_ = arguments["increment"].asInt();
-//  }
-//};
-
-//// COMMAND("name", "arg1", "int", "arg2", "string")
-//// COMMAND(name, arg1, arg2)
-
-
-//int CommandIncrement::counter = 0;
-
-//TEST(Commands, CreateNoop)
-//{
-//  OrthancStone::BaseCommandFactory factory;
-
-//  factory.RegisterCommandClass<OrthancStone::NoopCommand>();
-
-//  Json::Value cmdJson;
-//  cmdJson["command"] = "noop";
-
-//  std::unique_ptr<OrthancStone::ICommand> command(factory.CreateFromJson(cmdJson));
-
-//  ASSERT_TRUE(command.get() != NULL);
-//  ASSERT_EQ("noop", command->GetName());
-//}
-
-//TEST(Commands, Execute)
-//{
-//  OrthancStone::BaseCommandFactory factory;
-
-//  factory.RegisterCommandClass<OrthancStone::NoopCommand>();
-//  factory.RegisterCommandClass<CommandIncrement>();
-
-//  Json::Value cmdJson;
-//  cmdJson["command"] = "increment";
-//  cmdJson["args"]["increment"] = 2;
-
-//  std::unique_ptr<OrthancStone::ICommand> command(factory.CreateFromJson(cmdJson));
-
-//  ASSERT_TRUE(command.get() != NULL);
-//  CommandIncrement::counter = 0;
-//  command->Execute();
-//  ASSERT_EQ(2, CommandIncrement::counter);
-//}
-
-//TEST(Commands, TryCreateUnknowCommand)
-//{
-//  OrthancStone::BaseCommandFactory factory;
-//  factory.RegisterCommandClass<OrthancStone::NoopCommand>();
-
-//  Json::Value cmdJson;
-//  cmdJson["command"] = "unknown";
-
-//  ASSERT_THROW(std::unique_ptr<OrthancStone::ICommand> command(factory.CreateFromJson(cmdJson)), Orthanc::OrthancException);
-//}
-
-//TEST(Commands, TryCreateCommandFromInvalidJson)
-//{
-//  OrthancStone::BaseCommandFactory factory;
-//  factory.RegisterCommandClass<OrthancStone::NoopCommand>();
-
-//  Json::Value cmdJson;
-//  cmdJson["command-name"] = "noop";
-
-//  ASSERT_THROW(std::unique_ptr<OrthancStone::ICommand> command(factory.CreateFromJson(cmdJson)), Orthanc::OrthancException);
-//}
--- a/UnitTestsSources/TestMessageBroker.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include <gtest/gtest.h>
-
-#include "../Framework/Messages/IObservable.h"
-#include "../Framework/Messages/ObserverBase.h"
-
-
-int testCounter = 0;
-namespace {
-
-  using namespace OrthancStone;
-
-
-  class MyObservable : public IObservable
-  {
-  public:
-    struct MyCustomMessage : public IMessage
-    {
-      ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
-
-      int payload_;
-
-      MyCustomMessage(int payload) :
-        payload_(payload)
-      {
-      }
-    };
-  };
-
-  class MyObserver : public ObserverBase<MyObserver>
-  {
-  public:
-    void HandleCompletedMessage(const MyObservable::MyCustomMessage& message)
-    {
-      testCounter += message.payload_;
-    }
-  };
-}
-
-
-TEST(MessageBroker, TestPermanentConnectionSimpleUseCase)
-{
-  MyObservable  observable;
-  boost::shared_ptr<MyObserver>  observer(new MyObserver);
-
-  // create a permanent connection between an observable and an observer
-  observer->Register<MyObservable::MyCustomMessage>(observable, &MyObserver::HandleCompletedMessage);
-
-  testCounter = 0;
-  observable.BroadcastMessage(MyObservable::MyCustomMessage(12));
-  ASSERT_EQ(12, testCounter);
-
-  // the connection is permanent; if we emit the same message again, the observer will be notified again
-  testCounter = 0;
-  observable.BroadcastMessage(MyObservable::MyCustomMessage(20));
-  ASSERT_EQ(20, testCounter);
-
-  // Unregister the observer; make sure it's not called anymore
-  observer.reset();
-  testCounter = 0;
-  observable.BroadcastMessage(MyObservable::MyCustomMessage(20));
-  ASSERT_EQ(0, testCounter);
-}
-
-TEST(MessageBroker, TestPermanentConnectionDeleteObserver)
-{
-  MyObservable  observable;
-  boost::shared_ptr<MyObserver>  observer(new MyObserver);
-
-  // create a permanent connection between an observable and an observer
-  observer->Register<MyObservable::MyCustomMessage>(observable, &MyObserver::HandleCompletedMessage);
-
-  testCounter = 0;
-  observable.BroadcastMessage(MyObservable::MyCustomMessage(12));
-  ASSERT_EQ(12, testCounter);
-
-  // delete the observer and check that the callback is not called anymore
-  observer.reset();
-
-  // the connection is permanent; if we emit the same message again, the observer will be notified again
-  testCounter = 0;
-  observable.BroadcastMessage(MyObservable::MyCustomMessage(20));
-  ASSERT_EQ(0, testCounter);
-}
--- a/UnitTestsSources/TestStrategy.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include <gtest/gtest.h>
-
-#include "../Framework/Loaders/BasicFetchingStrategy.h"
-#include "../Framework/Loaders/BasicFetchingItemsSorter.h"
-
-#include <OrthancException.h>
-
-
-namespace
-{
-  class StrategyTester : public boost::noncopyable
-  {
-  private:
-    std::map<unsigned int, unsigned int>  qualities_;
-
-  public:
-    bool IsValidCommand(unsigned int item,
-                        unsigned int quality)
-    {
-      if (qualities_.find(item) != qualities_.end() &&
-          qualities_[item] >= quality)
-      {
-        return false;
-      }
-      else
-      {
-        qualities_[item] = quality;
-        return true;
-      }
-    }
-
-    bool HasFinished(OrthancStone::BasicFetchingStrategy& strategy)
-    {
-      for (unsigned int i = 0; i < strategy.GetItemsCount(); i++)
-      {
-        if (qualities_.find(i) == qualities_.end() ||
-            qualities_[i] != strategy.GetMaxQuality())
-        {
-          return false;
-        }
-      }
-
-      return true;
-    }
-  };
-}
-
-
-TEST(BasicFetchingStrategy, Test1)
-{
-  ASSERT_THROW(OrthancStone::BasicFetchingStrategy(NULL, 0), Orthanc::OrthancException);
-  ASSERT_THROW(OrthancStone::BasicFetchingStrategy(new OrthancStone::BasicFetchingItemsSorter(0), 0), Orthanc::OrthancException);
-
-  {
-    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(1), 0);
-    unsigned int i, q;
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(0u, q);
-    ASSERT_FALSE(s.GetNext(i, q));
-  }
-
-  {
-    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(1), 5);
-    unsigned int i, q;
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(5u, q);
-    ASSERT_FALSE(s.GetNext(i, q));
-  }
-
-  {
-    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(2), 2);
-    unsigned int i, q;
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(2u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(1u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(2u, q);
-    ASSERT_FALSE(s.GetNext(i, q));
-  }
-
-  {
-    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(3), 2);
-    unsigned int i, q;
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(2u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(1u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(1u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(2u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(2u, q);
-    ASSERT_FALSE(s.GetNext(i, q));
-  }
-
-  {
-    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(3), 2);
-    s.SetBlockSize(1);
-    s.SetCurrent(0);
-    unsigned int i, q;
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(2u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(1u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(2u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(0u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(1u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(2u, q);
-    ASSERT_FALSE(s.GetNext(i, q));
-  }
-
-  {
-    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(5), 0);
-    ASSERT_THROW(s.SetCurrent(5), Orthanc::OrthancException);
-    s.SetCurrent(2);
-
-    unsigned int i, q;
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(0u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(3u, i);  ASSERT_EQ(0u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(0u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(4u, i);  ASSERT_EQ(0u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(0u, q);
-    ASSERT_FALSE(s.GetNext(i, q));
-  }
-
-  {
-    OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(5), 0);
-    s.SetCurrent(4);
-
-    unsigned int i, q;
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(4u, i);  ASSERT_EQ(0u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(3u, i);  ASSERT_EQ(0u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(2u, i);  ASSERT_EQ(0u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(1u, i);  ASSERT_EQ(0u, q);
-    ASSERT_TRUE(s.GetNext(i, q));   ASSERT_EQ(0u, i);  ASSERT_EQ(0u, q);
-    ASSERT_FALSE(s.GetNext(i, q));
-  }
-}
-
-
-TEST(BasicFetchingStrategy, Test2)
-{
-  OrthancStone::BasicFetchingStrategy s(new OrthancStone::BasicFetchingItemsSorter(20), 2);
-  ASSERT_EQ(20u, s.GetItemsCount());
-  ASSERT_EQ(2u, s.GetMaxQuality());
-
-  StrategyTester t;
-
-  s.SetCurrent(10);
-
-  unsigned int i, q;
-  while (s.GetNext(i, q))
-  {
-    ASSERT_TRUE(t.IsValidCommand(i, q));
-  }
-
-  ASSERT_TRUE(t.HasFinished(s));
-}
-
-
-
-
-TEST(BasicFetchingItemsSorter, Small)
-{
-  ASSERT_THROW(OrthancStone::BasicFetchingItemsSorter(0), Orthanc::OrthancException);
-  std::vector<unsigned int> v;
-
-  {
-    OrthancStone::BasicFetchingItemsSorter s(1);
-    s.Sort(v, 0);
-    ASSERT_EQ(1u, v.size());
-    ASSERT_EQ(0u, v[0]);
-
-    ASSERT_THROW(s.Sort(v, 1), Orthanc::OrthancException);
-  }
-
-  {
-    OrthancStone::BasicFetchingItemsSorter s(2);
-    s.Sort(v, 0);
-    ASSERT_EQ(2u, v.size());
-    ASSERT_EQ(0u, v[0]);
-    ASSERT_EQ(1u, v[1]);
-
-    s.Sort(v, 1);
-    ASSERT_EQ(2u, v.size());
-    ASSERT_EQ(1u, v[0]);
-    ASSERT_EQ(0u, v[1]);
-
-    ASSERT_THROW(s.Sort(v, 2), Orthanc::OrthancException);
-  }
-
-  {
-    OrthancStone::BasicFetchingItemsSorter s(3);
-    s.Sort(v, 0);
-    ASSERT_EQ(3u, v.size());
-    ASSERT_EQ(0u, v[0]);
-    ASSERT_EQ(1u, v[1]);
-    ASSERT_EQ(2u, v[2]);
-    
-    s.Sort(v, 1);
-    ASSERT_EQ(3u, v.size());
-    ASSERT_EQ(1u, v[0]);
-    ASSERT_EQ(2u, v[1]);
-    ASSERT_EQ(0u, v[2]);
-    
-    s.Sort(v, 2);
-    ASSERT_EQ(3u, v.size());
-    ASSERT_EQ(2u, v[0]);
-    ASSERT_EQ(1u, v[1]);
-    ASSERT_EQ(0u, v[2]);
-    
-    ASSERT_THROW(s.Sort(v, 3), Orthanc::OrthancException);
-  }
-}
-
-
-TEST(BasicFetchingItemsSorter, Odd)
-{
-  OrthancStone::BasicFetchingItemsSorter s(7);
-  std::vector<unsigned int> v;
-
-  ASSERT_THROW(s.Sort(v, 7), Orthanc::OrthancException);
-
-  {
-    s.Sort(v, 0);
-    ASSERT_EQ(7u, v.size());
-    ASSERT_EQ(0u, v[0]);
-    ASSERT_EQ(1u, v[1]);
-    ASSERT_EQ(2u, v[2]);
-    ASSERT_EQ(3u, v[3]);
-    ASSERT_EQ(4u, v[4]);
-    ASSERT_EQ(5u, v[5]);
-    ASSERT_EQ(6u, v[6]);
-  }
-
-  {
-    s.Sort(v, 1);
-    ASSERT_EQ(7u, v.size());
-    ASSERT_EQ(1u, v[0]);
-    ASSERT_EQ(2u, v[1]);
-    ASSERT_EQ(0u, v[2]);
-    ASSERT_EQ(3u, v[3]);
-    ASSERT_EQ(4u, v[4]);
-    ASSERT_EQ(5u, v[5]);
-    ASSERT_EQ(6u, v[6]);
-  }
-
-  {
-    s.Sort(v, 2);
-    ASSERT_EQ(7u, v.size());
-    ASSERT_EQ(2u, v[0]);
-    ASSERT_EQ(3u, v[1]);
-    ASSERT_EQ(1u, v[2]);
-    ASSERT_EQ(4u, v[3]);
-    ASSERT_EQ(0u, v[4]);
-    ASSERT_EQ(5u, v[5]);
-    ASSERT_EQ(6u, v[6]);
-  }
-
-  {
-    s.Sort(v, 3);
-    ASSERT_EQ(7u, v.size());
-    ASSERT_EQ(3u, v[0]);
-    ASSERT_EQ(4u, v[1]);
-    ASSERT_EQ(2u, v[2]);
-    ASSERT_EQ(5u, v[3]);
-    ASSERT_EQ(1u, v[4]);
-    ASSERT_EQ(6u, v[5]);
-    ASSERT_EQ(0u, v[6]);
-  }
-
-  {
-    s.Sort(v, 4);
-    ASSERT_EQ(7u, v.size());
-    ASSERT_EQ(4u, v[0]);
-    ASSERT_EQ(5u, v[1]);
-    ASSERT_EQ(3u, v[2]);
-    ASSERT_EQ(6u, v[3]);
-    ASSERT_EQ(2u, v[4]);
-    ASSERT_EQ(1u, v[5]);
-    ASSERT_EQ(0u, v[6]);
-  }
-
-  {
-    s.Sort(v, 5);
-    ASSERT_EQ(7u, v.size());
-    ASSERT_EQ(5u, v[0]);
-    ASSERT_EQ(6u, v[1]);
-    ASSERT_EQ(4u, v[2]);
-    ASSERT_EQ(3u, v[3]);
-    ASSERT_EQ(2u, v[4]);
-    ASSERT_EQ(1u, v[5]);
-    ASSERT_EQ(0u, v[6]);
-  }
-
-  {
-    s.Sort(v, 6);
-    ASSERT_EQ(7u, v.size());
-    ASSERT_EQ(6u, v[0]);
-    ASSERT_EQ(5u, v[1]);
-    ASSERT_EQ(4u, v[2]);
-    ASSERT_EQ(3u, v[3]);
-    ASSERT_EQ(2u, v[4]);
-    ASSERT_EQ(1u, v[5]);
-    ASSERT_EQ(0u, v[6]);
-  }
-}
-
-
-TEST(BasicFetchingItemsSorter, Even)
-{
-  OrthancStone::BasicFetchingItemsSorter s(6);
-  std::vector<unsigned int> v;
-
-  {
-    s.Sort(v, 0);
-    ASSERT_EQ(6u, v.size());
-    ASSERT_EQ(0u, v[0]);
-    ASSERT_EQ(1u, v[1]);
-    ASSERT_EQ(2u, v[2]);
-    ASSERT_EQ(3u, v[3]);
-    ASSERT_EQ(4u, v[4]);
-    ASSERT_EQ(5u, v[5]);
-  }
-
-  {
-    s.Sort(v, 1);
-    ASSERT_EQ(6u, v.size());
-    ASSERT_EQ(1u, v[0]);
-    ASSERT_EQ(2u, v[1]);
-    ASSERT_EQ(0u, v[2]);
-    ASSERT_EQ(3u, v[3]);
-    ASSERT_EQ(4u, v[4]);
-    ASSERT_EQ(5u, v[5]);
-  }
-
-  {
-    s.Sort(v, 2);
-    ASSERT_EQ(6u, v.size());
-    ASSERT_EQ(2u, v[0]);
-    ASSERT_EQ(3u, v[1]);
-    ASSERT_EQ(1u, v[2]);
-    ASSERT_EQ(4u, v[3]);
-    ASSERT_EQ(0u, v[4]);
-    ASSERT_EQ(5u, v[5]);
-  }
-
-  {
-    s.Sort(v, 3);
-    ASSERT_EQ(6u, v.size());
-    ASSERT_EQ(3u, v[0]);
-    ASSERT_EQ(4u, v[1]);
-    ASSERT_EQ(2u, v[2]);
-    ASSERT_EQ(5u, v[3]);
-    ASSERT_EQ(1u, v[4]);
-    ASSERT_EQ(0u, v[5]);
-  }
-
-  {
-    s.Sort(v, 4);
-    ASSERT_EQ(6u, v.size());
-    ASSERT_EQ(4u, v[0]);
-    ASSERT_EQ(5u, v[1]);
-    ASSERT_EQ(3u, v[2]);
-    ASSERT_EQ(2u, v[3]);
-    ASSERT_EQ(1u, v[4]);
-    ASSERT_EQ(0u, v[5]);
-  }
-
-  {
-    s.Sort(v, 5);
-    ASSERT_EQ(6u, v.size());
-    ASSERT_EQ(5u, v[0]);
-    ASSERT_EQ(4u, v[1]);
-    ASSERT_EQ(3u, v[2]);
-    ASSERT_EQ(2u, v[3]);
-    ASSERT_EQ(1u, v[4]);
-    ASSERT_EQ(0u, v[5]);
-  }
-}
--- a/UnitTestsSources/TestStructureSet.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5770 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-// working around a bug where the Visual C++ compiler would get 
-// stuck trying to compile this cpp file in release mode
-// (versions: https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B)
-#ifdef _MSC_VER
-#  pragma optimize("", off)
-// warning C4748: /GS can not protect parameters and local variables from
-// local buffer overrun because optimizations are disabled in function
-#  pragma warning(disable: 4748)
-#endif
-
-#include "../Framework/Loaders/DicomStructureSetLoader.h"
-#include "../Framework/Loaders/GenericLoadersContext.h"
-#include "../Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h"
-#include "../Framework/Toolbox/DicomStructureSet2.h"
-#include "../Framework/Toolbox/DicomStructureSetUtils.h"
-#include "../Framework/Toolbox/DisjointDataSet.h"
-
-#include <boost/date_time/posix_time/posix_time.hpp>
-#include <boost/make_shared.hpp>
-
-#include <SystemToolbox.h>
-
-#include <gtest/gtest.h>
-#include <string>
-
-using namespace Orthanc;
-using namespace OrthancStone;
-
-/*
-The following string is the reply to the following Orthanc request:
-
-http://localhost:8042/instances/1aa5f84b-c32a03b4-3c1857da-da2e69f3-3ef6e2b3/tags?ignore-length=3006-0050
-
-The tag hierarchy can be found here: https://dicom.innolitics.com/ciods/rt-dose
-*/
-
-const double DELTA_MAX = 10.0 * std::numeric_limits<float>::epsilon();
-
-#ifdef _MSC_VER
-#pragma region BigJsonString
-#endif
-// _MSC_VER
-const char* k_rtStruct_json00 =
-"{\n"
-"   \"0008,0005\" : {\n"
-"      \"Name\" : \"SpecificCharacterSet\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"ISO_IR 100\"\n"
-"   },\n"
-"   \"0008,0012\" : {\n"
-"      \"Name\" : \"InstanceCreationDate\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"20190318\"\n"
-"   },\n"
-"   \"0008,0013\" : {\n"
-"      \"Name\" : \"InstanceCreationTime\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"182529\"\n"
-"   },\n"
-"   \"0008,0016\" : {\n"
-"      \"Name\" : \"SOPClassUID\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"1.2.840.10008.5.1.4.1.1.481.3\"\n"
-"   },\n"
-"   \"0008,0018\" : {\n"
-"      \"Name\" : \"SOPInstanceUID\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"1.2.752.243.1.1.20190318182529549.3500.4285482120751\"\n"
-"   },\n"
-"   \"0008,0020\" : {\n"
-"      \"Name\" : \"StudyDate\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"20190225\"\n"
-"   },\n"
-"   \"0008,0030\" : {\n"
-"      \"Name\" : \"StudyTime\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"135152\"\n"
-"   },\n"
-"   \"0008,0050\" : {\n"
-"      \"Name\" : \"AccessionNumber\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"897154\"\n"
-"   },\n"
-"   \"0008,0060\" : {\n"
-"      \"Name\" : \"Modality\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"RTSTRUCT\"\n"
-"   },\n"
-"   \"0008,0070\" : {\n"
-"      \"Name\" : \"Manufacturer\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"RaySearch Laboratories\"\n"
-"   },\n"
-"   \"0008,0090\" : {\n"
-"      \"Name\" : \"ReferringPhysicianName\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"\"\n"
-"   },\n"
-"   \"0008,1030\" : {\n"
-"      \"Name\" : \"StudyDescription\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"CT ohne KM\"\n"
-"   },\n"
-"   \"0008,103e\" : {\n"
-"      \"Name\" : \"SeriesDescription\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"RS: Approved Structure Set\"\n"
-"   },\n"
-"   \"0008,1070\" : {\n"
-"      \"Name\" : \"OperatorsName\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"\"\n"
-"   },\n"
-"   \"0008,1090\" : {\n"
-"      \"Name\" : \"ManufacturerModelName\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"RayStation\"\n"
-"   },\n"
-"   \"0010,0010\" : {\n"
-"      \"Name\" : \"PatientName\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"Karamazov^Serge\"\n"
-"   },\n"
-"   \"0010,0020\" : {\n"
-"      \"Name\" : \"PatientID\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"66498\"\n"
-"   },\n"
-"   \"0010,0030\" : {\n"
-"      \"Name\" : \"PatientBirthDate\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"19630511\"\n"
-"   },\n"
-"   \"0010,0040\" : {\n"
-"      \"Name\" : \"PatientSex\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"F\"\n"
-"   },\n"
-"   \"0018,1020\" : {\n"
-"      \"Name\" : \"SoftwareVersions\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"7.0.0.19 (Dicom Export)\"\n"
-"   },\n"
-"   \"0020,000d\" : {\n"
-"      \"Name\" : \"StudyInstanceUID\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"1.2.840.113854.1977802846882851650617130240362685394\"\n"
-"   },\n"
-"   \"0020,000e\" : {\n"
-"      \"Name\" : \"SeriesInstanceUID\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"1.2.752.243.1.1.20190318182529549.3582165\"\n"
-"   },\n"
-"   \"0020,0010\" : {\n"
-"      \"Name\" : \"StudyID\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"467\"\n"
-"   },\n"
-"   \"0020,0011\" : {\n"
-"      \"Name\" : \"SeriesNumber\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"1\"\n"
-"   },\n"
-"   \"0020,0052\" : {\n"
-"      \"Name\" : \"FrameOfReferenceUID\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965689415626\"\n"
-"   },\n"
-"   \"0020,1040\" : {\n"
-"      \"Name\" : \"PositionReferenceIndicator\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"\"\n"
-"   },\n"
-"   \"3006,0002\" : {\n"
-"      \"Name\" : \"StructureSetLabel\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"RS: Approved\"\n"
-"   },\n"
-"   \"3006,0008\" : {\n"
-"      \"Name\" : \"StructureSetDate\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"20190318\"\n"
-"   },\n"
-"   \"3006,0009\" : {\n"
-"      \"Name\" : \"StructureSetTime\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"182529\"\n"
-"   },\n"
-"   \"3006,0010\" : {\n"
-"      \"Name\" : \"ReferencedFrameOfReferenceSequence\",\n"
-"      \"Type\" : \"Sequence\",\n"
-"      \"Value\" : [\n"
-"         {\n"
-"            \"0020,0052\" : {\n"
-"               \"Name\" : \"FrameOfReferenceUID\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.47019656894156\"\n"
-"            },\n"
-"            \"3006,0012\" : {\n"
-"               \"Name\" : \"RTReferencedStudySequence\",\n"
-"               \"Type\" : \"Sequence\",\n"
-"               \"Value\" : [\n"
-"                  {\n"
-"                     \"0008,1150\" : {\n"
-"                        \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"1.2.840.10008.3.1.2.3.1\"\n"
-"                     },\n"
-"                     \"0008,1155\" : {\n"
-"                        \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"1.2.840.113854.1977802846882851650617130240362685\"\n"
-"                     },\n"
-"                     \"3006,0014\" : {\n"
-"                        \"Name\" : \"RTReferencedSeriesSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0020,000e\" : {\n"
-"                                 \"Name\" : \"SeriesInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.752.243.1.1.20190318182529549.3582165\"\n"
-"                              },\n"
-"                              \"3006,0016\" : {\n"
-"                                 \"Name\" : \"ContourImageSequence\",\n"
-"                                 \"Type\" : \"Sequence\",\n"
-"                                 \"Value\" : [\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699846442461900001.533642576430\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699846477463900001.467218939844\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699846504465400001.571321740640\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699846528466800001.465226999207\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848817597700001.509440095881\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848849599600001.538291679804\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848866600500001.541849142008\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848890601900001.533619501923\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848911603100001.549938975401\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848933604400001.474954755728\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848957605700001.539833993627\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699848978606900001.507522632828\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851016723500001.512636853846\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851035724600001.533642609670\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851068726500001.546012551665\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851092727900001.507332422180\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851113729100001.470312254320\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851133730200001.543478973601\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851156731500001.532752123275\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851179732800001.515857303411\"\n"
-"                                       }\n"
-"                                    },\n"
-"                                    {\n"
-"                                       \"0008,1150\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                                       },\n"
-"                                       \"0008,1155\" : {\n"
-"                                          \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                          \"Type\" : \"String\",\n"
-"                                          \"Value\" : \"1.3.46.670589.33.1.63686699851194733700001.468081152243\"\n"
-"                                       }\n"
-"                                    }\n"
-"                                 ]\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     }\n"
-"                  }\n"
-"               ]\n"
-"            }\n"
-"         }\n"
-"      ]\n"
-"   },\n"
-"   \"3006,0020\" : {\n"
-"      \"Name\" : \"StructureSetROISequence\",\n"
-"      \"Type\" : \"Sequence\",\n"
-"      \"Value\" : [\n"
-"         {\n"
-"            \"3006,0022\" : {\n"
-"               \"Name\" : \"ROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1\"\n"
-"            },\n"
-"            \"3006,0024\" : {\n"
-"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
-"            },\n"
-"            \"3006,0026\" : {\n"
-"               \"Name\" : \"ROIName\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"LN300\"\n"
-"            },\n"
-"            \"3006,0036\" : {\n"
-"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"SEMIAUTOMATIC\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0022\" : {\n"
-"               \"Name\" : \"ROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"2\"\n"
-"            },\n"
-"            \"3006,0024\" : {\n"
-"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
-"            },\n"
-"            \"3006,0026\" : {\n"
-"               \"Name\" : \"ROIName\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"Cortical Bone\"\n"
-"            },\n"
-"            \"3006,0036\" : {\n"
-"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"SEMIAUTOMATIC\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0022\" : {\n"
-"               \"Name\" : \"ROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"3\"\n"
-"            },\n"
-"            \"3006,0024\" : {\n"
-"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
-"            },\n"
-"            \"3006,0026\" : {\n"
-"               \"Name\" : \"ROIName\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"Adipose\"\n"
-"            },\n"
-"            \"3006,0036\" : {\n"
-"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"SEMIAUTOMATIC\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0022\" : {\n"
-"               \"Name\" : \"ROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"4\"\n"
-"            },\n"
-"            \"3006,0024\" : {\n"
-"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
-"            },\n"
-"            \"3006,0026\" : {\n"
-"               \"Name\" : \"ROIName\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"CB2-50%\"\n"
-"            },\n"
-"            \"3006,0036\" : {\n"
-"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"SEMIAUTOMATIC\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0022\" : {\n"
-"               \"Name\" : \"ROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"5\"\n"
-"            },\n"
-"            \"3006,0024\" : {\n"
-"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
-"            },\n"
-"            \"3006,0026\" : {\n"
-"               \"Name\" : \"ROIName\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"Water\"\n"
-"            },\n"
-"            \"3006,0036\" : {\n"
-"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"SEMIAUTOMATIC\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0022\" : {\n"
-"               \"Name\" : \"ROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"10\"\n"
-"            },\n"
-"            \"3006,0024\" : {\n"
-"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
-"            },\n"
-"            \"3006,0026\" : {\n"
-"               \"Name\" : \"ROIName\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"External\"\n"
-"            },\n"
-"            \"3006,0036\" : {\n"
-"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"SEMIAUTOMATIC\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0022\" : {\n"
-"               \"Name\" : \"ROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"11\"\n"
-"            },\n"
-"            \"3006,0024\" : {\n"
-"               \"Name\" : \"ReferencedFrameOfReferenceUID\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1.3.46.670589.33.1.63686699677866819900002.4701965682522348054\"\n"
-"            },\n"
-"            \"3006,0026\" : {\n"
-"               \"Name\" : \"ROIName\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"PTV\"\n"
-"            },\n"
-"            \"3006,0036\" : {\n"
-"               \"Name\" : \"ROIGenerationAlgorithm\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"SEMIAUTOMATIC\"\n"
-"            }\n"
-"         }\n"
-"      ]\n"
-"   },\n"
-"   \"3006,0039\" : {\n"
-"      \"Name\" : \"ROIContourSequence\",\n"
-"      \"Type\" : \"Sequence\",\n"
-"      \"Value\" : [\n"
-"         {\n"
-"            \"3006,002a\" : {\n"
-"               \"Name\" : \"ROIDisplayColor\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"255\\\\0\\\\0\"\n"
-"            },\n"
-"            \"3006,0040\" : {\n"
-"               \"Name\" : \"ContourSequence\",\n"
-"               \"Type\" : \"Sequence\",\n"
-"               \"Value\" : [\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"0\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"7.657838\\\\108.2725\\\\304.01\\\\6.826687\\\\107.4413\\\\304.01\\\\6.152492\\\\106.4785\\\\304.01\\\\5.655735\\\\105.4132\\\\304.01\\\\5.351513\\\\104.2778\\\\304.01\\\\5.249068\\\\103.1069\\\\304.01\\\\5.351513\\\\101.9359\\\\304.01\\\\5.655735\\\\100.8005\\\\304.01\\\\6.152492\\\\99.73524\\\\304.01\\\\6.826687\\\\98.77239\\\\304.01\\\\7.657838\\\\97.94124\\\\304.01\\\\8.620689\\\\97.26704\\\\304.01\\\\9.685987\\\\96.77029\\\\304.01\\\\10.82136\\\\96.46606\\\\304.01\\\\11.99231\\\\96.36362\\\\304.01\\\\13.16326\\\\96.46606\\\\304.01\\\\14.29864\\\\96.77029\\\\304.01\\\\15.36393\\\\97.26704\\\\304.01\\\\16.32678\\\\97.94124\\\\304.01\\\\17.15794\\\\98.77239\\\\304.01\\\\17.83213\\\\99.73524\\\\304.01\\\\18.32889\\\\100.8005\\\\304.01\\\\18.63311\\\\101.9359\\\\304.01\\\\18.73555\\\\103.1069\\\\304.01\\\\18.63311\\\\104.2778\\\\304.01\\\\18.32889\\\\105.4132\\\\304.01\\\\17.83213\\\\106.4785\\\\304.01\\\\17.15794\\\\107.4413\\\\304.01\\\\16.32678\\\\108.2725\\\\304.01\\\\15.36393\\\\108.9467\\\\304.01\\\\14.29864\\\\109.4434\\\\304.01\\\\13.16326\\\\109.7477\\\\304.01\\\\11.99231\\\\109.8501\\\\304.01\\\\10.82136\\\\109.7477\\\\304.01\\\\9.685987\\\\109.4434\\\\304.01\\\\8.620689\\\\108.9467\\\\304.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"1\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"7.657838\\\\108.2725\\\\307.01\\\\6.826687\\\\107.4413\\\\307.01\\\\6.152492\\\\106.4785\\\\307.01\\\\5.655735\\\\105.4132\\\\307.01\\\\5.351513\\\\104.2778\\\\307.01\\\\5.249068\\\\103.1069\\\\307.01\\\\5.351513\\\\101.9359\\\\307.01\\\\5.655735\\\\100.8005\\\\307.01\\\\6.152492\\\\99.73524\\\\307.01\\\\6.826687\\\\98.77239\\\\307.01\\\\7.657838\\\\97.94124\\\\307.01\\\\8.620689\\\\97.26704\\\\307.01\\\\9.685987\\\\96.77029\\\\307.01\\\\10.82136\\\\96.46606\\\\307.01\\\\11.99231\\\\96.36362\\\\307.01\\\\13.16326\\\\96.46606\\\\307.01\\\\14.29864\\\\96.77029\\\\307.01\\\\15.36393\\\\97.26704\\\\307.01\\\\16.32678\\\\97.94124\\\\307.01\\\\17.15794\\\\98.77239\\\\307.01\\\\17.83213\\\\99.73524\\\\307.01\\\\18.32889\\\\100.8005\\\\307.01\\\\18.63311\\\\101.9359\\\\307.01\\\\18.73555\\\\103.1069\\\\307.01\\\\18.63311\\\\104.2778\\\\307.01\\\\18.32889\\\\105.4132\\\\307.01\\\\17.83213\\\\106.4785\\\\307.01\\\\17.15794\\\\107.4413\\\\307.01\\\\16.32678\\\\108.2725\\\\307.01\\\\15.36393\\\\108.9467\\\\307.01\\\\14.29864\\\\109.4434\\\\307.01\\\\13.16326\\\\109.7477\\\\307.01\\\\11.99231\\\\109.8501\\\\307.01\\\\10.82136\\\\109.7477\\\\307.01\\\\9.685987\\\\109.4434\\\\307.01\\\\8.620689\\\\108.9467\\\\307.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"2\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"7.657838\\\\108.2725\\\\310.01\\\\6.826687\\\\107.4413\\\\310.01\\\\6.152492\\\\106.4785\\\\310.01\\\\5.655735\\\\105.4132\\\\310.01\\\\5.351513\\\\104.2778\\\\310.01\\\\5.249068\\\\103.1069\\\\310.01\\\\5.351513\\\\101.9359\\\\310.01\\\\5.655735\\\\100.8005\\\\310.01\\\\6.152492\\\\99.73524\\\\310.01\\\\6.826687\\\\98.77239\\\\310.01\\\\7.657838\\\\97.94124\\\\310.01\\\\8.620689\\\\97.26704\\\\310.01\\\\9.685987\\\\96.77029\\\\310.01\\\\10.82136\\\\96.46606\\\\310.01\\\\11.99231\\\\96.36362\\\\310.01\\\\13.16326\\\\96.46606\\\\310.01\\\\14.29864\\\\96.77029\\\\310.01\\\\15.36393\\\\97.26704\\\\310.01\\\\16.32678\\\\97.94124\\\\310.01\\\\17.15794\\\\98.77239\\\\310.01\\\\17.83213\\\\99.73524\\\\310.01\\\\18.32889\\\\100.8005\\\\310.01\\\\18.63311\\\\101.9359\\\\310.01\\\\18.73555\\\\103.1069\\\\310.01\\\\18.63311\\\\104.2778\\\\310.01\\\\18.32889\\\\105.4132\\\\310.01\\\\17.83213\\\\106.4785\\\\310.01\\\\17.15794\\\\107.4413\\\\310.01\\\\16.32678\\\\108.2725\\\\310.01\\\\15.36393\\\\108.9467\\\\310.01\\\\14.29864\\\\109.4434\\\\310.01\\\\13.16326\\\\109.7477\\\\310.01\\\\11.99231\\\\109.8501\\\\310.01\\\\10.82136\\\\109.7477\\\\310.01\\\\9.685987\\\\109.4434\\\\310.01\\\\8.620689\\\\108.9467\\\\310.01\"\n"
-"                     }\n"
-"                  }\n"
-"               ]\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,002a\" : {\n"
-"               \"Name\" : \"ROIDisplayColor\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"0\\\\255\\\\255\"\n"
-"            },\n"
-"            \"3006,0040\" : {\n"
-"               \"Name\" : \"ContourSequence\",\n"
-"               \"Type\" : \"Sequence\",\n"
-"               \"Value\" : [\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"0\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-37.967\\\\161.9664\\\\304.01\\\\-39.10237\\\\161.6622\\\\304.01\\\\-40.16767\\\\161.1655\\\\304.01\\\\-41.13052\\\\160.4913\\\\304.01\\\\-41.96167\\\\159.6601\\\\304.01\\\\-42.63587\\\\158.6973\\\\304.01\\\\-43.13263\\\\157.632\\\\304.01\\\\-43.43685\\\\156.4966\\\\304.01\\\\-43.53929\\\\155.3257\\\\304.01\\\\-43.43685\\\\154.1547\\\\304.01\\\\-43.13263\\\\153.0193\\\\304.01\\\\-42.63587\\\\151.954\\\\304.01\\\\-41.96167\\\\150.9912\\\\304.01\\\\-41.13052\\\\150.16\\\\304.01\\\\-40.16767\\\\149.4858\\\\304.01\\\\-39.10237\\\\148.9891\\\\304.01\\\\-37.967\\\\148.6849\\\\304.01\\\\-36.79605\\\\148.5824\\\\304.01\\\\-35.6251\\\\148.6849\\\\304.01\\\\-34.48972\\\\148.9891\\\\304.01\\\\-33.42443\\\\149.4858\\\\304.01\\\\-32.46157\\\\150.16\\\\304.01\\\\-31.63042\\\\150.9912\\\\304.01\\\\-30.95623\\\\151.954\\\\304.01\\\\-30.45947\\\\153.0193\\\\304.01\\\\-30.15525\\\\154.1547\\\\304.01\\\\-30.0528\\\\155.3257\\\\304.01\\\\-30.15525\\\\156.4966\\\\304.01\\\\-30.45947\\\\157.632\\\\304.01\\\\-30.95623\\\\158.6973\\\\304.01\\\\-31.63042\\\\159.6601\\\\304.01\\\\-32.46157\\\\160.4913\\\\304.01\\\\-33.42443\\\\161.1655\\\\304.01\\\\-34.48972\\\\161.6622\\\\304.01\\\\-35.6251\\\\161.9664\\\\304.01\\\\-36.79605\\\\162.0689\\\\304.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"1\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-37.967\\\\161.9664\\\\307.01\\\\-39.10237\\\\161.6622\\\\307.01\\\\-40.16767\\\\161.1655\\\\307.01\\\\-41.13052\\\\160.4913\\\\307.01\\\\-41.96167\\\\159.6601\\\\307.01\\\\-42.63587\\\\158.6973\\\\307.01\\\\-43.13263\\\\157.632\\\\307.01\\\\-43.43685\\\\156.4966\\\\307.01\\\\-43.53929\\\\155.3257\\\\307.01\\\\-43.43685\\\\154.1547\\\\307.01\\\\-43.13263\\\\153.0193\\\\307.01\\\\-42.63587\\\\151.954\\\\307.01\\\\-41.96167\\\\150.9912\\\\307.01\\\\-41.13052\\\\150.16\\\\307.01\\\\-40.16767\\\\149.4858\\\\307.01\\\\-39.10237\\\\148.9891\\\\307.01\\\\-37.967\\\\148.6849\\\\307.01\\\\-36.79605\\\\148.5824\\\\307.01\\\\-35.6251\\\\148.6849\\\\307.01\\\\-34.48972\\\\148.9891\\\\307.01\\\\-33.42443\\\\149.4858\\\\307.01\\\\-32.46157\\\\150.16\\\\307.01\\\\-31.63042\\\\150.9912\\\\307.01\\\\-30.95623\\\\151.954\\\\307.01\\\\-30.45947\\\\153.0193\\\\307.01\\\\-30.15525\\\\154.1547\\\\307.01\\\\-30.0528\\\\155.3257\\\\307.01\\\\-30.15525\\\\156.4966\\\\307.01\\\\-30.45947\\\\157.632\\\\307.01\\\\-30.95623\\\\158.6973\\\\307.01\\\\-31.63042\\\\159.6601\\\\307.01\\\\-32.46157\\\\160.4913\\\\307.01\\\\-33.42443\\\\161.1655\\\\307.01\\\\-34.48972\\\\161.6622\\\\307.01\\\\-35.6251\\\\161.9664\\\\307.01\\\\-36.79605\\\\162.0689\\\\307.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"2\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-37.967\\\\161.9664\\\\310.01\\\\-39.10237\\\\161.6622\\\\310.01\\\\-40.16767\\\\161.1655\\\\310.01\\\\-41.13052\\\\160.4913\\\\310.01\\\\-41.96167\\\\159.6601\\\\310.01\\\\-42.63587\\\\158.6973\\\\310.01\\\\-43.13263\\\\157.632\\\\310.01\\\\-43.43685\\\\156.4966\\\\310.01\\\\-43.53929\\\\155.3257\\\\310.01\\\\-43.43685\\\\154.1547\\\\310.01\\\\-43.13263\\\\153.0193\\\\310.01\\\\-42.63587\\\\151.954\\\\310.01\\\\-41.96167\\\\150.9912\\\\310.01\\\\-41.13052\\\\150.16\\\\310.01\\\\-40.16767\\\\149.4858\\\\310.01\\\\-39.10237\\\\148.9891\\\\310.01\\\\-37.967\\\\148.6849\\\\310.01\\\\-36.79605\\\\148.5824\\\\310.01\\\\-35.6251\\\\148.6849\\\\310.01\\\\-34.48972\\\\148.9891\\\\310.01\\\\-33.42443\\\\149.4858\\\\310.01\\\\-32.46157\\\\150.16\\\\310.01\\\\-31.63042\\\\150.9912\\\\310.01\\\\-30.95623\\\\151.954\\\\310.01\\\\-30.45947\\\\153.0193\\\\310.01\\\\-30.15525\\\\154.1547\\\\310.01\\\\-30.0528\\\\155.3257\\\\310.01\\\\-30.15525\\\\156.4966\\\\310.01\\\\-30.45947\\\\157.632\\\\310.01\\\\-30.95623\\\\158.6973\\\\310.01\\\\-31.63042\\\\159.6601\\\\310.01\\\\-32.46157\\\\160.4913\\\\310.01\\\\-33.42443\\\\161.1655\\\\310.01\\\\-34.48972\\\\161.6622\\\\310.01\\\\-35.6251\\\\161.9664\\\\310.01\\\\-36.79605\\\\162.0689\\\\310.01\"\n"
-"                     }\n"
-"                  }\n"
-"               ]\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"2\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,002a\" : {\n"
-"               \"Name\" : \"ROIDisplayColor\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"255\\\\0\\\\255\"\n"
-"            },\n"
-"            \"3006,0040\" : {\n"
-"               \"Name\" : \"ContourSequence\",\n"
-"               \"Type\" : \"Sequence\",\n"
-"               \"Value\" : [\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"0\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"69.4042\\\\150.7324\\\\304.01\\\\69.70842\\\\151.8678\\\\304.01\\\\69.81087\\\\153.0387\\\\304.01\\\\69.70842\\\\154.2097\\\\304.01\\\\69.4042\\\\155.345\\\\304.01\\\\68.90745\\\\156.4103\\\\304.01\\\\68.23325\\\\157.3732\\\\304.01\\\\67.4021\\\\158.2043\\\\304.01\\\\66.43925\\\\158.8785\\\\304.01\\\\65.37395\\\\159.3753\\\\304.01\\\\64.23858\\\\159.6795\\\\304.01\\\\63.06762\\\\159.7819\\\\304.01\\\\61.89667\\\\159.6795\\\\304.01\\\\60.7613\\\\159.3753\\\\304.01\\\\59.696\\\\158.8785\\\\304.01\\\\58.73315\\\\158.2043\\\\304.01\\\\57.902\\\\157.3732\\\\304.01\\\\57.22781\\\\156.4103\\\\304.01\\\\56.73105\\\\155.345\\\\304.01\\\\56.42683\\\\154.2097\\\\304.01\\\\56.32438\\\\153.0387\\\\304.01\\\\56.42683\\\\151.8678\\\\304.01\\\\56.73105\\\\150.7324\\\\304.01\\\\57.22781\\\\149.6671\\\\304.01\\\\57.902\\\\148.7042\\\\304.01\\\\58.73315\\\\147.8731\\\\304.01\\\\59.696\\\\147.1989\\\\304.01\\\\60.7613\\\\146.7021\\\\304.01\\\\61.89667\\\\146.3979\\\\304.01\\\\63.06762\\\\146.2955\\\\304.01\\\\64.23858\\\\146.3979\\\\304.01\\\\65.37395\\\\146.7021\\\\304.01\\\\66.43925\\\\147.1989\\\\304.01\\\\67.4021\\\\147.8731\\\\304.01\\\\68.23325\\\\148.7042\\\\304.01\\\\68.90745\\\\149.6671\\\\304.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"1\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"69.4042\\\\150.7324\\\\307.01\\\\69.70842\\\\151.8678\\\\307.01\\\\69.81087\\\\153.0387\\\\307.01\\\\69.70842\\\\154.2097\\\\307.01\\\\69.4042\\\\155.345\\\\307.01\\\\68.90745\\\\156.4103\\\\307.01\\\\68.23325\\\\157.3732\\\\307.01\\\\67.4021\\\\158.2043\\\\307.01\\\\66.43925\\\\158.8785\\\\307.01\\\\65.37395\\\\159.3753\\\\307.01\\\\64.23858\\\\159.6795\\\\307.01\\\\63.06762\\\\159.7819\\\\307.01\\\\61.89667\\\\159.6795\\\\307.01\\\\60.7613\\\\159.3753\\\\307.01\\\\59.696\\\\158.8785\\\\307.01\\\\58.73315\\\\158.2043\\\\307.01\\\\57.902\\\\157.3732\\\\307.01\\\\57.22781\\\\156.4103\\\\307.01\\\\56.73105\\\\155.345\\\\307.01\\\\56.42683\\\\154.2097\\\\307.01\\\\56.32438\\\\153.0387\\\\307.01\\\\56.42683\\\\151.8678\\\\307.01\\\\56.73105\\\\150.7324\\\\307.01\\\\57.22781\\\\149.6671\\\\307.01\\\\57.902\\\\148.7042\\\\307.01\\\\58.73315\\\\147.8731\\\\307.01\\\\59.696\\\\147.1989\\\\307.01\\\\60.7613\\\\146.7021\\\\307.01\\\\61.89667\\\\146.3979\\\\307.01\\\\63.06762\\\\146.2955\\\\307.01\\\\64.23858\\\\146.3979\\\\307.01\\\\65.37395\\\\146.7021\\\\307.01\\\\66.43925\\\\147.1989\\\\307.01\\\\67.4021\\\\147.8731\\\\307.01\\\\68.23325\\\\148.7042\\\\307.01\\\\68.90745\\\\149.6671\\\\307.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"2\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"69.4042\\\\150.7324\\\\310.01\\\\69.70842\\\\151.8678\\\\310.01\\\\69.81087\\\\153.0387\\\\310.01\\\\69.70842\\\\154.2097\\\\310.01\\\\69.4042\\\\155.345\\\\310.01\\\\68.90745\\\\156.4103\\\\310.01\\\\68.23325\\\\157.3732\\\\310.01\\\\67.4021\\\\158.2043\\\\310.01\\\\66.43925\\\\158.8785\\\\310.01\\\\65.37395\\\\159.3753\\\\310.01\\\\64.23858\\\\159.6795\\\\310.01\\\\63.06762\\\\159.7819\\\\310.01\\\\61.89667\\\\159.6795\\\\310.01\\\\60.7613\\\\159.3753\\\\310.01\\\\59.696\\\\158.8785\\\\310.01\\\\58.73315\\\\158.2043\\\\310.01\\\\57.902\\\\157.3732\\\\310.01\\\\57.22781\\\\156.4103\\\\310.01\\\\56.73105\\\\155.345\\\\310.01\\\\56.42683\\\\154.2097\\\\310.01\\\\56.32438\\\\153.0387\\\\310.01\\\\56.42683\\\\151.8678\\\\310.01\\\\56.73105\\\\150.7324\\\\310.01\\\\57.22781\\\\149.6671\\\\310.01\\\\57.902\\\\148.7042\\\\310.01\\\\58.73315\\\\147.8731\\\\310.01\\\\59.696\\\\147.1989\\\\310.01\\\\60.7613\\\\146.7021\\\\310.01\\\\61.89667\\\\146.3979\\\\310.01\\\\63.06762\\\\146.2955\\\\310.01\\\\64.23858\\\\146.3979\\\\310.01\\\\65.37395\\\\146.7021\\\\310.01\\\\66.43925\\\\147.1989\\\\310.01\\\\67.4021\\\\147.8731\\\\310.01\\\\68.23325\\\\148.7042\\\\310.01\\\\68.90745\\\\149.6671\\\\310.01\"\n"
-"                     }\n"
-"                  }\n"
-"               ]\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"3\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,002a\" : {\n"
-"               \"Name\" : \"ROIDisplayColor\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"0\\\\0\\\\255\"\n"
-"            },\n"
-"            \"3006,0040\" : {\n"
-"               \"Name\" : \"ContourSequence\",\n"
-"               \"Type\" : \"Sequence\",\n"
-"               \"Value\" : [\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"0\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"15.45022\\\\210.3737\\\\304.01\\\\14.27927\\\\210.4761\\\\304.01\\\\13.10831\\\\210.3737\\\\304.01\\\\11.97294\\\\210.0694\\\\304.01\\\\10.90764\\\\209.5727\\\\304.01\\\\9.944793\\\\208.8985\\\\304.01\\\\9.113642\\\\208.0673\\\\304.01\\\\8.439445\\\\207.1045\\\\304.01\\\\7.94269\\\\206.0392\\\\304.01\\\\7.638467\\\\204.9038\\\\304.01\\\\7.536023\\\\203.7328\\\\304.01\\\\7.638467\\\\202.5619\\\\304.01\\\\7.94269\\\\201.4265\\\\304.01\\\\8.439445\\\\200.3612\\\\304.01\\\\9.113642\\\\199.3984\\\\304.01\\\\9.944793\\\\198.5672\\\\304.01\\\\10.90764\\\\197.893\\\\304.01\\\\11.97294\\\\197.3963\\\\304.01\\\\13.10831\\\\197.0921\\\\304.01\\\\14.27927\\\\196.9896\\\\304.01\\\\15.45022\\\\197.0921\\\\304.01\\\\16.58559\\\\197.3963\\\\304.01\\\\17.65089\\\\197.893\\\\304.01\\\\18.61374\\\\198.5672\\\\304.01\\\\19.44489\\\\199.3984\\\\304.01\\\\20.11909\\\\200.3612\\\\304.01\\\\20.61584\\\\201.4265\\\\304.01\\\\20.92006\\\\202.5619\\\\304.01\\\\21.02251\\\\203.7328\\\\304.01\\\\20.92006\\\\204.9038\\\\304.01\\\\20.61584\\\\206.0392\\\\304.01\\\\20.11909\\\\207.1045\\\\304.01\\\\19.44489\\\\208.0673\\\\304.01\\\\18.61374\\\\208.8985\\\\304.01\\\\17.65089\\\\209.5727\\\\304.01\\\\16.58559\\\\210.0694\\\\304.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"1\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"15.45022\\\\210.3737\\\\307.01\\\\14.27927\\\\210.4761\\\\307.01\\\\13.10831\\\\210.3737\\\\307.01\\\\11.97294\\\\210.0694\\\\307.01\\\\10.90764\\\\209.5727\\\\307.01\\\\9.944793\\\\208.8985\\\\307.01\\\\9.113642\\\\208.0673\\\\307.01\\\\8.439445\\\\207.1045\\\\307.01\\\\7.94269\\\\206.0392\\\\307.01\\\\7.638467\\\\204.9038\\\\307.01\\\\7.536023\\\\203.7328\\\\307.01\\\\7.638467\\\\202.5619\\\\307.01\\\\7.94269\\\\201.4265\\\\307.01\\\\8.439445\\\\200.3612\\\\307.01\\\\9.113642\\\\199.3984\\\\307.01\\\\9.944793\\\\198.5672\\\\307.01\\\\10.90764\\\\197.893\\\\307.01\\\\11.97294\\\\197.3963\\\\307.01\\\\13.10831\\\\197.0921\\\\307.01\\\\14.27927\\\\196.9896\\\\307.01\\\\15.45022\\\\197.0921\\\\307.01\\\\16.58559\\\\197.3963\\\\307.01\\\\17.65089\\\\197.893\\\\307.01\\\\18.61374\\\\198.5672\\\\307.01\\\\19.44489\\\\199.3984\\\\307.01\\\\20.11909\\\\200.3612\\\\307.01\\\\20.61584\\\\201.4265\\\\307.01\\\\20.92006\\\\202.5619\\\\307.01\\\\21.02251\\\\203.7328\\\\307.01\\\\20.92006\\\\204.9038\\\\307.01\\\\20.61584\\\\206.0392\\\\307.01\\\\20.11909\\\\207.1045\\\\307.01\\\\19.44489\\\\208.0673\\\\307.01\\\\18.61374\\\\208.8985\\\\307.01\\\\17.65089\\\\209.5727\\\\307.01\\\\16.58559\\\\210.0694\\\\307.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"2\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"15.45022\\\\210.3737\\\\310.01\\\\14.27927\\\\210.4761\\\\310.01\\\\13.10831\\\\210.3737\\\\310.01\\\\11.97294\\\\210.0694\\\\310.01\\\\10.90764\\\\209.5727\\\\310.01\\\\9.944793\\\\208.8985\\\\310.01\\\\9.113642\\\\208.0673\\\\310.01\\\\8.439445\\\\207.1045\\\\310.01\\\\7.94269\\\\206.0392\\\\310.01\\\\7.638467\\\\204.9038\\\\310.01\\\\7.536023\\\\203.7328\\\\310.01\\\\7.638467\\\\202.5619\\\\310.01\\\\7.94269\\\\201.4265\\\\310.01\\\\8.439445\\\\200.3612\\\\310.01\\\\9.113642\\\\199.3984\\\\310.01\\\\9.944793\\\\198.5672\\\\310.01\\\\10.90764\\\\197.893\\\\310.01\\\\11.97294\\\\197.3963\\\\310.01\\\\13.10831\\\\197.0921\\\\310.01\\\\14.27927\\\\196.9896\\\\310.01\\\\15.45022\\\\197.0921\\\\310.01\\\\16.58559\\\\197.3963\\\\310.01\\\\17.65089\\\\197.893\\\\310.01\\\\18.61374\\\\198.5672\\\\310.01\\\\19.44489\\\\199.3984\\\\310.01\\\\20.11909\\\\200.3612\\\\310.01\\\\20.61584\\\\201.4265\\\\310.01\\\\20.92006\\\\202.5619\\\\310.01\\\\21.02251\\\\203.7328\\\\310.01\\\\20.92006\\\\204.9038\\\\310.01\\\\20.61584\\\\206.0392\\\\310.01\\\\20.11909\\\\207.1045\\\\310.01\\\\19.44489\\\\208.0673\\\\310.01\\\\18.61374\\\\208.8985\\\\310.01\\\\17.65089\\\\209.5727\\\\310.01\\\\16.58559\\\\210.0694\\\\310.01\"\n"
-"                     }\n"
-"                  }\n"
-"               ]\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"4\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,002a\" : {\n"
-"               \"Name\" : \"ROIDisplayColor\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"0\\\\128\\\\255\"\n"
-"            },\n"
-"            \"3006,0040\" : {\n"
-"               \"Name\" : \"ContourSequence\",\n"
-"               \"Type\" : \"Sequence\",\n"
-"               \"Value\" : [\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"0\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"14.97014\\\\164.0225\\\\295.01\\\\13.79919\\\\164.1249\\\\295.01\\\\12.62824\\\\164.0225\\\\295.01\\\\11.49286\\\\163.7183\\\\295.01\\\\10.42757\\\\163.2215\\\\295.01\\\\9.464716\\\\162.5473\\\\295.01\\\\8.633565\\\\161.7162\\\\295.01\\\\7.95937\\\\160.7533\\\\295.01\\\\7.462614\\\\159.688\\\\295.01\\\\7.158391\\\\158.5526\\\\295.01\\\\7.055946\\\\157.3817\\\\295.01\\\\7.158391\\\\156.2107\\\\295.01\\\\7.462614\\\\155.0753\\\\295.01\\\\7.95937\\\\154.0101\\\\295.01\\\\8.633565\\\\153.0472\\\\295.01\\\\9.464716\\\\152.216\\\\295.01\\\\10.42757\\\\151.5419\\\\295.01\\\\11.49286\\\\151.0451\\\\295.01\\\\12.62824\\\\150.7409\\\\295.01\\\\13.79919\\\\150.6384\\\\295.01\\\\14.97014\\\\150.7409\\\\295.01\\\\16.10551\\\\151.0451\\\\295.01\\\\17.17081\\\\151.5419\\\\295.01\\\\18.13366\\\\152.216\\\\295.01\\\\18.96481\\\\153.0472\\\\295.01\\\\19.63901\\\\154.0101\\\\295.01\\\\20.13577\\\\155.0753\\\\295.01\\\\20.43999\\\\156.2107\\\\295.01\\\\20.54243\\\\157.3817\\\\295.01\\\\20.43999\\\\158.5526\\\\295.01\\\\20.13577\\\\159.688\\\\295.01\\\\19.63901\\\\160.7533\\\\295.01\\\\18.96481\\\\161.7162\\\\295.01\\\\18.13366\\\\162.5473\\\\295.01\\\\17.17081\\\\163.2215\\\\295.01\\\\16.10551\\\\163.7183\\\\295.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n";
-const char* k_rtStruct_json01 =
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"1\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"14.97014\\\\164.0225\\\\298.01\\\\13.79919\\\\164.1249\\\\298.01\\\\12.62824\\\\164.0225\\\\298.01\\\\11.49286\\\\163.7183\\\\298.01\\\\10.42757\\\\163.2215\\\\298.01\\\\9.464716\\\\162.5473\\\\298.01\\\\8.633565\\\\161.7162\\\\298.01\\\\7.95937\\\\160.7533\\\\298.01\\\\7.462614\\\\159.688\\\\298.01\\\\7.158391\\\\158.5526\\\\298.01\\\\7.055946\\\\157.3817\\\\298.01\\\\7.158391\\\\156.2107\\\\298.01\\\\7.462614\\\\155.0753\\\\298.01\\\\7.95937\\\\154.0101\\\\298.01\\\\8.633565\\\\153.0472\\\\298.01\\\\9.464716\\\\152.216\\\\298.01\\\\10.42757\\\\151.5419\\\\298.01\\\\11.49286\\\\151.0451\\\\298.01\\\\12.62824\\\\150.7409\\\\298.01\\\\13.79919\\\\150.6384\\\\298.01\\\\14.97014\\\\150.7409\\\\298.01\\\\16.10551\\\\151.0451\\\\298.01\\\\17.17081\\\\151.5419\\\\298.01\\\\18.13366\\\\152.216\\\\298.01\\\\18.96481\\\\153.0472\\\\298.01\\\\19.63901\\\\154.0101\\\\298.01\\\\20.13577\\\\155.0753\\\\298.01\\\\20.43999\\\\156.2107\\\\298.01\\\\20.54243\\\\157.3817\\\\298.01\\\\20.43999\\\\158.5526\\\\298.01\\\\20.13577\\\\159.688\\\\298.01\\\\19.63901\\\\160.7533\\\\298.01\\\\18.96481\\\\161.7162\\\\298.01\\\\18.13366\\\\162.5473\\\\298.01\\\\17.17081\\\\163.2215\\\\298.01\\\\16.10551\\\\163.7183\\\\298.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"2\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"14.97014\\\\164.0225\\\\301.01\\\\13.79919\\\\164.1249\\\\301.01\\\\12.62824\\\\164.0225\\\\301.01\\\\11.49286\\\\163.7183\\\\301.01\\\\10.42757\\\\163.2215\\\\301.01\\\\9.464716\\\\162.5473\\\\301.01\\\\8.633565\\\\161.7162\\\\301.01\\\\7.95937\\\\160.7533\\\\301.01\\\\7.462614\\\\159.688\\\\301.01\\\\7.158391\\\\158.5526\\\\301.01\\\\7.055946\\\\157.3817\\\\301.01\\\\7.158391\\\\156.2107\\\\301.01\\\\7.462614\\\\155.0753\\\\301.01\\\\7.95937\\\\154.0101\\\\301.01\\\\8.633565\\\\153.0472\\\\301.01\\\\9.464716\\\\152.216\\\\301.01\\\\10.42757\\\\151.5419\\\\301.01\\\\11.49286\\\\151.0451\\\\301.01\\\\12.62824\\\\150.7409\\\\301.01\\\\13.79919\\\\150.6384\\\\301.01\\\\14.97014\\\\150.7409\\\\301.01\\\\16.10551\\\\151.0451\\\\301.01\\\\17.17081\\\\151.5419\\\\301.01\\\\18.13366\\\\152.216\\\\301.01\\\\18.96481\\\\153.0472\\\\301.01\\\\19.63901\\\\154.0101\\\\301.01\\\\20.13577\\\\155.0753\\\\301.01\\\\20.43999\\\\156.2107\\\\301.01\\\\20.54243\\\\157.3817\\\\301.01\\\\20.43999\\\\158.5526\\\\301.01\\\\20.13577\\\\159.688\\\\301.01\\\\19.63901\\\\160.7533\\\\301.01\\\\18.96481\\\\161.7162\\\\301.01\\\\18.13366\\\\162.5473\\\\301.01\\\\17.17081\\\\163.2215\\\\301.01\\\\16.10551\\\\163.7183\\\\301.01\"\n"
-"                     }\n"
-"                  }\n"
-"               ]\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"5\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,002a\" : {\n"
-"               \"Name\" : \"ROIDisplayColor\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"0\\\\128\\\\0\"\n"
-"            },\n"
-"            \"3006,0040\" : {\n"
-"               \"Name\" : \"ContourSequence\",\n"
-"               \"Type\" : \"Sequence\",\n"
-"               \"Value\" : [\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"340\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"0\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"108.3984\\\\232.7406\\\\274.01\\\\106.0547\\\\231.7948\\\\274.01\\\\103.7109\\\\232.8407\\\\274.01\\\\96.67969\\\\232.8757\\\\274.01\\\\77.92969\\\\232.887\\\\274.01\\\\47.46094\\\\232.8902\\\\274.01\\\\38.08594\\\\232.7537\\\\274.01\\\\37.6668\\\\232.3734\\\\274.01\\\\38.08594\\\\231.9774\\\\274.01\\\\40.42969\\\\231.8475\\\\274.01\\\\41.76413\\\\230.0297\\\\274.01\\\\42.77344\\\\229.1388\\\\274.01\\\\45.11719\\\\228.5069\\\\274.01\\\\47.46094\\\\227.1533\\\\274.01\\\\49.80469\\\\226.3505\\\\274.01\\\\52.14844\\\\224.6564\\\\274.01\\\\54.49219\\\\223.923\\\\274.01\\\\56.83594\\\\222.0692\\\\274.01\\\\59.17969\\\\220.3438\\\\274.01\\\\61.52344\\\\219.3888\\\\274.01\\\\63.86719\\\\217.1287\\\\274.01\\\\65.83488\\\\215.9672\\\\274.01\\\\68.55469\\\\213.2383\\\\274.01\\\\70.89844\\\\211.2328\\\\274.01\\\\72.8125\\\\208.9359\\\\274.01\\\\75.58594\\\\206.3615\\\\274.01\\\\76.91445\\\\204.2484\\\\274.01\\\\78.89509\\\\201.9047\\\\274.01\\\\80.51276\\\\199.5609\\\\274.01\\\\81.51955\\\\197.2172\\\\274.01\\\\83.67448\\\\194.8734\\\\274.01\\\\84.60938\\\\192.5297\\\\274.01\\\\85.86986\\\\190.1859\\\\274.01\\\\86.57623\\\\187.8422\\\\274.01\\\\88.30051\\\\185.4984\\\\274.01\\\\88.94002\\\\183.1547\\\\274.01\\\\89.23261\\\\180.8109\\\\274.01\\\\89.64844\\\\180.3263\\\\274.01\\\\90.71885\\\\178.4672\\\\274.01\\\\90.97656\\\\176.1234\\\\274.01\\\\91.99219\\\\174.4794\\\\274.01\\\\92.56773\\\\173.7797\\\\274.01\\\\92.80016\\\\171.4359\\\\274.01\\\\93.23473\\\\169.0922\\\\274.01\\\\93.37606\\\\166.7484\\\\274.01\\\\93.60748\\\\157.3734\\\\274.01\\\\93.6341\\\\152.6859\\\\274.01\\\\93.35742\\\\140.9672\\\\274.01\\\\92.89317\\\\138.6234\\\\274.01\\\\92.7069\\\\136.2797\\\\274.01\\\\92.03726\\\\133.9359\\\\274.01\\\\90.84009\\\\131.5922\\\\274.01\\\\90.3769\\\\129.2484\\\\274.01\\\\89.09074\\\\126.9047\\\\274.01\\\\88.13225\\\\122.2172\\\\274.01\\\\86.17828\\\\119.8734\\\\274.01\\\\84.96094\\\\117.4163\\\\274.01\\\\83.99619\\\\115.1859\\\\274.01\\\\83.13079\\\\112.8422\\\\274.01\\\\82.61719\\\\112.2984\\\\274.01\\\\80.27344\\\\108.8454\\\\274.01\\\\79.64514\\\\108.1547\\\\274.01\\\\77.21497\\\\105.8109\\\\274.01\\\\76.47787\\\\103.4672\\\\274.01\\\\75.58594\\\\102.6177\\\\274.01\\\\73.24219\\\\100.0077\\\\274.01\\\\69.54492\\\\96.43594\\\\274.01\\\\67.34096\\\\94.09219\\\\274.01\\\\64.66306\\\\91.74844\\\\274.01\\\\63.86719\\\\90.92619\\\\274.01\\\\61.52344\\\\90.20454\\\\274.01\\\\59.17969\\\\87.78574\\\\274.01\\\\56.83594\\\\86.48566\\\\274.01\\\\54.49219\\\\84.31388\\\\274.01\\\\52.14844\\\\83.44438\\\\274.01\\\\49.80469\\\\82.75121\\\\274.01\\\\49.37617\\\\82.37344\\\\274.01\\\\47.46094\\\\81.26244\\\\274.01\\\\45.71391\\\\80.02969\\\\274.01\\\\45.11719\\\\79.45415\\\\274.01\\\\42.77344\\\\79.08185\\\\274.01\\\\40.42969\\\\78.51941\\\\274.01\\\\38.08594\\\\78.27534\\\\274.01\\\\37.36932\\\\77.68594\\\\274.01\\\\35.74219\\\\76.67624\\\\274.01\\\\33.39844\\\\76.49941\\\\274.01\\\\31.05469\\\\76.03495\\\\274.01\\\\28.71094\\\\74.83174\\\\274.01\\\\26.36719\\\\74.62859\\\\274.01\\\\24.02344\\\\74.55463\\\\274.01\\\\21.67969\\\\74.22861\\\\274.01\\\\19.33594\\\\74.05312\\\\274.01\\\\12.30469\\\\73.99397\\\\274.01\\\\5.273438\\\\74.0736\\\\274.01\\\\2.929688\\\\74.55463\\\\274.01\\\\0.5859375\\\\74.68513\\\\274.01\\\\-1.757813\\\\74.914\\\\274.01\\\\-2.319131\\\\75.34219\\\\274.01\\\\-4.101563\\\\76.31516\\\\274.01\\\\-8.789063\\\\76.74514\\\\274.01\\\\-11.13281\\\\78.39038\\\\274.01\\\\-13.47656\\\\78.6124\\\\274.01\\\\-15.82031\\\\79.19784\\\\274.01\\\\-18.16406\\\\81.11024\\\\274.01\\\\-20.50781\\\\82.03296\\\\274.01\\\\-22.85156\\\\83.13991\\\\274.01\\\\-25.19531\\\\83.70732\\\\274.01\\\\-27.53906\\\\85.85863\\\\274.01\\\\-29.88281\\\\87.03368\\\\274.01\\\\-32.22656\\\\88.3274\\\\274.01\\\\-34.57031\\\\90.53674\\\\274.01\\\\-36.91406\\\\92.5602\\\\274.01\\\\-39.25781\\\\93.55952\\\\274.01\\\\-41.60156\\\\95.74537\\\\274.01\\\\-43.94531\\\\98.26609\\\\274.01\\\\-46.28906\\\\100.3701\\\\274.01\\\\-47.02621\\\\101.1234\\\\274.01\\\\-47.86611\\\\103.4672\\\\274.01\\\\-49.83594\\\\105.8109\\\\274.01\\\\-51.98182\\\\108.1547\\\\274.01\\\\-53.06448\\\\110.4984\\\\274.01\\\\-53.32031\\\\110.7675\\\\274.01\\\\-54.53804\\\\112.8422\\\\274.01\\\\-55.66406\\\\114.273\\\\274.01\\\\-56.55722\\\\115.1859\\\\274.01\\\\-57.13953\\\\117.5297\\\\274.01\\\\-58.29264\\\\119.8734\\\\274.01\\\\-59.26869\\\\122.2172\\\\274.01\\\\-60.35156\\\\124.0119\\\\274.01\\\\-60.84229\\\\124.5609\\\\274.01\\\\-61.54484\\\\126.9047\\\\274.01\\\\-61.71691\\\\129.2484\\\\274.01\\\\-63.62281\\\\131.5922\\\\274.01\\\\-63.81256\\\\133.9359\\\\274.01\\\\-64.12511\\\\136.2797\\\\274.01\\\\-64.84515\\\\138.6234\\\\274.01\\\\-65.13599\\\\140.9672\\\\274.01\\\\-65.33604\\\\143.3109\\\\274.01\\\\-65.87358\\\\145.6547\\\\274.01\\\\-66.10577\\\\147.9984\\\\274.01\\\\-66.17618\\\\155.0297\\\\274.01\\\\-66.09933\\\\162.0609\\\\274.01\\\\-65.40382\\\\164.4047\\\\274.01\\\\-65.24833\\\\166.7484\\\\274.01\\\\-64.71442\\\\171.4359\\\\274.01\\\\-63.88171\\\\173.7797\\\\274.01\\\\-63.69299\\\\176.1234\\\\274.01\\\\-61.79081\\\\178.4672\\\\274.01\\\\-61.59269\\\\180.8109\\\\274.01\\\\-61.19405\\\\183.1547\\\\274.01\\\\-60.35156\\\\185.2055\\\\274.01\\\\-59.08288\\\\187.8422\\\\274.01\\\\-58.00781\\\\189.3499\\\\274.01\\\\-57.25858\\\\190.1859\\\\274.01\\\\-56.64558\\\\192.5297\\\\274.01\\\\-55.29191\\\\194.8734\\\\274.01\\\\-54.28698\\\\197.2172\\\\274.01\\\\-52.28595\\\\199.5609\\\\274.01\\\\-51.47569\\\\201.9047\\\\274.01\\\\-48.63281\\\\204.6417\\\\274.01\\\\-47.10181\\\\206.5922\\\\274.01\\\\-44.64154\\\\208.9359\\\\274.01\\\\-42.38504\\\\211.2797\\\\274.01\\\\-39.25781\\\\214.4025\\\\274.01\\\\-37.42723\\\\215.9672\\\\274.01\\\\-34.57031\\\\218.9107\\\\274.01\\\\-32.22656\\\\219.7277\\\\274.01\\\\-29.88281\\\\221.6934\\\\274.01\\\\-27.53906\\\\222.852\\\\274.01\\\\-25.19531\\\\224.5168\\\\274.01\\\\-22.85156\\\\225.9419\\\\274.01\\\\-20.50781\\\\226.7359\\\\274.01\\\\-18.16406\\\\228.3332\\\\274.01\\\\-15.82031\\\\229.065\\\\274.01\\\\-13.47656\\\\229.267\\\\274.01\\\\-12.63854\\\\230.0297\\\\274.01\\\\-11.13281\\\\231.9201\\\\274.01\\\\-10.65505\\\\232.3734\\\\274.01\\\\-11.13281\\\\232.7794\\\\274.01\\\\-15.82031\\\\232.792\\\\274.01\\\\-18.16406\\\\232.8902\\\\274.01\\\\-36.91406\\\\232.9015\\\\274.01\\\\-39.25781\\\\232.8902\\\\274.01\\\\-50.97656\\\\232.9236\\\\274.01\\\\-60.35156\\\\232.9126\\\\274.01\\\\-67.38281\\\\232.8407\\\\274.01\\\\-72.07031\\\\232.8642\\\\274.01\\\\-79.10156\\\\232.8555\\\\274.01\\\\-83.78906\\\\232.8788\\\\274.01\\\\-95.50781\\\\232.8902\\\\274.01\\\\-97.85156\\\\233.4886\\\\274.01\\\\-100.1953\\\\233.647\\\\274.01\\\\-102.5391\\\\232.9858\\\\274.01\\\\-104.8828\\\\233.6969\\\\274.01\\\\-109.5703\\\\233.722\\\\274.01\\\\-125.9766\\\\233.7086\\\\274.01\\\\-128.3203\\\\233.2849\\\\274.01\\\\-130.6641\\\\233.702\\\\274.01\\\\-135.3516\\\\233.727\\\\274.01\\\\-149.4141\\\\233.7135\\\\274.01\\\\-156.4453\\\\233.727\\\\274.01\\\\-163.4766\\\\233.7119\\\\274.01\\\\-168.1641\\\\233.7643\\\\274.01\\\\-191.6016\\\\233.7809\\\\274.01\\\\-210.3516\\\\233.7716\\\\274.01\\\\-224.4141\\\\233.7998\\\\274.01\\\\-233.7891\\\\233.7647\\\\274.01\\\\-243.1641\\\\233.7785\\\\274.01\\\\-247.8516\\\\233.7378\\\\274.01\\\\-254.8828\\\\233.8578\\\\274.01\\\\-257.2266\\\\235.2519\\\\274.01\\\\-259.5703\\\\236.0817\\\\274.01\\\\-260.7617\\\\237.0609\\\\274.01\\\\-261.9141\\\\238.2262\\\\274.01\\\\-262.8989\\\\239.4047\\\\274.01\\\\-262.9743\\\\241.7484\\\\274.01\\\\-262.5977\\\\244.0922\\\\274.01\\\\-260.6675\\\\246.4359\\\\274.01\\\\-259.6161\\\\248.7797\\\\274.01\\\\-257.2266\\\\251.0035\\\\274.01\\\\-255.0361\\\\253.4672\\\\274.01\\\\-252.5391\\\\256.0995\\\\274.01\\\\-251.2277\\\\258.1547\\\\274.01\\\\-246.7444\\\\262.8422\\\\274.01\\\\-243.1641\\\\266.3515\\\\274.01\\\\-239.7411\\\\269.8734\\\\274.01\\\\-238.4766\\\\270.9495\\\\274.01\\\\-237.2269\\\\272.2172\\\\274.01\\\\-236.1328\\\\273.5215\\\\274.01\\\\-235.0934\\\\274.5609\\\\274.01\\\\-233.7891\\\\275.6655\\\\274.01\\\\-232.5319\\\\276.9047\\\\274.01\\\\-231.4453\\\\278.1693\\\\274.01\\\\-227.917\\\\281.5922\\\\274.01\\\\-224.4141\\\\285.1802\\\\274.01\\\\-222.0703\\\\287.4025\\\\274.01\\\\-218.6841\\\\290.9672\\\\274.01\\\\-217.3828\\\\291.9709\\\\274.01\\\\-215.0391\\\\293.1788\\\\274.01\\\\-212.6953\\\\294.5138\\\\274.01\\\\-210.3516\\\\295.2614\\\\274.01\\\\-209.8994\\\\295.6547\\\\274.01\\\\-208.0078\\\\296.7083\\\\274.01\\\\-203.3203\\\\296.9372\\\\274.01\\\\-196.2891\\\\296.9317\\\\274.01\\\\-193.9453\\\\296.8988\\\\274.01\\\\-172.8516\\\\296.8482\\\\274.01\\\\-161.1328\\\\296.843\\\\274.01\\\\-137.6953\\\\296.8542\\\\274.01\\\\-130.6641\\\\296.8378\\\\274.01\\\\-107.2266\\\\296.8379\\\\274.01\\\\-93.16406\\\\296.8208\\\\274.01\\\\-74.41406\\\\296.838\\\\274.01\\\\-65.03906\\\\296.8609\\\\274.01\\\\-50.97656\\\\296.8556\\\\274.01\\\\-46.28906\\\\296.9051\\\\274.01\\\\-41.60156\\\\298.5331\\\\274.01\\\\-39.25781\\\\298.5624\\\\274.01\\\\-36.91406\\\\297.1455\\\\274.01\\\\-34.57031\\\\297.0498\\\\274.01\\\\-32.22656\\\\298.5589\\\\274.01\\\\-25.19531\\\\298.5624\\\\274.01\\\\-22.85156\\\\297.2842\\\\274.01\\\\-20.50781\\\\298.5624\\\\274.01\\\\-1.757813\\\\298.5624\\\\274.01\\\\0.5859375\\\\297.2104\\\\274.01\\\\2.929688\\\\298.5624\\\\274.01\\\\5.273438\\\\297.6946\\\\274.01\\\\7.617188\\\\298.5168\\\\274.01\\\\9.960938\\\\298.5512\\\\274.01\\\\12.30469\\\\296.937\\\\274.01\\\\14.64844\\\\298.5478\\\\274.01\\\\16.99219\\\\298.5478\\\\274.01\\\\19.33594\\\\297.0782\\\\274.01\\\\21.67969\\\\296.844\\\\274.01\\\\23.54531\\\\297.9984\\\\274.01\\\\24.02344\\\\298.4023\\\\274.01\\\\24.50156\\\\297.9984\\\\274.01\\\\26.36719\\\\296.844\\\\274.01\\\\38.08594\\\\296.8381\\\\274.01\\\\52.14844\\\\296.8033\\\\274.01\\\\59.17969\\\\296.8033\\\\274.01\\\\73.24219\\\\296.7682\\\\274.01\\\\99.02344\\\\296.7566\\\\274.01\\\\117.7734\\\\296.7216\\\\274.01\\\\129.4922\\\\296.7152\\\\274.01\\\\131.8359\\\\295.9083\\\\274.01\\\\134.1797\\\\295.5245\\\\274.01\\\\138.8672\\\\295.4763\\\\274.01\\\\155.2734\\\\295.4763\\\\274.01\\\\176.3672\\\\295.3861\\\\274.01\\\\190.4297\\\\295.3718\\\\274.01\\\\197.4609\\\\295.4763\\\\274.01\\\\202.1484\\\\295.4454\\\\274.01\\\\204.4922\\\\295.3438\\\\274.01\\\\206.8359\\\\295.0757\\\\274.01\\\\209.1797\\\\294.4124\\\\274.01\\\\211.5234\\\\292.3133\\\\274.01\\\\213.8672\\\\291.0809\\\\274.01\\\\216.2109\\\\289.6743\\\\274.01\\\\217.3081\\\\288.6234\\\\274.01\\\\219.3558\\\\286.2797\\\\274.01\\\\221.8608\\\\283.9359\\\\274.01\\\\225.5859\\\\280.045\\\\274.01\\\\227.9297\\\\277.8885\\\\274.01\\\\230.2734\\\\275.2857\\\\274.01\\\\232.6172\\\\273.2225\\\\274.01\\\\233.6225\\\\272.2172\\\\274.01\\\\234.9609\\\\270.5822\\\\274.01\\\\238.2254\\\\267.5297\\\\274.01\\\\240.3691\\\\265.1859\\\\274.01\\\\244.3359\\\\261.3326\\\\274.01\\\\246.6797\\\\258.8034\\\\274.01\\\\249.0234\\\\256.7196\\\\274.01\\\\251.3672\\\\254.0746\\\\274.01\\\\254.5313\\\\251.1234\\\\274.01\\\\255.333\\\\248.7797\\\\274.01\\\\257.3723\\\\246.4359\\\\274.01\\\\259.7201\\\\244.0922\\\\274.01\\\\260.106\\\\241.7484\\\\274.01\\\\261.6423\\\\239.4047\\\\274.01\\\\261.0804\\\\237.0609\\\\274.01\\\\259.3552\\\\234.7172\\\\274.01\\\\258.3984\\\\233.7696\\\\274.01\\\\256.0547\\\\232.8757\\\\274.01\\\\253.7109\\\\232.792\\\\274.01\\\\251.3672\\\\232.8161\\\\274.01\\\\246.6797\\\\232.6981\\\\274.01\\\\244.3359\\\\232.725\\\\274.01\\\\239.6484\\\\232.9137\\\\274.01\\\\234.9609\\\\232.8525\\\\274.01\\\\225.5859\\\\232.8757\\\\274.01\\\\209.1797\\\\232.8757\\\\274.01\\\\204.4922\\\\232.7537\\\\274.01\\\\195.1172\\\\232.7794\\\\274.01\\\\171.6797\\\\232.792\\\\274.01\\\\164.6484\\\\232.7666\\\\274.01\\\\152.9297\\\\232.7666\\\\274.01\\\\148.2422\\\\232.792\\\\274.01\\\\138.8672\\\\232.7406\\\\274.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"380\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"1\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-18.16406\\\\233.0671\\\\277.01\\\\-32.22656\\\\233.1221\\\\277.01\\\\-41.60156\\\\233.1397\\\\277.01\\\\-43.94531\\\\233.1221\\\\277.01\\\\-50.97656\\\\233.1818\\\\277.01\\\\-60.35156\\\\233.1568\\\\277.01\\\\-67.38281\\\\232.9942\\\\277.01\\\\-74.41406\\\\233.0537\\\\277.01\\\\-79.10156\\\\233.0283\\\\277.01\\\\-88.47656\\\\233.0859\\\\277.01\\\\-95.50781\\\\233.1042\\\\277.01\\\\-97.85156\\\\234.0105\\\\277.01\\\\-100.1953\\\\234.062\\\\277.01\\\\-102.5391\\\\233.987\\\\277.01\\\\-104.8828\\\\234.0941\\\\277.01\\\\-109.5703\\\\234.1996\\\\277.01\\\\-114.2578\\\\234.1551\\\\277.01\\\\-123.6328\\\\234.1127\\\\277.01\\\\-125.9766\\\\234.1266\\\\277.01\\\\-128.3203\\\\234.0177\\\\277.01\\\\-135.3516\\\\234.1741\\\\277.01\\\\-140.0391\\\\234.1551\\\\277.01\\\\-142.3828\\\\234.1996\\\\277.01\\\\-147.0703\\\\234.1174\\\\277.01\\\\-156.4453\\\\234.1828\\\\277.01\\\\-163.4766\\\\234.1357\\\\277.01\\\\-165.8203\\\\234.1871\\\\277.01\\\\-168.1641\\\\234.3922\\\\277.01\\\\-177.5391\\\\234.4145\\\\277.01\\\\-179.8828\\\\234.3618\\\\277.01\\\\-184.5703\\\\234.3864\\\\277.01\\\\-186.9141\\\\234.4535\\\\277.01\\\\-189.2578\\\\234.4194\\\\277.01\\\\-191.6016\\\\234.471\\\\277.01\\\\-198.6328\\\\234.3891\\\\277.01\\\\-200.9766\\\\234.4386\\\\277.01\\\\-205.6641\\\\234.3731\\\\277.01\\\\-210.3516\\\\234.3731\\\\277.01\\\\-217.3828\\\\234.4242\\\\277.01\\\\-219.7266\\\\234.5104\\\\277.01\\\\-224.4141\\\\234.4944\\\\277.01\\\\-229.1016\\\\234.4218\\\\277.01\\\\-233.7891\\\\234.2678\\\\277.01\\\\-240.8203\\\\234.3296\\\\277.01\\\\-243.1641\\\\234.3917\\\\277.01\\\\-247.8516\\\\234.2029\\\\277.01\\\\-250.1953\\\\234.3235\\\\277.01\\\\-251.4551\\\\234.7172\\\\277.01\\\\-252.5391\\\\236.6024\\\\277.01\\\\-254.8828\\\\235.4008\\\\277.01\\\\-257.2266\\\\235.5063\\\\277.01\\\\-259.5703\\\\236.2655\\\\277.01\\\\-260.5737\\\\237.0609\\\\277.01\\\\-262.332\\\\239.4047\\\\277.01\\\\-262.689\\\\241.7484\\\\277.01\\\\-261.9141\\\\243.7504\\\\277.01\\\\-260.6889\\\\246.4359\\\\277.01\\\\-259.5703\\\\248.4867\\\\277.01\\\\-255.2138\\\\253.4672\\\\277.01\\\\-253.2667\\\\255.8109\\\\277.01\\\\-250.1953\\\\258.8662\\\\277.01\\\\-247.8516\\\\261.4125\\\\277.01\\\\-246.2862\\\\262.8422\\\\277.01\\\\-244.1278\\\\265.1859\\\\277.01\\\\-240.8203\\\\268.3467\\\\277.01\\\\-239.375\\\\269.8734\\\\277.01\\\\-236.9429\\\\272.2172\\\\277.01\\\\-233.7891\\\\275.382\\\\277.01\\\\-231.4453\\\\277.8091\\\\277.01\\\\-229.8568\\\\279.2484\\\\277.01\\\\-227.6842\\\\281.5922\\\\277.01\\\\-225.1387\\\\283.9359\\\\277.01\\\\-222.0703\\\\287.1957\\\\277.01\\\\-220.5108\\\\288.6234\\\\277.01\\\\-218.2596\\\\290.9672\\\\277.01\\\\-217.3828\\\\291.6321\\\\277.01\\\\-215.0391\\\\292.8542\\\\277.01\\\\-214.579\\\\293.3109\\\\277.01\\\\-212.6953\\\\294.5394\\\\277.01\\\\-210.3516\\\\295.0909\\\\277.01\\\\-209.68\\\\295.6547\\\\277.01\\\\-208.0078\\\\296.4548\\\\277.01\\\\-205.6641\\\\296.8658\\\\277.01\\\\-203.3203\\\\297.1639\\\\277.01\\\\-196.2891\\\\297.1488\\\\277.01\\\\-193.9453\\\\297.0495\\\\277.01\\\\-179.8828\\\\296.9703\\\\277.01\\\\-172.8516\\\\296.9012\\\\277.01\\\\-168.1641\\\\296.9407\\\\277.01\\\\-161.1328\\\\296.9063\\\\277.01\\\\-156.4453\\\\296.9453\\\\277.01\\\\-151.7578\\\\296.9222\\\\277.01\\\\-147.0703\\\\296.9559\\\\277.01\\\\-144.7266\\\\296.9085\\\\277.01\\\\-135.3516\\\\296.92\\\\277.01\\\\-121.2891\\\\296.8532\\\\277.01\\\\-107.2266\\\\296.8819\\\\277.01\\\\-93.16406\\\\296.7973\\\\277.01\\\\-90.82031\\\\296.8363\\\\277.01\\\\-83.78906\\\\296.8459\\\\277.01\\\\-81.44531\\\\296.8837\\\\277.01\\\\-74.41406\\\\296.9028\\\\277.01\\\\-65.03906\\\\296.96\\\\277.01\\\\-60.35156\\\\296.9494\\\\277.01\\\\-58.00781\\\\296.9872\\\\277.01\\\\-53.32031\\\\296.9377\\\\277.01\\\\-50.97656\\\\296.9579\\\\277.01\\\\-48.63281\\\\297.1438\\\\277.01\\\\-43.94531\\\\297.2253\\\\277.01\\\\-41.60156\\\\297.048\\\\277.01\\\\-39.25781\\\\297.3759\\\\277.01\\\\-36.91406\\\\296.9644\\\\277.01\\\\-34.57031\\\\297.3341\\\\277.01\\\\-32.22656\\\\297.1747\\\\277.01\\\\-29.88281\\\\297.4229\\\\277.01\\\\-27.53906\\\\297.3652\\\\277.01\\\\-25.19531\\\\297.4334\\\\277.01\\\\-22.85156\\\\297.3652\\\\277.01\\\\-18.16406\\\\297.4229\\\\277.01\\\\-11.13281\\\\297.4334\\\\277.01\\\\-4.101563\\\\297.3235\\\\277.01\\\\-1.757813\\\\297.4229\\\\277.01\\\\2.929688\\\\297.3531\\\\277.01\\\\5.273438\\\\297.2199\\\\277.01\\\\7.617188\\\\297.4055\\\\277.01\\\\9.960938\\\\297.3842\\\\277.01\\\\12.30469\\\\296.9557\\\\277.01\\\\14.64844\\\\297.2621\\\\277.01\\\\16.99219\\\\297.2089\\\\277.01\\\\21.67969\\\\296.916\\\\277.01\\\\24.02344\\\\297.3701\\\\277.01\\\\26.36719\\\\296.9067\\\\277.01\\\\28.71094\\\\296.9467\\\\277.01\\\\33.39844\\\\296.8867\\\\277.01\\\\40.42969\\\\296.8564\\\\277.01\\\\45.11719\\\\296.7865\\\\277.01\\\\56.83594\\\\296.6788\\\\277.01\\\\61.52344\\\\296.6724\\\\277.01\\\\73.24219\\\\296.5521\\\\277.01\\\\87.30469\\\\296.5362\\\\277.01\\\\91.99219\\\\296.4801\\\\277.01\\\\96.67969\\\\296.4873\\\\277.01\\\\101.3672\\\\296.4462\\\\277.01\\\\115.4297\\\\296.3703\\\\277.01\\\\117.7734\\\\296.3846\\\\277.01\\\\134.1797\\\\296.2709\\\\277.01\\\\136.5234\\\\296.2305\\\\277.01\\\\138.8672\\\\295.864\\\\277.01\\\\141.2109\\\\295.9064\\\\277.01\\\\145.8984\\\\295.8486\\\\277.01\\\\148.2422\\\\295.9027\\\\277.01\\\\150.5859\\\\295.833\\\\277.01\\\\155.2734\\\\295.864\\\\277.01\\\\157.6172\\\\295.8012\\\\277.01\\\\164.6484\\\\295.7516\\\\277.01\\\\169.3359\\\\295.6819\\\\277.01\\\\174.0234\\\\295.6819\\\\277.01\\\\176.3672\\\\295.5916\\\\277.01\\\\181.0547\\\\295.557\\\\277.01\\\\185.7422\\\\295.5742\\\\277.01\\\\192.7734\\\\295.5401\\\\277.01\\\\197.4609\\\\295.833\\\\277.01\\\\202.1484\\\\295.7684\\\\277.01\\\\204.4922\\\\295.4594\\\\277.01\\\\206.8359\\\\294.8185\\\\277.01\\\\209.1797\\\\294.347\\\\277.01\\\\211.5234\\\\292.4135\\\\277.01\\\\213.8672\\\\291.0298\\\\277.01\\\\216.2109\\\\289.437\\\\277.01\\\\217.074\\\\288.6234\\\\277.01\\\\218.5547\\\\286.9247\\\\277.01\\\\221.5416\\\\283.9359\\\\277.01\\\\225.5859\\\\279.7662\\\\277.01\\\\227.9297\\\\277.4546\\\\277.01\\\\230.2734\\\\274.9609\\\\277.01\\\\233.0324\\\\272.2172\\\\277.01\\\\234.9609\\\\270.159\\\\277.01\\\\241.9922\\\\262.9747\\\\277.01\\\\244.3264\\\\260.4984\\\\277.01\\\\246.6903\\\\258.1547\\\\277.01\\\\249.0234\\\\255.711\\\\277.01\\\\251.3672\\\\253.4211\\\\277.01\\\\255.433\\\\248.7797\\\\277.01\\\\257.1424\\\\246.4359\\\\277.01\\\\259.4697\\\\244.0922\\\\277.01\\\\261.12\\\\239.4047\\\\277.01\\\\260.5029\\\\237.0609\\\\277.01\\\\259.4318\\\\234.7172\\\\277.01\\\\258.3984\\\\233.723\\\\277.01\\\\256.0547\\\\233.0686\\\\277.01\\\\253.7109\\\\232.8224\\\\277.01\\\\251.3672\\\\233.3211\\\\277.01\\\\249.0234\\\\232.7988\\\\277.01\\\\246.6797\\\\232.5842\\\\277.01\\\\244.3359\\\\232.6886\\\\277.01\\\\239.6484\\\\233.2349\\\\277.01\\\\237.3047\\\\233.3486\\\\277.01\\\\234.9609\\\\233.0207\\\\277.01\\\\227.9297\\\\233.0108\\\\277.01\\\\225.5859\\\\233.0402\\\\277.01\\\\209.1797\\\\233.0726\\\\277.01\\\\206.8359\\\\232.9699\\\\277.01\\\\204.4922\\\\232.7719\\\\277.01\\\\199.8047\\\\232.7719\\\\277.01\\\\195.1172\\\\232.8224\\\\277.01\\\\183.3984\\\\232.8852\\\\277.01\\\\176.3672\\\\232.8253\\\\277.01\\\\171.6797\\\\232.8497\\\\277.01\\\\166.9922\\\\232.81\\\\277.01\\\\157.6172\\\\232.8253\\\\277.01\\\\152.9297\\\\232.8003\\\\277.01\\\\145.8984\\\\232.8497\\\\277.01\\\\138.8672\\\\232.7614\\\\277.01\\\\136.5234\\\\232.7746\\\\277.01\\\\129.4922\\\\232.7186\\\\277.01\\\\127.1484\\\\232.7614\\\\277.01\\\\120.1172\\\\232.7346\\\\277.01\\\\108.3984\\\\232.7481\\\\277.01\\\\106.0547\\\\232.7048\\\\277.01\\\\103.7109\\\\232.9735\\\\277.01\\\\101.3672\\\\232.9629\\\\277.01\\\\96.67969\\\\233.0726\\\\277.01\\\\87.30469\\\\233.091\\\\277.01\\\\75.58594\\\\233.0819\\\\277.01\\\\54.49219\\\\233.1221\\\\277.01\\\\47.46094\\\\233.1132\\\\277.01\\\\45.11719\\\\233.0766\\\\277.01\\\\43.65234\\\\232.3734\\\\277.01\\\\42.77344\\\\231.5049\\\\277.01\\\\42.03585\\\\230.0297\\\\277.01\\\\42.77344\\\\229.2833\\\\277.01\\\\45.11719\\\\228.6392\\\\277.01\\\\47.46094\\\\227.2099\\\\277.01\\\\49.80469\\\\226.1658\\\\277.01\\\\52.14844\\\\224.6817\\\\277.01\\\\54.49219\\\\223.8452\\\\277.01\\\\56.83594\\\\222.0004\\\\277.01\\\\59.17969\\\\220.4439\\\\277.01\\\\61.52344\\\\219.1271\\\\277.01\\\\63.86719\\\\217.0811\\\\277.01\\\\66.21094\\\\215.1756\\\\277.01\\\\67.88793\\\\213.6234\\\\277.01\\\\68.55469\\\\212.8797\\\\277.01\\\\70.89844\\\\210.7867\\\\277.01\\\\72.54482\\\\208.9359\\\\277.01\\\\75.58594\\\\205.6807\\\\277.01\\\\78.63421\\\\201.9047\\\\277.01\\\\80.27344\\\\199.5051\\\\277.01\\\\81.52466\\\\197.2172\\\\277.01\\\\83.37788\\\\194.8734\\\\277.01\\\\84.31507\\\\192.5297\\\\277.01\\\\85.73579\\\\190.1859\\\\277.01\\\\86.63975\\\\187.8422\\\\277.01\\\\88.17874\\\\185.4984\\\\277.01\\\\88.71944\\\\183.1547\\\\277.01\\\\89.50195\\\\180.8109\\\\277.01\\\\90.46938\\\\178.4672\\\\277.01\\\\91.07824\\\\176.1234\\\\277.01\\\\91.79828\\\\173.7797\\\\277.01\\\\92.70757\\\\171.4359\\\\277.01\\\\93.03977\\\\169.0922\\\\277.01\\\\93.52213\\\\162.0609\\\\277.01\\\\93.79673\\\\157.3734\\\\277.01\\\\93.88062\\\\152.6859\\\\277.01\\\\93.4634\\\\145.6547\\\\277.01\\\\92.9856\\\\138.6234\\\\277.01\\\\92.41903\\\\136.2797\\\\277.01\\\\91.40625\\\\133.9359\\\\277.01\\\\90.85396\\\\131.5922\\\\277.01\\\\90.15889\\\\129.2484\\\\277.01\\\\89.05895\\\\126.9047\\\\277.01\\\\88.55738\\\\124.5609\\\\277.01\\\\87.68194\\\\122.2172\\\\277.01\\\\86.25967\\\\119.8734\\\\277.01\\\\85.33871\\\\117.5297\\\\277.01\\\\84.04059\\\\115.1859\\\\277.01\\\\82.57069\\\\112.8422\\\\277.01\\\\81.18974\\\\110.4984\\\\277.01\\\\80.27344\\\\109.1834\\\\277.01\\\\77.70041\\\\105.8109\\\\277.01\\\\76.15247\\\\103.4672\\\\277.01\\\\71.9184\\\\98.77969\\\\277.01\\\\68.55469\\\\95.4427\\\\277.01\\\\63.86719\\\\91.32878\\\\277.01\\\\61.52344\\\\89.91453\\\\277.01\\\\59.17969\\\\88.0407\\\\277.01\\\\56.83594\\\\86.33517\\\\277.01\\\\54.49219\\\\85.22703\\\\277.01\\\\53.90625\\\\84.71719\\\\277.01\\\\52.14844\\\\83.53945\\\\277.01\\\\49.80469\\\\82.68647\\\\277.01\\\\47.46094\\\\81.38185\\\\277.01\\\\45.11719\\\\80.48212\\\\277.01\\\\42.77344\\\\79.08845\\\\277.01\\\\40.42969\\\\78.67566\\\\277.01\\\\38.08594\\\\78.01502\\\\277.01\\\\35.74219\\\\77.02299\\\\277.01\\\\33.39844\\\\76.44418\\\\277.01\\\\31.05469\\\\75.99764\\\\277.01\\\\26.36719\\\\74.59824\\\\277.01\\\\24.02344\\\\74.41319\\\\277.01\\\\16.99219\\\\74.11594\\\\277.01\\\\12.30469\\\\74.05871\\\\277.01\\\\7.617188\\\\74.18881\\\\277.01\\\\2.929688\\\\74.428\\\\277.01\\\\0.5859375\\\\74.75625\\\\277.01\\\\-1.757813\\\\75.58151\\\\277.01\\\\-4.101563\\\\76.20659\\\\277.01\\\\-6.445313\\\\76.63125\\\\277.01\\\\-8.789063\\\\77.37503\\\\277.01\\\\-11.13281\\\\78.3486\\\\277.01\\\\-13.47656\\\\78.8168\\\\277.01\\\\-15.82031\\\\79.47342\\\\277.01\\\\-18.16406\\\\80.87569\\\\277.01\\\\-20.50781\\\\81.76657\\\\277.01\\\\-22.85156\\\\83.13133\\\\277.01\\\\-25.19531\\\\83.96092\\\\277.01\\\\-27.53906\\\\85.77746\\\\277.01\\\\-29.88281\\\\87.03368\\\\277.01\\\\-32.22656\\\\88.52746\\\\277.01\\\\-34.57031\\\\90.49887\\\\277.01\\\\-36.2212\\\\91.74844\\\\277.01\\\\-39.02853\\\\94.09219\\\\277.01\\\\-41.60156\\\\96.38751\\\\277.01\\\\-43.955\\\\98.77969\\\\277.01\\\\-46.28906\\\\101.3187\\\\277.01\\\\-48.63281\\\\104.1332\\\\277.01\\\\-49.87989\\\\105.8109\\\\277.01\\\\-51.93118\\\\108.1547\\\\277.01\\\\-53.12213\\\\110.4984\\\\277.01\\\\-55.66406\\\\114.2724\\\\277.01\\\\-56.35877\\\\115.1859\\\\277.01\\\\-57.13709\\\\117.5297\\\\277.01\\\\-58.55372\\\\119.8734\\\\277.01\\\\-59.49023\\\\122.2172\\\\277.01\\\\-60.81275\\\\124.5609\\\\277.01\\\\-61.92934\\\\129.2484\\\\277.01\\\\-63.00622\\\\131.5922\\\\277.01\\\\-63.77141\\\\133.9359\\\\277.01\\\\-64.50639\\\\138.6234\\\\277.01\\\\-65.16927\\\\140.9672\\\\277.01\\\\-65.6146\\\\143.3109\\\\277.01\\\\-65.7933\\\\145.6547\\\\277.01\\\\-66.06516\\\\150.3422\\\\277.01\\\\-66.13699\\\\155.0297\\\\277.01\\\\-66.09879\\\\157.3734\\\\277.01\\\\-65.89844\\\\162.0609\\\\277.01\\\\-65.71338\\\\164.4047\\\\277.01\\\\-65.41684\\\\166.7484\\\\277.01\\\\-64.78502\\\\169.0922\\\\277.01\\\\-64.27641\\\\171.4359\\\\277.01\\\\-63.9314\\\\173.7797\\\\277.01\\\\-63.32528\\\\176.1234\\\\277.01\\\\-62.18676\\\\178.4672\\\\277.01\\\\-61.52936\\\\180.8109\\\\277.01\\\\-61.08647\\\\183.1547\\\\277.01\\\\-59.75184\\\\185.4984\\\\277.01\\\\-58.89447\\\\187.8422\\\\277.01\\\\-57.47786\\\\190.1859\\\\277.01\\\\-56.72234\\\\192.5297\\\\277.01\\\\-55.0424\\\\194.8734\\\\277.01\\\\-53.77855\\\\197.2172\\\\277.01\\\\-52.24194\\\\199.5609\\\\277.01\\\\-50.4126\\\\201.9047\\\\277.01\\\\-48.63281\\\\204.3003\\\\277.01\\\\-47.03415\\\\206.5922\\\\277.01\\\\-42.56292\\\\211.2797\\\\277.01\\\\-39.25781\\\\214.4452\\\\277.01\\\\-36.91406\\\\216.3386\\\\277.01\\\\-34.26873\\\\218.3109\\\\277.01\\\\-29.88281\\\\221.4518\\\\277.01\\\\-27.53906\\\\223.027\\\\277.01\\\\-25.19531\\\\224.3439\\\\277.01\\\\-23.14453\\\\225.3422\\\\277.01\\\\-20.50781\\\\226.7399\\\\277.01\\\\-18.16406\\\\228.2227\\\\277.01\\\\-15.82031\\\\229.069\\\\277.01\\\\-14.3044\\\\230.0297\\\\277.01\\\\-15.82031\\\\231.8656\\\\277.01\\\\-16.46402\\\\232.3734\\\\277.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"374\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"2\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-95.50781\\\\233.1042\\\\280.01\\\\-97.85156\\\\234.0105\\\\280.01\\\\-100.1953\\\\233.4044\\\\280.01\\\\-102.5391\\\\234.062\\\\280.01\\\\-104.8828\\\\233.3561\\\\280.01\\\\-109.5703\\\\234.1651\\\\280.01\\\\-111.9141\\\\234.0722\\\\280.01\\\\-116.6016\\\\234.0411\\\\280.01\\\\-121.2891\\\\234.0855\\\\280.01\\\\-128.3203\\\\234.0672\\\\280.01\\\\-135.3516\\\\234.1266\\\\280.01\\\\-140.0391\\\\234.1078\\\\280.01\\\\-142.3828\\\\234.1741\\\\280.01\\\\-149.4141\\\\234.0642\\\\280.01\\\\-156.4453\\\\234.1132\\\\280.01\\\\-163.4766\\\\234.0613\\\\280.01\\\\-165.8203\\\\234.1313\\\\280.01\\\\-168.1641\\\\234.3108\\\\280.01\\\\-177.5391\\\\234.3173\\\\280.01\\\\-182.2266\\\\234.2721\\\\280.01\\\\-186.9141\\\\234.3703\\\\280.01\\\\-191.6016\\\\234.3837\\\\280.01\\\\-198.6328\\\\234.3084\\\\280.01\\\\-200.9766\\\\234.3389\\\\280.01\\\\-208.0078\\\\234.2822\\\\280.01\\\\-217.3828\\\\234.3296\\\\280.01\\\\-219.7266\\\\234.3758\\\\280.01\\\\-229.1016\\\\234.3389\\\\280.01\\\\-233.7891\\\\234.2125\\\\280.01\\\\-240.8203\\\\234.2537\\\\280.01\\\\-243.1641\\\\234.2967\\\\280.01\\\\-247.8516\\\\234.0375\\\\280.01\\\\-250.1953\\\\234.1916\\\\280.01\\\\-252.181\\\\234.7172\\\\280.01\\\\-252.5391\\\\235.6379\\\\280.01\\\\-254.1504\\\\234.7172\\\\280.01\\\\-254.8828\\\\234.668\\\\280.01\\\\-259.5703\\\\236.2655\\\\280.01\\\\-260.5737\\\\237.0609\\\\280.01\\\\-262.3019\\\\239.4047\\\\280.01\\\\-262.5477\\\\241.7484\\\\280.01\\\\-261.5577\\\\244.0922\\\\280.01\\\\-260.8438\\\\246.4359\\\\280.01\\\\-259.5991\\\\248.7797\\\\280.01\\\\-254.8828\\\\253.9193\\\\280.01\\\\-253.2919\\\\255.8109\\\\280.01\\\\-250.1953\\\\258.8925\\\\280.01\\\\-247.8516\\\\261.4312\\\\280.01\\\\-246.2802\\\\262.8422\\\\280.01\\\\-244.138\\\\265.1859\\\\280.01\\\\-240.8203\\\\268.3534\\\\280.01\\\\-239.3737\\\\269.8734\\\\280.01\\\\-236.938\\\\272.2172\\\\280.01\\\\-233.7891\\\\275.3765\\\\280.01\\\\-231.4453\\\\277.7994\\\\280.01\\\\-229.1016\\\\279.9918\\\\280.01\\\\-226.7578\\\\282.4992\\\\280.01\\\\-225.119\\\\283.9359\\\\280.01\\\\-222.0703\\\\287.169\\\\280.01\\\\-220.4806\\\\288.6234\\\\280.01\\\\-218.2311\\\\290.9672\\\\280.01\\\\-217.3828\\\\291.613\\\\280.01\\\\-215.0391\\\\292.8596\\\\280.01\\\\-214.5047\\\\293.3109\\\\280.01\\\\-212.6953\\\\294.459\\\\280.01\\\\-210.3516\\\\295.1842\\\\280.01\\\\-208.0078\\\\296.4338\\\\280.01\\\\-205.6641\\\\296.8595\\\\280.01\\\\-203.3203\\\\297.1639\\\\280.01\\\\-196.2891\\\\297.1563\\\\280.01\\\\-193.9453\\\\297.0622\\\\280.01\\\\-184.5703\\\\296.9731\\\\280.01\\\\-172.8516\\\\296.8959\\\\280.01\\\\-165.8203\\\\296.9125\\\\280.01\\\\-161.1328\\\\296.8904\\\\280.01\\\\-156.4453\\\\296.9295\\\\280.01\\\\-144.7266\\\\296.9097\\\\280.01\\\\-137.6953\\\\296.9173\\\\280.01\\\\-125.9766\\\\296.8528\\\\280.01\\\\-118.9453\\\\296.8629\\\\280.01\\\\-116.6016\\\\296.8357\\\\280.01\\\\-109.5703\\\\296.8723\\\\280.01\\\\-102.5391\\\\296.8266\\\\280.01\\\\-93.16406\\\\296.7973\\\\280.01\\\\-76.75781\\\\296.8647\\\\280.01\\\\-72.07031\\\\296.9145\\\\280.01\\\\-67.38281\\\\296.9028\\\\280.01\\\\-65.03906\\\\296.9514\\\\280.01\\\\-60.35156\\\\296.9322\\\\280.01\\\\-55.66406\\\\296.9622\\\\280.01\\\\-53.32031\\\\296.925\\\\280.01\\\\-48.63281\\\\296.9622\\\\280.01\\\\-46.28906\\\\296.8973\\\\280.01\\\\-41.60156\\\\296.9067\\\\280.01\\\\-39.25781\\\\297.0439\\\\280.01\\\\-36.91406\\\\296.9267\\\\280.01\\\\-34.57031\\\\297.1128\\\\280.01\\\\-32.22656\\\\296.9926\\\\280.01\\\\-29.88281\\\\297.3952\\\\280.01\\\\-27.53906\\\\297.0591\\\\280.01\\\\-25.19531\\\\297.3984\\\\280.01\\\\-22.85156\\\\297.0809\\\\280.01\\\\-20.50781\\\\297.0809\\\\280.01\\\\-18.16406\\\\297.3798\\\\280.01\\\\-13.47656\\\\297.4022\\\\280.01\\\\-11.13281\\\\297.2922\\\\280.01\\\\-8.789063\\\\297.4125\\\\280.01\\\\-4.101563\\\\297.3691\\\\280.01\\\\-1.757813\\\\297.4334\\\\280.01\\\\0.5859375\\\\297.3911\\\\280.01\\\\2.929688\\\\297.106\\\\280.01\\\\5.273438\\\\297.1626\\\\280.01\\\\7.617188\\\\297.409\\\\280.01\\\\9.960938\\\\297.3879\\\\280.01\\\\12.30469\\\\296.9377\\\\280.01\\\\14.64844\\\\297.0091\\\\280.01\\\\16.99219\\\\296.9358\\\\280.01\\\\19.33594\\\\297.0362\\\\280.01\\\\21.67969\\\\296.8867\\\\280.01\\\\24.02344\\\\297.1195\\\\280.01\\\\26.36719\\\\296.8762\\\\280.01\\\\33.39844\\\\296.8961\\\\280.01\\\\42.77344\\\\296.8163\\\\280.01\\\\56.83594\\\\296.6724\\\\280.01\\\\63.86719\\\\296.6577\\\\280.01\\\\68.55469\\\\296.5859\\\\280.01\\\\70.89844\\\\296.6028\\\\280.01\\\\77.92969\\\\296.5441\\\\280.01\\\\84.96094\\\\296.549\\\\280.01\\\\96.67969\\\\296.5208\\\\280.01\\\\101.3672\\\\296.4462\\\\280.01\\\\103.7109\\\\296.4668\\\\280.01\\\\113.0859\\\\296.4189\\\\280.01\\\\122.4609\\\\296.3348\\\\280.01\\\\136.5234\\\\296.2873\\\\280.01\\\\138.8672\\\\295.8791\\\\280.01\\\\141.2109\\\\296.1963\\\\280.01\\\\145.8984\\\\295.8486\\\\280.01\\\\148.2422\\\\295.9009\\\\280.01\\\\150.5859\\\\295.8172\\\\280.01\\\\155.2734\\\\295.8791\\\\280.01\\\\162.3047\\\\295.7684\\\\280.01\\\\164.6484\\\\295.7684\\\\280.01\\\\183.3984\\\\295.557\\\\280.01\\\\192.7734\\\\295.557\\\\280.01\\\\197.4609\\\\295.8172\\\\280.01\\\\202.1484\\\\295.7516\\\\280.01\\\\204.4922\\\\295.4439\\\\280.01\\\\206.8359\\\\294.8185\\\\280.01\\\\209.1797\\\\294.3583\\\\280.01\\\\211.5234\\\\292.4108\\\\280.01\\\\213.8672\\\\291.0471\\\\280.01\\\\216.2109\\\\289.452\\\\280.01\\\\217.0839\\\\288.6234\\\\280.01\\\\218.5547\\\\286.9506\\\\280.01\\\\221.5668\\\\283.9359\\\\280.01\\\\225.5859\\\\279.7481\\\\280.01\\\\227.9297\\\\277.4546\\\\280.01\\\\230.2734\\\\274.9423\\\\280.01\\\\233.0475\\\\272.2172\\\\280.01\\\\234.9609\\\\270.1762\\\\280.01\\\\237.5903\\\\267.5297\\\\280.01\\\\242.1654\\\\262.8422\\\\280.01\\\\244.3673\\\\260.4984\\\\280.01\\\\246.773\\\\258.1547\\\\280.01\\\\249.0142\\\\255.8109\\\\280.01\\\\251.3672\\\\253.4397\\\\280.01\\\\253.7109\\\\250.8472\\\\280.01\\\\255.4546\\\\248.7797\\\\280.01\\\\257.1065\\\\246.4359\\\\280.01\\\\259.3784\\\\244.0922\\\\280.01\\\\260.9815\\\\239.4047\\\\280.01\\\\260.4452\\\\237.0609\\\\280.01\\\\259.4202\\\\234.7172\\\\280.01\\\\258.3984\\\\233.7341\\\\280.01\\\\256.0547\\\\233.1091\\\\280.01\\\\253.7109\\\\232.7821\\\\280.01\\\\251.3672\\\\232.8781\\\\280.01\\\\249.0234\\\\232.6162\\\\280.01\\\\244.3359\\\\232.7025\\\\280.01\\\\241.9922\\\\232.9379\\\\280.01\\\\237.3047\\\\233.0766\\\\280.01\\\\234.9609\\\\233.0108\\\\280.01\\\\232.6172\\\\233.0402\\\\280.01\\\\227.9297\\\\233.0108\\\\280.01\\\\225.5859\\\\233.0498\\\\280.01\\\\211.5234\\\\233.0819\\\\280.01\\\\206.8359\\\\232.9594\\\\280.01\\\\204.4922\\\\232.7588\\\\280.01\\\\202.1484\\\\232.7848\\\\280.01\\\\183.3984\\\\232.8852\\\\280.01\\\\178.7109\\\\232.8467\\\\280.01\\\\162.3047\\\\232.8003\\\\280.01\\\\159.9609\\\\232.8253\\\\280.01\\\\143.5547\\\\232.8376\\\\280.01\\\\141.2109\\\\232.7746\\\\280.01\\\\136.5234\\\\232.7975\\\\280.01\\\\131.8359\\\\232.7322\\\\280.01\\\\127.1484\\\\232.7614\\\\280.01\\\\124.8047\\\\232.721\\\\280.01\\\\120.1172\\\\232.7481\\\\280.01\\\\113.0859\\\\232.7071\\\\280.01\\\\106.0547\\\\232.721\\\\280.01\\\\103.7109\\\\232.9629\\\\280.01\\\\101.3672\\\\232.9735\\\\280.01\\\\96.67969\\\\233.0819\\\\280.01\\\\82.61719\\\\233.1001\\\\280.01\\\\77.92969\\\\233.0726\\\\280.01\\\\73.24219\\\\233.1132\\\\280.01\\\\63.86719\\\\233.1221\\\\280.01\\\\56.83594\\\\233.0951\\\\280.01\\\\47.46094\\\\233.1221\\\\280.01\\\\45.11719\\\\233.0726\\\\280.01\\\\44.1779\\\\232.3734\\\\280.01\\\\42.77344\\\\230.9901\\\\280.01\\\\42.0716\\\\230.0297\\\\280.01\\\\42.77344\\\\229.2739\\\\280.01\\\\45.11719\\\\228.632\\\\280.01\\\\47.46094\\\\227.1643\\\\280.01\\\\49.80469\\\\226.1565\\\\280.01\\\\52.14844\\\\224.6574\\\\280.01\\\\54.49219\\\\223.8228\\\\280.01\\\\56.83594\\\\221.9803\\\\280.01\\\\59.17969\\\\220.4287\\\\280.01\\\\61.52344\\\\219.0851\\\\280.01\\\\62.3638\\\\218.3109\\\\280.01\\\\66.21094\\\\215.1389\\\\280.01\\\\67.85556\\\\213.6234\\\\280.01\\\\68.55469\\\\212.8447\\\\280.01\\\\70.89844\\\\210.758\\\\280.01\\\\72.51065\\\\208.9359\\\\280.01\\\\75.58594\\\\205.632\\\\280.01\\\\78.58622\\\\201.9047\\\\280.01\\\\80.27344\\\\199.4393\\\\280.01\\\\81.50667\\\\197.2172\\\\280.01\\\\83.34528\\\\194.8734\\\\280.01\\\\84.28662\\\\192.5297\\\\280.01\\\\85.68763\\\\190.1859\\\\280.01\\\\86.60807\\\\187.8422\\\\280.01\\\\88.12763\\\\185.4984\\\\280.01\\\\88.70493\\\\183.1547\\\\280.01\\\\89.40742\\\\180.8109\\\\280.01\\\\90.42329\\\\178.4672\\\\280.01\\\\91.73814\\\\173.7797\\\\280.01\\\\92.66084\\\\171.4359\\\\280.01\\\\93.0161\\\\169.0922\\\\280.01\\\\93.30299\\\\164.4047\\\\280.01\\\\93.50073\\\\162.0609\\\\280.01\\\\93.76065\\\\157.3734\\\\280.01\\\\93.84212\\\\155.0297\\\\280.01\\\\93.83057\\\\152.6859\\\\280.01\\\\93.44278\\\\145.6547\\\\280.01\\\\92.97371\\\\138.6234\\\\280.01\\\\92.3933\\\\136.2797\\\\280.01\\\\91.39597\\\\133.9359\\\\280.01\\\\90.83705\\\\131.5922\\\\280.01\\\\90.15889\\\\129.2484\\\\280.01\\\\89.05895\\\\126.9047\\\\280.01\\\\88.55198\\\\124.5609\\\\280.01\\\\87.66837\\\\122.2172\\\\280.01\\\\86.27174\\\\119.8734\\\\280.01\\\\85.36424\\\\117.5297\\\\280.01\\\\84.03852\\\\115.1859\\\\280.01\\\\81.2221\\\\110.4984\\\\280.01\\\\80.27344\\\\109.1401\\\\280.01\\\\77.76597\\\\105.8109\\\\280.01\\\\76.17959\\\\103.4672\\\\280.01\\\\74.11412\\\\101.1234\\\\280.01\\\\71.95528\\\\98.77969\\\\280.01\\\\68.55469\\\\95.41232\\\\280.01\\\\66.21094\\\\93.31791\\\\280.01\\\\63.86719\\\\91.31586\\\\280.01\\\\61.52344\\\\89.8781\\\\280.01\\\\61.00544\\\\89.40469\\\\280.01\\\\56.83594\\\\86.32603\\\\280.01\\\\54.49219\\\\85.22374\\\\280.01\\\\53.91059\\\\84.71719\\\\280.01\\\\52.14844\\\\83.52773\\\\280.01\\\\49.80469\\\\82.67247\\\\280.01\\\\47.46094\\\\81.38185\\\\280.01\\\\45.11719\\\\80.45787\\\\280.01\\\\42.77344\\\\79.08102\\\\280.01\\\\40.42969\\\\78.68263\\\\280.01\\\\38.08594\\\\78.00113\\\\280.01\\\\35.74219\\\\76.98543\\\\280.01\\\\33.39844\\\\76.44418\\\\280.01\\\\31.05469\\\\75.99764\\\\280.01\\\\28.71094\\\\75.21002\\\\280.01\\\\26.36719\\\\74.59824\\\\280.01\\\\24.02344\\\\74.40105\\\\280.01\\\\14.64844\\\\74.0463\\\\280.01\\\\9.960938\\\\74.09591\\\\280.01\\\\5.273438\\\\74.27516\\\\280.01\\\\2.929688\\\\74.42056\\\\280.01\\\\0.5859375\\\\74.75625\\\\280.01\\\\-1.757813\\\\75.52052\\\\280.01\\\\-4.101563\\\\76.1918\\\\280.01\\\\-6.445313\\\\76.61909\\\\280.01\\\\-8.789063\\\\77.32118\\\\280.01\\\\-11.13281\\\\78.33466\\\\280.01\\\\-13.47656\\\\78.80508\\\\280.01\\\\-15.82031\\\\79.44011\\\\280.01\\\\-18.16406\\\\80.84683\\\\280.01\\\\-20.50781\\\\81.74243\\\\280.01\\\\-22.85156\\\\83.11391\\\\280.01\\\\-25.19531\\\\83.92464\\\\280.01\\\\-27.53906\\\\85.7457\\\\280.01\\\\-29.88281\\\\86.96401\\\\280.01\\\\-32.22656\\\\88.49249\\\\280.01\\\\-34.57031\\\\90.47998\\\\280.01\\\\-36.28038\\\\91.74844\\\\280.01\\\\-39.07948\\\\94.09219\\\\280.01\\\\-41.60156\\\\96.27657\\\\280.01\\\\-44.03106\\\\98.77969\\\\280.01\\\\-46.28906\\\\101.2371\\\\280.01\\\\-48.63281\\\\104.0658\\\\280.01\\\\-49.94405\\\\105.8109\\\\280.01\\\\-51.96513\\\\108.1547\\\\280.01\\\\-53.18715\\\\110.4984\\\\280.01\\\\-54.74057\\\\112.8422\\\\280.01\\\\-56.42476\\\\115.1859\\\\280.01\\\\-57.19754\\\\117.5297\\\\280.01\\\\-58.65653\\\\119.8734\\\\280.01\\\\-59.544\\\\122.2172\\\\280.01\\\\-60.8896\\\\124.5609\\\\280.01\\\\-62.0208\\\\129.2484\\\\280.01\\\\-63.12626\\\\131.5922\\\\280.01\\\\-63.84518\\\\133.9359\\\\280.01\\\\-64.19696\\\\136.2797\\\\280.01\\\\-64.66129\\\\138.6234\\\\280.01\\\\-65.33604\\\\140.9672\\\\280.01\\\\-65.68493\\\\143.3109\\\\280.01\\\\-66.13839\\\\150.3422\\\\280.01\\\\-66.21657\\\\155.0297\\\\280.01\\\\-66.17729\\\\157.3734\\\\280.01\\\\-65.96361\\\\162.0609\\\\280.01\\\\-65.54951\\\\166.7484\\\\280.01\\\\-64.3463\\\\171.4359\\\\280.01\\\\-63.998\\\\173.7797\\\\280.01\\\\-63.46595\\\\176.1234\\\\280.01\\\\-62.32813\\\\178.4672\\\\280.01\\\\-61.61405\\\\180.8109\\\\280.01\\\\-61.15642\\\\183.1547\\\\280.01\\\\-59.86389\\\\185.4984\\\\280.01\\\\-58.95148\\\\187.8422\\\\280.01\\\\-57.52841\\\\190.1859\\\\280.01\\\\-56.74625\\\\192.5297\\\\280.01\\\\-55.1036\\\\194.8734\\\\280.01\\\\-53.84033\\\\197.2172\\\\280.01\\\\-52.26687\\\\199.5609\\\\280.01\\\\-48.63281\\\\204.3615\\\\280.01\\\\-47.1009\\\\206.5922\\\\280.01\\\\-42.59905\\\\211.2797\\\\280.01\\\\-39.25781\\\\214.5093\\\\280.01\\\\-36.91406\\\\216.3794\\\\280.01\\\\-34.31858\\\\218.3109\\\\280.01\\\\-29.88281\\\\221.4737\\\\280.01\\\\-27.53906\\\\223.0821\\\\280.01\\\\-25.19531\\\\224.3511\\\\280.01\\\\-20.50781\\\\226.7643\\\\280.01\\\\-18.16406\\\\228.2682\\\\280.01\\\\-15.82031\\\\229.0908\\\\280.01\\\\-14.92839\\\\230.0297\\\\280.01\\\\-15.82031\\\\231.4137\\\\280.01\\\\-16.95631\\\\232.3734\\\\280.01\\\\-18.16406\\\\233.0537\\\\280.01\\\\-20.50781\\\\233.0951\\\\280.01\\\\-39.25781\\\\233.1397\\\\280.01\\\\-43.94531\\\\233.1221\\\\280.01\\\\-53.32031\\\\233.1736\\\\280.01\\\\-60.35156\\\\233.1736\\\\280.01\\\\-65.03906\\\\232.9735\\\\280.01\\\\-74.41406\\\\233.0441\\\\280.01\\\\-79.10156\\\\233.0145\\\\280.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846442461900001.533642576430\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"354\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"3\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-18.16406\\\\233.0766\\\\283.01\\\\-27.53906\\\\233.1221\\\\283.01\\\\-32.22656\\\\233.1042\\\\283.01\\\\-39.25781\\\\233.1397\\\\283.01\\\\-48.63281\\\\233.131\\\\283.01\\\\-53.32031\\\\233.1652\\\\283.01\\\\-60.35156\\\\233.1652\\\\283.01\\\\-62.69531\\\\233.0576\\\\283.01\\\\-65.03906\\\\232.8497\\\\283.01\\\\-67.38281\\\\232.9304\\\\283.01\\\\-74.41406\\\\233.0245\\\\283.01\\\\-86.13281\\\\232.9942\\\\283.01\\\\-88.47656\\\\233.0479\\\\283.01\\\\-97.85156\\\\233.0992\\\\283.01\\\\-107.2266\\\\233.1132\\\\283.01\\\\-109.5703\\\\233.2337\\\\283.01\\\\-111.9141\\\\233.9859\\\\283.01\\\\-116.6016\\\\233.9503\\\\283.01\\\\-121.2891\\\\234.0035\\\\283.01\\\\-130.6641\\\\234.0088\\\\283.01\\\\-135.3516\\\\234.0855\\\\283.01\\\\-140.0391\\\\234.0722\\\\283.01\\\\-142.3828\\\\234.1266\\\\283.01\\\\-149.4141\\\\234.0211\\\\283.01\\\\-151.7578\\\\234.0591\\\\283.01\\\\-161.1328\\\\234.0243\\\\283.01\\\\-165.8203\\\\234.0691\\\\283.01\\\\-168.1641\\\\234.2175\\\\283.01\\\\-172.8516\\\\234.2252\\\\283.01\\\\-175.1953\\\\234.1797\\\\283.01\\\\-179.8828\\\\234.2112\\\\283.01\\\\-184.5703\\\\234.2869\\\\283.01\\\\-191.6016\\\\234.2721\\\\283.01\\\\-198.6328\\\\234.2187\\\\283.01\\\\-200.9766\\\\234.2902\\\\283.01\\\\-205.6641\\\\234.205\\\\283.01\\\\-210.3516\\\\234.1861\\\\283.01\\\\-212.6953\\\\234.2398\\\\283.01\\\\-219.7266\\\\234.3115\\\\283.01\\\\-229.1016\\\\234.3235\\\\283.01\\\\-233.7891\\\\234.2362\\\\283.01\\\\-236.1328\\\\234.2789\\\\283.01\\\\-243.1641\\\\234.2502\\\\283.01\\\\-247.8516\\\\233.9138\\\\283.01\\\\-250.1953\\\\234.1229\\\\283.01\\\\-254.8828\\\\234.6658\\\\283.01\\\\-257.2266\\\\235.4369\\\\283.01\\\\-259.5703\\\\236.3773\\\\283.01\\\\-260.3961\\\\237.0609\\\\283.01\\\\-262.014\\\\239.4047\\\\283.01\\\\-262.2271\\\\241.7484\\\\283.01\\\\-261.3423\\\\244.0922\\\\283.01\\\\-260.8191\\\\246.4359\\\\283.01\\\\-259.7416\\\\248.7797\\\\283.01\\\\-257.5902\\\\251.1234\\\\283.01\\\\-255.5257\\\\253.4672\\\\283.01\\\\-252.5391\\\\256.6338\\\\283.01\\\\-250.1953\\\\258.856\\\\283.01\\\\-247.8516\\\\261.3733\\\\283.01\\\\-246.2019\\\\262.8422\\\\283.01\\\\-243.1641\\\\266.1315\\\\283.01\\\\-241.6046\\\\267.5297\\\\283.01\\\\-239.419\\\\269.8734\\\\283.01\\\\-236.9491\\\\272.2172\\\\283.01\\\\-233.7891\\\\275.3661\\\\283.01\\\\-231.4453\\\\277.8091\\\\283.01\\\\-229.1016\\\\280.0036\\\\283.01\\\\-226.7578\\\\282.509\\\\283.01\\\\-225.1317\\\\283.9359\\\\283.01\\\\-222.0703\\\\287.1792\\\\283.01\\\\-220.4806\\\\288.6234\\\\283.01\\\\-218.2311\\\\290.9672\\\\283.01\\\\-217.3828\\\\291.613\\\\283.01\\\\-215.0391\\\\292.905\\\\283.01\\\\-212.6953\\\\294.4828\\\\283.01\\\\-210.3516\\\\295.2615\\\\283.01\\\\-208.0078\\\\296.4508\\\\283.01\\\\-205.6641\\\\296.8789\\\\283.01\\\\-203.3203\\\\297.1639\\\\283.01\\\\-196.2891\\\\297.1563\\\\283.01\\\\-191.6016\\\\297.023\\\\283.01\\\\-189.2578\\\\297.0306\\\\283.01\\\\-182.2266\\\\296.948\\\\283.01\\\\-172.8516\\\\296.9022\\\\283.01\\\\-158.7891\\\\296.8988\\\\283.01\\\\-147.0703\\\\296.9323\\\\283.01\\\\-142.3828\\\\296.9074\\\\283.01\\\\-133.0078\\\\296.92\\\\283.01\\\\-123.6328\\\\296.8528\\\\283.01\\\\-116.6016\\\\296.8356\\\\283.01\\\\-111.9141\\\\296.8723\\\\283.01\\\\-100.1953\\\\296.8075\\\\283.01\\\\-74.41406\\\\296.8938\\\\283.01\\\\-67.38281\\\\296.9028\\\\283.01\\\\-62.69531\\\\296.96\\\\283.01\\\\-58.00781\\\\296.9234\\\\283.01\\\\-41.60156\\\\296.9081\\\\283.01\\\\-36.91406\\\\297.0328\\\\283.01\\\\-34.57031\\\\297.3842\\\\283.01\\\\-32.22656\\\\297.1128\\\\283.01\\\\-27.53906\\\\297.3192\\\\283.01\\\\-25.19531\\\\296.9926\\\\283.01\\\\-20.50781\\\\297.1747\\\\283.01\\\\-18.16406\\\\297.3531\\\\283.01\\\\-15.82031\\\\297.4125\\\\283.01\\\\-6.445313\\\\297.4125\\\\283.01\\\\-4.101563\\\\297.257\\\\283.01\\\\-1.757813\\\\297.4229\\\\283.01\\\\9.960938\\\\297.4125\\\\283.01\\\\12.30469\\\\296.9377\\\\283.01\\\\16.99219\\\\296.9467\\\\283.01\\\\21.67969\\\\296.8877\\\\283.01\\\\33.39844\\\\296.8771\\\\283.01\\\\40.42969\\\\296.8369\\\\283.01\\\\45.11719\\\\296.7643\\\\283.01\\\\52.14844\\\\296.7021\\\\283.01\\\\56.83594\\\\296.6906\\\\283.01\\\\68.55469\\\\296.5732\\\\283.01\\\\75.58594\\\\296.5859\\\\283.01\\\\77.92969\\\\296.5441\\\\283.01\\\\84.96094\\\\296.5441\\\\283.01\\\\87.30469\\\\296.4813\\\\283.01\\\\91.99219\\\\296.5154\\\\283.01\\\\110.7422\\\\296.4051\\\\283.01\\\\117.7734\\\\296.3495\\\\283.01\\\\129.4922\\\\296.2929\\\\283.01\\\\131.8359\\\\296.3023\\\\283.01\\\\136.5234\\\\295.8486\\\\283.01\\\\143.5547\\\\295.864\\\\283.01\\\\152.9297\\\\295.8012\\\\283.01\\\\155.2734\\\\295.8486\\\\283.01\\\\164.6484\\\\295.6998\\\\283.01\\\\169.3359\\\\295.7173\\\\283.01\\\\176.3672\\\\295.5916\\\\283.01\\\\188.0859\\\\295.5235\\\\283.01\\\\192.7734\\\\295.5401\\\\283.01\\\\197.4609\\\\295.833\\\\283.01\\\\202.1484\\\\295.7516\\\\283.01\\\\204.4922\\\\295.4439\\\\283.01\\\\206.8359\\\\294.8185\\\\283.01\\\\209.1797\\\\294.3532\\\\283.01\\\\211.5234\\\\292.4178\\\\283.01\\\\213.8672\\\\291.0471\\\\283.01\\\\216.2109\\\\289.437\\\\283.01\\\\217.074\\\\288.6234\\\\283.01\\\\218.5547\\\\286.9377\\\\283.01\\\\221.5668\\\\283.9359\\\\283.01\\\\225.5859\\\\279.7481\\\\283.01\\\\227.9297\\\\277.4225\\\\283.01\\\\230.2734\\\\274.9423\\\\283.01\\\\233.014\\\\272.2172\\\\283.01\\\\234.9609\\\\270.1737\\\\283.01\\\\237.6074\\\\267.5297\\\\283.01\\\\244.4276\\\\260.4984\\\\283.01\\\\246.7938\\\\258.1547\\\\283.01\\\\251.3978\\\\253.4672\\\\283.01\\\\253.7109\\\\250.8942\\\\283.01\\\\255.4174\\\\248.7797\\\\283.01\\\\257.0561\\\\246.4359\\\\283.01\\\\259.226\\\\244.0922\\\\283.01\\\\260.0378\\\\241.7484\\\\283.01\\\\260.5957\\\\239.4047\\\\283.01\\\\260.2749\\\\237.0609\\\\283.01\\\\259.2681\\\\234.7172\\\\283.01\\\\258.3984\\\\233.8742\\\\283.01\\\\256.0547\\\\233.2096\\\\283.01\\\\253.7109\\\\232.7947\\\\283.01\\\\251.3672\\\\232.6745\\\\283.01\\\\246.6797\\\\232.7162\\\\283.01\\\\244.3359\\\\232.6725\\\\283.01\\\\241.9922\\\\232.927\\\\283.01\\\\239.6484\\\\233.0007\\\\283.01\\\\230.2734\\\\233.0007\\\\283.01\\\\216.2109\\\\233.0819\\\\283.01\\\\209.1797\\\\233.0726\\\\283.01\\\\206.8359\\\\232.9839\\\\283.01\\\\204.4922\\\\232.7588\\\\283.01\\\\199.8047\\\\232.7719\\\\283.01\\\\195.1172\\\\232.8346\\\\283.01\\\\185.7422\\\\232.8346\\\\283.01\\\\183.3984\\\\232.8617\\\\283.01\\\\176.3672\\\\232.8224\\\\283.01\\\\174.0234\\\\232.8497\\\\283.01\\\\162.3047\\\\232.8003\\\\283.01\\\\159.9609\\\\232.8376\\\\283.01\\\\155.2734\\\\232.8253\\\\283.01\\\\145.8984\\\\232.8497\\\\283.01\\\\138.8672\\\\232.7588\\\\283.01\\\\136.5234\\\\232.7975\\\\283.01\\\\131.8359\\\\232.7456\\\\283.01\\\\122.4609\\\\232.7746\\\\283.01\\\\117.7734\\\\232.7186\\\\283.01\\\\106.0547\\\\232.721\\\\283.01\\\\103.7109\\\\232.9735\\\\283.01\\\\101.3672\\\\232.9735\\\\283.01\\\\99.02344\\\\233.0766\\\\283.01\\\\89.64844\\\\233.0726\\\\283.01\\\\82.61719\\\\233.1091\\\\283.01\\\\77.92969\\\\233.0766\\\\283.01\\\\75.58594\\\\233.1042\\\\283.01\\\\63.86719\\\\233.131\\\\283.01\\\\56.83594\\\\233.1042\\\\283.01\\\\54.49219\\\\233.131\\\\283.01\\\\45.11719\\\\233.0726\\\\283.01\\\\44.18501\\\\232.3734\\\\283.01\\\\42.77344\\\\230.9932\\\\283.01\\\\42.06263\\\\230.0297\\\\283.01\\\\42.77344\\\\229.2645\\\\283.01\\\\45.11719\\\\228.6247\\\\283.01\\\\47.46094\\\\227.1533\\\\283.01\\\\49.80469\\\\226.1347\\\\283.01\\\\52.14844\\\\224.6675\\\\283.01\\\\54.49219\\\\223.8092\\\\283.01\\\\56.83594\\\\221.9546\\\\283.01\\\\59.17969\\\\220.3699\\\\283.01\\\\61.52344\\\\219.056\\\\283.01\\\\62.3228\\\\218.3109\\\\283.01\\\\66.21094\\\\215.1232\\\\283.01\\\\67.84627\\\\213.6234\\\\283.01\\\\68.55469\\\\212.8298\\\\283.01\\\\70.89844\\\\210.6976\\\\283.01\\\\74.68501\\\\206.5922\\\\283.01\\\\76.71939\\\\204.2484\\\\283.01\\\\78.54079\\\\201.9047\\\\283.01\\\\80.27344\\\\199.3159\\\\283.01\\\\81.47583\\\\197.2172\\\\283.01\\\\83.28172\\\\194.8734\\\\283.01\\\\84.25013\\\\192.5297\\\\283.01\\\\85.65463\\\\190.1859\\\\283.01\\\\86.55134\\\\187.8422\\\\283.01\\\\88.09267\\\\185.4984\\\\283.01\\\\89.37801\\\\180.8109\\\\283.01\\\\90.42329\\\\178.4672\\\\283.01\\\\91.70932\\\\173.7797\\\\283.01\\\\92.6346\\\\171.4359\\\\283.01\\\\93.02129\\\\169.0922\\\\283.01\\\\93.30979\\\\164.4047\\\\283.01\\\\93.6478\\\\159.7172\\\\283.01\\\\93.86867\\\\155.0297\\\\283.01\\\\93.75715\\\\150.3422\\\\283.01\\\\93.46669\\\\145.6547\\\\283.01\\\\93.27223\\\\143.3109\\\\283.01\\\\92.9856\\\\138.6234\\\\283.01\\\\92.43455\\\\136.2797\\\\283.01\\\\91.41665\\\\133.9359\\\\283.01\\\\90.85938\\\\131.5922\\\\283.01\\\\90.19202\\\\129.2484\\\\283.01\\\\89.08047\\\\126.9047\\\\283.01\\\\88.56892\\\\124.5609\\\\283.01\\\\87.69531\\\\122.2172\\\\283.01\\\\86.27174\\\\119.8734\\\\283.01\\\\85.33871\\\\117.5297\\\\283.01\\\\84.03852\\\\115.1859\\\\283.01\\\\81.2221\\\\110.4984\\\\283.01\\\\80.27344\\\\109.1604\\\\283.01\\\\77.73295\\\\105.8109\\\\283.01\\\\76.16416\\\\103.4672\\\\283.01\\\\74.09638\\\\101.1234\\\\283.01\\\\71.9184\\\\98.77969\\\\283.01\\\\68.55469\\\\95.4427\\\\283.01\\\\66.21094\\\\93.35094\\\\283.01\\\\63.86719\\\\91.35781\\\\283.01\\\\61.52344\\\\89.90582\\\\283.01\\\\59.17969\\\\88.0407\\\\283.01\\\\56.83594\\\\86.3728\\\\283.01\\\\54.49219\\\\85.23886\\\\283.01\\\\52.14844\\\\83.56911\\\\283.01\\\\49.80469\\\\82.70029\\\\283.01\\\\47.46094\\\\81.4009\\\\283.01\\\\45.11719\\\\80.45787\\\\283.01\\\\42.77344\\\\79.09343\\\\283.01\\\\40.42969\\\\78.69472\\\\283.01\\\\38.08594\\\\78.00113\\\\283.01\\\\35.74219\\\\77.01344\\\\283.01\\\\33.39844\\\\76.44418\\\\283.01\\\\31.05469\\\\76.01651\\\\283.01\\\\28.71094\\\\75.22678\\\\283.01\\\\26.36719\\\\74.61642\\\\283.01\\\\24.02344\\\\74.40105\\\\283.01\\\\14.64844\\\\74.05312\\\\283.01\\\\9.960938\\\\74.09591\\\\283.01\\\\2.929688\\\\74.41573\\\\283.01\\\\0.5859375\\\\74.74547\\\\283.01\\\\-4.101563\\\\76.1767\\\\283.01\\\\-6.445313\\\\76.62514\\\\283.01\\\\-8.789063\\\\77.27011\\\\283.01\\\\-11.13281\\\\78.3245\\\\283.01\\\\-13.47656\\\\78.80508\\\\283.01\\\\-15.82031\\\\79.42928\\\\283.01\\\\-18.16406\\\\80.84683\\\\283.01\\\\-20.50781\\\\81.73235\\\\283.01\\\\-22.85156\\\\83.10505\\\\283.01\\\\-25.19531\\\\83.8896\\\\283.01\\\\-27.53906\\\\85.73323\\\\283.01\\\\-29.88281\\\\86.93073\\\\283.01\\\\-32.22656\\\\88.45541\\\\283.01\\\\-34.57031\\\\90.46002\\\\283.01\\\\-36.32372\\\\91.74844\\\\283.01\\\\-41.60156\\\\96.22536\\\\283.01\\\\-44.08482\\\\98.77969\\\\283.01\\\\-46.28906\\\\101.1685\\\\283.01\\\\-48.63281\\\\104.0022\\\\283.01\\\\-49.98205\\\\105.8109\\\\283.01\\\\-51.99305\\\\108.1547\\\\283.01\\\\-53.27454\\\\110.4984\\\\283.01\\\\-54.77706\\\\112.8422\\\\283.01\\\\-56.46552\\\\115.1859\\\\283.01\\\\-57.23792\\\\117.5297\\\\283.01\\\\-58.69997\\\\119.8734\\\\283.01\\\\-59.59329\\\\122.2172\\\\283.01\\\\-60.93391\\\\124.5609\\\\283.01\\\\-61.45277\\\\126.9047\\\\283.01\\\\-62.0745\\\\129.2484\\\\283.01\\\\-63.20891\\\\131.5922\\\\283.01\\\\-63.89457\\\\133.9359\\\\283.01\\\\-64.2122\\\\136.2797\\\\283.01\\\\-64.74208\\\\138.6234\\\\283.01\\\\-65.41684\\\\140.9672\\\\283.01\\\\-65.71338\\\\143.3109\\\\283.01\\\\-66.04911\\\\147.9984\\\\283.01\\\\-66.25537\\\\152.6859\\\\283.01\\\\-66.28944\\\\155.0297\\\\283.01\\\\-66.13839\\\\159.7172\\\\283.01\\\\-65.84704\\\\164.4047\\\\283.01\\\\-65.6146\\\\166.7484\\\\283.01\\\\-65.16927\\\\169.0922\\\\283.01\\\\-64.43269\\\\171.4359\\\\283.01\\\\-64.04324\\\\173.7797\\\\283.01\\\\-63.56812\\\\176.1234\\\\283.01\\\\-62.48605\\\\178.4672\\\\283.01\\\\-61.66916\\\\180.8109\\\\283.01\\\\-61.23355\\\\183.1547\\\\283.01\\\\-60\\\\185.4984\\\\283.01\\\\-59.02929\\\\187.8422\\\\283.01\\\\-57.57813\\\\190.1859\\\\283.01\\\\-56.76455\\\\192.5297\\\\283.01\\\\-55.16396\\\\194.8734\\\\283.01\\\\-53.87801\\\\197.2172\\\\283.01\\\\-52.31674\\\\199.5609\\\\283.01\\\\-48.63281\\\\204.4387\\\\283.01\\\\-47.14196\\\\206.5922\\\\283.01\\\\-42.63475\\\\211.2797\\\\283.01\\\\-39.25781\\\\214.554\\\\283.01\\\\-36.91406\\\\216.4344\\\\283.01\\\\-32.22656\\\\219.8671\\\\283.01\\\\-27.53906\\\\223.0999\\\\283.01\\\\-23.31792\\\\225.3422\\\\283.01\\\\-22.85156\\\\225.6686\\\\283.01\\\\-20.50781\\\\226.7934\\\\283.01\\\\-18.16406\\\\228.3114\\\\283.01\\\\-15.82031\\\\229.1045\\\\283.01\\\\-14.9365\\\\230.0297\\\\283.01\\\\-15.82031\\\\231.4054\\\\283.01\\\\-16.93359\\\\232.3734\\\\283.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846477463900001.467218939844\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"351\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"4\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-18.16406\\\\233.0766\\\\286.01\\\\-60.35156\\\\233.1818\\\\286.01\\\\-62.69531\\\\233.0766\\\\286.01\\\\-65.03906\\\\232.8253\\\\286.01\\\\-69.72656\\\\232.9942\\\\286.01\\\\-83.78906\\\\233.0441\\\\286.01\\\\-95.50781\\\\233.0671\\\\286.01\\\\-97.85156\\\\233.3067\\\\286.01\\\\-100.1953\\\\233.6324\\\\286.01\\\\-102.5391\\\\233.4044\\\\286.01\\\\-107.2266\\\\233.1842\\\\286.01\\\\-109.5703\\\\233.2251\\\\286.01\\\\-111.9141\\\\233.9738\\\\286.01\\\\-114.2578\\\\233.8765\\\\286.01\\\\-116.6016\\\\233.6229\\\\286.01\\\\-118.9453\\\\233.9675\\\\286.01\\\\-130.6641\\\\233.9967\\\\286.01\\\\-133.0078\\\\234.0855\\\\286.01\\\\-137.6953\\\\234.0855\\\\286.01\\\\-142.3828\\\\234.1551\\\\286.01\\\\-144.7266\\\\234.0941\\\\286.01\\\\-154.1016\\\\234.0642\\\\286.01\\\\-158.7891\\\\234.0999\\\\286.01\\\\-165.8203\\\\234.0642\\\\286.01\\\\-168.1641\\\\234.2429\\\\286.01\\\\-175.1953\\\\234.2112\\\\286.01\\\\-182.2266\\\\234.2686\\\\286.01\\\\-184.5703\\\\234.3486\\\\286.01\\\\-196.2891\\\\234.2902\\\\286.01\\\\-198.6328\\\\234.2467\\\\286.01\\\\-203.3203\\\\234.2935\\\\286.01\\\\-210.3516\\\\234.2224\\\\286.01\\\\-217.3828\\\\234.3115\\\\286.01\\\\-226.7578\\\\234.3891\\\\286.01\\\\-233.7891\\\\234.2362\\\\286.01\\\\-236.1328\\\\234.3235\\\\286.01\\\\-238.4766\\\\234.2502\\\\286.01\\\\-243.1641\\\\234.2088\\\\286.01\\\\-247.8516\\\\233.9638\\\\286.01\\\\-252.5391\\\\234.2967\\\\286.01\\\\-254.8828\\\\234.7444\\\\286.01\\\\-257.2266\\\\235.601\\\\286.01\\\\-259.5802\\\\237.0609\\\\286.01\\\\-261.0486\\\\239.4047\\\\286.01\\\\-261.1572\\\\241.7484\\\\286.01\\\\-260.2748\\\\246.4359\\\\286.01\\\\-257.2359\\\\251.1234\\\\286.01\\\\-255.457\\\\253.4672\\\\286.01\\\\-250.6794\\\\258.1547\\\\286.01\\\\-248.6664\\\\260.4984\\\\286.01\\\\-245.5078\\\\263.4952\\\\286.01\\\\-244.041\\\\265.1859\\\\286.01\\\\-241.534\\\\267.5297\\\\286.01\\\\-239.4093\\\\269.8734\\\\286.01\\\\-236.9663\\\\272.2172\\\\286.01\\\\-233.7891\\\\275.371\\\\286.01\\\\-231.4453\\\\277.8091\\\\286.01\\\\-229.8568\\\\279.2484\\\\286.01\\\\-226.7578\\\\282.5186\\\\286.01\\\\-225.1317\\\\283.9359\\\\286.01\\\\-222.0703\\\\287.1792\\\\286.01\\\\-220.4928\\\\288.6234\\\\286.01\\\\-218.2422\\\\290.9672\\\\286.01\\\\-217.3828\\\\291.6227\\\\286.01\\\\-215.0391\\\\292.9462\\\\286.01\\\\-212.6953\\\\294.5394\\\\286.01\\\\-210.3516\\\\295.2875\\\\286.01\\\\-208.0078\\\\296.4592\\\\286.01\\\\-205.6641\\\\296.8852\\\\286.01\\\\-203.3203\\\\297.1639\\\\286.01\\\\-196.2891\\\\297.1563\\\\286.01\\\\-193.9453\\\\297.0926\\\\286.01\\\\-179.8828\\\\296.943\\\\286.01\\\\-165.8203\\\\296.8959\\\\286.01\\\\-156.4453\\\\296.9137\\\\286.01\\\\-151.7578\\\\296.9559\\\\286.01\\\\-149.4141\\\\296.9249\\\\286.01\\\\-137.6953\\\\296.9338\\\\286.01\\\\-125.9766\\\\296.9228\\\\286.01\\\\-114.2578\\\\296.8545\\\\286.01\\\\-111.9141\\\\296.8917\\\\286.01\\\\-100.1953\\\\296.8456\\\\286.01\\\\-93.16406\\\\296.8549\\\\286.01\\\\-83.78906\\\\296.9041\\\\286.01\\\\-81.44531\\\\296.8837\\\\286.01\\\\-74.41406\\\\296.9322\\\\286.01\\\\-67.38281\\\\296.9234\\\\286.01\\\\-65.03906\\\\296.9706\\\\286.01\\\\-50.97656\\\\296.9358\\\\286.01\\\\-48.63281\\\\297.048\\\\286.01\\\\-46.28906\\\\296.9267\\\\286.01\\\\-43.94531\\\\297.0552\\\\286.01\\\\-41.60156\\\\296.9396\\\\286.01\\\\-39.25781\\\\296.9191\\\\286.01\\\\-36.91406\\\\297.4229\\\\286.01\\\\-34.57031\\\\297.3212\\\\286.01\\\\-29.88281\\\\297.409\\\\286.01\\\\-25.19531\\\\297.1687\\\\286.01\\\\-22.85156\\\\297.4125\\\\286.01\\\\-11.13281\\\\297.4441\\\\286.01\\\\-6.445313\\\\297.4125\\\\286.01\\\\0.5859375\\\\297.4229\\\\286.01\\\\2.929688\\\\297.3586\\\\286.01\\\\5.273438\\\\297.4334\\\\286.01\\\\9.960938\\\\297.3911\\\\286.01\\\\12.30469\\\\296.9467\\\\286.01\\\\14.64844\\\\296.9899\\\\286.01\\\\19.33594\\\\296.8973\\\\286.01\\\\33.39844\\\\296.8867\\\\286.01\\\\38.08594\\\\296.8666\\\\286.01\\\\49.80469\\\\296.7436\\\\286.01\\\\52.14844\\\\296.6929\\\\286.01\\\\59.17969\\\\296.6906\\\\286.01\\\\61.52344\\\\296.6365\\\\286.01\\\\66.21094\\\\296.6454\\\\286.01\\\\80.27344\\\\296.5362\\\\286.01\\\\82.61719\\\\296.5521\\\\286.01\\\\87.30469\\\\296.4947\\\\286.01\\\\89.64844\\\\296.5284\\\\286.01\\\\99.02344\\\\296.506\\\\286.01\\\\108.3984\\\\296.3986\\\\286.01\\\\115.4297\\\\296.4117\\\\286.01\\\\117.7734\\\\296.3557\\\\286.01\\\\129.4922\\\\296.3023\\\\286.01\\\\131.8359\\\\296.3139\\\\286.01\\\\136.5234\\\\295.833\\\\286.01\\\\141.2109\\\\295.8172\\\\286.01\\\\143.5547\\\\295.9179\\\\286.01\\\\145.8984\\\\295.864\\\\286.01\\\\152.9297\\\\295.8012\\\\286.01\\\\155.2734\\\\295.8486\\\\286.01\\\\157.6172\\\\295.7516\\\\286.01\\\\162.3047\\\\295.7346\\\\286.01\\\\164.6484\\\\295.6819\\\\286.01\\\\169.3359\\\\295.6998\\\\286.01\\\\181.0547\\\\295.5401\\\\286.01\\\\185.7422\\\\295.5071\\\\286.01\\\\192.7734\\\\295.5401\\\\286.01\\\\197.4609\\\\295.8012\\\\286.01\\\\202.1484\\\\295.7516\\\\286.01\\\\204.4922\\\\295.4287\\\\286.01\\\\206.8359\\\\294.8107\\\\286.01\\\\209.1797\\\\294.347\\\\286.01\\\\211.5234\\\\292.432\\\\286.01\\\\213.8672\\\\291.0641\\\\286.01\\\\216.2109\\\\289.4511\\\\286.01\\\\217.0997\\\\288.6234\\\\286.01\\\\219.2182\\\\286.2797\\\\286.01\\\\221.6202\\\\283.9359\\\\286.01\\\\225.5859\\\\279.7662\\\\286.01\\\\227.9297\\\\277.4504\\\\286.01\\\\230.2734\\\\274.9912\\\\286.01\\\\233.0769\\\\272.2172\\\\286.01\\\\234.9609\\\\270.226\\\\286.01\\\\237.6601\\\\267.5297\\\\286.01\\\\241.9922\\\\263.0508\\\\286.01\\\\246.6797\\\\258.3049\\\\286.01\\\\249.209\\\\255.8109\\\\286.01\\\\251.3672\\\\253.4207\\\\286.01\\\\253.1321\\\\251.1234\\\\286.01\\\\255.0749\\\\248.7797\\\\286.01\\\\256.5535\\\\246.4359\\\\286.01\\\\257.7698\\\\244.0922\\\\286.01\\\\259.3152\\\\241.7484\\\\286.01\\\\259.6588\\\\239.4047\\\\286.01\\\\259.5052\\\\237.0609\\\\286.01\\\\257.4836\\\\234.7172\\\\286.01\\\\256.0547\\\\233.5391\\\\286.01\\\\253.7109\\\\232.9048\\\\286.01\\\\251.3672\\\\232.5688\\\\286.01\\\\249.0234\\\\232.7431\\\\286.01\\\\246.6797\\\\232.7947\\\\286.01\\\\244.3359\\\\232.7162\\\\286.01\\\\239.6484\\\\233.0007\\\\286.01\\\\232.6172\\\\233.0108\\\\286.01\\\\230.2734\\\\232.9699\\\\286.01\\\\220.8984\\\\233.0726\\\\286.01\\\\211.5234\\\\233.091\\\\286.01\\\\206.8359\\\\233.0044\\\\286.01\\\\204.4922\\\\232.7719\\\\286.01\\\\199.8047\\\\232.7456\\\\286.01\\\\195.1172\\\\232.8346\\\\286.01\\\\190.4297\\\\232.8586\\\\286.01\\\\181.0547\\\\232.8224\\\\286.01\\\\171.6797\\\\232.8346\\\\286.01\\\\166.9922\\\\232.81\\\\286.01\\\\159.9609\\\\232.8376\\\\286.01\\\\155.2734\\\\232.8129\\\\286.01\\\\150.5859\\\\232.8376\\\\286.01\\\\143.5547\\\\232.8253\\\\286.01\\\\138.8672\\\\232.7456\\\\286.01\\\\131.8359\\\\232.7048\\\\286.01\\\\127.1484\\\\232.7614\\\\286.01\\\\117.7734\\\\232.7048\\\\286.01\\\\113.0859\\\\232.721\\\\286.01\\\\108.3984\\\\232.6767\\\\286.01\\\\106.0547\\\\232.5873\\\\286.01\\\\103.7109\\\\232.8967\\\\286.01\\\\101.3672\\\\232.9081\\\\286.01\\\\99.02344\\\\233.0951\\\\286.01\\\\89.64844\\\\233.0819\\\\286.01\\\\80.27344\\\\233.1132\\\\286.01\\\\77.92969\\\\233.0819\\\\286.01\\\\73.24219\\\\233.1221\\\\286.01\\\\63.86719\\\\233.1397\\\\286.01\\\\47.46094\\\\233.1042\\\\286.01\\\\45.11719\\\\233.0859\\\\286.01\\\\44.1744\\\\232.3734\\\\286.01\\\\42.77344\\\\230.9829\\\\286.01\\\\42.0716\\\\230.0297\\\\286.01\\\\42.77344\\\\229.2739\\\\286.01\\\\45.11719\\\\228.6098\\\\286.01\\\\47.46094\\\\227.1533\\\\286.01\\\\49.80469\\\\226.1119\\\\286.01\\\\52.14844\\\\224.628\\\\286.01\\\\54.49219\\\\223.8002\\\\286.01\\\\56.83594\\\\221.9418\\\\286.01\\\\59.17969\\\\220.3256\\\\286.01\\\\61.52344\\\\219.017\\\\286.01\\\\62.28633\\\\218.3109\\\\286.01\\\\66.21094\\\\215.1155\\\\286.01\\\\67.83708\\\\213.6234\\\\286.01\\\\68.55469\\\\212.8201\\\\286.01\\\\70.89844\\\\210.637\\\\286.01\\\\73.24219\\\\208.133\\\\286.01\\\\76.6862\\\\204.2484\\\\286.01\\\\78.48246\\\\201.9047\\\\286.01\\\\80.27344\\\\199.2337\\\\286.01\\\\81.43317\\\\197.2172\\\\286.01\\\\83.23588\\\\194.8734\\\\286.01\\\\84.22379\\\\192.5297\\\\286.01\\\\85.618\\\\190.1859\\\\286.01\\\\86.50858\\\\187.8422\\\\286.01\\\\88.05106\\\\185.4984\\\\286.01\\\\89.46748\\\\180.8109\\\\286.01\\\\90.44455\\\\178.4672\\\\286.01\\\\91.72363\\\\173.7797\\\\286.01\\\\92.65485\\\\171.4359\\\\286.01\\\\93.02794\\\\169.0922\\\\286.01\\\\93.30979\\\\164.4047\\\\286.01\\\\93.66728\\\\159.7172\\\\286.01\\\\93.85384\\\\155.0297\\\\286.01\\\\93.76065\\\\150.3422\\\\286.01\\\\93.25375\\\\143.3109\\\\286.01\\\\92.96676\\\\138.6234\\\\286.01\\\\92.39601\\\\136.2797\\\\286.01\\\\91.37577\\\\133.9359\\\\286.01\\\\90.82589\\\\131.5922\\\\286.01\\\\90.13611\\\\129.2484\\\\286.01\\\\89.05535\\\\126.9047\\\\286.01\\\\88.54037\\\\124.5609\\\\286.01\\\\87.64068\\\\122.2172\\\\286.01\\\\86.2421\\\\119.8734\\\\286.01\\\\85.29913\\\\117.5297\\\\286.01\\\\84.01531\\\\115.1859\\\\286.01\\\\81.1849\\\\110.4984\\\\286.01\\\\77.92969\\\\106.097\\\\286.01\\\\76.125\\\\103.4672\\\\286.01\\\\71.88107\\\\98.77969\\\\286.01\\\\68.55469\\\\95.47974\\\\286.01\\\\63.86719\\\\91.39851\\\\286.01\\\\61.52344\\\\89.95306\\\\286.01\\\\59.17969\\\\88.07359\\\\286.01\\\\56.83594\\\\86.40219\\\\286.01\\\\54.49219\\\\85.2847\\\\286.01\\\\52.14844\\\\83.56911\\\\286.01\\\\49.80469\\\\82.75372\\\\286.01\\\\47.46094\\\\81.42015\\\\286.01\\\\45.11719\\\\80.50576\\\\286.01\\\\42.77344\\\\79.10091\\\\286.01\\\\40.42969\\\\78.70156\\\\286.01\\\\38.08594\\\\78.04225\\\\286.01\\\\35.74219\\\\77.04612\\\\286.01\\\\33.39844\\\\76.45493\\\\286.01\\\\31.05469\\\\76.03495\\\\286.01\\\\28.71094\\\\75.26105\\\\286.01\\\\26.36719\\\\74.62567\\\\286.01\\\\24.02344\\\\74.40835\\\\286.01\\\\16.99219\\\\74.11594\\\\286.01\\\\14.64844\\\\74.06655\\\\286.01\\\\9.960938\\\\74.10896\\\\286.01\\\\2.929688\\\\74.40835\\\\286.01\\\\0.5859375\\\\74.73109\\\\286.01\\\\-4.101563\\\\76.15349\\\\286.01\\\\-6.445313\\\\76.61499\\\\286.01\\\\-8.789063\\\\77.28263\\\\286.01\\\\-11.13281\\\\78.30383\\\\286.01\\\\-13.47656\\\\78.80508\\\\286.01\\\\-15.82031\\\\79.40802\\\\286.01\\\\-18.16406\\\\80.83015\\\\286.01\\\\-20.50781\\\\81.71255\\\\286.01\\\\-22.85156\\\\83.07788\\\\286.01\\\\-25.19531\\\\83.8896\\\\286.01\\\\-27.53906\\\\85.7117\\\\286.01\\\\-29.88281\\\\86.86703\\\\286.01\\\\-32.22656\\\\88.43999\\\\286.01\\\\-34.57031\\\\90.43253\\\\286.01\\\\-36.39626\\\\91.74844\\\\286.01\\\\-41.60156\\\\96.15862\\\\286.01\\\\-44.13608\\\\98.77969\\\\286.01\\\\-46.29859\\\\101.1234\\\\286.01\\\\-48.63281\\\\103.9307\\\\286.01\\\\-50.00961\\\\105.8109\\\\286.01\\\\-52.01322\\\\108.1547\\\\286.01\\\\-53.32031\\\\110.4421\\\\286.01\\\\-54.80162\\\\112.8422\\\\286.01\\\\-56.5049\\\\115.1859\\\\286.01\\\\-57.25154\\\\117.5297\\\\286.01\\\\-58.74689\\\\119.8734\\\\286.01\\\\-59.61914\\\\122.2172\\\\286.01\\\\-60.97609\\\\124.5609\\\\286.01\\\\-61.4707\\\\126.9047\\\\286.01\\\\-62.12735\\\\129.2484\\\\286.01\\\\-63.28823\\\\131.5922\\\\286.01\\\\-63.93199\\\\133.9359\\\\286.01\\\\-64.24364\\\\136.2797\\\\286.01\\\\-65.46725\\\\140.9672\\\\286.01\\\\-65.92946\\\\145.6547\\\\286.01\\\\-66.21094\\\\150.3422\\\\286.01\\\\-66.32308\\\\155.0297\\\\286.01\\\\-66.18277\\\\159.7172\\\\286.01\\\\-65.88306\\\\164.4047\\\\286.01\\\\-65.65548\\\\166.7484\\\\286.01\\\\-65.26347\\\\169.0922\\\\286.01\\\\-64.4847\\\\171.4359\\\\286.01\\\\-63.62205\\\\176.1234\\\\286.01\\\\-62.61541\\\\178.4672\\\\286.01\\\\-61.71265\\\\180.8109\\\\286.01\\\\-61.26099\\\\183.1547\\\\286.01\\\\-60.12716\\\\185.4984\\\\286.01\\\\-59.11038\\\\187.8422\\\\286.01\\\\-57.65788\\\\190.1859\\\\286.01\\\\-56.79988\\\\192.5297\\\\286.01\\\\-55.26563\\\\194.8734\\\\286.01\\\\-53.9098\\\\197.2172\\\\286.01\\\\-52.35414\\\\199.5609\\\\286.01\\\\-50.58594\\\\201.9047\\\\286.01\\\\-47.18681\\\\206.5922\\\\286.01\\\\-42.69849\\\\211.2797\\\\286.01\\\\-39.25781\\\\214.6135\\\\286.01\\\\-34.48792\\\\218.3109\\\\286.01\\\\-29.88281\\\\221.5676\\\\286.01\\\\-27.53906\\\\223.1529\\\\286.01\\\\-23.37105\\\\225.3422\\\\286.01\\\\-22.85156\\\\225.6946\\\\286.01\\\\-20.50781\\\\226.8241\\\\286.01\\\\-18.16406\\\\228.3425\\\\286.01\\\\-15.82031\\\\229.1045\\\\286.01\\\\-14.9365\\\\230.0297\\\\286.01\\\\-15.82031\\\\231.4054\\\\286.01\\\\-16.93359\\\\232.3734\\\\286.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n";
-const char* k_rtStruct_json02 =
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846504465400001.571321740640\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"364\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"5\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"45.11719\\\\233.0859\\\\289.01\\\\44.16001\\\\232.3734\\\\289.01\\\\42.77344\\\\231.028\\\\289.01\\\\42.04498\\\\230.0297\\\\289.01\\\\42.77344\\\\229.2462\\\\289.01\\\\45.11719\\\\228.6173\\\\289.01\\\\47.46094\\\\227.1104\\\\289.01\\\\49.80469\\\\226.098\\\\289.01\\\\52.14844\\\\224.6141\\\\289.01\\\\54.49219\\\\223.7681\\\\289.01\\\\56.83594\\\\221.9221\\\\289.01\\\\59.17969\\\\220.2719\\\\289.01\\\\61.52344\\\\218.9816\\\\289.01\\\\62.24398\\\\218.3109\\\\289.01\\\\66.21094\\\\215.1002\\\\289.01\\\\67.80134\\\\213.6234\\\\289.01\\\\68.55469\\\\212.7718\\\\289.01\\\\70.89844\\\\210.6111\\\\289.01\\\\74.61816\\\\206.5922\\\\289.01\\\\76.64589\\\\204.2484\\\\289.01\\\\78.44145\\\\201.9047\\\\289.01\\\\80.27344\\\\199.1565\\\\289.01\\\\81.39723\\\\197.2172\\\\289.01\\\\83.19193\\\\194.8734\\\\289.01\\\\84.19829\\\\192.5297\\\\289.01\\\\85.55715\\\\190.1859\\\\289.01\\\\86.47488\\\\187.8422\\\\289.01\\\\87.98352\\\\185.4984\\\\289.01\\\\89.43614\\\\180.8109\\\\289.01\\\\90.43185\\\\178.4672\\\\289.01\\\\91.66755\\\\173.7797\\\\289.01\\\\92.6346\\\\171.4359\\\\289.01\\\\93.0094\\\\169.0922\\\\289.01\\\\93.45066\\\\162.0609\\\\289.01\\\\93.64378\\\\159.7172\\\\289.01\\\\93.74645\\\\157.3734\\\\289.01\\\\93.7934\\\\152.6859\\\\289.01\\\\93.7114\\\\150.3422\\\\289.01\\\\92.93333\\\\138.6234\\\\289.01\\\\92.32584\\\\136.2797\\\\289.01\\\\91.33673\\\\133.9359\\\\289.01\\\\90.79788\\\\131.5922\\\\289.01\\\\90.07662\\\\129.2484\\\\289.01\\\\89.01367\\\\126.9047\\\\289.01\\\\88.51154\\\\124.5609\\\\289.01\\\\87.5829\\\\122.2172\\\\289.01\\\\86.21134\\\\119.8734\\\\289.01\\\\85.2438\\\\117.5297\\\\289.01\\\\83.98051\\\\115.1859\\\\289.01\\\\82.44851\\\\112.8422\\\\289.01\\\\81.15704\\\\110.4984\\\\289.01\\\\77.92969\\\\106.1652\\\\289.01\\\\77.60783\\\\105.8109\\\\289.01\\\\76.08817\\\\103.4672\\\\289.01\\\\71.85195\\\\98.77969\\\\289.01\\\\68.55469\\\\95.5261\\\\289.01\\\\63.86719\\\\91.42658\\\\289.01\\\\61.52344\\\\90.00546\\\\289.01\\\\59.17969\\\\88.09907\\\\289.01\\\\56.83594\\\\86.42617\\\\289.01\\\\54.49219\\\\85.32829\\\\289.01\\\\52.14844\\\\83.5929\\\\289.01\\\\49.80469\\\\82.79196\\\\289.01\\\\47.46094\\\\81.4396\\\\289.01\\\\45.11719\\\\80.55132\\\\289.01\\\\42.77344\\\\79.11613\\\\289.01\\\\40.42969\\\\78.70156\\\\289.01\\\\38.08594\\\\78.06875\\\\289.01\\\\35.74219\\\\77.06593\\\\289.01\\\\33.39844\\\\76.46006\\\\289.01\\\\31.05469\\\\76.05299\\\\289.01\\\\28.71094\\\\75.29677\\\\289.01\\\\26.36719\\\\74.63503\\\\289.01\\\\24.02344\\\\74.42056\\\\289.01\\\\16.99219\\\\74.12224\\\\289.01\\\\12.30469\\\\74.05988\\\\289.01\\\\7.617188\\\\74.17641\\\\289.01\\\\2.929688\\\\74.40835\\\\289.01\\\\0.5859375\\\\74.69978\\\\289.01\\\\-4.101563\\\\76.1376\\\\289.01\\\\-6.445313\\\\76.582\\\\289.01\\\\-8.789063\\\\77.28263\\\\289.01\\\\-11.13281\\\\78.30383\\\\289.01\\\\-13.47656\\\\78.79336\\\\289.01\\\\-15.82031\\\\79.36918\\\\289.01\\\\-18.16406\\\\80.80879\\\\289.01\\\\-20.50781\\\\81.69893\\\\289.01\\\\-22.85156\\\\83.05925\\\\289.01\\\\-25.19531\\\\83.88489\\\\289.01\\\\-27.53906\\\\85.67889\\\\289.01\\\\-29.88281\\\\86.82161\\\\289.01\\\\-32.22656\\\\88.42921\\\\289.01\\\\-34.57031\\\\90.3988\\\\289.01\\\\-36.43259\\\\91.74844\\\\289.01\\\\-41.60156\\\\96.09487\\\\289.01\\\\-46.40716\\\\101.1234\\\\289.01\\\\-48.63281\\\\103.8925\\\\289.01\\\\-50.05581\\\\105.8109\\\\289.01\\\\-52.03897\\\\108.1547\\\\289.01\\\\-54.84508\\\\112.8422\\\\289.01\\\\-56.54788\\\\115.1859\\\\289.01\\\\-57.31724\\\\117.5297\\\\289.01\\\\-58.77809\\\\119.8734\\\\289.01\\\\-59.66415\\\\122.2172\\\\289.01\\\\-61.01031\\\\124.5609\\\\289.01\\\\-61.49414\\\\126.9047\\\\289.01\\\\-62.17529\\\\129.2484\\\\289.01\\\\-63.36781\\\\131.5922\\\\289.01\\\\-63.95774\\\\133.9359\\\\289.01\\\\-64.28482\\\\136.2797\\\\289.01\\\\-65.52673\\\\140.9672\\\\289.01\\\\-65.77621\\\\143.3109\\\\289.01\\\\-66.25\\\\150.3422\\\\289.01\\\\-66.3455\\\\155.0297\\\\289.01\\\\-66.22784\\\\159.7172\\\\289.01\\\\-65.91351\\\\164.4047\\\\289.01\\\\-65.68493\\\\166.7484\\\\289.01\\\\-65.33604\\\\169.0922\\\\289.01\\\\-64.55139\\\\171.4359\\\\289.01\\\\-63.66697\\\\176.1234\\\\289.01\\\\-61.73706\\\\180.8109\\\\289.01\\\\-61.2854\\\\183.1547\\\\289.01\\\\-60.35156\\\\185.3682\\\\289.01\\\\-59.14885\\\\187.8422\\\\289.01\\\\-57.77686\\\\190.1859\\\\289.01\\\\-56.84834\\\\192.5297\\\\289.01\\\\-55.35103\\\\194.8734\\\\289.01\\\\-53.94861\\\\197.2172\\\\289.01\\\\-50.97656\\\\201.5585\\\\289.01\\\\-48.63281\\\\204.6038\\\\289.01\\\\-47.23869\\\\206.5922\\\\289.01\\\\-42.7328\\\\211.2797\\\\289.01\\\\-39.25781\\\\214.6555\\\\289.01\\\\-34.54219\\\\218.3109\\\\289.01\\\\-32.22656\\\\219.8927\\\\289.01\\\\-27.53906\\\\223.2363\\\\289.01\\\\-23.37646\\\\225.3422\\\\289.01\\\\-22.85156\\\\225.6921\\\\289.01\\\\-20.50781\\\\226.8489\\\\289.01\\\\-18.16406\\\\228.3625\\\\289.01\\\\-15.82031\\\\229.1235\\\\289.01\\\\-14.9447\\\\230.0297\\\\289.01\\\\-15.82031\\\\231.385\\\\289.01\\\\-16.95703\\\\232.3734\\\\289.01\\\\-18.16406\\\\233.0632\\\\289.01\\\\-20.50781\\\\233.1042\\\\289.01\\\\-27.53906\\\\233.0951\\\\289.01\\\\-36.91406\\\\233.1132\\\\289.01\\\\-50.97656\\\\233.1652\\\\289.01\\\\-60.35156\\\\233.1652\\\\289.01\\\\-62.69531\\\\233.0671\\\\289.01\\\\-65.03906\\\\232.8376\\\\289.01\\\\-69.72656\\\\232.9839\\\\289.01\\\\-76.75781\\\\233.0245\\\\289.01\\\\-90.82031\\\\233.0382\\\\289.01\\\\-97.85156\\\\233.1345\\\\289.01\\\\-100.1953\\\\233.0992\\\\289.01\\\\-102.5391\\\\233.1524\\\\289.01\\\\-104.8828\\\\233.3934\\\\289.01\\\\-107.2266\\\\233.2115\\\\289.01\\\\-109.5703\\\\233.2027\\\\289.01\\\\-111.9141\\\\233.9046\\\\289.01\\\\-114.2578\\\\233.3123\\\\289.01\\\\-116.6016\\\\233.131\\\\289.01\\\\-118.9453\\\\233.9503\\\\289.01\\\\-123.6328\\\\234.0035\\\\289.01\\\\-130.6641\\\\234.0035\\\\289.01\\\\-135.3516\\\\234.1218\\\\289.01\\\\-137.6953\\\\234.054\\\\289.01\\\\-142.3828\\\\234.1551\\\\289.01\\\\-147.0703\\\\234.0336\\\\289.01\\\\-158.7891\\\\234.0691\\\\289.01\\\\-165.8203\\\\234.0314\\\\289.01\\\\-168.1641\\\\234.2175\\\\289.01\\\\-172.8516\\\\234.2539\\\\289.01\\\\-175.1953\\\\234.1973\\\\289.01\\\\-179.8828\\\\234.2721\\\\289.01\\\\-182.2266\\\\234.2574\\\\289.01\\\\-186.9141\\\\234.3359\\\\289.01\\\\-189.2578\\\\234.2721\\\\289.01\\\\-196.2891\\\\234.2502\\\\289.01\\\\-198.6328\\\\234.205\\\\289.01\\\\-200.9766\\\\234.2644\\\\289.01\\\\-205.6641\\\\234.2088\\\\289.01\\\\-215.0391\\\\234.2398\\\\289.01\\\\-217.3828\\\\234.2822\\\\289.01\\\\-229.1016\\\\234.2967\\\\289.01\\\\-233.7891\\\\234.1692\\\\289.01\\\\-238.4766\\\\234.2088\\\\289.01\\\\-243.1641\\\\234.1652\\\\289.01\\\\-245.5078\\\\234.0396\\\\289.01\\\\-247.8516\\\\234.0172\\\\289.01\\\\-250.1953\\\\234.1313\\\\289.01\\\\-252.5391\\\\234.3629\\\\289.01\\\\-254.8828\\\\235.229\\\\289.01\\\\-257.4503\\\\237.0609\\\\289.01\\\\-258.6989\\\\239.4047\\\\289.01\\\\-258.6135\\\\241.7484\\\\289.01\\\\-258.1335\\\\244.0922\\\\289.01\\\\-257.8311\\\\246.4359\\\\289.01\\\\-256.3118\\\\251.1234\\\\289.01\\\\-254.9679\\\\253.4672\\\\289.01\\\\-252.5391\\\\256.3686\\\\289.01\\\\-250.728\\\\258.1547\\\\289.01\\\\-248.6658\\\\260.4984\\\\289.01\\\\-245.5078\\\\263.5156\\\\289.01\\\\-243.1641\\\\266.0784\\\\289.01\\\\-241.5408\\\\267.5297\\\\289.01\\\\-239.3968\\\\269.8734\\\\289.01\\\\-233.7891\\\\275.3661\\\\289.01\\\\-231.4453\\\\277.8055\\\\289.01\\\\-229.1016\\\\280.0036\\\\289.01\\\\-226.7578\\\\282.5186\\\\289.01\\\\-224.4141\\\\284.6728\\\\289.01\\\\-222.0703\\\\287.1957\\\\289.01\\\\-220.4987\\\\288.6234\\\\289.01\\\\-218.2467\\\\290.9672\\\\289.01\\\\-217.3828\\\\291.6321\\\\289.01\\\\-215.0391\\\\292.9727\\\\289.01\\\\-212.6953\\\\294.534\\\\289.01\\\\-210.3516\\\\295.2615\\\\289.01\\\\-208.0078\\\\296.4424\\\\289.01\\\\-205.6641\\\\296.8658\\\\289.01\\\\-203.3203\\\\297.1563\\\\289.01\\\\-198.6328\\\\297.1793\\\\289.01\\\\-193.9453\\\\297.0673\\\\289.01\\\\-184.5703\\\\296.9514\\\\289.01\\\\-175.1953\\\\296.923\\\\289.01\\\\-165.8203\\\\296.8651\\\\289.01\\\\-154.1016\\\\296.9236\\\\289.01\\\\-149.4141\\\\296.8921\\\\289.01\\\\-144.7266\\\\296.9173\\\\289.01\\\\-137.6953\\\\296.9008\\\\289.01\\\\-135.3516\\\\296.9292\\\\289.01\\\\-128.3203\\\\296.9121\\\\289.01\\\\-116.6016\\\\296.8357\\\\289.01\\\\-111.9141\\\\296.8635\\\\289.01\\\\-102.5391\\\\296.8731\\\\289.01\\\\-88.47656\\\\296.8549\\\\289.01\\\\-81.44531\\\\296.8647\\\\289.01\\\\-79.10156\\\\296.913\\\\289.01\\\\-65.03906\\\\296.9409\\\\289.01\\\\-62.69531\\\\296.9706\\\\289.01\\\\-50.97656\\\\296.9668\\\\289.01\\\\-48.63281\\\\297.2359\\\\289.01\\\\-46.28906\\\\296.9447\\\\289.01\\\\-43.94531\\\\297.1975\\\\289.01\\\\-41.60156\\\\296.9191\\\\289.01\\\\-39.25781\\\\296.9095\\\\289.01\\\\-36.91406\\\\297.267\\\\289.01\\\\-34.57031\\\\297.0362\\\\289.01\\\\-32.22656\\\\297.4055\\\\289.01\\\\-27.53906\\\\297.3806\\\\289.01\\\\-25.19531\\\\297.4229\\\\289.01\\\\-13.47656\\\\297.4441\\\\289.01\\\\-4.101563\\\\297.4229\\\\289.01\\\\-1.757813\\\\297.2719\\\\289.01\\\\0.5859375\\\\297.4334\\\\289.01\\\\2.929688\\\\297.1626\\\\289.01\\\\5.273438\\\\297.4266\\\\289.01\\\\7.617188\\\\297.3879\\\\289.01\\\\9.960938\\\\297.2416\\\\289.01\\\\12.30469\\\\296.9841\\\\289.01\\\\14.64844\\\\297.1018\\\\289.01\\\\16.99219\\\\296.9081\\\\289.01\\\\21.67969\\\\296.9095\\\\289.01\\\\26.36719\\\\296.8673\\\\289.01\\\\28.71094\\\\296.9175\\\\289.01\\\\31.05469\\\\296.8771\\\\289.01\\\\47.46094\\\\296.7858\\\\289.01\\\\49.80469\\\\296.7229\\\\289.01\\\\59.17969\\\\296.6999\\\\289.01\\\\61.52344\\\\296.6331\\\\289.01\\\\68.55469\\\\296.6365\\\\289.01\\\\73.24219\\\\296.5732\\\\289.01\\\\84.96094\\\\296.5362\\\\289.01\\\\91.99219\\\\296.5569\\\\289.01\\\\103.7109\\\\296.4873\\\\289.01\\\\108.3984\\\\296.3976\\\\289.01\\\\113.0859\\\\296.4325\\\\289.01\\\\120.1172\\\\296.3495\\\\289.01\\\\122.4609\\\\296.364\\\\289.01\\\\127.1484\\\\296.3023\\\\289.01\\\\131.8359\\\\296.3259\\\\289.01\\\\134.1797\\\\296.1569\\\\289.01\\\\136.5234\\\\295.8717\\\\289.01\\\\138.8672\\\\295.9832\\\\289.01\\\\141.2109\\\\295.8685\\\\289.01\\\\143.5547\\\\296.085\\\\289.01\\\\145.8984\\\\295.8791\\\\289.01\\\\152.9297\\\\295.833\\\\289.01\\\\155.2734\\\\295.864\\\\289.01\\\\157.6172\\\\295.7849\\\\289.01\\\\164.6484\\\\295.6998\\\\289.01\\\\169.3359\\\\295.7346\\\\289.01\\\\174.0234\\\\295.6454\\\\289.01\\\\178.7109\\\\295.6272\\\\289.01\\\\188.0859\\\\295.5071\\\\289.01\\\\192.7734\\\\295.557\\\\289.01\\\\197.4609\\\\295.7849\\\\289.01\\\\202.1484\\\\295.7173\\\\289.01\\\\204.4922\\\\295.4439\\\\289.01\\\\206.8359\\\\294.8185\\\\289.01\\\\209.1797\\\\294.3595\\\\289.01\\\\211.5234\\\\292.4465\\\\289.01\\\\213.8672\\\\291.0974\\\\289.01\\\\216.2109\\\\289.4896\\\\289.01\\\\217.1345\\\\288.6234\\\\289.01\\\\218.5547\\\\287.023\\\\289.01\\\\221.6488\\\\283.9359\\\\289.01\\\\225.5859\\\\279.7803\\\\289.01\\\\227.9297\\\\277.5081\\\\289.01\\\\230.2734\\\\275.0207\\\\289.01\\\\232.6172\\\\272.7547\\\\289.01\\\\234.9609\\\\270.2734\\\\289.01\\\\237.7078\\\\267.5297\\\\289.01\\\\239.9578\\\\265.1859\\\\289.01\\\\244.3359\\\\260.784\\\\289.01\\\\246.6797\\\\258.2849\\\\289.01\\\\249.093\\\\255.8109\\\\289.01\\\\251.3672\\\\252.927\\\\289.01\\\\253.7109\\\\249.593\\\\289.01\\\\254.3837\\\\248.7797\\\\289.01\\\\255.2195\\\\246.4359\\\\289.01\\\\255.899\\\\244.0922\\\\289.01\\\\256.6528\\\\239.4047\\\\289.01\\\\256.6685\\\\237.0609\\\\289.01\\\\256.0547\\\\236.1658\\\\289.01\\\\255.3861\\\\234.7172\\\\289.01\\\\253.7109\\\\233.2892\\\\289.01\\\\251.3672\\\\232.6603\\\\289.01\\\\246.6797\\\\232.927\\\\289.01\\\\244.3359\\\\232.8224\\\\289.01\\\\239.6484\\\\233.0007\\\\289.01\\\\237.3047\\\\233.0305\\\\289.01\\\\230.2734\\\\232.9699\\\\289.01\\\\220.8984\\\\233.091\\\\289.01\\\\209.1797\\\\233.0819\\\\289.01\\\\206.8359\\\\233.0245\\\\289.01\\\\204.4922\\\\232.7848\\\\289.01\\\\199.8047\\\\232.7588\\\\289.01\\\\197.4609\\\\232.81\\\\289.01\\\\190.4297\\\\232.8467\\\\289.01\\\\183.3984\\\\232.8224\\\\289.01\\\\164.6484\\\\232.81\\\\289.01\\\\155.2734\\\\232.7875\\\\289.01\\\\148.2422\\\\232.8253\\\\289.01\\\\143.5547\\\\232.8003\\\\289.01\\\\138.8672\\\\232.7186\\\\289.01\\\\129.4922\\\\232.6623\\\\289.01\\\\122.4609\\\\232.7048\\\\289.01\\\\117.7734\\\\232.6477\\\\289.01\\\\115.4297\\\\232.6908\\\\289.01\\\\110.7422\\\\232.6477\\\\289.01\\\\108.3984\\\\232.5557\\\\289.01\\\\106.0547\\\\231.9897\\\\289.01\\\\103.7109\\\\232.81\\\\289.01\\\\101.3672\\\\232.8735\\\\289.01\\\\99.02344\\\\233.0819\\\\289.01\\\\82.61719\\\\233.1091\\\\289.01\\\\75.58594\\\\233.1042\\\\289.01\\\\63.86719\\\\233.1397\\\\289.01\\\\61.52344\\\\233.1132\\\\289.01\\\\54.49219\\\\233.131\\\\289.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846528466800001.465226999207\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"352\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"6\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-18.16406\\\\233.0632\\\\292.01\\\\-34.57031\\\\233.1221\\\\292.01\\\\-46.28906\\\\233.1221\\\\292.01\\\\-53.32031\\\\233.1652\\\\292.01\\\\-60.35156\\\\233.1736\\\\292.01\\\\-62.69531\\\\233.0951\\\\292.01\\\\-65.03906\\\\232.8376\\\\292.01\\\\-69.72656\\\\232.9735\\\\292.01\\\\-83.78906\\\\233.0245\\\\292.01\\\\-86.13281\\\\233.0082\\\\292.01\\\\-95.50781\\\\233.0766\\\\292.01\\\\-109.5703\\\\233.1083\\\\292.01\\\\-111.9141\\\\233.1524\\\\292.01\\\\-114.2578\\\\233.4062\\\\292.01\\\\-116.6016\\\\233.1221\\\\292.01\\\\-118.9453\\\\233.9388\\\\292.01\\\\-123.6328\\\\233.9793\\\\292.01\\\\-130.6641\\\\233.9793\\\\292.01\\\\-135.3516\\\\234.0805\\\\292.01\\\\-137.6953\\\\234.0105\\\\292.01\\\\-142.3828\\\\234.0855\\\\292.01\\\\-149.4141\\\\233.9967\\\\292.01\\\\-154.1016\\\\234.0263\\\\292.01\\\\-161.1328\\\\233.9784\\\\292.01\\\\-165.8203\\\\233.9954\\\\292.01\\\\-168.1641\\\\234.1756\\\\292.01\\\\-172.8516\\\\234.2357\\\\292.01\\\\-175.1953\\\\234.1837\\\\292.01\\\\-179.8828\\\\234.2394\\\\292.01\\\\-186.9141\\\\234.2574\\\\292.01\\\\-189.2578\\\\234.2012\\\\292.01\\\\-193.9453\\\\234.205\\\\292.01\\\\-198.6328\\\\234.1437\\\\292.01\\\\-200.9766\\\\234.2224\\\\292.01\\\\-205.6641\\\\234.1523\\\\292.01\\\\-212.6953\\\\234.2224\\\\292.01\\\\-215.0391\\\\234.2088\\\\292.01\\\\-222.0703\\\\234.2644\\\\292.01\\\\-229.1016\\\\234.2224\\\\292.01\\\\-233.7891\\\\234.0787\\\\292.01\\\\-238.4766\\\\234.1437\\\\292.01\\\\-243.1641\\\\234.1482\\\\292.01\\\\-245.5078\\\\234.0015\\\\292.01\\\\-247.8516\\\\233.9742\\\\292.01\\\\-250.1953\\\\234.1478\\\\292.01\\\\-252.5391\\\\234.7444\\\\292.01\\\\-254.8828\\\\236.1971\\\\292.01\\\\-255.7199\\\\237.0609\\\\292.01\\\\-256.4182\\\\239.4047\\\\292.01\\\\-255.9699\\\\244.0922\\\\292.01\\\\-255.9741\\\\246.4359\\\\292.01\\\\-255.8244\\\\248.7797\\\\292.01\\\\-255.2465\\\\251.1234\\\\292.01\\\\-254.8828\\\\251.716\\\\292.01\\\\-252.9549\\\\255.8109\\\\292.01\\\\-250.1953\\\\258.7278\\\\292.01\\\\-247.8516\\\\261.3344\\\\292.01\\\\-245.5078\\\\263.528\\\\292.01\\\\-243.1641\\\\266.0844\\\\292.01\\\\-241.5582\\\\267.5297\\\\292.01\\\\-239.4252\\\\269.8734\\\\292.01\\\\-233.7891\\\\275.382\\\\292.01\\\\-231.4453\\\\277.8153\\\\292.01\\\\-229.1016\\\\280.0153\\\\292.01\\\\-226.7578\\\\282.5249\\\\292.01\\\\-224.4141\\\\284.6784\\\\292.01\\\\-222.0703\\\\287.1957\\\\292.01\\\\-220.5108\\\\288.6234\\\\292.01\\\\-218.2575\\\\290.9672\\\\292.01\\\\-217.3828\\\\291.6415\\\\292.01\\\\-215.0391\\\\293\\\\292.01\\\\-212.6953\\\\294.5345\\\\292.01\\\\-210.3516\\\\295.3008\\\\292.01\\\\-208.0078\\\\296.4338\\\\292.01\\\\-205.6641\\\\296.8658\\\\292.01\\\\-203.3203\\\\297.1488\\\\292.01\\\\-196.2891\\\\297.1563\\\\292.01\\\\-193.9453\\\\297.0522\\\\292.01\\\\-184.5703\\\\296.9452\\\\292.01\\\\-177.5391\\\\296.9218\\\\292.01\\\\-172.8516\\\\296.8713\\\\292.01\\\\-161.1328\\\\296.8585\\\\292.01\\\\-158.7891\\\\296.882\\\\292.01\\\\-149.4141\\\\296.8672\\\\292.01\\\\-147.0703\\\\296.8921\\\\292.01\\\\-137.6953\\\\296.8852\\\\292.01\\\\-128.3203\\\\296.9041\\\\292.01\\\\-116.6016\\\\296.8174\\\\292.01\\\\-102.5391\\\\296.8641\\\\292.01\\\\-95.50781\\\\296.8456\\\\292.01\\\\-90.82031\\\\296.8738\\\\292.01\\\\-74.41406\\\\296.8938\\\\292.01\\\\-67.38281\\\\296.9218\\\\292.01\\\\-62.69531\\\\296.9731\\\\292.01\\\\-50.97656\\\\296.9447\\\\292.01\\\\-48.63281\\\\297.0809\\\\292.01\\\\-46.28906\\\\296.9447\\\\292.01\\\\-43.94531\\\\297.1128\\\\292.01\\\\-41.60156\\\\296.9191\\\\292.01\\\\-36.91406\\\\297.3879\\\\292.01\\\\-34.57031\\\\297.0362\\\\292.01\\\\-29.88281\\\\297.4229\\\\292.01\\\\-18.16406\\\\297.3836\\\\292.01\\\\-13.47656\\\\297.4229\\\\292.01\\\\-11.13281\\\\297.3192\\\\292.01\\\\-8.789063\\\\297.4125\\\\292.01\\\\-4.101563\\\\297.3947\\\\292.01\\\\-1.757813\\\\297.1564\\\\292.01\\\\0.5859375\\\\297.4125\\\\292.01\\\\5.273438\\\\297.2937\\\\292.01\\\\7.617188\\\\296.9841\\\\292.01\\\\9.960938\\\\297.1865\\\\292.01\\\\12.30469\\\\296.9081\\\\292.01\\\\14.64844\\\\296.9396\\\\292.01\\\\19.33594\\\\296.8985\\\\292.01\\\\28.71094\\\\296.8973\\\\292.01\\\\35.74219\\\\296.8466\\\\292.01\\\\40.42969\\\\296.8673\\\\292.01\\\\61.52344\\\\296.6577\\\\292.01\\\\68.55469\\\\296.6487\\\\292.01\\\\75.58594\\\\296.5943\\\\292.01\\\\87.30469\\\\296.549\\\\292.01\\\\91.99219\\\\296.5862\\\\292.01\\\\106.0547\\\\296.4597\\\\292.01\\\\113.0859\\\\296.4597\\\\292.01\\\\115.4297\\\\296.4117\\\\292.01\\\\127.1484\\\\296.3229\\\\292.01\\\\134.1797\\\\296.3288\\\\292.01\\\\136.5234\\\\296.2406\\\\292.01\\\\143.5547\\\\296.2559\\\\292.01\\\\145.8984\\\\295.894\\\\292.01\\\\148.2422\\\\295.9087\\\\292.01\\\\155.2734\\\\295.864\\\\292.01\\\\162.3047\\\\295.7516\\\\292.01\\\\166.9922\\\\295.7849\\\\292.01\\\\171.6797\\\\295.6998\\\\292.01\\\\183.3984\\\\295.557\\\\292.01\\\\188.0859\\\\295.5916\\\\292.01\\\\192.7734\\\\295.5742\\\\292.01\\\\197.4609\\\\295.8012\\\\292.01\\\\202.1484\\\\295.7173\\\\292.01\\\\204.4922\\\\295.4287\\\\292.01\\\\206.8359\\\\294.8185\\\\292.01\\\\209.1797\\\\294.3768\\\\292.01\\\\211.5234\\\\292.4613\\\\292.01\\\\213.8672\\\\291.1455\\\\292.01\\\\216.2109\\\\289.5482\\\\292.01\\\\217.195\\\\288.6234\\\\292.01\\\\218.5547\\\\287.0752\\\\292.01\\\\221.6824\\\\283.9359\\\\292.01\\\\225.5859\\\\279.8388\\\\292.01\\\\227.9297\\\\277.5633\\\\292.01\\\\230.2734\\\\275.0632\\\\292.01\\\\233.2115\\\\272.2172\\\\292.01\\\\234.9609\\\\270.3186\\\\292.01\\\\237.735\\\\267.5297\\\\292.01\\\\239.9391\\\\265.1859\\\\292.01\\\\244.3359\\\\260.7643\\\\292.01\\\\246.751\\\\258.1547\\\\292.01\\\\249.0234\\\\255.6098\\\\292.01\\\\250.567\\\\253.4672\\\\292.01\\\\252.0319\\\\251.1234\\\\292.01\\\\252.7511\\\\248.7797\\\\292.01\\\\253.3727\\\\246.4359\\\\292.01\\\\253.5807\\\\244.0922\\\\292.01\\\\253.6483\\\\241.7484\\\\292.01\\\\254.3572\\\\239.4047\\\\292.01\\\\254.5918\\\\237.0609\\\\292.01\\\\253.1041\\\\234.7172\\\\292.01\\\\251.3672\\\\232.9906\\\\292.01\\\\249.0234\\\\232.8704\\\\292.01\\\\246.6797\\\\232.9906\\\\292.01\\\\244.3359\\\\232.9594\\\\292.01\\\\239.6484\\\\233.0108\\\\292.01\\\\230.2734\\\\232.9906\\\\292.01\\\\220.8984\\\\233.0819\\\\292.01\\\\211.5234\\\\233.091\\\\292.01\\\\206.8359\\\\233.0245\\\\292.01\\\\204.4922\\\\232.7848\\\\292.01\\\\199.8047\\\\232.7719\\\\292.01\\\\190.4297\\\\232.8346\\\\292.01\\\\181.0547\\\\232.7719\\\\292.01\\\\178.7109\\\\232.7975\\\\292.01\\\\174.0234\\\\232.7588\\\\292.01\\\\166.9922\\\\232.7456\\\\292.01\\\\152.9297\\\\232.8003\\\\292.01\\\\145.8984\\\\232.7875\\\\292.01\\\\141.2109\\\\232.6908\\\\292.01\\\\136.5234\\\\232.6908\\\\292.01\\\\134.1797\\\\232.6477\\\\292.01\\\\127.1484\\\\232.6767\\\\292.01\\\\124.8047\\\\232.6329\\\\292.01\\\\122.4609\\\\232.6767\\\\292.01\\\\117.7734\\\\232.6329\\\\292.01\\\\115.4297\\\\232.6767\\\\292.01\\\\110.7422\\\\232.6329\\\\292.01\\\\108.3984\\\\232.4011\\\\292.01\\\\106.0547\\\\231.7168\\\\292.01\\\\103.7109\\\\232.7346\\\\292.01\\\\99.02344\\\\233.0819\\\\292.01\\\\96.67969\\\\233.1001\\\\292.01\\\\80.27344\\\\233.0859\\\\292.01\\\\77.92969\\\\233.131\\\\292.01\\\\68.55469\\\\233.1042\\\\292.01\\\\63.86719\\\\233.1483\\\\292.01\\\\54.49219\\\\233.1132\\\\292.01\\\\45.11719\\\\233.1042\\\\292.01\\\\44.13916\\\\232.3734\\\\292.01\\\\42.77344\\\\231.028\\\\292.01\\\\42.04498\\\\230.0297\\\\292.01\\\\42.77344\\\\229.2462\\\\292.01\\\\45.11719\\\\228.6098\\\\292.01\\\\47.46094\\\\227.1\\\\292.01\\\\49.80469\\\\226.0746\\\\292.01\\\\52.14844\\\\224.5908\\\\292.01\\\\54.49219\\\\223.7256\\\\292.01\\\\56.83594\\\\221.9043\\\\292.01\\\\59.17969\\\\220.2334\\\\292.01\\\\61.52344\\\\218.9233\\\\292.01\\\\62.17359\\\\218.3109\\\\292.01\\\\65.03114\\\\215.9672\\\\292.01\\\\66.21094\\\\215.0853\\\\292.01\\\\67.77555\\\\213.6234\\\\292.01\\\\68.55469\\\\212.7391\\\\292.01\\\\70.89844\\\\210.5899\\\\292.01\\\\74.60287\\\\206.5922\\\\292.01\\\\76.61049\\\\204.2484\\\\292.01\\\\78.37865\\\\201.9047\\\\292.01\\\\80.27344\\\\199.0659\\\\292.01\\\\81.3732\\\\197.2172\\\\292.01\\\\83.11832\\\\194.8734\\\\292.01\\\\84.16552\\\\192.5297\\\\292.01\\\\85.52934\\\\190.1859\\\\292.01\\\\86.43362\\\\187.8422\\\\292.01\\\\87.9126\\\\185.4984\\\\292.01\\\\89.3596\\\\180.8109\\\\292.01\\\\90.38334\\\\178.4672\\\\292.01\\\\91.58888\\\\173.7797\\\\292.01\\\\92.57813\\\\171.4359\\\\292.01\\\\92.99067\\\\169.0922\\\\292.01\\\\93.58354\\\\159.7172\\\\292.01\\\\93.69106\\\\157.3734\\\\292.01\\\\93.75715\\\\152.6859\\\\292.01\\\\93.66728\\\\150.3422\\\\292.01\\\\93.08162\\\\140.9672\\\\292.01\\\\92.89124\\\\138.6234\\\\292.01\\\\92.23668\\\\136.2797\\\\292.01\\\\91.29035\\\\133.9359\\\\292.01\\\\90.7637\\\\131.5922\\\\292.01\\\\90.01319\\\\129.2484\\\\292.01\\\\88.96999\\\\126.9047\\\\292.01\\\\88.48242\\\\124.5609\\\\292.01\\\\87.50434\\\\122.2172\\\\292.01\\\\86.16302\\\\119.8734\\\\292.01\\\\85.18534\\\\117.5297\\\\292.01\\\\83.93555\\\\115.1859\\\\292.01\\\\82.35394\\\\112.8422\\\\292.01\\\\81.1205\\\\110.4984\\\\292.01\\\\77.92969\\\\106.2493\\\\292.01\\\\77.53906\\\\105.8109\\\\292.01\\\\76.03666\\\\103.4672\\\\292.01\\\\71.81973\\\\98.77969\\\\292.01\\\\68.55469\\\\95.57756\\\\292.01\\\\63.86719\\\\91.47022\\\\292.01\\\\61.52344\\\\90.03793\\\\292.01\\\\59.17969\\\\88.1257\\\\292.01\\\\56.83594\\\\86.46088\\\\292.01\\\\54.49219\\\\85.37372\\\\292.01\\\\52.14844\\\\83.62384\\\\292.01\\\\49.80469\\\\82.8195\\\\292.01\\\\47.46094\\\\81.45925\\\\292.01\\\\45.11719\\\\80.5947\\\\292.01\\\\42.77344\\\\79.13168\\\\292.01\\\\40.42969\\\\78.71358\\\\292.01\\\\38.08594\\\\78.09455\\\\292.01\\\\35.74219\\\\77.09653\\\\292.01\\\\33.39844\\\\76.47086\\\\292.01\\\\31.05469\\\\76.06187\\\\292.01\\\\28.71094\\\\75.29641\\\\292.01\\\\26.36719\\\\74.65405\\\\292.01\\\\24.02344\\\\74.42056\\\\292.01\\\\14.64844\\\\74.05988\\\\292.01\\\\12.30469\\\\74.06546\\\\292.01\\\\7.617188\\\\74.16415\\\\292.01\\\\2.929688\\\\74.40835\\\\292.01\\\\0.5859375\\\\74.66957\\\\292.01\\\\-4.101563\\\\76.10484\\\\292.01\\\\-6.445313\\\\76.55428\\\\292.01\\\\-8.789063\\\\77.2619\\\\292.01\\\\-11.13281\\\\78.29331\\\\292.01\\\\-15.82031\\\\79.33912\\\\292.01\\\\-18.16406\\\\80.80879\\\\292.01\\\\-20.50781\\\\81.67974\\\\292.01\\\\-22.85156\\\\83.04977\\\\292.01\\\\-25.19531\\\\83.8679\\\\292.01\\\\-27.53906\\\\85.67369\\\\292.01\\\\-29.88281\\\\86.77807\\\\292.01\\\\-32.22656\\\\88.40859\\\\292.01\\\\-34.57031\\\\90.3647\\\\292.01\\\\-36.45433\\\\91.74844\\\\292.01\\\\-39.25781\\\\94.04677\\\\292.01\\\\-41.60156\\\\96.05102\\\\292.01\\\\-46.47692\\\\101.1234\\\\292.01\\\\-48.63281\\\\103.8257\\\\292.01\\\\-50.09444\\\\105.8109\\\\292.01\\\\-52.05878\\\\108.1547\\\\292.01\\\\-53.53416\\\\110.4984\\\\292.01\\\\-54.89417\\\\112.8422\\\\292.01\\\\-56.60029\\\\115.1859\\\\292.01\\\\-57.3473\\\\117.5297\\\\292.01\\\\-58.83843\\\\119.8734\\\\292.01\\\\-59.71175\\\\122.2172\\\\292.01\\\\-61.0397\\\\124.5609\\\\292.01\\\\-61.54119\\\\126.9047\\\\292.01\\\\-62.23412\\\\129.2484\\\\292.01\\\\-63.41292\\\\131.5922\\\\292.01\\\\-63.98491\\\\133.9359\\\\292.01\\\\-64.32825\\\\136.2797\\\\292.01\\\\-65.57173\\\\140.9672\\\\292.01\\\\-65.81827\\\\143.3109\\\\292.01\\\\-66.16071\\\\147.9984\\\\292.01\\\\-66.35813\\\\152.6859\\\\292.01\\\\-66.35179\\\\157.3734\\\\292.01\\\\-66.26755\\\\159.7172\\\\292.01\\\\-65.93555\\\\164.4047\\\\292.01\\\\-65.72266\\\\166.7484\\\\292.01\\\\-65.40382\\\\169.0922\\\\292.01\\\\-64.58663\\\\171.4359\\\\292.01\\\\-63.71209\\\\176.1234\\\\292.01\\\\-61.78386\\\\180.8109\\\\292.01\\\\-61.30256\\\\183.1547\\\\292.01\\\\-60.36086\\\\185.4984\\\\292.01\\\\-59.18586\\\\187.8422\\\\292.01\\\\-57.87363\\\\190.1859\\\\292.01\\\\-56.84834\\\\192.5297\\\\292.01\\\\-55.66406\\\\194.5832\\\\292.01\\\\-54.00845\\\\197.2172\\\\292.01\\\\-50.97656\\\\201.6594\\\\292.01\\\\-47.27555\\\\206.5922\\\\292.01\\\\-42.76654\\\\211.2797\\\\292.01\\\\-39.25781\\\\214.6977\\\\292.01\\\\-34.57031\\\\218.3578\\\\292.01\\\\-32.22656\\\\219.9231\\\\292.01\\\\-27.53906\\\\223.3272\\\\292.01\\\\-25.19531\\\\224.3983\\\\292.01\\\\-22.85156\\\\225.7515\\\\292.01\\\\-20.50781\\\\226.8662\\\\292.01\\\\-18.16406\\\\228.3724\\\\292.01\\\\-15.82031\\\\229.1319\\\\292.01\\\\-14.95299\\\\230.0297\\\\292.01\\\\-15.82031\\\\231.3763\\\\292.01\\\\-16.95703\\\\232.3734\\\\292.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848817597700001.509440095881\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"352\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"7\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-18.16406\\\\233.0632\\\\295.01\\\\-39.25781\\\\233.1397\\\\295.01\\\\-41.60156\\\\233.1221\\\\295.01\\\\-53.32031\\\\233.1818\\\\295.01\\\\-60.35156\\\\233.1818\\\\295.01\\\\-62.69531\\\\233.1221\\\\295.01\\\\-65.03906\\\\232.8497\\\\295.01\\\\-69.72656\\\\232.9735\\\\295.01\\\\-74.41406\\\\233.0145\\\\295.01\\\\-83.78906\\\\233.0145\\\\295.01\\\\-93.16406\\\\233.0859\\\\295.01\\\\-109.5703\\\\233.1132\\\\295.01\\\\-111.9141\\\\233.5764\\\\295.01\\\\-114.2578\\\\233.9331\\\\295.01\\\\-125.9766\\\\234.0105\\\\295.01\\\\-130.6641\\\\233.9793\\\\295.01\\\\-135.3516\\\\234.0672\\\\295.01\\\\-137.6953\\\\234.0035\\\\295.01\\\\-142.3828\\\\234.0672\\\\295.01\\\\-151.7578\\\\233.9848\\\\295.01\\\\-154.1016\\\\234.0192\\\\295.01\\\\-163.4766\\\\233.9784\\\\295.01\\\\-165.8203\\\\234.0072\\\\295.01\\\\-168.1641\\\\234.1894\\\\295.01\\\\-172.8516\\\\234.2539\\\\295.01\\\\-175.1953\\\\234.2012\\\\295.01\\\\-186.9141\\\\234.2721\\\\295.01\\\\-189.2578\\\\234.2326\\\\295.01\\\\-193.9453\\\\234.261\\\\295.01\\\\-198.6328\\\\234.1692\\\\295.01\\\\-200.9766\\\\234.2362\\\\295.01\\\\-205.6641\\\\234.1564\\\\295.01\\\\-208.0078\\\\234.1992\\\\295.01\\\\-215.0391\\\\234.2125\\\\295.01\\\\-222.0703\\\\234.2967\\\\295.01\\\\-224.4141\\\\234.226\\\\295.01\\\\-229.1016\\\\234.2224\\\\295.01\\\\-233.7891\\\\234.067\\\\295.01\\\\-240.8203\\\\234.1692\\\\295.01\\\\-243.1641\\\\234.1482\\\\295.01\\\\-247.8516\\\\233.8526\\\\295.01\\\\-250.1953\\\\233.9885\\\\295.01\\\\-252.5391\\\\234.8955\\\\295.01\\\\-254.3724\\\\237.0609\\\\295.01\\\\-255.6279\\\\239.4047\\\\295.01\\\\-254.6435\\\\241.7484\\\\295.01\\\\-254.2969\\\\244.0922\\\\295.01\\\\-254.2467\\\\248.7797\\\\295.01\\\\-253.6501\\\\253.4672\\\\295.01\\\\-252.733\\\\255.8109\\\\295.01\\\\-250.7417\\\\258.1547\\\\295.01\\\\-247.8516\\\\261.34\\\\295.01\\\\-246.2058\\\\262.8422\\\\295.01\\\\-244.0969\\\\265.1859\\\\295.01\\\\-241.6217\\\\267.5297\\\\295.01\\\\-239.489\\\\269.8734\\\\295.01\\\\-233.7891\\\\275.382\\\\295.01\\\\-231.4453\\\\277.8344\\\\295.01\\\\-229.1016\\\\280.0153\\\\295.01\\\\-226.7578\\\\282.5409\\\\295.01\\\\-224.4141\\\\284.6849\\\\295.01\\\\-222.0703\\\\287.2122\\\\295.01\\\\-220.5406\\\\288.6234\\\\295.01\\\\-218.2745\\\\290.9672\\\\295.01\\\\-217.3828\\\\291.6508\\\\295.01\\\\-215.0391\\\\293.0865\\\\295.01\\\\-212.6953\\\\294.6149\\\\295.01\\\\-210.3516\\\\295.3416\\\\295.01\\\\-208.0078\\\\296.4592\\\\295.01\\\\-205.6641\\\\296.8974\\\\295.01\\\\-203.3203\\\\297.1488\\\\295.01\\\\-196.2891\\\\297.1563\\\\295.01\\\\-193.9453\\\\297.0647\\\\295.01\\\\-182.2266\\\\296.9607\\\\295.01\\\\-175.1953\\\\296.9311\\\\295.01\\\\-170.5078\\\\296.8813\\\\295.01\\\\-158.7891\\\\296.8978\\\\295.01\\\\-154.1016\\\\296.9236\\\\295.01\\\\-149.4141\\\\296.8921\\\\295.01\\\\-142.3828\\\\296.9338\\\\295.01\\\\-128.3203\\\\296.942\\\\295.01\\\\-116.6016\\\\296.854\\\\295.01\\\\-111.9141\\\\296.8927\\\\295.01\\\\-109.5703\\\\296.8635\\\\295.01\\\\-102.5391\\\\296.8927\\\\295.01\\\\-97.85156\\\\296.8641\\\\295.01\\\\-88.47656\\\\296.9234\\\\295.01\\\\-81.44531\\\\296.9428\\\\295.01\\\\-74.41406\\\\296.9322\\\\295.01\\\\-67.38281\\\\296.9622\\\\295.01\\\\-65.03906\\\\297.1085\\\\295.01\\\\-62.69531\\\\297.0091\\\\295.01\\\\-60.35156\\\\297.0949\\\\295.01\\\\-58.00781\\\\297.0091\\\\295.01\\\\-53.32031\\\\297.0091\\\\295.01\\\\-50.97656\\\\296.9644\\\\295.01\\\\-46.28906\\\\297.3691\\\\295.01\\\\-43.94531\\\\297.4229\\\\295.01\\\\-39.25781\\\\297.2468\\\\295.01\\\\-36.91406\\\\297.1104\\\\295.01\\\\-34.57031\\\\297.373\\\\295.01\\\\-32.22656\\\\297.22\\\\295.01\\\\-29.88281\\\\297.4441\\\\295.01\\\\-27.53906\\\\297.3984\\\\295.01\\\\-22.85156\\\\297.4334\\\\295.01\\\\-13.47656\\\\297.4125\\\\295.01\\\\-11.13281\\\\297.252\\\\295.01\\\\-8.789063\\\\297.4022\\\\295.01\\\\-6.445313\\\\297.231\\\\295.01\\\\-4.101563\\\\297.3798\\\\295.01\\\\-1.757813\\\\296.9644\\\\295.01\\\\0.5859375\\\\297.252\\\\295.01\\\\2.929688\\\\297.4229\\\\295.01\\\\5.273438\\\\297.1516\\\\295.01\\\\9.960938\\\\296.8998\\\\295.01\\\\12.30469\\\\296.8888\\\\295.01\\\\14.64844\\\\296.9755\\\\295.01\\\\16.99219\\\\296.8888\\\\295.01\\\\28.71094\\\\296.878\\\\295.01\\\\40.42969\\\\296.847\\\\295.01\\\\59.17969\\\\296.7115\\\\295.01\\\\61.52344\\\\296.6365\\\\295.01\\\\66.21094\\\\296.6365\\\\295.01\\\\77.92969\\\\296.5696\\\\295.01\\\\89.64844\\\\296.5616\\\\295.01\\\\101.3672\\\\296.506\\\\295.01\\\\106.0547\\\\296.4528\\\\295.01\\\\115.4297\\\\296.4117\\\\295.01\\\\124.8047\\\\296.308\\\\295.01\\\\129.4922\\\\296.3348\\\\295.01\\\\131.8359\\\\296.1569\\\\295.01\\\\134.1797\\\\296.1766\\\\295.01\\\\136.5234\\\\295.9102\\\\295.01\\\\141.2109\\\\295.8807\\\\295.01\\\\143.5547\\\\295.9983\\\\295.01\\\\145.8984\\\\295.8791\\\\295.01\\\\148.2422\\\\295.8791\\\\295.01\\\\157.6172\\\\295.7684\\\\295.01\\\\166.9922\\\\295.7173\\\\295.01\\\\169.3359\\\\295.6638\\\\295.01\\\\174.0234\\\\295.6638\\\\295.01\\\\176.3672\\\\295.5916\\\\295.01\\\\183.3984\\\\295.5235\\\\295.01\\\\188.0859\\\\295.5742\\\\295.01\\\\192.7734\\\\295.557\\\\295.01\\\\197.4609\\\\295.8012\\\\295.01\\\\202.1484\\\\295.7173\\\\295.01\\\\204.4922\\\\295.4137\\\\295.01\\\\206.8359\\\\294.8107\\\\295.01\\\\209.1797\\\\294.3656\\\\295.01\\\\211.5234\\\\292.4688\\\\295.01\\\\213.8672\\\\291.1611\\\\295.01\\\\216.2109\\\\289.5734\\\\295.01\\\\217.2207\\\\288.6234\\\\295.01\\\\218.5547\\\\287.0638\\\\295.01\\\\221.6933\\\\283.9359\\\\295.01\\\\225.5859\\\\279.8647\\\\295.01\\\\227.9297\\\\277.5633\\\\295.01\\\\230.2734\\\\275.067\\\\295.01\\\\233.2115\\\\272.2172\\\\295.01\\\\234.9609\\\\270.3037\\\\295.01\\\\237.7232\\\\267.5297\\\\295.01\\\\239.9391\\\\265.1859\\\\295.01\\\\244.3359\\\\260.7816\\\\295.01\\\\246.788\\\\258.1547\\\\295.01\\\\249.0234\\\\255.4653\\\\295.01\\\\250.3651\\\\253.4672\\\\295.01\\\\251.5764\\\\251.1234\\\\295.01\\\\252.2446\\\\248.7797\\\\295.01\\\\252.5619\\\\246.4359\\\\295.01\\\\252.6451\\\\241.7484\\\\295.01\\\\252.8992\\\\239.4047\\\\295.01\\\\253.0001\\\\237.0609\\\\295.01\\\\252.33\\\\234.7172\\\\295.01\\\\251.3672\\\\233.4192\\\\295.01\\\\249.0234\\\\232.9487\\\\295.01\\\\241.9922\\\\233.0537\\\\295.01\\\\237.3047\\\\232.9699\\\\295.01\\\\232.6172\\\\232.9487\\\\295.01\\\\227.9297\\\\233.0207\\\\295.01\\\\216.2109\\\\233.0819\\\\295.01\\\\211.5234\\\\233.0632\\\\295.01\\\\206.8359\\\\232.9699\\\\295.01\\\\204.4922\\\\232.7588\\\\295.01\\\\199.8047\\\\232.7322\\\\295.01\\\\190.4297\\\\232.7975\\\\295.01\\\\176.3672\\\\232.7186\\\\295.01\\\\162.3047\\\\232.7322\\\\295.01\\\\152.9297\\\\232.7848\\\\295.01\\\\143.5547\\\\232.7456\\\\295.01\\\\138.8672\\\\232.6623\\\\295.01\\\\136.5234\\\\232.6908\\\\295.01\\\\131.8359\\\\232.6329\\\\295.01\\\\127.1484\\\\232.6623\\\\295.01\\\\124.8047\\\\232.6329\\\\295.01\\\\110.7422\\\\232.6477\\\\295.01\\\\108.3984\\\\232.6179\\\\295.01\\\\106.0547\\\\231.7168\\\\295.01\\\\103.7109\\\\232.6027\\\\295.01\\\\101.3672\\\\232.9735\\\\295.01\\\\99.02344\\\\233.091\\\\295.01\\\\89.64844\\\\233.1091\\\\295.01\\\\80.27344\\\\233.0819\\\\295.01\\\\73.24219\\\\233.131\\\\295.01\\\\66.21094\\\\233.1132\\\\295.01\\\\56.83594\\\\233.1397\\\\295.01\\\\54.49219\\\\233.1042\\\\295.01\\\\45.11719\\\\233.0951\\\\295.01\\\\44.15678\\\\232.3734\\\\295.01\\\\42.77344\\\\231.0106\\\\295.01\\\\42.05375\\\\230.0297\\\\295.01\\\\42.77344\\\\229.2553\\\\295.01\\\\45.11719\\\\228.5743\\\\295.01\\\\47.46094\\\\227.0897\\\\295.01\\\\49.80469\\\\226.0467\\\\295.01\\\\52.14844\\\\224.5908\\\\295.01\\\\54.49219\\\\223.7059\\\\295.01\\\\56.83594\\\\221.8778\\\\295.01\\\\59.17969\\\\220.2334\\\\295.01\\\\61.52344\\\\218.9233\\\\295.01\\\\64.98363\\\\215.9672\\\\295.01\\\\66.21094\\\\215.0635\\\\295.01\\\\67.76714\\\\213.6234\\\\295.01\\\\68.55469\\\\212.7302\\\\295.01\\\\70.89844\\\\210.5392\\\\295.01\\\\74.57118\\\\206.5922\\\\295.01\\\\76.57597\\\\204.2484\\\\295.01\\\\78.3308\\\\201.9047\\\\295.01\\\\80.27344\\\\198.9949\\\\295.01\\\\81.35471\\\\197.2172\\\\295.01\\\\83.0397\\\\194.8734\\\\295.01\\\\84.14964\\\\192.5297\\\\295.01\\\\85.47139\\\\190.1859\\\\295.01\\\\86.37085\\\\187.8422\\\\295.01\\\\87.84957\\\\185.4984\\\\295.01\\\\88.62815\\\\183.1547\\\\295.01\\\\89.2244\\\\180.8109\\\\295.01\\\\90.29716\\\\178.4672\\\\295.01\\\\91.52786\\\\173.7797\\\\295.01\\\\92.50722\\\\171.4359\\\\295.01\\\\92.97176\\\\169.0922\\\\295.01\\\\93.68722\\\\157.3734\\\\295.01\\\\93.72856\\\\152.6859\\\\295.01\\\\93.52158\\\\147.9984\\\\295.01\\\\93.06984\\\\140.9672\\\\295.01\\\\92.83925\\\\138.6234\\\\295.01\\\\92.12536\\\\136.2797\\\\295.01\\\\91.24645\\\\133.9359\\\\295.01\\\\90.72266\\\\131.5922\\\\295.01\\\\89.95934\\\\129.2484\\\\295.01\\\\88.9045\\\\126.9047\\\\295.01\\\\88.46478\\\\124.5609\\\\295.01\\\\87.35082\\\\122.2172\\\\295.01\\\\86.12689\\\\119.8734\\\\295.01\\\\85.13927\\\\117.5297\\\\295.01\\\\83.90684\\\\115.1859\\\\295.01\\\\82.26481\\\\112.8422\\\\295.01\\\\81.10777\\\\110.4984\\\\295.01\\\\77.92969\\\\106.3366\\\\295.01\\\\77.45313\\\\105.8109\\\\295.01\\\\75.98749\\\\103.4672\\\\295.01\\\\71.75832\\\\98.77969\\\\295.01\\\\68.55469\\\\95.61713\\\\295.01\\\\63.86719\\\\91.51749\\\\295.01\\\\61.52344\\\\90.08352\\\\295.01\\\\59.17969\\\\88.14508\\\\295.01\\\\56.83594\\\\86.47145\\\\295.01\\\\54.49219\\\\85.40367\\\\295.01\\\\52.14844\\\\83.63686\\\\295.01\\\\49.80469\\\\82.85554\\\\295.01\\\\47.46094\\\\81.48983\\\\295.01\\\\45.11719\\\\80.5947\\\\295.01\\\\42.77344\\\\79.16859\\\\295.01\\\\40.42969\\\\78.71358\\\\295.01\\\\38.08594\\\\78.12252\\\\295.01\\\\35.74219\\\\77.10697\\\\295.01\\\\33.39844\\\\76.50327\\\\295.01\\\\31.05469\\\\76.07934\\\\295.01\\\\28.71094\\\\75.31472\\\\295.01\\\\26.36719\\\\74.67744\\\\295.01\\\\24.02344\\\\74.42056\\\\295.01\\\\16.99219\\\\74.12224\\\\295.01\\\\12.30469\\\\74.07317\\\\295.01\\\\7.617188\\\\74.17641\\\\295.01\\\\2.929688\\\\74.40835\\\\295.01\\\\0.5859375\\\\74.66957\\\\295.01\\\\-4.101563\\\\76.07934\\\\295.01\\\\-6.445313\\\\76.52584\\\\295.01\\\\-8.789063\\\\77.22805\\\\295.01\\\\-11.13281\\\\78.25741\\\\295.01\\\\-15.82031\\\\79.32516\\\\295.01\\\\-18.16406\\\\80.7914\\\\295.01\\\\-20.50781\\\\81.66099\\\\295.01\\\\-22.85156\\\\83.04977\\\\295.01\\\\-25.19531\\\\83.83018\\\\295.01\\\\-27.53906\\\\85.65853\\\\295.01\\\\-29.88281\\\\86.7363\\\\295.01\\\\-32.22656\\\\88.3882\\\\295.01\\\\-34.57031\\\\90.3647\\\\295.01\\\\-36.52969\\\\91.74844\\\\295.01\\\\-41.60156\\\\95.97882\\\\295.01\\\\-46.52696\\\\101.1234\\\\295.01\\\\-48.63281\\\\103.7908\\\\295.01\\\\-50.13672\\\\105.8109\\\\295.01\\\\-52.07761\\\\108.1547\\\\295.01\\\\-53.5798\\\\110.4984\\\\295.01\\\\-54.92211\\\\112.8422\\\\295.01\\\\-56.62057\\\\115.1859\\\\295.01\\\\-57.39671\\\\117.5297\\\\295.01\\\\-58.88357\\\\119.8734\\\\295.01\\\\-59.73514\\\\122.2172\\\\295.01\\\\-61.08647\\\\124.5609\\\\295.01\\\\-61.55913\\\\126.9047\\\\295.01\\\\-62.3125\\\\129.2484\\\\295.01\\\\-63.44866\\\\131.5922\\\\295.01\\\\-64.00282\\\\133.9359\\\\295.01\\\\-64.36475\\\\136.2797\\\\295.01\\\\-65.6146\\\\140.9672\\\\295.01\\\\-65.84246\\\\143.3109\\\\295.01\\\\-66.18851\\\\147.9984\\\\295.01\\\\-66.41199\\\\152.6859\\\\295.01\\\\-66.39387\\\\157.3734\\\\295.01\\\\-66.14896\\\\162.0609\\\\295.01\\\\-65.75378\\\\166.7484\\\\295.01\\\\-65.45489\\\\169.0922\\\\295.01\\\\-64.61088\\\\171.4359\\\\295.01\\\\-63.74142\\\\176.1234\\\\295.01\\\\-62.87364\\\\178.4672\\\\295.01\\\\-61.83551\\\\180.8109\\\\295.01\\\\-61.31699\\\\183.1547\\\\295.01\\\\-60.39734\\\\185.4984\\\\295.01\\\\-59.19819\\\\187.8422\\\\295.01\\\\-57.87465\\\\190.1859\\\\295.01\\\\-56.84821\\\\192.5297\\\\295.01\\\\-55.66406\\\\194.6634\\\\295.01\\\\-54.06846\\\\197.2172\\\\295.01\\\\-50.97656\\\\201.7629\\\\295.01\\\\-47.3112\\\\206.5922\\\\295.01\\\\-42.79436\\\\211.2797\\\\295.01\\\\-39.25781\\\\214.7107\\\\295.01\\\\-34.57031\\\\218.463\\\\295.01\\\\-32.22656\\\\219.9411\\\\295.01\\\\-27.96936\\\\222.9984\\\\295.01\\\\-27.53906\\\\223.3836\\\\295.01\\\\-25.19531\\\\224.406\\\\295.01\\\\-22.85156\\\\225.8094\\\\295.01\\\\-20.50781\\\\226.8905\\\\295.01\\\\-18.16406\\\\228.4055\\\\295.01\\\\-15.82031\\\\229.1319\\\\295.01\\\\-14.95299\\\\230.0297\\\\295.01\\\\-15.82031\\\\231.3646\\\\295.01\\\\-16.96898\\\\232.3734\\\\295.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848849599600001.538291679804\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"358\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"8\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-18.16406\\\\233.0632\\\\298.01\\\\-27.53906\\\\233.1042\\\\298.01\\\\-29.88281\\\\233.0819\\\\298.01\\\\-34.57031\\\\233.131\\\\298.01\\\\-43.94531\\\\233.1221\\\\298.01\\\\-50.97656\\\\233.1736\\\\298.01\\\\-62.69531\\\\233.1397\\\\298.01\\\\-65.03906\\\\232.8376\\\\298.01\\\\-69.72656\\\\232.9839\\\\298.01\\\\-79.10156\\\\233.0245\\\\298.01\\\\-90.82031\\\\233.0382\\\\298.01\\\\-93.16406\\\\233.0859\\\\298.01\\\\-109.5703\\\\233.1132\\\\298.01\\\\-111.9141\\\\233.1791\\\\298.01\\\\-114.2578\\\\233.7139\\\\298.01\\\\-118.9453\\\\233.9793\\\\298.01\\\\-128.3203\\\\234.0284\\\\298.01\\\\-130.6641\\\\233.9793\\\\298.01\\\\-135.3516\\\\234.0591\\\\298.01\\\\-137.6953\\\\234.0284\\\\298.01\\\\-142.3828\\\\234.0855\\\\298.01\\\\-144.7266\\\\234.0284\\\\298.01\\\\-151.7578\\\\234.002\\\\298.01\\\\-158.7891\\\\234.0263\\\\298.01\\\\-163.4766\\\\233.9784\\\\298.01\\\\-165.8203\\\\234.0072\\\\298.01\\\\-168.1641\\\\234.1756\\\\298.01\\\\-170.5078\\\\234.2214\\\\298.01\\\\-179.8828\\\\234.1934\\\\298.01\\\\-186.9141\\\\234.2721\\\\298.01\\\\-189.2578\\\\234.2289\\\\298.01\\\\-193.9453\\\\234.2431\\\\298.01\\\\-198.6328\\\\234.1692\\\\298.01\\\\-200.9766\\\\234.2326\\\\298.01\\\\-205.6641\\\\234.1271\\\\298.01\\\\-212.6953\\\\234.2224\\\\298.01\\\\-215.0391\\\\234.1992\\\\298.01\\\\-222.0703\\\\234.3115\\\\298.01\\\\-224.4141\\\\234.2224\\\\298.01\\\\-226.7578\\\\234.2502\\\\298.01\\\\-233.7891\\\\234.0906\\\\298.01\\\\-238.4766\\\\234.0329\\\\298.01\\\\-243.1641\\\\234.0283\\\\298.01\\\\-247.8516\\\\233.7949\\\\298.01\\\\-250.1953\\\\233.8681\\\\298.01\\\\-252.5391\\\\234.7626\\\\298.01\\\\-254.3469\\\\237.0609\\\\298.01\\\\-255.6034\\\\239.4047\\\\298.01\\\\-254.5181\\\\241.7484\\\\298.01\\\\-254.2274\\\\244.0922\\\\298.01\\\\-254.181\\\\248.7797\\\\298.01\\\\-253.9355\\\\251.1234\\\\298.01\\\\-253.5926\\\\253.4672\\\\298.01\\\\-252.7483\\\\255.8109\\\\298.01\\\\-250.8092\\\\258.1547\\\\298.01\\\\-248.713\\\\260.4984\\\\298.01\\\\-246.263\\\\262.8422\\\\298.01\\\\-244.1406\\\\265.1859\\\\298.01\\\\-241.6671\\\\267.5297\\\\298.01\\\\-239.4754\\\\269.8734\\\\298.01\\\\-237.0156\\\\272.2172\\\\298.01\\\\-233.7891\\\\275.382\\\\298.01\\\\-231.4453\\\\277.8249\\\\298.01\\\\-229.1016\\\\279.9981\\\\298.01\\\\-226.7578\\\\282.5281\\\\298.01\\\\-224.4141\\\\284.6784\\\\298.01\\\\-222.0703\\\\287.2355\\\\298.01\\\\-220.5414\\\\288.6234\\\\298.01\\\\-218.2745\\\\290.9672\\\\298.01\\\\-217.3828\\\\291.6508\\\\298.01\\\\-212.6953\\\\294.5949\\\\298.01\\\\-210.3516\\\\295.3142\\\\298.01\\\\-208.0078\\\\296.4674\\\\298.01\\\\-205.6641\\\\296.8852\\\\298.01\\\\-203.3203\\\\297.1563\\\\298.01\\\\-196.2891\\\\297.1488\\\\298.01\\\\-193.9453\\\\297.0597\\\\298.01\\\\-182.2266\\\\296.9529\\\\298.01\\\\-168.1641\\\\296.8576\\\\298.01\\\\-154.1016\\\\296.9249\\\\298.01\\\\-149.4141\\\\296.8921\\\\298.01\\\\-128.3203\\\\296.9228\\\\298.01\\\\-121.2891\\\\296.8623\\\\298.01\\\\-111.9141\\\\296.8549\\\\298.01\\\\-107.2266\\\\296.8266\\\\298.01\\\\-102.5391\\\\296.8731\\\\298.01\\\\-95.50781\\\\296.8453\\\\298.01\\\\-88.47656\\\\296.9218\\\\298.01\\\\-83.78906\\\\296.9016\\\\298.01\\\\-69.72656\\\\296.979\\\\298.01\\\\-67.38281\\\\296.9514\\\\298.01\\\\-65.03906\\\\297.2199\\\\298.01\\\\-62.69531\\\\296.9622\\\\298.01\\\\-55.66406\\\\296.9926\\\\298.01\\\\-50.97656\\\\296.9467\\\\298.01\\\\-48.63281\\\\297.3652\\\\298.01\\\\-46.28906\\\\297.0439\\\\298.01\\\\-43.94531\\\\297.2875\\\\298.01\\\\-39.25781\\\\297.0121\\\\298.01\\\\-34.57031\\\\297.1564\\\\298.01\\\\-32.22656\\\\297.3612\\\\298.01\\\\-29.88281\\\\297.4229\\\\298.01\\\\-27.53906\\\\297.1687\\\\298.01\\\\-25.19531\\\\297.4334\\\\298.01\\\\-18.16406\\\\297.3612\\\\298.01\\\\-15.82031\\\\297.4441\\\\298.01\\\\-13.47656\\\\297.4125\\\\298.01\\\\-11.13281\\\\297.2468\\\\298.01\\\\-8.789063\\\\297.4125\\\\298.01\\\\-6.445313\\\\297.373\\\\298.01\\\\-4.101563\\\\297.4195\\\\298.01\\\\-1.757813\\\\297.077\\\\298.01\\\\0.5859375\\\\297.4229\\\\298.01\\\\2.929688\\\\297.4125\\\\298.01\\\\5.273438\\\\296.9489\\\\298.01\\\\7.617188\\\\297.3168\\\\298.01\\\\9.960938\\\\296.9377\\\\298.01\\\\12.30469\\\\296.8998\\\\298.01\\\\14.64844\\\\297.1975\\\\298.01\\\\16.99219\\\\296.8579\\\\298.01\\\\28.71094\\\\296.878\\\\298.01\\\\40.42969\\\\296.8163\\\\298.01\\\\42.77344\\\\296.8369\\\\298.01\\\\49.80469\\\\296.734\\\\298.01\\\\59.17969\\\\296.6906\\\\298.01\\\\61.52344\\\\296.6365\\\\298.01\\\\68.55469\\\\296.6278\\\\298.01\\\\73.24219\\\\296.5777\\\\298.01\\\\75.58594\\\\296.6191\\\\298.01\\\\84.96094\\\\296.5284\\\\298.01\\\\96.67969\\\\296.5538\\\\298.01\\\\103.7109\\\\296.479\\\\298.01\\\\115.4297\\\\296.4259\\\\298.01\\\\122.4609\\\\296.3434\\\\298.01\\\\129.4922\\\\296.3495\\\\298.01\\\\131.8359\\\\295.9141\\\\298.01\\\\136.5234\\\\296.2256\\\\298.01\\\\138.8672\\\\295.833\\\\298.01\\\\143.5547\\\\295.9857\\\\298.01\\\\145.8984\\\\295.8791\\\\298.01\\\\152.9297\\\\295.833\\\\298.01\\\\164.6484\\\\295.6819\\\\298.01\\\\171.6797\\\\295.6819\\\\298.01\\\\181.0547\\\\295.5401\\\\298.01\\\\185.7422\\\\295.5742\\\\298.01\\\\192.7734\\\\295.557\\\\298.01\\\\197.4609\\\\295.8012\\\\298.01\\\\202.1484\\\\295.6819\\\\298.01\\\\204.4922\\\\295.3698\\\\298.01\\\\206.8359\\\\294.803\\\\298.01\\\\209.1797\\\\294.3656\\\\298.01\\\\211.5234\\\\292.4764\\\\298.01\\\\213.8672\\\\291.1765\\\\298.01\\\\216.2109\\\\289.5873\\\\298.01\\\\217.229\\\\288.6234\\\\298.01\\\\218.5547\\\\287.0752\\\\298.01\\\\221.7097\\\\283.9359\\\\298.01\\\\225.5859\\\\279.8775\\\\298.01\\\\227.9297\\\\277.5633\\\\298.01\\\\230.2734\\\\275.0808\\\\298.01\\\\233.1989\\\\272.2172\\\\298.01\\\\234.9609\\\\270.2887\\\\298.01\\\\237.7384\\\\267.5297\\\\298.01\\\\241.9922\\\\263.0843\\\\298.01\\\\244.3359\\\\260.7643\\\\298.01\\\\246.788\\\\258.1547\\\\298.01\\\\249.0234\\\\255.451\\\\298.01\\\\250.3651\\\\253.4672\\\\298.01\\\\251.5297\\\\251.1234\\\\298.01\\\\252.1947\\\\248.7797\\\\298.01\\\\252.4915\\\\246.4359\\\\298.01\\\\252.5755\\\\241.7484\\\\298.01\\\\252.8592\\\\239.4047\\\\298.01\\\\252.9236\\\\237.0609\\\\298.01\\\\252.2924\\\\234.7172\\\\298.01\\\\251.3672\\\\233.4697\\\\298.01\\\\249.0234\\\\232.882\\\\298.01\\\\244.3359\\\\232.9048\\\\298.01\\\\241.9922\\\\233.0145\\\\298.01\\\\232.6172\\\\232.9048\\\\298.01\\\\227.9297\\\\233.0007\\\\298.01\\\\216.2109\\\\233.0632\\\\298.01\\\\211.5234\\\\233.0537\\\\298.01\\\\206.8359\\\\232.9699\\\\298.01\\\\204.4922\\\\232.7322\\\\298.01\\\\199.8047\\\\232.7186\\\\298.01\\\\190.4297\\\\232.7719\\\\298.01\\\\183.3984\\\\232.7719\\\\298.01\\\\181.0547\\\\232.7322\\\\298.01\\\\174.0234\\\\232.7048\\\\298.01\\\\171.6797\\\\232.7322\\\\298.01\\\\166.9922\\\\232.6908\\\\298.01\\\\157.6172\\\\232.7975\\\\298.01\\\\155.2734\\\\232.7588\\\\298.01\\\\148.2422\\\\232.7875\\\\298.01\\\\143.5547\\\\232.7614\\\\298.01\\\\138.8672\\\\232.6477\\\\298.01\\\\124.8047\\\\232.6179\\\\298.01\\\\122.4609\\\\232.6477\\\\298.01\\\\113.0859\\\\232.6027\\\\298.01\\\\110.7422\\\\232.4552\\\\298.01\\\\108.3984\\\\232.2192\\\\298.01\\\\106.0547\\\\231.6764\\\\298.01\\\\103.7109\\\\231.8559\\\\298.01\\\\102.8237\\\\232.3734\\\\298.01\\\\101.3672\\\\232.9839\\\\298.01\\\\99.02344\\\\233.0951\\\\298.01\\\\87.30469\\\\233.0819\\\\298.01\\\\84.96094\\\\233.1091\\\\298.01\\\\80.27344\\\\233.0726\\\\298.01\\\\77.92969\\\\233.1132\\\\298.01\\\\70.89844\\\\233.1397\\\\298.01\\\\68.55469\\\\233.1132\\\\298.01\\\\52.14844\\\\233.131\\\\298.01\\\\45.11719\\\\233.0859\\\\298.01\\\\44.16726\\\\232.3734\\\\298.01\\\\42.77344\\\\231.0206\\\\298.01\\\\42.04498\\\\230.0297\\\\298.01\\\\42.77344\\\\229.2462\\\\298.01\\\\45.11719\\\\228.5664\\\\298.01\\\\47.46094\\\\227.0695\\\\298.01\\\\49.80469\\\\226.0552\\\\298.01\\\\52.14844\\\\224.5723\\\\298.01\\\\54.49219\\\\223.6857\\\\298.01\\\\56.83594\\\\221.8519\\\\298.01\\\\59.17969\\\\220.2086\\\\298.01\\\\61.52344\\\\218.8854\\\\298.01\\\\64.94469\\\\215.9672\\\\298.01\\\\66.21094\\\\215.0191\\\\298.01\\\\67.72036\\\\213.6234\\\\298.01\\\\68.55469\\\\212.6986\\\\298.01\\\\70.89844\\\\210.5055\\\\298.01\\\\74.53191\\\\206.5922\\\\298.01\\\\76.54903\\\\204.2484\\\\298.01\\\\78.26105\\\\201.9047\\\\298.01\\\\80.27344\\\\198.9262\\\\298.01\\\\82.61719\\\\195.2822\\\\298.01\\\\82.98087\\\\194.8734\\\\298.01\\\\84.96094\\\\190.9255\\\\298.01\\\\85.43701\\\\190.1859\\\\298.01\\\\86.33423\\\\187.8422\\\\298.01\\\\87.78722\\\\185.4984\\\\298.01\\\\88.60233\\\\183.1547\\\\298.01\\\\89.10253\\\\180.8109\\\\298.01\\\\90.17504\\\\178.4672\\\\298.01\\\\90.88959\\\\176.1234\\\\298.01\\\\91.43783\\\\173.7797\\\\298.01\\\\92.39601\\\\171.4359\\\\298.01\\\\92.95762\\\\169.0922\\\\298.01\\\\93.55695\\\\159.7172\\\\298.01\\\\93.65527\\\\157.3734\\\\298.01\\\\93.67542\\\\152.6859\\\\298.01\\\\93.61213\\\\150.3422\\\\298.01\\\\93.22542\\\\143.3109\\\\298.01\\\\93.06345\\\\140.9672\\\\298.01\\\\92.77563\\\\138.6234\\\\298.01\\\\91.21714\\\\133.9359\\\\298.01\\\\90.67235\\\\131.5922\\\\298.01\\\\89.88776\\\\129.2484\\\\298.01\\\\88.8737\\\\126.9047\\\\298.01\\\\88.44087\\\\124.5609\\\\298.01\\\\86.09712\\\\119.8734\\\\298.01\\\\85.05786\\\\117.5297\\\\298.01\\\\83.87151\\\\115.1859\\\\298.01\\\\82.22388\\\\112.8422\\\\298.01\\\\81.09117\\\\110.4984\\\\298.01\\\\77.92969\\\\106.4052\\\\298.01\\\\77.3894\\\\105.8109\\\\298.01\\\\75.94332\\\\103.4672\\\\298.01\\\\71.71799\\\\98.77969\\\\298.01\\\\68.55469\\\\95.65721\\\\298.01\\\\63.86719\\\\91.54878\\\\298.01\\\\61.52344\\\\90.1121\\\\298.01\\\\59.17969\\\\88.15762\\\\298.01\\\\56.83594\\\\86.51503\\\\298.01\\\\54.49219\\\\85.42721\\\\298.01\\\\52.14844\\\\83.64907\\\\298.01\\\\49.80469\\\\82.89023\\\\298.01\\\\47.46094\\\\81.50237\\\\298.01\\\\45.11719\\\\80.62591\\\\298.01\\\\42.77344\\\\79.18153\\\\298.01\\\\40.42969\\\\78.7203\\\\298.01\\\\38.08594\\\\78.1349\\\\298.01\\\\35.74219\\\\77.11755\\\\298.01\\\\33.39844\\\\76.51949\\\\298.01\\\\31.05469\\\\76.07934\\\\298.01\\\\26.36719\\\\74.67744\\\\298.01\\\\24.02344\\\\74.42056\\\\298.01\\\\14.64844\\\\74.07317\\\\298.01\\\\9.960938\\\\74.11538\\\\298.01\\\\2.929688\\\\74.40105\\\\298.01\\\\0.5859375\\\\74.67952\\\\298.01\\\\-1.757813\\\\75.31406\\\\298.01\\\\-4.101563\\\\76.07065\\\\298.01\\\\-6.445313\\\\76.49051\\\\298.01\\\\-8.789063\\\\77.17276\\\\298.01\\\\-11.13281\\\\78.20097\\\\298.01\\\\-15.82031\\\\79.31967\\\\298.01\\\\-18.16406\\\\80.76948\\\\298.01\\\\-20.50781\\\\81.64266\\\\298.01\\\\-22.85156\\\\83.0305\\\\298.01\\\\-25.19531\\\\83.7937\\\\298.01\\\\-27.53906\\\\85.63515\\\\298.01\\\\-29.88281\\\\86.7363\\\\298.01\\\\-32.22656\\\\88.36089\\\\298.01\\\\-34.57031\\\\90.3302\\\\298.01\\\\-36.56719\\\\91.74844\\\\298.01\\\\-41.60156\\\\95.93605\\\\298.01\\\\-46.58845\\\\101.1234\\\\298.01\\\\-50.17995\\\\105.8109\\\\298.01\\\\-52.10386\\\\108.1547\\\\298.01\\\\-53.63992\\\\110.4984\\\\298.01\\\\-54.95532\\\\112.8422\\\\298.01\\\\-56.64794\\\\115.1859\\\\298.01\\\\-57.4403\\\\117.5297\\\\298.01\\\\-58.91927\\\\119.8734\\\\298.01\\\\-59.78655\\\\122.2172\\\\298.01\\\\-61.11754\\\\124.5609\\\\298.01\\\\-61.58921\\\\126.9047\\\\298.01\\\\-62.38012\\\\129.2484\\\\298.01\\\\-63.49118\\\\131.5922\\\\298.01\\\\-64.02599\\\\133.9359\\\\298.01\\\\-64.3932\\\\136.2797\\\\298.01\\\\-65.11897\\\\138.6234\\\\298.01\\\\-65.64544\\\\140.9672\\\\298.01\\\\-66.23938\\\\147.9984\\\\298.01\\\\-66.46289\\\\152.6859\\\\298.01\\\\-66.48911\\\\155.0297\\\\298.01\\\\-66.34437\\\\159.7172\\\\298.01\\\\-65.99894\\\\164.4047\\\\298.01\\\\-65.49149\\\\169.0922\\\\298.01\\\\-64.6875\\\\171.4359\\\\298.01\\\\-63.7739\\\\176.1234\\\\298.01\\\\-62.9398\\\\178.4672\\\\298.01\\\\-61.86011\\\\180.8109\\\\298.01\\\\-61.33423\\\\183.1547\\\\298.01\\\\-60.43332\\\\185.4984\\\\298.01\\\\-58.00781\\\\190.0632\\\\298.01\\\\-56.85406\\\\192.5297\\\\298.01\\\\-55.66406\\\\194.7283\\\\298.01\\\\-54.11692\\\\197.2172\\\\298.01\\\\-50.97656\\\\201.8369\\\\298.01\\\\-47.36435\\\\206.5922\\\\298.01\\\\-45.04395\\\\208.9359\\\\298.01\\\\-42.83026\\\\211.2797\\\\298.01\\\\-39.25781\\\\214.7435\\\\298.01\\\\-34.57031\\\\218.4974\\\\298.01\\\\-32.22656\\\\219.9595\\\\298.01\\\\-28.02053\\\\222.9984\\\\298.01\\\\-27.53906\\\\223.4238\\\\298.01\\\\-25.19531\\\\224.4187\\\\298.01\\\\-22.85156\\\\225.8252\\\\298.01\\\\-20.50781\\\\226.9067\\\\298.01\\\\-18.16406\\\\228.4286\\\\298.01\\\\-15.82031\\\\229.1235\\\\298.01\\\\-14.9447\\\\230.0297\\\\298.01\\\\-15.82031\\\\231.3969\\\\298.01\\\\-16.94484\\\\232.3734\\\\298.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848866600500001.541849142008\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"358\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"9\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-252.9673\\\\255.8109\\\\301.01\\\\-248.7477\\\\260.4984\\\\301.01\\\\-245.5078\\\\263.6263\\\\301.01\\\\-244.1215\\\\265.1859\\\\301.01\\\\-241.6381\\\\267.5297\\\\301.01\\\\-239.4403\\\\269.8734\\\\301.01\\\\-233.7891\\\\275.3765\\\\301.01\\\\-231.4453\\\\277.8215\\\\301.01\\\\-229.1016\\\\280.0093\\\\301.01\\\\-226.7578\\\\282.5186\\\\301.01\\\\-224.4141\\\\284.6481\\\\301.01\\\\-222.0703\\\\287.2057\\\\301.01\\\\-220.5227\\\\288.6234\\\\301.01\\\\-218.2914\\\\290.9672\\\\301.01\\\\-217.3828\\\\291.6599\\\\301.01\\\\-212.6953\\\\294.5939\\\\301.01\\\\-210.3516\\\\295.3008\\\\301.01\\\\-208.0078\\\\296.4424\\\\301.01\\\\-205.6641\\\\296.8595\\\\301.01\\\\-203.3203\\\\297.1563\\\\301.01\\\\-196.2891\\\\297.1563\\\\301.01\\\\-193.9453\\\\297.0746\\\\301.01\\\\-186.9141\\\\297.033\\\\301.01\\\\-177.5391\\\\296.8785\\\\301.01\\\\-165.8203\\\\296.8345\\\\301.01\\\\-151.7578\\\\296.8757\\\\301.01\\\\-149.4141\\\\296.8513\\\\301.01\\\\-140.0391\\\\296.8521\\\\301.01\\\\-137.6953\\\\296.886\\\\301.01\\\\-118.9453\\\\296.8623\\\\301.01\\\\-111.9141\\\\296.8078\\\\301.01\\\\-104.8828\\\\296.8456\\\\301.01\\\\-97.85156\\\\296.836\\\\301.01\\\\-93.16406\\\\296.8927\\\\301.01\\\\-86.13281\\\\296.9203\\\\301.01\\\\-81.44531\\\\296.8927\\\\301.01\\\\-74.41406\\\\296.9514\\\\301.01\\\\-58.00781\\\\296.9428\\\\301.01\\\\-53.32031\\\\296.9579\\\\301.01\\\\-50.97656\\\\296.9175\\\\301.01\\\\-48.63281\\\\297.0362\\\\301.01\\\\-46.28906\\\\296.9267\\\\301.01\\\\-43.94531\\\\297.2032\\\\301.01\\\\-41.60156\\\\297.3168\\\\301.01\\\\-39.25781\\\\296.8998\\\\301.01\\\\-34.57031\\\\297.3691\\\\301.01\\\\-32.22656\\\\297.2089\\\\301.01\\\\-29.88281\\\\297.4229\\\\301.01\\\\-27.53906\\\\297.3299\\\\301.01\\\\-25.19531\\\\297.4125\\\\301.01\\\\-13.47656\\\\297.4125\\\\301.01\\\\-11.13281\\\\297.252\\\\301.01\\\\-8.789063\\\\297.4055\\\\301.01\\\\-6.445313\\\\297.3015\\\\301.01\\\\-4.101563\\\\297.4125\\\\301.01\\\\-1.757813\\\\297.1261\\\\301.01\\\\0.5859375\\\\297.4229\\\\301.01\\\\2.929688\\\\297.4125\\\\301.01\\\\5.273438\\\\297.1687\\\\301.01\\\\7.617188\\\\297.0362\\\\301.01\\\\9.960938\\\\297.1516\\\\301.01\\\\12.30469\\\\296.8579\\\\301.01\\\\14.64844\\\\296.9396\\\\301.01\\\\19.33594\\\\296.8369\\\\301.01\\\\28.71094\\\\296.868\\\\301.01\\\\38.08594\\\\296.7858\\\\301.01\\\\45.11719\\\\296.7858\\\\301.01\\\\49.80469\\\\296.7115\\\\301.01\\\\54.49219\\\\296.7115\\\\301.01\\\\63.86719\\\\296.6154\\\\301.01\\\\66.21094\\\\296.6278\\\\301.01\\\\77.92969\\\\296.5901\\\\301.01\\\\80.27344\\\\296.5362\\\\301.01\\\\91.99219\\\\296.5284\\\\301.01\\\\94.33594\\\\296.5461\\\\301.01\\\\103.7109\\\\296.4917\\\\301.01\\\\106.0547\\\\296.5208\\\\301.01\\\\108.3984\\\\296.4462\\\\301.01\\\\120.1172\\\\296.3831\\\\301.01\\\\129.4922\\\\296.3139\\\\301.01\\\\134.1797\\\\295.9385\\\\301.01\\\\136.5234\\\\296.3023\\\\301.01\\\\138.8672\\\\295.833\\\\301.01\\\\141.2109\\\\295.939\\\\301.01\\\\155.2734\\\\295.7849\\\\301.01\\\\159.9609\\\\295.7849\\\\301.01\\\\169.3359\\\\295.6638\\\\301.01\\\\176.3672\\\\295.6638\\\\301.01\\\\181.0547\\\\295.5742\\\\301.01\\\\185.7422\\\\295.6093\\\\301.01\\\\192.7734\\\\295.5742\\\\301.01\\\\197.4609\\\\295.8172\\\\301.01\\\\202.1484\\\\295.6638\\\\301.01\\\\204.4922\\\\295.3698\\\\301.01\\\\206.8359\\\\294.8185\\\\301.01\\\\209.1797\\\\294.3828\\\\301.01\\\\211.5234\\\\292.4841\\\\301.01\\\\213.8672\\\\291.1916\\\\301.01\\\\216.2109\\\\289.6171\\\\301.01\\\\217.2534\\\\288.6234\\\\301.01\\\\218.5547\\\\287.0864\\\\301.01\\\\221.7097\\\\283.9359\\\\301.01\\\\225.5859\\\\279.9023\\\\301.01\\\\227.9297\\\\277.5431\\\\301.01\\\\230.2734\\\\275.0279\\\\301.01\\\\233.1732\\\\272.2172\\\\301.01\\\\234.9609\\\\270.242\\\\301.01\\\\237.6891\\\\267.5297\\\\301.01\\\\241.9922\\\\263.0863\\\\301.01\\\\244.3359\\\\260.7816\\\\301.01\\\\246.7498\\\\258.1547\\\\301.01\\\\249.0234\\\\255.4868\\\\301.01\\\\250.5381\\\\253.4672\\\\301.01\\\\251.9462\\\\251.1234\\\\301.01\\\\252.6083\\\\248.7797\\\\301.01\\\\253.1286\\\\246.4359\\\\301.01\\\\253.2715\\\\244.0922\\\\301.01\\\\253.323\\\\241.7484\\\\301.01\\\\254.0203\\\\239.4047\\\\301.01\\\\254.2562\\\\237.0609\\\\301.01\\\\253.7109\\\\236.3782\\\\301.01\\\\252.7413\\\\234.7172\\\\301.01\\\\251.3672\\\\233.1433\\\\301.01\\\\249.0234\\\\232.7162\\\\301.01\\\\246.6797\\\\232.5994\\\\301.01\\\\244.3359\\\\232.6145\\\\301.01\\\\241.9922\\\\232.8788\\\\301.01\\\\239.6484\\\\232.9594\\\\301.01\\\\232.6172\\\\232.9487\\\\301.01\\\\223.2422\\\\233.0498\\\\301.01\\\\211.5234\\\\233.0726\\\\301.01\\\\206.8359\\\\233.0007\\\\301.01\\\\204.4922\\\\232.7186\\\\301.01\\\\202.1484\\\\232.7048\\\\301.01\\\\195.1172\\\\232.7719\\\\301.01\\\\192.7734\\\\232.7456\\\\301.01\\\\183.3984\\\\232.7588\\\\301.01\\\\174.0234\\\\232.7322\\\\301.01\\\\164.6484\\\\232.7322\\\\301.01\\\\152.9297\\\\232.8003\\\\301.01\\\\145.8984\\\\232.7875\\\\301.01\\\\141.2109\\\\232.6908\\\\301.01\\\\134.1797\\\\232.6329\\\\301.01\\\\127.1484\\\\232.6329\\\\301.01\\\\124.8047\\\\232.5873\\\\301.01\\\\122.4609\\\\232.0753\\\\301.01\\\\120.1172\\\\232.6027\\\\301.01\\\\113.0859\\\\232.5873\\\\301.01\\\\110.7422\\\\231.8582\\\\301.01\\\\106.0547\\\\231.5762\\\\301.01\\\\103.7109\\\\231.6158\\\\301.01\\\\102.652\\\\232.3734\\\\301.01\\\\101.3672\\\\233.0044\\\\301.01\\\\99.02344\\\\233.091\\\\301.01\\\\89.64844\\\\233.0819\\\\301.01\\\\84.96094\\\\233.1132\\\\301.01\\\\66.21094\\\\233.1132\\\\301.01\\\\61.52344\\\\233.131\\\\301.01\\\\47.46094\\\\233.1132\\\\301.01\\\\45.11719\\\\233.0671\\\\301.01\\\\44.1887\\\\232.3734\\\\301.01\\\\42.77344\\\\231.0305\\\\301.01\\\\42.03629\\\\230.0297\\\\301.01\\\\42.77344\\\\229.2325\\\\301.01\\\\45.11719\\\\228.5376\\\\301.01\\\\47.46094\\\\227.0364\\\\301.01\\\\49.80469\\\\226.0128\\\\301.01\\\\52.14844\\\\224.5587\\\\301.01\\\\54.49219\\\\223.6608\\\\301.01\\\\56.83594\\\\221.833\\\\301.01\\\\59.17969\\\\220.1609\\\\301.01\\\\61.52344\\\\218.8188\\\\301.01\\\\64.90625\\\\215.9672\\\\301.01\\\\66.21094\\\\214.9687\\\\301.01\\\\67.67578\\\\213.6234\\\\301.01\\\\68.55469\\\\212.6704\\\\301.01\\\\70.89844\\\\210.4727\\\\301.01\\\\74.47953\\\\206.5922\\\\301.01\\\\76.50275\\\\204.2484\\\\301.01\\\\78.21651\\\\201.9047\\\\301.01\\\\80.27344\\\\198.8597\\\\301.01\\\\82.61719\\\\195.1853\\\\301.01\\\\82.89342\\\\194.8734\\\\301.01\\\\84.96094\\\\190.8408\\\\301.01\\\\85.38912\\\\190.1859\\\\301.01\\\\86.29591\\\\187.8422\\\\301.01\\\\87.73726\\\\185.4984\\\\301.01\\\\88.56714\\\\183.1547\\\\301.01\\\\89.0239\\\\180.8109\\\\301.01\\\\90.08218\\\\178.4672\\\\301.01\\\\90.826\\\\176.1234\\\\301.01\\\\91.33673\\\\173.7797\\\\301.01\\\\92.27242\\\\171.4359\\\\301.01\\\\92.92352\\\\169.0922\\\\301.01\\\\93.52101\\\\159.7172\\\\301.01\\\\93.68569\\\\155.0297\\\\301.01\\\\93.66122\\\\150.3422\\\\301.01\\\\93.03977\\\\140.9672\\\\301.01\\\\92.73054\\\\138.6234\\\\301.01\\\\91.17617\\\\133.9359\\\\301.01\\\\90.61806\\\\131.5922\\\\301.01\\\\89.82677\\\\129.2484\\\\301.01\\\\88.83517\\\\126.9047\\\\301.01\\\\88.39883\\\\124.5609\\\\301.01\\\\87.14217\\\\122.2172\\\\301.01\\\\83.83617\\\\115.1859\\\\301.01\\\\82.61719\\\\113.3482\\\\301.01\\\\82.16586\\\\112.8422\\\\301.01\\\\81.0612\\\\110.4984\\\\301.01\\\\77.92969\\\\106.4629\\\\301.01\\\\77.33624\\\\105.8109\\\\301.01\\\\75.88316\\\\103.4672\\\\301.01\\\\71.66676\\\\98.77969\\\\301.01\\\\68.55469\\\\95.70351\\\\301.01\\\\63.86719\\\\91.59751\\\\301.01\\\\61.52344\\\\90.16005\\\\301.01\\\\59.17969\\\\88.18321\\\\301.01\\\\56.83594\\\\86.57265\\\\301.01\\\\54.49219\\\\85.45554\\\\301.01\\\\52.14844\\\\83.67484\\\\301.01\\\\49.80469\\\\82.92365\\\\301.01\\\\47.46094\\\\81.52637\\\\301.01\\\\45.11719\\\\80.65604\\\\301.01\\\\42.77344\\\\79.19824\\\\301.01\\\\40.42969\\\\78.73884\\\\301.01\\\\38.08594\\\\78.15919\\\\301.01\\\\35.74219\\\\77.15002\\\\301.01\\\\33.39844\\\\76.53034\\\\301.01\\\\31.05469\\\\76.09643\\\\301.01\\\\26.36719\\\\74.69731\\\\301.01\\\\24.02344\\\\74.428\\\\301.01\\\\16.99219\\\\74.14042\\\\301.01\\\\12.30469\\\\74.06655\\\\301.01\\\\7.617188\\\\74.18246\\\\301.01\\\\2.929688\\\\74.39614\\\\301.01\\\\0.5859375\\\\74.67952\\\\301.01\\\\-4.101563\\\\76.04402\\\\301.01\\\\-6.445313\\\\76.46788\\\\301.01\\\\-8.789063\\\\77.11446\\\\301.01\\\\-11.13281\\\\78.1283\\\\301.01\\\\-15.82031\\\\79.30067\\\\301.01\\\\-18.16406\\\\80.75135\\\\301.01\\\\-20.50781\\\\81.63853\\\\301.01\\\\-22.85156\\\\82.99707\\\\301.01\\\\-25.19531\\\\83.76582\\\\301.01\\\\-27.53906\\\\85.60597\\\\301.01\\\\-29.88281\\\\86.70937\\\\301.01\\\\-32.22656\\\\88.32835\\\\301.01\\\\-34.57031\\\\90.28696\\\\301.01\\\\-36.60469\\\\91.74844\\\\301.01\\\\-41.60156\\\\95.87829\\\\301.01\\\\-46.64644\\\\101.1234\\\\301.01\\\\-50.23326\\\\105.8109\\\\301.01\\\\-52.14844\\\\108.1547\\\\301.01\\\\-53.7083\\\\110.4984\\\\301.01\\\\-54.99341\\\\112.8422\\\\301.01\\\\-56.69257\\\\115.1859\\\\301.01\\\\-57.50126\\\\117.5297\\\\301.01\\\\-58.9611\\\\119.8734\\\\301.01\\\\-59.86389\\\\122.2172\\\\301.01\\\\-61.15642\\\\124.5609\\\\301.01\\\\-61.63161\\\\126.9047\\\\301.01\\\\-62.48454\\\\129.2484\\\\301.01\\\\-63.52435\\\\131.5922\\\\301.01\\\\-64.05602\\\\133.9359\\\\301.01\\\\-64.42265\\\\136.2797\\\\301.01\\\\-65.18555\\\\138.6234\\\\301.01\\\\-65.68493\\\\140.9672\\\\301.01\\\\-66.26755\\\\147.9984\\\\301.01\\\\-66.50095\\\\152.6859\\\\301.01\\\\-66.53545\\\\155.0297\\\\301.01\\\\-66.39441\\\\159.7172\\\\301.01\\\\-66.05307\\\\164.4047\\\\301.01\\\\-65.51514\\\\169.0922\\\\301.01\\\\-64.74208\\\\171.4359\\\\301.01\\\\-64.20454\\\\173.7797\\\\301.01\\\\-63.7793\\\\176.1234\\\\301.01\\\\-62.91559\\\\178.4672\\\\301.01\\\\-61.86849\\\\180.8109\\\\301.01\\\\-61.33743\\\\183.1547\\\\301.01\\\\-60.35156\\\\185.6212\\\\301.01\\\\-57.99851\\\\190.1859\\\\301.01\\\\-56.86614\\\\192.5297\\\\301.01\\\\-55.66406\\\\194.816\\\\301.01\\\\-54.17318\\\\197.2172\\\\301.01\\\\-52.51101\\\\199.5609\\\\301.01\\\\-50.98609\\\\201.9047\\\\301.01\\\\-47.40362\\\\206.5922\\\\301.01\\\\-45.07058\\\\208.9359\\\\301.01\\\\-42.88062\\\\211.2797\\\\301.01\\\\-39.25781\\\\214.7825\\\\301.01\\\\-34.57031\\\\218.5488\\\\301.01\\\\-32.22656\\\\219.9976\\\\301.01\\\\-28.02734\\\\222.9984\\\\301.01\\\\-27.53906\\\\223.4429\\\\301.01\\\\-25.19531\\\\224.4472\\\\301.01\\\\-22.85156\\\\225.8554\\\\301.01\\\\-20.50781\\\\226.9317\\\\301.01\\\\-18.16406\\\\228.4426\\\\301.01\\\\-15.82031\\\\229.1456\\\\301.01\\\\-14.96138\\\\230.0297\\\\301.01\\\\-15.82031\\\\231.3675\\\\301.01\\\\-16.95703\\\\232.3734\\\\301.01\\\\-18.16406\\\\233.0671\\\\301.01\\\\-20.50781\\\\233.0537\\\\301.01\\\\-27.53906\\\\233.1221\\\\301.01\\\\-29.88281\\\\233.1042\\\\301.01\\\\-39.25781\\\\233.1397\\\\301.01\\\\-46.28906\\\\233.1221\\\\301.01\\\\-48.63281\\\\233.1652\\\\301.01\\\\-60.35156\\\\233.1818\\\\301.01\\\\-62.69531\\\\233.1483\\\\301.01\\\\-65.03906\\\\232.8735\\\\301.01\\\\-67.38281\\\\232.8735\\\\301.01\\\\-69.72656\\\\232.9839\\\\301.01\\\\-79.10156\\\\232.9942\\\\301.01\\\\-83.78906\\\\233.0537\\\\301.01\\\\-86.13281\\\\233.0283\\\\301.01\\\\-107.2266\\\\233.1132\\\\301.01\\\\-109.5703\\\\233.6324\\\\301.01\\\\-111.9141\\\\233.2523\\\\301.01\\\\-114.2578\\\\233.855\\\\301.01\\\\-118.9453\\\\233.9675\\\\301.01\\\\-123.6328\\\\234.0359\\\\301.01\\\\-128.3203\\\\234.054\\\\301.01\\\\-130.6641\\\\233.9859\\\\301.01\\\\-133.0078\\\\234.0284\\\\301.01\\\\-137.6953\\\\234.0158\\\\301.01\\\\-142.3828\\\\234.0805\\\\301.01\\\\-149.4141\\\\234.0088\\\\301.01\\\\-154.1016\\\\234.054\\\\301.01\\\\-165.8203\\\\233.9784\\\\301.01\\\\-168.1641\\\\234.1138\\\\301.01\\\\-172.8516\\\\234.1797\\\\301.01\\\\-179.8828\\\\234.1797\\\\301.01\\\\-184.5703\\\\234.2539\\\\301.01\\\\-198.6328\\\\234.1652\\\\301.01\\\\-200.9766\\\\234.2187\\\\301.01\\\\-205.6641\\\\234.1147\\\\301.01\\\\-208.0078\\\\234.1692\\\\301.01\\\\-217.3828\\\\234.2088\\\\301.01\\\\-222.0703\\\\234.2967\\\\301.01\\\\-224.4141\\\\234.2088\\\\301.01\\\\-229.1016\\\\234.2088\\\\301.01\\\\-238.4766\\\\234.0063\\\\301.01\\\\-243.1641\\\\233.9589\\\\301.01\\\\-245.5078\\\\233.8656\\\\301.01\\\\-247.8516\\\\233.8749\\\\301.01\\\\-250.1953\\\\233.9791\\\\301.01\\\\-252.5391\\\\234.4847\\\\301.01\\\\-254.8828\\\\236.4281\\\\301.01\\\\-255.4874\\\\237.0609\\\\301.01\\\\-256.2803\\\\239.4047\\\\301.01\\\\-255.8475\\\\241.7484\\\\301.01\\\\-255.5735\\\\244.0922\\\\301.01\\\\-255.6104\\\\246.4359\\\\301.01\\\\-255.4959\\\\248.7797\\\\301.01\\\\-254.8828\\\\250.669\\\\301.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848890601900001.533619501923\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"361\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"10\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n";
-const char* k_rtStruct_json03 =
-"                        \"Value\" : \"-258.4268\\\\239.4047\\\\304.01\\\\-257.2636\\\\244.0922\\\\304.01\\\\-257.1989\\\\246.4359\\\\304.01\\\\-256.6301\\\\248.7797\\\\304.01\\\\-256.215\\\\251.1234\\\\304.01\\\\-254.8828\\\\253.3128\\\\304.01\\\\-253.1956\\\\255.8109\\\\304.01\\\\-252.5391\\\\256.5626\\\\304.01\\\\-250.1953\\\\258.8727\\\\304.01\\\\-247.8516\\\\261.3969\\\\304.01\\\\-245.5078\\\\263.5693\\\\304.01\\\\-244.0789\\\\265.1859\\\\304.01\\\\-241.5988\\\\267.5297\\\\304.01\\\\-239.4249\\\\269.8734\\\\304.01\\\\-233.7891\\\\275.3867\\\\304.01\\\\-231.4453\\\\277.8311\\\\304.01\\\\-229.1016\\\\280.0036\\\\304.01\\\\-226.7578\\\\282.5281\\\\304.01\\\\-224.4141\\\\284.6849\\\\304.01\\\\-222.0703\\\\287.2221\\\\304.01\\\\-220.5406\\\\288.6234\\\\304.01\\\\-218.2914\\\\290.9672\\\\304.01\\\\-217.3828\\\\291.6599\\\\304.01\\\\-214.8704\\\\293.3109\\\\304.01\\\\-212.6953\\\\294.634\\\\304.01\\\\-210.3516\\\\295.3279\\\\304.01\\\\-208.0078\\\\296.4424\\\\304.01\\\\-205.6641\\\\296.8732\\\\304.01\\\\-203.3203\\\\297.1639\\\\304.01\\\\-196.2891\\\\297.1639\\\\304.01\\\\-189.2578\\\\297.0197\\\\304.01\\\\-184.5703\\\\297.0141\\\\304.01\\\\-177.5391\\\\296.8785\\\\304.01\\\\-161.1328\\\\296.851\\\\304.01\\\\-149.4141\\\\296.8598\\\\304.01\\\\-128.3203\\\\296.895\\\\304.01\\\\-118.9453\\\\296.8887\\\\304.01\\\\-114.2578\\\\296.8266\\\\304.01\\\\-107.2266\\\\296.817\\\\304.01\\\\-104.8828\\\\296.8459\\\\304.01\\\\-97.85156\\\\296.8456\\\\304.01\\\\-93.16406\\\\296.9116\\\\304.01\\\\-90.82031\\\\296.8828\\\\304.01\\\\-81.44531\\\\296.9305\\\\304.01\\\\-79.10156\\\\296.9116\\\\304.01\\\\-72.07031\\\\296.979\\\\304.01\\\\-69.72656\\\\296.96\\\\304.01\\\\-58.00781\\\\296.9557\\\\304.01\\\\-53.32031\\\\297.4055\\\\304.01\\\\-50.97656\\\\297.1979\\\\304.01\\\\-48.63281\\\\297.1858\\\\304.01\\\\-46.28906\\\\297.4229\\\\304.01\\\\-41.60156\\\\297.3806\\\\304.01\\\\-39.25781\\\\297.0362\\\\304.01\\\\-36.91406\\\\297.4125\\\\304.01\\\\-34.57031\\\\297.4229\\\\304.01\\\\-32.22656\\\\297.1747\\\\304.01\\\\-29.88281\\\\297.4334\\\\304.01\\\\-25.19531\\\\297.4125\\\\304.01\\\\-18.16406\\\\297.4334\\\\304.01\\\\-8.789063\\\\297.4195\\\\304.01\\\\-6.445313\\\\297.3383\\\\304.01\\\\-4.101563\\\\297.4125\\\\304.01\\\\0.5859375\\\\297.4195\\\\304.01\\\\2.929688\\\\297.0439\\\\304.01\\\\5.273438\\\\297.273\\\\304.01\\\\7.617188\\\\296.9841\\\\304.01\\\\12.30469\\\\296.8673\\\\304.01\\\\26.36719\\\\296.8574\\\\304.01\\\\35.74219\\\\296.8163\\\\304.01\\\\38.08594\\\\296.7654\\\\304.01\\\\45.11719\\\\296.7761\\\\304.01\\\\52.14844\\\\296.6929\\\\304.01\\\\54.49219\\\\296.7115\\\\304.01\\\\61.52344\\\\296.6724\\\\304.01\\\\63.86719\\\\296.6241\\\\304.01\\\\91.99219\\\\296.4947\\\\304.01\\\\94.33594\\\\296.5412\\\\304.01\\\\103.7109\\\\296.466\\\\304.01\\\\106.0547\\\\296.4801\\\\304.01\\\\115.4297\\\\296.391\\\\304.01\\\\117.7734\\\\296.4051\\\\304.01\\\\124.8047\\\\296.3288\\\\304.01\\\\131.8359\\\\296.2987\\\\304.01\\\\134.1797\\\\295.9161\\\\304.01\\\\136.5234\\\\295.8172\\\\304.01\\\\143.5547\\\\295.8791\\\\304.01\\\\148.2422\\\\295.8791\\\\304.01\\\\155.2734\\\\295.7849\\\\304.01\\\\159.9609\\\\295.7684\\\\304.01\\\\169.3359\\\\295.6454\\\\304.01\\\\171.6797\\\\295.6819\\\\304.01\\\\178.7109\\\\295.6454\\\\304.01\\\\181.0547\\\\295.5742\\\\304.01\\\\185.7422\\\\295.5916\\\\304.01\\\\192.7734\\\\295.557\\\\304.01\\\\197.4609\\\\295.8172\\\\304.01\\\\202.1484\\\\295.6819\\\\304.01\\\\204.4922\\\\295.3842\\\\304.01\\\\206.8359\\\\294.8185\\\\304.01\\\\209.1797\\\\294.3828\\\\304.01\\\\211.5234\\\\292.4841\\\\304.01\\\\213.8672\\\\291.1765\\\\304.01\\\\216.2109\\\\289.5873\\\\304.01\\\\217.229\\\\288.6234\\\\304.01\\\\218.5547\\\\287.0752\\\\304.01\\\\221.7204\\\\283.9359\\\\304.01\\\\225.5859\\\\279.9071\\\\304.01\\\\227.9297\\\\277.5303\\\\304.01\\\\230.2734\\\\275.0172\\\\304.01\\\\233.1467\\\\272.2172\\\\304.01\\\\234.9609\\\\270.242\\\\304.01\\\\237.7046\\\\267.5297\\\\304.01\\\\239.6484\\\\265.4887\\\\304.01\\\\244.3359\\\\260.7987\\\\304.01\\\\249.0234\\\\255.6807\\\\304.01\\\\251.3672\\\\252.8391\\\\304.01\\\\252.5586\\\\251.1234\\\\304.01\\\\254.0274\\\\248.7797\\\\304.01\\\\254.9669\\\\246.4359\\\\304.01\\\\255.696\\\\241.7484\\\\304.01\\\\255.9729\\\\239.4047\\\\304.01\\\\255.8408\\\\237.0609\\\\304.01\\\\254.6498\\\\234.7172\\\\304.01\\\\253.7109\\\\233.7838\\\\304.01\\\\251.3672\\\\232.8072\\\\304.01\\\\249.0234\\\\232.5688\\\\304.01\\\\246.6797\\\\232.4189\\\\304.01\\\\244.3359\\\\232.4365\\\\304.01\\\\241.9922\\\\232.8195\\\\304.01\\\\239.6484\\\\232.9699\\\\304.01\\\\234.9609\\\\232.9906\\\\304.01\\\\230.2734\\\\232.9594\\\\304.01\\\\225.5859\\\\233.0305\\\\304.01\\\\211.5234\\\\233.0632\\\\304.01\\\\206.8359\\\\232.9906\\\\304.01\\\\204.4922\\\\232.7048\\\\304.01\\\\199.8047\\\\232.6908\\\\304.01\\\\195.1172\\\\232.7456\\\\304.01\\\\190.4297\\\\232.7186\\\\304.01\\\\183.3984\\\\232.7588\\\\304.01\\\\174.0234\\\\232.7322\\\\304.01\\\\164.6484\\\\232.7322\\\\304.01\\\\157.6172\\\\232.7848\\\\304.01\\\\143.5547\\\\232.7746\\\\304.01\\\\138.8672\\\\232.6477\\\\304.01\\\\131.8359\\\\232.6623\\\\304.01\\\\127.1484\\\\232.6179\\\\304.01\\\\124.8047\\\\232.2817\\\\304.01\\\\122.4609\\\\231.7518\\\\304.01\\\\120.1172\\\\232.5557\\\\304.01\\\\113.0859\\\\232.5396\\\\304.01\\\\110.7422\\\\232.0028\\\\304.01\\\\108.3984\\\\231.6882\\\\304.01\\\\106.0547\\\\231.5762\\\\304.01\\\\103.7109\\\\231.6396\\\\304.01\\\\102.8085\\\\232.3734\\\\304.01\\\\101.3672\\\\233.0819\\\\304.01\\\\99.02344\\\\233.1221\\\\304.01\\\\91.99219\\\\233.091\\\\304.01\\\\84.96094\\\\233.131\\\\304.01\\\\80.27344\\\\233.1132\\\\304.01\\\\70.89844\\\\233.1483\\\\304.01\\\\59.17969\\\\233.1221\\\\304.01\\\\54.49219\\\\233.1483\\\\304.01\\\\47.46094\\\\233.1397\\\\304.01\\\\45.11719\\\\233.0951\\\\304.01\\\\44.15678\\\\232.3734\\\\304.01\\\\42.77344\\\\231.0402\\\\304.01\\\\42.0277\\\\230.0297\\\\304.01\\\\42.77344\\\\229.2236\\\\304.01\\\\45.11719\\\\228.5376\\\\304.01\\\\47.46094\\\\227.0172\\\\304.01\\\\49.80469\\\\226.0045\\\\304.01\\\\52.14844\\\\224.5497\\\\304.01\\\\54.49219\\\\223.6396\\\\304.01\\\\56.83594\\\\221.8073\\\\304.01\\\\59.17969\\\\220.1493\\\\304.01\\\\61.52344\\\\218.7845\\\\304.01\\\\64.88177\\\\215.9672\\\\304.01\\\\66.21094\\\\214.941\\\\304.01\\\\68.55469\\\\212.6457\\\\304.01\\\\70.89844\\\\210.4545\\\\304.01\\\\74.44025\\\\206.5922\\\\304.01\\\\76.45425\\\\204.2484\\\\304.01\\\\78.18552\\\\201.9047\\\\304.01\\\\80.27344\\\\198.8021\\\\304.01\\\\82.61719\\\\195.0944\\\\304.01\\\\82.81684\\\\194.8734\\\\304.01\\\\85.33871\\\\190.1859\\\\304.01\\\\86.25837\\\\187.8422\\\\304.01\\\\87.69531\\\\185.4984\\\\304.01\\\\88.53373\\\\183.1547\\\\304.01\\\\88.98369\\\\180.8109\\\\304.01\\\\90.01319\\\\178.4672\\\\304.01\\\\90.75238\\\\176.1234\\\\304.01\\\\91.26373\\\\173.7797\\\\304.01\\\\92.16087\\\\171.4359\\\\304.01\\\\92.84856\\\\169.0922\\\\304.01\\\\93.08162\\\\166.7484\\\\304.01\\\\93.46188\\\\159.7172\\\\304.01\\\\93.63705\\\\157.3734\\\\304.01\\\\93.71725\\\\155.0297\\\\304.01\\\\94.1173\\\\152.6859\\\\304.01\\\\95.2567\\\\150.3422\\\\304.01\\\\94.33594\\\\149.3719\\\\304.01\\\\93.55707\\\\147.9984\\\\304.01\\\\93.31775\\\\145.6547\\\\304.01\\\\93.0161\\\\140.9672\\\\304.01\\\\92.68435\\\\138.6234\\\\304.01\\\\91.79828\\\\136.2797\\\\304.01\\\\91.12964\\\\133.9359\\\\304.01\\\\90.57047\\\\131.5922\\\\304.01\\\\89.74536\\\\129.2484\\\\304.01\\\\88.82685\\\\126.9047\\\\304.01\\\\88.37492\\\\124.5609\\\\304.01\\\\87.09542\\\\122.2172\\\\304.01\\\\83.81286\\\\115.1859\\\\304.01\\\\82.08039\\\\112.8422\\\\304.01\\\\81.03055\\\\110.4984\\\\304.01\\\\77.92969\\\\106.5352\\\\304.01\\\\77.27783\\\\105.8109\\\\304.01\\\\75.79013\\\\103.4672\\\\304.01\\\\71.63571\\\\98.77969\\\\304.01\\\\68.55469\\\\95.73435\\\\304.01\\\\63.86719\\\\91.66604\\\\304.01\\\\61.52344\\\\90.20212\\\\304.01\\\\59.17969\\\\88.20197\\\\304.01\\\\56.83594\\\\86.62436\\\\304.01\\\\54.49219\\\\85.48727\\\\304.01\\\\52.14844\\\\83.70115\\\\304.01\\\\49.80469\\\\82.94526\\\\304.01\\\\47.46094\\\\81.53912\\\\304.01\\\\45.11719\\\\80.67555\\\\304.01\\\\42.77344\\\\79.20674\\\\304.01\\\\38.08594\\\\78.20923\\\\304.01\\\\35.74219\\\\77.17549\\\\304.01\\\\33.39844\\\\76.53049\\\\304.01\\\\31.05469\\\\76.11316\\\\304.01\\\\26.36719\\\\74.72801\\\\304.01\\\\24.02344\\\\74.428\\\\304.01\\\\16.99219\\\\74.14042\\\\304.01\\\\12.30469\\\\74.08618\\\\304.01\\\\7.617188\\\\74.18843\\\\304.01\\\\2.929688\\\\74.3889\\\\304.01\\\\0.5859375\\\\74.66957\\\\304.01\\\\-4.101563\\\\76.00713\\\\304.01\\\\-6.445313\\\\76.45148\\\\304.01\\\\-8.789063\\\\77.1\\\\304.01\\\\-11.13281\\\\78.06062\\\\304.01\\\\-15.82031\\\\79.2827\\\\304.01\\\\-18.16406\\\\80.74213\\\\304.01\\\\-20.50781\\\\81.62949\\\\304.01\\\\-22.85156\\\\82.96635\\\\304.01\\\\-25.19531\\\\83.75838\\\\304.01\\\\-27.53906\\\\85.57612\\\\304.01\\\\-29.88281\\\\86.67031\\\\304.01\\\\-32.22656\\\\88.3215\\\\304.01\\\\-34.57031\\\\90.27851\\\\304.01\\\\-36.65471\\\\91.74844\\\\304.01\\\\-39.25781\\\\93.84944\\\\304.01\\\\-41.60156\\\\95.82625\\\\304.01\\\\-46.73052\\\\101.1234\\\\304.01\\\\-50.25593\\\\105.8109\\\\304.01\\\\-52.17377\\\\108.1547\\\\304.01\\\\-53.74715\\\\110.4984\\\\304.01\\\\-55.05993\\\\112.8422\\\\304.01\\\\-56.70641\\\\115.1859\\\\304.01\\\\-57.55294\\\\117.5297\\\\304.01\\\\-59.00451\\\\119.8734\\\\304.01\\\\-59.93574\\\\122.2172\\\\304.01\\\\-61.16483\\\\124.5609\\\\304.01\\\\-61.67763\\\\126.9047\\\\304.01\\\\-62.54883\\\\129.2484\\\\304.01\\\\-63.58032\\\\131.5922\\\\304.01\\\\-64.08025\\\\133.9359\\\\304.01\\\\-64.47405\\\\136.2797\\\\304.01\\\\-65.29311\\\\138.6234\\\\304.01\\\\-65.704\\\\140.9672\\\\304.01\\\\-66.11191\\\\145.6547\\\\304.01\\\\-66.44185\\\\150.3422\\\\304.01\\\\-66.55173\\\\155.0297\\\\304.01\\\\-66.54406\\\\157.3734\\\\304.01\\\\-66.41875\\\\159.7172\\\\304.01\\\\-66.08267\\\\164.4047\\\\304.01\\\\-65.54951\\\\169.0922\\\\304.01\\\\-64.81466\\\\171.4359\\\\304.01\\\\-64.22777\\\\173.7797\\\\304.01\\\\-63.82658\\\\176.1234\\\\304.01\\\\-63.00951\\\\178.4672\\\\304.01\\\\-61.88151\\\\180.8109\\\\304.01\\\\-61.35514\\\\183.1547\\\\304.01\\\\-60.35156\\\\185.6658\\\\304.01\\\\-58.00781\\\\190.247\\\\304.01\\\\-55.71056\\\\194.8734\\\\304.01\\\\-54.20731\\\\197.2172\\\\304.01\\\\-52.52815\\\\199.5609\\\\304.01\\\\-51.09558\\\\201.9047\\\\304.01\\\\-48.63281\\\\204.9516\\\\304.01\\\\-47.4356\\\\206.5922\\\\304.01\\\\-45.0904\\\\208.9359\\\\304.01\\\\-42.90285\\\\211.2797\\\\304.01\\\\-39.25781\\\\214.8017\\\\304.01\\\\-34.92887\\\\218.3109\\\\304.01\\\\-34.57031\\\\218.6566\\\\304.01\\\\-32.22656\\\\220.0173\\\\304.01\\\\-31.40713\\\\220.6547\\\\304.01\\\\-28.07253\\\\222.9984\\\\304.01\\\\-27.53906\\\\223.4814\\\\304.01\\\\-25.19531\\\\224.4633\\\\304.01\\\\-22.85156\\\\225.8906\\\\304.01\\\\-20.50781\\\\226.9488\\\\304.01\\\\-18.16406\\\\228.4606\\\\304.01\\\\-15.82031\\\\229.1542\\\\304.01\\\\-14.96987\\\\230.0297\\\\304.01\\\\-15.82031\\\\231.3705\\\\304.01\\\\-16.94484\\\\232.3734\\\\304.01\\\\-18.16406\\\\233.0671\\\\304.01\\\\-25.19531\\\\233.091\\\\304.01\\\\-27.53906\\\\233.131\\\\304.01\\\\-43.94531\\\\233.1397\\\\304.01\\\\-46.28906\\\\233.1221\\\\304.01\\\\-55.66406\\\\233.19\\\\304.01\\\\-62.69531\\\\233.1652\\\\304.01\\\\-65.03906\\\\232.8767\\\\304.01\\\\-67.38281\\\\232.8735\\\\304.01\\\\-72.07031\\\\233.0044\\\\304.01\\\\-79.10156\\\\232.9735\\\\304.01\\\\-83.78906\\\\233.0441\\\\304.01\\\\-102.5391\\\\233.0951\\\\304.01\\\\-104.8828\\\\233.1525\\\\304.01\\\\-107.2266\\\\233.3238\\\\304.01\\\\-109.5703\\\\234.0489\\\\304.01\\\\-116.6016\\\\233.9967\\\\304.01\\\\-123.6328\\\\234.0805\\\\304.01\\\\-128.3203\\\\234.0855\\\\304.01\\\\-130.6641\\\\234.0088\\\\304.01\\\\-135.3516\\\\234.0722\\\\304.01\\\\-137.6953\\\\234.0591\\\\304.01\\\\-142.3828\\\\234.1266\\\\304.01\\\\-149.4141\\\\234.0722\\\\304.01\\\\-158.7891\\\\234.0772\\\\304.01\\\\-165.8203\\\\233.9901\\\\304.01\\\\-168.1641\\\\234.1182\\\\304.01\\\\-172.8516\\\\234.1837\\\\304.01\\\\-177.5391\\\\234.1837\\\\304.01\\\\-184.5703\\\\234.2574\\\\304.01\\\\-193.9453\\\\234.1916\\\\304.01\\\\-200.9766\\\\234.2224\\\\304.01\\\\-205.6641\\\\234.1652\\\\304.01\\\\-212.6953\\\\234.2362\\\\304.01\\\\-217.3828\\\\234.2502\\\\304.01\\\\-222.0703\\\\234.3418\\\\304.01\\\\-233.7891\\\\234.1026\\\\304.01\\\\-238.4766\\\\234.0555\\\\304.01\\\\-243.1641\\\\234.0626\\\\304.01\\\\-245.5078\\\\233.9906\\\\304.01\\\\-247.8516\\\\234.0236\\\\304.01\\\\-252.5391\\\\234.2887\\\\304.01\\\\-254.8828\\\\235.3755\\\\304.01\\\\-256.6911\\\\237.0609\\\\304.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848911603100001.549938975401\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"361\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"11\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-18.16406\\\\233.0859\\\\307.01\\\\-27.53906\\\\233.1221\\\\307.01\\\\-46.28906\\\\233.131\\\\307.01\\\\-58.00781\\\\233.19\\\\307.01\\\\-62.69531\\\\233.1736\\\\307.01\\\\-65.03906\\\\232.5396\\\\307.01\\\\-67.38281\\\\232.8735\\\\307.01\\\\-72.07031\\\\233.0145\\\\307.01\\\\-79.10156\\\\232.9839\\\\307.01\\\\-83.78906\\\\233.0441\\\\307.01\\\\-95.50781\\\\233.0859\\\\307.01\\\\-97.85156\\\\233.1345\\\\307.01\\\\-100.1953\\\\233.09\\\\307.01\\\\-102.5391\\\\233.2952\\\\307.01\\\\-104.8828\\\\234.0051\\\\307.01\\\\-107.2266\\\\233.8864\\\\307.01\\\\-109.5703\\\\234.0891\\\\307.01\\\\-116.6016\\\\233.9967\\\\307.01\\\\-123.6328\\\\234.0941\\\\307.01\\\\-128.3203\\\\234.1127\\\\307.01\\\\-130.6641\\\\234.0463\\\\307.01\\\\-133.0078\\\\234.099\\\\307.01\\\\-140.0391\\\\234.099\\\\307.01\\\\-142.3828\\\\234.1453\\\\307.01\\\\-149.4141\\\\234.099\\\\307.01\\\\-151.7578\\\\234.1313\\\\307.01\\\\-165.8203\\\\233.9901\\\\307.01\\\\-168.1641\\\\234.1182\\\\307.01\\\\-172.8516\\\\234.1973\\\\307.01\\\\-175.1953\\\\234.1934\\\\307.01\\\\-186.9141\\\\234.302\\\\307.01\\\\-189.2578\\\\234.2431\\\\307.01\\\\-191.6016\\\\234.2721\\\\307.01\\\\-198.6328\\\\234.2187\\\\307.01\\\\-200.9766\\\\234.2326\\\\307.01\\\\-205.6641\\\\234.1523\\\\307.01\\\\-208.0078\\\\234.2088\\\\307.01\\\\-217.3828\\\\234.2644\\\\307.01\\\\-222.0703\\\\234.3731\\\\307.01\\\\-226.7578\\\\234.3084\\\\307.01\\\\-233.7891\\\\234.1271\\\\307.01\\\\-243.1641\\\\234.1783\\\\307.01\\\\-247.8516\\\\233.9385\\\\307.01\\\\-252.5391\\\\234.1396\\\\307.01\\\\-254.8828\\\\234.6465\\\\307.01\\\\-257.2266\\\\235.5375\\\\307.01\\\\-259.5389\\\\237.0609\\\\307.01\\\\-261.1549\\\\239.4047\\\\307.01\\\\-261.1453\\\\241.7484\\\\307.01\\\\-260.4097\\\\244.0922\\\\307.01\\\\-258.4325\\\\248.7797\\\\307.01\\\\-257.2266\\\\250.7551\\\\307.01\\\\-255.4608\\\\253.4672\\\\307.01\\\\-252.5391\\\\256.6329\\\\307.01\\\\-250.1953\\\\258.8892\\\\307.01\\\\-247.8516\\\\261.4029\\\\307.01\\\\-245.5078\\\\263.58\\\\307.01\\\\-244.0815\\\\265.1859\\\\307.01\\\\-241.6044\\\\267.5297\\\\307.01\\\\-239.4249\\\\269.8734\\\\307.01\\\\-236.9699\\\\272.2172\\\\307.01\\\\-233.7891\\\\275.3877\\\\307.01\\\\-231.4453\\\\277.8249\\\\307.01\\\\-229.1016\\\\280.0036\\\\307.01\\\\-226.7578\\\\282.5186\\\\307.01\\\\-225.1687\\\\283.9359\\\\307.01\\\\-222.0703\\\\287.2188\\\\307.01\\\\-220.5469\\\\288.6234\\\\307.01\\\\-218.3018\\\\290.9672\\\\307.01\\\\-217.3828\\\\291.669\\\\307.01\\\\-212.6953\\\\294.6293\\\\307.01\\\\-210.3516\\\\295.3142\\\\307.01\\\\-208.0078\\\\296.4338\\\\307.01\\\\-205.6641\\\\296.8865\\\\307.01\\\\-203.3203\\\\297.1639\\\\307.01\\\\-196.2891\\\\297.1639\\\\307.01\\\\-191.6016\\\\297.0361\\\\307.01\\\\-186.9141\\\\297.0219\\\\307.01\\\\-179.8828\\\\296.9526\\\\307.01\\\\-175.1953\\\\296.8713\\\\307.01\\\\-161.1328\\\\296.8585\\\\307.01\\\\-158.7891\\\\296.8764\\\\307.01\\\\-149.4141\\\\296.8598\\\\307.01\\\\-147.0703\\\\296.8931\\\\307.01\\\\-140.0391\\\\296.8779\\\\307.01\\\\-128.3203\\\\296.9292\\\\307.01\\\\-118.9453\\\\296.9053\\\\307.01\\\\-114.2578\\\\296.845\\\\307.01\\\\-97.85156\\\\296.8459\\\\307.01\\\\-90.82031\\\\296.9116\\\\307.01\\\\-79.10156\\\\296.9116\\\\307.01\\\\-72.07031\\\\296.979\\\\307.01\\\\-69.72656\\\\296.9409\\\\307.01\\\\-65.03906\\\\296.9644\\\\307.01\\\\-58.00781\\\\296.9377\\\\307.01\\\\-55.66406\\\\297.3491\\\\307.01\\\\-53.32031\\\\297.1261\\\\307.01\\\\-50.97656\\\\297.3612\\\\307.01\\\\-48.63281\\\\296.9285\\\\307.01\\\\-46.28906\\\\297.4229\\\\307.01\\\\-41.60156\\\\297.416\\\\307.01\\\\-39.25781\\\\297.3425\\\\307.01\\\\-34.57031\\\\297.4229\\\\307.01\\\\-29.88281\\\\297.2875\\\\307.01\\\\-27.53906\\\\297.3947\\\\307.01\\\\-22.85156\\\\297.3077\\\\307.01\\\\-20.50781\\\\297.4125\\\\307.01\\\\-15.82031\\\\297.3768\\\\307.01\\\\-13.47656\\\\297.4125\\\\307.01\\\\-11.13281\\\\297.2579\\\\307.01\\\\-8.789063\\\\297.4229\\\\307.01\\\\-4.101563\\\\297.4055\\\\307.01\\\\0.5859375\\\\297.3148\\\\307.01\\\\2.929688\\\\296.9267\\\\307.01\\\\5.273438\\\\297.2621\\\\307.01\\\\7.617188\\\\297.257\\\\307.01\\\\9.960938\\\\296.9447\\\\307.01\\\\12.30469\\\\296.868\\\\307.01\\\\24.02344\\\\296.8266\\\\307.01\\\\26.36719\\\\296.878\\\\307.01\\\\33.39844\\\\296.7761\\\\307.01\\\\47.46094\\\\296.7546\\\\307.01\\\\52.14844\\\\296.6839\\\\307.01\\\\61.52344\\\\296.6635\\\\307.01\\\\68.55469\\\\296.6028\\\\307.01\\\\77.92969\\\\296.5859\\\\307.01\\\\80.27344\\\\296.5309\\\\307.01\\\\84.96094\\\\296.5362\\\\307.01\\\\91.99219\\\\296.4947\\\\307.01\\\\96.67969\\\\296.5208\\\\307.01\\\\108.3984\\\\296.4194\\\\307.01\\\\117.7734\\\\296.3986\\\\307.01\\\\120.1172\\\\296.3578\\\\307.01\\\\131.8359\\\\296.2929\\\\307.01\\\\134.1797\\\\295.8184\\\\307.01\\\\138.8672\\\\295.9218\\\\307.01\\\\141.2109\\\\296.2507\\\\307.01\\\\143.5547\\\\295.8486\\\\307.01\\\\150.5859\\\\295.8791\\\\307.01\\\\155.2734\\\\295.8012\\\\307.01\\\\159.9609\\\\295.7684\\\\307.01\\\\169.3359\\\\295.6454\\\\307.01\\\\171.6797\\\\295.7173\\\\307.01\\\\181.0547\\\\295.5742\\\\307.01\\\\183.3984\\\\295.6272\\\\307.01\\\\190.4297\\\\295.557\\\\307.01\\\\192.7734\\\\295.5742\\\\307.01\\\\197.4609\\\\295.8172\\\\307.01\\\\199.8047\\\\295.8012\\\\307.01\\\\202.1484\\\\295.6998\\\\307.01\\\\204.4922\\\\295.3989\\\\307.01\\\\206.8359\\\\294.8185\\\\307.01\\\\209.1797\\\\294.3828\\\\307.01\\\\211.5234\\\\292.4841\\\\307.01\\\\213.8672\\\\291.1765\\\\307.01\\\\216.2109\\\\289.6034\\\\307.01\\\\217.2454\\\\288.6234\\\\307.01\\\\218.5547\\\\287.0864\\\\307.01\\\\221.7204\\\\283.9359\\\\307.01\\\\225.5859\\\\279.8821\\\\307.01\\\\228.5326\\\\276.9047\\\\307.01\\\\230.2734\\\\275.0424\\\\307.01\\\\233.137\\\\272.2172\\\\307.01\\\\234.9609\\\\270.245\\\\307.01\\\\237.6922\\\\267.5297\\\\307.01\\\\246.856\\\\258.1547\\\\307.01\\\\251.3768\\\\253.4672\\\\307.01\\\\253.166\\\\251.1234\\\\307.01\\\\255.1239\\\\248.7797\\\\307.01\\\\256.5218\\\\246.4359\\\\307.01\\\\257.6041\\\\244.0922\\\\307.01\\\\258.817\\\\241.7484\\\\307.01\\\\259.2578\\\\239.4047\\\\307.01\\\\258.9535\\\\237.0609\\\\307.01\\\\256.0547\\\\234.1196\\\\307.01\\\\253.7109\\\\233.131\\\\307.01\\\\251.3672\\\\232.5372\\\\307.01\\\\244.3359\\\\232.7139\\\\307.01\\\\241.9922\\\\232.9015\\\\307.01\\\\239.6484\\\\232.9906\\\\307.01\\\\234.9609\\\\232.9803\\\\307.01\\\\225.5859\\\\233.0305\\\\307.01\\\\211.5234\\\\233.0632\\\\307.01\\\\206.8359\\\\233.0007\\\\307.01\\\\204.4922\\\\232.7186\\\\307.01\\\\199.8047\\\\232.6767\\\\307.01\\\\195.1172\\\\232.7588\\\\307.01\\\\190.4297\\\\232.7186\\\\307.01\\\\183.3984\\\\232.7588\\\\307.01\\\\169.3359\\\\232.7456\\\\307.01\\\\166.9922\\\\232.7186\\\\307.01\\\\157.6172\\\\232.7848\\\\307.01\\\\152.9297\\\\232.7588\\\\307.01\\\\143.5547\\\\232.7875\\\\307.01\\\\138.8672\\\\232.6477\\\\307.01\\\\131.8359\\\\232.6179\\\\307.01\\\\127.1484\\\\232.4192\\\\307.01\\\\124.8047\\\\231.7722\\\\307.01\\\\122.4609\\\\231.7224\\\\307.01\\\\120.1172\\\\231.7625\\\\307.01\\\\117.7734\\\\232.2817\\\\307.01\\\\115.4297\\\\232.5232\\\\307.01\\\\113.0859\\\\232.4546\\\\307.01\\\\110.7422\\\\232.4888\\\\307.01\\\\108.3984\\\\231.7722\\\\307.01\\\\106.0547\\\\231.6215\\\\307.01\\\\103.7109\\\\231.648\\\\307.01\\\\102.8453\\\\232.3734\\\\307.01\\\\101.3672\\\\233.1042\\\\307.01\\\\94.33594\\\\233.0951\\\\307.01\\\\89.64844\\\\233.1221\\\\307.01\\\\77.92969\\\\233.1221\\\\307.01\\\\59.17969\\\\233.1483\\\\307.01\\\\47.46094\\\\233.131\\\\307.01\\\\45.11719\\\\233.0951\\\\307.01\\\\44.1495\\\\232.3734\\\\307.01\\\\42.77344\\\\231.0667\\\\307.01\\\\42.01079\\\\230.0297\\\\307.01\\\\42.77344\\\\229.206\\\\307.01\\\\45.11719\\\\228.5128\\\\307.01\\\\47.46094\\\\226.9947\\\\307.01\\\\49.80469\\\\225.986\\\\307.01\\\\52.14844\\\\224.5319\\\\307.01\\\\54.49219\\\\223.5919\\\\307.01\\\\55.18826\\\\222.9984\\\\307.01\\\\59.17969\\\\220.1266\\\\307.01\\\\61.52344\\\\218.7716\\\\307.01\\\\64.83179\\\\215.9672\\\\307.01\\\\66.21094\\\\214.9167\\\\307.01\\\\70.89844\\\\210.4059\\\\307.01\\\\74.42065\\\\206.5922\\\\307.01\\\\76.41272\\\\204.2484\\\\307.01\\\\78.09221\\\\201.9047\\\\307.01\\\\80.27344\\\\198.7387\\\\307.01\\\\82.73348\\\\194.8734\\\\307.01\\\\84.0608\\\\192.5297\\\\307.01\\\\85.28558\\\\190.1859\\\\307.01\\\\86.21609\\\\187.8422\\\\307.01\\\\87.62429\\\\185.4984\\\\307.01\\\\88.50529\\\\183.1547\\\\307.01\\\\88.94127\\\\180.8109\\\\307.01\\\\89.95934\\\\178.4672\\\\307.01\\\\90.70085\\\\176.1234\\\\307.01\\\\91.22121\\\\173.7797\\\\307.01\\\\92.07523\\\\171.4359\\\\307.01\\\\92.80196\\\\169.0922\\\\307.01\\\\93.06984\\\\166.7484\\\\307.01\\\\93.43011\\\\159.7172\\\\307.01\\\\93.78402\\\\155.0297\\\\307.01\\\\95.35853\\\\152.6859\\\\307.01\\\\97.21561\\\\150.3422\\\\307.01\\\\96.67969\\\\149.7189\\\\307.01\\\\94.33594\\\\148.4892\\\\307.01\\\\93.77909\\\\147.9984\\\\307.01\\\\93.3065\\\\145.6547\\\\307.01\\\\92.98377\\\\140.9672\\\\307.01\\\\92.62429\\\\138.6234\\\\307.01\\\\91.70932\\\\136.2797\\\\307.01\\\\90.52432\\\\131.5922\\\\307.01\\\\88.79446\\\\126.9047\\\\307.01\\\\88.35513\\\\124.5609\\\\307.01\\\\86.99378\\\\122.2172\\\\307.01\\\\85.96972\\\\119.8734\\\\307.01\\\\84.78261\\\\117.5297\\\\307.01\\\\83.77131\\\\115.1859\\\\307.01\\\\82.02393\\\\112.8422\\\\307.01\\\\80.98469\\\\110.4984\\\\307.01\\\\77.92969\\\\106.5841\\\\307.01\\\\77.24248\\\\105.8109\\\\307.01\\\\75.73918\\\\103.4672\\\\307.01\\\\71.58269\\\\98.77969\\\\307.01\\\\68.55469\\\\95.79888\\\\307.01\\\\63.86719\\\\91.72031\\\\307.01\\\\61.52344\\\\90.225\\\\307.01\\\\59.17969\\\\88.22054\\\\307.01\\\\56.83594\\\\86.64962\\\\307.01\\\\54.49219\\\\85.5138\\\\307.01\\\\52.14844\\\\83.72078\\\\307.01\\\\49.80469\\\\82.97671\\\\307.01\\\\47.46094\\\\81.57265\\\\307.01\\\\45.11719\\\\80.68514\\\\307.01\\\\42.77344\\\\79.22858\\\\307.01\\\\38.08594\\\\78.2206\\\\307.01\\\\35.74219\\\\77.19827\\\\307.01\\\\33.39844\\\\76.55239\\\\307.01\\\\31.05469\\\\76.12139\\\\307.01\\\\26.36719\\\\74.72801\\\\307.01\\\\24.02344\\\\74.43276\\\\307.01\\\\16.99219\\\\74.13425\\\\307.01\\\\14.64844\\\\74.0982\\\\307.01\\\\7.617188\\\\74.18246\\\\307.01\\\\2.929688\\\\74.39614\\\\307.01\\\\0.5859375\\\\74.65002\\\\307.01\\\\-4.101563\\\\75.99764\\\\307.01\\\\-6.445313\\\\76.44152\\\\307.01\\\\-8.789063\\\\77.05959\\\\307.01\\\\-11.13281\\\\78.04713\\\\307.01\\\\-15.82031\\\\79.25529\\\\307.01\\\\-18.16406\\\\80.70029\\\\307.01\\\\-20.50781\\\\81.59003\\\\307.01\\\\-22.85156\\\\82.96635\\\\307.01\\\\-25.19531\\\\83.75323\\\\307.01\\\\-27.53906\\\\85.54559\\\\307.01\\\\-29.88281\\\\86.62055\\\\307.01\\\\-32.22656\\\\88.30287\\\\307.01\\\\-34.57031\\\\90.24761\\\\307.01\\\\-36.72696\\\\91.74844\\\\307.01\\\\-39.25781\\\\93.79108\\\\307.01\\\\-41.60156\\\\95.80312\\\\307.01\\\\-46.76263\\\\101.1234\\\\307.01\\\\-50.32931\\\\105.8109\\\\307.01\\\\-52.19967\\\\108.1547\\\\307.01\\\\-53.78753\\\\110.4984\\\\307.01\\\\-55.12727\\\\112.8422\\\\307.01\\\\-56.73218\\\\115.1859\\\\307.01\\\\-57.60399\\\\117.5297\\\\307.01\\\\-59.0554\\\\119.8734\\\\307.01\\\\-59.9868\\\\122.2172\\\\307.01\\\\-61.19757\\\\124.5609\\\\307.01\\\\-61.69523\\\\126.9047\\\\307.01\\\\-63.64114\\\\131.5922\\\\307.01\\\\-64.53993\\\\136.2797\\\\307.01\\\\-65.34997\\\\138.6234\\\\307.01\\\\-65.7409\\\\140.9672\\\\307.01\\\\-66.1507\\\\145.6547\\\\307.01\\\\-66.472\\\\150.3422\\\\307.01\\\\-66.58739\\\\155.0297\\\\307.01\\\\-66.57152\\\\157.3734\\\\307.01\\\\-66.46494\\\\159.7172\\\\307.01\\\\-66.11516\\\\164.4047\\\\307.01\\\\-65.59342\\\\169.0922\\\\307.01\\\\-64.28482\\\\173.7797\\\\307.01\\\\-63.89509\\\\176.1234\\\\307.01\\\\-63.1595\\\\178.4672\\\\307.01\\\\-61.99355\\\\180.8109\\\\307.01\\\\-61.42098\\\\183.1547\\\\307.01\\\\-60.5483\\\\185.4984\\\\307.01\\\\-60.35156\\\\185.7601\\\\307.01\\\\-56.91528\\\\192.5297\\\\307.01\\\\-55.83274\\\\194.8734\\\\307.01\\\\-54.25148\\\\197.2172\\\\307.01\\\\-52.56362\\\\199.5609\\\\307.01\\\\-51.16442\\\\201.9047\\\\307.01\\\\-48.63281\\\\205.0156\\\\307.01\\\\-47.47334\\\\206.5922\\\\307.01\\\\-45.13073\\\\208.9359\\\\307.01\\\\-42.93779\\\\211.2797\\\\307.01\\\\-39.25781\\\\214.8144\\\\307.01\\\\-34.97234\\\\218.3109\\\\307.01\\\\-34.57031\\\\218.6988\\\\307.01\\\\-32.22656\\\\220.0478\\\\307.01\\\\-28.16808\\\\222.9984\\\\307.01\\\\-27.53906\\\\223.5539\\\\307.01\\\\-25.19531\\\\224.4929\\\\307.01\\\\-22.85156\\\\225.9097\\\\307.01\\\\-20.50781\\\\226.9751\\\\307.01\\\\-18.16406\\\\228.4825\\\\307.01\\\\-15.82031\\\\229.1508\\\\307.01\\\\-14.96138\\\\230.0297\\\\307.01\\\\-15.82031\\\\231.3794\\\\307.01\\\\-16.92257\\\\232.3734\\\\307.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848933604400001.474954755728\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"376\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"12\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-18.16406\\\\233.0951\\\\310.01\\\\-29.88281\\\\233.1132\\\\310.01\\\\-32.22656\\\\233.1483\\\\310.01\\\\-36.91406\\\\233.1221\\\\310.01\\\\-46.28906\\\\233.1397\\\\310.01\\\\-50.97656\\\\233.1736\\\\310.01\\\\-60.35156\\\\233.19\\\\310.01\\\\-62.69531\\\\233.1652\\\\310.01\\\\-65.03906\\\\232.5396\\\\310.01\\\\-67.38281\\\\232.8852\\\\310.01\\\\-72.07031\\\\232.9942\\\\310.01\\\\-86.13281\\\\233.0183\\\\310.01\\\\-88.47656\\\\233.0671\\\\310.01\\\\-95.50781\\\\233.0859\\\\310.01\\\\-97.85156\\\\233.3123\\\\310.01\\\\-102.5391\\\\233.9389\\\\310.01\\\\-104.8828\\\\234.062\\\\310.01\\\\-107.2266\\\\233.5222\\\\310.01\\\\-109.5703\\\\234.0754\\\\310.01\\\\-116.6016\\\\234.0158\\\\310.01\\\\-133.0078\\\\234.1313\\\\310.01\\\\-137.6953\\\\234.1127\\\\310.01\\\\-142.3828\\\\234.1741\\\\310.01\\\\-147.0703\\\\234.0855\\\\310.01\\\\-151.7578\\\\234.1127\\\\310.01\\\\-165.8203\\\\234.0141\\\\310.01\\\\-168.1641\\\\234.1313\\\\310.01\\\\-182.2266\\\\234.2252\\\\310.01\\\\-186.9141\\\\234.2721\\\\310.01\\\\-189.2578\\\\234.2252\\\\310.01\\\\-198.6328\\\\234.2187\\\\310.01\\\\-200.9766\\\\234.261\\\\310.01\\\\-205.6641\\\\234.1564\\\\310.01\\\\-208.0078\\\\234.2088\\\\310.01\\\\-215.0391\\\\234.2678\\\\310.01\\\\-222.0703\\\\234.3601\\\\310.01\\\\-226.7578\\\\234.3296\\\\310.01\\\\-233.7891\\\\234.1478\\\\310.01\\\\-238.4766\\\\234.1954\\\\310.01\\\\-243.1641\\\\234.1652\\\\310.01\\\\-245.5078\\\\233.9895\\\\310.01\\\\-247.8516\\\\233.9042\\\\310.01\\\\-252.5391\\\\234.0772\\\\310.01\\\\-254.8828\\\\234.2605\\\\310.01\\\\-257.2266\\\\234.9111\\\\310.01\\\\-259.5703\\\\236.1157\\\\310.01\\\\-260.7422\\\\237.0609\\\\310.01\\\\-262.3813\\\\239.4047\\\\310.01\\\\-262.5138\\\\241.7484\\\\310.01\\\\-261.5641\\\\244.0922\\\\310.01\\\\-260.7806\\\\246.4359\\\\310.01\\\\-259.5703\\\\248.5863\\\\310.01\\\\-257.6038\\\\251.1234\\\\310.01\\\\-255.672\\\\253.4672\\\\310.01\\\\-252.5391\\\\256.6564\\\\310.01\\\\-250.1953\\\\258.9219\\\\310.01\\\\-247.8516\\\\261.4344\\\\310.01\\\\-245.5078\\\\263.6147\\\\310.01\\\\-244.1124\\\\265.1859\\\\310.01\\\\-241.6101\\\\267.5297\\\\310.01\\\\-239.4375\\\\269.8734\\\\310.01\\\\-236.9858\\\\272.2172\\\\310.01\\\\-233.7891\\\\275.3877\\\\310.01\\\\-231.4453\\\\277.8215\\\\310.01\\\\-229.1016\\\\280.0036\\\\310.01\\\\-226.7578\\\\282.5409\\\\310.01\\\\-225.1803\\\\283.9359\\\\310.01\\\\-222.0703\\\\287.2221\\\\310.01\\\\-220.5288\\\\288.6234\\\\310.01\\\\-218.3186\\\\290.9672\\\\310.01\\\\-217.3828\\\\291.678\\\\310.01\\\\-212.6953\\\\294.6293\\\\310.01\\\\-210.3516\\\\295.3008\\\\310.01\\\\-208.0078\\\\296.4508\\\\310.01\\\\-205.6641\\\\296.8858\\\\310.01\\\\-203.3203\\\\297.1639\\\\310.01\\\\-196.2891\\\\297.1446\\\\310.01\\\\-191.6016\\\\297.0175\\\\310.01\\\\-179.8828\\\\296.9378\\\\310.01\\\\-177.5391\\\\296.8855\\\\310.01\\\\-165.8203\\\\296.8345\\\\310.01\\\\-158.7891\\\\296.8672\\\\310.01\\\\-154.1016\\\\296.851\\\\310.01\\\\-135.3516\\\\296.8786\\\\310.01\\\\-128.3203\\\\296.9134\\\\310.01\\\\-121.2891\\\\296.8971\\\\310.01\\\\-111.9141\\\\296.8359\\\\310.01\\\\-97.85156\\\\296.8453\\\\310.01\\\\-88.47656\\\\296.9028\\\\310.01\\\\-86.13281\\\\296.8927\\\\310.01\\\\-69.72656\\\\296.9622\\\\310.01\\\\-65.03906\\\\296.934\\\\310.01\\\\-58.00781\\\\296.9358\\\\310.01\\\\-55.66406\\\\297.3383\\\\310.01\\\\-53.32031\\\\296.9926\\\\310.01\\\\-50.97656\\\\297.0405\\\\310.01\\\\-48.63281\\\\296.9267\\\\310.01\\\\-46.28906\\\\297.409\\\\310.01\\\\-43.94531\\\\297.3148\\\\310.01\\\\-41.60156\\\\297.373\\\\310.01\\\\-39.25781\\\\297.0516\\\\310.01\\\\-36.91406\\\\297.1798\\\\310.01\\\\-34.57031\\\\297.1975\\\\310.01\\\\-32.22656\\\\297.3947\\\\310.01\\\\-29.88281\\\\297.2767\\\\310.01\\\\-27.53906\\\\297.2779\\\\310.01\\\\-25.19531\\\\297.3806\\\\310.01\\\\-22.85156\\\\297.106\\\\310.01\\\\-20.50781\\\\297.4055\\\\310.01\\\\-18.16406\\\\297.1577\\\\310.01\\\\-15.82031\\\\297.2089\\\\310.01\\\\-13.47656\\\\297.4229\\\\310.01\\\\-11.13281\\\\297.2307\\\\310.01\\\\-8.789063\\\\297.1626\\\\310.01\\\\-6.445313\\\\297.4229\\\\310.01\\\\-4.101563\\\\297.3546\\\\310.01\\\\-1.757813\\\\297.0439\\\\310.01\\\\0.5859375\\\\297.0849\\\\310.01\\\\2.929688\\\\296.8985\\\\310.01\\\\5.273438\\\\297.2462\\\\310.01\\\\7.617188\\\\296.8985\\\\310.01\\\\9.960938\\\\297.1152\\\\310.01\\\\12.30469\\\\296.8477\\\\310.01\\\\19.33594\\\\296.8579\\\\310.01\\\\24.02344\\\\296.8161\\\\310.01\\\\26.36719\\\\296.8473\\\\310.01\\\\33.39844\\\\296.7643\\\\310.01\\\\42.77344\\\\296.7533\\\\310.01\\\\45.11719\\\\296.7115\\\\310.01\\\\59.17969\\\\296.6814\\\\310.01\\\\68.55469\\\\296.5984\\\\310.01\\\\75.58594\\\\296.6107\\\\310.01\\\\80.27344\\\\296.5362\\\\310.01\\\\84.96094\\\\296.5616\\\\310.01\\\\87.30469\\\\296.5098\\\\310.01\\\\99.02344\\\\296.5005\\\\310.01\\\\101.3672\\\\296.466\\\\310.01\\\\110.7422\\\\296.4189\\\\310.01\\\\113.0859\\\\296.3782\\\\310.01\\\\117.7734\\\\296.3976\\\\310.01\\\\120.1172\\\\296.3578\\\\310.01\\\\127.1484\\\\296.3288\\\\310.01\\\\129.4922\\\\296.2873\\\\310.01\\\\131.8359\\\\296.3348\\\\310.01\\\\134.1797\\\\295.9141\\\\310.01\\\\136.5234\\\\296.1612\\\\310.01\\\\138.8672\\\\296.033\\\\310.01\\\\141.2109\\\\296.2967\\\\310.01\\\\143.5547\\\\295.9477\\\\310.01\\\\145.8984\\\\295.864\\\\310.01\\\\150.5859\\\\295.894\\\\310.01\\\\152.9297\\\\295.833\\\\310.01\\\\162.3047\\\\295.7516\\\\310.01\\\\166.9922\\\\295.6638\\\\310.01\\\\171.6797\\\\295.7173\\\\310.01\\\\181.0547\\\\295.6093\\\\310.01\\\\185.7422\\\\295.6272\\\\310.01\\\\188.0859\\\\295.557\\\\310.01\\\\192.7734\\\\295.5742\\\\310.01\\\\197.4609\\\\295.8012\\\\310.01\\\\199.8047\\\\295.8012\\\\310.01\\\\202.1484\\\\295.6819\\\\310.01\\\\204.4922\\\\295.4287\\\\310.01\\\\206.8359\\\\294.8307\\\\310.01\\\\209.1797\\\\294.3828\\\\310.01\\\\211.5234\\\\292.4764\\\\310.01\\\\213.8672\\\\291.1765\\\\310.01\\\\216.2109\\\\289.625\\\\310.01\\\\217.2743\\\\288.6234\\\\310.01\\\\218.5547\\\\287.0983\\\\310.01\\\\221.7204\\\\283.9359\\\\310.01\\\\225.5859\\\\279.8821\\\\310.01\\\\227.9297\\\\277.5431\\\\310.01\\\\230.2734\\\\275.0606\\\\310.01\\\\233.113\\\\272.2172\\\\310.01\\\\235.3208\\\\269.8734\\\\310.01\\\\237.7111\\\\267.5297\\\\310.01\\\\239.9438\\\\265.1859\\\\310.01\\\\246.8767\\\\258.1547\\\\310.01\\\\249.1396\\\\255.8109\\\\310.01\\\\251.4974\\\\253.4672\\\\310.01\\\\255.4942\\\\248.7797\\\\310.01\\\\257.2692\\\\246.4359\\\\310.01\\\\259.2847\\\\244.0922\\\\310.01\\\\260.0775\\\\241.7484\\\\310.01\\\\260.576\\\\239.4047\\\\310.01\\\\260.1205\\\\237.0609\\\\310.01\\\\258.8931\\\\234.7172\\\\310.01\\\\258.3984\\\\234.2411\\\\310.01\\\\256.0547\\\\233.35\\\\310.01\\\\253.7109\\\\232.9379\\\\310.01\\\\251.3672\\\\232.7162\\\\310.01\\\\249.0234\\\\232.8224\\\\310.01\\\\244.3359\\\\232.8437\\\\310.01\\\\239.6484\\\\233.0108\\\\310.01\\\\237.3047\\\\233.0007\\\\310.01\\\\232.6172\\\\233.0726\\\\310.01\\\\227.9297\\\\233.0305\\\\310.01\\\\211.5234\\\\233.0726\\\\310.01\\\\206.8359\\\\233.0245\\\\310.01\\\\204.4922\\\\232.7456\\\\310.01\\\\202.1484\\\\232.6886\\\\310.01\\\\195.1172\\\\232.7848\\\\310.01\\\\190.4297\\\\232.7186\\\\310.01\\\\176.3672\\\\232.7719\\\\310.01\\\\166.9922\\\\232.7456\\\\310.01\\\\159.9609\\\\232.7975\\\\310.01\\\\150.5859\\\\232.7746\\\\310.01\\\\145.8984\\\\232.8003\\\\310.01\\\\138.8672\\\\232.6623\\\\310.01\\\\134.1797\\\\232.6623\\\\310.01\\\\131.8359\\\\232.4897\\\\310.01\\\\129.4922\\\\231.8945\\\\310.01\\\\124.8047\\\\231.6823\\\\310.01\\\\120.1172\\\\231.737\\\\310.01\\\\117.7734\\\\232.3211\\\\310.01\\\\115.4297\\\\232.6329\\\\310.01\\\\110.7422\\\\232.6623\\\\310.01\\\\108.3984\\\\231.9109\\\\310.01\\\\106.0547\\\\231.602\\\\310.01\\\\103.7109\\\\231.6193\\\\310.01\\\\102.8551\\\\232.3734\\\\310.01\\\\101.3672\\\\233.1132\\\\310.01\\\\94.33594\\\\233.0951\\\\310.01\\\\87.30469\\\\233.1397\\\\310.01\\\\82.61719\\\\233.1132\\\\310.01\\\\75.58594\\\\233.1483\\\\310.01\\\\70.89844\\\\233.1221\\\\310.01\\\\59.17969\\\\233.1568\\\\310.01\\\\52.14844\\\\233.1221\\\\310.01\\\\47.46094\\\\233.131\\\\310.01\\\\45.11719\\\\233.0859\\\\310.01\\\\44.16726\\\\232.3734\\\\310.01\\\\42.77344\\\\231.0498\\\\310.01\\\\42.0192\\\\230.0297\\\\310.01\\\\42.77344\\\\229.2101\\\\310.01\\\\45.11719\\\\228.4825\\\\310.01\\\\47.46094\\\\226.9683\\\\310.01\\\\49.80469\\\\225.9571\\\\310.01\\\\52.14844\\\\224.5099\\\\310.01\\\\54.49219\\\\223.5692\\\\310.01\\\\55.14323\\\\222.9984\\\\310.01\\\\59.17969\\\\220.1045\\\\310.01\\\\61.52344\\\\218.7182\\\\310.01\\\\64.78396\\\\215.9672\\\\310.01\\\\66.21094\\\\214.8859\\\\310.01\\\\70.89844\\\\210.3839\\\\310.01\\\\74.36692\\\\206.5922\\\\310.01\\\\76.38396\\\\204.2484\\\\310.01\\\\81.22672\\\\197.2172\\\\310.01\\\\84.03577\\\\192.5297\\\\310.01\\\\85.25792\\\\190.1859\\\\310.01\\\\86.1923\\\\187.8422\\\\310.01\\\\87.47085\\\\185.4984\\\\310.01\\\\88.48811\\\\183.1547\\\\310.01\\\\88.90029\\\\180.8109\\\\310.01\\\\89.90248\\\\178.4672\\\\310.01\\\\90.64713\\\\176.1234\\\\310.01\\\\91.18042\\\\173.7797\\\\310.01\\\\92.74409\\\\169.0922\\\\310.01\\\\93.04629\\\\166.7484\\\\310.01\\\\93.38223\\\\159.7172\\\\310.01\\\\93.66732\\\\155.0297\\\\310.01\\\\94.19643\\\\152.6859\\\\310.01\\\\95.64145\\\\150.3422\\\\310.01\\\\94.33594\\\\149.1322\\\\310.01\\\\93.50089\\\\147.9984\\\\310.01\\\\93.25756\\\\145.6547\\\\310.01\\\\92.96472\\\\140.9672\\\\310.01\\\\92.55265\\\\138.6234\\\\310.01\\\\91.62743\\\\136.2797\\\\310.01\\\\90.46875\\\\131.5922\\\\310.01\\\\88.75411\\\\126.9047\\\\310.01\\\\88.33083\\\\124.5609\\\\310.01\\\\86.91406\\\\122.2172\\\\310.01\\\\85.93851\\\\119.8734\\\\310.01\\\\84.69238\\\\117.5297\\\\310.01\\\\83.74721\\\\115.1859\\\\310.01\\\\81.96295\\\\112.8422\\\\310.01\\\\80.91831\\\\110.4984\\\\310.01\\\\79.14664\\\\108.1547\\\\310.01\\\\77.20256\\\\105.8109\\\\310.01\\\\75.65157\\\\103.4672\\\\310.01\\\\71.53253\\\\98.77969\\\\310.01\\\\68.55469\\\\95.82625\\\\310.01\\\\66.21094\\\\93.7748\\\\310.01\\\\63.79395\\\\91.74844\\\\310.01\\\\61.52344\\\\90.26997\\\\310.01\\\\59.17969\\\\88.23898\\\\310.01\\\\56.83594\\\\86.67812\\\\310.01\\\\54.49219\\\\85.52697\\\\310.01\\\\52.14844\\\\83.74062\\\\310.01\\\\49.80469\\\\82.99707\\\\310.01\\\\47.46094\\\\81.59437\\\\310.01\\\\45.11719\\\\80.70401\\\\310.01\\\\42.77344\\\\79.24621\\\\310.01\\\\38.08594\\\\78.23525\\\\310.01\\\\35.74219\\\\77.20986\\\\310.01\\\\33.39844\\\\76.56908\\\\310.01\\\\31.05469\\\\76.1376\\\\310.01\\\\28.71094\\\\75.50471\\\\310.01\\\\26.36719\\\\74.72801\\\\310.01\\\\24.02344\\\\74.43276\\\\310.01\\\\16.99219\\\\74.15237\\\\310.01\\\\12.30469\\\\74.10455\\\\310.01\\\\7.617188\\\\74.19435\\\\310.01\\\\2.929688\\\\74.40105\\\\310.01\\\\0.5859375\\\\74.6557\\\\310.01\\\\-4.101563\\\\75.97835\\\\310.01\\\\-6.445313\\\\76.43703\\\\310.01\\\\-8.789063\\\\77.04008\\\\310.01\\\\-11.13281\\\\78.03346\\\\310.01\\\\-15.82031\\\\79.22787\\\\310.01\\\\-18.16406\\\\80.65422\\\\310.01\\\\-20.50781\\\\81.57233\\\\310.01\\\\-22.85156\\\\82.94526\\\\310.01\\\\-25.19531\\\\83.73331\\\\310.01\\\\-27.53906\\\\85.52371\\\\310.01\\\\-29.88281\\\\86.58486\\\\310.01\\\\-32.22656\\\\88.25871\\\\310.01\\\\-34.57031\\\\90.22985\\\\310.01\\\\-36.76382\\\\91.74844\\\\310.01\\\\-39.25781\\\\93.74467\\\\310.01\\\\-41.60156\\\\95.77628\\\\310.01\\\\-46.83174\\\\101.1234\\\\310.01\\\\-50.36664\\\\105.8109\\\\310.01\\\\-52.22528\\\\108.1547\\\\310.01\\\\-53.85835\\\\110.4984\\\\310.01\\\\-55.16944\\\\112.8422\\\\310.01\\\\-56.75659\\\\115.1859\\\\310.01\\\\-57.66267\\\\117.5297\\\\310.01\\\\-59.07907\\\\119.8734\\\\310.01\\\\-60.05458\\\\122.2172\\\\310.01\\\\-61.23355\\\\124.5609\\\\310.01\\\\-61.71977\\\\126.9047\\\\310.01\\\\-63.70555\\\\131.5922\\\\310.01\\\\-64.61088\\\\136.2797\\\\310.01\\\\-65.42969\\\\138.6234\\\\310.01\\\\-65.75874\\\\140.9672\\\\310.01\\\\-66.18872\\\\145.6547\\\\310.01\\\\-66.50977\\\\150.3422\\\\310.01\\\\-66.63708\\\\155.0297\\\\310.01\\\\-66.4952\\\\159.7172\\\\310.01\\\\-66.1377\\\\164.4047\\\\310.01\\\\-65.63528\\\\169.0922\\\\310.01\\\\-65.06631\\\\171.4359\\\\310.01\\\\-64.31938\\\\173.7797\\\\310.01\\\\-63.93199\\\\176.1234\\\\310.01\\\\-63.24552\\\\178.4672\\\\310.01\\\\-62.07078\\\\180.8109\\\\310.01\\\\-61.44824\\\\183.1547\\\\310.01\\\\-60.69909\\\\185.4984\\\\310.01\\\\-59.32978\\\\187.8422\\\\310.01\\\\-58.20172\\\\190.1859\\\\310.01\\\\-56.94638\\\\192.5297\\\\310.01\\\\-55.91395\\\\194.8734\\\\310.01\\\\-52.60492\\\\199.5609\\\\310.01\\\\-51.24368\\\\201.9047\\\\310.01\\\\-48.63281\\\\205.082\\\\310.01\\\\-47.51002\\\\206.5922\\\\310.01\\\\-45.16488\\\\208.9359\\\\310.01\\\\-42.98322\\\\211.2797\\\\310.01\\\\-39.25781\\\\214.8471\\\\310.01\\\\-34.57031\\\\218.7393\\\\310.01\\\\-32.22656\\\\220.0723\\\\310.01\\\\-31.49524\\\\220.6547\\\\310.01\\\\-28.1901\\\\222.9984\\\\310.01\\\\-27.53906\\\\223.5692\\\\310.01\\\\-25.19531\\\\224.5146\\\\310.01\\\\-22.85156\\\\225.9463\\\\310.01\\\\-20.50781\\\\226.9932\\\\310.01\\\\-18.16406\\\\228.5043\\\\310.01\\\\-15.82031\\\\229.1644\\\\310.01\\\\-14.9747\\\\230.0297\\\\310.01\\\\-15.82031\\\\231.3705\\\\310.01\\\\-16.91176\\\\232.3734\\\\310.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848957605700001.539833993627\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"369\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"13\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"45.11719\\\\233.1042\\\\313.01\\\\44.14645\\\\232.3734\\\\313.01\\\\42.77344\\\\231.0593\\\\313.01\\\\42.01079\\\\230.0297\\\\313.01\\\\42.77344\\\\229.2013\\\\313.01\\\\45.11719\\\\228.4738\\\\313.01\\\\47.46094\\\\226.9815\\\\313.01\\\\49.80469\\\\225.902\\\\313.01\\\\52.14844\\\\224.4881\\\\313.01\\\\54.49219\\\\223.5423\\\\313.01\\\\55.12733\\\\222.9984\\\\313.01\\\\59.17969\\\\220.0829\\\\313.01\\\\61.52344\\\\218.6617\\\\313.01\\\\64.74609\\\\215.9672\\\\313.01\\\\66.21094\\\\214.8439\\\\313.01\\\\70.89844\\\\210.3514\\\\313.01\\\\72.25302\\\\208.9359\\\\313.01\\\\76.36958\\\\204.2484\\\\313.01\\\\77.92969\\\\201.9154\\\\313.01\\\\80.27344\\\\198.618\\\\313.01\\\\81.20244\\\\197.2172\\\\313.01\\\\82.5531\\\\194.8734\\\\313.01\\\\84.01786\\\\192.5297\\\\313.01\\\\85.20026\\\\190.1859\\\\313.01\\\\86.15661\\\\187.8422\\\\313.01\\\\87.38582\\\\185.4984\\\\313.01\\\\88.4649\\\\183.1547\\\\313.01\\\\88.8737\\\\180.8109\\\\313.01\\\\89.82677\\\\178.4672\\\\313.01\\\\90.60566\\\\176.1234\\\\313.01\\\\91.14483\\\\173.7797\\\\313.01\\\\91.8785\\\\171.4359\\\\313.01\\\\92.70221\\\\169.0922\\\\313.01\\\\93.03451\\\\166.7484\\\\313.01\\\\93.47005\\\\157.3734\\\\313.01\\\\93.61861\\\\152.6859\\\\313.01\\\\93.64014\\\\150.3422\\\\313.01\\\\93.34677\\\\147.9984\\\\313.01\\\\92.94547\\\\140.9672\\\\313.01\\\\92.48362\\\\138.6234\\\\313.01\\\\91.57636\\\\136.2797\\\\313.01\\\\90.42757\\\\131.5922\\\\313.01\\\\89.48472\\\\129.2484\\\\313.01\\\\88.73901\\\\126.9047\\\\313.01\\\\88.29956\\\\124.5609\\\\313.01\\\\86.86148\\\\122.2172\\\\313.01\\\\85.9046\\\\119.8734\\\\313.01\\\\84.65003\\\\117.5297\\\\313.01\\\\83.69191\\\\115.1859\\\\313.01\\\\81.91267\\\\112.8422\\\\313.01\\\\80.87713\\\\110.4984\\\\313.01\\\\79.10793\\\\108.1547\\\\313.01\\\\77.14613\\\\105.8109\\\\313.01\\\\75.58594\\\\103.498\\\\313.01\\\\73.56179\\\\101.1234\\\\313.01\\\\71.46389\\\\98.77969\\\\313.01\\\\68.55469\\\\95.89069\\\\313.01\\\\66.21094\\\\93.83636\\\\313.01\\\\63.71433\\\\91.74844\\\\313.01\\\\61.52344\\\\90.29206\\\\313.01\\\\59.17969\\\\88.26962\\\\313.01\\\\56.83594\\\\86.74574\\\\313.01\\\\54.49219\\\\85.57699\\\\313.01\\\\52.14844\\\\83.78355\\\\313.01\\\\49.80469\\\\83.01695\\\\313.01\\\\47.46094\\\\81.62056\\\\313.01\\\\45.11719\\\\80.73152\\\\313.01\\\\42.77344\\\\79.27779\\\\313.01\\\\38.08594\\\\78.27902\\\\313.01\\\\35.74219\\\\77.23351\\\\313.01\\\\33.39844\\\\76.57487\\\\313.01\\\\31.05469\\\\76.15349\\\\313.01\\\\28.71094\\\\75.56659\\\\313.01\\\\26.36719\\\\74.72801\\\\313.01\\\\24.02344\\\\74.44027\\\\313.01\\\\14.64844\\\\74.0982\\\\313.01\\\\7.617188\\\\74.19435\\\\313.01\\\\2.929688\\\\74.39614\\\\313.01\\\\0.5859375\\\\74.6557\\\\313.01\\\\-1.757813\\\\75.2781\\\\313.01\\\\-4.101563\\\\75.98805\\\\313.01\\\\-6.445313\\\\76.43114\\\\313.01\\\\-8.789063\\\\77.04008\\\\313.01\\\\-11.13281\\\\78.03108\\\\313.01\\\\-13.47656\\\\78.68081\\\\313.01\\\\-15.82031\\\\79.16585\\\\313.01\\\\-18.16406\\\\80.60848\\\\313.01\\\\-20.50781\\\\81.54504\\\\313.01\\\\-22.85156\\\\82.93452\\\\313.01\\\\-25.19531\\\\83.69951\\\\313.01\\\\-27.53906\\\\85.48667\\\\313.01\\\\-29.88281\\\\86.58486\\\\313.01\\\\-32.22656\\\\88.2459\\\\313.01\\\\-34.57031\\\\90.18356\\\\313.01\\\\-36.84147\\\\91.74844\\\\313.01\\\\-39.25781\\\\93.7097\\\\313.01\\\\-41.60156\\\\95.73894\\\\313.01\\\\-46.90146\\\\101.1234\\\\313.01\\\\-48.62366\\\\103.4672\\\\313.01\\\\-52.24294\\\\108.1547\\\\313.01\\\\-53.89533\\\\110.4984\\\\313.01\\\\-55.24722\\\\112.8422\\\\313.01\\\\-56.79365\\\\115.1859\\\\313.01\\\\-57.7046\\\\117.5297\\\\313.01\\\\-59.10275\\\\119.8734\\\\313.01\\\\-60.1423\\\\122.2172\\\\313.01\\\\-61.27319\\\\124.5609\\\\313.01\\\\-61.73931\\\\126.9047\\\\313.01\\\\-62.82649\\\\129.2484\\\\313.01\\\\-63.74772\\\\131.5922\\\\313.01\\\\-64.64844\\\\136.2797\\\\313.01\\\\-65.49149\\\\138.6234\\\\313.01\\\\-66.03151\\\\143.3109\\\\313.01\\\\-66.55173\\\\150.3422\\\\313.01\\\\-66.7085\\\\155.0297\\\\313.01\\\\-66.5332\\\\159.7172\\\\313.01\\\\-66.37591\\\\162.0609\\\\313.01\\\\-65.93555\\\\166.7484\\\\313.01\\\\-65.66541\\\\169.0922\\\\313.01\\\\-65.13599\\\\171.4359\\\\313.01\\\\-64.35547\\\\173.7797\\\\313.01\\\\-63.97324\\\\176.1234\\\\313.01\\\\-63.31245\\\\178.4672\\\\313.01\\\\-62.13423\\\\180.8109\\\\313.01\\\\-60.7784\\\\185.4984\\\\313.01\\\\-59.36625\\\\187.8422\\\\313.01\\\\-58.29068\\\\190.1859\\\\313.01\\\\-56.97235\\\\192.5297\\\\313.01\\\\-55.9882\\\\194.8734\\\\313.01\\\\-55.66406\\\\195.2305\\\\313.01\\\\-53.32031\\\\198.6979\\\\313.01\\\\-52.65765\\\\199.5609\\\\313.01\\\\-51.33394\\\\201.9047\\\\313.01\\\\-48.63281\\\\205.1581\\\\313.01\\\\-47.54197\\\\206.5922\\\\313.01\\\\-45.18493\\\\208.9359\\\\313.01\\\\-43.00636\\\\211.2797\\\\313.01\\\\-39.25781\\\\214.8799\\\\313.01\\\\-34.57031\\\\218.8154\\\\313.01\\\\-32.22656\\\\220.1045\\\\313.01\\\\-31.54811\\\\220.6547\\\\313.01\\\\-28.24903\\\\222.9984\\\\313.01\\\\-27.53906\\\\223.618\\\\313.01\\\\-25.19531\\\\224.5319\\\\313.01\\\\-22.85156\\\\226.0067\\\\313.01\\\\-20.50781\\\\227.0116\\\\313.01\\\\-18.16406\\\\228.5043\\\\313.01\\\\-15.82031\\\\229.173\\\\313.01\\\\-14.98326\\\\230.0297\\\\313.01\\\\-15.82031\\\\231.3494\\\\313.01\\\\-16.91331\\\\232.3734\\\\313.01\\\\-18.16406\\\\233.1042\\\\313.01\\\\-22.85156\\\\233.131\\\\313.01\\\\-29.88281\\\\233.1132\\\\313.01\\\\-36.91406\\\\233.1483\\\\313.01\\\\-46.28906\\\\233.1397\\\\313.01\\\\-50.97656\\\\233.1818\\\\313.01\\\\-62.69531\\\\233.1652\\\\313.01\\\\-65.03906\\\\232.5396\\\\313.01\\\\-67.38281\\\\232.8735\\\\313.01\\\\-72.07031\\\\232.9942\\\\313.01\\\\-81.44531\\\\233.0343\\\\313.01\\\\-86.13281\\\\233.0283\\\\313.01\\\\-95.50781\\\\233.0951\\\\313.01\\\\-97.85156\\\\233.3584\\\\313.01\\\\-100.1953\\\\233.9981\\\\313.01\\\\-102.5391\\\\234.0754\\\\313.01\\\\-107.2266\\\\233.9926\\\\313.01\\\\-109.5703\\\\234.0754\\\\313.01\\\\-114.2578\\\\234.0284\\\\313.01\\\\-123.6328\\\\234.0805\\\\313.01\\\\-130.6641\\\\234.0855\\\\313.01\\\\-135.3516\\\\234.1407\\\\313.01\\\\-137.6953\\\\234.1127\\\\313.01\\\\-142.3828\\\\234.1889\\\\313.01\\\\-147.0703\\\\234.1038\\\\313.01\\\\-154.1016\\\\234.0513\\\\313.01\\\\-158.7891\\\\234.0691\\\\313.01\\\\-165.8203\\\\234.0211\\\\313.01\\\\-168.1641\\\\234.1579\\\\313.01\\\\-172.8516\\\\234.2175\\\\313.01\\\\-175.1953\\\\234.1894\\\\313.01\\\\-184.5703\\\\234.2686\\\\313.01\\\\-189.2578\\\\234.2252\\\\313.01\\\\-193.9453\\\\234.2289\\\\313.01\\\\-200.9766\\\\234.2902\\\\313.01\\\\-205.6641\\\\234.1783\\\\313.01\\\\-210.3516\\\\234.2822\\\\313.01\\\\-215.0391\\\\234.3418\\\\313.01\\\\-222.0703\\\\234.3731\\\\313.01\\\\-226.7578\\\\234.3601\\\\313.01\\\\-233.7891\\\\234.1731\\\\313.01\\\\-238.4766\\\\234.2088\\\\313.01\\\\-243.1641\\\\234.1523\\\\313.01\\\\-247.8516\\\\233.8669\\\\313.01\\\\-250.1953\\\\233.9436\\\\313.01\\\\-254.8828\\\\234.2296\\\\313.01\\\\-257.2266\\\\234.63\\\\313.01\\\\-259.5703\\\\235.982\\\\313.01\\\\-260.9235\\\\237.0609\\\\313.01\\\\-262.7961\\\\239.4047\\\\313.01\\\\-262.9268\\\\241.7484\\\\313.01\\\\-262.2656\\\\244.0922\\\\313.01\\\\-261.032\\\\246.4359\\\\313.01\\\\-259.6734\\\\248.7797\\\\313.01\\\\-257.5789\\\\251.1234\\\\313.01\\\\-255.7048\\\\253.4672\\\\313.01\\\\-252.5391\\\\256.6491\\\\313.01\\\\-250.1953\\\\258.9388\\\\313.01\\\\-247.8516\\\\261.453\\\\313.01\\\\-245.5078\\\\263.6436\\\\313.01\\\\-244.1278\\\\265.1859\\\\313.01\\\\-241.655\\\\267.5297\\\\313.01\\\\-239.4557\\\\269.8734\\\\313.01\\\\-233.7891\\\\275.4082\\\\313.01\\\\-231.4453\\\\277.8406\\\\313.01\\\\-229.1016\\\\280.0036\\\\313.01\\\\-226.7578\\\\282.5503\\\\313.01\\\\-225.1923\\\\283.9359\\\\313.01\\\\-222.0703\\\\287.2287\\\\313.01\\\\-220.5585\\\\288.6234\\\\313.01\\\\-218.3552\\\\290.9672\\\\313.01\\\\-217.3828\\\\291.7043\\\\313.01\\\\-214.921\\\\293.3109\\\\313.01\\\\-212.6953\\\\294.6401\\\\313.01\\\\-210.3516\\\\295.3416\\\\313.01\\\\-208.0078\\\\296.4592\\\\313.01\\\\-205.6641\\\\296.8858\\\\313.01\\\\-203.3203\\\\297.1639\\\\313.01\\\\-196.2891\\\\297.1254\\\\313.01\\\\-193.9453\\\\297.0099\\\\313.01\\\\-177.5391\\\\296.8925\\\\313.01\\\\-165.8203\\\\296.8423\\\\313.01\\\\-154.1016\\\\296.851\\\\313.01\\\\-147.0703\\\\296.8843\\\\313.01\\\\-144.7266\\\\296.8517\\\\313.01\\\\-137.6953\\\\296.894\\\\313.01\\\\-125.9766\\\\296.9214\\\\313.01\\\\-116.6016\\\\296.8896\\\\313.01\\\\-111.9141\\\\296.8447\\\\313.01\\\\-95.50781\\\\296.8738\\\\313.01\\\\-93.16406\\\\296.9016\\\\313.01\\\\-83.78906\\\\296.9028\\\\313.01\\\\-74.41406\\\\296.9514\\\\313.01\\\\-65.03906\\\\296.9644\\\\313.01\\\\-60.35156\\\\296.916\\\\313.01\\\\-58.00781\\\\296.9377\\\\313.01\\\\-55.66406\\\\297.3491\\\\313.01\\\\-53.32031\\\\296.9377\\\\313.01\\\\-50.97656\\\\296.9285\\\\313.01\\\\-48.63281\\\\297.1917\\\\313.01\\\\-46.28906\\\\297.1807\\\\313.01\\\\-43.94531\\\\297.2621\\\\313.01\\\\-41.60156\\\\297.2199\\\\313.01\\\\-39.25781\\\\297.3984\\\\313.01\\\\-36.91406\\\\297.402\\\\313.01\\\\-34.57031\\\\297.0362\\\\313.01\\\\-32.22656\\\\297.4125\\\\313.01\\\\-29.88281\\\\297.4125\\\\313.01\\\\-27.53906\\\\297.2416\\\\313.01\\\\-25.19531\\\\297.4125\\\\313.01\\\\-22.85156\\\\297.3879\\\\313.01\\\\-20.50781\\\\297.0121\\\\313.01\\\\-18.16406\\\\297.3299\\\\313.01\\\\-15.82031\\\\297.1454\\\\313.01\\\\-11.13281\\\\297.2468\\\\313.01\\\\-8.789063\\\\296.9557\\\\313.01\\\\-6.445313\\\\297.4125\\\\313.01\\\\-4.101563\\\\296.9731\\\\313.01\\\\2.929688\\\\296.9191\\\\313.01\\\\5.273438\\\\297.0809\\\\313.01\\\\7.617188\\\\296.8877\\\\313.01\\\\12.30469\\\\296.8055\\\\313.01\\\\16.99219\\\\296.837\\\\313.01\\\\21.67969\\\\296.8058\\\\313.01\\\\31.05469\\\\296.8159\\\\313.01\\\\35.74219\\\\296.7436\\\\313.01\\\\40.42969\\\\296.7743\\\\313.01\\\\47.46094\\\\296.734\\\\313.01\\\\52.14844\\\\296.6724\\\\313.01\\\\61.52344\\\\296.6635\\\\313.01\\\\66.21094\\\\296.5942\\\\313.01\\\\73.24219\\\\296.5901\\\\313.01\\\\80.27344\\\\296.5284\\\\313.01\\\\82.61719\\\\296.5569\\\\313.01\\\\87.30469\\\\296.4947\\\\313.01\\\\91.99219\\\\296.5134\\\\313.01\\\\96.67969\\\\296.473\\\\313.01\\\\115.4297\\\\296.3986\\\\313.01\\\\134.1797\\\\296.2873\\\\313.01\\\\136.5234\\\\295.9046\\\\313.01\\\\138.8672\\\\295.9102\\\\313.01\\\\141.2109\\\\296.0271\\\\313.01\\\\143.5547\\\\295.8654\\\\313.01\\\\148.2422\\\\295.864\\\\313.01\\\\159.9609\\\\295.7849\\\\313.01\\\\164.6484\\\\295.6819\\\\313.01\\\\169.3359\\\\295.6998\\\\313.01\\\\178.7109\\\\295.6638\\\\313.01\\\\188.0859\\\\295.5742\\\\313.01\\\\192.7734\\\\295.5916\\\\313.01\\\\197.4609\\\\295.8172\\\\313.01\\\\199.8047\\\\295.8012\\\\313.01\\\\202.1484\\\\295.6998\\\\313.01\\\\204.4922\\\\295.4287\\\\313.01\\\\206.8359\\\\294.8307\\\\313.01\\\\209.1797\\\\294.3768\\\\313.01\\\\211.5234\\\\292.4688\\\\313.01\\\\213.8672\\\\291.1765\\\\313.01\\\\216.2109\\\\289.627\\\\313.01\\\\217.2822\\\\288.6234\\\\313.01\\\\219.371\\\\286.2797\\\\313.01\\\\221.7773\\\\283.9359\\\\313.01\\\\225.5859\\\\279.9482\\\\313.01\\\\228.6426\\\\276.9047\\\\313.01\\\\230.2734\\\\275.138\\\\313.01\\\\233.135\\\\272.2172\\\\313.01\\\\235.3423\\\\269.8734\\\\313.01\\\\237.73\\\\267.5297\\\\313.01\\\\239.6484\\\\265.4964\\\\313.01\\\\246.9323\\\\258.1547\\\\313.01\\\\251.4581\\\\253.4672\\\\313.01\\\\256.0547\\\\248.1981\\\\313.01\\\\257.454\\\\246.4359\\\\313.01\\\\259.6265\\\\244.0922\\\\313.01\\\\261.2413\\\\239.4047\\\\313.01\\\\260.4736\\\\237.0609\\\\313.01\\\\259.4369\\\\234.7172\\\\313.01\\\\258.3984\\\\233.723\\\\313.01\\\\256.0547\\\\233.1051\\\\313.01\\\\253.7109\\\\232.7947\\\\313.01\\\\249.0234\\\\232.8704\\\\313.01\\\\244.3359\\\\232.8072\\\\313.01\\\\239.6484\\\\233.0207\\\\313.01\\\\237.3047\\\\233.0007\\\\313.01\\\\232.6172\\\\233.0726\\\\313.01\\\\227.9297\\\\233.0305\\\\313.01\\\\216.2109\\\\233.0632\\\\313.01\\\\206.8359\\\\233.0207\\\\313.01\\\\204.4922\\\\232.7456\\\\313.01\\\\202.1484\\\\232.6745\\\\313.01\\\\197.4609\\\\232.7322\\\\313.01\\\\192.7734\\\\232.7456\\\\313.01\\\\188.0859\\\\232.7048\\\\313.01\\\\178.7109\\\\232.7588\\\\313.01\\\\174.0234\\\\232.7322\\\\313.01\\\\166.9922\\\\232.7456\\\\313.01\\\\162.3047\\\\232.7848\\\\313.01\\\\157.6172\\\\232.7746\\\\313.01\\\\148.2422\\\\232.8003\\\\313.01\\\\143.5547\\\\232.7746\\\\313.01\\\\141.2109\\\\232.6908\\\\313.01\\\\134.1797\\\\232.6329\\\\313.01\\\\131.8359\\\\232.0401\\\\313.01\\\\129.4922\\\\231.6858\\\\313.01\\\\127.1484\\\\231.6664\\\\313.01\\\\120.1172\\\\231.7875\\\\313.01\\\\117.7734\\\\232.6329\\\\313.01\\\\110.7422\\\\232.6623\\\\313.01\\\\108.3984\\\\231.8903\\\\313.01\\\\106.0547\\\\231.6022\\\\313.01\\\\103.7109\\\\231.5567\\\\313.01\\\\102.832\\\\232.3734\\\\313.01\\\\101.3672\\\\233.1221\\\\313.01\\\\94.33594\\\\233.1042\\\\313.01\\\\87.30469\\\\233.1397\\\\313.01\\\\82.61719\\\\233.1132\\\\313.01\\\\77.92969\\\\233.1397\\\\313.01\\\\59.17969\\\\233.1568\\\\313.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848978606900001.507522632828\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"374\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"14\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-18.16406\\\\233.1132\\\\316.01\\\\-34.57031\\\\233.1132\\\\316.01\\\\-39.25781\\\\233.1568\\\\316.01\\\\-41.60156\\\\233.131\\\\316.01\\\\-50.97656\\\\233.1818\\\\316.01\\\\-55.66406\\\\233.1652\\\\316.01\\\\-60.35156\\\\233.2393\\\\316.01\\\\-62.69531\\\\233.1818\\\\316.01\\\\-65.03906\\\\232.7048\\\\316.01\\\\-67.38281\\\\232.8967\\\\316.01\\\\-72.07031\\\\233.0145\\\\316.01\\\\-81.44531\\\\233.0479\\\\316.01\\\\-86.13281\\\\233.0382\\\\316.01\\\\-95.50781\\\\233.0951\\\\316.01\\\\-97.85156\\\\233.3265\\\\316.01\\\\-100.1953\\\\233.9981\\\\316.01\\\\-102.5391\\\\234.0805\\\\316.01\\\\-107.2266\\\\234.0231\\\\316.01\\\\-111.9141\\\\234.0891\\\\316.01\\\\-114.2578\\\\234.0411\\\\316.01\\\\-121.2891\\\\234.054\\\\316.01\\\\-123.6328\\\\234.1127\\\\316.01\\\\-130.6641\\\\234.0672\\\\316.01\\\\-133.0078\\\\234.1127\\\\316.01\\\\-142.3828\\\\234.1741\\\\316.01\\\\-147.0703\\\\234.1174\\\\316.01\\\\-151.7578\\\\234.1127\\\\316.01\\\\-161.1328\\\\234.0263\\\\316.01\\\\-165.8203\\\\234.0387\\\\316.01\\\\-168.1641\\\\234.1894\\\\316.01\\\\-170.5078\\\\234.2503\\\\316.01\\\\-175.1953\\\\234.2073\\\\316.01\\\\-186.9141\\\\234.2539\\\\316.01\\\\-189.2578\\\\234.2112\\\\316.01\\\\-193.9453\\\\234.2289\\\\316.01\\\\-200.9766\\\\234.3204\\\\316.01\\\\-205.6641\\\\234.1916\\\\316.01\\\\-212.6953\\\\234.3573\\\\316.01\\\\-222.0703\\\\234.4053\\\\316.01\\\\-226.7578\\\\234.3731\\\\316.01\\\\-233.7891\\\\234.2125\\\\316.01\\\\-238.4766\\\\234.226\\\\316.01\\\\-243.1641\\\\234.1068\\\\316.01\\\\-247.8516\\\\233.8141\\\\316.01\\\\-250.1953\\\\233.8749\\\\316.01\\\\-254.8828\\\\234.2268\\\\316.01\\\\-257.2266\\\\234.5565\\\\316.01\\\\-259.5703\\\\235.9516\\\\316.01\\\\-260.9418\\\\237.0609\\\\316.01\\\\-262.8647\\\\239.4047\\\\316.01\\\\-263.0318\\\\241.7484\\\\316.01\\\\-262.4791\\\\244.0922\\\\316.01\\\\-261.0516\\\\246.4359\\\\316.01\\\\-259.5703\\\\248.5972\\\\316.01\\\\-257.2266\\\\251.3685\\\\316.01\\\\-255.6122\\\\253.4672\\\\316.01\\\\-252.5391\\\\256.6377\\\\316.01\\\\-250.1953\\\\258.9164\\\\316.01\\\\-247.8516\\\\261.4313\\\\316.01\\\\-245.5078\\\\263.6035\\\\316.01\\\\-244.1\\\\265.1859\\\\316.01\\\\-241.649\\\\267.5297\\\\316.01\\\\-239.4557\\\\269.8734\\\\316.01\\\\-233.7891\\\\275.4139\\\\316.01\\\\-231.4453\\\\277.8628\\\\316.01\\\\-229.1016\\\\280.0036\\\\316.01\\\\-226.7578\\\\282.5439\\\\316.01\\\\-225.1864\\\\283.9359\\\\316.01\\\\-222.0703\\\\287.2355\\\\316.01\\\\-220.5764\\\\288.6234\\\\316.01\\\\-218.3692\\\\290.9672\\\\316.01\\\\-214.9922\\\\293.3109\\\\316.01\\\\-212.6953\\\\294.6526\\\\316.01\\\\-210.3516\\\\295.3416\\\\316.01\\\\-208.0078\\\\296.4756\\\\316.01\\\\-205.6641\\\\296.892\\\\316.01\\\\-203.3203\\\\297.1563\\\\316.01\\\\-196.2891\\\\297.1297\\\\316.01\\\\-193.9453\\\\297.0023\\\\316.01\\\\-184.5703\\\\296.9636\\\\316.01\\\\-177.5391\\\\296.8925\\\\316.01\\\\-172.8516\\\\296.9032\\\\316.01\\\\-168.1641\\\\296.8568\\\\316.01\\\\-163.4766\\\\296.8895\\\\316.01\\\\-156.4453\\\\296.8506\\\\316.01\\\\-147.0703\\\\296.8921\\\\316.01\\\\-144.7266\\\\296.8517\\\\316.01\\\\-125.9766\\\\296.9402\\\\316.01\\\\-121.2891\\\\296.8887\\\\316.01\\\\-118.9453\\\\296.9077\\\\316.01\\\\-111.9141\\\\296.8723\\\\316.01\\\\-102.5391\\\\296.9016\\\\316.01\\\\-95.50781\\\\296.8837\\\\316.01\\\\-88.47656\\\\296.9322\\\\316.01\\\\-83.78906\\\\296.9234\\\\316.01\\\\-67.38281\\\\296.9841\\\\316.01\\\\-65.03906\\\\297.1698\\\\316.01\\\\-62.69531\\\\296.9377\\\\316.01\\\\-58.00781\\\\296.9377\\\\316.01\\\\-55.66406\\\\297.2922\\\\316.01\\\\-53.32031\\\\297.2468\\\\316.01\\\\-50.97656\\\\296.9396\\\\316.01\\\\-48.63281\\\\297.1798\\\\316.01\\\\-46.28906\\\\296.9579\\\\316.01\\\\-43.94531\\\\297.1687\\\\316.01\\\\-41.60156\\\\296.9285\\\\316.01\\\\-39.25781\\\\297.2089\\\\316.01\\\\-36.91406\\\\296.9303\\\\316.01\\\\-34.57031\\\\296.9396\\\\316.01\\\\-32.22656\\\\297.1373\\\\316.01\\\\-29.88281\\\\297.4229\\\\316.01\\\\-27.53906\\\\296.9396\\\\316.01\\\\-25.19531\\\\296.9954\\\\316.01\\\\-22.85156\\\\297.3383\\\\316.01\\\\-20.50781\\\\296.9358\\\\316.01\\\\-18.16406\\\\296.9467\\\\316.01\\\\-15.82031\\\\297.1454\\\\316.01\\\\-13.47656\\\\297.0061\\\\316.01\\\\-11.13281\\\\297.2089\\\\316.01\\\\-8.789063\\\\296.9067\\\\316.01\\\\-6.445313\\\\297.1687\\\\316.01\\\\-4.101563\\\\296.9358\\\\316.01\\\\-1.757813\\\\297.2875\\\\316.01\\\\0.5859375\\\\296.9081\\\\316.01\\\\7.617188\\\\296.8985\\\\316.01\\\\12.30469\\\\296.8161\\\\316.01\\\\14.64844\\\\296.8372\\\\316.01\\\\19.33594\\\\296.7743\\\\316.01\\\\21.67969\\\\296.8055\\\\316.01\\\\31.05469\\\\296.7843\\\\316.01\\\\35.74219\\\\296.7247\\\\316.01\\\\40.42969\\\\296.7743\\\\316.01\\\\42.77344\\\\296.7154\\\\316.01\\\\45.11719\\\\296.7546\\\\316.01\\\\49.80469\\\\296.6839\\\\316.01\\\\63.86719\\\\296.6346\\\\316.01\\\\66.21094\\\\296.5862\\\\316.01\\\\75.58594\\\\296.5696\\\\316.01\\\\77.92969\\\\296.5208\\\\316.01\\\\82.61719\\\\296.549\\\\316.01\\\\89.64844\\\\296.4947\\\\316.01\\\\94.33594\\\\296.5005\\\\316.01\\\\96.67969\\\\296.4597\\\\316.01\\\\108.3984\\\\296.4393\\\\316.01\\\\113.0859\\\\296.3846\\\\316.01\\\\120.1172\\\\296.3782\\\\316.01\\\\127.1484\\\\296.308\\\\316.01\\\\134.1797\\\\296.2929\\\\316.01\\\\136.5234\\\\295.9009\\\\316.01\\\\138.8672\\\\295.9433\\\\316.01\\\\148.2422\\\\295.833\\\\316.01\\\\150.5859\\\\295.864\\\\316.01\\\\152.9297\\\\295.8012\\\\316.01\\\\157.6172\\\\295.8012\\\\316.01\\\\166.9922\\\\295.6638\\\\316.01\\\\174.0234\\\\295.6998\\\\316.01\\\\183.3984\\\\295.6093\\\\316.01\\\\192.7734\\\\295.6093\\\\316.01\\\\197.4609\\\\295.8012\\\\316.01\\\\202.1484\\\\295.6998\\\\316.01\\\\204.4922\\\\295.4137\\\\316.01\\\\206.8359\\\\294.8185\\\\316.01\\\\209.1797\\\\294.3768\\\\316.01\\\\211.5234\\\\292.4764\\\\316.01\\\\213.8672\\\\291.1916\\\\316.01\\\\216.2109\\\\289.6328\\\\316.01\\\\217.2822\\\\288.6234\\\\316.01\\\\219.3814\\\\286.2797\\\\316.01\\\\221.8029\\\\283.9359\\\\316.01\\\\225.5859\\\\279.9599\\\\316.01\\\\227.9297\\\\277.6382\\\\316.01\\\\230.2734\\\\275.1772\\\\316.01\\\\233.2298\\\\272.2172\\\\316.01\\\\234.9609\\\\270.3593\\\\316.01\\\\239.6484\\\\265.57\\\\316.01\\\\246.9653\\\\258.1547\\\\316.01\\\\251.4385\\\\253.4672\\\\316.01\\\\256.0547\\\\248.2196\\\\316.01\\\\257.4986\\\\246.4359\\\\316.01\\\\259.7266\\\\244.0922\\\\316.01\\\\260.7422\\\\241.4555\\\\316.01\\\\261.4258\\\\239.4047\\\\316.01\\\\260.7422\\\\237.3192\\\\316.01\\\\259.477\\\\234.7172\\\\316.01\\\\258.3984\\\\233.6994\\\\316.01\\\\256.0547\\\\233.0592\\\\316.01\\\\253.7109\\\\232.7025\\\\316.01\\\\251.3672\\\\232.81\\\\316.01\\\\246.6797\\\\232.7563\\\\316.01\\\\241.9922\\\\232.9906\\\\316.01\\\\237.3047\\\\233.0007\\\\316.01\\\\232.6172\\\\233.0632\\\\316.01\\\\227.9297\\\\233.0305\\\\316.01\\\\211.5234\\\\233.0537\\\\316.01\\\\206.8359\\\\233.0245\\\\316.01\\\\204.4922\\\\232.7588\\\\316.01\\\\202.1484\\\\232.6623\\\\316.01\\\\195.1172\\\\232.7186\\\\316.01\\\\188.0859\\\\232.7186\\\\316.01\\\\183.3984\\\\232.7719\\\\316.01\\\\181.0547\\\\232.7322\\\\316.01\\\\169.3359\\\\232.7588\\\\316.01\\\\166.9922\\\\232.7322\\\\316.01\\\\157.6172\\\\232.7875\\\\316.01\\\\152.9297\\\\232.7456\\\\316.01\\\\145.8984\\\\232.7875\\\\316.01\\\\141.2109\\\\232.6623\\\\316.01\\\\136.5234\\\\232.6329\\\\316.01\\\\134.1797\\\\232.0805\\\\316.01\\\\131.8359\\\\231.7245\\\\316.01\\\\127.1484\\\\231.6801\\\\316.01\\\\122.4609\\\\231.7572\\\\316.01\\\\120.1172\\\\232.5873\\\\316.01\\\\115.4297\\\\232.6908\\\\316.01\\\\110.7422\\\\232.6623\\\\316.01\\\\108.3984\\\\231.8903\\\\316.01\\\\106.0547\\\\231.6087\\\\316.01\\\\103.7109\\\\231.5483\\\\316.01\\\\102.8224\\\\232.3734\\\\316.01\\\\101.3672\\\\233.1132\\\\316.01\\\\99.02344\\\\233.1397\\\\316.01\\\\80.27344\\\\233.1132\\\\316.01\\\\68.55469\\\\233.1568\\\\316.01\\\\52.14844\\\\233.1483\\\\316.01\\\\45.11719\\\\233.1132\\\\316.01\\\\44.13628\\\\232.3734\\\\316.01\\\\42.77344\\\\231.0686\\\\316.01\\\\42.00247\\\\230.0297\\\\316.01\\\\42.77344\\\\229.1926\\\\316.01\\\\45.11719\\\\228.465\\\\316.01\\\\47.46094\\\\226.9633\\\\316.01\\\\49.80469\\\\225.8906\\\\316.01\\\\52.14844\\\\224.4715\\\\316.01\\\\54.49219\\\\223.5304\\\\316.01\\\\55.10944\\\\222.9984\\\\316.01\\\\59.17969\\\\220.0478\\\\316.01\\\\61.52344\\\\218.6274\\\\316.01\\\\64.72018\\\\215.9672\\\\316.01\\\\66.21094\\\\214.8258\\\\316.01\\\\70.89844\\\\210.3064\\\\316.01\\\\72.20967\\\\208.9359\\\\316.01\\\\76.32568\\\\204.2484\\\\316.01\\\\77.88355\\\\201.9047\\\\316.01\\\\81.18286\\\\197.2172\\\\316.01\\\\82.483\\\\194.8734\\\\316.01\\\\83.97971\\\\192.5297\\\\316.01\\\\85.15485\\\\190.1859\\\\316.01\\\\86.11506\\\\187.8422\\\\316.01\\\\88.44123\\\\183.1547\\\\316.01\\\\88.85645\\\\180.8109\\\\316.01\\\\90.57047\\\\176.1234\\\\316.01\\\\91.12964\\\\173.7797\\\\316.01\\\\91.82967\\\\171.4359\\\\316.01\\\\92.67867\\\\169.0922\\\\316.01\\\\93.02273\\\\166.7484\\\\316.01\\\\93.23618\\\\162.0609\\\\316.01\\\\93.4022\\\\157.3734\\\\316.01\\\\93.45381\\\\152.6859\\\\316.01\\\\93.30592\\\\147.9984\\\\316.01\\\\93.08162\\\\143.3109\\\\316.01\\\\92.91119\\\\140.9672\\\\316.01\\\\92.40625\\\\138.6234\\\\316.01\\\\91.51611\\\\136.2797\\\\316.01\\\\90.39767\\\\131.5922\\\\316.01\\\\89.42243\\\\129.2484\\\\316.01\\\\88.71695\\\\126.9047\\\\316.01\\\\88.25335\\\\124.5609\\\\316.01\\\\86.80245\\\\122.2172\\\\316.01\\\\85.8848\\\\119.8734\\\\316.01\\\\84.58316\\\\117.5297\\\\316.01\\\\83.66635\\\\115.1859\\\\316.01\\\\81.8702\\\\112.8422\\\\316.01\\\\80.80811\\\\110.4984\\\\316.01\\\\79.08266\\\\108.1547\\\\316.01\\\\77.10529\\\\105.8109\\\\316.01\\\\75.58594\\\\103.5963\\\\316.01\\\\73.49802\\\\101.1234\\\\316.01\\\\71.40904\\\\98.77969\\\\316.01\\\\68.55469\\\\95.92896\\\\316.01\\\\63.67357\\\\91.74844\\\\316.01\\\\61.52344\\\\90.32737\\\\316.01\\\\59.17969\\\\88.27599\\\\316.01\\\\56.83594\\\\86.7886\\\\316.01\\\\54.49219\\\\85.58972\\\\316.01\\\\52.14844\\\\83.79642\\\\316.01\\\\49.80469\\\\83.02673\\\\316.01\\\\47.46094\\\\81.63853\\\\316.01\\\\45.11719\\\\80.76684\\\\316.01\\\\42.77344\\\\79.30589\\\\316.01\\\\38.08594\\\\78.27902\\\\316.01\\\\35.74219\\\\77.25775\\\\316.01\\\\33.39844\\\\76.59698\\\\316.01\\\\31.05469\\\\76.1613\\\\316.01\\\\28.71094\\\\75.56659\\\\316.01\\\\26.36719\\\\74.74911\\\\316.01\\\\24.02344\\\\74.44027\\\\316.01\\\\14.64844\\\\74.10455\\\\316.01\\\\9.960938\\\\74.14651\\\\316.01\\\\5.273438\\\\74.273\\\\316.01\\\\2.929688\\\\74.39614\\\\316.01\\\\0.5859375\\\\74.68565\\\\316.01\\\\-1.757813\\\\75.2776\\\\316.01\\\\-4.101563\\\\75.97835\\\\316.01\\\\-6.445313\\\\76.42603\\\\316.01\\\\-8.789063\\\\77.04977\\\\316.01\\\\-11.13281\\\\78.0173\\\\316.01\\\\-13.47656\\\\78.67566\\\\316.01\\\\-15.82031\\\\79.13776\\\\316.01\\\\-18.16406\\\\80.56435\\\\316.01\\\\-20.50781\\\\81.50463\\\\316.01\\\\-22.85156\\\\82.9015\\\\316.01\\\\-25.19531\\\\83.68569\\\\316.01\\\\-27.53906\\\\85.50075\\\\316.01\\\\-29.88281\\\\86.57327\\\\316.01\\\\-32.22656\\\\88.24621\\\\316.01\\\\-34.57031\\\\90.17396\\\\316.01\\\\-36.86175\\\\91.74844\\\\316.01\\\\-39.25781\\\\93.66087\\\\316.01\\\\-41.60156\\\\95.69225\\\\316.01\\\\-46.92759\\\\101.1234\\\\316.01\\\\-50.43298\\\\105.8109\\\\316.01\\\\-52.27513\\\\108.1547\\\\316.01\\\\-53.92769\\\\110.4984\\\\316.01\\\\-55.28938\\\\112.8422\\\\316.01\\\\-56.8119\\\\115.1859\\\\316.01\\\\-57.76507\\\\117.5297\\\\316.01\\\\-59.14436\\\\119.8734\\\\316.01\\\\-61.2854\\\\124.5609\\\\316.01\\\\-61.77901\\\\126.9047\\\\316.01\\\\-62.87364\\\\129.2484\\\\316.01\\\\-63.78268\\\\131.5922\\\\316.01\\\\-64.18945\\\\133.9359\\\\316.01\\\\-64.71442\\\\136.2797\\\\316.01\\\\-65.51514\\\\138.6234\\\\316.01\\\\-65.81827\\\\140.9672\\\\316.01\\\\-66.45339\\\\147.9984\\\\316.01\\\\-66.7085\\\\152.6859\\\\316.01\\\\-66.75646\\\\155.0297\\\\316.01\\\\-66.5637\\\\159.7172\\\\316.01\\\\-66.21094\\\\164.4047\\\\316.01\\\\-65.704\\\\169.0922\\\\316.01\\\\-65.23297\\\\171.4359\\\\316.01\\\\-64.38361\\\\173.7797\\\\316.01\\\\-64.01566\\\\176.1234\\\\316.01\\\\-63.38504\\\\178.4672\\\\316.01\\\\-62.17049\\\\180.8109\\\\316.01\\\\-60.82787\\\\185.4984\\\\316.01\\\\-59.41992\\\\187.8422\\\\316.01\\\\-58.36174\\\\190.1859\\\\316.01\\\\-56.99887\\\\192.5297\\\\316.01\\\\-56.07342\\\\194.8734\\\\316.01\\\\-55.66406\\\\195.3297\\\\316.01\\\\-53.32031\\\\198.7587\\\\316.01\\\\-52.68821\\\\199.5609\\\\316.01\\\\-51.4049\\\\201.9047\\\\316.01\\\\-50.97656\\\\202.358\\\\316.01\\\\-47.5612\\\\206.5922\\\\316.01\\\\-45.21313\\\\208.9359\\\\316.01\\\\-43.05138\\\\211.2797\\\\316.01\\\\-39.25781\\\\214.893\\\\316.01\\\\-35.15625\\\\218.3109\\\\316.01\\\\-34.57031\\\\218.8701\\\\316.01\\\\-32.22656\\\\220.1266\\\\316.01\\\\-31.58335\\\\220.6547\\\\316.01\\\\-28.28872\\\\222.9984\\\\316.01\\\\-27.53906\\\\223.6396\\\\316.01\\\\-25.19531\\\\224.5407\\\\316.01\\\\-22.85156\\\\226.027\\\\316.01\\\\-20.50781\\\\227.0401\\\\316.01\\\\-18.16406\\\\228.5211\\\\316.01\\\\-15.82031\\\\229.1818\\\\316.01\\\\-14.99192\\\\230.0297\\\\316.01\\\\-15.82031\\\\231.3521\\\\316.01\\\\-16.89078\\\\232.3734\\\\316.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851016723500001.512636853846\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"371\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"15\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n";
-const char* k_rtStruct_json04 =
-"                        \"Value\" : \"-18.16406\\\\233.1221\\\\319.01\\\\-32.22656\\\\233.131\\\\319.01\\\\-39.25781\\\\233.1568\\\\319.01\\\\-43.94531\\\\233.1397\\\\319.01\\\\-53.32031\\\\233.19\\\\319.01\\\\-58.00781\\\\233.1818\\\\319.01\\\\-60.35156\\\\233.5756\\\\319.01\\\\-62.69531\\\\233.19\\\\319.01\\\\-65.03906\\\\232.9081\\\\319.01\\\\-67.38281\\\\232.8852\\\\319.01\\\\-72.07031\\\\233.0044\\\\319.01\\\\-76.75781\\\\233.0343\\\\319.01\\\\-83.78906\\\\233.0343\\\\319.01\\\\-88.47656\\\\233.0859\\\\319.01\\\\-93.16406\\\\233.0859\\\\319.01\\\\-97.85156\\\\233.1569\\\\319.01\\\\-100.1953\\\\233.8986\\\\319.01\\\\-102.5391\\\\234.0359\\\\319.01\\\\-107.2266\\\\234.0231\\\\319.01\\\\-109.5703\\\\234.0754\\\\319.01\\\\-118.9453\\\\234.0411\\\\319.01\\\\-128.3203\\\\234.1127\\\\319.01\\\\-130.6641\\\\234.054\\\\319.01\\\\-142.3828\\\\234.1407\\\\319.01\\\\-147.0703\\\\234.0855\\\\319.01\\\\-151.7578\\\\234.1127\\\\319.01\\\\-158.7891\\\\234.0387\\\\319.01\\\\-165.8203\\\\234.0513\\\\319.01\\\\-170.5078\\\\234.2214\\\\319.01\\\\-175.1953\\\\234.1797\\\\319.01\\\\-186.9141\\\\234.2012\\\\319.01\\\\-189.2578\\\\234.1743\\\\319.01\\\\-191.6016\\\\234.2431\\\\319.01\\\\-198.6328\\\\234.2326\\\\319.01\\\\-200.9766\\\\234.2902\\\\319.01\\\\-205.6641\\\\234.1916\\\\319.01\\\\-212.6953\\\\234.3084\\\\319.01\\\\-215.0391\\\\234.2967\\\\319.01\\\\-222.0703\\\\234.3891\\\\319.01\\\\-224.4141\\\\234.3115\\\\319.01\\\\-229.1016\\\\234.3573\\\\319.01\\\\-233.7891\\\\234.2125\\\\319.01\\\\-238.4766\\\\234.1954\\\\319.01\\\\-243.1641\\\\234.0555\\\\319.01\\\\-247.8516\\\\233.7286\\\\319.01\\\\-250.1953\\\\233.7565\\\\319.01\\\\-252.5391\\\\233.9759\\\\319.01\\\\-257.2266\\\\234.7266\\\\319.01\\\\-259.5703\\\\235.9456\\\\319.01\\\\-260.9676\\\\237.0609\\\\319.01\\\\-262.9079\\\\239.4047\\\\319.01\\\\-263.0764\\\\241.7484\\\\319.01\\\\-262.579\\\\244.0922\\\\319.01\\\\-261.0551\\\\246.4359\\\\319.01\\\\-259.5703\\\\248.578\\\\319.01\\\\-257.2266\\\\251.3205\\\\319.01\\\\-255.5183\\\\253.4672\\\\319.01\\\\-252.5391\\\\256.6434\\\\319.01\\\\-250.1953\\\\258.9331\\\\319.01\\\\-247.8516\\\\261.4281\\\\319.01\\\\-245.5078\\\\263.6319\\\\319.01\\\\-244.1062\\\\265.1859\\\\319.01\\\\-241.6212\\\\267.5297\\\\319.01\\\\-239.4403\\\\269.8734\\\\319.01\\\\-233.7891\\\\275.424\\\\319.01\\\\-231.4453\\\\277.8534\\\\319.01\\\\-229.1016\\\\280.0498\\\\319.01\\\\-226.7578\\\\282.5503\\\\319.01\\\\-225.1923\\\\283.9359\\\\319.01\\\\-222.0703\\\\287.2521\\\\319.01\\\\-220.5829\\\\288.6234\\\\319.01\\\\-218.3594\\\\290.9672\\\\319.01\\\\-214.9922\\\\293.3109\\\\319.01\\\\-212.6953\\\\294.6526\\\\319.01\\\\-210.3516\\\\295.3282\\\\319.01\\\\-208.0078\\\\296.4917\\\\319.01\\\\-205.6641\\\\296.899\\\\319.01\\\\-203.3203\\\\297.1488\\\\319.01\\\\-196.2891\\\\297.1047\\\\319.01\\\\-193.9453\\\\296.9722\\\\319.01\\\\-184.5703\\\\296.9529\\\\319.01\\\\-177.5391\\\\296.8713\\\\319.01\\\\-163.4766\\\\296.8895\\\\319.01\\\\-144.7266\\\\296.8434\\\\319.01\\\\-135.3516\\\\296.8869\\\\319.01\\\\-133.0078\\\\296.8697\\\\319.01\\\\-116.6016\\\\296.916\\\\319.01\\\\-111.9141\\\\296.8811\\\\319.01\\\\-102.5391\\\\296.8641\\\\319.01\\\\-93.16406\\\\296.8746\\\\319.01\\\\-88.47656\\\\296.913\\\\319.01\\\\-81.44531\\\\296.8949\\\\319.01\\\\-79.10156\\\\296.9358\\\\319.01\\\\-67.38281\\\\296.9535\\\\319.01\\\\-65.03906\\\\296.9872\\\\319.01\\\\-62.69531\\\\296.9267\\\\319.01\\\\-58.00781\\\\296.9175\\\\319.01\\\\-55.66406\\\\297.0091\\\\319.01\\\\-50.97656\\\\296.9267\\\\319.01\\\\-46.28906\\\\296.9447\\\\319.01\\\\-43.94531\\\\297.0627\\\\319.01\\\\-41.60156\\\\296.8867\\\\319.01\\\\-36.91406\\\\296.8877\\\\319.01\\\\-32.22656\\\\296.9557\\\\319.01\\\\-29.88281\\\\297.2089\\\\319.01\\\\-27.53906\\\\296.9067\\\\319.01\\\\-22.85156\\\\296.998\\\\319.01\\\\-20.50781\\\\296.916\\\\319.01\\\\-15.82031\\\\297.0405\\\\319.01\\\\-13.47656\\\\296.9622\\\\319.01\\\\-11.13281\\\\296.9926\\\\319.01\\\\-8.789063\\\\296.9081\\\\319.01\\\\-4.101563\\\\296.9447\\\\319.01\\\\-1.757813\\\\297.0516\\\\319.01\\\\0.5859375\\\\296.8877\\\\319.01\\\\7.617188\\\\296.8888\\\\319.01\\\\16.99219\\\\296.8369\\\\319.01\\\\19.33594\\\\296.7851\\\\319.01\\\\28.71094\\\\296.7743\\\\319.01\\\\35.74219\\\\296.7043\\\\319.01\\\\45.11719\\\\296.7229\\\\319.01\\\\56.83594\\\\296.6313\\\\319.01\\\\63.86719\\\\296.6228\\\\319.01\\\\73.24219\\\\296.5616\\\\319.01\\\\75.58594\\\\296.5859\\\\319.01\\\\77.92969\\\\296.5154\\\\319.01\\\\91.99219\\\\296.5208\\\\319.01\\\\96.67969\\\\296.4597\\\\319.01\\\\101.3672\\\\296.4668\\\\319.01\\\\106.0547\\\\296.4124\\\\319.01\\\\108.3984\\\\296.4393\\\\319.01\\\\117.7734\\\\296.3922\\\\319.01\\\\122.4609\\\\296.391\\\\319.01\\\\127.1484\\\\296.3229\\\\319.01\\\\134.1797\\\\296.2817\\\\319.01\\\\136.5234\\\\295.884\\\\319.01\\\\138.8672\\\\296.2261\\\\319.01\\\\141.2109\\\\296.1486\\\\319.01\\\\145.8984\\\\295.864\\\\319.01\\\\152.9297\\\\295.833\\\\319.01\\\\155.2734\\\\295.7849\\\\319.01\\\\162.3047\\\\295.7849\\\\319.01\\\\164.6484\\\\295.7346\\\\319.01\\\\176.3672\\\\295.6638\\\\319.01\\\\183.3984\\\\295.6454\\\\319.01\\\\188.0859\\\\295.5916\\\\319.01\\\\192.7734\\\\295.6093\\\\319.01\\\\197.4609\\\\295.8172\\\\319.01\\\\202.1484\\\\295.7173\\\\319.01\\\\204.4922\\\\295.3989\\\\319.01\\\\206.8359\\\\294.803\\\\319.01\\\\209.1797\\\\294.3707\\\\319.01\\\\211.5234\\\\292.4764\\\\319.01\\\\213.8672\\\\291.2065\\\\319.01\\\\216.2109\\\\289.6522\\\\319.01\\\\217.2899\\\\288.6234\\\\319.01\\\\218.5547\\\\287.1418\\\\319.01\\\\221.8375\\\\283.9359\\\\319.01\\\\225.5859\\\\279.9363\\\\319.01\\\\227.9297\\\\277.6265\\\\319.01\\\\230.2734\\\\275.1683\\\\319.01\\\\233.3338\\\\272.2172\\\\319.01\\\\234.9609\\\\270.4222\\\\319.01\\\\244.3359\\\\260.8793\\\\319.01\\\\249.0234\\\\255.926\\\\319.01\\\\251.398\\\\253.4672\\\\319.01\\\\256.0547\\\\248.2237\\\\319.01\\\\257.5125\\\\246.4359\\\\319.01\\\\259.786\\\\244.0922\\\\319.01\\\\260.7422\\\\241.626\\\\319.01\\\\261.5214\\\\239.4047\\\\319.01\\\\260.7422\\\\237.1834\\\\319.01\\\\259.4941\\\\234.7172\\\\319.01\\\\258.3984\\\\233.6884\\\\319.01\\\\256.0547\\\\233.0498\\\\319.01\\\\253.7109\\\\232.7848\\\\319.01\\\\251.3672\\\\233.0989\\\\319.01\\\\249.0234\\\\232.8375\\\\319.01\\\\246.6797\\\\232.7692\\\\319.01\\\\241.9922\\\\233.0207\\\\319.01\\\\237.3047\\\\233.0108\\\\319.01\\\\232.6172\\\\233.0819\\\\319.01\\\\227.9297\\\\233.0402\\\\319.01\\\\211.5234\\\\233.0819\\\\319.01\\\\206.8359\\\\233.0245\\\\319.01\\\\204.4922\\\\232.7975\\\\319.01\\\\202.1484\\\\232.6767\\\\319.01\\\\199.8047\\\\232.6623\\\\319.01\\\\190.4297\\\\232.7588\\\\319.01\\\\185.7422\\\\232.7848\\\\319.01\\\\181.0547\\\\232.7588\\\\319.01\\\\169.3359\\\\232.7588\\\\319.01\\\\166.9922\\\\232.7048\\\\319.01\\\\159.9609\\\\232.7719\\\\319.01\\\\152.9297\\\\232.7346\\\\319.01\\\\148.2422\\\\232.7875\\\\319.01\\\\143.5547\\\\232.7481\\\\319.01\\\\138.8672\\\\232.5056\\\\319.01\\\\136.5234\\\\232.5056\\\\319.01\\\\134.1797\\\\232.0429\\\\319.01\\\\131.8359\\\\231.7224\\\\319.01\\\\129.4922\\\\231.6882\\\\319.01\\\\122.4609\\\\231.7224\\\\319.01\\\\120.1172\\\\232.6179\\\\319.01\\\\117.7734\\\\232.6767\\\\319.01\\\\113.0859\\\\232.6767\\\\319.01\\\\110.7422\\\\232.5557\\\\319.01\\\\108.3984\\\\231.8031\\\\319.01\\\\106.0547\\\\231.589\\\\319.01\\\\103.7109\\\\231.5244\\\\319.01\\\\102.7966\\\\232.3734\\\\319.01\\\\101.3672\\\\233.1042\\\\319.01\\\\96.67969\\\\233.131\\\\319.01\\\\89.64844\\\\233.1221\\\\319.01\\\\75.58594\\\\233.1483\\\\319.01\\\\70.89844\\\\233.1042\\\\319.01\\\\66.21094\\\\233.1652\\\\319.01\\\\56.83594\\\\233.131\\\\319.01\\\\52.14844\\\\233.1397\\\\319.01\\\\45.11719\\\\233.1042\\\\319.01\\\\44.14645\\\\232.3734\\\\319.01\\\\42.77344\\\\231.0593\\\\319.01\\\\42.01079\\\\230.0297\\\\319.01\\\\42.77344\\\\229.2013\\\\319.01\\\\45.11719\\\\228.447\\\\319.01\\\\47.46094\\\\226.9284\\\\319.01\\\\49.80469\\\\225.886\\\\319.01\\\\52.14844\\\\224.4503\\\\319.01\\\\54.49219\\\\223.4528\\\\319.01\\\\55.01404\\\\222.9984\\\\319.01\\\\59.17969\\\\220.0237\\\\319.01\\\\61.52344\\\\218.6082\\\\319.01\\\\64.67848\\\\215.9672\\\\319.01\\\\66.21094\\\\214.8015\\\\319.01\\\\70.89844\\\\210.2358\\\\319.01\\\\72.148\\\\208.9359\\\\319.01\\\\76.26517\\\\204.2484\\\\319.01\\\\77.81339\\\\201.9047\\\\319.01\\\\81.15081\\\\197.2172\\\\319.01\\\\82.41605\\\\194.8734\\\\319.01\\\\83.95089\\\\192.5297\\\\319.01\\\\85.09115\\\\190.1859\\\\319.01\\\\86.09138\\\\187.8422\\\\319.01\\\\88.39328\\\\183.1547\\\\319.01\\\\88.81863\\\\180.8109\\\\319.01\\\\90.54276\\\\176.1234\\\\319.01\\\\91.10133\\\\173.7797\\\\319.01\\\\91.76778\\\\171.4359\\\\319.01\\\\92.65485\\\\169.0922\\\\319.01\\\\92.99918\\\\166.7484\\\\319.01\\\\93.21165\\\\162.0609\\\\319.01\\\\93.36247\\\\157.3734\\\\319.01\\\\93.37488\\\\152.6859\\\\319.01\\\\93.27335\\\\147.9984\\\\319.01\\\\93.05807\\\\143.3109\\\\319.01\\\\92.86326\\\\140.9672\\\\319.01\\\\92.33733\\\\138.6234\\\\319.01\\\\91.43783\\\\136.2797\\\\319.01\\\\90.94626\\\\133.9359\\\\319.01\\\\90.36204\\\\131.5922\\\\319.01\\\\89.36162\\\\129.2484\\\\319.01\\\\88.68583\\\\126.9047\\\\319.01\\\\88.21825\\\\124.5609\\\\319.01\\\\86.72572\\\\122.2172\\\\319.01\\\\85.8493\\\\119.8734\\\\319.01\\\\84.53275\\\\117.5297\\\\319.01\\\\83.62613\\\\115.1859\\\\319.01\\\\81.8292\\\\112.8422\\\\319.01\\\\80.77354\\\\110.4984\\\\319.01\\\\79.05143\\\\108.1547\\\\319.01\\\\77.04742\\\\105.8109\\\\319.01\\\\75.58594\\\\103.674\\\\319.01\\\\73.4361\\\\101.1234\\\\319.01\\\\71.3485\\\\98.77969\\\\319.01\\\\68.55469\\\\95.97556\\\\319.01\\\\63.59904\\\\91.74844\\\\319.01\\\\61.52344\\\\90.34084\\\\319.01\\\\59.17969\\\\88.31962\\\\319.01\\\\56.83594\\\\86.83331\\\\319.01\\\\54.49219\\\\85.63074\\\\319.01\\\\52.14844\\\\83.82526\\\\319.01\\\\49.80469\\\\83.06862\\\\319.01\\\\47.46094\\\\81.65692\\\\319.01\\\\45.11719\\\\80.79234\\\\319.01\\\\42.77344\\\\79.31967\\\\319.01\\\\38.08594\\\\78.27902\\\\319.01\\\\35.74219\\\\77.28263\\\\319.01\\\\33.39844\\\\76.61404\\\\319.01\\\\31.05469\\\\76.1767\\\\319.01\\\\28.71094\\\\75.56659\\\\319.01\\\\26.36719\\\\74.77422\\\\319.01\\\\24.02344\\\\74.45255\\\\319.01\\\\14.64844\\\\74.10455\\\\319.01\\\\12.30469\\\\74.10455\\\\319.01\\\\5.273438\\\\74.26746\\\\319.01\\\\2.929688\\\\74.40346\\\\319.01\\\\0.5859375\\\\74.73805\\\\319.01\\\\-4.101563\\\\75.99764\\\\319.01\\\\-6.445313\\\\76.4192\\\\319.01\\\\-8.789063\\\\77.021\\\\319.01\\\\-11.13281\\\\78.0173\\\\319.01\\\\-13.47656\\\\78.67566\\\\319.01\\\\-15.82031\\\\79.11396\\\\319.01\\\\-18.16406\\\\80.51486\\\\319.01\\\\-20.50781\\\\81.46942\\\\319.01\\\\-22.85156\\\\82.85554\\\\319.01\\\\-25.19531\\\\83.66675\\\\319.01\\\\-27.53906\\\\85.46803\\\\319.01\\\\-29.88281\\\\86.52827\\\\319.01\\\\-32.22656\\\\88.23955\\\\319.01\\\\-34.57031\\\\90.13984\\\\319.01\\\\-36.9035\\\\91.74844\\\\319.01\\\\-41.60156\\\\95.65716\\\\319.01\\\\-46.9745\\\\101.1234\\\\319.01\\\\-50.48889\\\\105.8109\\\\319.01\\\\-52.30941\\\\108.1547\\\\319.01\\\\-53.97684\\\\110.4984\\\\319.01\\\\-55.34668\\\\112.8422\\\\319.01\\\\-56.83594\\\\115.1859\\\\319.01\\\\-57.84288\\\\117.5297\\\\319.01\\\\-59.17969\\\\119.8734\\\\319.01\\\\-60.35156\\\\122.2895\\\\319.01\\\\-61.30981\\\\124.5609\\\\319.01\\\\-61.83551\\\\126.9047\\\\319.01\\\\-62.94936\\\\129.2484\\\\319.01\\\\-63.81696\\\\131.5922\\\\319.01\\\\-64.21995\\\\133.9359\\\\319.01\\\\-64.78502\\\\136.2797\\\\319.01\\\\-65.56069\\\\138.6234\\\\319.01\\\\-65.84246\\\\140.9672\\\\319.01\\\\-66.49079\\\\147.9984\\\\319.01\\\\-66.73695\\\\152.6859\\\\319.01\\\\-66.80727\\\\155.0297\\\\319.01\\\\-66.62016\\\\159.7172\\\\319.01\\\\-66.24458\\\\164.4047\\\\319.01\\\\-65.7409\\\\169.0922\\\\319.01\\\\-65.32193\\\\171.4359\\\\319.01\\\\-64.43269\\\\173.7797\\\\319.01\\\\-64.03687\\\\176.1234\\\\319.01\\\\-63.43099\\\\178.4672\\\\319.01\\\\-62.2521\\\\180.8109\\\\319.01\\\\-61.52967\\\\183.1547\\\\319.01\\\\-60.90088\\\\185.4984\\\\319.01\\\\-59.4697\\\\187.8422\\\\319.01\\\\-58.42364\\\\190.1859\\\\319.01\\\\-57.02597\\\\192.5297\\\\319.01\\\\-56.12809\\\\194.8734\\\\319.01\\\\-55.66406\\\\195.3972\\\\319.01\\\\-53.32031\\\\198.8418\\\\319.01\\\\-52.73438\\\\199.5609\\\\319.01\\\\-51.45956\\\\201.9047\\\\319.01\\\\-48.63281\\\\205.2587\\\\319.01\\\\-47.59325\\\\206.5922\\\\319.01\\\\-45.25587\\\\208.9359\\\\319.01\\\\-43.11045\\\\211.2797\\\\319.01\\\\-41.60156\\\\212.6377\\\\319.01\\\\-39.25781\\\\214.941\\\\319.01\\\\-35.2231\\\\218.3109\\\\319.01\\\\-34.57031\\\\218.9344\\\\319.01\\\\-32.22656\\\\220.1609\\\\319.01\\\\-31.63622\\\\220.6547\\\\319.01\\\\-28.34042\\\\222.9984\\\\319.01\\\\-27.53906\\\\223.6754\\\\319.01\\\\-25.19531\\\\224.5542\\\\319.01\\\\-22.85156\\\\226.0607\\\\319.01\\\\-20.50781\\\\227.0596\\\\319.01\\\\-18.16406\\\\228.5294\\\\319.01\\\\-15.82031\\\\229.1996\\\\319.01\\\\-15.00954\\\\230.0297\\\\319.01\\\\-15.82031\\\\231.333\\\\319.01\\\\-16.88058\\\\232.3734\\\\319.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851035724600001.533642609670\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"359\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"16\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"101.3672\\\\233.1221\\\\322.01\\\\80.27344\\\\233.131\\\\322.01\\\\75.58594\\\\233.1568\\\\322.01\\\\70.89844\\\\233.131\\\\322.01\\\\61.52344\\\\233.1652\\\\322.01\\\\45.11719\\\\233.1132\\\\322.01\\\\44.12896\\\\232.3734\\\\322.01\\\\42.77344\\\\231.076\\\\322.01\\\\42.00247\\\\230.0297\\\\322.01\\\\42.77344\\\\229.1926\\\\322.01\\\\45.11719\\\\228.4243\\\\322.01\\\\47.46094\\\\226.9242\\\\322.01\\\\49.80469\\\\225.8587\\\\322.01\\\\52.14844\\\\224.4422\\\\322.01\\\\54.49219\\\\223.4268\\\\322.01\\\\54.97742\\\\222.9984\\\\322.01\\\\59.17969\\\\220.0136\\\\322.01\\\\61.52344\\\\218.5471\\\\322.01\\\\64.65119\\\\215.9672\\\\322.01\\\\66.21094\\\\214.7764\\\\322.01\\\\70.89844\\\\210.1964\\\\322.01\\\\72.1096\\\\208.9359\\\\322.01\\\\76.2437\\\\204.2484\\\\322.01\\\\77.92969\\\\201.7078\\\\322.01\\\\81.11842\\\\197.2172\\\\322.01\\\\82.30748\\\\194.8734\\\\322.01\\\\82.61719\\\\194.5523\\\\322.01\\\\83.92992\\\\192.5297\\\\322.01\\\\85.04084\\\\190.1859\\\\322.01\\\\87.1582\\\\185.4984\\\\322.01\\\\88.36839\\\\183.1547\\\\322.01\\\\88.7899\\\\180.8109\\\\322.01\\\\89.56792\\\\178.4672\\\\322.01\\\\90.50697\\\\176.1234\\\\322.01\\\\91.68128\\\\171.4359\\\\322.01\\\\92.59956\\\\169.0922\\\\322.01\\\\92.97371\\\\166.7484\\\\322.01\\\\93.0934\\\\164.4047\\\\322.01\\\\93.33585\\\\157.3734\\\\322.01\\\\93.34813\\\\152.6859\\\\322.01\\\\93.22983\\\\147.9984\\\\322.01\\\\93.04629\\\\143.3109\\\\322.01\\\\92.83467\\\\140.9672\\\\322.01\\\\92.2954\\\\138.6234\\\\322.01\\\\91.39597\\\\136.2797\\\\322.01\\\\90.90752\\\\133.9359\\\\322.01\\\\90.32093\\\\131.5922\\\\322.01\\\\89.30564\\\\129.2484\\\\322.01\\\\88.67188\\\\126.9047\\\\322.01\\\\88.16579\\\\124.5609\\\\322.01\\\\86.67472\\\\122.2172\\\\322.01\\\\85.81149\\\\119.8734\\\\322.01\\\\84.49661\\\\117.5297\\\\322.01\\\\83.58636\\\\115.1859\\\\322.01\\\\81.76791\\\\112.8422\\\\322.01\\\\80.71002\\\\110.4984\\\\322.01\\\\79.01383\\\\108.1547\\\\322.01\\\\77.02567\\\\105.8109\\\\322.01\\\\75.58594\\\\103.7458\\\\322.01\\\\73.38867\\\\101.1234\\\\322.01\\\\71.30643\\\\98.77969\\\\322.01\\\\68.55469\\\\96.01372\\\\322.01\\\\63.52539\\\\91.74844\\\\322.01\\\\61.52344\\\\90.35172\\\\322.01\\\\59.17969\\\\88.35252\\\\322.01\\\\56.83594\\\\86.87999\\\\322.01\\\\54.49219\\\\85.66346\\\\322.01\\\\52.14844\\\\83.84647\\\\322.01\\\\49.80469\\\\83.09609\\\\322.01\\\\47.46094\\\\81.6853\\\\322.01\\\\45.11719\\\\80.80066\\\\322.01\\\\42.77344\\\\79.34901\\\\322.01\\\\38.08594\\\\78.30383\\\\322.01\\\\35.74219\\\\77.32118\\\\322.01\\\\33.39844\\\\76.64365\\\\322.01\\\\31.05469\\\\76.1918\\\\322.01\\\\28.71094\\\\75.59623\\\\322.01\\\\26.36719\\\\74.80752\\\\322.01\\\\24.02344\\\\74.45255\\\\322.01\\\\14.64844\\\\74.12846\\\\322.01\\\\12.30469\\\\74.11021\\\\322.01\\\\5.273438\\\\74.2905\\\\322.01\\\\2.929688\\\\74.40346\\\\322.01\\\\0.5859375\\\\74.73805\\\\322.01\\\\-4.101563\\\\76.01651\\\\322.01\\\\-6.445313\\\\76.43631\\\\322.01\\\\-8.789063\\\\77.04008\\\\322.01\\\\-11.13281\\\\78.04468\\\\322.01\\\\-13.47656\\\\78.69472\\\\322.01\\\\-15.82031\\\\79.13468\\\\322.01\\\\-18.16406\\\\80.51486\\\\322.01\\\\-20.50781\\\\81.47456\\\\322.01\\\\-22.85156\\\\82.85554\\\\322.01\\\\-25.19531\\\\83.68029\\\\322.01\\\\-27.53906\\\\85.48688\\\\322.01\\\\-29.88281\\\\86.53931\\\\322.01\\\\-32.22656\\\\88.25278\\\\322.01\\\\-34.57031\\\\90.1353\\\\322.01\\\\-36.86266\\\\91.74844\\\\322.01\\\\-39.25781\\\\93.66832\\\\322.01\\\\-41.60156\\\\95.6376\\\\322.01\\\\-47.00521\\\\101.1234\\\\322.01\\\\-50.52413\\\\105.8109\\\\322.01\\\\-50.97656\\\\106.3405\\\\322.01\\\\-54.00098\\\\110.4984\\\\322.01\\\\-56.85406\\\\115.1859\\\\322.01\\\\-57.8924\\\\117.5297\\\\322.01\\\\-59.20324\\\\119.8734\\\\322.01\\\\-60.36086\\\\122.2172\\\\322.01\\\\-61.32914\\\\124.5609\\\\322.01\\\\-61.85643\\\\126.9047\\\\322.01\\\\-63.04688\\\\129.2484\\\\322.01\\\\-63.83418\\\\131.5922\\\\322.01\\\\-64.24364\\\\133.9359\\\\322.01\\\\-65.59342\\\\138.6234\\\\322.01\\\\-65.87014\\\\140.9672\\\\322.01\\\\-66.32201\\\\145.6547\\\\322.01\\\\-66.68098\\\\150.3422\\\\322.01\\\\-66.85014\\\\155.0297\\\\322.01\\\\-66.7664\\\\157.3734\\\\322.01\\\\-66.48803\\\\162.0609\\\\322.01\\\\-65.75874\\\\169.0922\\\\322.01\\\\-65.3637\\\\171.4359\\\\322.01\\\\-64.4847\\\\173.7797\\\\322.01\\\\-64.05982\\\\176.1234\\\\322.01\\\\-63.44819\\\\178.4672\\\\322.01\\\\-62.28937\\\\180.8109\\\\322.01\\\\-61.54255\\\\183.1547\\\\322.01\\\\-60.94105\\\\185.4984\\\\322.01\\\\-59.49768\\\\187.8422\\\\322.01\\\\-58.49549\\\\190.1859\\\\322.01\\\\-57.04611\\\\192.5297\\\\322.01\\\\-56.17723\\\\194.8734\\\\322.01\\\\-55.66406\\\\195.4638\\\\322.01\\\\-53.32031\\\\198.8875\\\\322.01\\\\-52.75635\\\\199.5609\\\\322.01\\\\-51.52395\\\\201.9047\\\\322.01\\\\-50.97656\\\\202.4906\\\\322.01\\\\-47.61296\\\\206.5922\\\\322.01\\\\-45.29157\\\\208.9359\\\\322.01\\\\-43.14595\\\\211.2797\\\\322.01\\\\-41.60156\\\\212.6678\\\\322.01\\\\-39.25781\\\\214.9694\\\\322.01\\\\-35.26563\\\\218.3109\\\\322.01\\\\-34.57031\\\\218.971\\\\322.01\\\\-32.22656\\\\220.1965\\\\322.01\\\\-31.68909\\\\220.6547\\\\322.01\\\\-28.39057\\\\222.9984\\\\322.01\\\\-27.53906\\\\223.7158\\\\322.01\\\\-25.19531\\\\224.5815\\\\322.01\\\\-22.85156\\\\226.0936\\\\322.01\\\\-20.50781\\\\227.1104\\\\322.01\\\\-18.16406\\\\228.5341\\\\322.01\\\\-15.82031\\\\229.2136\\\\322.01\\\\-15.0185\\\\230.0297\\\\322.01\\\\-15.82031\\\\231.3232\\\\322.01\\\\-16.88058\\\\232.3734\\\\322.01\\\\-18.16406\\\\233.1221\\\\322.01\\\\-22.85156\\\\233.1483\\\\322.01\\\\-32.22656\\\\233.131\\\\322.01\\\\-34.57031\\\\233.1652\\\\322.01\\\\-41.60156\\\\233.131\\\\322.01\\\\-58.00781\\\\233.1981\\\\322.01\\\\-60.35156\\\\233.6712\\\\322.01\\\\-65.03906\\\\232.6477\\\\322.01\\\\-67.38281\\\\232.8735\\\\322.01\\\\-69.72656\\\\232.9735\\\\322.01\\\\-74.41406\\\\233.0245\\\\322.01\\\\-86.13281\\\\233.0479\\\\322.01\\\\-88.47656\\\\233.0859\\\\322.01\\\\-95.50781\\\\233.0951\\\\322.01\\\\-97.85156\\\\233.2679\\\\322.01\\\\-100.1953\\\\233.9446\\\\322.01\\\\-102.5391\\\\233.6928\\\\322.01\\\\-104.8828\\\\234.0489\\\\322.01\\\\-107.2266\\\\233.6082\\\\322.01\\\\-109.5703\\\\234.062\\\\322.01\\\\-114.2578\\\\234.0672\\\\322.01\\\\-118.9453\\\\234.0158\\\\322.01\\\\-125.9766\\\\234.1221\\\\322.01\\\\-130.6641\\\\234.0591\\\\322.01\\\\-137.6953\\\\234.1038\\\\322.01\\\\-142.3828\\\\234.1741\\\\322.01\\\\-147.0703\\\\234.1078\\\\322.01\\\\-151.7578\\\\234.1127\\\\322.01\\\\-154.1016\\\\234.0722\\\\322.01\\\\-161.1328\\\\234.0513\\\\322.01\\\\-165.8203\\\\234.0722\\\\322.01\\\\-168.1641\\\\234.1994\\\\322.01\\\\-177.5391\\\\234.2214\\\\322.01\\\\-189.2578\\\\234.1743\\\\322.01\\\\-191.6016\\\\234.2721\\\\322.01\\\\-198.6328\\\\234.2326\\\\322.01\\\\-200.9766\\\\234.2902\\\\322.01\\\\-203.3203\\\\234.205\\\\322.01\\\\-215.0391\\\\234.2967\\\\322.01\\\\-217.3828\\\\234.3573\\\\322.01\\\\-222.0703\\\\234.3917\\\\322.01\\\\-224.4141\\\\234.3447\\\\322.01\\\\-229.1016\\\\234.4078\\\\322.01\\\\-233.7891\\\\234.2125\\\\322.01\\\\-238.4766\\\\234.2088\\\\322.01\\\\-243.1641\\\\234.0441\\\\322.01\\\\-247.8516\\\\233.665\\\\322.01\\\\-250.1953\\\\233.6877\\\\322.01\\\\-252.5391\\\\233.9291\\\\322.01\\\\-257.2266\\\\234.8983\\\\322.01\\\\-259.5703\\\\235.9345\\\\322.01\\\\-260.9983\\\\237.0609\\\\322.01\\\\-262.9464\\\\239.4047\\\\322.01\\\\-263.0954\\\\241.7484\\\\322.01\\\\-262.6598\\\\244.0922\\\\322.01\\\\-261.9141\\\\245.2447\\\\322.01\\\\-259.5703\\\\248.5569\\\\322.01\\\\-257.2266\\\\251.3205\\\\322.01\\\\-255.5536\\\\253.4672\\\\322.01\\\\-252.5391\\\\256.6377\\\\322.01\\\\-250.1953\\\\258.905\\\\322.01\\\\-247.8516\\\\261.4186\\\\322.01\\\\-245.5078\\\\263.615\\\\322.01\\\\-244.0908\\\\265.1859\\\\322.01\\\\-241.6044\\\\267.5297\\\\322.01\\\\-239.4094\\\\269.8734\\\\322.01\\\\-233.7891\\\\275.4182\\\\322.01\\\\-231.4453\\\\277.8469\\\\322.01\\\\-229.1016\\\\280.0557\\\\322.01\\\\-226.7578\\\\282.5473\\\\322.01\\\\-224.4141\\\\284.7202\\\\322.01\\\\-222.0703\\\\287.2521\\\\322.01\\\\-220.5943\\\\288.6234\\\\322.01\\\\-218.3764\\\\290.9672\\\\322.01\\\\-215.0295\\\\293.3109\\\\322.01\\\\-212.6953\\\\294.6526\\\\322.01\\\\-210.3516\\\\295.2914\\\\322.01\\\\-209.9242\\\\295.6547\\\\322.01\\\\-208.0078\\\\296.5075\\\\322.01\\\\-205.6641\\\\296.899\\\\322.01\\\\-203.3203\\\\297.134\\\\322.01\\\\-198.6328\\\\297.1414\\\\322.01\\\\-193.9453\\\\296.9471\\\\322.01\\\\-189.2578\\\\296.9713\\\\322.01\\\\-182.2266\\\\296.9337\\\\322.01\\\\-177.5391\\\\296.8792\\\\322.01\\\\-163.4766\\\\296.8978\\\\322.01\\\\-149.4141\\\\296.8432\\\\322.01\\\\-142.3828\\\\296.886\\\\322.01\\\\-133.0078\\\\296.8703\\\\322.01\\\\-130.6641\\\\296.896\\\\322.01\\\\-121.2891\\\\296.8971\\\\322.01\\\\-114.2578\\\\296.9339\\\\322.01\\\\-111.9141\\\\296.9077\\\\322.01\\\\-95.50781\\\\296.8847\\\\322.01\\\\-90.82031\\\\296.9145\\\\322.01\\\\-81.44531\\\\296.8949\\\\322.01\\\\-74.41406\\\\296.9447\\\\322.01\\\\-65.03906\\\\296.9557\\\\322.01\\\\-60.35156\\\\296.916\\\\322.01\\\\-50.97656\\\\296.9067\\\\322.01\\\\-46.28906\\\\296.9267\\\\322.01\\\\-43.94531\\\\297.0141\\\\322.01\\\\-41.60156\\\\296.8673\\\\322.01\\\\-34.57031\\\\296.9285\\\\322.01\\\\-27.53906\\\\296.9067\\\\322.01\\\\-22.85156\\\\296.9377\\\\322.01\\\\-11.13281\\\\296.9377\\\\322.01\\\\-8.789063\\\\296.9067\\\\322.01\\\\7.617188\\\\296.8877\\\\322.01\\\\14.64844\\\\296.8266\\\\322.01\\\\16.99219\\\\296.847\\\\322.01\\\\24.02344\\\\296.7643\\\\322.01\\\\31.05469\\\\296.7229\\\\322.01\\\\45.11719\\\\296.7229\\\\322.01\\\\49.80469\\\\296.6724\\\\322.01\\\\52.14844\\\\296.6929\\\\322.01\\\\61.52344\\\\296.6191\\\\322.01\\\\73.24219\\\\296.5777\\\\322.01\\\\84.96094\\\\296.5079\\\\322.01\\\\91.99219\\\\296.5208\\\\322.01\\\\96.67969\\\\296.4597\\\\322.01\\\\101.3672\\\\296.4604\\\\322.01\\\\115.4297\\\\296.3846\\\\322.01\\\\122.4609\\\\296.3766\\\\322.01\\\\124.8047\\\\296.3139\\\\322.01\\\\131.8359\\\\296.2987\\\\322.01\\\\134.1797\\\\296.1332\\\\322.01\\\\136.5234\\\\295.85\\\\322.01\\\\138.8672\\\\295.9433\\\\322.01\\\\143.5547\\\\295.8543\\\\322.01\\\\148.2422\\\\295.8486\\\\322.01\\\\157.6172\\\\295.7849\\\\322.01\\\\164.6484\\\\295.6998\\\\322.01\\\\174.0234\\\\295.6454\\\\322.01\\\\183.3984\\\\295.6638\\\\322.01\\\\188.0859\\\\295.5742\\\\322.01\\\\192.7734\\\\295.5916\\\\322.01\\\\197.4609\\\\295.833\\\\322.01\\\\202.1484\\\\295.7346\\\\322.01\\\\204.4922\\\\295.3842\\\\322.01\\\\206.8359\\\\294.8107\\\\322.01\\\\209.1797\\\\294.3828\\\\322.01\\\\211.5234\\\\292.4996\\\\322.01\\\\213.8672\\\\291.1916\\\\322.01\\\\216.2109\\\\289.625\\\\322.01\\\\217.2743\\\\288.6234\\\\322.01\\\\219.3824\\\\286.2797\\\\322.01\\\\221.8496\\\\283.9359\\\\322.01\\\\223.2422\\\\282.3931\\\\322.01\\\\225.5859\\\\279.9482\\\\322.01\\\\227.9297\\\\277.6329\\\\322.01\\\\230.2734\\\\275.1512\\\\322.01\\\\233.3577\\\\272.2172\\\\322.01\\\\234.9609\\\\270.4549\\\\322.01\\\\237.8726\\\\267.5297\\\\322.01\\\\244.3359\\\\260.9081\\\\322.01\\\\246.6797\\\\258.3968\\\\322.01\\\\251.3775\\\\253.4672\\\\322.01\\\\256.0547\\\\248.2237\\\\322.01\\\\257.5039\\\\246.4359\\\\322.01\\\\259.7775\\\\244.0922\\\\322.01\\\\260.7422\\\\241.7324\\\\322.01\\\\261.5918\\\\239.4047\\\\322.01\\\\260.8048\\\\237.0609\\\\322.01\\\\259.4941\\\\234.7172\\\\322.01\\\\258.3984\\\\233.6932\\\\322.01\\\\256.0547\\\\233.0686\\\\322.01\\\\253.7109\\\\232.8224\\\\322.01\\\\251.3672\\\\233.8731\\\\322.01\\\\249.0234\\\\233.2281\\\\322.01\\\\246.6797\\\\232.7947\\\\322.01\\\\241.9922\\\\233.0207\\\\322.01\\\\237.3047\\\\233.0207\\\\322.01\\\\232.6172\\\\233.0726\\\\322.01\\\\227.9297\\\\233.0305\\\\322.01\\\\218.5547\\\\233.0498\\\\322.01\\\\211.5234\\\\233.091\\\\322.01\\\\206.8359\\\\233.0245\\\\322.01\\\\202.1484\\\\232.6623\\\\322.01\\\\190.4297\\\\232.7588\\\\322.01\\\\174.0234\\\\232.7588\\\\322.01\\\\171.6797\\\\232.7719\\\\322.01\\\\164.6484\\\\232.7048\\\\322.01\\\\159.9609\\\\232.7588\\\\322.01\\\\152.9297\\\\232.7481\\\\322.01\\\\148.2422\\\\232.7875\\\\322.01\\\\143.5547\\\\232.7614\\\\322.01\\\\141.2109\\\\232.6329\\\\322.01\\\\138.8672\\\\231.8626\\\\322.01\\\\136.5234\\\\231.9556\\\\322.01\\\\134.1797\\\\232.4196\\\\322.01\\\\131.8359\\\\231.7424\\\\322.01\\\\124.8047\\\\231.7024\\\\322.01\\\\122.4609\\\\232.0168\\\\322.01\\\\120.1172\\\\232.6329\\\\322.01\\\\115.4297\\\\232.7071\\\\322.01\\\\110.7422\\\\232.6027\\\\322.01\\\\108.3984\\\\231.8445\\\\322.01\\\\106.0547\\\\231.5827\\\\322.01\\\\103.7109\\\\231.4945\\\\322.01\\\\102.7858\\\\232.3734\\\\322.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851068726500001.546012551665\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"368\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"17\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-18.16406\\\\233.1132\\\\325.01\\\\-34.57031\\\\233.1568\\\\325.01\\\\-43.94531\\\\233.1397\\\\325.01\\\\-53.32031\\\\233.1652\\\\325.01\\\\-62.69531\\\\233.2507\\\\325.01\\\\-65.03906\\\\232.6027\\\\325.01\\\\-67.38281\\\\232.8617\\\\325.01\\\\-69.72656\\\\232.9735\\\\325.01\\\\-74.41406\\\\233.0343\\\\325.01\\\\-83.78906\\\\233.0245\\\\325.01\\\\-88.47656\\\\233.0951\\\\325.01\\\\-95.50781\\\\233.0859\\\\325.01\\\\-97.85156\\\\233.4143\\\\325.01\\\\-100.1953\\\\234.0359\\\\325.01\\\\-102.5391\\\\234.1029\\\\325.01\\\\-104.8828\\\\233.4395\\\\325.01\\\\-109.5703\\\\234.0489\\\\325.01\\\\-111.9141\\\\234.0805\\\\325.01\\\\-116.6016\\\\234.054\\\\325.01\\\\-128.3203\\\\234.1174\\\\325.01\\\\-130.6641\\\\234.0591\\\\325.01\\\\-137.6953\\\\234.1221\\\\325.01\\\\-142.3828\\\\234.2191\\\\325.01\\\\-147.0703\\\\234.1029\\\\325.01\\\\-151.7578\\\\234.1127\\\\325.01\\\\-156.4453\\\\234.0772\\\\325.01\\\\-158.7891\\\\234.1085\\\\325.01\\\\-163.4766\\\\234.0463\\\\325.01\\\\-165.8203\\\\234.0722\\\\325.01\\\\-168.1641\\\\234.1994\\\\325.01\\\\-177.5391\\\\234.2357\\\\325.01\\\\-179.8828\\\\234.1837\\\\325.01\\\\-184.5703\\\\234.2574\\\\325.01\\\\-189.2578\\\\234.2012\\\\325.01\\\\-191.6016\\\\234.2721\\\\325.01\\\\-196.2891\\\\234.2574\\\\325.01\\\\-200.9766\\\\234.3204\\\\325.01\\\\-205.6641\\\\234.2187\\\\325.01\\\\-215.0391\\\\234.3146\\\\325.01\\\\-217.3828\\\\234.3917\\\\325.01\\\\-222.0703\\\\234.4409\\\\325.01\\\\-224.4141\\\\234.3917\\\\325.01\\\\-229.1016\\\\234.4578\\\\325.01\\\\-233.7891\\\\234.2398\\\\325.01\\\\-238.4766\\\\234.2644\\\\325.01\\\\-243.1641\\\\234.0329\\\\325.01\\\\-247.8516\\\\233.6513\\\\325.01\\\\-250.1953\\\\233.6663\\\\325.01\\\\-252.5391\\\\234.2918\\\\325.01\\\\-254.8828\\\\234.4928\\\\325.01\\\\-257.2266\\\\234.9479\\\\325.01\\\\-259.5703\\\\235.9244\\\\325.01\\\\-261.0111\\\\237.0609\\\\325.01\\\\-262.9464\\\\239.4047\\\\325.01\\\\-263.1001\\\\241.7484\\\\325.01\\\\-262.7014\\\\244.0922\\\\325.01\\\\-261.9141\\\\245.3016\\\\325.01\\\\-259.5703\\\\248.4308\\\\325.01\\\\-259.1987\\\\248.7797\\\\325.01\\\\-257.2266\\\\251.1994\\\\325.01\\\\-255.4771\\\\253.4672\\\\325.01\\\\-252.5391\\\\256.632\\\\325.01\\\\-250.1953\\\\258.8544\\\\325.01\\\\-247.8516\\\\261.3872\\\\325.01\\\\-245.5078\\\\263.5746\\\\325.01\\\\-244.0755\\\\265.1859\\\\325.01\\\\-241.6044\\\\267.5297\\\\325.01\\\\-239.3906\\\\269.8734\\\\325.01\\\\-236.1328\\\\273.1332\\\\325.01\\\\-233.7891\\\\275.4082\\\\325.01\\\\-231.4453\\\\277.8406\\\\325.01\\\\-229.8915\\\\279.2484\\\\325.01\\\\-226.7578\\\\282.5634\\\\325.01\\\\-224.4141\\\\284.7142\\\\325.01\\\\-222.0703\\\\287.2492\\\\325.01\\\\-220.6122\\\\288.6234\\\\325.01\\\\-218.3665\\\\290.9672\\\\325.01\\\\-215.0391\\\\293.3202\\\\325.01\\\\-212.6953\\\\294.6589\\\\325.01\\\\-210.3516\\\\295.3953\\\\325.01\\\\-208.0078\\\\296.5198\\\\325.01\\\\-205.6641\\\\296.899\\\\325.01\\\\-203.3203\\\\297.134\\\\325.01\\\\-198.6328\\\\297.134\\\\325.01\\\\-193.9453\\\\296.9855\\\\325.01\\\\-189.2578\\\\296.9891\\\\325.01\\\\-179.8828\\\\296.8863\\\\325.01\\\\-168.1641\\\\296.9185\\\\325.01\\\\-161.1328\\\\296.8737\\\\325.01\\\\-156.4453\\\\296.8978\\\\325.01\\\\-149.4141\\\\296.8678\\\\325.01\\\\-144.7266\\\\296.9186\\\\325.01\\\\-140.0391\\\\296.886\\\\325.01\\\\-128.3203\\\\296.8794\\\\325.01\\\\-125.9766\\\\296.916\\\\325.01\\\\-116.6016\\\\296.916\\\\325.01\\\\-114.2578\\\\296.9518\\\\325.01\\\\-100.1953\\\\296.9218\\\\325.01\\\\-95.50781\\\\296.8847\\\\325.01\\\\-88.47656\\\\296.934\\\\325.01\\\\-81.44531\\\\296.925\\\\325.01\\\\-76.75781\\\\296.9557\\\\325.01\\\\-72.07031\\\\296.9428\\\\325.01\\\\-69.72656\\\\297.0516\\\\325.01\\\\-67.38281\\\\296.9622\\\\325.01\\\\-53.32031\\\\296.9053\\\\325.01\\\\-41.60156\\\\296.8985\\\\325.01\\\\-22.85156\\\\296.9081\\\\325.01\\\\-20.50781\\\\296.9841\\\\325.01\\\\-18.16406\\\\297.3277\\\\325.01\\\\-15.82031\\\\296.9175\\\\325.01\\\\-13.47656\\\\296.9175\\\\325.01\\\\-11.13281\\\\297.3806\\\\325.01\\\\-8.789063\\\\296.9067\\\\325.01\\\\-6.445313\\\\296.9285\\\\325.01\\\\0.5859375\\\\296.878\\\\325.01\\\\2.929688\\\\296.9095\\\\325.01\\\\9.960938\\\\296.837\\\\325.01\\\\21.67969\\\\296.8055\\\\325.01\\\\33.39844\\\\296.7135\\\\325.01\\\\38.08594\\\\296.7324\\\\325.01\\\\42.77344\\\\296.7021\\\\325.01\\\\52.14844\\\\296.6929\\\\325.01\\\\59.17969\\\\296.6635\\\\325.01\\\\66.21094\\\\296.5984\\\\325.01\\\\77.92969\\\\296.582\\\\325.01\\\\80.27344\\\\296.5336\\\\325.01\\\\91.99219\\\\296.5079\\\\325.01\\\\94.33594\\\\296.473\\\\325.01\\\\101.3672\\\\296.474\\\\325.01\\\\106.0547\\\\296.4051\\\\325.01\\\\115.4297\\\\296.3986\\\\325.01\\\\122.4609\\\\296.3557\\\\325.01\\\\124.8047\\\\296.308\\\\325.01\\\\129.4922\\\\296.3139\\\\325.01\\\\134.1797\\\\296.1332\\\\325.01\\\\136.5234\\\\295.833\\\\325.01\\\\143.5547\\\\295.8172\\\\325.01\\\\148.2422\\\\295.864\\\\325.01\\\\152.9297\\\\295.7516\\\\325.01\\\\157.6172\\\\295.7849\\\\325.01\\\\169.3359\\\\295.6454\\\\325.01\\\\176.3672\\\\295.6093\\\\325.01\\\\183.3984\\\\295.6638\\\\325.01\\\\188.0859\\\\295.5742\\\\325.01\\\\192.7734\\\\295.5742\\\\325.01\\\\197.4609\\\\295.8172\\\\325.01\\\\202.1484\\\\295.7346\\\\325.01\\\\204.4922\\\\295.4287\\\\325.01\\\\206.8359\\\\294.8107\\\\325.01\\\\209.1797\\\\294.3828\\\\325.01\\\\211.5234\\\\292.5155\\\\325.01\\\\213.8672\\\\291.2065\\\\325.01\\\\216.2109\\\\289.625\\\\325.01\\\\217.2743\\\\288.6234\\\\325.01\\\\218.5547\\\\287.1312\\\\325.01\\\\221.8125\\\\283.9359\\\\325.01\\\\225.5859\\\\279.9313\\\\325.01\\\\227.9297\\\\277.6329\\\\325.01\\\\230.2734\\\\275.1294\\\\325.01\\\\233.3415\\\\272.2172\\\\325.01\\\\234.9609\\\\270.437\\\\325.01\\\\237.8862\\\\267.5297\\\\325.01\\\\244.7266\\\\260.4984\\\\325.01\\\\246.6797\\\\258.4162\\\\325.01\\\\251.4181\\\\253.4672\\\\325.01\\\\256.0547\\\\248.2155\\\\325.01\\\\257.5107\\\\246.4359\\\\325.01\\\\259.7775\\\\244.0922\\\\325.01\\\\260.7694\\\\241.7484\\\\325.01\\\\261.6139\\\\239.4047\\\\325.01\\\\260.8724\\\\237.0609\\\\325.01\\\\259.4996\\\\234.7172\\\\325.01\\\\258.3984\\\\233.6932\\\\325.01\\\\256.0547\\\\233.0686\\\\325.01\\\\253.7109\\\\232.8467\\\\325.01\\\\251.3672\\\\233.6969\\\\325.01\\\\249.0234\\\\232.8344\\\\325.01\\\\246.6797\\\\232.8072\\\\325.01\\\\241.9922\\\\233.0305\\\\325.01\\\\237.3047\\\\233.0207\\\\325.01\\\\232.6172\\\\233.0592\\\\325.01\\\\227.9297\\\\233.0305\\\\325.01\\\\220.8984\\\\233.0402\\\\325.01\\\\211.5234\\\\233.0819\\\\325.01\\\\206.8359\\\\233.0207\\\\325.01\\\\202.1484\\\\232.6477\\\\325.01\\\\197.4609\\\\232.7322\\\\325.01\\\\185.7422\\\\232.7322\\\\325.01\\\\171.6797\\\\232.7848\\\\325.01\\\\164.6484\\\\232.7186\\\\325.01\\\\159.9609\\\\232.7588\\\\325.01\\\\152.9297\\\\232.7456\\\\325.01\\\\143.5547\\\\232.7614\\\\325.01\\\\141.2109\\\\232.6477\\\\325.01\\\\138.8672\\\\231.7333\\\\325.01\\\\136.5234\\\\231.9353\\\\325.01\\\\134.1797\\\\232.6179\\\\325.01\\\\131.8359\\\\232.4552\\\\325.01\\\\129.4922\\\\231.9931\\\\325.01\\\\127.1484\\\\231.7424\\\\325.01\\\\124.8047\\\\231.7224\\\\325.01\\\\121.8516\\\\232.3734\\\\325.01\\\\120.1172\\\\232.6767\\\\325.01\\\\115.4297\\\\232.7346\\\\325.01\\\\108.3984\\\\232.6788\\\\325.01\\\\106.0547\\\\231.6083\\\\325.01\\\\103.7109\\\\231.4658\\\\325.01\\\\102.7466\\\\232.3734\\\\325.01\\\\101.3672\\\\233.1132\\\\325.01\\\\99.02344\\\\233.1397\\\\325.01\\\\89.64844\\\\233.1221\\\\325.01\\\\84.96094\\\\233.1483\\\\325.01\\\\77.92969\\\\233.131\\\\325.01\\\\70.89844\\\\233.1483\\\\325.01\\\\68.55469\\\\233.1221\\\\325.01\\\\63.86719\\\\233.1652\\\\325.01\\\\47.46094\\\\233.131\\\\325.01\\\\45.11719\\\\233.1042\\\\325.01\\\\44.13916\\\\232.3734\\\\325.01\\\\42.77344\\\\231.0852\\\\325.01\\\\41.99423\\\\230.0297\\\\325.01\\\\42.77344\\\\229.1792\\\\325.01\\\\45.11719\\\\228.4149\\\\325.01\\\\47.46094\\\\226.9069\\\\325.01\\\\49.80469\\\\225.8247\\\\325.01\\\\52.14844\\\\224.4343\\\\325.01\\\\54.49219\\\\223.4268\\\\325.01\\\\54.98124\\\\222.9984\\\\325.01\\\\59.17969\\\\219.9802\\\\325.01\\\\61.52344\\\\218.4654\\\\325.01\\\\66.21094\\\\214.7512\\\\325.01\\\\67.41649\\\\213.6234\\\\325.01\\\\72.08356\\\\208.9359\\\\325.01\\\\76.20634\\\\204.2484\\\\325.01\\\\77.92969\\\\201.635\\\\325.01\\\\81.10609\\\\197.2172\\\\325.01\\\\82.23734\\\\194.8734\\\\325.01\\\\82.61719\\\\194.4684\\\\325.01\\\\83.89715\\\\192.5297\\\\325.01\\\\87.08028\\\\185.4984\\\\325.01\\\\88.34971\\\\183.1547\\\\325.01\\\\88.75122\\\\180.8109\\\\325.01\\\\89.51726\\\\178.4672\\\\325.01\\\\90.45728\\\\176.1234\\\\325.01\\\\91.58888\\\\171.4359\\\\325.01\\\\92.52214\\\\169.0922\\\\325.01\\\\92.92603\\\\166.7484\\\\325.01\\\\93.08162\\\\164.4047\\\\325.01\\\\93.24734\\\\159.7172\\\\325.01\\\\93.34813\\\\155.0297\\\\325.01\\\\93.33585\\\\152.6859\\\\325.01\\\\93.21733\\\\147.9984\\\\325.01\\\\93.03451\\\\143.3109\\\\325.01\\\\92.80149\\\\140.9672\\\\325.01\\\\92.20603\\\\138.6234\\\\325.01\\\\91.35603\\\\136.2797\\\\325.01\\\\90.86391\\\\133.9359\\\\325.01\\\\90.26195\\\\131.5922\\\\325.01\\\\89.23982\\\\129.2484\\\\325.01\\\\88.11904\\\\124.5609\\\\325.01\\\\86.61727\\\\122.2172\\\\325.01\\\\85.77421\\\\119.8734\\\\325.01\\\\84.43931\\\\117.5297\\\\325.01\\\\83.54303\\\\115.1859\\\\325.01\\\\81.72218\\\\112.8422\\\\325.01\\\\80.63217\\\\110.4984\\\\325.01\\\\78.97623\\\\108.1547\\\\325.01\\\\76.99889\\\\105.8109\\\\325.01\\\\75.58594\\\\103.8485\\\\325.01\\\\71.2717\\\\98.77969\\\\325.01\\\\68.55469\\\\96.10746\\\\325.01\\\\63.40781\\\\91.74844\\\\325.01\\\\61.52344\\\\90.39472\\\\325.01\\\\59.17969\\\\88.40859\\\\325.01\\\\56.83594\\\\86.96328\\\\325.01\\\\54.49219\\\\85.72954\\\\325.01\\\\52.14844\\\\83.90226\\\\325.01\\\\49.80469\\\\83.13991\\\\325.01\\\\47.46094\\\\81.75262\\\\325.01\\\\45.11719\\\\80.8488\\\\325.01\\\\42.77344\\\\79.45107\\\\325.01\\\\40.42969\\\\78.81117\\\\325.01\\\\38.08594\\\\78.3781\\\\325.01\\\\35.74219\\\\77.40307\\\\325.01\\\\33.39844\\\\76.69214\\\\325.01\\\\28.71094\\\\75.71996\\\\325.01\\\\26.36719\\\\74.93087\\\\325.01\\\\24.02344\\\\74.48033\\\\325.01\\\\14.64844\\\\74.16439\\\\325.01\\\\12.30469\\\\74.15256\\\\325.01\\\\5.273438\\\\74.32497\\\\325.01\\\\2.929688\\\\74.428\\\\325.01\\\\0.5859375\\\\74.75261\\\\325.01\\\\-4.101563\\\\76.07065\\\\325.01\\\\-6.445313\\\\76.48616\\\\325.01\\\\-8.789063\\\\77.12093\\\\325.01\\\\-11.13281\\\\78.12252\\\\325.01\\\\-13.47656\\\\78.72694\\\\325.01\\\\-15.82031\\\\79.19357\\\\325.01\\\\-18.16406\\\\80.59765\\\\325.01\\\\-20.50781\\\\81.5181\\\\325.01\\\\-22.85156\\\\82.87881\\\\325.01\\\\-25.19531\\\\83.74062\\\\325.01\\\\-27.53906\\\\85.55424\\\\325.01\\\\-29.88281\\\\86.58486\\\\325.01\\\\-32.22656\\\\88.27789\\\\325.01\\\\-34.57031\\\\90.20212\\\\325.01\\\\-36.80389\\\\91.74844\\\\325.01\\\\-39.25781\\\\93.7097\\\\325.01\\\\-41.60156\\\\95.68683\\\\325.01\\\\-46.93845\\\\101.1234\\\\325.01\\\\-48.63281\\\\103.3971\\\\325.01\\\\-52.29492\\\\108.1547\\\\325.01\\\\-53.96273\\\\110.4984\\\\325.01\\\\-55.34668\\\\112.8422\\\\325.01\\\\-56.84198\\\\115.1859\\\\325.01\\\\-57.82686\\\\117.5297\\\\325.01\\\\-59.19159\\\\119.8734\\\\325.01\\\\-60.36086\\\\122.2172\\\\325.01\\\\-61.3241\\\\124.5609\\\\325.01\\\\-61.87306\\\\126.9047\\\\325.01\\\\-63.0335\\\\129.2484\\\\325.01\\\\-63.83386\\\\131.5922\\\\325.01\\\\-64.24364\\\\133.9359\\\\325.01\\\\-65.60407\\\\138.6234\\\\325.01\\\\-65.90472\\\\140.9672\\\\325.01\\\\-66.56733\\\\147.9984\\\\325.01\\\\-66.85014\\\\152.6859\\\\325.01\\\\-66.89514\\\\155.0297\\\\325.01\\\\-66.80727\\\\157.3734\\\\325.01\\\\-66.51716\\\\162.0609\\\\325.01\\\\-66.30065\\\\164.4047\\\\325.01\\\\-65.77621\\\\169.0922\\\\325.01\\\\-65.44237\\\\171.4359\\\\325.01\\\\-64.52861\\\\173.7797\\\\325.01\\\\-64.08521\\\\176.1234\\\\325.01\\\\-63.46983\\\\178.4672\\\\325.01\\\\-62.2521\\\\180.8109\\\\325.01\\\\-61.54234\\\\183.1547\\\\325.01\\\\-60.97238\\\\185.4984\\\\325.01\\\\-59.53244\\\\187.8422\\\\325.01\\\\-58.54048\\\\190.1859\\\\325.01\\\\-57.08706\\\\192.5297\\\\325.01\\\\-56.2388\\\\194.8734\\\\325.01\\\\-55.66406\\\\195.557\\\\325.01\\\\-53.32031\\\\198.94\\\\325.01\\\\-52.79036\\\\199.5609\\\\325.01\\\\-51.59609\\\\201.9047\\\\325.01\\\\-48.63281\\\\205.3395\\\\325.01\\\\-47.64024\\\\206.5922\\\\325.01\\\\-45.34446\\\\208.9359\\\\325.01\\\\-43.1875\\\\211.2797\\\\325.01\\\\-41.60156\\\\212.7042\\\\325.01\\\\-39.25781\\\\215.0065\\\\325.01\\\\-36.91406\\\\216.9296\\\\325.01\\\\-34.57031\\\\219.0371\\\\325.01\\\\-32.22656\\\\220.2086\\\\325.01\\\\-29.88281\\\\221.9258\\\\325.01\\\\-27.53906\\\\223.7543\\\\325.01\\\\-25.19531\\\\224.6046\\\\325.01\\\\-22.85156\\\\226.1349\\\\325.01\\\\-20.50781\\\\227.1316\\\\325.01\\\\-18.16406\\\\228.5423\\\\325.01\\\\-15.82031\\\\229.2136\\\\325.01\\\\-15.0185\\\\230.0297\\\\325.01\\\\-15.82031\\\\231.2992\\\\325.01\\\\-16.9148\\\\232.3734\\\\325.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851092727900001.507332422180\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"368\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"18\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-95.50781\\\\233.1042\\\\328.01\\\\-97.85156\\\\233.9217\\\\328.01\\\\-100.1953\\\\234.0411\\\\328.01\\\\-104.8828\\\\234.1505\\\\328.01\\\\-107.2266\\\\234.0891\\\\328.01\\\\-114.2578\\\\234.0855\\\\328.01\\\\-123.6328\\\\234.1407\\\\328.01\\\\-125.9766\\\\234.099\\\\328.01\\\\-135.3516\\\\234.0642\\\\328.01\\\\-142.3828\\\\234.1453\\\\328.01\\\\-147.0703\\\\234.0672\\\\328.01\\\\-158.7891\\\\234.0691\\\\328.01\\\\-165.8203\\\\234.0513\\\\328.01\\\\-170.5078\\\\234.2214\\\\328.01\\\\-177.5391\\\\234.2214\\\\328.01\\\\-179.8828\\\\234.1662\\\\328.01\\\\-186.9141\\\\234.2431\\\\328.01\\\\-189.2578\\\\234.1743\\\\328.01\\\\-191.6016\\\\234.2289\\\\328.01\\\\-196.2891\\\\234.2012\\\\328.01\\\\-200.9766\\\\234.3052\\\\328.01\\\\-203.3203\\\\234.2326\\\\328.01\\\\-208.0078\\\\234.2187\\\\328.01\\\\-212.6953\\\\234.3266\\\\328.01\\\\-215.0391\\\\234.3146\\\\328.01\\\\-222.0703\\\\234.4926\\\\328.01\\\\-224.4141\\\\234.4242\\\\328.01\\\\-229.1016\\\\234.4409\\\\328.01\\\\-233.7891\\\\234.2678\\\\328.01\\\\-236.1328\\\\234.2789\\\\328.01\\\\-240.8203\\\\234.1822\\\\328.01\\\\-243.1641\\\\234.0396\\\\328.01\\\\-247.8516\\\\233.6445\\\\328.01\\\\-250.1953\\\\233.6456\\\\328.01\\\\-252.0338\\\\234.7172\\\\328.01\\\\-252.5391\\\\236.7571\\\\328.01\\\\-254.5061\\\\234.7172\\\\328.01\\\\-254.8828\\\\234.6373\\\\328.01\\\\-257.2266\\\\235.072\\\\328.01\\\\-259.5703\\\\235.9195\\\\328.01\\\\-261.0352\\\\237.0609\\\\328.01\\\\-262.9576\\\\239.4047\\\\328.01\\\\-263.0812\\\\241.7484\\\\328.01\\\\-262.6933\\\\244.0922\\\\328.01\\\\-261.0624\\\\246.4359\\\\328.01\\\\-259.5703\\\\248.3512\\\\328.01\\\\-259.053\\\\248.7797\\\\328.01\\\\-255.4084\\\\253.4672\\\\328.01\\\\-252.5391\\\\256.6272\\\\328.01\\\\-250.1953\\\\258.8713\\\\328.01\\\\-247.8516\\\\261.3969\\\\328.01\\\\-245.5078\\\\263.5681\\\\328.01\\\\-244.0815\\\\265.1859\\\\328.01\\\\-241.6044\\\\267.5297\\\\328.01\\\\-239.4063\\\\269.8734\\\\328.01\\\\-233.7891\\\\275.4299\\\\328.01\\\\-231.4453\\\\277.8564\\\\328.01\\\\-229.8974\\\\279.2484\\\\328.01\\\\-226.7578\\\\282.5634\\\\328.01\\\\-224.4141\\\\284.7263\\\\328.01\\\\-222.0703\\\\287.2521\\\\328.01\\\\-220.5943\\\\288.6234\\\\328.01\\\\-218.3665\\\\290.9672\\\\328.01\\\\-215.0107\\\\293.3109\\\\328.01\\\\-212.6953\\\\294.6589\\\\328.01\\\\-210.3516\\\\295.2445\\\\328.01\\\\-209.8801\\\\295.6547\\\\328.01\\\\-208.0078\\\\296.512\\\\328.01\\\\-205.6641\\\\296.8998\\\\328.01\\\\-203.3203\\\\297.1414\\\\328.01\\\\-198.6328\\\\297.1488\\\\328.01\\\\-193.9453\\\\296.9968\\\\328.01\\\\-184.5703\\\\296.9452\\\\328.01\\\\-177.5391\\\\296.8713\\\\328.01\\\\-170.5078\\\\296.8886\\\\328.01\\\\-154.1016\\\\296.8744\\\\328.01\\\\-149.4141\\\\296.8513\\\\328.01\\\\-144.7266\\\\296.9097\\\\328.01\\\\-140.0391\\\\296.8603\\\\328.01\\\\-130.6641\\\\296.8439\\\\328.01\\\\-121.2891\\\\296.9065\\\\328.01\\\\-109.5703\\\\296.9339\\\\328.01\\\\-97.85156\\\\296.8641\\\\328.01\\\\-83.78906\\\\296.9234\\\\328.01\\\\-74.41406\\\\296.9234\\\\328.01\\\\-69.72656\\\\296.9706\\\\328.01\\\\-67.38281\\\\296.9428\\\\328.01\\\\-60.35156\\\\296.9447\\\\328.01\\\\-53.32031\\\\296.9145\\\\328.01\\\\-39.25781\\\\296.9377\\\\328.01\\\\-36.91406\\\\296.8789\\\\328.01\\\\-29.88281\\\\296.9095\\\\328.01\\\\-22.85156\\\\296.8973\\\\328.01\\\\-18.16406\\\\296.9841\\\\328.01\\\\-15.82031\\\\297.088\\\\328.01\\\\-13.47656\\\\296.9175\\\\328.01\\\\-11.13281\\\\296.9731\\\\328.01\\\\-8.789063\\\\296.9175\\\\328.01\\\\-1.757813\\\\296.9191\\\\328.01\\\\19.33594\\\\296.7952\\\\328.01\\\\21.67969\\\\296.8159\\\\328.01\\\\26.36719\\\\296.7533\\\\328.01\\\\31.05469\\\\296.7733\\\\328.01\\\\33.39844\\\\296.7229\\\\328.01\\\\38.08594\\\\296.7421\\\\328.01\\\\47.46094\\\\296.7324\\\\328.01\\\\49.80469\\\\296.6724\\\\328.01\\\\59.17969\\\\296.675\\\\328.01\\\\66.21094\\\\296.6107\\\\328.01\\\\68.55469\\\\296.6228\\\\328.01\\\\75.58594\\\\296.5696\\\\328.01\\\\77.92969\\\\296.5901\\\\328.01\\\\80.27344\\\\296.5208\\\\328.01\\\\82.61719\\\\296.5616\\\\328.01\\\\87.30469\\\\296.5079\\\\328.01\\\\103.7109\\\\296.4597\\\\328.01\\\\113.0859\\\\296.3846\\\\328.01\\\\117.7734\\\\296.3986\\\\328.01\\\\124.8047\\\\296.3288\\\\328.01\\\\129.4922\\\\296.3288\\\\328.01\\\\131.8359\\\\295.9477\\\\328.01\\\\134.1797\\\\296.1527\\\\328.01\\\\138.8672\\\\295.8486\\\\328.01\\\\143.5547\\\\295.9433\\\\328.01\\\\145.8984\\\\295.864\\\\328.01\\\\148.2422\\\\295.8791\\\\328.01\\\\152.9297\\\\295.8012\\\\328.01\\\\159.9609\\\\295.8012\\\\328.01\\\\164.6484\\\\295.7346\\\\328.01\\\\171.6797\\\\295.6998\\\\328.01\\\\176.3672\\\\295.6272\\\\328.01\\\\183.3984\\\\295.7173\\\\328.01\\\\188.0859\\\\295.5742\\\\328.01\\\\192.7734\\\\295.6093\\\\328.01\\\\197.4609\\\\295.8486\\\\328.01\\\\202.1484\\\\295.7516\\\\328.01\\\\204.4922\\\\295.4287\\\\328.01\\\\206.8359\\\\294.803\\\\328.01\\\\209.1797\\\\294.3828\\\\328.01\\\\211.5234\\\\292.5075\\\\328.01\\\\213.8672\\\\291.2212\\\\328.01\\\\216.2109\\\\289.6308\\\\328.01\\\\217.2743\\\\288.6234\\\\328.01\\\\218.5547\\\\287.1312\\\\328.01\\\\221.809\\\\283.9359\\\\328.01\\\\225.5859\\\\279.9599\\\\328.01\\\\227.9297\\\\277.6776\\\\328.01\\\\230.2734\\\\275.1425\\\\328.01\\\\233.3301\\\\272.2172\\\\328.01\\\\234.9609\\\\270.437\\\\328.01\\\\237.8817\\\\267.5297\\\\328.01\\\\246.9583\\\\258.1547\\\\328.01\\\\251.4177\\\\253.4672\\\\328.01\\\\256.0547\\\\248.1981\\\\328.01\\\\257.4792\\\\246.4359\\\\328.01\\\\259.8178\\\\244.0922\\\\328.01\\\\261.6764\\\\239.4047\\\\328.01\\\\260.9047\\\\237.0609\\\\328.01\\\\259.4996\\\\234.7172\\\\328.01\\\\258.3984\\\\233.6884\\\\328.01\\\\256.0547\\\\233.0779\\\\328.01\\\\253.7109\\\\232.916\\\\328.01\\\\251.3672\\\\233.9331\\\\328.01\\\\249.0234\\\\233.1868\\\\328.01\\\\246.6797\\\\232.8317\\\\328.01\\\\241.9922\\\\233.0305\\\\328.01\\\\237.3047\\\\233.0305\\\\328.01\\\\232.6172\\\\233.0819\\\\328.01\\\\227.9297\\\\233.0498\\\\328.01\\\\223.2422\\\\233.091\\\\328.01\\\\220.8984\\\\233.0632\\\\328.01\\\\211.5234\\\\233.0819\\\\328.01\\\\206.8359\\\\233.0537\\\\328.01\\\\202.1484\\\\232.6477\\\\328.01\\\\197.4609\\\\232.7456\\\\328.01\\\\188.0859\\\\232.7322\\\\328.01\\\\178.7109\\\\232.7975\\\\328.01\\\\174.0234\\\\232.7588\\\\328.01\\\\166.9922\\\\232.7588\\\\328.01\\\\162.3047\\\\232.7186\\\\328.01\\\\152.9297\\\\232.7588\\\\328.01\\\\143.5547\\\\232.8253\\\\328.01\\\\141.2109\\\\232.721\\\\328.01\\\\138.8672\\\\232.1391\\\\328.01\\\\136.5234\\\\232.6027\\\\328.01\\\\134.1797\\\\232.6477\\\\328.01\\\\131.8359\\\\232.5716\\\\328.01\\\\129.4922\\\\231.8784\\\\328.01\\\\127.1484\\\\231.7224\\\\328.01\\\\124.8047\\\\231.7315\\\\328.01\\\\122.4609\\\\232.6623\\\\328.01\\\\115.4297\\\\232.7875\\\\328.01\\\\108.3984\\\\232.7071\\\\328.01\\\\106.0547\\\\231.641\\\\328.01\\\\103.7109\\\\231.4558\\\\328.01\\\\102.6978\\\\232.3734\\\\328.01\\\\101.3672\\\\233.0951\\\\328.01\\\\99.02344\\\\233.1483\\\\328.01\\\\94.33594\\\\233.1221\\\\328.01\\\\89.64844\\\\233.1397\\\\328.01\\\\77.92969\\\\233.1221\\\\328.01\\\\70.89844\\\\233.1568\\\\328.01\\\\47.46094\\\\233.1483\\\\328.01\\\\45.11719\\\\233.1221\\\\328.01\\\\44.12626\\\\232.3734\\\\328.01\\\\42.77344\\\\231.0868\\\\328.01\\\\41.98608\\\\230.0297\\\\328.01\\\\42.77344\\\\229.1708\\\\328.01\\\\45.11719\\\\228.3863\\\\328.01\\\\47.46094\\\\226.8852\\\\328.01\\\\49.80469\\\\225.7875\\\\328.01\\\\52.14844\\\\224.4137\\\\328.01\\\\54.49219\\\\223.3972\\\\328.01\\\\54.94433\\\\222.9984\\\\328.01\\\\59.17969\\\\219.9666\\\\328.01\\\\61.52344\\\\218.3946\\\\328.01\\\\63.86719\\\\216.6084\\\\328.01\\\\66.21094\\\\214.7201\\\\328.01\\\\72.05011\\\\208.9359\\\\328.01\\\\76.14435\\\\204.2484\\\\328.01\\\\77.59603\\\\201.9047\\\\328.01\\\\77.92969\\\\201.5351\\\\328.01\\\\81.09001\\\\197.2172\\\\328.01\\\\82.18169\\\\194.8734\\\\328.01\\\\82.61719\\\\194.396\\\\328.01\\\\83.85225\\\\192.5297\\\\328.01\\\\85.99004\\\\187.8422\\\\328.01\\\\87.00566\\\\185.4984\\\\328.01\\\\88.31177\\\\183.1547\\\\328.01\\\\88.73158\\\\180.8109\\\\328.01\\\\89.43767\\\\178.4672\\\\328.01\\\\90.393\\\\176.1234\\\\328.01\\\\91.51611\\\\171.4359\\\\328.01\\\\92.42188\\\\169.0922\\\\328.01\\\\92.89885\\\\166.7484\\\\328.01\\\\93.06984\\\\164.4047\\\\328.01\\\\93.28426\\\\157.3734\\\\328.01\\\\93.30979\\\\152.6859\\\\328.01\\\\93.18761\\\\147.9984\\\\328.01\\\\93.02273\\\\143.3109\\\\328.01\\\\92.74458\\\\140.9672\\\\328.01\\\\92.09059\\\\138.6234\\\\328.01\\\\91.29035\\\\136.2797\\\\328.01\\\\90.7983\\\\133.9359\\\\328.01\\\\90.19531\\\\131.5922\\\\328.01\\\\89.1515\\\\129.2484\\\\328.01\\\\88.04228\\\\124.5609\\\\328.01\\\\86.57227\\\\122.2172\\\\328.01\\\\85.71805\\\\119.8734\\\\328.01\\\\84.35456\\\\117.5297\\\\328.01\\\\83.45424\\\\115.1859\\\\328.01\\\\81.67584\\\\112.8422\\\\328.01\\\\80.51793\\\\110.4984\\\\328.01\\\\78.89664\\\\108.1547\\\\328.01\\\\76.93359\\\\105.8109\\\\328.01\\\\75.58594\\\\104.0007\\\\328.01\\\\71.0907\\\\98.77969\\\\328.01\\\\68.55469\\\\96.27782\\\\328.01\\\\66.21094\\\\94.34207\\\\328.01\\\\63.23686\\\\91.74844\\\\328.01\\\\61.52344\\\\90.49887\\\\328.01\\\\59.17969\\\\88.51089\\\\328.01\\\\54.49219\\\\85.80405\\\\328.01\\\\52.14844\\\\84.03836\\\\328.01\\\\49.80469\\\\83.19375\\\\328.01\\\\47.46094\\\\81.85665\\\\328.01\\\\45.11719\\\\80.92008\\\\328.01\\\\43.41961\\\\80.02969\\\\328.01\\\\42.77344\\\\79.5718\\\\328.01\\\\40.42969\\\\78.83472\\\\328.01\\\\38.08594\\\\78.42924\\\\328.01\\\\35.74219\\\\77.53945\\\\328.01\\\\33.39844\\\\76.75893\\\\328.01\\\\28.71094\\\\75.81826\\\\328.01\\\\26.36719\\\\75.0248\\\\328.01\\\\24.02344\\\\74.52504\\\\328.01\\\\21.67969\\\\74.40105\\\\328.01\\\\14.64844\\\\74.17623\\\\328.01\\\\12.30469\\\\74.17031\\\\328.01\\\\7.617188\\\\74.25909\\\\328.01\\\\2.929688\\\\74.428\\\\328.01\\\\0.5859375\\\\74.71389\\\\328.01\\\\-4.101563\\\\76.07934\\\\328.01\\\\-6.445313\\\\76.51406\\\\328.01\\\\-8.789063\\\\77.13158\\\\328.01\\\\-11.13281\\\\78.13784\\\\328.01\\\\-13.47656\\\\78.72694\\\\328.01\\\\-15.82031\\\\79.21071\\\\328.01\\\\-18.16406\\\\80.62277\\\\328.01\\\\-20.50781\\\\81.54421\\\\328.01\\\\-22.85156\\\\82.91264\\\\328.01\\\\-25.19531\\\\83.73855\\\\328.01\\\\-27.53906\\\\85.55424\\\\328.01\\\\-29.88281\\\\86.58486\\\\328.01\\\\-32.22656\\\\88.27042\\\\328.01\\\\-34.57031\\\\90.21121\\\\328.01\\\\-36.82314\\\\91.74844\\\\328.01\\\\-39.25781\\\\93.68283\\\\328.01\\\\-41.60156\\\\95.69698\\\\328.01\\\\-43.94531\\\\98.10894\\\\328.01\\\\-46.95976\\\\101.1234\\\\328.01\\\\-50.47743\\\\105.8109\\\\328.01\\\\-52.28932\\\\108.1547\\\\328.01\\\\-53.96273\\\\110.4984\\\\328.01\\\\-56.82392\\\\115.1859\\\\328.01\\\\-57.82686\\\\117.5297\\\\328.01\\\\-59.17969\\\\119.8734\\\\328.01\\\\-60.35156\\\\122.2886\\\\328.01\\\\-61.31202\\\\124.5609\\\\328.01\\\\-61.84362\\\\126.9047\\\\328.01\\\\-62.97818\\\\129.2484\\\\328.01\\\\-63.81696\\\\131.5922\\\\328.01\\\\-64.22777\\\\133.9359\\\\328.01\\\\-65.57173\\\\138.6234\\\\328.01\\\\-65.88971\\\\140.9672\\\\328.01\\\\-66.54406\\\\147.9984\\\\328.01\\\\-66.83923\\\\152.6859\\\\328.01\\\\-66.87236\\\\155.0297\\\\328.01\\\\-66.8178\\\\157.3734\\\\328.01\\\\-66.51716\\\\162.0609\\\\328.01\\\\-66.31799\\\\164.4047\\\\328.01\\\\-65.7848\\\\169.0922\\\\328.01\\\\-65.44237\\\\171.4359\\\\328.01\\\\-64.53993\\\\173.7797\\\\328.01\\\\-64.09171\\\\176.1234\\\\328.01\\\\-63.46994\\\\178.4672\\\\328.01\\\\-62.26713\\\\180.8109\\\\328.01\\\\-61.52344\\\\183.1547\\\\328.01\\\\-61.02607\\\\185.4984\\\\328.01\\\\-59.56421\\\\187.8422\\\\328.01\\\\-58.60754\\\\190.1859\\\\328.01\\\\-57.1322\\\\192.5297\\\\328.01\\\\-56.30392\\\\194.8734\\\\328.01\\\\-55.66406\\\\195.646\\\\328.01\\\\-53.32031\\\\199.0141\\\\328.01\\\\-52.84091\\\\199.5609\\\\328.01\\\\-51.67393\\\\201.9047\\\\328.01\\\\-48.63281\\\\205.3802\\\\328.01\\\\-47.66054\\\\206.5922\\\\328.01\\\\-45.38484\\\\208.9359\\\\328.01\\\\-43.23581\\\\211.2797\\\\328.01\\\\-41.60156\\\\212.7535\\\\328.01\\\\-39.25781\\\\215.0201\\\\328.01\\\\-36.91406\\\\216.9578\\\\328.01\\\\-34.57031\\\\219.0567\\\\328.01\\\\-32.22656\\\\220.2589\\\\328.01\\\\-31.7772\\\\220.6547\\\\328.01\\\\-28.47822\\\\222.9984\\\\328.01\\\\-27.53906\\\\223.7774\\\\328.01\\\\-25.19531\\\\224.6141\\\\328.01\\\\-22.85156\\\\226.1618\\\\328.01\\\\-20.50781\\\\227.1643\\\\328.01\\\\-18.16406\\\\228.5648\\\\328.01\\\\-15.82031\\\\229.3696\\\\328.01\\\\-15.16846\\\\230.0297\\\\328.01\\\\-15.82031\\\\231.0044\\\\328.01\\\\-17.12821\\\\232.3734\\\\328.01\\\\-18.16406\\\\233.0441\\\\328.01\\\\-20.50781\\\\233.1397\\\\328.01\\\\-34.57031\\\\233.1568\\\\328.01\\\\-43.94531\\\\233.1397\\\\328.01\\\\-48.63281\\\\233.1736\\\\328.01\\\\-58.00781\\\\233.19\\\\328.01\\\\-60.35156\\\\233.3635\\\\328.01\\\\-62.69531\\\\233.7748\\\\328.01\\\\-65.03906\\\\232.6767\\\\328.01\\\\-69.72656\\\\232.9839\\\\328.01\\\\-81.44531\\\\233.0537\\\\328.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851113729100001.470312254320\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"562\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"19\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-15.82031\\\\230.0018\\\\331.01\\\\-18.16406\\\\232.6603\\\\331.01\\\\-20.50781\\\\233.131\\\\331.01\\\\-29.88281\\\\233.131\\\\331.01\\\\-43.94531\\\\233.1568\\\\331.01\\\\-53.32031\\\\233.1981\\\\331.01\\\\-58.00781\\\\233.19\\\\331.01\\\\-62.69531\\\\233.3017\\\\331.01\\\\-65.03906\\\\232.9665\\\\331.01\\\\-67.38281\\\\232.9081\\\\331.01\\\\-72.07031\\\\233.0441\\\\331.01\\\\-76.75781\\\\233.0382\\\\331.01\\\\-81.44531\\\\233.0859\\\\331.01\\\\-86.13281\\\\233.0671\\\\331.01\\\\-88.47656\\\\233.1042\\\\331.01\\\\-95.50781\\\\233.1132\\\\331.01\\\\-97.85156\\\\234.054\\\\331.01\\\\-104.8828\\\\234.2191\\\\331.01\\\\-107.2266\\\\234.1551\\\\331.01\\\\-111.9141\\\\234.2039\\\\331.01\\\\-114.2578\\\\234.1596\\\\331.01\\\\-123.6328\\\\234.2233\\\\331.01\\\\-125.9766\\\\234.1641\\\\331.01\\\\-135.3516\\\\234.1174\\\\331.01\\\\-142.3828\\\\234.1785\\\\331.01\\\\-147.0703\\\\234.0904\\\\331.01\\\\-158.7891\\\\234.1085\\\\331.01\\\\-165.8203\\\\234.0952\\\\331.01\\\\-168.1641\\\\234.2214\\\\331.01\\\\-177.5391\\\\234.2835\\\\331.01\\\\-182.2266\\\\234.2539\\\\331.01\\\\-186.9141\\\\234.2902\\\\331.01\\\\-189.2578\\\\234.2431\\\\331.01\\\\-191.6016\\\\234.2902\\\\331.01\\\\-198.6328\\\\234.3084\\\\331.01\\\\-200.9766\\\\234.3864\\\\331.01\\\\-203.3203\\\\234.3235\\\\331.01\\\\-208.0078\\\\234.3115\\\\331.01\\\\-212.6953\\\\234.4578\\\\331.01\\\\-215.0391\\\\234.4266\\\\331.01\\\\-219.7266\\\\234.5859\\\\331.01\\\\-222.0703\\\\234.6051\\\\331.01\\\\-224.4141\\\\234.5285\\\\331.01\\\\-229.1016\\\\234.5121\\\\331.01\\\\-233.7891\\\\234.3601\\\\331.01\\\\-238.4766\\\\234.2935\\\\331.01\\\\-243.1641\\\\234.1026\\\\331.01\\\\-245.5078\\\\233.8227\\\\331.01\\\\-247.8516\\\\233.6637\\\\331.01\\\\-250.1953\\\\233.665\\\\331.01\\\\-252.0243\\\\234.7172\\\\331.01\\\\-252.5391\\\\236.7571\\\\331.01\\\\-253.125\\\\237.0609\\\\331.01\\\\-252.5391\\\\237.1236\\\\331.01\\\\-250.1953\\\\237.9965\\\\331.01\\\\-247.8516\\\\238.0423\\\\331.01\\\\-236.1328\\\\238.0359\\\\331.01\\\\-229.1016\\\\238.0082\\\\331.01\\\\-226.7578\\\\238.0391\\\\331.01\\\\-219.7266\\\\238.0207\\\\331.01\\\\-215.0391\\\\238.0838\\\\331.01\\\\-210.3516\\\\238.0525\\\\331.01\\\\-208.0078\\\\238.1037\\\\331.01\\\\-198.6328\\\\238.1236\\\\331.01\\\\-196.2891\\\\238.1015\\\\331.01\\\\-191.6016\\\\238.1621\\\\331.01\\\\-186.9141\\\\238.0992\\\\331.01\\\\-182.2266\\\\238.1527\\\\331.01\\\\-172.8516\\\\238.1823\\\\331.01\\\\-163.4766\\\\238.1513\\\\331.01\\\\-156.4453\\\\238.192\\\\331.01\\\\-154.1016\\\\238.1706\\\\331.01\\\\-144.7266\\\\238.192\\\\331.01\\\\-142.3828\\\\238.2227\\\\331.01\\\\-137.6953\\\\238.1717\\\\331.01\\\\-133.0078\\\\238.2124\\\\331.01\\\\-128.3203\\\\238.1483\\\\331.01\\\\-125.9766\\\\238.2014\\\\331.01\\\\-116.6016\\\\238.1596\\\\331.01\\\\-100.1953\\\\238.1906\\\\331.01\\\\-93.16406\\\\238.1906\\\\331.01\\\\-88.47656\\\\238.1483\\\\331.01\\\\-79.10156\\\\238.2014\\\\331.01\\\\-74.41406\\\\238.1513\\\\331.01\\\\-69.72656\\\\238.1717\\\\331.01\\\\-62.69531\\\\238.1498\\\\331.01\\\\-58.00781\\\\238.1717\\\\331.01\\\\-48.63281\\\\238.1197\\\\331.01\\\\-43.94531\\\\238.1609\\\\331.01\\\\-41.60156\\\\238.1309\\\\331.01\\\\-29.88281\\\\238.1498\\\\331.01\\\\-25.19531\\\\238.1156\\\\331.01\\\\-15.82031\\\\238.1582\\\\331.01\\\\-8.789063\\\\238.1156\\\\331.01\\\\-6.445313\\\\238.1582\\\\331.01\\\\0.5859375\\\\238.1596\\\\331.01\\\\5.273438\\\\238.1272\\\\331.01\\\\12.30469\\\\238.1796\\\\331.01\\\\16.99219\\\\238.1695\\\\331.01\\\\24.02344\\\\238.0968\\\\331.01\\\\26.36719\\\\238.1061\\\\331.01\\\\31.05469\\\\238.0254\\\\331.01\\\\45.11719\\\\238.0254\\\\331.01\\\\49.80469\\\\237.9679\\\\331.01\\\\52.14844\\\\237.9883\\\\331.01\\\\59.17969\\\\237.9553\\\\331.01\\\\63.86719\\\\237.9632\\\\331.01\\\\66.21094\\\\237.9217\\\\331.01\\\\77.92969\\\\237.9347\\\\331.01\\\\80.27344\\\\237.8105\\\\331.01\\\\82.61719\\\\237.9372\\\\331.01\\\\84.96094\\\\237.4751\\\\331.01\\\\87.30469\\\\237.8936\\\\331.01\\\\89.64844\\\\237.9217\\\\331.01\\\\91.99219\\\\237.7291\\\\331.01\\\\94.33594\\\\237.2086\\\\331.01\\\\99.02344\\\\237.2496\\\\331.01\\\\101.3672\\\\236.9089\\\\331.01\\\\106.0547\\\\236.8813\\\\331.01\\\\110.7422\\\\236.9438\\\\331.01\\\\117.7734\\\\236.8147\\\\331.01\\\\124.8047\\\\236.8069\\\\331.01\\\\131.8359\\\\236.8627\\\\331.01\\\\134.1797\\\\236.7867\\\\331.01\\\\141.2109\\\\236.7996\\\\331.01\\\\150.5859\\\\236.7134\\\\331.01\\\\152.9297\\\\236.7413\\\\331.01\\\\157.6172\\\\236.6997\\\\331.01\\\\162.3047\\\\236.7022\\\\331.01\\\\171.6797\\\\236.6496\\\\331.01\\\\181.0547\\\\236.6756\\\\331.01\\\\185.7422\\\\236.5877\\\\331.01\\\\190.4297\\\\236.5877\\\\331.01\\\\195.1172\\\\236.5409\\\\331.01\\\\199.8047\\\\236.5758\\\\331.01\\\\206.8359\\\\236.515\\\\331.01\\\\225.5859\\\\236.4299\\\\331.01\\\\227.9297\\\\236.4541\\\\331.01\\\\239.6484\\\\236.4137\\\\331.01\\\\246.6797\\\\236.4174\\\\331.01\\\\249.0234\\\\236.3047\\\\331.01\\\\251.3672\\\\235.5069\\\\331.01\\\\253.7109\\\\236.5074\\\\331.01\\\\254.3945\\\\237.0609\\\\331.01\\\\255.8271\\\\239.4047\\\\331.01\\\\255.6086\\\\241.7484\\\\331.01\\\\254.6224\\\\244.0922\\\\331.01\\\\253.7109\\\\245.1008\\\\331.01\\\\252.7054\\\\246.4359\\\\331.01\\\\251.3672\\\\248.4433\\\\331.01\\\\248.6766\\\\251.1234\\\\331.01\\\\246.6797\\\\253.313\\\\331.01\\\\244.3359\\\\255.5254\\\\331.01\\\\239.5975\\\\260.4984\\\\331.01\\\\232.5846\\\\267.5297\\\\331.01\\\\230.2734\\\\269.8828\\\\331.01\\\\227.9297\\\\272.1213\\\\331.01\\\\225.5859\\\\274.5504\\\\331.01\\\\218.4426\\\\281.5922\\\\331.01\\\\215.9517\\\\283.9359\\\\331.01\\\\213.5485\\\\286.2797\\\\331.01\\\\211.5234\\\\288.0286\\\\331.01\\\\209.1797\\\\289.5822\\\\331.01\\\\206.8359\\\\290.8047\\\\331.01\\\\199.8047\\\\290.6986\\\\331.01\\\\197.4609\\\\290.7428\\\\331.01\\\\195.1172\\\\290.1895\\\\331.01\\\\190.4297\\\\290.0456\\\\331.01\\\\185.7422\\\\289.9906\\\\331.01\\\\169.3359\\\\290.0001\\\\331.01\\\\166.9922\\\\289.9612\\\\331.01\\\\159.9609\\\\289.9643\\\\331.01\\\\152.9297\\\\289.9091\\\\331.01\\\\134.1797\\\\289.9193\\\\331.01\\\\129.4922\\\\289.8967\\\\331.01\\\\120.1172\\\\289.9292\\\\331.01\\\\113.0859\\\\289.8948\\\\331.01\\\\108.3984\\\\289.9267\\\\331.01\\\\96.67969\\\\289.8987\\\\331.01\\\\94.33594\\\\289.9418\\\\331.01\\\\87.30469\\\\289.9091\\\\331.01\\\\84.96094\\\\289.9418\\\\331.01\\\\77.92969\\\\289.9091\\\\331.01\\\\68.55469\\\\289.9418\\\\331.01\\\\63.86719\\\\289.8967\\\\331.01\\\\56.83594\\\\289.9418\\\\331.01\\\\52.14844\\\\289.9069\\\\331.01\\\\47.46094\\\\289.9418\\\\331.01\\\\42.77344\\\\289.8967\\\\331.01\\\\35.74219\\\\289.9292\\\\331.01\\\\16.99219\\\\289.9319\\\\331.01\\\\5.273438\\\\289.8967\\\\331.01\\\\2.929688\\\\289.9418\\\\331.01\\\\-1.757813\\\\289.9193\\\\331.01\\\\-11.13281\\\\289.9739\\\\331.01\\\\-22.85156\\\\289.9643\\\\331.01\\\\-32.22656\\\\290.0094\\\\331.01\\\\-36.91406\\\\290.0001\\\\331.01\\\\-43.94531\\\\290.0409\\\\331.01\\\\-53.32031\\\\290.0094\\\\331.01\\\\-62.69531\\\\290.0409\\\\331.01\\\\-72.07031\\\\290.032\\\\331.01\\\\-74.41406\\\\290.0545\\\\331.01\\\\-76.75781\\\\290.5839\\\\331.01\\\\-79.10156\\\\290.2641\\\\331.01\\\\-81.44531\\\\290.7153\\\\331.01\\\\-83.78906\\\\290.9129\\\\331.01\\\\-86.13281\\\\290.1897\\\\331.01\\\\-88.47656\\\\290.5401\\\\331.01\\\\-90.82031\\\\291.2065\\\\331.01\\\\-93.16406\\\\291.1611\\\\331.01\\\\-95.50781\\\\291.3054\\\\331.01\\\\-97.85156\\\\291.2781\\\\331.01\\\\-104.8828\\\\291.3188\\\\331.01\\\\-107.2266\\\\291.2918\\\\331.01\\\\-111.9141\\\\291.3319\\\\331.01\\\\-114.2578\\\\291.3054\\\\331.01\\\\-121.2891\\\\291.3578\\\\331.01\\\\-125.9766\\\\291.3319\\\\331.01\\\\-133.0078\\\\291.3954\\\\331.01\\\\-175.1953\\\\291.5322\\\\331.01\\\\-182.2266\\\\291.5427\\\\331.01\\\\-191.6016\\\\291.6034\\\\331.01\\\\-200.9766\\\\291.5935\\\\331.01\\\\-205.6641\\\\292.3098\\\\331.01\\\\-208.0078\\\\292.3435\\\\331.01\\\\-210.3516\\\\292.0615\\\\331.01\\\\-211.9404\\\\290.9672\\\\331.01\\\\-212.6953\\\\290.2194\\\\331.01\\\\-215.0391\\\\288.6748\\\\331.01\\\\-219.7266\\\\284.4174\\\\331.01\\\\-229.1016\\\\275.1351\\\\331.01\\\\-231.4453\\\\272.9203\\\\331.01\\\\-232.0349\\\\272.2172\\\\331.01\\\\-233.7891\\\\270.4738\\\\331.01\\\\-236.1328\\\\268.2849\\\\331.01\\\\-238.4766\\\\265.8145\\\\331.01\\\\-240.8203\\\\263.537\\\\331.01\\\\-243.7982\\\\260.4984\\\\331.01\\\\-247.8516\\\\256.5038\\\\331.01\\\\-250.1953\\\\254.0828\\\\331.01\\\\-252.5391\\\\251.896\\\\331.01\\\\-254.8828\\\\249.3695\\\\331.01\\\\-255.6047\\\\248.7797\\\\331.01\\\\-257.5359\\\\246.4359\\\\331.01\\\\-258.3608\\\\244.0922\\\\331.01\\\\-258.3411\\\\241.7484\\\\331.01\\\\-257.8627\\\\239.4047\\\\331.01\\\\-257.2266\\\\238.6151\\\\331.01\\\\-255.1194\\\\237.0609\\\\331.01\\\\-257.2266\\\\235.0688\\\\331.01\\\\-259.5703\\\\235.9095\\\\331.01\\\\-261.0516\\\\237.0609\\\\331.01\\\\-261.9141\\\\238.0086\\\\331.01\\\\-262.9709\\\\239.4047\\\\331.01\\\\-263.0859\\\\241.7484\\\\331.01\\\\-262.7175\\\\244.0922\\\\331.01\\\\-261.9141\\\\245.282\\\\331.01\\\\-259.5703\\\\248.3058\\\\331.01\\\\-259.0049\\\\248.7797\\\\331.01\\\\-255.4084\\\\253.4672\\\\331.01\\\\-252.5391\\\\256.6166\\\\331.01\\\\-250.1953\\\\258.8892\\\\331.01\\\\-247.8516\\\\261.3909\\\\331.01\\\\-246.2402\\\\262.8422\\\\331.01\\\\-244.0969\\\\265.1859\\\\331.01\\\\-241.6044\\\\267.5297\\\\331.01\\\\-239.4219\\\\269.8734\\\\331.01\\\\-237.0058\\\\272.2172\\\\331.01\\\\-231.4453\\\\277.8564\\\\331.01\\\\-229.8974\\\\279.2484\\\\331.01\\\\-226.7578\\\\282.5503\\\\331.01\\\\-225.2042\\\\283.9359\\\\331.01\\\\-222.0703\\\\287.2617\\\\331.01\\\\-220.5943\\\\288.6234\\\\331.01\\\\-218.3789\\\\290.9672\\\\331.01\\\\-215.0295\\\\293.3109\\\\331.01\\\\-212.6953\\\\294.6589\\\\331.01\\\\-210.3516\\\\295.2362\\\\331.01\\\\-209.869\\\\295.6547\\\\331.01\\\\-208.0078\\\\296.4917\\\\331.01\\\\-205.6641\\\\296.8928\\\\331.01\\\\-203.3203\\\\297.1297\\\\331.01\\\\-196.2891\\\\297.0883\\\\331.01\\\\-193.9453\\\\296.959\\\\331.01\\\\-182.2266\\\\296.9206\\\\331.01\\\\-177.5391\\\\296.8568\\\\331.01\\\\-165.8203\\\\296.85\\\\331.01\\\\-158.7891\\\\296.8757\\\\331.01\\\\-151.7578\\\\296.8266\\\\331.01\\\\-144.7266\\\\296.8852\\\\331.01\\\\-140.0391\\\\296.8437\\\\331.01\\\\-135.3516\\\\296.8618\\\\331.01\\\\-130.6641\\\\296.8089\\\\331.01\\\\-109.5703\\\\296.9242\\\\331.01\\\\-97.85156\\\\296.8545\\\\331.01\\\\-90.82031\\\\296.8927\\\\331.01\\\\-83.78906\\\\296.8837\\\\331.01\\\\-76.75781\\\\296.9409\\\\331.01\\\\-55.66406\\\\296.934\\\\331.01\\\\-50.97656\\\\296.9053\\\\331.01\\\\-43.94531\\\\296.9191\\\\331.01\\\\-39.25781\\\\297.0516\\\\331.01\\\\-36.91406\\\\296.8688\\\\331.01\\\\-32.22656\\\\296.9207\\\\331.01\\\\-27.53906\\\\296.8888\\\\331.01\\\\-25.19531\\\\297.2621\\\\331.01\\\\-22.85156\\\\296.8985\\\\331.01\\\\-18.16406\\\\296.9489\\\\331.01\\\\-15.82031\\\\297.2814\\\\331.01\\\\-13.47656\\\\296.9067\\\\331.01\\\\-8.789063\\\\296.9285\\\\331.01\\\\7.617188\\\\296.8574\\\\331.01\\\\12.30469\\\\296.8579\\\\331.01\\\\21.67969\\\\296.7843\\\\331.01\\\\38.08594\\\\296.734\\\\331.01\\\\54.49219\\\\296.7043\\\\331.01\\\\59.17969\\\\296.6518\\\\331.01\\\\70.89844\\\\296.6068\\\\331.01\\\\80.27344\\\\296.549\\\\331.01\\\\87.30469\\\\296.5412\\\\331.01\\\\94.33594\\\\296.5005\\\\331.01\\\\101.3672\\\\296.4257\\\\331.01\\\\103.7109\\\\296.4801\\\\331.01\\\\115.4297\\\\296.3782\\\\331.01\\\\124.8047\\\\296.3703\\\\331.01\\\\129.4922\\\\296.3288\\\\331.01\\\\131.8359\\\\295.9433\\\\331.01\\\\134.1797\\\\295.9857\\\\331.01\\\\138.8672\\\\295.864\\\\331.01\\\\143.5547\\\\295.939\\\\331.01\\\\145.8984\\\\295.864\\\\331.01\\\\152.9297\\\\295.8172\\\\331.01\\\\159.9609\\\\295.8172\\\\331.01\\\\164.6484\\\\295.7516\\\\331.01\\\\171.6797\\\\295.7173\\\\331.01\\\\176.3672\\\\295.6454\\\\331.01\\\\183.3984\\\\295.6998\\\\331.01\\\\188.0859\\\\295.5742\\\\331.01\\\\192.7734\\\\295.6093\\\\331.01\\\\197.4609\\\\295.8486\\\\331.01\\\\202.1484\\\\295.7849\\\\331.01\\\\204.4922\\\\295.4439\\\\331.01\\\\206.8359\\\\294.8185\\\\331.01\\\\209.1797\\\\294.3828\\\\331.01\\\\211.5234\\\\292.5155\\\\331.01\\\\213.8672\\\\291.2065\\\\331.01\\\\216.2109\\\\289.6192\\\\331.01\\\\217.2678\\\\288.6234\\\\331.01\\\\218.5547\\\\287.1143\\\\331.01\\\\221.8249\\\\283.9359\\\\331.01\\\\225.5859\\\\279.9988\\\\331.01\\\\227.9297\\\\277.6831\\\\331.01\\\\230.2734\\\\275.1513\\\\331.01\\\\233.3252\\\\272.2172\\\\331.01\\\\234.9609\\\\270.4053\\\\331.01\\\\237.8731\\\\267.5297\\\\331.01\\\\240.1012\\\\265.1859\\\\331.01\\\\242.4443\\\\262.8422\\\\331.01\\\\251.4558\\\\253.4672\\\\331.01\\\\253.4477\\\\251.1234\\\\331.01\\\\256.0547\\\\248.2287\\\\331.01\\\\257.4762\\\\246.4359\\\\331.01\\\\259.8178\\\\244.0922\\\\331.01\\\\261.7753\\\\239.4047\\\\331.01\\\\261.0251\\\\237.0609\\\\331.01\\\\259.4941\\\\234.7172\\\\331.01\\\\258.3984\\\\233.6932\\\\331.01\\\\256.0547\\\\233.0961\\\\331.01\\\\253.7109\\\\232.9379\\\\331.01\\\\251.3672\\\\233.7695\\\\331.01\\\\249.0234\\\\232.8723\\\\331.01\\\\246.6797\\\\232.8195\\\\331.01\\\\241.9922\\\\233.0305\\\\331.01\\\\237.3047\\\\233.0305\\\\331.01\\\\232.6172\\\\233.1001\\\\331.01\\\\227.9297\\\\233.0686\\\\331.01\\\\225.5859\\\\233.1001\\\\331.01\\\\220.8984\\\\233.0726\\\\331.01\\\\211.5234\\\\233.0726\\\\331.01\\\\206.8359\\\\233.0441\\\\331.01\\\\202.1484\\\\232.6179\\\\331.01\\\\195.1172\\\\232.7456\\\\331.01\\\\178.7109\\\\232.7719\\\\331.01\\\\174.0234\\\\232.7456\\\\331.01\\\\162.3047\\\\232.7322\\\\331.01\\\\157.6172\\\\232.7875\\\\331.01\\\\150.5859\\\\232.8253\\\\331.01\\\\143.5547\\\\232.8253\\\\331.01\\\\138.8672\\\\232.6643\\\\331.01\\\\131.8359\\\\232.6477\\\\331.01\\\\129.4922\\\\231.969\\\\331.01\\\\127.1484\\\\231.7258\\\\331.01\\\\124.8047\\\\231.7518\\\\331.01\\\\122.4609\\\\232.4013\\\\331.01\\\\120.1172\\\\232.6788\\\\331.01\\\\113.0859\\\\232.7875\\\\331.01\\\\108.3984\\\\232.7481\\\\331.01\\\\103.7109\\\\231.505\\\\331.01\\\\102.6762\\\\232.3734\\\\331.01\\\\101.3672\\\\233.0766\\\\331.01\\\\99.02344\\\\233.1483\\\\331.01\\\\96.67969\\\\233.1221\\\\331.01\\\\89.64844\\\\233.1483\\\\331.01\\\\84.96094\\\\233.1221\\\\331.01\\\\80.27344\\\\233.1483\\\\331.01\\\\75.58594\\\\233.131\\\\331.01\\\\61.52344\\\\233.1397\\\\331.01\\\\59.17969\\\\233.1736\\\\331.01\\\\54.49219\\\\233.131\\\\331.01\\\\47.46094\\\\233.1397\\\\331.01\\\\45.11719\\\\233.1132\\\\331.01\\\\44.1435\\\\232.3734\\\\331.01\\\\42.77344\\\\231.0613\\\\331.01\\\\42.00247\\\\230.0297\\\\331.01\\\\42.77344\\\\229.1878\\\\331.01\\\\45.11719\\\\228.3765\\\\331.01\\\\47.46094\\\\226.8637\\\\331.01\\\\49.80469\\\\225.7647\\\\331.01\\\\52.14844\\\\224.4265\\\\331.01\\\\54.49219\\\\223.3249\\\\331.01\\\\59.17969\\\\219.9393\\\\331.01\\\\61.52344\\\\218.3393\\\\331.01\\\\63.86719\\\\216.5828\\\\331.01\\\\66.21094\\\\214.673\\\\331.01\\\\67.32799\\\\213.6234\\\\331.01\\\\72.01612\\\\208.9359\\\\331.01\\\\74.09509\\\\206.5922\\\\331.01\\\\76.07555\\\\204.2484\\\\331.01\\\\77.53638\\\\201.9047\\\\331.01\\\\77.92969\\\\201.4729\\\\331.01\\\\81.07359\\\\197.2172\\\\331.01\\\\82.12826\\\\194.8734\\\\331.01\\\\82.61719\\\\194.3306\\\\331.01\\\\83.8237\\\\192.5297\\\\331.01\\\\84.79842\\\\190.1859\\\\331.01\\\\85.95763\\\\187.8422\\\\331.01\\\\86.92441\\\\185.4984\\\\331.01\\\\88.28735\\\\183.1547\\\\331.01\\\\88.71695\\\\180.8109\\\\331.01\\\\89.3761\\\\178.4672\\\\331.01\\\\90.33585\\\\176.1234\\\\331.01\\\\90.93139\\\\173.7797\\\\331.01\\\\91.42718\\\\171.4359\\\\331.01\\\\92.2997\\\\169.0922\\\\331.01\\\\92.84734\\\\166.7484\\\\331.01\\\\93.04629\\\\164.4047\\\\331.01\\\\93.26022\\\\157.3734\\\\331.01\\\\93.2657\\\\152.6859\\\\331.01\\\\93.16406\\\\147.9984\\\\331.01\\\\92.9856\\\\143.3109\\\\331.01\\\\92.63075\\\\140.9672\\\\331.01\\\\91.86198\\\\138.6234\\\\331.01\\\\91.20483\\\\136.2797\\\\331.01\\\\90.71938\\\\133.9359\\\\331.01\\\\90.07662\\\\131.5922\\\\331.01\\\\89.03426\\\\129.2484\\\\331.01\\\\88.59089\\\\126.9047\\\\331.01\\\\87.9126\\\\124.5609\\\\331.01\\\\86.48499\\\\122.2172\\\\331.01\\\\85.62569\\\\119.8734\\\\331.01\\\\84.24227\\\\117.5297\\\\331.01\\\\83.30611\\\\115.1859\\\\331.01\\\\81.58318\\\\112.8422\\\\331.01\\\\80.28274\\\\110.4984\\\\331.01\\\\78.78014\\\\108.1547\\\\331.01\\\\76.8465\\\\105.8109\\\\331.01\\\\75.58594\\\\104.1452\\\\331.01\\\\70.89844\\\\98.8085\\\\331.01\\\\68.55469\\\\96.42617\\\\331.01\\\\66.21094\\\\94.49095\\\\331.01\\\\63.14011\\\\91.74844\\\\331.01\\\\61.52344\\\\90.55122\\\\331.01\\\\59.17969\\\\88.55907\\\\331.01\\\\56.83594\\\\87.2702\\\\331.01\\\\54.49219\\\\85.83469\\\\331.01\\\\52.14844\\\\84.10928\\\\331.01\\\\49.80469\\\\83.22182\\\\331.01\\\\47.46094\\\\81.90617\\\\331.01\\\\45.11719\\\\80.96379\\\\331.01\\\\43.32682\\\\80.02969\\\\331.01\\\\42.77344\\\\79.62586\\\\331.01\\\\40.42969\\\\78.84627\\\\331.01\\\\38.08594\\\\78.46938\\\\331.01\\\\33.39844\\\\76.78945\\\\331.01\\\\28.71094\\\\75.85264\\\\331.01\\\\26.36719\\\\75.06985\\\\331.01\\\\24.02344\\\\74.54173\\\\331.01\\\\21.67969\\\\74.41319\\\\331.01\\\\14.64844\\\\74.19387\\\\331.01\\\\12.30469\\\\74.18209\\\\331.01\\\\7.617188\\\\74.26453\\\\331.01\\\\2.929688\\\\74.44027\\\\331.01\\\\0.5859375\\\\74.71766\\\\331.01\\\\-4.101563\\\\76.07934\\\\331.01\\\\-6.445313\\\\76.52496\\\\331.01\\\\-8.789063\\\\77.12093\\\\331.01\\\\-11.13281\\\\78.13784\\\\331.01\\\\-15.82031\\\\79.21476\\\\331.01\\\\-18.16406\\\\80.64018\\\\331.01\\\\-20.50781\\\\81.58089\\\\331.01\\\\-22.85156\\\\82.93452\\\\331.01\\\\-25.19531\\\\83.7171\\\\331.01\\\\-27.53906\\\\85.53682\\\\331.01\\\\-29.88281\\\\86.56181\\\\331.01\\\\-32.22656\\\\88.24535\\\\331.01\\\\-34.57031\\\\90.17438\\\\331.01\\\\-36.86355\\\\91.74844\\\\331.01\\\\-39.25781\\\\93.65373\\\\331.01\\\\-41.60156\\\\95.64732\\\\331.01\\\\-43.94531\\\\98.08269\\\\331.01\\\\-46.99951\\\\101.1234\\\\331.01\\\\-50.52413\\\\105.8109\\\\331.01\\\\-50.97656\\\\106.3405\\\\331.01\\\\-53.99293\\\\110.4984\\\\331.01\\\\-56.84198\\\\115.1859\\\\331.01\\\\-57.84288\\\\117.5297\\\\331.01\\\\-59.19744\\\\119.8734\\\\331.01\\\\-60.39734\\\\122.2172\\\\331.01\\\\-61.32914\\\\124.5609\\\\331.01\\\\-61.87757\\\\126.9047\\\\331.01\\\\-63.0335\\\\129.2484\\\\331.01\\\\-63.83955\\\\131.5922\\\\331.01\\\\-64.25171\\\\133.9359\\\\331.01\\\\-65.59342\\\\138.6234\\\\331.01\\\\-66.13319\\\\143.3109\\\\331.01\\\\-66.54406\\\\147.9984\\\\331.01\\\\-66.85014\\\\152.6859\\\\331.01\\\\-66.87236\\\\155.0297\\\\331.01\\\\-66.69005\\\\159.7172\\\\331.01\\\\-66.30065\\\\164.4047\\\\331.01\\\\-65.77621\\\\169.0922\\\\331.01\\\\-65.40382\\\\171.4359\\\\331.01\\\\-64.53993\\\\173.7797\\\\331.01\\\\-64.07877\\\\176.1234\\\\331.01\\\\-63.49142\\\\178.4672\\\\331.01\\\\-62.30469\\\\180.8109\\\\331.01\\\\-61.53546\\\\183.1547\\\\331.01\\\\-61.04526\\\\185.4984\\\\331.01\\\\-59.60582\\\\187.8422\\\\331.01\\\\-58.66488\\\\190.1859\\\\331.01\\\\-57.16698\\\\192.5297\\\\331.01\\\\-56.36295\\\\194.8734\\\\331.01\\\\-55.66406\\\\195.7081\\\\331.01\\\\-53.32031\\\\199.0835\\\\331.01\\\\-52.89063\\\\199.5609\\\\331.01\\\\-51.73193\\\\201.9047\\\\331.01\\\\-49.63058\\\\204.2484\\\\331.01\\\\-47.6863\\\\206.5922\\\\331.01\\\\-45.43213\\\\208.9359\\\\331.01\\\\-43.27911\\\\211.2797\\\\331.01\\\\-41.60156\\\\212.8009\\\\331.01\\\\-39.25781\\\\215.0557\\\\331.01\\\\-36.91406\\\\216.9837\\\\331.01\\\\-34.57031\\\\219.0804\\\\331.01\\\\-32.22656\\\\220.3119\\\\331.01\\\\-29.88281\\\\221.9844\\\\331.01\\\\-27.53906\\\\223.8002\\\\331.01\\\\-25.19531\\\\224.6377\\\\331.01\\\\-22.85156\\\\226.1792\\\\331.01\\\\-20.50781\\\\227.1868\\\\331.01\\\\-18.16406\\\\228.6441\\\\331.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851133730200001.543478973601\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n";
-const char* k_rtStruct_json05 =
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"567\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"20\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-15.98772\\\\230.0297\\\\334.01\\\\-18.16406\\\\232.5688\\\\334.01\\\\-20.50781\\\\233.1397\\\\334.01\\\\-34.57031\\\\233.1397\\\\334.01\\\\-41.60156\\\\233.1981\\\\334.01\\\\-46.28906\\\\233.1652\\\\334.01\\\\-50.97656\\\\233.2061\\\\334.01\\\\-62.69531\\\\233.1981\\\\334.01\\\\-67.38281\\\\232.9839\\\\334.01\\\\-72.07031\\\\233.0766\\\\334.01\\\\-81.44531\\\\233.1042\\\\334.01\\\\-86.13281\\\\233.0766\\\\334.01\\\\-90.82031\\\\233.131\\\\334.01\\\\-93.16406\\\\233.4871\\\\334.01\\\\-95.50781\\\\233.1884\\\\334.01\\\\-97.85156\\\\234.1127\\\\334.01\\\\-104.8828\\\\234.2828\\\\334.01\\\\-107.2266\\\\234.215\\\\334.01\\\\-109.5703\\\\234.2828\\\\334.01\\\\-116.6016\\\\234.2703\\\\334.01\\\\-121.2891\\\\234.303\\\\334.01\\\\-130.6641\\\\234.2081\\\\334.01\\\\-133.0078\\\\234.2426\\\\334.01\\\\-137.6953\\\\234.2081\\\\334.01\\\\-142.3828\\\\234.3198\\\\334.01\\\\-147.0703\\\\234.2191\\\\334.01\\\\-156.4453\\\\234.1685\\\\334.01\\\\-158.7891\\\\234.2273\\\\334.01\\\\-161.1328\\\\234.1641\\\\334.01\\\\-165.8203\\\\234.1641\\\\334.01\\\\-168.1641\\\\234.3426\\\\334.01\\\\-175.1953\\\\234.3328\\\\334.01\\\\-177.5391\\\\234.381\\\\334.01\\\\-179.8828\\\\234.3426\\\\334.01\\\\-186.9141\\\\234.3837\\\\334.01\\\\-189.2578\\\\234.3359\\\\334.01\\\\-193.9453\\\\234.4194\\\\334.01\\\\-198.6328\\\\234.4053\\\\334.01\\\\-200.9766\\\\234.4535\\\\334.01\\\\-203.3203\\\\234.4053\\\\334.01\\\\-208.0078\\\\234.4078\\\\334.01\\\\-212.6953\\\\234.5484\\\\334.01\\\\-215.0391\\\\234.5301\\\\334.01\\\\-219.7266\\\\234.6855\\\\334.01\\\\-224.4141\\\\234.6051\\\\334.01\\\\-231.4453\\\\234.5285\\\\334.01\\\\-243.1641\\\\234.1437\\\\334.01\\\\-247.8516\\\\233.6847\\\\334.01\\\\-250.1953\\\\233.672\\\\334.01\\\\-252.0368\\\\234.7172\\\\334.01\\\\-252.5391\\\\236.6006\\\\334.01\\\\-253.2552\\\\237.0609\\\\334.01\\\\-252.5391\\\\237.1579\\\\334.01\\\\-250.1953\\\\238.0169\\\\334.01\\\\-247.8516\\\\238.0779\\\\334.01\\\\-243.1641\\\\238.0359\\\\334.01\\\\-222.0703\\\\238.0611\\\\334.01\\\\-215.0391\\\\238.1343\\\\334.01\\\\-210.3516\\\\238.1037\\\\334.01\\\\-203.3203\\\\238.1419\\\\334.01\\\\-193.9453\\\\238.1633\\\\334.01\\\\-186.9141\\\\238.0901\\\\334.01\\\\-175.1953\\\\238.2427\\\\334.01\\\\-163.4766\\\\238.1727\\\\334.01\\\\-156.4453\\\\238.2124\\\\334.01\\\\-144.7266\\\\238.192\\\\334.01\\\\-142.3828\\\\238.2328\\\\334.01\\\\-137.6953\\\\238.1927\\\\334.01\\\\-114.2578\\\\238.2009\\\\334.01\\\\-109.5703\\\\238.1609\\\\334.01\\\\-102.5391\\\\238.202\\\\334.01\\\\-97.85156\\\\238.1609\\\\334.01\\\\-93.16406\\\\238.1906\\\\334.01\\\\-88.47656\\\\238.1369\\\\334.01\\\\-86.13281\\\\238.1695\\\\334.01\\\\-81.44531\\\\238.1483\\\\334.01\\\\-76.75781\\\\238.1913\\\\334.01\\\\-67.38281\\\\238.1386\\\\334.01\\\\-65.03906\\\\238.1596\\\\334.01\\\\-53.32031\\\\238.1197\\\\334.01\\\\-43.94531\\\\238.1498\\\\334.01\\\\-32.22656\\\\238.1197\\\\334.01\\\\-25.19531\\\\238.1483\\\\334.01\\\\-22.85156\\\\238.1084\\\\334.01\\\\-18.16406\\\\238.1483\\\\334.01\\\\-8.789063\\\\238.1156\\\\334.01\\\\-1.757813\\\\238.1483\\\\334.01\\\\2.929688\\\\238.1177\\\\334.01\\\\14.64844\\\\238.1369\\\\334.01\\\\28.71094\\\\238.073\\\\334.01\\\\42.77344\\\\237.9922\\\\334.01\\\\47.46094\\\\238.0047\\\\334.01\\\\54.49219\\\\237.9503\\\\334.01\\\\61.52344\\\\237.9583\\\\334.01\\\\66.21094\\\\237.9084\\\\334.01\\\\70.89844\\\\237.9294\\\\334.01\\\\77.92969\\\\237.9084\\\\334.01\\\\82.61719\\\\237.9318\\\\334.01\\\\84.96094\\\\237.4483\\\\334.01\\\\87.30469\\\\237.4347\\\\334.01\\\\89.64844\\\\237.735\\\\334.01\\\\91.99219\\\\236.9602\\\\334.01\\\\96.67969\\\\236.8598\\\\334.01\\\\99.02344\\\\236.9089\\\\334.01\\\\103.7109\\\\236.9145\\\\334.01\\\\108.3984\\\\236.8773\\\\334.01\\\\113.0859\\\\236.9438\\\\334.01\\\\117.7734\\\\236.8147\\\\334.01\\\\127.1484\\\\236.8051\\\\334.01\\\\131.8359\\\\236.88\\\\334.01\\\\136.5234\\\\236.7721\\\\334.01\\\\141.2109\\\\236.7996\\\\334.01\\\\143.5547\\\\236.7556\\\\334.01\\\\152.9297\\\\236.7134\\\\334.01\\\\155.2734\\\\236.673\\\\334.01\\\\159.9609\\\\236.7413\\\\334.01\\\\174.0234\\\\236.612\\\\334.01\\\\176.3672\\\\236.6756\\\\334.01\\\\181.0547\\\\236.6625\\\\334.01\\\\185.7422\\\\236.564\\\\334.01\\\\190.4297\\\\236.5997\\\\334.01\\\\197.4609\\\\236.5524\\\\334.01\\\\199.8047\\\\236.5758\\\\334.01\\\\206.8359\\\\236.493\\\\334.01\\\\225.5859\\\\236.4299\\\\334.01\\\\244.3359\\\\236.4273\\\\334.01\\\\249.0234\\\\236.379\\\\334.01\\\\251.3672\\\\235.5749\\\\334.01\\\\253.7109\\\\236.4964\\\\334.01\\\\254.4123\\\\237.0609\\\\334.01\\\\255.858\\\\239.4047\\\\334.01\\\\255.6086\\\\241.7484\\\\334.01\\\\254.6009\\\\244.0922\\\\334.01\\\\253.7109\\\\245.0623\\\\334.01\\\\252.6891\\\\246.4359\\\\334.01\\\\251.3672\\\\248.4433\\\\334.01\\\\248.6766\\\\251.1234\\\\334.01\\\\246.6797\\\\253.2569\\\\334.01\\\\244.3359\\\\255.5082\\\\334.01\\\\241.9922\\\\258.0435\\\\334.01\\\\239.6484\\\\260.3833\\\\334.01\\\\237.3047\\\\262.8111\\\\334.01\\\\234.9609\\\\265.1107\\\\334.01\\\\232.6172\\\\267.5191\\\\334.01\\\\225.5957\\\\274.5609\\\\334.01\\\\220.7587\\\\279.2484\\\\334.01\\\\218.4622\\\\281.5922\\\\334.01\\\\215.9334\\\\283.9359\\\\334.01\\\\213.5136\\\\286.2797\\\\334.01\\\\211.5234\\\\288.0286\\\\334.01\\\\209.1797\\\\289.5707\\\\334.01\\\\206.8359\\\\290.8047\\\\334.01\\\\204.4922\\\\290.8047\\\\334.01\\\\199.8047\\\\290.7131\\\\334.01\\\\197.4609\\\\290.7579\\\\334.01\\\\195.1172\\\\290.4285\\\\334.01\\\\192.7734\\\\290.6412\\\\334.01\\\\190.4297\\\\290.0366\\\\334.01\\\\183.3984\\\\289.9869\\\\334.01\\\\176.3672\\\\290.0042\\\\334.01\\\\169.3359\\\\289.9643\\\\334.01\\\\159.9609\\\\289.9643\\\\334.01\\\\155.2734\\\\289.9193\\\\334.01\\\\150.5859\\\\289.9418\\\\334.01\\\\145.8984\\\\289.8967\\\\334.01\\\\136.5234\\\\289.9516\\\\334.01\\\\131.8359\\\\289.9091\\\\334.01\\\\124.8047\\\\289.939\\\\334.01\\\\110.7422\\\\289.9091\\\\334.01\\\\96.67969\\\\289.9193\\\\334.01\\\\91.99219\\\\289.9418\\\\334.01\\\\77.92969\\\\289.9217\\\\334.01\\\\63.86719\\\\289.9193\\\\334.01\\\\54.49219\\\\289.9418\\\\334.01\\\\52.14844\\\\289.9169\\\\334.01\\\\45.11719\\\\289.9292\\\\334.01\\\\33.39844\\\\289.8967\\\\334.01\\\\28.71094\\\\289.939\\\\334.01\\\\19.33594\\\\289.9319\\\\334.01\\\\16.99219\\\\289.9546\\\\334.01\\\\7.617188\\\\289.9193\\\\334.01\\\\2.929688\\\\289.9447\\\\334.01\\\\-1.757813\\\\289.9193\\\\334.01\\\\-11.13281\\\\289.9643\\\\334.01\\\\-15.82031\\\\289.9418\\\\334.01\\\\-20.50781\\\\289.9832\\\\334.01\\\\-32.22656\\\\289.9925\\\\334.01\\\\-34.57031\\\\289.9739\\\\334.01\\\\-41.60156\\\\290.0363\\\\334.01\\\\-46.28906\\\\290.0001\\\\334.01\\\\-55.66406\\\\290.0275\\\\334.01\\\\-60.35156\\\\290.0094\\\\334.01\\\\-67.38281\\\\290.0366\\\\334.01\\\\-69.72656\\\\290.8044\\\\334.01\\\\-72.07031\\\\290.032\\\\334.01\\\\-74.41406\\\\290.0632\\\\334.01\\\\-76.75781\\\\291.0641\\\\334.01\\\\-79.10156\\\\290.6554\\\\334.01\\\\-81.44531\\\\291.2212\\\\334.01\\\\-86.13281\\\\291.2357\\\\334.01\\\\-88.47656\\\\290.1748\\\\334.01\\\\-90.82031\\\\291.2501\\\\334.01\\\\-102.5391\\\\291.2918\\\\334.01\\\\-104.8828\\\\291.2642\\\\334.01\\\\-107.4707\\\\290.9672\\\\334.01\\\\-109.5703\\\\291.3054\\\\334.01\\\\-114.2578\\\\291.3054\\\\334.01\\\\-118.9453\\\\291.3578\\\\334.01\\\\-125.9766\\\\291.345\\\\334.01\\\\-130.6641\\\\291.3954\\\\334.01\\\\-140.0391\\\\291.3954\\\\334.01\\\\-151.7578\\\\291.4549\\\\334.01\\\\-163.4766\\\\291.4776\\\\334.01\\\\-168.1641\\\\291.5108\\\\334.01\\\\-184.5703\\\\291.5531\\\\334.01\\\\-189.2578\\\\291.5836\\\\334.01\\\\-196.2891\\\\291.5836\\\\334.01\\\\-198.6328\\\\291.8617\\\\334.01\\\\-200.9766\\\\291.6205\\\\334.01\\\\-203.3203\\\\292.0964\\\\334.01\\\\-205.6641\\\\292.3344\\\\334.01\\\\-208.0078\\\\292.3654\\\\334.01\\\\-210.3516\\\\292.0912\\\\334.01\\\\-212.1875\\\\290.9672\\\\334.01\\\\-215.0391\\\\288.6954\\\\334.01\\\\-217.3828\\\\286.5314\\\\334.01\\\\-219.7266\\\\284.4869\\\\334.01\\\\-222.0703\\\\282.1065\\\\334.01\\\\-225.0175\\\\279.2484\\\\334.01\\\\-227.3079\\\\276.9047\\\\334.01\\\\-229.8221\\\\274.5609\\\\334.01\\\\-231.4453\\\\272.9496\\\\334.01\\\\-232.0564\\\\272.2172\\\\334.01\\\\-233.7891\\\\270.4845\\\\334.01\\\\-236.1328\\\\268.3081\\\\334.01\\\\-238.4766\\\\265.837\\\\334.01\\\\-240.8203\\\\263.5652\\\\334.01\\\\-243.8257\\\\260.4984\\\\334.01\\\\-246.2413\\\\258.1547\\\\334.01\\\\-248.4672\\\\255.8109\\\\334.01\\\\-250.9794\\\\253.4672\\\\334.01\\\\-252.5391\\\\251.9189\\\\334.01\\\\-254.8828\\\\249.4032\\\\334.01\\\\-255.6368\\\\248.7797\\\\334.01\\\\-257.6019\\\\246.4359\\\\334.01\\\\-258.3731\\\\244.0922\\\\334.01\\\\-258.3472\\\\241.7484\\\\334.01\\\\-257.8529\\\\239.4047\\\\334.01\\\\-257.2266\\\\238.6262\\\\334.01\\\\-255.1592\\\\237.0609\\\\334.01\\\\-257.2266\\\\235.0319\\\\334.01\\\\-259.5703\\\\235.8942\\\\334.01\\\\-261.0516\\\\237.0609\\\\334.01\\\\-261.9141\\\\237.997\\\\334.01\\\\-262.9828\\\\239.4047\\\\334.01\\\\-263.0954\\\\241.7484\\\\334.01\\\\-262.7562\\\\244.0922\\\\334.01\\\\-261.9141\\\\245.3244\\\\334.01\\\\-259.5703\\\\248.3447\\\\334.01\\\\-259.0576\\\\248.7797\\\\334.01\\\\-255.4217\\\\253.4672\\\\334.01\\\\-252.5391\\\\256.6166\\\\334.01\\\\-250.1953\\\\258.8944\\\\334.01\\\\-247.8516\\\\261.3969\\\\334.01\\\\-245.5078\\\\263.5919\\\\334.01\\\\-244.0908\\\\265.1859\\\\334.01\\\\-241.5988\\\\267.5297\\\\334.01\\\\-239.4375\\\\269.8734\\\\334.01\\\\-237\\\\272.2172\\\\334.01\\\\-231.4453\\\\277.8564\\\\334.01\\\\-229.8857\\\\279.2484\\\\334.01\\\\-227.7252\\\\281.5922\\\\334.01\\\\-225.2042\\\\283.9359\\\\334.01\\\\-222.0703\\\\287.2521\\\\334.01\\\\-220.5943\\\\288.6234\\\\334.01\\\\-218.3814\\\\290.9672\\\\334.01\\\\-215.0391\\\\293.3202\\\\334.01\\\\-212.6953\\\\294.6652\\\\334.01\\\\-210.3516\\\\295.2812\\\\334.01\\\\-209.947\\\\295.6547\\\\334.01\\\\-208.0078\\\\296.5075\\\\334.01\\\\-205.6641\\\\296.8852\\\\334.01\\\\-203.3203\\\\297.1267\\\\334.01\\\\-196.2891\\\\297.0739\\\\334.01\\\\-193.9453\\\\296.9265\\\\334.01\\\\-182.2266\\\\296.9128\\\\334.01\\\\-179.8828\\\\296.8785\\\\334.01\\\\-170.5078\\\\296.8576\\\\334.01\\\\-156.4453\\\\296.8931\\\\334.01\\\\-151.7578\\\\296.8432\\\\334.01\\\\-147.0703\\\\296.894\\\\334.01\\\\-140.0391\\\\296.8608\\\\334.01\\\\-135.3516\\\\296.8709\\\\334.01\\\\-130.6641\\\\296.8266\\\\334.01\\\\-118.9453\\\\296.8981\\\\334.01\\\\-114.2578\\\\296.8981\\\\334.01\\\\-109.5703\\\\296.942\\\\334.01\\\\-97.85156\\\\296.8828\\\\334.01\\\\-86.13281\\\\296.9218\\\\334.01\\\\-79.10156\\\\296.913\\\\334.01\\\\-76.75781\\\\296.9514\\\\334.01\\\\-67.38281\\\\296.9953\\\\334.01\\\\-58.00781\\\\296.934\\\\334.01\\\\-55.66406\\\\297.1698\\\\334.01\\\\-53.32031\\\\297.1516\\\\334.01\\\\-50.97656\\\\296.9358\\\\334.01\\\\-43.94531\\\\296.9285\\\\334.01\\\\-39.25781\\\\296.9899\\\\334.01\\\\-36.91406\\\\296.8888\\\\334.01\\\\-34.57031\\\\296.8998\\\\334.01\\\\-32.22656\\\\297.252\\\\334.01\\\\-29.88281\\\\296.9011\\\\334.01\\\\-27.53906\\\\296.8789\\\\334.01\\\\-25.19531\\\\297.3806\\\\334.01\\\\-22.85156\\\\297.2719\\\\334.01\\\\-20.50781\\\\297.0591\\\\334.01\\\\-18.16406\\\\297.0665\\\\334.01\\\\-15.82031\\\\296.9285\\\\334.01\\\\-13.47656\\\\296.9377\\\\334.01\\\\-11.13281\\\\297.0627\\\\334.01\\\\-8.789063\\\\296.9095\\\\334.01\\\\-1.757813\\\\296.9095\\\\334.01\\\\7.617188\\\\296.8473\\\\334.01\\\\24.02344\\\\296.8058\\\\334.01\\\\28.71094\\\\296.7421\\\\334.01\\\\31.05469\\\\296.7743\\\\334.01\\\\40.42969\\\\296.7229\\\\334.01\\\\47.46094\\\\296.7229\\\\334.01\\\\61.52344\\\\296.6346\\\\334.01\\\\63.86719\\\\296.6518\\\\334.01\\\\68.55469\\\\296.5942\\\\334.01\\\\75.58594\\\\296.582\\\\334.01\\\\80.27344\\\\296.5412\\\\334.01\\\\87.30469\\\\296.5412\\\\334.01\\\\94.33594\\\\296.4668\\\\334.01\\\\101.3672\\\\296.4257\\\\334.01\\\\103.7109\\\\296.4597\\\\334.01\\\\108.3984\\\\296.4051\\\\334.01\\\\113.0859\\\\296.4393\\\\334.01\\\\122.4609\\\\296.3578\\\\334.01\\\\129.4922\\\\296.3288\\\\334.01\\\\131.8359\\\\295.9278\\\\334.01\\\\134.1797\\\\296.1292\\\\334.01\\\\136.5234\\\\296.0546\\\\334.01\\\\138.8672\\\\295.8486\\\\334.01\\\\143.5547\\\\295.8172\\\\334.01\\\\155.2734\\\\295.833\\\\334.01\\\\166.9922\\\\295.7684\\\\334.01\\\\174.0234\\\\295.6454\\\\334.01\\\\178.7109\\\\295.6819\\\\334.01\\\\183.3984\\\\295.6638\\\\334.01\\\\188.0859\\\\295.5916\\\\334.01\\\\192.7734\\\\295.6093\\\\334.01\\\\197.4609\\\\295.833\\\\334.01\\\\202.1484\\\\295.8172\\\\334.01\\\\204.4922\\\\295.4439\\\\334.01\\\\206.8359\\\\294.803\\\\334.01\\\\209.1797\\\\294.3717\\\\334.01\\\\211.5234\\\\292.5155\\\\334.01\\\\213.8672\\\\291.1916\\\\334.01\\\\216.2109\\\\289.5954\\\\334.01\\\\217.2437\\\\288.6234\\\\334.01\\\\218.5547\\\\287.1034\\\\334.01\\\\221.7932\\\\283.9359\\\\334.01\\\\225.5859\\\\279.9242\\\\334.01\\\\227.9297\\\\277.6213\\\\334.01\\\\230.2734\\\\275.1202\\\\334.01\\\\233.3138\\\\272.2172\\\\334.01\\\\234.9609\\\\270.3912\\\\334.01\\\\237.8462\\\\267.5297\\\\334.01\\\\240.0901\\\\265.1859\\\\334.01\\\\242.4443\\\\262.8422\\\\334.01\\\\246.6797\\\\258.431\\\\334.01\\\\249.248\\\\255.8109\\\\334.01\\\\251.4581\\\\253.4672\\\\334.01\\\\253.4629\\\\251.1234\\\\334.01\\\\256.0547\\\\248.2519\\\\334.01\\\\257.4878\\\\246.4359\\\\334.01\\\\259.8235\\\\244.0922\\\\334.01\\\\260.8724\\\\241.7484\\\\334.01\\\\261.781\\\\239.4047\\\\334.01\\\\261.0668\\\\237.0609\\\\334.01\\\\259.4941\\\\234.7172\\\\334.01\\\\258.3984\\\\233.6932\\\\334.01\\\\256.0547\\\\233.1227\\\\334.01\\\\253.7109\\\\232.9594\\\\334.01\\\\251.3672\\\\233.6412\\\\334.01\\\\249.0234\\\\232.7692\\\\334.01\\\\246.6797\\\\232.7821\\\\334.01\\\\241.9922\\\\233.0207\\\\334.01\\\\237.3047\\\\233.0207\\\\334.01\\\\232.6172\\\\233.091\\\\334.01\\\\230.2734\\\\233.0592\\\\334.01\\\\225.5859\\\\233.0819\\\\334.01\\\\216.2109\\\\233.0726\\\\334.01\\\\206.8359\\\\233.0245\\\\334.01\\\\204.4922\\\\232.8704\\\\334.01\\\\202.1484\\\\232.6027\\\\334.01\\\\199.8047\\\\232.6623\\\\334.01\\\\192.7734\\\\232.7456\\\\334.01\\\\183.3984\\\\232.7719\\\\334.01\\\\181.0547\\\\232.7456\\\\334.01\\\\169.3359\\\\232.7186\\\\334.01\\\\164.6484\\\\232.7588\\\\334.01\\\\150.5859\\\\232.8129\\\\334.01\\\\141.2109\\\\232.7746\\\\334.01\\\\138.8672\\\\232.6788\\\\334.01\\\\134.1797\\\\232.6477\\\\334.01\\\\129.4922\\\\231.8537\\\\334.01\\\\127.1484\\\\231.9275\\\\334.01\\\\124.8047\\\\231.7976\\\\334.01\\\\120.1172\\\\232.7071\\\\334.01\\\\113.0859\\\\232.8253\\\\334.01\\\\108.3984\\\\232.8003\\\\334.01\\\\106.0547\\\\232.6477\\\\334.01\\\\103.7109\\\\231.6597\\\\334.01\\\\102.765\\\\232.3734\\\\334.01\\\\101.3672\\\\233.0479\\\\334.01\\\\99.02344\\\\233.1568\\\\334.01\\\\91.99219\\\\233.131\\\\334.01\\\\82.61719\\\\233.1483\\\\334.01\\\\66.21094\\\\233.131\\\\334.01\\\\61.52344\\\\233.1568\\\\334.01\\\\45.11719\\\\233.1132\\\\334.01\\\\44.13628\\\\232.3734\\\\334.01\\\\42.77344\\\\231.0868\\\\334.01\\\\41.98608\\\\230.0297\\\\334.01\\\\42.77344\\\\229.1708\\\\334.01\\\\45.11719\\\\228.3666\\\\334.01\\\\47.46094\\\\226.8342\\\\334.01\\\\49.80469\\\\225.7806\\\\334.01\\\\52.14844\\\\224.4214\\\\334.01\\\\54.49219\\\\223.3104\\\\334.01\\\\59.17969\\\\219.9071\\\\334.01\\\\61.51359\\\\218.3109\\\\334.01\\\\63.86719\\\\216.5456\\\\334.01\\\\66.21094\\\\214.6382\\\\334.01\\\\67.29213\\\\213.6234\\\\334.01\\\\71.99537\\\\208.9359\\\\334.01\\\\76.04661\\\\204.2484\\\\334.01\\\\77.48438\\\\201.9047\\\\334.01\\\\77.92969\\\\201.4099\\\\334.01\\\\81.04408\\\\197.2172\\\\334.01\\\\82.10064\\\\194.8734\\\\334.01\\\\82.61719\\\\194.2786\\\\334.01\\\\83.77148\\\\192.5297\\\\334.01\\\\84.75167\\\\190.1859\\\\334.01\\\\85.91919\\\\187.8422\\\\334.01\\\\86.84645\\\\185.4984\\\\334.01\\\\88.24593\\\\183.1547\\\\334.01\\\\88.69778\\\\180.8109\\\\334.01\\\\89.31935\\\\178.4672\\\\334.01\\\\90.28825\\\\176.1234\\\\334.01\\\\90.88572\\\\173.7797\\\\334.01\\\\91.32725\\\\171.4359\\\\334.01\\\\92.09135\\\\169.0922\\\\334.01\\\\92.73549\\\\166.7484\\\\334.01\\\\93.00426\\\\164.4047\\\\334.01\\\\93.15228\\\\159.7172\\\\334.01\\\\93.21165\\\\155.0297\\\\334.01\\\\93.16998\\\\150.3422\\\\334.01\\\\93.04629\\\\145.6547\\\\334.01\\\\92.89885\\\\143.3109\\\\334.01\\\\92.4685\\\\140.9672\\\\334.01\\\\91.65399\\\\138.6234\\\\334.01\\\\90.63558\\\\133.9359\\\\334.01\\\\89.94542\\\\131.5922\\\\334.01\\\\88.9603\\\\129.2484\\\\334.01\\\\88.56628\\\\126.9047\\\\334.01\\\\87.77809\\\\124.5609\\\\334.01\\\\86.38477\\\\122.2172\\\\334.01\\\\85.54688\\\\119.8734\\\\334.01\\\\84.18599\\\\117.5297\\\\334.01\\\\83.21418\\\\115.1859\\\\334.01\\\\81.51971\\\\112.8422\\\\334.01\\\\80.27344\\\\110.6408\\\\334.01\\\\78.70409\\\\108.1547\\\\334.01\\\\77.92969\\\\107.2539\\\\334.01\\\\75.58594\\\\104.2182\\\\334.01\\\\70.89844\\\\98.90157\\\\334.01\\\\68.45073\\\\96.43594\\\\334.01\\\\66.21094\\\\94.55936\\\\334.01\\\\63.09443\\\\91.74844\\\\334.01\\\\61.52344\\\\90.59526\\\\334.01\\\\59.17969\\\\88.5986\\\\334.01\\\\56.83594\\\\87.31498\\\\334.01\\\\54.49219\\\\85.86478\\\\334.01\\\\52.14844\\\\84.14245\\\\334.01\\\\49.80469\\\\83.22958\\\\334.01\\\\47.46094\\\\81.94525\\\\334.01\\\\45.11719\\\\80.9931\\\\334.01\\\\43.27874\\\\80.02969\\\\334.01\\\\42.77344\\\\79.65244\\\\334.01\\\\40.42969\\\\78.85207\\\\334.01\\\\38.08594\\\\78.4912\\\\334.01\\\\35.74219\\\\77.58901\\\\334.01\\\\33.39844\\\\76.8085\\\\334.01\\\\28.71094\\\\75.86382\\\\334.01\\\\26.36719\\\\75.08454\\\\334.01\\\\24.02344\\\\74.55878\\\\334.01\\\\21.67969\\\\74.41319\\\\334.01\\\\14.64844\\\\74.18806\\\\334.01\\\\7.617188\\\\74.26453\\\\334.01\\\\2.929688\\\\74.44027\\\\334.01\\\\0.5859375\\\\74.70742\\\\334.01\\\\-4.101563\\\\76.08793\\\\334.01\\\\-6.445313\\\\76.51406\\\\334.01\\\\-8.789063\\\\77.1104\\\\334.01\\\\-11.13281\\\\78.11278\\\\334.01\\\\-15.82031\\\\79.19739\\\\334.01\\\\-18.16406\\\\80.65051\\\\334.01\\\\-20.50781\\\\81.58109\\\\334.01\\\\-22.85156\\\\82.92365\\\\334.01\\\\-25.19531\\\\83.7171\\\\334.01\\\\-27.53906\\\\85.51434\\\\334.01\\\\-29.88281\\\\86.55049\\\\334.01\\\\-32.22656\\\\88.22651\\\\334.01\\\\-34.57031\\\\90.14594\\\\334.01\\\\-36.91406\\\\91.72009\\\\334.01\\\\-41.60156\\\\95.61852\\\\334.01\\\\-47.01968\\\\101.1234\\\\334.01\\\\-50.97656\\\\106.2919\\\\334.01\\\\-54.02066\\\\110.4984\\\\334.01\\\\-55.66406\\\\113.0483\\\\334.01\\\\-56.86023\\\\115.1859\\\\334.01\\\\-57.96204\\\\117.5297\\\\334.01\\\\-60.48373\\\\122.2172\\\\334.01\\\\-61.34826\\\\124.5609\\\\334.01\\\\-61.9119\\\\126.9047\\\\334.01\\\\-63.09862\\\\129.2484\\\\334.01\\\\-63.86719\\\\131.5922\\\\334.01\\\\-64.28482\\\\133.9359\\\\334.01\\\\-65.63528\\\\138.6234\\\\334.01\\\\-66.16119\\\\143.3109\\\\334.01\\\\-66.7664\\\\150.3422\\\\334.01\\\\-66.95463\\\\155.0297\\\\334.01\\\\-66.72736\\\\159.7172\\\\334.01\\\\-66.31696\\\\164.4047\\\\334.01\\\\-65.80171\\\\169.0922\\\\334.01\\\\-65.46725\\\\171.4359\\\\334.01\\\\-64.59868\\\\173.7797\\\\334.01\\\\-63.56812\\\\178.4672\\\\334.01\\\\-62.35712\\\\180.8109\\\\334.01\\\\-61.55333\\\\183.1547\\\\334.01\\\\-61.07733\\\\185.4984\\\\334.01\\\\-59.6588\\\\187.8422\\\\334.01\\\\-58.72026\\\\190.1859\\\\334.01\\\\-57.18415\\\\192.5297\\\\334.01\\\\-56.40602\\\\194.8734\\\\334.01\\\\-55.66406\\\\195.7821\\\\334.01\\\\-53.32031\\\\199.1387\\\\334.01\\\\-52.92969\\\\199.5609\\\\334.01\\\\-51.7693\\\\201.9047\\\\334.01\\\\-49.67076\\\\204.2484\\\\334.01\\\\-47.72281\\\\206.5922\\\\334.01\\\\-45.48062\\\\208.9359\\\\334.01\\\\-43.33069\\\\211.2797\\\\334.01\\\\-41.60156\\\\212.8348\\\\334.01\\\\-39.25781\\\\215.1041\\\\334.01\\\\-36.91406\\\\217.014\\\\334.01\\\\-34.57031\\\\219.1361\\\\334.01\\\\-32.22656\\\\220.3536\\\\334.01\\\\-29.88281\\\\222.028\\\\334.01\\\\-27.53906\\\\223.8316\\\\334.01\\\\-25.19531\\\\224.6377\\\\334.01\\\\-22.85156\\\\226.2194\\\\334.01\\\\-20.50781\\\\227.2216\\\\334.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851156731500001.532752123275\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"543\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"21\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-16.05469\\\\230.0297\\\\337.01\\\\-18.16406\\\\232.5531\\\\337.01\\\\-20.50781\\\\233.1221\\\\337.01\\\\-36.91406\\\\233.1483\\\\337.01\\\\-41.60156\\\\233.19\\\\337.01\\\\-43.94531\\\\233.1652\\\\337.01\\\\-58.00781\\\\233.2061\\\\337.01\\\\-62.69531\\\\233.1981\\\\337.01\\\\-65.03906\\\\233.0382\\\\337.01\\\\-67.38281\\\\232.9942\\\\337.01\\\\-69.72656\\\\233.0671\\\\337.01\\\\-74.41406\\\\233.0859\\\\337.01\\\\-86.13281\\\\233.0859\\\\337.01\\\\-90.82031\\\\233.131\\\\337.01\\\\-93.16406\\\\233.6525\\\\337.01\\\\-95.50781\\\\233.9503\\\\337.01\\\\-97.85156\\\\234.099\\\\337.01\\\\-102.5391\\\\234.2346\\\\337.01\\\\-107.2266\\\\234.2191\\\\337.01\\\\-111.9141\\\\234.2994\\\\337.01\\\\-114.2578\\\\234.2346\\\\337.01\\\\-123.6328\\\\234.2703\\\\337.01\\\\-125.9766\\\\234.2122\\\\337.01\\\\-130.6641\\\\234.1932\\\\337.01\\\\-133.0078\\\\234.2387\\\\337.01\\\\-137.6953\\\\234.1641\\\\337.01\\\\-142.3828\\\\234.2994\\\\337.01\\\\-147.0703\\\\234.1641\\\\337.01\\\\-149.4141\\\\234.2081\\\\337.01\\\\-156.4453\\\\234.1404\\\\337.01\\\\-158.7891\\\\234.1785\\\\337.01\\\\-163.4766\\\\234.1453\\\\337.01\\\\-165.8203\\\\234.1785\\\\337.01\\\\-168.1641\\\\234.3108\\\\337.01\\\\-184.5703\\\\234.3328\\\\337.01\\\\-189.2578\\\\234.3204\\\\337.01\\\\-193.9453\\\\234.4002\\\\337.01\\\\-200.9766\\\\234.471\\\\337.01\\\\-208.0078\\\\234.4053\\\\337.01\\\\-212.6953\\\\234.5285\\\\337.01\\\\-215.0391\\\\234.5285\\\\337.01\\\\-217.3828\\\\234.6247\\\\337.01\\\\-222.0703\\\\234.6649\\\\337.01\\\\-224.4141\\\\234.5484\\\\337.01\\\\-229.1016\\\\234.5121\\\\337.01\\\\-236.1328\\\\234.3573\\\\337.01\\\\-238.4766\\\\234.2224\\\\337.01\\\\-243.1641\\\\234.119\\\\337.01\\\\-247.8516\\\\233.6502\\\\337.01\\\\-250.1953\\\\233.6581\\\\337.01\\\\-252.28\\\\234.7172\\\\337.01\\\\-252.5391\\\\235.7872\\\\337.01\\\\-253.8707\\\\237.0609\\\\337.01\\\\-252.5391\\\\237.3071\\\\337.01\\\\-250.1953\\\\238.1959\\\\337.01\\\\-243.1641\\\\238.1697\\\\337.01\\\\-226.7578\\\\238.1965\\\\337.01\\\\-215.0391\\\\238.2418\\\\337.01\\\\-210.3516\\\\238.2328\\\\337.01\\\\-200.9766\\\\238.2793\\\\337.01\\\\-186.9141\\\\238.2513\\\\337.01\\\\-182.2266\\\\238.3066\\\\337.01\\\\-172.8516\\\\238.3418\\\\337.01\\\\-158.7891\\\\238.3078\\\\337.01\\\\-151.7578\\\\238.3537\\\\337.01\\\\-147.0703\\\\238.3165\\\\337.01\\\\-142.3828\\\\238.3368\\\\337.01\\\\-128.3203\\\\238.3351\\\\337.01\\\\-123.6328\\\\238.3078\\\\337.01\\\\-111.9141\\\\238.3297\\\\337.01\\\\-107.2266\\\\238.2891\\\\337.01\\\\-102.5391\\\\238.3193\\\\337.01\\\\-97.85156\\\\238.2891\\\\337.01\\\\-93.16406\\\\238.3297\\\\337.01\\\\-88.47656\\\\238.2715\\\\337.01\\\\-81.44531\\\\238.2709\\\\337.01\\\\-76.75781\\\\238.3193\\\\337.01\\\\-67.38281\\\\238.2801\\\\337.01\\\\-65.03906\\\\238.309\\\\337.01\\\\-53.32031\\\\238.2607\\\\337.01\\\\-39.25781\\\\238.2801\\\\337.01\\\\-34.57031\\\\238.309\\\\337.01\\\\-32.22656\\\\238.2793\\\\337.01\\\\-11.13281\\\\238.2516\\\\337.01\\\\-1.757813\\\\238.3179\\\\337.01\\\\2.929688\\\\238.2612\\\\337.01\\\\7.617188\\\\238.2801\\\\337.01\\\\9.960938\\\\238.2423\\\\337.01\\\\16.99219\\\\238.2423\\\\337.01\\\\31.05469\\\\238.1953\\\\337.01\\\\33.39844\\\\238.2234\\\\337.01\\\\42.77344\\\\238.1566\\\\337.01\\\\45.11719\\\\238.1953\\\\337.01\\\\54.49219\\\\238.1478\\\\337.01\\\\66.21094\\\\238.1119\\\\337.01\\\\75.58594\\\\238.1016\\\\337.01\\\\82.61719\\\\238.1289\\\\337.01\\\\84.96094\\\\237.6617\\\\337.01\\\\87.30469\\\\238.1036\\\\337.01\\\\89.64844\\\\238.0933\\\\337.01\\\\91.99219\\\\237.956\\\\337.01\\\\94.33594\\\\237.1551\\\\337.01\\\\96.67969\\\\237.0326\\\\337.01\\\\101.3672\\\\236.9958\\\\337.01\\\\103.7109\\\\237.0335\\\\337.01\\\\106.0547\\\\237.7065\\\\337.01\\\\108.3984\\\\237.0328\\\\337.01\\\\113.0859\\\\237.0932\\\\337.01\\\\117.7734\\\\236.961\\\\337.01\\\\120.1172\\\\237.0144\\\\337.01\\\\124.8047\\\\236.9785\\\\337.01\\\\127.1484\\\\236.9111\\\\337.01\\\\129.4922\\\\237.0144\\\\337.01\\\\134.1797\\\\236.9964\\\\337.01\\\\138.8672\\\\236.8935\\\\337.01\\\\150.5859\\\\236.8935\\\\337.01\\\\152.9297\\\\236.8455\\\\337.01\\\\164.6484\\\\236.8786\\\\337.01\\\\171.6797\\\\236.7721\\\\337.01\\\\181.0547\\\\236.8165\\\\337.01\\\\183.3984\\\\236.7296\\\\337.01\\\\190.4297\\\\236.7577\\\\337.01\\\\199.8047\\\\236.7158\\\\337.01\\\\202.1484\\\\236.6625\\\\337.01\\\\211.5234\\\\236.6215\\\\337.01\\\\216.2109\\\\236.6341\\\\337.01\\\\223.2422\\\\236.5608\\\\337.01\\\\230.2734\\\\236.612\\\\337.01\\\\237.3047\\\\236.564\\\\337.01\\\\246.6797\\\\236.5556\\\\337.01\\\\249.0234\\\\236.5217\\\\337.01\\\\251.3672\\\\235.8337\\\\337.01\\\\253.7109\\\\236.673\\\\337.01\\\\254.1778\\\\237.0609\\\\337.01\\\\255.7377\\\\239.4047\\\\337.01\\\\255.5197\\\\241.7484\\\\337.01\\\\254.5064\\\\244.0922\\\\337.01\\\\252.6128\\\\246.4359\\\\337.01\\\\251.3672\\\\248.2697\\\\337.01\\\\248.4421\\\\251.1234\\\\337.01\\\\246.6797\\\\253.0868\\\\337.01\\\\244.3359\\\\255.2826\\\\337.01\\\\241.9922\\\\257.8041\\\\337.01\\\\239.3325\\\\260.4984\\\\337.01\\\\236.9309\\\\262.8422\\\\337.01\\\\234.6654\\\\265.1859\\\\337.01\\\\232.2605\\\\267.5297\\\\337.01\\\\230.2734\\\\269.6653\\\\337.01\\\\227.9297\\\\271.8957\\\\337.01\\\\225.5859\\\\274.3181\\\\337.01\\\\223.2422\\\\276.5594\\\\337.01\\\\218.2125\\\\281.5922\\\\337.01\\\\215.6647\\\\283.9359\\\\337.01\\\\213.3404\\\\286.2797\\\\337.01\\\\211.5234\\\\287.78\\\\337.01\\\\209.1797\\\\289.4079\\\\337.01\\\\206.8359\\\\290.6449\\\\337.01\\\\202.1484\\\\290.6449\\\\337.01\\\\199.8047\\\\290.5828\\\\337.01\\\\197.4609\\\\290.6118\\\\337.01\\\\195.1172\\\\290.5487\\\\337.01\\\\192.7734\\\\290.6282\\\\337.01\\\\190.4297\\\\289.8361\\\\337.01\\\\183.3984\\\\289.8157\\\\337.01\\\\176.3672\\\\289.8256\\\\337.01\\\\169.3359\\\\289.7852\\\\337.01\\\\159.9609\\\\289.7852\\\\337.01\\\\155.2734\\\\289.7545\\\\337.01\\\\150.5859\\\\289.785\\\\337.01\\\\145.8984\\\\289.7439\\\\337.01\\\\129.4922\\\\289.765\\\\337.01\\\\122.4609\\\\289.7234\\\\337.01\\\\113.0859\\\\289.7246\\\\337.01\\\\108.3984\\\\289.7552\\\\337.01\\\\106.0547\\\\289.7246\\\\337.01\\\\91.99219\\\\289.7448\\\\337.01\\\\80.27344\\\\289.7234\\\\337.01\\\\73.24219\\\\289.7545\\\\337.01\\\\66.21094\\\\289.7545\\\\337.01\\\\56.83594\\\\289.7234\\\\337.01\\\\42.77344\\\\289.7246\\\\337.01\\\\40.42969\\\\289.765\\\\337.01\\\\31.05469\\\\289.7352\\\\337.01\\\\12.30469\\\\289.7852\\\\337.01\\\\2.929688\\\\289.765\\\\337.01\\\\-8.789063\\\\289.7854\\\\337.01\\\\-25.19531\\\\289.7753\\\\337.01\\\\-29.88281\\\\289.8052\\\\337.01\\\\-34.57031\\\\289.7854\\\\337.01\\\\-53.32031\\\\289.8354\\\\337.01\\\\-67.38281\\\\289.8354\\\\337.01\\\\-74.41406\\\\289.8648\\\\337.01\\\\-76.75781\\\\290.7283\\\\337.01\\\\-79.10156\\\\289.8554\\\\337.01\\\\-81.44531\\\\290.3386\\\\337.01\\\\-83.78906\\\\291.0974\\\\337.01\\\\-86.13281\\\\291.0974\\\\337.01\\\\-88.47656\\\\289.9266\\\\337.01\\\\-90.82031\\\\290.9763\\\\337.01\\\\-93.16406\\\\291.1297\\\\337.01\\\\-97.85156\\\\291.1137\\\\337.01\\\\-104.8828\\\\291.1611\\\\337.01\\\\-128.3203\\\\291.2212\\\\337.01\\\\-135.3516\\\\291.2642\\\\337.01\\\\-140.0391\\\\291.2501\\\\337.01\\\\-149.4141\\\\291.3054\\\\337.01\\\\-154.1016\\\\291.3054\\\\337.01\\\\-168.1641\\\\291.3705\\\\337.01\\\\-172.8516\\\\291.3705\\\\337.01\\\\-189.2578\\\\291.4549\\\\337.01\\\\-196.2891\\\\291.4549\\\\337.01\\\\-198.6328\\\\292.0931\\\\337.01\\\\-200.9766\\\\291.6703\\\\337.01\\\\-203.3203\\\\292.0439\\\\337.01\\\\-208.0078\\\\292.155\\\\337.01\\\\-210.3516\\\\291.8999\\\\337.01\\\\-211.6451\\\\290.9672\\\\337.01\\\\-212.6953\\\\290.0075\\\\337.01\\\\-215.0391\\\\288.4995\\\\337.01\\\\-219.7266\\\\284.2614\\\\337.01\\\\-226.7578\\\\277.3752\\\\337.01\\\\-229.1016\\\\275.0117\\\\337.01\\\\-231.4453\\\\272.749\\\\337.01\\\\-231.9032\\\\272.2172\\\\337.01\\\\-234.3526\\\\269.8734\\\\337.01\\\\-236.6545\\\\267.5297\\\\337.01\\\\-239.0497\\\\265.1859\\\\337.01\\\\-247.8516\\\\256.3387\\\\337.01\\\\-248.3156\\\\255.8109\\\\337.01\\\\-250.7947\\\\253.4672\\\\337.01\\\\-254.8828\\\\249.2404\\\\337.01\\\\-255.4349\\\\248.7797\\\\337.01\\\\-257.3968\\\\246.4359\\\\337.01\\\\-258.2731\\\\244.0922\\\\337.01\\\\-258.2375\\\\241.7484\\\\337.01\\\\-257.667\\\\239.4047\\\\337.01\\\\-257.2266\\\\238.8687\\\\337.01\\\\-255.0871\\\\237.0609\\\\337.01\\\\-257.2266\\\\235.0331\\\\337.01\\\\-259.5703\\\\235.8786\\\\337.01\\\\-261.0648\\\\237.0609\\\\337.01\\\\-261.9141\\\\237.9827\\\\337.01\\\\-262.9937\\\\239.4047\\\\337.01\\\\-263.0859\\\\241.7484\\\\337.01\\\\-262.7562\\\\244.0922\\\\337.01\\\\-261.9141\\\\245.3154\\\\337.01\\\\-259.5703\\\\248.3479\\\\337.01\\\\-259.0795\\\\248.7797\\\\337.01\\\\-255.473\\\\253.4672\\\\337.01\\\\-252.5391\\\\256.6491\\\\337.01\\\\-250.1953\\\\258.8997\\\\337.01\\\\-247.8516\\\\261.422\\\\337.01\\\\-245.5078\\\\263.5974\\\\337.01\\\\-244.0876\\\\265.1859\\\\337.01\\\\-241.5988\\\\267.5297\\\\337.01\\\\-239.4282\\\\269.8734\\\\337.01\\\\-236.9844\\\\272.2172\\\\337.01\\\\-233.7891\\\\275.424\\\\337.01\\\\-231.4453\\\\277.8406\\\\337.01\\\\-229.8799\\\\279.2484\\\\337.01\\\\-226.7578\\\\282.5503\\\\337.01\\\\-225.2042\\\\283.9359\\\\337.01\\\\-222.0703\\\\287.2521\\\\337.01\\\\-220.5943\\\\288.6234\\\\337.01\\\\-218.3718\\\\290.9672\\\\337.01\\\\-217.3828\\\\291.7129\\\\337.01\\\\-214.9922\\\\293.3109\\\\337.01\\\\-212.6953\\\\294.6589\\\\337.01\\\\-210.3516\\\\295.2864\\\\337.01\\\\-209.9019\\\\295.6547\\\\337.01\\\\-208.0078\\\\296.512\\\\337.01\\\\-205.6641\\\\296.899\\\\337.01\\\\-203.3203\\\\297.1108\\\\337.01\\\\-198.6328\\\\297.0992\\\\337.01\\\\-193.9453\\\\296.9203\\\\337.01\\\\-191.6016\\\\296.8886\\\\337.01\\\\-182.2266\\\\296.9061\\\\337.01\\\\-175.1953\\\\296.8497\\\\337.01\\\\-163.4766\\\\296.882\\\\337.01\\\\-154.1016\\\\296.8757\\\\337.01\\\\-151.7578\\\\296.8513\\\\337.01\\\\-142.3828\\\\296.8771\\\\337.01\\\\-140.0391\\\\296.8521\\\\337.01\\\\-128.3203\\\\296.8175\\\\337.01\\\\-109.5703\\\\296.916\\\\337.01\\\\-90.82031\\\\296.8938\\\\337.01\\\\-86.13281\\\\296.9322\\\\337.01\\\\-81.44531\\\\296.9041\\\\337.01\\\\-74.41406\\\\296.9622\\\\337.01\\\\-67.38281\\\\296.979\\\\337.01\\\\-58.00781\\\\296.9535\\\\337.01\\\\-55.66406\\\\297.2359\\\\337.01\\\\-53.32031\\\\297.1979\\\\337.01\\\\-50.97656\\\\296.9267\\\\337.01\\\\-43.94531\\\\296.9377\\\\337.01\\\\-39.25781\\\\296.878\\\\337.01\\\\-34.57031\\\\296.8985\\\\337.01\\\\-32.22656\\\\297.1454\\\\337.01\\\\-29.88281\\\\296.9011\\\\337.01\\\\-27.53906\\\\296.8899\\\\337.01\\\\-25.19531\\\\297.257\\\\337.01\\\\-22.85156\\\\297.2363\\\\337.01\\\\-20.50781\\\\296.8985\\\\337.01\\\\-8.789063\\\\296.9396\\\\337.01\\\\-6.445313\\\\297.0519\\\\337.01\\\\-4.101563\\\\296.8888\\\\337.01\\\\12.30469\\\\296.8163\\\\337.01\\\\16.99219\\\\296.8369\\\\337.01\\\\24.02344\\\\296.8163\\\\337.01\\\\28.71094\\\\296.7643\\\\337.01\\\\35.74219\\\\296.7743\\\\337.01\\\\45.11719\\\\296.7021\\\\337.01\\\\56.83594\\\\296.6839\\\\337.01\\\\61.52344\\\\296.6346\\\\337.01\\\\63.86719\\\\296.6548\\\\337.01\\\\70.89844\\\\296.582\\\\337.01\\\\87.30469\\\\296.5412\\\\337.01\\\\94.33594\\\\296.4801\\\\337.01\\\\103.7109\\\\296.4597\\\\337.01\\\\110.7422\\\\296.4059\\\\337.01\\\\113.0859\\\\296.4326\\\\337.01\\\\127.1484\\\\296.3578\\\\337.01\\\\134.1797\\\\296.2355\\\\337.01\\\\136.5234\\\\295.8685\\\\337.01\\\\138.8672\\\\296.0063\\\\337.01\\\\141.2109\\\\295.8486\\\\337.01\\\\143.5547\\\\295.8172\\\\337.01\\\\150.5859\\\\295.833\\\\337.01\\\\159.9609\\\\295.7849\\\\337.01\\\\164.6484\\\\295.8012\\\\337.01\\\\176.3672\\\\295.6638\\\\337.01\\\\178.7109\\\\295.6998\\\\337.01\\\\192.7734\\\\295.6093\\\\337.01\\\\195.1172\\\\295.7849\\\\337.01\\\\197.4609\\\\295.8486\\\\337.01\\\\202.1484\\\\295.7849\\\\337.01\\\\204.4922\\\\295.3989\\\\337.01\\\\206.8359\\\\294.7878\\\\337.01\\\\209.1797\\\\294.3606\\\\337.01\\\\211.5234\\\\292.5075\\\\337.01\\\\213.8672\\\\291.1916\\\\337.01\\\\216.2109\\\\289.5791\\\\337.01\\\\217.2271\\\\288.6234\\\\337.01\\\\218.5547\\\\287.1251\\\\337.01\\\\221.7773\\\\283.9359\\\\337.01\\\\225.5859\\\\279.9242\\\\337.01\\\\228.6029\\\\276.9047\\\\337.01\\\\230.8462\\\\274.5609\\\\337.01\\\\233.2856\\\\272.2172\\\\337.01\\\\234.9609\\\\270.3731\\\\337.01\\\\237.8504\\\\267.5297\\\\337.01\\\\240.0754\\\\265.1859\\\\337.01\\\\242.4628\\\\262.8422\\\\337.01\\\\246.6797\\\\258.4333\\\\337.01\\\\249.248\\\\255.8109\\\\337.01\\\\251.4573\\\\253.4672\\\\337.01\\\\256.0547\\\\248.2478\\\\337.01\\\\257.4822\\\\246.4359\\\\337.01\\\\259.856\\\\244.0922\\\\337.01\\\\260.9205\\\\241.7484\\\\337.01\\\\261.7867\\\\239.4047\\\\337.01\\\\261.0251\\\\237.0609\\\\337.01\\\\259.4996\\\\234.7172\\\\337.01\\\\258.3984\\\\233.6932\\\\337.01\\\\256.0547\\\\233.1313\\\\337.01\\\\253.7109\\\\233.0145\\\\337.01\\\\251.3672\\\\233.5155\\\\337.01\\\\249.0234\\\\232.7431\\\\337.01\\\\244.3359\\\\232.8555\\\\337.01\\\\241.9922\\\\233.0207\\\\337.01\\\\234.9609\\\\233.0537\\\\337.01\\\\227.9297\\\\233.0305\\\\337.01\\\\223.2422\\\\233.0632\\\\337.01\\\\206.8359\\\\233.0145\\\\337.01\\\\204.4922\\\\232.882\\\\337.01\\\\202.1484\\\\232.6027\\\\337.01\\\\195.1172\\\\232.7456\\\\337.01\\\\192.7734\\\\232.7186\\\\337.01\\\\183.3984\\\\232.7588\\\\337.01\\\\174.0234\\\\232.7186\\\\337.01\\\\157.6172\\\\232.7614\\\\337.01\\\\143.5547\\\\232.8253\\\\337.01\\\\136.5234\\\\232.6767\\\\337.01\\\\129.4922\\\\232.693\\\\337.01\\\\127.0996\\\\232.3734\\\\337.01\\\\124.8047\\\\232.7481\\\\337.01\\\\120.1172\\\\232.7614\\\\337.01\\\\113.0859\\\\232.8617\\\\337.01\\\\110.7422\\\\232.8253\\\\337.01\\\\106.0547\\\\232.8617\\\\337.01\\\\103.7109\\\\232.1634\\\\337.01\\\\101.3672\\\\232.998\\\\337.01\\\\99.02344\\\\233.1221\\\\337.01\\\\89.64844\\\\233.1483\\\\337.01\\\\84.96094\\\\233.1221\\\\337.01\\\\70.89844\\\\233.1568\\\\337.01\\\\68.55469\\\\233.131\\\\337.01\\\\54.49219\\\\233.1397\\\\337.01\\\\45.11719\\\\233.0951\\\\337.01\\\\44.15678\\\\232.3734\\\\337.01\\\\42.77344\\\\231.0868\\\\337.01\\\\41.98608\\\\230.0297\\\\337.01\\\\42.77344\\\\229.1708\\\\337.01\\\\45.11719\\\\228.3666\\\\337.01\\\\47.46094\\\\226.8342\\\\337.01\\\\49.80469\\\\225.7676\\\\337.01\\\\52.14844\\\\224.4137\\\\337.01\\\\54.49219\\\\223.2807\\\\337.01\\\\59.17969\\\\219.898\\\\337.01\\\\61.47501\\\\218.3109\\\\337.01\\\\63.86719\\\\216.4922\\\\337.01\\\\66.21094\\\\214.6099\\\\337.01\\\\70.89844\\\\210.0019\\\\337.01\\\\71.93934\\\\208.9359\\\\337.01\\\\76.00388\\\\204.2484\\\\337.01\\\\77.40801\\\\201.9047\\\\337.01\\\\77.92969\\\\201.3145\\\\337.01\\\\81.018\\\\197.2172\\\\337.01\\\\82.01642\\\\194.8734\\\\337.01\\\\83.7233\\\\192.5297\\\\337.01\\\\84.67807\\\\190.1859\\\\337.01\\\\85.88257\\\\187.8422\\\\337.01\\\\86.77662\\\\185.4984\\\\337.01\\\\88.21052\\\\183.1547\\\\337.01\\\\88.67678\\\\180.8109\\\\337.01\\\\89.25264\\\\178.4672\\\\337.01\\\\90.24816\\\\176.1234\\\\337.01\\\\90.83131\\\\173.7797\\\\337.01\\\\91.26373\\\\171.4359\\\\337.01\\\\92.6648\\\\166.7484\\\\337.01\\\\92.97371\\\\164.4047\\\\337.01\\\\93.12873\\\\159.7172\\\\337.01\\\\93.17584\\\\152.6859\\\\337.01\\\\93.0293\\\\145.6547\\\\337.01\\\\92.85534\\\\143.3109\\\\337.01\\\\92.3933\\\\140.9672\\\\337.01\\\\91.5518\\\\138.6234\\\\337.01\\\\90.58476\\\\133.9359\\\\337.01\\\\89.87284\\\\131.5922\\\\337.01\\\\88.92268\\\\129.2484\\\\337.01\\\\88.54911\\\\126.9047\\\\337.01\\\\87.68194\\\\124.5609\\\\337.01\\\\86.33789\\\\122.2172\\\\337.01\\\\85.47454\\\\119.8734\\\\337.01\\\\84.15683\\\\117.5297\\\\337.01\\\\83.14225\\\\115.1859\\\\337.01\\\\81.47615\\\\112.8422\\\\337.01\\\\80.27344\\\\110.7263\\\\337.01\\\\78.65778\\\\108.1547\\\\337.01\\\\77.92969\\\\107.3061\\\\337.01\\\\75.58594\\\\104.2673\\\\337.01\\\\70.89844\\\\98.97046\\\\337.01\\\\68.38074\\\\96.43594\\\\337.01\\\\66.21094\\\\94.59663\\\\337.01\\\\63.03367\\\\91.74844\\\\337.01\\\\61.52344\\\\90.60773\\\\337.01\\\\59.17969\\\\88.63029\\\\337.01\\\\56.83594\\\\87.3438\\\\337.01\\\\54.49219\\\\85.87691\\\\337.01\\\\52.14844\\\\84.18039\\\\337.01\\\\49.80469\\\\83.24171\\\\337.01\\\\47.46094\\\\81.97013\\\\337.01\\\\45.11719\\\\81.00246\\\\337.01\\\\42.77344\\\\79.69603\\\\337.01\\\\40.42969\\\\78.85781\\\\337.01\\\\38.08594\\\\78.49974\\\\337.01\\\\35.74219\\\\77.60603\\\\337.01\\\\33.39844\\\\76.81591\\\\337.01\\\\28.71094\\\\75.88577\\\\337.01\\\\26.36719\\\\75.09944\\\\337.01\\\\24.02344\\\\74.58508\\\\337.01\\\\21.67969\\\\74.41319\\\\337.01\\\\14.64844\\\\74.19961\\\\337.01\\\\7.617188\\\\74.26453\\\\337.01\\\\2.929688\\\\74.44027\\\\337.01\\\\0.5859375\\\\74.69731\\\\337.01\\\\-4.101563\\\\76.08793\\\\337.01\\\\-6.445313\\\\76.49226\\\\337.01\\\\-8.789063\\\\77.12093\\\\337.01\\\\-11.13281\\\\78.06062\\\\337.01\\\\-13.47656\\\\78.67705\\\\337.01\\\\-15.82031\\\\79.20602\\\\337.01\\\\-18.16406\\\\80.67077\\\\337.01\\\\-20.50781\\\\81.56818\\\\337.01\\\\-22.85156\\\\82.93452\\\\337.01\\\\-25.19531\\\\83.69257\\\\337.01\\\\-27.53906\\\\85.49158\\\\337.01\\\\-29.88281\\\\86.50658\\\\337.01\\\\-32.22656\\\\88.21391\\\\337.01\\\\-34.57031\\\\90.13181\\\\337.01\\\\-36.91406\\\\91.68333\\\\337.01\\\\-39.25781\\\\93.56712\\\\337.01\\\\-41.60156\\\\95.59077\\\\337.01\\\\-47.06793\\\\101.1234\\\\337.01\\\\-50.97656\\\\106.257\\\\337.01\\\\-54.06295\\\\110.4984\\\\337.01\\\\-55.66406\\\\112.9218\\\\337.01\\\\-56.87866\\\\115.1859\\\\337.01\\\\-58.00781\\\\117.468\\\\337.01\\\\-60.35156\\\\121.8745\\\\337.01\\\\-60.61105\\\\122.2172\\\\337.01\\\\-61.37396\\\\124.5609\\\\337.01\\\\-61.96955\\\\126.9047\\\\337.01\\\\-63.18912\\\\129.2484\\\\337.01\\\\-63.92686\\\\131.5922\\\\337.01\\\\-64.32825\\\\133.9359\\\\337.01\\\\-65.08414\\\\136.2797\\\\337.01\\\\-65.66541\\\\138.6234\\\\337.01\\\\-65.95693\\\\140.9672\\\\337.01\\\\-66.45103\\\\145.6547\\\\337.01\\\\-66.83923\\\\150.3422\\\\337.01\\\\-67.00504\\\\155.0297\\\\337.01\\\\-66.91849\\\\157.3734\\\\337.01\\\\-66.59546\\\\162.0609\\\\337.01\\\\-65.85083\\\\169.0922\\\\337.01\\\\-65.52673\\\\171.4359\\\\337.01\\\\-64.66129\\\\173.7797\\\\337.01\\\\-63.60744\\\\178.4672\\\\337.01\\\\-62.44127\\\\180.8109\\\\337.01\\\\-61.60844\\\\183.1547\\\\337.01\\\\-61.10444\\\\185.4984\\\\337.01\\\\-59.69611\\\\187.8422\\\\337.01\\\\-58.78688\\\\190.1859\\\\337.01\\\\-57.22429\\\\192.5297\\\\337.01\\\\-56.42923\\\\194.8734\\\\337.01\\\\-55.66406\\\\195.816\\\\337.01\\\\-53.32031\\\\199.2024\\\\337.01\\\\-52.98665\\\\199.5609\\\\337.01\\\\-51.81459\\\\201.9047\\\\337.01\\\\-49.69277\\\\204.2484\\\\337.01\\\\-47.77253\\\\206.5922\\\\337.01\\\\-45.4857\\\\208.9359\\\\337.01\\\\-43.94531\\\\210.7107\\\\337.01\\\\-39.25781\\\\215.1271\\\\337.01\\\\-36.91406\\\\217.0729\\\\337.01\\\\-34.57031\\\\219.1932\\\\337.01\\\\-32.22656\\\\220.397\\\\337.01\\\\-31.95135\\\\220.6547\\\\337.01\\\\-28.60054\\\\222.9984\\\\337.01\\\\-27.53906\\\\223.8551\\\\337.01\\\\-25.19531\\\\224.6817\\\\337.01\\\\-22.85156\\\\226.2544\\\\337.01\\\\-20.50781\\\\227.2455\\\\337.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851179732800001.515857303411\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"344\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"22\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"45.11719\\\\233.0951\\\\340.01\\\\43.64898\\\\232.3734\\\\340.01\\\\42.77344\\\\231.5882\\\\340.01\\\\41.51367\\\\230.0297\\\\340.01\\\\42.77344\\\\229.1609\\\\340.01\\\\45.11719\\\\228.3465\\\\340.01\\\\47.46094\\\\226.8296\\\\340.01\\\\49.80469\\\\225.7274\\\\340.01\\\\50.36671\\\\225.3422\\\\340.01\\\\54.49219\\\\223.2026\\\\340.01\\\\56.83594\\\\221.5721\\\\340.01\\\\61.40058\\\\218.3109\\\\340.01\\\\63.86719\\\\216.4497\\\\340.01\\\\66.21094\\\\214.5379\\\\340.01\\\\67.18151\\\\213.6234\\\\340.01\\\\71.87971\\\\208.9359\\\\340.01\\\\75.93159\\\\204.2484\\\\340.01\\\\77.34375\\\\201.9047\\\\340.01\\\\77.92969\\\\201.2338\\\\340.01\\\\81.00505\\\\197.2172\\\\340.01\\\\81.93835\\\\194.8734\\\\340.01\\\\83.70493\\\\192.5297\\\\340.01\\\\84.59618\\\\190.1859\\\\340.01\\\\85.85058\\\\187.8422\\\\340.01\\\\86.71875\\\\185.4984\\\\340.01\\\\88.16106\\\\183.1547\\\\340.01\\\\89.19947\\\\178.4672\\\\340.01\\\\90.19531\\\\176.1234\\\\340.01\\\\90.79267\\\\173.7797\\\\340.01\\\\91.21298\\\\171.4359\\\\340.01\\\\91.82967\\\\169.0922\\\\340.01\\\\92.58527\\\\166.7484\\\\340.01\\\\92.92848\\\\164.4047\\\\340.01\\\\93.04102\\\\162.0609\\\\340.01\\\\93.14051\\\\157.3734\\\\340.01\\\\93.15228\\\\152.6859\\\\340.01\\\\93.01096\\\\145.6547\\\\340.01\\\\92.82652\\\\143.3109\\\\340.01\\\\92.30957\\\\140.9672\\\\340.01\\\\91.49306\\\\138.6234\\\\340.01\\\\90.54668\\\\133.9359\\\\340.01\\\\89.79492\\\\131.5922\\\\340.01\\\\88.89133\\\\129.2484\\\\340.01\\\\88.5321\\\\126.9047\\\\340.01\\\\87.59558\\\\124.5609\\\\340.01\\\\86.30105\\\\122.2172\\\\340.01\\\\85.44\\\\119.8734\\\\340.01\\\\84.1048\\\\117.5297\\\\340.01\\\\83.04976\\\\115.1859\\\\340.01\\\\81.44531\\\\112.8422\\\\340.01\\\\78.61036\\\\108.1547\\\\340.01\\\\77.92969\\\\107.3653\\\\340.01\\\\75.58594\\\\104.3202\\\\340.01\\\\70.89844\\\\99.03911\\\\340.01\\\\68.31129\\\\96.43594\\\\340.01\\\\66.21094\\\\94.65131\\\\340.01\\\\63.00066\\\\91.74844\\\\340.01\\\\59.99457\\\\89.40469\\\\340.01\\\\59.17969\\\\88.66788\\\\340.01\\\\56.83594\\\\87.38558\\\\340.01\\\\52.7524\\\\84.71719\\\\340.01\\\\52.14844\\\\84.20734\\\\340.01\\\\49.80469\\\\83.25685\\\\340.01\\\\47.46094\\\\81.99566\\\\340.01\\\\45.11719\\\\81.03172\\\\340.01\\\\42.77344\\\\79.72434\\\\340.01\\\\40.42969\\\\78.86356\\\\340.01\\\\38.08594\\\\78.50819\\\\340.01\\\\33.39844\\\\76.83095\\\\340.01\\\\28.71094\\\\75.9072\\\\340.01\\\\26.36719\\\\75.12989\\\\340.01\\\\24.02344\\\\74.57621\\\\340.01\\\\21.67969\\\\74.42056\\\\340.01\\\\14.64844\\\\74.21133\\\\340.01\\\\9.960938\\\\74.21133\\\\340.01\\\\5.273438\\\\74.33174\\\\340.01\\\\2.929688\\\\74.44027\\\\340.01\\\\0.5859375\\\\74.68344\\\\340.01\\\\-4.101563\\\\76.06187\\\\340.01\\\\-6.445313\\\\76.48074\\\\340.01\\\\-8.789063\\\\77.09653\\\\340.01\\\\-11.13281\\\\78.03346\\\\340.01\\\\-13.47656\\\\78.66458\\\\340.01\\\\-15.82031\\\\79.18885\\\\340.01\\\\-18.16406\\\\80.65698\\\\340.01\\\\-20.50781\\\\81.53359\\\\340.01\\\\-22.85156\\\\82.9015\\\\340.01\\\\-25.19531\\\\83.66675\\\\340.01\\\\-27.53906\\\\85.45914\\\\340.01\\\\-29.88281\\\\86.475\\\\340.01\\\\-32.22656\\\\88.17611\\\\340.01\\\\-34.57031\\\\90.08352\\\\340.01\\\\-36.91406\\\\91.61217\\\\340.01\\\\-39.25781\\\\93.50252\\\\340.01\\\\-41.60156\\\\95.54475\\\\340.01\\\\-47.14196\\\\101.1234\\\\340.01\\\\-50.67958\\\\105.8109\\\\340.01\\\\-50.97656\\\\106.1445\\\\340.01\\\\-54.1083\\\\110.4984\\\\340.01\\\\-55.67351\\\\112.8422\\\\340.01\\\\-59.33949\\\\119.8734\\\\340.01\\\\-60.7103\\\\122.2172\\\\340.01\\\\-61.41526\\\\124.5609\\\\340.01\\\\-62.03443\\\\126.9047\\\\340.01\\\\-63.2848\\\\129.2484\\\\340.01\\\\-63.97519\\\\131.5922\\\\340.01\\\\-64.37412\\\\133.9359\\\\340.01\\\\-65.20158\\\\136.2797\\\\340.01\\\\-65.72266\\\\138.6234\\\\340.01\\\\-66.51716\\\\145.6547\\\\340.01\\\\-66.90674\\\\150.3422\\\\340.01\\\\-67.05817\\\\152.6859\\\\340.01\\\\-67.07191\\\\155.0297\\\\340.01\\\\-66.80727\\\\159.7172\\\\340.01\\\\-66.38559\\\\164.4047\\\\340.01\\\\-65.8744\\\\169.0922\\\\340.01\\\\-65.56069\\\\171.4359\\\\340.01\\\\-64.72816\\\\173.7797\\\\340.01\\\\-64.14594\\\\176.1234\\\\340.01\\\\-63.66697\\\\178.4672\\\\340.01\\\\-62.54883\\\\180.8109\\\\340.01\\\\-61.63273\\\\183.1547\\\\340.01\\\\-61.1263\\\\185.4984\\\\340.01\\\\-59.74519\\\\187.8422\\\\340.01\\\\-58.81712\\\\190.1859\\\\340.01\\\\-57.25644\\\\192.5297\\\\340.01\\\\-56.44758\\\\194.8734\\\\340.01\\\\-55.66406\\\\195.85\\\\340.01\\\\-53.32031\\\\199.2374\\\\340.01\\\\-53.01497\\\\199.5609\\\\340.01\\\\-51.82329\\\\201.9047\\\\340.01\\\\-49.72613\\\\204.2484\\\\340.01\\\\-47.79478\\\\206.5922\\\\340.01\\\\-45.51518\\\\208.9359\\\\340.01\\\\-43.94531\\\\210.7713\\\\340.01\\\\-41.60156\\\\212.8845\\\\340.01\\\\-39.25781\\\\215.1362\\\\340.01\\\\-36.91406\\\\217.0861\\\\340.01\\\\-34.57031\\\\219.2098\\\\340.01\\\\-32.22656\\\\220.4119\\\\340.01\\\\-29.88281\\\\222.0768\\\\340.01\\\\-27.53906\\\\223.8773\\\\340.01\\\\-25.19531\\\\224.7128\\\\340.01\\\\-22.85156\\\\226.2625\\\\340.01\\\\-20.50781\\\\227.2578\\\\340.01\\\\-18.16406\\\\228.6914\\\\340.01\\\\-15.82031\\\\229.7006\\\\340.01\\\\-15.45354\\\\230.0297\\\\340.01\\\\-15.82031\\\\230.6879\\\\340.01\\\\-17.62983\\\\232.3734\\\\340.01\\\\-18.16406\\\\232.6311\\\\340.01\\\\-20.50781\\\\233.1132\\\\340.01\\\\-34.57031\\\\233.131\\\\340.01\\\\-41.60156\\\\233.1818\\\\340.01\\\\-46.28906\\\\233.1652\\\\340.01\\\\-55.66406\\\\233.1981\\\\340.01\\\\-60.35156\\\\233.19\\\\340.01\\\\-62.69531\\\\233.246\\\\340.01\\\\-65.03906\\\\233.0382\\\\340.01\\\\-69.72656\\\\233.0671\\\\340.01\\\\-83.78906\\\\233.0766\\\\340.01\\\\-90.82031\\\\233.1132\\\\340.01\\\\-93.16406\\\\233.1964\\\\340.01\\\\-95.50781\\\\233.8279\\\\340.01\\\\-97.85156\\\\234.0941\\\\340.01\\\\-102.5391\\\\234.2306\\\\340.01\\\\-109.5703\\\\234.279\\\\340.01\\\\-116.6016\\\\234.2191\\\\340.01\\\\-121.2891\\\\234.2543\\\\340.01\\\\-130.6641\\\\234.1741\\\\340.01\\\\-133.0078\\\\234.2081\\\\340.01\\\\-137.6953\\\\234.1499\\\\340.01\\\\-142.3828\\\\234.2703\\\\340.01\\\\-147.0703\\\\234.1641\\\\340.01\\\\-151.7578\\\\234.1932\\\\340.01\\\\-156.4453\\\\234.1267\\\\340.01\\\\-158.7891\\\\234.1543\\\\340.01\\\\-163.4766\\\\234.1221\\\\340.01\\\\-168.1641\\\\234.2766\\\\340.01\\\\-175.1953\\\\234.2686\\\\340.01\\\\-177.5391\\\\234.2987\\\\340.01\\\\-184.5703\\\\234.2835\\\\340.01\\\\-186.9141\\\\234.3328\\\\340.01\\\\-189.2578\\\\234.2902\\\\340.01\\\\-193.9453\\\\234.4002\\\\340.01\\\\-196.2891\\\\234.3837\\\\340.01\\\\-200.9766\\\\234.4888\\\\340.01\\\\-203.3203\\\\234.3837\\\\340.01\\\\-208.0078\\\\234.3864\\\\340.01\\\\-212.6953\\\\234.5069\\\\340.01\\\\-215.0391\\\\234.4907\\\\340.01\\\\-222.0703\\\\234.6239\\\\340.01\\\\-224.4141\\\\234.4731\\\\340.01\\\\-231.4453\\\\234.4218\\\\340.01\\\\-233.7891\\\\234.3266\\\\340.01\\\\-243.1641\\\\234.0949\\\\340.01\\\\-247.8516\\\\233.6378\\\\340.01\\\\-250.1953\\\\233.6378\\\\340.01\\\\-252.5391\\\\234.0867\\\\340.01\\\\-254.6143\\\\234.7172\\\\340.01\\\\-254.8828\\\\234.9516\\\\340.01\\\\-257.2266\\\\234.9974\\\\340.01\\\\-259.5703\\\\235.8786\\\\340.01\\\\-261.108\\\\237.0609\\\\340.01\\\\-261.9141\\\\237.891\\\\340.01\\\\-263.0544\\\\239.4047\\\\340.01\\\\-263.1094\\\\241.7484\\\\340.01\\\\-262.7858\\\\244.0922\\\\340.01\\\\-261.9141\\\\245.3383\\\\340.01\\\\-259.5703\\\\248.3687\\\\340.01\\\\-259.1593\\\\248.7797\\\\340.01\\\\-255.7086\\\\253.4672\\\\340.01\\\\-252.5391\\\\256.7179\\\\340.01\\\\-250.1953\\\\258.9929\\\\340.01\\\\-247.8516\\\\261.4776\\\\340.01\\\\-245.5078\\\\263.6263\\\\340.01\\\\-244.1031\\\\265.1859\\\\340.01\\\\-241.5987\\\\267.5297\\\\340.01\\\\-239.4125\\\\269.8734\\\\340.01\\\\-236.9858\\\\272.2172\\\\340.01\\\\-233.7891\\\\275.424\\\\340.01\\\\-231.4453\\\\277.8469\\\\340.01\\\\-229.1016\\\\280.0326\\\\340.01\\\\-226.7578\\\\282.5503\\\\340.01\\\\-225.1803\\\\283.9359\\\\340.01\\\\-222.0703\\\\287.259\\\\340.01\\\\-220.6122\\\\288.6234\\\\340.01\\\\-218.3861\\\\290.9672\\\\340.01\\\\-214.9922\\\\293.3109\\\\340.01\\\\-212.6953\\\\294.6589\\\\340.01\\\\-210.3516\\\\295.3856\\\\340.01\\\\-208.0078\\\\296.5275\\\\340.01\\\\-205.6641\\\\296.892\\\\340.01\\\\-203.3203\\\\297.0948\\\\340.01\\\\-198.6328\\\\297.0876\\\\340.01\\\\-193.9453\\\\296.9006\\\\340.01\\\\-170.5078\\\\296.8421\\\\340.01\\\\-168.1641\\\\296.8731\\\\340.01\\\\-158.7891\\\\296.8427\\\\340.01\\\\-156.4453\\\\296.8667\\\\340.01\\\\-144.7266\\\\296.8678\\\\340.01\\\\-130.6641\\\\296.8089\\\\340.01\\\\-121.2891\\\\296.7995\\\\340.01\\\\-114.2578\\\\296.8629\\\\340.01\\\\-102.5391\\\\296.9188\\\\340.01\\\\-100.1953\\\\296.9004\\\\340.01\\\\-79.10156\\\\296.9041\\\\340.01\\\\-76.75781\\\\296.9428\\\\340.01\\\\-69.72656\\\\296.9622\\\\340.01\\\\-53.32031\\\\296.9428\\\\340.01\\\\-50.97656\\\\297.0061\\\\340.01\\\\-41.60156\\\\296.9731\\\\340.01\\\\-39.25781\\\\296.8877\\\\340.01\\\\-36.91406\\\\296.9467\\\\340.01\\\\-32.22656\\\\296.9731\\\\340.01\\\\-29.88281\\\\296.8888\\\\340.01\\\\-25.19531\\\\296.8798\\\\340.01\\\\-22.85156\\\\297.0362\\\\340.01\\\\-20.50781\\\\296.8789\\\\340.01\\\\-15.82031\\\\296.9535\\\\340.01\\\\-4.101563\\\\296.8673\\\\340.01\\\\-1.757813\\\\296.9081\\\\340.01\\\\19.33594\\\\296.7952\\\\340.01\\\\21.67969\\\\296.8163\\\\340.01\\\\33.39844\\\\296.734\\\\340.01\\\\42.77344\\\\296.7324\\\\340.01\\\\49.80469\\\\296.6724\\\\340.01\\\\66.21094\\\\296.6346\\\\340.01\\\\87.30469\\\\296.5154\\\\340.01\\\\96.67969\\\\296.5208\\\\340.01\\\\99.02344\\\\296.473\\\\340.01\\\\108.3984\\\\296.466\\\\340.01\\\\110.7422\\\\296.4326\\\\340.01\\\\117.7734\\\\296.446\\\\340.01\\\\131.8359\\\\296.308\\\\340.01\\\\134.1797\\\\296.1372\\\\340.01\\\\136.5234\\\\295.8701\\\\340.01\\\\152.9297\\\\295.8012\\\\340.01\\\\157.6172\\\\295.833\\\\340.01\\\\159.9609\\\\295.7849\\\\340.01\\\\164.6484\\\\295.8172\\\\340.01\\\\171.6797\\\\295.7684\\\\340.01\\\\176.3672\\\\295.6638\\\\340.01\\\\183.3984\\\\295.6819\\\\340.01\\\\190.4297\\\\295.6093\\\\340.01\\\\192.7734\\\\295.6272\\\\340.01\\\\197.4609\\\\295.833\\\\340.01\\\\202.1484\\\\295.7173\\\\340.01\\\\204.4922\\\\295.3679\\\\340.01\\\\206.8359\\\\294.7878\\\\340.01\\\\209.1797\\\\294.3717\\\\340.01\\\\211.5234\\\\292.5075\\\\340.01\\\\213.8672\\\\291.2065\\\\340.01\\\\216.2109\\\\289.6012\\\\340.01\\\\217.2437\\\\288.6234\\\\340.01\\\\218.5547\\\\287.1462\\\\340.01\\\\221.7714\\\\283.9359\\\\340.01\\\\225.5859\\\\279.9119\\\\340.01\\\\227.9297\\\\277.6044\\\\340.01\\\\230.2734\\\\275.1119\\\\340.01\\\\233.2526\\\\272.2172\\\\340.01\\\\234.9609\\\\270.3654\\\\340.01\\\\237.8731\\\\267.5297\\\\340.01\\\\240.1082\\\\265.1859\\\\340.01\\\\242.4774\\\\262.8422\\\\340.01\\\\246.6797\\\\258.4333\\\\340.01\\\\249.248\\\\255.8109\\\\340.01\\\\251.4573\\\\253.4672\\\\340.01\\\\256.0547\\\\248.2246\\\\340.01\\\\257.4792\\\\246.4359\\\\340.01\\\\259.8469\\\\244.0922\\\\340.01\\\\260.9666\\\\241.7484\\\\340.01\\\\261.8304\\\\239.4047\\\\340.01\\\\261.0668\\\\237.0609\\\\340.01\\\\259.4996\\\\234.7172\\\\340.01\\\\258.3984\\\\233.6932\\\\340.01\\\\256.0547\\\\233.1526\\\\340.01\\\\253.7109\\\\233.0245\\\\340.01\\\\251.3672\\\\233.382\\\\340.01\\\\249.0234\\\\232.6886\\\\340.01\\\\244.3359\\\\232.8195\\\\340.01\\\\241.9922\\\\233.0007\\\\340.01\\\\232.6172\\\\233.0305\\\\340.01\\\\227.9297\\\\233.0007\\\\340.01\\\\223.2422\\\\233.0441\\\\340.01\\\\209.1797\\\\233.0108\\\\340.01\\\\206.8359\\\\233.0343\\\\340.01\\\\204.4922\\\\232.916\\\\340.01\\\\202.1484\\\\232.6179\\\\340.01\\\\195.1172\\\\232.7322\\\\340.01\\\\181.0547\\\\232.7719\\\\340.01\\\\174.0234\\\\232.7456\\\\340.01\\\\166.9922\\\\232.7614\\\\340.01\\\\148.2422\\\\232.8497\\\\340.01\\\\141.2109\\\\232.8253\\\\340.01\\\\136.5234\\\\232.721\\\\340.01\\\\134.1797\\\\232.7614\\\\340.01\\\\129.4922\\\\232.7481\\\\340.01\\\\113.0859\\\\232.8617\\\\340.01\\\\106.0547\\\\232.8735\\\\340.01\\\\103.7109\\\\232.8253\\\\340.01\\\\101.3672\\\\232.9942\\\\340.01\\\\96.67969\\\\233.1397\\\\340.01\\\\68.55469\\\\233.1483\\\\340.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851194733700001.468081152243\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"342\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"23\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-13.47656\\\\296.8499\\\\343.01\\\\14.64844\\\\296.8324\\\\343.01\\\\33.39844\\\\296.8033\\\\343.01\\\\63.86719\\\\296.7919\\\\343.01\\\\87.30469\\\\296.7566\\\\343.01\\\\117.7734\\\\296.7458\\\\343.01\\\\131.8359\\\\296.7216\\\\343.01\\\\136.5234\\\\296.6649\\\\343.01\\\\138.8672\\\\295.4763\\\\343.01\\\\157.6172\\\\295.4763\\\\343.01\\\\159.9609\\\\295.4454\\\\343.01\\\\164.6484\\\\295.4763\\\\343.01\\\\166.9922\\\\295.4454\\\\343.01\\\\176.3672\\\\295.4154\\\\343.01\\\\192.7734\\\\295.4006\\\\343.01\\\\197.4609\\\\295.4763\\\\343.01\\\\202.1484\\\\295.4303\\\\343.01\\\\204.4922\\\\295.3165\\\\343.01\\\\206.8359\\\\295.0653\\\\343.01\\\\209.1797\\\\294.4177\\\\343.01\\\\211.5234\\\\292.3443\\\\343.01\\\\213.8672\\\\291.6227\\\\343.01\\\\214.5661\\\\290.9672\\\\343.01\\\\216.2109\\\\289.7204\\\\343.01\\\\217.3604\\\\288.6234\\\\343.01\\\\219.4239\\\\286.2797\\\\343.01\\\\221.9183\\\\283.9359\\\\343.01\\\\225.5859\\\\280.0836\\\\343.01\\\\227.9297\\\\277.9224\\\\343.01\\\\230.2734\\\\275.331\\\\343.01\\\\231.0524\\\\274.5609\\\\343.01\\\\232.6172\\\\273.2719\\\\343.01\\\\233.6719\\\\272.2172\\\\343.01\\\\235.7042\\\\269.8734\\\\343.01\\\\238.2833\\\\267.5297\\\\343.01\\\\240.4319\\\\265.1859\\\\343.01\\\\244.3359\\\\261.4106\\\\343.01\\\\246.6797\\\\258.8701\\\\343.01\\\\249.0234\\\\256.7692\\\\343.01\\\\249.948\\\\255.8109\\\\343.01\\\\251.3672\\\\254.1198\\\\343.01\\\\254.5945\\\\251.1234\\\\343.01\\\\255.6744\\\\248.7797\\\\343.01\\\\257.489\\\\246.4359\\\\343.01\\\\259.8584\\\\244.0922\\\\343.01\\\\260.9205\\\\241.7484\\\\343.01\\\\261.8858\\\\239.4047\\\\343.01\\\\261.2413\\\\237.0609\\\\343.01\\\\259.3759\\\\234.7172\\\\343.01\\\\258.3984\\\\233.7629\\\\343.01\\\\256.0547\\\\232.9203\\\\343.01\\\\251.3672\\\\232.8406\\\\343.01\\\\249.0234\\\\232.6981\\\\343.01\\\\241.9922\\\\232.8407\\\\343.01\\\\234.9609\\\\232.8642\\\\343.01\\\\227.9297\\\\232.8407\\\\343.01\\\\218.5547\\\\232.8757\\\\343.01\\\\213.8672\\\\232.8525\\\\343.01\\\\206.8359\\\\232.8642\\\\343.01\\\\202.1484\\\\232.7003\\\\343.01\\\\197.4609\\\\232.7406\\\\343.01\\\\190.4297\\\\232.7537\\\\343.01\\\\174.0234\\\\232.7537\\\\343.01\\\\157.6172\\\\232.7666\\\\343.01\\\\155.2734\\\\232.792\\\\343.01\\\\141.2109\\\\232.7794\\\\343.01\\\\136.5234\\\\232.7406\\\\343.01\\\\124.8047\\\\232.7537\\\\343.01\\\\122.4609\\\\232.7794\\\\343.01\\\\103.7109\\\\232.7794\\\\343.01\\\\96.67969\\\\232.9126\\\\343.01\\\\54.49219\\\\232.9126\\\\343.01\\\\45.11719\\\\232.8902\\\\343.01\\\\42.77344\\\\232.8044\\\\343.01\\\\38.08594\\\\232.7794\\\\343.01\\\\36.64153\\\\232.3734\\\\343.01\\\\38.08594\\\\231.9234\\\\343.01\\\\40.42969\\\\229.497\\\\343.01\\\\42.77344\\\\229.0768\\\\343.01\\\\45.11719\\\\228.3851\\\\343.01\\\\47.46094\\\\226.9828\\\\343.01\\\\49.80469\\\\226.2342\\\\343.01\\\\52.14844\\\\224.5333\\\\343.01\\\\54.49219\\\\223.435\\\\343.01\\\\54.94049\\\\222.9984\\\\343.01\\\\56.83594\\\\221.7432\\\\343.01\\\\58.32031\\\\220.6547\\\\343.01\\\\59.17969\\\\219.8756\\\\343.01\\\\61.52344\\\\219.154\\\\343.01\\\\64.5971\\\\215.9672\\\\343.01\\\\66.21094\\\\214.6717\\\\343.01\\\\67.30957\\\\213.6234\\\\343.01\\\\69.44305\\\\211.2797\\\\343.01\\\\71.93533\\\\208.9359\\\\343.01\\\\75.58594\\\\204.9751\\\\343.01\\\\76.34663\\\\204.2484\\\\343.01\\\\77.07796\\\\201.9047\\\\343.01\\\\79.4009\\\\199.5609\\\\343.01\\\\80.80936\\\\197.2172\\\\343.01\\\\82.61719\\\\194.8027\\\\343.01\\\\83.81027\\\\192.5297\\\\343.01\\\\84.70689\\\\190.1859\\\\343.01\\\\86.036\\\\187.8422\\\\343.01\\\\87.30469\\\\185.8838\\\\343.01\\\\87.68246\\\\185.4984\\\\343.01\\\\88.88221\\\\180.8109\\\\343.01\\\\89.11252\\\\178.4672\\\\343.01\\\\89.64844\\\\177.7911\\\\343.01\\\\90.63388\\\\176.1234\\\\343.01\\\\90.79569\\\\173.7797\\\\343.01\\\\91.10613\\\\171.4359\\\\343.01\\\\92.53577\\\\169.0922\\\\343.01\\\\92.74599\\\\166.7484\\\\343.01\\\\92.91211\\\\162.0609\\\\343.01\\\\93.33398\\\\159.7172\\\\343.01\\\\93.3525\\\\150.3422\\\\343.01\\\\92.9874\\\\147.9984\\\\343.01\\\\92.81616\\\\143.3109\\\\343.01\\\\92.65137\\\\140.9672\\\\343.01\\\\92.28917\\\\138.6234\\\\343.01\\\\91.99219\\\\138.295\\\\343.01\\\\90.88379\\\\136.2797\\\\343.01\\\\90.72434\\\\133.9359\\\\343.01\\\\89.63928\\\\131.5922\\\\343.01\\\\89.00118\\\\129.2484\\\\343.01\\\\88.44993\\\\126.9047\\\\343.01\\\\88.13577\\\\124.5609\\\\343.01\\\\87.30469\\\\123.6708\\\\343.01\\\\86.17751\\\\122.2172\\\\343.01\\\\85.52595\\\\119.8734\\\\343.01\\\\84.34743\\\\117.5297\\\\343.01\\\\83.591\\\\115.1859\\\\343.01\\\\81.36161\\\\112.8422\\\\343.01\\\\80.40365\\\\110.4984\\\\343.01\\\\77.92969\\\\107.4057\\\\343.01\\\\76.88994\\\\105.8109\\\\343.01\\\\75.58594\\\\104.1483\\\\343.01\\\\72.53094\\\\101.1234\\\\343.01\\\\70.89844\\\\99.3583\\\\343.01\\\\68.03966\\\\96.43594\\\\343.01\\\\66.21094\\\\94.85841\\\\343.01\\\\63.2178\\\\91.74844\\\\343.01\\\\59.9375\\\\89.40469\\\\343.01\\\\56.83594\\\\86.85168\\\\343.01\\\\54.49219\\\\85.89411\\\\343.01\\\\52.14844\\\\83.75636\\\\343.01\\\\49.80469\\\\83.0305\\\\343.01\\\\47.46094\\\\81.82986\\\\343.01\\\\45.11719\\\\81.13115\\\\343.01\\\\43.61636\\\\80.02969\\\\343.01\\\\42.77344\\\\79.26299\\\\343.01\\\\40.42969\\\\78.94232\\\\343.01\\\\38.08594\\\\78.44798\\\\343.01\\\\35.74219\\\\77.71319\\\\343.01\\\\33.39844\\\\76.62014\\\\343.01\\\\31.05469\\\\76.45058\\\\343.01\\\\28.99255\\\\75.34219\\\\343.01\\\\28.71094\\\\75.08814\\\\343.01\\\\26.36719\\\\74.78448\\\\343.01\\\\24.02344\\\\74.61057\\\\343.01\\\\21.67969\\\\74.54632\\\\343.01\\\\19.33594\\\\74.09106\\\\343.01\\\\9.960938\\\\74.04196\\\\343.01\\\\5.273438\\\\74.09106\\\\343.01\\\\2.929688\\\\74.55463\\\\343.01\\\\0.5859375\\\\74.63775\\\\343.01\\\\-4.101563\\\\75.10286\\\\343.01\\\\-6.445313\\\\76.49429\\\\343.01\\\\-8.789063\\\\76.67171\\\\343.01\\\\-10.42799\\\\77.68594\\\\343.01\\\\-11.13281\\\\78.2649\\\\343.01\\\\-13.47656\\\\78.54448\\\\343.01\\\\-15.82031\\\\79.10727\\\\343.01\\\\-18.16406\\\\79.86597\\\\343.01\\\\-18.33274\\\\80.02969\\\\343.01\\\\-22.37745\\\\82.37344\\\\343.01\\\\-22.85156\\\\82.77675\\\\343.01\\\\-25.19531\\\\83.57171\\\\343.01\\\\-27.22969\\\\84.71719\\\\343.01\\\\-27.53906\\\\84.99342\\\\343.01\\\\-29.88281\\\\86.06935\\\\343.01\\\\-32.22656\\\\87.99243\\\\343.01\\\\-34.57031\\\\90.32504\\\\343.01\\\\-36.91406\\\\91.11633\\\\343.01\\\\-37.53859\\\\91.74844\\\\343.01\\\\-41.60156\\\\95.4947\\\\343.01\\\\-44.75509\\\\98.77969\\\\343.01\\\\-46.28906\\\\100.0988\\\\343.01\\\\-47.29911\\\\101.1234\\\\343.01\\\\-48.63281\\\\102.8523\\\\343.01\\\\-51.72631\\\\105.8109\\\\343.01\\\\-52.41647\\\\108.1547\\\\343.01\\\\-53.32031\\\\109.1202\\\\343.01\\\\-54.39367\\\\110.4984\\\\343.01\\\\-55.85938\\\\112.8422\\\\343.01\\\\-57.07632\\\\115.1859\\\\343.01\\\\-58.80323\\\\117.5297\\\\343.01\\\\-59.511\\\\119.8734\\\\343.01\\\\-60.86516\\\\122.2172\\\\343.01\\\\-61.57744\\\\124.5609\\\\343.01\\\\-61.88775\\\\126.9047\\\\343.01\\\\-63.71547\\\\129.2484\\\\343.01\\\\-64.02027\\\\131.5922\\\\343.01\\\\-64.8298\\\\133.9359\\\\343.01\\\\-65.21739\\\\136.2797\\\\343.01\\\\-66.03065\\\\138.6234\\\\343.01\\\\-66.32159\\\\145.6547\\\\343.01\\\\-66.52577\\\\147.9984\\\\343.01\\\\-68.15379\\\\150.3422\\\\343.01\\\\-68.19411\\\\152.6859\\\\343.01\\\\-68.12855\\\\159.7172\\\\343.01\\\\-67.38281\\\\160.578\\\\343.01\\\\-66.33832\\\\162.0609\\\\343.01\\\\-66.11034\\\\169.0922\\\\343.01\\\\-65.01181\\\\173.7797\\\\343.01\\\\-64.67431\\\\176.1234\\\\343.01\\\\-63.80735\\\\178.4672\\\\343.01\\\\-63.54492\\\\180.8109\\\\343.01\\\\-61.65305\\\\183.1547\\\\343.01\\\\-61.42054\\\\185.4984\\\\343.01\\\\-60.49805\\\\187.8422\\\\343.01\\\\-58.00781\\\\191.825\\\\343.01\\\\-57.387\\\\192.5297\\\\343.01\\\\-56.74913\\\\194.8734\\\\343.01\\\\-55.66406\\\\195.936\\\\343.01\\\\-54.58899\\\\197.2172\\\\343.01\\\\-53.60318\\\\199.5609\\\\343.01\\\\-50.97656\\\\203.258\\\\343.01\\\\-48.00071\\\\206.5922\\\\343.01\\\\-45.5013\\\\208.9359\\\\343.01\\\\-43.50982\\\\211.2797\\\\343.01\\\\-41.60156\\\\212.84\\\\343.01\\\\-39.25781\\\\215.3739\\\\343.01\\\\-35.93977\\\\218.3109\\\\343.01\\\\-34.57031\\\\219.3768\\\\343.01\\\\-32.52378\\\\220.6547\\\\343.01\\\\-32.22656\\\\220.9395\\\\343.01\\\\-29.88281\\\\221.9077\\\\343.01\\\\-28.61672\\\\222.9984\\\\343.01\\\\-27.53906\\\\224.1391\\\\343.01\\\\-25.19531\\\\224.7669\\\\343.01\\\\-24.54516\\\\225.3422\\\\343.01\\\\-20.89297\\\\227.6859\\\\343.01\\\\-20.50781\\\\228.0531\\\\343.01\\\\-18.16406\\\\228.8638\\\\343.01\\\\-15.82031\\\\229.1627\\\\343.01\\\\-14.73801\\\\230.0297\\\\343.01\\\\-13.47656\\\\231.7823\\\\343.01\\\\-11.13281\\\\231.9774\\\\343.01\\\\-10.70429\\\\232.3734\\\\343.01\\\\-11.13281\\\\232.7537\\\\343.01\\\\-15.82031\\\\232.8044\\\\343.01\\\\-20.50781\\\\232.9015\\\\343.01\\\\-34.57031\\\\232.9126\\\\343.01\\\\-41.60156\\\\232.9345\\\\343.01\\\\-58.00781\\\\232.9453\\\\343.01\\\\-60.35156\\\\232.9345\\\\343.01\\\\-62.69531\\\\233.5567\\\\343.01\\\\-65.03906\\\\232.8672\\\\343.01\\\\-83.78906\\\\232.8788\\\\343.01\\\\-93.16406\\\\232.9126\\\\343.01\\\\-95.50781\\\\233.5393\\\\343.01\\\\-97.85156\\\\233.7035\\\\343.01\\\\-102.5391\\\\233.7288\\\\343.01\\\\-121.2891\\\\233.7406\\\\343.01\\\\-137.6953\\\\233.7202\\\\343.01\\\\-142.3828\\\\233.7337\\\\343.01\\\\-163.4766\\\\233.7135\\\\343.01\\\\-168.1641\\\\233.7435\\\\343.01\\\\-189.2578\\\\233.76\\\\343.01\\\\-200.9766\\\\233.788\\\\343.01\\\\-208.0078\\\\233.7738\\\\343.01\\\\-222.0703\\\\233.8144\\\\343.01\\\\-243.1641\\\\233.72\\\\343.01\\\\-247.8516\\\\233.5974\\\\343.01\\\\-250.1953\\\\233.592\\\\343.01\\\\-252.5391\\\\233.6761\\\\343.01\\\\-254.8828\\\\233.8458\\\\343.01\\\\-257.2266\\\\233.8853\\\\343.01\\\\-258.0715\\\\234.7172\\\\343.01\\\\-260.9406\\\\237.0609\\\\343.01\\\\-261.9141\\\\237.9809\\\\343.01\\\\-263.0811\\\\239.4047\\\\343.01\\\\-263.0952\\\\241.7484\\\\343.01\\\\-262.8482\\\\244.0922\\\\343.01\\\\-261.1393\\\\246.4359\\\\343.01\\\\-259.5703\\\\248.77\\\\343.01\\\\-257.2359\\\\251.1234\\\\343.01\\\\-256.1725\\\\253.4672\\\\343.01\\\\-254.8828\\\\254.541\\\\343.01\\\\-253.6187\\\\255.8109\\\\343.01\\\\-252.5391\\\\257.1211\\\\343.01\\\\-248.9935\\\\260.4984\\\\343.01\\\\-246.7643\\\\262.8422\\\\343.01\\\\-243.1641\\\\266.3453\\\\343.01\\\\-239.7483\\\\269.8734\\\\343.01\\\\-238.4766\\\\270.9653\\\\343.01\\\\-237.2486\\\\272.2172\\\\343.01\\\\-236.1328\\\\273.5273\\\\343.01\\\\-235.0992\\\\274.5609\\\\343.01\\\\-233.7891\\\\275.6767\\\\343.01\\\\-232.5432\\\\276.9047\\\\343.01\\\\-231.4453\\\\278.1825\\\\343.01\\\\-227.9297\\\\281.5922\\\\343.01\\\\-224.4141\\\\285.1934\\\\343.01\\\\-222.0703\\\\287.4207\\\\343.01\\\\-218.7154\\\\290.9672\\\\343.01\\\\-217.3828\\\\291.9945\\\\343.01\\\\-215.0391\\\\293.3382\\\\343.01\\\\-212.6953\\\\294.5551\\\\343.01\\\\-210.3516\\\\295.3438\\\\343.01\\\\-209.9888\\\\295.6547\\\\343.01\\\\-208.0078\\\\296.7353\\\\343.01\\\\-203.3203\\\\296.9163\\\\343.01\\\\-198.6328\\\\296.9163\\\\343.01\\\\-193.9453\\\\296.8423\\\\343.01\\\\-179.8828\\\\296.8319\\\\343.01\\\\-168.1641\\\\296.8428\\\\343.01\\\\-161.1328\\\\296.8266\\\\343.01\\\\-147.0703\\\\296.8376\\\\343.01\\\\-121.2891\\\\296.8209\\\\343.01\\\\-111.9141\\\\296.8435\\\\343.01\\\\-97.85156\\\\296.855\\\\343.01\\\\-90.82031\\\\296.838\\\\343.01\\\\-65.03906\\\\296.8668\\\\343.01\\\\-53.32031\\\\296.8553\\\\343.01\\\\-51.43964\\\\297.9984\\\\343.01\\\\-50.97656\\\\298.3864\\\\343.01\\\\-48.63281\\\\297.5516\\\\343.01\\\\-46.28906\\\\298.5331\\\\343.01\\\\-43.94531\\\\298.5331\\\\343.01\\\\-41.60156\\\\298.2598\\\\343.01\\\\-39.25781\\\\296.8499\\\\343.01\\\\-36.91406\\\\297.9681\\\\343.01\\\\-32.22656\\\\298.5331\\\\343.01\\\\-29.88281\\\\296.8741\\\\343.01\\\\-27.53906\\\\296.8383\\\\343.01\\\\-25.19531\\\\296.9201\\\\343.01\\\\-22.85156\\\\298.5331\\\\343.01\\\\-20.50781\\\\296.8441\\\\343.01\\\\-18.16406\\\\298.1147\\\\343.01\\\\-15.82031\\\\297.8174\\\\343.01\"\n"
-"                     }\n"
-"                  }\n"
-"               ]\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"10\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,002a\" : {\n"
-"               \"Name\" : \"ROIDisplayColor\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"255\\\\0\\\\255\"\n"
-"            },\n"
-"            \"3006,0040\" : {\n"
-"               \"Name\" : \"ContourSequence\",\n"
-"               \"Type\" : \"Sequence\",\n"
-"               \"Value\" : [\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699844642358900001.492074456493\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"0\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"13.63579\\\\147.5839\\\\274.01\\\\11.63579\\\\147.882\\\\274.01\\\\10.13579\\\\148.3365\\\\274.01\\\\9.135789\\\\148.7989\\\\274.01\\\\7.635788\\\\149.7859\\\\274.01\\\\6.037574\\\\151.4199\\\\274.01\\\\5.095466\\\\152.9199\\\\274.01\\\\4.507\\\\154.4199\\\\274.01\\\\4.299851\\\\155.4199\\\\274.01\\\\4.099024\\\\157.4199\\\\274.01\\\\4.240627\\\\158.9199\\\\274.01\\\\4.522152\\\\160.4199\\\\274.01\\\\5.437513\\\\162.4199\\\\274.01\\\\6.109003\\\\163.4199\\\\274.01\\\\7.635788\\\\164.9824\\\\274.01\\\\9.135789\\\\165.9763\\\\274.01\\\\10.63579\\\\166.5941\\\\274.01\\\\12.13579\\\\166.9426\\\\274.01\\\\13.63579\\\\167.0941\\\\274.01\\\\15.13579\\\\166.988\\\\274.01\\\\17.13579\\\\166.537\\\\274.01\\\\19.13579\\\\165.5782\\\\274.01\\\\20.63579\\\\164.3655\\\\274.01\\\\22.19224\\\\162.4199\\\\274.01\\\\22.7061\\\\161.4199\\\\274.01\\\\23.21912\\\\159.9199\\\\274.01\\\\23.42485\\\\158.9199\\\\274.01\\\\23.5186\\\\156.9199\\\\274.01\\\\23.23427\\\\154.9199\\\\274.01\\\\22.72173\\\\153.4199\\\\274.01\\\\22.22746\\\\152.4199\\\\274.01\\\\21.13579\\\\150.9318\\\\274.01\\\\20.09829\\\\149.9199\\\\274.01\\\\18.63579\\\\148.8949\\\\274.01\\\\17.13579\\\\148.2402\\\\274.01\\\\15.63579\\\\147.8214\\\\274.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845076383700001.470610289105\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"47\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"1\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-2.854718\\\\157.4199\\\\277.01\\\\-2.472545\\\\160.9199\\\\277.01\\\\-1.487775\\\\163.9199\\\\277.01\\\\-0.4315192\\\\165.9199\\\\277.01\\\\0.9787372\\\\167.9199\\\\277.01\\\\2.406915\\\\169.4199\\\\277.01\\\\3.635788\\\\170.4986\\\\277.01\\\\5.135788\\\\171.5571\\\\277.01\\\\6.135788\\\\172.111\\\\277.01\\\\8.135789\\\\173.0158\\\\277.01\\\\10.13579\\\\173.6004\\\\277.01\\\\12.63579\\\\174.0313\\\\277.01\\\\15.13579\\\\174.0013\\\\277.01\\\\17.63579\\\\173.571\\\\277.01\\\\19.13579\\\\173.1137\\\\277.01\\\\21.63579\\\\172.0419\\\\277.01\\\\23.13579\\\\171.1081\\\\277.01\\\\24.63579\\\\169.9456\\\\277.01\\\\26.19738\\\\168.4199\\\\277.01\\\\27.74516\\\\166.4199\\\\277.01\\\\28.32924\\\\165.4199\\\\277.01\\\\29.29383\\\\163.4199\\\\277.01\\\\29.81079\\\\161.9199\\\\277.01\\\\30.28139\\\\159.9199\\\\277.01\\\\30.45172\\\\157.4199\\\\277.01\\\\30.29068\\\\154.9199\\\\277.01\\\\29.82399\\\\152.9199\\\\277.01\\\\28.86814\\\\150.4199\\\\277.01\\\\27.79128\\\\148.4199\\\\277.01\\\\26.27724\\\\146.4199\\\\277.01\\\\24.63579\\\\144.8084\\\\277.01\\\\22.63579\\\\143.3281\\\\277.01\\\\21.63579\\\\142.7463\\\\277.01\\\\19.63579\\\\141.8135\\\\277.01\\\\18.13579\\\\141.3103\\\\277.01\\\\15.63579\\\\140.7907\\\\277.01\\\\13.63579\\\\140.6754\\\\277.01\\\\12.13579\\\\140.7704\\\\277.01\\\\9.635789\\\\141.2671\\\\277.01\\\\8.135789\\\\141.7522\\\\277.01\\\\5.135788\\\\143.2278\\\\277.01\\\\3.635788\\\\144.2585\\\\277.01\\\\2.350577\\\\145.4199\\\\277.01\\\\0.5107885\\\\147.4199\\\\277.01\\\\-0.5040925\\\\148.9199\\\\277.01\\\\-1.520461\\\\150.9199\\\\277.01\\\\-2.489212\\\\153.9199\\\\277.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699845095384800001.485181436634\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"52\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"2\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n";
-const char* k_rtStruct_json06 =
-"                        \"Value\" : \"-5.041041\\\\149.9199\\\\280.01\\\\-6.018211\\\\152.9199\\\\280.01\\\\-6.511849\\\\155.9199\\\\280.01\\\\-6.502212\\\\158.9199\\\\280.01\\\\-5.99526\\\\161.9199\\\\280.01\\\\-5.006773\\\\164.9199\\\\280.01\\\\-4.038581\\\\166.9199\\\\280.01\\\\-3.442042\\\\167.9199\\\\280.01\\\\-2.039212\\\\169.9199\\\\280.01\\\\-1.135438\\\\170.9199\\\\280.01\\\\1.135789\\\\173.1176\\\\280.01\\\\3.135788\\\\174.5681\\\\280.01\\\\6.135788\\\\176.1244\\\\280.01\\\\8.635789\\\\177.0288\\\\280.01\\\\11.13579\\\\177.5844\\\\280.01\\\\13.63579\\\\177.7594\\\\280.01\\\\16.63579\\\\177.5678\\\\280.01\\\\18.63579\\\\177.1104\\\\280.01\\\\21.63579\\\\176.0678\\\\280.01\\\\23.63579\\\\175.0686\\\\280.01\\\\25.13579\\\\174.1177\\\\280.01\\\\27.63579\\\\172.1109\\\\280.01\\\\29.24222\\\\170.4199\\\\280.01\\\\30.74459\\\\168.4199\\\\280.01\\\\31.88371\\\\166.4199\\\\280.01\\\\32.81119\\\\164.4199\\\\280.01\\\\33.32179\\\\162.9199\\\\280.01\\\\33.82031\\\\160.9199\\\\280.01\\\\34.18623\\\\157.4199\\\\280.01\\\\34.07163\\\\155.9199\\\\280.01\\\\33.74713\\\\153.4199\\\\280.01\\\\32.83294\\\\150.4199\\\\280.01\\\\32.18903\\\\148.9199\\\\280.01\\\\30.80605\\\\146.4199\\\\280.01\\\\29.31239\\\\144.4199\\\\280.01\\\\28.13579\\\\143.1796\\\\280.01\\\\26.63579\\\\141.776\\\\280.01\\\\24.63579\\\\140.3194\\\\280.01\\\\23.63579\\\\139.7211\\\\280.01\\\\21.63579\\\\138.7252\\\\280.01\\\\19.13579\\\\137.8053\\\\280.01\\\\16.63579\\\\137.2421\\\\280.01\\\\13.63579\\\\137.0479\\\\280.01\\\\10.63579\\\\137.2928\\\\280.01\\\\8.635789\\\\137.7512\\\\280.01\\\\7.135788\\\\138.2404\\\\280.01\\\\4.635788\\\\139.3442\\\\280.01\\\\3.135788\\\\140.2151\\\\280.01\\\\1.635789\\\\141.2464\\\\280.01\\\\-0.8642115\\\\143.5646\\\\280.01\\\\-2.084666\\\\144.9199\\\\280.01\\\\-3.518559\\\\146.9199\\\\280.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846442461900001.533642576430\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"35\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"3\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-36.86421\\\\165.9127\\\\283.01\\\\-33.86421\\\\165.5801\\\\283.01\\\\-32.36421\\\\165.0618\\\\283.01\\\\-31.36421\\\\164.5518\\\\283.01\\\\-29.86421\\\\163.5032\\\\283.01\\\\-28.76573\\\\162.4199\\\\283.01\\\\-27.6906\\\\160.9199\\\\283.01\\\\-26.75524\\\\158.9199\\\\283.01\\\\-26.24242\\\\156.9199\\\\283.01\\\\-26.08132\\\\155.4199\\\\283.01\\\\-26.27046\\\\153.4199\\\\283.01\\\\-26.69974\\\\151.9199\\\\283.01\\\\-27.3034\\\\150.4199\\\\283.01\\\\-28.22451\\\\148.9199\\\\283.01\\\\-29.07254\\\\147.9199\\\\283.01\\\\-30.86421\\\\146.4123\\\\283.01\\\\-32.86421\\\\145.387\\\\283.01\\\\-34.86421\\\\144.8136\\\\283.01\\\\-36.36421\\\\144.637\\\\283.01\\\\-38.86421\\\\144.8261\\\\283.01\\\\-40.36421\\\\145.2685\\\\283.01\\\\-41.86421\\\\145.9129\\\\283.01\\\\-43.36421\\\\146.839\\\\283.01\\\\-45.00815\\\\148.4199\\\\283.01\\\\-46.03782\\\\149.9199\\\\283.01\\\\-46.92191\\\\151.9199\\\\283.01\\\\-47.13395\\\\152.9199\\\\283.01\\\\-47.39546\\\\155.4199\\\\283.01\\\\-47.01165\\\\158.4199\\\\283.01\\\\-46.47908\\\\159.9199\\\\283.01\\\\-45.95449\\\\160.9199\\\\283.01\\\\-44.36421\\\\162.8921\\\\283.01\\\\-42.36421\\\\164.4824\\\\283.01\\\\-41.36421\\\\165.0054\\\\283.01\\\\-39.86421\\\\165.5288\\\\283.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846477463900001.467218939844\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"4\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"6.135788\\\\112.0556\\\\283.01\\\\8.135789\\\\113.058\\\\283.01\\\\9.635789\\\\113.5261\\\\283.01\\\\11.13579\\\\113.7211\\\\283.01\\\\13.13579\\\\113.7083\\\\283.01\\\\14.63579\\\\113.4775\\\\283.01\\\\17.13579\\\\112.4942\\\\283.01\\\\18.63579\\\\111.5302\\\\283.01\\\\20.27973\\\\109.9199\\\\283.01\\\\21.29551\\\\108.4199\\\\283.01\\\\22.15553\\\\106.4199\\\\283.01\\\\22.49763\\\\104.4199\\\\283.01\\\\22.56146\\\\102.9199\\\\283.01\\\\22.45816\\\\101.4199\\\\283.01\\\\22.20454\\\\99.91986\\\\283.01\\\\21.35107\\\\97.91986\\\\283.01\\\\20.75722\\\\96.91986\\\\283.01\\\\19.13579\\\\95.12147\\\\283.01\\\\18.13579\\\\94.30956\\\\283.01\\\\17.13579\\\\93.71847\\\\283.01\\\\15.13579\\\\92.88696\\\\283.01\\\\13.63579\\\\92.61065\\\\283.01\\\\11.63579\\\\92.5317\\\\283.01\\\\9.135789\\\\92.82371\\\\283.01\\\\7.635788\\\\93.33433\\\\283.01\\\\6.635788\\\\93.82958\\\\283.01\\\\5.135788\\\\94.8808\\\\283.01\\\\4.049851\\\\95.91986\\\\283.01\\\\2.948288\\\\97.41986\\\\283.01\\\\1.984473\\\\99.41986\\\\283.01\\\\1.529539\\\\100.9199\\\\283.01\\\\1.326578\\\\103.4199\\\\283.01\\\\1.542039\\\\105.4199\\\\283.01\\\\2.010788\\\\106.9199\\\\283.01\\\\3.000074\\\\108.9199\\\\283.01\\\\4.135788\\\\110.3525\\\\283.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846504465400001.571321740640\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"60\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"5\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"9.635789\\\\134.821\\\\283.01\\\\6.635788\\\\135.7311\\\\283.01\\\\5.135788\\\\136.3564\\\\283.01\\\\3.135788\\\\137.3443\\\\283.01\\\\1.635789\\\\138.235\\\\283.01\\\\0.1357885\\\\139.3028\\\\283.01\\\\-1.698245\\\\140.9199\\\\283.01\\\\-4.057226\\\\143.4199\\\\283.01\\\\-5.492074\\\\145.4199\\\\283.01\\\\-6.94348\\\\147.9199\\\\283.01\\\\-8.519453\\\\151.4199\\\\283.01\\\\-9.020194\\\\152.9199\\\\283.01\\\\-9.438021\\\\154.9199\\\\283.01\\\\-9.607633\\\\157.4199\\\\283.01\\\\-9.515528\\\\158.9199\\\\283.01\\\\-8.990245\\\\161.4199\\\\283.01\\\\-7.952794\\\\164.4199\\\\283.01\\\\-7.072832\\\\166.4199\\\\283.01\\\\-6.031465\\\\168.4199\\\\283.01\\\\-5.07724\\\\169.9199\\\\283.01\\\\-3.571932\\\\171.9199\\\\283.01\\\\-2.141343\\\\173.4199\\\\283.01\\\\-0.3642115\\\\175.0795\\\\283.01\\\\1.635789\\\\176.5706\\\\283.01\\\\3.135788\\\\177.5459\\\\283.01\\\\5.635788\\\\178.9883\\\\283.01\\\\7.635788\\\\180.0143\\\\283.01\\\\9.135789\\\\180.633\\\\283.01\\\\12.13579\\\\181.4936\\\\283.01\\\\13.63579\\\\181.6266\\\\283.01\\\\15.13579\\\\181.5587\\\\283.01\\\\17.63579\\\\181.0121\\\\283.01\\\\20.13579\\\\179.997\\\\283.01\\\\23.63579\\\\178.0965\\\\283.01\\\\26.63579\\\\176.1115\\\\283.01\\\\28.63579\\\\174.5219\\\\283.01\\\\30.30579\\\\172.9199\\\\283.01\\\\32.35387\\\\170.4199\\\\283.01\\\\33.34441\\\\168.9199\\\\283.01\\\\34.6741\\\\166.4199\\\\283.01\\\\35.77129\\\\163.9199\\\\283.01\\\\36.76814\\\\160.9199\\\\283.01\\\\37.28946\\\\158.4199\\\\283.01\\\\37.36674\\\\156.4199\\\\283.01\\\\37.27414\\\\154.9199\\\\283.01\\\\36.83626\\\\152.9199\\\\283.01\\\\36.33173\\\\151.4199\\\\283.01\\\\35.21079\\\\148.9199\\\\283.01\\\\33.79925\\\\146.4199\\\\283.01\\\\32.80308\\\\144.9199\\\\283.01\\\\30.83086\\\\142.4199\\\\283.01\\\\29.13579\\\\140.7037\\\\283.01\\\\26.63579\\\\138.7033\\\\283.01\\\\25.13579\\\\137.7264\\\\283.01\\\\23.13579\\\\136.6915\\\\283.01\\\\21.13579\\\\135.8365\\\\283.01\\\\19.63579\\\\135.3254\\\\283.01\\\\17.63579\\\\134.7876\\\\283.01\\\\14.63579\\\\134.3352\\\\283.01\\\\12.63579\\\\134.3453\\\\283.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699846528466800001.465226999207\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"35\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"6\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"11.63579\\\\193.3493\\\\283.01\\\\9.135789\\\\194.3455\\\\283.01\\\\7.635788\\\\195.3096\\\\283.01\\\\5.991849\\\\196.9199\\\\283.01\\\\4.976066\\\\198.4199\\\\283.01\\\\4.116052\\\\200.4199\\\\283.01\\\\3.773946\\\\202.4199\\\\283.01\\\\3.710113\\\\203.9199\\\\283.01\\\\3.81342\\\\205.4199\\\\283.01\\\\4.067039\\\\206.9199\\\\283.01\\\\4.920511\\\\208.9199\\\\283.01\\\\5.51436\\\\209.9199\\\\283.01\\\\7.135788\\\\211.7182\\\\283.01\\\\8.135789\\\\212.5302\\\\283.01\\\\9.135789\\\\213.1212\\\\283.01\\\\11.13579\\\\213.9528\\\\283.01\\\\12.63579\\\\214.2291\\\\283.01\\\\14.63579\\\\214.308\\\\283.01\\\\17.13579\\\\214.016\\\\283.01\\\\18.63579\\\\213.5054\\\\283.01\\\\19.63579\\\\213.0101\\\\283.01\\\\21.13579\\\\211.9589\\\\283.01\\\\22.22173\\\\210.9199\\\\283.01\\\\23.32329\\\\209.4199\\\\283.01\\\\24.2871\\\\207.4199\\\\283.01\\\\24.74204\\\\205.9199\\\\283.01\\\\24.945\\\\203.4199\\\\283.01\\\\24.72954\\\\201.4199\\\\283.01\\\\24.26079\\\\199.9199\\\\283.01\\\\23.2715\\\\197.9199\\\\283.01\\\\22.13579\\\\196.4872\\\\283.01\\\\20.13579\\\\194.774\\\\283.01\\\\18.13579\\\\193.7817\\\\283.01\\\\16.63579\\\\193.3109\\\\283.01\\\\14.13579\\\\193.0843\\\\283.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848817597700001.509440095881\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"39\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"7\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"73.62865\\\\152.4199\\\\283.01\\\\73.25758\\\\149.9199\\\\283.01\\\\72.72131\\\\148.4199\\\\283.01\\\\72.19829\\\\147.4199\\\\283.01\\\\70.63579\\\\145.5002\\\\283.01\\\\69.13579\\\\144.2413\\\\283.01\\\\67.63579\\\\143.3861\\\\283.01\\\\66.13579\\\\142.8237\\\\283.01\\\\64.63579\\\\142.5712\\\\283.01\\\\63.13579\\\\142.4671\\\\283.01\\\\60.13579\\\\142.7724\\\\283.01\\\\58.63579\\\\143.2817\\\\283.01\\\\57.63579\\\\143.7984\\\\283.01\\\\56.13579\\\\144.8652\\\\283.01\\\\55.05246\\\\145.9199\\\\283.01\\\\53.9715\\\\147.4199\\\\283.01\\\\53.02681\\\\149.4199\\\\283.01\\\\52.51399\\\\151.4199\\\\283.01\\\\52.35289\\\\152.9199\\\\283.01\\\\52.53963\\\\154.9199\\\\283.01\\\\52.945\\\\156.4199\\\\283.01\\\\53.53444\\\\157.9199\\\\283.01\\\\54.11373\\\\158.9199\\\\283.01\\\\55.13579\\\\160.2145\\\\283.01\\\\56.13579\\\\161.186\\\\283.01\\\\57.13579\\\\161.9566\\\\283.01\\\\59.13579\\\\163.0032\\\\283.01\\\\60.63579\\\\163.4761\\\\283.01\\\\62.13579\\\\163.6955\\\\283.01\\\\64.13579\\\\163.6699\\\\283.01\\\\65.13579\\\\163.5261\\\\283.01\\\\66.63579\\\\163.0843\\\\283.01\\\\68.13579\\\\162.4546\\\\283.01\\\\69.63579\\\\161.5154\\\\283.01\\\\70.63579\\\\160.6282\\\\283.01\\\\71.68726\\\\159.4199\\\\283.01\\\\72.3094\\\\158.4199\\\\283.01\\\\73.20454\\\\156.4199\\\\283.01\\\\73.48447\\\\154.9199\\\\283.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848849599600001.538291679804\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"46\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"8\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-17.14754\\\\156.4199\\\\286.01\\\\-17.54129\\\\154.9199\\\\286.01\\\\-18.18997\\\\153.4199\\\\286.01\\\\-19.27567\\\\151.4199\\\\286.01\\\\-22.23767\\\\146.4199\\\\286.01\\\\-23.71109\\\\144.4199\\\\286.01\\\\-25.86421\\\\142.2542\\\\286.01\\\\-27.86421\\\\140.7934\\\\286.01\\\\-29.86421\\\\139.7504\\\\286.01\\\\-32.36421\\\\138.8496\\\\286.01\\\\-34.86421\\\\138.3014\\\\286.01\\\\-37.86421\\\\138.2204\\\\286.01\\\\-38.86421\\\\138.315\\\\286.01\\\\-40.86421\\\\138.7523\\\\286.01\\\\-42.36421\\\\139.2324\\\\286.01\\\\-44.86421\\\\140.3181\\\\286.01\\\\-46.36421\\\\141.2324\\\\286.01\\\\-48.36421\\\\142.7916\\\\286.01\\\\-49.47421\\\\143.9199\\\\286.01\\\\-51.016\\\\145.9199\\\\286.01\\\\-51.87383\\\\147.4199\\\\286.01\\\\-52.97685\\\\149.9199\\\\286.01\\\\-53.49453\\\\151.9199\\\\286.01\\\\-53.73249\\\\155.4199\\\\286.01\\\\-53.47443\\\\158.9199\\\\286.01\\\\-52.93605\\\\160.9199\\\\286.01\\\\-52.55032\\\\161.9199\\\\286.01\\\\-51.54154\\\\163.9199\\\\286.01\\\\-50.53799\\\\165.4199\\\\286.01\\\\-49.36421\\\\166.7567\\\\286.01\\\\-46.86421\\\\169.0795\\\\286.01\\\\-45.36421\\\\170.0664\\\\286.01\\\\-43.36421\\\\171.06\\\\286.01\\\\-41.86421\\\\171.5856\\\\286.01\\\\-39.86421\\\\172.0751\\\\286.01\\\\-36.86421\\\\172.2774\\\\286.01\\\\-33.36421\\\\172.0395\\\\286.01\\\\-31.36421\\\\171.5115\\\\286.01\\\\-30.36421\\\\171.1171\\\\286.01\\\\-28.36421\\\\170.1204\\\\286.01\\\\-26.86421\\\\169.1277\\\\286.01\\\\-25.43843\\\\167.9199\\\\286.01\\\\-24.36421\\\\166.8613\\\\286.01\\\\-22.68564\\\\164.9199\\\\286.01\\\\-20.18366\\\\161.4199\\\\286.01\\\\-18.24384\\\\158.4199\\\\286.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848866600500001.541849142008\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"143\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"9\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-14.57135\\\\153.4199\\\\286.01\\\\-15.49516\\\\155.4199\\\\286.01\\\\-15.75707\\\\156.4199\\\\286.01\\\\-15.78467\\\\157.4199\\\\286.01\\\\-15.0439\\\\158.9199\\\\286.01\\\\-14.02238\\\\160.4199\\\\286.01\\\\-11.75342\\\\163.4199\\\\286.01\\\\-10.05119\\\\165.9199\\\\286.01\\\\-9.266294\\\\166.9199\\\\286.01\\\\-6.534666\\\\170.9199\\\\286.01\\\\-4.989212\\\\172.9199\\\\286.01\\\\-2.364212\\\\175.6552\\\\286.01\\\\0.6357885\\\\178.3645\\\\286.01\\\\3.162897\\\\180.9199\\\\286.01\\\\4.831301\\\\182.9199\\\\286.01\\\\5.793481\\\\184.4199\\\\286.01\\\\6.209064\\\\185.4199\\\\286.01\\\\6.251529\\\\186.4199\\\\286.01\\\\5.84561\\\\187.4199\\\\286.01\\\\5.229538\\\\188.4199\\\\286.01\\\\3.904728\\\\189.9199\\\\286.01\\\\1.509165\\\\192.4199\\\\286.01\\\\-0.01421149\\\\194.4199\\\\286.01\\\\-1.566989\\\\197.4199\\\\286.01\\\\-1.955878\\\\198.4199\\\\286.01\\\\-2.473254\\\\200.4199\\\\286.01\\\\-2.691339\\\\203.4199\\\\286.01\\\\-2.664743\\\\204.9199\\\\286.01\\\\-2.487896\\\\206.9199\\\\286.01\\\\-1.985179\\\\208.9199\\\\286.01\\\\-0.9445686\\\\211.4199\\\\286.01\\\\-0.07303502\\\\212.9199\\\\286.01\\\\0.9783811\\\\214.4199\\\\286.01\\\\1.885789\\\\215.4199\\\\286.01\\\\3.635788\\\\217.0773\\\\286.01\\\\5.135788\\\\218.1228\\\\286.01\\\\6.635788\\\\218.9891\\\\286.01\\\\9.135789\\\\220.027\\\\286.01\\\\11.13579\\\\220.5289\\\\286.01\\\\14.13579\\\\220.731\\\\286.01\\\\17.13579\\\\220.5555\\\\286.01\\\\19.13579\\\\220.0785\\\\286.01\\\\20.63579\\\\219.56\\\\286.01\\\\22.63579\\\\218.5779\\\\286.01\\\\24.13579\\\\217.5997\\\\286.01\\\\26.63579\\\\215.3391\\\\286.01\\\\28.25469\\\\213.4199\\\\286.01\\\\29.69829\\\\210.9199\\\\286.01\\\\30.32329\\\\209.4199\\\\286.01\\\\30.81052\\\\207.9199\\\\286.01\\\\31.25947\\\\205.9199\\\\286.01\\\\31.36474\\\\202.9199\\\\286.01\\\\31.25015\\\\201.4199\\\\286.01\\\\30.79802\\\\199.4199\\\\286.01\\\\30.30698\\\\197.9199\\\\286.01\\\\29.65141\\\\196.4199\\\\286.01\\\\28.84218\\\\194.9199\\\\286.01\\\\27.82176\\\\193.4199\\\\286.01\\\\26.13579\\\\191.552\\\\286.01\\\\23.59412\\\\188.9199\\\\286.01\\\\22.45183\\\\187.4199\\\\286.01\\\\21.87136\\\\185.9199\\\\286.01\\\\22.07775\\\\184.9199\\\\286.01\\\\22.51447\\\\183.9199\\\\286.01\\\\23.47013\\\\182.4199\\\\286.01\\\\25.57\\\\179.9199\\\\286.01\\\\27.5517\\\\177.9199\\\\286.01\\\\30.13579\\\\175.5383\\\\286.01\\\\32.1768\\\\173.4199\\\\286.01\\\\33.78976\\\\171.4199\\\\286.01\\\\35.44261\\\\168.9199\\\\286.01\\\\37.52156\\\\165.9199\\\\286.01\\\\40.48853\\\\161.9199\\\\286.01\\\\42.13579\\\\160.0113\\\\286.01\\\\43.13579\\\\159.0058\\\\286.01\\\\44.13579\\\\158.355\\\\286.01\\\\45.63579\\\\159.3214\\\\286.01\\\\47.13579\\\\160.8254\\\\286.01\\\\48.51277\\\\162.4199\\\\286.01\\\\50.37894\\\\164.4199\\\\286.01\\\\52.63579\\\\166.5075\\\\286.01\\\\54.13579\\\\167.5623\\\\286.01\\\\57.13579\\\\169.0584\\\\286.01\\\\58.63579\\\\169.5623\\\\286.01\\\\60.63579\\\\170.0095\\\\286.01\\\\62.13579\\\\170.1383\\\\286.01\\\\65.13579\\\\170.0383\\\\286.01\\\\67.13579\\\\169.5946\\\\286.01\\\\68.63579\\\\169.1182\\\\286.01\\\\71.13579\\\\168.0377\\\\286.01\\\\72.63579\\\\167.1193\\\\286.01\\\\74.63579\\\\165.5595\\\\286.01\\\\75.7575\\\\164.4199\\\\286.01\\\\77.29167\\\\162.4199\\\\286.01\\\\78.15794\\\\160.9199\\\\286.01\\\\79.25264\\\\158.4199\\\\286.01\\\\79.77\\\\156.4199\\\\286.01\\\\80.00407\\\\152.9199\\\\286.01\\\\79.79632\\\\149.9199\\\\286.01\\\\79.30515\\\\147.9199\\\\286.01\\\\78.7759\\\\146.4199\\\\286.01\\\\77.78234\\\\144.4199\\\\286.01\\\\76.78518\\\\142.9199\\\\286.01\\\\75.44829\\\\141.4199\\\\286.01\\\\73.63579\\\\139.7192\\\\286.01\\\\71.63579\\\\138.3489\\\\286.01\\\\69.63579\\\\137.3365\\\\286.01\\\\68.13579\\\\136.7758\\\\286.01\\\\66.13579\\\\136.2751\\\\286.01\\\\62.63579\\\\136.0838\\\\286.01\\\\59.63579\\\\136.315\\\\286.01\\\\57.63579\\\\136.8432\\\\286.01\\\\56.63579\\\\137.2282\\\\286.01\\\\54.63579\\\\138.2251\\\\286.01\\\\53.13579\\\\139.2217\\\\286.01\\\\51.73048\\\\140.4199\\\\286.01\\\\50.63579\\\\141.5006\\\\286.01\\\\49.01391\\\\143.4199\\\\286.01\\\\45.63579\\\\148.6563\\\\286.01\\\\44.13579\\\\150.5612\\\\286.01\\\\43.13579\\\\151.2219\\\\286.01\\\\42.63579\\\\151.0217\\\\286.01\\\\40.13579\\\\149.1523\\\\286.01\\\\35.63579\\\\144.8964\\\\286.01\\\\31.34298\\\\140.4199\\\\286.01\\\\29.63579\\\\138.8365\\\\286.01\\\\27.63579\\\\137.2758\\\\286.01\\\\26.13579\\\\136.2875\\\\286.01\\\\21.63579\\\\133.7337\\\\286.01\\\\18.63579\\\\132.2451\\\\286.01\\\\16.13579\\\\131.3449\\\\286.01\\\\14.13579\\\\130.8667\\\\286.01\\\\12.63579\\\\130.8597\\\\286.01\\\\10.63579\\\\131.2148\\\\286.01\\\\9.135789\\\\131.787\\\\286.01\\\\7.135788\\\\132.7495\\\\286.01\\\\3.635788\\\\134.8391\\\\286.01\\\\0.6357885\\\\136.7923\\\\286.01\\\\-1.364211\\\\138.2802\\\\286.01\\\\-3.166659\\\\139.9199\\\\286.01\\\\-5.078728\\\\141.9199\\\\286.01\\\\-8.743597\\\\146.4199\\\\286.01\\\\-10.50432\\\\148.4199\\\\286.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848890601900001.533619501923\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"50\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"10\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"26.28579\\\\112.4199\\\\286.01\\\\27.83857\\\\109.4199\\\\286.01\\\\28.22746\\\\108.4199\\\\286.01\\\\28.74483\\\\106.4199\\\\286.01\\\\28.96292\\\\103.4199\\\\286.01\\\\28.93632\\\\101.9199\\\\286.01\\\\28.75947\\\\99.91986\\\\286.01\\\\28.25676\\\\97.91986\\\\286.01\\\\27.21615\\\\95.41986\\\\286.01\\\\26.34461\\\\93.91986\\\\286.01\\\\25.2932\\\\92.41986\\\\286.01\\\\24.38579\\\\91.41986\\\\286.01\\\\22.63579\\\\89.76245\\\\286.01\\\\21.13579\\\\88.71692\\\\286.01\\\\19.63579\\\\87.85058\\\\286.01\\\\17.13579\\\\86.81271\\\\286.01\\\\15.13579\\\\86.31081\\\\286.01\\\\12.13579\\\\86.10869\\\\286.01\\\\9.135789\\\\86.28422\\\\286.01\\\\7.135788\\\\86.76125\\\\286.01\\\\5.635788\\\\87.27975\\\\286.01\\\\3.635788\\\\88.26181\\\\286.01\\\\2.135788\\\\89.23998\\\\286.01\\\\-0.3642115\\\\91.50063\\\\286.01\\\\-1.983114\\\\93.41986\\\\286.01\\\\-3.426712\\\\95.91986\\\\286.01\\\\-4.051712\\\\97.41986\\\\286.01\\\\-4.538943\\\\98.91986\\\\286.01\\\\-4.987895\\\\100.9199\\\\286.01\\\\-5.093159\\\\103.9199\\\\286.01\\\\-4.978573\\\\105.4199\\\\286.01\\\\-4.526445\\\\107.4199\\\\286.01\\\\-4.035407\\\\108.9199\\\\286.01\\\\-3.379837\\\\110.4199\\\\286.01\\\\-2.570607\\\\111.9199\\\\286.01\\\\-1.120541\\\\113.9199\\\\286.01\\\\-0.1875448\\\\114.9199\\\\286.01\\\\1.635789\\\\116.6058\\\\286.01\\\\3.135788\\\\117.6287\\\\286.01\\\\4.635788\\\\118.4723\\\\286.01\\\\7.135788\\\\119.5478\\\\286.01\\\\8.635789\\\\120.032\\\\286.01\\\\11.13579\\\\120.4815\\\\286.01\\\\13.63579\\\\120.4539\\\\286.01\\\\15.63579\\\\120.0365\\\\286.01\\\\17.13579\\\\119.5128\\\\286.01\\\\20.13579\\\\118.0816\\\\286.01\\\\21.63579\\\\117.1312\\\\286.01\\\\23.63579\\\\115.5595\\\\286.01\\\\24.74579\\\\114.4199\\\\286.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848911603100001.549938975401\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"245\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"11\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-24.36421\\\\171.6106\\\\289.01\\\\-19.86421\\\\167.7245\\\\289.01\\\\-18.36421\\\\166.7742\\\\289.01\\\\-16.86421\\\\166.2171\\\\289.01\\\\-15.86421\\\\166.136\\\\289.01\\\\-14.86421\\\\166.3039\\\\289.01\\\\-12.86421\\\\167.2141\\\\289.01\\\\-11.36421\\\\168.2115\\\\289.01\\\\-8.864211\\\\170.4133\\\\289.01\\\\-7.364212\\\\172.015\\\\289.01\\\\-3.364212\\\\176.4838\\\\289.01\\\\-1.698104\\\\178.4199\\\\289.01\\\\-0.6444128\\\\179.9199\\\\289.01\\\\0.2081026\\\\181.4199\\\\289.01\\\\0.8369604\\\\182.9199\\\\289.01\\\\1.181462\\\\184.4199\\\\289.01\\\\1.159226\\\\185.4199\\\\289.01\\\\0.7715028\\\\186.9199\\\\289.01\\\\0.3016764\\\\187.9199\\\\289.01\\\\-0.6509087\\\\189.4199\\\\289.01\\\\-2.53016\\\\191.9199\\\\289.01\\\\-3.495677\\\\193.4199\\\\289.01\\\\-4.539615\\\\195.4199\\\\289.01\\\\-5.487195\\\\197.9199\\\\289.01\\\\-6.045509\\\\200.4199\\\\289.01\\\\-6.221633\\\\203.9199\\\\289.01\\\\-5.981275\\\\207.4199\\\\289.01\\\\-5.507912\\\\209.4199\\\\289.01\\\\-4.566212\\\\211.9199\\\\289.01\\\\-3.55636\\\\213.9199\\\\289.01\\\\-2.941314\\\\214.9199\\\\289.01\\\\-1.4598\\\\216.9199\\\\289.01\\\\0.1357885\\\\218.6212\\\\289.01\\\\1.135789\\\\219.5154\\\\289.01\\\\3.135788\\\\220.9883\\\\289.01\\\\4.135788\\\\221.6079\\\\289.01\\\\6.135788\\\\222.6179\\\\289.01\\\\8.635789\\\\223.5528\\\\289.01\\\\11.13579\\\\224.0987\\\\289.01\\\\14.13579\\\\224.2564\\\\289.01\\\\17.63579\\\\224.0546\\\\289.01\\\\19.63579\\\\223.5962\\\\289.01\\\\21.13579\\\\223.1108\\\\289.01\\\\23.63579\\\\222.0024\\\\289.01\\\\25.13579\\\\221.1236\\\\289.01\\\\26.63579\\\\220.0783\\\\289.01\\\\29.13579\\\\217.7342\\\\289.01\\\\30.33269\\\\216.4199\\\\289.01\\\\31.75305\\\\214.4199\\\\289.01\\\\33.30979\\\\211.4199\\\\289.01\\\\34.3199\\\\208.4199\\\\289.01\\\\34.75285\\\\206.4199\\\\289.01\\\\34.88579\\\\204.9199\\\\289.01\\\\34.88197\\\\202.4199\\\\289.01\\\\34.74179\\\\200.9199\\\\289.01\\\\34.31215\\\\198.9199\\\\289.01\\\\33.2965\\\\195.9199\\\\289.01\\\\32.31141\\\\193.9199\\\\289.01\\\\30.31499\\\\190.9199\\\\289.01\\\\29.46377\\\\189.9199\\\\289.01\\\\28.09009\\\\187.9199\\\\289.01\\\\27.5465\\\\186.9199\\\\289.01\\\\27.02657\\\\185.4199\\\\289.01\\\\26.95302\\\\183.9199\\\\289.01\\\\27.49712\\\\181.9199\\\\289.01\\\\28.4963\\\\179.9199\\\\289.01\\\\29.48924\\\\178.4199\\\\289.01\\\\31.52524\\\\175.9199\\\\289.01\\\\33.74527\\\\173.4199\\\\289.01\\\\35.40354\\\\171.4199\\\\289.01\\\\37.13579\\\\169.6051\\\\289.01\\\\39.13579\\\\167.7864\\\\289.01\\\\40.63579\\\\166.7655\\\\289.01\\\\41.63579\\\\166.2524\\\\289.01\\\\43.13579\\\\165.754\\\\289.01\\\\44.63579\\\\165.7558\\\\289.01\\\\46.13579\\\\166.2658\\\\289.01\\\\47.13579\\\\166.7949\\\\289.01\\\\48.63579\\\\167.8024\\\\289.01\\\\51.63579\\\\170.0929\\\\289.01\\\\53.13579\\\\171.0158\\\\289.01\\\\55.13579\\\\172.0168\\\\289.01\\\\58.13579\\\\173.0807\\\\289.01\\\\60.13579\\\\173.508\\\\289.01\\\\63.13579\\\\173.6928\\\\289.01\\\\65.63579\\\\173.5299\\\\289.01\\\\67.63579\\\\173.1064\\\\289.01\\\\69.63579\\\\172.491\\\\289.01\\\\71.63579\\\\171.6557\\\\289.01\\\\73.63579\\\\170.6136\\\\289.01\\\\75.13579\\\\169.622\\\\289.01\\\\77.13579\\\\167.9501\\\\289.01\\\\78.14953\\\\166.9199\\\\289.01\\\\79.80318\\\\164.9199\\\\289.01\\\\80.78197\\\\163.4199\\\\289.01\\\\81.81926\\\\161.4199\\\\289.01\\\\82.77949\\\\158.9199\\\\289.01\\\\83.26665\\\\156.9199\\\\289.01\\\\83.42233\\\\155.4199\\\\289.01\\\\83.54694\\\\152.9199\\\\289.01\\\\83.298\\\\149.4199\\\\289.01\\\\82.82378\\\\147.4199\\\\289.01\\\\82.33067\\\\145.9199\\\\289.01\\\\81.20625\\\\143.4199\\\\289.01\\\\80.32435\\\\141.9199\\\\289.01\\\\78.83173\\\\139.9199\\\\289.01\\\\77.63579\\\\138.6628\\\\289.01\\\\76.13579\\\\137.254\\\\289.01\\\\74.13579\\\\135.7893\\\\289.01\\\\73.13579\\\\135.2029\\\\289.01\\\\70.13579\\\\133.7565\\\\289.01\\\\68.63579\\\\133.2538\\\\289.01\\\\66.63579\\\\132.7745\\\\289.01\\\\63.13579\\\\132.5449\\\\289.01\\\\59.63579\\\\132.7386\\\\289.01\\\\57.13579\\\\133.3031\\\\289.01\\\\55.63579\\\\133.8401\\\\289.01\\\\53.63579\\\\134.7649\\\\289.01\\\\50.63579\\\\136.7378\\\\289.01\\\\48.79829\\\\138.4199\\\\289.01\\\\45.63579\\\\141.6464\\\\289.01\\\\44.63579\\\\142.51\\\\289.01\\\\42.63579\\\\143.6619\\\\289.01\\\\41.13579\\\\144.0638\\\\289.01\\\\40.13579\\\\143.9958\\\\289.01\\\\38.63579\\\\143.6008\\\\289.01\\\\35.63579\\\\142.1031\\\\289.01\\\\34.13579\\\\141.0644\\\\289.01\\\\29.63579\\\\137.31\\\\289.01\\\\26.63579\\\\135.0555\\\\289.01\\\\23.55246\\\\132.4199\\\\289.01\\\\22.0726\\\\130.9199\\\\289.01\\\\20.46226\\\\128.9199\\\\289.01\\\\19.39348\\\\126.9199\\\\289.01\\\\19.14968\\\\125.9199\\\\289.01\\\\19.44511\\\\124.9199\\\\289.01\\\\19.99907\\\\123.9199\\\\289.01\\\\20.82414\\\\122.9199\\\\289.01\\\\22.27133\\\\121.4199\\\\289.01\\\\26.13579\\\\117.9661\\\\289.01\\\\27.14412\\\\116.9199\\\\289.01\\\\28.79449\\\\114.9199\\\\289.01\\\\29.76725\\\\113.4199\\\\289.01\\\\30.81119\\\\111.4199\\\\289.01\\\\31.75877\\\\108.9199\\\\289.01\\\\32.31709\\\\106.4199\\\\289.01\\\\32.49321\\\\102.9199\\\\289.01\\\\32.25285\\\\99.41986\\\\289.01\\\\31.77949\\\\97.41986\\\\289.01\\\\30.83779\\\\94.91986\\\\289.01\\\\29.82794\\\\92.91986\\\\289.01\\\\29.21289\\\\91.91986\\\\289.01\\\\27.73138\\\\89.91986\\\\289.01\\\\26.13579\\\\88.21847\\\\289.01\\\\25.13579\\\\87.32427\\\\289.01\\\\23.13579\\\\85.85146\\\\289.01\\\\22.13579\\\\85.23184\\\\289.01\\\\20.13579\\\\84.22186\\\\289.01\\\\17.63579\\\\83.28586\\\\289.01\\\\15.63579\\\\82.81703\\\\289.01\\\\14.13579\\\\82.65841\\\\289.01\\\\12.13579\\\\82.58332\\\\289.01\\\\8.635789\\\\82.78226\\\\289.01\\\\6.635788\\\\83.2435\\\\289.01\\\\5.135788\\\\83.72891\\\\289.01\\\\2.635788\\\\84.83727\\\\289.01\\\\1.135789\\\\85.71608\\\\289.01\\\\-0.3642115\\\\86.76138\\\\289.01\\\\-2.864212\\\\89.1055\\\\289.01\\\\-4.061114\\\\90.41986\\\\289.01\\\\-5.481468\\\\92.41986\\\\289.01\\\\-7.038211\\\\95.41986\\\\289.01\\\\-8.04832\\\\98.41986\\\\289.01\\\\-8.481275\\\\100.4199\\\\289.01\\\\-8.614211\\\\101.9199\\\\289.01\\\\-8.610394\\\\104.4199\\\\289.01\\\\-8.470211\\\\105.9199\\\\289.01\\\\-8.040568\\\\107.9199\\\\289.01\\\\-7.024926\\\\110.9199\\\\289.01\\\\-6.039831\\\\112.9199\\\\289.01\\\\-5.436641\\\\113.9199\\\\289.01\\\\-4.016484\\\\115.9199\\\\289.01\\\\-2.364212\\\\117.6864\\\\289.01\\\\-0.8642115\\\\119.0858\\\\289.01\\\\2.635788\\\\121.7363\\\\289.01\\\\4.936513\\\\123.9199\\\\289.01\\\\5.739955\\\\124.9199\\\\289.01\\\\6.243547\\\\125.9199\\\\289.01\\\\6.389576\\\\126.9199\\\\289.01\\\\5.898776\\\\128.4199\\\\289.01\\\\5.36544\\\\129.4199\\\\289.01\\\\4.344122\\\\130.9199\\\\289.01\\\\2.635788\\\\132.901\\\\289.01\\\\0.6357885\\\\134.9343\\\\289.01\\\\-3.291989\\\\138.4199\\\\289.01\\\\-6.454596\\\\141.4199\\\\289.01\\\\-8.364211\\\\143.1276\\\\289.01\\\\-10.36421\\\\144.5659\\\\289.01\\\\-12.36421\\\\145.6168\\\\289.01\\\\-13.86421\\\\146.1154\\\\289.01\\\\-14.86421\\\\146.2075\\\\289.01\\\\-15.86421\\\\146.0664\\\\289.01\\\\-17.86421\\\\145.0818\\\\289.01\\\\-19.36421\\\\143.7907\\\\289.01\\\\-22.36421\\\\140.7383\\\\289.01\\\\-23.36421\\\\139.8224\\\\289.01\\\\-25.36421\\\\138.2655\\\\289.01\\\\-27.86421\\\\136.8177\\\\289.01\\\\-30.36421\\\\135.775\\\\289.01\\\\-31.86421\\\\135.3379\\\\289.01\\\\-34.36421\\\\134.8099\\\\289.01\\\\-36.36421\\\\134.6622\\\\289.01\\\\-39.36421\\\\134.8203\\\\289.01\\\\-41.36421\\\\135.2396\\\\289.01\\\\-44.36421\\\\136.2353\\\\289.01\\\\-47.36421\\\\137.7303\\\\289.01\\\\-48.86421\\\\138.7237\\\\289.01\\\\-50.31903\\\\139.9199\\\\289.01\\\\-51.86699\\\\141.4199\\\\289.01\\\\-53.52726\\\\143.4199\\\\289.01\\\\-54.5031\\\\144.9199\\\\289.01\\\\-55.54621\\\\146.9199\\\\289.01\\\\-56.50508\\\\149.4199\\\\289.01\\\\-56.99216\\\\151.4199\\\\289.01\\\\-57.2638\\\\154.9199\\\\289.01\\\\-57.13921\\\\157.9199\\\\289.01\\\\-56.96703\\\\159.4199\\\\289.01\\\\-56.47692\\\\161.4199\\\\289.01\\\\-55.93595\\\\162.9199\\\\289.01\\\\-55.00497\\\\164.9199\\\\289.01\\\\-54.08002\\\\166.4199\\\\289.01\\\\-53.01329\\\\167.9199\\\\289.01\\\\-51.64692\\\\169.4199\\\\289.01\\\\-49.36421\\\\171.5437\\\\289.01\\\\-47.86421\\\\172.6127\\\\289.01\\\\-46.36421\\\\173.4903\\\\289.01\\\\-43.86421\\\\174.6123\\\\289.01\\\\-42.36421\\\\175.104\\\\289.01\\\\-40.36421\\\\175.5783\\\\289.01\\\\-36.86421\\\\175.813\\\\289.01\\\\-34.36421\\\\175.6949\\\\289.01\\\\-32.86421\\\\175.5299\\\\289.01\\\\-30.86421\\\\175.0428\\\\289.01\\\\-29.36421\\\\174.5075\\\\289.01\\\\-27.36421\\\\173.5845\\\\289.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848933604400001.474954755728\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"237\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"12\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-50.86421\\\\137.2415\\\\292.01\\\\-53.36421\\\\139.566\\\\292.01\\\\-54.99971\\\\141.4199\\\\292.01\\\\-56.06249\\\\142.9199\\\\292.01\\\\-57.48386\\\\145.4199\\\\292.01\\\\-58.5421\\\\147.9199\\\\292.01\\\\-59.00731\\\\149.4199\\\\292.01\\\\-59.52402\\\\151.9199\\\\292.01\\\\-59.68875\\\\155.4199\\\\292.01\\\\-59.50454\\\\158.9199\\\\292.01\\\\-58.98414\\\\161.4199\\\\292.01\\\\-58.51487\\\\162.9199\\\\292.01\\\\-57.42337\\\\165.4199\\\\292.01\\\\-55.9553\\\\167.9199\\\\292.01\\\\-54.43354\\\\169.9199\\\\292.01\\\\-53.06614\\\\171.4199\\\\292.01\\\\-51.36421\\\\172.969\\\\292.01\\\\-49.86421\\\\174.1299\\\\292.01\\\\-48.36421\\\\175.1141\\\\292.01\\\\-45.36421\\\\176.6118\\\\292.01\\\\-42.36421\\\\177.607\\\\292.01\\\\-39.86421\\\\178.0984\\\\292.01\\\\-36.86421\\\\178.2351\\\\292.01\\\\-33.36421\\\\178.0634\\\\292.01\\\\-30.86421\\\\177.5482\\\\292.01\\\\-29.36421\\\\177.0816\\\\292.01\\\\-26.86421\\\\176.0001\\\\292.01\\\\-24.36421\\\\174.5449\\\\292.01\\\\-22.36421\\\\173.0784\\\\292.01\\\\-21.36421\\\\172.2305\\\\292.01\\\\-19.36421\\\\170.8463\\\\292.01\\\\-18.36421\\\\170.289\\\\292.01\\\\-16.86421\\\\169.7166\\\\292.01\\\\-15.36421\\\\169.4899\\\\292.01\\\\-13.36421\\\\169.7316\\\\292.01\\\\-10.86421\\\\170.7901\\\\292.01\\\\-9.364211\\\\171.7313\\\\292.01\\\\-7.874132\\\\172.9199\\\\292.01\\\\-5.819569\\\\174.9199\\\\292.01\\\\-4.197077\\\\176.9199\\\\292.01\\\\-3.215368\\\\178.4199\\\\292.01\\\\-2.222842\\\\180.4199\\\\292.01\\\\-1.726866\\\\181.9199\\\\292.01\\\\-1.545029\\\\183.9199\\\\292.01\\\\-1.7261\\\\185.4199\\\\292.01\\\\-2.267621\\\\186.9199\\\\292.01\\\\-3.670156\\\\189.4199\\\\292.01\\\\-5.063191\\\\191.4199\\\\292.01\\\\-6.47314\\\\193.9199\\\\292.01\\\\-7.528172\\\\196.4199\\\\292.01\\\\-7.99005\\\\197.9199\\\\292.01\\\\-8.496565\\\\200.4199\\\\292.01\\\\-8.660795\\\\203.9199\\\\292.01\\\\-8.561417\\\\206.4199\\\\292.01\\\\-8.006369\\\\209.4199\\\\292.01\\\\-6.968822\\\\212.4199\\\\292.01\\\\-6.01766\\\\214.4199\\\\292.01\\\\-4.087803\\\\217.4199\\\\292.01\\\\-1.925022\\\\219.9199\\\\292.01\\\\0.6357885\\\\222.1419\\\\292.01\\\\3.635788\\\\224.0674\\\\292.01\\\\5.635788\\\\225.0181\\\\292.01\\\\8.635789\\\\226.0507\\\\292.01\\\\11.63579\\\\226.6077\\\\292.01\\\\14.13579\\\\226.7023\\\\292.01\\\\17.13579\\\\226.5765\\\\292.01\\\\19.63579\\\\226.0975\\\\292.01\\\\21.63579\\\\225.4732\\\\292.01\\\\23.63579\\\\224.6535\\\\292.01\\\\25.63579\\\\223.6229\\\\292.01\\\\26.63579\\\\222.9888\\\\292.01\\\\28.63579\\\\221.508\\\\292.01\\\\30.13579\\\\220.1511\\\\292.01\\\\31.76374\\\\218.4199\\\\292.01\\\\33.28978\\\\216.4199\\\\292.01\\\\34.22413\\\\214.9199\\\\292.01\\\\35.26341\\\\212.9199\\\\292.01\\\\36.23893\\\\210.4199\\\\292.01\\\\36.81548\\\\208.4199\\\\292.01\\\\37.31635\\\\205.4199\\\\292.01\\\\37.31125\\\\201.9199\\\\292.01\\\\36.80509\\\\198.9199\\\\292.01\\\\36.21972\\\\196.9199\\\\292.01\\\\35.23758\\\\194.4199\\\\292.01\\\\34.185\\\\192.4199\\\\292.01\\\\33.25797\\\\190.9199\\\\292.01\\\\31.47586\\\\188.4199\\\\292.01\\\\30.39613\\\\186.4199\\\\292.01\\\\29.98475\\\\185.4199\\\\292.01\\\\29.70282\\\\183.9199\\\\292.01\\\\29.65647\\\\182.9199\\\\292.01\\\\30.01312\\\\180.9199\\\\292.01\\\\30.59115\\\\179.4199\\\\292.01\\\\31.96314\\\\176.9199\\\\292.01\\\\33.04444\\\\175.4199\\\\292.01\\\\34.63579\\\\173.6154\\\\292.01\\\\36.13579\\\\172.1795\\\\292.01\\\\37.13579\\\\171.3688\\\\292.01\\\\39.63579\\\\169.8149\\\\292.01\\\\41.13579\\\\169.2102\\\\292.01\\\\42.63579\\\\168.8687\\\\292.01\\\\43.63579\\\\168.8372\\\\292.01\\\\45.63579\\\\169.3281\\\\292.01\\\\47.63579\\\\170.2854\\\\292.01\\\\51.13579\\\\172.6065\\\\292.01\\\\53.63579\\\\173.9453\\\\292.01\\\\55.13579\\\\174.6138\\\\292.01\\\\58.13579\\\\175.5708\\\\292.01\\\\61.13579\\\\176.0839\\\\292.01\\\\64.63579\\\\176.0973\\\\292.01\\\\67.63579\\\\175.5995\\\\292.01\\\\69.63579\\\\175.0346\\\\292.01\\\\72.13579\\\\174.0871\\\\292.01\\\\74.13579\\\\173.0916\\\\292.01\\\\77.13579\\\\171.1028\\\\292.01\\\\79.63579\\\\168.7767\\\\292.01\\\\81.27783\\\\166.9199\\\\292.01\\\\82.33613\\\\165.4199\\\\292.01\\\\83.23394\\\\163.9199\\\\292.01\\\\84.21426\\\\161.9199\\\\292.01\\\\84.81573\\\\160.4199\\\\292.01\\\\85.28121\\\\158.9199\\\\292.01\\\\85.79774\\\\156.4199\\\\292.01\\\\85.96235\\\\152.9199\\\\292.01\\\\85.82057\\\\149.9199\\\\292.01\\\\85.32604\\\\147.4199\\\\292.01\\\\84.3297\\\\144.4199\\\\292.01\\\\82.82874\\\\141.4199\\\\292.01\\\\81.84238\\\\139.9199\\\\292.01\\\\79.77893\\\\137.4199\\\\292.01\\\\78.13579\\\\135.8536\\\\292.01\\\\76.13579\\\\134.271\\\\292.01\\\\73.63579\\\\132.7315\\\\292.01\\\\71.63579\\\\131.7812\\\\292.01\\\\68.63579\\\\130.7527\\\\292.01\\\\66.13579\\\\130.2516\\\\292.01\\\\63.13579\\\\130.112\\\\292.01\\\\59.63579\\\\130.2875\\\\292.01\\\\57.13579\\\\130.7999\\\\292.01\\\\55.63579\\\\131.2636\\\\292.01\\\\53.13579\\\\132.3465\\\\292.01\\\\50.63579\\\\133.8043\\\\292.01\\\\48.63579\\\\135.3059\\\\292.01\\\\45.13579\\\\138.5364\\\\292.01\\\\43.63579\\\\139.6493\\\\292.01\\\\42.13579\\\\140.4601\\\\292.01\\\\40.13579\\\\141.0791\\\\292.01\\\\38.63579\\\\141.1097\\\\292.01\\\\36.63579\\\\140.6416\\\\292.01\\\\35.13579\\\\140.0553\\\\292.01\\\\32.63579\\\\138.6373\\\\292.01\\\\31.13579\\\\137.5738\\\\292.01\\\\29.72654\\\\136.4199\\\\292.01\\\\28.07417\\\\134.9199\\\\292.01\\\\25.91139\\\\132.4199\\\\292.01\\\\24.93418\\\\130.9199\\\\292.01\\\\24.00985\\\\128.9199\\\\292.01\\\\23.59784\\\\126.9199\\\\292.01\\\\24.00117\\\\124.9199\\\\292.01\\\\24.45341\\\\123.9199\\\\292.01\\\\25.412\\\\122.4199\\\\292.01\\\\27.1188\\\\120.4199\\\\292.01\\\\30.26747\\\\116.9199\\\\292.01\\\\31.33271\\\\115.4199\\\\292.01\\\\32.74472\\\\112.9199\\\\292.01\\\\33.80082\\\\110.4199\\\\292.01\\\\34.26079\\\\108.9199\\\\292.01\\\\34.76814\\\\106.4199\\\\292.01\\\\34.93237\\\\102.9199\\\\292.01\\\\34.83299\\\\100.4199\\\\292.01\\\\34.27795\\\\97.41986\\\\292.01\\\\33.2404\\\\94.41986\\\\292.01\\\\32.28924\\\\92.41986\\\\292.01\\\\30.35938\\\\89.41986\\\\292.01\\\\28.13579\\\\86.85905\\\\292.01\\\\25.63579\\\\84.69783\\\\292.01\\\\22.63579\\\\82.77126\\\\292.01\\\\20.63579\\\\81.82164\\\\292.01\\\\17.63579\\\\80.78906\\\\292.01\\\\14.63579\\\\80.23197\\\\292.01\\\\12.13579\\\\80.13745\\\\292.01\\\\9.135789\\\\80.26321\\\\292.01\\\\6.635788\\\\80.74219\\\\292.01\\\\4.635788\\\\81.36616\\\\292.01\\\\2.635788\\\\82.1862\\\\292.01\\\\0.6357885\\\\83.21684\\\\292.01\\\\-0.3642115\\\\83.85096\\\\292.01\\\\-2.364212\\\\85.33102\\\\292.01\\\\-3.864212\\\\86.68865\\\\292.01\\\\-5.492164\\\\88.41986\\\\292.01\\\\-7.018197\\\\90.41986\\\\292.01\\\\-7.953227\\\\91.91986\\\\292.01\\\\-8.991834\\\\93.91986\\\\292.01\\\\-9.966642\\\\96.41986\\\\292.01\\\\-10.5439\\\\98.41986\\\\292.01\\\\-11.04477\\\\101.4199\\\\292.01\\\\-11.03968\\\\104.9199\\\\292.01\\\\-10.53351\\\\107.9199\\\\292.01\\\\-9.947545\\\\109.9199\\\\292.01\\\\-8.965997\\\\112.4199\\\\292.01\\\\-7.913424\\\\114.4199\\\\292.01\\\\-6.97299\\\\115.9199\\\\292.01\\\\-5.421904\\\\117.9199\\\\292.01\\\\-3.864212\\\\119.5885\\\\292.01\\\\-1.366711\\\\121.9199\\\\292.01\\\\-0.3642115\\\\123.0152\\\\292.01\\\\0.7380612\\\\124.4199\\\\292.01\\\\1.307276\\\\125.4199\\\\292.01\\\\1.837008\\\\126.9199\\\\292.01\\\\1.945404\\\\127.9199\\\\292.01\\\\1.824169\\\\129.4199\\\\292.01\\\\1.341957\\\\130.9199\\\\292.01\\\\0.3438723\\\\132.9199\\\\292.01\\\\-0.6656821\\\\134.4199\\\\292.01\\\\-2.354596\\\\136.4199\\\\292.01\\\\-3.364212\\\\137.4545\\\\292.01\\\\-6.364212\\\\140.0493\\\\292.01\\\\-7.864212\\\\141.0763\\\\292.01\\\\-9.864211\\\\142.1287\\\\292.01\\\\-11.36421\\\\142.6533\\\\292.01\\\\-12.86421\\\\142.9596\\\\292.01\\\\-13.86421\\\\142.9695\\\\292.01\\\\-15.36421\\\\142.6443\\\\292.01\\\\-16.86421\\\\142.0094\\\\292.01\\\\-18.36421\\\\141.0572\\\\292.01\\\\-20.86421\\\\138.869\\\\292.01\\\\-23.36421\\\\136.7725\\\\292.01\\\\-25.86421\\\\135.1882\\\\292.01\\\\-28.86421\\\\133.7659\\\\292.01\\\\-30.36421\\\\133.2484\\\\292.01\\\\-32.36421\\\\132.7296\\\\292.01\\\\-35.36421\\\\132.2475\\\\292.01\\\\-38.36421\\\\132.2506\\\\292.01\\\\-41.36421\\\\132.7474\\\\292.01\\\\-43.36421\\\\133.3174\\\\292.01\\\\-45.86421\\\\134.2638\\\\292.01\\\\-47.86421\\\\135.2561\\\\292.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848957605700001.539833993627\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"247\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"13\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"14.13579\\\\228.4295\\\\295.01\\\\18.13579\\\\228.1286\\\\295.01\\\\20.63579\\\\227.5699\\\\295.01\\\\23.63579\\\\226.5032\\\\295.01\\\\25.63579\\\\225.5385\\\\295.01\\\\27.13579\\\\224.6467\\\\295.01\\\\28.63579\\\\223.6208\\\\295.01\\\\30.63579\\\\221.9606\\\\295.01\\\\32.63579\\\\219.9176\\\\295.01\\\\34.26079\\\\217.9199\\\\295.01\\\\35.85596\\\\215.4199\\\\295.01\\\\36.86065\\\\213.4199\\\\295.01\\\\37.84481\\\\210.9199\\\\295.01\\\\38.30011\\\\209.4199\\\\295.01\\\\38.83393\\\\206.9199\\\\295.01\\\\39.02689\\\\203.9199\\\\295.01\\\\38.82799\\\\200.4199\\\\295.01\\\\38.28665\\\\197.9199\\\\295.01\\\\37.83388\\\\196.4199\\\\295.01\\\\36.84829\\\\193.9199\\\\295.01\\\\35.83665\\\\191.9199\\\\295.01\\\\34.2616\\\\189.4199\\\\295.01\\\\32.91469\\\\187.4199\\\\295.01\\\\31.91341\\\\185.4199\\\\295.01\\\\31.41753\\\\183.9199\\\\295.01\\\\31.21638\\\\182.4199\\\\295.01\\\\31.22183\\\\181.4199\\\\295.01\\\\31.4365\\\\179.9199\\\\295.01\\\\31.9365\\\\178.4199\\\\295.01\\\\32.96956\\\\176.4199\\\\295.01\\\\33.63579\\\\175.5072\\\\295.01\\\\35.13579\\\\173.8535\\\\295.01\\\\37.13579\\\\172.3393\\\\295.01\\\\39.13579\\\\171.3338\\\\295.01\\\\41.13579\\\\170.7382\\\\295.01\\\\42.13579\\\\170.6482\\\\295.01\\\\43.63579\\\\170.7407\\\\295.01\\\\45.63579\\\\171.3626\\\\295.01\\\\47.63579\\\\172.3561\\\\295.01\\\\51.13579\\\\174.5457\\\\295.01\\\\53.13579\\\\175.5831\\\\295.01\\\\55.63579\\\\176.5908\\\\295.01\\\\57.13579\\\\177.05\\\\295.01\\\\60.13579\\\\177.6526\\\\295.01\\\\63.13579\\\\177.7993\\\\295.01\\\\66.13579\\\\177.6153\\\\295.01\\\\68.63579\\\\177.0842\\\\295.01\\\\71.63579\\\\176.1077\\\\295.01\\\\73.13579\\\\175.4511\\\\295.01\\\\75.63579\\\\174.1397\\\\295.01\\\\76.63579\\\\173.5072\\\\295.01\\\\78.63579\\\\172.0237\\\\295.01\\\\79.63579\\\\171.1478\\\\295.01\\\\81.34893\\\\169.4199\\\\295.01\\\\83.33125\\\\166.9199\\\\295.01\\\\84.85596\\\\164.4199\\\\295.01\\\\85.83382\\\\162.4199\\\\295.01\\\\86.74227\\\\159.9199\\\\295.01\\\\87.34301\\\\157.4199\\\\295.01\\\\87.67046\\\\154.4199\\\\295.01\\\\87.69308\\\\151.9199\\\\295.01\\\\87.28692\\\\148.4199\\\\295.01\\\\86.80479\\\\146.4199\\\\295.01\\\\85.72182\\\\143.4199\\\\295.01\\\\84.74316\\\\141.4199\\\\295.01\\\\83.8507\\\\139.9199\\\\295.01\\\\82.79869\\\\138.4199\\\\295.01\\\\81.13579\\\\136.4793\\\\295.01\\\\80.09653\\\\135.4199\\\\295.01\\\\78.13579\\\\133.6971\\\\295.01\\\\76.13579\\\\132.2705\\\\295.01\\\\73.63579\\\\130.872\\\\295.01\\\\71.13579\\\\129.7844\\\\295.01\\\\69.63579\\\\129.2868\\\\295.01\\\\67.13579\\\\128.7073\\\\295.01\\\\64.13579\\\\128.4028\\\\295.01\\\\62.13579\\\\128.3921\\\\295.01\\\\58.63579\\\\128.7287\\\\295.01\\\\56.13579\\\\129.3365\\\\295.01\\\\53.63579\\\\130.2527\\\\295.01\\\\50.63579\\\\131.8282\\\\295.01\\\\48.63579\\\\133.1938\\\\295.01\\\\46.13579\\\\135.2852\\\\295.01\\\\44.13579\\\\137.0396\\\\295.01\\\\42.63579\\\\138.0648\\\\295.01\\\\40.63579\\\\138.9977\\\\295.01\\\\38.63579\\\\139.4802\\\\295.01\\\\37.13579\\\\139.5112\\\\295.01\\\\35.13579\\\\139.0861\\\\295.01\\\\32.63579\\\\138.0112\\\\295.01\\\\31.13579\\\\137.0381\\\\295.01\\\\29.3328\\\\135.4199\\\\295.01\\\\28.06653\\\\133.9199\\\\295.01\\\\27.42027\\\\132.9199\\\\295.01\\\\26.43855\\\\130.9199\\\\295.01\\\\25.97402\\\\129.4199\\\\295.01\\\\25.83393\\\\127.9199\\\\295.01\\\\25.95701\\\\126.4199\\\\295.01\\\\26.43787\\\\124.9199\\\\295.01\\\\27.49988\\\\122.9199\\\\295.01\\\\28.62579\\\\121.4199\\\\295.01\\\\31.1932\\\\118.4199\\\\295.01\\\\32.32444\\\\116.9199\\\\295.01\\\\33.85028\\\\114.4199\\\\295.01\\\\34.81903\\\\112.4199\\\\295.01\\\\35.7245\\\\109.9199\\\\295.01\\\\36.32799\\\\107.4199\\\\295.01\\\\36.61153\\\\104.4199\\\\295.01\\\\36.68043\\\\102.9199\\\\295.01\\\\36.33499\\\\98.91986\\\\295.01\\\\35.74227\\\\96.41986\\\\295.01\\\\34.84829\\\\93.91986\\\\295.01\\\\33.88437\\\\91.91986\\\\295.01\\\\32.7434\\\\89.91986\\\\295.01\\\\31.31367\\\\87.91986\\\\295.01\\\\29.63579\\\\86.04859\\\\295.01\\\\27.13579\\\\83.74197\\\\295.01\\\\25.13579\\\\82.31819\\\\295.01\\\\23.13579\\\\81.17551\\\\295.01\\\\21.13579\\\\80.21014\\\\295.01\\\\18.63579\\\\79.3208\\\\295.01\\\\16.13579\\\\78.72765\\\\295.01\\\\12.13579\\\\78.41024\\\\295.01\\\\8.135789\\\\78.70996\\\\295.01\\\\5.635788\\\\79.269\\\\295.01\\\\2.635788\\\\80.33652\\\\295.01\\\\0.6357885\\\\81.29802\\\\295.01\\\\-2.364212\\\\83.21894\\\\295.01\\\\-4.364212\\\\84.87916\\\\295.01\\\\-6.364212\\\\86.92207\\\\295.01\\\\-7.991695\\\\88.91986\\\\295.01\\\\-9.58564\\\\91.41986\\\\295.01\\\\-10.58907\\\\93.41986\\\\295.01\\\\-11.57323\\\\95.91986\\\\295.01\\\\-12.02854\\\\97.41986\\\\295.01\\\\-12.56235\\\\99.91986\\\\295.01\\\\-12.75532\\\\102.9199\\\\295.01\\\\-12.55642\\\\106.4199\\\\295.01\\\\-12.01507\\\\108.9199\\\\295.01\\\\-11.5623\\\\110.4199\\\\295.01\\\\-10.57671\\\\112.9199\\\\295.01\\\\-8.962544\\\\115.9199\\\\295.01\\\\-7.569458\\\\117.9199\\\\295.01\\\\-5.366278\\\\120.4199\\\\295.01\\\\-3.364212\\\\122.4839\\\\295.01\\\\-2.140774\\\\123.9199\\\\295.01\\\\-1.179429\\\\125.4199\\\\295.01\\\\-0.712649\\\\126.4199\\\\295.01\\\\-0.2422979\\\\127.9199\\\\295.01\\\\-0.09468023\\\\129.4199\\\\295.01\\\\-0.234851\\\\130.9199\\\\295.01\\\\-0.6829615\\\\132.4199\\\\295.01\\\\-1.630643\\\\134.4199\\\\295.01\\\\-2.241431\\\\135.4199\\\\295.01\\\\-3.364212\\\\136.8065\\\\295.01\\\\-4.479952\\\\137.9199\\\\295.01\\\\-5.864212\\\\139.0335\\\\295.01\\\\-6.864212\\\\139.6417\\\\295.01\\\\-8.864211\\\\140.5979\\\\295.01\\\\-10.36421\\\\141.0637\\\\295.01\\\\-11.86421\\\\141.2292\\\\295.01\\\\-13.86421\\\\141.0486\\\\295.01\\\\-15.36421\\\\140.5495\\\\295.01\\\\-16.36421\\\\140.0745\\\\295.01\\\\-17.86421\\\\139.1365\\\\295.01\\\\-21.36421\\\\136.2233\\\\295.01\\\\-23.36421\\\\134.7404\\\\295.01\\\\-24.86421\\\\133.8202\\\\295.01\\\\-26.86421\\\\132.7895\\\\295.01\\\\-29.36421\\\\131.8086\\\\295.01\\\\-31.36421\\\\131.2283\\\\295.01\\\\-33.86421\\\\130.726\\\\295.01\\\\-35.86421\\\\130.5824\\\\295.01\\\\-37.86421\\\\130.5851\\\\295.01\\\\-39.86421\\\\130.732\\\\295.01\\\\-42.36421\\\\131.2641\\\\295.01\\\\-45.36421\\\\132.2405\\\\295.01\\\\-46.86421\\\\132.9028\\\\295.01\\\\-49.36421\\\\134.2029\\\\295.01\\\\-50.36421\\\\134.8394\\\\295.01\\\\-52.36421\\\\136.3216\\\\295.01\\\\-53.36421\\\\137.1936\\\\295.01\\\\-55.51793\\\\139.4199\\\\295.01\\\\-57.05593\\\\141.4199\\\\295.01\\\\-58.58438\\\\143.9199\\\\295.01\\\\-59.55771\\\\145.9199\\\\295.01\\\\-60.46825\\\\148.4199\\\\295.01\\\\-61.06986\\\\150.9199\\\\295.01\\\\-61.39546\\\\153.9199\\\\295.01\\\\-61.46327\\\\155.4199\\\\295.01\\\\-61.38126\\\\156.9199\\\\295.01\\\\-61.0591\\\\159.9199\\\\295.01\\\\-60.44754\\\\162.4199\\\\295.01\\\\-59.52451\\\\164.9199\\\\295.01\\\\-58.53138\\\\166.9199\\\\295.01\\\\-56.56637\\\\169.9199\\\\295.01\\\\-54.86625\\\\171.9199\\\\295.01\\\\-53.86421\\\\172.9499\\\\295.01\\\\-51.36421\\\\175.0986\\\\295.01\\\\-49.86421\\\\176.1393\\\\295.01\\\\-48.36421\\\\177.0304\\\\295.01\\\\-46.36421\\\\178.0032\\\\295.01\\\\-43.36421\\\\179.0823\\\\295.01\\\\-40.86421\\\\179.6404\\\\295.01\\\\-37.86421\\\\179.9579\\\\295.01\\\\-35.86421\\\\179.9677\\\\295.01\\\\-32.36421\\\\179.618\\\\295.01\\\\-29.86421\\\\179.0112\\\\295.01\\\\-27.36421\\\\178.0918\\\\295.01\\\\-25.36421\\\\177.1055\\\\295.01\\\\-22.86421\\\\175.5296\\\\295.01\\\\-19.86421\\\\173.325\\\\295.01\\\\-18.86421\\\\172.7049\\\\295.01\\\\-16.86421\\\\171.7768\\\\295.01\\\\-14.86421\\\\171.2971\\\\295.01\\\\-13.36421\\\\171.3134\\\\295.01\\\\-11.36421\\\\171.8039\\\\295.01\\\\-9.364211\\\\172.7201\\\\295.01\\\\-8.364211\\\\173.3311\\\\295.01\\\\-7.018403\\\\174.4199\\\\295.01\\\\-5.208806\\\\176.4199\\\\295.01\\\\-4.272865\\\\177.9199\\\\295.01\\\\-3.310016\\\\180.4199\\\\295.01\\\\-3.060024\\\\182.4199\\\\295.01\\\\-3.162389\\\\183.9199\\\\295.01\\\\-3.778172\\\\185.9199\\\\295.01\\\\-4.226866\\\\186.9199\\\\295.01\\\\-5.705407\\\\189.4199\\\\295.01\\\\-7.020076\\\\191.4199\\\\295.01\\\\-8.54745\\\\194.4199\\\\295.01\\\\-9.452921\\\\196.9199\\\\295.01\\\\-10.05642\\\\199.4199\\\\295.01\\\\-10.37757\\\\202.9199\\\\295.01\\\\-10.35085\\\\204.9199\\\\295.01\\\\-10.06341\\\\207.9199\\\\295.01\\\\-9.470693\\\\210.4199\\\\295.01\\\\-8.575538\\\\212.9199\\\\295.01\\\\-7.082783\\\\215.9199\\\\295.01\\\\-6.471828\\\\216.9199\\\\295.01\\\\-5.042096\\\\218.9199\\\\295.01\\\\-3.364212\\\\220.7911\\\\295.01\\\\-0.8642115\\\\223.0957\\\\295.01\\\\1.135789\\\\224.5215\\\\295.01\\\\3.135788\\\\225.6642\\\\295.01\\\\5.135788\\\\226.6284\\\\295.01\\\\7.635788\\\\227.5189\\\\295.01\\\\10.13579\\\\228.111\\\\295.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699848978606900001.507522632828\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"254\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"14\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-17.36421\\\\138.0734\\\\298.01\\\\-21.36421\\\\134.8208\\\\298.01\\\\-22.86421\\\\133.7527\\\\298.01\\\\-25.36421\\\\132.2841\\\\298.01\\\\-27.36421\\\\131.3688\\\\298.01\\\\-30.36421\\\\130.3311\\\\298.01\\\\-32.86421\\\\129.7536\\\\298.01\\\\-35.86421\\\\129.4102\\\\298.01\\\\-37.86421\\\\129.4179\\\\298.01\\\\-40.86421\\\\129.7645\\\\298.01\\\\-42.86421\\\\130.2402\\\\298.01\\\\-45.86421\\\\131.2459\\\\298.01\\\\-48.36421\\\\132.3956\\\\298.01\\\\-50.86421\\\\133.8477\\\\298.01\\\\-52.86421\\\\135.3082\\\\298.01\\\\-55.36421\\\\137.6335\\\\298.01\\\\-56.93636\\\\139.4199\\\\298.01\\\\-58.04616\\\\140.9199\\\\298.01\\\\-59.57426\\\\143.4199\\\\298.01\\\\-60.54849\\\\145.4199\\\\298.01\\\\-61.49141\\\\147.9199\\\\298.01\\\\-62.02512\\\\149.9199\\\\298.01\\\\-62.42456\\\\152.4199\\\\298.01\\\\-62.59074\\\\155.4199\\\\298.01\\\\-62.47311\\\\157.9199\\\\298.01\\\\-62.01004\\\\160.9199\\\\298.01\\\\-61.47311\\\\162.9199\\\\298.01\\\\-60.51775\\\\165.4199\\\\298.01\\\\-58.92757\\\\168.4199\\\\298.01\\\\-57.56282\\\\170.4199\\\\298.01\\\\-55.90886\\\\172.4199\\\\298.01\\\\-53.86421\\\\174.4545\\\\298.01\\\\-51.86421\\\\176.0956\\\\298.01\\\\-50.36421\\\\177.126\\\\298.01\\\\-48.86421\\\\178.0214\\\\298.01\\\\-46.86421\\\\179.0059\\\\298.01\\\\-43.86421\\\\180.1004\\\\298.01\\\\-41.86421\\\\180.6074\\\\298.01\\\\-39.36421\\\\181.0032\\\\298.01\\\\-36.86421\\\\181.1393\\\\298.01\\\\-34.86421\\\\181.0696\\\\298.01\\\\-31.36421\\\\180.5696\\\\298.01\\\\-29.36421\\\\180.0358\\\\298.01\\\\-26.86421\\\\179.0826\\\\298.01\\\\-24.86421\\\\178.0915\\\\298.01\\\\-22.36421\\\\176.5441\\\\298.01\\\\-19.86421\\\\174.7606\\\\298.01\\\\-17.36421\\\\173.3134\\\\298.01\\\\-15.86421\\\\172.7165\\\\298.01\\\\-14.36421\\\\172.3535\\\\298.01\\\\-12.86421\\\\172.2821\\\\298.01\\\\-10.86421\\\\172.8134\\\\298.01\\\\-9.864211\\\\173.2612\\\\298.01\\\\-8.364211\\\\174.2009\\\\298.01\\\\-6.864212\\\\175.5768\\\\298.01\\\\-5.747024\\\\176.9199\\\\298.01\\\\-4.668733\\\\178.9199\\\\298.01\\\\-4.188285\\\\180.4199\\\\298.01\\\\-4.035754\\\\181.9199\\\\298.01\\\\-4.183949\\\\183.4199\\\\298.01\\\\-4.643007\\\\184.9199\\\\298.01\\\\-5.294955\\\\186.4199\\\\298.01\\\\-6.132928\\\\187.9199\\\\298.01\\\\-8.012517\\\\190.9199\\\\298.01\\\\-9.077596\\\\192.9199\\\\298.01\\\\-9.952921\\\\194.9199\\\\298.01\\\\-10.47785\\\\196.4199\\\\298.01\\\\-11.01005\\\\198.4199\\\\298.01\\\\-11.45025\\\\201.4199\\\\298.01\\\\-11.55772\\\\203.9199\\\\298.01\\\\-11.46073\\\\205.9199\\\\298.01\\\\-11.01962\\\\208.9199\\\\298.01\\\\-10.49571\\\\210.9199\\\\298.01\\\\-9.571923\\\\213.4199\\\\298.01\\\\-8.606749\\\\215.4199\\\\298.01\\\\-7.463268\\\\217.4199\\\\298.01\\\\-6.421503\\\\218.9199\\\\298.01\\\\-5.364212\\\\220.2352\\\\298.01\\\\-3.29047\\\\222.4199\\\\298.01\\\\-0.8642115\\\\224.4741\\\\298.01\\\\1.635789\\\\226.1212\\\\298.01\\\\4.635788\\\\227.6221\\\\298.01\\\\7.135788\\\\228.5449\\\\298.01\\\\9.135789\\\\229.0657\\\\298.01\\\\12.13579\\\\229.4949\\\\298.01\\\\14.13579\\\\229.5963\\\\298.01\\\\16.13579\\\\229.5164\\\\298.01\\\\19.13579\\\\229.0929\\\\298.01\\\\21.13579\\\\228.5912\\\\298.01\\\\24.13579\\\\227.5032\\\\298.01\\\\26.13579\\\\226.5287\\\\298.01\\\\29.13579\\\\224.6157\\\\298.01\\\\31.13579\\\\222.9954\\\\298.01\\\\32.76643\\\\221.4199\\\\298.01\\\\33.67046\\\\220.4199\\\\298.01\\\\35.25476\\\\218.4199\\\\298.01\\\\36.84434\\\\215.9199\\\\298.01\\\\37.8587\\\\213.9199\\\\298.01\\\\38.85302\\\\211.4199\\\\298.01\\\\39.31954\\\\209.9199\\\\298.01\\\\39.80026\\\\207.9199\\\\298.01\\\\40.16704\\\\204.9199\\\\298.01\\\\40.16004\\\\202.4199\\\\298.01\\\\39.79305\\\\199.4199\\\\298.01\\\\39.31053\\\\197.4199\\\\298.01\\\\38.84\\\\195.9199\\\\298.01\\\\37.8401\\\\193.4199\\\\298.01\\\\36.82063\\\\191.4199\\\\298.01\\\\35.26744\\\\188.9199\\\\298.01\\\\33.94211\\\\186.9199\\\\298.01\\\\32.91801\\\\184.9199\\\\298.01\\\\32.53175\\\\183.9199\\\\298.01\\\\32.02689\\\\181.4199\\\\298.01\\\\32.4123\\\\179.4199\\\\298.01\\\\32.97419\\\\177.9199\\\\298.01\\\\33.5138\\\\176.9199\\\\298.01\\\\34.61511\\\\175.4199\\\\298.01\\\\35.63579\\\\174.3649\\\\298.01\\\\37.13579\\\\173.2065\\\\298.01\\\\39.13579\\\\172.2018\\\\298.01\\\\40.63579\\\\171.7608\\\\298.01\\\\42.63579\\\\171.7324\\\\298.01\\\\44.63579\\\\172.2536\\\\298.01\\\\47.63579\\\\173.7016\\\\298.01\\\\50.63579\\\\175.5381\\\\298.01\\\\52.63579\\\\176.5734\\\\298.01\\\\55.13579\\\\177.5946\\\\298.01\\\\56.63579\\\\178.0771\\\\298.01\\\\58.63579\\\\178.5676\\\\298.01\\\\61.63579\\\\178.9218\\\\298.01\\\\64.13579\\\\178.9405\\\\298.01\\\\67.13579\\\\178.5826\\\\298.01\\\\69.13579\\\\178.1077\\\\298.01\\\\72.13579\\\\177.1048\\\\298.01\\\\73.63579\\\\176.4441\\\\298.01\\\\76.13579\\\\175.128\\\\298.01\\\\77.13579\\\\174.5032\\\\298.01\\\\79.13579\\\\173.037\\\\298.01\\\\80.41171\\\\171.9199\\\\298.01\\\\82.80591\\\\169.4199\\\\298.01\\\\84.32225\\\\167.4199\\\\298.01\\\\85.84733\\\\164.9199\\\\298.01\\\\86.82425\\\\162.9199\\\\298.01\\\\87.76729\\\\160.4199\\\\298.01\\\\88.29848\\\\158.4199\\\\298.01\\\\88.69914\\\\155.9199\\\\298.01\\\\88.86338\\\\152.9199\\\\298.01\\\\88.73231\\\\150.4199\\\\298.01\\\\88.32969\\\\147.9199\\\\298.01\\\\87.82111\\\\145.9199\\\\298.01\\\\86.72449\\\\142.9199\\\\298.01\\\\85.73485\\\\140.9199\\\\298.01\\\\84.83606\\\\139.4199\\\\298.01\\\\83.80003\\\\137.9199\\\\298.01\\\\81.67046\\\\135.4199\\\\298.01\\\\80.63579\\\\134.4028\\\\298.01\\\\78.13579\\\\132.3134\\\\298.01\\\\76.63579\\\\131.2847\\\\298.01\\\\74.18953\\\\129.9199\\\\298.01\\\\71.63579\\\\128.778\\\\298.01\\\\70.13579\\\\128.2663\\\\298.01\\\\68.13579\\\\127.7468\\\\298.01\\\\65.63579\\\\127.3565\\\\298.01\\\\64.13579\\\\127.2386\\\\298.01\\\\60.63579\\\\127.3285\\\\298.01\\\\57.63579\\\\127.776\\\\298.01\\\\55.63579\\\\128.311\\\\298.01\\\\53.13579\\\\129.2608\\\\298.01\\\\51.13579\\\\130.2564\\\\298.01\\\\48.63579\\\\131.8259\\\\298.01\\\\46.63579\\\\133.3886\\\\298.01\\\\43.63579\\\\135.9802\\\\298.01\\\\42.13579\\\\137.0449\\\\298.01\\\\40.13579\\\\138.0715\\\\298.01\\\\38.63579\\\\138.5637\\\\298.01\\\\36.63579\\\\138.7519\\\\298.01\\\\35.13579\\\\138.5808\\\\298.01\\\\33.63579\\\\138.0696\\\\298.01\\\\31.63579\\\\136.9511\\\\298.01\\\\29.8448\\\\135.4199\\\\298.01\\\\28.96778\\\\134.4199\\\\298.01\\\\27.9767\\\\132.9199\\\\298.01\\\\27.488\\\\131.9199\\\\298.01\\\\26.98038\\\\130.4199\\\\298.01\\\\26.80886\\\\128.9199\\\\298.01\\\\26.93039\\\\127.4199\\\\298.01\\\\27.55797\\\\125.4199\\\\298.01\\\\28.02931\\\\124.4199\\\\298.01\\\\28.95004\\\\122.9199\\\\298.01\\\\30.51157\\\\120.9199\\\\298.01\\\\31.80976\\\\119.4199\\\\298.01\\\\33.31496\\\\117.4199\\\\298.01\\\\34.83657\\\\114.9199\\\\298.01\\\\35.81157\\\\112.9199\\\\298.01\\\\36.74942\\\\110.4199\\\\298.01\\\\37.28162\\\\108.4199\\\\298.01\\\\37.72183\\\\105.4199\\\\298.01\\\\37.8293\\\\102.9199\\\\298.01\\\\37.73231\\\\100.9199\\\\298.01\\\\37.29119\\\\97.91986\\\\298.01\\\\36.76729\\\\95.91986\\\\298.01\\\\35.8435\\\\93.41986\\\\298.01\\\\34.34129\\\\90.41986\\\\298.01\\\\32.69308\\\\87.91986\\\\298.01\\\\31.63579\\\\86.6045\\\\298.01\\\\30.08003\\\\84.91986\\\\298.01\\\\27.63579\\\\82.74211\\\\298.01\\\\25.63579\\\\81.32591\\\\298.01\\\\23.63579\\\\80.17981\\\\298.01\\\\21.63579\\\\79.2176\\\\298.01\\\\19.13579\\\\78.29486\\\\298.01\\\\17.13579\\\\77.77402\\\\298.01\\\\14.13579\\\\77.34486\\\\298.01\\\\12.13579\\\\77.24346\\\\298.01\\\\10.13579\\\\77.32334\\\\298.01\\\\7.135788\\\\77.74678\\\\298.01\\\\5.135788\\\\78.24847\\\\298.01\\\\2.135788\\\\79.33382\\\\298.01\\\\0.1357885\\\\80.31096\\\\298.01\\\\-2.864212\\\\82.22402\\\\298.01\\\\-4.864212\\\\83.84435\\\\298.01\\\\-6.494857\\\\85.41986\\\\298.01\\\\-7.398883\\\\86.41986\\\\298.01\\\\-8.986199\\\\88.41986\\\\298.01\\\\-10.57276\\\\90.91986\\\\298.01\\\\-11.58712\\\\92.91986\\\\298.01\\\\-12.58144\\\\95.41986\\\\298.01\\\\-13.04796\\\\96.91986\\\\298.01\\\\-13.52869\\\\98.91986\\\\298.01\\\\-13.89546\\\\101.9199\\\\298.01\\\\-13.88846\\\\104.4199\\\\298.01\\\\-13.52147\\\\107.4199\\\\298.01\\\\-13.03896\\\\109.4199\\\\298.01\\\\-12.56842\\\\110.9199\\\\298.01\\\\-11.56853\\\\113.4199\\\\298.01\\\\-10.54737\\\\115.4199\\\\298.01\\\\-8.942026\\\\117.9199\\\\298.01\\\\-6.441266\\\\120.9199\\\\298.01\\\\-4.864212\\\\122.5615\\\\298.01\\\\-3.257069\\\\124.4199\\\\298.01\\\\-2.292064\\\\125.9199\\\\298.01\\\\-1.797885\\\\126.9199\\\\298.01\\\\-1.141081\\\\128.9199\\\\298.01\\\\-0.9914045\\\\130.4199\\\\298.01\\\\-1.169235\\\\131.9199\\\\298.01\\\\-1.678251\\\\133.4199\\\\298.01\\\\-2.778172\\\\135.4199\\\\298.01\\\\-3.864212\\\\136.7395\\\\298.01\\\\-5.864212\\\\138.492\\\\298.01\\\\-7.864212\\\\139.5963\\\\298.01\\\\-9.364211\\\\140.1104\\\\298.01\\\\-11.36421\\\\140.3688\\\\298.01\\\\-13.36421\\\\140.0734\\\\298.01\\\\-14.86421\\\\139.5239\\\\298.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851016723500001.512636853846\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"246\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"15\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n";
-const char* k_rtStruct_json07 =
-"                        \"Value\" : \"41.63579\\\\136.0798\\\\301.01\\\\39.63579\\\\137.1339\\\\301.01\\\\38.13579\\\\137.6336\\\\301.01\\\\36.63579\\\\137.8285\\\\301.01\\\\35.13579\\\\137.6244\\\\301.01\\\\33.63579\\\\137.0851\\\\301.01\\\\32.63579\\\\136.5518\\\\301.01\\\\31.13579\\\\135.4333\\\\301.01\\\\30.12233\\\\134.4199\\\\301.01\\\\29.0038\\\\132.9199\\\\301.01\\\\28.47056\\\\131.9199\\\\301.01\\\\27.93124\\\\130.4199\\\\301.01\\\\27.72713\\\\128.9199\\\\301.01\\\\27.9259\\\\127.4199\\\\301.01\\\\28.43386\\\\125.9199\\\\301.01\\\\29.51482\\\\123.9199\\\\301.01\\\\31.77887\\\\120.9199\\\\301.01\\\\33.79488\\\\117.9199\\\\301.01\\\\35.27357\\\\115.4199\\\\301.01\\\\36.26941\\\\113.4199\\\\301.01\\\\37.23983\\\\110.9199\\\\301.01\\\\37.80718\\\\108.9199\\\\301.01\\\\38.26298\\\\106.4199\\\\301.01\\\\38.42556\\\\102.9199\\\\301.01\\\\38.32632\\\\100.4199\\\\301.01\\\\37.81704\\\\97.41986\\\\301.01\\\\37.26298\\\\95.41986\\\\301.01\\\\36.30376\\\\92.91986\\\\301.01\\\\35.31862\\\\90.91986\\\\301.01\\\\33.79669\\\\88.41986\\\\301.01\\\\32.69613\\\\86.91986\\\\301.01\\\\31.40617\\\\85.41986\\\\301.01\\\\30.13579\\\\84.11847\\\\301.01\\\\28.13579\\\\82.36256\\\\301.01\\\\26.63579\\\\81.26077\\\\301.01\\\\24.13579\\\\79.73861\\\\301.01\\\\22.13579\\\\78.75716\\\\301.01\\\\19.63579\\\\77.80389\\\\301.01\\\\17.63579\\\\77.24678\\\\301.01\\\\15.13579\\\\76.79932\\\\301.01\\\\12.13579\\\\76.64858\\\\301.01\\\\9.635789\\\\76.72783\\\\301.01\\\\6.635788\\\\77.21915\\\\301.01\\\\4.635788\\\\77.74511\\\\301.01\\\\3.135788\\\\78.25896\\\\301.01\\\\0.5678061\\\\79.41986\\\\301.01\\\\-1.864211\\\\80.78835\\\\301.01\\\\-3.364212\\\\81.83115\\\\301.01\\\\-4.710485\\\\82.91986\\\\301.01\\\\-6.864212\\\\84.94054\\\\301.01\\\\-9.004042\\\\87.41986\\\\301.01\\\\-11.00404\\\\90.41986\\\\301.01\\\\-12.04224\\\\92.41986\\\\301.01\\\\-13.0635\\\\94.91986\\\\301.01\\\\-13.55475\\\\96.41986\\\\301.01\\\\-14.05919\\\\98.41986\\\\301.01\\\\-14.46577\\\\100.9199\\\\301.01\\\\-14.56064\\\\103.9199\\\\301.01\\\\-14.45556\\\\105.4199\\\\301.01\\\\-14.05171\\\\107.9199\\\\301.01\\\\-13.54386\\\\109.9199\\\\301.01\\\\-12.47311\\\\112.9199\\\\301.01\\\\-11.52147\\\\114.9199\\\\301.01\\\\-10.0356\\\\117.4199\\\\301.01\\\\-7.977848\\\\120.4199\\\\301.01\\\\-6.493406\\\\122.4199\\\\301.01\\\\-4.729596\\\\124.4199\\\\301.01\\\\-3.644515\\\\125.9199\\\\301.01\\\\-2.642783\\\\127.9199\\\\301.01\\\\-2.184044\\\\129.4199\\\\301.01\\\\-2.190483\\\\131.4199\\\\301.01\\\\-2.659926\\\\132.9199\\\\301.01\\\\-3.746865\\\\134.9199\\\\301.01\\\\-4.864212\\\\136.2112\\\\301.01\\\\-5.864212\\\\137.1478\\\\301.01\\\\-7.364212\\\\138.139\\\\301.01\\\\-8.364211\\\\138.6184\\\\301.01\\\\-9.864211\\\\139.0841\\\\301.01\\\\-10.86421\\\\139.1837\\\\301.01\\\\-12.36421\\\\139.0851\\\\301.01\\\\-13.86421\\\\138.6368\\\\301.01\\\\-15.36421\\\\137.9369\\\\301.01\\\\-16.86421\\\\137.0216\\\\301.01\\\\-19.36421\\\\135.1894\\\\301.01\\\\-22.36421\\\\133.2626\\\\301.01\\\\-25.86421\\\\131.3565\\\\301.01\\\\-28.36421\\\\130.3086\\\\301.01\\\\-29.86421\\\\129.8259\\\\301.01\\\\-32.36421\\\\129.2191\\\\301.01\\\\-34.86421\\\\128.8338\\\\301.01\\\\-37.86421\\\\128.7519\\\\301.01\\\\-41.36421\\\\129.2324\\\\301.01\\\\-43.36421\\\\129.7339\\\\301.01\\\\-46.36421\\\\130.7721\\\\301.01\\\\-49.36421\\\\132.2284\\\\301.01\\\\-51.86421\\\\133.7884\\\\301.01\\\\-53.86421\\\\135.3506\\\\301.01\\\\-56.47069\\\\137.9199\\\\301.01\\\\-58.44481\\\\140.4199\\\\301.01\\\\-60.00607\\\\142.9199\\\\301.01\\\\-61.00807\\\\144.9199\\\\301.01\\\\-61.98475\\\\147.4199\\\\301.01\\\\-62.55171\\\\149.4199\\\\301.01\\\\-62.94481\\\\151.4199\\\\301.01\\\\-63.10673\\\\152.9199\\\\301.01\\\\-63.19798\\\\155.4199\\\\301.01\\\\-63.00807\\\\158.9199\\\\301.01\\\\-62.53729\\\\161.4199\\\\301.01\\\\-61.96073\\\\163.4199\\\\301.01\\\\-60.97069\\\\165.9199\\\\301.01\\\\-60.48248\\\\166.9199\\\\301.01\\\\-59.01394\\\\169.4199\\\\301.01\\\\-57.95292\\\\170.9199\\\\301.01\\\\-56.86421\\\\172.2435\\\\301.01\\\\-55.29496\\\\173.9199\\\\301.01\\\\-53.67131\\\\175.4199\\\\301.01\\\\-52.36421\\\\176.4802\\\\301.01\\\\-49.86421\\\\178.1377\\\\301.01\\\\-47.36421\\\\179.4369\\\\301.01\\\\-45.86421\\\\180.0861\\\\301.01\\\\-42.86421\\\\181.0311\\\\301.01\\\\-40.36421\\\\181.5311\\\\301.01\\\\-36.86421\\\\181.7386\\\\301.01\\\\-33.36421\\\\181.5637\\\\301.01\\\\-30.86421\\\\181.0963\\\\301.01\\\\-28.86421\\\\180.5239\\\\301.01\\\\-26.36421\\\\179.5404\\\\301.01\\\\-24.36421\\\\178.5404\\\\301.01\\\\-20.36421\\\\176.3956\\\\301.01\\\\-17.86421\\\\175.2373\\\\301.01\\\\-14.86421\\\\174.2269\\\\301.01\\\\-13.36421\\\\174.0709\\\\301.01\\\\-11.86421\\\\174.2958\\\\301.01\\\\-9.864211\\\\175.2389\\\\301.01\\\\-8.441711\\\\176.4199\\\\301.01\\\\-7.16156\\\\177.9199\\\\301.01\\\\-6.177148\\\\179.9199\\\\301.01\\\\-5.842727\\\\181.4199\\\\301.01\\\\-5.813838\\\\182.4199\\\\301.01\\\\-6.169591\\\\184.4199\\\\301.01\\\\-7.196132\\\\187.4199\\\\301.01\\\\-8.770263\\\\190.9199\\\\301.01\\\\-10.00404\\\\193.4199\\\\301.01\\\\-10.97069\\\\195.9199\\\\301.01\\\\-11.5356\\\\197.9199\\\\301.01\\\\-12.04705\\\\200.9199\\\\301.01\\\\-12.15398\\\\203.9199\\\\301.01\\\\-12.05475\\\\206.4199\\\\301.01\\\\-11.54546\\\\209.4199\\\\301.01\\\\-10.9914\\\\211.4199\\\\301.01\\\\-10.03218\\\\213.9199\\\\301.01\\\\-9.047048\\\\215.9199\\\\301.01\\\\-7.525116\\\\218.4199\\\\301.01\\\\-6.424556\\\\219.9199\\\\301.01\\\\-5.133131\\\\221.4199\\\\301.01\\\\-3.864212\\\\222.7213\\\\301.01\\\\-1.864211\\\\224.4771\\\\301.01\\\\-0.3642115\\\\225.5771\\\\301.01\\\\2.135788\\\\227.0995\\\\301.01\\\\4.135788\\\\228.0826\\\\301.01\\\\6.635788\\\\229.0358\\\\301.01\\\\8.635789\\\\229.5929\\\\301.01\\\\11.13579\\\\230.0381\\\\301.01\\\\14.13579\\\\230.1911\\\\301.01\\\\16.63579\\\\230.1119\\\\301.01\\\\19.63579\\\\229.6206\\\\301.01\\\\21.63579\\\\229.0929\\\\301.01\\\\23.13579\\\\228.5808\\\\301.01\\\\25.70377\\\\227.4199\\\\301.01\\\\28.13579\\\\226.0514\\\\301.01\\\\29.63579\\\\225.0086\\\\301.01\\\\30.98206\\\\223.9199\\\\301.01\\\\33.13579\\\\221.8956\\\\301.01\\\\35.27562\\\\219.4199\\\\301.01\\\\37.27562\\\\216.4199\\\\301.01\\\\38.31382\\\\214.4199\\\\301.01\\\\39.33508\\\\211.9199\\\\301.01\\\\39.82632\\\\210.4199\\\\301.01\\\\40.33076\\\\208.4199\\\\301.01\\\\40.73735\\\\205.9199\\\\301.01\\\\40.83222\\\\202.9199\\\\301.01\\\\40.72713\\\\201.4199\\\\301.01\\\\40.32329\\\\198.9199\\\\301.01\\\\39.81544\\\\196.9199\\\\301.01\\\\39.32329\\\\195.4199\\\\301.01\\\\38.29488\\\\192.9199\\\\301.01\\\\35.95219\\\\188.4199\\\\301.01\\\\34.43608\\\\184.9199\\\\301.01\\\\33.9686\\\\183.4199\\\\301.01\\\\33.73262\\\\181.4199\\\\301.01\\\\33.94788\\\\179.9199\\\\301.01\\\\34.52448\\\\178.4199\\\\301.01\\\\35.44645\\\\176.9199\\\\301.01\\\\36.36579\\\\175.9199\\\\301.01\\\\37.63579\\\\174.8116\\\\301.01\\\\39.63579\\\\173.747\\\\301.01\\\\41.13579\\\\173.3669\\\\301.01\\\\42.13579\\\\173.3279\\\\301.01\\\\44.13579\\\\173.7036\\\\301.01\\\\46.13579\\\\174.3009\\\\301.01\\\\48.63579\\\\175.2884\\\\301.01\\\\51.13579\\\\176.5471\\\\301.01\\\\54.63579\\\\178.0789\\\\301.01\\\\56.13579\\\\178.5789\\\\301.01\\\\58.13579\\\\179.0963\\\\301.01\\\\60.63579\\\\179.4977\\\\301.01\\\\62.13579\\\\179.6058\\\\301.01\\\\65.13579\\\\179.5138\\\\301.01\\\\67.63579\\\\179.1134\\\\301.01\\\\69.63579\\\\178.6148\\\\301.01\\\\72.63579\\\\177.5771\\\\301.01\\\\75.63579\\\\176.1191\\\\301.01\\\\78.13579\\\\174.5576\\\\301.01\\\\80.13579\\\\172.992\\\\301.01\\\\81.80482\\\\171.4199\\\\301.01\\\\83.17384\\\\169.9199\\\\301.01\\\\84.72182\\\\167.9199\\\\301.01\\\\86.27964\\\\165.4199\\\\301.01\\\\87.28358\\\\163.4199\\\\301.01\\\\88.26079\\\\160.9199\\\\301.01\\\\88.82632\\\\158.9199\\\\301.01\\\\89.22182\\\\156.9199\\\\301.01\\\\89.3794\\\\155.4199\\\\301.01\\\\89.46956\\\\152.9199\\\\301.01\\\\89.26079\\\\149.4199\\\\301.01\\\\88.75857\\\\146.9199\\\\301.01\\\\87.80548\\\\143.9199\\\\301.01\\\\87.16004\\\\142.4199\\\\301.01\\\\85.85093\\\\139.9199\\\\301.01\\\\84.18044\\\\137.4199\\\\301.01\\\\82.63579\\\\135.578\\\\301.01\\\\80.45245\\\\133.4199\\\\301.01\\\\79.13579\\\\132.3039\\\\301.01\\\\76.13579\\\\130.259\\\\301.01\\\\73.13579\\\\128.7278\\\\301.01\\\\70.63579\\\\127.7663\\\\301.01\\\\68.63579\\\\127.2192\\\\301.01\\\\66.63579\\\\126.8285\\\\301.01\\\\63.13579\\\\126.6148\\\\301.01\\\\59.63579\\\\126.7884\\\\301.01\\\\57.13579\\\\127.2502\\\\301.01\\\\55.13579\\\\127.8208\\\\301.01\\\\52.63579\\\\128.8062\\\\301.01\\\\51.63579\\\\129.2905\\\\301.01\\\\49.13579\\\\130.7368\\\\301.01\\\\46.13579\\\\132.7185\\\\301.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851035724600001.533642609670\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"234\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"16\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-7.002701\\\\124.9199\\\\304.01\\\\-5.332349\\\\127.4199\\\\304.01\\\\-4.657244\\\\128.9199\\\\304.01\\\\-4.339658\\\\130.4199\\\\304.01\\\\-4.672063\\\\131.9199\\\\304.01\\\\-5.731034\\\\133.9199\\\\304.01\\\\-7.364212\\\\135.553\\\\304.01\\\\-9.364211\\\\136.612\\\\304.01\\\\-10.86421\\\\136.9399\\\\304.01\\\\-12.86421\\\\136.6037\\\\304.01\\\\-14.36421\\\\135.9559\\\\304.01\\\\-16.36421\\\\134.8809\\\\304.01\\\\-19.36421\\\\134.0734\\\\304.01\\\\-20.86421\\\\133.5753\\\\304.01\\\\-23.36421\\\\132.4405\\\\304.01\\\\-26.86421\\\\130.722\\\\304.01\\\\-29.36421\\\\129.7841\\\\304.01\\\\-31.36421\\\\129.2435\\\\304.01\\\\-33.86421\\\\128.7862\\\\304.01\\\\-36.86421\\\\128.6288\\\\304.01\\\\-39.86421\\\\128.8016\\\\304.01\\\\-42.36421\\\\129.274\\\\304.01\\\\-44.36421\\\\129.8477\\\\304.01\\\\-46.86421\\\\130.78\\\\304.01\\\\-48.86421\\\\131.7485\\\\304.01\\\\-51.36421\\\\133.2519\\\\304.01\\\\-52.86421\\\\134.3259\\\\304.01\\\\-54.71862\\\\135.9199\\\\304.01\\\\-56.66553\\\\137.9199\\\\304.01\\\\-57.90558\\\\139.4199\\\\304.01\\\\-58.98475\\\\140.9199\\\\304.01\\\\-59.89888\\\\142.4199\\\\304.01\\\\-60.96327\\\\144.4199\\\\304.01\\\\-62.00404\\\\146.9199\\\\304.01\\\\-62.49141\\\\148.4199\\\\304.01\\\\-62.99141\\\\150.4199\\\\304.01\\\\-63.42456\\\\153.4199\\\\304.01\\\\-63.54705\\\\155.4199\\\\304.01\\\\-63.39888\\\\157.4199\\\\304.01\\\\-63.05474\\\\159.9199\\\\304.01\\\\-62.44481\\\\162.4199\\\\304.01\\\\-61.95556\\\\163.9199\\\\304.01\\\\-60.87383\\\\166.4199\\\\304.01\\\\-59.51394\\\\168.9199\\\\304.01\\\\-58.50607\\\\170.4199\\\\304.01\\\\-56.92757\\\\172.4199\\\\304.01\\\\-55.52116\\\\173.9199\\\\304.01\\\\-53.86421\\\\175.4709\\\\304.01\\\\-51.86421\\\\177.0449\\\\304.01\\\\-49.36421\\\\178.6177\\\\304.01\\\\-46.36421\\\\180.0843\\\\304.01\\\\-43.36421\\\\181.1058\\\\304.01\\\\-41.36421\\\\181.5843\\\\304.01\\\\-38.36421\\\\181.9891\\\\304.01\\\\-35.86421\\\\182.0426\\\\304.01\\\\-32.36421\\\\181.6119\\\\304.01\\\\-29.86421\\\\181.0164\\\\304.01\\\\-28.36421\\\\180.5311\\\\304.01\\\\-25.86421\\\\179.4802\\\\304.01\\\\-23.36421\\\\178.2136\\\\304.01\\\\-21.36421\\\\177.3016\\\\304.01\\\\-19.86421\\\\176.7993\\\\304.01\\\\-17.36421\\\\176.4579\\\\304.01\\\\-15.36421\\\\176.7158\\\\304.01\\\\-13.36421\\\\177.2203\\\\304.01\\\\-11.36421\\\\178.2083\\\\304.01\\\\-9.70184\\\\179.9199\\\\304.01\\\\-8.743179\\\\181.9199\\\\304.01\\\\-8.174695\\\\183.9199\\\\304.01\\\\-7.905579\\\\185.9199\\\\304.01\\\\-8.208806\\\\188.4199\\\\304.01\\\\-9.245948\\\\191.4199\\\\304.01\\\\-9.968248\\\\192.9199\\\\304.01\\\\-10.97069\\\\195.4199\\\\304.01\\\\-11.4448\\\\196.9199\\\\304.01\\\\-12.03729\\\\199.4199\\\\304.01\\\\-12.38126\\\\202.4199\\\\304.01\\\\-12.46825\\\\203.9199\\\\304.01\\\\-12.05171\\\\207.9199\\\\304.01\\\\-11.47785\\\\210.4199\\\\304.01\\\\-10.41841\\\\213.4199\\\\304.01\\\\-9.501996\\\\215.4199\\\\304.01\\\\-8.038957\\\\217.9199\\\\304.01\\\\-6.995714\\\\219.4199\\\\304.01\\\\-5.364212\\\\221.372\\\\304.01\\\\-4.364212\\\\222.4369\\\\304.01\\\\-2.749882\\\\223.9199\\\\304.01\\\\-1.364211\\\\225.0471\\\\304.01\\\\0.1357885\\\\226.0878\\\\304.01\\\\2.635788\\\\227.5471\\\\304.01\\\\3.635788\\\\228.0311\\\\304.01\\\\6.135788\\\\229.0404\\\\304.01\\\\7.635788\\\\229.5059\\\\304.01\\\\10.13579\\\\230.0826\\\\304.01\\\\13.63579\\\\230.4369\\\\304.01\\\\15.13579\\\\230.4102\\\\304.01\\\\18.13579\\\\230.1177\\\\304.01\\\\20.63579\\\\229.5789\\\\304.01\\\\23.63579\\\\228.5771\\\\304.01\\\\25.63579\\\\227.6478\\\\304.01\\\\27.63579\\\\226.5696\\\\304.01\\\\29.13579\\\\225.5808\\\\304.01\\\\30.63579\\\\224.4476\\\\304.01\\\\32.13579\\\\223.1389\\\\304.01\\\\34.72183\\\\220.4199\\\\304.01\\\\36.23735\\\\218.4199\\\\304.01\\\\37.77357\\\\215.9199\\\\304.01\\\\38.76079\\\\213.9199\\\\304.01\\\\39.71638\\\\211.4199\\\\304.01\\\\40.29669\\\\209.4199\\\\304.01\\\\40.83928\\\\206.4199\\\\304.01\\\\40.95776\\\\203.9199\\\\304.01\\\\40.76941\\\\200.4199\\\\304.01\\\\40.27357\\\\197.9199\\\\304.01\\\\39.32481\\\\194.9199\\\\304.01\\\\38.71079\\\\193.4199\\\\304.01\\\\37.00217\\\\189.9199\\\\304.01\\\\35.97488\\\\186.9199\\\\304.01\\\\35.81218\\\\184.9199\\\\304.01\\\\36.02215\\\\182.9199\\\\304.01\\\\36.53948\\\\180.9199\\\\304.01\\\\36.95037\\\\179.9199\\\\304.01\\\\37.94024\\\\178.4199\\\\304.01\\\\39.13579\\\\177.2874\\\\304.01\\\\40.13579\\\\176.6719\\\\304.01\\\\42.13579\\\\175.8343\\\\304.01\\\\44.13579\\\\175.2645\\\\304.01\\\\45.63579\\\\175.1192\\\\304.01\\\\47.13579\\\\175.259\\\\304.01\\\\49.13579\\\\175.872\\\\304.01\\\\54.13579\\\\178.0657\\\\304.01\\\\57.13579\\\\179.0164\\\\304.01\\\\59.63579\\\\179.5214\\\\304.01\\\\63.13579\\\\179.7263\\\\304.01\\\\66.13579\\\\179.5597\\\\304.01\\\\68.63579\\\\179.0826\\\\304.01\\\\70.63579\\\\178.5164\\\\304.01\\\\73.13579\\\\177.5753\\\\304.01\\\\75.13579\\\\176.6043\\\\304.01\\\\77.63579\\\\175.0995\\\\304.01\\\\79.13579\\\\174.0263\\\\304.01\\\\81.00275\\\\172.4199\\\\304.01\\\\82.94763\\\\170.4199\\\\304.01\\\\84.19308\\\\168.9199\\\\304.01\\\\85.26515\\\\167.4199\\\\304.01\\\\86.74468\\\\164.9199\\\\304.01\\\\87.67715\\\\162.9199\\\\304.01\\\\88.76941\\\\159.9199\\\\304.01\\\\89.26729\\\\157.9199\\\\304.01\\\\89.69914\\\\154.9199\\\\304.01\\\\89.77764\\\\151.9199\\\\304.01\\\\89.31544\\\\148.4199\\\\304.01\\\\88.83076\\\\146.4199\\\\304.01\\\\88.18044\\\\144.4199\\\\304.01\\\\87.34991\\\\142.4199\\\\304.01\\\\86.33366\\\\140.4199\\\\304.01\\\\84.75405\\\\137.9199\\\\304.01\\\\83.16004\\\\135.9199\\\\304.01\\\\80.63579\\\\133.3449\\\\304.01\\\\78.13579\\\\131.3449\\\\304.01\\\\75.63579\\\\129.7572\\\\304.01\\\\73.63579\\\\128.7402\\\\304.01\\\\71.13579\\\\127.7324\\\\304.01\\\\69.63579\\\\127.2572\\\\304.01\\\\67.63579\\\\126.778\\\\304.01\\\\64.13579\\\\126.3338\\\\304.01\\\\61.63579\\\\126.3752\\\\304.01\\\\58.63579\\\\126.7435\\\\304.01\\\\56.13579\\\\127.3449\\\\304.01\\\\53.63579\\\\128.2206\\\\304.01\\\\51.13579\\\\129.3886\\\\304.01\\\\48.13579\\\\131.1148\\\\304.01\\\\45.13579\\\\132.5771\\\\304.01\\\\42.63579\\\\133.274\\\\304.01\\\\41.63579\\\\133.6847\\\\304.01\\\\40.13579\\\\134.6251\\\\304.01\\\\38.13579\\\\135.5657\\\\304.01\\\\36.63579\\\\135.7968\\\\304.01\\\\35.13579\\\\135.5526\\\\304.01\\\\33.13579\\\\134.5317\\\\304.01\\\\32.13579\\\\133.6744\\\\304.01\\\\31.02395\\\\132.4199\\\\304.01\\\\30.0031\\\\130.4199\\\\304.01\\\\29.75883\\\\128.9199\\\\304.01\\\\29.99374\\\\127.4199\\\\304.01\\\\30.93457\\\\125.4199\\\\304.01\\\\31.87468\\\\123.9199\\\\304.01\\\\32.28358\\\\122.9199\\\\304.01\\\\32.97309\\\\120.4199\\\\304.01\\\\34.10454\\\\117.9199\\\\304.01\\\\36.20794\\\\113.9199\\\\304.01\\\\37.24227\\\\111.4199\\\\304.01\\\\37.71638\\\\109.9199\\\\304.01\\\\38.30886\\\\107.4199\\\\304.01\\\\38.70211\\\\103.9199\\\\304.01\\\\38.67046\\\\101.9199\\\\304.01\\\\38.32329\\\\98.91986\\\\304.01\\\\37.74942\\\\96.41986\\\\304.01\\\\36.68998\\\\93.41986\\\\304.01\\\\35.77357\\\\91.41986\\\\304.01\\\\34.31053\\\\88.91986\\\\304.01\\\\33.26729\\\\87.41986\\\\304.01\\\\32.13579\\\\86.02943\\\\304.01\\\\30.13383\\\\83.91986\\\\304.01\\\\27.63579\\\\81.79266\\\\304.01\\\\26.13579\\\\80.75189\\\\304.01\\\\23.63579\\\\79.29266\\\\304.01\\\\20.13579\\\\77.79707\\\\304.01\\\\18.63579\\\\77.33382\\\\304.01\\\\16.13579\\\\76.75716\\\\304.01\\\\12.63579\\\\76.39918\\\\304.01\\\\11.13579\\\\76.42567\\\\304.01\\\\8.135789\\\\76.72199\\\\304.01\\\\5.635788\\\\77.25896\\\\304.01\\\\2.635788\\\\78.2626\\\\304.01\\\\0.6357885\\\\79.19189\\\\304.01\\\\-1.364211\\\\80.27013\\\\304.01\\\\-2.864212\\\\81.25896\\\\304.01\\\\-4.364212\\\\82.39208\\\\304.01\\\\-6.864212\\\\84.67407\\\\304.01\\\\-8.452921\\\\86.41986\\\\304.01\\\\-9.968248\\\\88.41986\\\\304.01\\\\-11.50404\\\\90.91986\\\\304.01\\\\-12.48921\\\\92.91986\\\\304.01\\\\-13.4448\\\\95.41986\\\\304.01\\\\-14.02512\\\\97.41986\\\\304.01\\\\-14.56907\\\\100.4199\\\\304.01\\\\-14.68618\\\\102.9199\\\\304.01\\\\-14.49783\\\\106.4199\\\\304.01\\\\-14.002\\\\108.9199\\\\304.01\\\\-13.05324\\\\111.9199\\\\304.01\\\\-11.97069\\\\114.4199\\\\304.01\\\\-8.813155\\\\119.9199\\\\304.01\\\\-7.750575\\\\122.4199\\\\304.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851068726500001.546012551665\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"248\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"17\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"14.13579\\\\230.4862\\\\307.01\\\\18.13579\\\\230.1234\\\\307.01\\\\20.63579\\\\229.5843\\\\307.01\\\\23.63579\\\\228.5826\\\\307.01\\\\25.63579\\\\227.6544\\\\307.01\\\\27.63579\\\\226.5734\\\\307.01\\\\29.13579\\\\225.5843\\\\307.01\\\\30.63579\\\\224.4545\\\\307.01\\\\32.13579\\\\223.1497\\\\307.01\\\\34.73231\\\\220.4199\\\\307.01\\\\36.24707\\\\218.4199\\\\307.01\\\\37.78162\\\\215.9199\\\\307.01\\\\38.76729\\\\213.9199\\\\307.01\\\\39.7245\\\\211.4199\\\\307.01\\\\40.30202\\\\209.4199\\\\307.01\\\\40.84336\\\\206.4199\\\\307.01\\\\40.96271\\\\203.9199\\\\307.01\\\\40.77357\\\\200.4199\\\\307.01\\\\40.27764\\\\197.9199\\\\307.01\\\\39.3293\\\\194.9199\\\\307.01\\\\38.71912\\\\193.4199\\\\307.01\\\\37.00643\\\\189.9199\\\\307.01\\\\36.42688\\\\188.4199\\\\307.01\\\\35.98225\\\\186.9199\\\\307.01\\\\35.84065\\\\184.9199\\\\307.01\\\\36.01079\\\\183.4199\\\\307.01\\\\36.51752\\\\181.9199\\\\307.01\\\\37.00217\\\\180.9199\\\\307.01\\\\37.99393\\\\179.4199\\\\307.01\\\\39.13579\\\\178.1658\\\\307.01\\\\40.13579\\\\177.278\\\\307.01\\\\41.63579\\\\176.2862\\\\307.01\\\\42.63579\\\\175.8016\\\\307.01\\\\44.13579\\\\175.2949\\\\307.01\\\\45.63579\\\\175.1247\\\\307.01\\\\47.13579\\\\175.2645\\\\307.01\\\\48.63579\\\\175.7045\\\\307.01\\\\54.13579\\\\178.0715\\\\307.01\\\\57.13579\\\\179.0214\\\\307.01\\\\59.63579\\\\179.5239\\\\307.01\\\\63.13579\\\\179.7308\\\\307.01\\\\65.63579\\\\179.6192\\\\307.01\\\\68.63579\\\\179.0896\\\\307.01\\\\70.63579\\\\178.5263\\\\307.01\\\\72.13579\\\\177.9862\\\\307.01\\\\74.13579\\\\177.1148\\\\307.01\\\\76.13579\\\\176.0637\\\\307.01\\\\79.13579\\\\174.0311\\\\307.01\\\\81.0086\\\\172.4199\\\\307.01\\\\82.9529\\\\170.4199\\\\307.01\\\\84.19914\\\\168.9199\\\\307.01\\\\85.26941\\\\167.4199\\\\307.01\\\\86.75175\\\\164.9199\\\\307.01\\\\87.68684\\\\162.9199\\\\307.01\\\\88.77357\\\\159.9199\\\\307.01\\\\89.27562\\\\157.9199\\\\307.01\\\\89.71638\\\\154.9199\\\\307.01\\\\89.82782\\\\152.9199\\\\307.01\\\\89.68684\\\\150.9199\\\\307.01\\\\89.32175\\\\148.4199\\\\307.01\\\\88.83649\\\\146.4199\\\\307.01\\\\88.18999\\\\144.4199\\\\307.01\\\\87.35246\\\\142.4199\\\\307.01\\\\86.33649\\\\140.4199\\\\307.01\\\\84.75857\\\\137.9199\\\\307.01\\\\83.16704\\\\135.9199\\\\307.01\\\\80.63579\\\\133.3393\\\\307.01\\\\79.13579\\\\132.1011\\\\307.01\\\\76.63579\\\\130.3393\\\\307.01\\\\73.63579\\\\128.7339\\\\307.01\\\\71.13579\\\\127.7278\\\\307.01\\\\69.63579\\\\127.2502\\\\307.01\\\\67.63579\\\\126.7701\\\\307.01\\\\64.63579\\\\126.372\\\\307.01\\\\63.13579\\\\126.2701\\\\307.01\\\\61.63579\\\\126.3565\\\\307.01\\\\58.63579\\\\126.7386\\\\307.01\\\\56.13579\\\\127.3393\\\\307.01\\\\54.63579\\\\127.8233\\\\307.01\\\\52.13579\\\\128.8818\\\\307.01\\\\46.13579\\\\132.1365\\\\307.01\\\\45.13579\\\\132.5696\\\\307.01\\\\43.13579\\\\133.1104\\\\307.01\\\\41.13579\\\\133.1027\\\\307.01\\\\39.13579\\\\132.5188\\\\307.01\\\\38.63579\\\\132.4971\\\\307.01\\\\37.13579\\\\134.4706\\\\307.01\\\\35.63579\\\\135.5464\\\\307.01\\\\34.13579\\\\136.0158\\\\307.01\\\\32.63579\\\\135.5587\\\\307.01\\\\31.13579\\\\134.5006\\\\307.01\\\\30.00924\\\\132.9199\\\\307.01\\\\29.57402\\\\131.4199\\\\307.01\\\\30.02434\\\\129.9199\\\\307.01\\\\31.13579\\\\128.4078\\\\307.01\\\\33.07329\\\\126.9199\\\\307.01\\\\33.03827\\\\126.4199\\\\307.01\\\\32.45295\\\\124.4199\\\\307.01\\\\32.44526\\\\122.4199\\\\307.01\\\\32.98225\\\\120.4199\\\\307.01\\\\34.13579\\\\117.8923\\\\307.01\\\\36.2136\\\\113.9199\\\\307.01\\\\37.24707\\\\111.4199\\\\307.01\\\\37.72183\\\\109.9199\\\\307.01\\\\38.31382\\\\107.4199\\\\307.01\\\\38.67046\\\\104.4199\\\\307.01\\\\38.75405\\\\102.9199\\\\307.01\\\\38.3293\\\\98.91986\\\\307.01\\\\37.75405\\\\96.41986\\\\307.01\\\\36.69613\\\\93.41986\\\\307.01\\\\35.77964\\\\91.41986\\\\307.01\\\\34.31382\\\\88.91986\\\\307.01\\\\33.2715\\\\87.41986\\\\307.01\\\\32.13579\\\\86.02634\\\\307.01\\\\30.13579\\\\83.91791\\\\307.01\\\\27.63579\\\\81.7905\\\\307.01\\\\26.13579\\\\80.74847\\\\307.01\\\\23.63579\\\\79.28835\\\\307.01\\\\20.13579\\\\77.79486\\\\307.01\\\\18.63579\\\\77.32851\\\\307.01\\\\16.13579\\\\76.75017\\\\307.01\\\\12.13579\\\\76.35353\\\\307.01\\\\8.135789\\\\76.71637\\\\307.01\\\\5.635788\\\\77.25362\\\\307.01\\\\2.635788\\\\78.25716\\\\307.01\\\\0.6357885\\\\79.18528\\\\307.01\\\\-1.364211\\\\80.26633\\\\307.01\\\\-2.864212\\\\81.25539\\\\307.01\\\\-4.364212\\\\82.38519\\\\307.01\\\\-5.864212\\\\83.69002\\\\307.01\\\\-8.460731\\\\86.41986\\\\307.01\\\\-9.975492\\\\88.41986\\\\307.01\\\\-11.51005\\\\90.91986\\\\307.01\\\\-12.49571\\\\92.91986\\\\307.01\\\\-13.45292\\\\95.41986\\\\307.01\\\\-14.03044\\\\97.41986\\\\307.01\\\\-14.57178\\\\100.4199\\\\307.01\\\\-14.69113\\\\102.9199\\\\307.01\\\\-14.502\\\\106.4199\\\\307.01\\\\-14.00607\\\\108.9199\\\\307.01\\\\-13.05772\\\\111.9199\\\\307.01\\\\-11.97785\\\\114.4199\\\\307.01\\\\-8.843534\\\\119.9199\\\\307.01\\\\-8.178251\\\\121.4199\\\\307.01\\\\-7.722358\\\\122.9199\\\\307.01\\\\-7.57178\\\\124.4199\\\\307.01\\\\-7.64881\\\\125.4199\\\\307.01\\\\-7.944804\\\\126.4199\\\\307.01\\\\-7.864212\\\\127.2299\\\\307.01\\\\-5.864212\\\\128.2935\\\\307.01\\\\-4.207962\\\\129.9199\\\\307.01\\\\-3.203497\\\\131.9199\\\\307.01\\\\-3.045334\\\\132.9199\\\\307.01\\\\-3.208599\\\\133.9199\\\\307.01\\\\-4.270838\\\\135.9199\\\\307.01\\\\-5.364212\\\\137.0193\\\\307.01\\\\-7.364212\\\\138.0806\\\\307.01\\\\-8.364211\\\\138.2472\\\\307.01\\\\-9.364211\\\\138.0891\\\\307.01\\\\-11.36421\\\\137.0818\\\\307.01\\\\-12.99477\\\\135.4199\\\\307.01\\\\-13.86421\\\\133.7608\\\\307.01\\\\-14.36421\\\\133.5952\\\\307.01\\\\-15.86421\\\\134.0404\\\\307.01\\\\-17.36421\\\\134.2123\\\\307.01\\\\-18.86421\\\\134.0696\\\\307.01\\\\-21.86421\\\\133.1043\\\\307.01\\\\-26.86421\\\\130.7191\\\\307.01\\\\-29.36421\\\\129.78\\\\307.01\\\\-31.36421\\\\129.2402\\\\307.01\\\\-34.36421\\\\128.7263\\\\307.01\\\\-36.86421\\\\128.6261\\\\307.01\\\\-39.86421\\\\128.7971\\\\307.01\\\\-42.36421\\\\129.2701\\\\307.01\\\\-44.36421\\\\129.8393\\\\307.01\\\\-46.86421\\\\130.776\\\\307.01\\\\-48.86421\\\\131.7451\\\\307.01\\\\-51.36421\\\\133.2485\\\\307.01\\\\-52.86421\\\\134.3233\\\\307.01\\\\-54.72322\\\\135.9199\\\\307.01\\\\-56.66919\\\\137.9199\\\\307.01\\\\-57.91208\\\\139.4199\\\\307.01\\\\-58.98921\\\\140.9199\\\\307.01\\\\-59.90558\\\\142.4199\\\\307.01\\\\-60.96825\\\\144.4199\\\\307.01\\\\-62.00807\\\\146.9199\\\\307.01\\\\-62.49783\\\\148.4199\\\\307.01\\\\-62.99993\\\\150.4199\\\\307.01\\\\-63.44202\\\\153.4199\\\\307.01\\\\-63.55772\\\\155.4199\\\\307.01\\\\-63.41841\\\\157.4199\\\\307.01\\\\-63.06064\\\\159.9199\\\\307.01\\\\-62.45292\\\\162.4199\\\\307.01\\\\-61.96073\\\\163.9199\\\\307.01\\\\-60.87757\\\\166.4199\\\\307.01\\\\-59.51585\\\\168.9199\\\\307.01\\\\-58.50807\\\\170.4199\\\\307.01\\\\-56.93054\\\\172.4199\\\\307.01\\\\-55.36421\\\\174.0796\\\\307.01\\\\-53.86421\\\\175.4771\\\\307.01\\\\-51.86421\\\\177.0492\\\\307.01\\\\-49.36421\\\\178.6206\\\\307.01\\\\-47.36421\\\\179.634\\\\307.01\\\\-45.36421\\\\180.4612\\\\307.01\\\\-43.36421\\\\181.1119\\\\307.01\\\\-41.36421\\\\181.5929\\\\307.01\\\\-38.36421\\\\182.0059\\\\307.01\\\\-35.86421\\\\182.0576\\\\307.01\\\\-32.36421\\\\181.6177\\\\307.01\\\\-29.86421\\\\181.0239\\\\307.01\\\\-28.36421\\\\180.5358\\\\307.01\\\\-25.86421\\\\179.4891\\\\307.01\\\\-23.36421\\\\178.2178\\\\307.01\\\\-21.36421\\\\177.3183\\\\307.01\\\\-19.36421\\\\176.722\\\\307.01\\\\-17.86421\\\\176.5826\\\\307.01\\\\-16.36421\\\\176.7435\\\\307.01\\\\-14.86421\\\\177.2485\\\\307.01\\\\-12.86421\\\\178.3477\\\\307.01\\\\-11.86421\\\\179.138\\\\307.01\\\\-10.58232\\\\180.4199\\\\307.01\\\\-9.792064\\\\181.4199\\\\307.01\\\\-8.69282\\\\183.4199\\\\307.01\\\\-8.187816\\\\184.9199\\\\307.01\\\\-8.02691\\\\186.4199\\\\307.01\\\\-8.145048\\\\187.9199\\\\307.01\\\\-8.676711\\\\189.9199\\\\307.01\\\\-9.252931\\\\191.4199\\\\307.01\\\\-9.970693\\\\192.9199\\\\307.01\\\\-10.97549\\\\195.4199\\\\307.01\\\\-11.45025\\\\196.9199\\\\307.01\\\\-12.04224\\\\199.4199\\\\307.01\\\\-12.39888\\\\202.4199\\\\307.01\\\\-12.48248\\\\203.9199\\\\307.01\\\\-12.05772\\\\207.9199\\\\307.01\\\\-11.48475\\\\210.4199\\\\307.01\\\\-10.42456\\\\213.4199\\\\307.01\\\\-9.508066\\\\215.4199\\\\307.01\\\\-8.042242\\\\217.9199\\\\307.01\\\\-6.999926\\\\219.4199\\\\307.01\\\\-4.870026\\\\221.9199\\\\307.01\\\\-2.752931\\\\223.9199\\\\307.01\\\\-1.364211\\\\225.0492\\\\307.01\\\\0.1357885\\\\226.0912\\\\307.01\\\\2.635788\\\\227.5514\\\\307.01\\\\6.135788\\\\229.0449\\\\307.01\\\\7.635788\\\\229.5112\\\\307.01\\\\10.13579\\\\230.0896\\\\307.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851092727900001.507332422180\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"270\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"18\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"14.13579\\\\230.4862\\\\310.01\\\\18.13579\\\\230.1234\\\\310.01\\\\20.63579\\\\229.5843\\\\310.01\\\\23.63579\\\\228.5826\\\\310.01\\\\25.63579\\\\227.6544\\\\310.01\\\\27.63579\\\\226.5734\\\\310.01\\\\29.13579\\\\225.5843\\\\310.01\\\\30.63579\\\\224.4545\\\\310.01\\\\32.13579\\\\223.1497\\\\310.01\\\\34.73231\\\\220.4199\\\\310.01\\\\36.24707\\\\218.4199\\\\310.01\\\\37.78162\\\\215.9199\\\\310.01\\\\38.76729\\\\213.9199\\\\310.01\\\\39.7245\\\\211.4199\\\\310.01\\\\40.30202\\\\209.4199\\\\310.01\\\\40.84336\\\\206.4199\\\\310.01\\\\40.96271\\\\203.9199\\\\310.01\\\\40.77357\\\\200.4199\\\\310.01\\\\40.27764\\\\197.9199\\\\310.01\\\\39.3293\\\\194.9199\\\\310.01\\\\38.71912\\\\193.4199\\\\310.01\\\\37.00643\\\\189.9199\\\\310.01\\\\36.42688\\\\188.4199\\\\310.01\\\\35.98225\\\\186.9199\\\\310.01\\\\35.83789\\\\184.9199\\\\310.01\\\\35.988\\\\183.4199\\\\310.01\\\\36.26941\\\\182.4199\\\\310.01\\\\36.26491\\\\181.4199\\\\310.01\\\\34.99829\\\\179.9199\\\\310.01\\\\34.38188\\\\178.9199\\\\310.01\\\\33.88579\\\\177.4199\\\\310.01\\\\34.07719\\\\176.4199\\\\310.01\\\\34.63116\\\\175.4199\\\\310.01\\\\35.63579\\\\174.4152\\\\310.01\\\\36.63579\\\\173.8545\\\\310.01\\\\37.63579\\\\173.6662\\\\310.01\\\\39.13579\\\\174.166\\\\310.01\\\\40.13579\\\\174.7764\\\\310.01\\\\41.13579\\\\175.6614\\\\310.01\\\\42.13579\\\\175.9128\\\\310.01\\\\44.13579\\\\175.2927\\\\310.01\\\\45.63579\\\\175.1247\\\\310.01\\\\47.13579\\\\175.2645\\\\310.01\\\\48.63579\\\\175.7045\\\\310.01\\\\54.13579\\\\178.0715\\\\310.01\\\\57.13579\\\\179.0214\\\\310.01\\\\59.63579\\\\179.5239\\\\310.01\\\\63.13579\\\\179.7308\\\\310.01\\\\65.63579\\\\179.6192\\\\310.01\\\\68.63579\\\\179.0896\\\\310.01\\\\70.63579\\\\178.5263\\\\310.01\\\\72.13579\\\\177.9862\\\\310.01\\\\74.13579\\\\177.1148\\\\310.01\\\\76.13579\\\\176.0637\\\\310.01\\\\79.13579\\\\174.0311\\\\310.01\\\\81.0086\\\\172.4199\\\\310.01\\\\82.9529\\\\170.4199\\\\310.01\\\\84.19914\\\\168.9199\\\\310.01\\\\85.26941\\\\167.4199\\\\310.01\\\\86.75175\\\\164.9199\\\\310.01\\\\87.68684\\\\162.9199\\\\310.01\\\\88.77357\\\\159.9199\\\\310.01\\\\89.27562\\\\157.9199\\\\310.01\\\\89.71638\\\\154.9199\\\\310.01\\\\89.82782\\\\152.9199\\\\310.01\\\\89.68684\\\\150.9199\\\\310.01\\\\89.32175\\\\148.4199\\\\310.01\\\\88.83649\\\\146.4199\\\\310.01\\\\88.18999\\\\144.4199\\\\310.01\\\\87.35246\\\\142.4199\\\\310.01\\\\86.33649\\\\140.4199\\\\310.01\\\\84.75857\\\\137.9199\\\\310.01\\\\83.16704\\\\135.9199\\\\310.01\\\\80.63579\\\\133.3393\\\\310.01\\\\79.13579\\\\132.1011\\\\310.01\\\\76.63579\\\\130.3393\\\\310.01\\\\73.63579\\\\128.7339\\\\310.01\\\\71.13579\\\\127.7278\\\\310.01\\\\69.63579\\\\127.2502\\\\310.01\\\\67.63579\\\\126.7701\\\\310.01\\\\64.63579\\\\126.372\\\\310.01\\\\63.13579\\\\126.2701\\\\310.01\\\\61.63579\\\\126.3565\\\\310.01\\\\58.63579\\\\126.7386\\\\310.01\\\\56.13579\\\\127.3393\\\\310.01\\\\54.63579\\\\127.8233\\\\310.01\\\\52.13579\\\\128.8818\\\\310.01\\\\46.13579\\\\132.1365\\\\310.01\\\\45.13579\\\\132.5696\\\\310.01\\\\42.13579\\\\133.3956\\\\310.01\\\\41.55696\\\\133.9199\\\\310.01\\\\40.21622\\\\135.9199\\\\310.01\\\\38.63579\\\\137.4791\\\\310.01\\\\37.13579\\\\138.4632\\\\310.01\\\\35.63579\\\\139.1069\\\\310.01\\\\34.13579\\\\139.3742\\\\310.01\\\\32.13579\\\\139.0896\\\\310.01\\\\30.13579\\\\138.1211\\\\310.01\\\\28.68742\\\\136.9199\\\\310.01\\\\27.43292\\\\135.4199\\\\310.01\\\\26.47601\\\\133.4199\\\\310.01\\\\26.25527\\\\131.4199\\\\310.01\\\\26.50186\\\\129.9199\\\\310.01\\\\27.44195\\\\127.9199\\\\310.01\\\\28.58762\\\\126.4199\\\\310.01\\\\29.65523\\\\125.4199\\\\310.01\\\\31.63579\\\\124.0459\\\\310.01\\\\32.17715\\\\123.4199\\\\310.01\\\\32.98225\\\\120.4199\\\\310.01\\\\34.13579\\\\117.8923\\\\310.01\\\\36.2136\\\\113.9199\\\\310.01\\\\37.24707\\\\111.4199\\\\310.01\\\\37.72183\\\\109.9199\\\\310.01\\\\38.31382\\\\107.4199\\\\310.01\\\\38.67046\\\\104.4199\\\\310.01\\\\38.75405\\\\102.9199\\\\310.01\\\\38.3293\\\\98.91986\\\\310.01\\\\37.75405\\\\96.41986\\\\310.01\\\\36.69613\\\\93.41986\\\\310.01\\\\35.77964\\\\91.41986\\\\310.01\\\\34.31382\\\\88.91986\\\\310.01\\\\33.2715\\\\87.41986\\\\310.01\\\\32.13579\\\\86.02634\\\\310.01\\\\30.13579\\\\83.91791\\\\310.01\\\\27.63579\\\\81.7905\\\\310.01\\\\26.13579\\\\80.74847\\\\310.01\\\\23.63579\\\\79.28835\\\\310.01\\\\20.13579\\\\77.79486\\\\310.01\\\\18.63579\\\\77.32851\\\\310.01\\\\16.13579\\\\76.75017\\\\310.01\\\\12.13579\\\\76.35353\\\\310.01\\\\8.135789\\\\76.71637\\\\310.01\\\\5.635788\\\\77.25362\\\\310.01\\\\2.635788\\\\78.25716\\\\310.01\\\\0.6357885\\\\79.18528\\\\310.01\\\\-1.364211\\\\80.26633\\\\310.01\\\\-2.864212\\\\81.25539\\\\310.01\\\\-4.364212\\\\82.38519\\\\310.01\\\\-5.864212\\\\83.69002\\\\310.01\\\\-8.460731\\\\86.41986\\\\310.01\\\\-9.975492\\\\88.41986\\\\310.01\\\\-11.51005\\\\90.91986\\\\310.01\\\\-12.49571\\\\92.91986\\\\310.01\\\\-13.45292\\\\95.41986\\\\310.01\\\\-14.03044\\\\97.41986\\\\310.01\\\\-14.57178\\\\100.4199\\\\310.01\\\\-14.69113\\\\102.9199\\\\310.01\\\\-14.502\\\\106.4199\\\\310.01\\\\-14.00607\\\\108.9199\\\\310.01\\\\-13.05772\\\\111.9199\\\\310.01\\\\-11.97785\\\\114.4199\\\\310.01\\\\-8.843534\\\\119.9199\\\\310.01\\\\-8.175187\\\\121.4199\\\\310.01\\\\-7.470693\\\\123.9199\\\\310.01\\\\-6.864212\\\\124.6244\\\\310.01\\\\-5.364212\\\\125.3065\\\\310.01\\\\-3.864212\\\\126.3094\\\\310.01\\\\-2.211956\\\\127.9199\\\\310.01\\\\-1.176711\\\\129.4199\\\\310.01\\\\-0.6816457\\\\130.4199\\\\310.01\\\\-0.188405\\\\131.9199\\\\310.01\\\\-0.08336733\\\\132.9199\\\\310.01\\\\-0.247305\\\\134.4199\\\\310.01\\\\-0.8017115\\\\135.9199\\\\310.01\\\\-1.679097\\\\137.4199\\\\310.01\\\\-2.581154\\\\138.4199\\\\310.01\\\\-3.864212\\\\139.5973\\\\310.01\\\\-5.364212\\\\140.4625\\\\310.01\\\\-6.864212\\\\141.0252\\\\310.01\\\\-8.364211\\\\141.2053\\\\310.01\\\\-9.364211\\\\141.101\\\\310.01\\\\-10.86421\\\\140.6143\\\\310.01\\\\-11.86421\\\\140.1195\\\\310.01\\\\-13.36421\\\\139.0945\\\\310.01\\\\-15.00626\\\\137.4199\\\\310.01\\\\-16.86421\\\\134.6526\\\\310.01\\\\-17.36421\\\\134.3886\\\\310.01\\\\-18.86421\\\\134.0912\\\\310.01\\\\-21.86421\\\\133.1043\\\\310.01\\\\-26.86421\\\\130.7191\\\\310.01\\\\-29.36421\\\\129.78\\\\310.01\\\\-31.36421\\\\129.2402\\\\310.01\\\\-34.36421\\\\128.7263\\\\310.01\\\\-36.86421\\\\128.6261\\\\310.01\\\\-39.86421\\\\128.7971\\\\310.01\\\\-42.36421\\\\129.2701\\\\310.01\\\\-44.36421\\\\129.8393\\\\310.01\\\\-46.86421\\\\130.776\\\\310.01\\\\-48.86421\\\\131.7451\\\\310.01\\\\-51.36421\\\\133.2485\\\\310.01\\\\-52.86421\\\\134.3233\\\\310.01\\\\-54.72322\\\\135.9199\\\\310.01\\\\-56.66919\\\\137.9199\\\\310.01\\\\-57.91208\\\\139.4199\\\\310.01\\\\-58.98921\\\\140.9199\\\\310.01\\\\-59.90558\\\\142.4199\\\\310.01\\\\-60.96825\\\\144.4199\\\\310.01\\\\-62.00807\\\\146.9199\\\\310.01\\\\-62.49783\\\\148.4199\\\\310.01\\\\-62.99993\\\\150.4199\\\\310.01\\\\-63.44202\\\\153.4199\\\\310.01\\\\-63.55772\\\\155.4199\\\\310.01\\\\-63.41841\\\\157.4199\\\\310.01\\\\-63.06064\\\\159.9199\\\\310.01\\\\-62.45292\\\\162.4199\\\\310.01\\\\-61.96073\\\\163.9199\\\\310.01\\\\-60.87757\\\\166.4199\\\\310.01\\\\-59.51585\\\\168.9199\\\\310.01\\\\-58.50807\\\\170.4199\\\\310.01\\\\-56.93054\\\\172.4199\\\\310.01\\\\-55.36421\\\\174.0796\\\\310.01\\\\-53.86421\\\\175.4771\\\\310.01\\\\-51.86421\\\\177.0492\\\\310.01\\\\-49.36421\\\\178.6206\\\\310.01\\\\-47.36421\\\\179.634\\\\310.01\\\\-45.36421\\\\180.4612\\\\310.01\\\\-43.36421\\\\181.1119\\\\310.01\\\\-41.36421\\\\181.5929\\\\310.01\\\\-38.36421\\\\182.0059\\\\310.01\\\\-35.86421\\\\182.0576\\\\310.01\\\\-32.36421\\\\181.6177\\\\310.01\\\\-29.86421\\\\181.0239\\\\310.01\\\\-28.36421\\\\180.5358\\\\310.01\\\\-25.86421\\\\179.4891\\\\310.01\\\\-23.36421\\\\178.2178\\\\310.01\\\\-21.36421\\\\177.3183\\\\310.01\\\\-19.36421\\\\176.722\\\\310.01\\\\-17.86421\\\\176.5789\\\\310.01\\\\-15.86421\\\\176.8016\\\\310.01\\\\-14.86421\\\\177.0947\\\\310.01\\\\-13.86421\\\\177.1754\\\\310.01\\\\-13.38972\\\\176.9199\\\\310.01\\\\-12.40512\\\\175.4199\\\\310.01\\\\-10.86421\\\\174.216\\\\310.01\\\\-9.864211\\\\173.802\\\\310.01\\\\-8.864211\\\\173.8091\\\\310.01\\\\-7.864212\\\\174.2572\\\\310.01\\\\-6.864212\\\\175.0914\\\\310.01\\\\-6.193576\\\\175.9199\\\\310.01\\\\-5.746355\\\\176.9199\\\\310.01\\\\-5.739212\\\\177.9199\\\\310.01\\\\-6.144981\\\\178.9199\\\\310.01\\\\-7.364212\\\\180.5032\\\\310.01\\\\-8.680878\\\\181.4199\\\\310.01\\\\-8.937325\\\\181.9199\\\\310.01\\\\-8.250575\\\\184.4199\\\\310.01\\\\-8.025116\\\\186.4199\\\\310.01\\\\-8.145048\\\\187.9199\\\\310.01\\\\-8.676711\\\\189.9199\\\\310.01\\\\-9.252931\\\\191.4199\\\\310.01\\\\-9.970693\\\\192.9199\\\\310.01\\\\-10.97549\\\\195.4199\\\\310.01\\\\-11.45025\\\\196.9199\\\\310.01\\\\-12.04224\\\\199.4199\\\\310.01\\\\-12.39888\\\\202.4199\\\\310.01\\\\-12.48248\\\\203.9199\\\\310.01\\\\-12.05772\\\\207.9199\\\\310.01\\\\-11.48475\\\\210.4199\\\\310.01\\\\-10.42456\\\\213.4199\\\\310.01\\\\-9.508066\\\\215.4199\\\\310.01\\\\-8.042242\\\\217.9199\\\\310.01\\\\-6.999926\\\\219.4199\\\\310.01\\\\-4.870026\\\\221.9199\\\\310.01\\\\-2.752931\\\\223.9199\\\\310.01\\\\-1.364211\\\\225.0492\\\\310.01\\\\0.1357885\\\\226.0912\\\\310.01\\\\2.635788\\\\227.5514\\\\310.01\\\\6.135788\\\\229.0449\\\\310.01\\\\7.635788\\\\229.5112\\\\310.01\\\\10.13579\\\\230.0896\\\\310.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851113729100001.470312254320\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"272\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"19\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"45.13579\\\\174.0365\\\\313.01\\\\49.63579\\\\175.8393\\\\313.01\\\\53.13579\\\\177.5358\\\\313.01\\\\56.13579\\\\178.6134\\\\313.01\\\\57.63579\\\\179.0189\\\\313.01\\\\60.63579\\\\179.5311\\\\313.01\\\\62.13579\\\\179.634\\\\313.01\\\\64.13579\\\\179.6288\\\\313.01\\\\65.63579\\\\179.4949\\\\313.01\\\\68.13579\\\\179.0826\\\\313.01\\\\70.13579\\\\178.5597\\\\313.01\\\\71.63579\\\\178.0576\\\\313.01\\\\74.13579\\\\176.992\\\\313.01\\\\76.63579\\\\175.6117\\\\313.01\\\\77.63579\\\\174.9709\\\\313.01\\\\79.63579\\\\173.4802\\\\313.01\\\\81.13579\\\\172.141\\\\313.01\\\\83.24468\\\\169.9199\\\\313.01\\\\84.78358\\\\167.9199\\\\313.01\\\\86.33118\\\\165.4199\\\\313.01\\\\87.33508\\\\163.4199\\\\313.01\\\\88.32481\\\\160.9199\\\\313.01\\\\88.79119\\\\159.4199\\\\313.01\\\\89.33366\\\\156.9199\\\\313.01\\\\89.63774\\\\153.9199\\\\313.01\\\\89.66704\\\\152.4199\\\\313.01\\\\89.30026\\\\148.9199\\\\313.01\\\\88.71638\\\\146.4199\\\\313.01\\\\88.25405\\\\144.9199\\\\313.01\\\\87.24943\\\\142.4199\\\\313.01\\\\86.76299\\\\141.4199\\\\313.01\\\\85.29488\\\\138.9199\\\\313.01\\\\84.24227\\\\137.4199\\\\313.01\\\\83.13579\\\\136.0748\\\\313.01\\\\81.58791\\\\134.4199\\\\313.01\\\\79.95832\\\\132.9199\\\\313.01\\\\78.63579\\\\131.8477\\\\313.01\\\\77.13579\\\\130.7949\\\\313.01\\\\75.63579\\\\129.9028\\\\313.01\\\\73.63579\\\\128.8657\\\\313.01\\\\71.13579\\\\127.8535\\\\313.01\\\\69.13579\\\\127.2418\\\\313.01\\\\66.63579\\\\126.722\\\\313.01\\\\63.63579\\\\126.4741\\\\313.01\\\\62.63579\\\\126.4677\\\\313.01\\\\59.13579\\\\126.7663\\\\313.01\\\\56.63579\\\\127.3183\\\\313.01\\\\55.13579\\\\127.7721\\\\313.01\\\\52.63579\\\\128.7645\\\\313.01\\\\50.63579\\\\129.776\\\\313.01\\\\48.13579\\\\131.2884\\\\313.01\\\\45.13579\\\\133.2862\\\\313.01\\\\43.81487\\\\134.4199\\\\313.01\\\\42.44948\\\\135.9199\\\\313.01\\\\40.76783\\\\137.9199\\\\313.01\\\\39.63579\\\\138.9596\\\\313.01\\\\38.13579\\\\140.0828\\\\313.01\\\\36.13579\\\\141.1221\\\\313.01\\\\34.63579\\\\141.6103\\\\313.01\\\\33.13579\\\\141.7315\\\\313.01\\\\32.13579\\\\141.6267\\\\313.01\\\\30.63579\\\\141.1365\\\\313.01\\\\28.63579\\\\140.0659\\\\313.01\\\\27.2121\\\\138.9199\\\\313.01\\\\26.13579\\\\137.8833\\\\313.01\\\\24.93796\\\\136.4199\\\\313.01\\\\23.94562\\\\134.4199\\\\313.01\\\\23.68623\\\\132.9199\\\\313.01\\\\23.94523\\\\130.9199\\\\313.01\\\\24.50558\\\\129.4199\\\\313.01\\\\25.96752\\\\126.9199\\\\313.01\\\\27.13579\\\\125.5354\\\\313.01\\\\28.23917\\\\124.4199\\\\313.01\\\\30.50511\\\\122.4199\\\\313.01\\\\32.27399\\\\120.4199\\\\313.01\\\\33.26515\\\\118.9199\\\\313.01\\\\34.76941\\\\116.4199\\\\313.01\\\\35.8293\\\\114.4199\\\\313.01\\\\36.74227\\\\112.4199\\\\313.01\\\\37.74227\\\\109.4199\\\\313.01\\\\38.34469\\\\106.4199\\\\313.01\\\\38.54975\\\\103.4199\\\\313.01\\\\38.35495\\\\99.91986\\\\313.01\\\\37.76941\\\\96.91986\\\\313.01\\\\36.78162\\\\93.91986\\\\313.01\\\\35.36021\\\\90.91986\\\\313.01\\\\33.83302\\\\88.41986\\\\313.01\\\\32.73983\\\\86.91986\\\\313.01\\\\31.13579\\\\85.08799\\\\313.01\\\\29.96766\\\\83.91986\\\\313.01\\\\28.13579\\\\82.3208\\\\313.01\\\\25.13579\\\\80.25896\\\\313.01\\\\22.13579\\\\78.72199\\\\313.01\\\\19.63579\\\\77.75362\\\\313.01\\\\18.13579\\\\77.31338\\\\313.01\\\\15.63579\\\\76.78624\\\\313.01\\\\12.13579\\\\76.54264\\\\313.01\\\\9.135789\\\\76.69946\\\\313.01\\\\6.135788\\\\77.24847\\\\313.01\\\\4.135788\\\\77.83652\\\\313.01\\\\1.635789\\\\78.81096\\\\313.01\\\\0.6357885\\\\79.28624\\\\313.01\\\\-1.864211\\\\80.72861\\\\313.01\\\\-3.364212\\\\81.75896\\\\313.01\\\\-5.864212\\\\83.83652\\\\313.01\\\\-7.433468\\\\85.41986\\\\313.01\\\\-9.477848\\\\87.91986\\\\313.01\\\\-11.07731\\\\90.41986\\\\313.01\\\\-12.56631\\\\93.41986\\\\313.01\\\\-13.49357\\\\95.91986\\\\313.01\\\\-14.02512\\\\97.91986\\\\313.01\\\\-14.45556\\\\100.4199\\\\313.01\\\\-14.60266\\\\102.4199\\\\313.01\\\\-14.50807\\\\105.4199\\\\313.01\\\\-14.00404\\\\108.4199\\\\313.01\\\\-13.45556\\\\110.4199\\\\313.01\\\\-12.93347\\\\111.9199\\\\313.01\\\\-12.06961\\\\113.9199\\\\313.01\\\\-11.03044\\\\115.9199\\\\313.01\\\\-9.447545\\\\118.4199\\\\313.01\\\\-7.028274\\\\121.9199\\\\313.01\\\\-5.864212\\\\123.1258\\\\313.01\\\\-3.364212\\\\124.8657\\\\313.01\\\\-1.605229\\\\126.4199\\\\313.01\\\\-0.2548365\\\\127.9199\\\\313.01\\\\0.7884731\\\\129.4199\\\\313.01\\\\1.803042\\\\131.4199\\\\313.01\\\\2.263741\\\\132.9199\\\\313.01\\\\2.37004\\\\133.9199\\\\313.01\\\\2.269263\\\\134.9199\\\\313.01\\\\1.749628\\\\136.4199\\\\313.01\\\\0.8712052\\\\137.9199\\\\313.01\\\\-0.3263327\\\\139.4199\\\\313.01\\\\-1.364211\\\\140.4421\\\\313.01\\\\-2.864212\\\\141.6427\\\\313.01\\\\-4.364212\\\\142.5469\\\\313.01\\\\-5.864212\\\\143.1195\\\\313.01\\\\-7.364212\\\\143.3308\\\\313.01\\\\-9.364211\\\\143.0816\\\\313.01\\\\-11.86421\\\\142.0038\\\\313.01\\\\-13.86421\\\\140.6465\\\\313.01\\\\-15.36421\\\\139.234\\\\313.01\\\\-16.5498\\\\137.9199\\\\313.01\\\\-17.74925\\\\136.4199\\\\313.01\\\\-18.36421\\\\135.8188\\\\313.01\\\\-19.86421\\\\134.709\\\\313.01\\\\-23.86421\\\\132.3233\\\\313.01\\\\-26.86421\\\\130.8365\\\\313.01\\\\-29.86421\\\\129.7536\\\\313.01\\\\-31.86421\\\\129.2502\\\\313.01\\\\-34.36421\\\\128.8535\\\\313.01\\\\-36.86421\\\\128.6958\\\\313.01\\\\-38.86421\\\\128.7993\\\\313.01\\\\-41.86421\\\\129.278\\\\313.01\\\\-43.86421\\\\129.8016\\\\313.01\\\\-45.36421\\\\130.3039\\\\313.01\\\\-47.86421\\\\131.3785\\\\313.01\\\\-50.36421\\\\132.7435\\\\313.01\\\\-51.86421\\\\133.7382\\\\313.01\\\\-53.36421\\\\134.8785\\\\313.01\\\\-55.58069\\\\136.9199\\\\313.01\\\\-56.96327\\\\138.4199\\\\313.01\\\\-58.502\\\\140.4199\\\\313.01\\\\-60.05171\\\\142.9199\\\\313.01\\\\-61.05772\\\\144.9199\\\\313.01\\\\-62.04862\\\\147.4199\\\\313.01\\\\-62.51394\\\\148.9199\\\\313.01\\\\-63.05919\\\\151.4199\\\\313.01\\\\-63.42757\\\\155.4199\\\\313.01\\\\-63.03729\\\\159.4199\\\\313.01\\\\-62.47549\\\\161.9199\\\\313.01\\\\-61.44202\\\\164.9199\\\\313.01\\\\-60.51775\\\\166.9199\\\\313.01\\\\-59.04568\\\\169.4199\\\\313.01\\\\-57.99572\\\\170.9199\\\\313.01\\\\-56.36421\\\\172.8595\\\\313.01\\\\-55.36421\\\\173.9179\\\\313.01\\\\-53.73056\\\\175.4199\\\\313.01\\\\-52.36421\\\\176.5381\\\\313.01\\\\-50.86421\\\\177.5843\\\\313.01\\\\-48.36421\\\\179.0449\\\\313.01\\\\-47.36421\\\\179.5287\\\\313.01\\\\-44.86421\\\\180.5263\\\\313.01\\\\-42.86421\\\\181.1177\\\\313.01\\\\-40.86421\\\\181.5676\\\\313.01\\\\-37.36421\\\\181.9065\\\\313.01\\\\-36.36421\\\\181.914\\\\313.01\\\\-33.36421\\\\181.6486\\\\313.01\\\\-30.36421\\\\181.0404\\\\313.01\\\\-28.86421\\\\180.5826\\\\313.01\\\\-26.36421\\\\179.5878\\\\313.01\\\\-24.36421\\\\178.5929\\\\313.01\\\\-20.86421\\\\176.7294\\\\313.01\\\\-18.36421\\\\175.6257\\\\313.01\\\\-17.36421\\\\175.0934\\\\313.01\\\\-16.58718\\\\174.4199\\\\313.01\\\\-13.86421\\\\171.7129\\\\313.01\\\\-12.36421\\\\170.7226\\\\313.01\\\\-11.36421\\\\170.2449\\\\313.01\\\\-9.864211\\\\169.8028\\\\313.01\\\\-8.364211\\\\169.7928\\\\313.01\\\\-6.864212\\\\170.2438\\\\313.01\\\\-5.864212\\\\170.7449\\\\313.01\\\\-4.364212\\\\171.9052\\\\313.01\\\\-2.711557\\\\173.9199\\\\313.01\\\\-2.21085\\\\174.9199\\\\313.01\\\\-1.762128\\\\176.4199\\\\313.01\\\\-1.727673\\\\177.9199\\\\313.01\\\\-2.167647\\\\179.4199\\\\313.01\\\\-3.207707\\\\181.4199\\\\313.01\\\\-5.876966\\\\184.4199\\\\313.01\\\\-6.53835\\\\185.4199\\\\313.01\\\\-7.7156\\\\188.4199\\\\313.01\\\\-10.04546\\\\193.4199\\\\313.01\\\\-11.02147\\\\195.9199\\\\313.01\\\\-11.47069\\\\197.4199\\\\313.01\\\\-12.012\\\\199.9199\\\\313.01\\\\-12.28921\\\\203.9199\\\\313.01\\\\-12.08461\\\\206.9199\\\\313.01\\\\-11.49571\\\\209.9199\\\\313.01\\\\-10.51005\\\\212.9199\\\\313.01\\\\-9.600636\\\\214.9199\\\\313.01\\\\-8.53218\\\\216.9199\\\\313.01\\\\-6.468249\\\\219.9199\\\\313.01\\\\-4.864212\\\\221.7517\\\\313.01\\\\-3.695094\\\\222.9199\\\\313.01\\\\-1.864211\\\\224.5189\\\\313.01\\\\1.135789\\\\226.5789\\\\313.01\\\\4.135788\\\\228.1177\\\\313.01\\\\6.635788\\\\229.0843\\\\313.01\\\\8.135789\\\\229.5239\\\\313.01\\\\10.63579\\\\230.0514\\\\313.01\\\\14.13579\\\\230.2971\\\\313.01\\\\17.13579\\\\230.1403\\\\313.01\\\\20.13579\\\\229.5878\\\\313.01\\\\22.13579\\\\229.0004\\\\313.01\\\\24.63579\\\\228.0287\\\\313.01\\\\25.63579\\\\227.5514\\\\313.01\\\\28.13579\\\\226.1111\\\\313.01\\\\29.63579\\\\225.0808\\\\313.01\\\\32.13579\\\\223.0032\\\\313.01\\\\33.70211\\\\221.4199\\\\313.01\\\\35.74942\\\\218.9199\\\\313.01\\\\37.34888\\\\216.4199\\\\313.01\\\\38.83649\\\\213.4199\\\\313.01\\\\39.76298\\\\210.9199\\\\313.01\\\\40.29488\\\\208.9199\\\\313.01\\\\40.7245\\\\206.4199\\\\313.01\\\\40.87313\\\\204.4199\\\\313.01\\\\40.84863\\\\202.4199\\\\313.01\\\\40.70794\\\\200.9199\\\\313.01\\\\40.27562\\\\198.4199\\\\313.01\\\\39.72713\\\\196.4199\\\\313.01\\\\39.20504\\\\194.9199\\\\313.01\\\\38.34256\\\\192.9199\\\\313.01\\\\36.03673\\\\188.4199\\\\313.01\\\\35.18366\\\\186.4199\\\\313.01\\\\34.37849\\\\184.9199\\\\313.01\\\\31.46317\\\\181.4199\\\\313.01\\\\30.60703\\\\179.9199\\\\313.01\\\\29.99819\\\\178.4199\\\\313.01\\\\29.80047\\\\176.9199\\\\313.01\\\\29.96704\\\\175.4199\\\\313.01\\\\30.57026\\\\173.9199\\\\313.01\\\\31.56785\\\\172.4199\\\\313.01\\\\32.63579\\\\171.3258\\\\313.01\\\\34.13579\\\\170.2914\\\\313.01\\\\35.63579\\\\169.7194\\\\313.01\\\\36.63579\\\\169.5831\\\\313.01\\\\38.63579\\\\169.7668\\\\313.01\\\\40.13579\\\\170.3782\\\\313.01\\\\41.63579\\\\171.2379\\\\313.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851133730200001.543478973601\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"277\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"20\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"25.13579\\\\125.7391\\\\316.01\\\\29.49653\\\\121.9199\\\\316.01\\\\31.13579\\\\120.2483\\\\316.01\\\\32.28399\\\\118.9199\\\\316.01\\\\33.71638\\\\116.9199\\\\316.01\\\\35.1454\\\\114.4199\\\\316.01\\\\36.28551\\\\111.9199\\\\316.01\\\\37.23983\\\\108.9199\\\\316.01\\\\37.85425\\\\105.4199\\\\316.01\\\\37.94677\\\\102.9199\\\\316.01\\\\37.75405\\\\99.91986\\\\316.01\\\\37.26729\\\\97.41986\\\\316.01\\\\36.3198\\\\94.41986\\\\316.01\\\\35.22183\\\\91.91986\\\\316.01\\\\33.79257\\\\89.41986\\\\316.01\\\\32.75317\\\\87.91986\\\\316.01\\\\31.13579\\\\85.97396\\\\316.01\\\\30.13579\\\\84.91024\\\\316.01\\\\28.50211\\\\83.41986\\\\316.01\\\\27.13579\\\\82.31029\\\\316.01\\\\25.63579\\\\81.27071\\\\316.01\\\\23.13579\\\\79.8506\\\\316.01\\\\20.63579\\\\78.75362\\\\316.01\\\\17.63579\\\\77.8183\\\\316.01\\\\15.13579\\\\77.34204\\\\316.01\\\\12.13579\\\\77.14066\\\\316.01\\\\9.135789\\\\77.29932\\\\316.01\\\\6.635788\\\\77.75716\\\\316.01\\\\4.635788\\\\78.30858\\\\316.01\\\\2.135788\\\\79.25539\\\\316.01\\\\0.1357885\\\\80.2317\\\\316.01\\\\-2.364212\\\\81.76813\\\\316.01\\\\-4.364212\\\\83.29879\\\\316.01\\\\-6.115665\\\\84.91986\\\\316.01\\\\-7.947545\\\\86.91986\\\\316.01\\\\-9.447545\\\\88.91986\\\\316.01\\\\-10.96327\\\\91.41986\\\\316.01\\\\-11.91527\\\\93.41986\\\\316.01\\\\-13.00807\\\\96.41986\\\\316.01\\\\-13.50807\\\\98.41986\\\\316.01\\\\-13.93921\\\\101.4199\\\\316.01\\\\-14.03218\\\\102.9199\\\\316.01\\\\-13.97549\\\\104.4199\\\\316.01\\\\-13.48699\\\\107.9199\\\\316.01\\\\-12.97549\\\\109.9199\\\\316.01\\\\-12.48018\\\\111.4199\\\\316.01\\\\-11.40558\\\\113.9199\\\\316.01\\\\-10.02949\\\\116.4199\\\\316.01\\\\-9.019734\\\\117.9199\\\\316.01\\\\-7.430538\\\\119.9199\\\\316.01\\\\-5.864212\\\\121.586\\\\316.01\\\\-4.864212\\\\122.5021\\\\316.01\\\\-2.864212\\\\124.1116\\\\316.01\\\\-1.364211\\\\125.2054\\\\316.01\\\\1.135789\\\\127.2049\\\\316.01\\\\2.936209\\\\128.9199\\\\316.01\\\\4.82263\\\\130.9199\\\\316.01\\\\6.264465\\\\132.9199\\\\316.01\\\\6.784093\\\\133.9199\\\\316.01\\\\7.031243\\\\134.9199\\\\316.01\\\\6.765253\\\\135.9199\\\\316.01\\\\5.798487\\\\137.4199\\\\316.01\\\\4.889261\\\\138.4199\\\\316.01\\\\2.635788\\\\140.5555\\\\316.01\\\\1.135789\\\\141.7674\\\\316.01\\\\-1.364211\\\\144.0751\\\\316.01\\\\-3.364212\\\\145.6282\\\\316.01\\\\-5.364212\\\\146.6321\\\\316.01\\\\-6.364212\\\\146.802\\\\316.01\\\\-7.864212\\\\146.5771\\\\316.01\\\\-9.864211\\\\145.615\\\\316.01\\\\-11.36421\\\\144.6044\\\\316.01\\\\-13.36421\\\\142.8379\\\\316.01\\\\-15.36421\\\\140.7688\\\\316.01\\\\-17.86421\\\\137.9523\\\\316.01\\\\-18.86421\\\\136.9179\\\\316.01\\\\-21.36421\\\\134.7479\\\\316.01\\\\-24.36421\\\\132.7573\\\\316.01\\\\-26.36421\\\\131.7247\\\\316.01\\\\-28.86421\\\\130.7191\\\\316.01\\\\-30.36421\\\\130.2485\\\\316.01\\\\-32.36421\\\\129.7721\\\\316.01\\\\-35.86421\\\\129.3365\\\\316.01\\\\-37.86421\\\\129.3449\\\\316.01\\\\-41.36421\\\\129.7971\\\\316.01\\\\-43.36421\\\\130.2884\\\\316.01\\\\-46.36421\\\\131.3565\\\\316.01\\\\-48.36421\\\\132.2884\\\\316.01\\\\-50.86421\\\\133.767\\\\316.01\\\\-52.86421\\\\135.2392\\\\316.01\\\\-54.72205\\\\136.9199\\\\316.01\\\\-57.00942\\\\139.4199\\\\316.01\\\\-58.45816\\\\141.4199\\\\316.01\\\\-59.07794\\\\142.4199\\\\316.01\\\\-60.38489\\\\144.9199\\\\316.01\\\\-61.03985\\\\146.4199\\\\316.01\\\\-62.01394\\\\149.4199\\\\316.01\\\\-62.58369\\\\152.4199\\\\316.01\\\\-62.75058\\\\155.4199\\\\316.01\\\\-62.49993\\\\158.9199\\\\316.01\\\\-61.97785\\\\161.4199\\\\316.01\\\\-61.53218\\\\162.9199\\\\316.01\\\\-60.56345\\\\165.4199\\\\316.01\\\\-59.56343\\\\167.4199\\\\316.01\\\\-57.98846\\\\169.9199\\\\316.01\\\\-56.41841\\\\171.9199\\\\316.01\\\\-54.86421\\\\173.5871\\\\316.01\\\\-53.36421\\\\174.9645\\\\316.01\\\\-51.36421\\\\176.5263\\\\316.01\\\\-48.86421\\\\178.0915\\\\316.01\\\\-46.86421\\\\179.087\\\\316.01\\\\-44.36421\\\\180.0535\\\\316.01\\\\-42.36421\\\\180.6162\\\\316.01\\\\-39.36421\\\\181.1487\\\\316.01\\\\-36.86421\\\\181.28\\\\316.01\\\\-33.36421\\\\181.0535\\\\316.01\\\\-30.86421\\\\180.5426\\\\316.01\\\\-29.36421\\\\180.1004\\\\316.01\\\\-26.86421\\\\179.1441\\\\316.01\\\\-24.86421\\\\178.1536\\\\316.01\\\\-22.36421\\\\176.6336\\\\316.01\\\\-20.86421\\\\175.584\\\\316.01\\\\-18.86421\\\\173.9379\\\\316.01\\\\-15.36421\\\\170.4052\\\\316.01\\\\-13.36421\\\\168.7274\\\\316.01\\\\-11.86421\\\\167.7328\\\\316.01\\\\-9.864211\\\\166.7353\\\\316.01\\\\-8.364211\\\\166.2789\\\\316.01\\\\-7.364212\\\\166.2522\\\\316.01\\\\-5.864212\\\\166.7301\\\\316.01\\\\-4.864212\\\\167.2843\\\\316.01\\\\-3.864212\\\\168.1102\\\\316.01\\\\-2.364212\\\\169.5607\\\\316.01\\\\-0.7082709\\\\171.4199\\\\316.01\\\\0.3049062\\\\172.9199\\\\316.01\\\\0.8081186\\\\173.9199\\\\316.01\\\\1.284373\\\\175.4199\\\\316.01\\\\1.291771\\\\176.9199\\\\316.01\\\\0.8586567\\\\178.4199\\\\316.01\\\\0.1957059\\\\179.9199\\\\316.01\\\\-0.6775677\\\\181.4199\\\\316.01\\\\-2.661191\\\\183.9199\\\\316.01\\\\-5.007315\\\\186.4199\\\\316.01\\\\-6.500715\\\\188.4199\\\\316.01\\\\-8.073847\\\\190.9199\\\\316.01\\\\-8.87757\\\\192.4199\\\\316.01\\\\-10.01585\\\\194.9199\\\\316.01\\\\-10.96825\\\\197.9199\\\\316.01\\\\-11.58267\\\\201.4199\\\\316.01\\\\-11.67519\\\\203.9199\\\\316.01\\\\-11.48248\\\\206.9199\\\\316.01\\\\-10.99571\\\\209.4199\\\\316.01\\\\-10.04661\\\\212.4199\\\\316.01\\\\-8.950251\\\\214.9199\\\\316.01\\\\-7.520991\\\\217.4199\\\\316.01\\\\-6.481589\\\\218.9199\\\\316.01\\\\-4.364212\\\\221.414\\\\316.01\\\\-3.354596\\\\222.4199\\\\316.01\\\\-0.8642115\\\\224.5294\\\\316.01\\\\0.6357885\\\\225.569\\\\316.01\\\\3.135788\\\\226.9891\\\\316.01\\\\5.635788\\\\228.0878\\\\316.01\\\\8.635789\\\\229.0214\\\\316.01\\\\11.13579\\\\229.4977\\\\316.01\\\\14.13579\\\\229.6991\\\\316.01\\\\17.13579\\\\229.5404\\\\316.01\\\\19.63579\\\\229.0808\\\\316.01\\\\21.63579\\\\228.5287\\\\316.01\\\\24.13579\\\\227.5826\\\\316.01\\\\26.13579\\\\226.6064\\\\316.01\\\\28.63579\\\\225.0716\\\\316.01\\\\30.63579\\\\223.5409\\\\316.01\\\\32.38724\\\\221.9199\\\\316.01\\\\34.21912\\\\219.9199\\\\316.01\\\\35.71912\\\\217.9199\\\\316.01\\\\37.23231\\\\215.4199\\\\316.01\\\\37.74227\\\\214.4199\\\\316.01\\\\38.78743\\\\211.9199\\\\316.01\\\\39.27964\\\\210.4199\\\\316.01\\\\39.77964\\\\208.4199\\\\316.01\\\\40.21079\\\\205.4199\\\\316.01\\\\40.30376\\\\203.9199\\\\316.01\\\\40.24707\\\\202.4199\\\\316.01\\\\39.75857\\\\198.9199\\\\316.01\\\\39.24707\\\\196.9199\\\\316.01\\\\38.75175\\\\195.4199\\\\316.01\\\\37.67715\\\\192.9199\\\\316.01\\\\36.30844\\\\190.4199\\\\316.01\\\\35.32992\\\\188.9199\\\\316.01\\\\33.83548\\\\186.9199\\\\316.01\\\\30.59809\\\\183.4199\\\\316.01\\\\28.97444\\\\181.4199\\\\316.01\\\\27.49209\\\\178.9199\\\\316.01\\\\26.92882\\\\177.4199\\\\316.01\\\\26.67292\\\\175.9199\\\\316.01\\\\27.0272\\\\173.9199\\\\316.01\\\\27.47647\\\\172.9199\\\\316.01\\\\28.42746\\\\171.4199\\\\316.01\\\\30.0573\\\\169.4199\\\\316.01\\\\31.13579\\\\168.3365\\\\316.01\\\\32.63579\\\\167.1923\\\\316.01\\\\34.63579\\\\166.3017\\\\316.01\\\\36.13579\\\\166.2524\\\\316.01\\\\38.13579\\\\166.8033\\\\316.01\\\\40.13579\\\\167.7816\\\\316.01\\\\41.63579\\\\168.748\\\\316.01\\\\43.63579\\\\170.3422\\\\316.01\\\\46.63579\\\\172.9895\\\\316.01\\\\48.13579\\\\174.0761\\\\316.01\\\\50.63579\\\\175.6084\\\\316.01\\\\52.63579\\\\176.6375\\\\316.01\\\\55.13579\\\\177.647\\\\316.01\\\\56.63579\\\\178.1235\\\\316.01\\\\58.63579\\\\178.6027\\\\316.01\\\\61.13579\\\\178.9332\\\\316.01\\\\63.13579\\\\179.0715\\\\316.01\\\\64.63579\\\\178.9771\\\\316.01\\\\67.63579\\\\178.5617\\\\316.01\\\\69.63579\\\\178.0715\\\\316.01\\\\72.63579\\\\177.0086\\\\316.01\\\\74.63579\\\\176.0676\\\\316.01\\\\77.13579\\\\174.5898\\\\316.01\\\\78.63579\\\\173.5138\\\\316.01\\\\81.01079\\\\171.4199\\\\316.01\\\\82.63579\\\\169.6953\\\\316.01\\\\83.67384\\\\168.4199\\\\316.01\\\\85.35615\\\\165.9199\\\\316.01\\\\86.67046\\\\163.4199\\\\316.01\\\\87.31818\\\\161.9199\\\\316.01\\\\88.28932\\\\158.9199\\\\316.01\\\\88.85658\\\\155.9199\\\\316.01\\\\89.01982\\\\152.9199\\\\316.01\\\\88.76299\\\\149.4199\\\\316.01\\\\88.34512\\\\147.4199\\\\316.01\\\\87.78162\\\\145.4199\\\\316.01\\\\87.23485\\\\143.9199\\\\316.01\\\\85.80917\\\\140.9199\\\\316.01\\\\84.23231\\\\138.4199\\\\316.01\\\\82.65283\\\\136.4199\\\\316.01\\\\81.26814\\\\134.9199\\\\316.01\\\\79.62587\\\\133.4199\\\\316.01\\\\78.13579\\\\132.2224\\\\316.01\\\\75.13579\\\\130.2905\\\\316.01\\\\73.13579\\\\129.2905\\\\316.01\\\\70.63579\\\\128.3183\\\\316.01\\\\68.63579\\\\127.7468\\\\316.01\\\\65.63579\\\\127.2051\\\\316.01\\\\63.13579\\\\127.0843\\\\316.01\\\\59.63579\\\\127.3134\\\\316.01\\\\57.13579\\\\127.8183\\\\316.01\\\\55.63579\\\\128.2519\\\\316.01\\\\53.13579\\\\129.2097\\\\316.01\\\\51.13579\\\\130.2003\\\\316.01\\\\48.63579\\\\131.7489\\\\316.01\\\\47.13579\\\\132.8785\\\\316.01\\\\45.13579\\\\134.6568\\\\316.01\\\\43.91469\\\\135.9199\\\\316.01\\\\42.24456\\\\137.9199\\\\316.01\\\\40.13579\\\\140.2911\\\\316.01\\\\39.13579\\\\141.291\\\\316.01\\\\37.13579\\\\143.0427\\\\316.01\\\\35.63579\\\\144.0175\\\\316.01\\\\34.63579\\\\144.5213\\\\316.01\\\\33.13579\\\\144.9878\\\\316.01\\\\32.13579\\\\145.0095\\\\316.01\\\\30.63579\\\\144.5631\\\\316.01\\\\29.63579\\\\144.0704\\\\316.01\\\\28.13579\\\\143.0939\\\\316.01\\\\25.13579\\\\140.7603\\\\316.01\\\\24.13579\\\\140.097\\\\316.01\\\\22.13579\\\\138.5449\\\\316.01\\\\20.45722\\\\136.9199\\\\316.01\\\\19.40894\\\\135.4199\\\\316.01\\\\19.02304\\\\134.4199\\\\316.01\\\\19.41152\\\\132.9199\\\\316.01\\\\20.52696\\\\130.9199\\\\316.01\\\\22.4984\\\\128.4199\\\\316.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851156731500001.532752123275\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"62\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"21\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-12.89888\\\\102.9199\\\\319.01\\\\-12.55271\\\\106.9199\\\\319.01\\\\-11.97069\\\\109.4199\\\\319.01\\\\-11.4907\\\\110.9199\\\\319.01\\\\-10.43921\\\\113.4199\\\\319.01\\\\-9.063915\\\\115.9199\\\\319.01\\\\-8.047024\\\\117.4199\\\\319.01\\\\-6.419136\\\\119.4199\\\\319.01\\\\-4.864212\\\\121.0275\\\\319.01\\\\-2.364212\\\\123.1128\\\\319.01\\\\-0.8642115\\\\124.1393\\\\319.01\\\\1.635789\\\\125.6274\\\\319.01\\\\6.135788\\\\128.0177\\\\319.01\\\\8.635789\\\\129.0637\\\\319.01\\\\10.63579\\\\129.5962\\\\319.01\\\\12.63579\\\\129.8757\\\\319.01\\\\14.63579\\\\129.5984\\\\319.01\\\\16.13579\\\\129.1345\\\\319.01\\\\18.63579\\\\127.9669\\\\319.01\\\\21.13579\\\\126.5592\\\\319.01\\\\25.13579\\\\123.9956\\\\319.01\\\\27.13579\\\\122.544\\\\319.01\\\\28.96026\\\\120.9199\\\\319.01\\\\30.87045\\\\118.9199\\\\319.01\\\\32.74672\\\\116.4199\\\\319.01\\\\34.18366\\\\113.9199\\\\319.01\\\\35.30482\\\\111.4199\\\\319.01\\\\35.81496\\\\109.9199\\\\319.01\\\\36.33659\\\\107.9199\\\\319.01\\\\36.74227\\\\105.4199\\\\319.01\\\\36.87132\\\\102.9199\\\\319.01\\\\36.75857\\\\100.9199\\\\319.01\\\\36.24469\\\\97.91986\\\\319.01\\\\35.34095\\\\94.91986\\\\319.01\\\\34.72183\\\\93.41986\\\\319.01\\\\33.72296\\\\91.41986\\\\319.01\\\\32.8289\\\\89.91986\\\\319.01\\\\31.77888\\\\88.41986\\\\319.01\\\\30.13579\\\\86.49043\\\\319.01\\\\29.10066\\\\85.41986\\\\319.01\\\\26.63579\\\\83.28575\\\\319.01\\\\25.13579\\\\82.23956\\\\319.01\\\\22.63579\\\\80.81954\\\\319.01\\\\20.13579\\\\79.73236\\\\319.01\\\\18.63579\\\\79.23167\\\\319.01\\\\16.63579\\\\78.72334\\\\319.01\\\\14.13579\\\\78.33926\\\\319.01\\\\12.13579\\\\78.20802\\\\319.01\\\\10.13579\\\\78.30858\\\\319.01\\\\7.135788\\\\78.77843\\\\319.01\\\\5.135788\\\\79.30858\\\\319.01\\\\2.635788\\\\80.22572\\\\319.01\\\\0.6357885\\\\81.20093\\\\319.01\\\\-1.864211\\\\82.73734\\\\319.01\\\\-3.864212\\\\84.28801\\\\319.01\\\\-5.595103\\\\85.91986\\\\319.01\\\\-6.961729\\\\87.41986\\\\319.01\\\\-8.481761\\\\89.41986\\\\319.01\\\\-9.996199\\\\91.91986\\\\319.01\\\\-10.94203\\\\93.91986\\\\319.01\\\\-12.00149\\\\96.91986\\\\319.01\\\\-12.56767\\\\99.41986\\\\319.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851179732800001.515857303411\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"61\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"22\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-7.780878\\\\157.9199\\\\319.01\\\\-7.557069\\\\155.9199\\\\319.01\\\\-7.641239\\\\155.4199\\\\319.01\\\\-8.680249\\\\152.9199\\\\319.01\\\\-10.14019\\\\150.4199\\\\319.01\\\\-11.96758\\\\147.9199\\\\319.01\\\\-14.06594\\\\144.9199\\\\319.01\\\\-15.72495\\\\142.4199\\\\319.01\\\\-17.18427\\\\140.4199\\\\319.01\\\\-19.36421\\\\137.9739\\\\319.01\\\\-21.86421\\\\135.7308\\\\319.01\\\\-24.86421\\\\133.7219\\\\319.01\\\\-26.86421\\\\132.7002\\\\319.01\\\\-29.36421\\\\131.7077\\\\319.01\\\\-30.86421\\\\131.2518\\\\319.01\\\\-33.36421\\\\130.7201\\\\319.01\\\\-36.86421\\\\130.4545\\\\319.01\\\\-40.36421\\\\130.7374\\\\319.01\\\\-42.86421\\\\131.2971\\\\319.01\\\\-44.36421\\\\131.7584\\\\319.01\\\\-46.86421\\\\132.7666\\\\319.01\\\\-48.86421\\\\133.8061\\\\319.01\\\\-50.36421\\\\134.7354\\\\319.01\\\\-52.36421\\\\136.2252\\\\319.01\\\\-54.36421\\\\138.0987\\\\319.01\\\\-55.60049\\\\139.4199\\\\319.01\\\\-57.48921\\\\141.9199\\\\319.01\\\\-58.94202\\\\144.4199\\\\319.01\\\\-60.06339\\\\146.9199\\\\319.01\\\\-60.99572\\\\149.9199\\\\319.01\\\\-61.47311\\\\152.4199\\\\319.01\\\\-61.65237\\\\155.4199\\\\319.01\\\\-61.57079\\\\157.4199\\\\319.01\\\\-61.0741\\\\160.4199\\\\319.01\\\\-60.5406\\\\162.4199\\\\319.01\\\\-59.58504\\\\164.9199\\\\319.01\\\\-58.59007\\\\166.9199\\\\319.01\\\\-57.01646\\\\169.4199\\\\319.01\\\\-55.41872\\\\171.4199\\\\319.01\\\\-53.86421\\\\173.0574\\\\319.01\\\\-52.86421\\\\173.9672\\\\319.01\\\\-50.86421\\\\175.5555\\\\319.01\\\\-48.36421\\\\177.127\\\\319.01\\\\-46.36421\\\\178.1151\\\\319.01\\\\-43.86421\\\\179.0579\\\\319.01\\\\-41.86421\\\\179.606\\\\319.01\\\\-38.86421\\\\180.1074\\\\319.01\\\\-36.86421\\\\180.191\\\\319.01\\\\-34.86421\\\\180.1185\\\\319.01\\\\-31.36421\\\\179.5214\\\\319.01\\\\-28.36421\\\\178.5899\\\\319.01\\\\-25.86421\\\\177.4476\\\\319.01\\\\-24.36421\\\\176.6231\\\\319.01\\\\-22.86421\\\\175.6373\\\\319.01\\\\-21.36421\\\\174.4941\\\\319.01\\\\-19.86421\\\\173.1573\\\\319.01\\\\-17.74542\\\\170.9199\\\\319.01\\\\-15.68287\\\\168.4199\\\\319.01\\\\-14.53537\\\\166.9199\\\\319.01\\\\-11.19653\\\\162.9199\\\\319.01\\\\-9.668378\\\\160.9199\\\\319.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.3.46.670589.33.1.63686699851194733700001.468081152243\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"156\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"23\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"33.13579\\\\158.2413\\\\319.01\\\\35.63579\\\\160.3188\\\\319.01\\\\37.63579\\\\162.1973\\\\319.01\\\\41.63579\\\\166.1942\\\\319.01\\\\45.15037\\\\169.9199\\\\319.01\\\\46.17537\\\\170.9199\\\\319.01\\\\48.13579\\\\172.6269\\\\319.01\\\\50.13579\\\\174.0326\\\\319.01\\\\53.13579\\\\175.6531\\\\319.01\\\\55.13579\\\\176.4862\\\\319.01\\\\57.13579\\\\177.1228\\\\319.01\\\\59.13579\\\\177.5749\\\\319.01\\\\63.13579\\\\177.9218\\\\319.01\\\\66.63579\\\\177.6196\\\\319.01\\\\69.13579\\\\177.067\\\\319.01\\\\72.13579\\\\176.0294\\\\319.01\\\\74.13579\\\\175.1044\\\\319.01\\\\76.63579\\\\173.6219\\\\319.01\\\\78.13579\\\\172.5346\\\\319.01\\\\79.96026\\\\170.9199\\\\319.01\\\\82.30837\\\\168.4199\\\\319.01\\\\83.772\\\\166.4199\\\\319.01\\\\84.67715\\\\164.9199\\\\319.01\\\\85.70212\\\\162.9199\\\\319.01\\\\86.34207\\\\161.4199\\\\319.01\\\\87.27515\\\\158.4199\\\\319.01\\\\87.74707\\\\155.9199\\\\319.01\\\\87.92132\\\\152.9199\\\\319.01\\\\87.83974\\\\150.9199\\\\319.01\\\\87.33659\\\\147.9199\\\\319.01\\\\86.78665\\\\145.9199\\\\319.01\\\\85.83718\\\\143.4199\\\\319.01\\\\84.84293\\\\141.4199\\\\319.01\\\\83.26244\\\\138.9199\\\\319.01\\\\81.65337\\\\136.9199\\\\319.01\\\\80.13579\\\\135.3188\\\\319.01\\\\77.63579\\\\133.1981\\\\319.01\\\\74.63579\\\\131.2557\\\\319.01\\\\72.63579\\\\130.2625\\\\319.01\\\\70.13579\\\\129.3158\\\\319.01\\\\68.13579\\\\128.7592\\\\319.01\\\\65.63579\\\\128.3183\\\\319.01\\\\63.13579\\\\128.1659\\\\319.01\\\\60.63579\\\\128.3016\\\\319.01\\\\58.13579\\\\128.7191\\\\319.01\\\\56.13579\\\\129.2453\\\\319.01\\\\53.63579\\\\130.192\\\\319.01\\\\50.63579\\\\131.7338\\\\319.01\\\\49.13579\\\\132.7196\\\\319.01\\\\47.13579\\\\134.2836\\\\319.01\\\\45.41303\\\\135.9199\\\\319.01\\\\44.05789\\\\137.4199\\\\319.01\\\\42.53205\\\\139.4199\\\\319.01\\\\40.22859\\\\142.9199\\\\319.01\\\\37.76569\\\\146.4199\\\\319.01\\\\34.63579\\\\150.5317\\\\319.01\\\\33.63579\\\\151.6949\\\\319.01\\\\32.63579\\\\152.5969\\\\319.01\\\\32.13579\\\\152.8053\\\\319.01\\\\31.63579\\\\152.5761\\\\319.01\\\\30.63579\\\\151.7115\\\\319.01\\\\29.63579\\\\150.6442\\\\319.01\\\\27.79562\\\\148.4199\\\\319.01\\\\25.45295\\\\145.9199\\\\319.01\\\\24.13579\\\\144.7099\\\\319.01\\\\22.13579\\\\143.3042\\\\319.01\\\\20.13579\\\\142.2827\\\\319.01\\\\17.13579\\\\141.2436\\\\319.01\\\\14.13579\\\\140.6942\\\\319.01\\\\12.13579\\\\140.8091\\\\319.01\\\\10.13579\\\\141.2746\\\\319.01\\\\8.635789\\\\141.7564\\\\319.01\\\\6.635788\\\\142.6667\\\\319.01\\\\4.635788\\\\143.8113\\\\319.01\\\\2.690873\\\\145.4199\\\\319.01\\\\1.635789\\\\146.4907\\\\319.01\\\\0.0003718426\\\\148.4199\\\\319.01\\\\-1.019515\\\\149.9199\\\\319.01\\\\-2.529212\\\\152.4199\\\\319.01\\\\-3.476054\\\\154.4199\\\\319.01\\\\-4.022545\\\\155.9199\\\\319.01\\\\-3.918899\\\\158.4199\\\\319.01\\\\-3.595462\\\\159.4199\\\\319.01\\\\-1.940824\\\\162.9199\\\\319.01\\\\-0.5122378\\\\165.4199\\\\319.01\\\\0.4943411\\\\166.9199\\\\319.01\\\\2.635788\\\\169.3352\\\\319.01\\\\5.151413\\\\171.9199\\\\319.01\\\\6.24749\\\\173.4199\\\\319.01\\\\6.578497\\\\174.4199\\\\319.01\\\\6.298288\\\\175.9199\\\\319.01\\\\5.779171\\\\176.9199\\\\319.01\\\\4.722327\\\\178.4199\\\\319.01\\\\3.883184\\\\179.4199\\\\319.01\\\\1.506402\\\\181.9199\\\\319.01\\\\-2.864212\\\\186.0801\\\\319.01\\\\-5.025976\\\\188.4199\\\\319.01\\\\-6.477698\\\\190.4199\\\\319.01\\\\-7.915268\\\\192.9199\\\\319.01\\\\-9.033246\\\\195.4199\\\\319.01\\\\-9.545151\\\\196.9199\\\\319.01\\\\-10.06501\\\\198.9199\\\\319.01\\\\-10.47069\\\\201.4199\\\\319.01\\\\-10.59974\\\\203.9199\\\\319.01\\\\-10.48699\\\\205.9199\\\\319.01\\\\-9.975492\\\\208.9199\\\\319.01\\\\-9.069374\\\\211.9199\\\\319.01\\\\-8.450251\\\\213.4199\\\\319.01\\\\-7.448093\\\\215.4199\\\\319.01\\\\-6.554331\\\\216.9199\\\\319.01\\\\-5.50494\\\\218.4199\\\\319.01\\\\-3.364212\\\\220.8809\\\\319.01\\\\-2.289615\\\\221.9199\\\\319.01\\\\-0.3642115\\\\223.5549\\\\319.01\\\\1.135789\\\\224.6032\\\\319.01\\\\2.635788\\\\225.492\\\\319.01\\\\4.635788\\\\226.4862\\\\319.01\\\\7.635788\\\\227.608\\\\319.01\\\\9.635789\\\\228.1153\\\\319.01\\\\12.13579\\\\228.5004\\\\319.01\\\\14.13579\\\\228.6302\\\\319.01\\\\16.13579\\\\228.5311\\\\319.01\\\\19.13579\\\\228.0613\\\\319.01\\\\21.13579\\\\227.5287\\\\319.01\\\\23.63579\\\\226.6123\\\\319.01\\\\25.63579\\\\225.6388\\\\319.01\\\\28.13579\\\\224.1024\\\\319.01\\\\30.13579\\\\222.5501\\\\319.01\\\\31.86496\\\\220.9199\\\\319.01\\\\33.23043\\\\219.4199\\\\319.01\\\\34.75003\\\\217.4199\\\\319.01\\\\36.26778\\\\214.9199\\\\319.01\\\\37.2136\\\\212.9199\\\\319.01\\\\38.27096\\\\209.9199\\\\319.01\\\\38.83924\\\\207.4199\\\\319.01\\\\39.17046\\\\203.9199\\\\319.01\\\\38.82429\\\\199.9199\\\\319.01\\\\38.24227\\\\197.4199\\\\319.01\\\\37.76228\\\\195.9199\\\\319.01\\\\36.7136\\\\193.4199\\\\319.01\\\\35.33726\\\\190.9199\\\\319.01\\\\34.32057\\\\189.4199\\\\319.01\\\\32.69406\\\\187.4199\\\\319.01\\\\30.13579\\\\184.8861\\\\319.01\\\\28.13579\\\\183.1373\\\\319.01\\\\26.33371\\\\181.4199\\\\319.01\\\\23.47009\\\\178.4199\\\\319.01\\\\22.04972\\\\176.4199\\\\319.01\\\\21.53857\\\\175.4199\\\\319.01\\\\21.30416\\\\174.4199\\\\319.01\\\\21.59775\\\\173.4199\\\\319.01\\\\22.58987\\\\171.9199\\\\319.01\\\\26.76079\\\\167.4199\\\\319.01\\\\28.76607\\\\164.4199\\\\319.01\\\\30.52865\\\\161.4199\\\\319.01\\\\32.13579\\\\159.0449\\\\319.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n";
-const char* k_rtStruct_json08 =
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"61\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"24\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-22.86421\\\\173.6167\\\\322.01\\\\-20.36421\\\\171.3328\\\\322.01\\\\-18.64568\\\\169.4199\\\\322.01\\\\-17.21133\\\\167.4199\\\\322.01\\\\-15.76229\\\\164.9199\\\\322.01\\\\-14.17866\\\\161.4199\\\\322.01\\\\-13.68593\\\\159.9199\\\\322.01\\\\-13.19968\\\\157.9199\\\\322.01\\\\-13.03158\\\\155.4199\\\\322.01\\\\-13.19686\\\\153.4199\\\\322.01\\\\-13.74929\\\\150.9199\\\\322.01\\\\-14.23635\\\\149.4199\\\\322.01\\\\-15.71317\\\\145.9199\\\\322.01\\\\-16.80026\\\\143.9199\\\\322.01\\\\-17.74579\\\\142.4199\\\\322.01\\\\-19.29129\\\\140.4199\\\\322.01\\\\-20.86421\\\\138.7435\\\\322.01\\\\-21.86421\\\\137.8386\\\\322.01\\\\-23.86421\\\\136.282\\\\322.01\\\\-26.36421\\\\134.764\\\\322.01\\\\-28.36421\\\\133.8425\\\\322.01\\\\-29.86421\\\\133.2735\\\\322.01\\\\-31.86421\\\\132.7164\\\\322.01\\\\-34.36421\\\\132.2486\\\\322.01\\\\-36.86421\\\\132.13\\\\322.01\\\\-39.36421\\\\132.2642\\\\322.01\\\\-41.86421\\\\132.7382\\\\322.01\\\\-43.86421\\\\133.3401\\\\322.01\\\\-46.36421\\\\134.3583\\\\322.01\\\\-48.86421\\\\135.7135\\\\322.01\\\\-50.36421\\\\136.728\\\\322.01\\\\-52.36421\\\\138.4039\\\\322.01\\\\-53.86421\\\\139.9274\\\\322.01\\\\-55.50681\\\\141.9199\\\\322.01\\\\-56.51492\\\\143.4199\\\\322.01\\\\-58.07415\\\\146.4199\\\\322.01\\\\-59.00964\\\\148.9199\\\\322.01\\\\-59.5293\\\\150.9199\\\\322.01\\\\-59.89546\\\\153.4199\\\\322.01\\\\-60.03242\\\\154.9199\\\\322.01\\\\-59.93835\\\\156.9199\\\\322.01\\\\-59.49086\\\\159.9199\\\\322.01\\\\-58.95904\\\\161.9199\\\\322.01\\\\-58.02025\\\\164.4199\\\\322.01\\\\-57.0033\\\\166.4199\\\\322.01\\\\-56.06999\\\\167.9199\\\\322.01\\\\-54.56957\\\\169.9199\\\\322.01\\\\-52.65075\\\\171.9199\\\\322.01\\\\-51.36421\\\\173.1195\\\\322.01\\\\-49.36421\\\\174.6134\\\\322.01\\\\-47.86421\\\\175.5312\\\\322.01\\\\-45.86421\\\\176.5396\\\\322.01\\\\-42.86421\\\\177.6258\\\\322.01\\\\-40.86421\\\\178.1171\\\\322.01\\\\-38.36421\\\\178.4579\\\\322.01\\\\-36.86421\\\\178.5724\\\\322.01\\\\-35.36421\\\\178.4741\\\\322.01\\\\-32.36421\\\\178.0522\\\\322.01\\\\-30.36421\\\\177.5304\\\\322.01\\\\-27.86421\\\\176.6086\\\\322.01\\\\-25.86421\\\\175.6103\\\\322.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"57\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"25\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"12.13579\\\\79.89561\\\\322.01\\\\8.135789\\\\80.26321\\\\322.01\\\\6.135788\\\\80.73197\\\\322.01\\\\3.135788\\\\81.80273\\\\322.01\\\\1.135789\\\\82.78688\\\\322.01\\\\-0.3642115\\\\83.70047\\\\322.01\\\\-1.864211\\\\84.7538\\\\322.01\\\\-4.364212\\\\87.02203\\\\322.01\\\\-6.084282\\\\88.91986\\\\322.01\\\\-7.526799\\\\90.91986\\\\322.01\\\\-8.904288\\\\93.41986\\\\322.01\\\\-9.95048\\\\95.91986\\\\322.01\\\\-10.55831\\\\97.91986\\\\322.01\\\\-11.04673\\\\100.4199\\\\322.01\\\\-11.16636\\\\102.4199\\\\322.01\\\\-11.03347\\\\105.9199\\\\322.01\\\\-10.53559\\\\108.4199\\\\322.01\\\\-9.545301\\\\111.4199\\\\322.01\\\\-8.064543\\\\114.4199\\\\322.01\\\\-5.994056\\\\117.4199\\\\322.01\\\\-4.364212\\\\119.1962\\\\322.01\\\\-2.364212\\\\121.063\\\\322.01\\\\-0.3642115\\\\122.5134\\\\322.01\\\\1.635789\\\\123.6633\\\\322.01\\\\3.635788\\\\124.6195\\\\322.01\\\\6.135788\\\\125.5152\\\\322.01\\\\8.135789\\\\126.0422\\\\322.01\\\\11.13579\\\\126.4622\\\\322.01\\\\13.13579\\\\126.4859\\\\322.01\\\\16.13579\\\\126.0393\\\\322.01\\\\19.13579\\\\125.1215\\\\322.01\\\\20.63579\\\\124.5159\\\\322.01\\\\22.63579\\\\123.5519\\\\322.01\\\\25.63579\\\\121.6349\\\\322.01\\\\28.13579\\\\119.4801\\\\322.01\\\\29.13579\\\\118.4173\\\\322.01\\\\30.76925\\\\116.4199\\\\322.01\\\\32.34138\\\\113.9199\\\\322.01\\\\33.32649\\\\111.9199\\\\322.01\\\\34.23682\\\\109.4199\\\\322.01\\\\34.83486\\\\106.9199\\\\322.01\\\\35.12617\\\\104.4199\\\\322.01\\\\35.21572\\\\102.9199\\\\322.01\\\\34.76814\\\\98.91986\\\\322.01\\\\34.2723\\\\96.91986\\\\322.01\\\\33.77169\\\\95.41986\\\\322.01\\\\32.64571\\\\92.91986\\\\322.01\\\\31.84079\\\\91.41986\\\\322.01\\\\30.85131\\\\89.91986\\\\322.01\\\\28.81709\\\\87.41986\\\\322.01\\\\27.13579\\\\85.78797\\\\322.01\\\\25.13579\\\\84.21124\\\\322.01\\\\23.63579\\\\83.22486\\\\322.01\\\\21.63579\\\\82.17953\\\\322.01\\\\19.63579\\\\81.30779\\\\322.01\\\\18.13579\\\\80.81271\\\\322.01\\\\15.63579\\\\80.22696\\\\322.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"30\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"26\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"14.13579\\\\148.5344\\\\322.01\\\\11.63579\\\\148.8526\\\\322.01\\\\10.13579\\\\149.3299\\\\322.01\\\\9.135789\\\\149.8438\\\\322.01\\\\7.635788\\\\151.0171\\\\322.01\\\\6.442606\\\\152.4199\\\\322.01\\\\5.485788\\\\154.4199\\\\322.01\\\\5.087712\\\\156.4199\\\\322.01\\\\5.087712\\\\158.4199\\\\322.01\\\\5.505788\\\\160.4199\\\\322.01\\\\6.510788\\\\162.4199\\\\322.01\\\\7.333157\\\\163.4199\\\\322.01\\\\8.635789\\\\164.5903\\\\322.01\\\\10.63579\\\\165.6099\\\\322.01\\\\12.13579\\\\165.9872\\\\322.01\\\\13.63579\\\\166.1299\\\\322.01\\\\15.63579\\\\165.9679\\\\322.01\\\\17.13579\\\\165.5553\\\\322.01\\\\19.13579\\\\164.4994\\\\322.01\\\\20.74293\\\\162.9199\\\\322.01\\\\21.68787\\\\161.4199\\\\322.01\\\\22.26579\\\\159.9199\\\\322.01\\\\22.5597\\\\158.4199\\\\322.01\\\\22.58144\\\\156.9199\\\\322.01\\\\22.26579\\\\154.9199\\\\322.01\\\\21.72579\\\\153.4199\\\\322.01\\\\20.79055\\\\151.9199\\\\322.01\\\\19.13579\\\\150.2949\\\\322.01\\\\17.13579\\\\149.2219\\\\322.01\\\\16.13579\\\\148.9099\\\\322.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"58\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"27\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"14.13579\\\\226.9441\\\\322.01\\\\18.13579\\\\226.5733\\\\322.01\\\\20.13579\\\\226.1058\\\\322.01\\\\23.13579\\\\225.037\\\\322.01\\\\25.13579\\\\224.0554\\\\322.01\\\\26.63579\\\\223.1393\\\\322.01\\\\28.13579\\\\222.0859\\\\322.01\\\\30.02057\\\\220.4199\\\\322.01\\\\32.35234\\\\217.9199\\\\322.01\\\\33.796\\\\215.9199\\\\322.01\\\\35.17205\\\\213.4199\\\\322.01\\\\36.22206\\\\210.9199\\\\322.01\\\\36.82989\\\\208.9199\\\\322.01\\\\37.3183\\\\206.4199\\\\322.01\\\\37.43793\\\\204.4199\\\\322.01\\\\37.30504\\\\200.9199\\\\322.01\\\\36.80717\\\\198.4199\\\\322.01\\\\35.81688\\\\195.4199\\\\322.01\\\\34.33746\\\\192.4199\\\\322.01\\\\33.71524\\\\191.4199\\\\322.01\\\\32.26848\\\\189.4199\\\\322.01\\\\30.63579\\\\187.6435\\\\322.01\\\\28.63579\\\\185.7795\\\\322.01\\\\26.63579\\\\184.2958\\\\322.01\\\\25.13579\\\\183.3219\\\\322.01\\\\21.63579\\\\181.3373\\\\322.01\\\\19.13579\\\\180.2194\\\\322.01\\\\17.63579\\\\179.7097\\\\322.01\\\\16.13579\\\\179.3674\\\\322.01\\\\14.13579\\\\179.1844\\\\322.01\\\\12.63579\\\\179.2658\\\\322.01\\\\10.63579\\\\179.7215\\\\322.01\\\\9.135789\\\\180.2507\\\\322.01\\\\6.135788\\\\181.6909\\\\322.01\\\\2.635788\\\\183.7795\\\\322.01\\\\0.6357885\\\\185.1998\\\\322.01\\\\-1.864211\\\\187.3557\\\\322.01\\\\-2.866484\\\\188.4199\\\\322.01\\\\-4.500405\\\\190.4199\\\\322.01\\\\-6.073093\\\\192.9199\\\\322.01\\\\-7.054916\\\\194.9199\\\\322.01\\\\-7.965239\\\\197.4199\\\\322.01\\\\-8.563286\\\\199.9199\\\\322.01\\\\-8.854596\\\\202.4199\\\\322.01\\\\-8.944143\\\\203.9199\\\\322.01\\\\-8.496565\\\\207.9199\\\\322.01\\\\-8.000725\\\\209.9199\\\\322.01\\\\-7.083763\\\\212.4199\\\\322.01\\\\-5.565878\\\\215.4199\\\\322.01\\\\-4.578253\\\\216.9199\\\\322.01\\\\-2.545509\\\\219.4199\\\\322.01\\\\-0.8642115\\\\221.0499\\\\322.01\\\\1.135789\\\\222.6285\\\\322.01\\\\2.635788\\\\223.6162\\\\322.01\\\\4.635788\\\\224.66\\\\322.01\\\\6.635788\\\\225.5312\\\\322.01\\\\8.135789\\\\226.0243\\\\322.01\\\\10.63579\\\\226.6116\\\\322.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"59\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"28\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"49.13579\\\\134.7441\\\\322.01\\\\46.63579\\\\137.0307\\\\322.01\\\\44.92775\\\\138.9199\\\\322.01\\\\43.50623\\\\140.9199\\\\322.01\\\\42.38579\\\\142.9199\\\\322.01\\\\40.97799\\\\145.9199\\\\322.01\\\\39.93071\\\\148.9199\\\\322.01\\\\39.43028\\\\150.9199\\\\322.01\\\\39.09673\\\\153.4199\\\\322.01\\\\39.41588\\\\156.4199\\\\322.01\\\\39.95945\\\\158.4199\\\\322.01\\\\40.52195\\\\159.9199\\\\322.01\\\\41.48458\\\\161.9199\\\\322.01\\\\42.9492\\\\164.4199\\\\322.01\\\\43.96608\\\\165.9199\\\\322.01\\\\45.53619\\\\167.9199\\\\322.01\\\\46.44071\\\\168.9199\\\\322.01\\\\48.13579\\\\170.5235\\\\322.01\\\\50.13579\\\\172.0799\\\\322.01\\\\51.63579\\\\173.0376\\\\322.01\\\\53.63579\\\\174.1012\\\\322.01\\\\56.13579\\\\175.1018\\\\322.01\\\\57.63579\\\\175.5449\\\\322.01\\\\60.13579\\\\176.0546\\\\322.01\\\\63.13579\\\\176.222\\\\322.01\\\\65.63579\\\\176.0973\\\\322.01\\\\68.13579\\\\175.614\\\\322.01\\\\70.13579\\\\175.0277\\\\322.01\\\\72.63579\\\\174.0123\\\\322.01\\\\75.13579\\\\172.6378\\\\322.01\\\\76.63579\\\\171.6285\\\\322.01\\\\78.63579\\\\169.9578\\\\322.01\\\\80.14716\\\\168.4199\\\\322.01\\\\81.7909\\\\166.4199\\\\322.01\\\\82.79488\\\\164.9199\\\\322.01\\\\84.34893\\\\161.9199\\\\322.01\\\\85.28902\\\\159.4199\\\\322.01\\\\85.8061\\\\157.4199\\\\322.01\\\\86.23142\\\\154.4199\\\\322.01\\\\86.31414\\\\152.9199\\\\322.01\\\\86.13579\\\\150.9318\\\\322.01\\\\85.74485\\\\148.4199\\\\322.01\\\\85.19829\\\\146.4199\\\\322.01\\\\84.26165\\\\143.9199\\\\322.01\\\\83.2471\\\\141.9199\\\\322.01\\\\82.32372\\\\140.4199\\\\322.01\\\\80.81777\\\\138.4199\\\\322.01\\\\78.13579\\\\135.695\\\\322.01\\\\75.63579\\\\133.7706\\\\322.01\\\\74.13579\\\\132.8641\\\\322.01\\\\72.13579\\\\131.8482\\\\322.01\\\\69.13579\\\\130.7308\\\\322.01\\\\67.13579\\\\130.2393\\\\322.01\\\\63.13579\\\\129.7981\\\\322.01\\\\61.63579\\\\129.9028\\\\322.01\\\\58.63579\\\\130.3108\\\\322.01\\\\56.63579\\\\130.8307\\\\322.01\\\\54.13579\\\\131.7483\\\\322.01\\\\52.13579\\\\132.7481\\\\322.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"55\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"29\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-36.86421\\\\134.5039\\\\325.01\\\\-40.36421\\\\134.8251\\\\325.01\\\\-42.36421\\\\135.3162\\\\325.01\\\\-44.86421\\\\136.2328\\\\325.01\\\\-46.86421\\\\137.2308\\\\325.01\\\\-47.86421\\\\137.8358\\\\325.01\\\\-49.86421\\\\139.2767\\\\325.01\\\\-50.86421\\\\140.1812\\\\325.01\\\\-52.55669\\\\141.9199\\\\325.01\\\\-54.06213\\\\143.9199\\\\325.01\\\\-54.98921\\\\145.4199\\\\325.01\\\\-55.96295\\\\147.4199\\\\325.01\\\\-56.98823\\\\150.4199\\\\325.01\\\\-57.53526\\\\153.4199\\\\325.01\\\\-57.62727\\\\155.4199\\\\325.01\\\\-57.52279\\\\157.4199\\\\325.01\\\\-57.06078\\\\159.9199\\\\325.01\\\\-56.49021\\\\161.9199\\\\325.01\\\\-55.41194\\\\164.4199\\\\325.01\\\\-54.57702\\\\165.9199\\\\325.01\\\\-53.57396\\\\167.4199\\\\325.01\\\\-51.89916\\\\169.4199\\\\325.01\\\\-50.86421\\\\170.4544\\\\325.01\\\\-48.86421\\\\172.1211\\\\325.01\\\\-47.36421\\\\173.1227\\\\325.01\\\\-45.86421\\\\173.9317\\\\325.01\\\\-43.36421\\\\175.006\\\\325.01\\\\-41.36421\\\\175.596\\\\325.01\\\\-38.86421\\\\176.0515\\\\325.01\\\\-36.86421\\\\176.1623\\\\325.01\\\\-34.86421\\\\176.0684\\\\325.01\\\\-32.36421\\\\175.6225\\\\325.01\\\\-30.36421\\\\175.073\\\\325.01\\\\-27.86421\\\\174.0279\\\\325.01\\\\-25.36421\\\\172.5758\\\\325.01\\\\-23.36421\\\\171.0328\\\\325.01\\\\-21.68302\\\\169.4199\\\\325.01\\\\-19.67303\\\\166.9199\\\\325.01\\\\-18.72346\\\\165.4199\\\\325.01\\\\-17.71021\\\\163.4199\\\\325.01\\\\-16.66229\\\\160.4199\\\\325.01\\\\-16.19818\\\\158.4199\\\\325.01\\\\-15.96381\\\\155.4199\\\\325.01\\\\-16.25821\\\\151.9199\\\\325.01\\\\-16.73232\\\\149.9199\\\\325.01\\\\-17.64964\\\\147.4199\\\\325.01\\\\-19.19963\\\\144.4199\\\\325.01\\\\-20.24376\\\\142.9199\\\\325.01\\\\-21.86421\\\\141.089\\\\325.01\\\\-24.36421\\\\138.787\\\\325.01\\\\-25.86421\\\\137.7401\\\\325.01\\\\-27.36421\\\\136.9034\\\\325.01\\\\-29.86421\\\\135.7551\\\\325.01\\\\-31.36421\\\\135.2615\\\\325.01\\\\-33.36421\\\\134.7939\\\\325.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"55\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"30\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"10.13579\\\\183.3021\\\\325.01\\\\7.135788\\\\184.2407\\\\325.01\\\\5.135788\\\\185.1719\\\\325.01\\\\3.135788\\\\186.2872\\\\325.01\\\\1.135789\\\\187.7495\\\\325.01\\\\-1.559387\\\\190.4199\\\\325.01\\\\-3.057961\\\\192.4199\\\\325.01\\\\-4.487128\\\\194.9199\\\\325.01\\\\-5.510696\\\\197.4199\\\\325.01\\\\-6.051712\\\\199.4199\\\\325.01\\\\-6.519062\\\\202.4199\\\\325.01\\\\-6.565339\\\\203.9199\\\\325.01\\\\-6.408329\\\\205.9199\\\\325.01\\\\-5.967034\\\\208.4199\\\\325.01\\\\-4.985113\\\\211.4199\\\\325.01\\\\-4.035583\\\\213.4199\\\\325.01\\\\-3.447545\\\\214.4199\\\\325.01\\\\-2.060332\\\\216.4199\\\\325.01\\\\-0.8642115\\\\217.754\\\\325.01\\\\1.635789\\\\220.1117\\\\325.01\\\\3.635788\\\\221.491\\\\325.01\\\\4.635788\\\\222.0804\\\\325.01\\\\6.635788\\\\223.0186\\\\325.01\\\\8.135789\\\\223.5795\\\\325.01\\\\10.13579\\\\224.1074\\\\325.01\\\\12.63579\\\\224.4875\\\\325.01\\\\14.13579\\\\224.5909\\\\325.01\\\\16.13579\\\\224.4519\\\\325.01\\\\18.63579\\\\224.0641\\\\325.01\\\\20.63579\\\\223.4818\\\\325.01\\\\23.13579\\\\222.4497\\\\325.01\\\\25.63579\\\\221.0292\\\\325.01\\\\27.63579\\\\219.5015\\\\325.01\\\\29.76198\\\\217.4199\\\\325.01\\\\31.33117\\\\215.4199\\\\325.01\\\\32.29767\\\\213.9199\\\\325.01\\\\33.31492\\\\211.9199\\\\325.01\\\\34.25379\\\\209.4199\\\\325.01\\\\34.83692\\\\206.9199\\\\325.01\\\\35.10346\\\\203.9199\\\\325.01\\\\34.88203\\\\200.9199\\\\325.01\\\\34.73055\\\\199.9199\\\\325.01\\\\34.20932\\\\197.9199\\\\325.01\\\\33.27197\\\\195.4199\\\\325.01\\\\32.22284\\\\193.4199\\\\325.01\\\\31.25856\\\\191.9199\\\\325.01\\\\29.63579\\\\189.9463\\\\325.01\\\\28.11496\\\\188.4199\\\\325.01\\\\26.13579\\\\186.7882\\\\325.01\\\\23.63579\\\\185.2499\\\\325.01\\\\21.63579\\\\184.3438\\\\325.01\\\\20.13579\\\\183.7888\\\\325.01\\\\18.13579\\\\183.2512\\\\325.01\\\\15.13579\\\\182.8438\\\\325.01\\\\13.13579\\\\182.8685\\\\325.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"54\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"31\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"12.13579\\\\123.9516\\\\325.01\\\\15.63579\\\\123.596\\\\325.01\\\\17.63579\\\\123.0987\\\\325.01\\\\19.13579\\\\122.5923\\\\325.01\\\\21.13579\\\\121.6678\\\\325.01\\\\23.13579\\\\120.5568\\\\325.01\\\\25.13579\\\\119.0902\\\\325.01\\\\26.89038\\\\117.4199\\\\325.01\\\\28.2372\\\\115.9199\\\\325.01\\\\29.32537\\\\114.4199\\\\325.01\\\\30.75554\\\\111.9199\\\\325.01\\\\31.77949\\\\109.4199\\\\325.01\\\\32.32329\\\\107.4199\\\\325.01\\\\32.79064\\\\104.4199\\\\325.01\\\\32.83692\\\\102.9199\\\\325.01\\\\32.6799\\\\100.9199\\\\325.01\\\\32.23861\\\\98.41986\\\\325.01\\\\31.25669\\\\95.41986\\\\325.01\\\\30.30979\\\\93.41986\\\\325.01\\\\29.72363\\\\92.41986\\\\325.01\\\\28.33361\\\\90.41986\\\\325.01\\\\25.96829\\\\87.91986\\\\325.01\\\\24.63579\\\\86.72805\\\\325.01\\\\21.63579\\\\84.76335\\\\325.01\\\\19.63579\\\\83.82532\\\\325.01\\\\18.13579\\\\83.26024\\\\325.01\\\\16.13579\\\\82.73236\\\\325.01\\\\13.63579\\\\82.35223\\\\325.01\\\\11.13579\\\\82.27512\\\\325.01\\\\7.635788\\\\82.77291\\\\325.01\\\\5.635788\\\\83.35789\\\\325.01\\\\3.135788\\\\84.39439\\\\325.01\\\\0.6357885\\\\85.814\\\\325.01\\\\-1.364211\\\\87.34236\\\\325.01\\\\-3.033193\\\\88.91986\\\\325.01\\\\-5.063791\\\\91.41986\\\\325.01\\\\-6.030195\\\\92.91986\\\\325.01\\\\-7.047282\\\\94.91986\\\\325.01\\\\-7.982212\\\\97.41986\\\\325.01\\\\-8.565339\\\\99.91986\\\\325.01\\\\-8.831883\\\\102.9199\\\\325.01\\\\-8.610452\\\\105.9199\\\\325.01\\\\-8.458969\\\\106.9199\\\\325.01\\\\-7.937741\\\\108.9199\\\\325.01\\\\-6.997408\\\\111.4199\\\\325.01\\\\-5.947545\\\\113.4199\\\\325.01\\\\-4.983581\\\\114.9199\\\\325.01\\\\-3.364212\\\\116.8934\\\\325.01\\\\-1.843378\\\\118.4199\\\\325.01\\\\0.1357885\\\\120.0548\\\\325.01\\\\1.635789\\\\121.0273\\\\325.01\\\\3.635788\\\\122.0806\\\\325.01\\\\6.135788\\\\123.0276\\\\325.01\\\\8.135789\\\\123.5526\\\\325.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"54\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"32\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"63.13579\\\\173.8627\\\\325.01\\\\66.63579\\\\173.5429\\\\325.01\\\\68.63579\\\\173.0517\\\\325.01\\\\71.13579\\\\172.1226\\\\325.01\\\\74.13579\\\\170.5327\\\\325.01\\\\76.13579\\\\169.0828\\\\325.01\\\\77.39513\\\\167.9199\\\\325.01\\\\79.25494\\\\165.9199\\\\325.01\\\\80.34204\\\\164.4199\\\\325.01\\\\81.26814\\\\162.9199\\\\325.01\\\\82.24203\\\\160.9199\\\\325.01\\\\83.26665\\\\157.9199\\\\325.01\\\\83.75102\\\\155.4199\\\\325.01\\\\83.89706\\\\152.9199\\\\325.01\\\\83.7918\\\\150.9199\\\\325.01\\\\83.32329\\\\148.4199\\\\325.01\\\\82.73289\\\\146.4199\\\\325.01\\\\81.65215\\\\143.9199\\\\325.01\\\\80.83456\\\\142.4199\\\\325.01\\\\79.83023\\\\140.9199\\\\325.01\\\\78.13579\\\\138.9287\\\\325.01\\\\77.1152\\\\137.9199\\\\325.01\\\\75.13579\\\\136.2468\\\\325.01\\\\73.63579\\\\135.2457\\\\325.01\\\\70.63579\\\\133.7382\\\\325.01\\\\67.63579\\\\132.7589\\\\325.01\\\\64.63579\\\\132.2613\\\\325.01\\\\63.13579\\\\132.1962\\\\325.01\\\\61.13579\\\\132.3016\\\\325.01\\\\58.63579\\\\132.7324\\\\325.01\\\\56.63579\\\\133.2899\\\\325.01\\\\54.13579\\\\134.3387\\\\325.01\\\\51.63579\\\\135.7905\\\\325.01\\\\49.63579\\\\137.3374\\\\325.01\\\\47.52657\\\\139.4199\\\\325.01\\\\45.95454\\\\141.4199\\\\325.01\\\\45.00655\\\\142.9199\\\\325.01\\\\43.99264\\\\144.9199\\\\325.01\\\\42.93922\\\\147.9199\\\\325.01\\\\42.47358\\\\149.9199\\\\325.01\\\\42.22876\\\\152.9199\\\\325.01\\\\42.5039\\\\156.4199\\\\325.01\\\\42.97881\\\\158.4199\\\\325.01\\\\43.47368\\\\159.9199\\\\325.01\\\\44.61928\\\\162.4199\\\\325.01\\\\45.45341\\\\163.9199\\\\325.01\\\\46.4907\\\\165.4199\\\\325.01\\\\48.77973\\\\167.9199\\\\325.01\\\\50.63579\\\\169.5769\\\\325.01\\\\52.13579\\\\170.6161\\\\325.01\\\\53.63579\\\\171.4762\\\\325.01\\\\56.13579\\\\172.604\\\\325.01\\\\57.63579\\\\173.1012\\\\325.01\\\\59.63579\\\\173.5834\\\\325.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"44\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"33\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-36.86421\\\\137.8837\\\\328.01\\\\-40.36421\\\\138.2949\\\\328.01\\\\-43.36421\\\\139.2683\\\\328.01\\\\-45.36421\\\\140.256\\\\328.01\\\\-46.86421\\\\141.2251\\\\328.01\\\\-49.36421\\\\143.4318\\\\328.01\\\\-51.02226\\\\145.4199\\\\328.01\\\\-52.4865\\\\147.9199\\\\328.01\\\\-53.44845\\\\150.4199\\\\328.01\\\\-54.01472\\\\152.9199\\\\328.01\\\\-54.17799\\\\155.4199\\\\328.01\\\\-53.99431\\\\157.9199\\\\328.01\\\\-53.53869\\\\159.9199\\\\328.01\\\\-53.04579\\\\161.4199\\\\328.01\\\\-51.54679\\\\164.4199\\\\328.01\\\\-50.51004\\\\165.9199\\\\328.01\\\\-48.86421\\\\167.6923\\\\328.01\\\\-47.36421\\\\169.0581\\\\328.01\\\\-45.86421\\\\170.0912\\\\328.01\\\\-42.86421\\\\171.5804\\\\328.01\\\\-41.36421\\\\172.0771\\\\328.01\\\\-39.36421\\\\172.5214\\\\328.01\\\\-36.86421\\\\172.7081\\\\328.01\\\\-34.36421\\\\172.5449\\\\328.01\\\\-32.36421\\\\172.1048\\\\328.01\\\\-30.86421\\\\171.6225\\\\328.01\\\\-29.36421\\\\170.9925\\\\328.01\\\\-26.86421\\\\169.5144\\\\328.01\\\\-24.36421\\\\167.2983\\\\328.01\\\\-22.72177\\\\165.4199\\\\328.01\\\\-21.74773\\\\163.9199\\\\328.01\\\\-20.7528\\\\161.9199\\\\328.01\\\\-20.20369\\\\160.4199\\\\328.01\\\\-19.68638\\\\158.4199\\\\328.01\\\\-19.35579\\\\155.4199\\\\328.01\\\\-19.73277\\\\151.9199\\\\328.01\\\\-20.68263\\\\148.9199\\\\328.01\\\\-22.23921\\\\145.9199\\\\328.01\\\\-23.76356\\\\143.9199\\\\328.01\\\\-25.36421\\\\142.3077\\\\328.01\\\\-27.36421\\\\140.775\\\\328.01\\\\-29.36421\\\\139.6808\\\\328.01\\\\-31.36421\\\\138.8302\\\\328.01\\\\-33.36421\\\\138.2729\\\\328.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"48\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"34\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"19.13579\\\\87.28422\\\\328.01\\\\16.13579\\\\86.24017\\\\328.01\\\\13.63579\\\\85.78097\\\\328.01\\\\12.13579\\\\85.70812\\\\328.01\\\\10.13579\\\\85.80904\\\\328.01\\\\7.635788\\\\86.28326\\\\328.01\\\\6.135788\\\\86.7646\\\\328.01\\\\3.135788\\\\88.22263\\\\328.01\\\\1.635789\\\\89.22868\\\\328.01\\\\0.2878155\\\\90.41986\\\\328.01\\\\-2.01651\\\\92.91986\\\\328.01\\\\-3.005878\\\\94.41986\\\\328.01\\\\-4.015807\\\\96.41986\\\\328.01\\\\-5.004518\\\\99.41986\\\\328.01\\\\-5.367085\\\\101.9199\\\\328.01\\\\-5.40542\\\\103.9199\\\\328.01\\\\-4.976191\\\\106.9199\\\\328.01\\\\-4.533483\\\\108.4199\\\\328.01\\\\-3.493332\\\\110.9199\\\\328.01\\\\-2.909943\\\\111.9199\\\\328.01\\\\-1.527902\\\\113.9199\\\\328.01\\\\-0.3642115\\\\115.1828\\\\328.01\\\\1.135789\\\\116.5895\\\\328.01\\\\3.135788\\\\117.9891\\\\328.01\\\\5.135788\\\\119.0462\\\\328.01\\\\8.135789\\\\120.0565\\\\328.01\\\\10.63579\\\\120.4504\\\\328.01\\\\13.13579\\\\120.4817\\\\328.01\\\\15.63579\\\\120.0977\\\\328.01\\\\17.63579\\\\119.5301\\\\328.01\\\\20.63579\\\\118.1171\\\\328.01\\\\22.13579\\\\117.1346\\\\328.01\\\\23.61563\\\\115.9199\\\\328.01\\\\24.63579\\\\114.9158\\\\328.01\\\\26.28404\\\\112.9199\\\\328.01\\\\27.71817\\\\110.4199\\\\328.01\\\\28.33316\\\\108.9199\\\\328.01\\\\28.81362\\\\107.4199\\\\328.01\\\\29.22263\\\\105.4199\\\\328.01\\\\29.37814\\\\102.9199\\\\328.01\\\\29.24661\\\\100.9199\\\\328.01\\\\28.70996\\\\98.41986\\\\328.01\\\\28.19545\\\\96.91986\\\\328.01\\\\27.28689\\\\94.91986\\\\328.01\\\\26.34556\\\\93.41986\\\\328.01\\\\25.22345\\\\91.91986\\\\328.01\\\\23.63579\\\\90.26862\\\\328.01\\\\21.63579\\\\88.71584\\\\328.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"47\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"35\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"31.24777\\\\199.9199\\\\328.01\\\\30.23194\\\\196.9199\\\\328.01\\\\29.18762\\\\194.9199\\\\328.01\\\\27.80543\\\\192.9199\\\\328.01\\\\25.8825\\\\190.9199\\\\328.01\\\\25.13579\\\\190.2482\\\\328.01\\\\23.13579\\\\188.8506\\\\328.01\\\\21.13579\\\\187.7935\\\\328.01\\\\18.13579\\\\186.7796\\\\328.01\\\\15.63579\\\\186.3893\\\\328.01\\\\13.13579\\\\186.358\\\\328.01\\\\10.63579\\\\186.7369\\\\328.01\\\\8.635789\\\\187.3055\\\\328.01\\\\5.635788\\\\188.7204\\\\328.01\\\\4.135788\\\\189.7018\\\\328.01\\\\2.65595\\\\190.9199\\\\328.01\\\\1.632165\\\\191.9199\\\\328.01\\\\-0.01651034\\\\193.9199\\\\328.01\\\\-1.45228\\\\196.4199\\\\328.01\\\\-2.066843\\\\197.9199\\\\328.01\\\\-2.542047\\\\199.4199\\\\328.01\\\\-2.951977\\\\201.4199\\\\328.01\\\\-3.091252\\\\204.4199\\\\328.01\\\\-2.975036\\\\205.9199\\\\328.01\\\\-2.438387\\\\208.4199\\\\328.01\\\\-1.923871\\\\209.9199\\\\328.01\\\\-1.013668\\\\211.9199\\\\328.01\\\\-0.07398161\\\\213.4199\\\\328.01\\\\1.482664\\\\215.4199\\\\328.01\\\\2.635788\\\\216.573\\\\328.01\\\\4.635788\\\\218.1181\\\\328.01\\\\7.135788\\\\219.5555\\\\328.01\\\\10.13579\\\\220.5977\\\\328.01\\\\12.63579\\\\221.0551\\\\328.01\\\\14.13579\\\\221.1316\\\\328.01\\\\16.13579\\\\221.0307\\\\328.01\\\\18.63579\\\\220.5513\\\\328.01\\\\20.13579\\\\220.0735\\\\328.01\\\\23.13579\\\\218.6193\\\\328.01\\\\24.63579\\\\217.6051\\\\328.01\\\\26.63579\\\\215.7863\\\\328.01\\\\28.28404\\\\213.9199\\\\328.01\\\\29.27745\\\\212.4199\\\\328.01\\\\30.28206\\\\210.4199\\\\328.01\\\\31.27239\\\\207.4199\\\\328.01\\\\31.63863\\\\204.9199\\\\328.01\\\\31.677\\\\202.9199\\\\328.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"47\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"36\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"45.63295\\\\152.9199\\\\328.01\\\\45.99919\\\\156.4199\\\\328.01\\\\46.56079\\\\158.4199\\\\328.01\\\\46.94164\\\\159.4199\\\\328.01\\\\48.4909\\\\162.4199\\\\328.01\\\\50.01237\\\\164.4199\\\\328.01\\\\51.63579\\\\166.0496\\\\328.01\\\\53.63579\\\\167.5761\\\\328.01\\\\55.13579\\\\168.4353\\\\328.01\\\\57.63579\\\\169.5475\\\\328.01\\\\59.63579\\\\170.0908\\\\328.01\\\\62.13579\\\\170.4227\\\\328.01\\\\64.13579\\\\170.4052\\\\328.01\\\\66.63579\\\\170.0602\\\\328.01\\\\69.63579\\\\169.0909\\\\328.01\\\\71.63579\\\\168.1004\\\\328.01\\\\73.13579\\\\167.1263\\\\328.01\\\\75.13579\\\\165.4452\\\\328.01\\\\77.29958\\\\162.9199\\\\328.01\\\\78.76894\\\\160.4199\\\\328.01\\\\79.72987\\\\157.9199\\\\328.01\\\\80.2863\\\\155.4199\\\\328.01\\\\80.43733\\\\153.4199\\\\328.01\\\\80.26079\\\\150.4199\\\\328.01\\\\79.80331\\\\148.4199\\\\328.01\\\\79.30334\\\\146.9199\\\\328.01\\\\77.80714\\\\143.9199\\\\328.01\\\\76.75469\\\\142.4199\\\\328.01\\\\75.63579\\\\141.1699\\\\328.01\\\\73.63579\\\\139.3292\\\\328.01\\\\72.13579\\\\138.2726\\\\328.01\\\\69.13579\\\\136.7804\\\\328.01\\\\67.63579\\\\136.2818\\\\328.01\\\\65.13579\\\\135.7744\\\\328.01\\\\63.13579\\\\135.652\\\\328.01\\\\60.63579\\\\135.8225\\\\328.01\\\\58.63579\\\\136.2454\\\\328.01\\\\57.13579\\\\136.731\\\\328.01\\\\55.63579\\\\137.3752\\\\328.01\\\\54.13579\\\\138.2036\\\\328.01\\\\52.63579\\\\139.2228\\\\328.01\\\\51.28782\\\\140.4199\\\\328.01\\\\49.00781\\\\142.9199\\\\328.01\\\\48.03405\\\\144.4199\\\\328.01\\\\47.02981\\\\146.4199\\\\328.01\\\\46.48053\\\\147.9199\\\\328.01\\\\45.95977\\\\149.9199\\\\328.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"39\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"37\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"-35.86421\\\\143.7896\\\\331.01\\\\-38.36421\\\\143.8818\\\\331.01\\\\-40.36421\\\\144.3699\\\\331.01\\\\-42.36421\\\\145.2396\\\\331.01\\\\-43.36421\\\\145.8187\\\\331.01\\\\-44.67136\\\\146.9199\\\\331.01\\\\-46.04104\\\\148.4199\\\\331.01\\\\-46.98353\\\\149.9199\\\\331.01\\\\-47.44573\\\\150.9199\\\\331.01\\\\-47.93336\\\\152.4199\\\\331.01\\\\-48.16312\\\\153.9199\\\\331.01\\\\-48.25866\\\\155.4199\\\\331.01\\\\-48.0823\\\\157.4199\\\\331.01\\\\-47.55443\\\\159.4199\\\\331.01\\\\-46.57254\\\\161.4199\\\\331.01\\\\-45.48601\\\\162.9199\\\\331.01\\\\-44.36421\\\\164.0417\\\\331.01\\\\-42.86421\\\\165.1163\\\\331.01\\\\-40.86421\\\\166.0921\\\\331.01\\\\-39.36421\\\\166.5422\\\\331.01\\\\-36.86421\\\\166.784\\\\331.01\\\\-35.36421\\\\166.6911\\\\331.01\\\\-33.86421\\\\166.4476\\\\331.01\\\\-31.36421\\\\165.5051\\\\331.01\\\\-29.86421\\\\164.5511\\\\331.01\\\\-28.86421\\\\163.6834\\\\331.01\\\\-27.69546\\\\162.4199\\\\331.01\\\\-26.71886\\\\160.9199\\\\331.01\\\\-25.70996\\\\158.4199\\\\331.01\\\\-25.27567\\\\156.4199\\\\331.01\\\\-25.21317\\\\155.4199\\\\331.01\\\\-25.32698\\\\153.9199\\\\331.01\\\\-25.78442\\\\151.9199\\\\331.01\\\\-26.63747\\\\149.9199\\\\331.01\\\\-27.21177\\\\148.9199\\\\331.01\\\\-28.36421\\\\147.5032\\\\331.01\\\\-30.36421\\\\145.7552\\\\331.01\\\\-31.36421\\\\145.1815\\\\331.01\\\\-33.36421\\\\144.3188\\\\331.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"38\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"38\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"4.534598\\\\209.9199\\\\331.01\\\\6.188819\\\\211.9199\\\\331.01\\\\8.135789\\\\213.5071\\\\331.01\\\\10.13579\\\\214.5014\\\\331.01\\\\12.13579\\\\215.0422\\\\331.01\\\\14.13579\\\\215.197\\\\331.01\\\\16.63579\\\\215.0084\\\\331.01\\\\18.13579\\\\214.5883\\\\331.01\\\\19.63579\\\\213.9377\\\\331.01\\\\21.13579\\\\213.0235\\\\331.01\\\\22.13579\\\\212.1699\\\\331.01\\\\23.30454\\\\210.9199\\\\331.01\\\\24.30439\\\\209.4199\\\\331.01\\\\25.19557\\\\207.4199\\\\331.01\\\\25.71232\\\\205.4199\\\\331.01\\\\25.81808\\\\203.9199\\\\331.01\\\\25.67383\\\\201.9199\\\\331.01\\\\25.30427\\\\200.4199\\\\331.01\\\\24.75245\\\\198.9199\\\\331.01\\\\24.23462\\\\197.9199\\\\331.01\\\\23.19348\\\\196.4199\\\\331.01\\\\21.63579\\\\194.8493\\\\331.01\\\\20.13579\\\\193.8005\\\\331.01\\\\18.13579\\\\192.881\\\\331.01\\\\16.13579\\\\192.3417\\\\331.01\\\\14.63579\\\\192.2231\\\\331.01\\\\12.63579\\\\192.3105\\\\331.01\\\\10.63579\\\\192.7975\\\\331.01\\\\8.635789\\\\193.6931\\\\331.01\\\\7.635788\\\\194.2918\\\\331.01\\\\5.818221\\\\195.9199\\\\331.01\\\\4.971154\\\\196.9199\\\\331.01\\\\4.039197\\\\198.4199\\\\331.01\\\\3.596016\\\\199.4199\\\\331.01\\\\3.00558\\\\201.4199\\\\331.01\\\\2.826006\\\\203.9199\\\\331.01\\\\3.086875\\\\206.4199\\\\331.01\\\\3.532528\\\\207.9199\\\\331.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"39\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"39\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"21.73698\\\\96.91986\\\\331.01\\\\20.08276\\\\94.91986\\\\331.01\\\\18.13579\\\\93.33265\\\\331.01\\\\16.13579\\\\92.33833\\\\331.01\\\\14.13579\\\\91.79752\\\\331.01\\\\12.13579\\\\91.64268\\\\331.01\\\\9.635789\\\\91.83131\\\\331.01\\\\8.135789\\\\92.25138\\\\331.01\\\\6.635788\\\\92.902\\\\331.01\\\\5.135788\\\\93.8162\\\\331.01\\\\4.135788\\\\94.66986\\\\331.01\\\\2.967038\\\\95.91986\\\\331.01\\\\1.967184\\\\97.41986\\\\331.01\\\\1.076006\\\\99.41986\\\\331.01\\\\0.5592579\\\\101.4199\\\\331.01\\\\0.4534968\\\\102.9199\\\\331.01\\\\0.597745\\\\104.9199\\\\331.01\\\\0.9673102\\\\106.4199\\\\331.01\\\\1.519122\\\\107.9199\\\\331.01\\\\2.036951\\\\108.9199\\\\331.01\\\\3.078096\\\\110.4199\\\\331.01\\\\4.635788\\\\111.9904\\\\331.01\\\\6.135788\\\\113.0392\\\\331.01\\\\8.135789\\\\113.9587\\\\331.01\\\\10.13579\\\\114.498\\\\331.01\\\\11.63579\\\\114.6167\\\\331.01\\\\13.63579\\\\114.5292\\\\331.01\\\\15.63579\\\\114.0422\\\\331.01\\\\17.63579\\\\113.1466\\\\331.01\\\\18.63579\\\\112.5479\\\\331.01\\\\20.45336\\\\110.9199\\\\331.01\\\\21.30042\\\\109.9199\\\\331.01\\\\22.23238\\\\108.4199\\\\331.01\\\\22.67556\\\\107.4199\\\\331.01\\\\23.266\\\\105.4199\\\\331.01\\\\23.41296\\\\103.9199\\\\331.01\\\\23.39122\\\\101.9199\\\\331.01\\\\23.1847\\\\100.4199\\\\331.01\\\\22.73905\\\\98.91986\\\\331.01\"\n"
-"                     }\n"
-"                  },\n"
-"                  {\n"
-"                     \"3006,0016\" : {\n"
-"                        \"Name\" : \"ContourImageSequence\",\n"
-"                        \"Type\" : \"Sequence\",\n"
-"                        \"Value\" : [\n"
-"                           {\n"
-"                              \"0008,1150\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPClassUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"1.2.840.10008.5.1.4.1.1.2\"\n"
-"                              },\n"
-"                              \"0008,1155\" : {\n"
-"                                 \"Name\" : \"ReferencedSOPInstanceUID\",\n"
-"                                 \"Type\" : \"String\",\n"
-"                                 \"Value\" : \"\"\n"
-"                              }\n"
-"                           }\n"
-"                        ]\n"
-"                     },\n"
-"                     \"3006,0042\" : {\n"
-"                        \"Name\" : \"ContourGeometricType\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"CLOSED_PLANAR\"\n"
-"                     },\n"
-"                     \"3006,0046\" : {\n"
-"                        \"Name\" : \"NumberOfContourPoints\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"37\"\n"
-"                     },\n"
-"                     \"3006,0048\" : {\n"
-"                        \"Name\" : \"ContourNumber\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"40\"\n"
-"                     },\n"
-"                     \"3006,0050\" : {\n"
-"                        \"Name\" : \"ContourData\",\n"
-"                        \"Type\" : \"String\",\n"
-"                        \"Value\" : \"74.53024\\\\152.9199\\\\331.01\\\\74.26877\\\\150.4199\\\\331.01\\\\73.81514\\\\148.9199\\\\331.01\\\\72.83221\\\\146.9199\\\\331.01\\\\71.73194\\\\145.4199\\\\331.01\\\\70.63579\\\\144.3343\\\\331.01\\\\69.13579\\\\143.2472\\\\331.01\\\\67.13579\\\\142.2623\\\\331.01\\\\65.63579\\\\141.8188\\\\331.01\\\\63.13579\\\\141.581\\\\331.01\\\\60.63579\\\\141.7975\\\\331.01\\\\59.13579\\\\142.2188\\\\331.01\\\\57.63579\\\\142.8559\\\\331.01\\\\56.13579\\\\143.804\\\\331.01\\\\55.40785\\\\144.4199\\\\331.01\\\\53.99204\\\\145.9199\\\\331.01\\\\53.00511\\\\147.4199\\\\331.01\\\\51.98905\\\\149.9199\\\\331.01\\\\51.54905\\\\151.9199\\\\331.01\\\\51.52641\\\\153.9199\\\\331.01\\\\52.04536\\\\156.4199\\\\331.01\\\\52.89742\\\\158.4199\\\\331.01\\\\53.47115\\\\159.4199\\\\331.01\\\\54.63579\\\\160.8652\\\\331.01\\\\56.63579\\\\162.6044\\\\331.01\\\\58.13579\\\\163.4489\\\\331.01\\\\59.63579\\\\164.0449\\\\331.01\\\\61.63579\\\\164.5168\\\\331.01\\\\63.13579\\\\164.5917\\\\331.01\\\\64.63579\\\\164.4964\\\\331.01\\\\66.63579\\\\164.0014\\\\331.01\\\\68.63579\\\\163.1234\\\\331.01\\\\70.40923\\\\161.9199\\\\331.01\\\\71.63579\\\\160.736\\\\331.01\\\\72.67847\\\\159.4199\\\\331.01\\\\73.72818\\\\157.4199\\\\331.01\\\\74.21391\\\\155.9199\\\\331.01\"\n"
-"                     }\n"
-"                  }\n"
-"               ]\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"11\"\n"
-"            }\n"
-"         }\n"
-"      ]\n"
-"   },\n"
-"   \"3006,0080\" : {\n"
-"      \"Name\" : \"RTROIObservationsSequence\",\n"
-"      \"Type\" : \"Sequence\",\n"
-"      \"Value\" : [\n"
-"         {\n"
-"            \"3006,0082\" : {\n"
-"               \"Name\" : \"ObservationNumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1\"\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"1\"\n"
-"            },\n"
-"            \"3006,0085\" : {\n"
-"               \"Name\" : \"ROIObservationLabel\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"LN300\"\n"
-"            },\n"
-"            \"3006,00a4\" : {\n"
-"               \"Name\" : \"RTROIInterpretedType\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"ORGAN\"\n"
-"            },\n"
-"            \"3006,00a6\" : {\n"
-"               \"Name\" : \"ROIInterpreter\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0082\" : {\n"
-"               \"Name\" : \"ObservationNumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"2\"\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"2\"\n"
-"            },\n"
-"            \"3006,0085\" : {\n"
-"               \"Name\" : \"ROIObservationLabel\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"Cortical Bone\"\n"
-"            },\n"
-"            \"3006,00a4\" : {\n"
-"               \"Name\" : \"RTROIInterpretedType\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"ORGAN\"\n"
-"            },\n"
-"            \"3006,00a6\" : {\n"
-"               \"Name\" : \"ROIInterpreter\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0082\" : {\n"
-"               \"Name\" : \"ObservationNumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"3\"\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"3\"\n"
-"            },\n"
-"            \"3006,0085\" : {\n"
-"               \"Name\" : \"ROIObservationLabel\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"Adipose\"\n"
-"            },\n"
-"            \"3006,00a4\" : {\n"
-"               \"Name\" : \"RTROIInterpretedType\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"ORGAN\"\n"
-"            },\n"
-"            \"3006,00a6\" : {\n"
-"               \"Name\" : \"ROIInterpreter\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0082\" : {\n"
-"               \"Name\" : \"ObservationNumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"4\"\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"4\"\n"
-"            },\n"
-"            \"3006,0085\" : {\n"
-"               \"Name\" : \"ROIObservationLabel\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"CB2-50%\"\n"
-"            },\n"
-"            \"3006,00a4\" : {\n"
-"               \"Name\" : \"RTROIInterpretedType\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"ORGAN\"\n"
-"            },\n"
-"            \"3006,00a6\" : {\n"
-"               \"Name\" : \"ROIInterpreter\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0082\" : {\n"
-"               \"Name\" : \"ObservationNumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"5\"\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"5\"\n"
-"            },\n"
-"            \"3006,0085\" : {\n"
-"               \"Name\" : \"ROIObservationLabel\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"Water\"\n"
-"            },\n"
-"            \"3006,00a4\" : {\n"
-"               \"Name\" : \"RTROIInterpretedType\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"ORGAN\"\n"
-"            },\n"
-"            \"3006,00a6\" : {\n"
-"               \"Name\" : \"ROIInterpreter\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0082\" : {\n"
-"               \"Name\" : \"ObservationNumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"6\"\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"10\"\n"
-"            },\n"
-"            \"3006,0085\" : {\n"
-"               \"Name\" : \"ROIObservationLabel\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"External\"\n"
-"            },\n"
-"            \"3006,00a4\" : {\n"
-"               \"Name\" : \"RTROIInterpretedType\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"EXTERNAL\"\n"
-"            },\n"
-"            \"3006,00a6\" : {\n"
-"               \"Name\" : \"ROIInterpreter\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"\"\n"
-"            }\n"
-"         },\n"
-"         {\n"
-"            \"3006,0082\" : {\n"
-"               \"Name\" : \"ObservationNumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"7\"\n"
-"            },\n"
-"            \"3006,0084\" : {\n"
-"               \"Name\" : \"ReferencedROINumber\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"11\"\n"
-"            },\n"
-"            \"3006,0085\" : {\n"
-"               \"Name\" : \"ROIObservationLabel\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"PTV\"\n"
-"            },\n"
-"            \"3006,00a4\" : {\n"
-"               \"Name\" : \"RTROIInterpretedType\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"PTV\"\n"
-"            },\n"
-"            \"3006,00a6\" : {\n"
-"               \"Name\" : \"ROIInterpreter\",\n"
-"               \"Type\" : \"String\",\n"
-"               \"Value\" : \"\"\n"
-"            }\n"
-"         }\n"
-"      ]\n"
-"   },\n"
-"   \"300e,0002\" : {\n"
-"      \"Name\" : \"ApprovalStatus\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"APPROVED\"\n"
-"   },\n"
-"   \"300e,0004\" : {\n"
-"      \"Name\" : \"ReviewDate\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"20190318\"\n"
-"   },\n"
-"   \"300e,0005\" : {\n"
-"      \"Name\" : \"ReviewTime\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"182558\"\n"
-"   },\n"
-"   \"300e,0008\" : {\n"
-"      \"Name\" : \"ReviewerName\",\n"
-"      \"Type\" : \"String\",\n"
-"      \"Value\" : \"ONC_jwulff2\"\n"
-"   }\n"
-"}\n"
-"";
-
-#ifdef _MSC_VER
-#pragma endregion
-#endif
-// _MSC_VER
-
-/*
-these tests are single-threaded... no worries for old buggy compilers
-(I'm talking to YOU, cl.exe v100! And to your ancestors!)
-*/
-static std::string& GetTestJson()
-{
-  static const char* resultRaw = NULL;
-  static std::string result;
-  if (resultRaw == NULL)
-  {
-    std::stringstream sst;
-
-    sst << k_rtStruct_json00
-      << k_rtStruct_json01
-      << k_rtStruct_json02
-      << k_rtStruct_json03
-      << k_rtStruct_json04
-      << k_rtStruct_json05
-      << k_rtStruct_json06
-      << k_rtStruct_json07
-      << k_rtStruct_json08;
-
-    std::string wholeBody = sst.str();
-    result.swap(wholeBody);
-    resultRaw = result.c_str();
-  }
-  return result;
-}
-
-#define STONE_ARRAY_SIZE(arr)     (sizeof(arr) / sizeof((arr)[0]))
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-static void CheckGroundTruth(
-  const std::vector<OrthancStone::DicomStructure2>& structures,
-  const size_t structureIndex,
-  const size_t sliceIndex,
-  std::vector<double> groundTruth)
-{
-  const std::vector<DicomStructurePolygon2>& polygonsForThisStruct = structures.at(structureIndex).GetPolygons();
-  const DicomStructurePolygon2& polygon = polygonsForThisStruct.at(sliceIndex);
-
-  //double groundTruth[] = { 7.657838, 108.2725, 304.01, 6.826687, 107.4413, 304.01, 6.152492, 106.4785, 304.01, 5.655735, 105.4132, 304.01, 5.351513, 104.2778, 304.01, 5.249068, 103.1069, 304.01, 5.351513, 101.9359, 304.01, 5.655735, 100.8005, 304.01, 6.152492, 99.73524, 304.01, 6.826687, 98.77239, 304.01, 7.657838, 97.94124, 304.01, 8.620689, 97.26704, 304.01, 9.685987, 96.77029, 304.01, 10.82136, 96.46606, 304.01, 11.99231, 96.36362, 304.01, 13.16326, 96.46606, 304.01, 14.29864, 96.77029, 304.01, 15.36393, 97.26704, 304.01, 16.32678, 97.94124, 304.01, 17.15794, 98.77239, 304.01, 17.83213, 99.73524, 304.01, 18.32889, 100.8005, 304.01, 18.63311, 101.9359, 304.01, 18.73555, 103.1069, 304.01, 18.63311, 104.2778, 304.01, 18.32889, 105.4132, 304.01, 17.83213, 106.4785, 304.01, 17.15794, 107.4413, 304.01, 16.32678, 108.2725, 304.01, 15.36393, 108.9467, 304.01, 14.29864, 109.4434, 304.01, 13.16326, 109.7477, 304.01, 11.99231, 109.8501, 304.01, 10.82136, 109.7477, 304.01, 9.685987, 109.4434, 304.01, 8.620689, 108.9467, 304.01 };
-  size_t groundTruthItems = groundTruth.size();
-
-  size_t pointCount = 3 * polygon.GetPointCount();
-
-  EXPECT_EQ(groundTruthItems, pointCount);
-
-  for (size_t i = 0; i < polygon.GetPointCount(); ++i)
-  {
-    const Point3D& point = polygon.GetPoint(i);
-
-    // loop over X, Y then Z.
-    for (size_t j = 0; j < 3; ++j)
-    {
-      size_t index = 3 * i + j;
-      ASSERT_LT(index, groundTruthItems);
-      bool isNear = LinearAlgebra::IsNear(groundTruth[index], point[j]);
-      EXPECT_TRUE(isNear);
-    }
-  }
-}
-
-
-TEST(StructureSet, ReadFromJsonThatsAll)
-{
-  DicomStructureSet2 structureSet;
-
-  OrthancPlugins::FullOrthancDataset dicom(GetTestJson());
-  //loader.content_.reset(new DicomStructureSet(dicom));
-  structureSet.Clear();
-
-  structureSet.FillStructuresFromDataset(dicom);
-  structureSet.ComputeDependentProperties();
-
-  const std::vector<DicomStructure2>& structures = structureSet.structures_;
-
-  /*
-
-  ██████╗  █████╗ ███████╗██╗ ██████╗     ██████╗██╗  ██╗███████╗ ██████╗██╗  ██╗███████╗
-  ██╔══██╗██╔══██╗██╔════╝██║██╔════╝    ██╔════╝██║  ██║██╔════╝██╔════╝██║ ██╔╝██╔════╝
-  ██████╔╝███████║███████╗██║██║         ██║     ███████║█████╗  ██║     █████╔╝ ███████╗
-  ██╔══██╗██╔══██║╚════██║██║██║         ██║     ██╔══██║██╔══╝  ██║     ██╔═██╗ ╚════██║
-  ██████╔╝██║  ██║███████║██║╚██████╗    ╚██████╗██║  ██║███████╗╚██████╗██║  ██╗███████║
-  ╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝ ╚═════╝     ╚═════╝╚═╝  ╚═╝╚══════╝ ╚═════╝╚═╝  ╚═╝╚══════╝
-  http://patorjk.com/software/taag/#p=display&f=ANSI%20Shadow&t=BASIC%20CHECKS
-  */
-
-  // (0x3006, 0x0080) seq. size
-  EXPECT_EQ(7, structures.size());
-
-  // (0x3006, 0x0080)[i]/(0x3006, 0x00a4)
-  for (size_t i = 0; i < 5; ++i)
-  {
-    EXPECT_EQ(std::string("ORGAN"), structures[i].interpretation_);
-  }
-  EXPECT_EQ(std::string("EXTERNAL"), structures[5].interpretation_);
-  EXPECT_EQ(std::string("PTV"), structures[6].interpretation_);
-
-  // (0x3006, 0x0020)[i]/(0x3006, 0x0026)
-  EXPECT_EQ(std::string("LN300"), structures[0].name_);
-  EXPECT_EQ(std::string("Cortical Bone"), structures[1].name_);
-  EXPECT_EQ(std::string("Adipose"), structures[2].name_);
-  EXPECT_EQ(std::string("CB2-50%"), structures[3].name_);
-  EXPECT_EQ(std::string("Water"), structures[4].name_);
-  EXPECT_EQ(std::string("External"), structures[5].name_);
-  EXPECT_EQ(std::string("PTV"), structures[6].name_);
-
-  // (0x3006, 0x0039)[i]/(0x3006, 0x002a)
-  EXPECT_EQ(0xff, structures[0].red_);
-  EXPECT_EQ(0x00, structures[0].green_);
-  EXPECT_EQ(0x00, structures[0].blue_);
-
-  EXPECT_EQ(0x00, structures[1].red_);
-  EXPECT_EQ(0xff, structures[1].green_);
-  EXPECT_EQ(0xff, structures[1].blue_);
-
-  // ...
-
-  EXPECT_EQ(0x00, structures[5].red_);
-  EXPECT_EQ(0x80, structures[5].green_);
-  EXPECT_EQ(0x00, structures[5].blue_);
-
-  EXPECT_EQ(0xff, structures[6].red_);
-  EXPECT_EQ(0x00, structures[6].green_);
-  EXPECT_EQ(0xff, structures[6].blue_);
-
-  /*
-
-   ██████╗ ███████╗ ██████╗ ███╗   ███╗███████╗████████╗██████╗ ██╗   ██╗
-  ██╔════╝ ██╔════╝██╔═══██╗████╗ ████║██╔════╝╚══██╔══╝██╔══██╗╚██╗ ██╔╝
-  ██║  ███╗█████╗  ██║   ██║██╔████╔██║█████╗     ██║   ██████╔╝ ╚████╔╝
-  ██║   ██║██╔══╝  ██║   ██║██║╚██╔╝██║██╔══╝     ██║   ██╔══██╗  ╚██╔╝
-  ╚██████╔╝███████╗╚██████╔╝██║ ╚═╝ ██║███████╗   ██║   ██║  ██║   ██║
-   ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝     ╚═╝╚══════╝   ╚═╝   ╚═╝  ╚═╝   ╚═╝
-  http://patorjk.com/software/taag/#p=display&f=ANSI%20Shadow&t=BASIC%20CHECKS
-  */
-
-
-  {
-    double groundTruthRaw[] = { 7.657838, 108.2725, 304.01, 6.826687, 107.4413, 304.01, 6.152492, 106.4785, 304.01, 5.655735, 105.4132, 304.01, 5.351513, 104.2778, 304.01, 5.249068, 103.1069, 304.01, 5.351513, 101.9359, 304.01, 5.655735, 100.8005, 304.01, 6.152492, 99.73524, 304.01, 6.826687, 98.77239, 304.01, 7.657838, 97.94124, 304.01, 8.620689, 97.26704, 304.01, 9.685987, 96.77029, 304.01, 10.82136, 96.46606, 304.01, 11.99231, 96.36362, 304.01, 13.16326, 96.46606, 304.01, 14.29864, 96.77029, 304.01, 15.36393, 97.26704, 304.01, 16.32678, 97.94124, 304.01, 17.15794, 98.77239, 304.01, 17.83213, 99.73524, 304.01, 18.32889, 100.8005, 304.01, 18.63311, 101.9359, 304.01, 18.73555, 103.1069, 304.01, 18.63311, 104.2778, 304.01, 18.32889, 105.4132, 304.01, 17.83213, 106.4785, 304.01, 17.15794, 107.4413, 304.01, 16.32678, 108.2725, 304.01, 15.36393, 108.9467, 304.01, 14.29864, 109.4434, 304.01, 13.16326, 109.7477, 304.01, 11.99231, 109.8501, 304.01, 10.82136, 109.7477, 304.01, 9.685987, 109.4434, 304.01, 8.620689, 108.9467, 304.01 };
-    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
-    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
-    CheckGroundTruth(structures, 0, 0, groundTruth);
-  }
-  {
-    double groundTruthRaw[] = { 7.657838, 108.2725, 310.01, 6.826687, 107.4413, 310.01, 6.152492, 106.4785, 310.01, 5.655735, 105.4132, 310.01, 5.351513, 104.2778, 310.01, 5.249068, 103.1069, 310.01, 5.351513, 101.9359, 310.01, 5.655735, 100.8005, 310.01, 6.152492, 99.73524, 310.01, 6.826687, 98.77239, 310.01, 7.657838, 97.94124, 310.01, 8.620689, 97.26704, 310.01, 9.685987, 96.77029, 310.01, 10.82136, 96.46606, 310.01, 11.99231, 96.36362, 310.01, 13.16326, 96.46606, 310.01, 14.29864, 96.77029, 310.01, 15.36393, 97.26704, 310.01, 16.32678, 97.94124, 310.01, 17.15794, 98.77239, 310.01, 17.83213, 99.73524, 310.01, 18.32889, 100.8005, 310.01, 18.63311, 101.9359, 310.01, 18.73555, 103.1069, 310.01, 18.63311, 104.2778, 310.01, 18.32889, 105.4132, 310.01, 17.83213, 106.4785, 310.01, 17.15794, 107.4413, 310.01, 16.32678, 108.2725, 310.01, 15.36393, 108.9467, 310.01, 14.29864, 109.4434, 310.01, 13.16326, 109.7477, 310.01, 11.99231, 109.8501, 310.01, 10.82136, 109.7477, 310.01, 9.685987, 109.4434, 310.01, 8.620689, 108.9467, 310.01 };
-    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
-    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
-    CheckGroundTruth(structures, 0, 2, groundTruth);
-  }
-  {
-    double groundTruthRaw[] = { -37.967, 161.9664, 304.01, -39.10237, 161.6622, 304.01, -40.16767, 161.1655, 304.01, -41.13052, 160.4913, 304.01, -41.96167, 159.6601, 304.01, -42.63587, 158.6973, 304.01, -43.13263, 157.632, 304.01, -43.43685, 156.4966, 304.01, -43.53929, 155.3257, 304.01, -43.43685, 154.1547, 304.01, -43.13263, 153.0193, 304.01, -42.63587, 151.954, 304.01, -41.96167, 150.9912, 304.01, -41.13052, 150.16, 304.01, -40.16767, 149.4858, 304.01, -39.10237, 148.9891, 304.01, -37.967, 148.6849, 304.01, -36.79605, 148.5824, 304.01, -35.6251, 148.6849, 304.01, -34.48972, 148.9891, 304.01, -33.42443, 149.4858, 304.01, -32.46157, 150.16, 304.01, -31.63042, 150.9912, 304.01, -30.95623, 151.954, 304.01, -30.45947, 153.0193, 304.01, -30.15525, 154.1547, 304.01, -30.0528, 155.3257, 304.01, -30.15525, 156.4966, 304.01, -30.45947, 157.632, 304.01, -30.95623, 158.6973, 304.01, -31.63042, 159.6601, 304.01, -32.46157, 160.4913, 304.01, -33.42443, 161.1655, 304.01, -34.48972, 161.6622, 304.01, -35.6251, 161.9664, 304.01, -36.79605, 162.0689, 304.01 };
-    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
-    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
-    CheckGroundTruth(structures, 1, 0, groundTruth);
-  }
-  {
-    double groundTruthRaw[] = { 69.4042, 150.7324, 307.01, 69.70842, 151.8678, 307.01, 69.81087, 153.0387, 307.01, 69.70842, 154.2097, 307.01, 69.4042, 155.345, 307.01, 68.90745, 156.4103, 307.01, 68.23325, 157.3732, 307.01, 67.4021, 158.2043, 307.01, 66.43925, 158.8785, 307.01, 65.37395, 159.3753, 307.01, 64.23858, 159.6795, 307.01, 63.06762, 159.7819, 307.01, 61.89667, 159.6795, 307.01, 60.7613, 159.3753, 307.01, 59.696, 158.8785, 307.01, 58.73315, 158.2043, 307.01, 57.902, 157.3732, 307.01, 57.22781, 156.4103, 307.01, 56.73105, 155.345, 307.01, 56.42683, 154.2097, 307.01, 56.32438, 153.0387, 307.01, 56.42683, 151.8678, 307.01, 56.73105, 150.7324, 307.01, 57.22781, 149.6671, 307.01, 57.902, 148.7042, 307.01, 58.73315, 147.8731, 307.01, 59.696, 147.1989, 307.01, 60.7613, 146.7021, 307.01, 61.89667, 146.3979, 307.01, 63.06762, 146.2955, 307.01, 64.23858, 146.3979, 307.01, 65.37395, 146.7021, 307.01, 66.43925, 147.1989, 307.01, 67.4021, 147.8731, 307.01, 68.23325, 148.7042, 307.01, 68.90745, 149.6671, 307.01 };
-    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
-    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
-    CheckGroundTruth(structures, 2, 1, groundTruth);
-  }
-
-  {
-    double groundTruthRaw[] = { 108.3984, 232.7406, 274.01, 106.0547, 231.7948, 274.01, 103.7109, 232.8407, 274.01, 96.67969, 232.8757, 274.01, 77.92969, 232.887, 274.01, 47.46094, 232.8902, 274.01, 38.08594, 232.7537, 274.01, 37.6668, 232.3734, 274.01, 38.08594, 231.9774, 274.01, 40.42969, 231.8475, 274.01, 41.76413, 230.0297, 274.01, 42.77344, 229.1388, 274.01, 45.11719, 228.5069, 274.01, 47.46094, 227.1533, 274.01, 49.80469, 226.3505, 274.01, 52.14844, 224.6564, 274.01, 54.49219, 223.923, 274.01, 56.83594, 222.0692, 274.01, 59.17969, 220.3438, 274.01, 61.52344, 219.3888, 274.01, 63.86719, 217.1287, 274.01, 65.83488, 215.9672, 274.01, 68.55469, 213.2383, 274.01, 70.89844, 211.2328, 274.01, 72.8125, 208.9359, 274.01, 75.58594, 206.3615, 274.01, 76.91445, 204.2484, 274.01, 78.89509, 201.9047, 274.01, 80.51276, 199.5609, 274.01, 81.51955, 197.2172, 274.01, 83.67448, 194.8734, 274.01, 84.60938, 192.5297, 274.01, 85.86986, 190.1859, 274.01, 86.57623, 187.8422, 274.01, 88.30051, 185.4984, 274.01, 88.94002, 183.1547, 274.01, 89.23261, 180.8109, 274.01, 89.64844, 180.3263, 274.01, 90.71885, 178.4672, 274.01, 90.97656, 176.1234, 274.01, 91.99219, 174.4794, 274.01, 92.56773, 173.7797, 274.01, 92.80016, 171.4359, 274.01, 93.23473, 169.0922, 274.01, 93.37606, 166.7484, 274.01, 93.60748, 157.3734, 274.01, 93.6341, 152.6859, 274.01, 93.35742, 140.9672, 274.01, 92.89317, 138.6234, 274.01, 92.7069, 136.2797, 274.01, 92.03726, 133.9359, 274.01, 90.84009, 131.5922, 274.01, 90.3769, 129.2484, 274.01, 89.09074, 126.9047, 274.01, 88.13225, 122.2172, 274.01, 86.17828, 119.8734, 274.01, 84.96094, 117.4163, 274.01, 83.99619, 115.1859, 274.01, 83.13079, 112.8422, 274.01, 82.61719, 112.2984, 274.01, 80.27344, 108.8454, 274.01, 79.64514, 108.1547, 274.01, 77.21497, 105.8109, 274.01, 76.47787, 103.4672, 274.01, 75.58594, 102.6177, 274.01, 73.24219, 100.0077, 274.01, 69.54492, 96.43594, 274.01, 67.34096, 94.09219, 274.01, 64.66306, 91.74844, 274.01, 63.86719, 90.92619, 274.01, 61.52344, 90.20454, 274.01, 59.17969, 87.78574, 274.01, 56.83594, 86.48566, 274.01, 54.49219, 84.31388, 274.01, 52.14844, 83.44438, 274.01, 49.80469, 82.75121, 274.01, 49.37617, 82.37344, 274.01, 47.46094, 81.26244, 274.01, 45.71391, 80.02969, 274.01, 45.11719, 79.45415, 274.01, 42.77344, 79.08185, 274.01, 40.42969, 78.51941, 274.01, 38.08594, 78.27534, 274.01, 37.36932, 77.68594, 274.01, 35.74219, 76.67624, 274.01, 33.39844, 76.49941, 274.01, 31.05469, 76.03495, 274.01, 28.71094, 74.83174, 274.01, 26.36719, 74.62859, 274.01, 24.02344, 74.55463, 274.01, 21.67969, 74.22861, 274.01, 19.33594, 74.05312, 274.01, 12.30469, 73.99397, 274.01, 5.273438, 74.0736, 274.01, 2.929688, 74.55463, 274.01, 0.5859375, 74.68513, 274.01, -1.757813, 74.914, 274.01, -2.319131, 75.34219, 274.01, -4.101563, 76.31516, 274.01, -8.789063, 76.74514, 274.01, -11.13281, 78.39038, 274.01, -13.47656, 78.6124, 274.01, -15.82031, 79.19784, 274.01, -18.16406, 81.11024, 274.01, -20.50781, 82.03296, 274.01, -22.85156, 83.13991, 274.01, -25.19531, 83.70732, 274.01, -27.53906, 85.85863, 274.01, -29.88281, 87.03368, 274.01, -32.22656, 88.3274, 274.01, -34.57031, 90.53674, 274.01, -36.91406, 92.5602, 274.01, -39.25781, 93.55952, 274.01, -41.60156, 95.74537, 274.01, -43.94531, 98.26609, 274.01, -46.28906, 100.3701, 274.01, -47.02621, 101.1234, 274.01, -47.86611, 103.4672, 274.01, -49.83594, 105.8109, 274.01, -51.98182, 108.1547, 274.01, -53.06448, 110.4984, 274.01, -53.32031, 110.7675, 274.01, -54.53804, 112.8422, 274.01, -55.66406, 114.273, 274.01, -56.55722, 115.1859, 274.01, -57.13953, 117.5297, 274.01, -58.29264, 119.8734, 274.01, -59.26869, 122.2172, 274.01, -60.35156, 124.0119, 274.01, -60.84229, 124.5609, 274.01, -61.54484, 126.9047, 274.01, -61.71691, 129.2484, 274.01, -63.62281, 131.5922, 274.01, -63.81256, 133.9359, 274.01, -64.12511, 136.2797, 274.01, -64.84515, 138.6234, 274.01, -65.13599, 140.9672, 274.01, -65.33604, 143.3109, 274.01, -65.87358, 145.6547, 274.01, -66.10577, 147.9984, 274.01, -66.17618, 155.0297, 274.01, -66.09933, 162.0609, 274.01, -65.40382, 164.4047, 274.01, -65.24833, 166.7484, 274.01, -64.71442, 171.4359, 274.01, -63.88171, 173.7797, 274.01, -63.69299, 176.1234, 274.01, -61.79081, 178.4672, 274.01, -61.59269, 180.8109, 274.01, -61.19405, 183.1547, 274.01, -60.35156, 185.2055, 274.01, -59.08288, 187.8422, 274.01, -58.00781, 189.3499, 274.01, -57.25858, 190.1859, 274.01, -56.64558, 192.5297, 274.01, -55.29191, 194.8734, 274.01, -54.28698, 197.2172, 274.01, -52.28595, 199.5609, 274.01, -51.47569, 201.9047, 274.01, -48.63281, 204.6417, 274.01, -47.10181, 206.5922, 274.01, -44.64154, 208.9359, 274.01, -42.38504, 211.2797, 274.01, -39.25781, 214.4025, 274.01, -37.42723, 215.9672, 274.01, -34.57031, 218.9107, 274.01, -32.22656, 219.7277, 274.01, -29.88281, 221.6934, 274.01, -27.53906, 222.852, 274.01, -25.19531, 224.5168, 274.01, -22.85156, 225.9419, 274.01, -20.50781, 226.7359, 274.01, -18.16406, 228.3332, 274.01, -15.82031, 229.065, 274.01, -13.47656, 229.267, 274.01, -12.63854, 230.0297, 274.01, -11.13281, 231.9201, 274.01, -10.65505, 232.3734, 274.01, -11.13281, 232.7794, 274.01, -15.82031, 232.792, 274.01, -18.16406, 232.8902, 274.01, -36.91406, 232.9015, 274.01, -39.25781, 232.8902, 274.01, -50.97656, 232.9236, 274.01, -60.35156, 232.9126, 274.01, -67.38281, 232.8407, 274.01, -72.07031, 232.8642, 274.01, -79.10156, 232.8555, 274.01, -83.78906, 232.8788, 274.01, -95.50781, 232.8902, 274.01, -97.85156, 233.4886, 274.01, -100.1953, 233.647, 274.01, -102.5391, 232.9858, 274.01, -104.8828, 233.6969, 274.01, -109.5703, 233.722, 274.01, -125.9766, 233.7086, 274.01, -128.3203, 233.2849, 274.01, -130.6641, 233.702, 274.01, -135.3516, 233.727, 274.01, -149.4141, 233.7135, 274.01, -156.4453, 233.727, 274.01, -163.4766, 233.7119, 274.01, -168.1641, 233.7643, 274.01, -191.6016, 233.7809, 274.01, -210.3516, 233.7716, 274.01, -224.4141, 233.7998, 274.01, -233.7891, 233.7647, 274.01, -243.1641, 233.7785, 274.01, -247.8516, 233.7378, 274.01, -254.8828, 233.8578, 274.01, -257.2266, 235.2519, 274.01, -259.5703, 236.0817, 274.01, -260.7617, 237.0609, 274.01, -261.9141, 238.2262, 274.01, -262.8989, 239.4047, 274.01, -262.9743, 241.7484, 274.01, -262.5977, 244.0922, 274.01, -260.6675, 246.4359, 274.01, -259.6161, 248.7797, 274.01, -257.2266, 251.0035, 274.01, -255.0361, 253.4672, 274.01, -252.5391, 256.0995, 274.01, -251.2277, 258.1547, 274.01, -246.7444, 262.8422, 274.01, -243.1641, 266.3515, 274.01, -239.7411, 269.8734, 274.01, -238.4766, 270.9495, 274.01, -237.2269, 272.2172, 274.01, -236.1328, 273.5215, 274.01, -235.0934, 274.5609, 274.01, -233.7891, 275.6655, 274.01, -232.5319, 276.9047, 274.01, -231.4453, 278.1693, 274.01, -227.917, 281.5922, 274.01, -224.4141, 285.1802, 274.01, -222.0703, 287.4025, 274.01, -218.6841, 290.9672, 274.01, -217.3828, 291.9709, 274.01, -215.0391, 293.1788, 274.01, -212.6953, 294.5138, 274.01, -210.3516, 295.2614, 274.01, -209.8994, 295.6547, 274.01, -208.0078, 296.7083, 274.01, -203.3203, 296.9372, 274.01, -196.2891, 296.9317, 274.01, -193.9453, 296.8988, 274.01, -172.8516, 296.8482, 274.01, -161.1328, 296.843, 274.01, -137.6953, 296.8542, 274.01, -130.6641, 296.8378, 274.01, -107.2266, 296.8379, 274.01, -93.16406, 296.8208, 274.01, -74.41406, 296.838, 274.01, -65.03906, 296.8609, 274.01, -50.97656, 296.8556, 274.01, -46.28906, 296.9051, 274.01, -41.60156, 298.5331, 274.01, -39.25781, 298.5624, 274.01, -36.91406, 297.1455, 274.01, -34.57031, 297.0498, 274.01, -32.22656, 298.5589, 274.01, -25.19531, 298.5624, 274.01, -22.85156, 297.2842, 274.01, -20.50781, 298.5624, 274.01, -1.757813, 298.5624, 274.01, 0.5859375, 297.2104, 274.01, 2.929688, 298.5624, 274.01, 5.273438, 297.6946, 274.01, 7.617188, 298.5168, 274.01, 9.960938, 298.5512, 274.01, 12.30469, 296.937, 274.01, 14.64844, 298.5478, 274.01, 16.99219, 298.5478, 274.01, 19.33594, 297.0782, 274.01, 21.67969, 296.844, 274.01, 23.54531, 297.9984, 274.01, 24.02344, 298.4023, 274.01, 24.50156, 297.9984, 274.01, 26.36719, 296.844, 274.01, 38.08594, 296.8381, 274.01, 52.14844, 296.8033, 274.01, 59.17969, 296.8033, 274.01, 73.24219, 296.7682, 274.01, 99.02344, 296.7566, 274.01, 117.7734, 296.7216, 274.01, 129.4922, 296.7152, 274.01, 131.8359, 295.9083, 274.01, 134.1797, 295.5245, 274.01, 138.8672, 295.4763, 274.01, 155.2734, 295.4763, 274.01, 176.3672, 295.3861, 274.01, 190.4297, 295.3718, 274.01, 197.4609, 295.4763, 274.01, 202.1484, 295.4454, 274.01, 204.4922, 295.3438, 274.01, 206.8359, 295.0757, 274.01, 209.1797, 294.4124, 274.01, 211.5234, 292.3133, 274.01, 213.8672, 291.0809, 274.01, 216.2109, 289.6743, 274.01, 217.3081, 288.6234, 274.01, 219.3558, 286.2797, 274.01, 221.8608, 283.9359, 274.01, 225.5859, 280.045, 274.01, 227.9297, 277.8885, 274.01, 230.2734, 275.2857, 274.01, 232.6172, 273.2225, 274.01, 233.6225, 272.2172, 274.01, 234.9609, 270.5822, 274.01, 238.2254, 267.5297, 274.01, 240.3691, 265.1859, 274.01, 244.3359, 261.3326, 274.01, 246.6797, 258.8034, 274.01, 249.0234, 256.7196, 274.01, 251.3672, 254.0746, 274.01, 254.5313, 251.1234, 274.01, 255.333, 248.7797, 274.01, 257.3723, 246.4359, 274.01, 259.7201, 244.0922, 274.01, 260.106, 241.7484, 274.01, 261.6423, 239.4047, 274.01, 261.0804, 237.0609, 274.01, 259.3552, 234.7172, 274.01, 258.3984, 233.7696, 274.01, 256.0547, 232.8757, 274.01, 253.7109, 232.792, 274.01, 251.3672, 232.8161, 274.01, 246.6797, 232.6981, 274.01, 244.3359, 232.725, 274.01, 239.6484, 232.9137, 274.01, 234.9609, 232.8525, 274.01, 225.5859, 232.8757, 274.01, 209.1797, 232.8757, 274.01, 204.4922, 232.7537, 274.01, 195.1172, 232.7794, 274.01, 171.6797, 232.792, 274.01, 164.6484, 232.7666, 274.01, 152.9297, 232.7666, 274.01, 148.2422, 232.792, 274.01, 138.8672, 232.7406, 274.01 };
-    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
-    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
-    EXPECT_EQ(340u * 3, groundTruth.size());
-    CheckGroundTruth(structures, 5, 0, groundTruth);
-  }
-
-  {
-    double groundTruthRaw[] = { -18.16406, 233.0632, 298.01, -27.53906, 233.1042, 298.01, -29.88281, 233.0819, 298.01, -34.57031, 233.131, 298.01, -43.94531, 233.1221, 298.01, -50.97656, 233.1736, 298.01, -62.69531, 233.1397, 298.01, -65.03906, 232.8376, 298.01, -69.72656, 232.9839, 298.01, -79.10156, 233.0245, 298.01, -90.82031, 233.0382, 298.01, -93.16406, 233.0859, 298.01, -109.5703, 233.1132, 298.01, -111.9141, 233.1791, 298.01, -114.2578, 233.7139, 298.01, -118.9453, 233.9793, 298.01, -128.3203, 234.0284, 298.01, -130.6641, 233.9793, 298.01, -135.3516, 234.0591, 298.01, -137.6953, 234.0284, 298.01, -142.3828, 234.0855, 298.01, -144.7266, 234.0284, 298.01, -151.7578, 234.002, 298.01, -158.7891, 234.0263, 298.01, -163.4766, 233.9784, 298.01, -165.8203, 234.0072, 298.01, -168.1641, 234.1756, 298.01, -170.5078, 234.2214, 298.01, -179.8828, 234.1934, 298.01, -186.9141, 234.2721, 298.01, -189.2578, 234.2289, 298.01, -193.9453, 234.2431, 298.01, -198.6328, 234.1692, 298.01, -200.9766, 234.2326, 298.01, -205.6641, 234.1271, 298.01, -212.6953, 234.2224, 298.01, -215.0391, 234.1992, 298.01, -222.0703, 234.3115, 298.01, -224.4141, 234.2224, 298.01, -226.7578, 234.2502, 298.01, -233.7891, 234.0906, 298.01, -238.4766, 234.0329, 298.01, -243.1641, 234.0283, 298.01, -247.8516, 233.7949, 298.01, -250.1953, 233.8681, 298.01, -252.5391, 234.7626, 298.01, -254.3469, 237.0609, 298.01, -255.6034, 239.4047, 298.01, -254.5181, 241.7484, 298.01, -254.2274, 244.0922, 298.01, -254.181, 248.7797, 298.01, -253.9355, 251.1234, 298.01, -253.5926, 253.4672, 298.01, -252.7483, 255.8109, 298.01, -250.8092, 258.1547, 298.01, -248.713, 260.4984, 298.01, -246.263, 262.8422, 298.01, -244.1406, 265.1859, 298.01, -241.6671, 267.5297, 298.01, -239.4754, 269.8734, 298.01, -237.0156, 272.2172, 298.01, -233.7891, 275.382, 298.01, -231.4453, 277.8249, 298.01, -229.1016, 279.9981, 298.01, -226.7578, 282.5281, 298.01, -224.4141, 284.6784, 298.01, -222.0703, 287.2355, 298.01, -220.5414, 288.6234, 298.01, -218.2745, 290.9672, 298.01, -217.3828, 291.6508, 298.01, -212.6953, 294.5949, 298.01, -210.3516, 295.3142, 298.01, -208.0078, 296.4674, 298.01, -205.6641, 296.8852, 298.01, -203.3203, 297.1563, 298.01, -196.2891, 297.1488, 298.01, -193.9453, 297.0597, 298.01, -182.2266, 296.9529, 298.01, -168.1641, 296.8576, 298.01, -154.1016, 296.9249, 298.01, -149.4141, 296.8921, 298.01, -128.3203, 296.9228, 298.01, -121.2891, 296.8623, 298.01, -111.9141, 296.8549, 298.01, -107.2266, 296.8266, 298.01, -102.5391, 296.8731, 298.01, -95.50781, 296.8453, 298.01, -88.47656, 296.9218, 298.01, -83.78906, 296.9016, 298.01, -69.72656, 296.979, 298.01, -67.38281, 296.9514, 298.01, -65.03906, 297.2199, 298.01, -62.69531, 296.9622, 298.01, -55.66406, 296.9926, 298.01, -50.97656, 296.9467, 298.01, -48.63281, 297.3652, 298.01, -46.28906, 297.0439, 298.01, -43.94531, 297.2875, 298.01, -39.25781, 297.0121, 298.01, -34.57031, 297.1564, 298.01, -32.22656, 297.3612, 298.01, -29.88281, 297.4229, 298.01, -27.53906, 297.1687, 298.01, -25.19531, 297.4334, 298.01, -18.16406, 297.3612, 298.01, -15.82031, 297.4441, 298.01, -13.47656, 297.4125, 298.01, -11.13281, 297.2468, 298.01, -8.789063, 297.4125, 298.01, -6.445313, 297.373, 298.01, -4.101563, 297.4195, 298.01, -1.757813, 297.077, 298.01, 0.5859375, 297.4229, 298.01, 2.929688, 297.4125, 298.01, 5.273438, 296.9489, 298.01, 7.617188, 297.3168, 298.01, 9.960938, 296.9377, 298.01, 12.30469, 296.8998, 298.01, 14.64844, 297.1975, 298.01, 16.99219, 296.8579, 298.01, 28.71094, 296.878, 298.01, 40.42969, 296.8163, 298.01, 42.77344, 296.8369, 298.01, 49.80469, 296.734, 298.01, 59.17969, 296.6906, 298.01, 61.52344, 296.6365, 298.01, 68.55469, 296.6278, 298.01, 73.24219, 296.5777, 298.01, 75.58594, 296.6191, 298.01, 84.96094, 296.5284, 298.01, 96.67969, 296.5538, 298.01, 103.7109, 296.479, 298.01, 115.4297, 296.4259, 298.01, 122.4609, 296.3434, 298.01, 129.4922, 296.3495, 298.01, 131.8359, 295.9141, 298.01, 136.5234, 296.2256, 298.01, 138.8672, 295.833, 298.01, 143.5547, 295.9857, 298.01, 145.8984, 295.8791, 298.01, 152.9297, 295.833, 298.01, 164.6484, 295.6819, 298.01, 171.6797, 295.6819, 298.01, 181.0547, 295.5401, 298.01, 185.7422, 295.5742, 298.01, 192.7734, 295.557, 298.01, 197.4609, 295.8012, 298.01, 202.1484, 295.6819, 298.01, 204.4922, 295.3698, 298.01, 206.8359, 294.803, 298.01, 209.1797, 294.3656, 298.01, 211.5234, 292.4764, 298.01, 213.8672, 291.1765, 298.01, 216.2109, 289.5873, 298.01, 217.229, 288.6234, 298.01, 218.5547, 287.0752, 298.01, 221.7097, 283.9359, 298.01, 225.5859, 279.8775, 298.01, 227.9297, 277.5633, 298.01, 230.2734, 275.0808, 298.01, 233.1989, 272.2172, 298.01, 234.9609, 270.2887, 298.01, 237.7384, 267.5297, 298.01, 241.9922, 263.0843, 298.01, 244.3359, 260.7643, 298.01, 246.788, 258.1547, 298.01, 249.0234, 255.451, 298.01, 250.3651, 253.4672, 298.01, 251.5297, 251.1234, 298.01, 252.1947, 248.7797, 298.01, 252.4915, 246.4359, 298.01, 252.5755, 241.7484, 298.01, 252.8592, 239.4047, 298.01, 252.9236, 237.0609, 298.01, 252.2924, 234.7172, 298.01, 251.3672, 233.4697, 298.01, 249.0234, 232.882, 298.01, 244.3359, 232.9048, 298.01, 241.9922, 233.0145, 298.01, 232.6172, 232.9048, 298.01, 227.9297, 233.0007, 298.01, 216.2109, 233.0632, 298.01, 211.5234, 233.0537, 298.01, 206.8359, 232.9699, 298.01, 204.4922, 232.7322, 298.01, 199.8047, 232.7186, 298.01, 190.4297, 232.7719, 298.01, 183.3984, 232.7719, 298.01, 181.0547, 232.7322, 298.01, 174.0234, 232.7048, 298.01, 171.6797, 232.7322, 298.01, 166.9922, 232.6908, 298.01, 157.6172, 232.7975, 298.01, 155.2734, 232.7588, 298.01, 148.2422, 232.7875, 298.01, 143.5547, 232.7614, 298.01, 138.8672, 232.6477, 298.01, 124.8047, 232.6179, 298.01, 122.4609, 232.6477, 298.01, 113.0859, 232.6027, 298.01, 110.7422, 232.4552, 298.01, 108.3984, 232.2192, 298.01, 106.0547, 231.6764, 298.01, 103.7109, 231.8559, 298.01, 102.8237, 232.3734, 298.01, 101.3672, 232.9839, 298.01, 99.02344, 233.0951, 298.01, 87.30469, 233.0819, 298.01, 84.96094, 233.1091, 298.01, 80.27344, 233.0726, 298.01, 77.92969, 233.1132, 298.01, 70.89844, 233.1397, 298.01, 68.55469, 233.1132, 298.01, 52.14844, 233.131, 298.01, 45.11719, 233.0859, 298.01, 44.16726, 232.3734, 298.01, 42.77344, 231.0206, 298.01, 42.04498, 230.0297, 298.01, 42.77344, 229.2462, 298.01, 45.11719, 228.5664, 298.01, 47.46094, 227.0695, 298.01, 49.80469, 226.0552, 298.01, 52.14844, 224.5723, 298.01, 54.49219, 223.6857, 298.01, 56.83594, 221.8519, 298.01, 59.17969, 220.2086, 298.01, 61.52344, 218.8854, 298.01, 64.94469, 215.9672, 298.01, 66.21094, 215.0191, 298.01, 67.72036, 213.6234, 298.01, 68.55469, 212.6986, 298.01, 70.89844, 210.5055, 298.01, 74.53191, 206.5922, 298.01, 76.54903, 204.2484, 298.01, 78.26105, 201.9047, 298.01, 80.27344, 198.9262, 298.01, 82.61719, 195.2822, 298.01, 82.98087, 194.8734, 298.01, 84.96094, 190.9255, 298.01, 85.43701, 190.1859, 298.01, 86.33423, 187.8422, 298.01, 87.78722, 185.4984, 298.01, 88.60233, 183.1547, 298.01, 89.10253, 180.8109, 298.01, 90.17504, 178.4672, 298.01, 90.88959, 176.1234, 298.01, 91.43783, 173.7797, 298.01, 92.39601, 171.4359, 298.01, 92.95762, 169.0922, 298.01, 93.55695, 159.7172, 298.01, 93.65527, 157.3734, 298.01, 93.67542, 152.6859, 298.01, 93.61213, 150.3422, 298.01, 93.22542, 143.3109, 298.01, 93.06345, 140.9672, 298.01, 92.77563, 138.6234, 298.01, 91.21714, 133.9359, 298.01, 90.67235, 131.5922, 298.01, 89.88776, 129.2484, 298.01, 88.8737, 126.9047, 298.01, 88.44087, 124.5609, 298.01, 86.09712, 119.8734, 298.01, 85.05786, 117.5297, 298.01, 83.87151, 115.1859, 298.01, 82.22388, 112.8422, 298.01, 81.09117, 110.4984, 298.01, 77.92969, 106.4052, 298.01, 77.3894, 105.8109, 298.01, 75.94332, 103.4672, 298.01, 71.71799, 98.77969, 298.01, 68.55469, 95.65721, 298.01, 63.86719, 91.54878, 298.01, 61.52344, 90.1121, 298.01, 59.17969, 88.15762, 298.01, 56.83594, 86.51503, 298.01, 54.49219, 85.42721, 298.01, 52.14844, 83.64907, 298.01, 49.80469, 82.89023, 298.01, 47.46094, 81.50237, 298.01, 45.11719, 80.62591, 298.01, 42.77344, 79.18153, 298.01, 40.42969, 78.7203, 298.01, 38.08594, 78.1349, 298.01, 35.74219, 77.11755, 298.01, 33.39844, 76.51949, 298.01, 31.05469, 76.07934, 298.01, 26.36719, 74.67744, 298.01, 24.02344, 74.42056, 298.01, 14.64844, 74.07317, 298.01, 9.960938, 74.11538, 298.01, 2.929688, 74.40105, 298.01, 0.5859375, 74.67952, 298.01, -1.757813, 75.31406, 298.01, -4.101563, 76.07065, 298.01, -6.445313, 76.49051, 298.01, -8.789063, 77.17276, 298.01, -11.13281, 78.20097, 298.01, -15.82031, 79.31967, 298.01, -18.16406, 80.76948, 298.01, -20.50781, 81.64266, 298.01, -22.85156, 83.0305, 298.01, -25.19531, 83.7937, 298.01, -27.53906, 85.63515, 298.01, -29.88281, 86.7363, 298.01, -32.22656, 88.36089, 298.01, -34.57031, 90.3302, 298.01, -36.56719, 91.74844, 298.01, -41.60156, 95.93605, 298.01, -46.58845, 101.1234, 298.01, -50.17995, 105.8109, 298.01, -52.10386, 108.1547, 298.01, -53.63992, 110.4984, 298.01, -54.95532, 112.8422, 298.01, -56.64794, 115.1859, 298.01, -57.4403, 117.5297, 298.01, -58.91927, 119.8734, 298.01, -59.78655, 122.2172, 298.01, -61.11754, 124.5609, 298.01, -61.58921, 126.9047, 298.01, -62.38012, 129.2484, 298.01, -63.49118, 131.5922, 298.01, -64.02599, 133.9359, 298.01, -64.3932, 136.2797, 298.01, -65.11897, 138.6234, 298.01, -65.64544, 140.9672, 298.01, -66.23938, 147.9984, 298.01, -66.46289, 152.6859, 298.01, -66.48911, 155.0297, 298.01, -66.34437, 159.7172, 298.01, -65.99894, 164.4047, 298.01, -65.49149, 169.0922, 298.01, -64.6875, 171.4359, 298.01, -63.7739, 176.1234, 298.01, -62.9398, 178.4672, 298.01, -61.86011, 180.8109, 298.01, -61.33423, 183.1547, 298.01, -60.43332, 185.4984, 298.01, -58.00781, 190.0632, 298.01, -56.85406, 192.5297, 298.01, -55.66406, 194.7283, 298.01, -54.11692, 197.2172, 298.01, -50.97656, 201.8369, 298.01, -47.36435, 206.5922, 298.01, -45.04395, 208.9359, 298.01, -42.83026, 211.2797, 298.01, -39.25781, 214.7435, 298.01, -34.57031, 218.4974, 298.01, -32.22656, 219.9595, 298.01, -28.02053, 222.9984, 298.01, -27.53906, 223.4238, 298.01, -25.19531, 224.4187, 298.01, -22.85156, 225.8252, 298.01, -20.50781, 226.9067, 298.01, -18.16406, 228.4286, 298.01, -15.82031, 229.1235, 298.01, -14.9447, 230.0297, 298.01, -15.82031, 231.3969, 298.01, -16.94484, 232.3734, 298.01 };
-    size_t n = sizeof(groundTruthRaw) / sizeof(groundTruthRaw[0]); 
-    std::vector<double> groundTruth(groundTruthRaw, groundTruthRaw+n);
-    EXPECT_EQ(358u * 3, groundTruth.size());
-    CheckGroundTruth(structures, 5, 8, groundTruth);
-  }
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-#if 0
-
-TEST(StructureSet, ReadFromJsonAndCompute1)
-{
-  DicomStructureSet2 structureSet;
-
-  OrthancPlugins::FullOrthancDataset dicom(GetTestJson());
-  //loader.content_.reset(new DicomStructureSet(dicom));
-  structureSet.Clear();
-
-  structureSet.FillStructuresFromDataset(dicom);
-
-  structureSet.ComputeDependentProperties();
-}
-
-TEST(StructureSet, ReadFromJsonAndCompute2)
-{
-  DicomStructureSet2 structureSet;
-
-  OrthancPlugins::FullOrthancDataset dicom(GetTestJson());
-  //loader.content_.reset(new DicomStructureSet(dicom));
-  structureSet.Clear();
-
-  structureSet.SetContents(dicom);
-}
-#endif
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-static bool CutStructureWithPlane(
-  std::vector< std::pair<Point2D, Point2D> >& segments,
-  const DicomStructure2& structure,
-  const double originX, const double originY, const double originZ,
-  const double axisX_X, const double axisX_Y, const double axisX_Z,
-  const double axisY_X, const double axisY_Y, const double axisY_Z
-)
-{
-  // create an AXIAL cutting plane, too far away from the volume 
-  // (> sliceThickness/2)
-  Point3D origin, axisX, axisY;
-  LinearAlgebra::AssignVector(origin, originX, originY, originZ);
-  LinearAlgebra::AssignVector(axisX, axisX_X, axisX_Y, axisX_Z);
-  LinearAlgebra::AssignVector(axisY, axisY_X, axisY_Y, axisY_Z);
-  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
-
-  // compute intersection
-  bool ok = structure.Project(segments, cuttingPlane);
-  return ok;
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-static double pointsCoord1[] = { 2, 2, 3,  3,  6,  8, 8, 7, 8, 8, 6 };
-static double pointsCoord2[] = { 2, 6, 8, 10, 12, 10, 8, 6, 4, 2, 4 };
-static const size_t pointsCoord1Count = STONE_ARRAY_SIZE(pointsCoord1);
-static const size_t pointsCoord2Count = STONE_ARRAY_SIZE(pointsCoord2);
-const size_t POLYGON_POINT_COUNT = pointsCoord1Count;
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-static void CreateBasicStructure(DicomStructure2& structure)
-{
-  // see https://www.dropbox.com/s/1o1vg53hsbvx4cc/test-rtstruct-polygons.jpg?dl=0
-  EXPECT_EQ(pointsCoord1Count, pointsCoord2Count);
-  EXPECT_EQ(11, pointsCoord2Count);
-
-  for (size_t slice = 0; slice < 3; ++slice)
-  {
-    DicomStructurePolygon2 polygon("Oblomptu", "CLOSED_PLANAR");
-    for (size_t ip = 0; ip < pointsCoord1Count; ++ip)
-    {
-      Point3D pt;
-      double pt0 = pointsCoord1[ip];
-      double pt1 = pointsCoord2[ip];
-      double pt2 = 4 * (static_cast<double>(slice) - 1); // -4, 0, 4 
-      LinearAlgebra::AssignVector(pt, pt0, pt1, pt2);
-      polygon.AddPoint(pt);
-    }
-    structure.AddPolygon(polygon);
-  }
-  structure.ComputeDependentProperties();
-}
-
-
-TEST(StructureSet, CutAxialOutsideTop)
-{
-  DicomStructure2 structure;
-  CreateBasicStructure(structure);
-  std::vector< std::pair<Point2D, Point2D> > segments;
-
-  // create an AXIAL cutting plane, too far away from the volume 
-  // (> sliceThickness/2)
-  bool ok = CutStructureWithPlane(segments, structure,
-    0, 0, 7,
-    1, 0, 0,
-    0, 1, 0);
-  EXPECT_FALSE(ok);
-}
-
-
-TEST(StructureSet, CutAxialOutsideBottom)
-{
-  DicomStructure2 structure;
-  CreateBasicStructure(structure);
-  std::vector< std::pair<Point2D, Point2D> > segments;
-
-  // create an AXIAL cutting plane, too far away from the volume 
-  // (> sliceThickness/2)
-  bool ok = CutStructureWithPlane(segments, structure,
-    0, 0, -6.66,
-    1, 0, 0,
-    0, 1, 0);
-  EXPECT_FALSE(ok);
-}
-
-TEST(StructureSet, CutAxialInsideClose)
-{
-  DicomStructure2 structure;
-  CreateBasicStructure(structure);
-  std::vector< std::pair<Point2D, Point2D> > segments;
-
-  // create an AXIAL cutting plane in the volume
-  bool ok = CutStructureWithPlane(segments, structure,
-    0, 0, 1.1,
-    1, 0, 0,
-    0, 1, 0);
-  EXPECT_TRUE(ok);
-  EXPECT_EQ(POLYGON_POINT_COUNT, segments.size());
-
-  for (size_t i = 0; i < segments.size(); ++i)
-  {
-    EXPECT_LT(i, POLYGON_POINT_COUNT);
-    EXPECT_LT(i, POLYGON_POINT_COUNT);
-
-    const Point2D& pt = segments[i].first;
-
-    // ...should be at the same location as the 3D coords since the plane 
-    // is rooted at 0,0,0 with normal 0,0,1
-    EXPECT_NEAR(pt.x, pointsCoord1[i], DELTA_MAX);
-    EXPECT_NEAR(pt.y, pointsCoord2[i], DELTA_MAX);
-  }
-}
-
-
-TEST(StructureSet, CutAxialInsideFar)
-{
-  DicomStructure2 structure;
-  CreateBasicStructure(structure);
-  std::vector< std::pair<Point2D, Point2D> > segments;
-
-  // create an AXIAL cutting plane
-  Point3D origin, axisX, axisY;
-  LinearAlgebra::AssignVector(origin, 0, 0, 0);
-  LinearAlgebra::AssignVector(axisX, 1, 0, 0);
-  LinearAlgebra::AssignVector(axisY, 0, 1, 0);
-  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
-
-  // compute intersection
-  bool ok = structure.Project(segments, cuttingPlane);
-  EXPECT_TRUE(ok);
-
-  EXPECT_EQ(11, segments.size());
-  for (size_t i = 0; i < segments.size(); ++i)
-  {
-    EXPECT_LT(i, pointsCoord1Count);
-    EXPECT_LT(i, pointsCoord2Count);
-
-    // the 2D points of the projected polygon
-    const Point2D& pt = segments[i].first;
-
-    // ...should be at the same location as the 3D coords since the plane 
-    // is rooted at 0,0,0 with normal 0,0,1
-    EXPECT_NEAR(pt.x, pointsCoord1[i], DELTA_MAX);
-    EXPECT_NEAR(pt.y, pointsCoord2[i], DELTA_MAX);
-  }
-}
-
-TEST(StructureSet, CutCoronalOutsideClose)
-{
-  DicomStructure2 structure;
-  CreateBasicStructure(structure);
-  std::vector< std::pair<Point2D, Point2D> > segments;
-
-  // create an X,Z cutting plane, outside of the volume
-  Point3D origin, axisX, axisY;
-  LinearAlgebra::AssignVector(origin, 0, 0, 0);
-  LinearAlgebra::AssignVector(axisX, 1, 0, 0);
-  LinearAlgebra::AssignVector(axisY, 0, 0, 1);
-  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
-
-  // compute intersection
-  bool ok = structure.Project(segments, cuttingPlane);
-  EXPECT_FALSE(ok);
-}
-
-TEST(StructureSet, CutCoronalInsideClose1DTest)
-{
-  DicomStructure2 structure;
-  CreateBasicStructure(structure);
-
-  // create an X,Z cutting plane, outside of the volume
-  Point3D origin, axisX, axisY;
-  LinearAlgebra::AssignVector(origin, 0, 3, 0);
-  LinearAlgebra::AssignVector(axisX, 1, 0, 0);
-  LinearAlgebra::AssignVector(axisY, 0, 0, 1);
-  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
-
-  ASSERT_EQ(3u, structure.GetPolygons().size());
-
-  for (int i = 0; i < 3; ++i)
-  {
-    double polygonZ = static_cast<double>(i - 1) * 4.0;
-
-    const DicomStructurePolygon2& topSlab = structure.GetPolygons()[i];
-
-    // let's compute the intersection between the polygon and the plane
-    // intersections are in plane coords
-    std::vector<Point2D> intersects;
-    topSlab.ProjectOnConstantPlane(intersects, cuttingPlane);
-
-    ASSERT_EQ(4u, intersects.size());
-
-    EXPECT_NEAR(2, intersects[0].x, DELTA_MAX);
-    EXPECT_NEAR(4, intersects[1].x, DELTA_MAX);
-    EXPECT_NEAR(7, intersects[2].x, DELTA_MAX);
-    EXPECT_NEAR(8, intersects[3].x, DELTA_MAX);
-
-    for (size_t i = 0; i < 4u; ++i)
-    {
-      EXPECT_NEAR(polygonZ, intersects[i].y, DELTA_MAX);
-    }
-  }
-}
-
-TEST(StructureSet, CutCoronalInsideClose)
-{
-  DicomStructure2 structure;
-  CreateBasicStructure(structure);
-  std::vector< std::pair<Point2D, Point2D> > segments;
-
-  // create an X,Z cutting plane, outside of the volume
-  Point3D origin, axisX, axisY;
-  LinearAlgebra::AssignVector(origin, 0, 3, 0);
-  LinearAlgebra::AssignVector(axisX, 1, 0, 0);
-  LinearAlgebra::AssignVector(axisY, 0, 0, 1);
-  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
-
-  // compute intersection
-  ASSERT_TRUE(structure.Project(segments, cuttingPlane));
-  EXPECT_EQ(24, segments.size());
-
-  size_t numberOfVeryShortSegments = 0;
-  for (size_t iSegment = 0; iSegment < segments.size(); ++iSegment)
-  {
-    // count the NON vertical very short segments 
-    if (LinearAlgebra::IsNear(segments[iSegment].first.x, segments[iSegment].second.x))
-    {
-      if (LinearAlgebra::IsNear(segments[iSegment].first.y, segments[iSegment].second.y))
-      {
-        numberOfVeryShortSegments++;
-      }
-    }
-  }
-  EXPECT_EQ(8, numberOfVeryShortSegments);
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-
-TEST(DisjointDataSet, BasicTest)
-{
-  const size_t ITEM_COUNT = 10;
-  DisjointDataSet ds(ITEM_COUNT);
-
-  for (size_t i = 0; i < ITEM_COUNT; ++i)
-  {
-    EXPECT_EQ(i, ds.Find(i));
-  }
-
-  ds.Union(0, 4);
-  EXPECT_EQ(0u, ds.Find(0));
-  EXPECT_EQ(0u, ds.Find(4));
-
-  ds.Union(4, 6);
-  ds.Union(8, 9);
-  ds.Union(0, 8);
-
-  for (size_t i = 0; i < ITEM_COUNT; ++i)
-  {
-    size_t parent = ds.Find(i);
-    EXPECT_TRUE(0 == parent || 1 == parent || 2 == parent || 3 == parent || 5 == parent || 7 == parent);
-  }
-
-  ds.Union(1, 2);
-  ds.Union(1, 7);
-  for (size_t i = 0; i < ITEM_COUNT; ++i)
-  {
-    size_t parent = ds.Find(i);
-    EXPECT_TRUE(0 == parent || 1 == parent || 3 == parent || 5 == parent);
-  }
-
-  ds.Union(3, 5);
-  for (size_t i = 0; i < ITEM_COUNT; ++i)
-  {
-    size_t parent = ds.Find(i);
-    EXPECT_TRUE(0 == parent || 1 == parent || 3 == parent);
-  }
-
-  EXPECT_EQ(ds.Find(0), ds.Find(0));
-  EXPECT_EQ(ds.Find(0), ds.Find(4));
-  EXPECT_EQ(ds.Find(0), ds.Find(6));
-  EXPECT_EQ(ds.Find(0), ds.Find(8));
-  EXPECT_EQ(ds.Find(0), ds.Find(8));
-
-  EXPECT_EQ(ds.Find(1), ds.Find(7));
-  EXPECT_EQ(ds.Find(2), ds.Find(1));
-  EXPECT_EQ(ds.Find(7), ds.Find(2));
-
-  EXPECT_EQ(ds.Find(3), ds.Find(5));
-  EXPECT_EQ(ds.Find(5), ds.Find(3));
-
-  ds.Union(0, 1);
-  ds.Union(3, 1);
-  for (size_t i = 0; i < ITEM_COUNT; ++i)
-  {
-    EXPECT_EQ(ds.Find(0), ds.Find(i));
-  }
-}
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-TEST(StructureSet, CutSagittalInsideClose)
-{
-  DicomStructure2 structure;
-  CreateBasicStructure(structure);
-  std::vector< std::pair<Point2D, Point2D> > segments;
-
-  // create an X,Z cutting plane, inside of the volume
-  Point3D origin, axisX, axisY;
-  LinearAlgebra::AssignVector(origin, 0, 3, 0);
-  LinearAlgebra::AssignVector(axisX, 1, 0, 0);
-  LinearAlgebra::AssignVector(axisY, 0, 0, 1);
-  CoordinateSystem3D cuttingPlane(origin, axisX, axisY);
-
-  // compute intersection
-  bool ok = structure.Project(segments, cuttingPlane);
-  EXPECT_TRUE(ok);
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-
-static size_t ConvertListOfSlabsToSegments_Add(RtStructRectanglesInSlab& rectangles, int row, double xmin, double xmax)
-{
-  double ymin = static_cast<double>(row) * 5.0;
-  double ymax = static_cast<double>(row + 1) * 5.0;
-
-  RtStructRectangleInSlab rectangle;
-  rectangle.xmin = xmin;
-  rectangle.xmax = xmax;
-  rectangle.ymin = ymin;
-  rectangle.ymax = ymax;
-
-  rectangles.push_back(rectangle);
-  
-  return 1u;
-}
-
-static size_t FillTestRectangleList(std::vector< RtStructRectanglesInSlab >& rectanglesForEachSlab)
-{
-  // ConvertListOfSlabsToSegments
-  size_t rectCount = 0;
-
-  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 0, 5, 31);
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 0, 36, 50);
-
-  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 1, 20, 45);
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 1, 52, 70);
-
-  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 2, 0, 32);
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 2, 35, 44);
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 2, 60, 75);
-
-  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 3, 10, 41);
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 3, 46, 80);
-
-  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 4, 34, 42);
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 4, 90, 96);
-
-  rectanglesForEachSlab.push_back(RtStructRectanglesInSlab());
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 5, 1, 33);
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 5, 40, 43);
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 5, 51, 61);
-  rectCount += ConvertListOfSlabsToSegments_Add(rectanglesForEachSlab.back(), 5, 76, 95);
-
-  return rectCount;
-}
-
-/*
-void AddSlabBoundaries(
-  std::vector<std::pair<double, RectangleBoundaryKind> >& boundaries,
-  const std::vector<RtStructRectanglesInSlab>& slabCuts, size_t iSlab)
-*/
-
-
-/*
-void ProcessBoundaryList(
-  std::vector< std::pair<Point2D, Point2D> >& segments,
-  const std::vector<std::pair<double, RectangleBoundaryKind> >& boundaries,
-  double y)
-*/
-
-
-TEST(StructureSet, ProcessBoundaryList_Empty)
-{
-  std::vector< RtStructRectanglesInSlab > slabCuts;
-  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-
-  boundaries.clear();
-  EXPECT_NO_THROW(AddSlabBoundaries(boundaries, slabCuts, 0));
-  ASSERT_EQ(0u, boundaries.size());
-}
-
-TEST(StructureSet, ProcessBoundaryListTopRow)
-{
-  std::vector< RtStructRectanglesInSlab > slabCuts;
-  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-  FillTestRectangleList(slabCuts);
-
-  boundaries.clear();
-  AddSlabBoundaries(boundaries, slabCuts, 0);
-
-  {
-    size_t i = 0;
-    ASSERT_EQ(4u, boundaries.size());
-
-    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
-    ASSERT_NEAR(5, boundaries[i].first, DELTA_MAX);
-    i++;
-
-    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
-    ASSERT_NEAR(31, boundaries[i].first, DELTA_MAX);
-    i++;
-
-    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
-    ASSERT_NEAR(36, boundaries[i].first, DELTA_MAX);
-    i++;
-
-    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
-    ASSERT_NEAR(50, boundaries[i].first, DELTA_MAX);
-    i++;
-  }
-}
-
-TEST(StructureSet, ProcessBoundaryListRows_0_and_1)
-{
-  std::vector< RtStructRectanglesInSlab > slabCuts;
-  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-  FillTestRectangleList(slabCuts);
-
-  boundaries.clear();
-  AddSlabBoundaries(boundaries, slabCuts, 0);
-  AddSlabBoundaries(boundaries, slabCuts, 1);
-
-  ASSERT_EQ(8u, boundaries.size());
-
-  {
-    size_t i = 0;
-
-    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
-    ASSERT_NEAR(5, boundaries[i].first, DELTA_MAX);
-    i++;
-
-    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
-    ASSERT_NEAR(20, boundaries[i].first, DELTA_MAX);
-    i++;
-
-    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
-    ASSERT_NEAR(31, boundaries[i].first, DELTA_MAX);
-    i++;
-
-    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
-    ASSERT_NEAR(36, boundaries[i].first, DELTA_MAX);
-    i++;
-
-    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
-    ASSERT_NEAR(45, boundaries[i].first, DELTA_MAX);
-    i++;
-
-    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
-    ASSERT_NEAR(50, boundaries[i].first, DELTA_MAX);
-    i++;
-
-    ASSERT_EQ(RectangleBoundaryKind_Start, boundaries[i].second);
-    ASSERT_NEAR(52, boundaries[i].first, DELTA_MAX);
-    i++;
-
-    ASSERT_EQ(RectangleBoundaryKind_End, boundaries[i].second);
-    ASSERT_NEAR(70, boundaries[i].first, DELTA_MAX);
-    i++;
-  }
-}
-
-TEST(StructureSet, ConvertListOfSlabsToSegments_EmptyBoundaries)
-{
-  std::vector< RtStructRectanglesInSlab > slabCuts;
-  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-  FillTestRectangleList(slabCuts);
-  boundaries.clear();
-  std::vector< std::pair<Point2D, Point2D> > segments;
-  ASSERT_NO_THROW(ProcessBoundaryList(segments, boundaries, 42.0));
-  ASSERT_EQ(0u, segments.size());
-}
-
-TEST(StructureSet, ConvertListOfSlabsToSegments_TopRow_Horizontal)
-{
-  std::vector< RtStructRectanglesInSlab > slabCuts;
-  FillTestRectangleList(slabCuts);
-
-  // top row
-  {
-    std::vector< std::pair<Point2D, Point2D> > segments;
-    std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-    AddSlabBoundaries(boundaries, slabCuts, 0);
-    ProcessBoundaryList(segments, boundaries, slabCuts[0][0].ymin);
-
-    ASSERT_EQ(2u, segments.size());
-
-    ASSERT_NEAR( 5.0, segments[0].first.x, DELTA_MAX);
-    ASSERT_NEAR(31.0, segments[0].second.x, DELTA_MAX);
-    ASSERT_NEAR( 0.0, segments[0].first.y, DELTA_MAX);
-    ASSERT_NEAR( 0.0, segments[0].second.y, DELTA_MAX);
-
-    ASSERT_NEAR(36.0, segments[1].first.x, DELTA_MAX);
-    ASSERT_NEAR(50.0, segments[1].second.x, DELTA_MAX);
-    ASSERT_NEAR( 0.0, segments[1].first.y, DELTA_MAX);
-    ASSERT_NEAR( 0.0, segments[1].second.y, DELTA_MAX);
-  }
-}
-
-TEST(StructureSet, ConvertListOfSlabsToSegments_All_Horizontal)
-{
-  std::vector< RtStructRectanglesInSlab > slabCuts;
-  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-  FillTestRectangleList(slabCuts);
-
-  // top row
-  {
-    std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-    AddSlabBoundaries(boundaries, slabCuts, 0);
-    std::vector< std::pair<Point2D, Point2D> > segments;
-    ProcessBoundaryList(segments, boundaries, slabCuts[0][0].ymin);
-  }
-
-  // mids
-  {
-    std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-    AddSlabBoundaries(boundaries, slabCuts, 0);
-    AddSlabBoundaries(boundaries, slabCuts, 1);
-    std::vector< std::pair<Point2D, Point2D> > segments;
-    ProcessBoundaryList(segments, boundaries, slabCuts[0][0].ymax);
-
-    ASSERT_EQ(4u, segments.size());
-
-    ASSERT_NEAR(05.0, segments[0].first.x, DELTA_MAX);
-    ASSERT_NEAR(20.0, segments[0].second.x, DELTA_MAX);
-    ASSERT_NEAR(05.0, segments[0].first.y, DELTA_MAX);
-    ASSERT_NEAR(05.0, segments[0].second.y, DELTA_MAX);
-
-    ASSERT_NEAR(31.0, segments[1].first.x, DELTA_MAX);
-    ASSERT_NEAR(36.0, segments[1].second.x, DELTA_MAX);
-    ASSERT_NEAR(05.0, segments[1].first.y, DELTA_MAX);
-    ASSERT_NEAR(05.0, segments[1].second.y, DELTA_MAX);
-
-    ASSERT_NEAR(45.0, segments[2].first.x, DELTA_MAX);
-    ASSERT_NEAR(50.0, segments[2].second.x, DELTA_MAX);
-    ASSERT_NEAR(05.0, segments[2].first.y, DELTA_MAX);
-    ASSERT_NEAR(05.0, segments[2].second.y, DELTA_MAX);
-
-    ASSERT_NEAR(52.0, segments[3].first.x, DELTA_MAX);
-    ASSERT_NEAR(70.0, segments[3].second.x, DELTA_MAX);
-    ASSERT_NEAR(05.0, segments[3].first.y, DELTA_MAX);
-    ASSERT_NEAR(05.0, segments[3].second.y, DELTA_MAX);
-  }
-
-  // bottom row
-  {
-    std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-    AddSlabBoundaries(boundaries, slabCuts, 1);
-    std::vector< std::pair<Point2D, Point2D> > segments;
-    ProcessBoundaryList(segments, boundaries, slabCuts[1][0].ymax);
-
-    ASSERT_EQ(2u, segments.size());
-
-    ASSERT_NEAR(20.0, segments[0].first.x, DELTA_MAX);
-    ASSERT_NEAR(45.0, segments[0].second.x, DELTA_MAX);
-    ASSERT_NEAR(10.0, segments[0].first.y, DELTA_MAX);
-    ASSERT_NEAR(10.0, segments[0].second.y, DELTA_MAX);
-
-    ASSERT_NEAR(52.0, segments[1].first.x, DELTA_MAX);
-    ASSERT_NEAR(70.0, segments[1].second.x, DELTA_MAX);
-    ASSERT_NEAR(10.0, segments[1].first.y, DELTA_MAX);
-    ASSERT_NEAR(10.0, segments[1].second.y, DELTA_MAX);
-  }
-
-}
-
-TEST(StructureSet, ConvertListOfSlabsToSegments_Complete_Empty)
-{
-  std::vector< RtStructRectanglesInSlab > slabCuts;
-  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-
-  std::vector< std::pair<Point2D, Point2D> > segments;
-
-  ASSERT_NO_THROW(ConvertListOfSlabsToSegments(segments, slabCuts, 0));
-  ASSERT_EQ(0u, segments.size());
-}
-
-TEST(StructureSet, ConvertListOfSlabsToSegments_Complete_Regular)
-{
-  std::vector< RtStructRectanglesInSlab > slabCuts;
-  std::vector<std::pair<double, RectangleBoundaryKind> > boundaries;
-  size_t totalRectCount = FillTestRectangleList(slabCuts);
-
-  std::vector< std::pair<Point2D, Point2D> > segments;
-
-  ASSERT_NO_THROW(ConvertListOfSlabsToSegments(segments, slabCuts, totalRectCount));
-  ASSERT_EQ(60u, segments.size());
-
-  size_t i = 0;
-
-  ASSERT_NEAR(segments[i].first.x, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 31.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 31.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 36.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 36.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 50.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 50.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 45.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 45.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 52.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 52.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 70.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 70.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 0.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 0.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 32.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 32.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 35.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 35.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 44.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 44.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 60.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 60.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 75.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 75.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 41.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 41.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 46.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 46.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 80.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 80.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 34.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 34.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 42.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 42.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 90.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 90.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 96.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 96.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 1.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 1.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 33.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 33.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 40.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 40.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 43.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 43.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 51.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 51.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 61.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 61.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 76.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 76.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 95.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 95.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 31.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 0.0000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 36.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 0.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 50.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 0.0000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 31.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 36.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 45.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 50.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 52.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 5.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 70.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 5.0000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 0.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 32.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 35.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 44.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 45.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 52.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 60.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 70.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 75.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 10.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 0.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 32.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 35.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 41.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 44.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 46.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 60.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 75.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 15.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 80.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 15.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 10.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 34.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 41.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 42.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 46.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 80.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 90.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 20.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 96.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 20.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 1.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 33.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 34.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 40.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 42.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 43.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 51.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 61.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 76.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 90.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 95.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 25.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 96.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 25.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 1.0000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 30.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 33.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 40.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 30.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 43.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 51.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 30.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 61.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-  i++;
-  ASSERT_NEAR(segments[i].first.x, 76.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].first.y, 30.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.x, 95.000000000000000, DELTA_MAX);
-  ASSERT_NEAR(segments[i].second.y, 30.000000000000000, DELTA_MAX);
-}
-
-#ifdef BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-TEST(StructureSet, ReadFromJsonPart2)
-{
-  DicomStructureSet2 structureSet;
-  std::string jsonText;
-
-  SystemToolbox::ReadFile(jsonText, "72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661.json");
-
-  OrthancPlugins::FullOrthancDataset dicom(jsonText);
-  //loader.content_.reset(new DicomStructureSet(dicom));
-  structureSet.Clear();
-
-  structureSet.FillStructuresFromDataset(dicom);
-  structureSet.ComputeDependentProperties();
-
-  const std::vector<DicomStructure2>& structures = structureSet.structures_;
-}
-
-#endif 
-// BGO_ENABLE_DICOMSTRUCTURESETLOADER2
-
-namespace
-{
-  void Initialize(const char* orthancApiUrl, OrthancStone::ILoadersContext& loadersContext)
-  {
-    Orthanc::WebServiceParameters p;
-
-    OrthancStone::GenericLoadersContext& typedLoadersContext =
-      dynamic_cast<OrthancStone::GenericLoadersContext&>(loadersContext);
-    // Default is http://localhost:8042
-    // Here's how you may change it
-    p.SetUrl(orthancApiUrl);
-    p.SetCredentials("orthanc", "orthanc");
-    typedLoadersContext.SetOrthancParameters(p);
-
-    typedLoadersContext.StartOracle();
-  }
-
-  void Exitialize(OrthancStone::ILoadersContext& loadersContext)
-  {
-    OrthancStone::GenericLoadersContext& typedLoadersContext =
-      dynamic_cast<OrthancStone::GenericLoadersContext&>(loadersContext);
-
-    typedLoadersContext.StopOracle();
-  }
-
-
-#if 0
-  class TestObserver : public ObserverBase<TestObserver>
-  {
-  public:
-    TestObserver() {};
-
-    virtual void Handle
-
-  };
-#endif
-
-}
-
-TEST(StructureSet, DISABLED_StructureSetLoader_injection_feature_2020_05_10)
-{
-  namespace pt = boost::posix_time;
-
-  std::unique_ptr<OrthancStone::ILoadersContext> loadersContext(new OrthancStone::GenericLoadersContext(1,4,1));
-  Initialize("http://localhost:8042/", *loadersContext);
-
-  boost::shared_ptr<DicomStructureSetLoader> loader = DicomStructureSetLoader::Create(*loadersContext);
-
-  // replace with Orthanc ID of an uploaded RTSTRUCT instance!
-  loader->LoadInstanceFullVisibility("72c773ac-5059f2c4-2e6a9120-4fd4bca1-45701661");
-
-  bool bContinue(true);
-
-  pt::ptime initialTime = pt::second_clock::local_time();
-
-  while (bContinue)
-  {
-    bContinue = !loader->AreStructuresReady();
-    boost::this_thread::sleep_for(boost::chrono::milliseconds(1000));
-
-    {
-      pt::ptime nowTime = pt::second_clock::local_time();
-      pt::time_duration diff = nowTime - initialTime;
-      double seconds = static_cast<double>(diff.total_milliseconds()) * 0.001;
-      std::cout << seconds << " seconds elapsed...\n";
-      if (seconds > 30)
-      {
-        std::cout << "More than 30 seconds elapsed... Aborting test :(\n";
-        //GTEST_FATAL_FAILURE_("More than 30 seconds elapsed... Aborting test :(");
-        //bContinue = false;
-      }
-    }
-  }
-}
-
-class SliceProcessor :
-  public OrthancStone::OrthancSeriesVolumeProgressiveLoader::ISlicePostProcessor,
-  public OrthancStone::DicomStructureSetLoader::IInstanceLookupHandler
-{
-public:
-  SliceProcessor(OrthancStone::DicomStructureSetLoader& structLoader) : structLoader_(structLoader)
-  {
-  }
-
-  virtual void ProcessCTDicomSlice(const Orthanc::DicomMap& instance) ORTHANC_OVERRIDE
-  {
-    std::string sopInstanceUid;
-    if (!instance.LookupStringValue(sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false))
-    {
-      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat, "Missing SOPInstanceUID in a DICOM instance");
-    }
-    slicesDicom_[sopInstanceUid] = boost::shared_ptr<DicomMap>(instance.Clone());
-  }
-
-  virtual void RetrieveReferencedSlices(const std::set<std::string>& nonEmptyInstances) ORTHANC_OVERRIDE
-  {
-    for (std::set<std::string>::const_iterator it = nonEmptyInstances.begin(); 
-         it != nonEmptyInstances.end(); 
-         ++it)
-    {
-      const std::string nonEmptyInstance = *it;
-      if (slicesDicom_.find(nonEmptyInstance) == slicesDicom_.end())
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat, "Referenced SOPInstanceUID not found in CT");
-      }
-      boost::shared_ptr<Orthanc::DicomMap> instance = slicesDicom_[nonEmptyInstance];
-      structLoader_.AddReferencedSlice(*instance);
-    }
-  }
-
-  OrthancStone::DicomStructureSetLoader& structLoader_;
-  std::map<std::string, boost::shared_ptr<Orthanc::DicomMap> > slicesDicom_;
-};
-
-void LoadCtSeriesBlocking(boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader, std::string seriesId)
-{
-  namespace pt = boost::posix_time;
-  
-  // Load the CT 
-  ctLoader->LoadSeries(seriesId);
-
-  // Wait for CT to be loaded
-  pt::ptime initialTime = pt::second_clock::local_time();
-  {
-    bool bContinue(true);
-    while (bContinue)
-    {
-      bContinue = !ctLoader->IsVolumeImageReadyInHighQuality();
-      boost::this_thread::sleep_for(boost::chrono::milliseconds(1000));
-
-      {
-        pt::ptime nowTime = pt::second_clock::local_time();
-        pt::time_duration diff = nowTime - initialTime;
-        double seconds = static_cast<double>(diff.total_milliseconds()) * 0.001;
-        std::cout << seconds << " seconds elapsed...\n";
-        if (seconds > 30)
-        {
-          const char* msg = "More than 30 seconds elapsed when waiting for CT... Aborting test :(\n";
-          GTEST_FATAL_FAILURE_(msg);
-          bContinue = false;
-        }
-      }
-    }
-  }
-}
-
-
-/**
-Will fill planes
-*/
-void GetCTPlanes(std::vector<OrthancStone::CoordinateSystem3D>& planes, 
-                 OrthancStone::VolumeProjection projection,
-                 boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader)
-{
-    planes.clear(); // inefficient : we don't care
-
-    const VolumeImageGeometry& geometry = ctLoader->GetImageGeometry();
-    const unsigned int depth = geometry.GetProjectionDepth(projection);
-
-    planes.resize(depth);
-
-    for (unsigned int z = 0; z < depth; z++)
-    {
-      planes[z] = geometry.GetProjectionSlice(projection, z);
-    }
-}
-
-void LoadRtStructBlocking(boost::shared_ptr<OrthancStone::DicomStructureSetLoader> structLoader, std::string instanceId)
-{
-  namespace pt = boost::posix_time;
-
-  // Load RTSTRUCT
-  structLoader->LoadInstanceFullVisibility(instanceId);
-
-  pt::ptime initialTime = pt::second_clock::local_time();
-
-  // Wait for the loading process to complete
-  {
-    bool bContinue(true);
-    while (bContinue)
-    {
-      bContinue = !structLoader->AreStructuresReady();
-      boost::this_thread::sleep_for(boost::chrono::milliseconds(1000));
-
-      {
-        pt::ptime nowTime = pt::second_clock::local_time();
-        pt::time_duration diff = nowTime - initialTime;
-        double seconds = static_cast<double>(diff.total_milliseconds()) * 0.001;
-        std::cout << seconds << " seconds elapsed...\n";
-        if (seconds > 30)
-        {
-          const char* msg = "More than 30 seconds elapsed when waiting for RTSTRUCT... Aborting test :(\n";
-          GTEST_FATAL_FAILURE_(msg);
-          bContinue = false;
-        }
-      }
-    }
-  }
-}
-
-TEST(StructureSet, DISABLED_Integration_Compound_CT_Struct_Loading)
-{
-  const double TOLERANCE = 0.0000001;
-
-  // create loaders context
-  std::unique_ptr<OrthancStone::ILoadersContext> loadersContext(new OrthancStone::GenericLoadersContext(1,4,1));
-  Initialize("http://localhost:8042/", *loadersContext);
-
-  const char* ctSeriesId = "a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa";
-  const char* rtStructInstanceId = "54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9";
-
-  // we'll compare normal loading and optimized loading with SliceProcessor to store the dicom
-
-  boost::shared_ptr<OrthancStone::DicomStructureSetLoader> normalStructLoader;
-  boost::shared_ptr<OrthancStone::DicomStructureSetLoader> optimizedStructLoader;
-  
-  {
-    // Create the CT volume
-    boost::shared_ptr<OrthancStone::DicomVolumeImage> volume = boost::make_shared<OrthancStone::DicomVolumeImage>();
-
-    // Create CT loader
-    boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader =
-      OrthancStone::OrthancSeriesVolumeProgressiveLoader::Create(*loadersContext, volume);
-
-    // Create struct loader
-    normalStructLoader = OrthancStone::DicomStructureSetLoader::Create(*loadersContext);
-
-    // Load the CT
-    LoadCtSeriesBlocking(ctLoader, ctSeriesId);
-    
-    const OrthancStone::VolumeImageGeometry& imageGeometry = ctLoader->GetImageGeometry();
-    unsigned int width = imageGeometry.GetWidth();
-    EXPECT_EQ(512u, width);
-    unsigned int height = imageGeometry.GetHeight();
-    EXPECT_EQ(512u, height);
-    unsigned int depth = imageGeometry.GetDepth();
-    EXPECT_EQ(109u, depth);
-
-    // Load the RTStruct
-    LoadRtStructBlocking(normalStructLoader, rtStructInstanceId);
-  }
-
-  std::vector<OrthancStone::CoordinateSystem3D> axialPlanes;
-  std::vector<OrthancStone::CoordinateSystem3D> coronalPlanes;
-  std::vector<OrthancStone::CoordinateSystem3D> sagittalPlanes;
-
-  {
-    // Create the CT volume
-    boost::shared_ptr<OrthancStone::DicomVolumeImage> volume = boost::make_shared<OrthancStone::DicomVolumeImage>();
-
-    // Create CT loader
-    boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader =
-      OrthancStone::OrthancSeriesVolumeProgressiveLoader::Create(*loadersContext, volume);
-
-    // Create struct loader
-    optimizedStructLoader = OrthancStone::DicomStructureSetLoader::Create(*loadersContext);
-
-    // create the slice processor / instance lookup
-    boost::shared_ptr<SliceProcessor> sliceProcessor(new SliceProcessor(*optimizedStructLoader));
-
-    // Inject it into CT loader
-    ctLoader->SetDicomSlicePostProcessor(sliceProcessor);
-
-    // Inject it into RTSTRUCT loader
-    optimizedStructLoader->SetInstanceLookupHandler(sliceProcessor);
-
-    // Load the CT
-    LoadCtSeriesBlocking(ctLoader, ctSeriesId);
-  
-    // now, the slices are collected. let's do some checks
-    EXPECT_EQ(109u, sliceProcessor->slicesDicom_.size());
-
-    // Load the RTStruct
-    LoadRtStructBlocking(optimizedStructLoader, rtStructInstanceId);
-
-    GetCTPlanes(axialPlanes, VolumeProjection_Axial, ctLoader);
-    GetCTPlanes(coronalPlanes, VolumeProjection_Coronal, ctLoader);
-    GetCTPlanes(sagittalPlanes, VolumeProjection_Sagittal, ctLoader);
-  }
-
-  // DO NOT DELETE THOSE!
-  OrthancStone::DicomStructureSet* normalContent = normalStructLoader->GetContent();
-  OrthancStone::DicomStructureSet* optimizedContent = optimizedStructLoader->GetContent();
-
-  EXPECT_EQ(normalContent->GetStructuresCount(), optimizedContent->GetStructuresCount());
-
-  /*void GetCTPlanes(std::vector<OrthancStone::CoordinateSystem3D>& planes, 
-                 OrthancStone::VolumeProjection projection,
-                 boost::shared_ptr<OrthancStone::OrthancSeriesVolumeProgressiveLoader> ctLoader)*/
-
-
-  std::vector<OrthancStone::CoordinateSystem3D> allPlanes;
-
-  // let's gather all the possible cutting planes in a single struct
-  for (size_t i = 0; i < axialPlanes.size(); ++i)
-    allPlanes.push_back(axialPlanes[i]);
-
-  for (size_t i = 0; i < coronalPlanes.size(); ++i)
-    allPlanes.push_back(coronalPlanes[i]);
-
-  for (size_t i = 0; i < sagittalPlanes.size(); ++i)
-    allPlanes.push_back(sagittalPlanes[i]);
-
-  for (size_t i = 0; i < normalContent->GetStructuresCount(); ++i)
-  {
-    std::cout << "Testing structure (" << i << "/" << normalContent->GetStructuresCount() << ")\n";
-    Vector structureCenter1                     = normalContent->GetStructureCenter(i);
-    const std::string& structureName1           = normalContent->GetStructureName(i);
-    const std::string& structureInterpretation1 = normalContent->GetStructureInterpretation(i);
-    Color structureColor1                       = normalContent->GetStructureColor(i);
-
-    Vector structureCenter2                     = optimizedContent->GetStructureCenter(i);
-    const std::string& structureName2           = optimizedContent->GetStructureName(i);
-    const std::string& structureInterpretation2 = optimizedContent->GetStructureInterpretation(i);
-    Color structureColor2                       = optimizedContent->GetStructureColor(i);
-
-    EXPECT_NEAR(structureCenter1[0], structureCenter2[0], TOLERANCE);
-    EXPECT_NEAR(structureCenter1[1], structureCenter2[1], TOLERANCE);
-    EXPECT_NEAR(structureCenter1[2], structureCenter2[2], TOLERANCE);
-    
-    EXPECT_EQ(structureName1, structureName2);
-    EXPECT_EQ(structureInterpretation1, structureInterpretation2);
-    EXPECT_EQ(structureColor1.GetRed(), structureColor2.GetRed());
-    EXPECT_EQ(structureColor1.GetGreen(), structureColor2.GetGreen());
-    EXPECT_EQ(structureColor1.GetBlue(), structureColor2.GetBlue());
-
-    // "random" walk through the planes. Processing them all takes too long (~ 1 min)
-    for (size_t j = 0; j < allPlanes.size(); j += 37)
-    {
-      const OrthancStone::CoordinateSystem3D& plane = allPlanes[j];
-
-      std::vector< std::pair<Point2D, Point2D> > segments1;
-      std::vector< std::pair<Point2D, Point2D> > segments2;
-      
-      bool ok1 = normalContent->ProjectStructure(segments1, i, plane);
-      bool ok2 = optimizedContent->ProjectStructure(segments2, i, plane);
-
-      // checks here
-      EXPECT_EQ(ok1, ok2);
-      EXPECT_EQ(segments1.size(), segments2.size());
-
-      for (size_t k = 0; k < segments1.size(); ++k)
-      {
-        EXPECT_NEAR(segments1[k].first.x, segments2[k].first.x, TOLERANCE);
-        EXPECT_NEAR(segments1[k].first.y, segments2[k].first.y, TOLERANCE);
-        EXPECT_NEAR(segments1[k].second.x, segments2[k].second.x, TOLERANCE);
-        EXPECT_NEAR(segments1[k].second.y, segments2[k].second.y, TOLERANCE);
-      }
-    }
-  }
-
-  Exitialize(*loadersContext);
-}
--- a/UnitTestsSources/UnitTestsMain.cpp	Tue Jul 07 10:02:59 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,894 +0,0 @@
-/**
- * Stone of Orthanc
- * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
- * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
- *
- * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Affero General Public License for more details.
- * 
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-
-#include <gtest/gtest.h>
-
-#include "../Framework/StoneInitialization.h"
-#include "../Framework/Toolbox/FiniteProjectiveCamera.h"
-#include "../Framework/Toolbox/GeometryToolbox.h"
-#include "../Framework/Volumes/ImageBuffer3D.h"
-#include "../Framework/Loaders/LoaderCache.h"
-
-#include <HttpClient.h>
-#include <Images/ImageProcessing.h>
-#include <Logging.h>
-#include <MultiThreading/SharedMessageQueue.h>
-#include <OrthancException.h>
-
-#include <boost/lexical_cast.hpp>
-#include <boost/date_time/posix_time/posix_time.hpp>
-#include <boost/thread/thread.hpp> 
-#include <boost/math/special_functions/round.hpp>
-
-
-TEST(GeometryToolbox, Interpolation)
-{
-  using namespace OrthancStone::GeometryToolbox;
-  
-  // https://en.wikipedia.org/wiki/Bilinear_interpolation#Application_in_image_processing
-  ASSERT_FLOAT_EQ(146.1f, ComputeBilinearInterpolationUnitSquare(0.5f, 0.2f, 91, 210, 162, 95));
-
-  ASSERT_FLOAT_EQ(91,  ComputeBilinearInterpolationUnitSquare(0, 0, 91, 210, 162, 95));
-  ASSERT_FLOAT_EQ(210, ComputeBilinearInterpolationUnitSquare(1, 0, 91, 210, 162, 95));
-  ASSERT_FLOAT_EQ(162, ComputeBilinearInterpolationUnitSquare(0, 1, 91, 210, 162, 95));
-  ASSERT_FLOAT_EQ(95,  ComputeBilinearInterpolationUnitSquare(1, 1, 91, 210, 162, 95));
-
-  ASSERT_FLOAT_EQ(123.35f, ComputeTrilinearInterpolationUnitSquare
-                  (0.5f, 0.2f, 0.7f,
-                   91, 210, 162, 95,
-                   51, 190, 80, 92));
-
-  ASSERT_FLOAT_EQ(ComputeBilinearInterpolationUnitSquare(0.5f, 0.2f, 91, 210, 162, 95),
-                  ComputeTrilinearInterpolationUnitSquare(0.5f, 0.2f, 0,
-                                                          91, 210, 162, 95,
-                                                          51, 190, 80, 92));
-
-  ASSERT_FLOAT_EQ(ComputeBilinearInterpolationUnitSquare(0.5f, 0.2f, 51, 190, 80, 92),
-                  ComputeTrilinearInterpolationUnitSquare(0.5f, 0.2f, 1,
-                                                          91, 210, 162, 95,
-                                                          51, 190, 80, 92));
-}
-
-
-static bool CompareMatrix(const OrthancStone::Matrix& a,
-                          const OrthancStone::Matrix& b,
-                          double threshold = 0.00000001)
-{
-  if (a.size1() != b.size1() ||
-      a.size2() != b.size2())
-  {
-    return false;
-  }
-
-  for (size_t i = 0; i < a.size1(); i++)
-  {
-    for (size_t j = 0; j < a.size2(); j++)
-    {
-      if (fabs(a(i, j) - b(i, j)) > threshold)
-      {
-        LOG(ERROR) << "Too large difference in component ("
-                   << i << "," << j << "): " << a(i,j) << " != " << b(i,j);
-        return false;
-      }
-    }
-  }
-
-  return true;
-}
-
-
-static bool CompareVector(const OrthancStone::Vector& a,
-                          const OrthancStone::Vector& b,
-                          double threshold = 0.00000001)
-{
-  if (a.size() != b.size())
-  {
-    return false;
-  }
-
-  for (size_t i = 0; i < a.size(); i++)
-  {
-    if (fabs(a(i) - b(i)) > threshold)
-    {
-      LOG(ERROR) << "Too large difference in component "
-                 << i << ": " << a(i) << " != " << b(i);
-      return false;
-    }
-  }
-
-  return true;
-}
-
-
-
-TEST(FiniteProjectiveCamera, Decomposition1)
-{
-  // Example 6.2 of "Multiple View Geometry in Computer Vision - 2nd
-  // edition" (page 163)
-  const double p[12] = {
-    3.53553e+2,  3.39645e+2,  2.77744e+2, -1.44946e+6,
-    -1.03528e+2, 2.33212e+1,  4.59607e+2, -6.32525e+5,
-    7.07107e-1,  -3.53553e-1, 6.12372e-1, -9.18559e+2
-  };
-
-  OrthancStone::FiniteProjectiveCamera camera(p);
-  ASSERT_EQ(3u, camera.GetMatrix().size1());
-  ASSERT_EQ(4u, camera.GetMatrix().size2());
-  ASSERT_EQ(3u, camera.GetIntrinsicParameters().size1());
-  ASSERT_EQ(3u, camera.GetIntrinsicParameters().size2());
-  ASSERT_EQ(3u, camera.GetRotation().size1());
-  ASSERT_EQ(3u, camera.GetRotation().size2());
-  ASSERT_EQ(3u, camera.GetCenter().size());
-
-  ASSERT_NEAR(1000.0, camera.GetCenter()[0], 0.01);
-  ASSERT_NEAR(2000.0, camera.GetCenter()[1], 0.01);
-  ASSERT_NEAR(1500.0, camera.GetCenter()[2], 0.01);
-
-  ASSERT_NEAR(468.2, camera.GetIntrinsicParameters() (0, 0), 0.1);
-  ASSERT_NEAR(91.2,  camera.GetIntrinsicParameters() (0, 1), 0.1);
-  ASSERT_NEAR(300.0, camera.GetIntrinsicParameters() (0, 2), 0.1);
-  ASSERT_NEAR(427.2, camera.GetIntrinsicParameters() (1, 1), 0.1);
-  ASSERT_NEAR(200.0, camera.GetIntrinsicParameters() (1, 2), 0.1);
-  ASSERT_NEAR(1.0,   camera.GetIntrinsicParameters() (2, 2), 0.1);
-
-  ASSERT_NEAR(0, camera.GetIntrinsicParameters() (1, 0), 0.0000001);
-  ASSERT_NEAR(0, camera.GetIntrinsicParameters() (2, 0), 0.0000001);
-  ASSERT_NEAR(0, camera.GetIntrinsicParameters() (2, 1), 0.0000001);
-
-  ASSERT_NEAR(0.41380,  camera.GetRotation() (0, 0), 0.00001);
-  ASSERT_NEAR(0.90915,  camera.GetRotation() (0, 1), 0.00001);
-  ASSERT_NEAR(0.04708,  camera.GetRotation() (0, 2), 0.00001);
-  ASSERT_NEAR(-0.57338, camera.GetRotation() (1, 0), 0.00001);
-  ASSERT_NEAR(0.22011,  camera.GetRotation() (1, 1), 0.00001);
-  ASSERT_NEAR(0.78917,  camera.GetRotation() (1, 2), 0.00001);
-  ASSERT_NEAR(0.70711,  camera.GetRotation() (2, 0), 0.00001);
-  ASSERT_NEAR(-0.35355, camera.GetRotation() (2, 1), 0.00001);
-  ASSERT_NEAR(0.61237,  camera.GetRotation() (2, 2), 0.00001);
-
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(camera.GetRotation()));
-
-  OrthancStone::FiniteProjectiveCamera camera2(camera.GetIntrinsicParameters(),
-                                               camera.GetRotation(),
-                                               camera.GetCenter());
-
-  ASSERT_TRUE(CompareMatrix(camera.GetMatrix(), camera2.GetMatrix()));
-  ASSERT_TRUE(CompareMatrix(camera.GetIntrinsicParameters(), camera2.GetIntrinsicParameters()));
-  ASSERT_TRUE(CompareMatrix(camera.GetRotation(), camera2.GetRotation()));
-  ASSERT_TRUE(CompareVector(camera.GetCenter(), camera2.GetCenter()));
-}
-
-
-TEST(FiniteProjectiveCamera, Decomposition2)
-{
-  const double p[] = { 1188.111986, 580.205341, -808.445330, 128000.000000, -366.466264, 1446.510501, 418.499736, 128000.000000, -0.487118, 0.291726, -0.823172, 500.000000 };
-  const double k[] = { -1528.494743, 0.000000, 256.000000, 0.000000, 1528.494743, 256.000000, 0.000000, 0.000000, 1.000000 };
-  const double r[] = { -0.858893, -0.330733, 0.391047, -0.158171, 0.897503, 0.411668, -0.487118, 0.291726, -0.823172 };
-  const double c[] = { 243.558936, -145.863085, 411.585964 };
-
-  OrthancStone::FiniteProjectiveCamera camera(p);
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(camera.GetRotation()));
-
-  OrthancStone::FiniteProjectiveCamera camera2(k, r, c);
-  ASSERT_TRUE(CompareMatrix(camera.GetMatrix(), camera2.GetMatrix(), 1));
-  ASSERT_TRUE(CompareMatrix(camera.GetIntrinsicParameters(), camera2.GetIntrinsicParameters(), 0.001));
-  ASSERT_TRUE(CompareMatrix(camera.GetRotation(), camera2.GetRotation(), 0.000001));
-  ASSERT_TRUE(CompareVector(camera.GetCenter(), camera2.GetCenter(), 0.0001));
-}
-
-
-TEST(FiniteProjectiveCamera, Decomposition3)
-{
-  const double p[] = { 10, 0, 0, 0,
-                       0, 20, 0, 0,
-                       0, 0, 30, 0 };
-
-  OrthancStone::FiniteProjectiveCamera camera(p);
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(camera.GetRotation()));
-  ASSERT_DOUBLE_EQ(10, camera.GetIntrinsicParameters() (0, 0));
-  ASSERT_DOUBLE_EQ(20, camera.GetIntrinsicParameters() (1, 1));
-  ASSERT_DOUBLE_EQ(30, camera.GetIntrinsicParameters() (2, 2));
-  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (0, 0));
-  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (1, 1));
-  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (2, 2));
-  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (0));
-  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (1));
-  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (2));
-}
-
-
-TEST(FiniteProjectiveCamera, Decomposition4)
-{
-  const double p[] = { 1, 0, 0, 10,
-                       0, 1, 0, 20,
-                       0, 0, 1, 30 };
-
-  OrthancStone::FiniteProjectiveCamera camera(p);
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(camera.GetRotation()));
-  ASSERT_DOUBLE_EQ(1, camera.GetIntrinsicParameters() (0, 0));
-  ASSERT_DOUBLE_EQ(1, camera.GetIntrinsicParameters() (1, 1));
-  ASSERT_DOUBLE_EQ(1, camera.GetIntrinsicParameters() (2, 2));
-  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (0, 0));
-  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (1, 1));
-  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (2, 2));
-  ASSERT_DOUBLE_EQ(-10, camera.GetCenter() (0));
-  ASSERT_DOUBLE_EQ(-20, camera.GetCenter() (1));
-  ASSERT_DOUBLE_EQ(-30, camera.GetCenter() (2));
-}
-
-
-TEST(FiniteProjectiveCamera, Decomposition5)
-{
-  const double p[] = { 0, 0, 10, 0,
-                       0, 20, 0, 0,
-                       30, 0, 0, 0 };
-
-  OrthancStone::FiniteProjectiveCamera camera(p);
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(camera.GetRotation()));
-  ASSERT_DOUBLE_EQ(-10, camera.GetIntrinsicParameters() (0, 0));
-  ASSERT_DOUBLE_EQ(20, camera.GetIntrinsicParameters() (1, 1));
-  ASSERT_DOUBLE_EQ(30, camera.GetIntrinsicParameters() (2, 2));
-  ASSERT_DOUBLE_EQ(-1, camera.GetRotation() (0, 2));
-  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (1, 1));
-  ASSERT_DOUBLE_EQ(1, camera.GetRotation() (2, 0));
-  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (0));
-  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (1));
-  ASSERT_DOUBLE_EQ(0, camera.GetCenter() (2));
-
-  OrthancStone::FiniteProjectiveCamera camera2(camera.GetIntrinsicParameters(),
-                                               camera.GetRotation(),
-                                               camera.GetCenter());
-  ASSERT_TRUE(CompareMatrix(camera.GetMatrix(), camera2.GetMatrix()));
-  ASSERT_TRUE(CompareMatrix(camera.GetIntrinsicParameters(), camera2.GetIntrinsicParameters()));
-  ASSERT_TRUE(CompareMatrix(camera.GetRotation(), camera2.GetRotation()));
-  ASSERT_TRUE(CompareVector(camera.GetCenter(), camera2.GetCenter()));
-}
-
-
-static double GetCosAngle(const OrthancStone::Vector& a,
-                          const OrthancStone::Vector& b)
-{
-  // Returns the cosine of the angle between two vectors
-  // https://en.wikipedia.org/wiki/Dot_product#Geometric_definition
-  return boost::numeric::ublas::inner_prod(a, b) / 
-    (boost::numeric::ublas::norm_2(a) * boost::numeric::ublas::norm_2(b));
-}
-
-
-TEST(FiniteProjectiveCamera, Ray)
-{
-  const double pp[] = { -1499.650894, 2954.618773, -259.737419, 637891.819097,
-                        -2951.517707, -1501.019129, -285.785281, 637891.819097,
-                        0.008528, 0.003067, -0.999959, 2491.764918 };
-
-  const OrthancStone::FiniteProjectiveCamera camera(pp);
-
-  ASSERT_NEAR(-21.2492, camera.GetCenter() (0), 0.0001);
-  ASSERT_NEAR(-7.64234, camera.GetCenter() (1), 0.00001);
-  ASSERT_NEAR(2491.66, camera.GetCenter() (2), 0.01);
-
-  // Image plane that led to these parameters, with principal point at
-  // (256,256). The image has dimensions 512x512.
-  OrthancStone::Vector o =
-    OrthancStone::LinearAlgebra::CreateVector(7.009620, 2.521030, -821.942000);
-  OrthancStone::Vector ax =
-    OrthancStone::LinearAlgebra::CreateVector(-0.453219, 0.891399, -0.001131);
-  OrthancStone::Vector ay =
-    OrthancStone::LinearAlgebra::CreateVector(-0.891359, -0.453210, -0.008992);
-
-  OrthancStone::CoordinateSystem3D imagePlane(o, ax, ay);
-
-  // Back-projection of the principal point
-  {
-    OrthancStone::Vector ray = camera.GetRayDirection(256, 256);
-
-    // The principal axis vector is orthogonal to the image plane
-    // (i.e. parallel to the plane normal), in the opposite direction
-    // ("-1" corresponds to "cos(pi)").
-    ASSERT_NEAR(-1, GetCosAngle(ray, imagePlane.GetNormal()), 0.0000001);
-
-    // Forward projection of principal axis, resulting in the principal point
-    double x, y;
-    camera.ApplyFinite(x, y, camera.GetCenter() - ray);
-
-    ASSERT_NEAR(256, x, 0.00001);
-    ASSERT_NEAR(256, y, 0.00001);
-  }
-
-  // Back-projection of the 4 corners of the image
-  std::vector<double> cx, cy;
-  cx.push_back(0);
-  cy.push_back(0);
-  cx.push_back(512);
-  cy.push_back(0);
-  cx.push_back(512);
-  cy.push_back(512);
-  cx.push_back(0);
-  cy.push_back(512);
-
-  bool first = true;
-  double angle;
-
-  for (size_t i = 0; i < cx.size(); i++)
-  {
-    OrthancStone::Vector ray = camera.GetRayDirection(cx[i], cy[i]);
-
-    // Check that the angle wrt. principal axis is the same for all
-    // the 4 corners
-    double a = GetCosAngle(ray, imagePlane.GetNormal());
-    if (first)
-    {
-      first = false;
-      angle = a;
-    }
-    else
-    {
-      ASSERT_NEAR(angle, a, 0.000001);
-    }
-
-    // Forward projection of the ray, going back to the original point
-    double x, y;
-    camera.ApplyFinite(x, y, camera.GetCenter() - ray);
-    
-    ASSERT_NEAR(cx[i], x, 0.00001);
-    ASSERT_NEAR(cy[i], y, 0.00001);
-
-    // Alternative construction, by computing the intersection of the
-    // ray with the image plane
-    OrthancStone::Vector p;
-    ASSERT_TRUE(imagePlane.IntersectLine(p, camera.GetCenter(), -ray));
-    imagePlane.ProjectPoint(x, y, p);
-    ASSERT_NEAR(cx[i], x + 256, 0.01);
-    ASSERT_NEAR(cy[i], y + 256, 0.01);
-  }
-}
-
-
-TEST(Matrix, Inverse1)
-{
-  OrthancStone::Matrix a, b;
-
-  a.resize(0, 0);
-  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
-  ASSERT_EQ(0u, b.size1());
-  ASSERT_EQ(0u, b.size2());
-
-  a.resize(2, 3);
-  ASSERT_THROW(OrthancStone::LinearAlgebra::InvertMatrix(b, a), Orthanc::OrthancException);
-
-  a.resize(1, 1);
-  a(0, 0) = 45.0;
-
-  ASSERT_DOUBLE_EQ(45, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
-  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
-  ASSERT_EQ(1u, b.size1());
-  ASSERT_EQ(1u, b.size2());
-  ASSERT_DOUBLE_EQ(1.0 / 45.0, b(0, 0));
-
-  a(0, 0) = 0;
-  ASSERT_DOUBLE_EQ(0, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
-  ASSERT_THROW(OrthancStone::LinearAlgebra::InvertMatrix(b, a), Orthanc::OrthancException);
-}
-
-
-TEST(Matrix, Inverse2)
-{
-  OrthancStone::Matrix a, b;
-  a.resize(2, 2);
-  a(0, 0) = 4;
-  a(0, 1) = 3;
-  a(1, 0) = 3;
-  a(1, 1) = 2;
-
-  ASSERT_DOUBLE_EQ(-1, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
-  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
-  ASSERT_EQ(2u, b.size1());
-  ASSERT_EQ(2u, b.size2());
-
-  ASSERT_DOUBLE_EQ(-2, b(0, 0));
-  ASSERT_DOUBLE_EQ(3, b(0, 1));
-  ASSERT_DOUBLE_EQ(3, b(1, 0));
-  ASSERT_DOUBLE_EQ(-4, b(1, 1));
-
-  a(0, 0) = 1;
-  a(0, 1) = 2;
-  a(1, 0) = 3;
-  a(1, 1) = 4;
-
-  ASSERT_DOUBLE_EQ(-2, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
-  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
-
-  ASSERT_DOUBLE_EQ(-2, b(0, 0));
-  ASSERT_DOUBLE_EQ(1, b(0, 1));
-  ASSERT_DOUBLE_EQ(1.5, b(1, 0));
-  ASSERT_DOUBLE_EQ(-0.5, b(1, 1));
-}
-
-
-TEST(Matrix, Inverse3)
-{
-  OrthancStone::Matrix a, b;
-  a.resize(3, 3);
-  a(0, 0) = 7;
-  a(0, 1) = 2;
-  a(0, 2) = 1;
-  a(1, 0) = 0;
-  a(1, 1) = 3;
-  a(1, 2) = -1;
-  a(2, 0) = -3;
-  a(2, 1) = 4;
-  a(2, 2) = -2;
-
-  ASSERT_DOUBLE_EQ(1, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
-  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
-  ASSERT_EQ(3u, b.size1());
-  ASSERT_EQ(3u, b.size2());
-
-  ASSERT_DOUBLE_EQ(-2, b(0, 0));
-  ASSERT_DOUBLE_EQ(8, b(0, 1));
-  ASSERT_DOUBLE_EQ(-5, b(0, 2));
-  ASSERT_DOUBLE_EQ(3, b(1, 0));
-  ASSERT_DOUBLE_EQ(-11, b(1, 1));
-  ASSERT_DOUBLE_EQ(7, b(1, 2));
-  ASSERT_DOUBLE_EQ(9, b(2, 0));
-  ASSERT_DOUBLE_EQ(-34, b(2, 1));
-  ASSERT_DOUBLE_EQ(21, b(2, 2));
-
-
-  a(0, 0) = 1;
-  a(0, 1) = 2;
-  a(0, 2) = 2;
-  a(1, 0) = 1;
-  a(1, 1) = 0;
-  a(1, 2) = 1;
-  a(2, 0) = 1;
-  a(2, 1) = 2;
-  a(2, 2) = 1;
-
-  ASSERT_DOUBLE_EQ(2, OrthancStone::LinearAlgebra::ComputeDeterminant(a));
-  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
-  ASSERT_EQ(3u, b.size1());
-  ASSERT_EQ(3u, b.size2());
-
-  ASSERT_DOUBLE_EQ(-1, b(0, 0));
-  ASSERT_DOUBLE_EQ(1, b(0, 1));
-  ASSERT_DOUBLE_EQ(1, b(0, 2));
-  ASSERT_DOUBLE_EQ(0, b(1, 0));
-  ASSERT_DOUBLE_EQ(-0.5, b(1, 1));
-  ASSERT_DOUBLE_EQ(0.5, b(1, 2));
-  ASSERT_DOUBLE_EQ(1, b(2, 0));
-  ASSERT_DOUBLE_EQ(0, b(2, 1));
-  ASSERT_DOUBLE_EQ(-1, b(2, 2));
-}
-
-
-TEST(Matrix, Inverse4)
-{
-  OrthancStone::Matrix a, b;
-  a.resize(4, 4);
-  a(0, 0) = 2;
-  a(0, 1) = 1;
-  a(0, 2) = 2;
-  a(0, 3) = -3;
-  a(1, 0) = -2;
-  a(1, 1) = 2;
-  a(1, 2) = -1;
-  a(1, 3) = -1;
-  a(2, 0) = 2;
-  a(2, 1) = 2;
-  a(2, 2) = -3;
-  a(2, 3) = -1;
-  a(3, 0) = 3;
-  a(3, 1) = -2;
-  a(3, 2) = -3;
-  a(3, 3) = -1;
-
-  OrthancStone::LinearAlgebra::InvertMatrix(b, a);
-  ASSERT_EQ(4u, b.size1());
-  ASSERT_EQ(4u, b.size2());
-
-  b *= 134.0;  // This is the determinant
-
-  ASSERT_DOUBLE_EQ(8, b(0, 0));
-  ASSERT_DOUBLE_EQ(-44, b(0, 1));
-  ASSERT_DOUBLE_EQ(30, b(0, 2));
-  ASSERT_DOUBLE_EQ(-10, b(0, 3));
-  ASSERT_DOUBLE_EQ(2, b(1, 0));
-  ASSERT_DOUBLE_EQ(-11, b(1, 1));
-  ASSERT_DOUBLE_EQ(41, b(1, 2));
-  ASSERT_DOUBLE_EQ(-36, b(1, 3));
-  ASSERT_DOUBLE_EQ(16, b(2, 0));
-  ASSERT_DOUBLE_EQ(-21, b(2, 1));
-  ASSERT_DOUBLE_EQ(-7, b(2, 2));
-  ASSERT_DOUBLE_EQ(-20, b(2, 3));
-  ASSERT_DOUBLE_EQ(-28, b(3, 0));
-  ASSERT_DOUBLE_EQ(-47, b(3, 1));
-  ASSERT_DOUBLE_EQ(29, b(3, 2));
-  ASSERT_DOUBLE_EQ(-32, b(3, 3));
-}
-
-
-TEST(FiniteProjectiveCamera, Calibration)
-{
-  unsigned int volumeWidth = 512;
-  unsigned int volumeHeight = 512;
-  unsigned int volumeDepth = 110;
-
-  OrthancStone::Vector camera = OrthancStone::LinearAlgebra::CreateVector
-    (-1000, -5000, -static_cast<double>(volumeDepth) * 32);
-
-  OrthancStone::Vector principalPoint = OrthancStone::LinearAlgebra::CreateVector
-    (volumeWidth/2, volumeHeight/2, volumeDepth * 2);
-
-  OrthancStone::FiniteProjectiveCamera c(camera, principalPoint, 0, 512, 512, 1, 1);
-
-  double swapv[9] = { 1, 0, 0,
-                      0, -1, 512,
-                      0, 0, 1 };
-  OrthancStone::Matrix swap;
-  OrthancStone::LinearAlgebra::FillMatrix(swap, 3, 3, swapv);
-
-  OrthancStone::Matrix p = OrthancStone::LinearAlgebra::Product(swap, c.GetMatrix());
-  p /= p(2,3);
-
-  ASSERT_NEAR( 1.04437,     p(0,0), 0.00001);
-  ASSERT_NEAR(-0.0703111,   p(0,1), 0.00000001);
-  ASSERT_NEAR(-0.179283,    p(0,2), 0.000001);
-  ASSERT_NEAR( 61.7431,     p(0,3), 0.0001);
-  ASSERT_NEAR( 0.11127,     p(1,0), 0.000001);
-  ASSERT_NEAR(-0.595541,    p(1,1), 0.000001);
-  ASSERT_NEAR( 0.872211,    p(1,2), 0.000001);
-  ASSERT_NEAR( 203.748,     p(1,3), 0.001);
-  ASSERT_NEAR( 3.08593e-05, p(2,0), 0.0000000001);
-  ASSERT_NEAR( 0.000129138, p(2,1), 0.000000001);
-  ASSERT_NEAR( 9.18901e-05, p(2,2), 0.0000000001);
-  ASSERT_NEAR( 1,           p(2,3), 0.0000001);
-}
-
-
-static bool IsEqualRotationVector(OrthancStone::Vector a,
-                                  OrthancStone::Vector b)
-{
-  if (a.size() != b.size() ||
-      a.size() != 3)
-  {
-    return false;
-  }
-  else
-  {
-    OrthancStone::LinearAlgebra::NormalizeVector(a);
-    OrthancStone::LinearAlgebra::NormalizeVector(b);
-    return OrthancStone::LinearAlgebra::IsCloseToZero(boost::numeric::ublas::norm_2(a - b));
-  }
-}
-
-
-TEST(GeometryToolbox, AlignVectorsWithRotation)
-{
-  OrthancStone::Vector a, b;
-  OrthancStone::Matrix r;
-
-  OrthancStone::LinearAlgebra::AssignVector(a, -200, 200, -846.63);
-  OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
-
-  OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b);
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(r));
-  ASSERT_TRUE(IsEqualRotationVector(OrthancStone::LinearAlgebra::Product(r, a), b));
-
-  OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, b, a);
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(r));
-  ASSERT_TRUE(IsEqualRotationVector(OrthancStone::LinearAlgebra::Product(r, b), a));
-
-  OrthancStone::LinearAlgebra::AssignVector(a, 1, 0, 0);
-  OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
-  OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b);
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(r));
-  ASSERT_TRUE(IsEqualRotationVector(OrthancStone::LinearAlgebra::Product(r, a), b));
-
-  OrthancStone::LinearAlgebra::AssignVector(a, 0, 1, 0);
-  OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
-  OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b);
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(r));
-  ASSERT_TRUE(IsEqualRotationVector(OrthancStone::LinearAlgebra::Product(r, a), b));
-
-  OrthancStone::LinearAlgebra::AssignVector(a, 0, 0, 1);
-  OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
-  OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b);
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::IsRotationMatrix(r));
-  ASSERT_TRUE(IsEqualRotationVector(OrthancStone::LinearAlgebra::Product(r, a), b));
-
-  OrthancStone::LinearAlgebra::AssignVector(a, 0, 0, 0);
-  OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
-  ASSERT_THROW(OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b), Orthanc::OrthancException);
-
-  // TODO: Deal with opposite vectors
-
-  /*
-    OrthancStone::LinearAlgebra::AssignVector(a, 0, 0, -1);
-    OrthancStone::LinearAlgebra::AssignVector(b, 0, 0, 1);
-    OrthancStone::GeometryToolbox::AlignVectorsWithRotation(r, a, b);
-    OrthancStone::LinearAlgebra::Print(r);
-    OrthancStone::LinearAlgebra::Print(boost::numeric::ublas::prod(r, a));
-  */
-}
-
-
-static bool IsEqualVectorL1(OrthancStone::Vector a,
-                            OrthancStone::Vector b)
-{
-  if (a.size() != b.size())
-  {
-    return false;
-  }
-  else
-  {
-    for (size_t i = 0; i < a.size(); i++)
-    {
-      if (!OrthancStone::LinearAlgebra::IsNear(a[i], b[i], 0.0001))
-      {
-        return false;
-      }
-    }
-
-    return true;
-  }
-}
-
-
-TEST(VolumeImageGeometry, Basic)
-{
-  using namespace OrthancStone;
-  
-  VolumeImageGeometry g;
-  g.SetSizeInVoxels(10, 20, 30);
-  g.SetVoxelDimensions(1, 2, 3);
-
-  Vector p = g.GetCoordinates(0, 0, 0);
-  ASSERT_EQ(3u, p.size());
-  ASSERT_DOUBLE_EQ(-1.0 / 2.0, p[0]);
-  ASSERT_DOUBLE_EQ(-2.0 / 2.0, p[1]);
-  ASSERT_DOUBLE_EQ(-3.0 / 2.0, p[2]);
-  
-  p = g.GetCoordinates(1, 1, 1);
-  ASSERT_DOUBLE_EQ(-1.0 / 2.0 + 10.0 * 1.0, p[0]);
-  ASSERT_DOUBLE_EQ(-2.0 / 2.0 + 20.0 * 2.0, p[1]);
-  ASSERT_DOUBLE_EQ(-3.0 / 2.0 + 30.0 * 3.0, p[2]);
-
-  VolumeProjection proj;
-  ASSERT_TRUE(g.DetectProjection(proj, g.GetAxialGeometry().GetNormal()));
-  ASSERT_EQ(VolumeProjection_Axial, proj);
-  ASSERT_TRUE(g.DetectProjection(proj, g.GetCoronalGeometry().GetNormal()));
-  ASSERT_EQ(VolumeProjection_Coronal, proj);
-  ASSERT_TRUE(g.DetectProjection(proj, g.GetSagittalGeometry().GetNormal()));
-  ASSERT_EQ(VolumeProjection_Sagittal, proj);
-
-  ASSERT_EQ(10u, g.GetProjectionWidth(VolumeProjection_Axial));
-  ASSERT_EQ(20u, g.GetProjectionHeight(VolumeProjection_Axial));
-  ASSERT_EQ(30u, g.GetProjectionDepth(VolumeProjection_Axial));
-  ASSERT_EQ(10u, g.GetProjectionWidth(VolumeProjection_Coronal));
-  ASSERT_EQ(30u, g.GetProjectionHeight(VolumeProjection_Coronal));
-  ASSERT_EQ(20u, g.GetProjectionDepth(VolumeProjection_Coronal));
-  ASSERT_EQ(20u, g.GetProjectionWidth(VolumeProjection_Sagittal));
-  ASSERT_EQ(30u, g.GetProjectionHeight(VolumeProjection_Sagittal));
-  ASSERT_EQ(10u, g.GetProjectionDepth(VolumeProjection_Sagittal));
-
-  p = g.GetVoxelDimensions(VolumeProjection_Axial);
-  ASSERT_EQ(3u, p.size());
-  ASSERT_DOUBLE_EQ(1, p[0]);
-  ASSERT_DOUBLE_EQ(2, p[1]);
-  ASSERT_DOUBLE_EQ(3, p[2]);
-  p = g.GetVoxelDimensions(VolumeProjection_Coronal);
-  ASSERT_EQ(3u, p.size());
-  ASSERT_DOUBLE_EQ(1, p[0]);
-  ASSERT_DOUBLE_EQ(3, p[1]);
-  ASSERT_DOUBLE_EQ(2, p[2]);
-  p = g.GetVoxelDimensions(VolumeProjection_Sagittal);
-  ASSERT_EQ(3u, p.size());
-  ASSERT_DOUBLE_EQ(2, p[0]);
-  ASSERT_DOUBLE_EQ(3, p[1]);
-  ASSERT_DOUBLE_EQ(1, p[2]);
-
-  // Loop over all the voxels of the volume
-  for (unsigned int z = 0; z < g.GetDepth(); z++)
-  {
-    const float zz = (0.5f + static_cast<float>(z)) / static_cast<float>(g.GetDepth());  // Z-center of the voxel
-    
-    for (unsigned int y = 0; y < g.GetHeight(); y++)
-    {
-      const float yy = (0.5f + static_cast<float>(y)) / static_cast<float>(g.GetHeight());  // Y-center of the voxel
-
-      for (unsigned int x = 0; x < g.GetWidth(); x++)
-      {
-        const float xx = (0.5f + static_cast<float>(x)) / static_cast<float>(g.GetWidth());  // X-center of the voxel
-
-        const float sx = 1.0f;
-        const float sy = 2.0f;
-        const float sz = 3.0f;
-        
-        Vector p = g.GetCoordinates(xx, yy, zz);
-
-        Vector q = (g.GetAxialGeometry().MapSliceToWorldCoordinates(
-                      static_cast<double>(x) * sx,
-                      static_cast<double>(y) * sy) +
-                    z * sz * g.GetAxialGeometry().GetNormal());
-        ASSERT_TRUE(IsEqualVectorL1(p, q));
-        
-        q = (g.GetCoronalGeometry().MapSliceToWorldCoordinates(
-               static_cast<double>(x) * sx,
-               static_cast<double>(g.GetDepth() - 1 - z) * sz) +
-             y * sy * g.GetCoronalGeometry().GetNormal());
-        ASSERT_TRUE(IsEqualVectorL1(p, q));
-
-        /**
-         * WARNING: In sagittal geometry, the normal points to
-         * REDUCING X-axis in the 3D world. This is necessary to keep
-         * the right-hand coordinate system. Hence the "-".
-         **/
-        q = (g.GetSagittalGeometry().MapSliceToWorldCoordinates(
-               static_cast<double>(y) * sy,
-               static_cast<double>(g.GetDepth() - 1 - z) * sz) +
-             x * sx * (-g.GetSagittalGeometry().GetNormal()));
-        ASSERT_TRUE(IsEqualVectorL1(p, q));
-      }
-    }
-  }
-
-  ASSERT_EQ(0, (int) VolumeProjection_Axial);
-  ASSERT_EQ(1, (int) VolumeProjection_Coronal);
-  ASSERT_EQ(2, (int) VolumeProjection_Sagittal);
-  
-  for (int p = 0; p < 3; p++)
-  {
-    VolumeProjection projection = (VolumeProjection) p;
-    const CoordinateSystem3D& s = g.GetProjectionGeometry(projection);
-    
-    ASSERT_THROW(g.GetProjectionSlice(projection, g.GetProjectionDepth(projection)), Orthanc::OrthancException);
-
-    for (unsigned int i = 0; i < g.GetProjectionDepth(projection); i++)
-    {
-      CoordinateSystem3D plane = g.GetProjectionSlice(projection, i);
-
-      if (projection == VolumeProjection_Sagittal)
-      {
-        ASSERT_TRUE(IsEqualVectorL1(plane.GetOrigin(), s.GetOrigin() + static_cast<double>(i) * 
-                                    (-s.GetNormal()) * g.GetVoxelDimensions(projection)[2]));
-      }
-      else
-      {
-        ASSERT_TRUE(IsEqualVectorL1(plane.GetOrigin(), s.GetOrigin() + static_cast<double>(i) * 
-                                    s.GetNormal() * g.GetVoxelDimensions(projection)[2]));
-      }
-      
-      ASSERT_TRUE(IsEqualVectorL1(plane.GetAxisX(), s.GetAxisX()));
-      ASSERT_TRUE(IsEqualVectorL1(plane.GetAxisY(), s.GetAxisY()));
-
-      unsigned int slice;
-      VolumeProjection q;
-      ASSERT_TRUE(g.DetectSlice(q, slice, plane));
-      ASSERT_EQ(projection, q);
-      ASSERT_EQ(i, slice);
-    }
-  }
-}
-
-
-TEST(LinearAlgebra, ParseVectorLocale)
-{
-  OrthancStone::Vector v;
-
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::ParseVector(v, "1.2"));
-  ASSERT_EQ(1u, v.size());
-  ASSERT_DOUBLE_EQ(1.2, v[0]);
-
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::ParseVector(v, "-1.2e+2"));
-  ASSERT_EQ(1u, v.size());
-  ASSERT_DOUBLE_EQ(-120.0, v[0]);
-
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::ParseVector(v, "-1e-2\\2"));
-  ASSERT_EQ(2u, v.size());
-  ASSERT_DOUBLE_EQ(-0.01, v[0]);
-  ASSERT_DOUBLE_EQ(2.0, v[1]);
-
-  ASSERT_TRUE(OrthancStone::LinearAlgebra::ParseVector(v, "1.3671875\\1.3671875"));
-  ASSERT_EQ(2u, v.size());
-  ASSERT_DOUBLE_EQ(1.3671875, v[0]);
-  ASSERT_DOUBLE_EQ(1.3671875, v[1]); 
-}
-
-TEST(LoaderCache, NormalizeUuid)
-{
-  std::string ref("44ca5051-14ef-4d2f-8bd7-db20bfb61fbb");
-
-  {
-    std::string u("44ca5051-14ef-4d2f-8bd7-db20bfb61fbb");
-    OrthancStone::LoaderCache::NormalizeUuid(u);
-    ASSERT_EQ(ref, u);
-  }
-
-  // space left
-  {
-    std::string u("  44ca5051-14ef-4d2f-8bd7-db20bfb61fbb");
-    OrthancStone::LoaderCache::NormalizeUuid(u);
-    ASSERT_EQ(ref, u);
-  }
-
-  // space right
-  {
-    std::string u("44ca5051-14ef-4d2f-8bd7-db20bfb61fbb  ");
-    OrthancStone::LoaderCache::NormalizeUuid(u);
-    ASSERT_EQ(ref, u);
-  }
-
-  // space l & r 
-  {
-    std::string u("  44ca5051-14ef-4d2f-8bd7-db20bfb61fbb  ");
-    OrthancStone::LoaderCache::NormalizeUuid(u);
-    ASSERT_EQ(ref, u);
-  }
-
-  // space left + case 
-  {
-    std::string u("  44CA5051-14ef-4d2f-8bd7-dB20bfb61fbb");
-    OrthancStone::LoaderCache::NormalizeUuid(u);
-    ASSERT_EQ(ref, u);
-  }
-
-  // space right + case 
-  {
-    std::string u("44ca5051-14EF-4D2f-8bd7-db20bfb61fbB  ");
-    OrthancStone::LoaderCache::NormalizeUuid(u);
-    ASSERT_EQ(ref, u);
-  }
-
-  // space l & r + case
-  {
-    std::string u("  44cA5051-14Ef-4d2f-8bD7-db20bfb61fbb  ");
-    OrthancStone::LoaderCache::NormalizeUuid(u);
-    ASSERT_EQ(ref, u);
-  }
-
-  // no
-  {
-    std::string u("  44ca5051-14ef-4d2f-8bd7-  db20bfb61fbb");
-    OrthancStone::LoaderCache::NormalizeUuid(u);
-    ASSERT_NE(ref, u);
-  }
-
-  // no
-  {
-    std::string u("44ca5051-14ef-4d2f-8bd7-db20bfb61fb");
-    OrthancStone::LoaderCache::NormalizeUuid(u);
-    ASSERT_NE(ref, u);
-  }
-}
-
-
-int main(int argc, char **argv)
-{
-  Orthanc::Logging::Initialize();
-  Orthanc::Logging::EnableInfoLevel(true);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  int result = RUN_ALL_TESTS();
-
-  Orthanc::Logging::Finalize();
-
-  return result;
-}